From b532909585d6ead92c612c0acfaee86010e5acd3 Mon Sep 17 00:00:00 2001 From: Leo Deng Date: Mon, 5 Feb 2018 17:15:34 +0800 Subject: [PATCH 01/75] docs: Vue plugin usages with package manager and module loader (#1215) --- docs/integrations/vue.rst | 35 +++++++++++++++++++++++++++++++++-- 1 file changed, 33 insertions(+), 2 deletions(-) diff --git a/docs/integrations/vue.rst b/docs/integrations/vue.rst index 6d38ed850d7e..05a28f42fc00 100644 --- a/docs/integrations/vue.rst +++ b/docs/integrations/vue.rst @@ -27,8 +27,7 @@ Example: .. sourcecode:: html - + Note that this CDN build auto-initializes the Vue plugin. @@ -45,6 +44,17 @@ npm $ npm install raven-js --save +.. code-block:: html + + + + + Bower ````` @@ -53,6 +63,27 @@ Bower $ bower install raven-js --save +.. code-block:: html + + + + + + +These examples assume that Vue is exported globally as `window.Vue`. You can alternatively pass a reference to the `Vue` object directly as the second argument to `addPlugin`: + +.. code-block:: javascript + + Raven.addPlugin(Raven.Plugins.Vue, Vue); + +Module loaders +~~~~~~~~~~~~~~ + In your main application file, import and configure both Raven.js and the Raven.js Vue plugin as follows: .. code-block:: js From df8a9cd74ced001cca852882e40ac00e27154b4b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kamil=20Og=C3=B3rek?= Date: Thu, 8 Feb 2018 15:34:05 +0100 Subject: [PATCH 02/75] fix: create safeJoin util for console wrappers (#1222) --- src/console.js | 7 +++++-- src/utils.js | 25 ++++++++++++++++++++++++- test/utils.test.js | 32 ++++++++++++++++++++++++++++++++ 3 files changed, 61 insertions(+), 3 deletions(-) diff --git a/src/console.js b/src/console.js index 644ed1d804ea..939698c9c3a0 100644 --- a/src/console.js +++ b/src/console.js @@ -1,3 +1,5 @@ +var utils = require('./utils'); + var wrapMethod = function(console, level, callback) { var originalConsoleLevel = console[level]; var originalConsole = console; @@ -11,13 +13,14 @@ var wrapMethod = function(console, level, callback) { console[level] = function() { var args = [].slice.call(arguments); - var msg = '' + args.join(' '); + var msg = utils.safeJoin(args, ' '); var data = {level: sentryLevel, logger: 'console', extra: {arguments: args}}; if (level === 'assert') { if (args[0] === false) { // Default browsers message - msg = 'Assertion failed: ' + (args.slice(1).join(' ') || 'console.assert'); + msg = + 'Assertion failed: ' + (utils.safeJoin(args.slice(1), ' ') || 'console.assert'); data.extra.arguments = args.slice(1); callback && callback(msg, data); } diff --git a/src/utils.js b/src/utils.js index 882cc044b6ad..619068332bc7 100644 --- a/src/utils.js +++ b/src/utils.js @@ -397,6 +397,28 @@ function fill(obj, name, replacement, track) { } } +/** + * Join values in array + * @param input array of values to be joined together + * @param delimiter string to be placed in-between values + * @returns {string} + */ +function safeJoin(input, delimiter) { + if (!isArray(input)) return ''; + + var output = []; + + for (var i = 0; i < input.length; i++) { + try { + output.push(String(input[i])); + } catch (e) { + output.push('[value cannot be serialized]'); + } + } + + return output.join(delimiter); +} + module.exports = { isObject: isObject, isError: isError, @@ -423,5 +445,6 @@ module.exports = { isSameException: isSameException, isSameStacktrace: isSameStacktrace, parseUrl: parseUrl, - fill: fill + fill: fill, + safeJoin: safeJoin }; diff --git a/test/utils.test.js b/test/utils.test.js index 2cab75b730d1..fd63389efe78 100644 --- a/test/utils.test.js +++ b/test/utils.test.js @@ -23,6 +23,7 @@ var urlencode = utils.urlencode; var htmlTreeAsString = utils.htmlTreeAsString; var htmlElementAsString = utils.htmlElementAsString; var parseUrl = utils.parseUrl; +var safeJoin = utils.safeJoin; describe('utils', function() { describe('isUndefined', function() { @@ -421,4 +422,35 @@ describe('utils', function() { ); }); }); + + describe('safeJoin', function() { + it('should return empty string if not-array input provided', function() { + assert.equal(safeJoin('asd'), ''); + assert.equal(safeJoin(undefined), ''); + assert.equal(safeJoin({foo: 123}), ''); + }); + + it('should default to comma, as regular join() call', function() { + assert.equal(safeJoin(['a', 'b', 'c']), 'a,b,c'); + }); + + it('should stringify complex values, as regular String() call', function() { + assert.equal( + safeJoin([1, 'a', {foo: 42}, [1, 2, 3]], ' '), + '1 a [object Object] 1,2,3' + ); + }); + + it('should still work with unserializeable values', function() { + function Foo() {} + Foo.prototype.toString = function() { + throw Error('whoops!'); + }; + + assert.equal( + safeJoin([new Foo(), 'abc', new Foo(), 42], ' X '), + '[value cannot be serialized] X abc X [value cannot be serialized] X 42' + ); + }); + }); }); From 4180abe88dcf8f715c9a8b8fabef711bafcfbe50 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kamil=20Og=C3=B3rek?= Date: Thu, 8 Feb 2018 15:34:19 +0100 Subject: [PATCH 03/75] fix: Restore console methods after calling uninstall (#1221) --- Gruntfile.js | 9 ++++----- src/raven.js | 8 ++++++++ 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/Gruntfile.js b/Gruntfile.js index c2971b5cddbc..15378a4bfe54 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -80,14 +80,14 @@ module.exports = function(grunt) { }); // Transpile all test scripts - tests.forEach(function (test) { + tests.forEach(function(test) { var config = { input: { input: test }, output: { file: path.join('build', path.basename(test)), - name: path.basename(test, '.js'), + name: path.basename(test, '.js') } }; @@ -288,18 +288,17 @@ module.exports = function(grunt) { // Build tasks grunt.registerTask('_prep', ['gitinfo', 'version']); grunt.registerTask('build.test', ['_prep', 'rollup:core', 'rollup:tests']); - grunt.registerTask('build.core', ['_prep', 'rollup:core', 'sri:dist']); + grunt.registerTask('build.core', ['_prep', 'rollup:core']); grunt.registerTask('build.plugins', [ '_prep', 'generate-plugin-combinations', 'rollup:plugins', 'rollup:pluginCombinations', - 'sri:dist', 'sri:build' ]); grunt.registerTask('build', ['build.core', 'build.plugins', 'uglify']); - grunt.registerTask('dist', ['clean', 'build', 'copy:dist']); + grunt.registerTask('dist', ['clean', 'build', 'copy:dist', 'sri:dist']); // Test tasks grunt.registerTask('test:ci', ['config:ci', 'build:test']); diff --git a/src/raven.js b/src/raven.js index 918192ae389f..3a8f0c2c5d04 100644 --- a/src/raven.js +++ b/src/raven.js @@ -392,6 +392,7 @@ Raven.prototype = { this._unpatchFunctionToString(); this._restoreBuiltIns(); + this._restoreConsole(); Error.stackTraceLimit = this._originalErrorStackTraceLimit; this._isRavenInstalled = false; @@ -1383,6 +1384,13 @@ Raven.prototype = { } }, + _restoreConsole: function() { + // eslint-disable-next-line guard-for-in + for (var method in this._originalConsoleMethods) { + this._originalConsole[method] = this._originalConsoleMethods[method]; + } + }, + _drainPlugins: function() { var self = this; From 50beaa5fc41601d5e6076c8c5b77741a637aab67 Mon Sep 17 00:00:00 2001 From: Marcus Cobden Date: Mon, 5 Feb 2018 14:27:31 +0000 Subject: [PATCH 04/75] fix: Use correct trimHeadFrames value if capturing new trace --- src/raven.js | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/src/raven.js b/src/raven.js index 3a8f0c2c5d04..202bd807fdfe 100644 --- a/src/raven.js +++ b/src/raven.js @@ -408,6 +408,7 @@ Raven.prototype = { * @return {Raven} */ captureException: function(ex, options) { + options = objectMerge({trimHeadFrames: 0}, options ? options : {}); // Cases for sending ex as a message, rather than an exception var isNotError = !isError(ex); var isNotErrorEvent = !isErrorEvent(ex); @@ -416,13 +417,10 @@ Raven.prototype = { if ((isNotError && isNotErrorEvent) || isErrorEventWithoutError) { return this.captureMessage( ex, - objectMerge( - { - trimHeadFrames: 1, - stacktrace: true // if we fall back to captureMessage, default to attempting a new trace - }, - options - ) + objectMerge(options, { + stacktrace: true, // if we fall back to captureMessage, default to attempting a new trace + trimHeadFrames: options.trimHeadFrames + 1 + }) ); } From 1b6187bb22d754b28f171eeb427ff5f74392f502 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kamil=20Og=C3=B3rek?= Date: Thu, 8 Feb 2018 15:45:49 +0100 Subject: [PATCH 05/75] test: Uninstall restores console tests --- test/integration/frame.html | 7 ++++++- test/integration/test.js | 12 +++++++++++- 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/test/integration/frame.html b/test/integration/frame.html index df188753cbd4..d60afdac699e 100644 --- a/test/integration/frame.html +++ b/test/integration/frame.html @@ -99,7 +99,12 @@ requestAnimationFrame: requestAnimationFrame, xhrProtoOpen: XMLHttpRequest.prototype.open, headAddEventListener: document.head.addEventListener, // use 'cause body isn't closed yet - headRemoveEventListener: document.head.removeEventListener + headRemoveEventListener: document.head.removeEventListener, + consoleDebug: console.debug, + consoleInfo: console.info, + consoleWarn: console.warn, + consoleError: console.error, + consoleLog: console.log }; window.ravenData = []; diff --git a/test/integration/test.js b/test/integration/test.js index b40a4739d115..779e6c38265d 100644 --- a/test/integration/test.js +++ b/test/integration/test.js @@ -1283,7 +1283,12 @@ describe('integration', function() { originalBuiltIns.headAddEventListener === document.body.addEventListener, headRemoveEventListener: originalBuiltIns.headRemoveEventListener === - document.body.removeEventListener + document.body.removeEventListener, + consoleDebug: originalBuiltIns.consoleDebug === console.debug, + consoleInfo: originalBuiltIns.consoleInfo === console.info, + consoleWarn: originalBuiltIns.consoleWarn === console.warn, + consoleError: originalBuiltIns.consoleError === console.error, + consoleLog: originalBuiltIns.consoleLog === console.log }; }, function() { @@ -1294,6 +1299,11 @@ describe('integration', function() { assert.isTrue(isRestored.xhrProtoOpen); assert.isTrue(isRestored.headAddEventListener); assert.isTrue(isRestored.headRemoveEventListener); + assert.isTrue(isRestored.consoleDebug); + assert.isTrue(isRestored.consoleInfo); + assert.isTrue(isRestored.consoleWarn); + assert.isTrue(isRestored.consoleError); + assert.isTrue(isRestored.consoleLog); } ); }); From f8eec063c95f70d8978f895284946bd278748d97 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kamil=20Og=C3=B3rek?= Date: Thu, 8 Feb 2018 15:49:57 +0100 Subject: [PATCH 06/75] 3.22.2 --- CHANGELOG.md | 6 + bower.json | 2 +- .../raven.js | 3340 ++++++++++ .../raven.min.js | 3 + .../raven.min.js.map | 1 + dist/angular,console,ember,require/raven.js | 3297 ++++++++++ .../raven.min.js | 3 + .../raven.min.js.map | 1 + dist/angular,console,ember,vue/raven.js | 3317 ++++++++++ dist/angular,console,ember,vue/raven.min.js | 3 + .../raven.min.js.map | 1 + dist/angular,console,ember/raven.js | 3274 ++++++++++ dist/angular,console,ember/raven.min.js | 3 + dist/angular,console,ember/raven.min.js.map | 1 + dist/angular,console,require,vue/raven.js | 3302 ++++++++++ dist/angular,console,require,vue/raven.min.js | 3 + .../raven.min.js.map | 1 + dist/angular,console,require/raven.js | 3259 ++++++++++ dist/angular,console,require/raven.min.js | 3 + dist/angular,console,require/raven.min.js.map | 1 + dist/angular,console,vue/raven.js | 3279 ++++++++++ dist/angular,console,vue/raven.min.js | 3 + dist/angular,console,vue/raven.min.js.map | 1 + dist/angular,console/raven.js | 3236 ++++++++++ dist/angular,console/raven.min.js | 3 + dist/angular,console/raven.min.js.map | 1 + dist/angular,ember,require,vue/raven.js | 3306 ++++++++++ dist/angular,ember,require,vue/raven.min.js | 3 + .../raven.min.js.map | 1 + dist/angular,ember,require/raven.js | 3263 ++++++++++ dist/angular,ember,require/raven.min.js | 3 + dist/angular,ember,require/raven.min.js.map | 1 + dist/angular,ember,vue/raven.js | 3283 ++++++++++ dist/angular,ember,vue/raven.min.js | 3 + dist/angular,ember,vue/raven.min.js.map | 1 + dist/angular,ember/raven.js | 3240 ++++++++++ dist/angular,ember/raven.min.js | 3 + dist/angular,ember/raven.min.js.map | 1 + dist/angular,require,vue/raven.js | 3268 ++++++++++ dist/angular,require,vue/raven.min.js | 3 + dist/angular,require,vue/raven.min.js.map | 1 + dist/angular,require/raven.js | 3225 ++++++++++ dist/angular,require/raven.min.js | 3 + dist/angular,require/raven.min.js.map | 1 + dist/angular,vue/raven.js | 3245 ++++++++++ dist/angular,vue/raven.min.js | 3 + dist/angular,vue/raven.min.js.map | 1 + dist/angular/raven.js | 3202 ++++++++++ dist/angular/raven.min.js | 3 + dist/angular/raven.min.js.map | 1 + dist/console,ember,require,vue/raven.js | 3274 ++++++++++ dist/console,ember,require,vue/raven.min.js | 3 + .../raven.min.js.map | 1 + dist/console,ember,require/raven.js | 3231 ++++++++++ dist/console,ember,require/raven.min.js | 3 + dist/console,ember,require/raven.min.js.map | 1 + dist/console,ember,vue/raven.js | 3251 ++++++++++ dist/console,ember,vue/raven.min.js | 3 + dist/console,ember,vue/raven.min.js.map | 1 + dist/console,ember/raven.js | 3208 ++++++++++ dist/console,ember/raven.min.js | 3 + dist/console,ember/raven.min.js.map | 1 + dist/console,require,vue/raven.js | 3236 ++++++++++ dist/console,require,vue/raven.min.js | 3 + dist/console,require,vue/raven.min.js.map | 1 + dist/console,require/raven.js | 3193 ++++++++++ dist/console,require/raven.min.js | 3 + dist/console,require/raven.min.js.map | 1 + dist/console,vue/raven.js | 3213 ++++++++++ dist/console,vue/raven.min.js | 3 + dist/console,vue/raven.min.js.map | 1 + dist/console/raven.js | 3170 ++++++++++ dist/console/raven.min.js | 3 + dist/console/raven.min.js.map | 1 + dist/ember,require,vue/raven.js | 3240 ++++++++++ dist/ember,require,vue/raven.min.js | 3 + dist/ember,require,vue/raven.min.js.map | 1 + dist/ember,require/raven.js | 3197 ++++++++++ dist/ember,require/raven.min.js | 3 + dist/ember,require/raven.min.js.map | 1 + dist/ember,vue/raven.js | 3217 ++++++++++ dist/ember,vue/raven.min.js | 3 + dist/ember,vue/raven.min.js.map | 1 + dist/ember/raven.js | 3174 ++++++++++ dist/ember/raven.min.js | 3 + dist/ember/raven.min.js.map | 1 + dist/plugins/angular.js | 375 +- dist/plugins/angular.min.js | 4 +- dist/plugins/angular.min.js.map | 2 +- dist/plugins/console.js | 568 +- dist/plugins/console.min.js | 4 +- dist/plugins/console.min.js.map | 2 +- dist/plugins/ember.js | 35 +- dist/plugins/ember.min.js | 4 +- dist/plugins/ember.min.js.map | 2 +- dist/plugins/require.js | 32 +- dist/plugins/require.min.js | 4 +- dist/plugins/require.min.js.map | 2 +- dist/plugins/vue.js | 31 +- dist/plugins/vue.min.js | 4 +- dist/plugins/vue.min.js.map | 2 +- dist/raven.js | 5382 ++++++++--------- dist/raven.min.js | 4 +- dist/raven.min.js.map | 2 +- dist/require,vue/raven.js | 3202 ++++++++++ dist/require,vue/raven.min.js | 3 + dist/require,vue/raven.min.js.map | 1 + dist/require/raven.js | 3159 ++++++++++ dist/require/raven.min.js | 3 + dist/require/raven.min.js.map | 1 + dist/sri.json | 12 +- dist/vue/raven.js | 3179 ++++++++++ dist/vue/raven.min.js | 3 + dist/vue/raven.min.js.map | 1 + docs/sentry-doc-config.json | 2 +- package.json | 2 +- src/raven.js | 2 +- test/raven.test.js | 4 +- 118 files changed, 104067 insertions(+), 3026 deletions(-) create mode 100644 dist/angular,console,ember,require,vue/raven.js create mode 100644 dist/angular,console,ember,require,vue/raven.min.js create mode 100644 dist/angular,console,ember,require,vue/raven.min.js.map create mode 100644 dist/angular,console,ember,require/raven.js create mode 100644 dist/angular,console,ember,require/raven.min.js create mode 100644 dist/angular,console,ember,require/raven.min.js.map create mode 100644 dist/angular,console,ember,vue/raven.js create mode 100644 dist/angular,console,ember,vue/raven.min.js create mode 100644 dist/angular,console,ember,vue/raven.min.js.map create mode 100644 dist/angular,console,ember/raven.js create mode 100644 dist/angular,console,ember/raven.min.js create mode 100644 dist/angular,console,ember/raven.min.js.map create mode 100644 dist/angular,console,require,vue/raven.js create mode 100644 dist/angular,console,require,vue/raven.min.js create mode 100644 dist/angular,console,require,vue/raven.min.js.map create mode 100644 dist/angular,console,require/raven.js create mode 100644 dist/angular,console,require/raven.min.js create mode 100644 dist/angular,console,require/raven.min.js.map create mode 100644 dist/angular,console,vue/raven.js create mode 100644 dist/angular,console,vue/raven.min.js create mode 100644 dist/angular,console,vue/raven.min.js.map create mode 100644 dist/angular,console/raven.js create mode 100644 dist/angular,console/raven.min.js create mode 100644 dist/angular,console/raven.min.js.map create mode 100644 dist/angular,ember,require,vue/raven.js create mode 100644 dist/angular,ember,require,vue/raven.min.js create mode 100644 dist/angular,ember,require,vue/raven.min.js.map create mode 100644 dist/angular,ember,require/raven.js create mode 100644 dist/angular,ember,require/raven.min.js create mode 100644 dist/angular,ember,require/raven.min.js.map create mode 100644 dist/angular,ember,vue/raven.js create mode 100644 dist/angular,ember,vue/raven.min.js create mode 100644 dist/angular,ember,vue/raven.min.js.map create mode 100644 dist/angular,ember/raven.js create mode 100644 dist/angular,ember/raven.min.js create mode 100644 dist/angular,ember/raven.min.js.map create mode 100644 dist/angular,require,vue/raven.js create mode 100644 dist/angular,require,vue/raven.min.js create mode 100644 dist/angular,require,vue/raven.min.js.map create mode 100644 dist/angular,require/raven.js create mode 100644 dist/angular,require/raven.min.js create mode 100644 dist/angular,require/raven.min.js.map create mode 100644 dist/angular,vue/raven.js create mode 100644 dist/angular,vue/raven.min.js create mode 100644 dist/angular,vue/raven.min.js.map create mode 100644 dist/angular/raven.js create mode 100644 dist/angular/raven.min.js create mode 100644 dist/angular/raven.min.js.map create mode 100644 dist/console,ember,require,vue/raven.js create mode 100644 dist/console,ember,require,vue/raven.min.js create mode 100644 dist/console,ember,require,vue/raven.min.js.map create mode 100644 dist/console,ember,require/raven.js create mode 100644 dist/console,ember,require/raven.min.js create mode 100644 dist/console,ember,require/raven.min.js.map create mode 100644 dist/console,ember,vue/raven.js create mode 100644 dist/console,ember,vue/raven.min.js create mode 100644 dist/console,ember,vue/raven.min.js.map create mode 100644 dist/console,ember/raven.js create mode 100644 dist/console,ember/raven.min.js create mode 100644 dist/console,ember/raven.min.js.map create mode 100644 dist/console,require,vue/raven.js create mode 100644 dist/console,require,vue/raven.min.js create mode 100644 dist/console,require,vue/raven.min.js.map create mode 100644 dist/console,require/raven.js create mode 100644 dist/console,require/raven.min.js create mode 100644 dist/console,require/raven.min.js.map create mode 100644 dist/console,vue/raven.js create mode 100644 dist/console,vue/raven.min.js create mode 100644 dist/console,vue/raven.min.js.map create mode 100644 dist/console/raven.js create mode 100644 dist/console/raven.min.js create mode 100644 dist/console/raven.min.js.map create mode 100644 dist/ember,require,vue/raven.js create mode 100644 dist/ember,require,vue/raven.min.js create mode 100644 dist/ember,require,vue/raven.min.js.map create mode 100644 dist/ember,require/raven.js create mode 100644 dist/ember,require/raven.min.js create mode 100644 dist/ember,require/raven.min.js.map create mode 100644 dist/ember,vue/raven.js create mode 100644 dist/ember,vue/raven.min.js create mode 100644 dist/ember,vue/raven.min.js.map create mode 100644 dist/ember/raven.js create mode 100644 dist/ember/raven.min.js create mode 100644 dist/ember/raven.min.js.map create mode 100644 dist/require,vue/raven.js create mode 100644 dist/require,vue/raven.min.js create mode 100644 dist/require,vue/raven.min.js.map create mode 100644 dist/require/raven.js create mode 100644 dist/require/raven.min.js create mode 100644 dist/require/raven.min.js.map create mode 100644 dist/vue/raven.js create mode 100644 dist/vue/raven.min.js create mode 100644 dist/vue/raven.min.js.map diff --git a/CHANGELOG.md b/CHANGELOG.md index 59432a2438ae..ac58814b5d6a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,11 @@ # Changelog +## 3.22.2 + +* BUGFIX: Use correct trimHeadFrames value if capturing new trace (#1216) +* BUGFIX: Restore console methods after calling uninstall (#1221) +* BUGFIX: Create safeJoin util for console wrappers (#1222) + ## 3.22.1 * NEW: Check for `SENTRY_RELEASE` during config phase (#1194) diff --git a/bower.json b/bower.json index d543967fe292..1696b60b533e 100644 --- a/bower.json +++ b/bower.json @@ -1,6 +1,6 @@ { "name": "raven-js", - "version": "3.22.1", + "version": "3.22.2", "dependencies": {}, "main": "dist/raven.js", "ignore": [ diff --git a/dist/angular,console,ember,require,vue/raven.js b/dist/angular,console,ember,require,vue/raven.js new file mode 100644 index 000000000000..70c0f7a1baab --- /dev/null +++ b/dist/angular,console,ember,require,vue/raven.js @@ -0,0 +1,3340 @@ +/*! Raven.js 3.22.2 (1b6187b) | github.com/getsentry/raven-js */ + +/* + * Includes TraceKit + * https://github.com/getsentry/TraceKit + * + * Copyright 2018 Matt Robenolt and other contributors + * Released under the BSD license + * https://github.com/getsentry/raven-js/blob/master/LICENSE + * + */ + +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : + typeof define === 'function' && define.amd ? define(factory) : + (global.Raven = factory()); +}(this, (function () { 'use strict'; + +var commonjsGlobal = typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; + +function commonjsRequire () { + throw new Error('Dynamic requires are not currently supported by rollup-plugin-commonjs'); +} + + + +function createCommonjsModule(fn, module) { + return module = { exports: {} }, fn(module, module.exports), module.exports; +} + +function _typeof(obj) { + if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { + _typeof = function (obj) { + return typeof obj; + }; + } else { + _typeof = function (obj) { + return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; + }; + } + + return _typeof(obj); +} + +var _sPO = Object.setPrototypeOf || function _sPO(o, p) { + o.__proto__ = p; + return o; +}; + +var _construct = typeof Reflect === "object" && Reflect.construct || function _construct(Parent, args, Class) { + var Constructor, + a = [null]; + a.push.apply(a, args); + Constructor = Parent.bind.apply(Parent, a); + return _sPO(new Constructor(), Class.prototype); +}; + +var _window$3 = typeof window !== 'undefined' ? window : typeof commonjsGlobal !== 'undefined' ? commonjsGlobal : typeof self !== 'undefined' ? self : {}; + +function isObject$1(what) { + return _typeof(what) === 'object' && what !== null; +} // Yanked from https://git.io/vS8DV re-used under CC0 +// with some tiny modifications + + +function isError$1(value) { + switch ({}.toString.call(value)) { + case '[object Error]': + return true; + + case '[object Exception]': + return true; + + case '[object DOMException]': + return true; + + default: + return value instanceof Error; + } +} + +function isErrorEvent$1(value) { + return supportsErrorEvent() && {}.toString.call(value) === '[object ErrorEvent]'; +} + +function isUndefined$1(what) { + return what === void 0; +} + +function isFunction$1(what) { + return typeof what === 'function'; +} + +function isPlainObject(what) { + return Object.prototype.toString.call(what) === '[object Object]'; +} + +function isString$1(what) { + return Object.prototype.toString.call(what) === '[object String]'; +} + +function isArray$1(what) { + return Object.prototype.toString.call(what) === '[object Array]'; +} + +function isEmptyObject$1(what) { + if (!isPlainObject(what)) return false; + + for (var _ in what) { + if (what.hasOwnProperty(_)) { + return false; + } + } + + return true; +} + +function supportsErrorEvent() { + try { + new ErrorEvent(''); // eslint-disable-line no-new + + return true; + } catch (e) { + return false; + } +} + +function supportsFetch$1() { + if (!('fetch' in _window$3)) return false; + + try { + new Headers(); // eslint-disable-line no-new + + new Request(''); // eslint-disable-line no-new + + new Response(); // eslint-disable-line no-new + + return true; + } catch (e) { + return false; + } +} + +function wrappedCallback(callback) { + function dataCallback(data, original) { + var normalizedData = callback(data) || data; + + if (original) { + return original(normalizedData) || normalizedData; + } + + return normalizedData; + } + + return dataCallback; +} + +function each$1(obj, callback) { + var i, j; + + if (isUndefined$1(obj.length)) { + for (i in obj) { + if (hasKey$1(obj, i)) { + callback.call(null, i, obj[i]); + } + } + } else { + j = obj.length; + + if (j) { + for (i = 0; i < j; i++) { + callback.call(null, i, obj[i]); + } + } + } +} + +function objectMerge$1(obj1, obj2) { + if (!obj2) { + return obj1; + } + + each$1(obj2, function (key, value) { + obj1[key] = value; + }); + return obj1; +} +/** + * This function is only used for react-native. + * react-native freezes object that have already been sent over the + * js bridge. We need this function in order to check if the object is frozen. + * So it's ok that objectFrozen returns false if Object.isFrozen is not + * supported because it's not relevant for other "platforms". See related issue: + * https://github.com/getsentry/react-native-sentry/issues/57 + */ + + +function objectFrozen$1(obj) { + if (!Object.isFrozen) { + return false; + } + + return Object.isFrozen(obj); +} + +function truncate$1(str, max) { + return !max || str.length <= max ? str : str.substr(0, max) + "\u2026"; +} +/** + * hasKey, a better form of hasOwnProperty + * Example: hasKey(MainHostObject, property) === true/false + * + * @param {Object} host object to check property + * @param {string} key to check + */ + + +function hasKey$1(object, key) { + return Object.prototype.hasOwnProperty.call(object, key); +} + +function joinRegExp$1(patterns) { + // Combine an array of regular expressions and strings into one large regexp + // Be mad. + var sources = [], + i = 0, + len = patterns.length, + pattern; + + for (; i < len; i++) { + pattern = patterns[i]; + + if (isString$1(pattern)) { + // If it's a string, we need to escape it + // Taken from: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions + sources.push(pattern.replace(/([.*+?^=!:${}()|\[\]\/\\])/g, '\\$1')); + } else if (pattern && pattern.source) { + // If it's a regexp already, we want to extract the source + sources.push(pattern.source); + } // Intentionally skip other cases + + } + + return new RegExp(sources.join('|'), 'i'); +} + +function urlencode$1(o) { + var pairs = []; + each$1(o, function (key, value) { + pairs.push(encodeURIComponent(key) + '=' + encodeURIComponent(value)); + }); + return pairs.join('&'); +} // borrowed from https://tools.ietf.org/html/rfc3986#appendix-B +// intentionally using regex and not href parsing trick because React Native and other +// environments where DOM might not be available + + +function parseUrl$1(url) { + if (typeof url !== 'string') return {}; + var match = url.match(/^(([^:\/?#]+):)?(\/\/([^\/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?$/); // coerce to undefined values to empty string so we don't get 'undefined' + + var query = match[6] || ''; + var fragment = match[8] || ''; + return { + protocol: match[2], + host: match[4], + path: match[5], + relative: match[5] + query + fragment // everything minus origin + + }; +} + +function uuid4$1() { + var crypto = _window$3.crypto || _window$3.msCrypto; + + if (!isUndefined$1(crypto) && crypto.getRandomValues) { + // Use window.crypto API if available + // eslint-disable-next-line no-undef + var arr = new Uint16Array(8); + crypto.getRandomValues(arr); // set 4 in byte 7 + + arr[3] = arr[3] & 0xfff | 0x4000; // set 2 most significant bits of byte 9 to '10' + + arr[4] = arr[4] & 0x3fff | 0x8000; + + var pad = function pad(num) { + var v = num.toString(16); + + while (v.length < 4) { + v = '0' + v; + } + + return v; + }; + + return pad(arr[0]) + pad(arr[1]) + pad(arr[2]) + pad(arr[3]) + pad(arr[4]) + pad(arr[5]) + pad(arr[6]) + pad(arr[7]); + } else { + // http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/2117523#2117523 + return 'xxxxxxxxxxxx4xxxyxxxxxxxxxxxxxxx'.replace(/[xy]/g, function (c) { + var r = Math.random() * 16 | 0, + v = c === 'x' ? r : r & 0x3 | 0x8; + return v.toString(16); + }); + } +} +/** + * Given a child DOM element, returns a query-selector statement describing that + * and its ancestors + * e.g. [HTMLElement] => body > div > input#foo.btn[name=baz] + * @param elem + * @returns {string} + */ + + +function htmlTreeAsString$1(elem) { + /* eslint no-extra-parens:0*/ + var MAX_TRAVERSE_HEIGHT = 5, + MAX_OUTPUT_LEN = 80, + out = [], + height = 0, + len = 0, + separator = ' > ', + sepLength = separator.length, + nextStr; + + while (elem && height++ < MAX_TRAVERSE_HEIGHT) { + nextStr = htmlElementAsString(elem); // bail out if + // - nextStr is the 'html' element + // - the length of the string that would be created exceeds MAX_OUTPUT_LEN + // (ignore this limit if we are on the first iteration) + + if (nextStr === 'html' || height > 1 && len + out.length * sepLength + nextStr.length >= MAX_OUTPUT_LEN) { + break; + } + + out.push(nextStr); + len += nextStr.length; + elem = elem.parentNode; + } + + return out.reverse().join(separator); +} +/** + * Returns a simple, query-selector representation of a DOM element + * e.g. [HTMLElement] => input#foo.btn[name=baz] + * @param HTMLElement + * @returns {string} + */ + + +function htmlElementAsString(elem) { + var out = [], + className, + classes, + key, + attr, + i; + + if (!elem || !elem.tagName) { + return ''; + } + + out.push(elem.tagName.toLowerCase()); + + if (elem.id) { + out.push('#' + elem.id); + } + + className = elem.className; + + if (className && isString$1(className)) { + classes = className.split(/\s+/); + + for (i = 0; i < classes.length; i++) { + out.push('.' + classes[i]); + } + } + + var attrWhitelist = ['type', 'name', 'title', 'alt']; + + for (i = 0; i < attrWhitelist.length; i++) { + key = attrWhitelist[i]; + attr = elem.getAttribute(key); + + if (attr) { + out.push('[' + key + '="' + attr + '"]'); + } + } + + return out.join(''); +} +/** + * Returns true if either a OR b is truthy, but not both + */ + + +function isOnlyOneTruthy(a, b) { + return !!(!!a ^ !!b); +} +/** + * Returns true if both parameters are undefined + */ + + +function isBothUndefined(a, b) { + return isUndefined$1(a) && isUndefined$1(b); +} +/** + * Returns true if the two input exception interfaces have the same content + */ + + +function isSameException$1(ex1, ex2) { + if (isOnlyOneTruthy(ex1, ex2)) return false; + ex1 = ex1.values[0]; + ex2 = ex2.values[0]; + if (ex1.type !== ex2.type || ex1.value !== ex2.value) return false; // in case both stacktraces are undefined, we can't decide so default to false + + if (isBothUndefined(ex1.stacktrace, ex2.stacktrace)) return false; + return isSameStacktrace$1(ex1.stacktrace, ex2.stacktrace); +} +/** + * Returns true if the two input stack trace interfaces have the same content + */ + + +function isSameStacktrace$1(stack1, stack2) { + if (isOnlyOneTruthy(stack1, stack2)) return false; + var frames1 = stack1.frames; + var frames2 = stack2.frames; // Exit early if frame count differs + + if (frames1.length !== frames2.length) return false; // Iterate through every frame; bail out if anything differs + + var a, b; + + for (var i = 0; i < frames1.length; i++) { + a = frames1[i]; + b = frames2[i]; + if (a.filename !== b.filename || a.lineno !== b.lineno || a.colno !== b.colno || a['function'] !== b['function']) return false; + } + + return true; +} +/** + * Polyfill a method + * @param obj object e.g. `document` + * @param name method name present on object e.g. `addEventListener` + * @param replacement replacement function + * @param track {optional} record instrumentation to an array + */ + + +function fill$1(obj, name, replacement, track) { + var orig = obj[name]; + obj[name] = replacement(orig); + obj[name].__raven__ = true; + obj[name].__orig__ = orig; + + if (track) { + track.push([obj, name, orig]); + } +} +/** + * Join values in array + * @param input array of values to be joined together + * @param delimiter string to be placed in-between values + * @returns {string} + */ + + +function safeJoin(input, delimiter) { + if (!isArray$1(input)) return ''; + var output = []; + + for (var i = 0; i < input.length; i++) { + try { + output.push(String(input[i])); + } catch (e) { + output.push('[value cannot be serialized]'); + } + } + + return output.join(delimiter); +} + +var utils = { + isObject: isObject$1, + isError: isError$1, + isErrorEvent: isErrorEvent$1, + isUndefined: isUndefined$1, + isFunction: isFunction$1, + isPlainObject: isPlainObject, + isString: isString$1, + isArray: isArray$1, + isEmptyObject: isEmptyObject$1, + supportsErrorEvent: supportsErrorEvent, + supportsFetch: supportsFetch$1, + wrappedCallback: wrappedCallback, + each: each$1, + objectMerge: objectMerge$1, + truncate: truncate$1, + objectFrozen: objectFrozen$1, + hasKey: hasKey$1, + joinRegExp: joinRegExp$1, + urlencode: urlencode$1, + uuid4: uuid4$1, + htmlTreeAsString: htmlTreeAsString$1, + htmlElementAsString: htmlElementAsString, + isSameException: isSameException$1, + isSameStacktrace: isSameStacktrace$1, + parseUrl: parseUrl$1, + fill: fill$1, + safeJoin: safeJoin +}; + +/* + TraceKit - Cross brower stack traces + + This was originally forked from github.com/occ/TraceKit, but has since been + largely re-written and is now maintained as part of raven-js. Tests for + this are in test/vendor. + + MIT license +*/ + +var TraceKit = { + collectWindowErrors: true, + debug: false +}; // This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) + +var _window$2 = typeof window !== 'undefined' ? window : typeof commonjsGlobal !== 'undefined' ? commonjsGlobal : typeof self !== 'undefined' ? self : {}; // global reference to slice + + +var _slice = [].slice; +var UNKNOWN_FUNCTION = '?'; // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error#Error_types + +var ERROR_TYPES_RE = /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/; + +function getLocationHref() { + if (typeof document === 'undefined' || document.location == null) return ''; + return document.location.href; +} +/** + * TraceKit.report: cross-browser processing of unhandled exceptions + * + * Syntax: + * TraceKit.report.subscribe(function(stackInfo) { ... }) + * TraceKit.report.unsubscribe(function(stackInfo) { ... }) + * TraceKit.report(exception) + * try { ...code... } catch(ex) { TraceKit.report(ex); } + * + * Supports: + * - Firefox: full stack trace with line numbers, plus column number + * on top frame; column number is not guaranteed + * - Opera: full stack trace with line and column numbers + * - Chrome: full stack trace with line and column numbers + * - Safari: line and column number for the top frame only; some frames + * may be missing, and column number is not guaranteed + * - IE: line and column number for the top frame only; some frames + * may be missing, and column number is not guaranteed + * + * In theory, TraceKit should work on all of the following versions: + * - IE5.5+ (only 8.0 tested) + * - Firefox 0.9+ (only 3.5+ tested) + * - Opera 7+ (only 10.50 tested; versions 9 and earlier may require + * Exceptions Have Stacktrace to be enabled in opera:config) + * - Safari 3+ (only 4+ tested) + * - Chrome 1+ (only 5+ tested) + * - Konqueror 3.5+ (untested) + * + * Requires TraceKit.computeStackTrace. + * + * Tries to catch all unhandled exceptions and report them to the + * subscribed handlers. Please note that TraceKit.report will rethrow the + * exception. This is REQUIRED in order to get a useful stack trace in IE. + * If the exception does not reach the top of the browser, you will only + * get a stack trace from the point where TraceKit.report was called. + * + * Handlers receive a stackInfo object as described in the + * TraceKit.computeStackTrace docs. + */ + + +TraceKit.report = function reportModuleWrapper() { + var handlers = [], + lastArgs = null, + lastException = null, + lastExceptionStack = null; + /** + * Add a crash handler. + * @param {Function} handler + */ + + function subscribe(handler) { + installGlobalHandler(); + handlers.push(handler); + } + /** + * Remove a crash handler. + * @param {Function} handler + */ + + + function unsubscribe(handler) { + for (var i = handlers.length - 1; i >= 0; --i) { + if (handlers[i] === handler) { + handlers.splice(i, 1); + } + } + } + /** + * Remove all crash handlers. + */ + + + function unsubscribeAll() { + uninstallGlobalHandler(); + handlers = []; + } + /** + * Dispatch stack information to all handlers. + * @param {Object.} stack + */ + + + function notifyHandlers(stack, isWindowError) { + var exception = null; + + if (isWindowError && !TraceKit.collectWindowErrors) { + return; + } + + for (var i in handlers) { + if (handlers.hasOwnProperty(i)) { + try { + handlers[i].apply(null, [stack].concat(_slice.call(arguments, 2))); + } catch (inner) { + exception = inner; + } + } + } + + if (exception) { + throw exception; + } + } + + var _oldOnerrorHandler, _onErrorHandlerInstalled; + /** + * Ensures all global unhandled exceptions are recorded. + * Supported by Gecko and IE. + * @param {string} msg Error message. + * @param {string} url URL of script that generated the exception. + * @param {(number|string)} lineNo The line number at which the error + * occurred. + * @param {?(number|string)} colNo The column number at which the error + * occurred. + * @param {?Error} ex The actual Error object. + */ + + + function traceKitWindowOnError(msg, url, lineNo, colNo, ex) { + var stack = null; // If 'ex' is ErrorEvent, get real Error from inside + + var exception = utils.isErrorEvent(ex) ? ex.error : ex; // If 'msg' is ErrorEvent, get real message from inside + + var message = utils.isErrorEvent(msg) ? msg.message : msg; + + if (lastExceptionStack) { + TraceKit.computeStackTrace.augmentStackTraceWithInitialElement(lastExceptionStack, url, lineNo, message); + processLastException(); + } else if (exception && utils.isError(exception)) { + // non-string `exception` arg; attempt to extract stack trace + // New chrome and blink send along a real error object + // Let's just report that like a normal error. + // See: https://mikewest.org/2013/08/debugging-runtime-errors-with-window-onerror + stack = TraceKit.computeStackTrace(exception); + notifyHandlers(stack, true); + } else { + var location = { + url: url, + line: lineNo, + column: colNo + }; + var name = undefined; + var groups; + + if ({}.toString.call(message) === '[object String]') { + var groups = message.match(ERROR_TYPES_RE); + + if (groups) { + name = groups[1]; + message = groups[2]; + } + } + + location.func = UNKNOWN_FUNCTION; + stack = { + name: name, + message: message, + url: getLocationHref(), + stack: [location] + }; + notifyHandlers(stack, true); + } + + if (_oldOnerrorHandler) { + return _oldOnerrorHandler.apply(this, arguments); + } + + return false; + } + + function installGlobalHandler() { + if (_onErrorHandlerInstalled) { + return; + } + + _oldOnerrorHandler = _window$2.onerror; + _window$2.onerror = traceKitWindowOnError; + _onErrorHandlerInstalled = true; + } + + function uninstallGlobalHandler() { + if (!_onErrorHandlerInstalled) { + return; + } + + _window$2.onerror = _oldOnerrorHandler; + _onErrorHandlerInstalled = false; + _oldOnerrorHandler = undefined; + } + + function processLastException() { + var _lastExceptionStack = lastExceptionStack, + _lastArgs = lastArgs; + lastArgs = null; + lastExceptionStack = null; + lastException = null; + notifyHandlers.apply(null, [_lastExceptionStack, false].concat(_lastArgs)); + } + /** + * Reports an unhandled Error to TraceKit. + * @param {Error} ex + * @param {?boolean} rethrow If false, do not re-throw the exception. + * Only used for window.onerror to not cause an infinite loop of + * rethrowing. + */ + + + function report(ex, rethrow) { + var args = _slice.call(arguments, 1); + + if (lastExceptionStack) { + if (lastException === ex) { + return; // already caught by an inner catch block, ignore + } else { + processLastException(); + } + } + + var stack = TraceKit.computeStackTrace(ex); + lastExceptionStack = stack; + lastException = ex; + lastArgs = args; // If the stack trace is incomplete, wait for 2 seconds for + // slow slow IE to see if onerror occurs or not before reporting + // this exception; otherwise, we will end up with an incomplete + // stack trace + + setTimeout(function () { + if (lastException === ex) { + processLastException(); + } + }, stack.incomplete ? 2000 : 0); + + if (rethrow !== false) { + throw ex; // re-throw to propagate to the top level (and cause window.onerror) + } + } + + report.subscribe = subscribe; + report.unsubscribe = unsubscribe; + report.uninstall = unsubscribeAll; + return report; +}(); +/** + * TraceKit.computeStackTrace: cross-browser stack traces in JavaScript + * + * Syntax: + * s = TraceKit.computeStackTrace(exception) // consider using TraceKit.report instead (see below) + * Returns: + * s.name - exception name + * s.message - exception message + * s.stack[i].url - JavaScript or HTML file URL + * s.stack[i].func - function name, or empty for anonymous functions (if guessing did not work) + * s.stack[i].args - arguments passed to the function, if known + * s.stack[i].line - line number, if known + * s.stack[i].column - column number, if known + * + * Supports: + * - Firefox: full stack trace with line numbers and unreliable column + * number on top frame + * - Opera 10: full stack trace with line and column numbers + * - Opera 9-: full stack trace with line numbers + * - Chrome: full stack trace with line and column numbers + * - Safari: line and column number for the topmost stacktrace element + * only + * - IE: no line numbers whatsoever + * + * Tries to guess names of anonymous functions by looking for assignments + * in the source code. In IE and Safari, we have to guess source file names + * by searching for function bodies inside all page scripts. This will not + * work for scripts that are loaded cross-domain. + * Here be dragons: some function names may be guessed incorrectly, and + * duplicate functions may be mismatched. + * + * TraceKit.computeStackTrace should only be used for tracing purposes. + * Logging of unhandled exceptions should be done with TraceKit.report, + * which builds on top of TraceKit.computeStackTrace and provides better + * IE support by utilizing the window.onerror event to retrieve information + * about the top of the stack. + * + * Note: In IE and Safari, no stack trace is recorded on the Error object, + * so computeStackTrace instead walks its *own* chain of callers. + * This means that: + * * in Safari, some methods may be missing from the stack trace; + * * in IE, the topmost function in the stack trace will always be the + * caller of computeStackTrace. + * + * This is okay for tracing (because you are likely to be calling + * computeStackTrace from the function you want to be the topmost element + * of the stack trace anyway), but not okay for logging unhandled + * exceptions (because your catch block will likely be far away from the + * inner function that actually caused the exception). + * + */ + + +TraceKit.computeStackTrace = function computeStackTraceWrapper() { + // Contents of Exception in various browsers. + // + // SAFARI: + // ex.message = Can't find variable: qq + // ex.line = 59 + // ex.sourceId = 580238192 + // ex.sourceURL = http://... + // ex.expressionBeginOffset = 96 + // ex.expressionCaretOffset = 98 + // ex.expressionEndOffset = 98 + // ex.name = ReferenceError + // + // FIREFOX: + // ex.message = qq is not defined + // ex.fileName = http://... + // ex.lineNumber = 59 + // ex.columnNumber = 69 + // ex.stack = ...stack trace... (see the example below) + // ex.name = ReferenceError + // + // CHROME: + // ex.message = qq is not defined + // ex.name = ReferenceError + // ex.type = not_defined + // ex.arguments = ['aa'] + // ex.stack = ...stack trace... + // + // INTERNET EXPLORER: + // ex.message = ... + // ex.name = ReferenceError + // + // OPERA: + // ex.message = ...message... (see the example below) + // ex.name = ReferenceError + // ex.opera#sourceloc = 11 (pretty much useless, duplicates the info in ex.message) + // ex.stacktrace = n/a; see 'opera:config#UserPrefs|Exceptions Have Stacktrace' + + /** + * Computes stack trace information from the stack property. + * Chrome and Gecko use this property. + * @param {Error} ex + * @return {?Object.} Stack trace information. + */ + function computeStackTraceFromStackProp(ex) { + if (typeof ex.stack === 'undefined' || !ex.stack) return; + var chrome = /^\s*at (.*?) ?\(((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i, + gecko = /^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|\[native).*?|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i, + winjs = /^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i, + // Used to additionally parse URL/line/column from eval frames + geckoEval = /(\S+) line (\d+)(?: > eval line \d+)* > eval/i, + chromeEval = /\((\S*)(?::(\d+))(?::(\d+))\)/, + lines = ex.stack.split('\n'), + stack = [], + submatch, + parts, + element, + reference = /^(.*) is undefined$/.exec(ex.message); + + for (var i = 0, j = lines.length; i < j; ++i) { + if (parts = chrome.exec(lines[i])) { + var isNative = parts[2] && parts[2].indexOf('native') === 0; // start of line + + var isEval = parts[2] && parts[2].indexOf('eval') === 0; // start of line + + if (isEval && (submatch = chromeEval.exec(parts[2]))) { + // throw out eval line/column and use top-most line/column number + parts[2] = submatch[1]; // url + + parts[3] = submatch[2]; // line + + parts[4] = submatch[3]; // column + } + + element = { + url: !isNative ? parts[2] : null, + func: parts[1] || UNKNOWN_FUNCTION, + args: isNative ? [parts[2]] : [], + line: parts[3] ? +parts[3] : null, + column: parts[4] ? +parts[4] : null + }; + } else if (parts = winjs.exec(lines[i])) { + element = { + url: parts[2], + func: parts[1] || UNKNOWN_FUNCTION, + args: [], + line: +parts[3], + column: parts[4] ? +parts[4] : null + }; + } else if (parts = gecko.exec(lines[i])) { + var isEval = parts[3] && parts[3].indexOf(' > eval') > -1; + + if (isEval && (submatch = geckoEval.exec(parts[3]))) { + // throw out eval line/column and use top-most line number + parts[3] = submatch[1]; + parts[4] = submatch[2]; + parts[5] = null; // no column when eval + } else if (i === 0 && !parts[5] && typeof ex.columnNumber !== 'undefined') { + // FireFox uses this awesome columnNumber property for its top frame + // Also note, Firefox's column number is 0-based and everything else expects 1-based, + // so adding 1 + // NOTE: this hack doesn't work if top-most frame is eval + stack[0].column = ex.columnNumber + 1; + } + + element = { + url: parts[3], + func: parts[1] || UNKNOWN_FUNCTION, + args: parts[2] ? parts[2].split(',') : [], + line: parts[4] ? +parts[4] : null, + column: parts[5] ? +parts[5] : null + }; + } else { + continue; + } + + if (!element.func && element.line) { + element.func = UNKNOWN_FUNCTION; + } + + stack.push(element); + } + + if (!stack.length) { + return null; + } + + return { + name: ex.name, + message: ex.message, + url: getLocationHref(), + stack: stack + }; + } + /** + * Adds information about the first frame to incomplete stack traces. + * Safari and IE require this to get complete data on the first frame. + * @param {Object.} stackInfo Stack trace information from + * one of the compute* methods. + * @param {string} url The URL of the script that caused an error. + * @param {(number|string)} lineNo The line number of the script that + * caused an error. + * @param {string=} message The error generated by the browser, which + * hopefully contains the name of the object that caused the error. + * @return {boolean} Whether or not the stack information was + * augmented. + */ + + + function augmentStackTraceWithInitialElement(stackInfo, url, lineNo, message) { + var initial = { + url: url, + line: lineNo + }; + + if (initial.url && initial.line) { + stackInfo.incomplete = false; + + if (!initial.func) { + initial.func = UNKNOWN_FUNCTION; + } + + if (stackInfo.stack.length > 0) { + if (stackInfo.stack[0].url === initial.url) { + if (stackInfo.stack[0].line === initial.line) { + return false; // already in stack trace + } else if (!stackInfo.stack[0].line && stackInfo.stack[0].func === initial.func) { + stackInfo.stack[0].line = initial.line; + return false; + } + } + } + + stackInfo.stack.unshift(initial); + stackInfo.partial = true; + return true; + } else { + stackInfo.incomplete = true; + } + + return false; + } + /** + * Computes stack trace information by walking the arguments.caller + * chain at the time the exception occurred. This will cause earlier + * frames to be missed but is the only way to get any stack trace in + * Safari and IE. The top frame is restored by + * {@link augmentStackTraceWithInitialElement}. + * @param {Error} ex + * @return {?Object.} Stack trace information. + */ + + + function computeStackTraceByWalkingCallerChain(ex, depth) { + var functionName = /function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i, + stack = [], + funcs = {}, + recursion = false, + parts, + item; + + for (var curr = computeStackTraceByWalkingCallerChain.caller; curr && !recursion; curr = curr.caller) { + if (curr === computeStackTrace || curr === TraceKit.report) { + // console.log('skipping internal function'); + continue; + } + + item = { + url: null, + func: UNKNOWN_FUNCTION, + line: null, + column: null + }; + + if (curr.name) { + item.func = curr.name; + } else if (parts = functionName.exec(curr.toString())) { + item.func = parts[1]; + } + + if (typeof item.func === 'undefined') { + try { + item.func = parts.input.substring(0, parts.input.indexOf('{')); + } catch (e) {} + } + + if (funcs['' + curr]) { + recursion = true; + } else { + funcs['' + curr] = true; + } + + stack.push(item); + } + + if (depth) { + // console.log('depth is ' + depth); + // console.log('stack is ' + stack.length); + stack.splice(0, depth); + } + + var result = { + name: ex.name, + message: ex.message, + url: getLocationHref(), + stack: stack + }; + augmentStackTraceWithInitialElement(result, ex.sourceURL || ex.fileName, ex.line || ex.lineNumber, ex.message || ex.description); + return result; + } + /** + * Computes a stack trace for an exception. + * @param {Error} ex + * @param {(string|number)=} depth + */ + + + function computeStackTrace(ex, depth) { + var stack = null; + depth = depth == null ? 0 : +depth; + + try { + stack = computeStackTraceFromStackProp(ex); + + if (stack) { + return stack; + } + } catch (e) { + if (TraceKit.debug) { + throw e; + } + } + + try { + stack = computeStackTraceByWalkingCallerChain(ex, depth + 1); + + if (stack) { + return stack; + } + } catch (e) { + if (TraceKit.debug) { + throw e; + } + } + + return { + name: ex.name, + message: ex.message, + url: getLocationHref() + }; + } + + computeStackTrace.augmentStackTraceWithInitialElement = augmentStackTraceWithInitialElement; + computeStackTrace.computeStackTraceFromStackProp = computeStackTraceFromStackProp; + return computeStackTrace; +}(); + +var tracekit = TraceKit; + +var stringify_1 = createCommonjsModule(function (module, exports) { + /* + json-stringify-safe + Like JSON.stringify, but doesn't throw on circular references. + + Originally forked from https://github.com/isaacs/json-stringify-safe + version 5.0.1 on 3/8/2017 and modified to handle Errors serialization + and IE8 compatibility. Tests for this are in test/vendor. + + ISC license: https://github.com/isaacs/json-stringify-safe/blob/master/LICENSE + */ + exports = module.exports = stringify; + exports.getSerialize = serializer; + + function indexOf(haystack, needle) { + for (var i = 0; i < haystack.length; ++i) { + if (haystack[i] === needle) return i; + } + + return -1; + } + + function stringify(obj, replacer, spaces, cycleReplacer) { + return JSON.stringify(obj, serializer(replacer, cycleReplacer), spaces); + } // https://github.com/ftlabs/js-abbreviate/blob/fa709e5f139e7770a71827b1893f22418097fbda/index.js#L95-L106 + + + function stringifyError(value) { + var err = { + // These properties are implemented as magical getters and don't show up in for in + stack: value.stack, + message: value.message, + name: value.name + }; + + for (var i in value) { + if (Object.prototype.hasOwnProperty.call(value, i)) { + err[i] = value[i]; + } + } + + return err; + } + + function serializer(replacer, cycleReplacer) { + var stack = []; + var keys = []; + + if (cycleReplacer == null) { + cycleReplacer = function cycleReplacer(key, value) { + if (stack[0] === value) { + return '[Circular ~]'; + } + + return '[Circular ~.' + keys.slice(0, indexOf(stack, value)).join('.') + ']'; + }; + } + + return function (key, value) { + if (stack.length > 0) { + var thisPos = indexOf(stack, this); + ~thisPos ? stack.splice(thisPos + 1) : stack.push(this); + ~thisPos ? keys.splice(thisPos, Infinity, key) : keys.push(key); + + if (~indexOf(stack, value)) { + value = cycleReplacer.call(this, key, value); + } + } else { + stack.push(value); + } + + return replacer == null ? value instanceof Error ? stringifyError(value) : value : replacer.call(this, key, value); + }; + } +}); +var stringify_2 = stringify_1.getSerialize; + +function RavenConfigError(message) { + this.name = 'RavenConfigError'; + this.message = message; +} + +RavenConfigError.prototype = new Error(); +RavenConfigError.prototype.constructor = RavenConfigError; +var configError = RavenConfigError; + +var wrapMethod = function wrapMethod(console, level, callback) { + var originalConsoleLevel = console[level]; + var originalConsole = console; + + if (!(level in console)) { + return; + } + + var sentryLevel = level === 'warn' ? 'warning' : level; + + console[level] = function () { + var args = [].slice.call(arguments); + var msg = utils.safeJoin(args, ' '); + var data = { + level: sentryLevel, + logger: 'console', + extra: { + arguments: args + } + }; + + if (level === 'assert') { + if (args[0] === false) { + // Default browsers message + msg = 'Assertion failed: ' + (utils.safeJoin(args.slice(1), ' ') || 'console.assert'); + data.extra.arguments = args.slice(1); + callback && callback(msg, data); + } + } else { + callback && callback(msg, data); + } // this fails for some browsers. :( + + + if (originalConsoleLevel) { + // IE9 doesn't allow calling apply on console functions directly + // See: https://stackoverflow.com/questions/5472938/does-ie9-support-console-log-and-is-it-a-real-function#answer-5473193 + Function.prototype.apply.call(originalConsoleLevel, originalConsole, args); + } + }; +}; + +var console$1 = { + wrapMethod: wrapMethod +}; + +/*global XDomainRequest:false */ + +var isError = utils.isError; +var isObject = utils.isObject; +var isErrorEvent = utils.isErrorEvent; +var isUndefined = utils.isUndefined; +var isFunction = utils.isFunction; +var isString = utils.isString; +var isArray = utils.isArray; +var isEmptyObject = utils.isEmptyObject; +var each = utils.each; +var objectMerge = utils.objectMerge; +var truncate = utils.truncate; +var objectFrozen = utils.objectFrozen; +var hasKey = utils.hasKey; +var joinRegExp = utils.joinRegExp; +var urlencode = utils.urlencode; +var uuid4 = utils.uuid4; +var htmlTreeAsString = utils.htmlTreeAsString; +var isSameException = utils.isSameException; +var isSameStacktrace = utils.isSameStacktrace; +var parseUrl = utils.parseUrl; +var fill = utils.fill; +var supportsFetch = utils.supportsFetch; +var wrapConsoleMethod = console$1.wrapMethod; +var dsnKeys = 'source protocol user pass host port path'.split(' '); +var dsnPattern = /^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/; + +function now() { + return +new Date(); +} // This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) + + +var _window$1 = typeof window !== 'undefined' ? window : typeof commonjsGlobal !== 'undefined' ? commonjsGlobal : typeof self !== 'undefined' ? self : {}; + +var _document = _window$1.document; +var _navigator = _window$1.navigator; + +function keepOriginalCallback(original, callback) { + return isFunction(callback) ? function (data) { + return callback(data, original); + } : callback; +} // First, check for JSON support +// If there is no JSON, we no-op the core features of Raven +// since JSON is required to encode the payload + + +function Raven$1() { + this._hasJSON = !!(_typeof(JSON) === 'object' && JSON.stringify); // Raven can run in contexts where there's no document (react-native) + + this._hasDocument = !isUndefined(_document); + this._hasNavigator = !isUndefined(_navigator); + this._lastCapturedException = null; + this._lastData = null; + this._lastEventId = null; + this._globalServer = null; + this._globalKey = null; + this._globalProject = null; + this._globalContext = {}; + this._globalOptions = { + // SENTRY_RELEASE can be injected by https://github.com/getsentry/sentry-webpack-plugin + release: _window$1.SENTRY_RELEASE && _window$1.SENTRY_RELEASE.id, + logger: 'javascript', + ignoreErrors: [], + ignoreUrls: [], + whitelistUrls: [], + includePaths: [], + headers: null, + collectWindowErrors: true, + maxMessageLength: 0, + // By default, truncates URL values to 250 chars + maxUrlLength: 250, + stackTraceLimit: 50, + autoBreadcrumbs: true, + instrument: true, + sampleRate: 1 + }; + this._fetchDefaults = { + method: 'POST', + keepalive: true, + referrerPolicy: 'origin' + }; + this._ignoreOnError = 0; + this._isRavenInstalled = false; + this._originalErrorStackTraceLimit = Error.stackTraceLimit; // capture references to window.console *and* all its methods first + // before the console plugin has a chance to monkey patch + + this._originalConsole = _window$1.console || {}; + this._originalConsoleMethods = {}; + this._plugins = []; + this._startTime = now(); + this._wrappedBuiltIns = []; + this._breadcrumbs = []; + this._lastCapturedEvent = null; + this._keypressTimeout; + this._location = _window$1.location; + this._lastHref = this._location && this._location.href; + + this._resetBackoff(); // eslint-disable-next-line guard-for-in + + + for (var method in this._originalConsole) { + this._originalConsoleMethods[method] = this._originalConsole[method]; + } +} +/* + * The core Raven singleton + * + * @this {Raven} + */ + + +Raven$1.prototype = { + // Hardcode version string so that raven source can be loaded directly via + // webpack (using a build step causes webpack #1617). Grunt verifies that + // this value matches package.json during build. + // See: https://github.com/getsentry/raven-js/issues/465 + VERSION: '3.22.2', + debug: false, + TraceKit: tracekit, + // alias to TraceKit + + /* + * Configure Raven with a DSN and extra options + * + * @param {string} dsn The public Sentry DSN + * @param {object} options Set of global options [optional] + * @return {Raven} + */ + config: function config(dsn, options) { + var self = this; + + if (self._globalServer) { + this._logDebug('error', 'Error: Raven has already been configured'); + + return self; + } + + if (!dsn) return self; + var globalOptions = self._globalOptions; // merge in options + + if (options) { + each(options, function (key, value) { + // tags and extra are special and need to be put into context + if (key === 'tags' || key === 'extra' || key === 'user') { + self._globalContext[key] = value; + } else { + globalOptions[key] = value; + } + }); + } + + self.setDSN(dsn); // "Script error." is hard coded into browsers for errors that it can't read. + // this is the result of a script being pulled in from an external domain and CORS. + + globalOptions.ignoreErrors.push(/^Script error\.?$/); + globalOptions.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/); // join regexp rules into one big rule + + globalOptions.ignoreErrors = joinRegExp(globalOptions.ignoreErrors); + globalOptions.ignoreUrls = globalOptions.ignoreUrls.length ? joinRegExp(globalOptions.ignoreUrls) : false; + globalOptions.whitelistUrls = globalOptions.whitelistUrls.length ? joinRegExp(globalOptions.whitelistUrls) : false; + globalOptions.includePaths = joinRegExp(globalOptions.includePaths); + globalOptions.maxBreadcrumbs = Math.max(0, Math.min(globalOptions.maxBreadcrumbs || 100, 100)); // default and hard limit is 100 + + var autoBreadcrumbDefaults = { + xhr: true, + console: true, + dom: true, + location: true, + sentry: true + }; + var autoBreadcrumbs = globalOptions.autoBreadcrumbs; + + if ({}.toString.call(autoBreadcrumbs) === '[object Object]') { + autoBreadcrumbs = objectMerge(autoBreadcrumbDefaults, autoBreadcrumbs); + } else if (autoBreadcrumbs !== false) { + autoBreadcrumbs = autoBreadcrumbDefaults; + } + + globalOptions.autoBreadcrumbs = autoBreadcrumbs; + var instrumentDefaults = { + tryCatch: true + }; + var instrument = globalOptions.instrument; + + if ({}.toString.call(instrument) === '[object Object]') { + instrument = objectMerge(instrumentDefaults, instrument); + } else if (instrument !== false) { + instrument = instrumentDefaults; + } + + globalOptions.instrument = instrument; + tracekit.collectWindowErrors = !!globalOptions.collectWindowErrors; // return for chaining + + return self; + }, + + /* + * Installs a global window.onerror error handler + * to capture and report uncaught exceptions. + * At this point, install() is required to be called due + * to the way TraceKit is set up. + * + * @return {Raven} + */ + install: function install() { + var self = this; + + if (self.isSetup() && !self._isRavenInstalled) { + tracekit.report.subscribe(function () { + self._handleOnErrorStackInfo.apply(self, arguments); + }); + + self._patchFunctionToString(); + + if (self._globalOptions.instrument && self._globalOptions.instrument.tryCatch) { + self._instrumentTryCatch(); + } + + if (self._globalOptions.autoBreadcrumbs) self._instrumentBreadcrumbs(); // Install all of the plugins + + self._drainPlugins(); + + self._isRavenInstalled = true; + } + + Error.stackTraceLimit = self._globalOptions.stackTraceLimit; + return this; + }, + + /* + * Set the DSN (can be called multiple time unlike config) + * + * @param {string} dsn The public Sentry DSN + */ + setDSN: function setDSN(dsn) { + var self = this, + uri = self._parseDSN(dsn), + lastSlash = uri.path.lastIndexOf('/'), + path = uri.path.substr(1, lastSlash); + + self._dsn = dsn; + self._globalKey = uri.user; + self._globalSecret = uri.pass && uri.pass.substr(1); + self._globalProject = uri.path.substr(lastSlash + 1); + self._globalServer = self._getGlobalServer(uri); + self._globalEndpoint = self._globalServer + '/' + path + 'api/' + self._globalProject + '/store/'; // Reset backoff state since we may be pointing at a + // new project/server + + this._resetBackoff(); + }, + + /* + * Wrap code within a context so Raven can capture errors + * reliably across domains that is executed immediately. + * + * @param {object} options A specific set of options for this context [optional] + * @param {function} func The callback to be immediately executed within the context + * @param {array} args An array of arguments to be called with the callback [optional] + */ + context: function context(options, func, args) { + if (isFunction(options)) { + args = func || []; + func = options; + options = undefined; + } + + return this.wrap(options, func).apply(this, args); + }, + + /* + * Wrap code within a context and returns back a new function to be executed + * + * @param {object} options A specific set of options for this context [optional] + * @param {function} func The function to be wrapped in a new context + * @param {function} func A function to call before the try/catch wrapper [optional, private] + * @return {function} The newly wrapped functions with a context + */ + wrap: function wrap(options, func, _before) { + var self = this; // 1 argument has been passed, and it's not a function + // so just return it + + if (isUndefined(func) && !isFunction(options)) { + return options; + } // options is optional + + + if (isFunction(options)) { + func = options; + options = undefined; + } // At this point, we've passed along 2 arguments, and the second one + // is not a function either, so we'll just return the second argument. + + + if (!isFunction(func)) { + return func; + } // We don't wanna wrap it twice! + + + try { + if (func.__raven__) { + return func; + } // If this has already been wrapped in the past, return that + + + if (func.__raven_wrapper__) { + return func.__raven_wrapper__; + } + } catch (e) { + // Just accessing custom props in some Selenium environments + // can cause a "Permission denied" exception (see raven-js#495). + // Bail on wrapping and return the function as-is (defers to window.onerror). + return func; + } + + function wrapped() { + var args = [], + i = arguments.length, + deep = !options || options && options.deep !== false; + + if (_before && isFunction(_before)) { + _before.apply(this, arguments); + } // Recursively wrap all of a function's arguments that are + // functions themselves. + + + while (i--) { + args[i] = deep ? self.wrap(options, arguments[i]) : arguments[i]; + } + + try { + // Attempt to invoke user-land function + // NOTE: If you are a Sentry user, and you are seeing this stack frame, it + // means Raven caught an error invoking your application code. This is + // expected behavior and NOT indicative of a bug with Raven.js. + return func.apply(this, args); + } catch (e) { + self._ignoreNextOnError(); + + self.captureException(e, options); + throw e; + } + } // copy over properties of the old function + + + for (var property in func) { + if (hasKey(func, property)) { + wrapped[property] = func[property]; + } + } + + wrapped.prototype = func.prototype; + func.__raven_wrapper__ = wrapped; // Signal that this function has been wrapped/filled already + // for both debugging and to prevent it to being wrapped/filled twice + + wrapped.__raven__ = true; + wrapped.__orig__ = func; + return wrapped; + }, + + /* + * Uninstalls the global error handler. + * + * @return {Raven} + */ + uninstall: function uninstall() { + tracekit.report.uninstall(); + + this._unpatchFunctionToString(); + + this._restoreBuiltIns(); + + this._restoreConsole(); + + Error.stackTraceLimit = this._originalErrorStackTraceLimit; + this._isRavenInstalled = false; + return this; + }, + + /* + * Manually capture an exception and send it over to Sentry + * + * @param {error} ex An exception to be logged + * @param {object} options A specific set of options for this error [optional] + * @return {Raven} + */ + captureException: function captureException(ex, options) { + options = objectMerge({ + trimHeadFrames: 0 + }, options ? options : {}); // Cases for sending ex as a message, rather than an exception + + var isNotError = !isError(ex); + var isNotErrorEvent = !isErrorEvent(ex); + var isErrorEventWithoutError = isErrorEvent(ex) && !ex.error; + + if (isNotError && isNotErrorEvent || isErrorEventWithoutError) { + return this.captureMessage(ex, objectMerge(options, { + stacktrace: true, + // if we fall back to captureMessage, default to attempting a new trace + trimHeadFrames: options.trimHeadFrames + 1 + })); + } // Get actual Error from ErrorEvent + + + if (isErrorEvent(ex)) ex = ex.error; // Store the raw exception object for potential debugging and introspection + + this._lastCapturedException = ex; // TraceKit.report will re-raise any exception passed to it, + // which means you have to wrap it in try/catch. Instead, we + // can wrap it here and only re-raise if TraceKit.report + // raises an exception different from the one we asked to + // report on. + + try { + var stack = tracekit.computeStackTrace(ex); + + this._handleStackInfo(stack, options); + } catch (ex1) { + if (ex !== ex1) { + throw ex1; + } + } + + return this; + }, + + /* + * Manually send a message to Sentry + * + * @param {string} msg A plain message to be captured in Sentry + * @param {object} options A specific set of options for this message [optional] + * @return {Raven} + */ + captureMessage: function captureMessage(msg, options) { + // config() automagically converts ignoreErrors from a list to a RegExp so we need to test for an + // early call; we'll error on the side of logging anything called before configuration since it's + // probably something you should see: + if (!!this._globalOptions.ignoreErrors.test && this._globalOptions.ignoreErrors.test(msg)) { + return; + } + + options = options || {}; + var data = objectMerge({ + message: msg + '' // Make sure it's actually a string + + }, options); + var ex; // Generate a "synthetic" stack trace from this point. + // NOTE: If you are a Sentry user, and you are seeing this stack frame, it is NOT indicative + // of a bug with Raven.js. Sentry generates synthetic traces either by configuration, + // or if it catches a thrown object without a "stack" property. + + try { + throw new Error(msg); + } catch (ex1) { + ex = ex1; + } // null exception name so `Error` isn't prefixed to msg + + + ex.name = null; + var stack = tracekit.computeStackTrace(ex); // stack[0] is `throw new Error(msg)` call itself, we are interested in the frame that was just before that, stack[1] + + var initialCall = isArray(stack.stack) && stack.stack[1]; + var fileurl = initialCall && initialCall.url || ''; + + if (!!this._globalOptions.ignoreUrls.test && this._globalOptions.ignoreUrls.test(fileurl)) { + return; + } + + if (!!this._globalOptions.whitelistUrls.test && !this._globalOptions.whitelistUrls.test(fileurl)) { + return; + } + + if (this._globalOptions.stacktrace || options && options.stacktrace) { + options = objectMerge({ + // fingerprint on msg, not stack trace (legacy behavior, could be + // revisited) + fingerprint: msg, + // since we know this is a synthetic trace, the top N-most frames + // MUST be from Raven.js, so mark them as in_app later by setting + // trimHeadFrames + trimHeadFrames: (options.trimHeadFrames || 0) + 1 + }, options); + + var frames = this._prepareFrames(stack, options); + + data.stacktrace = { + // Sentry expects frames oldest to newest + frames: frames.reverse() + }; + } // Fire away! + + + this._send(data); + + return this; + }, + captureBreadcrumb: function captureBreadcrumb(obj) { + var crumb = objectMerge({ + timestamp: now() / 1000 + }, obj); + + if (isFunction(this._globalOptions.breadcrumbCallback)) { + var result = this._globalOptions.breadcrumbCallback(crumb); + + if (isObject(result) && !isEmptyObject(result)) { + crumb = result; + } else if (result === false) { + return this; + } + } + + this._breadcrumbs.push(crumb); + + if (this._breadcrumbs.length > this._globalOptions.maxBreadcrumbs) { + this._breadcrumbs.shift(); + } + + return this; + }, + addPlugin: function addPlugin(plugin + /*arg1, arg2, ... argN*/ + ) { + var pluginArgs = [].slice.call(arguments, 1); + + this._plugins.push([plugin, pluginArgs]); + + if (this._isRavenInstalled) { + this._drainPlugins(); + } + + return this; + }, + + /* + * Set/clear a user to be sent along with the payload. + * + * @param {object} user An object representing user data [optional] + * @return {Raven} + */ + setUserContext: function setUserContext(user) { + // Intentionally do not merge here since that's an unexpected behavior. + this._globalContext.user = user; + return this; + }, + + /* + * Merge extra attributes to be sent along with the payload. + * + * @param {object} extra An object representing extra data [optional] + * @return {Raven} + */ + setExtraContext: function setExtraContext(extra) { + this._mergeContext('extra', extra); + + return this; + }, + + /* + * Merge tags to be sent along with the payload. + * + * @param {object} tags An object representing tags [optional] + * @return {Raven} + */ + setTagsContext: function setTagsContext(tags) { + this._mergeContext('tags', tags); + + return this; + }, + + /* + * Clear all of the context. + * + * @return {Raven} + */ + clearContext: function clearContext() { + this._globalContext = {}; + return this; + }, + + /* + * Get a copy of the current context. This cannot be mutated. + * + * @return {object} copy of context + */ + getContext: function getContext() { + // lol javascript + return JSON.parse(stringify_1(this._globalContext)); + }, + + /* + * Set environment of application + * + * @param {string} environment Typically something like 'production'. + * @return {Raven} + */ + setEnvironment: function setEnvironment(environment) { + this._globalOptions.environment = environment; + return this; + }, + + /* + * Set release version of application + * + * @param {string} release Typically something like a git SHA to identify version + * @return {Raven} + */ + setRelease: function setRelease(release) { + this._globalOptions.release = release; + return this; + }, + + /* + * Set the dataCallback option + * + * @param {function} callback The callback to run which allows the + * data blob to be mutated before sending + * @return {Raven} + */ + setDataCallback: function setDataCallback(callback) { + var original = this._globalOptions.dataCallback; + this._globalOptions.dataCallback = keepOriginalCallback(original, callback); + return this; + }, + + /* + * Set the breadcrumbCallback option + * + * @param {function} callback The callback to run which allows filtering + * or mutating breadcrumbs + * @return {Raven} + */ + setBreadcrumbCallback: function setBreadcrumbCallback(callback) { + var original = this._globalOptions.breadcrumbCallback; + this._globalOptions.breadcrumbCallback = keepOriginalCallback(original, callback); + return this; + }, + + /* + * Set the shouldSendCallback option + * + * @param {function} callback The callback to run which allows + * introspecting the blob before sending + * @return {Raven} + */ + setShouldSendCallback: function setShouldSendCallback(callback) { + var original = this._globalOptions.shouldSendCallback; + this._globalOptions.shouldSendCallback = keepOriginalCallback(original, callback); + return this; + }, + + /** + * Override the default HTTP transport mechanism that transmits data + * to the Sentry server. + * + * @param {function} transport Function invoked instead of the default + * `makeRequest` handler. + * + * @return {Raven} + */ + setTransport: function setTransport(transport) { + this._globalOptions.transport = transport; + return this; + }, + + /* + * Get the latest raw exception that was captured by Raven. + * + * @return {error} + */ + lastException: function lastException() { + return this._lastCapturedException; + }, + + /* + * Get the last event id + * + * @return {string} + */ + lastEventId: function lastEventId() { + return this._lastEventId; + }, + + /* + * Determine if Raven is setup and ready to go. + * + * @return {boolean} + */ + isSetup: function isSetup() { + if (!this._hasJSON) return false; // needs JSON support + + if (!this._globalServer) { + if (!this.ravenNotConfiguredError) { + this.ravenNotConfiguredError = true; + + this._logDebug('error', 'Error: Raven has not been configured.'); + } + + return false; + } + + return true; + }, + afterLoad: function afterLoad() { + // TODO: remove window dependence? + // Attempt to initialize Raven on load + var RavenConfig = _window$1.RavenConfig; + + if (RavenConfig) { + this.config(RavenConfig.dsn, RavenConfig.config).install(); + } + }, + showReportDialog: function showReportDialog(options) { + if (!_document // doesn't work without a document (React native) + ) return; + options = options || {}; + var lastEventId = options.eventId || this.lastEventId(); + + if (!lastEventId) { + throw new configError('Missing eventId'); + } + + var dsn = options.dsn || this._dsn; + + if (!dsn) { + throw new configError('Missing DSN'); + } + + var encode = encodeURIComponent; + var qs = ''; + qs += '?eventId=' + encode(lastEventId); + qs += '&dsn=' + encode(dsn); + var user = options.user || this._globalContext.user; + + if (user) { + if (user.name) qs += '&name=' + encode(user.name); + if (user.email) qs += '&email=' + encode(user.email); + } + + var globalServer = this._getGlobalServer(this._parseDSN(dsn)); + + var script = _document.createElement('script'); + + script.async = true; + script.src = globalServer + '/api/embed/error-page/' + qs; + + (_document.head || _document.body).appendChild(script); + }, + + /**** Private functions ****/ + _ignoreNextOnError: function _ignoreNextOnError() { + var self = this; + this._ignoreOnError += 1; + setTimeout(function () { + // onerror should trigger before setTimeout + self._ignoreOnError -= 1; + }); + }, + _triggerEvent: function _triggerEvent(eventType, options) { + // NOTE: `event` is a native browser thing, so let's avoid conflicting wiht it + var evt, key; + if (!this._hasDocument) return; + options = options || {}; + eventType = 'raven' + eventType.substr(0, 1).toUpperCase() + eventType.substr(1); + + if (_document.createEvent) { + evt = _document.createEvent('HTMLEvents'); + evt.initEvent(eventType, true, true); + } else { + evt = _document.createEventObject(); + evt.eventType = eventType; + } + + for (key in options) { + if (hasKey(options, key)) { + evt[key] = options[key]; + } + } + + if (_document.createEvent) { + // IE9 if standards + _document.dispatchEvent(evt); + } else { + // IE8 regardless of Quirks or Standards + // IE9 if quirks + try { + _document.fireEvent('on' + evt.eventType.toLowerCase(), evt); + } catch (e) {// Do nothing + } + } + }, + + /** + * Wraps addEventListener to capture UI breadcrumbs + * @param evtName the event name (e.g. "click") + * @returns {Function} + * @private + */ + _breadcrumbEventHandler: function _breadcrumbEventHandler(evtName) { + var self = this; + return function (evt) { + // reset keypress timeout; e.g. triggering a 'click' after + // a 'keypress' will reset the keypress debounce so that a new + // set of keypresses can be recorded + self._keypressTimeout = null; // It's possible this handler might trigger multiple times for the same + // event (e.g. event propagation through node ancestors). Ignore if we've + // already captured the event. + + if (self._lastCapturedEvent === evt) return; + self._lastCapturedEvent = evt; // try/catch both: + // - accessing evt.target (see getsentry/raven-js#838, #768) + // - `htmlTreeAsString` because it's complex, and just accessing the DOM incorrectly + // can throw an exception in some circumstances. + + var target; + + try { + target = htmlTreeAsString(evt.target); + } catch (e) { + target = ''; + } + + self.captureBreadcrumb({ + category: 'ui.' + evtName, + // e.g. ui.click, ui.input + message: target + }); + }; + }, + + /** + * Wraps addEventListener to capture keypress UI events + * @returns {Function} + * @private + */ + _keypressEventHandler: function _keypressEventHandler() { + var self = this, + debounceDuration = 1000; // milliseconds + // TODO: if somehow user switches keypress target before + // debounce timeout is triggered, we will only capture + // a single breadcrumb from the FIRST target (acceptable?) + + return function (evt) { + var target; + + try { + target = evt.target; + } catch (e) { + // just accessing event properties can throw an exception in some rare circumstances + // see: https://github.com/getsentry/raven-js/issues/838 + return; + } + + var tagName = target && target.tagName; // only consider keypress events on actual input elements + // this will disregard keypresses targeting body (e.g. tabbing + // through elements, hotkeys, etc) + + if (!tagName || tagName !== 'INPUT' && tagName !== 'TEXTAREA' && !target.isContentEditable) return; // record first keypress in a series, but ignore subsequent + // keypresses until debounce clears + + var timeout = self._keypressTimeout; + + if (!timeout) { + self._breadcrumbEventHandler('input')(evt); + } + + clearTimeout(timeout); + self._keypressTimeout = setTimeout(function () { + self._keypressTimeout = null; + }, debounceDuration); + }; + }, + + /** + * Captures a breadcrumb of type "navigation", normalizing input URLs + * @param to the originating URL + * @param from the target URL + * @private + */ + _captureUrlChange: function _captureUrlChange(from, to) { + var parsedLoc = parseUrl(this._location.href); + var parsedTo = parseUrl(to); + var parsedFrom = parseUrl(from); // because onpopstate only tells you the "new" (to) value of location.href, and + // not the previous (from) value, we need to track the value of the current URL + // state ourselves + + this._lastHref = to; // Use only the path component of the URL if the URL matches the current + // document (almost all the time when using pushState) + + if (parsedLoc.protocol === parsedTo.protocol && parsedLoc.host === parsedTo.host) to = parsedTo.relative; + if (parsedLoc.protocol === parsedFrom.protocol && parsedLoc.host === parsedFrom.host) from = parsedFrom.relative; + this.captureBreadcrumb({ + category: 'navigation', + data: { + to: to, + from: from + } + }); + }, + _patchFunctionToString: function _patchFunctionToString() { + var self = this; + self._originalFunctionToString = Function.prototype.toString; // eslint-disable-next-line no-extend-native + + Function.prototype.toString = function () { + if (typeof this === 'function' && this.__raven__) { + return self._originalFunctionToString.apply(this.__orig__, arguments); + } + + return self._originalFunctionToString.apply(this, arguments); + }; + }, + _unpatchFunctionToString: function _unpatchFunctionToString() { + if (this._originalFunctionToString) { + // eslint-disable-next-line no-extend-native + Function.prototype.toString = this._originalFunctionToString; + } + }, + + /** + * Wrap timer functions and event targets to catch errors and provide + * better metadata. + */ + _instrumentTryCatch: function _instrumentTryCatch() { + var self = this; + var wrappedBuiltIns = self._wrappedBuiltIns; + + function wrapTimeFn(orig) { + return function (fn, t) { + // preserve arity + // Make a copy of the arguments to prevent deoptimization + // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments + var args = new Array(arguments.length); + + for (var i = 0; i < args.length; ++i) { + args[i] = arguments[i]; + } + + var originalCallback = args[0]; + + if (isFunction(originalCallback)) { + args[0] = self.wrap(originalCallback); + } // IE < 9 doesn't support .call/.apply on setInterval/setTimeout, but it + // also supports only two arguments and doesn't care what this is, so we + // can just call the original function directly. + + + if (orig.apply) { + return orig.apply(this, args); + } else { + return orig(args[0], args[1]); + } + }; + } + + var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; + + function wrapEventTarget(global) { + var proto = _window$1[global] && _window$1[global].prototype; + + if (proto && proto.hasOwnProperty && proto.hasOwnProperty('addEventListener')) { + fill(proto, 'addEventListener', function (orig) { + return function (evtName, fn, capture, secure) { + // preserve arity + try { + if (fn && fn.handleEvent) { + fn.handleEvent = self.wrap(fn.handleEvent); + } + } catch (err) {} // can sometimes get 'Permission denied to access property "handle Event' + // More breadcrumb DOM capture ... done here and not in `_instrumentBreadcrumbs` + // so that we don't have more than one wrapper function + + + var before, clickHandler, keypressHandler; + + if (autoBreadcrumbs && autoBreadcrumbs.dom && (global === 'EventTarget' || global === 'Node')) { + // NOTE: generating multiple handlers per addEventListener invocation, should + // revisit and verify we can just use one (almost certainly) + clickHandler = self._breadcrumbEventHandler('click'); + keypressHandler = self._keypressEventHandler(); + + before = function before(evt) { + // need to intercept every DOM event in `before` argument, in case that + // same wrapped method is re-used for different events (e.g. mousemove THEN click) + // see #724 + if (!evt) return; + var eventType; + + try { + eventType = evt.type; + } catch (e) { + // just accessing event properties can throw an exception in some rare circumstances + // see: https://github.com/getsentry/raven-js/issues/838 + return; + } + + if (eventType === 'click') return clickHandler(evt);else if (eventType === 'keypress') return keypressHandler(evt); + }; + } + + return orig.call(this, evtName, self.wrap(fn, undefined, before), capture, secure); + }; + }, wrappedBuiltIns); + fill(proto, 'removeEventListener', function (orig) { + return function (evt, fn, capture, secure) { + try { + fn = fn && (fn.__raven_wrapper__ ? fn.__raven_wrapper__ : fn); + } catch (e) {// ignore, accessing __raven_wrapper__ will throw in some Selenium environments + } + + return orig.call(this, evt, fn, capture, secure); + }; + }, wrappedBuiltIns); + } + } + + fill(_window$1, 'setTimeout', wrapTimeFn, wrappedBuiltIns); + fill(_window$1, 'setInterval', wrapTimeFn, wrappedBuiltIns); + + if (_window$1.requestAnimationFrame) { + fill(_window$1, 'requestAnimationFrame', function (orig) { + return function (cb) { + return orig(self.wrap(cb)); + }; + }, wrappedBuiltIns); + } // event targets borrowed from bugsnag-js: + // https://github.com/bugsnag/bugsnag-js/blob/master/src/bugsnag.js#L666 + + + var eventTargets = ['EventTarget', 'Window', 'Node', 'ApplicationCache', 'AudioTrackList', 'ChannelMergerNode', 'CryptoOperation', 'EventSource', 'FileReader', 'HTMLUnknownElement', 'IDBDatabase', 'IDBRequest', 'IDBTransaction', 'KeyOperation', 'MediaController', 'MessagePort', 'ModalWindow', 'Notification', 'SVGElementInstance', 'Screen', 'TextTrack', 'TextTrackCue', 'TextTrackList', 'WebSocket', 'WebSocketWorker', 'Worker', 'XMLHttpRequest', 'XMLHttpRequestEventTarget', 'XMLHttpRequestUpload']; + + for (var i = 0; i < eventTargets.length; i++) { + wrapEventTarget(eventTargets[i]); + } + }, + + /** + * Instrument browser built-ins w/ breadcrumb capturing + * - XMLHttpRequests + * - DOM interactions (click/typing) + * - window.location changes + * - console + * + * Can be disabled or individually configured via the `autoBreadcrumbs` config option + */ + _instrumentBreadcrumbs: function _instrumentBreadcrumbs() { + var self = this; + var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; + var wrappedBuiltIns = self._wrappedBuiltIns; + + function wrapProp(prop, xhr) { + if (prop in xhr && isFunction(xhr[prop])) { + fill(xhr, prop, function (orig) { + return self.wrap(orig); + }); // intentionally don't track filled methods on XHR instances + } + } + + if (autoBreadcrumbs.xhr && 'XMLHttpRequest' in _window$1) { + var xhrproto = XMLHttpRequest.prototype; + fill(xhrproto, 'open', function (origOpen) { + return function (method, url) { + // preserve arity + // if Sentry key appears in URL, don't capture + if (isString(url) && url.indexOf(self._globalKey) === -1) { + this.__raven_xhr = { + method: method, + url: url, + status_code: null + }; + } + + return origOpen.apply(this, arguments); + }; + }, wrappedBuiltIns); + fill(xhrproto, 'send', function (origSend) { + return function () { + // preserve arity + var xhr = this; + + function onreadystatechangeHandler() { + if (xhr.__raven_xhr && xhr.readyState === 4) { + try { + // touching statusCode in some platforms throws + // an exception + xhr.__raven_xhr.status_code = xhr.status; + } catch (e) { + /* do nothing */ + } + + self.captureBreadcrumb({ + type: 'http', + category: 'xhr', + data: xhr.__raven_xhr + }); + } + } + + var props = ['onload', 'onerror', 'onprogress']; + + for (var j = 0; j < props.length; j++) { + wrapProp(props[j], xhr); + } + + if ('onreadystatechange' in xhr && isFunction(xhr.onreadystatechange)) { + fill(xhr, 'onreadystatechange', function (orig) { + return self.wrap(orig, undefined, onreadystatechangeHandler); + } + /* intentionally don't track this instrumentation */ + ); + } else { + // if onreadystatechange wasn't actually set by the page on this xhr, we + // are free to set our own and capture the breadcrumb + xhr.onreadystatechange = onreadystatechangeHandler; + } + + return origSend.apply(this, arguments); + }; + }, wrappedBuiltIns); + } + + if (autoBreadcrumbs.xhr && supportsFetch()) { + fill(_window$1, 'fetch', function (origFetch) { + return function () { + // preserve arity + // Make a copy of the arguments to prevent deoptimization + // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments + var args = new Array(arguments.length); + + for (var i = 0; i < args.length; ++i) { + args[i] = arguments[i]; + } + + var fetchInput = args[0]; + var method = 'GET'; + var url; + + if (typeof fetchInput === 'string') { + url = fetchInput; + } else if ('Request' in _window$1 && fetchInput instanceof _window$1.Request) { + url = fetchInput.url; + + if (fetchInput.method) { + method = fetchInput.method; + } + } else { + url = '' + fetchInput; + } // if Sentry key appears in URL, don't capture, as it's our own request + + + if (url.indexOf(self._globalKey) !== -1) { + return origFetch.apply(this, args); + } + + if (args[1] && args[1].method) { + method = args[1].method; + } + + var fetchData = { + method: method, + url: url, + status_code: null + }; + return origFetch.apply(this, args).then(function (response) { + fetchData.status_code = response.status; + self.captureBreadcrumb({ + type: 'http', + category: 'fetch', + data: fetchData + }); + return response; + }); + }; + }, wrappedBuiltIns); + } // Capture breadcrumbs from any click that is unhandled / bubbled up all the way + // to the document. Do this before we instrument addEventListener. + + + if (autoBreadcrumbs.dom && this._hasDocument) { + if (_document.addEventListener) { + _document.addEventListener('click', self._breadcrumbEventHandler('click'), false); + + _document.addEventListener('keypress', self._keypressEventHandler(), false); + } else { + // IE8 Compatibility + _document.attachEvent('onclick', self._breadcrumbEventHandler('click')); + + _document.attachEvent('onkeypress', self._keypressEventHandler()); + } + } // record navigation (URL) changes + // NOTE: in Chrome App environment, touching history.pushState, *even inside + // a try/catch block*, will cause Chrome to output an error to console.error + // borrowed from: https://github.com/angular/angular.js/pull/13945/files + + + var chrome = _window$1.chrome; + var isChromePackagedApp = chrome && chrome.app && chrome.app.runtime; + var hasPushAndReplaceState = !isChromePackagedApp && _window$1.history && history.pushState && history.replaceState; + + if (autoBreadcrumbs.location && hasPushAndReplaceState) { + // TODO: remove onpopstate handler on uninstall() + var oldOnPopState = _window$1.onpopstate; + + _window$1.onpopstate = function () { + var currentHref = self._location.href; + + self._captureUrlChange(self._lastHref, currentHref); + + if (oldOnPopState) { + return oldOnPopState.apply(this, arguments); + } + }; + + var historyReplacementFunction = function historyReplacementFunction(origHistFunction) { + // note history.pushState.length is 0; intentionally not declaring + // params to preserve 0 arity + return function () + /* state, title, url */ + { + var url = arguments.length > 2 ? arguments[2] : undefined; // url argument is optional + + if (url) { + // coerce to string (this is what pushState does) + self._captureUrlChange(self._lastHref, url + ''); + } + + return origHistFunction.apply(this, arguments); + }; + }; + + fill(history, 'pushState', historyReplacementFunction, wrappedBuiltIns); + fill(history, 'replaceState', historyReplacementFunction, wrappedBuiltIns); + } + + if (autoBreadcrumbs.console && 'console' in _window$1 && console.log) { + // console + var consoleMethodCallback = function consoleMethodCallback(msg, data) { + self.captureBreadcrumb({ + message: msg, + level: data.level, + category: 'console' + }); + }; + + each(['debug', 'info', 'warn', 'error', 'log'], function (_, level) { + wrapConsoleMethod(console, level, consoleMethodCallback); + }); + } + }, + _restoreBuiltIns: function _restoreBuiltIns() { + // restore any wrapped builtins + var builtin; + + while (this._wrappedBuiltIns.length) { + builtin = this._wrappedBuiltIns.shift(); + var obj = builtin[0], + name = builtin[1], + orig = builtin[2]; + obj[name] = orig; + } + }, + _restoreConsole: function _restoreConsole() { + // eslint-disable-next-line guard-for-in + for (var method in this._originalConsoleMethods) { + this._originalConsole[method] = this._originalConsoleMethods[method]; + } + }, + _drainPlugins: function _drainPlugins() { + var self = this; // FIX ME TODO + + each(this._plugins, function (_, plugin) { + var installer = plugin[0]; + var args = plugin[1]; + installer.apply(self, [self].concat(args)); + }); + }, + _parseDSN: function _parseDSN(str) { + var m = dsnPattern.exec(str), + dsn = {}, + i = 7; + + try { + while (i--) { + dsn[dsnKeys[i]] = m[i] || ''; + } + } catch (e) { + throw new configError('Invalid DSN: ' + str); + } + + if (dsn.pass && !this._globalOptions.allowSecretKey) { + throw new configError('Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key'); + } + + return dsn; + }, + _getGlobalServer: function _getGlobalServer(uri) { + // assemble the endpoint from the uri pieces + var globalServer = '//' + uri.host + (uri.port ? ':' + uri.port : ''); + + if (uri.protocol) { + globalServer = uri.protocol + ':' + globalServer; + } + + return globalServer; + }, + _handleOnErrorStackInfo: function _handleOnErrorStackInfo() { + // if we are intentionally ignoring errors via onerror, bail out + if (!this._ignoreOnError) { + this._handleStackInfo.apply(this, arguments); + } + }, + _handleStackInfo: function _handleStackInfo(stackInfo, options) { + var frames = this._prepareFrames(stackInfo, options); + + this._triggerEvent('handle', { + stackInfo: stackInfo, + options: options + }); + + this._processException(stackInfo.name, stackInfo.message, stackInfo.url, stackInfo.lineno, frames, options); + }, + _prepareFrames: function _prepareFrames(stackInfo, options) { + var self = this; + var frames = []; + + if (stackInfo.stack && stackInfo.stack.length) { + each(stackInfo.stack, function (i, stack) { + var frame = self._normalizeFrame(stack, stackInfo.url); + + if (frame) { + frames.push(frame); + } + }); // e.g. frames captured via captureMessage throw + + if (options && options.trimHeadFrames) { + for (var j = 0; j < options.trimHeadFrames && j < frames.length; j++) { + frames[j].in_app = false; + } + } + } + + frames = frames.slice(0, this._globalOptions.stackTraceLimit); + return frames; + }, + _normalizeFrame: function _normalizeFrame(frame, stackInfoUrl) { + // normalize the frames data + var normalized = { + filename: frame.url, + lineno: frame.line, + colno: frame.column, + function: frame.func || '?' + }; // Case when we don't have any information about the error + // E.g. throwing a string or raw object, instead of an `Error` in Firefox + // Generating synthetic error doesn't add any value here + // + // We should probably somehow let a user know that they should fix their code + + if (!frame.url) { + normalized.filename = stackInfoUrl; // fallback to whole stacks url from onerror handler + } + + normalized.in_app = !( // determine if an exception came from outside of our app + // first we check the global includePaths list. + !!this._globalOptions.includePaths.test && !this._globalOptions.includePaths.test(normalized.filename) || // Now we check for fun, if the function name is Raven or TraceKit + /(Raven|TraceKit)\./.test(normalized['function']) || // finally, we do a last ditch effort and check for raven.min.js + /raven\.(min\.)?js$/.test(normalized.filename)); + return normalized; + }, + _processException: function _processException(type, message, fileurl, lineno, frames, options) { + var prefixedMessage = (type ? type + ': ' : '') + (message || ''); + + if (!!this._globalOptions.ignoreErrors.test && (this._globalOptions.ignoreErrors.test(message) || this._globalOptions.ignoreErrors.test(prefixedMessage))) { + return; + } + + var stacktrace; + + if (frames && frames.length) { + fileurl = frames[0].filename || fileurl; // Sentry expects frames oldest to newest + // and JS sends them as newest to oldest + + frames.reverse(); + stacktrace = { + frames: frames + }; + } else if (fileurl) { + stacktrace = { + frames: [{ + filename: fileurl, + lineno: lineno, + in_app: true + }] + }; + } + + if (!!this._globalOptions.ignoreUrls.test && this._globalOptions.ignoreUrls.test(fileurl)) { + return; + } + + if (!!this._globalOptions.whitelistUrls.test && !this._globalOptions.whitelistUrls.test(fileurl)) { + return; + } + + var data = objectMerge({ + // sentry.interfaces.Exception + exception: { + values: [{ + type: type, + value: message, + stacktrace: stacktrace + }] + }, + culprit: fileurl + }, options); // Fire away! + + this._send(data); + }, + _trimPacket: function _trimPacket(data) { + // For now, we only want to truncate the two different messages + // but this could/should be expanded to just trim everything + var max = this._globalOptions.maxMessageLength; + + if (data.message) { + data.message = truncate(data.message, max); + } + + if (data.exception) { + var exception = data.exception.values[0]; + exception.value = truncate(exception.value, max); + } + + var request = data.request; + + if (request) { + if (request.url) { + request.url = truncate(request.url, this._globalOptions.maxUrlLength); + } + + if (request.Referer) { + request.Referer = truncate(request.Referer, this._globalOptions.maxUrlLength); + } + } + + if (data.breadcrumbs && data.breadcrumbs.values) this._trimBreadcrumbs(data.breadcrumbs); + return data; + }, + + /** + * Truncate breadcrumb values (right now just URLs) + */ + _trimBreadcrumbs: function _trimBreadcrumbs(breadcrumbs) { + // known breadcrumb properties with urls + // TODO: also consider arbitrary prop values that start with (https?)?:// + var urlProps = ['to', 'from', 'url'], + urlProp, + crumb, + data; + + for (var i = 0; i < breadcrumbs.values.length; ++i) { + crumb = breadcrumbs.values[i]; + if (!crumb.hasOwnProperty('data') || !isObject(crumb.data) || objectFrozen(crumb.data)) continue; + data = objectMerge({}, crumb.data); + + for (var j = 0; j < urlProps.length; ++j) { + urlProp = urlProps[j]; + + if (data.hasOwnProperty(urlProp) && data[urlProp]) { + data[urlProp] = truncate(data[urlProp], this._globalOptions.maxUrlLength); + } + } + + breadcrumbs.values[i].data = data; + } + }, + _getHttpData: function _getHttpData() { + if (!this._hasNavigator && !this._hasDocument) return; + var httpData = {}; + + if (this._hasNavigator && _navigator.userAgent) { + httpData.headers = { + 'User-Agent': navigator.userAgent + }; + } // Check in `window` instead of `document`, as we may be in ServiceWorker environment + + + if (_window$1.location && _window$1.location.href) { + httpData.url = _window$1.location.href; + } + + if (this._hasDocument && _document.referrer) { + if (!httpData.headers) httpData.headers = {}; + httpData.headers.Referer = _document.referrer; + } + + return httpData; + }, + _resetBackoff: function _resetBackoff() { + this._backoffDuration = 0; + this._backoffStart = null; + }, + _shouldBackoff: function _shouldBackoff() { + return this._backoffDuration && now() - this._backoffStart < this._backoffDuration; + }, + + /** + * Returns true if the in-process data payload matches the signature + * of the previously-sent data + * + * NOTE: This has to be done at this level because TraceKit can generate + * data from window.onerror WITHOUT an exception object (IE8, IE9, + * other old browsers). This can take the form of an "exception" + * data object with a single frame (derived from the onerror args). + */ + _isRepeatData: function _isRepeatData(current) { + var last = this._lastData; + if (!last || current.message !== last.message || // defined for captureMessage + current.culprit !== last.culprit // defined for captureException/onerror + ) return false; // Stacktrace interface (i.e. from captureMessage) + + if (current.stacktrace || last.stacktrace) { + return isSameStacktrace(current.stacktrace, last.stacktrace); + } else if (current.exception || last.exception) { + // Exception interface (i.e. from captureException/onerror) + return isSameException(current.exception, last.exception); + } + + return true; + }, + _setBackoffState: function _setBackoffState(request) { + // If we are already in a backoff state, don't change anything + if (this._shouldBackoff()) { + return; + } + + var status = request.status; // 400 - project_id doesn't exist or some other fatal + // 401 - invalid/revoked dsn + // 429 - too many requests + + if (!(status === 400 || status === 401 || status === 429)) return; + var retry; + + try { + // If Retry-After is not in Access-Control-Expose-Headers, most + // browsers will throw an exception trying to access it + if (supportsFetch()) { + retry = request.headers.get('Retry-After'); + } else { + retry = request.getResponseHeader('Retry-After'); + } // Retry-After is returned in seconds + + + retry = parseInt(retry, 10) * 1000; + } catch (e) { + /* eslint no-empty:0 */ + } + + this._backoffDuration = retry ? // If Sentry server returned a Retry-After value, use it + retry : // Otherwise, double the last backoff duration (starts at 1 sec) + this._backoffDuration * 2 || 1000; + this._backoffStart = now(); + }, + _send: function _send(data) { + var globalOptions = this._globalOptions; + + var baseData = { + project: this._globalProject, + logger: globalOptions.logger, + platform: 'javascript' + }, + httpData = this._getHttpData(); + + if (httpData) { + baseData.request = httpData; + } // HACK: delete `trimHeadFrames` to prevent from appearing in outbound payload + + + if (data.trimHeadFrames) delete data.trimHeadFrames; + data = objectMerge(baseData, data); // Merge in the tags and extra separately since objectMerge doesn't handle a deep merge + + data.tags = objectMerge(objectMerge({}, this._globalContext.tags), data.tags); + data.extra = objectMerge(objectMerge({}, this._globalContext.extra), data.extra); // Send along our own collected metadata with extra + + data.extra['session:duration'] = now() - this._startTime; + + if (this._breadcrumbs && this._breadcrumbs.length > 0) { + // intentionally make shallow copy so that additions + // to breadcrumbs aren't accidentally sent in this request + data.breadcrumbs = { + values: [].slice.call(this._breadcrumbs, 0) + }; + } + + if (this._globalContext.user) { + // sentry.interfaces.User + data.user = this._globalContext.user; + } // Include the environment if it's defined in globalOptions + + + if (globalOptions.environment) data.environment = globalOptions.environment; // Include the release if it's defined in globalOptions + + if (globalOptions.release) data.release = globalOptions.release; // Include server_name if it's defined in globalOptions + + if (globalOptions.serverName) data.server_name = globalOptions.serverName; // Cleanup empty properties before sending them to the server + + Object.keys(data).forEach(function (key) { + if (data[key] == null || data[key] === '' || isEmptyObject(data[key])) { + delete data[key]; + } + }); + + if (isFunction(globalOptions.dataCallback)) { + data = globalOptions.dataCallback(data) || data; + } // Why?????????? + + + if (!data || isEmptyObject(data)) { + return; + } // Check if the request should be filtered or not + + + if (isFunction(globalOptions.shouldSendCallback) && !globalOptions.shouldSendCallback(data)) { + return; + } // Backoff state: Sentry server previously responded w/ an error (e.g. 429 - too many requests), + // so drop requests until "cool-off" period has elapsed. + + + if (this._shouldBackoff()) { + this._logDebug('warn', 'Raven dropped error due to backoff: ', data); + + return; + } + + if (typeof globalOptions.sampleRate === 'number') { + if (Math.random() < globalOptions.sampleRate) { + this._sendProcessedPayload(data); + } + } else { + this._sendProcessedPayload(data); + } + }, + _getUuid: function _getUuid() { + return uuid4(); + }, + _sendProcessedPayload: function _sendProcessedPayload(data, callback) { + var self = this; + var globalOptions = this._globalOptions; + if (!this.isSetup()) return; // Try and clean up the packet before sending by truncating long values + + data = this._trimPacket(data); // ideally duplicate error testing should occur *before* dataCallback/shouldSendCallback, + // but this would require copying an un-truncated copy of the data packet, which can be + // arbitrarily deep (extra_data) -- could be worthwhile? will revisit + + if (!this._globalOptions.allowDuplicates && this._isRepeatData(data)) { + this._logDebug('warn', 'Raven dropped repeat event: ', data); + + return; + } // Send along an event_id if not explicitly passed. + // This event_id can be used to reference the error within Sentry itself. + // Set lastEventId after we know the error should actually be sent + + + this._lastEventId = data.event_id || (data.event_id = this._getUuid()); // Store outbound payload after trim + + this._lastData = data; + + this._logDebug('debug', 'Raven about to send:', data); + + var auth = { + sentry_version: '7', + sentry_client: 'raven-js/' + this.VERSION, + sentry_key: this._globalKey + }; + + if (this._globalSecret) { + auth.sentry_secret = this._globalSecret; + } + + var exception = data.exception && data.exception.values[0]; // only capture 'sentry' breadcrumb is autoBreadcrumbs is truthy + + if (this._globalOptions.autoBreadcrumbs && this._globalOptions.autoBreadcrumbs.sentry) { + this.captureBreadcrumb({ + category: 'sentry', + message: exception ? (exception.type ? exception.type + ': ' : '') + exception.value : data.message, + event_id: data.event_id, + level: data.level || 'error' // presume error unless specified + + }); + } + + var url = this._globalEndpoint; + + (globalOptions.transport || this._makeRequest).call(this, { + url: url, + auth: auth, + data: data, + options: globalOptions, + onSuccess: function success() { + self._resetBackoff(); + + self._triggerEvent('success', { + data: data, + src: url + }); + + callback && callback(); + }, + onError: function failure(error) { + self._logDebug('error', 'Raven transport failed to send: ', error); + + if (error.request) { + self._setBackoffState(error.request); + } + + self._triggerEvent('failure', { + data: data, + src: url + }); + + error = error || new Error('Raven send failed (no additional details provided)'); + callback && callback(error); + } + }); + }, + _makeRequest: function _makeRequest(opts) { + // Auth is intentionally sent as part of query string (NOT as custom HTTP header) to avoid preflight CORS requests + var url = opts.url + '?' + urlencode(opts.auth); + var evaluatedHeaders = null; + var evaluatedFetchParameters = {}; + + if (opts.options.headers) { + evaluatedHeaders = this._evaluateHash(opts.options.headers); + } + + if (opts.options.fetchParameters) { + evaluatedFetchParameters = this._evaluateHash(opts.options.fetchParameters); + } + + if (supportsFetch()) { + evaluatedFetchParameters.body = stringify_1(opts.data); + var defaultFetchOptions = objectMerge({}, this._fetchDefaults); + var fetchOptions = objectMerge(defaultFetchOptions, evaluatedFetchParameters); + + if (evaluatedHeaders) { + fetchOptions.headers = evaluatedHeaders; + } + + return _window$1.fetch(url, fetchOptions).then(function (response) { + if (response.ok) { + opts.onSuccess && opts.onSuccess(); + } else { + var error = new Error('Sentry error code: ' + response.status); // It's called request only to keep compatibility with XHR interface + // and not add more redundant checks in setBackoffState method + + error.request = response; + opts.onError && opts.onError(error); + } + })['catch'](function () { + opts.onError && opts.onError(new Error('Sentry error code: network unavailable')); + }); + } + + var request = _window$1.XMLHttpRequest && new _window$1.XMLHttpRequest(); + if (!request) return; // if browser doesn't support CORS (e.g. IE7), we are out of luck + + var hasCORS = 'withCredentials' in request || typeof XDomainRequest !== 'undefined'; + if (!hasCORS) return; + + if ('withCredentials' in request) { + request.onreadystatechange = function () { + if (request.readyState !== 4) { + return; + } else if (request.status === 200) { + opts.onSuccess && opts.onSuccess(); + } else if (opts.onError) { + var err = new Error('Sentry error code: ' + request.status); + err.request = request; + opts.onError(err); + } + }; + } else { + request = new XDomainRequest(); // xdomainrequest cannot go http -> https (or vice versa), + // so always use protocol relative + + url = url.replace(/^https?:/, ''); // onreadystatechange not supported by XDomainRequest + + if (opts.onSuccess) { + request.onload = opts.onSuccess; + } + + if (opts.onError) { + request.onerror = function () { + var err = new Error('Sentry error code: XDomainRequest'); + err.request = request; + opts.onError(err); + }; + } + } + + request.open('POST', url); + + if (evaluatedHeaders) { + each(evaluatedHeaders, function (key, value) { + request.setRequestHeader(key, value); + }); + } + + request.send(stringify_1(opts.data)); + }, + _evaluateHash: function _evaluateHash(hash) { + var evaluated = {}; + + for (var key in hash) { + if (hash.hasOwnProperty(key)) { + var value = hash[key]; + evaluated[key] = typeof value === 'function' ? value() : value; + } + } + + return evaluated; + }, + _logDebug: function _logDebug(level) { + if (this._originalConsoleMethods[level] && this.debug) { + // In IE<10 console methods do not have their own 'apply' method + Function.prototype.apply.call(this._originalConsoleMethods[level], this._originalConsole, [].slice.call(arguments, 1)); + } + }, + _mergeContext: function _mergeContext(key, context) { + if (isUndefined(context)) { + delete this._globalContext[key]; + } else { + this._globalContext[key] = objectMerge(this._globalContext[key] || {}, context); + } + } +}; // Deprecations + +Raven$1.prototype.setUser = Raven$1.prototype.setUserContext; +Raven$1.prototype.setReleaseContext = Raven$1.prototype.setRelease; +var raven = Raven$1; + +/** + * Enforces a single instance of the Raven client, and the + * main entry point for Raven. If you are a consumer of the + * Raven library, you SHOULD load this file (vs raven.js). + **/ +// This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) + +var _window = typeof window !== 'undefined' ? window : typeof commonjsGlobal !== 'undefined' ? commonjsGlobal : typeof self !== 'undefined' ? self : {}; + +var _Raven = _window.Raven; +var Raven = new raven(); +/* + * Allow multiple versions of Raven to be installed. + * Strip Raven from the global context and returns the instance. + * + * @return {Raven} + */ + +Raven.noConflict = function () { + _window.Raven = _Raven; + return Raven; +}; + +Raven.afterLoad(); +var singleton = Raven; + +/** + * Angular.js plugin + * + * Provides an $exceptionHandler for Angular.js + */ + +var wrappedCallback$1 = utils.wrappedCallback; // See https://github.com/angular/angular.js/blob/v1.4.7/src/minErr.js + +var angularPattern = /^\[((?:[$a-zA-Z0-9]+:)?(?:[$a-zA-Z0-9]+))\] (.*?)\n?(\S+)$/; +var moduleName = 'ngRaven'; + +function angularPlugin(Raven, angular) { + angular = angular || window.angular; + if (!angular) return; + + function RavenProvider() { + this.$get = ['$window', function ($window) { + return Raven; + }]; + } + + function ExceptionHandlerProvider($provide) { + $provide.decorator('$exceptionHandler', ['Raven', '$delegate', exceptionHandler]); + } + + function exceptionHandler(R, $delegate) { + return function (ex, cause) { + R.captureException(ex, { + extra: { + cause: cause + } + }); + $delegate(ex, cause); + }; + } + + angular.module(moduleName, []).provider('Raven', RavenProvider).config(['$provide', ExceptionHandlerProvider]); + Raven.setDataCallback(wrappedCallback$1(function (data) { + return angularPlugin._normalizeData(data); + })); +} + +angularPlugin._normalizeData = function (data) { + // We only care about mutating an exception + var exception = data.exception; + + if (exception) { + exception = exception.values[0]; + var matches = angularPattern.exec(exception.value); + + if (matches) { + // This type now becomes something like: $rootScope:inprog + exception.type = matches[1]; + exception.value = matches[2]; + data.message = exception.type + ': ' + exception.value; // auto set a new tag specifically for the angular error url + + data.extra.angularDocs = matches[3].substr(0, 250); + } + } + + return data; +}; + +angularPlugin.moduleName = moduleName; +var angular = angularPlugin; + +/** + * console plugin + * + * Monkey patches console.* calls into Sentry messages with + * their appropriate log levels. (Experimental) + * + * Options: + * + * `levels`: An array of levels (methods on `console`) to report to Sentry. + * Defaults to debug, info, warn, and error. + */ + +var wrapConsoleMethod$1 = console$1.wrapMethod; + +function consolePlugin(Raven, console, pluginOptions) { + console = console || window.console || {}; + pluginOptions = pluginOptions || {}; + var logLevels = pluginOptions.levels || ['debug', 'info', 'warn', 'error']; + if ('assert' in console) logLevels.push('assert'); + + var callback = function callback(msg, data) { + Raven.captureMessage(msg, data); + }; + + var level = logLevels.pop(); + + while (level) { + wrapConsoleMethod$1(console, level, callback); + level = logLevels.pop(); + } +} + +var console$3 = consolePlugin; + +/** + * Ember.js plugin + * + * Patches event handler callbacks and ajax callbacks. + */ +function emberPlugin(Raven, Ember) { + Ember = Ember || window.Ember; // quit if Ember isn't on the page + + if (!Ember) return; + var _oldOnError = Ember.onerror; + + Ember.onerror = function EmberOnError(error) { + Raven.captureException(error); + + if (typeof _oldOnError === 'function') { + _oldOnError.call(this, error); + } + }; + + Ember.RSVP.on('error', function (reason) { + if (reason instanceof Error) { + Raven.captureException(reason, { + extra: { + context: 'Unhandled Promise error detected' + } + }); + } else { + Raven.captureMessage('Unhandled Promise error detected', { + extra: { + reason: reason + } + }); + } + }); +} + +var ember = emberPlugin; + +/*global define*/ + +/** + * require.js plugin + * + * Automatically wrap define/require callbacks. (Experimental) + */ + +function requirePlugin(Raven) { + if (typeof undefined === 'function' && undefined.amd) { + window.define = Raven.wrap({ + deep: false + }, undefined); + window.require = Raven.wrap({ + deep: false + }, commonjsRequire); + } +} + +var require_1 = requirePlugin; + +/** + * Vue.js 2.0 plugin + * + */ +function formatComponentName(vm) { + if (vm.$root === vm) { + return 'root instance'; + } + + var name = vm._isVue ? vm.$options.name || vm.$options._componentTag : vm.name; + return (name ? 'component <' + name + '>' : 'anonymous component') + (vm._isVue && vm.$options.__file ? ' at ' + vm.$options.__file : ''); +} + +function vuePlugin(Raven, Vue) { + Vue = Vue || window.Vue; // quit if Vue isn't on the page + + if (!Vue || !Vue.config) return; + var _oldOnError = Vue.config.errorHandler; + + Vue.config.errorHandler = function VueErrorHandler(error, vm, info) { + var metaData = {}; // vm and lifecycleHook are not always available + + if (Object.prototype.toString.call(vm) === '[object Object]') { + metaData.componentName = formatComponentName(vm); + metaData.propsData = vm.$options.propsData; + } + + if (typeof info !== 'undefined') { + metaData.lifecycleHook = info; + } + + Raven.captureException(error, { + extra: metaData + }); + + if (typeof _oldOnError === 'function') { + _oldOnError.call(this, error, vm, info); + } + }; +} + +var vue = vuePlugin; + +/* This file was generated by './scripts/generate-plugin-combinations.js'! */ + +singleton.addPlugin(angular).addPlugin(console$3).addPlugin(ember).addPlugin(require_1).addPlugin(vue); +var angular_console_ember_require_vue = {}; + +return angular_console_ember_require_vue; + +}))); diff --git a/dist/angular,console,ember,require,vue/raven.min.js b/dist/angular,console,ember,require,vue/raven.min.js new file mode 100644 index 000000000000..055e12c89dca --- /dev/null +++ b/dist/angular,console,ember,require,vue/raven.min.js @@ -0,0 +1,3 @@ +/*! Raven.js 3.22.2 (1b6187b) | github.com/getsentry/raven-js */ +!function(a,b){"object"==typeof exports&&"undefined"!=typeof module?module.exports=b():"function"==typeof define&&define.amd?define(b):a.Raven=b()}(this,function(){"use strict";function a(a,b){return b={exports:{}},a(b,b.exports),b.exports}function b(a){return(b="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(a){return typeof a}:function(a){return a&&"function"==typeof Symbol&&a.constructor===Symbol&&a!==Symbol.prototype?"symbol":typeof a})(a)}function c(a){return"object"===b(a)&&null!==a}function d(a){switch({}.toString.call(a)){case"[object Error]":return!0;case"[object Exception]":return!0;case"[object DOMException]":return!0;default:return a instanceof Error}}function e(a){return l()&&"[object ErrorEvent]"==={}.toString.call(a)}function f(a){return void 0===a}function g(a){return"function"==typeof a}function h(a){return"[object Object]"===Object.prototype.toString.call(a)}function i(a){return"[object String]"===Object.prototype.toString.call(a)}function j(a){return"[object Array]"===Object.prototype.toString.call(a)}function k(a){if(!h(a))return!1;for(var b in a)if(a.hasOwnProperty(b))return!1;return!0}function l(){try{return new ErrorEvent(""),!0}catch(a){return!1}}function m(){if(!("fetch"in S))return!1;try{return new Headers,new Request(""),new Response,!0}catch(a){return!1}}function n(a){function b(b,c){var d=a(b)||b;return c?c(d)||d:d}return b}function o(a,b){var c,d;if(f(a.length))for(c in a)s(a,c)&&b.call(null,c,a[c]);else if(d=a.length)for(c=0;c ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function y(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&i(b))for(c=b.split(/\s+/),f=0;f":"anonymous component")+(a._isVue&&a.$options.__file?" at "+a.$options.__file:"")}function P(a,b){if(b=b||window.Vue,b&&b.config){var c=b.config.errorHandler;b.config.errorHandler=function(b,d,e){var f={};"[object Object]"===Object.prototype.toString.call(d)&&(f.componentName=O(d),f.propsData=d.$options.propsData),"undefined"!=typeof e&&(f.lifecycleHook=e),a.captureException(b,{extra:f}),"function"==typeof c&&c.call(this,b,d,e)}}}var Q="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{},R=Object.setPrototypeOf||function(a,b){return a.C=b,a},S=("object"==typeof Reflect&&Reflect.construct||function(a,b,c){var d,e=[null];return e.push.apply(e,b),d=a.bind.apply(a,e),R(new d,c.prototype)},"undefined"!=typeof window?window:"undefined"!=typeof Q?Q:"undefined"!=typeof self?self:{}),T={isObject:c,isError:d,isErrorEvent:e,isUndefined:f,isFunction:g,isPlainObject:h,isString:i,isArray:j,isEmptyObject:k,supportsErrorEvent:l,supportsFetch:m,wrappedCallback:n,each:o,objectMerge:p,truncate:r,objectFrozen:q,hasKey:s,joinRegExp:t,urlencode:u,uuid4:w,htmlTreeAsString:x,htmlElementAsString:y,isSameException:B,isSameStacktrace:C,parseUrl:v,fill:D,safeJoin:E},U={collectWindowErrors:!0,debug:!1},V="undefined"!=typeof window?window:"undefined"!=typeof Q?Q:"undefined"!=typeof self?self:{},W=[].slice,X="?",Y=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;U.report=function(){function a(a){f(),l.push(a)}function b(a){for(var b=l.length-1;b>=0;--b)l[b]===a&&l.splice(b,1)}function c(){g(),l=[]}function d(a,b){var c=null;if(!b||U.collectWindowErrors){for(var d in l)if(l.hasOwnProperty(d))try{l[d].apply(null,[a].concat(W.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function e(a,b,c,e,f){var g=null,i=T.isErrorEvent(f)?f.error:f,k=T.isErrorEvent(a)?a.message:a;if(o)U.computeStackTrace.augmentStackTraceWithInitialElement(o,b,c,k),h();else if(i&&T.isError(i))g=U.computeStackTrace(i),d(g,!0);else{var l,m={url:b,line:c,column:e},n=void 0;if("[object String]"==={}.toString.call(k)){var l=k.match(Y);l&&(n=l[1],k=l[2])}m.func=X,g={name:n,message:k,url:F(),stack:[m]},d(g,!0)}return!!j&&j.apply(this,arguments)}function f(){k||(j=V.onerror,V.onerror=e,k=!0)}function g(){k&&(V.onerror=j,k=!1,j=void 0)}function h(){var a=o,b=m;m=null,o=null,n=null,d.apply(null,[a,!1].concat(b))}function i(a,b){var c=W.call(arguments,1);if(o){if(n===a)return;h()}var d=U.computeStackTrace(a);if(o=d,n=a,m=c,setTimeout(function(){n===a&&h()},d.incomplete?2e3:0),b!==!1)throw a}var j,k,l=[],m=null,n=null,o=null;return i.subscribe=a,i.unsubscribe=b,i.uninstall=c,i}(),U.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,d,e=/^\s*at (.*?) ?\(((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,f=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|\[native).*?|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,g=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,h=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,i=/\((\S*)(?::(\d+))(?::(\d+))\)/,j=a.stack.split("\n"),k=[],l=(/^(.*) is undefined$/.exec(a.message),0),m=j.length;l eval")>-1;o&&(b=h.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==l||c[5]||"undefined"==typeof a.columnNumber||(k[0].column=a.columnNumber+1),d={url:c[3],func:c[1]||X,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}!d.func&&d.line&&(d.func=X),k.push(d)}return k.length?{name:a.name,message:a.message,url:F(),stack:k}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=X),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,e){for(var f,g,h=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,i=[],j={},k=!1,l=c.caller;l&&!k;l=l.caller)if(l!==d&&l!==U.report){if(g={url:null,func:X,line:null,column:null},l.name?g.func=l.name:(f=h.exec(l.toString()))&&(g.func=f[1]),"undefined"==typeof g.func)try{g.func=f.input.substring(0,f.input.indexOf("{"))}catch(m){}j[""+l]?k=!0:j[""+l]=!0,i.push(g)}e&&i.splice(0,e);var n={name:a.name,message:a.message,url:F(),stack:i};return b(n,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),n}function d(b,d){var e=null;d=null==d?0:+d;try{if(e=a(b))return e}catch(f){if(U.debug)throw f}try{if(e=c(b,d+1))return e}catch(f){if(U.debug)throw f}return{name:b.name,message:b.message,url:F()}}return d.augmentStackTraceWithInitialElement=b,d.computeStackTraceFromStackProp=a,d}();var Z=U,$=a(function(a,b){function c(a,b){for(var c=0;c0){var i=c(d,this);~i?d.splice(i+1):d.push(this),~i?f.splice(i,1/0,g):f.push(g),~c(d,h)&&(h=b.call(this,g,h))}else d.push(h);return null==a?h instanceof Error?e(h):h:a.call(this,g,h)}}b=a.exports=d,b.getSerialize=f});G.prototype=new Error,G.prototype.constructor=G;var _=G,aa=function(a,b,c){var d=a[b],e=a;if(b in a){var f="warn"===b?"warning":b;a[b]=function(){var a=[].slice.call(arguments),g=T.safeJoin(a," "),h={level:f,logger:"console",extra:{arguments:a}};"assert"===b?a[0]===!1&&(g="Assertion failed: "+(T.safeJoin(a.slice(1)," ")||"console.assert"),h.extra.arguments=a.slice(1),c&&c(g,h)):c&&c(g,h),d&&Function.prototype.apply.call(d,e,a)}}},ba={wrapMethod:aa},ca=T.isError,da=T.isObject,ea=T.isErrorEvent,fa=T.isUndefined,ga=T.isFunction,ha=T.isString,ia=T.isArray,ja=T.isEmptyObject,ka=T.each,la=T.objectMerge,ma=T.truncate,na=T.objectFrozen,oa=T.hasKey,pa=T.joinRegExp,qa=T.urlencode,ra=T.uuid4,sa=T.htmlTreeAsString,ta=T.isSameException,ua=T.isSameStacktrace,va=T.parseUrl,wa=T.fill,xa=T.supportsFetch,ya=ba.wrapMethod,za="source protocol user pass host port path".split(" "),Aa=/^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/,Ba="undefined"!=typeof window?window:"undefined"!=typeof Q?Q:"undefined"!=typeof self?self:{},Ca=Ba.document,Da=Ba.navigator;J.prototype={VERSION:"3.22.2",debug:!1,TraceKit:Z,config:function(a,b){var c=this;if(c.i)return this.D("error","Error: Raven has already been configured"),c;if(!a)return c;var d=c.m;b&&ka(b,function(a,b){"tags"===a||"extra"===a||"user"===a?c.l[a]=b:d[a]=b}),c.setDSN(a),d.ignoreErrors.push(/^Script error\.?$/),d.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/),d.ignoreErrors=pa(d.ignoreErrors),d.ignoreUrls=!!d.ignoreUrls.length&&pa(d.ignoreUrls),d.whitelistUrls=!!d.whitelistUrls.length&&pa(d.whitelistUrls),d.includePaths=pa(d.includePaths),d.maxBreadcrumbs=Math.max(0,Math.min(d.maxBreadcrumbs||100,100));var e={xhr:!0,console:!0,dom:!0,location:!0,sentry:!0},f=d.autoBreadcrumbs;"[object Object]"==={}.toString.call(f)?f=la(e,f):f!==!1&&(f=e),d.autoBreadcrumbs=f;var g={tryCatch:!0},h=d.instrument;return"[object Object]"==={}.toString.call(h)?h=la(g,h):h!==!1&&(h=g),d.instrument=h,Z.collectWindowErrors=!!d.collectWindowErrors,c},install:function(){var a=this;return a.isSetup()&&!a.p&&(Z.report.subscribe(function(){a.E.apply(a,arguments)}),a.F(),a.m.instrument&&a.m.instrument.tryCatch&&a.G(),a.m.autoBreadcrumbs&&a.H(),a.I(),a.p=!0),Error.stackTraceLimit=a.m.stackTraceLimit,this},setDSN:function(a){var b=this,c=b.J(a),d=c.path.lastIndexOf("/"),e=c.path.substr(1,d);b.K=a,b.j=c.user,b.L=c.pass&&c.pass.substr(1),b.k=c.path.substr(d+1),b.i=b.M(c),b.N=b.i+"/"+e+"api/"+b.k+"/store/",this.A()},context:function(a,b,c){return ga(a)&&(c=b||[],b=a,a=void 0),this.wrap(a,b).apply(this,c)},wrap:function(a,b,c){function d(){var d=[],f=arguments.length,g=!a||a&&a.deep!==!1;for(c&&ga(c)&&c.apply(this,arguments);f--;)d[f]=g?e.wrap(a,arguments[f]):arguments[f];try{return b.apply(this,d)}catch(h){throw e.O(),e.captureException(h,a),h}}var e=this;if(fa(b)&&!ga(a))return a;if(ga(a)&&(b=a,a=void 0),!ga(b))return b;try{if(b.a)return b;if(b.P)return b.P}catch(f){return b}for(var g in b)oa(b,g)&&(d[g]=b[g]);return d.prototype=b.prototype,b.P=d,d.a=!0,d.b=b,d},uninstall:function(){return Z.report.uninstall(),this.Q(),this.R(),this.S(),Error.stackTraceLimit=this.q,this.p=!1,this},captureException:function(a,b){b=la({trimHeadFrames:0},b?b:{});var c=!ca(a),d=!ea(a),e=ea(a)&&!a.error;if(c&&d||e)return this.captureMessage(a,la(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}));ea(a)&&(a=a.error),this.f=a;try{var f=Z.computeStackTrace(a);this.T(f,b)}catch(g){if(a!==g)throw g}return this},captureMessage:function(a,b){if(!this.m.ignoreErrors.test||!this.m.ignoreErrors.test(a)){b=b||{};var c,d=la({message:a+""},b);try{throw new Error(a)}catch(e){c=e}c.name=null;var f=Z.computeStackTrace(c),g=ia(f.stack)&&f.stack[1],h=g&&g.url||"";if((!this.m.ignoreUrls.test||!this.m.ignoreUrls.test(h))&&(!this.m.whitelistUrls.test||this.m.whitelistUrls.test(h))){if(this.m.stacktrace||b&&b.stacktrace){b=la({fingerprint:a,trimHeadFrames:(b.trimHeadFrames||0)+1},b);var i=this.U(f,b);d.stacktrace={frames:i.reverse()}}return this.V(d),this}}},captureBreadcrumb:function(a){var b=la({timestamp:H()/1e3},a);if(ga(this.m.breadcrumbCallback)){var c=this.m.breadcrumbCallback(b);if(da(c)&&!ja(c))b=c;else if(c===!1)return this}return this.w.push(b),this.w.length>this.m.maxBreadcrumbs&&this.w.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.t.push([a,b]),this.p&&this.I(),this},setUserContext:function(a){return this.l.user=a,this},setExtraContext:function(a){return this.W("extra",a),this},setTagsContext:function(a){return this.W("tags",a),this},clearContext:function(){return this.l={},this},getContext:function(){return JSON.parse($(this.l))},setEnvironment:function(a){return this.m.environment=a,this},setRelease:function(a){return this.m.release=a,this},setDataCallback:function(a){var b=this.m.dataCallback;return this.m.dataCallback=I(b,a),this},setBreadcrumbCallback:function(a){var b=this.m.breadcrumbCallback;return this.m.breadcrumbCallback=I(b,a),this},setShouldSendCallback:function(a){var b=this.m.shouldSendCallback;return this.m.shouldSendCallback=I(b,a),this},setTransport:function(a){return this.m.transport=a,this},lastException:function(){return this.f},lastEventId:function(){return this.h},isSetup:function(){return!!this.c&&(!!this.i||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.D("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=Ba.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(Ca){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new _("Missing eventId");var c=a.dsn||this.K;if(!c)throw new _("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.l.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.M(this.J(c)),h=Ca.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(Ca.head||Ca.body).appendChild(h)}},O:function(){var a=this;this.o+=1,setTimeout(function(){a.o-=1})},X:function(a,b){var c,d;if(this.d){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),Ca.createEvent?(c=Ca.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=Ca.createEventObject(),c.eventType=a);for(d in b)oa(b,d)&&(c[d]=b[d]);if(Ca.createEvent)Ca.dispatchEvent(c);else try{Ca.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},Y:function(a){var b=this;return function(c){if(b.Z=null,b.x!==c){b.x=c;var d;try{d=sa(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},$:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.Z;g||a.Y("input")(c),clearTimeout(g),a.Z=setTimeout(function(){a.Z=null},b)}}},_:function(a,b){var c=va(this.y.href),d=va(b),e=va(a);this.z=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},F:function(){var a=this;a.aa=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.a?a.aa.apply(this.b,arguments):a.aa.apply(this,arguments)}},Q:function(){this.aa&&(Function.prototype.toString=this.aa)},G:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b._(b.z,c+""),a.apply(this,arguments)}};wa(history,"pushState",j,d),wa(history,"replaceState",j,d)}if(c.console&&"console"in Ba&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};ka(["debug","info","warn","error","log"],function(a,b){ya(console,b,k)})}},R:function(){for(var a;this.v.length;){a=this.v.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},S:function(){for(var a in this.s)this.r[a]=this.s[a]},I:function(){var a=this;ka(this.t,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},J:function(a){var b=Aa.exec(a),c={},d=7;try{for(;d--;)c[za[d]]=b[d]||""}catch(e){throw new _("Invalid DSN: "+a)}if(c.pass&&!this.m.allowSecretKey)throw new _("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},M:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},E:function(){this.o||this.T.apply(this,arguments)},T:function(a,b){var c=this.U(a,b);this.X("handle",{stackInfo:a,options:b}),this.ca(a.name,a.message,a.url,a.lineno,c,b)},U:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(ka(a.stack,function(b,e){var f=c.da(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.w,0)}),this.l.user&&(a.user=this.l.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||ja(a[b]))&&delete a[b]}),ga(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!ja(a)&&(!ga(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.ja()?void this.D("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() href parsing trick because React Native and other +// environments where DOM might not be available + + +function parseUrl$1(url) { + if (typeof url !== 'string') return {}; + var match = url.match(/^(([^:\/?#]+):)?(\/\/([^\/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?$/); // coerce to undefined values to empty string so we don't get 'undefined' + + var query = match[6] || ''; + var fragment = match[8] || ''; + return { + protocol: match[2], + host: match[4], + path: match[5], + relative: match[5] + query + fragment // everything minus origin + + }; +} + +function uuid4$1() { + var crypto = _window$3.crypto || _window$3.msCrypto; + + if (!isUndefined$1(crypto) && crypto.getRandomValues) { + // Use window.crypto API if available + // eslint-disable-next-line no-undef + var arr = new Uint16Array(8); + crypto.getRandomValues(arr); // set 4 in byte 7 + + arr[3] = arr[3] & 0xfff | 0x4000; // set 2 most significant bits of byte 9 to '10' + + arr[4] = arr[4] & 0x3fff | 0x8000; + + var pad = function pad(num) { + var v = num.toString(16); + + while (v.length < 4) { + v = '0' + v; + } + + return v; + }; + + return pad(arr[0]) + pad(arr[1]) + pad(arr[2]) + pad(arr[3]) + pad(arr[4]) + pad(arr[5]) + pad(arr[6]) + pad(arr[7]); + } else { + // http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/2117523#2117523 + return 'xxxxxxxxxxxx4xxxyxxxxxxxxxxxxxxx'.replace(/[xy]/g, function (c) { + var r = Math.random() * 16 | 0, + v = c === 'x' ? r : r & 0x3 | 0x8; + return v.toString(16); + }); + } +} +/** + * Given a child DOM element, returns a query-selector statement describing that + * and its ancestors + * e.g. [HTMLElement] => body > div > input#foo.btn[name=baz] + * @param elem + * @returns {string} + */ + + +function htmlTreeAsString$1(elem) { + /* eslint no-extra-parens:0*/ + var MAX_TRAVERSE_HEIGHT = 5, + MAX_OUTPUT_LEN = 80, + out = [], + height = 0, + len = 0, + separator = ' > ', + sepLength = separator.length, + nextStr; + + while (elem && height++ < MAX_TRAVERSE_HEIGHT) { + nextStr = htmlElementAsString(elem); // bail out if + // - nextStr is the 'html' element + // - the length of the string that would be created exceeds MAX_OUTPUT_LEN + // (ignore this limit if we are on the first iteration) + + if (nextStr === 'html' || height > 1 && len + out.length * sepLength + nextStr.length >= MAX_OUTPUT_LEN) { + break; + } + + out.push(nextStr); + len += nextStr.length; + elem = elem.parentNode; + } + + return out.reverse().join(separator); +} +/** + * Returns a simple, query-selector representation of a DOM element + * e.g. [HTMLElement] => input#foo.btn[name=baz] + * @param HTMLElement + * @returns {string} + */ + + +function htmlElementAsString(elem) { + var out = [], + className, + classes, + key, + attr, + i; + + if (!elem || !elem.tagName) { + return ''; + } + + out.push(elem.tagName.toLowerCase()); + + if (elem.id) { + out.push('#' + elem.id); + } + + className = elem.className; + + if (className && isString$1(className)) { + classes = className.split(/\s+/); + + for (i = 0; i < classes.length; i++) { + out.push('.' + classes[i]); + } + } + + var attrWhitelist = ['type', 'name', 'title', 'alt']; + + for (i = 0; i < attrWhitelist.length; i++) { + key = attrWhitelist[i]; + attr = elem.getAttribute(key); + + if (attr) { + out.push('[' + key + '="' + attr + '"]'); + } + } + + return out.join(''); +} +/** + * Returns true if either a OR b is truthy, but not both + */ + + +function isOnlyOneTruthy(a, b) { + return !!(!!a ^ !!b); +} +/** + * Returns true if both parameters are undefined + */ + + +function isBothUndefined(a, b) { + return isUndefined$1(a) && isUndefined$1(b); +} +/** + * Returns true if the two input exception interfaces have the same content + */ + + +function isSameException$1(ex1, ex2) { + if (isOnlyOneTruthy(ex1, ex2)) return false; + ex1 = ex1.values[0]; + ex2 = ex2.values[0]; + if (ex1.type !== ex2.type || ex1.value !== ex2.value) return false; // in case both stacktraces are undefined, we can't decide so default to false + + if (isBothUndefined(ex1.stacktrace, ex2.stacktrace)) return false; + return isSameStacktrace$1(ex1.stacktrace, ex2.stacktrace); +} +/** + * Returns true if the two input stack trace interfaces have the same content + */ + + +function isSameStacktrace$1(stack1, stack2) { + if (isOnlyOneTruthy(stack1, stack2)) return false; + var frames1 = stack1.frames; + var frames2 = stack2.frames; // Exit early if frame count differs + + if (frames1.length !== frames2.length) return false; // Iterate through every frame; bail out if anything differs + + var a, b; + + for (var i = 0; i < frames1.length; i++) { + a = frames1[i]; + b = frames2[i]; + if (a.filename !== b.filename || a.lineno !== b.lineno || a.colno !== b.colno || a['function'] !== b['function']) return false; + } + + return true; +} +/** + * Polyfill a method + * @param obj object e.g. `document` + * @param name method name present on object e.g. `addEventListener` + * @param replacement replacement function + * @param track {optional} record instrumentation to an array + */ + + +function fill$1(obj, name, replacement, track) { + var orig = obj[name]; + obj[name] = replacement(orig); + obj[name].__raven__ = true; + obj[name].__orig__ = orig; + + if (track) { + track.push([obj, name, orig]); + } +} +/** + * Join values in array + * @param input array of values to be joined together + * @param delimiter string to be placed in-between values + * @returns {string} + */ + + +function safeJoin(input, delimiter) { + if (!isArray$1(input)) return ''; + var output = []; + + for (var i = 0; i < input.length; i++) { + try { + output.push(String(input[i])); + } catch (e) { + output.push('[value cannot be serialized]'); + } + } + + return output.join(delimiter); +} + +var utils = { + isObject: isObject$1, + isError: isError$1, + isErrorEvent: isErrorEvent$1, + isUndefined: isUndefined$1, + isFunction: isFunction$1, + isPlainObject: isPlainObject, + isString: isString$1, + isArray: isArray$1, + isEmptyObject: isEmptyObject$1, + supportsErrorEvent: supportsErrorEvent, + supportsFetch: supportsFetch$1, + wrappedCallback: wrappedCallback, + each: each$1, + objectMerge: objectMerge$1, + truncate: truncate$1, + objectFrozen: objectFrozen$1, + hasKey: hasKey$1, + joinRegExp: joinRegExp$1, + urlencode: urlencode$1, + uuid4: uuid4$1, + htmlTreeAsString: htmlTreeAsString$1, + htmlElementAsString: htmlElementAsString, + isSameException: isSameException$1, + isSameStacktrace: isSameStacktrace$1, + parseUrl: parseUrl$1, + fill: fill$1, + safeJoin: safeJoin +}; + +/* + TraceKit - Cross brower stack traces + + This was originally forked from github.com/occ/TraceKit, but has since been + largely re-written and is now maintained as part of raven-js. Tests for + this are in test/vendor. + + MIT license +*/ + +var TraceKit = { + collectWindowErrors: true, + debug: false +}; // This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) + +var _window$2 = typeof window !== 'undefined' ? window : typeof commonjsGlobal !== 'undefined' ? commonjsGlobal : typeof self !== 'undefined' ? self : {}; // global reference to slice + + +var _slice = [].slice; +var UNKNOWN_FUNCTION = '?'; // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error#Error_types + +var ERROR_TYPES_RE = /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/; + +function getLocationHref() { + if (typeof document === 'undefined' || document.location == null) return ''; + return document.location.href; +} +/** + * TraceKit.report: cross-browser processing of unhandled exceptions + * + * Syntax: + * TraceKit.report.subscribe(function(stackInfo) { ... }) + * TraceKit.report.unsubscribe(function(stackInfo) { ... }) + * TraceKit.report(exception) + * try { ...code... } catch(ex) { TraceKit.report(ex); } + * + * Supports: + * - Firefox: full stack trace with line numbers, plus column number + * on top frame; column number is not guaranteed + * - Opera: full stack trace with line and column numbers + * - Chrome: full stack trace with line and column numbers + * - Safari: line and column number for the top frame only; some frames + * may be missing, and column number is not guaranteed + * - IE: line and column number for the top frame only; some frames + * may be missing, and column number is not guaranteed + * + * In theory, TraceKit should work on all of the following versions: + * - IE5.5+ (only 8.0 tested) + * - Firefox 0.9+ (only 3.5+ tested) + * - Opera 7+ (only 10.50 tested; versions 9 and earlier may require + * Exceptions Have Stacktrace to be enabled in opera:config) + * - Safari 3+ (only 4+ tested) + * - Chrome 1+ (only 5+ tested) + * - Konqueror 3.5+ (untested) + * + * Requires TraceKit.computeStackTrace. + * + * Tries to catch all unhandled exceptions and report them to the + * subscribed handlers. Please note that TraceKit.report will rethrow the + * exception. This is REQUIRED in order to get a useful stack trace in IE. + * If the exception does not reach the top of the browser, you will only + * get a stack trace from the point where TraceKit.report was called. + * + * Handlers receive a stackInfo object as described in the + * TraceKit.computeStackTrace docs. + */ + + +TraceKit.report = function reportModuleWrapper() { + var handlers = [], + lastArgs = null, + lastException = null, + lastExceptionStack = null; + /** + * Add a crash handler. + * @param {Function} handler + */ + + function subscribe(handler) { + installGlobalHandler(); + handlers.push(handler); + } + /** + * Remove a crash handler. + * @param {Function} handler + */ + + + function unsubscribe(handler) { + for (var i = handlers.length - 1; i >= 0; --i) { + if (handlers[i] === handler) { + handlers.splice(i, 1); + } + } + } + /** + * Remove all crash handlers. + */ + + + function unsubscribeAll() { + uninstallGlobalHandler(); + handlers = []; + } + /** + * Dispatch stack information to all handlers. + * @param {Object.} stack + */ + + + function notifyHandlers(stack, isWindowError) { + var exception = null; + + if (isWindowError && !TraceKit.collectWindowErrors) { + return; + } + + for (var i in handlers) { + if (handlers.hasOwnProperty(i)) { + try { + handlers[i].apply(null, [stack].concat(_slice.call(arguments, 2))); + } catch (inner) { + exception = inner; + } + } + } + + if (exception) { + throw exception; + } + } + + var _oldOnerrorHandler, _onErrorHandlerInstalled; + /** + * Ensures all global unhandled exceptions are recorded. + * Supported by Gecko and IE. + * @param {string} msg Error message. + * @param {string} url URL of script that generated the exception. + * @param {(number|string)} lineNo The line number at which the error + * occurred. + * @param {?(number|string)} colNo The column number at which the error + * occurred. + * @param {?Error} ex The actual Error object. + */ + + + function traceKitWindowOnError(msg, url, lineNo, colNo, ex) { + var stack = null; // If 'ex' is ErrorEvent, get real Error from inside + + var exception = utils.isErrorEvent(ex) ? ex.error : ex; // If 'msg' is ErrorEvent, get real message from inside + + var message = utils.isErrorEvent(msg) ? msg.message : msg; + + if (lastExceptionStack) { + TraceKit.computeStackTrace.augmentStackTraceWithInitialElement(lastExceptionStack, url, lineNo, message); + processLastException(); + } else if (exception && utils.isError(exception)) { + // non-string `exception` arg; attempt to extract stack trace + // New chrome and blink send along a real error object + // Let's just report that like a normal error. + // See: https://mikewest.org/2013/08/debugging-runtime-errors-with-window-onerror + stack = TraceKit.computeStackTrace(exception); + notifyHandlers(stack, true); + } else { + var location = { + url: url, + line: lineNo, + column: colNo + }; + var name = undefined; + var groups; + + if ({}.toString.call(message) === '[object String]') { + var groups = message.match(ERROR_TYPES_RE); + + if (groups) { + name = groups[1]; + message = groups[2]; + } + } + + location.func = UNKNOWN_FUNCTION; + stack = { + name: name, + message: message, + url: getLocationHref(), + stack: [location] + }; + notifyHandlers(stack, true); + } + + if (_oldOnerrorHandler) { + return _oldOnerrorHandler.apply(this, arguments); + } + + return false; + } + + function installGlobalHandler() { + if (_onErrorHandlerInstalled) { + return; + } + + _oldOnerrorHandler = _window$2.onerror; + _window$2.onerror = traceKitWindowOnError; + _onErrorHandlerInstalled = true; + } + + function uninstallGlobalHandler() { + if (!_onErrorHandlerInstalled) { + return; + } + + _window$2.onerror = _oldOnerrorHandler; + _onErrorHandlerInstalled = false; + _oldOnerrorHandler = undefined; + } + + function processLastException() { + var _lastExceptionStack = lastExceptionStack, + _lastArgs = lastArgs; + lastArgs = null; + lastExceptionStack = null; + lastException = null; + notifyHandlers.apply(null, [_lastExceptionStack, false].concat(_lastArgs)); + } + /** + * Reports an unhandled Error to TraceKit. + * @param {Error} ex + * @param {?boolean} rethrow If false, do not re-throw the exception. + * Only used for window.onerror to not cause an infinite loop of + * rethrowing. + */ + + + function report(ex, rethrow) { + var args = _slice.call(arguments, 1); + + if (lastExceptionStack) { + if (lastException === ex) { + return; // already caught by an inner catch block, ignore + } else { + processLastException(); + } + } + + var stack = TraceKit.computeStackTrace(ex); + lastExceptionStack = stack; + lastException = ex; + lastArgs = args; // If the stack trace is incomplete, wait for 2 seconds for + // slow slow IE to see if onerror occurs or not before reporting + // this exception; otherwise, we will end up with an incomplete + // stack trace + + setTimeout(function () { + if (lastException === ex) { + processLastException(); + } + }, stack.incomplete ? 2000 : 0); + + if (rethrow !== false) { + throw ex; // re-throw to propagate to the top level (and cause window.onerror) + } + } + + report.subscribe = subscribe; + report.unsubscribe = unsubscribe; + report.uninstall = unsubscribeAll; + return report; +}(); +/** + * TraceKit.computeStackTrace: cross-browser stack traces in JavaScript + * + * Syntax: + * s = TraceKit.computeStackTrace(exception) // consider using TraceKit.report instead (see below) + * Returns: + * s.name - exception name + * s.message - exception message + * s.stack[i].url - JavaScript or HTML file URL + * s.stack[i].func - function name, or empty for anonymous functions (if guessing did not work) + * s.stack[i].args - arguments passed to the function, if known + * s.stack[i].line - line number, if known + * s.stack[i].column - column number, if known + * + * Supports: + * - Firefox: full stack trace with line numbers and unreliable column + * number on top frame + * - Opera 10: full stack trace with line and column numbers + * - Opera 9-: full stack trace with line numbers + * - Chrome: full stack trace with line and column numbers + * - Safari: line and column number for the topmost stacktrace element + * only + * - IE: no line numbers whatsoever + * + * Tries to guess names of anonymous functions by looking for assignments + * in the source code. In IE and Safari, we have to guess source file names + * by searching for function bodies inside all page scripts. This will not + * work for scripts that are loaded cross-domain. + * Here be dragons: some function names may be guessed incorrectly, and + * duplicate functions may be mismatched. + * + * TraceKit.computeStackTrace should only be used for tracing purposes. + * Logging of unhandled exceptions should be done with TraceKit.report, + * which builds on top of TraceKit.computeStackTrace and provides better + * IE support by utilizing the window.onerror event to retrieve information + * about the top of the stack. + * + * Note: In IE and Safari, no stack trace is recorded on the Error object, + * so computeStackTrace instead walks its *own* chain of callers. + * This means that: + * * in Safari, some methods may be missing from the stack trace; + * * in IE, the topmost function in the stack trace will always be the + * caller of computeStackTrace. + * + * This is okay for tracing (because you are likely to be calling + * computeStackTrace from the function you want to be the topmost element + * of the stack trace anyway), but not okay for logging unhandled + * exceptions (because your catch block will likely be far away from the + * inner function that actually caused the exception). + * + */ + + +TraceKit.computeStackTrace = function computeStackTraceWrapper() { + // Contents of Exception in various browsers. + // + // SAFARI: + // ex.message = Can't find variable: qq + // ex.line = 59 + // ex.sourceId = 580238192 + // ex.sourceURL = http://... + // ex.expressionBeginOffset = 96 + // ex.expressionCaretOffset = 98 + // ex.expressionEndOffset = 98 + // ex.name = ReferenceError + // + // FIREFOX: + // ex.message = qq is not defined + // ex.fileName = http://... + // ex.lineNumber = 59 + // ex.columnNumber = 69 + // ex.stack = ...stack trace... (see the example below) + // ex.name = ReferenceError + // + // CHROME: + // ex.message = qq is not defined + // ex.name = ReferenceError + // ex.type = not_defined + // ex.arguments = ['aa'] + // ex.stack = ...stack trace... + // + // INTERNET EXPLORER: + // ex.message = ... + // ex.name = ReferenceError + // + // OPERA: + // ex.message = ...message... (see the example below) + // ex.name = ReferenceError + // ex.opera#sourceloc = 11 (pretty much useless, duplicates the info in ex.message) + // ex.stacktrace = n/a; see 'opera:config#UserPrefs|Exceptions Have Stacktrace' + + /** + * Computes stack trace information from the stack property. + * Chrome and Gecko use this property. + * @param {Error} ex + * @return {?Object.} Stack trace information. + */ + function computeStackTraceFromStackProp(ex) { + if (typeof ex.stack === 'undefined' || !ex.stack) return; + var chrome = /^\s*at (.*?) ?\(((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i, + gecko = /^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|\[native).*?|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i, + winjs = /^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i, + // Used to additionally parse URL/line/column from eval frames + geckoEval = /(\S+) line (\d+)(?: > eval line \d+)* > eval/i, + chromeEval = /\((\S*)(?::(\d+))(?::(\d+))\)/, + lines = ex.stack.split('\n'), + stack = [], + submatch, + parts, + element, + reference = /^(.*) is undefined$/.exec(ex.message); + + for (var i = 0, j = lines.length; i < j; ++i) { + if (parts = chrome.exec(lines[i])) { + var isNative = parts[2] && parts[2].indexOf('native') === 0; // start of line + + var isEval = parts[2] && parts[2].indexOf('eval') === 0; // start of line + + if (isEval && (submatch = chromeEval.exec(parts[2]))) { + // throw out eval line/column and use top-most line/column number + parts[2] = submatch[1]; // url + + parts[3] = submatch[2]; // line + + parts[4] = submatch[3]; // column + } + + element = { + url: !isNative ? parts[2] : null, + func: parts[1] || UNKNOWN_FUNCTION, + args: isNative ? [parts[2]] : [], + line: parts[3] ? +parts[3] : null, + column: parts[4] ? +parts[4] : null + }; + } else if (parts = winjs.exec(lines[i])) { + element = { + url: parts[2], + func: parts[1] || UNKNOWN_FUNCTION, + args: [], + line: +parts[3], + column: parts[4] ? +parts[4] : null + }; + } else if (parts = gecko.exec(lines[i])) { + var isEval = parts[3] && parts[3].indexOf(' > eval') > -1; + + if (isEval && (submatch = geckoEval.exec(parts[3]))) { + // throw out eval line/column and use top-most line number + parts[3] = submatch[1]; + parts[4] = submatch[2]; + parts[5] = null; // no column when eval + } else if (i === 0 && !parts[5] && typeof ex.columnNumber !== 'undefined') { + // FireFox uses this awesome columnNumber property for its top frame + // Also note, Firefox's column number is 0-based and everything else expects 1-based, + // so adding 1 + // NOTE: this hack doesn't work if top-most frame is eval + stack[0].column = ex.columnNumber + 1; + } + + element = { + url: parts[3], + func: parts[1] || UNKNOWN_FUNCTION, + args: parts[2] ? parts[2].split(',') : [], + line: parts[4] ? +parts[4] : null, + column: parts[5] ? +parts[5] : null + }; + } else { + continue; + } + + if (!element.func && element.line) { + element.func = UNKNOWN_FUNCTION; + } + + stack.push(element); + } + + if (!stack.length) { + return null; + } + + return { + name: ex.name, + message: ex.message, + url: getLocationHref(), + stack: stack + }; + } + /** + * Adds information about the first frame to incomplete stack traces. + * Safari and IE require this to get complete data on the first frame. + * @param {Object.} stackInfo Stack trace information from + * one of the compute* methods. + * @param {string} url The URL of the script that caused an error. + * @param {(number|string)} lineNo The line number of the script that + * caused an error. + * @param {string=} message The error generated by the browser, which + * hopefully contains the name of the object that caused the error. + * @return {boolean} Whether or not the stack information was + * augmented. + */ + + + function augmentStackTraceWithInitialElement(stackInfo, url, lineNo, message) { + var initial = { + url: url, + line: lineNo + }; + + if (initial.url && initial.line) { + stackInfo.incomplete = false; + + if (!initial.func) { + initial.func = UNKNOWN_FUNCTION; + } + + if (stackInfo.stack.length > 0) { + if (stackInfo.stack[0].url === initial.url) { + if (stackInfo.stack[0].line === initial.line) { + return false; // already in stack trace + } else if (!stackInfo.stack[0].line && stackInfo.stack[0].func === initial.func) { + stackInfo.stack[0].line = initial.line; + return false; + } + } + } + + stackInfo.stack.unshift(initial); + stackInfo.partial = true; + return true; + } else { + stackInfo.incomplete = true; + } + + return false; + } + /** + * Computes stack trace information by walking the arguments.caller + * chain at the time the exception occurred. This will cause earlier + * frames to be missed but is the only way to get any stack trace in + * Safari and IE. The top frame is restored by + * {@link augmentStackTraceWithInitialElement}. + * @param {Error} ex + * @return {?Object.} Stack trace information. + */ + + + function computeStackTraceByWalkingCallerChain(ex, depth) { + var functionName = /function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i, + stack = [], + funcs = {}, + recursion = false, + parts, + item; + + for (var curr = computeStackTraceByWalkingCallerChain.caller; curr && !recursion; curr = curr.caller) { + if (curr === computeStackTrace || curr === TraceKit.report) { + // console.log('skipping internal function'); + continue; + } + + item = { + url: null, + func: UNKNOWN_FUNCTION, + line: null, + column: null + }; + + if (curr.name) { + item.func = curr.name; + } else if (parts = functionName.exec(curr.toString())) { + item.func = parts[1]; + } + + if (typeof item.func === 'undefined') { + try { + item.func = parts.input.substring(0, parts.input.indexOf('{')); + } catch (e) {} + } + + if (funcs['' + curr]) { + recursion = true; + } else { + funcs['' + curr] = true; + } + + stack.push(item); + } + + if (depth) { + // console.log('depth is ' + depth); + // console.log('stack is ' + stack.length); + stack.splice(0, depth); + } + + var result = { + name: ex.name, + message: ex.message, + url: getLocationHref(), + stack: stack + }; + augmentStackTraceWithInitialElement(result, ex.sourceURL || ex.fileName, ex.line || ex.lineNumber, ex.message || ex.description); + return result; + } + /** + * Computes a stack trace for an exception. + * @param {Error} ex + * @param {(string|number)=} depth + */ + + + function computeStackTrace(ex, depth) { + var stack = null; + depth = depth == null ? 0 : +depth; + + try { + stack = computeStackTraceFromStackProp(ex); + + if (stack) { + return stack; + } + } catch (e) { + if (TraceKit.debug) { + throw e; + } + } + + try { + stack = computeStackTraceByWalkingCallerChain(ex, depth + 1); + + if (stack) { + return stack; + } + } catch (e) { + if (TraceKit.debug) { + throw e; + } + } + + return { + name: ex.name, + message: ex.message, + url: getLocationHref() + }; + } + + computeStackTrace.augmentStackTraceWithInitialElement = augmentStackTraceWithInitialElement; + computeStackTrace.computeStackTraceFromStackProp = computeStackTraceFromStackProp; + return computeStackTrace; +}(); + +var tracekit = TraceKit; + +var stringify_1 = createCommonjsModule(function (module, exports) { + /* + json-stringify-safe + Like JSON.stringify, but doesn't throw on circular references. + + Originally forked from https://github.com/isaacs/json-stringify-safe + version 5.0.1 on 3/8/2017 and modified to handle Errors serialization + and IE8 compatibility. Tests for this are in test/vendor. + + ISC license: https://github.com/isaacs/json-stringify-safe/blob/master/LICENSE + */ + exports = module.exports = stringify; + exports.getSerialize = serializer; + + function indexOf(haystack, needle) { + for (var i = 0; i < haystack.length; ++i) { + if (haystack[i] === needle) return i; + } + + return -1; + } + + function stringify(obj, replacer, spaces, cycleReplacer) { + return JSON.stringify(obj, serializer(replacer, cycleReplacer), spaces); + } // https://github.com/ftlabs/js-abbreviate/blob/fa709e5f139e7770a71827b1893f22418097fbda/index.js#L95-L106 + + + function stringifyError(value) { + var err = { + // These properties are implemented as magical getters and don't show up in for in + stack: value.stack, + message: value.message, + name: value.name + }; + + for (var i in value) { + if (Object.prototype.hasOwnProperty.call(value, i)) { + err[i] = value[i]; + } + } + + return err; + } + + function serializer(replacer, cycleReplacer) { + var stack = []; + var keys = []; + + if (cycleReplacer == null) { + cycleReplacer = function cycleReplacer(key, value) { + if (stack[0] === value) { + return '[Circular ~]'; + } + + return '[Circular ~.' + keys.slice(0, indexOf(stack, value)).join('.') + ']'; + }; + } + + return function (key, value) { + if (stack.length > 0) { + var thisPos = indexOf(stack, this); + ~thisPos ? stack.splice(thisPos + 1) : stack.push(this); + ~thisPos ? keys.splice(thisPos, Infinity, key) : keys.push(key); + + if (~indexOf(stack, value)) { + value = cycleReplacer.call(this, key, value); + } + } else { + stack.push(value); + } + + return replacer == null ? value instanceof Error ? stringifyError(value) : value : replacer.call(this, key, value); + }; + } +}); +var stringify_2 = stringify_1.getSerialize; + +function RavenConfigError(message) { + this.name = 'RavenConfigError'; + this.message = message; +} + +RavenConfigError.prototype = new Error(); +RavenConfigError.prototype.constructor = RavenConfigError; +var configError = RavenConfigError; + +var wrapMethod = function wrapMethod(console, level, callback) { + var originalConsoleLevel = console[level]; + var originalConsole = console; + + if (!(level in console)) { + return; + } + + var sentryLevel = level === 'warn' ? 'warning' : level; + + console[level] = function () { + var args = [].slice.call(arguments); + var msg = utils.safeJoin(args, ' '); + var data = { + level: sentryLevel, + logger: 'console', + extra: { + arguments: args + } + }; + + if (level === 'assert') { + if (args[0] === false) { + // Default browsers message + msg = 'Assertion failed: ' + (utils.safeJoin(args.slice(1), ' ') || 'console.assert'); + data.extra.arguments = args.slice(1); + callback && callback(msg, data); + } + } else { + callback && callback(msg, data); + } // this fails for some browsers. :( + + + if (originalConsoleLevel) { + // IE9 doesn't allow calling apply on console functions directly + // See: https://stackoverflow.com/questions/5472938/does-ie9-support-console-log-and-is-it-a-real-function#answer-5473193 + Function.prototype.apply.call(originalConsoleLevel, originalConsole, args); + } + }; +}; + +var console$1 = { + wrapMethod: wrapMethod +}; + +/*global XDomainRequest:false */ + +var isError = utils.isError; +var isObject = utils.isObject; +var isErrorEvent = utils.isErrorEvent; +var isUndefined = utils.isUndefined; +var isFunction = utils.isFunction; +var isString = utils.isString; +var isArray = utils.isArray; +var isEmptyObject = utils.isEmptyObject; +var each = utils.each; +var objectMerge = utils.objectMerge; +var truncate = utils.truncate; +var objectFrozen = utils.objectFrozen; +var hasKey = utils.hasKey; +var joinRegExp = utils.joinRegExp; +var urlencode = utils.urlencode; +var uuid4 = utils.uuid4; +var htmlTreeAsString = utils.htmlTreeAsString; +var isSameException = utils.isSameException; +var isSameStacktrace = utils.isSameStacktrace; +var parseUrl = utils.parseUrl; +var fill = utils.fill; +var supportsFetch = utils.supportsFetch; +var wrapConsoleMethod = console$1.wrapMethod; +var dsnKeys = 'source protocol user pass host port path'.split(' '); +var dsnPattern = /^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/; + +function now() { + return +new Date(); +} // This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) + + +var _window$1 = typeof window !== 'undefined' ? window : typeof commonjsGlobal !== 'undefined' ? commonjsGlobal : typeof self !== 'undefined' ? self : {}; + +var _document = _window$1.document; +var _navigator = _window$1.navigator; + +function keepOriginalCallback(original, callback) { + return isFunction(callback) ? function (data) { + return callback(data, original); + } : callback; +} // First, check for JSON support +// If there is no JSON, we no-op the core features of Raven +// since JSON is required to encode the payload + + +function Raven$1() { + this._hasJSON = !!(_typeof(JSON) === 'object' && JSON.stringify); // Raven can run in contexts where there's no document (react-native) + + this._hasDocument = !isUndefined(_document); + this._hasNavigator = !isUndefined(_navigator); + this._lastCapturedException = null; + this._lastData = null; + this._lastEventId = null; + this._globalServer = null; + this._globalKey = null; + this._globalProject = null; + this._globalContext = {}; + this._globalOptions = { + // SENTRY_RELEASE can be injected by https://github.com/getsentry/sentry-webpack-plugin + release: _window$1.SENTRY_RELEASE && _window$1.SENTRY_RELEASE.id, + logger: 'javascript', + ignoreErrors: [], + ignoreUrls: [], + whitelistUrls: [], + includePaths: [], + headers: null, + collectWindowErrors: true, + maxMessageLength: 0, + // By default, truncates URL values to 250 chars + maxUrlLength: 250, + stackTraceLimit: 50, + autoBreadcrumbs: true, + instrument: true, + sampleRate: 1 + }; + this._fetchDefaults = { + method: 'POST', + keepalive: true, + referrerPolicy: 'origin' + }; + this._ignoreOnError = 0; + this._isRavenInstalled = false; + this._originalErrorStackTraceLimit = Error.stackTraceLimit; // capture references to window.console *and* all its methods first + // before the console plugin has a chance to monkey patch + + this._originalConsole = _window$1.console || {}; + this._originalConsoleMethods = {}; + this._plugins = []; + this._startTime = now(); + this._wrappedBuiltIns = []; + this._breadcrumbs = []; + this._lastCapturedEvent = null; + this._keypressTimeout; + this._location = _window$1.location; + this._lastHref = this._location && this._location.href; + + this._resetBackoff(); // eslint-disable-next-line guard-for-in + + + for (var method in this._originalConsole) { + this._originalConsoleMethods[method] = this._originalConsole[method]; + } +} +/* + * The core Raven singleton + * + * @this {Raven} + */ + + +Raven$1.prototype = { + // Hardcode version string so that raven source can be loaded directly via + // webpack (using a build step causes webpack #1617). Grunt verifies that + // this value matches package.json during build. + // See: https://github.com/getsentry/raven-js/issues/465 + VERSION: '3.22.2', + debug: false, + TraceKit: tracekit, + // alias to TraceKit + + /* + * Configure Raven with a DSN and extra options + * + * @param {string} dsn The public Sentry DSN + * @param {object} options Set of global options [optional] + * @return {Raven} + */ + config: function config(dsn, options) { + var self = this; + + if (self._globalServer) { + this._logDebug('error', 'Error: Raven has already been configured'); + + return self; + } + + if (!dsn) return self; + var globalOptions = self._globalOptions; // merge in options + + if (options) { + each(options, function (key, value) { + // tags and extra are special and need to be put into context + if (key === 'tags' || key === 'extra' || key === 'user') { + self._globalContext[key] = value; + } else { + globalOptions[key] = value; + } + }); + } + + self.setDSN(dsn); // "Script error." is hard coded into browsers for errors that it can't read. + // this is the result of a script being pulled in from an external domain and CORS. + + globalOptions.ignoreErrors.push(/^Script error\.?$/); + globalOptions.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/); // join regexp rules into one big rule + + globalOptions.ignoreErrors = joinRegExp(globalOptions.ignoreErrors); + globalOptions.ignoreUrls = globalOptions.ignoreUrls.length ? joinRegExp(globalOptions.ignoreUrls) : false; + globalOptions.whitelistUrls = globalOptions.whitelistUrls.length ? joinRegExp(globalOptions.whitelistUrls) : false; + globalOptions.includePaths = joinRegExp(globalOptions.includePaths); + globalOptions.maxBreadcrumbs = Math.max(0, Math.min(globalOptions.maxBreadcrumbs || 100, 100)); // default and hard limit is 100 + + var autoBreadcrumbDefaults = { + xhr: true, + console: true, + dom: true, + location: true, + sentry: true + }; + var autoBreadcrumbs = globalOptions.autoBreadcrumbs; + + if ({}.toString.call(autoBreadcrumbs) === '[object Object]') { + autoBreadcrumbs = objectMerge(autoBreadcrumbDefaults, autoBreadcrumbs); + } else if (autoBreadcrumbs !== false) { + autoBreadcrumbs = autoBreadcrumbDefaults; + } + + globalOptions.autoBreadcrumbs = autoBreadcrumbs; + var instrumentDefaults = { + tryCatch: true + }; + var instrument = globalOptions.instrument; + + if ({}.toString.call(instrument) === '[object Object]') { + instrument = objectMerge(instrumentDefaults, instrument); + } else if (instrument !== false) { + instrument = instrumentDefaults; + } + + globalOptions.instrument = instrument; + tracekit.collectWindowErrors = !!globalOptions.collectWindowErrors; // return for chaining + + return self; + }, + + /* + * Installs a global window.onerror error handler + * to capture and report uncaught exceptions. + * At this point, install() is required to be called due + * to the way TraceKit is set up. + * + * @return {Raven} + */ + install: function install() { + var self = this; + + if (self.isSetup() && !self._isRavenInstalled) { + tracekit.report.subscribe(function () { + self._handleOnErrorStackInfo.apply(self, arguments); + }); + + self._patchFunctionToString(); + + if (self._globalOptions.instrument && self._globalOptions.instrument.tryCatch) { + self._instrumentTryCatch(); + } + + if (self._globalOptions.autoBreadcrumbs) self._instrumentBreadcrumbs(); // Install all of the plugins + + self._drainPlugins(); + + self._isRavenInstalled = true; + } + + Error.stackTraceLimit = self._globalOptions.stackTraceLimit; + return this; + }, + + /* + * Set the DSN (can be called multiple time unlike config) + * + * @param {string} dsn The public Sentry DSN + */ + setDSN: function setDSN(dsn) { + var self = this, + uri = self._parseDSN(dsn), + lastSlash = uri.path.lastIndexOf('/'), + path = uri.path.substr(1, lastSlash); + + self._dsn = dsn; + self._globalKey = uri.user; + self._globalSecret = uri.pass && uri.pass.substr(1); + self._globalProject = uri.path.substr(lastSlash + 1); + self._globalServer = self._getGlobalServer(uri); + self._globalEndpoint = self._globalServer + '/' + path + 'api/' + self._globalProject + '/store/'; // Reset backoff state since we may be pointing at a + // new project/server + + this._resetBackoff(); + }, + + /* + * Wrap code within a context so Raven can capture errors + * reliably across domains that is executed immediately. + * + * @param {object} options A specific set of options for this context [optional] + * @param {function} func The callback to be immediately executed within the context + * @param {array} args An array of arguments to be called with the callback [optional] + */ + context: function context(options, func, args) { + if (isFunction(options)) { + args = func || []; + func = options; + options = undefined; + } + + return this.wrap(options, func).apply(this, args); + }, + + /* + * Wrap code within a context and returns back a new function to be executed + * + * @param {object} options A specific set of options for this context [optional] + * @param {function} func The function to be wrapped in a new context + * @param {function} func A function to call before the try/catch wrapper [optional, private] + * @return {function} The newly wrapped functions with a context + */ + wrap: function wrap(options, func, _before) { + var self = this; // 1 argument has been passed, and it's not a function + // so just return it + + if (isUndefined(func) && !isFunction(options)) { + return options; + } // options is optional + + + if (isFunction(options)) { + func = options; + options = undefined; + } // At this point, we've passed along 2 arguments, and the second one + // is not a function either, so we'll just return the second argument. + + + if (!isFunction(func)) { + return func; + } // We don't wanna wrap it twice! + + + try { + if (func.__raven__) { + return func; + } // If this has already been wrapped in the past, return that + + + if (func.__raven_wrapper__) { + return func.__raven_wrapper__; + } + } catch (e) { + // Just accessing custom props in some Selenium environments + // can cause a "Permission denied" exception (see raven-js#495). + // Bail on wrapping and return the function as-is (defers to window.onerror). + return func; + } + + function wrapped() { + var args = [], + i = arguments.length, + deep = !options || options && options.deep !== false; + + if (_before && isFunction(_before)) { + _before.apply(this, arguments); + } // Recursively wrap all of a function's arguments that are + // functions themselves. + + + while (i--) { + args[i] = deep ? self.wrap(options, arguments[i]) : arguments[i]; + } + + try { + // Attempt to invoke user-land function + // NOTE: If you are a Sentry user, and you are seeing this stack frame, it + // means Raven caught an error invoking your application code. This is + // expected behavior and NOT indicative of a bug with Raven.js. + return func.apply(this, args); + } catch (e) { + self._ignoreNextOnError(); + + self.captureException(e, options); + throw e; + } + } // copy over properties of the old function + + + for (var property in func) { + if (hasKey(func, property)) { + wrapped[property] = func[property]; + } + } + + wrapped.prototype = func.prototype; + func.__raven_wrapper__ = wrapped; // Signal that this function has been wrapped/filled already + // for both debugging and to prevent it to being wrapped/filled twice + + wrapped.__raven__ = true; + wrapped.__orig__ = func; + return wrapped; + }, + + /* + * Uninstalls the global error handler. + * + * @return {Raven} + */ + uninstall: function uninstall() { + tracekit.report.uninstall(); + + this._unpatchFunctionToString(); + + this._restoreBuiltIns(); + + this._restoreConsole(); + + Error.stackTraceLimit = this._originalErrorStackTraceLimit; + this._isRavenInstalled = false; + return this; + }, + + /* + * Manually capture an exception and send it over to Sentry + * + * @param {error} ex An exception to be logged + * @param {object} options A specific set of options for this error [optional] + * @return {Raven} + */ + captureException: function captureException(ex, options) { + options = objectMerge({ + trimHeadFrames: 0 + }, options ? options : {}); // Cases for sending ex as a message, rather than an exception + + var isNotError = !isError(ex); + var isNotErrorEvent = !isErrorEvent(ex); + var isErrorEventWithoutError = isErrorEvent(ex) && !ex.error; + + if (isNotError && isNotErrorEvent || isErrorEventWithoutError) { + return this.captureMessage(ex, objectMerge(options, { + stacktrace: true, + // if we fall back to captureMessage, default to attempting a new trace + trimHeadFrames: options.trimHeadFrames + 1 + })); + } // Get actual Error from ErrorEvent + + + if (isErrorEvent(ex)) ex = ex.error; // Store the raw exception object for potential debugging and introspection + + this._lastCapturedException = ex; // TraceKit.report will re-raise any exception passed to it, + // which means you have to wrap it in try/catch. Instead, we + // can wrap it here and only re-raise if TraceKit.report + // raises an exception different from the one we asked to + // report on. + + try { + var stack = tracekit.computeStackTrace(ex); + + this._handleStackInfo(stack, options); + } catch (ex1) { + if (ex !== ex1) { + throw ex1; + } + } + + return this; + }, + + /* + * Manually send a message to Sentry + * + * @param {string} msg A plain message to be captured in Sentry + * @param {object} options A specific set of options for this message [optional] + * @return {Raven} + */ + captureMessage: function captureMessage(msg, options) { + // config() automagically converts ignoreErrors from a list to a RegExp so we need to test for an + // early call; we'll error on the side of logging anything called before configuration since it's + // probably something you should see: + if (!!this._globalOptions.ignoreErrors.test && this._globalOptions.ignoreErrors.test(msg)) { + return; + } + + options = options || {}; + var data = objectMerge({ + message: msg + '' // Make sure it's actually a string + + }, options); + var ex; // Generate a "synthetic" stack trace from this point. + // NOTE: If you are a Sentry user, and you are seeing this stack frame, it is NOT indicative + // of a bug with Raven.js. Sentry generates synthetic traces either by configuration, + // or if it catches a thrown object without a "stack" property. + + try { + throw new Error(msg); + } catch (ex1) { + ex = ex1; + } // null exception name so `Error` isn't prefixed to msg + + + ex.name = null; + var stack = tracekit.computeStackTrace(ex); // stack[0] is `throw new Error(msg)` call itself, we are interested in the frame that was just before that, stack[1] + + var initialCall = isArray(stack.stack) && stack.stack[1]; + var fileurl = initialCall && initialCall.url || ''; + + if (!!this._globalOptions.ignoreUrls.test && this._globalOptions.ignoreUrls.test(fileurl)) { + return; + } + + if (!!this._globalOptions.whitelistUrls.test && !this._globalOptions.whitelistUrls.test(fileurl)) { + return; + } + + if (this._globalOptions.stacktrace || options && options.stacktrace) { + options = objectMerge({ + // fingerprint on msg, not stack trace (legacy behavior, could be + // revisited) + fingerprint: msg, + // since we know this is a synthetic trace, the top N-most frames + // MUST be from Raven.js, so mark them as in_app later by setting + // trimHeadFrames + trimHeadFrames: (options.trimHeadFrames || 0) + 1 + }, options); + + var frames = this._prepareFrames(stack, options); + + data.stacktrace = { + // Sentry expects frames oldest to newest + frames: frames.reverse() + }; + } // Fire away! + + + this._send(data); + + return this; + }, + captureBreadcrumb: function captureBreadcrumb(obj) { + var crumb = objectMerge({ + timestamp: now() / 1000 + }, obj); + + if (isFunction(this._globalOptions.breadcrumbCallback)) { + var result = this._globalOptions.breadcrumbCallback(crumb); + + if (isObject(result) && !isEmptyObject(result)) { + crumb = result; + } else if (result === false) { + return this; + } + } + + this._breadcrumbs.push(crumb); + + if (this._breadcrumbs.length > this._globalOptions.maxBreadcrumbs) { + this._breadcrumbs.shift(); + } + + return this; + }, + addPlugin: function addPlugin(plugin + /*arg1, arg2, ... argN*/ + ) { + var pluginArgs = [].slice.call(arguments, 1); + + this._plugins.push([plugin, pluginArgs]); + + if (this._isRavenInstalled) { + this._drainPlugins(); + } + + return this; + }, + + /* + * Set/clear a user to be sent along with the payload. + * + * @param {object} user An object representing user data [optional] + * @return {Raven} + */ + setUserContext: function setUserContext(user) { + // Intentionally do not merge here since that's an unexpected behavior. + this._globalContext.user = user; + return this; + }, + + /* + * Merge extra attributes to be sent along with the payload. + * + * @param {object} extra An object representing extra data [optional] + * @return {Raven} + */ + setExtraContext: function setExtraContext(extra) { + this._mergeContext('extra', extra); + + return this; + }, + + /* + * Merge tags to be sent along with the payload. + * + * @param {object} tags An object representing tags [optional] + * @return {Raven} + */ + setTagsContext: function setTagsContext(tags) { + this._mergeContext('tags', tags); + + return this; + }, + + /* + * Clear all of the context. + * + * @return {Raven} + */ + clearContext: function clearContext() { + this._globalContext = {}; + return this; + }, + + /* + * Get a copy of the current context. This cannot be mutated. + * + * @return {object} copy of context + */ + getContext: function getContext() { + // lol javascript + return JSON.parse(stringify_1(this._globalContext)); + }, + + /* + * Set environment of application + * + * @param {string} environment Typically something like 'production'. + * @return {Raven} + */ + setEnvironment: function setEnvironment(environment) { + this._globalOptions.environment = environment; + return this; + }, + + /* + * Set release version of application + * + * @param {string} release Typically something like a git SHA to identify version + * @return {Raven} + */ + setRelease: function setRelease(release) { + this._globalOptions.release = release; + return this; + }, + + /* + * Set the dataCallback option + * + * @param {function} callback The callback to run which allows the + * data blob to be mutated before sending + * @return {Raven} + */ + setDataCallback: function setDataCallback(callback) { + var original = this._globalOptions.dataCallback; + this._globalOptions.dataCallback = keepOriginalCallback(original, callback); + return this; + }, + + /* + * Set the breadcrumbCallback option + * + * @param {function} callback The callback to run which allows filtering + * or mutating breadcrumbs + * @return {Raven} + */ + setBreadcrumbCallback: function setBreadcrumbCallback(callback) { + var original = this._globalOptions.breadcrumbCallback; + this._globalOptions.breadcrumbCallback = keepOriginalCallback(original, callback); + return this; + }, + + /* + * Set the shouldSendCallback option + * + * @param {function} callback The callback to run which allows + * introspecting the blob before sending + * @return {Raven} + */ + setShouldSendCallback: function setShouldSendCallback(callback) { + var original = this._globalOptions.shouldSendCallback; + this._globalOptions.shouldSendCallback = keepOriginalCallback(original, callback); + return this; + }, + + /** + * Override the default HTTP transport mechanism that transmits data + * to the Sentry server. + * + * @param {function} transport Function invoked instead of the default + * `makeRequest` handler. + * + * @return {Raven} + */ + setTransport: function setTransport(transport) { + this._globalOptions.transport = transport; + return this; + }, + + /* + * Get the latest raw exception that was captured by Raven. + * + * @return {error} + */ + lastException: function lastException() { + return this._lastCapturedException; + }, + + /* + * Get the last event id + * + * @return {string} + */ + lastEventId: function lastEventId() { + return this._lastEventId; + }, + + /* + * Determine if Raven is setup and ready to go. + * + * @return {boolean} + */ + isSetup: function isSetup() { + if (!this._hasJSON) return false; // needs JSON support + + if (!this._globalServer) { + if (!this.ravenNotConfiguredError) { + this.ravenNotConfiguredError = true; + + this._logDebug('error', 'Error: Raven has not been configured.'); + } + + return false; + } + + return true; + }, + afterLoad: function afterLoad() { + // TODO: remove window dependence? + // Attempt to initialize Raven on load + var RavenConfig = _window$1.RavenConfig; + + if (RavenConfig) { + this.config(RavenConfig.dsn, RavenConfig.config).install(); + } + }, + showReportDialog: function showReportDialog(options) { + if (!_document // doesn't work without a document (React native) + ) return; + options = options || {}; + var lastEventId = options.eventId || this.lastEventId(); + + if (!lastEventId) { + throw new configError('Missing eventId'); + } + + var dsn = options.dsn || this._dsn; + + if (!dsn) { + throw new configError('Missing DSN'); + } + + var encode = encodeURIComponent; + var qs = ''; + qs += '?eventId=' + encode(lastEventId); + qs += '&dsn=' + encode(dsn); + var user = options.user || this._globalContext.user; + + if (user) { + if (user.name) qs += '&name=' + encode(user.name); + if (user.email) qs += '&email=' + encode(user.email); + } + + var globalServer = this._getGlobalServer(this._parseDSN(dsn)); + + var script = _document.createElement('script'); + + script.async = true; + script.src = globalServer + '/api/embed/error-page/' + qs; + + (_document.head || _document.body).appendChild(script); + }, + + /**** Private functions ****/ + _ignoreNextOnError: function _ignoreNextOnError() { + var self = this; + this._ignoreOnError += 1; + setTimeout(function () { + // onerror should trigger before setTimeout + self._ignoreOnError -= 1; + }); + }, + _triggerEvent: function _triggerEvent(eventType, options) { + // NOTE: `event` is a native browser thing, so let's avoid conflicting wiht it + var evt, key; + if (!this._hasDocument) return; + options = options || {}; + eventType = 'raven' + eventType.substr(0, 1).toUpperCase() + eventType.substr(1); + + if (_document.createEvent) { + evt = _document.createEvent('HTMLEvents'); + evt.initEvent(eventType, true, true); + } else { + evt = _document.createEventObject(); + evt.eventType = eventType; + } + + for (key in options) { + if (hasKey(options, key)) { + evt[key] = options[key]; + } + } + + if (_document.createEvent) { + // IE9 if standards + _document.dispatchEvent(evt); + } else { + // IE8 regardless of Quirks or Standards + // IE9 if quirks + try { + _document.fireEvent('on' + evt.eventType.toLowerCase(), evt); + } catch (e) {// Do nothing + } + } + }, + + /** + * Wraps addEventListener to capture UI breadcrumbs + * @param evtName the event name (e.g. "click") + * @returns {Function} + * @private + */ + _breadcrumbEventHandler: function _breadcrumbEventHandler(evtName) { + var self = this; + return function (evt) { + // reset keypress timeout; e.g. triggering a 'click' after + // a 'keypress' will reset the keypress debounce so that a new + // set of keypresses can be recorded + self._keypressTimeout = null; // It's possible this handler might trigger multiple times for the same + // event (e.g. event propagation through node ancestors). Ignore if we've + // already captured the event. + + if (self._lastCapturedEvent === evt) return; + self._lastCapturedEvent = evt; // try/catch both: + // - accessing evt.target (see getsentry/raven-js#838, #768) + // - `htmlTreeAsString` because it's complex, and just accessing the DOM incorrectly + // can throw an exception in some circumstances. + + var target; + + try { + target = htmlTreeAsString(evt.target); + } catch (e) { + target = ''; + } + + self.captureBreadcrumb({ + category: 'ui.' + evtName, + // e.g. ui.click, ui.input + message: target + }); + }; + }, + + /** + * Wraps addEventListener to capture keypress UI events + * @returns {Function} + * @private + */ + _keypressEventHandler: function _keypressEventHandler() { + var self = this, + debounceDuration = 1000; // milliseconds + // TODO: if somehow user switches keypress target before + // debounce timeout is triggered, we will only capture + // a single breadcrumb from the FIRST target (acceptable?) + + return function (evt) { + var target; + + try { + target = evt.target; + } catch (e) { + // just accessing event properties can throw an exception in some rare circumstances + // see: https://github.com/getsentry/raven-js/issues/838 + return; + } + + var tagName = target && target.tagName; // only consider keypress events on actual input elements + // this will disregard keypresses targeting body (e.g. tabbing + // through elements, hotkeys, etc) + + if (!tagName || tagName !== 'INPUT' && tagName !== 'TEXTAREA' && !target.isContentEditable) return; // record first keypress in a series, but ignore subsequent + // keypresses until debounce clears + + var timeout = self._keypressTimeout; + + if (!timeout) { + self._breadcrumbEventHandler('input')(evt); + } + + clearTimeout(timeout); + self._keypressTimeout = setTimeout(function () { + self._keypressTimeout = null; + }, debounceDuration); + }; + }, + + /** + * Captures a breadcrumb of type "navigation", normalizing input URLs + * @param to the originating URL + * @param from the target URL + * @private + */ + _captureUrlChange: function _captureUrlChange(from, to) { + var parsedLoc = parseUrl(this._location.href); + var parsedTo = parseUrl(to); + var parsedFrom = parseUrl(from); // because onpopstate only tells you the "new" (to) value of location.href, and + // not the previous (from) value, we need to track the value of the current URL + // state ourselves + + this._lastHref = to; // Use only the path component of the URL if the URL matches the current + // document (almost all the time when using pushState) + + if (parsedLoc.protocol === parsedTo.protocol && parsedLoc.host === parsedTo.host) to = parsedTo.relative; + if (parsedLoc.protocol === parsedFrom.protocol && parsedLoc.host === parsedFrom.host) from = parsedFrom.relative; + this.captureBreadcrumb({ + category: 'navigation', + data: { + to: to, + from: from + } + }); + }, + _patchFunctionToString: function _patchFunctionToString() { + var self = this; + self._originalFunctionToString = Function.prototype.toString; // eslint-disable-next-line no-extend-native + + Function.prototype.toString = function () { + if (typeof this === 'function' && this.__raven__) { + return self._originalFunctionToString.apply(this.__orig__, arguments); + } + + return self._originalFunctionToString.apply(this, arguments); + }; + }, + _unpatchFunctionToString: function _unpatchFunctionToString() { + if (this._originalFunctionToString) { + // eslint-disable-next-line no-extend-native + Function.prototype.toString = this._originalFunctionToString; + } + }, + + /** + * Wrap timer functions and event targets to catch errors and provide + * better metadata. + */ + _instrumentTryCatch: function _instrumentTryCatch() { + var self = this; + var wrappedBuiltIns = self._wrappedBuiltIns; + + function wrapTimeFn(orig) { + return function (fn, t) { + // preserve arity + // Make a copy of the arguments to prevent deoptimization + // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments + var args = new Array(arguments.length); + + for (var i = 0; i < args.length; ++i) { + args[i] = arguments[i]; + } + + var originalCallback = args[0]; + + if (isFunction(originalCallback)) { + args[0] = self.wrap(originalCallback); + } // IE < 9 doesn't support .call/.apply on setInterval/setTimeout, but it + // also supports only two arguments and doesn't care what this is, so we + // can just call the original function directly. + + + if (orig.apply) { + return orig.apply(this, args); + } else { + return orig(args[0], args[1]); + } + }; + } + + var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; + + function wrapEventTarget(global) { + var proto = _window$1[global] && _window$1[global].prototype; + + if (proto && proto.hasOwnProperty && proto.hasOwnProperty('addEventListener')) { + fill(proto, 'addEventListener', function (orig) { + return function (evtName, fn, capture, secure) { + // preserve arity + try { + if (fn && fn.handleEvent) { + fn.handleEvent = self.wrap(fn.handleEvent); + } + } catch (err) {} // can sometimes get 'Permission denied to access property "handle Event' + // More breadcrumb DOM capture ... done here and not in `_instrumentBreadcrumbs` + // so that we don't have more than one wrapper function + + + var before, clickHandler, keypressHandler; + + if (autoBreadcrumbs && autoBreadcrumbs.dom && (global === 'EventTarget' || global === 'Node')) { + // NOTE: generating multiple handlers per addEventListener invocation, should + // revisit and verify we can just use one (almost certainly) + clickHandler = self._breadcrumbEventHandler('click'); + keypressHandler = self._keypressEventHandler(); + + before = function before(evt) { + // need to intercept every DOM event in `before` argument, in case that + // same wrapped method is re-used for different events (e.g. mousemove THEN click) + // see #724 + if (!evt) return; + var eventType; + + try { + eventType = evt.type; + } catch (e) { + // just accessing event properties can throw an exception in some rare circumstances + // see: https://github.com/getsentry/raven-js/issues/838 + return; + } + + if (eventType === 'click') return clickHandler(evt);else if (eventType === 'keypress') return keypressHandler(evt); + }; + } + + return orig.call(this, evtName, self.wrap(fn, undefined, before), capture, secure); + }; + }, wrappedBuiltIns); + fill(proto, 'removeEventListener', function (orig) { + return function (evt, fn, capture, secure) { + try { + fn = fn && (fn.__raven_wrapper__ ? fn.__raven_wrapper__ : fn); + } catch (e) {// ignore, accessing __raven_wrapper__ will throw in some Selenium environments + } + + return orig.call(this, evt, fn, capture, secure); + }; + }, wrappedBuiltIns); + } + } + + fill(_window$1, 'setTimeout', wrapTimeFn, wrappedBuiltIns); + fill(_window$1, 'setInterval', wrapTimeFn, wrappedBuiltIns); + + if (_window$1.requestAnimationFrame) { + fill(_window$1, 'requestAnimationFrame', function (orig) { + return function (cb) { + return orig(self.wrap(cb)); + }; + }, wrappedBuiltIns); + } // event targets borrowed from bugsnag-js: + // https://github.com/bugsnag/bugsnag-js/blob/master/src/bugsnag.js#L666 + + + var eventTargets = ['EventTarget', 'Window', 'Node', 'ApplicationCache', 'AudioTrackList', 'ChannelMergerNode', 'CryptoOperation', 'EventSource', 'FileReader', 'HTMLUnknownElement', 'IDBDatabase', 'IDBRequest', 'IDBTransaction', 'KeyOperation', 'MediaController', 'MessagePort', 'ModalWindow', 'Notification', 'SVGElementInstance', 'Screen', 'TextTrack', 'TextTrackCue', 'TextTrackList', 'WebSocket', 'WebSocketWorker', 'Worker', 'XMLHttpRequest', 'XMLHttpRequestEventTarget', 'XMLHttpRequestUpload']; + + for (var i = 0; i < eventTargets.length; i++) { + wrapEventTarget(eventTargets[i]); + } + }, + + /** + * Instrument browser built-ins w/ breadcrumb capturing + * - XMLHttpRequests + * - DOM interactions (click/typing) + * - window.location changes + * - console + * + * Can be disabled or individually configured via the `autoBreadcrumbs` config option + */ + _instrumentBreadcrumbs: function _instrumentBreadcrumbs() { + var self = this; + var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; + var wrappedBuiltIns = self._wrappedBuiltIns; + + function wrapProp(prop, xhr) { + if (prop in xhr && isFunction(xhr[prop])) { + fill(xhr, prop, function (orig) { + return self.wrap(orig); + }); // intentionally don't track filled methods on XHR instances + } + } + + if (autoBreadcrumbs.xhr && 'XMLHttpRequest' in _window$1) { + var xhrproto = XMLHttpRequest.prototype; + fill(xhrproto, 'open', function (origOpen) { + return function (method, url) { + // preserve arity + // if Sentry key appears in URL, don't capture + if (isString(url) && url.indexOf(self._globalKey) === -1) { + this.__raven_xhr = { + method: method, + url: url, + status_code: null + }; + } + + return origOpen.apply(this, arguments); + }; + }, wrappedBuiltIns); + fill(xhrproto, 'send', function (origSend) { + return function () { + // preserve arity + var xhr = this; + + function onreadystatechangeHandler() { + if (xhr.__raven_xhr && xhr.readyState === 4) { + try { + // touching statusCode in some platforms throws + // an exception + xhr.__raven_xhr.status_code = xhr.status; + } catch (e) { + /* do nothing */ + } + + self.captureBreadcrumb({ + type: 'http', + category: 'xhr', + data: xhr.__raven_xhr + }); + } + } + + var props = ['onload', 'onerror', 'onprogress']; + + for (var j = 0; j < props.length; j++) { + wrapProp(props[j], xhr); + } + + if ('onreadystatechange' in xhr && isFunction(xhr.onreadystatechange)) { + fill(xhr, 'onreadystatechange', function (orig) { + return self.wrap(orig, undefined, onreadystatechangeHandler); + } + /* intentionally don't track this instrumentation */ + ); + } else { + // if onreadystatechange wasn't actually set by the page on this xhr, we + // are free to set our own and capture the breadcrumb + xhr.onreadystatechange = onreadystatechangeHandler; + } + + return origSend.apply(this, arguments); + }; + }, wrappedBuiltIns); + } + + if (autoBreadcrumbs.xhr && supportsFetch()) { + fill(_window$1, 'fetch', function (origFetch) { + return function () { + // preserve arity + // Make a copy of the arguments to prevent deoptimization + // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments + var args = new Array(arguments.length); + + for (var i = 0; i < args.length; ++i) { + args[i] = arguments[i]; + } + + var fetchInput = args[0]; + var method = 'GET'; + var url; + + if (typeof fetchInput === 'string') { + url = fetchInput; + } else if ('Request' in _window$1 && fetchInput instanceof _window$1.Request) { + url = fetchInput.url; + + if (fetchInput.method) { + method = fetchInput.method; + } + } else { + url = '' + fetchInput; + } // if Sentry key appears in URL, don't capture, as it's our own request + + + if (url.indexOf(self._globalKey) !== -1) { + return origFetch.apply(this, args); + } + + if (args[1] && args[1].method) { + method = args[1].method; + } + + var fetchData = { + method: method, + url: url, + status_code: null + }; + return origFetch.apply(this, args).then(function (response) { + fetchData.status_code = response.status; + self.captureBreadcrumb({ + type: 'http', + category: 'fetch', + data: fetchData + }); + return response; + }); + }; + }, wrappedBuiltIns); + } // Capture breadcrumbs from any click that is unhandled / bubbled up all the way + // to the document. Do this before we instrument addEventListener. + + + if (autoBreadcrumbs.dom && this._hasDocument) { + if (_document.addEventListener) { + _document.addEventListener('click', self._breadcrumbEventHandler('click'), false); + + _document.addEventListener('keypress', self._keypressEventHandler(), false); + } else { + // IE8 Compatibility + _document.attachEvent('onclick', self._breadcrumbEventHandler('click')); + + _document.attachEvent('onkeypress', self._keypressEventHandler()); + } + } // record navigation (URL) changes + // NOTE: in Chrome App environment, touching history.pushState, *even inside + // a try/catch block*, will cause Chrome to output an error to console.error + // borrowed from: https://github.com/angular/angular.js/pull/13945/files + + + var chrome = _window$1.chrome; + var isChromePackagedApp = chrome && chrome.app && chrome.app.runtime; + var hasPushAndReplaceState = !isChromePackagedApp && _window$1.history && history.pushState && history.replaceState; + + if (autoBreadcrumbs.location && hasPushAndReplaceState) { + // TODO: remove onpopstate handler on uninstall() + var oldOnPopState = _window$1.onpopstate; + + _window$1.onpopstate = function () { + var currentHref = self._location.href; + + self._captureUrlChange(self._lastHref, currentHref); + + if (oldOnPopState) { + return oldOnPopState.apply(this, arguments); + } + }; + + var historyReplacementFunction = function historyReplacementFunction(origHistFunction) { + // note history.pushState.length is 0; intentionally not declaring + // params to preserve 0 arity + return function () + /* state, title, url */ + { + var url = arguments.length > 2 ? arguments[2] : undefined; // url argument is optional + + if (url) { + // coerce to string (this is what pushState does) + self._captureUrlChange(self._lastHref, url + ''); + } + + return origHistFunction.apply(this, arguments); + }; + }; + + fill(history, 'pushState', historyReplacementFunction, wrappedBuiltIns); + fill(history, 'replaceState', historyReplacementFunction, wrappedBuiltIns); + } + + if (autoBreadcrumbs.console && 'console' in _window$1 && console.log) { + // console + var consoleMethodCallback = function consoleMethodCallback(msg, data) { + self.captureBreadcrumb({ + message: msg, + level: data.level, + category: 'console' + }); + }; + + each(['debug', 'info', 'warn', 'error', 'log'], function (_, level) { + wrapConsoleMethod(console, level, consoleMethodCallback); + }); + } + }, + _restoreBuiltIns: function _restoreBuiltIns() { + // restore any wrapped builtins + var builtin; + + while (this._wrappedBuiltIns.length) { + builtin = this._wrappedBuiltIns.shift(); + var obj = builtin[0], + name = builtin[1], + orig = builtin[2]; + obj[name] = orig; + } + }, + _restoreConsole: function _restoreConsole() { + // eslint-disable-next-line guard-for-in + for (var method in this._originalConsoleMethods) { + this._originalConsole[method] = this._originalConsoleMethods[method]; + } + }, + _drainPlugins: function _drainPlugins() { + var self = this; // FIX ME TODO + + each(this._plugins, function (_, plugin) { + var installer = plugin[0]; + var args = plugin[1]; + installer.apply(self, [self].concat(args)); + }); + }, + _parseDSN: function _parseDSN(str) { + var m = dsnPattern.exec(str), + dsn = {}, + i = 7; + + try { + while (i--) { + dsn[dsnKeys[i]] = m[i] || ''; + } + } catch (e) { + throw new configError('Invalid DSN: ' + str); + } + + if (dsn.pass && !this._globalOptions.allowSecretKey) { + throw new configError('Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key'); + } + + return dsn; + }, + _getGlobalServer: function _getGlobalServer(uri) { + // assemble the endpoint from the uri pieces + var globalServer = '//' + uri.host + (uri.port ? ':' + uri.port : ''); + + if (uri.protocol) { + globalServer = uri.protocol + ':' + globalServer; + } + + return globalServer; + }, + _handleOnErrorStackInfo: function _handleOnErrorStackInfo() { + // if we are intentionally ignoring errors via onerror, bail out + if (!this._ignoreOnError) { + this._handleStackInfo.apply(this, arguments); + } + }, + _handleStackInfo: function _handleStackInfo(stackInfo, options) { + var frames = this._prepareFrames(stackInfo, options); + + this._triggerEvent('handle', { + stackInfo: stackInfo, + options: options + }); + + this._processException(stackInfo.name, stackInfo.message, stackInfo.url, stackInfo.lineno, frames, options); + }, + _prepareFrames: function _prepareFrames(stackInfo, options) { + var self = this; + var frames = []; + + if (stackInfo.stack && stackInfo.stack.length) { + each(stackInfo.stack, function (i, stack) { + var frame = self._normalizeFrame(stack, stackInfo.url); + + if (frame) { + frames.push(frame); + } + }); // e.g. frames captured via captureMessage throw + + if (options && options.trimHeadFrames) { + for (var j = 0; j < options.trimHeadFrames && j < frames.length; j++) { + frames[j].in_app = false; + } + } + } + + frames = frames.slice(0, this._globalOptions.stackTraceLimit); + return frames; + }, + _normalizeFrame: function _normalizeFrame(frame, stackInfoUrl) { + // normalize the frames data + var normalized = { + filename: frame.url, + lineno: frame.line, + colno: frame.column, + function: frame.func || '?' + }; // Case when we don't have any information about the error + // E.g. throwing a string or raw object, instead of an `Error` in Firefox + // Generating synthetic error doesn't add any value here + // + // We should probably somehow let a user know that they should fix their code + + if (!frame.url) { + normalized.filename = stackInfoUrl; // fallback to whole stacks url from onerror handler + } + + normalized.in_app = !( // determine if an exception came from outside of our app + // first we check the global includePaths list. + !!this._globalOptions.includePaths.test && !this._globalOptions.includePaths.test(normalized.filename) || // Now we check for fun, if the function name is Raven or TraceKit + /(Raven|TraceKit)\./.test(normalized['function']) || // finally, we do a last ditch effort and check for raven.min.js + /raven\.(min\.)?js$/.test(normalized.filename)); + return normalized; + }, + _processException: function _processException(type, message, fileurl, lineno, frames, options) { + var prefixedMessage = (type ? type + ': ' : '') + (message || ''); + + if (!!this._globalOptions.ignoreErrors.test && (this._globalOptions.ignoreErrors.test(message) || this._globalOptions.ignoreErrors.test(prefixedMessage))) { + return; + } + + var stacktrace; + + if (frames && frames.length) { + fileurl = frames[0].filename || fileurl; // Sentry expects frames oldest to newest + // and JS sends them as newest to oldest + + frames.reverse(); + stacktrace = { + frames: frames + }; + } else if (fileurl) { + stacktrace = { + frames: [{ + filename: fileurl, + lineno: lineno, + in_app: true + }] + }; + } + + if (!!this._globalOptions.ignoreUrls.test && this._globalOptions.ignoreUrls.test(fileurl)) { + return; + } + + if (!!this._globalOptions.whitelistUrls.test && !this._globalOptions.whitelistUrls.test(fileurl)) { + return; + } + + var data = objectMerge({ + // sentry.interfaces.Exception + exception: { + values: [{ + type: type, + value: message, + stacktrace: stacktrace + }] + }, + culprit: fileurl + }, options); // Fire away! + + this._send(data); + }, + _trimPacket: function _trimPacket(data) { + // For now, we only want to truncate the two different messages + // but this could/should be expanded to just trim everything + var max = this._globalOptions.maxMessageLength; + + if (data.message) { + data.message = truncate(data.message, max); + } + + if (data.exception) { + var exception = data.exception.values[0]; + exception.value = truncate(exception.value, max); + } + + var request = data.request; + + if (request) { + if (request.url) { + request.url = truncate(request.url, this._globalOptions.maxUrlLength); + } + + if (request.Referer) { + request.Referer = truncate(request.Referer, this._globalOptions.maxUrlLength); + } + } + + if (data.breadcrumbs && data.breadcrumbs.values) this._trimBreadcrumbs(data.breadcrumbs); + return data; + }, + + /** + * Truncate breadcrumb values (right now just URLs) + */ + _trimBreadcrumbs: function _trimBreadcrumbs(breadcrumbs) { + // known breadcrumb properties with urls + // TODO: also consider arbitrary prop values that start with (https?)?:// + var urlProps = ['to', 'from', 'url'], + urlProp, + crumb, + data; + + for (var i = 0; i < breadcrumbs.values.length; ++i) { + crumb = breadcrumbs.values[i]; + if (!crumb.hasOwnProperty('data') || !isObject(crumb.data) || objectFrozen(crumb.data)) continue; + data = objectMerge({}, crumb.data); + + for (var j = 0; j < urlProps.length; ++j) { + urlProp = urlProps[j]; + + if (data.hasOwnProperty(urlProp) && data[urlProp]) { + data[urlProp] = truncate(data[urlProp], this._globalOptions.maxUrlLength); + } + } + + breadcrumbs.values[i].data = data; + } + }, + _getHttpData: function _getHttpData() { + if (!this._hasNavigator && !this._hasDocument) return; + var httpData = {}; + + if (this._hasNavigator && _navigator.userAgent) { + httpData.headers = { + 'User-Agent': navigator.userAgent + }; + } // Check in `window` instead of `document`, as we may be in ServiceWorker environment + + + if (_window$1.location && _window$1.location.href) { + httpData.url = _window$1.location.href; + } + + if (this._hasDocument && _document.referrer) { + if (!httpData.headers) httpData.headers = {}; + httpData.headers.Referer = _document.referrer; + } + + return httpData; + }, + _resetBackoff: function _resetBackoff() { + this._backoffDuration = 0; + this._backoffStart = null; + }, + _shouldBackoff: function _shouldBackoff() { + return this._backoffDuration && now() - this._backoffStart < this._backoffDuration; + }, + + /** + * Returns true if the in-process data payload matches the signature + * of the previously-sent data + * + * NOTE: This has to be done at this level because TraceKit can generate + * data from window.onerror WITHOUT an exception object (IE8, IE9, + * other old browsers). This can take the form of an "exception" + * data object with a single frame (derived from the onerror args). + */ + _isRepeatData: function _isRepeatData(current) { + var last = this._lastData; + if (!last || current.message !== last.message || // defined for captureMessage + current.culprit !== last.culprit // defined for captureException/onerror + ) return false; // Stacktrace interface (i.e. from captureMessage) + + if (current.stacktrace || last.stacktrace) { + return isSameStacktrace(current.stacktrace, last.stacktrace); + } else if (current.exception || last.exception) { + // Exception interface (i.e. from captureException/onerror) + return isSameException(current.exception, last.exception); + } + + return true; + }, + _setBackoffState: function _setBackoffState(request) { + // If we are already in a backoff state, don't change anything + if (this._shouldBackoff()) { + return; + } + + var status = request.status; // 400 - project_id doesn't exist or some other fatal + // 401 - invalid/revoked dsn + // 429 - too many requests + + if (!(status === 400 || status === 401 || status === 429)) return; + var retry; + + try { + // If Retry-After is not in Access-Control-Expose-Headers, most + // browsers will throw an exception trying to access it + if (supportsFetch()) { + retry = request.headers.get('Retry-After'); + } else { + retry = request.getResponseHeader('Retry-After'); + } // Retry-After is returned in seconds + + + retry = parseInt(retry, 10) * 1000; + } catch (e) { + /* eslint no-empty:0 */ + } + + this._backoffDuration = retry ? // If Sentry server returned a Retry-After value, use it + retry : // Otherwise, double the last backoff duration (starts at 1 sec) + this._backoffDuration * 2 || 1000; + this._backoffStart = now(); + }, + _send: function _send(data) { + var globalOptions = this._globalOptions; + + var baseData = { + project: this._globalProject, + logger: globalOptions.logger, + platform: 'javascript' + }, + httpData = this._getHttpData(); + + if (httpData) { + baseData.request = httpData; + } // HACK: delete `trimHeadFrames` to prevent from appearing in outbound payload + + + if (data.trimHeadFrames) delete data.trimHeadFrames; + data = objectMerge(baseData, data); // Merge in the tags and extra separately since objectMerge doesn't handle a deep merge + + data.tags = objectMerge(objectMerge({}, this._globalContext.tags), data.tags); + data.extra = objectMerge(objectMerge({}, this._globalContext.extra), data.extra); // Send along our own collected metadata with extra + + data.extra['session:duration'] = now() - this._startTime; + + if (this._breadcrumbs && this._breadcrumbs.length > 0) { + // intentionally make shallow copy so that additions + // to breadcrumbs aren't accidentally sent in this request + data.breadcrumbs = { + values: [].slice.call(this._breadcrumbs, 0) + }; + } + + if (this._globalContext.user) { + // sentry.interfaces.User + data.user = this._globalContext.user; + } // Include the environment if it's defined in globalOptions + + + if (globalOptions.environment) data.environment = globalOptions.environment; // Include the release if it's defined in globalOptions + + if (globalOptions.release) data.release = globalOptions.release; // Include server_name if it's defined in globalOptions + + if (globalOptions.serverName) data.server_name = globalOptions.serverName; // Cleanup empty properties before sending them to the server + + Object.keys(data).forEach(function (key) { + if (data[key] == null || data[key] === '' || isEmptyObject(data[key])) { + delete data[key]; + } + }); + + if (isFunction(globalOptions.dataCallback)) { + data = globalOptions.dataCallback(data) || data; + } // Why?????????? + + + if (!data || isEmptyObject(data)) { + return; + } // Check if the request should be filtered or not + + + if (isFunction(globalOptions.shouldSendCallback) && !globalOptions.shouldSendCallback(data)) { + return; + } // Backoff state: Sentry server previously responded w/ an error (e.g. 429 - too many requests), + // so drop requests until "cool-off" period has elapsed. + + + if (this._shouldBackoff()) { + this._logDebug('warn', 'Raven dropped error due to backoff: ', data); + + return; + } + + if (typeof globalOptions.sampleRate === 'number') { + if (Math.random() < globalOptions.sampleRate) { + this._sendProcessedPayload(data); + } + } else { + this._sendProcessedPayload(data); + } + }, + _getUuid: function _getUuid() { + return uuid4(); + }, + _sendProcessedPayload: function _sendProcessedPayload(data, callback) { + var self = this; + var globalOptions = this._globalOptions; + if (!this.isSetup()) return; // Try and clean up the packet before sending by truncating long values + + data = this._trimPacket(data); // ideally duplicate error testing should occur *before* dataCallback/shouldSendCallback, + // but this would require copying an un-truncated copy of the data packet, which can be + // arbitrarily deep (extra_data) -- could be worthwhile? will revisit + + if (!this._globalOptions.allowDuplicates && this._isRepeatData(data)) { + this._logDebug('warn', 'Raven dropped repeat event: ', data); + + return; + } // Send along an event_id if not explicitly passed. + // This event_id can be used to reference the error within Sentry itself. + // Set lastEventId after we know the error should actually be sent + + + this._lastEventId = data.event_id || (data.event_id = this._getUuid()); // Store outbound payload after trim + + this._lastData = data; + + this._logDebug('debug', 'Raven about to send:', data); + + var auth = { + sentry_version: '7', + sentry_client: 'raven-js/' + this.VERSION, + sentry_key: this._globalKey + }; + + if (this._globalSecret) { + auth.sentry_secret = this._globalSecret; + } + + var exception = data.exception && data.exception.values[0]; // only capture 'sentry' breadcrumb is autoBreadcrumbs is truthy + + if (this._globalOptions.autoBreadcrumbs && this._globalOptions.autoBreadcrumbs.sentry) { + this.captureBreadcrumb({ + category: 'sentry', + message: exception ? (exception.type ? exception.type + ': ' : '') + exception.value : data.message, + event_id: data.event_id, + level: data.level || 'error' // presume error unless specified + + }); + } + + var url = this._globalEndpoint; + + (globalOptions.transport || this._makeRequest).call(this, { + url: url, + auth: auth, + data: data, + options: globalOptions, + onSuccess: function success() { + self._resetBackoff(); + + self._triggerEvent('success', { + data: data, + src: url + }); + + callback && callback(); + }, + onError: function failure(error) { + self._logDebug('error', 'Raven transport failed to send: ', error); + + if (error.request) { + self._setBackoffState(error.request); + } + + self._triggerEvent('failure', { + data: data, + src: url + }); + + error = error || new Error('Raven send failed (no additional details provided)'); + callback && callback(error); + } + }); + }, + _makeRequest: function _makeRequest(opts) { + // Auth is intentionally sent as part of query string (NOT as custom HTTP header) to avoid preflight CORS requests + var url = opts.url + '?' + urlencode(opts.auth); + var evaluatedHeaders = null; + var evaluatedFetchParameters = {}; + + if (opts.options.headers) { + evaluatedHeaders = this._evaluateHash(opts.options.headers); + } + + if (opts.options.fetchParameters) { + evaluatedFetchParameters = this._evaluateHash(opts.options.fetchParameters); + } + + if (supportsFetch()) { + evaluatedFetchParameters.body = stringify_1(opts.data); + var defaultFetchOptions = objectMerge({}, this._fetchDefaults); + var fetchOptions = objectMerge(defaultFetchOptions, evaluatedFetchParameters); + + if (evaluatedHeaders) { + fetchOptions.headers = evaluatedHeaders; + } + + return _window$1.fetch(url, fetchOptions).then(function (response) { + if (response.ok) { + opts.onSuccess && opts.onSuccess(); + } else { + var error = new Error('Sentry error code: ' + response.status); // It's called request only to keep compatibility with XHR interface + // and not add more redundant checks in setBackoffState method + + error.request = response; + opts.onError && opts.onError(error); + } + })['catch'](function () { + opts.onError && opts.onError(new Error('Sentry error code: network unavailable')); + }); + } + + var request = _window$1.XMLHttpRequest && new _window$1.XMLHttpRequest(); + if (!request) return; // if browser doesn't support CORS (e.g. IE7), we are out of luck + + var hasCORS = 'withCredentials' in request || typeof XDomainRequest !== 'undefined'; + if (!hasCORS) return; + + if ('withCredentials' in request) { + request.onreadystatechange = function () { + if (request.readyState !== 4) { + return; + } else if (request.status === 200) { + opts.onSuccess && opts.onSuccess(); + } else if (opts.onError) { + var err = new Error('Sentry error code: ' + request.status); + err.request = request; + opts.onError(err); + } + }; + } else { + request = new XDomainRequest(); // xdomainrequest cannot go http -> https (or vice versa), + // so always use protocol relative + + url = url.replace(/^https?:/, ''); // onreadystatechange not supported by XDomainRequest + + if (opts.onSuccess) { + request.onload = opts.onSuccess; + } + + if (opts.onError) { + request.onerror = function () { + var err = new Error('Sentry error code: XDomainRequest'); + err.request = request; + opts.onError(err); + }; + } + } + + request.open('POST', url); + + if (evaluatedHeaders) { + each(evaluatedHeaders, function (key, value) { + request.setRequestHeader(key, value); + }); + } + + request.send(stringify_1(opts.data)); + }, + _evaluateHash: function _evaluateHash(hash) { + var evaluated = {}; + + for (var key in hash) { + if (hash.hasOwnProperty(key)) { + var value = hash[key]; + evaluated[key] = typeof value === 'function' ? value() : value; + } + } + + return evaluated; + }, + _logDebug: function _logDebug(level) { + if (this._originalConsoleMethods[level] && this.debug) { + // In IE<10 console methods do not have their own 'apply' method + Function.prototype.apply.call(this._originalConsoleMethods[level], this._originalConsole, [].slice.call(arguments, 1)); + } + }, + _mergeContext: function _mergeContext(key, context) { + if (isUndefined(context)) { + delete this._globalContext[key]; + } else { + this._globalContext[key] = objectMerge(this._globalContext[key] || {}, context); + } + } +}; // Deprecations + +Raven$1.prototype.setUser = Raven$1.prototype.setUserContext; +Raven$1.prototype.setReleaseContext = Raven$1.prototype.setRelease; +var raven = Raven$1; + +/** + * Enforces a single instance of the Raven client, and the + * main entry point for Raven. If you are a consumer of the + * Raven library, you SHOULD load this file (vs raven.js). + **/ +// This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) + +var _window = typeof window !== 'undefined' ? window : typeof commonjsGlobal !== 'undefined' ? commonjsGlobal : typeof self !== 'undefined' ? self : {}; + +var _Raven = _window.Raven; +var Raven = new raven(); +/* + * Allow multiple versions of Raven to be installed. + * Strip Raven from the global context and returns the instance. + * + * @return {Raven} + */ + +Raven.noConflict = function () { + _window.Raven = _Raven; + return Raven; +}; + +Raven.afterLoad(); +var singleton = Raven; + +/** + * Angular.js plugin + * + * Provides an $exceptionHandler for Angular.js + */ + +var wrappedCallback$1 = utils.wrappedCallback; // See https://github.com/angular/angular.js/blob/v1.4.7/src/minErr.js + +var angularPattern = /^\[((?:[$a-zA-Z0-9]+:)?(?:[$a-zA-Z0-9]+))\] (.*?)\n?(\S+)$/; +var moduleName = 'ngRaven'; + +function angularPlugin(Raven, angular) { + angular = angular || window.angular; + if (!angular) return; + + function RavenProvider() { + this.$get = ['$window', function ($window) { + return Raven; + }]; + } + + function ExceptionHandlerProvider($provide) { + $provide.decorator('$exceptionHandler', ['Raven', '$delegate', exceptionHandler]); + } + + function exceptionHandler(R, $delegate) { + return function (ex, cause) { + R.captureException(ex, { + extra: { + cause: cause + } + }); + $delegate(ex, cause); + }; + } + + angular.module(moduleName, []).provider('Raven', RavenProvider).config(['$provide', ExceptionHandlerProvider]); + Raven.setDataCallback(wrappedCallback$1(function (data) { + return angularPlugin._normalizeData(data); + })); +} + +angularPlugin._normalizeData = function (data) { + // We only care about mutating an exception + var exception = data.exception; + + if (exception) { + exception = exception.values[0]; + var matches = angularPattern.exec(exception.value); + + if (matches) { + // This type now becomes something like: $rootScope:inprog + exception.type = matches[1]; + exception.value = matches[2]; + data.message = exception.type + ': ' + exception.value; // auto set a new tag specifically for the angular error url + + data.extra.angularDocs = matches[3].substr(0, 250); + } + } + + return data; +}; + +angularPlugin.moduleName = moduleName; +var angular = angularPlugin; + +/** + * console plugin + * + * Monkey patches console.* calls into Sentry messages with + * their appropriate log levels. (Experimental) + * + * Options: + * + * `levels`: An array of levels (methods on `console`) to report to Sentry. + * Defaults to debug, info, warn, and error. + */ + +var wrapConsoleMethod$1 = console$1.wrapMethod; + +function consolePlugin(Raven, console, pluginOptions) { + console = console || window.console || {}; + pluginOptions = pluginOptions || {}; + var logLevels = pluginOptions.levels || ['debug', 'info', 'warn', 'error']; + if ('assert' in console) logLevels.push('assert'); + + var callback = function callback(msg, data) { + Raven.captureMessage(msg, data); + }; + + var level = logLevels.pop(); + + while (level) { + wrapConsoleMethod$1(console, level, callback); + level = logLevels.pop(); + } +} + +var console$3 = consolePlugin; + +/** + * Ember.js plugin + * + * Patches event handler callbacks and ajax callbacks. + */ +function emberPlugin(Raven, Ember) { + Ember = Ember || window.Ember; // quit if Ember isn't on the page + + if (!Ember) return; + var _oldOnError = Ember.onerror; + + Ember.onerror = function EmberOnError(error) { + Raven.captureException(error); + + if (typeof _oldOnError === 'function') { + _oldOnError.call(this, error); + } + }; + + Ember.RSVP.on('error', function (reason) { + if (reason instanceof Error) { + Raven.captureException(reason, { + extra: { + context: 'Unhandled Promise error detected' + } + }); + } else { + Raven.captureMessage('Unhandled Promise error detected', { + extra: { + reason: reason + } + }); + } + }); +} + +var ember = emberPlugin; + +/*global define*/ + +/** + * require.js plugin + * + * Automatically wrap define/require callbacks. (Experimental) + */ + +function requirePlugin(Raven) { + if (typeof undefined === 'function' && undefined.amd) { + window.define = Raven.wrap({ + deep: false + }, undefined); + window.require = Raven.wrap({ + deep: false + }, commonjsRequire); + } +} + +var require_1 = requirePlugin; + +/* This file was generated by './scripts/generate-plugin-combinations.js'! */ + +singleton.addPlugin(angular).addPlugin(console$3).addPlugin(ember).addPlugin(require_1); +var angular_console_ember_require = {}; + +return angular_console_ember_require; + +}))); diff --git a/dist/angular,console,ember,require/raven.min.js b/dist/angular,console,ember,require/raven.min.js new file mode 100644 index 000000000000..969c034bc5d9 --- /dev/null +++ b/dist/angular,console,ember,require/raven.min.js @@ -0,0 +1,3 @@ +/*! Raven.js 3.22.2 (1b6187b) | github.com/getsentry/raven-js */ +!function(a,b){"object"==typeof exports&&"undefined"!=typeof module?module.exports=b():"function"==typeof define&&define.amd?define(b):a.Raven=b()}(this,function(){"use strict";function a(a,b){return b={exports:{}},a(b,b.exports),b.exports}function b(a){return(b="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(a){return typeof a}:function(a){return a&&"function"==typeof Symbol&&a.constructor===Symbol&&a!==Symbol.prototype?"symbol":typeof a})(a)}function c(a){return"object"===b(a)&&null!==a}function d(a){switch({}.toString.call(a)){case"[object Error]":return!0;case"[object Exception]":return!0;case"[object DOMException]":return!0;default:return a instanceof Error}}function e(a){return l()&&"[object ErrorEvent]"==={}.toString.call(a)}function f(a){return void 0===a}function g(a){return"function"==typeof a}function h(a){return"[object Object]"===Object.prototype.toString.call(a)}function i(a){return"[object String]"===Object.prototype.toString.call(a)}function j(a){return"[object Array]"===Object.prototype.toString.call(a)}function k(a){if(!h(a))return!1;for(var b in a)if(a.hasOwnProperty(b))return!1;return!0}function l(){try{return new ErrorEvent(""),!0}catch(a){return!1}}function m(){if(!("fetch"in Q))return!1;try{return new Headers,new Request(""),new Response,!0}catch(a){return!1}}function n(a){function b(b,c){var d=a(b)||b;return c?c(d)||d:d}return b}function o(a,b){var c,d;if(f(a.length))for(c in a)s(a,c)&&b.call(null,c,a[c]);else if(d=a.length)for(c=0;c ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function y(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&i(b))for(c=b.split(/\s+/),f=0;f=0;--b)l[b]===a&&l.splice(b,1)}function c(){g(),l=[]}function d(a,b){var c=null;if(!b||S.collectWindowErrors){for(var d in l)if(l.hasOwnProperty(d))try{l[d].apply(null,[a].concat(U.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function e(a,b,c,e,f){var g=null,i=R.isErrorEvent(f)?f.error:f,k=R.isErrorEvent(a)?a.message:a;if(o)S.computeStackTrace.augmentStackTraceWithInitialElement(o,b,c,k),h();else if(i&&R.isError(i))g=S.computeStackTrace(i),d(g,!0);else{var l,m={url:b,line:c,column:e},n=void 0;if("[object String]"==={}.toString.call(k)){var l=k.match(W);l&&(n=l[1],k=l[2])}m.func=V,g={name:n,message:k,url:F(),stack:[m]},d(g,!0)}return!!j&&j.apply(this,arguments)}function f(){k||(j=T.onerror,T.onerror=e,k=!0)}function g(){k&&(T.onerror=j,k=!1,j=void 0)}function h(){var a=o,b=m;m=null,o=null,n=null,d.apply(null,[a,!1].concat(b))}function i(a,b){var c=U.call(arguments,1);if(o){if(n===a)return;h()}var d=S.computeStackTrace(a);if(o=d,n=a,m=c,setTimeout(function(){n===a&&h()},d.incomplete?2e3:0),b!==!1)throw a}var j,k,l=[],m=null,n=null,o=null;return i.subscribe=a,i.unsubscribe=b,i.uninstall=c,i}(),S.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,d,e=/^\s*at (.*?) ?\(((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,f=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|\[native).*?|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,g=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,h=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,i=/\((\S*)(?::(\d+))(?::(\d+))\)/,j=a.stack.split("\n"),k=[],l=(/^(.*) is undefined$/.exec(a.message),0),m=j.length;l eval")>-1;o&&(b=h.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==l||c[5]||"undefined"==typeof a.columnNumber||(k[0].column=a.columnNumber+1),d={url:c[3],func:c[1]||V,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}!d.func&&d.line&&(d.func=V),k.push(d)}return k.length?{name:a.name,message:a.message,url:F(),stack:k}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=V),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,e){for(var f,g,h=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,i=[],j={},k=!1,l=c.caller;l&&!k;l=l.caller)if(l!==d&&l!==S.report){if(g={url:null,func:V,line:null,column:null},l.name?g.func=l.name:(f=h.exec(l.toString()))&&(g.func=f[1]),"undefined"==typeof g.func)try{g.func=f.input.substring(0,f.input.indexOf("{"))}catch(m){}j[""+l]?k=!0:j[""+l]=!0,i.push(g)}e&&i.splice(0,e);var n={name:a.name,message:a.message,url:F(),stack:i};return b(n,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),n}function d(b,d){var e=null;d=null==d?0:+d;try{if(e=a(b))return e}catch(f){if(S.debug)throw f}try{if(e=c(b,d+1))return e}catch(f){if(S.debug)throw f}return{name:b.name,message:b.message,url:F()}}return d.augmentStackTraceWithInitialElement=b,d.computeStackTraceFromStackProp=a,d}();var X=S,Y=a(function(a,b){function c(a,b){for(var c=0;c0){var i=c(d,this);~i?d.splice(i+1):d.push(this),~i?f.splice(i,1/0,g):f.push(g),~c(d,h)&&(h=b.call(this,g,h))}else d.push(h);return null==a?h instanceof Error?e(h):h:a.call(this,g,h)}}b=a.exports=d,b.getSerialize=f});G.prototype=new Error,G.prototype.constructor=G;var Z=G,$=function(a,b,c){var d=a[b],e=a;if(b in a){var f="warn"===b?"warning":b;a[b]=function(){var a=[].slice.call(arguments),g=R.safeJoin(a," "),h={level:f,logger:"console",extra:{arguments:a}};"assert"===b?a[0]===!1&&(g="Assertion failed: "+(R.safeJoin(a.slice(1)," ")||"console.assert"),h.extra.arguments=a.slice(1),c&&c(g,h)):c&&c(g,h),d&&Function.prototype.apply.call(d,e,a)}}},_={wrapMethod:$},aa=R.isError,ba=R.isObject,ca=R.isErrorEvent,da=R.isUndefined,ea=R.isFunction,fa=R.isString,ga=R.isArray,ha=R.isEmptyObject,ia=R.each,ja=R.objectMerge,ka=R.truncate,la=R.objectFrozen,ma=R.hasKey,na=R.joinRegExp,oa=R.urlencode,pa=R.uuid4,qa=R.htmlTreeAsString,ra=R.isSameException,sa=R.isSameStacktrace,ta=R.parseUrl,ua=R.fill,va=R.supportsFetch,wa=_.wrapMethod,xa="source protocol user pass host port path".split(" "),ya=/^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/,za="undefined"!=typeof window?window:"undefined"!=typeof O?O:"undefined"!=typeof self?self:{},Aa=za.document,Ba=za.navigator;J.prototype={VERSION:"3.22.2",debug:!1,TraceKit:X,config:function(a,b){var c=this;if(c.i)return this.D("error","Error: Raven has already been configured"),c;if(!a)return c;var d=c.m;b&&ia(b,function(a,b){"tags"===a||"extra"===a||"user"===a?c.l[a]=b:d[a]=b}),c.setDSN(a),d.ignoreErrors.push(/^Script error\.?$/),d.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/),d.ignoreErrors=na(d.ignoreErrors),d.ignoreUrls=!!d.ignoreUrls.length&&na(d.ignoreUrls),d.whitelistUrls=!!d.whitelistUrls.length&&na(d.whitelistUrls),d.includePaths=na(d.includePaths),d.maxBreadcrumbs=Math.max(0,Math.min(d.maxBreadcrumbs||100,100));var e={xhr:!0,console:!0,dom:!0,location:!0,sentry:!0},f=d.autoBreadcrumbs;"[object Object]"==={}.toString.call(f)?f=ja(e,f):f!==!1&&(f=e),d.autoBreadcrumbs=f;var g={tryCatch:!0},h=d.instrument;return"[object Object]"==={}.toString.call(h)?h=ja(g,h):h!==!1&&(h=g),d.instrument=h,X.collectWindowErrors=!!d.collectWindowErrors,c},install:function(){var a=this;return a.isSetup()&&!a.p&&(X.report.subscribe(function(){a.E.apply(a,arguments)}),a.F(),a.m.instrument&&a.m.instrument.tryCatch&&a.G(),a.m.autoBreadcrumbs&&a.H(),a.I(),a.p=!0),Error.stackTraceLimit=a.m.stackTraceLimit,this},setDSN:function(a){var b=this,c=b.J(a),d=c.path.lastIndexOf("/"),e=c.path.substr(1,d);b.K=a,b.j=c.user,b.L=c.pass&&c.pass.substr(1),b.k=c.path.substr(d+1),b.i=b.M(c),b.N=b.i+"/"+e+"api/"+b.k+"/store/",this.A()},context:function(a,b,c){return ea(a)&&(c=b||[],b=a,a=void 0),this.wrap(a,b).apply(this,c)},wrap:function(a,b,c){function d(){var d=[],f=arguments.length,g=!a||a&&a.deep!==!1;for(c&&ea(c)&&c.apply(this,arguments);f--;)d[f]=g?e.wrap(a,arguments[f]):arguments[f];try{return b.apply(this,d)}catch(h){throw e.O(),e.captureException(h,a),h}}var e=this;if(da(b)&&!ea(a))return a;if(ea(a)&&(b=a,a=void 0),!ea(b))return b;try{if(b.a)return b;if(b.P)return b.P}catch(f){return b}for(var g in b)ma(b,g)&&(d[g]=b[g]);return d.prototype=b.prototype,b.P=d,d.a=!0,d.b=b,d},uninstall:function(){return X.report.uninstall(),this.Q(),this.R(),this.S(),Error.stackTraceLimit=this.q,this.p=!1,this},captureException:function(a,b){b=ja({trimHeadFrames:0},b?b:{});var c=!aa(a),d=!ca(a),e=ca(a)&&!a.error;if(c&&d||e)return this.captureMessage(a,ja(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}));ca(a)&&(a=a.error),this.f=a;try{var f=X.computeStackTrace(a);this.T(f,b)}catch(g){if(a!==g)throw g}return this},captureMessage:function(a,b){if(!this.m.ignoreErrors.test||!this.m.ignoreErrors.test(a)){b=b||{};var c,d=ja({message:a+""},b);try{throw new Error(a)}catch(e){c=e}c.name=null;var f=X.computeStackTrace(c),g=ga(f.stack)&&f.stack[1],h=g&&g.url||"";if((!this.m.ignoreUrls.test||!this.m.ignoreUrls.test(h))&&(!this.m.whitelistUrls.test||this.m.whitelistUrls.test(h))){if(this.m.stacktrace||b&&b.stacktrace){b=ja({fingerprint:a,trimHeadFrames:(b.trimHeadFrames||0)+1},b);var i=this.U(f,b);d.stacktrace={frames:i.reverse()}}return this.V(d),this}}},captureBreadcrumb:function(a){var b=ja({timestamp:H()/1e3},a);if(ea(this.m.breadcrumbCallback)){var c=this.m.breadcrumbCallback(b);if(ba(c)&&!ha(c))b=c;else if(c===!1)return this}return this.w.push(b),this.w.length>this.m.maxBreadcrumbs&&this.w.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.t.push([a,b]),this.p&&this.I(),this},setUserContext:function(a){return this.l.user=a,this},setExtraContext:function(a){return this.W("extra",a),this},setTagsContext:function(a){return this.W("tags",a),this},clearContext:function(){return this.l={},this},getContext:function(){return JSON.parse(Y(this.l))},setEnvironment:function(a){return this.m.environment=a,this},setRelease:function(a){return this.m.release=a,this},setDataCallback:function(a){var b=this.m.dataCallback;return this.m.dataCallback=I(b,a),this},setBreadcrumbCallback:function(a){var b=this.m.breadcrumbCallback;return this.m.breadcrumbCallback=I(b,a),this},setShouldSendCallback:function(a){var b=this.m.shouldSendCallback;return this.m.shouldSendCallback=I(b,a),this},setTransport:function(a){return this.m.transport=a,this},lastException:function(){return this.f},lastEventId:function(){return this.h},isSetup:function(){return!!this.c&&(!!this.i||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.D("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=za.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(Aa){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new Z("Missing eventId");var c=a.dsn||this.K;if(!c)throw new Z("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.l.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.M(this.J(c)),h=Aa.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(Aa.head||Aa.body).appendChild(h)}},O:function(){var a=this;this.o+=1,setTimeout(function(){a.o-=1})},X:function(a,b){var c,d;if(this.d){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),Aa.createEvent?(c=Aa.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=Aa.createEventObject(),c.eventType=a);for(d in b)ma(b,d)&&(c[d]=b[d]);if(Aa.createEvent)Aa.dispatchEvent(c);else try{Aa.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},Y:function(a){var b=this;return function(c){if(b.Z=null,b.x!==c){b.x=c;var d;try{d=qa(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},$:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.Z;g||a.Y("input")(c),clearTimeout(g),a.Z=setTimeout(function(){a.Z=null},b)}}},_:function(a,b){var c=ta(this.y.href),d=ta(b),e=ta(a);this.z=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},F:function(){var a=this;a.aa=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.a?a.aa.apply(this.b,arguments):a.aa.apply(this,arguments)}},Q:function(){this.aa&&(Function.prototype.toString=this.aa)},G:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b._(b.z,c+""),a.apply(this,arguments)}};ua(history,"pushState",j,d),ua(history,"replaceState",j,d)}if(c.console&&"console"in za&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};ia(["debug","info","warn","error","log"],function(a,b){wa(console,b,k)})}},R:function(){for(var a;this.v.length;){a=this.v.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},S:function(){for(var a in this.s)this.r[a]=this.s[a]},I:function(){var a=this;ia(this.t,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},J:function(a){var b=ya.exec(a),c={},d=7;try{for(;d--;)c[xa[d]]=b[d]||""}catch(e){throw new Z("Invalid DSN: "+a)}if(c.pass&&!this.m.allowSecretKey)throw new Z("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},M:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},E:function(){this.o||this.T.apply(this,arguments)},T:function(a,b){var c=this.U(a,b);this.X("handle",{stackInfo:a,options:b}),this.ca(a.name,a.message,a.url,a.lineno,c,b)},U:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(ia(a.stack,function(b,e){var f=c.da(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.w,0)}),this.l.user&&(a.user=this.l.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||ha(a[b]))&&delete a[b]}),ea(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!ha(a)&&(!ea(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.ja()?void this.D("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() href parsing trick because React Native and other +// environments where DOM might not be available + + +function parseUrl$1(url) { + if (typeof url !== 'string') return {}; + var match = url.match(/^(([^:\/?#]+):)?(\/\/([^\/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?$/); // coerce to undefined values to empty string so we don't get 'undefined' + + var query = match[6] || ''; + var fragment = match[8] || ''; + return { + protocol: match[2], + host: match[4], + path: match[5], + relative: match[5] + query + fragment // everything minus origin + + }; +} + +function uuid4$1() { + var crypto = _window$3.crypto || _window$3.msCrypto; + + if (!isUndefined$1(crypto) && crypto.getRandomValues) { + // Use window.crypto API if available + // eslint-disable-next-line no-undef + var arr = new Uint16Array(8); + crypto.getRandomValues(arr); // set 4 in byte 7 + + arr[3] = arr[3] & 0xfff | 0x4000; // set 2 most significant bits of byte 9 to '10' + + arr[4] = arr[4] & 0x3fff | 0x8000; + + var pad = function pad(num) { + var v = num.toString(16); + + while (v.length < 4) { + v = '0' + v; + } + + return v; + }; + + return pad(arr[0]) + pad(arr[1]) + pad(arr[2]) + pad(arr[3]) + pad(arr[4]) + pad(arr[5]) + pad(arr[6]) + pad(arr[7]); + } else { + // http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/2117523#2117523 + return 'xxxxxxxxxxxx4xxxyxxxxxxxxxxxxxxx'.replace(/[xy]/g, function (c) { + var r = Math.random() * 16 | 0, + v = c === 'x' ? r : r & 0x3 | 0x8; + return v.toString(16); + }); + } +} +/** + * Given a child DOM element, returns a query-selector statement describing that + * and its ancestors + * e.g. [HTMLElement] => body > div > input#foo.btn[name=baz] + * @param elem + * @returns {string} + */ + + +function htmlTreeAsString$1(elem) { + /* eslint no-extra-parens:0*/ + var MAX_TRAVERSE_HEIGHT = 5, + MAX_OUTPUT_LEN = 80, + out = [], + height = 0, + len = 0, + separator = ' > ', + sepLength = separator.length, + nextStr; + + while (elem && height++ < MAX_TRAVERSE_HEIGHT) { + nextStr = htmlElementAsString(elem); // bail out if + // - nextStr is the 'html' element + // - the length of the string that would be created exceeds MAX_OUTPUT_LEN + // (ignore this limit if we are on the first iteration) + + if (nextStr === 'html' || height > 1 && len + out.length * sepLength + nextStr.length >= MAX_OUTPUT_LEN) { + break; + } + + out.push(nextStr); + len += nextStr.length; + elem = elem.parentNode; + } + + return out.reverse().join(separator); +} +/** + * Returns a simple, query-selector representation of a DOM element + * e.g. [HTMLElement] => input#foo.btn[name=baz] + * @param HTMLElement + * @returns {string} + */ + + +function htmlElementAsString(elem) { + var out = [], + className, + classes, + key, + attr, + i; + + if (!elem || !elem.tagName) { + return ''; + } + + out.push(elem.tagName.toLowerCase()); + + if (elem.id) { + out.push('#' + elem.id); + } + + className = elem.className; + + if (className && isString$1(className)) { + classes = className.split(/\s+/); + + for (i = 0; i < classes.length; i++) { + out.push('.' + classes[i]); + } + } + + var attrWhitelist = ['type', 'name', 'title', 'alt']; + + for (i = 0; i < attrWhitelist.length; i++) { + key = attrWhitelist[i]; + attr = elem.getAttribute(key); + + if (attr) { + out.push('[' + key + '="' + attr + '"]'); + } + } + + return out.join(''); +} +/** + * Returns true if either a OR b is truthy, but not both + */ + + +function isOnlyOneTruthy(a, b) { + return !!(!!a ^ !!b); +} +/** + * Returns true if both parameters are undefined + */ + + +function isBothUndefined(a, b) { + return isUndefined$1(a) && isUndefined$1(b); +} +/** + * Returns true if the two input exception interfaces have the same content + */ + + +function isSameException$1(ex1, ex2) { + if (isOnlyOneTruthy(ex1, ex2)) return false; + ex1 = ex1.values[0]; + ex2 = ex2.values[0]; + if (ex1.type !== ex2.type || ex1.value !== ex2.value) return false; // in case both stacktraces are undefined, we can't decide so default to false + + if (isBothUndefined(ex1.stacktrace, ex2.stacktrace)) return false; + return isSameStacktrace$1(ex1.stacktrace, ex2.stacktrace); +} +/** + * Returns true if the two input stack trace interfaces have the same content + */ + + +function isSameStacktrace$1(stack1, stack2) { + if (isOnlyOneTruthy(stack1, stack2)) return false; + var frames1 = stack1.frames; + var frames2 = stack2.frames; // Exit early if frame count differs + + if (frames1.length !== frames2.length) return false; // Iterate through every frame; bail out if anything differs + + var a, b; + + for (var i = 0; i < frames1.length; i++) { + a = frames1[i]; + b = frames2[i]; + if (a.filename !== b.filename || a.lineno !== b.lineno || a.colno !== b.colno || a['function'] !== b['function']) return false; + } + + return true; +} +/** + * Polyfill a method + * @param obj object e.g. `document` + * @param name method name present on object e.g. `addEventListener` + * @param replacement replacement function + * @param track {optional} record instrumentation to an array + */ + + +function fill$1(obj, name, replacement, track) { + var orig = obj[name]; + obj[name] = replacement(orig); + obj[name].__raven__ = true; + obj[name].__orig__ = orig; + + if (track) { + track.push([obj, name, orig]); + } +} +/** + * Join values in array + * @param input array of values to be joined together + * @param delimiter string to be placed in-between values + * @returns {string} + */ + + +function safeJoin(input, delimiter) { + if (!isArray$1(input)) return ''; + var output = []; + + for (var i = 0; i < input.length; i++) { + try { + output.push(String(input[i])); + } catch (e) { + output.push('[value cannot be serialized]'); + } + } + + return output.join(delimiter); +} + +var utils = { + isObject: isObject$1, + isError: isError$1, + isErrorEvent: isErrorEvent$1, + isUndefined: isUndefined$1, + isFunction: isFunction$1, + isPlainObject: isPlainObject, + isString: isString$1, + isArray: isArray$1, + isEmptyObject: isEmptyObject$1, + supportsErrorEvent: supportsErrorEvent, + supportsFetch: supportsFetch$1, + wrappedCallback: wrappedCallback, + each: each$1, + objectMerge: objectMerge$1, + truncate: truncate$1, + objectFrozen: objectFrozen$1, + hasKey: hasKey$1, + joinRegExp: joinRegExp$1, + urlencode: urlencode$1, + uuid4: uuid4$1, + htmlTreeAsString: htmlTreeAsString$1, + htmlElementAsString: htmlElementAsString, + isSameException: isSameException$1, + isSameStacktrace: isSameStacktrace$1, + parseUrl: parseUrl$1, + fill: fill$1, + safeJoin: safeJoin +}; + +/* + TraceKit - Cross brower stack traces + + This was originally forked from github.com/occ/TraceKit, but has since been + largely re-written and is now maintained as part of raven-js. Tests for + this are in test/vendor. + + MIT license +*/ + +var TraceKit = { + collectWindowErrors: true, + debug: false +}; // This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) + +var _window$2 = typeof window !== 'undefined' ? window : typeof commonjsGlobal !== 'undefined' ? commonjsGlobal : typeof self !== 'undefined' ? self : {}; // global reference to slice + + +var _slice = [].slice; +var UNKNOWN_FUNCTION = '?'; // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error#Error_types + +var ERROR_TYPES_RE = /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/; + +function getLocationHref() { + if (typeof document === 'undefined' || document.location == null) return ''; + return document.location.href; +} +/** + * TraceKit.report: cross-browser processing of unhandled exceptions + * + * Syntax: + * TraceKit.report.subscribe(function(stackInfo) { ... }) + * TraceKit.report.unsubscribe(function(stackInfo) { ... }) + * TraceKit.report(exception) + * try { ...code... } catch(ex) { TraceKit.report(ex); } + * + * Supports: + * - Firefox: full stack trace with line numbers, plus column number + * on top frame; column number is not guaranteed + * - Opera: full stack trace with line and column numbers + * - Chrome: full stack trace with line and column numbers + * - Safari: line and column number for the top frame only; some frames + * may be missing, and column number is not guaranteed + * - IE: line and column number for the top frame only; some frames + * may be missing, and column number is not guaranteed + * + * In theory, TraceKit should work on all of the following versions: + * - IE5.5+ (only 8.0 tested) + * - Firefox 0.9+ (only 3.5+ tested) + * - Opera 7+ (only 10.50 tested; versions 9 and earlier may require + * Exceptions Have Stacktrace to be enabled in opera:config) + * - Safari 3+ (only 4+ tested) + * - Chrome 1+ (only 5+ tested) + * - Konqueror 3.5+ (untested) + * + * Requires TraceKit.computeStackTrace. + * + * Tries to catch all unhandled exceptions and report them to the + * subscribed handlers. Please note that TraceKit.report will rethrow the + * exception. This is REQUIRED in order to get a useful stack trace in IE. + * If the exception does not reach the top of the browser, you will only + * get a stack trace from the point where TraceKit.report was called. + * + * Handlers receive a stackInfo object as described in the + * TraceKit.computeStackTrace docs. + */ + + +TraceKit.report = function reportModuleWrapper() { + var handlers = [], + lastArgs = null, + lastException = null, + lastExceptionStack = null; + /** + * Add a crash handler. + * @param {Function} handler + */ + + function subscribe(handler) { + installGlobalHandler(); + handlers.push(handler); + } + /** + * Remove a crash handler. + * @param {Function} handler + */ + + + function unsubscribe(handler) { + for (var i = handlers.length - 1; i >= 0; --i) { + if (handlers[i] === handler) { + handlers.splice(i, 1); + } + } + } + /** + * Remove all crash handlers. + */ + + + function unsubscribeAll() { + uninstallGlobalHandler(); + handlers = []; + } + /** + * Dispatch stack information to all handlers. + * @param {Object.} stack + */ + + + function notifyHandlers(stack, isWindowError) { + var exception = null; + + if (isWindowError && !TraceKit.collectWindowErrors) { + return; + } + + for (var i in handlers) { + if (handlers.hasOwnProperty(i)) { + try { + handlers[i].apply(null, [stack].concat(_slice.call(arguments, 2))); + } catch (inner) { + exception = inner; + } + } + } + + if (exception) { + throw exception; + } + } + + var _oldOnerrorHandler, _onErrorHandlerInstalled; + /** + * Ensures all global unhandled exceptions are recorded. + * Supported by Gecko and IE. + * @param {string} msg Error message. + * @param {string} url URL of script that generated the exception. + * @param {(number|string)} lineNo The line number at which the error + * occurred. + * @param {?(number|string)} colNo The column number at which the error + * occurred. + * @param {?Error} ex The actual Error object. + */ + + + function traceKitWindowOnError(msg, url, lineNo, colNo, ex) { + var stack = null; // If 'ex' is ErrorEvent, get real Error from inside + + var exception = utils.isErrorEvent(ex) ? ex.error : ex; // If 'msg' is ErrorEvent, get real message from inside + + var message = utils.isErrorEvent(msg) ? msg.message : msg; + + if (lastExceptionStack) { + TraceKit.computeStackTrace.augmentStackTraceWithInitialElement(lastExceptionStack, url, lineNo, message); + processLastException(); + } else if (exception && utils.isError(exception)) { + // non-string `exception` arg; attempt to extract stack trace + // New chrome and blink send along a real error object + // Let's just report that like a normal error. + // See: https://mikewest.org/2013/08/debugging-runtime-errors-with-window-onerror + stack = TraceKit.computeStackTrace(exception); + notifyHandlers(stack, true); + } else { + var location = { + url: url, + line: lineNo, + column: colNo + }; + var name = undefined; + var groups; + + if ({}.toString.call(message) === '[object String]') { + var groups = message.match(ERROR_TYPES_RE); + + if (groups) { + name = groups[1]; + message = groups[2]; + } + } + + location.func = UNKNOWN_FUNCTION; + stack = { + name: name, + message: message, + url: getLocationHref(), + stack: [location] + }; + notifyHandlers(stack, true); + } + + if (_oldOnerrorHandler) { + return _oldOnerrorHandler.apply(this, arguments); + } + + return false; + } + + function installGlobalHandler() { + if (_onErrorHandlerInstalled) { + return; + } + + _oldOnerrorHandler = _window$2.onerror; + _window$2.onerror = traceKitWindowOnError; + _onErrorHandlerInstalled = true; + } + + function uninstallGlobalHandler() { + if (!_onErrorHandlerInstalled) { + return; + } + + _window$2.onerror = _oldOnerrorHandler; + _onErrorHandlerInstalled = false; + _oldOnerrorHandler = undefined; + } + + function processLastException() { + var _lastExceptionStack = lastExceptionStack, + _lastArgs = lastArgs; + lastArgs = null; + lastExceptionStack = null; + lastException = null; + notifyHandlers.apply(null, [_lastExceptionStack, false].concat(_lastArgs)); + } + /** + * Reports an unhandled Error to TraceKit. + * @param {Error} ex + * @param {?boolean} rethrow If false, do not re-throw the exception. + * Only used for window.onerror to not cause an infinite loop of + * rethrowing. + */ + + + function report(ex, rethrow) { + var args = _slice.call(arguments, 1); + + if (lastExceptionStack) { + if (lastException === ex) { + return; // already caught by an inner catch block, ignore + } else { + processLastException(); + } + } + + var stack = TraceKit.computeStackTrace(ex); + lastExceptionStack = stack; + lastException = ex; + lastArgs = args; // If the stack trace is incomplete, wait for 2 seconds for + // slow slow IE to see if onerror occurs or not before reporting + // this exception; otherwise, we will end up with an incomplete + // stack trace + + setTimeout(function () { + if (lastException === ex) { + processLastException(); + } + }, stack.incomplete ? 2000 : 0); + + if (rethrow !== false) { + throw ex; // re-throw to propagate to the top level (and cause window.onerror) + } + } + + report.subscribe = subscribe; + report.unsubscribe = unsubscribe; + report.uninstall = unsubscribeAll; + return report; +}(); +/** + * TraceKit.computeStackTrace: cross-browser stack traces in JavaScript + * + * Syntax: + * s = TraceKit.computeStackTrace(exception) // consider using TraceKit.report instead (see below) + * Returns: + * s.name - exception name + * s.message - exception message + * s.stack[i].url - JavaScript or HTML file URL + * s.stack[i].func - function name, or empty for anonymous functions (if guessing did not work) + * s.stack[i].args - arguments passed to the function, if known + * s.stack[i].line - line number, if known + * s.stack[i].column - column number, if known + * + * Supports: + * - Firefox: full stack trace with line numbers and unreliable column + * number on top frame + * - Opera 10: full stack trace with line and column numbers + * - Opera 9-: full stack trace with line numbers + * - Chrome: full stack trace with line and column numbers + * - Safari: line and column number for the topmost stacktrace element + * only + * - IE: no line numbers whatsoever + * + * Tries to guess names of anonymous functions by looking for assignments + * in the source code. In IE and Safari, we have to guess source file names + * by searching for function bodies inside all page scripts. This will not + * work for scripts that are loaded cross-domain. + * Here be dragons: some function names may be guessed incorrectly, and + * duplicate functions may be mismatched. + * + * TraceKit.computeStackTrace should only be used for tracing purposes. + * Logging of unhandled exceptions should be done with TraceKit.report, + * which builds on top of TraceKit.computeStackTrace and provides better + * IE support by utilizing the window.onerror event to retrieve information + * about the top of the stack. + * + * Note: In IE and Safari, no stack trace is recorded on the Error object, + * so computeStackTrace instead walks its *own* chain of callers. + * This means that: + * * in Safari, some methods may be missing from the stack trace; + * * in IE, the topmost function in the stack trace will always be the + * caller of computeStackTrace. + * + * This is okay for tracing (because you are likely to be calling + * computeStackTrace from the function you want to be the topmost element + * of the stack trace anyway), but not okay for logging unhandled + * exceptions (because your catch block will likely be far away from the + * inner function that actually caused the exception). + * + */ + + +TraceKit.computeStackTrace = function computeStackTraceWrapper() { + // Contents of Exception in various browsers. + // + // SAFARI: + // ex.message = Can't find variable: qq + // ex.line = 59 + // ex.sourceId = 580238192 + // ex.sourceURL = http://... + // ex.expressionBeginOffset = 96 + // ex.expressionCaretOffset = 98 + // ex.expressionEndOffset = 98 + // ex.name = ReferenceError + // + // FIREFOX: + // ex.message = qq is not defined + // ex.fileName = http://... + // ex.lineNumber = 59 + // ex.columnNumber = 69 + // ex.stack = ...stack trace... (see the example below) + // ex.name = ReferenceError + // + // CHROME: + // ex.message = qq is not defined + // ex.name = ReferenceError + // ex.type = not_defined + // ex.arguments = ['aa'] + // ex.stack = ...stack trace... + // + // INTERNET EXPLORER: + // ex.message = ... + // ex.name = ReferenceError + // + // OPERA: + // ex.message = ...message... (see the example below) + // ex.name = ReferenceError + // ex.opera#sourceloc = 11 (pretty much useless, duplicates the info in ex.message) + // ex.stacktrace = n/a; see 'opera:config#UserPrefs|Exceptions Have Stacktrace' + + /** + * Computes stack trace information from the stack property. + * Chrome and Gecko use this property. + * @param {Error} ex + * @return {?Object.} Stack trace information. + */ + function computeStackTraceFromStackProp(ex) { + if (typeof ex.stack === 'undefined' || !ex.stack) return; + var chrome = /^\s*at (.*?) ?\(((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i, + gecko = /^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|\[native).*?|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i, + winjs = /^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i, + // Used to additionally parse URL/line/column from eval frames + geckoEval = /(\S+) line (\d+)(?: > eval line \d+)* > eval/i, + chromeEval = /\((\S*)(?::(\d+))(?::(\d+))\)/, + lines = ex.stack.split('\n'), + stack = [], + submatch, + parts, + element, + reference = /^(.*) is undefined$/.exec(ex.message); + + for (var i = 0, j = lines.length; i < j; ++i) { + if (parts = chrome.exec(lines[i])) { + var isNative = parts[2] && parts[2].indexOf('native') === 0; // start of line + + var isEval = parts[2] && parts[2].indexOf('eval') === 0; // start of line + + if (isEval && (submatch = chromeEval.exec(parts[2]))) { + // throw out eval line/column and use top-most line/column number + parts[2] = submatch[1]; // url + + parts[3] = submatch[2]; // line + + parts[4] = submatch[3]; // column + } + + element = { + url: !isNative ? parts[2] : null, + func: parts[1] || UNKNOWN_FUNCTION, + args: isNative ? [parts[2]] : [], + line: parts[3] ? +parts[3] : null, + column: parts[4] ? +parts[4] : null + }; + } else if (parts = winjs.exec(lines[i])) { + element = { + url: parts[2], + func: parts[1] || UNKNOWN_FUNCTION, + args: [], + line: +parts[3], + column: parts[4] ? +parts[4] : null + }; + } else if (parts = gecko.exec(lines[i])) { + var isEval = parts[3] && parts[3].indexOf(' > eval') > -1; + + if (isEval && (submatch = geckoEval.exec(parts[3]))) { + // throw out eval line/column and use top-most line number + parts[3] = submatch[1]; + parts[4] = submatch[2]; + parts[5] = null; // no column when eval + } else if (i === 0 && !parts[5] && typeof ex.columnNumber !== 'undefined') { + // FireFox uses this awesome columnNumber property for its top frame + // Also note, Firefox's column number is 0-based and everything else expects 1-based, + // so adding 1 + // NOTE: this hack doesn't work if top-most frame is eval + stack[0].column = ex.columnNumber + 1; + } + + element = { + url: parts[3], + func: parts[1] || UNKNOWN_FUNCTION, + args: parts[2] ? parts[2].split(',') : [], + line: parts[4] ? +parts[4] : null, + column: parts[5] ? +parts[5] : null + }; + } else { + continue; + } + + if (!element.func && element.line) { + element.func = UNKNOWN_FUNCTION; + } + + stack.push(element); + } + + if (!stack.length) { + return null; + } + + return { + name: ex.name, + message: ex.message, + url: getLocationHref(), + stack: stack + }; + } + /** + * Adds information about the first frame to incomplete stack traces. + * Safari and IE require this to get complete data on the first frame. + * @param {Object.} stackInfo Stack trace information from + * one of the compute* methods. + * @param {string} url The URL of the script that caused an error. + * @param {(number|string)} lineNo The line number of the script that + * caused an error. + * @param {string=} message The error generated by the browser, which + * hopefully contains the name of the object that caused the error. + * @return {boolean} Whether or not the stack information was + * augmented. + */ + + + function augmentStackTraceWithInitialElement(stackInfo, url, lineNo, message) { + var initial = { + url: url, + line: lineNo + }; + + if (initial.url && initial.line) { + stackInfo.incomplete = false; + + if (!initial.func) { + initial.func = UNKNOWN_FUNCTION; + } + + if (stackInfo.stack.length > 0) { + if (stackInfo.stack[0].url === initial.url) { + if (stackInfo.stack[0].line === initial.line) { + return false; // already in stack trace + } else if (!stackInfo.stack[0].line && stackInfo.stack[0].func === initial.func) { + stackInfo.stack[0].line = initial.line; + return false; + } + } + } + + stackInfo.stack.unshift(initial); + stackInfo.partial = true; + return true; + } else { + stackInfo.incomplete = true; + } + + return false; + } + /** + * Computes stack trace information by walking the arguments.caller + * chain at the time the exception occurred. This will cause earlier + * frames to be missed but is the only way to get any stack trace in + * Safari and IE. The top frame is restored by + * {@link augmentStackTraceWithInitialElement}. + * @param {Error} ex + * @return {?Object.} Stack trace information. + */ + + + function computeStackTraceByWalkingCallerChain(ex, depth) { + var functionName = /function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i, + stack = [], + funcs = {}, + recursion = false, + parts, + item; + + for (var curr = computeStackTraceByWalkingCallerChain.caller; curr && !recursion; curr = curr.caller) { + if (curr === computeStackTrace || curr === TraceKit.report) { + // console.log('skipping internal function'); + continue; + } + + item = { + url: null, + func: UNKNOWN_FUNCTION, + line: null, + column: null + }; + + if (curr.name) { + item.func = curr.name; + } else if (parts = functionName.exec(curr.toString())) { + item.func = parts[1]; + } + + if (typeof item.func === 'undefined') { + try { + item.func = parts.input.substring(0, parts.input.indexOf('{')); + } catch (e) {} + } + + if (funcs['' + curr]) { + recursion = true; + } else { + funcs['' + curr] = true; + } + + stack.push(item); + } + + if (depth) { + // console.log('depth is ' + depth); + // console.log('stack is ' + stack.length); + stack.splice(0, depth); + } + + var result = { + name: ex.name, + message: ex.message, + url: getLocationHref(), + stack: stack + }; + augmentStackTraceWithInitialElement(result, ex.sourceURL || ex.fileName, ex.line || ex.lineNumber, ex.message || ex.description); + return result; + } + /** + * Computes a stack trace for an exception. + * @param {Error} ex + * @param {(string|number)=} depth + */ + + + function computeStackTrace(ex, depth) { + var stack = null; + depth = depth == null ? 0 : +depth; + + try { + stack = computeStackTraceFromStackProp(ex); + + if (stack) { + return stack; + } + } catch (e) { + if (TraceKit.debug) { + throw e; + } + } + + try { + stack = computeStackTraceByWalkingCallerChain(ex, depth + 1); + + if (stack) { + return stack; + } + } catch (e) { + if (TraceKit.debug) { + throw e; + } + } + + return { + name: ex.name, + message: ex.message, + url: getLocationHref() + }; + } + + computeStackTrace.augmentStackTraceWithInitialElement = augmentStackTraceWithInitialElement; + computeStackTrace.computeStackTraceFromStackProp = computeStackTraceFromStackProp; + return computeStackTrace; +}(); + +var tracekit = TraceKit; + +var stringify_1 = createCommonjsModule(function (module, exports) { + /* + json-stringify-safe + Like JSON.stringify, but doesn't throw on circular references. + + Originally forked from https://github.com/isaacs/json-stringify-safe + version 5.0.1 on 3/8/2017 and modified to handle Errors serialization + and IE8 compatibility. Tests for this are in test/vendor. + + ISC license: https://github.com/isaacs/json-stringify-safe/blob/master/LICENSE + */ + exports = module.exports = stringify; + exports.getSerialize = serializer; + + function indexOf(haystack, needle) { + for (var i = 0; i < haystack.length; ++i) { + if (haystack[i] === needle) return i; + } + + return -1; + } + + function stringify(obj, replacer, spaces, cycleReplacer) { + return JSON.stringify(obj, serializer(replacer, cycleReplacer), spaces); + } // https://github.com/ftlabs/js-abbreviate/blob/fa709e5f139e7770a71827b1893f22418097fbda/index.js#L95-L106 + + + function stringifyError(value) { + var err = { + // These properties are implemented as magical getters and don't show up in for in + stack: value.stack, + message: value.message, + name: value.name + }; + + for (var i in value) { + if (Object.prototype.hasOwnProperty.call(value, i)) { + err[i] = value[i]; + } + } + + return err; + } + + function serializer(replacer, cycleReplacer) { + var stack = []; + var keys = []; + + if (cycleReplacer == null) { + cycleReplacer = function cycleReplacer(key, value) { + if (stack[0] === value) { + return '[Circular ~]'; + } + + return '[Circular ~.' + keys.slice(0, indexOf(stack, value)).join('.') + ']'; + }; + } + + return function (key, value) { + if (stack.length > 0) { + var thisPos = indexOf(stack, this); + ~thisPos ? stack.splice(thisPos + 1) : stack.push(this); + ~thisPos ? keys.splice(thisPos, Infinity, key) : keys.push(key); + + if (~indexOf(stack, value)) { + value = cycleReplacer.call(this, key, value); + } + } else { + stack.push(value); + } + + return replacer == null ? value instanceof Error ? stringifyError(value) : value : replacer.call(this, key, value); + }; + } +}); +var stringify_2 = stringify_1.getSerialize; + +function RavenConfigError(message) { + this.name = 'RavenConfigError'; + this.message = message; +} + +RavenConfigError.prototype = new Error(); +RavenConfigError.prototype.constructor = RavenConfigError; +var configError = RavenConfigError; + +var wrapMethod = function wrapMethod(console, level, callback) { + var originalConsoleLevel = console[level]; + var originalConsole = console; + + if (!(level in console)) { + return; + } + + var sentryLevel = level === 'warn' ? 'warning' : level; + + console[level] = function () { + var args = [].slice.call(arguments); + var msg = utils.safeJoin(args, ' '); + var data = { + level: sentryLevel, + logger: 'console', + extra: { + arguments: args + } + }; + + if (level === 'assert') { + if (args[0] === false) { + // Default browsers message + msg = 'Assertion failed: ' + (utils.safeJoin(args.slice(1), ' ') || 'console.assert'); + data.extra.arguments = args.slice(1); + callback && callback(msg, data); + } + } else { + callback && callback(msg, data); + } // this fails for some browsers. :( + + + if (originalConsoleLevel) { + // IE9 doesn't allow calling apply on console functions directly + // See: https://stackoverflow.com/questions/5472938/does-ie9-support-console-log-and-is-it-a-real-function#answer-5473193 + Function.prototype.apply.call(originalConsoleLevel, originalConsole, args); + } + }; +}; + +var console$1 = { + wrapMethod: wrapMethod +}; + +/*global XDomainRequest:false */ + +var isError = utils.isError; +var isObject = utils.isObject; +var isErrorEvent = utils.isErrorEvent; +var isUndefined = utils.isUndefined; +var isFunction = utils.isFunction; +var isString = utils.isString; +var isArray = utils.isArray; +var isEmptyObject = utils.isEmptyObject; +var each = utils.each; +var objectMerge = utils.objectMerge; +var truncate = utils.truncate; +var objectFrozen = utils.objectFrozen; +var hasKey = utils.hasKey; +var joinRegExp = utils.joinRegExp; +var urlencode = utils.urlencode; +var uuid4 = utils.uuid4; +var htmlTreeAsString = utils.htmlTreeAsString; +var isSameException = utils.isSameException; +var isSameStacktrace = utils.isSameStacktrace; +var parseUrl = utils.parseUrl; +var fill = utils.fill; +var supportsFetch = utils.supportsFetch; +var wrapConsoleMethod = console$1.wrapMethod; +var dsnKeys = 'source protocol user pass host port path'.split(' '); +var dsnPattern = /^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/; + +function now() { + return +new Date(); +} // This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) + + +var _window$1 = typeof window !== 'undefined' ? window : typeof commonjsGlobal !== 'undefined' ? commonjsGlobal : typeof self !== 'undefined' ? self : {}; + +var _document = _window$1.document; +var _navigator = _window$1.navigator; + +function keepOriginalCallback(original, callback) { + return isFunction(callback) ? function (data) { + return callback(data, original); + } : callback; +} // First, check for JSON support +// If there is no JSON, we no-op the core features of Raven +// since JSON is required to encode the payload + + +function Raven$1() { + this._hasJSON = !!(_typeof(JSON) === 'object' && JSON.stringify); // Raven can run in contexts where there's no document (react-native) + + this._hasDocument = !isUndefined(_document); + this._hasNavigator = !isUndefined(_navigator); + this._lastCapturedException = null; + this._lastData = null; + this._lastEventId = null; + this._globalServer = null; + this._globalKey = null; + this._globalProject = null; + this._globalContext = {}; + this._globalOptions = { + // SENTRY_RELEASE can be injected by https://github.com/getsentry/sentry-webpack-plugin + release: _window$1.SENTRY_RELEASE && _window$1.SENTRY_RELEASE.id, + logger: 'javascript', + ignoreErrors: [], + ignoreUrls: [], + whitelistUrls: [], + includePaths: [], + headers: null, + collectWindowErrors: true, + maxMessageLength: 0, + // By default, truncates URL values to 250 chars + maxUrlLength: 250, + stackTraceLimit: 50, + autoBreadcrumbs: true, + instrument: true, + sampleRate: 1 + }; + this._fetchDefaults = { + method: 'POST', + keepalive: true, + referrerPolicy: 'origin' + }; + this._ignoreOnError = 0; + this._isRavenInstalled = false; + this._originalErrorStackTraceLimit = Error.stackTraceLimit; // capture references to window.console *and* all its methods first + // before the console plugin has a chance to monkey patch + + this._originalConsole = _window$1.console || {}; + this._originalConsoleMethods = {}; + this._plugins = []; + this._startTime = now(); + this._wrappedBuiltIns = []; + this._breadcrumbs = []; + this._lastCapturedEvent = null; + this._keypressTimeout; + this._location = _window$1.location; + this._lastHref = this._location && this._location.href; + + this._resetBackoff(); // eslint-disable-next-line guard-for-in + + + for (var method in this._originalConsole) { + this._originalConsoleMethods[method] = this._originalConsole[method]; + } +} +/* + * The core Raven singleton + * + * @this {Raven} + */ + + +Raven$1.prototype = { + // Hardcode version string so that raven source can be loaded directly via + // webpack (using a build step causes webpack #1617). Grunt verifies that + // this value matches package.json during build. + // See: https://github.com/getsentry/raven-js/issues/465 + VERSION: '3.22.2', + debug: false, + TraceKit: tracekit, + // alias to TraceKit + + /* + * Configure Raven with a DSN and extra options + * + * @param {string} dsn The public Sentry DSN + * @param {object} options Set of global options [optional] + * @return {Raven} + */ + config: function config(dsn, options) { + var self = this; + + if (self._globalServer) { + this._logDebug('error', 'Error: Raven has already been configured'); + + return self; + } + + if (!dsn) return self; + var globalOptions = self._globalOptions; // merge in options + + if (options) { + each(options, function (key, value) { + // tags and extra are special and need to be put into context + if (key === 'tags' || key === 'extra' || key === 'user') { + self._globalContext[key] = value; + } else { + globalOptions[key] = value; + } + }); + } + + self.setDSN(dsn); // "Script error." is hard coded into browsers for errors that it can't read. + // this is the result of a script being pulled in from an external domain and CORS. + + globalOptions.ignoreErrors.push(/^Script error\.?$/); + globalOptions.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/); // join regexp rules into one big rule + + globalOptions.ignoreErrors = joinRegExp(globalOptions.ignoreErrors); + globalOptions.ignoreUrls = globalOptions.ignoreUrls.length ? joinRegExp(globalOptions.ignoreUrls) : false; + globalOptions.whitelistUrls = globalOptions.whitelistUrls.length ? joinRegExp(globalOptions.whitelistUrls) : false; + globalOptions.includePaths = joinRegExp(globalOptions.includePaths); + globalOptions.maxBreadcrumbs = Math.max(0, Math.min(globalOptions.maxBreadcrumbs || 100, 100)); // default and hard limit is 100 + + var autoBreadcrumbDefaults = { + xhr: true, + console: true, + dom: true, + location: true, + sentry: true + }; + var autoBreadcrumbs = globalOptions.autoBreadcrumbs; + + if ({}.toString.call(autoBreadcrumbs) === '[object Object]') { + autoBreadcrumbs = objectMerge(autoBreadcrumbDefaults, autoBreadcrumbs); + } else if (autoBreadcrumbs !== false) { + autoBreadcrumbs = autoBreadcrumbDefaults; + } + + globalOptions.autoBreadcrumbs = autoBreadcrumbs; + var instrumentDefaults = { + tryCatch: true + }; + var instrument = globalOptions.instrument; + + if ({}.toString.call(instrument) === '[object Object]') { + instrument = objectMerge(instrumentDefaults, instrument); + } else if (instrument !== false) { + instrument = instrumentDefaults; + } + + globalOptions.instrument = instrument; + tracekit.collectWindowErrors = !!globalOptions.collectWindowErrors; // return for chaining + + return self; + }, + + /* + * Installs a global window.onerror error handler + * to capture and report uncaught exceptions. + * At this point, install() is required to be called due + * to the way TraceKit is set up. + * + * @return {Raven} + */ + install: function install() { + var self = this; + + if (self.isSetup() && !self._isRavenInstalled) { + tracekit.report.subscribe(function () { + self._handleOnErrorStackInfo.apply(self, arguments); + }); + + self._patchFunctionToString(); + + if (self._globalOptions.instrument && self._globalOptions.instrument.tryCatch) { + self._instrumentTryCatch(); + } + + if (self._globalOptions.autoBreadcrumbs) self._instrumentBreadcrumbs(); // Install all of the plugins + + self._drainPlugins(); + + self._isRavenInstalled = true; + } + + Error.stackTraceLimit = self._globalOptions.stackTraceLimit; + return this; + }, + + /* + * Set the DSN (can be called multiple time unlike config) + * + * @param {string} dsn The public Sentry DSN + */ + setDSN: function setDSN(dsn) { + var self = this, + uri = self._parseDSN(dsn), + lastSlash = uri.path.lastIndexOf('/'), + path = uri.path.substr(1, lastSlash); + + self._dsn = dsn; + self._globalKey = uri.user; + self._globalSecret = uri.pass && uri.pass.substr(1); + self._globalProject = uri.path.substr(lastSlash + 1); + self._globalServer = self._getGlobalServer(uri); + self._globalEndpoint = self._globalServer + '/' + path + 'api/' + self._globalProject + '/store/'; // Reset backoff state since we may be pointing at a + // new project/server + + this._resetBackoff(); + }, + + /* + * Wrap code within a context so Raven can capture errors + * reliably across domains that is executed immediately. + * + * @param {object} options A specific set of options for this context [optional] + * @param {function} func The callback to be immediately executed within the context + * @param {array} args An array of arguments to be called with the callback [optional] + */ + context: function context(options, func, args) { + if (isFunction(options)) { + args = func || []; + func = options; + options = undefined; + } + + return this.wrap(options, func).apply(this, args); + }, + + /* + * Wrap code within a context and returns back a new function to be executed + * + * @param {object} options A specific set of options for this context [optional] + * @param {function} func The function to be wrapped in a new context + * @param {function} func A function to call before the try/catch wrapper [optional, private] + * @return {function} The newly wrapped functions with a context + */ + wrap: function wrap(options, func, _before) { + var self = this; // 1 argument has been passed, and it's not a function + // so just return it + + if (isUndefined(func) && !isFunction(options)) { + return options; + } // options is optional + + + if (isFunction(options)) { + func = options; + options = undefined; + } // At this point, we've passed along 2 arguments, and the second one + // is not a function either, so we'll just return the second argument. + + + if (!isFunction(func)) { + return func; + } // We don't wanna wrap it twice! + + + try { + if (func.__raven__) { + return func; + } // If this has already been wrapped in the past, return that + + + if (func.__raven_wrapper__) { + return func.__raven_wrapper__; + } + } catch (e) { + // Just accessing custom props in some Selenium environments + // can cause a "Permission denied" exception (see raven-js#495). + // Bail on wrapping and return the function as-is (defers to window.onerror). + return func; + } + + function wrapped() { + var args = [], + i = arguments.length, + deep = !options || options && options.deep !== false; + + if (_before && isFunction(_before)) { + _before.apply(this, arguments); + } // Recursively wrap all of a function's arguments that are + // functions themselves. + + + while (i--) { + args[i] = deep ? self.wrap(options, arguments[i]) : arguments[i]; + } + + try { + // Attempt to invoke user-land function + // NOTE: If you are a Sentry user, and you are seeing this stack frame, it + // means Raven caught an error invoking your application code. This is + // expected behavior and NOT indicative of a bug with Raven.js. + return func.apply(this, args); + } catch (e) { + self._ignoreNextOnError(); + + self.captureException(e, options); + throw e; + } + } // copy over properties of the old function + + + for (var property in func) { + if (hasKey(func, property)) { + wrapped[property] = func[property]; + } + } + + wrapped.prototype = func.prototype; + func.__raven_wrapper__ = wrapped; // Signal that this function has been wrapped/filled already + // for both debugging and to prevent it to being wrapped/filled twice + + wrapped.__raven__ = true; + wrapped.__orig__ = func; + return wrapped; + }, + + /* + * Uninstalls the global error handler. + * + * @return {Raven} + */ + uninstall: function uninstall() { + tracekit.report.uninstall(); + + this._unpatchFunctionToString(); + + this._restoreBuiltIns(); + + this._restoreConsole(); + + Error.stackTraceLimit = this._originalErrorStackTraceLimit; + this._isRavenInstalled = false; + return this; + }, + + /* + * Manually capture an exception and send it over to Sentry + * + * @param {error} ex An exception to be logged + * @param {object} options A specific set of options for this error [optional] + * @return {Raven} + */ + captureException: function captureException(ex, options) { + options = objectMerge({ + trimHeadFrames: 0 + }, options ? options : {}); // Cases for sending ex as a message, rather than an exception + + var isNotError = !isError(ex); + var isNotErrorEvent = !isErrorEvent(ex); + var isErrorEventWithoutError = isErrorEvent(ex) && !ex.error; + + if (isNotError && isNotErrorEvent || isErrorEventWithoutError) { + return this.captureMessage(ex, objectMerge(options, { + stacktrace: true, + // if we fall back to captureMessage, default to attempting a new trace + trimHeadFrames: options.trimHeadFrames + 1 + })); + } // Get actual Error from ErrorEvent + + + if (isErrorEvent(ex)) ex = ex.error; // Store the raw exception object for potential debugging and introspection + + this._lastCapturedException = ex; // TraceKit.report will re-raise any exception passed to it, + // which means you have to wrap it in try/catch. Instead, we + // can wrap it here and only re-raise if TraceKit.report + // raises an exception different from the one we asked to + // report on. + + try { + var stack = tracekit.computeStackTrace(ex); + + this._handleStackInfo(stack, options); + } catch (ex1) { + if (ex !== ex1) { + throw ex1; + } + } + + return this; + }, + + /* + * Manually send a message to Sentry + * + * @param {string} msg A plain message to be captured in Sentry + * @param {object} options A specific set of options for this message [optional] + * @return {Raven} + */ + captureMessage: function captureMessage(msg, options) { + // config() automagically converts ignoreErrors from a list to a RegExp so we need to test for an + // early call; we'll error on the side of logging anything called before configuration since it's + // probably something you should see: + if (!!this._globalOptions.ignoreErrors.test && this._globalOptions.ignoreErrors.test(msg)) { + return; + } + + options = options || {}; + var data = objectMerge({ + message: msg + '' // Make sure it's actually a string + + }, options); + var ex; // Generate a "synthetic" stack trace from this point. + // NOTE: If you are a Sentry user, and you are seeing this stack frame, it is NOT indicative + // of a bug with Raven.js. Sentry generates synthetic traces either by configuration, + // or if it catches a thrown object without a "stack" property. + + try { + throw new Error(msg); + } catch (ex1) { + ex = ex1; + } // null exception name so `Error` isn't prefixed to msg + + + ex.name = null; + var stack = tracekit.computeStackTrace(ex); // stack[0] is `throw new Error(msg)` call itself, we are interested in the frame that was just before that, stack[1] + + var initialCall = isArray(stack.stack) && stack.stack[1]; + var fileurl = initialCall && initialCall.url || ''; + + if (!!this._globalOptions.ignoreUrls.test && this._globalOptions.ignoreUrls.test(fileurl)) { + return; + } + + if (!!this._globalOptions.whitelistUrls.test && !this._globalOptions.whitelistUrls.test(fileurl)) { + return; + } + + if (this._globalOptions.stacktrace || options && options.stacktrace) { + options = objectMerge({ + // fingerprint on msg, not stack trace (legacy behavior, could be + // revisited) + fingerprint: msg, + // since we know this is a synthetic trace, the top N-most frames + // MUST be from Raven.js, so mark them as in_app later by setting + // trimHeadFrames + trimHeadFrames: (options.trimHeadFrames || 0) + 1 + }, options); + + var frames = this._prepareFrames(stack, options); + + data.stacktrace = { + // Sentry expects frames oldest to newest + frames: frames.reverse() + }; + } // Fire away! + + + this._send(data); + + return this; + }, + captureBreadcrumb: function captureBreadcrumb(obj) { + var crumb = objectMerge({ + timestamp: now() / 1000 + }, obj); + + if (isFunction(this._globalOptions.breadcrumbCallback)) { + var result = this._globalOptions.breadcrumbCallback(crumb); + + if (isObject(result) && !isEmptyObject(result)) { + crumb = result; + } else if (result === false) { + return this; + } + } + + this._breadcrumbs.push(crumb); + + if (this._breadcrumbs.length > this._globalOptions.maxBreadcrumbs) { + this._breadcrumbs.shift(); + } + + return this; + }, + addPlugin: function addPlugin(plugin + /*arg1, arg2, ... argN*/ + ) { + var pluginArgs = [].slice.call(arguments, 1); + + this._plugins.push([plugin, pluginArgs]); + + if (this._isRavenInstalled) { + this._drainPlugins(); + } + + return this; + }, + + /* + * Set/clear a user to be sent along with the payload. + * + * @param {object} user An object representing user data [optional] + * @return {Raven} + */ + setUserContext: function setUserContext(user) { + // Intentionally do not merge here since that's an unexpected behavior. + this._globalContext.user = user; + return this; + }, + + /* + * Merge extra attributes to be sent along with the payload. + * + * @param {object} extra An object representing extra data [optional] + * @return {Raven} + */ + setExtraContext: function setExtraContext(extra) { + this._mergeContext('extra', extra); + + return this; + }, + + /* + * Merge tags to be sent along with the payload. + * + * @param {object} tags An object representing tags [optional] + * @return {Raven} + */ + setTagsContext: function setTagsContext(tags) { + this._mergeContext('tags', tags); + + return this; + }, + + /* + * Clear all of the context. + * + * @return {Raven} + */ + clearContext: function clearContext() { + this._globalContext = {}; + return this; + }, + + /* + * Get a copy of the current context. This cannot be mutated. + * + * @return {object} copy of context + */ + getContext: function getContext() { + // lol javascript + return JSON.parse(stringify_1(this._globalContext)); + }, + + /* + * Set environment of application + * + * @param {string} environment Typically something like 'production'. + * @return {Raven} + */ + setEnvironment: function setEnvironment(environment) { + this._globalOptions.environment = environment; + return this; + }, + + /* + * Set release version of application + * + * @param {string} release Typically something like a git SHA to identify version + * @return {Raven} + */ + setRelease: function setRelease(release) { + this._globalOptions.release = release; + return this; + }, + + /* + * Set the dataCallback option + * + * @param {function} callback The callback to run which allows the + * data blob to be mutated before sending + * @return {Raven} + */ + setDataCallback: function setDataCallback(callback) { + var original = this._globalOptions.dataCallback; + this._globalOptions.dataCallback = keepOriginalCallback(original, callback); + return this; + }, + + /* + * Set the breadcrumbCallback option + * + * @param {function} callback The callback to run which allows filtering + * or mutating breadcrumbs + * @return {Raven} + */ + setBreadcrumbCallback: function setBreadcrumbCallback(callback) { + var original = this._globalOptions.breadcrumbCallback; + this._globalOptions.breadcrumbCallback = keepOriginalCallback(original, callback); + return this; + }, + + /* + * Set the shouldSendCallback option + * + * @param {function} callback The callback to run which allows + * introspecting the blob before sending + * @return {Raven} + */ + setShouldSendCallback: function setShouldSendCallback(callback) { + var original = this._globalOptions.shouldSendCallback; + this._globalOptions.shouldSendCallback = keepOriginalCallback(original, callback); + return this; + }, + + /** + * Override the default HTTP transport mechanism that transmits data + * to the Sentry server. + * + * @param {function} transport Function invoked instead of the default + * `makeRequest` handler. + * + * @return {Raven} + */ + setTransport: function setTransport(transport) { + this._globalOptions.transport = transport; + return this; + }, + + /* + * Get the latest raw exception that was captured by Raven. + * + * @return {error} + */ + lastException: function lastException() { + return this._lastCapturedException; + }, + + /* + * Get the last event id + * + * @return {string} + */ + lastEventId: function lastEventId() { + return this._lastEventId; + }, + + /* + * Determine if Raven is setup and ready to go. + * + * @return {boolean} + */ + isSetup: function isSetup() { + if (!this._hasJSON) return false; // needs JSON support + + if (!this._globalServer) { + if (!this.ravenNotConfiguredError) { + this.ravenNotConfiguredError = true; + + this._logDebug('error', 'Error: Raven has not been configured.'); + } + + return false; + } + + return true; + }, + afterLoad: function afterLoad() { + // TODO: remove window dependence? + // Attempt to initialize Raven on load + var RavenConfig = _window$1.RavenConfig; + + if (RavenConfig) { + this.config(RavenConfig.dsn, RavenConfig.config).install(); + } + }, + showReportDialog: function showReportDialog(options) { + if (!_document // doesn't work without a document (React native) + ) return; + options = options || {}; + var lastEventId = options.eventId || this.lastEventId(); + + if (!lastEventId) { + throw new configError('Missing eventId'); + } + + var dsn = options.dsn || this._dsn; + + if (!dsn) { + throw new configError('Missing DSN'); + } + + var encode = encodeURIComponent; + var qs = ''; + qs += '?eventId=' + encode(lastEventId); + qs += '&dsn=' + encode(dsn); + var user = options.user || this._globalContext.user; + + if (user) { + if (user.name) qs += '&name=' + encode(user.name); + if (user.email) qs += '&email=' + encode(user.email); + } + + var globalServer = this._getGlobalServer(this._parseDSN(dsn)); + + var script = _document.createElement('script'); + + script.async = true; + script.src = globalServer + '/api/embed/error-page/' + qs; + + (_document.head || _document.body).appendChild(script); + }, + + /**** Private functions ****/ + _ignoreNextOnError: function _ignoreNextOnError() { + var self = this; + this._ignoreOnError += 1; + setTimeout(function () { + // onerror should trigger before setTimeout + self._ignoreOnError -= 1; + }); + }, + _triggerEvent: function _triggerEvent(eventType, options) { + // NOTE: `event` is a native browser thing, so let's avoid conflicting wiht it + var evt, key; + if (!this._hasDocument) return; + options = options || {}; + eventType = 'raven' + eventType.substr(0, 1).toUpperCase() + eventType.substr(1); + + if (_document.createEvent) { + evt = _document.createEvent('HTMLEvents'); + evt.initEvent(eventType, true, true); + } else { + evt = _document.createEventObject(); + evt.eventType = eventType; + } + + for (key in options) { + if (hasKey(options, key)) { + evt[key] = options[key]; + } + } + + if (_document.createEvent) { + // IE9 if standards + _document.dispatchEvent(evt); + } else { + // IE8 regardless of Quirks or Standards + // IE9 if quirks + try { + _document.fireEvent('on' + evt.eventType.toLowerCase(), evt); + } catch (e) {// Do nothing + } + } + }, + + /** + * Wraps addEventListener to capture UI breadcrumbs + * @param evtName the event name (e.g. "click") + * @returns {Function} + * @private + */ + _breadcrumbEventHandler: function _breadcrumbEventHandler(evtName) { + var self = this; + return function (evt) { + // reset keypress timeout; e.g. triggering a 'click' after + // a 'keypress' will reset the keypress debounce so that a new + // set of keypresses can be recorded + self._keypressTimeout = null; // It's possible this handler might trigger multiple times for the same + // event (e.g. event propagation through node ancestors). Ignore if we've + // already captured the event. + + if (self._lastCapturedEvent === evt) return; + self._lastCapturedEvent = evt; // try/catch both: + // - accessing evt.target (see getsentry/raven-js#838, #768) + // - `htmlTreeAsString` because it's complex, and just accessing the DOM incorrectly + // can throw an exception in some circumstances. + + var target; + + try { + target = htmlTreeAsString(evt.target); + } catch (e) { + target = ''; + } + + self.captureBreadcrumb({ + category: 'ui.' + evtName, + // e.g. ui.click, ui.input + message: target + }); + }; + }, + + /** + * Wraps addEventListener to capture keypress UI events + * @returns {Function} + * @private + */ + _keypressEventHandler: function _keypressEventHandler() { + var self = this, + debounceDuration = 1000; // milliseconds + // TODO: if somehow user switches keypress target before + // debounce timeout is triggered, we will only capture + // a single breadcrumb from the FIRST target (acceptable?) + + return function (evt) { + var target; + + try { + target = evt.target; + } catch (e) { + // just accessing event properties can throw an exception in some rare circumstances + // see: https://github.com/getsentry/raven-js/issues/838 + return; + } + + var tagName = target && target.tagName; // only consider keypress events on actual input elements + // this will disregard keypresses targeting body (e.g. tabbing + // through elements, hotkeys, etc) + + if (!tagName || tagName !== 'INPUT' && tagName !== 'TEXTAREA' && !target.isContentEditable) return; // record first keypress in a series, but ignore subsequent + // keypresses until debounce clears + + var timeout = self._keypressTimeout; + + if (!timeout) { + self._breadcrumbEventHandler('input')(evt); + } + + clearTimeout(timeout); + self._keypressTimeout = setTimeout(function () { + self._keypressTimeout = null; + }, debounceDuration); + }; + }, + + /** + * Captures a breadcrumb of type "navigation", normalizing input URLs + * @param to the originating URL + * @param from the target URL + * @private + */ + _captureUrlChange: function _captureUrlChange(from, to) { + var parsedLoc = parseUrl(this._location.href); + var parsedTo = parseUrl(to); + var parsedFrom = parseUrl(from); // because onpopstate only tells you the "new" (to) value of location.href, and + // not the previous (from) value, we need to track the value of the current URL + // state ourselves + + this._lastHref = to; // Use only the path component of the URL if the URL matches the current + // document (almost all the time when using pushState) + + if (parsedLoc.protocol === parsedTo.protocol && parsedLoc.host === parsedTo.host) to = parsedTo.relative; + if (parsedLoc.protocol === parsedFrom.protocol && parsedLoc.host === parsedFrom.host) from = parsedFrom.relative; + this.captureBreadcrumb({ + category: 'navigation', + data: { + to: to, + from: from + } + }); + }, + _patchFunctionToString: function _patchFunctionToString() { + var self = this; + self._originalFunctionToString = Function.prototype.toString; // eslint-disable-next-line no-extend-native + + Function.prototype.toString = function () { + if (typeof this === 'function' && this.__raven__) { + return self._originalFunctionToString.apply(this.__orig__, arguments); + } + + return self._originalFunctionToString.apply(this, arguments); + }; + }, + _unpatchFunctionToString: function _unpatchFunctionToString() { + if (this._originalFunctionToString) { + // eslint-disable-next-line no-extend-native + Function.prototype.toString = this._originalFunctionToString; + } + }, + + /** + * Wrap timer functions and event targets to catch errors and provide + * better metadata. + */ + _instrumentTryCatch: function _instrumentTryCatch() { + var self = this; + var wrappedBuiltIns = self._wrappedBuiltIns; + + function wrapTimeFn(orig) { + return function (fn, t) { + // preserve arity + // Make a copy of the arguments to prevent deoptimization + // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments + var args = new Array(arguments.length); + + for (var i = 0; i < args.length; ++i) { + args[i] = arguments[i]; + } + + var originalCallback = args[0]; + + if (isFunction(originalCallback)) { + args[0] = self.wrap(originalCallback); + } // IE < 9 doesn't support .call/.apply on setInterval/setTimeout, but it + // also supports only two arguments and doesn't care what this is, so we + // can just call the original function directly. + + + if (orig.apply) { + return orig.apply(this, args); + } else { + return orig(args[0], args[1]); + } + }; + } + + var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; + + function wrapEventTarget(global) { + var proto = _window$1[global] && _window$1[global].prototype; + + if (proto && proto.hasOwnProperty && proto.hasOwnProperty('addEventListener')) { + fill(proto, 'addEventListener', function (orig) { + return function (evtName, fn, capture, secure) { + // preserve arity + try { + if (fn && fn.handleEvent) { + fn.handleEvent = self.wrap(fn.handleEvent); + } + } catch (err) {} // can sometimes get 'Permission denied to access property "handle Event' + // More breadcrumb DOM capture ... done here and not in `_instrumentBreadcrumbs` + // so that we don't have more than one wrapper function + + + var before, clickHandler, keypressHandler; + + if (autoBreadcrumbs && autoBreadcrumbs.dom && (global === 'EventTarget' || global === 'Node')) { + // NOTE: generating multiple handlers per addEventListener invocation, should + // revisit and verify we can just use one (almost certainly) + clickHandler = self._breadcrumbEventHandler('click'); + keypressHandler = self._keypressEventHandler(); + + before = function before(evt) { + // need to intercept every DOM event in `before` argument, in case that + // same wrapped method is re-used for different events (e.g. mousemove THEN click) + // see #724 + if (!evt) return; + var eventType; + + try { + eventType = evt.type; + } catch (e) { + // just accessing event properties can throw an exception in some rare circumstances + // see: https://github.com/getsentry/raven-js/issues/838 + return; + } + + if (eventType === 'click') return clickHandler(evt);else if (eventType === 'keypress') return keypressHandler(evt); + }; + } + + return orig.call(this, evtName, self.wrap(fn, undefined, before), capture, secure); + }; + }, wrappedBuiltIns); + fill(proto, 'removeEventListener', function (orig) { + return function (evt, fn, capture, secure) { + try { + fn = fn && (fn.__raven_wrapper__ ? fn.__raven_wrapper__ : fn); + } catch (e) {// ignore, accessing __raven_wrapper__ will throw in some Selenium environments + } + + return orig.call(this, evt, fn, capture, secure); + }; + }, wrappedBuiltIns); + } + } + + fill(_window$1, 'setTimeout', wrapTimeFn, wrappedBuiltIns); + fill(_window$1, 'setInterval', wrapTimeFn, wrappedBuiltIns); + + if (_window$1.requestAnimationFrame) { + fill(_window$1, 'requestAnimationFrame', function (orig) { + return function (cb) { + return orig(self.wrap(cb)); + }; + }, wrappedBuiltIns); + } // event targets borrowed from bugsnag-js: + // https://github.com/bugsnag/bugsnag-js/blob/master/src/bugsnag.js#L666 + + + var eventTargets = ['EventTarget', 'Window', 'Node', 'ApplicationCache', 'AudioTrackList', 'ChannelMergerNode', 'CryptoOperation', 'EventSource', 'FileReader', 'HTMLUnknownElement', 'IDBDatabase', 'IDBRequest', 'IDBTransaction', 'KeyOperation', 'MediaController', 'MessagePort', 'ModalWindow', 'Notification', 'SVGElementInstance', 'Screen', 'TextTrack', 'TextTrackCue', 'TextTrackList', 'WebSocket', 'WebSocketWorker', 'Worker', 'XMLHttpRequest', 'XMLHttpRequestEventTarget', 'XMLHttpRequestUpload']; + + for (var i = 0; i < eventTargets.length; i++) { + wrapEventTarget(eventTargets[i]); + } + }, + + /** + * Instrument browser built-ins w/ breadcrumb capturing + * - XMLHttpRequests + * - DOM interactions (click/typing) + * - window.location changes + * - console + * + * Can be disabled or individually configured via the `autoBreadcrumbs` config option + */ + _instrumentBreadcrumbs: function _instrumentBreadcrumbs() { + var self = this; + var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; + var wrappedBuiltIns = self._wrappedBuiltIns; + + function wrapProp(prop, xhr) { + if (prop in xhr && isFunction(xhr[prop])) { + fill(xhr, prop, function (orig) { + return self.wrap(orig); + }); // intentionally don't track filled methods on XHR instances + } + } + + if (autoBreadcrumbs.xhr && 'XMLHttpRequest' in _window$1) { + var xhrproto = XMLHttpRequest.prototype; + fill(xhrproto, 'open', function (origOpen) { + return function (method, url) { + // preserve arity + // if Sentry key appears in URL, don't capture + if (isString(url) && url.indexOf(self._globalKey) === -1) { + this.__raven_xhr = { + method: method, + url: url, + status_code: null + }; + } + + return origOpen.apply(this, arguments); + }; + }, wrappedBuiltIns); + fill(xhrproto, 'send', function (origSend) { + return function () { + // preserve arity + var xhr = this; + + function onreadystatechangeHandler() { + if (xhr.__raven_xhr && xhr.readyState === 4) { + try { + // touching statusCode in some platforms throws + // an exception + xhr.__raven_xhr.status_code = xhr.status; + } catch (e) { + /* do nothing */ + } + + self.captureBreadcrumb({ + type: 'http', + category: 'xhr', + data: xhr.__raven_xhr + }); + } + } + + var props = ['onload', 'onerror', 'onprogress']; + + for (var j = 0; j < props.length; j++) { + wrapProp(props[j], xhr); + } + + if ('onreadystatechange' in xhr && isFunction(xhr.onreadystatechange)) { + fill(xhr, 'onreadystatechange', function (orig) { + return self.wrap(orig, undefined, onreadystatechangeHandler); + } + /* intentionally don't track this instrumentation */ + ); + } else { + // if onreadystatechange wasn't actually set by the page on this xhr, we + // are free to set our own and capture the breadcrumb + xhr.onreadystatechange = onreadystatechangeHandler; + } + + return origSend.apply(this, arguments); + }; + }, wrappedBuiltIns); + } + + if (autoBreadcrumbs.xhr && supportsFetch()) { + fill(_window$1, 'fetch', function (origFetch) { + return function () { + // preserve arity + // Make a copy of the arguments to prevent deoptimization + // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments + var args = new Array(arguments.length); + + for (var i = 0; i < args.length; ++i) { + args[i] = arguments[i]; + } + + var fetchInput = args[0]; + var method = 'GET'; + var url; + + if (typeof fetchInput === 'string') { + url = fetchInput; + } else if ('Request' in _window$1 && fetchInput instanceof _window$1.Request) { + url = fetchInput.url; + + if (fetchInput.method) { + method = fetchInput.method; + } + } else { + url = '' + fetchInput; + } // if Sentry key appears in URL, don't capture, as it's our own request + + + if (url.indexOf(self._globalKey) !== -1) { + return origFetch.apply(this, args); + } + + if (args[1] && args[1].method) { + method = args[1].method; + } + + var fetchData = { + method: method, + url: url, + status_code: null + }; + return origFetch.apply(this, args).then(function (response) { + fetchData.status_code = response.status; + self.captureBreadcrumb({ + type: 'http', + category: 'fetch', + data: fetchData + }); + return response; + }); + }; + }, wrappedBuiltIns); + } // Capture breadcrumbs from any click that is unhandled / bubbled up all the way + // to the document. Do this before we instrument addEventListener. + + + if (autoBreadcrumbs.dom && this._hasDocument) { + if (_document.addEventListener) { + _document.addEventListener('click', self._breadcrumbEventHandler('click'), false); + + _document.addEventListener('keypress', self._keypressEventHandler(), false); + } else { + // IE8 Compatibility + _document.attachEvent('onclick', self._breadcrumbEventHandler('click')); + + _document.attachEvent('onkeypress', self._keypressEventHandler()); + } + } // record navigation (URL) changes + // NOTE: in Chrome App environment, touching history.pushState, *even inside + // a try/catch block*, will cause Chrome to output an error to console.error + // borrowed from: https://github.com/angular/angular.js/pull/13945/files + + + var chrome = _window$1.chrome; + var isChromePackagedApp = chrome && chrome.app && chrome.app.runtime; + var hasPushAndReplaceState = !isChromePackagedApp && _window$1.history && history.pushState && history.replaceState; + + if (autoBreadcrumbs.location && hasPushAndReplaceState) { + // TODO: remove onpopstate handler on uninstall() + var oldOnPopState = _window$1.onpopstate; + + _window$1.onpopstate = function () { + var currentHref = self._location.href; + + self._captureUrlChange(self._lastHref, currentHref); + + if (oldOnPopState) { + return oldOnPopState.apply(this, arguments); + } + }; + + var historyReplacementFunction = function historyReplacementFunction(origHistFunction) { + // note history.pushState.length is 0; intentionally not declaring + // params to preserve 0 arity + return function () + /* state, title, url */ + { + var url = arguments.length > 2 ? arguments[2] : undefined; // url argument is optional + + if (url) { + // coerce to string (this is what pushState does) + self._captureUrlChange(self._lastHref, url + ''); + } + + return origHistFunction.apply(this, arguments); + }; + }; + + fill(history, 'pushState', historyReplacementFunction, wrappedBuiltIns); + fill(history, 'replaceState', historyReplacementFunction, wrappedBuiltIns); + } + + if (autoBreadcrumbs.console && 'console' in _window$1 && console.log) { + // console + var consoleMethodCallback = function consoleMethodCallback(msg, data) { + self.captureBreadcrumb({ + message: msg, + level: data.level, + category: 'console' + }); + }; + + each(['debug', 'info', 'warn', 'error', 'log'], function (_, level) { + wrapConsoleMethod(console, level, consoleMethodCallback); + }); + } + }, + _restoreBuiltIns: function _restoreBuiltIns() { + // restore any wrapped builtins + var builtin; + + while (this._wrappedBuiltIns.length) { + builtin = this._wrappedBuiltIns.shift(); + var obj = builtin[0], + name = builtin[1], + orig = builtin[2]; + obj[name] = orig; + } + }, + _restoreConsole: function _restoreConsole() { + // eslint-disable-next-line guard-for-in + for (var method in this._originalConsoleMethods) { + this._originalConsole[method] = this._originalConsoleMethods[method]; + } + }, + _drainPlugins: function _drainPlugins() { + var self = this; // FIX ME TODO + + each(this._plugins, function (_, plugin) { + var installer = plugin[0]; + var args = plugin[1]; + installer.apply(self, [self].concat(args)); + }); + }, + _parseDSN: function _parseDSN(str) { + var m = dsnPattern.exec(str), + dsn = {}, + i = 7; + + try { + while (i--) { + dsn[dsnKeys[i]] = m[i] || ''; + } + } catch (e) { + throw new configError('Invalid DSN: ' + str); + } + + if (dsn.pass && !this._globalOptions.allowSecretKey) { + throw new configError('Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key'); + } + + return dsn; + }, + _getGlobalServer: function _getGlobalServer(uri) { + // assemble the endpoint from the uri pieces + var globalServer = '//' + uri.host + (uri.port ? ':' + uri.port : ''); + + if (uri.protocol) { + globalServer = uri.protocol + ':' + globalServer; + } + + return globalServer; + }, + _handleOnErrorStackInfo: function _handleOnErrorStackInfo() { + // if we are intentionally ignoring errors via onerror, bail out + if (!this._ignoreOnError) { + this._handleStackInfo.apply(this, arguments); + } + }, + _handleStackInfo: function _handleStackInfo(stackInfo, options) { + var frames = this._prepareFrames(stackInfo, options); + + this._triggerEvent('handle', { + stackInfo: stackInfo, + options: options + }); + + this._processException(stackInfo.name, stackInfo.message, stackInfo.url, stackInfo.lineno, frames, options); + }, + _prepareFrames: function _prepareFrames(stackInfo, options) { + var self = this; + var frames = []; + + if (stackInfo.stack && stackInfo.stack.length) { + each(stackInfo.stack, function (i, stack) { + var frame = self._normalizeFrame(stack, stackInfo.url); + + if (frame) { + frames.push(frame); + } + }); // e.g. frames captured via captureMessage throw + + if (options && options.trimHeadFrames) { + for (var j = 0; j < options.trimHeadFrames && j < frames.length; j++) { + frames[j].in_app = false; + } + } + } + + frames = frames.slice(0, this._globalOptions.stackTraceLimit); + return frames; + }, + _normalizeFrame: function _normalizeFrame(frame, stackInfoUrl) { + // normalize the frames data + var normalized = { + filename: frame.url, + lineno: frame.line, + colno: frame.column, + function: frame.func || '?' + }; // Case when we don't have any information about the error + // E.g. throwing a string or raw object, instead of an `Error` in Firefox + // Generating synthetic error doesn't add any value here + // + // We should probably somehow let a user know that they should fix their code + + if (!frame.url) { + normalized.filename = stackInfoUrl; // fallback to whole stacks url from onerror handler + } + + normalized.in_app = !( // determine if an exception came from outside of our app + // first we check the global includePaths list. + !!this._globalOptions.includePaths.test && !this._globalOptions.includePaths.test(normalized.filename) || // Now we check for fun, if the function name is Raven or TraceKit + /(Raven|TraceKit)\./.test(normalized['function']) || // finally, we do a last ditch effort and check for raven.min.js + /raven\.(min\.)?js$/.test(normalized.filename)); + return normalized; + }, + _processException: function _processException(type, message, fileurl, lineno, frames, options) { + var prefixedMessage = (type ? type + ': ' : '') + (message || ''); + + if (!!this._globalOptions.ignoreErrors.test && (this._globalOptions.ignoreErrors.test(message) || this._globalOptions.ignoreErrors.test(prefixedMessage))) { + return; + } + + var stacktrace; + + if (frames && frames.length) { + fileurl = frames[0].filename || fileurl; // Sentry expects frames oldest to newest + // and JS sends them as newest to oldest + + frames.reverse(); + stacktrace = { + frames: frames + }; + } else if (fileurl) { + stacktrace = { + frames: [{ + filename: fileurl, + lineno: lineno, + in_app: true + }] + }; + } + + if (!!this._globalOptions.ignoreUrls.test && this._globalOptions.ignoreUrls.test(fileurl)) { + return; + } + + if (!!this._globalOptions.whitelistUrls.test && !this._globalOptions.whitelistUrls.test(fileurl)) { + return; + } + + var data = objectMerge({ + // sentry.interfaces.Exception + exception: { + values: [{ + type: type, + value: message, + stacktrace: stacktrace + }] + }, + culprit: fileurl + }, options); // Fire away! + + this._send(data); + }, + _trimPacket: function _trimPacket(data) { + // For now, we only want to truncate the two different messages + // but this could/should be expanded to just trim everything + var max = this._globalOptions.maxMessageLength; + + if (data.message) { + data.message = truncate(data.message, max); + } + + if (data.exception) { + var exception = data.exception.values[0]; + exception.value = truncate(exception.value, max); + } + + var request = data.request; + + if (request) { + if (request.url) { + request.url = truncate(request.url, this._globalOptions.maxUrlLength); + } + + if (request.Referer) { + request.Referer = truncate(request.Referer, this._globalOptions.maxUrlLength); + } + } + + if (data.breadcrumbs && data.breadcrumbs.values) this._trimBreadcrumbs(data.breadcrumbs); + return data; + }, + + /** + * Truncate breadcrumb values (right now just URLs) + */ + _trimBreadcrumbs: function _trimBreadcrumbs(breadcrumbs) { + // known breadcrumb properties with urls + // TODO: also consider arbitrary prop values that start with (https?)?:// + var urlProps = ['to', 'from', 'url'], + urlProp, + crumb, + data; + + for (var i = 0; i < breadcrumbs.values.length; ++i) { + crumb = breadcrumbs.values[i]; + if (!crumb.hasOwnProperty('data') || !isObject(crumb.data) || objectFrozen(crumb.data)) continue; + data = objectMerge({}, crumb.data); + + for (var j = 0; j < urlProps.length; ++j) { + urlProp = urlProps[j]; + + if (data.hasOwnProperty(urlProp) && data[urlProp]) { + data[urlProp] = truncate(data[urlProp], this._globalOptions.maxUrlLength); + } + } + + breadcrumbs.values[i].data = data; + } + }, + _getHttpData: function _getHttpData() { + if (!this._hasNavigator && !this._hasDocument) return; + var httpData = {}; + + if (this._hasNavigator && _navigator.userAgent) { + httpData.headers = { + 'User-Agent': navigator.userAgent + }; + } // Check in `window` instead of `document`, as we may be in ServiceWorker environment + + + if (_window$1.location && _window$1.location.href) { + httpData.url = _window$1.location.href; + } + + if (this._hasDocument && _document.referrer) { + if (!httpData.headers) httpData.headers = {}; + httpData.headers.Referer = _document.referrer; + } + + return httpData; + }, + _resetBackoff: function _resetBackoff() { + this._backoffDuration = 0; + this._backoffStart = null; + }, + _shouldBackoff: function _shouldBackoff() { + return this._backoffDuration && now() - this._backoffStart < this._backoffDuration; + }, + + /** + * Returns true if the in-process data payload matches the signature + * of the previously-sent data + * + * NOTE: This has to be done at this level because TraceKit can generate + * data from window.onerror WITHOUT an exception object (IE8, IE9, + * other old browsers). This can take the form of an "exception" + * data object with a single frame (derived from the onerror args). + */ + _isRepeatData: function _isRepeatData(current) { + var last = this._lastData; + if (!last || current.message !== last.message || // defined for captureMessage + current.culprit !== last.culprit // defined for captureException/onerror + ) return false; // Stacktrace interface (i.e. from captureMessage) + + if (current.stacktrace || last.stacktrace) { + return isSameStacktrace(current.stacktrace, last.stacktrace); + } else if (current.exception || last.exception) { + // Exception interface (i.e. from captureException/onerror) + return isSameException(current.exception, last.exception); + } + + return true; + }, + _setBackoffState: function _setBackoffState(request) { + // If we are already in a backoff state, don't change anything + if (this._shouldBackoff()) { + return; + } + + var status = request.status; // 400 - project_id doesn't exist or some other fatal + // 401 - invalid/revoked dsn + // 429 - too many requests + + if (!(status === 400 || status === 401 || status === 429)) return; + var retry; + + try { + // If Retry-After is not in Access-Control-Expose-Headers, most + // browsers will throw an exception trying to access it + if (supportsFetch()) { + retry = request.headers.get('Retry-After'); + } else { + retry = request.getResponseHeader('Retry-After'); + } // Retry-After is returned in seconds + + + retry = parseInt(retry, 10) * 1000; + } catch (e) { + /* eslint no-empty:0 */ + } + + this._backoffDuration = retry ? // If Sentry server returned a Retry-After value, use it + retry : // Otherwise, double the last backoff duration (starts at 1 sec) + this._backoffDuration * 2 || 1000; + this._backoffStart = now(); + }, + _send: function _send(data) { + var globalOptions = this._globalOptions; + + var baseData = { + project: this._globalProject, + logger: globalOptions.logger, + platform: 'javascript' + }, + httpData = this._getHttpData(); + + if (httpData) { + baseData.request = httpData; + } // HACK: delete `trimHeadFrames` to prevent from appearing in outbound payload + + + if (data.trimHeadFrames) delete data.trimHeadFrames; + data = objectMerge(baseData, data); // Merge in the tags and extra separately since objectMerge doesn't handle a deep merge + + data.tags = objectMerge(objectMerge({}, this._globalContext.tags), data.tags); + data.extra = objectMerge(objectMerge({}, this._globalContext.extra), data.extra); // Send along our own collected metadata with extra + + data.extra['session:duration'] = now() - this._startTime; + + if (this._breadcrumbs && this._breadcrumbs.length > 0) { + // intentionally make shallow copy so that additions + // to breadcrumbs aren't accidentally sent in this request + data.breadcrumbs = { + values: [].slice.call(this._breadcrumbs, 0) + }; + } + + if (this._globalContext.user) { + // sentry.interfaces.User + data.user = this._globalContext.user; + } // Include the environment if it's defined in globalOptions + + + if (globalOptions.environment) data.environment = globalOptions.environment; // Include the release if it's defined in globalOptions + + if (globalOptions.release) data.release = globalOptions.release; // Include server_name if it's defined in globalOptions + + if (globalOptions.serverName) data.server_name = globalOptions.serverName; // Cleanup empty properties before sending them to the server + + Object.keys(data).forEach(function (key) { + if (data[key] == null || data[key] === '' || isEmptyObject(data[key])) { + delete data[key]; + } + }); + + if (isFunction(globalOptions.dataCallback)) { + data = globalOptions.dataCallback(data) || data; + } // Why?????????? + + + if (!data || isEmptyObject(data)) { + return; + } // Check if the request should be filtered or not + + + if (isFunction(globalOptions.shouldSendCallback) && !globalOptions.shouldSendCallback(data)) { + return; + } // Backoff state: Sentry server previously responded w/ an error (e.g. 429 - too many requests), + // so drop requests until "cool-off" period has elapsed. + + + if (this._shouldBackoff()) { + this._logDebug('warn', 'Raven dropped error due to backoff: ', data); + + return; + } + + if (typeof globalOptions.sampleRate === 'number') { + if (Math.random() < globalOptions.sampleRate) { + this._sendProcessedPayload(data); + } + } else { + this._sendProcessedPayload(data); + } + }, + _getUuid: function _getUuid() { + return uuid4(); + }, + _sendProcessedPayload: function _sendProcessedPayload(data, callback) { + var self = this; + var globalOptions = this._globalOptions; + if (!this.isSetup()) return; // Try and clean up the packet before sending by truncating long values + + data = this._trimPacket(data); // ideally duplicate error testing should occur *before* dataCallback/shouldSendCallback, + // but this would require copying an un-truncated copy of the data packet, which can be + // arbitrarily deep (extra_data) -- could be worthwhile? will revisit + + if (!this._globalOptions.allowDuplicates && this._isRepeatData(data)) { + this._logDebug('warn', 'Raven dropped repeat event: ', data); + + return; + } // Send along an event_id if not explicitly passed. + // This event_id can be used to reference the error within Sentry itself. + // Set lastEventId after we know the error should actually be sent + + + this._lastEventId = data.event_id || (data.event_id = this._getUuid()); // Store outbound payload after trim + + this._lastData = data; + + this._logDebug('debug', 'Raven about to send:', data); + + var auth = { + sentry_version: '7', + sentry_client: 'raven-js/' + this.VERSION, + sentry_key: this._globalKey + }; + + if (this._globalSecret) { + auth.sentry_secret = this._globalSecret; + } + + var exception = data.exception && data.exception.values[0]; // only capture 'sentry' breadcrumb is autoBreadcrumbs is truthy + + if (this._globalOptions.autoBreadcrumbs && this._globalOptions.autoBreadcrumbs.sentry) { + this.captureBreadcrumb({ + category: 'sentry', + message: exception ? (exception.type ? exception.type + ': ' : '') + exception.value : data.message, + event_id: data.event_id, + level: data.level || 'error' // presume error unless specified + + }); + } + + var url = this._globalEndpoint; + + (globalOptions.transport || this._makeRequest).call(this, { + url: url, + auth: auth, + data: data, + options: globalOptions, + onSuccess: function success() { + self._resetBackoff(); + + self._triggerEvent('success', { + data: data, + src: url + }); + + callback && callback(); + }, + onError: function failure(error) { + self._logDebug('error', 'Raven transport failed to send: ', error); + + if (error.request) { + self._setBackoffState(error.request); + } + + self._triggerEvent('failure', { + data: data, + src: url + }); + + error = error || new Error('Raven send failed (no additional details provided)'); + callback && callback(error); + } + }); + }, + _makeRequest: function _makeRequest(opts) { + // Auth is intentionally sent as part of query string (NOT as custom HTTP header) to avoid preflight CORS requests + var url = opts.url + '?' + urlencode(opts.auth); + var evaluatedHeaders = null; + var evaluatedFetchParameters = {}; + + if (opts.options.headers) { + evaluatedHeaders = this._evaluateHash(opts.options.headers); + } + + if (opts.options.fetchParameters) { + evaluatedFetchParameters = this._evaluateHash(opts.options.fetchParameters); + } + + if (supportsFetch()) { + evaluatedFetchParameters.body = stringify_1(opts.data); + var defaultFetchOptions = objectMerge({}, this._fetchDefaults); + var fetchOptions = objectMerge(defaultFetchOptions, evaluatedFetchParameters); + + if (evaluatedHeaders) { + fetchOptions.headers = evaluatedHeaders; + } + + return _window$1.fetch(url, fetchOptions).then(function (response) { + if (response.ok) { + opts.onSuccess && opts.onSuccess(); + } else { + var error = new Error('Sentry error code: ' + response.status); // It's called request only to keep compatibility with XHR interface + // and not add more redundant checks in setBackoffState method + + error.request = response; + opts.onError && opts.onError(error); + } + })['catch'](function () { + opts.onError && opts.onError(new Error('Sentry error code: network unavailable')); + }); + } + + var request = _window$1.XMLHttpRequest && new _window$1.XMLHttpRequest(); + if (!request) return; // if browser doesn't support CORS (e.g. IE7), we are out of luck + + var hasCORS = 'withCredentials' in request || typeof XDomainRequest !== 'undefined'; + if (!hasCORS) return; + + if ('withCredentials' in request) { + request.onreadystatechange = function () { + if (request.readyState !== 4) { + return; + } else if (request.status === 200) { + opts.onSuccess && opts.onSuccess(); + } else if (opts.onError) { + var err = new Error('Sentry error code: ' + request.status); + err.request = request; + opts.onError(err); + } + }; + } else { + request = new XDomainRequest(); // xdomainrequest cannot go http -> https (or vice versa), + // so always use protocol relative + + url = url.replace(/^https?:/, ''); // onreadystatechange not supported by XDomainRequest + + if (opts.onSuccess) { + request.onload = opts.onSuccess; + } + + if (opts.onError) { + request.onerror = function () { + var err = new Error('Sentry error code: XDomainRequest'); + err.request = request; + opts.onError(err); + }; + } + } + + request.open('POST', url); + + if (evaluatedHeaders) { + each(evaluatedHeaders, function (key, value) { + request.setRequestHeader(key, value); + }); + } + + request.send(stringify_1(opts.data)); + }, + _evaluateHash: function _evaluateHash(hash) { + var evaluated = {}; + + for (var key in hash) { + if (hash.hasOwnProperty(key)) { + var value = hash[key]; + evaluated[key] = typeof value === 'function' ? value() : value; + } + } + + return evaluated; + }, + _logDebug: function _logDebug(level) { + if (this._originalConsoleMethods[level] && this.debug) { + // In IE<10 console methods do not have their own 'apply' method + Function.prototype.apply.call(this._originalConsoleMethods[level], this._originalConsole, [].slice.call(arguments, 1)); + } + }, + _mergeContext: function _mergeContext(key, context) { + if (isUndefined(context)) { + delete this._globalContext[key]; + } else { + this._globalContext[key] = objectMerge(this._globalContext[key] || {}, context); + } + } +}; // Deprecations + +Raven$1.prototype.setUser = Raven$1.prototype.setUserContext; +Raven$1.prototype.setReleaseContext = Raven$1.prototype.setRelease; +var raven = Raven$1; + +/** + * Enforces a single instance of the Raven client, and the + * main entry point for Raven. If you are a consumer of the + * Raven library, you SHOULD load this file (vs raven.js). + **/ +// This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) + +var _window = typeof window !== 'undefined' ? window : typeof commonjsGlobal !== 'undefined' ? commonjsGlobal : typeof self !== 'undefined' ? self : {}; + +var _Raven = _window.Raven; +var Raven = new raven(); +/* + * Allow multiple versions of Raven to be installed. + * Strip Raven from the global context and returns the instance. + * + * @return {Raven} + */ + +Raven.noConflict = function () { + _window.Raven = _Raven; + return Raven; +}; + +Raven.afterLoad(); +var singleton = Raven; + +/** + * Angular.js plugin + * + * Provides an $exceptionHandler for Angular.js + */ + +var wrappedCallback$1 = utils.wrappedCallback; // See https://github.com/angular/angular.js/blob/v1.4.7/src/minErr.js + +var angularPattern = /^\[((?:[$a-zA-Z0-9]+:)?(?:[$a-zA-Z0-9]+))\] (.*?)\n?(\S+)$/; +var moduleName = 'ngRaven'; + +function angularPlugin(Raven, angular) { + angular = angular || window.angular; + if (!angular) return; + + function RavenProvider() { + this.$get = ['$window', function ($window) { + return Raven; + }]; + } + + function ExceptionHandlerProvider($provide) { + $provide.decorator('$exceptionHandler', ['Raven', '$delegate', exceptionHandler]); + } + + function exceptionHandler(R, $delegate) { + return function (ex, cause) { + R.captureException(ex, { + extra: { + cause: cause + } + }); + $delegate(ex, cause); + }; + } + + angular.module(moduleName, []).provider('Raven', RavenProvider).config(['$provide', ExceptionHandlerProvider]); + Raven.setDataCallback(wrappedCallback$1(function (data) { + return angularPlugin._normalizeData(data); + })); +} + +angularPlugin._normalizeData = function (data) { + // We only care about mutating an exception + var exception = data.exception; + + if (exception) { + exception = exception.values[0]; + var matches = angularPattern.exec(exception.value); + + if (matches) { + // This type now becomes something like: $rootScope:inprog + exception.type = matches[1]; + exception.value = matches[2]; + data.message = exception.type + ': ' + exception.value; // auto set a new tag specifically for the angular error url + + data.extra.angularDocs = matches[3].substr(0, 250); + } + } + + return data; +}; + +angularPlugin.moduleName = moduleName; +var angular = angularPlugin; + +/** + * console plugin + * + * Monkey patches console.* calls into Sentry messages with + * their appropriate log levels. (Experimental) + * + * Options: + * + * `levels`: An array of levels (methods on `console`) to report to Sentry. + * Defaults to debug, info, warn, and error. + */ + +var wrapConsoleMethod$1 = console$1.wrapMethod; + +function consolePlugin(Raven, console, pluginOptions) { + console = console || window.console || {}; + pluginOptions = pluginOptions || {}; + var logLevels = pluginOptions.levels || ['debug', 'info', 'warn', 'error']; + if ('assert' in console) logLevels.push('assert'); + + var callback = function callback(msg, data) { + Raven.captureMessage(msg, data); + }; + + var level = logLevels.pop(); + + while (level) { + wrapConsoleMethod$1(console, level, callback); + level = logLevels.pop(); + } +} + +var console$3 = consolePlugin; + +/** + * Ember.js plugin + * + * Patches event handler callbacks and ajax callbacks. + */ +function emberPlugin(Raven, Ember) { + Ember = Ember || window.Ember; // quit if Ember isn't on the page + + if (!Ember) return; + var _oldOnError = Ember.onerror; + + Ember.onerror = function EmberOnError(error) { + Raven.captureException(error); + + if (typeof _oldOnError === 'function') { + _oldOnError.call(this, error); + } + }; + + Ember.RSVP.on('error', function (reason) { + if (reason instanceof Error) { + Raven.captureException(reason, { + extra: { + context: 'Unhandled Promise error detected' + } + }); + } else { + Raven.captureMessage('Unhandled Promise error detected', { + extra: { + reason: reason + } + }); + } + }); +} + +var ember = emberPlugin; + +/** + * Vue.js 2.0 plugin + * + */ +function formatComponentName(vm) { + if (vm.$root === vm) { + return 'root instance'; + } + + var name = vm._isVue ? vm.$options.name || vm.$options._componentTag : vm.name; + return (name ? 'component <' + name + '>' : 'anonymous component') + (vm._isVue && vm.$options.__file ? ' at ' + vm.$options.__file : ''); +} + +function vuePlugin(Raven, Vue) { + Vue = Vue || window.Vue; // quit if Vue isn't on the page + + if (!Vue || !Vue.config) return; + var _oldOnError = Vue.config.errorHandler; + + Vue.config.errorHandler = function VueErrorHandler(error, vm, info) { + var metaData = {}; // vm and lifecycleHook are not always available + + if (Object.prototype.toString.call(vm) === '[object Object]') { + metaData.componentName = formatComponentName(vm); + metaData.propsData = vm.$options.propsData; + } + + if (typeof info !== 'undefined') { + metaData.lifecycleHook = info; + } + + Raven.captureException(error, { + extra: metaData + }); + + if (typeof _oldOnError === 'function') { + _oldOnError.call(this, error, vm, info); + } + }; +} + +var vue = vuePlugin; + +/* This file was generated by './scripts/generate-plugin-combinations.js'! */ + +singleton.addPlugin(angular).addPlugin(console$3).addPlugin(ember).addPlugin(vue); +var angular_console_ember_vue = {}; + +return angular_console_ember_vue; + +}))); diff --git a/dist/angular,console,ember,vue/raven.min.js b/dist/angular,console,ember,vue/raven.min.js new file mode 100644 index 000000000000..8ed3775214a4 --- /dev/null +++ b/dist/angular,console,ember,vue/raven.min.js @@ -0,0 +1,3 @@ +/*! Raven.js 3.22.2 (1b6187b) | github.com/getsentry/raven-js */ +!function(a,b){"object"==typeof exports&&"undefined"!=typeof module?module.exports=b():"function"==typeof define&&define.amd?define(b):a.Raven=b()}(this,function(){"use strict";function a(a,b){return b={exports:{}},a(b,b.exports),b.exports}function b(a){return(b="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(a){return typeof a}:function(a){return a&&"function"==typeof Symbol&&a.constructor===Symbol&&a!==Symbol.prototype?"symbol":typeof a})(a)}function c(a){return"object"===b(a)&&null!==a}function d(a){switch({}.toString.call(a)){case"[object Error]":return!0;case"[object Exception]":return!0;case"[object DOMException]":return!0;default:return a instanceof Error}}function e(a){return l()&&"[object ErrorEvent]"==={}.toString.call(a)}function f(a){return void 0===a}function g(a){return"function"==typeof a}function h(a){return"[object Object]"===Object.prototype.toString.call(a)}function i(a){return"[object String]"===Object.prototype.toString.call(a)}function j(a){return"[object Array]"===Object.prototype.toString.call(a)}function k(a){if(!h(a))return!1;for(var b in a)if(a.hasOwnProperty(b))return!1;return!0}function l(){try{return new ErrorEvent(""),!0}catch(a){return!1}}function m(){if(!("fetch"in R))return!1;try{return new Headers,new Request(""),new Response,!0}catch(a){return!1}}function n(a){function b(b,c){var d=a(b)||b;return c?c(d)||d:d}return b}function o(a,b){var c,d;if(f(a.length))for(c in a)s(a,c)&&b.call(null,c,a[c]);else if(d=a.length)for(c=0;c ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function y(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&i(b))for(c=b.split(/\s+/),f=0;f":"anonymous component")+(a._isVue&&a.$options.__file?" at "+a.$options.__file:"")}function O(a,b){if(b=b||window.Vue,b&&b.config){var c=b.config.errorHandler;b.config.errorHandler=function(b,d,e){var f={};"[object Object]"===Object.prototype.toString.call(d)&&(f.componentName=N(d),f.propsData=d.$options.propsData),"undefined"!=typeof e&&(f.lifecycleHook=e),a.captureException(b,{extra:f}),"function"==typeof c&&c.call(this,b,d,e)}}}var P="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{},Q=Object.setPrototypeOf||function(a,b){return a.C=b,a},R=("object"==typeof Reflect&&Reflect.construct||function(a,b,c){var d,e=[null];return e.push.apply(e,b),d=a.bind.apply(a,e),Q(new d,c.prototype)},"undefined"!=typeof window?window:"undefined"!=typeof P?P:"undefined"!=typeof self?self:{}),S={isObject:c,isError:d,isErrorEvent:e,isUndefined:f,isFunction:g,isPlainObject:h,isString:i,isArray:j,isEmptyObject:k,supportsErrorEvent:l,supportsFetch:m,wrappedCallback:n,each:o,objectMerge:p,truncate:r,objectFrozen:q,hasKey:s,joinRegExp:t,urlencode:u,uuid4:w,htmlTreeAsString:x,htmlElementAsString:y,isSameException:B,isSameStacktrace:C,parseUrl:v,fill:D,safeJoin:E},T={collectWindowErrors:!0,debug:!1},U="undefined"!=typeof window?window:"undefined"!=typeof P?P:"undefined"!=typeof self?self:{},V=[].slice,W="?",X=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;T.report=function(){function a(a){f(),l.push(a)}function b(a){for(var b=l.length-1;b>=0;--b)l[b]===a&&l.splice(b,1)}function c(){g(),l=[]}function d(a,b){var c=null;if(!b||T.collectWindowErrors){for(var d in l)if(l.hasOwnProperty(d))try{l[d].apply(null,[a].concat(V.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function e(a,b,c,e,f){var g=null,i=S.isErrorEvent(f)?f.error:f,k=S.isErrorEvent(a)?a.message:a;if(o)T.computeStackTrace.augmentStackTraceWithInitialElement(o,b,c,k),h();else if(i&&S.isError(i))g=T.computeStackTrace(i),d(g,!0);else{var l,m={url:b,line:c,column:e},n=void 0;if("[object String]"==={}.toString.call(k)){var l=k.match(X);l&&(n=l[1],k=l[2])}m.func=W,g={name:n,message:k,url:F(),stack:[m]},d(g,!0)}return!!j&&j.apply(this,arguments)}function f(){k||(j=U.onerror,U.onerror=e,k=!0)}function g(){k&&(U.onerror=j,k=!1,j=void 0)}function h(){var a=o,b=m;m=null,o=null,n=null,d.apply(null,[a,!1].concat(b))}function i(a,b){var c=V.call(arguments,1);if(o){if(n===a)return;h()}var d=T.computeStackTrace(a);if(o=d,n=a,m=c,setTimeout(function(){n===a&&h()},d.incomplete?2e3:0),b!==!1)throw a}var j,k,l=[],m=null,n=null,o=null;return i.subscribe=a,i.unsubscribe=b,i.uninstall=c,i}(),T.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,d,e=/^\s*at (.*?) ?\(((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,f=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|\[native).*?|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,g=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,h=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,i=/\((\S*)(?::(\d+))(?::(\d+))\)/,j=a.stack.split("\n"),k=[],l=(/^(.*) is undefined$/.exec(a.message),0),m=j.length;l eval")>-1;o&&(b=h.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==l||c[5]||"undefined"==typeof a.columnNumber||(k[0].column=a.columnNumber+1),d={url:c[3],func:c[1]||W,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}!d.func&&d.line&&(d.func=W),k.push(d)}return k.length?{name:a.name,message:a.message,url:F(),stack:k}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=W),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,e){for(var f,g,h=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,i=[],j={},k=!1,l=c.caller;l&&!k;l=l.caller)if(l!==d&&l!==T.report){if(g={url:null,func:W,line:null,column:null},l.name?g.func=l.name:(f=h.exec(l.toString()))&&(g.func=f[1]),"undefined"==typeof g.func)try{g.func=f.input.substring(0,f.input.indexOf("{"))}catch(m){}j[""+l]?k=!0:j[""+l]=!0,i.push(g)}e&&i.splice(0,e);var n={name:a.name,message:a.message,url:F(),stack:i};return b(n,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),n}function d(b,d){var e=null;d=null==d?0:+d;try{if(e=a(b))return e}catch(f){if(T.debug)throw f}try{if(e=c(b,d+1))return e}catch(f){if(T.debug)throw f}return{name:b.name,message:b.message,url:F()}}return d.augmentStackTraceWithInitialElement=b,d.computeStackTraceFromStackProp=a,d}();var Y=T,Z=a(function(a,b){function c(a,b){for(var c=0;c0){var i=c(d,this);~i?d.splice(i+1):d.push(this),~i?f.splice(i,1/0,g):f.push(g),~c(d,h)&&(h=b.call(this,g,h))}else d.push(h);return null==a?h instanceof Error?e(h):h:a.call(this,g,h)}}b=a.exports=d,b.getSerialize=f});G.prototype=new Error,G.prototype.constructor=G;var $=G,_=function(a,b,c){var d=a[b],e=a;if(b in a){var f="warn"===b?"warning":b;a[b]=function(){var a=[].slice.call(arguments),g=S.safeJoin(a," "),h={level:f,logger:"console",extra:{arguments:a}};"assert"===b?a[0]===!1&&(g="Assertion failed: "+(S.safeJoin(a.slice(1)," ")||"console.assert"),h.extra.arguments=a.slice(1),c&&c(g,h)):c&&c(g,h),d&&Function.prototype.apply.call(d,e,a)}}},aa={wrapMethod:_},ba=S.isError,ca=S.isObject,da=S.isErrorEvent,ea=S.isUndefined,fa=S.isFunction,ga=S.isString,ha=S.isArray,ia=S.isEmptyObject,ja=S.each,ka=S.objectMerge,la=S.truncate,ma=S.objectFrozen,na=S.hasKey,oa=S.joinRegExp,pa=S.urlencode,qa=S.uuid4,ra=S.htmlTreeAsString,sa=S.isSameException,ta=S.isSameStacktrace,ua=S.parseUrl,va=S.fill,wa=S.supportsFetch,xa=aa.wrapMethod,ya="source protocol user pass host port path".split(" "),za=/^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/,Aa="undefined"!=typeof window?window:"undefined"!=typeof P?P:"undefined"!=typeof self?self:{},Ba=Aa.document,Ca=Aa.navigator;J.prototype={VERSION:"3.22.2",debug:!1,TraceKit:Y,config:function(a,b){var c=this;if(c.i)return this.D("error","Error: Raven has already been configured"),c;if(!a)return c;var d=c.m;b&&ja(b,function(a,b){"tags"===a||"extra"===a||"user"===a?c.l[a]=b:d[a]=b}),c.setDSN(a),d.ignoreErrors.push(/^Script error\.?$/),d.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/),d.ignoreErrors=oa(d.ignoreErrors),d.ignoreUrls=!!d.ignoreUrls.length&&oa(d.ignoreUrls),d.whitelistUrls=!!d.whitelistUrls.length&&oa(d.whitelistUrls),d.includePaths=oa(d.includePaths),d.maxBreadcrumbs=Math.max(0,Math.min(d.maxBreadcrumbs||100,100));var e={xhr:!0,console:!0,dom:!0,location:!0,sentry:!0},f=d.autoBreadcrumbs;"[object Object]"==={}.toString.call(f)?f=ka(e,f):f!==!1&&(f=e),d.autoBreadcrumbs=f;var g={tryCatch:!0},h=d.instrument;return"[object Object]"==={}.toString.call(h)?h=ka(g,h):h!==!1&&(h=g),d.instrument=h,Y.collectWindowErrors=!!d.collectWindowErrors,c},install:function(){var a=this;return a.isSetup()&&!a.p&&(Y.report.subscribe(function(){a.E.apply(a,arguments)}),a.F(),a.m.instrument&&a.m.instrument.tryCatch&&a.G(),a.m.autoBreadcrumbs&&a.H(),a.I(),a.p=!0),Error.stackTraceLimit=a.m.stackTraceLimit,this},setDSN:function(a){var b=this,c=b.J(a),d=c.path.lastIndexOf("/"),e=c.path.substr(1,d);b.K=a,b.j=c.user,b.L=c.pass&&c.pass.substr(1),b.k=c.path.substr(d+1),b.i=b.M(c),b.N=b.i+"/"+e+"api/"+b.k+"/store/",this.A()},context:function(a,b,c){return fa(a)&&(c=b||[],b=a,a=void 0),this.wrap(a,b).apply(this,c)},wrap:function(a,b,c){function d(){var d=[],f=arguments.length,g=!a||a&&a.deep!==!1;for(c&&fa(c)&&c.apply(this,arguments);f--;)d[f]=g?e.wrap(a,arguments[f]):arguments[f];try{return b.apply(this,d)}catch(h){throw e.O(),e.captureException(h,a),h}}var e=this;if(ea(b)&&!fa(a))return a;if(fa(a)&&(b=a,a=void 0),!fa(b))return b;try{if(b.a)return b;if(b.P)return b.P}catch(f){return b}for(var g in b)na(b,g)&&(d[g]=b[g]);return d.prototype=b.prototype,b.P=d,d.a=!0,d.b=b,d},uninstall:function(){return Y.report.uninstall(),this.Q(),this.R(),this.S(),Error.stackTraceLimit=this.q,this.p=!1,this},captureException:function(a,b){b=ka({trimHeadFrames:0},b?b:{});var c=!ba(a),d=!da(a),e=da(a)&&!a.error;if(c&&d||e)return this.captureMessage(a,ka(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}));da(a)&&(a=a.error),this.f=a;try{var f=Y.computeStackTrace(a);this.T(f,b)}catch(g){if(a!==g)throw g}return this},captureMessage:function(a,b){if(!this.m.ignoreErrors.test||!this.m.ignoreErrors.test(a)){b=b||{};var c,d=ka({message:a+""},b);try{throw new Error(a)}catch(e){c=e}c.name=null;var f=Y.computeStackTrace(c),g=ha(f.stack)&&f.stack[1],h=g&&g.url||"";if((!this.m.ignoreUrls.test||!this.m.ignoreUrls.test(h))&&(!this.m.whitelistUrls.test||this.m.whitelistUrls.test(h))){if(this.m.stacktrace||b&&b.stacktrace){b=ka({fingerprint:a,trimHeadFrames:(b.trimHeadFrames||0)+1},b);var i=this.U(f,b);d.stacktrace={frames:i.reverse()}}return this.V(d),this}}},captureBreadcrumb:function(a){var b=ka({timestamp:H()/1e3},a);if(fa(this.m.breadcrumbCallback)){var c=this.m.breadcrumbCallback(b);if(ca(c)&&!ia(c))b=c;else if(c===!1)return this}return this.w.push(b),this.w.length>this.m.maxBreadcrumbs&&this.w.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.t.push([a,b]),this.p&&this.I(),this},setUserContext:function(a){return this.l.user=a,this},setExtraContext:function(a){return this.W("extra",a),this},setTagsContext:function(a){return this.W("tags",a),this},clearContext:function(){return this.l={},this},getContext:function(){return JSON.parse(Z(this.l))},setEnvironment:function(a){return this.m.environment=a,this},setRelease:function(a){return this.m.release=a,this},setDataCallback:function(a){var b=this.m.dataCallback;return this.m.dataCallback=I(b,a),this},setBreadcrumbCallback:function(a){var b=this.m.breadcrumbCallback;return this.m.breadcrumbCallback=I(b,a),this},setShouldSendCallback:function(a){var b=this.m.shouldSendCallback;return this.m.shouldSendCallback=I(b,a),this},setTransport:function(a){return this.m.transport=a,this},lastException:function(){return this.f},lastEventId:function(){return this.h},isSetup:function(){return!!this.c&&(!!this.i||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.D("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=Aa.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(Ba){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new $("Missing eventId");var c=a.dsn||this.K;if(!c)throw new $("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.l.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.M(this.J(c)),h=Ba.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(Ba.head||Ba.body).appendChild(h)}},O:function(){var a=this;this.o+=1,setTimeout(function(){a.o-=1})},X:function(a,b){var c,d;if(this.d){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),Ba.createEvent?(c=Ba.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=Ba.createEventObject(),c.eventType=a);for(d in b)na(b,d)&&(c[d]=b[d]);if(Ba.createEvent)Ba.dispatchEvent(c);else try{Ba.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},Y:function(a){var b=this;return function(c){if(b.Z=null,b.x!==c){b.x=c;var d;try{d=ra(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},$:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.Z;g||a.Y("input")(c),clearTimeout(g),a.Z=setTimeout(function(){a.Z=null},b)}}},_:function(a,b){var c=ua(this.y.href),d=ua(b),e=ua(a);this.z=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},F:function(){var a=this;a.aa=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.a?a.aa.apply(this.b,arguments):a.aa.apply(this,arguments)}},Q:function(){this.aa&&(Function.prototype.toString=this.aa)},G:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b._(b.z,c+""),a.apply(this,arguments)}};va(history,"pushState",j,d),va(history,"replaceState",j,d)}if(c.console&&"console"in Aa&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};ja(["debug","info","warn","error","log"],function(a,b){xa(console,b,k)})}},R:function(){for(var a;this.v.length;){a=this.v.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},S:function(){for(var a in this.s)this.r[a]=this.s[a]},I:function(){var a=this;ja(this.t,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},J:function(a){var b=za.exec(a),c={},d=7;try{for(;d--;)c[ya[d]]=b[d]||""}catch(e){throw new $("Invalid DSN: "+a)}if(c.pass&&!this.m.allowSecretKey)throw new $("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},M:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},E:function(){this.o||this.T.apply(this,arguments)},T:function(a,b){var c=this.U(a,b);this.X("handle",{stackInfo:a,options:b}),this.ca(a.name,a.message,a.url,a.lineno,c,b)},U:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(ja(a.stack,function(b,e){var f=c.da(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.w,0)}),this.l.user&&(a.user=this.l.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||ia(a[b]))&&delete a[b]}),fa(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!ia(a)&&(!fa(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.ja()?void this.D("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() href parsing trick because React Native and other +// environments where DOM might not be available + + +function parseUrl$1(url) { + if (typeof url !== 'string') return {}; + var match = url.match(/^(([^:\/?#]+):)?(\/\/([^\/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?$/); // coerce to undefined values to empty string so we don't get 'undefined' + + var query = match[6] || ''; + var fragment = match[8] || ''; + return { + protocol: match[2], + host: match[4], + path: match[5], + relative: match[5] + query + fragment // everything minus origin + + }; +} + +function uuid4$1() { + var crypto = _window$3.crypto || _window$3.msCrypto; + + if (!isUndefined$1(crypto) && crypto.getRandomValues) { + // Use window.crypto API if available + // eslint-disable-next-line no-undef + var arr = new Uint16Array(8); + crypto.getRandomValues(arr); // set 4 in byte 7 + + arr[3] = arr[3] & 0xfff | 0x4000; // set 2 most significant bits of byte 9 to '10' + + arr[4] = arr[4] & 0x3fff | 0x8000; + + var pad = function pad(num) { + var v = num.toString(16); + + while (v.length < 4) { + v = '0' + v; + } + + return v; + }; + + return pad(arr[0]) + pad(arr[1]) + pad(arr[2]) + pad(arr[3]) + pad(arr[4]) + pad(arr[5]) + pad(arr[6]) + pad(arr[7]); + } else { + // http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/2117523#2117523 + return 'xxxxxxxxxxxx4xxxyxxxxxxxxxxxxxxx'.replace(/[xy]/g, function (c) { + var r = Math.random() * 16 | 0, + v = c === 'x' ? r : r & 0x3 | 0x8; + return v.toString(16); + }); + } +} +/** + * Given a child DOM element, returns a query-selector statement describing that + * and its ancestors + * e.g. [HTMLElement] => body > div > input#foo.btn[name=baz] + * @param elem + * @returns {string} + */ + + +function htmlTreeAsString$1(elem) { + /* eslint no-extra-parens:0*/ + var MAX_TRAVERSE_HEIGHT = 5, + MAX_OUTPUT_LEN = 80, + out = [], + height = 0, + len = 0, + separator = ' > ', + sepLength = separator.length, + nextStr; + + while (elem && height++ < MAX_TRAVERSE_HEIGHT) { + nextStr = htmlElementAsString(elem); // bail out if + // - nextStr is the 'html' element + // - the length of the string that would be created exceeds MAX_OUTPUT_LEN + // (ignore this limit if we are on the first iteration) + + if (nextStr === 'html' || height > 1 && len + out.length * sepLength + nextStr.length >= MAX_OUTPUT_LEN) { + break; + } + + out.push(nextStr); + len += nextStr.length; + elem = elem.parentNode; + } + + return out.reverse().join(separator); +} +/** + * Returns a simple, query-selector representation of a DOM element + * e.g. [HTMLElement] => input#foo.btn[name=baz] + * @param HTMLElement + * @returns {string} + */ + + +function htmlElementAsString(elem) { + var out = [], + className, + classes, + key, + attr, + i; + + if (!elem || !elem.tagName) { + return ''; + } + + out.push(elem.tagName.toLowerCase()); + + if (elem.id) { + out.push('#' + elem.id); + } + + className = elem.className; + + if (className && isString$1(className)) { + classes = className.split(/\s+/); + + for (i = 0; i < classes.length; i++) { + out.push('.' + classes[i]); + } + } + + var attrWhitelist = ['type', 'name', 'title', 'alt']; + + for (i = 0; i < attrWhitelist.length; i++) { + key = attrWhitelist[i]; + attr = elem.getAttribute(key); + + if (attr) { + out.push('[' + key + '="' + attr + '"]'); + } + } + + return out.join(''); +} +/** + * Returns true if either a OR b is truthy, but not both + */ + + +function isOnlyOneTruthy(a, b) { + return !!(!!a ^ !!b); +} +/** + * Returns true if both parameters are undefined + */ + + +function isBothUndefined(a, b) { + return isUndefined$1(a) && isUndefined$1(b); +} +/** + * Returns true if the two input exception interfaces have the same content + */ + + +function isSameException$1(ex1, ex2) { + if (isOnlyOneTruthy(ex1, ex2)) return false; + ex1 = ex1.values[0]; + ex2 = ex2.values[0]; + if (ex1.type !== ex2.type || ex1.value !== ex2.value) return false; // in case both stacktraces are undefined, we can't decide so default to false + + if (isBothUndefined(ex1.stacktrace, ex2.stacktrace)) return false; + return isSameStacktrace$1(ex1.stacktrace, ex2.stacktrace); +} +/** + * Returns true if the two input stack trace interfaces have the same content + */ + + +function isSameStacktrace$1(stack1, stack2) { + if (isOnlyOneTruthy(stack1, stack2)) return false; + var frames1 = stack1.frames; + var frames2 = stack2.frames; // Exit early if frame count differs + + if (frames1.length !== frames2.length) return false; // Iterate through every frame; bail out if anything differs + + var a, b; + + for (var i = 0; i < frames1.length; i++) { + a = frames1[i]; + b = frames2[i]; + if (a.filename !== b.filename || a.lineno !== b.lineno || a.colno !== b.colno || a['function'] !== b['function']) return false; + } + + return true; +} +/** + * Polyfill a method + * @param obj object e.g. `document` + * @param name method name present on object e.g. `addEventListener` + * @param replacement replacement function + * @param track {optional} record instrumentation to an array + */ + + +function fill$1(obj, name, replacement, track) { + var orig = obj[name]; + obj[name] = replacement(orig); + obj[name].__raven__ = true; + obj[name].__orig__ = orig; + + if (track) { + track.push([obj, name, orig]); + } +} +/** + * Join values in array + * @param input array of values to be joined together + * @param delimiter string to be placed in-between values + * @returns {string} + */ + + +function safeJoin(input, delimiter) { + if (!isArray$1(input)) return ''; + var output = []; + + for (var i = 0; i < input.length; i++) { + try { + output.push(String(input[i])); + } catch (e) { + output.push('[value cannot be serialized]'); + } + } + + return output.join(delimiter); +} + +var utils = { + isObject: isObject$1, + isError: isError$1, + isErrorEvent: isErrorEvent$1, + isUndefined: isUndefined$1, + isFunction: isFunction$1, + isPlainObject: isPlainObject, + isString: isString$1, + isArray: isArray$1, + isEmptyObject: isEmptyObject$1, + supportsErrorEvent: supportsErrorEvent, + supportsFetch: supportsFetch$1, + wrappedCallback: wrappedCallback, + each: each$1, + objectMerge: objectMerge$1, + truncate: truncate$1, + objectFrozen: objectFrozen$1, + hasKey: hasKey$1, + joinRegExp: joinRegExp$1, + urlencode: urlencode$1, + uuid4: uuid4$1, + htmlTreeAsString: htmlTreeAsString$1, + htmlElementAsString: htmlElementAsString, + isSameException: isSameException$1, + isSameStacktrace: isSameStacktrace$1, + parseUrl: parseUrl$1, + fill: fill$1, + safeJoin: safeJoin +}; + +/* + TraceKit - Cross brower stack traces + + This was originally forked from github.com/occ/TraceKit, but has since been + largely re-written and is now maintained as part of raven-js. Tests for + this are in test/vendor. + + MIT license +*/ + +var TraceKit = { + collectWindowErrors: true, + debug: false +}; // This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) + +var _window$2 = typeof window !== 'undefined' ? window : typeof commonjsGlobal !== 'undefined' ? commonjsGlobal : typeof self !== 'undefined' ? self : {}; // global reference to slice + + +var _slice = [].slice; +var UNKNOWN_FUNCTION = '?'; // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error#Error_types + +var ERROR_TYPES_RE = /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/; + +function getLocationHref() { + if (typeof document === 'undefined' || document.location == null) return ''; + return document.location.href; +} +/** + * TraceKit.report: cross-browser processing of unhandled exceptions + * + * Syntax: + * TraceKit.report.subscribe(function(stackInfo) { ... }) + * TraceKit.report.unsubscribe(function(stackInfo) { ... }) + * TraceKit.report(exception) + * try { ...code... } catch(ex) { TraceKit.report(ex); } + * + * Supports: + * - Firefox: full stack trace with line numbers, plus column number + * on top frame; column number is not guaranteed + * - Opera: full stack trace with line and column numbers + * - Chrome: full stack trace with line and column numbers + * - Safari: line and column number for the top frame only; some frames + * may be missing, and column number is not guaranteed + * - IE: line and column number for the top frame only; some frames + * may be missing, and column number is not guaranteed + * + * In theory, TraceKit should work on all of the following versions: + * - IE5.5+ (only 8.0 tested) + * - Firefox 0.9+ (only 3.5+ tested) + * - Opera 7+ (only 10.50 tested; versions 9 and earlier may require + * Exceptions Have Stacktrace to be enabled in opera:config) + * - Safari 3+ (only 4+ tested) + * - Chrome 1+ (only 5+ tested) + * - Konqueror 3.5+ (untested) + * + * Requires TraceKit.computeStackTrace. + * + * Tries to catch all unhandled exceptions and report them to the + * subscribed handlers. Please note that TraceKit.report will rethrow the + * exception. This is REQUIRED in order to get a useful stack trace in IE. + * If the exception does not reach the top of the browser, you will only + * get a stack trace from the point where TraceKit.report was called. + * + * Handlers receive a stackInfo object as described in the + * TraceKit.computeStackTrace docs. + */ + + +TraceKit.report = function reportModuleWrapper() { + var handlers = [], + lastArgs = null, + lastException = null, + lastExceptionStack = null; + /** + * Add a crash handler. + * @param {Function} handler + */ + + function subscribe(handler) { + installGlobalHandler(); + handlers.push(handler); + } + /** + * Remove a crash handler. + * @param {Function} handler + */ + + + function unsubscribe(handler) { + for (var i = handlers.length - 1; i >= 0; --i) { + if (handlers[i] === handler) { + handlers.splice(i, 1); + } + } + } + /** + * Remove all crash handlers. + */ + + + function unsubscribeAll() { + uninstallGlobalHandler(); + handlers = []; + } + /** + * Dispatch stack information to all handlers. + * @param {Object.} stack + */ + + + function notifyHandlers(stack, isWindowError) { + var exception = null; + + if (isWindowError && !TraceKit.collectWindowErrors) { + return; + } + + for (var i in handlers) { + if (handlers.hasOwnProperty(i)) { + try { + handlers[i].apply(null, [stack].concat(_slice.call(arguments, 2))); + } catch (inner) { + exception = inner; + } + } + } + + if (exception) { + throw exception; + } + } + + var _oldOnerrorHandler, _onErrorHandlerInstalled; + /** + * Ensures all global unhandled exceptions are recorded. + * Supported by Gecko and IE. + * @param {string} msg Error message. + * @param {string} url URL of script that generated the exception. + * @param {(number|string)} lineNo The line number at which the error + * occurred. + * @param {?(number|string)} colNo The column number at which the error + * occurred. + * @param {?Error} ex The actual Error object. + */ + + + function traceKitWindowOnError(msg, url, lineNo, colNo, ex) { + var stack = null; // If 'ex' is ErrorEvent, get real Error from inside + + var exception = utils.isErrorEvent(ex) ? ex.error : ex; // If 'msg' is ErrorEvent, get real message from inside + + var message = utils.isErrorEvent(msg) ? msg.message : msg; + + if (lastExceptionStack) { + TraceKit.computeStackTrace.augmentStackTraceWithInitialElement(lastExceptionStack, url, lineNo, message); + processLastException(); + } else if (exception && utils.isError(exception)) { + // non-string `exception` arg; attempt to extract stack trace + // New chrome and blink send along a real error object + // Let's just report that like a normal error. + // See: https://mikewest.org/2013/08/debugging-runtime-errors-with-window-onerror + stack = TraceKit.computeStackTrace(exception); + notifyHandlers(stack, true); + } else { + var location = { + url: url, + line: lineNo, + column: colNo + }; + var name = undefined; + var groups; + + if ({}.toString.call(message) === '[object String]') { + var groups = message.match(ERROR_TYPES_RE); + + if (groups) { + name = groups[1]; + message = groups[2]; + } + } + + location.func = UNKNOWN_FUNCTION; + stack = { + name: name, + message: message, + url: getLocationHref(), + stack: [location] + }; + notifyHandlers(stack, true); + } + + if (_oldOnerrorHandler) { + return _oldOnerrorHandler.apply(this, arguments); + } + + return false; + } + + function installGlobalHandler() { + if (_onErrorHandlerInstalled) { + return; + } + + _oldOnerrorHandler = _window$2.onerror; + _window$2.onerror = traceKitWindowOnError; + _onErrorHandlerInstalled = true; + } + + function uninstallGlobalHandler() { + if (!_onErrorHandlerInstalled) { + return; + } + + _window$2.onerror = _oldOnerrorHandler; + _onErrorHandlerInstalled = false; + _oldOnerrorHandler = undefined; + } + + function processLastException() { + var _lastExceptionStack = lastExceptionStack, + _lastArgs = lastArgs; + lastArgs = null; + lastExceptionStack = null; + lastException = null; + notifyHandlers.apply(null, [_lastExceptionStack, false].concat(_lastArgs)); + } + /** + * Reports an unhandled Error to TraceKit. + * @param {Error} ex + * @param {?boolean} rethrow If false, do not re-throw the exception. + * Only used for window.onerror to not cause an infinite loop of + * rethrowing. + */ + + + function report(ex, rethrow) { + var args = _slice.call(arguments, 1); + + if (lastExceptionStack) { + if (lastException === ex) { + return; // already caught by an inner catch block, ignore + } else { + processLastException(); + } + } + + var stack = TraceKit.computeStackTrace(ex); + lastExceptionStack = stack; + lastException = ex; + lastArgs = args; // If the stack trace is incomplete, wait for 2 seconds for + // slow slow IE to see if onerror occurs or not before reporting + // this exception; otherwise, we will end up with an incomplete + // stack trace + + setTimeout(function () { + if (lastException === ex) { + processLastException(); + } + }, stack.incomplete ? 2000 : 0); + + if (rethrow !== false) { + throw ex; // re-throw to propagate to the top level (and cause window.onerror) + } + } + + report.subscribe = subscribe; + report.unsubscribe = unsubscribe; + report.uninstall = unsubscribeAll; + return report; +}(); +/** + * TraceKit.computeStackTrace: cross-browser stack traces in JavaScript + * + * Syntax: + * s = TraceKit.computeStackTrace(exception) // consider using TraceKit.report instead (see below) + * Returns: + * s.name - exception name + * s.message - exception message + * s.stack[i].url - JavaScript or HTML file URL + * s.stack[i].func - function name, or empty for anonymous functions (if guessing did not work) + * s.stack[i].args - arguments passed to the function, if known + * s.stack[i].line - line number, if known + * s.stack[i].column - column number, if known + * + * Supports: + * - Firefox: full stack trace with line numbers and unreliable column + * number on top frame + * - Opera 10: full stack trace with line and column numbers + * - Opera 9-: full stack trace with line numbers + * - Chrome: full stack trace with line and column numbers + * - Safari: line and column number for the topmost stacktrace element + * only + * - IE: no line numbers whatsoever + * + * Tries to guess names of anonymous functions by looking for assignments + * in the source code. In IE and Safari, we have to guess source file names + * by searching for function bodies inside all page scripts. This will not + * work for scripts that are loaded cross-domain. + * Here be dragons: some function names may be guessed incorrectly, and + * duplicate functions may be mismatched. + * + * TraceKit.computeStackTrace should only be used for tracing purposes. + * Logging of unhandled exceptions should be done with TraceKit.report, + * which builds on top of TraceKit.computeStackTrace and provides better + * IE support by utilizing the window.onerror event to retrieve information + * about the top of the stack. + * + * Note: In IE and Safari, no stack trace is recorded on the Error object, + * so computeStackTrace instead walks its *own* chain of callers. + * This means that: + * * in Safari, some methods may be missing from the stack trace; + * * in IE, the topmost function in the stack trace will always be the + * caller of computeStackTrace. + * + * This is okay for tracing (because you are likely to be calling + * computeStackTrace from the function you want to be the topmost element + * of the stack trace anyway), but not okay for logging unhandled + * exceptions (because your catch block will likely be far away from the + * inner function that actually caused the exception). + * + */ + + +TraceKit.computeStackTrace = function computeStackTraceWrapper() { + // Contents of Exception in various browsers. + // + // SAFARI: + // ex.message = Can't find variable: qq + // ex.line = 59 + // ex.sourceId = 580238192 + // ex.sourceURL = http://... + // ex.expressionBeginOffset = 96 + // ex.expressionCaretOffset = 98 + // ex.expressionEndOffset = 98 + // ex.name = ReferenceError + // + // FIREFOX: + // ex.message = qq is not defined + // ex.fileName = http://... + // ex.lineNumber = 59 + // ex.columnNumber = 69 + // ex.stack = ...stack trace... (see the example below) + // ex.name = ReferenceError + // + // CHROME: + // ex.message = qq is not defined + // ex.name = ReferenceError + // ex.type = not_defined + // ex.arguments = ['aa'] + // ex.stack = ...stack trace... + // + // INTERNET EXPLORER: + // ex.message = ... + // ex.name = ReferenceError + // + // OPERA: + // ex.message = ...message... (see the example below) + // ex.name = ReferenceError + // ex.opera#sourceloc = 11 (pretty much useless, duplicates the info in ex.message) + // ex.stacktrace = n/a; see 'opera:config#UserPrefs|Exceptions Have Stacktrace' + + /** + * Computes stack trace information from the stack property. + * Chrome and Gecko use this property. + * @param {Error} ex + * @return {?Object.} Stack trace information. + */ + function computeStackTraceFromStackProp(ex) { + if (typeof ex.stack === 'undefined' || !ex.stack) return; + var chrome = /^\s*at (.*?) ?\(((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i, + gecko = /^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|\[native).*?|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i, + winjs = /^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i, + // Used to additionally parse URL/line/column from eval frames + geckoEval = /(\S+) line (\d+)(?: > eval line \d+)* > eval/i, + chromeEval = /\((\S*)(?::(\d+))(?::(\d+))\)/, + lines = ex.stack.split('\n'), + stack = [], + submatch, + parts, + element, + reference = /^(.*) is undefined$/.exec(ex.message); + + for (var i = 0, j = lines.length; i < j; ++i) { + if (parts = chrome.exec(lines[i])) { + var isNative = parts[2] && parts[2].indexOf('native') === 0; // start of line + + var isEval = parts[2] && parts[2].indexOf('eval') === 0; // start of line + + if (isEval && (submatch = chromeEval.exec(parts[2]))) { + // throw out eval line/column and use top-most line/column number + parts[2] = submatch[1]; // url + + parts[3] = submatch[2]; // line + + parts[4] = submatch[3]; // column + } + + element = { + url: !isNative ? parts[2] : null, + func: parts[1] || UNKNOWN_FUNCTION, + args: isNative ? [parts[2]] : [], + line: parts[3] ? +parts[3] : null, + column: parts[4] ? +parts[4] : null + }; + } else if (parts = winjs.exec(lines[i])) { + element = { + url: parts[2], + func: parts[1] || UNKNOWN_FUNCTION, + args: [], + line: +parts[3], + column: parts[4] ? +parts[4] : null + }; + } else if (parts = gecko.exec(lines[i])) { + var isEval = parts[3] && parts[3].indexOf(' > eval') > -1; + + if (isEval && (submatch = geckoEval.exec(parts[3]))) { + // throw out eval line/column and use top-most line number + parts[3] = submatch[1]; + parts[4] = submatch[2]; + parts[5] = null; // no column when eval + } else if (i === 0 && !parts[5] && typeof ex.columnNumber !== 'undefined') { + // FireFox uses this awesome columnNumber property for its top frame + // Also note, Firefox's column number is 0-based and everything else expects 1-based, + // so adding 1 + // NOTE: this hack doesn't work if top-most frame is eval + stack[0].column = ex.columnNumber + 1; + } + + element = { + url: parts[3], + func: parts[1] || UNKNOWN_FUNCTION, + args: parts[2] ? parts[2].split(',') : [], + line: parts[4] ? +parts[4] : null, + column: parts[5] ? +parts[5] : null + }; + } else { + continue; + } + + if (!element.func && element.line) { + element.func = UNKNOWN_FUNCTION; + } + + stack.push(element); + } + + if (!stack.length) { + return null; + } + + return { + name: ex.name, + message: ex.message, + url: getLocationHref(), + stack: stack + }; + } + /** + * Adds information about the first frame to incomplete stack traces. + * Safari and IE require this to get complete data on the first frame. + * @param {Object.} stackInfo Stack trace information from + * one of the compute* methods. + * @param {string} url The URL of the script that caused an error. + * @param {(number|string)} lineNo The line number of the script that + * caused an error. + * @param {string=} message The error generated by the browser, which + * hopefully contains the name of the object that caused the error. + * @return {boolean} Whether or not the stack information was + * augmented. + */ + + + function augmentStackTraceWithInitialElement(stackInfo, url, lineNo, message) { + var initial = { + url: url, + line: lineNo + }; + + if (initial.url && initial.line) { + stackInfo.incomplete = false; + + if (!initial.func) { + initial.func = UNKNOWN_FUNCTION; + } + + if (stackInfo.stack.length > 0) { + if (stackInfo.stack[0].url === initial.url) { + if (stackInfo.stack[0].line === initial.line) { + return false; // already in stack trace + } else if (!stackInfo.stack[0].line && stackInfo.stack[0].func === initial.func) { + stackInfo.stack[0].line = initial.line; + return false; + } + } + } + + stackInfo.stack.unshift(initial); + stackInfo.partial = true; + return true; + } else { + stackInfo.incomplete = true; + } + + return false; + } + /** + * Computes stack trace information by walking the arguments.caller + * chain at the time the exception occurred. This will cause earlier + * frames to be missed but is the only way to get any stack trace in + * Safari and IE. The top frame is restored by + * {@link augmentStackTraceWithInitialElement}. + * @param {Error} ex + * @return {?Object.} Stack trace information. + */ + + + function computeStackTraceByWalkingCallerChain(ex, depth) { + var functionName = /function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i, + stack = [], + funcs = {}, + recursion = false, + parts, + item; + + for (var curr = computeStackTraceByWalkingCallerChain.caller; curr && !recursion; curr = curr.caller) { + if (curr === computeStackTrace || curr === TraceKit.report) { + // console.log('skipping internal function'); + continue; + } + + item = { + url: null, + func: UNKNOWN_FUNCTION, + line: null, + column: null + }; + + if (curr.name) { + item.func = curr.name; + } else if (parts = functionName.exec(curr.toString())) { + item.func = parts[1]; + } + + if (typeof item.func === 'undefined') { + try { + item.func = parts.input.substring(0, parts.input.indexOf('{')); + } catch (e) {} + } + + if (funcs['' + curr]) { + recursion = true; + } else { + funcs['' + curr] = true; + } + + stack.push(item); + } + + if (depth) { + // console.log('depth is ' + depth); + // console.log('stack is ' + stack.length); + stack.splice(0, depth); + } + + var result = { + name: ex.name, + message: ex.message, + url: getLocationHref(), + stack: stack + }; + augmentStackTraceWithInitialElement(result, ex.sourceURL || ex.fileName, ex.line || ex.lineNumber, ex.message || ex.description); + return result; + } + /** + * Computes a stack trace for an exception. + * @param {Error} ex + * @param {(string|number)=} depth + */ + + + function computeStackTrace(ex, depth) { + var stack = null; + depth = depth == null ? 0 : +depth; + + try { + stack = computeStackTraceFromStackProp(ex); + + if (stack) { + return stack; + } + } catch (e) { + if (TraceKit.debug) { + throw e; + } + } + + try { + stack = computeStackTraceByWalkingCallerChain(ex, depth + 1); + + if (stack) { + return stack; + } + } catch (e) { + if (TraceKit.debug) { + throw e; + } + } + + return { + name: ex.name, + message: ex.message, + url: getLocationHref() + }; + } + + computeStackTrace.augmentStackTraceWithInitialElement = augmentStackTraceWithInitialElement; + computeStackTrace.computeStackTraceFromStackProp = computeStackTraceFromStackProp; + return computeStackTrace; +}(); + +var tracekit = TraceKit; + +var stringify_1 = createCommonjsModule(function (module, exports) { + /* + json-stringify-safe + Like JSON.stringify, but doesn't throw on circular references. + + Originally forked from https://github.com/isaacs/json-stringify-safe + version 5.0.1 on 3/8/2017 and modified to handle Errors serialization + and IE8 compatibility. Tests for this are in test/vendor. + + ISC license: https://github.com/isaacs/json-stringify-safe/blob/master/LICENSE + */ + exports = module.exports = stringify; + exports.getSerialize = serializer; + + function indexOf(haystack, needle) { + for (var i = 0; i < haystack.length; ++i) { + if (haystack[i] === needle) return i; + } + + return -1; + } + + function stringify(obj, replacer, spaces, cycleReplacer) { + return JSON.stringify(obj, serializer(replacer, cycleReplacer), spaces); + } // https://github.com/ftlabs/js-abbreviate/blob/fa709e5f139e7770a71827b1893f22418097fbda/index.js#L95-L106 + + + function stringifyError(value) { + var err = { + // These properties are implemented as magical getters and don't show up in for in + stack: value.stack, + message: value.message, + name: value.name + }; + + for (var i in value) { + if (Object.prototype.hasOwnProperty.call(value, i)) { + err[i] = value[i]; + } + } + + return err; + } + + function serializer(replacer, cycleReplacer) { + var stack = []; + var keys = []; + + if (cycleReplacer == null) { + cycleReplacer = function cycleReplacer(key, value) { + if (stack[0] === value) { + return '[Circular ~]'; + } + + return '[Circular ~.' + keys.slice(0, indexOf(stack, value)).join('.') + ']'; + }; + } + + return function (key, value) { + if (stack.length > 0) { + var thisPos = indexOf(stack, this); + ~thisPos ? stack.splice(thisPos + 1) : stack.push(this); + ~thisPos ? keys.splice(thisPos, Infinity, key) : keys.push(key); + + if (~indexOf(stack, value)) { + value = cycleReplacer.call(this, key, value); + } + } else { + stack.push(value); + } + + return replacer == null ? value instanceof Error ? stringifyError(value) : value : replacer.call(this, key, value); + }; + } +}); +var stringify_2 = stringify_1.getSerialize; + +function RavenConfigError(message) { + this.name = 'RavenConfigError'; + this.message = message; +} + +RavenConfigError.prototype = new Error(); +RavenConfigError.prototype.constructor = RavenConfigError; +var configError = RavenConfigError; + +var wrapMethod = function wrapMethod(console, level, callback) { + var originalConsoleLevel = console[level]; + var originalConsole = console; + + if (!(level in console)) { + return; + } + + var sentryLevel = level === 'warn' ? 'warning' : level; + + console[level] = function () { + var args = [].slice.call(arguments); + var msg = utils.safeJoin(args, ' '); + var data = { + level: sentryLevel, + logger: 'console', + extra: { + arguments: args + } + }; + + if (level === 'assert') { + if (args[0] === false) { + // Default browsers message + msg = 'Assertion failed: ' + (utils.safeJoin(args.slice(1), ' ') || 'console.assert'); + data.extra.arguments = args.slice(1); + callback && callback(msg, data); + } + } else { + callback && callback(msg, data); + } // this fails for some browsers. :( + + + if (originalConsoleLevel) { + // IE9 doesn't allow calling apply on console functions directly + // See: https://stackoverflow.com/questions/5472938/does-ie9-support-console-log-and-is-it-a-real-function#answer-5473193 + Function.prototype.apply.call(originalConsoleLevel, originalConsole, args); + } + }; +}; + +var console$1 = { + wrapMethod: wrapMethod +}; + +/*global XDomainRequest:false */ + +var isError = utils.isError; +var isObject = utils.isObject; +var isErrorEvent = utils.isErrorEvent; +var isUndefined = utils.isUndefined; +var isFunction = utils.isFunction; +var isString = utils.isString; +var isArray = utils.isArray; +var isEmptyObject = utils.isEmptyObject; +var each = utils.each; +var objectMerge = utils.objectMerge; +var truncate = utils.truncate; +var objectFrozen = utils.objectFrozen; +var hasKey = utils.hasKey; +var joinRegExp = utils.joinRegExp; +var urlencode = utils.urlencode; +var uuid4 = utils.uuid4; +var htmlTreeAsString = utils.htmlTreeAsString; +var isSameException = utils.isSameException; +var isSameStacktrace = utils.isSameStacktrace; +var parseUrl = utils.parseUrl; +var fill = utils.fill; +var supportsFetch = utils.supportsFetch; +var wrapConsoleMethod = console$1.wrapMethod; +var dsnKeys = 'source protocol user pass host port path'.split(' '); +var dsnPattern = /^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/; + +function now() { + return +new Date(); +} // This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) + + +var _window$1 = typeof window !== 'undefined' ? window : typeof commonjsGlobal !== 'undefined' ? commonjsGlobal : typeof self !== 'undefined' ? self : {}; + +var _document = _window$1.document; +var _navigator = _window$1.navigator; + +function keepOriginalCallback(original, callback) { + return isFunction(callback) ? function (data) { + return callback(data, original); + } : callback; +} // First, check for JSON support +// If there is no JSON, we no-op the core features of Raven +// since JSON is required to encode the payload + + +function Raven$1() { + this._hasJSON = !!(_typeof(JSON) === 'object' && JSON.stringify); // Raven can run in contexts where there's no document (react-native) + + this._hasDocument = !isUndefined(_document); + this._hasNavigator = !isUndefined(_navigator); + this._lastCapturedException = null; + this._lastData = null; + this._lastEventId = null; + this._globalServer = null; + this._globalKey = null; + this._globalProject = null; + this._globalContext = {}; + this._globalOptions = { + // SENTRY_RELEASE can be injected by https://github.com/getsentry/sentry-webpack-plugin + release: _window$1.SENTRY_RELEASE && _window$1.SENTRY_RELEASE.id, + logger: 'javascript', + ignoreErrors: [], + ignoreUrls: [], + whitelistUrls: [], + includePaths: [], + headers: null, + collectWindowErrors: true, + maxMessageLength: 0, + // By default, truncates URL values to 250 chars + maxUrlLength: 250, + stackTraceLimit: 50, + autoBreadcrumbs: true, + instrument: true, + sampleRate: 1 + }; + this._fetchDefaults = { + method: 'POST', + keepalive: true, + referrerPolicy: 'origin' + }; + this._ignoreOnError = 0; + this._isRavenInstalled = false; + this._originalErrorStackTraceLimit = Error.stackTraceLimit; // capture references to window.console *and* all its methods first + // before the console plugin has a chance to monkey patch + + this._originalConsole = _window$1.console || {}; + this._originalConsoleMethods = {}; + this._plugins = []; + this._startTime = now(); + this._wrappedBuiltIns = []; + this._breadcrumbs = []; + this._lastCapturedEvent = null; + this._keypressTimeout; + this._location = _window$1.location; + this._lastHref = this._location && this._location.href; + + this._resetBackoff(); // eslint-disable-next-line guard-for-in + + + for (var method in this._originalConsole) { + this._originalConsoleMethods[method] = this._originalConsole[method]; + } +} +/* + * The core Raven singleton + * + * @this {Raven} + */ + + +Raven$1.prototype = { + // Hardcode version string so that raven source can be loaded directly via + // webpack (using a build step causes webpack #1617). Grunt verifies that + // this value matches package.json during build. + // See: https://github.com/getsentry/raven-js/issues/465 + VERSION: '3.22.2', + debug: false, + TraceKit: tracekit, + // alias to TraceKit + + /* + * Configure Raven with a DSN and extra options + * + * @param {string} dsn The public Sentry DSN + * @param {object} options Set of global options [optional] + * @return {Raven} + */ + config: function config(dsn, options) { + var self = this; + + if (self._globalServer) { + this._logDebug('error', 'Error: Raven has already been configured'); + + return self; + } + + if (!dsn) return self; + var globalOptions = self._globalOptions; // merge in options + + if (options) { + each(options, function (key, value) { + // tags and extra are special and need to be put into context + if (key === 'tags' || key === 'extra' || key === 'user') { + self._globalContext[key] = value; + } else { + globalOptions[key] = value; + } + }); + } + + self.setDSN(dsn); // "Script error." is hard coded into browsers for errors that it can't read. + // this is the result of a script being pulled in from an external domain and CORS. + + globalOptions.ignoreErrors.push(/^Script error\.?$/); + globalOptions.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/); // join regexp rules into one big rule + + globalOptions.ignoreErrors = joinRegExp(globalOptions.ignoreErrors); + globalOptions.ignoreUrls = globalOptions.ignoreUrls.length ? joinRegExp(globalOptions.ignoreUrls) : false; + globalOptions.whitelistUrls = globalOptions.whitelistUrls.length ? joinRegExp(globalOptions.whitelistUrls) : false; + globalOptions.includePaths = joinRegExp(globalOptions.includePaths); + globalOptions.maxBreadcrumbs = Math.max(0, Math.min(globalOptions.maxBreadcrumbs || 100, 100)); // default and hard limit is 100 + + var autoBreadcrumbDefaults = { + xhr: true, + console: true, + dom: true, + location: true, + sentry: true + }; + var autoBreadcrumbs = globalOptions.autoBreadcrumbs; + + if ({}.toString.call(autoBreadcrumbs) === '[object Object]') { + autoBreadcrumbs = objectMerge(autoBreadcrumbDefaults, autoBreadcrumbs); + } else if (autoBreadcrumbs !== false) { + autoBreadcrumbs = autoBreadcrumbDefaults; + } + + globalOptions.autoBreadcrumbs = autoBreadcrumbs; + var instrumentDefaults = { + tryCatch: true + }; + var instrument = globalOptions.instrument; + + if ({}.toString.call(instrument) === '[object Object]') { + instrument = objectMerge(instrumentDefaults, instrument); + } else if (instrument !== false) { + instrument = instrumentDefaults; + } + + globalOptions.instrument = instrument; + tracekit.collectWindowErrors = !!globalOptions.collectWindowErrors; // return for chaining + + return self; + }, + + /* + * Installs a global window.onerror error handler + * to capture and report uncaught exceptions. + * At this point, install() is required to be called due + * to the way TraceKit is set up. + * + * @return {Raven} + */ + install: function install() { + var self = this; + + if (self.isSetup() && !self._isRavenInstalled) { + tracekit.report.subscribe(function () { + self._handleOnErrorStackInfo.apply(self, arguments); + }); + + self._patchFunctionToString(); + + if (self._globalOptions.instrument && self._globalOptions.instrument.tryCatch) { + self._instrumentTryCatch(); + } + + if (self._globalOptions.autoBreadcrumbs) self._instrumentBreadcrumbs(); // Install all of the plugins + + self._drainPlugins(); + + self._isRavenInstalled = true; + } + + Error.stackTraceLimit = self._globalOptions.stackTraceLimit; + return this; + }, + + /* + * Set the DSN (can be called multiple time unlike config) + * + * @param {string} dsn The public Sentry DSN + */ + setDSN: function setDSN(dsn) { + var self = this, + uri = self._parseDSN(dsn), + lastSlash = uri.path.lastIndexOf('/'), + path = uri.path.substr(1, lastSlash); + + self._dsn = dsn; + self._globalKey = uri.user; + self._globalSecret = uri.pass && uri.pass.substr(1); + self._globalProject = uri.path.substr(lastSlash + 1); + self._globalServer = self._getGlobalServer(uri); + self._globalEndpoint = self._globalServer + '/' + path + 'api/' + self._globalProject + '/store/'; // Reset backoff state since we may be pointing at a + // new project/server + + this._resetBackoff(); + }, + + /* + * Wrap code within a context so Raven can capture errors + * reliably across domains that is executed immediately. + * + * @param {object} options A specific set of options for this context [optional] + * @param {function} func The callback to be immediately executed within the context + * @param {array} args An array of arguments to be called with the callback [optional] + */ + context: function context(options, func, args) { + if (isFunction(options)) { + args = func || []; + func = options; + options = undefined; + } + + return this.wrap(options, func).apply(this, args); + }, + + /* + * Wrap code within a context and returns back a new function to be executed + * + * @param {object} options A specific set of options for this context [optional] + * @param {function} func The function to be wrapped in a new context + * @param {function} func A function to call before the try/catch wrapper [optional, private] + * @return {function} The newly wrapped functions with a context + */ + wrap: function wrap(options, func, _before) { + var self = this; // 1 argument has been passed, and it's not a function + // so just return it + + if (isUndefined(func) && !isFunction(options)) { + return options; + } // options is optional + + + if (isFunction(options)) { + func = options; + options = undefined; + } // At this point, we've passed along 2 arguments, and the second one + // is not a function either, so we'll just return the second argument. + + + if (!isFunction(func)) { + return func; + } // We don't wanna wrap it twice! + + + try { + if (func.__raven__) { + return func; + } // If this has already been wrapped in the past, return that + + + if (func.__raven_wrapper__) { + return func.__raven_wrapper__; + } + } catch (e) { + // Just accessing custom props in some Selenium environments + // can cause a "Permission denied" exception (see raven-js#495). + // Bail on wrapping and return the function as-is (defers to window.onerror). + return func; + } + + function wrapped() { + var args = [], + i = arguments.length, + deep = !options || options && options.deep !== false; + + if (_before && isFunction(_before)) { + _before.apply(this, arguments); + } // Recursively wrap all of a function's arguments that are + // functions themselves. + + + while (i--) { + args[i] = deep ? self.wrap(options, arguments[i]) : arguments[i]; + } + + try { + // Attempt to invoke user-land function + // NOTE: If you are a Sentry user, and you are seeing this stack frame, it + // means Raven caught an error invoking your application code. This is + // expected behavior and NOT indicative of a bug with Raven.js. + return func.apply(this, args); + } catch (e) { + self._ignoreNextOnError(); + + self.captureException(e, options); + throw e; + } + } // copy over properties of the old function + + + for (var property in func) { + if (hasKey(func, property)) { + wrapped[property] = func[property]; + } + } + + wrapped.prototype = func.prototype; + func.__raven_wrapper__ = wrapped; // Signal that this function has been wrapped/filled already + // for both debugging and to prevent it to being wrapped/filled twice + + wrapped.__raven__ = true; + wrapped.__orig__ = func; + return wrapped; + }, + + /* + * Uninstalls the global error handler. + * + * @return {Raven} + */ + uninstall: function uninstall() { + tracekit.report.uninstall(); + + this._unpatchFunctionToString(); + + this._restoreBuiltIns(); + + this._restoreConsole(); + + Error.stackTraceLimit = this._originalErrorStackTraceLimit; + this._isRavenInstalled = false; + return this; + }, + + /* + * Manually capture an exception and send it over to Sentry + * + * @param {error} ex An exception to be logged + * @param {object} options A specific set of options for this error [optional] + * @return {Raven} + */ + captureException: function captureException(ex, options) { + options = objectMerge({ + trimHeadFrames: 0 + }, options ? options : {}); // Cases for sending ex as a message, rather than an exception + + var isNotError = !isError(ex); + var isNotErrorEvent = !isErrorEvent(ex); + var isErrorEventWithoutError = isErrorEvent(ex) && !ex.error; + + if (isNotError && isNotErrorEvent || isErrorEventWithoutError) { + return this.captureMessage(ex, objectMerge(options, { + stacktrace: true, + // if we fall back to captureMessage, default to attempting a new trace + trimHeadFrames: options.trimHeadFrames + 1 + })); + } // Get actual Error from ErrorEvent + + + if (isErrorEvent(ex)) ex = ex.error; // Store the raw exception object for potential debugging and introspection + + this._lastCapturedException = ex; // TraceKit.report will re-raise any exception passed to it, + // which means you have to wrap it in try/catch. Instead, we + // can wrap it here and only re-raise if TraceKit.report + // raises an exception different from the one we asked to + // report on. + + try { + var stack = tracekit.computeStackTrace(ex); + + this._handleStackInfo(stack, options); + } catch (ex1) { + if (ex !== ex1) { + throw ex1; + } + } + + return this; + }, + + /* + * Manually send a message to Sentry + * + * @param {string} msg A plain message to be captured in Sentry + * @param {object} options A specific set of options for this message [optional] + * @return {Raven} + */ + captureMessage: function captureMessage(msg, options) { + // config() automagically converts ignoreErrors from a list to a RegExp so we need to test for an + // early call; we'll error on the side of logging anything called before configuration since it's + // probably something you should see: + if (!!this._globalOptions.ignoreErrors.test && this._globalOptions.ignoreErrors.test(msg)) { + return; + } + + options = options || {}; + var data = objectMerge({ + message: msg + '' // Make sure it's actually a string + + }, options); + var ex; // Generate a "synthetic" stack trace from this point. + // NOTE: If you are a Sentry user, and you are seeing this stack frame, it is NOT indicative + // of a bug with Raven.js. Sentry generates synthetic traces either by configuration, + // or if it catches a thrown object without a "stack" property. + + try { + throw new Error(msg); + } catch (ex1) { + ex = ex1; + } // null exception name so `Error` isn't prefixed to msg + + + ex.name = null; + var stack = tracekit.computeStackTrace(ex); // stack[0] is `throw new Error(msg)` call itself, we are interested in the frame that was just before that, stack[1] + + var initialCall = isArray(stack.stack) && stack.stack[1]; + var fileurl = initialCall && initialCall.url || ''; + + if (!!this._globalOptions.ignoreUrls.test && this._globalOptions.ignoreUrls.test(fileurl)) { + return; + } + + if (!!this._globalOptions.whitelistUrls.test && !this._globalOptions.whitelistUrls.test(fileurl)) { + return; + } + + if (this._globalOptions.stacktrace || options && options.stacktrace) { + options = objectMerge({ + // fingerprint on msg, not stack trace (legacy behavior, could be + // revisited) + fingerprint: msg, + // since we know this is a synthetic trace, the top N-most frames + // MUST be from Raven.js, so mark them as in_app later by setting + // trimHeadFrames + trimHeadFrames: (options.trimHeadFrames || 0) + 1 + }, options); + + var frames = this._prepareFrames(stack, options); + + data.stacktrace = { + // Sentry expects frames oldest to newest + frames: frames.reverse() + }; + } // Fire away! + + + this._send(data); + + return this; + }, + captureBreadcrumb: function captureBreadcrumb(obj) { + var crumb = objectMerge({ + timestamp: now() / 1000 + }, obj); + + if (isFunction(this._globalOptions.breadcrumbCallback)) { + var result = this._globalOptions.breadcrumbCallback(crumb); + + if (isObject(result) && !isEmptyObject(result)) { + crumb = result; + } else if (result === false) { + return this; + } + } + + this._breadcrumbs.push(crumb); + + if (this._breadcrumbs.length > this._globalOptions.maxBreadcrumbs) { + this._breadcrumbs.shift(); + } + + return this; + }, + addPlugin: function addPlugin(plugin + /*arg1, arg2, ... argN*/ + ) { + var pluginArgs = [].slice.call(arguments, 1); + + this._plugins.push([plugin, pluginArgs]); + + if (this._isRavenInstalled) { + this._drainPlugins(); + } + + return this; + }, + + /* + * Set/clear a user to be sent along with the payload. + * + * @param {object} user An object representing user data [optional] + * @return {Raven} + */ + setUserContext: function setUserContext(user) { + // Intentionally do not merge here since that's an unexpected behavior. + this._globalContext.user = user; + return this; + }, + + /* + * Merge extra attributes to be sent along with the payload. + * + * @param {object} extra An object representing extra data [optional] + * @return {Raven} + */ + setExtraContext: function setExtraContext(extra) { + this._mergeContext('extra', extra); + + return this; + }, + + /* + * Merge tags to be sent along with the payload. + * + * @param {object} tags An object representing tags [optional] + * @return {Raven} + */ + setTagsContext: function setTagsContext(tags) { + this._mergeContext('tags', tags); + + return this; + }, + + /* + * Clear all of the context. + * + * @return {Raven} + */ + clearContext: function clearContext() { + this._globalContext = {}; + return this; + }, + + /* + * Get a copy of the current context. This cannot be mutated. + * + * @return {object} copy of context + */ + getContext: function getContext() { + // lol javascript + return JSON.parse(stringify_1(this._globalContext)); + }, + + /* + * Set environment of application + * + * @param {string} environment Typically something like 'production'. + * @return {Raven} + */ + setEnvironment: function setEnvironment(environment) { + this._globalOptions.environment = environment; + return this; + }, + + /* + * Set release version of application + * + * @param {string} release Typically something like a git SHA to identify version + * @return {Raven} + */ + setRelease: function setRelease(release) { + this._globalOptions.release = release; + return this; + }, + + /* + * Set the dataCallback option + * + * @param {function} callback The callback to run which allows the + * data blob to be mutated before sending + * @return {Raven} + */ + setDataCallback: function setDataCallback(callback) { + var original = this._globalOptions.dataCallback; + this._globalOptions.dataCallback = keepOriginalCallback(original, callback); + return this; + }, + + /* + * Set the breadcrumbCallback option + * + * @param {function} callback The callback to run which allows filtering + * or mutating breadcrumbs + * @return {Raven} + */ + setBreadcrumbCallback: function setBreadcrumbCallback(callback) { + var original = this._globalOptions.breadcrumbCallback; + this._globalOptions.breadcrumbCallback = keepOriginalCallback(original, callback); + return this; + }, + + /* + * Set the shouldSendCallback option + * + * @param {function} callback The callback to run which allows + * introspecting the blob before sending + * @return {Raven} + */ + setShouldSendCallback: function setShouldSendCallback(callback) { + var original = this._globalOptions.shouldSendCallback; + this._globalOptions.shouldSendCallback = keepOriginalCallback(original, callback); + return this; + }, + + /** + * Override the default HTTP transport mechanism that transmits data + * to the Sentry server. + * + * @param {function} transport Function invoked instead of the default + * `makeRequest` handler. + * + * @return {Raven} + */ + setTransport: function setTransport(transport) { + this._globalOptions.transport = transport; + return this; + }, + + /* + * Get the latest raw exception that was captured by Raven. + * + * @return {error} + */ + lastException: function lastException() { + return this._lastCapturedException; + }, + + /* + * Get the last event id + * + * @return {string} + */ + lastEventId: function lastEventId() { + return this._lastEventId; + }, + + /* + * Determine if Raven is setup and ready to go. + * + * @return {boolean} + */ + isSetup: function isSetup() { + if (!this._hasJSON) return false; // needs JSON support + + if (!this._globalServer) { + if (!this.ravenNotConfiguredError) { + this.ravenNotConfiguredError = true; + + this._logDebug('error', 'Error: Raven has not been configured.'); + } + + return false; + } + + return true; + }, + afterLoad: function afterLoad() { + // TODO: remove window dependence? + // Attempt to initialize Raven on load + var RavenConfig = _window$1.RavenConfig; + + if (RavenConfig) { + this.config(RavenConfig.dsn, RavenConfig.config).install(); + } + }, + showReportDialog: function showReportDialog(options) { + if (!_document // doesn't work without a document (React native) + ) return; + options = options || {}; + var lastEventId = options.eventId || this.lastEventId(); + + if (!lastEventId) { + throw new configError('Missing eventId'); + } + + var dsn = options.dsn || this._dsn; + + if (!dsn) { + throw new configError('Missing DSN'); + } + + var encode = encodeURIComponent; + var qs = ''; + qs += '?eventId=' + encode(lastEventId); + qs += '&dsn=' + encode(dsn); + var user = options.user || this._globalContext.user; + + if (user) { + if (user.name) qs += '&name=' + encode(user.name); + if (user.email) qs += '&email=' + encode(user.email); + } + + var globalServer = this._getGlobalServer(this._parseDSN(dsn)); + + var script = _document.createElement('script'); + + script.async = true; + script.src = globalServer + '/api/embed/error-page/' + qs; + + (_document.head || _document.body).appendChild(script); + }, + + /**** Private functions ****/ + _ignoreNextOnError: function _ignoreNextOnError() { + var self = this; + this._ignoreOnError += 1; + setTimeout(function () { + // onerror should trigger before setTimeout + self._ignoreOnError -= 1; + }); + }, + _triggerEvent: function _triggerEvent(eventType, options) { + // NOTE: `event` is a native browser thing, so let's avoid conflicting wiht it + var evt, key; + if (!this._hasDocument) return; + options = options || {}; + eventType = 'raven' + eventType.substr(0, 1).toUpperCase() + eventType.substr(1); + + if (_document.createEvent) { + evt = _document.createEvent('HTMLEvents'); + evt.initEvent(eventType, true, true); + } else { + evt = _document.createEventObject(); + evt.eventType = eventType; + } + + for (key in options) { + if (hasKey(options, key)) { + evt[key] = options[key]; + } + } + + if (_document.createEvent) { + // IE9 if standards + _document.dispatchEvent(evt); + } else { + // IE8 regardless of Quirks or Standards + // IE9 if quirks + try { + _document.fireEvent('on' + evt.eventType.toLowerCase(), evt); + } catch (e) {// Do nothing + } + } + }, + + /** + * Wraps addEventListener to capture UI breadcrumbs + * @param evtName the event name (e.g. "click") + * @returns {Function} + * @private + */ + _breadcrumbEventHandler: function _breadcrumbEventHandler(evtName) { + var self = this; + return function (evt) { + // reset keypress timeout; e.g. triggering a 'click' after + // a 'keypress' will reset the keypress debounce so that a new + // set of keypresses can be recorded + self._keypressTimeout = null; // It's possible this handler might trigger multiple times for the same + // event (e.g. event propagation through node ancestors). Ignore if we've + // already captured the event. + + if (self._lastCapturedEvent === evt) return; + self._lastCapturedEvent = evt; // try/catch both: + // - accessing evt.target (see getsentry/raven-js#838, #768) + // - `htmlTreeAsString` because it's complex, and just accessing the DOM incorrectly + // can throw an exception in some circumstances. + + var target; + + try { + target = htmlTreeAsString(evt.target); + } catch (e) { + target = ''; + } + + self.captureBreadcrumb({ + category: 'ui.' + evtName, + // e.g. ui.click, ui.input + message: target + }); + }; + }, + + /** + * Wraps addEventListener to capture keypress UI events + * @returns {Function} + * @private + */ + _keypressEventHandler: function _keypressEventHandler() { + var self = this, + debounceDuration = 1000; // milliseconds + // TODO: if somehow user switches keypress target before + // debounce timeout is triggered, we will only capture + // a single breadcrumb from the FIRST target (acceptable?) + + return function (evt) { + var target; + + try { + target = evt.target; + } catch (e) { + // just accessing event properties can throw an exception in some rare circumstances + // see: https://github.com/getsentry/raven-js/issues/838 + return; + } + + var tagName = target && target.tagName; // only consider keypress events on actual input elements + // this will disregard keypresses targeting body (e.g. tabbing + // through elements, hotkeys, etc) + + if (!tagName || tagName !== 'INPUT' && tagName !== 'TEXTAREA' && !target.isContentEditable) return; // record first keypress in a series, but ignore subsequent + // keypresses until debounce clears + + var timeout = self._keypressTimeout; + + if (!timeout) { + self._breadcrumbEventHandler('input')(evt); + } + + clearTimeout(timeout); + self._keypressTimeout = setTimeout(function () { + self._keypressTimeout = null; + }, debounceDuration); + }; + }, + + /** + * Captures a breadcrumb of type "navigation", normalizing input URLs + * @param to the originating URL + * @param from the target URL + * @private + */ + _captureUrlChange: function _captureUrlChange(from, to) { + var parsedLoc = parseUrl(this._location.href); + var parsedTo = parseUrl(to); + var parsedFrom = parseUrl(from); // because onpopstate only tells you the "new" (to) value of location.href, and + // not the previous (from) value, we need to track the value of the current URL + // state ourselves + + this._lastHref = to; // Use only the path component of the URL if the URL matches the current + // document (almost all the time when using pushState) + + if (parsedLoc.protocol === parsedTo.protocol && parsedLoc.host === parsedTo.host) to = parsedTo.relative; + if (parsedLoc.protocol === parsedFrom.protocol && parsedLoc.host === parsedFrom.host) from = parsedFrom.relative; + this.captureBreadcrumb({ + category: 'navigation', + data: { + to: to, + from: from + } + }); + }, + _patchFunctionToString: function _patchFunctionToString() { + var self = this; + self._originalFunctionToString = Function.prototype.toString; // eslint-disable-next-line no-extend-native + + Function.prototype.toString = function () { + if (typeof this === 'function' && this.__raven__) { + return self._originalFunctionToString.apply(this.__orig__, arguments); + } + + return self._originalFunctionToString.apply(this, arguments); + }; + }, + _unpatchFunctionToString: function _unpatchFunctionToString() { + if (this._originalFunctionToString) { + // eslint-disable-next-line no-extend-native + Function.prototype.toString = this._originalFunctionToString; + } + }, + + /** + * Wrap timer functions and event targets to catch errors and provide + * better metadata. + */ + _instrumentTryCatch: function _instrumentTryCatch() { + var self = this; + var wrappedBuiltIns = self._wrappedBuiltIns; + + function wrapTimeFn(orig) { + return function (fn, t) { + // preserve arity + // Make a copy of the arguments to prevent deoptimization + // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments + var args = new Array(arguments.length); + + for (var i = 0; i < args.length; ++i) { + args[i] = arguments[i]; + } + + var originalCallback = args[0]; + + if (isFunction(originalCallback)) { + args[0] = self.wrap(originalCallback); + } // IE < 9 doesn't support .call/.apply on setInterval/setTimeout, but it + // also supports only two arguments and doesn't care what this is, so we + // can just call the original function directly. + + + if (orig.apply) { + return orig.apply(this, args); + } else { + return orig(args[0], args[1]); + } + }; + } + + var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; + + function wrapEventTarget(global) { + var proto = _window$1[global] && _window$1[global].prototype; + + if (proto && proto.hasOwnProperty && proto.hasOwnProperty('addEventListener')) { + fill(proto, 'addEventListener', function (orig) { + return function (evtName, fn, capture, secure) { + // preserve arity + try { + if (fn && fn.handleEvent) { + fn.handleEvent = self.wrap(fn.handleEvent); + } + } catch (err) {} // can sometimes get 'Permission denied to access property "handle Event' + // More breadcrumb DOM capture ... done here and not in `_instrumentBreadcrumbs` + // so that we don't have more than one wrapper function + + + var before, clickHandler, keypressHandler; + + if (autoBreadcrumbs && autoBreadcrumbs.dom && (global === 'EventTarget' || global === 'Node')) { + // NOTE: generating multiple handlers per addEventListener invocation, should + // revisit and verify we can just use one (almost certainly) + clickHandler = self._breadcrumbEventHandler('click'); + keypressHandler = self._keypressEventHandler(); + + before = function before(evt) { + // need to intercept every DOM event in `before` argument, in case that + // same wrapped method is re-used for different events (e.g. mousemove THEN click) + // see #724 + if (!evt) return; + var eventType; + + try { + eventType = evt.type; + } catch (e) { + // just accessing event properties can throw an exception in some rare circumstances + // see: https://github.com/getsentry/raven-js/issues/838 + return; + } + + if (eventType === 'click') return clickHandler(evt);else if (eventType === 'keypress') return keypressHandler(evt); + }; + } + + return orig.call(this, evtName, self.wrap(fn, undefined, before), capture, secure); + }; + }, wrappedBuiltIns); + fill(proto, 'removeEventListener', function (orig) { + return function (evt, fn, capture, secure) { + try { + fn = fn && (fn.__raven_wrapper__ ? fn.__raven_wrapper__ : fn); + } catch (e) {// ignore, accessing __raven_wrapper__ will throw in some Selenium environments + } + + return orig.call(this, evt, fn, capture, secure); + }; + }, wrappedBuiltIns); + } + } + + fill(_window$1, 'setTimeout', wrapTimeFn, wrappedBuiltIns); + fill(_window$1, 'setInterval', wrapTimeFn, wrappedBuiltIns); + + if (_window$1.requestAnimationFrame) { + fill(_window$1, 'requestAnimationFrame', function (orig) { + return function (cb) { + return orig(self.wrap(cb)); + }; + }, wrappedBuiltIns); + } // event targets borrowed from bugsnag-js: + // https://github.com/bugsnag/bugsnag-js/blob/master/src/bugsnag.js#L666 + + + var eventTargets = ['EventTarget', 'Window', 'Node', 'ApplicationCache', 'AudioTrackList', 'ChannelMergerNode', 'CryptoOperation', 'EventSource', 'FileReader', 'HTMLUnknownElement', 'IDBDatabase', 'IDBRequest', 'IDBTransaction', 'KeyOperation', 'MediaController', 'MessagePort', 'ModalWindow', 'Notification', 'SVGElementInstance', 'Screen', 'TextTrack', 'TextTrackCue', 'TextTrackList', 'WebSocket', 'WebSocketWorker', 'Worker', 'XMLHttpRequest', 'XMLHttpRequestEventTarget', 'XMLHttpRequestUpload']; + + for (var i = 0; i < eventTargets.length; i++) { + wrapEventTarget(eventTargets[i]); + } + }, + + /** + * Instrument browser built-ins w/ breadcrumb capturing + * - XMLHttpRequests + * - DOM interactions (click/typing) + * - window.location changes + * - console + * + * Can be disabled or individually configured via the `autoBreadcrumbs` config option + */ + _instrumentBreadcrumbs: function _instrumentBreadcrumbs() { + var self = this; + var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; + var wrappedBuiltIns = self._wrappedBuiltIns; + + function wrapProp(prop, xhr) { + if (prop in xhr && isFunction(xhr[prop])) { + fill(xhr, prop, function (orig) { + return self.wrap(orig); + }); // intentionally don't track filled methods on XHR instances + } + } + + if (autoBreadcrumbs.xhr && 'XMLHttpRequest' in _window$1) { + var xhrproto = XMLHttpRequest.prototype; + fill(xhrproto, 'open', function (origOpen) { + return function (method, url) { + // preserve arity + // if Sentry key appears in URL, don't capture + if (isString(url) && url.indexOf(self._globalKey) === -1) { + this.__raven_xhr = { + method: method, + url: url, + status_code: null + }; + } + + return origOpen.apply(this, arguments); + }; + }, wrappedBuiltIns); + fill(xhrproto, 'send', function (origSend) { + return function () { + // preserve arity + var xhr = this; + + function onreadystatechangeHandler() { + if (xhr.__raven_xhr && xhr.readyState === 4) { + try { + // touching statusCode in some platforms throws + // an exception + xhr.__raven_xhr.status_code = xhr.status; + } catch (e) { + /* do nothing */ + } + + self.captureBreadcrumb({ + type: 'http', + category: 'xhr', + data: xhr.__raven_xhr + }); + } + } + + var props = ['onload', 'onerror', 'onprogress']; + + for (var j = 0; j < props.length; j++) { + wrapProp(props[j], xhr); + } + + if ('onreadystatechange' in xhr && isFunction(xhr.onreadystatechange)) { + fill(xhr, 'onreadystatechange', function (orig) { + return self.wrap(orig, undefined, onreadystatechangeHandler); + } + /* intentionally don't track this instrumentation */ + ); + } else { + // if onreadystatechange wasn't actually set by the page on this xhr, we + // are free to set our own and capture the breadcrumb + xhr.onreadystatechange = onreadystatechangeHandler; + } + + return origSend.apply(this, arguments); + }; + }, wrappedBuiltIns); + } + + if (autoBreadcrumbs.xhr && supportsFetch()) { + fill(_window$1, 'fetch', function (origFetch) { + return function () { + // preserve arity + // Make a copy of the arguments to prevent deoptimization + // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments + var args = new Array(arguments.length); + + for (var i = 0; i < args.length; ++i) { + args[i] = arguments[i]; + } + + var fetchInput = args[0]; + var method = 'GET'; + var url; + + if (typeof fetchInput === 'string') { + url = fetchInput; + } else if ('Request' in _window$1 && fetchInput instanceof _window$1.Request) { + url = fetchInput.url; + + if (fetchInput.method) { + method = fetchInput.method; + } + } else { + url = '' + fetchInput; + } // if Sentry key appears in URL, don't capture, as it's our own request + + + if (url.indexOf(self._globalKey) !== -1) { + return origFetch.apply(this, args); + } + + if (args[1] && args[1].method) { + method = args[1].method; + } + + var fetchData = { + method: method, + url: url, + status_code: null + }; + return origFetch.apply(this, args).then(function (response) { + fetchData.status_code = response.status; + self.captureBreadcrumb({ + type: 'http', + category: 'fetch', + data: fetchData + }); + return response; + }); + }; + }, wrappedBuiltIns); + } // Capture breadcrumbs from any click that is unhandled / bubbled up all the way + // to the document. Do this before we instrument addEventListener. + + + if (autoBreadcrumbs.dom && this._hasDocument) { + if (_document.addEventListener) { + _document.addEventListener('click', self._breadcrumbEventHandler('click'), false); + + _document.addEventListener('keypress', self._keypressEventHandler(), false); + } else { + // IE8 Compatibility + _document.attachEvent('onclick', self._breadcrumbEventHandler('click')); + + _document.attachEvent('onkeypress', self._keypressEventHandler()); + } + } // record navigation (URL) changes + // NOTE: in Chrome App environment, touching history.pushState, *even inside + // a try/catch block*, will cause Chrome to output an error to console.error + // borrowed from: https://github.com/angular/angular.js/pull/13945/files + + + var chrome = _window$1.chrome; + var isChromePackagedApp = chrome && chrome.app && chrome.app.runtime; + var hasPushAndReplaceState = !isChromePackagedApp && _window$1.history && history.pushState && history.replaceState; + + if (autoBreadcrumbs.location && hasPushAndReplaceState) { + // TODO: remove onpopstate handler on uninstall() + var oldOnPopState = _window$1.onpopstate; + + _window$1.onpopstate = function () { + var currentHref = self._location.href; + + self._captureUrlChange(self._lastHref, currentHref); + + if (oldOnPopState) { + return oldOnPopState.apply(this, arguments); + } + }; + + var historyReplacementFunction = function historyReplacementFunction(origHistFunction) { + // note history.pushState.length is 0; intentionally not declaring + // params to preserve 0 arity + return function () + /* state, title, url */ + { + var url = arguments.length > 2 ? arguments[2] : undefined; // url argument is optional + + if (url) { + // coerce to string (this is what pushState does) + self._captureUrlChange(self._lastHref, url + ''); + } + + return origHistFunction.apply(this, arguments); + }; + }; + + fill(history, 'pushState', historyReplacementFunction, wrappedBuiltIns); + fill(history, 'replaceState', historyReplacementFunction, wrappedBuiltIns); + } + + if (autoBreadcrumbs.console && 'console' in _window$1 && console.log) { + // console + var consoleMethodCallback = function consoleMethodCallback(msg, data) { + self.captureBreadcrumb({ + message: msg, + level: data.level, + category: 'console' + }); + }; + + each(['debug', 'info', 'warn', 'error', 'log'], function (_, level) { + wrapConsoleMethod(console, level, consoleMethodCallback); + }); + } + }, + _restoreBuiltIns: function _restoreBuiltIns() { + // restore any wrapped builtins + var builtin; + + while (this._wrappedBuiltIns.length) { + builtin = this._wrappedBuiltIns.shift(); + var obj = builtin[0], + name = builtin[1], + orig = builtin[2]; + obj[name] = orig; + } + }, + _restoreConsole: function _restoreConsole() { + // eslint-disable-next-line guard-for-in + for (var method in this._originalConsoleMethods) { + this._originalConsole[method] = this._originalConsoleMethods[method]; + } + }, + _drainPlugins: function _drainPlugins() { + var self = this; // FIX ME TODO + + each(this._plugins, function (_, plugin) { + var installer = plugin[0]; + var args = plugin[1]; + installer.apply(self, [self].concat(args)); + }); + }, + _parseDSN: function _parseDSN(str) { + var m = dsnPattern.exec(str), + dsn = {}, + i = 7; + + try { + while (i--) { + dsn[dsnKeys[i]] = m[i] || ''; + } + } catch (e) { + throw new configError('Invalid DSN: ' + str); + } + + if (dsn.pass && !this._globalOptions.allowSecretKey) { + throw new configError('Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key'); + } + + return dsn; + }, + _getGlobalServer: function _getGlobalServer(uri) { + // assemble the endpoint from the uri pieces + var globalServer = '//' + uri.host + (uri.port ? ':' + uri.port : ''); + + if (uri.protocol) { + globalServer = uri.protocol + ':' + globalServer; + } + + return globalServer; + }, + _handleOnErrorStackInfo: function _handleOnErrorStackInfo() { + // if we are intentionally ignoring errors via onerror, bail out + if (!this._ignoreOnError) { + this._handleStackInfo.apply(this, arguments); + } + }, + _handleStackInfo: function _handleStackInfo(stackInfo, options) { + var frames = this._prepareFrames(stackInfo, options); + + this._triggerEvent('handle', { + stackInfo: stackInfo, + options: options + }); + + this._processException(stackInfo.name, stackInfo.message, stackInfo.url, stackInfo.lineno, frames, options); + }, + _prepareFrames: function _prepareFrames(stackInfo, options) { + var self = this; + var frames = []; + + if (stackInfo.stack && stackInfo.stack.length) { + each(stackInfo.stack, function (i, stack) { + var frame = self._normalizeFrame(stack, stackInfo.url); + + if (frame) { + frames.push(frame); + } + }); // e.g. frames captured via captureMessage throw + + if (options && options.trimHeadFrames) { + for (var j = 0; j < options.trimHeadFrames && j < frames.length; j++) { + frames[j].in_app = false; + } + } + } + + frames = frames.slice(0, this._globalOptions.stackTraceLimit); + return frames; + }, + _normalizeFrame: function _normalizeFrame(frame, stackInfoUrl) { + // normalize the frames data + var normalized = { + filename: frame.url, + lineno: frame.line, + colno: frame.column, + function: frame.func || '?' + }; // Case when we don't have any information about the error + // E.g. throwing a string or raw object, instead of an `Error` in Firefox + // Generating synthetic error doesn't add any value here + // + // We should probably somehow let a user know that they should fix their code + + if (!frame.url) { + normalized.filename = stackInfoUrl; // fallback to whole stacks url from onerror handler + } + + normalized.in_app = !( // determine if an exception came from outside of our app + // first we check the global includePaths list. + !!this._globalOptions.includePaths.test && !this._globalOptions.includePaths.test(normalized.filename) || // Now we check for fun, if the function name is Raven or TraceKit + /(Raven|TraceKit)\./.test(normalized['function']) || // finally, we do a last ditch effort and check for raven.min.js + /raven\.(min\.)?js$/.test(normalized.filename)); + return normalized; + }, + _processException: function _processException(type, message, fileurl, lineno, frames, options) { + var prefixedMessage = (type ? type + ': ' : '') + (message || ''); + + if (!!this._globalOptions.ignoreErrors.test && (this._globalOptions.ignoreErrors.test(message) || this._globalOptions.ignoreErrors.test(prefixedMessage))) { + return; + } + + var stacktrace; + + if (frames && frames.length) { + fileurl = frames[0].filename || fileurl; // Sentry expects frames oldest to newest + // and JS sends them as newest to oldest + + frames.reverse(); + stacktrace = { + frames: frames + }; + } else if (fileurl) { + stacktrace = { + frames: [{ + filename: fileurl, + lineno: lineno, + in_app: true + }] + }; + } + + if (!!this._globalOptions.ignoreUrls.test && this._globalOptions.ignoreUrls.test(fileurl)) { + return; + } + + if (!!this._globalOptions.whitelistUrls.test && !this._globalOptions.whitelistUrls.test(fileurl)) { + return; + } + + var data = objectMerge({ + // sentry.interfaces.Exception + exception: { + values: [{ + type: type, + value: message, + stacktrace: stacktrace + }] + }, + culprit: fileurl + }, options); // Fire away! + + this._send(data); + }, + _trimPacket: function _trimPacket(data) { + // For now, we only want to truncate the two different messages + // but this could/should be expanded to just trim everything + var max = this._globalOptions.maxMessageLength; + + if (data.message) { + data.message = truncate(data.message, max); + } + + if (data.exception) { + var exception = data.exception.values[0]; + exception.value = truncate(exception.value, max); + } + + var request = data.request; + + if (request) { + if (request.url) { + request.url = truncate(request.url, this._globalOptions.maxUrlLength); + } + + if (request.Referer) { + request.Referer = truncate(request.Referer, this._globalOptions.maxUrlLength); + } + } + + if (data.breadcrumbs && data.breadcrumbs.values) this._trimBreadcrumbs(data.breadcrumbs); + return data; + }, + + /** + * Truncate breadcrumb values (right now just URLs) + */ + _trimBreadcrumbs: function _trimBreadcrumbs(breadcrumbs) { + // known breadcrumb properties with urls + // TODO: also consider arbitrary prop values that start with (https?)?:// + var urlProps = ['to', 'from', 'url'], + urlProp, + crumb, + data; + + for (var i = 0; i < breadcrumbs.values.length; ++i) { + crumb = breadcrumbs.values[i]; + if (!crumb.hasOwnProperty('data') || !isObject(crumb.data) || objectFrozen(crumb.data)) continue; + data = objectMerge({}, crumb.data); + + for (var j = 0; j < urlProps.length; ++j) { + urlProp = urlProps[j]; + + if (data.hasOwnProperty(urlProp) && data[urlProp]) { + data[urlProp] = truncate(data[urlProp], this._globalOptions.maxUrlLength); + } + } + + breadcrumbs.values[i].data = data; + } + }, + _getHttpData: function _getHttpData() { + if (!this._hasNavigator && !this._hasDocument) return; + var httpData = {}; + + if (this._hasNavigator && _navigator.userAgent) { + httpData.headers = { + 'User-Agent': navigator.userAgent + }; + } // Check in `window` instead of `document`, as we may be in ServiceWorker environment + + + if (_window$1.location && _window$1.location.href) { + httpData.url = _window$1.location.href; + } + + if (this._hasDocument && _document.referrer) { + if (!httpData.headers) httpData.headers = {}; + httpData.headers.Referer = _document.referrer; + } + + return httpData; + }, + _resetBackoff: function _resetBackoff() { + this._backoffDuration = 0; + this._backoffStart = null; + }, + _shouldBackoff: function _shouldBackoff() { + return this._backoffDuration && now() - this._backoffStart < this._backoffDuration; + }, + + /** + * Returns true if the in-process data payload matches the signature + * of the previously-sent data + * + * NOTE: This has to be done at this level because TraceKit can generate + * data from window.onerror WITHOUT an exception object (IE8, IE9, + * other old browsers). This can take the form of an "exception" + * data object with a single frame (derived from the onerror args). + */ + _isRepeatData: function _isRepeatData(current) { + var last = this._lastData; + if (!last || current.message !== last.message || // defined for captureMessage + current.culprit !== last.culprit // defined for captureException/onerror + ) return false; // Stacktrace interface (i.e. from captureMessage) + + if (current.stacktrace || last.stacktrace) { + return isSameStacktrace(current.stacktrace, last.stacktrace); + } else if (current.exception || last.exception) { + // Exception interface (i.e. from captureException/onerror) + return isSameException(current.exception, last.exception); + } + + return true; + }, + _setBackoffState: function _setBackoffState(request) { + // If we are already in a backoff state, don't change anything + if (this._shouldBackoff()) { + return; + } + + var status = request.status; // 400 - project_id doesn't exist or some other fatal + // 401 - invalid/revoked dsn + // 429 - too many requests + + if (!(status === 400 || status === 401 || status === 429)) return; + var retry; + + try { + // If Retry-After is not in Access-Control-Expose-Headers, most + // browsers will throw an exception trying to access it + if (supportsFetch()) { + retry = request.headers.get('Retry-After'); + } else { + retry = request.getResponseHeader('Retry-After'); + } // Retry-After is returned in seconds + + + retry = parseInt(retry, 10) * 1000; + } catch (e) { + /* eslint no-empty:0 */ + } + + this._backoffDuration = retry ? // If Sentry server returned a Retry-After value, use it + retry : // Otherwise, double the last backoff duration (starts at 1 sec) + this._backoffDuration * 2 || 1000; + this._backoffStart = now(); + }, + _send: function _send(data) { + var globalOptions = this._globalOptions; + + var baseData = { + project: this._globalProject, + logger: globalOptions.logger, + platform: 'javascript' + }, + httpData = this._getHttpData(); + + if (httpData) { + baseData.request = httpData; + } // HACK: delete `trimHeadFrames` to prevent from appearing in outbound payload + + + if (data.trimHeadFrames) delete data.trimHeadFrames; + data = objectMerge(baseData, data); // Merge in the tags and extra separately since objectMerge doesn't handle a deep merge + + data.tags = objectMerge(objectMerge({}, this._globalContext.tags), data.tags); + data.extra = objectMerge(objectMerge({}, this._globalContext.extra), data.extra); // Send along our own collected metadata with extra + + data.extra['session:duration'] = now() - this._startTime; + + if (this._breadcrumbs && this._breadcrumbs.length > 0) { + // intentionally make shallow copy so that additions + // to breadcrumbs aren't accidentally sent in this request + data.breadcrumbs = { + values: [].slice.call(this._breadcrumbs, 0) + }; + } + + if (this._globalContext.user) { + // sentry.interfaces.User + data.user = this._globalContext.user; + } // Include the environment if it's defined in globalOptions + + + if (globalOptions.environment) data.environment = globalOptions.environment; // Include the release if it's defined in globalOptions + + if (globalOptions.release) data.release = globalOptions.release; // Include server_name if it's defined in globalOptions + + if (globalOptions.serverName) data.server_name = globalOptions.serverName; // Cleanup empty properties before sending them to the server + + Object.keys(data).forEach(function (key) { + if (data[key] == null || data[key] === '' || isEmptyObject(data[key])) { + delete data[key]; + } + }); + + if (isFunction(globalOptions.dataCallback)) { + data = globalOptions.dataCallback(data) || data; + } // Why?????????? + + + if (!data || isEmptyObject(data)) { + return; + } // Check if the request should be filtered or not + + + if (isFunction(globalOptions.shouldSendCallback) && !globalOptions.shouldSendCallback(data)) { + return; + } // Backoff state: Sentry server previously responded w/ an error (e.g. 429 - too many requests), + // so drop requests until "cool-off" period has elapsed. + + + if (this._shouldBackoff()) { + this._logDebug('warn', 'Raven dropped error due to backoff: ', data); + + return; + } + + if (typeof globalOptions.sampleRate === 'number') { + if (Math.random() < globalOptions.sampleRate) { + this._sendProcessedPayload(data); + } + } else { + this._sendProcessedPayload(data); + } + }, + _getUuid: function _getUuid() { + return uuid4(); + }, + _sendProcessedPayload: function _sendProcessedPayload(data, callback) { + var self = this; + var globalOptions = this._globalOptions; + if (!this.isSetup()) return; // Try and clean up the packet before sending by truncating long values + + data = this._trimPacket(data); // ideally duplicate error testing should occur *before* dataCallback/shouldSendCallback, + // but this would require copying an un-truncated copy of the data packet, which can be + // arbitrarily deep (extra_data) -- could be worthwhile? will revisit + + if (!this._globalOptions.allowDuplicates && this._isRepeatData(data)) { + this._logDebug('warn', 'Raven dropped repeat event: ', data); + + return; + } // Send along an event_id if not explicitly passed. + // This event_id can be used to reference the error within Sentry itself. + // Set lastEventId after we know the error should actually be sent + + + this._lastEventId = data.event_id || (data.event_id = this._getUuid()); // Store outbound payload after trim + + this._lastData = data; + + this._logDebug('debug', 'Raven about to send:', data); + + var auth = { + sentry_version: '7', + sentry_client: 'raven-js/' + this.VERSION, + sentry_key: this._globalKey + }; + + if (this._globalSecret) { + auth.sentry_secret = this._globalSecret; + } + + var exception = data.exception && data.exception.values[0]; // only capture 'sentry' breadcrumb is autoBreadcrumbs is truthy + + if (this._globalOptions.autoBreadcrumbs && this._globalOptions.autoBreadcrumbs.sentry) { + this.captureBreadcrumb({ + category: 'sentry', + message: exception ? (exception.type ? exception.type + ': ' : '') + exception.value : data.message, + event_id: data.event_id, + level: data.level || 'error' // presume error unless specified + + }); + } + + var url = this._globalEndpoint; + + (globalOptions.transport || this._makeRequest).call(this, { + url: url, + auth: auth, + data: data, + options: globalOptions, + onSuccess: function success() { + self._resetBackoff(); + + self._triggerEvent('success', { + data: data, + src: url + }); + + callback && callback(); + }, + onError: function failure(error) { + self._logDebug('error', 'Raven transport failed to send: ', error); + + if (error.request) { + self._setBackoffState(error.request); + } + + self._triggerEvent('failure', { + data: data, + src: url + }); + + error = error || new Error('Raven send failed (no additional details provided)'); + callback && callback(error); + } + }); + }, + _makeRequest: function _makeRequest(opts) { + // Auth is intentionally sent as part of query string (NOT as custom HTTP header) to avoid preflight CORS requests + var url = opts.url + '?' + urlencode(opts.auth); + var evaluatedHeaders = null; + var evaluatedFetchParameters = {}; + + if (opts.options.headers) { + evaluatedHeaders = this._evaluateHash(opts.options.headers); + } + + if (opts.options.fetchParameters) { + evaluatedFetchParameters = this._evaluateHash(opts.options.fetchParameters); + } + + if (supportsFetch()) { + evaluatedFetchParameters.body = stringify_1(opts.data); + var defaultFetchOptions = objectMerge({}, this._fetchDefaults); + var fetchOptions = objectMerge(defaultFetchOptions, evaluatedFetchParameters); + + if (evaluatedHeaders) { + fetchOptions.headers = evaluatedHeaders; + } + + return _window$1.fetch(url, fetchOptions).then(function (response) { + if (response.ok) { + opts.onSuccess && opts.onSuccess(); + } else { + var error = new Error('Sentry error code: ' + response.status); // It's called request only to keep compatibility with XHR interface + // and not add more redundant checks in setBackoffState method + + error.request = response; + opts.onError && opts.onError(error); + } + })['catch'](function () { + opts.onError && opts.onError(new Error('Sentry error code: network unavailable')); + }); + } + + var request = _window$1.XMLHttpRequest && new _window$1.XMLHttpRequest(); + if (!request) return; // if browser doesn't support CORS (e.g. IE7), we are out of luck + + var hasCORS = 'withCredentials' in request || typeof XDomainRequest !== 'undefined'; + if (!hasCORS) return; + + if ('withCredentials' in request) { + request.onreadystatechange = function () { + if (request.readyState !== 4) { + return; + } else if (request.status === 200) { + opts.onSuccess && opts.onSuccess(); + } else if (opts.onError) { + var err = new Error('Sentry error code: ' + request.status); + err.request = request; + opts.onError(err); + } + }; + } else { + request = new XDomainRequest(); // xdomainrequest cannot go http -> https (or vice versa), + // so always use protocol relative + + url = url.replace(/^https?:/, ''); // onreadystatechange not supported by XDomainRequest + + if (opts.onSuccess) { + request.onload = opts.onSuccess; + } + + if (opts.onError) { + request.onerror = function () { + var err = new Error('Sentry error code: XDomainRequest'); + err.request = request; + opts.onError(err); + }; + } + } + + request.open('POST', url); + + if (evaluatedHeaders) { + each(evaluatedHeaders, function (key, value) { + request.setRequestHeader(key, value); + }); + } + + request.send(stringify_1(opts.data)); + }, + _evaluateHash: function _evaluateHash(hash) { + var evaluated = {}; + + for (var key in hash) { + if (hash.hasOwnProperty(key)) { + var value = hash[key]; + evaluated[key] = typeof value === 'function' ? value() : value; + } + } + + return evaluated; + }, + _logDebug: function _logDebug(level) { + if (this._originalConsoleMethods[level] && this.debug) { + // In IE<10 console methods do not have their own 'apply' method + Function.prototype.apply.call(this._originalConsoleMethods[level], this._originalConsole, [].slice.call(arguments, 1)); + } + }, + _mergeContext: function _mergeContext(key, context) { + if (isUndefined(context)) { + delete this._globalContext[key]; + } else { + this._globalContext[key] = objectMerge(this._globalContext[key] || {}, context); + } + } +}; // Deprecations + +Raven$1.prototype.setUser = Raven$1.prototype.setUserContext; +Raven$1.prototype.setReleaseContext = Raven$1.prototype.setRelease; +var raven = Raven$1; + +/** + * Enforces a single instance of the Raven client, and the + * main entry point for Raven. If you are a consumer of the + * Raven library, you SHOULD load this file (vs raven.js). + **/ +// This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) + +var _window = typeof window !== 'undefined' ? window : typeof commonjsGlobal !== 'undefined' ? commonjsGlobal : typeof self !== 'undefined' ? self : {}; + +var _Raven = _window.Raven; +var Raven = new raven(); +/* + * Allow multiple versions of Raven to be installed. + * Strip Raven from the global context and returns the instance. + * + * @return {Raven} + */ + +Raven.noConflict = function () { + _window.Raven = _Raven; + return Raven; +}; + +Raven.afterLoad(); +var singleton = Raven; + +/** + * Angular.js plugin + * + * Provides an $exceptionHandler for Angular.js + */ + +var wrappedCallback$1 = utils.wrappedCallback; // See https://github.com/angular/angular.js/blob/v1.4.7/src/minErr.js + +var angularPattern = /^\[((?:[$a-zA-Z0-9]+:)?(?:[$a-zA-Z0-9]+))\] (.*?)\n?(\S+)$/; +var moduleName = 'ngRaven'; + +function angularPlugin(Raven, angular) { + angular = angular || window.angular; + if (!angular) return; + + function RavenProvider() { + this.$get = ['$window', function ($window) { + return Raven; + }]; + } + + function ExceptionHandlerProvider($provide) { + $provide.decorator('$exceptionHandler', ['Raven', '$delegate', exceptionHandler]); + } + + function exceptionHandler(R, $delegate) { + return function (ex, cause) { + R.captureException(ex, { + extra: { + cause: cause + } + }); + $delegate(ex, cause); + }; + } + + angular.module(moduleName, []).provider('Raven', RavenProvider).config(['$provide', ExceptionHandlerProvider]); + Raven.setDataCallback(wrappedCallback$1(function (data) { + return angularPlugin._normalizeData(data); + })); +} + +angularPlugin._normalizeData = function (data) { + // We only care about mutating an exception + var exception = data.exception; + + if (exception) { + exception = exception.values[0]; + var matches = angularPattern.exec(exception.value); + + if (matches) { + // This type now becomes something like: $rootScope:inprog + exception.type = matches[1]; + exception.value = matches[2]; + data.message = exception.type + ': ' + exception.value; // auto set a new tag specifically for the angular error url + + data.extra.angularDocs = matches[3].substr(0, 250); + } + } + + return data; +}; + +angularPlugin.moduleName = moduleName; +var angular = angularPlugin; + +/** + * console plugin + * + * Monkey patches console.* calls into Sentry messages with + * their appropriate log levels. (Experimental) + * + * Options: + * + * `levels`: An array of levels (methods on `console`) to report to Sentry. + * Defaults to debug, info, warn, and error. + */ + +var wrapConsoleMethod$1 = console$1.wrapMethod; + +function consolePlugin(Raven, console, pluginOptions) { + console = console || window.console || {}; + pluginOptions = pluginOptions || {}; + var logLevels = pluginOptions.levels || ['debug', 'info', 'warn', 'error']; + if ('assert' in console) logLevels.push('assert'); + + var callback = function callback(msg, data) { + Raven.captureMessage(msg, data); + }; + + var level = logLevels.pop(); + + while (level) { + wrapConsoleMethod$1(console, level, callback); + level = logLevels.pop(); + } +} + +var console$3 = consolePlugin; + +/** + * Ember.js plugin + * + * Patches event handler callbacks and ajax callbacks. + */ +function emberPlugin(Raven, Ember) { + Ember = Ember || window.Ember; // quit if Ember isn't on the page + + if (!Ember) return; + var _oldOnError = Ember.onerror; + + Ember.onerror = function EmberOnError(error) { + Raven.captureException(error); + + if (typeof _oldOnError === 'function') { + _oldOnError.call(this, error); + } + }; + + Ember.RSVP.on('error', function (reason) { + if (reason instanceof Error) { + Raven.captureException(reason, { + extra: { + context: 'Unhandled Promise error detected' + } + }); + } else { + Raven.captureMessage('Unhandled Promise error detected', { + extra: { + reason: reason + } + }); + } + }); +} + +var ember = emberPlugin; + +/* This file was generated by './scripts/generate-plugin-combinations.js'! */ + +singleton.addPlugin(angular).addPlugin(console$3).addPlugin(ember); +var angular_console_ember = {}; + +return angular_console_ember; + +}))); diff --git a/dist/angular,console,ember/raven.min.js b/dist/angular,console,ember/raven.min.js new file mode 100644 index 000000000000..0be858a19eac --- /dev/null +++ b/dist/angular,console,ember/raven.min.js @@ -0,0 +1,3 @@ +/*! Raven.js 3.22.2 (1b6187b) | github.com/getsentry/raven-js */ +!function(a,b){"object"==typeof exports&&"undefined"!=typeof module?module.exports=b():"function"==typeof define&&define.amd?define(b):a.Raven=b()}(this,function(){"use strict";function a(a,b){return b={exports:{}},a(b,b.exports),b.exports}function b(a){return(b="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(a){return typeof a}:function(a){return a&&"function"==typeof Symbol&&a.constructor===Symbol&&a!==Symbol.prototype?"symbol":typeof a})(a)}function c(a){return"object"===b(a)&&null!==a}function d(a){switch({}.toString.call(a)){case"[object Error]":return!0;case"[object Exception]":return!0;case"[object DOMException]":return!0;default:return a instanceof Error}}function e(a){return l()&&"[object ErrorEvent]"==={}.toString.call(a)}function f(a){return void 0===a}function g(a){return"function"==typeof a}function h(a){return"[object Object]"===Object.prototype.toString.call(a)}function i(a){return"[object String]"===Object.prototype.toString.call(a)}function j(a){return"[object Array]"===Object.prototype.toString.call(a)}function k(a){if(!h(a))return!1;for(var b in a)if(a.hasOwnProperty(b))return!1;return!0}function l(){try{return new ErrorEvent(""),!0}catch(a){return!1}}function m(){if(!("fetch"in P))return!1;try{return new Headers,new Request(""),new Response,!0}catch(a){return!1}}function n(a){function b(b,c){var d=a(b)||b;return c?c(d)||d:d}return b}function o(a,b){var c,d;if(f(a.length))for(c in a)s(a,c)&&b.call(null,c,a[c]);else if(d=a.length)for(c=0;c ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function y(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&i(b))for(c=b.split(/\s+/),f=0;f=0;--b)l[b]===a&&l.splice(b,1)}function c(){g(),l=[]}function d(a,b){var c=null;if(!b||R.collectWindowErrors){for(var d in l)if(l.hasOwnProperty(d))try{l[d].apply(null,[a].concat(T.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function e(a,b,c,e,f){var g=null,i=Q.isErrorEvent(f)?f.error:f,k=Q.isErrorEvent(a)?a.message:a;if(o)R.computeStackTrace.augmentStackTraceWithInitialElement(o,b,c,k),h();else if(i&&Q.isError(i))g=R.computeStackTrace(i),d(g,!0);else{var l,m={url:b,line:c,column:e},n=void 0;if("[object String]"==={}.toString.call(k)){var l=k.match(V);l&&(n=l[1],k=l[2])}m.func=U,g={name:n,message:k,url:F(),stack:[m]},d(g,!0)}return!!j&&j.apply(this,arguments)}function f(){k||(j=S.onerror,S.onerror=e,k=!0)}function g(){k&&(S.onerror=j,k=!1,j=void 0)}function h(){var a=o,b=m;m=null,o=null,n=null,d.apply(null,[a,!1].concat(b))}function i(a,b){var c=T.call(arguments,1);if(o){if(n===a)return;h()}var d=R.computeStackTrace(a);if(o=d,n=a,m=c,setTimeout(function(){n===a&&h()},d.incomplete?2e3:0),b!==!1)throw a}var j,k,l=[],m=null,n=null,o=null;return i.subscribe=a,i.unsubscribe=b,i.uninstall=c,i}(),R.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,d,e=/^\s*at (.*?) ?\(((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,f=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|\[native).*?|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,g=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,h=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,i=/\((\S*)(?::(\d+))(?::(\d+))\)/,j=a.stack.split("\n"),k=[],l=(/^(.*) is undefined$/.exec(a.message),0),m=j.length;l eval")>-1;o&&(b=h.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==l||c[5]||"undefined"==typeof a.columnNumber||(k[0].column=a.columnNumber+1),d={url:c[3],func:c[1]||U,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}!d.func&&d.line&&(d.func=U),k.push(d)}return k.length?{name:a.name,message:a.message,url:F(),stack:k}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=U),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,e){for(var f,g,h=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,i=[],j={},k=!1,l=c.caller;l&&!k;l=l.caller)if(l!==d&&l!==R.report){if(g={url:null,func:U,line:null,column:null},l.name?g.func=l.name:(f=h.exec(l.toString()))&&(g.func=f[1]),"undefined"==typeof g.func)try{g.func=f.input.substring(0,f.input.indexOf("{"))}catch(m){}j[""+l]?k=!0:j[""+l]=!0,i.push(g)}e&&i.splice(0,e);var n={name:a.name,message:a.message,url:F(),stack:i};return b(n,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),n}function d(b,d){var e=null;d=null==d?0:+d;try{if(e=a(b))return e}catch(f){if(R.debug)throw f}try{if(e=c(b,d+1))return e}catch(f){if(R.debug)throw f}return{name:b.name,message:b.message,url:F()}}return d.augmentStackTraceWithInitialElement=b,d.computeStackTraceFromStackProp=a,d}();var W=R,X=a(function(a,b){function c(a,b){for(var c=0;c0){var i=c(d,this);~i?d.splice(i+1):d.push(this),~i?f.splice(i,1/0,g):f.push(g),~c(d,h)&&(h=b.call(this,g,h))}else d.push(h);return null==a?h instanceof Error?e(h):h:a.call(this,g,h)}}b=a.exports=d,b.getSerialize=f});G.prototype=new Error,G.prototype.constructor=G;var Y=G,Z=function(a,b,c){var d=a[b],e=a;if(b in a){var f="warn"===b?"warning":b;a[b]=function(){var a=[].slice.call(arguments),g=Q.safeJoin(a," "),h={level:f,logger:"console",extra:{arguments:a}};"assert"===b?a[0]===!1&&(g="Assertion failed: "+(Q.safeJoin(a.slice(1)," ")||"console.assert"),h.extra.arguments=a.slice(1),c&&c(g,h)):c&&c(g,h),d&&Function.prototype.apply.call(d,e,a)}}},$={wrapMethod:Z},_=Q.isError,aa=Q.isObject,ba=Q.isErrorEvent,ca=Q.isUndefined,da=Q.isFunction,ea=Q.isString,fa=Q.isArray,ga=Q.isEmptyObject,ha=Q.each,ia=Q.objectMerge,ja=Q.truncate,ka=Q.objectFrozen,la=Q.hasKey,ma=Q.joinRegExp,na=Q.urlencode,oa=Q.uuid4,pa=Q.htmlTreeAsString,qa=Q.isSameException,ra=Q.isSameStacktrace,sa=Q.parseUrl,ta=Q.fill,ua=Q.supportsFetch,va=$.wrapMethod,wa="source protocol user pass host port path".split(" "),xa=/^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/,ya="undefined"!=typeof window?window:"undefined"!=typeof N?N:"undefined"!=typeof self?self:{},za=ya.document,Aa=ya.navigator;J.prototype={VERSION:"3.22.2",debug:!1,TraceKit:W,config:function(a,b){var c=this;if(c.i)return this.D("error","Error: Raven has already been configured"),c;if(!a)return c;var d=c.m;b&&ha(b,function(a,b){"tags"===a||"extra"===a||"user"===a?c.l[a]=b:d[a]=b}),c.setDSN(a),d.ignoreErrors.push(/^Script error\.?$/),d.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/),d.ignoreErrors=ma(d.ignoreErrors),d.ignoreUrls=!!d.ignoreUrls.length&&ma(d.ignoreUrls),d.whitelistUrls=!!d.whitelistUrls.length&&ma(d.whitelistUrls),d.includePaths=ma(d.includePaths),d.maxBreadcrumbs=Math.max(0,Math.min(d.maxBreadcrumbs||100,100));var e={xhr:!0,console:!0,dom:!0,location:!0,sentry:!0},f=d.autoBreadcrumbs;"[object Object]"==={}.toString.call(f)?f=ia(e,f):f!==!1&&(f=e),d.autoBreadcrumbs=f;var g={tryCatch:!0},h=d.instrument;return"[object Object]"==={}.toString.call(h)?h=ia(g,h):h!==!1&&(h=g),d.instrument=h,W.collectWindowErrors=!!d.collectWindowErrors,c},install:function(){var a=this;return a.isSetup()&&!a.p&&(W.report.subscribe(function(){a.E.apply(a,arguments)}),a.F(),a.m.instrument&&a.m.instrument.tryCatch&&a.G(),a.m.autoBreadcrumbs&&a.H(),a.I(),a.p=!0),Error.stackTraceLimit=a.m.stackTraceLimit,this},setDSN:function(a){var b=this,c=b.J(a),d=c.path.lastIndexOf("/"),e=c.path.substr(1,d);b.K=a,b.j=c.user,b.L=c.pass&&c.pass.substr(1),b.k=c.path.substr(d+1),b.i=b.M(c),b.N=b.i+"/"+e+"api/"+b.k+"/store/",this.A()},context:function(a,b,c){return da(a)&&(c=b||[],b=a,a=void 0),this.wrap(a,b).apply(this,c)},wrap:function(a,b,c){function d(){var d=[],f=arguments.length,g=!a||a&&a.deep!==!1;for(c&&da(c)&&c.apply(this,arguments);f--;)d[f]=g?e.wrap(a,arguments[f]):arguments[f];try{return b.apply(this,d)}catch(h){throw e.O(),e.captureException(h,a),h}}var e=this;if(ca(b)&&!da(a))return a;if(da(a)&&(b=a,a=void 0),!da(b))return b;try{if(b.a)return b;if(b.P)return b.P}catch(f){return b}for(var g in b)la(b,g)&&(d[g]=b[g]);return d.prototype=b.prototype,b.P=d,d.a=!0,d.b=b,d},uninstall:function(){return W.report.uninstall(),this.Q(),this.R(),this.S(),Error.stackTraceLimit=this.q,this.p=!1,this},captureException:function(a,b){b=ia({trimHeadFrames:0},b?b:{});var c=!_(a),d=!ba(a),e=ba(a)&&!a.error;if(c&&d||e)return this.captureMessage(a,ia(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}));ba(a)&&(a=a.error),this.f=a;try{var f=W.computeStackTrace(a);this.T(f,b)}catch(g){if(a!==g)throw g}return this},captureMessage:function(a,b){if(!this.m.ignoreErrors.test||!this.m.ignoreErrors.test(a)){b=b||{};var c,d=ia({message:a+""},b);try{throw new Error(a)}catch(e){c=e}c.name=null;var f=W.computeStackTrace(c),g=fa(f.stack)&&f.stack[1],h=g&&g.url||"";if((!this.m.ignoreUrls.test||!this.m.ignoreUrls.test(h))&&(!this.m.whitelistUrls.test||this.m.whitelistUrls.test(h))){if(this.m.stacktrace||b&&b.stacktrace){b=ia({fingerprint:a,trimHeadFrames:(b.trimHeadFrames||0)+1},b);var i=this.U(f,b);d.stacktrace={frames:i.reverse()}}return this.V(d),this}}},captureBreadcrumb:function(a){var b=ia({timestamp:H()/1e3},a);if(da(this.m.breadcrumbCallback)){var c=this.m.breadcrumbCallback(b);if(aa(c)&&!ga(c))b=c;else if(c===!1)return this}return this.w.push(b),this.w.length>this.m.maxBreadcrumbs&&this.w.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.t.push([a,b]),this.p&&this.I(),this},setUserContext:function(a){return this.l.user=a,this},setExtraContext:function(a){return this.W("extra",a),this},setTagsContext:function(a){return this.W("tags",a),this},clearContext:function(){return this.l={},this},getContext:function(){return JSON.parse(X(this.l))},setEnvironment:function(a){return this.m.environment=a,this},setRelease:function(a){return this.m.release=a,this},setDataCallback:function(a){var b=this.m.dataCallback;return this.m.dataCallback=I(b,a),this},setBreadcrumbCallback:function(a){var b=this.m.breadcrumbCallback;return this.m.breadcrumbCallback=I(b,a),this},setShouldSendCallback:function(a){var b=this.m.shouldSendCallback;return this.m.shouldSendCallback=I(b,a),this},setTransport:function(a){return this.m.transport=a,this},lastException:function(){return this.f},lastEventId:function(){return this.h},isSetup:function(){return!!this.c&&(!!this.i||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.D("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=ya.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(za){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new Y("Missing eventId");var c=a.dsn||this.K;if(!c)throw new Y("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.l.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.M(this.J(c)),h=za.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(za.head||za.body).appendChild(h)}},O:function(){var a=this;this.o+=1,setTimeout(function(){a.o-=1})},X:function(a,b){var c,d;if(this.d){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),za.createEvent?(c=za.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=za.createEventObject(),c.eventType=a);for(d in b)la(b,d)&&(c[d]=b[d]);if(za.createEvent)za.dispatchEvent(c);else try{za.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},Y:function(a){var b=this;return function(c){if(b.Z=null,b.x!==c){b.x=c;var d;try{d=pa(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},$:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.Z;g||a.Y("input")(c),clearTimeout(g),a.Z=setTimeout(function(){a.Z=null},b)}}},_:function(a,b){var c=sa(this.y.href),d=sa(b),e=sa(a);this.z=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},F:function(){var a=this;a.aa=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.a?a.aa.apply(this.b,arguments):a.aa.apply(this,arguments)}},Q:function(){this.aa&&(Function.prototype.toString=this.aa)},G:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b._(b.z,c+""),a.apply(this,arguments)}};ta(history,"pushState",j,d),ta(history,"replaceState",j,d)}if(c.console&&"console"in ya&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};ha(["debug","info","warn","error","log"],function(a,b){va(console,b,k)})}},R:function(){for(var a;this.v.length;){a=this.v.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},S:function(){for(var a in this.s)this.r[a]=this.s[a]},I:function(){var a=this;ha(this.t,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},J:function(a){var b=xa.exec(a),c={},d=7;try{for(;d--;)c[wa[d]]=b[d]||""}catch(e){throw new Y("Invalid DSN: "+a)}if(c.pass&&!this.m.allowSecretKey)throw new Y("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},M:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},E:function(){this.o||this.T.apply(this,arguments)},T:function(a,b){var c=this.U(a,b);this.X("handle",{stackInfo:a,options:b}),this.ca(a.name,a.message,a.url,a.lineno,c,b)},U:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(ha(a.stack,function(b,e){var f=c.da(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.w,0)}),this.l.user&&(a.user=this.l.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||ga(a[b]))&&delete a[b]}),da(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!ga(a)&&(!da(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.ja()?void this.D("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() href parsing trick because React Native and other +// environments where DOM might not be available + + +function parseUrl$1(url) { + if (typeof url !== 'string') return {}; + var match = url.match(/^(([^:\/?#]+):)?(\/\/([^\/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?$/); // coerce to undefined values to empty string so we don't get 'undefined' + + var query = match[6] || ''; + var fragment = match[8] || ''; + return { + protocol: match[2], + host: match[4], + path: match[5], + relative: match[5] + query + fragment // everything minus origin + + }; +} + +function uuid4$1() { + var crypto = _window$3.crypto || _window$3.msCrypto; + + if (!isUndefined$1(crypto) && crypto.getRandomValues) { + // Use window.crypto API if available + // eslint-disable-next-line no-undef + var arr = new Uint16Array(8); + crypto.getRandomValues(arr); // set 4 in byte 7 + + arr[3] = arr[3] & 0xfff | 0x4000; // set 2 most significant bits of byte 9 to '10' + + arr[4] = arr[4] & 0x3fff | 0x8000; + + var pad = function pad(num) { + var v = num.toString(16); + + while (v.length < 4) { + v = '0' + v; + } + + return v; + }; + + return pad(arr[0]) + pad(arr[1]) + pad(arr[2]) + pad(arr[3]) + pad(arr[4]) + pad(arr[5]) + pad(arr[6]) + pad(arr[7]); + } else { + // http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/2117523#2117523 + return 'xxxxxxxxxxxx4xxxyxxxxxxxxxxxxxxx'.replace(/[xy]/g, function (c) { + var r = Math.random() * 16 | 0, + v = c === 'x' ? r : r & 0x3 | 0x8; + return v.toString(16); + }); + } +} +/** + * Given a child DOM element, returns a query-selector statement describing that + * and its ancestors + * e.g. [HTMLElement] => body > div > input#foo.btn[name=baz] + * @param elem + * @returns {string} + */ + + +function htmlTreeAsString$1(elem) { + /* eslint no-extra-parens:0*/ + var MAX_TRAVERSE_HEIGHT = 5, + MAX_OUTPUT_LEN = 80, + out = [], + height = 0, + len = 0, + separator = ' > ', + sepLength = separator.length, + nextStr; + + while (elem && height++ < MAX_TRAVERSE_HEIGHT) { + nextStr = htmlElementAsString(elem); // bail out if + // - nextStr is the 'html' element + // - the length of the string that would be created exceeds MAX_OUTPUT_LEN + // (ignore this limit if we are on the first iteration) + + if (nextStr === 'html' || height > 1 && len + out.length * sepLength + nextStr.length >= MAX_OUTPUT_LEN) { + break; + } + + out.push(nextStr); + len += nextStr.length; + elem = elem.parentNode; + } + + return out.reverse().join(separator); +} +/** + * Returns a simple, query-selector representation of a DOM element + * e.g. [HTMLElement] => input#foo.btn[name=baz] + * @param HTMLElement + * @returns {string} + */ + + +function htmlElementAsString(elem) { + var out = [], + className, + classes, + key, + attr, + i; + + if (!elem || !elem.tagName) { + return ''; + } + + out.push(elem.tagName.toLowerCase()); + + if (elem.id) { + out.push('#' + elem.id); + } + + className = elem.className; + + if (className && isString$1(className)) { + classes = className.split(/\s+/); + + for (i = 0; i < classes.length; i++) { + out.push('.' + classes[i]); + } + } + + var attrWhitelist = ['type', 'name', 'title', 'alt']; + + for (i = 0; i < attrWhitelist.length; i++) { + key = attrWhitelist[i]; + attr = elem.getAttribute(key); + + if (attr) { + out.push('[' + key + '="' + attr + '"]'); + } + } + + return out.join(''); +} +/** + * Returns true if either a OR b is truthy, but not both + */ + + +function isOnlyOneTruthy(a, b) { + return !!(!!a ^ !!b); +} +/** + * Returns true if both parameters are undefined + */ + + +function isBothUndefined(a, b) { + return isUndefined$1(a) && isUndefined$1(b); +} +/** + * Returns true if the two input exception interfaces have the same content + */ + + +function isSameException$1(ex1, ex2) { + if (isOnlyOneTruthy(ex1, ex2)) return false; + ex1 = ex1.values[0]; + ex2 = ex2.values[0]; + if (ex1.type !== ex2.type || ex1.value !== ex2.value) return false; // in case both stacktraces are undefined, we can't decide so default to false + + if (isBothUndefined(ex1.stacktrace, ex2.stacktrace)) return false; + return isSameStacktrace$1(ex1.stacktrace, ex2.stacktrace); +} +/** + * Returns true if the two input stack trace interfaces have the same content + */ + + +function isSameStacktrace$1(stack1, stack2) { + if (isOnlyOneTruthy(stack1, stack2)) return false; + var frames1 = stack1.frames; + var frames2 = stack2.frames; // Exit early if frame count differs + + if (frames1.length !== frames2.length) return false; // Iterate through every frame; bail out if anything differs + + var a, b; + + for (var i = 0; i < frames1.length; i++) { + a = frames1[i]; + b = frames2[i]; + if (a.filename !== b.filename || a.lineno !== b.lineno || a.colno !== b.colno || a['function'] !== b['function']) return false; + } + + return true; +} +/** + * Polyfill a method + * @param obj object e.g. `document` + * @param name method name present on object e.g. `addEventListener` + * @param replacement replacement function + * @param track {optional} record instrumentation to an array + */ + + +function fill$1(obj, name, replacement, track) { + var orig = obj[name]; + obj[name] = replacement(orig); + obj[name].__raven__ = true; + obj[name].__orig__ = orig; + + if (track) { + track.push([obj, name, orig]); + } +} +/** + * Join values in array + * @param input array of values to be joined together + * @param delimiter string to be placed in-between values + * @returns {string} + */ + + +function safeJoin(input, delimiter) { + if (!isArray$1(input)) return ''; + var output = []; + + for (var i = 0; i < input.length; i++) { + try { + output.push(String(input[i])); + } catch (e) { + output.push('[value cannot be serialized]'); + } + } + + return output.join(delimiter); +} + +var utils = { + isObject: isObject$1, + isError: isError$1, + isErrorEvent: isErrorEvent$1, + isUndefined: isUndefined$1, + isFunction: isFunction$1, + isPlainObject: isPlainObject, + isString: isString$1, + isArray: isArray$1, + isEmptyObject: isEmptyObject$1, + supportsErrorEvent: supportsErrorEvent, + supportsFetch: supportsFetch$1, + wrappedCallback: wrappedCallback, + each: each$1, + objectMerge: objectMerge$1, + truncate: truncate$1, + objectFrozen: objectFrozen$1, + hasKey: hasKey$1, + joinRegExp: joinRegExp$1, + urlencode: urlencode$1, + uuid4: uuid4$1, + htmlTreeAsString: htmlTreeAsString$1, + htmlElementAsString: htmlElementAsString, + isSameException: isSameException$1, + isSameStacktrace: isSameStacktrace$1, + parseUrl: parseUrl$1, + fill: fill$1, + safeJoin: safeJoin +}; + +/* + TraceKit - Cross brower stack traces + + This was originally forked from github.com/occ/TraceKit, but has since been + largely re-written and is now maintained as part of raven-js. Tests for + this are in test/vendor. + + MIT license +*/ + +var TraceKit = { + collectWindowErrors: true, + debug: false +}; // This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) + +var _window$2 = typeof window !== 'undefined' ? window : typeof commonjsGlobal !== 'undefined' ? commonjsGlobal : typeof self !== 'undefined' ? self : {}; // global reference to slice + + +var _slice = [].slice; +var UNKNOWN_FUNCTION = '?'; // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error#Error_types + +var ERROR_TYPES_RE = /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/; + +function getLocationHref() { + if (typeof document === 'undefined' || document.location == null) return ''; + return document.location.href; +} +/** + * TraceKit.report: cross-browser processing of unhandled exceptions + * + * Syntax: + * TraceKit.report.subscribe(function(stackInfo) { ... }) + * TraceKit.report.unsubscribe(function(stackInfo) { ... }) + * TraceKit.report(exception) + * try { ...code... } catch(ex) { TraceKit.report(ex); } + * + * Supports: + * - Firefox: full stack trace with line numbers, plus column number + * on top frame; column number is not guaranteed + * - Opera: full stack trace with line and column numbers + * - Chrome: full stack trace with line and column numbers + * - Safari: line and column number for the top frame only; some frames + * may be missing, and column number is not guaranteed + * - IE: line and column number for the top frame only; some frames + * may be missing, and column number is not guaranteed + * + * In theory, TraceKit should work on all of the following versions: + * - IE5.5+ (only 8.0 tested) + * - Firefox 0.9+ (only 3.5+ tested) + * - Opera 7+ (only 10.50 tested; versions 9 and earlier may require + * Exceptions Have Stacktrace to be enabled in opera:config) + * - Safari 3+ (only 4+ tested) + * - Chrome 1+ (only 5+ tested) + * - Konqueror 3.5+ (untested) + * + * Requires TraceKit.computeStackTrace. + * + * Tries to catch all unhandled exceptions and report them to the + * subscribed handlers. Please note that TraceKit.report will rethrow the + * exception. This is REQUIRED in order to get a useful stack trace in IE. + * If the exception does not reach the top of the browser, you will only + * get a stack trace from the point where TraceKit.report was called. + * + * Handlers receive a stackInfo object as described in the + * TraceKit.computeStackTrace docs. + */ + + +TraceKit.report = function reportModuleWrapper() { + var handlers = [], + lastArgs = null, + lastException = null, + lastExceptionStack = null; + /** + * Add a crash handler. + * @param {Function} handler + */ + + function subscribe(handler) { + installGlobalHandler(); + handlers.push(handler); + } + /** + * Remove a crash handler. + * @param {Function} handler + */ + + + function unsubscribe(handler) { + for (var i = handlers.length - 1; i >= 0; --i) { + if (handlers[i] === handler) { + handlers.splice(i, 1); + } + } + } + /** + * Remove all crash handlers. + */ + + + function unsubscribeAll() { + uninstallGlobalHandler(); + handlers = []; + } + /** + * Dispatch stack information to all handlers. + * @param {Object.} stack + */ + + + function notifyHandlers(stack, isWindowError) { + var exception = null; + + if (isWindowError && !TraceKit.collectWindowErrors) { + return; + } + + for (var i in handlers) { + if (handlers.hasOwnProperty(i)) { + try { + handlers[i].apply(null, [stack].concat(_slice.call(arguments, 2))); + } catch (inner) { + exception = inner; + } + } + } + + if (exception) { + throw exception; + } + } + + var _oldOnerrorHandler, _onErrorHandlerInstalled; + /** + * Ensures all global unhandled exceptions are recorded. + * Supported by Gecko and IE. + * @param {string} msg Error message. + * @param {string} url URL of script that generated the exception. + * @param {(number|string)} lineNo The line number at which the error + * occurred. + * @param {?(number|string)} colNo The column number at which the error + * occurred. + * @param {?Error} ex The actual Error object. + */ + + + function traceKitWindowOnError(msg, url, lineNo, colNo, ex) { + var stack = null; // If 'ex' is ErrorEvent, get real Error from inside + + var exception = utils.isErrorEvent(ex) ? ex.error : ex; // If 'msg' is ErrorEvent, get real message from inside + + var message = utils.isErrorEvent(msg) ? msg.message : msg; + + if (lastExceptionStack) { + TraceKit.computeStackTrace.augmentStackTraceWithInitialElement(lastExceptionStack, url, lineNo, message); + processLastException(); + } else if (exception && utils.isError(exception)) { + // non-string `exception` arg; attempt to extract stack trace + // New chrome and blink send along a real error object + // Let's just report that like a normal error. + // See: https://mikewest.org/2013/08/debugging-runtime-errors-with-window-onerror + stack = TraceKit.computeStackTrace(exception); + notifyHandlers(stack, true); + } else { + var location = { + url: url, + line: lineNo, + column: colNo + }; + var name = undefined; + var groups; + + if ({}.toString.call(message) === '[object String]') { + var groups = message.match(ERROR_TYPES_RE); + + if (groups) { + name = groups[1]; + message = groups[2]; + } + } + + location.func = UNKNOWN_FUNCTION; + stack = { + name: name, + message: message, + url: getLocationHref(), + stack: [location] + }; + notifyHandlers(stack, true); + } + + if (_oldOnerrorHandler) { + return _oldOnerrorHandler.apply(this, arguments); + } + + return false; + } + + function installGlobalHandler() { + if (_onErrorHandlerInstalled) { + return; + } + + _oldOnerrorHandler = _window$2.onerror; + _window$2.onerror = traceKitWindowOnError; + _onErrorHandlerInstalled = true; + } + + function uninstallGlobalHandler() { + if (!_onErrorHandlerInstalled) { + return; + } + + _window$2.onerror = _oldOnerrorHandler; + _onErrorHandlerInstalled = false; + _oldOnerrorHandler = undefined; + } + + function processLastException() { + var _lastExceptionStack = lastExceptionStack, + _lastArgs = lastArgs; + lastArgs = null; + lastExceptionStack = null; + lastException = null; + notifyHandlers.apply(null, [_lastExceptionStack, false].concat(_lastArgs)); + } + /** + * Reports an unhandled Error to TraceKit. + * @param {Error} ex + * @param {?boolean} rethrow If false, do not re-throw the exception. + * Only used for window.onerror to not cause an infinite loop of + * rethrowing. + */ + + + function report(ex, rethrow) { + var args = _slice.call(arguments, 1); + + if (lastExceptionStack) { + if (lastException === ex) { + return; // already caught by an inner catch block, ignore + } else { + processLastException(); + } + } + + var stack = TraceKit.computeStackTrace(ex); + lastExceptionStack = stack; + lastException = ex; + lastArgs = args; // If the stack trace is incomplete, wait for 2 seconds for + // slow slow IE to see if onerror occurs or not before reporting + // this exception; otherwise, we will end up with an incomplete + // stack trace + + setTimeout(function () { + if (lastException === ex) { + processLastException(); + } + }, stack.incomplete ? 2000 : 0); + + if (rethrow !== false) { + throw ex; // re-throw to propagate to the top level (and cause window.onerror) + } + } + + report.subscribe = subscribe; + report.unsubscribe = unsubscribe; + report.uninstall = unsubscribeAll; + return report; +}(); +/** + * TraceKit.computeStackTrace: cross-browser stack traces in JavaScript + * + * Syntax: + * s = TraceKit.computeStackTrace(exception) // consider using TraceKit.report instead (see below) + * Returns: + * s.name - exception name + * s.message - exception message + * s.stack[i].url - JavaScript or HTML file URL + * s.stack[i].func - function name, or empty for anonymous functions (if guessing did not work) + * s.stack[i].args - arguments passed to the function, if known + * s.stack[i].line - line number, if known + * s.stack[i].column - column number, if known + * + * Supports: + * - Firefox: full stack trace with line numbers and unreliable column + * number on top frame + * - Opera 10: full stack trace with line and column numbers + * - Opera 9-: full stack trace with line numbers + * - Chrome: full stack trace with line and column numbers + * - Safari: line and column number for the topmost stacktrace element + * only + * - IE: no line numbers whatsoever + * + * Tries to guess names of anonymous functions by looking for assignments + * in the source code. In IE and Safari, we have to guess source file names + * by searching for function bodies inside all page scripts. This will not + * work for scripts that are loaded cross-domain. + * Here be dragons: some function names may be guessed incorrectly, and + * duplicate functions may be mismatched. + * + * TraceKit.computeStackTrace should only be used for tracing purposes. + * Logging of unhandled exceptions should be done with TraceKit.report, + * which builds on top of TraceKit.computeStackTrace and provides better + * IE support by utilizing the window.onerror event to retrieve information + * about the top of the stack. + * + * Note: In IE and Safari, no stack trace is recorded on the Error object, + * so computeStackTrace instead walks its *own* chain of callers. + * This means that: + * * in Safari, some methods may be missing from the stack trace; + * * in IE, the topmost function in the stack trace will always be the + * caller of computeStackTrace. + * + * This is okay for tracing (because you are likely to be calling + * computeStackTrace from the function you want to be the topmost element + * of the stack trace anyway), but not okay for logging unhandled + * exceptions (because your catch block will likely be far away from the + * inner function that actually caused the exception). + * + */ + + +TraceKit.computeStackTrace = function computeStackTraceWrapper() { + // Contents of Exception in various browsers. + // + // SAFARI: + // ex.message = Can't find variable: qq + // ex.line = 59 + // ex.sourceId = 580238192 + // ex.sourceURL = http://... + // ex.expressionBeginOffset = 96 + // ex.expressionCaretOffset = 98 + // ex.expressionEndOffset = 98 + // ex.name = ReferenceError + // + // FIREFOX: + // ex.message = qq is not defined + // ex.fileName = http://... + // ex.lineNumber = 59 + // ex.columnNumber = 69 + // ex.stack = ...stack trace... (see the example below) + // ex.name = ReferenceError + // + // CHROME: + // ex.message = qq is not defined + // ex.name = ReferenceError + // ex.type = not_defined + // ex.arguments = ['aa'] + // ex.stack = ...stack trace... + // + // INTERNET EXPLORER: + // ex.message = ... + // ex.name = ReferenceError + // + // OPERA: + // ex.message = ...message... (see the example below) + // ex.name = ReferenceError + // ex.opera#sourceloc = 11 (pretty much useless, duplicates the info in ex.message) + // ex.stacktrace = n/a; see 'opera:config#UserPrefs|Exceptions Have Stacktrace' + + /** + * Computes stack trace information from the stack property. + * Chrome and Gecko use this property. + * @param {Error} ex + * @return {?Object.} Stack trace information. + */ + function computeStackTraceFromStackProp(ex) { + if (typeof ex.stack === 'undefined' || !ex.stack) return; + var chrome = /^\s*at (.*?) ?\(((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i, + gecko = /^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|\[native).*?|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i, + winjs = /^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i, + // Used to additionally parse URL/line/column from eval frames + geckoEval = /(\S+) line (\d+)(?: > eval line \d+)* > eval/i, + chromeEval = /\((\S*)(?::(\d+))(?::(\d+))\)/, + lines = ex.stack.split('\n'), + stack = [], + submatch, + parts, + element, + reference = /^(.*) is undefined$/.exec(ex.message); + + for (var i = 0, j = lines.length; i < j; ++i) { + if (parts = chrome.exec(lines[i])) { + var isNative = parts[2] && parts[2].indexOf('native') === 0; // start of line + + var isEval = parts[2] && parts[2].indexOf('eval') === 0; // start of line + + if (isEval && (submatch = chromeEval.exec(parts[2]))) { + // throw out eval line/column and use top-most line/column number + parts[2] = submatch[1]; // url + + parts[3] = submatch[2]; // line + + parts[4] = submatch[3]; // column + } + + element = { + url: !isNative ? parts[2] : null, + func: parts[1] || UNKNOWN_FUNCTION, + args: isNative ? [parts[2]] : [], + line: parts[3] ? +parts[3] : null, + column: parts[4] ? +parts[4] : null + }; + } else if (parts = winjs.exec(lines[i])) { + element = { + url: parts[2], + func: parts[1] || UNKNOWN_FUNCTION, + args: [], + line: +parts[3], + column: parts[4] ? +parts[4] : null + }; + } else if (parts = gecko.exec(lines[i])) { + var isEval = parts[3] && parts[3].indexOf(' > eval') > -1; + + if (isEval && (submatch = geckoEval.exec(parts[3]))) { + // throw out eval line/column and use top-most line number + parts[3] = submatch[1]; + parts[4] = submatch[2]; + parts[5] = null; // no column when eval + } else if (i === 0 && !parts[5] && typeof ex.columnNumber !== 'undefined') { + // FireFox uses this awesome columnNumber property for its top frame + // Also note, Firefox's column number is 0-based and everything else expects 1-based, + // so adding 1 + // NOTE: this hack doesn't work if top-most frame is eval + stack[0].column = ex.columnNumber + 1; + } + + element = { + url: parts[3], + func: parts[1] || UNKNOWN_FUNCTION, + args: parts[2] ? parts[2].split(',') : [], + line: parts[4] ? +parts[4] : null, + column: parts[5] ? +parts[5] : null + }; + } else { + continue; + } + + if (!element.func && element.line) { + element.func = UNKNOWN_FUNCTION; + } + + stack.push(element); + } + + if (!stack.length) { + return null; + } + + return { + name: ex.name, + message: ex.message, + url: getLocationHref(), + stack: stack + }; + } + /** + * Adds information about the first frame to incomplete stack traces. + * Safari and IE require this to get complete data on the first frame. + * @param {Object.} stackInfo Stack trace information from + * one of the compute* methods. + * @param {string} url The URL of the script that caused an error. + * @param {(number|string)} lineNo The line number of the script that + * caused an error. + * @param {string=} message The error generated by the browser, which + * hopefully contains the name of the object that caused the error. + * @return {boolean} Whether or not the stack information was + * augmented. + */ + + + function augmentStackTraceWithInitialElement(stackInfo, url, lineNo, message) { + var initial = { + url: url, + line: lineNo + }; + + if (initial.url && initial.line) { + stackInfo.incomplete = false; + + if (!initial.func) { + initial.func = UNKNOWN_FUNCTION; + } + + if (stackInfo.stack.length > 0) { + if (stackInfo.stack[0].url === initial.url) { + if (stackInfo.stack[0].line === initial.line) { + return false; // already in stack trace + } else if (!stackInfo.stack[0].line && stackInfo.stack[0].func === initial.func) { + stackInfo.stack[0].line = initial.line; + return false; + } + } + } + + stackInfo.stack.unshift(initial); + stackInfo.partial = true; + return true; + } else { + stackInfo.incomplete = true; + } + + return false; + } + /** + * Computes stack trace information by walking the arguments.caller + * chain at the time the exception occurred. This will cause earlier + * frames to be missed but is the only way to get any stack trace in + * Safari and IE. The top frame is restored by + * {@link augmentStackTraceWithInitialElement}. + * @param {Error} ex + * @return {?Object.} Stack trace information. + */ + + + function computeStackTraceByWalkingCallerChain(ex, depth) { + var functionName = /function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i, + stack = [], + funcs = {}, + recursion = false, + parts, + item; + + for (var curr = computeStackTraceByWalkingCallerChain.caller; curr && !recursion; curr = curr.caller) { + if (curr === computeStackTrace || curr === TraceKit.report) { + // console.log('skipping internal function'); + continue; + } + + item = { + url: null, + func: UNKNOWN_FUNCTION, + line: null, + column: null + }; + + if (curr.name) { + item.func = curr.name; + } else if (parts = functionName.exec(curr.toString())) { + item.func = parts[1]; + } + + if (typeof item.func === 'undefined') { + try { + item.func = parts.input.substring(0, parts.input.indexOf('{')); + } catch (e) {} + } + + if (funcs['' + curr]) { + recursion = true; + } else { + funcs['' + curr] = true; + } + + stack.push(item); + } + + if (depth) { + // console.log('depth is ' + depth); + // console.log('stack is ' + stack.length); + stack.splice(0, depth); + } + + var result = { + name: ex.name, + message: ex.message, + url: getLocationHref(), + stack: stack + }; + augmentStackTraceWithInitialElement(result, ex.sourceURL || ex.fileName, ex.line || ex.lineNumber, ex.message || ex.description); + return result; + } + /** + * Computes a stack trace for an exception. + * @param {Error} ex + * @param {(string|number)=} depth + */ + + + function computeStackTrace(ex, depth) { + var stack = null; + depth = depth == null ? 0 : +depth; + + try { + stack = computeStackTraceFromStackProp(ex); + + if (stack) { + return stack; + } + } catch (e) { + if (TraceKit.debug) { + throw e; + } + } + + try { + stack = computeStackTraceByWalkingCallerChain(ex, depth + 1); + + if (stack) { + return stack; + } + } catch (e) { + if (TraceKit.debug) { + throw e; + } + } + + return { + name: ex.name, + message: ex.message, + url: getLocationHref() + }; + } + + computeStackTrace.augmentStackTraceWithInitialElement = augmentStackTraceWithInitialElement; + computeStackTrace.computeStackTraceFromStackProp = computeStackTraceFromStackProp; + return computeStackTrace; +}(); + +var tracekit = TraceKit; + +var stringify_1 = createCommonjsModule(function (module, exports) { + /* + json-stringify-safe + Like JSON.stringify, but doesn't throw on circular references. + + Originally forked from https://github.com/isaacs/json-stringify-safe + version 5.0.1 on 3/8/2017 and modified to handle Errors serialization + and IE8 compatibility. Tests for this are in test/vendor. + + ISC license: https://github.com/isaacs/json-stringify-safe/blob/master/LICENSE + */ + exports = module.exports = stringify; + exports.getSerialize = serializer; + + function indexOf(haystack, needle) { + for (var i = 0; i < haystack.length; ++i) { + if (haystack[i] === needle) return i; + } + + return -1; + } + + function stringify(obj, replacer, spaces, cycleReplacer) { + return JSON.stringify(obj, serializer(replacer, cycleReplacer), spaces); + } // https://github.com/ftlabs/js-abbreviate/blob/fa709e5f139e7770a71827b1893f22418097fbda/index.js#L95-L106 + + + function stringifyError(value) { + var err = { + // These properties are implemented as magical getters and don't show up in for in + stack: value.stack, + message: value.message, + name: value.name + }; + + for (var i in value) { + if (Object.prototype.hasOwnProperty.call(value, i)) { + err[i] = value[i]; + } + } + + return err; + } + + function serializer(replacer, cycleReplacer) { + var stack = []; + var keys = []; + + if (cycleReplacer == null) { + cycleReplacer = function cycleReplacer(key, value) { + if (stack[0] === value) { + return '[Circular ~]'; + } + + return '[Circular ~.' + keys.slice(0, indexOf(stack, value)).join('.') + ']'; + }; + } + + return function (key, value) { + if (stack.length > 0) { + var thisPos = indexOf(stack, this); + ~thisPos ? stack.splice(thisPos + 1) : stack.push(this); + ~thisPos ? keys.splice(thisPos, Infinity, key) : keys.push(key); + + if (~indexOf(stack, value)) { + value = cycleReplacer.call(this, key, value); + } + } else { + stack.push(value); + } + + return replacer == null ? value instanceof Error ? stringifyError(value) : value : replacer.call(this, key, value); + }; + } +}); +var stringify_2 = stringify_1.getSerialize; + +function RavenConfigError(message) { + this.name = 'RavenConfigError'; + this.message = message; +} + +RavenConfigError.prototype = new Error(); +RavenConfigError.prototype.constructor = RavenConfigError; +var configError = RavenConfigError; + +var wrapMethod = function wrapMethod(console, level, callback) { + var originalConsoleLevel = console[level]; + var originalConsole = console; + + if (!(level in console)) { + return; + } + + var sentryLevel = level === 'warn' ? 'warning' : level; + + console[level] = function () { + var args = [].slice.call(arguments); + var msg = utils.safeJoin(args, ' '); + var data = { + level: sentryLevel, + logger: 'console', + extra: { + arguments: args + } + }; + + if (level === 'assert') { + if (args[0] === false) { + // Default browsers message + msg = 'Assertion failed: ' + (utils.safeJoin(args.slice(1), ' ') || 'console.assert'); + data.extra.arguments = args.slice(1); + callback && callback(msg, data); + } + } else { + callback && callback(msg, data); + } // this fails for some browsers. :( + + + if (originalConsoleLevel) { + // IE9 doesn't allow calling apply on console functions directly + // See: https://stackoverflow.com/questions/5472938/does-ie9-support-console-log-and-is-it-a-real-function#answer-5473193 + Function.prototype.apply.call(originalConsoleLevel, originalConsole, args); + } + }; +}; + +var console$1 = { + wrapMethod: wrapMethod +}; + +/*global XDomainRequest:false */ + +var isError = utils.isError; +var isObject = utils.isObject; +var isErrorEvent = utils.isErrorEvent; +var isUndefined = utils.isUndefined; +var isFunction = utils.isFunction; +var isString = utils.isString; +var isArray = utils.isArray; +var isEmptyObject = utils.isEmptyObject; +var each = utils.each; +var objectMerge = utils.objectMerge; +var truncate = utils.truncate; +var objectFrozen = utils.objectFrozen; +var hasKey = utils.hasKey; +var joinRegExp = utils.joinRegExp; +var urlencode = utils.urlencode; +var uuid4 = utils.uuid4; +var htmlTreeAsString = utils.htmlTreeAsString; +var isSameException = utils.isSameException; +var isSameStacktrace = utils.isSameStacktrace; +var parseUrl = utils.parseUrl; +var fill = utils.fill; +var supportsFetch = utils.supportsFetch; +var wrapConsoleMethod = console$1.wrapMethod; +var dsnKeys = 'source protocol user pass host port path'.split(' '); +var dsnPattern = /^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/; + +function now() { + return +new Date(); +} // This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) + + +var _window$1 = typeof window !== 'undefined' ? window : typeof commonjsGlobal !== 'undefined' ? commonjsGlobal : typeof self !== 'undefined' ? self : {}; + +var _document = _window$1.document; +var _navigator = _window$1.navigator; + +function keepOriginalCallback(original, callback) { + return isFunction(callback) ? function (data) { + return callback(data, original); + } : callback; +} // First, check for JSON support +// If there is no JSON, we no-op the core features of Raven +// since JSON is required to encode the payload + + +function Raven$1() { + this._hasJSON = !!(_typeof(JSON) === 'object' && JSON.stringify); // Raven can run in contexts where there's no document (react-native) + + this._hasDocument = !isUndefined(_document); + this._hasNavigator = !isUndefined(_navigator); + this._lastCapturedException = null; + this._lastData = null; + this._lastEventId = null; + this._globalServer = null; + this._globalKey = null; + this._globalProject = null; + this._globalContext = {}; + this._globalOptions = { + // SENTRY_RELEASE can be injected by https://github.com/getsentry/sentry-webpack-plugin + release: _window$1.SENTRY_RELEASE && _window$1.SENTRY_RELEASE.id, + logger: 'javascript', + ignoreErrors: [], + ignoreUrls: [], + whitelistUrls: [], + includePaths: [], + headers: null, + collectWindowErrors: true, + maxMessageLength: 0, + // By default, truncates URL values to 250 chars + maxUrlLength: 250, + stackTraceLimit: 50, + autoBreadcrumbs: true, + instrument: true, + sampleRate: 1 + }; + this._fetchDefaults = { + method: 'POST', + keepalive: true, + referrerPolicy: 'origin' + }; + this._ignoreOnError = 0; + this._isRavenInstalled = false; + this._originalErrorStackTraceLimit = Error.stackTraceLimit; // capture references to window.console *and* all its methods first + // before the console plugin has a chance to monkey patch + + this._originalConsole = _window$1.console || {}; + this._originalConsoleMethods = {}; + this._plugins = []; + this._startTime = now(); + this._wrappedBuiltIns = []; + this._breadcrumbs = []; + this._lastCapturedEvent = null; + this._keypressTimeout; + this._location = _window$1.location; + this._lastHref = this._location && this._location.href; + + this._resetBackoff(); // eslint-disable-next-line guard-for-in + + + for (var method in this._originalConsole) { + this._originalConsoleMethods[method] = this._originalConsole[method]; + } +} +/* + * The core Raven singleton + * + * @this {Raven} + */ + + +Raven$1.prototype = { + // Hardcode version string so that raven source can be loaded directly via + // webpack (using a build step causes webpack #1617). Grunt verifies that + // this value matches package.json during build. + // See: https://github.com/getsentry/raven-js/issues/465 + VERSION: '3.22.2', + debug: false, + TraceKit: tracekit, + // alias to TraceKit + + /* + * Configure Raven with a DSN and extra options + * + * @param {string} dsn The public Sentry DSN + * @param {object} options Set of global options [optional] + * @return {Raven} + */ + config: function config(dsn, options) { + var self = this; + + if (self._globalServer) { + this._logDebug('error', 'Error: Raven has already been configured'); + + return self; + } + + if (!dsn) return self; + var globalOptions = self._globalOptions; // merge in options + + if (options) { + each(options, function (key, value) { + // tags and extra are special and need to be put into context + if (key === 'tags' || key === 'extra' || key === 'user') { + self._globalContext[key] = value; + } else { + globalOptions[key] = value; + } + }); + } + + self.setDSN(dsn); // "Script error." is hard coded into browsers for errors that it can't read. + // this is the result of a script being pulled in from an external domain and CORS. + + globalOptions.ignoreErrors.push(/^Script error\.?$/); + globalOptions.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/); // join regexp rules into one big rule + + globalOptions.ignoreErrors = joinRegExp(globalOptions.ignoreErrors); + globalOptions.ignoreUrls = globalOptions.ignoreUrls.length ? joinRegExp(globalOptions.ignoreUrls) : false; + globalOptions.whitelistUrls = globalOptions.whitelistUrls.length ? joinRegExp(globalOptions.whitelistUrls) : false; + globalOptions.includePaths = joinRegExp(globalOptions.includePaths); + globalOptions.maxBreadcrumbs = Math.max(0, Math.min(globalOptions.maxBreadcrumbs || 100, 100)); // default and hard limit is 100 + + var autoBreadcrumbDefaults = { + xhr: true, + console: true, + dom: true, + location: true, + sentry: true + }; + var autoBreadcrumbs = globalOptions.autoBreadcrumbs; + + if ({}.toString.call(autoBreadcrumbs) === '[object Object]') { + autoBreadcrumbs = objectMerge(autoBreadcrumbDefaults, autoBreadcrumbs); + } else if (autoBreadcrumbs !== false) { + autoBreadcrumbs = autoBreadcrumbDefaults; + } + + globalOptions.autoBreadcrumbs = autoBreadcrumbs; + var instrumentDefaults = { + tryCatch: true + }; + var instrument = globalOptions.instrument; + + if ({}.toString.call(instrument) === '[object Object]') { + instrument = objectMerge(instrumentDefaults, instrument); + } else if (instrument !== false) { + instrument = instrumentDefaults; + } + + globalOptions.instrument = instrument; + tracekit.collectWindowErrors = !!globalOptions.collectWindowErrors; // return for chaining + + return self; + }, + + /* + * Installs a global window.onerror error handler + * to capture and report uncaught exceptions. + * At this point, install() is required to be called due + * to the way TraceKit is set up. + * + * @return {Raven} + */ + install: function install() { + var self = this; + + if (self.isSetup() && !self._isRavenInstalled) { + tracekit.report.subscribe(function () { + self._handleOnErrorStackInfo.apply(self, arguments); + }); + + self._patchFunctionToString(); + + if (self._globalOptions.instrument && self._globalOptions.instrument.tryCatch) { + self._instrumentTryCatch(); + } + + if (self._globalOptions.autoBreadcrumbs) self._instrumentBreadcrumbs(); // Install all of the plugins + + self._drainPlugins(); + + self._isRavenInstalled = true; + } + + Error.stackTraceLimit = self._globalOptions.stackTraceLimit; + return this; + }, + + /* + * Set the DSN (can be called multiple time unlike config) + * + * @param {string} dsn The public Sentry DSN + */ + setDSN: function setDSN(dsn) { + var self = this, + uri = self._parseDSN(dsn), + lastSlash = uri.path.lastIndexOf('/'), + path = uri.path.substr(1, lastSlash); + + self._dsn = dsn; + self._globalKey = uri.user; + self._globalSecret = uri.pass && uri.pass.substr(1); + self._globalProject = uri.path.substr(lastSlash + 1); + self._globalServer = self._getGlobalServer(uri); + self._globalEndpoint = self._globalServer + '/' + path + 'api/' + self._globalProject + '/store/'; // Reset backoff state since we may be pointing at a + // new project/server + + this._resetBackoff(); + }, + + /* + * Wrap code within a context so Raven can capture errors + * reliably across domains that is executed immediately. + * + * @param {object} options A specific set of options for this context [optional] + * @param {function} func The callback to be immediately executed within the context + * @param {array} args An array of arguments to be called with the callback [optional] + */ + context: function context(options, func, args) { + if (isFunction(options)) { + args = func || []; + func = options; + options = undefined; + } + + return this.wrap(options, func).apply(this, args); + }, + + /* + * Wrap code within a context and returns back a new function to be executed + * + * @param {object} options A specific set of options for this context [optional] + * @param {function} func The function to be wrapped in a new context + * @param {function} func A function to call before the try/catch wrapper [optional, private] + * @return {function} The newly wrapped functions with a context + */ + wrap: function wrap(options, func, _before) { + var self = this; // 1 argument has been passed, and it's not a function + // so just return it + + if (isUndefined(func) && !isFunction(options)) { + return options; + } // options is optional + + + if (isFunction(options)) { + func = options; + options = undefined; + } // At this point, we've passed along 2 arguments, and the second one + // is not a function either, so we'll just return the second argument. + + + if (!isFunction(func)) { + return func; + } // We don't wanna wrap it twice! + + + try { + if (func.__raven__) { + return func; + } // If this has already been wrapped in the past, return that + + + if (func.__raven_wrapper__) { + return func.__raven_wrapper__; + } + } catch (e) { + // Just accessing custom props in some Selenium environments + // can cause a "Permission denied" exception (see raven-js#495). + // Bail on wrapping and return the function as-is (defers to window.onerror). + return func; + } + + function wrapped() { + var args = [], + i = arguments.length, + deep = !options || options && options.deep !== false; + + if (_before && isFunction(_before)) { + _before.apply(this, arguments); + } // Recursively wrap all of a function's arguments that are + // functions themselves. + + + while (i--) { + args[i] = deep ? self.wrap(options, arguments[i]) : arguments[i]; + } + + try { + // Attempt to invoke user-land function + // NOTE: If you are a Sentry user, and you are seeing this stack frame, it + // means Raven caught an error invoking your application code. This is + // expected behavior and NOT indicative of a bug with Raven.js. + return func.apply(this, args); + } catch (e) { + self._ignoreNextOnError(); + + self.captureException(e, options); + throw e; + } + } // copy over properties of the old function + + + for (var property in func) { + if (hasKey(func, property)) { + wrapped[property] = func[property]; + } + } + + wrapped.prototype = func.prototype; + func.__raven_wrapper__ = wrapped; // Signal that this function has been wrapped/filled already + // for both debugging and to prevent it to being wrapped/filled twice + + wrapped.__raven__ = true; + wrapped.__orig__ = func; + return wrapped; + }, + + /* + * Uninstalls the global error handler. + * + * @return {Raven} + */ + uninstall: function uninstall() { + tracekit.report.uninstall(); + + this._unpatchFunctionToString(); + + this._restoreBuiltIns(); + + this._restoreConsole(); + + Error.stackTraceLimit = this._originalErrorStackTraceLimit; + this._isRavenInstalled = false; + return this; + }, + + /* + * Manually capture an exception and send it over to Sentry + * + * @param {error} ex An exception to be logged + * @param {object} options A specific set of options for this error [optional] + * @return {Raven} + */ + captureException: function captureException(ex, options) { + options = objectMerge({ + trimHeadFrames: 0 + }, options ? options : {}); // Cases for sending ex as a message, rather than an exception + + var isNotError = !isError(ex); + var isNotErrorEvent = !isErrorEvent(ex); + var isErrorEventWithoutError = isErrorEvent(ex) && !ex.error; + + if (isNotError && isNotErrorEvent || isErrorEventWithoutError) { + return this.captureMessage(ex, objectMerge(options, { + stacktrace: true, + // if we fall back to captureMessage, default to attempting a new trace + trimHeadFrames: options.trimHeadFrames + 1 + })); + } // Get actual Error from ErrorEvent + + + if (isErrorEvent(ex)) ex = ex.error; // Store the raw exception object for potential debugging and introspection + + this._lastCapturedException = ex; // TraceKit.report will re-raise any exception passed to it, + // which means you have to wrap it in try/catch. Instead, we + // can wrap it here and only re-raise if TraceKit.report + // raises an exception different from the one we asked to + // report on. + + try { + var stack = tracekit.computeStackTrace(ex); + + this._handleStackInfo(stack, options); + } catch (ex1) { + if (ex !== ex1) { + throw ex1; + } + } + + return this; + }, + + /* + * Manually send a message to Sentry + * + * @param {string} msg A plain message to be captured in Sentry + * @param {object} options A specific set of options for this message [optional] + * @return {Raven} + */ + captureMessage: function captureMessage(msg, options) { + // config() automagically converts ignoreErrors from a list to a RegExp so we need to test for an + // early call; we'll error on the side of logging anything called before configuration since it's + // probably something you should see: + if (!!this._globalOptions.ignoreErrors.test && this._globalOptions.ignoreErrors.test(msg)) { + return; + } + + options = options || {}; + var data = objectMerge({ + message: msg + '' // Make sure it's actually a string + + }, options); + var ex; // Generate a "synthetic" stack trace from this point. + // NOTE: If you are a Sentry user, and you are seeing this stack frame, it is NOT indicative + // of a bug with Raven.js. Sentry generates synthetic traces either by configuration, + // or if it catches a thrown object without a "stack" property. + + try { + throw new Error(msg); + } catch (ex1) { + ex = ex1; + } // null exception name so `Error` isn't prefixed to msg + + + ex.name = null; + var stack = tracekit.computeStackTrace(ex); // stack[0] is `throw new Error(msg)` call itself, we are interested in the frame that was just before that, stack[1] + + var initialCall = isArray(stack.stack) && stack.stack[1]; + var fileurl = initialCall && initialCall.url || ''; + + if (!!this._globalOptions.ignoreUrls.test && this._globalOptions.ignoreUrls.test(fileurl)) { + return; + } + + if (!!this._globalOptions.whitelistUrls.test && !this._globalOptions.whitelistUrls.test(fileurl)) { + return; + } + + if (this._globalOptions.stacktrace || options && options.stacktrace) { + options = objectMerge({ + // fingerprint on msg, not stack trace (legacy behavior, could be + // revisited) + fingerprint: msg, + // since we know this is a synthetic trace, the top N-most frames + // MUST be from Raven.js, so mark them as in_app later by setting + // trimHeadFrames + trimHeadFrames: (options.trimHeadFrames || 0) + 1 + }, options); + + var frames = this._prepareFrames(stack, options); + + data.stacktrace = { + // Sentry expects frames oldest to newest + frames: frames.reverse() + }; + } // Fire away! + + + this._send(data); + + return this; + }, + captureBreadcrumb: function captureBreadcrumb(obj) { + var crumb = objectMerge({ + timestamp: now() / 1000 + }, obj); + + if (isFunction(this._globalOptions.breadcrumbCallback)) { + var result = this._globalOptions.breadcrumbCallback(crumb); + + if (isObject(result) && !isEmptyObject(result)) { + crumb = result; + } else if (result === false) { + return this; + } + } + + this._breadcrumbs.push(crumb); + + if (this._breadcrumbs.length > this._globalOptions.maxBreadcrumbs) { + this._breadcrumbs.shift(); + } + + return this; + }, + addPlugin: function addPlugin(plugin + /*arg1, arg2, ... argN*/ + ) { + var pluginArgs = [].slice.call(arguments, 1); + + this._plugins.push([plugin, pluginArgs]); + + if (this._isRavenInstalled) { + this._drainPlugins(); + } + + return this; + }, + + /* + * Set/clear a user to be sent along with the payload. + * + * @param {object} user An object representing user data [optional] + * @return {Raven} + */ + setUserContext: function setUserContext(user) { + // Intentionally do not merge here since that's an unexpected behavior. + this._globalContext.user = user; + return this; + }, + + /* + * Merge extra attributes to be sent along with the payload. + * + * @param {object} extra An object representing extra data [optional] + * @return {Raven} + */ + setExtraContext: function setExtraContext(extra) { + this._mergeContext('extra', extra); + + return this; + }, + + /* + * Merge tags to be sent along with the payload. + * + * @param {object} tags An object representing tags [optional] + * @return {Raven} + */ + setTagsContext: function setTagsContext(tags) { + this._mergeContext('tags', tags); + + return this; + }, + + /* + * Clear all of the context. + * + * @return {Raven} + */ + clearContext: function clearContext() { + this._globalContext = {}; + return this; + }, + + /* + * Get a copy of the current context. This cannot be mutated. + * + * @return {object} copy of context + */ + getContext: function getContext() { + // lol javascript + return JSON.parse(stringify_1(this._globalContext)); + }, + + /* + * Set environment of application + * + * @param {string} environment Typically something like 'production'. + * @return {Raven} + */ + setEnvironment: function setEnvironment(environment) { + this._globalOptions.environment = environment; + return this; + }, + + /* + * Set release version of application + * + * @param {string} release Typically something like a git SHA to identify version + * @return {Raven} + */ + setRelease: function setRelease(release) { + this._globalOptions.release = release; + return this; + }, + + /* + * Set the dataCallback option + * + * @param {function} callback The callback to run which allows the + * data blob to be mutated before sending + * @return {Raven} + */ + setDataCallback: function setDataCallback(callback) { + var original = this._globalOptions.dataCallback; + this._globalOptions.dataCallback = keepOriginalCallback(original, callback); + return this; + }, + + /* + * Set the breadcrumbCallback option + * + * @param {function} callback The callback to run which allows filtering + * or mutating breadcrumbs + * @return {Raven} + */ + setBreadcrumbCallback: function setBreadcrumbCallback(callback) { + var original = this._globalOptions.breadcrumbCallback; + this._globalOptions.breadcrumbCallback = keepOriginalCallback(original, callback); + return this; + }, + + /* + * Set the shouldSendCallback option + * + * @param {function} callback The callback to run which allows + * introspecting the blob before sending + * @return {Raven} + */ + setShouldSendCallback: function setShouldSendCallback(callback) { + var original = this._globalOptions.shouldSendCallback; + this._globalOptions.shouldSendCallback = keepOriginalCallback(original, callback); + return this; + }, + + /** + * Override the default HTTP transport mechanism that transmits data + * to the Sentry server. + * + * @param {function} transport Function invoked instead of the default + * `makeRequest` handler. + * + * @return {Raven} + */ + setTransport: function setTransport(transport) { + this._globalOptions.transport = transport; + return this; + }, + + /* + * Get the latest raw exception that was captured by Raven. + * + * @return {error} + */ + lastException: function lastException() { + return this._lastCapturedException; + }, + + /* + * Get the last event id + * + * @return {string} + */ + lastEventId: function lastEventId() { + return this._lastEventId; + }, + + /* + * Determine if Raven is setup and ready to go. + * + * @return {boolean} + */ + isSetup: function isSetup() { + if (!this._hasJSON) return false; // needs JSON support + + if (!this._globalServer) { + if (!this.ravenNotConfiguredError) { + this.ravenNotConfiguredError = true; + + this._logDebug('error', 'Error: Raven has not been configured.'); + } + + return false; + } + + return true; + }, + afterLoad: function afterLoad() { + // TODO: remove window dependence? + // Attempt to initialize Raven on load + var RavenConfig = _window$1.RavenConfig; + + if (RavenConfig) { + this.config(RavenConfig.dsn, RavenConfig.config).install(); + } + }, + showReportDialog: function showReportDialog(options) { + if (!_document // doesn't work without a document (React native) + ) return; + options = options || {}; + var lastEventId = options.eventId || this.lastEventId(); + + if (!lastEventId) { + throw new configError('Missing eventId'); + } + + var dsn = options.dsn || this._dsn; + + if (!dsn) { + throw new configError('Missing DSN'); + } + + var encode = encodeURIComponent; + var qs = ''; + qs += '?eventId=' + encode(lastEventId); + qs += '&dsn=' + encode(dsn); + var user = options.user || this._globalContext.user; + + if (user) { + if (user.name) qs += '&name=' + encode(user.name); + if (user.email) qs += '&email=' + encode(user.email); + } + + var globalServer = this._getGlobalServer(this._parseDSN(dsn)); + + var script = _document.createElement('script'); + + script.async = true; + script.src = globalServer + '/api/embed/error-page/' + qs; + + (_document.head || _document.body).appendChild(script); + }, + + /**** Private functions ****/ + _ignoreNextOnError: function _ignoreNextOnError() { + var self = this; + this._ignoreOnError += 1; + setTimeout(function () { + // onerror should trigger before setTimeout + self._ignoreOnError -= 1; + }); + }, + _triggerEvent: function _triggerEvent(eventType, options) { + // NOTE: `event` is a native browser thing, so let's avoid conflicting wiht it + var evt, key; + if (!this._hasDocument) return; + options = options || {}; + eventType = 'raven' + eventType.substr(0, 1).toUpperCase() + eventType.substr(1); + + if (_document.createEvent) { + evt = _document.createEvent('HTMLEvents'); + evt.initEvent(eventType, true, true); + } else { + evt = _document.createEventObject(); + evt.eventType = eventType; + } + + for (key in options) { + if (hasKey(options, key)) { + evt[key] = options[key]; + } + } + + if (_document.createEvent) { + // IE9 if standards + _document.dispatchEvent(evt); + } else { + // IE8 regardless of Quirks or Standards + // IE9 if quirks + try { + _document.fireEvent('on' + evt.eventType.toLowerCase(), evt); + } catch (e) {// Do nothing + } + } + }, + + /** + * Wraps addEventListener to capture UI breadcrumbs + * @param evtName the event name (e.g. "click") + * @returns {Function} + * @private + */ + _breadcrumbEventHandler: function _breadcrumbEventHandler(evtName) { + var self = this; + return function (evt) { + // reset keypress timeout; e.g. triggering a 'click' after + // a 'keypress' will reset the keypress debounce so that a new + // set of keypresses can be recorded + self._keypressTimeout = null; // It's possible this handler might trigger multiple times for the same + // event (e.g. event propagation through node ancestors). Ignore if we've + // already captured the event. + + if (self._lastCapturedEvent === evt) return; + self._lastCapturedEvent = evt; // try/catch both: + // - accessing evt.target (see getsentry/raven-js#838, #768) + // - `htmlTreeAsString` because it's complex, and just accessing the DOM incorrectly + // can throw an exception in some circumstances. + + var target; + + try { + target = htmlTreeAsString(evt.target); + } catch (e) { + target = ''; + } + + self.captureBreadcrumb({ + category: 'ui.' + evtName, + // e.g. ui.click, ui.input + message: target + }); + }; + }, + + /** + * Wraps addEventListener to capture keypress UI events + * @returns {Function} + * @private + */ + _keypressEventHandler: function _keypressEventHandler() { + var self = this, + debounceDuration = 1000; // milliseconds + // TODO: if somehow user switches keypress target before + // debounce timeout is triggered, we will only capture + // a single breadcrumb from the FIRST target (acceptable?) + + return function (evt) { + var target; + + try { + target = evt.target; + } catch (e) { + // just accessing event properties can throw an exception in some rare circumstances + // see: https://github.com/getsentry/raven-js/issues/838 + return; + } + + var tagName = target && target.tagName; // only consider keypress events on actual input elements + // this will disregard keypresses targeting body (e.g. tabbing + // through elements, hotkeys, etc) + + if (!tagName || tagName !== 'INPUT' && tagName !== 'TEXTAREA' && !target.isContentEditable) return; // record first keypress in a series, but ignore subsequent + // keypresses until debounce clears + + var timeout = self._keypressTimeout; + + if (!timeout) { + self._breadcrumbEventHandler('input')(evt); + } + + clearTimeout(timeout); + self._keypressTimeout = setTimeout(function () { + self._keypressTimeout = null; + }, debounceDuration); + }; + }, + + /** + * Captures a breadcrumb of type "navigation", normalizing input URLs + * @param to the originating URL + * @param from the target URL + * @private + */ + _captureUrlChange: function _captureUrlChange(from, to) { + var parsedLoc = parseUrl(this._location.href); + var parsedTo = parseUrl(to); + var parsedFrom = parseUrl(from); // because onpopstate only tells you the "new" (to) value of location.href, and + // not the previous (from) value, we need to track the value of the current URL + // state ourselves + + this._lastHref = to; // Use only the path component of the URL if the URL matches the current + // document (almost all the time when using pushState) + + if (parsedLoc.protocol === parsedTo.protocol && parsedLoc.host === parsedTo.host) to = parsedTo.relative; + if (parsedLoc.protocol === parsedFrom.protocol && parsedLoc.host === parsedFrom.host) from = parsedFrom.relative; + this.captureBreadcrumb({ + category: 'navigation', + data: { + to: to, + from: from + } + }); + }, + _patchFunctionToString: function _patchFunctionToString() { + var self = this; + self._originalFunctionToString = Function.prototype.toString; // eslint-disable-next-line no-extend-native + + Function.prototype.toString = function () { + if (typeof this === 'function' && this.__raven__) { + return self._originalFunctionToString.apply(this.__orig__, arguments); + } + + return self._originalFunctionToString.apply(this, arguments); + }; + }, + _unpatchFunctionToString: function _unpatchFunctionToString() { + if (this._originalFunctionToString) { + // eslint-disable-next-line no-extend-native + Function.prototype.toString = this._originalFunctionToString; + } + }, + + /** + * Wrap timer functions and event targets to catch errors and provide + * better metadata. + */ + _instrumentTryCatch: function _instrumentTryCatch() { + var self = this; + var wrappedBuiltIns = self._wrappedBuiltIns; + + function wrapTimeFn(orig) { + return function (fn, t) { + // preserve arity + // Make a copy of the arguments to prevent deoptimization + // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments + var args = new Array(arguments.length); + + for (var i = 0; i < args.length; ++i) { + args[i] = arguments[i]; + } + + var originalCallback = args[0]; + + if (isFunction(originalCallback)) { + args[0] = self.wrap(originalCallback); + } // IE < 9 doesn't support .call/.apply on setInterval/setTimeout, but it + // also supports only two arguments and doesn't care what this is, so we + // can just call the original function directly. + + + if (orig.apply) { + return orig.apply(this, args); + } else { + return orig(args[0], args[1]); + } + }; + } + + var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; + + function wrapEventTarget(global) { + var proto = _window$1[global] && _window$1[global].prototype; + + if (proto && proto.hasOwnProperty && proto.hasOwnProperty('addEventListener')) { + fill(proto, 'addEventListener', function (orig) { + return function (evtName, fn, capture, secure) { + // preserve arity + try { + if (fn && fn.handleEvent) { + fn.handleEvent = self.wrap(fn.handleEvent); + } + } catch (err) {} // can sometimes get 'Permission denied to access property "handle Event' + // More breadcrumb DOM capture ... done here and not in `_instrumentBreadcrumbs` + // so that we don't have more than one wrapper function + + + var before, clickHandler, keypressHandler; + + if (autoBreadcrumbs && autoBreadcrumbs.dom && (global === 'EventTarget' || global === 'Node')) { + // NOTE: generating multiple handlers per addEventListener invocation, should + // revisit and verify we can just use one (almost certainly) + clickHandler = self._breadcrumbEventHandler('click'); + keypressHandler = self._keypressEventHandler(); + + before = function before(evt) { + // need to intercept every DOM event in `before` argument, in case that + // same wrapped method is re-used for different events (e.g. mousemove THEN click) + // see #724 + if (!evt) return; + var eventType; + + try { + eventType = evt.type; + } catch (e) { + // just accessing event properties can throw an exception in some rare circumstances + // see: https://github.com/getsentry/raven-js/issues/838 + return; + } + + if (eventType === 'click') return clickHandler(evt);else if (eventType === 'keypress') return keypressHandler(evt); + }; + } + + return orig.call(this, evtName, self.wrap(fn, undefined, before), capture, secure); + }; + }, wrappedBuiltIns); + fill(proto, 'removeEventListener', function (orig) { + return function (evt, fn, capture, secure) { + try { + fn = fn && (fn.__raven_wrapper__ ? fn.__raven_wrapper__ : fn); + } catch (e) {// ignore, accessing __raven_wrapper__ will throw in some Selenium environments + } + + return orig.call(this, evt, fn, capture, secure); + }; + }, wrappedBuiltIns); + } + } + + fill(_window$1, 'setTimeout', wrapTimeFn, wrappedBuiltIns); + fill(_window$1, 'setInterval', wrapTimeFn, wrappedBuiltIns); + + if (_window$1.requestAnimationFrame) { + fill(_window$1, 'requestAnimationFrame', function (orig) { + return function (cb) { + return orig(self.wrap(cb)); + }; + }, wrappedBuiltIns); + } // event targets borrowed from bugsnag-js: + // https://github.com/bugsnag/bugsnag-js/blob/master/src/bugsnag.js#L666 + + + var eventTargets = ['EventTarget', 'Window', 'Node', 'ApplicationCache', 'AudioTrackList', 'ChannelMergerNode', 'CryptoOperation', 'EventSource', 'FileReader', 'HTMLUnknownElement', 'IDBDatabase', 'IDBRequest', 'IDBTransaction', 'KeyOperation', 'MediaController', 'MessagePort', 'ModalWindow', 'Notification', 'SVGElementInstance', 'Screen', 'TextTrack', 'TextTrackCue', 'TextTrackList', 'WebSocket', 'WebSocketWorker', 'Worker', 'XMLHttpRequest', 'XMLHttpRequestEventTarget', 'XMLHttpRequestUpload']; + + for (var i = 0; i < eventTargets.length; i++) { + wrapEventTarget(eventTargets[i]); + } + }, + + /** + * Instrument browser built-ins w/ breadcrumb capturing + * - XMLHttpRequests + * - DOM interactions (click/typing) + * - window.location changes + * - console + * + * Can be disabled or individually configured via the `autoBreadcrumbs` config option + */ + _instrumentBreadcrumbs: function _instrumentBreadcrumbs() { + var self = this; + var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; + var wrappedBuiltIns = self._wrappedBuiltIns; + + function wrapProp(prop, xhr) { + if (prop in xhr && isFunction(xhr[prop])) { + fill(xhr, prop, function (orig) { + return self.wrap(orig); + }); // intentionally don't track filled methods on XHR instances + } + } + + if (autoBreadcrumbs.xhr && 'XMLHttpRequest' in _window$1) { + var xhrproto = XMLHttpRequest.prototype; + fill(xhrproto, 'open', function (origOpen) { + return function (method, url) { + // preserve arity + // if Sentry key appears in URL, don't capture + if (isString(url) && url.indexOf(self._globalKey) === -1) { + this.__raven_xhr = { + method: method, + url: url, + status_code: null + }; + } + + return origOpen.apply(this, arguments); + }; + }, wrappedBuiltIns); + fill(xhrproto, 'send', function (origSend) { + return function () { + // preserve arity + var xhr = this; + + function onreadystatechangeHandler() { + if (xhr.__raven_xhr && xhr.readyState === 4) { + try { + // touching statusCode in some platforms throws + // an exception + xhr.__raven_xhr.status_code = xhr.status; + } catch (e) { + /* do nothing */ + } + + self.captureBreadcrumb({ + type: 'http', + category: 'xhr', + data: xhr.__raven_xhr + }); + } + } + + var props = ['onload', 'onerror', 'onprogress']; + + for (var j = 0; j < props.length; j++) { + wrapProp(props[j], xhr); + } + + if ('onreadystatechange' in xhr && isFunction(xhr.onreadystatechange)) { + fill(xhr, 'onreadystatechange', function (orig) { + return self.wrap(orig, undefined, onreadystatechangeHandler); + } + /* intentionally don't track this instrumentation */ + ); + } else { + // if onreadystatechange wasn't actually set by the page on this xhr, we + // are free to set our own and capture the breadcrumb + xhr.onreadystatechange = onreadystatechangeHandler; + } + + return origSend.apply(this, arguments); + }; + }, wrappedBuiltIns); + } + + if (autoBreadcrumbs.xhr && supportsFetch()) { + fill(_window$1, 'fetch', function (origFetch) { + return function () { + // preserve arity + // Make a copy of the arguments to prevent deoptimization + // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments + var args = new Array(arguments.length); + + for (var i = 0; i < args.length; ++i) { + args[i] = arguments[i]; + } + + var fetchInput = args[0]; + var method = 'GET'; + var url; + + if (typeof fetchInput === 'string') { + url = fetchInput; + } else if ('Request' in _window$1 && fetchInput instanceof _window$1.Request) { + url = fetchInput.url; + + if (fetchInput.method) { + method = fetchInput.method; + } + } else { + url = '' + fetchInput; + } // if Sentry key appears in URL, don't capture, as it's our own request + + + if (url.indexOf(self._globalKey) !== -1) { + return origFetch.apply(this, args); + } + + if (args[1] && args[1].method) { + method = args[1].method; + } + + var fetchData = { + method: method, + url: url, + status_code: null + }; + return origFetch.apply(this, args).then(function (response) { + fetchData.status_code = response.status; + self.captureBreadcrumb({ + type: 'http', + category: 'fetch', + data: fetchData + }); + return response; + }); + }; + }, wrappedBuiltIns); + } // Capture breadcrumbs from any click that is unhandled / bubbled up all the way + // to the document. Do this before we instrument addEventListener. + + + if (autoBreadcrumbs.dom && this._hasDocument) { + if (_document.addEventListener) { + _document.addEventListener('click', self._breadcrumbEventHandler('click'), false); + + _document.addEventListener('keypress', self._keypressEventHandler(), false); + } else { + // IE8 Compatibility + _document.attachEvent('onclick', self._breadcrumbEventHandler('click')); + + _document.attachEvent('onkeypress', self._keypressEventHandler()); + } + } // record navigation (URL) changes + // NOTE: in Chrome App environment, touching history.pushState, *even inside + // a try/catch block*, will cause Chrome to output an error to console.error + // borrowed from: https://github.com/angular/angular.js/pull/13945/files + + + var chrome = _window$1.chrome; + var isChromePackagedApp = chrome && chrome.app && chrome.app.runtime; + var hasPushAndReplaceState = !isChromePackagedApp && _window$1.history && history.pushState && history.replaceState; + + if (autoBreadcrumbs.location && hasPushAndReplaceState) { + // TODO: remove onpopstate handler on uninstall() + var oldOnPopState = _window$1.onpopstate; + + _window$1.onpopstate = function () { + var currentHref = self._location.href; + + self._captureUrlChange(self._lastHref, currentHref); + + if (oldOnPopState) { + return oldOnPopState.apply(this, arguments); + } + }; + + var historyReplacementFunction = function historyReplacementFunction(origHistFunction) { + // note history.pushState.length is 0; intentionally not declaring + // params to preserve 0 arity + return function () + /* state, title, url */ + { + var url = arguments.length > 2 ? arguments[2] : undefined; // url argument is optional + + if (url) { + // coerce to string (this is what pushState does) + self._captureUrlChange(self._lastHref, url + ''); + } + + return origHistFunction.apply(this, arguments); + }; + }; + + fill(history, 'pushState', historyReplacementFunction, wrappedBuiltIns); + fill(history, 'replaceState', historyReplacementFunction, wrappedBuiltIns); + } + + if (autoBreadcrumbs.console && 'console' in _window$1 && console.log) { + // console + var consoleMethodCallback = function consoleMethodCallback(msg, data) { + self.captureBreadcrumb({ + message: msg, + level: data.level, + category: 'console' + }); + }; + + each(['debug', 'info', 'warn', 'error', 'log'], function (_, level) { + wrapConsoleMethod(console, level, consoleMethodCallback); + }); + } + }, + _restoreBuiltIns: function _restoreBuiltIns() { + // restore any wrapped builtins + var builtin; + + while (this._wrappedBuiltIns.length) { + builtin = this._wrappedBuiltIns.shift(); + var obj = builtin[0], + name = builtin[1], + orig = builtin[2]; + obj[name] = orig; + } + }, + _restoreConsole: function _restoreConsole() { + // eslint-disable-next-line guard-for-in + for (var method in this._originalConsoleMethods) { + this._originalConsole[method] = this._originalConsoleMethods[method]; + } + }, + _drainPlugins: function _drainPlugins() { + var self = this; // FIX ME TODO + + each(this._plugins, function (_, plugin) { + var installer = plugin[0]; + var args = plugin[1]; + installer.apply(self, [self].concat(args)); + }); + }, + _parseDSN: function _parseDSN(str) { + var m = dsnPattern.exec(str), + dsn = {}, + i = 7; + + try { + while (i--) { + dsn[dsnKeys[i]] = m[i] || ''; + } + } catch (e) { + throw new configError('Invalid DSN: ' + str); + } + + if (dsn.pass && !this._globalOptions.allowSecretKey) { + throw new configError('Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key'); + } + + return dsn; + }, + _getGlobalServer: function _getGlobalServer(uri) { + // assemble the endpoint from the uri pieces + var globalServer = '//' + uri.host + (uri.port ? ':' + uri.port : ''); + + if (uri.protocol) { + globalServer = uri.protocol + ':' + globalServer; + } + + return globalServer; + }, + _handleOnErrorStackInfo: function _handleOnErrorStackInfo() { + // if we are intentionally ignoring errors via onerror, bail out + if (!this._ignoreOnError) { + this._handleStackInfo.apply(this, arguments); + } + }, + _handleStackInfo: function _handleStackInfo(stackInfo, options) { + var frames = this._prepareFrames(stackInfo, options); + + this._triggerEvent('handle', { + stackInfo: stackInfo, + options: options + }); + + this._processException(stackInfo.name, stackInfo.message, stackInfo.url, stackInfo.lineno, frames, options); + }, + _prepareFrames: function _prepareFrames(stackInfo, options) { + var self = this; + var frames = []; + + if (stackInfo.stack && stackInfo.stack.length) { + each(stackInfo.stack, function (i, stack) { + var frame = self._normalizeFrame(stack, stackInfo.url); + + if (frame) { + frames.push(frame); + } + }); // e.g. frames captured via captureMessage throw + + if (options && options.trimHeadFrames) { + for (var j = 0; j < options.trimHeadFrames && j < frames.length; j++) { + frames[j].in_app = false; + } + } + } + + frames = frames.slice(0, this._globalOptions.stackTraceLimit); + return frames; + }, + _normalizeFrame: function _normalizeFrame(frame, stackInfoUrl) { + // normalize the frames data + var normalized = { + filename: frame.url, + lineno: frame.line, + colno: frame.column, + function: frame.func || '?' + }; // Case when we don't have any information about the error + // E.g. throwing a string or raw object, instead of an `Error` in Firefox + // Generating synthetic error doesn't add any value here + // + // We should probably somehow let a user know that they should fix their code + + if (!frame.url) { + normalized.filename = stackInfoUrl; // fallback to whole stacks url from onerror handler + } + + normalized.in_app = !( // determine if an exception came from outside of our app + // first we check the global includePaths list. + !!this._globalOptions.includePaths.test && !this._globalOptions.includePaths.test(normalized.filename) || // Now we check for fun, if the function name is Raven or TraceKit + /(Raven|TraceKit)\./.test(normalized['function']) || // finally, we do a last ditch effort and check for raven.min.js + /raven\.(min\.)?js$/.test(normalized.filename)); + return normalized; + }, + _processException: function _processException(type, message, fileurl, lineno, frames, options) { + var prefixedMessage = (type ? type + ': ' : '') + (message || ''); + + if (!!this._globalOptions.ignoreErrors.test && (this._globalOptions.ignoreErrors.test(message) || this._globalOptions.ignoreErrors.test(prefixedMessage))) { + return; + } + + var stacktrace; + + if (frames && frames.length) { + fileurl = frames[0].filename || fileurl; // Sentry expects frames oldest to newest + // and JS sends them as newest to oldest + + frames.reverse(); + stacktrace = { + frames: frames + }; + } else if (fileurl) { + stacktrace = { + frames: [{ + filename: fileurl, + lineno: lineno, + in_app: true + }] + }; + } + + if (!!this._globalOptions.ignoreUrls.test && this._globalOptions.ignoreUrls.test(fileurl)) { + return; + } + + if (!!this._globalOptions.whitelistUrls.test && !this._globalOptions.whitelistUrls.test(fileurl)) { + return; + } + + var data = objectMerge({ + // sentry.interfaces.Exception + exception: { + values: [{ + type: type, + value: message, + stacktrace: stacktrace + }] + }, + culprit: fileurl + }, options); // Fire away! + + this._send(data); + }, + _trimPacket: function _trimPacket(data) { + // For now, we only want to truncate the two different messages + // but this could/should be expanded to just trim everything + var max = this._globalOptions.maxMessageLength; + + if (data.message) { + data.message = truncate(data.message, max); + } + + if (data.exception) { + var exception = data.exception.values[0]; + exception.value = truncate(exception.value, max); + } + + var request = data.request; + + if (request) { + if (request.url) { + request.url = truncate(request.url, this._globalOptions.maxUrlLength); + } + + if (request.Referer) { + request.Referer = truncate(request.Referer, this._globalOptions.maxUrlLength); + } + } + + if (data.breadcrumbs && data.breadcrumbs.values) this._trimBreadcrumbs(data.breadcrumbs); + return data; + }, + + /** + * Truncate breadcrumb values (right now just URLs) + */ + _trimBreadcrumbs: function _trimBreadcrumbs(breadcrumbs) { + // known breadcrumb properties with urls + // TODO: also consider arbitrary prop values that start with (https?)?:// + var urlProps = ['to', 'from', 'url'], + urlProp, + crumb, + data; + + for (var i = 0; i < breadcrumbs.values.length; ++i) { + crumb = breadcrumbs.values[i]; + if (!crumb.hasOwnProperty('data') || !isObject(crumb.data) || objectFrozen(crumb.data)) continue; + data = objectMerge({}, crumb.data); + + for (var j = 0; j < urlProps.length; ++j) { + urlProp = urlProps[j]; + + if (data.hasOwnProperty(urlProp) && data[urlProp]) { + data[urlProp] = truncate(data[urlProp], this._globalOptions.maxUrlLength); + } + } + + breadcrumbs.values[i].data = data; + } + }, + _getHttpData: function _getHttpData() { + if (!this._hasNavigator && !this._hasDocument) return; + var httpData = {}; + + if (this._hasNavigator && _navigator.userAgent) { + httpData.headers = { + 'User-Agent': navigator.userAgent + }; + } // Check in `window` instead of `document`, as we may be in ServiceWorker environment + + + if (_window$1.location && _window$1.location.href) { + httpData.url = _window$1.location.href; + } + + if (this._hasDocument && _document.referrer) { + if (!httpData.headers) httpData.headers = {}; + httpData.headers.Referer = _document.referrer; + } + + return httpData; + }, + _resetBackoff: function _resetBackoff() { + this._backoffDuration = 0; + this._backoffStart = null; + }, + _shouldBackoff: function _shouldBackoff() { + return this._backoffDuration && now() - this._backoffStart < this._backoffDuration; + }, + + /** + * Returns true if the in-process data payload matches the signature + * of the previously-sent data + * + * NOTE: This has to be done at this level because TraceKit can generate + * data from window.onerror WITHOUT an exception object (IE8, IE9, + * other old browsers). This can take the form of an "exception" + * data object with a single frame (derived from the onerror args). + */ + _isRepeatData: function _isRepeatData(current) { + var last = this._lastData; + if (!last || current.message !== last.message || // defined for captureMessage + current.culprit !== last.culprit // defined for captureException/onerror + ) return false; // Stacktrace interface (i.e. from captureMessage) + + if (current.stacktrace || last.stacktrace) { + return isSameStacktrace(current.stacktrace, last.stacktrace); + } else if (current.exception || last.exception) { + // Exception interface (i.e. from captureException/onerror) + return isSameException(current.exception, last.exception); + } + + return true; + }, + _setBackoffState: function _setBackoffState(request) { + // If we are already in a backoff state, don't change anything + if (this._shouldBackoff()) { + return; + } + + var status = request.status; // 400 - project_id doesn't exist or some other fatal + // 401 - invalid/revoked dsn + // 429 - too many requests + + if (!(status === 400 || status === 401 || status === 429)) return; + var retry; + + try { + // If Retry-After is not in Access-Control-Expose-Headers, most + // browsers will throw an exception trying to access it + if (supportsFetch()) { + retry = request.headers.get('Retry-After'); + } else { + retry = request.getResponseHeader('Retry-After'); + } // Retry-After is returned in seconds + + + retry = parseInt(retry, 10) * 1000; + } catch (e) { + /* eslint no-empty:0 */ + } + + this._backoffDuration = retry ? // If Sentry server returned a Retry-After value, use it + retry : // Otherwise, double the last backoff duration (starts at 1 sec) + this._backoffDuration * 2 || 1000; + this._backoffStart = now(); + }, + _send: function _send(data) { + var globalOptions = this._globalOptions; + + var baseData = { + project: this._globalProject, + logger: globalOptions.logger, + platform: 'javascript' + }, + httpData = this._getHttpData(); + + if (httpData) { + baseData.request = httpData; + } // HACK: delete `trimHeadFrames` to prevent from appearing in outbound payload + + + if (data.trimHeadFrames) delete data.trimHeadFrames; + data = objectMerge(baseData, data); // Merge in the tags and extra separately since objectMerge doesn't handle a deep merge + + data.tags = objectMerge(objectMerge({}, this._globalContext.tags), data.tags); + data.extra = objectMerge(objectMerge({}, this._globalContext.extra), data.extra); // Send along our own collected metadata with extra + + data.extra['session:duration'] = now() - this._startTime; + + if (this._breadcrumbs && this._breadcrumbs.length > 0) { + // intentionally make shallow copy so that additions + // to breadcrumbs aren't accidentally sent in this request + data.breadcrumbs = { + values: [].slice.call(this._breadcrumbs, 0) + }; + } + + if (this._globalContext.user) { + // sentry.interfaces.User + data.user = this._globalContext.user; + } // Include the environment if it's defined in globalOptions + + + if (globalOptions.environment) data.environment = globalOptions.environment; // Include the release if it's defined in globalOptions + + if (globalOptions.release) data.release = globalOptions.release; // Include server_name if it's defined in globalOptions + + if (globalOptions.serverName) data.server_name = globalOptions.serverName; // Cleanup empty properties before sending them to the server + + Object.keys(data).forEach(function (key) { + if (data[key] == null || data[key] === '' || isEmptyObject(data[key])) { + delete data[key]; + } + }); + + if (isFunction(globalOptions.dataCallback)) { + data = globalOptions.dataCallback(data) || data; + } // Why?????????? + + + if (!data || isEmptyObject(data)) { + return; + } // Check if the request should be filtered or not + + + if (isFunction(globalOptions.shouldSendCallback) && !globalOptions.shouldSendCallback(data)) { + return; + } // Backoff state: Sentry server previously responded w/ an error (e.g. 429 - too many requests), + // so drop requests until "cool-off" period has elapsed. + + + if (this._shouldBackoff()) { + this._logDebug('warn', 'Raven dropped error due to backoff: ', data); + + return; + } + + if (typeof globalOptions.sampleRate === 'number') { + if (Math.random() < globalOptions.sampleRate) { + this._sendProcessedPayload(data); + } + } else { + this._sendProcessedPayload(data); + } + }, + _getUuid: function _getUuid() { + return uuid4(); + }, + _sendProcessedPayload: function _sendProcessedPayload(data, callback) { + var self = this; + var globalOptions = this._globalOptions; + if (!this.isSetup()) return; // Try and clean up the packet before sending by truncating long values + + data = this._trimPacket(data); // ideally duplicate error testing should occur *before* dataCallback/shouldSendCallback, + // but this would require copying an un-truncated copy of the data packet, which can be + // arbitrarily deep (extra_data) -- could be worthwhile? will revisit + + if (!this._globalOptions.allowDuplicates && this._isRepeatData(data)) { + this._logDebug('warn', 'Raven dropped repeat event: ', data); + + return; + } // Send along an event_id if not explicitly passed. + // This event_id can be used to reference the error within Sentry itself. + // Set lastEventId after we know the error should actually be sent + + + this._lastEventId = data.event_id || (data.event_id = this._getUuid()); // Store outbound payload after trim + + this._lastData = data; + + this._logDebug('debug', 'Raven about to send:', data); + + var auth = { + sentry_version: '7', + sentry_client: 'raven-js/' + this.VERSION, + sentry_key: this._globalKey + }; + + if (this._globalSecret) { + auth.sentry_secret = this._globalSecret; + } + + var exception = data.exception && data.exception.values[0]; // only capture 'sentry' breadcrumb is autoBreadcrumbs is truthy + + if (this._globalOptions.autoBreadcrumbs && this._globalOptions.autoBreadcrumbs.sentry) { + this.captureBreadcrumb({ + category: 'sentry', + message: exception ? (exception.type ? exception.type + ': ' : '') + exception.value : data.message, + event_id: data.event_id, + level: data.level || 'error' // presume error unless specified + + }); + } + + var url = this._globalEndpoint; + + (globalOptions.transport || this._makeRequest).call(this, { + url: url, + auth: auth, + data: data, + options: globalOptions, + onSuccess: function success() { + self._resetBackoff(); + + self._triggerEvent('success', { + data: data, + src: url + }); + + callback && callback(); + }, + onError: function failure(error) { + self._logDebug('error', 'Raven transport failed to send: ', error); + + if (error.request) { + self._setBackoffState(error.request); + } + + self._triggerEvent('failure', { + data: data, + src: url + }); + + error = error || new Error('Raven send failed (no additional details provided)'); + callback && callback(error); + } + }); + }, + _makeRequest: function _makeRequest(opts) { + // Auth is intentionally sent as part of query string (NOT as custom HTTP header) to avoid preflight CORS requests + var url = opts.url + '?' + urlencode(opts.auth); + var evaluatedHeaders = null; + var evaluatedFetchParameters = {}; + + if (opts.options.headers) { + evaluatedHeaders = this._evaluateHash(opts.options.headers); + } + + if (opts.options.fetchParameters) { + evaluatedFetchParameters = this._evaluateHash(opts.options.fetchParameters); + } + + if (supportsFetch()) { + evaluatedFetchParameters.body = stringify_1(opts.data); + var defaultFetchOptions = objectMerge({}, this._fetchDefaults); + var fetchOptions = objectMerge(defaultFetchOptions, evaluatedFetchParameters); + + if (evaluatedHeaders) { + fetchOptions.headers = evaluatedHeaders; + } + + return _window$1.fetch(url, fetchOptions).then(function (response) { + if (response.ok) { + opts.onSuccess && opts.onSuccess(); + } else { + var error = new Error('Sentry error code: ' + response.status); // It's called request only to keep compatibility with XHR interface + // and not add more redundant checks in setBackoffState method + + error.request = response; + opts.onError && opts.onError(error); + } + })['catch'](function () { + opts.onError && opts.onError(new Error('Sentry error code: network unavailable')); + }); + } + + var request = _window$1.XMLHttpRequest && new _window$1.XMLHttpRequest(); + if (!request) return; // if browser doesn't support CORS (e.g. IE7), we are out of luck + + var hasCORS = 'withCredentials' in request || typeof XDomainRequest !== 'undefined'; + if (!hasCORS) return; + + if ('withCredentials' in request) { + request.onreadystatechange = function () { + if (request.readyState !== 4) { + return; + } else if (request.status === 200) { + opts.onSuccess && opts.onSuccess(); + } else if (opts.onError) { + var err = new Error('Sentry error code: ' + request.status); + err.request = request; + opts.onError(err); + } + }; + } else { + request = new XDomainRequest(); // xdomainrequest cannot go http -> https (or vice versa), + // so always use protocol relative + + url = url.replace(/^https?:/, ''); // onreadystatechange not supported by XDomainRequest + + if (opts.onSuccess) { + request.onload = opts.onSuccess; + } + + if (opts.onError) { + request.onerror = function () { + var err = new Error('Sentry error code: XDomainRequest'); + err.request = request; + opts.onError(err); + }; + } + } + + request.open('POST', url); + + if (evaluatedHeaders) { + each(evaluatedHeaders, function (key, value) { + request.setRequestHeader(key, value); + }); + } + + request.send(stringify_1(opts.data)); + }, + _evaluateHash: function _evaluateHash(hash) { + var evaluated = {}; + + for (var key in hash) { + if (hash.hasOwnProperty(key)) { + var value = hash[key]; + evaluated[key] = typeof value === 'function' ? value() : value; + } + } + + return evaluated; + }, + _logDebug: function _logDebug(level) { + if (this._originalConsoleMethods[level] && this.debug) { + // In IE<10 console methods do not have their own 'apply' method + Function.prototype.apply.call(this._originalConsoleMethods[level], this._originalConsole, [].slice.call(arguments, 1)); + } + }, + _mergeContext: function _mergeContext(key, context) { + if (isUndefined(context)) { + delete this._globalContext[key]; + } else { + this._globalContext[key] = objectMerge(this._globalContext[key] || {}, context); + } + } +}; // Deprecations + +Raven$1.prototype.setUser = Raven$1.prototype.setUserContext; +Raven$1.prototype.setReleaseContext = Raven$1.prototype.setRelease; +var raven = Raven$1; + +/** + * Enforces a single instance of the Raven client, and the + * main entry point for Raven. If you are a consumer of the + * Raven library, you SHOULD load this file (vs raven.js). + **/ +// This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) + +var _window = typeof window !== 'undefined' ? window : typeof commonjsGlobal !== 'undefined' ? commonjsGlobal : typeof self !== 'undefined' ? self : {}; + +var _Raven = _window.Raven; +var Raven = new raven(); +/* + * Allow multiple versions of Raven to be installed. + * Strip Raven from the global context and returns the instance. + * + * @return {Raven} + */ + +Raven.noConflict = function () { + _window.Raven = _Raven; + return Raven; +}; + +Raven.afterLoad(); +var singleton = Raven; + +/** + * Angular.js plugin + * + * Provides an $exceptionHandler for Angular.js + */ + +var wrappedCallback$1 = utils.wrappedCallback; // See https://github.com/angular/angular.js/blob/v1.4.7/src/minErr.js + +var angularPattern = /^\[((?:[$a-zA-Z0-9]+:)?(?:[$a-zA-Z0-9]+))\] (.*?)\n?(\S+)$/; +var moduleName = 'ngRaven'; + +function angularPlugin(Raven, angular) { + angular = angular || window.angular; + if (!angular) return; + + function RavenProvider() { + this.$get = ['$window', function ($window) { + return Raven; + }]; + } + + function ExceptionHandlerProvider($provide) { + $provide.decorator('$exceptionHandler', ['Raven', '$delegate', exceptionHandler]); + } + + function exceptionHandler(R, $delegate) { + return function (ex, cause) { + R.captureException(ex, { + extra: { + cause: cause + } + }); + $delegate(ex, cause); + }; + } + + angular.module(moduleName, []).provider('Raven', RavenProvider).config(['$provide', ExceptionHandlerProvider]); + Raven.setDataCallback(wrappedCallback$1(function (data) { + return angularPlugin._normalizeData(data); + })); +} + +angularPlugin._normalizeData = function (data) { + // We only care about mutating an exception + var exception = data.exception; + + if (exception) { + exception = exception.values[0]; + var matches = angularPattern.exec(exception.value); + + if (matches) { + // This type now becomes something like: $rootScope:inprog + exception.type = matches[1]; + exception.value = matches[2]; + data.message = exception.type + ': ' + exception.value; // auto set a new tag specifically for the angular error url + + data.extra.angularDocs = matches[3].substr(0, 250); + } + } + + return data; +}; + +angularPlugin.moduleName = moduleName; +var angular = angularPlugin; + +/** + * console plugin + * + * Monkey patches console.* calls into Sentry messages with + * their appropriate log levels. (Experimental) + * + * Options: + * + * `levels`: An array of levels (methods on `console`) to report to Sentry. + * Defaults to debug, info, warn, and error. + */ + +var wrapConsoleMethod$1 = console$1.wrapMethod; + +function consolePlugin(Raven, console, pluginOptions) { + console = console || window.console || {}; + pluginOptions = pluginOptions || {}; + var logLevels = pluginOptions.levels || ['debug', 'info', 'warn', 'error']; + if ('assert' in console) logLevels.push('assert'); + + var callback = function callback(msg, data) { + Raven.captureMessage(msg, data); + }; + + var level = logLevels.pop(); + + while (level) { + wrapConsoleMethod$1(console, level, callback); + level = logLevels.pop(); + } +} + +var console$3 = consolePlugin; + +/*global define*/ + +/** + * require.js plugin + * + * Automatically wrap define/require callbacks. (Experimental) + */ + +function requirePlugin(Raven) { + if (typeof undefined === 'function' && undefined.amd) { + window.define = Raven.wrap({ + deep: false + }, undefined); + window.require = Raven.wrap({ + deep: false + }, commonjsRequire); + } +} + +var require_1 = requirePlugin; + +/** + * Vue.js 2.0 plugin + * + */ +function formatComponentName(vm) { + if (vm.$root === vm) { + return 'root instance'; + } + + var name = vm._isVue ? vm.$options.name || vm.$options._componentTag : vm.name; + return (name ? 'component <' + name + '>' : 'anonymous component') + (vm._isVue && vm.$options.__file ? ' at ' + vm.$options.__file : ''); +} + +function vuePlugin(Raven, Vue) { + Vue = Vue || window.Vue; // quit if Vue isn't on the page + + if (!Vue || !Vue.config) return; + var _oldOnError = Vue.config.errorHandler; + + Vue.config.errorHandler = function VueErrorHandler(error, vm, info) { + var metaData = {}; // vm and lifecycleHook are not always available + + if (Object.prototype.toString.call(vm) === '[object Object]') { + metaData.componentName = formatComponentName(vm); + metaData.propsData = vm.$options.propsData; + } + + if (typeof info !== 'undefined') { + metaData.lifecycleHook = info; + } + + Raven.captureException(error, { + extra: metaData + }); + + if (typeof _oldOnError === 'function') { + _oldOnError.call(this, error, vm, info); + } + }; +} + +var vue = vuePlugin; + +/* This file was generated by './scripts/generate-plugin-combinations.js'! */ + +singleton.addPlugin(angular).addPlugin(console$3).addPlugin(require_1).addPlugin(vue); +var angular_console_require_vue = {}; + +return angular_console_require_vue; + +}))); diff --git a/dist/angular,console,require,vue/raven.min.js b/dist/angular,console,require,vue/raven.min.js new file mode 100644 index 000000000000..a4b689065361 --- /dev/null +++ b/dist/angular,console,require,vue/raven.min.js @@ -0,0 +1,3 @@ +/*! Raven.js 3.22.2 (1b6187b) | github.com/getsentry/raven-js */ +!function(a,b){"object"==typeof exports&&"undefined"!=typeof module?module.exports=b():"function"==typeof define&&define.amd?define(b):a.Raven=b()}(this,function(){"use strict";function a(a,b){return b={exports:{}},a(b,b.exports),b.exports}function b(a){return(b="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(a){return typeof a}:function(a){return a&&"function"==typeof Symbol&&a.constructor===Symbol&&a!==Symbol.prototype?"symbol":typeof a})(a)}function c(a){return"object"===b(a)&&null!==a}function d(a){switch({}.toString.call(a)){case"[object Error]":return!0;case"[object Exception]":return!0;case"[object DOMException]":return!0;default:return a instanceof Error}}function e(a){return l()&&"[object ErrorEvent]"==={}.toString.call(a)}function f(a){return void 0===a}function g(a){return"function"==typeof a}function h(a){return"[object Object]"===Object.prototype.toString.call(a)}function i(a){return"[object String]"===Object.prototype.toString.call(a)}function j(a){return"[object Array]"===Object.prototype.toString.call(a)}function k(a){if(!h(a))return!1;for(var b in a)if(a.hasOwnProperty(b))return!1;return!0}function l(){try{return new ErrorEvent(""),!0}catch(a){return!1}}function m(){if(!("fetch"in R))return!1;try{return new Headers,new Request(""),new Response,!0}catch(a){return!1}}function n(a){function b(b,c){var d=a(b)||b;return c?c(d)||d:d}return b}function o(a,b){var c,d;if(f(a.length))for(c in a)s(a,c)&&b.call(null,c,a[c]);else if(d=a.length)for(c=0;c ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function y(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&i(b))for(c=b.split(/\s+/),f=0;f":"anonymous component")+(a._isVue&&a.$options.__file?" at "+a.$options.__file:"")}function O(a,b){if(b=b||window.Vue,b&&b.config){var c=b.config.errorHandler;b.config.errorHandler=function(b,d,e){var f={};"[object Object]"===Object.prototype.toString.call(d)&&(f.componentName=N(d),f.propsData=d.$options.propsData),"undefined"!=typeof e&&(f.lifecycleHook=e),a.captureException(b,{extra:f}),"function"==typeof c&&c.call(this,b,d,e)}}}var P="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{},Q=Object.setPrototypeOf||function(a,b){return a.C=b,a},R=("object"==typeof Reflect&&Reflect.construct||function(a,b,c){var d,e=[null];return e.push.apply(e,b),d=a.bind.apply(a,e),Q(new d,c.prototype)},"undefined"!=typeof window?window:"undefined"!=typeof P?P:"undefined"!=typeof self?self:{}),S={isObject:c,isError:d,isErrorEvent:e,isUndefined:f,isFunction:g,isPlainObject:h,isString:i,isArray:j,isEmptyObject:k,supportsErrorEvent:l,supportsFetch:m,wrappedCallback:n,each:o,objectMerge:p,truncate:r,objectFrozen:q,hasKey:s,joinRegExp:t,urlencode:u,uuid4:w,htmlTreeAsString:x,htmlElementAsString:y,isSameException:B,isSameStacktrace:C,parseUrl:v,fill:D,safeJoin:E},T={collectWindowErrors:!0,debug:!1},U="undefined"!=typeof window?window:"undefined"!=typeof P?P:"undefined"!=typeof self?self:{},V=[].slice,W="?",X=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;T.report=function(){function a(a){f(),l.push(a)}function b(a){for(var b=l.length-1;b>=0;--b)l[b]===a&&l.splice(b,1)}function c(){g(),l=[]}function d(a,b){var c=null;if(!b||T.collectWindowErrors){for(var d in l)if(l.hasOwnProperty(d))try{l[d].apply(null,[a].concat(V.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function e(a,b,c,e,f){var g=null,i=S.isErrorEvent(f)?f.error:f,k=S.isErrorEvent(a)?a.message:a;if(o)T.computeStackTrace.augmentStackTraceWithInitialElement(o,b,c,k),h();else if(i&&S.isError(i))g=T.computeStackTrace(i),d(g,!0);else{var l,m={url:b,line:c,column:e},n=void 0;if("[object String]"==={}.toString.call(k)){var l=k.match(X);l&&(n=l[1],k=l[2])}m.func=W,g={name:n,message:k,url:F(),stack:[m]},d(g,!0)}return!!j&&j.apply(this,arguments)}function f(){k||(j=U.onerror,U.onerror=e,k=!0)}function g(){k&&(U.onerror=j,k=!1,j=void 0)}function h(){var a=o,b=m;m=null,o=null,n=null,d.apply(null,[a,!1].concat(b))}function i(a,b){var c=V.call(arguments,1);if(o){if(n===a)return;h()}var d=T.computeStackTrace(a);if(o=d,n=a,m=c,setTimeout(function(){n===a&&h()},d.incomplete?2e3:0),b!==!1)throw a}var j,k,l=[],m=null,n=null,o=null;return i.subscribe=a,i.unsubscribe=b,i.uninstall=c,i}(),T.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,d,e=/^\s*at (.*?) ?\(((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,f=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|\[native).*?|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,g=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,h=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,i=/\((\S*)(?::(\d+))(?::(\d+))\)/,j=a.stack.split("\n"),k=[],l=(/^(.*) is undefined$/.exec(a.message),0),m=j.length;l eval")>-1;o&&(b=h.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==l||c[5]||"undefined"==typeof a.columnNumber||(k[0].column=a.columnNumber+1),d={url:c[3],func:c[1]||W,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}!d.func&&d.line&&(d.func=W),k.push(d)}return k.length?{name:a.name,message:a.message,url:F(),stack:k}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=W),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,e){for(var f,g,h=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,i=[],j={},k=!1,l=c.caller;l&&!k;l=l.caller)if(l!==d&&l!==T.report){if(g={url:null,func:W,line:null,column:null},l.name?g.func=l.name:(f=h.exec(l.toString()))&&(g.func=f[1]),"undefined"==typeof g.func)try{g.func=f.input.substring(0,f.input.indexOf("{"))}catch(m){}j[""+l]?k=!0:j[""+l]=!0,i.push(g)}e&&i.splice(0,e);var n={name:a.name,message:a.message,url:F(),stack:i};return b(n,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),n}function d(b,d){var e=null;d=null==d?0:+d;try{if(e=a(b))return e}catch(f){if(T.debug)throw f}try{if(e=c(b,d+1))return e}catch(f){if(T.debug)throw f}return{name:b.name,message:b.message,url:F()}}return d.augmentStackTraceWithInitialElement=b,d.computeStackTraceFromStackProp=a,d}();var Y=T,Z=a(function(a,b){function c(a,b){for(var c=0;c0){var i=c(d,this);~i?d.splice(i+1):d.push(this),~i?f.splice(i,1/0,g):f.push(g),~c(d,h)&&(h=b.call(this,g,h))}else d.push(h);return null==a?h instanceof Error?e(h):h:a.call(this,g,h)}}b=a.exports=d,b.getSerialize=f});G.prototype=new Error,G.prototype.constructor=G;var $=G,_=function(a,b,c){var d=a[b],e=a;if(b in a){var f="warn"===b?"warning":b;a[b]=function(){var a=[].slice.call(arguments),g=S.safeJoin(a," "),h={level:f,logger:"console",extra:{arguments:a}};"assert"===b?a[0]===!1&&(g="Assertion failed: "+(S.safeJoin(a.slice(1)," ")||"console.assert"),h.extra.arguments=a.slice(1),c&&c(g,h)):c&&c(g,h),d&&Function.prototype.apply.call(d,e,a)}}},aa={wrapMethod:_},ba=S.isError,ca=S.isObject,da=S.isErrorEvent,ea=S.isUndefined,fa=S.isFunction,ga=S.isString,ha=S.isArray,ia=S.isEmptyObject,ja=S.each,ka=S.objectMerge,la=S.truncate,ma=S.objectFrozen,na=S.hasKey,oa=S.joinRegExp,pa=S.urlencode,qa=S.uuid4,ra=S.htmlTreeAsString,sa=S.isSameException,ta=S.isSameStacktrace,ua=S.parseUrl,va=S.fill,wa=S.supportsFetch,xa=aa.wrapMethod,ya="source protocol user pass host port path".split(" "),za=/^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/,Aa="undefined"!=typeof window?window:"undefined"!=typeof P?P:"undefined"!=typeof self?self:{},Ba=Aa.document,Ca=Aa.navigator;J.prototype={VERSION:"3.22.2",debug:!1,TraceKit:Y,config:function(a,b){var c=this;if(c.i)return this.D("error","Error: Raven has already been configured"),c;if(!a)return c;var d=c.m;b&&ja(b,function(a,b){"tags"===a||"extra"===a||"user"===a?c.l[a]=b:d[a]=b}),c.setDSN(a),d.ignoreErrors.push(/^Script error\.?$/),d.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/),d.ignoreErrors=oa(d.ignoreErrors),d.ignoreUrls=!!d.ignoreUrls.length&&oa(d.ignoreUrls),d.whitelistUrls=!!d.whitelistUrls.length&&oa(d.whitelistUrls),d.includePaths=oa(d.includePaths),d.maxBreadcrumbs=Math.max(0,Math.min(d.maxBreadcrumbs||100,100));var e={xhr:!0,console:!0,dom:!0,location:!0,sentry:!0},f=d.autoBreadcrumbs;"[object Object]"==={}.toString.call(f)?f=ka(e,f):f!==!1&&(f=e),d.autoBreadcrumbs=f;var g={tryCatch:!0},h=d.instrument;return"[object Object]"==={}.toString.call(h)?h=ka(g,h):h!==!1&&(h=g),d.instrument=h,Y.collectWindowErrors=!!d.collectWindowErrors,c},install:function(){var a=this;return a.isSetup()&&!a.p&&(Y.report.subscribe(function(){a.E.apply(a,arguments)}),a.F(),a.m.instrument&&a.m.instrument.tryCatch&&a.G(),a.m.autoBreadcrumbs&&a.H(),a.I(),a.p=!0),Error.stackTraceLimit=a.m.stackTraceLimit,this},setDSN:function(a){var b=this,c=b.J(a),d=c.path.lastIndexOf("/"),e=c.path.substr(1,d);b.K=a,b.j=c.user,b.L=c.pass&&c.pass.substr(1),b.k=c.path.substr(d+1),b.i=b.M(c),b.N=b.i+"/"+e+"api/"+b.k+"/store/",this.A()},context:function(a,b,c){return fa(a)&&(c=b||[],b=a,a=void 0),this.wrap(a,b).apply(this,c)},wrap:function(a,b,c){function d(){var d=[],f=arguments.length,g=!a||a&&a.deep!==!1;for(c&&fa(c)&&c.apply(this,arguments);f--;)d[f]=g?e.wrap(a,arguments[f]):arguments[f];try{return b.apply(this,d)}catch(h){throw e.O(),e.captureException(h,a),h}}var e=this;if(ea(b)&&!fa(a))return a;if(fa(a)&&(b=a,a=void 0),!fa(b))return b;try{if(b.a)return b;if(b.P)return b.P}catch(f){return b}for(var g in b)na(b,g)&&(d[g]=b[g]);return d.prototype=b.prototype,b.P=d,d.a=!0,d.b=b,d},uninstall:function(){return Y.report.uninstall(),this.Q(),this.R(),this.S(),Error.stackTraceLimit=this.q,this.p=!1,this},captureException:function(a,b){b=ka({trimHeadFrames:0},b?b:{});var c=!ba(a),d=!da(a),e=da(a)&&!a.error;if(c&&d||e)return this.captureMessage(a,ka(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}));da(a)&&(a=a.error),this.f=a;try{var f=Y.computeStackTrace(a);this.T(f,b)}catch(g){if(a!==g)throw g}return this},captureMessage:function(a,b){if(!this.m.ignoreErrors.test||!this.m.ignoreErrors.test(a)){b=b||{};var c,d=ka({message:a+""},b);try{throw new Error(a)}catch(e){c=e}c.name=null;var f=Y.computeStackTrace(c),g=ha(f.stack)&&f.stack[1],h=g&&g.url||"";if((!this.m.ignoreUrls.test||!this.m.ignoreUrls.test(h))&&(!this.m.whitelistUrls.test||this.m.whitelistUrls.test(h))){if(this.m.stacktrace||b&&b.stacktrace){b=ka({fingerprint:a,trimHeadFrames:(b.trimHeadFrames||0)+1},b);var i=this.U(f,b);d.stacktrace={frames:i.reverse()}}return this.V(d),this}}},captureBreadcrumb:function(a){var b=ka({timestamp:H()/1e3},a);if(fa(this.m.breadcrumbCallback)){var c=this.m.breadcrumbCallback(b);if(ca(c)&&!ia(c))b=c;else if(c===!1)return this}return this.w.push(b),this.w.length>this.m.maxBreadcrumbs&&this.w.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.t.push([a,b]),this.p&&this.I(),this},setUserContext:function(a){return this.l.user=a,this},setExtraContext:function(a){return this.W("extra",a),this},setTagsContext:function(a){return this.W("tags",a),this},clearContext:function(){return this.l={},this},getContext:function(){return JSON.parse(Z(this.l))},setEnvironment:function(a){return this.m.environment=a,this},setRelease:function(a){return this.m.release=a,this},setDataCallback:function(a){var b=this.m.dataCallback;return this.m.dataCallback=I(b,a),this},setBreadcrumbCallback:function(a){var b=this.m.breadcrumbCallback;return this.m.breadcrumbCallback=I(b,a),this},setShouldSendCallback:function(a){var b=this.m.shouldSendCallback;return this.m.shouldSendCallback=I(b,a),this},setTransport:function(a){return this.m.transport=a,this},lastException:function(){return this.f},lastEventId:function(){return this.h},isSetup:function(){return!!this.c&&(!!this.i||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.D("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=Aa.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(Ba){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new $("Missing eventId");var c=a.dsn||this.K;if(!c)throw new $("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.l.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.M(this.J(c)),h=Ba.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(Ba.head||Ba.body).appendChild(h)}},O:function(){var a=this;this.o+=1,setTimeout(function(){a.o-=1})},X:function(a,b){var c,d;if(this.d){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),Ba.createEvent?(c=Ba.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=Ba.createEventObject(),c.eventType=a);for(d in b)na(b,d)&&(c[d]=b[d]);if(Ba.createEvent)Ba.dispatchEvent(c);else try{Ba.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},Y:function(a){var b=this;return function(c){if(b.Z=null,b.x!==c){b.x=c;var d;try{d=ra(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},$:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.Z;g||a.Y("input")(c),clearTimeout(g),a.Z=setTimeout(function(){a.Z=null},b)}}},_:function(a,b){var c=ua(this.y.href),d=ua(b),e=ua(a);this.z=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},F:function(){var a=this;a.aa=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.a?a.aa.apply(this.b,arguments):a.aa.apply(this,arguments)}},Q:function(){this.aa&&(Function.prototype.toString=this.aa)},G:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b._(b.z,c+""),a.apply(this,arguments)}};va(history,"pushState",j,d),va(history,"replaceState",j,d)}if(c.console&&"console"in Aa&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};ja(["debug","info","warn","error","log"],function(a,b){xa(console,b,k)})}},R:function(){for(var a;this.v.length;){a=this.v.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},S:function(){for(var a in this.s)this.r[a]=this.s[a]},I:function(){var a=this;ja(this.t,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},J:function(a){var b=za.exec(a),c={},d=7;try{for(;d--;)c[ya[d]]=b[d]||""}catch(e){throw new $("Invalid DSN: "+a)}if(c.pass&&!this.m.allowSecretKey)throw new $("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},M:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},E:function(){this.o||this.T.apply(this,arguments)},T:function(a,b){var c=this.U(a,b);this.X("handle",{stackInfo:a,options:b}),this.ca(a.name,a.message,a.url,a.lineno,c,b)},U:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(ja(a.stack,function(b,e){var f=c.da(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.w,0)}),this.l.user&&(a.user=this.l.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||ia(a[b]))&&delete a[b]}),fa(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!ia(a)&&(!fa(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.ja()?void this.D("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() href parsing trick because React Native and other +// environments where DOM might not be available + + +function parseUrl$1(url) { + if (typeof url !== 'string') return {}; + var match = url.match(/^(([^:\/?#]+):)?(\/\/([^\/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?$/); // coerce to undefined values to empty string so we don't get 'undefined' + + var query = match[6] || ''; + var fragment = match[8] || ''; + return { + protocol: match[2], + host: match[4], + path: match[5], + relative: match[5] + query + fragment // everything minus origin + + }; +} + +function uuid4$1() { + var crypto = _window$3.crypto || _window$3.msCrypto; + + if (!isUndefined$1(crypto) && crypto.getRandomValues) { + // Use window.crypto API if available + // eslint-disable-next-line no-undef + var arr = new Uint16Array(8); + crypto.getRandomValues(arr); // set 4 in byte 7 + + arr[3] = arr[3] & 0xfff | 0x4000; // set 2 most significant bits of byte 9 to '10' + + arr[4] = arr[4] & 0x3fff | 0x8000; + + var pad = function pad(num) { + var v = num.toString(16); + + while (v.length < 4) { + v = '0' + v; + } + + return v; + }; + + return pad(arr[0]) + pad(arr[1]) + pad(arr[2]) + pad(arr[3]) + pad(arr[4]) + pad(arr[5]) + pad(arr[6]) + pad(arr[7]); + } else { + // http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/2117523#2117523 + return 'xxxxxxxxxxxx4xxxyxxxxxxxxxxxxxxx'.replace(/[xy]/g, function (c) { + var r = Math.random() * 16 | 0, + v = c === 'x' ? r : r & 0x3 | 0x8; + return v.toString(16); + }); + } +} +/** + * Given a child DOM element, returns a query-selector statement describing that + * and its ancestors + * e.g. [HTMLElement] => body > div > input#foo.btn[name=baz] + * @param elem + * @returns {string} + */ + + +function htmlTreeAsString$1(elem) { + /* eslint no-extra-parens:0*/ + var MAX_TRAVERSE_HEIGHT = 5, + MAX_OUTPUT_LEN = 80, + out = [], + height = 0, + len = 0, + separator = ' > ', + sepLength = separator.length, + nextStr; + + while (elem && height++ < MAX_TRAVERSE_HEIGHT) { + nextStr = htmlElementAsString(elem); // bail out if + // - nextStr is the 'html' element + // - the length of the string that would be created exceeds MAX_OUTPUT_LEN + // (ignore this limit if we are on the first iteration) + + if (nextStr === 'html' || height > 1 && len + out.length * sepLength + nextStr.length >= MAX_OUTPUT_LEN) { + break; + } + + out.push(nextStr); + len += nextStr.length; + elem = elem.parentNode; + } + + return out.reverse().join(separator); +} +/** + * Returns a simple, query-selector representation of a DOM element + * e.g. [HTMLElement] => input#foo.btn[name=baz] + * @param HTMLElement + * @returns {string} + */ + + +function htmlElementAsString(elem) { + var out = [], + className, + classes, + key, + attr, + i; + + if (!elem || !elem.tagName) { + return ''; + } + + out.push(elem.tagName.toLowerCase()); + + if (elem.id) { + out.push('#' + elem.id); + } + + className = elem.className; + + if (className && isString$1(className)) { + classes = className.split(/\s+/); + + for (i = 0; i < classes.length; i++) { + out.push('.' + classes[i]); + } + } + + var attrWhitelist = ['type', 'name', 'title', 'alt']; + + for (i = 0; i < attrWhitelist.length; i++) { + key = attrWhitelist[i]; + attr = elem.getAttribute(key); + + if (attr) { + out.push('[' + key + '="' + attr + '"]'); + } + } + + return out.join(''); +} +/** + * Returns true if either a OR b is truthy, but not both + */ + + +function isOnlyOneTruthy(a, b) { + return !!(!!a ^ !!b); +} +/** + * Returns true if both parameters are undefined + */ + + +function isBothUndefined(a, b) { + return isUndefined$1(a) && isUndefined$1(b); +} +/** + * Returns true if the two input exception interfaces have the same content + */ + + +function isSameException$1(ex1, ex2) { + if (isOnlyOneTruthy(ex1, ex2)) return false; + ex1 = ex1.values[0]; + ex2 = ex2.values[0]; + if (ex1.type !== ex2.type || ex1.value !== ex2.value) return false; // in case both stacktraces are undefined, we can't decide so default to false + + if (isBothUndefined(ex1.stacktrace, ex2.stacktrace)) return false; + return isSameStacktrace$1(ex1.stacktrace, ex2.stacktrace); +} +/** + * Returns true if the two input stack trace interfaces have the same content + */ + + +function isSameStacktrace$1(stack1, stack2) { + if (isOnlyOneTruthy(stack1, stack2)) return false; + var frames1 = stack1.frames; + var frames2 = stack2.frames; // Exit early if frame count differs + + if (frames1.length !== frames2.length) return false; // Iterate through every frame; bail out if anything differs + + var a, b; + + for (var i = 0; i < frames1.length; i++) { + a = frames1[i]; + b = frames2[i]; + if (a.filename !== b.filename || a.lineno !== b.lineno || a.colno !== b.colno || a['function'] !== b['function']) return false; + } + + return true; +} +/** + * Polyfill a method + * @param obj object e.g. `document` + * @param name method name present on object e.g. `addEventListener` + * @param replacement replacement function + * @param track {optional} record instrumentation to an array + */ + + +function fill$1(obj, name, replacement, track) { + var orig = obj[name]; + obj[name] = replacement(orig); + obj[name].__raven__ = true; + obj[name].__orig__ = orig; + + if (track) { + track.push([obj, name, orig]); + } +} +/** + * Join values in array + * @param input array of values to be joined together + * @param delimiter string to be placed in-between values + * @returns {string} + */ + + +function safeJoin(input, delimiter) { + if (!isArray$1(input)) return ''; + var output = []; + + for (var i = 0; i < input.length; i++) { + try { + output.push(String(input[i])); + } catch (e) { + output.push('[value cannot be serialized]'); + } + } + + return output.join(delimiter); +} + +var utils = { + isObject: isObject$1, + isError: isError$1, + isErrorEvent: isErrorEvent$1, + isUndefined: isUndefined$1, + isFunction: isFunction$1, + isPlainObject: isPlainObject, + isString: isString$1, + isArray: isArray$1, + isEmptyObject: isEmptyObject$1, + supportsErrorEvent: supportsErrorEvent, + supportsFetch: supportsFetch$1, + wrappedCallback: wrappedCallback, + each: each$1, + objectMerge: objectMerge$1, + truncate: truncate$1, + objectFrozen: objectFrozen$1, + hasKey: hasKey$1, + joinRegExp: joinRegExp$1, + urlencode: urlencode$1, + uuid4: uuid4$1, + htmlTreeAsString: htmlTreeAsString$1, + htmlElementAsString: htmlElementAsString, + isSameException: isSameException$1, + isSameStacktrace: isSameStacktrace$1, + parseUrl: parseUrl$1, + fill: fill$1, + safeJoin: safeJoin +}; + +/* + TraceKit - Cross brower stack traces + + This was originally forked from github.com/occ/TraceKit, but has since been + largely re-written and is now maintained as part of raven-js. Tests for + this are in test/vendor. + + MIT license +*/ + +var TraceKit = { + collectWindowErrors: true, + debug: false +}; // This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) + +var _window$2 = typeof window !== 'undefined' ? window : typeof commonjsGlobal !== 'undefined' ? commonjsGlobal : typeof self !== 'undefined' ? self : {}; // global reference to slice + + +var _slice = [].slice; +var UNKNOWN_FUNCTION = '?'; // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error#Error_types + +var ERROR_TYPES_RE = /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/; + +function getLocationHref() { + if (typeof document === 'undefined' || document.location == null) return ''; + return document.location.href; +} +/** + * TraceKit.report: cross-browser processing of unhandled exceptions + * + * Syntax: + * TraceKit.report.subscribe(function(stackInfo) { ... }) + * TraceKit.report.unsubscribe(function(stackInfo) { ... }) + * TraceKit.report(exception) + * try { ...code... } catch(ex) { TraceKit.report(ex); } + * + * Supports: + * - Firefox: full stack trace with line numbers, plus column number + * on top frame; column number is not guaranteed + * - Opera: full stack trace with line and column numbers + * - Chrome: full stack trace with line and column numbers + * - Safari: line and column number for the top frame only; some frames + * may be missing, and column number is not guaranteed + * - IE: line and column number for the top frame only; some frames + * may be missing, and column number is not guaranteed + * + * In theory, TraceKit should work on all of the following versions: + * - IE5.5+ (only 8.0 tested) + * - Firefox 0.9+ (only 3.5+ tested) + * - Opera 7+ (only 10.50 tested; versions 9 and earlier may require + * Exceptions Have Stacktrace to be enabled in opera:config) + * - Safari 3+ (only 4+ tested) + * - Chrome 1+ (only 5+ tested) + * - Konqueror 3.5+ (untested) + * + * Requires TraceKit.computeStackTrace. + * + * Tries to catch all unhandled exceptions and report them to the + * subscribed handlers. Please note that TraceKit.report will rethrow the + * exception. This is REQUIRED in order to get a useful stack trace in IE. + * If the exception does not reach the top of the browser, you will only + * get a stack trace from the point where TraceKit.report was called. + * + * Handlers receive a stackInfo object as described in the + * TraceKit.computeStackTrace docs. + */ + + +TraceKit.report = function reportModuleWrapper() { + var handlers = [], + lastArgs = null, + lastException = null, + lastExceptionStack = null; + /** + * Add a crash handler. + * @param {Function} handler + */ + + function subscribe(handler) { + installGlobalHandler(); + handlers.push(handler); + } + /** + * Remove a crash handler. + * @param {Function} handler + */ + + + function unsubscribe(handler) { + for (var i = handlers.length - 1; i >= 0; --i) { + if (handlers[i] === handler) { + handlers.splice(i, 1); + } + } + } + /** + * Remove all crash handlers. + */ + + + function unsubscribeAll() { + uninstallGlobalHandler(); + handlers = []; + } + /** + * Dispatch stack information to all handlers. + * @param {Object.} stack + */ + + + function notifyHandlers(stack, isWindowError) { + var exception = null; + + if (isWindowError && !TraceKit.collectWindowErrors) { + return; + } + + for (var i in handlers) { + if (handlers.hasOwnProperty(i)) { + try { + handlers[i].apply(null, [stack].concat(_slice.call(arguments, 2))); + } catch (inner) { + exception = inner; + } + } + } + + if (exception) { + throw exception; + } + } + + var _oldOnerrorHandler, _onErrorHandlerInstalled; + /** + * Ensures all global unhandled exceptions are recorded. + * Supported by Gecko and IE. + * @param {string} msg Error message. + * @param {string} url URL of script that generated the exception. + * @param {(number|string)} lineNo The line number at which the error + * occurred. + * @param {?(number|string)} colNo The column number at which the error + * occurred. + * @param {?Error} ex The actual Error object. + */ + + + function traceKitWindowOnError(msg, url, lineNo, colNo, ex) { + var stack = null; // If 'ex' is ErrorEvent, get real Error from inside + + var exception = utils.isErrorEvent(ex) ? ex.error : ex; // If 'msg' is ErrorEvent, get real message from inside + + var message = utils.isErrorEvent(msg) ? msg.message : msg; + + if (lastExceptionStack) { + TraceKit.computeStackTrace.augmentStackTraceWithInitialElement(lastExceptionStack, url, lineNo, message); + processLastException(); + } else if (exception && utils.isError(exception)) { + // non-string `exception` arg; attempt to extract stack trace + // New chrome and blink send along a real error object + // Let's just report that like a normal error. + // See: https://mikewest.org/2013/08/debugging-runtime-errors-with-window-onerror + stack = TraceKit.computeStackTrace(exception); + notifyHandlers(stack, true); + } else { + var location = { + url: url, + line: lineNo, + column: colNo + }; + var name = undefined; + var groups; + + if ({}.toString.call(message) === '[object String]') { + var groups = message.match(ERROR_TYPES_RE); + + if (groups) { + name = groups[1]; + message = groups[2]; + } + } + + location.func = UNKNOWN_FUNCTION; + stack = { + name: name, + message: message, + url: getLocationHref(), + stack: [location] + }; + notifyHandlers(stack, true); + } + + if (_oldOnerrorHandler) { + return _oldOnerrorHandler.apply(this, arguments); + } + + return false; + } + + function installGlobalHandler() { + if (_onErrorHandlerInstalled) { + return; + } + + _oldOnerrorHandler = _window$2.onerror; + _window$2.onerror = traceKitWindowOnError; + _onErrorHandlerInstalled = true; + } + + function uninstallGlobalHandler() { + if (!_onErrorHandlerInstalled) { + return; + } + + _window$2.onerror = _oldOnerrorHandler; + _onErrorHandlerInstalled = false; + _oldOnerrorHandler = undefined; + } + + function processLastException() { + var _lastExceptionStack = lastExceptionStack, + _lastArgs = lastArgs; + lastArgs = null; + lastExceptionStack = null; + lastException = null; + notifyHandlers.apply(null, [_lastExceptionStack, false].concat(_lastArgs)); + } + /** + * Reports an unhandled Error to TraceKit. + * @param {Error} ex + * @param {?boolean} rethrow If false, do not re-throw the exception. + * Only used for window.onerror to not cause an infinite loop of + * rethrowing. + */ + + + function report(ex, rethrow) { + var args = _slice.call(arguments, 1); + + if (lastExceptionStack) { + if (lastException === ex) { + return; // already caught by an inner catch block, ignore + } else { + processLastException(); + } + } + + var stack = TraceKit.computeStackTrace(ex); + lastExceptionStack = stack; + lastException = ex; + lastArgs = args; // If the stack trace is incomplete, wait for 2 seconds for + // slow slow IE to see if onerror occurs or not before reporting + // this exception; otherwise, we will end up with an incomplete + // stack trace + + setTimeout(function () { + if (lastException === ex) { + processLastException(); + } + }, stack.incomplete ? 2000 : 0); + + if (rethrow !== false) { + throw ex; // re-throw to propagate to the top level (and cause window.onerror) + } + } + + report.subscribe = subscribe; + report.unsubscribe = unsubscribe; + report.uninstall = unsubscribeAll; + return report; +}(); +/** + * TraceKit.computeStackTrace: cross-browser stack traces in JavaScript + * + * Syntax: + * s = TraceKit.computeStackTrace(exception) // consider using TraceKit.report instead (see below) + * Returns: + * s.name - exception name + * s.message - exception message + * s.stack[i].url - JavaScript or HTML file URL + * s.stack[i].func - function name, or empty for anonymous functions (if guessing did not work) + * s.stack[i].args - arguments passed to the function, if known + * s.stack[i].line - line number, if known + * s.stack[i].column - column number, if known + * + * Supports: + * - Firefox: full stack trace with line numbers and unreliable column + * number on top frame + * - Opera 10: full stack trace with line and column numbers + * - Opera 9-: full stack trace with line numbers + * - Chrome: full stack trace with line and column numbers + * - Safari: line and column number for the topmost stacktrace element + * only + * - IE: no line numbers whatsoever + * + * Tries to guess names of anonymous functions by looking for assignments + * in the source code. In IE and Safari, we have to guess source file names + * by searching for function bodies inside all page scripts. This will not + * work for scripts that are loaded cross-domain. + * Here be dragons: some function names may be guessed incorrectly, and + * duplicate functions may be mismatched. + * + * TraceKit.computeStackTrace should only be used for tracing purposes. + * Logging of unhandled exceptions should be done with TraceKit.report, + * which builds on top of TraceKit.computeStackTrace and provides better + * IE support by utilizing the window.onerror event to retrieve information + * about the top of the stack. + * + * Note: In IE and Safari, no stack trace is recorded on the Error object, + * so computeStackTrace instead walks its *own* chain of callers. + * This means that: + * * in Safari, some methods may be missing from the stack trace; + * * in IE, the topmost function in the stack trace will always be the + * caller of computeStackTrace. + * + * This is okay for tracing (because you are likely to be calling + * computeStackTrace from the function you want to be the topmost element + * of the stack trace anyway), but not okay for logging unhandled + * exceptions (because your catch block will likely be far away from the + * inner function that actually caused the exception). + * + */ + + +TraceKit.computeStackTrace = function computeStackTraceWrapper() { + // Contents of Exception in various browsers. + // + // SAFARI: + // ex.message = Can't find variable: qq + // ex.line = 59 + // ex.sourceId = 580238192 + // ex.sourceURL = http://... + // ex.expressionBeginOffset = 96 + // ex.expressionCaretOffset = 98 + // ex.expressionEndOffset = 98 + // ex.name = ReferenceError + // + // FIREFOX: + // ex.message = qq is not defined + // ex.fileName = http://... + // ex.lineNumber = 59 + // ex.columnNumber = 69 + // ex.stack = ...stack trace... (see the example below) + // ex.name = ReferenceError + // + // CHROME: + // ex.message = qq is not defined + // ex.name = ReferenceError + // ex.type = not_defined + // ex.arguments = ['aa'] + // ex.stack = ...stack trace... + // + // INTERNET EXPLORER: + // ex.message = ... + // ex.name = ReferenceError + // + // OPERA: + // ex.message = ...message... (see the example below) + // ex.name = ReferenceError + // ex.opera#sourceloc = 11 (pretty much useless, duplicates the info in ex.message) + // ex.stacktrace = n/a; see 'opera:config#UserPrefs|Exceptions Have Stacktrace' + + /** + * Computes stack trace information from the stack property. + * Chrome and Gecko use this property. + * @param {Error} ex + * @return {?Object.} Stack trace information. + */ + function computeStackTraceFromStackProp(ex) { + if (typeof ex.stack === 'undefined' || !ex.stack) return; + var chrome = /^\s*at (.*?) ?\(((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i, + gecko = /^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|\[native).*?|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i, + winjs = /^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i, + // Used to additionally parse URL/line/column from eval frames + geckoEval = /(\S+) line (\d+)(?: > eval line \d+)* > eval/i, + chromeEval = /\((\S*)(?::(\d+))(?::(\d+))\)/, + lines = ex.stack.split('\n'), + stack = [], + submatch, + parts, + element, + reference = /^(.*) is undefined$/.exec(ex.message); + + for (var i = 0, j = lines.length; i < j; ++i) { + if (parts = chrome.exec(lines[i])) { + var isNative = parts[2] && parts[2].indexOf('native') === 0; // start of line + + var isEval = parts[2] && parts[2].indexOf('eval') === 0; // start of line + + if (isEval && (submatch = chromeEval.exec(parts[2]))) { + // throw out eval line/column and use top-most line/column number + parts[2] = submatch[1]; // url + + parts[3] = submatch[2]; // line + + parts[4] = submatch[3]; // column + } + + element = { + url: !isNative ? parts[2] : null, + func: parts[1] || UNKNOWN_FUNCTION, + args: isNative ? [parts[2]] : [], + line: parts[3] ? +parts[3] : null, + column: parts[4] ? +parts[4] : null + }; + } else if (parts = winjs.exec(lines[i])) { + element = { + url: parts[2], + func: parts[1] || UNKNOWN_FUNCTION, + args: [], + line: +parts[3], + column: parts[4] ? +parts[4] : null + }; + } else if (parts = gecko.exec(lines[i])) { + var isEval = parts[3] && parts[3].indexOf(' > eval') > -1; + + if (isEval && (submatch = geckoEval.exec(parts[3]))) { + // throw out eval line/column and use top-most line number + parts[3] = submatch[1]; + parts[4] = submatch[2]; + parts[5] = null; // no column when eval + } else if (i === 0 && !parts[5] && typeof ex.columnNumber !== 'undefined') { + // FireFox uses this awesome columnNumber property for its top frame + // Also note, Firefox's column number is 0-based and everything else expects 1-based, + // so adding 1 + // NOTE: this hack doesn't work if top-most frame is eval + stack[0].column = ex.columnNumber + 1; + } + + element = { + url: parts[3], + func: parts[1] || UNKNOWN_FUNCTION, + args: parts[2] ? parts[2].split(',') : [], + line: parts[4] ? +parts[4] : null, + column: parts[5] ? +parts[5] : null + }; + } else { + continue; + } + + if (!element.func && element.line) { + element.func = UNKNOWN_FUNCTION; + } + + stack.push(element); + } + + if (!stack.length) { + return null; + } + + return { + name: ex.name, + message: ex.message, + url: getLocationHref(), + stack: stack + }; + } + /** + * Adds information about the first frame to incomplete stack traces. + * Safari and IE require this to get complete data on the first frame. + * @param {Object.} stackInfo Stack trace information from + * one of the compute* methods. + * @param {string} url The URL of the script that caused an error. + * @param {(number|string)} lineNo The line number of the script that + * caused an error. + * @param {string=} message The error generated by the browser, which + * hopefully contains the name of the object that caused the error. + * @return {boolean} Whether or not the stack information was + * augmented. + */ + + + function augmentStackTraceWithInitialElement(stackInfo, url, lineNo, message) { + var initial = { + url: url, + line: lineNo + }; + + if (initial.url && initial.line) { + stackInfo.incomplete = false; + + if (!initial.func) { + initial.func = UNKNOWN_FUNCTION; + } + + if (stackInfo.stack.length > 0) { + if (stackInfo.stack[0].url === initial.url) { + if (stackInfo.stack[0].line === initial.line) { + return false; // already in stack trace + } else if (!stackInfo.stack[0].line && stackInfo.stack[0].func === initial.func) { + stackInfo.stack[0].line = initial.line; + return false; + } + } + } + + stackInfo.stack.unshift(initial); + stackInfo.partial = true; + return true; + } else { + stackInfo.incomplete = true; + } + + return false; + } + /** + * Computes stack trace information by walking the arguments.caller + * chain at the time the exception occurred. This will cause earlier + * frames to be missed but is the only way to get any stack trace in + * Safari and IE. The top frame is restored by + * {@link augmentStackTraceWithInitialElement}. + * @param {Error} ex + * @return {?Object.} Stack trace information. + */ + + + function computeStackTraceByWalkingCallerChain(ex, depth) { + var functionName = /function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i, + stack = [], + funcs = {}, + recursion = false, + parts, + item; + + for (var curr = computeStackTraceByWalkingCallerChain.caller; curr && !recursion; curr = curr.caller) { + if (curr === computeStackTrace || curr === TraceKit.report) { + // console.log('skipping internal function'); + continue; + } + + item = { + url: null, + func: UNKNOWN_FUNCTION, + line: null, + column: null + }; + + if (curr.name) { + item.func = curr.name; + } else if (parts = functionName.exec(curr.toString())) { + item.func = parts[1]; + } + + if (typeof item.func === 'undefined') { + try { + item.func = parts.input.substring(0, parts.input.indexOf('{')); + } catch (e) {} + } + + if (funcs['' + curr]) { + recursion = true; + } else { + funcs['' + curr] = true; + } + + stack.push(item); + } + + if (depth) { + // console.log('depth is ' + depth); + // console.log('stack is ' + stack.length); + stack.splice(0, depth); + } + + var result = { + name: ex.name, + message: ex.message, + url: getLocationHref(), + stack: stack + }; + augmentStackTraceWithInitialElement(result, ex.sourceURL || ex.fileName, ex.line || ex.lineNumber, ex.message || ex.description); + return result; + } + /** + * Computes a stack trace for an exception. + * @param {Error} ex + * @param {(string|number)=} depth + */ + + + function computeStackTrace(ex, depth) { + var stack = null; + depth = depth == null ? 0 : +depth; + + try { + stack = computeStackTraceFromStackProp(ex); + + if (stack) { + return stack; + } + } catch (e) { + if (TraceKit.debug) { + throw e; + } + } + + try { + stack = computeStackTraceByWalkingCallerChain(ex, depth + 1); + + if (stack) { + return stack; + } + } catch (e) { + if (TraceKit.debug) { + throw e; + } + } + + return { + name: ex.name, + message: ex.message, + url: getLocationHref() + }; + } + + computeStackTrace.augmentStackTraceWithInitialElement = augmentStackTraceWithInitialElement; + computeStackTrace.computeStackTraceFromStackProp = computeStackTraceFromStackProp; + return computeStackTrace; +}(); + +var tracekit = TraceKit; + +var stringify_1 = createCommonjsModule(function (module, exports) { + /* + json-stringify-safe + Like JSON.stringify, but doesn't throw on circular references. + + Originally forked from https://github.com/isaacs/json-stringify-safe + version 5.0.1 on 3/8/2017 and modified to handle Errors serialization + and IE8 compatibility. Tests for this are in test/vendor. + + ISC license: https://github.com/isaacs/json-stringify-safe/blob/master/LICENSE + */ + exports = module.exports = stringify; + exports.getSerialize = serializer; + + function indexOf(haystack, needle) { + for (var i = 0; i < haystack.length; ++i) { + if (haystack[i] === needle) return i; + } + + return -1; + } + + function stringify(obj, replacer, spaces, cycleReplacer) { + return JSON.stringify(obj, serializer(replacer, cycleReplacer), spaces); + } // https://github.com/ftlabs/js-abbreviate/blob/fa709e5f139e7770a71827b1893f22418097fbda/index.js#L95-L106 + + + function stringifyError(value) { + var err = { + // These properties are implemented as magical getters and don't show up in for in + stack: value.stack, + message: value.message, + name: value.name + }; + + for (var i in value) { + if (Object.prototype.hasOwnProperty.call(value, i)) { + err[i] = value[i]; + } + } + + return err; + } + + function serializer(replacer, cycleReplacer) { + var stack = []; + var keys = []; + + if (cycleReplacer == null) { + cycleReplacer = function cycleReplacer(key, value) { + if (stack[0] === value) { + return '[Circular ~]'; + } + + return '[Circular ~.' + keys.slice(0, indexOf(stack, value)).join('.') + ']'; + }; + } + + return function (key, value) { + if (stack.length > 0) { + var thisPos = indexOf(stack, this); + ~thisPos ? stack.splice(thisPos + 1) : stack.push(this); + ~thisPos ? keys.splice(thisPos, Infinity, key) : keys.push(key); + + if (~indexOf(stack, value)) { + value = cycleReplacer.call(this, key, value); + } + } else { + stack.push(value); + } + + return replacer == null ? value instanceof Error ? stringifyError(value) : value : replacer.call(this, key, value); + }; + } +}); +var stringify_2 = stringify_1.getSerialize; + +function RavenConfigError(message) { + this.name = 'RavenConfigError'; + this.message = message; +} + +RavenConfigError.prototype = new Error(); +RavenConfigError.prototype.constructor = RavenConfigError; +var configError = RavenConfigError; + +var wrapMethod = function wrapMethod(console, level, callback) { + var originalConsoleLevel = console[level]; + var originalConsole = console; + + if (!(level in console)) { + return; + } + + var sentryLevel = level === 'warn' ? 'warning' : level; + + console[level] = function () { + var args = [].slice.call(arguments); + var msg = utils.safeJoin(args, ' '); + var data = { + level: sentryLevel, + logger: 'console', + extra: { + arguments: args + } + }; + + if (level === 'assert') { + if (args[0] === false) { + // Default browsers message + msg = 'Assertion failed: ' + (utils.safeJoin(args.slice(1), ' ') || 'console.assert'); + data.extra.arguments = args.slice(1); + callback && callback(msg, data); + } + } else { + callback && callback(msg, data); + } // this fails for some browsers. :( + + + if (originalConsoleLevel) { + // IE9 doesn't allow calling apply on console functions directly + // See: https://stackoverflow.com/questions/5472938/does-ie9-support-console-log-and-is-it-a-real-function#answer-5473193 + Function.prototype.apply.call(originalConsoleLevel, originalConsole, args); + } + }; +}; + +var console$1 = { + wrapMethod: wrapMethod +}; + +/*global XDomainRequest:false */ + +var isError = utils.isError; +var isObject = utils.isObject; +var isErrorEvent = utils.isErrorEvent; +var isUndefined = utils.isUndefined; +var isFunction = utils.isFunction; +var isString = utils.isString; +var isArray = utils.isArray; +var isEmptyObject = utils.isEmptyObject; +var each = utils.each; +var objectMerge = utils.objectMerge; +var truncate = utils.truncate; +var objectFrozen = utils.objectFrozen; +var hasKey = utils.hasKey; +var joinRegExp = utils.joinRegExp; +var urlencode = utils.urlencode; +var uuid4 = utils.uuid4; +var htmlTreeAsString = utils.htmlTreeAsString; +var isSameException = utils.isSameException; +var isSameStacktrace = utils.isSameStacktrace; +var parseUrl = utils.parseUrl; +var fill = utils.fill; +var supportsFetch = utils.supportsFetch; +var wrapConsoleMethod = console$1.wrapMethod; +var dsnKeys = 'source protocol user pass host port path'.split(' '); +var dsnPattern = /^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/; + +function now() { + return +new Date(); +} // This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) + + +var _window$1 = typeof window !== 'undefined' ? window : typeof commonjsGlobal !== 'undefined' ? commonjsGlobal : typeof self !== 'undefined' ? self : {}; + +var _document = _window$1.document; +var _navigator = _window$1.navigator; + +function keepOriginalCallback(original, callback) { + return isFunction(callback) ? function (data) { + return callback(data, original); + } : callback; +} // First, check for JSON support +// If there is no JSON, we no-op the core features of Raven +// since JSON is required to encode the payload + + +function Raven$1() { + this._hasJSON = !!(_typeof(JSON) === 'object' && JSON.stringify); // Raven can run in contexts where there's no document (react-native) + + this._hasDocument = !isUndefined(_document); + this._hasNavigator = !isUndefined(_navigator); + this._lastCapturedException = null; + this._lastData = null; + this._lastEventId = null; + this._globalServer = null; + this._globalKey = null; + this._globalProject = null; + this._globalContext = {}; + this._globalOptions = { + // SENTRY_RELEASE can be injected by https://github.com/getsentry/sentry-webpack-plugin + release: _window$1.SENTRY_RELEASE && _window$1.SENTRY_RELEASE.id, + logger: 'javascript', + ignoreErrors: [], + ignoreUrls: [], + whitelistUrls: [], + includePaths: [], + headers: null, + collectWindowErrors: true, + maxMessageLength: 0, + // By default, truncates URL values to 250 chars + maxUrlLength: 250, + stackTraceLimit: 50, + autoBreadcrumbs: true, + instrument: true, + sampleRate: 1 + }; + this._fetchDefaults = { + method: 'POST', + keepalive: true, + referrerPolicy: 'origin' + }; + this._ignoreOnError = 0; + this._isRavenInstalled = false; + this._originalErrorStackTraceLimit = Error.stackTraceLimit; // capture references to window.console *and* all its methods first + // before the console plugin has a chance to monkey patch + + this._originalConsole = _window$1.console || {}; + this._originalConsoleMethods = {}; + this._plugins = []; + this._startTime = now(); + this._wrappedBuiltIns = []; + this._breadcrumbs = []; + this._lastCapturedEvent = null; + this._keypressTimeout; + this._location = _window$1.location; + this._lastHref = this._location && this._location.href; + + this._resetBackoff(); // eslint-disable-next-line guard-for-in + + + for (var method in this._originalConsole) { + this._originalConsoleMethods[method] = this._originalConsole[method]; + } +} +/* + * The core Raven singleton + * + * @this {Raven} + */ + + +Raven$1.prototype = { + // Hardcode version string so that raven source can be loaded directly via + // webpack (using a build step causes webpack #1617). Grunt verifies that + // this value matches package.json during build. + // See: https://github.com/getsentry/raven-js/issues/465 + VERSION: '3.22.2', + debug: false, + TraceKit: tracekit, + // alias to TraceKit + + /* + * Configure Raven with a DSN and extra options + * + * @param {string} dsn The public Sentry DSN + * @param {object} options Set of global options [optional] + * @return {Raven} + */ + config: function config(dsn, options) { + var self = this; + + if (self._globalServer) { + this._logDebug('error', 'Error: Raven has already been configured'); + + return self; + } + + if (!dsn) return self; + var globalOptions = self._globalOptions; // merge in options + + if (options) { + each(options, function (key, value) { + // tags and extra are special and need to be put into context + if (key === 'tags' || key === 'extra' || key === 'user') { + self._globalContext[key] = value; + } else { + globalOptions[key] = value; + } + }); + } + + self.setDSN(dsn); // "Script error." is hard coded into browsers for errors that it can't read. + // this is the result of a script being pulled in from an external domain and CORS. + + globalOptions.ignoreErrors.push(/^Script error\.?$/); + globalOptions.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/); // join regexp rules into one big rule + + globalOptions.ignoreErrors = joinRegExp(globalOptions.ignoreErrors); + globalOptions.ignoreUrls = globalOptions.ignoreUrls.length ? joinRegExp(globalOptions.ignoreUrls) : false; + globalOptions.whitelistUrls = globalOptions.whitelistUrls.length ? joinRegExp(globalOptions.whitelistUrls) : false; + globalOptions.includePaths = joinRegExp(globalOptions.includePaths); + globalOptions.maxBreadcrumbs = Math.max(0, Math.min(globalOptions.maxBreadcrumbs || 100, 100)); // default and hard limit is 100 + + var autoBreadcrumbDefaults = { + xhr: true, + console: true, + dom: true, + location: true, + sentry: true + }; + var autoBreadcrumbs = globalOptions.autoBreadcrumbs; + + if ({}.toString.call(autoBreadcrumbs) === '[object Object]') { + autoBreadcrumbs = objectMerge(autoBreadcrumbDefaults, autoBreadcrumbs); + } else if (autoBreadcrumbs !== false) { + autoBreadcrumbs = autoBreadcrumbDefaults; + } + + globalOptions.autoBreadcrumbs = autoBreadcrumbs; + var instrumentDefaults = { + tryCatch: true + }; + var instrument = globalOptions.instrument; + + if ({}.toString.call(instrument) === '[object Object]') { + instrument = objectMerge(instrumentDefaults, instrument); + } else if (instrument !== false) { + instrument = instrumentDefaults; + } + + globalOptions.instrument = instrument; + tracekit.collectWindowErrors = !!globalOptions.collectWindowErrors; // return for chaining + + return self; + }, + + /* + * Installs a global window.onerror error handler + * to capture and report uncaught exceptions. + * At this point, install() is required to be called due + * to the way TraceKit is set up. + * + * @return {Raven} + */ + install: function install() { + var self = this; + + if (self.isSetup() && !self._isRavenInstalled) { + tracekit.report.subscribe(function () { + self._handleOnErrorStackInfo.apply(self, arguments); + }); + + self._patchFunctionToString(); + + if (self._globalOptions.instrument && self._globalOptions.instrument.tryCatch) { + self._instrumentTryCatch(); + } + + if (self._globalOptions.autoBreadcrumbs) self._instrumentBreadcrumbs(); // Install all of the plugins + + self._drainPlugins(); + + self._isRavenInstalled = true; + } + + Error.stackTraceLimit = self._globalOptions.stackTraceLimit; + return this; + }, + + /* + * Set the DSN (can be called multiple time unlike config) + * + * @param {string} dsn The public Sentry DSN + */ + setDSN: function setDSN(dsn) { + var self = this, + uri = self._parseDSN(dsn), + lastSlash = uri.path.lastIndexOf('/'), + path = uri.path.substr(1, lastSlash); + + self._dsn = dsn; + self._globalKey = uri.user; + self._globalSecret = uri.pass && uri.pass.substr(1); + self._globalProject = uri.path.substr(lastSlash + 1); + self._globalServer = self._getGlobalServer(uri); + self._globalEndpoint = self._globalServer + '/' + path + 'api/' + self._globalProject + '/store/'; // Reset backoff state since we may be pointing at a + // new project/server + + this._resetBackoff(); + }, + + /* + * Wrap code within a context so Raven can capture errors + * reliably across domains that is executed immediately. + * + * @param {object} options A specific set of options for this context [optional] + * @param {function} func The callback to be immediately executed within the context + * @param {array} args An array of arguments to be called with the callback [optional] + */ + context: function context(options, func, args) { + if (isFunction(options)) { + args = func || []; + func = options; + options = undefined; + } + + return this.wrap(options, func).apply(this, args); + }, + + /* + * Wrap code within a context and returns back a new function to be executed + * + * @param {object} options A specific set of options for this context [optional] + * @param {function} func The function to be wrapped in a new context + * @param {function} func A function to call before the try/catch wrapper [optional, private] + * @return {function} The newly wrapped functions with a context + */ + wrap: function wrap(options, func, _before) { + var self = this; // 1 argument has been passed, and it's not a function + // so just return it + + if (isUndefined(func) && !isFunction(options)) { + return options; + } // options is optional + + + if (isFunction(options)) { + func = options; + options = undefined; + } // At this point, we've passed along 2 arguments, and the second one + // is not a function either, so we'll just return the second argument. + + + if (!isFunction(func)) { + return func; + } // We don't wanna wrap it twice! + + + try { + if (func.__raven__) { + return func; + } // If this has already been wrapped in the past, return that + + + if (func.__raven_wrapper__) { + return func.__raven_wrapper__; + } + } catch (e) { + // Just accessing custom props in some Selenium environments + // can cause a "Permission denied" exception (see raven-js#495). + // Bail on wrapping and return the function as-is (defers to window.onerror). + return func; + } + + function wrapped() { + var args = [], + i = arguments.length, + deep = !options || options && options.deep !== false; + + if (_before && isFunction(_before)) { + _before.apply(this, arguments); + } // Recursively wrap all of a function's arguments that are + // functions themselves. + + + while (i--) { + args[i] = deep ? self.wrap(options, arguments[i]) : arguments[i]; + } + + try { + // Attempt to invoke user-land function + // NOTE: If you are a Sentry user, and you are seeing this stack frame, it + // means Raven caught an error invoking your application code. This is + // expected behavior and NOT indicative of a bug with Raven.js. + return func.apply(this, args); + } catch (e) { + self._ignoreNextOnError(); + + self.captureException(e, options); + throw e; + } + } // copy over properties of the old function + + + for (var property in func) { + if (hasKey(func, property)) { + wrapped[property] = func[property]; + } + } + + wrapped.prototype = func.prototype; + func.__raven_wrapper__ = wrapped; // Signal that this function has been wrapped/filled already + // for both debugging and to prevent it to being wrapped/filled twice + + wrapped.__raven__ = true; + wrapped.__orig__ = func; + return wrapped; + }, + + /* + * Uninstalls the global error handler. + * + * @return {Raven} + */ + uninstall: function uninstall() { + tracekit.report.uninstall(); + + this._unpatchFunctionToString(); + + this._restoreBuiltIns(); + + this._restoreConsole(); + + Error.stackTraceLimit = this._originalErrorStackTraceLimit; + this._isRavenInstalled = false; + return this; + }, + + /* + * Manually capture an exception and send it over to Sentry + * + * @param {error} ex An exception to be logged + * @param {object} options A specific set of options for this error [optional] + * @return {Raven} + */ + captureException: function captureException(ex, options) { + options = objectMerge({ + trimHeadFrames: 0 + }, options ? options : {}); // Cases for sending ex as a message, rather than an exception + + var isNotError = !isError(ex); + var isNotErrorEvent = !isErrorEvent(ex); + var isErrorEventWithoutError = isErrorEvent(ex) && !ex.error; + + if (isNotError && isNotErrorEvent || isErrorEventWithoutError) { + return this.captureMessage(ex, objectMerge(options, { + stacktrace: true, + // if we fall back to captureMessage, default to attempting a new trace + trimHeadFrames: options.trimHeadFrames + 1 + })); + } // Get actual Error from ErrorEvent + + + if (isErrorEvent(ex)) ex = ex.error; // Store the raw exception object for potential debugging and introspection + + this._lastCapturedException = ex; // TraceKit.report will re-raise any exception passed to it, + // which means you have to wrap it in try/catch. Instead, we + // can wrap it here and only re-raise if TraceKit.report + // raises an exception different from the one we asked to + // report on. + + try { + var stack = tracekit.computeStackTrace(ex); + + this._handleStackInfo(stack, options); + } catch (ex1) { + if (ex !== ex1) { + throw ex1; + } + } + + return this; + }, + + /* + * Manually send a message to Sentry + * + * @param {string} msg A plain message to be captured in Sentry + * @param {object} options A specific set of options for this message [optional] + * @return {Raven} + */ + captureMessage: function captureMessage(msg, options) { + // config() automagically converts ignoreErrors from a list to a RegExp so we need to test for an + // early call; we'll error on the side of logging anything called before configuration since it's + // probably something you should see: + if (!!this._globalOptions.ignoreErrors.test && this._globalOptions.ignoreErrors.test(msg)) { + return; + } + + options = options || {}; + var data = objectMerge({ + message: msg + '' // Make sure it's actually a string + + }, options); + var ex; // Generate a "synthetic" stack trace from this point. + // NOTE: If you are a Sentry user, and you are seeing this stack frame, it is NOT indicative + // of a bug with Raven.js. Sentry generates synthetic traces either by configuration, + // or if it catches a thrown object without a "stack" property. + + try { + throw new Error(msg); + } catch (ex1) { + ex = ex1; + } // null exception name so `Error` isn't prefixed to msg + + + ex.name = null; + var stack = tracekit.computeStackTrace(ex); // stack[0] is `throw new Error(msg)` call itself, we are interested in the frame that was just before that, stack[1] + + var initialCall = isArray(stack.stack) && stack.stack[1]; + var fileurl = initialCall && initialCall.url || ''; + + if (!!this._globalOptions.ignoreUrls.test && this._globalOptions.ignoreUrls.test(fileurl)) { + return; + } + + if (!!this._globalOptions.whitelistUrls.test && !this._globalOptions.whitelistUrls.test(fileurl)) { + return; + } + + if (this._globalOptions.stacktrace || options && options.stacktrace) { + options = objectMerge({ + // fingerprint on msg, not stack trace (legacy behavior, could be + // revisited) + fingerprint: msg, + // since we know this is a synthetic trace, the top N-most frames + // MUST be from Raven.js, so mark them as in_app later by setting + // trimHeadFrames + trimHeadFrames: (options.trimHeadFrames || 0) + 1 + }, options); + + var frames = this._prepareFrames(stack, options); + + data.stacktrace = { + // Sentry expects frames oldest to newest + frames: frames.reverse() + }; + } // Fire away! + + + this._send(data); + + return this; + }, + captureBreadcrumb: function captureBreadcrumb(obj) { + var crumb = objectMerge({ + timestamp: now() / 1000 + }, obj); + + if (isFunction(this._globalOptions.breadcrumbCallback)) { + var result = this._globalOptions.breadcrumbCallback(crumb); + + if (isObject(result) && !isEmptyObject(result)) { + crumb = result; + } else if (result === false) { + return this; + } + } + + this._breadcrumbs.push(crumb); + + if (this._breadcrumbs.length > this._globalOptions.maxBreadcrumbs) { + this._breadcrumbs.shift(); + } + + return this; + }, + addPlugin: function addPlugin(plugin + /*arg1, arg2, ... argN*/ + ) { + var pluginArgs = [].slice.call(arguments, 1); + + this._plugins.push([plugin, pluginArgs]); + + if (this._isRavenInstalled) { + this._drainPlugins(); + } + + return this; + }, + + /* + * Set/clear a user to be sent along with the payload. + * + * @param {object} user An object representing user data [optional] + * @return {Raven} + */ + setUserContext: function setUserContext(user) { + // Intentionally do not merge here since that's an unexpected behavior. + this._globalContext.user = user; + return this; + }, + + /* + * Merge extra attributes to be sent along with the payload. + * + * @param {object} extra An object representing extra data [optional] + * @return {Raven} + */ + setExtraContext: function setExtraContext(extra) { + this._mergeContext('extra', extra); + + return this; + }, + + /* + * Merge tags to be sent along with the payload. + * + * @param {object} tags An object representing tags [optional] + * @return {Raven} + */ + setTagsContext: function setTagsContext(tags) { + this._mergeContext('tags', tags); + + return this; + }, + + /* + * Clear all of the context. + * + * @return {Raven} + */ + clearContext: function clearContext() { + this._globalContext = {}; + return this; + }, + + /* + * Get a copy of the current context. This cannot be mutated. + * + * @return {object} copy of context + */ + getContext: function getContext() { + // lol javascript + return JSON.parse(stringify_1(this._globalContext)); + }, + + /* + * Set environment of application + * + * @param {string} environment Typically something like 'production'. + * @return {Raven} + */ + setEnvironment: function setEnvironment(environment) { + this._globalOptions.environment = environment; + return this; + }, + + /* + * Set release version of application + * + * @param {string} release Typically something like a git SHA to identify version + * @return {Raven} + */ + setRelease: function setRelease(release) { + this._globalOptions.release = release; + return this; + }, + + /* + * Set the dataCallback option + * + * @param {function} callback The callback to run which allows the + * data blob to be mutated before sending + * @return {Raven} + */ + setDataCallback: function setDataCallback(callback) { + var original = this._globalOptions.dataCallback; + this._globalOptions.dataCallback = keepOriginalCallback(original, callback); + return this; + }, + + /* + * Set the breadcrumbCallback option + * + * @param {function} callback The callback to run which allows filtering + * or mutating breadcrumbs + * @return {Raven} + */ + setBreadcrumbCallback: function setBreadcrumbCallback(callback) { + var original = this._globalOptions.breadcrumbCallback; + this._globalOptions.breadcrumbCallback = keepOriginalCallback(original, callback); + return this; + }, + + /* + * Set the shouldSendCallback option + * + * @param {function} callback The callback to run which allows + * introspecting the blob before sending + * @return {Raven} + */ + setShouldSendCallback: function setShouldSendCallback(callback) { + var original = this._globalOptions.shouldSendCallback; + this._globalOptions.shouldSendCallback = keepOriginalCallback(original, callback); + return this; + }, + + /** + * Override the default HTTP transport mechanism that transmits data + * to the Sentry server. + * + * @param {function} transport Function invoked instead of the default + * `makeRequest` handler. + * + * @return {Raven} + */ + setTransport: function setTransport(transport) { + this._globalOptions.transport = transport; + return this; + }, + + /* + * Get the latest raw exception that was captured by Raven. + * + * @return {error} + */ + lastException: function lastException() { + return this._lastCapturedException; + }, + + /* + * Get the last event id + * + * @return {string} + */ + lastEventId: function lastEventId() { + return this._lastEventId; + }, + + /* + * Determine if Raven is setup and ready to go. + * + * @return {boolean} + */ + isSetup: function isSetup() { + if (!this._hasJSON) return false; // needs JSON support + + if (!this._globalServer) { + if (!this.ravenNotConfiguredError) { + this.ravenNotConfiguredError = true; + + this._logDebug('error', 'Error: Raven has not been configured.'); + } + + return false; + } + + return true; + }, + afterLoad: function afterLoad() { + // TODO: remove window dependence? + // Attempt to initialize Raven on load + var RavenConfig = _window$1.RavenConfig; + + if (RavenConfig) { + this.config(RavenConfig.dsn, RavenConfig.config).install(); + } + }, + showReportDialog: function showReportDialog(options) { + if (!_document // doesn't work without a document (React native) + ) return; + options = options || {}; + var lastEventId = options.eventId || this.lastEventId(); + + if (!lastEventId) { + throw new configError('Missing eventId'); + } + + var dsn = options.dsn || this._dsn; + + if (!dsn) { + throw new configError('Missing DSN'); + } + + var encode = encodeURIComponent; + var qs = ''; + qs += '?eventId=' + encode(lastEventId); + qs += '&dsn=' + encode(dsn); + var user = options.user || this._globalContext.user; + + if (user) { + if (user.name) qs += '&name=' + encode(user.name); + if (user.email) qs += '&email=' + encode(user.email); + } + + var globalServer = this._getGlobalServer(this._parseDSN(dsn)); + + var script = _document.createElement('script'); + + script.async = true; + script.src = globalServer + '/api/embed/error-page/' + qs; + + (_document.head || _document.body).appendChild(script); + }, + + /**** Private functions ****/ + _ignoreNextOnError: function _ignoreNextOnError() { + var self = this; + this._ignoreOnError += 1; + setTimeout(function () { + // onerror should trigger before setTimeout + self._ignoreOnError -= 1; + }); + }, + _triggerEvent: function _triggerEvent(eventType, options) { + // NOTE: `event` is a native browser thing, so let's avoid conflicting wiht it + var evt, key; + if (!this._hasDocument) return; + options = options || {}; + eventType = 'raven' + eventType.substr(0, 1).toUpperCase() + eventType.substr(1); + + if (_document.createEvent) { + evt = _document.createEvent('HTMLEvents'); + evt.initEvent(eventType, true, true); + } else { + evt = _document.createEventObject(); + evt.eventType = eventType; + } + + for (key in options) { + if (hasKey(options, key)) { + evt[key] = options[key]; + } + } + + if (_document.createEvent) { + // IE9 if standards + _document.dispatchEvent(evt); + } else { + // IE8 regardless of Quirks or Standards + // IE9 if quirks + try { + _document.fireEvent('on' + evt.eventType.toLowerCase(), evt); + } catch (e) {// Do nothing + } + } + }, + + /** + * Wraps addEventListener to capture UI breadcrumbs + * @param evtName the event name (e.g. "click") + * @returns {Function} + * @private + */ + _breadcrumbEventHandler: function _breadcrumbEventHandler(evtName) { + var self = this; + return function (evt) { + // reset keypress timeout; e.g. triggering a 'click' after + // a 'keypress' will reset the keypress debounce so that a new + // set of keypresses can be recorded + self._keypressTimeout = null; // It's possible this handler might trigger multiple times for the same + // event (e.g. event propagation through node ancestors). Ignore if we've + // already captured the event. + + if (self._lastCapturedEvent === evt) return; + self._lastCapturedEvent = evt; // try/catch both: + // - accessing evt.target (see getsentry/raven-js#838, #768) + // - `htmlTreeAsString` because it's complex, and just accessing the DOM incorrectly + // can throw an exception in some circumstances. + + var target; + + try { + target = htmlTreeAsString(evt.target); + } catch (e) { + target = ''; + } + + self.captureBreadcrumb({ + category: 'ui.' + evtName, + // e.g. ui.click, ui.input + message: target + }); + }; + }, + + /** + * Wraps addEventListener to capture keypress UI events + * @returns {Function} + * @private + */ + _keypressEventHandler: function _keypressEventHandler() { + var self = this, + debounceDuration = 1000; // milliseconds + // TODO: if somehow user switches keypress target before + // debounce timeout is triggered, we will only capture + // a single breadcrumb from the FIRST target (acceptable?) + + return function (evt) { + var target; + + try { + target = evt.target; + } catch (e) { + // just accessing event properties can throw an exception in some rare circumstances + // see: https://github.com/getsentry/raven-js/issues/838 + return; + } + + var tagName = target && target.tagName; // only consider keypress events on actual input elements + // this will disregard keypresses targeting body (e.g. tabbing + // through elements, hotkeys, etc) + + if (!tagName || tagName !== 'INPUT' && tagName !== 'TEXTAREA' && !target.isContentEditable) return; // record first keypress in a series, but ignore subsequent + // keypresses until debounce clears + + var timeout = self._keypressTimeout; + + if (!timeout) { + self._breadcrumbEventHandler('input')(evt); + } + + clearTimeout(timeout); + self._keypressTimeout = setTimeout(function () { + self._keypressTimeout = null; + }, debounceDuration); + }; + }, + + /** + * Captures a breadcrumb of type "navigation", normalizing input URLs + * @param to the originating URL + * @param from the target URL + * @private + */ + _captureUrlChange: function _captureUrlChange(from, to) { + var parsedLoc = parseUrl(this._location.href); + var parsedTo = parseUrl(to); + var parsedFrom = parseUrl(from); // because onpopstate only tells you the "new" (to) value of location.href, and + // not the previous (from) value, we need to track the value of the current URL + // state ourselves + + this._lastHref = to; // Use only the path component of the URL if the URL matches the current + // document (almost all the time when using pushState) + + if (parsedLoc.protocol === parsedTo.protocol && parsedLoc.host === parsedTo.host) to = parsedTo.relative; + if (parsedLoc.protocol === parsedFrom.protocol && parsedLoc.host === parsedFrom.host) from = parsedFrom.relative; + this.captureBreadcrumb({ + category: 'navigation', + data: { + to: to, + from: from + } + }); + }, + _patchFunctionToString: function _patchFunctionToString() { + var self = this; + self._originalFunctionToString = Function.prototype.toString; // eslint-disable-next-line no-extend-native + + Function.prototype.toString = function () { + if (typeof this === 'function' && this.__raven__) { + return self._originalFunctionToString.apply(this.__orig__, arguments); + } + + return self._originalFunctionToString.apply(this, arguments); + }; + }, + _unpatchFunctionToString: function _unpatchFunctionToString() { + if (this._originalFunctionToString) { + // eslint-disable-next-line no-extend-native + Function.prototype.toString = this._originalFunctionToString; + } + }, + + /** + * Wrap timer functions and event targets to catch errors and provide + * better metadata. + */ + _instrumentTryCatch: function _instrumentTryCatch() { + var self = this; + var wrappedBuiltIns = self._wrappedBuiltIns; + + function wrapTimeFn(orig) { + return function (fn, t) { + // preserve arity + // Make a copy of the arguments to prevent deoptimization + // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments + var args = new Array(arguments.length); + + for (var i = 0; i < args.length; ++i) { + args[i] = arguments[i]; + } + + var originalCallback = args[0]; + + if (isFunction(originalCallback)) { + args[0] = self.wrap(originalCallback); + } // IE < 9 doesn't support .call/.apply on setInterval/setTimeout, but it + // also supports only two arguments and doesn't care what this is, so we + // can just call the original function directly. + + + if (orig.apply) { + return orig.apply(this, args); + } else { + return orig(args[0], args[1]); + } + }; + } + + var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; + + function wrapEventTarget(global) { + var proto = _window$1[global] && _window$1[global].prototype; + + if (proto && proto.hasOwnProperty && proto.hasOwnProperty('addEventListener')) { + fill(proto, 'addEventListener', function (orig) { + return function (evtName, fn, capture, secure) { + // preserve arity + try { + if (fn && fn.handleEvent) { + fn.handleEvent = self.wrap(fn.handleEvent); + } + } catch (err) {} // can sometimes get 'Permission denied to access property "handle Event' + // More breadcrumb DOM capture ... done here and not in `_instrumentBreadcrumbs` + // so that we don't have more than one wrapper function + + + var before, clickHandler, keypressHandler; + + if (autoBreadcrumbs && autoBreadcrumbs.dom && (global === 'EventTarget' || global === 'Node')) { + // NOTE: generating multiple handlers per addEventListener invocation, should + // revisit and verify we can just use one (almost certainly) + clickHandler = self._breadcrumbEventHandler('click'); + keypressHandler = self._keypressEventHandler(); + + before = function before(evt) { + // need to intercept every DOM event in `before` argument, in case that + // same wrapped method is re-used for different events (e.g. mousemove THEN click) + // see #724 + if (!evt) return; + var eventType; + + try { + eventType = evt.type; + } catch (e) { + // just accessing event properties can throw an exception in some rare circumstances + // see: https://github.com/getsentry/raven-js/issues/838 + return; + } + + if (eventType === 'click') return clickHandler(evt);else if (eventType === 'keypress') return keypressHandler(evt); + }; + } + + return orig.call(this, evtName, self.wrap(fn, undefined, before), capture, secure); + }; + }, wrappedBuiltIns); + fill(proto, 'removeEventListener', function (orig) { + return function (evt, fn, capture, secure) { + try { + fn = fn && (fn.__raven_wrapper__ ? fn.__raven_wrapper__ : fn); + } catch (e) {// ignore, accessing __raven_wrapper__ will throw in some Selenium environments + } + + return orig.call(this, evt, fn, capture, secure); + }; + }, wrappedBuiltIns); + } + } + + fill(_window$1, 'setTimeout', wrapTimeFn, wrappedBuiltIns); + fill(_window$1, 'setInterval', wrapTimeFn, wrappedBuiltIns); + + if (_window$1.requestAnimationFrame) { + fill(_window$1, 'requestAnimationFrame', function (orig) { + return function (cb) { + return orig(self.wrap(cb)); + }; + }, wrappedBuiltIns); + } // event targets borrowed from bugsnag-js: + // https://github.com/bugsnag/bugsnag-js/blob/master/src/bugsnag.js#L666 + + + var eventTargets = ['EventTarget', 'Window', 'Node', 'ApplicationCache', 'AudioTrackList', 'ChannelMergerNode', 'CryptoOperation', 'EventSource', 'FileReader', 'HTMLUnknownElement', 'IDBDatabase', 'IDBRequest', 'IDBTransaction', 'KeyOperation', 'MediaController', 'MessagePort', 'ModalWindow', 'Notification', 'SVGElementInstance', 'Screen', 'TextTrack', 'TextTrackCue', 'TextTrackList', 'WebSocket', 'WebSocketWorker', 'Worker', 'XMLHttpRequest', 'XMLHttpRequestEventTarget', 'XMLHttpRequestUpload']; + + for (var i = 0; i < eventTargets.length; i++) { + wrapEventTarget(eventTargets[i]); + } + }, + + /** + * Instrument browser built-ins w/ breadcrumb capturing + * - XMLHttpRequests + * - DOM interactions (click/typing) + * - window.location changes + * - console + * + * Can be disabled or individually configured via the `autoBreadcrumbs` config option + */ + _instrumentBreadcrumbs: function _instrumentBreadcrumbs() { + var self = this; + var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; + var wrappedBuiltIns = self._wrappedBuiltIns; + + function wrapProp(prop, xhr) { + if (prop in xhr && isFunction(xhr[prop])) { + fill(xhr, prop, function (orig) { + return self.wrap(orig); + }); // intentionally don't track filled methods on XHR instances + } + } + + if (autoBreadcrumbs.xhr && 'XMLHttpRequest' in _window$1) { + var xhrproto = XMLHttpRequest.prototype; + fill(xhrproto, 'open', function (origOpen) { + return function (method, url) { + // preserve arity + // if Sentry key appears in URL, don't capture + if (isString(url) && url.indexOf(self._globalKey) === -1) { + this.__raven_xhr = { + method: method, + url: url, + status_code: null + }; + } + + return origOpen.apply(this, arguments); + }; + }, wrappedBuiltIns); + fill(xhrproto, 'send', function (origSend) { + return function () { + // preserve arity + var xhr = this; + + function onreadystatechangeHandler() { + if (xhr.__raven_xhr && xhr.readyState === 4) { + try { + // touching statusCode in some platforms throws + // an exception + xhr.__raven_xhr.status_code = xhr.status; + } catch (e) { + /* do nothing */ + } + + self.captureBreadcrumb({ + type: 'http', + category: 'xhr', + data: xhr.__raven_xhr + }); + } + } + + var props = ['onload', 'onerror', 'onprogress']; + + for (var j = 0; j < props.length; j++) { + wrapProp(props[j], xhr); + } + + if ('onreadystatechange' in xhr && isFunction(xhr.onreadystatechange)) { + fill(xhr, 'onreadystatechange', function (orig) { + return self.wrap(orig, undefined, onreadystatechangeHandler); + } + /* intentionally don't track this instrumentation */ + ); + } else { + // if onreadystatechange wasn't actually set by the page on this xhr, we + // are free to set our own and capture the breadcrumb + xhr.onreadystatechange = onreadystatechangeHandler; + } + + return origSend.apply(this, arguments); + }; + }, wrappedBuiltIns); + } + + if (autoBreadcrumbs.xhr && supportsFetch()) { + fill(_window$1, 'fetch', function (origFetch) { + return function () { + // preserve arity + // Make a copy of the arguments to prevent deoptimization + // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments + var args = new Array(arguments.length); + + for (var i = 0; i < args.length; ++i) { + args[i] = arguments[i]; + } + + var fetchInput = args[0]; + var method = 'GET'; + var url; + + if (typeof fetchInput === 'string') { + url = fetchInput; + } else if ('Request' in _window$1 && fetchInput instanceof _window$1.Request) { + url = fetchInput.url; + + if (fetchInput.method) { + method = fetchInput.method; + } + } else { + url = '' + fetchInput; + } // if Sentry key appears in URL, don't capture, as it's our own request + + + if (url.indexOf(self._globalKey) !== -1) { + return origFetch.apply(this, args); + } + + if (args[1] && args[1].method) { + method = args[1].method; + } + + var fetchData = { + method: method, + url: url, + status_code: null + }; + return origFetch.apply(this, args).then(function (response) { + fetchData.status_code = response.status; + self.captureBreadcrumb({ + type: 'http', + category: 'fetch', + data: fetchData + }); + return response; + }); + }; + }, wrappedBuiltIns); + } // Capture breadcrumbs from any click that is unhandled / bubbled up all the way + // to the document. Do this before we instrument addEventListener. + + + if (autoBreadcrumbs.dom && this._hasDocument) { + if (_document.addEventListener) { + _document.addEventListener('click', self._breadcrumbEventHandler('click'), false); + + _document.addEventListener('keypress', self._keypressEventHandler(), false); + } else { + // IE8 Compatibility + _document.attachEvent('onclick', self._breadcrumbEventHandler('click')); + + _document.attachEvent('onkeypress', self._keypressEventHandler()); + } + } // record navigation (URL) changes + // NOTE: in Chrome App environment, touching history.pushState, *even inside + // a try/catch block*, will cause Chrome to output an error to console.error + // borrowed from: https://github.com/angular/angular.js/pull/13945/files + + + var chrome = _window$1.chrome; + var isChromePackagedApp = chrome && chrome.app && chrome.app.runtime; + var hasPushAndReplaceState = !isChromePackagedApp && _window$1.history && history.pushState && history.replaceState; + + if (autoBreadcrumbs.location && hasPushAndReplaceState) { + // TODO: remove onpopstate handler on uninstall() + var oldOnPopState = _window$1.onpopstate; + + _window$1.onpopstate = function () { + var currentHref = self._location.href; + + self._captureUrlChange(self._lastHref, currentHref); + + if (oldOnPopState) { + return oldOnPopState.apply(this, arguments); + } + }; + + var historyReplacementFunction = function historyReplacementFunction(origHistFunction) { + // note history.pushState.length is 0; intentionally not declaring + // params to preserve 0 arity + return function () + /* state, title, url */ + { + var url = arguments.length > 2 ? arguments[2] : undefined; // url argument is optional + + if (url) { + // coerce to string (this is what pushState does) + self._captureUrlChange(self._lastHref, url + ''); + } + + return origHistFunction.apply(this, arguments); + }; + }; + + fill(history, 'pushState', historyReplacementFunction, wrappedBuiltIns); + fill(history, 'replaceState', historyReplacementFunction, wrappedBuiltIns); + } + + if (autoBreadcrumbs.console && 'console' in _window$1 && console.log) { + // console + var consoleMethodCallback = function consoleMethodCallback(msg, data) { + self.captureBreadcrumb({ + message: msg, + level: data.level, + category: 'console' + }); + }; + + each(['debug', 'info', 'warn', 'error', 'log'], function (_, level) { + wrapConsoleMethod(console, level, consoleMethodCallback); + }); + } + }, + _restoreBuiltIns: function _restoreBuiltIns() { + // restore any wrapped builtins + var builtin; + + while (this._wrappedBuiltIns.length) { + builtin = this._wrappedBuiltIns.shift(); + var obj = builtin[0], + name = builtin[1], + orig = builtin[2]; + obj[name] = orig; + } + }, + _restoreConsole: function _restoreConsole() { + // eslint-disable-next-line guard-for-in + for (var method in this._originalConsoleMethods) { + this._originalConsole[method] = this._originalConsoleMethods[method]; + } + }, + _drainPlugins: function _drainPlugins() { + var self = this; // FIX ME TODO + + each(this._plugins, function (_, plugin) { + var installer = plugin[0]; + var args = plugin[1]; + installer.apply(self, [self].concat(args)); + }); + }, + _parseDSN: function _parseDSN(str) { + var m = dsnPattern.exec(str), + dsn = {}, + i = 7; + + try { + while (i--) { + dsn[dsnKeys[i]] = m[i] || ''; + } + } catch (e) { + throw new configError('Invalid DSN: ' + str); + } + + if (dsn.pass && !this._globalOptions.allowSecretKey) { + throw new configError('Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key'); + } + + return dsn; + }, + _getGlobalServer: function _getGlobalServer(uri) { + // assemble the endpoint from the uri pieces + var globalServer = '//' + uri.host + (uri.port ? ':' + uri.port : ''); + + if (uri.protocol) { + globalServer = uri.protocol + ':' + globalServer; + } + + return globalServer; + }, + _handleOnErrorStackInfo: function _handleOnErrorStackInfo() { + // if we are intentionally ignoring errors via onerror, bail out + if (!this._ignoreOnError) { + this._handleStackInfo.apply(this, arguments); + } + }, + _handleStackInfo: function _handleStackInfo(stackInfo, options) { + var frames = this._prepareFrames(stackInfo, options); + + this._triggerEvent('handle', { + stackInfo: stackInfo, + options: options + }); + + this._processException(stackInfo.name, stackInfo.message, stackInfo.url, stackInfo.lineno, frames, options); + }, + _prepareFrames: function _prepareFrames(stackInfo, options) { + var self = this; + var frames = []; + + if (stackInfo.stack && stackInfo.stack.length) { + each(stackInfo.stack, function (i, stack) { + var frame = self._normalizeFrame(stack, stackInfo.url); + + if (frame) { + frames.push(frame); + } + }); // e.g. frames captured via captureMessage throw + + if (options && options.trimHeadFrames) { + for (var j = 0; j < options.trimHeadFrames && j < frames.length; j++) { + frames[j].in_app = false; + } + } + } + + frames = frames.slice(0, this._globalOptions.stackTraceLimit); + return frames; + }, + _normalizeFrame: function _normalizeFrame(frame, stackInfoUrl) { + // normalize the frames data + var normalized = { + filename: frame.url, + lineno: frame.line, + colno: frame.column, + function: frame.func || '?' + }; // Case when we don't have any information about the error + // E.g. throwing a string or raw object, instead of an `Error` in Firefox + // Generating synthetic error doesn't add any value here + // + // We should probably somehow let a user know that they should fix their code + + if (!frame.url) { + normalized.filename = stackInfoUrl; // fallback to whole stacks url from onerror handler + } + + normalized.in_app = !( // determine if an exception came from outside of our app + // first we check the global includePaths list. + !!this._globalOptions.includePaths.test && !this._globalOptions.includePaths.test(normalized.filename) || // Now we check for fun, if the function name is Raven or TraceKit + /(Raven|TraceKit)\./.test(normalized['function']) || // finally, we do a last ditch effort and check for raven.min.js + /raven\.(min\.)?js$/.test(normalized.filename)); + return normalized; + }, + _processException: function _processException(type, message, fileurl, lineno, frames, options) { + var prefixedMessage = (type ? type + ': ' : '') + (message || ''); + + if (!!this._globalOptions.ignoreErrors.test && (this._globalOptions.ignoreErrors.test(message) || this._globalOptions.ignoreErrors.test(prefixedMessage))) { + return; + } + + var stacktrace; + + if (frames && frames.length) { + fileurl = frames[0].filename || fileurl; // Sentry expects frames oldest to newest + // and JS sends them as newest to oldest + + frames.reverse(); + stacktrace = { + frames: frames + }; + } else if (fileurl) { + stacktrace = { + frames: [{ + filename: fileurl, + lineno: lineno, + in_app: true + }] + }; + } + + if (!!this._globalOptions.ignoreUrls.test && this._globalOptions.ignoreUrls.test(fileurl)) { + return; + } + + if (!!this._globalOptions.whitelistUrls.test && !this._globalOptions.whitelistUrls.test(fileurl)) { + return; + } + + var data = objectMerge({ + // sentry.interfaces.Exception + exception: { + values: [{ + type: type, + value: message, + stacktrace: stacktrace + }] + }, + culprit: fileurl + }, options); // Fire away! + + this._send(data); + }, + _trimPacket: function _trimPacket(data) { + // For now, we only want to truncate the two different messages + // but this could/should be expanded to just trim everything + var max = this._globalOptions.maxMessageLength; + + if (data.message) { + data.message = truncate(data.message, max); + } + + if (data.exception) { + var exception = data.exception.values[0]; + exception.value = truncate(exception.value, max); + } + + var request = data.request; + + if (request) { + if (request.url) { + request.url = truncate(request.url, this._globalOptions.maxUrlLength); + } + + if (request.Referer) { + request.Referer = truncate(request.Referer, this._globalOptions.maxUrlLength); + } + } + + if (data.breadcrumbs && data.breadcrumbs.values) this._trimBreadcrumbs(data.breadcrumbs); + return data; + }, + + /** + * Truncate breadcrumb values (right now just URLs) + */ + _trimBreadcrumbs: function _trimBreadcrumbs(breadcrumbs) { + // known breadcrumb properties with urls + // TODO: also consider arbitrary prop values that start with (https?)?:// + var urlProps = ['to', 'from', 'url'], + urlProp, + crumb, + data; + + for (var i = 0; i < breadcrumbs.values.length; ++i) { + crumb = breadcrumbs.values[i]; + if (!crumb.hasOwnProperty('data') || !isObject(crumb.data) || objectFrozen(crumb.data)) continue; + data = objectMerge({}, crumb.data); + + for (var j = 0; j < urlProps.length; ++j) { + urlProp = urlProps[j]; + + if (data.hasOwnProperty(urlProp) && data[urlProp]) { + data[urlProp] = truncate(data[urlProp], this._globalOptions.maxUrlLength); + } + } + + breadcrumbs.values[i].data = data; + } + }, + _getHttpData: function _getHttpData() { + if (!this._hasNavigator && !this._hasDocument) return; + var httpData = {}; + + if (this._hasNavigator && _navigator.userAgent) { + httpData.headers = { + 'User-Agent': navigator.userAgent + }; + } // Check in `window` instead of `document`, as we may be in ServiceWorker environment + + + if (_window$1.location && _window$1.location.href) { + httpData.url = _window$1.location.href; + } + + if (this._hasDocument && _document.referrer) { + if (!httpData.headers) httpData.headers = {}; + httpData.headers.Referer = _document.referrer; + } + + return httpData; + }, + _resetBackoff: function _resetBackoff() { + this._backoffDuration = 0; + this._backoffStart = null; + }, + _shouldBackoff: function _shouldBackoff() { + return this._backoffDuration && now() - this._backoffStart < this._backoffDuration; + }, + + /** + * Returns true if the in-process data payload matches the signature + * of the previously-sent data + * + * NOTE: This has to be done at this level because TraceKit can generate + * data from window.onerror WITHOUT an exception object (IE8, IE9, + * other old browsers). This can take the form of an "exception" + * data object with a single frame (derived from the onerror args). + */ + _isRepeatData: function _isRepeatData(current) { + var last = this._lastData; + if (!last || current.message !== last.message || // defined for captureMessage + current.culprit !== last.culprit // defined for captureException/onerror + ) return false; // Stacktrace interface (i.e. from captureMessage) + + if (current.stacktrace || last.stacktrace) { + return isSameStacktrace(current.stacktrace, last.stacktrace); + } else if (current.exception || last.exception) { + // Exception interface (i.e. from captureException/onerror) + return isSameException(current.exception, last.exception); + } + + return true; + }, + _setBackoffState: function _setBackoffState(request) { + // If we are already in a backoff state, don't change anything + if (this._shouldBackoff()) { + return; + } + + var status = request.status; // 400 - project_id doesn't exist or some other fatal + // 401 - invalid/revoked dsn + // 429 - too many requests + + if (!(status === 400 || status === 401 || status === 429)) return; + var retry; + + try { + // If Retry-After is not in Access-Control-Expose-Headers, most + // browsers will throw an exception trying to access it + if (supportsFetch()) { + retry = request.headers.get('Retry-After'); + } else { + retry = request.getResponseHeader('Retry-After'); + } // Retry-After is returned in seconds + + + retry = parseInt(retry, 10) * 1000; + } catch (e) { + /* eslint no-empty:0 */ + } + + this._backoffDuration = retry ? // If Sentry server returned a Retry-After value, use it + retry : // Otherwise, double the last backoff duration (starts at 1 sec) + this._backoffDuration * 2 || 1000; + this._backoffStart = now(); + }, + _send: function _send(data) { + var globalOptions = this._globalOptions; + + var baseData = { + project: this._globalProject, + logger: globalOptions.logger, + platform: 'javascript' + }, + httpData = this._getHttpData(); + + if (httpData) { + baseData.request = httpData; + } // HACK: delete `trimHeadFrames` to prevent from appearing in outbound payload + + + if (data.trimHeadFrames) delete data.trimHeadFrames; + data = objectMerge(baseData, data); // Merge in the tags and extra separately since objectMerge doesn't handle a deep merge + + data.tags = objectMerge(objectMerge({}, this._globalContext.tags), data.tags); + data.extra = objectMerge(objectMerge({}, this._globalContext.extra), data.extra); // Send along our own collected metadata with extra + + data.extra['session:duration'] = now() - this._startTime; + + if (this._breadcrumbs && this._breadcrumbs.length > 0) { + // intentionally make shallow copy so that additions + // to breadcrumbs aren't accidentally sent in this request + data.breadcrumbs = { + values: [].slice.call(this._breadcrumbs, 0) + }; + } + + if (this._globalContext.user) { + // sentry.interfaces.User + data.user = this._globalContext.user; + } // Include the environment if it's defined in globalOptions + + + if (globalOptions.environment) data.environment = globalOptions.environment; // Include the release if it's defined in globalOptions + + if (globalOptions.release) data.release = globalOptions.release; // Include server_name if it's defined in globalOptions + + if (globalOptions.serverName) data.server_name = globalOptions.serverName; // Cleanup empty properties before sending them to the server + + Object.keys(data).forEach(function (key) { + if (data[key] == null || data[key] === '' || isEmptyObject(data[key])) { + delete data[key]; + } + }); + + if (isFunction(globalOptions.dataCallback)) { + data = globalOptions.dataCallback(data) || data; + } // Why?????????? + + + if (!data || isEmptyObject(data)) { + return; + } // Check if the request should be filtered or not + + + if (isFunction(globalOptions.shouldSendCallback) && !globalOptions.shouldSendCallback(data)) { + return; + } // Backoff state: Sentry server previously responded w/ an error (e.g. 429 - too many requests), + // so drop requests until "cool-off" period has elapsed. + + + if (this._shouldBackoff()) { + this._logDebug('warn', 'Raven dropped error due to backoff: ', data); + + return; + } + + if (typeof globalOptions.sampleRate === 'number') { + if (Math.random() < globalOptions.sampleRate) { + this._sendProcessedPayload(data); + } + } else { + this._sendProcessedPayload(data); + } + }, + _getUuid: function _getUuid() { + return uuid4(); + }, + _sendProcessedPayload: function _sendProcessedPayload(data, callback) { + var self = this; + var globalOptions = this._globalOptions; + if (!this.isSetup()) return; // Try and clean up the packet before sending by truncating long values + + data = this._trimPacket(data); // ideally duplicate error testing should occur *before* dataCallback/shouldSendCallback, + // but this would require copying an un-truncated copy of the data packet, which can be + // arbitrarily deep (extra_data) -- could be worthwhile? will revisit + + if (!this._globalOptions.allowDuplicates && this._isRepeatData(data)) { + this._logDebug('warn', 'Raven dropped repeat event: ', data); + + return; + } // Send along an event_id if not explicitly passed. + // This event_id can be used to reference the error within Sentry itself. + // Set lastEventId after we know the error should actually be sent + + + this._lastEventId = data.event_id || (data.event_id = this._getUuid()); // Store outbound payload after trim + + this._lastData = data; + + this._logDebug('debug', 'Raven about to send:', data); + + var auth = { + sentry_version: '7', + sentry_client: 'raven-js/' + this.VERSION, + sentry_key: this._globalKey + }; + + if (this._globalSecret) { + auth.sentry_secret = this._globalSecret; + } + + var exception = data.exception && data.exception.values[0]; // only capture 'sentry' breadcrumb is autoBreadcrumbs is truthy + + if (this._globalOptions.autoBreadcrumbs && this._globalOptions.autoBreadcrumbs.sentry) { + this.captureBreadcrumb({ + category: 'sentry', + message: exception ? (exception.type ? exception.type + ': ' : '') + exception.value : data.message, + event_id: data.event_id, + level: data.level || 'error' // presume error unless specified + + }); + } + + var url = this._globalEndpoint; + + (globalOptions.transport || this._makeRequest).call(this, { + url: url, + auth: auth, + data: data, + options: globalOptions, + onSuccess: function success() { + self._resetBackoff(); + + self._triggerEvent('success', { + data: data, + src: url + }); + + callback && callback(); + }, + onError: function failure(error) { + self._logDebug('error', 'Raven transport failed to send: ', error); + + if (error.request) { + self._setBackoffState(error.request); + } + + self._triggerEvent('failure', { + data: data, + src: url + }); + + error = error || new Error('Raven send failed (no additional details provided)'); + callback && callback(error); + } + }); + }, + _makeRequest: function _makeRequest(opts) { + // Auth is intentionally sent as part of query string (NOT as custom HTTP header) to avoid preflight CORS requests + var url = opts.url + '?' + urlencode(opts.auth); + var evaluatedHeaders = null; + var evaluatedFetchParameters = {}; + + if (opts.options.headers) { + evaluatedHeaders = this._evaluateHash(opts.options.headers); + } + + if (opts.options.fetchParameters) { + evaluatedFetchParameters = this._evaluateHash(opts.options.fetchParameters); + } + + if (supportsFetch()) { + evaluatedFetchParameters.body = stringify_1(opts.data); + var defaultFetchOptions = objectMerge({}, this._fetchDefaults); + var fetchOptions = objectMerge(defaultFetchOptions, evaluatedFetchParameters); + + if (evaluatedHeaders) { + fetchOptions.headers = evaluatedHeaders; + } + + return _window$1.fetch(url, fetchOptions).then(function (response) { + if (response.ok) { + opts.onSuccess && opts.onSuccess(); + } else { + var error = new Error('Sentry error code: ' + response.status); // It's called request only to keep compatibility with XHR interface + // and not add more redundant checks in setBackoffState method + + error.request = response; + opts.onError && opts.onError(error); + } + })['catch'](function () { + opts.onError && opts.onError(new Error('Sentry error code: network unavailable')); + }); + } + + var request = _window$1.XMLHttpRequest && new _window$1.XMLHttpRequest(); + if (!request) return; // if browser doesn't support CORS (e.g. IE7), we are out of luck + + var hasCORS = 'withCredentials' in request || typeof XDomainRequest !== 'undefined'; + if (!hasCORS) return; + + if ('withCredentials' in request) { + request.onreadystatechange = function () { + if (request.readyState !== 4) { + return; + } else if (request.status === 200) { + opts.onSuccess && opts.onSuccess(); + } else if (opts.onError) { + var err = new Error('Sentry error code: ' + request.status); + err.request = request; + opts.onError(err); + } + }; + } else { + request = new XDomainRequest(); // xdomainrequest cannot go http -> https (or vice versa), + // so always use protocol relative + + url = url.replace(/^https?:/, ''); // onreadystatechange not supported by XDomainRequest + + if (opts.onSuccess) { + request.onload = opts.onSuccess; + } + + if (opts.onError) { + request.onerror = function () { + var err = new Error('Sentry error code: XDomainRequest'); + err.request = request; + opts.onError(err); + }; + } + } + + request.open('POST', url); + + if (evaluatedHeaders) { + each(evaluatedHeaders, function (key, value) { + request.setRequestHeader(key, value); + }); + } + + request.send(stringify_1(opts.data)); + }, + _evaluateHash: function _evaluateHash(hash) { + var evaluated = {}; + + for (var key in hash) { + if (hash.hasOwnProperty(key)) { + var value = hash[key]; + evaluated[key] = typeof value === 'function' ? value() : value; + } + } + + return evaluated; + }, + _logDebug: function _logDebug(level) { + if (this._originalConsoleMethods[level] && this.debug) { + // In IE<10 console methods do not have their own 'apply' method + Function.prototype.apply.call(this._originalConsoleMethods[level], this._originalConsole, [].slice.call(arguments, 1)); + } + }, + _mergeContext: function _mergeContext(key, context) { + if (isUndefined(context)) { + delete this._globalContext[key]; + } else { + this._globalContext[key] = objectMerge(this._globalContext[key] || {}, context); + } + } +}; // Deprecations + +Raven$1.prototype.setUser = Raven$1.prototype.setUserContext; +Raven$1.prototype.setReleaseContext = Raven$1.prototype.setRelease; +var raven = Raven$1; + +/** + * Enforces a single instance of the Raven client, and the + * main entry point for Raven. If you are a consumer of the + * Raven library, you SHOULD load this file (vs raven.js). + **/ +// This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) + +var _window = typeof window !== 'undefined' ? window : typeof commonjsGlobal !== 'undefined' ? commonjsGlobal : typeof self !== 'undefined' ? self : {}; + +var _Raven = _window.Raven; +var Raven = new raven(); +/* + * Allow multiple versions of Raven to be installed. + * Strip Raven from the global context and returns the instance. + * + * @return {Raven} + */ + +Raven.noConflict = function () { + _window.Raven = _Raven; + return Raven; +}; + +Raven.afterLoad(); +var singleton = Raven; + +/** + * Angular.js plugin + * + * Provides an $exceptionHandler for Angular.js + */ + +var wrappedCallback$1 = utils.wrappedCallback; // See https://github.com/angular/angular.js/blob/v1.4.7/src/minErr.js + +var angularPattern = /^\[((?:[$a-zA-Z0-9]+:)?(?:[$a-zA-Z0-9]+))\] (.*?)\n?(\S+)$/; +var moduleName = 'ngRaven'; + +function angularPlugin(Raven, angular) { + angular = angular || window.angular; + if (!angular) return; + + function RavenProvider() { + this.$get = ['$window', function ($window) { + return Raven; + }]; + } + + function ExceptionHandlerProvider($provide) { + $provide.decorator('$exceptionHandler', ['Raven', '$delegate', exceptionHandler]); + } + + function exceptionHandler(R, $delegate) { + return function (ex, cause) { + R.captureException(ex, { + extra: { + cause: cause + } + }); + $delegate(ex, cause); + }; + } + + angular.module(moduleName, []).provider('Raven', RavenProvider).config(['$provide', ExceptionHandlerProvider]); + Raven.setDataCallback(wrappedCallback$1(function (data) { + return angularPlugin._normalizeData(data); + })); +} + +angularPlugin._normalizeData = function (data) { + // We only care about mutating an exception + var exception = data.exception; + + if (exception) { + exception = exception.values[0]; + var matches = angularPattern.exec(exception.value); + + if (matches) { + // This type now becomes something like: $rootScope:inprog + exception.type = matches[1]; + exception.value = matches[2]; + data.message = exception.type + ': ' + exception.value; // auto set a new tag specifically for the angular error url + + data.extra.angularDocs = matches[3].substr(0, 250); + } + } + + return data; +}; + +angularPlugin.moduleName = moduleName; +var angular = angularPlugin; + +/** + * console plugin + * + * Monkey patches console.* calls into Sentry messages with + * their appropriate log levels. (Experimental) + * + * Options: + * + * `levels`: An array of levels (methods on `console`) to report to Sentry. + * Defaults to debug, info, warn, and error. + */ + +var wrapConsoleMethod$1 = console$1.wrapMethod; + +function consolePlugin(Raven, console, pluginOptions) { + console = console || window.console || {}; + pluginOptions = pluginOptions || {}; + var logLevels = pluginOptions.levels || ['debug', 'info', 'warn', 'error']; + if ('assert' in console) logLevels.push('assert'); + + var callback = function callback(msg, data) { + Raven.captureMessage(msg, data); + }; + + var level = logLevels.pop(); + + while (level) { + wrapConsoleMethod$1(console, level, callback); + level = logLevels.pop(); + } +} + +var console$3 = consolePlugin; + +/*global define*/ + +/** + * require.js plugin + * + * Automatically wrap define/require callbacks. (Experimental) + */ + +function requirePlugin(Raven) { + if (typeof undefined === 'function' && undefined.amd) { + window.define = Raven.wrap({ + deep: false + }, undefined); + window.require = Raven.wrap({ + deep: false + }, commonjsRequire); + } +} + +var require_1 = requirePlugin; + +/* This file was generated by './scripts/generate-plugin-combinations.js'! */ + +singleton.addPlugin(angular).addPlugin(console$3).addPlugin(require_1); +var angular_console_require = {}; + +return angular_console_require; + +}))); diff --git a/dist/angular,console,require/raven.min.js b/dist/angular,console,require/raven.min.js new file mode 100644 index 000000000000..88851c755ce8 --- /dev/null +++ b/dist/angular,console,require/raven.min.js @@ -0,0 +1,3 @@ +/*! Raven.js 3.22.2 (1b6187b) | github.com/getsentry/raven-js */ +!function(a,b){"object"==typeof exports&&"undefined"!=typeof module?module.exports=b():"function"==typeof define&&define.amd?define(b):a.Raven=b()}(this,function(){"use strict";function a(a,b){return b={exports:{}},a(b,b.exports),b.exports}function b(a){return(b="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(a){return typeof a}:function(a){return a&&"function"==typeof Symbol&&a.constructor===Symbol&&a!==Symbol.prototype?"symbol":typeof a})(a)}function c(a){return"object"===b(a)&&null!==a}function d(a){switch({}.toString.call(a)){case"[object Error]":return!0;case"[object Exception]":return!0;case"[object DOMException]":return!0;default:return a instanceof Error}}function e(a){return l()&&"[object ErrorEvent]"==={}.toString.call(a)}function f(a){return void 0===a}function g(a){return"function"==typeof a}function h(a){return"[object Object]"===Object.prototype.toString.call(a)}function i(a){return"[object String]"===Object.prototype.toString.call(a)}function j(a){return"[object Array]"===Object.prototype.toString.call(a)}function k(a){if(!h(a))return!1;for(var b in a)if(a.hasOwnProperty(b))return!1;return!0}function l(){try{return new ErrorEvent(""),!0}catch(a){return!1}}function m(){if(!("fetch"in P))return!1;try{return new Headers,new Request(""),new Response,!0}catch(a){return!1}}function n(a){function b(b,c){var d=a(b)||b;return c?c(d)||d:d}return b}function o(a,b){var c,d;if(f(a.length))for(c in a)s(a,c)&&b.call(null,c,a[c]);else if(d=a.length)for(c=0;c ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function y(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&i(b))for(c=b.split(/\s+/),f=0;f=0;--b)l[b]===a&&l.splice(b,1)}function c(){g(),l=[]}function d(a,b){var c=null;if(!b||R.collectWindowErrors){for(var d in l)if(l.hasOwnProperty(d))try{l[d].apply(null,[a].concat(T.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function e(a,b,c,e,f){var g=null,i=Q.isErrorEvent(f)?f.error:f,k=Q.isErrorEvent(a)?a.message:a;if(o)R.computeStackTrace.augmentStackTraceWithInitialElement(o,b,c,k),h();else if(i&&Q.isError(i))g=R.computeStackTrace(i),d(g,!0);else{var l,m={url:b,line:c,column:e},n=void 0;if("[object String]"==={}.toString.call(k)){var l=k.match(V);l&&(n=l[1],k=l[2])}m.func=U,g={name:n,message:k,url:F(),stack:[m]},d(g,!0)}return!!j&&j.apply(this,arguments)}function f(){k||(j=S.onerror,S.onerror=e,k=!0)}function g(){k&&(S.onerror=j,k=!1,j=void 0)}function h(){var a=o,b=m;m=null,o=null,n=null,d.apply(null,[a,!1].concat(b))}function i(a,b){var c=T.call(arguments,1);if(o){if(n===a)return;h()}var d=R.computeStackTrace(a);if(o=d,n=a,m=c,setTimeout(function(){n===a&&h()},d.incomplete?2e3:0),b!==!1)throw a}var j,k,l=[],m=null,n=null,o=null;return i.subscribe=a,i.unsubscribe=b,i.uninstall=c,i}(),R.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,d,e=/^\s*at (.*?) ?\(((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,f=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|\[native).*?|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,g=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,h=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,i=/\((\S*)(?::(\d+))(?::(\d+))\)/,j=a.stack.split("\n"),k=[],l=(/^(.*) is undefined$/.exec(a.message),0),m=j.length;l eval")>-1;o&&(b=h.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==l||c[5]||"undefined"==typeof a.columnNumber||(k[0].column=a.columnNumber+1),d={url:c[3],func:c[1]||U,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}!d.func&&d.line&&(d.func=U),k.push(d)}return k.length?{name:a.name,message:a.message,url:F(),stack:k}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=U),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,e){for(var f,g,h=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,i=[],j={},k=!1,l=c.caller;l&&!k;l=l.caller)if(l!==d&&l!==R.report){if(g={url:null,func:U,line:null,column:null},l.name?g.func=l.name:(f=h.exec(l.toString()))&&(g.func=f[1]),"undefined"==typeof g.func)try{g.func=f.input.substring(0,f.input.indexOf("{"))}catch(m){}j[""+l]?k=!0:j[""+l]=!0,i.push(g)}e&&i.splice(0,e);var n={name:a.name,message:a.message,url:F(),stack:i};return b(n,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),n}function d(b,d){var e=null;d=null==d?0:+d;try{if(e=a(b))return e}catch(f){if(R.debug)throw f}try{if(e=c(b,d+1))return e}catch(f){if(R.debug)throw f}return{name:b.name,message:b.message,url:F()}}return d.augmentStackTraceWithInitialElement=b,d.computeStackTraceFromStackProp=a,d}();var W=R,X=a(function(a,b){function c(a,b){for(var c=0;c0){var i=c(d,this);~i?d.splice(i+1):d.push(this),~i?f.splice(i,1/0,g):f.push(g),~c(d,h)&&(h=b.call(this,g,h))}else d.push(h);return null==a?h instanceof Error?e(h):h:a.call(this,g,h)}}b=a.exports=d,b.getSerialize=f});G.prototype=new Error,G.prototype.constructor=G;var Y=G,Z=function(a,b,c){var d=a[b],e=a;if(b in a){var f="warn"===b?"warning":b;a[b]=function(){var a=[].slice.call(arguments),g=Q.safeJoin(a," "),h={level:f,logger:"console",extra:{arguments:a}};"assert"===b?a[0]===!1&&(g="Assertion failed: "+(Q.safeJoin(a.slice(1)," ")||"console.assert"),h.extra.arguments=a.slice(1),c&&c(g,h)):c&&c(g,h),d&&Function.prototype.apply.call(d,e,a)}}},$={wrapMethod:Z},_=Q.isError,aa=Q.isObject,ba=Q.isErrorEvent,ca=Q.isUndefined,da=Q.isFunction,ea=Q.isString,fa=Q.isArray,ga=Q.isEmptyObject,ha=Q.each,ia=Q.objectMerge,ja=Q.truncate,ka=Q.objectFrozen,la=Q.hasKey,ma=Q.joinRegExp,na=Q.urlencode,oa=Q.uuid4,pa=Q.htmlTreeAsString,qa=Q.isSameException,ra=Q.isSameStacktrace,sa=Q.parseUrl,ta=Q.fill,ua=Q.supportsFetch,va=$.wrapMethod,wa="source protocol user pass host port path".split(" "),xa=/^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/,ya="undefined"!=typeof window?window:"undefined"!=typeof N?N:"undefined"!=typeof self?self:{},za=ya.document,Aa=ya.navigator;J.prototype={VERSION:"3.22.2",debug:!1,TraceKit:W,config:function(a,b){var c=this;if(c.i)return this.D("error","Error: Raven has already been configured"),c;if(!a)return c;var d=c.m;b&&ha(b,function(a,b){"tags"===a||"extra"===a||"user"===a?c.l[a]=b:d[a]=b}),c.setDSN(a),d.ignoreErrors.push(/^Script error\.?$/),d.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/),d.ignoreErrors=ma(d.ignoreErrors),d.ignoreUrls=!!d.ignoreUrls.length&&ma(d.ignoreUrls),d.whitelistUrls=!!d.whitelistUrls.length&&ma(d.whitelistUrls),d.includePaths=ma(d.includePaths),d.maxBreadcrumbs=Math.max(0,Math.min(d.maxBreadcrumbs||100,100));var e={xhr:!0,console:!0,dom:!0,location:!0,sentry:!0},f=d.autoBreadcrumbs;"[object Object]"==={}.toString.call(f)?f=ia(e,f):f!==!1&&(f=e),d.autoBreadcrumbs=f;var g={tryCatch:!0},h=d.instrument;return"[object Object]"==={}.toString.call(h)?h=ia(g,h):h!==!1&&(h=g),d.instrument=h,W.collectWindowErrors=!!d.collectWindowErrors,c},install:function(){var a=this;return a.isSetup()&&!a.p&&(W.report.subscribe(function(){a.E.apply(a,arguments)}),a.F(),a.m.instrument&&a.m.instrument.tryCatch&&a.G(),a.m.autoBreadcrumbs&&a.H(),a.I(),a.p=!0),Error.stackTraceLimit=a.m.stackTraceLimit,this},setDSN:function(a){var b=this,c=b.J(a),d=c.path.lastIndexOf("/"),e=c.path.substr(1,d);b.K=a,b.j=c.user,b.L=c.pass&&c.pass.substr(1),b.k=c.path.substr(d+1),b.i=b.M(c),b.N=b.i+"/"+e+"api/"+b.k+"/store/",this.A()},context:function(a,b,c){return da(a)&&(c=b||[],b=a,a=void 0),this.wrap(a,b).apply(this,c)},wrap:function(a,b,c){function d(){var d=[],f=arguments.length,g=!a||a&&a.deep!==!1;for(c&&da(c)&&c.apply(this,arguments);f--;)d[f]=g?e.wrap(a,arguments[f]):arguments[f];try{return b.apply(this,d)}catch(h){throw e.O(),e.captureException(h,a),h}}var e=this;if(ca(b)&&!da(a))return a;if(da(a)&&(b=a,a=void 0),!da(b))return b;try{if(b.a)return b;if(b.P)return b.P}catch(f){return b}for(var g in b)la(b,g)&&(d[g]=b[g]);return d.prototype=b.prototype,b.P=d,d.a=!0,d.b=b,d},uninstall:function(){return W.report.uninstall(),this.Q(),this.R(),this.S(),Error.stackTraceLimit=this.q,this.p=!1,this},captureException:function(a,b){b=ia({trimHeadFrames:0},b?b:{});var c=!_(a),d=!ba(a),e=ba(a)&&!a.error;if(c&&d||e)return this.captureMessage(a,ia(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}));ba(a)&&(a=a.error),this.f=a;try{var f=W.computeStackTrace(a);this.T(f,b)}catch(g){if(a!==g)throw g}return this},captureMessage:function(a,b){if(!this.m.ignoreErrors.test||!this.m.ignoreErrors.test(a)){b=b||{};var c,d=ia({message:a+""},b);try{throw new Error(a)}catch(e){c=e}c.name=null;var f=W.computeStackTrace(c),g=fa(f.stack)&&f.stack[1],h=g&&g.url||"";if((!this.m.ignoreUrls.test||!this.m.ignoreUrls.test(h))&&(!this.m.whitelistUrls.test||this.m.whitelistUrls.test(h))){if(this.m.stacktrace||b&&b.stacktrace){b=ia({fingerprint:a,trimHeadFrames:(b.trimHeadFrames||0)+1},b);var i=this.U(f,b);d.stacktrace={frames:i.reverse()}}return this.V(d),this}}},captureBreadcrumb:function(a){var b=ia({timestamp:H()/1e3},a);if(da(this.m.breadcrumbCallback)){var c=this.m.breadcrumbCallback(b);if(aa(c)&&!ga(c))b=c;else if(c===!1)return this}return this.w.push(b),this.w.length>this.m.maxBreadcrumbs&&this.w.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.t.push([a,b]),this.p&&this.I(),this},setUserContext:function(a){return this.l.user=a,this},setExtraContext:function(a){return this.W("extra",a),this},setTagsContext:function(a){return this.W("tags",a),this},clearContext:function(){return this.l={},this},getContext:function(){return JSON.parse(X(this.l))},setEnvironment:function(a){return this.m.environment=a,this},setRelease:function(a){return this.m.release=a,this},setDataCallback:function(a){var b=this.m.dataCallback;return this.m.dataCallback=I(b,a),this},setBreadcrumbCallback:function(a){var b=this.m.breadcrumbCallback;return this.m.breadcrumbCallback=I(b,a),this},setShouldSendCallback:function(a){var b=this.m.shouldSendCallback;return this.m.shouldSendCallback=I(b,a),this},setTransport:function(a){return this.m.transport=a,this},lastException:function(){return this.f},lastEventId:function(){return this.h},isSetup:function(){return!!this.c&&(!!this.i||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.D("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=ya.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(za){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new Y("Missing eventId");var c=a.dsn||this.K;if(!c)throw new Y("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.l.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.M(this.J(c)),h=za.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(za.head||za.body).appendChild(h)}},O:function(){var a=this;this.o+=1,setTimeout(function(){a.o-=1})},X:function(a,b){var c,d;if(this.d){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),za.createEvent?(c=za.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=za.createEventObject(),c.eventType=a);for(d in b)la(b,d)&&(c[d]=b[d]);if(za.createEvent)za.dispatchEvent(c);else try{za.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},Y:function(a){var b=this;return function(c){if(b.Z=null,b.x!==c){b.x=c;var d;try{d=pa(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},$:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.Z;g||a.Y("input")(c),clearTimeout(g),a.Z=setTimeout(function(){a.Z=null},b)}}},_:function(a,b){var c=sa(this.y.href),d=sa(b),e=sa(a);this.z=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},F:function(){var a=this;a.aa=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.a?a.aa.apply(this.b,arguments):a.aa.apply(this,arguments)}},Q:function(){this.aa&&(Function.prototype.toString=this.aa)},G:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b._(b.z,c+""),a.apply(this,arguments)}};ta(history,"pushState",j,d),ta(history,"replaceState",j,d)}if(c.console&&"console"in ya&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};ha(["debug","info","warn","error","log"],function(a,b){va(console,b,k)})}},R:function(){for(var a;this.v.length;){a=this.v.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},S:function(){for(var a in this.s)this.r[a]=this.s[a]},I:function(){var a=this;ha(this.t,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},J:function(a){var b=xa.exec(a),c={},d=7;try{for(;d--;)c[wa[d]]=b[d]||""}catch(e){throw new Y("Invalid DSN: "+a)}if(c.pass&&!this.m.allowSecretKey)throw new Y("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},M:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},E:function(){this.o||this.T.apply(this,arguments)},T:function(a,b){var c=this.U(a,b);this.X("handle",{stackInfo:a,options:b}),this.ca(a.name,a.message,a.url,a.lineno,c,b)},U:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(ha(a.stack,function(b,e){var f=c.da(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.w,0)}),this.l.user&&(a.user=this.l.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||ga(a[b]))&&delete a[b]}),da(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!ga(a)&&(!da(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.ja()?void this.D("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() href parsing trick because React Native and other +// environments where DOM might not be available + + +function parseUrl$1(url) { + if (typeof url !== 'string') return {}; + var match = url.match(/^(([^:\/?#]+):)?(\/\/([^\/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?$/); // coerce to undefined values to empty string so we don't get 'undefined' + + var query = match[6] || ''; + var fragment = match[8] || ''; + return { + protocol: match[2], + host: match[4], + path: match[5], + relative: match[5] + query + fragment // everything minus origin + + }; +} + +function uuid4$1() { + var crypto = _window$3.crypto || _window$3.msCrypto; + + if (!isUndefined$1(crypto) && crypto.getRandomValues) { + // Use window.crypto API if available + // eslint-disable-next-line no-undef + var arr = new Uint16Array(8); + crypto.getRandomValues(arr); // set 4 in byte 7 + + arr[3] = arr[3] & 0xfff | 0x4000; // set 2 most significant bits of byte 9 to '10' + + arr[4] = arr[4] & 0x3fff | 0x8000; + + var pad = function pad(num) { + var v = num.toString(16); + + while (v.length < 4) { + v = '0' + v; + } + + return v; + }; + + return pad(arr[0]) + pad(arr[1]) + pad(arr[2]) + pad(arr[3]) + pad(arr[4]) + pad(arr[5]) + pad(arr[6]) + pad(arr[7]); + } else { + // http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/2117523#2117523 + return 'xxxxxxxxxxxx4xxxyxxxxxxxxxxxxxxx'.replace(/[xy]/g, function (c) { + var r = Math.random() * 16 | 0, + v = c === 'x' ? r : r & 0x3 | 0x8; + return v.toString(16); + }); + } +} +/** + * Given a child DOM element, returns a query-selector statement describing that + * and its ancestors + * e.g. [HTMLElement] => body > div > input#foo.btn[name=baz] + * @param elem + * @returns {string} + */ + + +function htmlTreeAsString$1(elem) { + /* eslint no-extra-parens:0*/ + var MAX_TRAVERSE_HEIGHT = 5, + MAX_OUTPUT_LEN = 80, + out = [], + height = 0, + len = 0, + separator = ' > ', + sepLength = separator.length, + nextStr; + + while (elem && height++ < MAX_TRAVERSE_HEIGHT) { + nextStr = htmlElementAsString(elem); // bail out if + // - nextStr is the 'html' element + // - the length of the string that would be created exceeds MAX_OUTPUT_LEN + // (ignore this limit if we are on the first iteration) + + if (nextStr === 'html' || height > 1 && len + out.length * sepLength + nextStr.length >= MAX_OUTPUT_LEN) { + break; + } + + out.push(nextStr); + len += nextStr.length; + elem = elem.parentNode; + } + + return out.reverse().join(separator); +} +/** + * Returns a simple, query-selector representation of a DOM element + * e.g. [HTMLElement] => input#foo.btn[name=baz] + * @param HTMLElement + * @returns {string} + */ + + +function htmlElementAsString(elem) { + var out = [], + className, + classes, + key, + attr, + i; + + if (!elem || !elem.tagName) { + return ''; + } + + out.push(elem.tagName.toLowerCase()); + + if (elem.id) { + out.push('#' + elem.id); + } + + className = elem.className; + + if (className && isString$1(className)) { + classes = className.split(/\s+/); + + for (i = 0; i < classes.length; i++) { + out.push('.' + classes[i]); + } + } + + var attrWhitelist = ['type', 'name', 'title', 'alt']; + + for (i = 0; i < attrWhitelist.length; i++) { + key = attrWhitelist[i]; + attr = elem.getAttribute(key); + + if (attr) { + out.push('[' + key + '="' + attr + '"]'); + } + } + + return out.join(''); +} +/** + * Returns true if either a OR b is truthy, but not both + */ + + +function isOnlyOneTruthy(a, b) { + return !!(!!a ^ !!b); +} +/** + * Returns true if both parameters are undefined + */ + + +function isBothUndefined(a, b) { + return isUndefined$1(a) && isUndefined$1(b); +} +/** + * Returns true if the two input exception interfaces have the same content + */ + + +function isSameException$1(ex1, ex2) { + if (isOnlyOneTruthy(ex1, ex2)) return false; + ex1 = ex1.values[0]; + ex2 = ex2.values[0]; + if (ex1.type !== ex2.type || ex1.value !== ex2.value) return false; // in case both stacktraces are undefined, we can't decide so default to false + + if (isBothUndefined(ex1.stacktrace, ex2.stacktrace)) return false; + return isSameStacktrace$1(ex1.stacktrace, ex2.stacktrace); +} +/** + * Returns true if the two input stack trace interfaces have the same content + */ + + +function isSameStacktrace$1(stack1, stack2) { + if (isOnlyOneTruthy(stack1, stack2)) return false; + var frames1 = stack1.frames; + var frames2 = stack2.frames; // Exit early if frame count differs + + if (frames1.length !== frames2.length) return false; // Iterate through every frame; bail out if anything differs + + var a, b; + + for (var i = 0; i < frames1.length; i++) { + a = frames1[i]; + b = frames2[i]; + if (a.filename !== b.filename || a.lineno !== b.lineno || a.colno !== b.colno || a['function'] !== b['function']) return false; + } + + return true; +} +/** + * Polyfill a method + * @param obj object e.g. `document` + * @param name method name present on object e.g. `addEventListener` + * @param replacement replacement function + * @param track {optional} record instrumentation to an array + */ + + +function fill$1(obj, name, replacement, track) { + var orig = obj[name]; + obj[name] = replacement(orig); + obj[name].__raven__ = true; + obj[name].__orig__ = orig; + + if (track) { + track.push([obj, name, orig]); + } +} +/** + * Join values in array + * @param input array of values to be joined together + * @param delimiter string to be placed in-between values + * @returns {string} + */ + + +function safeJoin(input, delimiter) { + if (!isArray$1(input)) return ''; + var output = []; + + for (var i = 0; i < input.length; i++) { + try { + output.push(String(input[i])); + } catch (e) { + output.push('[value cannot be serialized]'); + } + } + + return output.join(delimiter); +} + +var utils = { + isObject: isObject$1, + isError: isError$1, + isErrorEvent: isErrorEvent$1, + isUndefined: isUndefined$1, + isFunction: isFunction$1, + isPlainObject: isPlainObject, + isString: isString$1, + isArray: isArray$1, + isEmptyObject: isEmptyObject$1, + supportsErrorEvent: supportsErrorEvent, + supportsFetch: supportsFetch$1, + wrappedCallback: wrappedCallback, + each: each$1, + objectMerge: objectMerge$1, + truncate: truncate$1, + objectFrozen: objectFrozen$1, + hasKey: hasKey$1, + joinRegExp: joinRegExp$1, + urlencode: urlencode$1, + uuid4: uuid4$1, + htmlTreeAsString: htmlTreeAsString$1, + htmlElementAsString: htmlElementAsString, + isSameException: isSameException$1, + isSameStacktrace: isSameStacktrace$1, + parseUrl: parseUrl$1, + fill: fill$1, + safeJoin: safeJoin +}; + +/* + TraceKit - Cross brower stack traces + + This was originally forked from github.com/occ/TraceKit, but has since been + largely re-written and is now maintained as part of raven-js. Tests for + this are in test/vendor. + + MIT license +*/ + +var TraceKit = { + collectWindowErrors: true, + debug: false +}; // This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) + +var _window$2 = typeof window !== 'undefined' ? window : typeof commonjsGlobal !== 'undefined' ? commonjsGlobal : typeof self !== 'undefined' ? self : {}; // global reference to slice + + +var _slice = [].slice; +var UNKNOWN_FUNCTION = '?'; // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error#Error_types + +var ERROR_TYPES_RE = /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/; + +function getLocationHref() { + if (typeof document === 'undefined' || document.location == null) return ''; + return document.location.href; +} +/** + * TraceKit.report: cross-browser processing of unhandled exceptions + * + * Syntax: + * TraceKit.report.subscribe(function(stackInfo) { ... }) + * TraceKit.report.unsubscribe(function(stackInfo) { ... }) + * TraceKit.report(exception) + * try { ...code... } catch(ex) { TraceKit.report(ex); } + * + * Supports: + * - Firefox: full stack trace with line numbers, plus column number + * on top frame; column number is not guaranteed + * - Opera: full stack trace with line and column numbers + * - Chrome: full stack trace with line and column numbers + * - Safari: line and column number for the top frame only; some frames + * may be missing, and column number is not guaranteed + * - IE: line and column number for the top frame only; some frames + * may be missing, and column number is not guaranteed + * + * In theory, TraceKit should work on all of the following versions: + * - IE5.5+ (only 8.0 tested) + * - Firefox 0.9+ (only 3.5+ tested) + * - Opera 7+ (only 10.50 tested; versions 9 and earlier may require + * Exceptions Have Stacktrace to be enabled in opera:config) + * - Safari 3+ (only 4+ tested) + * - Chrome 1+ (only 5+ tested) + * - Konqueror 3.5+ (untested) + * + * Requires TraceKit.computeStackTrace. + * + * Tries to catch all unhandled exceptions and report them to the + * subscribed handlers. Please note that TraceKit.report will rethrow the + * exception. This is REQUIRED in order to get a useful stack trace in IE. + * If the exception does not reach the top of the browser, you will only + * get a stack trace from the point where TraceKit.report was called. + * + * Handlers receive a stackInfo object as described in the + * TraceKit.computeStackTrace docs. + */ + + +TraceKit.report = function reportModuleWrapper() { + var handlers = [], + lastArgs = null, + lastException = null, + lastExceptionStack = null; + /** + * Add a crash handler. + * @param {Function} handler + */ + + function subscribe(handler) { + installGlobalHandler(); + handlers.push(handler); + } + /** + * Remove a crash handler. + * @param {Function} handler + */ + + + function unsubscribe(handler) { + for (var i = handlers.length - 1; i >= 0; --i) { + if (handlers[i] === handler) { + handlers.splice(i, 1); + } + } + } + /** + * Remove all crash handlers. + */ + + + function unsubscribeAll() { + uninstallGlobalHandler(); + handlers = []; + } + /** + * Dispatch stack information to all handlers. + * @param {Object.} stack + */ + + + function notifyHandlers(stack, isWindowError) { + var exception = null; + + if (isWindowError && !TraceKit.collectWindowErrors) { + return; + } + + for (var i in handlers) { + if (handlers.hasOwnProperty(i)) { + try { + handlers[i].apply(null, [stack].concat(_slice.call(arguments, 2))); + } catch (inner) { + exception = inner; + } + } + } + + if (exception) { + throw exception; + } + } + + var _oldOnerrorHandler, _onErrorHandlerInstalled; + /** + * Ensures all global unhandled exceptions are recorded. + * Supported by Gecko and IE. + * @param {string} msg Error message. + * @param {string} url URL of script that generated the exception. + * @param {(number|string)} lineNo The line number at which the error + * occurred. + * @param {?(number|string)} colNo The column number at which the error + * occurred. + * @param {?Error} ex The actual Error object. + */ + + + function traceKitWindowOnError(msg, url, lineNo, colNo, ex) { + var stack = null; // If 'ex' is ErrorEvent, get real Error from inside + + var exception = utils.isErrorEvent(ex) ? ex.error : ex; // If 'msg' is ErrorEvent, get real message from inside + + var message = utils.isErrorEvent(msg) ? msg.message : msg; + + if (lastExceptionStack) { + TraceKit.computeStackTrace.augmentStackTraceWithInitialElement(lastExceptionStack, url, lineNo, message); + processLastException(); + } else if (exception && utils.isError(exception)) { + // non-string `exception` arg; attempt to extract stack trace + // New chrome and blink send along a real error object + // Let's just report that like a normal error. + // See: https://mikewest.org/2013/08/debugging-runtime-errors-with-window-onerror + stack = TraceKit.computeStackTrace(exception); + notifyHandlers(stack, true); + } else { + var location = { + url: url, + line: lineNo, + column: colNo + }; + var name = undefined; + var groups; + + if ({}.toString.call(message) === '[object String]') { + var groups = message.match(ERROR_TYPES_RE); + + if (groups) { + name = groups[1]; + message = groups[2]; + } + } + + location.func = UNKNOWN_FUNCTION; + stack = { + name: name, + message: message, + url: getLocationHref(), + stack: [location] + }; + notifyHandlers(stack, true); + } + + if (_oldOnerrorHandler) { + return _oldOnerrorHandler.apply(this, arguments); + } + + return false; + } + + function installGlobalHandler() { + if (_onErrorHandlerInstalled) { + return; + } + + _oldOnerrorHandler = _window$2.onerror; + _window$2.onerror = traceKitWindowOnError; + _onErrorHandlerInstalled = true; + } + + function uninstallGlobalHandler() { + if (!_onErrorHandlerInstalled) { + return; + } + + _window$2.onerror = _oldOnerrorHandler; + _onErrorHandlerInstalled = false; + _oldOnerrorHandler = undefined; + } + + function processLastException() { + var _lastExceptionStack = lastExceptionStack, + _lastArgs = lastArgs; + lastArgs = null; + lastExceptionStack = null; + lastException = null; + notifyHandlers.apply(null, [_lastExceptionStack, false].concat(_lastArgs)); + } + /** + * Reports an unhandled Error to TraceKit. + * @param {Error} ex + * @param {?boolean} rethrow If false, do not re-throw the exception. + * Only used for window.onerror to not cause an infinite loop of + * rethrowing. + */ + + + function report(ex, rethrow) { + var args = _slice.call(arguments, 1); + + if (lastExceptionStack) { + if (lastException === ex) { + return; // already caught by an inner catch block, ignore + } else { + processLastException(); + } + } + + var stack = TraceKit.computeStackTrace(ex); + lastExceptionStack = stack; + lastException = ex; + lastArgs = args; // If the stack trace is incomplete, wait for 2 seconds for + // slow slow IE to see if onerror occurs or not before reporting + // this exception; otherwise, we will end up with an incomplete + // stack trace + + setTimeout(function () { + if (lastException === ex) { + processLastException(); + } + }, stack.incomplete ? 2000 : 0); + + if (rethrow !== false) { + throw ex; // re-throw to propagate to the top level (and cause window.onerror) + } + } + + report.subscribe = subscribe; + report.unsubscribe = unsubscribe; + report.uninstall = unsubscribeAll; + return report; +}(); +/** + * TraceKit.computeStackTrace: cross-browser stack traces in JavaScript + * + * Syntax: + * s = TraceKit.computeStackTrace(exception) // consider using TraceKit.report instead (see below) + * Returns: + * s.name - exception name + * s.message - exception message + * s.stack[i].url - JavaScript or HTML file URL + * s.stack[i].func - function name, or empty for anonymous functions (if guessing did not work) + * s.stack[i].args - arguments passed to the function, if known + * s.stack[i].line - line number, if known + * s.stack[i].column - column number, if known + * + * Supports: + * - Firefox: full stack trace with line numbers and unreliable column + * number on top frame + * - Opera 10: full stack trace with line and column numbers + * - Opera 9-: full stack trace with line numbers + * - Chrome: full stack trace with line and column numbers + * - Safari: line and column number for the topmost stacktrace element + * only + * - IE: no line numbers whatsoever + * + * Tries to guess names of anonymous functions by looking for assignments + * in the source code. In IE and Safari, we have to guess source file names + * by searching for function bodies inside all page scripts. This will not + * work for scripts that are loaded cross-domain. + * Here be dragons: some function names may be guessed incorrectly, and + * duplicate functions may be mismatched. + * + * TraceKit.computeStackTrace should only be used for tracing purposes. + * Logging of unhandled exceptions should be done with TraceKit.report, + * which builds on top of TraceKit.computeStackTrace and provides better + * IE support by utilizing the window.onerror event to retrieve information + * about the top of the stack. + * + * Note: In IE and Safari, no stack trace is recorded on the Error object, + * so computeStackTrace instead walks its *own* chain of callers. + * This means that: + * * in Safari, some methods may be missing from the stack trace; + * * in IE, the topmost function in the stack trace will always be the + * caller of computeStackTrace. + * + * This is okay for tracing (because you are likely to be calling + * computeStackTrace from the function you want to be the topmost element + * of the stack trace anyway), but not okay for logging unhandled + * exceptions (because your catch block will likely be far away from the + * inner function that actually caused the exception). + * + */ + + +TraceKit.computeStackTrace = function computeStackTraceWrapper() { + // Contents of Exception in various browsers. + // + // SAFARI: + // ex.message = Can't find variable: qq + // ex.line = 59 + // ex.sourceId = 580238192 + // ex.sourceURL = http://... + // ex.expressionBeginOffset = 96 + // ex.expressionCaretOffset = 98 + // ex.expressionEndOffset = 98 + // ex.name = ReferenceError + // + // FIREFOX: + // ex.message = qq is not defined + // ex.fileName = http://... + // ex.lineNumber = 59 + // ex.columnNumber = 69 + // ex.stack = ...stack trace... (see the example below) + // ex.name = ReferenceError + // + // CHROME: + // ex.message = qq is not defined + // ex.name = ReferenceError + // ex.type = not_defined + // ex.arguments = ['aa'] + // ex.stack = ...stack trace... + // + // INTERNET EXPLORER: + // ex.message = ... + // ex.name = ReferenceError + // + // OPERA: + // ex.message = ...message... (see the example below) + // ex.name = ReferenceError + // ex.opera#sourceloc = 11 (pretty much useless, duplicates the info in ex.message) + // ex.stacktrace = n/a; see 'opera:config#UserPrefs|Exceptions Have Stacktrace' + + /** + * Computes stack trace information from the stack property. + * Chrome and Gecko use this property. + * @param {Error} ex + * @return {?Object.} Stack trace information. + */ + function computeStackTraceFromStackProp(ex) { + if (typeof ex.stack === 'undefined' || !ex.stack) return; + var chrome = /^\s*at (.*?) ?\(((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i, + gecko = /^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|\[native).*?|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i, + winjs = /^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i, + // Used to additionally parse URL/line/column from eval frames + geckoEval = /(\S+) line (\d+)(?: > eval line \d+)* > eval/i, + chromeEval = /\((\S*)(?::(\d+))(?::(\d+))\)/, + lines = ex.stack.split('\n'), + stack = [], + submatch, + parts, + element, + reference = /^(.*) is undefined$/.exec(ex.message); + + for (var i = 0, j = lines.length; i < j; ++i) { + if (parts = chrome.exec(lines[i])) { + var isNative = parts[2] && parts[2].indexOf('native') === 0; // start of line + + var isEval = parts[2] && parts[2].indexOf('eval') === 0; // start of line + + if (isEval && (submatch = chromeEval.exec(parts[2]))) { + // throw out eval line/column and use top-most line/column number + parts[2] = submatch[1]; // url + + parts[3] = submatch[2]; // line + + parts[4] = submatch[3]; // column + } + + element = { + url: !isNative ? parts[2] : null, + func: parts[1] || UNKNOWN_FUNCTION, + args: isNative ? [parts[2]] : [], + line: parts[3] ? +parts[3] : null, + column: parts[4] ? +parts[4] : null + }; + } else if (parts = winjs.exec(lines[i])) { + element = { + url: parts[2], + func: parts[1] || UNKNOWN_FUNCTION, + args: [], + line: +parts[3], + column: parts[4] ? +parts[4] : null + }; + } else if (parts = gecko.exec(lines[i])) { + var isEval = parts[3] && parts[3].indexOf(' > eval') > -1; + + if (isEval && (submatch = geckoEval.exec(parts[3]))) { + // throw out eval line/column and use top-most line number + parts[3] = submatch[1]; + parts[4] = submatch[2]; + parts[5] = null; // no column when eval + } else if (i === 0 && !parts[5] && typeof ex.columnNumber !== 'undefined') { + // FireFox uses this awesome columnNumber property for its top frame + // Also note, Firefox's column number is 0-based and everything else expects 1-based, + // so adding 1 + // NOTE: this hack doesn't work if top-most frame is eval + stack[0].column = ex.columnNumber + 1; + } + + element = { + url: parts[3], + func: parts[1] || UNKNOWN_FUNCTION, + args: parts[2] ? parts[2].split(',') : [], + line: parts[4] ? +parts[4] : null, + column: parts[5] ? +parts[5] : null + }; + } else { + continue; + } + + if (!element.func && element.line) { + element.func = UNKNOWN_FUNCTION; + } + + stack.push(element); + } + + if (!stack.length) { + return null; + } + + return { + name: ex.name, + message: ex.message, + url: getLocationHref(), + stack: stack + }; + } + /** + * Adds information about the first frame to incomplete stack traces. + * Safari and IE require this to get complete data on the first frame. + * @param {Object.} stackInfo Stack trace information from + * one of the compute* methods. + * @param {string} url The URL of the script that caused an error. + * @param {(number|string)} lineNo The line number of the script that + * caused an error. + * @param {string=} message The error generated by the browser, which + * hopefully contains the name of the object that caused the error. + * @return {boolean} Whether or not the stack information was + * augmented. + */ + + + function augmentStackTraceWithInitialElement(stackInfo, url, lineNo, message) { + var initial = { + url: url, + line: lineNo + }; + + if (initial.url && initial.line) { + stackInfo.incomplete = false; + + if (!initial.func) { + initial.func = UNKNOWN_FUNCTION; + } + + if (stackInfo.stack.length > 0) { + if (stackInfo.stack[0].url === initial.url) { + if (stackInfo.stack[0].line === initial.line) { + return false; // already in stack trace + } else if (!stackInfo.stack[0].line && stackInfo.stack[0].func === initial.func) { + stackInfo.stack[0].line = initial.line; + return false; + } + } + } + + stackInfo.stack.unshift(initial); + stackInfo.partial = true; + return true; + } else { + stackInfo.incomplete = true; + } + + return false; + } + /** + * Computes stack trace information by walking the arguments.caller + * chain at the time the exception occurred. This will cause earlier + * frames to be missed but is the only way to get any stack trace in + * Safari and IE. The top frame is restored by + * {@link augmentStackTraceWithInitialElement}. + * @param {Error} ex + * @return {?Object.} Stack trace information. + */ + + + function computeStackTraceByWalkingCallerChain(ex, depth) { + var functionName = /function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i, + stack = [], + funcs = {}, + recursion = false, + parts, + item; + + for (var curr = computeStackTraceByWalkingCallerChain.caller; curr && !recursion; curr = curr.caller) { + if (curr === computeStackTrace || curr === TraceKit.report) { + // console.log('skipping internal function'); + continue; + } + + item = { + url: null, + func: UNKNOWN_FUNCTION, + line: null, + column: null + }; + + if (curr.name) { + item.func = curr.name; + } else if (parts = functionName.exec(curr.toString())) { + item.func = parts[1]; + } + + if (typeof item.func === 'undefined') { + try { + item.func = parts.input.substring(0, parts.input.indexOf('{')); + } catch (e) {} + } + + if (funcs['' + curr]) { + recursion = true; + } else { + funcs['' + curr] = true; + } + + stack.push(item); + } + + if (depth) { + // console.log('depth is ' + depth); + // console.log('stack is ' + stack.length); + stack.splice(0, depth); + } + + var result = { + name: ex.name, + message: ex.message, + url: getLocationHref(), + stack: stack + }; + augmentStackTraceWithInitialElement(result, ex.sourceURL || ex.fileName, ex.line || ex.lineNumber, ex.message || ex.description); + return result; + } + /** + * Computes a stack trace for an exception. + * @param {Error} ex + * @param {(string|number)=} depth + */ + + + function computeStackTrace(ex, depth) { + var stack = null; + depth = depth == null ? 0 : +depth; + + try { + stack = computeStackTraceFromStackProp(ex); + + if (stack) { + return stack; + } + } catch (e) { + if (TraceKit.debug) { + throw e; + } + } + + try { + stack = computeStackTraceByWalkingCallerChain(ex, depth + 1); + + if (stack) { + return stack; + } + } catch (e) { + if (TraceKit.debug) { + throw e; + } + } + + return { + name: ex.name, + message: ex.message, + url: getLocationHref() + }; + } + + computeStackTrace.augmentStackTraceWithInitialElement = augmentStackTraceWithInitialElement; + computeStackTrace.computeStackTraceFromStackProp = computeStackTraceFromStackProp; + return computeStackTrace; +}(); + +var tracekit = TraceKit; + +var stringify_1 = createCommonjsModule(function (module, exports) { + /* + json-stringify-safe + Like JSON.stringify, but doesn't throw on circular references. + + Originally forked from https://github.com/isaacs/json-stringify-safe + version 5.0.1 on 3/8/2017 and modified to handle Errors serialization + and IE8 compatibility. Tests for this are in test/vendor. + + ISC license: https://github.com/isaacs/json-stringify-safe/blob/master/LICENSE + */ + exports = module.exports = stringify; + exports.getSerialize = serializer; + + function indexOf(haystack, needle) { + for (var i = 0; i < haystack.length; ++i) { + if (haystack[i] === needle) return i; + } + + return -1; + } + + function stringify(obj, replacer, spaces, cycleReplacer) { + return JSON.stringify(obj, serializer(replacer, cycleReplacer), spaces); + } // https://github.com/ftlabs/js-abbreviate/blob/fa709e5f139e7770a71827b1893f22418097fbda/index.js#L95-L106 + + + function stringifyError(value) { + var err = { + // These properties are implemented as magical getters and don't show up in for in + stack: value.stack, + message: value.message, + name: value.name + }; + + for (var i in value) { + if (Object.prototype.hasOwnProperty.call(value, i)) { + err[i] = value[i]; + } + } + + return err; + } + + function serializer(replacer, cycleReplacer) { + var stack = []; + var keys = []; + + if (cycleReplacer == null) { + cycleReplacer = function cycleReplacer(key, value) { + if (stack[0] === value) { + return '[Circular ~]'; + } + + return '[Circular ~.' + keys.slice(0, indexOf(stack, value)).join('.') + ']'; + }; + } + + return function (key, value) { + if (stack.length > 0) { + var thisPos = indexOf(stack, this); + ~thisPos ? stack.splice(thisPos + 1) : stack.push(this); + ~thisPos ? keys.splice(thisPos, Infinity, key) : keys.push(key); + + if (~indexOf(stack, value)) { + value = cycleReplacer.call(this, key, value); + } + } else { + stack.push(value); + } + + return replacer == null ? value instanceof Error ? stringifyError(value) : value : replacer.call(this, key, value); + }; + } +}); +var stringify_2 = stringify_1.getSerialize; + +function RavenConfigError(message) { + this.name = 'RavenConfigError'; + this.message = message; +} + +RavenConfigError.prototype = new Error(); +RavenConfigError.prototype.constructor = RavenConfigError; +var configError = RavenConfigError; + +var wrapMethod = function wrapMethod(console, level, callback) { + var originalConsoleLevel = console[level]; + var originalConsole = console; + + if (!(level in console)) { + return; + } + + var sentryLevel = level === 'warn' ? 'warning' : level; + + console[level] = function () { + var args = [].slice.call(arguments); + var msg = utils.safeJoin(args, ' '); + var data = { + level: sentryLevel, + logger: 'console', + extra: { + arguments: args + } + }; + + if (level === 'assert') { + if (args[0] === false) { + // Default browsers message + msg = 'Assertion failed: ' + (utils.safeJoin(args.slice(1), ' ') || 'console.assert'); + data.extra.arguments = args.slice(1); + callback && callback(msg, data); + } + } else { + callback && callback(msg, data); + } // this fails for some browsers. :( + + + if (originalConsoleLevel) { + // IE9 doesn't allow calling apply on console functions directly + // See: https://stackoverflow.com/questions/5472938/does-ie9-support-console-log-and-is-it-a-real-function#answer-5473193 + Function.prototype.apply.call(originalConsoleLevel, originalConsole, args); + } + }; +}; + +var console$1 = { + wrapMethod: wrapMethod +}; + +/*global XDomainRequest:false */ + +var isError = utils.isError; +var isObject = utils.isObject; +var isErrorEvent = utils.isErrorEvent; +var isUndefined = utils.isUndefined; +var isFunction = utils.isFunction; +var isString = utils.isString; +var isArray = utils.isArray; +var isEmptyObject = utils.isEmptyObject; +var each = utils.each; +var objectMerge = utils.objectMerge; +var truncate = utils.truncate; +var objectFrozen = utils.objectFrozen; +var hasKey = utils.hasKey; +var joinRegExp = utils.joinRegExp; +var urlencode = utils.urlencode; +var uuid4 = utils.uuid4; +var htmlTreeAsString = utils.htmlTreeAsString; +var isSameException = utils.isSameException; +var isSameStacktrace = utils.isSameStacktrace; +var parseUrl = utils.parseUrl; +var fill = utils.fill; +var supportsFetch = utils.supportsFetch; +var wrapConsoleMethod = console$1.wrapMethod; +var dsnKeys = 'source protocol user pass host port path'.split(' '); +var dsnPattern = /^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/; + +function now() { + return +new Date(); +} // This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) + + +var _window$1 = typeof window !== 'undefined' ? window : typeof commonjsGlobal !== 'undefined' ? commonjsGlobal : typeof self !== 'undefined' ? self : {}; + +var _document = _window$1.document; +var _navigator = _window$1.navigator; + +function keepOriginalCallback(original, callback) { + return isFunction(callback) ? function (data) { + return callback(data, original); + } : callback; +} // First, check for JSON support +// If there is no JSON, we no-op the core features of Raven +// since JSON is required to encode the payload + + +function Raven$1() { + this._hasJSON = !!(_typeof(JSON) === 'object' && JSON.stringify); // Raven can run in contexts where there's no document (react-native) + + this._hasDocument = !isUndefined(_document); + this._hasNavigator = !isUndefined(_navigator); + this._lastCapturedException = null; + this._lastData = null; + this._lastEventId = null; + this._globalServer = null; + this._globalKey = null; + this._globalProject = null; + this._globalContext = {}; + this._globalOptions = { + // SENTRY_RELEASE can be injected by https://github.com/getsentry/sentry-webpack-plugin + release: _window$1.SENTRY_RELEASE && _window$1.SENTRY_RELEASE.id, + logger: 'javascript', + ignoreErrors: [], + ignoreUrls: [], + whitelistUrls: [], + includePaths: [], + headers: null, + collectWindowErrors: true, + maxMessageLength: 0, + // By default, truncates URL values to 250 chars + maxUrlLength: 250, + stackTraceLimit: 50, + autoBreadcrumbs: true, + instrument: true, + sampleRate: 1 + }; + this._fetchDefaults = { + method: 'POST', + keepalive: true, + referrerPolicy: 'origin' + }; + this._ignoreOnError = 0; + this._isRavenInstalled = false; + this._originalErrorStackTraceLimit = Error.stackTraceLimit; // capture references to window.console *and* all its methods first + // before the console plugin has a chance to monkey patch + + this._originalConsole = _window$1.console || {}; + this._originalConsoleMethods = {}; + this._plugins = []; + this._startTime = now(); + this._wrappedBuiltIns = []; + this._breadcrumbs = []; + this._lastCapturedEvent = null; + this._keypressTimeout; + this._location = _window$1.location; + this._lastHref = this._location && this._location.href; + + this._resetBackoff(); // eslint-disable-next-line guard-for-in + + + for (var method in this._originalConsole) { + this._originalConsoleMethods[method] = this._originalConsole[method]; + } +} +/* + * The core Raven singleton + * + * @this {Raven} + */ + + +Raven$1.prototype = { + // Hardcode version string so that raven source can be loaded directly via + // webpack (using a build step causes webpack #1617). Grunt verifies that + // this value matches package.json during build. + // See: https://github.com/getsentry/raven-js/issues/465 + VERSION: '3.22.2', + debug: false, + TraceKit: tracekit, + // alias to TraceKit + + /* + * Configure Raven with a DSN and extra options + * + * @param {string} dsn The public Sentry DSN + * @param {object} options Set of global options [optional] + * @return {Raven} + */ + config: function config(dsn, options) { + var self = this; + + if (self._globalServer) { + this._logDebug('error', 'Error: Raven has already been configured'); + + return self; + } + + if (!dsn) return self; + var globalOptions = self._globalOptions; // merge in options + + if (options) { + each(options, function (key, value) { + // tags and extra are special and need to be put into context + if (key === 'tags' || key === 'extra' || key === 'user') { + self._globalContext[key] = value; + } else { + globalOptions[key] = value; + } + }); + } + + self.setDSN(dsn); // "Script error." is hard coded into browsers for errors that it can't read. + // this is the result of a script being pulled in from an external domain and CORS. + + globalOptions.ignoreErrors.push(/^Script error\.?$/); + globalOptions.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/); // join regexp rules into one big rule + + globalOptions.ignoreErrors = joinRegExp(globalOptions.ignoreErrors); + globalOptions.ignoreUrls = globalOptions.ignoreUrls.length ? joinRegExp(globalOptions.ignoreUrls) : false; + globalOptions.whitelistUrls = globalOptions.whitelistUrls.length ? joinRegExp(globalOptions.whitelistUrls) : false; + globalOptions.includePaths = joinRegExp(globalOptions.includePaths); + globalOptions.maxBreadcrumbs = Math.max(0, Math.min(globalOptions.maxBreadcrumbs || 100, 100)); // default and hard limit is 100 + + var autoBreadcrumbDefaults = { + xhr: true, + console: true, + dom: true, + location: true, + sentry: true + }; + var autoBreadcrumbs = globalOptions.autoBreadcrumbs; + + if ({}.toString.call(autoBreadcrumbs) === '[object Object]') { + autoBreadcrumbs = objectMerge(autoBreadcrumbDefaults, autoBreadcrumbs); + } else if (autoBreadcrumbs !== false) { + autoBreadcrumbs = autoBreadcrumbDefaults; + } + + globalOptions.autoBreadcrumbs = autoBreadcrumbs; + var instrumentDefaults = { + tryCatch: true + }; + var instrument = globalOptions.instrument; + + if ({}.toString.call(instrument) === '[object Object]') { + instrument = objectMerge(instrumentDefaults, instrument); + } else if (instrument !== false) { + instrument = instrumentDefaults; + } + + globalOptions.instrument = instrument; + tracekit.collectWindowErrors = !!globalOptions.collectWindowErrors; // return for chaining + + return self; + }, + + /* + * Installs a global window.onerror error handler + * to capture and report uncaught exceptions. + * At this point, install() is required to be called due + * to the way TraceKit is set up. + * + * @return {Raven} + */ + install: function install() { + var self = this; + + if (self.isSetup() && !self._isRavenInstalled) { + tracekit.report.subscribe(function () { + self._handleOnErrorStackInfo.apply(self, arguments); + }); + + self._patchFunctionToString(); + + if (self._globalOptions.instrument && self._globalOptions.instrument.tryCatch) { + self._instrumentTryCatch(); + } + + if (self._globalOptions.autoBreadcrumbs) self._instrumentBreadcrumbs(); // Install all of the plugins + + self._drainPlugins(); + + self._isRavenInstalled = true; + } + + Error.stackTraceLimit = self._globalOptions.stackTraceLimit; + return this; + }, + + /* + * Set the DSN (can be called multiple time unlike config) + * + * @param {string} dsn The public Sentry DSN + */ + setDSN: function setDSN(dsn) { + var self = this, + uri = self._parseDSN(dsn), + lastSlash = uri.path.lastIndexOf('/'), + path = uri.path.substr(1, lastSlash); + + self._dsn = dsn; + self._globalKey = uri.user; + self._globalSecret = uri.pass && uri.pass.substr(1); + self._globalProject = uri.path.substr(lastSlash + 1); + self._globalServer = self._getGlobalServer(uri); + self._globalEndpoint = self._globalServer + '/' + path + 'api/' + self._globalProject + '/store/'; // Reset backoff state since we may be pointing at a + // new project/server + + this._resetBackoff(); + }, + + /* + * Wrap code within a context so Raven can capture errors + * reliably across domains that is executed immediately. + * + * @param {object} options A specific set of options for this context [optional] + * @param {function} func The callback to be immediately executed within the context + * @param {array} args An array of arguments to be called with the callback [optional] + */ + context: function context(options, func, args) { + if (isFunction(options)) { + args = func || []; + func = options; + options = undefined; + } + + return this.wrap(options, func).apply(this, args); + }, + + /* + * Wrap code within a context and returns back a new function to be executed + * + * @param {object} options A specific set of options for this context [optional] + * @param {function} func The function to be wrapped in a new context + * @param {function} func A function to call before the try/catch wrapper [optional, private] + * @return {function} The newly wrapped functions with a context + */ + wrap: function wrap(options, func, _before) { + var self = this; // 1 argument has been passed, and it's not a function + // so just return it + + if (isUndefined(func) && !isFunction(options)) { + return options; + } // options is optional + + + if (isFunction(options)) { + func = options; + options = undefined; + } // At this point, we've passed along 2 arguments, and the second one + // is not a function either, so we'll just return the second argument. + + + if (!isFunction(func)) { + return func; + } // We don't wanna wrap it twice! + + + try { + if (func.__raven__) { + return func; + } // If this has already been wrapped in the past, return that + + + if (func.__raven_wrapper__) { + return func.__raven_wrapper__; + } + } catch (e) { + // Just accessing custom props in some Selenium environments + // can cause a "Permission denied" exception (see raven-js#495). + // Bail on wrapping and return the function as-is (defers to window.onerror). + return func; + } + + function wrapped() { + var args = [], + i = arguments.length, + deep = !options || options && options.deep !== false; + + if (_before && isFunction(_before)) { + _before.apply(this, arguments); + } // Recursively wrap all of a function's arguments that are + // functions themselves. + + + while (i--) { + args[i] = deep ? self.wrap(options, arguments[i]) : arguments[i]; + } + + try { + // Attempt to invoke user-land function + // NOTE: If you are a Sentry user, and you are seeing this stack frame, it + // means Raven caught an error invoking your application code. This is + // expected behavior and NOT indicative of a bug with Raven.js. + return func.apply(this, args); + } catch (e) { + self._ignoreNextOnError(); + + self.captureException(e, options); + throw e; + } + } // copy over properties of the old function + + + for (var property in func) { + if (hasKey(func, property)) { + wrapped[property] = func[property]; + } + } + + wrapped.prototype = func.prototype; + func.__raven_wrapper__ = wrapped; // Signal that this function has been wrapped/filled already + // for both debugging and to prevent it to being wrapped/filled twice + + wrapped.__raven__ = true; + wrapped.__orig__ = func; + return wrapped; + }, + + /* + * Uninstalls the global error handler. + * + * @return {Raven} + */ + uninstall: function uninstall() { + tracekit.report.uninstall(); + + this._unpatchFunctionToString(); + + this._restoreBuiltIns(); + + this._restoreConsole(); + + Error.stackTraceLimit = this._originalErrorStackTraceLimit; + this._isRavenInstalled = false; + return this; + }, + + /* + * Manually capture an exception and send it over to Sentry + * + * @param {error} ex An exception to be logged + * @param {object} options A specific set of options for this error [optional] + * @return {Raven} + */ + captureException: function captureException(ex, options) { + options = objectMerge({ + trimHeadFrames: 0 + }, options ? options : {}); // Cases for sending ex as a message, rather than an exception + + var isNotError = !isError(ex); + var isNotErrorEvent = !isErrorEvent(ex); + var isErrorEventWithoutError = isErrorEvent(ex) && !ex.error; + + if (isNotError && isNotErrorEvent || isErrorEventWithoutError) { + return this.captureMessage(ex, objectMerge(options, { + stacktrace: true, + // if we fall back to captureMessage, default to attempting a new trace + trimHeadFrames: options.trimHeadFrames + 1 + })); + } // Get actual Error from ErrorEvent + + + if (isErrorEvent(ex)) ex = ex.error; // Store the raw exception object for potential debugging and introspection + + this._lastCapturedException = ex; // TraceKit.report will re-raise any exception passed to it, + // which means you have to wrap it in try/catch. Instead, we + // can wrap it here and only re-raise if TraceKit.report + // raises an exception different from the one we asked to + // report on. + + try { + var stack = tracekit.computeStackTrace(ex); + + this._handleStackInfo(stack, options); + } catch (ex1) { + if (ex !== ex1) { + throw ex1; + } + } + + return this; + }, + + /* + * Manually send a message to Sentry + * + * @param {string} msg A plain message to be captured in Sentry + * @param {object} options A specific set of options for this message [optional] + * @return {Raven} + */ + captureMessage: function captureMessage(msg, options) { + // config() automagically converts ignoreErrors from a list to a RegExp so we need to test for an + // early call; we'll error on the side of logging anything called before configuration since it's + // probably something you should see: + if (!!this._globalOptions.ignoreErrors.test && this._globalOptions.ignoreErrors.test(msg)) { + return; + } + + options = options || {}; + var data = objectMerge({ + message: msg + '' // Make sure it's actually a string + + }, options); + var ex; // Generate a "synthetic" stack trace from this point. + // NOTE: If you are a Sentry user, and you are seeing this stack frame, it is NOT indicative + // of a bug with Raven.js. Sentry generates synthetic traces either by configuration, + // or if it catches a thrown object without a "stack" property. + + try { + throw new Error(msg); + } catch (ex1) { + ex = ex1; + } // null exception name so `Error` isn't prefixed to msg + + + ex.name = null; + var stack = tracekit.computeStackTrace(ex); // stack[0] is `throw new Error(msg)` call itself, we are interested in the frame that was just before that, stack[1] + + var initialCall = isArray(stack.stack) && stack.stack[1]; + var fileurl = initialCall && initialCall.url || ''; + + if (!!this._globalOptions.ignoreUrls.test && this._globalOptions.ignoreUrls.test(fileurl)) { + return; + } + + if (!!this._globalOptions.whitelistUrls.test && !this._globalOptions.whitelistUrls.test(fileurl)) { + return; + } + + if (this._globalOptions.stacktrace || options && options.stacktrace) { + options = objectMerge({ + // fingerprint on msg, not stack trace (legacy behavior, could be + // revisited) + fingerprint: msg, + // since we know this is a synthetic trace, the top N-most frames + // MUST be from Raven.js, so mark them as in_app later by setting + // trimHeadFrames + trimHeadFrames: (options.trimHeadFrames || 0) + 1 + }, options); + + var frames = this._prepareFrames(stack, options); + + data.stacktrace = { + // Sentry expects frames oldest to newest + frames: frames.reverse() + }; + } // Fire away! + + + this._send(data); + + return this; + }, + captureBreadcrumb: function captureBreadcrumb(obj) { + var crumb = objectMerge({ + timestamp: now() / 1000 + }, obj); + + if (isFunction(this._globalOptions.breadcrumbCallback)) { + var result = this._globalOptions.breadcrumbCallback(crumb); + + if (isObject(result) && !isEmptyObject(result)) { + crumb = result; + } else if (result === false) { + return this; + } + } + + this._breadcrumbs.push(crumb); + + if (this._breadcrumbs.length > this._globalOptions.maxBreadcrumbs) { + this._breadcrumbs.shift(); + } + + return this; + }, + addPlugin: function addPlugin(plugin + /*arg1, arg2, ... argN*/ + ) { + var pluginArgs = [].slice.call(arguments, 1); + + this._plugins.push([plugin, pluginArgs]); + + if (this._isRavenInstalled) { + this._drainPlugins(); + } + + return this; + }, + + /* + * Set/clear a user to be sent along with the payload. + * + * @param {object} user An object representing user data [optional] + * @return {Raven} + */ + setUserContext: function setUserContext(user) { + // Intentionally do not merge here since that's an unexpected behavior. + this._globalContext.user = user; + return this; + }, + + /* + * Merge extra attributes to be sent along with the payload. + * + * @param {object} extra An object representing extra data [optional] + * @return {Raven} + */ + setExtraContext: function setExtraContext(extra) { + this._mergeContext('extra', extra); + + return this; + }, + + /* + * Merge tags to be sent along with the payload. + * + * @param {object} tags An object representing tags [optional] + * @return {Raven} + */ + setTagsContext: function setTagsContext(tags) { + this._mergeContext('tags', tags); + + return this; + }, + + /* + * Clear all of the context. + * + * @return {Raven} + */ + clearContext: function clearContext() { + this._globalContext = {}; + return this; + }, + + /* + * Get a copy of the current context. This cannot be mutated. + * + * @return {object} copy of context + */ + getContext: function getContext() { + // lol javascript + return JSON.parse(stringify_1(this._globalContext)); + }, + + /* + * Set environment of application + * + * @param {string} environment Typically something like 'production'. + * @return {Raven} + */ + setEnvironment: function setEnvironment(environment) { + this._globalOptions.environment = environment; + return this; + }, + + /* + * Set release version of application + * + * @param {string} release Typically something like a git SHA to identify version + * @return {Raven} + */ + setRelease: function setRelease(release) { + this._globalOptions.release = release; + return this; + }, + + /* + * Set the dataCallback option + * + * @param {function} callback The callback to run which allows the + * data blob to be mutated before sending + * @return {Raven} + */ + setDataCallback: function setDataCallback(callback) { + var original = this._globalOptions.dataCallback; + this._globalOptions.dataCallback = keepOriginalCallback(original, callback); + return this; + }, + + /* + * Set the breadcrumbCallback option + * + * @param {function} callback The callback to run which allows filtering + * or mutating breadcrumbs + * @return {Raven} + */ + setBreadcrumbCallback: function setBreadcrumbCallback(callback) { + var original = this._globalOptions.breadcrumbCallback; + this._globalOptions.breadcrumbCallback = keepOriginalCallback(original, callback); + return this; + }, + + /* + * Set the shouldSendCallback option + * + * @param {function} callback The callback to run which allows + * introspecting the blob before sending + * @return {Raven} + */ + setShouldSendCallback: function setShouldSendCallback(callback) { + var original = this._globalOptions.shouldSendCallback; + this._globalOptions.shouldSendCallback = keepOriginalCallback(original, callback); + return this; + }, + + /** + * Override the default HTTP transport mechanism that transmits data + * to the Sentry server. + * + * @param {function} transport Function invoked instead of the default + * `makeRequest` handler. + * + * @return {Raven} + */ + setTransport: function setTransport(transport) { + this._globalOptions.transport = transport; + return this; + }, + + /* + * Get the latest raw exception that was captured by Raven. + * + * @return {error} + */ + lastException: function lastException() { + return this._lastCapturedException; + }, + + /* + * Get the last event id + * + * @return {string} + */ + lastEventId: function lastEventId() { + return this._lastEventId; + }, + + /* + * Determine if Raven is setup and ready to go. + * + * @return {boolean} + */ + isSetup: function isSetup() { + if (!this._hasJSON) return false; // needs JSON support + + if (!this._globalServer) { + if (!this.ravenNotConfiguredError) { + this.ravenNotConfiguredError = true; + + this._logDebug('error', 'Error: Raven has not been configured.'); + } + + return false; + } + + return true; + }, + afterLoad: function afterLoad() { + // TODO: remove window dependence? + // Attempt to initialize Raven on load + var RavenConfig = _window$1.RavenConfig; + + if (RavenConfig) { + this.config(RavenConfig.dsn, RavenConfig.config).install(); + } + }, + showReportDialog: function showReportDialog(options) { + if (!_document // doesn't work without a document (React native) + ) return; + options = options || {}; + var lastEventId = options.eventId || this.lastEventId(); + + if (!lastEventId) { + throw new configError('Missing eventId'); + } + + var dsn = options.dsn || this._dsn; + + if (!dsn) { + throw new configError('Missing DSN'); + } + + var encode = encodeURIComponent; + var qs = ''; + qs += '?eventId=' + encode(lastEventId); + qs += '&dsn=' + encode(dsn); + var user = options.user || this._globalContext.user; + + if (user) { + if (user.name) qs += '&name=' + encode(user.name); + if (user.email) qs += '&email=' + encode(user.email); + } + + var globalServer = this._getGlobalServer(this._parseDSN(dsn)); + + var script = _document.createElement('script'); + + script.async = true; + script.src = globalServer + '/api/embed/error-page/' + qs; + + (_document.head || _document.body).appendChild(script); + }, + + /**** Private functions ****/ + _ignoreNextOnError: function _ignoreNextOnError() { + var self = this; + this._ignoreOnError += 1; + setTimeout(function () { + // onerror should trigger before setTimeout + self._ignoreOnError -= 1; + }); + }, + _triggerEvent: function _triggerEvent(eventType, options) { + // NOTE: `event` is a native browser thing, so let's avoid conflicting wiht it + var evt, key; + if (!this._hasDocument) return; + options = options || {}; + eventType = 'raven' + eventType.substr(0, 1).toUpperCase() + eventType.substr(1); + + if (_document.createEvent) { + evt = _document.createEvent('HTMLEvents'); + evt.initEvent(eventType, true, true); + } else { + evt = _document.createEventObject(); + evt.eventType = eventType; + } + + for (key in options) { + if (hasKey(options, key)) { + evt[key] = options[key]; + } + } + + if (_document.createEvent) { + // IE9 if standards + _document.dispatchEvent(evt); + } else { + // IE8 regardless of Quirks or Standards + // IE9 if quirks + try { + _document.fireEvent('on' + evt.eventType.toLowerCase(), evt); + } catch (e) {// Do nothing + } + } + }, + + /** + * Wraps addEventListener to capture UI breadcrumbs + * @param evtName the event name (e.g. "click") + * @returns {Function} + * @private + */ + _breadcrumbEventHandler: function _breadcrumbEventHandler(evtName) { + var self = this; + return function (evt) { + // reset keypress timeout; e.g. triggering a 'click' after + // a 'keypress' will reset the keypress debounce so that a new + // set of keypresses can be recorded + self._keypressTimeout = null; // It's possible this handler might trigger multiple times for the same + // event (e.g. event propagation through node ancestors). Ignore if we've + // already captured the event. + + if (self._lastCapturedEvent === evt) return; + self._lastCapturedEvent = evt; // try/catch both: + // - accessing evt.target (see getsentry/raven-js#838, #768) + // - `htmlTreeAsString` because it's complex, and just accessing the DOM incorrectly + // can throw an exception in some circumstances. + + var target; + + try { + target = htmlTreeAsString(evt.target); + } catch (e) { + target = ''; + } + + self.captureBreadcrumb({ + category: 'ui.' + evtName, + // e.g. ui.click, ui.input + message: target + }); + }; + }, + + /** + * Wraps addEventListener to capture keypress UI events + * @returns {Function} + * @private + */ + _keypressEventHandler: function _keypressEventHandler() { + var self = this, + debounceDuration = 1000; // milliseconds + // TODO: if somehow user switches keypress target before + // debounce timeout is triggered, we will only capture + // a single breadcrumb from the FIRST target (acceptable?) + + return function (evt) { + var target; + + try { + target = evt.target; + } catch (e) { + // just accessing event properties can throw an exception in some rare circumstances + // see: https://github.com/getsentry/raven-js/issues/838 + return; + } + + var tagName = target && target.tagName; // only consider keypress events on actual input elements + // this will disregard keypresses targeting body (e.g. tabbing + // through elements, hotkeys, etc) + + if (!tagName || tagName !== 'INPUT' && tagName !== 'TEXTAREA' && !target.isContentEditable) return; // record first keypress in a series, but ignore subsequent + // keypresses until debounce clears + + var timeout = self._keypressTimeout; + + if (!timeout) { + self._breadcrumbEventHandler('input')(evt); + } + + clearTimeout(timeout); + self._keypressTimeout = setTimeout(function () { + self._keypressTimeout = null; + }, debounceDuration); + }; + }, + + /** + * Captures a breadcrumb of type "navigation", normalizing input URLs + * @param to the originating URL + * @param from the target URL + * @private + */ + _captureUrlChange: function _captureUrlChange(from, to) { + var parsedLoc = parseUrl(this._location.href); + var parsedTo = parseUrl(to); + var parsedFrom = parseUrl(from); // because onpopstate only tells you the "new" (to) value of location.href, and + // not the previous (from) value, we need to track the value of the current URL + // state ourselves + + this._lastHref = to; // Use only the path component of the URL if the URL matches the current + // document (almost all the time when using pushState) + + if (parsedLoc.protocol === parsedTo.protocol && parsedLoc.host === parsedTo.host) to = parsedTo.relative; + if (parsedLoc.protocol === parsedFrom.protocol && parsedLoc.host === parsedFrom.host) from = parsedFrom.relative; + this.captureBreadcrumb({ + category: 'navigation', + data: { + to: to, + from: from + } + }); + }, + _patchFunctionToString: function _patchFunctionToString() { + var self = this; + self._originalFunctionToString = Function.prototype.toString; // eslint-disable-next-line no-extend-native + + Function.prototype.toString = function () { + if (typeof this === 'function' && this.__raven__) { + return self._originalFunctionToString.apply(this.__orig__, arguments); + } + + return self._originalFunctionToString.apply(this, arguments); + }; + }, + _unpatchFunctionToString: function _unpatchFunctionToString() { + if (this._originalFunctionToString) { + // eslint-disable-next-line no-extend-native + Function.prototype.toString = this._originalFunctionToString; + } + }, + + /** + * Wrap timer functions and event targets to catch errors and provide + * better metadata. + */ + _instrumentTryCatch: function _instrumentTryCatch() { + var self = this; + var wrappedBuiltIns = self._wrappedBuiltIns; + + function wrapTimeFn(orig) { + return function (fn, t) { + // preserve arity + // Make a copy of the arguments to prevent deoptimization + // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments + var args = new Array(arguments.length); + + for (var i = 0; i < args.length; ++i) { + args[i] = arguments[i]; + } + + var originalCallback = args[0]; + + if (isFunction(originalCallback)) { + args[0] = self.wrap(originalCallback); + } // IE < 9 doesn't support .call/.apply on setInterval/setTimeout, but it + // also supports only two arguments and doesn't care what this is, so we + // can just call the original function directly. + + + if (orig.apply) { + return orig.apply(this, args); + } else { + return orig(args[0], args[1]); + } + }; + } + + var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; + + function wrapEventTarget(global) { + var proto = _window$1[global] && _window$1[global].prototype; + + if (proto && proto.hasOwnProperty && proto.hasOwnProperty('addEventListener')) { + fill(proto, 'addEventListener', function (orig) { + return function (evtName, fn, capture, secure) { + // preserve arity + try { + if (fn && fn.handleEvent) { + fn.handleEvent = self.wrap(fn.handleEvent); + } + } catch (err) {} // can sometimes get 'Permission denied to access property "handle Event' + // More breadcrumb DOM capture ... done here and not in `_instrumentBreadcrumbs` + // so that we don't have more than one wrapper function + + + var before, clickHandler, keypressHandler; + + if (autoBreadcrumbs && autoBreadcrumbs.dom && (global === 'EventTarget' || global === 'Node')) { + // NOTE: generating multiple handlers per addEventListener invocation, should + // revisit and verify we can just use one (almost certainly) + clickHandler = self._breadcrumbEventHandler('click'); + keypressHandler = self._keypressEventHandler(); + + before = function before(evt) { + // need to intercept every DOM event in `before` argument, in case that + // same wrapped method is re-used for different events (e.g. mousemove THEN click) + // see #724 + if (!evt) return; + var eventType; + + try { + eventType = evt.type; + } catch (e) { + // just accessing event properties can throw an exception in some rare circumstances + // see: https://github.com/getsentry/raven-js/issues/838 + return; + } + + if (eventType === 'click') return clickHandler(evt);else if (eventType === 'keypress') return keypressHandler(evt); + }; + } + + return orig.call(this, evtName, self.wrap(fn, undefined, before), capture, secure); + }; + }, wrappedBuiltIns); + fill(proto, 'removeEventListener', function (orig) { + return function (evt, fn, capture, secure) { + try { + fn = fn && (fn.__raven_wrapper__ ? fn.__raven_wrapper__ : fn); + } catch (e) {// ignore, accessing __raven_wrapper__ will throw in some Selenium environments + } + + return orig.call(this, evt, fn, capture, secure); + }; + }, wrappedBuiltIns); + } + } + + fill(_window$1, 'setTimeout', wrapTimeFn, wrappedBuiltIns); + fill(_window$1, 'setInterval', wrapTimeFn, wrappedBuiltIns); + + if (_window$1.requestAnimationFrame) { + fill(_window$1, 'requestAnimationFrame', function (orig) { + return function (cb) { + return orig(self.wrap(cb)); + }; + }, wrappedBuiltIns); + } // event targets borrowed from bugsnag-js: + // https://github.com/bugsnag/bugsnag-js/blob/master/src/bugsnag.js#L666 + + + var eventTargets = ['EventTarget', 'Window', 'Node', 'ApplicationCache', 'AudioTrackList', 'ChannelMergerNode', 'CryptoOperation', 'EventSource', 'FileReader', 'HTMLUnknownElement', 'IDBDatabase', 'IDBRequest', 'IDBTransaction', 'KeyOperation', 'MediaController', 'MessagePort', 'ModalWindow', 'Notification', 'SVGElementInstance', 'Screen', 'TextTrack', 'TextTrackCue', 'TextTrackList', 'WebSocket', 'WebSocketWorker', 'Worker', 'XMLHttpRequest', 'XMLHttpRequestEventTarget', 'XMLHttpRequestUpload']; + + for (var i = 0; i < eventTargets.length; i++) { + wrapEventTarget(eventTargets[i]); + } + }, + + /** + * Instrument browser built-ins w/ breadcrumb capturing + * - XMLHttpRequests + * - DOM interactions (click/typing) + * - window.location changes + * - console + * + * Can be disabled or individually configured via the `autoBreadcrumbs` config option + */ + _instrumentBreadcrumbs: function _instrumentBreadcrumbs() { + var self = this; + var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; + var wrappedBuiltIns = self._wrappedBuiltIns; + + function wrapProp(prop, xhr) { + if (prop in xhr && isFunction(xhr[prop])) { + fill(xhr, prop, function (orig) { + return self.wrap(orig); + }); // intentionally don't track filled methods on XHR instances + } + } + + if (autoBreadcrumbs.xhr && 'XMLHttpRequest' in _window$1) { + var xhrproto = XMLHttpRequest.prototype; + fill(xhrproto, 'open', function (origOpen) { + return function (method, url) { + // preserve arity + // if Sentry key appears in URL, don't capture + if (isString(url) && url.indexOf(self._globalKey) === -1) { + this.__raven_xhr = { + method: method, + url: url, + status_code: null + }; + } + + return origOpen.apply(this, arguments); + }; + }, wrappedBuiltIns); + fill(xhrproto, 'send', function (origSend) { + return function () { + // preserve arity + var xhr = this; + + function onreadystatechangeHandler() { + if (xhr.__raven_xhr && xhr.readyState === 4) { + try { + // touching statusCode in some platforms throws + // an exception + xhr.__raven_xhr.status_code = xhr.status; + } catch (e) { + /* do nothing */ + } + + self.captureBreadcrumb({ + type: 'http', + category: 'xhr', + data: xhr.__raven_xhr + }); + } + } + + var props = ['onload', 'onerror', 'onprogress']; + + for (var j = 0; j < props.length; j++) { + wrapProp(props[j], xhr); + } + + if ('onreadystatechange' in xhr && isFunction(xhr.onreadystatechange)) { + fill(xhr, 'onreadystatechange', function (orig) { + return self.wrap(orig, undefined, onreadystatechangeHandler); + } + /* intentionally don't track this instrumentation */ + ); + } else { + // if onreadystatechange wasn't actually set by the page on this xhr, we + // are free to set our own and capture the breadcrumb + xhr.onreadystatechange = onreadystatechangeHandler; + } + + return origSend.apply(this, arguments); + }; + }, wrappedBuiltIns); + } + + if (autoBreadcrumbs.xhr && supportsFetch()) { + fill(_window$1, 'fetch', function (origFetch) { + return function () { + // preserve arity + // Make a copy of the arguments to prevent deoptimization + // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments + var args = new Array(arguments.length); + + for (var i = 0; i < args.length; ++i) { + args[i] = arguments[i]; + } + + var fetchInput = args[0]; + var method = 'GET'; + var url; + + if (typeof fetchInput === 'string') { + url = fetchInput; + } else if ('Request' in _window$1 && fetchInput instanceof _window$1.Request) { + url = fetchInput.url; + + if (fetchInput.method) { + method = fetchInput.method; + } + } else { + url = '' + fetchInput; + } // if Sentry key appears in URL, don't capture, as it's our own request + + + if (url.indexOf(self._globalKey) !== -1) { + return origFetch.apply(this, args); + } + + if (args[1] && args[1].method) { + method = args[1].method; + } + + var fetchData = { + method: method, + url: url, + status_code: null + }; + return origFetch.apply(this, args).then(function (response) { + fetchData.status_code = response.status; + self.captureBreadcrumb({ + type: 'http', + category: 'fetch', + data: fetchData + }); + return response; + }); + }; + }, wrappedBuiltIns); + } // Capture breadcrumbs from any click that is unhandled / bubbled up all the way + // to the document. Do this before we instrument addEventListener. + + + if (autoBreadcrumbs.dom && this._hasDocument) { + if (_document.addEventListener) { + _document.addEventListener('click', self._breadcrumbEventHandler('click'), false); + + _document.addEventListener('keypress', self._keypressEventHandler(), false); + } else { + // IE8 Compatibility + _document.attachEvent('onclick', self._breadcrumbEventHandler('click')); + + _document.attachEvent('onkeypress', self._keypressEventHandler()); + } + } // record navigation (URL) changes + // NOTE: in Chrome App environment, touching history.pushState, *even inside + // a try/catch block*, will cause Chrome to output an error to console.error + // borrowed from: https://github.com/angular/angular.js/pull/13945/files + + + var chrome = _window$1.chrome; + var isChromePackagedApp = chrome && chrome.app && chrome.app.runtime; + var hasPushAndReplaceState = !isChromePackagedApp && _window$1.history && history.pushState && history.replaceState; + + if (autoBreadcrumbs.location && hasPushAndReplaceState) { + // TODO: remove onpopstate handler on uninstall() + var oldOnPopState = _window$1.onpopstate; + + _window$1.onpopstate = function () { + var currentHref = self._location.href; + + self._captureUrlChange(self._lastHref, currentHref); + + if (oldOnPopState) { + return oldOnPopState.apply(this, arguments); + } + }; + + var historyReplacementFunction = function historyReplacementFunction(origHistFunction) { + // note history.pushState.length is 0; intentionally not declaring + // params to preserve 0 arity + return function () + /* state, title, url */ + { + var url = arguments.length > 2 ? arguments[2] : undefined; // url argument is optional + + if (url) { + // coerce to string (this is what pushState does) + self._captureUrlChange(self._lastHref, url + ''); + } + + return origHistFunction.apply(this, arguments); + }; + }; + + fill(history, 'pushState', historyReplacementFunction, wrappedBuiltIns); + fill(history, 'replaceState', historyReplacementFunction, wrappedBuiltIns); + } + + if (autoBreadcrumbs.console && 'console' in _window$1 && console.log) { + // console + var consoleMethodCallback = function consoleMethodCallback(msg, data) { + self.captureBreadcrumb({ + message: msg, + level: data.level, + category: 'console' + }); + }; + + each(['debug', 'info', 'warn', 'error', 'log'], function (_, level) { + wrapConsoleMethod(console, level, consoleMethodCallback); + }); + } + }, + _restoreBuiltIns: function _restoreBuiltIns() { + // restore any wrapped builtins + var builtin; + + while (this._wrappedBuiltIns.length) { + builtin = this._wrappedBuiltIns.shift(); + var obj = builtin[0], + name = builtin[1], + orig = builtin[2]; + obj[name] = orig; + } + }, + _restoreConsole: function _restoreConsole() { + // eslint-disable-next-line guard-for-in + for (var method in this._originalConsoleMethods) { + this._originalConsole[method] = this._originalConsoleMethods[method]; + } + }, + _drainPlugins: function _drainPlugins() { + var self = this; // FIX ME TODO + + each(this._plugins, function (_, plugin) { + var installer = plugin[0]; + var args = plugin[1]; + installer.apply(self, [self].concat(args)); + }); + }, + _parseDSN: function _parseDSN(str) { + var m = dsnPattern.exec(str), + dsn = {}, + i = 7; + + try { + while (i--) { + dsn[dsnKeys[i]] = m[i] || ''; + } + } catch (e) { + throw new configError('Invalid DSN: ' + str); + } + + if (dsn.pass && !this._globalOptions.allowSecretKey) { + throw new configError('Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key'); + } + + return dsn; + }, + _getGlobalServer: function _getGlobalServer(uri) { + // assemble the endpoint from the uri pieces + var globalServer = '//' + uri.host + (uri.port ? ':' + uri.port : ''); + + if (uri.protocol) { + globalServer = uri.protocol + ':' + globalServer; + } + + return globalServer; + }, + _handleOnErrorStackInfo: function _handleOnErrorStackInfo() { + // if we are intentionally ignoring errors via onerror, bail out + if (!this._ignoreOnError) { + this._handleStackInfo.apply(this, arguments); + } + }, + _handleStackInfo: function _handleStackInfo(stackInfo, options) { + var frames = this._prepareFrames(stackInfo, options); + + this._triggerEvent('handle', { + stackInfo: stackInfo, + options: options + }); + + this._processException(stackInfo.name, stackInfo.message, stackInfo.url, stackInfo.lineno, frames, options); + }, + _prepareFrames: function _prepareFrames(stackInfo, options) { + var self = this; + var frames = []; + + if (stackInfo.stack && stackInfo.stack.length) { + each(stackInfo.stack, function (i, stack) { + var frame = self._normalizeFrame(stack, stackInfo.url); + + if (frame) { + frames.push(frame); + } + }); // e.g. frames captured via captureMessage throw + + if (options && options.trimHeadFrames) { + for (var j = 0; j < options.trimHeadFrames && j < frames.length; j++) { + frames[j].in_app = false; + } + } + } + + frames = frames.slice(0, this._globalOptions.stackTraceLimit); + return frames; + }, + _normalizeFrame: function _normalizeFrame(frame, stackInfoUrl) { + // normalize the frames data + var normalized = { + filename: frame.url, + lineno: frame.line, + colno: frame.column, + function: frame.func || '?' + }; // Case when we don't have any information about the error + // E.g. throwing a string or raw object, instead of an `Error` in Firefox + // Generating synthetic error doesn't add any value here + // + // We should probably somehow let a user know that they should fix their code + + if (!frame.url) { + normalized.filename = stackInfoUrl; // fallback to whole stacks url from onerror handler + } + + normalized.in_app = !( // determine if an exception came from outside of our app + // first we check the global includePaths list. + !!this._globalOptions.includePaths.test && !this._globalOptions.includePaths.test(normalized.filename) || // Now we check for fun, if the function name is Raven or TraceKit + /(Raven|TraceKit)\./.test(normalized['function']) || // finally, we do a last ditch effort and check for raven.min.js + /raven\.(min\.)?js$/.test(normalized.filename)); + return normalized; + }, + _processException: function _processException(type, message, fileurl, lineno, frames, options) { + var prefixedMessage = (type ? type + ': ' : '') + (message || ''); + + if (!!this._globalOptions.ignoreErrors.test && (this._globalOptions.ignoreErrors.test(message) || this._globalOptions.ignoreErrors.test(prefixedMessage))) { + return; + } + + var stacktrace; + + if (frames && frames.length) { + fileurl = frames[0].filename || fileurl; // Sentry expects frames oldest to newest + // and JS sends them as newest to oldest + + frames.reverse(); + stacktrace = { + frames: frames + }; + } else if (fileurl) { + stacktrace = { + frames: [{ + filename: fileurl, + lineno: lineno, + in_app: true + }] + }; + } + + if (!!this._globalOptions.ignoreUrls.test && this._globalOptions.ignoreUrls.test(fileurl)) { + return; + } + + if (!!this._globalOptions.whitelistUrls.test && !this._globalOptions.whitelistUrls.test(fileurl)) { + return; + } + + var data = objectMerge({ + // sentry.interfaces.Exception + exception: { + values: [{ + type: type, + value: message, + stacktrace: stacktrace + }] + }, + culprit: fileurl + }, options); // Fire away! + + this._send(data); + }, + _trimPacket: function _trimPacket(data) { + // For now, we only want to truncate the two different messages + // but this could/should be expanded to just trim everything + var max = this._globalOptions.maxMessageLength; + + if (data.message) { + data.message = truncate(data.message, max); + } + + if (data.exception) { + var exception = data.exception.values[0]; + exception.value = truncate(exception.value, max); + } + + var request = data.request; + + if (request) { + if (request.url) { + request.url = truncate(request.url, this._globalOptions.maxUrlLength); + } + + if (request.Referer) { + request.Referer = truncate(request.Referer, this._globalOptions.maxUrlLength); + } + } + + if (data.breadcrumbs && data.breadcrumbs.values) this._trimBreadcrumbs(data.breadcrumbs); + return data; + }, + + /** + * Truncate breadcrumb values (right now just URLs) + */ + _trimBreadcrumbs: function _trimBreadcrumbs(breadcrumbs) { + // known breadcrumb properties with urls + // TODO: also consider arbitrary prop values that start with (https?)?:// + var urlProps = ['to', 'from', 'url'], + urlProp, + crumb, + data; + + for (var i = 0; i < breadcrumbs.values.length; ++i) { + crumb = breadcrumbs.values[i]; + if (!crumb.hasOwnProperty('data') || !isObject(crumb.data) || objectFrozen(crumb.data)) continue; + data = objectMerge({}, crumb.data); + + for (var j = 0; j < urlProps.length; ++j) { + urlProp = urlProps[j]; + + if (data.hasOwnProperty(urlProp) && data[urlProp]) { + data[urlProp] = truncate(data[urlProp], this._globalOptions.maxUrlLength); + } + } + + breadcrumbs.values[i].data = data; + } + }, + _getHttpData: function _getHttpData() { + if (!this._hasNavigator && !this._hasDocument) return; + var httpData = {}; + + if (this._hasNavigator && _navigator.userAgent) { + httpData.headers = { + 'User-Agent': navigator.userAgent + }; + } // Check in `window` instead of `document`, as we may be in ServiceWorker environment + + + if (_window$1.location && _window$1.location.href) { + httpData.url = _window$1.location.href; + } + + if (this._hasDocument && _document.referrer) { + if (!httpData.headers) httpData.headers = {}; + httpData.headers.Referer = _document.referrer; + } + + return httpData; + }, + _resetBackoff: function _resetBackoff() { + this._backoffDuration = 0; + this._backoffStart = null; + }, + _shouldBackoff: function _shouldBackoff() { + return this._backoffDuration && now() - this._backoffStart < this._backoffDuration; + }, + + /** + * Returns true if the in-process data payload matches the signature + * of the previously-sent data + * + * NOTE: This has to be done at this level because TraceKit can generate + * data from window.onerror WITHOUT an exception object (IE8, IE9, + * other old browsers). This can take the form of an "exception" + * data object with a single frame (derived from the onerror args). + */ + _isRepeatData: function _isRepeatData(current) { + var last = this._lastData; + if (!last || current.message !== last.message || // defined for captureMessage + current.culprit !== last.culprit // defined for captureException/onerror + ) return false; // Stacktrace interface (i.e. from captureMessage) + + if (current.stacktrace || last.stacktrace) { + return isSameStacktrace(current.stacktrace, last.stacktrace); + } else if (current.exception || last.exception) { + // Exception interface (i.e. from captureException/onerror) + return isSameException(current.exception, last.exception); + } + + return true; + }, + _setBackoffState: function _setBackoffState(request) { + // If we are already in a backoff state, don't change anything + if (this._shouldBackoff()) { + return; + } + + var status = request.status; // 400 - project_id doesn't exist or some other fatal + // 401 - invalid/revoked dsn + // 429 - too many requests + + if (!(status === 400 || status === 401 || status === 429)) return; + var retry; + + try { + // If Retry-After is not in Access-Control-Expose-Headers, most + // browsers will throw an exception trying to access it + if (supportsFetch()) { + retry = request.headers.get('Retry-After'); + } else { + retry = request.getResponseHeader('Retry-After'); + } // Retry-After is returned in seconds + + + retry = parseInt(retry, 10) * 1000; + } catch (e) { + /* eslint no-empty:0 */ + } + + this._backoffDuration = retry ? // If Sentry server returned a Retry-After value, use it + retry : // Otherwise, double the last backoff duration (starts at 1 sec) + this._backoffDuration * 2 || 1000; + this._backoffStart = now(); + }, + _send: function _send(data) { + var globalOptions = this._globalOptions; + + var baseData = { + project: this._globalProject, + logger: globalOptions.logger, + platform: 'javascript' + }, + httpData = this._getHttpData(); + + if (httpData) { + baseData.request = httpData; + } // HACK: delete `trimHeadFrames` to prevent from appearing in outbound payload + + + if (data.trimHeadFrames) delete data.trimHeadFrames; + data = objectMerge(baseData, data); // Merge in the tags and extra separately since objectMerge doesn't handle a deep merge + + data.tags = objectMerge(objectMerge({}, this._globalContext.tags), data.tags); + data.extra = objectMerge(objectMerge({}, this._globalContext.extra), data.extra); // Send along our own collected metadata with extra + + data.extra['session:duration'] = now() - this._startTime; + + if (this._breadcrumbs && this._breadcrumbs.length > 0) { + // intentionally make shallow copy so that additions + // to breadcrumbs aren't accidentally sent in this request + data.breadcrumbs = { + values: [].slice.call(this._breadcrumbs, 0) + }; + } + + if (this._globalContext.user) { + // sentry.interfaces.User + data.user = this._globalContext.user; + } // Include the environment if it's defined in globalOptions + + + if (globalOptions.environment) data.environment = globalOptions.environment; // Include the release if it's defined in globalOptions + + if (globalOptions.release) data.release = globalOptions.release; // Include server_name if it's defined in globalOptions + + if (globalOptions.serverName) data.server_name = globalOptions.serverName; // Cleanup empty properties before sending them to the server + + Object.keys(data).forEach(function (key) { + if (data[key] == null || data[key] === '' || isEmptyObject(data[key])) { + delete data[key]; + } + }); + + if (isFunction(globalOptions.dataCallback)) { + data = globalOptions.dataCallback(data) || data; + } // Why?????????? + + + if (!data || isEmptyObject(data)) { + return; + } // Check if the request should be filtered or not + + + if (isFunction(globalOptions.shouldSendCallback) && !globalOptions.shouldSendCallback(data)) { + return; + } // Backoff state: Sentry server previously responded w/ an error (e.g. 429 - too many requests), + // so drop requests until "cool-off" period has elapsed. + + + if (this._shouldBackoff()) { + this._logDebug('warn', 'Raven dropped error due to backoff: ', data); + + return; + } + + if (typeof globalOptions.sampleRate === 'number') { + if (Math.random() < globalOptions.sampleRate) { + this._sendProcessedPayload(data); + } + } else { + this._sendProcessedPayload(data); + } + }, + _getUuid: function _getUuid() { + return uuid4(); + }, + _sendProcessedPayload: function _sendProcessedPayload(data, callback) { + var self = this; + var globalOptions = this._globalOptions; + if (!this.isSetup()) return; // Try and clean up the packet before sending by truncating long values + + data = this._trimPacket(data); // ideally duplicate error testing should occur *before* dataCallback/shouldSendCallback, + // but this would require copying an un-truncated copy of the data packet, which can be + // arbitrarily deep (extra_data) -- could be worthwhile? will revisit + + if (!this._globalOptions.allowDuplicates && this._isRepeatData(data)) { + this._logDebug('warn', 'Raven dropped repeat event: ', data); + + return; + } // Send along an event_id if not explicitly passed. + // This event_id can be used to reference the error within Sentry itself. + // Set lastEventId after we know the error should actually be sent + + + this._lastEventId = data.event_id || (data.event_id = this._getUuid()); // Store outbound payload after trim + + this._lastData = data; + + this._logDebug('debug', 'Raven about to send:', data); + + var auth = { + sentry_version: '7', + sentry_client: 'raven-js/' + this.VERSION, + sentry_key: this._globalKey + }; + + if (this._globalSecret) { + auth.sentry_secret = this._globalSecret; + } + + var exception = data.exception && data.exception.values[0]; // only capture 'sentry' breadcrumb is autoBreadcrumbs is truthy + + if (this._globalOptions.autoBreadcrumbs && this._globalOptions.autoBreadcrumbs.sentry) { + this.captureBreadcrumb({ + category: 'sentry', + message: exception ? (exception.type ? exception.type + ': ' : '') + exception.value : data.message, + event_id: data.event_id, + level: data.level || 'error' // presume error unless specified + + }); + } + + var url = this._globalEndpoint; + + (globalOptions.transport || this._makeRequest).call(this, { + url: url, + auth: auth, + data: data, + options: globalOptions, + onSuccess: function success() { + self._resetBackoff(); + + self._triggerEvent('success', { + data: data, + src: url + }); + + callback && callback(); + }, + onError: function failure(error) { + self._logDebug('error', 'Raven transport failed to send: ', error); + + if (error.request) { + self._setBackoffState(error.request); + } + + self._triggerEvent('failure', { + data: data, + src: url + }); + + error = error || new Error('Raven send failed (no additional details provided)'); + callback && callback(error); + } + }); + }, + _makeRequest: function _makeRequest(opts) { + // Auth is intentionally sent as part of query string (NOT as custom HTTP header) to avoid preflight CORS requests + var url = opts.url + '?' + urlencode(opts.auth); + var evaluatedHeaders = null; + var evaluatedFetchParameters = {}; + + if (opts.options.headers) { + evaluatedHeaders = this._evaluateHash(opts.options.headers); + } + + if (opts.options.fetchParameters) { + evaluatedFetchParameters = this._evaluateHash(opts.options.fetchParameters); + } + + if (supportsFetch()) { + evaluatedFetchParameters.body = stringify_1(opts.data); + var defaultFetchOptions = objectMerge({}, this._fetchDefaults); + var fetchOptions = objectMerge(defaultFetchOptions, evaluatedFetchParameters); + + if (evaluatedHeaders) { + fetchOptions.headers = evaluatedHeaders; + } + + return _window$1.fetch(url, fetchOptions).then(function (response) { + if (response.ok) { + opts.onSuccess && opts.onSuccess(); + } else { + var error = new Error('Sentry error code: ' + response.status); // It's called request only to keep compatibility with XHR interface + // and not add more redundant checks in setBackoffState method + + error.request = response; + opts.onError && opts.onError(error); + } + })['catch'](function () { + opts.onError && opts.onError(new Error('Sentry error code: network unavailable')); + }); + } + + var request = _window$1.XMLHttpRequest && new _window$1.XMLHttpRequest(); + if (!request) return; // if browser doesn't support CORS (e.g. IE7), we are out of luck + + var hasCORS = 'withCredentials' in request || typeof XDomainRequest !== 'undefined'; + if (!hasCORS) return; + + if ('withCredentials' in request) { + request.onreadystatechange = function () { + if (request.readyState !== 4) { + return; + } else if (request.status === 200) { + opts.onSuccess && opts.onSuccess(); + } else if (opts.onError) { + var err = new Error('Sentry error code: ' + request.status); + err.request = request; + opts.onError(err); + } + }; + } else { + request = new XDomainRequest(); // xdomainrequest cannot go http -> https (or vice versa), + // so always use protocol relative + + url = url.replace(/^https?:/, ''); // onreadystatechange not supported by XDomainRequest + + if (opts.onSuccess) { + request.onload = opts.onSuccess; + } + + if (opts.onError) { + request.onerror = function () { + var err = new Error('Sentry error code: XDomainRequest'); + err.request = request; + opts.onError(err); + }; + } + } + + request.open('POST', url); + + if (evaluatedHeaders) { + each(evaluatedHeaders, function (key, value) { + request.setRequestHeader(key, value); + }); + } + + request.send(stringify_1(opts.data)); + }, + _evaluateHash: function _evaluateHash(hash) { + var evaluated = {}; + + for (var key in hash) { + if (hash.hasOwnProperty(key)) { + var value = hash[key]; + evaluated[key] = typeof value === 'function' ? value() : value; + } + } + + return evaluated; + }, + _logDebug: function _logDebug(level) { + if (this._originalConsoleMethods[level] && this.debug) { + // In IE<10 console methods do not have their own 'apply' method + Function.prototype.apply.call(this._originalConsoleMethods[level], this._originalConsole, [].slice.call(arguments, 1)); + } + }, + _mergeContext: function _mergeContext(key, context) { + if (isUndefined(context)) { + delete this._globalContext[key]; + } else { + this._globalContext[key] = objectMerge(this._globalContext[key] || {}, context); + } + } +}; // Deprecations + +Raven$1.prototype.setUser = Raven$1.prototype.setUserContext; +Raven$1.prototype.setReleaseContext = Raven$1.prototype.setRelease; +var raven = Raven$1; + +/** + * Enforces a single instance of the Raven client, and the + * main entry point for Raven. If you are a consumer of the + * Raven library, you SHOULD load this file (vs raven.js). + **/ +// This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) + +var _window = typeof window !== 'undefined' ? window : typeof commonjsGlobal !== 'undefined' ? commonjsGlobal : typeof self !== 'undefined' ? self : {}; + +var _Raven = _window.Raven; +var Raven = new raven(); +/* + * Allow multiple versions of Raven to be installed. + * Strip Raven from the global context and returns the instance. + * + * @return {Raven} + */ + +Raven.noConflict = function () { + _window.Raven = _Raven; + return Raven; +}; + +Raven.afterLoad(); +var singleton = Raven; + +/** + * Angular.js plugin + * + * Provides an $exceptionHandler for Angular.js + */ + +var wrappedCallback$1 = utils.wrappedCallback; // See https://github.com/angular/angular.js/blob/v1.4.7/src/minErr.js + +var angularPattern = /^\[((?:[$a-zA-Z0-9]+:)?(?:[$a-zA-Z0-9]+))\] (.*?)\n?(\S+)$/; +var moduleName = 'ngRaven'; + +function angularPlugin(Raven, angular) { + angular = angular || window.angular; + if (!angular) return; + + function RavenProvider() { + this.$get = ['$window', function ($window) { + return Raven; + }]; + } + + function ExceptionHandlerProvider($provide) { + $provide.decorator('$exceptionHandler', ['Raven', '$delegate', exceptionHandler]); + } + + function exceptionHandler(R, $delegate) { + return function (ex, cause) { + R.captureException(ex, { + extra: { + cause: cause + } + }); + $delegate(ex, cause); + }; + } + + angular.module(moduleName, []).provider('Raven', RavenProvider).config(['$provide', ExceptionHandlerProvider]); + Raven.setDataCallback(wrappedCallback$1(function (data) { + return angularPlugin._normalizeData(data); + })); +} + +angularPlugin._normalizeData = function (data) { + // We only care about mutating an exception + var exception = data.exception; + + if (exception) { + exception = exception.values[0]; + var matches = angularPattern.exec(exception.value); + + if (matches) { + // This type now becomes something like: $rootScope:inprog + exception.type = matches[1]; + exception.value = matches[2]; + data.message = exception.type + ': ' + exception.value; // auto set a new tag specifically for the angular error url + + data.extra.angularDocs = matches[3].substr(0, 250); + } + } + + return data; +}; + +angularPlugin.moduleName = moduleName; +var angular = angularPlugin; + +/** + * console plugin + * + * Monkey patches console.* calls into Sentry messages with + * their appropriate log levels. (Experimental) + * + * Options: + * + * `levels`: An array of levels (methods on `console`) to report to Sentry. + * Defaults to debug, info, warn, and error. + */ + +var wrapConsoleMethod$1 = console$1.wrapMethod; + +function consolePlugin(Raven, console, pluginOptions) { + console = console || window.console || {}; + pluginOptions = pluginOptions || {}; + var logLevels = pluginOptions.levels || ['debug', 'info', 'warn', 'error']; + if ('assert' in console) logLevels.push('assert'); + + var callback = function callback(msg, data) { + Raven.captureMessage(msg, data); + }; + + var level = logLevels.pop(); + + while (level) { + wrapConsoleMethod$1(console, level, callback); + level = logLevels.pop(); + } +} + +var console$3 = consolePlugin; + +/** + * Vue.js 2.0 plugin + * + */ +function formatComponentName(vm) { + if (vm.$root === vm) { + return 'root instance'; + } + + var name = vm._isVue ? vm.$options.name || vm.$options._componentTag : vm.name; + return (name ? 'component <' + name + '>' : 'anonymous component') + (vm._isVue && vm.$options.__file ? ' at ' + vm.$options.__file : ''); +} + +function vuePlugin(Raven, Vue) { + Vue = Vue || window.Vue; // quit if Vue isn't on the page + + if (!Vue || !Vue.config) return; + var _oldOnError = Vue.config.errorHandler; + + Vue.config.errorHandler = function VueErrorHandler(error, vm, info) { + var metaData = {}; // vm and lifecycleHook are not always available + + if (Object.prototype.toString.call(vm) === '[object Object]') { + metaData.componentName = formatComponentName(vm); + metaData.propsData = vm.$options.propsData; + } + + if (typeof info !== 'undefined') { + metaData.lifecycleHook = info; + } + + Raven.captureException(error, { + extra: metaData + }); + + if (typeof _oldOnError === 'function') { + _oldOnError.call(this, error, vm, info); + } + }; +} + +var vue = vuePlugin; + +/* This file was generated by './scripts/generate-plugin-combinations.js'! */ + +singleton.addPlugin(angular).addPlugin(console$3).addPlugin(vue); +var angular_console_vue = {}; + +return angular_console_vue; + +}))); diff --git a/dist/angular,console,vue/raven.min.js b/dist/angular,console,vue/raven.min.js new file mode 100644 index 000000000000..67ac32b47c96 --- /dev/null +++ b/dist/angular,console,vue/raven.min.js @@ -0,0 +1,3 @@ +/*! Raven.js 3.22.2 (1b6187b) | github.com/getsentry/raven-js */ +!function(a,b){"object"==typeof exports&&"undefined"!=typeof module?module.exports=b():"function"==typeof define&&define.amd?define(b):a.Raven=b()}(this,function(){"use strict";function a(a,b){return b={exports:{}},a(b,b.exports),b.exports}function b(a){return(b="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(a){return typeof a}:function(a){return a&&"function"==typeof Symbol&&a.constructor===Symbol&&a!==Symbol.prototype?"symbol":typeof a})(a)}function c(a){return"object"===b(a)&&null!==a}function d(a){switch({}.toString.call(a)){case"[object Error]":return!0;case"[object Exception]":return!0;case"[object DOMException]":return!0;default:return a instanceof Error}}function e(a){return l()&&"[object ErrorEvent]"==={}.toString.call(a)}function f(a){return void 0===a}function g(a){return"function"==typeof a}function h(a){return"[object Object]"===Object.prototype.toString.call(a)}function i(a){return"[object String]"===Object.prototype.toString.call(a)}function j(a){return"[object Array]"===Object.prototype.toString.call(a)}function k(a){if(!h(a))return!1;for(var b in a)if(a.hasOwnProperty(b))return!1;return!0}function l(){try{return new ErrorEvent(""),!0}catch(a){return!1}}function m(){if(!("fetch"in Q))return!1;try{return new Headers,new Request(""),new Response,!0}catch(a){return!1}}function n(a){function b(b,c){var d=a(b)||b;return c?c(d)||d:d}return b}function o(a,b){var c,d;if(f(a.length))for(c in a)s(a,c)&&b.call(null,c,a[c]);else if(d=a.length)for(c=0;c ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function y(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&i(b))for(c=b.split(/\s+/),f=0;f":"anonymous component")+(a._isVue&&a.$options.__file?" at "+a.$options.__file:"")}function N(a,b){if(b=b||window.Vue,b&&b.config){var c=b.config.errorHandler;b.config.errorHandler=function(b,d,e){var f={};"[object Object]"===Object.prototype.toString.call(d)&&(f.componentName=M(d),f.propsData=d.$options.propsData),"undefined"!=typeof e&&(f.lifecycleHook=e),a.captureException(b,{extra:f}),"function"==typeof c&&c.call(this,b,d,e)}}}var O="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{},P=Object.setPrototypeOf||function(a,b){return a.C=b,a},Q=("object"==typeof Reflect&&Reflect.construct||function(a,b,c){var d,e=[null];return e.push.apply(e,b),d=a.bind.apply(a,e),P(new d,c.prototype)},"undefined"!=typeof window?window:"undefined"!=typeof O?O:"undefined"!=typeof self?self:{}),R={isObject:c,isError:d,isErrorEvent:e,isUndefined:f,isFunction:g,isPlainObject:h,isString:i,isArray:j,isEmptyObject:k,supportsErrorEvent:l,supportsFetch:m,wrappedCallback:n,each:o,objectMerge:p,truncate:r,objectFrozen:q,hasKey:s,joinRegExp:t,urlencode:u,uuid4:w,htmlTreeAsString:x,htmlElementAsString:y,isSameException:B,isSameStacktrace:C,parseUrl:v,fill:D,safeJoin:E},S={collectWindowErrors:!0,debug:!1},T="undefined"!=typeof window?window:"undefined"!=typeof O?O:"undefined"!=typeof self?self:{},U=[].slice,V="?",W=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;S.report=function(){function a(a){f(),l.push(a)}function b(a){for(var b=l.length-1;b>=0;--b)l[b]===a&&l.splice(b,1)}function c(){g(),l=[]}function d(a,b){var c=null;if(!b||S.collectWindowErrors){for(var d in l)if(l.hasOwnProperty(d))try{l[d].apply(null,[a].concat(U.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function e(a,b,c,e,f){var g=null,i=R.isErrorEvent(f)?f.error:f,k=R.isErrorEvent(a)?a.message:a;if(o)S.computeStackTrace.augmentStackTraceWithInitialElement(o,b,c,k),h();else if(i&&R.isError(i))g=S.computeStackTrace(i),d(g,!0);else{var l,m={url:b,line:c,column:e},n=void 0;if("[object String]"==={}.toString.call(k)){var l=k.match(W);l&&(n=l[1],k=l[2])}m.func=V,g={name:n,message:k,url:F(),stack:[m]},d(g,!0)}return!!j&&j.apply(this,arguments)}function f(){k||(j=T.onerror,T.onerror=e,k=!0)}function g(){k&&(T.onerror=j,k=!1,j=void 0)}function h(){var a=o,b=m;m=null,o=null,n=null,d.apply(null,[a,!1].concat(b))}function i(a,b){var c=U.call(arguments,1);if(o){if(n===a)return;h()}var d=S.computeStackTrace(a);if(o=d,n=a,m=c,setTimeout(function(){n===a&&h()},d.incomplete?2e3:0),b!==!1)throw a}var j,k,l=[],m=null,n=null,o=null;return i.subscribe=a,i.unsubscribe=b,i.uninstall=c,i}(),S.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,d,e=/^\s*at (.*?) ?\(((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,f=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|\[native).*?|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,g=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,h=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,i=/\((\S*)(?::(\d+))(?::(\d+))\)/,j=a.stack.split("\n"),k=[],l=(/^(.*) is undefined$/.exec(a.message),0),m=j.length;l eval")>-1;o&&(b=h.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==l||c[5]||"undefined"==typeof a.columnNumber||(k[0].column=a.columnNumber+1),d={url:c[3],func:c[1]||V,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}!d.func&&d.line&&(d.func=V),k.push(d)}return k.length?{name:a.name,message:a.message,url:F(),stack:k}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=V),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,e){for(var f,g,h=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,i=[],j={},k=!1,l=c.caller;l&&!k;l=l.caller)if(l!==d&&l!==S.report){if(g={url:null,func:V,line:null,column:null},l.name?g.func=l.name:(f=h.exec(l.toString()))&&(g.func=f[1]),"undefined"==typeof g.func)try{g.func=f.input.substring(0,f.input.indexOf("{"))}catch(m){}j[""+l]?k=!0:j[""+l]=!0,i.push(g)}e&&i.splice(0,e);var n={name:a.name,message:a.message,url:F(),stack:i};return b(n,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),n}function d(b,d){var e=null;d=null==d?0:+d;try{if(e=a(b))return e}catch(f){if(S.debug)throw f}try{if(e=c(b,d+1))return e}catch(f){if(S.debug)throw f}return{name:b.name,message:b.message,url:F()}}return d.augmentStackTraceWithInitialElement=b,d.computeStackTraceFromStackProp=a,d}();var X=S,Y=a(function(a,b){function c(a,b){for(var c=0;c0){var i=c(d,this);~i?d.splice(i+1):d.push(this),~i?f.splice(i,1/0,g):f.push(g),~c(d,h)&&(h=b.call(this,g,h))}else d.push(h);return null==a?h instanceof Error?e(h):h:a.call(this,g,h)}}b=a.exports=d,b.getSerialize=f});G.prototype=new Error,G.prototype.constructor=G;var Z=G,$=function(a,b,c){var d=a[b],e=a;if(b in a){var f="warn"===b?"warning":b;a[b]=function(){var a=[].slice.call(arguments),g=R.safeJoin(a," "),h={level:f,logger:"console",extra:{arguments:a}};"assert"===b?a[0]===!1&&(g="Assertion failed: "+(R.safeJoin(a.slice(1)," ")||"console.assert"),h.extra.arguments=a.slice(1),c&&c(g,h)):c&&c(g,h),d&&Function.prototype.apply.call(d,e,a)}}},_={wrapMethod:$},aa=R.isError,ba=R.isObject,ca=R.isErrorEvent,da=R.isUndefined,ea=R.isFunction,fa=R.isString,ga=R.isArray,ha=R.isEmptyObject,ia=R.each,ja=R.objectMerge,ka=R.truncate,la=R.objectFrozen,ma=R.hasKey,na=R.joinRegExp,oa=R.urlencode,pa=R.uuid4,qa=R.htmlTreeAsString,ra=R.isSameException,sa=R.isSameStacktrace,ta=R.parseUrl,ua=R.fill,va=R.supportsFetch,wa=_.wrapMethod,xa="source protocol user pass host port path".split(" "),ya=/^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/,za="undefined"!=typeof window?window:"undefined"!=typeof O?O:"undefined"!=typeof self?self:{},Aa=za.document,Ba=za.navigator;J.prototype={VERSION:"3.22.2",debug:!1,TraceKit:X,config:function(a,b){var c=this;if(c.i)return this.D("error","Error: Raven has already been configured"),c;if(!a)return c;var d=c.m;b&&ia(b,function(a,b){"tags"===a||"extra"===a||"user"===a?c.l[a]=b:d[a]=b}),c.setDSN(a),d.ignoreErrors.push(/^Script error\.?$/),d.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/),d.ignoreErrors=na(d.ignoreErrors),d.ignoreUrls=!!d.ignoreUrls.length&&na(d.ignoreUrls),d.whitelistUrls=!!d.whitelistUrls.length&&na(d.whitelistUrls),d.includePaths=na(d.includePaths),d.maxBreadcrumbs=Math.max(0,Math.min(d.maxBreadcrumbs||100,100));var e={xhr:!0,console:!0,dom:!0,location:!0,sentry:!0},f=d.autoBreadcrumbs;"[object Object]"==={}.toString.call(f)?f=ja(e,f):f!==!1&&(f=e),d.autoBreadcrumbs=f;var g={tryCatch:!0},h=d.instrument;return"[object Object]"==={}.toString.call(h)?h=ja(g,h):h!==!1&&(h=g),d.instrument=h,X.collectWindowErrors=!!d.collectWindowErrors,c},install:function(){var a=this;return a.isSetup()&&!a.p&&(X.report.subscribe(function(){a.E.apply(a,arguments)}),a.F(),a.m.instrument&&a.m.instrument.tryCatch&&a.G(),a.m.autoBreadcrumbs&&a.H(),a.I(),a.p=!0),Error.stackTraceLimit=a.m.stackTraceLimit,this},setDSN:function(a){var b=this,c=b.J(a),d=c.path.lastIndexOf("/"),e=c.path.substr(1,d);b.K=a,b.j=c.user,b.L=c.pass&&c.pass.substr(1),b.k=c.path.substr(d+1),b.i=b.M(c),b.N=b.i+"/"+e+"api/"+b.k+"/store/",this.A()},context:function(a,b,c){return ea(a)&&(c=b||[],b=a,a=void 0),this.wrap(a,b).apply(this,c)},wrap:function(a,b,c){function d(){var d=[],f=arguments.length,g=!a||a&&a.deep!==!1;for(c&&ea(c)&&c.apply(this,arguments);f--;)d[f]=g?e.wrap(a,arguments[f]):arguments[f];try{return b.apply(this,d)}catch(h){throw e.O(),e.captureException(h,a),h}}var e=this;if(da(b)&&!ea(a))return a;if(ea(a)&&(b=a,a=void 0),!ea(b))return b;try{if(b.a)return b;if(b.P)return b.P}catch(f){return b}for(var g in b)ma(b,g)&&(d[g]=b[g]);return d.prototype=b.prototype,b.P=d,d.a=!0,d.b=b,d},uninstall:function(){return X.report.uninstall(),this.Q(),this.R(),this.S(),Error.stackTraceLimit=this.q,this.p=!1,this},captureException:function(a,b){b=ja({trimHeadFrames:0},b?b:{});var c=!aa(a),d=!ca(a),e=ca(a)&&!a.error;if(c&&d||e)return this.captureMessage(a,ja(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}));ca(a)&&(a=a.error),this.f=a;try{var f=X.computeStackTrace(a);this.T(f,b)}catch(g){if(a!==g)throw g}return this},captureMessage:function(a,b){if(!this.m.ignoreErrors.test||!this.m.ignoreErrors.test(a)){b=b||{};var c,d=ja({message:a+""},b);try{throw new Error(a)}catch(e){c=e}c.name=null;var f=X.computeStackTrace(c),g=ga(f.stack)&&f.stack[1],h=g&&g.url||"";if((!this.m.ignoreUrls.test||!this.m.ignoreUrls.test(h))&&(!this.m.whitelistUrls.test||this.m.whitelistUrls.test(h))){if(this.m.stacktrace||b&&b.stacktrace){b=ja({fingerprint:a,trimHeadFrames:(b.trimHeadFrames||0)+1},b);var i=this.U(f,b);d.stacktrace={frames:i.reverse()}}return this.V(d),this}}},captureBreadcrumb:function(a){var b=ja({timestamp:H()/1e3},a);if(ea(this.m.breadcrumbCallback)){var c=this.m.breadcrumbCallback(b);if(ba(c)&&!ha(c))b=c;else if(c===!1)return this}return this.w.push(b),this.w.length>this.m.maxBreadcrumbs&&this.w.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.t.push([a,b]),this.p&&this.I(),this},setUserContext:function(a){return this.l.user=a,this},setExtraContext:function(a){return this.W("extra",a),this},setTagsContext:function(a){return this.W("tags",a),this},clearContext:function(){return this.l={},this},getContext:function(){return JSON.parse(Y(this.l))},setEnvironment:function(a){return this.m.environment=a,this},setRelease:function(a){return this.m.release=a,this},setDataCallback:function(a){var b=this.m.dataCallback;return this.m.dataCallback=I(b,a),this},setBreadcrumbCallback:function(a){var b=this.m.breadcrumbCallback;return this.m.breadcrumbCallback=I(b,a),this},setShouldSendCallback:function(a){var b=this.m.shouldSendCallback;return this.m.shouldSendCallback=I(b,a),this},setTransport:function(a){return this.m.transport=a,this},lastException:function(){return this.f},lastEventId:function(){return this.h},isSetup:function(){return!!this.c&&(!!this.i||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.D("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=za.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(Aa){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new Z("Missing eventId");var c=a.dsn||this.K;if(!c)throw new Z("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.l.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.M(this.J(c)),h=Aa.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(Aa.head||Aa.body).appendChild(h)}},O:function(){var a=this;this.o+=1,setTimeout(function(){a.o-=1})},X:function(a,b){var c,d;if(this.d){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),Aa.createEvent?(c=Aa.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=Aa.createEventObject(),c.eventType=a);for(d in b)ma(b,d)&&(c[d]=b[d]);if(Aa.createEvent)Aa.dispatchEvent(c);else try{Aa.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},Y:function(a){var b=this;return function(c){if(b.Z=null,b.x!==c){b.x=c;var d;try{d=qa(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},$:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.Z;g||a.Y("input")(c),clearTimeout(g),a.Z=setTimeout(function(){a.Z=null},b)}}},_:function(a,b){var c=ta(this.y.href),d=ta(b),e=ta(a);this.z=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},F:function(){var a=this;a.aa=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.a?a.aa.apply(this.b,arguments):a.aa.apply(this,arguments)}},Q:function(){this.aa&&(Function.prototype.toString=this.aa)},G:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b._(b.z,c+""),a.apply(this,arguments)}};ua(history,"pushState",j,d),ua(history,"replaceState",j,d)}if(c.console&&"console"in za&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};ia(["debug","info","warn","error","log"],function(a,b){wa(console,b,k)})}},R:function(){for(var a;this.v.length;){a=this.v.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},S:function(){for(var a in this.s)this.r[a]=this.s[a]},I:function(){var a=this;ia(this.t,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},J:function(a){var b=ya.exec(a),c={},d=7;try{for(;d--;)c[xa[d]]=b[d]||""}catch(e){throw new Z("Invalid DSN: "+a)}if(c.pass&&!this.m.allowSecretKey)throw new Z("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},M:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},E:function(){this.o||this.T.apply(this,arguments)},T:function(a,b){var c=this.U(a,b);this.X("handle",{stackInfo:a,options:b}),this.ca(a.name,a.message,a.url,a.lineno,c,b)},U:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(ia(a.stack,function(b,e){var f=c.da(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.w,0)}),this.l.user&&(a.user=this.l.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||ha(a[b]))&&delete a[b]}),ea(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!ha(a)&&(!ea(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.ja()?void this.D("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() href parsing trick because React Native and other +// environments where DOM might not be available + + +function parseUrl$1(url) { + if (typeof url !== 'string') return {}; + var match = url.match(/^(([^:\/?#]+):)?(\/\/([^\/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?$/); // coerce to undefined values to empty string so we don't get 'undefined' + + var query = match[6] || ''; + var fragment = match[8] || ''; + return { + protocol: match[2], + host: match[4], + path: match[5], + relative: match[5] + query + fragment // everything minus origin + + }; +} + +function uuid4$1() { + var crypto = _window$3.crypto || _window$3.msCrypto; + + if (!isUndefined$1(crypto) && crypto.getRandomValues) { + // Use window.crypto API if available + // eslint-disable-next-line no-undef + var arr = new Uint16Array(8); + crypto.getRandomValues(arr); // set 4 in byte 7 + + arr[3] = arr[3] & 0xfff | 0x4000; // set 2 most significant bits of byte 9 to '10' + + arr[4] = arr[4] & 0x3fff | 0x8000; + + var pad = function pad(num) { + var v = num.toString(16); + + while (v.length < 4) { + v = '0' + v; + } + + return v; + }; + + return pad(arr[0]) + pad(arr[1]) + pad(arr[2]) + pad(arr[3]) + pad(arr[4]) + pad(arr[5]) + pad(arr[6]) + pad(arr[7]); + } else { + // http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/2117523#2117523 + return 'xxxxxxxxxxxx4xxxyxxxxxxxxxxxxxxx'.replace(/[xy]/g, function (c) { + var r = Math.random() * 16 | 0, + v = c === 'x' ? r : r & 0x3 | 0x8; + return v.toString(16); + }); + } +} +/** + * Given a child DOM element, returns a query-selector statement describing that + * and its ancestors + * e.g. [HTMLElement] => body > div > input#foo.btn[name=baz] + * @param elem + * @returns {string} + */ + + +function htmlTreeAsString$1(elem) { + /* eslint no-extra-parens:0*/ + var MAX_TRAVERSE_HEIGHT = 5, + MAX_OUTPUT_LEN = 80, + out = [], + height = 0, + len = 0, + separator = ' > ', + sepLength = separator.length, + nextStr; + + while (elem && height++ < MAX_TRAVERSE_HEIGHT) { + nextStr = htmlElementAsString(elem); // bail out if + // - nextStr is the 'html' element + // - the length of the string that would be created exceeds MAX_OUTPUT_LEN + // (ignore this limit if we are on the first iteration) + + if (nextStr === 'html' || height > 1 && len + out.length * sepLength + nextStr.length >= MAX_OUTPUT_LEN) { + break; + } + + out.push(nextStr); + len += nextStr.length; + elem = elem.parentNode; + } + + return out.reverse().join(separator); +} +/** + * Returns a simple, query-selector representation of a DOM element + * e.g. [HTMLElement] => input#foo.btn[name=baz] + * @param HTMLElement + * @returns {string} + */ + + +function htmlElementAsString(elem) { + var out = [], + className, + classes, + key, + attr, + i; + + if (!elem || !elem.tagName) { + return ''; + } + + out.push(elem.tagName.toLowerCase()); + + if (elem.id) { + out.push('#' + elem.id); + } + + className = elem.className; + + if (className && isString$1(className)) { + classes = className.split(/\s+/); + + for (i = 0; i < classes.length; i++) { + out.push('.' + classes[i]); + } + } + + var attrWhitelist = ['type', 'name', 'title', 'alt']; + + for (i = 0; i < attrWhitelist.length; i++) { + key = attrWhitelist[i]; + attr = elem.getAttribute(key); + + if (attr) { + out.push('[' + key + '="' + attr + '"]'); + } + } + + return out.join(''); +} +/** + * Returns true if either a OR b is truthy, but not both + */ + + +function isOnlyOneTruthy(a, b) { + return !!(!!a ^ !!b); +} +/** + * Returns true if both parameters are undefined + */ + + +function isBothUndefined(a, b) { + return isUndefined$1(a) && isUndefined$1(b); +} +/** + * Returns true if the two input exception interfaces have the same content + */ + + +function isSameException$1(ex1, ex2) { + if (isOnlyOneTruthy(ex1, ex2)) return false; + ex1 = ex1.values[0]; + ex2 = ex2.values[0]; + if (ex1.type !== ex2.type || ex1.value !== ex2.value) return false; // in case both stacktraces are undefined, we can't decide so default to false + + if (isBothUndefined(ex1.stacktrace, ex2.stacktrace)) return false; + return isSameStacktrace$1(ex1.stacktrace, ex2.stacktrace); +} +/** + * Returns true if the two input stack trace interfaces have the same content + */ + + +function isSameStacktrace$1(stack1, stack2) { + if (isOnlyOneTruthy(stack1, stack2)) return false; + var frames1 = stack1.frames; + var frames2 = stack2.frames; // Exit early if frame count differs + + if (frames1.length !== frames2.length) return false; // Iterate through every frame; bail out if anything differs + + var a, b; + + for (var i = 0; i < frames1.length; i++) { + a = frames1[i]; + b = frames2[i]; + if (a.filename !== b.filename || a.lineno !== b.lineno || a.colno !== b.colno || a['function'] !== b['function']) return false; + } + + return true; +} +/** + * Polyfill a method + * @param obj object e.g. `document` + * @param name method name present on object e.g. `addEventListener` + * @param replacement replacement function + * @param track {optional} record instrumentation to an array + */ + + +function fill$1(obj, name, replacement, track) { + var orig = obj[name]; + obj[name] = replacement(orig); + obj[name].__raven__ = true; + obj[name].__orig__ = orig; + + if (track) { + track.push([obj, name, orig]); + } +} +/** + * Join values in array + * @param input array of values to be joined together + * @param delimiter string to be placed in-between values + * @returns {string} + */ + + +function safeJoin(input, delimiter) { + if (!isArray$1(input)) return ''; + var output = []; + + for (var i = 0; i < input.length; i++) { + try { + output.push(String(input[i])); + } catch (e) { + output.push('[value cannot be serialized]'); + } + } + + return output.join(delimiter); +} + +var utils = { + isObject: isObject$1, + isError: isError$1, + isErrorEvent: isErrorEvent$1, + isUndefined: isUndefined$1, + isFunction: isFunction$1, + isPlainObject: isPlainObject, + isString: isString$1, + isArray: isArray$1, + isEmptyObject: isEmptyObject$1, + supportsErrorEvent: supportsErrorEvent, + supportsFetch: supportsFetch$1, + wrappedCallback: wrappedCallback, + each: each$1, + objectMerge: objectMerge$1, + truncate: truncate$1, + objectFrozen: objectFrozen$1, + hasKey: hasKey$1, + joinRegExp: joinRegExp$1, + urlencode: urlencode$1, + uuid4: uuid4$1, + htmlTreeAsString: htmlTreeAsString$1, + htmlElementAsString: htmlElementAsString, + isSameException: isSameException$1, + isSameStacktrace: isSameStacktrace$1, + parseUrl: parseUrl$1, + fill: fill$1, + safeJoin: safeJoin +}; + +/* + TraceKit - Cross brower stack traces + + This was originally forked from github.com/occ/TraceKit, but has since been + largely re-written and is now maintained as part of raven-js. Tests for + this are in test/vendor. + + MIT license +*/ + +var TraceKit = { + collectWindowErrors: true, + debug: false +}; // This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) + +var _window$2 = typeof window !== 'undefined' ? window : typeof commonjsGlobal !== 'undefined' ? commonjsGlobal : typeof self !== 'undefined' ? self : {}; // global reference to slice + + +var _slice = [].slice; +var UNKNOWN_FUNCTION = '?'; // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error#Error_types + +var ERROR_TYPES_RE = /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/; + +function getLocationHref() { + if (typeof document === 'undefined' || document.location == null) return ''; + return document.location.href; +} +/** + * TraceKit.report: cross-browser processing of unhandled exceptions + * + * Syntax: + * TraceKit.report.subscribe(function(stackInfo) { ... }) + * TraceKit.report.unsubscribe(function(stackInfo) { ... }) + * TraceKit.report(exception) + * try { ...code... } catch(ex) { TraceKit.report(ex); } + * + * Supports: + * - Firefox: full stack trace with line numbers, plus column number + * on top frame; column number is not guaranteed + * - Opera: full stack trace with line and column numbers + * - Chrome: full stack trace with line and column numbers + * - Safari: line and column number for the top frame only; some frames + * may be missing, and column number is not guaranteed + * - IE: line and column number for the top frame only; some frames + * may be missing, and column number is not guaranteed + * + * In theory, TraceKit should work on all of the following versions: + * - IE5.5+ (only 8.0 tested) + * - Firefox 0.9+ (only 3.5+ tested) + * - Opera 7+ (only 10.50 tested; versions 9 and earlier may require + * Exceptions Have Stacktrace to be enabled in opera:config) + * - Safari 3+ (only 4+ tested) + * - Chrome 1+ (only 5+ tested) + * - Konqueror 3.5+ (untested) + * + * Requires TraceKit.computeStackTrace. + * + * Tries to catch all unhandled exceptions and report them to the + * subscribed handlers. Please note that TraceKit.report will rethrow the + * exception. This is REQUIRED in order to get a useful stack trace in IE. + * If the exception does not reach the top of the browser, you will only + * get a stack trace from the point where TraceKit.report was called. + * + * Handlers receive a stackInfo object as described in the + * TraceKit.computeStackTrace docs. + */ + + +TraceKit.report = function reportModuleWrapper() { + var handlers = [], + lastArgs = null, + lastException = null, + lastExceptionStack = null; + /** + * Add a crash handler. + * @param {Function} handler + */ + + function subscribe(handler) { + installGlobalHandler(); + handlers.push(handler); + } + /** + * Remove a crash handler. + * @param {Function} handler + */ + + + function unsubscribe(handler) { + for (var i = handlers.length - 1; i >= 0; --i) { + if (handlers[i] === handler) { + handlers.splice(i, 1); + } + } + } + /** + * Remove all crash handlers. + */ + + + function unsubscribeAll() { + uninstallGlobalHandler(); + handlers = []; + } + /** + * Dispatch stack information to all handlers. + * @param {Object.} stack + */ + + + function notifyHandlers(stack, isWindowError) { + var exception = null; + + if (isWindowError && !TraceKit.collectWindowErrors) { + return; + } + + for (var i in handlers) { + if (handlers.hasOwnProperty(i)) { + try { + handlers[i].apply(null, [stack].concat(_slice.call(arguments, 2))); + } catch (inner) { + exception = inner; + } + } + } + + if (exception) { + throw exception; + } + } + + var _oldOnerrorHandler, _onErrorHandlerInstalled; + /** + * Ensures all global unhandled exceptions are recorded. + * Supported by Gecko and IE. + * @param {string} msg Error message. + * @param {string} url URL of script that generated the exception. + * @param {(number|string)} lineNo The line number at which the error + * occurred. + * @param {?(number|string)} colNo The column number at which the error + * occurred. + * @param {?Error} ex The actual Error object. + */ + + + function traceKitWindowOnError(msg, url, lineNo, colNo, ex) { + var stack = null; // If 'ex' is ErrorEvent, get real Error from inside + + var exception = utils.isErrorEvent(ex) ? ex.error : ex; // If 'msg' is ErrorEvent, get real message from inside + + var message = utils.isErrorEvent(msg) ? msg.message : msg; + + if (lastExceptionStack) { + TraceKit.computeStackTrace.augmentStackTraceWithInitialElement(lastExceptionStack, url, lineNo, message); + processLastException(); + } else if (exception && utils.isError(exception)) { + // non-string `exception` arg; attempt to extract stack trace + // New chrome and blink send along a real error object + // Let's just report that like a normal error. + // See: https://mikewest.org/2013/08/debugging-runtime-errors-with-window-onerror + stack = TraceKit.computeStackTrace(exception); + notifyHandlers(stack, true); + } else { + var location = { + url: url, + line: lineNo, + column: colNo + }; + var name = undefined; + var groups; + + if ({}.toString.call(message) === '[object String]') { + var groups = message.match(ERROR_TYPES_RE); + + if (groups) { + name = groups[1]; + message = groups[2]; + } + } + + location.func = UNKNOWN_FUNCTION; + stack = { + name: name, + message: message, + url: getLocationHref(), + stack: [location] + }; + notifyHandlers(stack, true); + } + + if (_oldOnerrorHandler) { + return _oldOnerrorHandler.apply(this, arguments); + } + + return false; + } + + function installGlobalHandler() { + if (_onErrorHandlerInstalled) { + return; + } + + _oldOnerrorHandler = _window$2.onerror; + _window$2.onerror = traceKitWindowOnError; + _onErrorHandlerInstalled = true; + } + + function uninstallGlobalHandler() { + if (!_onErrorHandlerInstalled) { + return; + } + + _window$2.onerror = _oldOnerrorHandler; + _onErrorHandlerInstalled = false; + _oldOnerrorHandler = undefined; + } + + function processLastException() { + var _lastExceptionStack = lastExceptionStack, + _lastArgs = lastArgs; + lastArgs = null; + lastExceptionStack = null; + lastException = null; + notifyHandlers.apply(null, [_lastExceptionStack, false].concat(_lastArgs)); + } + /** + * Reports an unhandled Error to TraceKit. + * @param {Error} ex + * @param {?boolean} rethrow If false, do not re-throw the exception. + * Only used for window.onerror to not cause an infinite loop of + * rethrowing. + */ + + + function report(ex, rethrow) { + var args = _slice.call(arguments, 1); + + if (lastExceptionStack) { + if (lastException === ex) { + return; // already caught by an inner catch block, ignore + } else { + processLastException(); + } + } + + var stack = TraceKit.computeStackTrace(ex); + lastExceptionStack = stack; + lastException = ex; + lastArgs = args; // If the stack trace is incomplete, wait for 2 seconds for + // slow slow IE to see if onerror occurs or not before reporting + // this exception; otherwise, we will end up with an incomplete + // stack trace + + setTimeout(function () { + if (lastException === ex) { + processLastException(); + } + }, stack.incomplete ? 2000 : 0); + + if (rethrow !== false) { + throw ex; // re-throw to propagate to the top level (and cause window.onerror) + } + } + + report.subscribe = subscribe; + report.unsubscribe = unsubscribe; + report.uninstall = unsubscribeAll; + return report; +}(); +/** + * TraceKit.computeStackTrace: cross-browser stack traces in JavaScript + * + * Syntax: + * s = TraceKit.computeStackTrace(exception) // consider using TraceKit.report instead (see below) + * Returns: + * s.name - exception name + * s.message - exception message + * s.stack[i].url - JavaScript or HTML file URL + * s.stack[i].func - function name, or empty for anonymous functions (if guessing did not work) + * s.stack[i].args - arguments passed to the function, if known + * s.stack[i].line - line number, if known + * s.stack[i].column - column number, if known + * + * Supports: + * - Firefox: full stack trace with line numbers and unreliable column + * number on top frame + * - Opera 10: full stack trace with line and column numbers + * - Opera 9-: full stack trace with line numbers + * - Chrome: full stack trace with line and column numbers + * - Safari: line and column number for the topmost stacktrace element + * only + * - IE: no line numbers whatsoever + * + * Tries to guess names of anonymous functions by looking for assignments + * in the source code. In IE and Safari, we have to guess source file names + * by searching for function bodies inside all page scripts. This will not + * work for scripts that are loaded cross-domain. + * Here be dragons: some function names may be guessed incorrectly, and + * duplicate functions may be mismatched. + * + * TraceKit.computeStackTrace should only be used for tracing purposes. + * Logging of unhandled exceptions should be done with TraceKit.report, + * which builds on top of TraceKit.computeStackTrace and provides better + * IE support by utilizing the window.onerror event to retrieve information + * about the top of the stack. + * + * Note: In IE and Safari, no stack trace is recorded on the Error object, + * so computeStackTrace instead walks its *own* chain of callers. + * This means that: + * * in Safari, some methods may be missing from the stack trace; + * * in IE, the topmost function in the stack trace will always be the + * caller of computeStackTrace. + * + * This is okay for tracing (because you are likely to be calling + * computeStackTrace from the function you want to be the topmost element + * of the stack trace anyway), but not okay for logging unhandled + * exceptions (because your catch block will likely be far away from the + * inner function that actually caused the exception). + * + */ + + +TraceKit.computeStackTrace = function computeStackTraceWrapper() { + // Contents of Exception in various browsers. + // + // SAFARI: + // ex.message = Can't find variable: qq + // ex.line = 59 + // ex.sourceId = 580238192 + // ex.sourceURL = http://... + // ex.expressionBeginOffset = 96 + // ex.expressionCaretOffset = 98 + // ex.expressionEndOffset = 98 + // ex.name = ReferenceError + // + // FIREFOX: + // ex.message = qq is not defined + // ex.fileName = http://... + // ex.lineNumber = 59 + // ex.columnNumber = 69 + // ex.stack = ...stack trace... (see the example below) + // ex.name = ReferenceError + // + // CHROME: + // ex.message = qq is not defined + // ex.name = ReferenceError + // ex.type = not_defined + // ex.arguments = ['aa'] + // ex.stack = ...stack trace... + // + // INTERNET EXPLORER: + // ex.message = ... + // ex.name = ReferenceError + // + // OPERA: + // ex.message = ...message... (see the example below) + // ex.name = ReferenceError + // ex.opera#sourceloc = 11 (pretty much useless, duplicates the info in ex.message) + // ex.stacktrace = n/a; see 'opera:config#UserPrefs|Exceptions Have Stacktrace' + + /** + * Computes stack trace information from the stack property. + * Chrome and Gecko use this property. + * @param {Error} ex + * @return {?Object.} Stack trace information. + */ + function computeStackTraceFromStackProp(ex) { + if (typeof ex.stack === 'undefined' || !ex.stack) return; + var chrome = /^\s*at (.*?) ?\(((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i, + gecko = /^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|\[native).*?|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i, + winjs = /^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i, + // Used to additionally parse URL/line/column from eval frames + geckoEval = /(\S+) line (\d+)(?: > eval line \d+)* > eval/i, + chromeEval = /\((\S*)(?::(\d+))(?::(\d+))\)/, + lines = ex.stack.split('\n'), + stack = [], + submatch, + parts, + element, + reference = /^(.*) is undefined$/.exec(ex.message); + + for (var i = 0, j = lines.length; i < j; ++i) { + if (parts = chrome.exec(lines[i])) { + var isNative = parts[2] && parts[2].indexOf('native') === 0; // start of line + + var isEval = parts[2] && parts[2].indexOf('eval') === 0; // start of line + + if (isEval && (submatch = chromeEval.exec(parts[2]))) { + // throw out eval line/column and use top-most line/column number + parts[2] = submatch[1]; // url + + parts[3] = submatch[2]; // line + + parts[4] = submatch[3]; // column + } + + element = { + url: !isNative ? parts[2] : null, + func: parts[1] || UNKNOWN_FUNCTION, + args: isNative ? [parts[2]] : [], + line: parts[3] ? +parts[3] : null, + column: parts[4] ? +parts[4] : null + }; + } else if (parts = winjs.exec(lines[i])) { + element = { + url: parts[2], + func: parts[1] || UNKNOWN_FUNCTION, + args: [], + line: +parts[3], + column: parts[4] ? +parts[4] : null + }; + } else if (parts = gecko.exec(lines[i])) { + var isEval = parts[3] && parts[3].indexOf(' > eval') > -1; + + if (isEval && (submatch = geckoEval.exec(parts[3]))) { + // throw out eval line/column and use top-most line number + parts[3] = submatch[1]; + parts[4] = submatch[2]; + parts[5] = null; // no column when eval + } else if (i === 0 && !parts[5] && typeof ex.columnNumber !== 'undefined') { + // FireFox uses this awesome columnNumber property for its top frame + // Also note, Firefox's column number is 0-based and everything else expects 1-based, + // so adding 1 + // NOTE: this hack doesn't work if top-most frame is eval + stack[0].column = ex.columnNumber + 1; + } + + element = { + url: parts[3], + func: parts[1] || UNKNOWN_FUNCTION, + args: parts[2] ? parts[2].split(',') : [], + line: parts[4] ? +parts[4] : null, + column: parts[5] ? +parts[5] : null + }; + } else { + continue; + } + + if (!element.func && element.line) { + element.func = UNKNOWN_FUNCTION; + } + + stack.push(element); + } + + if (!stack.length) { + return null; + } + + return { + name: ex.name, + message: ex.message, + url: getLocationHref(), + stack: stack + }; + } + /** + * Adds information about the first frame to incomplete stack traces. + * Safari and IE require this to get complete data on the first frame. + * @param {Object.} stackInfo Stack trace information from + * one of the compute* methods. + * @param {string} url The URL of the script that caused an error. + * @param {(number|string)} lineNo The line number of the script that + * caused an error. + * @param {string=} message The error generated by the browser, which + * hopefully contains the name of the object that caused the error. + * @return {boolean} Whether or not the stack information was + * augmented. + */ + + + function augmentStackTraceWithInitialElement(stackInfo, url, lineNo, message) { + var initial = { + url: url, + line: lineNo + }; + + if (initial.url && initial.line) { + stackInfo.incomplete = false; + + if (!initial.func) { + initial.func = UNKNOWN_FUNCTION; + } + + if (stackInfo.stack.length > 0) { + if (stackInfo.stack[0].url === initial.url) { + if (stackInfo.stack[0].line === initial.line) { + return false; // already in stack trace + } else if (!stackInfo.stack[0].line && stackInfo.stack[0].func === initial.func) { + stackInfo.stack[0].line = initial.line; + return false; + } + } + } + + stackInfo.stack.unshift(initial); + stackInfo.partial = true; + return true; + } else { + stackInfo.incomplete = true; + } + + return false; + } + /** + * Computes stack trace information by walking the arguments.caller + * chain at the time the exception occurred. This will cause earlier + * frames to be missed but is the only way to get any stack trace in + * Safari and IE. The top frame is restored by + * {@link augmentStackTraceWithInitialElement}. + * @param {Error} ex + * @return {?Object.} Stack trace information. + */ + + + function computeStackTraceByWalkingCallerChain(ex, depth) { + var functionName = /function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i, + stack = [], + funcs = {}, + recursion = false, + parts, + item; + + for (var curr = computeStackTraceByWalkingCallerChain.caller; curr && !recursion; curr = curr.caller) { + if (curr === computeStackTrace || curr === TraceKit.report) { + // console.log('skipping internal function'); + continue; + } + + item = { + url: null, + func: UNKNOWN_FUNCTION, + line: null, + column: null + }; + + if (curr.name) { + item.func = curr.name; + } else if (parts = functionName.exec(curr.toString())) { + item.func = parts[1]; + } + + if (typeof item.func === 'undefined') { + try { + item.func = parts.input.substring(0, parts.input.indexOf('{')); + } catch (e) {} + } + + if (funcs['' + curr]) { + recursion = true; + } else { + funcs['' + curr] = true; + } + + stack.push(item); + } + + if (depth) { + // console.log('depth is ' + depth); + // console.log('stack is ' + stack.length); + stack.splice(0, depth); + } + + var result = { + name: ex.name, + message: ex.message, + url: getLocationHref(), + stack: stack + }; + augmentStackTraceWithInitialElement(result, ex.sourceURL || ex.fileName, ex.line || ex.lineNumber, ex.message || ex.description); + return result; + } + /** + * Computes a stack trace for an exception. + * @param {Error} ex + * @param {(string|number)=} depth + */ + + + function computeStackTrace(ex, depth) { + var stack = null; + depth = depth == null ? 0 : +depth; + + try { + stack = computeStackTraceFromStackProp(ex); + + if (stack) { + return stack; + } + } catch (e) { + if (TraceKit.debug) { + throw e; + } + } + + try { + stack = computeStackTraceByWalkingCallerChain(ex, depth + 1); + + if (stack) { + return stack; + } + } catch (e) { + if (TraceKit.debug) { + throw e; + } + } + + return { + name: ex.name, + message: ex.message, + url: getLocationHref() + }; + } + + computeStackTrace.augmentStackTraceWithInitialElement = augmentStackTraceWithInitialElement; + computeStackTrace.computeStackTraceFromStackProp = computeStackTraceFromStackProp; + return computeStackTrace; +}(); + +var tracekit = TraceKit; + +var stringify_1 = createCommonjsModule(function (module, exports) { + /* + json-stringify-safe + Like JSON.stringify, but doesn't throw on circular references. + + Originally forked from https://github.com/isaacs/json-stringify-safe + version 5.0.1 on 3/8/2017 and modified to handle Errors serialization + and IE8 compatibility. Tests for this are in test/vendor. + + ISC license: https://github.com/isaacs/json-stringify-safe/blob/master/LICENSE + */ + exports = module.exports = stringify; + exports.getSerialize = serializer; + + function indexOf(haystack, needle) { + for (var i = 0; i < haystack.length; ++i) { + if (haystack[i] === needle) return i; + } + + return -1; + } + + function stringify(obj, replacer, spaces, cycleReplacer) { + return JSON.stringify(obj, serializer(replacer, cycleReplacer), spaces); + } // https://github.com/ftlabs/js-abbreviate/blob/fa709e5f139e7770a71827b1893f22418097fbda/index.js#L95-L106 + + + function stringifyError(value) { + var err = { + // These properties are implemented as magical getters and don't show up in for in + stack: value.stack, + message: value.message, + name: value.name + }; + + for (var i in value) { + if (Object.prototype.hasOwnProperty.call(value, i)) { + err[i] = value[i]; + } + } + + return err; + } + + function serializer(replacer, cycleReplacer) { + var stack = []; + var keys = []; + + if (cycleReplacer == null) { + cycleReplacer = function cycleReplacer(key, value) { + if (stack[0] === value) { + return '[Circular ~]'; + } + + return '[Circular ~.' + keys.slice(0, indexOf(stack, value)).join('.') + ']'; + }; + } + + return function (key, value) { + if (stack.length > 0) { + var thisPos = indexOf(stack, this); + ~thisPos ? stack.splice(thisPos + 1) : stack.push(this); + ~thisPos ? keys.splice(thisPos, Infinity, key) : keys.push(key); + + if (~indexOf(stack, value)) { + value = cycleReplacer.call(this, key, value); + } + } else { + stack.push(value); + } + + return replacer == null ? value instanceof Error ? stringifyError(value) : value : replacer.call(this, key, value); + }; + } +}); +var stringify_2 = stringify_1.getSerialize; + +function RavenConfigError(message) { + this.name = 'RavenConfigError'; + this.message = message; +} + +RavenConfigError.prototype = new Error(); +RavenConfigError.prototype.constructor = RavenConfigError; +var configError = RavenConfigError; + +var wrapMethod = function wrapMethod(console, level, callback) { + var originalConsoleLevel = console[level]; + var originalConsole = console; + + if (!(level in console)) { + return; + } + + var sentryLevel = level === 'warn' ? 'warning' : level; + + console[level] = function () { + var args = [].slice.call(arguments); + var msg = utils.safeJoin(args, ' '); + var data = { + level: sentryLevel, + logger: 'console', + extra: { + arguments: args + } + }; + + if (level === 'assert') { + if (args[0] === false) { + // Default browsers message + msg = 'Assertion failed: ' + (utils.safeJoin(args.slice(1), ' ') || 'console.assert'); + data.extra.arguments = args.slice(1); + callback && callback(msg, data); + } + } else { + callback && callback(msg, data); + } // this fails for some browsers. :( + + + if (originalConsoleLevel) { + // IE9 doesn't allow calling apply on console functions directly + // See: https://stackoverflow.com/questions/5472938/does-ie9-support-console-log-and-is-it-a-real-function#answer-5473193 + Function.prototype.apply.call(originalConsoleLevel, originalConsole, args); + } + }; +}; + +var console$1 = { + wrapMethod: wrapMethod +}; + +/*global XDomainRequest:false */ + +var isError = utils.isError; +var isObject = utils.isObject; +var isErrorEvent = utils.isErrorEvent; +var isUndefined = utils.isUndefined; +var isFunction = utils.isFunction; +var isString = utils.isString; +var isArray = utils.isArray; +var isEmptyObject = utils.isEmptyObject; +var each = utils.each; +var objectMerge = utils.objectMerge; +var truncate = utils.truncate; +var objectFrozen = utils.objectFrozen; +var hasKey = utils.hasKey; +var joinRegExp = utils.joinRegExp; +var urlencode = utils.urlencode; +var uuid4 = utils.uuid4; +var htmlTreeAsString = utils.htmlTreeAsString; +var isSameException = utils.isSameException; +var isSameStacktrace = utils.isSameStacktrace; +var parseUrl = utils.parseUrl; +var fill = utils.fill; +var supportsFetch = utils.supportsFetch; +var wrapConsoleMethod = console$1.wrapMethod; +var dsnKeys = 'source protocol user pass host port path'.split(' '); +var dsnPattern = /^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/; + +function now() { + return +new Date(); +} // This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) + + +var _window$1 = typeof window !== 'undefined' ? window : typeof commonjsGlobal !== 'undefined' ? commonjsGlobal : typeof self !== 'undefined' ? self : {}; + +var _document = _window$1.document; +var _navigator = _window$1.navigator; + +function keepOriginalCallback(original, callback) { + return isFunction(callback) ? function (data) { + return callback(data, original); + } : callback; +} // First, check for JSON support +// If there is no JSON, we no-op the core features of Raven +// since JSON is required to encode the payload + + +function Raven$1() { + this._hasJSON = !!(_typeof(JSON) === 'object' && JSON.stringify); // Raven can run in contexts where there's no document (react-native) + + this._hasDocument = !isUndefined(_document); + this._hasNavigator = !isUndefined(_navigator); + this._lastCapturedException = null; + this._lastData = null; + this._lastEventId = null; + this._globalServer = null; + this._globalKey = null; + this._globalProject = null; + this._globalContext = {}; + this._globalOptions = { + // SENTRY_RELEASE can be injected by https://github.com/getsentry/sentry-webpack-plugin + release: _window$1.SENTRY_RELEASE && _window$1.SENTRY_RELEASE.id, + logger: 'javascript', + ignoreErrors: [], + ignoreUrls: [], + whitelistUrls: [], + includePaths: [], + headers: null, + collectWindowErrors: true, + maxMessageLength: 0, + // By default, truncates URL values to 250 chars + maxUrlLength: 250, + stackTraceLimit: 50, + autoBreadcrumbs: true, + instrument: true, + sampleRate: 1 + }; + this._fetchDefaults = { + method: 'POST', + keepalive: true, + referrerPolicy: 'origin' + }; + this._ignoreOnError = 0; + this._isRavenInstalled = false; + this._originalErrorStackTraceLimit = Error.stackTraceLimit; // capture references to window.console *and* all its methods first + // before the console plugin has a chance to monkey patch + + this._originalConsole = _window$1.console || {}; + this._originalConsoleMethods = {}; + this._plugins = []; + this._startTime = now(); + this._wrappedBuiltIns = []; + this._breadcrumbs = []; + this._lastCapturedEvent = null; + this._keypressTimeout; + this._location = _window$1.location; + this._lastHref = this._location && this._location.href; + + this._resetBackoff(); // eslint-disable-next-line guard-for-in + + + for (var method in this._originalConsole) { + this._originalConsoleMethods[method] = this._originalConsole[method]; + } +} +/* + * The core Raven singleton + * + * @this {Raven} + */ + + +Raven$1.prototype = { + // Hardcode version string so that raven source can be loaded directly via + // webpack (using a build step causes webpack #1617). Grunt verifies that + // this value matches package.json during build. + // See: https://github.com/getsentry/raven-js/issues/465 + VERSION: '3.22.2', + debug: false, + TraceKit: tracekit, + // alias to TraceKit + + /* + * Configure Raven with a DSN and extra options + * + * @param {string} dsn The public Sentry DSN + * @param {object} options Set of global options [optional] + * @return {Raven} + */ + config: function config(dsn, options) { + var self = this; + + if (self._globalServer) { + this._logDebug('error', 'Error: Raven has already been configured'); + + return self; + } + + if (!dsn) return self; + var globalOptions = self._globalOptions; // merge in options + + if (options) { + each(options, function (key, value) { + // tags and extra are special and need to be put into context + if (key === 'tags' || key === 'extra' || key === 'user') { + self._globalContext[key] = value; + } else { + globalOptions[key] = value; + } + }); + } + + self.setDSN(dsn); // "Script error." is hard coded into browsers for errors that it can't read. + // this is the result of a script being pulled in from an external domain and CORS. + + globalOptions.ignoreErrors.push(/^Script error\.?$/); + globalOptions.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/); // join regexp rules into one big rule + + globalOptions.ignoreErrors = joinRegExp(globalOptions.ignoreErrors); + globalOptions.ignoreUrls = globalOptions.ignoreUrls.length ? joinRegExp(globalOptions.ignoreUrls) : false; + globalOptions.whitelistUrls = globalOptions.whitelistUrls.length ? joinRegExp(globalOptions.whitelistUrls) : false; + globalOptions.includePaths = joinRegExp(globalOptions.includePaths); + globalOptions.maxBreadcrumbs = Math.max(0, Math.min(globalOptions.maxBreadcrumbs || 100, 100)); // default and hard limit is 100 + + var autoBreadcrumbDefaults = { + xhr: true, + console: true, + dom: true, + location: true, + sentry: true + }; + var autoBreadcrumbs = globalOptions.autoBreadcrumbs; + + if ({}.toString.call(autoBreadcrumbs) === '[object Object]') { + autoBreadcrumbs = objectMerge(autoBreadcrumbDefaults, autoBreadcrumbs); + } else if (autoBreadcrumbs !== false) { + autoBreadcrumbs = autoBreadcrumbDefaults; + } + + globalOptions.autoBreadcrumbs = autoBreadcrumbs; + var instrumentDefaults = { + tryCatch: true + }; + var instrument = globalOptions.instrument; + + if ({}.toString.call(instrument) === '[object Object]') { + instrument = objectMerge(instrumentDefaults, instrument); + } else if (instrument !== false) { + instrument = instrumentDefaults; + } + + globalOptions.instrument = instrument; + tracekit.collectWindowErrors = !!globalOptions.collectWindowErrors; // return for chaining + + return self; + }, + + /* + * Installs a global window.onerror error handler + * to capture and report uncaught exceptions. + * At this point, install() is required to be called due + * to the way TraceKit is set up. + * + * @return {Raven} + */ + install: function install() { + var self = this; + + if (self.isSetup() && !self._isRavenInstalled) { + tracekit.report.subscribe(function () { + self._handleOnErrorStackInfo.apply(self, arguments); + }); + + self._patchFunctionToString(); + + if (self._globalOptions.instrument && self._globalOptions.instrument.tryCatch) { + self._instrumentTryCatch(); + } + + if (self._globalOptions.autoBreadcrumbs) self._instrumentBreadcrumbs(); // Install all of the plugins + + self._drainPlugins(); + + self._isRavenInstalled = true; + } + + Error.stackTraceLimit = self._globalOptions.stackTraceLimit; + return this; + }, + + /* + * Set the DSN (can be called multiple time unlike config) + * + * @param {string} dsn The public Sentry DSN + */ + setDSN: function setDSN(dsn) { + var self = this, + uri = self._parseDSN(dsn), + lastSlash = uri.path.lastIndexOf('/'), + path = uri.path.substr(1, lastSlash); + + self._dsn = dsn; + self._globalKey = uri.user; + self._globalSecret = uri.pass && uri.pass.substr(1); + self._globalProject = uri.path.substr(lastSlash + 1); + self._globalServer = self._getGlobalServer(uri); + self._globalEndpoint = self._globalServer + '/' + path + 'api/' + self._globalProject + '/store/'; // Reset backoff state since we may be pointing at a + // new project/server + + this._resetBackoff(); + }, + + /* + * Wrap code within a context so Raven can capture errors + * reliably across domains that is executed immediately. + * + * @param {object} options A specific set of options for this context [optional] + * @param {function} func The callback to be immediately executed within the context + * @param {array} args An array of arguments to be called with the callback [optional] + */ + context: function context(options, func, args) { + if (isFunction(options)) { + args = func || []; + func = options; + options = undefined; + } + + return this.wrap(options, func).apply(this, args); + }, + + /* + * Wrap code within a context and returns back a new function to be executed + * + * @param {object} options A specific set of options for this context [optional] + * @param {function} func The function to be wrapped in a new context + * @param {function} func A function to call before the try/catch wrapper [optional, private] + * @return {function} The newly wrapped functions with a context + */ + wrap: function wrap(options, func, _before) { + var self = this; // 1 argument has been passed, and it's not a function + // so just return it + + if (isUndefined(func) && !isFunction(options)) { + return options; + } // options is optional + + + if (isFunction(options)) { + func = options; + options = undefined; + } // At this point, we've passed along 2 arguments, and the second one + // is not a function either, so we'll just return the second argument. + + + if (!isFunction(func)) { + return func; + } // We don't wanna wrap it twice! + + + try { + if (func.__raven__) { + return func; + } // If this has already been wrapped in the past, return that + + + if (func.__raven_wrapper__) { + return func.__raven_wrapper__; + } + } catch (e) { + // Just accessing custom props in some Selenium environments + // can cause a "Permission denied" exception (see raven-js#495). + // Bail on wrapping and return the function as-is (defers to window.onerror). + return func; + } + + function wrapped() { + var args = [], + i = arguments.length, + deep = !options || options && options.deep !== false; + + if (_before && isFunction(_before)) { + _before.apply(this, arguments); + } // Recursively wrap all of a function's arguments that are + // functions themselves. + + + while (i--) { + args[i] = deep ? self.wrap(options, arguments[i]) : arguments[i]; + } + + try { + // Attempt to invoke user-land function + // NOTE: If you are a Sentry user, and you are seeing this stack frame, it + // means Raven caught an error invoking your application code. This is + // expected behavior and NOT indicative of a bug with Raven.js. + return func.apply(this, args); + } catch (e) { + self._ignoreNextOnError(); + + self.captureException(e, options); + throw e; + } + } // copy over properties of the old function + + + for (var property in func) { + if (hasKey(func, property)) { + wrapped[property] = func[property]; + } + } + + wrapped.prototype = func.prototype; + func.__raven_wrapper__ = wrapped; // Signal that this function has been wrapped/filled already + // for both debugging and to prevent it to being wrapped/filled twice + + wrapped.__raven__ = true; + wrapped.__orig__ = func; + return wrapped; + }, + + /* + * Uninstalls the global error handler. + * + * @return {Raven} + */ + uninstall: function uninstall() { + tracekit.report.uninstall(); + + this._unpatchFunctionToString(); + + this._restoreBuiltIns(); + + this._restoreConsole(); + + Error.stackTraceLimit = this._originalErrorStackTraceLimit; + this._isRavenInstalled = false; + return this; + }, + + /* + * Manually capture an exception and send it over to Sentry + * + * @param {error} ex An exception to be logged + * @param {object} options A specific set of options for this error [optional] + * @return {Raven} + */ + captureException: function captureException(ex, options) { + options = objectMerge({ + trimHeadFrames: 0 + }, options ? options : {}); // Cases for sending ex as a message, rather than an exception + + var isNotError = !isError(ex); + var isNotErrorEvent = !isErrorEvent(ex); + var isErrorEventWithoutError = isErrorEvent(ex) && !ex.error; + + if (isNotError && isNotErrorEvent || isErrorEventWithoutError) { + return this.captureMessage(ex, objectMerge(options, { + stacktrace: true, + // if we fall back to captureMessage, default to attempting a new trace + trimHeadFrames: options.trimHeadFrames + 1 + })); + } // Get actual Error from ErrorEvent + + + if (isErrorEvent(ex)) ex = ex.error; // Store the raw exception object for potential debugging and introspection + + this._lastCapturedException = ex; // TraceKit.report will re-raise any exception passed to it, + // which means you have to wrap it in try/catch. Instead, we + // can wrap it here and only re-raise if TraceKit.report + // raises an exception different from the one we asked to + // report on. + + try { + var stack = tracekit.computeStackTrace(ex); + + this._handleStackInfo(stack, options); + } catch (ex1) { + if (ex !== ex1) { + throw ex1; + } + } + + return this; + }, + + /* + * Manually send a message to Sentry + * + * @param {string} msg A plain message to be captured in Sentry + * @param {object} options A specific set of options for this message [optional] + * @return {Raven} + */ + captureMessage: function captureMessage(msg, options) { + // config() automagically converts ignoreErrors from a list to a RegExp so we need to test for an + // early call; we'll error on the side of logging anything called before configuration since it's + // probably something you should see: + if (!!this._globalOptions.ignoreErrors.test && this._globalOptions.ignoreErrors.test(msg)) { + return; + } + + options = options || {}; + var data = objectMerge({ + message: msg + '' // Make sure it's actually a string + + }, options); + var ex; // Generate a "synthetic" stack trace from this point. + // NOTE: If you are a Sentry user, and you are seeing this stack frame, it is NOT indicative + // of a bug with Raven.js. Sentry generates synthetic traces either by configuration, + // or if it catches a thrown object without a "stack" property. + + try { + throw new Error(msg); + } catch (ex1) { + ex = ex1; + } // null exception name so `Error` isn't prefixed to msg + + + ex.name = null; + var stack = tracekit.computeStackTrace(ex); // stack[0] is `throw new Error(msg)` call itself, we are interested in the frame that was just before that, stack[1] + + var initialCall = isArray(stack.stack) && stack.stack[1]; + var fileurl = initialCall && initialCall.url || ''; + + if (!!this._globalOptions.ignoreUrls.test && this._globalOptions.ignoreUrls.test(fileurl)) { + return; + } + + if (!!this._globalOptions.whitelistUrls.test && !this._globalOptions.whitelistUrls.test(fileurl)) { + return; + } + + if (this._globalOptions.stacktrace || options && options.stacktrace) { + options = objectMerge({ + // fingerprint on msg, not stack trace (legacy behavior, could be + // revisited) + fingerprint: msg, + // since we know this is a synthetic trace, the top N-most frames + // MUST be from Raven.js, so mark them as in_app later by setting + // trimHeadFrames + trimHeadFrames: (options.trimHeadFrames || 0) + 1 + }, options); + + var frames = this._prepareFrames(stack, options); + + data.stacktrace = { + // Sentry expects frames oldest to newest + frames: frames.reverse() + }; + } // Fire away! + + + this._send(data); + + return this; + }, + captureBreadcrumb: function captureBreadcrumb(obj) { + var crumb = objectMerge({ + timestamp: now() / 1000 + }, obj); + + if (isFunction(this._globalOptions.breadcrumbCallback)) { + var result = this._globalOptions.breadcrumbCallback(crumb); + + if (isObject(result) && !isEmptyObject(result)) { + crumb = result; + } else if (result === false) { + return this; + } + } + + this._breadcrumbs.push(crumb); + + if (this._breadcrumbs.length > this._globalOptions.maxBreadcrumbs) { + this._breadcrumbs.shift(); + } + + return this; + }, + addPlugin: function addPlugin(plugin + /*arg1, arg2, ... argN*/ + ) { + var pluginArgs = [].slice.call(arguments, 1); + + this._plugins.push([plugin, pluginArgs]); + + if (this._isRavenInstalled) { + this._drainPlugins(); + } + + return this; + }, + + /* + * Set/clear a user to be sent along with the payload. + * + * @param {object} user An object representing user data [optional] + * @return {Raven} + */ + setUserContext: function setUserContext(user) { + // Intentionally do not merge here since that's an unexpected behavior. + this._globalContext.user = user; + return this; + }, + + /* + * Merge extra attributes to be sent along with the payload. + * + * @param {object} extra An object representing extra data [optional] + * @return {Raven} + */ + setExtraContext: function setExtraContext(extra) { + this._mergeContext('extra', extra); + + return this; + }, + + /* + * Merge tags to be sent along with the payload. + * + * @param {object} tags An object representing tags [optional] + * @return {Raven} + */ + setTagsContext: function setTagsContext(tags) { + this._mergeContext('tags', tags); + + return this; + }, + + /* + * Clear all of the context. + * + * @return {Raven} + */ + clearContext: function clearContext() { + this._globalContext = {}; + return this; + }, + + /* + * Get a copy of the current context. This cannot be mutated. + * + * @return {object} copy of context + */ + getContext: function getContext() { + // lol javascript + return JSON.parse(stringify_1(this._globalContext)); + }, + + /* + * Set environment of application + * + * @param {string} environment Typically something like 'production'. + * @return {Raven} + */ + setEnvironment: function setEnvironment(environment) { + this._globalOptions.environment = environment; + return this; + }, + + /* + * Set release version of application + * + * @param {string} release Typically something like a git SHA to identify version + * @return {Raven} + */ + setRelease: function setRelease(release) { + this._globalOptions.release = release; + return this; + }, + + /* + * Set the dataCallback option + * + * @param {function} callback The callback to run which allows the + * data blob to be mutated before sending + * @return {Raven} + */ + setDataCallback: function setDataCallback(callback) { + var original = this._globalOptions.dataCallback; + this._globalOptions.dataCallback = keepOriginalCallback(original, callback); + return this; + }, + + /* + * Set the breadcrumbCallback option + * + * @param {function} callback The callback to run which allows filtering + * or mutating breadcrumbs + * @return {Raven} + */ + setBreadcrumbCallback: function setBreadcrumbCallback(callback) { + var original = this._globalOptions.breadcrumbCallback; + this._globalOptions.breadcrumbCallback = keepOriginalCallback(original, callback); + return this; + }, + + /* + * Set the shouldSendCallback option + * + * @param {function} callback The callback to run which allows + * introspecting the blob before sending + * @return {Raven} + */ + setShouldSendCallback: function setShouldSendCallback(callback) { + var original = this._globalOptions.shouldSendCallback; + this._globalOptions.shouldSendCallback = keepOriginalCallback(original, callback); + return this; + }, + + /** + * Override the default HTTP transport mechanism that transmits data + * to the Sentry server. + * + * @param {function} transport Function invoked instead of the default + * `makeRequest` handler. + * + * @return {Raven} + */ + setTransport: function setTransport(transport) { + this._globalOptions.transport = transport; + return this; + }, + + /* + * Get the latest raw exception that was captured by Raven. + * + * @return {error} + */ + lastException: function lastException() { + return this._lastCapturedException; + }, + + /* + * Get the last event id + * + * @return {string} + */ + lastEventId: function lastEventId() { + return this._lastEventId; + }, + + /* + * Determine if Raven is setup and ready to go. + * + * @return {boolean} + */ + isSetup: function isSetup() { + if (!this._hasJSON) return false; // needs JSON support + + if (!this._globalServer) { + if (!this.ravenNotConfiguredError) { + this.ravenNotConfiguredError = true; + + this._logDebug('error', 'Error: Raven has not been configured.'); + } + + return false; + } + + return true; + }, + afterLoad: function afterLoad() { + // TODO: remove window dependence? + // Attempt to initialize Raven on load + var RavenConfig = _window$1.RavenConfig; + + if (RavenConfig) { + this.config(RavenConfig.dsn, RavenConfig.config).install(); + } + }, + showReportDialog: function showReportDialog(options) { + if (!_document // doesn't work without a document (React native) + ) return; + options = options || {}; + var lastEventId = options.eventId || this.lastEventId(); + + if (!lastEventId) { + throw new configError('Missing eventId'); + } + + var dsn = options.dsn || this._dsn; + + if (!dsn) { + throw new configError('Missing DSN'); + } + + var encode = encodeURIComponent; + var qs = ''; + qs += '?eventId=' + encode(lastEventId); + qs += '&dsn=' + encode(dsn); + var user = options.user || this._globalContext.user; + + if (user) { + if (user.name) qs += '&name=' + encode(user.name); + if (user.email) qs += '&email=' + encode(user.email); + } + + var globalServer = this._getGlobalServer(this._parseDSN(dsn)); + + var script = _document.createElement('script'); + + script.async = true; + script.src = globalServer + '/api/embed/error-page/' + qs; + + (_document.head || _document.body).appendChild(script); + }, + + /**** Private functions ****/ + _ignoreNextOnError: function _ignoreNextOnError() { + var self = this; + this._ignoreOnError += 1; + setTimeout(function () { + // onerror should trigger before setTimeout + self._ignoreOnError -= 1; + }); + }, + _triggerEvent: function _triggerEvent(eventType, options) { + // NOTE: `event` is a native browser thing, so let's avoid conflicting wiht it + var evt, key; + if (!this._hasDocument) return; + options = options || {}; + eventType = 'raven' + eventType.substr(0, 1).toUpperCase() + eventType.substr(1); + + if (_document.createEvent) { + evt = _document.createEvent('HTMLEvents'); + evt.initEvent(eventType, true, true); + } else { + evt = _document.createEventObject(); + evt.eventType = eventType; + } + + for (key in options) { + if (hasKey(options, key)) { + evt[key] = options[key]; + } + } + + if (_document.createEvent) { + // IE9 if standards + _document.dispatchEvent(evt); + } else { + // IE8 regardless of Quirks or Standards + // IE9 if quirks + try { + _document.fireEvent('on' + evt.eventType.toLowerCase(), evt); + } catch (e) {// Do nothing + } + } + }, + + /** + * Wraps addEventListener to capture UI breadcrumbs + * @param evtName the event name (e.g. "click") + * @returns {Function} + * @private + */ + _breadcrumbEventHandler: function _breadcrumbEventHandler(evtName) { + var self = this; + return function (evt) { + // reset keypress timeout; e.g. triggering a 'click' after + // a 'keypress' will reset the keypress debounce so that a new + // set of keypresses can be recorded + self._keypressTimeout = null; // It's possible this handler might trigger multiple times for the same + // event (e.g. event propagation through node ancestors). Ignore if we've + // already captured the event. + + if (self._lastCapturedEvent === evt) return; + self._lastCapturedEvent = evt; // try/catch both: + // - accessing evt.target (see getsentry/raven-js#838, #768) + // - `htmlTreeAsString` because it's complex, and just accessing the DOM incorrectly + // can throw an exception in some circumstances. + + var target; + + try { + target = htmlTreeAsString(evt.target); + } catch (e) { + target = ''; + } + + self.captureBreadcrumb({ + category: 'ui.' + evtName, + // e.g. ui.click, ui.input + message: target + }); + }; + }, + + /** + * Wraps addEventListener to capture keypress UI events + * @returns {Function} + * @private + */ + _keypressEventHandler: function _keypressEventHandler() { + var self = this, + debounceDuration = 1000; // milliseconds + // TODO: if somehow user switches keypress target before + // debounce timeout is triggered, we will only capture + // a single breadcrumb from the FIRST target (acceptable?) + + return function (evt) { + var target; + + try { + target = evt.target; + } catch (e) { + // just accessing event properties can throw an exception in some rare circumstances + // see: https://github.com/getsentry/raven-js/issues/838 + return; + } + + var tagName = target && target.tagName; // only consider keypress events on actual input elements + // this will disregard keypresses targeting body (e.g. tabbing + // through elements, hotkeys, etc) + + if (!tagName || tagName !== 'INPUT' && tagName !== 'TEXTAREA' && !target.isContentEditable) return; // record first keypress in a series, but ignore subsequent + // keypresses until debounce clears + + var timeout = self._keypressTimeout; + + if (!timeout) { + self._breadcrumbEventHandler('input')(evt); + } + + clearTimeout(timeout); + self._keypressTimeout = setTimeout(function () { + self._keypressTimeout = null; + }, debounceDuration); + }; + }, + + /** + * Captures a breadcrumb of type "navigation", normalizing input URLs + * @param to the originating URL + * @param from the target URL + * @private + */ + _captureUrlChange: function _captureUrlChange(from, to) { + var parsedLoc = parseUrl(this._location.href); + var parsedTo = parseUrl(to); + var parsedFrom = parseUrl(from); // because onpopstate only tells you the "new" (to) value of location.href, and + // not the previous (from) value, we need to track the value of the current URL + // state ourselves + + this._lastHref = to; // Use only the path component of the URL if the URL matches the current + // document (almost all the time when using pushState) + + if (parsedLoc.protocol === parsedTo.protocol && parsedLoc.host === parsedTo.host) to = parsedTo.relative; + if (parsedLoc.protocol === parsedFrom.protocol && parsedLoc.host === parsedFrom.host) from = parsedFrom.relative; + this.captureBreadcrumb({ + category: 'navigation', + data: { + to: to, + from: from + } + }); + }, + _patchFunctionToString: function _patchFunctionToString() { + var self = this; + self._originalFunctionToString = Function.prototype.toString; // eslint-disable-next-line no-extend-native + + Function.prototype.toString = function () { + if (typeof this === 'function' && this.__raven__) { + return self._originalFunctionToString.apply(this.__orig__, arguments); + } + + return self._originalFunctionToString.apply(this, arguments); + }; + }, + _unpatchFunctionToString: function _unpatchFunctionToString() { + if (this._originalFunctionToString) { + // eslint-disable-next-line no-extend-native + Function.prototype.toString = this._originalFunctionToString; + } + }, + + /** + * Wrap timer functions and event targets to catch errors and provide + * better metadata. + */ + _instrumentTryCatch: function _instrumentTryCatch() { + var self = this; + var wrappedBuiltIns = self._wrappedBuiltIns; + + function wrapTimeFn(orig) { + return function (fn, t) { + // preserve arity + // Make a copy of the arguments to prevent deoptimization + // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments + var args = new Array(arguments.length); + + for (var i = 0; i < args.length; ++i) { + args[i] = arguments[i]; + } + + var originalCallback = args[0]; + + if (isFunction(originalCallback)) { + args[0] = self.wrap(originalCallback); + } // IE < 9 doesn't support .call/.apply on setInterval/setTimeout, but it + // also supports only two arguments and doesn't care what this is, so we + // can just call the original function directly. + + + if (orig.apply) { + return orig.apply(this, args); + } else { + return orig(args[0], args[1]); + } + }; + } + + var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; + + function wrapEventTarget(global) { + var proto = _window$1[global] && _window$1[global].prototype; + + if (proto && proto.hasOwnProperty && proto.hasOwnProperty('addEventListener')) { + fill(proto, 'addEventListener', function (orig) { + return function (evtName, fn, capture, secure) { + // preserve arity + try { + if (fn && fn.handleEvent) { + fn.handleEvent = self.wrap(fn.handleEvent); + } + } catch (err) {} // can sometimes get 'Permission denied to access property "handle Event' + // More breadcrumb DOM capture ... done here and not in `_instrumentBreadcrumbs` + // so that we don't have more than one wrapper function + + + var before, clickHandler, keypressHandler; + + if (autoBreadcrumbs && autoBreadcrumbs.dom && (global === 'EventTarget' || global === 'Node')) { + // NOTE: generating multiple handlers per addEventListener invocation, should + // revisit and verify we can just use one (almost certainly) + clickHandler = self._breadcrumbEventHandler('click'); + keypressHandler = self._keypressEventHandler(); + + before = function before(evt) { + // need to intercept every DOM event in `before` argument, in case that + // same wrapped method is re-used for different events (e.g. mousemove THEN click) + // see #724 + if (!evt) return; + var eventType; + + try { + eventType = evt.type; + } catch (e) { + // just accessing event properties can throw an exception in some rare circumstances + // see: https://github.com/getsentry/raven-js/issues/838 + return; + } + + if (eventType === 'click') return clickHandler(evt);else if (eventType === 'keypress') return keypressHandler(evt); + }; + } + + return orig.call(this, evtName, self.wrap(fn, undefined, before), capture, secure); + }; + }, wrappedBuiltIns); + fill(proto, 'removeEventListener', function (orig) { + return function (evt, fn, capture, secure) { + try { + fn = fn && (fn.__raven_wrapper__ ? fn.__raven_wrapper__ : fn); + } catch (e) {// ignore, accessing __raven_wrapper__ will throw in some Selenium environments + } + + return orig.call(this, evt, fn, capture, secure); + }; + }, wrappedBuiltIns); + } + } + + fill(_window$1, 'setTimeout', wrapTimeFn, wrappedBuiltIns); + fill(_window$1, 'setInterval', wrapTimeFn, wrappedBuiltIns); + + if (_window$1.requestAnimationFrame) { + fill(_window$1, 'requestAnimationFrame', function (orig) { + return function (cb) { + return orig(self.wrap(cb)); + }; + }, wrappedBuiltIns); + } // event targets borrowed from bugsnag-js: + // https://github.com/bugsnag/bugsnag-js/blob/master/src/bugsnag.js#L666 + + + var eventTargets = ['EventTarget', 'Window', 'Node', 'ApplicationCache', 'AudioTrackList', 'ChannelMergerNode', 'CryptoOperation', 'EventSource', 'FileReader', 'HTMLUnknownElement', 'IDBDatabase', 'IDBRequest', 'IDBTransaction', 'KeyOperation', 'MediaController', 'MessagePort', 'ModalWindow', 'Notification', 'SVGElementInstance', 'Screen', 'TextTrack', 'TextTrackCue', 'TextTrackList', 'WebSocket', 'WebSocketWorker', 'Worker', 'XMLHttpRequest', 'XMLHttpRequestEventTarget', 'XMLHttpRequestUpload']; + + for (var i = 0; i < eventTargets.length; i++) { + wrapEventTarget(eventTargets[i]); + } + }, + + /** + * Instrument browser built-ins w/ breadcrumb capturing + * - XMLHttpRequests + * - DOM interactions (click/typing) + * - window.location changes + * - console + * + * Can be disabled or individually configured via the `autoBreadcrumbs` config option + */ + _instrumentBreadcrumbs: function _instrumentBreadcrumbs() { + var self = this; + var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; + var wrappedBuiltIns = self._wrappedBuiltIns; + + function wrapProp(prop, xhr) { + if (prop in xhr && isFunction(xhr[prop])) { + fill(xhr, prop, function (orig) { + return self.wrap(orig); + }); // intentionally don't track filled methods on XHR instances + } + } + + if (autoBreadcrumbs.xhr && 'XMLHttpRequest' in _window$1) { + var xhrproto = XMLHttpRequest.prototype; + fill(xhrproto, 'open', function (origOpen) { + return function (method, url) { + // preserve arity + // if Sentry key appears in URL, don't capture + if (isString(url) && url.indexOf(self._globalKey) === -1) { + this.__raven_xhr = { + method: method, + url: url, + status_code: null + }; + } + + return origOpen.apply(this, arguments); + }; + }, wrappedBuiltIns); + fill(xhrproto, 'send', function (origSend) { + return function () { + // preserve arity + var xhr = this; + + function onreadystatechangeHandler() { + if (xhr.__raven_xhr && xhr.readyState === 4) { + try { + // touching statusCode in some platforms throws + // an exception + xhr.__raven_xhr.status_code = xhr.status; + } catch (e) { + /* do nothing */ + } + + self.captureBreadcrumb({ + type: 'http', + category: 'xhr', + data: xhr.__raven_xhr + }); + } + } + + var props = ['onload', 'onerror', 'onprogress']; + + for (var j = 0; j < props.length; j++) { + wrapProp(props[j], xhr); + } + + if ('onreadystatechange' in xhr && isFunction(xhr.onreadystatechange)) { + fill(xhr, 'onreadystatechange', function (orig) { + return self.wrap(orig, undefined, onreadystatechangeHandler); + } + /* intentionally don't track this instrumentation */ + ); + } else { + // if onreadystatechange wasn't actually set by the page on this xhr, we + // are free to set our own and capture the breadcrumb + xhr.onreadystatechange = onreadystatechangeHandler; + } + + return origSend.apply(this, arguments); + }; + }, wrappedBuiltIns); + } + + if (autoBreadcrumbs.xhr && supportsFetch()) { + fill(_window$1, 'fetch', function (origFetch) { + return function () { + // preserve arity + // Make a copy of the arguments to prevent deoptimization + // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments + var args = new Array(arguments.length); + + for (var i = 0; i < args.length; ++i) { + args[i] = arguments[i]; + } + + var fetchInput = args[0]; + var method = 'GET'; + var url; + + if (typeof fetchInput === 'string') { + url = fetchInput; + } else if ('Request' in _window$1 && fetchInput instanceof _window$1.Request) { + url = fetchInput.url; + + if (fetchInput.method) { + method = fetchInput.method; + } + } else { + url = '' + fetchInput; + } // if Sentry key appears in URL, don't capture, as it's our own request + + + if (url.indexOf(self._globalKey) !== -1) { + return origFetch.apply(this, args); + } + + if (args[1] && args[1].method) { + method = args[1].method; + } + + var fetchData = { + method: method, + url: url, + status_code: null + }; + return origFetch.apply(this, args).then(function (response) { + fetchData.status_code = response.status; + self.captureBreadcrumb({ + type: 'http', + category: 'fetch', + data: fetchData + }); + return response; + }); + }; + }, wrappedBuiltIns); + } // Capture breadcrumbs from any click that is unhandled / bubbled up all the way + // to the document. Do this before we instrument addEventListener. + + + if (autoBreadcrumbs.dom && this._hasDocument) { + if (_document.addEventListener) { + _document.addEventListener('click', self._breadcrumbEventHandler('click'), false); + + _document.addEventListener('keypress', self._keypressEventHandler(), false); + } else { + // IE8 Compatibility + _document.attachEvent('onclick', self._breadcrumbEventHandler('click')); + + _document.attachEvent('onkeypress', self._keypressEventHandler()); + } + } // record navigation (URL) changes + // NOTE: in Chrome App environment, touching history.pushState, *even inside + // a try/catch block*, will cause Chrome to output an error to console.error + // borrowed from: https://github.com/angular/angular.js/pull/13945/files + + + var chrome = _window$1.chrome; + var isChromePackagedApp = chrome && chrome.app && chrome.app.runtime; + var hasPushAndReplaceState = !isChromePackagedApp && _window$1.history && history.pushState && history.replaceState; + + if (autoBreadcrumbs.location && hasPushAndReplaceState) { + // TODO: remove onpopstate handler on uninstall() + var oldOnPopState = _window$1.onpopstate; + + _window$1.onpopstate = function () { + var currentHref = self._location.href; + + self._captureUrlChange(self._lastHref, currentHref); + + if (oldOnPopState) { + return oldOnPopState.apply(this, arguments); + } + }; + + var historyReplacementFunction = function historyReplacementFunction(origHistFunction) { + // note history.pushState.length is 0; intentionally not declaring + // params to preserve 0 arity + return function () + /* state, title, url */ + { + var url = arguments.length > 2 ? arguments[2] : undefined; // url argument is optional + + if (url) { + // coerce to string (this is what pushState does) + self._captureUrlChange(self._lastHref, url + ''); + } + + return origHistFunction.apply(this, arguments); + }; + }; + + fill(history, 'pushState', historyReplacementFunction, wrappedBuiltIns); + fill(history, 'replaceState', historyReplacementFunction, wrappedBuiltIns); + } + + if (autoBreadcrumbs.console && 'console' in _window$1 && console.log) { + // console + var consoleMethodCallback = function consoleMethodCallback(msg, data) { + self.captureBreadcrumb({ + message: msg, + level: data.level, + category: 'console' + }); + }; + + each(['debug', 'info', 'warn', 'error', 'log'], function (_, level) { + wrapConsoleMethod(console, level, consoleMethodCallback); + }); + } + }, + _restoreBuiltIns: function _restoreBuiltIns() { + // restore any wrapped builtins + var builtin; + + while (this._wrappedBuiltIns.length) { + builtin = this._wrappedBuiltIns.shift(); + var obj = builtin[0], + name = builtin[1], + orig = builtin[2]; + obj[name] = orig; + } + }, + _restoreConsole: function _restoreConsole() { + // eslint-disable-next-line guard-for-in + for (var method in this._originalConsoleMethods) { + this._originalConsole[method] = this._originalConsoleMethods[method]; + } + }, + _drainPlugins: function _drainPlugins() { + var self = this; // FIX ME TODO + + each(this._plugins, function (_, plugin) { + var installer = plugin[0]; + var args = plugin[1]; + installer.apply(self, [self].concat(args)); + }); + }, + _parseDSN: function _parseDSN(str) { + var m = dsnPattern.exec(str), + dsn = {}, + i = 7; + + try { + while (i--) { + dsn[dsnKeys[i]] = m[i] || ''; + } + } catch (e) { + throw new configError('Invalid DSN: ' + str); + } + + if (dsn.pass && !this._globalOptions.allowSecretKey) { + throw new configError('Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key'); + } + + return dsn; + }, + _getGlobalServer: function _getGlobalServer(uri) { + // assemble the endpoint from the uri pieces + var globalServer = '//' + uri.host + (uri.port ? ':' + uri.port : ''); + + if (uri.protocol) { + globalServer = uri.protocol + ':' + globalServer; + } + + return globalServer; + }, + _handleOnErrorStackInfo: function _handleOnErrorStackInfo() { + // if we are intentionally ignoring errors via onerror, bail out + if (!this._ignoreOnError) { + this._handleStackInfo.apply(this, arguments); + } + }, + _handleStackInfo: function _handleStackInfo(stackInfo, options) { + var frames = this._prepareFrames(stackInfo, options); + + this._triggerEvent('handle', { + stackInfo: stackInfo, + options: options + }); + + this._processException(stackInfo.name, stackInfo.message, stackInfo.url, stackInfo.lineno, frames, options); + }, + _prepareFrames: function _prepareFrames(stackInfo, options) { + var self = this; + var frames = []; + + if (stackInfo.stack && stackInfo.stack.length) { + each(stackInfo.stack, function (i, stack) { + var frame = self._normalizeFrame(stack, stackInfo.url); + + if (frame) { + frames.push(frame); + } + }); // e.g. frames captured via captureMessage throw + + if (options && options.trimHeadFrames) { + for (var j = 0; j < options.trimHeadFrames && j < frames.length; j++) { + frames[j].in_app = false; + } + } + } + + frames = frames.slice(0, this._globalOptions.stackTraceLimit); + return frames; + }, + _normalizeFrame: function _normalizeFrame(frame, stackInfoUrl) { + // normalize the frames data + var normalized = { + filename: frame.url, + lineno: frame.line, + colno: frame.column, + function: frame.func || '?' + }; // Case when we don't have any information about the error + // E.g. throwing a string or raw object, instead of an `Error` in Firefox + // Generating synthetic error doesn't add any value here + // + // We should probably somehow let a user know that they should fix their code + + if (!frame.url) { + normalized.filename = stackInfoUrl; // fallback to whole stacks url from onerror handler + } + + normalized.in_app = !( // determine if an exception came from outside of our app + // first we check the global includePaths list. + !!this._globalOptions.includePaths.test && !this._globalOptions.includePaths.test(normalized.filename) || // Now we check for fun, if the function name is Raven or TraceKit + /(Raven|TraceKit)\./.test(normalized['function']) || // finally, we do a last ditch effort and check for raven.min.js + /raven\.(min\.)?js$/.test(normalized.filename)); + return normalized; + }, + _processException: function _processException(type, message, fileurl, lineno, frames, options) { + var prefixedMessage = (type ? type + ': ' : '') + (message || ''); + + if (!!this._globalOptions.ignoreErrors.test && (this._globalOptions.ignoreErrors.test(message) || this._globalOptions.ignoreErrors.test(prefixedMessage))) { + return; + } + + var stacktrace; + + if (frames && frames.length) { + fileurl = frames[0].filename || fileurl; // Sentry expects frames oldest to newest + // and JS sends them as newest to oldest + + frames.reverse(); + stacktrace = { + frames: frames + }; + } else if (fileurl) { + stacktrace = { + frames: [{ + filename: fileurl, + lineno: lineno, + in_app: true + }] + }; + } + + if (!!this._globalOptions.ignoreUrls.test && this._globalOptions.ignoreUrls.test(fileurl)) { + return; + } + + if (!!this._globalOptions.whitelistUrls.test && !this._globalOptions.whitelistUrls.test(fileurl)) { + return; + } + + var data = objectMerge({ + // sentry.interfaces.Exception + exception: { + values: [{ + type: type, + value: message, + stacktrace: stacktrace + }] + }, + culprit: fileurl + }, options); // Fire away! + + this._send(data); + }, + _trimPacket: function _trimPacket(data) { + // For now, we only want to truncate the two different messages + // but this could/should be expanded to just trim everything + var max = this._globalOptions.maxMessageLength; + + if (data.message) { + data.message = truncate(data.message, max); + } + + if (data.exception) { + var exception = data.exception.values[0]; + exception.value = truncate(exception.value, max); + } + + var request = data.request; + + if (request) { + if (request.url) { + request.url = truncate(request.url, this._globalOptions.maxUrlLength); + } + + if (request.Referer) { + request.Referer = truncate(request.Referer, this._globalOptions.maxUrlLength); + } + } + + if (data.breadcrumbs && data.breadcrumbs.values) this._trimBreadcrumbs(data.breadcrumbs); + return data; + }, + + /** + * Truncate breadcrumb values (right now just URLs) + */ + _trimBreadcrumbs: function _trimBreadcrumbs(breadcrumbs) { + // known breadcrumb properties with urls + // TODO: also consider arbitrary prop values that start with (https?)?:// + var urlProps = ['to', 'from', 'url'], + urlProp, + crumb, + data; + + for (var i = 0; i < breadcrumbs.values.length; ++i) { + crumb = breadcrumbs.values[i]; + if (!crumb.hasOwnProperty('data') || !isObject(crumb.data) || objectFrozen(crumb.data)) continue; + data = objectMerge({}, crumb.data); + + for (var j = 0; j < urlProps.length; ++j) { + urlProp = urlProps[j]; + + if (data.hasOwnProperty(urlProp) && data[urlProp]) { + data[urlProp] = truncate(data[urlProp], this._globalOptions.maxUrlLength); + } + } + + breadcrumbs.values[i].data = data; + } + }, + _getHttpData: function _getHttpData() { + if (!this._hasNavigator && !this._hasDocument) return; + var httpData = {}; + + if (this._hasNavigator && _navigator.userAgent) { + httpData.headers = { + 'User-Agent': navigator.userAgent + }; + } // Check in `window` instead of `document`, as we may be in ServiceWorker environment + + + if (_window$1.location && _window$1.location.href) { + httpData.url = _window$1.location.href; + } + + if (this._hasDocument && _document.referrer) { + if (!httpData.headers) httpData.headers = {}; + httpData.headers.Referer = _document.referrer; + } + + return httpData; + }, + _resetBackoff: function _resetBackoff() { + this._backoffDuration = 0; + this._backoffStart = null; + }, + _shouldBackoff: function _shouldBackoff() { + return this._backoffDuration && now() - this._backoffStart < this._backoffDuration; + }, + + /** + * Returns true if the in-process data payload matches the signature + * of the previously-sent data + * + * NOTE: This has to be done at this level because TraceKit can generate + * data from window.onerror WITHOUT an exception object (IE8, IE9, + * other old browsers). This can take the form of an "exception" + * data object with a single frame (derived from the onerror args). + */ + _isRepeatData: function _isRepeatData(current) { + var last = this._lastData; + if (!last || current.message !== last.message || // defined for captureMessage + current.culprit !== last.culprit // defined for captureException/onerror + ) return false; // Stacktrace interface (i.e. from captureMessage) + + if (current.stacktrace || last.stacktrace) { + return isSameStacktrace(current.stacktrace, last.stacktrace); + } else if (current.exception || last.exception) { + // Exception interface (i.e. from captureException/onerror) + return isSameException(current.exception, last.exception); + } + + return true; + }, + _setBackoffState: function _setBackoffState(request) { + // If we are already in a backoff state, don't change anything + if (this._shouldBackoff()) { + return; + } + + var status = request.status; // 400 - project_id doesn't exist or some other fatal + // 401 - invalid/revoked dsn + // 429 - too many requests + + if (!(status === 400 || status === 401 || status === 429)) return; + var retry; + + try { + // If Retry-After is not in Access-Control-Expose-Headers, most + // browsers will throw an exception trying to access it + if (supportsFetch()) { + retry = request.headers.get('Retry-After'); + } else { + retry = request.getResponseHeader('Retry-After'); + } // Retry-After is returned in seconds + + + retry = parseInt(retry, 10) * 1000; + } catch (e) { + /* eslint no-empty:0 */ + } + + this._backoffDuration = retry ? // If Sentry server returned a Retry-After value, use it + retry : // Otherwise, double the last backoff duration (starts at 1 sec) + this._backoffDuration * 2 || 1000; + this._backoffStart = now(); + }, + _send: function _send(data) { + var globalOptions = this._globalOptions; + + var baseData = { + project: this._globalProject, + logger: globalOptions.logger, + platform: 'javascript' + }, + httpData = this._getHttpData(); + + if (httpData) { + baseData.request = httpData; + } // HACK: delete `trimHeadFrames` to prevent from appearing in outbound payload + + + if (data.trimHeadFrames) delete data.trimHeadFrames; + data = objectMerge(baseData, data); // Merge in the tags and extra separately since objectMerge doesn't handle a deep merge + + data.tags = objectMerge(objectMerge({}, this._globalContext.tags), data.tags); + data.extra = objectMerge(objectMerge({}, this._globalContext.extra), data.extra); // Send along our own collected metadata with extra + + data.extra['session:duration'] = now() - this._startTime; + + if (this._breadcrumbs && this._breadcrumbs.length > 0) { + // intentionally make shallow copy so that additions + // to breadcrumbs aren't accidentally sent in this request + data.breadcrumbs = { + values: [].slice.call(this._breadcrumbs, 0) + }; + } + + if (this._globalContext.user) { + // sentry.interfaces.User + data.user = this._globalContext.user; + } // Include the environment if it's defined in globalOptions + + + if (globalOptions.environment) data.environment = globalOptions.environment; // Include the release if it's defined in globalOptions + + if (globalOptions.release) data.release = globalOptions.release; // Include server_name if it's defined in globalOptions + + if (globalOptions.serverName) data.server_name = globalOptions.serverName; // Cleanup empty properties before sending them to the server + + Object.keys(data).forEach(function (key) { + if (data[key] == null || data[key] === '' || isEmptyObject(data[key])) { + delete data[key]; + } + }); + + if (isFunction(globalOptions.dataCallback)) { + data = globalOptions.dataCallback(data) || data; + } // Why?????????? + + + if (!data || isEmptyObject(data)) { + return; + } // Check if the request should be filtered or not + + + if (isFunction(globalOptions.shouldSendCallback) && !globalOptions.shouldSendCallback(data)) { + return; + } // Backoff state: Sentry server previously responded w/ an error (e.g. 429 - too many requests), + // so drop requests until "cool-off" period has elapsed. + + + if (this._shouldBackoff()) { + this._logDebug('warn', 'Raven dropped error due to backoff: ', data); + + return; + } + + if (typeof globalOptions.sampleRate === 'number') { + if (Math.random() < globalOptions.sampleRate) { + this._sendProcessedPayload(data); + } + } else { + this._sendProcessedPayload(data); + } + }, + _getUuid: function _getUuid() { + return uuid4(); + }, + _sendProcessedPayload: function _sendProcessedPayload(data, callback) { + var self = this; + var globalOptions = this._globalOptions; + if (!this.isSetup()) return; // Try and clean up the packet before sending by truncating long values + + data = this._trimPacket(data); // ideally duplicate error testing should occur *before* dataCallback/shouldSendCallback, + // but this would require copying an un-truncated copy of the data packet, which can be + // arbitrarily deep (extra_data) -- could be worthwhile? will revisit + + if (!this._globalOptions.allowDuplicates && this._isRepeatData(data)) { + this._logDebug('warn', 'Raven dropped repeat event: ', data); + + return; + } // Send along an event_id if not explicitly passed. + // This event_id can be used to reference the error within Sentry itself. + // Set lastEventId after we know the error should actually be sent + + + this._lastEventId = data.event_id || (data.event_id = this._getUuid()); // Store outbound payload after trim + + this._lastData = data; + + this._logDebug('debug', 'Raven about to send:', data); + + var auth = { + sentry_version: '7', + sentry_client: 'raven-js/' + this.VERSION, + sentry_key: this._globalKey + }; + + if (this._globalSecret) { + auth.sentry_secret = this._globalSecret; + } + + var exception = data.exception && data.exception.values[0]; // only capture 'sentry' breadcrumb is autoBreadcrumbs is truthy + + if (this._globalOptions.autoBreadcrumbs && this._globalOptions.autoBreadcrumbs.sentry) { + this.captureBreadcrumb({ + category: 'sentry', + message: exception ? (exception.type ? exception.type + ': ' : '') + exception.value : data.message, + event_id: data.event_id, + level: data.level || 'error' // presume error unless specified + + }); + } + + var url = this._globalEndpoint; + + (globalOptions.transport || this._makeRequest).call(this, { + url: url, + auth: auth, + data: data, + options: globalOptions, + onSuccess: function success() { + self._resetBackoff(); + + self._triggerEvent('success', { + data: data, + src: url + }); + + callback && callback(); + }, + onError: function failure(error) { + self._logDebug('error', 'Raven transport failed to send: ', error); + + if (error.request) { + self._setBackoffState(error.request); + } + + self._triggerEvent('failure', { + data: data, + src: url + }); + + error = error || new Error('Raven send failed (no additional details provided)'); + callback && callback(error); + } + }); + }, + _makeRequest: function _makeRequest(opts) { + // Auth is intentionally sent as part of query string (NOT as custom HTTP header) to avoid preflight CORS requests + var url = opts.url + '?' + urlencode(opts.auth); + var evaluatedHeaders = null; + var evaluatedFetchParameters = {}; + + if (opts.options.headers) { + evaluatedHeaders = this._evaluateHash(opts.options.headers); + } + + if (opts.options.fetchParameters) { + evaluatedFetchParameters = this._evaluateHash(opts.options.fetchParameters); + } + + if (supportsFetch()) { + evaluatedFetchParameters.body = stringify_1(opts.data); + var defaultFetchOptions = objectMerge({}, this._fetchDefaults); + var fetchOptions = objectMerge(defaultFetchOptions, evaluatedFetchParameters); + + if (evaluatedHeaders) { + fetchOptions.headers = evaluatedHeaders; + } + + return _window$1.fetch(url, fetchOptions).then(function (response) { + if (response.ok) { + opts.onSuccess && opts.onSuccess(); + } else { + var error = new Error('Sentry error code: ' + response.status); // It's called request only to keep compatibility with XHR interface + // and not add more redundant checks in setBackoffState method + + error.request = response; + opts.onError && opts.onError(error); + } + })['catch'](function () { + opts.onError && opts.onError(new Error('Sentry error code: network unavailable')); + }); + } + + var request = _window$1.XMLHttpRequest && new _window$1.XMLHttpRequest(); + if (!request) return; // if browser doesn't support CORS (e.g. IE7), we are out of luck + + var hasCORS = 'withCredentials' in request || typeof XDomainRequest !== 'undefined'; + if (!hasCORS) return; + + if ('withCredentials' in request) { + request.onreadystatechange = function () { + if (request.readyState !== 4) { + return; + } else if (request.status === 200) { + opts.onSuccess && opts.onSuccess(); + } else if (opts.onError) { + var err = new Error('Sentry error code: ' + request.status); + err.request = request; + opts.onError(err); + } + }; + } else { + request = new XDomainRequest(); // xdomainrequest cannot go http -> https (or vice versa), + // so always use protocol relative + + url = url.replace(/^https?:/, ''); // onreadystatechange not supported by XDomainRequest + + if (opts.onSuccess) { + request.onload = opts.onSuccess; + } + + if (opts.onError) { + request.onerror = function () { + var err = new Error('Sentry error code: XDomainRequest'); + err.request = request; + opts.onError(err); + }; + } + } + + request.open('POST', url); + + if (evaluatedHeaders) { + each(evaluatedHeaders, function (key, value) { + request.setRequestHeader(key, value); + }); + } + + request.send(stringify_1(opts.data)); + }, + _evaluateHash: function _evaluateHash(hash) { + var evaluated = {}; + + for (var key in hash) { + if (hash.hasOwnProperty(key)) { + var value = hash[key]; + evaluated[key] = typeof value === 'function' ? value() : value; + } + } + + return evaluated; + }, + _logDebug: function _logDebug(level) { + if (this._originalConsoleMethods[level] && this.debug) { + // In IE<10 console methods do not have their own 'apply' method + Function.prototype.apply.call(this._originalConsoleMethods[level], this._originalConsole, [].slice.call(arguments, 1)); + } + }, + _mergeContext: function _mergeContext(key, context) { + if (isUndefined(context)) { + delete this._globalContext[key]; + } else { + this._globalContext[key] = objectMerge(this._globalContext[key] || {}, context); + } + } +}; // Deprecations + +Raven$1.prototype.setUser = Raven$1.prototype.setUserContext; +Raven$1.prototype.setReleaseContext = Raven$1.prototype.setRelease; +var raven = Raven$1; + +/** + * Enforces a single instance of the Raven client, and the + * main entry point for Raven. If you are a consumer of the + * Raven library, you SHOULD load this file (vs raven.js). + **/ +// This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) + +var _window = typeof window !== 'undefined' ? window : typeof commonjsGlobal !== 'undefined' ? commonjsGlobal : typeof self !== 'undefined' ? self : {}; + +var _Raven = _window.Raven; +var Raven = new raven(); +/* + * Allow multiple versions of Raven to be installed. + * Strip Raven from the global context and returns the instance. + * + * @return {Raven} + */ + +Raven.noConflict = function () { + _window.Raven = _Raven; + return Raven; +}; + +Raven.afterLoad(); +var singleton = Raven; + +/** + * Angular.js plugin + * + * Provides an $exceptionHandler for Angular.js + */ + +var wrappedCallback$1 = utils.wrappedCallback; // See https://github.com/angular/angular.js/blob/v1.4.7/src/minErr.js + +var angularPattern = /^\[((?:[$a-zA-Z0-9]+:)?(?:[$a-zA-Z0-9]+))\] (.*?)\n?(\S+)$/; +var moduleName = 'ngRaven'; + +function angularPlugin(Raven, angular) { + angular = angular || window.angular; + if (!angular) return; + + function RavenProvider() { + this.$get = ['$window', function ($window) { + return Raven; + }]; + } + + function ExceptionHandlerProvider($provide) { + $provide.decorator('$exceptionHandler', ['Raven', '$delegate', exceptionHandler]); + } + + function exceptionHandler(R, $delegate) { + return function (ex, cause) { + R.captureException(ex, { + extra: { + cause: cause + } + }); + $delegate(ex, cause); + }; + } + + angular.module(moduleName, []).provider('Raven', RavenProvider).config(['$provide', ExceptionHandlerProvider]); + Raven.setDataCallback(wrappedCallback$1(function (data) { + return angularPlugin._normalizeData(data); + })); +} + +angularPlugin._normalizeData = function (data) { + // We only care about mutating an exception + var exception = data.exception; + + if (exception) { + exception = exception.values[0]; + var matches = angularPattern.exec(exception.value); + + if (matches) { + // This type now becomes something like: $rootScope:inprog + exception.type = matches[1]; + exception.value = matches[2]; + data.message = exception.type + ': ' + exception.value; // auto set a new tag specifically for the angular error url + + data.extra.angularDocs = matches[3].substr(0, 250); + } + } + + return data; +}; + +angularPlugin.moduleName = moduleName; +var angular = angularPlugin; + +/** + * console plugin + * + * Monkey patches console.* calls into Sentry messages with + * their appropriate log levels. (Experimental) + * + * Options: + * + * `levels`: An array of levels (methods on `console`) to report to Sentry. + * Defaults to debug, info, warn, and error. + */ + +var wrapConsoleMethod$1 = console$1.wrapMethod; + +function consolePlugin(Raven, console, pluginOptions) { + console = console || window.console || {}; + pluginOptions = pluginOptions || {}; + var logLevels = pluginOptions.levels || ['debug', 'info', 'warn', 'error']; + if ('assert' in console) logLevels.push('assert'); + + var callback = function callback(msg, data) { + Raven.captureMessage(msg, data); + }; + + var level = logLevels.pop(); + + while (level) { + wrapConsoleMethod$1(console, level, callback); + level = logLevels.pop(); + } +} + +var console$3 = consolePlugin; + +/* This file was generated by './scripts/generate-plugin-combinations.js'! */ + +singleton.addPlugin(angular).addPlugin(console$3); +var angular_console = {}; + +return angular_console; + +}))); diff --git a/dist/angular,console/raven.min.js b/dist/angular,console/raven.min.js new file mode 100644 index 000000000000..08cd7ba5c5e5 --- /dev/null +++ b/dist/angular,console/raven.min.js @@ -0,0 +1,3 @@ +/*! Raven.js 3.22.2 (1b6187b) | github.com/getsentry/raven-js */ +!function(a,b){"object"==typeof exports&&"undefined"!=typeof module?module.exports=b():"function"==typeof define&&define.amd?define(b):a.Raven=b()}(this,function(){"use strict";function a(a,b){return b={exports:{}},a(b,b.exports),b.exports}function b(a){return(b="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(a){return typeof a}:function(a){return a&&"function"==typeof Symbol&&a.constructor===Symbol&&a!==Symbol.prototype?"symbol":typeof a})(a)}function c(a){return"object"===b(a)&&null!==a}function d(a){switch({}.toString.call(a)){case"[object Error]":return!0;case"[object Exception]":return!0;case"[object DOMException]":return!0;default:return a instanceof Error}}function e(a){return l()&&"[object ErrorEvent]"==={}.toString.call(a)}function f(a){return void 0===a}function g(a){return"function"==typeof a}function h(a){return"[object Object]"===Object.prototype.toString.call(a)}function i(a){return"[object String]"===Object.prototype.toString.call(a)}function j(a){return"[object Array]"===Object.prototype.toString.call(a)}function k(a){if(!h(a))return!1;for(var b in a)if(a.hasOwnProperty(b))return!1;return!0}function l(){try{return new ErrorEvent(""),!0}catch(a){return!1}}function m(){if(!("fetch"in O))return!1;try{return new Headers,new Request(""),new Response,!0}catch(a){return!1}}function n(a){function b(b,c){var d=a(b)||b;return c?c(d)||d:d}return b}function o(a,b){var c,d;if(f(a.length))for(c in a)s(a,c)&&b.call(null,c,a[c]);else if(d=a.length)for(c=0;c ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function y(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&i(b))for(c=b.split(/\s+/),f=0;f=0;--b)l[b]===a&&l.splice(b,1)}function c(){g(),l=[]}function d(a,b){var c=null;if(!b||Q.collectWindowErrors){for(var d in l)if(l.hasOwnProperty(d))try{l[d].apply(null,[a].concat(S.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function e(a,b,c,e,f){var g=null,i=P.isErrorEvent(f)?f.error:f,k=P.isErrorEvent(a)?a.message:a;if(o)Q.computeStackTrace.augmentStackTraceWithInitialElement(o,b,c,k),h();else if(i&&P.isError(i))g=Q.computeStackTrace(i),d(g,!0);else{var l,m={url:b,line:c,column:e},n=void 0;if("[object String]"==={}.toString.call(k)){var l=k.match(U);l&&(n=l[1],k=l[2])}m.func=T,g={name:n,message:k,url:F(),stack:[m]},d(g,!0)}return!!j&&j.apply(this,arguments)}function f(){k||(j=R.onerror,R.onerror=e,k=!0)}function g(){k&&(R.onerror=j,k=!1,j=void 0)}function h(){var a=o,b=m;m=null,o=null,n=null,d.apply(null,[a,!1].concat(b))}function i(a,b){var c=S.call(arguments,1);if(o){if(n===a)return;h()}var d=Q.computeStackTrace(a);if(o=d,n=a,m=c,setTimeout(function(){n===a&&h()},d.incomplete?2e3:0),b!==!1)throw a}var j,k,l=[],m=null,n=null,o=null;return i.subscribe=a,i.unsubscribe=b,i.uninstall=c,i}(),Q.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,d,e=/^\s*at (.*?) ?\(((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,f=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|\[native).*?|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,g=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,h=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,i=/\((\S*)(?::(\d+))(?::(\d+))\)/,j=a.stack.split("\n"),k=[],l=(/^(.*) is undefined$/.exec(a.message),0),m=j.length;l eval")>-1;o&&(b=h.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==l||c[5]||"undefined"==typeof a.columnNumber||(k[0].column=a.columnNumber+1),d={url:c[3],func:c[1]||T,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}!d.func&&d.line&&(d.func=T),k.push(d)}return k.length?{name:a.name,message:a.message,url:F(),stack:k}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=T),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,e){for(var f,g,h=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,i=[],j={},k=!1,l=c.caller;l&&!k;l=l.caller)if(l!==d&&l!==Q.report){if(g={url:null,func:T,line:null,column:null},l.name?g.func=l.name:(f=h.exec(l.toString()))&&(g.func=f[1]),"undefined"==typeof g.func)try{g.func=f.input.substring(0,f.input.indexOf("{"))}catch(m){}j[""+l]?k=!0:j[""+l]=!0,i.push(g)}e&&i.splice(0,e);var n={name:a.name,message:a.message,url:F(),stack:i};return b(n,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),n}function d(b,d){var e=null;d=null==d?0:+d;try{if(e=a(b))return e}catch(f){if(Q.debug)throw f}try{if(e=c(b,d+1))return e}catch(f){if(Q.debug)throw f}return{name:b.name,message:b.message,url:F()}}return d.augmentStackTraceWithInitialElement=b,d.computeStackTraceFromStackProp=a,d}();var V=Q,W=a(function(a,b){function c(a,b){for(var c=0;c0){var i=c(d,this);~i?d.splice(i+1):d.push(this),~i?f.splice(i,1/0,g):f.push(g),~c(d,h)&&(h=b.call(this,g,h))}else d.push(h);return null==a?h instanceof Error?e(h):h:a.call(this,g,h)}}b=a.exports=d,b.getSerialize=f});G.prototype=new Error,G.prototype.constructor=G;var X=G,Y=function(a,b,c){var d=a[b],e=a;if(b in a){var f="warn"===b?"warning":b;a[b]=function(){var a=[].slice.call(arguments),g=P.safeJoin(a," "),h={level:f,logger:"console",extra:{arguments:a}};"assert"===b?a[0]===!1&&(g="Assertion failed: "+(P.safeJoin(a.slice(1)," ")||"console.assert"),h.extra.arguments=a.slice(1),c&&c(g,h)):c&&c(g,h),d&&Function.prototype.apply.call(d,e,a)}}},Z={wrapMethod:Y},$=P.isError,_=P.isObject,aa=P.isErrorEvent,ba=P.isUndefined,ca=P.isFunction,da=P.isString,ea=P.isArray,fa=P.isEmptyObject,ga=P.each,ha=P.objectMerge,ia=P.truncate,ja=P.objectFrozen,ka=P.hasKey,la=P.joinRegExp,ma=P.urlencode,na=P.uuid4,oa=P.htmlTreeAsString,pa=P.isSameException,qa=P.isSameStacktrace,ra=P.parseUrl,sa=P.fill,ta=P.supportsFetch,ua=Z.wrapMethod,va="source protocol user pass host port path".split(" "),wa=/^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/,xa="undefined"!=typeof window?window:"undefined"!=typeof M?M:"undefined"!=typeof self?self:{},ya=xa.document,za=xa.navigator;J.prototype={VERSION:"3.22.2",debug:!1,TraceKit:V,config:function(a,b){var c=this;if(c.i)return this.D("error","Error: Raven has already been configured"),c;if(!a)return c;var d=c.m;b&&ga(b,function(a,b){"tags"===a||"extra"===a||"user"===a?c.l[a]=b:d[a]=b}),c.setDSN(a),d.ignoreErrors.push(/^Script error\.?$/),d.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/),d.ignoreErrors=la(d.ignoreErrors),d.ignoreUrls=!!d.ignoreUrls.length&&la(d.ignoreUrls),d.whitelistUrls=!!d.whitelistUrls.length&&la(d.whitelistUrls),d.includePaths=la(d.includePaths),d.maxBreadcrumbs=Math.max(0,Math.min(d.maxBreadcrumbs||100,100));var e={xhr:!0,console:!0,dom:!0,location:!0,sentry:!0},f=d.autoBreadcrumbs;"[object Object]"==={}.toString.call(f)?f=ha(e,f):f!==!1&&(f=e),d.autoBreadcrumbs=f;var g={tryCatch:!0},h=d.instrument;return"[object Object]"==={}.toString.call(h)?h=ha(g,h):h!==!1&&(h=g),d.instrument=h,V.collectWindowErrors=!!d.collectWindowErrors,c},install:function(){var a=this;return a.isSetup()&&!a.p&&(V.report.subscribe(function(){a.E.apply(a,arguments)}),a.F(),a.m.instrument&&a.m.instrument.tryCatch&&a.G(),a.m.autoBreadcrumbs&&a.H(),a.I(),a.p=!0),Error.stackTraceLimit=a.m.stackTraceLimit,this},setDSN:function(a){var b=this,c=b.J(a),d=c.path.lastIndexOf("/"),e=c.path.substr(1,d);b.K=a,b.j=c.user,b.L=c.pass&&c.pass.substr(1),b.k=c.path.substr(d+1),b.i=b.M(c),b.N=b.i+"/"+e+"api/"+b.k+"/store/",this.A()},context:function(a,b,c){return ca(a)&&(c=b||[],b=a,a=void 0),this.wrap(a,b).apply(this,c)},wrap:function(a,b,c){function d(){var d=[],f=arguments.length,g=!a||a&&a.deep!==!1;for(c&&ca(c)&&c.apply(this,arguments);f--;)d[f]=g?e.wrap(a,arguments[f]):arguments[f];try{return b.apply(this,d)}catch(h){throw e.O(),e.captureException(h,a),h}}var e=this;if(ba(b)&&!ca(a))return a;if(ca(a)&&(b=a,a=void 0),!ca(b))return b;try{if(b.a)return b;if(b.P)return b.P}catch(f){return b}for(var g in b)ka(b,g)&&(d[g]=b[g]);return d.prototype=b.prototype,b.P=d,d.a=!0,d.b=b,d},uninstall:function(){return V.report.uninstall(),this.Q(),this.R(),this.S(),Error.stackTraceLimit=this.q,this.p=!1,this},captureException:function(a,b){b=ha({trimHeadFrames:0},b?b:{});var c=!$(a),d=!aa(a),e=aa(a)&&!a.error;if(c&&d||e)return this.captureMessage(a,ha(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}));aa(a)&&(a=a.error),this.f=a;try{var f=V.computeStackTrace(a);this.T(f,b)}catch(g){if(a!==g)throw g}return this},captureMessage:function(a,b){if(!this.m.ignoreErrors.test||!this.m.ignoreErrors.test(a)){b=b||{};var c,d=ha({message:a+""},b);try{throw new Error(a)}catch(e){c=e}c.name=null;var f=V.computeStackTrace(c),g=ea(f.stack)&&f.stack[1],h=g&&g.url||"";if((!this.m.ignoreUrls.test||!this.m.ignoreUrls.test(h))&&(!this.m.whitelistUrls.test||this.m.whitelistUrls.test(h))){if(this.m.stacktrace||b&&b.stacktrace){b=ha({fingerprint:a,trimHeadFrames:(b.trimHeadFrames||0)+1},b);var i=this.U(f,b);d.stacktrace={frames:i.reverse()}}return this.V(d),this}}},captureBreadcrumb:function(a){var b=ha({timestamp:H()/1e3},a);if(ca(this.m.breadcrumbCallback)){var c=this.m.breadcrumbCallback(b);if(_(c)&&!fa(c))b=c;else if(c===!1)return this}return this.w.push(b),this.w.length>this.m.maxBreadcrumbs&&this.w.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.t.push([a,b]),this.p&&this.I(),this},setUserContext:function(a){return this.l.user=a,this},setExtraContext:function(a){return this.W("extra",a),this},setTagsContext:function(a){return this.W("tags",a),this},clearContext:function(){return this.l={},this},getContext:function(){return JSON.parse(W(this.l))},setEnvironment:function(a){return this.m.environment=a,this},setRelease:function(a){return this.m.release=a,this},setDataCallback:function(a){var b=this.m.dataCallback;return this.m.dataCallback=I(b,a),this},setBreadcrumbCallback:function(a){var b=this.m.breadcrumbCallback;return this.m.breadcrumbCallback=I(b,a),this},setShouldSendCallback:function(a){var b=this.m.shouldSendCallback;return this.m.shouldSendCallback=I(b,a),this},setTransport:function(a){return this.m.transport=a,this},lastException:function(){return this.f},lastEventId:function(){return this.h},isSetup:function(){return!!this.c&&(!!this.i||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.D("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=xa.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(ya){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new X("Missing eventId");var c=a.dsn||this.K;if(!c)throw new X("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.l.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.M(this.J(c)),h=ya.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(ya.head||ya.body).appendChild(h)}},O:function(){var a=this;this.o+=1,setTimeout(function(){a.o-=1})},X:function(a,b){var c,d;if(this.d){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),ya.createEvent?(c=ya.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=ya.createEventObject(),c.eventType=a);for(d in b)ka(b,d)&&(c[d]=b[d]);if(ya.createEvent)ya.dispatchEvent(c);else try{ya.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},Y:function(a){var b=this;return function(c){if(b.Z=null,b.x!==c){b.x=c;var d;try{d=oa(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},$:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.Z;g||a.Y("input")(c),clearTimeout(g),a.Z=setTimeout(function(){a.Z=null},b)}}},_:function(a,b){var c=ra(this.y.href),d=ra(b),e=ra(a);this.z=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},F:function(){var a=this;a.aa=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.a?a.aa.apply(this.b,arguments):a.aa.apply(this,arguments)}},Q:function(){this.aa&&(Function.prototype.toString=this.aa)},G:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b._(b.z,c+""),a.apply(this,arguments)}};sa(history,"pushState",j,d),sa(history,"replaceState",j,d)}if(c.console&&"console"in xa&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};ga(["debug","info","warn","error","log"],function(a,b){ua(console,b,k)})}},R:function(){for(var a;this.v.length;){a=this.v.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},S:function(){for(var a in this.s)this.r[a]=this.s[a]},I:function(){var a=this;ga(this.t,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},J:function(a){var b=wa.exec(a),c={},d=7;try{for(;d--;)c[va[d]]=b[d]||""}catch(e){throw new X("Invalid DSN: "+a)}if(c.pass&&!this.m.allowSecretKey)throw new X("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},M:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},E:function(){this.o||this.T.apply(this,arguments)},T:function(a,b){var c=this.U(a,b);this.X("handle",{stackInfo:a,options:b}),this.ca(a.name,a.message,a.url,a.lineno,c,b)},U:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(ga(a.stack,function(b,e){var f=c.da(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.w,0)}),this.l.user&&(a.user=this.l.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||fa(a[b]))&&delete a[b]}),ca(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!fa(a)&&(!ca(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.ja()?void this.D("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() href parsing trick because React Native and other +// environments where DOM might not be available + + +function parseUrl$1(url) { + if (typeof url !== 'string') return {}; + var match = url.match(/^(([^:\/?#]+):)?(\/\/([^\/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?$/); // coerce to undefined values to empty string so we don't get 'undefined' + + var query = match[6] || ''; + var fragment = match[8] || ''; + return { + protocol: match[2], + host: match[4], + path: match[5], + relative: match[5] + query + fragment // everything minus origin + + }; +} + +function uuid4$1() { + var crypto = _window$3.crypto || _window$3.msCrypto; + + if (!isUndefined$1(crypto) && crypto.getRandomValues) { + // Use window.crypto API if available + // eslint-disable-next-line no-undef + var arr = new Uint16Array(8); + crypto.getRandomValues(arr); // set 4 in byte 7 + + arr[3] = arr[3] & 0xfff | 0x4000; // set 2 most significant bits of byte 9 to '10' + + arr[4] = arr[4] & 0x3fff | 0x8000; + + var pad = function pad(num) { + var v = num.toString(16); + + while (v.length < 4) { + v = '0' + v; + } + + return v; + }; + + return pad(arr[0]) + pad(arr[1]) + pad(arr[2]) + pad(arr[3]) + pad(arr[4]) + pad(arr[5]) + pad(arr[6]) + pad(arr[7]); + } else { + // http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/2117523#2117523 + return 'xxxxxxxxxxxx4xxxyxxxxxxxxxxxxxxx'.replace(/[xy]/g, function (c) { + var r = Math.random() * 16 | 0, + v = c === 'x' ? r : r & 0x3 | 0x8; + return v.toString(16); + }); + } +} +/** + * Given a child DOM element, returns a query-selector statement describing that + * and its ancestors + * e.g. [HTMLElement] => body > div > input#foo.btn[name=baz] + * @param elem + * @returns {string} + */ + + +function htmlTreeAsString$1(elem) { + /* eslint no-extra-parens:0*/ + var MAX_TRAVERSE_HEIGHT = 5, + MAX_OUTPUT_LEN = 80, + out = [], + height = 0, + len = 0, + separator = ' > ', + sepLength = separator.length, + nextStr; + + while (elem && height++ < MAX_TRAVERSE_HEIGHT) { + nextStr = htmlElementAsString(elem); // bail out if + // - nextStr is the 'html' element + // - the length of the string that would be created exceeds MAX_OUTPUT_LEN + // (ignore this limit if we are on the first iteration) + + if (nextStr === 'html' || height > 1 && len + out.length * sepLength + nextStr.length >= MAX_OUTPUT_LEN) { + break; + } + + out.push(nextStr); + len += nextStr.length; + elem = elem.parentNode; + } + + return out.reverse().join(separator); +} +/** + * Returns a simple, query-selector representation of a DOM element + * e.g. [HTMLElement] => input#foo.btn[name=baz] + * @param HTMLElement + * @returns {string} + */ + + +function htmlElementAsString(elem) { + var out = [], + className, + classes, + key, + attr, + i; + + if (!elem || !elem.tagName) { + return ''; + } + + out.push(elem.tagName.toLowerCase()); + + if (elem.id) { + out.push('#' + elem.id); + } + + className = elem.className; + + if (className && isString$1(className)) { + classes = className.split(/\s+/); + + for (i = 0; i < classes.length; i++) { + out.push('.' + classes[i]); + } + } + + var attrWhitelist = ['type', 'name', 'title', 'alt']; + + for (i = 0; i < attrWhitelist.length; i++) { + key = attrWhitelist[i]; + attr = elem.getAttribute(key); + + if (attr) { + out.push('[' + key + '="' + attr + '"]'); + } + } + + return out.join(''); +} +/** + * Returns true if either a OR b is truthy, but not both + */ + + +function isOnlyOneTruthy(a, b) { + return !!(!!a ^ !!b); +} +/** + * Returns true if both parameters are undefined + */ + + +function isBothUndefined(a, b) { + return isUndefined$1(a) && isUndefined$1(b); +} +/** + * Returns true if the two input exception interfaces have the same content + */ + + +function isSameException$1(ex1, ex2) { + if (isOnlyOneTruthy(ex1, ex2)) return false; + ex1 = ex1.values[0]; + ex2 = ex2.values[0]; + if (ex1.type !== ex2.type || ex1.value !== ex2.value) return false; // in case both stacktraces are undefined, we can't decide so default to false + + if (isBothUndefined(ex1.stacktrace, ex2.stacktrace)) return false; + return isSameStacktrace$1(ex1.stacktrace, ex2.stacktrace); +} +/** + * Returns true if the two input stack trace interfaces have the same content + */ + + +function isSameStacktrace$1(stack1, stack2) { + if (isOnlyOneTruthy(stack1, stack2)) return false; + var frames1 = stack1.frames; + var frames2 = stack2.frames; // Exit early if frame count differs + + if (frames1.length !== frames2.length) return false; // Iterate through every frame; bail out if anything differs + + var a, b; + + for (var i = 0; i < frames1.length; i++) { + a = frames1[i]; + b = frames2[i]; + if (a.filename !== b.filename || a.lineno !== b.lineno || a.colno !== b.colno || a['function'] !== b['function']) return false; + } + + return true; +} +/** + * Polyfill a method + * @param obj object e.g. `document` + * @param name method name present on object e.g. `addEventListener` + * @param replacement replacement function + * @param track {optional} record instrumentation to an array + */ + + +function fill$1(obj, name, replacement, track) { + var orig = obj[name]; + obj[name] = replacement(orig); + obj[name].__raven__ = true; + obj[name].__orig__ = orig; + + if (track) { + track.push([obj, name, orig]); + } +} +/** + * Join values in array + * @param input array of values to be joined together + * @param delimiter string to be placed in-between values + * @returns {string} + */ + + +function safeJoin(input, delimiter) { + if (!isArray$1(input)) return ''; + var output = []; + + for (var i = 0; i < input.length; i++) { + try { + output.push(String(input[i])); + } catch (e) { + output.push('[value cannot be serialized]'); + } + } + + return output.join(delimiter); +} + +var utils = { + isObject: isObject$1, + isError: isError$1, + isErrorEvent: isErrorEvent$1, + isUndefined: isUndefined$1, + isFunction: isFunction$1, + isPlainObject: isPlainObject, + isString: isString$1, + isArray: isArray$1, + isEmptyObject: isEmptyObject$1, + supportsErrorEvent: supportsErrorEvent, + supportsFetch: supportsFetch$1, + wrappedCallback: wrappedCallback, + each: each$1, + objectMerge: objectMerge$1, + truncate: truncate$1, + objectFrozen: objectFrozen$1, + hasKey: hasKey$1, + joinRegExp: joinRegExp$1, + urlencode: urlencode$1, + uuid4: uuid4$1, + htmlTreeAsString: htmlTreeAsString$1, + htmlElementAsString: htmlElementAsString, + isSameException: isSameException$1, + isSameStacktrace: isSameStacktrace$1, + parseUrl: parseUrl$1, + fill: fill$1, + safeJoin: safeJoin +}; + +/* + TraceKit - Cross brower stack traces + + This was originally forked from github.com/occ/TraceKit, but has since been + largely re-written and is now maintained as part of raven-js. Tests for + this are in test/vendor. + + MIT license +*/ + +var TraceKit = { + collectWindowErrors: true, + debug: false +}; // This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) + +var _window$2 = typeof window !== 'undefined' ? window : typeof commonjsGlobal !== 'undefined' ? commonjsGlobal : typeof self !== 'undefined' ? self : {}; // global reference to slice + + +var _slice = [].slice; +var UNKNOWN_FUNCTION = '?'; // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error#Error_types + +var ERROR_TYPES_RE = /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/; + +function getLocationHref() { + if (typeof document === 'undefined' || document.location == null) return ''; + return document.location.href; +} +/** + * TraceKit.report: cross-browser processing of unhandled exceptions + * + * Syntax: + * TraceKit.report.subscribe(function(stackInfo) { ... }) + * TraceKit.report.unsubscribe(function(stackInfo) { ... }) + * TraceKit.report(exception) + * try { ...code... } catch(ex) { TraceKit.report(ex); } + * + * Supports: + * - Firefox: full stack trace with line numbers, plus column number + * on top frame; column number is not guaranteed + * - Opera: full stack trace with line and column numbers + * - Chrome: full stack trace with line and column numbers + * - Safari: line and column number for the top frame only; some frames + * may be missing, and column number is not guaranteed + * - IE: line and column number for the top frame only; some frames + * may be missing, and column number is not guaranteed + * + * In theory, TraceKit should work on all of the following versions: + * - IE5.5+ (only 8.0 tested) + * - Firefox 0.9+ (only 3.5+ tested) + * - Opera 7+ (only 10.50 tested; versions 9 and earlier may require + * Exceptions Have Stacktrace to be enabled in opera:config) + * - Safari 3+ (only 4+ tested) + * - Chrome 1+ (only 5+ tested) + * - Konqueror 3.5+ (untested) + * + * Requires TraceKit.computeStackTrace. + * + * Tries to catch all unhandled exceptions and report them to the + * subscribed handlers. Please note that TraceKit.report will rethrow the + * exception. This is REQUIRED in order to get a useful stack trace in IE. + * If the exception does not reach the top of the browser, you will only + * get a stack trace from the point where TraceKit.report was called. + * + * Handlers receive a stackInfo object as described in the + * TraceKit.computeStackTrace docs. + */ + + +TraceKit.report = function reportModuleWrapper() { + var handlers = [], + lastArgs = null, + lastException = null, + lastExceptionStack = null; + /** + * Add a crash handler. + * @param {Function} handler + */ + + function subscribe(handler) { + installGlobalHandler(); + handlers.push(handler); + } + /** + * Remove a crash handler. + * @param {Function} handler + */ + + + function unsubscribe(handler) { + for (var i = handlers.length - 1; i >= 0; --i) { + if (handlers[i] === handler) { + handlers.splice(i, 1); + } + } + } + /** + * Remove all crash handlers. + */ + + + function unsubscribeAll() { + uninstallGlobalHandler(); + handlers = []; + } + /** + * Dispatch stack information to all handlers. + * @param {Object.} stack + */ + + + function notifyHandlers(stack, isWindowError) { + var exception = null; + + if (isWindowError && !TraceKit.collectWindowErrors) { + return; + } + + for (var i in handlers) { + if (handlers.hasOwnProperty(i)) { + try { + handlers[i].apply(null, [stack].concat(_slice.call(arguments, 2))); + } catch (inner) { + exception = inner; + } + } + } + + if (exception) { + throw exception; + } + } + + var _oldOnerrorHandler, _onErrorHandlerInstalled; + /** + * Ensures all global unhandled exceptions are recorded. + * Supported by Gecko and IE. + * @param {string} msg Error message. + * @param {string} url URL of script that generated the exception. + * @param {(number|string)} lineNo The line number at which the error + * occurred. + * @param {?(number|string)} colNo The column number at which the error + * occurred. + * @param {?Error} ex The actual Error object. + */ + + + function traceKitWindowOnError(msg, url, lineNo, colNo, ex) { + var stack = null; // If 'ex' is ErrorEvent, get real Error from inside + + var exception = utils.isErrorEvent(ex) ? ex.error : ex; // If 'msg' is ErrorEvent, get real message from inside + + var message = utils.isErrorEvent(msg) ? msg.message : msg; + + if (lastExceptionStack) { + TraceKit.computeStackTrace.augmentStackTraceWithInitialElement(lastExceptionStack, url, lineNo, message); + processLastException(); + } else if (exception && utils.isError(exception)) { + // non-string `exception` arg; attempt to extract stack trace + // New chrome and blink send along a real error object + // Let's just report that like a normal error. + // See: https://mikewest.org/2013/08/debugging-runtime-errors-with-window-onerror + stack = TraceKit.computeStackTrace(exception); + notifyHandlers(stack, true); + } else { + var location = { + url: url, + line: lineNo, + column: colNo + }; + var name = undefined; + var groups; + + if ({}.toString.call(message) === '[object String]') { + var groups = message.match(ERROR_TYPES_RE); + + if (groups) { + name = groups[1]; + message = groups[2]; + } + } + + location.func = UNKNOWN_FUNCTION; + stack = { + name: name, + message: message, + url: getLocationHref(), + stack: [location] + }; + notifyHandlers(stack, true); + } + + if (_oldOnerrorHandler) { + return _oldOnerrorHandler.apply(this, arguments); + } + + return false; + } + + function installGlobalHandler() { + if (_onErrorHandlerInstalled) { + return; + } + + _oldOnerrorHandler = _window$2.onerror; + _window$2.onerror = traceKitWindowOnError; + _onErrorHandlerInstalled = true; + } + + function uninstallGlobalHandler() { + if (!_onErrorHandlerInstalled) { + return; + } + + _window$2.onerror = _oldOnerrorHandler; + _onErrorHandlerInstalled = false; + _oldOnerrorHandler = undefined; + } + + function processLastException() { + var _lastExceptionStack = lastExceptionStack, + _lastArgs = lastArgs; + lastArgs = null; + lastExceptionStack = null; + lastException = null; + notifyHandlers.apply(null, [_lastExceptionStack, false].concat(_lastArgs)); + } + /** + * Reports an unhandled Error to TraceKit. + * @param {Error} ex + * @param {?boolean} rethrow If false, do not re-throw the exception. + * Only used for window.onerror to not cause an infinite loop of + * rethrowing. + */ + + + function report(ex, rethrow) { + var args = _slice.call(arguments, 1); + + if (lastExceptionStack) { + if (lastException === ex) { + return; // already caught by an inner catch block, ignore + } else { + processLastException(); + } + } + + var stack = TraceKit.computeStackTrace(ex); + lastExceptionStack = stack; + lastException = ex; + lastArgs = args; // If the stack trace is incomplete, wait for 2 seconds for + // slow slow IE to see if onerror occurs or not before reporting + // this exception; otherwise, we will end up with an incomplete + // stack trace + + setTimeout(function () { + if (lastException === ex) { + processLastException(); + } + }, stack.incomplete ? 2000 : 0); + + if (rethrow !== false) { + throw ex; // re-throw to propagate to the top level (and cause window.onerror) + } + } + + report.subscribe = subscribe; + report.unsubscribe = unsubscribe; + report.uninstall = unsubscribeAll; + return report; +}(); +/** + * TraceKit.computeStackTrace: cross-browser stack traces in JavaScript + * + * Syntax: + * s = TraceKit.computeStackTrace(exception) // consider using TraceKit.report instead (see below) + * Returns: + * s.name - exception name + * s.message - exception message + * s.stack[i].url - JavaScript or HTML file URL + * s.stack[i].func - function name, or empty for anonymous functions (if guessing did not work) + * s.stack[i].args - arguments passed to the function, if known + * s.stack[i].line - line number, if known + * s.stack[i].column - column number, if known + * + * Supports: + * - Firefox: full stack trace with line numbers and unreliable column + * number on top frame + * - Opera 10: full stack trace with line and column numbers + * - Opera 9-: full stack trace with line numbers + * - Chrome: full stack trace with line and column numbers + * - Safari: line and column number for the topmost stacktrace element + * only + * - IE: no line numbers whatsoever + * + * Tries to guess names of anonymous functions by looking for assignments + * in the source code. In IE and Safari, we have to guess source file names + * by searching for function bodies inside all page scripts. This will not + * work for scripts that are loaded cross-domain. + * Here be dragons: some function names may be guessed incorrectly, and + * duplicate functions may be mismatched. + * + * TraceKit.computeStackTrace should only be used for tracing purposes. + * Logging of unhandled exceptions should be done with TraceKit.report, + * which builds on top of TraceKit.computeStackTrace and provides better + * IE support by utilizing the window.onerror event to retrieve information + * about the top of the stack. + * + * Note: In IE and Safari, no stack trace is recorded on the Error object, + * so computeStackTrace instead walks its *own* chain of callers. + * This means that: + * * in Safari, some methods may be missing from the stack trace; + * * in IE, the topmost function in the stack trace will always be the + * caller of computeStackTrace. + * + * This is okay for tracing (because you are likely to be calling + * computeStackTrace from the function you want to be the topmost element + * of the stack trace anyway), but not okay for logging unhandled + * exceptions (because your catch block will likely be far away from the + * inner function that actually caused the exception). + * + */ + + +TraceKit.computeStackTrace = function computeStackTraceWrapper() { + // Contents of Exception in various browsers. + // + // SAFARI: + // ex.message = Can't find variable: qq + // ex.line = 59 + // ex.sourceId = 580238192 + // ex.sourceURL = http://... + // ex.expressionBeginOffset = 96 + // ex.expressionCaretOffset = 98 + // ex.expressionEndOffset = 98 + // ex.name = ReferenceError + // + // FIREFOX: + // ex.message = qq is not defined + // ex.fileName = http://... + // ex.lineNumber = 59 + // ex.columnNumber = 69 + // ex.stack = ...stack trace... (see the example below) + // ex.name = ReferenceError + // + // CHROME: + // ex.message = qq is not defined + // ex.name = ReferenceError + // ex.type = not_defined + // ex.arguments = ['aa'] + // ex.stack = ...stack trace... + // + // INTERNET EXPLORER: + // ex.message = ... + // ex.name = ReferenceError + // + // OPERA: + // ex.message = ...message... (see the example below) + // ex.name = ReferenceError + // ex.opera#sourceloc = 11 (pretty much useless, duplicates the info in ex.message) + // ex.stacktrace = n/a; see 'opera:config#UserPrefs|Exceptions Have Stacktrace' + + /** + * Computes stack trace information from the stack property. + * Chrome and Gecko use this property. + * @param {Error} ex + * @return {?Object.} Stack trace information. + */ + function computeStackTraceFromStackProp(ex) { + if (typeof ex.stack === 'undefined' || !ex.stack) return; + var chrome = /^\s*at (.*?) ?\(((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i, + gecko = /^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|\[native).*?|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i, + winjs = /^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i, + // Used to additionally parse URL/line/column from eval frames + geckoEval = /(\S+) line (\d+)(?: > eval line \d+)* > eval/i, + chromeEval = /\((\S*)(?::(\d+))(?::(\d+))\)/, + lines = ex.stack.split('\n'), + stack = [], + submatch, + parts, + element, + reference = /^(.*) is undefined$/.exec(ex.message); + + for (var i = 0, j = lines.length; i < j; ++i) { + if (parts = chrome.exec(lines[i])) { + var isNative = parts[2] && parts[2].indexOf('native') === 0; // start of line + + var isEval = parts[2] && parts[2].indexOf('eval') === 0; // start of line + + if (isEval && (submatch = chromeEval.exec(parts[2]))) { + // throw out eval line/column and use top-most line/column number + parts[2] = submatch[1]; // url + + parts[3] = submatch[2]; // line + + parts[4] = submatch[3]; // column + } + + element = { + url: !isNative ? parts[2] : null, + func: parts[1] || UNKNOWN_FUNCTION, + args: isNative ? [parts[2]] : [], + line: parts[3] ? +parts[3] : null, + column: parts[4] ? +parts[4] : null + }; + } else if (parts = winjs.exec(lines[i])) { + element = { + url: parts[2], + func: parts[1] || UNKNOWN_FUNCTION, + args: [], + line: +parts[3], + column: parts[4] ? +parts[4] : null + }; + } else if (parts = gecko.exec(lines[i])) { + var isEval = parts[3] && parts[3].indexOf(' > eval') > -1; + + if (isEval && (submatch = geckoEval.exec(parts[3]))) { + // throw out eval line/column and use top-most line number + parts[3] = submatch[1]; + parts[4] = submatch[2]; + parts[5] = null; // no column when eval + } else if (i === 0 && !parts[5] && typeof ex.columnNumber !== 'undefined') { + // FireFox uses this awesome columnNumber property for its top frame + // Also note, Firefox's column number is 0-based and everything else expects 1-based, + // so adding 1 + // NOTE: this hack doesn't work if top-most frame is eval + stack[0].column = ex.columnNumber + 1; + } + + element = { + url: parts[3], + func: parts[1] || UNKNOWN_FUNCTION, + args: parts[2] ? parts[2].split(',') : [], + line: parts[4] ? +parts[4] : null, + column: parts[5] ? +parts[5] : null + }; + } else { + continue; + } + + if (!element.func && element.line) { + element.func = UNKNOWN_FUNCTION; + } + + stack.push(element); + } + + if (!stack.length) { + return null; + } + + return { + name: ex.name, + message: ex.message, + url: getLocationHref(), + stack: stack + }; + } + /** + * Adds information about the first frame to incomplete stack traces. + * Safari and IE require this to get complete data on the first frame. + * @param {Object.} stackInfo Stack trace information from + * one of the compute* methods. + * @param {string} url The URL of the script that caused an error. + * @param {(number|string)} lineNo The line number of the script that + * caused an error. + * @param {string=} message The error generated by the browser, which + * hopefully contains the name of the object that caused the error. + * @return {boolean} Whether or not the stack information was + * augmented. + */ + + + function augmentStackTraceWithInitialElement(stackInfo, url, lineNo, message) { + var initial = { + url: url, + line: lineNo + }; + + if (initial.url && initial.line) { + stackInfo.incomplete = false; + + if (!initial.func) { + initial.func = UNKNOWN_FUNCTION; + } + + if (stackInfo.stack.length > 0) { + if (stackInfo.stack[0].url === initial.url) { + if (stackInfo.stack[0].line === initial.line) { + return false; // already in stack trace + } else if (!stackInfo.stack[0].line && stackInfo.stack[0].func === initial.func) { + stackInfo.stack[0].line = initial.line; + return false; + } + } + } + + stackInfo.stack.unshift(initial); + stackInfo.partial = true; + return true; + } else { + stackInfo.incomplete = true; + } + + return false; + } + /** + * Computes stack trace information by walking the arguments.caller + * chain at the time the exception occurred. This will cause earlier + * frames to be missed but is the only way to get any stack trace in + * Safari and IE. The top frame is restored by + * {@link augmentStackTraceWithInitialElement}. + * @param {Error} ex + * @return {?Object.} Stack trace information. + */ + + + function computeStackTraceByWalkingCallerChain(ex, depth) { + var functionName = /function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i, + stack = [], + funcs = {}, + recursion = false, + parts, + item; + + for (var curr = computeStackTraceByWalkingCallerChain.caller; curr && !recursion; curr = curr.caller) { + if (curr === computeStackTrace || curr === TraceKit.report) { + // console.log('skipping internal function'); + continue; + } + + item = { + url: null, + func: UNKNOWN_FUNCTION, + line: null, + column: null + }; + + if (curr.name) { + item.func = curr.name; + } else if (parts = functionName.exec(curr.toString())) { + item.func = parts[1]; + } + + if (typeof item.func === 'undefined') { + try { + item.func = parts.input.substring(0, parts.input.indexOf('{')); + } catch (e) {} + } + + if (funcs['' + curr]) { + recursion = true; + } else { + funcs['' + curr] = true; + } + + stack.push(item); + } + + if (depth) { + // console.log('depth is ' + depth); + // console.log('stack is ' + stack.length); + stack.splice(0, depth); + } + + var result = { + name: ex.name, + message: ex.message, + url: getLocationHref(), + stack: stack + }; + augmentStackTraceWithInitialElement(result, ex.sourceURL || ex.fileName, ex.line || ex.lineNumber, ex.message || ex.description); + return result; + } + /** + * Computes a stack trace for an exception. + * @param {Error} ex + * @param {(string|number)=} depth + */ + + + function computeStackTrace(ex, depth) { + var stack = null; + depth = depth == null ? 0 : +depth; + + try { + stack = computeStackTraceFromStackProp(ex); + + if (stack) { + return stack; + } + } catch (e) { + if (TraceKit.debug) { + throw e; + } + } + + try { + stack = computeStackTraceByWalkingCallerChain(ex, depth + 1); + + if (stack) { + return stack; + } + } catch (e) { + if (TraceKit.debug) { + throw e; + } + } + + return { + name: ex.name, + message: ex.message, + url: getLocationHref() + }; + } + + computeStackTrace.augmentStackTraceWithInitialElement = augmentStackTraceWithInitialElement; + computeStackTrace.computeStackTraceFromStackProp = computeStackTraceFromStackProp; + return computeStackTrace; +}(); + +var tracekit = TraceKit; + +var stringify_1 = createCommonjsModule(function (module, exports) { + /* + json-stringify-safe + Like JSON.stringify, but doesn't throw on circular references. + + Originally forked from https://github.com/isaacs/json-stringify-safe + version 5.0.1 on 3/8/2017 and modified to handle Errors serialization + and IE8 compatibility. Tests for this are in test/vendor. + + ISC license: https://github.com/isaacs/json-stringify-safe/blob/master/LICENSE + */ + exports = module.exports = stringify; + exports.getSerialize = serializer; + + function indexOf(haystack, needle) { + for (var i = 0; i < haystack.length; ++i) { + if (haystack[i] === needle) return i; + } + + return -1; + } + + function stringify(obj, replacer, spaces, cycleReplacer) { + return JSON.stringify(obj, serializer(replacer, cycleReplacer), spaces); + } // https://github.com/ftlabs/js-abbreviate/blob/fa709e5f139e7770a71827b1893f22418097fbda/index.js#L95-L106 + + + function stringifyError(value) { + var err = { + // These properties are implemented as magical getters and don't show up in for in + stack: value.stack, + message: value.message, + name: value.name + }; + + for (var i in value) { + if (Object.prototype.hasOwnProperty.call(value, i)) { + err[i] = value[i]; + } + } + + return err; + } + + function serializer(replacer, cycleReplacer) { + var stack = []; + var keys = []; + + if (cycleReplacer == null) { + cycleReplacer = function cycleReplacer(key, value) { + if (stack[0] === value) { + return '[Circular ~]'; + } + + return '[Circular ~.' + keys.slice(0, indexOf(stack, value)).join('.') + ']'; + }; + } + + return function (key, value) { + if (stack.length > 0) { + var thisPos = indexOf(stack, this); + ~thisPos ? stack.splice(thisPos + 1) : stack.push(this); + ~thisPos ? keys.splice(thisPos, Infinity, key) : keys.push(key); + + if (~indexOf(stack, value)) { + value = cycleReplacer.call(this, key, value); + } + } else { + stack.push(value); + } + + return replacer == null ? value instanceof Error ? stringifyError(value) : value : replacer.call(this, key, value); + }; + } +}); +var stringify_2 = stringify_1.getSerialize; + +function RavenConfigError(message) { + this.name = 'RavenConfigError'; + this.message = message; +} + +RavenConfigError.prototype = new Error(); +RavenConfigError.prototype.constructor = RavenConfigError; +var configError = RavenConfigError; + +var wrapMethod = function wrapMethod(console, level, callback) { + var originalConsoleLevel = console[level]; + var originalConsole = console; + + if (!(level in console)) { + return; + } + + var sentryLevel = level === 'warn' ? 'warning' : level; + + console[level] = function () { + var args = [].slice.call(arguments); + var msg = utils.safeJoin(args, ' '); + var data = { + level: sentryLevel, + logger: 'console', + extra: { + arguments: args + } + }; + + if (level === 'assert') { + if (args[0] === false) { + // Default browsers message + msg = 'Assertion failed: ' + (utils.safeJoin(args.slice(1), ' ') || 'console.assert'); + data.extra.arguments = args.slice(1); + callback && callback(msg, data); + } + } else { + callback && callback(msg, data); + } // this fails for some browsers. :( + + + if (originalConsoleLevel) { + // IE9 doesn't allow calling apply on console functions directly + // See: https://stackoverflow.com/questions/5472938/does-ie9-support-console-log-and-is-it-a-real-function#answer-5473193 + Function.prototype.apply.call(originalConsoleLevel, originalConsole, args); + } + }; +}; + +var console$1 = { + wrapMethod: wrapMethod +}; + +/*global XDomainRequest:false */ + +var isError = utils.isError; +var isObject = utils.isObject; +var isErrorEvent = utils.isErrorEvent; +var isUndefined = utils.isUndefined; +var isFunction = utils.isFunction; +var isString = utils.isString; +var isArray = utils.isArray; +var isEmptyObject = utils.isEmptyObject; +var each = utils.each; +var objectMerge = utils.objectMerge; +var truncate = utils.truncate; +var objectFrozen = utils.objectFrozen; +var hasKey = utils.hasKey; +var joinRegExp = utils.joinRegExp; +var urlencode = utils.urlencode; +var uuid4 = utils.uuid4; +var htmlTreeAsString = utils.htmlTreeAsString; +var isSameException = utils.isSameException; +var isSameStacktrace = utils.isSameStacktrace; +var parseUrl = utils.parseUrl; +var fill = utils.fill; +var supportsFetch = utils.supportsFetch; +var wrapConsoleMethod = console$1.wrapMethod; +var dsnKeys = 'source protocol user pass host port path'.split(' '); +var dsnPattern = /^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/; + +function now() { + return +new Date(); +} // This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) + + +var _window$1 = typeof window !== 'undefined' ? window : typeof commonjsGlobal !== 'undefined' ? commonjsGlobal : typeof self !== 'undefined' ? self : {}; + +var _document = _window$1.document; +var _navigator = _window$1.navigator; + +function keepOriginalCallback(original, callback) { + return isFunction(callback) ? function (data) { + return callback(data, original); + } : callback; +} // First, check for JSON support +// If there is no JSON, we no-op the core features of Raven +// since JSON is required to encode the payload + + +function Raven$1() { + this._hasJSON = !!(_typeof(JSON) === 'object' && JSON.stringify); // Raven can run in contexts where there's no document (react-native) + + this._hasDocument = !isUndefined(_document); + this._hasNavigator = !isUndefined(_navigator); + this._lastCapturedException = null; + this._lastData = null; + this._lastEventId = null; + this._globalServer = null; + this._globalKey = null; + this._globalProject = null; + this._globalContext = {}; + this._globalOptions = { + // SENTRY_RELEASE can be injected by https://github.com/getsentry/sentry-webpack-plugin + release: _window$1.SENTRY_RELEASE && _window$1.SENTRY_RELEASE.id, + logger: 'javascript', + ignoreErrors: [], + ignoreUrls: [], + whitelistUrls: [], + includePaths: [], + headers: null, + collectWindowErrors: true, + maxMessageLength: 0, + // By default, truncates URL values to 250 chars + maxUrlLength: 250, + stackTraceLimit: 50, + autoBreadcrumbs: true, + instrument: true, + sampleRate: 1 + }; + this._fetchDefaults = { + method: 'POST', + keepalive: true, + referrerPolicy: 'origin' + }; + this._ignoreOnError = 0; + this._isRavenInstalled = false; + this._originalErrorStackTraceLimit = Error.stackTraceLimit; // capture references to window.console *and* all its methods first + // before the console plugin has a chance to monkey patch + + this._originalConsole = _window$1.console || {}; + this._originalConsoleMethods = {}; + this._plugins = []; + this._startTime = now(); + this._wrappedBuiltIns = []; + this._breadcrumbs = []; + this._lastCapturedEvent = null; + this._keypressTimeout; + this._location = _window$1.location; + this._lastHref = this._location && this._location.href; + + this._resetBackoff(); // eslint-disable-next-line guard-for-in + + + for (var method in this._originalConsole) { + this._originalConsoleMethods[method] = this._originalConsole[method]; + } +} +/* + * The core Raven singleton + * + * @this {Raven} + */ + + +Raven$1.prototype = { + // Hardcode version string so that raven source can be loaded directly via + // webpack (using a build step causes webpack #1617). Grunt verifies that + // this value matches package.json during build. + // See: https://github.com/getsentry/raven-js/issues/465 + VERSION: '3.22.2', + debug: false, + TraceKit: tracekit, + // alias to TraceKit + + /* + * Configure Raven with a DSN and extra options + * + * @param {string} dsn The public Sentry DSN + * @param {object} options Set of global options [optional] + * @return {Raven} + */ + config: function config(dsn, options) { + var self = this; + + if (self._globalServer) { + this._logDebug('error', 'Error: Raven has already been configured'); + + return self; + } + + if (!dsn) return self; + var globalOptions = self._globalOptions; // merge in options + + if (options) { + each(options, function (key, value) { + // tags and extra are special and need to be put into context + if (key === 'tags' || key === 'extra' || key === 'user') { + self._globalContext[key] = value; + } else { + globalOptions[key] = value; + } + }); + } + + self.setDSN(dsn); // "Script error." is hard coded into browsers for errors that it can't read. + // this is the result of a script being pulled in from an external domain and CORS. + + globalOptions.ignoreErrors.push(/^Script error\.?$/); + globalOptions.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/); // join regexp rules into one big rule + + globalOptions.ignoreErrors = joinRegExp(globalOptions.ignoreErrors); + globalOptions.ignoreUrls = globalOptions.ignoreUrls.length ? joinRegExp(globalOptions.ignoreUrls) : false; + globalOptions.whitelistUrls = globalOptions.whitelistUrls.length ? joinRegExp(globalOptions.whitelistUrls) : false; + globalOptions.includePaths = joinRegExp(globalOptions.includePaths); + globalOptions.maxBreadcrumbs = Math.max(0, Math.min(globalOptions.maxBreadcrumbs || 100, 100)); // default and hard limit is 100 + + var autoBreadcrumbDefaults = { + xhr: true, + console: true, + dom: true, + location: true, + sentry: true + }; + var autoBreadcrumbs = globalOptions.autoBreadcrumbs; + + if ({}.toString.call(autoBreadcrumbs) === '[object Object]') { + autoBreadcrumbs = objectMerge(autoBreadcrumbDefaults, autoBreadcrumbs); + } else if (autoBreadcrumbs !== false) { + autoBreadcrumbs = autoBreadcrumbDefaults; + } + + globalOptions.autoBreadcrumbs = autoBreadcrumbs; + var instrumentDefaults = { + tryCatch: true + }; + var instrument = globalOptions.instrument; + + if ({}.toString.call(instrument) === '[object Object]') { + instrument = objectMerge(instrumentDefaults, instrument); + } else if (instrument !== false) { + instrument = instrumentDefaults; + } + + globalOptions.instrument = instrument; + tracekit.collectWindowErrors = !!globalOptions.collectWindowErrors; // return for chaining + + return self; + }, + + /* + * Installs a global window.onerror error handler + * to capture and report uncaught exceptions. + * At this point, install() is required to be called due + * to the way TraceKit is set up. + * + * @return {Raven} + */ + install: function install() { + var self = this; + + if (self.isSetup() && !self._isRavenInstalled) { + tracekit.report.subscribe(function () { + self._handleOnErrorStackInfo.apply(self, arguments); + }); + + self._patchFunctionToString(); + + if (self._globalOptions.instrument && self._globalOptions.instrument.tryCatch) { + self._instrumentTryCatch(); + } + + if (self._globalOptions.autoBreadcrumbs) self._instrumentBreadcrumbs(); // Install all of the plugins + + self._drainPlugins(); + + self._isRavenInstalled = true; + } + + Error.stackTraceLimit = self._globalOptions.stackTraceLimit; + return this; + }, + + /* + * Set the DSN (can be called multiple time unlike config) + * + * @param {string} dsn The public Sentry DSN + */ + setDSN: function setDSN(dsn) { + var self = this, + uri = self._parseDSN(dsn), + lastSlash = uri.path.lastIndexOf('/'), + path = uri.path.substr(1, lastSlash); + + self._dsn = dsn; + self._globalKey = uri.user; + self._globalSecret = uri.pass && uri.pass.substr(1); + self._globalProject = uri.path.substr(lastSlash + 1); + self._globalServer = self._getGlobalServer(uri); + self._globalEndpoint = self._globalServer + '/' + path + 'api/' + self._globalProject + '/store/'; // Reset backoff state since we may be pointing at a + // new project/server + + this._resetBackoff(); + }, + + /* + * Wrap code within a context so Raven can capture errors + * reliably across domains that is executed immediately. + * + * @param {object} options A specific set of options for this context [optional] + * @param {function} func The callback to be immediately executed within the context + * @param {array} args An array of arguments to be called with the callback [optional] + */ + context: function context(options, func, args) { + if (isFunction(options)) { + args = func || []; + func = options; + options = undefined; + } + + return this.wrap(options, func).apply(this, args); + }, + + /* + * Wrap code within a context and returns back a new function to be executed + * + * @param {object} options A specific set of options for this context [optional] + * @param {function} func The function to be wrapped in a new context + * @param {function} func A function to call before the try/catch wrapper [optional, private] + * @return {function} The newly wrapped functions with a context + */ + wrap: function wrap(options, func, _before) { + var self = this; // 1 argument has been passed, and it's not a function + // so just return it + + if (isUndefined(func) && !isFunction(options)) { + return options; + } // options is optional + + + if (isFunction(options)) { + func = options; + options = undefined; + } // At this point, we've passed along 2 arguments, and the second one + // is not a function either, so we'll just return the second argument. + + + if (!isFunction(func)) { + return func; + } // We don't wanna wrap it twice! + + + try { + if (func.__raven__) { + return func; + } // If this has already been wrapped in the past, return that + + + if (func.__raven_wrapper__) { + return func.__raven_wrapper__; + } + } catch (e) { + // Just accessing custom props in some Selenium environments + // can cause a "Permission denied" exception (see raven-js#495). + // Bail on wrapping and return the function as-is (defers to window.onerror). + return func; + } + + function wrapped() { + var args = [], + i = arguments.length, + deep = !options || options && options.deep !== false; + + if (_before && isFunction(_before)) { + _before.apply(this, arguments); + } // Recursively wrap all of a function's arguments that are + // functions themselves. + + + while (i--) { + args[i] = deep ? self.wrap(options, arguments[i]) : arguments[i]; + } + + try { + // Attempt to invoke user-land function + // NOTE: If you are a Sentry user, and you are seeing this stack frame, it + // means Raven caught an error invoking your application code. This is + // expected behavior and NOT indicative of a bug with Raven.js. + return func.apply(this, args); + } catch (e) { + self._ignoreNextOnError(); + + self.captureException(e, options); + throw e; + } + } // copy over properties of the old function + + + for (var property in func) { + if (hasKey(func, property)) { + wrapped[property] = func[property]; + } + } + + wrapped.prototype = func.prototype; + func.__raven_wrapper__ = wrapped; // Signal that this function has been wrapped/filled already + // for both debugging and to prevent it to being wrapped/filled twice + + wrapped.__raven__ = true; + wrapped.__orig__ = func; + return wrapped; + }, + + /* + * Uninstalls the global error handler. + * + * @return {Raven} + */ + uninstall: function uninstall() { + tracekit.report.uninstall(); + + this._unpatchFunctionToString(); + + this._restoreBuiltIns(); + + this._restoreConsole(); + + Error.stackTraceLimit = this._originalErrorStackTraceLimit; + this._isRavenInstalled = false; + return this; + }, + + /* + * Manually capture an exception and send it over to Sentry + * + * @param {error} ex An exception to be logged + * @param {object} options A specific set of options for this error [optional] + * @return {Raven} + */ + captureException: function captureException(ex, options) { + options = objectMerge({ + trimHeadFrames: 0 + }, options ? options : {}); // Cases for sending ex as a message, rather than an exception + + var isNotError = !isError(ex); + var isNotErrorEvent = !isErrorEvent(ex); + var isErrorEventWithoutError = isErrorEvent(ex) && !ex.error; + + if (isNotError && isNotErrorEvent || isErrorEventWithoutError) { + return this.captureMessage(ex, objectMerge(options, { + stacktrace: true, + // if we fall back to captureMessage, default to attempting a new trace + trimHeadFrames: options.trimHeadFrames + 1 + })); + } // Get actual Error from ErrorEvent + + + if (isErrorEvent(ex)) ex = ex.error; // Store the raw exception object for potential debugging and introspection + + this._lastCapturedException = ex; // TraceKit.report will re-raise any exception passed to it, + // which means you have to wrap it in try/catch. Instead, we + // can wrap it here and only re-raise if TraceKit.report + // raises an exception different from the one we asked to + // report on. + + try { + var stack = tracekit.computeStackTrace(ex); + + this._handleStackInfo(stack, options); + } catch (ex1) { + if (ex !== ex1) { + throw ex1; + } + } + + return this; + }, + + /* + * Manually send a message to Sentry + * + * @param {string} msg A plain message to be captured in Sentry + * @param {object} options A specific set of options for this message [optional] + * @return {Raven} + */ + captureMessage: function captureMessage(msg, options) { + // config() automagically converts ignoreErrors from a list to a RegExp so we need to test for an + // early call; we'll error on the side of logging anything called before configuration since it's + // probably something you should see: + if (!!this._globalOptions.ignoreErrors.test && this._globalOptions.ignoreErrors.test(msg)) { + return; + } + + options = options || {}; + var data = objectMerge({ + message: msg + '' // Make sure it's actually a string + + }, options); + var ex; // Generate a "synthetic" stack trace from this point. + // NOTE: If you are a Sentry user, and you are seeing this stack frame, it is NOT indicative + // of a bug with Raven.js. Sentry generates synthetic traces either by configuration, + // or if it catches a thrown object without a "stack" property. + + try { + throw new Error(msg); + } catch (ex1) { + ex = ex1; + } // null exception name so `Error` isn't prefixed to msg + + + ex.name = null; + var stack = tracekit.computeStackTrace(ex); // stack[0] is `throw new Error(msg)` call itself, we are interested in the frame that was just before that, stack[1] + + var initialCall = isArray(stack.stack) && stack.stack[1]; + var fileurl = initialCall && initialCall.url || ''; + + if (!!this._globalOptions.ignoreUrls.test && this._globalOptions.ignoreUrls.test(fileurl)) { + return; + } + + if (!!this._globalOptions.whitelistUrls.test && !this._globalOptions.whitelistUrls.test(fileurl)) { + return; + } + + if (this._globalOptions.stacktrace || options && options.stacktrace) { + options = objectMerge({ + // fingerprint on msg, not stack trace (legacy behavior, could be + // revisited) + fingerprint: msg, + // since we know this is a synthetic trace, the top N-most frames + // MUST be from Raven.js, so mark them as in_app later by setting + // trimHeadFrames + trimHeadFrames: (options.trimHeadFrames || 0) + 1 + }, options); + + var frames = this._prepareFrames(stack, options); + + data.stacktrace = { + // Sentry expects frames oldest to newest + frames: frames.reverse() + }; + } // Fire away! + + + this._send(data); + + return this; + }, + captureBreadcrumb: function captureBreadcrumb(obj) { + var crumb = objectMerge({ + timestamp: now() / 1000 + }, obj); + + if (isFunction(this._globalOptions.breadcrumbCallback)) { + var result = this._globalOptions.breadcrumbCallback(crumb); + + if (isObject(result) && !isEmptyObject(result)) { + crumb = result; + } else if (result === false) { + return this; + } + } + + this._breadcrumbs.push(crumb); + + if (this._breadcrumbs.length > this._globalOptions.maxBreadcrumbs) { + this._breadcrumbs.shift(); + } + + return this; + }, + addPlugin: function addPlugin(plugin + /*arg1, arg2, ... argN*/ + ) { + var pluginArgs = [].slice.call(arguments, 1); + + this._plugins.push([plugin, pluginArgs]); + + if (this._isRavenInstalled) { + this._drainPlugins(); + } + + return this; + }, + + /* + * Set/clear a user to be sent along with the payload. + * + * @param {object} user An object representing user data [optional] + * @return {Raven} + */ + setUserContext: function setUserContext(user) { + // Intentionally do not merge here since that's an unexpected behavior. + this._globalContext.user = user; + return this; + }, + + /* + * Merge extra attributes to be sent along with the payload. + * + * @param {object} extra An object representing extra data [optional] + * @return {Raven} + */ + setExtraContext: function setExtraContext(extra) { + this._mergeContext('extra', extra); + + return this; + }, + + /* + * Merge tags to be sent along with the payload. + * + * @param {object} tags An object representing tags [optional] + * @return {Raven} + */ + setTagsContext: function setTagsContext(tags) { + this._mergeContext('tags', tags); + + return this; + }, + + /* + * Clear all of the context. + * + * @return {Raven} + */ + clearContext: function clearContext() { + this._globalContext = {}; + return this; + }, + + /* + * Get a copy of the current context. This cannot be mutated. + * + * @return {object} copy of context + */ + getContext: function getContext() { + // lol javascript + return JSON.parse(stringify_1(this._globalContext)); + }, + + /* + * Set environment of application + * + * @param {string} environment Typically something like 'production'. + * @return {Raven} + */ + setEnvironment: function setEnvironment(environment) { + this._globalOptions.environment = environment; + return this; + }, + + /* + * Set release version of application + * + * @param {string} release Typically something like a git SHA to identify version + * @return {Raven} + */ + setRelease: function setRelease(release) { + this._globalOptions.release = release; + return this; + }, + + /* + * Set the dataCallback option + * + * @param {function} callback The callback to run which allows the + * data blob to be mutated before sending + * @return {Raven} + */ + setDataCallback: function setDataCallback(callback) { + var original = this._globalOptions.dataCallback; + this._globalOptions.dataCallback = keepOriginalCallback(original, callback); + return this; + }, + + /* + * Set the breadcrumbCallback option + * + * @param {function} callback The callback to run which allows filtering + * or mutating breadcrumbs + * @return {Raven} + */ + setBreadcrumbCallback: function setBreadcrumbCallback(callback) { + var original = this._globalOptions.breadcrumbCallback; + this._globalOptions.breadcrumbCallback = keepOriginalCallback(original, callback); + return this; + }, + + /* + * Set the shouldSendCallback option + * + * @param {function} callback The callback to run which allows + * introspecting the blob before sending + * @return {Raven} + */ + setShouldSendCallback: function setShouldSendCallback(callback) { + var original = this._globalOptions.shouldSendCallback; + this._globalOptions.shouldSendCallback = keepOriginalCallback(original, callback); + return this; + }, + + /** + * Override the default HTTP transport mechanism that transmits data + * to the Sentry server. + * + * @param {function} transport Function invoked instead of the default + * `makeRequest` handler. + * + * @return {Raven} + */ + setTransport: function setTransport(transport) { + this._globalOptions.transport = transport; + return this; + }, + + /* + * Get the latest raw exception that was captured by Raven. + * + * @return {error} + */ + lastException: function lastException() { + return this._lastCapturedException; + }, + + /* + * Get the last event id + * + * @return {string} + */ + lastEventId: function lastEventId() { + return this._lastEventId; + }, + + /* + * Determine if Raven is setup and ready to go. + * + * @return {boolean} + */ + isSetup: function isSetup() { + if (!this._hasJSON) return false; // needs JSON support + + if (!this._globalServer) { + if (!this.ravenNotConfiguredError) { + this.ravenNotConfiguredError = true; + + this._logDebug('error', 'Error: Raven has not been configured.'); + } + + return false; + } + + return true; + }, + afterLoad: function afterLoad() { + // TODO: remove window dependence? + // Attempt to initialize Raven on load + var RavenConfig = _window$1.RavenConfig; + + if (RavenConfig) { + this.config(RavenConfig.dsn, RavenConfig.config).install(); + } + }, + showReportDialog: function showReportDialog(options) { + if (!_document // doesn't work without a document (React native) + ) return; + options = options || {}; + var lastEventId = options.eventId || this.lastEventId(); + + if (!lastEventId) { + throw new configError('Missing eventId'); + } + + var dsn = options.dsn || this._dsn; + + if (!dsn) { + throw new configError('Missing DSN'); + } + + var encode = encodeURIComponent; + var qs = ''; + qs += '?eventId=' + encode(lastEventId); + qs += '&dsn=' + encode(dsn); + var user = options.user || this._globalContext.user; + + if (user) { + if (user.name) qs += '&name=' + encode(user.name); + if (user.email) qs += '&email=' + encode(user.email); + } + + var globalServer = this._getGlobalServer(this._parseDSN(dsn)); + + var script = _document.createElement('script'); + + script.async = true; + script.src = globalServer + '/api/embed/error-page/' + qs; + + (_document.head || _document.body).appendChild(script); + }, + + /**** Private functions ****/ + _ignoreNextOnError: function _ignoreNextOnError() { + var self = this; + this._ignoreOnError += 1; + setTimeout(function () { + // onerror should trigger before setTimeout + self._ignoreOnError -= 1; + }); + }, + _triggerEvent: function _triggerEvent(eventType, options) { + // NOTE: `event` is a native browser thing, so let's avoid conflicting wiht it + var evt, key; + if (!this._hasDocument) return; + options = options || {}; + eventType = 'raven' + eventType.substr(0, 1).toUpperCase() + eventType.substr(1); + + if (_document.createEvent) { + evt = _document.createEvent('HTMLEvents'); + evt.initEvent(eventType, true, true); + } else { + evt = _document.createEventObject(); + evt.eventType = eventType; + } + + for (key in options) { + if (hasKey(options, key)) { + evt[key] = options[key]; + } + } + + if (_document.createEvent) { + // IE9 if standards + _document.dispatchEvent(evt); + } else { + // IE8 regardless of Quirks or Standards + // IE9 if quirks + try { + _document.fireEvent('on' + evt.eventType.toLowerCase(), evt); + } catch (e) {// Do nothing + } + } + }, + + /** + * Wraps addEventListener to capture UI breadcrumbs + * @param evtName the event name (e.g. "click") + * @returns {Function} + * @private + */ + _breadcrumbEventHandler: function _breadcrumbEventHandler(evtName) { + var self = this; + return function (evt) { + // reset keypress timeout; e.g. triggering a 'click' after + // a 'keypress' will reset the keypress debounce so that a new + // set of keypresses can be recorded + self._keypressTimeout = null; // It's possible this handler might trigger multiple times for the same + // event (e.g. event propagation through node ancestors). Ignore if we've + // already captured the event. + + if (self._lastCapturedEvent === evt) return; + self._lastCapturedEvent = evt; // try/catch both: + // - accessing evt.target (see getsentry/raven-js#838, #768) + // - `htmlTreeAsString` because it's complex, and just accessing the DOM incorrectly + // can throw an exception in some circumstances. + + var target; + + try { + target = htmlTreeAsString(evt.target); + } catch (e) { + target = ''; + } + + self.captureBreadcrumb({ + category: 'ui.' + evtName, + // e.g. ui.click, ui.input + message: target + }); + }; + }, + + /** + * Wraps addEventListener to capture keypress UI events + * @returns {Function} + * @private + */ + _keypressEventHandler: function _keypressEventHandler() { + var self = this, + debounceDuration = 1000; // milliseconds + // TODO: if somehow user switches keypress target before + // debounce timeout is triggered, we will only capture + // a single breadcrumb from the FIRST target (acceptable?) + + return function (evt) { + var target; + + try { + target = evt.target; + } catch (e) { + // just accessing event properties can throw an exception in some rare circumstances + // see: https://github.com/getsentry/raven-js/issues/838 + return; + } + + var tagName = target && target.tagName; // only consider keypress events on actual input elements + // this will disregard keypresses targeting body (e.g. tabbing + // through elements, hotkeys, etc) + + if (!tagName || tagName !== 'INPUT' && tagName !== 'TEXTAREA' && !target.isContentEditable) return; // record first keypress in a series, but ignore subsequent + // keypresses until debounce clears + + var timeout = self._keypressTimeout; + + if (!timeout) { + self._breadcrumbEventHandler('input')(evt); + } + + clearTimeout(timeout); + self._keypressTimeout = setTimeout(function () { + self._keypressTimeout = null; + }, debounceDuration); + }; + }, + + /** + * Captures a breadcrumb of type "navigation", normalizing input URLs + * @param to the originating URL + * @param from the target URL + * @private + */ + _captureUrlChange: function _captureUrlChange(from, to) { + var parsedLoc = parseUrl(this._location.href); + var parsedTo = parseUrl(to); + var parsedFrom = parseUrl(from); // because onpopstate only tells you the "new" (to) value of location.href, and + // not the previous (from) value, we need to track the value of the current URL + // state ourselves + + this._lastHref = to; // Use only the path component of the URL if the URL matches the current + // document (almost all the time when using pushState) + + if (parsedLoc.protocol === parsedTo.protocol && parsedLoc.host === parsedTo.host) to = parsedTo.relative; + if (parsedLoc.protocol === parsedFrom.protocol && parsedLoc.host === parsedFrom.host) from = parsedFrom.relative; + this.captureBreadcrumb({ + category: 'navigation', + data: { + to: to, + from: from + } + }); + }, + _patchFunctionToString: function _patchFunctionToString() { + var self = this; + self._originalFunctionToString = Function.prototype.toString; // eslint-disable-next-line no-extend-native + + Function.prototype.toString = function () { + if (typeof this === 'function' && this.__raven__) { + return self._originalFunctionToString.apply(this.__orig__, arguments); + } + + return self._originalFunctionToString.apply(this, arguments); + }; + }, + _unpatchFunctionToString: function _unpatchFunctionToString() { + if (this._originalFunctionToString) { + // eslint-disable-next-line no-extend-native + Function.prototype.toString = this._originalFunctionToString; + } + }, + + /** + * Wrap timer functions and event targets to catch errors and provide + * better metadata. + */ + _instrumentTryCatch: function _instrumentTryCatch() { + var self = this; + var wrappedBuiltIns = self._wrappedBuiltIns; + + function wrapTimeFn(orig) { + return function (fn, t) { + // preserve arity + // Make a copy of the arguments to prevent deoptimization + // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments + var args = new Array(arguments.length); + + for (var i = 0; i < args.length; ++i) { + args[i] = arguments[i]; + } + + var originalCallback = args[0]; + + if (isFunction(originalCallback)) { + args[0] = self.wrap(originalCallback); + } // IE < 9 doesn't support .call/.apply on setInterval/setTimeout, but it + // also supports only two arguments and doesn't care what this is, so we + // can just call the original function directly. + + + if (orig.apply) { + return orig.apply(this, args); + } else { + return orig(args[0], args[1]); + } + }; + } + + var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; + + function wrapEventTarget(global) { + var proto = _window$1[global] && _window$1[global].prototype; + + if (proto && proto.hasOwnProperty && proto.hasOwnProperty('addEventListener')) { + fill(proto, 'addEventListener', function (orig) { + return function (evtName, fn, capture, secure) { + // preserve arity + try { + if (fn && fn.handleEvent) { + fn.handleEvent = self.wrap(fn.handleEvent); + } + } catch (err) {} // can sometimes get 'Permission denied to access property "handle Event' + // More breadcrumb DOM capture ... done here and not in `_instrumentBreadcrumbs` + // so that we don't have more than one wrapper function + + + var before, clickHandler, keypressHandler; + + if (autoBreadcrumbs && autoBreadcrumbs.dom && (global === 'EventTarget' || global === 'Node')) { + // NOTE: generating multiple handlers per addEventListener invocation, should + // revisit and verify we can just use one (almost certainly) + clickHandler = self._breadcrumbEventHandler('click'); + keypressHandler = self._keypressEventHandler(); + + before = function before(evt) { + // need to intercept every DOM event in `before` argument, in case that + // same wrapped method is re-used for different events (e.g. mousemove THEN click) + // see #724 + if (!evt) return; + var eventType; + + try { + eventType = evt.type; + } catch (e) { + // just accessing event properties can throw an exception in some rare circumstances + // see: https://github.com/getsentry/raven-js/issues/838 + return; + } + + if (eventType === 'click') return clickHandler(evt);else if (eventType === 'keypress') return keypressHandler(evt); + }; + } + + return orig.call(this, evtName, self.wrap(fn, undefined, before), capture, secure); + }; + }, wrappedBuiltIns); + fill(proto, 'removeEventListener', function (orig) { + return function (evt, fn, capture, secure) { + try { + fn = fn && (fn.__raven_wrapper__ ? fn.__raven_wrapper__ : fn); + } catch (e) {// ignore, accessing __raven_wrapper__ will throw in some Selenium environments + } + + return orig.call(this, evt, fn, capture, secure); + }; + }, wrappedBuiltIns); + } + } + + fill(_window$1, 'setTimeout', wrapTimeFn, wrappedBuiltIns); + fill(_window$1, 'setInterval', wrapTimeFn, wrappedBuiltIns); + + if (_window$1.requestAnimationFrame) { + fill(_window$1, 'requestAnimationFrame', function (orig) { + return function (cb) { + return orig(self.wrap(cb)); + }; + }, wrappedBuiltIns); + } // event targets borrowed from bugsnag-js: + // https://github.com/bugsnag/bugsnag-js/blob/master/src/bugsnag.js#L666 + + + var eventTargets = ['EventTarget', 'Window', 'Node', 'ApplicationCache', 'AudioTrackList', 'ChannelMergerNode', 'CryptoOperation', 'EventSource', 'FileReader', 'HTMLUnknownElement', 'IDBDatabase', 'IDBRequest', 'IDBTransaction', 'KeyOperation', 'MediaController', 'MessagePort', 'ModalWindow', 'Notification', 'SVGElementInstance', 'Screen', 'TextTrack', 'TextTrackCue', 'TextTrackList', 'WebSocket', 'WebSocketWorker', 'Worker', 'XMLHttpRequest', 'XMLHttpRequestEventTarget', 'XMLHttpRequestUpload']; + + for (var i = 0; i < eventTargets.length; i++) { + wrapEventTarget(eventTargets[i]); + } + }, + + /** + * Instrument browser built-ins w/ breadcrumb capturing + * - XMLHttpRequests + * - DOM interactions (click/typing) + * - window.location changes + * - console + * + * Can be disabled or individually configured via the `autoBreadcrumbs` config option + */ + _instrumentBreadcrumbs: function _instrumentBreadcrumbs() { + var self = this; + var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; + var wrappedBuiltIns = self._wrappedBuiltIns; + + function wrapProp(prop, xhr) { + if (prop in xhr && isFunction(xhr[prop])) { + fill(xhr, prop, function (orig) { + return self.wrap(orig); + }); // intentionally don't track filled methods on XHR instances + } + } + + if (autoBreadcrumbs.xhr && 'XMLHttpRequest' in _window$1) { + var xhrproto = XMLHttpRequest.prototype; + fill(xhrproto, 'open', function (origOpen) { + return function (method, url) { + // preserve arity + // if Sentry key appears in URL, don't capture + if (isString(url) && url.indexOf(self._globalKey) === -1) { + this.__raven_xhr = { + method: method, + url: url, + status_code: null + }; + } + + return origOpen.apply(this, arguments); + }; + }, wrappedBuiltIns); + fill(xhrproto, 'send', function (origSend) { + return function () { + // preserve arity + var xhr = this; + + function onreadystatechangeHandler() { + if (xhr.__raven_xhr && xhr.readyState === 4) { + try { + // touching statusCode in some platforms throws + // an exception + xhr.__raven_xhr.status_code = xhr.status; + } catch (e) { + /* do nothing */ + } + + self.captureBreadcrumb({ + type: 'http', + category: 'xhr', + data: xhr.__raven_xhr + }); + } + } + + var props = ['onload', 'onerror', 'onprogress']; + + for (var j = 0; j < props.length; j++) { + wrapProp(props[j], xhr); + } + + if ('onreadystatechange' in xhr && isFunction(xhr.onreadystatechange)) { + fill(xhr, 'onreadystatechange', function (orig) { + return self.wrap(orig, undefined, onreadystatechangeHandler); + } + /* intentionally don't track this instrumentation */ + ); + } else { + // if onreadystatechange wasn't actually set by the page on this xhr, we + // are free to set our own and capture the breadcrumb + xhr.onreadystatechange = onreadystatechangeHandler; + } + + return origSend.apply(this, arguments); + }; + }, wrappedBuiltIns); + } + + if (autoBreadcrumbs.xhr && supportsFetch()) { + fill(_window$1, 'fetch', function (origFetch) { + return function () { + // preserve arity + // Make a copy of the arguments to prevent deoptimization + // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments + var args = new Array(arguments.length); + + for (var i = 0; i < args.length; ++i) { + args[i] = arguments[i]; + } + + var fetchInput = args[0]; + var method = 'GET'; + var url; + + if (typeof fetchInput === 'string') { + url = fetchInput; + } else if ('Request' in _window$1 && fetchInput instanceof _window$1.Request) { + url = fetchInput.url; + + if (fetchInput.method) { + method = fetchInput.method; + } + } else { + url = '' + fetchInput; + } // if Sentry key appears in URL, don't capture, as it's our own request + + + if (url.indexOf(self._globalKey) !== -1) { + return origFetch.apply(this, args); + } + + if (args[1] && args[1].method) { + method = args[1].method; + } + + var fetchData = { + method: method, + url: url, + status_code: null + }; + return origFetch.apply(this, args).then(function (response) { + fetchData.status_code = response.status; + self.captureBreadcrumb({ + type: 'http', + category: 'fetch', + data: fetchData + }); + return response; + }); + }; + }, wrappedBuiltIns); + } // Capture breadcrumbs from any click that is unhandled / bubbled up all the way + // to the document. Do this before we instrument addEventListener. + + + if (autoBreadcrumbs.dom && this._hasDocument) { + if (_document.addEventListener) { + _document.addEventListener('click', self._breadcrumbEventHandler('click'), false); + + _document.addEventListener('keypress', self._keypressEventHandler(), false); + } else { + // IE8 Compatibility + _document.attachEvent('onclick', self._breadcrumbEventHandler('click')); + + _document.attachEvent('onkeypress', self._keypressEventHandler()); + } + } // record navigation (URL) changes + // NOTE: in Chrome App environment, touching history.pushState, *even inside + // a try/catch block*, will cause Chrome to output an error to console.error + // borrowed from: https://github.com/angular/angular.js/pull/13945/files + + + var chrome = _window$1.chrome; + var isChromePackagedApp = chrome && chrome.app && chrome.app.runtime; + var hasPushAndReplaceState = !isChromePackagedApp && _window$1.history && history.pushState && history.replaceState; + + if (autoBreadcrumbs.location && hasPushAndReplaceState) { + // TODO: remove onpopstate handler on uninstall() + var oldOnPopState = _window$1.onpopstate; + + _window$1.onpopstate = function () { + var currentHref = self._location.href; + + self._captureUrlChange(self._lastHref, currentHref); + + if (oldOnPopState) { + return oldOnPopState.apply(this, arguments); + } + }; + + var historyReplacementFunction = function historyReplacementFunction(origHistFunction) { + // note history.pushState.length is 0; intentionally not declaring + // params to preserve 0 arity + return function () + /* state, title, url */ + { + var url = arguments.length > 2 ? arguments[2] : undefined; // url argument is optional + + if (url) { + // coerce to string (this is what pushState does) + self._captureUrlChange(self._lastHref, url + ''); + } + + return origHistFunction.apply(this, arguments); + }; + }; + + fill(history, 'pushState', historyReplacementFunction, wrappedBuiltIns); + fill(history, 'replaceState', historyReplacementFunction, wrappedBuiltIns); + } + + if (autoBreadcrumbs.console && 'console' in _window$1 && console.log) { + // console + var consoleMethodCallback = function consoleMethodCallback(msg, data) { + self.captureBreadcrumb({ + message: msg, + level: data.level, + category: 'console' + }); + }; + + each(['debug', 'info', 'warn', 'error', 'log'], function (_, level) { + wrapConsoleMethod(console, level, consoleMethodCallback); + }); + } + }, + _restoreBuiltIns: function _restoreBuiltIns() { + // restore any wrapped builtins + var builtin; + + while (this._wrappedBuiltIns.length) { + builtin = this._wrappedBuiltIns.shift(); + var obj = builtin[0], + name = builtin[1], + orig = builtin[2]; + obj[name] = orig; + } + }, + _restoreConsole: function _restoreConsole() { + // eslint-disable-next-line guard-for-in + for (var method in this._originalConsoleMethods) { + this._originalConsole[method] = this._originalConsoleMethods[method]; + } + }, + _drainPlugins: function _drainPlugins() { + var self = this; // FIX ME TODO + + each(this._plugins, function (_, plugin) { + var installer = plugin[0]; + var args = plugin[1]; + installer.apply(self, [self].concat(args)); + }); + }, + _parseDSN: function _parseDSN(str) { + var m = dsnPattern.exec(str), + dsn = {}, + i = 7; + + try { + while (i--) { + dsn[dsnKeys[i]] = m[i] || ''; + } + } catch (e) { + throw new configError('Invalid DSN: ' + str); + } + + if (dsn.pass && !this._globalOptions.allowSecretKey) { + throw new configError('Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key'); + } + + return dsn; + }, + _getGlobalServer: function _getGlobalServer(uri) { + // assemble the endpoint from the uri pieces + var globalServer = '//' + uri.host + (uri.port ? ':' + uri.port : ''); + + if (uri.protocol) { + globalServer = uri.protocol + ':' + globalServer; + } + + return globalServer; + }, + _handleOnErrorStackInfo: function _handleOnErrorStackInfo() { + // if we are intentionally ignoring errors via onerror, bail out + if (!this._ignoreOnError) { + this._handleStackInfo.apply(this, arguments); + } + }, + _handleStackInfo: function _handleStackInfo(stackInfo, options) { + var frames = this._prepareFrames(stackInfo, options); + + this._triggerEvent('handle', { + stackInfo: stackInfo, + options: options + }); + + this._processException(stackInfo.name, stackInfo.message, stackInfo.url, stackInfo.lineno, frames, options); + }, + _prepareFrames: function _prepareFrames(stackInfo, options) { + var self = this; + var frames = []; + + if (stackInfo.stack && stackInfo.stack.length) { + each(stackInfo.stack, function (i, stack) { + var frame = self._normalizeFrame(stack, stackInfo.url); + + if (frame) { + frames.push(frame); + } + }); // e.g. frames captured via captureMessage throw + + if (options && options.trimHeadFrames) { + for (var j = 0; j < options.trimHeadFrames && j < frames.length; j++) { + frames[j].in_app = false; + } + } + } + + frames = frames.slice(0, this._globalOptions.stackTraceLimit); + return frames; + }, + _normalizeFrame: function _normalizeFrame(frame, stackInfoUrl) { + // normalize the frames data + var normalized = { + filename: frame.url, + lineno: frame.line, + colno: frame.column, + function: frame.func || '?' + }; // Case when we don't have any information about the error + // E.g. throwing a string or raw object, instead of an `Error` in Firefox + // Generating synthetic error doesn't add any value here + // + // We should probably somehow let a user know that they should fix their code + + if (!frame.url) { + normalized.filename = stackInfoUrl; // fallback to whole stacks url from onerror handler + } + + normalized.in_app = !( // determine if an exception came from outside of our app + // first we check the global includePaths list. + !!this._globalOptions.includePaths.test && !this._globalOptions.includePaths.test(normalized.filename) || // Now we check for fun, if the function name is Raven or TraceKit + /(Raven|TraceKit)\./.test(normalized['function']) || // finally, we do a last ditch effort and check for raven.min.js + /raven\.(min\.)?js$/.test(normalized.filename)); + return normalized; + }, + _processException: function _processException(type, message, fileurl, lineno, frames, options) { + var prefixedMessage = (type ? type + ': ' : '') + (message || ''); + + if (!!this._globalOptions.ignoreErrors.test && (this._globalOptions.ignoreErrors.test(message) || this._globalOptions.ignoreErrors.test(prefixedMessage))) { + return; + } + + var stacktrace; + + if (frames && frames.length) { + fileurl = frames[0].filename || fileurl; // Sentry expects frames oldest to newest + // and JS sends them as newest to oldest + + frames.reverse(); + stacktrace = { + frames: frames + }; + } else if (fileurl) { + stacktrace = { + frames: [{ + filename: fileurl, + lineno: lineno, + in_app: true + }] + }; + } + + if (!!this._globalOptions.ignoreUrls.test && this._globalOptions.ignoreUrls.test(fileurl)) { + return; + } + + if (!!this._globalOptions.whitelistUrls.test && !this._globalOptions.whitelistUrls.test(fileurl)) { + return; + } + + var data = objectMerge({ + // sentry.interfaces.Exception + exception: { + values: [{ + type: type, + value: message, + stacktrace: stacktrace + }] + }, + culprit: fileurl + }, options); // Fire away! + + this._send(data); + }, + _trimPacket: function _trimPacket(data) { + // For now, we only want to truncate the two different messages + // but this could/should be expanded to just trim everything + var max = this._globalOptions.maxMessageLength; + + if (data.message) { + data.message = truncate(data.message, max); + } + + if (data.exception) { + var exception = data.exception.values[0]; + exception.value = truncate(exception.value, max); + } + + var request = data.request; + + if (request) { + if (request.url) { + request.url = truncate(request.url, this._globalOptions.maxUrlLength); + } + + if (request.Referer) { + request.Referer = truncate(request.Referer, this._globalOptions.maxUrlLength); + } + } + + if (data.breadcrumbs && data.breadcrumbs.values) this._trimBreadcrumbs(data.breadcrumbs); + return data; + }, + + /** + * Truncate breadcrumb values (right now just URLs) + */ + _trimBreadcrumbs: function _trimBreadcrumbs(breadcrumbs) { + // known breadcrumb properties with urls + // TODO: also consider arbitrary prop values that start with (https?)?:// + var urlProps = ['to', 'from', 'url'], + urlProp, + crumb, + data; + + for (var i = 0; i < breadcrumbs.values.length; ++i) { + crumb = breadcrumbs.values[i]; + if (!crumb.hasOwnProperty('data') || !isObject(crumb.data) || objectFrozen(crumb.data)) continue; + data = objectMerge({}, crumb.data); + + for (var j = 0; j < urlProps.length; ++j) { + urlProp = urlProps[j]; + + if (data.hasOwnProperty(urlProp) && data[urlProp]) { + data[urlProp] = truncate(data[urlProp], this._globalOptions.maxUrlLength); + } + } + + breadcrumbs.values[i].data = data; + } + }, + _getHttpData: function _getHttpData() { + if (!this._hasNavigator && !this._hasDocument) return; + var httpData = {}; + + if (this._hasNavigator && _navigator.userAgent) { + httpData.headers = { + 'User-Agent': navigator.userAgent + }; + } // Check in `window` instead of `document`, as we may be in ServiceWorker environment + + + if (_window$1.location && _window$1.location.href) { + httpData.url = _window$1.location.href; + } + + if (this._hasDocument && _document.referrer) { + if (!httpData.headers) httpData.headers = {}; + httpData.headers.Referer = _document.referrer; + } + + return httpData; + }, + _resetBackoff: function _resetBackoff() { + this._backoffDuration = 0; + this._backoffStart = null; + }, + _shouldBackoff: function _shouldBackoff() { + return this._backoffDuration && now() - this._backoffStart < this._backoffDuration; + }, + + /** + * Returns true if the in-process data payload matches the signature + * of the previously-sent data + * + * NOTE: This has to be done at this level because TraceKit can generate + * data from window.onerror WITHOUT an exception object (IE8, IE9, + * other old browsers). This can take the form of an "exception" + * data object with a single frame (derived from the onerror args). + */ + _isRepeatData: function _isRepeatData(current) { + var last = this._lastData; + if (!last || current.message !== last.message || // defined for captureMessage + current.culprit !== last.culprit // defined for captureException/onerror + ) return false; // Stacktrace interface (i.e. from captureMessage) + + if (current.stacktrace || last.stacktrace) { + return isSameStacktrace(current.stacktrace, last.stacktrace); + } else if (current.exception || last.exception) { + // Exception interface (i.e. from captureException/onerror) + return isSameException(current.exception, last.exception); + } + + return true; + }, + _setBackoffState: function _setBackoffState(request) { + // If we are already in a backoff state, don't change anything + if (this._shouldBackoff()) { + return; + } + + var status = request.status; // 400 - project_id doesn't exist or some other fatal + // 401 - invalid/revoked dsn + // 429 - too many requests + + if (!(status === 400 || status === 401 || status === 429)) return; + var retry; + + try { + // If Retry-After is not in Access-Control-Expose-Headers, most + // browsers will throw an exception trying to access it + if (supportsFetch()) { + retry = request.headers.get('Retry-After'); + } else { + retry = request.getResponseHeader('Retry-After'); + } // Retry-After is returned in seconds + + + retry = parseInt(retry, 10) * 1000; + } catch (e) { + /* eslint no-empty:0 */ + } + + this._backoffDuration = retry ? // If Sentry server returned a Retry-After value, use it + retry : // Otherwise, double the last backoff duration (starts at 1 sec) + this._backoffDuration * 2 || 1000; + this._backoffStart = now(); + }, + _send: function _send(data) { + var globalOptions = this._globalOptions; + + var baseData = { + project: this._globalProject, + logger: globalOptions.logger, + platform: 'javascript' + }, + httpData = this._getHttpData(); + + if (httpData) { + baseData.request = httpData; + } // HACK: delete `trimHeadFrames` to prevent from appearing in outbound payload + + + if (data.trimHeadFrames) delete data.trimHeadFrames; + data = objectMerge(baseData, data); // Merge in the tags and extra separately since objectMerge doesn't handle a deep merge + + data.tags = objectMerge(objectMerge({}, this._globalContext.tags), data.tags); + data.extra = objectMerge(objectMerge({}, this._globalContext.extra), data.extra); // Send along our own collected metadata with extra + + data.extra['session:duration'] = now() - this._startTime; + + if (this._breadcrumbs && this._breadcrumbs.length > 0) { + // intentionally make shallow copy so that additions + // to breadcrumbs aren't accidentally sent in this request + data.breadcrumbs = { + values: [].slice.call(this._breadcrumbs, 0) + }; + } + + if (this._globalContext.user) { + // sentry.interfaces.User + data.user = this._globalContext.user; + } // Include the environment if it's defined in globalOptions + + + if (globalOptions.environment) data.environment = globalOptions.environment; // Include the release if it's defined in globalOptions + + if (globalOptions.release) data.release = globalOptions.release; // Include server_name if it's defined in globalOptions + + if (globalOptions.serverName) data.server_name = globalOptions.serverName; // Cleanup empty properties before sending them to the server + + Object.keys(data).forEach(function (key) { + if (data[key] == null || data[key] === '' || isEmptyObject(data[key])) { + delete data[key]; + } + }); + + if (isFunction(globalOptions.dataCallback)) { + data = globalOptions.dataCallback(data) || data; + } // Why?????????? + + + if (!data || isEmptyObject(data)) { + return; + } // Check if the request should be filtered or not + + + if (isFunction(globalOptions.shouldSendCallback) && !globalOptions.shouldSendCallback(data)) { + return; + } // Backoff state: Sentry server previously responded w/ an error (e.g. 429 - too many requests), + // so drop requests until "cool-off" period has elapsed. + + + if (this._shouldBackoff()) { + this._logDebug('warn', 'Raven dropped error due to backoff: ', data); + + return; + } + + if (typeof globalOptions.sampleRate === 'number') { + if (Math.random() < globalOptions.sampleRate) { + this._sendProcessedPayload(data); + } + } else { + this._sendProcessedPayload(data); + } + }, + _getUuid: function _getUuid() { + return uuid4(); + }, + _sendProcessedPayload: function _sendProcessedPayload(data, callback) { + var self = this; + var globalOptions = this._globalOptions; + if (!this.isSetup()) return; // Try and clean up the packet before sending by truncating long values + + data = this._trimPacket(data); // ideally duplicate error testing should occur *before* dataCallback/shouldSendCallback, + // but this would require copying an un-truncated copy of the data packet, which can be + // arbitrarily deep (extra_data) -- could be worthwhile? will revisit + + if (!this._globalOptions.allowDuplicates && this._isRepeatData(data)) { + this._logDebug('warn', 'Raven dropped repeat event: ', data); + + return; + } // Send along an event_id if not explicitly passed. + // This event_id can be used to reference the error within Sentry itself. + // Set lastEventId after we know the error should actually be sent + + + this._lastEventId = data.event_id || (data.event_id = this._getUuid()); // Store outbound payload after trim + + this._lastData = data; + + this._logDebug('debug', 'Raven about to send:', data); + + var auth = { + sentry_version: '7', + sentry_client: 'raven-js/' + this.VERSION, + sentry_key: this._globalKey + }; + + if (this._globalSecret) { + auth.sentry_secret = this._globalSecret; + } + + var exception = data.exception && data.exception.values[0]; // only capture 'sentry' breadcrumb is autoBreadcrumbs is truthy + + if (this._globalOptions.autoBreadcrumbs && this._globalOptions.autoBreadcrumbs.sentry) { + this.captureBreadcrumb({ + category: 'sentry', + message: exception ? (exception.type ? exception.type + ': ' : '') + exception.value : data.message, + event_id: data.event_id, + level: data.level || 'error' // presume error unless specified + + }); + } + + var url = this._globalEndpoint; + + (globalOptions.transport || this._makeRequest).call(this, { + url: url, + auth: auth, + data: data, + options: globalOptions, + onSuccess: function success() { + self._resetBackoff(); + + self._triggerEvent('success', { + data: data, + src: url + }); + + callback && callback(); + }, + onError: function failure(error) { + self._logDebug('error', 'Raven transport failed to send: ', error); + + if (error.request) { + self._setBackoffState(error.request); + } + + self._triggerEvent('failure', { + data: data, + src: url + }); + + error = error || new Error('Raven send failed (no additional details provided)'); + callback && callback(error); + } + }); + }, + _makeRequest: function _makeRequest(opts) { + // Auth is intentionally sent as part of query string (NOT as custom HTTP header) to avoid preflight CORS requests + var url = opts.url + '?' + urlencode(opts.auth); + var evaluatedHeaders = null; + var evaluatedFetchParameters = {}; + + if (opts.options.headers) { + evaluatedHeaders = this._evaluateHash(opts.options.headers); + } + + if (opts.options.fetchParameters) { + evaluatedFetchParameters = this._evaluateHash(opts.options.fetchParameters); + } + + if (supportsFetch()) { + evaluatedFetchParameters.body = stringify_1(opts.data); + var defaultFetchOptions = objectMerge({}, this._fetchDefaults); + var fetchOptions = objectMerge(defaultFetchOptions, evaluatedFetchParameters); + + if (evaluatedHeaders) { + fetchOptions.headers = evaluatedHeaders; + } + + return _window$1.fetch(url, fetchOptions).then(function (response) { + if (response.ok) { + opts.onSuccess && opts.onSuccess(); + } else { + var error = new Error('Sentry error code: ' + response.status); // It's called request only to keep compatibility with XHR interface + // and not add more redundant checks in setBackoffState method + + error.request = response; + opts.onError && opts.onError(error); + } + })['catch'](function () { + opts.onError && opts.onError(new Error('Sentry error code: network unavailable')); + }); + } + + var request = _window$1.XMLHttpRequest && new _window$1.XMLHttpRequest(); + if (!request) return; // if browser doesn't support CORS (e.g. IE7), we are out of luck + + var hasCORS = 'withCredentials' in request || typeof XDomainRequest !== 'undefined'; + if (!hasCORS) return; + + if ('withCredentials' in request) { + request.onreadystatechange = function () { + if (request.readyState !== 4) { + return; + } else if (request.status === 200) { + opts.onSuccess && opts.onSuccess(); + } else if (opts.onError) { + var err = new Error('Sentry error code: ' + request.status); + err.request = request; + opts.onError(err); + } + }; + } else { + request = new XDomainRequest(); // xdomainrequest cannot go http -> https (or vice versa), + // so always use protocol relative + + url = url.replace(/^https?:/, ''); // onreadystatechange not supported by XDomainRequest + + if (opts.onSuccess) { + request.onload = opts.onSuccess; + } + + if (opts.onError) { + request.onerror = function () { + var err = new Error('Sentry error code: XDomainRequest'); + err.request = request; + opts.onError(err); + }; + } + } + + request.open('POST', url); + + if (evaluatedHeaders) { + each(evaluatedHeaders, function (key, value) { + request.setRequestHeader(key, value); + }); + } + + request.send(stringify_1(opts.data)); + }, + _evaluateHash: function _evaluateHash(hash) { + var evaluated = {}; + + for (var key in hash) { + if (hash.hasOwnProperty(key)) { + var value = hash[key]; + evaluated[key] = typeof value === 'function' ? value() : value; + } + } + + return evaluated; + }, + _logDebug: function _logDebug(level) { + if (this._originalConsoleMethods[level] && this.debug) { + // In IE<10 console methods do not have their own 'apply' method + Function.prototype.apply.call(this._originalConsoleMethods[level], this._originalConsole, [].slice.call(arguments, 1)); + } + }, + _mergeContext: function _mergeContext(key, context) { + if (isUndefined(context)) { + delete this._globalContext[key]; + } else { + this._globalContext[key] = objectMerge(this._globalContext[key] || {}, context); + } + } +}; // Deprecations + +Raven$1.prototype.setUser = Raven$1.prototype.setUserContext; +Raven$1.prototype.setReleaseContext = Raven$1.prototype.setRelease; +var raven = Raven$1; + +/** + * Enforces a single instance of the Raven client, and the + * main entry point for Raven. If you are a consumer of the + * Raven library, you SHOULD load this file (vs raven.js). + **/ +// This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) + +var _window = typeof window !== 'undefined' ? window : typeof commonjsGlobal !== 'undefined' ? commonjsGlobal : typeof self !== 'undefined' ? self : {}; + +var _Raven = _window.Raven; +var Raven = new raven(); +/* + * Allow multiple versions of Raven to be installed. + * Strip Raven from the global context and returns the instance. + * + * @return {Raven} + */ + +Raven.noConflict = function () { + _window.Raven = _Raven; + return Raven; +}; + +Raven.afterLoad(); +var singleton = Raven; + +/** + * Angular.js plugin + * + * Provides an $exceptionHandler for Angular.js + */ + +var wrappedCallback$1 = utils.wrappedCallback; // See https://github.com/angular/angular.js/blob/v1.4.7/src/minErr.js + +var angularPattern = /^\[((?:[$a-zA-Z0-9]+:)?(?:[$a-zA-Z0-9]+))\] (.*?)\n?(\S+)$/; +var moduleName = 'ngRaven'; + +function angularPlugin(Raven, angular) { + angular = angular || window.angular; + if (!angular) return; + + function RavenProvider() { + this.$get = ['$window', function ($window) { + return Raven; + }]; + } + + function ExceptionHandlerProvider($provide) { + $provide.decorator('$exceptionHandler', ['Raven', '$delegate', exceptionHandler]); + } + + function exceptionHandler(R, $delegate) { + return function (ex, cause) { + R.captureException(ex, { + extra: { + cause: cause + } + }); + $delegate(ex, cause); + }; + } + + angular.module(moduleName, []).provider('Raven', RavenProvider).config(['$provide', ExceptionHandlerProvider]); + Raven.setDataCallback(wrappedCallback$1(function (data) { + return angularPlugin._normalizeData(data); + })); +} + +angularPlugin._normalizeData = function (data) { + // We only care about mutating an exception + var exception = data.exception; + + if (exception) { + exception = exception.values[0]; + var matches = angularPattern.exec(exception.value); + + if (matches) { + // This type now becomes something like: $rootScope:inprog + exception.type = matches[1]; + exception.value = matches[2]; + data.message = exception.type + ': ' + exception.value; // auto set a new tag specifically for the angular error url + + data.extra.angularDocs = matches[3].substr(0, 250); + } + } + + return data; +}; + +angularPlugin.moduleName = moduleName; +var angular = angularPlugin; + +/** + * Ember.js plugin + * + * Patches event handler callbacks and ajax callbacks. + */ +function emberPlugin(Raven, Ember) { + Ember = Ember || window.Ember; // quit if Ember isn't on the page + + if (!Ember) return; + var _oldOnError = Ember.onerror; + + Ember.onerror = function EmberOnError(error) { + Raven.captureException(error); + + if (typeof _oldOnError === 'function') { + _oldOnError.call(this, error); + } + }; + + Ember.RSVP.on('error', function (reason) { + if (reason instanceof Error) { + Raven.captureException(reason, { + extra: { + context: 'Unhandled Promise error detected' + } + }); + } else { + Raven.captureMessage('Unhandled Promise error detected', { + extra: { + reason: reason + } + }); + } + }); +} + +var ember = emberPlugin; + +/*global define*/ + +/** + * require.js plugin + * + * Automatically wrap define/require callbacks. (Experimental) + */ + +function requirePlugin(Raven) { + if (typeof undefined === 'function' && undefined.amd) { + window.define = Raven.wrap({ + deep: false + }, undefined); + window.require = Raven.wrap({ + deep: false + }, commonjsRequire); + } +} + +var require_1 = requirePlugin; + +/** + * Vue.js 2.0 plugin + * + */ +function formatComponentName(vm) { + if (vm.$root === vm) { + return 'root instance'; + } + + var name = vm._isVue ? vm.$options.name || vm.$options._componentTag : vm.name; + return (name ? 'component <' + name + '>' : 'anonymous component') + (vm._isVue && vm.$options.__file ? ' at ' + vm.$options.__file : ''); +} + +function vuePlugin(Raven, Vue) { + Vue = Vue || window.Vue; // quit if Vue isn't on the page + + if (!Vue || !Vue.config) return; + var _oldOnError = Vue.config.errorHandler; + + Vue.config.errorHandler = function VueErrorHandler(error, vm, info) { + var metaData = {}; // vm and lifecycleHook are not always available + + if (Object.prototype.toString.call(vm) === '[object Object]') { + metaData.componentName = formatComponentName(vm); + metaData.propsData = vm.$options.propsData; + } + + if (typeof info !== 'undefined') { + metaData.lifecycleHook = info; + } + + Raven.captureException(error, { + extra: metaData + }); + + if (typeof _oldOnError === 'function') { + _oldOnError.call(this, error, vm, info); + } + }; +} + +var vue = vuePlugin; + +/* This file was generated by './scripts/generate-plugin-combinations.js'! */ + +singleton.addPlugin(angular).addPlugin(ember).addPlugin(require_1).addPlugin(vue); +var angular_ember_require_vue = {}; + +return angular_ember_require_vue; + +}))); diff --git a/dist/angular,ember,require,vue/raven.min.js b/dist/angular,ember,require,vue/raven.min.js new file mode 100644 index 000000000000..93edf9d09340 --- /dev/null +++ b/dist/angular,ember,require,vue/raven.min.js @@ -0,0 +1,3 @@ +/*! Raven.js 3.22.2 (1b6187b) | github.com/getsentry/raven-js */ +!function(a,b){"object"==typeof exports&&"undefined"!=typeof module?module.exports=b():"function"==typeof define&&define.amd?define(b):a.Raven=b()}(this,function(){"use strict";function a(a,b){return b={exports:{}},a(b,b.exports),b.exports}function b(a){return(b="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(a){return typeof a}:function(a){return a&&"function"==typeof Symbol&&a.constructor===Symbol&&a!==Symbol.prototype?"symbol":typeof a})(a)}function c(a){return"object"===b(a)&&null!==a}function d(a){switch({}.toString.call(a)){case"[object Error]":return!0;case"[object Exception]":return!0;case"[object DOMException]":return!0;default:return a instanceof Error}}function e(a){return l()&&"[object ErrorEvent]"==={}.toString.call(a)}function f(a){return void 0===a}function g(a){return"function"==typeof a}function h(a){return"[object Object]"===Object.prototype.toString.call(a)}function i(a){return"[object String]"===Object.prototype.toString.call(a)}function j(a){return"[object Array]"===Object.prototype.toString.call(a)}function k(a){if(!h(a))return!1;for(var b in a)if(a.hasOwnProperty(b))return!1;return!0}function l(){try{return new ErrorEvent(""),!0}catch(a){return!1}}function m(){if(!("fetch"in R))return!1;try{return new Headers,new Request(""),new Response,!0}catch(a){return!1}}function n(a){function b(b,c){var d=a(b)||b;return c?c(d)||d:d}return b}function o(a,b){var c,d;if(f(a.length))for(c in a)s(a,c)&&b.call(null,c,a[c]);else if(d=a.length)for(c=0;c ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function y(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&i(b))for(c=b.split(/\s+/),f=0;f":"anonymous component")+(a._isVue&&a.$options.__file?" at "+a.$options.__file:"")}function O(a,b){if(b=b||window.Vue,b&&b.config){var c=b.config.errorHandler;b.config.errorHandler=function(b,d,e){var f={};"[object Object]"===Object.prototype.toString.call(d)&&(f.componentName=N(d),f.propsData=d.$options.propsData),"undefined"!=typeof e&&(f.lifecycleHook=e),a.captureException(b,{extra:f}),"function"==typeof c&&c.call(this,b,d,e)}}}var P="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{},Q=Object.setPrototypeOf||function(a,b){return a.C=b,a},R=("object"==typeof Reflect&&Reflect.construct||function(a,b,c){var d,e=[null];return e.push.apply(e,b),d=a.bind.apply(a,e),Q(new d,c.prototype)},"undefined"!=typeof window?window:"undefined"!=typeof P?P:"undefined"!=typeof self?self:{}),S={isObject:c,isError:d,isErrorEvent:e,isUndefined:f,isFunction:g,isPlainObject:h,isString:i,isArray:j,isEmptyObject:k,supportsErrorEvent:l,supportsFetch:m,wrappedCallback:n,each:o,objectMerge:p,truncate:r,objectFrozen:q,hasKey:s,joinRegExp:t,urlencode:u,uuid4:w,htmlTreeAsString:x,htmlElementAsString:y,isSameException:B,isSameStacktrace:C,parseUrl:v,fill:D,safeJoin:E},T={collectWindowErrors:!0,debug:!1},U="undefined"!=typeof window?window:"undefined"!=typeof P?P:"undefined"!=typeof self?self:{},V=[].slice,W="?",X=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;T.report=function(){function a(a){f(),l.push(a)}function b(a){for(var b=l.length-1;b>=0;--b)l[b]===a&&l.splice(b,1)}function c(){g(),l=[]}function d(a,b){var c=null;if(!b||T.collectWindowErrors){for(var d in l)if(l.hasOwnProperty(d))try{l[d].apply(null,[a].concat(V.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function e(a,b,c,e,f){var g=null,i=S.isErrorEvent(f)?f.error:f,k=S.isErrorEvent(a)?a.message:a;if(o)T.computeStackTrace.augmentStackTraceWithInitialElement(o,b,c,k),h();else if(i&&S.isError(i))g=T.computeStackTrace(i),d(g,!0);else{var l,m={url:b,line:c,column:e},n=void 0;if("[object String]"==={}.toString.call(k)){var l=k.match(X);l&&(n=l[1],k=l[2])}m.func=W,g={name:n,message:k,url:F(),stack:[m]},d(g,!0)}return!!j&&j.apply(this,arguments)}function f(){k||(j=U.onerror,U.onerror=e,k=!0)}function g(){k&&(U.onerror=j,k=!1,j=void 0)}function h(){var a=o,b=m;m=null,o=null,n=null,d.apply(null,[a,!1].concat(b))}function i(a,b){var c=V.call(arguments,1);if(o){if(n===a)return;h()}var d=T.computeStackTrace(a);if(o=d,n=a,m=c,setTimeout(function(){n===a&&h()},d.incomplete?2e3:0),b!==!1)throw a}var j,k,l=[],m=null,n=null,o=null;return i.subscribe=a,i.unsubscribe=b,i.uninstall=c,i}(),T.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,d,e=/^\s*at (.*?) ?\(((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,f=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|\[native).*?|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,g=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,h=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,i=/\((\S*)(?::(\d+))(?::(\d+))\)/,j=a.stack.split("\n"),k=[],l=(/^(.*) is undefined$/.exec(a.message),0),m=j.length;l eval")>-1;o&&(b=h.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==l||c[5]||"undefined"==typeof a.columnNumber||(k[0].column=a.columnNumber+1),d={url:c[3],func:c[1]||W,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}!d.func&&d.line&&(d.func=W),k.push(d)}return k.length?{name:a.name,message:a.message,url:F(),stack:k}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=W),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,e){for(var f,g,h=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,i=[],j={},k=!1,l=c.caller;l&&!k;l=l.caller)if(l!==d&&l!==T.report){if(g={url:null,func:W,line:null,column:null},l.name?g.func=l.name:(f=h.exec(l.toString()))&&(g.func=f[1]),"undefined"==typeof g.func)try{g.func=f.input.substring(0,f.input.indexOf("{"))}catch(m){}j[""+l]?k=!0:j[""+l]=!0,i.push(g)}e&&i.splice(0,e);var n={name:a.name,message:a.message,url:F(),stack:i};return b(n,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),n}function d(b,d){var e=null;d=null==d?0:+d;try{if(e=a(b))return e}catch(f){if(T.debug)throw f}try{if(e=c(b,d+1))return e}catch(f){if(T.debug)throw f}return{name:b.name,message:b.message,url:F()}}return d.augmentStackTraceWithInitialElement=b,d.computeStackTraceFromStackProp=a,d}();var Y=T,Z=a(function(a,b){function c(a,b){for(var c=0;c0){var i=c(d,this);~i?d.splice(i+1):d.push(this),~i?f.splice(i,1/0,g):f.push(g),~c(d,h)&&(h=b.call(this,g,h))}else d.push(h);return null==a?h instanceof Error?e(h):h:a.call(this,g,h)}}b=a.exports=d,b.getSerialize=f});G.prototype=new Error,G.prototype.constructor=G;var $=G,_=function(a,b,c){var d=a[b],e=a;if(b in a){var f="warn"===b?"warning":b;a[b]=function(){var a=[].slice.call(arguments),g=S.safeJoin(a," "),h={level:f,logger:"console",extra:{arguments:a}};"assert"===b?a[0]===!1&&(g="Assertion failed: "+(S.safeJoin(a.slice(1)," ")||"console.assert"),h.extra.arguments=a.slice(1),c&&c(g,h)):c&&c(g,h),d&&Function.prototype.apply.call(d,e,a)}}},aa={wrapMethod:_},ba=S.isError,ca=S.isObject,da=S.isErrorEvent,ea=S.isUndefined,fa=S.isFunction,ga=S.isString,ha=S.isArray,ia=S.isEmptyObject,ja=S.each,ka=S.objectMerge,la=S.truncate,ma=S.objectFrozen,na=S.hasKey,oa=S.joinRegExp,pa=S.urlencode,qa=S.uuid4,ra=S.htmlTreeAsString,sa=S.isSameException,ta=S.isSameStacktrace,ua=S.parseUrl,va=S.fill,wa=S.supportsFetch,xa=aa.wrapMethod,ya="source protocol user pass host port path".split(" "),za=/^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/,Aa="undefined"!=typeof window?window:"undefined"!=typeof P?P:"undefined"!=typeof self?self:{},Ba=Aa.document,Ca=Aa.navigator;J.prototype={VERSION:"3.22.2",debug:!1,TraceKit:Y,config:function(a,b){var c=this;if(c.i)return this.D("error","Error: Raven has already been configured"),c;if(!a)return c;var d=c.m;b&&ja(b,function(a,b){"tags"===a||"extra"===a||"user"===a?c.l[a]=b:d[a]=b}),c.setDSN(a),d.ignoreErrors.push(/^Script error\.?$/),d.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/),d.ignoreErrors=oa(d.ignoreErrors),d.ignoreUrls=!!d.ignoreUrls.length&&oa(d.ignoreUrls),d.whitelistUrls=!!d.whitelistUrls.length&&oa(d.whitelistUrls),d.includePaths=oa(d.includePaths),d.maxBreadcrumbs=Math.max(0,Math.min(d.maxBreadcrumbs||100,100));var e={xhr:!0,console:!0,dom:!0,location:!0,sentry:!0},f=d.autoBreadcrumbs;"[object Object]"==={}.toString.call(f)?f=ka(e,f):f!==!1&&(f=e),d.autoBreadcrumbs=f;var g={tryCatch:!0},h=d.instrument;return"[object Object]"==={}.toString.call(h)?h=ka(g,h):h!==!1&&(h=g),d.instrument=h,Y.collectWindowErrors=!!d.collectWindowErrors,c},install:function(){var a=this;return a.isSetup()&&!a.p&&(Y.report.subscribe(function(){a.E.apply(a,arguments)}),a.F(),a.m.instrument&&a.m.instrument.tryCatch&&a.G(),a.m.autoBreadcrumbs&&a.H(),a.I(),a.p=!0),Error.stackTraceLimit=a.m.stackTraceLimit,this},setDSN:function(a){var b=this,c=b.J(a),d=c.path.lastIndexOf("/"),e=c.path.substr(1,d);b.K=a,b.j=c.user,b.L=c.pass&&c.pass.substr(1),b.k=c.path.substr(d+1),b.i=b.M(c),b.N=b.i+"/"+e+"api/"+b.k+"/store/",this.A()},context:function(a,b,c){return fa(a)&&(c=b||[],b=a,a=void 0),this.wrap(a,b).apply(this,c)},wrap:function(a,b,c){function d(){var d=[],f=arguments.length,g=!a||a&&a.deep!==!1;for(c&&fa(c)&&c.apply(this,arguments);f--;)d[f]=g?e.wrap(a,arguments[f]):arguments[f];try{return b.apply(this,d)}catch(h){throw e.O(),e.captureException(h,a),h}}var e=this;if(ea(b)&&!fa(a))return a;if(fa(a)&&(b=a,a=void 0),!fa(b))return b;try{if(b.a)return b;if(b.P)return b.P}catch(f){return b}for(var g in b)na(b,g)&&(d[g]=b[g]);return d.prototype=b.prototype,b.P=d,d.a=!0,d.b=b,d},uninstall:function(){return Y.report.uninstall(),this.Q(),this.R(),this.S(),Error.stackTraceLimit=this.q,this.p=!1,this},captureException:function(a,b){b=ka({trimHeadFrames:0},b?b:{});var c=!ba(a),d=!da(a),e=da(a)&&!a.error;if(c&&d||e)return this.captureMessage(a,ka(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}));da(a)&&(a=a.error),this.f=a;try{var f=Y.computeStackTrace(a);this.T(f,b)}catch(g){if(a!==g)throw g}return this},captureMessage:function(a,b){if(!this.m.ignoreErrors.test||!this.m.ignoreErrors.test(a)){b=b||{};var c,d=ka({message:a+""},b);try{throw new Error(a)}catch(e){c=e}c.name=null;var f=Y.computeStackTrace(c),g=ha(f.stack)&&f.stack[1],h=g&&g.url||"";if((!this.m.ignoreUrls.test||!this.m.ignoreUrls.test(h))&&(!this.m.whitelistUrls.test||this.m.whitelistUrls.test(h))){if(this.m.stacktrace||b&&b.stacktrace){b=ka({fingerprint:a,trimHeadFrames:(b.trimHeadFrames||0)+1},b);var i=this.U(f,b);d.stacktrace={frames:i.reverse()}}return this.V(d),this}}},captureBreadcrumb:function(a){var b=ka({timestamp:H()/1e3},a);if(fa(this.m.breadcrumbCallback)){var c=this.m.breadcrumbCallback(b);if(ca(c)&&!ia(c))b=c;else if(c===!1)return this}return this.w.push(b),this.w.length>this.m.maxBreadcrumbs&&this.w.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.t.push([a,b]),this.p&&this.I(),this},setUserContext:function(a){return this.l.user=a,this},setExtraContext:function(a){return this.W("extra",a),this},setTagsContext:function(a){return this.W("tags",a),this},clearContext:function(){return this.l={},this},getContext:function(){return JSON.parse(Z(this.l))},setEnvironment:function(a){return this.m.environment=a,this},setRelease:function(a){return this.m.release=a,this},setDataCallback:function(a){var b=this.m.dataCallback;return this.m.dataCallback=I(b,a),this},setBreadcrumbCallback:function(a){var b=this.m.breadcrumbCallback;return this.m.breadcrumbCallback=I(b,a),this},setShouldSendCallback:function(a){var b=this.m.shouldSendCallback;return this.m.shouldSendCallback=I(b,a),this},setTransport:function(a){return this.m.transport=a,this},lastException:function(){return this.f},lastEventId:function(){return this.h},isSetup:function(){return!!this.c&&(!!this.i||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.D("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=Aa.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(Ba){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new $("Missing eventId");var c=a.dsn||this.K;if(!c)throw new $("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.l.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.M(this.J(c)),h=Ba.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(Ba.head||Ba.body).appendChild(h)}},O:function(){var a=this;this.o+=1,setTimeout(function(){a.o-=1})},X:function(a,b){var c,d;if(this.d){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),Ba.createEvent?(c=Ba.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=Ba.createEventObject(),c.eventType=a);for(d in b)na(b,d)&&(c[d]=b[d]);if(Ba.createEvent)Ba.dispatchEvent(c);else try{Ba.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},Y:function(a){var b=this;return function(c){if(b.Z=null,b.x!==c){b.x=c;var d;try{d=ra(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},$:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.Z;g||a.Y("input")(c),clearTimeout(g),a.Z=setTimeout(function(){a.Z=null},b)}}},_:function(a,b){var c=ua(this.y.href),d=ua(b),e=ua(a);this.z=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},F:function(){var a=this;a.aa=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.a?a.aa.apply(this.b,arguments):a.aa.apply(this,arguments)}},Q:function(){this.aa&&(Function.prototype.toString=this.aa)},G:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b._(b.z,c+""),a.apply(this,arguments)}};va(history,"pushState",j,d),va(history,"replaceState",j,d)}if(c.console&&"console"in Aa&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};ja(["debug","info","warn","error","log"],function(a,b){xa(console,b,k)})}},R:function(){for(var a;this.v.length;){a=this.v.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},S:function(){for(var a in this.s)this.r[a]=this.s[a]},I:function(){var a=this;ja(this.t,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},J:function(a){var b=za.exec(a),c={},d=7;try{for(;d--;)c[ya[d]]=b[d]||""}catch(e){throw new $("Invalid DSN: "+a)}if(c.pass&&!this.m.allowSecretKey)throw new $("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},M:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},E:function(){this.o||this.T.apply(this,arguments)},T:function(a,b){var c=this.U(a,b);this.X("handle",{stackInfo:a,options:b}),this.ca(a.name,a.message,a.url,a.lineno,c,b)},U:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(ja(a.stack,function(b,e){var f=c.da(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.w,0)}),this.l.user&&(a.user=this.l.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||ia(a[b]))&&delete a[b]}),fa(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!ia(a)&&(!fa(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.ja()?void this.D("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() href parsing trick because React Native and other +// environments where DOM might not be available + + +function parseUrl$1(url) { + if (typeof url !== 'string') return {}; + var match = url.match(/^(([^:\/?#]+):)?(\/\/([^\/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?$/); // coerce to undefined values to empty string so we don't get 'undefined' + + var query = match[6] || ''; + var fragment = match[8] || ''; + return { + protocol: match[2], + host: match[4], + path: match[5], + relative: match[5] + query + fragment // everything minus origin + + }; +} + +function uuid4$1() { + var crypto = _window$3.crypto || _window$3.msCrypto; + + if (!isUndefined$1(crypto) && crypto.getRandomValues) { + // Use window.crypto API if available + // eslint-disable-next-line no-undef + var arr = new Uint16Array(8); + crypto.getRandomValues(arr); // set 4 in byte 7 + + arr[3] = arr[3] & 0xfff | 0x4000; // set 2 most significant bits of byte 9 to '10' + + arr[4] = arr[4] & 0x3fff | 0x8000; + + var pad = function pad(num) { + var v = num.toString(16); + + while (v.length < 4) { + v = '0' + v; + } + + return v; + }; + + return pad(arr[0]) + pad(arr[1]) + pad(arr[2]) + pad(arr[3]) + pad(arr[4]) + pad(arr[5]) + pad(arr[6]) + pad(arr[7]); + } else { + // http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/2117523#2117523 + return 'xxxxxxxxxxxx4xxxyxxxxxxxxxxxxxxx'.replace(/[xy]/g, function (c) { + var r = Math.random() * 16 | 0, + v = c === 'x' ? r : r & 0x3 | 0x8; + return v.toString(16); + }); + } +} +/** + * Given a child DOM element, returns a query-selector statement describing that + * and its ancestors + * e.g. [HTMLElement] => body > div > input#foo.btn[name=baz] + * @param elem + * @returns {string} + */ + + +function htmlTreeAsString$1(elem) { + /* eslint no-extra-parens:0*/ + var MAX_TRAVERSE_HEIGHT = 5, + MAX_OUTPUT_LEN = 80, + out = [], + height = 0, + len = 0, + separator = ' > ', + sepLength = separator.length, + nextStr; + + while (elem && height++ < MAX_TRAVERSE_HEIGHT) { + nextStr = htmlElementAsString(elem); // bail out if + // - nextStr is the 'html' element + // - the length of the string that would be created exceeds MAX_OUTPUT_LEN + // (ignore this limit if we are on the first iteration) + + if (nextStr === 'html' || height > 1 && len + out.length * sepLength + nextStr.length >= MAX_OUTPUT_LEN) { + break; + } + + out.push(nextStr); + len += nextStr.length; + elem = elem.parentNode; + } + + return out.reverse().join(separator); +} +/** + * Returns a simple, query-selector representation of a DOM element + * e.g. [HTMLElement] => input#foo.btn[name=baz] + * @param HTMLElement + * @returns {string} + */ + + +function htmlElementAsString(elem) { + var out = [], + className, + classes, + key, + attr, + i; + + if (!elem || !elem.tagName) { + return ''; + } + + out.push(elem.tagName.toLowerCase()); + + if (elem.id) { + out.push('#' + elem.id); + } + + className = elem.className; + + if (className && isString$1(className)) { + classes = className.split(/\s+/); + + for (i = 0; i < classes.length; i++) { + out.push('.' + classes[i]); + } + } + + var attrWhitelist = ['type', 'name', 'title', 'alt']; + + for (i = 0; i < attrWhitelist.length; i++) { + key = attrWhitelist[i]; + attr = elem.getAttribute(key); + + if (attr) { + out.push('[' + key + '="' + attr + '"]'); + } + } + + return out.join(''); +} +/** + * Returns true if either a OR b is truthy, but not both + */ + + +function isOnlyOneTruthy(a, b) { + return !!(!!a ^ !!b); +} +/** + * Returns true if both parameters are undefined + */ + + +function isBothUndefined(a, b) { + return isUndefined$1(a) && isUndefined$1(b); +} +/** + * Returns true if the two input exception interfaces have the same content + */ + + +function isSameException$1(ex1, ex2) { + if (isOnlyOneTruthy(ex1, ex2)) return false; + ex1 = ex1.values[0]; + ex2 = ex2.values[0]; + if (ex1.type !== ex2.type || ex1.value !== ex2.value) return false; // in case both stacktraces are undefined, we can't decide so default to false + + if (isBothUndefined(ex1.stacktrace, ex2.stacktrace)) return false; + return isSameStacktrace$1(ex1.stacktrace, ex2.stacktrace); +} +/** + * Returns true if the two input stack trace interfaces have the same content + */ + + +function isSameStacktrace$1(stack1, stack2) { + if (isOnlyOneTruthy(stack1, stack2)) return false; + var frames1 = stack1.frames; + var frames2 = stack2.frames; // Exit early if frame count differs + + if (frames1.length !== frames2.length) return false; // Iterate through every frame; bail out if anything differs + + var a, b; + + for (var i = 0; i < frames1.length; i++) { + a = frames1[i]; + b = frames2[i]; + if (a.filename !== b.filename || a.lineno !== b.lineno || a.colno !== b.colno || a['function'] !== b['function']) return false; + } + + return true; +} +/** + * Polyfill a method + * @param obj object e.g. `document` + * @param name method name present on object e.g. `addEventListener` + * @param replacement replacement function + * @param track {optional} record instrumentation to an array + */ + + +function fill$1(obj, name, replacement, track) { + var orig = obj[name]; + obj[name] = replacement(orig); + obj[name].__raven__ = true; + obj[name].__orig__ = orig; + + if (track) { + track.push([obj, name, orig]); + } +} +/** + * Join values in array + * @param input array of values to be joined together + * @param delimiter string to be placed in-between values + * @returns {string} + */ + + +function safeJoin(input, delimiter) { + if (!isArray$1(input)) return ''; + var output = []; + + for (var i = 0; i < input.length; i++) { + try { + output.push(String(input[i])); + } catch (e) { + output.push('[value cannot be serialized]'); + } + } + + return output.join(delimiter); +} + +var utils = { + isObject: isObject$1, + isError: isError$1, + isErrorEvent: isErrorEvent$1, + isUndefined: isUndefined$1, + isFunction: isFunction$1, + isPlainObject: isPlainObject, + isString: isString$1, + isArray: isArray$1, + isEmptyObject: isEmptyObject$1, + supportsErrorEvent: supportsErrorEvent, + supportsFetch: supportsFetch$1, + wrappedCallback: wrappedCallback, + each: each$1, + objectMerge: objectMerge$1, + truncate: truncate$1, + objectFrozen: objectFrozen$1, + hasKey: hasKey$1, + joinRegExp: joinRegExp$1, + urlencode: urlencode$1, + uuid4: uuid4$1, + htmlTreeAsString: htmlTreeAsString$1, + htmlElementAsString: htmlElementAsString, + isSameException: isSameException$1, + isSameStacktrace: isSameStacktrace$1, + parseUrl: parseUrl$1, + fill: fill$1, + safeJoin: safeJoin +}; + +/* + TraceKit - Cross brower stack traces + + This was originally forked from github.com/occ/TraceKit, but has since been + largely re-written and is now maintained as part of raven-js. Tests for + this are in test/vendor. + + MIT license +*/ + +var TraceKit = { + collectWindowErrors: true, + debug: false +}; // This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) + +var _window$2 = typeof window !== 'undefined' ? window : typeof commonjsGlobal !== 'undefined' ? commonjsGlobal : typeof self !== 'undefined' ? self : {}; // global reference to slice + + +var _slice = [].slice; +var UNKNOWN_FUNCTION = '?'; // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error#Error_types + +var ERROR_TYPES_RE = /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/; + +function getLocationHref() { + if (typeof document === 'undefined' || document.location == null) return ''; + return document.location.href; +} +/** + * TraceKit.report: cross-browser processing of unhandled exceptions + * + * Syntax: + * TraceKit.report.subscribe(function(stackInfo) { ... }) + * TraceKit.report.unsubscribe(function(stackInfo) { ... }) + * TraceKit.report(exception) + * try { ...code... } catch(ex) { TraceKit.report(ex); } + * + * Supports: + * - Firefox: full stack trace with line numbers, plus column number + * on top frame; column number is not guaranteed + * - Opera: full stack trace with line and column numbers + * - Chrome: full stack trace with line and column numbers + * - Safari: line and column number for the top frame only; some frames + * may be missing, and column number is not guaranteed + * - IE: line and column number for the top frame only; some frames + * may be missing, and column number is not guaranteed + * + * In theory, TraceKit should work on all of the following versions: + * - IE5.5+ (only 8.0 tested) + * - Firefox 0.9+ (only 3.5+ tested) + * - Opera 7+ (only 10.50 tested; versions 9 and earlier may require + * Exceptions Have Stacktrace to be enabled in opera:config) + * - Safari 3+ (only 4+ tested) + * - Chrome 1+ (only 5+ tested) + * - Konqueror 3.5+ (untested) + * + * Requires TraceKit.computeStackTrace. + * + * Tries to catch all unhandled exceptions and report them to the + * subscribed handlers. Please note that TraceKit.report will rethrow the + * exception. This is REQUIRED in order to get a useful stack trace in IE. + * If the exception does not reach the top of the browser, you will only + * get a stack trace from the point where TraceKit.report was called. + * + * Handlers receive a stackInfo object as described in the + * TraceKit.computeStackTrace docs. + */ + + +TraceKit.report = function reportModuleWrapper() { + var handlers = [], + lastArgs = null, + lastException = null, + lastExceptionStack = null; + /** + * Add a crash handler. + * @param {Function} handler + */ + + function subscribe(handler) { + installGlobalHandler(); + handlers.push(handler); + } + /** + * Remove a crash handler. + * @param {Function} handler + */ + + + function unsubscribe(handler) { + for (var i = handlers.length - 1; i >= 0; --i) { + if (handlers[i] === handler) { + handlers.splice(i, 1); + } + } + } + /** + * Remove all crash handlers. + */ + + + function unsubscribeAll() { + uninstallGlobalHandler(); + handlers = []; + } + /** + * Dispatch stack information to all handlers. + * @param {Object.} stack + */ + + + function notifyHandlers(stack, isWindowError) { + var exception = null; + + if (isWindowError && !TraceKit.collectWindowErrors) { + return; + } + + for (var i in handlers) { + if (handlers.hasOwnProperty(i)) { + try { + handlers[i].apply(null, [stack].concat(_slice.call(arguments, 2))); + } catch (inner) { + exception = inner; + } + } + } + + if (exception) { + throw exception; + } + } + + var _oldOnerrorHandler, _onErrorHandlerInstalled; + /** + * Ensures all global unhandled exceptions are recorded. + * Supported by Gecko and IE. + * @param {string} msg Error message. + * @param {string} url URL of script that generated the exception. + * @param {(number|string)} lineNo The line number at which the error + * occurred. + * @param {?(number|string)} colNo The column number at which the error + * occurred. + * @param {?Error} ex The actual Error object. + */ + + + function traceKitWindowOnError(msg, url, lineNo, colNo, ex) { + var stack = null; // If 'ex' is ErrorEvent, get real Error from inside + + var exception = utils.isErrorEvent(ex) ? ex.error : ex; // If 'msg' is ErrorEvent, get real message from inside + + var message = utils.isErrorEvent(msg) ? msg.message : msg; + + if (lastExceptionStack) { + TraceKit.computeStackTrace.augmentStackTraceWithInitialElement(lastExceptionStack, url, lineNo, message); + processLastException(); + } else if (exception && utils.isError(exception)) { + // non-string `exception` arg; attempt to extract stack trace + // New chrome and blink send along a real error object + // Let's just report that like a normal error. + // See: https://mikewest.org/2013/08/debugging-runtime-errors-with-window-onerror + stack = TraceKit.computeStackTrace(exception); + notifyHandlers(stack, true); + } else { + var location = { + url: url, + line: lineNo, + column: colNo + }; + var name = undefined; + var groups; + + if ({}.toString.call(message) === '[object String]') { + var groups = message.match(ERROR_TYPES_RE); + + if (groups) { + name = groups[1]; + message = groups[2]; + } + } + + location.func = UNKNOWN_FUNCTION; + stack = { + name: name, + message: message, + url: getLocationHref(), + stack: [location] + }; + notifyHandlers(stack, true); + } + + if (_oldOnerrorHandler) { + return _oldOnerrorHandler.apply(this, arguments); + } + + return false; + } + + function installGlobalHandler() { + if (_onErrorHandlerInstalled) { + return; + } + + _oldOnerrorHandler = _window$2.onerror; + _window$2.onerror = traceKitWindowOnError; + _onErrorHandlerInstalled = true; + } + + function uninstallGlobalHandler() { + if (!_onErrorHandlerInstalled) { + return; + } + + _window$2.onerror = _oldOnerrorHandler; + _onErrorHandlerInstalled = false; + _oldOnerrorHandler = undefined; + } + + function processLastException() { + var _lastExceptionStack = lastExceptionStack, + _lastArgs = lastArgs; + lastArgs = null; + lastExceptionStack = null; + lastException = null; + notifyHandlers.apply(null, [_lastExceptionStack, false].concat(_lastArgs)); + } + /** + * Reports an unhandled Error to TraceKit. + * @param {Error} ex + * @param {?boolean} rethrow If false, do not re-throw the exception. + * Only used for window.onerror to not cause an infinite loop of + * rethrowing. + */ + + + function report(ex, rethrow) { + var args = _slice.call(arguments, 1); + + if (lastExceptionStack) { + if (lastException === ex) { + return; // already caught by an inner catch block, ignore + } else { + processLastException(); + } + } + + var stack = TraceKit.computeStackTrace(ex); + lastExceptionStack = stack; + lastException = ex; + lastArgs = args; // If the stack trace is incomplete, wait for 2 seconds for + // slow slow IE to see if onerror occurs or not before reporting + // this exception; otherwise, we will end up with an incomplete + // stack trace + + setTimeout(function () { + if (lastException === ex) { + processLastException(); + } + }, stack.incomplete ? 2000 : 0); + + if (rethrow !== false) { + throw ex; // re-throw to propagate to the top level (and cause window.onerror) + } + } + + report.subscribe = subscribe; + report.unsubscribe = unsubscribe; + report.uninstall = unsubscribeAll; + return report; +}(); +/** + * TraceKit.computeStackTrace: cross-browser stack traces in JavaScript + * + * Syntax: + * s = TraceKit.computeStackTrace(exception) // consider using TraceKit.report instead (see below) + * Returns: + * s.name - exception name + * s.message - exception message + * s.stack[i].url - JavaScript or HTML file URL + * s.stack[i].func - function name, or empty for anonymous functions (if guessing did not work) + * s.stack[i].args - arguments passed to the function, if known + * s.stack[i].line - line number, if known + * s.stack[i].column - column number, if known + * + * Supports: + * - Firefox: full stack trace with line numbers and unreliable column + * number on top frame + * - Opera 10: full stack trace with line and column numbers + * - Opera 9-: full stack trace with line numbers + * - Chrome: full stack trace with line and column numbers + * - Safari: line and column number for the topmost stacktrace element + * only + * - IE: no line numbers whatsoever + * + * Tries to guess names of anonymous functions by looking for assignments + * in the source code. In IE and Safari, we have to guess source file names + * by searching for function bodies inside all page scripts. This will not + * work for scripts that are loaded cross-domain. + * Here be dragons: some function names may be guessed incorrectly, and + * duplicate functions may be mismatched. + * + * TraceKit.computeStackTrace should only be used for tracing purposes. + * Logging of unhandled exceptions should be done with TraceKit.report, + * which builds on top of TraceKit.computeStackTrace and provides better + * IE support by utilizing the window.onerror event to retrieve information + * about the top of the stack. + * + * Note: In IE and Safari, no stack trace is recorded on the Error object, + * so computeStackTrace instead walks its *own* chain of callers. + * This means that: + * * in Safari, some methods may be missing from the stack trace; + * * in IE, the topmost function in the stack trace will always be the + * caller of computeStackTrace. + * + * This is okay for tracing (because you are likely to be calling + * computeStackTrace from the function you want to be the topmost element + * of the stack trace anyway), but not okay for logging unhandled + * exceptions (because your catch block will likely be far away from the + * inner function that actually caused the exception). + * + */ + + +TraceKit.computeStackTrace = function computeStackTraceWrapper() { + // Contents of Exception in various browsers. + // + // SAFARI: + // ex.message = Can't find variable: qq + // ex.line = 59 + // ex.sourceId = 580238192 + // ex.sourceURL = http://... + // ex.expressionBeginOffset = 96 + // ex.expressionCaretOffset = 98 + // ex.expressionEndOffset = 98 + // ex.name = ReferenceError + // + // FIREFOX: + // ex.message = qq is not defined + // ex.fileName = http://... + // ex.lineNumber = 59 + // ex.columnNumber = 69 + // ex.stack = ...stack trace... (see the example below) + // ex.name = ReferenceError + // + // CHROME: + // ex.message = qq is not defined + // ex.name = ReferenceError + // ex.type = not_defined + // ex.arguments = ['aa'] + // ex.stack = ...stack trace... + // + // INTERNET EXPLORER: + // ex.message = ... + // ex.name = ReferenceError + // + // OPERA: + // ex.message = ...message... (see the example below) + // ex.name = ReferenceError + // ex.opera#sourceloc = 11 (pretty much useless, duplicates the info in ex.message) + // ex.stacktrace = n/a; see 'opera:config#UserPrefs|Exceptions Have Stacktrace' + + /** + * Computes stack trace information from the stack property. + * Chrome and Gecko use this property. + * @param {Error} ex + * @return {?Object.} Stack trace information. + */ + function computeStackTraceFromStackProp(ex) { + if (typeof ex.stack === 'undefined' || !ex.stack) return; + var chrome = /^\s*at (.*?) ?\(((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i, + gecko = /^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|\[native).*?|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i, + winjs = /^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i, + // Used to additionally parse URL/line/column from eval frames + geckoEval = /(\S+) line (\d+)(?: > eval line \d+)* > eval/i, + chromeEval = /\((\S*)(?::(\d+))(?::(\d+))\)/, + lines = ex.stack.split('\n'), + stack = [], + submatch, + parts, + element, + reference = /^(.*) is undefined$/.exec(ex.message); + + for (var i = 0, j = lines.length; i < j; ++i) { + if (parts = chrome.exec(lines[i])) { + var isNative = parts[2] && parts[2].indexOf('native') === 0; // start of line + + var isEval = parts[2] && parts[2].indexOf('eval') === 0; // start of line + + if (isEval && (submatch = chromeEval.exec(parts[2]))) { + // throw out eval line/column and use top-most line/column number + parts[2] = submatch[1]; // url + + parts[3] = submatch[2]; // line + + parts[4] = submatch[3]; // column + } + + element = { + url: !isNative ? parts[2] : null, + func: parts[1] || UNKNOWN_FUNCTION, + args: isNative ? [parts[2]] : [], + line: parts[3] ? +parts[3] : null, + column: parts[4] ? +parts[4] : null + }; + } else if (parts = winjs.exec(lines[i])) { + element = { + url: parts[2], + func: parts[1] || UNKNOWN_FUNCTION, + args: [], + line: +parts[3], + column: parts[4] ? +parts[4] : null + }; + } else if (parts = gecko.exec(lines[i])) { + var isEval = parts[3] && parts[3].indexOf(' > eval') > -1; + + if (isEval && (submatch = geckoEval.exec(parts[3]))) { + // throw out eval line/column and use top-most line number + parts[3] = submatch[1]; + parts[4] = submatch[2]; + parts[5] = null; // no column when eval + } else if (i === 0 && !parts[5] && typeof ex.columnNumber !== 'undefined') { + // FireFox uses this awesome columnNumber property for its top frame + // Also note, Firefox's column number is 0-based and everything else expects 1-based, + // so adding 1 + // NOTE: this hack doesn't work if top-most frame is eval + stack[0].column = ex.columnNumber + 1; + } + + element = { + url: parts[3], + func: parts[1] || UNKNOWN_FUNCTION, + args: parts[2] ? parts[2].split(',') : [], + line: parts[4] ? +parts[4] : null, + column: parts[5] ? +parts[5] : null + }; + } else { + continue; + } + + if (!element.func && element.line) { + element.func = UNKNOWN_FUNCTION; + } + + stack.push(element); + } + + if (!stack.length) { + return null; + } + + return { + name: ex.name, + message: ex.message, + url: getLocationHref(), + stack: stack + }; + } + /** + * Adds information about the first frame to incomplete stack traces. + * Safari and IE require this to get complete data on the first frame. + * @param {Object.} stackInfo Stack trace information from + * one of the compute* methods. + * @param {string} url The URL of the script that caused an error. + * @param {(number|string)} lineNo The line number of the script that + * caused an error. + * @param {string=} message The error generated by the browser, which + * hopefully contains the name of the object that caused the error. + * @return {boolean} Whether or not the stack information was + * augmented. + */ + + + function augmentStackTraceWithInitialElement(stackInfo, url, lineNo, message) { + var initial = { + url: url, + line: lineNo + }; + + if (initial.url && initial.line) { + stackInfo.incomplete = false; + + if (!initial.func) { + initial.func = UNKNOWN_FUNCTION; + } + + if (stackInfo.stack.length > 0) { + if (stackInfo.stack[0].url === initial.url) { + if (stackInfo.stack[0].line === initial.line) { + return false; // already in stack trace + } else if (!stackInfo.stack[0].line && stackInfo.stack[0].func === initial.func) { + stackInfo.stack[0].line = initial.line; + return false; + } + } + } + + stackInfo.stack.unshift(initial); + stackInfo.partial = true; + return true; + } else { + stackInfo.incomplete = true; + } + + return false; + } + /** + * Computes stack trace information by walking the arguments.caller + * chain at the time the exception occurred. This will cause earlier + * frames to be missed but is the only way to get any stack trace in + * Safari and IE. The top frame is restored by + * {@link augmentStackTraceWithInitialElement}. + * @param {Error} ex + * @return {?Object.} Stack trace information. + */ + + + function computeStackTraceByWalkingCallerChain(ex, depth) { + var functionName = /function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i, + stack = [], + funcs = {}, + recursion = false, + parts, + item; + + for (var curr = computeStackTraceByWalkingCallerChain.caller; curr && !recursion; curr = curr.caller) { + if (curr === computeStackTrace || curr === TraceKit.report) { + // console.log('skipping internal function'); + continue; + } + + item = { + url: null, + func: UNKNOWN_FUNCTION, + line: null, + column: null + }; + + if (curr.name) { + item.func = curr.name; + } else if (parts = functionName.exec(curr.toString())) { + item.func = parts[1]; + } + + if (typeof item.func === 'undefined') { + try { + item.func = parts.input.substring(0, parts.input.indexOf('{')); + } catch (e) {} + } + + if (funcs['' + curr]) { + recursion = true; + } else { + funcs['' + curr] = true; + } + + stack.push(item); + } + + if (depth) { + // console.log('depth is ' + depth); + // console.log('stack is ' + stack.length); + stack.splice(0, depth); + } + + var result = { + name: ex.name, + message: ex.message, + url: getLocationHref(), + stack: stack + }; + augmentStackTraceWithInitialElement(result, ex.sourceURL || ex.fileName, ex.line || ex.lineNumber, ex.message || ex.description); + return result; + } + /** + * Computes a stack trace for an exception. + * @param {Error} ex + * @param {(string|number)=} depth + */ + + + function computeStackTrace(ex, depth) { + var stack = null; + depth = depth == null ? 0 : +depth; + + try { + stack = computeStackTraceFromStackProp(ex); + + if (stack) { + return stack; + } + } catch (e) { + if (TraceKit.debug) { + throw e; + } + } + + try { + stack = computeStackTraceByWalkingCallerChain(ex, depth + 1); + + if (stack) { + return stack; + } + } catch (e) { + if (TraceKit.debug) { + throw e; + } + } + + return { + name: ex.name, + message: ex.message, + url: getLocationHref() + }; + } + + computeStackTrace.augmentStackTraceWithInitialElement = augmentStackTraceWithInitialElement; + computeStackTrace.computeStackTraceFromStackProp = computeStackTraceFromStackProp; + return computeStackTrace; +}(); + +var tracekit = TraceKit; + +var stringify_1 = createCommonjsModule(function (module, exports) { + /* + json-stringify-safe + Like JSON.stringify, but doesn't throw on circular references. + + Originally forked from https://github.com/isaacs/json-stringify-safe + version 5.0.1 on 3/8/2017 and modified to handle Errors serialization + and IE8 compatibility. Tests for this are in test/vendor. + + ISC license: https://github.com/isaacs/json-stringify-safe/blob/master/LICENSE + */ + exports = module.exports = stringify; + exports.getSerialize = serializer; + + function indexOf(haystack, needle) { + for (var i = 0; i < haystack.length; ++i) { + if (haystack[i] === needle) return i; + } + + return -1; + } + + function stringify(obj, replacer, spaces, cycleReplacer) { + return JSON.stringify(obj, serializer(replacer, cycleReplacer), spaces); + } // https://github.com/ftlabs/js-abbreviate/blob/fa709e5f139e7770a71827b1893f22418097fbda/index.js#L95-L106 + + + function stringifyError(value) { + var err = { + // These properties are implemented as magical getters and don't show up in for in + stack: value.stack, + message: value.message, + name: value.name + }; + + for (var i in value) { + if (Object.prototype.hasOwnProperty.call(value, i)) { + err[i] = value[i]; + } + } + + return err; + } + + function serializer(replacer, cycleReplacer) { + var stack = []; + var keys = []; + + if (cycleReplacer == null) { + cycleReplacer = function cycleReplacer(key, value) { + if (stack[0] === value) { + return '[Circular ~]'; + } + + return '[Circular ~.' + keys.slice(0, indexOf(stack, value)).join('.') + ']'; + }; + } + + return function (key, value) { + if (stack.length > 0) { + var thisPos = indexOf(stack, this); + ~thisPos ? stack.splice(thisPos + 1) : stack.push(this); + ~thisPos ? keys.splice(thisPos, Infinity, key) : keys.push(key); + + if (~indexOf(stack, value)) { + value = cycleReplacer.call(this, key, value); + } + } else { + stack.push(value); + } + + return replacer == null ? value instanceof Error ? stringifyError(value) : value : replacer.call(this, key, value); + }; + } +}); +var stringify_2 = stringify_1.getSerialize; + +function RavenConfigError(message) { + this.name = 'RavenConfigError'; + this.message = message; +} + +RavenConfigError.prototype = new Error(); +RavenConfigError.prototype.constructor = RavenConfigError; +var configError = RavenConfigError; + +var wrapMethod = function wrapMethod(console, level, callback) { + var originalConsoleLevel = console[level]; + var originalConsole = console; + + if (!(level in console)) { + return; + } + + var sentryLevel = level === 'warn' ? 'warning' : level; + + console[level] = function () { + var args = [].slice.call(arguments); + var msg = utils.safeJoin(args, ' '); + var data = { + level: sentryLevel, + logger: 'console', + extra: { + arguments: args + } + }; + + if (level === 'assert') { + if (args[0] === false) { + // Default browsers message + msg = 'Assertion failed: ' + (utils.safeJoin(args.slice(1), ' ') || 'console.assert'); + data.extra.arguments = args.slice(1); + callback && callback(msg, data); + } + } else { + callback && callback(msg, data); + } // this fails for some browsers. :( + + + if (originalConsoleLevel) { + // IE9 doesn't allow calling apply on console functions directly + // See: https://stackoverflow.com/questions/5472938/does-ie9-support-console-log-and-is-it-a-real-function#answer-5473193 + Function.prototype.apply.call(originalConsoleLevel, originalConsole, args); + } + }; +}; + +var console$1 = { + wrapMethod: wrapMethod +}; + +/*global XDomainRequest:false */ + +var isError = utils.isError; +var isObject = utils.isObject; +var isErrorEvent = utils.isErrorEvent; +var isUndefined = utils.isUndefined; +var isFunction = utils.isFunction; +var isString = utils.isString; +var isArray = utils.isArray; +var isEmptyObject = utils.isEmptyObject; +var each = utils.each; +var objectMerge = utils.objectMerge; +var truncate = utils.truncate; +var objectFrozen = utils.objectFrozen; +var hasKey = utils.hasKey; +var joinRegExp = utils.joinRegExp; +var urlencode = utils.urlencode; +var uuid4 = utils.uuid4; +var htmlTreeAsString = utils.htmlTreeAsString; +var isSameException = utils.isSameException; +var isSameStacktrace = utils.isSameStacktrace; +var parseUrl = utils.parseUrl; +var fill = utils.fill; +var supportsFetch = utils.supportsFetch; +var wrapConsoleMethod = console$1.wrapMethod; +var dsnKeys = 'source protocol user pass host port path'.split(' '); +var dsnPattern = /^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/; + +function now() { + return +new Date(); +} // This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) + + +var _window$1 = typeof window !== 'undefined' ? window : typeof commonjsGlobal !== 'undefined' ? commonjsGlobal : typeof self !== 'undefined' ? self : {}; + +var _document = _window$1.document; +var _navigator = _window$1.navigator; + +function keepOriginalCallback(original, callback) { + return isFunction(callback) ? function (data) { + return callback(data, original); + } : callback; +} // First, check for JSON support +// If there is no JSON, we no-op the core features of Raven +// since JSON is required to encode the payload + + +function Raven$1() { + this._hasJSON = !!(_typeof(JSON) === 'object' && JSON.stringify); // Raven can run in contexts where there's no document (react-native) + + this._hasDocument = !isUndefined(_document); + this._hasNavigator = !isUndefined(_navigator); + this._lastCapturedException = null; + this._lastData = null; + this._lastEventId = null; + this._globalServer = null; + this._globalKey = null; + this._globalProject = null; + this._globalContext = {}; + this._globalOptions = { + // SENTRY_RELEASE can be injected by https://github.com/getsentry/sentry-webpack-plugin + release: _window$1.SENTRY_RELEASE && _window$1.SENTRY_RELEASE.id, + logger: 'javascript', + ignoreErrors: [], + ignoreUrls: [], + whitelistUrls: [], + includePaths: [], + headers: null, + collectWindowErrors: true, + maxMessageLength: 0, + // By default, truncates URL values to 250 chars + maxUrlLength: 250, + stackTraceLimit: 50, + autoBreadcrumbs: true, + instrument: true, + sampleRate: 1 + }; + this._fetchDefaults = { + method: 'POST', + keepalive: true, + referrerPolicy: 'origin' + }; + this._ignoreOnError = 0; + this._isRavenInstalled = false; + this._originalErrorStackTraceLimit = Error.stackTraceLimit; // capture references to window.console *and* all its methods first + // before the console plugin has a chance to monkey patch + + this._originalConsole = _window$1.console || {}; + this._originalConsoleMethods = {}; + this._plugins = []; + this._startTime = now(); + this._wrappedBuiltIns = []; + this._breadcrumbs = []; + this._lastCapturedEvent = null; + this._keypressTimeout; + this._location = _window$1.location; + this._lastHref = this._location && this._location.href; + + this._resetBackoff(); // eslint-disable-next-line guard-for-in + + + for (var method in this._originalConsole) { + this._originalConsoleMethods[method] = this._originalConsole[method]; + } +} +/* + * The core Raven singleton + * + * @this {Raven} + */ + + +Raven$1.prototype = { + // Hardcode version string so that raven source can be loaded directly via + // webpack (using a build step causes webpack #1617). Grunt verifies that + // this value matches package.json during build. + // See: https://github.com/getsentry/raven-js/issues/465 + VERSION: '3.22.2', + debug: false, + TraceKit: tracekit, + // alias to TraceKit + + /* + * Configure Raven with a DSN and extra options + * + * @param {string} dsn The public Sentry DSN + * @param {object} options Set of global options [optional] + * @return {Raven} + */ + config: function config(dsn, options) { + var self = this; + + if (self._globalServer) { + this._logDebug('error', 'Error: Raven has already been configured'); + + return self; + } + + if (!dsn) return self; + var globalOptions = self._globalOptions; // merge in options + + if (options) { + each(options, function (key, value) { + // tags and extra are special and need to be put into context + if (key === 'tags' || key === 'extra' || key === 'user') { + self._globalContext[key] = value; + } else { + globalOptions[key] = value; + } + }); + } + + self.setDSN(dsn); // "Script error." is hard coded into browsers for errors that it can't read. + // this is the result of a script being pulled in from an external domain and CORS. + + globalOptions.ignoreErrors.push(/^Script error\.?$/); + globalOptions.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/); // join regexp rules into one big rule + + globalOptions.ignoreErrors = joinRegExp(globalOptions.ignoreErrors); + globalOptions.ignoreUrls = globalOptions.ignoreUrls.length ? joinRegExp(globalOptions.ignoreUrls) : false; + globalOptions.whitelistUrls = globalOptions.whitelistUrls.length ? joinRegExp(globalOptions.whitelistUrls) : false; + globalOptions.includePaths = joinRegExp(globalOptions.includePaths); + globalOptions.maxBreadcrumbs = Math.max(0, Math.min(globalOptions.maxBreadcrumbs || 100, 100)); // default and hard limit is 100 + + var autoBreadcrumbDefaults = { + xhr: true, + console: true, + dom: true, + location: true, + sentry: true + }; + var autoBreadcrumbs = globalOptions.autoBreadcrumbs; + + if ({}.toString.call(autoBreadcrumbs) === '[object Object]') { + autoBreadcrumbs = objectMerge(autoBreadcrumbDefaults, autoBreadcrumbs); + } else if (autoBreadcrumbs !== false) { + autoBreadcrumbs = autoBreadcrumbDefaults; + } + + globalOptions.autoBreadcrumbs = autoBreadcrumbs; + var instrumentDefaults = { + tryCatch: true + }; + var instrument = globalOptions.instrument; + + if ({}.toString.call(instrument) === '[object Object]') { + instrument = objectMerge(instrumentDefaults, instrument); + } else if (instrument !== false) { + instrument = instrumentDefaults; + } + + globalOptions.instrument = instrument; + tracekit.collectWindowErrors = !!globalOptions.collectWindowErrors; // return for chaining + + return self; + }, + + /* + * Installs a global window.onerror error handler + * to capture and report uncaught exceptions. + * At this point, install() is required to be called due + * to the way TraceKit is set up. + * + * @return {Raven} + */ + install: function install() { + var self = this; + + if (self.isSetup() && !self._isRavenInstalled) { + tracekit.report.subscribe(function () { + self._handleOnErrorStackInfo.apply(self, arguments); + }); + + self._patchFunctionToString(); + + if (self._globalOptions.instrument && self._globalOptions.instrument.tryCatch) { + self._instrumentTryCatch(); + } + + if (self._globalOptions.autoBreadcrumbs) self._instrumentBreadcrumbs(); // Install all of the plugins + + self._drainPlugins(); + + self._isRavenInstalled = true; + } + + Error.stackTraceLimit = self._globalOptions.stackTraceLimit; + return this; + }, + + /* + * Set the DSN (can be called multiple time unlike config) + * + * @param {string} dsn The public Sentry DSN + */ + setDSN: function setDSN(dsn) { + var self = this, + uri = self._parseDSN(dsn), + lastSlash = uri.path.lastIndexOf('/'), + path = uri.path.substr(1, lastSlash); + + self._dsn = dsn; + self._globalKey = uri.user; + self._globalSecret = uri.pass && uri.pass.substr(1); + self._globalProject = uri.path.substr(lastSlash + 1); + self._globalServer = self._getGlobalServer(uri); + self._globalEndpoint = self._globalServer + '/' + path + 'api/' + self._globalProject + '/store/'; // Reset backoff state since we may be pointing at a + // new project/server + + this._resetBackoff(); + }, + + /* + * Wrap code within a context so Raven can capture errors + * reliably across domains that is executed immediately. + * + * @param {object} options A specific set of options for this context [optional] + * @param {function} func The callback to be immediately executed within the context + * @param {array} args An array of arguments to be called with the callback [optional] + */ + context: function context(options, func, args) { + if (isFunction(options)) { + args = func || []; + func = options; + options = undefined; + } + + return this.wrap(options, func).apply(this, args); + }, + + /* + * Wrap code within a context and returns back a new function to be executed + * + * @param {object} options A specific set of options for this context [optional] + * @param {function} func The function to be wrapped in a new context + * @param {function} func A function to call before the try/catch wrapper [optional, private] + * @return {function} The newly wrapped functions with a context + */ + wrap: function wrap(options, func, _before) { + var self = this; // 1 argument has been passed, and it's not a function + // so just return it + + if (isUndefined(func) && !isFunction(options)) { + return options; + } // options is optional + + + if (isFunction(options)) { + func = options; + options = undefined; + } // At this point, we've passed along 2 arguments, and the second one + // is not a function either, so we'll just return the second argument. + + + if (!isFunction(func)) { + return func; + } // We don't wanna wrap it twice! + + + try { + if (func.__raven__) { + return func; + } // If this has already been wrapped in the past, return that + + + if (func.__raven_wrapper__) { + return func.__raven_wrapper__; + } + } catch (e) { + // Just accessing custom props in some Selenium environments + // can cause a "Permission denied" exception (see raven-js#495). + // Bail on wrapping and return the function as-is (defers to window.onerror). + return func; + } + + function wrapped() { + var args = [], + i = arguments.length, + deep = !options || options && options.deep !== false; + + if (_before && isFunction(_before)) { + _before.apply(this, arguments); + } // Recursively wrap all of a function's arguments that are + // functions themselves. + + + while (i--) { + args[i] = deep ? self.wrap(options, arguments[i]) : arguments[i]; + } + + try { + // Attempt to invoke user-land function + // NOTE: If you are a Sentry user, and you are seeing this stack frame, it + // means Raven caught an error invoking your application code. This is + // expected behavior and NOT indicative of a bug with Raven.js. + return func.apply(this, args); + } catch (e) { + self._ignoreNextOnError(); + + self.captureException(e, options); + throw e; + } + } // copy over properties of the old function + + + for (var property in func) { + if (hasKey(func, property)) { + wrapped[property] = func[property]; + } + } + + wrapped.prototype = func.prototype; + func.__raven_wrapper__ = wrapped; // Signal that this function has been wrapped/filled already + // for both debugging and to prevent it to being wrapped/filled twice + + wrapped.__raven__ = true; + wrapped.__orig__ = func; + return wrapped; + }, + + /* + * Uninstalls the global error handler. + * + * @return {Raven} + */ + uninstall: function uninstall() { + tracekit.report.uninstall(); + + this._unpatchFunctionToString(); + + this._restoreBuiltIns(); + + this._restoreConsole(); + + Error.stackTraceLimit = this._originalErrorStackTraceLimit; + this._isRavenInstalled = false; + return this; + }, + + /* + * Manually capture an exception and send it over to Sentry + * + * @param {error} ex An exception to be logged + * @param {object} options A specific set of options for this error [optional] + * @return {Raven} + */ + captureException: function captureException(ex, options) { + options = objectMerge({ + trimHeadFrames: 0 + }, options ? options : {}); // Cases for sending ex as a message, rather than an exception + + var isNotError = !isError(ex); + var isNotErrorEvent = !isErrorEvent(ex); + var isErrorEventWithoutError = isErrorEvent(ex) && !ex.error; + + if (isNotError && isNotErrorEvent || isErrorEventWithoutError) { + return this.captureMessage(ex, objectMerge(options, { + stacktrace: true, + // if we fall back to captureMessage, default to attempting a new trace + trimHeadFrames: options.trimHeadFrames + 1 + })); + } // Get actual Error from ErrorEvent + + + if (isErrorEvent(ex)) ex = ex.error; // Store the raw exception object for potential debugging and introspection + + this._lastCapturedException = ex; // TraceKit.report will re-raise any exception passed to it, + // which means you have to wrap it in try/catch. Instead, we + // can wrap it here and only re-raise if TraceKit.report + // raises an exception different from the one we asked to + // report on. + + try { + var stack = tracekit.computeStackTrace(ex); + + this._handleStackInfo(stack, options); + } catch (ex1) { + if (ex !== ex1) { + throw ex1; + } + } + + return this; + }, + + /* + * Manually send a message to Sentry + * + * @param {string} msg A plain message to be captured in Sentry + * @param {object} options A specific set of options for this message [optional] + * @return {Raven} + */ + captureMessage: function captureMessage(msg, options) { + // config() automagically converts ignoreErrors from a list to a RegExp so we need to test for an + // early call; we'll error on the side of logging anything called before configuration since it's + // probably something you should see: + if (!!this._globalOptions.ignoreErrors.test && this._globalOptions.ignoreErrors.test(msg)) { + return; + } + + options = options || {}; + var data = objectMerge({ + message: msg + '' // Make sure it's actually a string + + }, options); + var ex; // Generate a "synthetic" stack trace from this point. + // NOTE: If you are a Sentry user, and you are seeing this stack frame, it is NOT indicative + // of a bug with Raven.js. Sentry generates synthetic traces either by configuration, + // or if it catches a thrown object without a "stack" property. + + try { + throw new Error(msg); + } catch (ex1) { + ex = ex1; + } // null exception name so `Error` isn't prefixed to msg + + + ex.name = null; + var stack = tracekit.computeStackTrace(ex); // stack[0] is `throw new Error(msg)` call itself, we are interested in the frame that was just before that, stack[1] + + var initialCall = isArray(stack.stack) && stack.stack[1]; + var fileurl = initialCall && initialCall.url || ''; + + if (!!this._globalOptions.ignoreUrls.test && this._globalOptions.ignoreUrls.test(fileurl)) { + return; + } + + if (!!this._globalOptions.whitelistUrls.test && !this._globalOptions.whitelistUrls.test(fileurl)) { + return; + } + + if (this._globalOptions.stacktrace || options && options.stacktrace) { + options = objectMerge({ + // fingerprint on msg, not stack trace (legacy behavior, could be + // revisited) + fingerprint: msg, + // since we know this is a synthetic trace, the top N-most frames + // MUST be from Raven.js, so mark them as in_app later by setting + // trimHeadFrames + trimHeadFrames: (options.trimHeadFrames || 0) + 1 + }, options); + + var frames = this._prepareFrames(stack, options); + + data.stacktrace = { + // Sentry expects frames oldest to newest + frames: frames.reverse() + }; + } // Fire away! + + + this._send(data); + + return this; + }, + captureBreadcrumb: function captureBreadcrumb(obj) { + var crumb = objectMerge({ + timestamp: now() / 1000 + }, obj); + + if (isFunction(this._globalOptions.breadcrumbCallback)) { + var result = this._globalOptions.breadcrumbCallback(crumb); + + if (isObject(result) && !isEmptyObject(result)) { + crumb = result; + } else if (result === false) { + return this; + } + } + + this._breadcrumbs.push(crumb); + + if (this._breadcrumbs.length > this._globalOptions.maxBreadcrumbs) { + this._breadcrumbs.shift(); + } + + return this; + }, + addPlugin: function addPlugin(plugin + /*arg1, arg2, ... argN*/ + ) { + var pluginArgs = [].slice.call(arguments, 1); + + this._plugins.push([plugin, pluginArgs]); + + if (this._isRavenInstalled) { + this._drainPlugins(); + } + + return this; + }, + + /* + * Set/clear a user to be sent along with the payload. + * + * @param {object} user An object representing user data [optional] + * @return {Raven} + */ + setUserContext: function setUserContext(user) { + // Intentionally do not merge here since that's an unexpected behavior. + this._globalContext.user = user; + return this; + }, + + /* + * Merge extra attributes to be sent along with the payload. + * + * @param {object} extra An object representing extra data [optional] + * @return {Raven} + */ + setExtraContext: function setExtraContext(extra) { + this._mergeContext('extra', extra); + + return this; + }, + + /* + * Merge tags to be sent along with the payload. + * + * @param {object} tags An object representing tags [optional] + * @return {Raven} + */ + setTagsContext: function setTagsContext(tags) { + this._mergeContext('tags', tags); + + return this; + }, + + /* + * Clear all of the context. + * + * @return {Raven} + */ + clearContext: function clearContext() { + this._globalContext = {}; + return this; + }, + + /* + * Get a copy of the current context. This cannot be mutated. + * + * @return {object} copy of context + */ + getContext: function getContext() { + // lol javascript + return JSON.parse(stringify_1(this._globalContext)); + }, + + /* + * Set environment of application + * + * @param {string} environment Typically something like 'production'. + * @return {Raven} + */ + setEnvironment: function setEnvironment(environment) { + this._globalOptions.environment = environment; + return this; + }, + + /* + * Set release version of application + * + * @param {string} release Typically something like a git SHA to identify version + * @return {Raven} + */ + setRelease: function setRelease(release) { + this._globalOptions.release = release; + return this; + }, + + /* + * Set the dataCallback option + * + * @param {function} callback The callback to run which allows the + * data blob to be mutated before sending + * @return {Raven} + */ + setDataCallback: function setDataCallback(callback) { + var original = this._globalOptions.dataCallback; + this._globalOptions.dataCallback = keepOriginalCallback(original, callback); + return this; + }, + + /* + * Set the breadcrumbCallback option + * + * @param {function} callback The callback to run which allows filtering + * or mutating breadcrumbs + * @return {Raven} + */ + setBreadcrumbCallback: function setBreadcrumbCallback(callback) { + var original = this._globalOptions.breadcrumbCallback; + this._globalOptions.breadcrumbCallback = keepOriginalCallback(original, callback); + return this; + }, + + /* + * Set the shouldSendCallback option + * + * @param {function} callback The callback to run which allows + * introspecting the blob before sending + * @return {Raven} + */ + setShouldSendCallback: function setShouldSendCallback(callback) { + var original = this._globalOptions.shouldSendCallback; + this._globalOptions.shouldSendCallback = keepOriginalCallback(original, callback); + return this; + }, + + /** + * Override the default HTTP transport mechanism that transmits data + * to the Sentry server. + * + * @param {function} transport Function invoked instead of the default + * `makeRequest` handler. + * + * @return {Raven} + */ + setTransport: function setTransport(transport) { + this._globalOptions.transport = transport; + return this; + }, + + /* + * Get the latest raw exception that was captured by Raven. + * + * @return {error} + */ + lastException: function lastException() { + return this._lastCapturedException; + }, + + /* + * Get the last event id + * + * @return {string} + */ + lastEventId: function lastEventId() { + return this._lastEventId; + }, + + /* + * Determine if Raven is setup and ready to go. + * + * @return {boolean} + */ + isSetup: function isSetup() { + if (!this._hasJSON) return false; // needs JSON support + + if (!this._globalServer) { + if (!this.ravenNotConfiguredError) { + this.ravenNotConfiguredError = true; + + this._logDebug('error', 'Error: Raven has not been configured.'); + } + + return false; + } + + return true; + }, + afterLoad: function afterLoad() { + // TODO: remove window dependence? + // Attempt to initialize Raven on load + var RavenConfig = _window$1.RavenConfig; + + if (RavenConfig) { + this.config(RavenConfig.dsn, RavenConfig.config).install(); + } + }, + showReportDialog: function showReportDialog(options) { + if (!_document // doesn't work without a document (React native) + ) return; + options = options || {}; + var lastEventId = options.eventId || this.lastEventId(); + + if (!lastEventId) { + throw new configError('Missing eventId'); + } + + var dsn = options.dsn || this._dsn; + + if (!dsn) { + throw new configError('Missing DSN'); + } + + var encode = encodeURIComponent; + var qs = ''; + qs += '?eventId=' + encode(lastEventId); + qs += '&dsn=' + encode(dsn); + var user = options.user || this._globalContext.user; + + if (user) { + if (user.name) qs += '&name=' + encode(user.name); + if (user.email) qs += '&email=' + encode(user.email); + } + + var globalServer = this._getGlobalServer(this._parseDSN(dsn)); + + var script = _document.createElement('script'); + + script.async = true; + script.src = globalServer + '/api/embed/error-page/' + qs; + + (_document.head || _document.body).appendChild(script); + }, + + /**** Private functions ****/ + _ignoreNextOnError: function _ignoreNextOnError() { + var self = this; + this._ignoreOnError += 1; + setTimeout(function () { + // onerror should trigger before setTimeout + self._ignoreOnError -= 1; + }); + }, + _triggerEvent: function _triggerEvent(eventType, options) { + // NOTE: `event` is a native browser thing, so let's avoid conflicting wiht it + var evt, key; + if (!this._hasDocument) return; + options = options || {}; + eventType = 'raven' + eventType.substr(0, 1).toUpperCase() + eventType.substr(1); + + if (_document.createEvent) { + evt = _document.createEvent('HTMLEvents'); + evt.initEvent(eventType, true, true); + } else { + evt = _document.createEventObject(); + evt.eventType = eventType; + } + + for (key in options) { + if (hasKey(options, key)) { + evt[key] = options[key]; + } + } + + if (_document.createEvent) { + // IE9 if standards + _document.dispatchEvent(evt); + } else { + // IE8 regardless of Quirks or Standards + // IE9 if quirks + try { + _document.fireEvent('on' + evt.eventType.toLowerCase(), evt); + } catch (e) {// Do nothing + } + } + }, + + /** + * Wraps addEventListener to capture UI breadcrumbs + * @param evtName the event name (e.g. "click") + * @returns {Function} + * @private + */ + _breadcrumbEventHandler: function _breadcrumbEventHandler(evtName) { + var self = this; + return function (evt) { + // reset keypress timeout; e.g. triggering a 'click' after + // a 'keypress' will reset the keypress debounce so that a new + // set of keypresses can be recorded + self._keypressTimeout = null; // It's possible this handler might trigger multiple times for the same + // event (e.g. event propagation through node ancestors). Ignore if we've + // already captured the event. + + if (self._lastCapturedEvent === evt) return; + self._lastCapturedEvent = evt; // try/catch both: + // - accessing evt.target (see getsentry/raven-js#838, #768) + // - `htmlTreeAsString` because it's complex, and just accessing the DOM incorrectly + // can throw an exception in some circumstances. + + var target; + + try { + target = htmlTreeAsString(evt.target); + } catch (e) { + target = ''; + } + + self.captureBreadcrumb({ + category: 'ui.' + evtName, + // e.g. ui.click, ui.input + message: target + }); + }; + }, + + /** + * Wraps addEventListener to capture keypress UI events + * @returns {Function} + * @private + */ + _keypressEventHandler: function _keypressEventHandler() { + var self = this, + debounceDuration = 1000; // milliseconds + // TODO: if somehow user switches keypress target before + // debounce timeout is triggered, we will only capture + // a single breadcrumb from the FIRST target (acceptable?) + + return function (evt) { + var target; + + try { + target = evt.target; + } catch (e) { + // just accessing event properties can throw an exception in some rare circumstances + // see: https://github.com/getsentry/raven-js/issues/838 + return; + } + + var tagName = target && target.tagName; // only consider keypress events on actual input elements + // this will disregard keypresses targeting body (e.g. tabbing + // through elements, hotkeys, etc) + + if (!tagName || tagName !== 'INPUT' && tagName !== 'TEXTAREA' && !target.isContentEditable) return; // record first keypress in a series, but ignore subsequent + // keypresses until debounce clears + + var timeout = self._keypressTimeout; + + if (!timeout) { + self._breadcrumbEventHandler('input')(evt); + } + + clearTimeout(timeout); + self._keypressTimeout = setTimeout(function () { + self._keypressTimeout = null; + }, debounceDuration); + }; + }, + + /** + * Captures a breadcrumb of type "navigation", normalizing input URLs + * @param to the originating URL + * @param from the target URL + * @private + */ + _captureUrlChange: function _captureUrlChange(from, to) { + var parsedLoc = parseUrl(this._location.href); + var parsedTo = parseUrl(to); + var parsedFrom = parseUrl(from); // because onpopstate only tells you the "new" (to) value of location.href, and + // not the previous (from) value, we need to track the value of the current URL + // state ourselves + + this._lastHref = to; // Use only the path component of the URL if the URL matches the current + // document (almost all the time when using pushState) + + if (parsedLoc.protocol === parsedTo.protocol && parsedLoc.host === parsedTo.host) to = parsedTo.relative; + if (parsedLoc.protocol === parsedFrom.protocol && parsedLoc.host === parsedFrom.host) from = parsedFrom.relative; + this.captureBreadcrumb({ + category: 'navigation', + data: { + to: to, + from: from + } + }); + }, + _patchFunctionToString: function _patchFunctionToString() { + var self = this; + self._originalFunctionToString = Function.prototype.toString; // eslint-disable-next-line no-extend-native + + Function.prototype.toString = function () { + if (typeof this === 'function' && this.__raven__) { + return self._originalFunctionToString.apply(this.__orig__, arguments); + } + + return self._originalFunctionToString.apply(this, arguments); + }; + }, + _unpatchFunctionToString: function _unpatchFunctionToString() { + if (this._originalFunctionToString) { + // eslint-disable-next-line no-extend-native + Function.prototype.toString = this._originalFunctionToString; + } + }, + + /** + * Wrap timer functions and event targets to catch errors and provide + * better metadata. + */ + _instrumentTryCatch: function _instrumentTryCatch() { + var self = this; + var wrappedBuiltIns = self._wrappedBuiltIns; + + function wrapTimeFn(orig) { + return function (fn, t) { + // preserve arity + // Make a copy of the arguments to prevent deoptimization + // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments + var args = new Array(arguments.length); + + for (var i = 0; i < args.length; ++i) { + args[i] = arguments[i]; + } + + var originalCallback = args[0]; + + if (isFunction(originalCallback)) { + args[0] = self.wrap(originalCallback); + } // IE < 9 doesn't support .call/.apply on setInterval/setTimeout, but it + // also supports only two arguments and doesn't care what this is, so we + // can just call the original function directly. + + + if (orig.apply) { + return orig.apply(this, args); + } else { + return orig(args[0], args[1]); + } + }; + } + + var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; + + function wrapEventTarget(global) { + var proto = _window$1[global] && _window$1[global].prototype; + + if (proto && proto.hasOwnProperty && proto.hasOwnProperty('addEventListener')) { + fill(proto, 'addEventListener', function (orig) { + return function (evtName, fn, capture, secure) { + // preserve arity + try { + if (fn && fn.handleEvent) { + fn.handleEvent = self.wrap(fn.handleEvent); + } + } catch (err) {} // can sometimes get 'Permission denied to access property "handle Event' + // More breadcrumb DOM capture ... done here and not in `_instrumentBreadcrumbs` + // so that we don't have more than one wrapper function + + + var before, clickHandler, keypressHandler; + + if (autoBreadcrumbs && autoBreadcrumbs.dom && (global === 'EventTarget' || global === 'Node')) { + // NOTE: generating multiple handlers per addEventListener invocation, should + // revisit and verify we can just use one (almost certainly) + clickHandler = self._breadcrumbEventHandler('click'); + keypressHandler = self._keypressEventHandler(); + + before = function before(evt) { + // need to intercept every DOM event in `before` argument, in case that + // same wrapped method is re-used for different events (e.g. mousemove THEN click) + // see #724 + if (!evt) return; + var eventType; + + try { + eventType = evt.type; + } catch (e) { + // just accessing event properties can throw an exception in some rare circumstances + // see: https://github.com/getsentry/raven-js/issues/838 + return; + } + + if (eventType === 'click') return clickHandler(evt);else if (eventType === 'keypress') return keypressHandler(evt); + }; + } + + return orig.call(this, evtName, self.wrap(fn, undefined, before), capture, secure); + }; + }, wrappedBuiltIns); + fill(proto, 'removeEventListener', function (orig) { + return function (evt, fn, capture, secure) { + try { + fn = fn && (fn.__raven_wrapper__ ? fn.__raven_wrapper__ : fn); + } catch (e) {// ignore, accessing __raven_wrapper__ will throw in some Selenium environments + } + + return orig.call(this, evt, fn, capture, secure); + }; + }, wrappedBuiltIns); + } + } + + fill(_window$1, 'setTimeout', wrapTimeFn, wrappedBuiltIns); + fill(_window$1, 'setInterval', wrapTimeFn, wrappedBuiltIns); + + if (_window$1.requestAnimationFrame) { + fill(_window$1, 'requestAnimationFrame', function (orig) { + return function (cb) { + return orig(self.wrap(cb)); + }; + }, wrappedBuiltIns); + } // event targets borrowed from bugsnag-js: + // https://github.com/bugsnag/bugsnag-js/blob/master/src/bugsnag.js#L666 + + + var eventTargets = ['EventTarget', 'Window', 'Node', 'ApplicationCache', 'AudioTrackList', 'ChannelMergerNode', 'CryptoOperation', 'EventSource', 'FileReader', 'HTMLUnknownElement', 'IDBDatabase', 'IDBRequest', 'IDBTransaction', 'KeyOperation', 'MediaController', 'MessagePort', 'ModalWindow', 'Notification', 'SVGElementInstance', 'Screen', 'TextTrack', 'TextTrackCue', 'TextTrackList', 'WebSocket', 'WebSocketWorker', 'Worker', 'XMLHttpRequest', 'XMLHttpRequestEventTarget', 'XMLHttpRequestUpload']; + + for (var i = 0; i < eventTargets.length; i++) { + wrapEventTarget(eventTargets[i]); + } + }, + + /** + * Instrument browser built-ins w/ breadcrumb capturing + * - XMLHttpRequests + * - DOM interactions (click/typing) + * - window.location changes + * - console + * + * Can be disabled or individually configured via the `autoBreadcrumbs` config option + */ + _instrumentBreadcrumbs: function _instrumentBreadcrumbs() { + var self = this; + var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; + var wrappedBuiltIns = self._wrappedBuiltIns; + + function wrapProp(prop, xhr) { + if (prop in xhr && isFunction(xhr[prop])) { + fill(xhr, prop, function (orig) { + return self.wrap(orig); + }); // intentionally don't track filled methods on XHR instances + } + } + + if (autoBreadcrumbs.xhr && 'XMLHttpRequest' in _window$1) { + var xhrproto = XMLHttpRequest.prototype; + fill(xhrproto, 'open', function (origOpen) { + return function (method, url) { + // preserve arity + // if Sentry key appears in URL, don't capture + if (isString(url) && url.indexOf(self._globalKey) === -1) { + this.__raven_xhr = { + method: method, + url: url, + status_code: null + }; + } + + return origOpen.apply(this, arguments); + }; + }, wrappedBuiltIns); + fill(xhrproto, 'send', function (origSend) { + return function () { + // preserve arity + var xhr = this; + + function onreadystatechangeHandler() { + if (xhr.__raven_xhr && xhr.readyState === 4) { + try { + // touching statusCode in some platforms throws + // an exception + xhr.__raven_xhr.status_code = xhr.status; + } catch (e) { + /* do nothing */ + } + + self.captureBreadcrumb({ + type: 'http', + category: 'xhr', + data: xhr.__raven_xhr + }); + } + } + + var props = ['onload', 'onerror', 'onprogress']; + + for (var j = 0; j < props.length; j++) { + wrapProp(props[j], xhr); + } + + if ('onreadystatechange' in xhr && isFunction(xhr.onreadystatechange)) { + fill(xhr, 'onreadystatechange', function (orig) { + return self.wrap(orig, undefined, onreadystatechangeHandler); + } + /* intentionally don't track this instrumentation */ + ); + } else { + // if onreadystatechange wasn't actually set by the page on this xhr, we + // are free to set our own and capture the breadcrumb + xhr.onreadystatechange = onreadystatechangeHandler; + } + + return origSend.apply(this, arguments); + }; + }, wrappedBuiltIns); + } + + if (autoBreadcrumbs.xhr && supportsFetch()) { + fill(_window$1, 'fetch', function (origFetch) { + return function () { + // preserve arity + // Make a copy of the arguments to prevent deoptimization + // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments + var args = new Array(arguments.length); + + for (var i = 0; i < args.length; ++i) { + args[i] = arguments[i]; + } + + var fetchInput = args[0]; + var method = 'GET'; + var url; + + if (typeof fetchInput === 'string') { + url = fetchInput; + } else if ('Request' in _window$1 && fetchInput instanceof _window$1.Request) { + url = fetchInput.url; + + if (fetchInput.method) { + method = fetchInput.method; + } + } else { + url = '' + fetchInput; + } // if Sentry key appears in URL, don't capture, as it's our own request + + + if (url.indexOf(self._globalKey) !== -1) { + return origFetch.apply(this, args); + } + + if (args[1] && args[1].method) { + method = args[1].method; + } + + var fetchData = { + method: method, + url: url, + status_code: null + }; + return origFetch.apply(this, args).then(function (response) { + fetchData.status_code = response.status; + self.captureBreadcrumb({ + type: 'http', + category: 'fetch', + data: fetchData + }); + return response; + }); + }; + }, wrappedBuiltIns); + } // Capture breadcrumbs from any click that is unhandled / bubbled up all the way + // to the document. Do this before we instrument addEventListener. + + + if (autoBreadcrumbs.dom && this._hasDocument) { + if (_document.addEventListener) { + _document.addEventListener('click', self._breadcrumbEventHandler('click'), false); + + _document.addEventListener('keypress', self._keypressEventHandler(), false); + } else { + // IE8 Compatibility + _document.attachEvent('onclick', self._breadcrumbEventHandler('click')); + + _document.attachEvent('onkeypress', self._keypressEventHandler()); + } + } // record navigation (URL) changes + // NOTE: in Chrome App environment, touching history.pushState, *even inside + // a try/catch block*, will cause Chrome to output an error to console.error + // borrowed from: https://github.com/angular/angular.js/pull/13945/files + + + var chrome = _window$1.chrome; + var isChromePackagedApp = chrome && chrome.app && chrome.app.runtime; + var hasPushAndReplaceState = !isChromePackagedApp && _window$1.history && history.pushState && history.replaceState; + + if (autoBreadcrumbs.location && hasPushAndReplaceState) { + // TODO: remove onpopstate handler on uninstall() + var oldOnPopState = _window$1.onpopstate; + + _window$1.onpopstate = function () { + var currentHref = self._location.href; + + self._captureUrlChange(self._lastHref, currentHref); + + if (oldOnPopState) { + return oldOnPopState.apply(this, arguments); + } + }; + + var historyReplacementFunction = function historyReplacementFunction(origHistFunction) { + // note history.pushState.length is 0; intentionally not declaring + // params to preserve 0 arity + return function () + /* state, title, url */ + { + var url = arguments.length > 2 ? arguments[2] : undefined; // url argument is optional + + if (url) { + // coerce to string (this is what pushState does) + self._captureUrlChange(self._lastHref, url + ''); + } + + return origHistFunction.apply(this, arguments); + }; + }; + + fill(history, 'pushState', historyReplacementFunction, wrappedBuiltIns); + fill(history, 'replaceState', historyReplacementFunction, wrappedBuiltIns); + } + + if (autoBreadcrumbs.console && 'console' in _window$1 && console.log) { + // console + var consoleMethodCallback = function consoleMethodCallback(msg, data) { + self.captureBreadcrumb({ + message: msg, + level: data.level, + category: 'console' + }); + }; + + each(['debug', 'info', 'warn', 'error', 'log'], function (_, level) { + wrapConsoleMethod(console, level, consoleMethodCallback); + }); + } + }, + _restoreBuiltIns: function _restoreBuiltIns() { + // restore any wrapped builtins + var builtin; + + while (this._wrappedBuiltIns.length) { + builtin = this._wrappedBuiltIns.shift(); + var obj = builtin[0], + name = builtin[1], + orig = builtin[2]; + obj[name] = orig; + } + }, + _restoreConsole: function _restoreConsole() { + // eslint-disable-next-line guard-for-in + for (var method in this._originalConsoleMethods) { + this._originalConsole[method] = this._originalConsoleMethods[method]; + } + }, + _drainPlugins: function _drainPlugins() { + var self = this; // FIX ME TODO + + each(this._plugins, function (_, plugin) { + var installer = plugin[0]; + var args = plugin[1]; + installer.apply(self, [self].concat(args)); + }); + }, + _parseDSN: function _parseDSN(str) { + var m = dsnPattern.exec(str), + dsn = {}, + i = 7; + + try { + while (i--) { + dsn[dsnKeys[i]] = m[i] || ''; + } + } catch (e) { + throw new configError('Invalid DSN: ' + str); + } + + if (dsn.pass && !this._globalOptions.allowSecretKey) { + throw new configError('Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key'); + } + + return dsn; + }, + _getGlobalServer: function _getGlobalServer(uri) { + // assemble the endpoint from the uri pieces + var globalServer = '//' + uri.host + (uri.port ? ':' + uri.port : ''); + + if (uri.protocol) { + globalServer = uri.protocol + ':' + globalServer; + } + + return globalServer; + }, + _handleOnErrorStackInfo: function _handleOnErrorStackInfo() { + // if we are intentionally ignoring errors via onerror, bail out + if (!this._ignoreOnError) { + this._handleStackInfo.apply(this, arguments); + } + }, + _handleStackInfo: function _handleStackInfo(stackInfo, options) { + var frames = this._prepareFrames(stackInfo, options); + + this._triggerEvent('handle', { + stackInfo: stackInfo, + options: options + }); + + this._processException(stackInfo.name, stackInfo.message, stackInfo.url, stackInfo.lineno, frames, options); + }, + _prepareFrames: function _prepareFrames(stackInfo, options) { + var self = this; + var frames = []; + + if (stackInfo.stack && stackInfo.stack.length) { + each(stackInfo.stack, function (i, stack) { + var frame = self._normalizeFrame(stack, stackInfo.url); + + if (frame) { + frames.push(frame); + } + }); // e.g. frames captured via captureMessage throw + + if (options && options.trimHeadFrames) { + for (var j = 0; j < options.trimHeadFrames && j < frames.length; j++) { + frames[j].in_app = false; + } + } + } + + frames = frames.slice(0, this._globalOptions.stackTraceLimit); + return frames; + }, + _normalizeFrame: function _normalizeFrame(frame, stackInfoUrl) { + // normalize the frames data + var normalized = { + filename: frame.url, + lineno: frame.line, + colno: frame.column, + function: frame.func || '?' + }; // Case when we don't have any information about the error + // E.g. throwing a string or raw object, instead of an `Error` in Firefox + // Generating synthetic error doesn't add any value here + // + // We should probably somehow let a user know that they should fix their code + + if (!frame.url) { + normalized.filename = stackInfoUrl; // fallback to whole stacks url from onerror handler + } + + normalized.in_app = !( // determine if an exception came from outside of our app + // first we check the global includePaths list. + !!this._globalOptions.includePaths.test && !this._globalOptions.includePaths.test(normalized.filename) || // Now we check for fun, if the function name is Raven or TraceKit + /(Raven|TraceKit)\./.test(normalized['function']) || // finally, we do a last ditch effort and check for raven.min.js + /raven\.(min\.)?js$/.test(normalized.filename)); + return normalized; + }, + _processException: function _processException(type, message, fileurl, lineno, frames, options) { + var prefixedMessage = (type ? type + ': ' : '') + (message || ''); + + if (!!this._globalOptions.ignoreErrors.test && (this._globalOptions.ignoreErrors.test(message) || this._globalOptions.ignoreErrors.test(prefixedMessage))) { + return; + } + + var stacktrace; + + if (frames && frames.length) { + fileurl = frames[0].filename || fileurl; // Sentry expects frames oldest to newest + // and JS sends them as newest to oldest + + frames.reverse(); + stacktrace = { + frames: frames + }; + } else if (fileurl) { + stacktrace = { + frames: [{ + filename: fileurl, + lineno: lineno, + in_app: true + }] + }; + } + + if (!!this._globalOptions.ignoreUrls.test && this._globalOptions.ignoreUrls.test(fileurl)) { + return; + } + + if (!!this._globalOptions.whitelistUrls.test && !this._globalOptions.whitelistUrls.test(fileurl)) { + return; + } + + var data = objectMerge({ + // sentry.interfaces.Exception + exception: { + values: [{ + type: type, + value: message, + stacktrace: stacktrace + }] + }, + culprit: fileurl + }, options); // Fire away! + + this._send(data); + }, + _trimPacket: function _trimPacket(data) { + // For now, we only want to truncate the two different messages + // but this could/should be expanded to just trim everything + var max = this._globalOptions.maxMessageLength; + + if (data.message) { + data.message = truncate(data.message, max); + } + + if (data.exception) { + var exception = data.exception.values[0]; + exception.value = truncate(exception.value, max); + } + + var request = data.request; + + if (request) { + if (request.url) { + request.url = truncate(request.url, this._globalOptions.maxUrlLength); + } + + if (request.Referer) { + request.Referer = truncate(request.Referer, this._globalOptions.maxUrlLength); + } + } + + if (data.breadcrumbs && data.breadcrumbs.values) this._trimBreadcrumbs(data.breadcrumbs); + return data; + }, + + /** + * Truncate breadcrumb values (right now just URLs) + */ + _trimBreadcrumbs: function _trimBreadcrumbs(breadcrumbs) { + // known breadcrumb properties with urls + // TODO: also consider arbitrary prop values that start with (https?)?:// + var urlProps = ['to', 'from', 'url'], + urlProp, + crumb, + data; + + for (var i = 0; i < breadcrumbs.values.length; ++i) { + crumb = breadcrumbs.values[i]; + if (!crumb.hasOwnProperty('data') || !isObject(crumb.data) || objectFrozen(crumb.data)) continue; + data = objectMerge({}, crumb.data); + + for (var j = 0; j < urlProps.length; ++j) { + urlProp = urlProps[j]; + + if (data.hasOwnProperty(urlProp) && data[urlProp]) { + data[urlProp] = truncate(data[urlProp], this._globalOptions.maxUrlLength); + } + } + + breadcrumbs.values[i].data = data; + } + }, + _getHttpData: function _getHttpData() { + if (!this._hasNavigator && !this._hasDocument) return; + var httpData = {}; + + if (this._hasNavigator && _navigator.userAgent) { + httpData.headers = { + 'User-Agent': navigator.userAgent + }; + } // Check in `window` instead of `document`, as we may be in ServiceWorker environment + + + if (_window$1.location && _window$1.location.href) { + httpData.url = _window$1.location.href; + } + + if (this._hasDocument && _document.referrer) { + if (!httpData.headers) httpData.headers = {}; + httpData.headers.Referer = _document.referrer; + } + + return httpData; + }, + _resetBackoff: function _resetBackoff() { + this._backoffDuration = 0; + this._backoffStart = null; + }, + _shouldBackoff: function _shouldBackoff() { + return this._backoffDuration && now() - this._backoffStart < this._backoffDuration; + }, + + /** + * Returns true if the in-process data payload matches the signature + * of the previously-sent data + * + * NOTE: This has to be done at this level because TraceKit can generate + * data from window.onerror WITHOUT an exception object (IE8, IE9, + * other old browsers). This can take the form of an "exception" + * data object with a single frame (derived from the onerror args). + */ + _isRepeatData: function _isRepeatData(current) { + var last = this._lastData; + if (!last || current.message !== last.message || // defined for captureMessage + current.culprit !== last.culprit // defined for captureException/onerror + ) return false; // Stacktrace interface (i.e. from captureMessage) + + if (current.stacktrace || last.stacktrace) { + return isSameStacktrace(current.stacktrace, last.stacktrace); + } else if (current.exception || last.exception) { + // Exception interface (i.e. from captureException/onerror) + return isSameException(current.exception, last.exception); + } + + return true; + }, + _setBackoffState: function _setBackoffState(request) { + // If we are already in a backoff state, don't change anything + if (this._shouldBackoff()) { + return; + } + + var status = request.status; // 400 - project_id doesn't exist or some other fatal + // 401 - invalid/revoked dsn + // 429 - too many requests + + if (!(status === 400 || status === 401 || status === 429)) return; + var retry; + + try { + // If Retry-After is not in Access-Control-Expose-Headers, most + // browsers will throw an exception trying to access it + if (supportsFetch()) { + retry = request.headers.get('Retry-After'); + } else { + retry = request.getResponseHeader('Retry-After'); + } // Retry-After is returned in seconds + + + retry = parseInt(retry, 10) * 1000; + } catch (e) { + /* eslint no-empty:0 */ + } + + this._backoffDuration = retry ? // If Sentry server returned a Retry-After value, use it + retry : // Otherwise, double the last backoff duration (starts at 1 sec) + this._backoffDuration * 2 || 1000; + this._backoffStart = now(); + }, + _send: function _send(data) { + var globalOptions = this._globalOptions; + + var baseData = { + project: this._globalProject, + logger: globalOptions.logger, + platform: 'javascript' + }, + httpData = this._getHttpData(); + + if (httpData) { + baseData.request = httpData; + } // HACK: delete `trimHeadFrames` to prevent from appearing in outbound payload + + + if (data.trimHeadFrames) delete data.trimHeadFrames; + data = objectMerge(baseData, data); // Merge in the tags and extra separately since objectMerge doesn't handle a deep merge + + data.tags = objectMerge(objectMerge({}, this._globalContext.tags), data.tags); + data.extra = objectMerge(objectMerge({}, this._globalContext.extra), data.extra); // Send along our own collected metadata with extra + + data.extra['session:duration'] = now() - this._startTime; + + if (this._breadcrumbs && this._breadcrumbs.length > 0) { + // intentionally make shallow copy so that additions + // to breadcrumbs aren't accidentally sent in this request + data.breadcrumbs = { + values: [].slice.call(this._breadcrumbs, 0) + }; + } + + if (this._globalContext.user) { + // sentry.interfaces.User + data.user = this._globalContext.user; + } // Include the environment if it's defined in globalOptions + + + if (globalOptions.environment) data.environment = globalOptions.environment; // Include the release if it's defined in globalOptions + + if (globalOptions.release) data.release = globalOptions.release; // Include server_name if it's defined in globalOptions + + if (globalOptions.serverName) data.server_name = globalOptions.serverName; // Cleanup empty properties before sending them to the server + + Object.keys(data).forEach(function (key) { + if (data[key] == null || data[key] === '' || isEmptyObject(data[key])) { + delete data[key]; + } + }); + + if (isFunction(globalOptions.dataCallback)) { + data = globalOptions.dataCallback(data) || data; + } // Why?????????? + + + if (!data || isEmptyObject(data)) { + return; + } // Check if the request should be filtered or not + + + if (isFunction(globalOptions.shouldSendCallback) && !globalOptions.shouldSendCallback(data)) { + return; + } // Backoff state: Sentry server previously responded w/ an error (e.g. 429 - too many requests), + // so drop requests until "cool-off" period has elapsed. + + + if (this._shouldBackoff()) { + this._logDebug('warn', 'Raven dropped error due to backoff: ', data); + + return; + } + + if (typeof globalOptions.sampleRate === 'number') { + if (Math.random() < globalOptions.sampleRate) { + this._sendProcessedPayload(data); + } + } else { + this._sendProcessedPayload(data); + } + }, + _getUuid: function _getUuid() { + return uuid4(); + }, + _sendProcessedPayload: function _sendProcessedPayload(data, callback) { + var self = this; + var globalOptions = this._globalOptions; + if (!this.isSetup()) return; // Try and clean up the packet before sending by truncating long values + + data = this._trimPacket(data); // ideally duplicate error testing should occur *before* dataCallback/shouldSendCallback, + // but this would require copying an un-truncated copy of the data packet, which can be + // arbitrarily deep (extra_data) -- could be worthwhile? will revisit + + if (!this._globalOptions.allowDuplicates && this._isRepeatData(data)) { + this._logDebug('warn', 'Raven dropped repeat event: ', data); + + return; + } // Send along an event_id if not explicitly passed. + // This event_id can be used to reference the error within Sentry itself. + // Set lastEventId after we know the error should actually be sent + + + this._lastEventId = data.event_id || (data.event_id = this._getUuid()); // Store outbound payload after trim + + this._lastData = data; + + this._logDebug('debug', 'Raven about to send:', data); + + var auth = { + sentry_version: '7', + sentry_client: 'raven-js/' + this.VERSION, + sentry_key: this._globalKey + }; + + if (this._globalSecret) { + auth.sentry_secret = this._globalSecret; + } + + var exception = data.exception && data.exception.values[0]; // only capture 'sentry' breadcrumb is autoBreadcrumbs is truthy + + if (this._globalOptions.autoBreadcrumbs && this._globalOptions.autoBreadcrumbs.sentry) { + this.captureBreadcrumb({ + category: 'sentry', + message: exception ? (exception.type ? exception.type + ': ' : '') + exception.value : data.message, + event_id: data.event_id, + level: data.level || 'error' // presume error unless specified + + }); + } + + var url = this._globalEndpoint; + + (globalOptions.transport || this._makeRequest).call(this, { + url: url, + auth: auth, + data: data, + options: globalOptions, + onSuccess: function success() { + self._resetBackoff(); + + self._triggerEvent('success', { + data: data, + src: url + }); + + callback && callback(); + }, + onError: function failure(error) { + self._logDebug('error', 'Raven transport failed to send: ', error); + + if (error.request) { + self._setBackoffState(error.request); + } + + self._triggerEvent('failure', { + data: data, + src: url + }); + + error = error || new Error('Raven send failed (no additional details provided)'); + callback && callback(error); + } + }); + }, + _makeRequest: function _makeRequest(opts) { + // Auth is intentionally sent as part of query string (NOT as custom HTTP header) to avoid preflight CORS requests + var url = opts.url + '?' + urlencode(opts.auth); + var evaluatedHeaders = null; + var evaluatedFetchParameters = {}; + + if (opts.options.headers) { + evaluatedHeaders = this._evaluateHash(opts.options.headers); + } + + if (opts.options.fetchParameters) { + evaluatedFetchParameters = this._evaluateHash(opts.options.fetchParameters); + } + + if (supportsFetch()) { + evaluatedFetchParameters.body = stringify_1(opts.data); + var defaultFetchOptions = objectMerge({}, this._fetchDefaults); + var fetchOptions = objectMerge(defaultFetchOptions, evaluatedFetchParameters); + + if (evaluatedHeaders) { + fetchOptions.headers = evaluatedHeaders; + } + + return _window$1.fetch(url, fetchOptions).then(function (response) { + if (response.ok) { + opts.onSuccess && opts.onSuccess(); + } else { + var error = new Error('Sentry error code: ' + response.status); // It's called request only to keep compatibility with XHR interface + // and not add more redundant checks in setBackoffState method + + error.request = response; + opts.onError && opts.onError(error); + } + })['catch'](function () { + opts.onError && opts.onError(new Error('Sentry error code: network unavailable')); + }); + } + + var request = _window$1.XMLHttpRequest && new _window$1.XMLHttpRequest(); + if (!request) return; // if browser doesn't support CORS (e.g. IE7), we are out of luck + + var hasCORS = 'withCredentials' in request || typeof XDomainRequest !== 'undefined'; + if (!hasCORS) return; + + if ('withCredentials' in request) { + request.onreadystatechange = function () { + if (request.readyState !== 4) { + return; + } else if (request.status === 200) { + opts.onSuccess && opts.onSuccess(); + } else if (opts.onError) { + var err = new Error('Sentry error code: ' + request.status); + err.request = request; + opts.onError(err); + } + }; + } else { + request = new XDomainRequest(); // xdomainrequest cannot go http -> https (or vice versa), + // so always use protocol relative + + url = url.replace(/^https?:/, ''); // onreadystatechange not supported by XDomainRequest + + if (opts.onSuccess) { + request.onload = opts.onSuccess; + } + + if (opts.onError) { + request.onerror = function () { + var err = new Error('Sentry error code: XDomainRequest'); + err.request = request; + opts.onError(err); + }; + } + } + + request.open('POST', url); + + if (evaluatedHeaders) { + each(evaluatedHeaders, function (key, value) { + request.setRequestHeader(key, value); + }); + } + + request.send(stringify_1(opts.data)); + }, + _evaluateHash: function _evaluateHash(hash) { + var evaluated = {}; + + for (var key in hash) { + if (hash.hasOwnProperty(key)) { + var value = hash[key]; + evaluated[key] = typeof value === 'function' ? value() : value; + } + } + + return evaluated; + }, + _logDebug: function _logDebug(level) { + if (this._originalConsoleMethods[level] && this.debug) { + // In IE<10 console methods do not have their own 'apply' method + Function.prototype.apply.call(this._originalConsoleMethods[level], this._originalConsole, [].slice.call(arguments, 1)); + } + }, + _mergeContext: function _mergeContext(key, context) { + if (isUndefined(context)) { + delete this._globalContext[key]; + } else { + this._globalContext[key] = objectMerge(this._globalContext[key] || {}, context); + } + } +}; // Deprecations + +Raven$1.prototype.setUser = Raven$1.prototype.setUserContext; +Raven$1.prototype.setReleaseContext = Raven$1.prototype.setRelease; +var raven = Raven$1; + +/** + * Enforces a single instance of the Raven client, and the + * main entry point for Raven. If you are a consumer of the + * Raven library, you SHOULD load this file (vs raven.js). + **/ +// This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) + +var _window = typeof window !== 'undefined' ? window : typeof commonjsGlobal !== 'undefined' ? commonjsGlobal : typeof self !== 'undefined' ? self : {}; + +var _Raven = _window.Raven; +var Raven = new raven(); +/* + * Allow multiple versions of Raven to be installed. + * Strip Raven from the global context and returns the instance. + * + * @return {Raven} + */ + +Raven.noConflict = function () { + _window.Raven = _Raven; + return Raven; +}; + +Raven.afterLoad(); +var singleton = Raven; + +/** + * Angular.js plugin + * + * Provides an $exceptionHandler for Angular.js + */ + +var wrappedCallback$1 = utils.wrappedCallback; // See https://github.com/angular/angular.js/blob/v1.4.7/src/minErr.js + +var angularPattern = /^\[((?:[$a-zA-Z0-9]+:)?(?:[$a-zA-Z0-9]+))\] (.*?)\n?(\S+)$/; +var moduleName = 'ngRaven'; + +function angularPlugin(Raven, angular) { + angular = angular || window.angular; + if (!angular) return; + + function RavenProvider() { + this.$get = ['$window', function ($window) { + return Raven; + }]; + } + + function ExceptionHandlerProvider($provide) { + $provide.decorator('$exceptionHandler', ['Raven', '$delegate', exceptionHandler]); + } + + function exceptionHandler(R, $delegate) { + return function (ex, cause) { + R.captureException(ex, { + extra: { + cause: cause + } + }); + $delegate(ex, cause); + }; + } + + angular.module(moduleName, []).provider('Raven', RavenProvider).config(['$provide', ExceptionHandlerProvider]); + Raven.setDataCallback(wrappedCallback$1(function (data) { + return angularPlugin._normalizeData(data); + })); +} + +angularPlugin._normalizeData = function (data) { + // We only care about mutating an exception + var exception = data.exception; + + if (exception) { + exception = exception.values[0]; + var matches = angularPattern.exec(exception.value); + + if (matches) { + // This type now becomes something like: $rootScope:inprog + exception.type = matches[1]; + exception.value = matches[2]; + data.message = exception.type + ': ' + exception.value; // auto set a new tag specifically for the angular error url + + data.extra.angularDocs = matches[3].substr(0, 250); + } + } + + return data; +}; + +angularPlugin.moduleName = moduleName; +var angular = angularPlugin; + +/** + * Ember.js plugin + * + * Patches event handler callbacks and ajax callbacks. + */ +function emberPlugin(Raven, Ember) { + Ember = Ember || window.Ember; // quit if Ember isn't on the page + + if (!Ember) return; + var _oldOnError = Ember.onerror; + + Ember.onerror = function EmberOnError(error) { + Raven.captureException(error); + + if (typeof _oldOnError === 'function') { + _oldOnError.call(this, error); + } + }; + + Ember.RSVP.on('error', function (reason) { + if (reason instanceof Error) { + Raven.captureException(reason, { + extra: { + context: 'Unhandled Promise error detected' + } + }); + } else { + Raven.captureMessage('Unhandled Promise error detected', { + extra: { + reason: reason + } + }); + } + }); +} + +var ember = emberPlugin; + +/*global define*/ + +/** + * require.js plugin + * + * Automatically wrap define/require callbacks. (Experimental) + */ + +function requirePlugin(Raven) { + if (typeof undefined === 'function' && undefined.amd) { + window.define = Raven.wrap({ + deep: false + }, undefined); + window.require = Raven.wrap({ + deep: false + }, commonjsRequire); + } +} + +var require_1 = requirePlugin; + +/* This file was generated by './scripts/generate-plugin-combinations.js'! */ + +singleton.addPlugin(angular).addPlugin(ember).addPlugin(require_1); +var angular_ember_require = {}; + +return angular_ember_require; + +}))); diff --git a/dist/angular,ember,require/raven.min.js b/dist/angular,ember,require/raven.min.js new file mode 100644 index 000000000000..2fd86c79cf9b --- /dev/null +++ b/dist/angular,ember,require/raven.min.js @@ -0,0 +1,3 @@ +/*! Raven.js 3.22.2 (1b6187b) | github.com/getsentry/raven-js */ +!function(a,b){"object"==typeof exports&&"undefined"!=typeof module?module.exports=b():"function"==typeof define&&define.amd?define(b):a.Raven=b()}(this,function(){"use strict";function a(a,b){return b={exports:{}},a(b,b.exports),b.exports}function b(a){return(b="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(a){return typeof a}:function(a){return a&&"function"==typeof Symbol&&a.constructor===Symbol&&a!==Symbol.prototype?"symbol":typeof a})(a)}function c(a){return"object"===b(a)&&null!==a}function d(a){switch({}.toString.call(a)){case"[object Error]":return!0;case"[object Exception]":return!0;case"[object DOMException]":return!0;default:return a instanceof Error}}function e(a){return l()&&"[object ErrorEvent]"==={}.toString.call(a)}function f(a){return void 0===a}function g(a){return"function"==typeof a}function h(a){return"[object Object]"===Object.prototype.toString.call(a)}function i(a){return"[object String]"===Object.prototype.toString.call(a)}function j(a){return"[object Array]"===Object.prototype.toString.call(a)}function k(a){if(!h(a))return!1;for(var b in a)if(a.hasOwnProperty(b))return!1;return!0}function l(){try{return new ErrorEvent(""),!0}catch(a){return!1}}function m(){if(!("fetch"in P))return!1;try{return new Headers,new Request(""),new Response,!0}catch(a){return!1}}function n(a){function b(b,c){var d=a(b)||b;return c?c(d)||d:d}return b}function o(a,b){var c,d;if(f(a.length))for(c in a)s(a,c)&&b.call(null,c,a[c]);else if(d=a.length)for(c=0;c ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function y(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&i(b))for(c=b.split(/\s+/),f=0;f=0;--b)l[b]===a&&l.splice(b,1)}function c(){g(),l=[]}function d(a,b){var c=null;if(!b||R.collectWindowErrors){for(var d in l)if(l.hasOwnProperty(d))try{l[d].apply(null,[a].concat(T.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function e(a,b,c,e,f){var g=null,i=Q.isErrorEvent(f)?f.error:f,k=Q.isErrorEvent(a)?a.message:a;if(o)R.computeStackTrace.augmentStackTraceWithInitialElement(o,b,c,k),h();else if(i&&Q.isError(i))g=R.computeStackTrace(i),d(g,!0);else{var l,m={url:b,line:c,column:e},n=void 0;if("[object String]"==={}.toString.call(k)){var l=k.match(V);l&&(n=l[1],k=l[2])}m.func=U,g={name:n,message:k,url:F(),stack:[m]},d(g,!0)}return!!j&&j.apply(this,arguments)}function f(){k||(j=S.onerror,S.onerror=e,k=!0)}function g(){k&&(S.onerror=j,k=!1,j=void 0)}function h(){var a=o,b=m;m=null,o=null,n=null,d.apply(null,[a,!1].concat(b))}function i(a,b){var c=T.call(arguments,1);if(o){if(n===a)return;h()}var d=R.computeStackTrace(a);if(o=d,n=a,m=c,setTimeout(function(){n===a&&h()},d.incomplete?2e3:0),b!==!1)throw a}var j,k,l=[],m=null,n=null,o=null;return i.subscribe=a,i.unsubscribe=b,i.uninstall=c,i}(),R.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,d,e=/^\s*at (.*?) ?\(((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,f=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|\[native).*?|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,g=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,h=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,i=/\((\S*)(?::(\d+))(?::(\d+))\)/,j=a.stack.split("\n"),k=[],l=(/^(.*) is undefined$/.exec(a.message),0),m=j.length;l eval")>-1;o&&(b=h.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==l||c[5]||"undefined"==typeof a.columnNumber||(k[0].column=a.columnNumber+1),d={url:c[3],func:c[1]||U,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}!d.func&&d.line&&(d.func=U),k.push(d)}return k.length?{name:a.name,message:a.message,url:F(),stack:k}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=U),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,e){for(var f,g,h=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,i=[],j={},k=!1,l=c.caller;l&&!k;l=l.caller)if(l!==d&&l!==R.report){if(g={url:null,func:U,line:null,column:null},l.name?g.func=l.name:(f=h.exec(l.toString()))&&(g.func=f[1]),"undefined"==typeof g.func)try{g.func=f.input.substring(0,f.input.indexOf("{"))}catch(m){}j[""+l]?k=!0:j[""+l]=!0,i.push(g)}e&&i.splice(0,e);var n={name:a.name,message:a.message,url:F(),stack:i};return b(n,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),n}function d(b,d){var e=null;d=null==d?0:+d;try{if(e=a(b))return e}catch(f){if(R.debug)throw f}try{if(e=c(b,d+1))return e}catch(f){if(R.debug)throw f}return{name:b.name,message:b.message,url:F()}}return d.augmentStackTraceWithInitialElement=b,d.computeStackTraceFromStackProp=a,d}();var W=R,X=a(function(a,b){function c(a,b){for(var c=0;c0){var i=c(d,this);~i?d.splice(i+1):d.push(this),~i?f.splice(i,1/0,g):f.push(g),~c(d,h)&&(h=b.call(this,g,h))}else d.push(h);return null==a?h instanceof Error?e(h):h:a.call(this,g,h)}}b=a.exports=d,b.getSerialize=f});G.prototype=new Error,G.prototype.constructor=G;var Y=G,Z=function(a,b,c){var d=a[b],e=a;if(b in a){var f="warn"===b?"warning":b;a[b]=function(){var a=[].slice.call(arguments),g=Q.safeJoin(a," "),h={level:f,logger:"console",extra:{arguments:a}};"assert"===b?a[0]===!1&&(g="Assertion failed: "+(Q.safeJoin(a.slice(1)," ")||"console.assert"),h.extra.arguments=a.slice(1),c&&c(g,h)):c&&c(g,h),d&&Function.prototype.apply.call(d,e,a)}}},$={wrapMethod:Z},_=Q.isError,aa=Q.isObject,ba=Q.isErrorEvent,ca=Q.isUndefined,da=Q.isFunction,ea=Q.isString,fa=Q.isArray,ga=Q.isEmptyObject,ha=Q.each,ia=Q.objectMerge,ja=Q.truncate,ka=Q.objectFrozen,la=Q.hasKey,ma=Q.joinRegExp,na=Q.urlencode,oa=Q.uuid4,pa=Q.htmlTreeAsString,qa=Q.isSameException,ra=Q.isSameStacktrace,sa=Q.parseUrl,ta=Q.fill,ua=Q.supportsFetch,va=$.wrapMethod,wa="source protocol user pass host port path".split(" "),xa=/^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/,ya="undefined"!=typeof window?window:"undefined"!=typeof N?N:"undefined"!=typeof self?self:{},za=ya.document,Aa=ya.navigator;J.prototype={VERSION:"3.22.2",debug:!1,TraceKit:W,config:function(a,b){var c=this;if(c.i)return this.D("error","Error: Raven has already been configured"),c;if(!a)return c;var d=c.m;b&&ha(b,function(a,b){"tags"===a||"extra"===a||"user"===a?c.l[a]=b:d[a]=b}),c.setDSN(a),d.ignoreErrors.push(/^Script error\.?$/),d.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/),d.ignoreErrors=ma(d.ignoreErrors),d.ignoreUrls=!!d.ignoreUrls.length&&ma(d.ignoreUrls),d.whitelistUrls=!!d.whitelistUrls.length&&ma(d.whitelistUrls),d.includePaths=ma(d.includePaths),d.maxBreadcrumbs=Math.max(0,Math.min(d.maxBreadcrumbs||100,100));var e={xhr:!0,console:!0,dom:!0,location:!0,sentry:!0},f=d.autoBreadcrumbs;"[object Object]"==={}.toString.call(f)?f=ia(e,f):f!==!1&&(f=e),d.autoBreadcrumbs=f;var g={tryCatch:!0},h=d.instrument;return"[object Object]"==={}.toString.call(h)?h=ia(g,h):h!==!1&&(h=g),d.instrument=h,W.collectWindowErrors=!!d.collectWindowErrors,c},install:function(){var a=this;return a.isSetup()&&!a.p&&(W.report.subscribe(function(){a.E.apply(a,arguments)}),a.F(),a.m.instrument&&a.m.instrument.tryCatch&&a.G(),a.m.autoBreadcrumbs&&a.H(),a.I(),a.p=!0),Error.stackTraceLimit=a.m.stackTraceLimit,this},setDSN:function(a){var b=this,c=b.J(a),d=c.path.lastIndexOf("/"),e=c.path.substr(1,d);b.K=a,b.j=c.user,b.L=c.pass&&c.pass.substr(1),b.k=c.path.substr(d+1),b.i=b.M(c),b.N=b.i+"/"+e+"api/"+b.k+"/store/",this.A()},context:function(a,b,c){return da(a)&&(c=b||[],b=a,a=void 0),this.wrap(a,b).apply(this,c)},wrap:function(a,b,c){function d(){var d=[],f=arguments.length,g=!a||a&&a.deep!==!1;for(c&&da(c)&&c.apply(this,arguments);f--;)d[f]=g?e.wrap(a,arguments[f]):arguments[f];try{return b.apply(this,d)}catch(h){throw e.O(),e.captureException(h,a),h}}var e=this;if(ca(b)&&!da(a))return a;if(da(a)&&(b=a,a=void 0),!da(b))return b;try{if(b.a)return b;if(b.P)return b.P}catch(f){return b}for(var g in b)la(b,g)&&(d[g]=b[g]);return d.prototype=b.prototype,b.P=d,d.a=!0,d.b=b,d},uninstall:function(){return W.report.uninstall(),this.Q(),this.R(),this.S(),Error.stackTraceLimit=this.q,this.p=!1,this},captureException:function(a,b){b=ia({trimHeadFrames:0},b?b:{});var c=!_(a),d=!ba(a),e=ba(a)&&!a.error;if(c&&d||e)return this.captureMessage(a,ia(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}));ba(a)&&(a=a.error),this.f=a;try{var f=W.computeStackTrace(a);this.T(f,b)}catch(g){if(a!==g)throw g}return this},captureMessage:function(a,b){if(!this.m.ignoreErrors.test||!this.m.ignoreErrors.test(a)){b=b||{};var c,d=ia({message:a+""},b);try{throw new Error(a)}catch(e){c=e}c.name=null;var f=W.computeStackTrace(c),g=fa(f.stack)&&f.stack[1],h=g&&g.url||"";if((!this.m.ignoreUrls.test||!this.m.ignoreUrls.test(h))&&(!this.m.whitelistUrls.test||this.m.whitelistUrls.test(h))){if(this.m.stacktrace||b&&b.stacktrace){b=ia({fingerprint:a,trimHeadFrames:(b.trimHeadFrames||0)+1},b);var i=this.U(f,b);d.stacktrace={frames:i.reverse()}}return this.V(d),this}}},captureBreadcrumb:function(a){var b=ia({timestamp:H()/1e3},a);if(da(this.m.breadcrumbCallback)){var c=this.m.breadcrumbCallback(b);if(aa(c)&&!ga(c))b=c;else if(c===!1)return this}return this.w.push(b),this.w.length>this.m.maxBreadcrumbs&&this.w.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.t.push([a,b]),this.p&&this.I(),this},setUserContext:function(a){return this.l.user=a,this},setExtraContext:function(a){return this.W("extra",a),this},setTagsContext:function(a){return this.W("tags",a),this},clearContext:function(){return this.l={},this},getContext:function(){return JSON.parse(X(this.l))},setEnvironment:function(a){return this.m.environment=a,this},setRelease:function(a){return this.m.release=a,this},setDataCallback:function(a){var b=this.m.dataCallback;return this.m.dataCallback=I(b,a),this},setBreadcrumbCallback:function(a){var b=this.m.breadcrumbCallback;return this.m.breadcrumbCallback=I(b,a),this},setShouldSendCallback:function(a){var b=this.m.shouldSendCallback;return this.m.shouldSendCallback=I(b,a),this},setTransport:function(a){return this.m.transport=a,this},lastException:function(){return this.f},lastEventId:function(){return this.h},isSetup:function(){return!!this.c&&(!!this.i||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.D("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=ya.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(za){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new Y("Missing eventId");var c=a.dsn||this.K;if(!c)throw new Y("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.l.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.M(this.J(c)),h=za.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(za.head||za.body).appendChild(h)}},O:function(){var a=this;this.o+=1,setTimeout(function(){a.o-=1})},X:function(a,b){var c,d;if(this.d){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),za.createEvent?(c=za.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=za.createEventObject(),c.eventType=a);for(d in b)la(b,d)&&(c[d]=b[d]);if(za.createEvent)za.dispatchEvent(c);else try{za.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},Y:function(a){var b=this;return function(c){if(b.Z=null,b.x!==c){b.x=c;var d;try{d=pa(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},$:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.Z;g||a.Y("input")(c),clearTimeout(g),a.Z=setTimeout(function(){a.Z=null},b)}}},_:function(a,b){var c=sa(this.y.href),d=sa(b),e=sa(a);this.z=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},F:function(){var a=this;a.aa=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.a?a.aa.apply(this.b,arguments):a.aa.apply(this,arguments)}},Q:function(){this.aa&&(Function.prototype.toString=this.aa)},G:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b._(b.z,c+""),a.apply(this,arguments)}};ta(history,"pushState",j,d),ta(history,"replaceState",j,d)}if(c.console&&"console"in ya&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};ha(["debug","info","warn","error","log"],function(a,b){va(console,b,k)})}},R:function(){for(var a;this.v.length;){a=this.v.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},S:function(){for(var a in this.s)this.r[a]=this.s[a]},I:function(){var a=this;ha(this.t,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},J:function(a){var b=xa.exec(a),c={},d=7;try{for(;d--;)c[wa[d]]=b[d]||""}catch(e){throw new Y("Invalid DSN: "+a)}if(c.pass&&!this.m.allowSecretKey)throw new Y("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},M:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},E:function(){this.o||this.T.apply(this,arguments)},T:function(a,b){var c=this.U(a,b);this.X("handle",{stackInfo:a,options:b}),this.ca(a.name,a.message,a.url,a.lineno,c,b)},U:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(ha(a.stack,function(b,e){var f=c.da(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.w,0)}),this.l.user&&(a.user=this.l.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||ga(a[b]))&&delete a[b]}),da(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!ga(a)&&(!da(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.ja()?void this.D("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() href parsing trick because React Native and other +// environments where DOM might not be available + + +function parseUrl$1(url) { + if (typeof url !== 'string') return {}; + var match = url.match(/^(([^:\/?#]+):)?(\/\/([^\/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?$/); // coerce to undefined values to empty string so we don't get 'undefined' + + var query = match[6] || ''; + var fragment = match[8] || ''; + return { + protocol: match[2], + host: match[4], + path: match[5], + relative: match[5] + query + fragment // everything minus origin + + }; +} + +function uuid4$1() { + var crypto = _window$3.crypto || _window$3.msCrypto; + + if (!isUndefined$1(crypto) && crypto.getRandomValues) { + // Use window.crypto API if available + // eslint-disable-next-line no-undef + var arr = new Uint16Array(8); + crypto.getRandomValues(arr); // set 4 in byte 7 + + arr[3] = arr[3] & 0xfff | 0x4000; // set 2 most significant bits of byte 9 to '10' + + arr[4] = arr[4] & 0x3fff | 0x8000; + + var pad = function pad(num) { + var v = num.toString(16); + + while (v.length < 4) { + v = '0' + v; + } + + return v; + }; + + return pad(arr[0]) + pad(arr[1]) + pad(arr[2]) + pad(arr[3]) + pad(arr[4]) + pad(arr[5]) + pad(arr[6]) + pad(arr[7]); + } else { + // http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/2117523#2117523 + return 'xxxxxxxxxxxx4xxxyxxxxxxxxxxxxxxx'.replace(/[xy]/g, function (c) { + var r = Math.random() * 16 | 0, + v = c === 'x' ? r : r & 0x3 | 0x8; + return v.toString(16); + }); + } +} +/** + * Given a child DOM element, returns a query-selector statement describing that + * and its ancestors + * e.g. [HTMLElement] => body > div > input#foo.btn[name=baz] + * @param elem + * @returns {string} + */ + + +function htmlTreeAsString$1(elem) { + /* eslint no-extra-parens:0*/ + var MAX_TRAVERSE_HEIGHT = 5, + MAX_OUTPUT_LEN = 80, + out = [], + height = 0, + len = 0, + separator = ' > ', + sepLength = separator.length, + nextStr; + + while (elem && height++ < MAX_TRAVERSE_HEIGHT) { + nextStr = htmlElementAsString(elem); // bail out if + // - nextStr is the 'html' element + // - the length of the string that would be created exceeds MAX_OUTPUT_LEN + // (ignore this limit if we are on the first iteration) + + if (nextStr === 'html' || height > 1 && len + out.length * sepLength + nextStr.length >= MAX_OUTPUT_LEN) { + break; + } + + out.push(nextStr); + len += nextStr.length; + elem = elem.parentNode; + } + + return out.reverse().join(separator); +} +/** + * Returns a simple, query-selector representation of a DOM element + * e.g. [HTMLElement] => input#foo.btn[name=baz] + * @param HTMLElement + * @returns {string} + */ + + +function htmlElementAsString(elem) { + var out = [], + className, + classes, + key, + attr, + i; + + if (!elem || !elem.tagName) { + return ''; + } + + out.push(elem.tagName.toLowerCase()); + + if (elem.id) { + out.push('#' + elem.id); + } + + className = elem.className; + + if (className && isString$1(className)) { + classes = className.split(/\s+/); + + for (i = 0; i < classes.length; i++) { + out.push('.' + classes[i]); + } + } + + var attrWhitelist = ['type', 'name', 'title', 'alt']; + + for (i = 0; i < attrWhitelist.length; i++) { + key = attrWhitelist[i]; + attr = elem.getAttribute(key); + + if (attr) { + out.push('[' + key + '="' + attr + '"]'); + } + } + + return out.join(''); +} +/** + * Returns true if either a OR b is truthy, but not both + */ + + +function isOnlyOneTruthy(a, b) { + return !!(!!a ^ !!b); +} +/** + * Returns true if both parameters are undefined + */ + + +function isBothUndefined(a, b) { + return isUndefined$1(a) && isUndefined$1(b); +} +/** + * Returns true if the two input exception interfaces have the same content + */ + + +function isSameException$1(ex1, ex2) { + if (isOnlyOneTruthy(ex1, ex2)) return false; + ex1 = ex1.values[0]; + ex2 = ex2.values[0]; + if (ex1.type !== ex2.type || ex1.value !== ex2.value) return false; // in case both stacktraces are undefined, we can't decide so default to false + + if (isBothUndefined(ex1.stacktrace, ex2.stacktrace)) return false; + return isSameStacktrace$1(ex1.stacktrace, ex2.stacktrace); +} +/** + * Returns true if the two input stack trace interfaces have the same content + */ + + +function isSameStacktrace$1(stack1, stack2) { + if (isOnlyOneTruthy(stack1, stack2)) return false; + var frames1 = stack1.frames; + var frames2 = stack2.frames; // Exit early if frame count differs + + if (frames1.length !== frames2.length) return false; // Iterate through every frame; bail out if anything differs + + var a, b; + + for (var i = 0; i < frames1.length; i++) { + a = frames1[i]; + b = frames2[i]; + if (a.filename !== b.filename || a.lineno !== b.lineno || a.colno !== b.colno || a['function'] !== b['function']) return false; + } + + return true; +} +/** + * Polyfill a method + * @param obj object e.g. `document` + * @param name method name present on object e.g. `addEventListener` + * @param replacement replacement function + * @param track {optional} record instrumentation to an array + */ + + +function fill$1(obj, name, replacement, track) { + var orig = obj[name]; + obj[name] = replacement(orig); + obj[name].__raven__ = true; + obj[name].__orig__ = orig; + + if (track) { + track.push([obj, name, orig]); + } +} +/** + * Join values in array + * @param input array of values to be joined together + * @param delimiter string to be placed in-between values + * @returns {string} + */ + + +function safeJoin(input, delimiter) { + if (!isArray$1(input)) return ''; + var output = []; + + for (var i = 0; i < input.length; i++) { + try { + output.push(String(input[i])); + } catch (e) { + output.push('[value cannot be serialized]'); + } + } + + return output.join(delimiter); +} + +var utils = { + isObject: isObject$1, + isError: isError$1, + isErrorEvent: isErrorEvent$1, + isUndefined: isUndefined$1, + isFunction: isFunction$1, + isPlainObject: isPlainObject, + isString: isString$1, + isArray: isArray$1, + isEmptyObject: isEmptyObject$1, + supportsErrorEvent: supportsErrorEvent, + supportsFetch: supportsFetch$1, + wrappedCallback: wrappedCallback, + each: each$1, + objectMerge: objectMerge$1, + truncate: truncate$1, + objectFrozen: objectFrozen$1, + hasKey: hasKey$1, + joinRegExp: joinRegExp$1, + urlencode: urlencode$1, + uuid4: uuid4$1, + htmlTreeAsString: htmlTreeAsString$1, + htmlElementAsString: htmlElementAsString, + isSameException: isSameException$1, + isSameStacktrace: isSameStacktrace$1, + parseUrl: parseUrl$1, + fill: fill$1, + safeJoin: safeJoin +}; + +/* + TraceKit - Cross brower stack traces + + This was originally forked from github.com/occ/TraceKit, but has since been + largely re-written and is now maintained as part of raven-js. Tests for + this are in test/vendor. + + MIT license +*/ + +var TraceKit = { + collectWindowErrors: true, + debug: false +}; // This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) + +var _window$2 = typeof window !== 'undefined' ? window : typeof commonjsGlobal !== 'undefined' ? commonjsGlobal : typeof self !== 'undefined' ? self : {}; // global reference to slice + + +var _slice = [].slice; +var UNKNOWN_FUNCTION = '?'; // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error#Error_types + +var ERROR_TYPES_RE = /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/; + +function getLocationHref() { + if (typeof document === 'undefined' || document.location == null) return ''; + return document.location.href; +} +/** + * TraceKit.report: cross-browser processing of unhandled exceptions + * + * Syntax: + * TraceKit.report.subscribe(function(stackInfo) { ... }) + * TraceKit.report.unsubscribe(function(stackInfo) { ... }) + * TraceKit.report(exception) + * try { ...code... } catch(ex) { TraceKit.report(ex); } + * + * Supports: + * - Firefox: full stack trace with line numbers, plus column number + * on top frame; column number is not guaranteed + * - Opera: full stack trace with line and column numbers + * - Chrome: full stack trace with line and column numbers + * - Safari: line and column number for the top frame only; some frames + * may be missing, and column number is not guaranteed + * - IE: line and column number for the top frame only; some frames + * may be missing, and column number is not guaranteed + * + * In theory, TraceKit should work on all of the following versions: + * - IE5.5+ (only 8.0 tested) + * - Firefox 0.9+ (only 3.5+ tested) + * - Opera 7+ (only 10.50 tested; versions 9 and earlier may require + * Exceptions Have Stacktrace to be enabled in opera:config) + * - Safari 3+ (only 4+ tested) + * - Chrome 1+ (only 5+ tested) + * - Konqueror 3.5+ (untested) + * + * Requires TraceKit.computeStackTrace. + * + * Tries to catch all unhandled exceptions and report them to the + * subscribed handlers. Please note that TraceKit.report will rethrow the + * exception. This is REQUIRED in order to get a useful stack trace in IE. + * If the exception does not reach the top of the browser, you will only + * get a stack trace from the point where TraceKit.report was called. + * + * Handlers receive a stackInfo object as described in the + * TraceKit.computeStackTrace docs. + */ + + +TraceKit.report = function reportModuleWrapper() { + var handlers = [], + lastArgs = null, + lastException = null, + lastExceptionStack = null; + /** + * Add a crash handler. + * @param {Function} handler + */ + + function subscribe(handler) { + installGlobalHandler(); + handlers.push(handler); + } + /** + * Remove a crash handler. + * @param {Function} handler + */ + + + function unsubscribe(handler) { + for (var i = handlers.length - 1; i >= 0; --i) { + if (handlers[i] === handler) { + handlers.splice(i, 1); + } + } + } + /** + * Remove all crash handlers. + */ + + + function unsubscribeAll() { + uninstallGlobalHandler(); + handlers = []; + } + /** + * Dispatch stack information to all handlers. + * @param {Object.} stack + */ + + + function notifyHandlers(stack, isWindowError) { + var exception = null; + + if (isWindowError && !TraceKit.collectWindowErrors) { + return; + } + + for (var i in handlers) { + if (handlers.hasOwnProperty(i)) { + try { + handlers[i].apply(null, [stack].concat(_slice.call(arguments, 2))); + } catch (inner) { + exception = inner; + } + } + } + + if (exception) { + throw exception; + } + } + + var _oldOnerrorHandler, _onErrorHandlerInstalled; + /** + * Ensures all global unhandled exceptions are recorded. + * Supported by Gecko and IE. + * @param {string} msg Error message. + * @param {string} url URL of script that generated the exception. + * @param {(number|string)} lineNo The line number at which the error + * occurred. + * @param {?(number|string)} colNo The column number at which the error + * occurred. + * @param {?Error} ex The actual Error object. + */ + + + function traceKitWindowOnError(msg, url, lineNo, colNo, ex) { + var stack = null; // If 'ex' is ErrorEvent, get real Error from inside + + var exception = utils.isErrorEvent(ex) ? ex.error : ex; // If 'msg' is ErrorEvent, get real message from inside + + var message = utils.isErrorEvent(msg) ? msg.message : msg; + + if (lastExceptionStack) { + TraceKit.computeStackTrace.augmentStackTraceWithInitialElement(lastExceptionStack, url, lineNo, message); + processLastException(); + } else if (exception && utils.isError(exception)) { + // non-string `exception` arg; attempt to extract stack trace + // New chrome and blink send along a real error object + // Let's just report that like a normal error. + // See: https://mikewest.org/2013/08/debugging-runtime-errors-with-window-onerror + stack = TraceKit.computeStackTrace(exception); + notifyHandlers(stack, true); + } else { + var location = { + url: url, + line: lineNo, + column: colNo + }; + var name = undefined; + var groups; + + if ({}.toString.call(message) === '[object String]') { + var groups = message.match(ERROR_TYPES_RE); + + if (groups) { + name = groups[1]; + message = groups[2]; + } + } + + location.func = UNKNOWN_FUNCTION; + stack = { + name: name, + message: message, + url: getLocationHref(), + stack: [location] + }; + notifyHandlers(stack, true); + } + + if (_oldOnerrorHandler) { + return _oldOnerrorHandler.apply(this, arguments); + } + + return false; + } + + function installGlobalHandler() { + if (_onErrorHandlerInstalled) { + return; + } + + _oldOnerrorHandler = _window$2.onerror; + _window$2.onerror = traceKitWindowOnError; + _onErrorHandlerInstalled = true; + } + + function uninstallGlobalHandler() { + if (!_onErrorHandlerInstalled) { + return; + } + + _window$2.onerror = _oldOnerrorHandler; + _onErrorHandlerInstalled = false; + _oldOnerrorHandler = undefined; + } + + function processLastException() { + var _lastExceptionStack = lastExceptionStack, + _lastArgs = lastArgs; + lastArgs = null; + lastExceptionStack = null; + lastException = null; + notifyHandlers.apply(null, [_lastExceptionStack, false].concat(_lastArgs)); + } + /** + * Reports an unhandled Error to TraceKit. + * @param {Error} ex + * @param {?boolean} rethrow If false, do not re-throw the exception. + * Only used for window.onerror to not cause an infinite loop of + * rethrowing. + */ + + + function report(ex, rethrow) { + var args = _slice.call(arguments, 1); + + if (lastExceptionStack) { + if (lastException === ex) { + return; // already caught by an inner catch block, ignore + } else { + processLastException(); + } + } + + var stack = TraceKit.computeStackTrace(ex); + lastExceptionStack = stack; + lastException = ex; + lastArgs = args; // If the stack trace is incomplete, wait for 2 seconds for + // slow slow IE to see if onerror occurs or not before reporting + // this exception; otherwise, we will end up with an incomplete + // stack trace + + setTimeout(function () { + if (lastException === ex) { + processLastException(); + } + }, stack.incomplete ? 2000 : 0); + + if (rethrow !== false) { + throw ex; // re-throw to propagate to the top level (and cause window.onerror) + } + } + + report.subscribe = subscribe; + report.unsubscribe = unsubscribe; + report.uninstall = unsubscribeAll; + return report; +}(); +/** + * TraceKit.computeStackTrace: cross-browser stack traces in JavaScript + * + * Syntax: + * s = TraceKit.computeStackTrace(exception) // consider using TraceKit.report instead (see below) + * Returns: + * s.name - exception name + * s.message - exception message + * s.stack[i].url - JavaScript or HTML file URL + * s.stack[i].func - function name, or empty for anonymous functions (if guessing did not work) + * s.stack[i].args - arguments passed to the function, if known + * s.stack[i].line - line number, if known + * s.stack[i].column - column number, if known + * + * Supports: + * - Firefox: full stack trace with line numbers and unreliable column + * number on top frame + * - Opera 10: full stack trace with line and column numbers + * - Opera 9-: full stack trace with line numbers + * - Chrome: full stack trace with line and column numbers + * - Safari: line and column number for the topmost stacktrace element + * only + * - IE: no line numbers whatsoever + * + * Tries to guess names of anonymous functions by looking for assignments + * in the source code. In IE and Safari, we have to guess source file names + * by searching for function bodies inside all page scripts. This will not + * work for scripts that are loaded cross-domain. + * Here be dragons: some function names may be guessed incorrectly, and + * duplicate functions may be mismatched. + * + * TraceKit.computeStackTrace should only be used for tracing purposes. + * Logging of unhandled exceptions should be done with TraceKit.report, + * which builds on top of TraceKit.computeStackTrace and provides better + * IE support by utilizing the window.onerror event to retrieve information + * about the top of the stack. + * + * Note: In IE and Safari, no stack trace is recorded on the Error object, + * so computeStackTrace instead walks its *own* chain of callers. + * This means that: + * * in Safari, some methods may be missing from the stack trace; + * * in IE, the topmost function in the stack trace will always be the + * caller of computeStackTrace. + * + * This is okay for tracing (because you are likely to be calling + * computeStackTrace from the function you want to be the topmost element + * of the stack trace anyway), but not okay for logging unhandled + * exceptions (because your catch block will likely be far away from the + * inner function that actually caused the exception). + * + */ + + +TraceKit.computeStackTrace = function computeStackTraceWrapper() { + // Contents of Exception in various browsers. + // + // SAFARI: + // ex.message = Can't find variable: qq + // ex.line = 59 + // ex.sourceId = 580238192 + // ex.sourceURL = http://... + // ex.expressionBeginOffset = 96 + // ex.expressionCaretOffset = 98 + // ex.expressionEndOffset = 98 + // ex.name = ReferenceError + // + // FIREFOX: + // ex.message = qq is not defined + // ex.fileName = http://... + // ex.lineNumber = 59 + // ex.columnNumber = 69 + // ex.stack = ...stack trace... (see the example below) + // ex.name = ReferenceError + // + // CHROME: + // ex.message = qq is not defined + // ex.name = ReferenceError + // ex.type = not_defined + // ex.arguments = ['aa'] + // ex.stack = ...stack trace... + // + // INTERNET EXPLORER: + // ex.message = ... + // ex.name = ReferenceError + // + // OPERA: + // ex.message = ...message... (see the example below) + // ex.name = ReferenceError + // ex.opera#sourceloc = 11 (pretty much useless, duplicates the info in ex.message) + // ex.stacktrace = n/a; see 'opera:config#UserPrefs|Exceptions Have Stacktrace' + + /** + * Computes stack trace information from the stack property. + * Chrome and Gecko use this property. + * @param {Error} ex + * @return {?Object.} Stack trace information. + */ + function computeStackTraceFromStackProp(ex) { + if (typeof ex.stack === 'undefined' || !ex.stack) return; + var chrome = /^\s*at (.*?) ?\(((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i, + gecko = /^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|\[native).*?|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i, + winjs = /^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i, + // Used to additionally parse URL/line/column from eval frames + geckoEval = /(\S+) line (\d+)(?: > eval line \d+)* > eval/i, + chromeEval = /\((\S*)(?::(\d+))(?::(\d+))\)/, + lines = ex.stack.split('\n'), + stack = [], + submatch, + parts, + element, + reference = /^(.*) is undefined$/.exec(ex.message); + + for (var i = 0, j = lines.length; i < j; ++i) { + if (parts = chrome.exec(lines[i])) { + var isNative = parts[2] && parts[2].indexOf('native') === 0; // start of line + + var isEval = parts[2] && parts[2].indexOf('eval') === 0; // start of line + + if (isEval && (submatch = chromeEval.exec(parts[2]))) { + // throw out eval line/column and use top-most line/column number + parts[2] = submatch[1]; // url + + parts[3] = submatch[2]; // line + + parts[4] = submatch[3]; // column + } + + element = { + url: !isNative ? parts[2] : null, + func: parts[1] || UNKNOWN_FUNCTION, + args: isNative ? [parts[2]] : [], + line: parts[3] ? +parts[3] : null, + column: parts[4] ? +parts[4] : null + }; + } else if (parts = winjs.exec(lines[i])) { + element = { + url: parts[2], + func: parts[1] || UNKNOWN_FUNCTION, + args: [], + line: +parts[3], + column: parts[4] ? +parts[4] : null + }; + } else if (parts = gecko.exec(lines[i])) { + var isEval = parts[3] && parts[3].indexOf(' > eval') > -1; + + if (isEval && (submatch = geckoEval.exec(parts[3]))) { + // throw out eval line/column and use top-most line number + parts[3] = submatch[1]; + parts[4] = submatch[2]; + parts[5] = null; // no column when eval + } else if (i === 0 && !parts[5] && typeof ex.columnNumber !== 'undefined') { + // FireFox uses this awesome columnNumber property for its top frame + // Also note, Firefox's column number is 0-based and everything else expects 1-based, + // so adding 1 + // NOTE: this hack doesn't work if top-most frame is eval + stack[0].column = ex.columnNumber + 1; + } + + element = { + url: parts[3], + func: parts[1] || UNKNOWN_FUNCTION, + args: parts[2] ? parts[2].split(',') : [], + line: parts[4] ? +parts[4] : null, + column: parts[5] ? +parts[5] : null + }; + } else { + continue; + } + + if (!element.func && element.line) { + element.func = UNKNOWN_FUNCTION; + } + + stack.push(element); + } + + if (!stack.length) { + return null; + } + + return { + name: ex.name, + message: ex.message, + url: getLocationHref(), + stack: stack + }; + } + /** + * Adds information about the first frame to incomplete stack traces. + * Safari and IE require this to get complete data on the first frame. + * @param {Object.} stackInfo Stack trace information from + * one of the compute* methods. + * @param {string} url The URL of the script that caused an error. + * @param {(number|string)} lineNo The line number of the script that + * caused an error. + * @param {string=} message The error generated by the browser, which + * hopefully contains the name of the object that caused the error. + * @return {boolean} Whether or not the stack information was + * augmented. + */ + + + function augmentStackTraceWithInitialElement(stackInfo, url, lineNo, message) { + var initial = { + url: url, + line: lineNo + }; + + if (initial.url && initial.line) { + stackInfo.incomplete = false; + + if (!initial.func) { + initial.func = UNKNOWN_FUNCTION; + } + + if (stackInfo.stack.length > 0) { + if (stackInfo.stack[0].url === initial.url) { + if (stackInfo.stack[0].line === initial.line) { + return false; // already in stack trace + } else if (!stackInfo.stack[0].line && stackInfo.stack[0].func === initial.func) { + stackInfo.stack[0].line = initial.line; + return false; + } + } + } + + stackInfo.stack.unshift(initial); + stackInfo.partial = true; + return true; + } else { + stackInfo.incomplete = true; + } + + return false; + } + /** + * Computes stack trace information by walking the arguments.caller + * chain at the time the exception occurred. This will cause earlier + * frames to be missed but is the only way to get any stack trace in + * Safari and IE. The top frame is restored by + * {@link augmentStackTraceWithInitialElement}. + * @param {Error} ex + * @return {?Object.} Stack trace information. + */ + + + function computeStackTraceByWalkingCallerChain(ex, depth) { + var functionName = /function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i, + stack = [], + funcs = {}, + recursion = false, + parts, + item; + + for (var curr = computeStackTraceByWalkingCallerChain.caller; curr && !recursion; curr = curr.caller) { + if (curr === computeStackTrace || curr === TraceKit.report) { + // console.log('skipping internal function'); + continue; + } + + item = { + url: null, + func: UNKNOWN_FUNCTION, + line: null, + column: null + }; + + if (curr.name) { + item.func = curr.name; + } else if (parts = functionName.exec(curr.toString())) { + item.func = parts[1]; + } + + if (typeof item.func === 'undefined') { + try { + item.func = parts.input.substring(0, parts.input.indexOf('{')); + } catch (e) {} + } + + if (funcs['' + curr]) { + recursion = true; + } else { + funcs['' + curr] = true; + } + + stack.push(item); + } + + if (depth) { + // console.log('depth is ' + depth); + // console.log('stack is ' + stack.length); + stack.splice(0, depth); + } + + var result = { + name: ex.name, + message: ex.message, + url: getLocationHref(), + stack: stack + }; + augmentStackTraceWithInitialElement(result, ex.sourceURL || ex.fileName, ex.line || ex.lineNumber, ex.message || ex.description); + return result; + } + /** + * Computes a stack trace for an exception. + * @param {Error} ex + * @param {(string|number)=} depth + */ + + + function computeStackTrace(ex, depth) { + var stack = null; + depth = depth == null ? 0 : +depth; + + try { + stack = computeStackTraceFromStackProp(ex); + + if (stack) { + return stack; + } + } catch (e) { + if (TraceKit.debug) { + throw e; + } + } + + try { + stack = computeStackTraceByWalkingCallerChain(ex, depth + 1); + + if (stack) { + return stack; + } + } catch (e) { + if (TraceKit.debug) { + throw e; + } + } + + return { + name: ex.name, + message: ex.message, + url: getLocationHref() + }; + } + + computeStackTrace.augmentStackTraceWithInitialElement = augmentStackTraceWithInitialElement; + computeStackTrace.computeStackTraceFromStackProp = computeStackTraceFromStackProp; + return computeStackTrace; +}(); + +var tracekit = TraceKit; + +var stringify_1 = createCommonjsModule(function (module, exports) { + /* + json-stringify-safe + Like JSON.stringify, but doesn't throw on circular references. + + Originally forked from https://github.com/isaacs/json-stringify-safe + version 5.0.1 on 3/8/2017 and modified to handle Errors serialization + and IE8 compatibility. Tests for this are in test/vendor. + + ISC license: https://github.com/isaacs/json-stringify-safe/blob/master/LICENSE + */ + exports = module.exports = stringify; + exports.getSerialize = serializer; + + function indexOf(haystack, needle) { + for (var i = 0; i < haystack.length; ++i) { + if (haystack[i] === needle) return i; + } + + return -1; + } + + function stringify(obj, replacer, spaces, cycleReplacer) { + return JSON.stringify(obj, serializer(replacer, cycleReplacer), spaces); + } // https://github.com/ftlabs/js-abbreviate/blob/fa709e5f139e7770a71827b1893f22418097fbda/index.js#L95-L106 + + + function stringifyError(value) { + var err = { + // These properties are implemented as magical getters and don't show up in for in + stack: value.stack, + message: value.message, + name: value.name + }; + + for (var i in value) { + if (Object.prototype.hasOwnProperty.call(value, i)) { + err[i] = value[i]; + } + } + + return err; + } + + function serializer(replacer, cycleReplacer) { + var stack = []; + var keys = []; + + if (cycleReplacer == null) { + cycleReplacer = function cycleReplacer(key, value) { + if (stack[0] === value) { + return '[Circular ~]'; + } + + return '[Circular ~.' + keys.slice(0, indexOf(stack, value)).join('.') + ']'; + }; + } + + return function (key, value) { + if (stack.length > 0) { + var thisPos = indexOf(stack, this); + ~thisPos ? stack.splice(thisPos + 1) : stack.push(this); + ~thisPos ? keys.splice(thisPos, Infinity, key) : keys.push(key); + + if (~indexOf(stack, value)) { + value = cycleReplacer.call(this, key, value); + } + } else { + stack.push(value); + } + + return replacer == null ? value instanceof Error ? stringifyError(value) : value : replacer.call(this, key, value); + }; + } +}); +var stringify_2 = stringify_1.getSerialize; + +function RavenConfigError(message) { + this.name = 'RavenConfigError'; + this.message = message; +} + +RavenConfigError.prototype = new Error(); +RavenConfigError.prototype.constructor = RavenConfigError; +var configError = RavenConfigError; + +var wrapMethod = function wrapMethod(console, level, callback) { + var originalConsoleLevel = console[level]; + var originalConsole = console; + + if (!(level in console)) { + return; + } + + var sentryLevel = level === 'warn' ? 'warning' : level; + + console[level] = function () { + var args = [].slice.call(arguments); + var msg = utils.safeJoin(args, ' '); + var data = { + level: sentryLevel, + logger: 'console', + extra: { + arguments: args + } + }; + + if (level === 'assert') { + if (args[0] === false) { + // Default browsers message + msg = 'Assertion failed: ' + (utils.safeJoin(args.slice(1), ' ') || 'console.assert'); + data.extra.arguments = args.slice(1); + callback && callback(msg, data); + } + } else { + callback && callback(msg, data); + } // this fails for some browsers. :( + + + if (originalConsoleLevel) { + // IE9 doesn't allow calling apply on console functions directly + // See: https://stackoverflow.com/questions/5472938/does-ie9-support-console-log-and-is-it-a-real-function#answer-5473193 + Function.prototype.apply.call(originalConsoleLevel, originalConsole, args); + } + }; +}; + +var console$1 = { + wrapMethod: wrapMethod +}; + +/*global XDomainRequest:false */ + +var isError = utils.isError; +var isObject = utils.isObject; +var isErrorEvent = utils.isErrorEvent; +var isUndefined = utils.isUndefined; +var isFunction = utils.isFunction; +var isString = utils.isString; +var isArray = utils.isArray; +var isEmptyObject = utils.isEmptyObject; +var each = utils.each; +var objectMerge = utils.objectMerge; +var truncate = utils.truncate; +var objectFrozen = utils.objectFrozen; +var hasKey = utils.hasKey; +var joinRegExp = utils.joinRegExp; +var urlencode = utils.urlencode; +var uuid4 = utils.uuid4; +var htmlTreeAsString = utils.htmlTreeAsString; +var isSameException = utils.isSameException; +var isSameStacktrace = utils.isSameStacktrace; +var parseUrl = utils.parseUrl; +var fill = utils.fill; +var supportsFetch = utils.supportsFetch; +var wrapConsoleMethod = console$1.wrapMethod; +var dsnKeys = 'source protocol user pass host port path'.split(' '); +var dsnPattern = /^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/; + +function now() { + return +new Date(); +} // This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) + + +var _window$1 = typeof window !== 'undefined' ? window : typeof commonjsGlobal !== 'undefined' ? commonjsGlobal : typeof self !== 'undefined' ? self : {}; + +var _document = _window$1.document; +var _navigator = _window$1.navigator; + +function keepOriginalCallback(original, callback) { + return isFunction(callback) ? function (data) { + return callback(data, original); + } : callback; +} // First, check for JSON support +// If there is no JSON, we no-op the core features of Raven +// since JSON is required to encode the payload + + +function Raven$1() { + this._hasJSON = !!(_typeof(JSON) === 'object' && JSON.stringify); // Raven can run in contexts where there's no document (react-native) + + this._hasDocument = !isUndefined(_document); + this._hasNavigator = !isUndefined(_navigator); + this._lastCapturedException = null; + this._lastData = null; + this._lastEventId = null; + this._globalServer = null; + this._globalKey = null; + this._globalProject = null; + this._globalContext = {}; + this._globalOptions = { + // SENTRY_RELEASE can be injected by https://github.com/getsentry/sentry-webpack-plugin + release: _window$1.SENTRY_RELEASE && _window$1.SENTRY_RELEASE.id, + logger: 'javascript', + ignoreErrors: [], + ignoreUrls: [], + whitelistUrls: [], + includePaths: [], + headers: null, + collectWindowErrors: true, + maxMessageLength: 0, + // By default, truncates URL values to 250 chars + maxUrlLength: 250, + stackTraceLimit: 50, + autoBreadcrumbs: true, + instrument: true, + sampleRate: 1 + }; + this._fetchDefaults = { + method: 'POST', + keepalive: true, + referrerPolicy: 'origin' + }; + this._ignoreOnError = 0; + this._isRavenInstalled = false; + this._originalErrorStackTraceLimit = Error.stackTraceLimit; // capture references to window.console *and* all its methods first + // before the console plugin has a chance to monkey patch + + this._originalConsole = _window$1.console || {}; + this._originalConsoleMethods = {}; + this._plugins = []; + this._startTime = now(); + this._wrappedBuiltIns = []; + this._breadcrumbs = []; + this._lastCapturedEvent = null; + this._keypressTimeout; + this._location = _window$1.location; + this._lastHref = this._location && this._location.href; + + this._resetBackoff(); // eslint-disable-next-line guard-for-in + + + for (var method in this._originalConsole) { + this._originalConsoleMethods[method] = this._originalConsole[method]; + } +} +/* + * The core Raven singleton + * + * @this {Raven} + */ + + +Raven$1.prototype = { + // Hardcode version string so that raven source can be loaded directly via + // webpack (using a build step causes webpack #1617). Grunt verifies that + // this value matches package.json during build. + // See: https://github.com/getsentry/raven-js/issues/465 + VERSION: '3.22.2', + debug: false, + TraceKit: tracekit, + // alias to TraceKit + + /* + * Configure Raven with a DSN and extra options + * + * @param {string} dsn The public Sentry DSN + * @param {object} options Set of global options [optional] + * @return {Raven} + */ + config: function config(dsn, options) { + var self = this; + + if (self._globalServer) { + this._logDebug('error', 'Error: Raven has already been configured'); + + return self; + } + + if (!dsn) return self; + var globalOptions = self._globalOptions; // merge in options + + if (options) { + each(options, function (key, value) { + // tags and extra are special and need to be put into context + if (key === 'tags' || key === 'extra' || key === 'user') { + self._globalContext[key] = value; + } else { + globalOptions[key] = value; + } + }); + } + + self.setDSN(dsn); // "Script error." is hard coded into browsers for errors that it can't read. + // this is the result of a script being pulled in from an external domain and CORS. + + globalOptions.ignoreErrors.push(/^Script error\.?$/); + globalOptions.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/); // join regexp rules into one big rule + + globalOptions.ignoreErrors = joinRegExp(globalOptions.ignoreErrors); + globalOptions.ignoreUrls = globalOptions.ignoreUrls.length ? joinRegExp(globalOptions.ignoreUrls) : false; + globalOptions.whitelistUrls = globalOptions.whitelistUrls.length ? joinRegExp(globalOptions.whitelistUrls) : false; + globalOptions.includePaths = joinRegExp(globalOptions.includePaths); + globalOptions.maxBreadcrumbs = Math.max(0, Math.min(globalOptions.maxBreadcrumbs || 100, 100)); // default and hard limit is 100 + + var autoBreadcrumbDefaults = { + xhr: true, + console: true, + dom: true, + location: true, + sentry: true + }; + var autoBreadcrumbs = globalOptions.autoBreadcrumbs; + + if ({}.toString.call(autoBreadcrumbs) === '[object Object]') { + autoBreadcrumbs = objectMerge(autoBreadcrumbDefaults, autoBreadcrumbs); + } else if (autoBreadcrumbs !== false) { + autoBreadcrumbs = autoBreadcrumbDefaults; + } + + globalOptions.autoBreadcrumbs = autoBreadcrumbs; + var instrumentDefaults = { + tryCatch: true + }; + var instrument = globalOptions.instrument; + + if ({}.toString.call(instrument) === '[object Object]') { + instrument = objectMerge(instrumentDefaults, instrument); + } else if (instrument !== false) { + instrument = instrumentDefaults; + } + + globalOptions.instrument = instrument; + tracekit.collectWindowErrors = !!globalOptions.collectWindowErrors; // return for chaining + + return self; + }, + + /* + * Installs a global window.onerror error handler + * to capture and report uncaught exceptions. + * At this point, install() is required to be called due + * to the way TraceKit is set up. + * + * @return {Raven} + */ + install: function install() { + var self = this; + + if (self.isSetup() && !self._isRavenInstalled) { + tracekit.report.subscribe(function () { + self._handleOnErrorStackInfo.apply(self, arguments); + }); + + self._patchFunctionToString(); + + if (self._globalOptions.instrument && self._globalOptions.instrument.tryCatch) { + self._instrumentTryCatch(); + } + + if (self._globalOptions.autoBreadcrumbs) self._instrumentBreadcrumbs(); // Install all of the plugins + + self._drainPlugins(); + + self._isRavenInstalled = true; + } + + Error.stackTraceLimit = self._globalOptions.stackTraceLimit; + return this; + }, + + /* + * Set the DSN (can be called multiple time unlike config) + * + * @param {string} dsn The public Sentry DSN + */ + setDSN: function setDSN(dsn) { + var self = this, + uri = self._parseDSN(dsn), + lastSlash = uri.path.lastIndexOf('/'), + path = uri.path.substr(1, lastSlash); + + self._dsn = dsn; + self._globalKey = uri.user; + self._globalSecret = uri.pass && uri.pass.substr(1); + self._globalProject = uri.path.substr(lastSlash + 1); + self._globalServer = self._getGlobalServer(uri); + self._globalEndpoint = self._globalServer + '/' + path + 'api/' + self._globalProject + '/store/'; // Reset backoff state since we may be pointing at a + // new project/server + + this._resetBackoff(); + }, + + /* + * Wrap code within a context so Raven can capture errors + * reliably across domains that is executed immediately. + * + * @param {object} options A specific set of options for this context [optional] + * @param {function} func The callback to be immediately executed within the context + * @param {array} args An array of arguments to be called with the callback [optional] + */ + context: function context(options, func, args) { + if (isFunction(options)) { + args = func || []; + func = options; + options = undefined; + } + + return this.wrap(options, func).apply(this, args); + }, + + /* + * Wrap code within a context and returns back a new function to be executed + * + * @param {object} options A specific set of options for this context [optional] + * @param {function} func The function to be wrapped in a new context + * @param {function} func A function to call before the try/catch wrapper [optional, private] + * @return {function} The newly wrapped functions with a context + */ + wrap: function wrap(options, func, _before) { + var self = this; // 1 argument has been passed, and it's not a function + // so just return it + + if (isUndefined(func) && !isFunction(options)) { + return options; + } // options is optional + + + if (isFunction(options)) { + func = options; + options = undefined; + } // At this point, we've passed along 2 arguments, and the second one + // is not a function either, so we'll just return the second argument. + + + if (!isFunction(func)) { + return func; + } // We don't wanna wrap it twice! + + + try { + if (func.__raven__) { + return func; + } // If this has already been wrapped in the past, return that + + + if (func.__raven_wrapper__) { + return func.__raven_wrapper__; + } + } catch (e) { + // Just accessing custom props in some Selenium environments + // can cause a "Permission denied" exception (see raven-js#495). + // Bail on wrapping and return the function as-is (defers to window.onerror). + return func; + } + + function wrapped() { + var args = [], + i = arguments.length, + deep = !options || options && options.deep !== false; + + if (_before && isFunction(_before)) { + _before.apply(this, arguments); + } // Recursively wrap all of a function's arguments that are + // functions themselves. + + + while (i--) { + args[i] = deep ? self.wrap(options, arguments[i]) : arguments[i]; + } + + try { + // Attempt to invoke user-land function + // NOTE: If you are a Sentry user, and you are seeing this stack frame, it + // means Raven caught an error invoking your application code. This is + // expected behavior and NOT indicative of a bug with Raven.js. + return func.apply(this, args); + } catch (e) { + self._ignoreNextOnError(); + + self.captureException(e, options); + throw e; + } + } // copy over properties of the old function + + + for (var property in func) { + if (hasKey(func, property)) { + wrapped[property] = func[property]; + } + } + + wrapped.prototype = func.prototype; + func.__raven_wrapper__ = wrapped; // Signal that this function has been wrapped/filled already + // for both debugging and to prevent it to being wrapped/filled twice + + wrapped.__raven__ = true; + wrapped.__orig__ = func; + return wrapped; + }, + + /* + * Uninstalls the global error handler. + * + * @return {Raven} + */ + uninstall: function uninstall() { + tracekit.report.uninstall(); + + this._unpatchFunctionToString(); + + this._restoreBuiltIns(); + + this._restoreConsole(); + + Error.stackTraceLimit = this._originalErrorStackTraceLimit; + this._isRavenInstalled = false; + return this; + }, + + /* + * Manually capture an exception and send it over to Sentry + * + * @param {error} ex An exception to be logged + * @param {object} options A specific set of options for this error [optional] + * @return {Raven} + */ + captureException: function captureException(ex, options) { + options = objectMerge({ + trimHeadFrames: 0 + }, options ? options : {}); // Cases for sending ex as a message, rather than an exception + + var isNotError = !isError(ex); + var isNotErrorEvent = !isErrorEvent(ex); + var isErrorEventWithoutError = isErrorEvent(ex) && !ex.error; + + if (isNotError && isNotErrorEvent || isErrorEventWithoutError) { + return this.captureMessage(ex, objectMerge(options, { + stacktrace: true, + // if we fall back to captureMessage, default to attempting a new trace + trimHeadFrames: options.trimHeadFrames + 1 + })); + } // Get actual Error from ErrorEvent + + + if (isErrorEvent(ex)) ex = ex.error; // Store the raw exception object for potential debugging and introspection + + this._lastCapturedException = ex; // TraceKit.report will re-raise any exception passed to it, + // which means you have to wrap it in try/catch. Instead, we + // can wrap it here and only re-raise if TraceKit.report + // raises an exception different from the one we asked to + // report on. + + try { + var stack = tracekit.computeStackTrace(ex); + + this._handleStackInfo(stack, options); + } catch (ex1) { + if (ex !== ex1) { + throw ex1; + } + } + + return this; + }, + + /* + * Manually send a message to Sentry + * + * @param {string} msg A plain message to be captured in Sentry + * @param {object} options A specific set of options for this message [optional] + * @return {Raven} + */ + captureMessage: function captureMessage(msg, options) { + // config() automagically converts ignoreErrors from a list to a RegExp so we need to test for an + // early call; we'll error on the side of logging anything called before configuration since it's + // probably something you should see: + if (!!this._globalOptions.ignoreErrors.test && this._globalOptions.ignoreErrors.test(msg)) { + return; + } + + options = options || {}; + var data = objectMerge({ + message: msg + '' // Make sure it's actually a string + + }, options); + var ex; // Generate a "synthetic" stack trace from this point. + // NOTE: If you are a Sentry user, and you are seeing this stack frame, it is NOT indicative + // of a bug with Raven.js. Sentry generates synthetic traces either by configuration, + // or if it catches a thrown object without a "stack" property. + + try { + throw new Error(msg); + } catch (ex1) { + ex = ex1; + } // null exception name so `Error` isn't prefixed to msg + + + ex.name = null; + var stack = tracekit.computeStackTrace(ex); // stack[0] is `throw new Error(msg)` call itself, we are interested in the frame that was just before that, stack[1] + + var initialCall = isArray(stack.stack) && stack.stack[1]; + var fileurl = initialCall && initialCall.url || ''; + + if (!!this._globalOptions.ignoreUrls.test && this._globalOptions.ignoreUrls.test(fileurl)) { + return; + } + + if (!!this._globalOptions.whitelistUrls.test && !this._globalOptions.whitelistUrls.test(fileurl)) { + return; + } + + if (this._globalOptions.stacktrace || options && options.stacktrace) { + options = objectMerge({ + // fingerprint on msg, not stack trace (legacy behavior, could be + // revisited) + fingerprint: msg, + // since we know this is a synthetic trace, the top N-most frames + // MUST be from Raven.js, so mark them as in_app later by setting + // trimHeadFrames + trimHeadFrames: (options.trimHeadFrames || 0) + 1 + }, options); + + var frames = this._prepareFrames(stack, options); + + data.stacktrace = { + // Sentry expects frames oldest to newest + frames: frames.reverse() + }; + } // Fire away! + + + this._send(data); + + return this; + }, + captureBreadcrumb: function captureBreadcrumb(obj) { + var crumb = objectMerge({ + timestamp: now() / 1000 + }, obj); + + if (isFunction(this._globalOptions.breadcrumbCallback)) { + var result = this._globalOptions.breadcrumbCallback(crumb); + + if (isObject(result) && !isEmptyObject(result)) { + crumb = result; + } else if (result === false) { + return this; + } + } + + this._breadcrumbs.push(crumb); + + if (this._breadcrumbs.length > this._globalOptions.maxBreadcrumbs) { + this._breadcrumbs.shift(); + } + + return this; + }, + addPlugin: function addPlugin(plugin + /*arg1, arg2, ... argN*/ + ) { + var pluginArgs = [].slice.call(arguments, 1); + + this._plugins.push([plugin, pluginArgs]); + + if (this._isRavenInstalled) { + this._drainPlugins(); + } + + return this; + }, + + /* + * Set/clear a user to be sent along with the payload. + * + * @param {object} user An object representing user data [optional] + * @return {Raven} + */ + setUserContext: function setUserContext(user) { + // Intentionally do not merge here since that's an unexpected behavior. + this._globalContext.user = user; + return this; + }, + + /* + * Merge extra attributes to be sent along with the payload. + * + * @param {object} extra An object representing extra data [optional] + * @return {Raven} + */ + setExtraContext: function setExtraContext(extra) { + this._mergeContext('extra', extra); + + return this; + }, + + /* + * Merge tags to be sent along with the payload. + * + * @param {object} tags An object representing tags [optional] + * @return {Raven} + */ + setTagsContext: function setTagsContext(tags) { + this._mergeContext('tags', tags); + + return this; + }, + + /* + * Clear all of the context. + * + * @return {Raven} + */ + clearContext: function clearContext() { + this._globalContext = {}; + return this; + }, + + /* + * Get a copy of the current context. This cannot be mutated. + * + * @return {object} copy of context + */ + getContext: function getContext() { + // lol javascript + return JSON.parse(stringify_1(this._globalContext)); + }, + + /* + * Set environment of application + * + * @param {string} environment Typically something like 'production'. + * @return {Raven} + */ + setEnvironment: function setEnvironment(environment) { + this._globalOptions.environment = environment; + return this; + }, + + /* + * Set release version of application + * + * @param {string} release Typically something like a git SHA to identify version + * @return {Raven} + */ + setRelease: function setRelease(release) { + this._globalOptions.release = release; + return this; + }, + + /* + * Set the dataCallback option + * + * @param {function} callback The callback to run which allows the + * data blob to be mutated before sending + * @return {Raven} + */ + setDataCallback: function setDataCallback(callback) { + var original = this._globalOptions.dataCallback; + this._globalOptions.dataCallback = keepOriginalCallback(original, callback); + return this; + }, + + /* + * Set the breadcrumbCallback option + * + * @param {function} callback The callback to run which allows filtering + * or mutating breadcrumbs + * @return {Raven} + */ + setBreadcrumbCallback: function setBreadcrumbCallback(callback) { + var original = this._globalOptions.breadcrumbCallback; + this._globalOptions.breadcrumbCallback = keepOriginalCallback(original, callback); + return this; + }, + + /* + * Set the shouldSendCallback option + * + * @param {function} callback The callback to run which allows + * introspecting the blob before sending + * @return {Raven} + */ + setShouldSendCallback: function setShouldSendCallback(callback) { + var original = this._globalOptions.shouldSendCallback; + this._globalOptions.shouldSendCallback = keepOriginalCallback(original, callback); + return this; + }, + + /** + * Override the default HTTP transport mechanism that transmits data + * to the Sentry server. + * + * @param {function} transport Function invoked instead of the default + * `makeRequest` handler. + * + * @return {Raven} + */ + setTransport: function setTransport(transport) { + this._globalOptions.transport = transport; + return this; + }, + + /* + * Get the latest raw exception that was captured by Raven. + * + * @return {error} + */ + lastException: function lastException() { + return this._lastCapturedException; + }, + + /* + * Get the last event id + * + * @return {string} + */ + lastEventId: function lastEventId() { + return this._lastEventId; + }, + + /* + * Determine if Raven is setup and ready to go. + * + * @return {boolean} + */ + isSetup: function isSetup() { + if (!this._hasJSON) return false; // needs JSON support + + if (!this._globalServer) { + if (!this.ravenNotConfiguredError) { + this.ravenNotConfiguredError = true; + + this._logDebug('error', 'Error: Raven has not been configured.'); + } + + return false; + } + + return true; + }, + afterLoad: function afterLoad() { + // TODO: remove window dependence? + // Attempt to initialize Raven on load + var RavenConfig = _window$1.RavenConfig; + + if (RavenConfig) { + this.config(RavenConfig.dsn, RavenConfig.config).install(); + } + }, + showReportDialog: function showReportDialog(options) { + if (!_document // doesn't work without a document (React native) + ) return; + options = options || {}; + var lastEventId = options.eventId || this.lastEventId(); + + if (!lastEventId) { + throw new configError('Missing eventId'); + } + + var dsn = options.dsn || this._dsn; + + if (!dsn) { + throw new configError('Missing DSN'); + } + + var encode = encodeURIComponent; + var qs = ''; + qs += '?eventId=' + encode(lastEventId); + qs += '&dsn=' + encode(dsn); + var user = options.user || this._globalContext.user; + + if (user) { + if (user.name) qs += '&name=' + encode(user.name); + if (user.email) qs += '&email=' + encode(user.email); + } + + var globalServer = this._getGlobalServer(this._parseDSN(dsn)); + + var script = _document.createElement('script'); + + script.async = true; + script.src = globalServer + '/api/embed/error-page/' + qs; + + (_document.head || _document.body).appendChild(script); + }, + + /**** Private functions ****/ + _ignoreNextOnError: function _ignoreNextOnError() { + var self = this; + this._ignoreOnError += 1; + setTimeout(function () { + // onerror should trigger before setTimeout + self._ignoreOnError -= 1; + }); + }, + _triggerEvent: function _triggerEvent(eventType, options) { + // NOTE: `event` is a native browser thing, so let's avoid conflicting wiht it + var evt, key; + if (!this._hasDocument) return; + options = options || {}; + eventType = 'raven' + eventType.substr(0, 1).toUpperCase() + eventType.substr(1); + + if (_document.createEvent) { + evt = _document.createEvent('HTMLEvents'); + evt.initEvent(eventType, true, true); + } else { + evt = _document.createEventObject(); + evt.eventType = eventType; + } + + for (key in options) { + if (hasKey(options, key)) { + evt[key] = options[key]; + } + } + + if (_document.createEvent) { + // IE9 if standards + _document.dispatchEvent(evt); + } else { + // IE8 regardless of Quirks or Standards + // IE9 if quirks + try { + _document.fireEvent('on' + evt.eventType.toLowerCase(), evt); + } catch (e) {// Do nothing + } + } + }, + + /** + * Wraps addEventListener to capture UI breadcrumbs + * @param evtName the event name (e.g. "click") + * @returns {Function} + * @private + */ + _breadcrumbEventHandler: function _breadcrumbEventHandler(evtName) { + var self = this; + return function (evt) { + // reset keypress timeout; e.g. triggering a 'click' after + // a 'keypress' will reset the keypress debounce so that a new + // set of keypresses can be recorded + self._keypressTimeout = null; // It's possible this handler might trigger multiple times for the same + // event (e.g. event propagation through node ancestors). Ignore if we've + // already captured the event. + + if (self._lastCapturedEvent === evt) return; + self._lastCapturedEvent = evt; // try/catch both: + // - accessing evt.target (see getsentry/raven-js#838, #768) + // - `htmlTreeAsString` because it's complex, and just accessing the DOM incorrectly + // can throw an exception in some circumstances. + + var target; + + try { + target = htmlTreeAsString(evt.target); + } catch (e) { + target = ''; + } + + self.captureBreadcrumb({ + category: 'ui.' + evtName, + // e.g. ui.click, ui.input + message: target + }); + }; + }, + + /** + * Wraps addEventListener to capture keypress UI events + * @returns {Function} + * @private + */ + _keypressEventHandler: function _keypressEventHandler() { + var self = this, + debounceDuration = 1000; // milliseconds + // TODO: if somehow user switches keypress target before + // debounce timeout is triggered, we will only capture + // a single breadcrumb from the FIRST target (acceptable?) + + return function (evt) { + var target; + + try { + target = evt.target; + } catch (e) { + // just accessing event properties can throw an exception in some rare circumstances + // see: https://github.com/getsentry/raven-js/issues/838 + return; + } + + var tagName = target && target.tagName; // only consider keypress events on actual input elements + // this will disregard keypresses targeting body (e.g. tabbing + // through elements, hotkeys, etc) + + if (!tagName || tagName !== 'INPUT' && tagName !== 'TEXTAREA' && !target.isContentEditable) return; // record first keypress in a series, but ignore subsequent + // keypresses until debounce clears + + var timeout = self._keypressTimeout; + + if (!timeout) { + self._breadcrumbEventHandler('input')(evt); + } + + clearTimeout(timeout); + self._keypressTimeout = setTimeout(function () { + self._keypressTimeout = null; + }, debounceDuration); + }; + }, + + /** + * Captures a breadcrumb of type "navigation", normalizing input URLs + * @param to the originating URL + * @param from the target URL + * @private + */ + _captureUrlChange: function _captureUrlChange(from, to) { + var parsedLoc = parseUrl(this._location.href); + var parsedTo = parseUrl(to); + var parsedFrom = parseUrl(from); // because onpopstate only tells you the "new" (to) value of location.href, and + // not the previous (from) value, we need to track the value of the current URL + // state ourselves + + this._lastHref = to; // Use only the path component of the URL if the URL matches the current + // document (almost all the time when using pushState) + + if (parsedLoc.protocol === parsedTo.protocol && parsedLoc.host === parsedTo.host) to = parsedTo.relative; + if (parsedLoc.protocol === parsedFrom.protocol && parsedLoc.host === parsedFrom.host) from = parsedFrom.relative; + this.captureBreadcrumb({ + category: 'navigation', + data: { + to: to, + from: from + } + }); + }, + _patchFunctionToString: function _patchFunctionToString() { + var self = this; + self._originalFunctionToString = Function.prototype.toString; // eslint-disable-next-line no-extend-native + + Function.prototype.toString = function () { + if (typeof this === 'function' && this.__raven__) { + return self._originalFunctionToString.apply(this.__orig__, arguments); + } + + return self._originalFunctionToString.apply(this, arguments); + }; + }, + _unpatchFunctionToString: function _unpatchFunctionToString() { + if (this._originalFunctionToString) { + // eslint-disable-next-line no-extend-native + Function.prototype.toString = this._originalFunctionToString; + } + }, + + /** + * Wrap timer functions and event targets to catch errors and provide + * better metadata. + */ + _instrumentTryCatch: function _instrumentTryCatch() { + var self = this; + var wrappedBuiltIns = self._wrappedBuiltIns; + + function wrapTimeFn(orig) { + return function (fn, t) { + // preserve arity + // Make a copy of the arguments to prevent deoptimization + // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments + var args = new Array(arguments.length); + + for (var i = 0; i < args.length; ++i) { + args[i] = arguments[i]; + } + + var originalCallback = args[0]; + + if (isFunction(originalCallback)) { + args[0] = self.wrap(originalCallback); + } // IE < 9 doesn't support .call/.apply on setInterval/setTimeout, but it + // also supports only two arguments and doesn't care what this is, so we + // can just call the original function directly. + + + if (orig.apply) { + return orig.apply(this, args); + } else { + return orig(args[0], args[1]); + } + }; + } + + var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; + + function wrapEventTarget(global) { + var proto = _window$1[global] && _window$1[global].prototype; + + if (proto && proto.hasOwnProperty && proto.hasOwnProperty('addEventListener')) { + fill(proto, 'addEventListener', function (orig) { + return function (evtName, fn, capture, secure) { + // preserve arity + try { + if (fn && fn.handleEvent) { + fn.handleEvent = self.wrap(fn.handleEvent); + } + } catch (err) {} // can sometimes get 'Permission denied to access property "handle Event' + // More breadcrumb DOM capture ... done here and not in `_instrumentBreadcrumbs` + // so that we don't have more than one wrapper function + + + var before, clickHandler, keypressHandler; + + if (autoBreadcrumbs && autoBreadcrumbs.dom && (global === 'EventTarget' || global === 'Node')) { + // NOTE: generating multiple handlers per addEventListener invocation, should + // revisit and verify we can just use one (almost certainly) + clickHandler = self._breadcrumbEventHandler('click'); + keypressHandler = self._keypressEventHandler(); + + before = function before(evt) { + // need to intercept every DOM event in `before` argument, in case that + // same wrapped method is re-used for different events (e.g. mousemove THEN click) + // see #724 + if (!evt) return; + var eventType; + + try { + eventType = evt.type; + } catch (e) { + // just accessing event properties can throw an exception in some rare circumstances + // see: https://github.com/getsentry/raven-js/issues/838 + return; + } + + if (eventType === 'click') return clickHandler(evt);else if (eventType === 'keypress') return keypressHandler(evt); + }; + } + + return orig.call(this, evtName, self.wrap(fn, undefined, before), capture, secure); + }; + }, wrappedBuiltIns); + fill(proto, 'removeEventListener', function (orig) { + return function (evt, fn, capture, secure) { + try { + fn = fn && (fn.__raven_wrapper__ ? fn.__raven_wrapper__ : fn); + } catch (e) {// ignore, accessing __raven_wrapper__ will throw in some Selenium environments + } + + return orig.call(this, evt, fn, capture, secure); + }; + }, wrappedBuiltIns); + } + } + + fill(_window$1, 'setTimeout', wrapTimeFn, wrappedBuiltIns); + fill(_window$1, 'setInterval', wrapTimeFn, wrappedBuiltIns); + + if (_window$1.requestAnimationFrame) { + fill(_window$1, 'requestAnimationFrame', function (orig) { + return function (cb) { + return orig(self.wrap(cb)); + }; + }, wrappedBuiltIns); + } // event targets borrowed from bugsnag-js: + // https://github.com/bugsnag/bugsnag-js/blob/master/src/bugsnag.js#L666 + + + var eventTargets = ['EventTarget', 'Window', 'Node', 'ApplicationCache', 'AudioTrackList', 'ChannelMergerNode', 'CryptoOperation', 'EventSource', 'FileReader', 'HTMLUnknownElement', 'IDBDatabase', 'IDBRequest', 'IDBTransaction', 'KeyOperation', 'MediaController', 'MessagePort', 'ModalWindow', 'Notification', 'SVGElementInstance', 'Screen', 'TextTrack', 'TextTrackCue', 'TextTrackList', 'WebSocket', 'WebSocketWorker', 'Worker', 'XMLHttpRequest', 'XMLHttpRequestEventTarget', 'XMLHttpRequestUpload']; + + for (var i = 0; i < eventTargets.length; i++) { + wrapEventTarget(eventTargets[i]); + } + }, + + /** + * Instrument browser built-ins w/ breadcrumb capturing + * - XMLHttpRequests + * - DOM interactions (click/typing) + * - window.location changes + * - console + * + * Can be disabled or individually configured via the `autoBreadcrumbs` config option + */ + _instrumentBreadcrumbs: function _instrumentBreadcrumbs() { + var self = this; + var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; + var wrappedBuiltIns = self._wrappedBuiltIns; + + function wrapProp(prop, xhr) { + if (prop in xhr && isFunction(xhr[prop])) { + fill(xhr, prop, function (orig) { + return self.wrap(orig); + }); // intentionally don't track filled methods on XHR instances + } + } + + if (autoBreadcrumbs.xhr && 'XMLHttpRequest' in _window$1) { + var xhrproto = XMLHttpRequest.prototype; + fill(xhrproto, 'open', function (origOpen) { + return function (method, url) { + // preserve arity + // if Sentry key appears in URL, don't capture + if (isString(url) && url.indexOf(self._globalKey) === -1) { + this.__raven_xhr = { + method: method, + url: url, + status_code: null + }; + } + + return origOpen.apply(this, arguments); + }; + }, wrappedBuiltIns); + fill(xhrproto, 'send', function (origSend) { + return function () { + // preserve arity + var xhr = this; + + function onreadystatechangeHandler() { + if (xhr.__raven_xhr && xhr.readyState === 4) { + try { + // touching statusCode in some platforms throws + // an exception + xhr.__raven_xhr.status_code = xhr.status; + } catch (e) { + /* do nothing */ + } + + self.captureBreadcrumb({ + type: 'http', + category: 'xhr', + data: xhr.__raven_xhr + }); + } + } + + var props = ['onload', 'onerror', 'onprogress']; + + for (var j = 0; j < props.length; j++) { + wrapProp(props[j], xhr); + } + + if ('onreadystatechange' in xhr && isFunction(xhr.onreadystatechange)) { + fill(xhr, 'onreadystatechange', function (orig) { + return self.wrap(orig, undefined, onreadystatechangeHandler); + } + /* intentionally don't track this instrumentation */ + ); + } else { + // if onreadystatechange wasn't actually set by the page on this xhr, we + // are free to set our own and capture the breadcrumb + xhr.onreadystatechange = onreadystatechangeHandler; + } + + return origSend.apply(this, arguments); + }; + }, wrappedBuiltIns); + } + + if (autoBreadcrumbs.xhr && supportsFetch()) { + fill(_window$1, 'fetch', function (origFetch) { + return function () { + // preserve arity + // Make a copy of the arguments to prevent deoptimization + // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments + var args = new Array(arguments.length); + + for (var i = 0; i < args.length; ++i) { + args[i] = arguments[i]; + } + + var fetchInput = args[0]; + var method = 'GET'; + var url; + + if (typeof fetchInput === 'string') { + url = fetchInput; + } else if ('Request' in _window$1 && fetchInput instanceof _window$1.Request) { + url = fetchInput.url; + + if (fetchInput.method) { + method = fetchInput.method; + } + } else { + url = '' + fetchInput; + } // if Sentry key appears in URL, don't capture, as it's our own request + + + if (url.indexOf(self._globalKey) !== -1) { + return origFetch.apply(this, args); + } + + if (args[1] && args[1].method) { + method = args[1].method; + } + + var fetchData = { + method: method, + url: url, + status_code: null + }; + return origFetch.apply(this, args).then(function (response) { + fetchData.status_code = response.status; + self.captureBreadcrumb({ + type: 'http', + category: 'fetch', + data: fetchData + }); + return response; + }); + }; + }, wrappedBuiltIns); + } // Capture breadcrumbs from any click that is unhandled / bubbled up all the way + // to the document. Do this before we instrument addEventListener. + + + if (autoBreadcrumbs.dom && this._hasDocument) { + if (_document.addEventListener) { + _document.addEventListener('click', self._breadcrumbEventHandler('click'), false); + + _document.addEventListener('keypress', self._keypressEventHandler(), false); + } else { + // IE8 Compatibility + _document.attachEvent('onclick', self._breadcrumbEventHandler('click')); + + _document.attachEvent('onkeypress', self._keypressEventHandler()); + } + } // record navigation (URL) changes + // NOTE: in Chrome App environment, touching history.pushState, *even inside + // a try/catch block*, will cause Chrome to output an error to console.error + // borrowed from: https://github.com/angular/angular.js/pull/13945/files + + + var chrome = _window$1.chrome; + var isChromePackagedApp = chrome && chrome.app && chrome.app.runtime; + var hasPushAndReplaceState = !isChromePackagedApp && _window$1.history && history.pushState && history.replaceState; + + if (autoBreadcrumbs.location && hasPushAndReplaceState) { + // TODO: remove onpopstate handler on uninstall() + var oldOnPopState = _window$1.onpopstate; + + _window$1.onpopstate = function () { + var currentHref = self._location.href; + + self._captureUrlChange(self._lastHref, currentHref); + + if (oldOnPopState) { + return oldOnPopState.apply(this, arguments); + } + }; + + var historyReplacementFunction = function historyReplacementFunction(origHistFunction) { + // note history.pushState.length is 0; intentionally not declaring + // params to preserve 0 arity + return function () + /* state, title, url */ + { + var url = arguments.length > 2 ? arguments[2] : undefined; // url argument is optional + + if (url) { + // coerce to string (this is what pushState does) + self._captureUrlChange(self._lastHref, url + ''); + } + + return origHistFunction.apply(this, arguments); + }; + }; + + fill(history, 'pushState', historyReplacementFunction, wrappedBuiltIns); + fill(history, 'replaceState', historyReplacementFunction, wrappedBuiltIns); + } + + if (autoBreadcrumbs.console && 'console' in _window$1 && console.log) { + // console + var consoleMethodCallback = function consoleMethodCallback(msg, data) { + self.captureBreadcrumb({ + message: msg, + level: data.level, + category: 'console' + }); + }; + + each(['debug', 'info', 'warn', 'error', 'log'], function (_, level) { + wrapConsoleMethod(console, level, consoleMethodCallback); + }); + } + }, + _restoreBuiltIns: function _restoreBuiltIns() { + // restore any wrapped builtins + var builtin; + + while (this._wrappedBuiltIns.length) { + builtin = this._wrappedBuiltIns.shift(); + var obj = builtin[0], + name = builtin[1], + orig = builtin[2]; + obj[name] = orig; + } + }, + _restoreConsole: function _restoreConsole() { + // eslint-disable-next-line guard-for-in + for (var method in this._originalConsoleMethods) { + this._originalConsole[method] = this._originalConsoleMethods[method]; + } + }, + _drainPlugins: function _drainPlugins() { + var self = this; // FIX ME TODO + + each(this._plugins, function (_, plugin) { + var installer = plugin[0]; + var args = plugin[1]; + installer.apply(self, [self].concat(args)); + }); + }, + _parseDSN: function _parseDSN(str) { + var m = dsnPattern.exec(str), + dsn = {}, + i = 7; + + try { + while (i--) { + dsn[dsnKeys[i]] = m[i] || ''; + } + } catch (e) { + throw new configError('Invalid DSN: ' + str); + } + + if (dsn.pass && !this._globalOptions.allowSecretKey) { + throw new configError('Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key'); + } + + return dsn; + }, + _getGlobalServer: function _getGlobalServer(uri) { + // assemble the endpoint from the uri pieces + var globalServer = '//' + uri.host + (uri.port ? ':' + uri.port : ''); + + if (uri.protocol) { + globalServer = uri.protocol + ':' + globalServer; + } + + return globalServer; + }, + _handleOnErrorStackInfo: function _handleOnErrorStackInfo() { + // if we are intentionally ignoring errors via onerror, bail out + if (!this._ignoreOnError) { + this._handleStackInfo.apply(this, arguments); + } + }, + _handleStackInfo: function _handleStackInfo(stackInfo, options) { + var frames = this._prepareFrames(stackInfo, options); + + this._triggerEvent('handle', { + stackInfo: stackInfo, + options: options + }); + + this._processException(stackInfo.name, stackInfo.message, stackInfo.url, stackInfo.lineno, frames, options); + }, + _prepareFrames: function _prepareFrames(stackInfo, options) { + var self = this; + var frames = []; + + if (stackInfo.stack && stackInfo.stack.length) { + each(stackInfo.stack, function (i, stack) { + var frame = self._normalizeFrame(stack, stackInfo.url); + + if (frame) { + frames.push(frame); + } + }); // e.g. frames captured via captureMessage throw + + if (options && options.trimHeadFrames) { + for (var j = 0; j < options.trimHeadFrames && j < frames.length; j++) { + frames[j].in_app = false; + } + } + } + + frames = frames.slice(0, this._globalOptions.stackTraceLimit); + return frames; + }, + _normalizeFrame: function _normalizeFrame(frame, stackInfoUrl) { + // normalize the frames data + var normalized = { + filename: frame.url, + lineno: frame.line, + colno: frame.column, + function: frame.func || '?' + }; // Case when we don't have any information about the error + // E.g. throwing a string or raw object, instead of an `Error` in Firefox + // Generating synthetic error doesn't add any value here + // + // We should probably somehow let a user know that they should fix their code + + if (!frame.url) { + normalized.filename = stackInfoUrl; // fallback to whole stacks url from onerror handler + } + + normalized.in_app = !( // determine if an exception came from outside of our app + // first we check the global includePaths list. + !!this._globalOptions.includePaths.test && !this._globalOptions.includePaths.test(normalized.filename) || // Now we check for fun, if the function name is Raven or TraceKit + /(Raven|TraceKit)\./.test(normalized['function']) || // finally, we do a last ditch effort and check for raven.min.js + /raven\.(min\.)?js$/.test(normalized.filename)); + return normalized; + }, + _processException: function _processException(type, message, fileurl, lineno, frames, options) { + var prefixedMessage = (type ? type + ': ' : '') + (message || ''); + + if (!!this._globalOptions.ignoreErrors.test && (this._globalOptions.ignoreErrors.test(message) || this._globalOptions.ignoreErrors.test(prefixedMessage))) { + return; + } + + var stacktrace; + + if (frames && frames.length) { + fileurl = frames[0].filename || fileurl; // Sentry expects frames oldest to newest + // and JS sends them as newest to oldest + + frames.reverse(); + stacktrace = { + frames: frames + }; + } else if (fileurl) { + stacktrace = { + frames: [{ + filename: fileurl, + lineno: lineno, + in_app: true + }] + }; + } + + if (!!this._globalOptions.ignoreUrls.test && this._globalOptions.ignoreUrls.test(fileurl)) { + return; + } + + if (!!this._globalOptions.whitelistUrls.test && !this._globalOptions.whitelistUrls.test(fileurl)) { + return; + } + + var data = objectMerge({ + // sentry.interfaces.Exception + exception: { + values: [{ + type: type, + value: message, + stacktrace: stacktrace + }] + }, + culprit: fileurl + }, options); // Fire away! + + this._send(data); + }, + _trimPacket: function _trimPacket(data) { + // For now, we only want to truncate the two different messages + // but this could/should be expanded to just trim everything + var max = this._globalOptions.maxMessageLength; + + if (data.message) { + data.message = truncate(data.message, max); + } + + if (data.exception) { + var exception = data.exception.values[0]; + exception.value = truncate(exception.value, max); + } + + var request = data.request; + + if (request) { + if (request.url) { + request.url = truncate(request.url, this._globalOptions.maxUrlLength); + } + + if (request.Referer) { + request.Referer = truncate(request.Referer, this._globalOptions.maxUrlLength); + } + } + + if (data.breadcrumbs && data.breadcrumbs.values) this._trimBreadcrumbs(data.breadcrumbs); + return data; + }, + + /** + * Truncate breadcrumb values (right now just URLs) + */ + _trimBreadcrumbs: function _trimBreadcrumbs(breadcrumbs) { + // known breadcrumb properties with urls + // TODO: also consider arbitrary prop values that start with (https?)?:// + var urlProps = ['to', 'from', 'url'], + urlProp, + crumb, + data; + + for (var i = 0; i < breadcrumbs.values.length; ++i) { + crumb = breadcrumbs.values[i]; + if (!crumb.hasOwnProperty('data') || !isObject(crumb.data) || objectFrozen(crumb.data)) continue; + data = objectMerge({}, crumb.data); + + for (var j = 0; j < urlProps.length; ++j) { + urlProp = urlProps[j]; + + if (data.hasOwnProperty(urlProp) && data[urlProp]) { + data[urlProp] = truncate(data[urlProp], this._globalOptions.maxUrlLength); + } + } + + breadcrumbs.values[i].data = data; + } + }, + _getHttpData: function _getHttpData() { + if (!this._hasNavigator && !this._hasDocument) return; + var httpData = {}; + + if (this._hasNavigator && _navigator.userAgent) { + httpData.headers = { + 'User-Agent': navigator.userAgent + }; + } // Check in `window` instead of `document`, as we may be in ServiceWorker environment + + + if (_window$1.location && _window$1.location.href) { + httpData.url = _window$1.location.href; + } + + if (this._hasDocument && _document.referrer) { + if (!httpData.headers) httpData.headers = {}; + httpData.headers.Referer = _document.referrer; + } + + return httpData; + }, + _resetBackoff: function _resetBackoff() { + this._backoffDuration = 0; + this._backoffStart = null; + }, + _shouldBackoff: function _shouldBackoff() { + return this._backoffDuration && now() - this._backoffStart < this._backoffDuration; + }, + + /** + * Returns true if the in-process data payload matches the signature + * of the previously-sent data + * + * NOTE: This has to be done at this level because TraceKit can generate + * data from window.onerror WITHOUT an exception object (IE8, IE9, + * other old browsers). This can take the form of an "exception" + * data object with a single frame (derived from the onerror args). + */ + _isRepeatData: function _isRepeatData(current) { + var last = this._lastData; + if (!last || current.message !== last.message || // defined for captureMessage + current.culprit !== last.culprit // defined for captureException/onerror + ) return false; // Stacktrace interface (i.e. from captureMessage) + + if (current.stacktrace || last.stacktrace) { + return isSameStacktrace(current.stacktrace, last.stacktrace); + } else if (current.exception || last.exception) { + // Exception interface (i.e. from captureException/onerror) + return isSameException(current.exception, last.exception); + } + + return true; + }, + _setBackoffState: function _setBackoffState(request) { + // If we are already in a backoff state, don't change anything + if (this._shouldBackoff()) { + return; + } + + var status = request.status; // 400 - project_id doesn't exist or some other fatal + // 401 - invalid/revoked dsn + // 429 - too many requests + + if (!(status === 400 || status === 401 || status === 429)) return; + var retry; + + try { + // If Retry-After is not in Access-Control-Expose-Headers, most + // browsers will throw an exception trying to access it + if (supportsFetch()) { + retry = request.headers.get('Retry-After'); + } else { + retry = request.getResponseHeader('Retry-After'); + } // Retry-After is returned in seconds + + + retry = parseInt(retry, 10) * 1000; + } catch (e) { + /* eslint no-empty:0 */ + } + + this._backoffDuration = retry ? // If Sentry server returned a Retry-After value, use it + retry : // Otherwise, double the last backoff duration (starts at 1 sec) + this._backoffDuration * 2 || 1000; + this._backoffStart = now(); + }, + _send: function _send(data) { + var globalOptions = this._globalOptions; + + var baseData = { + project: this._globalProject, + logger: globalOptions.logger, + platform: 'javascript' + }, + httpData = this._getHttpData(); + + if (httpData) { + baseData.request = httpData; + } // HACK: delete `trimHeadFrames` to prevent from appearing in outbound payload + + + if (data.trimHeadFrames) delete data.trimHeadFrames; + data = objectMerge(baseData, data); // Merge in the tags and extra separately since objectMerge doesn't handle a deep merge + + data.tags = objectMerge(objectMerge({}, this._globalContext.tags), data.tags); + data.extra = objectMerge(objectMerge({}, this._globalContext.extra), data.extra); // Send along our own collected metadata with extra + + data.extra['session:duration'] = now() - this._startTime; + + if (this._breadcrumbs && this._breadcrumbs.length > 0) { + // intentionally make shallow copy so that additions + // to breadcrumbs aren't accidentally sent in this request + data.breadcrumbs = { + values: [].slice.call(this._breadcrumbs, 0) + }; + } + + if (this._globalContext.user) { + // sentry.interfaces.User + data.user = this._globalContext.user; + } // Include the environment if it's defined in globalOptions + + + if (globalOptions.environment) data.environment = globalOptions.environment; // Include the release if it's defined in globalOptions + + if (globalOptions.release) data.release = globalOptions.release; // Include server_name if it's defined in globalOptions + + if (globalOptions.serverName) data.server_name = globalOptions.serverName; // Cleanup empty properties before sending them to the server + + Object.keys(data).forEach(function (key) { + if (data[key] == null || data[key] === '' || isEmptyObject(data[key])) { + delete data[key]; + } + }); + + if (isFunction(globalOptions.dataCallback)) { + data = globalOptions.dataCallback(data) || data; + } // Why?????????? + + + if (!data || isEmptyObject(data)) { + return; + } // Check if the request should be filtered or not + + + if (isFunction(globalOptions.shouldSendCallback) && !globalOptions.shouldSendCallback(data)) { + return; + } // Backoff state: Sentry server previously responded w/ an error (e.g. 429 - too many requests), + // so drop requests until "cool-off" period has elapsed. + + + if (this._shouldBackoff()) { + this._logDebug('warn', 'Raven dropped error due to backoff: ', data); + + return; + } + + if (typeof globalOptions.sampleRate === 'number') { + if (Math.random() < globalOptions.sampleRate) { + this._sendProcessedPayload(data); + } + } else { + this._sendProcessedPayload(data); + } + }, + _getUuid: function _getUuid() { + return uuid4(); + }, + _sendProcessedPayload: function _sendProcessedPayload(data, callback) { + var self = this; + var globalOptions = this._globalOptions; + if (!this.isSetup()) return; // Try and clean up the packet before sending by truncating long values + + data = this._trimPacket(data); // ideally duplicate error testing should occur *before* dataCallback/shouldSendCallback, + // but this would require copying an un-truncated copy of the data packet, which can be + // arbitrarily deep (extra_data) -- could be worthwhile? will revisit + + if (!this._globalOptions.allowDuplicates && this._isRepeatData(data)) { + this._logDebug('warn', 'Raven dropped repeat event: ', data); + + return; + } // Send along an event_id if not explicitly passed. + // This event_id can be used to reference the error within Sentry itself. + // Set lastEventId after we know the error should actually be sent + + + this._lastEventId = data.event_id || (data.event_id = this._getUuid()); // Store outbound payload after trim + + this._lastData = data; + + this._logDebug('debug', 'Raven about to send:', data); + + var auth = { + sentry_version: '7', + sentry_client: 'raven-js/' + this.VERSION, + sentry_key: this._globalKey + }; + + if (this._globalSecret) { + auth.sentry_secret = this._globalSecret; + } + + var exception = data.exception && data.exception.values[0]; // only capture 'sentry' breadcrumb is autoBreadcrumbs is truthy + + if (this._globalOptions.autoBreadcrumbs && this._globalOptions.autoBreadcrumbs.sentry) { + this.captureBreadcrumb({ + category: 'sentry', + message: exception ? (exception.type ? exception.type + ': ' : '') + exception.value : data.message, + event_id: data.event_id, + level: data.level || 'error' // presume error unless specified + + }); + } + + var url = this._globalEndpoint; + + (globalOptions.transport || this._makeRequest).call(this, { + url: url, + auth: auth, + data: data, + options: globalOptions, + onSuccess: function success() { + self._resetBackoff(); + + self._triggerEvent('success', { + data: data, + src: url + }); + + callback && callback(); + }, + onError: function failure(error) { + self._logDebug('error', 'Raven transport failed to send: ', error); + + if (error.request) { + self._setBackoffState(error.request); + } + + self._triggerEvent('failure', { + data: data, + src: url + }); + + error = error || new Error('Raven send failed (no additional details provided)'); + callback && callback(error); + } + }); + }, + _makeRequest: function _makeRequest(opts) { + // Auth is intentionally sent as part of query string (NOT as custom HTTP header) to avoid preflight CORS requests + var url = opts.url + '?' + urlencode(opts.auth); + var evaluatedHeaders = null; + var evaluatedFetchParameters = {}; + + if (opts.options.headers) { + evaluatedHeaders = this._evaluateHash(opts.options.headers); + } + + if (opts.options.fetchParameters) { + evaluatedFetchParameters = this._evaluateHash(opts.options.fetchParameters); + } + + if (supportsFetch()) { + evaluatedFetchParameters.body = stringify_1(opts.data); + var defaultFetchOptions = objectMerge({}, this._fetchDefaults); + var fetchOptions = objectMerge(defaultFetchOptions, evaluatedFetchParameters); + + if (evaluatedHeaders) { + fetchOptions.headers = evaluatedHeaders; + } + + return _window$1.fetch(url, fetchOptions).then(function (response) { + if (response.ok) { + opts.onSuccess && opts.onSuccess(); + } else { + var error = new Error('Sentry error code: ' + response.status); // It's called request only to keep compatibility with XHR interface + // and not add more redundant checks in setBackoffState method + + error.request = response; + opts.onError && opts.onError(error); + } + })['catch'](function () { + opts.onError && opts.onError(new Error('Sentry error code: network unavailable')); + }); + } + + var request = _window$1.XMLHttpRequest && new _window$1.XMLHttpRequest(); + if (!request) return; // if browser doesn't support CORS (e.g. IE7), we are out of luck + + var hasCORS = 'withCredentials' in request || typeof XDomainRequest !== 'undefined'; + if (!hasCORS) return; + + if ('withCredentials' in request) { + request.onreadystatechange = function () { + if (request.readyState !== 4) { + return; + } else if (request.status === 200) { + opts.onSuccess && opts.onSuccess(); + } else if (opts.onError) { + var err = new Error('Sentry error code: ' + request.status); + err.request = request; + opts.onError(err); + } + }; + } else { + request = new XDomainRequest(); // xdomainrequest cannot go http -> https (or vice versa), + // so always use protocol relative + + url = url.replace(/^https?:/, ''); // onreadystatechange not supported by XDomainRequest + + if (opts.onSuccess) { + request.onload = opts.onSuccess; + } + + if (opts.onError) { + request.onerror = function () { + var err = new Error('Sentry error code: XDomainRequest'); + err.request = request; + opts.onError(err); + }; + } + } + + request.open('POST', url); + + if (evaluatedHeaders) { + each(evaluatedHeaders, function (key, value) { + request.setRequestHeader(key, value); + }); + } + + request.send(stringify_1(opts.data)); + }, + _evaluateHash: function _evaluateHash(hash) { + var evaluated = {}; + + for (var key in hash) { + if (hash.hasOwnProperty(key)) { + var value = hash[key]; + evaluated[key] = typeof value === 'function' ? value() : value; + } + } + + return evaluated; + }, + _logDebug: function _logDebug(level) { + if (this._originalConsoleMethods[level] && this.debug) { + // In IE<10 console methods do not have their own 'apply' method + Function.prototype.apply.call(this._originalConsoleMethods[level], this._originalConsole, [].slice.call(arguments, 1)); + } + }, + _mergeContext: function _mergeContext(key, context) { + if (isUndefined(context)) { + delete this._globalContext[key]; + } else { + this._globalContext[key] = objectMerge(this._globalContext[key] || {}, context); + } + } +}; // Deprecations + +Raven$1.prototype.setUser = Raven$1.prototype.setUserContext; +Raven$1.prototype.setReleaseContext = Raven$1.prototype.setRelease; +var raven = Raven$1; + +/** + * Enforces a single instance of the Raven client, and the + * main entry point for Raven. If you are a consumer of the + * Raven library, you SHOULD load this file (vs raven.js). + **/ +// This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) + +var _window = typeof window !== 'undefined' ? window : typeof commonjsGlobal !== 'undefined' ? commonjsGlobal : typeof self !== 'undefined' ? self : {}; + +var _Raven = _window.Raven; +var Raven = new raven(); +/* + * Allow multiple versions of Raven to be installed. + * Strip Raven from the global context and returns the instance. + * + * @return {Raven} + */ + +Raven.noConflict = function () { + _window.Raven = _Raven; + return Raven; +}; + +Raven.afterLoad(); +var singleton = Raven; + +/** + * Angular.js plugin + * + * Provides an $exceptionHandler for Angular.js + */ + +var wrappedCallback$1 = utils.wrappedCallback; // See https://github.com/angular/angular.js/blob/v1.4.7/src/minErr.js + +var angularPattern = /^\[((?:[$a-zA-Z0-9]+:)?(?:[$a-zA-Z0-9]+))\] (.*?)\n?(\S+)$/; +var moduleName = 'ngRaven'; + +function angularPlugin(Raven, angular) { + angular = angular || window.angular; + if (!angular) return; + + function RavenProvider() { + this.$get = ['$window', function ($window) { + return Raven; + }]; + } + + function ExceptionHandlerProvider($provide) { + $provide.decorator('$exceptionHandler', ['Raven', '$delegate', exceptionHandler]); + } + + function exceptionHandler(R, $delegate) { + return function (ex, cause) { + R.captureException(ex, { + extra: { + cause: cause + } + }); + $delegate(ex, cause); + }; + } + + angular.module(moduleName, []).provider('Raven', RavenProvider).config(['$provide', ExceptionHandlerProvider]); + Raven.setDataCallback(wrappedCallback$1(function (data) { + return angularPlugin._normalizeData(data); + })); +} + +angularPlugin._normalizeData = function (data) { + // We only care about mutating an exception + var exception = data.exception; + + if (exception) { + exception = exception.values[0]; + var matches = angularPattern.exec(exception.value); + + if (matches) { + // This type now becomes something like: $rootScope:inprog + exception.type = matches[1]; + exception.value = matches[2]; + data.message = exception.type + ': ' + exception.value; // auto set a new tag specifically for the angular error url + + data.extra.angularDocs = matches[3].substr(0, 250); + } + } + + return data; +}; + +angularPlugin.moduleName = moduleName; +var angular = angularPlugin; + +/** + * Ember.js plugin + * + * Patches event handler callbacks and ajax callbacks. + */ +function emberPlugin(Raven, Ember) { + Ember = Ember || window.Ember; // quit if Ember isn't on the page + + if (!Ember) return; + var _oldOnError = Ember.onerror; + + Ember.onerror = function EmberOnError(error) { + Raven.captureException(error); + + if (typeof _oldOnError === 'function') { + _oldOnError.call(this, error); + } + }; + + Ember.RSVP.on('error', function (reason) { + if (reason instanceof Error) { + Raven.captureException(reason, { + extra: { + context: 'Unhandled Promise error detected' + } + }); + } else { + Raven.captureMessage('Unhandled Promise error detected', { + extra: { + reason: reason + } + }); + } + }); +} + +var ember = emberPlugin; + +/** + * Vue.js 2.0 plugin + * + */ +function formatComponentName(vm) { + if (vm.$root === vm) { + return 'root instance'; + } + + var name = vm._isVue ? vm.$options.name || vm.$options._componentTag : vm.name; + return (name ? 'component <' + name + '>' : 'anonymous component') + (vm._isVue && vm.$options.__file ? ' at ' + vm.$options.__file : ''); +} + +function vuePlugin(Raven, Vue) { + Vue = Vue || window.Vue; // quit if Vue isn't on the page + + if (!Vue || !Vue.config) return; + var _oldOnError = Vue.config.errorHandler; + + Vue.config.errorHandler = function VueErrorHandler(error, vm, info) { + var metaData = {}; // vm and lifecycleHook are not always available + + if (Object.prototype.toString.call(vm) === '[object Object]') { + metaData.componentName = formatComponentName(vm); + metaData.propsData = vm.$options.propsData; + } + + if (typeof info !== 'undefined') { + metaData.lifecycleHook = info; + } + + Raven.captureException(error, { + extra: metaData + }); + + if (typeof _oldOnError === 'function') { + _oldOnError.call(this, error, vm, info); + } + }; +} + +var vue = vuePlugin; + +/* This file was generated by './scripts/generate-plugin-combinations.js'! */ + +singleton.addPlugin(angular).addPlugin(ember).addPlugin(vue); +var angular_ember_vue = {}; + +return angular_ember_vue; + +}))); diff --git a/dist/angular,ember,vue/raven.min.js b/dist/angular,ember,vue/raven.min.js new file mode 100644 index 000000000000..2ec8de56dcda --- /dev/null +++ b/dist/angular,ember,vue/raven.min.js @@ -0,0 +1,3 @@ +/*! Raven.js 3.22.2 (1b6187b) | github.com/getsentry/raven-js */ +!function(a,b){"object"==typeof exports&&"undefined"!=typeof module?module.exports=b():"function"==typeof define&&define.amd?define(b):a.Raven=b()}(this,function(){"use strict";function a(a,b){return b={exports:{}},a(b,b.exports),b.exports}function b(a){return(b="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(a){return typeof a}:function(a){return a&&"function"==typeof Symbol&&a.constructor===Symbol&&a!==Symbol.prototype?"symbol":typeof a})(a)}function c(a){return"object"===b(a)&&null!==a}function d(a){switch({}.toString.call(a)){case"[object Error]":return!0;case"[object Exception]":return!0;case"[object DOMException]":return!0;default:return a instanceof Error}}function e(a){return l()&&"[object ErrorEvent]"==={}.toString.call(a)}function f(a){return void 0===a}function g(a){return"function"==typeof a}function h(a){return"[object Object]"===Object.prototype.toString.call(a)}function i(a){return"[object String]"===Object.prototype.toString.call(a)}function j(a){return"[object Array]"===Object.prototype.toString.call(a)}function k(a){if(!h(a))return!1;for(var b in a)if(a.hasOwnProperty(b))return!1;return!0}function l(){try{return new ErrorEvent(""),!0}catch(a){return!1}}function m(){if(!("fetch"in Q))return!1;try{return new Headers,new Request(""),new Response,!0}catch(a){return!1}}function n(a){function b(b,c){var d=a(b)||b;return c?c(d)||d:d}return b}function o(a,b){var c,d;if(f(a.length))for(c in a)s(a,c)&&b.call(null,c,a[c]);else if(d=a.length)for(c=0;c ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function y(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&i(b))for(c=b.split(/\s+/),f=0;f":"anonymous component")+(a._isVue&&a.$options.__file?" at "+a.$options.__file:"")}function N(a,b){if(b=b||window.Vue,b&&b.config){var c=b.config.errorHandler;b.config.errorHandler=function(b,d,e){var f={};"[object Object]"===Object.prototype.toString.call(d)&&(f.componentName=M(d),f.propsData=d.$options.propsData),"undefined"!=typeof e&&(f.lifecycleHook=e),a.captureException(b,{extra:f}),"function"==typeof c&&c.call(this,b,d,e)}}}var O="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{},P=Object.setPrototypeOf||function(a,b){return a.C=b,a},Q=("object"==typeof Reflect&&Reflect.construct||function(a,b,c){var d,e=[null];return e.push.apply(e,b),d=a.bind.apply(a,e),P(new d,c.prototype)},"undefined"!=typeof window?window:"undefined"!=typeof O?O:"undefined"!=typeof self?self:{}),R={isObject:c,isError:d,isErrorEvent:e,isUndefined:f,isFunction:g,isPlainObject:h,isString:i,isArray:j,isEmptyObject:k,supportsErrorEvent:l,supportsFetch:m,wrappedCallback:n,each:o,objectMerge:p,truncate:r,objectFrozen:q,hasKey:s,joinRegExp:t,urlencode:u,uuid4:w,htmlTreeAsString:x,htmlElementAsString:y,isSameException:B,isSameStacktrace:C,parseUrl:v,fill:D,safeJoin:E},S={collectWindowErrors:!0,debug:!1},T="undefined"!=typeof window?window:"undefined"!=typeof O?O:"undefined"!=typeof self?self:{},U=[].slice,V="?",W=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;S.report=function(){function a(a){f(),l.push(a)}function b(a){for(var b=l.length-1;b>=0;--b)l[b]===a&&l.splice(b,1)}function c(){g(),l=[]}function d(a,b){var c=null;if(!b||S.collectWindowErrors){for(var d in l)if(l.hasOwnProperty(d))try{l[d].apply(null,[a].concat(U.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function e(a,b,c,e,f){var g=null,i=R.isErrorEvent(f)?f.error:f,k=R.isErrorEvent(a)?a.message:a;if(o)S.computeStackTrace.augmentStackTraceWithInitialElement(o,b,c,k),h();else if(i&&R.isError(i))g=S.computeStackTrace(i),d(g,!0);else{var l,m={url:b,line:c,column:e},n=void 0;if("[object String]"==={}.toString.call(k)){var l=k.match(W);l&&(n=l[1],k=l[2])}m.func=V,g={name:n,message:k,url:F(),stack:[m]},d(g,!0)}return!!j&&j.apply(this,arguments)}function f(){k||(j=T.onerror,T.onerror=e,k=!0)}function g(){k&&(T.onerror=j,k=!1,j=void 0)}function h(){var a=o,b=m;m=null,o=null,n=null,d.apply(null,[a,!1].concat(b))}function i(a,b){var c=U.call(arguments,1);if(o){if(n===a)return;h()}var d=S.computeStackTrace(a);if(o=d,n=a,m=c,setTimeout(function(){n===a&&h()},d.incomplete?2e3:0),b!==!1)throw a}var j,k,l=[],m=null,n=null,o=null;return i.subscribe=a,i.unsubscribe=b,i.uninstall=c,i}(),S.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,d,e=/^\s*at (.*?) ?\(((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,f=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|\[native).*?|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,g=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,h=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,i=/\((\S*)(?::(\d+))(?::(\d+))\)/,j=a.stack.split("\n"),k=[],l=(/^(.*) is undefined$/.exec(a.message),0),m=j.length;l eval")>-1;o&&(b=h.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==l||c[5]||"undefined"==typeof a.columnNumber||(k[0].column=a.columnNumber+1),d={url:c[3],func:c[1]||V,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}!d.func&&d.line&&(d.func=V),k.push(d)}return k.length?{name:a.name,message:a.message,url:F(),stack:k}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=V),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,e){for(var f,g,h=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,i=[],j={},k=!1,l=c.caller;l&&!k;l=l.caller)if(l!==d&&l!==S.report){if(g={url:null,func:V,line:null,column:null},l.name?g.func=l.name:(f=h.exec(l.toString()))&&(g.func=f[1]),"undefined"==typeof g.func)try{g.func=f.input.substring(0,f.input.indexOf("{"))}catch(m){}j[""+l]?k=!0:j[""+l]=!0,i.push(g)}e&&i.splice(0,e);var n={name:a.name,message:a.message,url:F(),stack:i};return b(n,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),n}function d(b,d){var e=null;d=null==d?0:+d;try{if(e=a(b))return e}catch(f){if(S.debug)throw f}try{if(e=c(b,d+1))return e}catch(f){if(S.debug)throw f}return{name:b.name,message:b.message,url:F()}}return d.augmentStackTraceWithInitialElement=b,d.computeStackTraceFromStackProp=a,d}();var X=S,Y=a(function(a,b){function c(a,b){for(var c=0;c0){var i=c(d,this);~i?d.splice(i+1):d.push(this),~i?f.splice(i,1/0,g):f.push(g),~c(d,h)&&(h=b.call(this,g,h))}else d.push(h);return null==a?h instanceof Error?e(h):h:a.call(this,g,h)}}b=a.exports=d,b.getSerialize=f});G.prototype=new Error,G.prototype.constructor=G;var Z=G,$=function(a,b,c){var d=a[b],e=a;if(b in a){var f="warn"===b?"warning":b;a[b]=function(){var a=[].slice.call(arguments),g=R.safeJoin(a," "),h={level:f,logger:"console",extra:{arguments:a}};"assert"===b?a[0]===!1&&(g="Assertion failed: "+(R.safeJoin(a.slice(1)," ")||"console.assert"),h.extra.arguments=a.slice(1),c&&c(g,h)):c&&c(g,h),d&&Function.prototype.apply.call(d,e,a)}}},_={wrapMethod:$},aa=R.isError,ba=R.isObject,ca=R.isErrorEvent,da=R.isUndefined,ea=R.isFunction,fa=R.isString,ga=R.isArray,ha=R.isEmptyObject,ia=R.each,ja=R.objectMerge,ka=R.truncate,la=R.objectFrozen,ma=R.hasKey,na=R.joinRegExp,oa=R.urlencode,pa=R.uuid4,qa=R.htmlTreeAsString,ra=R.isSameException,sa=R.isSameStacktrace,ta=R.parseUrl,ua=R.fill,va=R.supportsFetch,wa=_.wrapMethod,xa="source protocol user pass host port path".split(" "),ya=/^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/,za="undefined"!=typeof window?window:"undefined"!=typeof O?O:"undefined"!=typeof self?self:{},Aa=za.document,Ba=za.navigator;J.prototype={VERSION:"3.22.2",debug:!1,TraceKit:X,config:function(a,b){var c=this;if(c.i)return this.D("error","Error: Raven has already been configured"),c;if(!a)return c;var d=c.m;b&&ia(b,function(a,b){"tags"===a||"extra"===a||"user"===a?c.l[a]=b:d[a]=b}),c.setDSN(a),d.ignoreErrors.push(/^Script error\.?$/),d.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/),d.ignoreErrors=na(d.ignoreErrors),d.ignoreUrls=!!d.ignoreUrls.length&&na(d.ignoreUrls),d.whitelistUrls=!!d.whitelistUrls.length&&na(d.whitelistUrls),d.includePaths=na(d.includePaths),d.maxBreadcrumbs=Math.max(0,Math.min(d.maxBreadcrumbs||100,100));var e={xhr:!0,console:!0,dom:!0,location:!0,sentry:!0},f=d.autoBreadcrumbs;"[object Object]"==={}.toString.call(f)?f=ja(e,f):f!==!1&&(f=e),d.autoBreadcrumbs=f;var g={tryCatch:!0},h=d.instrument;return"[object Object]"==={}.toString.call(h)?h=ja(g,h):h!==!1&&(h=g),d.instrument=h,X.collectWindowErrors=!!d.collectWindowErrors,c},install:function(){var a=this;return a.isSetup()&&!a.p&&(X.report.subscribe(function(){a.E.apply(a,arguments)}),a.F(),a.m.instrument&&a.m.instrument.tryCatch&&a.G(),a.m.autoBreadcrumbs&&a.H(),a.I(),a.p=!0),Error.stackTraceLimit=a.m.stackTraceLimit,this},setDSN:function(a){var b=this,c=b.J(a),d=c.path.lastIndexOf("/"),e=c.path.substr(1,d);b.K=a,b.j=c.user,b.L=c.pass&&c.pass.substr(1),b.k=c.path.substr(d+1),b.i=b.M(c),b.N=b.i+"/"+e+"api/"+b.k+"/store/",this.A()},context:function(a,b,c){return ea(a)&&(c=b||[],b=a,a=void 0),this.wrap(a,b).apply(this,c)},wrap:function(a,b,c){function d(){var d=[],f=arguments.length,g=!a||a&&a.deep!==!1;for(c&&ea(c)&&c.apply(this,arguments);f--;)d[f]=g?e.wrap(a,arguments[f]):arguments[f];try{return b.apply(this,d)}catch(h){throw e.O(),e.captureException(h,a),h}}var e=this;if(da(b)&&!ea(a))return a;if(ea(a)&&(b=a,a=void 0),!ea(b))return b;try{if(b.a)return b;if(b.P)return b.P}catch(f){return b}for(var g in b)ma(b,g)&&(d[g]=b[g]);return d.prototype=b.prototype,b.P=d,d.a=!0,d.b=b,d},uninstall:function(){return X.report.uninstall(),this.Q(),this.R(),this.S(),Error.stackTraceLimit=this.q,this.p=!1,this},captureException:function(a,b){b=ja({trimHeadFrames:0},b?b:{});var c=!aa(a),d=!ca(a),e=ca(a)&&!a.error;if(c&&d||e)return this.captureMessage(a,ja(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}));ca(a)&&(a=a.error),this.f=a;try{var f=X.computeStackTrace(a);this.T(f,b)}catch(g){if(a!==g)throw g}return this},captureMessage:function(a,b){if(!this.m.ignoreErrors.test||!this.m.ignoreErrors.test(a)){b=b||{};var c,d=ja({message:a+""},b);try{throw new Error(a)}catch(e){c=e}c.name=null;var f=X.computeStackTrace(c),g=ga(f.stack)&&f.stack[1],h=g&&g.url||"";if((!this.m.ignoreUrls.test||!this.m.ignoreUrls.test(h))&&(!this.m.whitelistUrls.test||this.m.whitelistUrls.test(h))){if(this.m.stacktrace||b&&b.stacktrace){b=ja({fingerprint:a,trimHeadFrames:(b.trimHeadFrames||0)+1},b);var i=this.U(f,b);d.stacktrace={frames:i.reverse()}}return this.V(d),this}}},captureBreadcrumb:function(a){var b=ja({timestamp:H()/1e3},a);if(ea(this.m.breadcrumbCallback)){var c=this.m.breadcrumbCallback(b);if(ba(c)&&!ha(c))b=c;else if(c===!1)return this}return this.w.push(b),this.w.length>this.m.maxBreadcrumbs&&this.w.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.t.push([a,b]),this.p&&this.I(),this},setUserContext:function(a){return this.l.user=a,this},setExtraContext:function(a){return this.W("extra",a),this},setTagsContext:function(a){return this.W("tags",a),this},clearContext:function(){return this.l={},this},getContext:function(){return JSON.parse(Y(this.l))},setEnvironment:function(a){return this.m.environment=a,this},setRelease:function(a){return this.m.release=a,this},setDataCallback:function(a){var b=this.m.dataCallback;return this.m.dataCallback=I(b,a),this},setBreadcrumbCallback:function(a){var b=this.m.breadcrumbCallback;return this.m.breadcrumbCallback=I(b,a),this},setShouldSendCallback:function(a){var b=this.m.shouldSendCallback;return this.m.shouldSendCallback=I(b,a),this},setTransport:function(a){return this.m.transport=a,this},lastException:function(){return this.f},lastEventId:function(){return this.h},isSetup:function(){return!!this.c&&(!!this.i||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.D("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=za.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(Aa){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new Z("Missing eventId");var c=a.dsn||this.K;if(!c)throw new Z("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.l.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.M(this.J(c)),h=Aa.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(Aa.head||Aa.body).appendChild(h)}},O:function(){var a=this;this.o+=1,setTimeout(function(){a.o-=1})},X:function(a,b){var c,d;if(this.d){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),Aa.createEvent?(c=Aa.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=Aa.createEventObject(),c.eventType=a);for(d in b)ma(b,d)&&(c[d]=b[d]);if(Aa.createEvent)Aa.dispatchEvent(c);else try{Aa.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},Y:function(a){var b=this;return function(c){if(b.Z=null,b.x!==c){b.x=c;var d;try{d=qa(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},$:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.Z;g||a.Y("input")(c),clearTimeout(g),a.Z=setTimeout(function(){a.Z=null},b)}}},_:function(a,b){var c=ta(this.y.href),d=ta(b),e=ta(a);this.z=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},F:function(){var a=this;a.aa=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.a?a.aa.apply(this.b,arguments):a.aa.apply(this,arguments)}},Q:function(){this.aa&&(Function.prototype.toString=this.aa)},G:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b._(b.z,c+""),a.apply(this,arguments)}};ua(history,"pushState",j,d),ua(history,"replaceState",j,d)}if(c.console&&"console"in za&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};ia(["debug","info","warn","error","log"],function(a,b){wa(console,b,k)})}},R:function(){for(var a;this.v.length;){a=this.v.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},S:function(){for(var a in this.s)this.r[a]=this.s[a]},I:function(){var a=this;ia(this.t,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},J:function(a){var b=ya.exec(a),c={},d=7;try{for(;d--;)c[xa[d]]=b[d]||""}catch(e){throw new Z("Invalid DSN: "+a)}if(c.pass&&!this.m.allowSecretKey)throw new Z("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},M:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},E:function(){this.o||this.T.apply(this,arguments)},T:function(a,b){var c=this.U(a,b);this.X("handle",{stackInfo:a,options:b}),this.ca(a.name,a.message,a.url,a.lineno,c,b)},U:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(ia(a.stack,function(b,e){var f=c.da(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.w,0)}),this.l.user&&(a.user=this.l.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||ha(a[b]))&&delete a[b]}),ea(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!ha(a)&&(!ea(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.ja()?void this.D("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() href parsing trick because React Native and other +// environments where DOM might not be available + + +function parseUrl$1(url) { + if (typeof url !== 'string') return {}; + var match = url.match(/^(([^:\/?#]+):)?(\/\/([^\/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?$/); // coerce to undefined values to empty string so we don't get 'undefined' + + var query = match[6] || ''; + var fragment = match[8] || ''; + return { + protocol: match[2], + host: match[4], + path: match[5], + relative: match[5] + query + fragment // everything minus origin + + }; +} + +function uuid4$1() { + var crypto = _window$3.crypto || _window$3.msCrypto; + + if (!isUndefined$1(crypto) && crypto.getRandomValues) { + // Use window.crypto API if available + // eslint-disable-next-line no-undef + var arr = new Uint16Array(8); + crypto.getRandomValues(arr); // set 4 in byte 7 + + arr[3] = arr[3] & 0xfff | 0x4000; // set 2 most significant bits of byte 9 to '10' + + arr[4] = arr[4] & 0x3fff | 0x8000; + + var pad = function pad(num) { + var v = num.toString(16); + + while (v.length < 4) { + v = '0' + v; + } + + return v; + }; + + return pad(arr[0]) + pad(arr[1]) + pad(arr[2]) + pad(arr[3]) + pad(arr[4]) + pad(arr[5]) + pad(arr[6]) + pad(arr[7]); + } else { + // http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/2117523#2117523 + return 'xxxxxxxxxxxx4xxxyxxxxxxxxxxxxxxx'.replace(/[xy]/g, function (c) { + var r = Math.random() * 16 | 0, + v = c === 'x' ? r : r & 0x3 | 0x8; + return v.toString(16); + }); + } +} +/** + * Given a child DOM element, returns a query-selector statement describing that + * and its ancestors + * e.g. [HTMLElement] => body > div > input#foo.btn[name=baz] + * @param elem + * @returns {string} + */ + + +function htmlTreeAsString$1(elem) { + /* eslint no-extra-parens:0*/ + var MAX_TRAVERSE_HEIGHT = 5, + MAX_OUTPUT_LEN = 80, + out = [], + height = 0, + len = 0, + separator = ' > ', + sepLength = separator.length, + nextStr; + + while (elem && height++ < MAX_TRAVERSE_HEIGHT) { + nextStr = htmlElementAsString(elem); // bail out if + // - nextStr is the 'html' element + // - the length of the string that would be created exceeds MAX_OUTPUT_LEN + // (ignore this limit if we are on the first iteration) + + if (nextStr === 'html' || height > 1 && len + out.length * sepLength + nextStr.length >= MAX_OUTPUT_LEN) { + break; + } + + out.push(nextStr); + len += nextStr.length; + elem = elem.parentNode; + } + + return out.reverse().join(separator); +} +/** + * Returns a simple, query-selector representation of a DOM element + * e.g. [HTMLElement] => input#foo.btn[name=baz] + * @param HTMLElement + * @returns {string} + */ + + +function htmlElementAsString(elem) { + var out = [], + className, + classes, + key, + attr, + i; + + if (!elem || !elem.tagName) { + return ''; + } + + out.push(elem.tagName.toLowerCase()); + + if (elem.id) { + out.push('#' + elem.id); + } + + className = elem.className; + + if (className && isString$1(className)) { + classes = className.split(/\s+/); + + for (i = 0; i < classes.length; i++) { + out.push('.' + classes[i]); + } + } + + var attrWhitelist = ['type', 'name', 'title', 'alt']; + + for (i = 0; i < attrWhitelist.length; i++) { + key = attrWhitelist[i]; + attr = elem.getAttribute(key); + + if (attr) { + out.push('[' + key + '="' + attr + '"]'); + } + } + + return out.join(''); +} +/** + * Returns true if either a OR b is truthy, but not both + */ + + +function isOnlyOneTruthy(a, b) { + return !!(!!a ^ !!b); +} +/** + * Returns true if both parameters are undefined + */ + + +function isBothUndefined(a, b) { + return isUndefined$1(a) && isUndefined$1(b); +} +/** + * Returns true if the two input exception interfaces have the same content + */ + + +function isSameException$1(ex1, ex2) { + if (isOnlyOneTruthy(ex1, ex2)) return false; + ex1 = ex1.values[0]; + ex2 = ex2.values[0]; + if (ex1.type !== ex2.type || ex1.value !== ex2.value) return false; // in case both stacktraces are undefined, we can't decide so default to false + + if (isBothUndefined(ex1.stacktrace, ex2.stacktrace)) return false; + return isSameStacktrace$1(ex1.stacktrace, ex2.stacktrace); +} +/** + * Returns true if the two input stack trace interfaces have the same content + */ + + +function isSameStacktrace$1(stack1, stack2) { + if (isOnlyOneTruthy(stack1, stack2)) return false; + var frames1 = stack1.frames; + var frames2 = stack2.frames; // Exit early if frame count differs + + if (frames1.length !== frames2.length) return false; // Iterate through every frame; bail out if anything differs + + var a, b; + + for (var i = 0; i < frames1.length; i++) { + a = frames1[i]; + b = frames2[i]; + if (a.filename !== b.filename || a.lineno !== b.lineno || a.colno !== b.colno || a['function'] !== b['function']) return false; + } + + return true; +} +/** + * Polyfill a method + * @param obj object e.g. `document` + * @param name method name present on object e.g. `addEventListener` + * @param replacement replacement function + * @param track {optional} record instrumentation to an array + */ + + +function fill$1(obj, name, replacement, track) { + var orig = obj[name]; + obj[name] = replacement(orig); + obj[name].__raven__ = true; + obj[name].__orig__ = orig; + + if (track) { + track.push([obj, name, orig]); + } +} +/** + * Join values in array + * @param input array of values to be joined together + * @param delimiter string to be placed in-between values + * @returns {string} + */ + + +function safeJoin(input, delimiter) { + if (!isArray$1(input)) return ''; + var output = []; + + for (var i = 0; i < input.length; i++) { + try { + output.push(String(input[i])); + } catch (e) { + output.push('[value cannot be serialized]'); + } + } + + return output.join(delimiter); +} + +var utils = { + isObject: isObject$1, + isError: isError$1, + isErrorEvent: isErrorEvent$1, + isUndefined: isUndefined$1, + isFunction: isFunction$1, + isPlainObject: isPlainObject, + isString: isString$1, + isArray: isArray$1, + isEmptyObject: isEmptyObject$1, + supportsErrorEvent: supportsErrorEvent, + supportsFetch: supportsFetch$1, + wrappedCallback: wrappedCallback, + each: each$1, + objectMerge: objectMerge$1, + truncate: truncate$1, + objectFrozen: objectFrozen$1, + hasKey: hasKey$1, + joinRegExp: joinRegExp$1, + urlencode: urlencode$1, + uuid4: uuid4$1, + htmlTreeAsString: htmlTreeAsString$1, + htmlElementAsString: htmlElementAsString, + isSameException: isSameException$1, + isSameStacktrace: isSameStacktrace$1, + parseUrl: parseUrl$1, + fill: fill$1, + safeJoin: safeJoin +}; + +/* + TraceKit - Cross brower stack traces + + This was originally forked from github.com/occ/TraceKit, but has since been + largely re-written and is now maintained as part of raven-js. Tests for + this are in test/vendor. + + MIT license +*/ + +var TraceKit = { + collectWindowErrors: true, + debug: false +}; // This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) + +var _window$2 = typeof window !== 'undefined' ? window : typeof commonjsGlobal !== 'undefined' ? commonjsGlobal : typeof self !== 'undefined' ? self : {}; // global reference to slice + + +var _slice = [].slice; +var UNKNOWN_FUNCTION = '?'; // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error#Error_types + +var ERROR_TYPES_RE = /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/; + +function getLocationHref() { + if (typeof document === 'undefined' || document.location == null) return ''; + return document.location.href; +} +/** + * TraceKit.report: cross-browser processing of unhandled exceptions + * + * Syntax: + * TraceKit.report.subscribe(function(stackInfo) { ... }) + * TraceKit.report.unsubscribe(function(stackInfo) { ... }) + * TraceKit.report(exception) + * try { ...code... } catch(ex) { TraceKit.report(ex); } + * + * Supports: + * - Firefox: full stack trace with line numbers, plus column number + * on top frame; column number is not guaranteed + * - Opera: full stack trace with line and column numbers + * - Chrome: full stack trace with line and column numbers + * - Safari: line and column number for the top frame only; some frames + * may be missing, and column number is not guaranteed + * - IE: line and column number for the top frame only; some frames + * may be missing, and column number is not guaranteed + * + * In theory, TraceKit should work on all of the following versions: + * - IE5.5+ (only 8.0 tested) + * - Firefox 0.9+ (only 3.5+ tested) + * - Opera 7+ (only 10.50 tested; versions 9 and earlier may require + * Exceptions Have Stacktrace to be enabled in opera:config) + * - Safari 3+ (only 4+ tested) + * - Chrome 1+ (only 5+ tested) + * - Konqueror 3.5+ (untested) + * + * Requires TraceKit.computeStackTrace. + * + * Tries to catch all unhandled exceptions and report them to the + * subscribed handlers. Please note that TraceKit.report will rethrow the + * exception. This is REQUIRED in order to get a useful stack trace in IE. + * If the exception does not reach the top of the browser, you will only + * get a stack trace from the point where TraceKit.report was called. + * + * Handlers receive a stackInfo object as described in the + * TraceKit.computeStackTrace docs. + */ + + +TraceKit.report = function reportModuleWrapper() { + var handlers = [], + lastArgs = null, + lastException = null, + lastExceptionStack = null; + /** + * Add a crash handler. + * @param {Function} handler + */ + + function subscribe(handler) { + installGlobalHandler(); + handlers.push(handler); + } + /** + * Remove a crash handler. + * @param {Function} handler + */ + + + function unsubscribe(handler) { + for (var i = handlers.length - 1; i >= 0; --i) { + if (handlers[i] === handler) { + handlers.splice(i, 1); + } + } + } + /** + * Remove all crash handlers. + */ + + + function unsubscribeAll() { + uninstallGlobalHandler(); + handlers = []; + } + /** + * Dispatch stack information to all handlers. + * @param {Object.} stack + */ + + + function notifyHandlers(stack, isWindowError) { + var exception = null; + + if (isWindowError && !TraceKit.collectWindowErrors) { + return; + } + + for (var i in handlers) { + if (handlers.hasOwnProperty(i)) { + try { + handlers[i].apply(null, [stack].concat(_slice.call(arguments, 2))); + } catch (inner) { + exception = inner; + } + } + } + + if (exception) { + throw exception; + } + } + + var _oldOnerrorHandler, _onErrorHandlerInstalled; + /** + * Ensures all global unhandled exceptions are recorded. + * Supported by Gecko and IE. + * @param {string} msg Error message. + * @param {string} url URL of script that generated the exception. + * @param {(number|string)} lineNo The line number at which the error + * occurred. + * @param {?(number|string)} colNo The column number at which the error + * occurred. + * @param {?Error} ex The actual Error object. + */ + + + function traceKitWindowOnError(msg, url, lineNo, colNo, ex) { + var stack = null; // If 'ex' is ErrorEvent, get real Error from inside + + var exception = utils.isErrorEvent(ex) ? ex.error : ex; // If 'msg' is ErrorEvent, get real message from inside + + var message = utils.isErrorEvent(msg) ? msg.message : msg; + + if (lastExceptionStack) { + TraceKit.computeStackTrace.augmentStackTraceWithInitialElement(lastExceptionStack, url, lineNo, message); + processLastException(); + } else if (exception && utils.isError(exception)) { + // non-string `exception` arg; attempt to extract stack trace + // New chrome and blink send along a real error object + // Let's just report that like a normal error. + // See: https://mikewest.org/2013/08/debugging-runtime-errors-with-window-onerror + stack = TraceKit.computeStackTrace(exception); + notifyHandlers(stack, true); + } else { + var location = { + url: url, + line: lineNo, + column: colNo + }; + var name = undefined; + var groups; + + if ({}.toString.call(message) === '[object String]') { + var groups = message.match(ERROR_TYPES_RE); + + if (groups) { + name = groups[1]; + message = groups[2]; + } + } + + location.func = UNKNOWN_FUNCTION; + stack = { + name: name, + message: message, + url: getLocationHref(), + stack: [location] + }; + notifyHandlers(stack, true); + } + + if (_oldOnerrorHandler) { + return _oldOnerrorHandler.apply(this, arguments); + } + + return false; + } + + function installGlobalHandler() { + if (_onErrorHandlerInstalled) { + return; + } + + _oldOnerrorHandler = _window$2.onerror; + _window$2.onerror = traceKitWindowOnError; + _onErrorHandlerInstalled = true; + } + + function uninstallGlobalHandler() { + if (!_onErrorHandlerInstalled) { + return; + } + + _window$2.onerror = _oldOnerrorHandler; + _onErrorHandlerInstalled = false; + _oldOnerrorHandler = undefined; + } + + function processLastException() { + var _lastExceptionStack = lastExceptionStack, + _lastArgs = lastArgs; + lastArgs = null; + lastExceptionStack = null; + lastException = null; + notifyHandlers.apply(null, [_lastExceptionStack, false].concat(_lastArgs)); + } + /** + * Reports an unhandled Error to TraceKit. + * @param {Error} ex + * @param {?boolean} rethrow If false, do not re-throw the exception. + * Only used for window.onerror to not cause an infinite loop of + * rethrowing. + */ + + + function report(ex, rethrow) { + var args = _slice.call(arguments, 1); + + if (lastExceptionStack) { + if (lastException === ex) { + return; // already caught by an inner catch block, ignore + } else { + processLastException(); + } + } + + var stack = TraceKit.computeStackTrace(ex); + lastExceptionStack = stack; + lastException = ex; + lastArgs = args; // If the stack trace is incomplete, wait for 2 seconds for + // slow slow IE to see if onerror occurs or not before reporting + // this exception; otherwise, we will end up with an incomplete + // stack trace + + setTimeout(function () { + if (lastException === ex) { + processLastException(); + } + }, stack.incomplete ? 2000 : 0); + + if (rethrow !== false) { + throw ex; // re-throw to propagate to the top level (and cause window.onerror) + } + } + + report.subscribe = subscribe; + report.unsubscribe = unsubscribe; + report.uninstall = unsubscribeAll; + return report; +}(); +/** + * TraceKit.computeStackTrace: cross-browser stack traces in JavaScript + * + * Syntax: + * s = TraceKit.computeStackTrace(exception) // consider using TraceKit.report instead (see below) + * Returns: + * s.name - exception name + * s.message - exception message + * s.stack[i].url - JavaScript or HTML file URL + * s.stack[i].func - function name, or empty for anonymous functions (if guessing did not work) + * s.stack[i].args - arguments passed to the function, if known + * s.stack[i].line - line number, if known + * s.stack[i].column - column number, if known + * + * Supports: + * - Firefox: full stack trace with line numbers and unreliable column + * number on top frame + * - Opera 10: full stack trace with line and column numbers + * - Opera 9-: full stack trace with line numbers + * - Chrome: full stack trace with line and column numbers + * - Safari: line and column number for the topmost stacktrace element + * only + * - IE: no line numbers whatsoever + * + * Tries to guess names of anonymous functions by looking for assignments + * in the source code. In IE and Safari, we have to guess source file names + * by searching for function bodies inside all page scripts. This will not + * work for scripts that are loaded cross-domain. + * Here be dragons: some function names may be guessed incorrectly, and + * duplicate functions may be mismatched. + * + * TraceKit.computeStackTrace should only be used for tracing purposes. + * Logging of unhandled exceptions should be done with TraceKit.report, + * which builds on top of TraceKit.computeStackTrace and provides better + * IE support by utilizing the window.onerror event to retrieve information + * about the top of the stack. + * + * Note: In IE and Safari, no stack trace is recorded on the Error object, + * so computeStackTrace instead walks its *own* chain of callers. + * This means that: + * * in Safari, some methods may be missing from the stack trace; + * * in IE, the topmost function in the stack trace will always be the + * caller of computeStackTrace. + * + * This is okay for tracing (because you are likely to be calling + * computeStackTrace from the function you want to be the topmost element + * of the stack trace anyway), but not okay for logging unhandled + * exceptions (because your catch block will likely be far away from the + * inner function that actually caused the exception). + * + */ + + +TraceKit.computeStackTrace = function computeStackTraceWrapper() { + // Contents of Exception in various browsers. + // + // SAFARI: + // ex.message = Can't find variable: qq + // ex.line = 59 + // ex.sourceId = 580238192 + // ex.sourceURL = http://... + // ex.expressionBeginOffset = 96 + // ex.expressionCaretOffset = 98 + // ex.expressionEndOffset = 98 + // ex.name = ReferenceError + // + // FIREFOX: + // ex.message = qq is not defined + // ex.fileName = http://... + // ex.lineNumber = 59 + // ex.columnNumber = 69 + // ex.stack = ...stack trace... (see the example below) + // ex.name = ReferenceError + // + // CHROME: + // ex.message = qq is not defined + // ex.name = ReferenceError + // ex.type = not_defined + // ex.arguments = ['aa'] + // ex.stack = ...stack trace... + // + // INTERNET EXPLORER: + // ex.message = ... + // ex.name = ReferenceError + // + // OPERA: + // ex.message = ...message... (see the example below) + // ex.name = ReferenceError + // ex.opera#sourceloc = 11 (pretty much useless, duplicates the info in ex.message) + // ex.stacktrace = n/a; see 'opera:config#UserPrefs|Exceptions Have Stacktrace' + + /** + * Computes stack trace information from the stack property. + * Chrome and Gecko use this property. + * @param {Error} ex + * @return {?Object.} Stack trace information. + */ + function computeStackTraceFromStackProp(ex) { + if (typeof ex.stack === 'undefined' || !ex.stack) return; + var chrome = /^\s*at (.*?) ?\(((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i, + gecko = /^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|\[native).*?|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i, + winjs = /^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i, + // Used to additionally parse URL/line/column from eval frames + geckoEval = /(\S+) line (\d+)(?: > eval line \d+)* > eval/i, + chromeEval = /\((\S*)(?::(\d+))(?::(\d+))\)/, + lines = ex.stack.split('\n'), + stack = [], + submatch, + parts, + element, + reference = /^(.*) is undefined$/.exec(ex.message); + + for (var i = 0, j = lines.length; i < j; ++i) { + if (parts = chrome.exec(lines[i])) { + var isNative = parts[2] && parts[2].indexOf('native') === 0; // start of line + + var isEval = parts[2] && parts[2].indexOf('eval') === 0; // start of line + + if (isEval && (submatch = chromeEval.exec(parts[2]))) { + // throw out eval line/column and use top-most line/column number + parts[2] = submatch[1]; // url + + parts[3] = submatch[2]; // line + + parts[4] = submatch[3]; // column + } + + element = { + url: !isNative ? parts[2] : null, + func: parts[1] || UNKNOWN_FUNCTION, + args: isNative ? [parts[2]] : [], + line: parts[3] ? +parts[3] : null, + column: parts[4] ? +parts[4] : null + }; + } else if (parts = winjs.exec(lines[i])) { + element = { + url: parts[2], + func: parts[1] || UNKNOWN_FUNCTION, + args: [], + line: +parts[3], + column: parts[4] ? +parts[4] : null + }; + } else if (parts = gecko.exec(lines[i])) { + var isEval = parts[3] && parts[3].indexOf(' > eval') > -1; + + if (isEval && (submatch = geckoEval.exec(parts[3]))) { + // throw out eval line/column and use top-most line number + parts[3] = submatch[1]; + parts[4] = submatch[2]; + parts[5] = null; // no column when eval + } else if (i === 0 && !parts[5] && typeof ex.columnNumber !== 'undefined') { + // FireFox uses this awesome columnNumber property for its top frame + // Also note, Firefox's column number is 0-based and everything else expects 1-based, + // so adding 1 + // NOTE: this hack doesn't work if top-most frame is eval + stack[0].column = ex.columnNumber + 1; + } + + element = { + url: parts[3], + func: parts[1] || UNKNOWN_FUNCTION, + args: parts[2] ? parts[2].split(',') : [], + line: parts[4] ? +parts[4] : null, + column: parts[5] ? +parts[5] : null + }; + } else { + continue; + } + + if (!element.func && element.line) { + element.func = UNKNOWN_FUNCTION; + } + + stack.push(element); + } + + if (!stack.length) { + return null; + } + + return { + name: ex.name, + message: ex.message, + url: getLocationHref(), + stack: stack + }; + } + /** + * Adds information about the first frame to incomplete stack traces. + * Safari and IE require this to get complete data on the first frame. + * @param {Object.} stackInfo Stack trace information from + * one of the compute* methods. + * @param {string} url The URL of the script that caused an error. + * @param {(number|string)} lineNo The line number of the script that + * caused an error. + * @param {string=} message The error generated by the browser, which + * hopefully contains the name of the object that caused the error. + * @return {boolean} Whether or not the stack information was + * augmented. + */ + + + function augmentStackTraceWithInitialElement(stackInfo, url, lineNo, message) { + var initial = { + url: url, + line: lineNo + }; + + if (initial.url && initial.line) { + stackInfo.incomplete = false; + + if (!initial.func) { + initial.func = UNKNOWN_FUNCTION; + } + + if (stackInfo.stack.length > 0) { + if (stackInfo.stack[0].url === initial.url) { + if (stackInfo.stack[0].line === initial.line) { + return false; // already in stack trace + } else if (!stackInfo.stack[0].line && stackInfo.stack[0].func === initial.func) { + stackInfo.stack[0].line = initial.line; + return false; + } + } + } + + stackInfo.stack.unshift(initial); + stackInfo.partial = true; + return true; + } else { + stackInfo.incomplete = true; + } + + return false; + } + /** + * Computes stack trace information by walking the arguments.caller + * chain at the time the exception occurred. This will cause earlier + * frames to be missed but is the only way to get any stack trace in + * Safari and IE. The top frame is restored by + * {@link augmentStackTraceWithInitialElement}. + * @param {Error} ex + * @return {?Object.} Stack trace information. + */ + + + function computeStackTraceByWalkingCallerChain(ex, depth) { + var functionName = /function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i, + stack = [], + funcs = {}, + recursion = false, + parts, + item; + + for (var curr = computeStackTraceByWalkingCallerChain.caller; curr && !recursion; curr = curr.caller) { + if (curr === computeStackTrace || curr === TraceKit.report) { + // console.log('skipping internal function'); + continue; + } + + item = { + url: null, + func: UNKNOWN_FUNCTION, + line: null, + column: null + }; + + if (curr.name) { + item.func = curr.name; + } else if (parts = functionName.exec(curr.toString())) { + item.func = parts[1]; + } + + if (typeof item.func === 'undefined') { + try { + item.func = parts.input.substring(0, parts.input.indexOf('{')); + } catch (e) {} + } + + if (funcs['' + curr]) { + recursion = true; + } else { + funcs['' + curr] = true; + } + + stack.push(item); + } + + if (depth) { + // console.log('depth is ' + depth); + // console.log('stack is ' + stack.length); + stack.splice(0, depth); + } + + var result = { + name: ex.name, + message: ex.message, + url: getLocationHref(), + stack: stack + }; + augmentStackTraceWithInitialElement(result, ex.sourceURL || ex.fileName, ex.line || ex.lineNumber, ex.message || ex.description); + return result; + } + /** + * Computes a stack trace for an exception. + * @param {Error} ex + * @param {(string|number)=} depth + */ + + + function computeStackTrace(ex, depth) { + var stack = null; + depth = depth == null ? 0 : +depth; + + try { + stack = computeStackTraceFromStackProp(ex); + + if (stack) { + return stack; + } + } catch (e) { + if (TraceKit.debug) { + throw e; + } + } + + try { + stack = computeStackTraceByWalkingCallerChain(ex, depth + 1); + + if (stack) { + return stack; + } + } catch (e) { + if (TraceKit.debug) { + throw e; + } + } + + return { + name: ex.name, + message: ex.message, + url: getLocationHref() + }; + } + + computeStackTrace.augmentStackTraceWithInitialElement = augmentStackTraceWithInitialElement; + computeStackTrace.computeStackTraceFromStackProp = computeStackTraceFromStackProp; + return computeStackTrace; +}(); + +var tracekit = TraceKit; + +var stringify_1 = createCommonjsModule(function (module, exports) { + /* + json-stringify-safe + Like JSON.stringify, but doesn't throw on circular references. + + Originally forked from https://github.com/isaacs/json-stringify-safe + version 5.0.1 on 3/8/2017 and modified to handle Errors serialization + and IE8 compatibility. Tests for this are in test/vendor. + + ISC license: https://github.com/isaacs/json-stringify-safe/blob/master/LICENSE + */ + exports = module.exports = stringify; + exports.getSerialize = serializer; + + function indexOf(haystack, needle) { + for (var i = 0; i < haystack.length; ++i) { + if (haystack[i] === needle) return i; + } + + return -1; + } + + function stringify(obj, replacer, spaces, cycleReplacer) { + return JSON.stringify(obj, serializer(replacer, cycleReplacer), spaces); + } // https://github.com/ftlabs/js-abbreviate/blob/fa709e5f139e7770a71827b1893f22418097fbda/index.js#L95-L106 + + + function stringifyError(value) { + var err = { + // These properties are implemented as magical getters and don't show up in for in + stack: value.stack, + message: value.message, + name: value.name + }; + + for (var i in value) { + if (Object.prototype.hasOwnProperty.call(value, i)) { + err[i] = value[i]; + } + } + + return err; + } + + function serializer(replacer, cycleReplacer) { + var stack = []; + var keys = []; + + if (cycleReplacer == null) { + cycleReplacer = function cycleReplacer(key, value) { + if (stack[0] === value) { + return '[Circular ~]'; + } + + return '[Circular ~.' + keys.slice(0, indexOf(stack, value)).join('.') + ']'; + }; + } + + return function (key, value) { + if (stack.length > 0) { + var thisPos = indexOf(stack, this); + ~thisPos ? stack.splice(thisPos + 1) : stack.push(this); + ~thisPos ? keys.splice(thisPos, Infinity, key) : keys.push(key); + + if (~indexOf(stack, value)) { + value = cycleReplacer.call(this, key, value); + } + } else { + stack.push(value); + } + + return replacer == null ? value instanceof Error ? stringifyError(value) : value : replacer.call(this, key, value); + }; + } +}); +var stringify_2 = stringify_1.getSerialize; + +function RavenConfigError(message) { + this.name = 'RavenConfigError'; + this.message = message; +} + +RavenConfigError.prototype = new Error(); +RavenConfigError.prototype.constructor = RavenConfigError; +var configError = RavenConfigError; + +var wrapMethod = function wrapMethod(console, level, callback) { + var originalConsoleLevel = console[level]; + var originalConsole = console; + + if (!(level in console)) { + return; + } + + var sentryLevel = level === 'warn' ? 'warning' : level; + + console[level] = function () { + var args = [].slice.call(arguments); + var msg = utils.safeJoin(args, ' '); + var data = { + level: sentryLevel, + logger: 'console', + extra: { + arguments: args + } + }; + + if (level === 'assert') { + if (args[0] === false) { + // Default browsers message + msg = 'Assertion failed: ' + (utils.safeJoin(args.slice(1), ' ') || 'console.assert'); + data.extra.arguments = args.slice(1); + callback && callback(msg, data); + } + } else { + callback && callback(msg, data); + } // this fails for some browsers. :( + + + if (originalConsoleLevel) { + // IE9 doesn't allow calling apply on console functions directly + // See: https://stackoverflow.com/questions/5472938/does-ie9-support-console-log-and-is-it-a-real-function#answer-5473193 + Function.prototype.apply.call(originalConsoleLevel, originalConsole, args); + } + }; +}; + +var console$1 = { + wrapMethod: wrapMethod +}; + +/*global XDomainRequest:false */ + +var isError = utils.isError; +var isObject = utils.isObject; +var isErrorEvent = utils.isErrorEvent; +var isUndefined = utils.isUndefined; +var isFunction = utils.isFunction; +var isString = utils.isString; +var isArray = utils.isArray; +var isEmptyObject = utils.isEmptyObject; +var each = utils.each; +var objectMerge = utils.objectMerge; +var truncate = utils.truncate; +var objectFrozen = utils.objectFrozen; +var hasKey = utils.hasKey; +var joinRegExp = utils.joinRegExp; +var urlencode = utils.urlencode; +var uuid4 = utils.uuid4; +var htmlTreeAsString = utils.htmlTreeAsString; +var isSameException = utils.isSameException; +var isSameStacktrace = utils.isSameStacktrace; +var parseUrl = utils.parseUrl; +var fill = utils.fill; +var supportsFetch = utils.supportsFetch; +var wrapConsoleMethod = console$1.wrapMethod; +var dsnKeys = 'source protocol user pass host port path'.split(' '); +var dsnPattern = /^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/; + +function now() { + return +new Date(); +} // This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) + + +var _window$1 = typeof window !== 'undefined' ? window : typeof commonjsGlobal !== 'undefined' ? commonjsGlobal : typeof self !== 'undefined' ? self : {}; + +var _document = _window$1.document; +var _navigator = _window$1.navigator; + +function keepOriginalCallback(original, callback) { + return isFunction(callback) ? function (data) { + return callback(data, original); + } : callback; +} // First, check for JSON support +// If there is no JSON, we no-op the core features of Raven +// since JSON is required to encode the payload + + +function Raven$1() { + this._hasJSON = !!(_typeof(JSON) === 'object' && JSON.stringify); // Raven can run in contexts where there's no document (react-native) + + this._hasDocument = !isUndefined(_document); + this._hasNavigator = !isUndefined(_navigator); + this._lastCapturedException = null; + this._lastData = null; + this._lastEventId = null; + this._globalServer = null; + this._globalKey = null; + this._globalProject = null; + this._globalContext = {}; + this._globalOptions = { + // SENTRY_RELEASE can be injected by https://github.com/getsentry/sentry-webpack-plugin + release: _window$1.SENTRY_RELEASE && _window$1.SENTRY_RELEASE.id, + logger: 'javascript', + ignoreErrors: [], + ignoreUrls: [], + whitelistUrls: [], + includePaths: [], + headers: null, + collectWindowErrors: true, + maxMessageLength: 0, + // By default, truncates URL values to 250 chars + maxUrlLength: 250, + stackTraceLimit: 50, + autoBreadcrumbs: true, + instrument: true, + sampleRate: 1 + }; + this._fetchDefaults = { + method: 'POST', + keepalive: true, + referrerPolicy: 'origin' + }; + this._ignoreOnError = 0; + this._isRavenInstalled = false; + this._originalErrorStackTraceLimit = Error.stackTraceLimit; // capture references to window.console *and* all its methods first + // before the console plugin has a chance to monkey patch + + this._originalConsole = _window$1.console || {}; + this._originalConsoleMethods = {}; + this._plugins = []; + this._startTime = now(); + this._wrappedBuiltIns = []; + this._breadcrumbs = []; + this._lastCapturedEvent = null; + this._keypressTimeout; + this._location = _window$1.location; + this._lastHref = this._location && this._location.href; + + this._resetBackoff(); // eslint-disable-next-line guard-for-in + + + for (var method in this._originalConsole) { + this._originalConsoleMethods[method] = this._originalConsole[method]; + } +} +/* + * The core Raven singleton + * + * @this {Raven} + */ + + +Raven$1.prototype = { + // Hardcode version string so that raven source can be loaded directly via + // webpack (using a build step causes webpack #1617). Grunt verifies that + // this value matches package.json during build. + // See: https://github.com/getsentry/raven-js/issues/465 + VERSION: '3.22.2', + debug: false, + TraceKit: tracekit, + // alias to TraceKit + + /* + * Configure Raven with a DSN and extra options + * + * @param {string} dsn The public Sentry DSN + * @param {object} options Set of global options [optional] + * @return {Raven} + */ + config: function config(dsn, options) { + var self = this; + + if (self._globalServer) { + this._logDebug('error', 'Error: Raven has already been configured'); + + return self; + } + + if (!dsn) return self; + var globalOptions = self._globalOptions; // merge in options + + if (options) { + each(options, function (key, value) { + // tags and extra are special and need to be put into context + if (key === 'tags' || key === 'extra' || key === 'user') { + self._globalContext[key] = value; + } else { + globalOptions[key] = value; + } + }); + } + + self.setDSN(dsn); // "Script error." is hard coded into browsers for errors that it can't read. + // this is the result of a script being pulled in from an external domain and CORS. + + globalOptions.ignoreErrors.push(/^Script error\.?$/); + globalOptions.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/); // join regexp rules into one big rule + + globalOptions.ignoreErrors = joinRegExp(globalOptions.ignoreErrors); + globalOptions.ignoreUrls = globalOptions.ignoreUrls.length ? joinRegExp(globalOptions.ignoreUrls) : false; + globalOptions.whitelistUrls = globalOptions.whitelistUrls.length ? joinRegExp(globalOptions.whitelistUrls) : false; + globalOptions.includePaths = joinRegExp(globalOptions.includePaths); + globalOptions.maxBreadcrumbs = Math.max(0, Math.min(globalOptions.maxBreadcrumbs || 100, 100)); // default and hard limit is 100 + + var autoBreadcrumbDefaults = { + xhr: true, + console: true, + dom: true, + location: true, + sentry: true + }; + var autoBreadcrumbs = globalOptions.autoBreadcrumbs; + + if ({}.toString.call(autoBreadcrumbs) === '[object Object]') { + autoBreadcrumbs = objectMerge(autoBreadcrumbDefaults, autoBreadcrumbs); + } else if (autoBreadcrumbs !== false) { + autoBreadcrumbs = autoBreadcrumbDefaults; + } + + globalOptions.autoBreadcrumbs = autoBreadcrumbs; + var instrumentDefaults = { + tryCatch: true + }; + var instrument = globalOptions.instrument; + + if ({}.toString.call(instrument) === '[object Object]') { + instrument = objectMerge(instrumentDefaults, instrument); + } else if (instrument !== false) { + instrument = instrumentDefaults; + } + + globalOptions.instrument = instrument; + tracekit.collectWindowErrors = !!globalOptions.collectWindowErrors; // return for chaining + + return self; + }, + + /* + * Installs a global window.onerror error handler + * to capture and report uncaught exceptions. + * At this point, install() is required to be called due + * to the way TraceKit is set up. + * + * @return {Raven} + */ + install: function install() { + var self = this; + + if (self.isSetup() && !self._isRavenInstalled) { + tracekit.report.subscribe(function () { + self._handleOnErrorStackInfo.apply(self, arguments); + }); + + self._patchFunctionToString(); + + if (self._globalOptions.instrument && self._globalOptions.instrument.tryCatch) { + self._instrumentTryCatch(); + } + + if (self._globalOptions.autoBreadcrumbs) self._instrumentBreadcrumbs(); // Install all of the plugins + + self._drainPlugins(); + + self._isRavenInstalled = true; + } + + Error.stackTraceLimit = self._globalOptions.stackTraceLimit; + return this; + }, + + /* + * Set the DSN (can be called multiple time unlike config) + * + * @param {string} dsn The public Sentry DSN + */ + setDSN: function setDSN(dsn) { + var self = this, + uri = self._parseDSN(dsn), + lastSlash = uri.path.lastIndexOf('/'), + path = uri.path.substr(1, lastSlash); + + self._dsn = dsn; + self._globalKey = uri.user; + self._globalSecret = uri.pass && uri.pass.substr(1); + self._globalProject = uri.path.substr(lastSlash + 1); + self._globalServer = self._getGlobalServer(uri); + self._globalEndpoint = self._globalServer + '/' + path + 'api/' + self._globalProject + '/store/'; // Reset backoff state since we may be pointing at a + // new project/server + + this._resetBackoff(); + }, + + /* + * Wrap code within a context so Raven can capture errors + * reliably across domains that is executed immediately. + * + * @param {object} options A specific set of options for this context [optional] + * @param {function} func The callback to be immediately executed within the context + * @param {array} args An array of arguments to be called with the callback [optional] + */ + context: function context(options, func, args) { + if (isFunction(options)) { + args = func || []; + func = options; + options = undefined; + } + + return this.wrap(options, func).apply(this, args); + }, + + /* + * Wrap code within a context and returns back a new function to be executed + * + * @param {object} options A specific set of options for this context [optional] + * @param {function} func The function to be wrapped in a new context + * @param {function} func A function to call before the try/catch wrapper [optional, private] + * @return {function} The newly wrapped functions with a context + */ + wrap: function wrap(options, func, _before) { + var self = this; // 1 argument has been passed, and it's not a function + // so just return it + + if (isUndefined(func) && !isFunction(options)) { + return options; + } // options is optional + + + if (isFunction(options)) { + func = options; + options = undefined; + } // At this point, we've passed along 2 arguments, and the second one + // is not a function either, so we'll just return the second argument. + + + if (!isFunction(func)) { + return func; + } // We don't wanna wrap it twice! + + + try { + if (func.__raven__) { + return func; + } // If this has already been wrapped in the past, return that + + + if (func.__raven_wrapper__) { + return func.__raven_wrapper__; + } + } catch (e) { + // Just accessing custom props in some Selenium environments + // can cause a "Permission denied" exception (see raven-js#495). + // Bail on wrapping and return the function as-is (defers to window.onerror). + return func; + } + + function wrapped() { + var args = [], + i = arguments.length, + deep = !options || options && options.deep !== false; + + if (_before && isFunction(_before)) { + _before.apply(this, arguments); + } // Recursively wrap all of a function's arguments that are + // functions themselves. + + + while (i--) { + args[i] = deep ? self.wrap(options, arguments[i]) : arguments[i]; + } + + try { + // Attempt to invoke user-land function + // NOTE: If you are a Sentry user, and you are seeing this stack frame, it + // means Raven caught an error invoking your application code. This is + // expected behavior and NOT indicative of a bug with Raven.js. + return func.apply(this, args); + } catch (e) { + self._ignoreNextOnError(); + + self.captureException(e, options); + throw e; + } + } // copy over properties of the old function + + + for (var property in func) { + if (hasKey(func, property)) { + wrapped[property] = func[property]; + } + } + + wrapped.prototype = func.prototype; + func.__raven_wrapper__ = wrapped; // Signal that this function has been wrapped/filled already + // for both debugging and to prevent it to being wrapped/filled twice + + wrapped.__raven__ = true; + wrapped.__orig__ = func; + return wrapped; + }, + + /* + * Uninstalls the global error handler. + * + * @return {Raven} + */ + uninstall: function uninstall() { + tracekit.report.uninstall(); + + this._unpatchFunctionToString(); + + this._restoreBuiltIns(); + + this._restoreConsole(); + + Error.stackTraceLimit = this._originalErrorStackTraceLimit; + this._isRavenInstalled = false; + return this; + }, + + /* + * Manually capture an exception and send it over to Sentry + * + * @param {error} ex An exception to be logged + * @param {object} options A specific set of options for this error [optional] + * @return {Raven} + */ + captureException: function captureException(ex, options) { + options = objectMerge({ + trimHeadFrames: 0 + }, options ? options : {}); // Cases for sending ex as a message, rather than an exception + + var isNotError = !isError(ex); + var isNotErrorEvent = !isErrorEvent(ex); + var isErrorEventWithoutError = isErrorEvent(ex) && !ex.error; + + if (isNotError && isNotErrorEvent || isErrorEventWithoutError) { + return this.captureMessage(ex, objectMerge(options, { + stacktrace: true, + // if we fall back to captureMessage, default to attempting a new trace + trimHeadFrames: options.trimHeadFrames + 1 + })); + } // Get actual Error from ErrorEvent + + + if (isErrorEvent(ex)) ex = ex.error; // Store the raw exception object for potential debugging and introspection + + this._lastCapturedException = ex; // TraceKit.report will re-raise any exception passed to it, + // which means you have to wrap it in try/catch. Instead, we + // can wrap it here and only re-raise if TraceKit.report + // raises an exception different from the one we asked to + // report on. + + try { + var stack = tracekit.computeStackTrace(ex); + + this._handleStackInfo(stack, options); + } catch (ex1) { + if (ex !== ex1) { + throw ex1; + } + } + + return this; + }, + + /* + * Manually send a message to Sentry + * + * @param {string} msg A plain message to be captured in Sentry + * @param {object} options A specific set of options for this message [optional] + * @return {Raven} + */ + captureMessage: function captureMessage(msg, options) { + // config() automagically converts ignoreErrors from a list to a RegExp so we need to test for an + // early call; we'll error on the side of logging anything called before configuration since it's + // probably something you should see: + if (!!this._globalOptions.ignoreErrors.test && this._globalOptions.ignoreErrors.test(msg)) { + return; + } + + options = options || {}; + var data = objectMerge({ + message: msg + '' // Make sure it's actually a string + + }, options); + var ex; // Generate a "synthetic" stack trace from this point. + // NOTE: If you are a Sentry user, and you are seeing this stack frame, it is NOT indicative + // of a bug with Raven.js. Sentry generates synthetic traces either by configuration, + // or if it catches a thrown object without a "stack" property. + + try { + throw new Error(msg); + } catch (ex1) { + ex = ex1; + } // null exception name so `Error` isn't prefixed to msg + + + ex.name = null; + var stack = tracekit.computeStackTrace(ex); // stack[0] is `throw new Error(msg)` call itself, we are interested in the frame that was just before that, stack[1] + + var initialCall = isArray(stack.stack) && stack.stack[1]; + var fileurl = initialCall && initialCall.url || ''; + + if (!!this._globalOptions.ignoreUrls.test && this._globalOptions.ignoreUrls.test(fileurl)) { + return; + } + + if (!!this._globalOptions.whitelistUrls.test && !this._globalOptions.whitelistUrls.test(fileurl)) { + return; + } + + if (this._globalOptions.stacktrace || options && options.stacktrace) { + options = objectMerge({ + // fingerprint on msg, not stack trace (legacy behavior, could be + // revisited) + fingerprint: msg, + // since we know this is a synthetic trace, the top N-most frames + // MUST be from Raven.js, so mark them as in_app later by setting + // trimHeadFrames + trimHeadFrames: (options.trimHeadFrames || 0) + 1 + }, options); + + var frames = this._prepareFrames(stack, options); + + data.stacktrace = { + // Sentry expects frames oldest to newest + frames: frames.reverse() + }; + } // Fire away! + + + this._send(data); + + return this; + }, + captureBreadcrumb: function captureBreadcrumb(obj) { + var crumb = objectMerge({ + timestamp: now() / 1000 + }, obj); + + if (isFunction(this._globalOptions.breadcrumbCallback)) { + var result = this._globalOptions.breadcrumbCallback(crumb); + + if (isObject(result) && !isEmptyObject(result)) { + crumb = result; + } else if (result === false) { + return this; + } + } + + this._breadcrumbs.push(crumb); + + if (this._breadcrumbs.length > this._globalOptions.maxBreadcrumbs) { + this._breadcrumbs.shift(); + } + + return this; + }, + addPlugin: function addPlugin(plugin + /*arg1, arg2, ... argN*/ + ) { + var pluginArgs = [].slice.call(arguments, 1); + + this._plugins.push([plugin, pluginArgs]); + + if (this._isRavenInstalled) { + this._drainPlugins(); + } + + return this; + }, + + /* + * Set/clear a user to be sent along with the payload. + * + * @param {object} user An object representing user data [optional] + * @return {Raven} + */ + setUserContext: function setUserContext(user) { + // Intentionally do not merge here since that's an unexpected behavior. + this._globalContext.user = user; + return this; + }, + + /* + * Merge extra attributes to be sent along with the payload. + * + * @param {object} extra An object representing extra data [optional] + * @return {Raven} + */ + setExtraContext: function setExtraContext(extra) { + this._mergeContext('extra', extra); + + return this; + }, + + /* + * Merge tags to be sent along with the payload. + * + * @param {object} tags An object representing tags [optional] + * @return {Raven} + */ + setTagsContext: function setTagsContext(tags) { + this._mergeContext('tags', tags); + + return this; + }, + + /* + * Clear all of the context. + * + * @return {Raven} + */ + clearContext: function clearContext() { + this._globalContext = {}; + return this; + }, + + /* + * Get a copy of the current context. This cannot be mutated. + * + * @return {object} copy of context + */ + getContext: function getContext() { + // lol javascript + return JSON.parse(stringify_1(this._globalContext)); + }, + + /* + * Set environment of application + * + * @param {string} environment Typically something like 'production'. + * @return {Raven} + */ + setEnvironment: function setEnvironment(environment) { + this._globalOptions.environment = environment; + return this; + }, + + /* + * Set release version of application + * + * @param {string} release Typically something like a git SHA to identify version + * @return {Raven} + */ + setRelease: function setRelease(release) { + this._globalOptions.release = release; + return this; + }, + + /* + * Set the dataCallback option + * + * @param {function} callback The callback to run which allows the + * data blob to be mutated before sending + * @return {Raven} + */ + setDataCallback: function setDataCallback(callback) { + var original = this._globalOptions.dataCallback; + this._globalOptions.dataCallback = keepOriginalCallback(original, callback); + return this; + }, + + /* + * Set the breadcrumbCallback option + * + * @param {function} callback The callback to run which allows filtering + * or mutating breadcrumbs + * @return {Raven} + */ + setBreadcrumbCallback: function setBreadcrumbCallback(callback) { + var original = this._globalOptions.breadcrumbCallback; + this._globalOptions.breadcrumbCallback = keepOriginalCallback(original, callback); + return this; + }, + + /* + * Set the shouldSendCallback option + * + * @param {function} callback The callback to run which allows + * introspecting the blob before sending + * @return {Raven} + */ + setShouldSendCallback: function setShouldSendCallback(callback) { + var original = this._globalOptions.shouldSendCallback; + this._globalOptions.shouldSendCallback = keepOriginalCallback(original, callback); + return this; + }, + + /** + * Override the default HTTP transport mechanism that transmits data + * to the Sentry server. + * + * @param {function} transport Function invoked instead of the default + * `makeRequest` handler. + * + * @return {Raven} + */ + setTransport: function setTransport(transport) { + this._globalOptions.transport = transport; + return this; + }, + + /* + * Get the latest raw exception that was captured by Raven. + * + * @return {error} + */ + lastException: function lastException() { + return this._lastCapturedException; + }, + + /* + * Get the last event id + * + * @return {string} + */ + lastEventId: function lastEventId() { + return this._lastEventId; + }, + + /* + * Determine if Raven is setup and ready to go. + * + * @return {boolean} + */ + isSetup: function isSetup() { + if (!this._hasJSON) return false; // needs JSON support + + if (!this._globalServer) { + if (!this.ravenNotConfiguredError) { + this.ravenNotConfiguredError = true; + + this._logDebug('error', 'Error: Raven has not been configured.'); + } + + return false; + } + + return true; + }, + afterLoad: function afterLoad() { + // TODO: remove window dependence? + // Attempt to initialize Raven on load + var RavenConfig = _window$1.RavenConfig; + + if (RavenConfig) { + this.config(RavenConfig.dsn, RavenConfig.config).install(); + } + }, + showReportDialog: function showReportDialog(options) { + if (!_document // doesn't work without a document (React native) + ) return; + options = options || {}; + var lastEventId = options.eventId || this.lastEventId(); + + if (!lastEventId) { + throw new configError('Missing eventId'); + } + + var dsn = options.dsn || this._dsn; + + if (!dsn) { + throw new configError('Missing DSN'); + } + + var encode = encodeURIComponent; + var qs = ''; + qs += '?eventId=' + encode(lastEventId); + qs += '&dsn=' + encode(dsn); + var user = options.user || this._globalContext.user; + + if (user) { + if (user.name) qs += '&name=' + encode(user.name); + if (user.email) qs += '&email=' + encode(user.email); + } + + var globalServer = this._getGlobalServer(this._parseDSN(dsn)); + + var script = _document.createElement('script'); + + script.async = true; + script.src = globalServer + '/api/embed/error-page/' + qs; + + (_document.head || _document.body).appendChild(script); + }, + + /**** Private functions ****/ + _ignoreNextOnError: function _ignoreNextOnError() { + var self = this; + this._ignoreOnError += 1; + setTimeout(function () { + // onerror should trigger before setTimeout + self._ignoreOnError -= 1; + }); + }, + _triggerEvent: function _triggerEvent(eventType, options) { + // NOTE: `event` is a native browser thing, so let's avoid conflicting wiht it + var evt, key; + if (!this._hasDocument) return; + options = options || {}; + eventType = 'raven' + eventType.substr(0, 1).toUpperCase() + eventType.substr(1); + + if (_document.createEvent) { + evt = _document.createEvent('HTMLEvents'); + evt.initEvent(eventType, true, true); + } else { + evt = _document.createEventObject(); + evt.eventType = eventType; + } + + for (key in options) { + if (hasKey(options, key)) { + evt[key] = options[key]; + } + } + + if (_document.createEvent) { + // IE9 if standards + _document.dispatchEvent(evt); + } else { + // IE8 regardless of Quirks or Standards + // IE9 if quirks + try { + _document.fireEvent('on' + evt.eventType.toLowerCase(), evt); + } catch (e) {// Do nothing + } + } + }, + + /** + * Wraps addEventListener to capture UI breadcrumbs + * @param evtName the event name (e.g. "click") + * @returns {Function} + * @private + */ + _breadcrumbEventHandler: function _breadcrumbEventHandler(evtName) { + var self = this; + return function (evt) { + // reset keypress timeout; e.g. triggering a 'click' after + // a 'keypress' will reset the keypress debounce so that a new + // set of keypresses can be recorded + self._keypressTimeout = null; // It's possible this handler might trigger multiple times for the same + // event (e.g. event propagation through node ancestors). Ignore if we've + // already captured the event. + + if (self._lastCapturedEvent === evt) return; + self._lastCapturedEvent = evt; // try/catch both: + // - accessing evt.target (see getsentry/raven-js#838, #768) + // - `htmlTreeAsString` because it's complex, and just accessing the DOM incorrectly + // can throw an exception in some circumstances. + + var target; + + try { + target = htmlTreeAsString(evt.target); + } catch (e) { + target = ''; + } + + self.captureBreadcrumb({ + category: 'ui.' + evtName, + // e.g. ui.click, ui.input + message: target + }); + }; + }, + + /** + * Wraps addEventListener to capture keypress UI events + * @returns {Function} + * @private + */ + _keypressEventHandler: function _keypressEventHandler() { + var self = this, + debounceDuration = 1000; // milliseconds + // TODO: if somehow user switches keypress target before + // debounce timeout is triggered, we will only capture + // a single breadcrumb from the FIRST target (acceptable?) + + return function (evt) { + var target; + + try { + target = evt.target; + } catch (e) { + // just accessing event properties can throw an exception in some rare circumstances + // see: https://github.com/getsentry/raven-js/issues/838 + return; + } + + var tagName = target && target.tagName; // only consider keypress events on actual input elements + // this will disregard keypresses targeting body (e.g. tabbing + // through elements, hotkeys, etc) + + if (!tagName || tagName !== 'INPUT' && tagName !== 'TEXTAREA' && !target.isContentEditable) return; // record first keypress in a series, but ignore subsequent + // keypresses until debounce clears + + var timeout = self._keypressTimeout; + + if (!timeout) { + self._breadcrumbEventHandler('input')(evt); + } + + clearTimeout(timeout); + self._keypressTimeout = setTimeout(function () { + self._keypressTimeout = null; + }, debounceDuration); + }; + }, + + /** + * Captures a breadcrumb of type "navigation", normalizing input URLs + * @param to the originating URL + * @param from the target URL + * @private + */ + _captureUrlChange: function _captureUrlChange(from, to) { + var parsedLoc = parseUrl(this._location.href); + var parsedTo = parseUrl(to); + var parsedFrom = parseUrl(from); // because onpopstate only tells you the "new" (to) value of location.href, and + // not the previous (from) value, we need to track the value of the current URL + // state ourselves + + this._lastHref = to; // Use only the path component of the URL if the URL matches the current + // document (almost all the time when using pushState) + + if (parsedLoc.protocol === parsedTo.protocol && parsedLoc.host === parsedTo.host) to = parsedTo.relative; + if (parsedLoc.protocol === parsedFrom.protocol && parsedLoc.host === parsedFrom.host) from = parsedFrom.relative; + this.captureBreadcrumb({ + category: 'navigation', + data: { + to: to, + from: from + } + }); + }, + _patchFunctionToString: function _patchFunctionToString() { + var self = this; + self._originalFunctionToString = Function.prototype.toString; // eslint-disable-next-line no-extend-native + + Function.prototype.toString = function () { + if (typeof this === 'function' && this.__raven__) { + return self._originalFunctionToString.apply(this.__orig__, arguments); + } + + return self._originalFunctionToString.apply(this, arguments); + }; + }, + _unpatchFunctionToString: function _unpatchFunctionToString() { + if (this._originalFunctionToString) { + // eslint-disable-next-line no-extend-native + Function.prototype.toString = this._originalFunctionToString; + } + }, + + /** + * Wrap timer functions and event targets to catch errors and provide + * better metadata. + */ + _instrumentTryCatch: function _instrumentTryCatch() { + var self = this; + var wrappedBuiltIns = self._wrappedBuiltIns; + + function wrapTimeFn(orig) { + return function (fn, t) { + // preserve arity + // Make a copy of the arguments to prevent deoptimization + // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments + var args = new Array(arguments.length); + + for (var i = 0; i < args.length; ++i) { + args[i] = arguments[i]; + } + + var originalCallback = args[0]; + + if (isFunction(originalCallback)) { + args[0] = self.wrap(originalCallback); + } // IE < 9 doesn't support .call/.apply on setInterval/setTimeout, but it + // also supports only two arguments and doesn't care what this is, so we + // can just call the original function directly. + + + if (orig.apply) { + return orig.apply(this, args); + } else { + return orig(args[0], args[1]); + } + }; + } + + var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; + + function wrapEventTarget(global) { + var proto = _window$1[global] && _window$1[global].prototype; + + if (proto && proto.hasOwnProperty && proto.hasOwnProperty('addEventListener')) { + fill(proto, 'addEventListener', function (orig) { + return function (evtName, fn, capture, secure) { + // preserve arity + try { + if (fn && fn.handleEvent) { + fn.handleEvent = self.wrap(fn.handleEvent); + } + } catch (err) {} // can sometimes get 'Permission denied to access property "handle Event' + // More breadcrumb DOM capture ... done here and not in `_instrumentBreadcrumbs` + // so that we don't have more than one wrapper function + + + var before, clickHandler, keypressHandler; + + if (autoBreadcrumbs && autoBreadcrumbs.dom && (global === 'EventTarget' || global === 'Node')) { + // NOTE: generating multiple handlers per addEventListener invocation, should + // revisit and verify we can just use one (almost certainly) + clickHandler = self._breadcrumbEventHandler('click'); + keypressHandler = self._keypressEventHandler(); + + before = function before(evt) { + // need to intercept every DOM event in `before` argument, in case that + // same wrapped method is re-used for different events (e.g. mousemove THEN click) + // see #724 + if (!evt) return; + var eventType; + + try { + eventType = evt.type; + } catch (e) { + // just accessing event properties can throw an exception in some rare circumstances + // see: https://github.com/getsentry/raven-js/issues/838 + return; + } + + if (eventType === 'click') return clickHandler(evt);else if (eventType === 'keypress') return keypressHandler(evt); + }; + } + + return orig.call(this, evtName, self.wrap(fn, undefined, before), capture, secure); + }; + }, wrappedBuiltIns); + fill(proto, 'removeEventListener', function (orig) { + return function (evt, fn, capture, secure) { + try { + fn = fn && (fn.__raven_wrapper__ ? fn.__raven_wrapper__ : fn); + } catch (e) {// ignore, accessing __raven_wrapper__ will throw in some Selenium environments + } + + return orig.call(this, evt, fn, capture, secure); + }; + }, wrappedBuiltIns); + } + } + + fill(_window$1, 'setTimeout', wrapTimeFn, wrappedBuiltIns); + fill(_window$1, 'setInterval', wrapTimeFn, wrappedBuiltIns); + + if (_window$1.requestAnimationFrame) { + fill(_window$1, 'requestAnimationFrame', function (orig) { + return function (cb) { + return orig(self.wrap(cb)); + }; + }, wrappedBuiltIns); + } // event targets borrowed from bugsnag-js: + // https://github.com/bugsnag/bugsnag-js/blob/master/src/bugsnag.js#L666 + + + var eventTargets = ['EventTarget', 'Window', 'Node', 'ApplicationCache', 'AudioTrackList', 'ChannelMergerNode', 'CryptoOperation', 'EventSource', 'FileReader', 'HTMLUnknownElement', 'IDBDatabase', 'IDBRequest', 'IDBTransaction', 'KeyOperation', 'MediaController', 'MessagePort', 'ModalWindow', 'Notification', 'SVGElementInstance', 'Screen', 'TextTrack', 'TextTrackCue', 'TextTrackList', 'WebSocket', 'WebSocketWorker', 'Worker', 'XMLHttpRequest', 'XMLHttpRequestEventTarget', 'XMLHttpRequestUpload']; + + for (var i = 0; i < eventTargets.length; i++) { + wrapEventTarget(eventTargets[i]); + } + }, + + /** + * Instrument browser built-ins w/ breadcrumb capturing + * - XMLHttpRequests + * - DOM interactions (click/typing) + * - window.location changes + * - console + * + * Can be disabled or individually configured via the `autoBreadcrumbs` config option + */ + _instrumentBreadcrumbs: function _instrumentBreadcrumbs() { + var self = this; + var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; + var wrappedBuiltIns = self._wrappedBuiltIns; + + function wrapProp(prop, xhr) { + if (prop in xhr && isFunction(xhr[prop])) { + fill(xhr, prop, function (orig) { + return self.wrap(orig); + }); // intentionally don't track filled methods on XHR instances + } + } + + if (autoBreadcrumbs.xhr && 'XMLHttpRequest' in _window$1) { + var xhrproto = XMLHttpRequest.prototype; + fill(xhrproto, 'open', function (origOpen) { + return function (method, url) { + // preserve arity + // if Sentry key appears in URL, don't capture + if (isString(url) && url.indexOf(self._globalKey) === -1) { + this.__raven_xhr = { + method: method, + url: url, + status_code: null + }; + } + + return origOpen.apply(this, arguments); + }; + }, wrappedBuiltIns); + fill(xhrproto, 'send', function (origSend) { + return function () { + // preserve arity + var xhr = this; + + function onreadystatechangeHandler() { + if (xhr.__raven_xhr && xhr.readyState === 4) { + try { + // touching statusCode in some platforms throws + // an exception + xhr.__raven_xhr.status_code = xhr.status; + } catch (e) { + /* do nothing */ + } + + self.captureBreadcrumb({ + type: 'http', + category: 'xhr', + data: xhr.__raven_xhr + }); + } + } + + var props = ['onload', 'onerror', 'onprogress']; + + for (var j = 0; j < props.length; j++) { + wrapProp(props[j], xhr); + } + + if ('onreadystatechange' in xhr && isFunction(xhr.onreadystatechange)) { + fill(xhr, 'onreadystatechange', function (orig) { + return self.wrap(orig, undefined, onreadystatechangeHandler); + } + /* intentionally don't track this instrumentation */ + ); + } else { + // if onreadystatechange wasn't actually set by the page on this xhr, we + // are free to set our own and capture the breadcrumb + xhr.onreadystatechange = onreadystatechangeHandler; + } + + return origSend.apply(this, arguments); + }; + }, wrappedBuiltIns); + } + + if (autoBreadcrumbs.xhr && supportsFetch()) { + fill(_window$1, 'fetch', function (origFetch) { + return function () { + // preserve arity + // Make a copy of the arguments to prevent deoptimization + // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments + var args = new Array(arguments.length); + + for (var i = 0; i < args.length; ++i) { + args[i] = arguments[i]; + } + + var fetchInput = args[0]; + var method = 'GET'; + var url; + + if (typeof fetchInput === 'string') { + url = fetchInput; + } else if ('Request' in _window$1 && fetchInput instanceof _window$1.Request) { + url = fetchInput.url; + + if (fetchInput.method) { + method = fetchInput.method; + } + } else { + url = '' + fetchInput; + } // if Sentry key appears in URL, don't capture, as it's our own request + + + if (url.indexOf(self._globalKey) !== -1) { + return origFetch.apply(this, args); + } + + if (args[1] && args[1].method) { + method = args[1].method; + } + + var fetchData = { + method: method, + url: url, + status_code: null + }; + return origFetch.apply(this, args).then(function (response) { + fetchData.status_code = response.status; + self.captureBreadcrumb({ + type: 'http', + category: 'fetch', + data: fetchData + }); + return response; + }); + }; + }, wrappedBuiltIns); + } // Capture breadcrumbs from any click that is unhandled / bubbled up all the way + // to the document. Do this before we instrument addEventListener. + + + if (autoBreadcrumbs.dom && this._hasDocument) { + if (_document.addEventListener) { + _document.addEventListener('click', self._breadcrumbEventHandler('click'), false); + + _document.addEventListener('keypress', self._keypressEventHandler(), false); + } else { + // IE8 Compatibility + _document.attachEvent('onclick', self._breadcrumbEventHandler('click')); + + _document.attachEvent('onkeypress', self._keypressEventHandler()); + } + } // record navigation (URL) changes + // NOTE: in Chrome App environment, touching history.pushState, *even inside + // a try/catch block*, will cause Chrome to output an error to console.error + // borrowed from: https://github.com/angular/angular.js/pull/13945/files + + + var chrome = _window$1.chrome; + var isChromePackagedApp = chrome && chrome.app && chrome.app.runtime; + var hasPushAndReplaceState = !isChromePackagedApp && _window$1.history && history.pushState && history.replaceState; + + if (autoBreadcrumbs.location && hasPushAndReplaceState) { + // TODO: remove onpopstate handler on uninstall() + var oldOnPopState = _window$1.onpopstate; + + _window$1.onpopstate = function () { + var currentHref = self._location.href; + + self._captureUrlChange(self._lastHref, currentHref); + + if (oldOnPopState) { + return oldOnPopState.apply(this, arguments); + } + }; + + var historyReplacementFunction = function historyReplacementFunction(origHistFunction) { + // note history.pushState.length is 0; intentionally not declaring + // params to preserve 0 arity + return function () + /* state, title, url */ + { + var url = arguments.length > 2 ? arguments[2] : undefined; // url argument is optional + + if (url) { + // coerce to string (this is what pushState does) + self._captureUrlChange(self._lastHref, url + ''); + } + + return origHistFunction.apply(this, arguments); + }; + }; + + fill(history, 'pushState', historyReplacementFunction, wrappedBuiltIns); + fill(history, 'replaceState', historyReplacementFunction, wrappedBuiltIns); + } + + if (autoBreadcrumbs.console && 'console' in _window$1 && console.log) { + // console + var consoleMethodCallback = function consoleMethodCallback(msg, data) { + self.captureBreadcrumb({ + message: msg, + level: data.level, + category: 'console' + }); + }; + + each(['debug', 'info', 'warn', 'error', 'log'], function (_, level) { + wrapConsoleMethod(console, level, consoleMethodCallback); + }); + } + }, + _restoreBuiltIns: function _restoreBuiltIns() { + // restore any wrapped builtins + var builtin; + + while (this._wrappedBuiltIns.length) { + builtin = this._wrappedBuiltIns.shift(); + var obj = builtin[0], + name = builtin[1], + orig = builtin[2]; + obj[name] = orig; + } + }, + _restoreConsole: function _restoreConsole() { + // eslint-disable-next-line guard-for-in + for (var method in this._originalConsoleMethods) { + this._originalConsole[method] = this._originalConsoleMethods[method]; + } + }, + _drainPlugins: function _drainPlugins() { + var self = this; // FIX ME TODO + + each(this._plugins, function (_, plugin) { + var installer = plugin[0]; + var args = plugin[1]; + installer.apply(self, [self].concat(args)); + }); + }, + _parseDSN: function _parseDSN(str) { + var m = dsnPattern.exec(str), + dsn = {}, + i = 7; + + try { + while (i--) { + dsn[dsnKeys[i]] = m[i] || ''; + } + } catch (e) { + throw new configError('Invalid DSN: ' + str); + } + + if (dsn.pass && !this._globalOptions.allowSecretKey) { + throw new configError('Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key'); + } + + return dsn; + }, + _getGlobalServer: function _getGlobalServer(uri) { + // assemble the endpoint from the uri pieces + var globalServer = '//' + uri.host + (uri.port ? ':' + uri.port : ''); + + if (uri.protocol) { + globalServer = uri.protocol + ':' + globalServer; + } + + return globalServer; + }, + _handleOnErrorStackInfo: function _handleOnErrorStackInfo() { + // if we are intentionally ignoring errors via onerror, bail out + if (!this._ignoreOnError) { + this._handleStackInfo.apply(this, arguments); + } + }, + _handleStackInfo: function _handleStackInfo(stackInfo, options) { + var frames = this._prepareFrames(stackInfo, options); + + this._triggerEvent('handle', { + stackInfo: stackInfo, + options: options + }); + + this._processException(stackInfo.name, stackInfo.message, stackInfo.url, stackInfo.lineno, frames, options); + }, + _prepareFrames: function _prepareFrames(stackInfo, options) { + var self = this; + var frames = []; + + if (stackInfo.stack && stackInfo.stack.length) { + each(stackInfo.stack, function (i, stack) { + var frame = self._normalizeFrame(stack, stackInfo.url); + + if (frame) { + frames.push(frame); + } + }); // e.g. frames captured via captureMessage throw + + if (options && options.trimHeadFrames) { + for (var j = 0; j < options.trimHeadFrames && j < frames.length; j++) { + frames[j].in_app = false; + } + } + } + + frames = frames.slice(0, this._globalOptions.stackTraceLimit); + return frames; + }, + _normalizeFrame: function _normalizeFrame(frame, stackInfoUrl) { + // normalize the frames data + var normalized = { + filename: frame.url, + lineno: frame.line, + colno: frame.column, + function: frame.func || '?' + }; // Case when we don't have any information about the error + // E.g. throwing a string or raw object, instead of an `Error` in Firefox + // Generating synthetic error doesn't add any value here + // + // We should probably somehow let a user know that they should fix their code + + if (!frame.url) { + normalized.filename = stackInfoUrl; // fallback to whole stacks url from onerror handler + } + + normalized.in_app = !( // determine if an exception came from outside of our app + // first we check the global includePaths list. + !!this._globalOptions.includePaths.test && !this._globalOptions.includePaths.test(normalized.filename) || // Now we check for fun, if the function name is Raven or TraceKit + /(Raven|TraceKit)\./.test(normalized['function']) || // finally, we do a last ditch effort and check for raven.min.js + /raven\.(min\.)?js$/.test(normalized.filename)); + return normalized; + }, + _processException: function _processException(type, message, fileurl, lineno, frames, options) { + var prefixedMessage = (type ? type + ': ' : '') + (message || ''); + + if (!!this._globalOptions.ignoreErrors.test && (this._globalOptions.ignoreErrors.test(message) || this._globalOptions.ignoreErrors.test(prefixedMessage))) { + return; + } + + var stacktrace; + + if (frames && frames.length) { + fileurl = frames[0].filename || fileurl; // Sentry expects frames oldest to newest + // and JS sends them as newest to oldest + + frames.reverse(); + stacktrace = { + frames: frames + }; + } else if (fileurl) { + stacktrace = { + frames: [{ + filename: fileurl, + lineno: lineno, + in_app: true + }] + }; + } + + if (!!this._globalOptions.ignoreUrls.test && this._globalOptions.ignoreUrls.test(fileurl)) { + return; + } + + if (!!this._globalOptions.whitelistUrls.test && !this._globalOptions.whitelistUrls.test(fileurl)) { + return; + } + + var data = objectMerge({ + // sentry.interfaces.Exception + exception: { + values: [{ + type: type, + value: message, + stacktrace: stacktrace + }] + }, + culprit: fileurl + }, options); // Fire away! + + this._send(data); + }, + _trimPacket: function _trimPacket(data) { + // For now, we only want to truncate the two different messages + // but this could/should be expanded to just trim everything + var max = this._globalOptions.maxMessageLength; + + if (data.message) { + data.message = truncate(data.message, max); + } + + if (data.exception) { + var exception = data.exception.values[0]; + exception.value = truncate(exception.value, max); + } + + var request = data.request; + + if (request) { + if (request.url) { + request.url = truncate(request.url, this._globalOptions.maxUrlLength); + } + + if (request.Referer) { + request.Referer = truncate(request.Referer, this._globalOptions.maxUrlLength); + } + } + + if (data.breadcrumbs && data.breadcrumbs.values) this._trimBreadcrumbs(data.breadcrumbs); + return data; + }, + + /** + * Truncate breadcrumb values (right now just URLs) + */ + _trimBreadcrumbs: function _trimBreadcrumbs(breadcrumbs) { + // known breadcrumb properties with urls + // TODO: also consider arbitrary prop values that start with (https?)?:// + var urlProps = ['to', 'from', 'url'], + urlProp, + crumb, + data; + + for (var i = 0; i < breadcrumbs.values.length; ++i) { + crumb = breadcrumbs.values[i]; + if (!crumb.hasOwnProperty('data') || !isObject(crumb.data) || objectFrozen(crumb.data)) continue; + data = objectMerge({}, crumb.data); + + for (var j = 0; j < urlProps.length; ++j) { + urlProp = urlProps[j]; + + if (data.hasOwnProperty(urlProp) && data[urlProp]) { + data[urlProp] = truncate(data[urlProp], this._globalOptions.maxUrlLength); + } + } + + breadcrumbs.values[i].data = data; + } + }, + _getHttpData: function _getHttpData() { + if (!this._hasNavigator && !this._hasDocument) return; + var httpData = {}; + + if (this._hasNavigator && _navigator.userAgent) { + httpData.headers = { + 'User-Agent': navigator.userAgent + }; + } // Check in `window` instead of `document`, as we may be in ServiceWorker environment + + + if (_window$1.location && _window$1.location.href) { + httpData.url = _window$1.location.href; + } + + if (this._hasDocument && _document.referrer) { + if (!httpData.headers) httpData.headers = {}; + httpData.headers.Referer = _document.referrer; + } + + return httpData; + }, + _resetBackoff: function _resetBackoff() { + this._backoffDuration = 0; + this._backoffStart = null; + }, + _shouldBackoff: function _shouldBackoff() { + return this._backoffDuration && now() - this._backoffStart < this._backoffDuration; + }, + + /** + * Returns true if the in-process data payload matches the signature + * of the previously-sent data + * + * NOTE: This has to be done at this level because TraceKit can generate + * data from window.onerror WITHOUT an exception object (IE8, IE9, + * other old browsers). This can take the form of an "exception" + * data object with a single frame (derived from the onerror args). + */ + _isRepeatData: function _isRepeatData(current) { + var last = this._lastData; + if (!last || current.message !== last.message || // defined for captureMessage + current.culprit !== last.culprit // defined for captureException/onerror + ) return false; // Stacktrace interface (i.e. from captureMessage) + + if (current.stacktrace || last.stacktrace) { + return isSameStacktrace(current.stacktrace, last.stacktrace); + } else if (current.exception || last.exception) { + // Exception interface (i.e. from captureException/onerror) + return isSameException(current.exception, last.exception); + } + + return true; + }, + _setBackoffState: function _setBackoffState(request) { + // If we are already in a backoff state, don't change anything + if (this._shouldBackoff()) { + return; + } + + var status = request.status; // 400 - project_id doesn't exist or some other fatal + // 401 - invalid/revoked dsn + // 429 - too many requests + + if (!(status === 400 || status === 401 || status === 429)) return; + var retry; + + try { + // If Retry-After is not in Access-Control-Expose-Headers, most + // browsers will throw an exception trying to access it + if (supportsFetch()) { + retry = request.headers.get('Retry-After'); + } else { + retry = request.getResponseHeader('Retry-After'); + } // Retry-After is returned in seconds + + + retry = parseInt(retry, 10) * 1000; + } catch (e) { + /* eslint no-empty:0 */ + } + + this._backoffDuration = retry ? // If Sentry server returned a Retry-After value, use it + retry : // Otherwise, double the last backoff duration (starts at 1 sec) + this._backoffDuration * 2 || 1000; + this._backoffStart = now(); + }, + _send: function _send(data) { + var globalOptions = this._globalOptions; + + var baseData = { + project: this._globalProject, + logger: globalOptions.logger, + platform: 'javascript' + }, + httpData = this._getHttpData(); + + if (httpData) { + baseData.request = httpData; + } // HACK: delete `trimHeadFrames` to prevent from appearing in outbound payload + + + if (data.trimHeadFrames) delete data.trimHeadFrames; + data = objectMerge(baseData, data); // Merge in the tags and extra separately since objectMerge doesn't handle a deep merge + + data.tags = objectMerge(objectMerge({}, this._globalContext.tags), data.tags); + data.extra = objectMerge(objectMerge({}, this._globalContext.extra), data.extra); // Send along our own collected metadata with extra + + data.extra['session:duration'] = now() - this._startTime; + + if (this._breadcrumbs && this._breadcrumbs.length > 0) { + // intentionally make shallow copy so that additions + // to breadcrumbs aren't accidentally sent in this request + data.breadcrumbs = { + values: [].slice.call(this._breadcrumbs, 0) + }; + } + + if (this._globalContext.user) { + // sentry.interfaces.User + data.user = this._globalContext.user; + } // Include the environment if it's defined in globalOptions + + + if (globalOptions.environment) data.environment = globalOptions.environment; // Include the release if it's defined in globalOptions + + if (globalOptions.release) data.release = globalOptions.release; // Include server_name if it's defined in globalOptions + + if (globalOptions.serverName) data.server_name = globalOptions.serverName; // Cleanup empty properties before sending them to the server + + Object.keys(data).forEach(function (key) { + if (data[key] == null || data[key] === '' || isEmptyObject(data[key])) { + delete data[key]; + } + }); + + if (isFunction(globalOptions.dataCallback)) { + data = globalOptions.dataCallback(data) || data; + } // Why?????????? + + + if (!data || isEmptyObject(data)) { + return; + } // Check if the request should be filtered or not + + + if (isFunction(globalOptions.shouldSendCallback) && !globalOptions.shouldSendCallback(data)) { + return; + } // Backoff state: Sentry server previously responded w/ an error (e.g. 429 - too many requests), + // so drop requests until "cool-off" period has elapsed. + + + if (this._shouldBackoff()) { + this._logDebug('warn', 'Raven dropped error due to backoff: ', data); + + return; + } + + if (typeof globalOptions.sampleRate === 'number') { + if (Math.random() < globalOptions.sampleRate) { + this._sendProcessedPayload(data); + } + } else { + this._sendProcessedPayload(data); + } + }, + _getUuid: function _getUuid() { + return uuid4(); + }, + _sendProcessedPayload: function _sendProcessedPayload(data, callback) { + var self = this; + var globalOptions = this._globalOptions; + if (!this.isSetup()) return; // Try and clean up the packet before sending by truncating long values + + data = this._trimPacket(data); // ideally duplicate error testing should occur *before* dataCallback/shouldSendCallback, + // but this would require copying an un-truncated copy of the data packet, which can be + // arbitrarily deep (extra_data) -- could be worthwhile? will revisit + + if (!this._globalOptions.allowDuplicates && this._isRepeatData(data)) { + this._logDebug('warn', 'Raven dropped repeat event: ', data); + + return; + } // Send along an event_id if not explicitly passed. + // This event_id can be used to reference the error within Sentry itself. + // Set lastEventId after we know the error should actually be sent + + + this._lastEventId = data.event_id || (data.event_id = this._getUuid()); // Store outbound payload after trim + + this._lastData = data; + + this._logDebug('debug', 'Raven about to send:', data); + + var auth = { + sentry_version: '7', + sentry_client: 'raven-js/' + this.VERSION, + sentry_key: this._globalKey + }; + + if (this._globalSecret) { + auth.sentry_secret = this._globalSecret; + } + + var exception = data.exception && data.exception.values[0]; // only capture 'sentry' breadcrumb is autoBreadcrumbs is truthy + + if (this._globalOptions.autoBreadcrumbs && this._globalOptions.autoBreadcrumbs.sentry) { + this.captureBreadcrumb({ + category: 'sentry', + message: exception ? (exception.type ? exception.type + ': ' : '') + exception.value : data.message, + event_id: data.event_id, + level: data.level || 'error' // presume error unless specified + + }); + } + + var url = this._globalEndpoint; + + (globalOptions.transport || this._makeRequest).call(this, { + url: url, + auth: auth, + data: data, + options: globalOptions, + onSuccess: function success() { + self._resetBackoff(); + + self._triggerEvent('success', { + data: data, + src: url + }); + + callback && callback(); + }, + onError: function failure(error) { + self._logDebug('error', 'Raven transport failed to send: ', error); + + if (error.request) { + self._setBackoffState(error.request); + } + + self._triggerEvent('failure', { + data: data, + src: url + }); + + error = error || new Error('Raven send failed (no additional details provided)'); + callback && callback(error); + } + }); + }, + _makeRequest: function _makeRequest(opts) { + // Auth is intentionally sent as part of query string (NOT as custom HTTP header) to avoid preflight CORS requests + var url = opts.url + '?' + urlencode(opts.auth); + var evaluatedHeaders = null; + var evaluatedFetchParameters = {}; + + if (opts.options.headers) { + evaluatedHeaders = this._evaluateHash(opts.options.headers); + } + + if (opts.options.fetchParameters) { + evaluatedFetchParameters = this._evaluateHash(opts.options.fetchParameters); + } + + if (supportsFetch()) { + evaluatedFetchParameters.body = stringify_1(opts.data); + var defaultFetchOptions = objectMerge({}, this._fetchDefaults); + var fetchOptions = objectMerge(defaultFetchOptions, evaluatedFetchParameters); + + if (evaluatedHeaders) { + fetchOptions.headers = evaluatedHeaders; + } + + return _window$1.fetch(url, fetchOptions).then(function (response) { + if (response.ok) { + opts.onSuccess && opts.onSuccess(); + } else { + var error = new Error('Sentry error code: ' + response.status); // It's called request only to keep compatibility with XHR interface + // and not add more redundant checks in setBackoffState method + + error.request = response; + opts.onError && opts.onError(error); + } + })['catch'](function () { + opts.onError && opts.onError(new Error('Sentry error code: network unavailable')); + }); + } + + var request = _window$1.XMLHttpRequest && new _window$1.XMLHttpRequest(); + if (!request) return; // if browser doesn't support CORS (e.g. IE7), we are out of luck + + var hasCORS = 'withCredentials' in request || typeof XDomainRequest !== 'undefined'; + if (!hasCORS) return; + + if ('withCredentials' in request) { + request.onreadystatechange = function () { + if (request.readyState !== 4) { + return; + } else if (request.status === 200) { + opts.onSuccess && opts.onSuccess(); + } else if (opts.onError) { + var err = new Error('Sentry error code: ' + request.status); + err.request = request; + opts.onError(err); + } + }; + } else { + request = new XDomainRequest(); // xdomainrequest cannot go http -> https (or vice versa), + // so always use protocol relative + + url = url.replace(/^https?:/, ''); // onreadystatechange not supported by XDomainRequest + + if (opts.onSuccess) { + request.onload = opts.onSuccess; + } + + if (opts.onError) { + request.onerror = function () { + var err = new Error('Sentry error code: XDomainRequest'); + err.request = request; + opts.onError(err); + }; + } + } + + request.open('POST', url); + + if (evaluatedHeaders) { + each(evaluatedHeaders, function (key, value) { + request.setRequestHeader(key, value); + }); + } + + request.send(stringify_1(opts.data)); + }, + _evaluateHash: function _evaluateHash(hash) { + var evaluated = {}; + + for (var key in hash) { + if (hash.hasOwnProperty(key)) { + var value = hash[key]; + evaluated[key] = typeof value === 'function' ? value() : value; + } + } + + return evaluated; + }, + _logDebug: function _logDebug(level) { + if (this._originalConsoleMethods[level] && this.debug) { + // In IE<10 console methods do not have their own 'apply' method + Function.prototype.apply.call(this._originalConsoleMethods[level], this._originalConsole, [].slice.call(arguments, 1)); + } + }, + _mergeContext: function _mergeContext(key, context) { + if (isUndefined(context)) { + delete this._globalContext[key]; + } else { + this._globalContext[key] = objectMerge(this._globalContext[key] || {}, context); + } + } +}; // Deprecations + +Raven$1.prototype.setUser = Raven$1.prototype.setUserContext; +Raven$1.prototype.setReleaseContext = Raven$1.prototype.setRelease; +var raven = Raven$1; + +/** + * Enforces a single instance of the Raven client, and the + * main entry point for Raven. If you are a consumer of the + * Raven library, you SHOULD load this file (vs raven.js). + **/ +// This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) + +var _window = typeof window !== 'undefined' ? window : typeof commonjsGlobal !== 'undefined' ? commonjsGlobal : typeof self !== 'undefined' ? self : {}; + +var _Raven = _window.Raven; +var Raven = new raven(); +/* + * Allow multiple versions of Raven to be installed. + * Strip Raven from the global context and returns the instance. + * + * @return {Raven} + */ + +Raven.noConflict = function () { + _window.Raven = _Raven; + return Raven; +}; + +Raven.afterLoad(); +var singleton = Raven; + +/** + * Angular.js plugin + * + * Provides an $exceptionHandler for Angular.js + */ + +var wrappedCallback$1 = utils.wrappedCallback; // See https://github.com/angular/angular.js/blob/v1.4.7/src/minErr.js + +var angularPattern = /^\[((?:[$a-zA-Z0-9]+:)?(?:[$a-zA-Z0-9]+))\] (.*?)\n?(\S+)$/; +var moduleName = 'ngRaven'; + +function angularPlugin(Raven, angular) { + angular = angular || window.angular; + if (!angular) return; + + function RavenProvider() { + this.$get = ['$window', function ($window) { + return Raven; + }]; + } + + function ExceptionHandlerProvider($provide) { + $provide.decorator('$exceptionHandler', ['Raven', '$delegate', exceptionHandler]); + } + + function exceptionHandler(R, $delegate) { + return function (ex, cause) { + R.captureException(ex, { + extra: { + cause: cause + } + }); + $delegate(ex, cause); + }; + } + + angular.module(moduleName, []).provider('Raven', RavenProvider).config(['$provide', ExceptionHandlerProvider]); + Raven.setDataCallback(wrappedCallback$1(function (data) { + return angularPlugin._normalizeData(data); + })); +} + +angularPlugin._normalizeData = function (data) { + // We only care about mutating an exception + var exception = data.exception; + + if (exception) { + exception = exception.values[0]; + var matches = angularPattern.exec(exception.value); + + if (matches) { + // This type now becomes something like: $rootScope:inprog + exception.type = matches[1]; + exception.value = matches[2]; + data.message = exception.type + ': ' + exception.value; // auto set a new tag specifically for the angular error url + + data.extra.angularDocs = matches[3].substr(0, 250); + } + } + + return data; +}; + +angularPlugin.moduleName = moduleName; +var angular = angularPlugin; + +/** + * Ember.js plugin + * + * Patches event handler callbacks and ajax callbacks. + */ +function emberPlugin(Raven, Ember) { + Ember = Ember || window.Ember; // quit if Ember isn't on the page + + if (!Ember) return; + var _oldOnError = Ember.onerror; + + Ember.onerror = function EmberOnError(error) { + Raven.captureException(error); + + if (typeof _oldOnError === 'function') { + _oldOnError.call(this, error); + } + }; + + Ember.RSVP.on('error', function (reason) { + if (reason instanceof Error) { + Raven.captureException(reason, { + extra: { + context: 'Unhandled Promise error detected' + } + }); + } else { + Raven.captureMessage('Unhandled Promise error detected', { + extra: { + reason: reason + } + }); + } + }); +} + +var ember = emberPlugin; + +/* This file was generated by './scripts/generate-plugin-combinations.js'! */ + +singleton.addPlugin(angular).addPlugin(ember); +var angular_ember = {}; + +return angular_ember; + +}))); diff --git a/dist/angular,ember/raven.min.js b/dist/angular,ember/raven.min.js new file mode 100644 index 000000000000..cbf97dd61cbb --- /dev/null +++ b/dist/angular,ember/raven.min.js @@ -0,0 +1,3 @@ +/*! Raven.js 3.22.2 (1b6187b) | github.com/getsentry/raven-js */ +!function(a,b){"object"==typeof exports&&"undefined"!=typeof module?module.exports=b():"function"==typeof define&&define.amd?define(b):a.Raven=b()}(this,function(){"use strict";function a(a,b){return b={exports:{}},a(b,b.exports),b.exports}function b(a){return(b="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(a){return typeof a}:function(a){return a&&"function"==typeof Symbol&&a.constructor===Symbol&&a!==Symbol.prototype?"symbol":typeof a})(a)}function c(a){return"object"===b(a)&&null!==a}function d(a){switch({}.toString.call(a)){case"[object Error]":return!0;case"[object Exception]":return!0;case"[object DOMException]":return!0;default:return a instanceof Error}}function e(a){return l()&&"[object ErrorEvent]"==={}.toString.call(a)}function f(a){return void 0===a}function g(a){return"function"==typeof a}function h(a){return"[object Object]"===Object.prototype.toString.call(a)}function i(a){return"[object String]"===Object.prototype.toString.call(a)}function j(a){return"[object Array]"===Object.prototype.toString.call(a)}function k(a){if(!h(a))return!1;for(var b in a)if(a.hasOwnProperty(b))return!1;return!0}function l(){try{return new ErrorEvent(""),!0}catch(a){return!1}}function m(){if(!("fetch"in O))return!1;try{return new Headers,new Request(""),new Response,!0}catch(a){return!1}}function n(a){function b(b,c){var d=a(b)||b;return c?c(d)||d:d}return b}function o(a,b){var c,d;if(f(a.length))for(c in a)s(a,c)&&b.call(null,c,a[c]);else if(d=a.length)for(c=0;c ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function y(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&i(b))for(c=b.split(/\s+/),f=0;f=0;--b)l[b]===a&&l.splice(b,1)}function c(){g(),l=[]}function d(a,b){var c=null;if(!b||Q.collectWindowErrors){for(var d in l)if(l.hasOwnProperty(d))try{l[d].apply(null,[a].concat(S.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function e(a,b,c,e,f){var g=null,i=P.isErrorEvent(f)?f.error:f,k=P.isErrorEvent(a)?a.message:a;if(o)Q.computeStackTrace.augmentStackTraceWithInitialElement(o,b,c,k),h();else if(i&&P.isError(i))g=Q.computeStackTrace(i),d(g,!0);else{var l,m={url:b,line:c,column:e},n=void 0;if("[object String]"==={}.toString.call(k)){var l=k.match(U);l&&(n=l[1],k=l[2])}m.func=T,g={name:n,message:k,url:F(),stack:[m]},d(g,!0)}return!!j&&j.apply(this,arguments)}function f(){k||(j=R.onerror,R.onerror=e,k=!0)}function g(){k&&(R.onerror=j,k=!1,j=void 0)}function h(){var a=o,b=m;m=null,o=null,n=null,d.apply(null,[a,!1].concat(b))}function i(a,b){var c=S.call(arguments,1);if(o){if(n===a)return;h()}var d=Q.computeStackTrace(a);if(o=d,n=a,m=c,setTimeout(function(){n===a&&h()},d.incomplete?2e3:0),b!==!1)throw a}var j,k,l=[],m=null,n=null,o=null;return i.subscribe=a,i.unsubscribe=b,i.uninstall=c,i}(),Q.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,d,e=/^\s*at (.*?) ?\(((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,f=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|\[native).*?|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,g=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,h=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,i=/\((\S*)(?::(\d+))(?::(\d+))\)/,j=a.stack.split("\n"),k=[],l=(/^(.*) is undefined$/.exec(a.message),0),m=j.length;l eval")>-1;o&&(b=h.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==l||c[5]||"undefined"==typeof a.columnNumber||(k[0].column=a.columnNumber+1),d={url:c[3],func:c[1]||T,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}!d.func&&d.line&&(d.func=T),k.push(d)}return k.length?{name:a.name,message:a.message,url:F(),stack:k}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=T),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,e){for(var f,g,h=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,i=[],j={},k=!1,l=c.caller;l&&!k;l=l.caller)if(l!==d&&l!==Q.report){if(g={url:null,func:T,line:null,column:null},l.name?g.func=l.name:(f=h.exec(l.toString()))&&(g.func=f[1]),"undefined"==typeof g.func)try{g.func=f.input.substring(0,f.input.indexOf("{"))}catch(m){}j[""+l]?k=!0:j[""+l]=!0,i.push(g)}e&&i.splice(0,e);var n={name:a.name,message:a.message,url:F(),stack:i};return b(n,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),n}function d(b,d){var e=null;d=null==d?0:+d;try{if(e=a(b))return e}catch(f){if(Q.debug)throw f}try{if(e=c(b,d+1))return e}catch(f){if(Q.debug)throw f}return{name:b.name,message:b.message,url:F()}}return d.augmentStackTraceWithInitialElement=b,d.computeStackTraceFromStackProp=a,d}();var V=Q,W=a(function(a,b){function c(a,b){for(var c=0;c0){var i=c(d,this);~i?d.splice(i+1):d.push(this),~i?f.splice(i,1/0,g):f.push(g),~c(d,h)&&(h=b.call(this,g,h))}else d.push(h);return null==a?h instanceof Error?e(h):h:a.call(this,g,h)}}b=a.exports=d,b.getSerialize=f});G.prototype=new Error,G.prototype.constructor=G;var X=G,Y=function(a,b,c){var d=a[b],e=a;if(b in a){var f="warn"===b?"warning":b;a[b]=function(){var a=[].slice.call(arguments),g=P.safeJoin(a," "),h={level:f,logger:"console",extra:{arguments:a}};"assert"===b?a[0]===!1&&(g="Assertion failed: "+(P.safeJoin(a.slice(1)," ")||"console.assert"),h.extra.arguments=a.slice(1),c&&c(g,h)):c&&c(g,h),d&&Function.prototype.apply.call(d,e,a)}}},Z={wrapMethod:Y},$=P.isError,_=P.isObject,aa=P.isErrorEvent,ba=P.isUndefined,ca=P.isFunction,da=P.isString,ea=P.isArray,fa=P.isEmptyObject,ga=P.each,ha=P.objectMerge,ia=P.truncate,ja=P.objectFrozen,ka=P.hasKey,la=P.joinRegExp,ma=P.urlencode,na=P.uuid4,oa=P.htmlTreeAsString,pa=P.isSameException,qa=P.isSameStacktrace,ra=P.parseUrl,sa=P.fill,ta=P.supportsFetch,ua=Z.wrapMethod,va="source protocol user pass host port path".split(" "),wa=/^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/,xa="undefined"!=typeof window?window:"undefined"!=typeof M?M:"undefined"!=typeof self?self:{},ya=xa.document,za=xa.navigator;J.prototype={VERSION:"3.22.2",debug:!1,TraceKit:V,config:function(a,b){var c=this;if(c.i)return this.D("error","Error: Raven has already been configured"),c;if(!a)return c;var d=c.m;b&&ga(b,function(a,b){"tags"===a||"extra"===a||"user"===a?c.l[a]=b:d[a]=b}),c.setDSN(a),d.ignoreErrors.push(/^Script error\.?$/),d.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/),d.ignoreErrors=la(d.ignoreErrors),d.ignoreUrls=!!d.ignoreUrls.length&&la(d.ignoreUrls),d.whitelistUrls=!!d.whitelistUrls.length&&la(d.whitelistUrls),d.includePaths=la(d.includePaths),d.maxBreadcrumbs=Math.max(0,Math.min(d.maxBreadcrumbs||100,100));var e={xhr:!0,console:!0,dom:!0,location:!0,sentry:!0},f=d.autoBreadcrumbs;"[object Object]"==={}.toString.call(f)?f=ha(e,f):f!==!1&&(f=e),d.autoBreadcrumbs=f;var g={tryCatch:!0},h=d.instrument;return"[object Object]"==={}.toString.call(h)?h=ha(g,h):h!==!1&&(h=g),d.instrument=h,V.collectWindowErrors=!!d.collectWindowErrors,c},install:function(){var a=this;return a.isSetup()&&!a.p&&(V.report.subscribe(function(){a.E.apply(a,arguments)}),a.F(),a.m.instrument&&a.m.instrument.tryCatch&&a.G(),a.m.autoBreadcrumbs&&a.H(),a.I(),a.p=!0),Error.stackTraceLimit=a.m.stackTraceLimit,this},setDSN:function(a){var b=this,c=b.J(a),d=c.path.lastIndexOf("/"),e=c.path.substr(1,d);b.K=a,b.j=c.user,b.L=c.pass&&c.pass.substr(1),b.k=c.path.substr(d+1),b.i=b.M(c),b.N=b.i+"/"+e+"api/"+b.k+"/store/",this.A()},context:function(a,b,c){return ca(a)&&(c=b||[],b=a,a=void 0),this.wrap(a,b).apply(this,c)},wrap:function(a,b,c){function d(){var d=[],f=arguments.length,g=!a||a&&a.deep!==!1;for(c&&ca(c)&&c.apply(this,arguments);f--;)d[f]=g?e.wrap(a,arguments[f]):arguments[f];try{return b.apply(this,d)}catch(h){throw e.O(),e.captureException(h,a),h}}var e=this;if(ba(b)&&!ca(a))return a;if(ca(a)&&(b=a,a=void 0),!ca(b))return b;try{if(b.a)return b;if(b.P)return b.P}catch(f){return b}for(var g in b)ka(b,g)&&(d[g]=b[g]);return d.prototype=b.prototype,b.P=d,d.a=!0,d.b=b,d},uninstall:function(){return V.report.uninstall(),this.Q(),this.R(),this.S(),Error.stackTraceLimit=this.q,this.p=!1,this},captureException:function(a,b){b=ha({trimHeadFrames:0},b?b:{});var c=!$(a),d=!aa(a),e=aa(a)&&!a.error;if(c&&d||e)return this.captureMessage(a,ha(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}));aa(a)&&(a=a.error),this.f=a;try{var f=V.computeStackTrace(a);this.T(f,b)}catch(g){if(a!==g)throw g}return this},captureMessage:function(a,b){if(!this.m.ignoreErrors.test||!this.m.ignoreErrors.test(a)){b=b||{};var c,d=ha({message:a+""},b);try{throw new Error(a)}catch(e){c=e}c.name=null;var f=V.computeStackTrace(c),g=ea(f.stack)&&f.stack[1],h=g&&g.url||"";if((!this.m.ignoreUrls.test||!this.m.ignoreUrls.test(h))&&(!this.m.whitelistUrls.test||this.m.whitelistUrls.test(h))){if(this.m.stacktrace||b&&b.stacktrace){b=ha({fingerprint:a,trimHeadFrames:(b.trimHeadFrames||0)+1},b);var i=this.U(f,b);d.stacktrace={frames:i.reverse()}}return this.V(d),this}}},captureBreadcrumb:function(a){var b=ha({timestamp:H()/1e3},a);if(ca(this.m.breadcrumbCallback)){var c=this.m.breadcrumbCallback(b);if(_(c)&&!fa(c))b=c;else if(c===!1)return this}return this.w.push(b),this.w.length>this.m.maxBreadcrumbs&&this.w.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.t.push([a,b]),this.p&&this.I(),this},setUserContext:function(a){return this.l.user=a,this},setExtraContext:function(a){return this.W("extra",a),this},setTagsContext:function(a){return this.W("tags",a),this},clearContext:function(){return this.l={},this},getContext:function(){return JSON.parse(W(this.l))},setEnvironment:function(a){return this.m.environment=a,this},setRelease:function(a){return this.m.release=a,this},setDataCallback:function(a){var b=this.m.dataCallback;return this.m.dataCallback=I(b,a),this},setBreadcrumbCallback:function(a){var b=this.m.breadcrumbCallback;return this.m.breadcrumbCallback=I(b,a),this},setShouldSendCallback:function(a){var b=this.m.shouldSendCallback;return this.m.shouldSendCallback=I(b,a),this},setTransport:function(a){return this.m.transport=a,this},lastException:function(){return this.f},lastEventId:function(){return this.h},isSetup:function(){return!!this.c&&(!!this.i||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.D("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=xa.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(ya){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new X("Missing eventId");var c=a.dsn||this.K;if(!c)throw new X("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.l.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.M(this.J(c)),h=ya.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(ya.head||ya.body).appendChild(h)}},O:function(){var a=this;this.o+=1,setTimeout(function(){a.o-=1})},X:function(a,b){var c,d;if(this.d){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),ya.createEvent?(c=ya.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=ya.createEventObject(),c.eventType=a);for(d in b)ka(b,d)&&(c[d]=b[d]);if(ya.createEvent)ya.dispatchEvent(c);else try{ya.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},Y:function(a){var b=this;return function(c){if(b.Z=null,b.x!==c){b.x=c;var d;try{d=oa(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},$:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.Z;g||a.Y("input")(c),clearTimeout(g),a.Z=setTimeout(function(){a.Z=null},b)}}},_:function(a,b){var c=ra(this.y.href),d=ra(b),e=ra(a);this.z=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},F:function(){var a=this;a.aa=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.a?a.aa.apply(this.b,arguments):a.aa.apply(this,arguments)}},Q:function(){this.aa&&(Function.prototype.toString=this.aa)},G:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b._(b.z,c+""),a.apply(this,arguments)}};sa(history,"pushState",j,d),sa(history,"replaceState",j,d)}if(c.console&&"console"in xa&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};ga(["debug","info","warn","error","log"],function(a,b){ua(console,b,k)})}},R:function(){for(var a;this.v.length;){a=this.v.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},S:function(){for(var a in this.s)this.r[a]=this.s[a]},I:function(){var a=this;ga(this.t,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},J:function(a){var b=wa.exec(a),c={},d=7;try{for(;d--;)c[va[d]]=b[d]||""}catch(e){throw new X("Invalid DSN: "+a)}if(c.pass&&!this.m.allowSecretKey)throw new X("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},M:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},E:function(){this.o||this.T.apply(this,arguments)},T:function(a,b){var c=this.U(a,b);this.X("handle",{stackInfo:a,options:b}),this.ca(a.name,a.message,a.url,a.lineno,c,b)},U:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(ga(a.stack,function(b,e){var f=c.da(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.w,0)}),this.l.user&&(a.user=this.l.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||fa(a[b]))&&delete a[b]}),ca(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!fa(a)&&(!ca(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.ja()?void this.D("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() href parsing trick because React Native and other +// environments where DOM might not be available + + +function parseUrl$1(url) { + if (typeof url !== 'string') return {}; + var match = url.match(/^(([^:\/?#]+):)?(\/\/([^\/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?$/); // coerce to undefined values to empty string so we don't get 'undefined' + + var query = match[6] || ''; + var fragment = match[8] || ''; + return { + protocol: match[2], + host: match[4], + path: match[5], + relative: match[5] + query + fragment // everything minus origin + + }; +} + +function uuid4$1() { + var crypto = _window$3.crypto || _window$3.msCrypto; + + if (!isUndefined$1(crypto) && crypto.getRandomValues) { + // Use window.crypto API if available + // eslint-disable-next-line no-undef + var arr = new Uint16Array(8); + crypto.getRandomValues(arr); // set 4 in byte 7 + + arr[3] = arr[3] & 0xfff | 0x4000; // set 2 most significant bits of byte 9 to '10' + + arr[4] = arr[4] & 0x3fff | 0x8000; + + var pad = function pad(num) { + var v = num.toString(16); + + while (v.length < 4) { + v = '0' + v; + } + + return v; + }; + + return pad(arr[0]) + pad(arr[1]) + pad(arr[2]) + pad(arr[3]) + pad(arr[4]) + pad(arr[5]) + pad(arr[6]) + pad(arr[7]); + } else { + // http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/2117523#2117523 + return 'xxxxxxxxxxxx4xxxyxxxxxxxxxxxxxxx'.replace(/[xy]/g, function (c) { + var r = Math.random() * 16 | 0, + v = c === 'x' ? r : r & 0x3 | 0x8; + return v.toString(16); + }); + } +} +/** + * Given a child DOM element, returns a query-selector statement describing that + * and its ancestors + * e.g. [HTMLElement] => body > div > input#foo.btn[name=baz] + * @param elem + * @returns {string} + */ + + +function htmlTreeAsString$1(elem) { + /* eslint no-extra-parens:0*/ + var MAX_TRAVERSE_HEIGHT = 5, + MAX_OUTPUT_LEN = 80, + out = [], + height = 0, + len = 0, + separator = ' > ', + sepLength = separator.length, + nextStr; + + while (elem && height++ < MAX_TRAVERSE_HEIGHT) { + nextStr = htmlElementAsString(elem); // bail out if + // - nextStr is the 'html' element + // - the length of the string that would be created exceeds MAX_OUTPUT_LEN + // (ignore this limit if we are on the first iteration) + + if (nextStr === 'html' || height > 1 && len + out.length * sepLength + nextStr.length >= MAX_OUTPUT_LEN) { + break; + } + + out.push(nextStr); + len += nextStr.length; + elem = elem.parentNode; + } + + return out.reverse().join(separator); +} +/** + * Returns a simple, query-selector representation of a DOM element + * e.g. [HTMLElement] => input#foo.btn[name=baz] + * @param HTMLElement + * @returns {string} + */ + + +function htmlElementAsString(elem) { + var out = [], + className, + classes, + key, + attr, + i; + + if (!elem || !elem.tagName) { + return ''; + } + + out.push(elem.tagName.toLowerCase()); + + if (elem.id) { + out.push('#' + elem.id); + } + + className = elem.className; + + if (className && isString$1(className)) { + classes = className.split(/\s+/); + + for (i = 0; i < classes.length; i++) { + out.push('.' + classes[i]); + } + } + + var attrWhitelist = ['type', 'name', 'title', 'alt']; + + for (i = 0; i < attrWhitelist.length; i++) { + key = attrWhitelist[i]; + attr = elem.getAttribute(key); + + if (attr) { + out.push('[' + key + '="' + attr + '"]'); + } + } + + return out.join(''); +} +/** + * Returns true if either a OR b is truthy, but not both + */ + + +function isOnlyOneTruthy(a, b) { + return !!(!!a ^ !!b); +} +/** + * Returns true if both parameters are undefined + */ + + +function isBothUndefined(a, b) { + return isUndefined$1(a) && isUndefined$1(b); +} +/** + * Returns true if the two input exception interfaces have the same content + */ + + +function isSameException$1(ex1, ex2) { + if (isOnlyOneTruthy(ex1, ex2)) return false; + ex1 = ex1.values[0]; + ex2 = ex2.values[0]; + if (ex1.type !== ex2.type || ex1.value !== ex2.value) return false; // in case both stacktraces are undefined, we can't decide so default to false + + if (isBothUndefined(ex1.stacktrace, ex2.stacktrace)) return false; + return isSameStacktrace$1(ex1.stacktrace, ex2.stacktrace); +} +/** + * Returns true if the two input stack trace interfaces have the same content + */ + + +function isSameStacktrace$1(stack1, stack2) { + if (isOnlyOneTruthy(stack1, stack2)) return false; + var frames1 = stack1.frames; + var frames2 = stack2.frames; // Exit early if frame count differs + + if (frames1.length !== frames2.length) return false; // Iterate through every frame; bail out if anything differs + + var a, b; + + for (var i = 0; i < frames1.length; i++) { + a = frames1[i]; + b = frames2[i]; + if (a.filename !== b.filename || a.lineno !== b.lineno || a.colno !== b.colno || a['function'] !== b['function']) return false; + } + + return true; +} +/** + * Polyfill a method + * @param obj object e.g. `document` + * @param name method name present on object e.g. `addEventListener` + * @param replacement replacement function + * @param track {optional} record instrumentation to an array + */ + + +function fill$1(obj, name, replacement, track) { + var orig = obj[name]; + obj[name] = replacement(orig); + obj[name].__raven__ = true; + obj[name].__orig__ = orig; + + if (track) { + track.push([obj, name, orig]); + } +} +/** + * Join values in array + * @param input array of values to be joined together + * @param delimiter string to be placed in-between values + * @returns {string} + */ + + +function safeJoin(input, delimiter) { + if (!isArray$1(input)) return ''; + var output = []; + + for (var i = 0; i < input.length; i++) { + try { + output.push(String(input[i])); + } catch (e) { + output.push('[value cannot be serialized]'); + } + } + + return output.join(delimiter); +} + +var utils = { + isObject: isObject$1, + isError: isError$1, + isErrorEvent: isErrorEvent$1, + isUndefined: isUndefined$1, + isFunction: isFunction$1, + isPlainObject: isPlainObject, + isString: isString$1, + isArray: isArray$1, + isEmptyObject: isEmptyObject$1, + supportsErrorEvent: supportsErrorEvent, + supportsFetch: supportsFetch$1, + wrappedCallback: wrappedCallback, + each: each$1, + objectMerge: objectMerge$1, + truncate: truncate$1, + objectFrozen: objectFrozen$1, + hasKey: hasKey$1, + joinRegExp: joinRegExp$1, + urlencode: urlencode$1, + uuid4: uuid4$1, + htmlTreeAsString: htmlTreeAsString$1, + htmlElementAsString: htmlElementAsString, + isSameException: isSameException$1, + isSameStacktrace: isSameStacktrace$1, + parseUrl: parseUrl$1, + fill: fill$1, + safeJoin: safeJoin +}; + +/* + TraceKit - Cross brower stack traces + + This was originally forked from github.com/occ/TraceKit, but has since been + largely re-written and is now maintained as part of raven-js. Tests for + this are in test/vendor. + + MIT license +*/ + +var TraceKit = { + collectWindowErrors: true, + debug: false +}; // This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) + +var _window$2 = typeof window !== 'undefined' ? window : typeof commonjsGlobal !== 'undefined' ? commonjsGlobal : typeof self !== 'undefined' ? self : {}; // global reference to slice + + +var _slice = [].slice; +var UNKNOWN_FUNCTION = '?'; // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error#Error_types + +var ERROR_TYPES_RE = /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/; + +function getLocationHref() { + if (typeof document === 'undefined' || document.location == null) return ''; + return document.location.href; +} +/** + * TraceKit.report: cross-browser processing of unhandled exceptions + * + * Syntax: + * TraceKit.report.subscribe(function(stackInfo) { ... }) + * TraceKit.report.unsubscribe(function(stackInfo) { ... }) + * TraceKit.report(exception) + * try { ...code... } catch(ex) { TraceKit.report(ex); } + * + * Supports: + * - Firefox: full stack trace with line numbers, plus column number + * on top frame; column number is not guaranteed + * - Opera: full stack trace with line and column numbers + * - Chrome: full stack trace with line and column numbers + * - Safari: line and column number for the top frame only; some frames + * may be missing, and column number is not guaranteed + * - IE: line and column number for the top frame only; some frames + * may be missing, and column number is not guaranteed + * + * In theory, TraceKit should work on all of the following versions: + * - IE5.5+ (only 8.0 tested) + * - Firefox 0.9+ (only 3.5+ tested) + * - Opera 7+ (only 10.50 tested; versions 9 and earlier may require + * Exceptions Have Stacktrace to be enabled in opera:config) + * - Safari 3+ (only 4+ tested) + * - Chrome 1+ (only 5+ tested) + * - Konqueror 3.5+ (untested) + * + * Requires TraceKit.computeStackTrace. + * + * Tries to catch all unhandled exceptions and report them to the + * subscribed handlers. Please note that TraceKit.report will rethrow the + * exception. This is REQUIRED in order to get a useful stack trace in IE. + * If the exception does not reach the top of the browser, you will only + * get a stack trace from the point where TraceKit.report was called. + * + * Handlers receive a stackInfo object as described in the + * TraceKit.computeStackTrace docs. + */ + + +TraceKit.report = function reportModuleWrapper() { + var handlers = [], + lastArgs = null, + lastException = null, + lastExceptionStack = null; + /** + * Add a crash handler. + * @param {Function} handler + */ + + function subscribe(handler) { + installGlobalHandler(); + handlers.push(handler); + } + /** + * Remove a crash handler. + * @param {Function} handler + */ + + + function unsubscribe(handler) { + for (var i = handlers.length - 1; i >= 0; --i) { + if (handlers[i] === handler) { + handlers.splice(i, 1); + } + } + } + /** + * Remove all crash handlers. + */ + + + function unsubscribeAll() { + uninstallGlobalHandler(); + handlers = []; + } + /** + * Dispatch stack information to all handlers. + * @param {Object.} stack + */ + + + function notifyHandlers(stack, isWindowError) { + var exception = null; + + if (isWindowError && !TraceKit.collectWindowErrors) { + return; + } + + for (var i in handlers) { + if (handlers.hasOwnProperty(i)) { + try { + handlers[i].apply(null, [stack].concat(_slice.call(arguments, 2))); + } catch (inner) { + exception = inner; + } + } + } + + if (exception) { + throw exception; + } + } + + var _oldOnerrorHandler, _onErrorHandlerInstalled; + /** + * Ensures all global unhandled exceptions are recorded. + * Supported by Gecko and IE. + * @param {string} msg Error message. + * @param {string} url URL of script that generated the exception. + * @param {(number|string)} lineNo The line number at which the error + * occurred. + * @param {?(number|string)} colNo The column number at which the error + * occurred. + * @param {?Error} ex The actual Error object. + */ + + + function traceKitWindowOnError(msg, url, lineNo, colNo, ex) { + var stack = null; // If 'ex' is ErrorEvent, get real Error from inside + + var exception = utils.isErrorEvent(ex) ? ex.error : ex; // If 'msg' is ErrorEvent, get real message from inside + + var message = utils.isErrorEvent(msg) ? msg.message : msg; + + if (lastExceptionStack) { + TraceKit.computeStackTrace.augmentStackTraceWithInitialElement(lastExceptionStack, url, lineNo, message); + processLastException(); + } else if (exception && utils.isError(exception)) { + // non-string `exception` arg; attempt to extract stack trace + // New chrome and blink send along a real error object + // Let's just report that like a normal error. + // See: https://mikewest.org/2013/08/debugging-runtime-errors-with-window-onerror + stack = TraceKit.computeStackTrace(exception); + notifyHandlers(stack, true); + } else { + var location = { + url: url, + line: lineNo, + column: colNo + }; + var name = undefined; + var groups; + + if ({}.toString.call(message) === '[object String]') { + var groups = message.match(ERROR_TYPES_RE); + + if (groups) { + name = groups[1]; + message = groups[2]; + } + } + + location.func = UNKNOWN_FUNCTION; + stack = { + name: name, + message: message, + url: getLocationHref(), + stack: [location] + }; + notifyHandlers(stack, true); + } + + if (_oldOnerrorHandler) { + return _oldOnerrorHandler.apply(this, arguments); + } + + return false; + } + + function installGlobalHandler() { + if (_onErrorHandlerInstalled) { + return; + } + + _oldOnerrorHandler = _window$2.onerror; + _window$2.onerror = traceKitWindowOnError; + _onErrorHandlerInstalled = true; + } + + function uninstallGlobalHandler() { + if (!_onErrorHandlerInstalled) { + return; + } + + _window$2.onerror = _oldOnerrorHandler; + _onErrorHandlerInstalled = false; + _oldOnerrorHandler = undefined; + } + + function processLastException() { + var _lastExceptionStack = lastExceptionStack, + _lastArgs = lastArgs; + lastArgs = null; + lastExceptionStack = null; + lastException = null; + notifyHandlers.apply(null, [_lastExceptionStack, false].concat(_lastArgs)); + } + /** + * Reports an unhandled Error to TraceKit. + * @param {Error} ex + * @param {?boolean} rethrow If false, do not re-throw the exception. + * Only used for window.onerror to not cause an infinite loop of + * rethrowing. + */ + + + function report(ex, rethrow) { + var args = _slice.call(arguments, 1); + + if (lastExceptionStack) { + if (lastException === ex) { + return; // already caught by an inner catch block, ignore + } else { + processLastException(); + } + } + + var stack = TraceKit.computeStackTrace(ex); + lastExceptionStack = stack; + lastException = ex; + lastArgs = args; // If the stack trace is incomplete, wait for 2 seconds for + // slow slow IE to see if onerror occurs or not before reporting + // this exception; otherwise, we will end up with an incomplete + // stack trace + + setTimeout(function () { + if (lastException === ex) { + processLastException(); + } + }, stack.incomplete ? 2000 : 0); + + if (rethrow !== false) { + throw ex; // re-throw to propagate to the top level (and cause window.onerror) + } + } + + report.subscribe = subscribe; + report.unsubscribe = unsubscribe; + report.uninstall = unsubscribeAll; + return report; +}(); +/** + * TraceKit.computeStackTrace: cross-browser stack traces in JavaScript + * + * Syntax: + * s = TraceKit.computeStackTrace(exception) // consider using TraceKit.report instead (see below) + * Returns: + * s.name - exception name + * s.message - exception message + * s.stack[i].url - JavaScript or HTML file URL + * s.stack[i].func - function name, or empty for anonymous functions (if guessing did not work) + * s.stack[i].args - arguments passed to the function, if known + * s.stack[i].line - line number, if known + * s.stack[i].column - column number, if known + * + * Supports: + * - Firefox: full stack trace with line numbers and unreliable column + * number on top frame + * - Opera 10: full stack trace with line and column numbers + * - Opera 9-: full stack trace with line numbers + * - Chrome: full stack trace with line and column numbers + * - Safari: line and column number for the topmost stacktrace element + * only + * - IE: no line numbers whatsoever + * + * Tries to guess names of anonymous functions by looking for assignments + * in the source code. In IE and Safari, we have to guess source file names + * by searching for function bodies inside all page scripts. This will not + * work for scripts that are loaded cross-domain. + * Here be dragons: some function names may be guessed incorrectly, and + * duplicate functions may be mismatched. + * + * TraceKit.computeStackTrace should only be used for tracing purposes. + * Logging of unhandled exceptions should be done with TraceKit.report, + * which builds on top of TraceKit.computeStackTrace and provides better + * IE support by utilizing the window.onerror event to retrieve information + * about the top of the stack. + * + * Note: In IE and Safari, no stack trace is recorded on the Error object, + * so computeStackTrace instead walks its *own* chain of callers. + * This means that: + * * in Safari, some methods may be missing from the stack trace; + * * in IE, the topmost function in the stack trace will always be the + * caller of computeStackTrace. + * + * This is okay for tracing (because you are likely to be calling + * computeStackTrace from the function you want to be the topmost element + * of the stack trace anyway), but not okay for logging unhandled + * exceptions (because your catch block will likely be far away from the + * inner function that actually caused the exception). + * + */ + + +TraceKit.computeStackTrace = function computeStackTraceWrapper() { + // Contents of Exception in various browsers. + // + // SAFARI: + // ex.message = Can't find variable: qq + // ex.line = 59 + // ex.sourceId = 580238192 + // ex.sourceURL = http://... + // ex.expressionBeginOffset = 96 + // ex.expressionCaretOffset = 98 + // ex.expressionEndOffset = 98 + // ex.name = ReferenceError + // + // FIREFOX: + // ex.message = qq is not defined + // ex.fileName = http://... + // ex.lineNumber = 59 + // ex.columnNumber = 69 + // ex.stack = ...stack trace... (see the example below) + // ex.name = ReferenceError + // + // CHROME: + // ex.message = qq is not defined + // ex.name = ReferenceError + // ex.type = not_defined + // ex.arguments = ['aa'] + // ex.stack = ...stack trace... + // + // INTERNET EXPLORER: + // ex.message = ... + // ex.name = ReferenceError + // + // OPERA: + // ex.message = ...message... (see the example below) + // ex.name = ReferenceError + // ex.opera#sourceloc = 11 (pretty much useless, duplicates the info in ex.message) + // ex.stacktrace = n/a; see 'opera:config#UserPrefs|Exceptions Have Stacktrace' + + /** + * Computes stack trace information from the stack property. + * Chrome and Gecko use this property. + * @param {Error} ex + * @return {?Object.} Stack trace information. + */ + function computeStackTraceFromStackProp(ex) { + if (typeof ex.stack === 'undefined' || !ex.stack) return; + var chrome = /^\s*at (.*?) ?\(((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i, + gecko = /^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|\[native).*?|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i, + winjs = /^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i, + // Used to additionally parse URL/line/column from eval frames + geckoEval = /(\S+) line (\d+)(?: > eval line \d+)* > eval/i, + chromeEval = /\((\S*)(?::(\d+))(?::(\d+))\)/, + lines = ex.stack.split('\n'), + stack = [], + submatch, + parts, + element, + reference = /^(.*) is undefined$/.exec(ex.message); + + for (var i = 0, j = lines.length; i < j; ++i) { + if (parts = chrome.exec(lines[i])) { + var isNative = parts[2] && parts[2].indexOf('native') === 0; // start of line + + var isEval = parts[2] && parts[2].indexOf('eval') === 0; // start of line + + if (isEval && (submatch = chromeEval.exec(parts[2]))) { + // throw out eval line/column and use top-most line/column number + parts[2] = submatch[1]; // url + + parts[3] = submatch[2]; // line + + parts[4] = submatch[3]; // column + } + + element = { + url: !isNative ? parts[2] : null, + func: parts[1] || UNKNOWN_FUNCTION, + args: isNative ? [parts[2]] : [], + line: parts[3] ? +parts[3] : null, + column: parts[4] ? +parts[4] : null + }; + } else if (parts = winjs.exec(lines[i])) { + element = { + url: parts[2], + func: parts[1] || UNKNOWN_FUNCTION, + args: [], + line: +parts[3], + column: parts[4] ? +parts[4] : null + }; + } else if (parts = gecko.exec(lines[i])) { + var isEval = parts[3] && parts[3].indexOf(' > eval') > -1; + + if (isEval && (submatch = geckoEval.exec(parts[3]))) { + // throw out eval line/column and use top-most line number + parts[3] = submatch[1]; + parts[4] = submatch[2]; + parts[5] = null; // no column when eval + } else if (i === 0 && !parts[5] && typeof ex.columnNumber !== 'undefined') { + // FireFox uses this awesome columnNumber property for its top frame + // Also note, Firefox's column number is 0-based and everything else expects 1-based, + // so adding 1 + // NOTE: this hack doesn't work if top-most frame is eval + stack[0].column = ex.columnNumber + 1; + } + + element = { + url: parts[3], + func: parts[1] || UNKNOWN_FUNCTION, + args: parts[2] ? parts[2].split(',') : [], + line: parts[4] ? +parts[4] : null, + column: parts[5] ? +parts[5] : null + }; + } else { + continue; + } + + if (!element.func && element.line) { + element.func = UNKNOWN_FUNCTION; + } + + stack.push(element); + } + + if (!stack.length) { + return null; + } + + return { + name: ex.name, + message: ex.message, + url: getLocationHref(), + stack: stack + }; + } + /** + * Adds information about the first frame to incomplete stack traces. + * Safari and IE require this to get complete data on the first frame. + * @param {Object.} stackInfo Stack trace information from + * one of the compute* methods. + * @param {string} url The URL of the script that caused an error. + * @param {(number|string)} lineNo The line number of the script that + * caused an error. + * @param {string=} message The error generated by the browser, which + * hopefully contains the name of the object that caused the error. + * @return {boolean} Whether or not the stack information was + * augmented. + */ + + + function augmentStackTraceWithInitialElement(stackInfo, url, lineNo, message) { + var initial = { + url: url, + line: lineNo + }; + + if (initial.url && initial.line) { + stackInfo.incomplete = false; + + if (!initial.func) { + initial.func = UNKNOWN_FUNCTION; + } + + if (stackInfo.stack.length > 0) { + if (stackInfo.stack[0].url === initial.url) { + if (stackInfo.stack[0].line === initial.line) { + return false; // already in stack trace + } else if (!stackInfo.stack[0].line && stackInfo.stack[0].func === initial.func) { + stackInfo.stack[0].line = initial.line; + return false; + } + } + } + + stackInfo.stack.unshift(initial); + stackInfo.partial = true; + return true; + } else { + stackInfo.incomplete = true; + } + + return false; + } + /** + * Computes stack trace information by walking the arguments.caller + * chain at the time the exception occurred. This will cause earlier + * frames to be missed but is the only way to get any stack trace in + * Safari and IE. The top frame is restored by + * {@link augmentStackTraceWithInitialElement}. + * @param {Error} ex + * @return {?Object.} Stack trace information. + */ + + + function computeStackTraceByWalkingCallerChain(ex, depth) { + var functionName = /function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i, + stack = [], + funcs = {}, + recursion = false, + parts, + item; + + for (var curr = computeStackTraceByWalkingCallerChain.caller; curr && !recursion; curr = curr.caller) { + if (curr === computeStackTrace || curr === TraceKit.report) { + // console.log('skipping internal function'); + continue; + } + + item = { + url: null, + func: UNKNOWN_FUNCTION, + line: null, + column: null + }; + + if (curr.name) { + item.func = curr.name; + } else if (parts = functionName.exec(curr.toString())) { + item.func = parts[1]; + } + + if (typeof item.func === 'undefined') { + try { + item.func = parts.input.substring(0, parts.input.indexOf('{')); + } catch (e) {} + } + + if (funcs['' + curr]) { + recursion = true; + } else { + funcs['' + curr] = true; + } + + stack.push(item); + } + + if (depth) { + // console.log('depth is ' + depth); + // console.log('stack is ' + stack.length); + stack.splice(0, depth); + } + + var result = { + name: ex.name, + message: ex.message, + url: getLocationHref(), + stack: stack + }; + augmentStackTraceWithInitialElement(result, ex.sourceURL || ex.fileName, ex.line || ex.lineNumber, ex.message || ex.description); + return result; + } + /** + * Computes a stack trace for an exception. + * @param {Error} ex + * @param {(string|number)=} depth + */ + + + function computeStackTrace(ex, depth) { + var stack = null; + depth = depth == null ? 0 : +depth; + + try { + stack = computeStackTraceFromStackProp(ex); + + if (stack) { + return stack; + } + } catch (e) { + if (TraceKit.debug) { + throw e; + } + } + + try { + stack = computeStackTraceByWalkingCallerChain(ex, depth + 1); + + if (stack) { + return stack; + } + } catch (e) { + if (TraceKit.debug) { + throw e; + } + } + + return { + name: ex.name, + message: ex.message, + url: getLocationHref() + }; + } + + computeStackTrace.augmentStackTraceWithInitialElement = augmentStackTraceWithInitialElement; + computeStackTrace.computeStackTraceFromStackProp = computeStackTraceFromStackProp; + return computeStackTrace; +}(); + +var tracekit = TraceKit; + +var stringify_1 = createCommonjsModule(function (module, exports) { + /* + json-stringify-safe + Like JSON.stringify, but doesn't throw on circular references. + + Originally forked from https://github.com/isaacs/json-stringify-safe + version 5.0.1 on 3/8/2017 and modified to handle Errors serialization + and IE8 compatibility. Tests for this are in test/vendor. + + ISC license: https://github.com/isaacs/json-stringify-safe/blob/master/LICENSE + */ + exports = module.exports = stringify; + exports.getSerialize = serializer; + + function indexOf(haystack, needle) { + for (var i = 0; i < haystack.length; ++i) { + if (haystack[i] === needle) return i; + } + + return -1; + } + + function stringify(obj, replacer, spaces, cycleReplacer) { + return JSON.stringify(obj, serializer(replacer, cycleReplacer), spaces); + } // https://github.com/ftlabs/js-abbreviate/blob/fa709e5f139e7770a71827b1893f22418097fbda/index.js#L95-L106 + + + function stringifyError(value) { + var err = { + // These properties are implemented as magical getters and don't show up in for in + stack: value.stack, + message: value.message, + name: value.name + }; + + for (var i in value) { + if (Object.prototype.hasOwnProperty.call(value, i)) { + err[i] = value[i]; + } + } + + return err; + } + + function serializer(replacer, cycleReplacer) { + var stack = []; + var keys = []; + + if (cycleReplacer == null) { + cycleReplacer = function cycleReplacer(key, value) { + if (stack[0] === value) { + return '[Circular ~]'; + } + + return '[Circular ~.' + keys.slice(0, indexOf(stack, value)).join('.') + ']'; + }; + } + + return function (key, value) { + if (stack.length > 0) { + var thisPos = indexOf(stack, this); + ~thisPos ? stack.splice(thisPos + 1) : stack.push(this); + ~thisPos ? keys.splice(thisPos, Infinity, key) : keys.push(key); + + if (~indexOf(stack, value)) { + value = cycleReplacer.call(this, key, value); + } + } else { + stack.push(value); + } + + return replacer == null ? value instanceof Error ? stringifyError(value) : value : replacer.call(this, key, value); + }; + } +}); +var stringify_2 = stringify_1.getSerialize; + +function RavenConfigError(message) { + this.name = 'RavenConfigError'; + this.message = message; +} + +RavenConfigError.prototype = new Error(); +RavenConfigError.prototype.constructor = RavenConfigError; +var configError = RavenConfigError; + +var wrapMethod = function wrapMethod(console, level, callback) { + var originalConsoleLevel = console[level]; + var originalConsole = console; + + if (!(level in console)) { + return; + } + + var sentryLevel = level === 'warn' ? 'warning' : level; + + console[level] = function () { + var args = [].slice.call(arguments); + var msg = utils.safeJoin(args, ' '); + var data = { + level: sentryLevel, + logger: 'console', + extra: { + arguments: args + } + }; + + if (level === 'assert') { + if (args[0] === false) { + // Default browsers message + msg = 'Assertion failed: ' + (utils.safeJoin(args.slice(1), ' ') || 'console.assert'); + data.extra.arguments = args.slice(1); + callback && callback(msg, data); + } + } else { + callback && callback(msg, data); + } // this fails for some browsers. :( + + + if (originalConsoleLevel) { + // IE9 doesn't allow calling apply on console functions directly + // See: https://stackoverflow.com/questions/5472938/does-ie9-support-console-log-and-is-it-a-real-function#answer-5473193 + Function.prototype.apply.call(originalConsoleLevel, originalConsole, args); + } + }; +}; + +var console$1 = { + wrapMethod: wrapMethod +}; + +/*global XDomainRequest:false */ + +var isError = utils.isError; +var isObject = utils.isObject; +var isErrorEvent = utils.isErrorEvent; +var isUndefined = utils.isUndefined; +var isFunction = utils.isFunction; +var isString = utils.isString; +var isArray = utils.isArray; +var isEmptyObject = utils.isEmptyObject; +var each = utils.each; +var objectMerge = utils.objectMerge; +var truncate = utils.truncate; +var objectFrozen = utils.objectFrozen; +var hasKey = utils.hasKey; +var joinRegExp = utils.joinRegExp; +var urlencode = utils.urlencode; +var uuid4 = utils.uuid4; +var htmlTreeAsString = utils.htmlTreeAsString; +var isSameException = utils.isSameException; +var isSameStacktrace = utils.isSameStacktrace; +var parseUrl = utils.parseUrl; +var fill = utils.fill; +var supportsFetch = utils.supportsFetch; +var wrapConsoleMethod = console$1.wrapMethod; +var dsnKeys = 'source protocol user pass host port path'.split(' '); +var dsnPattern = /^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/; + +function now() { + return +new Date(); +} // This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) + + +var _window$1 = typeof window !== 'undefined' ? window : typeof commonjsGlobal !== 'undefined' ? commonjsGlobal : typeof self !== 'undefined' ? self : {}; + +var _document = _window$1.document; +var _navigator = _window$1.navigator; + +function keepOriginalCallback(original, callback) { + return isFunction(callback) ? function (data) { + return callback(data, original); + } : callback; +} // First, check for JSON support +// If there is no JSON, we no-op the core features of Raven +// since JSON is required to encode the payload + + +function Raven$1() { + this._hasJSON = !!(_typeof(JSON) === 'object' && JSON.stringify); // Raven can run in contexts where there's no document (react-native) + + this._hasDocument = !isUndefined(_document); + this._hasNavigator = !isUndefined(_navigator); + this._lastCapturedException = null; + this._lastData = null; + this._lastEventId = null; + this._globalServer = null; + this._globalKey = null; + this._globalProject = null; + this._globalContext = {}; + this._globalOptions = { + // SENTRY_RELEASE can be injected by https://github.com/getsentry/sentry-webpack-plugin + release: _window$1.SENTRY_RELEASE && _window$1.SENTRY_RELEASE.id, + logger: 'javascript', + ignoreErrors: [], + ignoreUrls: [], + whitelistUrls: [], + includePaths: [], + headers: null, + collectWindowErrors: true, + maxMessageLength: 0, + // By default, truncates URL values to 250 chars + maxUrlLength: 250, + stackTraceLimit: 50, + autoBreadcrumbs: true, + instrument: true, + sampleRate: 1 + }; + this._fetchDefaults = { + method: 'POST', + keepalive: true, + referrerPolicy: 'origin' + }; + this._ignoreOnError = 0; + this._isRavenInstalled = false; + this._originalErrorStackTraceLimit = Error.stackTraceLimit; // capture references to window.console *and* all its methods first + // before the console plugin has a chance to monkey patch + + this._originalConsole = _window$1.console || {}; + this._originalConsoleMethods = {}; + this._plugins = []; + this._startTime = now(); + this._wrappedBuiltIns = []; + this._breadcrumbs = []; + this._lastCapturedEvent = null; + this._keypressTimeout; + this._location = _window$1.location; + this._lastHref = this._location && this._location.href; + + this._resetBackoff(); // eslint-disable-next-line guard-for-in + + + for (var method in this._originalConsole) { + this._originalConsoleMethods[method] = this._originalConsole[method]; + } +} +/* + * The core Raven singleton + * + * @this {Raven} + */ + + +Raven$1.prototype = { + // Hardcode version string so that raven source can be loaded directly via + // webpack (using a build step causes webpack #1617). Grunt verifies that + // this value matches package.json during build. + // See: https://github.com/getsentry/raven-js/issues/465 + VERSION: '3.22.2', + debug: false, + TraceKit: tracekit, + // alias to TraceKit + + /* + * Configure Raven with a DSN and extra options + * + * @param {string} dsn The public Sentry DSN + * @param {object} options Set of global options [optional] + * @return {Raven} + */ + config: function config(dsn, options) { + var self = this; + + if (self._globalServer) { + this._logDebug('error', 'Error: Raven has already been configured'); + + return self; + } + + if (!dsn) return self; + var globalOptions = self._globalOptions; // merge in options + + if (options) { + each(options, function (key, value) { + // tags and extra are special and need to be put into context + if (key === 'tags' || key === 'extra' || key === 'user') { + self._globalContext[key] = value; + } else { + globalOptions[key] = value; + } + }); + } + + self.setDSN(dsn); // "Script error." is hard coded into browsers for errors that it can't read. + // this is the result of a script being pulled in from an external domain and CORS. + + globalOptions.ignoreErrors.push(/^Script error\.?$/); + globalOptions.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/); // join regexp rules into one big rule + + globalOptions.ignoreErrors = joinRegExp(globalOptions.ignoreErrors); + globalOptions.ignoreUrls = globalOptions.ignoreUrls.length ? joinRegExp(globalOptions.ignoreUrls) : false; + globalOptions.whitelistUrls = globalOptions.whitelistUrls.length ? joinRegExp(globalOptions.whitelistUrls) : false; + globalOptions.includePaths = joinRegExp(globalOptions.includePaths); + globalOptions.maxBreadcrumbs = Math.max(0, Math.min(globalOptions.maxBreadcrumbs || 100, 100)); // default and hard limit is 100 + + var autoBreadcrumbDefaults = { + xhr: true, + console: true, + dom: true, + location: true, + sentry: true + }; + var autoBreadcrumbs = globalOptions.autoBreadcrumbs; + + if ({}.toString.call(autoBreadcrumbs) === '[object Object]') { + autoBreadcrumbs = objectMerge(autoBreadcrumbDefaults, autoBreadcrumbs); + } else if (autoBreadcrumbs !== false) { + autoBreadcrumbs = autoBreadcrumbDefaults; + } + + globalOptions.autoBreadcrumbs = autoBreadcrumbs; + var instrumentDefaults = { + tryCatch: true + }; + var instrument = globalOptions.instrument; + + if ({}.toString.call(instrument) === '[object Object]') { + instrument = objectMerge(instrumentDefaults, instrument); + } else if (instrument !== false) { + instrument = instrumentDefaults; + } + + globalOptions.instrument = instrument; + tracekit.collectWindowErrors = !!globalOptions.collectWindowErrors; // return for chaining + + return self; + }, + + /* + * Installs a global window.onerror error handler + * to capture and report uncaught exceptions. + * At this point, install() is required to be called due + * to the way TraceKit is set up. + * + * @return {Raven} + */ + install: function install() { + var self = this; + + if (self.isSetup() && !self._isRavenInstalled) { + tracekit.report.subscribe(function () { + self._handleOnErrorStackInfo.apply(self, arguments); + }); + + self._patchFunctionToString(); + + if (self._globalOptions.instrument && self._globalOptions.instrument.tryCatch) { + self._instrumentTryCatch(); + } + + if (self._globalOptions.autoBreadcrumbs) self._instrumentBreadcrumbs(); // Install all of the plugins + + self._drainPlugins(); + + self._isRavenInstalled = true; + } + + Error.stackTraceLimit = self._globalOptions.stackTraceLimit; + return this; + }, + + /* + * Set the DSN (can be called multiple time unlike config) + * + * @param {string} dsn The public Sentry DSN + */ + setDSN: function setDSN(dsn) { + var self = this, + uri = self._parseDSN(dsn), + lastSlash = uri.path.lastIndexOf('/'), + path = uri.path.substr(1, lastSlash); + + self._dsn = dsn; + self._globalKey = uri.user; + self._globalSecret = uri.pass && uri.pass.substr(1); + self._globalProject = uri.path.substr(lastSlash + 1); + self._globalServer = self._getGlobalServer(uri); + self._globalEndpoint = self._globalServer + '/' + path + 'api/' + self._globalProject + '/store/'; // Reset backoff state since we may be pointing at a + // new project/server + + this._resetBackoff(); + }, + + /* + * Wrap code within a context so Raven can capture errors + * reliably across domains that is executed immediately. + * + * @param {object} options A specific set of options for this context [optional] + * @param {function} func The callback to be immediately executed within the context + * @param {array} args An array of arguments to be called with the callback [optional] + */ + context: function context(options, func, args) { + if (isFunction(options)) { + args = func || []; + func = options; + options = undefined; + } + + return this.wrap(options, func).apply(this, args); + }, + + /* + * Wrap code within a context and returns back a new function to be executed + * + * @param {object} options A specific set of options for this context [optional] + * @param {function} func The function to be wrapped in a new context + * @param {function} func A function to call before the try/catch wrapper [optional, private] + * @return {function} The newly wrapped functions with a context + */ + wrap: function wrap(options, func, _before) { + var self = this; // 1 argument has been passed, and it's not a function + // so just return it + + if (isUndefined(func) && !isFunction(options)) { + return options; + } // options is optional + + + if (isFunction(options)) { + func = options; + options = undefined; + } // At this point, we've passed along 2 arguments, and the second one + // is not a function either, so we'll just return the second argument. + + + if (!isFunction(func)) { + return func; + } // We don't wanna wrap it twice! + + + try { + if (func.__raven__) { + return func; + } // If this has already been wrapped in the past, return that + + + if (func.__raven_wrapper__) { + return func.__raven_wrapper__; + } + } catch (e) { + // Just accessing custom props in some Selenium environments + // can cause a "Permission denied" exception (see raven-js#495). + // Bail on wrapping and return the function as-is (defers to window.onerror). + return func; + } + + function wrapped() { + var args = [], + i = arguments.length, + deep = !options || options && options.deep !== false; + + if (_before && isFunction(_before)) { + _before.apply(this, arguments); + } // Recursively wrap all of a function's arguments that are + // functions themselves. + + + while (i--) { + args[i] = deep ? self.wrap(options, arguments[i]) : arguments[i]; + } + + try { + // Attempt to invoke user-land function + // NOTE: If you are a Sentry user, and you are seeing this stack frame, it + // means Raven caught an error invoking your application code. This is + // expected behavior and NOT indicative of a bug with Raven.js. + return func.apply(this, args); + } catch (e) { + self._ignoreNextOnError(); + + self.captureException(e, options); + throw e; + } + } // copy over properties of the old function + + + for (var property in func) { + if (hasKey(func, property)) { + wrapped[property] = func[property]; + } + } + + wrapped.prototype = func.prototype; + func.__raven_wrapper__ = wrapped; // Signal that this function has been wrapped/filled already + // for both debugging and to prevent it to being wrapped/filled twice + + wrapped.__raven__ = true; + wrapped.__orig__ = func; + return wrapped; + }, + + /* + * Uninstalls the global error handler. + * + * @return {Raven} + */ + uninstall: function uninstall() { + tracekit.report.uninstall(); + + this._unpatchFunctionToString(); + + this._restoreBuiltIns(); + + this._restoreConsole(); + + Error.stackTraceLimit = this._originalErrorStackTraceLimit; + this._isRavenInstalled = false; + return this; + }, + + /* + * Manually capture an exception and send it over to Sentry + * + * @param {error} ex An exception to be logged + * @param {object} options A specific set of options for this error [optional] + * @return {Raven} + */ + captureException: function captureException(ex, options) { + options = objectMerge({ + trimHeadFrames: 0 + }, options ? options : {}); // Cases for sending ex as a message, rather than an exception + + var isNotError = !isError(ex); + var isNotErrorEvent = !isErrorEvent(ex); + var isErrorEventWithoutError = isErrorEvent(ex) && !ex.error; + + if (isNotError && isNotErrorEvent || isErrorEventWithoutError) { + return this.captureMessage(ex, objectMerge(options, { + stacktrace: true, + // if we fall back to captureMessage, default to attempting a new trace + trimHeadFrames: options.trimHeadFrames + 1 + })); + } // Get actual Error from ErrorEvent + + + if (isErrorEvent(ex)) ex = ex.error; // Store the raw exception object for potential debugging and introspection + + this._lastCapturedException = ex; // TraceKit.report will re-raise any exception passed to it, + // which means you have to wrap it in try/catch. Instead, we + // can wrap it here and only re-raise if TraceKit.report + // raises an exception different from the one we asked to + // report on. + + try { + var stack = tracekit.computeStackTrace(ex); + + this._handleStackInfo(stack, options); + } catch (ex1) { + if (ex !== ex1) { + throw ex1; + } + } + + return this; + }, + + /* + * Manually send a message to Sentry + * + * @param {string} msg A plain message to be captured in Sentry + * @param {object} options A specific set of options for this message [optional] + * @return {Raven} + */ + captureMessage: function captureMessage(msg, options) { + // config() automagically converts ignoreErrors from a list to a RegExp so we need to test for an + // early call; we'll error on the side of logging anything called before configuration since it's + // probably something you should see: + if (!!this._globalOptions.ignoreErrors.test && this._globalOptions.ignoreErrors.test(msg)) { + return; + } + + options = options || {}; + var data = objectMerge({ + message: msg + '' // Make sure it's actually a string + + }, options); + var ex; // Generate a "synthetic" stack trace from this point. + // NOTE: If you are a Sentry user, and you are seeing this stack frame, it is NOT indicative + // of a bug with Raven.js. Sentry generates synthetic traces either by configuration, + // or if it catches a thrown object without a "stack" property. + + try { + throw new Error(msg); + } catch (ex1) { + ex = ex1; + } // null exception name so `Error` isn't prefixed to msg + + + ex.name = null; + var stack = tracekit.computeStackTrace(ex); // stack[0] is `throw new Error(msg)` call itself, we are interested in the frame that was just before that, stack[1] + + var initialCall = isArray(stack.stack) && stack.stack[1]; + var fileurl = initialCall && initialCall.url || ''; + + if (!!this._globalOptions.ignoreUrls.test && this._globalOptions.ignoreUrls.test(fileurl)) { + return; + } + + if (!!this._globalOptions.whitelistUrls.test && !this._globalOptions.whitelistUrls.test(fileurl)) { + return; + } + + if (this._globalOptions.stacktrace || options && options.stacktrace) { + options = objectMerge({ + // fingerprint on msg, not stack trace (legacy behavior, could be + // revisited) + fingerprint: msg, + // since we know this is a synthetic trace, the top N-most frames + // MUST be from Raven.js, so mark them as in_app later by setting + // trimHeadFrames + trimHeadFrames: (options.trimHeadFrames || 0) + 1 + }, options); + + var frames = this._prepareFrames(stack, options); + + data.stacktrace = { + // Sentry expects frames oldest to newest + frames: frames.reverse() + }; + } // Fire away! + + + this._send(data); + + return this; + }, + captureBreadcrumb: function captureBreadcrumb(obj) { + var crumb = objectMerge({ + timestamp: now() / 1000 + }, obj); + + if (isFunction(this._globalOptions.breadcrumbCallback)) { + var result = this._globalOptions.breadcrumbCallback(crumb); + + if (isObject(result) && !isEmptyObject(result)) { + crumb = result; + } else if (result === false) { + return this; + } + } + + this._breadcrumbs.push(crumb); + + if (this._breadcrumbs.length > this._globalOptions.maxBreadcrumbs) { + this._breadcrumbs.shift(); + } + + return this; + }, + addPlugin: function addPlugin(plugin + /*arg1, arg2, ... argN*/ + ) { + var pluginArgs = [].slice.call(arguments, 1); + + this._plugins.push([plugin, pluginArgs]); + + if (this._isRavenInstalled) { + this._drainPlugins(); + } + + return this; + }, + + /* + * Set/clear a user to be sent along with the payload. + * + * @param {object} user An object representing user data [optional] + * @return {Raven} + */ + setUserContext: function setUserContext(user) { + // Intentionally do not merge here since that's an unexpected behavior. + this._globalContext.user = user; + return this; + }, + + /* + * Merge extra attributes to be sent along with the payload. + * + * @param {object} extra An object representing extra data [optional] + * @return {Raven} + */ + setExtraContext: function setExtraContext(extra) { + this._mergeContext('extra', extra); + + return this; + }, + + /* + * Merge tags to be sent along with the payload. + * + * @param {object} tags An object representing tags [optional] + * @return {Raven} + */ + setTagsContext: function setTagsContext(tags) { + this._mergeContext('tags', tags); + + return this; + }, + + /* + * Clear all of the context. + * + * @return {Raven} + */ + clearContext: function clearContext() { + this._globalContext = {}; + return this; + }, + + /* + * Get a copy of the current context. This cannot be mutated. + * + * @return {object} copy of context + */ + getContext: function getContext() { + // lol javascript + return JSON.parse(stringify_1(this._globalContext)); + }, + + /* + * Set environment of application + * + * @param {string} environment Typically something like 'production'. + * @return {Raven} + */ + setEnvironment: function setEnvironment(environment) { + this._globalOptions.environment = environment; + return this; + }, + + /* + * Set release version of application + * + * @param {string} release Typically something like a git SHA to identify version + * @return {Raven} + */ + setRelease: function setRelease(release) { + this._globalOptions.release = release; + return this; + }, + + /* + * Set the dataCallback option + * + * @param {function} callback The callback to run which allows the + * data blob to be mutated before sending + * @return {Raven} + */ + setDataCallback: function setDataCallback(callback) { + var original = this._globalOptions.dataCallback; + this._globalOptions.dataCallback = keepOriginalCallback(original, callback); + return this; + }, + + /* + * Set the breadcrumbCallback option + * + * @param {function} callback The callback to run which allows filtering + * or mutating breadcrumbs + * @return {Raven} + */ + setBreadcrumbCallback: function setBreadcrumbCallback(callback) { + var original = this._globalOptions.breadcrumbCallback; + this._globalOptions.breadcrumbCallback = keepOriginalCallback(original, callback); + return this; + }, + + /* + * Set the shouldSendCallback option + * + * @param {function} callback The callback to run which allows + * introspecting the blob before sending + * @return {Raven} + */ + setShouldSendCallback: function setShouldSendCallback(callback) { + var original = this._globalOptions.shouldSendCallback; + this._globalOptions.shouldSendCallback = keepOriginalCallback(original, callback); + return this; + }, + + /** + * Override the default HTTP transport mechanism that transmits data + * to the Sentry server. + * + * @param {function} transport Function invoked instead of the default + * `makeRequest` handler. + * + * @return {Raven} + */ + setTransport: function setTransport(transport) { + this._globalOptions.transport = transport; + return this; + }, + + /* + * Get the latest raw exception that was captured by Raven. + * + * @return {error} + */ + lastException: function lastException() { + return this._lastCapturedException; + }, + + /* + * Get the last event id + * + * @return {string} + */ + lastEventId: function lastEventId() { + return this._lastEventId; + }, + + /* + * Determine if Raven is setup and ready to go. + * + * @return {boolean} + */ + isSetup: function isSetup() { + if (!this._hasJSON) return false; // needs JSON support + + if (!this._globalServer) { + if (!this.ravenNotConfiguredError) { + this.ravenNotConfiguredError = true; + + this._logDebug('error', 'Error: Raven has not been configured.'); + } + + return false; + } + + return true; + }, + afterLoad: function afterLoad() { + // TODO: remove window dependence? + // Attempt to initialize Raven on load + var RavenConfig = _window$1.RavenConfig; + + if (RavenConfig) { + this.config(RavenConfig.dsn, RavenConfig.config).install(); + } + }, + showReportDialog: function showReportDialog(options) { + if (!_document // doesn't work without a document (React native) + ) return; + options = options || {}; + var lastEventId = options.eventId || this.lastEventId(); + + if (!lastEventId) { + throw new configError('Missing eventId'); + } + + var dsn = options.dsn || this._dsn; + + if (!dsn) { + throw new configError('Missing DSN'); + } + + var encode = encodeURIComponent; + var qs = ''; + qs += '?eventId=' + encode(lastEventId); + qs += '&dsn=' + encode(dsn); + var user = options.user || this._globalContext.user; + + if (user) { + if (user.name) qs += '&name=' + encode(user.name); + if (user.email) qs += '&email=' + encode(user.email); + } + + var globalServer = this._getGlobalServer(this._parseDSN(dsn)); + + var script = _document.createElement('script'); + + script.async = true; + script.src = globalServer + '/api/embed/error-page/' + qs; + + (_document.head || _document.body).appendChild(script); + }, + + /**** Private functions ****/ + _ignoreNextOnError: function _ignoreNextOnError() { + var self = this; + this._ignoreOnError += 1; + setTimeout(function () { + // onerror should trigger before setTimeout + self._ignoreOnError -= 1; + }); + }, + _triggerEvent: function _triggerEvent(eventType, options) { + // NOTE: `event` is a native browser thing, so let's avoid conflicting wiht it + var evt, key; + if (!this._hasDocument) return; + options = options || {}; + eventType = 'raven' + eventType.substr(0, 1).toUpperCase() + eventType.substr(1); + + if (_document.createEvent) { + evt = _document.createEvent('HTMLEvents'); + evt.initEvent(eventType, true, true); + } else { + evt = _document.createEventObject(); + evt.eventType = eventType; + } + + for (key in options) { + if (hasKey(options, key)) { + evt[key] = options[key]; + } + } + + if (_document.createEvent) { + // IE9 if standards + _document.dispatchEvent(evt); + } else { + // IE8 regardless of Quirks or Standards + // IE9 if quirks + try { + _document.fireEvent('on' + evt.eventType.toLowerCase(), evt); + } catch (e) {// Do nothing + } + } + }, + + /** + * Wraps addEventListener to capture UI breadcrumbs + * @param evtName the event name (e.g. "click") + * @returns {Function} + * @private + */ + _breadcrumbEventHandler: function _breadcrumbEventHandler(evtName) { + var self = this; + return function (evt) { + // reset keypress timeout; e.g. triggering a 'click' after + // a 'keypress' will reset the keypress debounce so that a new + // set of keypresses can be recorded + self._keypressTimeout = null; // It's possible this handler might trigger multiple times for the same + // event (e.g. event propagation through node ancestors). Ignore if we've + // already captured the event. + + if (self._lastCapturedEvent === evt) return; + self._lastCapturedEvent = evt; // try/catch both: + // - accessing evt.target (see getsentry/raven-js#838, #768) + // - `htmlTreeAsString` because it's complex, and just accessing the DOM incorrectly + // can throw an exception in some circumstances. + + var target; + + try { + target = htmlTreeAsString(evt.target); + } catch (e) { + target = ''; + } + + self.captureBreadcrumb({ + category: 'ui.' + evtName, + // e.g. ui.click, ui.input + message: target + }); + }; + }, + + /** + * Wraps addEventListener to capture keypress UI events + * @returns {Function} + * @private + */ + _keypressEventHandler: function _keypressEventHandler() { + var self = this, + debounceDuration = 1000; // milliseconds + // TODO: if somehow user switches keypress target before + // debounce timeout is triggered, we will only capture + // a single breadcrumb from the FIRST target (acceptable?) + + return function (evt) { + var target; + + try { + target = evt.target; + } catch (e) { + // just accessing event properties can throw an exception in some rare circumstances + // see: https://github.com/getsentry/raven-js/issues/838 + return; + } + + var tagName = target && target.tagName; // only consider keypress events on actual input elements + // this will disregard keypresses targeting body (e.g. tabbing + // through elements, hotkeys, etc) + + if (!tagName || tagName !== 'INPUT' && tagName !== 'TEXTAREA' && !target.isContentEditable) return; // record first keypress in a series, but ignore subsequent + // keypresses until debounce clears + + var timeout = self._keypressTimeout; + + if (!timeout) { + self._breadcrumbEventHandler('input')(evt); + } + + clearTimeout(timeout); + self._keypressTimeout = setTimeout(function () { + self._keypressTimeout = null; + }, debounceDuration); + }; + }, + + /** + * Captures a breadcrumb of type "navigation", normalizing input URLs + * @param to the originating URL + * @param from the target URL + * @private + */ + _captureUrlChange: function _captureUrlChange(from, to) { + var parsedLoc = parseUrl(this._location.href); + var parsedTo = parseUrl(to); + var parsedFrom = parseUrl(from); // because onpopstate only tells you the "new" (to) value of location.href, and + // not the previous (from) value, we need to track the value of the current URL + // state ourselves + + this._lastHref = to; // Use only the path component of the URL if the URL matches the current + // document (almost all the time when using pushState) + + if (parsedLoc.protocol === parsedTo.protocol && parsedLoc.host === parsedTo.host) to = parsedTo.relative; + if (parsedLoc.protocol === parsedFrom.protocol && parsedLoc.host === parsedFrom.host) from = parsedFrom.relative; + this.captureBreadcrumb({ + category: 'navigation', + data: { + to: to, + from: from + } + }); + }, + _patchFunctionToString: function _patchFunctionToString() { + var self = this; + self._originalFunctionToString = Function.prototype.toString; // eslint-disable-next-line no-extend-native + + Function.prototype.toString = function () { + if (typeof this === 'function' && this.__raven__) { + return self._originalFunctionToString.apply(this.__orig__, arguments); + } + + return self._originalFunctionToString.apply(this, arguments); + }; + }, + _unpatchFunctionToString: function _unpatchFunctionToString() { + if (this._originalFunctionToString) { + // eslint-disable-next-line no-extend-native + Function.prototype.toString = this._originalFunctionToString; + } + }, + + /** + * Wrap timer functions and event targets to catch errors and provide + * better metadata. + */ + _instrumentTryCatch: function _instrumentTryCatch() { + var self = this; + var wrappedBuiltIns = self._wrappedBuiltIns; + + function wrapTimeFn(orig) { + return function (fn, t) { + // preserve arity + // Make a copy of the arguments to prevent deoptimization + // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments + var args = new Array(arguments.length); + + for (var i = 0; i < args.length; ++i) { + args[i] = arguments[i]; + } + + var originalCallback = args[0]; + + if (isFunction(originalCallback)) { + args[0] = self.wrap(originalCallback); + } // IE < 9 doesn't support .call/.apply on setInterval/setTimeout, but it + // also supports only two arguments and doesn't care what this is, so we + // can just call the original function directly. + + + if (orig.apply) { + return orig.apply(this, args); + } else { + return orig(args[0], args[1]); + } + }; + } + + var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; + + function wrapEventTarget(global) { + var proto = _window$1[global] && _window$1[global].prototype; + + if (proto && proto.hasOwnProperty && proto.hasOwnProperty('addEventListener')) { + fill(proto, 'addEventListener', function (orig) { + return function (evtName, fn, capture, secure) { + // preserve arity + try { + if (fn && fn.handleEvent) { + fn.handleEvent = self.wrap(fn.handleEvent); + } + } catch (err) {} // can sometimes get 'Permission denied to access property "handle Event' + // More breadcrumb DOM capture ... done here and not in `_instrumentBreadcrumbs` + // so that we don't have more than one wrapper function + + + var before, clickHandler, keypressHandler; + + if (autoBreadcrumbs && autoBreadcrumbs.dom && (global === 'EventTarget' || global === 'Node')) { + // NOTE: generating multiple handlers per addEventListener invocation, should + // revisit and verify we can just use one (almost certainly) + clickHandler = self._breadcrumbEventHandler('click'); + keypressHandler = self._keypressEventHandler(); + + before = function before(evt) { + // need to intercept every DOM event in `before` argument, in case that + // same wrapped method is re-used for different events (e.g. mousemove THEN click) + // see #724 + if (!evt) return; + var eventType; + + try { + eventType = evt.type; + } catch (e) { + // just accessing event properties can throw an exception in some rare circumstances + // see: https://github.com/getsentry/raven-js/issues/838 + return; + } + + if (eventType === 'click') return clickHandler(evt);else if (eventType === 'keypress') return keypressHandler(evt); + }; + } + + return orig.call(this, evtName, self.wrap(fn, undefined, before), capture, secure); + }; + }, wrappedBuiltIns); + fill(proto, 'removeEventListener', function (orig) { + return function (evt, fn, capture, secure) { + try { + fn = fn && (fn.__raven_wrapper__ ? fn.__raven_wrapper__ : fn); + } catch (e) {// ignore, accessing __raven_wrapper__ will throw in some Selenium environments + } + + return orig.call(this, evt, fn, capture, secure); + }; + }, wrappedBuiltIns); + } + } + + fill(_window$1, 'setTimeout', wrapTimeFn, wrappedBuiltIns); + fill(_window$1, 'setInterval', wrapTimeFn, wrappedBuiltIns); + + if (_window$1.requestAnimationFrame) { + fill(_window$1, 'requestAnimationFrame', function (orig) { + return function (cb) { + return orig(self.wrap(cb)); + }; + }, wrappedBuiltIns); + } // event targets borrowed from bugsnag-js: + // https://github.com/bugsnag/bugsnag-js/blob/master/src/bugsnag.js#L666 + + + var eventTargets = ['EventTarget', 'Window', 'Node', 'ApplicationCache', 'AudioTrackList', 'ChannelMergerNode', 'CryptoOperation', 'EventSource', 'FileReader', 'HTMLUnknownElement', 'IDBDatabase', 'IDBRequest', 'IDBTransaction', 'KeyOperation', 'MediaController', 'MessagePort', 'ModalWindow', 'Notification', 'SVGElementInstance', 'Screen', 'TextTrack', 'TextTrackCue', 'TextTrackList', 'WebSocket', 'WebSocketWorker', 'Worker', 'XMLHttpRequest', 'XMLHttpRequestEventTarget', 'XMLHttpRequestUpload']; + + for (var i = 0; i < eventTargets.length; i++) { + wrapEventTarget(eventTargets[i]); + } + }, + + /** + * Instrument browser built-ins w/ breadcrumb capturing + * - XMLHttpRequests + * - DOM interactions (click/typing) + * - window.location changes + * - console + * + * Can be disabled or individually configured via the `autoBreadcrumbs` config option + */ + _instrumentBreadcrumbs: function _instrumentBreadcrumbs() { + var self = this; + var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; + var wrappedBuiltIns = self._wrappedBuiltIns; + + function wrapProp(prop, xhr) { + if (prop in xhr && isFunction(xhr[prop])) { + fill(xhr, prop, function (orig) { + return self.wrap(orig); + }); // intentionally don't track filled methods on XHR instances + } + } + + if (autoBreadcrumbs.xhr && 'XMLHttpRequest' in _window$1) { + var xhrproto = XMLHttpRequest.prototype; + fill(xhrproto, 'open', function (origOpen) { + return function (method, url) { + // preserve arity + // if Sentry key appears in URL, don't capture + if (isString(url) && url.indexOf(self._globalKey) === -1) { + this.__raven_xhr = { + method: method, + url: url, + status_code: null + }; + } + + return origOpen.apply(this, arguments); + }; + }, wrappedBuiltIns); + fill(xhrproto, 'send', function (origSend) { + return function () { + // preserve arity + var xhr = this; + + function onreadystatechangeHandler() { + if (xhr.__raven_xhr && xhr.readyState === 4) { + try { + // touching statusCode in some platforms throws + // an exception + xhr.__raven_xhr.status_code = xhr.status; + } catch (e) { + /* do nothing */ + } + + self.captureBreadcrumb({ + type: 'http', + category: 'xhr', + data: xhr.__raven_xhr + }); + } + } + + var props = ['onload', 'onerror', 'onprogress']; + + for (var j = 0; j < props.length; j++) { + wrapProp(props[j], xhr); + } + + if ('onreadystatechange' in xhr && isFunction(xhr.onreadystatechange)) { + fill(xhr, 'onreadystatechange', function (orig) { + return self.wrap(orig, undefined, onreadystatechangeHandler); + } + /* intentionally don't track this instrumentation */ + ); + } else { + // if onreadystatechange wasn't actually set by the page on this xhr, we + // are free to set our own and capture the breadcrumb + xhr.onreadystatechange = onreadystatechangeHandler; + } + + return origSend.apply(this, arguments); + }; + }, wrappedBuiltIns); + } + + if (autoBreadcrumbs.xhr && supportsFetch()) { + fill(_window$1, 'fetch', function (origFetch) { + return function () { + // preserve arity + // Make a copy of the arguments to prevent deoptimization + // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments + var args = new Array(arguments.length); + + for (var i = 0; i < args.length; ++i) { + args[i] = arguments[i]; + } + + var fetchInput = args[0]; + var method = 'GET'; + var url; + + if (typeof fetchInput === 'string') { + url = fetchInput; + } else if ('Request' in _window$1 && fetchInput instanceof _window$1.Request) { + url = fetchInput.url; + + if (fetchInput.method) { + method = fetchInput.method; + } + } else { + url = '' + fetchInput; + } // if Sentry key appears in URL, don't capture, as it's our own request + + + if (url.indexOf(self._globalKey) !== -1) { + return origFetch.apply(this, args); + } + + if (args[1] && args[1].method) { + method = args[1].method; + } + + var fetchData = { + method: method, + url: url, + status_code: null + }; + return origFetch.apply(this, args).then(function (response) { + fetchData.status_code = response.status; + self.captureBreadcrumb({ + type: 'http', + category: 'fetch', + data: fetchData + }); + return response; + }); + }; + }, wrappedBuiltIns); + } // Capture breadcrumbs from any click that is unhandled / bubbled up all the way + // to the document. Do this before we instrument addEventListener. + + + if (autoBreadcrumbs.dom && this._hasDocument) { + if (_document.addEventListener) { + _document.addEventListener('click', self._breadcrumbEventHandler('click'), false); + + _document.addEventListener('keypress', self._keypressEventHandler(), false); + } else { + // IE8 Compatibility + _document.attachEvent('onclick', self._breadcrumbEventHandler('click')); + + _document.attachEvent('onkeypress', self._keypressEventHandler()); + } + } // record navigation (URL) changes + // NOTE: in Chrome App environment, touching history.pushState, *even inside + // a try/catch block*, will cause Chrome to output an error to console.error + // borrowed from: https://github.com/angular/angular.js/pull/13945/files + + + var chrome = _window$1.chrome; + var isChromePackagedApp = chrome && chrome.app && chrome.app.runtime; + var hasPushAndReplaceState = !isChromePackagedApp && _window$1.history && history.pushState && history.replaceState; + + if (autoBreadcrumbs.location && hasPushAndReplaceState) { + // TODO: remove onpopstate handler on uninstall() + var oldOnPopState = _window$1.onpopstate; + + _window$1.onpopstate = function () { + var currentHref = self._location.href; + + self._captureUrlChange(self._lastHref, currentHref); + + if (oldOnPopState) { + return oldOnPopState.apply(this, arguments); + } + }; + + var historyReplacementFunction = function historyReplacementFunction(origHistFunction) { + // note history.pushState.length is 0; intentionally not declaring + // params to preserve 0 arity + return function () + /* state, title, url */ + { + var url = arguments.length > 2 ? arguments[2] : undefined; // url argument is optional + + if (url) { + // coerce to string (this is what pushState does) + self._captureUrlChange(self._lastHref, url + ''); + } + + return origHistFunction.apply(this, arguments); + }; + }; + + fill(history, 'pushState', historyReplacementFunction, wrappedBuiltIns); + fill(history, 'replaceState', historyReplacementFunction, wrappedBuiltIns); + } + + if (autoBreadcrumbs.console && 'console' in _window$1 && console.log) { + // console + var consoleMethodCallback = function consoleMethodCallback(msg, data) { + self.captureBreadcrumb({ + message: msg, + level: data.level, + category: 'console' + }); + }; + + each(['debug', 'info', 'warn', 'error', 'log'], function (_, level) { + wrapConsoleMethod(console, level, consoleMethodCallback); + }); + } + }, + _restoreBuiltIns: function _restoreBuiltIns() { + // restore any wrapped builtins + var builtin; + + while (this._wrappedBuiltIns.length) { + builtin = this._wrappedBuiltIns.shift(); + var obj = builtin[0], + name = builtin[1], + orig = builtin[2]; + obj[name] = orig; + } + }, + _restoreConsole: function _restoreConsole() { + // eslint-disable-next-line guard-for-in + for (var method in this._originalConsoleMethods) { + this._originalConsole[method] = this._originalConsoleMethods[method]; + } + }, + _drainPlugins: function _drainPlugins() { + var self = this; // FIX ME TODO + + each(this._plugins, function (_, plugin) { + var installer = plugin[0]; + var args = plugin[1]; + installer.apply(self, [self].concat(args)); + }); + }, + _parseDSN: function _parseDSN(str) { + var m = dsnPattern.exec(str), + dsn = {}, + i = 7; + + try { + while (i--) { + dsn[dsnKeys[i]] = m[i] || ''; + } + } catch (e) { + throw new configError('Invalid DSN: ' + str); + } + + if (dsn.pass && !this._globalOptions.allowSecretKey) { + throw new configError('Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key'); + } + + return dsn; + }, + _getGlobalServer: function _getGlobalServer(uri) { + // assemble the endpoint from the uri pieces + var globalServer = '//' + uri.host + (uri.port ? ':' + uri.port : ''); + + if (uri.protocol) { + globalServer = uri.protocol + ':' + globalServer; + } + + return globalServer; + }, + _handleOnErrorStackInfo: function _handleOnErrorStackInfo() { + // if we are intentionally ignoring errors via onerror, bail out + if (!this._ignoreOnError) { + this._handleStackInfo.apply(this, arguments); + } + }, + _handleStackInfo: function _handleStackInfo(stackInfo, options) { + var frames = this._prepareFrames(stackInfo, options); + + this._triggerEvent('handle', { + stackInfo: stackInfo, + options: options + }); + + this._processException(stackInfo.name, stackInfo.message, stackInfo.url, stackInfo.lineno, frames, options); + }, + _prepareFrames: function _prepareFrames(stackInfo, options) { + var self = this; + var frames = []; + + if (stackInfo.stack && stackInfo.stack.length) { + each(stackInfo.stack, function (i, stack) { + var frame = self._normalizeFrame(stack, stackInfo.url); + + if (frame) { + frames.push(frame); + } + }); // e.g. frames captured via captureMessage throw + + if (options && options.trimHeadFrames) { + for (var j = 0; j < options.trimHeadFrames && j < frames.length; j++) { + frames[j].in_app = false; + } + } + } + + frames = frames.slice(0, this._globalOptions.stackTraceLimit); + return frames; + }, + _normalizeFrame: function _normalizeFrame(frame, stackInfoUrl) { + // normalize the frames data + var normalized = { + filename: frame.url, + lineno: frame.line, + colno: frame.column, + function: frame.func || '?' + }; // Case when we don't have any information about the error + // E.g. throwing a string or raw object, instead of an `Error` in Firefox + // Generating synthetic error doesn't add any value here + // + // We should probably somehow let a user know that they should fix their code + + if (!frame.url) { + normalized.filename = stackInfoUrl; // fallback to whole stacks url from onerror handler + } + + normalized.in_app = !( // determine if an exception came from outside of our app + // first we check the global includePaths list. + !!this._globalOptions.includePaths.test && !this._globalOptions.includePaths.test(normalized.filename) || // Now we check for fun, if the function name is Raven or TraceKit + /(Raven|TraceKit)\./.test(normalized['function']) || // finally, we do a last ditch effort and check for raven.min.js + /raven\.(min\.)?js$/.test(normalized.filename)); + return normalized; + }, + _processException: function _processException(type, message, fileurl, lineno, frames, options) { + var prefixedMessage = (type ? type + ': ' : '') + (message || ''); + + if (!!this._globalOptions.ignoreErrors.test && (this._globalOptions.ignoreErrors.test(message) || this._globalOptions.ignoreErrors.test(prefixedMessage))) { + return; + } + + var stacktrace; + + if (frames && frames.length) { + fileurl = frames[0].filename || fileurl; // Sentry expects frames oldest to newest + // and JS sends them as newest to oldest + + frames.reverse(); + stacktrace = { + frames: frames + }; + } else if (fileurl) { + stacktrace = { + frames: [{ + filename: fileurl, + lineno: lineno, + in_app: true + }] + }; + } + + if (!!this._globalOptions.ignoreUrls.test && this._globalOptions.ignoreUrls.test(fileurl)) { + return; + } + + if (!!this._globalOptions.whitelistUrls.test && !this._globalOptions.whitelistUrls.test(fileurl)) { + return; + } + + var data = objectMerge({ + // sentry.interfaces.Exception + exception: { + values: [{ + type: type, + value: message, + stacktrace: stacktrace + }] + }, + culprit: fileurl + }, options); // Fire away! + + this._send(data); + }, + _trimPacket: function _trimPacket(data) { + // For now, we only want to truncate the two different messages + // but this could/should be expanded to just trim everything + var max = this._globalOptions.maxMessageLength; + + if (data.message) { + data.message = truncate(data.message, max); + } + + if (data.exception) { + var exception = data.exception.values[0]; + exception.value = truncate(exception.value, max); + } + + var request = data.request; + + if (request) { + if (request.url) { + request.url = truncate(request.url, this._globalOptions.maxUrlLength); + } + + if (request.Referer) { + request.Referer = truncate(request.Referer, this._globalOptions.maxUrlLength); + } + } + + if (data.breadcrumbs && data.breadcrumbs.values) this._trimBreadcrumbs(data.breadcrumbs); + return data; + }, + + /** + * Truncate breadcrumb values (right now just URLs) + */ + _trimBreadcrumbs: function _trimBreadcrumbs(breadcrumbs) { + // known breadcrumb properties with urls + // TODO: also consider arbitrary prop values that start with (https?)?:// + var urlProps = ['to', 'from', 'url'], + urlProp, + crumb, + data; + + for (var i = 0; i < breadcrumbs.values.length; ++i) { + crumb = breadcrumbs.values[i]; + if (!crumb.hasOwnProperty('data') || !isObject(crumb.data) || objectFrozen(crumb.data)) continue; + data = objectMerge({}, crumb.data); + + for (var j = 0; j < urlProps.length; ++j) { + urlProp = urlProps[j]; + + if (data.hasOwnProperty(urlProp) && data[urlProp]) { + data[urlProp] = truncate(data[urlProp], this._globalOptions.maxUrlLength); + } + } + + breadcrumbs.values[i].data = data; + } + }, + _getHttpData: function _getHttpData() { + if (!this._hasNavigator && !this._hasDocument) return; + var httpData = {}; + + if (this._hasNavigator && _navigator.userAgent) { + httpData.headers = { + 'User-Agent': navigator.userAgent + }; + } // Check in `window` instead of `document`, as we may be in ServiceWorker environment + + + if (_window$1.location && _window$1.location.href) { + httpData.url = _window$1.location.href; + } + + if (this._hasDocument && _document.referrer) { + if (!httpData.headers) httpData.headers = {}; + httpData.headers.Referer = _document.referrer; + } + + return httpData; + }, + _resetBackoff: function _resetBackoff() { + this._backoffDuration = 0; + this._backoffStart = null; + }, + _shouldBackoff: function _shouldBackoff() { + return this._backoffDuration && now() - this._backoffStart < this._backoffDuration; + }, + + /** + * Returns true if the in-process data payload matches the signature + * of the previously-sent data + * + * NOTE: This has to be done at this level because TraceKit can generate + * data from window.onerror WITHOUT an exception object (IE8, IE9, + * other old browsers). This can take the form of an "exception" + * data object with a single frame (derived from the onerror args). + */ + _isRepeatData: function _isRepeatData(current) { + var last = this._lastData; + if (!last || current.message !== last.message || // defined for captureMessage + current.culprit !== last.culprit // defined for captureException/onerror + ) return false; // Stacktrace interface (i.e. from captureMessage) + + if (current.stacktrace || last.stacktrace) { + return isSameStacktrace(current.stacktrace, last.stacktrace); + } else if (current.exception || last.exception) { + // Exception interface (i.e. from captureException/onerror) + return isSameException(current.exception, last.exception); + } + + return true; + }, + _setBackoffState: function _setBackoffState(request) { + // If we are already in a backoff state, don't change anything + if (this._shouldBackoff()) { + return; + } + + var status = request.status; // 400 - project_id doesn't exist or some other fatal + // 401 - invalid/revoked dsn + // 429 - too many requests + + if (!(status === 400 || status === 401 || status === 429)) return; + var retry; + + try { + // If Retry-After is not in Access-Control-Expose-Headers, most + // browsers will throw an exception trying to access it + if (supportsFetch()) { + retry = request.headers.get('Retry-After'); + } else { + retry = request.getResponseHeader('Retry-After'); + } // Retry-After is returned in seconds + + + retry = parseInt(retry, 10) * 1000; + } catch (e) { + /* eslint no-empty:0 */ + } + + this._backoffDuration = retry ? // If Sentry server returned a Retry-After value, use it + retry : // Otherwise, double the last backoff duration (starts at 1 sec) + this._backoffDuration * 2 || 1000; + this._backoffStart = now(); + }, + _send: function _send(data) { + var globalOptions = this._globalOptions; + + var baseData = { + project: this._globalProject, + logger: globalOptions.logger, + platform: 'javascript' + }, + httpData = this._getHttpData(); + + if (httpData) { + baseData.request = httpData; + } // HACK: delete `trimHeadFrames` to prevent from appearing in outbound payload + + + if (data.trimHeadFrames) delete data.trimHeadFrames; + data = objectMerge(baseData, data); // Merge in the tags and extra separately since objectMerge doesn't handle a deep merge + + data.tags = objectMerge(objectMerge({}, this._globalContext.tags), data.tags); + data.extra = objectMerge(objectMerge({}, this._globalContext.extra), data.extra); // Send along our own collected metadata with extra + + data.extra['session:duration'] = now() - this._startTime; + + if (this._breadcrumbs && this._breadcrumbs.length > 0) { + // intentionally make shallow copy so that additions + // to breadcrumbs aren't accidentally sent in this request + data.breadcrumbs = { + values: [].slice.call(this._breadcrumbs, 0) + }; + } + + if (this._globalContext.user) { + // sentry.interfaces.User + data.user = this._globalContext.user; + } // Include the environment if it's defined in globalOptions + + + if (globalOptions.environment) data.environment = globalOptions.environment; // Include the release if it's defined in globalOptions + + if (globalOptions.release) data.release = globalOptions.release; // Include server_name if it's defined in globalOptions + + if (globalOptions.serverName) data.server_name = globalOptions.serverName; // Cleanup empty properties before sending them to the server + + Object.keys(data).forEach(function (key) { + if (data[key] == null || data[key] === '' || isEmptyObject(data[key])) { + delete data[key]; + } + }); + + if (isFunction(globalOptions.dataCallback)) { + data = globalOptions.dataCallback(data) || data; + } // Why?????????? + + + if (!data || isEmptyObject(data)) { + return; + } // Check if the request should be filtered or not + + + if (isFunction(globalOptions.shouldSendCallback) && !globalOptions.shouldSendCallback(data)) { + return; + } // Backoff state: Sentry server previously responded w/ an error (e.g. 429 - too many requests), + // so drop requests until "cool-off" period has elapsed. + + + if (this._shouldBackoff()) { + this._logDebug('warn', 'Raven dropped error due to backoff: ', data); + + return; + } + + if (typeof globalOptions.sampleRate === 'number') { + if (Math.random() < globalOptions.sampleRate) { + this._sendProcessedPayload(data); + } + } else { + this._sendProcessedPayload(data); + } + }, + _getUuid: function _getUuid() { + return uuid4(); + }, + _sendProcessedPayload: function _sendProcessedPayload(data, callback) { + var self = this; + var globalOptions = this._globalOptions; + if (!this.isSetup()) return; // Try and clean up the packet before sending by truncating long values + + data = this._trimPacket(data); // ideally duplicate error testing should occur *before* dataCallback/shouldSendCallback, + // but this would require copying an un-truncated copy of the data packet, which can be + // arbitrarily deep (extra_data) -- could be worthwhile? will revisit + + if (!this._globalOptions.allowDuplicates && this._isRepeatData(data)) { + this._logDebug('warn', 'Raven dropped repeat event: ', data); + + return; + } // Send along an event_id if not explicitly passed. + // This event_id can be used to reference the error within Sentry itself. + // Set lastEventId after we know the error should actually be sent + + + this._lastEventId = data.event_id || (data.event_id = this._getUuid()); // Store outbound payload after trim + + this._lastData = data; + + this._logDebug('debug', 'Raven about to send:', data); + + var auth = { + sentry_version: '7', + sentry_client: 'raven-js/' + this.VERSION, + sentry_key: this._globalKey + }; + + if (this._globalSecret) { + auth.sentry_secret = this._globalSecret; + } + + var exception = data.exception && data.exception.values[0]; // only capture 'sentry' breadcrumb is autoBreadcrumbs is truthy + + if (this._globalOptions.autoBreadcrumbs && this._globalOptions.autoBreadcrumbs.sentry) { + this.captureBreadcrumb({ + category: 'sentry', + message: exception ? (exception.type ? exception.type + ': ' : '') + exception.value : data.message, + event_id: data.event_id, + level: data.level || 'error' // presume error unless specified + + }); + } + + var url = this._globalEndpoint; + + (globalOptions.transport || this._makeRequest).call(this, { + url: url, + auth: auth, + data: data, + options: globalOptions, + onSuccess: function success() { + self._resetBackoff(); + + self._triggerEvent('success', { + data: data, + src: url + }); + + callback && callback(); + }, + onError: function failure(error) { + self._logDebug('error', 'Raven transport failed to send: ', error); + + if (error.request) { + self._setBackoffState(error.request); + } + + self._triggerEvent('failure', { + data: data, + src: url + }); + + error = error || new Error('Raven send failed (no additional details provided)'); + callback && callback(error); + } + }); + }, + _makeRequest: function _makeRequest(opts) { + // Auth is intentionally sent as part of query string (NOT as custom HTTP header) to avoid preflight CORS requests + var url = opts.url + '?' + urlencode(opts.auth); + var evaluatedHeaders = null; + var evaluatedFetchParameters = {}; + + if (opts.options.headers) { + evaluatedHeaders = this._evaluateHash(opts.options.headers); + } + + if (opts.options.fetchParameters) { + evaluatedFetchParameters = this._evaluateHash(opts.options.fetchParameters); + } + + if (supportsFetch()) { + evaluatedFetchParameters.body = stringify_1(opts.data); + var defaultFetchOptions = objectMerge({}, this._fetchDefaults); + var fetchOptions = objectMerge(defaultFetchOptions, evaluatedFetchParameters); + + if (evaluatedHeaders) { + fetchOptions.headers = evaluatedHeaders; + } + + return _window$1.fetch(url, fetchOptions).then(function (response) { + if (response.ok) { + opts.onSuccess && opts.onSuccess(); + } else { + var error = new Error('Sentry error code: ' + response.status); // It's called request only to keep compatibility with XHR interface + // and not add more redundant checks in setBackoffState method + + error.request = response; + opts.onError && opts.onError(error); + } + })['catch'](function () { + opts.onError && opts.onError(new Error('Sentry error code: network unavailable')); + }); + } + + var request = _window$1.XMLHttpRequest && new _window$1.XMLHttpRequest(); + if (!request) return; // if browser doesn't support CORS (e.g. IE7), we are out of luck + + var hasCORS = 'withCredentials' in request || typeof XDomainRequest !== 'undefined'; + if (!hasCORS) return; + + if ('withCredentials' in request) { + request.onreadystatechange = function () { + if (request.readyState !== 4) { + return; + } else if (request.status === 200) { + opts.onSuccess && opts.onSuccess(); + } else if (opts.onError) { + var err = new Error('Sentry error code: ' + request.status); + err.request = request; + opts.onError(err); + } + }; + } else { + request = new XDomainRequest(); // xdomainrequest cannot go http -> https (or vice versa), + // so always use protocol relative + + url = url.replace(/^https?:/, ''); // onreadystatechange not supported by XDomainRequest + + if (opts.onSuccess) { + request.onload = opts.onSuccess; + } + + if (opts.onError) { + request.onerror = function () { + var err = new Error('Sentry error code: XDomainRequest'); + err.request = request; + opts.onError(err); + }; + } + } + + request.open('POST', url); + + if (evaluatedHeaders) { + each(evaluatedHeaders, function (key, value) { + request.setRequestHeader(key, value); + }); + } + + request.send(stringify_1(opts.data)); + }, + _evaluateHash: function _evaluateHash(hash) { + var evaluated = {}; + + for (var key in hash) { + if (hash.hasOwnProperty(key)) { + var value = hash[key]; + evaluated[key] = typeof value === 'function' ? value() : value; + } + } + + return evaluated; + }, + _logDebug: function _logDebug(level) { + if (this._originalConsoleMethods[level] && this.debug) { + // In IE<10 console methods do not have their own 'apply' method + Function.prototype.apply.call(this._originalConsoleMethods[level], this._originalConsole, [].slice.call(arguments, 1)); + } + }, + _mergeContext: function _mergeContext(key, context) { + if (isUndefined(context)) { + delete this._globalContext[key]; + } else { + this._globalContext[key] = objectMerge(this._globalContext[key] || {}, context); + } + } +}; // Deprecations + +Raven$1.prototype.setUser = Raven$1.prototype.setUserContext; +Raven$1.prototype.setReleaseContext = Raven$1.prototype.setRelease; +var raven = Raven$1; + +/** + * Enforces a single instance of the Raven client, and the + * main entry point for Raven. If you are a consumer of the + * Raven library, you SHOULD load this file (vs raven.js). + **/ +// This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) + +var _window = typeof window !== 'undefined' ? window : typeof commonjsGlobal !== 'undefined' ? commonjsGlobal : typeof self !== 'undefined' ? self : {}; + +var _Raven = _window.Raven; +var Raven = new raven(); +/* + * Allow multiple versions of Raven to be installed. + * Strip Raven from the global context and returns the instance. + * + * @return {Raven} + */ + +Raven.noConflict = function () { + _window.Raven = _Raven; + return Raven; +}; + +Raven.afterLoad(); +var singleton = Raven; + +/** + * Angular.js plugin + * + * Provides an $exceptionHandler for Angular.js + */ + +var wrappedCallback$1 = utils.wrappedCallback; // See https://github.com/angular/angular.js/blob/v1.4.7/src/minErr.js + +var angularPattern = /^\[((?:[$a-zA-Z0-9]+:)?(?:[$a-zA-Z0-9]+))\] (.*?)\n?(\S+)$/; +var moduleName = 'ngRaven'; + +function angularPlugin(Raven, angular) { + angular = angular || window.angular; + if (!angular) return; + + function RavenProvider() { + this.$get = ['$window', function ($window) { + return Raven; + }]; + } + + function ExceptionHandlerProvider($provide) { + $provide.decorator('$exceptionHandler', ['Raven', '$delegate', exceptionHandler]); + } + + function exceptionHandler(R, $delegate) { + return function (ex, cause) { + R.captureException(ex, { + extra: { + cause: cause + } + }); + $delegate(ex, cause); + }; + } + + angular.module(moduleName, []).provider('Raven', RavenProvider).config(['$provide', ExceptionHandlerProvider]); + Raven.setDataCallback(wrappedCallback$1(function (data) { + return angularPlugin._normalizeData(data); + })); +} + +angularPlugin._normalizeData = function (data) { + // We only care about mutating an exception + var exception = data.exception; + + if (exception) { + exception = exception.values[0]; + var matches = angularPattern.exec(exception.value); + + if (matches) { + // This type now becomes something like: $rootScope:inprog + exception.type = matches[1]; + exception.value = matches[2]; + data.message = exception.type + ': ' + exception.value; // auto set a new tag specifically for the angular error url + + data.extra.angularDocs = matches[3].substr(0, 250); + } + } + + return data; +}; + +angularPlugin.moduleName = moduleName; +var angular = angularPlugin; + +/*global define*/ + +/** + * require.js plugin + * + * Automatically wrap define/require callbacks. (Experimental) + */ + +function requirePlugin(Raven) { + if (typeof undefined === 'function' && undefined.amd) { + window.define = Raven.wrap({ + deep: false + }, undefined); + window.require = Raven.wrap({ + deep: false + }, commonjsRequire); + } +} + +var require_1 = requirePlugin; + +/** + * Vue.js 2.0 plugin + * + */ +function formatComponentName(vm) { + if (vm.$root === vm) { + return 'root instance'; + } + + var name = vm._isVue ? vm.$options.name || vm.$options._componentTag : vm.name; + return (name ? 'component <' + name + '>' : 'anonymous component') + (vm._isVue && vm.$options.__file ? ' at ' + vm.$options.__file : ''); +} + +function vuePlugin(Raven, Vue) { + Vue = Vue || window.Vue; // quit if Vue isn't on the page + + if (!Vue || !Vue.config) return; + var _oldOnError = Vue.config.errorHandler; + + Vue.config.errorHandler = function VueErrorHandler(error, vm, info) { + var metaData = {}; // vm and lifecycleHook are not always available + + if (Object.prototype.toString.call(vm) === '[object Object]') { + metaData.componentName = formatComponentName(vm); + metaData.propsData = vm.$options.propsData; + } + + if (typeof info !== 'undefined') { + metaData.lifecycleHook = info; + } + + Raven.captureException(error, { + extra: metaData + }); + + if (typeof _oldOnError === 'function') { + _oldOnError.call(this, error, vm, info); + } + }; +} + +var vue = vuePlugin; + +/* This file was generated by './scripts/generate-plugin-combinations.js'! */ + +singleton.addPlugin(angular).addPlugin(require_1).addPlugin(vue); +var angular_require_vue = {}; + +return angular_require_vue; + +}))); diff --git a/dist/angular,require,vue/raven.min.js b/dist/angular,require,vue/raven.min.js new file mode 100644 index 000000000000..79d264aaea5f --- /dev/null +++ b/dist/angular,require,vue/raven.min.js @@ -0,0 +1,3 @@ +/*! Raven.js 3.22.2 (1b6187b) | github.com/getsentry/raven-js */ +!function(a,b){"object"==typeof exports&&"undefined"!=typeof module?module.exports=b():"function"==typeof define&&define.amd?define(b):a.Raven=b()}(this,function(){"use strict";function a(a,b){return b={exports:{}},a(b,b.exports),b.exports}function b(a){return(b="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(a){return typeof a}:function(a){return a&&"function"==typeof Symbol&&a.constructor===Symbol&&a!==Symbol.prototype?"symbol":typeof a})(a)}function c(a){return"object"===b(a)&&null!==a}function d(a){switch({}.toString.call(a)){case"[object Error]":return!0;case"[object Exception]":return!0;case"[object DOMException]":return!0;default:return a instanceof Error}}function e(a){return l()&&"[object ErrorEvent]"==={}.toString.call(a)}function f(a){return void 0===a}function g(a){return"function"==typeof a}function h(a){return"[object Object]"===Object.prototype.toString.call(a)}function i(a){return"[object String]"===Object.prototype.toString.call(a)}function j(a){return"[object Array]"===Object.prototype.toString.call(a)}function k(a){if(!h(a))return!1;for(var b in a)if(a.hasOwnProperty(b))return!1;return!0}function l(){try{return new ErrorEvent(""),!0}catch(a){return!1}}function m(){if(!("fetch"in Q))return!1;try{return new Headers,new Request(""),new Response,!0}catch(a){return!1}}function n(a){function b(b,c){var d=a(b)||b;return c?c(d)||d:d}return b}function o(a,b){var c,d;if(f(a.length))for(c in a)s(a,c)&&b.call(null,c,a[c]);else if(d=a.length)for(c=0;c ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function y(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&i(b))for(c=b.split(/\s+/),f=0;f":"anonymous component")+(a._isVue&&a.$options.__file?" at "+a.$options.__file:"")}function N(a,b){if(b=b||window.Vue,b&&b.config){var c=b.config.errorHandler;b.config.errorHandler=function(b,d,e){var f={};"[object Object]"===Object.prototype.toString.call(d)&&(f.componentName=M(d),f.propsData=d.$options.propsData),"undefined"!=typeof e&&(f.lifecycleHook=e),a.captureException(b,{extra:f}),"function"==typeof c&&c.call(this,b,d,e)}}}var O="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{},P=Object.setPrototypeOf||function(a,b){return a.C=b,a},Q=("object"==typeof Reflect&&Reflect.construct||function(a,b,c){var d,e=[null];return e.push.apply(e,b),d=a.bind.apply(a,e),P(new d,c.prototype)},"undefined"!=typeof window?window:"undefined"!=typeof O?O:"undefined"!=typeof self?self:{}),R={isObject:c,isError:d,isErrorEvent:e,isUndefined:f,isFunction:g,isPlainObject:h,isString:i,isArray:j,isEmptyObject:k,supportsErrorEvent:l,supportsFetch:m,wrappedCallback:n,each:o,objectMerge:p,truncate:r,objectFrozen:q,hasKey:s,joinRegExp:t,urlencode:u,uuid4:w,htmlTreeAsString:x,htmlElementAsString:y,isSameException:B,isSameStacktrace:C,parseUrl:v,fill:D,safeJoin:E},S={collectWindowErrors:!0,debug:!1},T="undefined"!=typeof window?window:"undefined"!=typeof O?O:"undefined"!=typeof self?self:{},U=[].slice,V="?",W=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;S.report=function(){function a(a){f(),l.push(a)}function b(a){for(var b=l.length-1;b>=0;--b)l[b]===a&&l.splice(b,1)}function c(){g(),l=[]}function d(a,b){var c=null;if(!b||S.collectWindowErrors){for(var d in l)if(l.hasOwnProperty(d))try{l[d].apply(null,[a].concat(U.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function e(a,b,c,e,f){var g=null,i=R.isErrorEvent(f)?f.error:f,k=R.isErrorEvent(a)?a.message:a;if(o)S.computeStackTrace.augmentStackTraceWithInitialElement(o,b,c,k),h();else if(i&&R.isError(i))g=S.computeStackTrace(i),d(g,!0);else{var l,m={url:b,line:c,column:e},n=void 0;if("[object String]"==={}.toString.call(k)){var l=k.match(W);l&&(n=l[1],k=l[2])}m.func=V,g={name:n,message:k,url:F(),stack:[m]},d(g,!0)}return!!j&&j.apply(this,arguments)}function f(){k||(j=T.onerror,T.onerror=e,k=!0)}function g(){k&&(T.onerror=j,k=!1,j=void 0)}function h(){var a=o,b=m;m=null,o=null,n=null,d.apply(null,[a,!1].concat(b))}function i(a,b){var c=U.call(arguments,1);if(o){if(n===a)return;h()}var d=S.computeStackTrace(a);if(o=d,n=a,m=c,setTimeout(function(){n===a&&h()},d.incomplete?2e3:0),b!==!1)throw a}var j,k,l=[],m=null,n=null,o=null;return i.subscribe=a,i.unsubscribe=b,i.uninstall=c,i}(),S.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,d,e=/^\s*at (.*?) ?\(((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,f=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|\[native).*?|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,g=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,h=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,i=/\((\S*)(?::(\d+))(?::(\d+))\)/,j=a.stack.split("\n"),k=[],l=(/^(.*) is undefined$/.exec(a.message),0),m=j.length;l eval")>-1;o&&(b=h.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==l||c[5]||"undefined"==typeof a.columnNumber||(k[0].column=a.columnNumber+1),d={url:c[3],func:c[1]||V,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}!d.func&&d.line&&(d.func=V),k.push(d)}return k.length?{name:a.name,message:a.message,url:F(),stack:k}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=V),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,e){for(var f,g,h=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,i=[],j={},k=!1,l=c.caller;l&&!k;l=l.caller)if(l!==d&&l!==S.report){if(g={url:null,func:V,line:null,column:null},l.name?g.func=l.name:(f=h.exec(l.toString()))&&(g.func=f[1]),"undefined"==typeof g.func)try{g.func=f.input.substring(0,f.input.indexOf("{"))}catch(m){}j[""+l]?k=!0:j[""+l]=!0,i.push(g)}e&&i.splice(0,e);var n={name:a.name,message:a.message,url:F(),stack:i};return b(n,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),n}function d(b,d){var e=null;d=null==d?0:+d;try{if(e=a(b))return e}catch(f){if(S.debug)throw f}try{if(e=c(b,d+1))return e}catch(f){if(S.debug)throw f}return{name:b.name,message:b.message,url:F()}}return d.augmentStackTraceWithInitialElement=b,d.computeStackTraceFromStackProp=a,d}();var X=S,Y=a(function(a,b){function c(a,b){for(var c=0;c0){var i=c(d,this);~i?d.splice(i+1):d.push(this),~i?f.splice(i,1/0,g):f.push(g),~c(d,h)&&(h=b.call(this,g,h))}else d.push(h);return null==a?h instanceof Error?e(h):h:a.call(this,g,h)}}b=a.exports=d,b.getSerialize=f});G.prototype=new Error,G.prototype.constructor=G;var Z=G,$=function(a,b,c){var d=a[b],e=a;if(b in a){var f="warn"===b?"warning":b;a[b]=function(){var a=[].slice.call(arguments),g=R.safeJoin(a," "),h={level:f,logger:"console",extra:{arguments:a}};"assert"===b?a[0]===!1&&(g="Assertion failed: "+(R.safeJoin(a.slice(1)," ")||"console.assert"),h.extra.arguments=a.slice(1),c&&c(g,h)):c&&c(g,h),d&&Function.prototype.apply.call(d,e,a)}}},_={wrapMethod:$},aa=R.isError,ba=R.isObject,ca=R.isErrorEvent,da=R.isUndefined,ea=R.isFunction,fa=R.isString,ga=R.isArray,ha=R.isEmptyObject,ia=R.each,ja=R.objectMerge,ka=R.truncate,la=R.objectFrozen,ma=R.hasKey,na=R.joinRegExp,oa=R.urlencode,pa=R.uuid4,qa=R.htmlTreeAsString,ra=R.isSameException,sa=R.isSameStacktrace,ta=R.parseUrl,ua=R.fill,va=R.supportsFetch,wa=_.wrapMethod,xa="source protocol user pass host port path".split(" "),ya=/^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/,za="undefined"!=typeof window?window:"undefined"!=typeof O?O:"undefined"!=typeof self?self:{},Aa=za.document,Ba=za.navigator;J.prototype={VERSION:"3.22.2",debug:!1,TraceKit:X,config:function(a,b){var c=this;if(c.i)return this.D("error","Error: Raven has already been configured"),c;if(!a)return c;var d=c.m;b&&ia(b,function(a,b){"tags"===a||"extra"===a||"user"===a?c.l[a]=b:d[a]=b}),c.setDSN(a),d.ignoreErrors.push(/^Script error\.?$/),d.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/),d.ignoreErrors=na(d.ignoreErrors),d.ignoreUrls=!!d.ignoreUrls.length&&na(d.ignoreUrls),d.whitelistUrls=!!d.whitelistUrls.length&&na(d.whitelistUrls),d.includePaths=na(d.includePaths),d.maxBreadcrumbs=Math.max(0,Math.min(d.maxBreadcrumbs||100,100));var e={xhr:!0,console:!0,dom:!0,location:!0,sentry:!0},f=d.autoBreadcrumbs;"[object Object]"==={}.toString.call(f)?f=ja(e,f):f!==!1&&(f=e),d.autoBreadcrumbs=f;var g={tryCatch:!0},h=d.instrument;return"[object Object]"==={}.toString.call(h)?h=ja(g,h):h!==!1&&(h=g),d.instrument=h,X.collectWindowErrors=!!d.collectWindowErrors,c},install:function(){var a=this;return a.isSetup()&&!a.p&&(X.report.subscribe(function(){a.E.apply(a,arguments)}),a.F(),a.m.instrument&&a.m.instrument.tryCatch&&a.G(),a.m.autoBreadcrumbs&&a.H(),a.I(),a.p=!0),Error.stackTraceLimit=a.m.stackTraceLimit,this},setDSN:function(a){var b=this,c=b.J(a),d=c.path.lastIndexOf("/"),e=c.path.substr(1,d);b.K=a,b.j=c.user,b.L=c.pass&&c.pass.substr(1),b.k=c.path.substr(d+1),b.i=b.M(c),b.N=b.i+"/"+e+"api/"+b.k+"/store/",this.A()},context:function(a,b,c){return ea(a)&&(c=b||[],b=a,a=void 0),this.wrap(a,b).apply(this,c)},wrap:function(a,b,c){function d(){var d=[],f=arguments.length,g=!a||a&&a.deep!==!1;for(c&&ea(c)&&c.apply(this,arguments);f--;)d[f]=g?e.wrap(a,arguments[f]):arguments[f];try{return b.apply(this,d)}catch(h){throw e.O(),e.captureException(h,a),h}}var e=this;if(da(b)&&!ea(a))return a;if(ea(a)&&(b=a,a=void 0),!ea(b))return b;try{if(b.a)return b;if(b.P)return b.P}catch(f){return b}for(var g in b)ma(b,g)&&(d[g]=b[g]);return d.prototype=b.prototype,b.P=d,d.a=!0,d.b=b,d},uninstall:function(){return X.report.uninstall(),this.Q(),this.R(),this.S(),Error.stackTraceLimit=this.q,this.p=!1,this},captureException:function(a,b){b=ja({trimHeadFrames:0},b?b:{});var c=!aa(a),d=!ca(a),e=ca(a)&&!a.error;if(c&&d||e)return this.captureMessage(a,ja(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}));ca(a)&&(a=a.error),this.f=a;try{var f=X.computeStackTrace(a);this.T(f,b)}catch(g){if(a!==g)throw g}return this},captureMessage:function(a,b){if(!this.m.ignoreErrors.test||!this.m.ignoreErrors.test(a)){b=b||{};var c,d=ja({message:a+""},b);try{throw new Error(a)}catch(e){c=e}c.name=null;var f=X.computeStackTrace(c),g=ga(f.stack)&&f.stack[1],h=g&&g.url||"";if((!this.m.ignoreUrls.test||!this.m.ignoreUrls.test(h))&&(!this.m.whitelistUrls.test||this.m.whitelistUrls.test(h))){if(this.m.stacktrace||b&&b.stacktrace){b=ja({fingerprint:a,trimHeadFrames:(b.trimHeadFrames||0)+1},b);var i=this.U(f,b);d.stacktrace={frames:i.reverse()}}return this.V(d),this}}},captureBreadcrumb:function(a){var b=ja({timestamp:H()/1e3},a);if(ea(this.m.breadcrumbCallback)){var c=this.m.breadcrumbCallback(b);if(ba(c)&&!ha(c))b=c;else if(c===!1)return this}return this.w.push(b),this.w.length>this.m.maxBreadcrumbs&&this.w.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.t.push([a,b]),this.p&&this.I(),this},setUserContext:function(a){return this.l.user=a,this},setExtraContext:function(a){return this.W("extra",a),this},setTagsContext:function(a){return this.W("tags",a),this},clearContext:function(){return this.l={},this},getContext:function(){return JSON.parse(Y(this.l))},setEnvironment:function(a){return this.m.environment=a,this},setRelease:function(a){return this.m.release=a,this},setDataCallback:function(a){var b=this.m.dataCallback;return this.m.dataCallback=I(b,a),this},setBreadcrumbCallback:function(a){var b=this.m.breadcrumbCallback;return this.m.breadcrumbCallback=I(b,a),this},setShouldSendCallback:function(a){var b=this.m.shouldSendCallback;return this.m.shouldSendCallback=I(b,a),this},setTransport:function(a){return this.m.transport=a,this},lastException:function(){return this.f},lastEventId:function(){return this.h},isSetup:function(){return!!this.c&&(!!this.i||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.D("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=za.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(Aa){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new Z("Missing eventId");var c=a.dsn||this.K;if(!c)throw new Z("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.l.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.M(this.J(c)),h=Aa.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(Aa.head||Aa.body).appendChild(h)}},O:function(){var a=this;this.o+=1,setTimeout(function(){a.o-=1})},X:function(a,b){var c,d;if(this.d){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),Aa.createEvent?(c=Aa.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=Aa.createEventObject(),c.eventType=a);for(d in b)ma(b,d)&&(c[d]=b[d]);if(Aa.createEvent)Aa.dispatchEvent(c);else try{Aa.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},Y:function(a){var b=this;return function(c){if(b.Z=null,b.x!==c){b.x=c;var d;try{d=qa(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},$:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.Z;g||a.Y("input")(c),clearTimeout(g),a.Z=setTimeout(function(){a.Z=null},b)}}},_:function(a,b){var c=ta(this.y.href),d=ta(b),e=ta(a);this.z=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},F:function(){var a=this;a.aa=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.a?a.aa.apply(this.b,arguments):a.aa.apply(this,arguments)}},Q:function(){this.aa&&(Function.prototype.toString=this.aa)},G:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b._(b.z,c+""),a.apply(this,arguments)}};ua(history,"pushState",j,d),ua(history,"replaceState",j,d)}if(c.console&&"console"in za&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};ia(["debug","info","warn","error","log"],function(a,b){wa(console,b,k)})}},R:function(){for(var a;this.v.length;){a=this.v.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},S:function(){for(var a in this.s)this.r[a]=this.s[a]},I:function(){var a=this;ia(this.t,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},J:function(a){var b=ya.exec(a),c={},d=7;try{for(;d--;)c[xa[d]]=b[d]||""}catch(e){throw new Z("Invalid DSN: "+a)}if(c.pass&&!this.m.allowSecretKey)throw new Z("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},M:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},E:function(){this.o||this.T.apply(this,arguments)},T:function(a,b){var c=this.U(a,b);this.X("handle",{stackInfo:a,options:b}),this.ca(a.name,a.message,a.url,a.lineno,c,b)},U:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(ia(a.stack,function(b,e){var f=c.da(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.w,0)}),this.l.user&&(a.user=this.l.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||ha(a[b]))&&delete a[b]}),ea(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!ha(a)&&(!ea(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.ja()?void this.D("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() href parsing trick because React Native and other +// environments where DOM might not be available + + +function parseUrl$1(url) { + if (typeof url !== 'string') return {}; + var match = url.match(/^(([^:\/?#]+):)?(\/\/([^\/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?$/); // coerce to undefined values to empty string so we don't get 'undefined' + + var query = match[6] || ''; + var fragment = match[8] || ''; + return { + protocol: match[2], + host: match[4], + path: match[5], + relative: match[5] + query + fragment // everything minus origin + + }; +} + +function uuid4$1() { + var crypto = _window$3.crypto || _window$3.msCrypto; + + if (!isUndefined$1(crypto) && crypto.getRandomValues) { + // Use window.crypto API if available + // eslint-disable-next-line no-undef + var arr = new Uint16Array(8); + crypto.getRandomValues(arr); // set 4 in byte 7 + + arr[3] = arr[3] & 0xfff | 0x4000; // set 2 most significant bits of byte 9 to '10' + + arr[4] = arr[4] & 0x3fff | 0x8000; + + var pad = function pad(num) { + var v = num.toString(16); + + while (v.length < 4) { + v = '0' + v; + } + + return v; + }; + + return pad(arr[0]) + pad(arr[1]) + pad(arr[2]) + pad(arr[3]) + pad(arr[4]) + pad(arr[5]) + pad(arr[6]) + pad(arr[7]); + } else { + // http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/2117523#2117523 + return 'xxxxxxxxxxxx4xxxyxxxxxxxxxxxxxxx'.replace(/[xy]/g, function (c) { + var r = Math.random() * 16 | 0, + v = c === 'x' ? r : r & 0x3 | 0x8; + return v.toString(16); + }); + } +} +/** + * Given a child DOM element, returns a query-selector statement describing that + * and its ancestors + * e.g. [HTMLElement] => body > div > input#foo.btn[name=baz] + * @param elem + * @returns {string} + */ + + +function htmlTreeAsString$1(elem) { + /* eslint no-extra-parens:0*/ + var MAX_TRAVERSE_HEIGHT = 5, + MAX_OUTPUT_LEN = 80, + out = [], + height = 0, + len = 0, + separator = ' > ', + sepLength = separator.length, + nextStr; + + while (elem && height++ < MAX_TRAVERSE_HEIGHT) { + nextStr = htmlElementAsString(elem); // bail out if + // - nextStr is the 'html' element + // - the length of the string that would be created exceeds MAX_OUTPUT_LEN + // (ignore this limit if we are on the first iteration) + + if (nextStr === 'html' || height > 1 && len + out.length * sepLength + nextStr.length >= MAX_OUTPUT_LEN) { + break; + } + + out.push(nextStr); + len += nextStr.length; + elem = elem.parentNode; + } + + return out.reverse().join(separator); +} +/** + * Returns a simple, query-selector representation of a DOM element + * e.g. [HTMLElement] => input#foo.btn[name=baz] + * @param HTMLElement + * @returns {string} + */ + + +function htmlElementAsString(elem) { + var out = [], + className, + classes, + key, + attr, + i; + + if (!elem || !elem.tagName) { + return ''; + } + + out.push(elem.tagName.toLowerCase()); + + if (elem.id) { + out.push('#' + elem.id); + } + + className = elem.className; + + if (className && isString$1(className)) { + classes = className.split(/\s+/); + + for (i = 0; i < classes.length; i++) { + out.push('.' + classes[i]); + } + } + + var attrWhitelist = ['type', 'name', 'title', 'alt']; + + for (i = 0; i < attrWhitelist.length; i++) { + key = attrWhitelist[i]; + attr = elem.getAttribute(key); + + if (attr) { + out.push('[' + key + '="' + attr + '"]'); + } + } + + return out.join(''); +} +/** + * Returns true if either a OR b is truthy, but not both + */ + + +function isOnlyOneTruthy(a, b) { + return !!(!!a ^ !!b); +} +/** + * Returns true if both parameters are undefined + */ + + +function isBothUndefined(a, b) { + return isUndefined$1(a) && isUndefined$1(b); +} +/** + * Returns true if the two input exception interfaces have the same content + */ + + +function isSameException$1(ex1, ex2) { + if (isOnlyOneTruthy(ex1, ex2)) return false; + ex1 = ex1.values[0]; + ex2 = ex2.values[0]; + if (ex1.type !== ex2.type || ex1.value !== ex2.value) return false; // in case both stacktraces are undefined, we can't decide so default to false + + if (isBothUndefined(ex1.stacktrace, ex2.stacktrace)) return false; + return isSameStacktrace$1(ex1.stacktrace, ex2.stacktrace); +} +/** + * Returns true if the two input stack trace interfaces have the same content + */ + + +function isSameStacktrace$1(stack1, stack2) { + if (isOnlyOneTruthy(stack1, stack2)) return false; + var frames1 = stack1.frames; + var frames2 = stack2.frames; // Exit early if frame count differs + + if (frames1.length !== frames2.length) return false; // Iterate through every frame; bail out if anything differs + + var a, b; + + for (var i = 0; i < frames1.length; i++) { + a = frames1[i]; + b = frames2[i]; + if (a.filename !== b.filename || a.lineno !== b.lineno || a.colno !== b.colno || a['function'] !== b['function']) return false; + } + + return true; +} +/** + * Polyfill a method + * @param obj object e.g. `document` + * @param name method name present on object e.g. `addEventListener` + * @param replacement replacement function + * @param track {optional} record instrumentation to an array + */ + + +function fill$1(obj, name, replacement, track) { + var orig = obj[name]; + obj[name] = replacement(orig); + obj[name].__raven__ = true; + obj[name].__orig__ = orig; + + if (track) { + track.push([obj, name, orig]); + } +} +/** + * Join values in array + * @param input array of values to be joined together + * @param delimiter string to be placed in-between values + * @returns {string} + */ + + +function safeJoin(input, delimiter) { + if (!isArray$1(input)) return ''; + var output = []; + + for (var i = 0; i < input.length; i++) { + try { + output.push(String(input[i])); + } catch (e) { + output.push('[value cannot be serialized]'); + } + } + + return output.join(delimiter); +} + +var utils = { + isObject: isObject$1, + isError: isError$1, + isErrorEvent: isErrorEvent$1, + isUndefined: isUndefined$1, + isFunction: isFunction$1, + isPlainObject: isPlainObject, + isString: isString$1, + isArray: isArray$1, + isEmptyObject: isEmptyObject$1, + supportsErrorEvent: supportsErrorEvent, + supportsFetch: supportsFetch$1, + wrappedCallback: wrappedCallback, + each: each$1, + objectMerge: objectMerge$1, + truncate: truncate$1, + objectFrozen: objectFrozen$1, + hasKey: hasKey$1, + joinRegExp: joinRegExp$1, + urlencode: urlencode$1, + uuid4: uuid4$1, + htmlTreeAsString: htmlTreeAsString$1, + htmlElementAsString: htmlElementAsString, + isSameException: isSameException$1, + isSameStacktrace: isSameStacktrace$1, + parseUrl: parseUrl$1, + fill: fill$1, + safeJoin: safeJoin +}; + +/* + TraceKit - Cross brower stack traces + + This was originally forked from github.com/occ/TraceKit, but has since been + largely re-written and is now maintained as part of raven-js. Tests for + this are in test/vendor. + + MIT license +*/ + +var TraceKit = { + collectWindowErrors: true, + debug: false +}; // This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) + +var _window$2 = typeof window !== 'undefined' ? window : typeof commonjsGlobal !== 'undefined' ? commonjsGlobal : typeof self !== 'undefined' ? self : {}; // global reference to slice + + +var _slice = [].slice; +var UNKNOWN_FUNCTION = '?'; // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error#Error_types + +var ERROR_TYPES_RE = /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/; + +function getLocationHref() { + if (typeof document === 'undefined' || document.location == null) return ''; + return document.location.href; +} +/** + * TraceKit.report: cross-browser processing of unhandled exceptions + * + * Syntax: + * TraceKit.report.subscribe(function(stackInfo) { ... }) + * TraceKit.report.unsubscribe(function(stackInfo) { ... }) + * TraceKit.report(exception) + * try { ...code... } catch(ex) { TraceKit.report(ex); } + * + * Supports: + * - Firefox: full stack trace with line numbers, plus column number + * on top frame; column number is not guaranteed + * - Opera: full stack trace with line and column numbers + * - Chrome: full stack trace with line and column numbers + * - Safari: line and column number for the top frame only; some frames + * may be missing, and column number is not guaranteed + * - IE: line and column number for the top frame only; some frames + * may be missing, and column number is not guaranteed + * + * In theory, TraceKit should work on all of the following versions: + * - IE5.5+ (only 8.0 tested) + * - Firefox 0.9+ (only 3.5+ tested) + * - Opera 7+ (only 10.50 tested; versions 9 and earlier may require + * Exceptions Have Stacktrace to be enabled in opera:config) + * - Safari 3+ (only 4+ tested) + * - Chrome 1+ (only 5+ tested) + * - Konqueror 3.5+ (untested) + * + * Requires TraceKit.computeStackTrace. + * + * Tries to catch all unhandled exceptions and report them to the + * subscribed handlers. Please note that TraceKit.report will rethrow the + * exception. This is REQUIRED in order to get a useful stack trace in IE. + * If the exception does not reach the top of the browser, you will only + * get a stack trace from the point where TraceKit.report was called. + * + * Handlers receive a stackInfo object as described in the + * TraceKit.computeStackTrace docs. + */ + + +TraceKit.report = function reportModuleWrapper() { + var handlers = [], + lastArgs = null, + lastException = null, + lastExceptionStack = null; + /** + * Add a crash handler. + * @param {Function} handler + */ + + function subscribe(handler) { + installGlobalHandler(); + handlers.push(handler); + } + /** + * Remove a crash handler. + * @param {Function} handler + */ + + + function unsubscribe(handler) { + for (var i = handlers.length - 1; i >= 0; --i) { + if (handlers[i] === handler) { + handlers.splice(i, 1); + } + } + } + /** + * Remove all crash handlers. + */ + + + function unsubscribeAll() { + uninstallGlobalHandler(); + handlers = []; + } + /** + * Dispatch stack information to all handlers. + * @param {Object.} stack + */ + + + function notifyHandlers(stack, isWindowError) { + var exception = null; + + if (isWindowError && !TraceKit.collectWindowErrors) { + return; + } + + for (var i in handlers) { + if (handlers.hasOwnProperty(i)) { + try { + handlers[i].apply(null, [stack].concat(_slice.call(arguments, 2))); + } catch (inner) { + exception = inner; + } + } + } + + if (exception) { + throw exception; + } + } + + var _oldOnerrorHandler, _onErrorHandlerInstalled; + /** + * Ensures all global unhandled exceptions are recorded. + * Supported by Gecko and IE. + * @param {string} msg Error message. + * @param {string} url URL of script that generated the exception. + * @param {(number|string)} lineNo The line number at which the error + * occurred. + * @param {?(number|string)} colNo The column number at which the error + * occurred. + * @param {?Error} ex The actual Error object. + */ + + + function traceKitWindowOnError(msg, url, lineNo, colNo, ex) { + var stack = null; // If 'ex' is ErrorEvent, get real Error from inside + + var exception = utils.isErrorEvent(ex) ? ex.error : ex; // If 'msg' is ErrorEvent, get real message from inside + + var message = utils.isErrorEvent(msg) ? msg.message : msg; + + if (lastExceptionStack) { + TraceKit.computeStackTrace.augmentStackTraceWithInitialElement(lastExceptionStack, url, lineNo, message); + processLastException(); + } else if (exception && utils.isError(exception)) { + // non-string `exception` arg; attempt to extract stack trace + // New chrome and blink send along a real error object + // Let's just report that like a normal error. + // See: https://mikewest.org/2013/08/debugging-runtime-errors-with-window-onerror + stack = TraceKit.computeStackTrace(exception); + notifyHandlers(stack, true); + } else { + var location = { + url: url, + line: lineNo, + column: colNo + }; + var name = undefined; + var groups; + + if ({}.toString.call(message) === '[object String]') { + var groups = message.match(ERROR_TYPES_RE); + + if (groups) { + name = groups[1]; + message = groups[2]; + } + } + + location.func = UNKNOWN_FUNCTION; + stack = { + name: name, + message: message, + url: getLocationHref(), + stack: [location] + }; + notifyHandlers(stack, true); + } + + if (_oldOnerrorHandler) { + return _oldOnerrorHandler.apply(this, arguments); + } + + return false; + } + + function installGlobalHandler() { + if (_onErrorHandlerInstalled) { + return; + } + + _oldOnerrorHandler = _window$2.onerror; + _window$2.onerror = traceKitWindowOnError; + _onErrorHandlerInstalled = true; + } + + function uninstallGlobalHandler() { + if (!_onErrorHandlerInstalled) { + return; + } + + _window$2.onerror = _oldOnerrorHandler; + _onErrorHandlerInstalled = false; + _oldOnerrorHandler = undefined; + } + + function processLastException() { + var _lastExceptionStack = lastExceptionStack, + _lastArgs = lastArgs; + lastArgs = null; + lastExceptionStack = null; + lastException = null; + notifyHandlers.apply(null, [_lastExceptionStack, false].concat(_lastArgs)); + } + /** + * Reports an unhandled Error to TraceKit. + * @param {Error} ex + * @param {?boolean} rethrow If false, do not re-throw the exception. + * Only used for window.onerror to not cause an infinite loop of + * rethrowing. + */ + + + function report(ex, rethrow) { + var args = _slice.call(arguments, 1); + + if (lastExceptionStack) { + if (lastException === ex) { + return; // already caught by an inner catch block, ignore + } else { + processLastException(); + } + } + + var stack = TraceKit.computeStackTrace(ex); + lastExceptionStack = stack; + lastException = ex; + lastArgs = args; // If the stack trace is incomplete, wait for 2 seconds for + // slow slow IE to see if onerror occurs or not before reporting + // this exception; otherwise, we will end up with an incomplete + // stack trace + + setTimeout(function () { + if (lastException === ex) { + processLastException(); + } + }, stack.incomplete ? 2000 : 0); + + if (rethrow !== false) { + throw ex; // re-throw to propagate to the top level (and cause window.onerror) + } + } + + report.subscribe = subscribe; + report.unsubscribe = unsubscribe; + report.uninstall = unsubscribeAll; + return report; +}(); +/** + * TraceKit.computeStackTrace: cross-browser stack traces in JavaScript + * + * Syntax: + * s = TraceKit.computeStackTrace(exception) // consider using TraceKit.report instead (see below) + * Returns: + * s.name - exception name + * s.message - exception message + * s.stack[i].url - JavaScript or HTML file URL + * s.stack[i].func - function name, or empty for anonymous functions (if guessing did not work) + * s.stack[i].args - arguments passed to the function, if known + * s.stack[i].line - line number, if known + * s.stack[i].column - column number, if known + * + * Supports: + * - Firefox: full stack trace with line numbers and unreliable column + * number on top frame + * - Opera 10: full stack trace with line and column numbers + * - Opera 9-: full stack trace with line numbers + * - Chrome: full stack trace with line and column numbers + * - Safari: line and column number for the topmost stacktrace element + * only + * - IE: no line numbers whatsoever + * + * Tries to guess names of anonymous functions by looking for assignments + * in the source code. In IE and Safari, we have to guess source file names + * by searching for function bodies inside all page scripts. This will not + * work for scripts that are loaded cross-domain. + * Here be dragons: some function names may be guessed incorrectly, and + * duplicate functions may be mismatched. + * + * TraceKit.computeStackTrace should only be used for tracing purposes. + * Logging of unhandled exceptions should be done with TraceKit.report, + * which builds on top of TraceKit.computeStackTrace and provides better + * IE support by utilizing the window.onerror event to retrieve information + * about the top of the stack. + * + * Note: In IE and Safari, no stack trace is recorded on the Error object, + * so computeStackTrace instead walks its *own* chain of callers. + * This means that: + * * in Safari, some methods may be missing from the stack trace; + * * in IE, the topmost function in the stack trace will always be the + * caller of computeStackTrace. + * + * This is okay for tracing (because you are likely to be calling + * computeStackTrace from the function you want to be the topmost element + * of the stack trace anyway), but not okay for logging unhandled + * exceptions (because your catch block will likely be far away from the + * inner function that actually caused the exception). + * + */ + + +TraceKit.computeStackTrace = function computeStackTraceWrapper() { + // Contents of Exception in various browsers. + // + // SAFARI: + // ex.message = Can't find variable: qq + // ex.line = 59 + // ex.sourceId = 580238192 + // ex.sourceURL = http://... + // ex.expressionBeginOffset = 96 + // ex.expressionCaretOffset = 98 + // ex.expressionEndOffset = 98 + // ex.name = ReferenceError + // + // FIREFOX: + // ex.message = qq is not defined + // ex.fileName = http://... + // ex.lineNumber = 59 + // ex.columnNumber = 69 + // ex.stack = ...stack trace... (see the example below) + // ex.name = ReferenceError + // + // CHROME: + // ex.message = qq is not defined + // ex.name = ReferenceError + // ex.type = not_defined + // ex.arguments = ['aa'] + // ex.stack = ...stack trace... + // + // INTERNET EXPLORER: + // ex.message = ... + // ex.name = ReferenceError + // + // OPERA: + // ex.message = ...message... (see the example below) + // ex.name = ReferenceError + // ex.opera#sourceloc = 11 (pretty much useless, duplicates the info in ex.message) + // ex.stacktrace = n/a; see 'opera:config#UserPrefs|Exceptions Have Stacktrace' + + /** + * Computes stack trace information from the stack property. + * Chrome and Gecko use this property. + * @param {Error} ex + * @return {?Object.} Stack trace information. + */ + function computeStackTraceFromStackProp(ex) { + if (typeof ex.stack === 'undefined' || !ex.stack) return; + var chrome = /^\s*at (.*?) ?\(((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i, + gecko = /^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|\[native).*?|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i, + winjs = /^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i, + // Used to additionally parse URL/line/column from eval frames + geckoEval = /(\S+) line (\d+)(?: > eval line \d+)* > eval/i, + chromeEval = /\((\S*)(?::(\d+))(?::(\d+))\)/, + lines = ex.stack.split('\n'), + stack = [], + submatch, + parts, + element, + reference = /^(.*) is undefined$/.exec(ex.message); + + for (var i = 0, j = lines.length; i < j; ++i) { + if (parts = chrome.exec(lines[i])) { + var isNative = parts[2] && parts[2].indexOf('native') === 0; // start of line + + var isEval = parts[2] && parts[2].indexOf('eval') === 0; // start of line + + if (isEval && (submatch = chromeEval.exec(parts[2]))) { + // throw out eval line/column and use top-most line/column number + parts[2] = submatch[1]; // url + + parts[3] = submatch[2]; // line + + parts[4] = submatch[3]; // column + } + + element = { + url: !isNative ? parts[2] : null, + func: parts[1] || UNKNOWN_FUNCTION, + args: isNative ? [parts[2]] : [], + line: parts[3] ? +parts[3] : null, + column: parts[4] ? +parts[4] : null + }; + } else if (parts = winjs.exec(lines[i])) { + element = { + url: parts[2], + func: parts[1] || UNKNOWN_FUNCTION, + args: [], + line: +parts[3], + column: parts[4] ? +parts[4] : null + }; + } else if (parts = gecko.exec(lines[i])) { + var isEval = parts[3] && parts[3].indexOf(' > eval') > -1; + + if (isEval && (submatch = geckoEval.exec(parts[3]))) { + // throw out eval line/column and use top-most line number + parts[3] = submatch[1]; + parts[4] = submatch[2]; + parts[5] = null; // no column when eval + } else if (i === 0 && !parts[5] && typeof ex.columnNumber !== 'undefined') { + // FireFox uses this awesome columnNumber property for its top frame + // Also note, Firefox's column number is 0-based and everything else expects 1-based, + // so adding 1 + // NOTE: this hack doesn't work if top-most frame is eval + stack[0].column = ex.columnNumber + 1; + } + + element = { + url: parts[3], + func: parts[1] || UNKNOWN_FUNCTION, + args: parts[2] ? parts[2].split(',') : [], + line: parts[4] ? +parts[4] : null, + column: parts[5] ? +parts[5] : null + }; + } else { + continue; + } + + if (!element.func && element.line) { + element.func = UNKNOWN_FUNCTION; + } + + stack.push(element); + } + + if (!stack.length) { + return null; + } + + return { + name: ex.name, + message: ex.message, + url: getLocationHref(), + stack: stack + }; + } + /** + * Adds information about the first frame to incomplete stack traces. + * Safari and IE require this to get complete data on the first frame. + * @param {Object.} stackInfo Stack trace information from + * one of the compute* methods. + * @param {string} url The URL of the script that caused an error. + * @param {(number|string)} lineNo The line number of the script that + * caused an error. + * @param {string=} message The error generated by the browser, which + * hopefully contains the name of the object that caused the error. + * @return {boolean} Whether or not the stack information was + * augmented. + */ + + + function augmentStackTraceWithInitialElement(stackInfo, url, lineNo, message) { + var initial = { + url: url, + line: lineNo + }; + + if (initial.url && initial.line) { + stackInfo.incomplete = false; + + if (!initial.func) { + initial.func = UNKNOWN_FUNCTION; + } + + if (stackInfo.stack.length > 0) { + if (stackInfo.stack[0].url === initial.url) { + if (stackInfo.stack[0].line === initial.line) { + return false; // already in stack trace + } else if (!stackInfo.stack[0].line && stackInfo.stack[0].func === initial.func) { + stackInfo.stack[0].line = initial.line; + return false; + } + } + } + + stackInfo.stack.unshift(initial); + stackInfo.partial = true; + return true; + } else { + stackInfo.incomplete = true; + } + + return false; + } + /** + * Computes stack trace information by walking the arguments.caller + * chain at the time the exception occurred. This will cause earlier + * frames to be missed but is the only way to get any stack trace in + * Safari and IE. The top frame is restored by + * {@link augmentStackTraceWithInitialElement}. + * @param {Error} ex + * @return {?Object.} Stack trace information. + */ + + + function computeStackTraceByWalkingCallerChain(ex, depth) { + var functionName = /function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i, + stack = [], + funcs = {}, + recursion = false, + parts, + item; + + for (var curr = computeStackTraceByWalkingCallerChain.caller; curr && !recursion; curr = curr.caller) { + if (curr === computeStackTrace || curr === TraceKit.report) { + // console.log('skipping internal function'); + continue; + } + + item = { + url: null, + func: UNKNOWN_FUNCTION, + line: null, + column: null + }; + + if (curr.name) { + item.func = curr.name; + } else if (parts = functionName.exec(curr.toString())) { + item.func = parts[1]; + } + + if (typeof item.func === 'undefined') { + try { + item.func = parts.input.substring(0, parts.input.indexOf('{')); + } catch (e) {} + } + + if (funcs['' + curr]) { + recursion = true; + } else { + funcs['' + curr] = true; + } + + stack.push(item); + } + + if (depth) { + // console.log('depth is ' + depth); + // console.log('stack is ' + stack.length); + stack.splice(0, depth); + } + + var result = { + name: ex.name, + message: ex.message, + url: getLocationHref(), + stack: stack + }; + augmentStackTraceWithInitialElement(result, ex.sourceURL || ex.fileName, ex.line || ex.lineNumber, ex.message || ex.description); + return result; + } + /** + * Computes a stack trace for an exception. + * @param {Error} ex + * @param {(string|number)=} depth + */ + + + function computeStackTrace(ex, depth) { + var stack = null; + depth = depth == null ? 0 : +depth; + + try { + stack = computeStackTraceFromStackProp(ex); + + if (stack) { + return stack; + } + } catch (e) { + if (TraceKit.debug) { + throw e; + } + } + + try { + stack = computeStackTraceByWalkingCallerChain(ex, depth + 1); + + if (stack) { + return stack; + } + } catch (e) { + if (TraceKit.debug) { + throw e; + } + } + + return { + name: ex.name, + message: ex.message, + url: getLocationHref() + }; + } + + computeStackTrace.augmentStackTraceWithInitialElement = augmentStackTraceWithInitialElement; + computeStackTrace.computeStackTraceFromStackProp = computeStackTraceFromStackProp; + return computeStackTrace; +}(); + +var tracekit = TraceKit; + +var stringify_1 = createCommonjsModule(function (module, exports) { + /* + json-stringify-safe + Like JSON.stringify, but doesn't throw on circular references. + + Originally forked from https://github.com/isaacs/json-stringify-safe + version 5.0.1 on 3/8/2017 and modified to handle Errors serialization + and IE8 compatibility. Tests for this are in test/vendor. + + ISC license: https://github.com/isaacs/json-stringify-safe/blob/master/LICENSE + */ + exports = module.exports = stringify; + exports.getSerialize = serializer; + + function indexOf(haystack, needle) { + for (var i = 0; i < haystack.length; ++i) { + if (haystack[i] === needle) return i; + } + + return -1; + } + + function stringify(obj, replacer, spaces, cycleReplacer) { + return JSON.stringify(obj, serializer(replacer, cycleReplacer), spaces); + } // https://github.com/ftlabs/js-abbreviate/blob/fa709e5f139e7770a71827b1893f22418097fbda/index.js#L95-L106 + + + function stringifyError(value) { + var err = { + // These properties are implemented as magical getters and don't show up in for in + stack: value.stack, + message: value.message, + name: value.name + }; + + for (var i in value) { + if (Object.prototype.hasOwnProperty.call(value, i)) { + err[i] = value[i]; + } + } + + return err; + } + + function serializer(replacer, cycleReplacer) { + var stack = []; + var keys = []; + + if (cycleReplacer == null) { + cycleReplacer = function cycleReplacer(key, value) { + if (stack[0] === value) { + return '[Circular ~]'; + } + + return '[Circular ~.' + keys.slice(0, indexOf(stack, value)).join('.') + ']'; + }; + } + + return function (key, value) { + if (stack.length > 0) { + var thisPos = indexOf(stack, this); + ~thisPos ? stack.splice(thisPos + 1) : stack.push(this); + ~thisPos ? keys.splice(thisPos, Infinity, key) : keys.push(key); + + if (~indexOf(stack, value)) { + value = cycleReplacer.call(this, key, value); + } + } else { + stack.push(value); + } + + return replacer == null ? value instanceof Error ? stringifyError(value) : value : replacer.call(this, key, value); + }; + } +}); +var stringify_2 = stringify_1.getSerialize; + +function RavenConfigError(message) { + this.name = 'RavenConfigError'; + this.message = message; +} + +RavenConfigError.prototype = new Error(); +RavenConfigError.prototype.constructor = RavenConfigError; +var configError = RavenConfigError; + +var wrapMethod = function wrapMethod(console, level, callback) { + var originalConsoleLevel = console[level]; + var originalConsole = console; + + if (!(level in console)) { + return; + } + + var sentryLevel = level === 'warn' ? 'warning' : level; + + console[level] = function () { + var args = [].slice.call(arguments); + var msg = utils.safeJoin(args, ' '); + var data = { + level: sentryLevel, + logger: 'console', + extra: { + arguments: args + } + }; + + if (level === 'assert') { + if (args[0] === false) { + // Default browsers message + msg = 'Assertion failed: ' + (utils.safeJoin(args.slice(1), ' ') || 'console.assert'); + data.extra.arguments = args.slice(1); + callback && callback(msg, data); + } + } else { + callback && callback(msg, data); + } // this fails for some browsers. :( + + + if (originalConsoleLevel) { + // IE9 doesn't allow calling apply on console functions directly + // See: https://stackoverflow.com/questions/5472938/does-ie9-support-console-log-and-is-it-a-real-function#answer-5473193 + Function.prototype.apply.call(originalConsoleLevel, originalConsole, args); + } + }; +}; + +var console$1 = { + wrapMethod: wrapMethod +}; + +/*global XDomainRequest:false */ + +var isError = utils.isError; +var isObject = utils.isObject; +var isErrorEvent = utils.isErrorEvent; +var isUndefined = utils.isUndefined; +var isFunction = utils.isFunction; +var isString = utils.isString; +var isArray = utils.isArray; +var isEmptyObject = utils.isEmptyObject; +var each = utils.each; +var objectMerge = utils.objectMerge; +var truncate = utils.truncate; +var objectFrozen = utils.objectFrozen; +var hasKey = utils.hasKey; +var joinRegExp = utils.joinRegExp; +var urlencode = utils.urlencode; +var uuid4 = utils.uuid4; +var htmlTreeAsString = utils.htmlTreeAsString; +var isSameException = utils.isSameException; +var isSameStacktrace = utils.isSameStacktrace; +var parseUrl = utils.parseUrl; +var fill = utils.fill; +var supportsFetch = utils.supportsFetch; +var wrapConsoleMethod = console$1.wrapMethod; +var dsnKeys = 'source protocol user pass host port path'.split(' '); +var dsnPattern = /^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/; + +function now() { + return +new Date(); +} // This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) + + +var _window$1 = typeof window !== 'undefined' ? window : typeof commonjsGlobal !== 'undefined' ? commonjsGlobal : typeof self !== 'undefined' ? self : {}; + +var _document = _window$1.document; +var _navigator = _window$1.navigator; + +function keepOriginalCallback(original, callback) { + return isFunction(callback) ? function (data) { + return callback(data, original); + } : callback; +} // First, check for JSON support +// If there is no JSON, we no-op the core features of Raven +// since JSON is required to encode the payload + + +function Raven$1() { + this._hasJSON = !!(_typeof(JSON) === 'object' && JSON.stringify); // Raven can run in contexts where there's no document (react-native) + + this._hasDocument = !isUndefined(_document); + this._hasNavigator = !isUndefined(_navigator); + this._lastCapturedException = null; + this._lastData = null; + this._lastEventId = null; + this._globalServer = null; + this._globalKey = null; + this._globalProject = null; + this._globalContext = {}; + this._globalOptions = { + // SENTRY_RELEASE can be injected by https://github.com/getsentry/sentry-webpack-plugin + release: _window$1.SENTRY_RELEASE && _window$1.SENTRY_RELEASE.id, + logger: 'javascript', + ignoreErrors: [], + ignoreUrls: [], + whitelistUrls: [], + includePaths: [], + headers: null, + collectWindowErrors: true, + maxMessageLength: 0, + // By default, truncates URL values to 250 chars + maxUrlLength: 250, + stackTraceLimit: 50, + autoBreadcrumbs: true, + instrument: true, + sampleRate: 1 + }; + this._fetchDefaults = { + method: 'POST', + keepalive: true, + referrerPolicy: 'origin' + }; + this._ignoreOnError = 0; + this._isRavenInstalled = false; + this._originalErrorStackTraceLimit = Error.stackTraceLimit; // capture references to window.console *and* all its methods first + // before the console plugin has a chance to monkey patch + + this._originalConsole = _window$1.console || {}; + this._originalConsoleMethods = {}; + this._plugins = []; + this._startTime = now(); + this._wrappedBuiltIns = []; + this._breadcrumbs = []; + this._lastCapturedEvent = null; + this._keypressTimeout; + this._location = _window$1.location; + this._lastHref = this._location && this._location.href; + + this._resetBackoff(); // eslint-disable-next-line guard-for-in + + + for (var method in this._originalConsole) { + this._originalConsoleMethods[method] = this._originalConsole[method]; + } +} +/* + * The core Raven singleton + * + * @this {Raven} + */ + + +Raven$1.prototype = { + // Hardcode version string so that raven source can be loaded directly via + // webpack (using a build step causes webpack #1617). Grunt verifies that + // this value matches package.json during build. + // See: https://github.com/getsentry/raven-js/issues/465 + VERSION: '3.22.2', + debug: false, + TraceKit: tracekit, + // alias to TraceKit + + /* + * Configure Raven with a DSN and extra options + * + * @param {string} dsn The public Sentry DSN + * @param {object} options Set of global options [optional] + * @return {Raven} + */ + config: function config(dsn, options) { + var self = this; + + if (self._globalServer) { + this._logDebug('error', 'Error: Raven has already been configured'); + + return self; + } + + if (!dsn) return self; + var globalOptions = self._globalOptions; // merge in options + + if (options) { + each(options, function (key, value) { + // tags and extra are special and need to be put into context + if (key === 'tags' || key === 'extra' || key === 'user') { + self._globalContext[key] = value; + } else { + globalOptions[key] = value; + } + }); + } + + self.setDSN(dsn); // "Script error." is hard coded into browsers for errors that it can't read. + // this is the result of a script being pulled in from an external domain and CORS. + + globalOptions.ignoreErrors.push(/^Script error\.?$/); + globalOptions.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/); // join regexp rules into one big rule + + globalOptions.ignoreErrors = joinRegExp(globalOptions.ignoreErrors); + globalOptions.ignoreUrls = globalOptions.ignoreUrls.length ? joinRegExp(globalOptions.ignoreUrls) : false; + globalOptions.whitelistUrls = globalOptions.whitelistUrls.length ? joinRegExp(globalOptions.whitelistUrls) : false; + globalOptions.includePaths = joinRegExp(globalOptions.includePaths); + globalOptions.maxBreadcrumbs = Math.max(0, Math.min(globalOptions.maxBreadcrumbs || 100, 100)); // default and hard limit is 100 + + var autoBreadcrumbDefaults = { + xhr: true, + console: true, + dom: true, + location: true, + sentry: true + }; + var autoBreadcrumbs = globalOptions.autoBreadcrumbs; + + if ({}.toString.call(autoBreadcrumbs) === '[object Object]') { + autoBreadcrumbs = objectMerge(autoBreadcrumbDefaults, autoBreadcrumbs); + } else if (autoBreadcrumbs !== false) { + autoBreadcrumbs = autoBreadcrumbDefaults; + } + + globalOptions.autoBreadcrumbs = autoBreadcrumbs; + var instrumentDefaults = { + tryCatch: true + }; + var instrument = globalOptions.instrument; + + if ({}.toString.call(instrument) === '[object Object]') { + instrument = objectMerge(instrumentDefaults, instrument); + } else if (instrument !== false) { + instrument = instrumentDefaults; + } + + globalOptions.instrument = instrument; + tracekit.collectWindowErrors = !!globalOptions.collectWindowErrors; // return for chaining + + return self; + }, + + /* + * Installs a global window.onerror error handler + * to capture and report uncaught exceptions. + * At this point, install() is required to be called due + * to the way TraceKit is set up. + * + * @return {Raven} + */ + install: function install() { + var self = this; + + if (self.isSetup() && !self._isRavenInstalled) { + tracekit.report.subscribe(function () { + self._handleOnErrorStackInfo.apply(self, arguments); + }); + + self._patchFunctionToString(); + + if (self._globalOptions.instrument && self._globalOptions.instrument.tryCatch) { + self._instrumentTryCatch(); + } + + if (self._globalOptions.autoBreadcrumbs) self._instrumentBreadcrumbs(); // Install all of the plugins + + self._drainPlugins(); + + self._isRavenInstalled = true; + } + + Error.stackTraceLimit = self._globalOptions.stackTraceLimit; + return this; + }, + + /* + * Set the DSN (can be called multiple time unlike config) + * + * @param {string} dsn The public Sentry DSN + */ + setDSN: function setDSN(dsn) { + var self = this, + uri = self._parseDSN(dsn), + lastSlash = uri.path.lastIndexOf('/'), + path = uri.path.substr(1, lastSlash); + + self._dsn = dsn; + self._globalKey = uri.user; + self._globalSecret = uri.pass && uri.pass.substr(1); + self._globalProject = uri.path.substr(lastSlash + 1); + self._globalServer = self._getGlobalServer(uri); + self._globalEndpoint = self._globalServer + '/' + path + 'api/' + self._globalProject + '/store/'; // Reset backoff state since we may be pointing at a + // new project/server + + this._resetBackoff(); + }, + + /* + * Wrap code within a context so Raven can capture errors + * reliably across domains that is executed immediately. + * + * @param {object} options A specific set of options for this context [optional] + * @param {function} func The callback to be immediately executed within the context + * @param {array} args An array of arguments to be called with the callback [optional] + */ + context: function context(options, func, args) { + if (isFunction(options)) { + args = func || []; + func = options; + options = undefined; + } + + return this.wrap(options, func).apply(this, args); + }, + + /* + * Wrap code within a context and returns back a new function to be executed + * + * @param {object} options A specific set of options for this context [optional] + * @param {function} func The function to be wrapped in a new context + * @param {function} func A function to call before the try/catch wrapper [optional, private] + * @return {function} The newly wrapped functions with a context + */ + wrap: function wrap(options, func, _before) { + var self = this; // 1 argument has been passed, and it's not a function + // so just return it + + if (isUndefined(func) && !isFunction(options)) { + return options; + } // options is optional + + + if (isFunction(options)) { + func = options; + options = undefined; + } // At this point, we've passed along 2 arguments, and the second one + // is not a function either, so we'll just return the second argument. + + + if (!isFunction(func)) { + return func; + } // We don't wanna wrap it twice! + + + try { + if (func.__raven__) { + return func; + } // If this has already been wrapped in the past, return that + + + if (func.__raven_wrapper__) { + return func.__raven_wrapper__; + } + } catch (e) { + // Just accessing custom props in some Selenium environments + // can cause a "Permission denied" exception (see raven-js#495). + // Bail on wrapping and return the function as-is (defers to window.onerror). + return func; + } + + function wrapped() { + var args = [], + i = arguments.length, + deep = !options || options && options.deep !== false; + + if (_before && isFunction(_before)) { + _before.apply(this, arguments); + } // Recursively wrap all of a function's arguments that are + // functions themselves. + + + while (i--) { + args[i] = deep ? self.wrap(options, arguments[i]) : arguments[i]; + } + + try { + // Attempt to invoke user-land function + // NOTE: If you are a Sentry user, and you are seeing this stack frame, it + // means Raven caught an error invoking your application code. This is + // expected behavior and NOT indicative of a bug with Raven.js. + return func.apply(this, args); + } catch (e) { + self._ignoreNextOnError(); + + self.captureException(e, options); + throw e; + } + } // copy over properties of the old function + + + for (var property in func) { + if (hasKey(func, property)) { + wrapped[property] = func[property]; + } + } + + wrapped.prototype = func.prototype; + func.__raven_wrapper__ = wrapped; // Signal that this function has been wrapped/filled already + // for both debugging and to prevent it to being wrapped/filled twice + + wrapped.__raven__ = true; + wrapped.__orig__ = func; + return wrapped; + }, + + /* + * Uninstalls the global error handler. + * + * @return {Raven} + */ + uninstall: function uninstall() { + tracekit.report.uninstall(); + + this._unpatchFunctionToString(); + + this._restoreBuiltIns(); + + this._restoreConsole(); + + Error.stackTraceLimit = this._originalErrorStackTraceLimit; + this._isRavenInstalled = false; + return this; + }, + + /* + * Manually capture an exception and send it over to Sentry + * + * @param {error} ex An exception to be logged + * @param {object} options A specific set of options for this error [optional] + * @return {Raven} + */ + captureException: function captureException(ex, options) { + options = objectMerge({ + trimHeadFrames: 0 + }, options ? options : {}); // Cases for sending ex as a message, rather than an exception + + var isNotError = !isError(ex); + var isNotErrorEvent = !isErrorEvent(ex); + var isErrorEventWithoutError = isErrorEvent(ex) && !ex.error; + + if (isNotError && isNotErrorEvent || isErrorEventWithoutError) { + return this.captureMessage(ex, objectMerge(options, { + stacktrace: true, + // if we fall back to captureMessage, default to attempting a new trace + trimHeadFrames: options.trimHeadFrames + 1 + })); + } // Get actual Error from ErrorEvent + + + if (isErrorEvent(ex)) ex = ex.error; // Store the raw exception object for potential debugging and introspection + + this._lastCapturedException = ex; // TraceKit.report will re-raise any exception passed to it, + // which means you have to wrap it in try/catch. Instead, we + // can wrap it here and only re-raise if TraceKit.report + // raises an exception different from the one we asked to + // report on. + + try { + var stack = tracekit.computeStackTrace(ex); + + this._handleStackInfo(stack, options); + } catch (ex1) { + if (ex !== ex1) { + throw ex1; + } + } + + return this; + }, + + /* + * Manually send a message to Sentry + * + * @param {string} msg A plain message to be captured in Sentry + * @param {object} options A specific set of options for this message [optional] + * @return {Raven} + */ + captureMessage: function captureMessage(msg, options) { + // config() automagically converts ignoreErrors from a list to a RegExp so we need to test for an + // early call; we'll error on the side of logging anything called before configuration since it's + // probably something you should see: + if (!!this._globalOptions.ignoreErrors.test && this._globalOptions.ignoreErrors.test(msg)) { + return; + } + + options = options || {}; + var data = objectMerge({ + message: msg + '' // Make sure it's actually a string + + }, options); + var ex; // Generate a "synthetic" stack trace from this point. + // NOTE: If you are a Sentry user, and you are seeing this stack frame, it is NOT indicative + // of a bug with Raven.js. Sentry generates synthetic traces either by configuration, + // or if it catches a thrown object without a "stack" property. + + try { + throw new Error(msg); + } catch (ex1) { + ex = ex1; + } // null exception name so `Error` isn't prefixed to msg + + + ex.name = null; + var stack = tracekit.computeStackTrace(ex); // stack[0] is `throw new Error(msg)` call itself, we are interested in the frame that was just before that, stack[1] + + var initialCall = isArray(stack.stack) && stack.stack[1]; + var fileurl = initialCall && initialCall.url || ''; + + if (!!this._globalOptions.ignoreUrls.test && this._globalOptions.ignoreUrls.test(fileurl)) { + return; + } + + if (!!this._globalOptions.whitelistUrls.test && !this._globalOptions.whitelistUrls.test(fileurl)) { + return; + } + + if (this._globalOptions.stacktrace || options && options.stacktrace) { + options = objectMerge({ + // fingerprint on msg, not stack trace (legacy behavior, could be + // revisited) + fingerprint: msg, + // since we know this is a synthetic trace, the top N-most frames + // MUST be from Raven.js, so mark them as in_app later by setting + // trimHeadFrames + trimHeadFrames: (options.trimHeadFrames || 0) + 1 + }, options); + + var frames = this._prepareFrames(stack, options); + + data.stacktrace = { + // Sentry expects frames oldest to newest + frames: frames.reverse() + }; + } // Fire away! + + + this._send(data); + + return this; + }, + captureBreadcrumb: function captureBreadcrumb(obj) { + var crumb = objectMerge({ + timestamp: now() / 1000 + }, obj); + + if (isFunction(this._globalOptions.breadcrumbCallback)) { + var result = this._globalOptions.breadcrumbCallback(crumb); + + if (isObject(result) && !isEmptyObject(result)) { + crumb = result; + } else if (result === false) { + return this; + } + } + + this._breadcrumbs.push(crumb); + + if (this._breadcrumbs.length > this._globalOptions.maxBreadcrumbs) { + this._breadcrumbs.shift(); + } + + return this; + }, + addPlugin: function addPlugin(plugin + /*arg1, arg2, ... argN*/ + ) { + var pluginArgs = [].slice.call(arguments, 1); + + this._plugins.push([plugin, pluginArgs]); + + if (this._isRavenInstalled) { + this._drainPlugins(); + } + + return this; + }, + + /* + * Set/clear a user to be sent along with the payload. + * + * @param {object} user An object representing user data [optional] + * @return {Raven} + */ + setUserContext: function setUserContext(user) { + // Intentionally do not merge here since that's an unexpected behavior. + this._globalContext.user = user; + return this; + }, + + /* + * Merge extra attributes to be sent along with the payload. + * + * @param {object} extra An object representing extra data [optional] + * @return {Raven} + */ + setExtraContext: function setExtraContext(extra) { + this._mergeContext('extra', extra); + + return this; + }, + + /* + * Merge tags to be sent along with the payload. + * + * @param {object} tags An object representing tags [optional] + * @return {Raven} + */ + setTagsContext: function setTagsContext(tags) { + this._mergeContext('tags', tags); + + return this; + }, + + /* + * Clear all of the context. + * + * @return {Raven} + */ + clearContext: function clearContext() { + this._globalContext = {}; + return this; + }, + + /* + * Get a copy of the current context. This cannot be mutated. + * + * @return {object} copy of context + */ + getContext: function getContext() { + // lol javascript + return JSON.parse(stringify_1(this._globalContext)); + }, + + /* + * Set environment of application + * + * @param {string} environment Typically something like 'production'. + * @return {Raven} + */ + setEnvironment: function setEnvironment(environment) { + this._globalOptions.environment = environment; + return this; + }, + + /* + * Set release version of application + * + * @param {string} release Typically something like a git SHA to identify version + * @return {Raven} + */ + setRelease: function setRelease(release) { + this._globalOptions.release = release; + return this; + }, + + /* + * Set the dataCallback option + * + * @param {function} callback The callback to run which allows the + * data blob to be mutated before sending + * @return {Raven} + */ + setDataCallback: function setDataCallback(callback) { + var original = this._globalOptions.dataCallback; + this._globalOptions.dataCallback = keepOriginalCallback(original, callback); + return this; + }, + + /* + * Set the breadcrumbCallback option + * + * @param {function} callback The callback to run which allows filtering + * or mutating breadcrumbs + * @return {Raven} + */ + setBreadcrumbCallback: function setBreadcrumbCallback(callback) { + var original = this._globalOptions.breadcrumbCallback; + this._globalOptions.breadcrumbCallback = keepOriginalCallback(original, callback); + return this; + }, + + /* + * Set the shouldSendCallback option + * + * @param {function} callback The callback to run which allows + * introspecting the blob before sending + * @return {Raven} + */ + setShouldSendCallback: function setShouldSendCallback(callback) { + var original = this._globalOptions.shouldSendCallback; + this._globalOptions.shouldSendCallback = keepOriginalCallback(original, callback); + return this; + }, + + /** + * Override the default HTTP transport mechanism that transmits data + * to the Sentry server. + * + * @param {function} transport Function invoked instead of the default + * `makeRequest` handler. + * + * @return {Raven} + */ + setTransport: function setTransport(transport) { + this._globalOptions.transport = transport; + return this; + }, + + /* + * Get the latest raw exception that was captured by Raven. + * + * @return {error} + */ + lastException: function lastException() { + return this._lastCapturedException; + }, + + /* + * Get the last event id + * + * @return {string} + */ + lastEventId: function lastEventId() { + return this._lastEventId; + }, + + /* + * Determine if Raven is setup and ready to go. + * + * @return {boolean} + */ + isSetup: function isSetup() { + if (!this._hasJSON) return false; // needs JSON support + + if (!this._globalServer) { + if (!this.ravenNotConfiguredError) { + this.ravenNotConfiguredError = true; + + this._logDebug('error', 'Error: Raven has not been configured.'); + } + + return false; + } + + return true; + }, + afterLoad: function afterLoad() { + // TODO: remove window dependence? + // Attempt to initialize Raven on load + var RavenConfig = _window$1.RavenConfig; + + if (RavenConfig) { + this.config(RavenConfig.dsn, RavenConfig.config).install(); + } + }, + showReportDialog: function showReportDialog(options) { + if (!_document // doesn't work without a document (React native) + ) return; + options = options || {}; + var lastEventId = options.eventId || this.lastEventId(); + + if (!lastEventId) { + throw new configError('Missing eventId'); + } + + var dsn = options.dsn || this._dsn; + + if (!dsn) { + throw new configError('Missing DSN'); + } + + var encode = encodeURIComponent; + var qs = ''; + qs += '?eventId=' + encode(lastEventId); + qs += '&dsn=' + encode(dsn); + var user = options.user || this._globalContext.user; + + if (user) { + if (user.name) qs += '&name=' + encode(user.name); + if (user.email) qs += '&email=' + encode(user.email); + } + + var globalServer = this._getGlobalServer(this._parseDSN(dsn)); + + var script = _document.createElement('script'); + + script.async = true; + script.src = globalServer + '/api/embed/error-page/' + qs; + + (_document.head || _document.body).appendChild(script); + }, + + /**** Private functions ****/ + _ignoreNextOnError: function _ignoreNextOnError() { + var self = this; + this._ignoreOnError += 1; + setTimeout(function () { + // onerror should trigger before setTimeout + self._ignoreOnError -= 1; + }); + }, + _triggerEvent: function _triggerEvent(eventType, options) { + // NOTE: `event` is a native browser thing, so let's avoid conflicting wiht it + var evt, key; + if (!this._hasDocument) return; + options = options || {}; + eventType = 'raven' + eventType.substr(0, 1).toUpperCase() + eventType.substr(1); + + if (_document.createEvent) { + evt = _document.createEvent('HTMLEvents'); + evt.initEvent(eventType, true, true); + } else { + evt = _document.createEventObject(); + evt.eventType = eventType; + } + + for (key in options) { + if (hasKey(options, key)) { + evt[key] = options[key]; + } + } + + if (_document.createEvent) { + // IE9 if standards + _document.dispatchEvent(evt); + } else { + // IE8 regardless of Quirks or Standards + // IE9 if quirks + try { + _document.fireEvent('on' + evt.eventType.toLowerCase(), evt); + } catch (e) {// Do nothing + } + } + }, + + /** + * Wraps addEventListener to capture UI breadcrumbs + * @param evtName the event name (e.g. "click") + * @returns {Function} + * @private + */ + _breadcrumbEventHandler: function _breadcrumbEventHandler(evtName) { + var self = this; + return function (evt) { + // reset keypress timeout; e.g. triggering a 'click' after + // a 'keypress' will reset the keypress debounce so that a new + // set of keypresses can be recorded + self._keypressTimeout = null; // It's possible this handler might trigger multiple times for the same + // event (e.g. event propagation through node ancestors). Ignore if we've + // already captured the event. + + if (self._lastCapturedEvent === evt) return; + self._lastCapturedEvent = evt; // try/catch both: + // - accessing evt.target (see getsentry/raven-js#838, #768) + // - `htmlTreeAsString` because it's complex, and just accessing the DOM incorrectly + // can throw an exception in some circumstances. + + var target; + + try { + target = htmlTreeAsString(evt.target); + } catch (e) { + target = ''; + } + + self.captureBreadcrumb({ + category: 'ui.' + evtName, + // e.g. ui.click, ui.input + message: target + }); + }; + }, + + /** + * Wraps addEventListener to capture keypress UI events + * @returns {Function} + * @private + */ + _keypressEventHandler: function _keypressEventHandler() { + var self = this, + debounceDuration = 1000; // milliseconds + // TODO: if somehow user switches keypress target before + // debounce timeout is triggered, we will only capture + // a single breadcrumb from the FIRST target (acceptable?) + + return function (evt) { + var target; + + try { + target = evt.target; + } catch (e) { + // just accessing event properties can throw an exception in some rare circumstances + // see: https://github.com/getsentry/raven-js/issues/838 + return; + } + + var tagName = target && target.tagName; // only consider keypress events on actual input elements + // this will disregard keypresses targeting body (e.g. tabbing + // through elements, hotkeys, etc) + + if (!tagName || tagName !== 'INPUT' && tagName !== 'TEXTAREA' && !target.isContentEditable) return; // record first keypress in a series, but ignore subsequent + // keypresses until debounce clears + + var timeout = self._keypressTimeout; + + if (!timeout) { + self._breadcrumbEventHandler('input')(evt); + } + + clearTimeout(timeout); + self._keypressTimeout = setTimeout(function () { + self._keypressTimeout = null; + }, debounceDuration); + }; + }, + + /** + * Captures a breadcrumb of type "navigation", normalizing input URLs + * @param to the originating URL + * @param from the target URL + * @private + */ + _captureUrlChange: function _captureUrlChange(from, to) { + var parsedLoc = parseUrl(this._location.href); + var parsedTo = parseUrl(to); + var parsedFrom = parseUrl(from); // because onpopstate only tells you the "new" (to) value of location.href, and + // not the previous (from) value, we need to track the value of the current URL + // state ourselves + + this._lastHref = to; // Use only the path component of the URL if the URL matches the current + // document (almost all the time when using pushState) + + if (parsedLoc.protocol === parsedTo.protocol && parsedLoc.host === parsedTo.host) to = parsedTo.relative; + if (parsedLoc.protocol === parsedFrom.protocol && parsedLoc.host === parsedFrom.host) from = parsedFrom.relative; + this.captureBreadcrumb({ + category: 'navigation', + data: { + to: to, + from: from + } + }); + }, + _patchFunctionToString: function _patchFunctionToString() { + var self = this; + self._originalFunctionToString = Function.prototype.toString; // eslint-disable-next-line no-extend-native + + Function.prototype.toString = function () { + if (typeof this === 'function' && this.__raven__) { + return self._originalFunctionToString.apply(this.__orig__, arguments); + } + + return self._originalFunctionToString.apply(this, arguments); + }; + }, + _unpatchFunctionToString: function _unpatchFunctionToString() { + if (this._originalFunctionToString) { + // eslint-disable-next-line no-extend-native + Function.prototype.toString = this._originalFunctionToString; + } + }, + + /** + * Wrap timer functions and event targets to catch errors and provide + * better metadata. + */ + _instrumentTryCatch: function _instrumentTryCatch() { + var self = this; + var wrappedBuiltIns = self._wrappedBuiltIns; + + function wrapTimeFn(orig) { + return function (fn, t) { + // preserve arity + // Make a copy of the arguments to prevent deoptimization + // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments + var args = new Array(arguments.length); + + for (var i = 0; i < args.length; ++i) { + args[i] = arguments[i]; + } + + var originalCallback = args[0]; + + if (isFunction(originalCallback)) { + args[0] = self.wrap(originalCallback); + } // IE < 9 doesn't support .call/.apply on setInterval/setTimeout, but it + // also supports only two arguments and doesn't care what this is, so we + // can just call the original function directly. + + + if (orig.apply) { + return orig.apply(this, args); + } else { + return orig(args[0], args[1]); + } + }; + } + + var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; + + function wrapEventTarget(global) { + var proto = _window$1[global] && _window$1[global].prototype; + + if (proto && proto.hasOwnProperty && proto.hasOwnProperty('addEventListener')) { + fill(proto, 'addEventListener', function (orig) { + return function (evtName, fn, capture, secure) { + // preserve arity + try { + if (fn && fn.handleEvent) { + fn.handleEvent = self.wrap(fn.handleEvent); + } + } catch (err) {} // can sometimes get 'Permission denied to access property "handle Event' + // More breadcrumb DOM capture ... done here and not in `_instrumentBreadcrumbs` + // so that we don't have more than one wrapper function + + + var before, clickHandler, keypressHandler; + + if (autoBreadcrumbs && autoBreadcrumbs.dom && (global === 'EventTarget' || global === 'Node')) { + // NOTE: generating multiple handlers per addEventListener invocation, should + // revisit and verify we can just use one (almost certainly) + clickHandler = self._breadcrumbEventHandler('click'); + keypressHandler = self._keypressEventHandler(); + + before = function before(evt) { + // need to intercept every DOM event in `before` argument, in case that + // same wrapped method is re-used for different events (e.g. mousemove THEN click) + // see #724 + if (!evt) return; + var eventType; + + try { + eventType = evt.type; + } catch (e) { + // just accessing event properties can throw an exception in some rare circumstances + // see: https://github.com/getsentry/raven-js/issues/838 + return; + } + + if (eventType === 'click') return clickHandler(evt);else if (eventType === 'keypress') return keypressHandler(evt); + }; + } + + return orig.call(this, evtName, self.wrap(fn, undefined, before), capture, secure); + }; + }, wrappedBuiltIns); + fill(proto, 'removeEventListener', function (orig) { + return function (evt, fn, capture, secure) { + try { + fn = fn && (fn.__raven_wrapper__ ? fn.__raven_wrapper__ : fn); + } catch (e) {// ignore, accessing __raven_wrapper__ will throw in some Selenium environments + } + + return orig.call(this, evt, fn, capture, secure); + }; + }, wrappedBuiltIns); + } + } + + fill(_window$1, 'setTimeout', wrapTimeFn, wrappedBuiltIns); + fill(_window$1, 'setInterval', wrapTimeFn, wrappedBuiltIns); + + if (_window$1.requestAnimationFrame) { + fill(_window$1, 'requestAnimationFrame', function (orig) { + return function (cb) { + return orig(self.wrap(cb)); + }; + }, wrappedBuiltIns); + } // event targets borrowed from bugsnag-js: + // https://github.com/bugsnag/bugsnag-js/blob/master/src/bugsnag.js#L666 + + + var eventTargets = ['EventTarget', 'Window', 'Node', 'ApplicationCache', 'AudioTrackList', 'ChannelMergerNode', 'CryptoOperation', 'EventSource', 'FileReader', 'HTMLUnknownElement', 'IDBDatabase', 'IDBRequest', 'IDBTransaction', 'KeyOperation', 'MediaController', 'MessagePort', 'ModalWindow', 'Notification', 'SVGElementInstance', 'Screen', 'TextTrack', 'TextTrackCue', 'TextTrackList', 'WebSocket', 'WebSocketWorker', 'Worker', 'XMLHttpRequest', 'XMLHttpRequestEventTarget', 'XMLHttpRequestUpload']; + + for (var i = 0; i < eventTargets.length; i++) { + wrapEventTarget(eventTargets[i]); + } + }, + + /** + * Instrument browser built-ins w/ breadcrumb capturing + * - XMLHttpRequests + * - DOM interactions (click/typing) + * - window.location changes + * - console + * + * Can be disabled or individually configured via the `autoBreadcrumbs` config option + */ + _instrumentBreadcrumbs: function _instrumentBreadcrumbs() { + var self = this; + var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; + var wrappedBuiltIns = self._wrappedBuiltIns; + + function wrapProp(prop, xhr) { + if (prop in xhr && isFunction(xhr[prop])) { + fill(xhr, prop, function (orig) { + return self.wrap(orig); + }); // intentionally don't track filled methods on XHR instances + } + } + + if (autoBreadcrumbs.xhr && 'XMLHttpRequest' in _window$1) { + var xhrproto = XMLHttpRequest.prototype; + fill(xhrproto, 'open', function (origOpen) { + return function (method, url) { + // preserve arity + // if Sentry key appears in URL, don't capture + if (isString(url) && url.indexOf(self._globalKey) === -1) { + this.__raven_xhr = { + method: method, + url: url, + status_code: null + }; + } + + return origOpen.apply(this, arguments); + }; + }, wrappedBuiltIns); + fill(xhrproto, 'send', function (origSend) { + return function () { + // preserve arity + var xhr = this; + + function onreadystatechangeHandler() { + if (xhr.__raven_xhr && xhr.readyState === 4) { + try { + // touching statusCode in some platforms throws + // an exception + xhr.__raven_xhr.status_code = xhr.status; + } catch (e) { + /* do nothing */ + } + + self.captureBreadcrumb({ + type: 'http', + category: 'xhr', + data: xhr.__raven_xhr + }); + } + } + + var props = ['onload', 'onerror', 'onprogress']; + + for (var j = 0; j < props.length; j++) { + wrapProp(props[j], xhr); + } + + if ('onreadystatechange' in xhr && isFunction(xhr.onreadystatechange)) { + fill(xhr, 'onreadystatechange', function (orig) { + return self.wrap(orig, undefined, onreadystatechangeHandler); + } + /* intentionally don't track this instrumentation */ + ); + } else { + // if onreadystatechange wasn't actually set by the page on this xhr, we + // are free to set our own and capture the breadcrumb + xhr.onreadystatechange = onreadystatechangeHandler; + } + + return origSend.apply(this, arguments); + }; + }, wrappedBuiltIns); + } + + if (autoBreadcrumbs.xhr && supportsFetch()) { + fill(_window$1, 'fetch', function (origFetch) { + return function () { + // preserve arity + // Make a copy of the arguments to prevent deoptimization + // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments + var args = new Array(arguments.length); + + for (var i = 0; i < args.length; ++i) { + args[i] = arguments[i]; + } + + var fetchInput = args[0]; + var method = 'GET'; + var url; + + if (typeof fetchInput === 'string') { + url = fetchInput; + } else if ('Request' in _window$1 && fetchInput instanceof _window$1.Request) { + url = fetchInput.url; + + if (fetchInput.method) { + method = fetchInput.method; + } + } else { + url = '' + fetchInput; + } // if Sentry key appears in URL, don't capture, as it's our own request + + + if (url.indexOf(self._globalKey) !== -1) { + return origFetch.apply(this, args); + } + + if (args[1] && args[1].method) { + method = args[1].method; + } + + var fetchData = { + method: method, + url: url, + status_code: null + }; + return origFetch.apply(this, args).then(function (response) { + fetchData.status_code = response.status; + self.captureBreadcrumb({ + type: 'http', + category: 'fetch', + data: fetchData + }); + return response; + }); + }; + }, wrappedBuiltIns); + } // Capture breadcrumbs from any click that is unhandled / bubbled up all the way + // to the document. Do this before we instrument addEventListener. + + + if (autoBreadcrumbs.dom && this._hasDocument) { + if (_document.addEventListener) { + _document.addEventListener('click', self._breadcrumbEventHandler('click'), false); + + _document.addEventListener('keypress', self._keypressEventHandler(), false); + } else { + // IE8 Compatibility + _document.attachEvent('onclick', self._breadcrumbEventHandler('click')); + + _document.attachEvent('onkeypress', self._keypressEventHandler()); + } + } // record navigation (URL) changes + // NOTE: in Chrome App environment, touching history.pushState, *even inside + // a try/catch block*, will cause Chrome to output an error to console.error + // borrowed from: https://github.com/angular/angular.js/pull/13945/files + + + var chrome = _window$1.chrome; + var isChromePackagedApp = chrome && chrome.app && chrome.app.runtime; + var hasPushAndReplaceState = !isChromePackagedApp && _window$1.history && history.pushState && history.replaceState; + + if (autoBreadcrumbs.location && hasPushAndReplaceState) { + // TODO: remove onpopstate handler on uninstall() + var oldOnPopState = _window$1.onpopstate; + + _window$1.onpopstate = function () { + var currentHref = self._location.href; + + self._captureUrlChange(self._lastHref, currentHref); + + if (oldOnPopState) { + return oldOnPopState.apply(this, arguments); + } + }; + + var historyReplacementFunction = function historyReplacementFunction(origHistFunction) { + // note history.pushState.length is 0; intentionally not declaring + // params to preserve 0 arity + return function () + /* state, title, url */ + { + var url = arguments.length > 2 ? arguments[2] : undefined; // url argument is optional + + if (url) { + // coerce to string (this is what pushState does) + self._captureUrlChange(self._lastHref, url + ''); + } + + return origHistFunction.apply(this, arguments); + }; + }; + + fill(history, 'pushState', historyReplacementFunction, wrappedBuiltIns); + fill(history, 'replaceState', historyReplacementFunction, wrappedBuiltIns); + } + + if (autoBreadcrumbs.console && 'console' in _window$1 && console.log) { + // console + var consoleMethodCallback = function consoleMethodCallback(msg, data) { + self.captureBreadcrumb({ + message: msg, + level: data.level, + category: 'console' + }); + }; + + each(['debug', 'info', 'warn', 'error', 'log'], function (_, level) { + wrapConsoleMethod(console, level, consoleMethodCallback); + }); + } + }, + _restoreBuiltIns: function _restoreBuiltIns() { + // restore any wrapped builtins + var builtin; + + while (this._wrappedBuiltIns.length) { + builtin = this._wrappedBuiltIns.shift(); + var obj = builtin[0], + name = builtin[1], + orig = builtin[2]; + obj[name] = orig; + } + }, + _restoreConsole: function _restoreConsole() { + // eslint-disable-next-line guard-for-in + for (var method in this._originalConsoleMethods) { + this._originalConsole[method] = this._originalConsoleMethods[method]; + } + }, + _drainPlugins: function _drainPlugins() { + var self = this; // FIX ME TODO + + each(this._plugins, function (_, plugin) { + var installer = plugin[0]; + var args = plugin[1]; + installer.apply(self, [self].concat(args)); + }); + }, + _parseDSN: function _parseDSN(str) { + var m = dsnPattern.exec(str), + dsn = {}, + i = 7; + + try { + while (i--) { + dsn[dsnKeys[i]] = m[i] || ''; + } + } catch (e) { + throw new configError('Invalid DSN: ' + str); + } + + if (dsn.pass && !this._globalOptions.allowSecretKey) { + throw new configError('Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key'); + } + + return dsn; + }, + _getGlobalServer: function _getGlobalServer(uri) { + // assemble the endpoint from the uri pieces + var globalServer = '//' + uri.host + (uri.port ? ':' + uri.port : ''); + + if (uri.protocol) { + globalServer = uri.protocol + ':' + globalServer; + } + + return globalServer; + }, + _handleOnErrorStackInfo: function _handleOnErrorStackInfo() { + // if we are intentionally ignoring errors via onerror, bail out + if (!this._ignoreOnError) { + this._handleStackInfo.apply(this, arguments); + } + }, + _handleStackInfo: function _handleStackInfo(stackInfo, options) { + var frames = this._prepareFrames(stackInfo, options); + + this._triggerEvent('handle', { + stackInfo: stackInfo, + options: options + }); + + this._processException(stackInfo.name, stackInfo.message, stackInfo.url, stackInfo.lineno, frames, options); + }, + _prepareFrames: function _prepareFrames(stackInfo, options) { + var self = this; + var frames = []; + + if (stackInfo.stack && stackInfo.stack.length) { + each(stackInfo.stack, function (i, stack) { + var frame = self._normalizeFrame(stack, stackInfo.url); + + if (frame) { + frames.push(frame); + } + }); // e.g. frames captured via captureMessage throw + + if (options && options.trimHeadFrames) { + for (var j = 0; j < options.trimHeadFrames && j < frames.length; j++) { + frames[j].in_app = false; + } + } + } + + frames = frames.slice(0, this._globalOptions.stackTraceLimit); + return frames; + }, + _normalizeFrame: function _normalizeFrame(frame, stackInfoUrl) { + // normalize the frames data + var normalized = { + filename: frame.url, + lineno: frame.line, + colno: frame.column, + function: frame.func || '?' + }; // Case when we don't have any information about the error + // E.g. throwing a string or raw object, instead of an `Error` in Firefox + // Generating synthetic error doesn't add any value here + // + // We should probably somehow let a user know that they should fix their code + + if (!frame.url) { + normalized.filename = stackInfoUrl; // fallback to whole stacks url from onerror handler + } + + normalized.in_app = !( // determine if an exception came from outside of our app + // first we check the global includePaths list. + !!this._globalOptions.includePaths.test && !this._globalOptions.includePaths.test(normalized.filename) || // Now we check for fun, if the function name is Raven or TraceKit + /(Raven|TraceKit)\./.test(normalized['function']) || // finally, we do a last ditch effort and check for raven.min.js + /raven\.(min\.)?js$/.test(normalized.filename)); + return normalized; + }, + _processException: function _processException(type, message, fileurl, lineno, frames, options) { + var prefixedMessage = (type ? type + ': ' : '') + (message || ''); + + if (!!this._globalOptions.ignoreErrors.test && (this._globalOptions.ignoreErrors.test(message) || this._globalOptions.ignoreErrors.test(prefixedMessage))) { + return; + } + + var stacktrace; + + if (frames && frames.length) { + fileurl = frames[0].filename || fileurl; // Sentry expects frames oldest to newest + // and JS sends them as newest to oldest + + frames.reverse(); + stacktrace = { + frames: frames + }; + } else if (fileurl) { + stacktrace = { + frames: [{ + filename: fileurl, + lineno: lineno, + in_app: true + }] + }; + } + + if (!!this._globalOptions.ignoreUrls.test && this._globalOptions.ignoreUrls.test(fileurl)) { + return; + } + + if (!!this._globalOptions.whitelistUrls.test && !this._globalOptions.whitelistUrls.test(fileurl)) { + return; + } + + var data = objectMerge({ + // sentry.interfaces.Exception + exception: { + values: [{ + type: type, + value: message, + stacktrace: stacktrace + }] + }, + culprit: fileurl + }, options); // Fire away! + + this._send(data); + }, + _trimPacket: function _trimPacket(data) { + // For now, we only want to truncate the two different messages + // but this could/should be expanded to just trim everything + var max = this._globalOptions.maxMessageLength; + + if (data.message) { + data.message = truncate(data.message, max); + } + + if (data.exception) { + var exception = data.exception.values[0]; + exception.value = truncate(exception.value, max); + } + + var request = data.request; + + if (request) { + if (request.url) { + request.url = truncate(request.url, this._globalOptions.maxUrlLength); + } + + if (request.Referer) { + request.Referer = truncate(request.Referer, this._globalOptions.maxUrlLength); + } + } + + if (data.breadcrumbs && data.breadcrumbs.values) this._trimBreadcrumbs(data.breadcrumbs); + return data; + }, + + /** + * Truncate breadcrumb values (right now just URLs) + */ + _trimBreadcrumbs: function _trimBreadcrumbs(breadcrumbs) { + // known breadcrumb properties with urls + // TODO: also consider arbitrary prop values that start with (https?)?:// + var urlProps = ['to', 'from', 'url'], + urlProp, + crumb, + data; + + for (var i = 0; i < breadcrumbs.values.length; ++i) { + crumb = breadcrumbs.values[i]; + if (!crumb.hasOwnProperty('data') || !isObject(crumb.data) || objectFrozen(crumb.data)) continue; + data = objectMerge({}, crumb.data); + + for (var j = 0; j < urlProps.length; ++j) { + urlProp = urlProps[j]; + + if (data.hasOwnProperty(urlProp) && data[urlProp]) { + data[urlProp] = truncate(data[urlProp], this._globalOptions.maxUrlLength); + } + } + + breadcrumbs.values[i].data = data; + } + }, + _getHttpData: function _getHttpData() { + if (!this._hasNavigator && !this._hasDocument) return; + var httpData = {}; + + if (this._hasNavigator && _navigator.userAgent) { + httpData.headers = { + 'User-Agent': navigator.userAgent + }; + } // Check in `window` instead of `document`, as we may be in ServiceWorker environment + + + if (_window$1.location && _window$1.location.href) { + httpData.url = _window$1.location.href; + } + + if (this._hasDocument && _document.referrer) { + if (!httpData.headers) httpData.headers = {}; + httpData.headers.Referer = _document.referrer; + } + + return httpData; + }, + _resetBackoff: function _resetBackoff() { + this._backoffDuration = 0; + this._backoffStart = null; + }, + _shouldBackoff: function _shouldBackoff() { + return this._backoffDuration && now() - this._backoffStart < this._backoffDuration; + }, + + /** + * Returns true if the in-process data payload matches the signature + * of the previously-sent data + * + * NOTE: This has to be done at this level because TraceKit can generate + * data from window.onerror WITHOUT an exception object (IE8, IE9, + * other old browsers). This can take the form of an "exception" + * data object with a single frame (derived from the onerror args). + */ + _isRepeatData: function _isRepeatData(current) { + var last = this._lastData; + if (!last || current.message !== last.message || // defined for captureMessage + current.culprit !== last.culprit // defined for captureException/onerror + ) return false; // Stacktrace interface (i.e. from captureMessage) + + if (current.stacktrace || last.stacktrace) { + return isSameStacktrace(current.stacktrace, last.stacktrace); + } else if (current.exception || last.exception) { + // Exception interface (i.e. from captureException/onerror) + return isSameException(current.exception, last.exception); + } + + return true; + }, + _setBackoffState: function _setBackoffState(request) { + // If we are already in a backoff state, don't change anything + if (this._shouldBackoff()) { + return; + } + + var status = request.status; // 400 - project_id doesn't exist or some other fatal + // 401 - invalid/revoked dsn + // 429 - too many requests + + if (!(status === 400 || status === 401 || status === 429)) return; + var retry; + + try { + // If Retry-After is not in Access-Control-Expose-Headers, most + // browsers will throw an exception trying to access it + if (supportsFetch()) { + retry = request.headers.get('Retry-After'); + } else { + retry = request.getResponseHeader('Retry-After'); + } // Retry-After is returned in seconds + + + retry = parseInt(retry, 10) * 1000; + } catch (e) { + /* eslint no-empty:0 */ + } + + this._backoffDuration = retry ? // If Sentry server returned a Retry-After value, use it + retry : // Otherwise, double the last backoff duration (starts at 1 sec) + this._backoffDuration * 2 || 1000; + this._backoffStart = now(); + }, + _send: function _send(data) { + var globalOptions = this._globalOptions; + + var baseData = { + project: this._globalProject, + logger: globalOptions.logger, + platform: 'javascript' + }, + httpData = this._getHttpData(); + + if (httpData) { + baseData.request = httpData; + } // HACK: delete `trimHeadFrames` to prevent from appearing in outbound payload + + + if (data.trimHeadFrames) delete data.trimHeadFrames; + data = objectMerge(baseData, data); // Merge in the tags and extra separately since objectMerge doesn't handle a deep merge + + data.tags = objectMerge(objectMerge({}, this._globalContext.tags), data.tags); + data.extra = objectMerge(objectMerge({}, this._globalContext.extra), data.extra); // Send along our own collected metadata with extra + + data.extra['session:duration'] = now() - this._startTime; + + if (this._breadcrumbs && this._breadcrumbs.length > 0) { + // intentionally make shallow copy so that additions + // to breadcrumbs aren't accidentally sent in this request + data.breadcrumbs = { + values: [].slice.call(this._breadcrumbs, 0) + }; + } + + if (this._globalContext.user) { + // sentry.interfaces.User + data.user = this._globalContext.user; + } // Include the environment if it's defined in globalOptions + + + if (globalOptions.environment) data.environment = globalOptions.environment; // Include the release if it's defined in globalOptions + + if (globalOptions.release) data.release = globalOptions.release; // Include server_name if it's defined in globalOptions + + if (globalOptions.serverName) data.server_name = globalOptions.serverName; // Cleanup empty properties before sending them to the server + + Object.keys(data).forEach(function (key) { + if (data[key] == null || data[key] === '' || isEmptyObject(data[key])) { + delete data[key]; + } + }); + + if (isFunction(globalOptions.dataCallback)) { + data = globalOptions.dataCallback(data) || data; + } // Why?????????? + + + if (!data || isEmptyObject(data)) { + return; + } // Check if the request should be filtered or not + + + if (isFunction(globalOptions.shouldSendCallback) && !globalOptions.shouldSendCallback(data)) { + return; + } // Backoff state: Sentry server previously responded w/ an error (e.g. 429 - too many requests), + // so drop requests until "cool-off" period has elapsed. + + + if (this._shouldBackoff()) { + this._logDebug('warn', 'Raven dropped error due to backoff: ', data); + + return; + } + + if (typeof globalOptions.sampleRate === 'number') { + if (Math.random() < globalOptions.sampleRate) { + this._sendProcessedPayload(data); + } + } else { + this._sendProcessedPayload(data); + } + }, + _getUuid: function _getUuid() { + return uuid4(); + }, + _sendProcessedPayload: function _sendProcessedPayload(data, callback) { + var self = this; + var globalOptions = this._globalOptions; + if (!this.isSetup()) return; // Try and clean up the packet before sending by truncating long values + + data = this._trimPacket(data); // ideally duplicate error testing should occur *before* dataCallback/shouldSendCallback, + // but this would require copying an un-truncated copy of the data packet, which can be + // arbitrarily deep (extra_data) -- could be worthwhile? will revisit + + if (!this._globalOptions.allowDuplicates && this._isRepeatData(data)) { + this._logDebug('warn', 'Raven dropped repeat event: ', data); + + return; + } // Send along an event_id if not explicitly passed. + // This event_id can be used to reference the error within Sentry itself. + // Set lastEventId after we know the error should actually be sent + + + this._lastEventId = data.event_id || (data.event_id = this._getUuid()); // Store outbound payload after trim + + this._lastData = data; + + this._logDebug('debug', 'Raven about to send:', data); + + var auth = { + sentry_version: '7', + sentry_client: 'raven-js/' + this.VERSION, + sentry_key: this._globalKey + }; + + if (this._globalSecret) { + auth.sentry_secret = this._globalSecret; + } + + var exception = data.exception && data.exception.values[0]; // only capture 'sentry' breadcrumb is autoBreadcrumbs is truthy + + if (this._globalOptions.autoBreadcrumbs && this._globalOptions.autoBreadcrumbs.sentry) { + this.captureBreadcrumb({ + category: 'sentry', + message: exception ? (exception.type ? exception.type + ': ' : '') + exception.value : data.message, + event_id: data.event_id, + level: data.level || 'error' // presume error unless specified + + }); + } + + var url = this._globalEndpoint; + + (globalOptions.transport || this._makeRequest).call(this, { + url: url, + auth: auth, + data: data, + options: globalOptions, + onSuccess: function success() { + self._resetBackoff(); + + self._triggerEvent('success', { + data: data, + src: url + }); + + callback && callback(); + }, + onError: function failure(error) { + self._logDebug('error', 'Raven transport failed to send: ', error); + + if (error.request) { + self._setBackoffState(error.request); + } + + self._triggerEvent('failure', { + data: data, + src: url + }); + + error = error || new Error('Raven send failed (no additional details provided)'); + callback && callback(error); + } + }); + }, + _makeRequest: function _makeRequest(opts) { + // Auth is intentionally sent as part of query string (NOT as custom HTTP header) to avoid preflight CORS requests + var url = opts.url + '?' + urlencode(opts.auth); + var evaluatedHeaders = null; + var evaluatedFetchParameters = {}; + + if (opts.options.headers) { + evaluatedHeaders = this._evaluateHash(opts.options.headers); + } + + if (opts.options.fetchParameters) { + evaluatedFetchParameters = this._evaluateHash(opts.options.fetchParameters); + } + + if (supportsFetch()) { + evaluatedFetchParameters.body = stringify_1(opts.data); + var defaultFetchOptions = objectMerge({}, this._fetchDefaults); + var fetchOptions = objectMerge(defaultFetchOptions, evaluatedFetchParameters); + + if (evaluatedHeaders) { + fetchOptions.headers = evaluatedHeaders; + } + + return _window$1.fetch(url, fetchOptions).then(function (response) { + if (response.ok) { + opts.onSuccess && opts.onSuccess(); + } else { + var error = new Error('Sentry error code: ' + response.status); // It's called request only to keep compatibility with XHR interface + // and not add more redundant checks in setBackoffState method + + error.request = response; + opts.onError && opts.onError(error); + } + })['catch'](function () { + opts.onError && opts.onError(new Error('Sentry error code: network unavailable')); + }); + } + + var request = _window$1.XMLHttpRequest && new _window$1.XMLHttpRequest(); + if (!request) return; // if browser doesn't support CORS (e.g. IE7), we are out of luck + + var hasCORS = 'withCredentials' in request || typeof XDomainRequest !== 'undefined'; + if (!hasCORS) return; + + if ('withCredentials' in request) { + request.onreadystatechange = function () { + if (request.readyState !== 4) { + return; + } else if (request.status === 200) { + opts.onSuccess && opts.onSuccess(); + } else if (opts.onError) { + var err = new Error('Sentry error code: ' + request.status); + err.request = request; + opts.onError(err); + } + }; + } else { + request = new XDomainRequest(); // xdomainrequest cannot go http -> https (or vice versa), + // so always use protocol relative + + url = url.replace(/^https?:/, ''); // onreadystatechange not supported by XDomainRequest + + if (opts.onSuccess) { + request.onload = opts.onSuccess; + } + + if (opts.onError) { + request.onerror = function () { + var err = new Error('Sentry error code: XDomainRequest'); + err.request = request; + opts.onError(err); + }; + } + } + + request.open('POST', url); + + if (evaluatedHeaders) { + each(evaluatedHeaders, function (key, value) { + request.setRequestHeader(key, value); + }); + } + + request.send(stringify_1(opts.data)); + }, + _evaluateHash: function _evaluateHash(hash) { + var evaluated = {}; + + for (var key in hash) { + if (hash.hasOwnProperty(key)) { + var value = hash[key]; + evaluated[key] = typeof value === 'function' ? value() : value; + } + } + + return evaluated; + }, + _logDebug: function _logDebug(level) { + if (this._originalConsoleMethods[level] && this.debug) { + // In IE<10 console methods do not have their own 'apply' method + Function.prototype.apply.call(this._originalConsoleMethods[level], this._originalConsole, [].slice.call(arguments, 1)); + } + }, + _mergeContext: function _mergeContext(key, context) { + if (isUndefined(context)) { + delete this._globalContext[key]; + } else { + this._globalContext[key] = objectMerge(this._globalContext[key] || {}, context); + } + } +}; // Deprecations + +Raven$1.prototype.setUser = Raven$1.prototype.setUserContext; +Raven$1.prototype.setReleaseContext = Raven$1.prototype.setRelease; +var raven = Raven$1; + +/** + * Enforces a single instance of the Raven client, and the + * main entry point for Raven. If you are a consumer of the + * Raven library, you SHOULD load this file (vs raven.js). + **/ +// This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) + +var _window = typeof window !== 'undefined' ? window : typeof commonjsGlobal !== 'undefined' ? commonjsGlobal : typeof self !== 'undefined' ? self : {}; + +var _Raven = _window.Raven; +var Raven = new raven(); +/* + * Allow multiple versions of Raven to be installed. + * Strip Raven from the global context and returns the instance. + * + * @return {Raven} + */ + +Raven.noConflict = function () { + _window.Raven = _Raven; + return Raven; +}; + +Raven.afterLoad(); +var singleton = Raven; + +/** + * Angular.js plugin + * + * Provides an $exceptionHandler for Angular.js + */ + +var wrappedCallback$1 = utils.wrappedCallback; // See https://github.com/angular/angular.js/blob/v1.4.7/src/minErr.js + +var angularPattern = /^\[((?:[$a-zA-Z0-9]+:)?(?:[$a-zA-Z0-9]+))\] (.*?)\n?(\S+)$/; +var moduleName = 'ngRaven'; + +function angularPlugin(Raven, angular) { + angular = angular || window.angular; + if (!angular) return; + + function RavenProvider() { + this.$get = ['$window', function ($window) { + return Raven; + }]; + } + + function ExceptionHandlerProvider($provide) { + $provide.decorator('$exceptionHandler', ['Raven', '$delegate', exceptionHandler]); + } + + function exceptionHandler(R, $delegate) { + return function (ex, cause) { + R.captureException(ex, { + extra: { + cause: cause + } + }); + $delegate(ex, cause); + }; + } + + angular.module(moduleName, []).provider('Raven', RavenProvider).config(['$provide', ExceptionHandlerProvider]); + Raven.setDataCallback(wrappedCallback$1(function (data) { + return angularPlugin._normalizeData(data); + })); +} + +angularPlugin._normalizeData = function (data) { + // We only care about mutating an exception + var exception = data.exception; + + if (exception) { + exception = exception.values[0]; + var matches = angularPattern.exec(exception.value); + + if (matches) { + // This type now becomes something like: $rootScope:inprog + exception.type = matches[1]; + exception.value = matches[2]; + data.message = exception.type + ': ' + exception.value; // auto set a new tag specifically for the angular error url + + data.extra.angularDocs = matches[3].substr(0, 250); + } + } + + return data; +}; + +angularPlugin.moduleName = moduleName; +var angular = angularPlugin; + +/*global define*/ + +/** + * require.js plugin + * + * Automatically wrap define/require callbacks. (Experimental) + */ + +function requirePlugin(Raven) { + if (typeof undefined === 'function' && undefined.amd) { + window.define = Raven.wrap({ + deep: false + }, undefined); + window.require = Raven.wrap({ + deep: false + }, commonjsRequire); + } +} + +var require_1 = requirePlugin; + +/* This file was generated by './scripts/generate-plugin-combinations.js'! */ + +singleton.addPlugin(angular).addPlugin(require_1); +var angular_require = {}; + +return angular_require; + +}))); diff --git a/dist/angular,require/raven.min.js b/dist/angular,require/raven.min.js new file mode 100644 index 000000000000..371cd3627ddf --- /dev/null +++ b/dist/angular,require/raven.min.js @@ -0,0 +1,3 @@ +/*! Raven.js 3.22.2 (1b6187b) | github.com/getsentry/raven-js */ +!function(a,b){"object"==typeof exports&&"undefined"!=typeof module?module.exports=b():"function"==typeof define&&define.amd?define(b):a.Raven=b()}(this,function(){"use strict";function a(a,b){return b={exports:{}},a(b,b.exports),b.exports}function b(a){return(b="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(a){return typeof a}:function(a){return a&&"function"==typeof Symbol&&a.constructor===Symbol&&a!==Symbol.prototype?"symbol":typeof a})(a)}function c(a){return"object"===b(a)&&null!==a}function d(a){switch({}.toString.call(a)){case"[object Error]":return!0;case"[object Exception]":return!0;case"[object DOMException]":return!0;default:return a instanceof Error}}function e(a){return l()&&"[object ErrorEvent]"==={}.toString.call(a)}function f(a){return void 0===a}function g(a){return"function"==typeof a}function h(a){return"[object Object]"===Object.prototype.toString.call(a)}function i(a){return"[object String]"===Object.prototype.toString.call(a)}function j(a){return"[object Array]"===Object.prototype.toString.call(a)}function k(a){if(!h(a))return!1;for(var b in a)if(a.hasOwnProperty(b))return!1;return!0}function l(){try{return new ErrorEvent(""),!0}catch(a){return!1}}function m(){if(!("fetch"in O))return!1;try{return new Headers,new Request(""),new Response,!0}catch(a){return!1}}function n(a){function b(b,c){var d=a(b)||b;return c?c(d)||d:d}return b}function o(a,b){var c,d;if(f(a.length))for(c in a)s(a,c)&&b.call(null,c,a[c]);else if(d=a.length)for(c=0;c ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function y(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&i(b))for(c=b.split(/\s+/),f=0;f=0;--b)l[b]===a&&l.splice(b,1)}function c(){g(),l=[]}function d(a,b){var c=null;if(!b||Q.collectWindowErrors){for(var d in l)if(l.hasOwnProperty(d))try{l[d].apply(null,[a].concat(S.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function e(a,b,c,e,f){var g=null,i=P.isErrorEvent(f)?f.error:f,k=P.isErrorEvent(a)?a.message:a;if(o)Q.computeStackTrace.augmentStackTraceWithInitialElement(o,b,c,k),h();else if(i&&P.isError(i))g=Q.computeStackTrace(i),d(g,!0);else{var l,m={url:b,line:c,column:e},n=void 0;if("[object String]"==={}.toString.call(k)){var l=k.match(U);l&&(n=l[1],k=l[2])}m.func=T,g={name:n,message:k,url:F(),stack:[m]},d(g,!0)}return!!j&&j.apply(this,arguments)}function f(){k||(j=R.onerror,R.onerror=e,k=!0)}function g(){k&&(R.onerror=j,k=!1,j=void 0)}function h(){var a=o,b=m;m=null,o=null,n=null,d.apply(null,[a,!1].concat(b))}function i(a,b){var c=S.call(arguments,1);if(o){if(n===a)return;h()}var d=Q.computeStackTrace(a);if(o=d,n=a,m=c,setTimeout(function(){n===a&&h()},d.incomplete?2e3:0),b!==!1)throw a}var j,k,l=[],m=null,n=null,o=null;return i.subscribe=a,i.unsubscribe=b,i.uninstall=c,i}(),Q.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,d,e=/^\s*at (.*?) ?\(((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,f=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|\[native).*?|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,g=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,h=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,i=/\((\S*)(?::(\d+))(?::(\d+))\)/,j=a.stack.split("\n"),k=[],l=(/^(.*) is undefined$/.exec(a.message),0),m=j.length;l eval")>-1;o&&(b=h.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==l||c[5]||"undefined"==typeof a.columnNumber||(k[0].column=a.columnNumber+1),d={url:c[3],func:c[1]||T,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}!d.func&&d.line&&(d.func=T),k.push(d)}return k.length?{name:a.name,message:a.message,url:F(),stack:k}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=T),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,e){for(var f,g,h=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,i=[],j={},k=!1,l=c.caller;l&&!k;l=l.caller)if(l!==d&&l!==Q.report){if(g={url:null,func:T,line:null,column:null},l.name?g.func=l.name:(f=h.exec(l.toString()))&&(g.func=f[1]),"undefined"==typeof g.func)try{g.func=f.input.substring(0,f.input.indexOf("{"))}catch(m){}j[""+l]?k=!0:j[""+l]=!0,i.push(g)}e&&i.splice(0,e);var n={name:a.name,message:a.message,url:F(),stack:i};return b(n,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),n}function d(b,d){var e=null;d=null==d?0:+d;try{if(e=a(b))return e}catch(f){if(Q.debug)throw f}try{if(e=c(b,d+1))return e}catch(f){if(Q.debug)throw f}return{name:b.name,message:b.message,url:F()}}return d.augmentStackTraceWithInitialElement=b,d.computeStackTraceFromStackProp=a,d}();var V=Q,W=a(function(a,b){function c(a,b){for(var c=0;c0){var i=c(d,this);~i?d.splice(i+1):d.push(this),~i?f.splice(i,1/0,g):f.push(g),~c(d,h)&&(h=b.call(this,g,h))}else d.push(h);return null==a?h instanceof Error?e(h):h:a.call(this,g,h)}}b=a.exports=d,b.getSerialize=f});G.prototype=new Error,G.prototype.constructor=G;var X=G,Y=function(a,b,c){var d=a[b],e=a;if(b in a){var f="warn"===b?"warning":b;a[b]=function(){var a=[].slice.call(arguments),g=P.safeJoin(a," "),h={level:f,logger:"console",extra:{arguments:a}};"assert"===b?a[0]===!1&&(g="Assertion failed: "+(P.safeJoin(a.slice(1)," ")||"console.assert"),h.extra.arguments=a.slice(1),c&&c(g,h)):c&&c(g,h),d&&Function.prototype.apply.call(d,e,a)}}},Z={wrapMethod:Y},$=P.isError,_=P.isObject,aa=P.isErrorEvent,ba=P.isUndefined,ca=P.isFunction,da=P.isString,ea=P.isArray,fa=P.isEmptyObject,ga=P.each,ha=P.objectMerge,ia=P.truncate,ja=P.objectFrozen,ka=P.hasKey,la=P.joinRegExp,ma=P.urlencode,na=P.uuid4,oa=P.htmlTreeAsString,pa=P.isSameException,qa=P.isSameStacktrace,ra=P.parseUrl,sa=P.fill,ta=P.supportsFetch,ua=Z.wrapMethod,va="source protocol user pass host port path".split(" "),wa=/^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/,xa="undefined"!=typeof window?window:"undefined"!=typeof M?M:"undefined"!=typeof self?self:{},ya=xa.document,za=xa.navigator;J.prototype={VERSION:"3.22.2",debug:!1,TraceKit:V,config:function(a,b){var c=this;if(c.i)return this.D("error","Error: Raven has already been configured"),c;if(!a)return c;var d=c.m;b&&ga(b,function(a,b){"tags"===a||"extra"===a||"user"===a?c.l[a]=b:d[a]=b}),c.setDSN(a),d.ignoreErrors.push(/^Script error\.?$/),d.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/),d.ignoreErrors=la(d.ignoreErrors),d.ignoreUrls=!!d.ignoreUrls.length&&la(d.ignoreUrls),d.whitelistUrls=!!d.whitelistUrls.length&&la(d.whitelistUrls),d.includePaths=la(d.includePaths),d.maxBreadcrumbs=Math.max(0,Math.min(d.maxBreadcrumbs||100,100));var e={xhr:!0,console:!0,dom:!0,location:!0,sentry:!0},f=d.autoBreadcrumbs;"[object Object]"==={}.toString.call(f)?f=ha(e,f):f!==!1&&(f=e),d.autoBreadcrumbs=f;var g={tryCatch:!0},h=d.instrument;return"[object Object]"==={}.toString.call(h)?h=ha(g,h):h!==!1&&(h=g),d.instrument=h,V.collectWindowErrors=!!d.collectWindowErrors,c},install:function(){var a=this;return a.isSetup()&&!a.p&&(V.report.subscribe(function(){a.E.apply(a,arguments)}),a.F(),a.m.instrument&&a.m.instrument.tryCatch&&a.G(),a.m.autoBreadcrumbs&&a.H(),a.I(),a.p=!0),Error.stackTraceLimit=a.m.stackTraceLimit,this},setDSN:function(a){var b=this,c=b.J(a),d=c.path.lastIndexOf("/"),e=c.path.substr(1,d);b.K=a,b.j=c.user,b.L=c.pass&&c.pass.substr(1),b.k=c.path.substr(d+1),b.i=b.M(c),b.N=b.i+"/"+e+"api/"+b.k+"/store/",this.A()},context:function(a,b,c){return ca(a)&&(c=b||[],b=a,a=void 0),this.wrap(a,b).apply(this,c)},wrap:function(a,b,c){function d(){var d=[],f=arguments.length,g=!a||a&&a.deep!==!1;for(c&&ca(c)&&c.apply(this,arguments);f--;)d[f]=g?e.wrap(a,arguments[f]):arguments[f];try{return b.apply(this,d)}catch(h){throw e.O(),e.captureException(h,a),h}}var e=this;if(ba(b)&&!ca(a))return a;if(ca(a)&&(b=a,a=void 0),!ca(b))return b;try{if(b.a)return b;if(b.P)return b.P}catch(f){return b}for(var g in b)ka(b,g)&&(d[g]=b[g]);return d.prototype=b.prototype,b.P=d,d.a=!0,d.b=b,d},uninstall:function(){return V.report.uninstall(),this.Q(),this.R(),this.S(),Error.stackTraceLimit=this.q,this.p=!1,this},captureException:function(a,b){b=ha({trimHeadFrames:0},b?b:{});var c=!$(a),d=!aa(a),e=aa(a)&&!a.error;if(c&&d||e)return this.captureMessage(a,ha(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}));aa(a)&&(a=a.error),this.f=a;try{var f=V.computeStackTrace(a);this.T(f,b)}catch(g){if(a!==g)throw g}return this},captureMessage:function(a,b){if(!this.m.ignoreErrors.test||!this.m.ignoreErrors.test(a)){b=b||{};var c,d=ha({message:a+""},b);try{throw new Error(a)}catch(e){c=e}c.name=null;var f=V.computeStackTrace(c),g=ea(f.stack)&&f.stack[1],h=g&&g.url||"";if((!this.m.ignoreUrls.test||!this.m.ignoreUrls.test(h))&&(!this.m.whitelistUrls.test||this.m.whitelistUrls.test(h))){if(this.m.stacktrace||b&&b.stacktrace){b=ha({fingerprint:a,trimHeadFrames:(b.trimHeadFrames||0)+1},b);var i=this.U(f,b);d.stacktrace={frames:i.reverse()}}return this.V(d),this}}},captureBreadcrumb:function(a){var b=ha({timestamp:H()/1e3},a);if(ca(this.m.breadcrumbCallback)){var c=this.m.breadcrumbCallback(b);if(_(c)&&!fa(c))b=c;else if(c===!1)return this}return this.w.push(b),this.w.length>this.m.maxBreadcrumbs&&this.w.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.t.push([a,b]),this.p&&this.I(),this},setUserContext:function(a){return this.l.user=a,this},setExtraContext:function(a){return this.W("extra",a),this},setTagsContext:function(a){return this.W("tags",a),this},clearContext:function(){return this.l={},this},getContext:function(){return JSON.parse(W(this.l))},setEnvironment:function(a){return this.m.environment=a,this},setRelease:function(a){return this.m.release=a,this},setDataCallback:function(a){var b=this.m.dataCallback;return this.m.dataCallback=I(b,a),this},setBreadcrumbCallback:function(a){var b=this.m.breadcrumbCallback;return this.m.breadcrumbCallback=I(b,a),this},setShouldSendCallback:function(a){var b=this.m.shouldSendCallback;return this.m.shouldSendCallback=I(b,a),this},setTransport:function(a){return this.m.transport=a,this},lastException:function(){return this.f},lastEventId:function(){return this.h},isSetup:function(){return!!this.c&&(!!this.i||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.D("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=xa.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(ya){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new X("Missing eventId");var c=a.dsn||this.K;if(!c)throw new X("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.l.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.M(this.J(c)),h=ya.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(ya.head||ya.body).appendChild(h)}},O:function(){var a=this;this.o+=1,setTimeout(function(){a.o-=1})},X:function(a,b){var c,d;if(this.d){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),ya.createEvent?(c=ya.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=ya.createEventObject(),c.eventType=a);for(d in b)ka(b,d)&&(c[d]=b[d]);if(ya.createEvent)ya.dispatchEvent(c);else try{ya.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},Y:function(a){var b=this;return function(c){if(b.Z=null,b.x!==c){b.x=c;var d;try{d=oa(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},$:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.Z;g||a.Y("input")(c),clearTimeout(g),a.Z=setTimeout(function(){a.Z=null},b)}}},_:function(a,b){var c=ra(this.y.href),d=ra(b),e=ra(a);this.z=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},F:function(){var a=this;a.aa=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.a?a.aa.apply(this.b,arguments):a.aa.apply(this,arguments)}},Q:function(){this.aa&&(Function.prototype.toString=this.aa)},G:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b._(b.z,c+""),a.apply(this,arguments)}};sa(history,"pushState",j,d),sa(history,"replaceState",j,d)}if(c.console&&"console"in xa&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};ga(["debug","info","warn","error","log"],function(a,b){ua(console,b,k)})}},R:function(){for(var a;this.v.length;){a=this.v.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},S:function(){for(var a in this.s)this.r[a]=this.s[a]},I:function(){var a=this;ga(this.t,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},J:function(a){var b=wa.exec(a),c={},d=7;try{for(;d--;)c[va[d]]=b[d]||""}catch(e){throw new X("Invalid DSN: "+a)}if(c.pass&&!this.m.allowSecretKey)throw new X("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},M:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},E:function(){this.o||this.T.apply(this,arguments)},T:function(a,b){var c=this.U(a,b);this.X("handle",{stackInfo:a,options:b}),this.ca(a.name,a.message,a.url,a.lineno,c,b)},U:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(ga(a.stack,function(b,e){var f=c.da(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.w,0)}),this.l.user&&(a.user=this.l.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||fa(a[b]))&&delete a[b]}),ca(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!fa(a)&&(!ca(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.ja()?void this.D("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() href parsing trick because React Native and other +// environments where DOM might not be available + + +function parseUrl$1(url) { + if (typeof url !== 'string') return {}; + var match = url.match(/^(([^:\/?#]+):)?(\/\/([^\/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?$/); // coerce to undefined values to empty string so we don't get 'undefined' + + var query = match[6] || ''; + var fragment = match[8] || ''; + return { + protocol: match[2], + host: match[4], + path: match[5], + relative: match[5] + query + fragment // everything minus origin + + }; +} + +function uuid4$1() { + var crypto = _window$3.crypto || _window$3.msCrypto; + + if (!isUndefined$1(crypto) && crypto.getRandomValues) { + // Use window.crypto API if available + // eslint-disable-next-line no-undef + var arr = new Uint16Array(8); + crypto.getRandomValues(arr); // set 4 in byte 7 + + arr[3] = arr[3] & 0xfff | 0x4000; // set 2 most significant bits of byte 9 to '10' + + arr[4] = arr[4] & 0x3fff | 0x8000; + + var pad = function pad(num) { + var v = num.toString(16); + + while (v.length < 4) { + v = '0' + v; + } + + return v; + }; + + return pad(arr[0]) + pad(arr[1]) + pad(arr[2]) + pad(arr[3]) + pad(arr[4]) + pad(arr[5]) + pad(arr[6]) + pad(arr[7]); + } else { + // http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/2117523#2117523 + return 'xxxxxxxxxxxx4xxxyxxxxxxxxxxxxxxx'.replace(/[xy]/g, function (c) { + var r = Math.random() * 16 | 0, + v = c === 'x' ? r : r & 0x3 | 0x8; + return v.toString(16); + }); + } +} +/** + * Given a child DOM element, returns a query-selector statement describing that + * and its ancestors + * e.g. [HTMLElement] => body > div > input#foo.btn[name=baz] + * @param elem + * @returns {string} + */ + + +function htmlTreeAsString$1(elem) { + /* eslint no-extra-parens:0*/ + var MAX_TRAVERSE_HEIGHT = 5, + MAX_OUTPUT_LEN = 80, + out = [], + height = 0, + len = 0, + separator = ' > ', + sepLength = separator.length, + nextStr; + + while (elem && height++ < MAX_TRAVERSE_HEIGHT) { + nextStr = htmlElementAsString(elem); // bail out if + // - nextStr is the 'html' element + // - the length of the string that would be created exceeds MAX_OUTPUT_LEN + // (ignore this limit if we are on the first iteration) + + if (nextStr === 'html' || height > 1 && len + out.length * sepLength + nextStr.length >= MAX_OUTPUT_LEN) { + break; + } + + out.push(nextStr); + len += nextStr.length; + elem = elem.parentNode; + } + + return out.reverse().join(separator); +} +/** + * Returns a simple, query-selector representation of a DOM element + * e.g. [HTMLElement] => input#foo.btn[name=baz] + * @param HTMLElement + * @returns {string} + */ + + +function htmlElementAsString(elem) { + var out = [], + className, + classes, + key, + attr, + i; + + if (!elem || !elem.tagName) { + return ''; + } + + out.push(elem.tagName.toLowerCase()); + + if (elem.id) { + out.push('#' + elem.id); + } + + className = elem.className; + + if (className && isString$1(className)) { + classes = className.split(/\s+/); + + for (i = 0; i < classes.length; i++) { + out.push('.' + classes[i]); + } + } + + var attrWhitelist = ['type', 'name', 'title', 'alt']; + + for (i = 0; i < attrWhitelist.length; i++) { + key = attrWhitelist[i]; + attr = elem.getAttribute(key); + + if (attr) { + out.push('[' + key + '="' + attr + '"]'); + } + } + + return out.join(''); +} +/** + * Returns true if either a OR b is truthy, but not both + */ + + +function isOnlyOneTruthy(a, b) { + return !!(!!a ^ !!b); +} +/** + * Returns true if both parameters are undefined + */ + + +function isBothUndefined(a, b) { + return isUndefined$1(a) && isUndefined$1(b); +} +/** + * Returns true if the two input exception interfaces have the same content + */ + + +function isSameException$1(ex1, ex2) { + if (isOnlyOneTruthy(ex1, ex2)) return false; + ex1 = ex1.values[0]; + ex2 = ex2.values[0]; + if (ex1.type !== ex2.type || ex1.value !== ex2.value) return false; // in case both stacktraces are undefined, we can't decide so default to false + + if (isBothUndefined(ex1.stacktrace, ex2.stacktrace)) return false; + return isSameStacktrace$1(ex1.stacktrace, ex2.stacktrace); +} +/** + * Returns true if the two input stack trace interfaces have the same content + */ + + +function isSameStacktrace$1(stack1, stack2) { + if (isOnlyOneTruthy(stack1, stack2)) return false; + var frames1 = stack1.frames; + var frames2 = stack2.frames; // Exit early if frame count differs + + if (frames1.length !== frames2.length) return false; // Iterate through every frame; bail out if anything differs + + var a, b; + + for (var i = 0; i < frames1.length; i++) { + a = frames1[i]; + b = frames2[i]; + if (a.filename !== b.filename || a.lineno !== b.lineno || a.colno !== b.colno || a['function'] !== b['function']) return false; + } + + return true; +} +/** + * Polyfill a method + * @param obj object e.g. `document` + * @param name method name present on object e.g. `addEventListener` + * @param replacement replacement function + * @param track {optional} record instrumentation to an array + */ + + +function fill$1(obj, name, replacement, track) { + var orig = obj[name]; + obj[name] = replacement(orig); + obj[name].__raven__ = true; + obj[name].__orig__ = orig; + + if (track) { + track.push([obj, name, orig]); + } +} +/** + * Join values in array + * @param input array of values to be joined together + * @param delimiter string to be placed in-between values + * @returns {string} + */ + + +function safeJoin(input, delimiter) { + if (!isArray$1(input)) return ''; + var output = []; + + for (var i = 0; i < input.length; i++) { + try { + output.push(String(input[i])); + } catch (e) { + output.push('[value cannot be serialized]'); + } + } + + return output.join(delimiter); +} + +var utils = { + isObject: isObject$1, + isError: isError$1, + isErrorEvent: isErrorEvent$1, + isUndefined: isUndefined$1, + isFunction: isFunction$1, + isPlainObject: isPlainObject, + isString: isString$1, + isArray: isArray$1, + isEmptyObject: isEmptyObject$1, + supportsErrorEvent: supportsErrorEvent, + supportsFetch: supportsFetch$1, + wrappedCallback: wrappedCallback, + each: each$1, + objectMerge: objectMerge$1, + truncate: truncate$1, + objectFrozen: objectFrozen$1, + hasKey: hasKey$1, + joinRegExp: joinRegExp$1, + urlencode: urlencode$1, + uuid4: uuid4$1, + htmlTreeAsString: htmlTreeAsString$1, + htmlElementAsString: htmlElementAsString, + isSameException: isSameException$1, + isSameStacktrace: isSameStacktrace$1, + parseUrl: parseUrl$1, + fill: fill$1, + safeJoin: safeJoin +}; + +/* + TraceKit - Cross brower stack traces + + This was originally forked from github.com/occ/TraceKit, but has since been + largely re-written and is now maintained as part of raven-js. Tests for + this are in test/vendor. + + MIT license +*/ + +var TraceKit = { + collectWindowErrors: true, + debug: false +}; // This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) + +var _window$2 = typeof window !== 'undefined' ? window : typeof commonjsGlobal !== 'undefined' ? commonjsGlobal : typeof self !== 'undefined' ? self : {}; // global reference to slice + + +var _slice = [].slice; +var UNKNOWN_FUNCTION = '?'; // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error#Error_types + +var ERROR_TYPES_RE = /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/; + +function getLocationHref() { + if (typeof document === 'undefined' || document.location == null) return ''; + return document.location.href; +} +/** + * TraceKit.report: cross-browser processing of unhandled exceptions + * + * Syntax: + * TraceKit.report.subscribe(function(stackInfo) { ... }) + * TraceKit.report.unsubscribe(function(stackInfo) { ... }) + * TraceKit.report(exception) + * try { ...code... } catch(ex) { TraceKit.report(ex); } + * + * Supports: + * - Firefox: full stack trace with line numbers, plus column number + * on top frame; column number is not guaranteed + * - Opera: full stack trace with line and column numbers + * - Chrome: full stack trace with line and column numbers + * - Safari: line and column number for the top frame only; some frames + * may be missing, and column number is not guaranteed + * - IE: line and column number for the top frame only; some frames + * may be missing, and column number is not guaranteed + * + * In theory, TraceKit should work on all of the following versions: + * - IE5.5+ (only 8.0 tested) + * - Firefox 0.9+ (only 3.5+ tested) + * - Opera 7+ (only 10.50 tested; versions 9 and earlier may require + * Exceptions Have Stacktrace to be enabled in opera:config) + * - Safari 3+ (only 4+ tested) + * - Chrome 1+ (only 5+ tested) + * - Konqueror 3.5+ (untested) + * + * Requires TraceKit.computeStackTrace. + * + * Tries to catch all unhandled exceptions and report them to the + * subscribed handlers. Please note that TraceKit.report will rethrow the + * exception. This is REQUIRED in order to get a useful stack trace in IE. + * If the exception does not reach the top of the browser, you will only + * get a stack trace from the point where TraceKit.report was called. + * + * Handlers receive a stackInfo object as described in the + * TraceKit.computeStackTrace docs. + */ + + +TraceKit.report = function reportModuleWrapper() { + var handlers = [], + lastArgs = null, + lastException = null, + lastExceptionStack = null; + /** + * Add a crash handler. + * @param {Function} handler + */ + + function subscribe(handler) { + installGlobalHandler(); + handlers.push(handler); + } + /** + * Remove a crash handler. + * @param {Function} handler + */ + + + function unsubscribe(handler) { + for (var i = handlers.length - 1; i >= 0; --i) { + if (handlers[i] === handler) { + handlers.splice(i, 1); + } + } + } + /** + * Remove all crash handlers. + */ + + + function unsubscribeAll() { + uninstallGlobalHandler(); + handlers = []; + } + /** + * Dispatch stack information to all handlers. + * @param {Object.} stack + */ + + + function notifyHandlers(stack, isWindowError) { + var exception = null; + + if (isWindowError && !TraceKit.collectWindowErrors) { + return; + } + + for (var i in handlers) { + if (handlers.hasOwnProperty(i)) { + try { + handlers[i].apply(null, [stack].concat(_slice.call(arguments, 2))); + } catch (inner) { + exception = inner; + } + } + } + + if (exception) { + throw exception; + } + } + + var _oldOnerrorHandler, _onErrorHandlerInstalled; + /** + * Ensures all global unhandled exceptions are recorded. + * Supported by Gecko and IE. + * @param {string} msg Error message. + * @param {string} url URL of script that generated the exception. + * @param {(number|string)} lineNo The line number at which the error + * occurred. + * @param {?(number|string)} colNo The column number at which the error + * occurred. + * @param {?Error} ex The actual Error object. + */ + + + function traceKitWindowOnError(msg, url, lineNo, colNo, ex) { + var stack = null; // If 'ex' is ErrorEvent, get real Error from inside + + var exception = utils.isErrorEvent(ex) ? ex.error : ex; // If 'msg' is ErrorEvent, get real message from inside + + var message = utils.isErrorEvent(msg) ? msg.message : msg; + + if (lastExceptionStack) { + TraceKit.computeStackTrace.augmentStackTraceWithInitialElement(lastExceptionStack, url, lineNo, message); + processLastException(); + } else if (exception && utils.isError(exception)) { + // non-string `exception` arg; attempt to extract stack trace + // New chrome and blink send along a real error object + // Let's just report that like a normal error. + // See: https://mikewest.org/2013/08/debugging-runtime-errors-with-window-onerror + stack = TraceKit.computeStackTrace(exception); + notifyHandlers(stack, true); + } else { + var location = { + url: url, + line: lineNo, + column: colNo + }; + var name = undefined; + var groups; + + if ({}.toString.call(message) === '[object String]') { + var groups = message.match(ERROR_TYPES_RE); + + if (groups) { + name = groups[1]; + message = groups[2]; + } + } + + location.func = UNKNOWN_FUNCTION; + stack = { + name: name, + message: message, + url: getLocationHref(), + stack: [location] + }; + notifyHandlers(stack, true); + } + + if (_oldOnerrorHandler) { + return _oldOnerrorHandler.apply(this, arguments); + } + + return false; + } + + function installGlobalHandler() { + if (_onErrorHandlerInstalled) { + return; + } + + _oldOnerrorHandler = _window$2.onerror; + _window$2.onerror = traceKitWindowOnError; + _onErrorHandlerInstalled = true; + } + + function uninstallGlobalHandler() { + if (!_onErrorHandlerInstalled) { + return; + } + + _window$2.onerror = _oldOnerrorHandler; + _onErrorHandlerInstalled = false; + _oldOnerrorHandler = undefined; + } + + function processLastException() { + var _lastExceptionStack = lastExceptionStack, + _lastArgs = lastArgs; + lastArgs = null; + lastExceptionStack = null; + lastException = null; + notifyHandlers.apply(null, [_lastExceptionStack, false].concat(_lastArgs)); + } + /** + * Reports an unhandled Error to TraceKit. + * @param {Error} ex + * @param {?boolean} rethrow If false, do not re-throw the exception. + * Only used for window.onerror to not cause an infinite loop of + * rethrowing. + */ + + + function report(ex, rethrow) { + var args = _slice.call(arguments, 1); + + if (lastExceptionStack) { + if (lastException === ex) { + return; // already caught by an inner catch block, ignore + } else { + processLastException(); + } + } + + var stack = TraceKit.computeStackTrace(ex); + lastExceptionStack = stack; + lastException = ex; + lastArgs = args; // If the stack trace is incomplete, wait for 2 seconds for + // slow slow IE to see if onerror occurs or not before reporting + // this exception; otherwise, we will end up with an incomplete + // stack trace + + setTimeout(function () { + if (lastException === ex) { + processLastException(); + } + }, stack.incomplete ? 2000 : 0); + + if (rethrow !== false) { + throw ex; // re-throw to propagate to the top level (and cause window.onerror) + } + } + + report.subscribe = subscribe; + report.unsubscribe = unsubscribe; + report.uninstall = unsubscribeAll; + return report; +}(); +/** + * TraceKit.computeStackTrace: cross-browser stack traces in JavaScript + * + * Syntax: + * s = TraceKit.computeStackTrace(exception) // consider using TraceKit.report instead (see below) + * Returns: + * s.name - exception name + * s.message - exception message + * s.stack[i].url - JavaScript or HTML file URL + * s.stack[i].func - function name, or empty for anonymous functions (if guessing did not work) + * s.stack[i].args - arguments passed to the function, if known + * s.stack[i].line - line number, if known + * s.stack[i].column - column number, if known + * + * Supports: + * - Firefox: full stack trace with line numbers and unreliable column + * number on top frame + * - Opera 10: full stack trace with line and column numbers + * - Opera 9-: full stack trace with line numbers + * - Chrome: full stack trace with line and column numbers + * - Safari: line and column number for the topmost stacktrace element + * only + * - IE: no line numbers whatsoever + * + * Tries to guess names of anonymous functions by looking for assignments + * in the source code. In IE and Safari, we have to guess source file names + * by searching for function bodies inside all page scripts. This will not + * work for scripts that are loaded cross-domain. + * Here be dragons: some function names may be guessed incorrectly, and + * duplicate functions may be mismatched. + * + * TraceKit.computeStackTrace should only be used for tracing purposes. + * Logging of unhandled exceptions should be done with TraceKit.report, + * which builds on top of TraceKit.computeStackTrace and provides better + * IE support by utilizing the window.onerror event to retrieve information + * about the top of the stack. + * + * Note: In IE and Safari, no stack trace is recorded on the Error object, + * so computeStackTrace instead walks its *own* chain of callers. + * This means that: + * * in Safari, some methods may be missing from the stack trace; + * * in IE, the topmost function in the stack trace will always be the + * caller of computeStackTrace. + * + * This is okay for tracing (because you are likely to be calling + * computeStackTrace from the function you want to be the topmost element + * of the stack trace anyway), but not okay for logging unhandled + * exceptions (because your catch block will likely be far away from the + * inner function that actually caused the exception). + * + */ + + +TraceKit.computeStackTrace = function computeStackTraceWrapper() { + // Contents of Exception in various browsers. + // + // SAFARI: + // ex.message = Can't find variable: qq + // ex.line = 59 + // ex.sourceId = 580238192 + // ex.sourceURL = http://... + // ex.expressionBeginOffset = 96 + // ex.expressionCaretOffset = 98 + // ex.expressionEndOffset = 98 + // ex.name = ReferenceError + // + // FIREFOX: + // ex.message = qq is not defined + // ex.fileName = http://... + // ex.lineNumber = 59 + // ex.columnNumber = 69 + // ex.stack = ...stack trace... (see the example below) + // ex.name = ReferenceError + // + // CHROME: + // ex.message = qq is not defined + // ex.name = ReferenceError + // ex.type = not_defined + // ex.arguments = ['aa'] + // ex.stack = ...stack trace... + // + // INTERNET EXPLORER: + // ex.message = ... + // ex.name = ReferenceError + // + // OPERA: + // ex.message = ...message... (see the example below) + // ex.name = ReferenceError + // ex.opera#sourceloc = 11 (pretty much useless, duplicates the info in ex.message) + // ex.stacktrace = n/a; see 'opera:config#UserPrefs|Exceptions Have Stacktrace' + + /** + * Computes stack trace information from the stack property. + * Chrome and Gecko use this property. + * @param {Error} ex + * @return {?Object.} Stack trace information. + */ + function computeStackTraceFromStackProp(ex) { + if (typeof ex.stack === 'undefined' || !ex.stack) return; + var chrome = /^\s*at (.*?) ?\(((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i, + gecko = /^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|\[native).*?|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i, + winjs = /^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i, + // Used to additionally parse URL/line/column from eval frames + geckoEval = /(\S+) line (\d+)(?: > eval line \d+)* > eval/i, + chromeEval = /\((\S*)(?::(\d+))(?::(\d+))\)/, + lines = ex.stack.split('\n'), + stack = [], + submatch, + parts, + element, + reference = /^(.*) is undefined$/.exec(ex.message); + + for (var i = 0, j = lines.length; i < j; ++i) { + if (parts = chrome.exec(lines[i])) { + var isNative = parts[2] && parts[2].indexOf('native') === 0; // start of line + + var isEval = parts[2] && parts[2].indexOf('eval') === 0; // start of line + + if (isEval && (submatch = chromeEval.exec(parts[2]))) { + // throw out eval line/column and use top-most line/column number + parts[2] = submatch[1]; // url + + parts[3] = submatch[2]; // line + + parts[4] = submatch[3]; // column + } + + element = { + url: !isNative ? parts[2] : null, + func: parts[1] || UNKNOWN_FUNCTION, + args: isNative ? [parts[2]] : [], + line: parts[3] ? +parts[3] : null, + column: parts[4] ? +parts[4] : null + }; + } else if (parts = winjs.exec(lines[i])) { + element = { + url: parts[2], + func: parts[1] || UNKNOWN_FUNCTION, + args: [], + line: +parts[3], + column: parts[4] ? +parts[4] : null + }; + } else if (parts = gecko.exec(lines[i])) { + var isEval = parts[3] && parts[3].indexOf(' > eval') > -1; + + if (isEval && (submatch = geckoEval.exec(parts[3]))) { + // throw out eval line/column and use top-most line number + parts[3] = submatch[1]; + parts[4] = submatch[2]; + parts[5] = null; // no column when eval + } else if (i === 0 && !parts[5] && typeof ex.columnNumber !== 'undefined') { + // FireFox uses this awesome columnNumber property for its top frame + // Also note, Firefox's column number is 0-based and everything else expects 1-based, + // so adding 1 + // NOTE: this hack doesn't work if top-most frame is eval + stack[0].column = ex.columnNumber + 1; + } + + element = { + url: parts[3], + func: parts[1] || UNKNOWN_FUNCTION, + args: parts[2] ? parts[2].split(',') : [], + line: parts[4] ? +parts[4] : null, + column: parts[5] ? +parts[5] : null + }; + } else { + continue; + } + + if (!element.func && element.line) { + element.func = UNKNOWN_FUNCTION; + } + + stack.push(element); + } + + if (!stack.length) { + return null; + } + + return { + name: ex.name, + message: ex.message, + url: getLocationHref(), + stack: stack + }; + } + /** + * Adds information about the first frame to incomplete stack traces. + * Safari and IE require this to get complete data on the first frame. + * @param {Object.} stackInfo Stack trace information from + * one of the compute* methods. + * @param {string} url The URL of the script that caused an error. + * @param {(number|string)} lineNo The line number of the script that + * caused an error. + * @param {string=} message The error generated by the browser, which + * hopefully contains the name of the object that caused the error. + * @return {boolean} Whether or not the stack information was + * augmented. + */ + + + function augmentStackTraceWithInitialElement(stackInfo, url, lineNo, message) { + var initial = { + url: url, + line: lineNo + }; + + if (initial.url && initial.line) { + stackInfo.incomplete = false; + + if (!initial.func) { + initial.func = UNKNOWN_FUNCTION; + } + + if (stackInfo.stack.length > 0) { + if (stackInfo.stack[0].url === initial.url) { + if (stackInfo.stack[0].line === initial.line) { + return false; // already in stack trace + } else if (!stackInfo.stack[0].line && stackInfo.stack[0].func === initial.func) { + stackInfo.stack[0].line = initial.line; + return false; + } + } + } + + stackInfo.stack.unshift(initial); + stackInfo.partial = true; + return true; + } else { + stackInfo.incomplete = true; + } + + return false; + } + /** + * Computes stack trace information by walking the arguments.caller + * chain at the time the exception occurred. This will cause earlier + * frames to be missed but is the only way to get any stack trace in + * Safari and IE. The top frame is restored by + * {@link augmentStackTraceWithInitialElement}. + * @param {Error} ex + * @return {?Object.} Stack trace information. + */ + + + function computeStackTraceByWalkingCallerChain(ex, depth) { + var functionName = /function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i, + stack = [], + funcs = {}, + recursion = false, + parts, + item; + + for (var curr = computeStackTraceByWalkingCallerChain.caller; curr && !recursion; curr = curr.caller) { + if (curr === computeStackTrace || curr === TraceKit.report) { + // console.log('skipping internal function'); + continue; + } + + item = { + url: null, + func: UNKNOWN_FUNCTION, + line: null, + column: null + }; + + if (curr.name) { + item.func = curr.name; + } else if (parts = functionName.exec(curr.toString())) { + item.func = parts[1]; + } + + if (typeof item.func === 'undefined') { + try { + item.func = parts.input.substring(0, parts.input.indexOf('{')); + } catch (e) {} + } + + if (funcs['' + curr]) { + recursion = true; + } else { + funcs['' + curr] = true; + } + + stack.push(item); + } + + if (depth) { + // console.log('depth is ' + depth); + // console.log('stack is ' + stack.length); + stack.splice(0, depth); + } + + var result = { + name: ex.name, + message: ex.message, + url: getLocationHref(), + stack: stack + }; + augmentStackTraceWithInitialElement(result, ex.sourceURL || ex.fileName, ex.line || ex.lineNumber, ex.message || ex.description); + return result; + } + /** + * Computes a stack trace for an exception. + * @param {Error} ex + * @param {(string|number)=} depth + */ + + + function computeStackTrace(ex, depth) { + var stack = null; + depth = depth == null ? 0 : +depth; + + try { + stack = computeStackTraceFromStackProp(ex); + + if (stack) { + return stack; + } + } catch (e) { + if (TraceKit.debug) { + throw e; + } + } + + try { + stack = computeStackTraceByWalkingCallerChain(ex, depth + 1); + + if (stack) { + return stack; + } + } catch (e) { + if (TraceKit.debug) { + throw e; + } + } + + return { + name: ex.name, + message: ex.message, + url: getLocationHref() + }; + } + + computeStackTrace.augmentStackTraceWithInitialElement = augmentStackTraceWithInitialElement; + computeStackTrace.computeStackTraceFromStackProp = computeStackTraceFromStackProp; + return computeStackTrace; +}(); + +var tracekit = TraceKit; + +var stringify_1 = createCommonjsModule(function (module, exports) { + /* + json-stringify-safe + Like JSON.stringify, but doesn't throw on circular references. + + Originally forked from https://github.com/isaacs/json-stringify-safe + version 5.0.1 on 3/8/2017 and modified to handle Errors serialization + and IE8 compatibility. Tests for this are in test/vendor. + + ISC license: https://github.com/isaacs/json-stringify-safe/blob/master/LICENSE + */ + exports = module.exports = stringify; + exports.getSerialize = serializer; + + function indexOf(haystack, needle) { + for (var i = 0; i < haystack.length; ++i) { + if (haystack[i] === needle) return i; + } + + return -1; + } + + function stringify(obj, replacer, spaces, cycleReplacer) { + return JSON.stringify(obj, serializer(replacer, cycleReplacer), spaces); + } // https://github.com/ftlabs/js-abbreviate/blob/fa709e5f139e7770a71827b1893f22418097fbda/index.js#L95-L106 + + + function stringifyError(value) { + var err = { + // These properties are implemented as magical getters and don't show up in for in + stack: value.stack, + message: value.message, + name: value.name + }; + + for (var i in value) { + if (Object.prototype.hasOwnProperty.call(value, i)) { + err[i] = value[i]; + } + } + + return err; + } + + function serializer(replacer, cycleReplacer) { + var stack = []; + var keys = []; + + if (cycleReplacer == null) { + cycleReplacer = function cycleReplacer(key, value) { + if (stack[0] === value) { + return '[Circular ~]'; + } + + return '[Circular ~.' + keys.slice(0, indexOf(stack, value)).join('.') + ']'; + }; + } + + return function (key, value) { + if (stack.length > 0) { + var thisPos = indexOf(stack, this); + ~thisPos ? stack.splice(thisPos + 1) : stack.push(this); + ~thisPos ? keys.splice(thisPos, Infinity, key) : keys.push(key); + + if (~indexOf(stack, value)) { + value = cycleReplacer.call(this, key, value); + } + } else { + stack.push(value); + } + + return replacer == null ? value instanceof Error ? stringifyError(value) : value : replacer.call(this, key, value); + }; + } +}); +var stringify_2 = stringify_1.getSerialize; + +function RavenConfigError(message) { + this.name = 'RavenConfigError'; + this.message = message; +} + +RavenConfigError.prototype = new Error(); +RavenConfigError.prototype.constructor = RavenConfigError; +var configError = RavenConfigError; + +var wrapMethod = function wrapMethod(console, level, callback) { + var originalConsoleLevel = console[level]; + var originalConsole = console; + + if (!(level in console)) { + return; + } + + var sentryLevel = level === 'warn' ? 'warning' : level; + + console[level] = function () { + var args = [].slice.call(arguments); + var msg = utils.safeJoin(args, ' '); + var data = { + level: sentryLevel, + logger: 'console', + extra: { + arguments: args + } + }; + + if (level === 'assert') { + if (args[0] === false) { + // Default browsers message + msg = 'Assertion failed: ' + (utils.safeJoin(args.slice(1), ' ') || 'console.assert'); + data.extra.arguments = args.slice(1); + callback && callback(msg, data); + } + } else { + callback && callback(msg, data); + } // this fails for some browsers. :( + + + if (originalConsoleLevel) { + // IE9 doesn't allow calling apply on console functions directly + // See: https://stackoverflow.com/questions/5472938/does-ie9-support-console-log-and-is-it-a-real-function#answer-5473193 + Function.prototype.apply.call(originalConsoleLevel, originalConsole, args); + } + }; +}; + +var console$1 = { + wrapMethod: wrapMethod +}; + +/*global XDomainRequest:false */ + +var isError = utils.isError; +var isObject = utils.isObject; +var isErrorEvent = utils.isErrorEvent; +var isUndefined = utils.isUndefined; +var isFunction = utils.isFunction; +var isString = utils.isString; +var isArray = utils.isArray; +var isEmptyObject = utils.isEmptyObject; +var each = utils.each; +var objectMerge = utils.objectMerge; +var truncate = utils.truncate; +var objectFrozen = utils.objectFrozen; +var hasKey = utils.hasKey; +var joinRegExp = utils.joinRegExp; +var urlencode = utils.urlencode; +var uuid4 = utils.uuid4; +var htmlTreeAsString = utils.htmlTreeAsString; +var isSameException = utils.isSameException; +var isSameStacktrace = utils.isSameStacktrace; +var parseUrl = utils.parseUrl; +var fill = utils.fill; +var supportsFetch = utils.supportsFetch; +var wrapConsoleMethod = console$1.wrapMethod; +var dsnKeys = 'source protocol user pass host port path'.split(' '); +var dsnPattern = /^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/; + +function now() { + return +new Date(); +} // This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) + + +var _window$1 = typeof window !== 'undefined' ? window : typeof commonjsGlobal !== 'undefined' ? commonjsGlobal : typeof self !== 'undefined' ? self : {}; + +var _document = _window$1.document; +var _navigator = _window$1.navigator; + +function keepOriginalCallback(original, callback) { + return isFunction(callback) ? function (data) { + return callback(data, original); + } : callback; +} // First, check for JSON support +// If there is no JSON, we no-op the core features of Raven +// since JSON is required to encode the payload + + +function Raven$1() { + this._hasJSON = !!(_typeof(JSON) === 'object' && JSON.stringify); // Raven can run in contexts where there's no document (react-native) + + this._hasDocument = !isUndefined(_document); + this._hasNavigator = !isUndefined(_navigator); + this._lastCapturedException = null; + this._lastData = null; + this._lastEventId = null; + this._globalServer = null; + this._globalKey = null; + this._globalProject = null; + this._globalContext = {}; + this._globalOptions = { + // SENTRY_RELEASE can be injected by https://github.com/getsentry/sentry-webpack-plugin + release: _window$1.SENTRY_RELEASE && _window$1.SENTRY_RELEASE.id, + logger: 'javascript', + ignoreErrors: [], + ignoreUrls: [], + whitelistUrls: [], + includePaths: [], + headers: null, + collectWindowErrors: true, + maxMessageLength: 0, + // By default, truncates URL values to 250 chars + maxUrlLength: 250, + stackTraceLimit: 50, + autoBreadcrumbs: true, + instrument: true, + sampleRate: 1 + }; + this._fetchDefaults = { + method: 'POST', + keepalive: true, + referrerPolicy: 'origin' + }; + this._ignoreOnError = 0; + this._isRavenInstalled = false; + this._originalErrorStackTraceLimit = Error.stackTraceLimit; // capture references to window.console *and* all its methods first + // before the console plugin has a chance to monkey patch + + this._originalConsole = _window$1.console || {}; + this._originalConsoleMethods = {}; + this._plugins = []; + this._startTime = now(); + this._wrappedBuiltIns = []; + this._breadcrumbs = []; + this._lastCapturedEvent = null; + this._keypressTimeout; + this._location = _window$1.location; + this._lastHref = this._location && this._location.href; + + this._resetBackoff(); // eslint-disable-next-line guard-for-in + + + for (var method in this._originalConsole) { + this._originalConsoleMethods[method] = this._originalConsole[method]; + } +} +/* + * The core Raven singleton + * + * @this {Raven} + */ + + +Raven$1.prototype = { + // Hardcode version string so that raven source can be loaded directly via + // webpack (using a build step causes webpack #1617). Grunt verifies that + // this value matches package.json during build. + // See: https://github.com/getsentry/raven-js/issues/465 + VERSION: '3.22.2', + debug: false, + TraceKit: tracekit, + // alias to TraceKit + + /* + * Configure Raven with a DSN and extra options + * + * @param {string} dsn The public Sentry DSN + * @param {object} options Set of global options [optional] + * @return {Raven} + */ + config: function config(dsn, options) { + var self = this; + + if (self._globalServer) { + this._logDebug('error', 'Error: Raven has already been configured'); + + return self; + } + + if (!dsn) return self; + var globalOptions = self._globalOptions; // merge in options + + if (options) { + each(options, function (key, value) { + // tags and extra are special and need to be put into context + if (key === 'tags' || key === 'extra' || key === 'user') { + self._globalContext[key] = value; + } else { + globalOptions[key] = value; + } + }); + } + + self.setDSN(dsn); // "Script error." is hard coded into browsers for errors that it can't read. + // this is the result of a script being pulled in from an external domain and CORS. + + globalOptions.ignoreErrors.push(/^Script error\.?$/); + globalOptions.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/); // join regexp rules into one big rule + + globalOptions.ignoreErrors = joinRegExp(globalOptions.ignoreErrors); + globalOptions.ignoreUrls = globalOptions.ignoreUrls.length ? joinRegExp(globalOptions.ignoreUrls) : false; + globalOptions.whitelistUrls = globalOptions.whitelistUrls.length ? joinRegExp(globalOptions.whitelistUrls) : false; + globalOptions.includePaths = joinRegExp(globalOptions.includePaths); + globalOptions.maxBreadcrumbs = Math.max(0, Math.min(globalOptions.maxBreadcrumbs || 100, 100)); // default and hard limit is 100 + + var autoBreadcrumbDefaults = { + xhr: true, + console: true, + dom: true, + location: true, + sentry: true + }; + var autoBreadcrumbs = globalOptions.autoBreadcrumbs; + + if ({}.toString.call(autoBreadcrumbs) === '[object Object]') { + autoBreadcrumbs = objectMerge(autoBreadcrumbDefaults, autoBreadcrumbs); + } else if (autoBreadcrumbs !== false) { + autoBreadcrumbs = autoBreadcrumbDefaults; + } + + globalOptions.autoBreadcrumbs = autoBreadcrumbs; + var instrumentDefaults = { + tryCatch: true + }; + var instrument = globalOptions.instrument; + + if ({}.toString.call(instrument) === '[object Object]') { + instrument = objectMerge(instrumentDefaults, instrument); + } else if (instrument !== false) { + instrument = instrumentDefaults; + } + + globalOptions.instrument = instrument; + tracekit.collectWindowErrors = !!globalOptions.collectWindowErrors; // return for chaining + + return self; + }, + + /* + * Installs a global window.onerror error handler + * to capture and report uncaught exceptions. + * At this point, install() is required to be called due + * to the way TraceKit is set up. + * + * @return {Raven} + */ + install: function install() { + var self = this; + + if (self.isSetup() && !self._isRavenInstalled) { + tracekit.report.subscribe(function () { + self._handleOnErrorStackInfo.apply(self, arguments); + }); + + self._patchFunctionToString(); + + if (self._globalOptions.instrument && self._globalOptions.instrument.tryCatch) { + self._instrumentTryCatch(); + } + + if (self._globalOptions.autoBreadcrumbs) self._instrumentBreadcrumbs(); // Install all of the plugins + + self._drainPlugins(); + + self._isRavenInstalled = true; + } + + Error.stackTraceLimit = self._globalOptions.stackTraceLimit; + return this; + }, + + /* + * Set the DSN (can be called multiple time unlike config) + * + * @param {string} dsn The public Sentry DSN + */ + setDSN: function setDSN(dsn) { + var self = this, + uri = self._parseDSN(dsn), + lastSlash = uri.path.lastIndexOf('/'), + path = uri.path.substr(1, lastSlash); + + self._dsn = dsn; + self._globalKey = uri.user; + self._globalSecret = uri.pass && uri.pass.substr(1); + self._globalProject = uri.path.substr(lastSlash + 1); + self._globalServer = self._getGlobalServer(uri); + self._globalEndpoint = self._globalServer + '/' + path + 'api/' + self._globalProject + '/store/'; // Reset backoff state since we may be pointing at a + // new project/server + + this._resetBackoff(); + }, + + /* + * Wrap code within a context so Raven can capture errors + * reliably across domains that is executed immediately. + * + * @param {object} options A specific set of options for this context [optional] + * @param {function} func The callback to be immediately executed within the context + * @param {array} args An array of arguments to be called with the callback [optional] + */ + context: function context(options, func, args) { + if (isFunction(options)) { + args = func || []; + func = options; + options = undefined; + } + + return this.wrap(options, func).apply(this, args); + }, + + /* + * Wrap code within a context and returns back a new function to be executed + * + * @param {object} options A specific set of options for this context [optional] + * @param {function} func The function to be wrapped in a new context + * @param {function} func A function to call before the try/catch wrapper [optional, private] + * @return {function} The newly wrapped functions with a context + */ + wrap: function wrap(options, func, _before) { + var self = this; // 1 argument has been passed, and it's not a function + // so just return it + + if (isUndefined(func) && !isFunction(options)) { + return options; + } // options is optional + + + if (isFunction(options)) { + func = options; + options = undefined; + } // At this point, we've passed along 2 arguments, and the second one + // is not a function either, so we'll just return the second argument. + + + if (!isFunction(func)) { + return func; + } // We don't wanna wrap it twice! + + + try { + if (func.__raven__) { + return func; + } // If this has already been wrapped in the past, return that + + + if (func.__raven_wrapper__) { + return func.__raven_wrapper__; + } + } catch (e) { + // Just accessing custom props in some Selenium environments + // can cause a "Permission denied" exception (see raven-js#495). + // Bail on wrapping and return the function as-is (defers to window.onerror). + return func; + } + + function wrapped() { + var args = [], + i = arguments.length, + deep = !options || options && options.deep !== false; + + if (_before && isFunction(_before)) { + _before.apply(this, arguments); + } // Recursively wrap all of a function's arguments that are + // functions themselves. + + + while (i--) { + args[i] = deep ? self.wrap(options, arguments[i]) : arguments[i]; + } + + try { + // Attempt to invoke user-land function + // NOTE: If you are a Sentry user, and you are seeing this stack frame, it + // means Raven caught an error invoking your application code. This is + // expected behavior and NOT indicative of a bug with Raven.js. + return func.apply(this, args); + } catch (e) { + self._ignoreNextOnError(); + + self.captureException(e, options); + throw e; + } + } // copy over properties of the old function + + + for (var property in func) { + if (hasKey(func, property)) { + wrapped[property] = func[property]; + } + } + + wrapped.prototype = func.prototype; + func.__raven_wrapper__ = wrapped; // Signal that this function has been wrapped/filled already + // for both debugging and to prevent it to being wrapped/filled twice + + wrapped.__raven__ = true; + wrapped.__orig__ = func; + return wrapped; + }, + + /* + * Uninstalls the global error handler. + * + * @return {Raven} + */ + uninstall: function uninstall() { + tracekit.report.uninstall(); + + this._unpatchFunctionToString(); + + this._restoreBuiltIns(); + + this._restoreConsole(); + + Error.stackTraceLimit = this._originalErrorStackTraceLimit; + this._isRavenInstalled = false; + return this; + }, + + /* + * Manually capture an exception and send it over to Sentry + * + * @param {error} ex An exception to be logged + * @param {object} options A specific set of options for this error [optional] + * @return {Raven} + */ + captureException: function captureException(ex, options) { + options = objectMerge({ + trimHeadFrames: 0 + }, options ? options : {}); // Cases for sending ex as a message, rather than an exception + + var isNotError = !isError(ex); + var isNotErrorEvent = !isErrorEvent(ex); + var isErrorEventWithoutError = isErrorEvent(ex) && !ex.error; + + if (isNotError && isNotErrorEvent || isErrorEventWithoutError) { + return this.captureMessage(ex, objectMerge(options, { + stacktrace: true, + // if we fall back to captureMessage, default to attempting a new trace + trimHeadFrames: options.trimHeadFrames + 1 + })); + } // Get actual Error from ErrorEvent + + + if (isErrorEvent(ex)) ex = ex.error; // Store the raw exception object for potential debugging and introspection + + this._lastCapturedException = ex; // TraceKit.report will re-raise any exception passed to it, + // which means you have to wrap it in try/catch. Instead, we + // can wrap it here and only re-raise if TraceKit.report + // raises an exception different from the one we asked to + // report on. + + try { + var stack = tracekit.computeStackTrace(ex); + + this._handleStackInfo(stack, options); + } catch (ex1) { + if (ex !== ex1) { + throw ex1; + } + } + + return this; + }, + + /* + * Manually send a message to Sentry + * + * @param {string} msg A plain message to be captured in Sentry + * @param {object} options A specific set of options for this message [optional] + * @return {Raven} + */ + captureMessage: function captureMessage(msg, options) { + // config() automagically converts ignoreErrors from a list to a RegExp so we need to test for an + // early call; we'll error on the side of logging anything called before configuration since it's + // probably something you should see: + if (!!this._globalOptions.ignoreErrors.test && this._globalOptions.ignoreErrors.test(msg)) { + return; + } + + options = options || {}; + var data = objectMerge({ + message: msg + '' // Make sure it's actually a string + + }, options); + var ex; // Generate a "synthetic" stack trace from this point. + // NOTE: If you are a Sentry user, and you are seeing this stack frame, it is NOT indicative + // of a bug with Raven.js. Sentry generates synthetic traces either by configuration, + // or if it catches a thrown object without a "stack" property. + + try { + throw new Error(msg); + } catch (ex1) { + ex = ex1; + } // null exception name so `Error` isn't prefixed to msg + + + ex.name = null; + var stack = tracekit.computeStackTrace(ex); // stack[0] is `throw new Error(msg)` call itself, we are interested in the frame that was just before that, stack[1] + + var initialCall = isArray(stack.stack) && stack.stack[1]; + var fileurl = initialCall && initialCall.url || ''; + + if (!!this._globalOptions.ignoreUrls.test && this._globalOptions.ignoreUrls.test(fileurl)) { + return; + } + + if (!!this._globalOptions.whitelistUrls.test && !this._globalOptions.whitelistUrls.test(fileurl)) { + return; + } + + if (this._globalOptions.stacktrace || options && options.stacktrace) { + options = objectMerge({ + // fingerprint on msg, not stack trace (legacy behavior, could be + // revisited) + fingerprint: msg, + // since we know this is a synthetic trace, the top N-most frames + // MUST be from Raven.js, so mark them as in_app later by setting + // trimHeadFrames + trimHeadFrames: (options.trimHeadFrames || 0) + 1 + }, options); + + var frames = this._prepareFrames(stack, options); + + data.stacktrace = { + // Sentry expects frames oldest to newest + frames: frames.reverse() + }; + } // Fire away! + + + this._send(data); + + return this; + }, + captureBreadcrumb: function captureBreadcrumb(obj) { + var crumb = objectMerge({ + timestamp: now() / 1000 + }, obj); + + if (isFunction(this._globalOptions.breadcrumbCallback)) { + var result = this._globalOptions.breadcrumbCallback(crumb); + + if (isObject(result) && !isEmptyObject(result)) { + crumb = result; + } else if (result === false) { + return this; + } + } + + this._breadcrumbs.push(crumb); + + if (this._breadcrumbs.length > this._globalOptions.maxBreadcrumbs) { + this._breadcrumbs.shift(); + } + + return this; + }, + addPlugin: function addPlugin(plugin + /*arg1, arg2, ... argN*/ + ) { + var pluginArgs = [].slice.call(arguments, 1); + + this._plugins.push([plugin, pluginArgs]); + + if (this._isRavenInstalled) { + this._drainPlugins(); + } + + return this; + }, + + /* + * Set/clear a user to be sent along with the payload. + * + * @param {object} user An object representing user data [optional] + * @return {Raven} + */ + setUserContext: function setUserContext(user) { + // Intentionally do not merge here since that's an unexpected behavior. + this._globalContext.user = user; + return this; + }, + + /* + * Merge extra attributes to be sent along with the payload. + * + * @param {object} extra An object representing extra data [optional] + * @return {Raven} + */ + setExtraContext: function setExtraContext(extra) { + this._mergeContext('extra', extra); + + return this; + }, + + /* + * Merge tags to be sent along with the payload. + * + * @param {object} tags An object representing tags [optional] + * @return {Raven} + */ + setTagsContext: function setTagsContext(tags) { + this._mergeContext('tags', tags); + + return this; + }, + + /* + * Clear all of the context. + * + * @return {Raven} + */ + clearContext: function clearContext() { + this._globalContext = {}; + return this; + }, + + /* + * Get a copy of the current context. This cannot be mutated. + * + * @return {object} copy of context + */ + getContext: function getContext() { + // lol javascript + return JSON.parse(stringify_1(this._globalContext)); + }, + + /* + * Set environment of application + * + * @param {string} environment Typically something like 'production'. + * @return {Raven} + */ + setEnvironment: function setEnvironment(environment) { + this._globalOptions.environment = environment; + return this; + }, + + /* + * Set release version of application + * + * @param {string} release Typically something like a git SHA to identify version + * @return {Raven} + */ + setRelease: function setRelease(release) { + this._globalOptions.release = release; + return this; + }, + + /* + * Set the dataCallback option + * + * @param {function} callback The callback to run which allows the + * data blob to be mutated before sending + * @return {Raven} + */ + setDataCallback: function setDataCallback(callback) { + var original = this._globalOptions.dataCallback; + this._globalOptions.dataCallback = keepOriginalCallback(original, callback); + return this; + }, + + /* + * Set the breadcrumbCallback option + * + * @param {function} callback The callback to run which allows filtering + * or mutating breadcrumbs + * @return {Raven} + */ + setBreadcrumbCallback: function setBreadcrumbCallback(callback) { + var original = this._globalOptions.breadcrumbCallback; + this._globalOptions.breadcrumbCallback = keepOriginalCallback(original, callback); + return this; + }, + + /* + * Set the shouldSendCallback option + * + * @param {function} callback The callback to run which allows + * introspecting the blob before sending + * @return {Raven} + */ + setShouldSendCallback: function setShouldSendCallback(callback) { + var original = this._globalOptions.shouldSendCallback; + this._globalOptions.shouldSendCallback = keepOriginalCallback(original, callback); + return this; + }, + + /** + * Override the default HTTP transport mechanism that transmits data + * to the Sentry server. + * + * @param {function} transport Function invoked instead of the default + * `makeRequest` handler. + * + * @return {Raven} + */ + setTransport: function setTransport(transport) { + this._globalOptions.transport = transport; + return this; + }, + + /* + * Get the latest raw exception that was captured by Raven. + * + * @return {error} + */ + lastException: function lastException() { + return this._lastCapturedException; + }, + + /* + * Get the last event id + * + * @return {string} + */ + lastEventId: function lastEventId() { + return this._lastEventId; + }, + + /* + * Determine if Raven is setup and ready to go. + * + * @return {boolean} + */ + isSetup: function isSetup() { + if (!this._hasJSON) return false; // needs JSON support + + if (!this._globalServer) { + if (!this.ravenNotConfiguredError) { + this.ravenNotConfiguredError = true; + + this._logDebug('error', 'Error: Raven has not been configured.'); + } + + return false; + } + + return true; + }, + afterLoad: function afterLoad() { + // TODO: remove window dependence? + // Attempt to initialize Raven on load + var RavenConfig = _window$1.RavenConfig; + + if (RavenConfig) { + this.config(RavenConfig.dsn, RavenConfig.config).install(); + } + }, + showReportDialog: function showReportDialog(options) { + if (!_document // doesn't work without a document (React native) + ) return; + options = options || {}; + var lastEventId = options.eventId || this.lastEventId(); + + if (!lastEventId) { + throw new configError('Missing eventId'); + } + + var dsn = options.dsn || this._dsn; + + if (!dsn) { + throw new configError('Missing DSN'); + } + + var encode = encodeURIComponent; + var qs = ''; + qs += '?eventId=' + encode(lastEventId); + qs += '&dsn=' + encode(dsn); + var user = options.user || this._globalContext.user; + + if (user) { + if (user.name) qs += '&name=' + encode(user.name); + if (user.email) qs += '&email=' + encode(user.email); + } + + var globalServer = this._getGlobalServer(this._parseDSN(dsn)); + + var script = _document.createElement('script'); + + script.async = true; + script.src = globalServer + '/api/embed/error-page/' + qs; + + (_document.head || _document.body).appendChild(script); + }, + + /**** Private functions ****/ + _ignoreNextOnError: function _ignoreNextOnError() { + var self = this; + this._ignoreOnError += 1; + setTimeout(function () { + // onerror should trigger before setTimeout + self._ignoreOnError -= 1; + }); + }, + _triggerEvent: function _triggerEvent(eventType, options) { + // NOTE: `event` is a native browser thing, so let's avoid conflicting wiht it + var evt, key; + if (!this._hasDocument) return; + options = options || {}; + eventType = 'raven' + eventType.substr(0, 1).toUpperCase() + eventType.substr(1); + + if (_document.createEvent) { + evt = _document.createEvent('HTMLEvents'); + evt.initEvent(eventType, true, true); + } else { + evt = _document.createEventObject(); + evt.eventType = eventType; + } + + for (key in options) { + if (hasKey(options, key)) { + evt[key] = options[key]; + } + } + + if (_document.createEvent) { + // IE9 if standards + _document.dispatchEvent(evt); + } else { + // IE8 regardless of Quirks or Standards + // IE9 if quirks + try { + _document.fireEvent('on' + evt.eventType.toLowerCase(), evt); + } catch (e) {// Do nothing + } + } + }, + + /** + * Wraps addEventListener to capture UI breadcrumbs + * @param evtName the event name (e.g. "click") + * @returns {Function} + * @private + */ + _breadcrumbEventHandler: function _breadcrumbEventHandler(evtName) { + var self = this; + return function (evt) { + // reset keypress timeout; e.g. triggering a 'click' after + // a 'keypress' will reset the keypress debounce so that a new + // set of keypresses can be recorded + self._keypressTimeout = null; // It's possible this handler might trigger multiple times for the same + // event (e.g. event propagation through node ancestors). Ignore if we've + // already captured the event. + + if (self._lastCapturedEvent === evt) return; + self._lastCapturedEvent = evt; // try/catch both: + // - accessing evt.target (see getsentry/raven-js#838, #768) + // - `htmlTreeAsString` because it's complex, and just accessing the DOM incorrectly + // can throw an exception in some circumstances. + + var target; + + try { + target = htmlTreeAsString(evt.target); + } catch (e) { + target = ''; + } + + self.captureBreadcrumb({ + category: 'ui.' + evtName, + // e.g. ui.click, ui.input + message: target + }); + }; + }, + + /** + * Wraps addEventListener to capture keypress UI events + * @returns {Function} + * @private + */ + _keypressEventHandler: function _keypressEventHandler() { + var self = this, + debounceDuration = 1000; // milliseconds + // TODO: if somehow user switches keypress target before + // debounce timeout is triggered, we will only capture + // a single breadcrumb from the FIRST target (acceptable?) + + return function (evt) { + var target; + + try { + target = evt.target; + } catch (e) { + // just accessing event properties can throw an exception in some rare circumstances + // see: https://github.com/getsentry/raven-js/issues/838 + return; + } + + var tagName = target && target.tagName; // only consider keypress events on actual input elements + // this will disregard keypresses targeting body (e.g. tabbing + // through elements, hotkeys, etc) + + if (!tagName || tagName !== 'INPUT' && tagName !== 'TEXTAREA' && !target.isContentEditable) return; // record first keypress in a series, but ignore subsequent + // keypresses until debounce clears + + var timeout = self._keypressTimeout; + + if (!timeout) { + self._breadcrumbEventHandler('input')(evt); + } + + clearTimeout(timeout); + self._keypressTimeout = setTimeout(function () { + self._keypressTimeout = null; + }, debounceDuration); + }; + }, + + /** + * Captures a breadcrumb of type "navigation", normalizing input URLs + * @param to the originating URL + * @param from the target URL + * @private + */ + _captureUrlChange: function _captureUrlChange(from, to) { + var parsedLoc = parseUrl(this._location.href); + var parsedTo = parseUrl(to); + var parsedFrom = parseUrl(from); // because onpopstate only tells you the "new" (to) value of location.href, and + // not the previous (from) value, we need to track the value of the current URL + // state ourselves + + this._lastHref = to; // Use only the path component of the URL if the URL matches the current + // document (almost all the time when using pushState) + + if (parsedLoc.protocol === parsedTo.protocol && parsedLoc.host === parsedTo.host) to = parsedTo.relative; + if (parsedLoc.protocol === parsedFrom.protocol && parsedLoc.host === parsedFrom.host) from = parsedFrom.relative; + this.captureBreadcrumb({ + category: 'navigation', + data: { + to: to, + from: from + } + }); + }, + _patchFunctionToString: function _patchFunctionToString() { + var self = this; + self._originalFunctionToString = Function.prototype.toString; // eslint-disable-next-line no-extend-native + + Function.prototype.toString = function () { + if (typeof this === 'function' && this.__raven__) { + return self._originalFunctionToString.apply(this.__orig__, arguments); + } + + return self._originalFunctionToString.apply(this, arguments); + }; + }, + _unpatchFunctionToString: function _unpatchFunctionToString() { + if (this._originalFunctionToString) { + // eslint-disable-next-line no-extend-native + Function.prototype.toString = this._originalFunctionToString; + } + }, + + /** + * Wrap timer functions and event targets to catch errors and provide + * better metadata. + */ + _instrumentTryCatch: function _instrumentTryCatch() { + var self = this; + var wrappedBuiltIns = self._wrappedBuiltIns; + + function wrapTimeFn(orig) { + return function (fn, t) { + // preserve arity + // Make a copy of the arguments to prevent deoptimization + // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments + var args = new Array(arguments.length); + + for (var i = 0; i < args.length; ++i) { + args[i] = arguments[i]; + } + + var originalCallback = args[0]; + + if (isFunction(originalCallback)) { + args[0] = self.wrap(originalCallback); + } // IE < 9 doesn't support .call/.apply on setInterval/setTimeout, but it + // also supports only two arguments and doesn't care what this is, so we + // can just call the original function directly. + + + if (orig.apply) { + return orig.apply(this, args); + } else { + return orig(args[0], args[1]); + } + }; + } + + var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; + + function wrapEventTarget(global) { + var proto = _window$1[global] && _window$1[global].prototype; + + if (proto && proto.hasOwnProperty && proto.hasOwnProperty('addEventListener')) { + fill(proto, 'addEventListener', function (orig) { + return function (evtName, fn, capture, secure) { + // preserve arity + try { + if (fn && fn.handleEvent) { + fn.handleEvent = self.wrap(fn.handleEvent); + } + } catch (err) {} // can sometimes get 'Permission denied to access property "handle Event' + // More breadcrumb DOM capture ... done here and not in `_instrumentBreadcrumbs` + // so that we don't have more than one wrapper function + + + var before, clickHandler, keypressHandler; + + if (autoBreadcrumbs && autoBreadcrumbs.dom && (global === 'EventTarget' || global === 'Node')) { + // NOTE: generating multiple handlers per addEventListener invocation, should + // revisit and verify we can just use one (almost certainly) + clickHandler = self._breadcrumbEventHandler('click'); + keypressHandler = self._keypressEventHandler(); + + before = function before(evt) { + // need to intercept every DOM event in `before` argument, in case that + // same wrapped method is re-used for different events (e.g. mousemove THEN click) + // see #724 + if (!evt) return; + var eventType; + + try { + eventType = evt.type; + } catch (e) { + // just accessing event properties can throw an exception in some rare circumstances + // see: https://github.com/getsentry/raven-js/issues/838 + return; + } + + if (eventType === 'click') return clickHandler(evt);else if (eventType === 'keypress') return keypressHandler(evt); + }; + } + + return orig.call(this, evtName, self.wrap(fn, undefined, before), capture, secure); + }; + }, wrappedBuiltIns); + fill(proto, 'removeEventListener', function (orig) { + return function (evt, fn, capture, secure) { + try { + fn = fn && (fn.__raven_wrapper__ ? fn.__raven_wrapper__ : fn); + } catch (e) {// ignore, accessing __raven_wrapper__ will throw in some Selenium environments + } + + return orig.call(this, evt, fn, capture, secure); + }; + }, wrappedBuiltIns); + } + } + + fill(_window$1, 'setTimeout', wrapTimeFn, wrappedBuiltIns); + fill(_window$1, 'setInterval', wrapTimeFn, wrappedBuiltIns); + + if (_window$1.requestAnimationFrame) { + fill(_window$1, 'requestAnimationFrame', function (orig) { + return function (cb) { + return orig(self.wrap(cb)); + }; + }, wrappedBuiltIns); + } // event targets borrowed from bugsnag-js: + // https://github.com/bugsnag/bugsnag-js/blob/master/src/bugsnag.js#L666 + + + var eventTargets = ['EventTarget', 'Window', 'Node', 'ApplicationCache', 'AudioTrackList', 'ChannelMergerNode', 'CryptoOperation', 'EventSource', 'FileReader', 'HTMLUnknownElement', 'IDBDatabase', 'IDBRequest', 'IDBTransaction', 'KeyOperation', 'MediaController', 'MessagePort', 'ModalWindow', 'Notification', 'SVGElementInstance', 'Screen', 'TextTrack', 'TextTrackCue', 'TextTrackList', 'WebSocket', 'WebSocketWorker', 'Worker', 'XMLHttpRequest', 'XMLHttpRequestEventTarget', 'XMLHttpRequestUpload']; + + for (var i = 0; i < eventTargets.length; i++) { + wrapEventTarget(eventTargets[i]); + } + }, + + /** + * Instrument browser built-ins w/ breadcrumb capturing + * - XMLHttpRequests + * - DOM interactions (click/typing) + * - window.location changes + * - console + * + * Can be disabled or individually configured via the `autoBreadcrumbs` config option + */ + _instrumentBreadcrumbs: function _instrumentBreadcrumbs() { + var self = this; + var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; + var wrappedBuiltIns = self._wrappedBuiltIns; + + function wrapProp(prop, xhr) { + if (prop in xhr && isFunction(xhr[prop])) { + fill(xhr, prop, function (orig) { + return self.wrap(orig); + }); // intentionally don't track filled methods on XHR instances + } + } + + if (autoBreadcrumbs.xhr && 'XMLHttpRequest' in _window$1) { + var xhrproto = XMLHttpRequest.prototype; + fill(xhrproto, 'open', function (origOpen) { + return function (method, url) { + // preserve arity + // if Sentry key appears in URL, don't capture + if (isString(url) && url.indexOf(self._globalKey) === -1) { + this.__raven_xhr = { + method: method, + url: url, + status_code: null + }; + } + + return origOpen.apply(this, arguments); + }; + }, wrappedBuiltIns); + fill(xhrproto, 'send', function (origSend) { + return function () { + // preserve arity + var xhr = this; + + function onreadystatechangeHandler() { + if (xhr.__raven_xhr && xhr.readyState === 4) { + try { + // touching statusCode in some platforms throws + // an exception + xhr.__raven_xhr.status_code = xhr.status; + } catch (e) { + /* do nothing */ + } + + self.captureBreadcrumb({ + type: 'http', + category: 'xhr', + data: xhr.__raven_xhr + }); + } + } + + var props = ['onload', 'onerror', 'onprogress']; + + for (var j = 0; j < props.length; j++) { + wrapProp(props[j], xhr); + } + + if ('onreadystatechange' in xhr && isFunction(xhr.onreadystatechange)) { + fill(xhr, 'onreadystatechange', function (orig) { + return self.wrap(orig, undefined, onreadystatechangeHandler); + } + /* intentionally don't track this instrumentation */ + ); + } else { + // if onreadystatechange wasn't actually set by the page on this xhr, we + // are free to set our own and capture the breadcrumb + xhr.onreadystatechange = onreadystatechangeHandler; + } + + return origSend.apply(this, arguments); + }; + }, wrappedBuiltIns); + } + + if (autoBreadcrumbs.xhr && supportsFetch()) { + fill(_window$1, 'fetch', function (origFetch) { + return function () { + // preserve arity + // Make a copy of the arguments to prevent deoptimization + // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments + var args = new Array(arguments.length); + + for (var i = 0; i < args.length; ++i) { + args[i] = arguments[i]; + } + + var fetchInput = args[0]; + var method = 'GET'; + var url; + + if (typeof fetchInput === 'string') { + url = fetchInput; + } else if ('Request' in _window$1 && fetchInput instanceof _window$1.Request) { + url = fetchInput.url; + + if (fetchInput.method) { + method = fetchInput.method; + } + } else { + url = '' + fetchInput; + } // if Sentry key appears in URL, don't capture, as it's our own request + + + if (url.indexOf(self._globalKey) !== -1) { + return origFetch.apply(this, args); + } + + if (args[1] && args[1].method) { + method = args[1].method; + } + + var fetchData = { + method: method, + url: url, + status_code: null + }; + return origFetch.apply(this, args).then(function (response) { + fetchData.status_code = response.status; + self.captureBreadcrumb({ + type: 'http', + category: 'fetch', + data: fetchData + }); + return response; + }); + }; + }, wrappedBuiltIns); + } // Capture breadcrumbs from any click that is unhandled / bubbled up all the way + // to the document. Do this before we instrument addEventListener. + + + if (autoBreadcrumbs.dom && this._hasDocument) { + if (_document.addEventListener) { + _document.addEventListener('click', self._breadcrumbEventHandler('click'), false); + + _document.addEventListener('keypress', self._keypressEventHandler(), false); + } else { + // IE8 Compatibility + _document.attachEvent('onclick', self._breadcrumbEventHandler('click')); + + _document.attachEvent('onkeypress', self._keypressEventHandler()); + } + } // record navigation (URL) changes + // NOTE: in Chrome App environment, touching history.pushState, *even inside + // a try/catch block*, will cause Chrome to output an error to console.error + // borrowed from: https://github.com/angular/angular.js/pull/13945/files + + + var chrome = _window$1.chrome; + var isChromePackagedApp = chrome && chrome.app && chrome.app.runtime; + var hasPushAndReplaceState = !isChromePackagedApp && _window$1.history && history.pushState && history.replaceState; + + if (autoBreadcrumbs.location && hasPushAndReplaceState) { + // TODO: remove onpopstate handler on uninstall() + var oldOnPopState = _window$1.onpopstate; + + _window$1.onpopstate = function () { + var currentHref = self._location.href; + + self._captureUrlChange(self._lastHref, currentHref); + + if (oldOnPopState) { + return oldOnPopState.apply(this, arguments); + } + }; + + var historyReplacementFunction = function historyReplacementFunction(origHistFunction) { + // note history.pushState.length is 0; intentionally not declaring + // params to preserve 0 arity + return function () + /* state, title, url */ + { + var url = arguments.length > 2 ? arguments[2] : undefined; // url argument is optional + + if (url) { + // coerce to string (this is what pushState does) + self._captureUrlChange(self._lastHref, url + ''); + } + + return origHistFunction.apply(this, arguments); + }; + }; + + fill(history, 'pushState', historyReplacementFunction, wrappedBuiltIns); + fill(history, 'replaceState', historyReplacementFunction, wrappedBuiltIns); + } + + if (autoBreadcrumbs.console && 'console' in _window$1 && console.log) { + // console + var consoleMethodCallback = function consoleMethodCallback(msg, data) { + self.captureBreadcrumb({ + message: msg, + level: data.level, + category: 'console' + }); + }; + + each(['debug', 'info', 'warn', 'error', 'log'], function (_, level) { + wrapConsoleMethod(console, level, consoleMethodCallback); + }); + } + }, + _restoreBuiltIns: function _restoreBuiltIns() { + // restore any wrapped builtins + var builtin; + + while (this._wrappedBuiltIns.length) { + builtin = this._wrappedBuiltIns.shift(); + var obj = builtin[0], + name = builtin[1], + orig = builtin[2]; + obj[name] = orig; + } + }, + _restoreConsole: function _restoreConsole() { + // eslint-disable-next-line guard-for-in + for (var method in this._originalConsoleMethods) { + this._originalConsole[method] = this._originalConsoleMethods[method]; + } + }, + _drainPlugins: function _drainPlugins() { + var self = this; // FIX ME TODO + + each(this._plugins, function (_, plugin) { + var installer = plugin[0]; + var args = plugin[1]; + installer.apply(self, [self].concat(args)); + }); + }, + _parseDSN: function _parseDSN(str) { + var m = dsnPattern.exec(str), + dsn = {}, + i = 7; + + try { + while (i--) { + dsn[dsnKeys[i]] = m[i] || ''; + } + } catch (e) { + throw new configError('Invalid DSN: ' + str); + } + + if (dsn.pass && !this._globalOptions.allowSecretKey) { + throw new configError('Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key'); + } + + return dsn; + }, + _getGlobalServer: function _getGlobalServer(uri) { + // assemble the endpoint from the uri pieces + var globalServer = '//' + uri.host + (uri.port ? ':' + uri.port : ''); + + if (uri.protocol) { + globalServer = uri.protocol + ':' + globalServer; + } + + return globalServer; + }, + _handleOnErrorStackInfo: function _handleOnErrorStackInfo() { + // if we are intentionally ignoring errors via onerror, bail out + if (!this._ignoreOnError) { + this._handleStackInfo.apply(this, arguments); + } + }, + _handleStackInfo: function _handleStackInfo(stackInfo, options) { + var frames = this._prepareFrames(stackInfo, options); + + this._triggerEvent('handle', { + stackInfo: stackInfo, + options: options + }); + + this._processException(stackInfo.name, stackInfo.message, stackInfo.url, stackInfo.lineno, frames, options); + }, + _prepareFrames: function _prepareFrames(stackInfo, options) { + var self = this; + var frames = []; + + if (stackInfo.stack && stackInfo.stack.length) { + each(stackInfo.stack, function (i, stack) { + var frame = self._normalizeFrame(stack, stackInfo.url); + + if (frame) { + frames.push(frame); + } + }); // e.g. frames captured via captureMessage throw + + if (options && options.trimHeadFrames) { + for (var j = 0; j < options.trimHeadFrames && j < frames.length; j++) { + frames[j].in_app = false; + } + } + } + + frames = frames.slice(0, this._globalOptions.stackTraceLimit); + return frames; + }, + _normalizeFrame: function _normalizeFrame(frame, stackInfoUrl) { + // normalize the frames data + var normalized = { + filename: frame.url, + lineno: frame.line, + colno: frame.column, + function: frame.func || '?' + }; // Case when we don't have any information about the error + // E.g. throwing a string or raw object, instead of an `Error` in Firefox + // Generating synthetic error doesn't add any value here + // + // We should probably somehow let a user know that they should fix their code + + if (!frame.url) { + normalized.filename = stackInfoUrl; // fallback to whole stacks url from onerror handler + } + + normalized.in_app = !( // determine if an exception came from outside of our app + // first we check the global includePaths list. + !!this._globalOptions.includePaths.test && !this._globalOptions.includePaths.test(normalized.filename) || // Now we check for fun, if the function name is Raven or TraceKit + /(Raven|TraceKit)\./.test(normalized['function']) || // finally, we do a last ditch effort and check for raven.min.js + /raven\.(min\.)?js$/.test(normalized.filename)); + return normalized; + }, + _processException: function _processException(type, message, fileurl, lineno, frames, options) { + var prefixedMessage = (type ? type + ': ' : '') + (message || ''); + + if (!!this._globalOptions.ignoreErrors.test && (this._globalOptions.ignoreErrors.test(message) || this._globalOptions.ignoreErrors.test(prefixedMessage))) { + return; + } + + var stacktrace; + + if (frames && frames.length) { + fileurl = frames[0].filename || fileurl; // Sentry expects frames oldest to newest + // and JS sends them as newest to oldest + + frames.reverse(); + stacktrace = { + frames: frames + }; + } else if (fileurl) { + stacktrace = { + frames: [{ + filename: fileurl, + lineno: lineno, + in_app: true + }] + }; + } + + if (!!this._globalOptions.ignoreUrls.test && this._globalOptions.ignoreUrls.test(fileurl)) { + return; + } + + if (!!this._globalOptions.whitelistUrls.test && !this._globalOptions.whitelistUrls.test(fileurl)) { + return; + } + + var data = objectMerge({ + // sentry.interfaces.Exception + exception: { + values: [{ + type: type, + value: message, + stacktrace: stacktrace + }] + }, + culprit: fileurl + }, options); // Fire away! + + this._send(data); + }, + _trimPacket: function _trimPacket(data) { + // For now, we only want to truncate the two different messages + // but this could/should be expanded to just trim everything + var max = this._globalOptions.maxMessageLength; + + if (data.message) { + data.message = truncate(data.message, max); + } + + if (data.exception) { + var exception = data.exception.values[0]; + exception.value = truncate(exception.value, max); + } + + var request = data.request; + + if (request) { + if (request.url) { + request.url = truncate(request.url, this._globalOptions.maxUrlLength); + } + + if (request.Referer) { + request.Referer = truncate(request.Referer, this._globalOptions.maxUrlLength); + } + } + + if (data.breadcrumbs && data.breadcrumbs.values) this._trimBreadcrumbs(data.breadcrumbs); + return data; + }, + + /** + * Truncate breadcrumb values (right now just URLs) + */ + _trimBreadcrumbs: function _trimBreadcrumbs(breadcrumbs) { + // known breadcrumb properties with urls + // TODO: also consider arbitrary prop values that start with (https?)?:// + var urlProps = ['to', 'from', 'url'], + urlProp, + crumb, + data; + + for (var i = 0; i < breadcrumbs.values.length; ++i) { + crumb = breadcrumbs.values[i]; + if (!crumb.hasOwnProperty('data') || !isObject(crumb.data) || objectFrozen(crumb.data)) continue; + data = objectMerge({}, crumb.data); + + for (var j = 0; j < urlProps.length; ++j) { + urlProp = urlProps[j]; + + if (data.hasOwnProperty(urlProp) && data[urlProp]) { + data[urlProp] = truncate(data[urlProp], this._globalOptions.maxUrlLength); + } + } + + breadcrumbs.values[i].data = data; + } + }, + _getHttpData: function _getHttpData() { + if (!this._hasNavigator && !this._hasDocument) return; + var httpData = {}; + + if (this._hasNavigator && _navigator.userAgent) { + httpData.headers = { + 'User-Agent': navigator.userAgent + }; + } // Check in `window` instead of `document`, as we may be in ServiceWorker environment + + + if (_window$1.location && _window$1.location.href) { + httpData.url = _window$1.location.href; + } + + if (this._hasDocument && _document.referrer) { + if (!httpData.headers) httpData.headers = {}; + httpData.headers.Referer = _document.referrer; + } + + return httpData; + }, + _resetBackoff: function _resetBackoff() { + this._backoffDuration = 0; + this._backoffStart = null; + }, + _shouldBackoff: function _shouldBackoff() { + return this._backoffDuration && now() - this._backoffStart < this._backoffDuration; + }, + + /** + * Returns true if the in-process data payload matches the signature + * of the previously-sent data + * + * NOTE: This has to be done at this level because TraceKit can generate + * data from window.onerror WITHOUT an exception object (IE8, IE9, + * other old browsers). This can take the form of an "exception" + * data object with a single frame (derived from the onerror args). + */ + _isRepeatData: function _isRepeatData(current) { + var last = this._lastData; + if (!last || current.message !== last.message || // defined for captureMessage + current.culprit !== last.culprit // defined for captureException/onerror + ) return false; // Stacktrace interface (i.e. from captureMessage) + + if (current.stacktrace || last.stacktrace) { + return isSameStacktrace(current.stacktrace, last.stacktrace); + } else if (current.exception || last.exception) { + // Exception interface (i.e. from captureException/onerror) + return isSameException(current.exception, last.exception); + } + + return true; + }, + _setBackoffState: function _setBackoffState(request) { + // If we are already in a backoff state, don't change anything + if (this._shouldBackoff()) { + return; + } + + var status = request.status; // 400 - project_id doesn't exist or some other fatal + // 401 - invalid/revoked dsn + // 429 - too many requests + + if (!(status === 400 || status === 401 || status === 429)) return; + var retry; + + try { + // If Retry-After is not in Access-Control-Expose-Headers, most + // browsers will throw an exception trying to access it + if (supportsFetch()) { + retry = request.headers.get('Retry-After'); + } else { + retry = request.getResponseHeader('Retry-After'); + } // Retry-After is returned in seconds + + + retry = parseInt(retry, 10) * 1000; + } catch (e) { + /* eslint no-empty:0 */ + } + + this._backoffDuration = retry ? // If Sentry server returned a Retry-After value, use it + retry : // Otherwise, double the last backoff duration (starts at 1 sec) + this._backoffDuration * 2 || 1000; + this._backoffStart = now(); + }, + _send: function _send(data) { + var globalOptions = this._globalOptions; + + var baseData = { + project: this._globalProject, + logger: globalOptions.logger, + platform: 'javascript' + }, + httpData = this._getHttpData(); + + if (httpData) { + baseData.request = httpData; + } // HACK: delete `trimHeadFrames` to prevent from appearing in outbound payload + + + if (data.trimHeadFrames) delete data.trimHeadFrames; + data = objectMerge(baseData, data); // Merge in the tags and extra separately since objectMerge doesn't handle a deep merge + + data.tags = objectMerge(objectMerge({}, this._globalContext.tags), data.tags); + data.extra = objectMerge(objectMerge({}, this._globalContext.extra), data.extra); // Send along our own collected metadata with extra + + data.extra['session:duration'] = now() - this._startTime; + + if (this._breadcrumbs && this._breadcrumbs.length > 0) { + // intentionally make shallow copy so that additions + // to breadcrumbs aren't accidentally sent in this request + data.breadcrumbs = { + values: [].slice.call(this._breadcrumbs, 0) + }; + } + + if (this._globalContext.user) { + // sentry.interfaces.User + data.user = this._globalContext.user; + } // Include the environment if it's defined in globalOptions + + + if (globalOptions.environment) data.environment = globalOptions.environment; // Include the release if it's defined in globalOptions + + if (globalOptions.release) data.release = globalOptions.release; // Include server_name if it's defined in globalOptions + + if (globalOptions.serverName) data.server_name = globalOptions.serverName; // Cleanup empty properties before sending them to the server + + Object.keys(data).forEach(function (key) { + if (data[key] == null || data[key] === '' || isEmptyObject(data[key])) { + delete data[key]; + } + }); + + if (isFunction(globalOptions.dataCallback)) { + data = globalOptions.dataCallback(data) || data; + } // Why?????????? + + + if (!data || isEmptyObject(data)) { + return; + } // Check if the request should be filtered or not + + + if (isFunction(globalOptions.shouldSendCallback) && !globalOptions.shouldSendCallback(data)) { + return; + } // Backoff state: Sentry server previously responded w/ an error (e.g. 429 - too many requests), + // so drop requests until "cool-off" period has elapsed. + + + if (this._shouldBackoff()) { + this._logDebug('warn', 'Raven dropped error due to backoff: ', data); + + return; + } + + if (typeof globalOptions.sampleRate === 'number') { + if (Math.random() < globalOptions.sampleRate) { + this._sendProcessedPayload(data); + } + } else { + this._sendProcessedPayload(data); + } + }, + _getUuid: function _getUuid() { + return uuid4(); + }, + _sendProcessedPayload: function _sendProcessedPayload(data, callback) { + var self = this; + var globalOptions = this._globalOptions; + if (!this.isSetup()) return; // Try and clean up the packet before sending by truncating long values + + data = this._trimPacket(data); // ideally duplicate error testing should occur *before* dataCallback/shouldSendCallback, + // but this would require copying an un-truncated copy of the data packet, which can be + // arbitrarily deep (extra_data) -- could be worthwhile? will revisit + + if (!this._globalOptions.allowDuplicates && this._isRepeatData(data)) { + this._logDebug('warn', 'Raven dropped repeat event: ', data); + + return; + } // Send along an event_id if not explicitly passed. + // This event_id can be used to reference the error within Sentry itself. + // Set lastEventId after we know the error should actually be sent + + + this._lastEventId = data.event_id || (data.event_id = this._getUuid()); // Store outbound payload after trim + + this._lastData = data; + + this._logDebug('debug', 'Raven about to send:', data); + + var auth = { + sentry_version: '7', + sentry_client: 'raven-js/' + this.VERSION, + sentry_key: this._globalKey + }; + + if (this._globalSecret) { + auth.sentry_secret = this._globalSecret; + } + + var exception = data.exception && data.exception.values[0]; // only capture 'sentry' breadcrumb is autoBreadcrumbs is truthy + + if (this._globalOptions.autoBreadcrumbs && this._globalOptions.autoBreadcrumbs.sentry) { + this.captureBreadcrumb({ + category: 'sentry', + message: exception ? (exception.type ? exception.type + ': ' : '') + exception.value : data.message, + event_id: data.event_id, + level: data.level || 'error' // presume error unless specified + + }); + } + + var url = this._globalEndpoint; + + (globalOptions.transport || this._makeRequest).call(this, { + url: url, + auth: auth, + data: data, + options: globalOptions, + onSuccess: function success() { + self._resetBackoff(); + + self._triggerEvent('success', { + data: data, + src: url + }); + + callback && callback(); + }, + onError: function failure(error) { + self._logDebug('error', 'Raven transport failed to send: ', error); + + if (error.request) { + self._setBackoffState(error.request); + } + + self._triggerEvent('failure', { + data: data, + src: url + }); + + error = error || new Error('Raven send failed (no additional details provided)'); + callback && callback(error); + } + }); + }, + _makeRequest: function _makeRequest(opts) { + // Auth is intentionally sent as part of query string (NOT as custom HTTP header) to avoid preflight CORS requests + var url = opts.url + '?' + urlencode(opts.auth); + var evaluatedHeaders = null; + var evaluatedFetchParameters = {}; + + if (opts.options.headers) { + evaluatedHeaders = this._evaluateHash(opts.options.headers); + } + + if (opts.options.fetchParameters) { + evaluatedFetchParameters = this._evaluateHash(opts.options.fetchParameters); + } + + if (supportsFetch()) { + evaluatedFetchParameters.body = stringify_1(opts.data); + var defaultFetchOptions = objectMerge({}, this._fetchDefaults); + var fetchOptions = objectMerge(defaultFetchOptions, evaluatedFetchParameters); + + if (evaluatedHeaders) { + fetchOptions.headers = evaluatedHeaders; + } + + return _window$1.fetch(url, fetchOptions).then(function (response) { + if (response.ok) { + opts.onSuccess && opts.onSuccess(); + } else { + var error = new Error('Sentry error code: ' + response.status); // It's called request only to keep compatibility with XHR interface + // and not add more redundant checks in setBackoffState method + + error.request = response; + opts.onError && opts.onError(error); + } + })['catch'](function () { + opts.onError && opts.onError(new Error('Sentry error code: network unavailable')); + }); + } + + var request = _window$1.XMLHttpRequest && new _window$1.XMLHttpRequest(); + if (!request) return; // if browser doesn't support CORS (e.g. IE7), we are out of luck + + var hasCORS = 'withCredentials' in request || typeof XDomainRequest !== 'undefined'; + if (!hasCORS) return; + + if ('withCredentials' in request) { + request.onreadystatechange = function () { + if (request.readyState !== 4) { + return; + } else if (request.status === 200) { + opts.onSuccess && opts.onSuccess(); + } else if (opts.onError) { + var err = new Error('Sentry error code: ' + request.status); + err.request = request; + opts.onError(err); + } + }; + } else { + request = new XDomainRequest(); // xdomainrequest cannot go http -> https (or vice versa), + // so always use protocol relative + + url = url.replace(/^https?:/, ''); // onreadystatechange not supported by XDomainRequest + + if (opts.onSuccess) { + request.onload = opts.onSuccess; + } + + if (opts.onError) { + request.onerror = function () { + var err = new Error('Sentry error code: XDomainRequest'); + err.request = request; + opts.onError(err); + }; + } + } + + request.open('POST', url); + + if (evaluatedHeaders) { + each(evaluatedHeaders, function (key, value) { + request.setRequestHeader(key, value); + }); + } + + request.send(stringify_1(opts.data)); + }, + _evaluateHash: function _evaluateHash(hash) { + var evaluated = {}; + + for (var key in hash) { + if (hash.hasOwnProperty(key)) { + var value = hash[key]; + evaluated[key] = typeof value === 'function' ? value() : value; + } + } + + return evaluated; + }, + _logDebug: function _logDebug(level) { + if (this._originalConsoleMethods[level] && this.debug) { + // In IE<10 console methods do not have their own 'apply' method + Function.prototype.apply.call(this._originalConsoleMethods[level], this._originalConsole, [].slice.call(arguments, 1)); + } + }, + _mergeContext: function _mergeContext(key, context) { + if (isUndefined(context)) { + delete this._globalContext[key]; + } else { + this._globalContext[key] = objectMerge(this._globalContext[key] || {}, context); + } + } +}; // Deprecations + +Raven$1.prototype.setUser = Raven$1.prototype.setUserContext; +Raven$1.prototype.setReleaseContext = Raven$1.prototype.setRelease; +var raven = Raven$1; + +/** + * Enforces a single instance of the Raven client, and the + * main entry point for Raven. If you are a consumer of the + * Raven library, you SHOULD load this file (vs raven.js). + **/ +// This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) + +var _window = typeof window !== 'undefined' ? window : typeof commonjsGlobal !== 'undefined' ? commonjsGlobal : typeof self !== 'undefined' ? self : {}; + +var _Raven = _window.Raven; +var Raven = new raven(); +/* + * Allow multiple versions of Raven to be installed. + * Strip Raven from the global context and returns the instance. + * + * @return {Raven} + */ + +Raven.noConflict = function () { + _window.Raven = _Raven; + return Raven; +}; + +Raven.afterLoad(); +var singleton = Raven; + +/** + * Angular.js plugin + * + * Provides an $exceptionHandler for Angular.js + */ + +var wrappedCallback$1 = utils.wrappedCallback; // See https://github.com/angular/angular.js/blob/v1.4.7/src/minErr.js + +var angularPattern = /^\[((?:[$a-zA-Z0-9]+:)?(?:[$a-zA-Z0-9]+))\] (.*?)\n?(\S+)$/; +var moduleName = 'ngRaven'; + +function angularPlugin(Raven, angular) { + angular = angular || window.angular; + if (!angular) return; + + function RavenProvider() { + this.$get = ['$window', function ($window) { + return Raven; + }]; + } + + function ExceptionHandlerProvider($provide) { + $provide.decorator('$exceptionHandler', ['Raven', '$delegate', exceptionHandler]); + } + + function exceptionHandler(R, $delegate) { + return function (ex, cause) { + R.captureException(ex, { + extra: { + cause: cause + } + }); + $delegate(ex, cause); + }; + } + + angular.module(moduleName, []).provider('Raven', RavenProvider).config(['$provide', ExceptionHandlerProvider]); + Raven.setDataCallback(wrappedCallback$1(function (data) { + return angularPlugin._normalizeData(data); + })); +} + +angularPlugin._normalizeData = function (data) { + // We only care about mutating an exception + var exception = data.exception; + + if (exception) { + exception = exception.values[0]; + var matches = angularPattern.exec(exception.value); + + if (matches) { + // This type now becomes something like: $rootScope:inprog + exception.type = matches[1]; + exception.value = matches[2]; + data.message = exception.type + ': ' + exception.value; // auto set a new tag specifically for the angular error url + + data.extra.angularDocs = matches[3].substr(0, 250); + } + } + + return data; +}; + +angularPlugin.moduleName = moduleName; +var angular = angularPlugin; + +/** + * Vue.js 2.0 plugin + * + */ +function formatComponentName(vm) { + if (vm.$root === vm) { + return 'root instance'; + } + + var name = vm._isVue ? vm.$options.name || vm.$options._componentTag : vm.name; + return (name ? 'component <' + name + '>' : 'anonymous component') + (vm._isVue && vm.$options.__file ? ' at ' + vm.$options.__file : ''); +} + +function vuePlugin(Raven, Vue) { + Vue = Vue || window.Vue; // quit if Vue isn't on the page + + if (!Vue || !Vue.config) return; + var _oldOnError = Vue.config.errorHandler; + + Vue.config.errorHandler = function VueErrorHandler(error, vm, info) { + var metaData = {}; // vm and lifecycleHook are not always available + + if (Object.prototype.toString.call(vm) === '[object Object]') { + metaData.componentName = formatComponentName(vm); + metaData.propsData = vm.$options.propsData; + } + + if (typeof info !== 'undefined') { + metaData.lifecycleHook = info; + } + + Raven.captureException(error, { + extra: metaData + }); + + if (typeof _oldOnError === 'function') { + _oldOnError.call(this, error, vm, info); + } + }; +} + +var vue = vuePlugin; + +/* This file was generated by './scripts/generate-plugin-combinations.js'! */ + +singleton.addPlugin(angular).addPlugin(vue); +var angular_vue = {}; + +return angular_vue; + +}))); diff --git a/dist/angular,vue/raven.min.js b/dist/angular,vue/raven.min.js new file mode 100644 index 000000000000..26a0cf25b73c --- /dev/null +++ b/dist/angular,vue/raven.min.js @@ -0,0 +1,3 @@ +/*! Raven.js 3.22.2 (1b6187b) | github.com/getsentry/raven-js */ +!function(a,b){"object"==typeof exports&&"undefined"!=typeof module?module.exports=b():"function"==typeof define&&define.amd?define(b):a.Raven=b()}(this,function(){"use strict";function a(a,b){return b={exports:{}},a(b,b.exports),b.exports}function b(a){return(b="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(a){return typeof a}:function(a){return a&&"function"==typeof Symbol&&a.constructor===Symbol&&a!==Symbol.prototype?"symbol":typeof a})(a)}function c(a){return"object"===b(a)&&null!==a}function d(a){switch({}.toString.call(a)){case"[object Error]":return!0;case"[object Exception]":return!0;case"[object DOMException]":return!0;default:return a instanceof Error}}function e(a){return l()&&"[object ErrorEvent]"==={}.toString.call(a)}function f(a){return void 0===a}function g(a){return"function"==typeof a}function h(a){return"[object Object]"===Object.prototype.toString.call(a)}function i(a){return"[object String]"===Object.prototype.toString.call(a)}function j(a){return"[object Array]"===Object.prototype.toString.call(a)}function k(a){if(!h(a))return!1;for(var b in a)if(a.hasOwnProperty(b))return!1;return!0}function l(){try{return new ErrorEvent(""),!0}catch(a){return!1}}function m(){if(!("fetch"in P))return!1;try{return new Headers,new Request(""),new Response,!0}catch(a){return!1}}function n(a){function b(b,c){var d=a(b)||b;return c?c(d)||d:d}return b}function o(a,b){var c,d;if(f(a.length))for(c in a)s(a,c)&&b.call(null,c,a[c]);else if(d=a.length)for(c=0;c ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function y(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&i(b))for(c=b.split(/\s+/),f=0;f":"anonymous component")+(a._isVue&&a.$options.__file?" at "+a.$options.__file:"")}function M(a,b){if(b=b||window.Vue,b&&b.config){var c=b.config.errorHandler;b.config.errorHandler=function(b,d,e){var f={};"[object Object]"===Object.prototype.toString.call(d)&&(f.componentName=L(d),f.propsData=d.$options.propsData),"undefined"!=typeof e&&(f.lifecycleHook=e),a.captureException(b,{extra:f}),"function"==typeof c&&c.call(this,b,d,e)}}}var N="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{},O=Object.setPrototypeOf||function(a,b){return a.C=b,a},P=("object"==typeof Reflect&&Reflect.construct||function(a,b,c){var d,e=[null];return e.push.apply(e,b),d=a.bind.apply(a,e),O(new d,c.prototype)},"undefined"!=typeof window?window:"undefined"!=typeof N?N:"undefined"!=typeof self?self:{}),Q={isObject:c,isError:d,isErrorEvent:e,isUndefined:f,isFunction:g,isPlainObject:h,isString:i,isArray:j,isEmptyObject:k,supportsErrorEvent:l,supportsFetch:m,wrappedCallback:n,each:o,objectMerge:p,truncate:r,objectFrozen:q,hasKey:s,joinRegExp:t,urlencode:u,uuid4:w,htmlTreeAsString:x,htmlElementAsString:y,isSameException:B,isSameStacktrace:C,parseUrl:v,fill:D,safeJoin:E},R={collectWindowErrors:!0,debug:!1},S="undefined"!=typeof window?window:"undefined"!=typeof N?N:"undefined"!=typeof self?self:{},T=[].slice,U="?",V=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;R.report=function(){function a(a){f(),l.push(a)}function b(a){for(var b=l.length-1;b>=0;--b)l[b]===a&&l.splice(b,1)}function c(){g(),l=[]}function d(a,b){var c=null;if(!b||R.collectWindowErrors){for(var d in l)if(l.hasOwnProperty(d))try{l[d].apply(null,[a].concat(T.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function e(a,b,c,e,f){var g=null,i=Q.isErrorEvent(f)?f.error:f,k=Q.isErrorEvent(a)?a.message:a;if(o)R.computeStackTrace.augmentStackTraceWithInitialElement(o,b,c,k),h();else if(i&&Q.isError(i))g=R.computeStackTrace(i),d(g,!0);else{var l,m={url:b,line:c,column:e},n=void 0;if("[object String]"==={}.toString.call(k)){var l=k.match(V);l&&(n=l[1],k=l[2])}m.func=U,g={name:n,message:k,url:F(),stack:[m]},d(g,!0)}return!!j&&j.apply(this,arguments)}function f(){k||(j=S.onerror,S.onerror=e,k=!0)}function g(){k&&(S.onerror=j,k=!1,j=void 0)}function h(){var a=o,b=m;m=null,o=null,n=null,d.apply(null,[a,!1].concat(b))}function i(a,b){var c=T.call(arguments,1);if(o){if(n===a)return;h()}var d=R.computeStackTrace(a);if(o=d,n=a,m=c,setTimeout(function(){n===a&&h()},d.incomplete?2e3:0),b!==!1)throw a}var j,k,l=[],m=null,n=null,o=null;return i.subscribe=a,i.unsubscribe=b,i.uninstall=c,i}(),R.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,d,e=/^\s*at (.*?) ?\(((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,f=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|\[native).*?|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,g=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,h=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,i=/\((\S*)(?::(\d+))(?::(\d+))\)/,j=a.stack.split("\n"),k=[],l=(/^(.*) is undefined$/.exec(a.message),0),m=j.length;l eval")>-1;o&&(b=h.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==l||c[5]||"undefined"==typeof a.columnNumber||(k[0].column=a.columnNumber+1),d={url:c[3],func:c[1]||U,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}!d.func&&d.line&&(d.func=U),k.push(d)}return k.length?{name:a.name,message:a.message,url:F(),stack:k}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=U),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,e){for(var f,g,h=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,i=[],j={},k=!1,l=c.caller;l&&!k;l=l.caller)if(l!==d&&l!==R.report){if(g={url:null,func:U,line:null,column:null},l.name?g.func=l.name:(f=h.exec(l.toString()))&&(g.func=f[1]),"undefined"==typeof g.func)try{g.func=f.input.substring(0,f.input.indexOf("{"))}catch(m){}j[""+l]?k=!0:j[""+l]=!0,i.push(g)}e&&i.splice(0,e);var n={name:a.name,message:a.message,url:F(),stack:i};return b(n,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),n}function d(b,d){var e=null;d=null==d?0:+d;try{if(e=a(b))return e}catch(f){if(R.debug)throw f}try{if(e=c(b,d+1))return e}catch(f){if(R.debug)throw f}return{name:b.name,message:b.message,url:F()}}return d.augmentStackTraceWithInitialElement=b,d.computeStackTraceFromStackProp=a,d}();var W=R,X=a(function(a,b){function c(a,b){for(var c=0;c0){var i=c(d,this);~i?d.splice(i+1):d.push(this),~i?f.splice(i,1/0,g):f.push(g),~c(d,h)&&(h=b.call(this,g,h))}else d.push(h);return null==a?h instanceof Error?e(h):h:a.call(this,g,h)}}b=a.exports=d,b.getSerialize=f});G.prototype=new Error,G.prototype.constructor=G;var Y=G,Z=function(a,b,c){var d=a[b],e=a;if(b in a){var f="warn"===b?"warning":b;a[b]=function(){var a=[].slice.call(arguments),g=Q.safeJoin(a," "),h={level:f,logger:"console",extra:{arguments:a}};"assert"===b?a[0]===!1&&(g="Assertion failed: "+(Q.safeJoin(a.slice(1)," ")||"console.assert"),h.extra.arguments=a.slice(1),c&&c(g,h)):c&&c(g,h),d&&Function.prototype.apply.call(d,e,a)}}},$={wrapMethod:Z},_=Q.isError,aa=Q.isObject,ba=Q.isErrorEvent,ca=Q.isUndefined,da=Q.isFunction,ea=Q.isString,fa=Q.isArray,ga=Q.isEmptyObject,ha=Q.each,ia=Q.objectMerge,ja=Q.truncate,ka=Q.objectFrozen,la=Q.hasKey,ma=Q.joinRegExp,na=Q.urlencode,oa=Q.uuid4,pa=Q.htmlTreeAsString,qa=Q.isSameException,ra=Q.isSameStacktrace,sa=Q.parseUrl,ta=Q.fill,ua=Q.supportsFetch,va=$.wrapMethod,wa="source protocol user pass host port path".split(" "),xa=/^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/,ya="undefined"!=typeof window?window:"undefined"!=typeof N?N:"undefined"!=typeof self?self:{},za=ya.document,Aa=ya.navigator;J.prototype={VERSION:"3.22.2",debug:!1,TraceKit:W,config:function(a,b){var c=this;if(c.i)return this.D("error","Error: Raven has already been configured"),c;if(!a)return c;var d=c.m;b&&ha(b,function(a,b){"tags"===a||"extra"===a||"user"===a?c.l[a]=b:d[a]=b}),c.setDSN(a),d.ignoreErrors.push(/^Script error\.?$/),d.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/),d.ignoreErrors=ma(d.ignoreErrors),d.ignoreUrls=!!d.ignoreUrls.length&&ma(d.ignoreUrls),d.whitelistUrls=!!d.whitelistUrls.length&&ma(d.whitelistUrls),d.includePaths=ma(d.includePaths),d.maxBreadcrumbs=Math.max(0,Math.min(d.maxBreadcrumbs||100,100));var e={xhr:!0,console:!0,dom:!0,location:!0,sentry:!0},f=d.autoBreadcrumbs;"[object Object]"==={}.toString.call(f)?f=ia(e,f):f!==!1&&(f=e),d.autoBreadcrumbs=f;var g={tryCatch:!0},h=d.instrument;return"[object Object]"==={}.toString.call(h)?h=ia(g,h):h!==!1&&(h=g),d.instrument=h,W.collectWindowErrors=!!d.collectWindowErrors,c},install:function(){var a=this;return a.isSetup()&&!a.p&&(W.report.subscribe(function(){a.E.apply(a,arguments)}),a.F(),a.m.instrument&&a.m.instrument.tryCatch&&a.G(),a.m.autoBreadcrumbs&&a.H(),a.I(),a.p=!0),Error.stackTraceLimit=a.m.stackTraceLimit,this},setDSN:function(a){var b=this,c=b.J(a),d=c.path.lastIndexOf("/"),e=c.path.substr(1,d);b.K=a,b.j=c.user,b.L=c.pass&&c.pass.substr(1),b.k=c.path.substr(d+1),b.i=b.M(c),b.N=b.i+"/"+e+"api/"+b.k+"/store/",this.A()},context:function(a,b,c){return da(a)&&(c=b||[],b=a,a=void 0),this.wrap(a,b).apply(this,c)},wrap:function(a,b,c){function d(){var d=[],f=arguments.length,g=!a||a&&a.deep!==!1;for(c&&da(c)&&c.apply(this,arguments);f--;)d[f]=g?e.wrap(a,arguments[f]):arguments[f];try{return b.apply(this,d)}catch(h){throw e.O(),e.captureException(h,a),h}}var e=this;if(ca(b)&&!da(a))return a;if(da(a)&&(b=a,a=void 0),!da(b))return b;try{if(b.a)return b;if(b.P)return b.P}catch(f){return b}for(var g in b)la(b,g)&&(d[g]=b[g]);return d.prototype=b.prototype,b.P=d,d.a=!0,d.b=b,d},uninstall:function(){return W.report.uninstall(),this.Q(),this.R(),this.S(),Error.stackTraceLimit=this.q,this.p=!1,this},captureException:function(a,b){b=ia({trimHeadFrames:0},b?b:{});var c=!_(a),d=!ba(a),e=ba(a)&&!a.error;if(c&&d||e)return this.captureMessage(a,ia(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}));ba(a)&&(a=a.error),this.f=a;try{var f=W.computeStackTrace(a);this.T(f,b)}catch(g){if(a!==g)throw g}return this},captureMessage:function(a,b){if(!this.m.ignoreErrors.test||!this.m.ignoreErrors.test(a)){b=b||{};var c,d=ia({message:a+""},b);try{throw new Error(a)}catch(e){c=e}c.name=null;var f=W.computeStackTrace(c),g=fa(f.stack)&&f.stack[1],h=g&&g.url||"";if((!this.m.ignoreUrls.test||!this.m.ignoreUrls.test(h))&&(!this.m.whitelistUrls.test||this.m.whitelistUrls.test(h))){if(this.m.stacktrace||b&&b.stacktrace){b=ia({fingerprint:a,trimHeadFrames:(b.trimHeadFrames||0)+1},b);var i=this.U(f,b);d.stacktrace={frames:i.reverse()}}return this.V(d),this}}},captureBreadcrumb:function(a){var b=ia({timestamp:H()/1e3},a);if(da(this.m.breadcrumbCallback)){var c=this.m.breadcrumbCallback(b);if(aa(c)&&!ga(c))b=c;else if(c===!1)return this}return this.w.push(b),this.w.length>this.m.maxBreadcrumbs&&this.w.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.t.push([a,b]),this.p&&this.I(),this},setUserContext:function(a){return this.l.user=a,this},setExtraContext:function(a){return this.W("extra",a),this},setTagsContext:function(a){return this.W("tags",a),this},clearContext:function(){return this.l={},this},getContext:function(){return JSON.parse(X(this.l))},setEnvironment:function(a){return this.m.environment=a,this},setRelease:function(a){return this.m.release=a,this},setDataCallback:function(a){var b=this.m.dataCallback;return this.m.dataCallback=I(b,a),this},setBreadcrumbCallback:function(a){var b=this.m.breadcrumbCallback;return this.m.breadcrumbCallback=I(b,a),this},setShouldSendCallback:function(a){var b=this.m.shouldSendCallback;return this.m.shouldSendCallback=I(b,a),this},setTransport:function(a){return this.m.transport=a,this},lastException:function(){return this.f},lastEventId:function(){return this.h},isSetup:function(){return!!this.c&&(!!this.i||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.D("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=ya.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(za){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new Y("Missing eventId");var c=a.dsn||this.K;if(!c)throw new Y("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.l.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.M(this.J(c)),h=za.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(za.head||za.body).appendChild(h)}},O:function(){var a=this;this.o+=1,setTimeout(function(){a.o-=1})},X:function(a,b){var c,d;if(this.d){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),za.createEvent?(c=za.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=za.createEventObject(),c.eventType=a);for(d in b)la(b,d)&&(c[d]=b[d]);if(za.createEvent)za.dispatchEvent(c);else try{za.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},Y:function(a){var b=this;return function(c){if(b.Z=null,b.x!==c){b.x=c;var d;try{d=pa(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},$:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.Z;g||a.Y("input")(c),clearTimeout(g),a.Z=setTimeout(function(){a.Z=null},b)}}},_:function(a,b){var c=sa(this.y.href),d=sa(b),e=sa(a);this.z=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},F:function(){var a=this;a.aa=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.a?a.aa.apply(this.b,arguments):a.aa.apply(this,arguments)}},Q:function(){this.aa&&(Function.prototype.toString=this.aa)},G:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b._(b.z,c+""),a.apply(this,arguments)}};ta(history,"pushState",j,d),ta(history,"replaceState",j,d)}if(c.console&&"console"in ya&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};ha(["debug","info","warn","error","log"],function(a,b){va(console,b,k)})}},R:function(){for(var a;this.v.length;){a=this.v.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},S:function(){for(var a in this.s)this.r[a]=this.s[a]},I:function(){var a=this;ha(this.t,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},J:function(a){var b=xa.exec(a),c={},d=7;try{for(;d--;)c[wa[d]]=b[d]||""}catch(e){throw new Y("Invalid DSN: "+a)}if(c.pass&&!this.m.allowSecretKey)throw new Y("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},M:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},E:function(){this.o||this.T.apply(this,arguments)},T:function(a,b){var c=this.U(a,b);this.X("handle",{stackInfo:a,options:b}),this.ca(a.name,a.message,a.url,a.lineno,c,b)},U:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(ha(a.stack,function(b,e){var f=c.da(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.w,0)}),this.l.user&&(a.user=this.l.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||ga(a[b]))&&delete a[b]}),da(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!ga(a)&&(!da(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.ja()?void this.D("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() href parsing trick because React Native and other +// environments where DOM might not be available + + +function parseUrl$1(url) { + if (typeof url !== 'string') return {}; + var match = url.match(/^(([^:\/?#]+):)?(\/\/([^\/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?$/); // coerce to undefined values to empty string so we don't get 'undefined' + + var query = match[6] || ''; + var fragment = match[8] || ''; + return { + protocol: match[2], + host: match[4], + path: match[5], + relative: match[5] + query + fragment // everything minus origin + + }; +} + +function uuid4$1() { + var crypto = _window$3.crypto || _window$3.msCrypto; + + if (!isUndefined$1(crypto) && crypto.getRandomValues) { + // Use window.crypto API if available + // eslint-disable-next-line no-undef + var arr = new Uint16Array(8); + crypto.getRandomValues(arr); // set 4 in byte 7 + + arr[3] = arr[3] & 0xfff | 0x4000; // set 2 most significant bits of byte 9 to '10' + + arr[4] = arr[4] & 0x3fff | 0x8000; + + var pad = function pad(num) { + var v = num.toString(16); + + while (v.length < 4) { + v = '0' + v; + } + + return v; + }; + + return pad(arr[0]) + pad(arr[1]) + pad(arr[2]) + pad(arr[3]) + pad(arr[4]) + pad(arr[5]) + pad(arr[6]) + pad(arr[7]); + } else { + // http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/2117523#2117523 + return 'xxxxxxxxxxxx4xxxyxxxxxxxxxxxxxxx'.replace(/[xy]/g, function (c) { + var r = Math.random() * 16 | 0, + v = c === 'x' ? r : r & 0x3 | 0x8; + return v.toString(16); + }); + } +} +/** + * Given a child DOM element, returns a query-selector statement describing that + * and its ancestors + * e.g. [HTMLElement] => body > div > input#foo.btn[name=baz] + * @param elem + * @returns {string} + */ + + +function htmlTreeAsString$1(elem) { + /* eslint no-extra-parens:0*/ + var MAX_TRAVERSE_HEIGHT = 5, + MAX_OUTPUT_LEN = 80, + out = [], + height = 0, + len = 0, + separator = ' > ', + sepLength = separator.length, + nextStr; + + while (elem && height++ < MAX_TRAVERSE_HEIGHT) { + nextStr = htmlElementAsString(elem); // bail out if + // - nextStr is the 'html' element + // - the length of the string that would be created exceeds MAX_OUTPUT_LEN + // (ignore this limit if we are on the first iteration) + + if (nextStr === 'html' || height > 1 && len + out.length * sepLength + nextStr.length >= MAX_OUTPUT_LEN) { + break; + } + + out.push(nextStr); + len += nextStr.length; + elem = elem.parentNode; + } + + return out.reverse().join(separator); +} +/** + * Returns a simple, query-selector representation of a DOM element + * e.g. [HTMLElement] => input#foo.btn[name=baz] + * @param HTMLElement + * @returns {string} + */ + + +function htmlElementAsString(elem) { + var out = [], + className, + classes, + key, + attr, + i; + + if (!elem || !elem.tagName) { + return ''; + } + + out.push(elem.tagName.toLowerCase()); + + if (elem.id) { + out.push('#' + elem.id); + } + + className = elem.className; + + if (className && isString$1(className)) { + classes = className.split(/\s+/); + + for (i = 0; i < classes.length; i++) { + out.push('.' + classes[i]); + } + } + + var attrWhitelist = ['type', 'name', 'title', 'alt']; + + for (i = 0; i < attrWhitelist.length; i++) { + key = attrWhitelist[i]; + attr = elem.getAttribute(key); + + if (attr) { + out.push('[' + key + '="' + attr + '"]'); + } + } + + return out.join(''); +} +/** + * Returns true if either a OR b is truthy, but not both + */ + + +function isOnlyOneTruthy(a, b) { + return !!(!!a ^ !!b); +} +/** + * Returns true if both parameters are undefined + */ + + +function isBothUndefined(a, b) { + return isUndefined$1(a) && isUndefined$1(b); +} +/** + * Returns true if the two input exception interfaces have the same content + */ + + +function isSameException$1(ex1, ex2) { + if (isOnlyOneTruthy(ex1, ex2)) return false; + ex1 = ex1.values[0]; + ex2 = ex2.values[0]; + if (ex1.type !== ex2.type || ex1.value !== ex2.value) return false; // in case both stacktraces are undefined, we can't decide so default to false + + if (isBothUndefined(ex1.stacktrace, ex2.stacktrace)) return false; + return isSameStacktrace$1(ex1.stacktrace, ex2.stacktrace); +} +/** + * Returns true if the two input stack trace interfaces have the same content + */ + + +function isSameStacktrace$1(stack1, stack2) { + if (isOnlyOneTruthy(stack1, stack2)) return false; + var frames1 = stack1.frames; + var frames2 = stack2.frames; // Exit early if frame count differs + + if (frames1.length !== frames2.length) return false; // Iterate through every frame; bail out if anything differs + + var a, b; + + for (var i = 0; i < frames1.length; i++) { + a = frames1[i]; + b = frames2[i]; + if (a.filename !== b.filename || a.lineno !== b.lineno || a.colno !== b.colno || a['function'] !== b['function']) return false; + } + + return true; +} +/** + * Polyfill a method + * @param obj object e.g. `document` + * @param name method name present on object e.g. `addEventListener` + * @param replacement replacement function + * @param track {optional} record instrumentation to an array + */ + + +function fill$1(obj, name, replacement, track) { + var orig = obj[name]; + obj[name] = replacement(orig); + obj[name].__raven__ = true; + obj[name].__orig__ = orig; + + if (track) { + track.push([obj, name, orig]); + } +} +/** + * Join values in array + * @param input array of values to be joined together + * @param delimiter string to be placed in-between values + * @returns {string} + */ + + +function safeJoin(input, delimiter) { + if (!isArray$1(input)) return ''; + var output = []; + + for (var i = 0; i < input.length; i++) { + try { + output.push(String(input[i])); + } catch (e) { + output.push('[value cannot be serialized]'); + } + } + + return output.join(delimiter); +} + +var utils = { + isObject: isObject$1, + isError: isError$1, + isErrorEvent: isErrorEvent$1, + isUndefined: isUndefined$1, + isFunction: isFunction$1, + isPlainObject: isPlainObject, + isString: isString$1, + isArray: isArray$1, + isEmptyObject: isEmptyObject$1, + supportsErrorEvent: supportsErrorEvent, + supportsFetch: supportsFetch$1, + wrappedCallback: wrappedCallback, + each: each$1, + objectMerge: objectMerge$1, + truncate: truncate$1, + objectFrozen: objectFrozen$1, + hasKey: hasKey$1, + joinRegExp: joinRegExp$1, + urlencode: urlencode$1, + uuid4: uuid4$1, + htmlTreeAsString: htmlTreeAsString$1, + htmlElementAsString: htmlElementAsString, + isSameException: isSameException$1, + isSameStacktrace: isSameStacktrace$1, + parseUrl: parseUrl$1, + fill: fill$1, + safeJoin: safeJoin +}; + +/* + TraceKit - Cross brower stack traces + + This was originally forked from github.com/occ/TraceKit, but has since been + largely re-written and is now maintained as part of raven-js. Tests for + this are in test/vendor. + + MIT license +*/ + +var TraceKit = { + collectWindowErrors: true, + debug: false +}; // This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) + +var _window$2 = typeof window !== 'undefined' ? window : typeof commonjsGlobal !== 'undefined' ? commonjsGlobal : typeof self !== 'undefined' ? self : {}; // global reference to slice + + +var _slice = [].slice; +var UNKNOWN_FUNCTION = '?'; // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error#Error_types + +var ERROR_TYPES_RE = /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/; + +function getLocationHref() { + if (typeof document === 'undefined' || document.location == null) return ''; + return document.location.href; +} +/** + * TraceKit.report: cross-browser processing of unhandled exceptions + * + * Syntax: + * TraceKit.report.subscribe(function(stackInfo) { ... }) + * TraceKit.report.unsubscribe(function(stackInfo) { ... }) + * TraceKit.report(exception) + * try { ...code... } catch(ex) { TraceKit.report(ex); } + * + * Supports: + * - Firefox: full stack trace with line numbers, plus column number + * on top frame; column number is not guaranteed + * - Opera: full stack trace with line and column numbers + * - Chrome: full stack trace with line and column numbers + * - Safari: line and column number for the top frame only; some frames + * may be missing, and column number is not guaranteed + * - IE: line and column number for the top frame only; some frames + * may be missing, and column number is not guaranteed + * + * In theory, TraceKit should work on all of the following versions: + * - IE5.5+ (only 8.0 tested) + * - Firefox 0.9+ (only 3.5+ tested) + * - Opera 7+ (only 10.50 tested; versions 9 and earlier may require + * Exceptions Have Stacktrace to be enabled in opera:config) + * - Safari 3+ (only 4+ tested) + * - Chrome 1+ (only 5+ tested) + * - Konqueror 3.5+ (untested) + * + * Requires TraceKit.computeStackTrace. + * + * Tries to catch all unhandled exceptions and report them to the + * subscribed handlers. Please note that TraceKit.report will rethrow the + * exception. This is REQUIRED in order to get a useful stack trace in IE. + * If the exception does not reach the top of the browser, you will only + * get a stack trace from the point where TraceKit.report was called. + * + * Handlers receive a stackInfo object as described in the + * TraceKit.computeStackTrace docs. + */ + + +TraceKit.report = function reportModuleWrapper() { + var handlers = [], + lastArgs = null, + lastException = null, + lastExceptionStack = null; + /** + * Add a crash handler. + * @param {Function} handler + */ + + function subscribe(handler) { + installGlobalHandler(); + handlers.push(handler); + } + /** + * Remove a crash handler. + * @param {Function} handler + */ + + + function unsubscribe(handler) { + for (var i = handlers.length - 1; i >= 0; --i) { + if (handlers[i] === handler) { + handlers.splice(i, 1); + } + } + } + /** + * Remove all crash handlers. + */ + + + function unsubscribeAll() { + uninstallGlobalHandler(); + handlers = []; + } + /** + * Dispatch stack information to all handlers. + * @param {Object.} stack + */ + + + function notifyHandlers(stack, isWindowError) { + var exception = null; + + if (isWindowError && !TraceKit.collectWindowErrors) { + return; + } + + for (var i in handlers) { + if (handlers.hasOwnProperty(i)) { + try { + handlers[i].apply(null, [stack].concat(_slice.call(arguments, 2))); + } catch (inner) { + exception = inner; + } + } + } + + if (exception) { + throw exception; + } + } + + var _oldOnerrorHandler, _onErrorHandlerInstalled; + /** + * Ensures all global unhandled exceptions are recorded. + * Supported by Gecko and IE. + * @param {string} msg Error message. + * @param {string} url URL of script that generated the exception. + * @param {(number|string)} lineNo The line number at which the error + * occurred. + * @param {?(number|string)} colNo The column number at which the error + * occurred. + * @param {?Error} ex The actual Error object. + */ + + + function traceKitWindowOnError(msg, url, lineNo, colNo, ex) { + var stack = null; // If 'ex' is ErrorEvent, get real Error from inside + + var exception = utils.isErrorEvent(ex) ? ex.error : ex; // If 'msg' is ErrorEvent, get real message from inside + + var message = utils.isErrorEvent(msg) ? msg.message : msg; + + if (lastExceptionStack) { + TraceKit.computeStackTrace.augmentStackTraceWithInitialElement(lastExceptionStack, url, lineNo, message); + processLastException(); + } else if (exception && utils.isError(exception)) { + // non-string `exception` arg; attempt to extract stack trace + // New chrome and blink send along a real error object + // Let's just report that like a normal error. + // See: https://mikewest.org/2013/08/debugging-runtime-errors-with-window-onerror + stack = TraceKit.computeStackTrace(exception); + notifyHandlers(stack, true); + } else { + var location = { + url: url, + line: lineNo, + column: colNo + }; + var name = undefined; + var groups; + + if ({}.toString.call(message) === '[object String]') { + var groups = message.match(ERROR_TYPES_RE); + + if (groups) { + name = groups[1]; + message = groups[2]; + } + } + + location.func = UNKNOWN_FUNCTION; + stack = { + name: name, + message: message, + url: getLocationHref(), + stack: [location] + }; + notifyHandlers(stack, true); + } + + if (_oldOnerrorHandler) { + return _oldOnerrorHandler.apply(this, arguments); + } + + return false; + } + + function installGlobalHandler() { + if (_onErrorHandlerInstalled) { + return; + } + + _oldOnerrorHandler = _window$2.onerror; + _window$2.onerror = traceKitWindowOnError; + _onErrorHandlerInstalled = true; + } + + function uninstallGlobalHandler() { + if (!_onErrorHandlerInstalled) { + return; + } + + _window$2.onerror = _oldOnerrorHandler; + _onErrorHandlerInstalled = false; + _oldOnerrorHandler = undefined; + } + + function processLastException() { + var _lastExceptionStack = lastExceptionStack, + _lastArgs = lastArgs; + lastArgs = null; + lastExceptionStack = null; + lastException = null; + notifyHandlers.apply(null, [_lastExceptionStack, false].concat(_lastArgs)); + } + /** + * Reports an unhandled Error to TraceKit. + * @param {Error} ex + * @param {?boolean} rethrow If false, do not re-throw the exception. + * Only used for window.onerror to not cause an infinite loop of + * rethrowing. + */ + + + function report(ex, rethrow) { + var args = _slice.call(arguments, 1); + + if (lastExceptionStack) { + if (lastException === ex) { + return; // already caught by an inner catch block, ignore + } else { + processLastException(); + } + } + + var stack = TraceKit.computeStackTrace(ex); + lastExceptionStack = stack; + lastException = ex; + lastArgs = args; // If the stack trace is incomplete, wait for 2 seconds for + // slow slow IE to see if onerror occurs or not before reporting + // this exception; otherwise, we will end up with an incomplete + // stack trace + + setTimeout(function () { + if (lastException === ex) { + processLastException(); + } + }, stack.incomplete ? 2000 : 0); + + if (rethrow !== false) { + throw ex; // re-throw to propagate to the top level (and cause window.onerror) + } + } + + report.subscribe = subscribe; + report.unsubscribe = unsubscribe; + report.uninstall = unsubscribeAll; + return report; +}(); +/** + * TraceKit.computeStackTrace: cross-browser stack traces in JavaScript + * + * Syntax: + * s = TraceKit.computeStackTrace(exception) // consider using TraceKit.report instead (see below) + * Returns: + * s.name - exception name + * s.message - exception message + * s.stack[i].url - JavaScript or HTML file URL + * s.stack[i].func - function name, or empty for anonymous functions (if guessing did not work) + * s.stack[i].args - arguments passed to the function, if known + * s.stack[i].line - line number, if known + * s.stack[i].column - column number, if known + * + * Supports: + * - Firefox: full stack trace with line numbers and unreliable column + * number on top frame + * - Opera 10: full stack trace with line and column numbers + * - Opera 9-: full stack trace with line numbers + * - Chrome: full stack trace with line and column numbers + * - Safari: line and column number for the topmost stacktrace element + * only + * - IE: no line numbers whatsoever + * + * Tries to guess names of anonymous functions by looking for assignments + * in the source code. In IE and Safari, we have to guess source file names + * by searching for function bodies inside all page scripts. This will not + * work for scripts that are loaded cross-domain. + * Here be dragons: some function names may be guessed incorrectly, and + * duplicate functions may be mismatched. + * + * TraceKit.computeStackTrace should only be used for tracing purposes. + * Logging of unhandled exceptions should be done with TraceKit.report, + * which builds on top of TraceKit.computeStackTrace and provides better + * IE support by utilizing the window.onerror event to retrieve information + * about the top of the stack. + * + * Note: In IE and Safari, no stack trace is recorded on the Error object, + * so computeStackTrace instead walks its *own* chain of callers. + * This means that: + * * in Safari, some methods may be missing from the stack trace; + * * in IE, the topmost function in the stack trace will always be the + * caller of computeStackTrace. + * + * This is okay for tracing (because you are likely to be calling + * computeStackTrace from the function you want to be the topmost element + * of the stack trace anyway), but not okay for logging unhandled + * exceptions (because your catch block will likely be far away from the + * inner function that actually caused the exception). + * + */ + + +TraceKit.computeStackTrace = function computeStackTraceWrapper() { + // Contents of Exception in various browsers. + // + // SAFARI: + // ex.message = Can't find variable: qq + // ex.line = 59 + // ex.sourceId = 580238192 + // ex.sourceURL = http://... + // ex.expressionBeginOffset = 96 + // ex.expressionCaretOffset = 98 + // ex.expressionEndOffset = 98 + // ex.name = ReferenceError + // + // FIREFOX: + // ex.message = qq is not defined + // ex.fileName = http://... + // ex.lineNumber = 59 + // ex.columnNumber = 69 + // ex.stack = ...stack trace... (see the example below) + // ex.name = ReferenceError + // + // CHROME: + // ex.message = qq is not defined + // ex.name = ReferenceError + // ex.type = not_defined + // ex.arguments = ['aa'] + // ex.stack = ...stack trace... + // + // INTERNET EXPLORER: + // ex.message = ... + // ex.name = ReferenceError + // + // OPERA: + // ex.message = ...message... (see the example below) + // ex.name = ReferenceError + // ex.opera#sourceloc = 11 (pretty much useless, duplicates the info in ex.message) + // ex.stacktrace = n/a; see 'opera:config#UserPrefs|Exceptions Have Stacktrace' + + /** + * Computes stack trace information from the stack property. + * Chrome and Gecko use this property. + * @param {Error} ex + * @return {?Object.} Stack trace information. + */ + function computeStackTraceFromStackProp(ex) { + if (typeof ex.stack === 'undefined' || !ex.stack) return; + var chrome = /^\s*at (.*?) ?\(((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i, + gecko = /^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|\[native).*?|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i, + winjs = /^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i, + // Used to additionally parse URL/line/column from eval frames + geckoEval = /(\S+) line (\d+)(?: > eval line \d+)* > eval/i, + chromeEval = /\((\S*)(?::(\d+))(?::(\d+))\)/, + lines = ex.stack.split('\n'), + stack = [], + submatch, + parts, + element, + reference = /^(.*) is undefined$/.exec(ex.message); + + for (var i = 0, j = lines.length; i < j; ++i) { + if (parts = chrome.exec(lines[i])) { + var isNative = parts[2] && parts[2].indexOf('native') === 0; // start of line + + var isEval = parts[2] && parts[2].indexOf('eval') === 0; // start of line + + if (isEval && (submatch = chromeEval.exec(parts[2]))) { + // throw out eval line/column and use top-most line/column number + parts[2] = submatch[1]; // url + + parts[3] = submatch[2]; // line + + parts[4] = submatch[3]; // column + } + + element = { + url: !isNative ? parts[2] : null, + func: parts[1] || UNKNOWN_FUNCTION, + args: isNative ? [parts[2]] : [], + line: parts[3] ? +parts[3] : null, + column: parts[4] ? +parts[4] : null + }; + } else if (parts = winjs.exec(lines[i])) { + element = { + url: parts[2], + func: parts[1] || UNKNOWN_FUNCTION, + args: [], + line: +parts[3], + column: parts[4] ? +parts[4] : null + }; + } else if (parts = gecko.exec(lines[i])) { + var isEval = parts[3] && parts[3].indexOf(' > eval') > -1; + + if (isEval && (submatch = geckoEval.exec(parts[3]))) { + // throw out eval line/column and use top-most line number + parts[3] = submatch[1]; + parts[4] = submatch[2]; + parts[5] = null; // no column when eval + } else if (i === 0 && !parts[5] && typeof ex.columnNumber !== 'undefined') { + // FireFox uses this awesome columnNumber property for its top frame + // Also note, Firefox's column number is 0-based and everything else expects 1-based, + // so adding 1 + // NOTE: this hack doesn't work if top-most frame is eval + stack[0].column = ex.columnNumber + 1; + } + + element = { + url: parts[3], + func: parts[1] || UNKNOWN_FUNCTION, + args: parts[2] ? parts[2].split(',') : [], + line: parts[4] ? +parts[4] : null, + column: parts[5] ? +parts[5] : null + }; + } else { + continue; + } + + if (!element.func && element.line) { + element.func = UNKNOWN_FUNCTION; + } + + stack.push(element); + } + + if (!stack.length) { + return null; + } + + return { + name: ex.name, + message: ex.message, + url: getLocationHref(), + stack: stack + }; + } + /** + * Adds information about the first frame to incomplete stack traces. + * Safari and IE require this to get complete data on the first frame. + * @param {Object.} stackInfo Stack trace information from + * one of the compute* methods. + * @param {string} url The URL of the script that caused an error. + * @param {(number|string)} lineNo The line number of the script that + * caused an error. + * @param {string=} message The error generated by the browser, which + * hopefully contains the name of the object that caused the error. + * @return {boolean} Whether or not the stack information was + * augmented. + */ + + + function augmentStackTraceWithInitialElement(stackInfo, url, lineNo, message) { + var initial = { + url: url, + line: lineNo + }; + + if (initial.url && initial.line) { + stackInfo.incomplete = false; + + if (!initial.func) { + initial.func = UNKNOWN_FUNCTION; + } + + if (stackInfo.stack.length > 0) { + if (stackInfo.stack[0].url === initial.url) { + if (stackInfo.stack[0].line === initial.line) { + return false; // already in stack trace + } else if (!stackInfo.stack[0].line && stackInfo.stack[0].func === initial.func) { + stackInfo.stack[0].line = initial.line; + return false; + } + } + } + + stackInfo.stack.unshift(initial); + stackInfo.partial = true; + return true; + } else { + stackInfo.incomplete = true; + } + + return false; + } + /** + * Computes stack trace information by walking the arguments.caller + * chain at the time the exception occurred. This will cause earlier + * frames to be missed but is the only way to get any stack trace in + * Safari and IE. The top frame is restored by + * {@link augmentStackTraceWithInitialElement}. + * @param {Error} ex + * @return {?Object.} Stack trace information. + */ + + + function computeStackTraceByWalkingCallerChain(ex, depth) { + var functionName = /function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i, + stack = [], + funcs = {}, + recursion = false, + parts, + item; + + for (var curr = computeStackTraceByWalkingCallerChain.caller; curr && !recursion; curr = curr.caller) { + if (curr === computeStackTrace || curr === TraceKit.report) { + // console.log('skipping internal function'); + continue; + } + + item = { + url: null, + func: UNKNOWN_FUNCTION, + line: null, + column: null + }; + + if (curr.name) { + item.func = curr.name; + } else if (parts = functionName.exec(curr.toString())) { + item.func = parts[1]; + } + + if (typeof item.func === 'undefined') { + try { + item.func = parts.input.substring(0, parts.input.indexOf('{')); + } catch (e) {} + } + + if (funcs['' + curr]) { + recursion = true; + } else { + funcs['' + curr] = true; + } + + stack.push(item); + } + + if (depth) { + // console.log('depth is ' + depth); + // console.log('stack is ' + stack.length); + stack.splice(0, depth); + } + + var result = { + name: ex.name, + message: ex.message, + url: getLocationHref(), + stack: stack + }; + augmentStackTraceWithInitialElement(result, ex.sourceURL || ex.fileName, ex.line || ex.lineNumber, ex.message || ex.description); + return result; + } + /** + * Computes a stack trace for an exception. + * @param {Error} ex + * @param {(string|number)=} depth + */ + + + function computeStackTrace(ex, depth) { + var stack = null; + depth = depth == null ? 0 : +depth; + + try { + stack = computeStackTraceFromStackProp(ex); + + if (stack) { + return stack; + } + } catch (e) { + if (TraceKit.debug) { + throw e; + } + } + + try { + stack = computeStackTraceByWalkingCallerChain(ex, depth + 1); + + if (stack) { + return stack; + } + } catch (e) { + if (TraceKit.debug) { + throw e; + } + } + + return { + name: ex.name, + message: ex.message, + url: getLocationHref() + }; + } + + computeStackTrace.augmentStackTraceWithInitialElement = augmentStackTraceWithInitialElement; + computeStackTrace.computeStackTraceFromStackProp = computeStackTraceFromStackProp; + return computeStackTrace; +}(); + +var tracekit = TraceKit; + +var stringify_1 = createCommonjsModule(function (module, exports) { + /* + json-stringify-safe + Like JSON.stringify, but doesn't throw on circular references. + + Originally forked from https://github.com/isaacs/json-stringify-safe + version 5.0.1 on 3/8/2017 and modified to handle Errors serialization + and IE8 compatibility. Tests for this are in test/vendor. + + ISC license: https://github.com/isaacs/json-stringify-safe/blob/master/LICENSE + */ + exports = module.exports = stringify; + exports.getSerialize = serializer; + + function indexOf(haystack, needle) { + for (var i = 0; i < haystack.length; ++i) { + if (haystack[i] === needle) return i; + } + + return -1; + } + + function stringify(obj, replacer, spaces, cycleReplacer) { + return JSON.stringify(obj, serializer(replacer, cycleReplacer), spaces); + } // https://github.com/ftlabs/js-abbreviate/blob/fa709e5f139e7770a71827b1893f22418097fbda/index.js#L95-L106 + + + function stringifyError(value) { + var err = { + // These properties are implemented as magical getters and don't show up in for in + stack: value.stack, + message: value.message, + name: value.name + }; + + for (var i in value) { + if (Object.prototype.hasOwnProperty.call(value, i)) { + err[i] = value[i]; + } + } + + return err; + } + + function serializer(replacer, cycleReplacer) { + var stack = []; + var keys = []; + + if (cycleReplacer == null) { + cycleReplacer = function cycleReplacer(key, value) { + if (stack[0] === value) { + return '[Circular ~]'; + } + + return '[Circular ~.' + keys.slice(0, indexOf(stack, value)).join('.') + ']'; + }; + } + + return function (key, value) { + if (stack.length > 0) { + var thisPos = indexOf(stack, this); + ~thisPos ? stack.splice(thisPos + 1) : stack.push(this); + ~thisPos ? keys.splice(thisPos, Infinity, key) : keys.push(key); + + if (~indexOf(stack, value)) { + value = cycleReplacer.call(this, key, value); + } + } else { + stack.push(value); + } + + return replacer == null ? value instanceof Error ? stringifyError(value) : value : replacer.call(this, key, value); + }; + } +}); +var stringify_2 = stringify_1.getSerialize; + +function RavenConfigError(message) { + this.name = 'RavenConfigError'; + this.message = message; +} + +RavenConfigError.prototype = new Error(); +RavenConfigError.prototype.constructor = RavenConfigError; +var configError = RavenConfigError; + +var wrapMethod = function wrapMethod(console, level, callback) { + var originalConsoleLevel = console[level]; + var originalConsole = console; + + if (!(level in console)) { + return; + } + + var sentryLevel = level === 'warn' ? 'warning' : level; + + console[level] = function () { + var args = [].slice.call(arguments); + var msg = utils.safeJoin(args, ' '); + var data = { + level: sentryLevel, + logger: 'console', + extra: { + arguments: args + } + }; + + if (level === 'assert') { + if (args[0] === false) { + // Default browsers message + msg = 'Assertion failed: ' + (utils.safeJoin(args.slice(1), ' ') || 'console.assert'); + data.extra.arguments = args.slice(1); + callback && callback(msg, data); + } + } else { + callback && callback(msg, data); + } // this fails for some browsers. :( + + + if (originalConsoleLevel) { + // IE9 doesn't allow calling apply on console functions directly + // See: https://stackoverflow.com/questions/5472938/does-ie9-support-console-log-and-is-it-a-real-function#answer-5473193 + Function.prototype.apply.call(originalConsoleLevel, originalConsole, args); + } + }; +}; + +var console$1 = { + wrapMethod: wrapMethod +}; + +/*global XDomainRequest:false */ + +var isError = utils.isError; +var isObject = utils.isObject; +var isErrorEvent = utils.isErrorEvent; +var isUndefined = utils.isUndefined; +var isFunction = utils.isFunction; +var isString = utils.isString; +var isArray = utils.isArray; +var isEmptyObject = utils.isEmptyObject; +var each = utils.each; +var objectMerge = utils.objectMerge; +var truncate = utils.truncate; +var objectFrozen = utils.objectFrozen; +var hasKey = utils.hasKey; +var joinRegExp = utils.joinRegExp; +var urlencode = utils.urlencode; +var uuid4 = utils.uuid4; +var htmlTreeAsString = utils.htmlTreeAsString; +var isSameException = utils.isSameException; +var isSameStacktrace = utils.isSameStacktrace; +var parseUrl = utils.parseUrl; +var fill = utils.fill; +var supportsFetch = utils.supportsFetch; +var wrapConsoleMethod = console$1.wrapMethod; +var dsnKeys = 'source protocol user pass host port path'.split(' '); +var dsnPattern = /^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/; + +function now() { + return +new Date(); +} // This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) + + +var _window$1 = typeof window !== 'undefined' ? window : typeof commonjsGlobal !== 'undefined' ? commonjsGlobal : typeof self !== 'undefined' ? self : {}; + +var _document = _window$1.document; +var _navigator = _window$1.navigator; + +function keepOriginalCallback(original, callback) { + return isFunction(callback) ? function (data) { + return callback(data, original); + } : callback; +} // First, check for JSON support +// If there is no JSON, we no-op the core features of Raven +// since JSON is required to encode the payload + + +function Raven$1() { + this._hasJSON = !!(_typeof(JSON) === 'object' && JSON.stringify); // Raven can run in contexts where there's no document (react-native) + + this._hasDocument = !isUndefined(_document); + this._hasNavigator = !isUndefined(_navigator); + this._lastCapturedException = null; + this._lastData = null; + this._lastEventId = null; + this._globalServer = null; + this._globalKey = null; + this._globalProject = null; + this._globalContext = {}; + this._globalOptions = { + // SENTRY_RELEASE can be injected by https://github.com/getsentry/sentry-webpack-plugin + release: _window$1.SENTRY_RELEASE && _window$1.SENTRY_RELEASE.id, + logger: 'javascript', + ignoreErrors: [], + ignoreUrls: [], + whitelistUrls: [], + includePaths: [], + headers: null, + collectWindowErrors: true, + maxMessageLength: 0, + // By default, truncates URL values to 250 chars + maxUrlLength: 250, + stackTraceLimit: 50, + autoBreadcrumbs: true, + instrument: true, + sampleRate: 1 + }; + this._fetchDefaults = { + method: 'POST', + keepalive: true, + referrerPolicy: 'origin' + }; + this._ignoreOnError = 0; + this._isRavenInstalled = false; + this._originalErrorStackTraceLimit = Error.stackTraceLimit; // capture references to window.console *and* all its methods first + // before the console plugin has a chance to monkey patch + + this._originalConsole = _window$1.console || {}; + this._originalConsoleMethods = {}; + this._plugins = []; + this._startTime = now(); + this._wrappedBuiltIns = []; + this._breadcrumbs = []; + this._lastCapturedEvent = null; + this._keypressTimeout; + this._location = _window$1.location; + this._lastHref = this._location && this._location.href; + + this._resetBackoff(); // eslint-disable-next-line guard-for-in + + + for (var method in this._originalConsole) { + this._originalConsoleMethods[method] = this._originalConsole[method]; + } +} +/* + * The core Raven singleton + * + * @this {Raven} + */ + + +Raven$1.prototype = { + // Hardcode version string so that raven source can be loaded directly via + // webpack (using a build step causes webpack #1617). Grunt verifies that + // this value matches package.json during build. + // See: https://github.com/getsentry/raven-js/issues/465 + VERSION: '3.22.2', + debug: false, + TraceKit: tracekit, + // alias to TraceKit + + /* + * Configure Raven with a DSN and extra options + * + * @param {string} dsn The public Sentry DSN + * @param {object} options Set of global options [optional] + * @return {Raven} + */ + config: function config(dsn, options) { + var self = this; + + if (self._globalServer) { + this._logDebug('error', 'Error: Raven has already been configured'); + + return self; + } + + if (!dsn) return self; + var globalOptions = self._globalOptions; // merge in options + + if (options) { + each(options, function (key, value) { + // tags and extra are special and need to be put into context + if (key === 'tags' || key === 'extra' || key === 'user') { + self._globalContext[key] = value; + } else { + globalOptions[key] = value; + } + }); + } + + self.setDSN(dsn); // "Script error." is hard coded into browsers for errors that it can't read. + // this is the result of a script being pulled in from an external domain and CORS. + + globalOptions.ignoreErrors.push(/^Script error\.?$/); + globalOptions.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/); // join regexp rules into one big rule + + globalOptions.ignoreErrors = joinRegExp(globalOptions.ignoreErrors); + globalOptions.ignoreUrls = globalOptions.ignoreUrls.length ? joinRegExp(globalOptions.ignoreUrls) : false; + globalOptions.whitelistUrls = globalOptions.whitelistUrls.length ? joinRegExp(globalOptions.whitelistUrls) : false; + globalOptions.includePaths = joinRegExp(globalOptions.includePaths); + globalOptions.maxBreadcrumbs = Math.max(0, Math.min(globalOptions.maxBreadcrumbs || 100, 100)); // default and hard limit is 100 + + var autoBreadcrumbDefaults = { + xhr: true, + console: true, + dom: true, + location: true, + sentry: true + }; + var autoBreadcrumbs = globalOptions.autoBreadcrumbs; + + if ({}.toString.call(autoBreadcrumbs) === '[object Object]') { + autoBreadcrumbs = objectMerge(autoBreadcrumbDefaults, autoBreadcrumbs); + } else if (autoBreadcrumbs !== false) { + autoBreadcrumbs = autoBreadcrumbDefaults; + } + + globalOptions.autoBreadcrumbs = autoBreadcrumbs; + var instrumentDefaults = { + tryCatch: true + }; + var instrument = globalOptions.instrument; + + if ({}.toString.call(instrument) === '[object Object]') { + instrument = objectMerge(instrumentDefaults, instrument); + } else if (instrument !== false) { + instrument = instrumentDefaults; + } + + globalOptions.instrument = instrument; + tracekit.collectWindowErrors = !!globalOptions.collectWindowErrors; // return for chaining + + return self; + }, + + /* + * Installs a global window.onerror error handler + * to capture and report uncaught exceptions. + * At this point, install() is required to be called due + * to the way TraceKit is set up. + * + * @return {Raven} + */ + install: function install() { + var self = this; + + if (self.isSetup() && !self._isRavenInstalled) { + tracekit.report.subscribe(function () { + self._handleOnErrorStackInfo.apply(self, arguments); + }); + + self._patchFunctionToString(); + + if (self._globalOptions.instrument && self._globalOptions.instrument.tryCatch) { + self._instrumentTryCatch(); + } + + if (self._globalOptions.autoBreadcrumbs) self._instrumentBreadcrumbs(); // Install all of the plugins + + self._drainPlugins(); + + self._isRavenInstalled = true; + } + + Error.stackTraceLimit = self._globalOptions.stackTraceLimit; + return this; + }, + + /* + * Set the DSN (can be called multiple time unlike config) + * + * @param {string} dsn The public Sentry DSN + */ + setDSN: function setDSN(dsn) { + var self = this, + uri = self._parseDSN(dsn), + lastSlash = uri.path.lastIndexOf('/'), + path = uri.path.substr(1, lastSlash); + + self._dsn = dsn; + self._globalKey = uri.user; + self._globalSecret = uri.pass && uri.pass.substr(1); + self._globalProject = uri.path.substr(lastSlash + 1); + self._globalServer = self._getGlobalServer(uri); + self._globalEndpoint = self._globalServer + '/' + path + 'api/' + self._globalProject + '/store/'; // Reset backoff state since we may be pointing at a + // new project/server + + this._resetBackoff(); + }, + + /* + * Wrap code within a context so Raven can capture errors + * reliably across domains that is executed immediately. + * + * @param {object} options A specific set of options for this context [optional] + * @param {function} func The callback to be immediately executed within the context + * @param {array} args An array of arguments to be called with the callback [optional] + */ + context: function context(options, func, args) { + if (isFunction(options)) { + args = func || []; + func = options; + options = undefined; + } + + return this.wrap(options, func).apply(this, args); + }, + + /* + * Wrap code within a context and returns back a new function to be executed + * + * @param {object} options A specific set of options for this context [optional] + * @param {function} func The function to be wrapped in a new context + * @param {function} func A function to call before the try/catch wrapper [optional, private] + * @return {function} The newly wrapped functions with a context + */ + wrap: function wrap(options, func, _before) { + var self = this; // 1 argument has been passed, and it's not a function + // so just return it + + if (isUndefined(func) && !isFunction(options)) { + return options; + } // options is optional + + + if (isFunction(options)) { + func = options; + options = undefined; + } // At this point, we've passed along 2 arguments, and the second one + // is not a function either, so we'll just return the second argument. + + + if (!isFunction(func)) { + return func; + } // We don't wanna wrap it twice! + + + try { + if (func.__raven__) { + return func; + } // If this has already been wrapped in the past, return that + + + if (func.__raven_wrapper__) { + return func.__raven_wrapper__; + } + } catch (e) { + // Just accessing custom props in some Selenium environments + // can cause a "Permission denied" exception (see raven-js#495). + // Bail on wrapping and return the function as-is (defers to window.onerror). + return func; + } + + function wrapped() { + var args = [], + i = arguments.length, + deep = !options || options && options.deep !== false; + + if (_before && isFunction(_before)) { + _before.apply(this, arguments); + } // Recursively wrap all of a function's arguments that are + // functions themselves. + + + while (i--) { + args[i] = deep ? self.wrap(options, arguments[i]) : arguments[i]; + } + + try { + // Attempt to invoke user-land function + // NOTE: If you are a Sentry user, and you are seeing this stack frame, it + // means Raven caught an error invoking your application code. This is + // expected behavior and NOT indicative of a bug with Raven.js. + return func.apply(this, args); + } catch (e) { + self._ignoreNextOnError(); + + self.captureException(e, options); + throw e; + } + } // copy over properties of the old function + + + for (var property in func) { + if (hasKey(func, property)) { + wrapped[property] = func[property]; + } + } + + wrapped.prototype = func.prototype; + func.__raven_wrapper__ = wrapped; // Signal that this function has been wrapped/filled already + // for both debugging and to prevent it to being wrapped/filled twice + + wrapped.__raven__ = true; + wrapped.__orig__ = func; + return wrapped; + }, + + /* + * Uninstalls the global error handler. + * + * @return {Raven} + */ + uninstall: function uninstall() { + tracekit.report.uninstall(); + + this._unpatchFunctionToString(); + + this._restoreBuiltIns(); + + this._restoreConsole(); + + Error.stackTraceLimit = this._originalErrorStackTraceLimit; + this._isRavenInstalled = false; + return this; + }, + + /* + * Manually capture an exception and send it over to Sentry + * + * @param {error} ex An exception to be logged + * @param {object} options A specific set of options for this error [optional] + * @return {Raven} + */ + captureException: function captureException(ex, options) { + options = objectMerge({ + trimHeadFrames: 0 + }, options ? options : {}); // Cases for sending ex as a message, rather than an exception + + var isNotError = !isError(ex); + var isNotErrorEvent = !isErrorEvent(ex); + var isErrorEventWithoutError = isErrorEvent(ex) && !ex.error; + + if (isNotError && isNotErrorEvent || isErrorEventWithoutError) { + return this.captureMessage(ex, objectMerge(options, { + stacktrace: true, + // if we fall back to captureMessage, default to attempting a new trace + trimHeadFrames: options.trimHeadFrames + 1 + })); + } // Get actual Error from ErrorEvent + + + if (isErrorEvent(ex)) ex = ex.error; // Store the raw exception object for potential debugging and introspection + + this._lastCapturedException = ex; // TraceKit.report will re-raise any exception passed to it, + // which means you have to wrap it in try/catch. Instead, we + // can wrap it here and only re-raise if TraceKit.report + // raises an exception different from the one we asked to + // report on. + + try { + var stack = tracekit.computeStackTrace(ex); + + this._handleStackInfo(stack, options); + } catch (ex1) { + if (ex !== ex1) { + throw ex1; + } + } + + return this; + }, + + /* + * Manually send a message to Sentry + * + * @param {string} msg A plain message to be captured in Sentry + * @param {object} options A specific set of options for this message [optional] + * @return {Raven} + */ + captureMessage: function captureMessage(msg, options) { + // config() automagically converts ignoreErrors from a list to a RegExp so we need to test for an + // early call; we'll error on the side of logging anything called before configuration since it's + // probably something you should see: + if (!!this._globalOptions.ignoreErrors.test && this._globalOptions.ignoreErrors.test(msg)) { + return; + } + + options = options || {}; + var data = objectMerge({ + message: msg + '' // Make sure it's actually a string + + }, options); + var ex; // Generate a "synthetic" stack trace from this point. + // NOTE: If you are a Sentry user, and you are seeing this stack frame, it is NOT indicative + // of a bug with Raven.js. Sentry generates synthetic traces either by configuration, + // or if it catches a thrown object without a "stack" property. + + try { + throw new Error(msg); + } catch (ex1) { + ex = ex1; + } // null exception name so `Error` isn't prefixed to msg + + + ex.name = null; + var stack = tracekit.computeStackTrace(ex); // stack[0] is `throw new Error(msg)` call itself, we are interested in the frame that was just before that, stack[1] + + var initialCall = isArray(stack.stack) && stack.stack[1]; + var fileurl = initialCall && initialCall.url || ''; + + if (!!this._globalOptions.ignoreUrls.test && this._globalOptions.ignoreUrls.test(fileurl)) { + return; + } + + if (!!this._globalOptions.whitelistUrls.test && !this._globalOptions.whitelistUrls.test(fileurl)) { + return; + } + + if (this._globalOptions.stacktrace || options && options.stacktrace) { + options = objectMerge({ + // fingerprint on msg, not stack trace (legacy behavior, could be + // revisited) + fingerprint: msg, + // since we know this is a synthetic trace, the top N-most frames + // MUST be from Raven.js, so mark them as in_app later by setting + // trimHeadFrames + trimHeadFrames: (options.trimHeadFrames || 0) + 1 + }, options); + + var frames = this._prepareFrames(stack, options); + + data.stacktrace = { + // Sentry expects frames oldest to newest + frames: frames.reverse() + }; + } // Fire away! + + + this._send(data); + + return this; + }, + captureBreadcrumb: function captureBreadcrumb(obj) { + var crumb = objectMerge({ + timestamp: now() / 1000 + }, obj); + + if (isFunction(this._globalOptions.breadcrumbCallback)) { + var result = this._globalOptions.breadcrumbCallback(crumb); + + if (isObject(result) && !isEmptyObject(result)) { + crumb = result; + } else if (result === false) { + return this; + } + } + + this._breadcrumbs.push(crumb); + + if (this._breadcrumbs.length > this._globalOptions.maxBreadcrumbs) { + this._breadcrumbs.shift(); + } + + return this; + }, + addPlugin: function addPlugin(plugin + /*arg1, arg2, ... argN*/ + ) { + var pluginArgs = [].slice.call(arguments, 1); + + this._plugins.push([plugin, pluginArgs]); + + if (this._isRavenInstalled) { + this._drainPlugins(); + } + + return this; + }, + + /* + * Set/clear a user to be sent along with the payload. + * + * @param {object} user An object representing user data [optional] + * @return {Raven} + */ + setUserContext: function setUserContext(user) { + // Intentionally do not merge here since that's an unexpected behavior. + this._globalContext.user = user; + return this; + }, + + /* + * Merge extra attributes to be sent along with the payload. + * + * @param {object} extra An object representing extra data [optional] + * @return {Raven} + */ + setExtraContext: function setExtraContext(extra) { + this._mergeContext('extra', extra); + + return this; + }, + + /* + * Merge tags to be sent along with the payload. + * + * @param {object} tags An object representing tags [optional] + * @return {Raven} + */ + setTagsContext: function setTagsContext(tags) { + this._mergeContext('tags', tags); + + return this; + }, + + /* + * Clear all of the context. + * + * @return {Raven} + */ + clearContext: function clearContext() { + this._globalContext = {}; + return this; + }, + + /* + * Get a copy of the current context. This cannot be mutated. + * + * @return {object} copy of context + */ + getContext: function getContext() { + // lol javascript + return JSON.parse(stringify_1(this._globalContext)); + }, + + /* + * Set environment of application + * + * @param {string} environment Typically something like 'production'. + * @return {Raven} + */ + setEnvironment: function setEnvironment(environment) { + this._globalOptions.environment = environment; + return this; + }, + + /* + * Set release version of application + * + * @param {string} release Typically something like a git SHA to identify version + * @return {Raven} + */ + setRelease: function setRelease(release) { + this._globalOptions.release = release; + return this; + }, + + /* + * Set the dataCallback option + * + * @param {function} callback The callback to run which allows the + * data blob to be mutated before sending + * @return {Raven} + */ + setDataCallback: function setDataCallback(callback) { + var original = this._globalOptions.dataCallback; + this._globalOptions.dataCallback = keepOriginalCallback(original, callback); + return this; + }, + + /* + * Set the breadcrumbCallback option + * + * @param {function} callback The callback to run which allows filtering + * or mutating breadcrumbs + * @return {Raven} + */ + setBreadcrumbCallback: function setBreadcrumbCallback(callback) { + var original = this._globalOptions.breadcrumbCallback; + this._globalOptions.breadcrumbCallback = keepOriginalCallback(original, callback); + return this; + }, + + /* + * Set the shouldSendCallback option + * + * @param {function} callback The callback to run which allows + * introspecting the blob before sending + * @return {Raven} + */ + setShouldSendCallback: function setShouldSendCallback(callback) { + var original = this._globalOptions.shouldSendCallback; + this._globalOptions.shouldSendCallback = keepOriginalCallback(original, callback); + return this; + }, + + /** + * Override the default HTTP transport mechanism that transmits data + * to the Sentry server. + * + * @param {function} transport Function invoked instead of the default + * `makeRequest` handler. + * + * @return {Raven} + */ + setTransport: function setTransport(transport) { + this._globalOptions.transport = transport; + return this; + }, + + /* + * Get the latest raw exception that was captured by Raven. + * + * @return {error} + */ + lastException: function lastException() { + return this._lastCapturedException; + }, + + /* + * Get the last event id + * + * @return {string} + */ + lastEventId: function lastEventId() { + return this._lastEventId; + }, + + /* + * Determine if Raven is setup and ready to go. + * + * @return {boolean} + */ + isSetup: function isSetup() { + if (!this._hasJSON) return false; // needs JSON support + + if (!this._globalServer) { + if (!this.ravenNotConfiguredError) { + this.ravenNotConfiguredError = true; + + this._logDebug('error', 'Error: Raven has not been configured.'); + } + + return false; + } + + return true; + }, + afterLoad: function afterLoad() { + // TODO: remove window dependence? + // Attempt to initialize Raven on load + var RavenConfig = _window$1.RavenConfig; + + if (RavenConfig) { + this.config(RavenConfig.dsn, RavenConfig.config).install(); + } + }, + showReportDialog: function showReportDialog(options) { + if (!_document // doesn't work without a document (React native) + ) return; + options = options || {}; + var lastEventId = options.eventId || this.lastEventId(); + + if (!lastEventId) { + throw new configError('Missing eventId'); + } + + var dsn = options.dsn || this._dsn; + + if (!dsn) { + throw new configError('Missing DSN'); + } + + var encode = encodeURIComponent; + var qs = ''; + qs += '?eventId=' + encode(lastEventId); + qs += '&dsn=' + encode(dsn); + var user = options.user || this._globalContext.user; + + if (user) { + if (user.name) qs += '&name=' + encode(user.name); + if (user.email) qs += '&email=' + encode(user.email); + } + + var globalServer = this._getGlobalServer(this._parseDSN(dsn)); + + var script = _document.createElement('script'); + + script.async = true; + script.src = globalServer + '/api/embed/error-page/' + qs; + + (_document.head || _document.body).appendChild(script); + }, + + /**** Private functions ****/ + _ignoreNextOnError: function _ignoreNextOnError() { + var self = this; + this._ignoreOnError += 1; + setTimeout(function () { + // onerror should trigger before setTimeout + self._ignoreOnError -= 1; + }); + }, + _triggerEvent: function _triggerEvent(eventType, options) { + // NOTE: `event` is a native browser thing, so let's avoid conflicting wiht it + var evt, key; + if (!this._hasDocument) return; + options = options || {}; + eventType = 'raven' + eventType.substr(0, 1).toUpperCase() + eventType.substr(1); + + if (_document.createEvent) { + evt = _document.createEvent('HTMLEvents'); + evt.initEvent(eventType, true, true); + } else { + evt = _document.createEventObject(); + evt.eventType = eventType; + } + + for (key in options) { + if (hasKey(options, key)) { + evt[key] = options[key]; + } + } + + if (_document.createEvent) { + // IE9 if standards + _document.dispatchEvent(evt); + } else { + // IE8 regardless of Quirks or Standards + // IE9 if quirks + try { + _document.fireEvent('on' + evt.eventType.toLowerCase(), evt); + } catch (e) {// Do nothing + } + } + }, + + /** + * Wraps addEventListener to capture UI breadcrumbs + * @param evtName the event name (e.g. "click") + * @returns {Function} + * @private + */ + _breadcrumbEventHandler: function _breadcrumbEventHandler(evtName) { + var self = this; + return function (evt) { + // reset keypress timeout; e.g. triggering a 'click' after + // a 'keypress' will reset the keypress debounce so that a new + // set of keypresses can be recorded + self._keypressTimeout = null; // It's possible this handler might trigger multiple times for the same + // event (e.g. event propagation through node ancestors). Ignore if we've + // already captured the event. + + if (self._lastCapturedEvent === evt) return; + self._lastCapturedEvent = evt; // try/catch both: + // - accessing evt.target (see getsentry/raven-js#838, #768) + // - `htmlTreeAsString` because it's complex, and just accessing the DOM incorrectly + // can throw an exception in some circumstances. + + var target; + + try { + target = htmlTreeAsString(evt.target); + } catch (e) { + target = ''; + } + + self.captureBreadcrumb({ + category: 'ui.' + evtName, + // e.g. ui.click, ui.input + message: target + }); + }; + }, + + /** + * Wraps addEventListener to capture keypress UI events + * @returns {Function} + * @private + */ + _keypressEventHandler: function _keypressEventHandler() { + var self = this, + debounceDuration = 1000; // milliseconds + // TODO: if somehow user switches keypress target before + // debounce timeout is triggered, we will only capture + // a single breadcrumb from the FIRST target (acceptable?) + + return function (evt) { + var target; + + try { + target = evt.target; + } catch (e) { + // just accessing event properties can throw an exception in some rare circumstances + // see: https://github.com/getsentry/raven-js/issues/838 + return; + } + + var tagName = target && target.tagName; // only consider keypress events on actual input elements + // this will disregard keypresses targeting body (e.g. tabbing + // through elements, hotkeys, etc) + + if (!tagName || tagName !== 'INPUT' && tagName !== 'TEXTAREA' && !target.isContentEditable) return; // record first keypress in a series, but ignore subsequent + // keypresses until debounce clears + + var timeout = self._keypressTimeout; + + if (!timeout) { + self._breadcrumbEventHandler('input')(evt); + } + + clearTimeout(timeout); + self._keypressTimeout = setTimeout(function () { + self._keypressTimeout = null; + }, debounceDuration); + }; + }, + + /** + * Captures a breadcrumb of type "navigation", normalizing input URLs + * @param to the originating URL + * @param from the target URL + * @private + */ + _captureUrlChange: function _captureUrlChange(from, to) { + var parsedLoc = parseUrl(this._location.href); + var parsedTo = parseUrl(to); + var parsedFrom = parseUrl(from); // because onpopstate only tells you the "new" (to) value of location.href, and + // not the previous (from) value, we need to track the value of the current URL + // state ourselves + + this._lastHref = to; // Use only the path component of the URL if the URL matches the current + // document (almost all the time when using pushState) + + if (parsedLoc.protocol === parsedTo.protocol && parsedLoc.host === parsedTo.host) to = parsedTo.relative; + if (parsedLoc.protocol === parsedFrom.protocol && parsedLoc.host === parsedFrom.host) from = parsedFrom.relative; + this.captureBreadcrumb({ + category: 'navigation', + data: { + to: to, + from: from + } + }); + }, + _patchFunctionToString: function _patchFunctionToString() { + var self = this; + self._originalFunctionToString = Function.prototype.toString; // eslint-disable-next-line no-extend-native + + Function.prototype.toString = function () { + if (typeof this === 'function' && this.__raven__) { + return self._originalFunctionToString.apply(this.__orig__, arguments); + } + + return self._originalFunctionToString.apply(this, arguments); + }; + }, + _unpatchFunctionToString: function _unpatchFunctionToString() { + if (this._originalFunctionToString) { + // eslint-disable-next-line no-extend-native + Function.prototype.toString = this._originalFunctionToString; + } + }, + + /** + * Wrap timer functions and event targets to catch errors and provide + * better metadata. + */ + _instrumentTryCatch: function _instrumentTryCatch() { + var self = this; + var wrappedBuiltIns = self._wrappedBuiltIns; + + function wrapTimeFn(orig) { + return function (fn, t) { + // preserve arity + // Make a copy of the arguments to prevent deoptimization + // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments + var args = new Array(arguments.length); + + for (var i = 0; i < args.length; ++i) { + args[i] = arguments[i]; + } + + var originalCallback = args[0]; + + if (isFunction(originalCallback)) { + args[0] = self.wrap(originalCallback); + } // IE < 9 doesn't support .call/.apply on setInterval/setTimeout, but it + // also supports only two arguments and doesn't care what this is, so we + // can just call the original function directly. + + + if (orig.apply) { + return orig.apply(this, args); + } else { + return orig(args[0], args[1]); + } + }; + } + + var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; + + function wrapEventTarget(global) { + var proto = _window$1[global] && _window$1[global].prototype; + + if (proto && proto.hasOwnProperty && proto.hasOwnProperty('addEventListener')) { + fill(proto, 'addEventListener', function (orig) { + return function (evtName, fn, capture, secure) { + // preserve arity + try { + if (fn && fn.handleEvent) { + fn.handleEvent = self.wrap(fn.handleEvent); + } + } catch (err) {} // can sometimes get 'Permission denied to access property "handle Event' + // More breadcrumb DOM capture ... done here and not in `_instrumentBreadcrumbs` + // so that we don't have more than one wrapper function + + + var before, clickHandler, keypressHandler; + + if (autoBreadcrumbs && autoBreadcrumbs.dom && (global === 'EventTarget' || global === 'Node')) { + // NOTE: generating multiple handlers per addEventListener invocation, should + // revisit and verify we can just use one (almost certainly) + clickHandler = self._breadcrumbEventHandler('click'); + keypressHandler = self._keypressEventHandler(); + + before = function before(evt) { + // need to intercept every DOM event in `before` argument, in case that + // same wrapped method is re-used for different events (e.g. mousemove THEN click) + // see #724 + if (!evt) return; + var eventType; + + try { + eventType = evt.type; + } catch (e) { + // just accessing event properties can throw an exception in some rare circumstances + // see: https://github.com/getsentry/raven-js/issues/838 + return; + } + + if (eventType === 'click') return clickHandler(evt);else if (eventType === 'keypress') return keypressHandler(evt); + }; + } + + return orig.call(this, evtName, self.wrap(fn, undefined, before), capture, secure); + }; + }, wrappedBuiltIns); + fill(proto, 'removeEventListener', function (orig) { + return function (evt, fn, capture, secure) { + try { + fn = fn && (fn.__raven_wrapper__ ? fn.__raven_wrapper__ : fn); + } catch (e) {// ignore, accessing __raven_wrapper__ will throw in some Selenium environments + } + + return orig.call(this, evt, fn, capture, secure); + }; + }, wrappedBuiltIns); + } + } + + fill(_window$1, 'setTimeout', wrapTimeFn, wrappedBuiltIns); + fill(_window$1, 'setInterval', wrapTimeFn, wrappedBuiltIns); + + if (_window$1.requestAnimationFrame) { + fill(_window$1, 'requestAnimationFrame', function (orig) { + return function (cb) { + return orig(self.wrap(cb)); + }; + }, wrappedBuiltIns); + } // event targets borrowed from bugsnag-js: + // https://github.com/bugsnag/bugsnag-js/blob/master/src/bugsnag.js#L666 + + + var eventTargets = ['EventTarget', 'Window', 'Node', 'ApplicationCache', 'AudioTrackList', 'ChannelMergerNode', 'CryptoOperation', 'EventSource', 'FileReader', 'HTMLUnknownElement', 'IDBDatabase', 'IDBRequest', 'IDBTransaction', 'KeyOperation', 'MediaController', 'MessagePort', 'ModalWindow', 'Notification', 'SVGElementInstance', 'Screen', 'TextTrack', 'TextTrackCue', 'TextTrackList', 'WebSocket', 'WebSocketWorker', 'Worker', 'XMLHttpRequest', 'XMLHttpRequestEventTarget', 'XMLHttpRequestUpload']; + + for (var i = 0; i < eventTargets.length; i++) { + wrapEventTarget(eventTargets[i]); + } + }, + + /** + * Instrument browser built-ins w/ breadcrumb capturing + * - XMLHttpRequests + * - DOM interactions (click/typing) + * - window.location changes + * - console + * + * Can be disabled or individually configured via the `autoBreadcrumbs` config option + */ + _instrumentBreadcrumbs: function _instrumentBreadcrumbs() { + var self = this; + var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; + var wrappedBuiltIns = self._wrappedBuiltIns; + + function wrapProp(prop, xhr) { + if (prop in xhr && isFunction(xhr[prop])) { + fill(xhr, prop, function (orig) { + return self.wrap(orig); + }); // intentionally don't track filled methods on XHR instances + } + } + + if (autoBreadcrumbs.xhr && 'XMLHttpRequest' in _window$1) { + var xhrproto = XMLHttpRequest.prototype; + fill(xhrproto, 'open', function (origOpen) { + return function (method, url) { + // preserve arity + // if Sentry key appears in URL, don't capture + if (isString(url) && url.indexOf(self._globalKey) === -1) { + this.__raven_xhr = { + method: method, + url: url, + status_code: null + }; + } + + return origOpen.apply(this, arguments); + }; + }, wrappedBuiltIns); + fill(xhrproto, 'send', function (origSend) { + return function () { + // preserve arity + var xhr = this; + + function onreadystatechangeHandler() { + if (xhr.__raven_xhr && xhr.readyState === 4) { + try { + // touching statusCode in some platforms throws + // an exception + xhr.__raven_xhr.status_code = xhr.status; + } catch (e) { + /* do nothing */ + } + + self.captureBreadcrumb({ + type: 'http', + category: 'xhr', + data: xhr.__raven_xhr + }); + } + } + + var props = ['onload', 'onerror', 'onprogress']; + + for (var j = 0; j < props.length; j++) { + wrapProp(props[j], xhr); + } + + if ('onreadystatechange' in xhr && isFunction(xhr.onreadystatechange)) { + fill(xhr, 'onreadystatechange', function (orig) { + return self.wrap(orig, undefined, onreadystatechangeHandler); + } + /* intentionally don't track this instrumentation */ + ); + } else { + // if onreadystatechange wasn't actually set by the page on this xhr, we + // are free to set our own and capture the breadcrumb + xhr.onreadystatechange = onreadystatechangeHandler; + } + + return origSend.apply(this, arguments); + }; + }, wrappedBuiltIns); + } + + if (autoBreadcrumbs.xhr && supportsFetch()) { + fill(_window$1, 'fetch', function (origFetch) { + return function () { + // preserve arity + // Make a copy of the arguments to prevent deoptimization + // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments + var args = new Array(arguments.length); + + for (var i = 0; i < args.length; ++i) { + args[i] = arguments[i]; + } + + var fetchInput = args[0]; + var method = 'GET'; + var url; + + if (typeof fetchInput === 'string') { + url = fetchInput; + } else if ('Request' in _window$1 && fetchInput instanceof _window$1.Request) { + url = fetchInput.url; + + if (fetchInput.method) { + method = fetchInput.method; + } + } else { + url = '' + fetchInput; + } // if Sentry key appears in URL, don't capture, as it's our own request + + + if (url.indexOf(self._globalKey) !== -1) { + return origFetch.apply(this, args); + } + + if (args[1] && args[1].method) { + method = args[1].method; + } + + var fetchData = { + method: method, + url: url, + status_code: null + }; + return origFetch.apply(this, args).then(function (response) { + fetchData.status_code = response.status; + self.captureBreadcrumb({ + type: 'http', + category: 'fetch', + data: fetchData + }); + return response; + }); + }; + }, wrappedBuiltIns); + } // Capture breadcrumbs from any click that is unhandled / bubbled up all the way + // to the document. Do this before we instrument addEventListener. + + + if (autoBreadcrumbs.dom && this._hasDocument) { + if (_document.addEventListener) { + _document.addEventListener('click', self._breadcrumbEventHandler('click'), false); + + _document.addEventListener('keypress', self._keypressEventHandler(), false); + } else { + // IE8 Compatibility + _document.attachEvent('onclick', self._breadcrumbEventHandler('click')); + + _document.attachEvent('onkeypress', self._keypressEventHandler()); + } + } // record navigation (URL) changes + // NOTE: in Chrome App environment, touching history.pushState, *even inside + // a try/catch block*, will cause Chrome to output an error to console.error + // borrowed from: https://github.com/angular/angular.js/pull/13945/files + + + var chrome = _window$1.chrome; + var isChromePackagedApp = chrome && chrome.app && chrome.app.runtime; + var hasPushAndReplaceState = !isChromePackagedApp && _window$1.history && history.pushState && history.replaceState; + + if (autoBreadcrumbs.location && hasPushAndReplaceState) { + // TODO: remove onpopstate handler on uninstall() + var oldOnPopState = _window$1.onpopstate; + + _window$1.onpopstate = function () { + var currentHref = self._location.href; + + self._captureUrlChange(self._lastHref, currentHref); + + if (oldOnPopState) { + return oldOnPopState.apply(this, arguments); + } + }; + + var historyReplacementFunction = function historyReplacementFunction(origHistFunction) { + // note history.pushState.length is 0; intentionally not declaring + // params to preserve 0 arity + return function () + /* state, title, url */ + { + var url = arguments.length > 2 ? arguments[2] : undefined; // url argument is optional + + if (url) { + // coerce to string (this is what pushState does) + self._captureUrlChange(self._lastHref, url + ''); + } + + return origHistFunction.apply(this, arguments); + }; + }; + + fill(history, 'pushState', historyReplacementFunction, wrappedBuiltIns); + fill(history, 'replaceState', historyReplacementFunction, wrappedBuiltIns); + } + + if (autoBreadcrumbs.console && 'console' in _window$1 && console.log) { + // console + var consoleMethodCallback = function consoleMethodCallback(msg, data) { + self.captureBreadcrumb({ + message: msg, + level: data.level, + category: 'console' + }); + }; + + each(['debug', 'info', 'warn', 'error', 'log'], function (_, level) { + wrapConsoleMethod(console, level, consoleMethodCallback); + }); + } + }, + _restoreBuiltIns: function _restoreBuiltIns() { + // restore any wrapped builtins + var builtin; + + while (this._wrappedBuiltIns.length) { + builtin = this._wrappedBuiltIns.shift(); + var obj = builtin[0], + name = builtin[1], + orig = builtin[2]; + obj[name] = orig; + } + }, + _restoreConsole: function _restoreConsole() { + // eslint-disable-next-line guard-for-in + for (var method in this._originalConsoleMethods) { + this._originalConsole[method] = this._originalConsoleMethods[method]; + } + }, + _drainPlugins: function _drainPlugins() { + var self = this; // FIX ME TODO + + each(this._plugins, function (_, plugin) { + var installer = plugin[0]; + var args = plugin[1]; + installer.apply(self, [self].concat(args)); + }); + }, + _parseDSN: function _parseDSN(str) { + var m = dsnPattern.exec(str), + dsn = {}, + i = 7; + + try { + while (i--) { + dsn[dsnKeys[i]] = m[i] || ''; + } + } catch (e) { + throw new configError('Invalid DSN: ' + str); + } + + if (dsn.pass && !this._globalOptions.allowSecretKey) { + throw new configError('Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key'); + } + + return dsn; + }, + _getGlobalServer: function _getGlobalServer(uri) { + // assemble the endpoint from the uri pieces + var globalServer = '//' + uri.host + (uri.port ? ':' + uri.port : ''); + + if (uri.protocol) { + globalServer = uri.protocol + ':' + globalServer; + } + + return globalServer; + }, + _handleOnErrorStackInfo: function _handleOnErrorStackInfo() { + // if we are intentionally ignoring errors via onerror, bail out + if (!this._ignoreOnError) { + this._handleStackInfo.apply(this, arguments); + } + }, + _handleStackInfo: function _handleStackInfo(stackInfo, options) { + var frames = this._prepareFrames(stackInfo, options); + + this._triggerEvent('handle', { + stackInfo: stackInfo, + options: options + }); + + this._processException(stackInfo.name, stackInfo.message, stackInfo.url, stackInfo.lineno, frames, options); + }, + _prepareFrames: function _prepareFrames(stackInfo, options) { + var self = this; + var frames = []; + + if (stackInfo.stack && stackInfo.stack.length) { + each(stackInfo.stack, function (i, stack) { + var frame = self._normalizeFrame(stack, stackInfo.url); + + if (frame) { + frames.push(frame); + } + }); // e.g. frames captured via captureMessage throw + + if (options && options.trimHeadFrames) { + for (var j = 0; j < options.trimHeadFrames && j < frames.length; j++) { + frames[j].in_app = false; + } + } + } + + frames = frames.slice(0, this._globalOptions.stackTraceLimit); + return frames; + }, + _normalizeFrame: function _normalizeFrame(frame, stackInfoUrl) { + // normalize the frames data + var normalized = { + filename: frame.url, + lineno: frame.line, + colno: frame.column, + function: frame.func || '?' + }; // Case when we don't have any information about the error + // E.g. throwing a string or raw object, instead of an `Error` in Firefox + // Generating synthetic error doesn't add any value here + // + // We should probably somehow let a user know that they should fix their code + + if (!frame.url) { + normalized.filename = stackInfoUrl; // fallback to whole stacks url from onerror handler + } + + normalized.in_app = !( // determine if an exception came from outside of our app + // first we check the global includePaths list. + !!this._globalOptions.includePaths.test && !this._globalOptions.includePaths.test(normalized.filename) || // Now we check for fun, if the function name is Raven or TraceKit + /(Raven|TraceKit)\./.test(normalized['function']) || // finally, we do a last ditch effort and check for raven.min.js + /raven\.(min\.)?js$/.test(normalized.filename)); + return normalized; + }, + _processException: function _processException(type, message, fileurl, lineno, frames, options) { + var prefixedMessage = (type ? type + ': ' : '') + (message || ''); + + if (!!this._globalOptions.ignoreErrors.test && (this._globalOptions.ignoreErrors.test(message) || this._globalOptions.ignoreErrors.test(prefixedMessage))) { + return; + } + + var stacktrace; + + if (frames && frames.length) { + fileurl = frames[0].filename || fileurl; // Sentry expects frames oldest to newest + // and JS sends them as newest to oldest + + frames.reverse(); + stacktrace = { + frames: frames + }; + } else if (fileurl) { + stacktrace = { + frames: [{ + filename: fileurl, + lineno: lineno, + in_app: true + }] + }; + } + + if (!!this._globalOptions.ignoreUrls.test && this._globalOptions.ignoreUrls.test(fileurl)) { + return; + } + + if (!!this._globalOptions.whitelistUrls.test && !this._globalOptions.whitelistUrls.test(fileurl)) { + return; + } + + var data = objectMerge({ + // sentry.interfaces.Exception + exception: { + values: [{ + type: type, + value: message, + stacktrace: stacktrace + }] + }, + culprit: fileurl + }, options); // Fire away! + + this._send(data); + }, + _trimPacket: function _trimPacket(data) { + // For now, we only want to truncate the two different messages + // but this could/should be expanded to just trim everything + var max = this._globalOptions.maxMessageLength; + + if (data.message) { + data.message = truncate(data.message, max); + } + + if (data.exception) { + var exception = data.exception.values[0]; + exception.value = truncate(exception.value, max); + } + + var request = data.request; + + if (request) { + if (request.url) { + request.url = truncate(request.url, this._globalOptions.maxUrlLength); + } + + if (request.Referer) { + request.Referer = truncate(request.Referer, this._globalOptions.maxUrlLength); + } + } + + if (data.breadcrumbs && data.breadcrumbs.values) this._trimBreadcrumbs(data.breadcrumbs); + return data; + }, + + /** + * Truncate breadcrumb values (right now just URLs) + */ + _trimBreadcrumbs: function _trimBreadcrumbs(breadcrumbs) { + // known breadcrumb properties with urls + // TODO: also consider arbitrary prop values that start with (https?)?:// + var urlProps = ['to', 'from', 'url'], + urlProp, + crumb, + data; + + for (var i = 0; i < breadcrumbs.values.length; ++i) { + crumb = breadcrumbs.values[i]; + if (!crumb.hasOwnProperty('data') || !isObject(crumb.data) || objectFrozen(crumb.data)) continue; + data = objectMerge({}, crumb.data); + + for (var j = 0; j < urlProps.length; ++j) { + urlProp = urlProps[j]; + + if (data.hasOwnProperty(urlProp) && data[urlProp]) { + data[urlProp] = truncate(data[urlProp], this._globalOptions.maxUrlLength); + } + } + + breadcrumbs.values[i].data = data; + } + }, + _getHttpData: function _getHttpData() { + if (!this._hasNavigator && !this._hasDocument) return; + var httpData = {}; + + if (this._hasNavigator && _navigator.userAgent) { + httpData.headers = { + 'User-Agent': navigator.userAgent + }; + } // Check in `window` instead of `document`, as we may be in ServiceWorker environment + + + if (_window$1.location && _window$1.location.href) { + httpData.url = _window$1.location.href; + } + + if (this._hasDocument && _document.referrer) { + if (!httpData.headers) httpData.headers = {}; + httpData.headers.Referer = _document.referrer; + } + + return httpData; + }, + _resetBackoff: function _resetBackoff() { + this._backoffDuration = 0; + this._backoffStart = null; + }, + _shouldBackoff: function _shouldBackoff() { + return this._backoffDuration && now() - this._backoffStart < this._backoffDuration; + }, + + /** + * Returns true if the in-process data payload matches the signature + * of the previously-sent data + * + * NOTE: This has to be done at this level because TraceKit can generate + * data from window.onerror WITHOUT an exception object (IE8, IE9, + * other old browsers). This can take the form of an "exception" + * data object with a single frame (derived from the onerror args). + */ + _isRepeatData: function _isRepeatData(current) { + var last = this._lastData; + if (!last || current.message !== last.message || // defined for captureMessage + current.culprit !== last.culprit // defined for captureException/onerror + ) return false; // Stacktrace interface (i.e. from captureMessage) + + if (current.stacktrace || last.stacktrace) { + return isSameStacktrace(current.stacktrace, last.stacktrace); + } else if (current.exception || last.exception) { + // Exception interface (i.e. from captureException/onerror) + return isSameException(current.exception, last.exception); + } + + return true; + }, + _setBackoffState: function _setBackoffState(request) { + // If we are already in a backoff state, don't change anything + if (this._shouldBackoff()) { + return; + } + + var status = request.status; // 400 - project_id doesn't exist or some other fatal + // 401 - invalid/revoked dsn + // 429 - too many requests + + if (!(status === 400 || status === 401 || status === 429)) return; + var retry; + + try { + // If Retry-After is not in Access-Control-Expose-Headers, most + // browsers will throw an exception trying to access it + if (supportsFetch()) { + retry = request.headers.get('Retry-After'); + } else { + retry = request.getResponseHeader('Retry-After'); + } // Retry-After is returned in seconds + + + retry = parseInt(retry, 10) * 1000; + } catch (e) { + /* eslint no-empty:0 */ + } + + this._backoffDuration = retry ? // If Sentry server returned a Retry-After value, use it + retry : // Otherwise, double the last backoff duration (starts at 1 sec) + this._backoffDuration * 2 || 1000; + this._backoffStart = now(); + }, + _send: function _send(data) { + var globalOptions = this._globalOptions; + + var baseData = { + project: this._globalProject, + logger: globalOptions.logger, + platform: 'javascript' + }, + httpData = this._getHttpData(); + + if (httpData) { + baseData.request = httpData; + } // HACK: delete `trimHeadFrames` to prevent from appearing in outbound payload + + + if (data.trimHeadFrames) delete data.trimHeadFrames; + data = objectMerge(baseData, data); // Merge in the tags and extra separately since objectMerge doesn't handle a deep merge + + data.tags = objectMerge(objectMerge({}, this._globalContext.tags), data.tags); + data.extra = objectMerge(objectMerge({}, this._globalContext.extra), data.extra); // Send along our own collected metadata with extra + + data.extra['session:duration'] = now() - this._startTime; + + if (this._breadcrumbs && this._breadcrumbs.length > 0) { + // intentionally make shallow copy so that additions + // to breadcrumbs aren't accidentally sent in this request + data.breadcrumbs = { + values: [].slice.call(this._breadcrumbs, 0) + }; + } + + if (this._globalContext.user) { + // sentry.interfaces.User + data.user = this._globalContext.user; + } // Include the environment if it's defined in globalOptions + + + if (globalOptions.environment) data.environment = globalOptions.environment; // Include the release if it's defined in globalOptions + + if (globalOptions.release) data.release = globalOptions.release; // Include server_name if it's defined in globalOptions + + if (globalOptions.serverName) data.server_name = globalOptions.serverName; // Cleanup empty properties before sending them to the server + + Object.keys(data).forEach(function (key) { + if (data[key] == null || data[key] === '' || isEmptyObject(data[key])) { + delete data[key]; + } + }); + + if (isFunction(globalOptions.dataCallback)) { + data = globalOptions.dataCallback(data) || data; + } // Why?????????? + + + if (!data || isEmptyObject(data)) { + return; + } // Check if the request should be filtered or not + + + if (isFunction(globalOptions.shouldSendCallback) && !globalOptions.shouldSendCallback(data)) { + return; + } // Backoff state: Sentry server previously responded w/ an error (e.g. 429 - too many requests), + // so drop requests until "cool-off" period has elapsed. + + + if (this._shouldBackoff()) { + this._logDebug('warn', 'Raven dropped error due to backoff: ', data); + + return; + } + + if (typeof globalOptions.sampleRate === 'number') { + if (Math.random() < globalOptions.sampleRate) { + this._sendProcessedPayload(data); + } + } else { + this._sendProcessedPayload(data); + } + }, + _getUuid: function _getUuid() { + return uuid4(); + }, + _sendProcessedPayload: function _sendProcessedPayload(data, callback) { + var self = this; + var globalOptions = this._globalOptions; + if (!this.isSetup()) return; // Try and clean up the packet before sending by truncating long values + + data = this._trimPacket(data); // ideally duplicate error testing should occur *before* dataCallback/shouldSendCallback, + // but this would require copying an un-truncated copy of the data packet, which can be + // arbitrarily deep (extra_data) -- could be worthwhile? will revisit + + if (!this._globalOptions.allowDuplicates && this._isRepeatData(data)) { + this._logDebug('warn', 'Raven dropped repeat event: ', data); + + return; + } // Send along an event_id if not explicitly passed. + // This event_id can be used to reference the error within Sentry itself. + // Set lastEventId after we know the error should actually be sent + + + this._lastEventId = data.event_id || (data.event_id = this._getUuid()); // Store outbound payload after trim + + this._lastData = data; + + this._logDebug('debug', 'Raven about to send:', data); + + var auth = { + sentry_version: '7', + sentry_client: 'raven-js/' + this.VERSION, + sentry_key: this._globalKey + }; + + if (this._globalSecret) { + auth.sentry_secret = this._globalSecret; + } + + var exception = data.exception && data.exception.values[0]; // only capture 'sentry' breadcrumb is autoBreadcrumbs is truthy + + if (this._globalOptions.autoBreadcrumbs && this._globalOptions.autoBreadcrumbs.sentry) { + this.captureBreadcrumb({ + category: 'sentry', + message: exception ? (exception.type ? exception.type + ': ' : '') + exception.value : data.message, + event_id: data.event_id, + level: data.level || 'error' // presume error unless specified + + }); + } + + var url = this._globalEndpoint; + + (globalOptions.transport || this._makeRequest).call(this, { + url: url, + auth: auth, + data: data, + options: globalOptions, + onSuccess: function success() { + self._resetBackoff(); + + self._triggerEvent('success', { + data: data, + src: url + }); + + callback && callback(); + }, + onError: function failure(error) { + self._logDebug('error', 'Raven transport failed to send: ', error); + + if (error.request) { + self._setBackoffState(error.request); + } + + self._triggerEvent('failure', { + data: data, + src: url + }); + + error = error || new Error('Raven send failed (no additional details provided)'); + callback && callback(error); + } + }); + }, + _makeRequest: function _makeRequest(opts) { + // Auth is intentionally sent as part of query string (NOT as custom HTTP header) to avoid preflight CORS requests + var url = opts.url + '?' + urlencode(opts.auth); + var evaluatedHeaders = null; + var evaluatedFetchParameters = {}; + + if (opts.options.headers) { + evaluatedHeaders = this._evaluateHash(opts.options.headers); + } + + if (opts.options.fetchParameters) { + evaluatedFetchParameters = this._evaluateHash(opts.options.fetchParameters); + } + + if (supportsFetch()) { + evaluatedFetchParameters.body = stringify_1(opts.data); + var defaultFetchOptions = objectMerge({}, this._fetchDefaults); + var fetchOptions = objectMerge(defaultFetchOptions, evaluatedFetchParameters); + + if (evaluatedHeaders) { + fetchOptions.headers = evaluatedHeaders; + } + + return _window$1.fetch(url, fetchOptions).then(function (response) { + if (response.ok) { + opts.onSuccess && opts.onSuccess(); + } else { + var error = new Error('Sentry error code: ' + response.status); // It's called request only to keep compatibility with XHR interface + // and not add more redundant checks in setBackoffState method + + error.request = response; + opts.onError && opts.onError(error); + } + })['catch'](function () { + opts.onError && opts.onError(new Error('Sentry error code: network unavailable')); + }); + } + + var request = _window$1.XMLHttpRequest && new _window$1.XMLHttpRequest(); + if (!request) return; // if browser doesn't support CORS (e.g. IE7), we are out of luck + + var hasCORS = 'withCredentials' in request || typeof XDomainRequest !== 'undefined'; + if (!hasCORS) return; + + if ('withCredentials' in request) { + request.onreadystatechange = function () { + if (request.readyState !== 4) { + return; + } else if (request.status === 200) { + opts.onSuccess && opts.onSuccess(); + } else if (opts.onError) { + var err = new Error('Sentry error code: ' + request.status); + err.request = request; + opts.onError(err); + } + }; + } else { + request = new XDomainRequest(); // xdomainrequest cannot go http -> https (or vice versa), + // so always use protocol relative + + url = url.replace(/^https?:/, ''); // onreadystatechange not supported by XDomainRequest + + if (opts.onSuccess) { + request.onload = opts.onSuccess; + } + + if (opts.onError) { + request.onerror = function () { + var err = new Error('Sentry error code: XDomainRequest'); + err.request = request; + opts.onError(err); + }; + } + } + + request.open('POST', url); + + if (evaluatedHeaders) { + each(evaluatedHeaders, function (key, value) { + request.setRequestHeader(key, value); + }); + } + + request.send(stringify_1(opts.data)); + }, + _evaluateHash: function _evaluateHash(hash) { + var evaluated = {}; + + for (var key in hash) { + if (hash.hasOwnProperty(key)) { + var value = hash[key]; + evaluated[key] = typeof value === 'function' ? value() : value; + } + } + + return evaluated; + }, + _logDebug: function _logDebug(level) { + if (this._originalConsoleMethods[level] && this.debug) { + // In IE<10 console methods do not have their own 'apply' method + Function.prototype.apply.call(this._originalConsoleMethods[level], this._originalConsole, [].slice.call(arguments, 1)); + } + }, + _mergeContext: function _mergeContext(key, context) { + if (isUndefined(context)) { + delete this._globalContext[key]; + } else { + this._globalContext[key] = objectMerge(this._globalContext[key] || {}, context); + } + } +}; // Deprecations + +Raven$1.prototype.setUser = Raven$1.prototype.setUserContext; +Raven$1.prototype.setReleaseContext = Raven$1.prototype.setRelease; +var raven = Raven$1; + +/** + * Enforces a single instance of the Raven client, and the + * main entry point for Raven. If you are a consumer of the + * Raven library, you SHOULD load this file (vs raven.js). + **/ +// This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) + +var _window = typeof window !== 'undefined' ? window : typeof commonjsGlobal !== 'undefined' ? commonjsGlobal : typeof self !== 'undefined' ? self : {}; + +var _Raven = _window.Raven; +var Raven = new raven(); +/* + * Allow multiple versions of Raven to be installed. + * Strip Raven from the global context and returns the instance. + * + * @return {Raven} + */ + +Raven.noConflict = function () { + _window.Raven = _Raven; + return Raven; +}; + +Raven.afterLoad(); +var singleton = Raven; + +/** + * Angular.js plugin + * + * Provides an $exceptionHandler for Angular.js + */ + +var wrappedCallback$1 = utils.wrappedCallback; // See https://github.com/angular/angular.js/blob/v1.4.7/src/minErr.js + +var angularPattern = /^\[((?:[$a-zA-Z0-9]+:)?(?:[$a-zA-Z0-9]+))\] (.*?)\n?(\S+)$/; +var moduleName = 'ngRaven'; + +function angularPlugin(Raven, angular) { + angular = angular || window.angular; + if (!angular) return; + + function RavenProvider() { + this.$get = ['$window', function ($window) { + return Raven; + }]; + } + + function ExceptionHandlerProvider($provide) { + $provide.decorator('$exceptionHandler', ['Raven', '$delegate', exceptionHandler]); + } + + function exceptionHandler(R, $delegate) { + return function (ex, cause) { + R.captureException(ex, { + extra: { + cause: cause + } + }); + $delegate(ex, cause); + }; + } + + angular.module(moduleName, []).provider('Raven', RavenProvider).config(['$provide', ExceptionHandlerProvider]); + Raven.setDataCallback(wrappedCallback$1(function (data) { + return angularPlugin._normalizeData(data); + })); +} + +angularPlugin._normalizeData = function (data) { + // We only care about mutating an exception + var exception = data.exception; + + if (exception) { + exception = exception.values[0]; + var matches = angularPattern.exec(exception.value); + + if (matches) { + // This type now becomes something like: $rootScope:inprog + exception.type = matches[1]; + exception.value = matches[2]; + data.message = exception.type + ': ' + exception.value; // auto set a new tag specifically for the angular error url + + data.extra.angularDocs = matches[3].substr(0, 250); + } + } + + return data; +}; + +angularPlugin.moduleName = moduleName; +var angular$2 = angularPlugin; + +/* This file was generated by './scripts/generate-plugin-combinations.js'! */ + +singleton.addPlugin(angular$2); +var angular = {}; + +return angular; + +}))); diff --git a/dist/angular/raven.min.js b/dist/angular/raven.min.js new file mode 100644 index 000000000000..e908d53c734a --- /dev/null +++ b/dist/angular/raven.min.js @@ -0,0 +1,3 @@ +/*! Raven.js 3.22.2 (1b6187b) | github.com/getsentry/raven-js */ +!function(a,b){"object"==typeof exports&&"undefined"!=typeof module?module.exports=b():"function"==typeof define&&define.amd?define(b):a.Raven=b()}(this,function(){"use strict";function a(a,b){return b={exports:{}},a(b,b.exports),b.exports}function b(a){return(b="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(a){return typeof a}:function(a){return a&&"function"==typeof Symbol&&a.constructor===Symbol&&a!==Symbol.prototype?"symbol":typeof a})(a)}function c(a){return"object"===b(a)&&null!==a}function d(a){switch({}.toString.call(a)){case"[object Error]":return!0;case"[object Exception]":return!0;case"[object DOMException]":return!0;default:return a instanceof Error}}function e(a){return l()&&"[object ErrorEvent]"==={}.toString.call(a)}function f(a){return void 0===a}function g(a){return"function"==typeof a}function h(a){return"[object Object]"===Object.prototype.toString.call(a)}function i(a){return"[object String]"===Object.prototype.toString.call(a)}function j(a){return"[object Array]"===Object.prototype.toString.call(a)}function k(a){if(!h(a))return!1;for(var b in a)if(a.hasOwnProperty(b))return!1;return!0}function l(){try{return new ErrorEvent(""),!0}catch(a){return!1}}function m(){if(!("fetch"in N))return!1;try{return new Headers,new Request(""),new Response,!0}catch(a){return!1}}function n(a){function b(b,c){var d=a(b)||b;return c?c(d)||d:d}return b}function o(a,b){var c,d;if(f(a.length))for(c in a)s(a,c)&&b.call(null,c,a[c]);else if(d=a.length)for(c=0;c ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function y(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&i(b))for(c=b.split(/\s+/),f=0;f=0;--b)l[b]===a&&l.splice(b,1)}function c(){g(),l=[]}function d(a,b){var c=null;if(!b||P.collectWindowErrors){for(var d in l)if(l.hasOwnProperty(d))try{l[d].apply(null,[a].concat(R.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function e(a,b,c,e,f){var g=null,i=O.isErrorEvent(f)?f.error:f,k=O.isErrorEvent(a)?a.message:a;if(o)P.computeStackTrace.augmentStackTraceWithInitialElement(o,b,c,k),h();else if(i&&O.isError(i))g=P.computeStackTrace(i),d(g,!0);else{var l,m={url:b,line:c,column:e},n=void 0;if("[object String]"==={}.toString.call(k)){var l=k.match(T);l&&(n=l[1],k=l[2])}m.func=S,g={name:n,message:k,url:F(),stack:[m]},d(g,!0)}return!!j&&j.apply(this,arguments)}function f(){k||(j=Q.onerror,Q.onerror=e,k=!0)}function g(){k&&(Q.onerror=j,k=!1,j=void 0)}function h(){var a=o,b=m;m=null,o=null,n=null,d.apply(null,[a,!1].concat(b))}function i(a,b){var c=R.call(arguments,1);if(o){if(n===a)return;h()}var d=P.computeStackTrace(a);if(o=d,n=a,m=c,setTimeout(function(){n===a&&h()},d.incomplete?2e3:0),b!==!1)throw a}var j,k,l=[],m=null,n=null,o=null;return i.subscribe=a,i.unsubscribe=b,i.uninstall=c,i}(),P.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,d,e=/^\s*at (.*?) ?\(((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,f=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|\[native).*?|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,g=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,h=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,i=/\((\S*)(?::(\d+))(?::(\d+))\)/,j=a.stack.split("\n"),k=[],l=(/^(.*) is undefined$/.exec(a.message),0),m=j.length;l eval")>-1;o&&(b=h.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==l||c[5]||"undefined"==typeof a.columnNumber||(k[0].column=a.columnNumber+1),d={url:c[3],func:c[1]||S,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}!d.func&&d.line&&(d.func=S),k.push(d)}return k.length?{name:a.name,message:a.message,url:F(),stack:k}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=S),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,e){for(var f,g,h=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,i=[],j={},k=!1,l=c.caller;l&&!k;l=l.caller)if(l!==d&&l!==P.report){if(g={url:null,func:S,line:null,column:null},l.name?g.func=l.name:(f=h.exec(l.toString()))&&(g.func=f[1]),"undefined"==typeof g.func)try{g.func=f.input.substring(0,f.input.indexOf("{"))}catch(m){}j[""+l]?k=!0:j[""+l]=!0,i.push(g)}e&&i.splice(0,e);var n={name:a.name,message:a.message,url:F(),stack:i};return b(n,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),n}function d(b,d){var e=null;d=null==d?0:+d;try{if(e=a(b))return e}catch(f){if(P.debug)throw f}try{if(e=c(b,d+1))return e}catch(f){if(P.debug)throw f}return{name:b.name,message:b.message,url:F()}}return d.augmentStackTraceWithInitialElement=b,d.computeStackTraceFromStackProp=a,d}();var U=P,V=a(function(a,b){function c(a,b){for(var c=0;c0){var i=c(d,this);~i?d.splice(i+1):d.push(this),~i?f.splice(i,1/0,g):f.push(g),~c(d,h)&&(h=b.call(this,g,h))}else d.push(h);return null==a?h instanceof Error?e(h):h:a.call(this,g,h)}}b=a.exports=d,b.getSerialize=f});G.prototype=new Error,G.prototype.constructor=G;var W=G,X=function(a,b,c){var d=a[b],e=a;if(b in a){var f="warn"===b?"warning":b;a[b]=function(){var a=[].slice.call(arguments),g=O.safeJoin(a," "),h={level:f,logger:"console",extra:{arguments:a}};"assert"===b?a[0]===!1&&(g="Assertion failed: "+(O.safeJoin(a.slice(1)," ")||"console.assert"),h.extra.arguments=a.slice(1),c&&c(g,h)):c&&c(g,h),d&&Function.prototype.apply.call(d,e,a)}}},Y={wrapMethod:X},Z=O.isError,$=O.isObject,_=O.isErrorEvent,aa=O.isUndefined,ba=O.isFunction,ca=O.isString,da=O.isArray,ea=O.isEmptyObject,fa=O.each,ga=O.objectMerge,ha=O.truncate,ia=O.objectFrozen,ja=O.hasKey,ka=O.joinRegExp,la=O.urlencode,ma=O.uuid4,na=O.htmlTreeAsString,oa=O.isSameException,pa=O.isSameStacktrace,qa=O.parseUrl,ra=O.fill,sa=O.supportsFetch,ta=Y.wrapMethod,ua="source protocol user pass host port path".split(" "),va=/^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/,wa="undefined"!=typeof window?window:"undefined"!=typeof L?L:"undefined"!=typeof self?self:{},xa=wa.document,ya=wa.navigator;J.prototype={VERSION:"3.22.2",debug:!1,TraceKit:U,config:function(a,b){var c=this;if(c.i)return this.D("error","Error: Raven has already been configured"),c;if(!a)return c;var d=c.m;b&&fa(b,function(a,b){"tags"===a||"extra"===a||"user"===a?c.l[a]=b:d[a]=b}),c.setDSN(a),d.ignoreErrors.push(/^Script error\.?$/),d.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/),d.ignoreErrors=ka(d.ignoreErrors),d.ignoreUrls=!!d.ignoreUrls.length&&ka(d.ignoreUrls),d.whitelistUrls=!!d.whitelistUrls.length&&ka(d.whitelistUrls),d.includePaths=ka(d.includePaths),d.maxBreadcrumbs=Math.max(0,Math.min(d.maxBreadcrumbs||100,100));var e={xhr:!0,console:!0,dom:!0,location:!0,sentry:!0},f=d.autoBreadcrumbs;"[object Object]"==={}.toString.call(f)?f=ga(e,f):f!==!1&&(f=e),d.autoBreadcrumbs=f;var g={tryCatch:!0},h=d.instrument;return"[object Object]"==={}.toString.call(h)?h=ga(g,h):h!==!1&&(h=g),d.instrument=h,U.collectWindowErrors=!!d.collectWindowErrors,c},install:function(){var a=this;return a.isSetup()&&!a.p&&(U.report.subscribe(function(){a.E.apply(a,arguments)}),a.F(),a.m.instrument&&a.m.instrument.tryCatch&&a.G(),a.m.autoBreadcrumbs&&a.H(),a.I(),a.p=!0),Error.stackTraceLimit=a.m.stackTraceLimit,this},setDSN:function(a){var b=this,c=b.J(a),d=c.path.lastIndexOf("/"),e=c.path.substr(1,d);b.K=a,b.j=c.user,b.L=c.pass&&c.pass.substr(1),b.k=c.path.substr(d+1),b.i=b.M(c),b.N=b.i+"/"+e+"api/"+b.k+"/store/",this.A()},context:function(a,b,c){return ba(a)&&(c=b||[],b=a,a=void 0),this.wrap(a,b).apply(this,c)},wrap:function(a,b,c){function d(){var d=[],f=arguments.length,g=!a||a&&a.deep!==!1;for(c&&ba(c)&&c.apply(this,arguments);f--;)d[f]=g?e.wrap(a,arguments[f]):arguments[f];try{return b.apply(this,d)}catch(h){throw e.O(),e.captureException(h,a),h}}var e=this;if(aa(b)&&!ba(a))return a;if(ba(a)&&(b=a,a=void 0),!ba(b))return b;try{if(b.a)return b;if(b.P)return b.P}catch(f){return b}for(var g in b)ja(b,g)&&(d[g]=b[g]);return d.prototype=b.prototype,b.P=d,d.a=!0,d.b=b,d},uninstall:function(){return U.report.uninstall(),this.Q(),this.R(),this.S(),Error.stackTraceLimit=this.q,this.p=!1,this},captureException:function(a,b){b=ga({trimHeadFrames:0},b?b:{});var c=!Z(a),d=!_(a),e=_(a)&&!a.error;if(c&&d||e)return this.captureMessage(a,ga(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}));_(a)&&(a=a.error),this.f=a;try{var f=U.computeStackTrace(a);this.T(f,b)}catch(g){if(a!==g)throw g}return this},captureMessage:function(a,b){if(!this.m.ignoreErrors.test||!this.m.ignoreErrors.test(a)){b=b||{};var c,d=ga({message:a+""},b);try{throw new Error(a)}catch(e){c=e}c.name=null;var f=U.computeStackTrace(c),g=da(f.stack)&&f.stack[1],h=g&&g.url||"";if((!this.m.ignoreUrls.test||!this.m.ignoreUrls.test(h))&&(!this.m.whitelistUrls.test||this.m.whitelistUrls.test(h))){if(this.m.stacktrace||b&&b.stacktrace){b=ga({fingerprint:a,trimHeadFrames:(b.trimHeadFrames||0)+1},b);var i=this.U(f,b);d.stacktrace={frames:i.reverse()}}return this.V(d),this}}},captureBreadcrumb:function(a){var b=ga({timestamp:H()/1e3},a);if(ba(this.m.breadcrumbCallback)){var c=this.m.breadcrumbCallback(b);if($(c)&&!ea(c))b=c;else if(c===!1)return this}return this.w.push(b),this.w.length>this.m.maxBreadcrumbs&&this.w.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.t.push([a,b]),this.p&&this.I(),this},setUserContext:function(a){return this.l.user=a,this},setExtraContext:function(a){return this.W("extra",a),this},setTagsContext:function(a){return this.W("tags",a),this},clearContext:function(){return this.l={},this},getContext:function(){return JSON.parse(V(this.l))},setEnvironment:function(a){return this.m.environment=a,this},setRelease:function(a){return this.m.release=a,this},setDataCallback:function(a){var b=this.m.dataCallback;return this.m.dataCallback=I(b,a),this},setBreadcrumbCallback:function(a){var b=this.m.breadcrumbCallback;return this.m.breadcrumbCallback=I(b,a),this},setShouldSendCallback:function(a){var b=this.m.shouldSendCallback;return this.m.shouldSendCallback=I(b,a),this},setTransport:function(a){return this.m.transport=a,this},lastException:function(){return this.f},lastEventId:function(){return this.h},isSetup:function(){return!!this.c&&(!!this.i||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.D("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=wa.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(xa){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new W("Missing eventId");var c=a.dsn||this.K;if(!c)throw new W("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.l.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.M(this.J(c)),h=xa.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(xa.head||xa.body).appendChild(h)}},O:function(){var a=this;this.o+=1,setTimeout(function(){a.o-=1})},X:function(a,b){var c,d;if(this.d){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),xa.createEvent?(c=xa.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=xa.createEventObject(),c.eventType=a);for(d in b)ja(b,d)&&(c[d]=b[d]);if(xa.createEvent)xa.dispatchEvent(c);else try{xa.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},Y:function(a){var b=this;return function(c){if(b.Z=null,b.x!==c){b.x=c;var d;try{d=na(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},$:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.Z;g||a.Y("input")(c),clearTimeout(g),a.Z=setTimeout(function(){a.Z=null},b)}}},_:function(a,b){var c=qa(this.y.href),d=qa(b),e=qa(a);this.z=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},F:function(){var a=this;a.aa=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.a?a.aa.apply(this.b,arguments):a.aa.apply(this,arguments)}},Q:function(){this.aa&&(Function.prototype.toString=this.aa)},G:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b._(b.z,c+""),a.apply(this,arguments)}};ra(history,"pushState",j,d),ra(history,"replaceState",j,d)}if(c.console&&"console"in wa&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};fa(["debug","info","warn","error","log"],function(a,b){ta(console,b,k)})}},R:function(){for(var a;this.v.length;){a=this.v.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},S:function(){for(var a in this.s)this.r[a]=this.s[a]},I:function(){var a=this;fa(this.t,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},J:function(a){var b=va.exec(a),c={},d=7;try{for(;d--;)c[ua[d]]=b[d]||""}catch(e){throw new W("Invalid DSN: "+a)}if(c.pass&&!this.m.allowSecretKey)throw new W("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},M:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},E:function(){this.o||this.T.apply(this,arguments)},T:function(a,b){var c=this.U(a,b);this.X("handle",{stackInfo:a,options:b}),this.ca(a.name,a.message,a.url,a.lineno,c,b)},U:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(fa(a.stack,function(b,e){var f=c.da(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.w,0)}),this.l.user&&(a.user=this.l.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||ea(a[b]))&&delete a[b]}),ba(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!ea(a)&&(!ba(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.ja()?void this.D("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() href parsing trick because React Native and other +// environments where DOM might not be available + + +function parseUrl$1(url) { + if (typeof url !== 'string') return {}; + var match = url.match(/^(([^:\/?#]+):)?(\/\/([^\/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?$/); // coerce to undefined values to empty string so we don't get 'undefined' + + var query = match[6] || ''; + var fragment = match[8] || ''; + return { + protocol: match[2], + host: match[4], + path: match[5], + relative: match[5] + query + fragment // everything minus origin + + }; +} + +function uuid4$1() { + var crypto = _window$3.crypto || _window$3.msCrypto; + + if (!isUndefined$1(crypto) && crypto.getRandomValues) { + // Use window.crypto API if available + // eslint-disable-next-line no-undef + var arr = new Uint16Array(8); + crypto.getRandomValues(arr); // set 4 in byte 7 + + arr[3] = arr[3] & 0xfff | 0x4000; // set 2 most significant bits of byte 9 to '10' + + arr[4] = arr[4] & 0x3fff | 0x8000; + + var pad = function pad(num) { + var v = num.toString(16); + + while (v.length < 4) { + v = '0' + v; + } + + return v; + }; + + return pad(arr[0]) + pad(arr[1]) + pad(arr[2]) + pad(arr[3]) + pad(arr[4]) + pad(arr[5]) + pad(arr[6]) + pad(arr[7]); + } else { + // http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/2117523#2117523 + return 'xxxxxxxxxxxx4xxxyxxxxxxxxxxxxxxx'.replace(/[xy]/g, function (c) { + var r = Math.random() * 16 | 0, + v = c === 'x' ? r : r & 0x3 | 0x8; + return v.toString(16); + }); + } +} +/** + * Given a child DOM element, returns a query-selector statement describing that + * and its ancestors + * e.g. [HTMLElement] => body > div > input#foo.btn[name=baz] + * @param elem + * @returns {string} + */ + + +function htmlTreeAsString$1(elem) { + /* eslint no-extra-parens:0*/ + var MAX_TRAVERSE_HEIGHT = 5, + MAX_OUTPUT_LEN = 80, + out = [], + height = 0, + len = 0, + separator = ' > ', + sepLength = separator.length, + nextStr; + + while (elem && height++ < MAX_TRAVERSE_HEIGHT) { + nextStr = htmlElementAsString(elem); // bail out if + // - nextStr is the 'html' element + // - the length of the string that would be created exceeds MAX_OUTPUT_LEN + // (ignore this limit if we are on the first iteration) + + if (nextStr === 'html' || height > 1 && len + out.length * sepLength + nextStr.length >= MAX_OUTPUT_LEN) { + break; + } + + out.push(nextStr); + len += nextStr.length; + elem = elem.parentNode; + } + + return out.reverse().join(separator); +} +/** + * Returns a simple, query-selector representation of a DOM element + * e.g. [HTMLElement] => input#foo.btn[name=baz] + * @param HTMLElement + * @returns {string} + */ + + +function htmlElementAsString(elem) { + var out = [], + className, + classes, + key, + attr, + i; + + if (!elem || !elem.tagName) { + return ''; + } + + out.push(elem.tagName.toLowerCase()); + + if (elem.id) { + out.push('#' + elem.id); + } + + className = elem.className; + + if (className && isString$1(className)) { + classes = className.split(/\s+/); + + for (i = 0; i < classes.length; i++) { + out.push('.' + classes[i]); + } + } + + var attrWhitelist = ['type', 'name', 'title', 'alt']; + + for (i = 0; i < attrWhitelist.length; i++) { + key = attrWhitelist[i]; + attr = elem.getAttribute(key); + + if (attr) { + out.push('[' + key + '="' + attr + '"]'); + } + } + + return out.join(''); +} +/** + * Returns true if either a OR b is truthy, but not both + */ + + +function isOnlyOneTruthy(a, b) { + return !!(!!a ^ !!b); +} +/** + * Returns true if both parameters are undefined + */ + + +function isBothUndefined(a, b) { + return isUndefined$1(a) && isUndefined$1(b); +} +/** + * Returns true if the two input exception interfaces have the same content + */ + + +function isSameException$1(ex1, ex2) { + if (isOnlyOneTruthy(ex1, ex2)) return false; + ex1 = ex1.values[0]; + ex2 = ex2.values[0]; + if (ex1.type !== ex2.type || ex1.value !== ex2.value) return false; // in case both stacktraces are undefined, we can't decide so default to false + + if (isBothUndefined(ex1.stacktrace, ex2.stacktrace)) return false; + return isSameStacktrace$1(ex1.stacktrace, ex2.stacktrace); +} +/** + * Returns true if the two input stack trace interfaces have the same content + */ + + +function isSameStacktrace$1(stack1, stack2) { + if (isOnlyOneTruthy(stack1, stack2)) return false; + var frames1 = stack1.frames; + var frames2 = stack2.frames; // Exit early if frame count differs + + if (frames1.length !== frames2.length) return false; // Iterate through every frame; bail out if anything differs + + var a, b; + + for (var i = 0; i < frames1.length; i++) { + a = frames1[i]; + b = frames2[i]; + if (a.filename !== b.filename || a.lineno !== b.lineno || a.colno !== b.colno || a['function'] !== b['function']) return false; + } + + return true; +} +/** + * Polyfill a method + * @param obj object e.g. `document` + * @param name method name present on object e.g. `addEventListener` + * @param replacement replacement function + * @param track {optional} record instrumentation to an array + */ + + +function fill$1(obj, name, replacement, track) { + var orig = obj[name]; + obj[name] = replacement(orig); + obj[name].__raven__ = true; + obj[name].__orig__ = orig; + + if (track) { + track.push([obj, name, orig]); + } +} +/** + * Join values in array + * @param input array of values to be joined together + * @param delimiter string to be placed in-between values + * @returns {string} + */ + + +function safeJoin(input, delimiter) { + if (!isArray$1(input)) return ''; + var output = []; + + for (var i = 0; i < input.length; i++) { + try { + output.push(String(input[i])); + } catch (e) { + output.push('[value cannot be serialized]'); + } + } + + return output.join(delimiter); +} + +var utils = { + isObject: isObject$1, + isError: isError$1, + isErrorEvent: isErrorEvent$1, + isUndefined: isUndefined$1, + isFunction: isFunction$1, + isPlainObject: isPlainObject, + isString: isString$1, + isArray: isArray$1, + isEmptyObject: isEmptyObject$1, + supportsErrorEvent: supportsErrorEvent, + supportsFetch: supportsFetch$1, + wrappedCallback: wrappedCallback, + each: each$1, + objectMerge: objectMerge$1, + truncate: truncate$1, + objectFrozen: objectFrozen$1, + hasKey: hasKey$1, + joinRegExp: joinRegExp$1, + urlencode: urlencode$1, + uuid4: uuid4$1, + htmlTreeAsString: htmlTreeAsString$1, + htmlElementAsString: htmlElementAsString, + isSameException: isSameException$1, + isSameStacktrace: isSameStacktrace$1, + parseUrl: parseUrl$1, + fill: fill$1, + safeJoin: safeJoin +}; + +/* + TraceKit - Cross brower stack traces + + This was originally forked from github.com/occ/TraceKit, but has since been + largely re-written and is now maintained as part of raven-js. Tests for + this are in test/vendor. + + MIT license +*/ + +var TraceKit = { + collectWindowErrors: true, + debug: false +}; // This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) + +var _window$2 = typeof window !== 'undefined' ? window : typeof commonjsGlobal !== 'undefined' ? commonjsGlobal : typeof self !== 'undefined' ? self : {}; // global reference to slice + + +var _slice = [].slice; +var UNKNOWN_FUNCTION = '?'; // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error#Error_types + +var ERROR_TYPES_RE = /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/; + +function getLocationHref() { + if (typeof document === 'undefined' || document.location == null) return ''; + return document.location.href; +} +/** + * TraceKit.report: cross-browser processing of unhandled exceptions + * + * Syntax: + * TraceKit.report.subscribe(function(stackInfo) { ... }) + * TraceKit.report.unsubscribe(function(stackInfo) { ... }) + * TraceKit.report(exception) + * try { ...code... } catch(ex) { TraceKit.report(ex); } + * + * Supports: + * - Firefox: full stack trace with line numbers, plus column number + * on top frame; column number is not guaranteed + * - Opera: full stack trace with line and column numbers + * - Chrome: full stack trace with line and column numbers + * - Safari: line and column number for the top frame only; some frames + * may be missing, and column number is not guaranteed + * - IE: line and column number for the top frame only; some frames + * may be missing, and column number is not guaranteed + * + * In theory, TraceKit should work on all of the following versions: + * - IE5.5+ (only 8.0 tested) + * - Firefox 0.9+ (only 3.5+ tested) + * - Opera 7+ (only 10.50 tested; versions 9 and earlier may require + * Exceptions Have Stacktrace to be enabled in opera:config) + * - Safari 3+ (only 4+ tested) + * - Chrome 1+ (only 5+ tested) + * - Konqueror 3.5+ (untested) + * + * Requires TraceKit.computeStackTrace. + * + * Tries to catch all unhandled exceptions and report them to the + * subscribed handlers. Please note that TraceKit.report will rethrow the + * exception. This is REQUIRED in order to get a useful stack trace in IE. + * If the exception does not reach the top of the browser, you will only + * get a stack trace from the point where TraceKit.report was called. + * + * Handlers receive a stackInfo object as described in the + * TraceKit.computeStackTrace docs. + */ + + +TraceKit.report = function reportModuleWrapper() { + var handlers = [], + lastArgs = null, + lastException = null, + lastExceptionStack = null; + /** + * Add a crash handler. + * @param {Function} handler + */ + + function subscribe(handler) { + installGlobalHandler(); + handlers.push(handler); + } + /** + * Remove a crash handler. + * @param {Function} handler + */ + + + function unsubscribe(handler) { + for (var i = handlers.length - 1; i >= 0; --i) { + if (handlers[i] === handler) { + handlers.splice(i, 1); + } + } + } + /** + * Remove all crash handlers. + */ + + + function unsubscribeAll() { + uninstallGlobalHandler(); + handlers = []; + } + /** + * Dispatch stack information to all handlers. + * @param {Object.} stack + */ + + + function notifyHandlers(stack, isWindowError) { + var exception = null; + + if (isWindowError && !TraceKit.collectWindowErrors) { + return; + } + + for (var i in handlers) { + if (handlers.hasOwnProperty(i)) { + try { + handlers[i].apply(null, [stack].concat(_slice.call(arguments, 2))); + } catch (inner) { + exception = inner; + } + } + } + + if (exception) { + throw exception; + } + } + + var _oldOnerrorHandler, _onErrorHandlerInstalled; + /** + * Ensures all global unhandled exceptions are recorded. + * Supported by Gecko and IE. + * @param {string} msg Error message. + * @param {string} url URL of script that generated the exception. + * @param {(number|string)} lineNo The line number at which the error + * occurred. + * @param {?(number|string)} colNo The column number at which the error + * occurred. + * @param {?Error} ex The actual Error object. + */ + + + function traceKitWindowOnError(msg, url, lineNo, colNo, ex) { + var stack = null; // If 'ex' is ErrorEvent, get real Error from inside + + var exception = utils.isErrorEvent(ex) ? ex.error : ex; // If 'msg' is ErrorEvent, get real message from inside + + var message = utils.isErrorEvent(msg) ? msg.message : msg; + + if (lastExceptionStack) { + TraceKit.computeStackTrace.augmentStackTraceWithInitialElement(lastExceptionStack, url, lineNo, message); + processLastException(); + } else if (exception && utils.isError(exception)) { + // non-string `exception` arg; attempt to extract stack trace + // New chrome and blink send along a real error object + // Let's just report that like a normal error. + // See: https://mikewest.org/2013/08/debugging-runtime-errors-with-window-onerror + stack = TraceKit.computeStackTrace(exception); + notifyHandlers(stack, true); + } else { + var location = { + url: url, + line: lineNo, + column: colNo + }; + var name = undefined; + var groups; + + if ({}.toString.call(message) === '[object String]') { + var groups = message.match(ERROR_TYPES_RE); + + if (groups) { + name = groups[1]; + message = groups[2]; + } + } + + location.func = UNKNOWN_FUNCTION; + stack = { + name: name, + message: message, + url: getLocationHref(), + stack: [location] + }; + notifyHandlers(stack, true); + } + + if (_oldOnerrorHandler) { + return _oldOnerrorHandler.apply(this, arguments); + } + + return false; + } + + function installGlobalHandler() { + if (_onErrorHandlerInstalled) { + return; + } + + _oldOnerrorHandler = _window$2.onerror; + _window$2.onerror = traceKitWindowOnError; + _onErrorHandlerInstalled = true; + } + + function uninstallGlobalHandler() { + if (!_onErrorHandlerInstalled) { + return; + } + + _window$2.onerror = _oldOnerrorHandler; + _onErrorHandlerInstalled = false; + _oldOnerrorHandler = undefined; + } + + function processLastException() { + var _lastExceptionStack = lastExceptionStack, + _lastArgs = lastArgs; + lastArgs = null; + lastExceptionStack = null; + lastException = null; + notifyHandlers.apply(null, [_lastExceptionStack, false].concat(_lastArgs)); + } + /** + * Reports an unhandled Error to TraceKit. + * @param {Error} ex + * @param {?boolean} rethrow If false, do not re-throw the exception. + * Only used for window.onerror to not cause an infinite loop of + * rethrowing. + */ + + + function report(ex, rethrow) { + var args = _slice.call(arguments, 1); + + if (lastExceptionStack) { + if (lastException === ex) { + return; // already caught by an inner catch block, ignore + } else { + processLastException(); + } + } + + var stack = TraceKit.computeStackTrace(ex); + lastExceptionStack = stack; + lastException = ex; + lastArgs = args; // If the stack trace is incomplete, wait for 2 seconds for + // slow slow IE to see if onerror occurs or not before reporting + // this exception; otherwise, we will end up with an incomplete + // stack trace + + setTimeout(function () { + if (lastException === ex) { + processLastException(); + } + }, stack.incomplete ? 2000 : 0); + + if (rethrow !== false) { + throw ex; // re-throw to propagate to the top level (and cause window.onerror) + } + } + + report.subscribe = subscribe; + report.unsubscribe = unsubscribe; + report.uninstall = unsubscribeAll; + return report; +}(); +/** + * TraceKit.computeStackTrace: cross-browser stack traces in JavaScript + * + * Syntax: + * s = TraceKit.computeStackTrace(exception) // consider using TraceKit.report instead (see below) + * Returns: + * s.name - exception name + * s.message - exception message + * s.stack[i].url - JavaScript or HTML file URL + * s.stack[i].func - function name, or empty for anonymous functions (if guessing did not work) + * s.stack[i].args - arguments passed to the function, if known + * s.stack[i].line - line number, if known + * s.stack[i].column - column number, if known + * + * Supports: + * - Firefox: full stack trace with line numbers and unreliable column + * number on top frame + * - Opera 10: full stack trace with line and column numbers + * - Opera 9-: full stack trace with line numbers + * - Chrome: full stack trace with line and column numbers + * - Safari: line and column number for the topmost stacktrace element + * only + * - IE: no line numbers whatsoever + * + * Tries to guess names of anonymous functions by looking for assignments + * in the source code. In IE and Safari, we have to guess source file names + * by searching for function bodies inside all page scripts. This will not + * work for scripts that are loaded cross-domain. + * Here be dragons: some function names may be guessed incorrectly, and + * duplicate functions may be mismatched. + * + * TraceKit.computeStackTrace should only be used for tracing purposes. + * Logging of unhandled exceptions should be done with TraceKit.report, + * which builds on top of TraceKit.computeStackTrace and provides better + * IE support by utilizing the window.onerror event to retrieve information + * about the top of the stack. + * + * Note: In IE and Safari, no stack trace is recorded on the Error object, + * so computeStackTrace instead walks its *own* chain of callers. + * This means that: + * * in Safari, some methods may be missing from the stack trace; + * * in IE, the topmost function in the stack trace will always be the + * caller of computeStackTrace. + * + * This is okay for tracing (because you are likely to be calling + * computeStackTrace from the function you want to be the topmost element + * of the stack trace anyway), but not okay for logging unhandled + * exceptions (because your catch block will likely be far away from the + * inner function that actually caused the exception). + * + */ + + +TraceKit.computeStackTrace = function computeStackTraceWrapper() { + // Contents of Exception in various browsers. + // + // SAFARI: + // ex.message = Can't find variable: qq + // ex.line = 59 + // ex.sourceId = 580238192 + // ex.sourceURL = http://... + // ex.expressionBeginOffset = 96 + // ex.expressionCaretOffset = 98 + // ex.expressionEndOffset = 98 + // ex.name = ReferenceError + // + // FIREFOX: + // ex.message = qq is not defined + // ex.fileName = http://... + // ex.lineNumber = 59 + // ex.columnNumber = 69 + // ex.stack = ...stack trace... (see the example below) + // ex.name = ReferenceError + // + // CHROME: + // ex.message = qq is not defined + // ex.name = ReferenceError + // ex.type = not_defined + // ex.arguments = ['aa'] + // ex.stack = ...stack trace... + // + // INTERNET EXPLORER: + // ex.message = ... + // ex.name = ReferenceError + // + // OPERA: + // ex.message = ...message... (see the example below) + // ex.name = ReferenceError + // ex.opera#sourceloc = 11 (pretty much useless, duplicates the info in ex.message) + // ex.stacktrace = n/a; see 'opera:config#UserPrefs|Exceptions Have Stacktrace' + + /** + * Computes stack trace information from the stack property. + * Chrome and Gecko use this property. + * @param {Error} ex + * @return {?Object.} Stack trace information. + */ + function computeStackTraceFromStackProp(ex) { + if (typeof ex.stack === 'undefined' || !ex.stack) return; + var chrome = /^\s*at (.*?) ?\(((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i, + gecko = /^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|\[native).*?|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i, + winjs = /^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i, + // Used to additionally parse URL/line/column from eval frames + geckoEval = /(\S+) line (\d+)(?: > eval line \d+)* > eval/i, + chromeEval = /\((\S*)(?::(\d+))(?::(\d+))\)/, + lines = ex.stack.split('\n'), + stack = [], + submatch, + parts, + element, + reference = /^(.*) is undefined$/.exec(ex.message); + + for (var i = 0, j = lines.length; i < j; ++i) { + if (parts = chrome.exec(lines[i])) { + var isNative = parts[2] && parts[2].indexOf('native') === 0; // start of line + + var isEval = parts[2] && parts[2].indexOf('eval') === 0; // start of line + + if (isEval && (submatch = chromeEval.exec(parts[2]))) { + // throw out eval line/column and use top-most line/column number + parts[2] = submatch[1]; // url + + parts[3] = submatch[2]; // line + + parts[4] = submatch[3]; // column + } + + element = { + url: !isNative ? parts[2] : null, + func: parts[1] || UNKNOWN_FUNCTION, + args: isNative ? [parts[2]] : [], + line: parts[3] ? +parts[3] : null, + column: parts[4] ? +parts[4] : null + }; + } else if (parts = winjs.exec(lines[i])) { + element = { + url: parts[2], + func: parts[1] || UNKNOWN_FUNCTION, + args: [], + line: +parts[3], + column: parts[4] ? +parts[4] : null + }; + } else if (parts = gecko.exec(lines[i])) { + var isEval = parts[3] && parts[3].indexOf(' > eval') > -1; + + if (isEval && (submatch = geckoEval.exec(parts[3]))) { + // throw out eval line/column and use top-most line number + parts[3] = submatch[1]; + parts[4] = submatch[2]; + parts[5] = null; // no column when eval + } else if (i === 0 && !parts[5] && typeof ex.columnNumber !== 'undefined') { + // FireFox uses this awesome columnNumber property for its top frame + // Also note, Firefox's column number is 0-based and everything else expects 1-based, + // so adding 1 + // NOTE: this hack doesn't work if top-most frame is eval + stack[0].column = ex.columnNumber + 1; + } + + element = { + url: parts[3], + func: parts[1] || UNKNOWN_FUNCTION, + args: parts[2] ? parts[2].split(',') : [], + line: parts[4] ? +parts[4] : null, + column: parts[5] ? +parts[5] : null + }; + } else { + continue; + } + + if (!element.func && element.line) { + element.func = UNKNOWN_FUNCTION; + } + + stack.push(element); + } + + if (!stack.length) { + return null; + } + + return { + name: ex.name, + message: ex.message, + url: getLocationHref(), + stack: stack + }; + } + /** + * Adds information about the first frame to incomplete stack traces. + * Safari and IE require this to get complete data on the first frame. + * @param {Object.} stackInfo Stack trace information from + * one of the compute* methods. + * @param {string} url The URL of the script that caused an error. + * @param {(number|string)} lineNo The line number of the script that + * caused an error. + * @param {string=} message The error generated by the browser, which + * hopefully contains the name of the object that caused the error. + * @return {boolean} Whether or not the stack information was + * augmented. + */ + + + function augmentStackTraceWithInitialElement(stackInfo, url, lineNo, message) { + var initial = { + url: url, + line: lineNo + }; + + if (initial.url && initial.line) { + stackInfo.incomplete = false; + + if (!initial.func) { + initial.func = UNKNOWN_FUNCTION; + } + + if (stackInfo.stack.length > 0) { + if (stackInfo.stack[0].url === initial.url) { + if (stackInfo.stack[0].line === initial.line) { + return false; // already in stack trace + } else if (!stackInfo.stack[0].line && stackInfo.stack[0].func === initial.func) { + stackInfo.stack[0].line = initial.line; + return false; + } + } + } + + stackInfo.stack.unshift(initial); + stackInfo.partial = true; + return true; + } else { + stackInfo.incomplete = true; + } + + return false; + } + /** + * Computes stack trace information by walking the arguments.caller + * chain at the time the exception occurred. This will cause earlier + * frames to be missed but is the only way to get any stack trace in + * Safari and IE. The top frame is restored by + * {@link augmentStackTraceWithInitialElement}. + * @param {Error} ex + * @return {?Object.} Stack trace information. + */ + + + function computeStackTraceByWalkingCallerChain(ex, depth) { + var functionName = /function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i, + stack = [], + funcs = {}, + recursion = false, + parts, + item; + + for (var curr = computeStackTraceByWalkingCallerChain.caller; curr && !recursion; curr = curr.caller) { + if (curr === computeStackTrace || curr === TraceKit.report) { + // console.log('skipping internal function'); + continue; + } + + item = { + url: null, + func: UNKNOWN_FUNCTION, + line: null, + column: null + }; + + if (curr.name) { + item.func = curr.name; + } else if (parts = functionName.exec(curr.toString())) { + item.func = parts[1]; + } + + if (typeof item.func === 'undefined') { + try { + item.func = parts.input.substring(0, parts.input.indexOf('{')); + } catch (e) {} + } + + if (funcs['' + curr]) { + recursion = true; + } else { + funcs['' + curr] = true; + } + + stack.push(item); + } + + if (depth) { + // console.log('depth is ' + depth); + // console.log('stack is ' + stack.length); + stack.splice(0, depth); + } + + var result = { + name: ex.name, + message: ex.message, + url: getLocationHref(), + stack: stack + }; + augmentStackTraceWithInitialElement(result, ex.sourceURL || ex.fileName, ex.line || ex.lineNumber, ex.message || ex.description); + return result; + } + /** + * Computes a stack trace for an exception. + * @param {Error} ex + * @param {(string|number)=} depth + */ + + + function computeStackTrace(ex, depth) { + var stack = null; + depth = depth == null ? 0 : +depth; + + try { + stack = computeStackTraceFromStackProp(ex); + + if (stack) { + return stack; + } + } catch (e) { + if (TraceKit.debug) { + throw e; + } + } + + try { + stack = computeStackTraceByWalkingCallerChain(ex, depth + 1); + + if (stack) { + return stack; + } + } catch (e) { + if (TraceKit.debug) { + throw e; + } + } + + return { + name: ex.name, + message: ex.message, + url: getLocationHref() + }; + } + + computeStackTrace.augmentStackTraceWithInitialElement = augmentStackTraceWithInitialElement; + computeStackTrace.computeStackTraceFromStackProp = computeStackTraceFromStackProp; + return computeStackTrace; +}(); + +var tracekit = TraceKit; + +var stringify_1 = createCommonjsModule(function (module, exports) { + /* + json-stringify-safe + Like JSON.stringify, but doesn't throw on circular references. + + Originally forked from https://github.com/isaacs/json-stringify-safe + version 5.0.1 on 3/8/2017 and modified to handle Errors serialization + and IE8 compatibility. Tests for this are in test/vendor. + + ISC license: https://github.com/isaacs/json-stringify-safe/blob/master/LICENSE + */ + exports = module.exports = stringify; + exports.getSerialize = serializer; + + function indexOf(haystack, needle) { + for (var i = 0; i < haystack.length; ++i) { + if (haystack[i] === needle) return i; + } + + return -1; + } + + function stringify(obj, replacer, spaces, cycleReplacer) { + return JSON.stringify(obj, serializer(replacer, cycleReplacer), spaces); + } // https://github.com/ftlabs/js-abbreviate/blob/fa709e5f139e7770a71827b1893f22418097fbda/index.js#L95-L106 + + + function stringifyError(value) { + var err = { + // These properties are implemented as magical getters and don't show up in for in + stack: value.stack, + message: value.message, + name: value.name + }; + + for (var i in value) { + if (Object.prototype.hasOwnProperty.call(value, i)) { + err[i] = value[i]; + } + } + + return err; + } + + function serializer(replacer, cycleReplacer) { + var stack = []; + var keys = []; + + if (cycleReplacer == null) { + cycleReplacer = function cycleReplacer(key, value) { + if (stack[0] === value) { + return '[Circular ~]'; + } + + return '[Circular ~.' + keys.slice(0, indexOf(stack, value)).join('.') + ']'; + }; + } + + return function (key, value) { + if (stack.length > 0) { + var thisPos = indexOf(stack, this); + ~thisPos ? stack.splice(thisPos + 1) : stack.push(this); + ~thisPos ? keys.splice(thisPos, Infinity, key) : keys.push(key); + + if (~indexOf(stack, value)) { + value = cycleReplacer.call(this, key, value); + } + } else { + stack.push(value); + } + + return replacer == null ? value instanceof Error ? stringifyError(value) : value : replacer.call(this, key, value); + }; + } +}); +var stringify_2 = stringify_1.getSerialize; + +function RavenConfigError(message) { + this.name = 'RavenConfigError'; + this.message = message; +} + +RavenConfigError.prototype = new Error(); +RavenConfigError.prototype.constructor = RavenConfigError; +var configError = RavenConfigError; + +var wrapMethod = function wrapMethod(console, level, callback) { + var originalConsoleLevel = console[level]; + var originalConsole = console; + + if (!(level in console)) { + return; + } + + var sentryLevel = level === 'warn' ? 'warning' : level; + + console[level] = function () { + var args = [].slice.call(arguments); + var msg = utils.safeJoin(args, ' '); + var data = { + level: sentryLevel, + logger: 'console', + extra: { + arguments: args + } + }; + + if (level === 'assert') { + if (args[0] === false) { + // Default browsers message + msg = 'Assertion failed: ' + (utils.safeJoin(args.slice(1), ' ') || 'console.assert'); + data.extra.arguments = args.slice(1); + callback && callback(msg, data); + } + } else { + callback && callback(msg, data); + } // this fails for some browsers. :( + + + if (originalConsoleLevel) { + // IE9 doesn't allow calling apply on console functions directly + // See: https://stackoverflow.com/questions/5472938/does-ie9-support-console-log-and-is-it-a-real-function#answer-5473193 + Function.prototype.apply.call(originalConsoleLevel, originalConsole, args); + } + }; +}; + +var console$1 = { + wrapMethod: wrapMethod +}; + +/*global XDomainRequest:false */ + +var isError = utils.isError; +var isObject = utils.isObject; +var isErrorEvent = utils.isErrorEvent; +var isUndefined = utils.isUndefined; +var isFunction = utils.isFunction; +var isString = utils.isString; +var isArray = utils.isArray; +var isEmptyObject = utils.isEmptyObject; +var each = utils.each; +var objectMerge = utils.objectMerge; +var truncate = utils.truncate; +var objectFrozen = utils.objectFrozen; +var hasKey = utils.hasKey; +var joinRegExp = utils.joinRegExp; +var urlencode = utils.urlencode; +var uuid4 = utils.uuid4; +var htmlTreeAsString = utils.htmlTreeAsString; +var isSameException = utils.isSameException; +var isSameStacktrace = utils.isSameStacktrace; +var parseUrl = utils.parseUrl; +var fill = utils.fill; +var supportsFetch = utils.supportsFetch; +var wrapConsoleMethod = console$1.wrapMethod; +var dsnKeys = 'source protocol user pass host port path'.split(' '); +var dsnPattern = /^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/; + +function now() { + return +new Date(); +} // This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) + + +var _window$1 = typeof window !== 'undefined' ? window : typeof commonjsGlobal !== 'undefined' ? commonjsGlobal : typeof self !== 'undefined' ? self : {}; + +var _document = _window$1.document; +var _navigator = _window$1.navigator; + +function keepOriginalCallback(original, callback) { + return isFunction(callback) ? function (data) { + return callback(data, original); + } : callback; +} // First, check for JSON support +// If there is no JSON, we no-op the core features of Raven +// since JSON is required to encode the payload + + +function Raven$1() { + this._hasJSON = !!(_typeof(JSON) === 'object' && JSON.stringify); // Raven can run in contexts where there's no document (react-native) + + this._hasDocument = !isUndefined(_document); + this._hasNavigator = !isUndefined(_navigator); + this._lastCapturedException = null; + this._lastData = null; + this._lastEventId = null; + this._globalServer = null; + this._globalKey = null; + this._globalProject = null; + this._globalContext = {}; + this._globalOptions = { + // SENTRY_RELEASE can be injected by https://github.com/getsentry/sentry-webpack-plugin + release: _window$1.SENTRY_RELEASE && _window$1.SENTRY_RELEASE.id, + logger: 'javascript', + ignoreErrors: [], + ignoreUrls: [], + whitelistUrls: [], + includePaths: [], + headers: null, + collectWindowErrors: true, + maxMessageLength: 0, + // By default, truncates URL values to 250 chars + maxUrlLength: 250, + stackTraceLimit: 50, + autoBreadcrumbs: true, + instrument: true, + sampleRate: 1 + }; + this._fetchDefaults = { + method: 'POST', + keepalive: true, + referrerPolicy: 'origin' + }; + this._ignoreOnError = 0; + this._isRavenInstalled = false; + this._originalErrorStackTraceLimit = Error.stackTraceLimit; // capture references to window.console *and* all its methods first + // before the console plugin has a chance to monkey patch + + this._originalConsole = _window$1.console || {}; + this._originalConsoleMethods = {}; + this._plugins = []; + this._startTime = now(); + this._wrappedBuiltIns = []; + this._breadcrumbs = []; + this._lastCapturedEvent = null; + this._keypressTimeout; + this._location = _window$1.location; + this._lastHref = this._location && this._location.href; + + this._resetBackoff(); // eslint-disable-next-line guard-for-in + + + for (var method in this._originalConsole) { + this._originalConsoleMethods[method] = this._originalConsole[method]; + } +} +/* + * The core Raven singleton + * + * @this {Raven} + */ + + +Raven$1.prototype = { + // Hardcode version string so that raven source can be loaded directly via + // webpack (using a build step causes webpack #1617). Grunt verifies that + // this value matches package.json during build. + // See: https://github.com/getsentry/raven-js/issues/465 + VERSION: '3.22.2', + debug: false, + TraceKit: tracekit, + // alias to TraceKit + + /* + * Configure Raven with a DSN and extra options + * + * @param {string} dsn The public Sentry DSN + * @param {object} options Set of global options [optional] + * @return {Raven} + */ + config: function config(dsn, options) { + var self = this; + + if (self._globalServer) { + this._logDebug('error', 'Error: Raven has already been configured'); + + return self; + } + + if (!dsn) return self; + var globalOptions = self._globalOptions; // merge in options + + if (options) { + each(options, function (key, value) { + // tags and extra are special and need to be put into context + if (key === 'tags' || key === 'extra' || key === 'user') { + self._globalContext[key] = value; + } else { + globalOptions[key] = value; + } + }); + } + + self.setDSN(dsn); // "Script error." is hard coded into browsers for errors that it can't read. + // this is the result of a script being pulled in from an external domain and CORS. + + globalOptions.ignoreErrors.push(/^Script error\.?$/); + globalOptions.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/); // join regexp rules into one big rule + + globalOptions.ignoreErrors = joinRegExp(globalOptions.ignoreErrors); + globalOptions.ignoreUrls = globalOptions.ignoreUrls.length ? joinRegExp(globalOptions.ignoreUrls) : false; + globalOptions.whitelistUrls = globalOptions.whitelistUrls.length ? joinRegExp(globalOptions.whitelistUrls) : false; + globalOptions.includePaths = joinRegExp(globalOptions.includePaths); + globalOptions.maxBreadcrumbs = Math.max(0, Math.min(globalOptions.maxBreadcrumbs || 100, 100)); // default and hard limit is 100 + + var autoBreadcrumbDefaults = { + xhr: true, + console: true, + dom: true, + location: true, + sentry: true + }; + var autoBreadcrumbs = globalOptions.autoBreadcrumbs; + + if ({}.toString.call(autoBreadcrumbs) === '[object Object]') { + autoBreadcrumbs = objectMerge(autoBreadcrumbDefaults, autoBreadcrumbs); + } else if (autoBreadcrumbs !== false) { + autoBreadcrumbs = autoBreadcrumbDefaults; + } + + globalOptions.autoBreadcrumbs = autoBreadcrumbs; + var instrumentDefaults = { + tryCatch: true + }; + var instrument = globalOptions.instrument; + + if ({}.toString.call(instrument) === '[object Object]') { + instrument = objectMerge(instrumentDefaults, instrument); + } else if (instrument !== false) { + instrument = instrumentDefaults; + } + + globalOptions.instrument = instrument; + tracekit.collectWindowErrors = !!globalOptions.collectWindowErrors; // return for chaining + + return self; + }, + + /* + * Installs a global window.onerror error handler + * to capture and report uncaught exceptions. + * At this point, install() is required to be called due + * to the way TraceKit is set up. + * + * @return {Raven} + */ + install: function install() { + var self = this; + + if (self.isSetup() && !self._isRavenInstalled) { + tracekit.report.subscribe(function () { + self._handleOnErrorStackInfo.apply(self, arguments); + }); + + self._patchFunctionToString(); + + if (self._globalOptions.instrument && self._globalOptions.instrument.tryCatch) { + self._instrumentTryCatch(); + } + + if (self._globalOptions.autoBreadcrumbs) self._instrumentBreadcrumbs(); // Install all of the plugins + + self._drainPlugins(); + + self._isRavenInstalled = true; + } + + Error.stackTraceLimit = self._globalOptions.stackTraceLimit; + return this; + }, + + /* + * Set the DSN (can be called multiple time unlike config) + * + * @param {string} dsn The public Sentry DSN + */ + setDSN: function setDSN(dsn) { + var self = this, + uri = self._parseDSN(dsn), + lastSlash = uri.path.lastIndexOf('/'), + path = uri.path.substr(1, lastSlash); + + self._dsn = dsn; + self._globalKey = uri.user; + self._globalSecret = uri.pass && uri.pass.substr(1); + self._globalProject = uri.path.substr(lastSlash + 1); + self._globalServer = self._getGlobalServer(uri); + self._globalEndpoint = self._globalServer + '/' + path + 'api/' + self._globalProject + '/store/'; // Reset backoff state since we may be pointing at a + // new project/server + + this._resetBackoff(); + }, + + /* + * Wrap code within a context so Raven can capture errors + * reliably across domains that is executed immediately. + * + * @param {object} options A specific set of options for this context [optional] + * @param {function} func The callback to be immediately executed within the context + * @param {array} args An array of arguments to be called with the callback [optional] + */ + context: function context(options, func, args) { + if (isFunction(options)) { + args = func || []; + func = options; + options = undefined; + } + + return this.wrap(options, func).apply(this, args); + }, + + /* + * Wrap code within a context and returns back a new function to be executed + * + * @param {object} options A specific set of options for this context [optional] + * @param {function} func The function to be wrapped in a new context + * @param {function} func A function to call before the try/catch wrapper [optional, private] + * @return {function} The newly wrapped functions with a context + */ + wrap: function wrap(options, func, _before) { + var self = this; // 1 argument has been passed, and it's not a function + // so just return it + + if (isUndefined(func) && !isFunction(options)) { + return options; + } // options is optional + + + if (isFunction(options)) { + func = options; + options = undefined; + } // At this point, we've passed along 2 arguments, and the second one + // is not a function either, so we'll just return the second argument. + + + if (!isFunction(func)) { + return func; + } // We don't wanna wrap it twice! + + + try { + if (func.__raven__) { + return func; + } // If this has already been wrapped in the past, return that + + + if (func.__raven_wrapper__) { + return func.__raven_wrapper__; + } + } catch (e) { + // Just accessing custom props in some Selenium environments + // can cause a "Permission denied" exception (see raven-js#495). + // Bail on wrapping and return the function as-is (defers to window.onerror). + return func; + } + + function wrapped() { + var args = [], + i = arguments.length, + deep = !options || options && options.deep !== false; + + if (_before && isFunction(_before)) { + _before.apply(this, arguments); + } // Recursively wrap all of a function's arguments that are + // functions themselves. + + + while (i--) { + args[i] = deep ? self.wrap(options, arguments[i]) : arguments[i]; + } + + try { + // Attempt to invoke user-land function + // NOTE: If you are a Sentry user, and you are seeing this stack frame, it + // means Raven caught an error invoking your application code. This is + // expected behavior and NOT indicative of a bug with Raven.js. + return func.apply(this, args); + } catch (e) { + self._ignoreNextOnError(); + + self.captureException(e, options); + throw e; + } + } // copy over properties of the old function + + + for (var property in func) { + if (hasKey(func, property)) { + wrapped[property] = func[property]; + } + } + + wrapped.prototype = func.prototype; + func.__raven_wrapper__ = wrapped; // Signal that this function has been wrapped/filled already + // for both debugging and to prevent it to being wrapped/filled twice + + wrapped.__raven__ = true; + wrapped.__orig__ = func; + return wrapped; + }, + + /* + * Uninstalls the global error handler. + * + * @return {Raven} + */ + uninstall: function uninstall() { + tracekit.report.uninstall(); + + this._unpatchFunctionToString(); + + this._restoreBuiltIns(); + + this._restoreConsole(); + + Error.stackTraceLimit = this._originalErrorStackTraceLimit; + this._isRavenInstalled = false; + return this; + }, + + /* + * Manually capture an exception and send it over to Sentry + * + * @param {error} ex An exception to be logged + * @param {object} options A specific set of options for this error [optional] + * @return {Raven} + */ + captureException: function captureException(ex, options) { + options = objectMerge({ + trimHeadFrames: 0 + }, options ? options : {}); // Cases for sending ex as a message, rather than an exception + + var isNotError = !isError(ex); + var isNotErrorEvent = !isErrorEvent(ex); + var isErrorEventWithoutError = isErrorEvent(ex) && !ex.error; + + if (isNotError && isNotErrorEvent || isErrorEventWithoutError) { + return this.captureMessage(ex, objectMerge(options, { + stacktrace: true, + // if we fall back to captureMessage, default to attempting a new trace + trimHeadFrames: options.trimHeadFrames + 1 + })); + } // Get actual Error from ErrorEvent + + + if (isErrorEvent(ex)) ex = ex.error; // Store the raw exception object for potential debugging and introspection + + this._lastCapturedException = ex; // TraceKit.report will re-raise any exception passed to it, + // which means you have to wrap it in try/catch. Instead, we + // can wrap it here and only re-raise if TraceKit.report + // raises an exception different from the one we asked to + // report on. + + try { + var stack = tracekit.computeStackTrace(ex); + + this._handleStackInfo(stack, options); + } catch (ex1) { + if (ex !== ex1) { + throw ex1; + } + } + + return this; + }, + + /* + * Manually send a message to Sentry + * + * @param {string} msg A plain message to be captured in Sentry + * @param {object} options A specific set of options for this message [optional] + * @return {Raven} + */ + captureMessage: function captureMessage(msg, options) { + // config() automagically converts ignoreErrors from a list to a RegExp so we need to test for an + // early call; we'll error on the side of logging anything called before configuration since it's + // probably something you should see: + if (!!this._globalOptions.ignoreErrors.test && this._globalOptions.ignoreErrors.test(msg)) { + return; + } + + options = options || {}; + var data = objectMerge({ + message: msg + '' // Make sure it's actually a string + + }, options); + var ex; // Generate a "synthetic" stack trace from this point. + // NOTE: If you are a Sentry user, and you are seeing this stack frame, it is NOT indicative + // of a bug with Raven.js. Sentry generates synthetic traces either by configuration, + // or if it catches a thrown object without a "stack" property. + + try { + throw new Error(msg); + } catch (ex1) { + ex = ex1; + } // null exception name so `Error` isn't prefixed to msg + + + ex.name = null; + var stack = tracekit.computeStackTrace(ex); // stack[0] is `throw new Error(msg)` call itself, we are interested in the frame that was just before that, stack[1] + + var initialCall = isArray(stack.stack) && stack.stack[1]; + var fileurl = initialCall && initialCall.url || ''; + + if (!!this._globalOptions.ignoreUrls.test && this._globalOptions.ignoreUrls.test(fileurl)) { + return; + } + + if (!!this._globalOptions.whitelistUrls.test && !this._globalOptions.whitelistUrls.test(fileurl)) { + return; + } + + if (this._globalOptions.stacktrace || options && options.stacktrace) { + options = objectMerge({ + // fingerprint on msg, not stack trace (legacy behavior, could be + // revisited) + fingerprint: msg, + // since we know this is a synthetic trace, the top N-most frames + // MUST be from Raven.js, so mark them as in_app later by setting + // trimHeadFrames + trimHeadFrames: (options.trimHeadFrames || 0) + 1 + }, options); + + var frames = this._prepareFrames(stack, options); + + data.stacktrace = { + // Sentry expects frames oldest to newest + frames: frames.reverse() + }; + } // Fire away! + + + this._send(data); + + return this; + }, + captureBreadcrumb: function captureBreadcrumb(obj) { + var crumb = objectMerge({ + timestamp: now() / 1000 + }, obj); + + if (isFunction(this._globalOptions.breadcrumbCallback)) { + var result = this._globalOptions.breadcrumbCallback(crumb); + + if (isObject(result) && !isEmptyObject(result)) { + crumb = result; + } else if (result === false) { + return this; + } + } + + this._breadcrumbs.push(crumb); + + if (this._breadcrumbs.length > this._globalOptions.maxBreadcrumbs) { + this._breadcrumbs.shift(); + } + + return this; + }, + addPlugin: function addPlugin(plugin + /*arg1, arg2, ... argN*/ + ) { + var pluginArgs = [].slice.call(arguments, 1); + + this._plugins.push([plugin, pluginArgs]); + + if (this._isRavenInstalled) { + this._drainPlugins(); + } + + return this; + }, + + /* + * Set/clear a user to be sent along with the payload. + * + * @param {object} user An object representing user data [optional] + * @return {Raven} + */ + setUserContext: function setUserContext(user) { + // Intentionally do not merge here since that's an unexpected behavior. + this._globalContext.user = user; + return this; + }, + + /* + * Merge extra attributes to be sent along with the payload. + * + * @param {object} extra An object representing extra data [optional] + * @return {Raven} + */ + setExtraContext: function setExtraContext(extra) { + this._mergeContext('extra', extra); + + return this; + }, + + /* + * Merge tags to be sent along with the payload. + * + * @param {object} tags An object representing tags [optional] + * @return {Raven} + */ + setTagsContext: function setTagsContext(tags) { + this._mergeContext('tags', tags); + + return this; + }, + + /* + * Clear all of the context. + * + * @return {Raven} + */ + clearContext: function clearContext() { + this._globalContext = {}; + return this; + }, + + /* + * Get a copy of the current context. This cannot be mutated. + * + * @return {object} copy of context + */ + getContext: function getContext() { + // lol javascript + return JSON.parse(stringify_1(this._globalContext)); + }, + + /* + * Set environment of application + * + * @param {string} environment Typically something like 'production'. + * @return {Raven} + */ + setEnvironment: function setEnvironment(environment) { + this._globalOptions.environment = environment; + return this; + }, + + /* + * Set release version of application + * + * @param {string} release Typically something like a git SHA to identify version + * @return {Raven} + */ + setRelease: function setRelease(release) { + this._globalOptions.release = release; + return this; + }, + + /* + * Set the dataCallback option + * + * @param {function} callback The callback to run which allows the + * data blob to be mutated before sending + * @return {Raven} + */ + setDataCallback: function setDataCallback(callback) { + var original = this._globalOptions.dataCallback; + this._globalOptions.dataCallback = keepOriginalCallback(original, callback); + return this; + }, + + /* + * Set the breadcrumbCallback option + * + * @param {function} callback The callback to run which allows filtering + * or mutating breadcrumbs + * @return {Raven} + */ + setBreadcrumbCallback: function setBreadcrumbCallback(callback) { + var original = this._globalOptions.breadcrumbCallback; + this._globalOptions.breadcrumbCallback = keepOriginalCallback(original, callback); + return this; + }, + + /* + * Set the shouldSendCallback option + * + * @param {function} callback The callback to run which allows + * introspecting the blob before sending + * @return {Raven} + */ + setShouldSendCallback: function setShouldSendCallback(callback) { + var original = this._globalOptions.shouldSendCallback; + this._globalOptions.shouldSendCallback = keepOriginalCallback(original, callback); + return this; + }, + + /** + * Override the default HTTP transport mechanism that transmits data + * to the Sentry server. + * + * @param {function} transport Function invoked instead of the default + * `makeRequest` handler. + * + * @return {Raven} + */ + setTransport: function setTransport(transport) { + this._globalOptions.transport = transport; + return this; + }, + + /* + * Get the latest raw exception that was captured by Raven. + * + * @return {error} + */ + lastException: function lastException() { + return this._lastCapturedException; + }, + + /* + * Get the last event id + * + * @return {string} + */ + lastEventId: function lastEventId() { + return this._lastEventId; + }, + + /* + * Determine if Raven is setup and ready to go. + * + * @return {boolean} + */ + isSetup: function isSetup() { + if (!this._hasJSON) return false; // needs JSON support + + if (!this._globalServer) { + if (!this.ravenNotConfiguredError) { + this.ravenNotConfiguredError = true; + + this._logDebug('error', 'Error: Raven has not been configured.'); + } + + return false; + } + + return true; + }, + afterLoad: function afterLoad() { + // TODO: remove window dependence? + // Attempt to initialize Raven on load + var RavenConfig = _window$1.RavenConfig; + + if (RavenConfig) { + this.config(RavenConfig.dsn, RavenConfig.config).install(); + } + }, + showReportDialog: function showReportDialog(options) { + if (!_document // doesn't work without a document (React native) + ) return; + options = options || {}; + var lastEventId = options.eventId || this.lastEventId(); + + if (!lastEventId) { + throw new configError('Missing eventId'); + } + + var dsn = options.dsn || this._dsn; + + if (!dsn) { + throw new configError('Missing DSN'); + } + + var encode = encodeURIComponent; + var qs = ''; + qs += '?eventId=' + encode(lastEventId); + qs += '&dsn=' + encode(dsn); + var user = options.user || this._globalContext.user; + + if (user) { + if (user.name) qs += '&name=' + encode(user.name); + if (user.email) qs += '&email=' + encode(user.email); + } + + var globalServer = this._getGlobalServer(this._parseDSN(dsn)); + + var script = _document.createElement('script'); + + script.async = true; + script.src = globalServer + '/api/embed/error-page/' + qs; + + (_document.head || _document.body).appendChild(script); + }, + + /**** Private functions ****/ + _ignoreNextOnError: function _ignoreNextOnError() { + var self = this; + this._ignoreOnError += 1; + setTimeout(function () { + // onerror should trigger before setTimeout + self._ignoreOnError -= 1; + }); + }, + _triggerEvent: function _triggerEvent(eventType, options) { + // NOTE: `event` is a native browser thing, so let's avoid conflicting wiht it + var evt, key; + if (!this._hasDocument) return; + options = options || {}; + eventType = 'raven' + eventType.substr(0, 1).toUpperCase() + eventType.substr(1); + + if (_document.createEvent) { + evt = _document.createEvent('HTMLEvents'); + evt.initEvent(eventType, true, true); + } else { + evt = _document.createEventObject(); + evt.eventType = eventType; + } + + for (key in options) { + if (hasKey(options, key)) { + evt[key] = options[key]; + } + } + + if (_document.createEvent) { + // IE9 if standards + _document.dispatchEvent(evt); + } else { + // IE8 regardless of Quirks or Standards + // IE9 if quirks + try { + _document.fireEvent('on' + evt.eventType.toLowerCase(), evt); + } catch (e) {// Do nothing + } + } + }, + + /** + * Wraps addEventListener to capture UI breadcrumbs + * @param evtName the event name (e.g. "click") + * @returns {Function} + * @private + */ + _breadcrumbEventHandler: function _breadcrumbEventHandler(evtName) { + var self = this; + return function (evt) { + // reset keypress timeout; e.g. triggering a 'click' after + // a 'keypress' will reset the keypress debounce so that a new + // set of keypresses can be recorded + self._keypressTimeout = null; // It's possible this handler might trigger multiple times for the same + // event (e.g. event propagation through node ancestors). Ignore if we've + // already captured the event. + + if (self._lastCapturedEvent === evt) return; + self._lastCapturedEvent = evt; // try/catch both: + // - accessing evt.target (see getsentry/raven-js#838, #768) + // - `htmlTreeAsString` because it's complex, and just accessing the DOM incorrectly + // can throw an exception in some circumstances. + + var target; + + try { + target = htmlTreeAsString(evt.target); + } catch (e) { + target = ''; + } + + self.captureBreadcrumb({ + category: 'ui.' + evtName, + // e.g. ui.click, ui.input + message: target + }); + }; + }, + + /** + * Wraps addEventListener to capture keypress UI events + * @returns {Function} + * @private + */ + _keypressEventHandler: function _keypressEventHandler() { + var self = this, + debounceDuration = 1000; // milliseconds + // TODO: if somehow user switches keypress target before + // debounce timeout is triggered, we will only capture + // a single breadcrumb from the FIRST target (acceptable?) + + return function (evt) { + var target; + + try { + target = evt.target; + } catch (e) { + // just accessing event properties can throw an exception in some rare circumstances + // see: https://github.com/getsentry/raven-js/issues/838 + return; + } + + var tagName = target && target.tagName; // only consider keypress events on actual input elements + // this will disregard keypresses targeting body (e.g. tabbing + // through elements, hotkeys, etc) + + if (!tagName || tagName !== 'INPUT' && tagName !== 'TEXTAREA' && !target.isContentEditable) return; // record first keypress in a series, but ignore subsequent + // keypresses until debounce clears + + var timeout = self._keypressTimeout; + + if (!timeout) { + self._breadcrumbEventHandler('input')(evt); + } + + clearTimeout(timeout); + self._keypressTimeout = setTimeout(function () { + self._keypressTimeout = null; + }, debounceDuration); + }; + }, + + /** + * Captures a breadcrumb of type "navigation", normalizing input URLs + * @param to the originating URL + * @param from the target URL + * @private + */ + _captureUrlChange: function _captureUrlChange(from, to) { + var parsedLoc = parseUrl(this._location.href); + var parsedTo = parseUrl(to); + var parsedFrom = parseUrl(from); // because onpopstate only tells you the "new" (to) value of location.href, and + // not the previous (from) value, we need to track the value of the current URL + // state ourselves + + this._lastHref = to; // Use only the path component of the URL if the URL matches the current + // document (almost all the time when using pushState) + + if (parsedLoc.protocol === parsedTo.protocol && parsedLoc.host === parsedTo.host) to = parsedTo.relative; + if (parsedLoc.protocol === parsedFrom.protocol && parsedLoc.host === parsedFrom.host) from = parsedFrom.relative; + this.captureBreadcrumb({ + category: 'navigation', + data: { + to: to, + from: from + } + }); + }, + _patchFunctionToString: function _patchFunctionToString() { + var self = this; + self._originalFunctionToString = Function.prototype.toString; // eslint-disable-next-line no-extend-native + + Function.prototype.toString = function () { + if (typeof this === 'function' && this.__raven__) { + return self._originalFunctionToString.apply(this.__orig__, arguments); + } + + return self._originalFunctionToString.apply(this, arguments); + }; + }, + _unpatchFunctionToString: function _unpatchFunctionToString() { + if (this._originalFunctionToString) { + // eslint-disable-next-line no-extend-native + Function.prototype.toString = this._originalFunctionToString; + } + }, + + /** + * Wrap timer functions and event targets to catch errors and provide + * better metadata. + */ + _instrumentTryCatch: function _instrumentTryCatch() { + var self = this; + var wrappedBuiltIns = self._wrappedBuiltIns; + + function wrapTimeFn(orig) { + return function (fn, t) { + // preserve arity + // Make a copy of the arguments to prevent deoptimization + // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments + var args = new Array(arguments.length); + + for (var i = 0; i < args.length; ++i) { + args[i] = arguments[i]; + } + + var originalCallback = args[0]; + + if (isFunction(originalCallback)) { + args[0] = self.wrap(originalCallback); + } // IE < 9 doesn't support .call/.apply on setInterval/setTimeout, but it + // also supports only two arguments and doesn't care what this is, so we + // can just call the original function directly. + + + if (orig.apply) { + return orig.apply(this, args); + } else { + return orig(args[0], args[1]); + } + }; + } + + var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; + + function wrapEventTarget(global) { + var proto = _window$1[global] && _window$1[global].prototype; + + if (proto && proto.hasOwnProperty && proto.hasOwnProperty('addEventListener')) { + fill(proto, 'addEventListener', function (orig) { + return function (evtName, fn, capture, secure) { + // preserve arity + try { + if (fn && fn.handleEvent) { + fn.handleEvent = self.wrap(fn.handleEvent); + } + } catch (err) {} // can sometimes get 'Permission denied to access property "handle Event' + // More breadcrumb DOM capture ... done here and not in `_instrumentBreadcrumbs` + // so that we don't have more than one wrapper function + + + var before, clickHandler, keypressHandler; + + if (autoBreadcrumbs && autoBreadcrumbs.dom && (global === 'EventTarget' || global === 'Node')) { + // NOTE: generating multiple handlers per addEventListener invocation, should + // revisit and verify we can just use one (almost certainly) + clickHandler = self._breadcrumbEventHandler('click'); + keypressHandler = self._keypressEventHandler(); + + before = function before(evt) { + // need to intercept every DOM event in `before` argument, in case that + // same wrapped method is re-used for different events (e.g. mousemove THEN click) + // see #724 + if (!evt) return; + var eventType; + + try { + eventType = evt.type; + } catch (e) { + // just accessing event properties can throw an exception in some rare circumstances + // see: https://github.com/getsentry/raven-js/issues/838 + return; + } + + if (eventType === 'click') return clickHandler(evt);else if (eventType === 'keypress') return keypressHandler(evt); + }; + } + + return orig.call(this, evtName, self.wrap(fn, undefined, before), capture, secure); + }; + }, wrappedBuiltIns); + fill(proto, 'removeEventListener', function (orig) { + return function (evt, fn, capture, secure) { + try { + fn = fn && (fn.__raven_wrapper__ ? fn.__raven_wrapper__ : fn); + } catch (e) {// ignore, accessing __raven_wrapper__ will throw in some Selenium environments + } + + return orig.call(this, evt, fn, capture, secure); + }; + }, wrappedBuiltIns); + } + } + + fill(_window$1, 'setTimeout', wrapTimeFn, wrappedBuiltIns); + fill(_window$1, 'setInterval', wrapTimeFn, wrappedBuiltIns); + + if (_window$1.requestAnimationFrame) { + fill(_window$1, 'requestAnimationFrame', function (orig) { + return function (cb) { + return orig(self.wrap(cb)); + }; + }, wrappedBuiltIns); + } // event targets borrowed from bugsnag-js: + // https://github.com/bugsnag/bugsnag-js/blob/master/src/bugsnag.js#L666 + + + var eventTargets = ['EventTarget', 'Window', 'Node', 'ApplicationCache', 'AudioTrackList', 'ChannelMergerNode', 'CryptoOperation', 'EventSource', 'FileReader', 'HTMLUnknownElement', 'IDBDatabase', 'IDBRequest', 'IDBTransaction', 'KeyOperation', 'MediaController', 'MessagePort', 'ModalWindow', 'Notification', 'SVGElementInstance', 'Screen', 'TextTrack', 'TextTrackCue', 'TextTrackList', 'WebSocket', 'WebSocketWorker', 'Worker', 'XMLHttpRequest', 'XMLHttpRequestEventTarget', 'XMLHttpRequestUpload']; + + for (var i = 0; i < eventTargets.length; i++) { + wrapEventTarget(eventTargets[i]); + } + }, + + /** + * Instrument browser built-ins w/ breadcrumb capturing + * - XMLHttpRequests + * - DOM interactions (click/typing) + * - window.location changes + * - console + * + * Can be disabled or individually configured via the `autoBreadcrumbs` config option + */ + _instrumentBreadcrumbs: function _instrumentBreadcrumbs() { + var self = this; + var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; + var wrappedBuiltIns = self._wrappedBuiltIns; + + function wrapProp(prop, xhr) { + if (prop in xhr && isFunction(xhr[prop])) { + fill(xhr, prop, function (orig) { + return self.wrap(orig); + }); // intentionally don't track filled methods on XHR instances + } + } + + if (autoBreadcrumbs.xhr && 'XMLHttpRequest' in _window$1) { + var xhrproto = XMLHttpRequest.prototype; + fill(xhrproto, 'open', function (origOpen) { + return function (method, url) { + // preserve arity + // if Sentry key appears in URL, don't capture + if (isString(url) && url.indexOf(self._globalKey) === -1) { + this.__raven_xhr = { + method: method, + url: url, + status_code: null + }; + } + + return origOpen.apply(this, arguments); + }; + }, wrappedBuiltIns); + fill(xhrproto, 'send', function (origSend) { + return function () { + // preserve arity + var xhr = this; + + function onreadystatechangeHandler() { + if (xhr.__raven_xhr && xhr.readyState === 4) { + try { + // touching statusCode in some platforms throws + // an exception + xhr.__raven_xhr.status_code = xhr.status; + } catch (e) { + /* do nothing */ + } + + self.captureBreadcrumb({ + type: 'http', + category: 'xhr', + data: xhr.__raven_xhr + }); + } + } + + var props = ['onload', 'onerror', 'onprogress']; + + for (var j = 0; j < props.length; j++) { + wrapProp(props[j], xhr); + } + + if ('onreadystatechange' in xhr && isFunction(xhr.onreadystatechange)) { + fill(xhr, 'onreadystatechange', function (orig) { + return self.wrap(orig, undefined, onreadystatechangeHandler); + } + /* intentionally don't track this instrumentation */ + ); + } else { + // if onreadystatechange wasn't actually set by the page on this xhr, we + // are free to set our own and capture the breadcrumb + xhr.onreadystatechange = onreadystatechangeHandler; + } + + return origSend.apply(this, arguments); + }; + }, wrappedBuiltIns); + } + + if (autoBreadcrumbs.xhr && supportsFetch()) { + fill(_window$1, 'fetch', function (origFetch) { + return function () { + // preserve arity + // Make a copy of the arguments to prevent deoptimization + // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments + var args = new Array(arguments.length); + + for (var i = 0; i < args.length; ++i) { + args[i] = arguments[i]; + } + + var fetchInput = args[0]; + var method = 'GET'; + var url; + + if (typeof fetchInput === 'string') { + url = fetchInput; + } else if ('Request' in _window$1 && fetchInput instanceof _window$1.Request) { + url = fetchInput.url; + + if (fetchInput.method) { + method = fetchInput.method; + } + } else { + url = '' + fetchInput; + } // if Sentry key appears in URL, don't capture, as it's our own request + + + if (url.indexOf(self._globalKey) !== -1) { + return origFetch.apply(this, args); + } + + if (args[1] && args[1].method) { + method = args[1].method; + } + + var fetchData = { + method: method, + url: url, + status_code: null + }; + return origFetch.apply(this, args).then(function (response) { + fetchData.status_code = response.status; + self.captureBreadcrumb({ + type: 'http', + category: 'fetch', + data: fetchData + }); + return response; + }); + }; + }, wrappedBuiltIns); + } // Capture breadcrumbs from any click that is unhandled / bubbled up all the way + // to the document. Do this before we instrument addEventListener. + + + if (autoBreadcrumbs.dom && this._hasDocument) { + if (_document.addEventListener) { + _document.addEventListener('click', self._breadcrumbEventHandler('click'), false); + + _document.addEventListener('keypress', self._keypressEventHandler(), false); + } else { + // IE8 Compatibility + _document.attachEvent('onclick', self._breadcrumbEventHandler('click')); + + _document.attachEvent('onkeypress', self._keypressEventHandler()); + } + } // record navigation (URL) changes + // NOTE: in Chrome App environment, touching history.pushState, *even inside + // a try/catch block*, will cause Chrome to output an error to console.error + // borrowed from: https://github.com/angular/angular.js/pull/13945/files + + + var chrome = _window$1.chrome; + var isChromePackagedApp = chrome && chrome.app && chrome.app.runtime; + var hasPushAndReplaceState = !isChromePackagedApp && _window$1.history && history.pushState && history.replaceState; + + if (autoBreadcrumbs.location && hasPushAndReplaceState) { + // TODO: remove onpopstate handler on uninstall() + var oldOnPopState = _window$1.onpopstate; + + _window$1.onpopstate = function () { + var currentHref = self._location.href; + + self._captureUrlChange(self._lastHref, currentHref); + + if (oldOnPopState) { + return oldOnPopState.apply(this, arguments); + } + }; + + var historyReplacementFunction = function historyReplacementFunction(origHistFunction) { + // note history.pushState.length is 0; intentionally not declaring + // params to preserve 0 arity + return function () + /* state, title, url */ + { + var url = arguments.length > 2 ? arguments[2] : undefined; // url argument is optional + + if (url) { + // coerce to string (this is what pushState does) + self._captureUrlChange(self._lastHref, url + ''); + } + + return origHistFunction.apply(this, arguments); + }; + }; + + fill(history, 'pushState', historyReplacementFunction, wrappedBuiltIns); + fill(history, 'replaceState', historyReplacementFunction, wrappedBuiltIns); + } + + if (autoBreadcrumbs.console && 'console' in _window$1 && console.log) { + // console + var consoleMethodCallback = function consoleMethodCallback(msg, data) { + self.captureBreadcrumb({ + message: msg, + level: data.level, + category: 'console' + }); + }; + + each(['debug', 'info', 'warn', 'error', 'log'], function (_, level) { + wrapConsoleMethod(console, level, consoleMethodCallback); + }); + } + }, + _restoreBuiltIns: function _restoreBuiltIns() { + // restore any wrapped builtins + var builtin; + + while (this._wrappedBuiltIns.length) { + builtin = this._wrappedBuiltIns.shift(); + var obj = builtin[0], + name = builtin[1], + orig = builtin[2]; + obj[name] = orig; + } + }, + _restoreConsole: function _restoreConsole() { + // eslint-disable-next-line guard-for-in + for (var method in this._originalConsoleMethods) { + this._originalConsole[method] = this._originalConsoleMethods[method]; + } + }, + _drainPlugins: function _drainPlugins() { + var self = this; // FIX ME TODO + + each(this._plugins, function (_, plugin) { + var installer = plugin[0]; + var args = plugin[1]; + installer.apply(self, [self].concat(args)); + }); + }, + _parseDSN: function _parseDSN(str) { + var m = dsnPattern.exec(str), + dsn = {}, + i = 7; + + try { + while (i--) { + dsn[dsnKeys[i]] = m[i] || ''; + } + } catch (e) { + throw new configError('Invalid DSN: ' + str); + } + + if (dsn.pass && !this._globalOptions.allowSecretKey) { + throw new configError('Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key'); + } + + return dsn; + }, + _getGlobalServer: function _getGlobalServer(uri) { + // assemble the endpoint from the uri pieces + var globalServer = '//' + uri.host + (uri.port ? ':' + uri.port : ''); + + if (uri.protocol) { + globalServer = uri.protocol + ':' + globalServer; + } + + return globalServer; + }, + _handleOnErrorStackInfo: function _handleOnErrorStackInfo() { + // if we are intentionally ignoring errors via onerror, bail out + if (!this._ignoreOnError) { + this._handleStackInfo.apply(this, arguments); + } + }, + _handleStackInfo: function _handleStackInfo(stackInfo, options) { + var frames = this._prepareFrames(stackInfo, options); + + this._triggerEvent('handle', { + stackInfo: stackInfo, + options: options + }); + + this._processException(stackInfo.name, stackInfo.message, stackInfo.url, stackInfo.lineno, frames, options); + }, + _prepareFrames: function _prepareFrames(stackInfo, options) { + var self = this; + var frames = []; + + if (stackInfo.stack && stackInfo.stack.length) { + each(stackInfo.stack, function (i, stack) { + var frame = self._normalizeFrame(stack, stackInfo.url); + + if (frame) { + frames.push(frame); + } + }); // e.g. frames captured via captureMessage throw + + if (options && options.trimHeadFrames) { + for (var j = 0; j < options.trimHeadFrames && j < frames.length; j++) { + frames[j].in_app = false; + } + } + } + + frames = frames.slice(0, this._globalOptions.stackTraceLimit); + return frames; + }, + _normalizeFrame: function _normalizeFrame(frame, stackInfoUrl) { + // normalize the frames data + var normalized = { + filename: frame.url, + lineno: frame.line, + colno: frame.column, + function: frame.func || '?' + }; // Case when we don't have any information about the error + // E.g. throwing a string or raw object, instead of an `Error` in Firefox + // Generating synthetic error doesn't add any value here + // + // We should probably somehow let a user know that they should fix their code + + if (!frame.url) { + normalized.filename = stackInfoUrl; // fallback to whole stacks url from onerror handler + } + + normalized.in_app = !( // determine if an exception came from outside of our app + // first we check the global includePaths list. + !!this._globalOptions.includePaths.test && !this._globalOptions.includePaths.test(normalized.filename) || // Now we check for fun, if the function name is Raven or TraceKit + /(Raven|TraceKit)\./.test(normalized['function']) || // finally, we do a last ditch effort and check for raven.min.js + /raven\.(min\.)?js$/.test(normalized.filename)); + return normalized; + }, + _processException: function _processException(type, message, fileurl, lineno, frames, options) { + var prefixedMessage = (type ? type + ': ' : '') + (message || ''); + + if (!!this._globalOptions.ignoreErrors.test && (this._globalOptions.ignoreErrors.test(message) || this._globalOptions.ignoreErrors.test(prefixedMessage))) { + return; + } + + var stacktrace; + + if (frames && frames.length) { + fileurl = frames[0].filename || fileurl; // Sentry expects frames oldest to newest + // and JS sends them as newest to oldest + + frames.reverse(); + stacktrace = { + frames: frames + }; + } else if (fileurl) { + stacktrace = { + frames: [{ + filename: fileurl, + lineno: lineno, + in_app: true + }] + }; + } + + if (!!this._globalOptions.ignoreUrls.test && this._globalOptions.ignoreUrls.test(fileurl)) { + return; + } + + if (!!this._globalOptions.whitelistUrls.test && !this._globalOptions.whitelistUrls.test(fileurl)) { + return; + } + + var data = objectMerge({ + // sentry.interfaces.Exception + exception: { + values: [{ + type: type, + value: message, + stacktrace: stacktrace + }] + }, + culprit: fileurl + }, options); // Fire away! + + this._send(data); + }, + _trimPacket: function _trimPacket(data) { + // For now, we only want to truncate the two different messages + // but this could/should be expanded to just trim everything + var max = this._globalOptions.maxMessageLength; + + if (data.message) { + data.message = truncate(data.message, max); + } + + if (data.exception) { + var exception = data.exception.values[0]; + exception.value = truncate(exception.value, max); + } + + var request = data.request; + + if (request) { + if (request.url) { + request.url = truncate(request.url, this._globalOptions.maxUrlLength); + } + + if (request.Referer) { + request.Referer = truncate(request.Referer, this._globalOptions.maxUrlLength); + } + } + + if (data.breadcrumbs && data.breadcrumbs.values) this._trimBreadcrumbs(data.breadcrumbs); + return data; + }, + + /** + * Truncate breadcrumb values (right now just URLs) + */ + _trimBreadcrumbs: function _trimBreadcrumbs(breadcrumbs) { + // known breadcrumb properties with urls + // TODO: also consider arbitrary prop values that start with (https?)?:// + var urlProps = ['to', 'from', 'url'], + urlProp, + crumb, + data; + + for (var i = 0; i < breadcrumbs.values.length; ++i) { + crumb = breadcrumbs.values[i]; + if (!crumb.hasOwnProperty('data') || !isObject(crumb.data) || objectFrozen(crumb.data)) continue; + data = objectMerge({}, crumb.data); + + for (var j = 0; j < urlProps.length; ++j) { + urlProp = urlProps[j]; + + if (data.hasOwnProperty(urlProp) && data[urlProp]) { + data[urlProp] = truncate(data[urlProp], this._globalOptions.maxUrlLength); + } + } + + breadcrumbs.values[i].data = data; + } + }, + _getHttpData: function _getHttpData() { + if (!this._hasNavigator && !this._hasDocument) return; + var httpData = {}; + + if (this._hasNavigator && _navigator.userAgent) { + httpData.headers = { + 'User-Agent': navigator.userAgent + }; + } // Check in `window` instead of `document`, as we may be in ServiceWorker environment + + + if (_window$1.location && _window$1.location.href) { + httpData.url = _window$1.location.href; + } + + if (this._hasDocument && _document.referrer) { + if (!httpData.headers) httpData.headers = {}; + httpData.headers.Referer = _document.referrer; + } + + return httpData; + }, + _resetBackoff: function _resetBackoff() { + this._backoffDuration = 0; + this._backoffStart = null; + }, + _shouldBackoff: function _shouldBackoff() { + return this._backoffDuration && now() - this._backoffStart < this._backoffDuration; + }, + + /** + * Returns true if the in-process data payload matches the signature + * of the previously-sent data + * + * NOTE: This has to be done at this level because TraceKit can generate + * data from window.onerror WITHOUT an exception object (IE8, IE9, + * other old browsers). This can take the form of an "exception" + * data object with a single frame (derived from the onerror args). + */ + _isRepeatData: function _isRepeatData(current) { + var last = this._lastData; + if (!last || current.message !== last.message || // defined for captureMessage + current.culprit !== last.culprit // defined for captureException/onerror + ) return false; // Stacktrace interface (i.e. from captureMessage) + + if (current.stacktrace || last.stacktrace) { + return isSameStacktrace(current.stacktrace, last.stacktrace); + } else if (current.exception || last.exception) { + // Exception interface (i.e. from captureException/onerror) + return isSameException(current.exception, last.exception); + } + + return true; + }, + _setBackoffState: function _setBackoffState(request) { + // If we are already in a backoff state, don't change anything + if (this._shouldBackoff()) { + return; + } + + var status = request.status; // 400 - project_id doesn't exist or some other fatal + // 401 - invalid/revoked dsn + // 429 - too many requests + + if (!(status === 400 || status === 401 || status === 429)) return; + var retry; + + try { + // If Retry-After is not in Access-Control-Expose-Headers, most + // browsers will throw an exception trying to access it + if (supportsFetch()) { + retry = request.headers.get('Retry-After'); + } else { + retry = request.getResponseHeader('Retry-After'); + } // Retry-After is returned in seconds + + + retry = parseInt(retry, 10) * 1000; + } catch (e) { + /* eslint no-empty:0 */ + } + + this._backoffDuration = retry ? // If Sentry server returned a Retry-After value, use it + retry : // Otherwise, double the last backoff duration (starts at 1 sec) + this._backoffDuration * 2 || 1000; + this._backoffStart = now(); + }, + _send: function _send(data) { + var globalOptions = this._globalOptions; + + var baseData = { + project: this._globalProject, + logger: globalOptions.logger, + platform: 'javascript' + }, + httpData = this._getHttpData(); + + if (httpData) { + baseData.request = httpData; + } // HACK: delete `trimHeadFrames` to prevent from appearing in outbound payload + + + if (data.trimHeadFrames) delete data.trimHeadFrames; + data = objectMerge(baseData, data); // Merge in the tags and extra separately since objectMerge doesn't handle a deep merge + + data.tags = objectMerge(objectMerge({}, this._globalContext.tags), data.tags); + data.extra = objectMerge(objectMerge({}, this._globalContext.extra), data.extra); // Send along our own collected metadata with extra + + data.extra['session:duration'] = now() - this._startTime; + + if (this._breadcrumbs && this._breadcrumbs.length > 0) { + // intentionally make shallow copy so that additions + // to breadcrumbs aren't accidentally sent in this request + data.breadcrumbs = { + values: [].slice.call(this._breadcrumbs, 0) + }; + } + + if (this._globalContext.user) { + // sentry.interfaces.User + data.user = this._globalContext.user; + } // Include the environment if it's defined in globalOptions + + + if (globalOptions.environment) data.environment = globalOptions.environment; // Include the release if it's defined in globalOptions + + if (globalOptions.release) data.release = globalOptions.release; // Include server_name if it's defined in globalOptions + + if (globalOptions.serverName) data.server_name = globalOptions.serverName; // Cleanup empty properties before sending them to the server + + Object.keys(data).forEach(function (key) { + if (data[key] == null || data[key] === '' || isEmptyObject(data[key])) { + delete data[key]; + } + }); + + if (isFunction(globalOptions.dataCallback)) { + data = globalOptions.dataCallback(data) || data; + } // Why?????????? + + + if (!data || isEmptyObject(data)) { + return; + } // Check if the request should be filtered or not + + + if (isFunction(globalOptions.shouldSendCallback) && !globalOptions.shouldSendCallback(data)) { + return; + } // Backoff state: Sentry server previously responded w/ an error (e.g. 429 - too many requests), + // so drop requests until "cool-off" period has elapsed. + + + if (this._shouldBackoff()) { + this._logDebug('warn', 'Raven dropped error due to backoff: ', data); + + return; + } + + if (typeof globalOptions.sampleRate === 'number') { + if (Math.random() < globalOptions.sampleRate) { + this._sendProcessedPayload(data); + } + } else { + this._sendProcessedPayload(data); + } + }, + _getUuid: function _getUuid() { + return uuid4(); + }, + _sendProcessedPayload: function _sendProcessedPayload(data, callback) { + var self = this; + var globalOptions = this._globalOptions; + if (!this.isSetup()) return; // Try and clean up the packet before sending by truncating long values + + data = this._trimPacket(data); // ideally duplicate error testing should occur *before* dataCallback/shouldSendCallback, + // but this would require copying an un-truncated copy of the data packet, which can be + // arbitrarily deep (extra_data) -- could be worthwhile? will revisit + + if (!this._globalOptions.allowDuplicates && this._isRepeatData(data)) { + this._logDebug('warn', 'Raven dropped repeat event: ', data); + + return; + } // Send along an event_id if not explicitly passed. + // This event_id can be used to reference the error within Sentry itself. + // Set lastEventId after we know the error should actually be sent + + + this._lastEventId = data.event_id || (data.event_id = this._getUuid()); // Store outbound payload after trim + + this._lastData = data; + + this._logDebug('debug', 'Raven about to send:', data); + + var auth = { + sentry_version: '7', + sentry_client: 'raven-js/' + this.VERSION, + sentry_key: this._globalKey + }; + + if (this._globalSecret) { + auth.sentry_secret = this._globalSecret; + } + + var exception = data.exception && data.exception.values[0]; // only capture 'sentry' breadcrumb is autoBreadcrumbs is truthy + + if (this._globalOptions.autoBreadcrumbs && this._globalOptions.autoBreadcrumbs.sentry) { + this.captureBreadcrumb({ + category: 'sentry', + message: exception ? (exception.type ? exception.type + ': ' : '') + exception.value : data.message, + event_id: data.event_id, + level: data.level || 'error' // presume error unless specified + + }); + } + + var url = this._globalEndpoint; + + (globalOptions.transport || this._makeRequest).call(this, { + url: url, + auth: auth, + data: data, + options: globalOptions, + onSuccess: function success() { + self._resetBackoff(); + + self._triggerEvent('success', { + data: data, + src: url + }); + + callback && callback(); + }, + onError: function failure(error) { + self._logDebug('error', 'Raven transport failed to send: ', error); + + if (error.request) { + self._setBackoffState(error.request); + } + + self._triggerEvent('failure', { + data: data, + src: url + }); + + error = error || new Error('Raven send failed (no additional details provided)'); + callback && callback(error); + } + }); + }, + _makeRequest: function _makeRequest(opts) { + // Auth is intentionally sent as part of query string (NOT as custom HTTP header) to avoid preflight CORS requests + var url = opts.url + '?' + urlencode(opts.auth); + var evaluatedHeaders = null; + var evaluatedFetchParameters = {}; + + if (opts.options.headers) { + evaluatedHeaders = this._evaluateHash(opts.options.headers); + } + + if (opts.options.fetchParameters) { + evaluatedFetchParameters = this._evaluateHash(opts.options.fetchParameters); + } + + if (supportsFetch()) { + evaluatedFetchParameters.body = stringify_1(opts.data); + var defaultFetchOptions = objectMerge({}, this._fetchDefaults); + var fetchOptions = objectMerge(defaultFetchOptions, evaluatedFetchParameters); + + if (evaluatedHeaders) { + fetchOptions.headers = evaluatedHeaders; + } + + return _window$1.fetch(url, fetchOptions).then(function (response) { + if (response.ok) { + opts.onSuccess && opts.onSuccess(); + } else { + var error = new Error('Sentry error code: ' + response.status); // It's called request only to keep compatibility with XHR interface + // and not add more redundant checks in setBackoffState method + + error.request = response; + opts.onError && opts.onError(error); + } + })['catch'](function () { + opts.onError && opts.onError(new Error('Sentry error code: network unavailable')); + }); + } + + var request = _window$1.XMLHttpRequest && new _window$1.XMLHttpRequest(); + if (!request) return; // if browser doesn't support CORS (e.g. IE7), we are out of luck + + var hasCORS = 'withCredentials' in request || typeof XDomainRequest !== 'undefined'; + if (!hasCORS) return; + + if ('withCredentials' in request) { + request.onreadystatechange = function () { + if (request.readyState !== 4) { + return; + } else if (request.status === 200) { + opts.onSuccess && opts.onSuccess(); + } else if (opts.onError) { + var err = new Error('Sentry error code: ' + request.status); + err.request = request; + opts.onError(err); + } + }; + } else { + request = new XDomainRequest(); // xdomainrequest cannot go http -> https (or vice versa), + // so always use protocol relative + + url = url.replace(/^https?:/, ''); // onreadystatechange not supported by XDomainRequest + + if (opts.onSuccess) { + request.onload = opts.onSuccess; + } + + if (opts.onError) { + request.onerror = function () { + var err = new Error('Sentry error code: XDomainRequest'); + err.request = request; + opts.onError(err); + }; + } + } + + request.open('POST', url); + + if (evaluatedHeaders) { + each(evaluatedHeaders, function (key, value) { + request.setRequestHeader(key, value); + }); + } + + request.send(stringify_1(opts.data)); + }, + _evaluateHash: function _evaluateHash(hash) { + var evaluated = {}; + + for (var key in hash) { + if (hash.hasOwnProperty(key)) { + var value = hash[key]; + evaluated[key] = typeof value === 'function' ? value() : value; + } + } + + return evaluated; + }, + _logDebug: function _logDebug(level) { + if (this._originalConsoleMethods[level] && this.debug) { + // In IE<10 console methods do not have their own 'apply' method + Function.prototype.apply.call(this._originalConsoleMethods[level], this._originalConsole, [].slice.call(arguments, 1)); + } + }, + _mergeContext: function _mergeContext(key, context) { + if (isUndefined(context)) { + delete this._globalContext[key]; + } else { + this._globalContext[key] = objectMerge(this._globalContext[key] || {}, context); + } + } +}; // Deprecations + +Raven$1.prototype.setUser = Raven$1.prototype.setUserContext; +Raven$1.prototype.setReleaseContext = Raven$1.prototype.setRelease; +var raven = Raven$1; + +/** + * Enforces a single instance of the Raven client, and the + * main entry point for Raven. If you are a consumer of the + * Raven library, you SHOULD load this file (vs raven.js). + **/ +// This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) + +var _window = typeof window !== 'undefined' ? window : typeof commonjsGlobal !== 'undefined' ? commonjsGlobal : typeof self !== 'undefined' ? self : {}; + +var _Raven = _window.Raven; +var Raven = new raven(); +/* + * Allow multiple versions of Raven to be installed. + * Strip Raven from the global context and returns the instance. + * + * @return {Raven} + */ + +Raven.noConflict = function () { + _window.Raven = _Raven; + return Raven; +}; + +Raven.afterLoad(); +var singleton = Raven; + +/** + * console plugin + * + * Monkey patches console.* calls into Sentry messages with + * their appropriate log levels. (Experimental) + * + * Options: + * + * `levels`: An array of levels (methods on `console`) to report to Sentry. + * Defaults to debug, info, warn, and error. + */ + +var wrapConsoleMethod$1 = console$1.wrapMethod; + +function consolePlugin(Raven, console, pluginOptions) { + console = console || window.console || {}; + pluginOptions = pluginOptions || {}; + var logLevels = pluginOptions.levels || ['debug', 'info', 'warn', 'error']; + if ('assert' in console) logLevels.push('assert'); + + var callback = function callback(msg, data) { + Raven.captureMessage(msg, data); + }; + + var level = logLevels.pop(); + + while (level) { + wrapConsoleMethod$1(console, level, callback); + level = logLevels.pop(); + } +} + +var console$3 = consolePlugin; + +/** + * Ember.js plugin + * + * Patches event handler callbacks and ajax callbacks. + */ +function emberPlugin(Raven, Ember) { + Ember = Ember || window.Ember; // quit if Ember isn't on the page + + if (!Ember) return; + var _oldOnError = Ember.onerror; + + Ember.onerror = function EmberOnError(error) { + Raven.captureException(error); + + if (typeof _oldOnError === 'function') { + _oldOnError.call(this, error); + } + }; + + Ember.RSVP.on('error', function (reason) { + if (reason instanceof Error) { + Raven.captureException(reason, { + extra: { + context: 'Unhandled Promise error detected' + } + }); + } else { + Raven.captureMessage('Unhandled Promise error detected', { + extra: { + reason: reason + } + }); + } + }); +} + +var ember = emberPlugin; + +/*global define*/ + +/** + * require.js plugin + * + * Automatically wrap define/require callbacks. (Experimental) + */ + +function requirePlugin(Raven) { + if (typeof undefined === 'function' && undefined.amd) { + window.define = Raven.wrap({ + deep: false + }, undefined); + window.require = Raven.wrap({ + deep: false + }, commonjsRequire); + } +} + +var require_1 = requirePlugin; + +/** + * Vue.js 2.0 plugin + * + */ +function formatComponentName(vm) { + if (vm.$root === vm) { + return 'root instance'; + } + + var name = vm._isVue ? vm.$options.name || vm.$options._componentTag : vm.name; + return (name ? 'component <' + name + '>' : 'anonymous component') + (vm._isVue && vm.$options.__file ? ' at ' + vm.$options.__file : ''); +} + +function vuePlugin(Raven, Vue) { + Vue = Vue || window.Vue; // quit if Vue isn't on the page + + if (!Vue || !Vue.config) return; + var _oldOnError = Vue.config.errorHandler; + + Vue.config.errorHandler = function VueErrorHandler(error, vm, info) { + var metaData = {}; // vm and lifecycleHook are not always available + + if (Object.prototype.toString.call(vm) === '[object Object]') { + metaData.componentName = formatComponentName(vm); + metaData.propsData = vm.$options.propsData; + } + + if (typeof info !== 'undefined') { + metaData.lifecycleHook = info; + } + + Raven.captureException(error, { + extra: metaData + }); + + if (typeof _oldOnError === 'function') { + _oldOnError.call(this, error, vm, info); + } + }; +} + +var vue = vuePlugin; + +/* This file was generated by './scripts/generate-plugin-combinations.js'! */ + +singleton.addPlugin(console$3).addPlugin(ember).addPlugin(require_1).addPlugin(vue); +var console_ember_require_vue = {}; + +return console_ember_require_vue; + +}))); diff --git a/dist/console,ember,require,vue/raven.min.js b/dist/console,ember,require,vue/raven.min.js new file mode 100644 index 000000000000..f562c23af398 --- /dev/null +++ b/dist/console,ember,require,vue/raven.min.js @@ -0,0 +1,3 @@ +/*! Raven.js 3.22.2 (1b6187b) | github.com/getsentry/raven-js */ +!function(a,b){"object"==typeof exports&&"undefined"!=typeof module?module.exports=b():"function"==typeof define&&define.amd?define(b):a.Raven=b()}(this,function(){"use strict";function a(a,b){return b={exports:{}},a(b,b.exports),b.exports}function b(a){return(b="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(a){return typeof a}:function(a){return a&&"function"==typeof Symbol&&a.constructor===Symbol&&a!==Symbol.prototype?"symbol":typeof a})(a)}function c(a){return"object"===b(a)&&null!==a}function d(a){switch({}.toString.call(a)){case"[object Error]":return!0;case"[object Exception]":return!0;case"[object DOMException]":return!0;default:return a instanceof Error}}function e(a){return l()&&"[object ErrorEvent]"==={}.toString.call(a)}function f(a){return void 0===a}function g(a){return"function"==typeof a}function h(a){return"[object Object]"===Object.prototype.toString.call(a)}function i(a){return"[object String]"===Object.prototype.toString.call(a)}function j(a){return"[object Array]"===Object.prototype.toString.call(a)}function k(a){if(!h(a))return!1;for(var b in a)if(a.hasOwnProperty(b))return!1;return!0}function l(){try{return new ErrorEvent(""),!0}catch(a){return!1}}function m(){if(!("fetch"in R))return!1;try{return new Headers,new Request(""),new Response,!0}catch(a){return!1}}function n(a){function b(b,c){var d=a(b)||b;return c?c(d)||d:d}return b}function o(a,b){var c,d;if(f(a.length))for(c in a)s(a,c)&&b.call(null,c,a[c]);else if(d=a.length)for(c=0;c ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function y(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&i(b))for(c=b.split(/\s+/),f=0;f":"anonymous component")+(a._isVue&&a.$options.__file?" at "+a.$options.__file:"")}function O(a,b){if(b=b||window.Vue,b&&b.config){var c=b.config.errorHandler;b.config.errorHandler=function(b,d,e){var f={};"[object Object]"===Object.prototype.toString.call(d)&&(f.componentName=N(d),f.propsData=d.$options.propsData),"undefined"!=typeof e&&(f.lifecycleHook=e),a.captureException(b,{extra:f}),"function"==typeof c&&c.call(this,b,d,e)}}}var P="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{},Q=Object.setPrototypeOf||function(a,b){return a.B=b,a},R=("object"==typeof Reflect&&Reflect.construct||function(a,b,c){var d,e=[null];return e.push.apply(e,b),d=a.bind.apply(a,e),Q(new d,c.prototype)},"undefined"!=typeof window?window:"undefined"!=typeof P?P:"undefined"!=typeof self?self:{}),S={isObject:c,isError:d,isErrorEvent:e,isUndefined:f,isFunction:g,isPlainObject:h,isString:i,isArray:j,isEmptyObject:k,supportsErrorEvent:l,supportsFetch:m,wrappedCallback:n,each:o,objectMerge:p,truncate:r,objectFrozen:q,hasKey:s,joinRegExp:t,urlencode:u,uuid4:w,htmlTreeAsString:x,htmlElementAsString:y,isSameException:B,isSameStacktrace:C,parseUrl:v,fill:D,safeJoin:E},T={collectWindowErrors:!0,debug:!1},U="undefined"!=typeof window?window:"undefined"!=typeof P?P:"undefined"!=typeof self?self:{},V=[].slice,W="?",X=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;T.report=function(){function a(a){f(),l.push(a)}function b(a){for(var b=l.length-1;b>=0;--b)l[b]===a&&l.splice(b,1)}function c(){g(),l=[]}function d(a,b){var c=null;if(!b||T.collectWindowErrors){for(var d in l)if(l.hasOwnProperty(d))try{l[d].apply(null,[a].concat(V.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function e(a,b,c,e,f){var g=null,i=S.isErrorEvent(f)?f.error:f,k=S.isErrorEvent(a)?a.message:a;if(o)T.computeStackTrace.augmentStackTraceWithInitialElement(o,b,c,k),h();else if(i&&S.isError(i))g=T.computeStackTrace(i),d(g,!0);else{var l,m={url:b,line:c,column:e},n=void 0;if("[object String]"==={}.toString.call(k)){var l=k.match(X);l&&(n=l[1],k=l[2])}m.func=W,g={name:n,message:k,url:F(),stack:[m]},d(g,!0)}return!!j&&j.apply(this,arguments)}function f(){k||(j=U.onerror,U.onerror=e,k=!0)}function g(){k&&(U.onerror=j,k=!1,j=void 0)}function h(){var a=o,b=m;m=null,o=null,n=null,d.apply(null,[a,!1].concat(b))}function i(a,b){var c=V.call(arguments,1);if(o){if(n===a)return;h()}var d=T.computeStackTrace(a);if(o=d,n=a,m=c,setTimeout(function(){n===a&&h()},d.incomplete?2e3:0),b!==!1)throw a}var j,k,l=[],m=null,n=null,o=null;return i.subscribe=a,i.unsubscribe=b,i.uninstall=c,i}(),T.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,d,e=/^\s*at (.*?) ?\(((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,f=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|\[native).*?|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,g=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,h=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,i=/\((\S*)(?::(\d+))(?::(\d+))\)/,j=a.stack.split("\n"),k=[],l=(/^(.*) is undefined$/.exec(a.message),0),m=j.length;l eval")>-1;o&&(b=h.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==l||c[5]||"undefined"==typeof a.columnNumber||(k[0].column=a.columnNumber+1),d={url:c[3],func:c[1]||W,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}!d.func&&d.line&&(d.func=W),k.push(d)}return k.length?{name:a.name,message:a.message,url:F(),stack:k}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=W),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,e){for(var f,g,h=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,i=[],j={},k=!1,l=c.caller;l&&!k;l=l.caller)if(l!==d&&l!==T.report){if(g={url:null,func:W,line:null,column:null},l.name?g.func=l.name:(f=h.exec(l.toString()))&&(g.func=f[1]),"undefined"==typeof g.func)try{g.func=f.input.substring(0,f.input.indexOf("{"))}catch(m){}j[""+l]?k=!0:j[""+l]=!0,i.push(g)}e&&i.splice(0,e);var n={name:a.name,message:a.message,url:F(),stack:i};return b(n,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),n}function d(b,d){var e=null;d=null==d?0:+d;try{if(e=a(b))return e}catch(f){if(T.debug)throw f}try{if(e=c(b,d+1))return e}catch(f){if(T.debug)throw f}return{name:b.name,message:b.message,url:F()}}return d.augmentStackTraceWithInitialElement=b,d.computeStackTraceFromStackProp=a,d}();var Y=T,Z=a(function(a,b){function c(a,b){for(var c=0;c0){var i=c(d,this);~i?d.splice(i+1):d.push(this),~i?f.splice(i,1/0,g):f.push(g),~c(d,h)&&(h=b.call(this,g,h))}else d.push(h);return null==a?h instanceof Error?e(h):h:a.call(this,g,h)}}b=a.exports=d,b.getSerialize=f});G.prototype=new Error,G.prototype.constructor=G;var $=G,_=function(a,b,c){var d=a[b],e=a;if(b in a){var f="warn"===b?"warning":b;a[b]=function(){var a=[].slice.call(arguments),g=S.safeJoin(a," "),h={level:f,logger:"console",extra:{arguments:a}};"assert"===b?a[0]===!1&&(g="Assertion failed: "+(S.safeJoin(a.slice(1)," ")||"console.assert"),h.extra.arguments=a.slice(1),c&&c(g,h)):c&&c(g,h),d&&Function.prototype.apply.call(d,e,a)}}},aa={wrapMethod:_},ba=S.isError,ca=S.isObject,da=S.isErrorEvent,ea=S.isUndefined,fa=S.isFunction,ga=S.isString,ha=S.isArray,ia=S.isEmptyObject,ja=S.each,ka=S.objectMerge,la=S.truncate,ma=S.objectFrozen,na=S.hasKey,oa=S.joinRegExp,pa=S.urlencode,qa=S.uuid4,ra=S.htmlTreeAsString,sa=S.isSameException,ta=S.isSameStacktrace,ua=S.parseUrl,va=S.fill,wa=S.supportsFetch,xa=aa.wrapMethod,ya="source protocol user pass host port path".split(" "),za=/^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/,Aa="undefined"!=typeof window?window:"undefined"!=typeof P?P:"undefined"!=typeof self?self:{},Ba=Aa.document,Ca=Aa.navigator;J.prototype={VERSION:"3.22.2",debug:!1,TraceKit:Y,config:function(a,b){var c=this;if(c.i)return this.C("error","Error: Raven has already been configured"),c;if(!a)return c;var d=c.m;b&&ja(b,function(a,b){"tags"===a||"extra"===a||"user"===a?c.l[a]=b:d[a]=b}),c.setDSN(a),d.ignoreErrors.push(/^Script error\.?$/),d.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/),d.ignoreErrors=oa(d.ignoreErrors),d.ignoreUrls=!!d.ignoreUrls.length&&oa(d.ignoreUrls),d.whitelistUrls=!!d.whitelistUrls.length&&oa(d.whitelistUrls),d.includePaths=oa(d.includePaths),d.maxBreadcrumbs=Math.max(0,Math.min(d.maxBreadcrumbs||100,100));var e={xhr:!0,console:!0,dom:!0,location:!0,sentry:!0},f=d.autoBreadcrumbs;"[object Object]"==={}.toString.call(f)?f=ka(e,f):f!==!1&&(f=e),d.autoBreadcrumbs=f;var g={tryCatch:!0},h=d.instrument;return"[object Object]"==={}.toString.call(h)?h=ka(g,h):h!==!1&&(h=g),d.instrument=h,Y.collectWindowErrors=!!d.collectWindowErrors,c},install:function(){var a=this;return a.isSetup()&&!a.p&&(Y.report.subscribe(function(){a.D.apply(a,arguments)}),a.E(),a.m.instrument&&a.m.instrument.tryCatch&&a.F(),a.m.autoBreadcrumbs&&a.G(),a.H(),a.p=!0),Error.stackTraceLimit=a.m.stackTraceLimit,this},setDSN:function(a){var b=this,c=b.I(a),d=c.path.lastIndexOf("/"),e=c.path.substr(1,d);b.J=a,b.j=c.user,b.K=c.pass&&c.pass.substr(1),b.k=c.path.substr(d+1),b.i=b.L(c),b.M=b.i+"/"+e+"api/"+b.k+"/store/",this.A()},context:function(a,b,c){return fa(a)&&(c=b||[],b=a,a=void 0),this.wrap(a,b).apply(this,c)},wrap:function(a,b,c){function d(){var d=[],f=arguments.length,g=!a||a&&a.deep!==!1;for(c&&fa(c)&&c.apply(this,arguments);f--;)d[f]=g?e.wrap(a,arguments[f]):arguments[f];try{return b.apply(this,d)}catch(h){throw e.N(),e.captureException(h,a),h}}var e=this;if(ea(b)&&!fa(a))return a;if(fa(a)&&(b=a,a=void 0),!fa(b))return b;try{if(b.a)return b;if(b.O)return b.O}catch(f){return b}for(var g in b)na(b,g)&&(d[g]=b[g]);return d.prototype=b.prototype,b.O=d,d.a=!0,d.b=b,d},uninstall:function(){return Y.report.uninstall(),this.P(),this.Q(),this.R(),Error.stackTraceLimit=this.q,this.p=!1,this},captureException:function(a,b){b=ka({trimHeadFrames:0},b?b:{});var c=!ba(a),d=!da(a),e=da(a)&&!a.error;if(c&&d||e)return this.captureMessage(a,ka(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}));da(a)&&(a=a.error),this.f=a;try{var f=Y.computeStackTrace(a);this.S(f,b)}catch(g){if(a!==g)throw g}return this},captureMessage:function(a,b){if(!this.m.ignoreErrors.test||!this.m.ignoreErrors.test(a)){b=b||{};var c,d=ka({message:a+""},b);try{throw new Error(a)}catch(e){c=e}c.name=null;var f=Y.computeStackTrace(c),g=ha(f.stack)&&f.stack[1],h=g&&g.url||"";if((!this.m.ignoreUrls.test||!this.m.ignoreUrls.test(h))&&(!this.m.whitelistUrls.test||this.m.whitelistUrls.test(h))){if(this.m.stacktrace||b&&b.stacktrace){b=ka({fingerprint:a,trimHeadFrames:(b.trimHeadFrames||0)+1},b);var i=this.T(f,b);d.stacktrace={frames:i.reverse()}}return this.U(d),this}}},captureBreadcrumb:function(a){var b=ka({timestamp:H()/1e3},a);if(fa(this.m.breadcrumbCallback)){var c=this.m.breadcrumbCallback(b);if(ca(c)&&!ia(c))b=c;else if(c===!1)return this}return this.w.push(b),this.w.length>this.m.maxBreadcrumbs&&this.w.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.t.push([a,b]),this.p&&this.H(),this},setUserContext:function(a){return this.l.user=a,this},setExtraContext:function(a){return this.V("extra",a),this},setTagsContext:function(a){return this.V("tags",a),this},clearContext:function(){return this.l={},this},getContext:function(){return JSON.parse(Z(this.l))},setEnvironment:function(a){return this.m.environment=a,this},setRelease:function(a){return this.m.release=a,this},setDataCallback:function(a){var b=this.m.dataCallback;return this.m.dataCallback=I(b,a),this},setBreadcrumbCallback:function(a){var b=this.m.breadcrumbCallback;return this.m.breadcrumbCallback=I(b,a),this},setShouldSendCallback:function(a){var b=this.m.shouldSendCallback;return this.m.shouldSendCallback=I(b,a),this},setTransport:function(a){return this.m.transport=a,this},lastException:function(){return this.f},lastEventId:function(){return this.h},isSetup:function(){return!!this.c&&(!!this.i||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.C("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=Aa.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(Ba){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new $("Missing eventId");var c=a.dsn||this.J;if(!c)throw new $("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.l.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.L(this.I(c)),h=Ba.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(Ba.head||Ba.body).appendChild(h)}},N:function(){var a=this;this.o+=1,setTimeout(function(){a.o-=1})},W:function(a,b){var c,d;if(this.d){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),Ba.createEvent?(c=Ba.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=Ba.createEventObject(),c.eventType=a);for(d in b)na(b,d)&&(c[d]=b[d]);if(Ba.createEvent)Ba.dispatchEvent(c);else try{Ba.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},X:function(a){var b=this;return function(c){if(b.Y=null,b.x!==c){b.x=c;var d;try{d=ra(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},Z:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.Y;g||a.X("input")(c),clearTimeout(g),a.Y=setTimeout(function(){a.Y=null},b)}}},$:function(a,b){var c=ua(this.y.href),d=ua(b),e=ua(a);this.z=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},E:function(){var a=this;a._=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.a?a._.apply(this.b,arguments):a._.apply(this,arguments)}},P:function(){this._&&(Function.prototype.toString=this._)},F:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.$(b.z,c+""),a.apply(this,arguments)}};va(history,"pushState",j,d),va(history,"replaceState",j,d)}if(c.console&&"console"in Aa&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};ja(["debug","info","warn","error","log"],function(a,b){xa(console,b,k)})}},Q:function(){for(var a;this.v.length;){a=this.v.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},R:function(){for(var a in this.s)this.r[a]=this.s[a]},H:function(){var a=this;ja(this.t,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},I:function(a){var b=za.exec(a),c={},d=7;try{for(;d--;)c[ya[d]]=b[d]||""}catch(e){throw new $("Invalid DSN: "+a)}if(c.pass&&!this.m.allowSecretKey)throw new $("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},L:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},D:function(){this.o||this.S.apply(this,arguments)},S:function(a,b){var c=this.T(a,b);this.W("handle",{stackInfo:a,options:b}),this.ba(a.name,a.message,a.url,a.lineno,c,b)},T:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(ja(a.stack,function(b,e){var f=c.ca(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.w,0)}),this.l.user&&(a.user=this.l.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||ia(a[b]))&&delete a[b]}),fa(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!ia(a)&&(!fa(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.ia()?void this.C("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() href parsing trick because React Native and other +// environments where DOM might not be available + + +function parseUrl$1(url) { + if (typeof url !== 'string') return {}; + var match = url.match(/^(([^:\/?#]+):)?(\/\/([^\/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?$/); // coerce to undefined values to empty string so we don't get 'undefined' + + var query = match[6] || ''; + var fragment = match[8] || ''; + return { + protocol: match[2], + host: match[4], + path: match[5], + relative: match[5] + query + fragment // everything minus origin + + }; +} + +function uuid4$1() { + var crypto = _window$3.crypto || _window$3.msCrypto; + + if (!isUndefined$1(crypto) && crypto.getRandomValues) { + // Use window.crypto API if available + // eslint-disable-next-line no-undef + var arr = new Uint16Array(8); + crypto.getRandomValues(arr); // set 4 in byte 7 + + arr[3] = arr[3] & 0xfff | 0x4000; // set 2 most significant bits of byte 9 to '10' + + arr[4] = arr[4] & 0x3fff | 0x8000; + + var pad = function pad(num) { + var v = num.toString(16); + + while (v.length < 4) { + v = '0' + v; + } + + return v; + }; + + return pad(arr[0]) + pad(arr[1]) + pad(arr[2]) + pad(arr[3]) + pad(arr[4]) + pad(arr[5]) + pad(arr[6]) + pad(arr[7]); + } else { + // http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/2117523#2117523 + return 'xxxxxxxxxxxx4xxxyxxxxxxxxxxxxxxx'.replace(/[xy]/g, function (c) { + var r = Math.random() * 16 | 0, + v = c === 'x' ? r : r & 0x3 | 0x8; + return v.toString(16); + }); + } +} +/** + * Given a child DOM element, returns a query-selector statement describing that + * and its ancestors + * e.g. [HTMLElement] => body > div > input#foo.btn[name=baz] + * @param elem + * @returns {string} + */ + + +function htmlTreeAsString$1(elem) { + /* eslint no-extra-parens:0*/ + var MAX_TRAVERSE_HEIGHT = 5, + MAX_OUTPUT_LEN = 80, + out = [], + height = 0, + len = 0, + separator = ' > ', + sepLength = separator.length, + nextStr; + + while (elem && height++ < MAX_TRAVERSE_HEIGHT) { + nextStr = htmlElementAsString(elem); // bail out if + // - nextStr is the 'html' element + // - the length of the string that would be created exceeds MAX_OUTPUT_LEN + // (ignore this limit if we are on the first iteration) + + if (nextStr === 'html' || height > 1 && len + out.length * sepLength + nextStr.length >= MAX_OUTPUT_LEN) { + break; + } + + out.push(nextStr); + len += nextStr.length; + elem = elem.parentNode; + } + + return out.reverse().join(separator); +} +/** + * Returns a simple, query-selector representation of a DOM element + * e.g. [HTMLElement] => input#foo.btn[name=baz] + * @param HTMLElement + * @returns {string} + */ + + +function htmlElementAsString(elem) { + var out = [], + className, + classes, + key, + attr, + i; + + if (!elem || !elem.tagName) { + return ''; + } + + out.push(elem.tagName.toLowerCase()); + + if (elem.id) { + out.push('#' + elem.id); + } + + className = elem.className; + + if (className && isString$1(className)) { + classes = className.split(/\s+/); + + for (i = 0; i < classes.length; i++) { + out.push('.' + classes[i]); + } + } + + var attrWhitelist = ['type', 'name', 'title', 'alt']; + + for (i = 0; i < attrWhitelist.length; i++) { + key = attrWhitelist[i]; + attr = elem.getAttribute(key); + + if (attr) { + out.push('[' + key + '="' + attr + '"]'); + } + } + + return out.join(''); +} +/** + * Returns true if either a OR b is truthy, but not both + */ + + +function isOnlyOneTruthy(a, b) { + return !!(!!a ^ !!b); +} +/** + * Returns true if both parameters are undefined + */ + + +function isBothUndefined(a, b) { + return isUndefined$1(a) && isUndefined$1(b); +} +/** + * Returns true if the two input exception interfaces have the same content + */ + + +function isSameException$1(ex1, ex2) { + if (isOnlyOneTruthy(ex1, ex2)) return false; + ex1 = ex1.values[0]; + ex2 = ex2.values[0]; + if (ex1.type !== ex2.type || ex1.value !== ex2.value) return false; // in case both stacktraces are undefined, we can't decide so default to false + + if (isBothUndefined(ex1.stacktrace, ex2.stacktrace)) return false; + return isSameStacktrace$1(ex1.stacktrace, ex2.stacktrace); +} +/** + * Returns true if the two input stack trace interfaces have the same content + */ + + +function isSameStacktrace$1(stack1, stack2) { + if (isOnlyOneTruthy(stack1, stack2)) return false; + var frames1 = stack1.frames; + var frames2 = stack2.frames; // Exit early if frame count differs + + if (frames1.length !== frames2.length) return false; // Iterate through every frame; bail out if anything differs + + var a, b; + + for (var i = 0; i < frames1.length; i++) { + a = frames1[i]; + b = frames2[i]; + if (a.filename !== b.filename || a.lineno !== b.lineno || a.colno !== b.colno || a['function'] !== b['function']) return false; + } + + return true; +} +/** + * Polyfill a method + * @param obj object e.g. `document` + * @param name method name present on object e.g. `addEventListener` + * @param replacement replacement function + * @param track {optional} record instrumentation to an array + */ + + +function fill$1(obj, name, replacement, track) { + var orig = obj[name]; + obj[name] = replacement(orig); + obj[name].__raven__ = true; + obj[name].__orig__ = orig; + + if (track) { + track.push([obj, name, orig]); + } +} +/** + * Join values in array + * @param input array of values to be joined together + * @param delimiter string to be placed in-between values + * @returns {string} + */ + + +function safeJoin(input, delimiter) { + if (!isArray$1(input)) return ''; + var output = []; + + for (var i = 0; i < input.length; i++) { + try { + output.push(String(input[i])); + } catch (e) { + output.push('[value cannot be serialized]'); + } + } + + return output.join(delimiter); +} + +var utils = { + isObject: isObject$1, + isError: isError$1, + isErrorEvent: isErrorEvent$1, + isUndefined: isUndefined$1, + isFunction: isFunction$1, + isPlainObject: isPlainObject, + isString: isString$1, + isArray: isArray$1, + isEmptyObject: isEmptyObject$1, + supportsErrorEvent: supportsErrorEvent, + supportsFetch: supportsFetch$1, + wrappedCallback: wrappedCallback, + each: each$1, + objectMerge: objectMerge$1, + truncate: truncate$1, + objectFrozen: objectFrozen$1, + hasKey: hasKey$1, + joinRegExp: joinRegExp$1, + urlencode: urlencode$1, + uuid4: uuid4$1, + htmlTreeAsString: htmlTreeAsString$1, + htmlElementAsString: htmlElementAsString, + isSameException: isSameException$1, + isSameStacktrace: isSameStacktrace$1, + parseUrl: parseUrl$1, + fill: fill$1, + safeJoin: safeJoin +}; + +/* + TraceKit - Cross brower stack traces + + This was originally forked from github.com/occ/TraceKit, but has since been + largely re-written and is now maintained as part of raven-js. Tests for + this are in test/vendor. + + MIT license +*/ + +var TraceKit = { + collectWindowErrors: true, + debug: false +}; // This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) + +var _window$2 = typeof window !== 'undefined' ? window : typeof commonjsGlobal !== 'undefined' ? commonjsGlobal : typeof self !== 'undefined' ? self : {}; // global reference to slice + + +var _slice = [].slice; +var UNKNOWN_FUNCTION = '?'; // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error#Error_types + +var ERROR_TYPES_RE = /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/; + +function getLocationHref() { + if (typeof document === 'undefined' || document.location == null) return ''; + return document.location.href; +} +/** + * TraceKit.report: cross-browser processing of unhandled exceptions + * + * Syntax: + * TraceKit.report.subscribe(function(stackInfo) { ... }) + * TraceKit.report.unsubscribe(function(stackInfo) { ... }) + * TraceKit.report(exception) + * try { ...code... } catch(ex) { TraceKit.report(ex); } + * + * Supports: + * - Firefox: full stack trace with line numbers, plus column number + * on top frame; column number is not guaranteed + * - Opera: full stack trace with line and column numbers + * - Chrome: full stack trace with line and column numbers + * - Safari: line and column number for the top frame only; some frames + * may be missing, and column number is not guaranteed + * - IE: line and column number for the top frame only; some frames + * may be missing, and column number is not guaranteed + * + * In theory, TraceKit should work on all of the following versions: + * - IE5.5+ (only 8.0 tested) + * - Firefox 0.9+ (only 3.5+ tested) + * - Opera 7+ (only 10.50 tested; versions 9 and earlier may require + * Exceptions Have Stacktrace to be enabled in opera:config) + * - Safari 3+ (only 4+ tested) + * - Chrome 1+ (only 5+ tested) + * - Konqueror 3.5+ (untested) + * + * Requires TraceKit.computeStackTrace. + * + * Tries to catch all unhandled exceptions and report them to the + * subscribed handlers. Please note that TraceKit.report will rethrow the + * exception. This is REQUIRED in order to get a useful stack trace in IE. + * If the exception does not reach the top of the browser, you will only + * get a stack trace from the point where TraceKit.report was called. + * + * Handlers receive a stackInfo object as described in the + * TraceKit.computeStackTrace docs. + */ + + +TraceKit.report = function reportModuleWrapper() { + var handlers = [], + lastArgs = null, + lastException = null, + lastExceptionStack = null; + /** + * Add a crash handler. + * @param {Function} handler + */ + + function subscribe(handler) { + installGlobalHandler(); + handlers.push(handler); + } + /** + * Remove a crash handler. + * @param {Function} handler + */ + + + function unsubscribe(handler) { + for (var i = handlers.length - 1; i >= 0; --i) { + if (handlers[i] === handler) { + handlers.splice(i, 1); + } + } + } + /** + * Remove all crash handlers. + */ + + + function unsubscribeAll() { + uninstallGlobalHandler(); + handlers = []; + } + /** + * Dispatch stack information to all handlers. + * @param {Object.} stack + */ + + + function notifyHandlers(stack, isWindowError) { + var exception = null; + + if (isWindowError && !TraceKit.collectWindowErrors) { + return; + } + + for (var i in handlers) { + if (handlers.hasOwnProperty(i)) { + try { + handlers[i].apply(null, [stack].concat(_slice.call(arguments, 2))); + } catch (inner) { + exception = inner; + } + } + } + + if (exception) { + throw exception; + } + } + + var _oldOnerrorHandler, _onErrorHandlerInstalled; + /** + * Ensures all global unhandled exceptions are recorded. + * Supported by Gecko and IE. + * @param {string} msg Error message. + * @param {string} url URL of script that generated the exception. + * @param {(number|string)} lineNo The line number at which the error + * occurred. + * @param {?(number|string)} colNo The column number at which the error + * occurred. + * @param {?Error} ex The actual Error object. + */ + + + function traceKitWindowOnError(msg, url, lineNo, colNo, ex) { + var stack = null; // If 'ex' is ErrorEvent, get real Error from inside + + var exception = utils.isErrorEvent(ex) ? ex.error : ex; // If 'msg' is ErrorEvent, get real message from inside + + var message = utils.isErrorEvent(msg) ? msg.message : msg; + + if (lastExceptionStack) { + TraceKit.computeStackTrace.augmentStackTraceWithInitialElement(lastExceptionStack, url, lineNo, message); + processLastException(); + } else if (exception && utils.isError(exception)) { + // non-string `exception` arg; attempt to extract stack trace + // New chrome and blink send along a real error object + // Let's just report that like a normal error. + // See: https://mikewest.org/2013/08/debugging-runtime-errors-with-window-onerror + stack = TraceKit.computeStackTrace(exception); + notifyHandlers(stack, true); + } else { + var location = { + url: url, + line: lineNo, + column: colNo + }; + var name = undefined; + var groups; + + if ({}.toString.call(message) === '[object String]') { + var groups = message.match(ERROR_TYPES_RE); + + if (groups) { + name = groups[1]; + message = groups[2]; + } + } + + location.func = UNKNOWN_FUNCTION; + stack = { + name: name, + message: message, + url: getLocationHref(), + stack: [location] + }; + notifyHandlers(stack, true); + } + + if (_oldOnerrorHandler) { + return _oldOnerrorHandler.apply(this, arguments); + } + + return false; + } + + function installGlobalHandler() { + if (_onErrorHandlerInstalled) { + return; + } + + _oldOnerrorHandler = _window$2.onerror; + _window$2.onerror = traceKitWindowOnError; + _onErrorHandlerInstalled = true; + } + + function uninstallGlobalHandler() { + if (!_onErrorHandlerInstalled) { + return; + } + + _window$2.onerror = _oldOnerrorHandler; + _onErrorHandlerInstalled = false; + _oldOnerrorHandler = undefined; + } + + function processLastException() { + var _lastExceptionStack = lastExceptionStack, + _lastArgs = lastArgs; + lastArgs = null; + lastExceptionStack = null; + lastException = null; + notifyHandlers.apply(null, [_lastExceptionStack, false].concat(_lastArgs)); + } + /** + * Reports an unhandled Error to TraceKit. + * @param {Error} ex + * @param {?boolean} rethrow If false, do not re-throw the exception. + * Only used for window.onerror to not cause an infinite loop of + * rethrowing. + */ + + + function report(ex, rethrow) { + var args = _slice.call(arguments, 1); + + if (lastExceptionStack) { + if (lastException === ex) { + return; // already caught by an inner catch block, ignore + } else { + processLastException(); + } + } + + var stack = TraceKit.computeStackTrace(ex); + lastExceptionStack = stack; + lastException = ex; + lastArgs = args; // If the stack trace is incomplete, wait for 2 seconds for + // slow slow IE to see if onerror occurs or not before reporting + // this exception; otherwise, we will end up with an incomplete + // stack trace + + setTimeout(function () { + if (lastException === ex) { + processLastException(); + } + }, stack.incomplete ? 2000 : 0); + + if (rethrow !== false) { + throw ex; // re-throw to propagate to the top level (and cause window.onerror) + } + } + + report.subscribe = subscribe; + report.unsubscribe = unsubscribe; + report.uninstall = unsubscribeAll; + return report; +}(); +/** + * TraceKit.computeStackTrace: cross-browser stack traces in JavaScript + * + * Syntax: + * s = TraceKit.computeStackTrace(exception) // consider using TraceKit.report instead (see below) + * Returns: + * s.name - exception name + * s.message - exception message + * s.stack[i].url - JavaScript or HTML file URL + * s.stack[i].func - function name, or empty for anonymous functions (if guessing did not work) + * s.stack[i].args - arguments passed to the function, if known + * s.stack[i].line - line number, if known + * s.stack[i].column - column number, if known + * + * Supports: + * - Firefox: full stack trace with line numbers and unreliable column + * number on top frame + * - Opera 10: full stack trace with line and column numbers + * - Opera 9-: full stack trace with line numbers + * - Chrome: full stack trace with line and column numbers + * - Safari: line and column number for the topmost stacktrace element + * only + * - IE: no line numbers whatsoever + * + * Tries to guess names of anonymous functions by looking for assignments + * in the source code. In IE and Safari, we have to guess source file names + * by searching for function bodies inside all page scripts. This will not + * work for scripts that are loaded cross-domain. + * Here be dragons: some function names may be guessed incorrectly, and + * duplicate functions may be mismatched. + * + * TraceKit.computeStackTrace should only be used for tracing purposes. + * Logging of unhandled exceptions should be done with TraceKit.report, + * which builds on top of TraceKit.computeStackTrace and provides better + * IE support by utilizing the window.onerror event to retrieve information + * about the top of the stack. + * + * Note: In IE and Safari, no stack trace is recorded on the Error object, + * so computeStackTrace instead walks its *own* chain of callers. + * This means that: + * * in Safari, some methods may be missing from the stack trace; + * * in IE, the topmost function in the stack trace will always be the + * caller of computeStackTrace. + * + * This is okay for tracing (because you are likely to be calling + * computeStackTrace from the function you want to be the topmost element + * of the stack trace anyway), but not okay for logging unhandled + * exceptions (because your catch block will likely be far away from the + * inner function that actually caused the exception). + * + */ + + +TraceKit.computeStackTrace = function computeStackTraceWrapper() { + // Contents of Exception in various browsers. + // + // SAFARI: + // ex.message = Can't find variable: qq + // ex.line = 59 + // ex.sourceId = 580238192 + // ex.sourceURL = http://... + // ex.expressionBeginOffset = 96 + // ex.expressionCaretOffset = 98 + // ex.expressionEndOffset = 98 + // ex.name = ReferenceError + // + // FIREFOX: + // ex.message = qq is not defined + // ex.fileName = http://... + // ex.lineNumber = 59 + // ex.columnNumber = 69 + // ex.stack = ...stack trace... (see the example below) + // ex.name = ReferenceError + // + // CHROME: + // ex.message = qq is not defined + // ex.name = ReferenceError + // ex.type = not_defined + // ex.arguments = ['aa'] + // ex.stack = ...stack trace... + // + // INTERNET EXPLORER: + // ex.message = ... + // ex.name = ReferenceError + // + // OPERA: + // ex.message = ...message... (see the example below) + // ex.name = ReferenceError + // ex.opera#sourceloc = 11 (pretty much useless, duplicates the info in ex.message) + // ex.stacktrace = n/a; see 'opera:config#UserPrefs|Exceptions Have Stacktrace' + + /** + * Computes stack trace information from the stack property. + * Chrome and Gecko use this property. + * @param {Error} ex + * @return {?Object.} Stack trace information. + */ + function computeStackTraceFromStackProp(ex) { + if (typeof ex.stack === 'undefined' || !ex.stack) return; + var chrome = /^\s*at (.*?) ?\(((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i, + gecko = /^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|\[native).*?|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i, + winjs = /^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i, + // Used to additionally parse URL/line/column from eval frames + geckoEval = /(\S+) line (\d+)(?: > eval line \d+)* > eval/i, + chromeEval = /\((\S*)(?::(\d+))(?::(\d+))\)/, + lines = ex.stack.split('\n'), + stack = [], + submatch, + parts, + element, + reference = /^(.*) is undefined$/.exec(ex.message); + + for (var i = 0, j = lines.length; i < j; ++i) { + if (parts = chrome.exec(lines[i])) { + var isNative = parts[2] && parts[2].indexOf('native') === 0; // start of line + + var isEval = parts[2] && parts[2].indexOf('eval') === 0; // start of line + + if (isEval && (submatch = chromeEval.exec(parts[2]))) { + // throw out eval line/column and use top-most line/column number + parts[2] = submatch[1]; // url + + parts[3] = submatch[2]; // line + + parts[4] = submatch[3]; // column + } + + element = { + url: !isNative ? parts[2] : null, + func: parts[1] || UNKNOWN_FUNCTION, + args: isNative ? [parts[2]] : [], + line: parts[3] ? +parts[3] : null, + column: parts[4] ? +parts[4] : null + }; + } else if (parts = winjs.exec(lines[i])) { + element = { + url: parts[2], + func: parts[1] || UNKNOWN_FUNCTION, + args: [], + line: +parts[3], + column: parts[4] ? +parts[4] : null + }; + } else if (parts = gecko.exec(lines[i])) { + var isEval = parts[3] && parts[3].indexOf(' > eval') > -1; + + if (isEval && (submatch = geckoEval.exec(parts[3]))) { + // throw out eval line/column and use top-most line number + parts[3] = submatch[1]; + parts[4] = submatch[2]; + parts[5] = null; // no column when eval + } else if (i === 0 && !parts[5] && typeof ex.columnNumber !== 'undefined') { + // FireFox uses this awesome columnNumber property for its top frame + // Also note, Firefox's column number is 0-based and everything else expects 1-based, + // so adding 1 + // NOTE: this hack doesn't work if top-most frame is eval + stack[0].column = ex.columnNumber + 1; + } + + element = { + url: parts[3], + func: parts[1] || UNKNOWN_FUNCTION, + args: parts[2] ? parts[2].split(',') : [], + line: parts[4] ? +parts[4] : null, + column: parts[5] ? +parts[5] : null + }; + } else { + continue; + } + + if (!element.func && element.line) { + element.func = UNKNOWN_FUNCTION; + } + + stack.push(element); + } + + if (!stack.length) { + return null; + } + + return { + name: ex.name, + message: ex.message, + url: getLocationHref(), + stack: stack + }; + } + /** + * Adds information about the first frame to incomplete stack traces. + * Safari and IE require this to get complete data on the first frame. + * @param {Object.} stackInfo Stack trace information from + * one of the compute* methods. + * @param {string} url The URL of the script that caused an error. + * @param {(number|string)} lineNo The line number of the script that + * caused an error. + * @param {string=} message The error generated by the browser, which + * hopefully contains the name of the object that caused the error. + * @return {boolean} Whether or not the stack information was + * augmented. + */ + + + function augmentStackTraceWithInitialElement(stackInfo, url, lineNo, message) { + var initial = { + url: url, + line: lineNo + }; + + if (initial.url && initial.line) { + stackInfo.incomplete = false; + + if (!initial.func) { + initial.func = UNKNOWN_FUNCTION; + } + + if (stackInfo.stack.length > 0) { + if (stackInfo.stack[0].url === initial.url) { + if (stackInfo.stack[0].line === initial.line) { + return false; // already in stack trace + } else if (!stackInfo.stack[0].line && stackInfo.stack[0].func === initial.func) { + stackInfo.stack[0].line = initial.line; + return false; + } + } + } + + stackInfo.stack.unshift(initial); + stackInfo.partial = true; + return true; + } else { + stackInfo.incomplete = true; + } + + return false; + } + /** + * Computes stack trace information by walking the arguments.caller + * chain at the time the exception occurred. This will cause earlier + * frames to be missed but is the only way to get any stack trace in + * Safari and IE. The top frame is restored by + * {@link augmentStackTraceWithInitialElement}. + * @param {Error} ex + * @return {?Object.} Stack trace information. + */ + + + function computeStackTraceByWalkingCallerChain(ex, depth) { + var functionName = /function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i, + stack = [], + funcs = {}, + recursion = false, + parts, + item; + + for (var curr = computeStackTraceByWalkingCallerChain.caller; curr && !recursion; curr = curr.caller) { + if (curr === computeStackTrace || curr === TraceKit.report) { + // console.log('skipping internal function'); + continue; + } + + item = { + url: null, + func: UNKNOWN_FUNCTION, + line: null, + column: null + }; + + if (curr.name) { + item.func = curr.name; + } else if (parts = functionName.exec(curr.toString())) { + item.func = parts[1]; + } + + if (typeof item.func === 'undefined') { + try { + item.func = parts.input.substring(0, parts.input.indexOf('{')); + } catch (e) {} + } + + if (funcs['' + curr]) { + recursion = true; + } else { + funcs['' + curr] = true; + } + + stack.push(item); + } + + if (depth) { + // console.log('depth is ' + depth); + // console.log('stack is ' + stack.length); + stack.splice(0, depth); + } + + var result = { + name: ex.name, + message: ex.message, + url: getLocationHref(), + stack: stack + }; + augmentStackTraceWithInitialElement(result, ex.sourceURL || ex.fileName, ex.line || ex.lineNumber, ex.message || ex.description); + return result; + } + /** + * Computes a stack trace for an exception. + * @param {Error} ex + * @param {(string|number)=} depth + */ + + + function computeStackTrace(ex, depth) { + var stack = null; + depth = depth == null ? 0 : +depth; + + try { + stack = computeStackTraceFromStackProp(ex); + + if (stack) { + return stack; + } + } catch (e) { + if (TraceKit.debug) { + throw e; + } + } + + try { + stack = computeStackTraceByWalkingCallerChain(ex, depth + 1); + + if (stack) { + return stack; + } + } catch (e) { + if (TraceKit.debug) { + throw e; + } + } + + return { + name: ex.name, + message: ex.message, + url: getLocationHref() + }; + } + + computeStackTrace.augmentStackTraceWithInitialElement = augmentStackTraceWithInitialElement; + computeStackTrace.computeStackTraceFromStackProp = computeStackTraceFromStackProp; + return computeStackTrace; +}(); + +var tracekit = TraceKit; + +var stringify_1 = createCommonjsModule(function (module, exports) { + /* + json-stringify-safe + Like JSON.stringify, but doesn't throw on circular references. + + Originally forked from https://github.com/isaacs/json-stringify-safe + version 5.0.1 on 3/8/2017 and modified to handle Errors serialization + and IE8 compatibility. Tests for this are in test/vendor. + + ISC license: https://github.com/isaacs/json-stringify-safe/blob/master/LICENSE + */ + exports = module.exports = stringify; + exports.getSerialize = serializer; + + function indexOf(haystack, needle) { + for (var i = 0; i < haystack.length; ++i) { + if (haystack[i] === needle) return i; + } + + return -1; + } + + function stringify(obj, replacer, spaces, cycleReplacer) { + return JSON.stringify(obj, serializer(replacer, cycleReplacer), spaces); + } // https://github.com/ftlabs/js-abbreviate/blob/fa709e5f139e7770a71827b1893f22418097fbda/index.js#L95-L106 + + + function stringifyError(value) { + var err = { + // These properties are implemented as magical getters and don't show up in for in + stack: value.stack, + message: value.message, + name: value.name + }; + + for (var i in value) { + if (Object.prototype.hasOwnProperty.call(value, i)) { + err[i] = value[i]; + } + } + + return err; + } + + function serializer(replacer, cycleReplacer) { + var stack = []; + var keys = []; + + if (cycleReplacer == null) { + cycleReplacer = function cycleReplacer(key, value) { + if (stack[0] === value) { + return '[Circular ~]'; + } + + return '[Circular ~.' + keys.slice(0, indexOf(stack, value)).join('.') + ']'; + }; + } + + return function (key, value) { + if (stack.length > 0) { + var thisPos = indexOf(stack, this); + ~thisPos ? stack.splice(thisPos + 1) : stack.push(this); + ~thisPos ? keys.splice(thisPos, Infinity, key) : keys.push(key); + + if (~indexOf(stack, value)) { + value = cycleReplacer.call(this, key, value); + } + } else { + stack.push(value); + } + + return replacer == null ? value instanceof Error ? stringifyError(value) : value : replacer.call(this, key, value); + }; + } +}); +var stringify_2 = stringify_1.getSerialize; + +function RavenConfigError(message) { + this.name = 'RavenConfigError'; + this.message = message; +} + +RavenConfigError.prototype = new Error(); +RavenConfigError.prototype.constructor = RavenConfigError; +var configError = RavenConfigError; + +var wrapMethod = function wrapMethod(console, level, callback) { + var originalConsoleLevel = console[level]; + var originalConsole = console; + + if (!(level in console)) { + return; + } + + var sentryLevel = level === 'warn' ? 'warning' : level; + + console[level] = function () { + var args = [].slice.call(arguments); + var msg = utils.safeJoin(args, ' '); + var data = { + level: sentryLevel, + logger: 'console', + extra: { + arguments: args + } + }; + + if (level === 'assert') { + if (args[0] === false) { + // Default browsers message + msg = 'Assertion failed: ' + (utils.safeJoin(args.slice(1), ' ') || 'console.assert'); + data.extra.arguments = args.slice(1); + callback && callback(msg, data); + } + } else { + callback && callback(msg, data); + } // this fails for some browsers. :( + + + if (originalConsoleLevel) { + // IE9 doesn't allow calling apply on console functions directly + // See: https://stackoverflow.com/questions/5472938/does-ie9-support-console-log-and-is-it-a-real-function#answer-5473193 + Function.prototype.apply.call(originalConsoleLevel, originalConsole, args); + } + }; +}; + +var console$1 = { + wrapMethod: wrapMethod +}; + +/*global XDomainRequest:false */ + +var isError = utils.isError; +var isObject = utils.isObject; +var isErrorEvent = utils.isErrorEvent; +var isUndefined = utils.isUndefined; +var isFunction = utils.isFunction; +var isString = utils.isString; +var isArray = utils.isArray; +var isEmptyObject = utils.isEmptyObject; +var each = utils.each; +var objectMerge = utils.objectMerge; +var truncate = utils.truncate; +var objectFrozen = utils.objectFrozen; +var hasKey = utils.hasKey; +var joinRegExp = utils.joinRegExp; +var urlencode = utils.urlencode; +var uuid4 = utils.uuid4; +var htmlTreeAsString = utils.htmlTreeAsString; +var isSameException = utils.isSameException; +var isSameStacktrace = utils.isSameStacktrace; +var parseUrl = utils.parseUrl; +var fill = utils.fill; +var supportsFetch = utils.supportsFetch; +var wrapConsoleMethod = console$1.wrapMethod; +var dsnKeys = 'source protocol user pass host port path'.split(' '); +var dsnPattern = /^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/; + +function now() { + return +new Date(); +} // This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) + + +var _window$1 = typeof window !== 'undefined' ? window : typeof commonjsGlobal !== 'undefined' ? commonjsGlobal : typeof self !== 'undefined' ? self : {}; + +var _document = _window$1.document; +var _navigator = _window$1.navigator; + +function keepOriginalCallback(original, callback) { + return isFunction(callback) ? function (data) { + return callback(data, original); + } : callback; +} // First, check for JSON support +// If there is no JSON, we no-op the core features of Raven +// since JSON is required to encode the payload + + +function Raven$1() { + this._hasJSON = !!(_typeof(JSON) === 'object' && JSON.stringify); // Raven can run in contexts where there's no document (react-native) + + this._hasDocument = !isUndefined(_document); + this._hasNavigator = !isUndefined(_navigator); + this._lastCapturedException = null; + this._lastData = null; + this._lastEventId = null; + this._globalServer = null; + this._globalKey = null; + this._globalProject = null; + this._globalContext = {}; + this._globalOptions = { + // SENTRY_RELEASE can be injected by https://github.com/getsentry/sentry-webpack-plugin + release: _window$1.SENTRY_RELEASE && _window$1.SENTRY_RELEASE.id, + logger: 'javascript', + ignoreErrors: [], + ignoreUrls: [], + whitelistUrls: [], + includePaths: [], + headers: null, + collectWindowErrors: true, + maxMessageLength: 0, + // By default, truncates URL values to 250 chars + maxUrlLength: 250, + stackTraceLimit: 50, + autoBreadcrumbs: true, + instrument: true, + sampleRate: 1 + }; + this._fetchDefaults = { + method: 'POST', + keepalive: true, + referrerPolicy: 'origin' + }; + this._ignoreOnError = 0; + this._isRavenInstalled = false; + this._originalErrorStackTraceLimit = Error.stackTraceLimit; // capture references to window.console *and* all its methods first + // before the console plugin has a chance to monkey patch + + this._originalConsole = _window$1.console || {}; + this._originalConsoleMethods = {}; + this._plugins = []; + this._startTime = now(); + this._wrappedBuiltIns = []; + this._breadcrumbs = []; + this._lastCapturedEvent = null; + this._keypressTimeout; + this._location = _window$1.location; + this._lastHref = this._location && this._location.href; + + this._resetBackoff(); // eslint-disable-next-line guard-for-in + + + for (var method in this._originalConsole) { + this._originalConsoleMethods[method] = this._originalConsole[method]; + } +} +/* + * The core Raven singleton + * + * @this {Raven} + */ + + +Raven$1.prototype = { + // Hardcode version string so that raven source can be loaded directly via + // webpack (using a build step causes webpack #1617). Grunt verifies that + // this value matches package.json during build. + // See: https://github.com/getsentry/raven-js/issues/465 + VERSION: '3.22.2', + debug: false, + TraceKit: tracekit, + // alias to TraceKit + + /* + * Configure Raven with a DSN and extra options + * + * @param {string} dsn The public Sentry DSN + * @param {object} options Set of global options [optional] + * @return {Raven} + */ + config: function config(dsn, options) { + var self = this; + + if (self._globalServer) { + this._logDebug('error', 'Error: Raven has already been configured'); + + return self; + } + + if (!dsn) return self; + var globalOptions = self._globalOptions; // merge in options + + if (options) { + each(options, function (key, value) { + // tags and extra are special and need to be put into context + if (key === 'tags' || key === 'extra' || key === 'user') { + self._globalContext[key] = value; + } else { + globalOptions[key] = value; + } + }); + } + + self.setDSN(dsn); // "Script error." is hard coded into browsers for errors that it can't read. + // this is the result of a script being pulled in from an external domain and CORS. + + globalOptions.ignoreErrors.push(/^Script error\.?$/); + globalOptions.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/); // join regexp rules into one big rule + + globalOptions.ignoreErrors = joinRegExp(globalOptions.ignoreErrors); + globalOptions.ignoreUrls = globalOptions.ignoreUrls.length ? joinRegExp(globalOptions.ignoreUrls) : false; + globalOptions.whitelistUrls = globalOptions.whitelistUrls.length ? joinRegExp(globalOptions.whitelistUrls) : false; + globalOptions.includePaths = joinRegExp(globalOptions.includePaths); + globalOptions.maxBreadcrumbs = Math.max(0, Math.min(globalOptions.maxBreadcrumbs || 100, 100)); // default and hard limit is 100 + + var autoBreadcrumbDefaults = { + xhr: true, + console: true, + dom: true, + location: true, + sentry: true + }; + var autoBreadcrumbs = globalOptions.autoBreadcrumbs; + + if ({}.toString.call(autoBreadcrumbs) === '[object Object]') { + autoBreadcrumbs = objectMerge(autoBreadcrumbDefaults, autoBreadcrumbs); + } else if (autoBreadcrumbs !== false) { + autoBreadcrumbs = autoBreadcrumbDefaults; + } + + globalOptions.autoBreadcrumbs = autoBreadcrumbs; + var instrumentDefaults = { + tryCatch: true + }; + var instrument = globalOptions.instrument; + + if ({}.toString.call(instrument) === '[object Object]') { + instrument = objectMerge(instrumentDefaults, instrument); + } else if (instrument !== false) { + instrument = instrumentDefaults; + } + + globalOptions.instrument = instrument; + tracekit.collectWindowErrors = !!globalOptions.collectWindowErrors; // return for chaining + + return self; + }, + + /* + * Installs a global window.onerror error handler + * to capture and report uncaught exceptions. + * At this point, install() is required to be called due + * to the way TraceKit is set up. + * + * @return {Raven} + */ + install: function install() { + var self = this; + + if (self.isSetup() && !self._isRavenInstalled) { + tracekit.report.subscribe(function () { + self._handleOnErrorStackInfo.apply(self, arguments); + }); + + self._patchFunctionToString(); + + if (self._globalOptions.instrument && self._globalOptions.instrument.tryCatch) { + self._instrumentTryCatch(); + } + + if (self._globalOptions.autoBreadcrumbs) self._instrumentBreadcrumbs(); // Install all of the plugins + + self._drainPlugins(); + + self._isRavenInstalled = true; + } + + Error.stackTraceLimit = self._globalOptions.stackTraceLimit; + return this; + }, + + /* + * Set the DSN (can be called multiple time unlike config) + * + * @param {string} dsn The public Sentry DSN + */ + setDSN: function setDSN(dsn) { + var self = this, + uri = self._parseDSN(dsn), + lastSlash = uri.path.lastIndexOf('/'), + path = uri.path.substr(1, lastSlash); + + self._dsn = dsn; + self._globalKey = uri.user; + self._globalSecret = uri.pass && uri.pass.substr(1); + self._globalProject = uri.path.substr(lastSlash + 1); + self._globalServer = self._getGlobalServer(uri); + self._globalEndpoint = self._globalServer + '/' + path + 'api/' + self._globalProject + '/store/'; // Reset backoff state since we may be pointing at a + // new project/server + + this._resetBackoff(); + }, + + /* + * Wrap code within a context so Raven can capture errors + * reliably across domains that is executed immediately. + * + * @param {object} options A specific set of options for this context [optional] + * @param {function} func The callback to be immediately executed within the context + * @param {array} args An array of arguments to be called with the callback [optional] + */ + context: function context(options, func, args) { + if (isFunction(options)) { + args = func || []; + func = options; + options = undefined; + } + + return this.wrap(options, func).apply(this, args); + }, + + /* + * Wrap code within a context and returns back a new function to be executed + * + * @param {object} options A specific set of options for this context [optional] + * @param {function} func The function to be wrapped in a new context + * @param {function} func A function to call before the try/catch wrapper [optional, private] + * @return {function} The newly wrapped functions with a context + */ + wrap: function wrap(options, func, _before) { + var self = this; // 1 argument has been passed, and it's not a function + // so just return it + + if (isUndefined(func) && !isFunction(options)) { + return options; + } // options is optional + + + if (isFunction(options)) { + func = options; + options = undefined; + } // At this point, we've passed along 2 arguments, and the second one + // is not a function either, so we'll just return the second argument. + + + if (!isFunction(func)) { + return func; + } // We don't wanna wrap it twice! + + + try { + if (func.__raven__) { + return func; + } // If this has already been wrapped in the past, return that + + + if (func.__raven_wrapper__) { + return func.__raven_wrapper__; + } + } catch (e) { + // Just accessing custom props in some Selenium environments + // can cause a "Permission denied" exception (see raven-js#495). + // Bail on wrapping and return the function as-is (defers to window.onerror). + return func; + } + + function wrapped() { + var args = [], + i = arguments.length, + deep = !options || options && options.deep !== false; + + if (_before && isFunction(_before)) { + _before.apply(this, arguments); + } // Recursively wrap all of a function's arguments that are + // functions themselves. + + + while (i--) { + args[i] = deep ? self.wrap(options, arguments[i]) : arguments[i]; + } + + try { + // Attempt to invoke user-land function + // NOTE: If you are a Sentry user, and you are seeing this stack frame, it + // means Raven caught an error invoking your application code. This is + // expected behavior and NOT indicative of a bug with Raven.js. + return func.apply(this, args); + } catch (e) { + self._ignoreNextOnError(); + + self.captureException(e, options); + throw e; + } + } // copy over properties of the old function + + + for (var property in func) { + if (hasKey(func, property)) { + wrapped[property] = func[property]; + } + } + + wrapped.prototype = func.prototype; + func.__raven_wrapper__ = wrapped; // Signal that this function has been wrapped/filled already + // for both debugging and to prevent it to being wrapped/filled twice + + wrapped.__raven__ = true; + wrapped.__orig__ = func; + return wrapped; + }, + + /* + * Uninstalls the global error handler. + * + * @return {Raven} + */ + uninstall: function uninstall() { + tracekit.report.uninstall(); + + this._unpatchFunctionToString(); + + this._restoreBuiltIns(); + + this._restoreConsole(); + + Error.stackTraceLimit = this._originalErrorStackTraceLimit; + this._isRavenInstalled = false; + return this; + }, + + /* + * Manually capture an exception and send it over to Sentry + * + * @param {error} ex An exception to be logged + * @param {object} options A specific set of options for this error [optional] + * @return {Raven} + */ + captureException: function captureException(ex, options) { + options = objectMerge({ + trimHeadFrames: 0 + }, options ? options : {}); // Cases for sending ex as a message, rather than an exception + + var isNotError = !isError(ex); + var isNotErrorEvent = !isErrorEvent(ex); + var isErrorEventWithoutError = isErrorEvent(ex) && !ex.error; + + if (isNotError && isNotErrorEvent || isErrorEventWithoutError) { + return this.captureMessage(ex, objectMerge(options, { + stacktrace: true, + // if we fall back to captureMessage, default to attempting a new trace + trimHeadFrames: options.trimHeadFrames + 1 + })); + } // Get actual Error from ErrorEvent + + + if (isErrorEvent(ex)) ex = ex.error; // Store the raw exception object for potential debugging and introspection + + this._lastCapturedException = ex; // TraceKit.report will re-raise any exception passed to it, + // which means you have to wrap it in try/catch. Instead, we + // can wrap it here and only re-raise if TraceKit.report + // raises an exception different from the one we asked to + // report on. + + try { + var stack = tracekit.computeStackTrace(ex); + + this._handleStackInfo(stack, options); + } catch (ex1) { + if (ex !== ex1) { + throw ex1; + } + } + + return this; + }, + + /* + * Manually send a message to Sentry + * + * @param {string} msg A plain message to be captured in Sentry + * @param {object} options A specific set of options for this message [optional] + * @return {Raven} + */ + captureMessage: function captureMessage(msg, options) { + // config() automagically converts ignoreErrors from a list to a RegExp so we need to test for an + // early call; we'll error on the side of logging anything called before configuration since it's + // probably something you should see: + if (!!this._globalOptions.ignoreErrors.test && this._globalOptions.ignoreErrors.test(msg)) { + return; + } + + options = options || {}; + var data = objectMerge({ + message: msg + '' // Make sure it's actually a string + + }, options); + var ex; // Generate a "synthetic" stack trace from this point. + // NOTE: If you are a Sentry user, and you are seeing this stack frame, it is NOT indicative + // of a bug with Raven.js. Sentry generates synthetic traces either by configuration, + // or if it catches a thrown object without a "stack" property. + + try { + throw new Error(msg); + } catch (ex1) { + ex = ex1; + } // null exception name so `Error` isn't prefixed to msg + + + ex.name = null; + var stack = tracekit.computeStackTrace(ex); // stack[0] is `throw new Error(msg)` call itself, we are interested in the frame that was just before that, stack[1] + + var initialCall = isArray(stack.stack) && stack.stack[1]; + var fileurl = initialCall && initialCall.url || ''; + + if (!!this._globalOptions.ignoreUrls.test && this._globalOptions.ignoreUrls.test(fileurl)) { + return; + } + + if (!!this._globalOptions.whitelistUrls.test && !this._globalOptions.whitelistUrls.test(fileurl)) { + return; + } + + if (this._globalOptions.stacktrace || options && options.stacktrace) { + options = objectMerge({ + // fingerprint on msg, not stack trace (legacy behavior, could be + // revisited) + fingerprint: msg, + // since we know this is a synthetic trace, the top N-most frames + // MUST be from Raven.js, so mark them as in_app later by setting + // trimHeadFrames + trimHeadFrames: (options.trimHeadFrames || 0) + 1 + }, options); + + var frames = this._prepareFrames(stack, options); + + data.stacktrace = { + // Sentry expects frames oldest to newest + frames: frames.reverse() + }; + } // Fire away! + + + this._send(data); + + return this; + }, + captureBreadcrumb: function captureBreadcrumb(obj) { + var crumb = objectMerge({ + timestamp: now() / 1000 + }, obj); + + if (isFunction(this._globalOptions.breadcrumbCallback)) { + var result = this._globalOptions.breadcrumbCallback(crumb); + + if (isObject(result) && !isEmptyObject(result)) { + crumb = result; + } else if (result === false) { + return this; + } + } + + this._breadcrumbs.push(crumb); + + if (this._breadcrumbs.length > this._globalOptions.maxBreadcrumbs) { + this._breadcrumbs.shift(); + } + + return this; + }, + addPlugin: function addPlugin(plugin + /*arg1, arg2, ... argN*/ + ) { + var pluginArgs = [].slice.call(arguments, 1); + + this._plugins.push([plugin, pluginArgs]); + + if (this._isRavenInstalled) { + this._drainPlugins(); + } + + return this; + }, + + /* + * Set/clear a user to be sent along with the payload. + * + * @param {object} user An object representing user data [optional] + * @return {Raven} + */ + setUserContext: function setUserContext(user) { + // Intentionally do not merge here since that's an unexpected behavior. + this._globalContext.user = user; + return this; + }, + + /* + * Merge extra attributes to be sent along with the payload. + * + * @param {object} extra An object representing extra data [optional] + * @return {Raven} + */ + setExtraContext: function setExtraContext(extra) { + this._mergeContext('extra', extra); + + return this; + }, + + /* + * Merge tags to be sent along with the payload. + * + * @param {object} tags An object representing tags [optional] + * @return {Raven} + */ + setTagsContext: function setTagsContext(tags) { + this._mergeContext('tags', tags); + + return this; + }, + + /* + * Clear all of the context. + * + * @return {Raven} + */ + clearContext: function clearContext() { + this._globalContext = {}; + return this; + }, + + /* + * Get a copy of the current context. This cannot be mutated. + * + * @return {object} copy of context + */ + getContext: function getContext() { + // lol javascript + return JSON.parse(stringify_1(this._globalContext)); + }, + + /* + * Set environment of application + * + * @param {string} environment Typically something like 'production'. + * @return {Raven} + */ + setEnvironment: function setEnvironment(environment) { + this._globalOptions.environment = environment; + return this; + }, + + /* + * Set release version of application + * + * @param {string} release Typically something like a git SHA to identify version + * @return {Raven} + */ + setRelease: function setRelease(release) { + this._globalOptions.release = release; + return this; + }, + + /* + * Set the dataCallback option + * + * @param {function} callback The callback to run which allows the + * data blob to be mutated before sending + * @return {Raven} + */ + setDataCallback: function setDataCallback(callback) { + var original = this._globalOptions.dataCallback; + this._globalOptions.dataCallback = keepOriginalCallback(original, callback); + return this; + }, + + /* + * Set the breadcrumbCallback option + * + * @param {function} callback The callback to run which allows filtering + * or mutating breadcrumbs + * @return {Raven} + */ + setBreadcrumbCallback: function setBreadcrumbCallback(callback) { + var original = this._globalOptions.breadcrumbCallback; + this._globalOptions.breadcrumbCallback = keepOriginalCallback(original, callback); + return this; + }, + + /* + * Set the shouldSendCallback option + * + * @param {function} callback The callback to run which allows + * introspecting the blob before sending + * @return {Raven} + */ + setShouldSendCallback: function setShouldSendCallback(callback) { + var original = this._globalOptions.shouldSendCallback; + this._globalOptions.shouldSendCallback = keepOriginalCallback(original, callback); + return this; + }, + + /** + * Override the default HTTP transport mechanism that transmits data + * to the Sentry server. + * + * @param {function} transport Function invoked instead of the default + * `makeRequest` handler. + * + * @return {Raven} + */ + setTransport: function setTransport(transport) { + this._globalOptions.transport = transport; + return this; + }, + + /* + * Get the latest raw exception that was captured by Raven. + * + * @return {error} + */ + lastException: function lastException() { + return this._lastCapturedException; + }, + + /* + * Get the last event id + * + * @return {string} + */ + lastEventId: function lastEventId() { + return this._lastEventId; + }, + + /* + * Determine if Raven is setup and ready to go. + * + * @return {boolean} + */ + isSetup: function isSetup() { + if (!this._hasJSON) return false; // needs JSON support + + if (!this._globalServer) { + if (!this.ravenNotConfiguredError) { + this.ravenNotConfiguredError = true; + + this._logDebug('error', 'Error: Raven has not been configured.'); + } + + return false; + } + + return true; + }, + afterLoad: function afterLoad() { + // TODO: remove window dependence? + // Attempt to initialize Raven on load + var RavenConfig = _window$1.RavenConfig; + + if (RavenConfig) { + this.config(RavenConfig.dsn, RavenConfig.config).install(); + } + }, + showReportDialog: function showReportDialog(options) { + if (!_document // doesn't work without a document (React native) + ) return; + options = options || {}; + var lastEventId = options.eventId || this.lastEventId(); + + if (!lastEventId) { + throw new configError('Missing eventId'); + } + + var dsn = options.dsn || this._dsn; + + if (!dsn) { + throw new configError('Missing DSN'); + } + + var encode = encodeURIComponent; + var qs = ''; + qs += '?eventId=' + encode(lastEventId); + qs += '&dsn=' + encode(dsn); + var user = options.user || this._globalContext.user; + + if (user) { + if (user.name) qs += '&name=' + encode(user.name); + if (user.email) qs += '&email=' + encode(user.email); + } + + var globalServer = this._getGlobalServer(this._parseDSN(dsn)); + + var script = _document.createElement('script'); + + script.async = true; + script.src = globalServer + '/api/embed/error-page/' + qs; + + (_document.head || _document.body).appendChild(script); + }, + + /**** Private functions ****/ + _ignoreNextOnError: function _ignoreNextOnError() { + var self = this; + this._ignoreOnError += 1; + setTimeout(function () { + // onerror should trigger before setTimeout + self._ignoreOnError -= 1; + }); + }, + _triggerEvent: function _triggerEvent(eventType, options) { + // NOTE: `event` is a native browser thing, so let's avoid conflicting wiht it + var evt, key; + if (!this._hasDocument) return; + options = options || {}; + eventType = 'raven' + eventType.substr(0, 1).toUpperCase() + eventType.substr(1); + + if (_document.createEvent) { + evt = _document.createEvent('HTMLEvents'); + evt.initEvent(eventType, true, true); + } else { + evt = _document.createEventObject(); + evt.eventType = eventType; + } + + for (key in options) { + if (hasKey(options, key)) { + evt[key] = options[key]; + } + } + + if (_document.createEvent) { + // IE9 if standards + _document.dispatchEvent(evt); + } else { + // IE8 regardless of Quirks or Standards + // IE9 if quirks + try { + _document.fireEvent('on' + evt.eventType.toLowerCase(), evt); + } catch (e) {// Do nothing + } + } + }, + + /** + * Wraps addEventListener to capture UI breadcrumbs + * @param evtName the event name (e.g. "click") + * @returns {Function} + * @private + */ + _breadcrumbEventHandler: function _breadcrumbEventHandler(evtName) { + var self = this; + return function (evt) { + // reset keypress timeout; e.g. triggering a 'click' after + // a 'keypress' will reset the keypress debounce so that a new + // set of keypresses can be recorded + self._keypressTimeout = null; // It's possible this handler might trigger multiple times for the same + // event (e.g. event propagation through node ancestors). Ignore if we've + // already captured the event. + + if (self._lastCapturedEvent === evt) return; + self._lastCapturedEvent = evt; // try/catch both: + // - accessing evt.target (see getsentry/raven-js#838, #768) + // - `htmlTreeAsString` because it's complex, and just accessing the DOM incorrectly + // can throw an exception in some circumstances. + + var target; + + try { + target = htmlTreeAsString(evt.target); + } catch (e) { + target = ''; + } + + self.captureBreadcrumb({ + category: 'ui.' + evtName, + // e.g. ui.click, ui.input + message: target + }); + }; + }, + + /** + * Wraps addEventListener to capture keypress UI events + * @returns {Function} + * @private + */ + _keypressEventHandler: function _keypressEventHandler() { + var self = this, + debounceDuration = 1000; // milliseconds + // TODO: if somehow user switches keypress target before + // debounce timeout is triggered, we will only capture + // a single breadcrumb from the FIRST target (acceptable?) + + return function (evt) { + var target; + + try { + target = evt.target; + } catch (e) { + // just accessing event properties can throw an exception in some rare circumstances + // see: https://github.com/getsentry/raven-js/issues/838 + return; + } + + var tagName = target && target.tagName; // only consider keypress events on actual input elements + // this will disregard keypresses targeting body (e.g. tabbing + // through elements, hotkeys, etc) + + if (!tagName || tagName !== 'INPUT' && tagName !== 'TEXTAREA' && !target.isContentEditable) return; // record first keypress in a series, but ignore subsequent + // keypresses until debounce clears + + var timeout = self._keypressTimeout; + + if (!timeout) { + self._breadcrumbEventHandler('input')(evt); + } + + clearTimeout(timeout); + self._keypressTimeout = setTimeout(function () { + self._keypressTimeout = null; + }, debounceDuration); + }; + }, + + /** + * Captures a breadcrumb of type "navigation", normalizing input URLs + * @param to the originating URL + * @param from the target URL + * @private + */ + _captureUrlChange: function _captureUrlChange(from, to) { + var parsedLoc = parseUrl(this._location.href); + var parsedTo = parseUrl(to); + var parsedFrom = parseUrl(from); // because onpopstate only tells you the "new" (to) value of location.href, and + // not the previous (from) value, we need to track the value of the current URL + // state ourselves + + this._lastHref = to; // Use only the path component of the URL if the URL matches the current + // document (almost all the time when using pushState) + + if (parsedLoc.protocol === parsedTo.protocol && parsedLoc.host === parsedTo.host) to = parsedTo.relative; + if (parsedLoc.protocol === parsedFrom.protocol && parsedLoc.host === parsedFrom.host) from = parsedFrom.relative; + this.captureBreadcrumb({ + category: 'navigation', + data: { + to: to, + from: from + } + }); + }, + _patchFunctionToString: function _patchFunctionToString() { + var self = this; + self._originalFunctionToString = Function.prototype.toString; // eslint-disable-next-line no-extend-native + + Function.prototype.toString = function () { + if (typeof this === 'function' && this.__raven__) { + return self._originalFunctionToString.apply(this.__orig__, arguments); + } + + return self._originalFunctionToString.apply(this, arguments); + }; + }, + _unpatchFunctionToString: function _unpatchFunctionToString() { + if (this._originalFunctionToString) { + // eslint-disable-next-line no-extend-native + Function.prototype.toString = this._originalFunctionToString; + } + }, + + /** + * Wrap timer functions and event targets to catch errors and provide + * better metadata. + */ + _instrumentTryCatch: function _instrumentTryCatch() { + var self = this; + var wrappedBuiltIns = self._wrappedBuiltIns; + + function wrapTimeFn(orig) { + return function (fn, t) { + // preserve arity + // Make a copy of the arguments to prevent deoptimization + // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments + var args = new Array(arguments.length); + + for (var i = 0; i < args.length; ++i) { + args[i] = arguments[i]; + } + + var originalCallback = args[0]; + + if (isFunction(originalCallback)) { + args[0] = self.wrap(originalCallback); + } // IE < 9 doesn't support .call/.apply on setInterval/setTimeout, but it + // also supports only two arguments and doesn't care what this is, so we + // can just call the original function directly. + + + if (orig.apply) { + return orig.apply(this, args); + } else { + return orig(args[0], args[1]); + } + }; + } + + var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; + + function wrapEventTarget(global) { + var proto = _window$1[global] && _window$1[global].prototype; + + if (proto && proto.hasOwnProperty && proto.hasOwnProperty('addEventListener')) { + fill(proto, 'addEventListener', function (orig) { + return function (evtName, fn, capture, secure) { + // preserve arity + try { + if (fn && fn.handleEvent) { + fn.handleEvent = self.wrap(fn.handleEvent); + } + } catch (err) {} // can sometimes get 'Permission denied to access property "handle Event' + // More breadcrumb DOM capture ... done here and not in `_instrumentBreadcrumbs` + // so that we don't have more than one wrapper function + + + var before, clickHandler, keypressHandler; + + if (autoBreadcrumbs && autoBreadcrumbs.dom && (global === 'EventTarget' || global === 'Node')) { + // NOTE: generating multiple handlers per addEventListener invocation, should + // revisit and verify we can just use one (almost certainly) + clickHandler = self._breadcrumbEventHandler('click'); + keypressHandler = self._keypressEventHandler(); + + before = function before(evt) { + // need to intercept every DOM event in `before` argument, in case that + // same wrapped method is re-used for different events (e.g. mousemove THEN click) + // see #724 + if (!evt) return; + var eventType; + + try { + eventType = evt.type; + } catch (e) { + // just accessing event properties can throw an exception in some rare circumstances + // see: https://github.com/getsentry/raven-js/issues/838 + return; + } + + if (eventType === 'click') return clickHandler(evt);else if (eventType === 'keypress') return keypressHandler(evt); + }; + } + + return orig.call(this, evtName, self.wrap(fn, undefined, before), capture, secure); + }; + }, wrappedBuiltIns); + fill(proto, 'removeEventListener', function (orig) { + return function (evt, fn, capture, secure) { + try { + fn = fn && (fn.__raven_wrapper__ ? fn.__raven_wrapper__ : fn); + } catch (e) {// ignore, accessing __raven_wrapper__ will throw in some Selenium environments + } + + return orig.call(this, evt, fn, capture, secure); + }; + }, wrappedBuiltIns); + } + } + + fill(_window$1, 'setTimeout', wrapTimeFn, wrappedBuiltIns); + fill(_window$1, 'setInterval', wrapTimeFn, wrappedBuiltIns); + + if (_window$1.requestAnimationFrame) { + fill(_window$1, 'requestAnimationFrame', function (orig) { + return function (cb) { + return orig(self.wrap(cb)); + }; + }, wrappedBuiltIns); + } // event targets borrowed from bugsnag-js: + // https://github.com/bugsnag/bugsnag-js/blob/master/src/bugsnag.js#L666 + + + var eventTargets = ['EventTarget', 'Window', 'Node', 'ApplicationCache', 'AudioTrackList', 'ChannelMergerNode', 'CryptoOperation', 'EventSource', 'FileReader', 'HTMLUnknownElement', 'IDBDatabase', 'IDBRequest', 'IDBTransaction', 'KeyOperation', 'MediaController', 'MessagePort', 'ModalWindow', 'Notification', 'SVGElementInstance', 'Screen', 'TextTrack', 'TextTrackCue', 'TextTrackList', 'WebSocket', 'WebSocketWorker', 'Worker', 'XMLHttpRequest', 'XMLHttpRequestEventTarget', 'XMLHttpRequestUpload']; + + for (var i = 0; i < eventTargets.length; i++) { + wrapEventTarget(eventTargets[i]); + } + }, + + /** + * Instrument browser built-ins w/ breadcrumb capturing + * - XMLHttpRequests + * - DOM interactions (click/typing) + * - window.location changes + * - console + * + * Can be disabled or individually configured via the `autoBreadcrumbs` config option + */ + _instrumentBreadcrumbs: function _instrumentBreadcrumbs() { + var self = this; + var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; + var wrappedBuiltIns = self._wrappedBuiltIns; + + function wrapProp(prop, xhr) { + if (prop in xhr && isFunction(xhr[prop])) { + fill(xhr, prop, function (orig) { + return self.wrap(orig); + }); // intentionally don't track filled methods on XHR instances + } + } + + if (autoBreadcrumbs.xhr && 'XMLHttpRequest' in _window$1) { + var xhrproto = XMLHttpRequest.prototype; + fill(xhrproto, 'open', function (origOpen) { + return function (method, url) { + // preserve arity + // if Sentry key appears in URL, don't capture + if (isString(url) && url.indexOf(self._globalKey) === -1) { + this.__raven_xhr = { + method: method, + url: url, + status_code: null + }; + } + + return origOpen.apply(this, arguments); + }; + }, wrappedBuiltIns); + fill(xhrproto, 'send', function (origSend) { + return function () { + // preserve arity + var xhr = this; + + function onreadystatechangeHandler() { + if (xhr.__raven_xhr && xhr.readyState === 4) { + try { + // touching statusCode in some platforms throws + // an exception + xhr.__raven_xhr.status_code = xhr.status; + } catch (e) { + /* do nothing */ + } + + self.captureBreadcrumb({ + type: 'http', + category: 'xhr', + data: xhr.__raven_xhr + }); + } + } + + var props = ['onload', 'onerror', 'onprogress']; + + for (var j = 0; j < props.length; j++) { + wrapProp(props[j], xhr); + } + + if ('onreadystatechange' in xhr && isFunction(xhr.onreadystatechange)) { + fill(xhr, 'onreadystatechange', function (orig) { + return self.wrap(orig, undefined, onreadystatechangeHandler); + } + /* intentionally don't track this instrumentation */ + ); + } else { + // if onreadystatechange wasn't actually set by the page on this xhr, we + // are free to set our own and capture the breadcrumb + xhr.onreadystatechange = onreadystatechangeHandler; + } + + return origSend.apply(this, arguments); + }; + }, wrappedBuiltIns); + } + + if (autoBreadcrumbs.xhr && supportsFetch()) { + fill(_window$1, 'fetch', function (origFetch) { + return function () { + // preserve arity + // Make a copy of the arguments to prevent deoptimization + // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments + var args = new Array(arguments.length); + + for (var i = 0; i < args.length; ++i) { + args[i] = arguments[i]; + } + + var fetchInput = args[0]; + var method = 'GET'; + var url; + + if (typeof fetchInput === 'string') { + url = fetchInput; + } else if ('Request' in _window$1 && fetchInput instanceof _window$1.Request) { + url = fetchInput.url; + + if (fetchInput.method) { + method = fetchInput.method; + } + } else { + url = '' + fetchInput; + } // if Sentry key appears in URL, don't capture, as it's our own request + + + if (url.indexOf(self._globalKey) !== -1) { + return origFetch.apply(this, args); + } + + if (args[1] && args[1].method) { + method = args[1].method; + } + + var fetchData = { + method: method, + url: url, + status_code: null + }; + return origFetch.apply(this, args).then(function (response) { + fetchData.status_code = response.status; + self.captureBreadcrumb({ + type: 'http', + category: 'fetch', + data: fetchData + }); + return response; + }); + }; + }, wrappedBuiltIns); + } // Capture breadcrumbs from any click that is unhandled / bubbled up all the way + // to the document. Do this before we instrument addEventListener. + + + if (autoBreadcrumbs.dom && this._hasDocument) { + if (_document.addEventListener) { + _document.addEventListener('click', self._breadcrumbEventHandler('click'), false); + + _document.addEventListener('keypress', self._keypressEventHandler(), false); + } else { + // IE8 Compatibility + _document.attachEvent('onclick', self._breadcrumbEventHandler('click')); + + _document.attachEvent('onkeypress', self._keypressEventHandler()); + } + } // record navigation (URL) changes + // NOTE: in Chrome App environment, touching history.pushState, *even inside + // a try/catch block*, will cause Chrome to output an error to console.error + // borrowed from: https://github.com/angular/angular.js/pull/13945/files + + + var chrome = _window$1.chrome; + var isChromePackagedApp = chrome && chrome.app && chrome.app.runtime; + var hasPushAndReplaceState = !isChromePackagedApp && _window$1.history && history.pushState && history.replaceState; + + if (autoBreadcrumbs.location && hasPushAndReplaceState) { + // TODO: remove onpopstate handler on uninstall() + var oldOnPopState = _window$1.onpopstate; + + _window$1.onpopstate = function () { + var currentHref = self._location.href; + + self._captureUrlChange(self._lastHref, currentHref); + + if (oldOnPopState) { + return oldOnPopState.apply(this, arguments); + } + }; + + var historyReplacementFunction = function historyReplacementFunction(origHistFunction) { + // note history.pushState.length is 0; intentionally not declaring + // params to preserve 0 arity + return function () + /* state, title, url */ + { + var url = arguments.length > 2 ? arguments[2] : undefined; // url argument is optional + + if (url) { + // coerce to string (this is what pushState does) + self._captureUrlChange(self._lastHref, url + ''); + } + + return origHistFunction.apply(this, arguments); + }; + }; + + fill(history, 'pushState', historyReplacementFunction, wrappedBuiltIns); + fill(history, 'replaceState', historyReplacementFunction, wrappedBuiltIns); + } + + if (autoBreadcrumbs.console && 'console' in _window$1 && console.log) { + // console + var consoleMethodCallback = function consoleMethodCallback(msg, data) { + self.captureBreadcrumb({ + message: msg, + level: data.level, + category: 'console' + }); + }; + + each(['debug', 'info', 'warn', 'error', 'log'], function (_, level) { + wrapConsoleMethod(console, level, consoleMethodCallback); + }); + } + }, + _restoreBuiltIns: function _restoreBuiltIns() { + // restore any wrapped builtins + var builtin; + + while (this._wrappedBuiltIns.length) { + builtin = this._wrappedBuiltIns.shift(); + var obj = builtin[0], + name = builtin[1], + orig = builtin[2]; + obj[name] = orig; + } + }, + _restoreConsole: function _restoreConsole() { + // eslint-disable-next-line guard-for-in + for (var method in this._originalConsoleMethods) { + this._originalConsole[method] = this._originalConsoleMethods[method]; + } + }, + _drainPlugins: function _drainPlugins() { + var self = this; // FIX ME TODO + + each(this._plugins, function (_, plugin) { + var installer = plugin[0]; + var args = plugin[1]; + installer.apply(self, [self].concat(args)); + }); + }, + _parseDSN: function _parseDSN(str) { + var m = dsnPattern.exec(str), + dsn = {}, + i = 7; + + try { + while (i--) { + dsn[dsnKeys[i]] = m[i] || ''; + } + } catch (e) { + throw new configError('Invalid DSN: ' + str); + } + + if (dsn.pass && !this._globalOptions.allowSecretKey) { + throw new configError('Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key'); + } + + return dsn; + }, + _getGlobalServer: function _getGlobalServer(uri) { + // assemble the endpoint from the uri pieces + var globalServer = '//' + uri.host + (uri.port ? ':' + uri.port : ''); + + if (uri.protocol) { + globalServer = uri.protocol + ':' + globalServer; + } + + return globalServer; + }, + _handleOnErrorStackInfo: function _handleOnErrorStackInfo() { + // if we are intentionally ignoring errors via onerror, bail out + if (!this._ignoreOnError) { + this._handleStackInfo.apply(this, arguments); + } + }, + _handleStackInfo: function _handleStackInfo(stackInfo, options) { + var frames = this._prepareFrames(stackInfo, options); + + this._triggerEvent('handle', { + stackInfo: stackInfo, + options: options + }); + + this._processException(stackInfo.name, stackInfo.message, stackInfo.url, stackInfo.lineno, frames, options); + }, + _prepareFrames: function _prepareFrames(stackInfo, options) { + var self = this; + var frames = []; + + if (stackInfo.stack && stackInfo.stack.length) { + each(stackInfo.stack, function (i, stack) { + var frame = self._normalizeFrame(stack, stackInfo.url); + + if (frame) { + frames.push(frame); + } + }); // e.g. frames captured via captureMessage throw + + if (options && options.trimHeadFrames) { + for (var j = 0; j < options.trimHeadFrames && j < frames.length; j++) { + frames[j].in_app = false; + } + } + } + + frames = frames.slice(0, this._globalOptions.stackTraceLimit); + return frames; + }, + _normalizeFrame: function _normalizeFrame(frame, stackInfoUrl) { + // normalize the frames data + var normalized = { + filename: frame.url, + lineno: frame.line, + colno: frame.column, + function: frame.func || '?' + }; // Case when we don't have any information about the error + // E.g. throwing a string or raw object, instead of an `Error` in Firefox + // Generating synthetic error doesn't add any value here + // + // We should probably somehow let a user know that they should fix their code + + if (!frame.url) { + normalized.filename = stackInfoUrl; // fallback to whole stacks url from onerror handler + } + + normalized.in_app = !( // determine if an exception came from outside of our app + // first we check the global includePaths list. + !!this._globalOptions.includePaths.test && !this._globalOptions.includePaths.test(normalized.filename) || // Now we check for fun, if the function name is Raven or TraceKit + /(Raven|TraceKit)\./.test(normalized['function']) || // finally, we do a last ditch effort and check for raven.min.js + /raven\.(min\.)?js$/.test(normalized.filename)); + return normalized; + }, + _processException: function _processException(type, message, fileurl, lineno, frames, options) { + var prefixedMessage = (type ? type + ': ' : '') + (message || ''); + + if (!!this._globalOptions.ignoreErrors.test && (this._globalOptions.ignoreErrors.test(message) || this._globalOptions.ignoreErrors.test(prefixedMessage))) { + return; + } + + var stacktrace; + + if (frames && frames.length) { + fileurl = frames[0].filename || fileurl; // Sentry expects frames oldest to newest + // and JS sends them as newest to oldest + + frames.reverse(); + stacktrace = { + frames: frames + }; + } else if (fileurl) { + stacktrace = { + frames: [{ + filename: fileurl, + lineno: lineno, + in_app: true + }] + }; + } + + if (!!this._globalOptions.ignoreUrls.test && this._globalOptions.ignoreUrls.test(fileurl)) { + return; + } + + if (!!this._globalOptions.whitelistUrls.test && !this._globalOptions.whitelistUrls.test(fileurl)) { + return; + } + + var data = objectMerge({ + // sentry.interfaces.Exception + exception: { + values: [{ + type: type, + value: message, + stacktrace: stacktrace + }] + }, + culprit: fileurl + }, options); // Fire away! + + this._send(data); + }, + _trimPacket: function _trimPacket(data) { + // For now, we only want to truncate the two different messages + // but this could/should be expanded to just trim everything + var max = this._globalOptions.maxMessageLength; + + if (data.message) { + data.message = truncate(data.message, max); + } + + if (data.exception) { + var exception = data.exception.values[0]; + exception.value = truncate(exception.value, max); + } + + var request = data.request; + + if (request) { + if (request.url) { + request.url = truncate(request.url, this._globalOptions.maxUrlLength); + } + + if (request.Referer) { + request.Referer = truncate(request.Referer, this._globalOptions.maxUrlLength); + } + } + + if (data.breadcrumbs && data.breadcrumbs.values) this._trimBreadcrumbs(data.breadcrumbs); + return data; + }, + + /** + * Truncate breadcrumb values (right now just URLs) + */ + _trimBreadcrumbs: function _trimBreadcrumbs(breadcrumbs) { + // known breadcrumb properties with urls + // TODO: also consider arbitrary prop values that start with (https?)?:// + var urlProps = ['to', 'from', 'url'], + urlProp, + crumb, + data; + + for (var i = 0; i < breadcrumbs.values.length; ++i) { + crumb = breadcrumbs.values[i]; + if (!crumb.hasOwnProperty('data') || !isObject(crumb.data) || objectFrozen(crumb.data)) continue; + data = objectMerge({}, crumb.data); + + for (var j = 0; j < urlProps.length; ++j) { + urlProp = urlProps[j]; + + if (data.hasOwnProperty(urlProp) && data[urlProp]) { + data[urlProp] = truncate(data[urlProp], this._globalOptions.maxUrlLength); + } + } + + breadcrumbs.values[i].data = data; + } + }, + _getHttpData: function _getHttpData() { + if (!this._hasNavigator && !this._hasDocument) return; + var httpData = {}; + + if (this._hasNavigator && _navigator.userAgent) { + httpData.headers = { + 'User-Agent': navigator.userAgent + }; + } // Check in `window` instead of `document`, as we may be in ServiceWorker environment + + + if (_window$1.location && _window$1.location.href) { + httpData.url = _window$1.location.href; + } + + if (this._hasDocument && _document.referrer) { + if (!httpData.headers) httpData.headers = {}; + httpData.headers.Referer = _document.referrer; + } + + return httpData; + }, + _resetBackoff: function _resetBackoff() { + this._backoffDuration = 0; + this._backoffStart = null; + }, + _shouldBackoff: function _shouldBackoff() { + return this._backoffDuration && now() - this._backoffStart < this._backoffDuration; + }, + + /** + * Returns true if the in-process data payload matches the signature + * of the previously-sent data + * + * NOTE: This has to be done at this level because TraceKit can generate + * data from window.onerror WITHOUT an exception object (IE8, IE9, + * other old browsers). This can take the form of an "exception" + * data object with a single frame (derived from the onerror args). + */ + _isRepeatData: function _isRepeatData(current) { + var last = this._lastData; + if (!last || current.message !== last.message || // defined for captureMessage + current.culprit !== last.culprit // defined for captureException/onerror + ) return false; // Stacktrace interface (i.e. from captureMessage) + + if (current.stacktrace || last.stacktrace) { + return isSameStacktrace(current.stacktrace, last.stacktrace); + } else if (current.exception || last.exception) { + // Exception interface (i.e. from captureException/onerror) + return isSameException(current.exception, last.exception); + } + + return true; + }, + _setBackoffState: function _setBackoffState(request) { + // If we are already in a backoff state, don't change anything + if (this._shouldBackoff()) { + return; + } + + var status = request.status; // 400 - project_id doesn't exist or some other fatal + // 401 - invalid/revoked dsn + // 429 - too many requests + + if (!(status === 400 || status === 401 || status === 429)) return; + var retry; + + try { + // If Retry-After is not in Access-Control-Expose-Headers, most + // browsers will throw an exception trying to access it + if (supportsFetch()) { + retry = request.headers.get('Retry-After'); + } else { + retry = request.getResponseHeader('Retry-After'); + } // Retry-After is returned in seconds + + + retry = parseInt(retry, 10) * 1000; + } catch (e) { + /* eslint no-empty:0 */ + } + + this._backoffDuration = retry ? // If Sentry server returned a Retry-After value, use it + retry : // Otherwise, double the last backoff duration (starts at 1 sec) + this._backoffDuration * 2 || 1000; + this._backoffStart = now(); + }, + _send: function _send(data) { + var globalOptions = this._globalOptions; + + var baseData = { + project: this._globalProject, + logger: globalOptions.logger, + platform: 'javascript' + }, + httpData = this._getHttpData(); + + if (httpData) { + baseData.request = httpData; + } // HACK: delete `trimHeadFrames` to prevent from appearing in outbound payload + + + if (data.trimHeadFrames) delete data.trimHeadFrames; + data = objectMerge(baseData, data); // Merge in the tags and extra separately since objectMerge doesn't handle a deep merge + + data.tags = objectMerge(objectMerge({}, this._globalContext.tags), data.tags); + data.extra = objectMerge(objectMerge({}, this._globalContext.extra), data.extra); // Send along our own collected metadata with extra + + data.extra['session:duration'] = now() - this._startTime; + + if (this._breadcrumbs && this._breadcrumbs.length > 0) { + // intentionally make shallow copy so that additions + // to breadcrumbs aren't accidentally sent in this request + data.breadcrumbs = { + values: [].slice.call(this._breadcrumbs, 0) + }; + } + + if (this._globalContext.user) { + // sentry.interfaces.User + data.user = this._globalContext.user; + } // Include the environment if it's defined in globalOptions + + + if (globalOptions.environment) data.environment = globalOptions.environment; // Include the release if it's defined in globalOptions + + if (globalOptions.release) data.release = globalOptions.release; // Include server_name if it's defined in globalOptions + + if (globalOptions.serverName) data.server_name = globalOptions.serverName; // Cleanup empty properties before sending them to the server + + Object.keys(data).forEach(function (key) { + if (data[key] == null || data[key] === '' || isEmptyObject(data[key])) { + delete data[key]; + } + }); + + if (isFunction(globalOptions.dataCallback)) { + data = globalOptions.dataCallback(data) || data; + } // Why?????????? + + + if (!data || isEmptyObject(data)) { + return; + } // Check if the request should be filtered or not + + + if (isFunction(globalOptions.shouldSendCallback) && !globalOptions.shouldSendCallback(data)) { + return; + } // Backoff state: Sentry server previously responded w/ an error (e.g. 429 - too many requests), + // so drop requests until "cool-off" period has elapsed. + + + if (this._shouldBackoff()) { + this._logDebug('warn', 'Raven dropped error due to backoff: ', data); + + return; + } + + if (typeof globalOptions.sampleRate === 'number') { + if (Math.random() < globalOptions.sampleRate) { + this._sendProcessedPayload(data); + } + } else { + this._sendProcessedPayload(data); + } + }, + _getUuid: function _getUuid() { + return uuid4(); + }, + _sendProcessedPayload: function _sendProcessedPayload(data, callback) { + var self = this; + var globalOptions = this._globalOptions; + if (!this.isSetup()) return; // Try and clean up the packet before sending by truncating long values + + data = this._trimPacket(data); // ideally duplicate error testing should occur *before* dataCallback/shouldSendCallback, + // but this would require copying an un-truncated copy of the data packet, which can be + // arbitrarily deep (extra_data) -- could be worthwhile? will revisit + + if (!this._globalOptions.allowDuplicates && this._isRepeatData(data)) { + this._logDebug('warn', 'Raven dropped repeat event: ', data); + + return; + } // Send along an event_id if not explicitly passed. + // This event_id can be used to reference the error within Sentry itself. + // Set lastEventId after we know the error should actually be sent + + + this._lastEventId = data.event_id || (data.event_id = this._getUuid()); // Store outbound payload after trim + + this._lastData = data; + + this._logDebug('debug', 'Raven about to send:', data); + + var auth = { + sentry_version: '7', + sentry_client: 'raven-js/' + this.VERSION, + sentry_key: this._globalKey + }; + + if (this._globalSecret) { + auth.sentry_secret = this._globalSecret; + } + + var exception = data.exception && data.exception.values[0]; // only capture 'sentry' breadcrumb is autoBreadcrumbs is truthy + + if (this._globalOptions.autoBreadcrumbs && this._globalOptions.autoBreadcrumbs.sentry) { + this.captureBreadcrumb({ + category: 'sentry', + message: exception ? (exception.type ? exception.type + ': ' : '') + exception.value : data.message, + event_id: data.event_id, + level: data.level || 'error' // presume error unless specified + + }); + } + + var url = this._globalEndpoint; + + (globalOptions.transport || this._makeRequest).call(this, { + url: url, + auth: auth, + data: data, + options: globalOptions, + onSuccess: function success() { + self._resetBackoff(); + + self._triggerEvent('success', { + data: data, + src: url + }); + + callback && callback(); + }, + onError: function failure(error) { + self._logDebug('error', 'Raven transport failed to send: ', error); + + if (error.request) { + self._setBackoffState(error.request); + } + + self._triggerEvent('failure', { + data: data, + src: url + }); + + error = error || new Error('Raven send failed (no additional details provided)'); + callback && callback(error); + } + }); + }, + _makeRequest: function _makeRequest(opts) { + // Auth is intentionally sent as part of query string (NOT as custom HTTP header) to avoid preflight CORS requests + var url = opts.url + '?' + urlencode(opts.auth); + var evaluatedHeaders = null; + var evaluatedFetchParameters = {}; + + if (opts.options.headers) { + evaluatedHeaders = this._evaluateHash(opts.options.headers); + } + + if (opts.options.fetchParameters) { + evaluatedFetchParameters = this._evaluateHash(opts.options.fetchParameters); + } + + if (supportsFetch()) { + evaluatedFetchParameters.body = stringify_1(opts.data); + var defaultFetchOptions = objectMerge({}, this._fetchDefaults); + var fetchOptions = objectMerge(defaultFetchOptions, evaluatedFetchParameters); + + if (evaluatedHeaders) { + fetchOptions.headers = evaluatedHeaders; + } + + return _window$1.fetch(url, fetchOptions).then(function (response) { + if (response.ok) { + opts.onSuccess && opts.onSuccess(); + } else { + var error = new Error('Sentry error code: ' + response.status); // It's called request only to keep compatibility with XHR interface + // and not add more redundant checks in setBackoffState method + + error.request = response; + opts.onError && opts.onError(error); + } + })['catch'](function () { + opts.onError && opts.onError(new Error('Sentry error code: network unavailable')); + }); + } + + var request = _window$1.XMLHttpRequest && new _window$1.XMLHttpRequest(); + if (!request) return; // if browser doesn't support CORS (e.g. IE7), we are out of luck + + var hasCORS = 'withCredentials' in request || typeof XDomainRequest !== 'undefined'; + if (!hasCORS) return; + + if ('withCredentials' in request) { + request.onreadystatechange = function () { + if (request.readyState !== 4) { + return; + } else if (request.status === 200) { + opts.onSuccess && opts.onSuccess(); + } else if (opts.onError) { + var err = new Error('Sentry error code: ' + request.status); + err.request = request; + opts.onError(err); + } + }; + } else { + request = new XDomainRequest(); // xdomainrequest cannot go http -> https (or vice versa), + // so always use protocol relative + + url = url.replace(/^https?:/, ''); // onreadystatechange not supported by XDomainRequest + + if (opts.onSuccess) { + request.onload = opts.onSuccess; + } + + if (opts.onError) { + request.onerror = function () { + var err = new Error('Sentry error code: XDomainRequest'); + err.request = request; + opts.onError(err); + }; + } + } + + request.open('POST', url); + + if (evaluatedHeaders) { + each(evaluatedHeaders, function (key, value) { + request.setRequestHeader(key, value); + }); + } + + request.send(stringify_1(opts.data)); + }, + _evaluateHash: function _evaluateHash(hash) { + var evaluated = {}; + + for (var key in hash) { + if (hash.hasOwnProperty(key)) { + var value = hash[key]; + evaluated[key] = typeof value === 'function' ? value() : value; + } + } + + return evaluated; + }, + _logDebug: function _logDebug(level) { + if (this._originalConsoleMethods[level] && this.debug) { + // In IE<10 console methods do not have their own 'apply' method + Function.prototype.apply.call(this._originalConsoleMethods[level], this._originalConsole, [].slice.call(arguments, 1)); + } + }, + _mergeContext: function _mergeContext(key, context) { + if (isUndefined(context)) { + delete this._globalContext[key]; + } else { + this._globalContext[key] = objectMerge(this._globalContext[key] || {}, context); + } + } +}; // Deprecations + +Raven$1.prototype.setUser = Raven$1.prototype.setUserContext; +Raven$1.prototype.setReleaseContext = Raven$1.prototype.setRelease; +var raven = Raven$1; + +/** + * Enforces a single instance of the Raven client, and the + * main entry point for Raven. If you are a consumer of the + * Raven library, you SHOULD load this file (vs raven.js). + **/ +// This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) + +var _window = typeof window !== 'undefined' ? window : typeof commonjsGlobal !== 'undefined' ? commonjsGlobal : typeof self !== 'undefined' ? self : {}; + +var _Raven = _window.Raven; +var Raven = new raven(); +/* + * Allow multiple versions of Raven to be installed. + * Strip Raven from the global context and returns the instance. + * + * @return {Raven} + */ + +Raven.noConflict = function () { + _window.Raven = _Raven; + return Raven; +}; + +Raven.afterLoad(); +var singleton = Raven; + +/** + * console plugin + * + * Monkey patches console.* calls into Sentry messages with + * their appropriate log levels. (Experimental) + * + * Options: + * + * `levels`: An array of levels (methods on `console`) to report to Sentry. + * Defaults to debug, info, warn, and error. + */ + +var wrapConsoleMethod$1 = console$1.wrapMethod; + +function consolePlugin(Raven, console, pluginOptions) { + console = console || window.console || {}; + pluginOptions = pluginOptions || {}; + var logLevels = pluginOptions.levels || ['debug', 'info', 'warn', 'error']; + if ('assert' in console) logLevels.push('assert'); + + var callback = function callback(msg, data) { + Raven.captureMessage(msg, data); + }; + + var level = logLevels.pop(); + + while (level) { + wrapConsoleMethod$1(console, level, callback); + level = logLevels.pop(); + } +} + +var console$3 = consolePlugin; + +/** + * Ember.js plugin + * + * Patches event handler callbacks and ajax callbacks. + */ +function emberPlugin(Raven, Ember) { + Ember = Ember || window.Ember; // quit if Ember isn't on the page + + if (!Ember) return; + var _oldOnError = Ember.onerror; + + Ember.onerror = function EmberOnError(error) { + Raven.captureException(error); + + if (typeof _oldOnError === 'function') { + _oldOnError.call(this, error); + } + }; + + Ember.RSVP.on('error', function (reason) { + if (reason instanceof Error) { + Raven.captureException(reason, { + extra: { + context: 'Unhandled Promise error detected' + } + }); + } else { + Raven.captureMessage('Unhandled Promise error detected', { + extra: { + reason: reason + } + }); + } + }); +} + +var ember = emberPlugin; + +/*global define*/ + +/** + * require.js plugin + * + * Automatically wrap define/require callbacks. (Experimental) + */ + +function requirePlugin(Raven) { + if (typeof undefined === 'function' && undefined.amd) { + window.define = Raven.wrap({ + deep: false + }, undefined); + window.require = Raven.wrap({ + deep: false + }, commonjsRequire); + } +} + +var require_1 = requirePlugin; + +/* This file was generated by './scripts/generate-plugin-combinations.js'! */ + +singleton.addPlugin(console$3).addPlugin(ember).addPlugin(require_1); +var console_ember_require = {}; + +return console_ember_require; + +}))); diff --git a/dist/console,ember,require/raven.min.js b/dist/console,ember,require/raven.min.js new file mode 100644 index 000000000000..622834cf74b0 --- /dev/null +++ b/dist/console,ember,require/raven.min.js @@ -0,0 +1,3 @@ +/*! Raven.js 3.22.2 (1b6187b) | github.com/getsentry/raven-js */ +!function(a,b){"object"==typeof exports&&"undefined"!=typeof module?module.exports=b():"function"==typeof define&&define.amd?define(b):a.Raven=b()}(this,function(){"use strict";function a(a,b){return b={exports:{}},a(b,b.exports),b.exports}function b(a){return(b="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(a){return typeof a}:function(a){return a&&"function"==typeof Symbol&&a.constructor===Symbol&&a!==Symbol.prototype?"symbol":typeof a})(a)}function c(a){return"object"===b(a)&&null!==a}function d(a){switch({}.toString.call(a)){case"[object Error]":return!0;case"[object Exception]":return!0;case"[object DOMException]":return!0;default:return a instanceof Error}}function e(a){return l()&&"[object ErrorEvent]"==={}.toString.call(a)}function f(a){return void 0===a}function g(a){return"function"==typeof a}function h(a){return"[object Object]"===Object.prototype.toString.call(a)}function i(a){return"[object String]"===Object.prototype.toString.call(a)}function j(a){return"[object Array]"===Object.prototype.toString.call(a)}function k(a){if(!h(a))return!1;for(var b in a)if(a.hasOwnProperty(b))return!1;return!0}function l(){try{return new ErrorEvent(""),!0}catch(a){return!1}}function m(){if(!("fetch"in P))return!1;try{return new Headers,new Request(""),new Response,!0}catch(a){return!1}}function n(a){function b(b,c){var d=a(b)||b;return c?c(d)||d:d}return b}function o(a,b){var c,d;if(f(a.length))for(c in a)s(a,c)&&b.call(null,c,a[c]);else if(d=a.length)for(c=0;c ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function y(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&i(b))for(c=b.split(/\s+/),f=0;f=0;--b)l[b]===a&&l.splice(b,1)}function c(){g(),l=[]}function d(a,b){var c=null;if(!b||R.collectWindowErrors){for(var d in l)if(l.hasOwnProperty(d))try{l[d].apply(null,[a].concat(T.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function e(a,b,c,e,f){var g=null,i=Q.isErrorEvent(f)?f.error:f,k=Q.isErrorEvent(a)?a.message:a;if(o)R.computeStackTrace.augmentStackTraceWithInitialElement(o,b,c,k),h();else if(i&&Q.isError(i))g=R.computeStackTrace(i),d(g,!0);else{var l,m={url:b,line:c,column:e},n=void 0;if("[object String]"==={}.toString.call(k)){var l=k.match(V);l&&(n=l[1],k=l[2])}m.func=U,g={name:n,message:k,url:F(),stack:[m]},d(g,!0)}return!!j&&j.apply(this,arguments)}function f(){k||(j=S.onerror,S.onerror=e,k=!0)}function g(){k&&(S.onerror=j,k=!1,j=void 0)}function h(){var a=o,b=m;m=null,o=null,n=null,d.apply(null,[a,!1].concat(b))}function i(a,b){var c=T.call(arguments,1);if(o){if(n===a)return;h()}var d=R.computeStackTrace(a);if(o=d,n=a,m=c,setTimeout(function(){n===a&&h()},d.incomplete?2e3:0),b!==!1)throw a}var j,k,l=[],m=null,n=null,o=null;return i.subscribe=a,i.unsubscribe=b,i.uninstall=c,i}(),R.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,d,e=/^\s*at (.*?) ?\(((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,f=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|\[native).*?|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,g=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,h=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,i=/\((\S*)(?::(\d+))(?::(\d+))\)/,j=a.stack.split("\n"),k=[],l=(/^(.*) is undefined$/.exec(a.message),0),m=j.length;l eval")>-1;o&&(b=h.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==l||c[5]||"undefined"==typeof a.columnNumber||(k[0].column=a.columnNumber+1),d={url:c[3],func:c[1]||U,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}!d.func&&d.line&&(d.func=U),k.push(d)}return k.length?{name:a.name,message:a.message,url:F(),stack:k}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=U),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,e){for(var f,g,h=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,i=[],j={},k=!1,l=c.caller;l&&!k;l=l.caller)if(l!==d&&l!==R.report){if(g={url:null,func:U,line:null,column:null},l.name?g.func=l.name:(f=h.exec(l.toString()))&&(g.func=f[1]),"undefined"==typeof g.func)try{g.func=f.input.substring(0,f.input.indexOf("{"))}catch(m){}j[""+l]?k=!0:j[""+l]=!0,i.push(g)}e&&i.splice(0,e);var n={name:a.name,message:a.message,url:F(),stack:i};return b(n,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),n}function d(b,d){var e=null;d=null==d?0:+d;try{if(e=a(b))return e}catch(f){if(R.debug)throw f}try{if(e=c(b,d+1))return e}catch(f){if(R.debug)throw f}return{name:b.name,message:b.message,url:F()}}return d.augmentStackTraceWithInitialElement=b,d.computeStackTraceFromStackProp=a,d}();var W=R,X=a(function(a,b){function c(a,b){for(var c=0;c0){var i=c(d,this);~i?d.splice(i+1):d.push(this),~i?f.splice(i,1/0,g):f.push(g),~c(d,h)&&(h=b.call(this,g,h))}else d.push(h);return null==a?h instanceof Error?e(h):h:a.call(this,g,h)}}b=a.exports=d,b.getSerialize=f});G.prototype=new Error,G.prototype.constructor=G;var Y=G,Z=function(a,b,c){var d=a[b],e=a;if(b in a){var f="warn"===b?"warning":b;a[b]=function(){var a=[].slice.call(arguments),g=Q.safeJoin(a," "),h={level:f,logger:"console",extra:{arguments:a}};"assert"===b?a[0]===!1&&(g="Assertion failed: "+(Q.safeJoin(a.slice(1)," ")||"console.assert"),h.extra.arguments=a.slice(1),c&&c(g,h)):c&&c(g,h),d&&Function.prototype.apply.call(d,e,a)}}},$={wrapMethod:Z},_=Q.isError,aa=Q.isObject,ba=Q.isErrorEvent,ca=Q.isUndefined,da=Q.isFunction,ea=Q.isString,fa=Q.isArray,ga=Q.isEmptyObject,ha=Q.each,ia=Q.objectMerge,ja=Q.truncate,ka=Q.objectFrozen,la=Q.hasKey,ma=Q.joinRegExp,na=Q.urlencode,oa=Q.uuid4,pa=Q.htmlTreeAsString,qa=Q.isSameException,ra=Q.isSameStacktrace,sa=Q.parseUrl,ta=Q.fill,ua=Q.supportsFetch,va=$.wrapMethod,wa="source protocol user pass host port path".split(" "),xa=/^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/,ya="undefined"!=typeof window?window:"undefined"!=typeof N?N:"undefined"!=typeof self?self:{},za=ya.document,Aa=ya.navigator;J.prototype={VERSION:"3.22.2",debug:!1,TraceKit:W,config:function(a,b){var c=this;if(c.i)return this.C("error","Error: Raven has already been configured"),c;if(!a)return c;var d=c.m;b&&ha(b,function(a,b){"tags"===a||"extra"===a||"user"===a?c.l[a]=b:d[a]=b}),c.setDSN(a),d.ignoreErrors.push(/^Script error\.?$/),d.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/),d.ignoreErrors=ma(d.ignoreErrors),d.ignoreUrls=!!d.ignoreUrls.length&&ma(d.ignoreUrls),d.whitelistUrls=!!d.whitelistUrls.length&&ma(d.whitelistUrls),d.includePaths=ma(d.includePaths),d.maxBreadcrumbs=Math.max(0,Math.min(d.maxBreadcrumbs||100,100));var e={xhr:!0,console:!0,dom:!0,location:!0,sentry:!0},f=d.autoBreadcrumbs;"[object Object]"==={}.toString.call(f)?f=ia(e,f):f!==!1&&(f=e),d.autoBreadcrumbs=f;var g={tryCatch:!0},h=d.instrument;return"[object Object]"==={}.toString.call(h)?h=ia(g,h):h!==!1&&(h=g),d.instrument=h,W.collectWindowErrors=!!d.collectWindowErrors,c},install:function(){var a=this;return a.isSetup()&&!a.p&&(W.report.subscribe(function(){a.D.apply(a,arguments)}),a.E(),a.m.instrument&&a.m.instrument.tryCatch&&a.F(),a.m.autoBreadcrumbs&&a.G(),a.H(),a.p=!0),Error.stackTraceLimit=a.m.stackTraceLimit,this},setDSN:function(a){var b=this,c=b.I(a),d=c.path.lastIndexOf("/"),e=c.path.substr(1,d);b.J=a,b.j=c.user,b.K=c.pass&&c.pass.substr(1),b.k=c.path.substr(d+1),b.i=b.L(c),b.M=b.i+"/"+e+"api/"+b.k+"/store/",this.A()},context:function(a,b,c){return da(a)&&(c=b||[],b=a,a=void 0),this.wrap(a,b).apply(this,c)},wrap:function(a,b,c){function d(){var d=[],f=arguments.length,g=!a||a&&a.deep!==!1;for(c&&da(c)&&c.apply(this,arguments);f--;)d[f]=g?e.wrap(a,arguments[f]):arguments[f];try{return b.apply(this,d)}catch(h){throw e.N(),e.captureException(h,a),h}}var e=this;if(ca(b)&&!da(a))return a;if(da(a)&&(b=a,a=void 0),!da(b))return b;try{if(b.a)return b;if(b.O)return b.O}catch(f){return b}for(var g in b)la(b,g)&&(d[g]=b[g]);return d.prototype=b.prototype,b.O=d,d.a=!0,d.b=b,d},uninstall:function(){return W.report.uninstall(),this.P(),this.Q(),this.R(),Error.stackTraceLimit=this.q,this.p=!1,this},captureException:function(a,b){b=ia({trimHeadFrames:0},b?b:{});var c=!_(a),d=!ba(a),e=ba(a)&&!a.error;if(c&&d||e)return this.captureMessage(a,ia(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}));ba(a)&&(a=a.error),this.f=a;try{var f=W.computeStackTrace(a);this.S(f,b)}catch(g){if(a!==g)throw g}return this},captureMessage:function(a,b){if(!this.m.ignoreErrors.test||!this.m.ignoreErrors.test(a)){b=b||{};var c,d=ia({message:a+""},b);try{throw new Error(a)}catch(e){c=e}c.name=null;var f=W.computeStackTrace(c),g=fa(f.stack)&&f.stack[1],h=g&&g.url||"";if((!this.m.ignoreUrls.test||!this.m.ignoreUrls.test(h))&&(!this.m.whitelistUrls.test||this.m.whitelistUrls.test(h))){if(this.m.stacktrace||b&&b.stacktrace){b=ia({fingerprint:a,trimHeadFrames:(b.trimHeadFrames||0)+1},b);var i=this.T(f,b);d.stacktrace={frames:i.reverse()}}return this.U(d),this}}},captureBreadcrumb:function(a){var b=ia({timestamp:H()/1e3},a);if(da(this.m.breadcrumbCallback)){var c=this.m.breadcrumbCallback(b);if(aa(c)&&!ga(c))b=c;else if(c===!1)return this}return this.w.push(b),this.w.length>this.m.maxBreadcrumbs&&this.w.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.t.push([a,b]),this.p&&this.H(),this},setUserContext:function(a){return this.l.user=a,this},setExtraContext:function(a){return this.V("extra",a),this},setTagsContext:function(a){return this.V("tags",a),this},clearContext:function(){return this.l={},this},getContext:function(){return JSON.parse(X(this.l))},setEnvironment:function(a){return this.m.environment=a,this},setRelease:function(a){return this.m.release=a,this},setDataCallback:function(a){var b=this.m.dataCallback;return this.m.dataCallback=I(b,a),this},setBreadcrumbCallback:function(a){var b=this.m.breadcrumbCallback;return this.m.breadcrumbCallback=I(b,a),this},setShouldSendCallback:function(a){var b=this.m.shouldSendCallback;return this.m.shouldSendCallback=I(b,a),this},setTransport:function(a){return this.m.transport=a,this},lastException:function(){return this.f},lastEventId:function(){return this.h},isSetup:function(){return!!this.c&&(!!this.i||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.C("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=ya.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(za){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new Y("Missing eventId");var c=a.dsn||this.J;if(!c)throw new Y("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.l.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.L(this.I(c)),h=za.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(za.head||za.body).appendChild(h)}},N:function(){var a=this;this.o+=1,setTimeout(function(){a.o-=1})},W:function(a,b){var c,d;if(this.d){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),za.createEvent?(c=za.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=za.createEventObject(),c.eventType=a);for(d in b)la(b,d)&&(c[d]=b[d]);if(za.createEvent)za.dispatchEvent(c);else try{za.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},X:function(a){var b=this;return function(c){if(b.Y=null,b.x!==c){b.x=c;var d;try{d=pa(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},Z:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.Y;g||a.X("input")(c),clearTimeout(g),a.Y=setTimeout(function(){a.Y=null},b)}}},$:function(a,b){var c=sa(this.y.href),d=sa(b),e=sa(a);this.z=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},E:function(){var a=this;a._=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.a?a._.apply(this.b,arguments):a._.apply(this,arguments)}},P:function(){this._&&(Function.prototype.toString=this._)},F:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.$(b.z,c+""),a.apply(this,arguments)}};ta(history,"pushState",j,d),ta(history,"replaceState",j,d)}if(c.console&&"console"in ya&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};ha(["debug","info","warn","error","log"],function(a,b){va(console,b,k)})}},Q:function(){for(var a;this.v.length;){a=this.v.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},R:function(){for(var a in this.s)this.r[a]=this.s[a]},H:function(){var a=this;ha(this.t,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},I:function(a){var b=xa.exec(a),c={},d=7;try{for(;d--;)c[wa[d]]=b[d]||""}catch(e){throw new Y("Invalid DSN: "+a)}if(c.pass&&!this.m.allowSecretKey)throw new Y("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},L:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},D:function(){this.o||this.S.apply(this,arguments)},S:function(a,b){var c=this.T(a,b);this.W("handle",{stackInfo:a,options:b}),this.ba(a.name,a.message,a.url,a.lineno,c,b)},T:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(ha(a.stack,function(b,e){var f=c.ca(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.w,0)}),this.l.user&&(a.user=this.l.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||ga(a[b]))&&delete a[b]}),da(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!ga(a)&&(!da(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.ia()?void this.C("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() href parsing trick because React Native and other +// environments where DOM might not be available + + +function parseUrl$1(url) { + if (typeof url !== 'string') return {}; + var match = url.match(/^(([^:\/?#]+):)?(\/\/([^\/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?$/); // coerce to undefined values to empty string so we don't get 'undefined' + + var query = match[6] || ''; + var fragment = match[8] || ''; + return { + protocol: match[2], + host: match[4], + path: match[5], + relative: match[5] + query + fragment // everything minus origin + + }; +} + +function uuid4$1() { + var crypto = _window$3.crypto || _window$3.msCrypto; + + if (!isUndefined$1(crypto) && crypto.getRandomValues) { + // Use window.crypto API if available + // eslint-disable-next-line no-undef + var arr = new Uint16Array(8); + crypto.getRandomValues(arr); // set 4 in byte 7 + + arr[3] = arr[3] & 0xfff | 0x4000; // set 2 most significant bits of byte 9 to '10' + + arr[4] = arr[4] & 0x3fff | 0x8000; + + var pad = function pad(num) { + var v = num.toString(16); + + while (v.length < 4) { + v = '0' + v; + } + + return v; + }; + + return pad(arr[0]) + pad(arr[1]) + pad(arr[2]) + pad(arr[3]) + pad(arr[4]) + pad(arr[5]) + pad(arr[6]) + pad(arr[7]); + } else { + // http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/2117523#2117523 + return 'xxxxxxxxxxxx4xxxyxxxxxxxxxxxxxxx'.replace(/[xy]/g, function (c) { + var r = Math.random() * 16 | 0, + v = c === 'x' ? r : r & 0x3 | 0x8; + return v.toString(16); + }); + } +} +/** + * Given a child DOM element, returns a query-selector statement describing that + * and its ancestors + * e.g. [HTMLElement] => body > div > input#foo.btn[name=baz] + * @param elem + * @returns {string} + */ + + +function htmlTreeAsString$1(elem) { + /* eslint no-extra-parens:0*/ + var MAX_TRAVERSE_HEIGHT = 5, + MAX_OUTPUT_LEN = 80, + out = [], + height = 0, + len = 0, + separator = ' > ', + sepLength = separator.length, + nextStr; + + while (elem && height++ < MAX_TRAVERSE_HEIGHT) { + nextStr = htmlElementAsString(elem); // bail out if + // - nextStr is the 'html' element + // - the length of the string that would be created exceeds MAX_OUTPUT_LEN + // (ignore this limit if we are on the first iteration) + + if (nextStr === 'html' || height > 1 && len + out.length * sepLength + nextStr.length >= MAX_OUTPUT_LEN) { + break; + } + + out.push(nextStr); + len += nextStr.length; + elem = elem.parentNode; + } + + return out.reverse().join(separator); +} +/** + * Returns a simple, query-selector representation of a DOM element + * e.g. [HTMLElement] => input#foo.btn[name=baz] + * @param HTMLElement + * @returns {string} + */ + + +function htmlElementAsString(elem) { + var out = [], + className, + classes, + key, + attr, + i; + + if (!elem || !elem.tagName) { + return ''; + } + + out.push(elem.tagName.toLowerCase()); + + if (elem.id) { + out.push('#' + elem.id); + } + + className = elem.className; + + if (className && isString$1(className)) { + classes = className.split(/\s+/); + + for (i = 0; i < classes.length; i++) { + out.push('.' + classes[i]); + } + } + + var attrWhitelist = ['type', 'name', 'title', 'alt']; + + for (i = 0; i < attrWhitelist.length; i++) { + key = attrWhitelist[i]; + attr = elem.getAttribute(key); + + if (attr) { + out.push('[' + key + '="' + attr + '"]'); + } + } + + return out.join(''); +} +/** + * Returns true if either a OR b is truthy, but not both + */ + + +function isOnlyOneTruthy(a, b) { + return !!(!!a ^ !!b); +} +/** + * Returns true if both parameters are undefined + */ + + +function isBothUndefined(a, b) { + return isUndefined$1(a) && isUndefined$1(b); +} +/** + * Returns true if the two input exception interfaces have the same content + */ + + +function isSameException$1(ex1, ex2) { + if (isOnlyOneTruthy(ex1, ex2)) return false; + ex1 = ex1.values[0]; + ex2 = ex2.values[0]; + if (ex1.type !== ex2.type || ex1.value !== ex2.value) return false; // in case both stacktraces are undefined, we can't decide so default to false + + if (isBothUndefined(ex1.stacktrace, ex2.stacktrace)) return false; + return isSameStacktrace$1(ex1.stacktrace, ex2.stacktrace); +} +/** + * Returns true if the two input stack trace interfaces have the same content + */ + + +function isSameStacktrace$1(stack1, stack2) { + if (isOnlyOneTruthy(stack1, stack2)) return false; + var frames1 = stack1.frames; + var frames2 = stack2.frames; // Exit early if frame count differs + + if (frames1.length !== frames2.length) return false; // Iterate through every frame; bail out if anything differs + + var a, b; + + for (var i = 0; i < frames1.length; i++) { + a = frames1[i]; + b = frames2[i]; + if (a.filename !== b.filename || a.lineno !== b.lineno || a.colno !== b.colno || a['function'] !== b['function']) return false; + } + + return true; +} +/** + * Polyfill a method + * @param obj object e.g. `document` + * @param name method name present on object e.g. `addEventListener` + * @param replacement replacement function + * @param track {optional} record instrumentation to an array + */ + + +function fill$1(obj, name, replacement, track) { + var orig = obj[name]; + obj[name] = replacement(orig); + obj[name].__raven__ = true; + obj[name].__orig__ = orig; + + if (track) { + track.push([obj, name, orig]); + } +} +/** + * Join values in array + * @param input array of values to be joined together + * @param delimiter string to be placed in-between values + * @returns {string} + */ + + +function safeJoin(input, delimiter) { + if (!isArray$1(input)) return ''; + var output = []; + + for (var i = 0; i < input.length; i++) { + try { + output.push(String(input[i])); + } catch (e) { + output.push('[value cannot be serialized]'); + } + } + + return output.join(delimiter); +} + +var utils = { + isObject: isObject$1, + isError: isError$1, + isErrorEvent: isErrorEvent$1, + isUndefined: isUndefined$1, + isFunction: isFunction$1, + isPlainObject: isPlainObject, + isString: isString$1, + isArray: isArray$1, + isEmptyObject: isEmptyObject$1, + supportsErrorEvent: supportsErrorEvent, + supportsFetch: supportsFetch$1, + wrappedCallback: wrappedCallback, + each: each$1, + objectMerge: objectMerge$1, + truncate: truncate$1, + objectFrozen: objectFrozen$1, + hasKey: hasKey$1, + joinRegExp: joinRegExp$1, + urlencode: urlencode$1, + uuid4: uuid4$1, + htmlTreeAsString: htmlTreeAsString$1, + htmlElementAsString: htmlElementAsString, + isSameException: isSameException$1, + isSameStacktrace: isSameStacktrace$1, + parseUrl: parseUrl$1, + fill: fill$1, + safeJoin: safeJoin +}; + +/* + TraceKit - Cross brower stack traces + + This was originally forked from github.com/occ/TraceKit, but has since been + largely re-written and is now maintained as part of raven-js. Tests for + this are in test/vendor. + + MIT license +*/ + +var TraceKit = { + collectWindowErrors: true, + debug: false +}; // This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) + +var _window$2 = typeof window !== 'undefined' ? window : typeof commonjsGlobal !== 'undefined' ? commonjsGlobal : typeof self !== 'undefined' ? self : {}; // global reference to slice + + +var _slice = [].slice; +var UNKNOWN_FUNCTION = '?'; // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error#Error_types + +var ERROR_TYPES_RE = /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/; + +function getLocationHref() { + if (typeof document === 'undefined' || document.location == null) return ''; + return document.location.href; +} +/** + * TraceKit.report: cross-browser processing of unhandled exceptions + * + * Syntax: + * TraceKit.report.subscribe(function(stackInfo) { ... }) + * TraceKit.report.unsubscribe(function(stackInfo) { ... }) + * TraceKit.report(exception) + * try { ...code... } catch(ex) { TraceKit.report(ex); } + * + * Supports: + * - Firefox: full stack trace with line numbers, plus column number + * on top frame; column number is not guaranteed + * - Opera: full stack trace with line and column numbers + * - Chrome: full stack trace with line and column numbers + * - Safari: line and column number for the top frame only; some frames + * may be missing, and column number is not guaranteed + * - IE: line and column number for the top frame only; some frames + * may be missing, and column number is not guaranteed + * + * In theory, TraceKit should work on all of the following versions: + * - IE5.5+ (only 8.0 tested) + * - Firefox 0.9+ (only 3.5+ tested) + * - Opera 7+ (only 10.50 tested; versions 9 and earlier may require + * Exceptions Have Stacktrace to be enabled in opera:config) + * - Safari 3+ (only 4+ tested) + * - Chrome 1+ (only 5+ tested) + * - Konqueror 3.5+ (untested) + * + * Requires TraceKit.computeStackTrace. + * + * Tries to catch all unhandled exceptions and report them to the + * subscribed handlers. Please note that TraceKit.report will rethrow the + * exception. This is REQUIRED in order to get a useful stack trace in IE. + * If the exception does not reach the top of the browser, you will only + * get a stack trace from the point where TraceKit.report was called. + * + * Handlers receive a stackInfo object as described in the + * TraceKit.computeStackTrace docs. + */ + + +TraceKit.report = function reportModuleWrapper() { + var handlers = [], + lastArgs = null, + lastException = null, + lastExceptionStack = null; + /** + * Add a crash handler. + * @param {Function} handler + */ + + function subscribe(handler) { + installGlobalHandler(); + handlers.push(handler); + } + /** + * Remove a crash handler. + * @param {Function} handler + */ + + + function unsubscribe(handler) { + for (var i = handlers.length - 1; i >= 0; --i) { + if (handlers[i] === handler) { + handlers.splice(i, 1); + } + } + } + /** + * Remove all crash handlers. + */ + + + function unsubscribeAll() { + uninstallGlobalHandler(); + handlers = []; + } + /** + * Dispatch stack information to all handlers. + * @param {Object.} stack + */ + + + function notifyHandlers(stack, isWindowError) { + var exception = null; + + if (isWindowError && !TraceKit.collectWindowErrors) { + return; + } + + for (var i in handlers) { + if (handlers.hasOwnProperty(i)) { + try { + handlers[i].apply(null, [stack].concat(_slice.call(arguments, 2))); + } catch (inner) { + exception = inner; + } + } + } + + if (exception) { + throw exception; + } + } + + var _oldOnerrorHandler, _onErrorHandlerInstalled; + /** + * Ensures all global unhandled exceptions are recorded. + * Supported by Gecko and IE. + * @param {string} msg Error message. + * @param {string} url URL of script that generated the exception. + * @param {(number|string)} lineNo The line number at which the error + * occurred. + * @param {?(number|string)} colNo The column number at which the error + * occurred. + * @param {?Error} ex The actual Error object. + */ + + + function traceKitWindowOnError(msg, url, lineNo, colNo, ex) { + var stack = null; // If 'ex' is ErrorEvent, get real Error from inside + + var exception = utils.isErrorEvent(ex) ? ex.error : ex; // If 'msg' is ErrorEvent, get real message from inside + + var message = utils.isErrorEvent(msg) ? msg.message : msg; + + if (lastExceptionStack) { + TraceKit.computeStackTrace.augmentStackTraceWithInitialElement(lastExceptionStack, url, lineNo, message); + processLastException(); + } else if (exception && utils.isError(exception)) { + // non-string `exception` arg; attempt to extract stack trace + // New chrome and blink send along a real error object + // Let's just report that like a normal error. + // See: https://mikewest.org/2013/08/debugging-runtime-errors-with-window-onerror + stack = TraceKit.computeStackTrace(exception); + notifyHandlers(stack, true); + } else { + var location = { + url: url, + line: lineNo, + column: colNo + }; + var name = undefined; + var groups; + + if ({}.toString.call(message) === '[object String]') { + var groups = message.match(ERROR_TYPES_RE); + + if (groups) { + name = groups[1]; + message = groups[2]; + } + } + + location.func = UNKNOWN_FUNCTION; + stack = { + name: name, + message: message, + url: getLocationHref(), + stack: [location] + }; + notifyHandlers(stack, true); + } + + if (_oldOnerrorHandler) { + return _oldOnerrorHandler.apply(this, arguments); + } + + return false; + } + + function installGlobalHandler() { + if (_onErrorHandlerInstalled) { + return; + } + + _oldOnerrorHandler = _window$2.onerror; + _window$2.onerror = traceKitWindowOnError; + _onErrorHandlerInstalled = true; + } + + function uninstallGlobalHandler() { + if (!_onErrorHandlerInstalled) { + return; + } + + _window$2.onerror = _oldOnerrorHandler; + _onErrorHandlerInstalled = false; + _oldOnerrorHandler = undefined; + } + + function processLastException() { + var _lastExceptionStack = lastExceptionStack, + _lastArgs = lastArgs; + lastArgs = null; + lastExceptionStack = null; + lastException = null; + notifyHandlers.apply(null, [_lastExceptionStack, false].concat(_lastArgs)); + } + /** + * Reports an unhandled Error to TraceKit. + * @param {Error} ex + * @param {?boolean} rethrow If false, do not re-throw the exception. + * Only used for window.onerror to not cause an infinite loop of + * rethrowing. + */ + + + function report(ex, rethrow) { + var args = _slice.call(arguments, 1); + + if (lastExceptionStack) { + if (lastException === ex) { + return; // already caught by an inner catch block, ignore + } else { + processLastException(); + } + } + + var stack = TraceKit.computeStackTrace(ex); + lastExceptionStack = stack; + lastException = ex; + lastArgs = args; // If the stack trace is incomplete, wait for 2 seconds for + // slow slow IE to see if onerror occurs or not before reporting + // this exception; otherwise, we will end up with an incomplete + // stack trace + + setTimeout(function () { + if (lastException === ex) { + processLastException(); + } + }, stack.incomplete ? 2000 : 0); + + if (rethrow !== false) { + throw ex; // re-throw to propagate to the top level (and cause window.onerror) + } + } + + report.subscribe = subscribe; + report.unsubscribe = unsubscribe; + report.uninstall = unsubscribeAll; + return report; +}(); +/** + * TraceKit.computeStackTrace: cross-browser stack traces in JavaScript + * + * Syntax: + * s = TraceKit.computeStackTrace(exception) // consider using TraceKit.report instead (see below) + * Returns: + * s.name - exception name + * s.message - exception message + * s.stack[i].url - JavaScript or HTML file URL + * s.stack[i].func - function name, or empty for anonymous functions (if guessing did not work) + * s.stack[i].args - arguments passed to the function, if known + * s.stack[i].line - line number, if known + * s.stack[i].column - column number, if known + * + * Supports: + * - Firefox: full stack trace with line numbers and unreliable column + * number on top frame + * - Opera 10: full stack trace with line and column numbers + * - Opera 9-: full stack trace with line numbers + * - Chrome: full stack trace with line and column numbers + * - Safari: line and column number for the topmost stacktrace element + * only + * - IE: no line numbers whatsoever + * + * Tries to guess names of anonymous functions by looking for assignments + * in the source code. In IE and Safari, we have to guess source file names + * by searching for function bodies inside all page scripts. This will not + * work for scripts that are loaded cross-domain. + * Here be dragons: some function names may be guessed incorrectly, and + * duplicate functions may be mismatched. + * + * TraceKit.computeStackTrace should only be used for tracing purposes. + * Logging of unhandled exceptions should be done with TraceKit.report, + * which builds on top of TraceKit.computeStackTrace and provides better + * IE support by utilizing the window.onerror event to retrieve information + * about the top of the stack. + * + * Note: In IE and Safari, no stack trace is recorded on the Error object, + * so computeStackTrace instead walks its *own* chain of callers. + * This means that: + * * in Safari, some methods may be missing from the stack trace; + * * in IE, the topmost function in the stack trace will always be the + * caller of computeStackTrace. + * + * This is okay for tracing (because you are likely to be calling + * computeStackTrace from the function you want to be the topmost element + * of the stack trace anyway), but not okay for logging unhandled + * exceptions (because your catch block will likely be far away from the + * inner function that actually caused the exception). + * + */ + + +TraceKit.computeStackTrace = function computeStackTraceWrapper() { + // Contents of Exception in various browsers. + // + // SAFARI: + // ex.message = Can't find variable: qq + // ex.line = 59 + // ex.sourceId = 580238192 + // ex.sourceURL = http://... + // ex.expressionBeginOffset = 96 + // ex.expressionCaretOffset = 98 + // ex.expressionEndOffset = 98 + // ex.name = ReferenceError + // + // FIREFOX: + // ex.message = qq is not defined + // ex.fileName = http://... + // ex.lineNumber = 59 + // ex.columnNumber = 69 + // ex.stack = ...stack trace... (see the example below) + // ex.name = ReferenceError + // + // CHROME: + // ex.message = qq is not defined + // ex.name = ReferenceError + // ex.type = not_defined + // ex.arguments = ['aa'] + // ex.stack = ...stack trace... + // + // INTERNET EXPLORER: + // ex.message = ... + // ex.name = ReferenceError + // + // OPERA: + // ex.message = ...message... (see the example below) + // ex.name = ReferenceError + // ex.opera#sourceloc = 11 (pretty much useless, duplicates the info in ex.message) + // ex.stacktrace = n/a; see 'opera:config#UserPrefs|Exceptions Have Stacktrace' + + /** + * Computes stack trace information from the stack property. + * Chrome and Gecko use this property. + * @param {Error} ex + * @return {?Object.} Stack trace information. + */ + function computeStackTraceFromStackProp(ex) { + if (typeof ex.stack === 'undefined' || !ex.stack) return; + var chrome = /^\s*at (.*?) ?\(((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i, + gecko = /^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|\[native).*?|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i, + winjs = /^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i, + // Used to additionally parse URL/line/column from eval frames + geckoEval = /(\S+) line (\d+)(?: > eval line \d+)* > eval/i, + chromeEval = /\((\S*)(?::(\d+))(?::(\d+))\)/, + lines = ex.stack.split('\n'), + stack = [], + submatch, + parts, + element, + reference = /^(.*) is undefined$/.exec(ex.message); + + for (var i = 0, j = lines.length; i < j; ++i) { + if (parts = chrome.exec(lines[i])) { + var isNative = parts[2] && parts[2].indexOf('native') === 0; // start of line + + var isEval = parts[2] && parts[2].indexOf('eval') === 0; // start of line + + if (isEval && (submatch = chromeEval.exec(parts[2]))) { + // throw out eval line/column and use top-most line/column number + parts[2] = submatch[1]; // url + + parts[3] = submatch[2]; // line + + parts[4] = submatch[3]; // column + } + + element = { + url: !isNative ? parts[2] : null, + func: parts[1] || UNKNOWN_FUNCTION, + args: isNative ? [parts[2]] : [], + line: parts[3] ? +parts[3] : null, + column: parts[4] ? +parts[4] : null + }; + } else if (parts = winjs.exec(lines[i])) { + element = { + url: parts[2], + func: parts[1] || UNKNOWN_FUNCTION, + args: [], + line: +parts[3], + column: parts[4] ? +parts[4] : null + }; + } else if (parts = gecko.exec(lines[i])) { + var isEval = parts[3] && parts[3].indexOf(' > eval') > -1; + + if (isEval && (submatch = geckoEval.exec(parts[3]))) { + // throw out eval line/column and use top-most line number + parts[3] = submatch[1]; + parts[4] = submatch[2]; + parts[5] = null; // no column when eval + } else if (i === 0 && !parts[5] && typeof ex.columnNumber !== 'undefined') { + // FireFox uses this awesome columnNumber property for its top frame + // Also note, Firefox's column number is 0-based and everything else expects 1-based, + // so adding 1 + // NOTE: this hack doesn't work if top-most frame is eval + stack[0].column = ex.columnNumber + 1; + } + + element = { + url: parts[3], + func: parts[1] || UNKNOWN_FUNCTION, + args: parts[2] ? parts[2].split(',') : [], + line: parts[4] ? +parts[4] : null, + column: parts[5] ? +parts[5] : null + }; + } else { + continue; + } + + if (!element.func && element.line) { + element.func = UNKNOWN_FUNCTION; + } + + stack.push(element); + } + + if (!stack.length) { + return null; + } + + return { + name: ex.name, + message: ex.message, + url: getLocationHref(), + stack: stack + }; + } + /** + * Adds information about the first frame to incomplete stack traces. + * Safari and IE require this to get complete data on the first frame. + * @param {Object.} stackInfo Stack trace information from + * one of the compute* methods. + * @param {string} url The URL of the script that caused an error. + * @param {(number|string)} lineNo The line number of the script that + * caused an error. + * @param {string=} message The error generated by the browser, which + * hopefully contains the name of the object that caused the error. + * @return {boolean} Whether or not the stack information was + * augmented. + */ + + + function augmentStackTraceWithInitialElement(stackInfo, url, lineNo, message) { + var initial = { + url: url, + line: lineNo + }; + + if (initial.url && initial.line) { + stackInfo.incomplete = false; + + if (!initial.func) { + initial.func = UNKNOWN_FUNCTION; + } + + if (stackInfo.stack.length > 0) { + if (stackInfo.stack[0].url === initial.url) { + if (stackInfo.stack[0].line === initial.line) { + return false; // already in stack trace + } else if (!stackInfo.stack[0].line && stackInfo.stack[0].func === initial.func) { + stackInfo.stack[0].line = initial.line; + return false; + } + } + } + + stackInfo.stack.unshift(initial); + stackInfo.partial = true; + return true; + } else { + stackInfo.incomplete = true; + } + + return false; + } + /** + * Computes stack trace information by walking the arguments.caller + * chain at the time the exception occurred. This will cause earlier + * frames to be missed but is the only way to get any stack trace in + * Safari and IE. The top frame is restored by + * {@link augmentStackTraceWithInitialElement}. + * @param {Error} ex + * @return {?Object.} Stack trace information. + */ + + + function computeStackTraceByWalkingCallerChain(ex, depth) { + var functionName = /function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i, + stack = [], + funcs = {}, + recursion = false, + parts, + item; + + for (var curr = computeStackTraceByWalkingCallerChain.caller; curr && !recursion; curr = curr.caller) { + if (curr === computeStackTrace || curr === TraceKit.report) { + // console.log('skipping internal function'); + continue; + } + + item = { + url: null, + func: UNKNOWN_FUNCTION, + line: null, + column: null + }; + + if (curr.name) { + item.func = curr.name; + } else if (parts = functionName.exec(curr.toString())) { + item.func = parts[1]; + } + + if (typeof item.func === 'undefined') { + try { + item.func = parts.input.substring(0, parts.input.indexOf('{')); + } catch (e) {} + } + + if (funcs['' + curr]) { + recursion = true; + } else { + funcs['' + curr] = true; + } + + stack.push(item); + } + + if (depth) { + // console.log('depth is ' + depth); + // console.log('stack is ' + stack.length); + stack.splice(0, depth); + } + + var result = { + name: ex.name, + message: ex.message, + url: getLocationHref(), + stack: stack + }; + augmentStackTraceWithInitialElement(result, ex.sourceURL || ex.fileName, ex.line || ex.lineNumber, ex.message || ex.description); + return result; + } + /** + * Computes a stack trace for an exception. + * @param {Error} ex + * @param {(string|number)=} depth + */ + + + function computeStackTrace(ex, depth) { + var stack = null; + depth = depth == null ? 0 : +depth; + + try { + stack = computeStackTraceFromStackProp(ex); + + if (stack) { + return stack; + } + } catch (e) { + if (TraceKit.debug) { + throw e; + } + } + + try { + stack = computeStackTraceByWalkingCallerChain(ex, depth + 1); + + if (stack) { + return stack; + } + } catch (e) { + if (TraceKit.debug) { + throw e; + } + } + + return { + name: ex.name, + message: ex.message, + url: getLocationHref() + }; + } + + computeStackTrace.augmentStackTraceWithInitialElement = augmentStackTraceWithInitialElement; + computeStackTrace.computeStackTraceFromStackProp = computeStackTraceFromStackProp; + return computeStackTrace; +}(); + +var tracekit = TraceKit; + +var stringify_1 = createCommonjsModule(function (module, exports) { + /* + json-stringify-safe + Like JSON.stringify, but doesn't throw on circular references. + + Originally forked from https://github.com/isaacs/json-stringify-safe + version 5.0.1 on 3/8/2017 and modified to handle Errors serialization + and IE8 compatibility. Tests for this are in test/vendor. + + ISC license: https://github.com/isaacs/json-stringify-safe/blob/master/LICENSE + */ + exports = module.exports = stringify; + exports.getSerialize = serializer; + + function indexOf(haystack, needle) { + for (var i = 0; i < haystack.length; ++i) { + if (haystack[i] === needle) return i; + } + + return -1; + } + + function stringify(obj, replacer, spaces, cycleReplacer) { + return JSON.stringify(obj, serializer(replacer, cycleReplacer), spaces); + } // https://github.com/ftlabs/js-abbreviate/blob/fa709e5f139e7770a71827b1893f22418097fbda/index.js#L95-L106 + + + function stringifyError(value) { + var err = { + // These properties are implemented as magical getters and don't show up in for in + stack: value.stack, + message: value.message, + name: value.name + }; + + for (var i in value) { + if (Object.prototype.hasOwnProperty.call(value, i)) { + err[i] = value[i]; + } + } + + return err; + } + + function serializer(replacer, cycleReplacer) { + var stack = []; + var keys = []; + + if (cycleReplacer == null) { + cycleReplacer = function cycleReplacer(key, value) { + if (stack[0] === value) { + return '[Circular ~]'; + } + + return '[Circular ~.' + keys.slice(0, indexOf(stack, value)).join('.') + ']'; + }; + } + + return function (key, value) { + if (stack.length > 0) { + var thisPos = indexOf(stack, this); + ~thisPos ? stack.splice(thisPos + 1) : stack.push(this); + ~thisPos ? keys.splice(thisPos, Infinity, key) : keys.push(key); + + if (~indexOf(stack, value)) { + value = cycleReplacer.call(this, key, value); + } + } else { + stack.push(value); + } + + return replacer == null ? value instanceof Error ? stringifyError(value) : value : replacer.call(this, key, value); + }; + } +}); +var stringify_2 = stringify_1.getSerialize; + +function RavenConfigError(message) { + this.name = 'RavenConfigError'; + this.message = message; +} + +RavenConfigError.prototype = new Error(); +RavenConfigError.prototype.constructor = RavenConfigError; +var configError = RavenConfigError; + +var wrapMethod = function wrapMethod(console, level, callback) { + var originalConsoleLevel = console[level]; + var originalConsole = console; + + if (!(level in console)) { + return; + } + + var sentryLevel = level === 'warn' ? 'warning' : level; + + console[level] = function () { + var args = [].slice.call(arguments); + var msg = utils.safeJoin(args, ' '); + var data = { + level: sentryLevel, + logger: 'console', + extra: { + arguments: args + } + }; + + if (level === 'assert') { + if (args[0] === false) { + // Default browsers message + msg = 'Assertion failed: ' + (utils.safeJoin(args.slice(1), ' ') || 'console.assert'); + data.extra.arguments = args.slice(1); + callback && callback(msg, data); + } + } else { + callback && callback(msg, data); + } // this fails for some browsers. :( + + + if (originalConsoleLevel) { + // IE9 doesn't allow calling apply on console functions directly + // See: https://stackoverflow.com/questions/5472938/does-ie9-support-console-log-and-is-it-a-real-function#answer-5473193 + Function.prototype.apply.call(originalConsoleLevel, originalConsole, args); + } + }; +}; + +var console$1 = { + wrapMethod: wrapMethod +}; + +/*global XDomainRequest:false */ + +var isError = utils.isError; +var isObject = utils.isObject; +var isErrorEvent = utils.isErrorEvent; +var isUndefined = utils.isUndefined; +var isFunction = utils.isFunction; +var isString = utils.isString; +var isArray = utils.isArray; +var isEmptyObject = utils.isEmptyObject; +var each = utils.each; +var objectMerge = utils.objectMerge; +var truncate = utils.truncate; +var objectFrozen = utils.objectFrozen; +var hasKey = utils.hasKey; +var joinRegExp = utils.joinRegExp; +var urlencode = utils.urlencode; +var uuid4 = utils.uuid4; +var htmlTreeAsString = utils.htmlTreeAsString; +var isSameException = utils.isSameException; +var isSameStacktrace = utils.isSameStacktrace; +var parseUrl = utils.parseUrl; +var fill = utils.fill; +var supportsFetch = utils.supportsFetch; +var wrapConsoleMethod = console$1.wrapMethod; +var dsnKeys = 'source protocol user pass host port path'.split(' '); +var dsnPattern = /^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/; + +function now() { + return +new Date(); +} // This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) + + +var _window$1 = typeof window !== 'undefined' ? window : typeof commonjsGlobal !== 'undefined' ? commonjsGlobal : typeof self !== 'undefined' ? self : {}; + +var _document = _window$1.document; +var _navigator = _window$1.navigator; + +function keepOriginalCallback(original, callback) { + return isFunction(callback) ? function (data) { + return callback(data, original); + } : callback; +} // First, check for JSON support +// If there is no JSON, we no-op the core features of Raven +// since JSON is required to encode the payload + + +function Raven$1() { + this._hasJSON = !!(_typeof(JSON) === 'object' && JSON.stringify); // Raven can run in contexts where there's no document (react-native) + + this._hasDocument = !isUndefined(_document); + this._hasNavigator = !isUndefined(_navigator); + this._lastCapturedException = null; + this._lastData = null; + this._lastEventId = null; + this._globalServer = null; + this._globalKey = null; + this._globalProject = null; + this._globalContext = {}; + this._globalOptions = { + // SENTRY_RELEASE can be injected by https://github.com/getsentry/sentry-webpack-plugin + release: _window$1.SENTRY_RELEASE && _window$1.SENTRY_RELEASE.id, + logger: 'javascript', + ignoreErrors: [], + ignoreUrls: [], + whitelistUrls: [], + includePaths: [], + headers: null, + collectWindowErrors: true, + maxMessageLength: 0, + // By default, truncates URL values to 250 chars + maxUrlLength: 250, + stackTraceLimit: 50, + autoBreadcrumbs: true, + instrument: true, + sampleRate: 1 + }; + this._fetchDefaults = { + method: 'POST', + keepalive: true, + referrerPolicy: 'origin' + }; + this._ignoreOnError = 0; + this._isRavenInstalled = false; + this._originalErrorStackTraceLimit = Error.stackTraceLimit; // capture references to window.console *and* all its methods first + // before the console plugin has a chance to monkey patch + + this._originalConsole = _window$1.console || {}; + this._originalConsoleMethods = {}; + this._plugins = []; + this._startTime = now(); + this._wrappedBuiltIns = []; + this._breadcrumbs = []; + this._lastCapturedEvent = null; + this._keypressTimeout; + this._location = _window$1.location; + this._lastHref = this._location && this._location.href; + + this._resetBackoff(); // eslint-disable-next-line guard-for-in + + + for (var method in this._originalConsole) { + this._originalConsoleMethods[method] = this._originalConsole[method]; + } +} +/* + * The core Raven singleton + * + * @this {Raven} + */ + + +Raven$1.prototype = { + // Hardcode version string so that raven source can be loaded directly via + // webpack (using a build step causes webpack #1617). Grunt verifies that + // this value matches package.json during build. + // See: https://github.com/getsentry/raven-js/issues/465 + VERSION: '3.22.2', + debug: false, + TraceKit: tracekit, + // alias to TraceKit + + /* + * Configure Raven with a DSN and extra options + * + * @param {string} dsn The public Sentry DSN + * @param {object} options Set of global options [optional] + * @return {Raven} + */ + config: function config(dsn, options) { + var self = this; + + if (self._globalServer) { + this._logDebug('error', 'Error: Raven has already been configured'); + + return self; + } + + if (!dsn) return self; + var globalOptions = self._globalOptions; // merge in options + + if (options) { + each(options, function (key, value) { + // tags and extra are special and need to be put into context + if (key === 'tags' || key === 'extra' || key === 'user') { + self._globalContext[key] = value; + } else { + globalOptions[key] = value; + } + }); + } + + self.setDSN(dsn); // "Script error." is hard coded into browsers for errors that it can't read. + // this is the result of a script being pulled in from an external domain and CORS. + + globalOptions.ignoreErrors.push(/^Script error\.?$/); + globalOptions.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/); // join regexp rules into one big rule + + globalOptions.ignoreErrors = joinRegExp(globalOptions.ignoreErrors); + globalOptions.ignoreUrls = globalOptions.ignoreUrls.length ? joinRegExp(globalOptions.ignoreUrls) : false; + globalOptions.whitelistUrls = globalOptions.whitelistUrls.length ? joinRegExp(globalOptions.whitelistUrls) : false; + globalOptions.includePaths = joinRegExp(globalOptions.includePaths); + globalOptions.maxBreadcrumbs = Math.max(0, Math.min(globalOptions.maxBreadcrumbs || 100, 100)); // default and hard limit is 100 + + var autoBreadcrumbDefaults = { + xhr: true, + console: true, + dom: true, + location: true, + sentry: true + }; + var autoBreadcrumbs = globalOptions.autoBreadcrumbs; + + if ({}.toString.call(autoBreadcrumbs) === '[object Object]') { + autoBreadcrumbs = objectMerge(autoBreadcrumbDefaults, autoBreadcrumbs); + } else if (autoBreadcrumbs !== false) { + autoBreadcrumbs = autoBreadcrumbDefaults; + } + + globalOptions.autoBreadcrumbs = autoBreadcrumbs; + var instrumentDefaults = { + tryCatch: true + }; + var instrument = globalOptions.instrument; + + if ({}.toString.call(instrument) === '[object Object]') { + instrument = objectMerge(instrumentDefaults, instrument); + } else if (instrument !== false) { + instrument = instrumentDefaults; + } + + globalOptions.instrument = instrument; + tracekit.collectWindowErrors = !!globalOptions.collectWindowErrors; // return for chaining + + return self; + }, + + /* + * Installs a global window.onerror error handler + * to capture and report uncaught exceptions. + * At this point, install() is required to be called due + * to the way TraceKit is set up. + * + * @return {Raven} + */ + install: function install() { + var self = this; + + if (self.isSetup() && !self._isRavenInstalled) { + tracekit.report.subscribe(function () { + self._handleOnErrorStackInfo.apply(self, arguments); + }); + + self._patchFunctionToString(); + + if (self._globalOptions.instrument && self._globalOptions.instrument.tryCatch) { + self._instrumentTryCatch(); + } + + if (self._globalOptions.autoBreadcrumbs) self._instrumentBreadcrumbs(); // Install all of the plugins + + self._drainPlugins(); + + self._isRavenInstalled = true; + } + + Error.stackTraceLimit = self._globalOptions.stackTraceLimit; + return this; + }, + + /* + * Set the DSN (can be called multiple time unlike config) + * + * @param {string} dsn The public Sentry DSN + */ + setDSN: function setDSN(dsn) { + var self = this, + uri = self._parseDSN(dsn), + lastSlash = uri.path.lastIndexOf('/'), + path = uri.path.substr(1, lastSlash); + + self._dsn = dsn; + self._globalKey = uri.user; + self._globalSecret = uri.pass && uri.pass.substr(1); + self._globalProject = uri.path.substr(lastSlash + 1); + self._globalServer = self._getGlobalServer(uri); + self._globalEndpoint = self._globalServer + '/' + path + 'api/' + self._globalProject + '/store/'; // Reset backoff state since we may be pointing at a + // new project/server + + this._resetBackoff(); + }, + + /* + * Wrap code within a context so Raven can capture errors + * reliably across domains that is executed immediately. + * + * @param {object} options A specific set of options for this context [optional] + * @param {function} func The callback to be immediately executed within the context + * @param {array} args An array of arguments to be called with the callback [optional] + */ + context: function context(options, func, args) { + if (isFunction(options)) { + args = func || []; + func = options; + options = undefined; + } + + return this.wrap(options, func).apply(this, args); + }, + + /* + * Wrap code within a context and returns back a new function to be executed + * + * @param {object} options A specific set of options for this context [optional] + * @param {function} func The function to be wrapped in a new context + * @param {function} func A function to call before the try/catch wrapper [optional, private] + * @return {function} The newly wrapped functions with a context + */ + wrap: function wrap(options, func, _before) { + var self = this; // 1 argument has been passed, and it's not a function + // so just return it + + if (isUndefined(func) && !isFunction(options)) { + return options; + } // options is optional + + + if (isFunction(options)) { + func = options; + options = undefined; + } // At this point, we've passed along 2 arguments, and the second one + // is not a function either, so we'll just return the second argument. + + + if (!isFunction(func)) { + return func; + } // We don't wanna wrap it twice! + + + try { + if (func.__raven__) { + return func; + } // If this has already been wrapped in the past, return that + + + if (func.__raven_wrapper__) { + return func.__raven_wrapper__; + } + } catch (e) { + // Just accessing custom props in some Selenium environments + // can cause a "Permission denied" exception (see raven-js#495). + // Bail on wrapping and return the function as-is (defers to window.onerror). + return func; + } + + function wrapped() { + var args = [], + i = arguments.length, + deep = !options || options && options.deep !== false; + + if (_before && isFunction(_before)) { + _before.apply(this, arguments); + } // Recursively wrap all of a function's arguments that are + // functions themselves. + + + while (i--) { + args[i] = deep ? self.wrap(options, arguments[i]) : arguments[i]; + } + + try { + // Attempt to invoke user-land function + // NOTE: If you are a Sentry user, and you are seeing this stack frame, it + // means Raven caught an error invoking your application code. This is + // expected behavior and NOT indicative of a bug with Raven.js. + return func.apply(this, args); + } catch (e) { + self._ignoreNextOnError(); + + self.captureException(e, options); + throw e; + } + } // copy over properties of the old function + + + for (var property in func) { + if (hasKey(func, property)) { + wrapped[property] = func[property]; + } + } + + wrapped.prototype = func.prototype; + func.__raven_wrapper__ = wrapped; // Signal that this function has been wrapped/filled already + // for both debugging and to prevent it to being wrapped/filled twice + + wrapped.__raven__ = true; + wrapped.__orig__ = func; + return wrapped; + }, + + /* + * Uninstalls the global error handler. + * + * @return {Raven} + */ + uninstall: function uninstall() { + tracekit.report.uninstall(); + + this._unpatchFunctionToString(); + + this._restoreBuiltIns(); + + this._restoreConsole(); + + Error.stackTraceLimit = this._originalErrorStackTraceLimit; + this._isRavenInstalled = false; + return this; + }, + + /* + * Manually capture an exception and send it over to Sentry + * + * @param {error} ex An exception to be logged + * @param {object} options A specific set of options for this error [optional] + * @return {Raven} + */ + captureException: function captureException(ex, options) { + options = objectMerge({ + trimHeadFrames: 0 + }, options ? options : {}); // Cases for sending ex as a message, rather than an exception + + var isNotError = !isError(ex); + var isNotErrorEvent = !isErrorEvent(ex); + var isErrorEventWithoutError = isErrorEvent(ex) && !ex.error; + + if (isNotError && isNotErrorEvent || isErrorEventWithoutError) { + return this.captureMessage(ex, objectMerge(options, { + stacktrace: true, + // if we fall back to captureMessage, default to attempting a new trace + trimHeadFrames: options.trimHeadFrames + 1 + })); + } // Get actual Error from ErrorEvent + + + if (isErrorEvent(ex)) ex = ex.error; // Store the raw exception object for potential debugging and introspection + + this._lastCapturedException = ex; // TraceKit.report will re-raise any exception passed to it, + // which means you have to wrap it in try/catch. Instead, we + // can wrap it here and only re-raise if TraceKit.report + // raises an exception different from the one we asked to + // report on. + + try { + var stack = tracekit.computeStackTrace(ex); + + this._handleStackInfo(stack, options); + } catch (ex1) { + if (ex !== ex1) { + throw ex1; + } + } + + return this; + }, + + /* + * Manually send a message to Sentry + * + * @param {string} msg A plain message to be captured in Sentry + * @param {object} options A specific set of options for this message [optional] + * @return {Raven} + */ + captureMessage: function captureMessage(msg, options) { + // config() automagically converts ignoreErrors from a list to a RegExp so we need to test for an + // early call; we'll error on the side of logging anything called before configuration since it's + // probably something you should see: + if (!!this._globalOptions.ignoreErrors.test && this._globalOptions.ignoreErrors.test(msg)) { + return; + } + + options = options || {}; + var data = objectMerge({ + message: msg + '' // Make sure it's actually a string + + }, options); + var ex; // Generate a "synthetic" stack trace from this point. + // NOTE: If you are a Sentry user, and you are seeing this stack frame, it is NOT indicative + // of a bug with Raven.js. Sentry generates synthetic traces either by configuration, + // or if it catches a thrown object without a "stack" property. + + try { + throw new Error(msg); + } catch (ex1) { + ex = ex1; + } // null exception name so `Error` isn't prefixed to msg + + + ex.name = null; + var stack = tracekit.computeStackTrace(ex); // stack[0] is `throw new Error(msg)` call itself, we are interested in the frame that was just before that, stack[1] + + var initialCall = isArray(stack.stack) && stack.stack[1]; + var fileurl = initialCall && initialCall.url || ''; + + if (!!this._globalOptions.ignoreUrls.test && this._globalOptions.ignoreUrls.test(fileurl)) { + return; + } + + if (!!this._globalOptions.whitelistUrls.test && !this._globalOptions.whitelistUrls.test(fileurl)) { + return; + } + + if (this._globalOptions.stacktrace || options && options.stacktrace) { + options = objectMerge({ + // fingerprint on msg, not stack trace (legacy behavior, could be + // revisited) + fingerprint: msg, + // since we know this is a synthetic trace, the top N-most frames + // MUST be from Raven.js, so mark them as in_app later by setting + // trimHeadFrames + trimHeadFrames: (options.trimHeadFrames || 0) + 1 + }, options); + + var frames = this._prepareFrames(stack, options); + + data.stacktrace = { + // Sentry expects frames oldest to newest + frames: frames.reverse() + }; + } // Fire away! + + + this._send(data); + + return this; + }, + captureBreadcrumb: function captureBreadcrumb(obj) { + var crumb = objectMerge({ + timestamp: now() / 1000 + }, obj); + + if (isFunction(this._globalOptions.breadcrumbCallback)) { + var result = this._globalOptions.breadcrumbCallback(crumb); + + if (isObject(result) && !isEmptyObject(result)) { + crumb = result; + } else if (result === false) { + return this; + } + } + + this._breadcrumbs.push(crumb); + + if (this._breadcrumbs.length > this._globalOptions.maxBreadcrumbs) { + this._breadcrumbs.shift(); + } + + return this; + }, + addPlugin: function addPlugin(plugin + /*arg1, arg2, ... argN*/ + ) { + var pluginArgs = [].slice.call(arguments, 1); + + this._plugins.push([plugin, pluginArgs]); + + if (this._isRavenInstalled) { + this._drainPlugins(); + } + + return this; + }, + + /* + * Set/clear a user to be sent along with the payload. + * + * @param {object} user An object representing user data [optional] + * @return {Raven} + */ + setUserContext: function setUserContext(user) { + // Intentionally do not merge here since that's an unexpected behavior. + this._globalContext.user = user; + return this; + }, + + /* + * Merge extra attributes to be sent along with the payload. + * + * @param {object} extra An object representing extra data [optional] + * @return {Raven} + */ + setExtraContext: function setExtraContext(extra) { + this._mergeContext('extra', extra); + + return this; + }, + + /* + * Merge tags to be sent along with the payload. + * + * @param {object} tags An object representing tags [optional] + * @return {Raven} + */ + setTagsContext: function setTagsContext(tags) { + this._mergeContext('tags', tags); + + return this; + }, + + /* + * Clear all of the context. + * + * @return {Raven} + */ + clearContext: function clearContext() { + this._globalContext = {}; + return this; + }, + + /* + * Get a copy of the current context. This cannot be mutated. + * + * @return {object} copy of context + */ + getContext: function getContext() { + // lol javascript + return JSON.parse(stringify_1(this._globalContext)); + }, + + /* + * Set environment of application + * + * @param {string} environment Typically something like 'production'. + * @return {Raven} + */ + setEnvironment: function setEnvironment(environment) { + this._globalOptions.environment = environment; + return this; + }, + + /* + * Set release version of application + * + * @param {string} release Typically something like a git SHA to identify version + * @return {Raven} + */ + setRelease: function setRelease(release) { + this._globalOptions.release = release; + return this; + }, + + /* + * Set the dataCallback option + * + * @param {function} callback The callback to run which allows the + * data blob to be mutated before sending + * @return {Raven} + */ + setDataCallback: function setDataCallback(callback) { + var original = this._globalOptions.dataCallback; + this._globalOptions.dataCallback = keepOriginalCallback(original, callback); + return this; + }, + + /* + * Set the breadcrumbCallback option + * + * @param {function} callback The callback to run which allows filtering + * or mutating breadcrumbs + * @return {Raven} + */ + setBreadcrumbCallback: function setBreadcrumbCallback(callback) { + var original = this._globalOptions.breadcrumbCallback; + this._globalOptions.breadcrumbCallback = keepOriginalCallback(original, callback); + return this; + }, + + /* + * Set the shouldSendCallback option + * + * @param {function} callback The callback to run which allows + * introspecting the blob before sending + * @return {Raven} + */ + setShouldSendCallback: function setShouldSendCallback(callback) { + var original = this._globalOptions.shouldSendCallback; + this._globalOptions.shouldSendCallback = keepOriginalCallback(original, callback); + return this; + }, + + /** + * Override the default HTTP transport mechanism that transmits data + * to the Sentry server. + * + * @param {function} transport Function invoked instead of the default + * `makeRequest` handler. + * + * @return {Raven} + */ + setTransport: function setTransport(transport) { + this._globalOptions.transport = transport; + return this; + }, + + /* + * Get the latest raw exception that was captured by Raven. + * + * @return {error} + */ + lastException: function lastException() { + return this._lastCapturedException; + }, + + /* + * Get the last event id + * + * @return {string} + */ + lastEventId: function lastEventId() { + return this._lastEventId; + }, + + /* + * Determine if Raven is setup and ready to go. + * + * @return {boolean} + */ + isSetup: function isSetup() { + if (!this._hasJSON) return false; // needs JSON support + + if (!this._globalServer) { + if (!this.ravenNotConfiguredError) { + this.ravenNotConfiguredError = true; + + this._logDebug('error', 'Error: Raven has not been configured.'); + } + + return false; + } + + return true; + }, + afterLoad: function afterLoad() { + // TODO: remove window dependence? + // Attempt to initialize Raven on load + var RavenConfig = _window$1.RavenConfig; + + if (RavenConfig) { + this.config(RavenConfig.dsn, RavenConfig.config).install(); + } + }, + showReportDialog: function showReportDialog(options) { + if (!_document // doesn't work without a document (React native) + ) return; + options = options || {}; + var lastEventId = options.eventId || this.lastEventId(); + + if (!lastEventId) { + throw new configError('Missing eventId'); + } + + var dsn = options.dsn || this._dsn; + + if (!dsn) { + throw new configError('Missing DSN'); + } + + var encode = encodeURIComponent; + var qs = ''; + qs += '?eventId=' + encode(lastEventId); + qs += '&dsn=' + encode(dsn); + var user = options.user || this._globalContext.user; + + if (user) { + if (user.name) qs += '&name=' + encode(user.name); + if (user.email) qs += '&email=' + encode(user.email); + } + + var globalServer = this._getGlobalServer(this._parseDSN(dsn)); + + var script = _document.createElement('script'); + + script.async = true; + script.src = globalServer + '/api/embed/error-page/' + qs; + + (_document.head || _document.body).appendChild(script); + }, + + /**** Private functions ****/ + _ignoreNextOnError: function _ignoreNextOnError() { + var self = this; + this._ignoreOnError += 1; + setTimeout(function () { + // onerror should trigger before setTimeout + self._ignoreOnError -= 1; + }); + }, + _triggerEvent: function _triggerEvent(eventType, options) { + // NOTE: `event` is a native browser thing, so let's avoid conflicting wiht it + var evt, key; + if (!this._hasDocument) return; + options = options || {}; + eventType = 'raven' + eventType.substr(0, 1).toUpperCase() + eventType.substr(1); + + if (_document.createEvent) { + evt = _document.createEvent('HTMLEvents'); + evt.initEvent(eventType, true, true); + } else { + evt = _document.createEventObject(); + evt.eventType = eventType; + } + + for (key in options) { + if (hasKey(options, key)) { + evt[key] = options[key]; + } + } + + if (_document.createEvent) { + // IE9 if standards + _document.dispatchEvent(evt); + } else { + // IE8 regardless of Quirks or Standards + // IE9 if quirks + try { + _document.fireEvent('on' + evt.eventType.toLowerCase(), evt); + } catch (e) {// Do nothing + } + } + }, + + /** + * Wraps addEventListener to capture UI breadcrumbs + * @param evtName the event name (e.g. "click") + * @returns {Function} + * @private + */ + _breadcrumbEventHandler: function _breadcrumbEventHandler(evtName) { + var self = this; + return function (evt) { + // reset keypress timeout; e.g. triggering a 'click' after + // a 'keypress' will reset the keypress debounce so that a new + // set of keypresses can be recorded + self._keypressTimeout = null; // It's possible this handler might trigger multiple times for the same + // event (e.g. event propagation through node ancestors). Ignore if we've + // already captured the event. + + if (self._lastCapturedEvent === evt) return; + self._lastCapturedEvent = evt; // try/catch both: + // - accessing evt.target (see getsentry/raven-js#838, #768) + // - `htmlTreeAsString` because it's complex, and just accessing the DOM incorrectly + // can throw an exception in some circumstances. + + var target; + + try { + target = htmlTreeAsString(evt.target); + } catch (e) { + target = ''; + } + + self.captureBreadcrumb({ + category: 'ui.' + evtName, + // e.g. ui.click, ui.input + message: target + }); + }; + }, + + /** + * Wraps addEventListener to capture keypress UI events + * @returns {Function} + * @private + */ + _keypressEventHandler: function _keypressEventHandler() { + var self = this, + debounceDuration = 1000; // milliseconds + // TODO: if somehow user switches keypress target before + // debounce timeout is triggered, we will only capture + // a single breadcrumb from the FIRST target (acceptable?) + + return function (evt) { + var target; + + try { + target = evt.target; + } catch (e) { + // just accessing event properties can throw an exception in some rare circumstances + // see: https://github.com/getsentry/raven-js/issues/838 + return; + } + + var tagName = target && target.tagName; // only consider keypress events on actual input elements + // this will disregard keypresses targeting body (e.g. tabbing + // through elements, hotkeys, etc) + + if (!tagName || tagName !== 'INPUT' && tagName !== 'TEXTAREA' && !target.isContentEditable) return; // record first keypress in a series, but ignore subsequent + // keypresses until debounce clears + + var timeout = self._keypressTimeout; + + if (!timeout) { + self._breadcrumbEventHandler('input')(evt); + } + + clearTimeout(timeout); + self._keypressTimeout = setTimeout(function () { + self._keypressTimeout = null; + }, debounceDuration); + }; + }, + + /** + * Captures a breadcrumb of type "navigation", normalizing input URLs + * @param to the originating URL + * @param from the target URL + * @private + */ + _captureUrlChange: function _captureUrlChange(from, to) { + var parsedLoc = parseUrl(this._location.href); + var parsedTo = parseUrl(to); + var parsedFrom = parseUrl(from); // because onpopstate only tells you the "new" (to) value of location.href, and + // not the previous (from) value, we need to track the value of the current URL + // state ourselves + + this._lastHref = to; // Use only the path component of the URL if the URL matches the current + // document (almost all the time when using pushState) + + if (parsedLoc.protocol === parsedTo.protocol && parsedLoc.host === parsedTo.host) to = parsedTo.relative; + if (parsedLoc.protocol === parsedFrom.protocol && parsedLoc.host === parsedFrom.host) from = parsedFrom.relative; + this.captureBreadcrumb({ + category: 'navigation', + data: { + to: to, + from: from + } + }); + }, + _patchFunctionToString: function _patchFunctionToString() { + var self = this; + self._originalFunctionToString = Function.prototype.toString; // eslint-disable-next-line no-extend-native + + Function.prototype.toString = function () { + if (typeof this === 'function' && this.__raven__) { + return self._originalFunctionToString.apply(this.__orig__, arguments); + } + + return self._originalFunctionToString.apply(this, arguments); + }; + }, + _unpatchFunctionToString: function _unpatchFunctionToString() { + if (this._originalFunctionToString) { + // eslint-disable-next-line no-extend-native + Function.prototype.toString = this._originalFunctionToString; + } + }, + + /** + * Wrap timer functions and event targets to catch errors and provide + * better metadata. + */ + _instrumentTryCatch: function _instrumentTryCatch() { + var self = this; + var wrappedBuiltIns = self._wrappedBuiltIns; + + function wrapTimeFn(orig) { + return function (fn, t) { + // preserve arity + // Make a copy of the arguments to prevent deoptimization + // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments + var args = new Array(arguments.length); + + for (var i = 0; i < args.length; ++i) { + args[i] = arguments[i]; + } + + var originalCallback = args[0]; + + if (isFunction(originalCallback)) { + args[0] = self.wrap(originalCallback); + } // IE < 9 doesn't support .call/.apply on setInterval/setTimeout, but it + // also supports only two arguments and doesn't care what this is, so we + // can just call the original function directly. + + + if (orig.apply) { + return orig.apply(this, args); + } else { + return orig(args[0], args[1]); + } + }; + } + + var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; + + function wrapEventTarget(global) { + var proto = _window$1[global] && _window$1[global].prototype; + + if (proto && proto.hasOwnProperty && proto.hasOwnProperty('addEventListener')) { + fill(proto, 'addEventListener', function (orig) { + return function (evtName, fn, capture, secure) { + // preserve arity + try { + if (fn && fn.handleEvent) { + fn.handleEvent = self.wrap(fn.handleEvent); + } + } catch (err) {} // can sometimes get 'Permission denied to access property "handle Event' + // More breadcrumb DOM capture ... done here and not in `_instrumentBreadcrumbs` + // so that we don't have more than one wrapper function + + + var before, clickHandler, keypressHandler; + + if (autoBreadcrumbs && autoBreadcrumbs.dom && (global === 'EventTarget' || global === 'Node')) { + // NOTE: generating multiple handlers per addEventListener invocation, should + // revisit and verify we can just use one (almost certainly) + clickHandler = self._breadcrumbEventHandler('click'); + keypressHandler = self._keypressEventHandler(); + + before = function before(evt) { + // need to intercept every DOM event in `before` argument, in case that + // same wrapped method is re-used for different events (e.g. mousemove THEN click) + // see #724 + if (!evt) return; + var eventType; + + try { + eventType = evt.type; + } catch (e) { + // just accessing event properties can throw an exception in some rare circumstances + // see: https://github.com/getsentry/raven-js/issues/838 + return; + } + + if (eventType === 'click') return clickHandler(evt);else if (eventType === 'keypress') return keypressHandler(evt); + }; + } + + return orig.call(this, evtName, self.wrap(fn, undefined, before), capture, secure); + }; + }, wrappedBuiltIns); + fill(proto, 'removeEventListener', function (orig) { + return function (evt, fn, capture, secure) { + try { + fn = fn && (fn.__raven_wrapper__ ? fn.__raven_wrapper__ : fn); + } catch (e) {// ignore, accessing __raven_wrapper__ will throw in some Selenium environments + } + + return orig.call(this, evt, fn, capture, secure); + }; + }, wrappedBuiltIns); + } + } + + fill(_window$1, 'setTimeout', wrapTimeFn, wrappedBuiltIns); + fill(_window$1, 'setInterval', wrapTimeFn, wrappedBuiltIns); + + if (_window$1.requestAnimationFrame) { + fill(_window$1, 'requestAnimationFrame', function (orig) { + return function (cb) { + return orig(self.wrap(cb)); + }; + }, wrappedBuiltIns); + } // event targets borrowed from bugsnag-js: + // https://github.com/bugsnag/bugsnag-js/blob/master/src/bugsnag.js#L666 + + + var eventTargets = ['EventTarget', 'Window', 'Node', 'ApplicationCache', 'AudioTrackList', 'ChannelMergerNode', 'CryptoOperation', 'EventSource', 'FileReader', 'HTMLUnknownElement', 'IDBDatabase', 'IDBRequest', 'IDBTransaction', 'KeyOperation', 'MediaController', 'MessagePort', 'ModalWindow', 'Notification', 'SVGElementInstance', 'Screen', 'TextTrack', 'TextTrackCue', 'TextTrackList', 'WebSocket', 'WebSocketWorker', 'Worker', 'XMLHttpRequest', 'XMLHttpRequestEventTarget', 'XMLHttpRequestUpload']; + + for (var i = 0; i < eventTargets.length; i++) { + wrapEventTarget(eventTargets[i]); + } + }, + + /** + * Instrument browser built-ins w/ breadcrumb capturing + * - XMLHttpRequests + * - DOM interactions (click/typing) + * - window.location changes + * - console + * + * Can be disabled or individually configured via the `autoBreadcrumbs` config option + */ + _instrumentBreadcrumbs: function _instrumentBreadcrumbs() { + var self = this; + var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; + var wrappedBuiltIns = self._wrappedBuiltIns; + + function wrapProp(prop, xhr) { + if (prop in xhr && isFunction(xhr[prop])) { + fill(xhr, prop, function (orig) { + return self.wrap(orig); + }); // intentionally don't track filled methods on XHR instances + } + } + + if (autoBreadcrumbs.xhr && 'XMLHttpRequest' in _window$1) { + var xhrproto = XMLHttpRequest.prototype; + fill(xhrproto, 'open', function (origOpen) { + return function (method, url) { + // preserve arity + // if Sentry key appears in URL, don't capture + if (isString(url) && url.indexOf(self._globalKey) === -1) { + this.__raven_xhr = { + method: method, + url: url, + status_code: null + }; + } + + return origOpen.apply(this, arguments); + }; + }, wrappedBuiltIns); + fill(xhrproto, 'send', function (origSend) { + return function () { + // preserve arity + var xhr = this; + + function onreadystatechangeHandler() { + if (xhr.__raven_xhr && xhr.readyState === 4) { + try { + // touching statusCode in some platforms throws + // an exception + xhr.__raven_xhr.status_code = xhr.status; + } catch (e) { + /* do nothing */ + } + + self.captureBreadcrumb({ + type: 'http', + category: 'xhr', + data: xhr.__raven_xhr + }); + } + } + + var props = ['onload', 'onerror', 'onprogress']; + + for (var j = 0; j < props.length; j++) { + wrapProp(props[j], xhr); + } + + if ('onreadystatechange' in xhr && isFunction(xhr.onreadystatechange)) { + fill(xhr, 'onreadystatechange', function (orig) { + return self.wrap(orig, undefined, onreadystatechangeHandler); + } + /* intentionally don't track this instrumentation */ + ); + } else { + // if onreadystatechange wasn't actually set by the page on this xhr, we + // are free to set our own and capture the breadcrumb + xhr.onreadystatechange = onreadystatechangeHandler; + } + + return origSend.apply(this, arguments); + }; + }, wrappedBuiltIns); + } + + if (autoBreadcrumbs.xhr && supportsFetch()) { + fill(_window$1, 'fetch', function (origFetch) { + return function () { + // preserve arity + // Make a copy of the arguments to prevent deoptimization + // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments + var args = new Array(arguments.length); + + for (var i = 0; i < args.length; ++i) { + args[i] = arguments[i]; + } + + var fetchInput = args[0]; + var method = 'GET'; + var url; + + if (typeof fetchInput === 'string') { + url = fetchInput; + } else if ('Request' in _window$1 && fetchInput instanceof _window$1.Request) { + url = fetchInput.url; + + if (fetchInput.method) { + method = fetchInput.method; + } + } else { + url = '' + fetchInput; + } // if Sentry key appears in URL, don't capture, as it's our own request + + + if (url.indexOf(self._globalKey) !== -1) { + return origFetch.apply(this, args); + } + + if (args[1] && args[1].method) { + method = args[1].method; + } + + var fetchData = { + method: method, + url: url, + status_code: null + }; + return origFetch.apply(this, args).then(function (response) { + fetchData.status_code = response.status; + self.captureBreadcrumb({ + type: 'http', + category: 'fetch', + data: fetchData + }); + return response; + }); + }; + }, wrappedBuiltIns); + } // Capture breadcrumbs from any click that is unhandled / bubbled up all the way + // to the document. Do this before we instrument addEventListener. + + + if (autoBreadcrumbs.dom && this._hasDocument) { + if (_document.addEventListener) { + _document.addEventListener('click', self._breadcrumbEventHandler('click'), false); + + _document.addEventListener('keypress', self._keypressEventHandler(), false); + } else { + // IE8 Compatibility + _document.attachEvent('onclick', self._breadcrumbEventHandler('click')); + + _document.attachEvent('onkeypress', self._keypressEventHandler()); + } + } // record navigation (URL) changes + // NOTE: in Chrome App environment, touching history.pushState, *even inside + // a try/catch block*, will cause Chrome to output an error to console.error + // borrowed from: https://github.com/angular/angular.js/pull/13945/files + + + var chrome = _window$1.chrome; + var isChromePackagedApp = chrome && chrome.app && chrome.app.runtime; + var hasPushAndReplaceState = !isChromePackagedApp && _window$1.history && history.pushState && history.replaceState; + + if (autoBreadcrumbs.location && hasPushAndReplaceState) { + // TODO: remove onpopstate handler on uninstall() + var oldOnPopState = _window$1.onpopstate; + + _window$1.onpopstate = function () { + var currentHref = self._location.href; + + self._captureUrlChange(self._lastHref, currentHref); + + if (oldOnPopState) { + return oldOnPopState.apply(this, arguments); + } + }; + + var historyReplacementFunction = function historyReplacementFunction(origHistFunction) { + // note history.pushState.length is 0; intentionally not declaring + // params to preserve 0 arity + return function () + /* state, title, url */ + { + var url = arguments.length > 2 ? arguments[2] : undefined; // url argument is optional + + if (url) { + // coerce to string (this is what pushState does) + self._captureUrlChange(self._lastHref, url + ''); + } + + return origHistFunction.apply(this, arguments); + }; + }; + + fill(history, 'pushState', historyReplacementFunction, wrappedBuiltIns); + fill(history, 'replaceState', historyReplacementFunction, wrappedBuiltIns); + } + + if (autoBreadcrumbs.console && 'console' in _window$1 && console.log) { + // console + var consoleMethodCallback = function consoleMethodCallback(msg, data) { + self.captureBreadcrumb({ + message: msg, + level: data.level, + category: 'console' + }); + }; + + each(['debug', 'info', 'warn', 'error', 'log'], function (_, level) { + wrapConsoleMethod(console, level, consoleMethodCallback); + }); + } + }, + _restoreBuiltIns: function _restoreBuiltIns() { + // restore any wrapped builtins + var builtin; + + while (this._wrappedBuiltIns.length) { + builtin = this._wrappedBuiltIns.shift(); + var obj = builtin[0], + name = builtin[1], + orig = builtin[2]; + obj[name] = orig; + } + }, + _restoreConsole: function _restoreConsole() { + // eslint-disable-next-line guard-for-in + for (var method in this._originalConsoleMethods) { + this._originalConsole[method] = this._originalConsoleMethods[method]; + } + }, + _drainPlugins: function _drainPlugins() { + var self = this; // FIX ME TODO + + each(this._plugins, function (_, plugin) { + var installer = plugin[0]; + var args = plugin[1]; + installer.apply(self, [self].concat(args)); + }); + }, + _parseDSN: function _parseDSN(str) { + var m = dsnPattern.exec(str), + dsn = {}, + i = 7; + + try { + while (i--) { + dsn[dsnKeys[i]] = m[i] || ''; + } + } catch (e) { + throw new configError('Invalid DSN: ' + str); + } + + if (dsn.pass && !this._globalOptions.allowSecretKey) { + throw new configError('Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key'); + } + + return dsn; + }, + _getGlobalServer: function _getGlobalServer(uri) { + // assemble the endpoint from the uri pieces + var globalServer = '//' + uri.host + (uri.port ? ':' + uri.port : ''); + + if (uri.protocol) { + globalServer = uri.protocol + ':' + globalServer; + } + + return globalServer; + }, + _handleOnErrorStackInfo: function _handleOnErrorStackInfo() { + // if we are intentionally ignoring errors via onerror, bail out + if (!this._ignoreOnError) { + this._handleStackInfo.apply(this, arguments); + } + }, + _handleStackInfo: function _handleStackInfo(stackInfo, options) { + var frames = this._prepareFrames(stackInfo, options); + + this._triggerEvent('handle', { + stackInfo: stackInfo, + options: options + }); + + this._processException(stackInfo.name, stackInfo.message, stackInfo.url, stackInfo.lineno, frames, options); + }, + _prepareFrames: function _prepareFrames(stackInfo, options) { + var self = this; + var frames = []; + + if (stackInfo.stack && stackInfo.stack.length) { + each(stackInfo.stack, function (i, stack) { + var frame = self._normalizeFrame(stack, stackInfo.url); + + if (frame) { + frames.push(frame); + } + }); // e.g. frames captured via captureMessage throw + + if (options && options.trimHeadFrames) { + for (var j = 0; j < options.trimHeadFrames && j < frames.length; j++) { + frames[j].in_app = false; + } + } + } + + frames = frames.slice(0, this._globalOptions.stackTraceLimit); + return frames; + }, + _normalizeFrame: function _normalizeFrame(frame, stackInfoUrl) { + // normalize the frames data + var normalized = { + filename: frame.url, + lineno: frame.line, + colno: frame.column, + function: frame.func || '?' + }; // Case when we don't have any information about the error + // E.g. throwing a string or raw object, instead of an `Error` in Firefox + // Generating synthetic error doesn't add any value here + // + // We should probably somehow let a user know that they should fix their code + + if (!frame.url) { + normalized.filename = stackInfoUrl; // fallback to whole stacks url from onerror handler + } + + normalized.in_app = !( // determine if an exception came from outside of our app + // first we check the global includePaths list. + !!this._globalOptions.includePaths.test && !this._globalOptions.includePaths.test(normalized.filename) || // Now we check for fun, if the function name is Raven or TraceKit + /(Raven|TraceKit)\./.test(normalized['function']) || // finally, we do a last ditch effort and check for raven.min.js + /raven\.(min\.)?js$/.test(normalized.filename)); + return normalized; + }, + _processException: function _processException(type, message, fileurl, lineno, frames, options) { + var prefixedMessage = (type ? type + ': ' : '') + (message || ''); + + if (!!this._globalOptions.ignoreErrors.test && (this._globalOptions.ignoreErrors.test(message) || this._globalOptions.ignoreErrors.test(prefixedMessage))) { + return; + } + + var stacktrace; + + if (frames && frames.length) { + fileurl = frames[0].filename || fileurl; // Sentry expects frames oldest to newest + // and JS sends them as newest to oldest + + frames.reverse(); + stacktrace = { + frames: frames + }; + } else if (fileurl) { + stacktrace = { + frames: [{ + filename: fileurl, + lineno: lineno, + in_app: true + }] + }; + } + + if (!!this._globalOptions.ignoreUrls.test && this._globalOptions.ignoreUrls.test(fileurl)) { + return; + } + + if (!!this._globalOptions.whitelistUrls.test && !this._globalOptions.whitelistUrls.test(fileurl)) { + return; + } + + var data = objectMerge({ + // sentry.interfaces.Exception + exception: { + values: [{ + type: type, + value: message, + stacktrace: stacktrace + }] + }, + culprit: fileurl + }, options); // Fire away! + + this._send(data); + }, + _trimPacket: function _trimPacket(data) { + // For now, we only want to truncate the two different messages + // but this could/should be expanded to just trim everything + var max = this._globalOptions.maxMessageLength; + + if (data.message) { + data.message = truncate(data.message, max); + } + + if (data.exception) { + var exception = data.exception.values[0]; + exception.value = truncate(exception.value, max); + } + + var request = data.request; + + if (request) { + if (request.url) { + request.url = truncate(request.url, this._globalOptions.maxUrlLength); + } + + if (request.Referer) { + request.Referer = truncate(request.Referer, this._globalOptions.maxUrlLength); + } + } + + if (data.breadcrumbs && data.breadcrumbs.values) this._trimBreadcrumbs(data.breadcrumbs); + return data; + }, + + /** + * Truncate breadcrumb values (right now just URLs) + */ + _trimBreadcrumbs: function _trimBreadcrumbs(breadcrumbs) { + // known breadcrumb properties with urls + // TODO: also consider arbitrary prop values that start with (https?)?:// + var urlProps = ['to', 'from', 'url'], + urlProp, + crumb, + data; + + for (var i = 0; i < breadcrumbs.values.length; ++i) { + crumb = breadcrumbs.values[i]; + if (!crumb.hasOwnProperty('data') || !isObject(crumb.data) || objectFrozen(crumb.data)) continue; + data = objectMerge({}, crumb.data); + + for (var j = 0; j < urlProps.length; ++j) { + urlProp = urlProps[j]; + + if (data.hasOwnProperty(urlProp) && data[urlProp]) { + data[urlProp] = truncate(data[urlProp], this._globalOptions.maxUrlLength); + } + } + + breadcrumbs.values[i].data = data; + } + }, + _getHttpData: function _getHttpData() { + if (!this._hasNavigator && !this._hasDocument) return; + var httpData = {}; + + if (this._hasNavigator && _navigator.userAgent) { + httpData.headers = { + 'User-Agent': navigator.userAgent + }; + } // Check in `window` instead of `document`, as we may be in ServiceWorker environment + + + if (_window$1.location && _window$1.location.href) { + httpData.url = _window$1.location.href; + } + + if (this._hasDocument && _document.referrer) { + if (!httpData.headers) httpData.headers = {}; + httpData.headers.Referer = _document.referrer; + } + + return httpData; + }, + _resetBackoff: function _resetBackoff() { + this._backoffDuration = 0; + this._backoffStart = null; + }, + _shouldBackoff: function _shouldBackoff() { + return this._backoffDuration && now() - this._backoffStart < this._backoffDuration; + }, + + /** + * Returns true if the in-process data payload matches the signature + * of the previously-sent data + * + * NOTE: This has to be done at this level because TraceKit can generate + * data from window.onerror WITHOUT an exception object (IE8, IE9, + * other old browsers). This can take the form of an "exception" + * data object with a single frame (derived from the onerror args). + */ + _isRepeatData: function _isRepeatData(current) { + var last = this._lastData; + if (!last || current.message !== last.message || // defined for captureMessage + current.culprit !== last.culprit // defined for captureException/onerror + ) return false; // Stacktrace interface (i.e. from captureMessage) + + if (current.stacktrace || last.stacktrace) { + return isSameStacktrace(current.stacktrace, last.stacktrace); + } else if (current.exception || last.exception) { + // Exception interface (i.e. from captureException/onerror) + return isSameException(current.exception, last.exception); + } + + return true; + }, + _setBackoffState: function _setBackoffState(request) { + // If we are already in a backoff state, don't change anything + if (this._shouldBackoff()) { + return; + } + + var status = request.status; // 400 - project_id doesn't exist or some other fatal + // 401 - invalid/revoked dsn + // 429 - too many requests + + if (!(status === 400 || status === 401 || status === 429)) return; + var retry; + + try { + // If Retry-After is not in Access-Control-Expose-Headers, most + // browsers will throw an exception trying to access it + if (supportsFetch()) { + retry = request.headers.get('Retry-After'); + } else { + retry = request.getResponseHeader('Retry-After'); + } // Retry-After is returned in seconds + + + retry = parseInt(retry, 10) * 1000; + } catch (e) { + /* eslint no-empty:0 */ + } + + this._backoffDuration = retry ? // If Sentry server returned a Retry-After value, use it + retry : // Otherwise, double the last backoff duration (starts at 1 sec) + this._backoffDuration * 2 || 1000; + this._backoffStart = now(); + }, + _send: function _send(data) { + var globalOptions = this._globalOptions; + + var baseData = { + project: this._globalProject, + logger: globalOptions.logger, + platform: 'javascript' + }, + httpData = this._getHttpData(); + + if (httpData) { + baseData.request = httpData; + } // HACK: delete `trimHeadFrames` to prevent from appearing in outbound payload + + + if (data.trimHeadFrames) delete data.trimHeadFrames; + data = objectMerge(baseData, data); // Merge in the tags and extra separately since objectMerge doesn't handle a deep merge + + data.tags = objectMerge(objectMerge({}, this._globalContext.tags), data.tags); + data.extra = objectMerge(objectMerge({}, this._globalContext.extra), data.extra); // Send along our own collected metadata with extra + + data.extra['session:duration'] = now() - this._startTime; + + if (this._breadcrumbs && this._breadcrumbs.length > 0) { + // intentionally make shallow copy so that additions + // to breadcrumbs aren't accidentally sent in this request + data.breadcrumbs = { + values: [].slice.call(this._breadcrumbs, 0) + }; + } + + if (this._globalContext.user) { + // sentry.interfaces.User + data.user = this._globalContext.user; + } // Include the environment if it's defined in globalOptions + + + if (globalOptions.environment) data.environment = globalOptions.environment; // Include the release if it's defined in globalOptions + + if (globalOptions.release) data.release = globalOptions.release; // Include server_name if it's defined in globalOptions + + if (globalOptions.serverName) data.server_name = globalOptions.serverName; // Cleanup empty properties before sending them to the server + + Object.keys(data).forEach(function (key) { + if (data[key] == null || data[key] === '' || isEmptyObject(data[key])) { + delete data[key]; + } + }); + + if (isFunction(globalOptions.dataCallback)) { + data = globalOptions.dataCallback(data) || data; + } // Why?????????? + + + if (!data || isEmptyObject(data)) { + return; + } // Check if the request should be filtered or not + + + if (isFunction(globalOptions.shouldSendCallback) && !globalOptions.shouldSendCallback(data)) { + return; + } // Backoff state: Sentry server previously responded w/ an error (e.g. 429 - too many requests), + // so drop requests until "cool-off" period has elapsed. + + + if (this._shouldBackoff()) { + this._logDebug('warn', 'Raven dropped error due to backoff: ', data); + + return; + } + + if (typeof globalOptions.sampleRate === 'number') { + if (Math.random() < globalOptions.sampleRate) { + this._sendProcessedPayload(data); + } + } else { + this._sendProcessedPayload(data); + } + }, + _getUuid: function _getUuid() { + return uuid4(); + }, + _sendProcessedPayload: function _sendProcessedPayload(data, callback) { + var self = this; + var globalOptions = this._globalOptions; + if (!this.isSetup()) return; // Try and clean up the packet before sending by truncating long values + + data = this._trimPacket(data); // ideally duplicate error testing should occur *before* dataCallback/shouldSendCallback, + // but this would require copying an un-truncated copy of the data packet, which can be + // arbitrarily deep (extra_data) -- could be worthwhile? will revisit + + if (!this._globalOptions.allowDuplicates && this._isRepeatData(data)) { + this._logDebug('warn', 'Raven dropped repeat event: ', data); + + return; + } // Send along an event_id if not explicitly passed. + // This event_id can be used to reference the error within Sentry itself. + // Set lastEventId after we know the error should actually be sent + + + this._lastEventId = data.event_id || (data.event_id = this._getUuid()); // Store outbound payload after trim + + this._lastData = data; + + this._logDebug('debug', 'Raven about to send:', data); + + var auth = { + sentry_version: '7', + sentry_client: 'raven-js/' + this.VERSION, + sentry_key: this._globalKey + }; + + if (this._globalSecret) { + auth.sentry_secret = this._globalSecret; + } + + var exception = data.exception && data.exception.values[0]; // only capture 'sentry' breadcrumb is autoBreadcrumbs is truthy + + if (this._globalOptions.autoBreadcrumbs && this._globalOptions.autoBreadcrumbs.sentry) { + this.captureBreadcrumb({ + category: 'sentry', + message: exception ? (exception.type ? exception.type + ': ' : '') + exception.value : data.message, + event_id: data.event_id, + level: data.level || 'error' // presume error unless specified + + }); + } + + var url = this._globalEndpoint; + + (globalOptions.transport || this._makeRequest).call(this, { + url: url, + auth: auth, + data: data, + options: globalOptions, + onSuccess: function success() { + self._resetBackoff(); + + self._triggerEvent('success', { + data: data, + src: url + }); + + callback && callback(); + }, + onError: function failure(error) { + self._logDebug('error', 'Raven transport failed to send: ', error); + + if (error.request) { + self._setBackoffState(error.request); + } + + self._triggerEvent('failure', { + data: data, + src: url + }); + + error = error || new Error('Raven send failed (no additional details provided)'); + callback && callback(error); + } + }); + }, + _makeRequest: function _makeRequest(opts) { + // Auth is intentionally sent as part of query string (NOT as custom HTTP header) to avoid preflight CORS requests + var url = opts.url + '?' + urlencode(opts.auth); + var evaluatedHeaders = null; + var evaluatedFetchParameters = {}; + + if (opts.options.headers) { + evaluatedHeaders = this._evaluateHash(opts.options.headers); + } + + if (opts.options.fetchParameters) { + evaluatedFetchParameters = this._evaluateHash(opts.options.fetchParameters); + } + + if (supportsFetch()) { + evaluatedFetchParameters.body = stringify_1(opts.data); + var defaultFetchOptions = objectMerge({}, this._fetchDefaults); + var fetchOptions = objectMerge(defaultFetchOptions, evaluatedFetchParameters); + + if (evaluatedHeaders) { + fetchOptions.headers = evaluatedHeaders; + } + + return _window$1.fetch(url, fetchOptions).then(function (response) { + if (response.ok) { + opts.onSuccess && opts.onSuccess(); + } else { + var error = new Error('Sentry error code: ' + response.status); // It's called request only to keep compatibility with XHR interface + // and not add more redundant checks in setBackoffState method + + error.request = response; + opts.onError && opts.onError(error); + } + })['catch'](function () { + opts.onError && opts.onError(new Error('Sentry error code: network unavailable')); + }); + } + + var request = _window$1.XMLHttpRequest && new _window$1.XMLHttpRequest(); + if (!request) return; // if browser doesn't support CORS (e.g. IE7), we are out of luck + + var hasCORS = 'withCredentials' in request || typeof XDomainRequest !== 'undefined'; + if (!hasCORS) return; + + if ('withCredentials' in request) { + request.onreadystatechange = function () { + if (request.readyState !== 4) { + return; + } else if (request.status === 200) { + opts.onSuccess && opts.onSuccess(); + } else if (opts.onError) { + var err = new Error('Sentry error code: ' + request.status); + err.request = request; + opts.onError(err); + } + }; + } else { + request = new XDomainRequest(); // xdomainrequest cannot go http -> https (or vice versa), + // so always use protocol relative + + url = url.replace(/^https?:/, ''); // onreadystatechange not supported by XDomainRequest + + if (opts.onSuccess) { + request.onload = opts.onSuccess; + } + + if (opts.onError) { + request.onerror = function () { + var err = new Error('Sentry error code: XDomainRequest'); + err.request = request; + opts.onError(err); + }; + } + } + + request.open('POST', url); + + if (evaluatedHeaders) { + each(evaluatedHeaders, function (key, value) { + request.setRequestHeader(key, value); + }); + } + + request.send(stringify_1(opts.data)); + }, + _evaluateHash: function _evaluateHash(hash) { + var evaluated = {}; + + for (var key in hash) { + if (hash.hasOwnProperty(key)) { + var value = hash[key]; + evaluated[key] = typeof value === 'function' ? value() : value; + } + } + + return evaluated; + }, + _logDebug: function _logDebug(level) { + if (this._originalConsoleMethods[level] && this.debug) { + // In IE<10 console methods do not have their own 'apply' method + Function.prototype.apply.call(this._originalConsoleMethods[level], this._originalConsole, [].slice.call(arguments, 1)); + } + }, + _mergeContext: function _mergeContext(key, context) { + if (isUndefined(context)) { + delete this._globalContext[key]; + } else { + this._globalContext[key] = objectMerge(this._globalContext[key] || {}, context); + } + } +}; // Deprecations + +Raven$1.prototype.setUser = Raven$1.prototype.setUserContext; +Raven$1.prototype.setReleaseContext = Raven$1.prototype.setRelease; +var raven = Raven$1; + +/** + * Enforces a single instance of the Raven client, and the + * main entry point for Raven. If you are a consumer of the + * Raven library, you SHOULD load this file (vs raven.js). + **/ +// This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) + +var _window = typeof window !== 'undefined' ? window : typeof commonjsGlobal !== 'undefined' ? commonjsGlobal : typeof self !== 'undefined' ? self : {}; + +var _Raven = _window.Raven; +var Raven = new raven(); +/* + * Allow multiple versions of Raven to be installed. + * Strip Raven from the global context and returns the instance. + * + * @return {Raven} + */ + +Raven.noConflict = function () { + _window.Raven = _Raven; + return Raven; +}; + +Raven.afterLoad(); +var singleton = Raven; + +/** + * console plugin + * + * Monkey patches console.* calls into Sentry messages with + * their appropriate log levels. (Experimental) + * + * Options: + * + * `levels`: An array of levels (methods on `console`) to report to Sentry. + * Defaults to debug, info, warn, and error. + */ + +var wrapConsoleMethod$1 = console$1.wrapMethod; + +function consolePlugin(Raven, console, pluginOptions) { + console = console || window.console || {}; + pluginOptions = pluginOptions || {}; + var logLevels = pluginOptions.levels || ['debug', 'info', 'warn', 'error']; + if ('assert' in console) logLevels.push('assert'); + + var callback = function callback(msg, data) { + Raven.captureMessage(msg, data); + }; + + var level = logLevels.pop(); + + while (level) { + wrapConsoleMethod$1(console, level, callback); + level = logLevels.pop(); + } +} + +var console$3 = consolePlugin; + +/** + * Ember.js plugin + * + * Patches event handler callbacks and ajax callbacks. + */ +function emberPlugin(Raven, Ember) { + Ember = Ember || window.Ember; // quit if Ember isn't on the page + + if (!Ember) return; + var _oldOnError = Ember.onerror; + + Ember.onerror = function EmberOnError(error) { + Raven.captureException(error); + + if (typeof _oldOnError === 'function') { + _oldOnError.call(this, error); + } + }; + + Ember.RSVP.on('error', function (reason) { + if (reason instanceof Error) { + Raven.captureException(reason, { + extra: { + context: 'Unhandled Promise error detected' + } + }); + } else { + Raven.captureMessage('Unhandled Promise error detected', { + extra: { + reason: reason + } + }); + } + }); +} + +var ember = emberPlugin; + +/** + * Vue.js 2.0 plugin + * + */ +function formatComponentName(vm) { + if (vm.$root === vm) { + return 'root instance'; + } + + var name = vm._isVue ? vm.$options.name || vm.$options._componentTag : vm.name; + return (name ? 'component <' + name + '>' : 'anonymous component') + (vm._isVue && vm.$options.__file ? ' at ' + vm.$options.__file : ''); +} + +function vuePlugin(Raven, Vue) { + Vue = Vue || window.Vue; // quit if Vue isn't on the page + + if (!Vue || !Vue.config) return; + var _oldOnError = Vue.config.errorHandler; + + Vue.config.errorHandler = function VueErrorHandler(error, vm, info) { + var metaData = {}; // vm and lifecycleHook are not always available + + if (Object.prototype.toString.call(vm) === '[object Object]') { + metaData.componentName = formatComponentName(vm); + metaData.propsData = vm.$options.propsData; + } + + if (typeof info !== 'undefined') { + metaData.lifecycleHook = info; + } + + Raven.captureException(error, { + extra: metaData + }); + + if (typeof _oldOnError === 'function') { + _oldOnError.call(this, error, vm, info); + } + }; +} + +var vue = vuePlugin; + +/* This file was generated by './scripts/generate-plugin-combinations.js'! */ + +singleton.addPlugin(console$3).addPlugin(ember).addPlugin(vue); +var console_ember_vue = {}; + +return console_ember_vue; + +}))); diff --git a/dist/console,ember,vue/raven.min.js b/dist/console,ember,vue/raven.min.js new file mode 100644 index 000000000000..7b2da3ba3064 --- /dev/null +++ b/dist/console,ember,vue/raven.min.js @@ -0,0 +1,3 @@ +/*! Raven.js 3.22.2 (1b6187b) | github.com/getsentry/raven-js */ +!function(a,b){"object"==typeof exports&&"undefined"!=typeof module?module.exports=b():"function"==typeof define&&define.amd?define(b):a.Raven=b()}(this,function(){"use strict";function a(a,b){return b={exports:{}},a(b,b.exports),b.exports}function b(a){return(b="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(a){return typeof a}:function(a){return a&&"function"==typeof Symbol&&a.constructor===Symbol&&a!==Symbol.prototype?"symbol":typeof a})(a)}function c(a){return"object"===b(a)&&null!==a}function d(a){switch({}.toString.call(a)){case"[object Error]":return!0;case"[object Exception]":return!0;case"[object DOMException]":return!0;default:return a instanceof Error}}function e(a){return l()&&"[object ErrorEvent]"==={}.toString.call(a)}function f(a){return void 0===a}function g(a){return"function"==typeof a}function h(a){return"[object Object]"===Object.prototype.toString.call(a)}function i(a){return"[object String]"===Object.prototype.toString.call(a)}function j(a){return"[object Array]"===Object.prototype.toString.call(a)}function k(a){if(!h(a))return!1;for(var b in a)if(a.hasOwnProperty(b))return!1;return!0}function l(){try{return new ErrorEvent(""),!0}catch(a){return!1}}function m(){if(!("fetch"in Q))return!1;try{return new Headers,new Request(""),new Response,!0}catch(a){return!1}}function n(a){function b(b,c){var d=a(b)||b;return c?c(d)||d:d}return b}function o(a,b){var c,d;if(f(a.length))for(c in a)s(a,c)&&b.call(null,c,a[c]);else if(d=a.length)for(c=0;c ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function y(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&i(b))for(c=b.split(/\s+/),f=0;f":"anonymous component")+(a._isVue&&a.$options.__file?" at "+a.$options.__file:"")}function N(a,b){if(b=b||window.Vue,b&&b.config){var c=b.config.errorHandler;b.config.errorHandler=function(b,d,e){var f={};"[object Object]"===Object.prototype.toString.call(d)&&(f.componentName=M(d),f.propsData=d.$options.propsData),"undefined"!=typeof e&&(f.lifecycleHook=e),a.captureException(b,{extra:f}),"function"==typeof c&&c.call(this,b,d,e)}}}var O="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{},P=Object.setPrototypeOf||function(a,b){return a.B=b,a},Q=("object"==typeof Reflect&&Reflect.construct||function(a,b,c){var d,e=[null];return e.push.apply(e,b),d=a.bind.apply(a,e),P(new d,c.prototype)},"undefined"!=typeof window?window:"undefined"!=typeof O?O:"undefined"!=typeof self?self:{}),R={isObject:c,isError:d,isErrorEvent:e,isUndefined:f,isFunction:g,isPlainObject:h,isString:i,isArray:j,isEmptyObject:k,supportsErrorEvent:l,supportsFetch:m,wrappedCallback:n,each:o,objectMerge:p,truncate:r,objectFrozen:q,hasKey:s,joinRegExp:t,urlencode:u,uuid4:w,htmlTreeAsString:x,htmlElementAsString:y,isSameException:B,isSameStacktrace:C,parseUrl:v,fill:D,safeJoin:E},S={collectWindowErrors:!0,debug:!1},T="undefined"!=typeof window?window:"undefined"!=typeof O?O:"undefined"!=typeof self?self:{},U=[].slice,V="?",W=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;S.report=function(){function a(a){f(),l.push(a)}function b(a){for(var b=l.length-1;b>=0;--b)l[b]===a&&l.splice(b,1)}function c(){g(),l=[]}function d(a,b){var c=null;if(!b||S.collectWindowErrors){for(var d in l)if(l.hasOwnProperty(d))try{l[d].apply(null,[a].concat(U.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function e(a,b,c,e,f){var g=null,i=R.isErrorEvent(f)?f.error:f,k=R.isErrorEvent(a)?a.message:a;if(o)S.computeStackTrace.augmentStackTraceWithInitialElement(o,b,c,k),h();else if(i&&R.isError(i))g=S.computeStackTrace(i),d(g,!0);else{var l,m={url:b,line:c,column:e},n=void 0;if("[object String]"==={}.toString.call(k)){var l=k.match(W);l&&(n=l[1],k=l[2])}m.func=V,g={name:n,message:k,url:F(),stack:[m]},d(g,!0)}return!!j&&j.apply(this,arguments)}function f(){k||(j=T.onerror,T.onerror=e,k=!0)}function g(){k&&(T.onerror=j,k=!1,j=void 0)}function h(){var a=o,b=m;m=null,o=null,n=null,d.apply(null,[a,!1].concat(b))}function i(a,b){var c=U.call(arguments,1);if(o){if(n===a)return;h()}var d=S.computeStackTrace(a);if(o=d,n=a,m=c,setTimeout(function(){n===a&&h()},d.incomplete?2e3:0),b!==!1)throw a}var j,k,l=[],m=null,n=null,o=null;return i.subscribe=a,i.unsubscribe=b,i.uninstall=c,i}(),S.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,d,e=/^\s*at (.*?) ?\(((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,f=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|\[native).*?|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,g=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,h=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,i=/\((\S*)(?::(\d+))(?::(\d+))\)/,j=a.stack.split("\n"),k=[],l=(/^(.*) is undefined$/.exec(a.message),0),m=j.length;l eval")>-1;o&&(b=h.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==l||c[5]||"undefined"==typeof a.columnNumber||(k[0].column=a.columnNumber+1),d={url:c[3],func:c[1]||V,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}!d.func&&d.line&&(d.func=V),k.push(d)}return k.length?{name:a.name,message:a.message,url:F(),stack:k}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=V),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,e){for(var f,g,h=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,i=[],j={},k=!1,l=c.caller;l&&!k;l=l.caller)if(l!==d&&l!==S.report){if(g={url:null,func:V,line:null,column:null},l.name?g.func=l.name:(f=h.exec(l.toString()))&&(g.func=f[1]),"undefined"==typeof g.func)try{g.func=f.input.substring(0,f.input.indexOf("{"))}catch(m){}j[""+l]?k=!0:j[""+l]=!0,i.push(g)}e&&i.splice(0,e);var n={name:a.name,message:a.message,url:F(),stack:i};return b(n,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),n}function d(b,d){var e=null;d=null==d?0:+d;try{if(e=a(b))return e}catch(f){if(S.debug)throw f}try{if(e=c(b,d+1))return e}catch(f){if(S.debug)throw f}return{name:b.name,message:b.message,url:F()}}return d.augmentStackTraceWithInitialElement=b,d.computeStackTraceFromStackProp=a,d}();var X=S,Y=a(function(a,b){function c(a,b){for(var c=0;c0){var i=c(d,this);~i?d.splice(i+1):d.push(this),~i?f.splice(i,1/0,g):f.push(g),~c(d,h)&&(h=b.call(this,g,h))}else d.push(h);return null==a?h instanceof Error?e(h):h:a.call(this,g,h)}}b=a.exports=d,b.getSerialize=f});G.prototype=new Error,G.prototype.constructor=G;var Z=G,$=function(a,b,c){var d=a[b],e=a;if(b in a){var f="warn"===b?"warning":b;a[b]=function(){var a=[].slice.call(arguments),g=R.safeJoin(a," "),h={level:f,logger:"console",extra:{arguments:a}};"assert"===b?a[0]===!1&&(g="Assertion failed: "+(R.safeJoin(a.slice(1)," ")||"console.assert"),h.extra.arguments=a.slice(1),c&&c(g,h)):c&&c(g,h),d&&Function.prototype.apply.call(d,e,a)}}},_={wrapMethod:$},aa=R.isError,ba=R.isObject,ca=R.isErrorEvent,da=R.isUndefined,ea=R.isFunction,fa=R.isString,ga=R.isArray,ha=R.isEmptyObject,ia=R.each,ja=R.objectMerge,ka=R.truncate,la=R.objectFrozen,ma=R.hasKey,na=R.joinRegExp,oa=R.urlencode,pa=R.uuid4,qa=R.htmlTreeAsString,ra=R.isSameException,sa=R.isSameStacktrace,ta=R.parseUrl,ua=R.fill,va=R.supportsFetch,wa=_.wrapMethod,xa="source protocol user pass host port path".split(" "),ya=/^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/,za="undefined"!=typeof window?window:"undefined"!=typeof O?O:"undefined"!=typeof self?self:{},Aa=za.document,Ba=za.navigator;J.prototype={VERSION:"3.22.2",debug:!1,TraceKit:X,config:function(a,b){var c=this;if(c.i)return this.C("error","Error: Raven has already been configured"),c;if(!a)return c;var d=c.m;b&&ia(b,function(a,b){"tags"===a||"extra"===a||"user"===a?c.l[a]=b:d[a]=b}),c.setDSN(a),d.ignoreErrors.push(/^Script error\.?$/),d.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/),d.ignoreErrors=na(d.ignoreErrors),d.ignoreUrls=!!d.ignoreUrls.length&&na(d.ignoreUrls),d.whitelistUrls=!!d.whitelistUrls.length&&na(d.whitelistUrls),d.includePaths=na(d.includePaths),d.maxBreadcrumbs=Math.max(0,Math.min(d.maxBreadcrumbs||100,100));var e={xhr:!0,console:!0,dom:!0,location:!0,sentry:!0},f=d.autoBreadcrumbs;"[object Object]"==={}.toString.call(f)?f=ja(e,f):f!==!1&&(f=e),d.autoBreadcrumbs=f;var g={tryCatch:!0},h=d.instrument;return"[object Object]"==={}.toString.call(h)?h=ja(g,h):h!==!1&&(h=g),d.instrument=h,X.collectWindowErrors=!!d.collectWindowErrors,c},install:function(){var a=this;return a.isSetup()&&!a.p&&(X.report.subscribe(function(){a.D.apply(a,arguments)}),a.E(),a.m.instrument&&a.m.instrument.tryCatch&&a.F(),a.m.autoBreadcrumbs&&a.G(),a.H(),a.p=!0),Error.stackTraceLimit=a.m.stackTraceLimit,this},setDSN:function(a){var b=this,c=b.I(a),d=c.path.lastIndexOf("/"),e=c.path.substr(1,d);b.J=a,b.j=c.user,b.K=c.pass&&c.pass.substr(1),b.k=c.path.substr(d+1),b.i=b.L(c),b.M=b.i+"/"+e+"api/"+b.k+"/store/",this.A()},context:function(a,b,c){return ea(a)&&(c=b||[],b=a,a=void 0),this.wrap(a,b).apply(this,c)},wrap:function(a,b,c){function d(){var d=[],f=arguments.length,g=!a||a&&a.deep!==!1;for(c&&ea(c)&&c.apply(this,arguments);f--;)d[f]=g?e.wrap(a,arguments[f]):arguments[f];try{return b.apply(this,d)}catch(h){throw e.N(),e.captureException(h,a),h}}var e=this;if(da(b)&&!ea(a))return a;if(ea(a)&&(b=a,a=void 0),!ea(b))return b;try{if(b.a)return b;if(b.O)return b.O}catch(f){return b}for(var g in b)ma(b,g)&&(d[g]=b[g]);return d.prototype=b.prototype,b.O=d,d.a=!0,d.b=b,d},uninstall:function(){return X.report.uninstall(),this.P(),this.Q(),this.R(),Error.stackTraceLimit=this.q,this.p=!1,this},captureException:function(a,b){b=ja({trimHeadFrames:0},b?b:{});var c=!aa(a),d=!ca(a),e=ca(a)&&!a.error;if(c&&d||e)return this.captureMessage(a,ja(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}));ca(a)&&(a=a.error),this.f=a;try{var f=X.computeStackTrace(a);this.S(f,b)}catch(g){if(a!==g)throw g}return this},captureMessage:function(a,b){if(!this.m.ignoreErrors.test||!this.m.ignoreErrors.test(a)){b=b||{};var c,d=ja({message:a+""},b);try{throw new Error(a)}catch(e){c=e}c.name=null;var f=X.computeStackTrace(c),g=ga(f.stack)&&f.stack[1],h=g&&g.url||"";if((!this.m.ignoreUrls.test||!this.m.ignoreUrls.test(h))&&(!this.m.whitelistUrls.test||this.m.whitelistUrls.test(h))){if(this.m.stacktrace||b&&b.stacktrace){b=ja({fingerprint:a,trimHeadFrames:(b.trimHeadFrames||0)+1},b);var i=this.T(f,b);d.stacktrace={frames:i.reverse()}}return this.U(d),this}}},captureBreadcrumb:function(a){var b=ja({timestamp:H()/1e3},a);if(ea(this.m.breadcrumbCallback)){var c=this.m.breadcrumbCallback(b);if(ba(c)&&!ha(c))b=c;else if(c===!1)return this}return this.w.push(b),this.w.length>this.m.maxBreadcrumbs&&this.w.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.t.push([a,b]),this.p&&this.H(),this},setUserContext:function(a){return this.l.user=a,this},setExtraContext:function(a){return this.V("extra",a),this},setTagsContext:function(a){return this.V("tags",a),this},clearContext:function(){return this.l={},this},getContext:function(){return JSON.parse(Y(this.l))},setEnvironment:function(a){return this.m.environment=a,this},setRelease:function(a){return this.m.release=a,this},setDataCallback:function(a){var b=this.m.dataCallback;return this.m.dataCallback=I(b,a),this},setBreadcrumbCallback:function(a){var b=this.m.breadcrumbCallback;return this.m.breadcrumbCallback=I(b,a),this},setShouldSendCallback:function(a){var b=this.m.shouldSendCallback;return this.m.shouldSendCallback=I(b,a),this},setTransport:function(a){return this.m.transport=a,this},lastException:function(){return this.f},lastEventId:function(){return this.h},isSetup:function(){return!!this.c&&(!!this.i||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.C("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=za.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(Aa){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new Z("Missing eventId");var c=a.dsn||this.J;if(!c)throw new Z("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.l.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.L(this.I(c)),h=Aa.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(Aa.head||Aa.body).appendChild(h)}},N:function(){var a=this;this.o+=1,setTimeout(function(){a.o-=1})},W:function(a,b){var c,d;if(this.d){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),Aa.createEvent?(c=Aa.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=Aa.createEventObject(),c.eventType=a);for(d in b)ma(b,d)&&(c[d]=b[d]);if(Aa.createEvent)Aa.dispatchEvent(c);else try{Aa.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},X:function(a){var b=this;return function(c){if(b.Y=null,b.x!==c){b.x=c;var d;try{d=qa(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},Z:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.Y;g||a.X("input")(c),clearTimeout(g),a.Y=setTimeout(function(){a.Y=null},b)}}},$:function(a,b){var c=ta(this.y.href),d=ta(b),e=ta(a);this.z=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},E:function(){var a=this;a._=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.a?a._.apply(this.b,arguments):a._.apply(this,arguments)}},P:function(){this._&&(Function.prototype.toString=this._)},F:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.$(b.z,c+""),a.apply(this,arguments)}};ua(history,"pushState",j,d),ua(history,"replaceState",j,d)}if(c.console&&"console"in za&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};ia(["debug","info","warn","error","log"],function(a,b){wa(console,b,k)})}},Q:function(){for(var a;this.v.length;){a=this.v.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},R:function(){for(var a in this.s)this.r[a]=this.s[a]},H:function(){var a=this;ia(this.t,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},I:function(a){var b=ya.exec(a),c={},d=7;try{for(;d--;)c[xa[d]]=b[d]||""}catch(e){throw new Z("Invalid DSN: "+a)}if(c.pass&&!this.m.allowSecretKey)throw new Z("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},L:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},D:function(){this.o||this.S.apply(this,arguments)},S:function(a,b){var c=this.T(a,b);this.W("handle",{stackInfo:a,options:b}),this.ba(a.name,a.message,a.url,a.lineno,c,b)},T:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(ia(a.stack,function(b,e){var f=c.ca(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.w,0)}),this.l.user&&(a.user=this.l.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||ha(a[b]))&&delete a[b]}),ea(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!ha(a)&&(!ea(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.ia()?void this.C("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() href parsing trick because React Native and other +// environments where DOM might not be available + + +function parseUrl$1(url) { + if (typeof url !== 'string') return {}; + var match = url.match(/^(([^:\/?#]+):)?(\/\/([^\/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?$/); // coerce to undefined values to empty string so we don't get 'undefined' + + var query = match[6] || ''; + var fragment = match[8] || ''; + return { + protocol: match[2], + host: match[4], + path: match[5], + relative: match[5] + query + fragment // everything minus origin + + }; +} + +function uuid4$1() { + var crypto = _window$3.crypto || _window$3.msCrypto; + + if (!isUndefined$1(crypto) && crypto.getRandomValues) { + // Use window.crypto API if available + // eslint-disable-next-line no-undef + var arr = new Uint16Array(8); + crypto.getRandomValues(arr); // set 4 in byte 7 + + arr[3] = arr[3] & 0xfff | 0x4000; // set 2 most significant bits of byte 9 to '10' + + arr[4] = arr[4] & 0x3fff | 0x8000; + + var pad = function pad(num) { + var v = num.toString(16); + + while (v.length < 4) { + v = '0' + v; + } + + return v; + }; + + return pad(arr[0]) + pad(arr[1]) + pad(arr[2]) + pad(arr[3]) + pad(arr[4]) + pad(arr[5]) + pad(arr[6]) + pad(arr[7]); + } else { + // http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/2117523#2117523 + return 'xxxxxxxxxxxx4xxxyxxxxxxxxxxxxxxx'.replace(/[xy]/g, function (c) { + var r = Math.random() * 16 | 0, + v = c === 'x' ? r : r & 0x3 | 0x8; + return v.toString(16); + }); + } +} +/** + * Given a child DOM element, returns a query-selector statement describing that + * and its ancestors + * e.g. [HTMLElement] => body > div > input#foo.btn[name=baz] + * @param elem + * @returns {string} + */ + + +function htmlTreeAsString$1(elem) { + /* eslint no-extra-parens:0*/ + var MAX_TRAVERSE_HEIGHT = 5, + MAX_OUTPUT_LEN = 80, + out = [], + height = 0, + len = 0, + separator = ' > ', + sepLength = separator.length, + nextStr; + + while (elem && height++ < MAX_TRAVERSE_HEIGHT) { + nextStr = htmlElementAsString(elem); // bail out if + // - nextStr is the 'html' element + // - the length of the string that would be created exceeds MAX_OUTPUT_LEN + // (ignore this limit if we are on the first iteration) + + if (nextStr === 'html' || height > 1 && len + out.length * sepLength + nextStr.length >= MAX_OUTPUT_LEN) { + break; + } + + out.push(nextStr); + len += nextStr.length; + elem = elem.parentNode; + } + + return out.reverse().join(separator); +} +/** + * Returns a simple, query-selector representation of a DOM element + * e.g. [HTMLElement] => input#foo.btn[name=baz] + * @param HTMLElement + * @returns {string} + */ + + +function htmlElementAsString(elem) { + var out = [], + className, + classes, + key, + attr, + i; + + if (!elem || !elem.tagName) { + return ''; + } + + out.push(elem.tagName.toLowerCase()); + + if (elem.id) { + out.push('#' + elem.id); + } + + className = elem.className; + + if (className && isString$1(className)) { + classes = className.split(/\s+/); + + for (i = 0; i < classes.length; i++) { + out.push('.' + classes[i]); + } + } + + var attrWhitelist = ['type', 'name', 'title', 'alt']; + + for (i = 0; i < attrWhitelist.length; i++) { + key = attrWhitelist[i]; + attr = elem.getAttribute(key); + + if (attr) { + out.push('[' + key + '="' + attr + '"]'); + } + } + + return out.join(''); +} +/** + * Returns true if either a OR b is truthy, but not both + */ + + +function isOnlyOneTruthy(a, b) { + return !!(!!a ^ !!b); +} +/** + * Returns true if both parameters are undefined + */ + + +function isBothUndefined(a, b) { + return isUndefined$1(a) && isUndefined$1(b); +} +/** + * Returns true if the two input exception interfaces have the same content + */ + + +function isSameException$1(ex1, ex2) { + if (isOnlyOneTruthy(ex1, ex2)) return false; + ex1 = ex1.values[0]; + ex2 = ex2.values[0]; + if (ex1.type !== ex2.type || ex1.value !== ex2.value) return false; // in case both stacktraces are undefined, we can't decide so default to false + + if (isBothUndefined(ex1.stacktrace, ex2.stacktrace)) return false; + return isSameStacktrace$1(ex1.stacktrace, ex2.stacktrace); +} +/** + * Returns true if the two input stack trace interfaces have the same content + */ + + +function isSameStacktrace$1(stack1, stack2) { + if (isOnlyOneTruthy(stack1, stack2)) return false; + var frames1 = stack1.frames; + var frames2 = stack2.frames; // Exit early if frame count differs + + if (frames1.length !== frames2.length) return false; // Iterate through every frame; bail out if anything differs + + var a, b; + + for (var i = 0; i < frames1.length; i++) { + a = frames1[i]; + b = frames2[i]; + if (a.filename !== b.filename || a.lineno !== b.lineno || a.colno !== b.colno || a['function'] !== b['function']) return false; + } + + return true; +} +/** + * Polyfill a method + * @param obj object e.g. `document` + * @param name method name present on object e.g. `addEventListener` + * @param replacement replacement function + * @param track {optional} record instrumentation to an array + */ + + +function fill$1(obj, name, replacement, track) { + var orig = obj[name]; + obj[name] = replacement(orig); + obj[name].__raven__ = true; + obj[name].__orig__ = orig; + + if (track) { + track.push([obj, name, orig]); + } +} +/** + * Join values in array + * @param input array of values to be joined together + * @param delimiter string to be placed in-between values + * @returns {string} + */ + + +function safeJoin(input, delimiter) { + if (!isArray$1(input)) return ''; + var output = []; + + for (var i = 0; i < input.length; i++) { + try { + output.push(String(input[i])); + } catch (e) { + output.push('[value cannot be serialized]'); + } + } + + return output.join(delimiter); +} + +var utils = { + isObject: isObject$1, + isError: isError$1, + isErrorEvent: isErrorEvent$1, + isUndefined: isUndefined$1, + isFunction: isFunction$1, + isPlainObject: isPlainObject, + isString: isString$1, + isArray: isArray$1, + isEmptyObject: isEmptyObject$1, + supportsErrorEvent: supportsErrorEvent, + supportsFetch: supportsFetch$1, + wrappedCallback: wrappedCallback, + each: each$1, + objectMerge: objectMerge$1, + truncate: truncate$1, + objectFrozen: objectFrozen$1, + hasKey: hasKey$1, + joinRegExp: joinRegExp$1, + urlencode: urlencode$1, + uuid4: uuid4$1, + htmlTreeAsString: htmlTreeAsString$1, + htmlElementAsString: htmlElementAsString, + isSameException: isSameException$1, + isSameStacktrace: isSameStacktrace$1, + parseUrl: parseUrl$1, + fill: fill$1, + safeJoin: safeJoin +}; + +/* + TraceKit - Cross brower stack traces + + This was originally forked from github.com/occ/TraceKit, but has since been + largely re-written and is now maintained as part of raven-js. Tests for + this are in test/vendor. + + MIT license +*/ + +var TraceKit = { + collectWindowErrors: true, + debug: false +}; // This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) + +var _window$2 = typeof window !== 'undefined' ? window : typeof commonjsGlobal !== 'undefined' ? commonjsGlobal : typeof self !== 'undefined' ? self : {}; // global reference to slice + + +var _slice = [].slice; +var UNKNOWN_FUNCTION = '?'; // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error#Error_types + +var ERROR_TYPES_RE = /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/; + +function getLocationHref() { + if (typeof document === 'undefined' || document.location == null) return ''; + return document.location.href; +} +/** + * TraceKit.report: cross-browser processing of unhandled exceptions + * + * Syntax: + * TraceKit.report.subscribe(function(stackInfo) { ... }) + * TraceKit.report.unsubscribe(function(stackInfo) { ... }) + * TraceKit.report(exception) + * try { ...code... } catch(ex) { TraceKit.report(ex); } + * + * Supports: + * - Firefox: full stack trace with line numbers, plus column number + * on top frame; column number is not guaranteed + * - Opera: full stack trace with line and column numbers + * - Chrome: full stack trace with line and column numbers + * - Safari: line and column number for the top frame only; some frames + * may be missing, and column number is not guaranteed + * - IE: line and column number for the top frame only; some frames + * may be missing, and column number is not guaranteed + * + * In theory, TraceKit should work on all of the following versions: + * - IE5.5+ (only 8.0 tested) + * - Firefox 0.9+ (only 3.5+ tested) + * - Opera 7+ (only 10.50 tested; versions 9 and earlier may require + * Exceptions Have Stacktrace to be enabled in opera:config) + * - Safari 3+ (only 4+ tested) + * - Chrome 1+ (only 5+ tested) + * - Konqueror 3.5+ (untested) + * + * Requires TraceKit.computeStackTrace. + * + * Tries to catch all unhandled exceptions and report them to the + * subscribed handlers. Please note that TraceKit.report will rethrow the + * exception. This is REQUIRED in order to get a useful stack trace in IE. + * If the exception does not reach the top of the browser, you will only + * get a stack trace from the point where TraceKit.report was called. + * + * Handlers receive a stackInfo object as described in the + * TraceKit.computeStackTrace docs. + */ + + +TraceKit.report = function reportModuleWrapper() { + var handlers = [], + lastArgs = null, + lastException = null, + lastExceptionStack = null; + /** + * Add a crash handler. + * @param {Function} handler + */ + + function subscribe(handler) { + installGlobalHandler(); + handlers.push(handler); + } + /** + * Remove a crash handler. + * @param {Function} handler + */ + + + function unsubscribe(handler) { + for (var i = handlers.length - 1; i >= 0; --i) { + if (handlers[i] === handler) { + handlers.splice(i, 1); + } + } + } + /** + * Remove all crash handlers. + */ + + + function unsubscribeAll() { + uninstallGlobalHandler(); + handlers = []; + } + /** + * Dispatch stack information to all handlers. + * @param {Object.} stack + */ + + + function notifyHandlers(stack, isWindowError) { + var exception = null; + + if (isWindowError && !TraceKit.collectWindowErrors) { + return; + } + + for (var i in handlers) { + if (handlers.hasOwnProperty(i)) { + try { + handlers[i].apply(null, [stack].concat(_slice.call(arguments, 2))); + } catch (inner) { + exception = inner; + } + } + } + + if (exception) { + throw exception; + } + } + + var _oldOnerrorHandler, _onErrorHandlerInstalled; + /** + * Ensures all global unhandled exceptions are recorded. + * Supported by Gecko and IE. + * @param {string} msg Error message. + * @param {string} url URL of script that generated the exception. + * @param {(number|string)} lineNo The line number at which the error + * occurred. + * @param {?(number|string)} colNo The column number at which the error + * occurred. + * @param {?Error} ex The actual Error object. + */ + + + function traceKitWindowOnError(msg, url, lineNo, colNo, ex) { + var stack = null; // If 'ex' is ErrorEvent, get real Error from inside + + var exception = utils.isErrorEvent(ex) ? ex.error : ex; // If 'msg' is ErrorEvent, get real message from inside + + var message = utils.isErrorEvent(msg) ? msg.message : msg; + + if (lastExceptionStack) { + TraceKit.computeStackTrace.augmentStackTraceWithInitialElement(lastExceptionStack, url, lineNo, message); + processLastException(); + } else if (exception && utils.isError(exception)) { + // non-string `exception` arg; attempt to extract stack trace + // New chrome and blink send along a real error object + // Let's just report that like a normal error. + // See: https://mikewest.org/2013/08/debugging-runtime-errors-with-window-onerror + stack = TraceKit.computeStackTrace(exception); + notifyHandlers(stack, true); + } else { + var location = { + url: url, + line: lineNo, + column: colNo + }; + var name = undefined; + var groups; + + if ({}.toString.call(message) === '[object String]') { + var groups = message.match(ERROR_TYPES_RE); + + if (groups) { + name = groups[1]; + message = groups[2]; + } + } + + location.func = UNKNOWN_FUNCTION; + stack = { + name: name, + message: message, + url: getLocationHref(), + stack: [location] + }; + notifyHandlers(stack, true); + } + + if (_oldOnerrorHandler) { + return _oldOnerrorHandler.apply(this, arguments); + } + + return false; + } + + function installGlobalHandler() { + if (_onErrorHandlerInstalled) { + return; + } + + _oldOnerrorHandler = _window$2.onerror; + _window$2.onerror = traceKitWindowOnError; + _onErrorHandlerInstalled = true; + } + + function uninstallGlobalHandler() { + if (!_onErrorHandlerInstalled) { + return; + } + + _window$2.onerror = _oldOnerrorHandler; + _onErrorHandlerInstalled = false; + _oldOnerrorHandler = undefined; + } + + function processLastException() { + var _lastExceptionStack = lastExceptionStack, + _lastArgs = lastArgs; + lastArgs = null; + lastExceptionStack = null; + lastException = null; + notifyHandlers.apply(null, [_lastExceptionStack, false].concat(_lastArgs)); + } + /** + * Reports an unhandled Error to TraceKit. + * @param {Error} ex + * @param {?boolean} rethrow If false, do not re-throw the exception. + * Only used for window.onerror to not cause an infinite loop of + * rethrowing. + */ + + + function report(ex, rethrow) { + var args = _slice.call(arguments, 1); + + if (lastExceptionStack) { + if (lastException === ex) { + return; // already caught by an inner catch block, ignore + } else { + processLastException(); + } + } + + var stack = TraceKit.computeStackTrace(ex); + lastExceptionStack = stack; + lastException = ex; + lastArgs = args; // If the stack trace is incomplete, wait for 2 seconds for + // slow slow IE to see if onerror occurs or not before reporting + // this exception; otherwise, we will end up with an incomplete + // stack trace + + setTimeout(function () { + if (lastException === ex) { + processLastException(); + } + }, stack.incomplete ? 2000 : 0); + + if (rethrow !== false) { + throw ex; // re-throw to propagate to the top level (and cause window.onerror) + } + } + + report.subscribe = subscribe; + report.unsubscribe = unsubscribe; + report.uninstall = unsubscribeAll; + return report; +}(); +/** + * TraceKit.computeStackTrace: cross-browser stack traces in JavaScript + * + * Syntax: + * s = TraceKit.computeStackTrace(exception) // consider using TraceKit.report instead (see below) + * Returns: + * s.name - exception name + * s.message - exception message + * s.stack[i].url - JavaScript or HTML file URL + * s.stack[i].func - function name, or empty for anonymous functions (if guessing did not work) + * s.stack[i].args - arguments passed to the function, if known + * s.stack[i].line - line number, if known + * s.stack[i].column - column number, if known + * + * Supports: + * - Firefox: full stack trace with line numbers and unreliable column + * number on top frame + * - Opera 10: full stack trace with line and column numbers + * - Opera 9-: full stack trace with line numbers + * - Chrome: full stack trace with line and column numbers + * - Safari: line and column number for the topmost stacktrace element + * only + * - IE: no line numbers whatsoever + * + * Tries to guess names of anonymous functions by looking for assignments + * in the source code. In IE and Safari, we have to guess source file names + * by searching for function bodies inside all page scripts. This will not + * work for scripts that are loaded cross-domain. + * Here be dragons: some function names may be guessed incorrectly, and + * duplicate functions may be mismatched. + * + * TraceKit.computeStackTrace should only be used for tracing purposes. + * Logging of unhandled exceptions should be done with TraceKit.report, + * which builds on top of TraceKit.computeStackTrace and provides better + * IE support by utilizing the window.onerror event to retrieve information + * about the top of the stack. + * + * Note: In IE and Safari, no stack trace is recorded on the Error object, + * so computeStackTrace instead walks its *own* chain of callers. + * This means that: + * * in Safari, some methods may be missing from the stack trace; + * * in IE, the topmost function in the stack trace will always be the + * caller of computeStackTrace. + * + * This is okay for tracing (because you are likely to be calling + * computeStackTrace from the function you want to be the topmost element + * of the stack trace anyway), but not okay for logging unhandled + * exceptions (because your catch block will likely be far away from the + * inner function that actually caused the exception). + * + */ + + +TraceKit.computeStackTrace = function computeStackTraceWrapper() { + // Contents of Exception in various browsers. + // + // SAFARI: + // ex.message = Can't find variable: qq + // ex.line = 59 + // ex.sourceId = 580238192 + // ex.sourceURL = http://... + // ex.expressionBeginOffset = 96 + // ex.expressionCaretOffset = 98 + // ex.expressionEndOffset = 98 + // ex.name = ReferenceError + // + // FIREFOX: + // ex.message = qq is not defined + // ex.fileName = http://... + // ex.lineNumber = 59 + // ex.columnNumber = 69 + // ex.stack = ...stack trace... (see the example below) + // ex.name = ReferenceError + // + // CHROME: + // ex.message = qq is not defined + // ex.name = ReferenceError + // ex.type = not_defined + // ex.arguments = ['aa'] + // ex.stack = ...stack trace... + // + // INTERNET EXPLORER: + // ex.message = ... + // ex.name = ReferenceError + // + // OPERA: + // ex.message = ...message... (see the example below) + // ex.name = ReferenceError + // ex.opera#sourceloc = 11 (pretty much useless, duplicates the info in ex.message) + // ex.stacktrace = n/a; see 'opera:config#UserPrefs|Exceptions Have Stacktrace' + + /** + * Computes stack trace information from the stack property. + * Chrome and Gecko use this property. + * @param {Error} ex + * @return {?Object.} Stack trace information. + */ + function computeStackTraceFromStackProp(ex) { + if (typeof ex.stack === 'undefined' || !ex.stack) return; + var chrome = /^\s*at (.*?) ?\(((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i, + gecko = /^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|\[native).*?|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i, + winjs = /^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i, + // Used to additionally parse URL/line/column from eval frames + geckoEval = /(\S+) line (\d+)(?: > eval line \d+)* > eval/i, + chromeEval = /\((\S*)(?::(\d+))(?::(\d+))\)/, + lines = ex.stack.split('\n'), + stack = [], + submatch, + parts, + element, + reference = /^(.*) is undefined$/.exec(ex.message); + + for (var i = 0, j = lines.length; i < j; ++i) { + if (parts = chrome.exec(lines[i])) { + var isNative = parts[2] && parts[2].indexOf('native') === 0; // start of line + + var isEval = parts[2] && parts[2].indexOf('eval') === 0; // start of line + + if (isEval && (submatch = chromeEval.exec(parts[2]))) { + // throw out eval line/column and use top-most line/column number + parts[2] = submatch[1]; // url + + parts[3] = submatch[2]; // line + + parts[4] = submatch[3]; // column + } + + element = { + url: !isNative ? parts[2] : null, + func: parts[1] || UNKNOWN_FUNCTION, + args: isNative ? [parts[2]] : [], + line: parts[3] ? +parts[3] : null, + column: parts[4] ? +parts[4] : null + }; + } else if (parts = winjs.exec(lines[i])) { + element = { + url: parts[2], + func: parts[1] || UNKNOWN_FUNCTION, + args: [], + line: +parts[3], + column: parts[4] ? +parts[4] : null + }; + } else if (parts = gecko.exec(lines[i])) { + var isEval = parts[3] && parts[3].indexOf(' > eval') > -1; + + if (isEval && (submatch = geckoEval.exec(parts[3]))) { + // throw out eval line/column and use top-most line number + parts[3] = submatch[1]; + parts[4] = submatch[2]; + parts[5] = null; // no column when eval + } else if (i === 0 && !parts[5] && typeof ex.columnNumber !== 'undefined') { + // FireFox uses this awesome columnNumber property for its top frame + // Also note, Firefox's column number is 0-based and everything else expects 1-based, + // so adding 1 + // NOTE: this hack doesn't work if top-most frame is eval + stack[0].column = ex.columnNumber + 1; + } + + element = { + url: parts[3], + func: parts[1] || UNKNOWN_FUNCTION, + args: parts[2] ? parts[2].split(',') : [], + line: parts[4] ? +parts[4] : null, + column: parts[5] ? +parts[5] : null + }; + } else { + continue; + } + + if (!element.func && element.line) { + element.func = UNKNOWN_FUNCTION; + } + + stack.push(element); + } + + if (!stack.length) { + return null; + } + + return { + name: ex.name, + message: ex.message, + url: getLocationHref(), + stack: stack + }; + } + /** + * Adds information about the first frame to incomplete stack traces. + * Safari and IE require this to get complete data on the first frame. + * @param {Object.} stackInfo Stack trace information from + * one of the compute* methods. + * @param {string} url The URL of the script that caused an error. + * @param {(number|string)} lineNo The line number of the script that + * caused an error. + * @param {string=} message The error generated by the browser, which + * hopefully contains the name of the object that caused the error. + * @return {boolean} Whether or not the stack information was + * augmented. + */ + + + function augmentStackTraceWithInitialElement(stackInfo, url, lineNo, message) { + var initial = { + url: url, + line: lineNo + }; + + if (initial.url && initial.line) { + stackInfo.incomplete = false; + + if (!initial.func) { + initial.func = UNKNOWN_FUNCTION; + } + + if (stackInfo.stack.length > 0) { + if (stackInfo.stack[0].url === initial.url) { + if (stackInfo.stack[0].line === initial.line) { + return false; // already in stack trace + } else if (!stackInfo.stack[0].line && stackInfo.stack[0].func === initial.func) { + stackInfo.stack[0].line = initial.line; + return false; + } + } + } + + stackInfo.stack.unshift(initial); + stackInfo.partial = true; + return true; + } else { + stackInfo.incomplete = true; + } + + return false; + } + /** + * Computes stack trace information by walking the arguments.caller + * chain at the time the exception occurred. This will cause earlier + * frames to be missed but is the only way to get any stack trace in + * Safari and IE. The top frame is restored by + * {@link augmentStackTraceWithInitialElement}. + * @param {Error} ex + * @return {?Object.} Stack trace information. + */ + + + function computeStackTraceByWalkingCallerChain(ex, depth) { + var functionName = /function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i, + stack = [], + funcs = {}, + recursion = false, + parts, + item; + + for (var curr = computeStackTraceByWalkingCallerChain.caller; curr && !recursion; curr = curr.caller) { + if (curr === computeStackTrace || curr === TraceKit.report) { + // console.log('skipping internal function'); + continue; + } + + item = { + url: null, + func: UNKNOWN_FUNCTION, + line: null, + column: null + }; + + if (curr.name) { + item.func = curr.name; + } else if (parts = functionName.exec(curr.toString())) { + item.func = parts[1]; + } + + if (typeof item.func === 'undefined') { + try { + item.func = parts.input.substring(0, parts.input.indexOf('{')); + } catch (e) {} + } + + if (funcs['' + curr]) { + recursion = true; + } else { + funcs['' + curr] = true; + } + + stack.push(item); + } + + if (depth) { + // console.log('depth is ' + depth); + // console.log('stack is ' + stack.length); + stack.splice(0, depth); + } + + var result = { + name: ex.name, + message: ex.message, + url: getLocationHref(), + stack: stack + }; + augmentStackTraceWithInitialElement(result, ex.sourceURL || ex.fileName, ex.line || ex.lineNumber, ex.message || ex.description); + return result; + } + /** + * Computes a stack trace for an exception. + * @param {Error} ex + * @param {(string|number)=} depth + */ + + + function computeStackTrace(ex, depth) { + var stack = null; + depth = depth == null ? 0 : +depth; + + try { + stack = computeStackTraceFromStackProp(ex); + + if (stack) { + return stack; + } + } catch (e) { + if (TraceKit.debug) { + throw e; + } + } + + try { + stack = computeStackTraceByWalkingCallerChain(ex, depth + 1); + + if (stack) { + return stack; + } + } catch (e) { + if (TraceKit.debug) { + throw e; + } + } + + return { + name: ex.name, + message: ex.message, + url: getLocationHref() + }; + } + + computeStackTrace.augmentStackTraceWithInitialElement = augmentStackTraceWithInitialElement; + computeStackTrace.computeStackTraceFromStackProp = computeStackTraceFromStackProp; + return computeStackTrace; +}(); + +var tracekit = TraceKit; + +var stringify_1 = createCommonjsModule(function (module, exports) { + /* + json-stringify-safe + Like JSON.stringify, but doesn't throw on circular references. + + Originally forked from https://github.com/isaacs/json-stringify-safe + version 5.0.1 on 3/8/2017 and modified to handle Errors serialization + and IE8 compatibility. Tests for this are in test/vendor. + + ISC license: https://github.com/isaacs/json-stringify-safe/blob/master/LICENSE + */ + exports = module.exports = stringify; + exports.getSerialize = serializer; + + function indexOf(haystack, needle) { + for (var i = 0; i < haystack.length; ++i) { + if (haystack[i] === needle) return i; + } + + return -1; + } + + function stringify(obj, replacer, spaces, cycleReplacer) { + return JSON.stringify(obj, serializer(replacer, cycleReplacer), spaces); + } // https://github.com/ftlabs/js-abbreviate/blob/fa709e5f139e7770a71827b1893f22418097fbda/index.js#L95-L106 + + + function stringifyError(value) { + var err = { + // These properties are implemented as magical getters and don't show up in for in + stack: value.stack, + message: value.message, + name: value.name + }; + + for (var i in value) { + if (Object.prototype.hasOwnProperty.call(value, i)) { + err[i] = value[i]; + } + } + + return err; + } + + function serializer(replacer, cycleReplacer) { + var stack = []; + var keys = []; + + if (cycleReplacer == null) { + cycleReplacer = function cycleReplacer(key, value) { + if (stack[0] === value) { + return '[Circular ~]'; + } + + return '[Circular ~.' + keys.slice(0, indexOf(stack, value)).join('.') + ']'; + }; + } + + return function (key, value) { + if (stack.length > 0) { + var thisPos = indexOf(stack, this); + ~thisPos ? stack.splice(thisPos + 1) : stack.push(this); + ~thisPos ? keys.splice(thisPos, Infinity, key) : keys.push(key); + + if (~indexOf(stack, value)) { + value = cycleReplacer.call(this, key, value); + } + } else { + stack.push(value); + } + + return replacer == null ? value instanceof Error ? stringifyError(value) : value : replacer.call(this, key, value); + }; + } +}); +var stringify_2 = stringify_1.getSerialize; + +function RavenConfigError(message) { + this.name = 'RavenConfigError'; + this.message = message; +} + +RavenConfigError.prototype = new Error(); +RavenConfigError.prototype.constructor = RavenConfigError; +var configError = RavenConfigError; + +var wrapMethod = function wrapMethod(console, level, callback) { + var originalConsoleLevel = console[level]; + var originalConsole = console; + + if (!(level in console)) { + return; + } + + var sentryLevel = level === 'warn' ? 'warning' : level; + + console[level] = function () { + var args = [].slice.call(arguments); + var msg = utils.safeJoin(args, ' '); + var data = { + level: sentryLevel, + logger: 'console', + extra: { + arguments: args + } + }; + + if (level === 'assert') { + if (args[0] === false) { + // Default browsers message + msg = 'Assertion failed: ' + (utils.safeJoin(args.slice(1), ' ') || 'console.assert'); + data.extra.arguments = args.slice(1); + callback && callback(msg, data); + } + } else { + callback && callback(msg, data); + } // this fails for some browsers. :( + + + if (originalConsoleLevel) { + // IE9 doesn't allow calling apply on console functions directly + // See: https://stackoverflow.com/questions/5472938/does-ie9-support-console-log-and-is-it-a-real-function#answer-5473193 + Function.prototype.apply.call(originalConsoleLevel, originalConsole, args); + } + }; +}; + +var console$1 = { + wrapMethod: wrapMethod +}; + +/*global XDomainRequest:false */ + +var isError = utils.isError; +var isObject = utils.isObject; +var isErrorEvent = utils.isErrorEvent; +var isUndefined = utils.isUndefined; +var isFunction = utils.isFunction; +var isString = utils.isString; +var isArray = utils.isArray; +var isEmptyObject = utils.isEmptyObject; +var each = utils.each; +var objectMerge = utils.objectMerge; +var truncate = utils.truncate; +var objectFrozen = utils.objectFrozen; +var hasKey = utils.hasKey; +var joinRegExp = utils.joinRegExp; +var urlencode = utils.urlencode; +var uuid4 = utils.uuid4; +var htmlTreeAsString = utils.htmlTreeAsString; +var isSameException = utils.isSameException; +var isSameStacktrace = utils.isSameStacktrace; +var parseUrl = utils.parseUrl; +var fill = utils.fill; +var supportsFetch = utils.supportsFetch; +var wrapConsoleMethod = console$1.wrapMethod; +var dsnKeys = 'source protocol user pass host port path'.split(' '); +var dsnPattern = /^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/; + +function now() { + return +new Date(); +} // This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) + + +var _window$1 = typeof window !== 'undefined' ? window : typeof commonjsGlobal !== 'undefined' ? commonjsGlobal : typeof self !== 'undefined' ? self : {}; + +var _document = _window$1.document; +var _navigator = _window$1.navigator; + +function keepOriginalCallback(original, callback) { + return isFunction(callback) ? function (data) { + return callback(data, original); + } : callback; +} // First, check for JSON support +// If there is no JSON, we no-op the core features of Raven +// since JSON is required to encode the payload + + +function Raven$1() { + this._hasJSON = !!(_typeof(JSON) === 'object' && JSON.stringify); // Raven can run in contexts where there's no document (react-native) + + this._hasDocument = !isUndefined(_document); + this._hasNavigator = !isUndefined(_navigator); + this._lastCapturedException = null; + this._lastData = null; + this._lastEventId = null; + this._globalServer = null; + this._globalKey = null; + this._globalProject = null; + this._globalContext = {}; + this._globalOptions = { + // SENTRY_RELEASE can be injected by https://github.com/getsentry/sentry-webpack-plugin + release: _window$1.SENTRY_RELEASE && _window$1.SENTRY_RELEASE.id, + logger: 'javascript', + ignoreErrors: [], + ignoreUrls: [], + whitelistUrls: [], + includePaths: [], + headers: null, + collectWindowErrors: true, + maxMessageLength: 0, + // By default, truncates URL values to 250 chars + maxUrlLength: 250, + stackTraceLimit: 50, + autoBreadcrumbs: true, + instrument: true, + sampleRate: 1 + }; + this._fetchDefaults = { + method: 'POST', + keepalive: true, + referrerPolicy: 'origin' + }; + this._ignoreOnError = 0; + this._isRavenInstalled = false; + this._originalErrorStackTraceLimit = Error.stackTraceLimit; // capture references to window.console *and* all its methods first + // before the console plugin has a chance to monkey patch + + this._originalConsole = _window$1.console || {}; + this._originalConsoleMethods = {}; + this._plugins = []; + this._startTime = now(); + this._wrappedBuiltIns = []; + this._breadcrumbs = []; + this._lastCapturedEvent = null; + this._keypressTimeout; + this._location = _window$1.location; + this._lastHref = this._location && this._location.href; + + this._resetBackoff(); // eslint-disable-next-line guard-for-in + + + for (var method in this._originalConsole) { + this._originalConsoleMethods[method] = this._originalConsole[method]; + } +} +/* + * The core Raven singleton + * + * @this {Raven} + */ + + +Raven$1.prototype = { + // Hardcode version string so that raven source can be loaded directly via + // webpack (using a build step causes webpack #1617). Grunt verifies that + // this value matches package.json during build. + // See: https://github.com/getsentry/raven-js/issues/465 + VERSION: '3.22.2', + debug: false, + TraceKit: tracekit, + // alias to TraceKit + + /* + * Configure Raven with a DSN and extra options + * + * @param {string} dsn The public Sentry DSN + * @param {object} options Set of global options [optional] + * @return {Raven} + */ + config: function config(dsn, options) { + var self = this; + + if (self._globalServer) { + this._logDebug('error', 'Error: Raven has already been configured'); + + return self; + } + + if (!dsn) return self; + var globalOptions = self._globalOptions; // merge in options + + if (options) { + each(options, function (key, value) { + // tags and extra are special and need to be put into context + if (key === 'tags' || key === 'extra' || key === 'user') { + self._globalContext[key] = value; + } else { + globalOptions[key] = value; + } + }); + } + + self.setDSN(dsn); // "Script error." is hard coded into browsers for errors that it can't read. + // this is the result of a script being pulled in from an external domain and CORS. + + globalOptions.ignoreErrors.push(/^Script error\.?$/); + globalOptions.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/); // join regexp rules into one big rule + + globalOptions.ignoreErrors = joinRegExp(globalOptions.ignoreErrors); + globalOptions.ignoreUrls = globalOptions.ignoreUrls.length ? joinRegExp(globalOptions.ignoreUrls) : false; + globalOptions.whitelistUrls = globalOptions.whitelistUrls.length ? joinRegExp(globalOptions.whitelistUrls) : false; + globalOptions.includePaths = joinRegExp(globalOptions.includePaths); + globalOptions.maxBreadcrumbs = Math.max(0, Math.min(globalOptions.maxBreadcrumbs || 100, 100)); // default and hard limit is 100 + + var autoBreadcrumbDefaults = { + xhr: true, + console: true, + dom: true, + location: true, + sentry: true + }; + var autoBreadcrumbs = globalOptions.autoBreadcrumbs; + + if ({}.toString.call(autoBreadcrumbs) === '[object Object]') { + autoBreadcrumbs = objectMerge(autoBreadcrumbDefaults, autoBreadcrumbs); + } else if (autoBreadcrumbs !== false) { + autoBreadcrumbs = autoBreadcrumbDefaults; + } + + globalOptions.autoBreadcrumbs = autoBreadcrumbs; + var instrumentDefaults = { + tryCatch: true + }; + var instrument = globalOptions.instrument; + + if ({}.toString.call(instrument) === '[object Object]') { + instrument = objectMerge(instrumentDefaults, instrument); + } else if (instrument !== false) { + instrument = instrumentDefaults; + } + + globalOptions.instrument = instrument; + tracekit.collectWindowErrors = !!globalOptions.collectWindowErrors; // return for chaining + + return self; + }, + + /* + * Installs a global window.onerror error handler + * to capture and report uncaught exceptions. + * At this point, install() is required to be called due + * to the way TraceKit is set up. + * + * @return {Raven} + */ + install: function install() { + var self = this; + + if (self.isSetup() && !self._isRavenInstalled) { + tracekit.report.subscribe(function () { + self._handleOnErrorStackInfo.apply(self, arguments); + }); + + self._patchFunctionToString(); + + if (self._globalOptions.instrument && self._globalOptions.instrument.tryCatch) { + self._instrumentTryCatch(); + } + + if (self._globalOptions.autoBreadcrumbs) self._instrumentBreadcrumbs(); // Install all of the plugins + + self._drainPlugins(); + + self._isRavenInstalled = true; + } + + Error.stackTraceLimit = self._globalOptions.stackTraceLimit; + return this; + }, + + /* + * Set the DSN (can be called multiple time unlike config) + * + * @param {string} dsn The public Sentry DSN + */ + setDSN: function setDSN(dsn) { + var self = this, + uri = self._parseDSN(dsn), + lastSlash = uri.path.lastIndexOf('/'), + path = uri.path.substr(1, lastSlash); + + self._dsn = dsn; + self._globalKey = uri.user; + self._globalSecret = uri.pass && uri.pass.substr(1); + self._globalProject = uri.path.substr(lastSlash + 1); + self._globalServer = self._getGlobalServer(uri); + self._globalEndpoint = self._globalServer + '/' + path + 'api/' + self._globalProject + '/store/'; // Reset backoff state since we may be pointing at a + // new project/server + + this._resetBackoff(); + }, + + /* + * Wrap code within a context so Raven can capture errors + * reliably across domains that is executed immediately. + * + * @param {object} options A specific set of options for this context [optional] + * @param {function} func The callback to be immediately executed within the context + * @param {array} args An array of arguments to be called with the callback [optional] + */ + context: function context(options, func, args) { + if (isFunction(options)) { + args = func || []; + func = options; + options = undefined; + } + + return this.wrap(options, func).apply(this, args); + }, + + /* + * Wrap code within a context and returns back a new function to be executed + * + * @param {object} options A specific set of options for this context [optional] + * @param {function} func The function to be wrapped in a new context + * @param {function} func A function to call before the try/catch wrapper [optional, private] + * @return {function} The newly wrapped functions with a context + */ + wrap: function wrap(options, func, _before) { + var self = this; // 1 argument has been passed, and it's not a function + // so just return it + + if (isUndefined(func) && !isFunction(options)) { + return options; + } // options is optional + + + if (isFunction(options)) { + func = options; + options = undefined; + } // At this point, we've passed along 2 arguments, and the second one + // is not a function either, so we'll just return the second argument. + + + if (!isFunction(func)) { + return func; + } // We don't wanna wrap it twice! + + + try { + if (func.__raven__) { + return func; + } // If this has already been wrapped in the past, return that + + + if (func.__raven_wrapper__) { + return func.__raven_wrapper__; + } + } catch (e) { + // Just accessing custom props in some Selenium environments + // can cause a "Permission denied" exception (see raven-js#495). + // Bail on wrapping and return the function as-is (defers to window.onerror). + return func; + } + + function wrapped() { + var args = [], + i = arguments.length, + deep = !options || options && options.deep !== false; + + if (_before && isFunction(_before)) { + _before.apply(this, arguments); + } // Recursively wrap all of a function's arguments that are + // functions themselves. + + + while (i--) { + args[i] = deep ? self.wrap(options, arguments[i]) : arguments[i]; + } + + try { + // Attempt to invoke user-land function + // NOTE: If you are a Sentry user, and you are seeing this stack frame, it + // means Raven caught an error invoking your application code. This is + // expected behavior and NOT indicative of a bug with Raven.js. + return func.apply(this, args); + } catch (e) { + self._ignoreNextOnError(); + + self.captureException(e, options); + throw e; + } + } // copy over properties of the old function + + + for (var property in func) { + if (hasKey(func, property)) { + wrapped[property] = func[property]; + } + } + + wrapped.prototype = func.prototype; + func.__raven_wrapper__ = wrapped; // Signal that this function has been wrapped/filled already + // for both debugging and to prevent it to being wrapped/filled twice + + wrapped.__raven__ = true; + wrapped.__orig__ = func; + return wrapped; + }, + + /* + * Uninstalls the global error handler. + * + * @return {Raven} + */ + uninstall: function uninstall() { + tracekit.report.uninstall(); + + this._unpatchFunctionToString(); + + this._restoreBuiltIns(); + + this._restoreConsole(); + + Error.stackTraceLimit = this._originalErrorStackTraceLimit; + this._isRavenInstalled = false; + return this; + }, + + /* + * Manually capture an exception and send it over to Sentry + * + * @param {error} ex An exception to be logged + * @param {object} options A specific set of options for this error [optional] + * @return {Raven} + */ + captureException: function captureException(ex, options) { + options = objectMerge({ + trimHeadFrames: 0 + }, options ? options : {}); // Cases for sending ex as a message, rather than an exception + + var isNotError = !isError(ex); + var isNotErrorEvent = !isErrorEvent(ex); + var isErrorEventWithoutError = isErrorEvent(ex) && !ex.error; + + if (isNotError && isNotErrorEvent || isErrorEventWithoutError) { + return this.captureMessage(ex, objectMerge(options, { + stacktrace: true, + // if we fall back to captureMessage, default to attempting a new trace + trimHeadFrames: options.trimHeadFrames + 1 + })); + } // Get actual Error from ErrorEvent + + + if (isErrorEvent(ex)) ex = ex.error; // Store the raw exception object for potential debugging and introspection + + this._lastCapturedException = ex; // TraceKit.report will re-raise any exception passed to it, + // which means you have to wrap it in try/catch. Instead, we + // can wrap it here and only re-raise if TraceKit.report + // raises an exception different from the one we asked to + // report on. + + try { + var stack = tracekit.computeStackTrace(ex); + + this._handleStackInfo(stack, options); + } catch (ex1) { + if (ex !== ex1) { + throw ex1; + } + } + + return this; + }, + + /* + * Manually send a message to Sentry + * + * @param {string} msg A plain message to be captured in Sentry + * @param {object} options A specific set of options for this message [optional] + * @return {Raven} + */ + captureMessage: function captureMessage(msg, options) { + // config() automagically converts ignoreErrors from a list to a RegExp so we need to test for an + // early call; we'll error on the side of logging anything called before configuration since it's + // probably something you should see: + if (!!this._globalOptions.ignoreErrors.test && this._globalOptions.ignoreErrors.test(msg)) { + return; + } + + options = options || {}; + var data = objectMerge({ + message: msg + '' // Make sure it's actually a string + + }, options); + var ex; // Generate a "synthetic" stack trace from this point. + // NOTE: If you are a Sentry user, and you are seeing this stack frame, it is NOT indicative + // of a bug with Raven.js. Sentry generates synthetic traces either by configuration, + // or if it catches a thrown object without a "stack" property. + + try { + throw new Error(msg); + } catch (ex1) { + ex = ex1; + } // null exception name so `Error` isn't prefixed to msg + + + ex.name = null; + var stack = tracekit.computeStackTrace(ex); // stack[0] is `throw new Error(msg)` call itself, we are interested in the frame that was just before that, stack[1] + + var initialCall = isArray(stack.stack) && stack.stack[1]; + var fileurl = initialCall && initialCall.url || ''; + + if (!!this._globalOptions.ignoreUrls.test && this._globalOptions.ignoreUrls.test(fileurl)) { + return; + } + + if (!!this._globalOptions.whitelistUrls.test && !this._globalOptions.whitelistUrls.test(fileurl)) { + return; + } + + if (this._globalOptions.stacktrace || options && options.stacktrace) { + options = objectMerge({ + // fingerprint on msg, not stack trace (legacy behavior, could be + // revisited) + fingerprint: msg, + // since we know this is a synthetic trace, the top N-most frames + // MUST be from Raven.js, so mark them as in_app later by setting + // trimHeadFrames + trimHeadFrames: (options.trimHeadFrames || 0) + 1 + }, options); + + var frames = this._prepareFrames(stack, options); + + data.stacktrace = { + // Sentry expects frames oldest to newest + frames: frames.reverse() + }; + } // Fire away! + + + this._send(data); + + return this; + }, + captureBreadcrumb: function captureBreadcrumb(obj) { + var crumb = objectMerge({ + timestamp: now() / 1000 + }, obj); + + if (isFunction(this._globalOptions.breadcrumbCallback)) { + var result = this._globalOptions.breadcrumbCallback(crumb); + + if (isObject(result) && !isEmptyObject(result)) { + crumb = result; + } else if (result === false) { + return this; + } + } + + this._breadcrumbs.push(crumb); + + if (this._breadcrumbs.length > this._globalOptions.maxBreadcrumbs) { + this._breadcrumbs.shift(); + } + + return this; + }, + addPlugin: function addPlugin(plugin + /*arg1, arg2, ... argN*/ + ) { + var pluginArgs = [].slice.call(arguments, 1); + + this._plugins.push([plugin, pluginArgs]); + + if (this._isRavenInstalled) { + this._drainPlugins(); + } + + return this; + }, + + /* + * Set/clear a user to be sent along with the payload. + * + * @param {object} user An object representing user data [optional] + * @return {Raven} + */ + setUserContext: function setUserContext(user) { + // Intentionally do not merge here since that's an unexpected behavior. + this._globalContext.user = user; + return this; + }, + + /* + * Merge extra attributes to be sent along with the payload. + * + * @param {object} extra An object representing extra data [optional] + * @return {Raven} + */ + setExtraContext: function setExtraContext(extra) { + this._mergeContext('extra', extra); + + return this; + }, + + /* + * Merge tags to be sent along with the payload. + * + * @param {object} tags An object representing tags [optional] + * @return {Raven} + */ + setTagsContext: function setTagsContext(tags) { + this._mergeContext('tags', tags); + + return this; + }, + + /* + * Clear all of the context. + * + * @return {Raven} + */ + clearContext: function clearContext() { + this._globalContext = {}; + return this; + }, + + /* + * Get a copy of the current context. This cannot be mutated. + * + * @return {object} copy of context + */ + getContext: function getContext() { + // lol javascript + return JSON.parse(stringify_1(this._globalContext)); + }, + + /* + * Set environment of application + * + * @param {string} environment Typically something like 'production'. + * @return {Raven} + */ + setEnvironment: function setEnvironment(environment) { + this._globalOptions.environment = environment; + return this; + }, + + /* + * Set release version of application + * + * @param {string} release Typically something like a git SHA to identify version + * @return {Raven} + */ + setRelease: function setRelease(release) { + this._globalOptions.release = release; + return this; + }, + + /* + * Set the dataCallback option + * + * @param {function} callback The callback to run which allows the + * data blob to be mutated before sending + * @return {Raven} + */ + setDataCallback: function setDataCallback(callback) { + var original = this._globalOptions.dataCallback; + this._globalOptions.dataCallback = keepOriginalCallback(original, callback); + return this; + }, + + /* + * Set the breadcrumbCallback option + * + * @param {function} callback The callback to run which allows filtering + * or mutating breadcrumbs + * @return {Raven} + */ + setBreadcrumbCallback: function setBreadcrumbCallback(callback) { + var original = this._globalOptions.breadcrumbCallback; + this._globalOptions.breadcrumbCallback = keepOriginalCallback(original, callback); + return this; + }, + + /* + * Set the shouldSendCallback option + * + * @param {function} callback The callback to run which allows + * introspecting the blob before sending + * @return {Raven} + */ + setShouldSendCallback: function setShouldSendCallback(callback) { + var original = this._globalOptions.shouldSendCallback; + this._globalOptions.shouldSendCallback = keepOriginalCallback(original, callback); + return this; + }, + + /** + * Override the default HTTP transport mechanism that transmits data + * to the Sentry server. + * + * @param {function} transport Function invoked instead of the default + * `makeRequest` handler. + * + * @return {Raven} + */ + setTransport: function setTransport(transport) { + this._globalOptions.transport = transport; + return this; + }, + + /* + * Get the latest raw exception that was captured by Raven. + * + * @return {error} + */ + lastException: function lastException() { + return this._lastCapturedException; + }, + + /* + * Get the last event id + * + * @return {string} + */ + lastEventId: function lastEventId() { + return this._lastEventId; + }, + + /* + * Determine if Raven is setup and ready to go. + * + * @return {boolean} + */ + isSetup: function isSetup() { + if (!this._hasJSON) return false; // needs JSON support + + if (!this._globalServer) { + if (!this.ravenNotConfiguredError) { + this.ravenNotConfiguredError = true; + + this._logDebug('error', 'Error: Raven has not been configured.'); + } + + return false; + } + + return true; + }, + afterLoad: function afterLoad() { + // TODO: remove window dependence? + // Attempt to initialize Raven on load + var RavenConfig = _window$1.RavenConfig; + + if (RavenConfig) { + this.config(RavenConfig.dsn, RavenConfig.config).install(); + } + }, + showReportDialog: function showReportDialog(options) { + if (!_document // doesn't work without a document (React native) + ) return; + options = options || {}; + var lastEventId = options.eventId || this.lastEventId(); + + if (!lastEventId) { + throw new configError('Missing eventId'); + } + + var dsn = options.dsn || this._dsn; + + if (!dsn) { + throw new configError('Missing DSN'); + } + + var encode = encodeURIComponent; + var qs = ''; + qs += '?eventId=' + encode(lastEventId); + qs += '&dsn=' + encode(dsn); + var user = options.user || this._globalContext.user; + + if (user) { + if (user.name) qs += '&name=' + encode(user.name); + if (user.email) qs += '&email=' + encode(user.email); + } + + var globalServer = this._getGlobalServer(this._parseDSN(dsn)); + + var script = _document.createElement('script'); + + script.async = true; + script.src = globalServer + '/api/embed/error-page/' + qs; + + (_document.head || _document.body).appendChild(script); + }, + + /**** Private functions ****/ + _ignoreNextOnError: function _ignoreNextOnError() { + var self = this; + this._ignoreOnError += 1; + setTimeout(function () { + // onerror should trigger before setTimeout + self._ignoreOnError -= 1; + }); + }, + _triggerEvent: function _triggerEvent(eventType, options) { + // NOTE: `event` is a native browser thing, so let's avoid conflicting wiht it + var evt, key; + if (!this._hasDocument) return; + options = options || {}; + eventType = 'raven' + eventType.substr(0, 1).toUpperCase() + eventType.substr(1); + + if (_document.createEvent) { + evt = _document.createEvent('HTMLEvents'); + evt.initEvent(eventType, true, true); + } else { + evt = _document.createEventObject(); + evt.eventType = eventType; + } + + for (key in options) { + if (hasKey(options, key)) { + evt[key] = options[key]; + } + } + + if (_document.createEvent) { + // IE9 if standards + _document.dispatchEvent(evt); + } else { + // IE8 regardless of Quirks or Standards + // IE9 if quirks + try { + _document.fireEvent('on' + evt.eventType.toLowerCase(), evt); + } catch (e) {// Do nothing + } + } + }, + + /** + * Wraps addEventListener to capture UI breadcrumbs + * @param evtName the event name (e.g. "click") + * @returns {Function} + * @private + */ + _breadcrumbEventHandler: function _breadcrumbEventHandler(evtName) { + var self = this; + return function (evt) { + // reset keypress timeout; e.g. triggering a 'click' after + // a 'keypress' will reset the keypress debounce so that a new + // set of keypresses can be recorded + self._keypressTimeout = null; // It's possible this handler might trigger multiple times for the same + // event (e.g. event propagation through node ancestors). Ignore if we've + // already captured the event. + + if (self._lastCapturedEvent === evt) return; + self._lastCapturedEvent = evt; // try/catch both: + // - accessing evt.target (see getsentry/raven-js#838, #768) + // - `htmlTreeAsString` because it's complex, and just accessing the DOM incorrectly + // can throw an exception in some circumstances. + + var target; + + try { + target = htmlTreeAsString(evt.target); + } catch (e) { + target = ''; + } + + self.captureBreadcrumb({ + category: 'ui.' + evtName, + // e.g. ui.click, ui.input + message: target + }); + }; + }, + + /** + * Wraps addEventListener to capture keypress UI events + * @returns {Function} + * @private + */ + _keypressEventHandler: function _keypressEventHandler() { + var self = this, + debounceDuration = 1000; // milliseconds + // TODO: if somehow user switches keypress target before + // debounce timeout is triggered, we will only capture + // a single breadcrumb from the FIRST target (acceptable?) + + return function (evt) { + var target; + + try { + target = evt.target; + } catch (e) { + // just accessing event properties can throw an exception in some rare circumstances + // see: https://github.com/getsentry/raven-js/issues/838 + return; + } + + var tagName = target && target.tagName; // only consider keypress events on actual input elements + // this will disregard keypresses targeting body (e.g. tabbing + // through elements, hotkeys, etc) + + if (!tagName || tagName !== 'INPUT' && tagName !== 'TEXTAREA' && !target.isContentEditable) return; // record first keypress in a series, but ignore subsequent + // keypresses until debounce clears + + var timeout = self._keypressTimeout; + + if (!timeout) { + self._breadcrumbEventHandler('input')(evt); + } + + clearTimeout(timeout); + self._keypressTimeout = setTimeout(function () { + self._keypressTimeout = null; + }, debounceDuration); + }; + }, + + /** + * Captures a breadcrumb of type "navigation", normalizing input URLs + * @param to the originating URL + * @param from the target URL + * @private + */ + _captureUrlChange: function _captureUrlChange(from, to) { + var parsedLoc = parseUrl(this._location.href); + var parsedTo = parseUrl(to); + var parsedFrom = parseUrl(from); // because onpopstate only tells you the "new" (to) value of location.href, and + // not the previous (from) value, we need to track the value of the current URL + // state ourselves + + this._lastHref = to; // Use only the path component of the URL if the URL matches the current + // document (almost all the time when using pushState) + + if (parsedLoc.protocol === parsedTo.protocol && parsedLoc.host === parsedTo.host) to = parsedTo.relative; + if (parsedLoc.protocol === parsedFrom.protocol && parsedLoc.host === parsedFrom.host) from = parsedFrom.relative; + this.captureBreadcrumb({ + category: 'navigation', + data: { + to: to, + from: from + } + }); + }, + _patchFunctionToString: function _patchFunctionToString() { + var self = this; + self._originalFunctionToString = Function.prototype.toString; // eslint-disable-next-line no-extend-native + + Function.prototype.toString = function () { + if (typeof this === 'function' && this.__raven__) { + return self._originalFunctionToString.apply(this.__orig__, arguments); + } + + return self._originalFunctionToString.apply(this, arguments); + }; + }, + _unpatchFunctionToString: function _unpatchFunctionToString() { + if (this._originalFunctionToString) { + // eslint-disable-next-line no-extend-native + Function.prototype.toString = this._originalFunctionToString; + } + }, + + /** + * Wrap timer functions and event targets to catch errors and provide + * better metadata. + */ + _instrumentTryCatch: function _instrumentTryCatch() { + var self = this; + var wrappedBuiltIns = self._wrappedBuiltIns; + + function wrapTimeFn(orig) { + return function (fn, t) { + // preserve arity + // Make a copy of the arguments to prevent deoptimization + // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments + var args = new Array(arguments.length); + + for (var i = 0; i < args.length; ++i) { + args[i] = arguments[i]; + } + + var originalCallback = args[0]; + + if (isFunction(originalCallback)) { + args[0] = self.wrap(originalCallback); + } // IE < 9 doesn't support .call/.apply on setInterval/setTimeout, but it + // also supports only two arguments and doesn't care what this is, so we + // can just call the original function directly. + + + if (orig.apply) { + return orig.apply(this, args); + } else { + return orig(args[0], args[1]); + } + }; + } + + var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; + + function wrapEventTarget(global) { + var proto = _window$1[global] && _window$1[global].prototype; + + if (proto && proto.hasOwnProperty && proto.hasOwnProperty('addEventListener')) { + fill(proto, 'addEventListener', function (orig) { + return function (evtName, fn, capture, secure) { + // preserve arity + try { + if (fn && fn.handleEvent) { + fn.handleEvent = self.wrap(fn.handleEvent); + } + } catch (err) {} // can sometimes get 'Permission denied to access property "handle Event' + // More breadcrumb DOM capture ... done here and not in `_instrumentBreadcrumbs` + // so that we don't have more than one wrapper function + + + var before, clickHandler, keypressHandler; + + if (autoBreadcrumbs && autoBreadcrumbs.dom && (global === 'EventTarget' || global === 'Node')) { + // NOTE: generating multiple handlers per addEventListener invocation, should + // revisit and verify we can just use one (almost certainly) + clickHandler = self._breadcrumbEventHandler('click'); + keypressHandler = self._keypressEventHandler(); + + before = function before(evt) { + // need to intercept every DOM event in `before` argument, in case that + // same wrapped method is re-used for different events (e.g. mousemove THEN click) + // see #724 + if (!evt) return; + var eventType; + + try { + eventType = evt.type; + } catch (e) { + // just accessing event properties can throw an exception in some rare circumstances + // see: https://github.com/getsentry/raven-js/issues/838 + return; + } + + if (eventType === 'click') return clickHandler(evt);else if (eventType === 'keypress') return keypressHandler(evt); + }; + } + + return orig.call(this, evtName, self.wrap(fn, undefined, before), capture, secure); + }; + }, wrappedBuiltIns); + fill(proto, 'removeEventListener', function (orig) { + return function (evt, fn, capture, secure) { + try { + fn = fn && (fn.__raven_wrapper__ ? fn.__raven_wrapper__ : fn); + } catch (e) {// ignore, accessing __raven_wrapper__ will throw in some Selenium environments + } + + return orig.call(this, evt, fn, capture, secure); + }; + }, wrappedBuiltIns); + } + } + + fill(_window$1, 'setTimeout', wrapTimeFn, wrappedBuiltIns); + fill(_window$1, 'setInterval', wrapTimeFn, wrappedBuiltIns); + + if (_window$1.requestAnimationFrame) { + fill(_window$1, 'requestAnimationFrame', function (orig) { + return function (cb) { + return orig(self.wrap(cb)); + }; + }, wrappedBuiltIns); + } // event targets borrowed from bugsnag-js: + // https://github.com/bugsnag/bugsnag-js/blob/master/src/bugsnag.js#L666 + + + var eventTargets = ['EventTarget', 'Window', 'Node', 'ApplicationCache', 'AudioTrackList', 'ChannelMergerNode', 'CryptoOperation', 'EventSource', 'FileReader', 'HTMLUnknownElement', 'IDBDatabase', 'IDBRequest', 'IDBTransaction', 'KeyOperation', 'MediaController', 'MessagePort', 'ModalWindow', 'Notification', 'SVGElementInstance', 'Screen', 'TextTrack', 'TextTrackCue', 'TextTrackList', 'WebSocket', 'WebSocketWorker', 'Worker', 'XMLHttpRequest', 'XMLHttpRequestEventTarget', 'XMLHttpRequestUpload']; + + for (var i = 0; i < eventTargets.length; i++) { + wrapEventTarget(eventTargets[i]); + } + }, + + /** + * Instrument browser built-ins w/ breadcrumb capturing + * - XMLHttpRequests + * - DOM interactions (click/typing) + * - window.location changes + * - console + * + * Can be disabled or individually configured via the `autoBreadcrumbs` config option + */ + _instrumentBreadcrumbs: function _instrumentBreadcrumbs() { + var self = this; + var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; + var wrappedBuiltIns = self._wrappedBuiltIns; + + function wrapProp(prop, xhr) { + if (prop in xhr && isFunction(xhr[prop])) { + fill(xhr, prop, function (orig) { + return self.wrap(orig); + }); // intentionally don't track filled methods on XHR instances + } + } + + if (autoBreadcrumbs.xhr && 'XMLHttpRequest' in _window$1) { + var xhrproto = XMLHttpRequest.prototype; + fill(xhrproto, 'open', function (origOpen) { + return function (method, url) { + // preserve arity + // if Sentry key appears in URL, don't capture + if (isString(url) && url.indexOf(self._globalKey) === -1) { + this.__raven_xhr = { + method: method, + url: url, + status_code: null + }; + } + + return origOpen.apply(this, arguments); + }; + }, wrappedBuiltIns); + fill(xhrproto, 'send', function (origSend) { + return function () { + // preserve arity + var xhr = this; + + function onreadystatechangeHandler() { + if (xhr.__raven_xhr && xhr.readyState === 4) { + try { + // touching statusCode in some platforms throws + // an exception + xhr.__raven_xhr.status_code = xhr.status; + } catch (e) { + /* do nothing */ + } + + self.captureBreadcrumb({ + type: 'http', + category: 'xhr', + data: xhr.__raven_xhr + }); + } + } + + var props = ['onload', 'onerror', 'onprogress']; + + for (var j = 0; j < props.length; j++) { + wrapProp(props[j], xhr); + } + + if ('onreadystatechange' in xhr && isFunction(xhr.onreadystatechange)) { + fill(xhr, 'onreadystatechange', function (orig) { + return self.wrap(orig, undefined, onreadystatechangeHandler); + } + /* intentionally don't track this instrumentation */ + ); + } else { + // if onreadystatechange wasn't actually set by the page on this xhr, we + // are free to set our own and capture the breadcrumb + xhr.onreadystatechange = onreadystatechangeHandler; + } + + return origSend.apply(this, arguments); + }; + }, wrappedBuiltIns); + } + + if (autoBreadcrumbs.xhr && supportsFetch()) { + fill(_window$1, 'fetch', function (origFetch) { + return function () { + // preserve arity + // Make a copy of the arguments to prevent deoptimization + // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments + var args = new Array(arguments.length); + + for (var i = 0; i < args.length; ++i) { + args[i] = arguments[i]; + } + + var fetchInput = args[0]; + var method = 'GET'; + var url; + + if (typeof fetchInput === 'string') { + url = fetchInput; + } else if ('Request' in _window$1 && fetchInput instanceof _window$1.Request) { + url = fetchInput.url; + + if (fetchInput.method) { + method = fetchInput.method; + } + } else { + url = '' + fetchInput; + } // if Sentry key appears in URL, don't capture, as it's our own request + + + if (url.indexOf(self._globalKey) !== -1) { + return origFetch.apply(this, args); + } + + if (args[1] && args[1].method) { + method = args[1].method; + } + + var fetchData = { + method: method, + url: url, + status_code: null + }; + return origFetch.apply(this, args).then(function (response) { + fetchData.status_code = response.status; + self.captureBreadcrumb({ + type: 'http', + category: 'fetch', + data: fetchData + }); + return response; + }); + }; + }, wrappedBuiltIns); + } // Capture breadcrumbs from any click that is unhandled / bubbled up all the way + // to the document. Do this before we instrument addEventListener. + + + if (autoBreadcrumbs.dom && this._hasDocument) { + if (_document.addEventListener) { + _document.addEventListener('click', self._breadcrumbEventHandler('click'), false); + + _document.addEventListener('keypress', self._keypressEventHandler(), false); + } else { + // IE8 Compatibility + _document.attachEvent('onclick', self._breadcrumbEventHandler('click')); + + _document.attachEvent('onkeypress', self._keypressEventHandler()); + } + } // record navigation (URL) changes + // NOTE: in Chrome App environment, touching history.pushState, *even inside + // a try/catch block*, will cause Chrome to output an error to console.error + // borrowed from: https://github.com/angular/angular.js/pull/13945/files + + + var chrome = _window$1.chrome; + var isChromePackagedApp = chrome && chrome.app && chrome.app.runtime; + var hasPushAndReplaceState = !isChromePackagedApp && _window$1.history && history.pushState && history.replaceState; + + if (autoBreadcrumbs.location && hasPushAndReplaceState) { + // TODO: remove onpopstate handler on uninstall() + var oldOnPopState = _window$1.onpopstate; + + _window$1.onpopstate = function () { + var currentHref = self._location.href; + + self._captureUrlChange(self._lastHref, currentHref); + + if (oldOnPopState) { + return oldOnPopState.apply(this, arguments); + } + }; + + var historyReplacementFunction = function historyReplacementFunction(origHistFunction) { + // note history.pushState.length is 0; intentionally not declaring + // params to preserve 0 arity + return function () + /* state, title, url */ + { + var url = arguments.length > 2 ? arguments[2] : undefined; // url argument is optional + + if (url) { + // coerce to string (this is what pushState does) + self._captureUrlChange(self._lastHref, url + ''); + } + + return origHistFunction.apply(this, arguments); + }; + }; + + fill(history, 'pushState', historyReplacementFunction, wrappedBuiltIns); + fill(history, 'replaceState', historyReplacementFunction, wrappedBuiltIns); + } + + if (autoBreadcrumbs.console && 'console' in _window$1 && console.log) { + // console + var consoleMethodCallback = function consoleMethodCallback(msg, data) { + self.captureBreadcrumb({ + message: msg, + level: data.level, + category: 'console' + }); + }; + + each(['debug', 'info', 'warn', 'error', 'log'], function (_, level) { + wrapConsoleMethod(console, level, consoleMethodCallback); + }); + } + }, + _restoreBuiltIns: function _restoreBuiltIns() { + // restore any wrapped builtins + var builtin; + + while (this._wrappedBuiltIns.length) { + builtin = this._wrappedBuiltIns.shift(); + var obj = builtin[0], + name = builtin[1], + orig = builtin[2]; + obj[name] = orig; + } + }, + _restoreConsole: function _restoreConsole() { + // eslint-disable-next-line guard-for-in + for (var method in this._originalConsoleMethods) { + this._originalConsole[method] = this._originalConsoleMethods[method]; + } + }, + _drainPlugins: function _drainPlugins() { + var self = this; // FIX ME TODO + + each(this._plugins, function (_, plugin) { + var installer = plugin[0]; + var args = plugin[1]; + installer.apply(self, [self].concat(args)); + }); + }, + _parseDSN: function _parseDSN(str) { + var m = dsnPattern.exec(str), + dsn = {}, + i = 7; + + try { + while (i--) { + dsn[dsnKeys[i]] = m[i] || ''; + } + } catch (e) { + throw new configError('Invalid DSN: ' + str); + } + + if (dsn.pass && !this._globalOptions.allowSecretKey) { + throw new configError('Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key'); + } + + return dsn; + }, + _getGlobalServer: function _getGlobalServer(uri) { + // assemble the endpoint from the uri pieces + var globalServer = '//' + uri.host + (uri.port ? ':' + uri.port : ''); + + if (uri.protocol) { + globalServer = uri.protocol + ':' + globalServer; + } + + return globalServer; + }, + _handleOnErrorStackInfo: function _handleOnErrorStackInfo() { + // if we are intentionally ignoring errors via onerror, bail out + if (!this._ignoreOnError) { + this._handleStackInfo.apply(this, arguments); + } + }, + _handleStackInfo: function _handleStackInfo(stackInfo, options) { + var frames = this._prepareFrames(stackInfo, options); + + this._triggerEvent('handle', { + stackInfo: stackInfo, + options: options + }); + + this._processException(stackInfo.name, stackInfo.message, stackInfo.url, stackInfo.lineno, frames, options); + }, + _prepareFrames: function _prepareFrames(stackInfo, options) { + var self = this; + var frames = []; + + if (stackInfo.stack && stackInfo.stack.length) { + each(stackInfo.stack, function (i, stack) { + var frame = self._normalizeFrame(stack, stackInfo.url); + + if (frame) { + frames.push(frame); + } + }); // e.g. frames captured via captureMessage throw + + if (options && options.trimHeadFrames) { + for (var j = 0; j < options.trimHeadFrames && j < frames.length; j++) { + frames[j].in_app = false; + } + } + } + + frames = frames.slice(0, this._globalOptions.stackTraceLimit); + return frames; + }, + _normalizeFrame: function _normalizeFrame(frame, stackInfoUrl) { + // normalize the frames data + var normalized = { + filename: frame.url, + lineno: frame.line, + colno: frame.column, + function: frame.func || '?' + }; // Case when we don't have any information about the error + // E.g. throwing a string or raw object, instead of an `Error` in Firefox + // Generating synthetic error doesn't add any value here + // + // We should probably somehow let a user know that they should fix their code + + if (!frame.url) { + normalized.filename = stackInfoUrl; // fallback to whole stacks url from onerror handler + } + + normalized.in_app = !( // determine if an exception came from outside of our app + // first we check the global includePaths list. + !!this._globalOptions.includePaths.test && !this._globalOptions.includePaths.test(normalized.filename) || // Now we check for fun, if the function name is Raven or TraceKit + /(Raven|TraceKit)\./.test(normalized['function']) || // finally, we do a last ditch effort and check for raven.min.js + /raven\.(min\.)?js$/.test(normalized.filename)); + return normalized; + }, + _processException: function _processException(type, message, fileurl, lineno, frames, options) { + var prefixedMessage = (type ? type + ': ' : '') + (message || ''); + + if (!!this._globalOptions.ignoreErrors.test && (this._globalOptions.ignoreErrors.test(message) || this._globalOptions.ignoreErrors.test(prefixedMessage))) { + return; + } + + var stacktrace; + + if (frames && frames.length) { + fileurl = frames[0].filename || fileurl; // Sentry expects frames oldest to newest + // and JS sends them as newest to oldest + + frames.reverse(); + stacktrace = { + frames: frames + }; + } else if (fileurl) { + stacktrace = { + frames: [{ + filename: fileurl, + lineno: lineno, + in_app: true + }] + }; + } + + if (!!this._globalOptions.ignoreUrls.test && this._globalOptions.ignoreUrls.test(fileurl)) { + return; + } + + if (!!this._globalOptions.whitelistUrls.test && !this._globalOptions.whitelistUrls.test(fileurl)) { + return; + } + + var data = objectMerge({ + // sentry.interfaces.Exception + exception: { + values: [{ + type: type, + value: message, + stacktrace: stacktrace + }] + }, + culprit: fileurl + }, options); // Fire away! + + this._send(data); + }, + _trimPacket: function _trimPacket(data) { + // For now, we only want to truncate the two different messages + // but this could/should be expanded to just trim everything + var max = this._globalOptions.maxMessageLength; + + if (data.message) { + data.message = truncate(data.message, max); + } + + if (data.exception) { + var exception = data.exception.values[0]; + exception.value = truncate(exception.value, max); + } + + var request = data.request; + + if (request) { + if (request.url) { + request.url = truncate(request.url, this._globalOptions.maxUrlLength); + } + + if (request.Referer) { + request.Referer = truncate(request.Referer, this._globalOptions.maxUrlLength); + } + } + + if (data.breadcrumbs && data.breadcrumbs.values) this._trimBreadcrumbs(data.breadcrumbs); + return data; + }, + + /** + * Truncate breadcrumb values (right now just URLs) + */ + _trimBreadcrumbs: function _trimBreadcrumbs(breadcrumbs) { + // known breadcrumb properties with urls + // TODO: also consider arbitrary prop values that start with (https?)?:// + var urlProps = ['to', 'from', 'url'], + urlProp, + crumb, + data; + + for (var i = 0; i < breadcrumbs.values.length; ++i) { + crumb = breadcrumbs.values[i]; + if (!crumb.hasOwnProperty('data') || !isObject(crumb.data) || objectFrozen(crumb.data)) continue; + data = objectMerge({}, crumb.data); + + for (var j = 0; j < urlProps.length; ++j) { + urlProp = urlProps[j]; + + if (data.hasOwnProperty(urlProp) && data[urlProp]) { + data[urlProp] = truncate(data[urlProp], this._globalOptions.maxUrlLength); + } + } + + breadcrumbs.values[i].data = data; + } + }, + _getHttpData: function _getHttpData() { + if (!this._hasNavigator && !this._hasDocument) return; + var httpData = {}; + + if (this._hasNavigator && _navigator.userAgent) { + httpData.headers = { + 'User-Agent': navigator.userAgent + }; + } // Check in `window` instead of `document`, as we may be in ServiceWorker environment + + + if (_window$1.location && _window$1.location.href) { + httpData.url = _window$1.location.href; + } + + if (this._hasDocument && _document.referrer) { + if (!httpData.headers) httpData.headers = {}; + httpData.headers.Referer = _document.referrer; + } + + return httpData; + }, + _resetBackoff: function _resetBackoff() { + this._backoffDuration = 0; + this._backoffStart = null; + }, + _shouldBackoff: function _shouldBackoff() { + return this._backoffDuration && now() - this._backoffStart < this._backoffDuration; + }, + + /** + * Returns true if the in-process data payload matches the signature + * of the previously-sent data + * + * NOTE: This has to be done at this level because TraceKit can generate + * data from window.onerror WITHOUT an exception object (IE8, IE9, + * other old browsers). This can take the form of an "exception" + * data object with a single frame (derived from the onerror args). + */ + _isRepeatData: function _isRepeatData(current) { + var last = this._lastData; + if (!last || current.message !== last.message || // defined for captureMessage + current.culprit !== last.culprit // defined for captureException/onerror + ) return false; // Stacktrace interface (i.e. from captureMessage) + + if (current.stacktrace || last.stacktrace) { + return isSameStacktrace(current.stacktrace, last.stacktrace); + } else if (current.exception || last.exception) { + // Exception interface (i.e. from captureException/onerror) + return isSameException(current.exception, last.exception); + } + + return true; + }, + _setBackoffState: function _setBackoffState(request) { + // If we are already in a backoff state, don't change anything + if (this._shouldBackoff()) { + return; + } + + var status = request.status; // 400 - project_id doesn't exist or some other fatal + // 401 - invalid/revoked dsn + // 429 - too many requests + + if (!(status === 400 || status === 401 || status === 429)) return; + var retry; + + try { + // If Retry-After is not in Access-Control-Expose-Headers, most + // browsers will throw an exception trying to access it + if (supportsFetch()) { + retry = request.headers.get('Retry-After'); + } else { + retry = request.getResponseHeader('Retry-After'); + } // Retry-After is returned in seconds + + + retry = parseInt(retry, 10) * 1000; + } catch (e) { + /* eslint no-empty:0 */ + } + + this._backoffDuration = retry ? // If Sentry server returned a Retry-After value, use it + retry : // Otherwise, double the last backoff duration (starts at 1 sec) + this._backoffDuration * 2 || 1000; + this._backoffStart = now(); + }, + _send: function _send(data) { + var globalOptions = this._globalOptions; + + var baseData = { + project: this._globalProject, + logger: globalOptions.logger, + platform: 'javascript' + }, + httpData = this._getHttpData(); + + if (httpData) { + baseData.request = httpData; + } // HACK: delete `trimHeadFrames` to prevent from appearing in outbound payload + + + if (data.trimHeadFrames) delete data.trimHeadFrames; + data = objectMerge(baseData, data); // Merge in the tags and extra separately since objectMerge doesn't handle a deep merge + + data.tags = objectMerge(objectMerge({}, this._globalContext.tags), data.tags); + data.extra = objectMerge(objectMerge({}, this._globalContext.extra), data.extra); // Send along our own collected metadata with extra + + data.extra['session:duration'] = now() - this._startTime; + + if (this._breadcrumbs && this._breadcrumbs.length > 0) { + // intentionally make shallow copy so that additions + // to breadcrumbs aren't accidentally sent in this request + data.breadcrumbs = { + values: [].slice.call(this._breadcrumbs, 0) + }; + } + + if (this._globalContext.user) { + // sentry.interfaces.User + data.user = this._globalContext.user; + } // Include the environment if it's defined in globalOptions + + + if (globalOptions.environment) data.environment = globalOptions.environment; // Include the release if it's defined in globalOptions + + if (globalOptions.release) data.release = globalOptions.release; // Include server_name if it's defined in globalOptions + + if (globalOptions.serverName) data.server_name = globalOptions.serverName; // Cleanup empty properties before sending them to the server + + Object.keys(data).forEach(function (key) { + if (data[key] == null || data[key] === '' || isEmptyObject(data[key])) { + delete data[key]; + } + }); + + if (isFunction(globalOptions.dataCallback)) { + data = globalOptions.dataCallback(data) || data; + } // Why?????????? + + + if (!data || isEmptyObject(data)) { + return; + } // Check if the request should be filtered or not + + + if (isFunction(globalOptions.shouldSendCallback) && !globalOptions.shouldSendCallback(data)) { + return; + } // Backoff state: Sentry server previously responded w/ an error (e.g. 429 - too many requests), + // so drop requests until "cool-off" period has elapsed. + + + if (this._shouldBackoff()) { + this._logDebug('warn', 'Raven dropped error due to backoff: ', data); + + return; + } + + if (typeof globalOptions.sampleRate === 'number') { + if (Math.random() < globalOptions.sampleRate) { + this._sendProcessedPayload(data); + } + } else { + this._sendProcessedPayload(data); + } + }, + _getUuid: function _getUuid() { + return uuid4(); + }, + _sendProcessedPayload: function _sendProcessedPayload(data, callback) { + var self = this; + var globalOptions = this._globalOptions; + if (!this.isSetup()) return; // Try and clean up the packet before sending by truncating long values + + data = this._trimPacket(data); // ideally duplicate error testing should occur *before* dataCallback/shouldSendCallback, + // but this would require copying an un-truncated copy of the data packet, which can be + // arbitrarily deep (extra_data) -- could be worthwhile? will revisit + + if (!this._globalOptions.allowDuplicates && this._isRepeatData(data)) { + this._logDebug('warn', 'Raven dropped repeat event: ', data); + + return; + } // Send along an event_id if not explicitly passed. + // This event_id can be used to reference the error within Sentry itself. + // Set lastEventId after we know the error should actually be sent + + + this._lastEventId = data.event_id || (data.event_id = this._getUuid()); // Store outbound payload after trim + + this._lastData = data; + + this._logDebug('debug', 'Raven about to send:', data); + + var auth = { + sentry_version: '7', + sentry_client: 'raven-js/' + this.VERSION, + sentry_key: this._globalKey + }; + + if (this._globalSecret) { + auth.sentry_secret = this._globalSecret; + } + + var exception = data.exception && data.exception.values[0]; // only capture 'sentry' breadcrumb is autoBreadcrumbs is truthy + + if (this._globalOptions.autoBreadcrumbs && this._globalOptions.autoBreadcrumbs.sentry) { + this.captureBreadcrumb({ + category: 'sentry', + message: exception ? (exception.type ? exception.type + ': ' : '') + exception.value : data.message, + event_id: data.event_id, + level: data.level || 'error' // presume error unless specified + + }); + } + + var url = this._globalEndpoint; + + (globalOptions.transport || this._makeRequest).call(this, { + url: url, + auth: auth, + data: data, + options: globalOptions, + onSuccess: function success() { + self._resetBackoff(); + + self._triggerEvent('success', { + data: data, + src: url + }); + + callback && callback(); + }, + onError: function failure(error) { + self._logDebug('error', 'Raven transport failed to send: ', error); + + if (error.request) { + self._setBackoffState(error.request); + } + + self._triggerEvent('failure', { + data: data, + src: url + }); + + error = error || new Error('Raven send failed (no additional details provided)'); + callback && callback(error); + } + }); + }, + _makeRequest: function _makeRequest(opts) { + // Auth is intentionally sent as part of query string (NOT as custom HTTP header) to avoid preflight CORS requests + var url = opts.url + '?' + urlencode(opts.auth); + var evaluatedHeaders = null; + var evaluatedFetchParameters = {}; + + if (opts.options.headers) { + evaluatedHeaders = this._evaluateHash(opts.options.headers); + } + + if (opts.options.fetchParameters) { + evaluatedFetchParameters = this._evaluateHash(opts.options.fetchParameters); + } + + if (supportsFetch()) { + evaluatedFetchParameters.body = stringify_1(opts.data); + var defaultFetchOptions = objectMerge({}, this._fetchDefaults); + var fetchOptions = objectMerge(defaultFetchOptions, evaluatedFetchParameters); + + if (evaluatedHeaders) { + fetchOptions.headers = evaluatedHeaders; + } + + return _window$1.fetch(url, fetchOptions).then(function (response) { + if (response.ok) { + opts.onSuccess && opts.onSuccess(); + } else { + var error = new Error('Sentry error code: ' + response.status); // It's called request only to keep compatibility with XHR interface + // and not add more redundant checks in setBackoffState method + + error.request = response; + opts.onError && opts.onError(error); + } + })['catch'](function () { + opts.onError && opts.onError(new Error('Sentry error code: network unavailable')); + }); + } + + var request = _window$1.XMLHttpRequest && new _window$1.XMLHttpRequest(); + if (!request) return; // if browser doesn't support CORS (e.g. IE7), we are out of luck + + var hasCORS = 'withCredentials' in request || typeof XDomainRequest !== 'undefined'; + if (!hasCORS) return; + + if ('withCredentials' in request) { + request.onreadystatechange = function () { + if (request.readyState !== 4) { + return; + } else if (request.status === 200) { + opts.onSuccess && opts.onSuccess(); + } else if (opts.onError) { + var err = new Error('Sentry error code: ' + request.status); + err.request = request; + opts.onError(err); + } + }; + } else { + request = new XDomainRequest(); // xdomainrequest cannot go http -> https (or vice versa), + // so always use protocol relative + + url = url.replace(/^https?:/, ''); // onreadystatechange not supported by XDomainRequest + + if (opts.onSuccess) { + request.onload = opts.onSuccess; + } + + if (opts.onError) { + request.onerror = function () { + var err = new Error('Sentry error code: XDomainRequest'); + err.request = request; + opts.onError(err); + }; + } + } + + request.open('POST', url); + + if (evaluatedHeaders) { + each(evaluatedHeaders, function (key, value) { + request.setRequestHeader(key, value); + }); + } + + request.send(stringify_1(opts.data)); + }, + _evaluateHash: function _evaluateHash(hash) { + var evaluated = {}; + + for (var key in hash) { + if (hash.hasOwnProperty(key)) { + var value = hash[key]; + evaluated[key] = typeof value === 'function' ? value() : value; + } + } + + return evaluated; + }, + _logDebug: function _logDebug(level) { + if (this._originalConsoleMethods[level] && this.debug) { + // In IE<10 console methods do not have their own 'apply' method + Function.prototype.apply.call(this._originalConsoleMethods[level], this._originalConsole, [].slice.call(arguments, 1)); + } + }, + _mergeContext: function _mergeContext(key, context) { + if (isUndefined(context)) { + delete this._globalContext[key]; + } else { + this._globalContext[key] = objectMerge(this._globalContext[key] || {}, context); + } + } +}; // Deprecations + +Raven$1.prototype.setUser = Raven$1.prototype.setUserContext; +Raven$1.prototype.setReleaseContext = Raven$1.prototype.setRelease; +var raven = Raven$1; + +/** + * Enforces a single instance of the Raven client, and the + * main entry point for Raven. If you are a consumer of the + * Raven library, you SHOULD load this file (vs raven.js). + **/ +// This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) + +var _window = typeof window !== 'undefined' ? window : typeof commonjsGlobal !== 'undefined' ? commonjsGlobal : typeof self !== 'undefined' ? self : {}; + +var _Raven = _window.Raven; +var Raven = new raven(); +/* + * Allow multiple versions of Raven to be installed. + * Strip Raven from the global context and returns the instance. + * + * @return {Raven} + */ + +Raven.noConflict = function () { + _window.Raven = _Raven; + return Raven; +}; + +Raven.afterLoad(); +var singleton = Raven; + +/** + * console plugin + * + * Monkey patches console.* calls into Sentry messages with + * their appropriate log levels. (Experimental) + * + * Options: + * + * `levels`: An array of levels (methods on `console`) to report to Sentry. + * Defaults to debug, info, warn, and error. + */ + +var wrapConsoleMethod$1 = console$1.wrapMethod; + +function consolePlugin(Raven, console, pluginOptions) { + console = console || window.console || {}; + pluginOptions = pluginOptions || {}; + var logLevels = pluginOptions.levels || ['debug', 'info', 'warn', 'error']; + if ('assert' in console) logLevels.push('assert'); + + var callback = function callback(msg, data) { + Raven.captureMessage(msg, data); + }; + + var level = logLevels.pop(); + + while (level) { + wrapConsoleMethod$1(console, level, callback); + level = logLevels.pop(); + } +} + +var console$3 = consolePlugin; + +/** + * Ember.js plugin + * + * Patches event handler callbacks and ajax callbacks. + */ +function emberPlugin(Raven, Ember) { + Ember = Ember || window.Ember; // quit if Ember isn't on the page + + if (!Ember) return; + var _oldOnError = Ember.onerror; + + Ember.onerror = function EmberOnError(error) { + Raven.captureException(error); + + if (typeof _oldOnError === 'function') { + _oldOnError.call(this, error); + } + }; + + Ember.RSVP.on('error', function (reason) { + if (reason instanceof Error) { + Raven.captureException(reason, { + extra: { + context: 'Unhandled Promise error detected' + } + }); + } else { + Raven.captureMessage('Unhandled Promise error detected', { + extra: { + reason: reason + } + }); + } + }); +} + +var ember = emberPlugin; + +/* This file was generated by './scripts/generate-plugin-combinations.js'! */ + +singleton.addPlugin(console$3).addPlugin(ember); +var console_ember = {}; + +return console_ember; + +}))); diff --git a/dist/console,ember/raven.min.js b/dist/console,ember/raven.min.js new file mode 100644 index 000000000000..9aba4ea3b787 --- /dev/null +++ b/dist/console,ember/raven.min.js @@ -0,0 +1,3 @@ +/*! Raven.js 3.22.2 (1b6187b) | github.com/getsentry/raven-js */ +!function(a,b){"object"==typeof exports&&"undefined"!=typeof module?module.exports=b():"function"==typeof define&&define.amd?define(b):a.Raven=b()}(this,function(){"use strict";function a(a,b){return b={exports:{}},a(b,b.exports),b.exports}function b(a){return(b="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(a){return typeof a}:function(a){return a&&"function"==typeof Symbol&&a.constructor===Symbol&&a!==Symbol.prototype?"symbol":typeof a})(a)}function c(a){return"object"===b(a)&&null!==a}function d(a){switch({}.toString.call(a)){case"[object Error]":return!0;case"[object Exception]":return!0;case"[object DOMException]":return!0;default:return a instanceof Error}}function e(a){return l()&&"[object ErrorEvent]"==={}.toString.call(a)}function f(a){return void 0===a}function g(a){return"function"==typeof a}function h(a){return"[object Object]"===Object.prototype.toString.call(a)}function i(a){return"[object String]"===Object.prototype.toString.call(a)}function j(a){return"[object Array]"===Object.prototype.toString.call(a)}function k(a){if(!h(a))return!1;for(var b in a)if(a.hasOwnProperty(b))return!1;return!0}function l(){try{return new ErrorEvent(""),!0}catch(a){return!1}}function m(){if(!("fetch"in O))return!1;try{return new Headers,new Request(""),new Response,!0}catch(a){return!1}}function n(a){function b(b,c){var d=a(b)||b;return c?c(d)||d:d}return b}function o(a,b){var c,d;if(f(a.length))for(c in a)s(a,c)&&b.call(null,c,a[c]);else if(d=a.length)for(c=0;c ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function y(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&i(b))for(c=b.split(/\s+/),f=0;f=0;--b)l[b]===a&&l.splice(b,1)}function c(){g(),l=[]}function d(a,b){var c=null;if(!b||Q.collectWindowErrors){for(var d in l)if(l.hasOwnProperty(d))try{l[d].apply(null,[a].concat(S.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function e(a,b,c,e,f){var g=null,i=P.isErrorEvent(f)?f.error:f,k=P.isErrorEvent(a)?a.message:a;if(o)Q.computeStackTrace.augmentStackTraceWithInitialElement(o,b,c,k),h();else if(i&&P.isError(i))g=Q.computeStackTrace(i),d(g,!0);else{var l,m={url:b,line:c,column:e},n=void 0;if("[object String]"==={}.toString.call(k)){var l=k.match(U);l&&(n=l[1],k=l[2])}m.func=T,g={name:n,message:k,url:F(),stack:[m]},d(g,!0)}return!!j&&j.apply(this,arguments)}function f(){k||(j=R.onerror,R.onerror=e,k=!0)}function g(){k&&(R.onerror=j,k=!1,j=void 0)}function h(){var a=o,b=m;m=null,o=null,n=null,d.apply(null,[a,!1].concat(b))}function i(a,b){var c=S.call(arguments,1);if(o){if(n===a)return;h()}var d=Q.computeStackTrace(a);if(o=d,n=a,m=c,setTimeout(function(){n===a&&h()},d.incomplete?2e3:0),b!==!1)throw a}var j,k,l=[],m=null,n=null,o=null;return i.subscribe=a,i.unsubscribe=b,i.uninstall=c,i}(),Q.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,d,e=/^\s*at (.*?) ?\(((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,f=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|\[native).*?|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,g=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,h=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,i=/\((\S*)(?::(\d+))(?::(\d+))\)/,j=a.stack.split("\n"),k=[],l=(/^(.*) is undefined$/.exec(a.message),0),m=j.length;l eval")>-1;o&&(b=h.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==l||c[5]||"undefined"==typeof a.columnNumber||(k[0].column=a.columnNumber+1),d={url:c[3],func:c[1]||T,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}!d.func&&d.line&&(d.func=T),k.push(d)}return k.length?{name:a.name,message:a.message,url:F(),stack:k}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=T),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,e){for(var f,g,h=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,i=[],j={},k=!1,l=c.caller;l&&!k;l=l.caller)if(l!==d&&l!==Q.report){if(g={url:null,func:T,line:null,column:null},l.name?g.func=l.name:(f=h.exec(l.toString()))&&(g.func=f[1]),"undefined"==typeof g.func)try{g.func=f.input.substring(0,f.input.indexOf("{"))}catch(m){}j[""+l]?k=!0:j[""+l]=!0,i.push(g)}e&&i.splice(0,e);var n={name:a.name,message:a.message,url:F(),stack:i};return b(n,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),n}function d(b,d){var e=null;d=null==d?0:+d;try{if(e=a(b))return e}catch(f){if(Q.debug)throw f}try{if(e=c(b,d+1))return e}catch(f){if(Q.debug)throw f}return{name:b.name,message:b.message,url:F()}}return d.augmentStackTraceWithInitialElement=b,d.computeStackTraceFromStackProp=a,d}();var V=Q,W=a(function(a,b){function c(a,b){for(var c=0;c0){var i=c(d,this);~i?d.splice(i+1):d.push(this),~i?f.splice(i,1/0,g):f.push(g),~c(d,h)&&(h=b.call(this,g,h))}else d.push(h);return null==a?h instanceof Error?e(h):h:a.call(this,g,h)}}b=a.exports=d,b.getSerialize=f});G.prototype=new Error,G.prototype.constructor=G;var X=G,Y=function(a,b,c){var d=a[b],e=a;if(b in a){var f="warn"===b?"warning":b;a[b]=function(){var a=[].slice.call(arguments),g=P.safeJoin(a," "),h={level:f,logger:"console",extra:{arguments:a}};"assert"===b?a[0]===!1&&(g="Assertion failed: "+(P.safeJoin(a.slice(1)," ")||"console.assert"),h.extra.arguments=a.slice(1),c&&c(g,h)):c&&c(g,h),d&&Function.prototype.apply.call(d,e,a)}}},Z={wrapMethod:Y},$=P.isError,_=P.isObject,aa=P.isErrorEvent,ba=P.isUndefined,ca=P.isFunction,da=P.isString,ea=P.isArray,fa=P.isEmptyObject,ga=P.each,ha=P.objectMerge,ia=P.truncate,ja=P.objectFrozen,ka=P.hasKey,la=P.joinRegExp,ma=P.urlencode,na=P.uuid4,oa=P.htmlTreeAsString,pa=P.isSameException,qa=P.isSameStacktrace,ra=P.parseUrl,sa=P.fill,ta=P.supportsFetch,ua=Z.wrapMethod,va="source protocol user pass host port path".split(" "),wa=/^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/,xa="undefined"!=typeof window?window:"undefined"!=typeof M?M:"undefined"!=typeof self?self:{},ya=xa.document,za=xa.navigator;J.prototype={VERSION:"3.22.2",debug:!1,TraceKit:V,config:function(a,b){var c=this;if(c.i)return this.C("error","Error: Raven has already been configured"),c;if(!a)return c;var d=c.m;b&&ga(b,function(a,b){"tags"===a||"extra"===a||"user"===a?c.l[a]=b:d[a]=b}),c.setDSN(a),d.ignoreErrors.push(/^Script error\.?$/),d.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/),d.ignoreErrors=la(d.ignoreErrors),d.ignoreUrls=!!d.ignoreUrls.length&&la(d.ignoreUrls),d.whitelistUrls=!!d.whitelistUrls.length&&la(d.whitelistUrls),d.includePaths=la(d.includePaths),d.maxBreadcrumbs=Math.max(0,Math.min(d.maxBreadcrumbs||100,100));var e={xhr:!0,console:!0,dom:!0,location:!0,sentry:!0},f=d.autoBreadcrumbs;"[object Object]"==={}.toString.call(f)?f=ha(e,f):f!==!1&&(f=e),d.autoBreadcrumbs=f;var g={tryCatch:!0},h=d.instrument;return"[object Object]"==={}.toString.call(h)?h=ha(g,h):h!==!1&&(h=g),d.instrument=h,V.collectWindowErrors=!!d.collectWindowErrors,c},install:function(){var a=this;return a.isSetup()&&!a.p&&(V.report.subscribe(function(){a.D.apply(a,arguments)}),a.E(),a.m.instrument&&a.m.instrument.tryCatch&&a.F(),a.m.autoBreadcrumbs&&a.G(),a.H(),a.p=!0),Error.stackTraceLimit=a.m.stackTraceLimit,this},setDSN:function(a){var b=this,c=b.I(a),d=c.path.lastIndexOf("/"),e=c.path.substr(1,d);b.J=a,b.j=c.user,b.K=c.pass&&c.pass.substr(1),b.k=c.path.substr(d+1),b.i=b.L(c),b.M=b.i+"/"+e+"api/"+b.k+"/store/",this.A()},context:function(a,b,c){return ca(a)&&(c=b||[],b=a,a=void 0),this.wrap(a,b).apply(this,c)},wrap:function(a,b,c){function d(){var d=[],f=arguments.length,g=!a||a&&a.deep!==!1;for(c&&ca(c)&&c.apply(this,arguments);f--;)d[f]=g?e.wrap(a,arguments[f]):arguments[f];try{return b.apply(this,d)}catch(h){throw e.N(),e.captureException(h,a),h}}var e=this;if(ba(b)&&!ca(a))return a;if(ca(a)&&(b=a,a=void 0),!ca(b))return b;try{if(b.a)return b;if(b.O)return b.O}catch(f){return b}for(var g in b)ka(b,g)&&(d[g]=b[g]);return d.prototype=b.prototype,b.O=d,d.a=!0,d.b=b,d},uninstall:function(){return V.report.uninstall(),this.P(),this.Q(),this.R(),Error.stackTraceLimit=this.q,this.p=!1,this},captureException:function(a,b){b=ha({trimHeadFrames:0},b?b:{});var c=!$(a),d=!aa(a),e=aa(a)&&!a.error;if(c&&d||e)return this.captureMessage(a,ha(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}));aa(a)&&(a=a.error),this.f=a;try{var f=V.computeStackTrace(a);this.S(f,b)}catch(g){if(a!==g)throw g}return this},captureMessage:function(a,b){if(!this.m.ignoreErrors.test||!this.m.ignoreErrors.test(a)){b=b||{};var c,d=ha({message:a+""},b);try{throw new Error(a)}catch(e){c=e}c.name=null;var f=V.computeStackTrace(c),g=ea(f.stack)&&f.stack[1],h=g&&g.url||"";if((!this.m.ignoreUrls.test||!this.m.ignoreUrls.test(h))&&(!this.m.whitelistUrls.test||this.m.whitelistUrls.test(h))){if(this.m.stacktrace||b&&b.stacktrace){b=ha({fingerprint:a,trimHeadFrames:(b.trimHeadFrames||0)+1},b);var i=this.T(f,b);d.stacktrace={frames:i.reverse()}}return this.U(d),this}}},captureBreadcrumb:function(a){var b=ha({timestamp:H()/1e3},a);if(ca(this.m.breadcrumbCallback)){var c=this.m.breadcrumbCallback(b);if(_(c)&&!fa(c))b=c;else if(c===!1)return this}return this.w.push(b),this.w.length>this.m.maxBreadcrumbs&&this.w.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.t.push([a,b]),this.p&&this.H(),this},setUserContext:function(a){return this.l.user=a,this},setExtraContext:function(a){return this.V("extra",a),this},setTagsContext:function(a){return this.V("tags",a),this},clearContext:function(){return this.l={},this},getContext:function(){return JSON.parse(W(this.l))},setEnvironment:function(a){return this.m.environment=a,this},setRelease:function(a){return this.m.release=a,this},setDataCallback:function(a){var b=this.m.dataCallback;return this.m.dataCallback=I(b,a),this},setBreadcrumbCallback:function(a){var b=this.m.breadcrumbCallback;return this.m.breadcrumbCallback=I(b,a),this},setShouldSendCallback:function(a){var b=this.m.shouldSendCallback;return this.m.shouldSendCallback=I(b,a),this},setTransport:function(a){return this.m.transport=a,this},lastException:function(){return this.f},lastEventId:function(){return this.h},isSetup:function(){return!!this.c&&(!!this.i||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.C("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=xa.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(ya){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new X("Missing eventId");var c=a.dsn||this.J;if(!c)throw new X("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.l.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.L(this.I(c)),h=ya.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(ya.head||ya.body).appendChild(h)}},N:function(){var a=this;this.o+=1,setTimeout(function(){a.o-=1})},W:function(a,b){var c,d;if(this.d){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),ya.createEvent?(c=ya.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=ya.createEventObject(),c.eventType=a);for(d in b)ka(b,d)&&(c[d]=b[d]);if(ya.createEvent)ya.dispatchEvent(c);else try{ya.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},X:function(a){var b=this;return function(c){if(b.Y=null,b.x!==c){b.x=c;var d;try{d=oa(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},Z:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.Y;g||a.X("input")(c),clearTimeout(g),a.Y=setTimeout(function(){a.Y=null},b)}}},$:function(a,b){var c=ra(this.y.href),d=ra(b),e=ra(a);this.z=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},E:function(){var a=this;a._=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.a?a._.apply(this.b,arguments):a._.apply(this,arguments)}},P:function(){this._&&(Function.prototype.toString=this._)},F:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.$(b.z,c+""),a.apply(this,arguments)}};sa(history,"pushState",j,d),sa(history,"replaceState",j,d)}if(c.console&&"console"in xa&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};ga(["debug","info","warn","error","log"],function(a,b){ua(console,b,k)})}},Q:function(){for(var a;this.v.length;){a=this.v.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},R:function(){for(var a in this.s)this.r[a]=this.s[a]},H:function(){var a=this;ga(this.t,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},I:function(a){var b=wa.exec(a),c={},d=7;try{for(;d--;)c[va[d]]=b[d]||""}catch(e){throw new X("Invalid DSN: "+a)}if(c.pass&&!this.m.allowSecretKey)throw new X("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},L:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},D:function(){this.o||this.S.apply(this,arguments)},S:function(a,b){var c=this.T(a,b);this.W("handle",{stackInfo:a,options:b}),this.ba(a.name,a.message,a.url,a.lineno,c,b)},T:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(ga(a.stack,function(b,e){var f=c.ca(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.w,0)}),this.l.user&&(a.user=this.l.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||fa(a[b]))&&delete a[b]}),ca(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!fa(a)&&(!ca(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.ia()?void this.C("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() href parsing trick because React Native and other +// environments where DOM might not be available + + +function parseUrl$1(url) { + if (typeof url !== 'string') return {}; + var match = url.match(/^(([^:\/?#]+):)?(\/\/([^\/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?$/); // coerce to undefined values to empty string so we don't get 'undefined' + + var query = match[6] || ''; + var fragment = match[8] || ''; + return { + protocol: match[2], + host: match[4], + path: match[5], + relative: match[5] + query + fragment // everything minus origin + + }; +} + +function uuid4$1() { + var crypto = _window$3.crypto || _window$3.msCrypto; + + if (!isUndefined$1(crypto) && crypto.getRandomValues) { + // Use window.crypto API if available + // eslint-disable-next-line no-undef + var arr = new Uint16Array(8); + crypto.getRandomValues(arr); // set 4 in byte 7 + + arr[3] = arr[3] & 0xfff | 0x4000; // set 2 most significant bits of byte 9 to '10' + + arr[4] = arr[4] & 0x3fff | 0x8000; + + var pad = function pad(num) { + var v = num.toString(16); + + while (v.length < 4) { + v = '0' + v; + } + + return v; + }; + + return pad(arr[0]) + pad(arr[1]) + pad(arr[2]) + pad(arr[3]) + pad(arr[4]) + pad(arr[5]) + pad(arr[6]) + pad(arr[7]); + } else { + // http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/2117523#2117523 + return 'xxxxxxxxxxxx4xxxyxxxxxxxxxxxxxxx'.replace(/[xy]/g, function (c) { + var r = Math.random() * 16 | 0, + v = c === 'x' ? r : r & 0x3 | 0x8; + return v.toString(16); + }); + } +} +/** + * Given a child DOM element, returns a query-selector statement describing that + * and its ancestors + * e.g. [HTMLElement] => body > div > input#foo.btn[name=baz] + * @param elem + * @returns {string} + */ + + +function htmlTreeAsString$1(elem) { + /* eslint no-extra-parens:0*/ + var MAX_TRAVERSE_HEIGHT = 5, + MAX_OUTPUT_LEN = 80, + out = [], + height = 0, + len = 0, + separator = ' > ', + sepLength = separator.length, + nextStr; + + while (elem && height++ < MAX_TRAVERSE_HEIGHT) { + nextStr = htmlElementAsString(elem); // bail out if + // - nextStr is the 'html' element + // - the length of the string that would be created exceeds MAX_OUTPUT_LEN + // (ignore this limit if we are on the first iteration) + + if (nextStr === 'html' || height > 1 && len + out.length * sepLength + nextStr.length >= MAX_OUTPUT_LEN) { + break; + } + + out.push(nextStr); + len += nextStr.length; + elem = elem.parentNode; + } + + return out.reverse().join(separator); +} +/** + * Returns a simple, query-selector representation of a DOM element + * e.g. [HTMLElement] => input#foo.btn[name=baz] + * @param HTMLElement + * @returns {string} + */ + + +function htmlElementAsString(elem) { + var out = [], + className, + classes, + key, + attr, + i; + + if (!elem || !elem.tagName) { + return ''; + } + + out.push(elem.tagName.toLowerCase()); + + if (elem.id) { + out.push('#' + elem.id); + } + + className = elem.className; + + if (className && isString$1(className)) { + classes = className.split(/\s+/); + + for (i = 0; i < classes.length; i++) { + out.push('.' + classes[i]); + } + } + + var attrWhitelist = ['type', 'name', 'title', 'alt']; + + for (i = 0; i < attrWhitelist.length; i++) { + key = attrWhitelist[i]; + attr = elem.getAttribute(key); + + if (attr) { + out.push('[' + key + '="' + attr + '"]'); + } + } + + return out.join(''); +} +/** + * Returns true if either a OR b is truthy, but not both + */ + + +function isOnlyOneTruthy(a, b) { + return !!(!!a ^ !!b); +} +/** + * Returns true if both parameters are undefined + */ + + +function isBothUndefined(a, b) { + return isUndefined$1(a) && isUndefined$1(b); +} +/** + * Returns true if the two input exception interfaces have the same content + */ + + +function isSameException$1(ex1, ex2) { + if (isOnlyOneTruthy(ex1, ex2)) return false; + ex1 = ex1.values[0]; + ex2 = ex2.values[0]; + if (ex1.type !== ex2.type || ex1.value !== ex2.value) return false; // in case both stacktraces are undefined, we can't decide so default to false + + if (isBothUndefined(ex1.stacktrace, ex2.stacktrace)) return false; + return isSameStacktrace$1(ex1.stacktrace, ex2.stacktrace); +} +/** + * Returns true if the two input stack trace interfaces have the same content + */ + + +function isSameStacktrace$1(stack1, stack2) { + if (isOnlyOneTruthy(stack1, stack2)) return false; + var frames1 = stack1.frames; + var frames2 = stack2.frames; // Exit early if frame count differs + + if (frames1.length !== frames2.length) return false; // Iterate through every frame; bail out if anything differs + + var a, b; + + for (var i = 0; i < frames1.length; i++) { + a = frames1[i]; + b = frames2[i]; + if (a.filename !== b.filename || a.lineno !== b.lineno || a.colno !== b.colno || a['function'] !== b['function']) return false; + } + + return true; +} +/** + * Polyfill a method + * @param obj object e.g. `document` + * @param name method name present on object e.g. `addEventListener` + * @param replacement replacement function + * @param track {optional} record instrumentation to an array + */ + + +function fill$1(obj, name, replacement, track) { + var orig = obj[name]; + obj[name] = replacement(orig); + obj[name].__raven__ = true; + obj[name].__orig__ = orig; + + if (track) { + track.push([obj, name, orig]); + } +} +/** + * Join values in array + * @param input array of values to be joined together + * @param delimiter string to be placed in-between values + * @returns {string} + */ + + +function safeJoin(input, delimiter) { + if (!isArray$1(input)) return ''; + var output = []; + + for (var i = 0; i < input.length; i++) { + try { + output.push(String(input[i])); + } catch (e) { + output.push('[value cannot be serialized]'); + } + } + + return output.join(delimiter); +} + +var utils = { + isObject: isObject$1, + isError: isError$1, + isErrorEvent: isErrorEvent$1, + isUndefined: isUndefined$1, + isFunction: isFunction$1, + isPlainObject: isPlainObject, + isString: isString$1, + isArray: isArray$1, + isEmptyObject: isEmptyObject$1, + supportsErrorEvent: supportsErrorEvent, + supportsFetch: supportsFetch$1, + wrappedCallback: wrappedCallback, + each: each$1, + objectMerge: objectMerge$1, + truncate: truncate$1, + objectFrozen: objectFrozen$1, + hasKey: hasKey$1, + joinRegExp: joinRegExp$1, + urlencode: urlencode$1, + uuid4: uuid4$1, + htmlTreeAsString: htmlTreeAsString$1, + htmlElementAsString: htmlElementAsString, + isSameException: isSameException$1, + isSameStacktrace: isSameStacktrace$1, + parseUrl: parseUrl$1, + fill: fill$1, + safeJoin: safeJoin +}; + +/* + TraceKit - Cross brower stack traces + + This was originally forked from github.com/occ/TraceKit, but has since been + largely re-written and is now maintained as part of raven-js. Tests for + this are in test/vendor. + + MIT license +*/ + +var TraceKit = { + collectWindowErrors: true, + debug: false +}; // This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) + +var _window$2 = typeof window !== 'undefined' ? window : typeof commonjsGlobal !== 'undefined' ? commonjsGlobal : typeof self !== 'undefined' ? self : {}; // global reference to slice + + +var _slice = [].slice; +var UNKNOWN_FUNCTION = '?'; // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error#Error_types + +var ERROR_TYPES_RE = /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/; + +function getLocationHref() { + if (typeof document === 'undefined' || document.location == null) return ''; + return document.location.href; +} +/** + * TraceKit.report: cross-browser processing of unhandled exceptions + * + * Syntax: + * TraceKit.report.subscribe(function(stackInfo) { ... }) + * TraceKit.report.unsubscribe(function(stackInfo) { ... }) + * TraceKit.report(exception) + * try { ...code... } catch(ex) { TraceKit.report(ex); } + * + * Supports: + * - Firefox: full stack trace with line numbers, plus column number + * on top frame; column number is not guaranteed + * - Opera: full stack trace with line and column numbers + * - Chrome: full stack trace with line and column numbers + * - Safari: line and column number for the top frame only; some frames + * may be missing, and column number is not guaranteed + * - IE: line and column number for the top frame only; some frames + * may be missing, and column number is not guaranteed + * + * In theory, TraceKit should work on all of the following versions: + * - IE5.5+ (only 8.0 tested) + * - Firefox 0.9+ (only 3.5+ tested) + * - Opera 7+ (only 10.50 tested; versions 9 and earlier may require + * Exceptions Have Stacktrace to be enabled in opera:config) + * - Safari 3+ (only 4+ tested) + * - Chrome 1+ (only 5+ tested) + * - Konqueror 3.5+ (untested) + * + * Requires TraceKit.computeStackTrace. + * + * Tries to catch all unhandled exceptions and report them to the + * subscribed handlers. Please note that TraceKit.report will rethrow the + * exception. This is REQUIRED in order to get a useful stack trace in IE. + * If the exception does not reach the top of the browser, you will only + * get a stack trace from the point where TraceKit.report was called. + * + * Handlers receive a stackInfo object as described in the + * TraceKit.computeStackTrace docs. + */ + + +TraceKit.report = function reportModuleWrapper() { + var handlers = [], + lastArgs = null, + lastException = null, + lastExceptionStack = null; + /** + * Add a crash handler. + * @param {Function} handler + */ + + function subscribe(handler) { + installGlobalHandler(); + handlers.push(handler); + } + /** + * Remove a crash handler. + * @param {Function} handler + */ + + + function unsubscribe(handler) { + for (var i = handlers.length - 1; i >= 0; --i) { + if (handlers[i] === handler) { + handlers.splice(i, 1); + } + } + } + /** + * Remove all crash handlers. + */ + + + function unsubscribeAll() { + uninstallGlobalHandler(); + handlers = []; + } + /** + * Dispatch stack information to all handlers. + * @param {Object.} stack + */ + + + function notifyHandlers(stack, isWindowError) { + var exception = null; + + if (isWindowError && !TraceKit.collectWindowErrors) { + return; + } + + for (var i in handlers) { + if (handlers.hasOwnProperty(i)) { + try { + handlers[i].apply(null, [stack].concat(_slice.call(arguments, 2))); + } catch (inner) { + exception = inner; + } + } + } + + if (exception) { + throw exception; + } + } + + var _oldOnerrorHandler, _onErrorHandlerInstalled; + /** + * Ensures all global unhandled exceptions are recorded. + * Supported by Gecko and IE. + * @param {string} msg Error message. + * @param {string} url URL of script that generated the exception. + * @param {(number|string)} lineNo The line number at which the error + * occurred. + * @param {?(number|string)} colNo The column number at which the error + * occurred. + * @param {?Error} ex The actual Error object. + */ + + + function traceKitWindowOnError(msg, url, lineNo, colNo, ex) { + var stack = null; // If 'ex' is ErrorEvent, get real Error from inside + + var exception = utils.isErrorEvent(ex) ? ex.error : ex; // If 'msg' is ErrorEvent, get real message from inside + + var message = utils.isErrorEvent(msg) ? msg.message : msg; + + if (lastExceptionStack) { + TraceKit.computeStackTrace.augmentStackTraceWithInitialElement(lastExceptionStack, url, lineNo, message); + processLastException(); + } else if (exception && utils.isError(exception)) { + // non-string `exception` arg; attempt to extract stack trace + // New chrome and blink send along a real error object + // Let's just report that like a normal error. + // See: https://mikewest.org/2013/08/debugging-runtime-errors-with-window-onerror + stack = TraceKit.computeStackTrace(exception); + notifyHandlers(stack, true); + } else { + var location = { + url: url, + line: lineNo, + column: colNo + }; + var name = undefined; + var groups; + + if ({}.toString.call(message) === '[object String]') { + var groups = message.match(ERROR_TYPES_RE); + + if (groups) { + name = groups[1]; + message = groups[2]; + } + } + + location.func = UNKNOWN_FUNCTION; + stack = { + name: name, + message: message, + url: getLocationHref(), + stack: [location] + }; + notifyHandlers(stack, true); + } + + if (_oldOnerrorHandler) { + return _oldOnerrorHandler.apply(this, arguments); + } + + return false; + } + + function installGlobalHandler() { + if (_onErrorHandlerInstalled) { + return; + } + + _oldOnerrorHandler = _window$2.onerror; + _window$2.onerror = traceKitWindowOnError; + _onErrorHandlerInstalled = true; + } + + function uninstallGlobalHandler() { + if (!_onErrorHandlerInstalled) { + return; + } + + _window$2.onerror = _oldOnerrorHandler; + _onErrorHandlerInstalled = false; + _oldOnerrorHandler = undefined; + } + + function processLastException() { + var _lastExceptionStack = lastExceptionStack, + _lastArgs = lastArgs; + lastArgs = null; + lastExceptionStack = null; + lastException = null; + notifyHandlers.apply(null, [_lastExceptionStack, false].concat(_lastArgs)); + } + /** + * Reports an unhandled Error to TraceKit. + * @param {Error} ex + * @param {?boolean} rethrow If false, do not re-throw the exception. + * Only used for window.onerror to not cause an infinite loop of + * rethrowing. + */ + + + function report(ex, rethrow) { + var args = _slice.call(arguments, 1); + + if (lastExceptionStack) { + if (lastException === ex) { + return; // already caught by an inner catch block, ignore + } else { + processLastException(); + } + } + + var stack = TraceKit.computeStackTrace(ex); + lastExceptionStack = stack; + lastException = ex; + lastArgs = args; // If the stack trace is incomplete, wait for 2 seconds for + // slow slow IE to see if onerror occurs or not before reporting + // this exception; otherwise, we will end up with an incomplete + // stack trace + + setTimeout(function () { + if (lastException === ex) { + processLastException(); + } + }, stack.incomplete ? 2000 : 0); + + if (rethrow !== false) { + throw ex; // re-throw to propagate to the top level (and cause window.onerror) + } + } + + report.subscribe = subscribe; + report.unsubscribe = unsubscribe; + report.uninstall = unsubscribeAll; + return report; +}(); +/** + * TraceKit.computeStackTrace: cross-browser stack traces in JavaScript + * + * Syntax: + * s = TraceKit.computeStackTrace(exception) // consider using TraceKit.report instead (see below) + * Returns: + * s.name - exception name + * s.message - exception message + * s.stack[i].url - JavaScript or HTML file URL + * s.stack[i].func - function name, or empty for anonymous functions (if guessing did not work) + * s.stack[i].args - arguments passed to the function, if known + * s.stack[i].line - line number, if known + * s.stack[i].column - column number, if known + * + * Supports: + * - Firefox: full stack trace with line numbers and unreliable column + * number on top frame + * - Opera 10: full stack trace with line and column numbers + * - Opera 9-: full stack trace with line numbers + * - Chrome: full stack trace with line and column numbers + * - Safari: line and column number for the topmost stacktrace element + * only + * - IE: no line numbers whatsoever + * + * Tries to guess names of anonymous functions by looking for assignments + * in the source code. In IE and Safari, we have to guess source file names + * by searching for function bodies inside all page scripts. This will not + * work for scripts that are loaded cross-domain. + * Here be dragons: some function names may be guessed incorrectly, and + * duplicate functions may be mismatched. + * + * TraceKit.computeStackTrace should only be used for tracing purposes. + * Logging of unhandled exceptions should be done with TraceKit.report, + * which builds on top of TraceKit.computeStackTrace and provides better + * IE support by utilizing the window.onerror event to retrieve information + * about the top of the stack. + * + * Note: In IE and Safari, no stack trace is recorded on the Error object, + * so computeStackTrace instead walks its *own* chain of callers. + * This means that: + * * in Safari, some methods may be missing from the stack trace; + * * in IE, the topmost function in the stack trace will always be the + * caller of computeStackTrace. + * + * This is okay for tracing (because you are likely to be calling + * computeStackTrace from the function you want to be the topmost element + * of the stack trace anyway), but not okay for logging unhandled + * exceptions (because your catch block will likely be far away from the + * inner function that actually caused the exception). + * + */ + + +TraceKit.computeStackTrace = function computeStackTraceWrapper() { + // Contents of Exception in various browsers. + // + // SAFARI: + // ex.message = Can't find variable: qq + // ex.line = 59 + // ex.sourceId = 580238192 + // ex.sourceURL = http://... + // ex.expressionBeginOffset = 96 + // ex.expressionCaretOffset = 98 + // ex.expressionEndOffset = 98 + // ex.name = ReferenceError + // + // FIREFOX: + // ex.message = qq is not defined + // ex.fileName = http://... + // ex.lineNumber = 59 + // ex.columnNumber = 69 + // ex.stack = ...stack trace... (see the example below) + // ex.name = ReferenceError + // + // CHROME: + // ex.message = qq is not defined + // ex.name = ReferenceError + // ex.type = not_defined + // ex.arguments = ['aa'] + // ex.stack = ...stack trace... + // + // INTERNET EXPLORER: + // ex.message = ... + // ex.name = ReferenceError + // + // OPERA: + // ex.message = ...message... (see the example below) + // ex.name = ReferenceError + // ex.opera#sourceloc = 11 (pretty much useless, duplicates the info in ex.message) + // ex.stacktrace = n/a; see 'opera:config#UserPrefs|Exceptions Have Stacktrace' + + /** + * Computes stack trace information from the stack property. + * Chrome and Gecko use this property. + * @param {Error} ex + * @return {?Object.} Stack trace information. + */ + function computeStackTraceFromStackProp(ex) { + if (typeof ex.stack === 'undefined' || !ex.stack) return; + var chrome = /^\s*at (.*?) ?\(((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i, + gecko = /^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|\[native).*?|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i, + winjs = /^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i, + // Used to additionally parse URL/line/column from eval frames + geckoEval = /(\S+) line (\d+)(?: > eval line \d+)* > eval/i, + chromeEval = /\((\S*)(?::(\d+))(?::(\d+))\)/, + lines = ex.stack.split('\n'), + stack = [], + submatch, + parts, + element, + reference = /^(.*) is undefined$/.exec(ex.message); + + for (var i = 0, j = lines.length; i < j; ++i) { + if (parts = chrome.exec(lines[i])) { + var isNative = parts[2] && parts[2].indexOf('native') === 0; // start of line + + var isEval = parts[2] && parts[2].indexOf('eval') === 0; // start of line + + if (isEval && (submatch = chromeEval.exec(parts[2]))) { + // throw out eval line/column and use top-most line/column number + parts[2] = submatch[1]; // url + + parts[3] = submatch[2]; // line + + parts[4] = submatch[3]; // column + } + + element = { + url: !isNative ? parts[2] : null, + func: parts[1] || UNKNOWN_FUNCTION, + args: isNative ? [parts[2]] : [], + line: parts[3] ? +parts[3] : null, + column: parts[4] ? +parts[4] : null + }; + } else if (parts = winjs.exec(lines[i])) { + element = { + url: parts[2], + func: parts[1] || UNKNOWN_FUNCTION, + args: [], + line: +parts[3], + column: parts[4] ? +parts[4] : null + }; + } else if (parts = gecko.exec(lines[i])) { + var isEval = parts[3] && parts[3].indexOf(' > eval') > -1; + + if (isEval && (submatch = geckoEval.exec(parts[3]))) { + // throw out eval line/column and use top-most line number + parts[3] = submatch[1]; + parts[4] = submatch[2]; + parts[5] = null; // no column when eval + } else if (i === 0 && !parts[5] && typeof ex.columnNumber !== 'undefined') { + // FireFox uses this awesome columnNumber property for its top frame + // Also note, Firefox's column number is 0-based and everything else expects 1-based, + // so adding 1 + // NOTE: this hack doesn't work if top-most frame is eval + stack[0].column = ex.columnNumber + 1; + } + + element = { + url: parts[3], + func: parts[1] || UNKNOWN_FUNCTION, + args: parts[2] ? parts[2].split(',') : [], + line: parts[4] ? +parts[4] : null, + column: parts[5] ? +parts[5] : null + }; + } else { + continue; + } + + if (!element.func && element.line) { + element.func = UNKNOWN_FUNCTION; + } + + stack.push(element); + } + + if (!stack.length) { + return null; + } + + return { + name: ex.name, + message: ex.message, + url: getLocationHref(), + stack: stack + }; + } + /** + * Adds information about the first frame to incomplete stack traces. + * Safari and IE require this to get complete data on the first frame. + * @param {Object.} stackInfo Stack trace information from + * one of the compute* methods. + * @param {string} url The URL of the script that caused an error. + * @param {(number|string)} lineNo The line number of the script that + * caused an error. + * @param {string=} message The error generated by the browser, which + * hopefully contains the name of the object that caused the error. + * @return {boolean} Whether or not the stack information was + * augmented. + */ + + + function augmentStackTraceWithInitialElement(stackInfo, url, lineNo, message) { + var initial = { + url: url, + line: lineNo + }; + + if (initial.url && initial.line) { + stackInfo.incomplete = false; + + if (!initial.func) { + initial.func = UNKNOWN_FUNCTION; + } + + if (stackInfo.stack.length > 0) { + if (stackInfo.stack[0].url === initial.url) { + if (stackInfo.stack[0].line === initial.line) { + return false; // already in stack trace + } else if (!stackInfo.stack[0].line && stackInfo.stack[0].func === initial.func) { + stackInfo.stack[0].line = initial.line; + return false; + } + } + } + + stackInfo.stack.unshift(initial); + stackInfo.partial = true; + return true; + } else { + stackInfo.incomplete = true; + } + + return false; + } + /** + * Computes stack trace information by walking the arguments.caller + * chain at the time the exception occurred. This will cause earlier + * frames to be missed but is the only way to get any stack trace in + * Safari and IE. The top frame is restored by + * {@link augmentStackTraceWithInitialElement}. + * @param {Error} ex + * @return {?Object.} Stack trace information. + */ + + + function computeStackTraceByWalkingCallerChain(ex, depth) { + var functionName = /function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i, + stack = [], + funcs = {}, + recursion = false, + parts, + item; + + for (var curr = computeStackTraceByWalkingCallerChain.caller; curr && !recursion; curr = curr.caller) { + if (curr === computeStackTrace || curr === TraceKit.report) { + // console.log('skipping internal function'); + continue; + } + + item = { + url: null, + func: UNKNOWN_FUNCTION, + line: null, + column: null + }; + + if (curr.name) { + item.func = curr.name; + } else if (parts = functionName.exec(curr.toString())) { + item.func = parts[1]; + } + + if (typeof item.func === 'undefined') { + try { + item.func = parts.input.substring(0, parts.input.indexOf('{')); + } catch (e) {} + } + + if (funcs['' + curr]) { + recursion = true; + } else { + funcs['' + curr] = true; + } + + stack.push(item); + } + + if (depth) { + // console.log('depth is ' + depth); + // console.log('stack is ' + stack.length); + stack.splice(0, depth); + } + + var result = { + name: ex.name, + message: ex.message, + url: getLocationHref(), + stack: stack + }; + augmentStackTraceWithInitialElement(result, ex.sourceURL || ex.fileName, ex.line || ex.lineNumber, ex.message || ex.description); + return result; + } + /** + * Computes a stack trace for an exception. + * @param {Error} ex + * @param {(string|number)=} depth + */ + + + function computeStackTrace(ex, depth) { + var stack = null; + depth = depth == null ? 0 : +depth; + + try { + stack = computeStackTraceFromStackProp(ex); + + if (stack) { + return stack; + } + } catch (e) { + if (TraceKit.debug) { + throw e; + } + } + + try { + stack = computeStackTraceByWalkingCallerChain(ex, depth + 1); + + if (stack) { + return stack; + } + } catch (e) { + if (TraceKit.debug) { + throw e; + } + } + + return { + name: ex.name, + message: ex.message, + url: getLocationHref() + }; + } + + computeStackTrace.augmentStackTraceWithInitialElement = augmentStackTraceWithInitialElement; + computeStackTrace.computeStackTraceFromStackProp = computeStackTraceFromStackProp; + return computeStackTrace; +}(); + +var tracekit = TraceKit; + +var stringify_1 = createCommonjsModule(function (module, exports) { + /* + json-stringify-safe + Like JSON.stringify, but doesn't throw on circular references. + + Originally forked from https://github.com/isaacs/json-stringify-safe + version 5.0.1 on 3/8/2017 and modified to handle Errors serialization + and IE8 compatibility. Tests for this are in test/vendor. + + ISC license: https://github.com/isaacs/json-stringify-safe/blob/master/LICENSE + */ + exports = module.exports = stringify; + exports.getSerialize = serializer; + + function indexOf(haystack, needle) { + for (var i = 0; i < haystack.length; ++i) { + if (haystack[i] === needle) return i; + } + + return -1; + } + + function stringify(obj, replacer, spaces, cycleReplacer) { + return JSON.stringify(obj, serializer(replacer, cycleReplacer), spaces); + } // https://github.com/ftlabs/js-abbreviate/blob/fa709e5f139e7770a71827b1893f22418097fbda/index.js#L95-L106 + + + function stringifyError(value) { + var err = { + // These properties are implemented as magical getters and don't show up in for in + stack: value.stack, + message: value.message, + name: value.name + }; + + for (var i in value) { + if (Object.prototype.hasOwnProperty.call(value, i)) { + err[i] = value[i]; + } + } + + return err; + } + + function serializer(replacer, cycleReplacer) { + var stack = []; + var keys = []; + + if (cycleReplacer == null) { + cycleReplacer = function cycleReplacer(key, value) { + if (stack[0] === value) { + return '[Circular ~]'; + } + + return '[Circular ~.' + keys.slice(0, indexOf(stack, value)).join('.') + ']'; + }; + } + + return function (key, value) { + if (stack.length > 0) { + var thisPos = indexOf(stack, this); + ~thisPos ? stack.splice(thisPos + 1) : stack.push(this); + ~thisPos ? keys.splice(thisPos, Infinity, key) : keys.push(key); + + if (~indexOf(stack, value)) { + value = cycleReplacer.call(this, key, value); + } + } else { + stack.push(value); + } + + return replacer == null ? value instanceof Error ? stringifyError(value) : value : replacer.call(this, key, value); + }; + } +}); +var stringify_2 = stringify_1.getSerialize; + +function RavenConfigError(message) { + this.name = 'RavenConfigError'; + this.message = message; +} + +RavenConfigError.prototype = new Error(); +RavenConfigError.prototype.constructor = RavenConfigError; +var configError = RavenConfigError; + +var wrapMethod = function wrapMethod(console, level, callback) { + var originalConsoleLevel = console[level]; + var originalConsole = console; + + if (!(level in console)) { + return; + } + + var sentryLevel = level === 'warn' ? 'warning' : level; + + console[level] = function () { + var args = [].slice.call(arguments); + var msg = utils.safeJoin(args, ' '); + var data = { + level: sentryLevel, + logger: 'console', + extra: { + arguments: args + } + }; + + if (level === 'assert') { + if (args[0] === false) { + // Default browsers message + msg = 'Assertion failed: ' + (utils.safeJoin(args.slice(1), ' ') || 'console.assert'); + data.extra.arguments = args.slice(1); + callback && callback(msg, data); + } + } else { + callback && callback(msg, data); + } // this fails for some browsers. :( + + + if (originalConsoleLevel) { + // IE9 doesn't allow calling apply on console functions directly + // See: https://stackoverflow.com/questions/5472938/does-ie9-support-console-log-and-is-it-a-real-function#answer-5473193 + Function.prototype.apply.call(originalConsoleLevel, originalConsole, args); + } + }; +}; + +var console$1 = { + wrapMethod: wrapMethod +}; + +/*global XDomainRequest:false */ + +var isError = utils.isError; +var isObject = utils.isObject; +var isErrorEvent = utils.isErrorEvent; +var isUndefined = utils.isUndefined; +var isFunction = utils.isFunction; +var isString = utils.isString; +var isArray = utils.isArray; +var isEmptyObject = utils.isEmptyObject; +var each = utils.each; +var objectMerge = utils.objectMerge; +var truncate = utils.truncate; +var objectFrozen = utils.objectFrozen; +var hasKey = utils.hasKey; +var joinRegExp = utils.joinRegExp; +var urlencode = utils.urlencode; +var uuid4 = utils.uuid4; +var htmlTreeAsString = utils.htmlTreeAsString; +var isSameException = utils.isSameException; +var isSameStacktrace = utils.isSameStacktrace; +var parseUrl = utils.parseUrl; +var fill = utils.fill; +var supportsFetch = utils.supportsFetch; +var wrapConsoleMethod = console$1.wrapMethod; +var dsnKeys = 'source protocol user pass host port path'.split(' '); +var dsnPattern = /^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/; + +function now() { + return +new Date(); +} // This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) + + +var _window$1 = typeof window !== 'undefined' ? window : typeof commonjsGlobal !== 'undefined' ? commonjsGlobal : typeof self !== 'undefined' ? self : {}; + +var _document = _window$1.document; +var _navigator = _window$1.navigator; + +function keepOriginalCallback(original, callback) { + return isFunction(callback) ? function (data) { + return callback(data, original); + } : callback; +} // First, check for JSON support +// If there is no JSON, we no-op the core features of Raven +// since JSON is required to encode the payload + + +function Raven$1() { + this._hasJSON = !!(_typeof(JSON) === 'object' && JSON.stringify); // Raven can run in contexts where there's no document (react-native) + + this._hasDocument = !isUndefined(_document); + this._hasNavigator = !isUndefined(_navigator); + this._lastCapturedException = null; + this._lastData = null; + this._lastEventId = null; + this._globalServer = null; + this._globalKey = null; + this._globalProject = null; + this._globalContext = {}; + this._globalOptions = { + // SENTRY_RELEASE can be injected by https://github.com/getsentry/sentry-webpack-plugin + release: _window$1.SENTRY_RELEASE && _window$1.SENTRY_RELEASE.id, + logger: 'javascript', + ignoreErrors: [], + ignoreUrls: [], + whitelistUrls: [], + includePaths: [], + headers: null, + collectWindowErrors: true, + maxMessageLength: 0, + // By default, truncates URL values to 250 chars + maxUrlLength: 250, + stackTraceLimit: 50, + autoBreadcrumbs: true, + instrument: true, + sampleRate: 1 + }; + this._fetchDefaults = { + method: 'POST', + keepalive: true, + referrerPolicy: 'origin' + }; + this._ignoreOnError = 0; + this._isRavenInstalled = false; + this._originalErrorStackTraceLimit = Error.stackTraceLimit; // capture references to window.console *and* all its methods first + // before the console plugin has a chance to monkey patch + + this._originalConsole = _window$1.console || {}; + this._originalConsoleMethods = {}; + this._plugins = []; + this._startTime = now(); + this._wrappedBuiltIns = []; + this._breadcrumbs = []; + this._lastCapturedEvent = null; + this._keypressTimeout; + this._location = _window$1.location; + this._lastHref = this._location && this._location.href; + + this._resetBackoff(); // eslint-disable-next-line guard-for-in + + + for (var method in this._originalConsole) { + this._originalConsoleMethods[method] = this._originalConsole[method]; + } +} +/* + * The core Raven singleton + * + * @this {Raven} + */ + + +Raven$1.prototype = { + // Hardcode version string so that raven source can be loaded directly via + // webpack (using a build step causes webpack #1617). Grunt verifies that + // this value matches package.json during build. + // See: https://github.com/getsentry/raven-js/issues/465 + VERSION: '3.22.2', + debug: false, + TraceKit: tracekit, + // alias to TraceKit + + /* + * Configure Raven with a DSN and extra options + * + * @param {string} dsn The public Sentry DSN + * @param {object} options Set of global options [optional] + * @return {Raven} + */ + config: function config(dsn, options) { + var self = this; + + if (self._globalServer) { + this._logDebug('error', 'Error: Raven has already been configured'); + + return self; + } + + if (!dsn) return self; + var globalOptions = self._globalOptions; // merge in options + + if (options) { + each(options, function (key, value) { + // tags and extra are special and need to be put into context + if (key === 'tags' || key === 'extra' || key === 'user') { + self._globalContext[key] = value; + } else { + globalOptions[key] = value; + } + }); + } + + self.setDSN(dsn); // "Script error." is hard coded into browsers for errors that it can't read. + // this is the result of a script being pulled in from an external domain and CORS. + + globalOptions.ignoreErrors.push(/^Script error\.?$/); + globalOptions.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/); // join regexp rules into one big rule + + globalOptions.ignoreErrors = joinRegExp(globalOptions.ignoreErrors); + globalOptions.ignoreUrls = globalOptions.ignoreUrls.length ? joinRegExp(globalOptions.ignoreUrls) : false; + globalOptions.whitelistUrls = globalOptions.whitelistUrls.length ? joinRegExp(globalOptions.whitelistUrls) : false; + globalOptions.includePaths = joinRegExp(globalOptions.includePaths); + globalOptions.maxBreadcrumbs = Math.max(0, Math.min(globalOptions.maxBreadcrumbs || 100, 100)); // default and hard limit is 100 + + var autoBreadcrumbDefaults = { + xhr: true, + console: true, + dom: true, + location: true, + sentry: true + }; + var autoBreadcrumbs = globalOptions.autoBreadcrumbs; + + if ({}.toString.call(autoBreadcrumbs) === '[object Object]') { + autoBreadcrumbs = objectMerge(autoBreadcrumbDefaults, autoBreadcrumbs); + } else if (autoBreadcrumbs !== false) { + autoBreadcrumbs = autoBreadcrumbDefaults; + } + + globalOptions.autoBreadcrumbs = autoBreadcrumbs; + var instrumentDefaults = { + tryCatch: true + }; + var instrument = globalOptions.instrument; + + if ({}.toString.call(instrument) === '[object Object]') { + instrument = objectMerge(instrumentDefaults, instrument); + } else if (instrument !== false) { + instrument = instrumentDefaults; + } + + globalOptions.instrument = instrument; + tracekit.collectWindowErrors = !!globalOptions.collectWindowErrors; // return for chaining + + return self; + }, + + /* + * Installs a global window.onerror error handler + * to capture and report uncaught exceptions. + * At this point, install() is required to be called due + * to the way TraceKit is set up. + * + * @return {Raven} + */ + install: function install() { + var self = this; + + if (self.isSetup() && !self._isRavenInstalled) { + tracekit.report.subscribe(function () { + self._handleOnErrorStackInfo.apply(self, arguments); + }); + + self._patchFunctionToString(); + + if (self._globalOptions.instrument && self._globalOptions.instrument.tryCatch) { + self._instrumentTryCatch(); + } + + if (self._globalOptions.autoBreadcrumbs) self._instrumentBreadcrumbs(); // Install all of the plugins + + self._drainPlugins(); + + self._isRavenInstalled = true; + } + + Error.stackTraceLimit = self._globalOptions.stackTraceLimit; + return this; + }, + + /* + * Set the DSN (can be called multiple time unlike config) + * + * @param {string} dsn The public Sentry DSN + */ + setDSN: function setDSN(dsn) { + var self = this, + uri = self._parseDSN(dsn), + lastSlash = uri.path.lastIndexOf('/'), + path = uri.path.substr(1, lastSlash); + + self._dsn = dsn; + self._globalKey = uri.user; + self._globalSecret = uri.pass && uri.pass.substr(1); + self._globalProject = uri.path.substr(lastSlash + 1); + self._globalServer = self._getGlobalServer(uri); + self._globalEndpoint = self._globalServer + '/' + path + 'api/' + self._globalProject + '/store/'; // Reset backoff state since we may be pointing at a + // new project/server + + this._resetBackoff(); + }, + + /* + * Wrap code within a context so Raven can capture errors + * reliably across domains that is executed immediately. + * + * @param {object} options A specific set of options for this context [optional] + * @param {function} func The callback to be immediately executed within the context + * @param {array} args An array of arguments to be called with the callback [optional] + */ + context: function context(options, func, args) { + if (isFunction(options)) { + args = func || []; + func = options; + options = undefined; + } + + return this.wrap(options, func).apply(this, args); + }, + + /* + * Wrap code within a context and returns back a new function to be executed + * + * @param {object} options A specific set of options for this context [optional] + * @param {function} func The function to be wrapped in a new context + * @param {function} func A function to call before the try/catch wrapper [optional, private] + * @return {function} The newly wrapped functions with a context + */ + wrap: function wrap(options, func, _before) { + var self = this; // 1 argument has been passed, and it's not a function + // so just return it + + if (isUndefined(func) && !isFunction(options)) { + return options; + } // options is optional + + + if (isFunction(options)) { + func = options; + options = undefined; + } // At this point, we've passed along 2 arguments, and the second one + // is not a function either, so we'll just return the second argument. + + + if (!isFunction(func)) { + return func; + } // We don't wanna wrap it twice! + + + try { + if (func.__raven__) { + return func; + } // If this has already been wrapped in the past, return that + + + if (func.__raven_wrapper__) { + return func.__raven_wrapper__; + } + } catch (e) { + // Just accessing custom props in some Selenium environments + // can cause a "Permission denied" exception (see raven-js#495). + // Bail on wrapping and return the function as-is (defers to window.onerror). + return func; + } + + function wrapped() { + var args = [], + i = arguments.length, + deep = !options || options && options.deep !== false; + + if (_before && isFunction(_before)) { + _before.apply(this, arguments); + } // Recursively wrap all of a function's arguments that are + // functions themselves. + + + while (i--) { + args[i] = deep ? self.wrap(options, arguments[i]) : arguments[i]; + } + + try { + // Attempt to invoke user-land function + // NOTE: If you are a Sentry user, and you are seeing this stack frame, it + // means Raven caught an error invoking your application code. This is + // expected behavior and NOT indicative of a bug with Raven.js. + return func.apply(this, args); + } catch (e) { + self._ignoreNextOnError(); + + self.captureException(e, options); + throw e; + } + } // copy over properties of the old function + + + for (var property in func) { + if (hasKey(func, property)) { + wrapped[property] = func[property]; + } + } + + wrapped.prototype = func.prototype; + func.__raven_wrapper__ = wrapped; // Signal that this function has been wrapped/filled already + // for both debugging and to prevent it to being wrapped/filled twice + + wrapped.__raven__ = true; + wrapped.__orig__ = func; + return wrapped; + }, + + /* + * Uninstalls the global error handler. + * + * @return {Raven} + */ + uninstall: function uninstall() { + tracekit.report.uninstall(); + + this._unpatchFunctionToString(); + + this._restoreBuiltIns(); + + this._restoreConsole(); + + Error.stackTraceLimit = this._originalErrorStackTraceLimit; + this._isRavenInstalled = false; + return this; + }, + + /* + * Manually capture an exception and send it over to Sentry + * + * @param {error} ex An exception to be logged + * @param {object} options A specific set of options for this error [optional] + * @return {Raven} + */ + captureException: function captureException(ex, options) { + options = objectMerge({ + trimHeadFrames: 0 + }, options ? options : {}); // Cases for sending ex as a message, rather than an exception + + var isNotError = !isError(ex); + var isNotErrorEvent = !isErrorEvent(ex); + var isErrorEventWithoutError = isErrorEvent(ex) && !ex.error; + + if (isNotError && isNotErrorEvent || isErrorEventWithoutError) { + return this.captureMessage(ex, objectMerge(options, { + stacktrace: true, + // if we fall back to captureMessage, default to attempting a new trace + trimHeadFrames: options.trimHeadFrames + 1 + })); + } // Get actual Error from ErrorEvent + + + if (isErrorEvent(ex)) ex = ex.error; // Store the raw exception object for potential debugging and introspection + + this._lastCapturedException = ex; // TraceKit.report will re-raise any exception passed to it, + // which means you have to wrap it in try/catch. Instead, we + // can wrap it here and only re-raise if TraceKit.report + // raises an exception different from the one we asked to + // report on. + + try { + var stack = tracekit.computeStackTrace(ex); + + this._handleStackInfo(stack, options); + } catch (ex1) { + if (ex !== ex1) { + throw ex1; + } + } + + return this; + }, + + /* + * Manually send a message to Sentry + * + * @param {string} msg A plain message to be captured in Sentry + * @param {object} options A specific set of options for this message [optional] + * @return {Raven} + */ + captureMessage: function captureMessage(msg, options) { + // config() automagically converts ignoreErrors from a list to a RegExp so we need to test for an + // early call; we'll error on the side of logging anything called before configuration since it's + // probably something you should see: + if (!!this._globalOptions.ignoreErrors.test && this._globalOptions.ignoreErrors.test(msg)) { + return; + } + + options = options || {}; + var data = objectMerge({ + message: msg + '' // Make sure it's actually a string + + }, options); + var ex; // Generate a "synthetic" stack trace from this point. + // NOTE: If you are a Sentry user, and you are seeing this stack frame, it is NOT indicative + // of a bug with Raven.js. Sentry generates synthetic traces either by configuration, + // or if it catches a thrown object without a "stack" property. + + try { + throw new Error(msg); + } catch (ex1) { + ex = ex1; + } // null exception name so `Error` isn't prefixed to msg + + + ex.name = null; + var stack = tracekit.computeStackTrace(ex); // stack[0] is `throw new Error(msg)` call itself, we are interested in the frame that was just before that, stack[1] + + var initialCall = isArray(stack.stack) && stack.stack[1]; + var fileurl = initialCall && initialCall.url || ''; + + if (!!this._globalOptions.ignoreUrls.test && this._globalOptions.ignoreUrls.test(fileurl)) { + return; + } + + if (!!this._globalOptions.whitelistUrls.test && !this._globalOptions.whitelistUrls.test(fileurl)) { + return; + } + + if (this._globalOptions.stacktrace || options && options.stacktrace) { + options = objectMerge({ + // fingerprint on msg, not stack trace (legacy behavior, could be + // revisited) + fingerprint: msg, + // since we know this is a synthetic trace, the top N-most frames + // MUST be from Raven.js, so mark them as in_app later by setting + // trimHeadFrames + trimHeadFrames: (options.trimHeadFrames || 0) + 1 + }, options); + + var frames = this._prepareFrames(stack, options); + + data.stacktrace = { + // Sentry expects frames oldest to newest + frames: frames.reverse() + }; + } // Fire away! + + + this._send(data); + + return this; + }, + captureBreadcrumb: function captureBreadcrumb(obj) { + var crumb = objectMerge({ + timestamp: now() / 1000 + }, obj); + + if (isFunction(this._globalOptions.breadcrumbCallback)) { + var result = this._globalOptions.breadcrumbCallback(crumb); + + if (isObject(result) && !isEmptyObject(result)) { + crumb = result; + } else if (result === false) { + return this; + } + } + + this._breadcrumbs.push(crumb); + + if (this._breadcrumbs.length > this._globalOptions.maxBreadcrumbs) { + this._breadcrumbs.shift(); + } + + return this; + }, + addPlugin: function addPlugin(plugin + /*arg1, arg2, ... argN*/ + ) { + var pluginArgs = [].slice.call(arguments, 1); + + this._plugins.push([plugin, pluginArgs]); + + if (this._isRavenInstalled) { + this._drainPlugins(); + } + + return this; + }, + + /* + * Set/clear a user to be sent along with the payload. + * + * @param {object} user An object representing user data [optional] + * @return {Raven} + */ + setUserContext: function setUserContext(user) { + // Intentionally do not merge here since that's an unexpected behavior. + this._globalContext.user = user; + return this; + }, + + /* + * Merge extra attributes to be sent along with the payload. + * + * @param {object} extra An object representing extra data [optional] + * @return {Raven} + */ + setExtraContext: function setExtraContext(extra) { + this._mergeContext('extra', extra); + + return this; + }, + + /* + * Merge tags to be sent along with the payload. + * + * @param {object} tags An object representing tags [optional] + * @return {Raven} + */ + setTagsContext: function setTagsContext(tags) { + this._mergeContext('tags', tags); + + return this; + }, + + /* + * Clear all of the context. + * + * @return {Raven} + */ + clearContext: function clearContext() { + this._globalContext = {}; + return this; + }, + + /* + * Get a copy of the current context. This cannot be mutated. + * + * @return {object} copy of context + */ + getContext: function getContext() { + // lol javascript + return JSON.parse(stringify_1(this._globalContext)); + }, + + /* + * Set environment of application + * + * @param {string} environment Typically something like 'production'. + * @return {Raven} + */ + setEnvironment: function setEnvironment(environment) { + this._globalOptions.environment = environment; + return this; + }, + + /* + * Set release version of application + * + * @param {string} release Typically something like a git SHA to identify version + * @return {Raven} + */ + setRelease: function setRelease(release) { + this._globalOptions.release = release; + return this; + }, + + /* + * Set the dataCallback option + * + * @param {function} callback The callback to run which allows the + * data blob to be mutated before sending + * @return {Raven} + */ + setDataCallback: function setDataCallback(callback) { + var original = this._globalOptions.dataCallback; + this._globalOptions.dataCallback = keepOriginalCallback(original, callback); + return this; + }, + + /* + * Set the breadcrumbCallback option + * + * @param {function} callback The callback to run which allows filtering + * or mutating breadcrumbs + * @return {Raven} + */ + setBreadcrumbCallback: function setBreadcrumbCallback(callback) { + var original = this._globalOptions.breadcrumbCallback; + this._globalOptions.breadcrumbCallback = keepOriginalCallback(original, callback); + return this; + }, + + /* + * Set the shouldSendCallback option + * + * @param {function} callback The callback to run which allows + * introspecting the blob before sending + * @return {Raven} + */ + setShouldSendCallback: function setShouldSendCallback(callback) { + var original = this._globalOptions.shouldSendCallback; + this._globalOptions.shouldSendCallback = keepOriginalCallback(original, callback); + return this; + }, + + /** + * Override the default HTTP transport mechanism that transmits data + * to the Sentry server. + * + * @param {function} transport Function invoked instead of the default + * `makeRequest` handler. + * + * @return {Raven} + */ + setTransport: function setTransport(transport) { + this._globalOptions.transport = transport; + return this; + }, + + /* + * Get the latest raw exception that was captured by Raven. + * + * @return {error} + */ + lastException: function lastException() { + return this._lastCapturedException; + }, + + /* + * Get the last event id + * + * @return {string} + */ + lastEventId: function lastEventId() { + return this._lastEventId; + }, + + /* + * Determine if Raven is setup and ready to go. + * + * @return {boolean} + */ + isSetup: function isSetup() { + if (!this._hasJSON) return false; // needs JSON support + + if (!this._globalServer) { + if (!this.ravenNotConfiguredError) { + this.ravenNotConfiguredError = true; + + this._logDebug('error', 'Error: Raven has not been configured.'); + } + + return false; + } + + return true; + }, + afterLoad: function afterLoad() { + // TODO: remove window dependence? + // Attempt to initialize Raven on load + var RavenConfig = _window$1.RavenConfig; + + if (RavenConfig) { + this.config(RavenConfig.dsn, RavenConfig.config).install(); + } + }, + showReportDialog: function showReportDialog(options) { + if (!_document // doesn't work without a document (React native) + ) return; + options = options || {}; + var lastEventId = options.eventId || this.lastEventId(); + + if (!lastEventId) { + throw new configError('Missing eventId'); + } + + var dsn = options.dsn || this._dsn; + + if (!dsn) { + throw new configError('Missing DSN'); + } + + var encode = encodeURIComponent; + var qs = ''; + qs += '?eventId=' + encode(lastEventId); + qs += '&dsn=' + encode(dsn); + var user = options.user || this._globalContext.user; + + if (user) { + if (user.name) qs += '&name=' + encode(user.name); + if (user.email) qs += '&email=' + encode(user.email); + } + + var globalServer = this._getGlobalServer(this._parseDSN(dsn)); + + var script = _document.createElement('script'); + + script.async = true; + script.src = globalServer + '/api/embed/error-page/' + qs; + + (_document.head || _document.body).appendChild(script); + }, + + /**** Private functions ****/ + _ignoreNextOnError: function _ignoreNextOnError() { + var self = this; + this._ignoreOnError += 1; + setTimeout(function () { + // onerror should trigger before setTimeout + self._ignoreOnError -= 1; + }); + }, + _triggerEvent: function _triggerEvent(eventType, options) { + // NOTE: `event` is a native browser thing, so let's avoid conflicting wiht it + var evt, key; + if (!this._hasDocument) return; + options = options || {}; + eventType = 'raven' + eventType.substr(0, 1).toUpperCase() + eventType.substr(1); + + if (_document.createEvent) { + evt = _document.createEvent('HTMLEvents'); + evt.initEvent(eventType, true, true); + } else { + evt = _document.createEventObject(); + evt.eventType = eventType; + } + + for (key in options) { + if (hasKey(options, key)) { + evt[key] = options[key]; + } + } + + if (_document.createEvent) { + // IE9 if standards + _document.dispatchEvent(evt); + } else { + // IE8 regardless of Quirks or Standards + // IE9 if quirks + try { + _document.fireEvent('on' + evt.eventType.toLowerCase(), evt); + } catch (e) {// Do nothing + } + } + }, + + /** + * Wraps addEventListener to capture UI breadcrumbs + * @param evtName the event name (e.g. "click") + * @returns {Function} + * @private + */ + _breadcrumbEventHandler: function _breadcrumbEventHandler(evtName) { + var self = this; + return function (evt) { + // reset keypress timeout; e.g. triggering a 'click' after + // a 'keypress' will reset the keypress debounce so that a new + // set of keypresses can be recorded + self._keypressTimeout = null; // It's possible this handler might trigger multiple times for the same + // event (e.g. event propagation through node ancestors). Ignore if we've + // already captured the event. + + if (self._lastCapturedEvent === evt) return; + self._lastCapturedEvent = evt; // try/catch both: + // - accessing evt.target (see getsentry/raven-js#838, #768) + // - `htmlTreeAsString` because it's complex, and just accessing the DOM incorrectly + // can throw an exception in some circumstances. + + var target; + + try { + target = htmlTreeAsString(evt.target); + } catch (e) { + target = ''; + } + + self.captureBreadcrumb({ + category: 'ui.' + evtName, + // e.g. ui.click, ui.input + message: target + }); + }; + }, + + /** + * Wraps addEventListener to capture keypress UI events + * @returns {Function} + * @private + */ + _keypressEventHandler: function _keypressEventHandler() { + var self = this, + debounceDuration = 1000; // milliseconds + // TODO: if somehow user switches keypress target before + // debounce timeout is triggered, we will only capture + // a single breadcrumb from the FIRST target (acceptable?) + + return function (evt) { + var target; + + try { + target = evt.target; + } catch (e) { + // just accessing event properties can throw an exception in some rare circumstances + // see: https://github.com/getsentry/raven-js/issues/838 + return; + } + + var tagName = target && target.tagName; // only consider keypress events on actual input elements + // this will disregard keypresses targeting body (e.g. tabbing + // through elements, hotkeys, etc) + + if (!tagName || tagName !== 'INPUT' && tagName !== 'TEXTAREA' && !target.isContentEditable) return; // record first keypress in a series, but ignore subsequent + // keypresses until debounce clears + + var timeout = self._keypressTimeout; + + if (!timeout) { + self._breadcrumbEventHandler('input')(evt); + } + + clearTimeout(timeout); + self._keypressTimeout = setTimeout(function () { + self._keypressTimeout = null; + }, debounceDuration); + }; + }, + + /** + * Captures a breadcrumb of type "navigation", normalizing input URLs + * @param to the originating URL + * @param from the target URL + * @private + */ + _captureUrlChange: function _captureUrlChange(from, to) { + var parsedLoc = parseUrl(this._location.href); + var parsedTo = parseUrl(to); + var parsedFrom = parseUrl(from); // because onpopstate only tells you the "new" (to) value of location.href, and + // not the previous (from) value, we need to track the value of the current URL + // state ourselves + + this._lastHref = to; // Use only the path component of the URL if the URL matches the current + // document (almost all the time when using pushState) + + if (parsedLoc.protocol === parsedTo.protocol && parsedLoc.host === parsedTo.host) to = parsedTo.relative; + if (parsedLoc.protocol === parsedFrom.protocol && parsedLoc.host === parsedFrom.host) from = parsedFrom.relative; + this.captureBreadcrumb({ + category: 'navigation', + data: { + to: to, + from: from + } + }); + }, + _patchFunctionToString: function _patchFunctionToString() { + var self = this; + self._originalFunctionToString = Function.prototype.toString; // eslint-disable-next-line no-extend-native + + Function.prototype.toString = function () { + if (typeof this === 'function' && this.__raven__) { + return self._originalFunctionToString.apply(this.__orig__, arguments); + } + + return self._originalFunctionToString.apply(this, arguments); + }; + }, + _unpatchFunctionToString: function _unpatchFunctionToString() { + if (this._originalFunctionToString) { + // eslint-disable-next-line no-extend-native + Function.prototype.toString = this._originalFunctionToString; + } + }, + + /** + * Wrap timer functions and event targets to catch errors and provide + * better metadata. + */ + _instrumentTryCatch: function _instrumentTryCatch() { + var self = this; + var wrappedBuiltIns = self._wrappedBuiltIns; + + function wrapTimeFn(orig) { + return function (fn, t) { + // preserve arity + // Make a copy of the arguments to prevent deoptimization + // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments + var args = new Array(arguments.length); + + for (var i = 0; i < args.length; ++i) { + args[i] = arguments[i]; + } + + var originalCallback = args[0]; + + if (isFunction(originalCallback)) { + args[0] = self.wrap(originalCallback); + } // IE < 9 doesn't support .call/.apply on setInterval/setTimeout, but it + // also supports only two arguments and doesn't care what this is, so we + // can just call the original function directly. + + + if (orig.apply) { + return orig.apply(this, args); + } else { + return orig(args[0], args[1]); + } + }; + } + + var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; + + function wrapEventTarget(global) { + var proto = _window$1[global] && _window$1[global].prototype; + + if (proto && proto.hasOwnProperty && proto.hasOwnProperty('addEventListener')) { + fill(proto, 'addEventListener', function (orig) { + return function (evtName, fn, capture, secure) { + // preserve arity + try { + if (fn && fn.handleEvent) { + fn.handleEvent = self.wrap(fn.handleEvent); + } + } catch (err) {} // can sometimes get 'Permission denied to access property "handle Event' + // More breadcrumb DOM capture ... done here and not in `_instrumentBreadcrumbs` + // so that we don't have more than one wrapper function + + + var before, clickHandler, keypressHandler; + + if (autoBreadcrumbs && autoBreadcrumbs.dom && (global === 'EventTarget' || global === 'Node')) { + // NOTE: generating multiple handlers per addEventListener invocation, should + // revisit and verify we can just use one (almost certainly) + clickHandler = self._breadcrumbEventHandler('click'); + keypressHandler = self._keypressEventHandler(); + + before = function before(evt) { + // need to intercept every DOM event in `before` argument, in case that + // same wrapped method is re-used for different events (e.g. mousemove THEN click) + // see #724 + if (!evt) return; + var eventType; + + try { + eventType = evt.type; + } catch (e) { + // just accessing event properties can throw an exception in some rare circumstances + // see: https://github.com/getsentry/raven-js/issues/838 + return; + } + + if (eventType === 'click') return clickHandler(evt);else if (eventType === 'keypress') return keypressHandler(evt); + }; + } + + return orig.call(this, evtName, self.wrap(fn, undefined, before), capture, secure); + }; + }, wrappedBuiltIns); + fill(proto, 'removeEventListener', function (orig) { + return function (evt, fn, capture, secure) { + try { + fn = fn && (fn.__raven_wrapper__ ? fn.__raven_wrapper__ : fn); + } catch (e) {// ignore, accessing __raven_wrapper__ will throw in some Selenium environments + } + + return orig.call(this, evt, fn, capture, secure); + }; + }, wrappedBuiltIns); + } + } + + fill(_window$1, 'setTimeout', wrapTimeFn, wrappedBuiltIns); + fill(_window$1, 'setInterval', wrapTimeFn, wrappedBuiltIns); + + if (_window$1.requestAnimationFrame) { + fill(_window$1, 'requestAnimationFrame', function (orig) { + return function (cb) { + return orig(self.wrap(cb)); + }; + }, wrappedBuiltIns); + } // event targets borrowed from bugsnag-js: + // https://github.com/bugsnag/bugsnag-js/blob/master/src/bugsnag.js#L666 + + + var eventTargets = ['EventTarget', 'Window', 'Node', 'ApplicationCache', 'AudioTrackList', 'ChannelMergerNode', 'CryptoOperation', 'EventSource', 'FileReader', 'HTMLUnknownElement', 'IDBDatabase', 'IDBRequest', 'IDBTransaction', 'KeyOperation', 'MediaController', 'MessagePort', 'ModalWindow', 'Notification', 'SVGElementInstance', 'Screen', 'TextTrack', 'TextTrackCue', 'TextTrackList', 'WebSocket', 'WebSocketWorker', 'Worker', 'XMLHttpRequest', 'XMLHttpRequestEventTarget', 'XMLHttpRequestUpload']; + + for (var i = 0; i < eventTargets.length; i++) { + wrapEventTarget(eventTargets[i]); + } + }, + + /** + * Instrument browser built-ins w/ breadcrumb capturing + * - XMLHttpRequests + * - DOM interactions (click/typing) + * - window.location changes + * - console + * + * Can be disabled or individually configured via the `autoBreadcrumbs` config option + */ + _instrumentBreadcrumbs: function _instrumentBreadcrumbs() { + var self = this; + var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; + var wrappedBuiltIns = self._wrappedBuiltIns; + + function wrapProp(prop, xhr) { + if (prop in xhr && isFunction(xhr[prop])) { + fill(xhr, prop, function (orig) { + return self.wrap(orig); + }); // intentionally don't track filled methods on XHR instances + } + } + + if (autoBreadcrumbs.xhr && 'XMLHttpRequest' in _window$1) { + var xhrproto = XMLHttpRequest.prototype; + fill(xhrproto, 'open', function (origOpen) { + return function (method, url) { + // preserve arity + // if Sentry key appears in URL, don't capture + if (isString(url) && url.indexOf(self._globalKey) === -1) { + this.__raven_xhr = { + method: method, + url: url, + status_code: null + }; + } + + return origOpen.apply(this, arguments); + }; + }, wrappedBuiltIns); + fill(xhrproto, 'send', function (origSend) { + return function () { + // preserve arity + var xhr = this; + + function onreadystatechangeHandler() { + if (xhr.__raven_xhr && xhr.readyState === 4) { + try { + // touching statusCode in some platforms throws + // an exception + xhr.__raven_xhr.status_code = xhr.status; + } catch (e) { + /* do nothing */ + } + + self.captureBreadcrumb({ + type: 'http', + category: 'xhr', + data: xhr.__raven_xhr + }); + } + } + + var props = ['onload', 'onerror', 'onprogress']; + + for (var j = 0; j < props.length; j++) { + wrapProp(props[j], xhr); + } + + if ('onreadystatechange' in xhr && isFunction(xhr.onreadystatechange)) { + fill(xhr, 'onreadystatechange', function (orig) { + return self.wrap(orig, undefined, onreadystatechangeHandler); + } + /* intentionally don't track this instrumentation */ + ); + } else { + // if onreadystatechange wasn't actually set by the page on this xhr, we + // are free to set our own and capture the breadcrumb + xhr.onreadystatechange = onreadystatechangeHandler; + } + + return origSend.apply(this, arguments); + }; + }, wrappedBuiltIns); + } + + if (autoBreadcrumbs.xhr && supportsFetch()) { + fill(_window$1, 'fetch', function (origFetch) { + return function () { + // preserve arity + // Make a copy of the arguments to prevent deoptimization + // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments + var args = new Array(arguments.length); + + for (var i = 0; i < args.length; ++i) { + args[i] = arguments[i]; + } + + var fetchInput = args[0]; + var method = 'GET'; + var url; + + if (typeof fetchInput === 'string') { + url = fetchInput; + } else if ('Request' in _window$1 && fetchInput instanceof _window$1.Request) { + url = fetchInput.url; + + if (fetchInput.method) { + method = fetchInput.method; + } + } else { + url = '' + fetchInput; + } // if Sentry key appears in URL, don't capture, as it's our own request + + + if (url.indexOf(self._globalKey) !== -1) { + return origFetch.apply(this, args); + } + + if (args[1] && args[1].method) { + method = args[1].method; + } + + var fetchData = { + method: method, + url: url, + status_code: null + }; + return origFetch.apply(this, args).then(function (response) { + fetchData.status_code = response.status; + self.captureBreadcrumb({ + type: 'http', + category: 'fetch', + data: fetchData + }); + return response; + }); + }; + }, wrappedBuiltIns); + } // Capture breadcrumbs from any click that is unhandled / bubbled up all the way + // to the document. Do this before we instrument addEventListener. + + + if (autoBreadcrumbs.dom && this._hasDocument) { + if (_document.addEventListener) { + _document.addEventListener('click', self._breadcrumbEventHandler('click'), false); + + _document.addEventListener('keypress', self._keypressEventHandler(), false); + } else { + // IE8 Compatibility + _document.attachEvent('onclick', self._breadcrumbEventHandler('click')); + + _document.attachEvent('onkeypress', self._keypressEventHandler()); + } + } // record navigation (URL) changes + // NOTE: in Chrome App environment, touching history.pushState, *even inside + // a try/catch block*, will cause Chrome to output an error to console.error + // borrowed from: https://github.com/angular/angular.js/pull/13945/files + + + var chrome = _window$1.chrome; + var isChromePackagedApp = chrome && chrome.app && chrome.app.runtime; + var hasPushAndReplaceState = !isChromePackagedApp && _window$1.history && history.pushState && history.replaceState; + + if (autoBreadcrumbs.location && hasPushAndReplaceState) { + // TODO: remove onpopstate handler on uninstall() + var oldOnPopState = _window$1.onpopstate; + + _window$1.onpopstate = function () { + var currentHref = self._location.href; + + self._captureUrlChange(self._lastHref, currentHref); + + if (oldOnPopState) { + return oldOnPopState.apply(this, arguments); + } + }; + + var historyReplacementFunction = function historyReplacementFunction(origHistFunction) { + // note history.pushState.length is 0; intentionally not declaring + // params to preserve 0 arity + return function () + /* state, title, url */ + { + var url = arguments.length > 2 ? arguments[2] : undefined; // url argument is optional + + if (url) { + // coerce to string (this is what pushState does) + self._captureUrlChange(self._lastHref, url + ''); + } + + return origHistFunction.apply(this, arguments); + }; + }; + + fill(history, 'pushState', historyReplacementFunction, wrappedBuiltIns); + fill(history, 'replaceState', historyReplacementFunction, wrappedBuiltIns); + } + + if (autoBreadcrumbs.console && 'console' in _window$1 && console.log) { + // console + var consoleMethodCallback = function consoleMethodCallback(msg, data) { + self.captureBreadcrumb({ + message: msg, + level: data.level, + category: 'console' + }); + }; + + each(['debug', 'info', 'warn', 'error', 'log'], function (_, level) { + wrapConsoleMethod(console, level, consoleMethodCallback); + }); + } + }, + _restoreBuiltIns: function _restoreBuiltIns() { + // restore any wrapped builtins + var builtin; + + while (this._wrappedBuiltIns.length) { + builtin = this._wrappedBuiltIns.shift(); + var obj = builtin[0], + name = builtin[1], + orig = builtin[2]; + obj[name] = orig; + } + }, + _restoreConsole: function _restoreConsole() { + // eslint-disable-next-line guard-for-in + for (var method in this._originalConsoleMethods) { + this._originalConsole[method] = this._originalConsoleMethods[method]; + } + }, + _drainPlugins: function _drainPlugins() { + var self = this; // FIX ME TODO + + each(this._plugins, function (_, plugin) { + var installer = plugin[0]; + var args = plugin[1]; + installer.apply(self, [self].concat(args)); + }); + }, + _parseDSN: function _parseDSN(str) { + var m = dsnPattern.exec(str), + dsn = {}, + i = 7; + + try { + while (i--) { + dsn[dsnKeys[i]] = m[i] || ''; + } + } catch (e) { + throw new configError('Invalid DSN: ' + str); + } + + if (dsn.pass && !this._globalOptions.allowSecretKey) { + throw new configError('Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key'); + } + + return dsn; + }, + _getGlobalServer: function _getGlobalServer(uri) { + // assemble the endpoint from the uri pieces + var globalServer = '//' + uri.host + (uri.port ? ':' + uri.port : ''); + + if (uri.protocol) { + globalServer = uri.protocol + ':' + globalServer; + } + + return globalServer; + }, + _handleOnErrorStackInfo: function _handleOnErrorStackInfo() { + // if we are intentionally ignoring errors via onerror, bail out + if (!this._ignoreOnError) { + this._handleStackInfo.apply(this, arguments); + } + }, + _handleStackInfo: function _handleStackInfo(stackInfo, options) { + var frames = this._prepareFrames(stackInfo, options); + + this._triggerEvent('handle', { + stackInfo: stackInfo, + options: options + }); + + this._processException(stackInfo.name, stackInfo.message, stackInfo.url, stackInfo.lineno, frames, options); + }, + _prepareFrames: function _prepareFrames(stackInfo, options) { + var self = this; + var frames = []; + + if (stackInfo.stack && stackInfo.stack.length) { + each(stackInfo.stack, function (i, stack) { + var frame = self._normalizeFrame(stack, stackInfo.url); + + if (frame) { + frames.push(frame); + } + }); // e.g. frames captured via captureMessage throw + + if (options && options.trimHeadFrames) { + for (var j = 0; j < options.trimHeadFrames && j < frames.length; j++) { + frames[j].in_app = false; + } + } + } + + frames = frames.slice(0, this._globalOptions.stackTraceLimit); + return frames; + }, + _normalizeFrame: function _normalizeFrame(frame, stackInfoUrl) { + // normalize the frames data + var normalized = { + filename: frame.url, + lineno: frame.line, + colno: frame.column, + function: frame.func || '?' + }; // Case when we don't have any information about the error + // E.g. throwing a string or raw object, instead of an `Error` in Firefox + // Generating synthetic error doesn't add any value here + // + // We should probably somehow let a user know that they should fix their code + + if (!frame.url) { + normalized.filename = stackInfoUrl; // fallback to whole stacks url from onerror handler + } + + normalized.in_app = !( // determine if an exception came from outside of our app + // first we check the global includePaths list. + !!this._globalOptions.includePaths.test && !this._globalOptions.includePaths.test(normalized.filename) || // Now we check for fun, if the function name is Raven or TraceKit + /(Raven|TraceKit)\./.test(normalized['function']) || // finally, we do a last ditch effort and check for raven.min.js + /raven\.(min\.)?js$/.test(normalized.filename)); + return normalized; + }, + _processException: function _processException(type, message, fileurl, lineno, frames, options) { + var prefixedMessage = (type ? type + ': ' : '') + (message || ''); + + if (!!this._globalOptions.ignoreErrors.test && (this._globalOptions.ignoreErrors.test(message) || this._globalOptions.ignoreErrors.test(prefixedMessage))) { + return; + } + + var stacktrace; + + if (frames && frames.length) { + fileurl = frames[0].filename || fileurl; // Sentry expects frames oldest to newest + // and JS sends them as newest to oldest + + frames.reverse(); + stacktrace = { + frames: frames + }; + } else if (fileurl) { + stacktrace = { + frames: [{ + filename: fileurl, + lineno: lineno, + in_app: true + }] + }; + } + + if (!!this._globalOptions.ignoreUrls.test && this._globalOptions.ignoreUrls.test(fileurl)) { + return; + } + + if (!!this._globalOptions.whitelistUrls.test && !this._globalOptions.whitelistUrls.test(fileurl)) { + return; + } + + var data = objectMerge({ + // sentry.interfaces.Exception + exception: { + values: [{ + type: type, + value: message, + stacktrace: stacktrace + }] + }, + culprit: fileurl + }, options); // Fire away! + + this._send(data); + }, + _trimPacket: function _trimPacket(data) { + // For now, we only want to truncate the two different messages + // but this could/should be expanded to just trim everything + var max = this._globalOptions.maxMessageLength; + + if (data.message) { + data.message = truncate(data.message, max); + } + + if (data.exception) { + var exception = data.exception.values[0]; + exception.value = truncate(exception.value, max); + } + + var request = data.request; + + if (request) { + if (request.url) { + request.url = truncate(request.url, this._globalOptions.maxUrlLength); + } + + if (request.Referer) { + request.Referer = truncate(request.Referer, this._globalOptions.maxUrlLength); + } + } + + if (data.breadcrumbs && data.breadcrumbs.values) this._trimBreadcrumbs(data.breadcrumbs); + return data; + }, + + /** + * Truncate breadcrumb values (right now just URLs) + */ + _trimBreadcrumbs: function _trimBreadcrumbs(breadcrumbs) { + // known breadcrumb properties with urls + // TODO: also consider arbitrary prop values that start with (https?)?:// + var urlProps = ['to', 'from', 'url'], + urlProp, + crumb, + data; + + for (var i = 0; i < breadcrumbs.values.length; ++i) { + crumb = breadcrumbs.values[i]; + if (!crumb.hasOwnProperty('data') || !isObject(crumb.data) || objectFrozen(crumb.data)) continue; + data = objectMerge({}, crumb.data); + + for (var j = 0; j < urlProps.length; ++j) { + urlProp = urlProps[j]; + + if (data.hasOwnProperty(urlProp) && data[urlProp]) { + data[urlProp] = truncate(data[urlProp], this._globalOptions.maxUrlLength); + } + } + + breadcrumbs.values[i].data = data; + } + }, + _getHttpData: function _getHttpData() { + if (!this._hasNavigator && !this._hasDocument) return; + var httpData = {}; + + if (this._hasNavigator && _navigator.userAgent) { + httpData.headers = { + 'User-Agent': navigator.userAgent + }; + } // Check in `window` instead of `document`, as we may be in ServiceWorker environment + + + if (_window$1.location && _window$1.location.href) { + httpData.url = _window$1.location.href; + } + + if (this._hasDocument && _document.referrer) { + if (!httpData.headers) httpData.headers = {}; + httpData.headers.Referer = _document.referrer; + } + + return httpData; + }, + _resetBackoff: function _resetBackoff() { + this._backoffDuration = 0; + this._backoffStart = null; + }, + _shouldBackoff: function _shouldBackoff() { + return this._backoffDuration && now() - this._backoffStart < this._backoffDuration; + }, + + /** + * Returns true if the in-process data payload matches the signature + * of the previously-sent data + * + * NOTE: This has to be done at this level because TraceKit can generate + * data from window.onerror WITHOUT an exception object (IE8, IE9, + * other old browsers). This can take the form of an "exception" + * data object with a single frame (derived from the onerror args). + */ + _isRepeatData: function _isRepeatData(current) { + var last = this._lastData; + if (!last || current.message !== last.message || // defined for captureMessage + current.culprit !== last.culprit // defined for captureException/onerror + ) return false; // Stacktrace interface (i.e. from captureMessage) + + if (current.stacktrace || last.stacktrace) { + return isSameStacktrace(current.stacktrace, last.stacktrace); + } else if (current.exception || last.exception) { + // Exception interface (i.e. from captureException/onerror) + return isSameException(current.exception, last.exception); + } + + return true; + }, + _setBackoffState: function _setBackoffState(request) { + // If we are already in a backoff state, don't change anything + if (this._shouldBackoff()) { + return; + } + + var status = request.status; // 400 - project_id doesn't exist or some other fatal + // 401 - invalid/revoked dsn + // 429 - too many requests + + if (!(status === 400 || status === 401 || status === 429)) return; + var retry; + + try { + // If Retry-After is not in Access-Control-Expose-Headers, most + // browsers will throw an exception trying to access it + if (supportsFetch()) { + retry = request.headers.get('Retry-After'); + } else { + retry = request.getResponseHeader('Retry-After'); + } // Retry-After is returned in seconds + + + retry = parseInt(retry, 10) * 1000; + } catch (e) { + /* eslint no-empty:0 */ + } + + this._backoffDuration = retry ? // If Sentry server returned a Retry-After value, use it + retry : // Otherwise, double the last backoff duration (starts at 1 sec) + this._backoffDuration * 2 || 1000; + this._backoffStart = now(); + }, + _send: function _send(data) { + var globalOptions = this._globalOptions; + + var baseData = { + project: this._globalProject, + logger: globalOptions.logger, + platform: 'javascript' + }, + httpData = this._getHttpData(); + + if (httpData) { + baseData.request = httpData; + } // HACK: delete `trimHeadFrames` to prevent from appearing in outbound payload + + + if (data.trimHeadFrames) delete data.trimHeadFrames; + data = objectMerge(baseData, data); // Merge in the tags and extra separately since objectMerge doesn't handle a deep merge + + data.tags = objectMerge(objectMerge({}, this._globalContext.tags), data.tags); + data.extra = objectMerge(objectMerge({}, this._globalContext.extra), data.extra); // Send along our own collected metadata with extra + + data.extra['session:duration'] = now() - this._startTime; + + if (this._breadcrumbs && this._breadcrumbs.length > 0) { + // intentionally make shallow copy so that additions + // to breadcrumbs aren't accidentally sent in this request + data.breadcrumbs = { + values: [].slice.call(this._breadcrumbs, 0) + }; + } + + if (this._globalContext.user) { + // sentry.interfaces.User + data.user = this._globalContext.user; + } // Include the environment if it's defined in globalOptions + + + if (globalOptions.environment) data.environment = globalOptions.environment; // Include the release if it's defined in globalOptions + + if (globalOptions.release) data.release = globalOptions.release; // Include server_name if it's defined in globalOptions + + if (globalOptions.serverName) data.server_name = globalOptions.serverName; // Cleanup empty properties before sending them to the server + + Object.keys(data).forEach(function (key) { + if (data[key] == null || data[key] === '' || isEmptyObject(data[key])) { + delete data[key]; + } + }); + + if (isFunction(globalOptions.dataCallback)) { + data = globalOptions.dataCallback(data) || data; + } // Why?????????? + + + if (!data || isEmptyObject(data)) { + return; + } // Check if the request should be filtered or not + + + if (isFunction(globalOptions.shouldSendCallback) && !globalOptions.shouldSendCallback(data)) { + return; + } // Backoff state: Sentry server previously responded w/ an error (e.g. 429 - too many requests), + // so drop requests until "cool-off" period has elapsed. + + + if (this._shouldBackoff()) { + this._logDebug('warn', 'Raven dropped error due to backoff: ', data); + + return; + } + + if (typeof globalOptions.sampleRate === 'number') { + if (Math.random() < globalOptions.sampleRate) { + this._sendProcessedPayload(data); + } + } else { + this._sendProcessedPayload(data); + } + }, + _getUuid: function _getUuid() { + return uuid4(); + }, + _sendProcessedPayload: function _sendProcessedPayload(data, callback) { + var self = this; + var globalOptions = this._globalOptions; + if (!this.isSetup()) return; // Try and clean up the packet before sending by truncating long values + + data = this._trimPacket(data); // ideally duplicate error testing should occur *before* dataCallback/shouldSendCallback, + // but this would require copying an un-truncated copy of the data packet, which can be + // arbitrarily deep (extra_data) -- could be worthwhile? will revisit + + if (!this._globalOptions.allowDuplicates && this._isRepeatData(data)) { + this._logDebug('warn', 'Raven dropped repeat event: ', data); + + return; + } // Send along an event_id if not explicitly passed. + // This event_id can be used to reference the error within Sentry itself. + // Set lastEventId after we know the error should actually be sent + + + this._lastEventId = data.event_id || (data.event_id = this._getUuid()); // Store outbound payload after trim + + this._lastData = data; + + this._logDebug('debug', 'Raven about to send:', data); + + var auth = { + sentry_version: '7', + sentry_client: 'raven-js/' + this.VERSION, + sentry_key: this._globalKey + }; + + if (this._globalSecret) { + auth.sentry_secret = this._globalSecret; + } + + var exception = data.exception && data.exception.values[0]; // only capture 'sentry' breadcrumb is autoBreadcrumbs is truthy + + if (this._globalOptions.autoBreadcrumbs && this._globalOptions.autoBreadcrumbs.sentry) { + this.captureBreadcrumb({ + category: 'sentry', + message: exception ? (exception.type ? exception.type + ': ' : '') + exception.value : data.message, + event_id: data.event_id, + level: data.level || 'error' // presume error unless specified + + }); + } + + var url = this._globalEndpoint; + + (globalOptions.transport || this._makeRequest).call(this, { + url: url, + auth: auth, + data: data, + options: globalOptions, + onSuccess: function success() { + self._resetBackoff(); + + self._triggerEvent('success', { + data: data, + src: url + }); + + callback && callback(); + }, + onError: function failure(error) { + self._logDebug('error', 'Raven transport failed to send: ', error); + + if (error.request) { + self._setBackoffState(error.request); + } + + self._triggerEvent('failure', { + data: data, + src: url + }); + + error = error || new Error('Raven send failed (no additional details provided)'); + callback && callback(error); + } + }); + }, + _makeRequest: function _makeRequest(opts) { + // Auth is intentionally sent as part of query string (NOT as custom HTTP header) to avoid preflight CORS requests + var url = opts.url + '?' + urlencode(opts.auth); + var evaluatedHeaders = null; + var evaluatedFetchParameters = {}; + + if (opts.options.headers) { + evaluatedHeaders = this._evaluateHash(opts.options.headers); + } + + if (opts.options.fetchParameters) { + evaluatedFetchParameters = this._evaluateHash(opts.options.fetchParameters); + } + + if (supportsFetch()) { + evaluatedFetchParameters.body = stringify_1(opts.data); + var defaultFetchOptions = objectMerge({}, this._fetchDefaults); + var fetchOptions = objectMerge(defaultFetchOptions, evaluatedFetchParameters); + + if (evaluatedHeaders) { + fetchOptions.headers = evaluatedHeaders; + } + + return _window$1.fetch(url, fetchOptions).then(function (response) { + if (response.ok) { + opts.onSuccess && opts.onSuccess(); + } else { + var error = new Error('Sentry error code: ' + response.status); // It's called request only to keep compatibility with XHR interface + // and not add more redundant checks in setBackoffState method + + error.request = response; + opts.onError && opts.onError(error); + } + })['catch'](function () { + opts.onError && opts.onError(new Error('Sentry error code: network unavailable')); + }); + } + + var request = _window$1.XMLHttpRequest && new _window$1.XMLHttpRequest(); + if (!request) return; // if browser doesn't support CORS (e.g. IE7), we are out of luck + + var hasCORS = 'withCredentials' in request || typeof XDomainRequest !== 'undefined'; + if (!hasCORS) return; + + if ('withCredentials' in request) { + request.onreadystatechange = function () { + if (request.readyState !== 4) { + return; + } else if (request.status === 200) { + opts.onSuccess && opts.onSuccess(); + } else if (opts.onError) { + var err = new Error('Sentry error code: ' + request.status); + err.request = request; + opts.onError(err); + } + }; + } else { + request = new XDomainRequest(); // xdomainrequest cannot go http -> https (or vice versa), + // so always use protocol relative + + url = url.replace(/^https?:/, ''); // onreadystatechange not supported by XDomainRequest + + if (opts.onSuccess) { + request.onload = opts.onSuccess; + } + + if (opts.onError) { + request.onerror = function () { + var err = new Error('Sentry error code: XDomainRequest'); + err.request = request; + opts.onError(err); + }; + } + } + + request.open('POST', url); + + if (evaluatedHeaders) { + each(evaluatedHeaders, function (key, value) { + request.setRequestHeader(key, value); + }); + } + + request.send(stringify_1(opts.data)); + }, + _evaluateHash: function _evaluateHash(hash) { + var evaluated = {}; + + for (var key in hash) { + if (hash.hasOwnProperty(key)) { + var value = hash[key]; + evaluated[key] = typeof value === 'function' ? value() : value; + } + } + + return evaluated; + }, + _logDebug: function _logDebug(level) { + if (this._originalConsoleMethods[level] && this.debug) { + // In IE<10 console methods do not have their own 'apply' method + Function.prototype.apply.call(this._originalConsoleMethods[level], this._originalConsole, [].slice.call(arguments, 1)); + } + }, + _mergeContext: function _mergeContext(key, context) { + if (isUndefined(context)) { + delete this._globalContext[key]; + } else { + this._globalContext[key] = objectMerge(this._globalContext[key] || {}, context); + } + } +}; // Deprecations + +Raven$1.prototype.setUser = Raven$1.prototype.setUserContext; +Raven$1.prototype.setReleaseContext = Raven$1.prototype.setRelease; +var raven = Raven$1; + +/** + * Enforces a single instance of the Raven client, and the + * main entry point for Raven. If you are a consumer of the + * Raven library, you SHOULD load this file (vs raven.js). + **/ +// This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) + +var _window = typeof window !== 'undefined' ? window : typeof commonjsGlobal !== 'undefined' ? commonjsGlobal : typeof self !== 'undefined' ? self : {}; + +var _Raven = _window.Raven; +var Raven = new raven(); +/* + * Allow multiple versions of Raven to be installed. + * Strip Raven from the global context and returns the instance. + * + * @return {Raven} + */ + +Raven.noConflict = function () { + _window.Raven = _Raven; + return Raven; +}; + +Raven.afterLoad(); +var singleton = Raven; + +/** + * console plugin + * + * Monkey patches console.* calls into Sentry messages with + * their appropriate log levels. (Experimental) + * + * Options: + * + * `levels`: An array of levels (methods on `console`) to report to Sentry. + * Defaults to debug, info, warn, and error. + */ + +var wrapConsoleMethod$1 = console$1.wrapMethod; + +function consolePlugin(Raven, console, pluginOptions) { + console = console || window.console || {}; + pluginOptions = pluginOptions || {}; + var logLevels = pluginOptions.levels || ['debug', 'info', 'warn', 'error']; + if ('assert' in console) logLevels.push('assert'); + + var callback = function callback(msg, data) { + Raven.captureMessage(msg, data); + }; + + var level = logLevels.pop(); + + while (level) { + wrapConsoleMethod$1(console, level, callback); + level = logLevels.pop(); + } +} + +var console$3 = consolePlugin; + +/*global define*/ + +/** + * require.js plugin + * + * Automatically wrap define/require callbacks. (Experimental) + */ + +function requirePlugin(Raven) { + if (typeof undefined === 'function' && undefined.amd) { + window.define = Raven.wrap({ + deep: false + }, undefined); + window.require = Raven.wrap({ + deep: false + }, commonjsRequire); + } +} + +var require_1 = requirePlugin; + +/** + * Vue.js 2.0 plugin + * + */ +function formatComponentName(vm) { + if (vm.$root === vm) { + return 'root instance'; + } + + var name = vm._isVue ? vm.$options.name || vm.$options._componentTag : vm.name; + return (name ? 'component <' + name + '>' : 'anonymous component') + (vm._isVue && vm.$options.__file ? ' at ' + vm.$options.__file : ''); +} + +function vuePlugin(Raven, Vue) { + Vue = Vue || window.Vue; // quit if Vue isn't on the page + + if (!Vue || !Vue.config) return; + var _oldOnError = Vue.config.errorHandler; + + Vue.config.errorHandler = function VueErrorHandler(error, vm, info) { + var metaData = {}; // vm and lifecycleHook are not always available + + if (Object.prototype.toString.call(vm) === '[object Object]') { + metaData.componentName = formatComponentName(vm); + metaData.propsData = vm.$options.propsData; + } + + if (typeof info !== 'undefined') { + metaData.lifecycleHook = info; + } + + Raven.captureException(error, { + extra: metaData + }); + + if (typeof _oldOnError === 'function') { + _oldOnError.call(this, error, vm, info); + } + }; +} + +var vue = vuePlugin; + +/* This file was generated by './scripts/generate-plugin-combinations.js'! */ + +singleton.addPlugin(console$3).addPlugin(require_1).addPlugin(vue); +var console_require_vue = {}; + +return console_require_vue; + +}))); diff --git a/dist/console,require,vue/raven.min.js b/dist/console,require,vue/raven.min.js new file mode 100644 index 000000000000..35133048330b --- /dev/null +++ b/dist/console,require,vue/raven.min.js @@ -0,0 +1,3 @@ +/*! Raven.js 3.22.2 (1b6187b) | github.com/getsentry/raven-js */ +!function(a,b){"object"==typeof exports&&"undefined"!=typeof module?module.exports=b():"function"==typeof define&&define.amd?define(b):a.Raven=b()}(this,function(){"use strict";function a(a,b){return b={exports:{}},a(b,b.exports),b.exports}function b(a){return(b="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(a){return typeof a}:function(a){return a&&"function"==typeof Symbol&&a.constructor===Symbol&&a!==Symbol.prototype?"symbol":typeof a})(a)}function c(a){return"object"===b(a)&&null!==a}function d(a){switch({}.toString.call(a)){case"[object Error]":return!0;case"[object Exception]":return!0;case"[object DOMException]":return!0;default:return a instanceof Error}}function e(a){return l()&&"[object ErrorEvent]"==={}.toString.call(a)}function f(a){return void 0===a}function g(a){return"function"==typeof a}function h(a){return"[object Object]"===Object.prototype.toString.call(a)}function i(a){return"[object String]"===Object.prototype.toString.call(a)}function j(a){return"[object Array]"===Object.prototype.toString.call(a)}function k(a){if(!h(a))return!1;for(var b in a)if(a.hasOwnProperty(b))return!1;return!0}function l(){try{return new ErrorEvent(""),!0}catch(a){return!1}}function m(){if(!("fetch"in Q))return!1;try{return new Headers,new Request(""),new Response,!0}catch(a){return!1}}function n(a){function b(b,c){var d=a(b)||b;return c?c(d)||d:d}return b}function o(a,b){var c,d;if(f(a.length))for(c in a)s(a,c)&&b.call(null,c,a[c]);else if(d=a.length)for(c=0;c ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function y(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&i(b))for(c=b.split(/\s+/),f=0;f":"anonymous component")+(a._isVue&&a.$options.__file?" at "+a.$options.__file:"")}function N(a,b){if(b=b||window.Vue,b&&b.config){var c=b.config.errorHandler;b.config.errorHandler=function(b,d,e){var f={};"[object Object]"===Object.prototype.toString.call(d)&&(f.componentName=M(d),f.propsData=d.$options.propsData),"undefined"!=typeof e&&(f.lifecycleHook=e),a.captureException(b,{extra:f}),"function"==typeof c&&c.call(this,b,d,e)}}}var O="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{},P=Object.setPrototypeOf||function(a,b){return a.B=b,a},Q=("object"==typeof Reflect&&Reflect.construct||function(a,b,c){var d,e=[null];return e.push.apply(e,b),d=a.bind.apply(a,e),P(new d,c.prototype)},"undefined"!=typeof window?window:"undefined"!=typeof O?O:"undefined"!=typeof self?self:{}),R={isObject:c,isError:d,isErrorEvent:e,isUndefined:f,isFunction:g,isPlainObject:h,isString:i,isArray:j,isEmptyObject:k,supportsErrorEvent:l,supportsFetch:m,wrappedCallback:n,each:o,objectMerge:p,truncate:r,objectFrozen:q,hasKey:s,joinRegExp:t,urlencode:u,uuid4:w,htmlTreeAsString:x,htmlElementAsString:y,isSameException:B,isSameStacktrace:C,parseUrl:v,fill:D,safeJoin:E},S={collectWindowErrors:!0,debug:!1},T="undefined"!=typeof window?window:"undefined"!=typeof O?O:"undefined"!=typeof self?self:{},U=[].slice,V="?",W=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;S.report=function(){function a(a){f(),l.push(a)}function b(a){for(var b=l.length-1;b>=0;--b)l[b]===a&&l.splice(b,1)}function c(){g(),l=[]}function d(a,b){var c=null;if(!b||S.collectWindowErrors){for(var d in l)if(l.hasOwnProperty(d))try{l[d].apply(null,[a].concat(U.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function e(a,b,c,e,f){var g=null,i=R.isErrorEvent(f)?f.error:f,k=R.isErrorEvent(a)?a.message:a;if(o)S.computeStackTrace.augmentStackTraceWithInitialElement(o,b,c,k),h();else if(i&&R.isError(i))g=S.computeStackTrace(i),d(g,!0);else{var l,m={url:b,line:c,column:e},n=void 0;if("[object String]"==={}.toString.call(k)){var l=k.match(W);l&&(n=l[1],k=l[2])}m.func=V,g={name:n,message:k,url:F(),stack:[m]},d(g,!0)}return!!j&&j.apply(this,arguments)}function f(){k||(j=T.onerror,T.onerror=e,k=!0)}function g(){k&&(T.onerror=j,k=!1,j=void 0)}function h(){var a=o,b=m;m=null,o=null,n=null,d.apply(null,[a,!1].concat(b))}function i(a,b){var c=U.call(arguments,1);if(o){if(n===a)return;h()}var d=S.computeStackTrace(a);if(o=d,n=a,m=c,setTimeout(function(){n===a&&h()},d.incomplete?2e3:0),b!==!1)throw a}var j,k,l=[],m=null,n=null,o=null;return i.subscribe=a,i.unsubscribe=b,i.uninstall=c,i}(),S.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,d,e=/^\s*at (.*?) ?\(((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,f=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|\[native).*?|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,g=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,h=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,i=/\((\S*)(?::(\d+))(?::(\d+))\)/,j=a.stack.split("\n"),k=[],l=(/^(.*) is undefined$/.exec(a.message),0),m=j.length;l eval")>-1;o&&(b=h.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==l||c[5]||"undefined"==typeof a.columnNumber||(k[0].column=a.columnNumber+1),d={url:c[3],func:c[1]||V,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}!d.func&&d.line&&(d.func=V),k.push(d)}return k.length?{name:a.name,message:a.message,url:F(),stack:k}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=V),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,e){for(var f,g,h=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,i=[],j={},k=!1,l=c.caller;l&&!k;l=l.caller)if(l!==d&&l!==S.report){if(g={url:null,func:V,line:null,column:null},l.name?g.func=l.name:(f=h.exec(l.toString()))&&(g.func=f[1]),"undefined"==typeof g.func)try{g.func=f.input.substring(0,f.input.indexOf("{"))}catch(m){}j[""+l]?k=!0:j[""+l]=!0,i.push(g)}e&&i.splice(0,e);var n={name:a.name,message:a.message,url:F(),stack:i};return b(n,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),n}function d(b,d){var e=null;d=null==d?0:+d;try{if(e=a(b))return e}catch(f){if(S.debug)throw f}try{if(e=c(b,d+1))return e}catch(f){if(S.debug)throw f}return{name:b.name,message:b.message,url:F()}}return d.augmentStackTraceWithInitialElement=b,d.computeStackTraceFromStackProp=a,d}();var X=S,Y=a(function(a,b){function c(a,b){for(var c=0;c0){var i=c(d,this);~i?d.splice(i+1):d.push(this),~i?f.splice(i,1/0,g):f.push(g),~c(d,h)&&(h=b.call(this,g,h))}else d.push(h);return null==a?h instanceof Error?e(h):h:a.call(this,g,h)}}b=a.exports=d,b.getSerialize=f});G.prototype=new Error,G.prototype.constructor=G;var Z=G,$=function(a,b,c){var d=a[b],e=a;if(b in a){var f="warn"===b?"warning":b;a[b]=function(){var a=[].slice.call(arguments),g=R.safeJoin(a," "),h={level:f,logger:"console",extra:{arguments:a}};"assert"===b?a[0]===!1&&(g="Assertion failed: "+(R.safeJoin(a.slice(1)," ")||"console.assert"),h.extra.arguments=a.slice(1),c&&c(g,h)):c&&c(g,h),d&&Function.prototype.apply.call(d,e,a)}}},_={wrapMethod:$},aa=R.isError,ba=R.isObject,ca=R.isErrorEvent,da=R.isUndefined,ea=R.isFunction,fa=R.isString,ga=R.isArray,ha=R.isEmptyObject,ia=R.each,ja=R.objectMerge,ka=R.truncate,la=R.objectFrozen,ma=R.hasKey,na=R.joinRegExp,oa=R.urlencode,pa=R.uuid4,qa=R.htmlTreeAsString,ra=R.isSameException,sa=R.isSameStacktrace,ta=R.parseUrl,ua=R.fill,va=R.supportsFetch,wa=_.wrapMethod,xa="source protocol user pass host port path".split(" "),ya=/^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/,za="undefined"!=typeof window?window:"undefined"!=typeof O?O:"undefined"!=typeof self?self:{},Aa=za.document,Ba=za.navigator;J.prototype={VERSION:"3.22.2",debug:!1,TraceKit:X,config:function(a,b){var c=this;if(c.i)return this.C("error","Error: Raven has already been configured"),c;if(!a)return c;var d=c.m;b&&ia(b,function(a,b){"tags"===a||"extra"===a||"user"===a?c.l[a]=b:d[a]=b}),c.setDSN(a),d.ignoreErrors.push(/^Script error\.?$/),d.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/),d.ignoreErrors=na(d.ignoreErrors),d.ignoreUrls=!!d.ignoreUrls.length&&na(d.ignoreUrls),d.whitelistUrls=!!d.whitelistUrls.length&&na(d.whitelistUrls),d.includePaths=na(d.includePaths),d.maxBreadcrumbs=Math.max(0,Math.min(d.maxBreadcrumbs||100,100));var e={xhr:!0,console:!0,dom:!0,location:!0,sentry:!0},f=d.autoBreadcrumbs;"[object Object]"==={}.toString.call(f)?f=ja(e,f):f!==!1&&(f=e),d.autoBreadcrumbs=f;var g={tryCatch:!0},h=d.instrument;return"[object Object]"==={}.toString.call(h)?h=ja(g,h):h!==!1&&(h=g),d.instrument=h,X.collectWindowErrors=!!d.collectWindowErrors,c},install:function(){var a=this;return a.isSetup()&&!a.p&&(X.report.subscribe(function(){a.D.apply(a,arguments)}),a.E(),a.m.instrument&&a.m.instrument.tryCatch&&a.F(),a.m.autoBreadcrumbs&&a.G(),a.H(),a.p=!0),Error.stackTraceLimit=a.m.stackTraceLimit,this},setDSN:function(a){var b=this,c=b.I(a),d=c.path.lastIndexOf("/"),e=c.path.substr(1,d);b.J=a,b.j=c.user,b.K=c.pass&&c.pass.substr(1),b.k=c.path.substr(d+1),b.i=b.L(c),b.M=b.i+"/"+e+"api/"+b.k+"/store/",this.A()},context:function(a,b,c){return ea(a)&&(c=b||[],b=a,a=void 0),this.wrap(a,b).apply(this,c)},wrap:function(a,b,c){function d(){var d=[],f=arguments.length,g=!a||a&&a.deep!==!1;for(c&&ea(c)&&c.apply(this,arguments);f--;)d[f]=g?e.wrap(a,arguments[f]):arguments[f];try{return b.apply(this,d)}catch(h){throw e.N(),e.captureException(h,a),h}}var e=this;if(da(b)&&!ea(a))return a;if(ea(a)&&(b=a,a=void 0),!ea(b))return b;try{if(b.a)return b;if(b.O)return b.O}catch(f){return b}for(var g in b)ma(b,g)&&(d[g]=b[g]);return d.prototype=b.prototype,b.O=d,d.a=!0,d.b=b,d},uninstall:function(){return X.report.uninstall(),this.P(),this.Q(),this.R(),Error.stackTraceLimit=this.q,this.p=!1,this},captureException:function(a,b){b=ja({trimHeadFrames:0},b?b:{});var c=!aa(a),d=!ca(a),e=ca(a)&&!a.error;if(c&&d||e)return this.captureMessage(a,ja(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}));ca(a)&&(a=a.error),this.f=a;try{var f=X.computeStackTrace(a);this.S(f,b)}catch(g){if(a!==g)throw g}return this},captureMessage:function(a,b){if(!this.m.ignoreErrors.test||!this.m.ignoreErrors.test(a)){b=b||{};var c,d=ja({message:a+""},b);try{throw new Error(a)}catch(e){c=e}c.name=null;var f=X.computeStackTrace(c),g=ga(f.stack)&&f.stack[1],h=g&&g.url||"";if((!this.m.ignoreUrls.test||!this.m.ignoreUrls.test(h))&&(!this.m.whitelistUrls.test||this.m.whitelistUrls.test(h))){if(this.m.stacktrace||b&&b.stacktrace){b=ja({fingerprint:a,trimHeadFrames:(b.trimHeadFrames||0)+1},b);var i=this.T(f,b);d.stacktrace={frames:i.reverse()}}return this.U(d),this}}},captureBreadcrumb:function(a){var b=ja({timestamp:H()/1e3},a);if(ea(this.m.breadcrumbCallback)){var c=this.m.breadcrumbCallback(b);if(ba(c)&&!ha(c))b=c;else if(c===!1)return this}return this.w.push(b),this.w.length>this.m.maxBreadcrumbs&&this.w.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.t.push([a,b]),this.p&&this.H(),this},setUserContext:function(a){return this.l.user=a,this},setExtraContext:function(a){return this.V("extra",a),this},setTagsContext:function(a){return this.V("tags",a),this},clearContext:function(){return this.l={},this},getContext:function(){return JSON.parse(Y(this.l))},setEnvironment:function(a){return this.m.environment=a,this},setRelease:function(a){return this.m.release=a,this},setDataCallback:function(a){var b=this.m.dataCallback;return this.m.dataCallback=I(b,a),this},setBreadcrumbCallback:function(a){var b=this.m.breadcrumbCallback;return this.m.breadcrumbCallback=I(b,a),this},setShouldSendCallback:function(a){var b=this.m.shouldSendCallback;return this.m.shouldSendCallback=I(b,a),this},setTransport:function(a){return this.m.transport=a,this},lastException:function(){return this.f},lastEventId:function(){return this.h},isSetup:function(){return!!this.c&&(!!this.i||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.C("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=za.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(Aa){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new Z("Missing eventId");var c=a.dsn||this.J;if(!c)throw new Z("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.l.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.L(this.I(c)),h=Aa.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(Aa.head||Aa.body).appendChild(h)}},N:function(){var a=this;this.o+=1,setTimeout(function(){a.o-=1})},W:function(a,b){var c,d;if(this.d){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),Aa.createEvent?(c=Aa.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=Aa.createEventObject(),c.eventType=a);for(d in b)ma(b,d)&&(c[d]=b[d]);if(Aa.createEvent)Aa.dispatchEvent(c);else try{Aa.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},X:function(a){var b=this;return function(c){if(b.Y=null,b.x!==c){b.x=c;var d;try{d=qa(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},Z:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.Y;g||a.X("input")(c),clearTimeout(g),a.Y=setTimeout(function(){a.Y=null},b)}}},$:function(a,b){var c=ta(this.y.href),d=ta(b),e=ta(a);this.z=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},E:function(){var a=this;a._=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.a?a._.apply(this.b,arguments):a._.apply(this,arguments)}},P:function(){this._&&(Function.prototype.toString=this._)},F:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.$(b.z,c+""),a.apply(this,arguments)}};ua(history,"pushState",j,d),ua(history,"replaceState",j,d)}if(c.console&&"console"in za&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};ia(["debug","info","warn","error","log"],function(a,b){wa(console,b,k)})}},Q:function(){for(var a;this.v.length;){a=this.v.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},R:function(){for(var a in this.s)this.r[a]=this.s[a]},H:function(){var a=this;ia(this.t,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},I:function(a){var b=ya.exec(a),c={},d=7;try{for(;d--;)c[xa[d]]=b[d]||""}catch(e){throw new Z("Invalid DSN: "+a)}if(c.pass&&!this.m.allowSecretKey)throw new Z("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},L:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},D:function(){this.o||this.S.apply(this,arguments)},S:function(a,b){var c=this.T(a,b);this.W("handle",{stackInfo:a,options:b}),this.ba(a.name,a.message,a.url,a.lineno,c,b)},T:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(ia(a.stack,function(b,e){var f=c.ca(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.w,0)}),this.l.user&&(a.user=this.l.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||ha(a[b]))&&delete a[b]}),ea(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!ha(a)&&(!ea(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.ia()?void this.C("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() href parsing trick because React Native and other +// environments where DOM might not be available + + +function parseUrl$1(url) { + if (typeof url !== 'string') return {}; + var match = url.match(/^(([^:\/?#]+):)?(\/\/([^\/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?$/); // coerce to undefined values to empty string so we don't get 'undefined' + + var query = match[6] || ''; + var fragment = match[8] || ''; + return { + protocol: match[2], + host: match[4], + path: match[5], + relative: match[5] + query + fragment // everything minus origin + + }; +} + +function uuid4$1() { + var crypto = _window$3.crypto || _window$3.msCrypto; + + if (!isUndefined$1(crypto) && crypto.getRandomValues) { + // Use window.crypto API if available + // eslint-disable-next-line no-undef + var arr = new Uint16Array(8); + crypto.getRandomValues(arr); // set 4 in byte 7 + + arr[3] = arr[3] & 0xfff | 0x4000; // set 2 most significant bits of byte 9 to '10' + + arr[4] = arr[4] & 0x3fff | 0x8000; + + var pad = function pad(num) { + var v = num.toString(16); + + while (v.length < 4) { + v = '0' + v; + } + + return v; + }; + + return pad(arr[0]) + pad(arr[1]) + pad(arr[2]) + pad(arr[3]) + pad(arr[4]) + pad(arr[5]) + pad(arr[6]) + pad(arr[7]); + } else { + // http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/2117523#2117523 + return 'xxxxxxxxxxxx4xxxyxxxxxxxxxxxxxxx'.replace(/[xy]/g, function (c) { + var r = Math.random() * 16 | 0, + v = c === 'x' ? r : r & 0x3 | 0x8; + return v.toString(16); + }); + } +} +/** + * Given a child DOM element, returns a query-selector statement describing that + * and its ancestors + * e.g. [HTMLElement] => body > div > input#foo.btn[name=baz] + * @param elem + * @returns {string} + */ + + +function htmlTreeAsString$1(elem) { + /* eslint no-extra-parens:0*/ + var MAX_TRAVERSE_HEIGHT = 5, + MAX_OUTPUT_LEN = 80, + out = [], + height = 0, + len = 0, + separator = ' > ', + sepLength = separator.length, + nextStr; + + while (elem && height++ < MAX_TRAVERSE_HEIGHT) { + nextStr = htmlElementAsString(elem); // bail out if + // - nextStr is the 'html' element + // - the length of the string that would be created exceeds MAX_OUTPUT_LEN + // (ignore this limit if we are on the first iteration) + + if (nextStr === 'html' || height > 1 && len + out.length * sepLength + nextStr.length >= MAX_OUTPUT_LEN) { + break; + } + + out.push(nextStr); + len += nextStr.length; + elem = elem.parentNode; + } + + return out.reverse().join(separator); +} +/** + * Returns a simple, query-selector representation of a DOM element + * e.g. [HTMLElement] => input#foo.btn[name=baz] + * @param HTMLElement + * @returns {string} + */ + + +function htmlElementAsString(elem) { + var out = [], + className, + classes, + key, + attr, + i; + + if (!elem || !elem.tagName) { + return ''; + } + + out.push(elem.tagName.toLowerCase()); + + if (elem.id) { + out.push('#' + elem.id); + } + + className = elem.className; + + if (className && isString$1(className)) { + classes = className.split(/\s+/); + + for (i = 0; i < classes.length; i++) { + out.push('.' + classes[i]); + } + } + + var attrWhitelist = ['type', 'name', 'title', 'alt']; + + for (i = 0; i < attrWhitelist.length; i++) { + key = attrWhitelist[i]; + attr = elem.getAttribute(key); + + if (attr) { + out.push('[' + key + '="' + attr + '"]'); + } + } + + return out.join(''); +} +/** + * Returns true if either a OR b is truthy, but not both + */ + + +function isOnlyOneTruthy(a, b) { + return !!(!!a ^ !!b); +} +/** + * Returns true if both parameters are undefined + */ + + +function isBothUndefined(a, b) { + return isUndefined$1(a) && isUndefined$1(b); +} +/** + * Returns true if the two input exception interfaces have the same content + */ + + +function isSameException$1(ex1, ex2) { + if (isOnlyOneTruthy(ex1, ex2)) return false; + ex1 = ex1.values[0]; + ex2 = ex2.values[0]; + if (ex1.type !== ex2.type || ex1.value !== ex2.value) return false; // in case both stacktraces are undefined, we can't decide so default to false + + if (isBothUndefined(ex1.stacktrace, ex2.stacktrace)) return false; + return isSameStacktrace$1(ex1.stacktrace, ex2.stacktrace); +} +/** + * Returns true if the two input stack trace interfaces have the same content + */ + + +function isSameStacktrace$1(stack1, stack2) { + if (isOnlyOneTruthy(stack1, stack2)) return false; + var frames1 = stack1.frames; + var frames2 = stack2.frames; // Exit early if frame count differs + + if (frames1.length !== frames2.length) return false; // Iterate through every frame; bail out if anything differs + + var a, b; + + for (var i = 0; i < frames1.length; i++) { + a = frames1[i]; + b = frames2[i]; + if (a.filename !== b.filename || a.lineno !== b.lineno || a.colno !== b.colno || a['function'] !== b['function']) return false; + } + + return true; +} +/** + * Polyfill a method + * @param obj object e.g. `document` + * @param name method name present on object e.g. `addEventListener` + * @param replacement replacement function + * @param track {optional} record instrumentation to an array + */ + + +function fill$1(obj, name, replacement, track) { + var orig = obj[name]; + obj[name] = replacement(orig); + obj[name].__raven__ = true; + obj[name].__orig__ = orig; + + if (track) { + track.push([obj, name, orig]); + } +} +/** + * Join values in array + * @param input array of values to be joined together + * @param delimiter string to be placed in-between values + * @returns {string} + */ + + +function safeJoin(input, delimiter) { + if (!isArray$1(input)) return ''; + var output = []; + + for (var i = 0; i < input.length; i++) { + try { + output.push(String(input[i])); + } catch (e) { + output.push('[value cannot be serialized]'); + } + } + + return output.join(delimiter); +} + +var utils = { + isObject: isObject$1, + isError: isError$1, + isErrorEvent: isErrorEvent$1, + isUndefined: isUndefined$1, + isFunction: isFunction$1, + isPlainObject: isPlainObject, + isString: isString$1, + isArray: isArray$1, + isEmptyObject: isEmptyObject$1, + supportsErrorEvent: supportsErrorEvent, + supportsFetch: supportsFetch$1, + wrappedCallback: wrappedCallback, + each: each$1, + objectMerge: objectMerge$1, + truncate: truncate$1, + objectFrozen: objectFrozen$1, + hasKey: hasKey$1, + joinRegExp: joinRegExp$1, + urlencode: urlencode$1, + uuid4: uuid4$1, + htmlTreeAsString: htmlTreeAsString$1, + htmlElementAsString: htmlElementAsString, + isSameException: isSameException$1, + isSameStacktrace: isSameStacktrace$1, + parseUrl: parseUrl$1, + fill: fill$1, + safeJoin: safeJoin +}; + +/* + TraceKit - Cross brower stack traces + + This was originally forked from github.com/occ/TraceKit, but has since been + largely re-written and is now maintained as part of raven-js. Tests for + this are in test/vendor. + + MIT license +*/ + +var TraceKit = { + collectWindowErrors: true, + debug: false +}; // This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) + +var _window$2 = typeof window !== 'undefined' ? window : typeof commonjsGlobal !== 'undefined' ? commonjsGlobal : typeof self !== 'undefined' ? self : {}; // global reference to slice + + +var _slice = [].slice; +var UNKNOWN_FUNCTION = '?'; // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error#Error_types + +var ERROR_TYPES_RE = /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/; + +function getLocationHref() { + if (typeof document === 'undefined' || document.location == null) return ''; + return document.location.href; +} +/** + * TraceKit.report: cross-browser processing of unhandled exceptions + * + * Syntax: + * TraceKit.report.subscribe(function(stackInfo) { ... }) + * TraceKit.report.unsubscribe(function(stackInfo) { ... }) + * TraceKit.report(exception) + * try { ...code... } catch(ex) { TraceKit.report(ex); } + * + * Supports: + * - Firefox: full stack trace with line numbers, plus column number + * on top frame; column number is not guaranteed + * - Opera: full stack trace with line and column numbers + * - Chrome: full stack trace with line and column numbers + * - Safari: line and column number for the top frame only; some frames + * may be missing, and column number is not guaranteed + * - IE: line and column number for the top frame only; some frames + * may be missing, and column number is not guaranteed + * + * In theory, TraceKit should work on all of the following versions: + * - IE5.5+ (only 8.0 tested) + * - Firefox 0.9+ (only 3.5+ tested) + * - Opera 7+ (only 10.50 tested; versions 9 and earlier may require + * Exceptions Have Stacktrace to be enabled in opera:config) + * - Safari 3+ (only 4+ tested) + * - Chrome 1+ (only 5+ tested) + * - Konqueror 3.5+ (untested) + * + * Requires TraceKit.computeStackTrace. + * + * Tries to catch all unhandled exceptions and report them to the + * subscribed handlers. Please note that TraceKit.report will rethrow the + * exception. This is REQUIRED in order to get a useful stack trace in IE. + * If the exception does not reach the top of the browser, you will only + * get a stack trace from the point where TraceKit.report was called. + * + * Handlers receive a stackInfo object as described in the + * TraceKit.computeStackTrace docs. + */ + + +TraceKit.report = function reportModuleWrapper() { + var handlers = [], + lastArgs = null, + lastException = null, + lastExceptionStack = null; + /** + * Add a crash handler. + * @param {Function} handler + */ + + function subscribe(handler) { + installGlobalHandler(); + handlers.push(handler); + } + /** + * Remove a crash handler. + * @param {Function} handler + */ + + + function unsubscribe(handler) { + for (var i = handlers.length - 1; i >= 0; --i) { + if (handlers[i] === handler) { + handlers.splice(i, 1); + } + } + } + /** + * Remove all crash handlers. + */ + + + function unsubscribeAll() { + uninstallGlobalHandler(); + handlers = []; + } + /** + * Dispatch stack information to all handlers. + * @param {Object.} stack + */ + + + function notifyHandlers(stack, isWindowError) { + var exception = null; + + if (isWindowError && !TraceKit.collectWindowErrors) { + return; + } + + for (var i in handlers) { + if (handlers.hasOwnProperty(i)) { + try { + handlers[i].apply(null, [stack].concat(_slice.call(arguments, 2))); + } catch (inner) { + exception = inner; + } + } + } + + if (exception) { + throw exception; + } + } + + var _oldOnerrorHandler, _onErrorHandlerInstalled; + /** + * Ensures all global unhandled exceptions are recorded. + * Supported by Gecko and IE. + * @param {string} msg Error message. + * @param {string} url URL of script that generated the exception. + * @param {(number|string)} lineNo The line number at which the error + * occurred. + * @param {?(number|string)} colNo The column number at which the error + * occurred. + * @param {?Error} ex The actual Error object. + */ + + + function traceKitWindowOnError(msg, url, lineNo, colNo, ex) { + var stack = null; // If 'ex' is ErrorEvent, get real Error from inside + + var exception = utils.isErrorEvent(ex) ? ex.error : ex; // If 'msg' is ErrorEvent, get real message from inside + + var message = utils.isErrorEvent(msg) ? msg.message : msg; + + if (lastExceptionStack) { + TraceKit.computeStackTrace.augmentStackTraceWithInitialElement(lastExceptionStack, url, lineNo, message); + processLastException(); + } else if (exception && utils.isError(exception)) { + // non-string `exception` arg; attempt to extract stack trace + // New chrome and blink send along a real error object + // Let's just report that like a normal error. + // See: https://mikewest.org/2013/08/debugging-runtime-errors-with-window-onerror + stack = TraceKit.computeStackTrace(exception); + notifyHandlers(stack, true); + } else { + var location = { + url: url, + line: lineNo, + column: colNo + }; + var name = undefined; + var groups; + + if ({}.toString.call(message) === '[object String]') { + var groups = message.match(ERROR_TYPES_RE); + + if (groups) { + name = groups[1]; + message = groups[2]; + } + } + + location.func = UNKNOWN_FUNCTION; + stack = { + name: name, + message: message, + url: getLocationHref(), + stack: [location] + }; + notifyHandlers(stack, true); + } + + if (_oldOnerrorHandler) { + return _oldOnerrorHandler.apply(this, arguments); + } + + return false; + } + + function installGlobalHandler() { + if (_onErrorHandlerInstalled) { + return; + } + + _oldOnerrorHandler = _window$2.onerror; + _window$2.onerror = traceKitWindowOnError; + _onErrorHandlerInstalled = true; + } + + function uninstallGlobalHandler() { + if (!_onErrorHandlerInstalled) { + return; + } + + _window$2.onerror = _oldOnerrorHandler; + _onErrorHandlerInstalled = false; + _oldOnerrorHandler = undefined; + } + + function processLastException() { + var _lastExceptionStack = lastExceptionStack, + _lastArgs = lastArgs; + lastArgs = null; + lastExceptionStack = null; + lastException = null; + notifyHandlers.apply(null, [_lastExceptionStack, false].concat(_lastArgs)); + } + /** + * Reports an unhandled Error to TraceKit. + * @param {Error} ex + * @param {?boolean} rethrow If false, do not re-throw the exception. + * Only used for window.onerror to not cause an infinite loop of + * rethrowing. + */ + + + function report(ex, rethrow) { + var args = _slice.call(arguments, 1); + + if (lastExceptionStack) { + if (lastException === ex) { + return; // already caught by an inner catch block, ignore + } else { + processLastException(); + } + } + + var stack = TraceKit.computeStackTrace(ex); + lastExceptionStack = stack; + lastException = ex; + lastArgs = args; // If the stack trace is incomplete, wait for 2 seconds for + // slow slow IE to see if onerror occurs or not before reporting + // this exception; otherwise, we will end up with an incomplete + // stack trace + + setTimeout(function () { + if (lastException === ex) { + processLastException(); + } + }, stack.incomplete ? 2000 : 0); + + if (rethrow !== false) { + throw ex; // re-throw to propagate to the top level (and cause window.onerror) + } + } + + report.subscribe = subscribe; + report.unsubscribe = unsubscribe; + report.uninstall = unsubscribeAll; + return report; +}(); +/** + * TraceKit.computeStackTrace: cross-browser stack traces in JavaScript + * + * Syntax: + * s = TraceKit.computeStackTrace(exception) // consider using TraceKit.report instead (see below) + * Returns: + * s.name - exception name + * s.message - exception message + * s.stack[i].url - JavaScript or HTML file URL + * s.stack[i].func - function name, or empty for anonymous functions (if guessing did not work) + * s.stack[i].args - arguments passed to the function, if known + * s.stack[i].line - line number, if known + * s.stack[i].column - column number, if known + * + * Supports: + * - Firefox: full stack trace with line numbers and unreliable column + * number on top frame + * - Opera 10: full stack trace with line and column numbers + * - Opera 9-: full stack trace with line numbers + * - Chrome: full stack trace with line and column numbers + * - Safari: line and column number for the topmost stacktrace element + * only + * - IE: no line numbers whatsoever + * + * Tries to guess names of anonymous functions by looking for assignments + * in the source code. In IE and Safari, we have to guess source file names + * by searching for function bodies inside all page scripts. This will not + * work for scripts that are loaded cross-domain. + * Here be dragons: some function names may be guessed incorrectly, and + * duplicate functions may be mismatched. + * + * TraceKit.computeStackTrace should only be used for tracing purposes. + * Logging of unhandled exceptions should be done with TraceKit.report, + * which builds on top of TraceKit.computeStackTrace and provides better + * IE support by utilizing the window.onerror event to retrieve information + * about the top of the stack. + * + * Note: In IE and Safari, no stack trace is recorded on the Error object, + * so computeStackTrace instead walks its *own* chain of callers. + * This means that: + * * in Safari, some methods may be missing from the stack trace; + * * in IE, the topmost function in the stack trace will always be the + * caller of computeStackTrace. + * + * This is okay for tracing (because you are likely to be calling + * computeStackTrace from the function you want to be the topmost element + * of the stack trace anyway), but not okay for logging unhandled + * exceptions (because your catch block will likely be far away from the + * inner function that actually caused the exception). + * + */ + + +TraceKit.computeStackTrace = function computeStackTraceWrapper() { + // Contents of Exception in various browsers. + // + // SAFARI: + // ex.message = Can't find variable: qq + // ex.line = 59 + // ex.sourceId = 580238192 + // ex.sourceURL = http://... + // ex.expressionBeginOffset = 96 + // ex.expressionCaretOffset = 98 + // ex.expressionEndOffset = 98 + // ex.name = ReferenceError + // + // FIREFOX: + // ex.message = qq is not defined + // ex.fileName = http://... + // ex.lineNumber = 59 + // ex.columnNumber = 69 + // ex.stack = ...stack trace... (see the example below) + // ex.name = ReferenceError + // + // CHROME: + // ex.message = qq is not defined + // ex.name = ReferenceError + // ex.type = not_defined + // ex.arguments = ['aa'] + // ex.stack = ...stack trace... + // + // INTERNET EXPLORER: + // ex.message = ... + // ex.name = ReferenceError + // + // OPERA: + // ex.message = ...message... (see the example below) + // ex.name = ReferenceError + // ex.opera#sourceloc = 11 (pretty much useless, duplicates the info in ex.message) + // ex.stacktrace = n/a; see 'opera:config#UserPrefs|Exceptions Have Stacktrace' + + /** + * Computes stack trace information from the stack property. + * Chrome and Gecko use this property. + * @param {Error} ex + * @return {?Object.} Stack trace information. + */ + function computeStackTraceFromStackProp(ex) { + if (typeof ex.stack === 'undefined' || !ex.stack) return; + var chrome = /^\s*at (.*?) ?\(((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i, + gecko = /^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|\[native).*?|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i, + winjs = /^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i, + // Used to additionally parse URL/line/column from eval frames + geckoEval = /(\S+) line (\d+)(?: > eval line \d+)* > eval/i, + chromeEval = /\((\S*)(?::(\d+))(?::(\d+))\)/, + lines = ex.stack.split('\n'), + stack = [], + submatch, + parts, + element, + reference = /^(.*) is undefined$/.exec(ex.message); + + for (var i = 0, j = lines.length; i < j; ++i) { + if (parts = chrome.exec(lines[i])) { + var isNative = parts[2] && parts[2].indexOf('native') === 0; // start of line + + var isEval = parts[2] && parts[2].indexOf('eval') === 0; // start of line + + if (isEval && (submatch = chromeEval.exec(parts[2]))) { + // throw out eval line/column and use top-most line/column number + parts[2] = submatch[1]; // url + + parts[3] = submatch[2]; // line + + parts[4] = submatch[3]; // column + } + + element = { + url: !isNative ? parts[2] : null, + func: parts[1] || UNKNOWN_FUNCTION, + args: isNative ? [parts[2]] : [], + line: parts[3] ? +parts[3] : null, + column: parts[4] ? +parts[4] : null + }; + } else if (parts = winjs.exec(lines[i])) { + element = { + url: parts[2], + func: parts[1] || UNKNOWN_FUNCTION, + args: [], + line: +parts[3], + column: parts[4] ? +parts[4] : null + }; + } else if (parts = gecko.exec(lines[i])) { + var isEval = parts[3] && parts[3].indexOf(' > eval') > -1; + + if (isEval && (submatch = geckoEval.exec(parts[3]))) { + // throw out eval line/column and use top-most line number + parts[3] = submatch[1]; + parts[4] = submatch[2]; + parts[5] = null; // no column when eval + } else if (i === 0 && !parts[5] && typeof ex.columnNumber !== 'undefined') { + // FireFox uses this awesome columnNumber property for its top frame + // Also note, Firefox's column number is 0-based and everything else expects 1-based, + // so adding 1 + // NOTE: this hack doesn't work if top-most frame is eval + stack[0].column = ex.columnNumber + 1; + } + + element = { + url: parts[3], + func: parts[1] || UNKNOWN_FUNCTION, + args: parts[2] ? parts[2].split(',') : [], + line: parts[4] ? +parts[4] : null, + column: parts[5] ? +parts[5] : null + }; + } else { + continue; + } + + if (!element.func && element.line) { + element.func = UNKNOWN_FUNCTION; + } + + stack.push(element); + } + + if (!stack.length) { + return null; + } + + return { + name: ex.name, + message: ex.message, + url: getLocationHref(), + stack: stack + }; + } + /** + * Adds information about the first frame to incomplete stack traces. + * Safari and IE require this to get complete data on the first frame. + * @param {Object.} stackInfo Stack trace information from + * one of the compute* methods. + * @param {string} url The URL of the script that caused an error. + * @param {(number|string)} lineNo The line number of the script that + * caused an error. + * @param {string=} message The error generated by the browser, which + * hopefully contains the name of the object that caused the error. + * @return {boolean} Whether or not the stack information was + * augmented. + */ + + + function augmentStackTraceWithInitialElement(stackInfo, url, lineNo, message) { + var initial = { + url: url, + line: lineNo + }; + + if (initial.url && initial.line) { + stackInfo.incomplete = false; + + if (!initial.func) { + initial.func = UNKNOWN_FUNCTION; + } + + if (stackInfo.stack.length > 0) { + if (stackInfo.stack[0].url === initial.url) { + if (stackInfo.stack[0].line === initial.line) { + return false; // already in stack trace + } else if (!stackInfo.stack[0].line && stackInfo.stack[0].func === initial.func) { + stackInfo.stack[0].line = initial.line; + return false; + } + } + } + + stackInfo.stack.unshift(initial); + stackInfo.partial = true; + return true; + } else { + stackInfo.incomplete = true; + } + + return false; + } + /** + * Computes stack trace information by walking the arguments.caller + * chain at the time the exception occurred. This will cause earlier + * frames to be missed but is the only way to get any stack trace in + * Safari and IE. The top frame is restored by + * {@link augmentStackTraceWithInitialElement}. + * @param {Error} ex + * @return {?Object.} Stack trace information. + */ + + + function computeStackTraceByWalkingCallerChain(ex, depth) { + var functionName = /function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i, + stack = [], + funcs = {}, + recursion = false, + parts, + item; + + for (var curr = computeStackTraceByWalkingCallerChain.caller; curr && !recursion; curr = curr.caller) { + if (curr === computeStackTrace || curr === TraceKit.report) { + // console.log('skipping internal function'); + continue; + } + + item = { + url: null, + func: UNKNOWN_FUNCTION, + line: null, + column: null + }; + + if (curr.name) { + item.func = curr.name; + } else if (parts = functionName.exec(curr.toString())) { + item.func = parts[1]; + } + + if (typeof item.func === 'undefined') { + try { + item.func = parts.input.substring(0, parts.input.indexOf('{')); + } catch (e) {} + } + + if (funcs['' + curr]) { + recursion = true; + } else { + funcs['' + curr] = true; + } + + stack.push(item); + } + + if (depth) { + // console.log('depth is ' + depth); + // console.log('stack is ' + stack.length); + stack.splice(0, depth); + } + + var result = { + name: ex.name, + message: ex.message, + url: getLocationHref(), + stack: stack + }; + augmentStackTraceWithInitialElement(result, ex.sourceURL || ex.fileName, ex.line || ex.lineNumber, ex.message || ex.description); + return result; + } + /** + * Computes a stack trace for an exception. + * @param {Error} ex + * @param {(string|number)=} depth + */ + + + function computeStackTrace(ex, depth) { + var stack = null; + depth = depth == null ? 0 : +depth; + + try { + stack = computeStackTraceFromStackProp(ex); + + if (stack) { + return stack; + } + } catch (e) { + if (TraceKit.debug) { + throw e; + } + } + + try { + stack = computeStackTraceByWalkingCallerChain(ex, depth + 1); + + if (stack) { + return stack; + } + } catch (e) { + if (TraceKit.debug) { + throw e; + } + } + + return { + name: ex.name, + message: ex.message, + url: getLocationHref() + }; + } + + computeStackTrace.augmentStackTraceWithInitialElement = augmentStackTraceWithInitialElement; + computeStackTrace.computeStackTraceFromStackProp = computeStackTraceFromStackProp; + return computeStackTrace; +}(); + +var tracekit = TraceKit; + +var stringify_1 = createCommonjsModule(function (module, exports) { + /* + json-stringify-safe + Like JSON.stringify, but doesn't throw on circular references. + + Originally forked from https://github.com/isaacs/json-stringify-safe + version 5.0.1 on 3/8/2017 and modified to handle Errors serialization + and IE8 compatibility. Tests for this are in test/vendor. + + ISC license: https://github.com/isaacs/json-stringify-safe/blob/master/LICENSE + */ + exports = module.exports = stringify; + exports.getSerialize = serializer; + + function indexOf(haystack, needle) { + for (var i = 0; i < haystack.length; ++i) { + if (haystack[i] === needle) return i; + } + + return -1; + } + + function stringify(obj, replacer, spaces, cycleReplacer) { + return JSON.stringify(obj, serializer(replacer, cycleReplacer), spaces); + } // https://github.com/ftlabs/js-abbreviate/blob/fa709e5f139e7770a71827b1893f22418097fbda/index.js#L95-L106 + + + function stringifyError(value) { + var err = { + // These properties are implemented as magical getters and don't show up in for in + stack: value.stack, + message: value.message, + name: value.name + }; + + for (var i in value) { + if (Object.prototype.hasOwnProperty.call(value, i)) { + err[i] = value[i]; + } + } + + return err; + } + + function serializer(replacer, cycleReplacer) { + var stack = []; + var keys = []; + + if (cycleReplacer == null) { + cycleReplacer = function cycleReplacer(key, value) { + if (stack[0] === value) { + return '[Circular ~]'; + } + + return '[Circular ~.' + keys.slice(0, indexOf(stack, value)).join('.') + ']'; + }; + } + + return function (key, value) { + if (stack.length > 0) { + var thisPos = indexOf(stack, this); + ~thisPos ? stack.splice(thisPos + 1) : stack.push(this); + ~thisPos ? keys.splice(thisPos, Infinity, key) : keys.push(key); + + if (~indexOf(stack, value)) { + value = cycleReplacer.call(this, key, value); + } + } else { + stack.push(value); + } + + return replacer == null ? value instanceof Error ? stringifyError(value) : value : replacer.call(this, key, value); + }; + } +}); +var stringify_2 = stringify_1.getSerialize; + +function RavenConfigError(message) { + this.name = 'RavenConfigError'; + this.message = message; +} + +RavenConfigError.prototype = new Error(); +RavenConfigError.prototype.constructor = RavenConfigError; +var configError = RavenConfigError; + +var wrapMethod = function wrapMethod(console, level, callback) { + var originalConsoleLevel = console[level]; + var originalConsole = console; + + if (!(level in console)) { + return; + } + + var sentryLevel = level === 'warn' ? 'warning' : level; + + console[level] = function () { + var args = [].slice.call(arguments); + var msg = utils.safeJoin(args, ' '); + var data = { + level: sentryLevel, + logger: 'console', + extra: { + arguments: args + } + }; + + if (level === 'assert') { + if (args[0] === false) { + // Default browsers message + msg = 'Assertion failed: ' + (utils.safeJoin(args.slice(1), ' ') || 'console.assert'); + data.extra.arguments = args.slice(1); + callback && callback(msg, data); + } + } else { + callback && callback(msg, data); + } // this fails for some browsers. :( + + + if (originalConsoleLevel) { + // IE9 doesn't allow calling apply on console functions directly + // See: https://stackoverflow.com/questions/5472938/does-ie9-support-console-log-and-is-it-a-real-function#answer-5473193 + Function.prototype.apply.call(originalConsoleLevel, originalConsole, args); + } + }; +}; + +var console$1 = { + wrapMethod: wrapMethod +}; + +/*global XDomainRequest:false */ + +var isError = utils.isError; +var isObject = utils.isObject; +var isErrorEvent = utils.isErrorEvent; +var isUndefined = utils.isUndefined; +var isFunction = utils.isFunction; +var isString = utils.isString; +var isArray = utils.isArray; +var isEmptyObject = utils.isEmptyObject; +var each = utils.each; +var objectMerge = utils.objectMerge; +var truncate = utils.truncate; +var objectFrozen = utils.objectFrozen; +var hasKey = utils.hasKey; +var joinRegExp = utils.joinRegExp; +var urlencode = utils.urlencode; +var uuid4 = utils.uuid4; +var htmlTreeAsString = utils.htmlTreeAsString; +var isSameException = utils.isSameException; +var isSameStacktrace = utils.isSameStacktrace; +var parseUrl = utils.parseUrl; +var fill = utils.fill; +var supportsFetch = utils.supportsFetch; +var wrapConsoleMethod = console$1.wrapMethod; +var dsnKeys = 'source protocol user pass host port path'.split(' '); +var dsnPattern = /^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/; + +function now() { + return +new Date(); +} // This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) + + +var _window$1 = typeof window !== 'undefined' ? window : typeof commonjsGlobal !== 'undefined' ? commonjsGlobal : typeof self !== 'undefined' ? self : {}; + +var _document = _window$1.document; +var _navigator = _window$1.navigator; + +function keepOriginalCallback(original, callback) { + return isFunction(callback) ? function (data) { + return callback(data, original); + } : callback; +} // First, check for JSON support +// If there is no JSON, we no-op the core features of Raven +// since JSON is required to encode the payload + + +function Raven$1() { + this._hasJSON = !!(_typeof(JSON) === 'object' && JSON.stringify); // Raven can run in contexts where there's no document (react-native) + + this._hasDocument = !isUndefined(_document); + this._hasNavigator = !isUndefined(_navigator); + this._lastCapturedException = null; + this._lastData = null; + this._lastEventId = null; + this._globalServer = null; + this._globalKey = null; + this._globalProject = null; + this._globalContext = {}; + this._globalOptions = { + // SENTRY_RELEASE can be injected by https://github.com/getsentry/sentry-webpack-plugin + release: _window$1.SENTRY_RELEASE && _window$1.SENTRY_RELEASE.id, + logger: 'javascript', + ignoreErrors: [], + ignoreUrls: [], + whitelistUrls: [], + includePaths: [], + headers: null, + collectWindowErrors: true, + maxMessageLength: 0, + // By default, truncates URL values to 250 chars + maxUrlLength: 250, + stackTraceLimit: 50, + autoBreadcrumbs: true, + instrument: true, + sampleRate: 1 + }; + this._fetchDefaults = { + method: 'POST', + keepalive: true, + referrerPolicy: 'origin' + }; + this._ignoreOnError = 0; + this._isRavenInstalled = false; + this._originalErrorStackTraceLimit = Error.stackTraceLimit; // capture references to window.console *and* all its methods first + // before the console plugin has a chance to monkey patch + + this._originalConsole = _window$1.console || {}; + this._originalConsoleMethods = {}; + this._plugins = []; + this._startTime = now(); + this._wrappedBuiltIns = []; + this._breadcrumbs = []; + this._lastCapturedEvent = null; + this._keypressTimeout; + this._location = _window$1.location; + this._lastHref = this._location && this._location.href; + + this._resetBackoff(); // eslint-disable-next-line guard-for-in + + + for (var method in this._originalConsole) { + this._originalConsoleMethods[method] = this._originalConsole[method]; + } +} +/* + * The core Raven singleton + * + * @this {Raven} + */ + + +Raven$1.prototype = { + // Hardcode version string so that raven source can be loaded directly via + // webpack (using a build step causes webpack #1617). Grunt verifies that + // this value matches package.json during build. + // See: https://github.com/getsentry/raven-js/issues/465 + VERSION: '3.22.2', + debug: false, + TraceKit: tracekit, + // alias to TraceKit + + /* + * Configure Raven with a DSN and extra options + * + * @param {string} dsn The public Sentry DSN + * @param {object} options Set of global options [optional] + * @return {Raven} + */ + config: function config(dsn, options) { + var self = this; + + if (self._globalServer) { + this._logDebug('error', 'Error: Raven has already been configured'); + + return self; + } + + if (!dsn) return self; + var globalOptions = self._globalOptions; // merge in options + + if (options) { + each(options, function (key, value) { + // tags and extra are special and need to be put into context + if (key === 'tags' || key === 'extra' || key === 'user') { + self._globalContext[key] = value; + } else { + globalOptions[key] = value; + } + }); + } + + self.setDSN(dsn); // "Script error." is hard coded into browsers for errors that it can't read. + // this is the result of a script being pulled in from an external domain and CORS. + + globalOptions.ignoreErrors.push(/^Script error\.?$/); + globalOptions.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/); // join regexp rules into one big rule + + globalOptions.ignoreErrors = joinRegExp(globalOptions.ignoreErrors); + globalOptions.ignoreUrls = globalOptions.ignoreUrls.length ? joinRegExp(globalOptions.ignoreUrls) : false; + globalOptions.whitelistUrls = globalOptions.whitelistUrls.length ? joinRegExp(globalOptions.whitelistUrls) : false; + globalOptions.includePaths = joinRegExp(globalOptions.includePaths); + globalOptions.maxBreadcrumbs = Math.max(0, Math.min(globalOptions.maxBreadcrumbs || 100, 100)); // default and hard limit is 100 + + var autoBreadcrumbDefaults = { + xhr: true, + console: true, + dom: true, + location: true, + sentry: true + }; + var autoBreadcrumbs = globalOptions.autoBreadcrumbs; + + if ({}.toString.call(autoBreadcrumbs) === '[object Object]') { + autoBreadcrumbs = objectMerge(autoBreadcrumbDefaults, autoBreadcrumbs); + } else if (autoBreadcrumbs !== false) { + autoBreadcrumbs = autoBreadcrumbDefaults; + } + + globalOptions.autoBreadcrumbs = autoBreadcrumbs; + var instrumentDefaults = { + tryCatch: true + }; + var instrument = globalOptions.instrument; + + if ({}.toString.call(instrument) === '[object Object]') { + instrument = objectMerge(instrumentDefaults, instrument); + } else if (instrument !== false) { + instrument = instrumentDefaults; + } + + globalOptions.instrument = instrument; + tracekit.collectWindowErrors = !!globalOptions.collectWindowErrors; // return for chaining + + return self; + }, + + /* + * Installs a global window.onerror error handler + * to capture and report uncaught exceptions. + * At this point, install() is required to be called due + * to the way TraceKit is set up. + * + * @return {Raven} + */ + install: function install() { + var self = this; + + if (self.isSetup() && !self._isRavenInstalled) { + tracekit.report.subscribe(function () { + self._handleOnErrorStackInfo.apply(self, arguments); + }); + + self._patchFunctionToString(); + + if (self._globalOptions.instrument && self._globalOptions.instrument.tryCatch) { + self._instrumentTryCatch(); + } + + if (self._globalOptions.autoBreadcrumbs) self._instrumentBreadcrumbs(); // Install all of the plugins + + self._drainPlugins(); + + self._isRavenInstalled = true; + } + + Error.stackTraceLimit = self._globalOptions.stackTraceLimit; + return this; + }, + + /* + * Set the DSN (can be called multiple time unlike config) + * + * @param {string} dsn The public Sentry DSN + */ + setDSN: function setDSN(dsn) { + var self = this, + uri = self._parseDSN(dsn), + lastSlash = uri.path.lastIndexOf('/'), + path = uri.path.substr(1, lastSlash); + + self._dsn = dsn; + self._globalKey = uri.user; + self._globalSecret = uri.pass && uri.pass.substr(1); + self._globalProject = uri.path.substr(lastSlash + 1); + self._globalServer = self._getGlobalServer(uri); + self._globalEndpoint = self._globalServer + '/' + path + 'api/' + self._globalProject + '/store/'; // Reset backoff state since we may be pointing at a + // new project/server + + this._resetBackoff(); + }, + + /* + * Wrap code within a context so Raven can capture errors + * reliably across domains that is executed immediately. + * + * @param {object} options A specific set of options for this context [optional] + * @param {function} func The callback to be immediately executed within the context + * @param {array} args An array of arguments to be called with the callback [optional] + */ + context: function context(options, func, args) { + if (isFunction(options)) { + args = func || []; + func = options; + options = undefined; + } + + return this.wrap(options, func).apply(this, args); + }, + + /* + * Wrap code within a context and returns back a new function to be executed + * + * @param {object} options A specific set of options for this context [optional] + * @param {function} func The function to be wrapped in a new context + * @param {function} func A function to call before the try/catch wrapper [optional, private] + * @return {function} The newly wrapped functions with a context + */ + wrap: function wrap(options, func, _before) { + var self = this; // 1 argument has been passed, and it's not a function + // so just return it + + if (isUndefined(func) && !isFunction(options)) { + return options; + } // options is optional + + + if (isFunction(options)) { + func = options; + options = undefined; + } // At this point, we've passed along 2 arguments, and the second one + // is not a function either, so we'll just return the second argument. + + + if (!isFunction(func)) { + return func; + } // We don't wanna wrap it twice! + + + try { + if (func.__raven__) { + return func; + } // If this has already been wrapped in the past, return that + + + if (func.__raven_wrapper__) { + return func.__raven_wrapper__; + } + } catch (e) { + // Just accessing custom props in some Selenium environments + // can cause a "Permission denied" exception (see raven-js#495). + // Bail on wrapping and return the function as-is (defers to window.onerror). + return func; + } + + function wrapped() { + var args = [], + i = arguments.length, + deep = !options || options && options.deep !== false; + + if (_before && isFunction(_before)) { + _before.apply(this, arguments); + } // Recursively wrap all of a function's arguments that are + // functions themselves. + + + while (i--) { + args[i] = deep ? self.wrap(options, arguments[i]) : arguments[i]; + } + + try { + // Attempt to invoke user-land function + // NOTE: If you are a Sentry user, and you are seeing this stack frame, it + // means Raven caught an error invoking your application code. This is + // expected behavior and NOT indicative of a bug with Raven.js. + return func.apply(this, args); + } catch (e) { + self._ignoreNextOnError(); + + self.captureException(e, options); + throw e; + } + } // copy over properties of the old function + + + for (var property in func) { + if (hasKey(func, property)) { + wrapped[property] = func[property]; + } + } + + wrapped.prototype = func.prototype; + func.__raven_wrapper__ = wrapped; // Signal that this function has been wrapped/filled already + // for both debugging and to prevent it to being wrapped/filled twice + + wrapped.__raven__ = true; + wrapped.__orig__ = func; + return wrapped; + }, + + /* + * Uninstalls the global error handler. + * + * @return {Raven} + */ + uninstall: function uninstall() { + tracekit.report.uninstall(); + + this._unpatchFunctionToString(); + + this._restoreBuiltIns(); + + this._restoreConsole(); + + Error.stackTraceLimit = this._originalErrorStackTraceLimit; + this._isRavenInstalled = false; + return this; + }, + + /* + * Manually capture an exception and send it over to Sentry + * + * @param {error} ex An exception to be logged + * @param {object} options A specific set of options for this error [optional] + * @return {Raven} + */ + captureException: function captureException(ex, options) { + options = objectMerge({ + trimHeadFrames: 0 + }, options ? options : {}); // Cases for sending ex as a message, rather than an exception + + var isNotError = !isError(ex); + var isNotErrorEvent = !isErrorEvent(ex); + var isErrorEventWithoutError = isErrorEvent(ex) && !ex.error; + + if (isNotError && isNotErrorEvent || isErrorEventWithoutError) { + return this.captureMessage(ex, objectMerge(options, { + stacktrace: true, + // if we fall back to captureMessage, default to attempting a new trace + trimHeadFrames: options.trimHeadFrames + 1 + })); + } // Get actual Error from ErrorEvent + + + if (isErrorEvent(ex)) ex = ex.error; // Store the raw exception object for potential debugging and introspection + + this._lastCapturedException = ex; // TraceKit.report will re-raise any exception passed to it, + // which means you have to wrap it in try/catch. Instead, we + // can wrap it here and only re-raise if TraceKit.report + // raises an exception different from the one we asked to + // report on. + + try { + var stack = tracekit.computeStackTrace(ex); + + this._handleStackInfo(stack, options); + } catch (ex1) { + if (ex !== ex1) { + throw ex1; + } + } + + return this; + }, + + /* + * Manually send a message to Sentry + * + * @param {string} msg A plain message to be captured in Sentry + * @param {object} options A specific set of options for this message [optional] + * @return {Raven} + */ + captureMessage: function captureMessage(msg, options) { + // config() automagically converts ignoreErrors from a list to a RegExp so we need to test for an + // early call; we'll error on the side of logging anything called before configuration since it's + // probably something you should see: + if (!!this._globalOptions.ignoreErrors.test && this._globalOptions.ignoreErrors.test(msg)) { + return; + } + + options = options || {}; + var data = objectMerge({ + message: msg + '' // Make sure it's actually a string + + }, options); + var ex; // Generate a "synthetic" stack trace from this point. + // NOTE: If you are a Sentry user, and you are seeing this stack frame, it is NOT indicative + // of a bug with Raven.js. Sentry generates synthetic traces either by configuration, + // or if it catches a thrown object without a "stack" property. + + try { + throw new Error(msg); + } catch (ex1) { + ex = ex1; + } // null exception name so `Error` isn't prefixed to msg + + + ex.name = null; + var stack = tracekit.computeStackTrace(ex); // stack[0] is `throw new Error(msg)` call itself, we are interested in the frame that was just before that, stack[1] + + var initialCall = isArray(stack.stack) && stack.stack[1]; + var fileurl = initialCall && initialCall.url || ''; + + if (!!this._globalOptions.ignoreUrls.test && this._globalOptions.ignoreUrls.test(fileurl)) { + return; + } + + if (!!this._globalOptions.whitelistUrls.test && !this._globalOptions.whitelistUrls.test(fileurl)) { + return; + } + + if (this._globalOptions.stacktrace || options && options.stacktrace) { + options = objectMerge({ + // fingerprint on msg, not stack trace (legacy behavior, could be + // revisited) + fingerprint: msg, + // since we know this is a synthetic trace, the top N-most frames + // MUST be from Raven.js, so mark them as in_app later by setting + // trimHeadFrames + trimHeadFrames: (options.trimHeadFrames || 0) + 1 + }, options); + + var frames = this._prepareFrames(stack, options); + + data.stacktrace = { + // Sentry expects frames oldest to newest + frames: frames.reverse() + }; + } // Fire away! + + + this._send(data); + + return this; + }, + captureBreadcrumb: function captureBreadcrumb(obj) { + var crumb = objectMerge({ + timestamp: now() / 1000 + }, obj); + + if (isFunction(this._globalOptions.breadcrumbCallback)) { + var result = this._globalOptions.breadcrumbCallback(crumb); + + if (isObject(result) && !isEmptyObject(result)) { + crumb = result; + } else if (result === false) { + return this; + } + } + + this._breadcrumbs.push(crumb); + + if (this._breadcrumbs.length > this._globalOptions.maxBreadcrumbs) { + this._breadcrumbs.shift(); + } + + return this; + }, + addPlugin: function addPlugin(plugin + /*arg1, arg2, ... argN*/ + ) { + var pluginArgs = [].slice.call(arguments, 1); + + this._plugins.push([plugin, pluginArgs]); + + if (this._isRavenInstalled) { + this._drainPlugins(); + } + + return this; + }, + + /* + * Set/clear a user to be sent along with the payload. + * + * @param {object} user An object representing user data [optional] + * @return {Raven} + */ + setUserContext: function setUserContext(user) { + // Intentionally do not merge here since that's an unexpected behavior. + this._globalContext.user = user; + return this; + }, + + /* + * Merge extra attributes to be sent along with the payload. + * + * @param {object} extra An object representing extra data [optional] + * @return {Raven} + */ + setExtraContext: function setExtraContext(extra) { + this._mergeContext('extra', extra); + + return this; + }, + + /* + * Merge tags to be sent along with the payload. + * + * @param {object} tags An object representing tags [optional] + * @return {Raven} + */ + setTagsContext: function setTagsContext(tags) { + this._mergeContext('tags', tags); + + return this; + }, + + /* + * Clear all of the context. + * + * @return {Raven} + */ + clearContext: function clearContext() { + this._globalContext = {}; + return this; + }, + + /* + * Get a copy of the current context. This cannot be mutated. + * + * @return {object} copy of context + */ + getContext: function getContext() { + // lol javascript + return JSON.parse(stringify_1(this._globalContext)); + }, + + /* + * Set environment of application + * + * @param {string} environment Typically something like 'production'. + * @return {Raven} + */ + setEnvironment: function setEnvironment(environment) { + this._globalOptions.environment = environment; + return this; + }, + + /* + * Set release version of application + * + * @param {string} release Typically something like a git SHA to identify version + * @return {Raven} + */ + setRelease: function setRelease(release) { + this._globalOptions.release = release; + return this; + }, + + /* + * Set the dataCallback option + * + * @param {function} callback The callback to run which allows the + * data blob to be mutated before sending + * @return {Raven} + */ + setDataCallback: function setDataCallback(callback) { + var original = this._globalOptions.dataCallback; + this._globalOptions.dataCallback = keepOriginalCallback(original, callback); + return this; + }, + + /* + * Set the breadcrumbCallback option + * + * @param {function} callback The callback to run which allows filtering + * or mutating breadcrumbs + * @return {Raven} + */ + setBreadcrumbCallback: function setBreadcrumbCallback(callback) { + var original = this._globalOptions.breadcrumbCallback; + this._globalOptions.breadcrumbCallback = keepOriginalCallback(original, callback); + return this; + }, + + /* + * Set the shouldSendCallback option + * + * @param {function} callback The callback to run which allows + * introspecting the blob before sending + * @return {Raven} + */ + setShouldSendCallback: function setShouldSendCallback(callback) { + var original = this._globalOptions.shouldSendCallback; + this._globalOptions.shouldSendCallback = keepOriginalCallback(original, callback); + return this; + }, + + /** + * Override the default HTTP transport mechanism that transmits data + * to the Sentry server. + * + * @param {function} transport Function invoked instead of the default + * `makeRequest` handler. + * + * @return {Raven} + */ + setTransport: function setTransport(transport) { + this._globalOptions.transport = transport; + return this; + }, + + /* + * Get the latest raw exception that was captured by Raven. + * + * @return {error} + */ + lastException: function lastException() { + return this._lastCapturedException; + }, + + /* + * Get the last event id + * + * @return {string} + */ + lastEventId: function lastEventId() { + return this._lastEventId; + }, + + /* + * Determine if Raven is setup and ready to go. + * + * @return {boolean} + */ + isSetup: function isSetup() { + if (!this._hasJSON) return false; // needs JSON support + + if (!this._globalServer) { + if (!this.ravenNotConfiguredError) { + this.ravenNotConfiguredError = true; + + this._logDebug('error', 'Error: Raven has not been configured.'); + } + + return false; + } + + return true; + }, + afterLoad: function afterLoad() { + // TODO: remove window dependence? + // Attempt to initialize Raven on load + var RavenConfig = _window$1.RavenConfig; + + if (RavenConfig) { + this.config(RavenConfig.dsn, RavenConfig.config).install(); + } + }, + showReportDialog: function showReportDialog(options) { + if (!_document // doesn't work without a document (React native) + ) return; + options = options || {}; + var lastEventId = options.eventId || this.lastEventId(); + + if (!lastEventId) { + throw new configError('Missing eventId'); + } + + var dsn = options.dsn || this._dsn; + + if (!dsn) { + throw new configError('Missing DSN'); + } + + var encode = encodeURIComponent; + var qs = ''; + qs += '?eventId=' + encode(lastEventId); + qs += '&dsn=' + encode(dsn); + var user = options.user || this._globalContext.user; + + if (user) { + if (user.name) qs += '&name=' + encode(user.name); + if (user.email) qs += '&email=' + encode(user.email); + } + + var globalServer = this._getGlobalServer(this._parseDSN(dsn)); + + var script = _document.createElement('script'); + + script.async = true; + script.src = globalServer + '/api/embed/error-page/' + qs; + + (_document.head || _document.body).appendChild(script); + }, + + /**** Private functions ****/ + _ignoreNextOnError: function _ignoreNextOnError() { + var self = this; + this._ignoreOnError += 1; + setTimeout(function () { + // onerror should trigger before setTimeout + self._ignoreOnError -= 1; + }); + }, + _triggerEvent: function _triggerEvent(eventType, options) { + // NOTE: `event` is a native browser thing, so let's avoid conflicting wiht it + var evt, key; + if (!this._hasDocument) return; + options = options || {}; + eventType = 'raven' + eventType.substr(0, 1).toUpperCase() + eventType.substr(1); + + if (_document.createEvent) { + evt = _document.createEvent('HTMLEvents'); + evt.initEvent(eventType, true, true); + } else { + evt = _document.createEventObject(); + evt.eventType = eventType; + } + + for (key in options) { + if (hasKey(options, key)) { + evt[key] = options[key]; + } + } + + if (_document.createEvent) { + // IE9 if standards + _document.dispatchEvent(evt); + } else { + // IE8 regardless of Quirks or Standards + // IE9 if quirks + try { + _document.fireEvent('on' + evt.eventType.toLowerCase(), evt); + } catch (e) {// Do nothing + } + } + }, + + /** + * Wraps addEventListener to capture UI breadcrumbs + * @param evtName the event name (e.g. "click") + * @returns {Function} + * @private + */ + _breadcrumbEventHandler: function _breadcrumbEventHandler(evtName) { + var self = this; + return function (evt) { + // reset keypress timeout; e.g. triggering a 'click' after + // a 'keypress' will reset the keypress debounce so that a new + // set of keypresses can be recorded + self._keypressTimeout = null; // It's possible this handler might trigger multiple times for the same + // event (e.g. event propagation through node ancestors). Ignore if we've + // already captured the event. + + if (self._lastCapturedEvent === evt) return; + self._lastCapturedEvent = evt; // try/catch both: + // - accessing evt.target (see getsentry/raven-js#838, #768) + // - `htmlTreeAsString` because it's complex, and just accessing the DOM incorrectly + // can throw an exception in some circumstances. + + var target; + + try { + target = htmlTreeAsString(evt.target); + } catch (e) { + target = ''; + } + + self.captureBreadcrumb({ + category: 'ui.' + evtName, + // e.g. ui.click, ui.input + message: target + }); + }; + }, + + /** + * Wraps addEventListener to capture keypress UI events + * @returns {Function} + * @private + */ + _keypressEventHandler: function _keypressEventHandler() { + var self = this, + debounceDuration = 1000; // milliseconds + // TODO: if somehow user switches keypress target before + // debounce timeout is triggered, we will only capture + // a single breadcrumb from the FIRST target (acceptable?) + + return function (evt) { + var target; + + try { + target = evt.target; + } catch (e) { + // just accessing event properties can throw an exception in some rare circumstances + // see: https://github.com/getsentry/raven-js/issues/838 + return; + } + + var tagName = target && target.tagName; // only consider keypress events on actual input elements + // this will disregard keypresses targeting body (e.g. tabbing + // through elements, hotkeys, etc) + + if (!tagName || tagName !== 'INPUT' && tagName !== 'TEXTAREA' && !target.isContentEditable) return; // record first keypress in a series, but ignore subsequent + // keypresses until debounce clears + + var timeout = self._keypressTimeout; + + if (!timeout) { + self._breadcrumbEventHandler('input')(evt); + } + + clearTimeout(timeout); + self._keypressTimeout = setTimeout(function () { + self._keypressTimeout = null; + }, debounceDuration); + }; + }, + + /** + * Captures a breadcrumb of type "navigation", normalizing input URLs + * @param to the originating URL + * @param from the target URL + * @private + */ + _captureUrlChange: function _captureUrlChange(from, to) { + var parsedLoc = parseUrl(this._location.href); + var parsedTo = parseUrl(to); + var parsedFrom = parseUrl(from); // because onpopstate only tells you the "new" (to) value of location.href, and + // not the previous (from) value, we need to track the value of the current URL + // state ourselves + + this._lastHref = to; // Use only the path component of the URL if the URL matches the current + // document (almost all the time when using pushState) + + if (parsedLoc.protocol === parsedTo.protocol && parsedLoc.host === parsedTo.host) to = parsedTo.relative; + if (parsedLoc.protocol === parsedFrom.protocol && parsedLoc.host === parsedFrom.host) from = parsedFrom.relative; + this.captureBreadcrumb({ + category: 'navigation', + data: { + to: to, + from: from + } + }); + }, + _patchFunctionToString: function _patchFunctionToString() { + var self = this; + self._originalFunctionToString = Function.prototype.toString; // eslint-disable-next-line no-extend-native + + Function.prototype.toString = function () { + if (typeof this === 'function' && this.__raven__) { + return self._originalFunctionToString.apply(this.__orig__, arguments); + } + + return self._originalFunctionToString.apply(this, arguments); + }; + }, + _unpatchFunctionToString: function _unpatchFunctionToString() { + if (this._originalFunctionToString) { + // eslint-disable-next-line no-extend-native + Function.prototype.toString = this._originalFunctionToString; + } + }, + + /** + * Wrap timer functions and event targets to catch errors and provide + * better metadata. + */ + _instrumentTryCatch: function _instrumentTryCatch() { + var self = this; + var wrappedBuiltIns = self._wrappedBuiltIns; + + function wrapTimeFn(orig) { + return function (fn, t) { + // preserve arity + // Make a copy of the arguments to prevent deoptimization + // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments + var args = new Array(arguments.length); + + for (var i = 0; i < args.length; ++i) { + args[i] = arguments[i]; + } + + var originalCallback = args[0]; + + if (isFunction(originalCallback)) { + args[0] = self.wrap(originalCallback); + } // IE < 9 doesn't support .call/.apply on setInterval/setTimeout, but it + // also supports only two arguments and doesn't care what this is, so we + // can just call the original function directly. + + + if (orig.apply) { + return orig.apply(this, args); + } else { + return orig(args[0], args[1]); + } + }; + } + + var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; + + function wrapEventTarget(global) { + var proto = _window$1[global] && _window$1[global].prototype; + + if (proto && proto.hasOwnProperty && proto.hasOwnProperty('addEventListener')) { + fill(proto, 'addEventListener', function (orig) { + return function (evtName, fn, capture, secure) { + // preserve arity + try { + if (fn && fn.handleEvent) { + fn.handleEvent = self.wrap(fn.handleEvent); + } + } catch (err) {} // can sometimes get 'Permission denied to access property "handle Event' + // More breadcrumb DOM capture ... done here and not in `_instrumentBreadcrumbs` + // so that we don't have more than one wrapper function + + + var before, clickHandler, keypressHandler; + + if (autoBreadcrumbs && autoBreadcrumbs.dom && (global === 'EventTarget' || global === 'Node')) { + // NOTE: generating multiple handlers per addEventListener invocation, should + // revisit and verify we can just use one (almost certainly) + clickHandler = self._breadcrumbEventHandler('click'); + keypressHandler = self._keypressEventHandler(); + + before = function before(evt) { + // need to intercept every DOM event in `before` argument, in case that + // same wrapped method is re-used for different events (e.g. mousemove THEN click) + // see #724 + if (!evt) return; + var eventType; + + try { + eventType = evt.type; + } catch (e) { + // just accessing event properties can throw an exception in some rare circumstances + // see: https://github.com/getsentry/raven-js/issues/838 + return; + } + + if (eventType === 'click') return clickHandler(evt);else if (eventType === 'keypress') return keypressHandler(evt); + }; + } + + return orig.call(this, evtName, self.wrap(fn, undefined, before), capture, secure); + }; + }, wrappedBuiltIns); + fill(proto, 'removeEventListener', function (orig) { + return function (evt, fn, capture, secure) { + try { + fn = fn && (fn.__raven_wrapper__ ? fn.__raven_wrapper__ : fn); + } catch (e) {// ignore, accessing __raven_wrapper__ will throw in some Selenium environments + } + + return orig.call(this, evt, fn, capture, secure); + }; + }, wrappedBuiltIns); + } + } + + fill(_window$1, 'setTimeout', wrapTimeFn, wrappedBuiltIns); + fill(_window$1, 'setInterval', wrapTimeFn, wrappedBuiltIns); + + if (_window$1.requestAnimationFrame) { + fill(_window$1, 'requestAnimationFrame', function (orig) { + return function (cb) { + return orig(self.wrap(cb)); + }; + }, wrappedBuiltIns); + } // event targets borrowed from bugsnag-js: + // https://github.com/bugsnag/bugsnag-js/blob/master/src/bugsnag.js#L666 + + + var eventTargets = ['EventTarget', 'Window', 'Node', 'ApplicationCache', 'AudioTrackList', 'ChannelMergerNode', 'CryptoOperation', 'EventSource', 'FileReader', 'HTMLUnknownElement', 'IDBDatabase', 'IDBRequest', 'IDBTransaction', 'KeyOperation', 'MediaController', 'MessagePort', 'ModalWindow', 'Notification', 'SVGElementInstance', 'Screen', 'TextTrack', 'TextTrackCue', 'TextTrackList', 'WebSocket', 'WebSocketWorker', 'Worker', 'XMLHttpRequest', 'XMLHttpRequestEventTarget', 'XMLHttpRequestUpload']; + + for (var i = 0; i < eventTargets.length; i++) { + wrapEventTarget(eventTargets[i]); + } + }, + + /** + * Instrument browser built-ins w/ breadcrumb capturing + * - XMLHttpRequests + * - DOM interactions (click/typing) + * - window.location changes + * - console + * + * Can be disabled or individually configured via the `autoBreadcrumbs` config option + */ + _instrumentBreadcrumbs: function _instrumentBreadcrumbs() { + var self = this; + var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; + var wrappedBuiltIns = self._wrappedBuiltIns; + + function wrapProp(prop, xhr) { + if (prop in xhr && isFunction(xhr[prop])) { + fill(xhr, prop, function (orig) { + return self.wrap(orig); + }); // intentionally don't track filled methods on XHR instances + } + } + + if (autoBreadcrumbs.xhr && 'XMLHttpRequest' in _window$1) { + var xhrproto = XMLHttpRequest.prototype; + fill(xhrproto, 'open', function (origOpen) { + return function (method, url) { + // preserve arity + // if Sentry key appears in URL, don't capture + if (isString(url) && url.indexOf(self._globalKey) === -1) { + this.__raven_xhr = { + method: method, + url: url, + status_code: null + }; + } + + return origOpen.apply(this, arguments); + }; + }, wrappedBuiltIns); + fill(xhrproto, 'send', function (origSend) { + return function () { + // preserve arity + var xhr = this; + + function onreadystatechangeHandler() { + if (xhr.__raven_xhr && xhr.readyState === 4) { + try { + // touching statusCode in some platforms throws + // an exception + xhr.__raven_xhr.status_code = xhr.status; + } catch (e) { + /* do nothing */ + } + + self.captureBreadcrumb({ + type: 'http', + category: 'xhr', + data: xhr.__raven_xhr + }); + } + } + + var props = ['onload', 'onerror', 'onprogress']; + + for (var j = 0; j < props.length; j++) { + wrapProp(props[j], xhr); + } + + if ('onreadystatechange' in xhr && isFunction(xhr.onreadystatechange)) { + fill(xhr, 'onreadystatechange', function (orig) { + return self.wrap(orig, undefined, onreadystatechangeHandler); + } + /* intentionally don't track this instrumentation */ + ); + } else { + // if onreadystatechange wasn't actually set by the page on this xhr, we + // are free to set our own and capture the breadcrumb + xhr.onreadystatechange = onreadystatechangeHandler; + } + + return origSend.apply(this, arguments); + }; + }, wrappedBuiltIns); + } + + if (autoBreadcrumbs.xhr && supportsFetch()) { + fill(_window$1, 'fetch', function (origFetch) { + return function () { + // preserve arity + // Make a copy of the arguments to prevent deoptimization + // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments + var args = new Array(arguments.length); + + for (var i = 0; i < args.length; ++i) { + args[i] = arguments[i]; + } + + var fetchInput = args[0]; + var method = 'GET'; + var url; + + if (typeof fetchInput === 'string') { + url = fetchInput; + } else if ('Request' in _window$1 && fetchInput instanceof _window$1.Request) { + url = fetchInput.url; + + if (fetchInput.method) { + method = fetchInput.method; + } + } else { + url = '' + fetchInput; + } // if Sentry key appears in URL, don't capture, as it's our own request + + + if (url.indexOf(self._globalKey) !== -1) { + return origFetch.apply(this, args); + } + + if (args[1] && args[1].method) { + method = args[1].method; + } + + var fetchData = { + method: method, + url: url, + status_code: null + }; + return origFetch.apply(this, args).then(function (response) { + fetchData.status_code = response.status; + self.captureBreadcrumb({ + type: 'http', + category: 'fetch', + data: fetchData + }); + return response; + }); + }; + }, wrappedBuiltIns); + } // Capture breadcrumbs from any click that is unhandled / bubbled up all the way + // to the document. Do this before we instrument addEventListener. + + + if (autoBreadcrumbs.dom && this._hasDocument) { + if (_document.addEventListener) { + _document.addEventListener('click', self._breadcrumbEventHandler('click'), false); + + _document.addEventListener('keypress', self._keypressEventHandler(), false); + } else { + // IE8 Compatibility + _document.attachEvent('onclick', self._breadcrumbEventHandler('click')); + + _document.attachEvent('onkeypress', self._keypressEventHandler()); + } + } // record navigation (URL) changes + // NOTE: in Chrome App environment, touching history.pushState, *even inside + // a try/catch block*, will cause Chrome to output an error to console.error + // borrowed from: https://github.com/angular/angular.js/pull/13945/files + + + var chrome = _window$1.chrome; + var isChromePackagedApp = chrome && chrome.app && chrome.app.runtime; + var hasPushAndReplaceState = !isChromePackagedApp && _window$1.history && history.pushState && history.replaceState; + + if (autoBreadcrumbs.location && hasPushAndReplaceState) { + // TODO: remove onpopstate handler on uninstall() + var oldOnPopState = _window$1.onpopstate; + + _window$1.onpopstate = function () { + var currentHref = self._location.href; + + self._captureUrlChange(self._lastHref, currentHref); + + if (oldOnPopState) { + return oldOnPopState.apply(this, arguments); + } + }; + + var historyReplacementFunction = function historyReplacementFunction(origHistFunction) { + // note history.pushState.length is 0; intentionally not declaring + // params to preserve 0 arity + return function () + /* state, title, url */ + { + var url = arguments.length > 2 ? arguments[2] : undefined; // url argument is optional + + if (url) { + // coerce to string (this is what pushState does) + self._captureUrlChange(self._lastHref, url + ''); + } + + return origHistFunction.apply(this, arguments); + }; + }; + + fill(history, 'pushState', historyReplacementFunction, wrappedBuiltIns); + fill(history, 'replaceState', historyReplacementFunction, wrappedBuiltIns); + } + + if (autoBreadcrumbs.console && 'console' in _window$1 && console.log) { + // console + var consoleMethodCallback = function consoleMethodCallback(msg, data) { + self.captureBreadcrumb({ + message: msg, + level: data.level, + category: 'console' + }); + }; + + each(['debug', 'info', 'warn', 'error', 'log'], function (_, level) { + wrapConsoleMethod(console, level, consoleMethodCallback); + }); + } + }, + _restoreBuiltIns: function _restoreBuiltIns() { + // restore any wrapped builtins + var builtin; + + while (this._wrappedBuiltIns.length) { + builtin = this._wrappedBuiltIns.shift(); + var obj = builtin[0], + name = builtin[1], + orig = builtin[2]; + obj[name] = orig; + } + }, + _restoreConsole: function _restoreConsole() { + // eslint-disable-next-line guard-for-in + for (var method in this._originalConsoleMethods) { + this._originalConsole[method] = this._originalConsoleMethods[method]; + } + }, + _drainPlugins: function _drainPlugins() { + var self = this; // FIX ME TODO + + each(this._plugins, function (_, plugin) { + var installer = plugin[0]; + var args = plugin[1]; + installer.apply(self, [self].concat(args)); + }); + }, + _parseDSN: function _parseDSN(str) { + var m = dsnPattern.exec(str), + dsn = {}, + i = 7; + + try { + while (i--) { + dsn[dsnKeys[i]] = m[i] || ''; + } + } catch (e) { + throw new configError('Invalid DSN: ' + str); + } + + if (dsn.pass && !this._globalOptions.allowSecretKey) { + throw new configError('Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key'); + } + + return dsn; + }, + _getGlobalServer: function _getGlobalServer(uri) { + // assemble the endpoint from the uri pieces + var globalServer = '//' + uri.host + (uri.port ? ':' + uri.port : ''); + + if (uri.protocol) { + globalServer = uri.protocol + ':' + globalServer; + } + + return globalServer; + }, + _handleOnErrorStackInfo: function _handleOnErrorStackInfo() { + // if we are intentionally ignoring errors via onerror, bail out + if (!this._ignoreOnError) { + this._handleStackInfo.apply(this, arguments); + } + }, + _handleStackInfo: function _handleStackInfo(stackInfo, options) { + var frames = this._prepareFrames(stackInfo, options); + + this._triggerEvent('handle', { + stackInfo: stackInfo, + options: options + }); + + this._processException(stackInfo.name, stackInfo.message, stackInfo.url, stackInfo.lineno, frames, options); + }, + _prepareFrames: function _prepareFrames(stackInfo, options) { + var self = this; + var frames = []; + + if (stackInfo.stack && stackInfo.stack.length) { + each(stackInfo.stack, function (i, stack) { + var frame = self._normalizeFrame(stack, stackInfo.url); + + if (frame) { + frames.push(frame); + } + }); // e.g. frames captured via captureMessage throw + + if (options && options.trimHeadFrames) { + for (var j = 0; j < options.trimHeadFrames && j < frames.length; j++) { + frames[j].in_app = false; + } + } + } + + frames = frames.slice(0, this._globalOptions.stackTraceLimit); + return frames; + }, + _normalizeFrame: function _normalizeFrame(frame, stackInfoUrl) { + // normalize the frames data + var normalized = { + filename: frame.url, + lineno: frame.line, + colno: frame.column, + function: frame.func || '?' + }; // Case when we don't have any information about the error + // E.g. throwing a string or raw object, instead of an `Error` in Firefox + // Generating synthetic error doesn't add any value here + // + // We should probably somehow let a user know that they should fix their code + + if (!frame.url) { + normalized.filename = stackInfoUrl; // fallback to whole stacks url from onerror handler + } + + normalized.in_app = !( // determine if an exception came from outside of our app + // first we check the global includePaths list. + !!this._globalOptions.includePaths.test && !this._globalOptions.includePaths.test(normalized.filename) || // Now we check for fun, if the function name is Raven or TraceKit + /(Raven|TraceKit)\./.test(normalized['function']) || // finally, we do a last ditch effort and check for raven.min.js + /raven\.(min\.)?js$/.test(normalized.filename)); + return normalized; + }, + _processException: function _processException(type, message, fileurl, lineno, frames, options) { + var prefixedMessage = (type ? type + ': ' : '') + (message || ''); + + if (!!this._globalOptions.ignoreErrors.test && (this._globalOptions.ignoreErrors.test(message) || this._globalOptions.ignoreErrors.test(prefixedMessage))) { + return; + } + + var stacktrace; + + if (frames && frames.length) { + fileurl = frames[0].filename || fileurl; // Sentry expects frames oldest to newest + // and JS sends them as newest to oldest + + frames.reverse(); + stacktrace = { + frames: frames + }; + } else if (fileurl) { + stacktrace = { + frames: [{ + filename: fileurl, + lineno: lineno, + in_app: true + }] + }; + } + + if (!!this._globalOptions.ignoreUrls.test && this._globalOptions.ignoreUrls.test(fileurl)) { + return; + } + + if (!!this._globalOptions.whitelistUrls.test && !this._globalOptions.whitelistUrls.test(fileurl)) { + return; + } + + var data = objectMerge({ + // sentry.interfaces.Exception + exception: { + values: [{ + type: type, + value: message, + stacktrace: stacktrace + }] + }, + culprit: fileurl + }, options); // Fire away! + + this._send(data); + }, + _trimPacket: function _trimPacket(data) { + // For now, we only want to truncate the two different messages + // but this could/should be expanded to just trim everything + var max = this._globalOptions.maxMessageLength; + + if (data.message) { + data.message = truncate(data.message, max); + } + + if (data.exception) { + var exception = data.exception.values[0]; + exception.value = truncate(exception.value, max); + } + + var request = data.request; + + if (request) { + if (request.url) { + request.url = truncate(request.url, this._globalOptions.maxUrlLength); + } + + if (request.Referer) { + request.Referer = truncate(request.Referer, this._globalOptions.maxUrlLength); + } + } + + if (data.breadcrumbs && data.breadcrumbs.values) this._trimBreadcrumbs(data.breadcrumbs); + return data; + }, + + /** + * Truncate breadcrumb values (right now just URLs) + */ + _trimBreadcrumbs: function _trimBreadcrumbs(breadcrumbs) { + // known breadcrumb properties with urls + // TODO: also consider arbitrary prop values that start with (https?)?:// + var urlProps = ['to', 'from', 'url'], + urlProp, + crumb, + data; + + for (var i = 0; i < breadcrumbs.values.length; ++i) { + crumb = breadcrumbs.values[i]; + if (!crumb.hasOwnProperty('data') || !isObject(crumb.data) || objectFrozen(crumb.data)) continue; + data = objectMerge({}, crumb.data); + + for (var j = 0; j < urlProps.length; ++j) { + urlProp = urlProps[j]; + + if (data.hasOwnProperty(urlProp) && data[urlProp]) { + data[urlProp] = truncate(data[urlProp], this._globalOptions.maxUrlLength); + } + } + + breadcrumbs.values[i].data = data; + } + }, + _getHttpData: function _getHttpData() { + if (!this._hasNavigator && !this._hasDocument) return; + var httpData = {}; + + if (this._hasNavigator && _navigator.userAgent) { + httpData.headers = { + 'User-Agent': navigator.userAgent + }; + } // Check in `window` instead of `document`, as we may be in ServiceWorker environment + + + if (_window$1.location && _window$1.location.href) { + httpData.url = _window$1.location.href; + } + + if (this._hasDocument && _document.referrer) { + if (!httpData.headers) httpData.headers = {}; + httpData.headers.Referer = _document.referrer; + } + + return httpData; + }, + _resetBackoff: function _resetBackoff() { + this._backoffDuration = 0; + this._backoffStart = null; + }, + _shouldBackoff: function _shouldBackoff() { + return this._backoffDuration && now() - this._backoffStart < this._backoffDuration; + }, + + /** + * Returns true if the in-process data payload matches the signature + * of the previously-sent data + * + * NOTE: This has to be done at this level because TraceKit can generate + * data from window.onerror WITHOUT an exception object (IE8, IE9, + * other old browsers). This can take the form of an "exception" + * data object with a single frame (derived from the onerror args). + */ + _isRepeatData: function _isRepeatData(current) { + var last = this._lastData; + if (!last || current.message !== last.message || // defined for captureMessage + current.culprit !== last.culprit // defined for captureException/onerror + ) return false; // Stacktrace interface (i.e. from captureMessage) + + if (current.stacktrace || last.stacktrace) { + return isSameStacktrace(current.stacktrace, last.stacktrace); + } else if (current.exception || last.exception) { + // Exception interface (i.e. from captureException/onerror) + return isSameException(current.exception, last.exception); + } + + return true; + }, + _setBackoffState: function _setBackoffState(request) { + // If we are already in a backoff state, don't change anything + if (this._shouldBackoff()) { + return; + } + + var status = request.status; // 400 - project_id doesn't exist or some other fatal + // 401 - invalid/revoked dsn + // 429 - too many requests + + if (!(status === 400 || status === 401 || status === 429)) return; + var retry; + + try { + // If Retry-After is not in Access-Control-Expose-Headers, most + // browsers will throw an exception trying to access it + if (supportsFetch()) { + retry = request.headers.get('Retry-After'); + } else { + retry = request.getResponseHeader('Retry-After'); + } // Retry-After is returned in seconds + + + retry = parseInt(retry, 10) * 1000; + } catch (e) { + /* eslint no-empty:0 */ + } + + this._backoffDuration = retry ? // If Sentry server returned a Retry-After value, use it + retry : // Otherwise, double the last backoff duration (starts at 1 sec) + this._backoffDuration * 2 || 1000; + this._backoffStart = now(); + }, + _send: function _send(data) { + var globalOptions = this._globalOptions; + + var baseData = { + project: this._globalProject, + logger: globalOptions.logger, + platform: 'javascript' + }, + httpData = this._getHttpData(); + + if (httpData) { + baseData.request = httpData; + } // HACK: delete `trimHeadFrames` to prevent from appearing in outbound payload + + + if (data.trimHeadFrames) delete data.trimHeadFrames; + data = objectMerge(baseData, data); // Merge in the tags and extra separately since objectMerge doesn't handle a deep merge + + data.tags = objectMerge(objectMerge({}, this._globalContext.tags), data.tags); + data.extra = objectMerge(objectMerge({}, this._globalContext.extra), data.extra); // Send along our own collected metadata with extra + + data.extra['session:duration'] = now() - this._startTime; + + if (this._breadcrumbs && this._breadcrumbs.length > 0) { + // intentionally make shallow copy so that additions + // to breadcrumbs aren't accidentally sent in this request + data.breadcrumbs = { + values: [].slice.call(this._breadcrumbs, 0) + }; + } + + if (this._globalContext.user) { + // sentry.interfaces.User + data.user = this._globalContext.user; + } // Include the environment if it's defined in globalOptions + + + if (globalOptions.environment) data.environment = globalOptions.environment; // Include the release if it's defined in globalOptions + + if (globalOptions.release) data.release = globalOptions.release; // Include server_name if it's defined in globalOptions + + if (globalOptions.serverName) data.server_name = globalOptions.serverName; // Cleanup empty properties before sending them to the server + + Object.keys(data).forEach(function (key) { + if (data[key] == null || data[key] === '' || isEmptyObject(data[key])) { + delete data[key]; + } + }); + + if (isFunction(globalOptions.dataCallback)) { + data = globalOptions.dataCallback(data) || data; + } // Why?????????? + + + if (!data || isEmptyObject(data)) { + return; + } // Check if the request should be filtered or not + + + if (isFunction(globalOptions.shouldSendCallback) && !globalOptions.shouldSendCallback(data)) { + return; + } // Backoff state: Sentry server previously responded w/ an error (e.g. 429 - too many requests), + // so drop requests until "cool-off" period has elapsed. + + + if (this._shouldBackoff()) { + this._logDebug('warn', 'Raven dropped error due to backoff: ', data); + + return; + } + + if (typeof globalOptions.sampleRate === 'number') { + if (Math.random() < globalOptions.sampleRate) { + this._sendProcessedPayload(data); + } + } else { + this._sendProcessedPayload(data); + } + }, + _getUuid: function _getUuid() { + return uuid4(); + }, + _sendProcessedPayload: function _sendProcessedPayload(data, callback) { + var self = this; + var globalOptions = this._globalOptions; + if (!this.isSetup()) return; // Try and clean up the packet before sending by truncating long values + + data = this._trimPacket(data); // ideally duplicate error testing should occur *before* dataCallback/shouldSendCallback, + // but this would require copying an un-truncated copy of the data packet, which can be + // arbitrarily deep (extra_data) -- could be worthwhile? will revisit + + if (!this._globalOptions.allowDuplicates && this._isRepeatData(data)) { + this._logDebug('warn', 'Raven dropped repeat event: ', data); + + return; + } // Send along an event_id if not explicitly passed. + // This event_id can be used to reference the error within Sentry itself. + // Set lastEventId after we know the error should actually be sent + + + this._lastEventId = data.event_id || (data.event_id = this._getUuid()); // Store outbound payload after trim + + this._lastData = data; + + this._logDebug('debug', 'Raven about to send:', data); + + var auth = { + sentry_version: '7', + sentry_client: 'raven-js/' + this.VERSION, + sentry_key: this._globalKey + }; + + if (this._globalSecret) { + auth.sentry_secret = this._globalSecret; + } + + var exception = data.exception && data.exception.values[0]; // only capture 'sentry' breadcrumb is autoBreadcrumbs is truthy + + if (this._globalOptions.autoBreadcrumbs && this._globalOptions.autoBreadcrumbs.sentry) { + this.captureBreadcrumb({ + category: 'sentry', + message: exception ? (exception.type ? exception.type + ': ' : '') + exception.value : data.message, + event_id: data.event_id, + level: data.level || 'error' // presume error unless specified + + }); + } + + var url = this._globalEndpoint; + + (globalOptions.transport || this._makeRequest).call(this, { + url: url, + auth: auth, + data: data, + options: globalOptions, + onSuccess: function success() { + self._resetBackoff(); + + self._triggerEvent('success', { + data: data, + src: url + }); + + callback && callback(); + }, + onError: function failure(error) { + self._logDebug('error', 'Raven transport failed to send: ', error); + + if (error.request) { + self._setBackoffState(error.request); + } + + self._triggerEvent('failure', { + data: data, + src: url + }); + + error = error || new Error('Raven send failed (no additional details provided)'); + callback && callback(error); + } + }); + }, + _makeRequest: function _makeRequest(opts) { + // Auth is intentionally sent as part of query string (NOT as custom HTTP header) to avoid preflight CORS requests + var url = opts.url + '?' + urlencode(opts.auth); + var evaluatedHeaders = null; + var evaluatedFetchParameters = {}; + + if (opts.options.headers) { + evaluatedHeaders = this._evaluateHash(opts.options.headers); + } + + if (opts.options.fetchParameters) { + evaluatedFetchParameters = this._evaluateHash(opts.options.fetchParameters); + } + + if (supportsFetch()) { + evaluatedFetchParameters.body = stringify_1(opts.data); + var defaultFetchOptions = objectMerge({}, this._fetchDefaults); + var fetchOptions = objectMerge(defaultFetchOptions, evaluatedFetchParameters); + + if (evaluatedHeaders) { + fetchOptions.headers = evaluatedHeaders; + } + + return _window$1.fetch(url, fetchOptions).then(function (response) { + if (response.ok) { + opts.onSuccess && opts.onSuccess(); + } else { + var error = new Error('Sentry error code: ' + response.status); // It's called request only to keep compatibility with XHR interface + // and not add more redundant checks in setBackoffState method + + error.request = response; + opts.onError && opts.onError(error); + } + })['catch'](function () { + opts.onError && opts.onError(new Error('Sentry error code: network unavailable')); + }); + } + + var request = _window$1.XMLHttpRequest && new _window$1.XMLHttpRequest(); + if (!request) return; // if browser doesn't support CORS (e.g. IE7), we are out of luck + + var hasCORS = 'withCredentials' in request || typeof XDomainRequest !== 'undefined'; + if (!hasCORS) return; + + if ('withCredentials' in request) { + request.onreadystatechange = function () { + if (request.readyState !== 4) { + return; + } else if (request.status === 200) { + opts.onSuccess && opts.onSuccess(); + } else if (opts.onError) { + var err = new Error('Sentry error code: ' + request.status); + err.request = request; + opts.onError(err); + } + }; + } else { + request = new XDomainRequest(); // xdomainrequest cannot go http -> https (or vice versa), + // so always use protocol relative + + url = url.replace(/^https?:/, ''); // onreadystatechange not supported by XDomainRequest + + if (opts.onSuccess) { + request.onload = opts.onSuccess; + } + + if (opts.onError) { + request.onerror = function () { + var err = new Error('Sentry error code: XDomainRequest'); + err.request = request; + opts.onError(err); + }; + } + } + + request.open('POST', url); + + if (evaluatedHeaders) { + each(evaluatedHeaders, function (key, value) { + request.setRequestHeader(key, value); + }); + } + + request.send(stringify_1(opts.data)); + }, + _evaluateHash: function _evaluateHash(hash) { + var evaluated = {}; + + for (var key in hash) { + if (hash.hasOwnProperty(key)) { + var value = hash[key]; + evaluated[key] = typeof value === 'function' ? value() : value; + } + } + + return evaluated; + }, + _logDebug: function _logDebug(level) { + if (this._originalConsoleMethods[level] && this.debug) { + // In IE<10 console methods do not have their own 'apply' method + Function.prototype.apply.call(this._originalConsoleMethods[level], this._originalConsole, [].slice.call(arguments, 1)); + } + }, + _mergeContext: function _mergeContext(key, context) { + if (isUndefined(context)) { + delete this._globalContext[key]; + } else { + this._globalContext[key] = objectMerge(this._globalContext[key] || {}, context); + } + } +}; // Deprecations + +Raven$1.prototype.setUser = Raven$1.prototype.setUserContext; +Raven$1.prototype.setReleaseContext = Raven$1.prototype.setRelease; +var raven = Raven$1; + +/** + * Enforces a single instance of the Raven client, and the + * main entry point for Raven. If you are a consumer of the + * Raven library, you SHOULD load this file (vs raven.js). + **/ +// This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) + +var _window = typeof window !== 'undefined' ? window : typeof commonjsGlobal !== 'undefined' ? commonjsGlobal : typeof self !== 'undefined' ? self : {}; + +var _Raven = _window.Raven; +var Raven = new raven(); +/* + * Allow multiple versions of Raven to be installed. + * Strip Raven from the global context and returns the instance. + * + * @return {Raven} + */ + +Raven.noConflict = function () { + _window.Raven = _Raven; + return Raven; +}; + +Raven.afterLoad(); +var singleton = Raven; + +/** + * console plugin + * + * Monkey patches console.* calls into Sentry messages with + * their appropriate log levels. (Experimental) + * + * Options: + * + * `levels`: An array of levels (methods on `console`) to report to Sentry. + * Defaults to debug, info, warn, and error. + */ + +var wrapConsoleMethod$1 = console$1.wrapMethod; + +function consolePlugin(Raven, console, pluginOptions) { + console = console || window.console || {}; + pluginOptions = pluginOptions || {}; + var logLevels = pluginOptions.levels || ['debug', 'info', 'warn', 'error']; + if ('assert' in console) logLevels.push('assert'); + + var callback = function callback(msg, data) { + Raven.captureMessage(msg, data); + }; + + var level = logLevels.pop(); + + while (level) { + wrapConsoleMethod$1(console, level, callback); + level = logLevels.pop(); + } +} + +var console$3 = consolePlugin; + +/*global define*/ + +/** + * require.js plugin + * + * Automatically wrap define/require callbacks. (Experimental) + */ + +function requirePlugin(Raven) { + if (typeof undefined === 'function' && undefined.amd) { + window.define = Raven.wrap({ + deep: false + }, undefined); + window.require = Raven.wrap({ + deep: false + }, commonjsRequire); + } +} + +var require_1 = requirePlugin; + +/* This file was generated by './scripts/generate-plugin-combinations.js'! */ + +singleton.addPlugin(console$3).addPlugin(require_1); +var console_require = {}; + +return console_require; + +}))); diff --git a/dist/console,require/raven.min.js b/dist/console,require/raven.min.js new file mode 100644 index 000000000000..b66584bbf452 --- /dev/null +++ b/dist/console,require/raven.min.js @@ -0,0 +1,3 @@ +/*! Raven.js 3.22.2 (1b6187b) | github.com/getsentry/raven-js */ +!function(a,b){"object"==typeof exports&&"undefined"!=typeof module?module.exports=b():"function"==typeof define&&define.amd?define(b):a.Raven=b()}(this,function(){"use strict";function a(a,b){return b={exports:{}},a(b,b.exports),b.exports}function b(a){return(b="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(a){return typeof a}:function(a){return a&&"function"==typeof Symbol&&a.constructor===Symbol&&a!==Symbol.prototype?"symbol":typeof a})(a)}function c(a){return"object"===b(a)&&null!==a}function d(a){switch({}.toString.call(a)){case"[object Error]":return!0;case"[object Exception]":return!0;case"[object DOMException]":return!0;default:return a instanceof Error}}function e(a){return l()&&"[object ErrorEvent]"==={}.toString.call(a)}function f(a){return void 0===a}function g(a){return"function"==typeof a}function h(a){return"[object Object]"===Object.prototype.toString.call(a)}function i(a){return"[object String]"===Object.prototype.toString.call(a)}function j(a){return"[object Array]"===Object.prototype.toString.call(a)}function k(a){if(!h(a))return!1;for(var b in a)if(a.hasOwnProperty(b))return!1;return!0}function l(){try{return new ErrorEvent(""),!0}catch(a){return!1}}function m(){if(!("fetch"in O))return!1;try{return new Headers,new Request(""),new Response,!0}catch(a){return!1}}function n(a){function b(b,c){var d=a(b)||b;return c?c(d)||d:d}return b}function o(a,b){var c,d;if(f(a.length))for(c in a)s(a,c)&&b.call(null,c,a[c]);else if(d=a.length)for(c=0;c ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function y(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&i(b))for(c=b.split(/\s+/),f=0;f=0;--b)l[b]===a&&l.splice(b,1)}function c(){g(),l=[]}function d(a,b){var c=null;if(!b||Q.collectWindowErrors){for(var d in l)if(l.hasOwnProperty(d))try{l[d].apply(null,[a].concat(S.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function e(a,b,c,e,f){var g=null,i=P.isErrorEvent(f)?f.error:f,k=P.isErrorEvent(a)?a.message:a;if(o)Q.computeStackTrace.augmentStackTraceWithInitialElement(o,b,c,k),h();else if(i&&P.isError(i))g=Q.computeStackTrace(i),d(g,!0);else{var l,m={url:b,line:c,column:e},n=void 0;if("[object String]"==={}.toString.call(k)){var l=k.match(U);l&&(n=l[1],k=l[2])}m.func=T,g={name:n,message:k,url:F(),stack:[m]},d(g,!0)}return!!j&&j.apply(this,arguments)}function f(){k||(j=R.onerror,R.onerror=e,k=!0)}function g(){k&&(R.onerror=j,k=!1,j=void 0)}function h(){var a=o,b=m;m=null,o=null,n=null,d.apply(null,[a,!1].concat(b))}function i(a,b){var c=S.call(arguments,1);if(o){if(n===a)return;h()}var d=Q.computeStackTrace(a);if(o=d,n=a,m=c,setTimeout(function(){n===a&&h()},d.incomplete?2e3:0),b!==!1)throw a}var j,k,l=[],m=null,n=null,o=null;return i.subscribe=a,i.unsubscribe=b,i.uninstall=c,i}(),Q.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,d,e=/^\s*at (.*?) ?\(((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,f=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|\[native).*?|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,g=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,h=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,i=/\((\S*)(?::(\d+))(?::(\d+))\)/,j=a.stack.split("\n"),k=[],l=(/^(.*) is undefined$/.exec(a.message),0),m=j.length;l eval")>-1;o&&(b=h.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==l||c[5]||"undefined"==typeof a.columnNumber||(k[0].column=a.columnNumber+1),d={url:c[3],func:c[1]||T,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}!d.func&&d.line&&(d.func=T),k.push(d)}return k.length?{name:a.name,message:a.message,url:F(),stack:k}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=T),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,e){for(var f,g,h=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,i=[],j={},k=!1,l=c.caller;l&&!k;l=l.caller)if(l!==d&&l!==Q.report){if(g={url:null,func:T,line:null,column:null},l.name?g.func=l.name:(f=h.exec(l.toString()))&&(g.func=f[1]),"undefined"==typeof g.func)try{g.func=f.input.substring(0,f.input.indexOf("{"))}catch(m){}j[""+l]?k=!0:j[""+l]=!0,i.push(g)}e&&i.splice(0,e);var n={name:a.name,message:a.message,url:F(),stack:i};return b(n,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),n}function d(b,d){var e=null;d=null==d?0:+d;try{if(e=a(b))return e}catch(f){if(Q.debug)throw f}try{if(e=c(b,d+1))return e}catch(f){if(Q.debug)throw f}return{name:b.name,message:b.message,url:F()}}return d.augmentStackTraceWithInitialElement=b,d.computeStackTraceFromStackProp=a,d}();var V=Q,W=a(function(a,b){function c(a,b){for(var c=0;c0){var i=c(d,this);~i?d.splice(i+1):d.push(this),~i?f.splice(i,1/0,g):f.push(g),~c(d,h)&&(h=b.call(this,g,h))}else d.push(h);return null==a?h instanceof Error?e(h):h:a.call(this,g,h)}}b=a.exports=d,b.getSerialize=f});G.prototype=new Error,G.prototype.constructor=G;var X=G,Y=function(a,b,c){var d=a[b],e=a;if(b in a){var f="warn"===b?"warning":b;a[b]=function(){var a=[].slice.call(arguments),g=P.safeJoin(a," "),h={level:f,logger:"console",extra:{arguments:a}};"assert"===b?a[0]===!1&&(g="Assertion failed: "+(P.safeJoin(a.slice(1)," ")||"console.assert"),h.extra.arguments=a.slice(1),c&&c(g,h)):c&&c(g,h),d&&Function.prototype.apply.call(d,e,a)}}},Z={wrapMethod:Y},$=P.isError,_=P.isObject,aa=P.isErrorEvent,ba=P.isUndefined,ca=P.isFunction,da=P.isString,ea=P.isArray,fa=P.isEmptyObject,ga=P.each,ha=P.objectMerge,ia=P.truncate,ja=P.objectFrozen,ka=P.hasKey,la=P.joinRegExp,ma=P.urlencode,na=P.uuid4,oa=P.htmlTreeAsString,pa=P.isSameException,qa=P.isSameStacktrace,ra=P.parseUrl,sa=P.fill,ta=P.supportsFetch,ua=Z.wrapMethod,va="source protocol user pass host port path".split(" "),wa=/^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/,xa="undefined"!=typeof window?window:"undefined"!=typeof M?M:"undefined"!=typeof self?self:{},ya=xa.document,za=xa.navigator;J.prototype={VERSION:"3.22.2",debug:!1,TraceKit:V,config:function(a,b){var c=this;if(c.i)return this.C("error","Error: Raven has already been configured"),c;if(!a)return c;var d=c.m;b&&ga(b,function(a,b){"tags"===a||"extra"===a||"user"===a?c.l[a]=b:d[a]=b}),c.setDSN(a),d.ignoreErrors.push(/^Script error\.?$/),d.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/),d.ignoreErrors=la(d.ignoreErrors),d.ignoreUrls=!!d.ignoreUrls.length&&la(d.ignoreUrls),d.whitelistUrls=!!d.whitelistUrls.length&&la(d.whitelistUrls),d.includePaths=la(d.includePaths),d.maxBreadcrumbs=Math.max(0,Math.min(d.maxBreadcrumbs||100,100));var e={xhr:!0,console:!0,dom:!0,location:!0,sentry:!0},f=d.autoBreadcrumbs;"[object Object]"==={}.toString.call(f)?f=ha(e,f):f!==!1&&(f=e),d.autoBreadcrumbs=f;var g={tryCatch:!0},h=d.instrument;return"[object Object]"==={}.toString.call(h)?h=ha(g,h):h!==!1&&(h=g),d.instrument=h,V.collectWindowErrors=!!d.collectWindowErrors,c},install:function(){var a=this;return a.isSetup()&&!a.p&&(V.report.subscribe(function(){a.D.apply(a,arguments)}),a.E(),a.m.instrument&&a.m.instrument.tryCatch&&a.F(),a.m.autoBreadcrumbs&&a.G(),a.H(),a.p=!0),Error.stackTraceLimit=a.m.stackTraceLimit,this},setDSN:function(a){var b=this,c=b.I(a),d=c.path.lastIndexOf("/"),e=c.path.substr(1,d);b.J=a,b.j=c.user,b.K=c.pass&&c.pass.substr(1),b.k=c.path.substr(d+1),b.i=b.L(c),b.M=b.i+"/"+e+"api/"+b.k+"/store/",this.A()},context:function(a,b,c){return ca(a)&&(c=b||[],b=a,a=void 0),this.wrap(a,b).apply(this,c)},wrap:function(a,b,c){function d(){var d=[],f=arguments.length,g=!a||a&&a.deep!==!1;for(c&&ca(c)&&c.apply(this,arguments);f--;)d[f]=g?e.wrap(a,arguments[f]):arguments[f];try{return b.apply(this,d)}catch(h){throw e.N(),e.captureException(h,a),h}}var e=this;if(ba(b)&&!ca(a))return a;if(ca(a)&&(b=a,a=void 0),!ca(b))return b;try{if(b.a)return b;if(b.O)return b.O}catch(f){return b}for(var g in b)ka(b,g)&&(d[g]=b[g]);return d.prototype=b.prototype,b.O=d,d.a=!0,d.b=b,d},uninstall:function(){return V.report.uninstall(),this.P(),this.Q(),this.R(),Error.stackTraceLimit=this.q,this.p=!1,this},captureException:function(a,b){b=ha({trimHeadFrames:0},b?b:{});var c=!$(a),d=!aa(a),e=aa(a)&&!a.error;if(c&&d||e)return this.captureMessage(a,ha(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}));aa(a)&&(a=a.error),this.f=a;try{var f=V.computeStackTrace(a);this.S(f,b)}catch(g){if(a!==g)throw g}return this},captureMessage:function(a,b){if(!this.m.ignoreErrors.test||!this.m.ignoreErrors.test(a)){b=b||{};var c,d=ha({message:a+""},b);try{throw new Error(a)}catch(e){c=e}c.name=null;var f=V.computeStackTrace(c),g=ea(f.stack)&&f.stack[1],h=g&&g.url||"";if((!this.m.ignoreUrls.test||!this.m.ignoreUrls.test(h))&&(!this.m.whitelistUrls.test||this.m.whitelistUrls.test(h))){if(this.m.stacktrace||b&&b.stacktrace){b=ha({fingerprint:a,trimHeadFrames:(b.trimHeadFrames||0)+1},b);var i=this.T(f,b);d.stacktrace={frames:i.reverse()}}return this.U(d),this}}},captureBreadcrumb:function(a){var b=ha({timestamp:H()/1e3},a);if(ca(this.m.breadcrumbCallback)){var c=this.m.breadcrumbCallback(b);if(_(c)&&!fa(c))b=c;else if(c===!1)return this}return this.w.push(b),this.w.length>this.m.maxBreadcrumbs&&this.w.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.t.push([a,b]),this.p&&this.H(),this},setUserContext:function(a){return this.l.user=a,this},setExtraContext:function(a){return this.V("extra",a),this},setTagsContext:function(a){return this.V("tags",a),this},clearContext:function(){return this.l={},this},getContext:function(){return JSON.parse(W(this.l))},setEnvironment:function(a){return this.m.environment=a,this},setRelease:function(a){return this.m.release=a,this},setDataCallback:function(a){var b=this.m.dataCallback;return this.m.dataCallback=I(b,a),this},setBreadcrumbCallback:function(a){var b=this.m.breadcrumbCallback;return this.m.breadcrumbCallback=I(b,a),this},setShouldSendCallback:function(a){var b=this.m.shouldSendCallback;return this.m.shouldSendCallback=I(b,a),this},setTransport:function(a){return this.m.transport=a,this},lastException:function(){return this.f},lastEventId:function(){return this.h},isSetup:function(){return!!this.c&&(!!this.i||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.C("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=xa.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(ya){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new X("Missing eventId");var c=a.dsn||this.J;if(!c)throw new X("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.l.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.L(this.I(c)),h=ya.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(ya.head||ya.body).appendChild(h)}},N:function(){var a=this;this.o+=1,setTimeout(function(){a.o-=1})},W:function(a,b){var c,d;if(this.d){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),ya.createEvent?(c=ya.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=ya.createEventObject(),c.eventType=a);for(d in b)ka(b,d)&&(c[d]=b[d]);if(ya.createEvent)ya.dispatchEvent(c);else try{ya.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},X:function(a){var b=this;return function(c){if(b.Y=null,b.x!==c){b.x=c;var d;try{d=oa(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},Z:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.Y;g||a.X("input")(c),clearTimeout(g),a.Y=setTimeout(function(){a.Y=null},b)}}},$:function(a,b){var c=ra(this.y.href),d=ra(b),e=ra(a);this.z=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},E:function(){var a=this;a._=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.a?a._.apply(this.b,arguments):a._.apply(this,arguments)}},P:function(){this._&&(Function.prototype.toString=this._)},F:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.$(b.z,c+""),a.apply(this,arguments)}};sa(history,"pushState",j,d),sa(history,"replaceState",j,d)}if(c.console&&"console"in xa&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};ga(["debug","info","warn","error","log"],function(a,b){ua(console,b,k)})}},Q:function(){for(var a;this.v.length;){a=this.v.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},R:function(){for(var a in this.s)this.r[a]=this.s[a]},H:function(){var a=this;ga(this.t,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},I:function(a){var b=wa.exec(a),c={},d=7;try{for(;d--;)c[va[d]]=b[d]||""}catch(e){throw new X("Invalid DSN: "+a)}if(c.pass&&!this.m.allowSecretKey)throw new X("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},L:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},D:function(){this.o||this.S.apply(this,arguments)},S:function(a,b){var c=this.T(a,b);this.W("handle",{stackInfo:a,options:b}),this.ba(a.name,a.message,a.url,a.lineno,c,b)},T:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(ga(a.stack,function(b,e){var f=c.ca(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.w,0)}),this.l.user&&(a.user=this.l.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||fa(a[b]))&&delete a[b]}),ca(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!fa(a)&&(!ca(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.ia()?void this.C("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() href parsing trick because React Native and other +// environments where DOM might not be available + + +function parseUrl$1(url) { + if (typeof url !== 'string') return {}; + var match = url.match(/^(([^:\/?#]+):)?(\/\/([^\/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?$/); // coerce to undefined values to empty string so we don't get 'undefined' + + var query = match[6] || ''; + var fragment = match[8] || ''; + return { + protocol: match[2], + host: match[4], + path: match[5], + relative: match[5] + query + fragment // everything minus origin + + }; +} + +function uuid4$1() { + var crypto = _window$3.crypto || _window$3.msCrypto; + + if (!isUndefined$1(crypto) && crypto.getRandomValues) { + // Use window.crypto API if available + // eslint-disable-next-line no-undef + var arr = new Uint16Array(8); + crypto.getRandomValues(arr); // set 4 in byte 7 + + arr[3] = arr[3] & 0xfff | 0x4000; // set 2 most significant bits of byte 9 to '10' + + arr[4] = arr[4] & 0x3fff | 0x8000; + + var pad = function pad(num) { + var v = num.toString(16); + + while (v.length < 4) { + v = '0' + v; + } + + return v; + }; + + return pad(arr[0]) + pad(arr[1]) + pad(arr[2]) + pad(arr[3]) + pad(arr[4]) + pad(arr[5]) + pad(arr[6]) + pad(arr[7]); + } else { + // http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/2117523#2117523 + return 'xxxxxxxxxxxx4xxxyxxxxxxxxxxxxxxx'.replace(/[xy]/g, function (c) { + var r = Math.random() * 16 | 0, + v = c === 'x' ? r : r & 0x3 | 0x8; + return v.toString(16); + }); + } +} +/** + * Given a child DOM element, returns a query-selector statement describing that + * and its ancestors + * e.g. [HTMLElement] => body > div > input#foo.btn[name=baz] + * @param elem + * @returns {string} + */ + + +function htmlTreeAsString$1(elem) { + /* eslint no-extra-parens:0*/ + var MAX_TRAVERSE_HEIGHT = 5, + MAX_OUTPUT_LEN = 80, + out = [], + height = 0, + len = 0, + separator = ' > ', + sepLength = separator.length, + nextStr; + + while (elem && height++ < MAX_TRAVERSE_HEIGHT) { + nextStr = htmlElementAsString(elem); // bail out if + // - nextStr is the 'html' element + // - the length of the string that would be created exceeds MAX_OUTPUT_LEN + // (ignore this limit if we are on the first iteration) + + if (nextStr === 'html' || height > 1 && len + out.length * sepLength + nextStr.length >= MAX_OUTPUT_LEN) { + break; + } + + out.push(nextStr); + len += nextStr.length; + elem = elem.parentNode; + } + + return out.reverse().join(separator); +} +/** + * Returns a simple, query-selector representation of a DOM element + * e.g. [HTMLElement] => input#foo.btn[name=baz] + * @param HTMLElement + * @returns {string} + */ + + +function htmlElementAsString(elem) { + var out = [], + className, + classes, + key, + attr, + i; + + if (!elem || !elem.tagName) { + return ''; + } + + out.push(elem.tagName.toLowerCase()); + + if (elem.id) { + out.push('#' + elem.id); + } + + className = elem.className; + + if (className && isString$1(className)) { + classes = className.split(/\s+/); + + for (i = 0; i < classes.length; i++) { + out.push('.' + classes[i]); + } + } + + var attrWhitelist = ['type', 'name', 'title', 'alt']; + + for (i = 0; i < attrWhitelist.length; i++) { + key = attrWhitelist[i]; + attr = elem.getAttribute(key); + + if (attr) { + out.push('[' + key + '="' + attr + '"]'); + } + } + + return out.join(''); +} +/** + * Returns true if either a OR b is truthy, but not both + */ + + +function isOnlyOneTruthy(a, b) { + return !!(!!a ^ !!b); +} +/** + * Returns true if both parameters are undefined + */ + + +function isBothUndefined(a, b) { + return isUndefined$1(a) && isUndefined$1(b); +} +/** + * Returns true if the two input exception interfaces have the same content + */ + + +function isSameException$1(ex1, ex2) { + if (isOnlyOneTruthy(ex1, ex2)) return false; + ex1 = ex1.values[0]; + ex2 = ex2.values[0]; + if (ex1.type !== ex2.type || ex1.value !== ex2.value) return false; // in case both stacktraces are undefined, we can't decide so default to false + + if (isBothUndefined(ex1.stacktrace, ex2.stacktrace)) return false; + return isSameStacktrace$1(ex1.stacktrace, ex2.stacktrace); +} +/** + * Returns true if the two input stack trace interfaces have the same content + */ + + +function isSameStacktrace$1(stack1, stack2) { + if (isOnlyOneTruthy(stack1, stack2)) return false; + var frames1 = stack1.frames; + var frames2 = stack2.frames; // Exit early if frame count differs + + if (frames1.length !== frames2.length) return false; // Iterate through every frame; bail out if anything differs + + var a, b; + + for (var i = 0; i < frames1.length; i++) { + a = frames1[i]; + b = frames2[i]; + if (a.filename !== b.filename || a.lineno !== b.lineno || a.colno !== b.colno || a['function'] !== b['function']) return false; + } + + return true; +} +/** + * Polyfill a method + * @param obj object e.g. `document` + * @param name method name present on object e.g. `addEventListener` + * @param replacement replacement function + * @param track {optional} record instrumentation to an array + */ + + +function fill$1(obj, name, replacement, track) { + var orig = obj[name]; + obj[name] = replacement(orig); + obj[name].__raven__ = true; + obj[name].__orig__ = orig; + + if (track) { + track.push([obj, name, orig]); + } +} +/** + * Join values in array + * @param input array of values to be joined together + * @param delimiter string to be placed in-between values + * @returns {string} + */ + + +function safeJoin(input, delimiter) { + if (!isArray$1(input)) return ''; + var output = []; + + for (var i = 0; i < input.length; i++) { + try { + output.push(String(input[i])); + } catch (e) { + output.push('[value cannot be serialized]'); + } + } + + return output.join(delimiter); +} + +var utils = { + isObject: isObject$1, + isError: isError$1, + isErrorEvent: isErrorEvent$1, + isUndefined: isUndefined$1, + isFunction: isFunction$1, + isPlainObject: isPlainObject, + isString: isString$1, + isArray: isArray$1, + isEmptyObject: isEmptyObject$1, + supportsErrorEvent: supportsErrorEvent, + supportsFetch: supportsFetch$1, + wrappedCallback: wrappedCallback, + each: each$1, + objectMerge: objectMerge$1, + truncate: truncate$1, + objectFrozen: objectFrozen$1, + hasKey: hasKey$1, + joinRegExp: joinRegExp$1, + urlencode: urlencode$1, + uuid4: uuid4$1, + htmlTreeAsString: htmlTreeAsString$1, + htmlElementAsString: htmlElementAsString, + isSameException: isSameException$1, + isSameStacktrace: isSameStacktrace$1, + parseUrl: parseUrl$1, + fill: fill$1, + safeJoin: safeJoin +}; + +/* + TraceKit - Cross brower stack traces + + This was originally forked from github.com/occ/TraceKit, but has since been + largely re-written and is now maintained as part of raven-js. Tests for + this are in test/vendor. + + MIT license +*/ + +var TraceKit = { + collectWindowErrors: true, + debug: false +}; // This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) + +var _window$2 = typeof window !== 'undefined' ? window : typeof commonjsGlobal !== 'undefined' ? commonjsGlobal : typeof self !== 'undefined' ? self : {}; // global reference to slice + + +var _slice = [].slice; +var UNKNOWN_FUNCTION = '?'; // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error#Error_types + +var ERROR_TYPES_RE = /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/; + +function getLocationHref() { + if (typeof document === 'undefined' || document.location == null) return ''; + return document.location.href; +} +/** + * TraceKit.report: cross-browser processing of unhandled exceptions + * + * Syntax: + * TraceKit.report.subscribe(function(stackInfo) { ... }) + * TraceKit.report.unsubscribe(function(stackInfo) { ... }) + * TraceKit.report(exception) + * try { ...code... } catch(ex) { TraceKit.report(ex); } + * + * Supports: + * - Firefox: full stack trace with line numbers, plus column number + * on top frame; column number is not guaranteed + * - Opera: full stack trace with line and column numbers + * - Chrome: full stack trace with line and column numbers + * - Safari: line and column number for the top frame only; some frames + * may be missing, and column number is not guaranteed + * - IE: line and column number for the top frame only; some frames + * may be missing, and column number is not guaranteed + * + * In theory, TraceKit should work on all of the following versions: + * - IE5.5+ (only 8.0 tested) + * - Firefox 0.9+ (only 3.5+ tested) + * - Opera 7+ (only 10.50 tested; versions 9 and earlier may require + * Exceptions Have Stacktrace to be enabled in opera:config) + * - Safari 3+ (only 4+ tested) + * - Chrome 1+ (only 5+ tested) + * - Konqueror 3.5+ (untested) + * + * Requires TraceKit.computeStackTrace. + * + * Tries to catch all unhandled exceptions and report them to the + * subscribed handlers. Please note that TraceKit.report will rethrow the + * exception. This is REQUIRED in order to get a useful stack trace in IE. + * If the exception does not reach the top of the browser, you will only + * get a stack trace from the point where TraceKit.report was called. + * + * Handlers receive a stackInfo object as described in the + * TraceKit.computeStackTrace docs. + */ + + +TraceKit.report = function reportModuleWrapper() { + var handlers = [], + lastArgs = null, + lastException = null, + lastExceptionStack = null; + /** + * Add a crash handler. + * @param {Function} handler + */ + + function subscribe(handler) { + installGlobalHandler(); + handlers.push(handler); + } + /** + * Remove a crash handler. + * @param {Function} handler + */ + + + function unsubscribe(handler) { + for (var i = handlers.length - 1; i >= 0; --i) { + if (handlers[i] === handler) { + handlers.splice(i, 1); + } + } + } + /** + * Remove all crash handlers. + */ + + + function unsubscribeAll() { + uninstallGlobalHandler(); + handlers = []; + } + /** + * Dispatch stack information to all handlers. + * @param {Object.} stack + */ + + + function notifyHandlers(stack, isWindowError) { + var exception = null; + + if (isWindowError && !TraceKit.collectWindowErrors) { + return; + } + + for (var i in handlers) { + if (handlers.hasOwnProperty(i)) { + try { + handlers[i].apply(null, [stack].concat(_slice.call(arguments, 2))); + } catch (inner) { + exception = inner; + } + } + } + + if (exception) { + throw exception; + } + } + + var _oldOnerrorHandler, _onErrorHandlerInstalled; + /** + * Ensures all global unhandled exceptions are recorded. + * Supported by Gecko and IE. + * @param {string} msg Error message. + * @param {string} url URL of script that generated the exception. + * @param {(number|string)} lineNo The line number at which the error + * occurred. + * @param {?(number|string)} colNo The column number at which the error + * occurred. + * @param {?Error} ex The actual Error object. + */ + + + function traceKitWindowOnError(msg, url, lineNo, colNo, ex) { + var stack = null; // If 'ex' is ErrorEvent, get real Error from inside + + var exception = utils.isErrorEvent(ex) ? ex.error : ex; // If 'msg' is ErrorEvent, get real message from inside + + var message = utils.isErrorEvent(msg) ? msg.message : msg; + + if (lastExceptionStack) { + TraceKit.computeStackTrace.augmentStackTraceWithInitialElement(lastExceptionStack, url, lineNo, message); + processLastException(); + } else if (exception && utils.isError(exception)) { + // non-string `exception` arg; attempt to extract stack trace + // New chrome and blink send along a real error object + // Let's just report that like a normal error. + // See: https://mikewest.org/2013/08/debugging-runtime-errors-with-window-onerror + stack = TraceKit.computeStackTrace(exception); + notifyHandlers(stack, true); + } else { + var location = { + url: url, + line: lineNo, + column: colNo + }; + var name = undefined; + var groups; + + if ({}.toString.call(message) === '[object String]') { + var groups = message.match(ERROR_TYPES_RE); + + if (groups) { + name = groups[1]; + message = groups[2]; + } + } + + location.func = UNKNOWN_FUNCTION; + stack = { + name: name, + message: message, + url: getLocationHref(), + stack: [location] + }; + notifyHandlers(stack, true); + } + + if (_oldOnerrorHandler) { + return _oldOnerrorHandler.apply(this, arguments); + } + + return false; + } + + function installGlobalHandler() { + if (_onErrorHandlerInstalled) { + return; + } + + _oldOnerrorHandler = _window$2.onerror; + _window$2.onerror = traceKitWindowOnError; + _onErrorHandlerInstalled = true; + } + + function uninstallGlobalHandler() { + if (!_onErrorHandlerInstalled) { + return; + } + + _window$2.onerror = _oldOnerrorHandler; + _onErrorHandlerInstalled = false; + _oldOnerrorHandler = undefined; + } + + function processLastException() { + var _lastExceptionStack = lastExceptionStack, + _lastArgs = lastArgs; + lastArgs = null; + lastExceptionStack = null; + lastException = null; + notifyHandlers.apply(null, [_lastExceptionStack, false].concat(_lastArgs)); + } + /** + * Reports an unhandled Error to TraceKit. + * @param {Error} ex + * @param {?boolean} rethrow If false, do not re-throw the exception. + * Only used for window.onerror to not cause an infinite loop of + * rethrowing. + */ + + + function report(ex, rethrow) { + var args = _slice.call(arguments, 1); + + if (lastExceptionStack) { + if (lastException === ex) { + return; // already caught by an inner catch block, ignore + } else { + processLastException(); + } + } + + var stack = TraceKit.computeStackTrace(ex); + lastExceptionStack = stack; + lastException = ex; + lastArgs = args; // If the stack trace is incomplete, wait for 2 seconds for + // slow slow IE to see if onerror occurs or not before reporting + // this exception; otherwise, we will end up with an incomplete + // stack trace + + setTimeout(function () { + if (lastException === ex) { + processLastException(); + } + }, stack.incomplete ? 2000 : 0); + + if (rethrow !== false) { + throw ex; // re-throw to propagate to the top level (and cause window.onerror) + } + } + + report.subscribe = subscribe; + report.unsubscribe = unsubscribe; + report.uninstall = unsubscribeAll; + return report; +}(); +/** + * TraceKit.computeStackTrace: cross-browser stack traces in JavaScript + * + * Syntax: + * s = TraceKit.computeStackTrace(exception) // consider using TraceKit.report instead (see below) + * Returns: + * s.name - exception name + * s.message - exception message + * s.stack[i].url - JavaScript or HTML file URL + * s.stack[i].func - function name, or empty for anonymous functions (if guessing did not work) + * s.stack[i].args - arguments passed to the function, if known + * s.stack[i].line - line number, if known + * s.stack[i].column - column number, if known + * + * Supports: + * - Firefox: full stack trace with line numbers and unreliable column + * number on top frame + * - Opera 10: full stack trace with line and column numbers + * - Opera 9-: full stack trace with line numbers + * - Chrome: full stack trace with line and column numbers + * - Safari: line and column number for the topmost stacktrace element + * only + * - IE: no line numbers whatsoever + * + * Tries to guess names of anonymous functions by looking for assignments + * in the source code. In IE and Safari, we have to guess source file names + * by searching for function bodies inside all page scripts. This will not + * work for scripts that are loaded cross-domain. + * Here be dragons: some function names may be guessed incorrectly, and + * duplicate functions may be mismatched. + * + * TraceKit.computeStackTrace should only be used for tracing purposes. + * Logging of unhandled exceptions should be done with TraceKit.report, + * which builds on top of TraceKit.computeStackTrace and provides better + * IE support by utilizing the window.onerror event to retrieve information + * about the top of the stack. + * + * Note: In IE and Safari, no stack trace is recorded on the Error object, + * so computeStackTrace instead walks its *own* chain of callers. + * This means that: + * * in Safari, some methods may be missing from the stack trace; + * * in IE, the topmost function in the stack trace will always be the + * caller of computeStackTrace. + * + * This is okay for tracing (because you are likely to be calling + * computeStackTrace from the function you want to be the topmost element + * of the stack trace anyway), but not okay for logging unhandled + * exceptions (because your catch block will likely be far away from the + * inner function that actually caused the exception). + * + */ + + +TraceKit.computeStackTrace = function computeStackTraceWrapper() { + // Contents of Exception in various browsers. + // + // SAFARI: + // ex.message = Can't find variable: qq + // ex.line = 59 + // ex.sourceId = 580238192 + // ex.sourceURL = http://... + // ex.expressionBeginOffset = 96 + // ex.expressionCaretOffset = 98 + // ex.expressionEndOffset = 98 + // ex.name = ReferenceError + // + // FIREFOX: + // ex.message = qq is not defined + // ex.fileName = http://... + // ex.lineNumber = 59 + // ex.columnNumber = 69 + // ex.stack = ...stack trace... (see the example below) + // ex.name = ReferenceError + // + // CHROME: + // ex.message = qq is not defined + // ex.name = ReferenceError + // ex.type = not_defined + // ex.arguments = ['aa'] + // ex.stack = ...stack trace... + // + // INTERNET EXPLORER: + // ex.message = ... + // ex.name = ReferenceError + // + // OPERA: + // ex.message = ...message... (see the example below) + // ex.name = ReferenceError + // ex.opera#sourceloc = 11 (pretty much useless, duplicates the info in ex.message) + // ex.stacktrace = n/a; see 'opera:config#UserPrefs|Exceptions Have Stacktrace' + + /** + * Computes stack trace information from the stack property. + * Chrome and Gecko use this property. + * @param {Error} ex + * @return {?Object.} Stack trace information. + */ + function computeStackTraceFromStackProp(ex) { + if (typeof ex.stack === 'undefined' || !ex.stack) return; + var chrome = /^\s*at (.*?) ?\(((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i, + gecko = /^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|\[native).*?|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i, + winjs = /^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i, + // Used to additionally parse URL/line/column from eval frames + geckoEval = /(\S+) line (\d+)(?: > eval line \d+)* > eval/i, + chromeEval = /\((\S*)(?::(\d+))(?::(\d+))\)/, + lines = ex.stack.split('\n'), + stack = [], + submatch, + parts, + element, + reference = /^(.*) is undefined$/.exec(ex.message); + + for (var i = 0, j = lines.length; i < j; ++i) { + if (parts = chrome.exec(lines[i])) { + var isNative = parts[2] && parts[2].indexOf('native') === 0; // start of line + + var isEval = parts[2] && parts[2].indexOf('eval') === 0; // start of line + + if (isEval && (submatch = chromeEval.exec(parts[2]))) { + // throw out eval line/column and use top-most line/column number + parts[2] = submatch[1]; // url + + parts[3] = submatch[2]; // line + + parts[4] = submatch[3]; // column + } + + element = { + url: !isNative ? parts[2] : null, + func: parts[1] || UNKNOWN_FUNCTION, + args: isNative ? [parts[2]] : [], + line: parts[3] ? +parts[3] : null, + column: parts[4] ? +parts[4] : null + }; + } else if (parts = winjs.exec(lines[i])) { + element = { + url: parts[2], + func: parts[1] || UNKNOWN_FUNCTION, + args: [], + line: +parts[3], + column: parts[4] ? +parts[4] : null + }; + } else if (parts = gecko.exec(lines[i])) { + var isEval = parts[3] && parts[3].indexOf(' > eval') > -1; + + if (isEval && (submatch = geckoEval.exec(parts[3]))) { + // throw out eval line/column and use top-most line number + parts[3] = submatch[1]; + parts[4] = submatch[2]; + parts[5] = null; // no column when eval + } else if (i === 0 && !parts[5] && typeof ex.columnNumber !== 'undefined') { + // FireFox uses this awesome columnNumber property for its top frame + // Also note, Firefox's column number is 0-based and everything else expects 1-based, + // so adding 1 + // NOTE: this hack doesn't work if top-most frame is eval + stack[0].column = ex.columnNumber + 1; + } + + element = { + url: parts[3], + func: parts[1] || UNKNOWN_FUNCTION, + args: parts[2] ? parts[2].split(',') : [], + line: parts[4] ? +parts[4] : null, + column: parts[5] ? +parts[5] : null + }; + } else { + continue; + } + + if (!element.func && element.line) { + element.func = UNKNOWN_FUNCTION; + } + + stack.push(element); + } + + if (!stack.length) { + return null; + } + + return { + name: ex.name, + message: ex.message, + url: getLocationHref(), + stack: stack + }; + } + /** + * Adds information about the first frame to incomplete stack traces. + * Safari and IE require this to get complete data on the first frame. + * @param {Object.} stackInfo Stack trace information from + * one of the compute* methods. + * @param {string} url The URL of the script that caused an error. + * @param {(number|string)} lineNo The line number of the script that + * caused an error. + * @param {string=} message The error generated by the browser, which + * hopefully contains the name of the object that caused the error. + * @return {boolean} Whether or not the stack information was + * augmented. + */ + + + function augmentStackTraceWithInitialElement(stackInfo, url, lineNo, message) { + var initial = { + url: url, + line: lineNo + }; + + if (initial.url && initial.line) { + stackInfo.incomplete = false; + + if (!initial.func) { + initial.func = UNKNOWN_FUNCTION; + } + + if (stackInfo.stack.length > 0) { + if (stackInfo.stack[0].url === initial.url) { + if (stackInfo.stack[0].line === initial.line) { + return false; // already in stack trace + } else if (!stackInfo.stack[0].line && stackInfo.stack[0].func === initial.func) { + stackInfo.stack[0].line = initial.line; + return false; + } + } + } + + stackInfo.stack.unshift(initial); + stackInfo.partial = true; + return true; + } else { + stackInfo.incomplete = true; + } + + return false; + } + /** + * Computes stack trace information by walking the arguments.caller + * chain at the time the exception occurred. This will cause earlier + * frames to be missed but is the only way to get any stack trace in + * Safari and IE. The top frame is restored by + * {@link augmentStackTraceWithInitialElement}. + * @param {Error} ex + * @return {?Object.} Stack trace information. + */ + + + function computeStackTraceByWalkingCallerChain(ex, depth) { + var functionName = /function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i, + stack = [], + funcs = {}, + recursion = false, + parts, + item; + + for (var curr = computeStackTraceByWalkingCallerChain.caller; curr && !recursion; curr = curr.caller) { + if (curr === computeStackTrace || curr === TraceKit.report) { + // console.log('skipping internal function'); + continue; + } + + item = { + url: null, + func: UNKNOWN_FUNCTION, + line: null, + column: null + }; + + if (curr.name) { + item.func = curr.name; + } else if (parts = functionName.exec(curr.toString())) { + item.func = parts[1]; + } + + if (typeof item.func === 'undefined') { + try { + item.func = parts.input.substring(0, parts.input.indexOf('{')); + } catch (e) {} + } + + if (funcs['' + curr]) { + recursion = true; + } else { + funcs['' + curr] = true; + } + + stack.push(item); + } + + if (depth) { + // console.log('depth is ' + depth); + // console.log('stack is ' + stack.length); + stack.splice(0, depth); + } + + var result = { + name: ex.name, + message: ex.message, + url: getLocationHref(), + stack: stack + }; + augmentStackTraceWithInitialElement(result, ex.sourceURL || ex.fileName, ex.line || ex.lineNumber, ex.message || ex.description); + return result; + } + /** + * Computes a stack trace for an exception. + * @param {Error} ex + * @param {(string|number)=} depth + */ + + + function computeStackTrace(ex, depth) { + var stack = null; + depth = depth == null ? 0 : +depth; + + try { + stack = computeStackTraceFromStackProp(ex); + + if (stack) { + return stack; + } + } catch (e) { + if (TraceKit.debug) { + throw e; + } + } + + try { + stack = computeStackTraceByWalkingCallerChain(ex, depth + 1); + + if (stack) { + return stack; + } + } catch (e) { + if (TraceKit.debug) { + throw e; + } + } + + return { + name: ex.name, + message: ex.message, + url: getLocationHref() + }; + } + + computeStackTrace.augmentStackTraceWithInitialElement = augmentStackTraceWithInitialElement; + computeStackTrace.computeStackTraceFromStackProp = computeStackTraceFromStackProp; + return computeStackTrace; +}(); + +var tracekit = TraceKit; + +var stringify_1 = createCommonjsModule(function (module, exports) { + /* + json-stringify-safe + Like JSON.stringify, but doesn't throw on circular references. + + Originally forked from https://github.com/isaacs/json-stringify-safe + version 5.0.1 on 3/8/2017 and modified to handle Errors serialization + and IE8 compatibility. Tests for this are in test/vendor. + + ISC license: https://github.com/isaacs/json-stringify-safe/blob/master/LICENSE + */ + exports = module.exports = stringify; + exports.getSerialize = serializer; + + function indexOf(haystack, needle) { + for (var i = 0; i < haystack.length; ++i) { + if (haystack[i] === needle) return i; + } + + return -1; + } + + function stringify(obj, replacer, spaces, cycleReplacer) { + return JSON.stringify(obj, serializer(replacer, cycleReplacer), spaces); + } // https://github.com/ftlabs/js-abbreviate/blob/fa709e5f139e7770a71827b1893f22418097fbda/index.js#L95-L106 + + + function stringifyError(value) { + var err = { + // These properties are implemented as magical getters and don't show up in for in + stack: value.stack, + message: value.message, + name: value.name + }; + + for (var i in value) { + if (Object.prototype.hasOwnProperty.call(value, i)) { + err[i] = value[i]; + } + } + + return err; + } + + function serializer(replacer, cycleReplacer) { + var stack = []; + var keys = []; + + if (cycleReplacer == null) { + cycleReplacer = function cycleReplacer(key, value) { + if (stack[0] === value) { + return '[Circular ~]'; + } + + return '[Circular ~.' + keys.slice(0, indexOf(stack, value)).join('.') + ']'; + }; + } + + return function (key, value) { + if (stack.length > 0) { + var thisPos = indexOf(stack, this); + ~thisPos ? stack.splice(thisPos + 1) : stack.push(this); + ~thisPos ? keys.splice(thisPos, Infinity, key) : keys.push(key); + + if (~indexOf(stack, value)) { + value = cycleReplacer.call(this, key, value); + } + } else { + stack.push(value); + } + + return replacer == null ? value instanceof Error ? stringifyError(value) : value : replacer.call(this, key, value); + }; + } +}); +var stringify_2 = stringify_1.getSerialize; + +function RavenConfigError(message) { + this.name = 'RavenConfigError'; + this.message = message; +} + +RavenConfigError.prototype = new Error(); +RavenConfigError.prototype.constructor = RavenConfigError; +var configError = RavenConfigError; + +var wrapMethod = function wrapMethod(console, level, callback) { + var originalConsoleLevel = console[level]; + var originalConsole = console; + + if (!(level in console)) { + return; + } + + var sentryLevel = level === 'warn' ? 'warning' : level; + + console[level] = function () { + var args = [].slice.call(arguments); + var msg = utils.safeJoin(args, ' '); + var data = { + level: sentryLevel, + logger: 'console', + extra: { + arguments: args + } + }; + + if (level === 'assert') { + if (args[0] === false) { + // Default browsers message + msg = 'Assertion failed: ' + (utils.safeJoin(args.slice(1), ' ') || 'console.assert'); + data.extra.arguments = args.slice(1); + callback && callback(msg, data); + } + } else { + callback && callback(msg, data); + } // this fails for some browsers. :( + + + if (originalConsoleLevel) { + // IE9 doesn't allow calling apply on console functions directly + // See: https://stackoverflow.com/questions/5472938/does-ie9-support-console-log-and-is-it-a-real-function#answer-5473193 + Function.prototype.apply.call(originalConsoleLevel, originalConsole, args); + } + }; +}; + +var console$1 = { + wrapMethod: wrapMethod +}; + +/*global XDomainRequest:false */ + +var isError = utils.isError; +var isObject = utils.isObject; +var isErrorEvent = utils.isErrorEvent; +var isUndefined = utils.isUndefined; +var isFunction = utils.isFunction; +var isString = utils.isString; +var isArray = utils.isArray; +var isEmptyObject = utils.isEmptyObject; +var each = utils.each; +var objectMerge = utils.objectMerge; +var truncate = utils.truncate; +var objectFrozen = utils.objectFrozen; +var hasKey = utils.hasKey; +var joinRegExp = utils.joinRegExp; +var urlencode = utils.urlencode; +var uuid4 = utils.uuid4; +var htmlTreeAsString = utils.htmlTreeAsString; +var isSameException = utils.isSameException; +var isSameStacktrace = utils.isSameStacktrace; +var parseUrl = utils.parseUrl; +var fill = utils.fill; +var supportsFetch = utils.supportsFetch; +var wrapConsoleMethod = console$1.wrapMethod; +var dsnKeys = 'source protocol user pass host port path'.split(' '); +var dsnPattern = /^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/; + +function now() { + return +new Date(); +} // This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) + + +var _window$1 = typeof window !== 'undefined' ? window : typeof commonjsGlobal !== 'undefined' ? commonjsGlobal : typeof self !== 'undefined' ? self : {}; + +var _document = _window$1.document; +var _navigator = _window$1.navigator; + +function keepOriginalCallback(original, callback) { + return isFunction(callback) ? function (data) { + return callback(data, original); + } : callback; +} // First, check for JSON support +// If there is no JSON, we no-op the core features of Raven +// since JSON is required to encode the payload + + +function Raven$1() { + this._hasJSON = !!(_typeof(JSON) === 'object' && JSON.stringify); // Raven can run in contexts where there's no document (react-native) + + this._hasDocument = !isUndefined(_document); + this._hasNavigator = !isUndefined(_navigator); + this._lastCapturedException = null; + this._lastData = null; + this._lastEventId = null; + this._globalServer = null; + this._globalKey = null; + this._globalProject = null; + this._globalContext = {}; + this._globalOptions = { + // SENTRY_RELEASE can be injected by https://github.com/getsentry/sentry-webpack-plugin + release: _window$1.SENTRY_RELEASE && _window$1.SENTRY_RELEASE.id, + logger: 'javascript', + ignoreErrors: [], + ignoreUrls: [], + whitelistUrls: [], + includePaths: [], + headers: null, + collectWindowErrors: true, + maxMessageLength: 0, + // By default, truncates URL values to 250 chars + maxUrlLength: 250, + stackTraceLimit: 50, + autoBreadcrumbs: true, + instrument: true, + sampleRate: 1 + }; + this._fetchDefaults = { + method: 'POST', + keepalive: true, + referrerPolicy: 'origin' + }; + this._ignoreOnError = 0; + this._isRavenInstalled = false; + this._originalErrorStackTraceLimit = Error.stackTraceLimit; // capture references to window.console *and* all its methods first + // before the console plugin has a chance to monkey patch + + this._originalConsole = _window$1.console || {}; + this._originalConsoleMethods = {}; + this._plugins = []; + this._startTime = now(); + this._wrappedBuiltIns = []; + this._breadcrumbs = []; + this._lastCapturedEvent = null; + this._keypressTimeout; + this._location = _window$1.location; + this._lastHref = this._location && this._location.href; + + this._resetBackoff(); // eslint-disable-next-line guard-for-in + + + for (var method in this._originalConsole) { + this._originalConsoleMethods[method] = this._originalConsole[method]; + } +} +/* + * The core Raven singleton + * + * @this {Raven} + */ + + +Raven$1.prototype = { + // Hardcode version string so that raven source can be loaded directly via + // webpack (using a build step causes webpack #1617). Grunt verifies that + // this value matches package.json during build. + // See: https://github.com/getsentry/raven-js/issues/465 + VERSION: '3.22.2', + debug: false, + TraceKit: tracekit, + // alias to TraceKit + + /* + * Configure Raven with a DSN and extra options + * + * @param {string} dsn The public Sentry DSN + * @param {object} options Set of global options [optional] + * @return {Raven} + */ + config: function config(dsn, options) { + var self = this; + + if (self._globalServer) { + this._logDebug('error', 'Error: Raven has already been configured'); + + return self; + } + + if (!dsn) return self; + var globalOptions = self._globalOptions; // merge in options + + if (options) { + each(options, function (key, value) { + // tags and extra are special and need to be put into context + if (key === 'tags' || key === 'extra' || key === 'user') { + self._globalContext[key] = value; + } else { + globalOptions[key] = value; + } + }); + } + + self.setDSN(dsn); // "Script error." is hard coded into browsers for errors that it can't read. + // this is the result of a script being pulled in from an external domain and CORS. + + globalOptions.ignoreErrors.push(/^Script error\.?$/); + globalOptions.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/); // join regexp rules into one big rule + + globalOptions.ignoreErrors = joinRegExp(globalOptions.ignoreErrors); + globalOptions.ignoreUrls = globalOptions.ignoreUrls.length ? joinRegExp(globalOptions.ignoreUrls) : false; + globalOptions.whitelistUrls = globalOptions.whitelistUrls.length ? joinRegExp(globalOptions.whitelistUrls) : false; + globalOptions.includePaths = joinRegExp(globalOptions.includePaths); + globalOptions.maxBreadcrumbs = Math.max(0, Math.min(globalOptions.maxBreadcrumbs || 100, 100)); // default and hard limit is 100 + + var autoBreadcrumbDefaults = { + xhr: true, + console: true, + dom: true, + location: true, + sentry: true + }; + var autoBreadcrumbs = globalOptions.autoBreadcrumbs; + + if ({}.toString.call(autoBreadcrumbs) === '[object Object]') { + autoBreadcrumbs = objectMerge(autoBreadcrumbDefaults, autoBreadcrumbs); + } else if (autoBreadcrumbs !== false) { + autoBreadcrumbs = autoBreadcrumbDefaults; + } + + globalOptions.autoBreadcrumbs = autoBreadcrumbs; + var instrumentDefaults = { + tryCatch: true + }; + var instrument = globalOptions.instrument; + + if ({}.toString.call(instrument) === '[object Object]') { + instrument = objectMerge(instrumentDefaults, instrument); + } else if (instrument !== false) { + instrument = instrumentDefaults; + } + + globalOptions.instrument = instrument; + tracekit.collectWindowErrors = !!globalOptions.collectWindowErrors; // return for chaining + + return self; + }, + + /* + * Installs a global window.onerror error handler + * to capture and report uncaught exceptions. + * At this point, install() is required to be called due + * to the way TraceKit is set up. + * + * @return {Raven} + */ + install: function install() { + var self = this; + + if (self.isSetup() && !self._isRavenInstalled) { + tracekit.report.subscribe(function () { + self._handleOnErrorStackInfo.apply(self, arguments); + }); + + self._patchFunctionToString(); + + if (self._globalOptions.instrument && self._globalOptions.instrument.tryCatch) { + self._instrumentTryCatch(); + } + + if (self._globalOptions.autoBreadcrumbs) self._instrumentBreadcrumbs(); // Install all of the plugins + + self._drainPlugins(); + + self._isRavenInstalled = true; + } + + Error.stackTraceLimit = self._globalOptions.stackTraceLimit; + return this; + }, + + /* + * Set the DSN (can be called multiple time unlike config) + * + * @param {string} dsn The public Sentry DSN + */ + setDSN: function setDSN(dsn) { + var self = this, + uri = self._parseDSN(dsn), + lastSlash = uri.path.lastIndexOf('/'), + path = uri.path.substr(1, lastSlash); + + self._dsn = dsn; + self._globalKey = uri.user; + self._globalSecret = uri.pass && uri.pass.substr(1); + self._globalProject = uri.path.substr(lastSlash + 1); + self._globalServer = self._getGlobalServer(uri); + self._globalEndpoint = self._globalServer + '/' + path + 'api/' + self._globalProject + '/store/'; // Reset backoff state since we may be pointing at a + // new project/server + + this._resetBackoff(); + }, + + /* + * Wrap code within a context so Raven can capture errors + * reliably across domains that is executed immediately. + * + * @param {object} options A specific set of options for this context [optional] + * @param {function} func The callback to be immediately executed within the context + * @param {array} args An array of arguments to be called with the callback [optional] + */ + context: function context(options, func, args) { + if (isFunction(options)) { + args = func || []; + func = options; + options = undefined; + } + + return this.wrap(options, func).apply(this, args); + }, + + /* + * Wrap code within a context and returns back a new function to be executed + * + * @param {object} options A specific set of options for this context [optional] + * @param {function} func The function to be wrapped in a new context + * @param {function} func A function to call before the try/catch wrapper [optional, private] + * @return {function} The newly wrapped functions with a context + */ + wrap: function wrap(options, func, _before) { + var self = this; // 1 argument has been passed, and it's not a function + // so just return it + + if (isUndefined(func) && !isFunction(options)) { + return options; + } // options is optional + + + if (isFunction(options)) { + func = options; + options = undefined; + } // At this point, we've passed along 2 arguments, and the second one + // is not a function either, so we'll just return the second argument. + + + if (!isFunction(func)) { + return func; + } // We don't wanna wrap it twice! + + + try { + if (func.__raven__) { + return func; + } // If this has already been wrapped in the past, return that + + + if (func.__raven_wrapper__) { + return func.__raven_wrapper__; + } + } catch (e) { + // Just accessing custom props in some Selenium environments + // can cause a "Permission denied" exception (see raven-js#495). + // Bail on wrapping and return the function as-is (defers to window.onerror). + return func; + } + + function wrapped() { + var args = [], + i = arguments.length, + deep = !options || options && options.deep !== false; + + if (_before && isFunction(_before)) { + _before.apply(this, arguments); + } // Recursively wrap all of a function's arguments that are + // functions themselves. + + + while (i--) { + args[i] = deep ? self.wrap(options, arguments[i]) : arguments[i]; + } + + try { + // Attempt to invoke user-land function + // NOTE: If you are a Sentry user, and you are seeing this stack frame, it + // means Raven caught an error invoking your application code. This is + // expected behavior and NOT indicative of a bug with Raven.js. + return func.apply(this, args); + } catch (e) { + self._ignoreNextOnError(); + + self.captureException(e, options); + throw e; + } + } // copy over properties of the old function + + + for (var property in func) { + if (hasKey(func, property)) { + wrapped[property] = func[property]; + } + } + + wrapped.prototype = func.prototype; + func.__raven_wrapper__ = wrapped; // Signal that this function has been wrapped/filled already + // for both debugging and to prevent it to being wrapped/filled twice + + wrapped.__raven__ = true; + wrapped.__orig__ = func; + return wrapped; + }, + + /* + * Uninstalls the global error handler. + * + * @return {Raven} + */ + uninstall: function uninstall() { + tracekit.report.uninstall(); + + this._unpatchFunctionToString(); + + this._restoreBuiltIns(); + + this._restoreConsole(); + + Error.stackTraceLimit = this._originalErrorStackTraceLimit; + this._isRavenInstalled = false; + return this; + }, + + /* + * Manually capture an exception and send it over to Sentry + * + * @param {error} ex An exception to be logged + * @param {object} options A specific set of options for this error [optional] + * @return {Raven} + */ + captureException: function captureException(ex, options) { + options = objectMerge({ + trimHeadFrames: 0 + }, options ? options : {}); // Cases for sending ex as a message, rather than an exception + + var isNotError = !isError(ex); + var isNotErrorEvent = !isErrorEvent(ex); + var isErrorEventWithoutError = isErrorEvent(ex) && !ex.error; + + if (isNotError && isNotErrorEvent || isErrorEventWithoutError) { + return this.captureMessage(ex, objectMerge(options, { + stacktrace: true, + // if we fall back to captureMessage, default to attempting a new trace + trimHeadFrames: options.trimHeadFrames + 1 + })); + } // Get actual Error from ErrorEvent + + + if (isErrorEvent(ex)) ex = ex.error; // Store the raw exception object for potential debugging and introspection + + this._lastCapturedException = ex; // TraceKit.report will re-raise any exception passed to it, + // which means you have to wrap it in try/catch. Instead, we + // can wrap it here and only re-raise if TraceKit.report + // raises an exception different from the one we asked to + // report on. + + try { + var stack = tracekit.computeStackTrace(ex); + + this._handleStackInfo(stack, options); + } catch (ex1) { + if (ex !== ex1) { + throw ex1; + } + } + + return this; + }, + + /* + * Manually send a message to Sentry + * + * @param {string} msg A plain message to be captured in Sentry + * @param {object} options A specific set of options for this message [optional] + * @return {Raven} + */ + captureMessage: function captureMessage(msg, options) { + // config() automagically converts ignoreErrors from a list to a RegExp so we need to test for an + // early call; we'll error on the side of logging anything called before configuration since it's + // probably something you should see: + if (!!this._globalOptions.ignoreErrors.test && this._globalOptions.ignoreErrors.test(msg)) { + return; + } + + options = options || {}; + var data = objectMerge({ + message: msg + '' // Make sure it's actually a string + + }, options); + var ex; // Generate a "synthetic" stack trace from this point. + // NOTE: If you are a Sentry user, and you are seeing this stack frame, it is NOT indicative + // of a bug with Raven.js. Sentry generates synthetic traces either by configuration, + // or if it catches a thrown object without a "stack" property. + + try { + throw new Error(msg); + } catch (ex1) { + ex = ex1; + } // null exception name so `Error` isn't prefixed to msg + + + ex.name = null; + var stack = tracekit.computeStackTrace(ex); // stack[0] is `throw new Error(msg)` call itself, we are interested in the frame that was just before that, stack[1] + + var initialCall = isArray(stack.stack) && stack.stack[1]; + var fileurl = initialCall && initialCall.url || ''; + + if (!!this._globalOptions.ignoreUrls.test && this._globalOptions.ignoreUrls.test(fileurl)) { + return; + } + + if (!!this._globalOptions.whitelistUrls.test && !this._globalOptions.whitelistUrls.test(fileurl)) { + return; + } + + if (this._globalOptions.stacktrace || options && options.stacktrace) { + options = objectMerge({ + // fingerprint on msg, not stack trace (legacy behavior, could be + // revisited) + fingerprint: msg, + // since we know this is a synthetic trace, the top N-most frames + // MUST be from Raven.js, so mark them as in_app later by setting + // trimHeadFrames + trimHeadFrames: (options.trimHeadFrames || 0) + 1 + }, options); + + var frames = this._prepareFrames(stack, options); + + data.stacktrace = { + // Sentry expects frames oldest to newest + frames: frames.reverse() + }; + } // Fire away! + + + this._send(data); + + return this; + }, + captureBreadcrumb: function captureBreadcrumb(obj) { + var crumb = objectMerge({ + timestamp: now() / 1000 + }, obj); + + if (isFunction(this._globalOptions.breadcrumbCallback)) { + var result = this._globalOptions.breadcrumbCallback(crumb); + + if (isObject(result) && !isEmptyObject(result)) { + crumb = result; + } else if (result === false) { + return this; + } + } + + this._breadcrumbs.push(crumb); + + if (this._breadcrumbs.length > this._globalOptions.maxBreadcrumbs) { + this._breadcrumbs.shift(); + } + + return this; + }, + addPlugin: function addPlugin(plugin + /*arg1, arg2, ... argN*/ + ) { + var pluginArgs = [].slice.call(arguments, 1); + + this._plugins.push([plugin, pluginArgs]); + + if (this._isRavenInstalled) { + this._drainPlugins(); + } + + return this; + }, + + /* + * Set/clear a user to be sent along with the payload. + * + * @param {object} user An object representing user data [optional] + * @return {Raven} + */ + setUserContext: function setUserContext(user) { + // Intentionally do not merge here since that's an unexpected behavior. + this._globalContext.user = user; + return this; + }, + + /* + * Merge extra attributes to be sent along with the payload. + * + * @param {object} extra An object representing extra data [optional] + * @return {Raven} + */ + setExtraContext: function setExtraContext(extra) { + this._mergeContext('extra', extra); + + return this; + }, + + /* + * Merge tags to be sent along with the payload. + * + * @param {object} tags An object representing tags [optional] + * @return {Raven} + */ + setTagsContext: function setTagsContext(tags) { + this._mergeContext('tags', tags); + + return this; + }, + + /* + * Clear all of the context. + * + * @return {Raven} + */ + clearContext: function clearContext() { + this._globalContext = {}; + return this; + }, + + /* + * Get a copy of the current context. This cannot be mutated. + * + * @return {object} copy of context + */ + getContext: function getContext() { + // lol javascript + return JSON.parse(stringify_1(this._globalContext)); + }, + + /* + * Set environment of application + * + * @param {string} environment Typically something like 'production'. + * @return {Raven} + */ + setEnvironment: function setEnvironment(environment) { + this._globalOptions.environment = environment; + return this; + }, + + /* + * Set release version of application + * + * @param {string} release Typically something like a git SHA to identify version + * @return {Raven} + */ + setRelease: function setRelease(release) { + this._globalOptions.release = release; + return this; + }, + + /* + * Set the dataCallback option + * + * @param {function} callback The callback to run which allows the + * data blob to be mutated before sending + * @return {Raven} + */ + setDataCallback: function setDataCallback(callback) { + var original = this._globalOptions.dataCallback; + this._globalOptions.dataCallback = keepOriginalCallback(original, callback); + return this; + }, + + /* + * Set the breadcrumbCallback option + * + * @param {function} callback The callback to run which allows filtering + * or mutating breadcrumbs + * @return {Raven} + */ + setBreadcrumbCallback: function setBreadcrumbCallback(callback) { + var original = this._globalOptions.breadcrumbCallback; + this._globalOptions.breadcrumbCallback = keepOriginalCallback(original, callback); + return this; + }, + + /* + * Set the shouldSendCallback option + * + * @param {function} callback The callback to run which allows + * introspecting the blob before sending + * @return {Raven} + */ + setShouldSendCallback: function setShouldSendCallback(callback) { + var original = this._globalOptions.shouldSendCallback; + this._globalOptions.shouldSendCallback = keepOriginalCallback(original, callback); + return this; + }, + + /** + * Override the default HTTP transport mechanism that transmits data + * to the Sentry server. + * + * @param {function} transport Function invoked instead of the default + * `makeRequest` handler. + * + * @return {Raven} + */ + setTransport: function setTransport(transport) { + this._globalOptions.transport = transport; + return this; + }, + + /* + * Get the latest raw exception that was captured by Raven. + * + * @return {error} + */ + lastException: function lastException() { + return this._lastCapturedException; + }, + + /* + * Get the last event id + * + * @return {string} + */ + lastEventId: function lastEventId() { + return this._lastEventId; + }, + + /* + * Determine if Raven is setup and ready to go. + * + * @return {boolean} + */ + isSetup: function isSetup() { + if (!this._hasJSON) return false; // needs JSON support + + if (!this._globalServer) { + if (!this.ravenNotConfiguredError) { + this.ravenNotConfiguredError = true; + + this._logDebug('error', 'Error: Raven has not been configured.'); + } + + return false; + } + + return true; + }, + afterLoad: function afterLoad() { + // TODO: remove window dependence? + // Attempt to initialize Raven on load + var RavenConfig = _window$1.RavenConfig; + + if (RavenConfig) { + this.config(RavenConfig.dsn, RavenConfig.config).install(); + } + }, + showReportDialog: function showReportDialog(options) { + if (!_document // doesn't work without a document (React native) + ) return; + options = options || {}; + var lastEventId = options.eventId || this.lastEventId(); + + if (!lastEventId) { + throw new configError('Missing eventId'); + } + + var dsn = options.dsn || this._dsn; + + if (!dsn) { + throw new configError('Missing DSN'); + } + + var encode = encodeURIComponent; + var qs = ''; + qs += '?eventId=' + encode(lastEventId); + qs += '&dsn=' + encode(dsn); + var user = options.user || this._globalContext.user; + + if (user) { + if (user.name) qs += '&name=' + encode(user.name); + if (user.email) qs += '&email=' + encode(user.email); + } + + var globalServer = this._getGlobalServer(this._parseDSN(dsn)); + + var script = _document.createElement('script'); + + script.async = true; + script.src = globalServer + '/api/embed/error-page/' + qs; + + (_document.head || _document.body).appendChild(script); + }, + + /**** Private functions ****/ + _ignoreNextOnError: function _ignoreNextOnError() { + var self = this; + this._ignoreOnError += 1; + setTimeout(function () { + // onerror should trigger before setTimeout + self._ignoreOnError -= 1; + }); + }, + _triggerEvent: function _triggerEvent(eventType, options) { + // NOTE: `event` is a native browser thing, so let's avoid conflicting wiht it + var evt, key; + if (!this._hasDocument) return; + options = options || {}; + eventType = 'raven' + eventType.substr(0, 1).toUpperCase() + eventType.substr(1); + + if (_document.createEvent) { + evt = _document.createEvent('HTMLEvents'); + evt.initEvent(eventType, true, true); + } else { + evt = _document.createEventObject(); + evt.eventType = eventType; + } + + for (key in options) { + if (hasKey(options, key)) { + evt[key] = options[key]; + } + } + + if (_document.createEvent) { + // IE9 if standards + _document.dispatchEvent(evt); + } else { + // IE8 regardless of Quirks or Standards + // IE9 if quirks + try { + _document.fireEvent('on' + evt.eventType.toLowerCase(), evt); + } catch (e) {// Do nothing + } + } + }, + + /** + * Wraps addEventListener to capture UI breadcrumbs + * @param evtName the event name (e.g. "click") + * @returns {Function} + * @private + */ + _breadcrumbEventHandler: function _breadcrumbEventHandler(evtName) { + var self = this; + return function (evt) { + // reset keypress timeout; e.g. triggering a 'click' after + // a 'keypress' will reset the keypress debounce so that a new + // set of keypresses can be recorded + self._keypressTimeout = null; // It's possible this handler might trigger multiple times for the same + // event (e.g. event propagation through node ancestors). Ignore if we've + // already captured the event. + + if (self._lastCapturedEvent === evt) return; + self._lastCapturedEvent = evt; // try/catch both: + // - accessing evt.target (see getsentry/raven-js#838, #768) + // - `htmlTreeAsString` because it's complex, and just accessing the DOM incorrectly + // can throw an exception in some circumstances. + + var target; + + try { + target = htmlTreeAsString(evt.target); + } catch (e) { + target = ''; + } + + self.captureBreadcrumb({ + category: 'ui.' + evtName, + // e.g. ui.click, ui.input + message: target + }); + }; + }, + + /** + * Wraps addEventListener to capture keypress UI events + * @returns {Function} + * @private + */ + _keypressEventHandler: function _keypressEventHandler() { + var self = this, + debounceDuration = 1000; // milliseconds + // TODO: if somehow user switches keypress target before + // debounce timeout is triggered, we will only capture + // a single breadcrumb from the FIRST target (acceptable?) + + return function (evt) { + var target; + + try { + target = evt.target; + } catch (e) { + // just accessing event properties can throw an exception in some rare circumstances + // see: https://github.com/getsentry/raven-js/issues/838 + return; + } + + var tagName = target && target.tagName; // only consider keypress events on actual input elements + // this will disregard keypresses targeting body (e.g. tabbing + // through elements, hotkeys, etc) + + if (!tagName || tagName !== 'INPUT' && tagName !== 'TEXTAREA' && !target.isContentEditable) return; // record first keypress in a series, but ignore subsequent + // keypresses until debounce clears + + var timeout = self._keypressTimeout; + + if (!timeout) { + self._breadcrumbEventHandler('input')(evt); + } + + clearTimeout(timeout); + self._keypressTimeout = setTimeout(function () { + self._keypressTimeout = null; + }, debounceDuration); + }; + }, + + /** + * Captures a breadcrumb of type "navigation", normalizing input URLs + * @param to the originating URL + * @param from the target URL + * @private + */ + _captureUrlChange: function _captureUrlChange(from, to) { + var parsedLoc = parseUrl(this._location.href); + var parsedTo = parseUrl(to); + var parsedFrom = parseUrl(from); // because onpopstate only tells you the "new" (to) value of location.href, and + // not the previous (from) value, we need to track the value of the current URL + // state ourselves + + this._lastHref = to; // Use only the path component of the URL if the URL matches the current + // document (almost all the time when using pushState) + + if (parsedLoc.protocol === parsedTo.protocol && parsedLoc.host === parsedTo.host) to = parsedTo.relative; + if (parsedLoc.protocol === parsedFrom.protocol && parsedLoc.host === parsedFrom.host) from = parsedFrom.relative; + this.captureBreadcrumb({ + category: 'navigation', + data: { + to: to, + from: from + } + }); + }, + _patchFunctionToString: function _patchFunctionToString() { + var self = this; + self._originalFunctionToString = Function.prototype.toString; // eslint-disable-next-line no-extend-native + + Function.prototype.toString = function () { + if (typeof this === 'function' && this.__raven__) { + return self._originalFunctionToString.apply(this.__orig__, arguments); + } + + return self._originalFunctionToString.apply(this, arguments); + }; + }, + _unpatchFunctionToString: function _unpatchFunctionToString() { + if (this._originalFunctionToString) { + // eslint-disable-next-line no-extend-native + Function.prototype.toString = this._originalFunctionToString; + } + }, + + /** + * Wrap timer functions and event targets to catch errors and provide + * better metadata. + */ + _instrumentTryCatch: function _instrumentTryCatch() { + var self = this; + var wrappedBuiltIns = self._wrappedBuiltIns; + + function wrapTimeFn(orig) { + return function (fn, t) { + // preserve arity + // Make a copy of the arguments to prevent deoptimization + // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments + var args = new Array(arguments.length); + + for (var i = 0; i < args.length; ++i) { + args[i] = arguments[i]; + } + + var originalCallback = args[0]; + + if (isFunction(originalCallback)) { + args[0] = self.wrap(originalCallback); + } // IE < 9 doesn't support .call/.apply on setInterval/setTimeout, but it + // also supports only two arguments and doesn't care what this is, so we + // can just call the original function directly. + + + if (orig.apply) { + return orig.apply(this, args); + } else { + return orig(args[0], args[1]); + } + }; + } + + var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; + + function wrapEventTarget(global) { + var proto = _window$1[global] && _window$1[global].prototype; + + if (proto && proto.hasOwnProperty && proto.hasOwnProperty('addEventListener')) { + fill(proto, 'addEventListener', function (orig) { + return function (evtName, fn, capture, secure) { + // preserve arity + try { + if (fn && fn.handleEvent) { + fn.handleEvent = self.wrap(fn.handleEvent); + } + } catch (err) {} // can sometimes get 'Permission denied to access property "handle Event' + // More breadcrumb DOM capture ... done here and not in `_instrumentBreadcrumbs` + // so that we don't have more than one wrapper function + + + var before, clickHandler, keypressHandler; + + if (autoBreadcrumbs && autoBreadcrumbs.dom && (global === 'EventTarget' || global === 'Node')) { + // NOTE: generating multiple handlers per addEventListener invocation, should + // revisit and verify we can just use one (almost certainly) + clickHandler = self._breadcrumbEventHandler('click'); + keypressHandler = self._keypressEventHandler(); + + before = function before(evt) { + // need to intercept every DOM event in `before` argument, in case that + // same wrapped method is re-used for different events (e.g. mousemove THEN click) + // see #724 + if (!evt) return; + var eventType; + + try { + eventType = evt.type; + } catch (e) { + // just accessing event properties can throw an exception in some rare circumstances + // see: https://github.com/getsentry/raven-js/issues/838 + return; + } + + if (eventType === 'click') return clickHandler(evt);else if (eventType === 'keypress') return keypressHandler(evt); + }; + } + + return orig.call(this, evtName, self.wrap(fn, undefined, before), capture, secure); + }; + }, wrappedBuiltIns); + fill(proto, 'removeEventListener', function (orig) { + return function (evt, fn, capture, secure) { + try { + fn = fn && (fn.__raven_wrapper__ ? fn.__raven_wrapper__ : fn); + } catch (e) {// ignore, accessing __raven_wrapper__ will throw in some Selenium environments + } + + return orig.call(this, evt, fn, capture, secure); + }; + }, wrappedBuiltIns); + } + } + + fill(_window$1, 'setTimeout', wrapTimeFn, wrappedBuiltIns); + fill(_window$1, 'setInterval', wrapTimeFn, wrappedBuiltIns); + + if (_window$1.requestAnimationFrame) { + fill(_window$1, 'requestAnimationFrame', function (orig) { + return function (cb) { + return orig(self.wrap(cb)); + }; + }, wrappedBuiltIns); + } // event targets borrowed from bugsnag-js: + // https://github.com/bugsnag/bugsnag-js/blob/master/src/bugsnag.js#L666 + + + var eventTargets = ['EventTarget', 'Window', 'Node', 'ApplicationCache', 'AudioTrackList', 'ChannelMergerNode', 'CryptoOperation', 'EventSource', 'FileReader', 'HTMLUnknownElement', 'IDBDatabase', 'IDBRequest', 'IDBTransaction', 'KeyOperation', 'MediaController', 'MessagePort', 'ModalWindow', 'Notification', 'SVGElementInstance', 'Screen', 'TextTrack', 'TextTrackCue', 'TextTrackList', 'WebSocket', 'WebSocketWorker', 'Worker', 'XMLHttpRequest', 'XMLHttpRequestEventTarget', 'XMLHttpRequestUpload']; + + for (var i = 0; i < eventTargets.length; i++) { + wrapEventTarget(eventTargets[i]); + } + }, + + /** + * Instrument browser built-ins w/ breadcrumb capturing + * - XMLHttpRequests + * - DOM interactions (click/typing) + * - window.location changes + * - console + * + * Can be disabled or individually configured via the `autoBreadcrumbs` config option + */ + _instrumentBreadcrumbs: function _instrumentBreadcrumbs() { + var self = this; + var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; + var wrappedBuiltIns = self._wrappedBuiltIns; + + function wrapProp(prop, xhr) { + if (prop in xhr && isFunction(xhr[prop])) { + fill(xhr, prop, function (orig) { + return self.wrap(orig); + }); // intentionally don't track filled methods on XHR instances + } + } + + if (autoBreadcrumbs.xhr && 'XMLHttpRequest' in _window$1) { + var xhrproto = XMLHttpRequest.prototype; + fill(xhrproto, 'open', function (origOpen) { + return function (method, url) { + // preserve arity + // if Sentry key appears in URL, don't capture + if (isString(url) && url.indexOf(self._globalKey) === -1) { + this.__raven_xhr = { + method: method, + url: url, + status_code: null + }; + } + + return origOpen.apply(this, arguments); + }; + }, wrappedBuiltIns); + fill(xhrproto, 'send', function (origSend) { + return function () { + // preserve arity + var xhr = this; + + function onreadystatechangeHandler() { + if (xhr.__raven_xhr && xhr.readyState === 4) { + try { + // touching statusCode in some platforms throws + // an exception + xhr.__raven_xhr.status_code = xhr.status; + } catch (e) { + /* do nothing */ + } + + self.captureBreadcrumb({ + type: 'http', + category: 'xhr', + data: xhr.__raven_xhr + }); + } + } + + var props = ['onload', 'onerror', 'onprogress']; + + for (var j = 0; j < props.length; j++) { + wrapProp(props[j], xhr); + } + + if ('onreadystatechange' in xhr && isFunction(xhr.onreadystatechange)) { + fill(xhr, 'onreadystatechange', function (orig) { + return self.wrap(orig, undefined, onreadystatechangeHandler); + } + /* intentionally don't track this instrumentation */ + ); + } else { + // if onreadystatechange wasn't actually set by the page on this xhr, we + // are free to set our own and capture the breadcrumb + xhr.onreadystatechange = onreadystatechangeHandler; + } + + return origSend.apply(this, arguments); + }; + }, wrappedBuiltIns); + } + + if (autoBreadcrumbs.xhr && supportsFetch()) { + fill(_window$1, 'fetch', function (origFetch) { + return function () { + // preserve arity + // Make a copy of the arguments to prevent deoptimization + // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments + var args = new Array(arguments.length); + + for (var i = 0; i < args.length; ++i) { + args[i] = arguments[i]; + } + + var fetchInput = args[0]; + var method = 'GET'; + var url; + + if (typeof fetchInput === 'string') { + url = fetchInput; + } else if ('Request' in _window$1 && fetchInput instanceof _window$1.Request) { + url = fetchInput.url; + + if (fetchInput.method) { + method = fetchInput.method; + } + } else { + url = '' + fetchInput; + } // if Sentry key appears in URL, don't capture, as it's our own request + + + if (url.indexOf(self._globalKey) !== -1) { + return origFetch.apply(this, args); + } + + if (args[1] && args[1].method) { + method = args[1].method; + } + + var fetchData = { + method: method, + url: url, + status_code: null + }; + return origFetch.apply(this, args).then(function (response) { + fetchData.status_code = response.status; + self.captureBreadcrumb({ + type: 'http', + category: 'fetch', + data: fetchData + }); + return response; + }); + }; + }, wrappedBuiltIns); + } // Capture breadcrumbs from any click that is unhandled / bubbled up all the way + // to the document. Do this before we instrument addEventListener. + + + if (autoBreadcrumbs.dom && this._hasDocument) { + if (_document.addEventListener) { + _document.addEventListener('click', self._breadcrumbEventHandler('click'), false); + + _document.addEventListener('keypress', self._keypressEventHandler(), false); + } else { + // IE8 Compatibility + _document.attachEvent('onclick', self._breadcrumbEventHandler('click')); + + _document.attachEvent('onkeypress', self._keypressEventHandler()); + } + } // record navigation (URL) changes + // NOTE: in Chrome App environment, touching history.pushState, *even inside + // a try/catch block*, will cause Chrome to output an error to console.error + // borrowed from: https://github.com/angular/angular.js/pull/13945/files + + + var chrome = _window$1.chrome; + var isChromePackagedApp = chrome && chrome.app && chrome.app.runtime; + var hasPushAndReplaceState = !isChromePackagedApp && _window$1.history && history.pushState && history.replaceState; + + if (autoBreadcrumbs.location && hasPushAndReplaceState) { + // TODO: remove onpopstate handler on uninstall() + var oldOnPopState = _window$1.onpopstate; + + _window$1.onpopstate = function () { + var currentHref = self._location.href; + + self._captureUrlChange(self._lastHref, currentHref); + + if (oldOnPopState) { + return oldOnPopState.apply(this, arguments); + } + }; + + var historyReplacementFunction = function historyReplacementFunction(origHistFunction) { + // note history.pushState.length is 0; intentionally not declaring + // params to preserve 0 arity + return function () + /* state, title, url */ + { + var url = arguments.length > 2 ? arguments[2] : undefined; // url argument is optional + + if (url) { + // coerce to string (this is what pushState does) + self._captureUrlChange(self._lastHref, url + ''); + } + + return origHistFunction.apply(this, arguments); + }; + }; + + fill(history, 'pushState', historyReplacementFunction, wrappedBuiltIns); + fill(history, 'replaceState', historyReplacementFunction, wrappedBuiltIns); + } + + if (autoBreadcrumbs.console && 'console' in _window$1 && console.log) { + // console + var consoleMethodCallback = function consoleMethodCallback(msg, data) { + self.captureBreadcrumb({ + message: msg, + level: data.level, + category: 'console' + }); + }; + + each(['debug', 'info', 'warn', 'error', 'log'], function (_, level) { + wrapConsoleMethod(console, level, consoleMethodCallback); + }); + } + }, + _restoreBuiltIns: function _restoreBuiltIns() { + // restore any wrapped builtins + var builtin; + + while (this._wrappedBuiltIns.length) { + builtin = this._wrappedBuiltIns.shift(); + var obj = builtin[0], + name = builtin[1], + orig = builtin[2]; + obj[name] = orig; + } + }, + _restoreConsole: function _restoreConsole() { + // eslint-disable-next-line guard-for-in + for (var method in this._originalConsoleMethods) { + this._originalConsole[method] = this._originalConsoleMethods[method]; + } + }, + _drainPlugins: function _drainPlugins() { + var self = this; // FIX ME TODO + + each(this._plugins, function (_, plugin) { + var installer = plugin[0]; + var args = plugin[1]; + installer.apply(self, [self].concat(args)); + }); + }, + _parseDSN: function _parseDSN(str) { + var m = dsnPattern.exec(str), + dsn = {}, + i = 7; + + try { + while (i--) { + dsn[dsnKeys[i]] = m[i] || ''; + } + } catch (e) { + throw new configError('Invalid DSN: ' + str); + } + + if (dsn.pass && !this._globalOptions.allowSecretKey) { + throw new configError('Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key'); + } + + return dsn; + }, + _getGlobalServer: function _getGlobalServer(uri) { + // assemble the endpoint from the uri pieces + var globalServer = '//' + uri.host + (uri.port ? ':' + uri.port : ''); + + if (uri.protocol) { + globalServer = uri.protocol + ':' + globalServer; + } + + return globalServer; + }, + _handleOnErrorStackInfo: function _handleOnErrorStackInfo() { + // if we are intentionally ignoring errors via onerror, bail out + if (!this._ignoreOnError) { + this._handleStackInfo.apply(this, arguments); + } + }, + _handleStackInfo: function _handleStackInfo(stackInfo, options) { + var frames = this._prepareFrames(stackInfo, options); + + this._triggerEvent('handle', { + stackInfo: stackInfo, + options: options + }); + + this._processException(stackInfo.name, stackInfo.message, stackInfo.url, stackInfo.lineno, frames, options); + }, + _prepareFrames: function _prepareFrames(stackInfo, options) { + var self = this; + var frames = []; + + if (stackInfo.stack && stackInfo.stack.length) { + each(stackInfo.stack, function (i, stack) { + var frame = self._normalizeFrame(stack, stackInfo.url); + + if (frame) { + frames.push(frame); + } + }); // e.g. frames captured via captureMessage throw + + if (options && options.trimHeadFrames) { + for (var j = 0; j < options.trimHeadFrames && j < frames.length; j++) { + frames[j].in_app = false; + } + } + } + + frames = frames.slice(0, this._globalOptions.stackTraceLimit); + return frames; + }, + _normalizeFrame: function _normalizeFrame(frame, stackInfoUrl) { + // normalize the frames data + var normalized = { + filename: frame.url, + lineno: frame.line, + colno: frame.column, + function: frame.func || '?' + }; // Case when we don't have any information about the error + // E.g. throwing a string or raw object, instead of an `Error` in Firefox + // Generating synthetic error doesn't add any value here + // + // We should probably somehow let a user know that they should fix their code + + if (!frame.url) { + normalized.filename = stackInfoUrl; // fallback to whole stacks url from onerror handler + } + + normalized.in_app = !( // determine if an exception came from outside of our app + // first we check the global includePaths list. + !!this._globalOptions.includePaths.test && !this._globalOptions.includePaths.test(normalized.filename) || // Now we check for fun, if the function name is Raven or TraceKit + /(Raven|TraceKit)\./.test(normalized['function']) || // finally, we do a last ditch effort and check for raven.min.js + /raven\.(min\.)?js$/.test(normalized.filename)); + return normalized; + }, + _processException: function _processException(type, message, fileurl, lineno, frames, options) { + var prefixedMessage = (type ? type + ': ' : '') + (message || ''); + + if (!!this._globalOptions.ignoreErrors.test && (this._globalOptions.ignoreErrors.test(message) || this._globalOptions.ignoreErrors.test(prefixedMessage))) { + return; + } + + var stacktrace; + + if (frames && frames.length) { + fileurl = frames[0].filename || fileurl; // Sentry expects frames oldest to newest + // and JS sends them as newest to oldest + + frames.reverse(); + stacktrace = { + frames: frames + }; + } else if (fileurl) { + stacktrace = { + frames: [{ + filename: fileurl, + lineno: lineno, + in_app: true + }] + }; + } + + if (!!this._globalOptions.ignoreUrls.test && this._globalOptions.ignoreUrls.test(fileurl)) { + return; + } + + if (!!this._globalOptions.whitelistUrls.test && !this._globalOptions.whitelistUrls.test(fileurl)) { + return; + } + + var data = objectMerge({ + // sentry.interfaces.Exception + exception: { + values: [{ + type: type, + value: message, + stacktrace: stacktrace + }] + }, + culprit: fileurl + }, options); // Fire away! + + this._send(data); + }, + _trimPacket: function _trimPacket(data) { + // For now, we only want to truncate the two different messages + // but this could/should be expanded to just trim everything + var max = this._globalOptions.maxMessageLength; + + if (data.message) { + data.message = truncate(data.message, max); + } + + if (data.exception) { + var exception = data.exception.values[0]; + exception.value = truncate(exception.value, max); + } + + var request = data.request; + + if (request) { + if (request.url) { + request.url = truncate(request.url, this._globalOptions.maxUrlLength); + } + + if (request.Referer) { + request.Referer = truncate(request.Referer, this._globalOptions.maxUrlLength); + } + } + + if (data.breadcrumbs && data.breadcrumbs.values) this._trimBreadcrumbs(data.breadcrumbs); + return data; + }, + + /** + * Truncate breadcrumb values (right now just URLs) + */ + _trimBreadcrumbs: function _trimBreadcrumbs(breadcrumbs) { + // known breadcrumb properties with urls + // TODO: also consider arbitrary prop values that start with (https?)?:// + var urlProps = ['to', 'from', 'url'], + urlProp, + crumb, + data; + + for (var i = 0; i < breadcrumbs.values.length; ++i) { + crumb = breadcrumbs.values[i]; + if (!crumb.hasOwnProperty('data') || !isObject(crumb.data) || objectFrozen(crumb.data)) continue; + data = objectMerge({}, crumb.data); + + for (var j = 0; j < urlProps.length; ++j) { + urlProp = urlProps[j]; + + if (data.hasOwnProperty(urlProp) && data[urlProp]) { + data[urlProp] = truncate(data[urlProp], this._globalOptions.maxUrlLength); + } + } + + breadcrumbs.values[i].data = data; + } + }, + _getHttpData: function _getHttpData() { + if (!this._hasNavigator && !this._hasDocument) return; + var httpData = {}; + + if (this._hasNavigator && _navigator.userAgent) { + httpData.headers = { + 'User-Agent': navigator.userAgent + }; + } // Check in `window` instead of `document`, as we may be in ServiceWorker environment + + + if (_window$1.location && _window$1.location.href) { + httpData.url = _window$1.location.href; + } + + if (this._hasDocument && _document.referrer) { + if (!httpData.headers) httpData.headers = {}; + httpData.headers.Referer = _document.referrer; + } + + return httpData; + }, + _resetBackoff: function _resetBackoff() { + this._backoffDuration = 0; + this._backoffStart = null; + }, + _shouldBackoff: function _shouldBackoff() { + return this._backoffDuration && now() - this._backoffStart < this._backoffDuration; + }, + + /** + * Returns true if the in-process data payload matches the signature + * of the previously-sent data + * + * NOTE: This has to be done at this level because TraceKit can generate + * data from window.onerror WITHOUT an exception object (IE8, IE9, + * other old browsers). This can take the form of an "exception" + * data object with a single frame (derived from the onerror args). + */ + _isRepeatData: function _isRepeatData(current) { + var last = this._lastData; + if (!last || current.message !== last.message || // defined for captureMessage + current.culprit !== last.culprit // defined for captureException/onerror + ) return false; // Stacktrace interface (i.e. from captureMessage) + + if (current.stacktrace || last.stacktrace) { + return isSameStacktrace(current.stacktrace, last.stacktrace); + } else if (current.exception || last.exception) { + // Exception interface (i.e. from captureException/onerror) + return isSameException(current.exception, last.exception); + } + + return true; + }, + _setBackoffState: function _setBackoffState(request) { + // If we are already in a backoff state, don't change anything + if (this._shouldBackoff()) { + return; + } + + var status = request.status; // 400 - project_id doesn't exist or some other fatal + // 401 - invalid/revoked dsn + // 429 - too many requests + + if (!(status === 400 || status === 401 || status === 429)) return; + var retry; + + try { + // If Retry-After is not in Access-Control-Expose-Headers, most + // browsers will throw an exception trying to access it + if (supportsFetch()) { + retry = request.headers.get('Retry-After'); + } else { + retry = request.getResponseHeader('Retry-After'); + } // Retry-After is returned in seconds + + + retry = parseInt(retry, 10) * 1000; + } catch (e) { + /* eslint no-empty:0 */ + } + + this._backoffDuration = retry ? // If Sentry server returned a Retry-After value, use it + retry : // Otherwise, double the last backoff duration (starts at 1 sec) + this._backoffDuration * 2 || 1000; + this._backoffStart = now(); + }, + _send: function _send(data) { + var globalOptions = this._globalOptions; + + var baseData = { + project: this._globalProject, + logger: globalOptions.logger, + platform: 'javascript' + }, + httpData = this._getHttpData(); + + if (httpData) { + baseData.request = httpData; + } // HACK: delete `trimHeadFrames` to prevent from appearing in outbound payload + + + if (data.trimHeadFrames) delete data.trimHeadFrames; + data = objectMerge(baseData, data); // Merge in the tags and extra separately since objectMerge doesn't handle a deep merge + + data.tags = objectMerge(objectMerge({}, this._globalContext.tags), data.tags); + data.extra = objectMerge(objectMerge({}, this._globalContext.extra), data.extra); // Send along our own collected metadata with extra + + data.extra['session:duration'] = now() - this._startTime; + + if (this._breadcrumbs && this._breadcrumbs.length > 0) { + // intentionally make shallow copy so that additions + // to breadcrumbs aren't accidentally sent in this request + data.breadcrumbs = { + values: [].slice.call(this._breadcrumbs, 0) + }; + } + + if (this._globalContext.user) { + // sentry.interfaces.User + data.user = this._globalContext.user; + } // Include the environment if it's defined in globalOptions + + + if (globalOptions.environment) data.environment = globalOptions.environment; // Include the release if it's defined in globalOptions + + if (globalOptions.release) data.release = globalOptions.release; // Include server_name if it's defined in globalOptions + + if (globalOptions.serverName) data.server_name = globalOptions.serverName; // Cleanup empty properties before sending them to the server + + Object.keys(data).forEach(function (key) { + if (data[key] == null || data[key] === '' || isEmptyObject(data[key])) { + delete data[key]; + } + }); + + if (isFunction(globalOptions.dataCallback)) { + data = globalOptions.dataCallback(data) || data; + } // Why?????????? + + + if (!data || isEmptyObject(data)) { + return; + } // Check if the request should be filtered or not + + + if (isFunction(globalOptions.shouldSendCallback) && !globalOptions.shouldSendCallback(data)) { + return; + } // Backoff state: Sentry server previously responded w/ an error (e.g. 429 - too many requests), + // so drop requests until "cool-off" period has elapsed. + + + if (this._shouldBackoff()) { + this._logDebug('warn', 'Raven dropped error due to backoff: ', data); + + return; + } + + if (typeof globalOptions.sampleRate === 'number') { + if (Math.random() < globalOptions.sampleRate) { + this._sendProcessedPayload(data); + } + } else { + this._sendProcessedPayload(data); + } + }, + _getUuid: function _getUuid() { + return uuid4(); + }, + _sendProcessedPayload: function _sendProcessedPayload(data, callback) { + var self = this; + var globalOptions = this._globalOptions; + if (!this.isSetup()) return; // Try and clean up the packet before sending by truncating long values + + data = this._trimPacket(data); // ideally duplicate error testing should occur *before* dataCallback/shouldSendCallback, + // but this would require copying an un-truncated copy of the data packet, which can be + // arbitrarily deep (extra_data) -- could be worthwhile? will revisit + + if (!this._globalOptions.allowDuplicates && this._isRepeatData(data)) { + this._logDebug('warn', 'Raven dropped repeat event: ', data); + + return; + } // Send along an event_id if not explicitly passed. + // This event_id can be used to reference the error within Sentry itself. + // Set lastEventId after we know the error should actually be sent + + + this._lastEventId = data.event_id || (data.event_id = this._getUuid()); // Store outbound payload after trim + + this._lastData = data; + + this._logDebug('debug', 'Raven about to send:', data); + + var auth = { + sentry_version: '7', + sentry_client: 'raven-js/' + this.VERSION, + sentry_key: this._globalKey + }; + + if (this._globalSecret) { + auth.sentry_secret = this._globalSecret; + } + + var exception = data.exception && data.exception.values[0]; // only capture 'sentry' breadcrumb is autoBreadcrumbs is truthy + + if (this._globalOptions.autoBreadcrumbs && this._globalOptions.autoBreadcrumbs.sentry) { + this.captureBreadcrumb({ + category: 'sentry', + message: exception ? (exception.type ? exception.type + ': ' : '') + exception.value : data.message, + event_id: data.event_id, + level: data.level || 'error' // presume error unless specified + + }); + } + + var url = this._globalEndpoint; + + (globalOptions.transport || this._makeRequest).call(this, { + url: url, + auth: auth, + data: data, + options: globalOptions, + onSuccess: function success() { + self._resetBackoff(); + + self._triggerEvent('success', { + data: data, + src: url + }); + + callback && callback(); + }, + onError: function failure(error) { + self._logDebug('error', 'Raven transport failed to send: ', error); + + if (error.request) { + self._setBackoffState(error.request); + } + + self._triggerEvent('failure', { + data: data, + src: url + }); + + error = error || new Error('Raven send failed (no additional details provided)'); + callback && callback(error); + } + }); + }, + _makeRequest: function _makeRequest(opts) { + // Auth is intentionally sent as part of query string (NOT as custom HTTP header) to avoid preflight CORS requests + var url = opts.url + '?' + urlencode(opts.auth); + var evaluatedHeaders = null; + var evaluatedFetchParameters = {}; + + if (opts.options.headers) { + evaluatedHeaders = this._evaluateHash(opts.options.headers); + } + + if (opts.options.fetchParameters) { + evaluatedFetchParameters = this._evaluateHash(opts.options.fetchParameters); + } + + if (supportsFetch()) { + evaluatedFetchParameters.body = stringify_1(opts.data); + var defaultFetchOptions = objectMerge({}, this._fetchDefaults); + var fetchOptions = objectMerge(defaultFetchOptions, evaluatedFetchParameters); + + if (evaluatedHeaders) { + fetchOptions.headers = evaluatedHeaders; + } + + return _window$1.fetch(url, fetchOptions).then(function (response) { + if (response.ok) { + opts.onSuccess && opts.onSuccess(); + } else { + var error = new Error('Sentry error code: ' + response.status); // It's called request only to keep compatibility with XHR interface + // and not add more redundant checks in setBackoffState method + + error.request = response; + opts.onError && opts.onError(error); + } + })['catch'](function () { + opts.onError && opts.onError(new Error('Sentry error code: network unavailable')); + }); + } + + var request = _window$1.XMLHttpRequest && new _window$1.XMLHttpRequest(); + if (!request) return; // if browser doesn't support CORS (e.g. IE7), we are out of luck + + var hasCORS = 'withCredentials' in request || typeof XDomainRequest !== 'undefined'; + if (!hasCORS) return; + + if ('withCredentials' in request) { + request.onreadystatechange = function () { + if (request.readyState !== 4) { + return; + } else if (request.status === 200) { + opts.onSuccess && opts.onSuccess(); + } else if (opts.onError) { + var err = new Error('Sentry error code: ' + request.status); + err.request = request; + opts.onError(err); + } + }; + } else { + request = new XDomainRequest(); // xdomainrequest cannot go http -> https (or vice versa), + // so always use protocol relative + + url = url.replace(/^https?:/, ''); // onreadystatechange not supported by XDomainRequest + + if (opts.onSuccess) { + request.onload = opts.onSuccess; + } + + if (opts.onError) { + request.onerror = function () { + var err = new Error('Sentry error code: XDomainRequest'); + err.request = request; + opts.onError(err); + }; + } + } + + request.open('POST', url); + + if (evaluatedHeaders) { + each(evaluatedHeaders, function (key, value) { + request.setRequestHeader(key, value); + }); + } + + request.send(stringify_1(opts.data)); + }, + _evaluateHash: function _evaluateHash(hash) { + var evaluated = {}; + + for (var key in hash) { + if (hash.hasOwnProperty(key)) { + var value = hash[key]; + evaluated[key] = typeof value === 'function' ? value() : value; + } + } + + return evaluated; + }, + _logDebug: function _logDebug(level) { + if (this._originalConsoleMethods[level] && this.debug) { + // In IE<10 console methods do not have their own 'apply' method + Function.prototype.apply.call(this._originalConsoleMethods[level], this._originalConsole, [].slice.call(arguments, 1)); + } + }, + _mergeContext: function _mergeContext(key, context) { + if (isUndefined(context)) { + delete this._globalContext[key]; + } else { + this._globalContext[key] = objectMerge(this._globalContext[key] || {}, context); + } + } +}; // Deprecations + +Raven$1.prototype.setUser = Raven$1.prototype.setUserContext; +Raven$1.prototype.setReleaseContext = Raven$1.prototype.setRelease; +var raven = Raven$1; + +/** + * Enforces a single instance of the Raven client, and the + * main entry point for Raven. If you are a consumer of the + * Raven library, you SHOULD load this file (vs raven.js). + **/ +// This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) + +var _window = typeof window !== 'undefined' ? window : typeof commonjsGlobal !== 'undefined' ? commonjsGlobal : typeof self !== 'undefined' ? self : {}; + +var _Raven = _window.Raven; +var Raven = new raven(); +/* + * Allow multiple versions of Raven to be installed. + * Strip Raven from the global context and returns the instance. + * + * @return {Raven} + */ + +Raven.noConflict = function () { + _window.Raven = _Raven; + return Raven; +}; + +Raven.afterLoad(); +var singleton = Raven; + +/** + * console plugin + * + * Monkey patches console.* calls into Sentry messages with + * their appropriate log levels. (Experimental) + * + * Options: + * + * `levels`: An array of levels (methods on `console`) to report to Sentry. + * Defaults to debug, info, warn, and error. + */ + +var wrapConsoleMethod$1 = console$1.wrapMethod; + +function consolePlugin(Raven, console, pluginOptions) { + console = console || window.console || {}; + pluginOptions = pluginOptions || {}; + var logLevels = pluginOptions.levels || ['debug', 'info', 'warn', 'error']; + if ('assert' in console) logLevels.push('assert'); + + var callback = function callback(msg, data) { + Raven.captureMessage(msg, data); + }; + + var level = logLevels.pop(); + + while (level) { + wrapConsoleMethod$1(console, level, callback); + level = logLevels.pop(); + } +} + +var console$3 = consolePlugin; + +/** + * Vue.js 2.0 plugin + * + */ +function formatComponentName(vm) { + if (vm.$root === vm) { + return 'root instance'; + } + + var name = vm._isVue ? vm.$options.name || vm.$options._componentTag : vm.name; + return (name ? 'component <' + name + '>' : 'anonymous component') + (vm._isVue && vm.$options.__file ? ' at ' + vm.$options.__file : ''); +} + +function vuePlugin(Raven, Vue) { + Vue = Vue || window.Vue; // quit if Vue isn't on the page + + if (!Vue || !Vue.config) return; + var _oldOnError = Vue.config.errorHandler; + + Vue.config.errorHandler = function VueErrorHandler(error, vm, info) { + var metaData = {}; // vm and lifecycleHook are not always available + + if (Object.prototype.toString.call(vm) === '[object Object]') { + metaData.componentName = formatComponentName(vm); + metaData.propsData = vm.$options.propsData; + } + + if (typeof info !== 'undefined') { + metaData.lifecycleHook = info; + } + + Raven.captureException(error, { + extra: metaData + }); + + if (typeof _oldOnError === 'function') { + _oldOnError.call(this, error, vm, info); + } + }; +} + +var vue = vuePlugin; + +/* This file was generated by './scripts/generate-plugin-combinations.js'! */ + +singleton.addPlugin(console$3).addPlugin(vue); +var console_vue = {}; + +return console_vue; + +}))); diff --git a/dist/console,vue/raven.min.js b/dist/console,vue/raven.min.js new file mode 100644 index 000000000000..62b450fa86f6 --- /dev/null +++ b/dist/console,vue/raven.min.js @@ -0,0 +1,3 @@ +/*! Raven.js 3.22.2 (1b6187b) | github.com/getsentry/raven-js */ +!function(a,b){"object"==typeof exports&&"undefined"!=typeof module?module.exports=b():"function"==typeof define&&define.amd?define(b):a.Raven=b()}(this,function(){"use strict";function a(a,b){return b={exports:{}},a(b,b.exports),b.exports}function b(a){return(b="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(a){return typeof a}:function(a){return a&&"function"==typeof Symbol&&a.constructor===Symbol&&a!==Symbol.prototype?"symbol":typeof a})(a)}function c(a){return"object"===b(a)&&null!==a}function d(a){switch({}.toString.call(a)){case"[object Error]":return!0;case"[object Exception]":return!0;case"[object DOMException]":return!0;default:return a instanceof Error}}function e(a){return l()&&"[object ErrorEvent]"==={}.toString.call(a)}function f(a){return void 0===a}function g(a){return"function"==typeof a}function h(a){return"[object Object]"===Object.prototype.toString.call(a)}function i(a){return"[object String]"===Object.prototype.toString.call(a)}function j(a){return"[object Array]"===Object.prototype.toString.call(a)}function k(a){if(!h(a))return!1;for(var b in a)if(a.hasOwnProperty(b))return!1;return!0}function l(){try{return new ErrorEvent(""),!0}catch(a){return!1}}function m(){if(!("fetch"in P))return!1;try{return new Headers,new Request(""),new Response,!0}catch(a){return!1}}function n(a){function b(b,c){var d=a(b)||b;return c?c(d)||d:d}return b}function o(a,b){var c,d;if(f(a.length))for(c in a)s(a,c)&&b.call(null,c,a[c]);else if(d=a.length)for(c=0;c ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function y(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&i(b))for(c=b.split(/\s+/),f=0;f":"anonymous component")+(a._isVue&&a.$options.__file?" at "+a.$options.__file:"")}function M(a,b){if(b=b||window.Vue,b&&b.config){var c=b.config.errorHandler;b.config.errorHandler=function(b,d,e){var f={};"[object Object]"===Object.prototype.toString.call(d)&&(f.componentName=L(d),f.propsData=d.$options.propsData),"undefined"!=typeof e&&(f.lifecycleHook=e),a.captureException(b,{extra:f}),"function"==typeof c&&c.call(this,b,d,e)}}}var N="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{},O=Object.setPrototypeOf||function(a,b){return a.B=b,a},P=("object"==typeof Reflect&&Reflect.construct||function(a,b,c){var d,e=[null];return e.push.apply(e,b),d=a.bind.apply(a,e),O(new d,c.prototype)},"undefined"!=typeof window?window:"undefined"!=typeof N?N:"undefined"!=typeof self?self:{}),Q={isObject:c,isError:d,isErrorEvent:e,isUndefined:f,isFunction:g,isPlainObject:h,isString:i,isArray:j,isEmptyObject:k,supportsErrorEvent:l,supportsFetch:m,wrappedCallback:n,each:o,objectMerge:p,truncate:r,objectFrozen:q,hasKey:s,joinRegExp:t,urlencode:u,uuid4:w,htmlTreeAsString:x,htmlElementAsString:y,isSameException:B,isSameStacktrace:C,parseUrl:v,fill:D,safeJoin:E},R={collectWindowErrors:!0,debug:!1},S="undefined"!=typeof window?window:"undefined"!=typeof N?N:"undefined"!=typeof self?self:{},T=[].slice,U="?",V=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;R.report=function(){function a(a){f(),l.push(a)}function b(a){for(var b=l.length-1;b>=0;--b)l[b]===a&&l.splice(b,1)}function c(){g(),l=[]}function d(a,b){var c=null;if(!b||R.collectWindowErrors){for(var d in l)if(l.hasOwnProperty(d))try{l[d].apply(null,[a].concat(T.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function e(a,b,c,e,f){var g=null,i=Q.isErrorEvent(f)?f.error:f,k=Q.isErrorEvent(a)?a.message:a;if(o)R.computeStackTrace.augmentStackTraceWithInitialElement(o,b,c,k),h();else if(i&&Q.isError(i))g=R.computeStackTrace(i),d(g,!0);else{var l,m={url:b,line:c,column:e},n=void 0;if("[object String]"==={}.toString.call(k)){var l=k.match(V);l&&(n=l[1],k=l[2])}m.func=U,g={name:n,message:k,url:F(),stack:[m]},d(g,!0)}return!!j&&j.apply(this,arguments)}function f(){k||(j=S.onerror,S.onerror=e,k=!0)}function g(){k&&(S.onerror=j,k=!1,j=void 0)}function h(){var a=o,b=m;m=null,o=null,n=null,d.apply(null,[a,!1].concat(b))}function i(a,b){var c=T.call(arguments,1);if(o){if(n===a)return;h()}var d=R.computeStackTrace(a);if(o=d,n=a,m=c,setTimeout(function(){n===a&&h()},d.incomplete?2e3:0),b!==!1)throw a}var j,k,l=[],m=null,n=null,o=null;return i.subscribe=a,i.unsubscribe=b,i.uninstall=c,i}(),R.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,d,e=/^\s*at (.*?) ?\(((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,f=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|\[native).*?|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,g=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,h=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,i=/\((\S*)(?::(\d+))(?::(\d+))\)/,j=a.stack.split("\n"),k=[],l=(/^(.*) is undefined$/.exec(a.message),0),m=j.length;l eval")>-1;o&&(b=h.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==l||c[5]||"undefined"==typeof a.columnNumber||(k[0].column=a.columnNumber+1),d={url:c[3],func:c[1]||U,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}!d.func&&d.line&&(d.func=U),k.push(d)}return k.length?{name:a.name,message:a.message,url:F(),stack:k}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=U),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,e){for(var f,g,h=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,i=[],j={},k=!1,l=c.caller;l&&!k;l=l.caller)if(l!==d&&l!==R.report){if(g={url:null,func:U,line:null,column:null},l.name?g.func=l.name:(f=h.exec(l.toString()))&&(g.func=f[1]),"undefined"==typeof g.func)try{g.func=f.input.substring(0,f.input.indexOf("{"))}catch(m){}j[""+l]?k=!0:j[""+l]=!0,i.push(g)}e&&i.splice(0,e);var n={name:a.name,message:a.message,url:F(),stack:i};return b(n,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),n}function d(b,d){var e=null;d=null==d?0:+d;try{if(e=a(b))return e}catch(f){if(R.debug)throw f}try{if(e=c(b,d+1))return e}catch(f){if(R.debug)throw f}return{name:b.name,message:b.message,url:F()}}return d.augmentStackTraceWithInitialElement=b,d.computeStackTraceFromStackProp=a,d}();var W=R,X=a(function(a,b){function c(a,b){for(var c=0;c0){var i=c(d,this);~i?d.splice(i+1):d.push(this),~i?f.splice(i,1/0,g):f.push(g),~c(d,h)&&(h=b.call(this,g,h))}else d.push(h);return null==a?h instanceof Error?e(h):h:a.call(this,g,h)}}b=a.exports=d,b.getSerialize=f});G.prototype=new Error,G.prototype.constructor=G;var Y=G,Z=function(a,b,c){var d=a[b],e=a;if(b in a){var f="warn"===b?"warning":b;a[b]=function(){var a=[].slice.call(arguments),g=Q.safeJoin(a," "),h={level:f,logger:"console",extra:{arguments:a}};"assert"===b?a[0]===!1&&(g="Assertion failed: "+(Q.safeJoin(a.slice(1)," ")||"console.assert"),h.extra.arguments=a.slice(1),c&&c(g,h)):c&&c(g,h),d&&Function.prototype.apply.call(d,e,a)}}},$={wrapMethod:Z},_=Q.isError,aa=Q.isObject,ba=Q.isErrorEvent,ca=Q.isUndefined,da=Q.isFunction,ea=Q.isString,fa=Q.isArray,ga=Q.isEmptyObject,ha=Q.each,ia=Q.objectMerge,ja=Q.truncate,ka=Q.objectFrozen,la=Q.hasKey,ma=Q.joinRegExp,na=Q.urlencode,oa=Q.uuid4,pa=Q.htmlTreeAsString,qa=Q.isSameException,ra=Q.isSameStacktrace,sa=Q.parseUrl,ta=Q.fill,ua=Q.supportsFetch,va=$.wrapMethod,wa="source protocol user pass host port path".split(" "),xa=/^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/,ya="undefined"!=typeof window?window:"undefined"!=typeof N?N:"undefined"!=typeof self?self:{},za=ya.document,Aa=ya.navigator;J.prototype={VERSION:"3.22.2",debug:!1,TraceKit:W,config:function(a,b){var c=this;if(c.i)return this.C("error","Error: Raven has already been configured"),c;if(!a)return c;var d=c.m;b&&ha(b,function(a,b){"tags"===a||"extra"===a||"user"===a?c.l[a]=b:d[a]=b}),c.setDSN(a),d.ignoreErrors.push(/^Script error\.?$/),d.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/),d.ignoreErrors=ma(d.ignoreErrors),d.ignoreUrls=!!d.ignoreUrls.length&&ma(d.ignoreUrls),d.whitelistUrls=!!d.whitelistUrls.length&&ma(d.whitelistUrls),d.includePaths=ma(d.includePaths),d.maxBreadcrumbs=Math.max(0,Math.min(d.maxBreadcrumbs||100,100));var e={xhr:!0,console:!0,dom:!0,location:!0,sentry:!0},f=d.autoBreadcrumbs;"[object Object]"==={}.toString.call(f)?f=ia(e,f):f!==!1&&(f=e),d.autoBreadcrumbs=f;var g={tryCatch:!0},h=d.instrument;return"[object Object]"==={}.toString.call(h)?h=ia(g,h):h!==!1&&(h=g),d.instrument=h,W.collectWindowErrors=!!d.collectWindowErrors,c},install:function(){var a=this;return a.isSetup()&&!a.p&&(W.report.subscribe(function(){a.D.apply(a,arguments)}),a.E(),a.m.instrument&&a.m.instrument.tryCatch&&a.F(),a.m.autoBreadcrumbs&&a.G(),a.H(),a.p=!0),Error.stackTraceLimit=a.m.stackTraceLimit,this},setDSN:function(a){var b=this,c=b.I(a),d=c.path.lastIndexOf("/"),e=c.path.substr(1,d);b.J=a,b.j=c.user,b.K=c.pass&&c.pass.substr(1),b.k=c.path.substr(d+1),b.i=b.L(c),b.M=b.i+"/"+e+"api/"+b.k+"/store/",this.A()},context:function(a,b,c){return da(a)&&(c=b||[],b=a,a=void 0),this.wrap(a,b).apply(this,c)},wrap:function(a,b,c){function d(){var d=[],f=arguments.length,g=!a||a&&a.deep!==!1;for(c&&da(c)&&c.apply(this,arguments);f--;)d[f]=g?e.wrap(a,arguments[f]):arguments[f];try{return b.apply(this,d)}catch(h){throw e.N(),e.captureException(h,a),h}}var e=this;if(ca(b)&&!da(a))return a;if(da(a)&&(b=a,a=void 0),!da(b))return b;try{if(b.a)return b;if(b.O)return b.O}catch(f){return b}for(var g in b)la(b,g)&&(d[g]=b[g]);return d.prototype=b.prototype,b.O=d,d.a=!0,d.b=b,d},uninstall:function(){return W.report.uninstall(),this.P(),this.Q(),this.R(),Error.stackTraceLimit=this.q,this.p=!1,this},captureException:function(a,b){b=ia({trimHeadFrames:0},b?b:{});var c=!_(a),d=!ba(a),e=ba(a)&&!a.error;if(c&&d||e)return this.captureMessage(a,ia(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}));ba(a)&&(a=a.error),this.f=a;try{var f=W.computeStackTrace(a);this.S(f,b)}catch(g){if(a!==g)throw g}return this},captureMessage:function(a,b){if(!this.m.ignoreErrors.test||!this.m.ignoreErrors.test(a)){b=b||{};var c,d=ia({message:a+""},b);try{throw new Error(a)}catch(e){c=e}c.name=null;var f=W.computeStackTrace(c),g=fa(f.stack)&&f.stack[1],h=g&&g.url||"";if((!this.m.ignoreUrls.test||!this.m.ignoreUrls.test(h))&&(!this.m.whitelistUrls.test||this.m.whitelistUrls.test(h))){if(this.m.stacktrace||b&&b.stacktrace){b=ia({fingerprint:a,trimHeadFrames:(b.trimHeadFrames||0)+1},b);var i=this.T(f,b);d.stacktrace={frames:i.reverse()}}return this.U(d),this}}},captureBreadcrumb:function(a){var b=ia({timestamp:H()/1e3},a);if(da(this.m.breadcrumbCallback)){var c=this.m.breadcrumbCallback(b);if(aa(c)&&!ga(c))b=c;else if(c===!1)return this}return this.w.push(b),this.w.length>this.m.maxBreadcrumbs&&this.w.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.t.push([a,b]),this.p&&this.H(),this},setUserContext:function(a){return this.l.user=a,this},setExtraContext:function(a){return this.V("extra",a),this},setTagsContext:function(a){return this.V("tags",a),this},clearContext:function(){return this.l={},this},getContext:function(){return JSON.parse(X(this.l))},setEnvironment:function(a){return this.m.environment=a,this},setRelease:function(a){return this.m.release=a,this},setDataCallback:function(a){var b=this.m.dataCallback;return this.m.dataCallback=I(b,a),this},setBreadcrumbCallback:function(a){var b=this.m.breadcrumbCallback;return this.m.breadcrumbCallback=I(b,a),this},setShouldSendCallback:function(a){var b=this.m.shouldSendCallback;return this.m.shouldSendCallback=I(b,a),this},setTransport:function(a){return this.m.transport=a,this},lastException:function(){return this.f},lastEventId:function(){return this.h},isSetup:function(){return!!this.c&&(!!this.i||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.C("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=ya.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(za){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new Y("Missing eventId");var c=a.dsn||this.J;if(!c)throw new Y("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.l.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.L(this.I(c)),h=za.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(za.head||za.body).appendChild(h)}},N:function(){var a=this;this.o+=1,setTimeout(function(){a.o-=1})},W:function(a,b){var c,d;if(this.d){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),za.createEvent?(c=za.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=za.createEventObject(),c.eventType=a);for(d in b)la(b,d)&&(c[d]=b[d]);if(za.createEvent)za.dispatchEvent(c);else try{za.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},X:function(a){var b=this;return function(c){if(b.Y=null,b.x!==c){b.x=c;var d;try{d=pa(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},Z:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.Y;g||a.X("input")(c),clearTimeout(g),a.Y=setTimeout(function(){a.Y=null},b)}}},$:function(a,b){var c=sa(this.y.href),d=sa(b),e=sa(a);this.z=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},E:function(){var a=this;a._=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.a?a._.apply(this.b,arguments):a._.apply(this,arguments)}},P:function(){this._&&(Function.prototype.toString=this._)},F:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.$(b.z,c+""),a.apply(this,arguments)}};ta(history,"pushState",j,d),ta(history,"replaceState",j,d)}if(c.console&&"console"in ya&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};ha(["debug","info","warn","error","log"],function(a,b){va(console,b,k)})}},Q:function(){for(var a;this.v.length;){a=this.v.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},R:function(){for(var a in this.s)this.r[a]=this.s[a]},H:function(){var a=this;ha(this.t,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},I:function(a){var b=xa.exec(a),c={},d=7;try{for(;d--;)c[wa[d]]=b[d]||""}catch(e){throw new Y("Invalid DSN: "+a)}if(c.pass&&!this.m.allowSecretKey)throw new Y("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},L:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},D:function(){this.o||this.S.apply(this,arguments)},S:function(a,b){var c=this.T(a,b);this.W("handle",{stackInfo:a,options:b}),this.ba(a.name,a.message,a.url,a.lineno,c,b)},T:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(ha(a.stack,function(b,e){var f=c.ca(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.w,0)}),this.l.user&&(a.user=this.l.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||ga(a[b]))&&delete a[b]}),da(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!ga(a)&&(!da(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.ia()?void this.C("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() href parsing trick because React Native and other +// environments where DOM might not be available + + +function parseUrl$1(url) { + if (typeof url !== 'string') return {}; + var match = url.match(/^(([^:\/?#]+):)?(\/\/([^\/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?$/); // coerce to undefined values to empty string so we don't get 'undefined' + + var query = match[6] || ''; + var fragment = match[8] || ''; + return { + protocol: match[2], + host: match[4], + path: match[5], + relative: match[5] + query + fragment // everything minus origin + + }; +} + +function uuid4$1() { + var crypto = _window$3.crypto || _window$3.msCrypto; + + if (!isUndefined$1(crypto) && crypto.getRandomValues) { + // Use window.crypto API if available + // eslint-disable-next-line no-undef + var arr = new Uint16Array(8); + crypto.getRandomValues(arr); // set 4 in byte 7 + + arr[3] = arr[3] & 0xfff | 0x4000; // set 2 most significant bits of byte 9 to '10' + + arr[4] = arr[4] & 0x3fff | 0x8000; + + var pad = function pad(num) { + var v = num.toString(16); + + while (v.length < 4) { + v = '0' + v; + } + + return v; + }; + + return pad(arr[0]) + pad(arr[1]) + pad(arr[2]) + pad(arr[3]) + pad(arr[4]) + pad(arr[5]) + pad(arr[6]) + pad(arr[7]); + } else { + // http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/2117523#2117523 + return 'xxxxxxxxxxxx4xxxyxxxxxxxxxxxxxxx'.replace(/[xy]/g, function (c) { + var r = Math.random() * 16 | 0, + v = c === 'x' ? r : r & 0x3 | 0x8; + return v.toString(16); + }); + } +} +/** + * Given a child DOM element, returns a query-selector statement describing that + * and its ancestors + * e.g. [HTMLElement] => body > div > input#foo.btn[name=baz] + * @param elem + * @returns {string} + */ + + +function htmlTreeAsString$1(elem) { + /* eslint no-extra-parens:0*/ + var MAX_TRAVERSE_HEIGHT = 5, + MAX_OUTPUT_LEN = 80, + out = [], + height = 0, + len = 0, + separator = ' > ', + sepLength = separator.length, + nextStr; + + while (elem && height++ < MAX_TRAVERSE_HEIGHT) { + nextStr = htmlElementAsString(elem); // bail out if + // - nextStr is the 'html' element + // - the length of the string that would be created exceeds MAX_OUTPUT_LEN + // (ignore this limit if we are on the first iteration) + + if (nextStr === 'html' || height > 1 && len + out.length * sepLength + nextStr.length >= MAX_OUTPUT_LEN) { + break; + } + + out.push(nextStr); + len += nextStr.length; + elem = elem.parentNode; + } + + return out.reverse().join(separator); +} +/** + * Returns a simple, query-selector representation of a DOM element + * e.g. [HTMLElement] => input#foo.btn[name=baz] + * @param HTMLElement + * @returns {string} + */ + + +function htmlElementAsString(elem) { + var out = [], + className, + classes, + key, + attr, + i; + + if (!elem || !elem.tagName) { + return ''; + } + + out.push(elem.tagName.toLowerCase()); + + if (elem.id) { + out.push('#' + elem.id); + } + + className = elem.className; + + if (className && isString$1(className)) { + classes = className.split(/\s+/); + + for (i = 0; i < classes.length; i++) { + out.push('.' + classes[i]); + } + } + + var attrWhitelist = ['type', 'name', 'title', 'alt']; + + for (i = 0; i < attrWhitelist.length; i++) { + key = attrWhitelist[i]; + attr = elem.getAttribute(key); + + if (attr) { + out.push('[' + key + '="' + attr + '"]'); + } + } + + return out.join(''); +} +/** + * Returns true if either a OR b is truthy, but not both + */ + + +function isOnlyOneTruthy(a, b) { + return !!(!!a ^ !!b); +} +/** + * Returns true if both parameters are undefined + */ + + +function isBothUndefined(a, b) { + return isUndefined$1(a) && isUndefined$1(b); +} +/** + * Returns true if the two input exception interfaces have the same content + */ + + +function isSameException$1(ex1, ex2) { + if (isOnlyOneTruthy(ex1, ex2)) return false; + ex1 = ex1.values[0]; + ex2 = ex2.values[0]; + if (ex1.type !== ex2.type || ex1.value !== ex2.value) return false; // in case both stacktraces are undefined, we can't decide so default to false + + if (isBothUndefined(ex1.stacktrace, ex2.stacktrace)) return false; + return isSameStacktrace$1(ex1.stacktrace, ex2.stacktrace); +} +/** + * Returns true if the two input stack trace interfaces have the same content + */ + + +function isSameStacktrace$1(stack1, stack2) { + if (isOnlyOneTruthy(stack1, stack2)) return false; + var frames1 = stack1.frames; + var frames2 = stack2.frames; // Exit early if frame count differs + + if (frames1.length !== frames2.length) return false; // Iterate through every frame; bail out if anything differs + + var a, b; + + for (var i = 0; i < frames1.length; i++) { + a = frames1[i]; + b = frames2[i]; + if (a.filename !== b.filename || a.lineno !== b.lineno || a.colno !== b.colno || a['function'] !== b['function']) return false; + } + + return true; +} +/** + * Polyfill a method + * @param obj object e.g. `document` + * @param name method name present on object e.g. `addEventListener` + * @param replacement replacement function + * @param track {optional} record instrumentation to an array + */ + + +function fill$1(obj, name, replacement, track) { + var orig = obj[name]; + obj[name] = replacement(orig); + obj[name].__raven__ = true; + obj[name].__orig__ = orig; + + if (track) { + track.push([obj, name, orig]); + } +} +/** + * Join values in array + * @param input array of values to be joined together + * @param delimiter string to be placed in-between values + * @returns {string} + */ + + +function safeJoin(input, delimiter) { + if (!isArray$1(input)) return ''; + var output = []; + + for (var i = 0; i < input.length; i++) { + try { + output.push(String(input[i])); + } catch (e) { + output.push('[value cannot be serialized]'); + } + } + + return output.join(delimiter); +} + +var utils = { + isObject: isObject$1, + isError: isError$1, + isErrorEvent: isErrorEvent$1, + isUndefined: isUndefined$1, + isFunction: isFunction$1, + isPlainObject: isPlainObject, + isString: isString$1, + isArray: isArray$1, + isEmptyObject: isEmptyObject$1, + supportsErrorEvent: supportsErrorEvent, + supportsFetch: supportsFetch$1, + wrappedCallback: wrappedCallback, + each: each$1, + objectMerge: objectMerge$1, + truncate: truncate$1, + objectFrozen: objectFrozen$1, + hasKey: hasKey$1, + joinRegExp: joinRegExp$1, + urlencode: urlencode$1, + uuid4: uuid4$1, + htmlTreeAsString: htmlTreeAsString$1, + htmlElementAsString: htmlElementAsString, + isSameException: isSameException$1, + isSameStacktrace: isSameStacktrace$1, + parseUrl: parseUrl$1, + fill: fill$1, + safeJoin: safeJoin +}; + +/* + TraceKit - Cross brower stack traces + + This was originally forked from github.com/occ/TraceKit, but has since been + largely re-written and is now maintained as part of raven-js. Tests for + this are in test/vendor. + + MIT license +*/ + +var TraceKit = { + collectWindowErrors: true, + debug: false +}; // This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) + +var _window$2 = typeof window !== 'undefined' ? window : typeof commonjsGlobal !== 'undefined' ? commonjsGlobal : typeof self !== 'undefined' ? self : {}; // global reference to slice + + +var _slice = [].slice; +var UNKNOWN_FUNCTION = '?'; // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error#Error_types + +var ERROR_TYPES_RE = /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/; + +function getLocationHref() { + if (typeof document === 'undefined' || document.location == null) return ''; + return document.location.href; +} +/** + * TraceKit.report: cross-browser processing of unhandled exceptions + * + * Syntax: + * TraceKit.report.subscribe(function(stackInfo) { ... }) + * TraceKit.report.unsubscribe(function(stackInfo) { ... }) + * TraceKit.report(exception) + * try { ...code... } catch(ex) { TraceKit.report(ex); } + * + * Supports: + * - Firefox: full stack trace with line numbers, plus column number + * on top frame; column number is not guaranteed + * - Opera: full stack trace with line and column numbers + * - Chrome: full stack trace with line and column numbers + * - Safari: line and column number for the top frame only; some frames + * may be missing, and column number is not guaranteed + * - IE: line and column number for the top frame only; some frames + * may be missing, and column number is not guaranteed + * + * In theory, TraceKit should work on all of the following versions: + * - IE5.5+ (only 8.0 tested) + * - Firefox 0.9+ (only 3.5+ tested) + * - Opera 7+ (only 10.50 tested; versions 9 and earlier may require + * Exceptions Have Stacktrace to be enabled in opera:config) + * - Safari 3+ (only 4+ tested) + * - Chrome 1+ (only 5+ tested) + * - Konqueror 3.5+ (untested) + * + * Requires TraceKit.computeStackTrace. + * + * Tries to catch all unhandled exceptions and report them to the + * subscribed handlers. Please note that TraceKit.report will rethrow the + * exception. This is REQUIRED in order to get a useful stack trace in IE. + * If the exception does not reach the top of the browser, you will only + * get a stack trace from the point where TraceKit.report was called. + * + * Handlers receive a stackInfo object as described in the + * TraceKit.computeStackTrace docs. + */ + + +TraceKit.report = function reportModuleWrapper() { + var handlers = [], + lastArgs = null, + lastException = null, + lastExceptionStack = null; + /** + * Add a crash handler. + * @param {Function} handler + */ + + function subscribe(handler) { + installGlobalHandler(); + handlers.push(handler); + } + /** + * Remove a crash handler. + * @param {Function} handler + */ + + + function unsubscribe(handler) { + for (var i = handlers.length - 1; i >= 0; --i) { + if (handlers[i] === handler) { + handlers.splice(i, 1); + } + } + } + /** + * Remove all crash handlers. + */ + + + function unsubscribeAll() { + uninstallGlobalHandler(); + handlers = []; + } + /** + * Dispatch stack information to all handlers. + * @param {Object.} stack + */ + + + function notifyHandlers(stack, isWindowError) { + var exception = null; + + if (isWindowError && !TraceKit.collectWindowErrors) { + return; + } + + for (var i in handlers) { + if (handlers.hasOwnProperty(i)) { + try { + handlers[i].apply(null, [stack].concat(_slice.call(arguments, 2))); + } catch (inner) { + exception = inner; + } + } + } + + if (exception) { + throw exception; + } + } + + var _oldOnerrorHandler, _onErrorHandlerInstalled; + /** + * Ensures all global unhandled exceptions are recorded. + * Supported by Gecko and IE. + * @param {string} msg Error message. + * @param {string} url URL of script that generated the exception. + * @param {(number|string)} lineNo The line number at which the error + * occurred. + * @param {?(number|string)} colNo The column number at which the error + * occurred. + * @param {?Error} ex The actual Error object. + */ + + + function traceKitWindowOnError(msg, url, lineNo, colNo, ex) { + var stack = null; // If 'ex' is ErrorEvent, get real Error from inside + + var exception = utils.isErrorEvent(ex) ? ex.error : ex; // If 'msg' is ErrorEvent, get real message from inside + + var message = utils.isErrorEvent(msg) ? msg.message : msg; + + if (lastExceptionStack) { + TraceKit.computeStackTrace.augmentStackTraceWithInitialElement(lastExceptionStack, url, lineNo, message); + processLastException(); + } else if (exception && utils.isError(exception)) { + // non-string `exception` arg; attempt to extract stack trace + // New chrome and blink send along a real error object + // Let's just report that like a normal error. + // See: https://mikewest.org/2013/08/debugging-runtime-errors-with-window-onerror + stack = TraceKit.computeStackTrace(exception); + notifyHandlers(stack, true); + } else { + var location = { + url: url, + line: lineNo, + column: colNo + }; + var name = undefined; + var groups; + + if ({}.toString.call(message) === '[object String]') { + var groups = message.match(ERROR_TYPES_RE); + + if (groups) { + name = groups[1]; + message = groups[2]; + } + } + + location.func = UNKNOWN_FUNCTION; + stack = { + name: name, + message: message, + url: getLocationHref(), + stack: [location] + }; + notifyHandlers(stack, true); + } + + if (_oldOnerrorHandler) { + return _oldOnerrorHandler.apply(this, arguments); + } + + return false; + } + + function installGlobalHandler() { + if (_onErrorHandlerInstalled) { + return; + } + + _oldOnerrorHandler = _window$2.onerror; + _window$2.onerror = traceKitWindowOnError; + _onErrorHandlerInstalled = true; + } + + function uninstallGlobalHandler() { + if (!_onErrorHandlerInstalled) { + return; + } + + _window$2.onerror = _oldOnerrorHandler; + _onErrorHandlerInstalled = false; + _oldOnerrorHandler = undefined; + } + + function processLastException() { + var _lastExceptionStack = lastExceptionStack, + _lastArgs = lastArgs; + lastArgs = null; + lastExceptionStack = null; + lastException = null; + notifyHandlers.apply(null, [_lastExceptionStack, false].concat(_lastArgs)); + } + /** + * Reports an unhandled Error to TraceKit. + * @param {Error} ex + * @param {?boolean} rethrow If false, do not re-throw the exception. + * Only used for window.onerror to not cause an infinite loop of + * rethrowing. + */ + + + function report(ex, rethrow) { + var args = _slice.call(arguments, 1); + + if (lastExceptionStack) { + if (lastException === ex) { + return; // already caught by an inner catch block, ignore + } else { + processLastException(); + } + } + + var stack = TraceKit.computeStackTrace(ex); + lastExceptionStack = stack; + lastException = ex; + lastArgs = args; // If the stack trace is incomplete, wait for 2 seconds for + // slow slow IE to see if onerror occurs or not before reporting + // this exception; otherwise, we will end up with an incomplete + // stack trace + + setTimeout(function () { + if (lastException === ex) { + processLastException(); + } + }, stack.incomplete ? 2000 : 0); + + if (rethrow !== false) { + throw ex; // re-throw to propagate to the top level (and cause window.onerror) + } + } + + report.subscribe = subscribe; + report.unsubscribe = unsubscribe; + report.uninstall = unsubscribeAll; + return report; +}(); +/** + * TraceKit.computeStackTrace: cross-browser stack traces in JavaScript + * + * Syntax: + * s = TraceKit.computeStackTrace(exception) // consider using TraceKit.report instead (see below) + * Returns: + * s.name - exception name + * s.message - exception message + * s.stack[i].url - JavaScript or HTML file URL + * s.stack[i].func - function name, or empty for anonymous functions (if guessing did not work) + * s.stack[i].args - arguments passed to the function, if known + * s.stack[i].line - line number, if known + * s.stack[i].column - column number, if known + * + * Supports: + * - Firefox: full stack trace with line numbers and unreliable column + * number on top frame + * - Opera 10: full stack trace with line and column numbers + * - Opera 9-: full stack trace with line numbers + * - Chrome: full stack trace with line and column numbers + * - Safari: line and column number for the topmost stacktrace element + * only + * - IE: no line numbers whatsoever + * + * Tries to guess names of anonymous functions by looking for assignments + * in the source code. In IE and Safari, we have to guess source file names + * by searching for function bodies inside all page scripts. This will not + * work for scripts that are loaded cross-domain. + * Here be dragons: some function names may be guessed incorrectly, and + * duplicate functions may be mismatched. + * + * TraceKit.computeStackTrace should only be used for tracing purposes. + * Logging of unhandled exceptions should be done with TraceKit.report, + * which builds on top of TraceKit.computeStackTrace and provides better + * IE support by utilizing the window.onerror event to retrieve information + * about the top of the stack. + * + * Note: In IE and Safari, no stack trace is recorded on the Error object, + * so computeStackTrace instead walks its *own* chain of callers. + * This means that: + * * in Safari, some methods may be missing from the stack trace; + * * in IE, the topmost function in the stack trace will always be the + * caller of computeStackTrace. + * + * This is okay for tracing (because you are likely to be calling + * computeStackTrace from the function you want to be the topmost element + * of the stack trace anyway), but not okay for logging unhandled + * exceptions (because your catch block will likely be far away from the + * inner function that actually caused the exception). + * + */ + + +TraceKit.computeStackTrace = function computeStackTraceWrapper() { + // Contents of Exception in various browsers. + // + // SAFARI: + // ex.message = Can't find variable: qq + // ex.line = 59 + // ex.sourceId = 580238192 + // ex.sourceURL = http://... + // ex.expressionBeginOffset = 96 + // ex.expressionCaretOffset = 98 + // ex.expressionEndOffset = 98 + // ex.name = ReferenceError + // + // FIREFOX: + // ex.message = qq is not defined + // ex.fileName = http://... + // ex.lineNumber = 59 + // ex.columnNumber = 69 + // ex.stack = ...stack trace... (see the example below) + // ex.name = ReferenceError + // + // CHROME: + // ex.message = qq is not defined + // ex.name = ReferenceError + // ex.type = not_defined + // ex.arguments = ['aa'] + // ex.stack = ...stack trace... + // + // INTERNET EXPLORER: + // ex.message = ... + // ex.name = ReferenceError + // + // OPERA: + // ex.message = ...message... (see the example below) + // ex.name = ReferenceError + // ex.opera#sourceloc = 11 (pretty much useless, duplicates the info in ex.message) + // ex.stacktrace = n/a; see 'opera:config#UserPrefs|Exceptions Have Stacktrace' + + /** + * Computes stack trace information from the stack property. + * Chrome and Gecko use this property. + * @param {Error} ex + * @return {?Object.} Stack trace information. + */ + function computeStackTraceFromStackProp(ex) { + if (typeof ex.stack === 'undefined' || !ex.stack) return; + var chrome = /^\s*at (.*?) ?\(((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i, + gecko = /^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|\[native).*?|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i, + winjs = /^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i, + // Used to additionally parse URL/line/column from eval frames + geckoEval = /(\S+) line (\d+)(?: > eval line \d+)* > eval/i, + chromeEval = /\((\S*)(?::(\d+))(?::(\d+))\)/, + lines = ex.stack.split('\n'), + stack = [], + submatch, + parts, + element, + reference = /^(.*) is undefined$/.exec(ex.message); + + for (var i = 0, j = lines.length; i < j; ++i) { + if (parts = chrome.exec(lines[i])) { + var isNative = parts[2] && parts[2].indexOf('native') === 0; // start of line + + var isEval = parts[2] && parts[2].indexOf('eval') === 0; // start of line + + if (isEval && (submatch = chromeEval.exec(parts[2]))) { + // throw out eval line/column and use top-most line/column number + parts[2] = submatch[1]; // url + + parts[3] = submatch[2]; // line + + parts[4] = submatch[3]; // column + } + + element = { + url: !isNative ? parts[2] : null, + func: parts[1] || UNKNOWN_FUNCTION, + args: isNative ? [parts[2]] : [], + line: parts[3] ? +parts[3] : null, + column: parts[4] ? +parts[4] : null + }; + } else if (parts = winjs.exec(lines[i])) { + element = { + url: parts[2], + func: parts[1] || UNKNOWN_FUNCTION, + args: [], + line: +parts[3], + column: parts[4] ? +parts[4] : null + }; + } else if (parts = gecko.exec(lines[i])) { + var isEval = parts[3] && parts[3].indexOf(' > eval') > -1; + + if (isEval && (submatch = geckoEval.exec(parts[3]))) { + // throw out eval line/column and use top-most line number + parts[3] = submatch[1]; + parts[4] = submatch[2]; + parts[5] = null; // no column when eval + } else if (i === 0 && !parts[5] && typeof ex.columnNumber !== 'undefined') { + // FireFox uses this awesome columnNumber property for its top frame + // Also note, Firefox's column number is 0-based and everything else expects 1-based, + // so adding 1 + // NOTE: this hack doesn't work if top-most frame is eval + stack[0].column = ex.columnNumber + 1; + } + + element = { + url: parts[3], + func: parts[1] || UNKNOWN_FUNCTION, + args: parts[2] ? parts[2].split(',') : [], + line: parts[4] ? +parts[4] : null, + column: parts[5] ? +parts[5] : null + }; + } else { + continue; + } + + if (!element.func && element.line) { + element.func = UNKNOWN_FUNCTION; + } + + stack.push(element); + } + + if (!stack.length) { + return null; + } + + return { + name: ex.name, + message: ex.message, + url: getLocationHref(), + stack: stack + }; + } + /** + * Adds information about the first frame to incomplete stack traces. + * Safari and IE require this to get complete data on the first frame. + * @param {Object.} stackInfo Stack trace information from + * one of the compute* methods. + * @param {string} url The URL of the script that caused an error. + * @param {(number|string)} lineNo The line number of the script that + * caused an error. + * @param {string=} message The error generated by the browser, which + * hopefully contains the name of the object that caused the error. + * @return {boolean} Whether or not the stack information was + * augmented. + */ + + + function augmentStackTraceWithInitialElement(stackInfo, url, lineNo, message) { + var initial = { + url: url, + line: lineNo + }; + + if (initial.url && initial.line) { + stackInfo.incomplete = false; + + if (!initial.func) { + initial.func = UNKNOWN_FUNCTION; + } + + if (stackInfo.stack.length > 0) { + if (stackInfo.stack[0].url === initial.url) { + if (stackInfo.stack[0].line === initial.line) { + return false; // already in stack trace + } else if (!stackInfo.stack[0].line && stackInfo.stack[0].func === initial.func) { + stackInfo.stack[0].line = initial.line; + return false; + } + } + } + + stackInfo.stack.unshift(initial); + stackInfo.partial = true; + return true; + } else { + stackInfo.incomplete = true; + } + + return false; + } + /** + * Computes stack trace information by walking the arguments.caller + * chain at the time the exception occurred. This will cause earlier + * frames to be missed but is the only way to get any stack trace in + * Safari and IE. The top frame is restored by + * {@link augmentStackTraceWithInitialElement}. + * @param {Error} ex + * @return {?Object.} Stack trace information. + */ + + + function computeStackTraceByWalkingCallerChain(ex, depth) { + var functionName = /function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i, + stack = [], + funcs = {}, + recursion = false, + parts, + item; + + for (var curr = computeStackTraceByWalkingCallerChain.caller; curr && !recursion; curr = curr.caller) { + if (curr === computeStackTrace || curr === TraceKit.report) { + // console.log('skipping internal function'); + continue; + } + + item = { + url: null, + func: UNKNOWN_FUNCTION, + line: null, + column: null + }; + + if (curr.name) { + item.func = curr.name; + } else if (parts = functionName.exec(curr.toString())) { + item.func = parts[1]; + } + + if (typeof item.func === 'undefined') { + try { + item.func = parts.input.substring(0, parts.input.indexOf('{')); + } catch (e) {} + } + + if (funcs['' + curr]) { + recursion = true; + } else { + funcs['' + curr] = true; + } + + stack.push(item); + } + + if (depth) { + // console.log('depth is ' + depth); + // console.log('stack is ' + stack.length); + stack.splice(0, depth); + } + + var result = { + name: ex.name, + message: ex.message, + url: getLocationHref(), + stack: stack + }; + augmentStackTraceWithInitialElement(result, ex.sourceURL || ex.fileName, ex.line || ex.lineNumber, ex.message || ex.description); + return result; + } + /** + * Computes a stack trace for an exception. + * @param {Error} ex + * @param {(string|number)=} depth + */ + + + function computeStackTrace(ex, depth) { + var stack = null; + depth = depth == null ? 0 : +depth; + + try { + stack = computeStackTraceFromStackProp(ex); + + if (stack) { + return stack; + } + } catch (e) { + if (TraceKit.debug) { + throw e; + } + } + + try { + stack = computeStackTraceByWalkingCallerChain(ex, depth + 1); + + if (stack) { + return stack; + } + } catch (e) { + if (TraceKit.debug) { + throw e; + } + } + + return { + name: ex.name, + message: ex.message, + url: getLocationHref() + }; + } + + computeStackTrace.augmentStackTraceWithInitialElement = augmentStackTraceWithInitialElement; + computeStackTrace.computeStackTraceFromStackProp = computeStackTraceFromStackProp; + return computeStackTrace; +}(); + +var tracekit = TraceKit; + +var stringify_1 = createCommonjsModule(function (module, exports) { + /* + json-stringify-safe + Like JSON.stringify, but doesn't throw on circular references. + + Originally forked from https://github.com/isaacs/json-stringify-safe + version 5.0.1 on 3/8/2017 and modified to handle Errors serialization + and IE8 compatibility. Tests for this are in test/vendor. + + ISC license: https://github.com/isaacs/json-stringify-safe/blob/master/LICENSE + */ + exports = module.exports = stringify; + exports.getSerialize = serializer; + + function indexOf(haystack, needle) { + for (var i = 0; i < haystack.length; ++i) { + if (haystack[i] === needle) return i; + } + + return -1; + } + + function stringify(obj, replacer, spaces, cycleReplacer) { + return JSON.stringify(obj, serializer(replacer, cycleReplacer), spaces); + } // https://github.com/ftlabs/js-abbreviate/blob/fa709e5f139e7770a71827b1893f22418097fbda/index.js#L95-L106 + + + function stringifyError(value) { + var err = { + // These properties are implemented as magical getters and don't show up in for in + stack: value.stack, + message: value.message, + name: value.name + }; + + for (var i in value) { + if (Object.prototype.hasOwnProperty.call(value, i)) { + err[i] = value[i]; + } + } + + return err; + } + + function serializer(replacer, cycleReplacer) { + var stack = []; + var keys = []; + + if (cycleReplacer == null) { + cycleReplacer = function cycleReplacer(key, value) { + if (stack[0] === value) { + return '[Circular ~]'; + } + + return '[Circular ~.' + keys.slice(0, indexOf(stack, value)).join('.') + ']'; + }; + } + + return function (key, value) { + if (stack.length > 0) { + var thisPos = indexOf(stack, this); + ~thisPos ? stack.splice(thisPos + 1) : stack.push(this); + ~thisPos ? keys.splice(thisPos, Infinity, key) : keys.push(key); + + if (~indexOf(stack, value)) { + value = cycleReplacer.call(this, key, value); + } + } else { + stack.push(value); + } + + return replacer == null ? value instanceof Error ? stringifyError(value) : value : replacer.call(this, key, value); + }; + } +}); +var stringify_2 = stringify_1.getSerialize; + +function RavenConfigError(message) { + this.name = 'RavenConfigError'; + this.message = message; +} + +RavenConfigError.prototype = new Error(); +RavenConfigError.prototype.constructor = RavenConfigError; +var configError = RavenConfigError; + +var wrapMethod = function wrapMethod(console, level, callback) { + var originalConsoleLevel = console[level]; + var originalConsole = console; + + if (!(level in console)) { + return; + } + + var sentryLevel = level === 'warn' ? 'warning' : level; + + console[level] = function () { + var args = [].slice.call(arguments); + var msg = utils.safeJoin(args, ' '); + var data = { + level: sentryLevel, + logger: 'console', + extra: { + arguments: args + } + }; + + if (level === 'assert') { + if (args[0] === false) { + // Default browsers message + msg = 'Assertion failed: ' + (utils.safeJoin(args.slice(1), ' ') || 'console.assert'); + data.extra.arguments = args.slice(1); + callback && callback(msg, data); + } + } else { + callback && callback(msg, data); + } // this fails for some browsers. :( + + + if (originalConsoleLevel) { + // IE9 doesn't allow calling apply on console functions directly + // See: https://stackoverflow.com/questions/5472938/does-ie9-support-console-log-and-is-it-a-real-function#answer-5473193 + Function.prototype.apply.call(originalConsoleLevel, originalConsole, args); + } + }; +}; + +var console$3 = { + wrapMethod: wrapMethod +}; + +/*global XDomainRequest:false */ + +var isError = utils.isError; +var isObject = utils.isObject; +var isErrorEvent = utils.isErrorEvent; +var isUndefined = utils.isUndefined; +var isFunction = utils.isFunction; +var isString = utils.isString; +var isArray = utils.isArray; +var isEmptyObject = utils.isEmptyObject; +var each = utils.each; +var objectMerge = utils.objectMerge; +var truncate = utils.truncate; +var objectFrozen = utils.objectFrozen; +var hasKey = utils.hasKey; +var joinRegExp = utils.joinRegExp; +var urlencode = utils.urlencode; +var uuid4 = utils.uuid4; +var htmlTreeAsString = utils.htmlTreeAsString; +var isSameException = utils.isSameException; +var isSameStacktrace = utils.isSameStacktrace; +var parseUrl = utils.parseUrl; +var fill = utils.fill; +var supportsFetch = utils.supportsFetch; +var wrapConsoleMethod = console$3.wrapMethod; +var dsnKeys = 'source protocol user pass host port path'.split(' '); +var dsnPattern = /^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/; + +function now() { + return +new Date(); +} // This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) + + +var _window$1 = typeof window !== 'undefined' ? window : typeof commonjsGlobal !== 'undefined' ? commonjsGlobal : typeof self !== 'undefined' ? self : {}; + +var _document = _window$1.document; +var _navigator = _window$1.navigator; + +function keepOriginalCallback(original, callback) { + return isFunction(callback) ? function (data) { + return callback(data, original); + } : callback; +} // First, check for JSON support +// If there is no JSON, we no-op the core features of Raven +// since JSON is required to encode the payload + + +function Raven$1() { + this._hasJSON = !!(_typeof(JSON) === 'object' && JSON.stringify); // Raven can run in contexts where there's no document (react-native) + + this._hasDocument = !isUndefined(_document); + this._hasNavigator = !isUndefined(_navigator); + this._lastCapturedException = null; + this._lastData = null; + this._lastEventId = null; + this._globalServer = null; + this._globalKey = null; + this._globalProject = null; + this._globalContext = {}; + this._globalOptions = { + // SENTRY_RELEASE can be injected by https://github.com/getsentry/sentry-webpack-plugin + release: _window$1.SENTRY_RELEASE && _window$1.SENTRY_RELEASE.id, + logger: 'javascript', + ignoreErrors: [], + ignoreUrls: [], + whitelistUrls: [], + includePaths: [], + headers: null, + collectWindowErrors: true, + maxMessageLength: 0, + // By default, truncates URL values to 250 chars + maxUrlLength: 250, + stackTraceLimit: 50, + autoBreadcrumbs: true, + instrument: true, + sampleRate: 1 + }; + this._fetchDefaults = { + method: 'POST', + keepalive: true, + referrerPolicy: 'origin' + }; + this._ignoreOnError = 0; + this._isRavenInstalled = false; + this._originalErrorStackTraceLimit = Error.stackTraceLimit; // capture references to window.console *and* all its methods first + // before the console plugin has a chance to monkey patch + + this._originalConsole = _window$1.console || {}; + this._originalConsoleMethods = {}; + this._plugins = []; + this._startTime = now(); + this._wrappedBuiltIns = []; + this._breadcrumbs = []; + this._lastCapturedEvent = null; + this._keypressTimeout; + this._location = _window$1.location; + this._lastHref = this._location && this._location.href; + + this._resetBackoff(); // eslint-disable-next-line guard-for-in + + + for (var method in this._originalConsole) { + this._originalConsoleMethods[method] = this._originalConsole[method]; + } +} +/* + * The core Raven singleton + * + * @this {Raven} + */ + + +Raven$1.prototype = { + // Hardcode version string so that raven source can be loaded directly via + // webpack (using a build step causes webpack #1617). Grunt verifies that + // this value matches package.json during build. + // See: https://github.com/getsentry/raven-js/issues/465 + VERSION: '3.22.2', + debug: false, + TraceKit: tracekit, + // alias to TraceKit + + /* + * Configure Raven with a DSN and extra options + * + * @param {string} dsn The public Sentry DSN + * @param {object} options Set of global options [optional] + * @return {Raven} + */ + config: function config(dsn, options) { + var self = this; + + if (self._globalServer) { + this._logDebug('error', 'Error: Raven has already been configured'); + + return self; + } + + if (!dsn) return self; + var globalOptions = self._globalOptions; // merge in options + + if (options) { + each(options, function (key, value) { + // tags and extra are special and need to be put into context + if (key === 'tags' || key === 'extra' || key === 'user') { + self._globalContext[key] = value; + } else { + globalOptions[key] = value; + } + }); + } + + self.setDSN(dsn); // "Script error." is hard coded into browsers for errors that it can't read. + // this is the result of a script being pulled in from an external domain and CORS. + + globalOptions.ignoreErrors.push(/^Script error\.?$/); + globalOptions.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/); // join regexp rules into one big rule + + globalOptions.ignoreErrors = joinRegExp(globalOptions.ignoreErrors); + globalOptions.ignoreUrls = globalOptions.ignoreUrls.length ? joinRegExp(globalOptions.ignoreUrls) : false; + globalOptions.whitelistUrls = globalOptions.whitelistUrls.length ? joinRegExp(globalOptions.whitelistUrls) : false; + globalOptions.includePaths = joinRegExp(globalOptions.includePaths); + globalOptions.maxBreadcrumbs = Math.max(0, Math.min(globalOptions.maxBreadcrumbs || 100, 100)); // default and hard limit is 100 + + var autoBreadcrumbDefaults = { + xhr: true, + console: true, + dom: true, + location: true, + sentry: true + }; + var autoBreadcrumbs = globalOptions.autoBreadcrumbs; + + if ({}.toString.call(autoBreadcrumbs) === '[object Object]') { + autoBreadcrumbs = objectMerge(autoBreadcrumbDefaults, autoBreadcrumbs); + } else if (autoBreadcrumbs !== false) { + autoBreadcrumbs = autoBreadcrumbDefaults; + } + + globalOptions.autoBreadcrumbs = autoBreadcrumbs; + var instrumentDefaults = { + tryCatch: true + }; + var instrument = globalOptions.instrument; + + if ({}.toString.call(instrument) === '[object Object]') { + instrument = objectMerge(instrumentDefaults, instrument); + } else if (instrument !== false) { + instrument = instrumentDefaults; + } + + globalOptions.instrument = instrument; + tracekit.collectWindowErrors = !!globalOptions.collectWindowErrors; // return for chaining + + return self; + }, + + /* + * Installs a global window.onerror error handler + * to capture and report uncaught exceptions. + * At this point, install() is required to be called due + * to the way TraceKit is set up. + * + * @return {Raven} + */ + install: function install() { + var self = this; + + if (self.isSetup() && !self._isRavenInstalled) { + tracekit.report.subscribe(function () { + self._handleOnErrorStackInfo.apply(self, arguments); + }); + + self._patchFunctionToString(); + + if (self._globalOptions.instrument && self._globalOptions.instrument.tryCatch) { + self._instrumentTryCatch(); + } + + if (self._globalOptions.autoBreadcrumbs) self._instrumentBreadcrumbs(); // Install all of the plugins + + self._drainPlugins(); + + self._isRavenInstalled = true; + } + + Error.stackTraceLimit = self._globalOptions.stackTraceLimit; + return this; + }, + + /* + * Set the DSN (can be called multiple time unlike config) + * + * @param {string} dsn The public Sentry DSN + */ + setDSN: function setDSN(dsn) { + var self = this, + uri = self._parseDSN(dsn), + lastSlash = uri.path.lastIndexOf('/'), + path = uri.path.substr(1, lastSlash); + + self._dsn = dsn; + self._globalKey = uri.user; + self._globalSecret = uri.pass && uri.pass.substr(1); + self._globalProject = uri.path.substr(lastSlash + 1); + self._globalServer = self._getGlobalServer(uri); + self._globalEndpoint = self._globalServer + '/' + path + 'api/' + self._globalProject + '/store/'; // Reset backoff state since we may be pointing at a + // new project/server + + this._resetBackoff(); + }, + + /* + * Wrap code within a context so Raven can capture errors + * reliably across domains that is executed immediately. + * + * @param {object} options A specific set of options for this context [optional] + * @param {function} func The callback to be immediately executed within the context + * @param {array} args An array of arguments to be called with the callback [optional] + */ + context: function context(options, func, args) { + if (isFunction(options)) { + args = func || []; + func = options; + options = undefined; + } + + return this.wrap(options, func).apply(this, args); + }, + + /* + * Wrap code within a context and returns back a new function to be executed + * + * @param {object} options A specific set of options for this context [optional] + * @param {function} func The function to be wrapped in a new context + * @param {function} func A function to call before the try/catch wrapper [optional, private] + * @return {function} The newly wrapped functions with a context + */ + wrap: function wrap(options, func, _before) { + var self = this; // 1 argument has been passed, and it's not a function + // so just return it + + if (isUndefined(func) && !isFunction(options)) { + return options; + } // options is optional + + + if (isFunction(options)) { + func = options; + options = undefined; + } // At this point, we've passed along 2 arguments, and the second one + // is not a function either, so we'll just return the second argument. + + + if (!isFunction(func)) { + return func; + } // We don't wanna wrap it twice! + + + try { + if (func.__raven__) { + return func; + } // If this has already been wrapped in the past, return that + + + if (func.__raven_wrapper__) { + return func.__raven_wrapper__; + } + } catch (e) { + // Just accessing custom props in some Selenium environments + // can cause a "Permission denied" exception (see raven-js#495). + // Bail on wrapping and return the function as-is (defers to window.onerror). + return func; + } + + function wrapped() { + var args = [], + i = arguments.length, + deep = !options || options && options.deep !== false; + + if (_before && isFunction(_before)) { + _before.apply(this, arguments); + } // Recursively wrap all of a function's arguments that are + // functions themselves. + + + while (i--) { + args[i] = deep ? self.wrap(options, arguments[i]) : arguments[i]; + } + + try { + // Attempt to invoke user-land function + // NOTE: If you are a Sentry user, and you are seeing this stack frame, it + // means Raven caught an error invoking your application code. This is + // expected behavior and NOT indicative of a bug with Raven.js. + return func.apply(this, args); + } catch (e) { + self._ignoreNextOnError(); + + self.captureException(e, options); + throw e; + } + } // copy over properties of the old function + + + for (var property in func) { + if (hasKey(func, property)) { + wrapped[property] = func[property]; + } + } + + wrapped.prototype = func.prototype; + func.__raven_wrapper__ = wrapped; // Signal that this function has been wrapped/filled already + // for both debugging and to prevent it to being wrapped/filled twice + + wrapped.__raven__ = true; + wrapped.__orig__ = func; + return wrapped; + }, + + /* + * Uninstalls the global error handler. + * + * @return {Raven} + */ + uninstall: function uninstall() { + tracekit.report.uninstall(); + + this._unpatchFunctionToString(); + + this._restoreBuiltIns(); + + this._restoreConsole(); + + Error.stackTraceLimit = this._originalErrorStackTraceLimit; + this._isRavenInstalled = false; + return this; + }, + + /* + * Manually capture an exception and send it over to Sentry + * + * @param {error} ex An exception to be logged + * @param {object} options A specific set of options for this error [optional] + * @return {Raven} + */ + captureException: function captureException(ex, options) { + options = objectMerge({ + trimHeadFrames: 0 + }, options ? options : {}); // Cases for sending ex as a message, rather than an exception + + var isNotError = !isError(ex); + var isNotErrorEvent = !isErrorEvent(ex); + var isErrorEventWithoutError = isErrorEvent(ex) && !ex.error; + + if (isNotError && isNotErrorEvent || isErrorEventWithoutError) { + return this.captureMessage(ex, objectMerge(options, { + stacktrace: true, + // if we fall back to captureMessage, default to attempting a new trace + trimHeadFrames: options.trimHeadFrames + 1 + })); + } // Get actual Error from ErrorEvent + + + if (isErrorEvent(ex)) ex = ex.error; // Store the raw exception object for potential debugging and introspection + + this._lastCapturedException = ex; // TraceKit.report will re-raise any exception passed to it, + // which means you have to wrap it in try/catch. Instead, we + // can wrap it here and only re-raise if TraceKit.report + // raises an exception different from the one we asked to + // report on. + + try { + var stack = tracekit.computeStackTrace(ex); + + this._handleStackInfo(stack, options); + } catch (ex1) { + if (ex !== ex1) { + throw ex1; + } + } + + return this; + }, + + /* + * Manually send a message to Sentry + * + * @param {string} msg A plain message to be captured in Sentry + * @param {object} options A specific set of options for this message [optional] + * @return {Raven} + */ + captureMessage: function captureMessage(msg, options) { + // config() automagically converts ignoreErrors from a list to a RegExp so we need to test for an + // early call; we'll error on the side of logging anything called before configuration since it's + // probably something you should see: + if (!!this._globalOptions.ignoreErrors.test && this._globalOptions.ignoreErrors.test(msg)) { + return; + } + + options = options || {}; + var data = objectMerge({ + message: msg + '' // Make sure it's actually a string + + }, options); + var ex; // Generate a "synthetic" stack trace from this point. + // NOTE: If you are a Sentry user, and you are seeing this stack frame, it is NOT indicative + // of a bug with Raven.js. Sentry generates synthetic traces either by configuration, + // or if it catches a thrown object without a "stack" property. + + try { + throw new Error(msg); + } catch (ex1) { + ex = ex1; + } // null exception name so `Error` isn't prefixed to msg + + + ex.name = null; + var stack = tracekit.computeStackTrace(ex); // stack[0] is `throw new Error(msg)` call itself, we are interested in the frame that was just before that, stack[1] + + var initialCall = isArray(stack.stack) && stack.stack[1]; + var fileurl = initialCall && initialCall.url || ''; + + if (!!this._globalOptions.ignoreUrls.test && this._globalOptions.ignoreUrls.test(fileurl)) { + return; + } + + if (!!this._globalOptions.whitelistUrls.test && !this._globalOptions.whitelistUrls.test(fileurl)) { + return; + } + + if (this._globalOptions.stacktrace || options && options.stacktrace) { + options = objectMerge({ + // fingerprint on msg, not stack trace (legacy behavior, could be + // revisited) + fingerprint: msg, + // since we know this is a synthetic trace, the top N-most frames + // MUST be from Raven.js, so mark them as in_app later by setting + // trimHeadFrames + trimHeadFrames: (options.trimHeadFrames || 0) + 1 + }, options); + + var frames = this._prepareFrames(stack, options); + + data.stacktrace = { + // Sentry expects frames oldest to newest + frames: frames.reverse() + }; + } // Fire away! + + + this._send(data); + + return this; + }, + captureBreadcrumb: function captureBreadcrumb(obj) { + var crumb = objectMerge({ + timestamp: now() / 1000 + }, obj); + + if (isFunction(this._globalOptions.breadcrumbCallback)) { + var result = this._globalOptions.breadcrumbCallback(crumb); + + if (isObject(result) && !isEmptyObject(result)) { + crumb = result; + } else if (result === false) { + return this; + } + } + + this._breadcrumbs.push(crumb); + + if (this._breadcrumbs.length > this._globalOptions.maxBreadcrumbs) { + this._breadcrumbs.shift(); + } + + return this; + }, + addPlugin: function addPlugin(plugin + /*arg1, arg2, ... argN*/ + ) { + var pluginArgs = [].slice.call(arguments, 1); + + this._plugins.push([plugin, pluginArgs]); + + if (this._isRavenInstalled) { + this._drainPlugins(); + } + + return this; + }, + + /* + * Set/clear a user to be sent along with the payload. + * + * @param {object} user An object representing user data [optional] + * @return {Raven} + */ + setUserContext: function setUserContext(user) { + // Intentionally do not merge here since that's an unexpected behavior. + this._globalContext.user = user; + return this; + }, + + /* + * Merge extra attributes to be sent along with the payload. + * + * @param {object} extra An object representing extra data [optional] + * @return {Raven} + */ + setExtraContext: function setExtraContext(extra) { + this._mergeContext('extra', extra); + + return this; + }, + + /* + * Merge tags to be sent along with the payload. + * + * @param {object} tags An object representing tags [optional] + * @return {Raven} + */ + setTagsContext: function setTagsContext(tags) { + this._mergeContext('tags', tags); + + return this; + }, + + /* + * Clear all of the context. + * + * @return {Raven} + */ + clearContext: function clearContext() { + this._globalContext = {}; + return this; + }, + + /* + * Get a copy of the current context. This cannot be mutated. + * + * @return {object} copy of context + */ + getContext: function getContext() { + // lol javascript + return JSON.parse(stringify_1(this._globalContext)); + }, + + /* + * Set environment of application + * + * @param {string} environment Typically something like 'production'. + * @return {Raven} + */ + setEnvironment: function setEnvironment(environment) { + this._globalOptions.environment = environment; + return this; + }, + + /* + * Set release version of application + * + * @param {string} release Typically something like a git SHA to identify version + * @return {Raven} + */ + setRelease: function setRelease(release) { + this._globalOptions.release = release; + return this; + }, + + /* + * Set the dataCallback option + * + * @param {function} callback The callback to run which allows the + * data blob to be mutated before sending + * @return {Raven} + */ + setDataCallback: function setDataCallback(callback) { + var original = this._globalOptions.dataCallback; + this._globalOptions.dataCallback = keepOriginalCallback(original, callback); + return this; + }, + + /* + * Set the breadcrumbCallback option + * + * @param {function} callback The callback to run which allows filtering + * or mutating breadcrumbs + * @return {Raven} + */ + setBreadcrumbCallback: function setBreadcrumbCallback(callback) { + var original = this._globalOptions.breadcrumbCallback; + this._globalOptions.breadcrumbCallback = keepOriginalCallback(original, callback); + return this; + }, + + /* + * Set the shouldSendCallback option + * + * @param {function} callback The callback to run which allows + * introspecting the blob before sending + * @return {Raven} + */ + setShouldSendCallback: function setShouldSendCallback(callback) { + var original = this._globalOptions.shouldSendCallback; + this._globalOptions.shouldSendCallback = keepOriginalCallback(original, callback); + return this; + }, + + /** + * Override the default HTTP transport mechanism that transmits data + * to the Sentry server. + * + * @param {function} transport Function invoked instead of the default + * `makeRequest` handler. + * + * @return {Raven} + */ + setTransport: function setTransport(transport) { + this._globalOptions.transport = transport; + return this; + }, + + /* + * Get the latest raw exception that was captured by Raven. + * + * @return {error} + */ + lastException: function lastException() { + return this._lastCapturedException; + }, + + /* + * Get the last event id + * + * @return {string} + */ + lastEventId: function lastEventId() { + return this._lastEventId; + }, + + /* + * Determine if Raven is setup and ready to go. + * + * @return {boolean} + */ + isSetup: function isSetup() { + if (!this._hasJSON) return false; // needs JSON support + + if (!this._globalServer) { + if (!this.ravenNotConfiguredError) { + this.ravenNotConfiguredError = true; + + this._logDebug('error', 'Error: Raven has not been configured.'); + } + + return false; + } + + return true; + }, + afterLoad: function afterLoad() { + // TODO: remove window dependence? + // Attempt to initialize Raven on load + var RavenConfig = _window$1.RavenConfig; + + if (RavenConfig) { + this.config(RavenConfig.dsn, RavenConfig.config).install(); + } + }, + showReportDialog: function showReportDialog(options) { + if (!_document // doesn't work without a document (React native) + ) return; + options = options || {}; + var lastEventId = options.eventId || this.lastEventId(); + + if (!lastEventId) { + throw new configError('Missing eventId'); + } + + var dsn = options.dsn || this._dsn; + + if (!dsn) { + throw new configError('Missing DSN'); + } + + var encode = encodeURIComponent; + var qs = ''; + qs += '?eventId=' + encode(lastEventId); + qs += '&dsn=' + encode(dsn); + var user = options.user || this._globalContext.user; + + if (user) { + if (user.name) qs += '&name=' + encode(user.name); + if (user.email) qs += '&email=' + encode(user.email); + } + + var globalServer = this._getGlobalServer(this._parseDSN(dsn)); + + var script = _document.createElement('script'); + + script.async = true; + script.src = globalServer + '/api/embed/error-page/' + qs; + + (_document.head || _document.body).appendChild(script); + }, + + /**** Private functions ****/ + _ignoreNextOnError: function _ignoreNextOnError() { + var self = this; + this._ignoreOnError += 1; + setTimeout(function () { + // onerror should trigger before setTimeout + self._ignoreOnError -= 1; + }); + }, + _triggerEvent: function _triggerEvent(eventType, options) { + // NOTE: `event` is a native browser thing, so let's avoid conflicting wiht it + var evt, key; + if (!this._hasDocument) return; + options = options || {}; + eventType = 'raven' + eventType.substr(0, 1).toUpperCase() + eventType.substr(1); + + if (_document.createEvent) { + evt = _document.createEvent('HTMLEvents'); + evt.initEvent(eventType, true, true); + } else { + evt = _document.createEventObject(); + evt.eventType = eventType; + } + + for (key in options) { + if (hasKey(options, key)) { + evt[key] = options[key]; + } + } + + if (_document.createEvent) { + // IE9 if standards + _document.dispatchEvent(evt); + } else { + // IE8 regardless of Quirks or Standards + // IE9 if quirks + try { + _document.fireEvent('on' + evt.eventType.toLowerCase(), evt); + } catch (e) {// Do nothing + } + } + }, + + /** + * Wraps addEventListener to capture UI breadcrumbs + * @param evtName the event name (e.g. "click") + * @returns {Function} + * @private + */ + _breadcrumbEventHandler: function _breadcrumbEventHandler(evtName) { + var self = this; + return function (evt) { + // reset keypress timeout; e.g. triggering a 'click' after + // a 'keypress' will reset the keypress debounce so that a new + // set of keypresses can be recorded + self._keypressTimeout = null; // It's possible this handler might trigger multiple times for the same + // event (e.g. event propagation through node ancestors). Ignore if we've + // already captured the event. + + if (self._lastCapturedEvent === evt) return; + self._lastCapturedEvent = evt; // try/catch both: + // - accessing evt.target (see getsentry/raven-js#838, #768) + // - `htmlTreeAsString` because it's complex, and just accessing the DOM incorrectly + // can throw an exception in some circumstances. + + var target; + + try { + target = htmlTreeAsString(evt.target); + } catch (e) { + target = ''; + } + + self.captureBreadcrumb({ + category: 'ui.' + evtName, + // e.g. ui.click, ui.input + message: target + }); + }; + }, + + /** + * Wraps addEventListener to capture keypress UI events + * @returns {Function} + * @private + */ + _keypressEventHandler: function _keypressEventHandler() { + var self = this, + debounceDuration = 1000; // milliseconds + // TODO: if somehow user switches keypress target before + // debounce timeout is triggered, we will only capture + // a single breadcrumb from the FIRST target (acceptable?) + + return function (evt) { + var target; + + try { + target = evt.target; + } catch (e) { + // just accessing event properties can throw an exception in some rare circumstances + // see: https://github.com/getsentry/raven-js/issues/838 + return; + } + + var tagName = target && target.tagName; // only consider keypress events on actual input elements + // this will disregard keypresses targeting body (e.g. tabbing + // through elements, hotkeys, etc) + + if (!tagName || tagName !== 'INPUT' && tagName !== 'TEXTAREA' && !target.isContentEditable) return; // record first keypress in a series, but ignore subsequent + // keypresses until debounce clears + + var timeout = self._keypressTimeout; + + if (!timeout) { + self._breadcrumbEventHandler('input')(evt); + } + + clearTimeout(timeout); + self._keypressTimeout = setTimeout(function () { + self._keypressTimeout = null; + }, debounceDuration); + }; + }, + + /** + * Captures a breadcrumb of type "navigation", normalizing input URLs + * @param to the originating URL + * @param from the target URL + * @private + */ + _captureUrlChange: function _captureUrlChange(from, to) { + var parsedLoc = parseUrl(this._location.href); + var parsedTo = parseUrl(to); + var parsedFrom = parseUrl(from); // because onpopstate only tells you the "new" (to) value of location.href, and + // not the previous (from) value, we need to track the value of the current URL + // state ourselves + + this._lastHref = to; // Use only the path component of the URL if the URL matches the current + // document (almost all the time when using pushState) + + if (parsedLoc.protocol === parsedTo.protocol && parsedLoc.host === parsedTo.host) to = parsedTo.relative; + if (parsedLoc.protocol === parsedFrom.protocol && parsedLoc.host === parsedFrom.host) from = parsedFrom.relative; + this.captureBreadcrumb({ + category: 'navigation', + data: { + to: to, + from: from + } + }); + }, + _patchFunctionToString: function _patchFunctionToString() { + var self = this; + self._originalFunctionToString = Function.prototype.toString; // eslint-disable-next-line no-extend-native + + Function.prototype.toString = function () { + if (typeof this === 'function' && this.__raven__) { + return self._originalFunctionToString.apply(this.__orig__, arguments); + } + + return self._originalFunctionToString.apply(this, arguments); + }; + }, + _unpatchFunctionToString: function _unpatchFunctionToString() { + if (this._originalFunctionToString) { + // eslint-disable-next-line no-extend-native + Function.prototype.toString = this._originalFunctionToString; + } + }, + + /** + * Wrap timer functions and event targets to catch errors and provide + * better metadata. + */ + _instrumentTryCatch: function _instrumentTryCatch() { + var self = this; + var wrappedBuiltIns = self._wrappedBuiltIns; + + function wrapTimeFn(orig) { + return function (fn, t) { + // preserve arity + // Make a copy of the arguments to prevent deoptimization + // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments + var args = new Array(arguments.length); + + for (var i = 0; i < args.length; ++i) { + args[i] = arguments[i]; + } + + var originalCallback = args[0]; + + if (isFunction(originalCallback)) { + args[0] = self.wrap(originalCallback); + } // IE < 9 doesn't support .call/.apply on setInterval/setTimeout, but it + // also supports only two arguments and doesn't care what this is, so we + // can just call the original function directly. + + + if (orig.apply) { + return orig.apply(this, args); + } else { + return orig(args[0], args[1]); + } + }; + } + + var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; + + function wrapEventTarget(global) { + var proto = _window$1[global] && _window$1[global].prototype; + + if (proto && proto.hasOwnProperty && proto.hasOwnProperty('addEventListener')) { + fill(proto, 'addEventListener', function (orig) { + return function (evtName, fn, capture, secure) { + // preserve arity + try { + if (fn && fn.handleEvent) { + fn.handleEvent = self.wrap(fn.handleEvent); + } + } catch (err) {} // can sometimes get 'Permission denied to access property "handle Event' + // More breadcrumb DOM capture ... done here and not in `_instrumentBreadcrumbs` + // so that we don't have more than one wrapper function + + + var before, clickHandler, keypressHandler; + + if (autoBreadcrumbs && autoBreadcrumbs.dom && (global === 'EventTarget' || global === 'Node')) { + // NOTE: generating multiple handlers per addEventListener invocation, should + // revisit and verify we can just use one (almost certainly) + clickHandler = self._breadcrumbEventHandler('click'); + keypressHandler = self._keypressEventHandler(); + + before = function before(evt) { + // need to intercept every DOM event in `before` argument, in case that + // same wrapped method is re-used for different events (e.g. mousemove THEN click) + // see #724 + if (!evt) return; + var eventType; + + try { + eventType = evt.type; + } catch (e) { + // just accessing event properties can throw an exception in some rare circumstances + // see: https://github.com/getsentry/raven-js/issues/838 + return; + } + + if (eventType === 'click') return clickHandler(evt);else if (eventType === 'keypress') return keypressHandler(evt); + }; + } + + return orig.call(this, evtName, self.wrap(fn, undefined, before), capture, secure); + }; + }, wrappedBuiltIns); + fill(proto, 'removeEventListener', function (orig) { + return function (evt, fn, capture, secure) { + try { + fn = fn && (fn.__raven_wrapper__ ? fn.__raven_wrapper__ : fn); + } catch (e) {// ignore, accessing __raven_wrapper__ will throw in some Selenium environments + } + + return orig.call(this, evt, fn, capture, secure); + }; + }, wrappedBuiltIns); + } + } + + fill(_window$1, 'setTimeout', wrapTimeFn, wrappedBuiltIns); + fill(_window$1, 'setInterval', wrapTimeFn, wrappedBuiltIns); + + if (_window$1.requestAnimationFrame) { + fill(_window$1, 'requestAnimationFrame', function (orig) { + return function (cb) { + return orig(self.wrap(cb)); + }; + }, wrappedBuiltIns); + } // event targets borrowed from bugsnag-js: + // https://github.com/bugsnag/bugsnag-js/blob/master/src/bugsnag.js#L666 + + + var eventTargets = ['EventTarget', 'Window', 'Node', 'ApplicationCache', 'AudioTrackList', 'ChannelMergerNode', 'CryptoOperation', 'EventSource', 'FileReader', 'HTMLUnknownElement', 'IDBDatabase', 'IDBRequest', 'IDBTransaction', 'KeyOperation', 'MediaController', 'MessagePort', 'ModalWindow', 'Notification', 'SVGElementInstance', 'Screen', 'TextTrack', 'TextTrackCue', 'TextTrackList', 'WebSocket', 'WebSocketWorker', 'Worker', 'XMLHttpRequest', 'XMLHttpRequestEventTarget', 'XMLHttpRequestUpload']; + + for (var i = 0; i < eventTargets.length; i++) { + wrapEventTarget(eventTargets[i]); + } + }, + + /** + * Instrument browser built-ins w/ breadcrumb capturing + * - XMLHttpRequests + * - DOM interactions (click/typing) + * - window.location changes + * - console + * + * Can be disabled or individually configured via the `autoBreadcrumbs` config option + */ + _instrumentBreadcrumbs: function _instrumentBreadcrumbs() { + var self = this; + var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; + var wrappedBuiltIns = self._wrappedBuiltIns; + + function wrapProp(prop, xhr) { + if (prop in xhr && isFunction(xhr[prop])) { + fill(xhr, prop, function (orig) { + return self.wrap(orig); + }); // intentionally don't track filled methods on XHR instances + } + } + + if (autoBreadcrumbs.xhr && 'XMLHttpRequest' in _window$1) { + var xhrproto = XMLHttpRequest.prototype; + fill(xhrproto, 'open', function (origOpen) { + return function (method, url) { + // preserve arity + // if Sentry key appears in URL, don't capture + if (isString(url) && url.indexOf(self._globalKey) === -1) { + this.__raven_xhr = { + method: method, + url: url, + status_code: null + }; + } + + return origOpen.apply(this, arguments); + }; + }, wrappedBuiltIns); + fill(xhrproto, 'send', function (origSend) { + return function () { + // preserve arity + var xhr = this; + + function onreadystatechangeHandler() { + if (xhr.__raven_xhr && xhr.readyState === 4) { + try { + // touching statusCode in some platforms throws + // an exception + xhr.__raven_xhr.status_code = xhr.status; + } catch (e) { + /* do nothing */ + } + + self.captureBreadcrumb({ + type: 'http', + category: 'xhr', + data: xhr.__raven_xhr + }); + } + } + + var props = ['onload', 'onerror', 'onprogress']; + + for (var j = 0; j < props.length; j++) { + wrapProp(props[j], xhr); + } + + if ('onreadystatechange' in xhr && isFunction(xhr.onreadystatechange)) { + fill(xhr, 'onreadystatechange', function (orig) { + return self.wrap(orig, undefined, onreadystatechangeHandler); + } + /* intentionally don't track this instrumentation */ + ); + } else { + // if onreadystatechange wasn't actually set by the page on this xhr, we + // are free to set our own and capture the breadcrumb + xhr.onreadystatechange = onreadystatechangeHandler; + } + + return origSend.apply(this, arguments); + }; + }, wrappedBuiltIns); + } + + if (autoBreadcrumbs.xhr && supportsFetch()) { + fill(_window$1, 'fetch', function (origFetch) { + return function () { + // preserve arity + // Make a copy of the arguments to prevent deoptimization + // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments + var args = new Array(arguments.length); + + for (var i = 0; i < args.length; ++i) { + args[i] = arguments[i]; + } + + var fetchInput = args[0]; + var method = 'GET'; + var url; + + if (typeof fetchInput === 'string') { + url = fetchInput; + } else if ('Request' in _window$1 && fetchInput instanceof _window$1.Request) { + url = fetchInput.url; + + if (fetchInput.method) { + method = fetchInput.method; + } + } else { + url = '' + fetchInput; + } // if Sentry key appears in URL, don't capture, as it's our own request + + + if (url.indexOf(self._globalKey) !== -1) { + return origFetch.apply(this, args); + } + + if (args[1] && args[1].method) { + method = args[1].method; + } + + var fetchData = { + method: method, + url: url, + status_code: null + }; + return origFetch.apply(this, args).then(function (response) { + fetchData.status_code = response.status; + self.captureBreadcrumb({ + type: 'http', + category: 'fetch', + data: fetchData + }); + return response; + }); + }; + }, wrappedBuiltIns); + } // Capture breadcrumbs from any click that is unhandled / bubbled up all the way + // to the document. Do this before we instrument addEventListener. + + + if (autoBreadcrumbs.dom && this._hasDocument) { + if (_document.addEventListener) { + _document.addEventListener('click', self._breadcrumbEventHandler('click'), false); + + _document.addEventListener('keypress', self._keypressEventHandler(), false); + } else { + // IE8 Compatibility + _document.attachEvent('onclick', self._breadcrumbEventHandler('click')); + + _document.attachEvent('onkeypress', self._keypressEventHandler()); + } + } // record navigation (URL) changes + // NOTE: in Chrome App environment, touching history.pushState, *even inside + // a try/catch block*, will cause Chrome to output an error to console.error + // borrowed from: https://github.com/angular/angular.js/pull/13945/files + + + var chrome = _window$1.chrome; + var isChromePackagedApp = chrome && chrome.app && chrome.app.runtime; + var hasPushAndReplaceState = !isChromePackagedApp && _window$1.history && history.pushState && history.replaceState; + + if (autoBreadcrumbs.location && hasPushAndReplaceState) { + // TODO: remove onpopstate handler on uninstall() + var oldOnPopState = _window$1.onpopstate; + + _window$1.onpopstate = function () { + var currentHref = self._location.href; + + self._captureUrlChange(self._lastHref, currentHref); + + if (oldOnPopState) { + return oldOnPopState.apply(this, arguments); + } + }; + + var historyReplacementFunction = function historyReplacementFunction(origHistFunction) { + // note history.pushState.length is 0; intentionally not declaring + // params to preserve 0 arity + return function () + /* state, title, url */ + { + var url = arguments.length > 2 ? arguments[2] : undefined; // url argument is optional + + if (url) { + // coerce to string (this is what pushState does) + self._captureUrlChange(self._lastHref, url + ''); + } + + return origHistFunction.apply(this, arguments); + }; + }; + + fill(history, 'pushState', historyReplacementFunction, wrappedBuiltIns); + fill(history, 'replaceState', historyReplacementFunction, wrappedBuiltIns); + } + + if (autoBreadcrumbs.console && 'console' in _window$1 && console.log) { + // console + var consoleMethodCallback = function consoleMethodCallback(msg, data) { + self.captureBreadcrumb({ + message: msg, + level: data.level, + category: 'console' + }); + }; + + each(['debug', 'info', 'warn', 'error', 'log'], function (_, level) { + wrapConsoleMethod(console, level, consoleMethodCallback); + }); + } + }, + _restoreBuiltIns: function _restoreBuiltIns() { + // restore any wrapped builtins + var builtin; + + while (this._wrappedBuiltIns.length) { + builtin = this._wrappedBuiltIns.shift(); + var obj = builtin[0], + name = builtin[1], + orig = builtin[2]; + obj[name] = orig; + } + }, + _restoreConsole: function _restoreConsole() { + // eslint-disable-next-line guard-for-in + for (var method in this._originalConsoleMethods) { + this._originalConsole[method] = this._originalConsoleMethods[method]; + } + }, + _drainPlugins: function _drainPlugins() { + var self = this; // FIX ME TODO + + each(this._plugins, function (_, plugin) { + var installer = plugin[0]; + var args = plugin[1]; + installer.apply(self, [self].concat(args)); + }); + }, + _parseDSN: function _parseDSN(str) { + var m = dsnPattern.exec(str), + dsn = {}, + i = 7; + + try { + while (i--) { + dsn[dsnKeys[i]] = m[i] || ''; + } + } catch (e) { + throw new configError('Invalid DSN: ' + str); + } + + if (dsn.pass && !this._globalOptions.allowSecretKey) { + throw new configError('Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key'); + } + + return dsn; + }, + _getGlobalServer: function _getGlobalServer(uri) { + // assemble the endpoint from the uri pieces + var globalServer = '//' + uri.host + (uri.port ? ':' + uri.port : ''); + + if (uri.protocol) { + globalServer = uri.protocol + ':' + globalServer; + } + + return globalServer; + }, + _handleOnErrorStackInfo: function _handleOnErrorStackInfo() { + // if we are intentionally ignoring errors via onerror, bail out + if (!this._ignoreOnError) { + this._handleStackInfo.apply(this, arguments); + } + }, + _handleStackInfo: function _handleStackInfo(stackInfo, options) { + var frames = this._prepareFrames(stackInfo, options); + + this._triggerEvent('handle', { + stackInfo: stackInfo, + options: options + }); + + this._processException(stackInfo.name, stackInfo.message, stackInfo.url, stackInfo.lineno, frames, options); + }, + _prepareFrames: function _prepareFrames(stackInfo, options) { + var self = this; + var frames = []; + + if (stackInfo.stack && stackInfo.stack.length) { + each(stackInfo.stack, function (i, stack) { + var frame = self._normalizeFrame(stack, stackInfo.url); + + if (frame) { + frames.push(frame); + } + }); // e.g. frames captured via captureMessage throw + + if (options && options.trimHeadFrames) { + for (var j = 0; j < options.trimHeadFrames && j < frames.length; j++) { + frames[j].in_app = false; + } + } + } + + frames = frames.slice(0, this._globalOptions.stackTraceLimit); + return frames; + }, + _normalizeFrame: function _normalizeFrame(frame, stackInfoUrl) { + // normalize the frames data + var normalized = { + filename: frame.url, + lineno: frame.line, + colno: frame.column, + function: frame.func || '?' + }; // Case when we don't have any information about the error + // E.g. throwing a string or raw object, instead of an `Error` in Firefox + // Generating synthetic error doesn't add any value here + // + // We should probably somehow let a user know that they should fix their code + + if (!frame.url) { + normalized.filename = stackInfoUrl; // fallback to whole stacks url from onerror handler + } + + normalized.in_app = !( // determine if an exception came from outside of our app + // first we check the global includePaths list. + !!this._globalOptions.includePaths.test && !this._globalOptions.includePaths.test(normalized.filename) || // Now we check for fun, if the function name is Raven or TraceKit + /(Raven|TraceKit)\./.test(normalized['function']) || // finally, we do a last ditch effort and check for raven.min.js + /raven\.(min\.)?js$/.test(normalized.filename)); + return normalized; + }, + _processException: function _processException(type, message, fileurl, lineno, frames, options) { + var prefixedMessage = (type ? type + ': ' : '') + (message || ''); + + if (!!this._globalOptions.ignoreErrors.test && (this._globalOptions.ignoreErrors.test(message) || this._globalOptions.ignoreErrors.test(prefixedMessage))) { + return; + } + + var stacktrace; + + if (frames && frames.length) { + fileurl = frames[0].filename || fileurl; // Sentry expects frames oldest to newest + // and JS sends them as newest to oldest + + frames.reverse(); + stacktrace = { + frames: frames + }; + } else if (fileurl) { + stacktrace = { + frames: [{ + filename: fileurl, + lineno: lineno, + in_app: true + }] + }; + } + + if (!!this._globalOptions.ignoreUrls.test && this._globalOptions.ignoreUrls.test(fileurl)) { + return; + } + + if (!!this._globalOptions.whitelistUrls.test && !this._globalOptions.whitelistUrls.test(fileurl)) { + return; + } + + var data = objectMerge({ + // sentry.interfaces.Exception + exception: { + values: [{ + type: type, + value: message, + stacktrace: stacktrace + }] + }, + culprit: fileurl + }, options); // Fire away! + + this._send(data); + }, + _trimPacket: function _trimPacket(data) { + // For now, we only want to truncate the two different messages + // but this could/should be expanded to just trim everything + var max = this._globalOptions.maxMessageLength; + + if (data.message) { + data.message = truncate(data.message, max); + } + + if (data.exception) { + var exception = data.exception.values[0]; + exception.value = truncate(exception.value, max); + } + + var request = data.request; + + if (request) { + if (request.url) { + request.url = truncate(request.url, this._globalOptions.maxUrlLength); + } + + if (request.Referer) { + request.Referer = truncate(request.Referer, this._globalOptions.maxUrlLength); + } + } + + if (data.breadcrumbs && data.breadcrumbs.values) this._trimBreadcrumbs(data.breadcrumbs); + return data; + }, + + /** + * Truncate breadcrumb values (right now just URLs) + */ + _trimBreadcrumbs: function _trimBreadcrumbs(breadcrumbs) { + // known breadcrumb properties with urls + // TODO: also consider arbitrary prop values that start with (https?)?:// + var urlProps = ['to', 'from', 'url'], + urlProp, + crumb, + data; + + for (var i = 0; i < breadcrumbs.values.length; ++i) { + crumb = breadcrumbs.values[i]; + if (!crumb.hasOwnProperty('data') || !isObject(crumb.data) || objectFrozen(crumb.data)) continue; + data = objectMerge({}, crumb.data); + + for (var j = 0; j < urlProps.length; ++j) { + urlProp = urlProps[j]; + + if (data.hasOwnProperty(urlProp) && data[urlProp]) { + data[urlProp] = truncate(data[urlProp], this._globalOptions.maxUrlLength); + } + } + + breadcrumbs.values[i].data = data; + } + }, + _getHttpData: function _getHttpData() { + if (!this._hasNavigator && !this._hasDocument) return; + var httpData = {}; + + if (this._hasNavigator && _navigator.userAgent) { + httpData.headers = { + 'User-Agent': navigator.userAgent + }; + } // Check in `window` instead of `document`, as we may be in ServiceWorker environment + + + if (_window$1.location && _window$1.location.href) { + httpData.url = _window$1.location.href; + } + + if (this._hasDocument && _document.referrer) { + if (!httpData.headers) httpData.headers = {}; + httpData.headers.Referer = _document.referrer; + } + + return httpData; + }, + _resetBackoff: function _resetBackoff() { + this._backoffDuration = 0; + this._backoffStart = null; + }, + _shouldBackoff: function _shouldBackoff() { + return this._backoffDuration && now() - this._backoffStart < this._backoffDuration; + }, + + /** + * Returns true if the in-process data payload matches the signature + * of the previously-sent data + * + * NOTE: This has to be done at this level because TraceKit can generate + * data from window.onerror WITHOUT an exception object (IE8, IE9, + * other old browsers). This can take the form of an "exception" + * data object with a single frame (derived from the onerror args). + */ + _isRepeatData: function _isRepeatData(current) { + var last = this._lastData; + if (!last || current.message !== last.message || // defined for captureMessage + current.culprit !== last.culprit // defined for captureException/onerror + ) return false; // Stacktrace interface (i.e. from captureMessage) + + if (current.stacktrace || last.stacktrace) { + return isSameStacktrace(current.stacktrace, last.stacktrace); + } else if (current.exception || last.exception) { + // Exception interface (i.e. from captureException/onerror) + return isSameException(current.exception, last.exception); + } + + return true; + }, + _setBackoffState: function _setBackoffState(request) { + // If we are already in a backoff state, don't change anything + if (this._shouldBackoff()) { + return; + } + + var status = request.status; // 400 - project_id doesn't exist or some other fatal + // 401 - invalid/revoked dsn + // 429 - too many requests + + if (!(status === 400 || status === 401 || status === 429)) return; + var retry; + + try { + // If Retry-After is not in Access-Control-Expose-Headers, most + // browsers will throw an exception trying to access it + if (supportsFetch()) { + retry = request.headers.get('Retry-After'); + } else { + retry = request.getResponseHeader('Retry-After'); + } // Retry-After is returned in seconds + + + retry = parseInt(retry, 10) * 1000; + } catch (e) { + /* eslint no-empty:0 */ + } + + this._backoffDuration = retry ? // If Sentry server returned a Retry-After value, use it + retry : // Otherwise, double the last backoff duration (starts at 1 sec) + this._backoffDuration * 2 || 1000; + this._backoffStart = now(); + }, + _send: function _send(data) { + var globalOptions = this._globalOptions; + + var baseData = { + project: this._globalProject, + logger: globalOptions.logger, + platform: 'javascript' + }, + httpData = this._getHttpData(); + + if (httpData) { + baseData.request = httpData; + } // HACK: delete `trimHeadFrames` to prevent from appearing in outbound payload + + + if (data.trimHeadFrames) delete data.trimHeadFrames; + data = objectMerge(baseData, data); // Merge in the tags and extra separately since objectMerge doesn't handle a deep merge + + data.tags = objectMerge(objectMerge({}, this._globalContext.tags), data.tags); + data.extra = objectMerge(objectMerge({}, this._globalContext.extra), data.extra); // Send along our own collected metadata with extra + + data.extra['session:duration'] = now() - this._startTime; + + if (this._breadcrumbs && this._breadcrumbs.length > 0) { + // intentionally make shallow copy so that additions + // to breadcrumbs aren't accidentally sent in this request + data.breadcrumbs = { + values: [].slice.call(this._breadcrumbs, 0) + }; + } + + if (this._globalContext.user) { + // sentry.interfaces.User + data.user = this._globalContext.user; + } // Include the environment if it's defined in globalOptions + + + if (globalOptions.environment) data.environment = globalOptions.environment; // Include the release if it's defined in globalOptions + + if (globalOptions.release) data.release = globalOptions.release; // Include server_name if it's defined in globalOptions + + if (globalOptions.serverName) data.server_name = globalOptions.serverName; // Cleanup empty properties before sending them to the server + + Object.keys(data).forEach(function (key) { + if (data[key] == null || data[key] === '' || isEmptyObject(data[key])) { + delete data[key]; + } + }); + + if (isFunction(globalOptions.dataCallback)) { + data = globalOptions.dataCallback(data) || data; + } // Why?????????? + + + if (!data || isEmptyObject(data)) { + return; + } // Check if the request should be filtered or not + + + if (isFunction(globalOptions.shouldSendCallback) && !globalOptions.shouldSendCallback(data)) { + return; + } // Backoff state: Sentry server previously responded w/ an error (e.g. 429 - too many requests), + // so drop requests until "cool-off" period has elapsed. + + + if (this._shouldBackoff()) { + this._logDebug('warn', 'Raven dropped error due to backoff: ', data); + + return; + } + + if (typeof globalOptions.sampleRate === 'number') { + if (Math.random() < globalOptions.sampleRate) { + this._sendProcessedPayload(data); + } + } else { + this._sendProcessedPayload(data); + } + }, + _getUuid: function _getUuid() { + return uuid4(); + }, + _sendProcessedPayload: function _sendProcessedPayload(data, callback) { + var self = this; + var globalOptions = this._globalOptions; + if (!this.isSetup()) return; // Try and clean up the packet before sending by truncating long values + + data = this._trimPacket(data); // ideally duplicate error testing should occur *before* dataCallback/shouldSendCallback, + // but this would require copying an un-truncated copy of the data packet, which can be + // arbitrarily deep (extra_data) -- could be worthwhile? will revisit + + if (!this._globalOptions.allowDuplicates && this._isRepeatData(data)) { + this._logDebug('warn', 'Raven dropped repeat event: ', data); + + return; + } // Send along an event_id if not explicitly passed. + // This event_id can be used to reference the error within Sentry itself. + // Set lastEventId after we know the error should actually be sent + + + this._lastEventId = data.event_id || (data.event_id = this._getUuid()); // Store outbound payload after trim + + this._lastData = data; + + this._logDebug('debug', 'Raven about to send:', data); + + var auth = { + sentry_version: '7', + sentry_client: 'raven-js/' + this.VERSION, + sentry_key: this._globalKey + }; + + if (this._globalSecret) { + auth.sentry_secret = this._globalSecret; + } + + var exception = data.exception && data.exception.values[0]; // only capture 'sentry' breadcrumb is autoBreadcrumbs is truthy + + if (this._globalOptions.autoBreadcrumbs && this._globalOptions.autoBreadcrumbs.sentry) { + this.captureBreadcrumb({ + category: 'sentry', + message: exception ? (exception.type ? exception.type + ': ' : '') + exception.value : data.message, + event_id: data.event_id, + level: data.level || 'error' // presume error unless specified + + }); + } + + var url = this._globalEndpoint; + + (globalOptions.transport || this._makeRequest).call(this, { + url: url, + auth: auth, + data: data, + options: globalOptions, + onSuccess: function success() { + self._resetBackoff(); + + self._triggerEvent('success', { + data: data, + src: url + }); + + callback && callback(); + }, + onError: function failure(error) { + self._logDebug('error', 'Raven transport failed to send: ', error); + + if (error.request) { + self._setBackoffState(error.request); + } + + self._triggerEvent('failure', { + data: data, + src: url + }); + + error = error || new Error('Raven send failed (no additional details provided)'); + callback && callback(error); + } + }); + }, + _makeRequest: function _makeRequest(opts) { + // Auth is intentionally sent as part of query string (NOT as custom HTTP header) to avoid preflight CORS requests + var url = opts.url + '?' + urlencode(opts.auth); + var evaluatedHeaders = null; + var evaluatedFetchParameters = {}; + + if (opts.options.headers) { + evaluatedHeaders = this._evaluateHash(opts.options.headers); + } + + if (opts.options.fetchParameters) { + evaluatedFetchParameters = this._evaluateHash(opts.options.fetchParameters); + } + + if (supportsFetch()) { + evaluatedFetchParameters.body = stringify_1(opts.data); + var defaultFetchOptions = objectMerge({}, this._fetchDefaults); + var fetchOptions = objectMerge(defaultFetchOptions, evaluatedFetchParameters); + + if (evaluatedHeaders) { + fetchOptions.headers = evaluatedHeaders; + } + + return _window$1.fetch(url, fetchOptions).then(function (response) { + if (response.ok) { + opts.onSuccess && opts.onSuccess(); + } else { + var error = new Error('Sentry error code: ' + response.status); // It's called request only to keep compatibility with XHR interface + // and not add more redundant checks in setBackoffState method + + error.request = response; + opts.onError && opts.onError(error); + } + })['catch'](function () { + opts.onError && opts.onError(new Error('Sentry error code: network unavailable')); + }); + } + + var request = _window$1.XMLHttpRequest && new _window$1.XMLHttpRequest(); + if (!request) return; // if browser doesn't support CORS (e.g. IE7), we are out of luck + + var hasCORS = 'withCredentials' in request || typeof XDomainRequest !== 'undefined'; + if (!hasCORS) return; + + if ('withCredentials' in request) { + request.onreadystatechange = function () { + if (request.readyState !== 4) { + return; + } else if (request.status === 200) { + opts.onSuccess && opts.onSuccess(); + } else if (opts.onError) { + var err = new Error('Sentry error code: ' + request.status); + err.request = request; + opts.onError(err); + } + }; + } else { + request = new XDomainRequest(); // xdomainrequest cannot go http -> https (or vice versa), + // so always use protocol relative + + url = url.replace(/^https?:/, ''); // onreadystatechange not supported by XDomainRequest + + if (opts.onSuccess) { + request.onload = opts.onSuccess; + } + + if (opts.onError) { + request.onerror = function () { + var err = new Error('Sentry error code: XDomainRequest'); + err.request = request; + opts.onError(err); + }; + } + } + + request.open('POST', url); + + if (evaluatedHeaders) { + each(evaluatedHeaders, function (key, value) { + request.setRequestHeader(key, value); + }); + } + + request.send(stringify_1(opts.data)); + }, + _evaluateHash: function _evaluateHash(hash) { + var evaluated = {}; + + for (var key in hash) { + if (hash.hasOwnProperty(key)) { + var value = hash[key]; + evaluated[key] = typeof value === 'function' ? value() : value; + } + } + + return evaluated; + }, + _logDebug: function _logDebug(level) { + if (this._originalConsoleMethods[level] && this.debug) { + // In IE<10 console methods do not have their own 'apply' method + Function.prototype.apply.call(this._originalConsoleMethods[level], this._originalConsole, [].slice.call(arguments, 1)); + } + }, + _mergeContext: function _mergeContext(key, context) { + if (isUndefined(context)) { + delete this._globalContext[key]; + } else { + this._globalContext[key] = objectMerge(this._globalContext[key] || {}, context); + } + } +}; // Deprecations + +Raven$1.prototype.setUser = Raven$1.prototype.setUserContext; +Raven$1.prototype.setReleaseContext = Raven$1.prototype.setRelease; +var raven = Raven$1; + +/** + * Enforces a single instance of the Raven client, and the + * main entry point for Raven. If you are a consumer of the + * Raven library, you SHOULD load this file (vs raven.js). + **/ +// This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) + +var _window = typeof window !== 'undefined' ? window : typeof commonjsGlobal !== 'undefined' ? commonjsGlobal : typeof self !== 'undefined' ? self : {}; + +var _Raven = _window.Raven; +var Raven = new raven(); +/* + * Allow multiple versions of Raven to be installed. + * Strip Raven from the global context and returns the instance. + * + * @return {Raven} + */ + +Raven.noConflict = function () { + _window.Raven = _Raven; + return Raven; +}; + +Raven.afterLoad(); +var singleton = Raven; + +/** + * console plugin + * + * Monkey patches console.* calls into Sentry messages with + * their appropriate log levels. (Experimental) + * + * Options: + * + * `levels`: An array of levels (methods on `console`) to report to Sentry. + * Defaults to debug, info, warn, and error. + */ + +var wrapConsoleMethod$1 = console$3.wrapMethod; + +function consolePlugin(Raven, console, pluginOptions) { + console = console || window.console || {}; + pluginOptions = pluginOptions || {}; + var logLevels = pluginOptions.levels || ['debug', 'info', 'warn', 'error']; + if ('assert' in console) logLevels.push('assert'); + + var callback = function callback(msg, data) { + Raven.captureMessage(msg, data); + }; + + var level = logLevels.pop(); + + while (level) { + wrapConsoleMethod$1(console, level, callback); + level = logLevels.pop(); + } +} + +var console$5 = consolePlugin; + +/* This file was generated by './scripts/generate-plugin-combinations.js'! */ + +singleton.addPlugin(console$5); +var console$1 = {}; + +return console$1; + +}))); diff --git a/dist/console/raven.min.js b/dist/console/raven.min.js new file mode 100644 index 000000000000..239c9eeb0c21 --- /dev/null +++ b/dist/console/raven.min.js @@ -0,0 +1,3 @@ +/*! Raven.js 3.22.2 (1b6187b) | github.com/getsentry/raven-js */ +!function(a,b){"object"==typeof exports&&"undefined"!=typeof module?module.exports=b():"function"==typeof define&&define.amd?define(b):a.Raven=b()}(this,function(){"use strict";function a(a,b){return b={exports:{}},a(b,b.exports),b.exports}function b(a){return(b="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(a){return typeof a}:function(a){return a&&"function"==typeof Symbol&&a.constructor===Symbol&&a!==Symbol.prototype?"symbol":typeof a})(a)}function c(a){return"object"===b(a)&&null!==a}function d(a){switch({}.toString.call(a)){case"[object Error]":return!0;case"[object Exception]":return!0;case"[object DOMException]":return!0;default:return a instanceof Error}}function e(a){return l()&&"[object ErrorEvent]"==={}.toString.call(a)}function f(a){return void 0===a}function g(a){return"function"==typeof a}function h(a){return"[object Object]"===Object.prototype.toString.call(a)}function i(a){return"[object String]"===Object.prototype.toString.call(a)}function j(a){return"[object Array]"===Object.prototype.toString.call(a)}function k(a){if(!h(a))return!1;for(var b in a)if(a.hasOwnProperty(b))return!1;return!0}function l(){try{return new ErrorEvent(""),!0}catch(a){return!1}}function m(){if(!("fetch"in N))return!1;try{return new Headers,new Request(""),new Response,!0}catch(a){return!1}}function n(a){function b(b,c){var d=a(b)||b;return c?c(d)||d:d}return b}function o(a,b){var c,d;if(f(a.length))for(c in a)s(a,c)&&b.call(null,c,a[c]);else if(d=a.length)for(c=0;c ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function y(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&i(b))for(c=b.split(/\s+/),f=0;f=0;--b)l[b]===a&&l.splice(b,1)}function c(){g(),l=[]}function d(a,b){var c=null;if(!b||P.collectWindowErrors){for(var d in l)if(l.hasOwnProperty(d))try{l[d].apply(null,[a].concat(R.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function e(a,b,c,e,f){var g=null,i=O.isErrorEvent(f)?f.error:f,k=O.isErrorEvent(a)?a.message:a;if(o)P.computeStackTrace.augmentStackTraceWithInitialElement(o,b,c,k),h();else if(i&&O.isError(i))g=P.computeStackTrace(i),d(g,!0);else{var l,m={url:b,line:c,column:e},n=void 0;if("[object String]"==={}.toString.call(k)){var l=k.match(T);l&&(n=l[1],k=l[2])}m.func=S,g={name:n,message:k,url:F(),stack:[m]},d(g,!0)}return!!j&&j.apply(this,arguments)}function f(){k||(j=Q.onerror,Q.onerror=e,k=!0)}function g(){k&&(Q.onerror=j,k=!1,j=void 0)}function h(){var a=o,b=m;m=null,o=null,n=null,d.apply(null,[a,!1].concat(b))}function i(a,b){var c=R.call(arguments,1);if(o){if(n===a)return;h()}var d=P.computeStackTrace(a);if(o=d,n=a,m=c,setTimeout(function(){n===a&&h()},d.incomplete?2e3:0),b!==!1)throw a}var j,k,l=[],m=null,n=null,o=null;return i.subscribe=a,i.unsubscribe=b,i.uninstall=c,i}(),P.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,d,e=/^\s*at (.*?) ?\(((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,f=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|\[native).*?|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,g=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,h=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,i=/\((\S*)(?::(\d+))(?::(\d+))\)/,j=a.stack.split("\n"),k=[],l=(/^(.*) is undefined$/.exec(a.message),0),m=j.length;l eval")>-1;o&&(b=h.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==l||c[5]||"undefined"==typeof a.columnNumber||(k[0].column=a.columnNumber+1),d={url:c[3],func:c[1]||S,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}!d.func&&d.line&&(d.func=S),k.push(d)}return k.length?{name:a.name,message:a.message,url:F(),stack:k}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=S),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,e){for(var f,g,h=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,i=[],j={},k=!1,l=c.caller;l&&!k;l=l.caller)if(l!==d&&l!==P.report){if(g={url:null,func:S,line:null,column:null},l.name?g.func=l.name:(f=h.exec(l.toString()))&&(g.func=f[1]),"undefined"==typeof g.func)try{g.func=f.input.substring(0,f.input.indexOf("{"))}catch(m){}j[""+l]?k=!0:j[""+l]=!0,i.push(g)}e&&i.splice(0,e);var n={name:a.name,message:a.message,url:F(),stack:i};return b(n,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),n}function d(b,d){var e=null;d=null==d?0:+d;try{if(e=a(b))return e}catch(f){if(P.debug)throw f}try{if(e=c(b,d+1))return e}catch(f){if(P.debug)throw f}return{name:b.name,message:b.message,url:F()}}return d.augmentStackTraceWithInitialElement=b,d.computeStackTraceFromStackProp=a,d}();var U=P,V=a(function(a,b){function c(a,b){for(var c=0;c0){var i=c(d,this);~i?d.splice(i+1):d.push(this),~i?f.splice(i,1/0,g):f.push(g),~c(d,h)&&(h=b.call(this,g,h))}else d.push(h);return null==a?h instanceof Error?e(h):h:a.call(this,g,h)}}b=a.exports=d,b.getSerialize=f});G.prototype=new Error,G.prototype.constructor=G;var W=G,X=function(a,b,c){var d=a[b],e=a;if(b in a){var f="warn"===b?"warning":b;a[b]=function(){var a=[].slice.call(arguments),g=O.safeJoin(a," "),h={level:f,logger:"console",extra:{arguments:a}};"assert"===b?a[0]===!1&&(g="Assertion failed: "+(O.safeJoin(a.slice(1)," ")||"console.assert"),h.extra.arguments=a.slice(1),c&&c(g,h)):c&&c(g,h),d&&Function.prototype.apply.call(d,e,a)}}},Y={wrapMethod:X},Z=O.isError,$=O.isObject,_=O.isErrorEvent,aa=O.isUndefined,ba=O.isFunction,ca=O.isString,da=O.isArray,ea=O.isEmptyObject,fa=O.each,ga=O.objectMerge,ha=O.truncate,ia=O.objectFrozen,ja=O.hasKey,ka=O.joinRegExp,la=O.urlencode,ma=O.uuid4,na=O.htmlTreeAsString,oa=O.isSameException,pa=O.isSameStacktrace,qa=O.parseUrl,ra=O.fill,sa=O.supportsFetch,ta=Y.wrapMethod,ua="source protocol user pass host port path".split(" "),va=/^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/,wa="undefined"!=typeof window?window:"undefined"!=typeof L?L:"undefined"!=typeof self?self:{},xa=wa.document,ya=wa.navigator;J.prototype={VERSION:"3.22.2",debug:!1,TraceKit:U,config:function(a,b){var c=this;if(c.i)return this.C("error","Error: Raven has already been configured"),c;if(!a)return c;var d=c.m;b&&fa(b,function(a,b){"tags"===a||"extra"===a||"user"===a?c.l[a]=b:d[a]=b}),c.setDSN(a),d.ignoreErrors.push(/^Script error\.?$/),d.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/),d.ignoreErrors=ka(d.ignoreErrors),d.ignoreUrls=!!d.ignoreUrls.length&&ka(d.ignoreUrls),d.whitelistUrls=!!d.whitelistUrls.length&&ka(d.whitelistUrls),d.includePaths=ka(d.includePaths),d.maxBreadcrumbs=Math.max(0,Math.min(d.maxBreadcrumbs||100,100));var e={xhr:!0,console:!0,dom:!0,location:!0,sentry:!0},f=d.autoBreadcrumbs;"[object Object]"==={}.toString.call(f)?f=ga(e,f):f!==!1&&(f=e),d.autoBreadcrumbs=f;var g={tryCatch:!0},h=d.instrument;return"[object Object]"==={}.toString.call(h)?h=ga(g,h):h!==!1&&(h=g),d.instrument=h,U.collectWindowErrors=!!d.collectWindowErrors,c},install:function(){var a=this;return a.isSetup()&&!a.p&&(U.report.subscribe(function(){a.D.apply(a,arguments)}),a.E(),a.m.instrument&&a.m.instrument.tryCatch&&a.F(),a.m.autoBreadcrumbs&&a.G(),a.H(),a.p=!0),Error.stackTraceLimit=a.m.stackTraceLimit,this},setDSN:function(a){var b=this,c=b.I(a),d=c.path.lastIndexOf("/"),e=c.path.substr(1,d);b.J=a,b.j=c.user,b.K=c.pass&&c.pass.substr(1),b.k=c.path.substr(d+1),b.i=b.L(c),b.M=b.i+"/"+e+"api/"+b.k+"/store/",this.A()},context:function(a,b,c){return ba(a)&&(c=b||[],b=a,a=void 0),this.wrap(a,b).apply(this,c)},wrap:function(a,b,c){function d(){var d=[],f=arguments.length,g=!a||a&&a.deep!==!1;for(c&&ba(c)&&c.apply(this,arguments);f--;)d[f]=g?e.wrap(a,arguments[f]):arguments[f];try{return b.apply(this,d)}catch(h){throw e.N(),e.captureException(h,a),h}}var e=this;if(aa(b)&&!ba(a))return a;if(ba(a)&&(b=a,a=void 0),!ba(b))return b;try{if(b.a)return b;if(b.O)return b.O}catch(f){return b}for(var g in b)ja(b,g)&&(d[g]=b[g]);return d.prototype=b.prototype,b.O=d,d.a=!0,d.b=b,d},uninstall:function(){return U.report.uninstall(),this.P(),this.Q(),this.R(),Error.stackTraceLimit=this.q,this.p=!1,this},captureException:function(a,b){b=ga({trimHeadFrames:0},b?b:{});var c=!Z(a),d=!_(a),e=_(a)&&!a.error;if(c&&d||e)return this.captureMessage(a,ga(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}));_(a)&&(a=a.error),this.f=a;try{var f=U.computeStackTrace(a);this.S(f,b)}catch(g){if(a!==g)throw g}return this},captureMessage:function(a,b){if(!this.m.ignoreErrors.test||!this.m.ignoreErrors.test(a)){b=b||{};var c,d=ga({message:a+""},b);try{throw new Error(a)}catch(e){c=e}c.name=null;var f=U.computeStackTrace(c),g=da(f.stack)&&f.stack[1],h=g&&g.url||"";if((!this.m.ignoreUrls.test||!this.m.ignoreUrls.test(h))&&(!this.m.whitelistUrls.test||this.m.whitelistUrls.test(h))){if(this.m.stacktrace||b&&b.stacktrace){b=ga({fingerprint:a,trimHeadFrames:(b.trimHeadFrames||0)+1},b);var i=this.T(f,b);d.stacktrace={frames:i.reverse()}}return this.U(d),this}}},captureBreadcrumb:function(a){var b=ga({timestamp:H()/1e3},a);if(ba(this.m.breadcrumbCallback)){var c=this.m.breadcrumbCallback(b);if($(c)&&!ea(c))b=c;else if(c===!1)return this}return this.w.push(b),this.w.length>this.m.maxBreadcrumbs&&this.w.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.t.push([a,b]),this.p&&this.H(),this},setUserContext:function(a){return this.l.user=a,this},setExtraContext:function(a){return this.V("extra",a),this},setTagsContext:function(a){return this.V("tags",a),this},clearContext:function(){return this.l={},this},getContext:function(){return JSON.parse(V(this.l))},setEnvironment:function(a){return this.m.environment=a,this},setRelease:function(a){return this.m.release=a,this},setDataCallback:function(a){var b=this.m.dataCallback;return this.m.dataCallback=I(b,a),this},setBreadcrumbCallback:function(a){var b=this.m.breadcrumbCallback;return this.m.breadcrumbCallback=I(b,a),this},setShouldSendCallback:function(a){var b=this.m.shouldSendCallback;return this.m.shouldSendCallback=I(b,a),this},setTransport:function(a){return this.m.transport=a,this},lastException:function(){return this.f},lastEventId:function(){return this.h},isSetup:function(){return!!this.c&&(!!this.i||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.C("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=wa.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(xa){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new W("Missing eventId");var c=a.dsn||this.J;if(!c)throw new W("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.l.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.L(this.I(c)),h=xa.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(xa.head||xa.body).appendChild(h)}},N:function(){var a=this;this.o+=1,setTimeout(function(){a.o-=1})},W:function(a,b){var c,d;if(this.d){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),xa.createEvent?(c=xa.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=xa.createEventObject(),c.eventType=a);for(d in b)ja(b,d)&&(c[d]=b[d]);if(xa.createEvent)xa.dispatchEvent(c);else try{xa.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},X:function(a){var b=this;return function(c){if(b.Y=null,b.x!==c){b.x=c;var d;try{d=na(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},Z:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.Y;g||a.X("input")(c),clearTimeout(g),a.Y=setTimeout(function(){a.Y=null},b)}}},$:function(a,b){var c=qa(this.y.href),d=qa(b),e=qa(a);this.z=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},E:function(){var a=this;a._=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.a?a._.apply(this.b,arguments):a._.apply(this,arguments)}},P:function(){this._&&(Function.prototype.toString=this._)},F:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.$(b.z,c+""),a.apply(this,arguments)}};ra(history,"pushState",j,d),ra(history,"replaceState",j,d)}if(c.console&&"console"in wa&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};fa(["debug","info","warn","error","log"],function(a,b){ta(console,b,k)})}},Q:function(){for(var a;this.v.length;){a=this.v.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},R:function(){for(var a in this.s)this.r[a]=this.s[a]},H:function(){var a=this;fa(this.t,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},I:function(a){var b=va.exec(a),c={},d=7;try{for(;d--;)c[ua[d]]=b[d]||""}catch(e){throw new W("Invalid DSN: "+a)}if(c.pass&&!this.m.allowSecretKey)throw new W("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},L:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},D:function(){this.o||this.S.apply(this,arguments)},S:function(a,b){var c=this.T(a,b);this.W("handle",{stackInfo:a,options:b}),this.ba(a.name,a.message,a.url,a.lineno,c,b)},T:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(fa(a.stack,function(b,e){var f=c.ca(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.w,0)}),this.l.user&&(a.user=this.l.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||ea(a[b]))&&delete a[b]}),ba(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!ea(a)&&(!ba(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.ia()?void this.C("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() href parsing trick because React Native and other +// environments where DOM might not be available + + +function parseUrl$1(url) { + if (typeof url !== 'string') return {}; + var match = url.match(/^(([^:\/?#]+):)?(\/\/([^\/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?$/); // coerce to undefined values to empty string so we don't get 'undefined' + + var query = match[6] || ''; + var fragment = match[8] || ''; + return { + protocol: match[2], + host: match[4], + path: match[5], + relative: match[5] + query + fragment // everything minus origin + + }; +} + +function uuid4$1() { + var crypto = _window$3.crypto || _window$3.msCrypto; + + if (!isUndefined$1(crypto) && crypto.getRandomValues) { + // Use window.crypto API if available + // eslint-disable-next-line no-undef + var arr = new Uint16Array(8); + crypto.getRandomValues(arr); // set 4 in byte 7 + + arr[3] = arr[3] & 0xfff | 0x4000; // set 2 most significant bits of byte 9 to '10' + + arr[4] = arr[4] & 0x3fff | 0x8000; + + var pad = function pad(num) { + var v = num.toString(16); + + while (v.length < 4) { + v = '0' + v; + } + + return v; + }; + + return pad(arr[0]) + pad(arr[1]) + pad(arr[2]) + pad(arr[3]) + pad(arr[4]) + pad(arr[5]) + pad(arr[6]) + pad(arr[7]); + } else { + // http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/2117523#2117523 + return 'xxxxxxxxxxxx4xxxyxxxxxxxxxxxxxxx'.replace(/[xy]/g, function (c) { + var r = Math.random() * 16 | 0, + v = c === 'x' ? r : r & 0x3 | 0x8; + return v.toString(16); + }); + } +} +/** + * Given a child DOM element, returns a query-selector statement describing that + * and its ancestors + * e.g. [HTMLElement] => body > div > input#foo.btn[name=baz] + * @param elem + * @returns {string} + */ + + +function htmlTreeAsString$1(elem) { + /* eslint no-extra-parens:0*/ + var MAX_TRAVERSE_HEIGHT = 5, + MAX_OUTPUT_LEN = 80, + out = [], + height = 0, + len = 0, + separator = ' > ', + sepLength = separator.length, + nextStr; + + while (elem && height++ < MAX_TRAVERSE_HEIGHT) { + nextStr = htmlElementAsString(elem); // bail out if + // - nextStr is the 'html' element + // - the length of the string that would be created exceeds MAX_OUTPUT_LEN + // (ignore this limit if we are on the first iteration) + + if (nextStr === 'html' || height > 1 && len + out.length * sepLength + nextStr.length >= MAX_OUTPUT_LEN) { + break; + } + + out.push(nextStr); + len += nextStr.length; + elem = elem.parentNode; + } + + return out.reverse().join(separator); +} +/** + * Returns a simple, query-selector representation of a DOM element + * e.g. [HTMLElement] => input#foo.btn[name=baz] + * @param HTMLElement + * @returns {string} + */ + + +function htmlElementAsString(elem) { + var out = [], + className, + classes, + key, + attr, + i; + + if (!elem || !elem.tagName) { + return ''; + } + + out.push(elem.tagName.toLowerCase()); + + if (elem.id) { + out.push('#' + elem.id); + } + + className = elem.className; + + if (className && isString$1(className)) { + classes = className.split(/\s+/); + + for (i = 0; i < classes.length; i++) { + out.push('.' + classes[i]); + } + } + + var attrWhitelist = ['type', 'name', 'title', 'alt']; + + for (i = 0; i < attrWhitelist.length; i++) { + key = attrWhitelist[i]; + attr = elem.getAttribute(key); + + if (attr) { + out.push('[' + key + '="' + attr + '"]'); + } + } + + return out.join(''); +} +/** + * Returns true if either a OR b is truthy, but not both + */ + + +function isOnlyOneTruthy(a, b) { + return !!(!!a ^ !!b); +} +/** + * Returns true if both parameters are undefined + */ + + +function isBothUndefined(a, b) { + return isUndefined$1(a) && isUndefined$1(b); +} +/** + * Returns true if the two input exception interfaces have the same content + */ + + +function isSameException$1(ex1, ex2) { + if (isOnlyOneTruthy(ex1, ex2)) return false; + ex1 = ex1.values[0]; + ex2 = ex2.values[0]; + if (ex1.type !== ex2.type || ex1.value !== ex2.value) return false; // in case both stacktraces are undefined, we can't decide so default to false + + if (isBothUndefined(ex1.stacktrace, ex2.stacktrace)) return false; + return isSameStacktrace$1(ex1.stacktrace, ex2.stacktrace); +} +/** + * Returns true if the two input stack trace interfaces have the same content + */ + + +function isSameStacktrace$1(stack1, stack2) { + if (isOnlyOneTruthy(stack1, stack2)) return false; + var frames1 = stack1.frames; + var frames2 = stack2.frames; // Exit early if frame count differs + + if (frames1.length !== frames2.length) return false; // Iterate through every frame; bail out if anything differs + + var a, b; + + for (var i = 0; i < frames1.length; i++) { + a = frames1[i]; + b = frames2[i]; + if (a.filename !== b.filename || a.lineno !== b.lineno || a.colno !== b.colno || a['function'] !== b['function']) return false; + } + + return true; +} +/** + * Polyfill a method + * @param obj object e.g. `document` + * @param name method name present on object e.g. `addEventListener` + * @param replacement replacement function + * @param track {optional} record instrumentation to an array + */ + + +function fill$1(obj, name, replacement, track) { + var orig = obj[name]; + obj[name] = replacement(orig); + obj[name].__raven__ = true; + obj[name].__orig__ = orig; + + if (track) { + track.push([obj, name, orig]); + } +} +/** + * Join values in array + * @param input array of values to be joined together + * @param delimiter string to be placed in-between values + * @returns {string} + */ + + +function safeJoin(input, delimiter) { + if (!isArray$1(input)) return ''; + var output = []; + + for (var i = 0; i < input.length; i++) { + try { + output.push(String(input[i])); + } catch (e) { + output.push('[value cannot be serialized]'); + } + } + + return output.join(delimiter); +} + +var utils = { + isObject: isObject$1, + isError: isError$1, + isErrorEvent: isErrorEvent$1, + isUndefined: isUndefined$1, + isFunction: isFunction$1, + isPlainObject: isPlainObject, + isString: isString$1, + isArray: isArray$1, + isEmptyObject: isEmptyObject$1, + supportsErrorEvent: supportsErrorEvent, + supportsFetch: supportsFetch$1, + wrappedCallback: wrappedCallback, + each: each$1, + objectMerge: objectMerge$1, + truncate: truncate$1, + objectFrozen: objectFrozen$1, + hasKey: hasKey$1, + joinRegExp: joinRegExp$1, + urlencode: urlencode$1, + uuid4: uuid4$1, + htmlTreeAsString: htmlTreeAsString$1, + htmlElementAsString: htmlElementAsString, + isSameException: isSameException$1, + isSameStacktrace: isSameStacktrace$1, + parseUrl: parseUrl$1, + fill: fill$1, + safeJoin: safeJoin +}; + +/* + TraceKit - Cross brower stack traces + + This was originally forked from github.com/occ/TraceKit, but has since been + largely re-written and is now maintained as part of raven-js. Tests for + this are in test/vendor. + + MIT license +*/ + +var TraceKit = { + collectWindowErrors: true, + debug: false +}; // This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) + +var _window$2 = typeof window !== 'undefined' ? window : typeof commonjsGlobal !== 'undefined' ? commonjsGlobal : typeof self !== 'undefined' ? self : {}; // global reference to slice + + +var _slice = [].slice; +var UNKNOWN_FUNCTION = '?'; // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error#Error_types + +var ERROR_TYPES_RE = /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/; + +function getLocationHref() { + if (typeof document === 'undefined' || document.location == null) return ''; + return document.location.href; +} +/** + * TraceKit.report: cross-browser processing of unhandled exceptions + * + * Syntax: + * TraceKit.report.subscribe(function(stackInfo) { ... }) + * TraceKit.report.unsubscribe(function(stackInfo) { ... }) + * TraceKit.report(exception) + * try { ...code... } catch(ex) { TraceKit.report(ex); } + * + * Supports: + * - Firefox: full stack trace with line numbers, plus column number + * on top frame; column number is not guaranteed + * - Opera: full stack trace with line and column numbers + * - Chrome: full stack trace with line and column numbers + * - Safari: line and column number for the top frame only; some frames + * may be missing, and column number is not guaranteed + * - IE: line and column number for the top frame only; some frames + * may be missing, and column number is not guaranteed + * + * In theory, TraceKit should work on all of the following versions: + * - IE5.5+ (only 8.0 tested) + * - Firefox 0.9+ (only 3.5+ tested) + * - Opera 7+ (only 10.50 tested; versions 9 and earlier may require + * Exceptions Have Stacktrace to be enabled in opera:config) + * - Safari 3+ (only 4+ tested) + * - Chrome 1+ (only 5+ tested) + * - Konqueror 3.5+ (untested) + * + * Requires TraceKit.computeStackTrace. + * + * Tries to catch all unhandled exceptions and report them to the + * subscribed handlers. Please note that TraceKit.report will rethrow the + * exception. This is REQUIRED in order to get a useful stack trace in IE. + * If the exception does not reach the top of the browser, you will only + * get a stack trace from the point where TraceKit.report was called. + * + * Handlers receive a stackInfo object as described in the + * TraceKit.computeStackTrace docs. + */ + + +TraceKit.report = function reportModuleWrapper() { + var handlers = [], + lastArgs = null, + lastException = null, + lastExceptionStack = null; + /** + * Add a crash handler. + * @param {Function} handler + */ + + function subscribe(handler) { + installGlobalHandler(); + handlers.push(handler); + } + /** + * Remove a crash handler. + * @param {Function} handler + */ + + + function unsubscribe(handler) { + for (var i = handlers.length - 1; i >= 0; --i) { + if (handlers[i] === handler) { + handlers.splice(i, 1); + } + } + } + /** + * Remove all crash handlers. + */ + + + function unsubscribeAll() { + uninstallGlobalHandler(); + handlers = []; + } + /** + * Dispatch stack information to all handlers. + * @param {Object.} stack + */ + + + function notifyHandlers(stack, isWindowError) { + var exception = null; + + if (isWindowError && !TraceKit.collectWindowErrors) { + return; + } + + for (var i in handlers) { + if (handlers.hasOwnProperty(i)) { + try { + handlers[i].apply(null, [stack].concat(_slice.call(arguments, 2))); + } catch (inner) { + exception = inner; + } + } + } + + if (exception) { + throw exception; + } + } + + var _oldOnerrorHandler, _onErrorHandlerInstalled; + /** + * Ensures all global unhandled exceptions are recorded. + * Supported by Gecko and IE. + * @param {string} msg Error message. + * @param {string} url URL of script that generated the exception. + * @param {(number|string)} lineNo The line number at which the error + * occurred. + * @param {?(number|string)} colNo The column number at which the error + * occurred. + * @param {?Error} ex The actual Error object. + */ + + + function traceKitWindowOnError(msg, url, lineNo, colNo, ex) { + var stack = null; // If 'ex' is ErrorEvent, get real Error from inside + + var exception = utils.isErrorEvent(ex) ? ex.error : ex; // If 'msg' is ErrorEvent, get real message from inside + + var message = utils.isErrorEvent(msg) ? msg.message : msg; + + if (lastExceptionStack) { + TraceKit.computeStackTrace.augmentStackTraceWithInitialElement(lastExceptionStack, url, lineNo, message); + processLastException(); + } else if (exception && utils.isError(exception)) { + // non-string `exception` arg; attempt to extract stack trace + // New chrome and blink send along a real error object + // Let's just report that like a normal error. + // See: https://mikewest.org/2013/08/debugging-runtime-errors-with-window-onerror + stack = TraceKit.computeStackTrace(exception); + notifyHandlers(stack, true); + } else { + var location = { + url: url, + line: lineNo, + column: colNo + }; + var name = undefined; + var groups; + + if ({}.toString.call(message) === '[object String]') { + var groups = message.match(ERROR_TYPES_RE); + + if (groups) { + name = groups[1]; + message = groups[2]; + } + } + + location.func = UNKNOWN_FUNCTION; + stack = { + name: name, + message: message, + url: getLocationHref(), + stack: [location] + }; + notifyHandlers(stack, true); + } + + if (_oldOnerrorHandler) { + return _oldOnerrorHandler.apply(this, arguments); + } + + return false; + } + + function installGlobalHandler() { + if (_onErrorHandlerInstalled) { + return; + } + + _oldOnerrorHandler = _window$2.onerror; + _window$2.onerror = traceKitWindowOnError; + _onErrorHandlerInstalled = true; + } + + function uninstallGlobalHandler() { + if (!_onErrorHandlerInstalled) { + return; + } + + _window$2.onerror = _oldOnerrorHandler; + _onErrorHandlerInstalled = false; + _oldOnerrorHandler = undefined; + } + + function processLastException() { + var _lastExceptionStack = lastExceptionStack, + _lastArgs = lastArgs; + lastArgs = null; + lastExceptionStack = null; + lastException = null; + notifyHandlers.apply(null, [_lastExceptionStack, false].concat(_lastArgs)); + } + /** + * Reports an unhandled Error to TraceKit. + * @param {Error} ex + * @param {?boolean} rethrow If false, do not re-throw the exception. + * Only used for window.onerror to not cause an infinite loop of + * rethrowing. + */ + + + function report(ex, rethrow) { + var args = _slice.call(arguments, 1); + + if (lastExceptionStack) { + if (lastException === ex) { + return; // already caught by an inner catch block, ignore + } else { + processLastException(); + } + } + + var stack = TraceKit.computeStackTrace(ex); + lastExceptionStack = stack; + lastException = ex; + lastArgs = args; // If the stack trace is incomplete, wait for 2 seconds for + // slow slow IE to see if onerror occurs or not before reporting + // this exception; otherwise, we will end up with an incomplete + // stack trace + + setTimeout(function () { + if (lastException === ex) { + processLastException(); + } + }, stack.incomplete ? 2000 : 0); + + if (rethrow !== false) { + throw ex; // re-throw to propagate to the top level (and cause window.onerror) + } + } + + report.subscribe = subscribe; + report.unsubscribe = unsubscribe; + report.uninstall = unsubscribeAll; + return report; +}(); +/** + * TraceKit.computeStackTrace: cross-browser stack traces in JavaScript + * + * Syntax: + * s = TraceKit.computeStackTrace(exception) // consider using TraceKit.report instead (see below) + * Returns: + * s.name - exception name + * s.message - exception message + * s.stack[i].url - JavaScript or HTML file URL + * s.stack[i].func - function name, or empty for anonymous functions (if guessing did not work) + * s.stack[i].args - arguments passed to the function, if known + * s.stack[i].line - line number, if known + * s.stack[i].column - column number, if known + * + * Supports: + * - Firefox: full stack trace with line numbers and unreliable column + * number on top frame + * - Opera 10: full stack trace with line and column numbers + * - Opera 9-: full stack trace with line numbers + * - Chrome: full stack trace with line and column numbers + * - Safari: line and column number for the topmost stacktrace element + * only + * - IE: no line numbers whatsoever + * + * Tries to guess names of anonymous functions by looking for assignments + * in the source code. In IE and Safari, we have to guess source file names + * by searching for function bodies inside all page scripts. This will not + * work for scripts that are loaded cross-domain. + * Here be dragons: some function names may be guessed incorrectly, and + * duplicate functions may be mismatched. + * + * TraceKit.computeStackTrace should only be used for tracing purposes. + * Logging of unhandled exceptions should be done with TraceKit.report, + * which builds on top of TraceKit.computeStackTrace and provides better + * IE support by utilizing the window.onerror event to retrieve information + * about the top of the stack. + * + * Note: In IE and Safari, no stack trace is recorded on the Error object, + * so computeStackTrace instead walks its *own* chain of callers. + * This means that: + * * in Safari, some methods may be missing from the stack trace; + * * in IE, the topmost function in the stack trace will always be the + * caller of computeStackTrace. + * + * This is okay for tracing (because you are likely to be calling + * computeStackTrace from the function you want to be the topmost element + * of the stack trace anyway), but not okay for logging unhandled + * exceptions (because your catch block will likely be far away from the + * inner function that actually caused the exception). + * + */ + + +TraceKit.computeStackTrace = function computeStackTraceWrapper() { + // Contents of Exception in various browsers. + // + // SAFARI: + // ex.message = Can't find variable: qq + // ex.line = 59 + // ex.sourceId = 580238192 + // ex.sourceURL = http://... + // ex.expressionBeginOffset = 96 + // ex.expressionCaretOffset = 98 + // ex.expressionEndOffset = 98 + // ex.name = ReferenceError + // + // FIREFOX: + // ex.message = qq is not defined + // ex.fileName = http://... + // ex.lineNumber = 59 + // ex.columnNumber = 69 + // ex.stack = ...stack trace... (see the example below) + // ex.name = ReferenceError + // + // CHROME: + // ex.message = qq is not defined + // ex.name = ReferenceError + // ex.type = not_defined + // ex.arguments = ['aa'] + // ex.stack = ...stack trace... + // + // INTERNET EXPLORER: + // ex.message = ... + // ex.name = ReferenceError + // + // OPERA: + // ex.message = ...message... (see the example below) + // ex.name = ReferenceError + // ex.opera#sourceloc = 11 (pretty much useless, duplicates the info in ex.message) + // ex.stacktrace = n/a; see 'opera:config#UserPrefs|Exceptions Have Stacktrace' + + /** + * Computes stack trace information from the stack property. + * Chrome and Gecko use this property. + * @param {Error} ex + * @return {?Object.} Stack trace information. + */ + function computeStackTraceFromStackProp(ex) { + if (typeof ex.stack === 'undefined' || !ex.stack) return; + var chrome = /^\s*at (.*?) ?\(((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i, + gecko = /^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|\[native).*?|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i, + winjs = /^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i, + // Used to additionally parse URL/line/column from eval frames + geckoEval = /(\S+) line (\d+)(?: > eval line \d+)* > eval/i, + chromeEval = /\((\S*)(?::(\d+))(?::(\d+))\)/, + lines = ex.stack.split('\n'), + stack = [], + submatch, + parts, + element, + reference = /^(.*) is undefined$/.exec(ex.message); + + for (var i = 0, j = lines.length; i < j; ++i) { + if (parts = chrome.exec(lines[i])) { + var isNative = parts[2] && parts[2].indexOf('native') === 0; // start of line + + var isEval = parts[2] && parts[2].indexOf('eval') === 0; // start of line + + if (isEval && (submatch = chromeEval.exec(parts[2]))) { + // throw out eval line/column and use top-most line/column number + parts[2] = submatch[1]; // url + + parts[3] = submatch[2]; // line + + parts[4] = submatch[3]; // column + } + + element = { + url: !isNative ? parts[2] : null, + func: parts[1] || UNKNOWN_FUNCTION, + args: isNative ? [parts[2]] : [], + line: parts[3] ? +parts[3] : null, + column: parts[4] ? +parts[4] : null + }; + } else if (parts = winjs.exec(lines[i])) { + element = { + url: parts[2], + func: parts[1] || UNKNOWN_FUNCTION, + args: [], + line: +parts[3], + column: parts[4] ? +parts[4] : null + }; + } else if (parts = gecko.exec(lines[i])) { + var isEval = parts[3] && parts[3].indexOf(' > eval') > -1; + + if (isEval && (submatch = geckoEval.exec(parts[3]))) { + // throw out eval line/column and use top-most line number + parts[3] = submatch[1]; + parts[4] = submatch[2]; + parts[5] = null; // no column when eval + } else if (i === 0 && !parts[5] && typeof ex.columnNumber !== 'undefined') { + // FireFox uses this awesome columnNumber property for its top frame + // Also note, Firefox's column number is 0-based and everything else expects 1-based, + // so adding 1 + // NOTE: this hack doesn't work if top-most frame is eval + stack[0].column = ex.columnNumber + 1; + } + + element = { + url: parts[3], + func: parts[1] || UNKNOWN_FUNCTION, + args: parts[2] ? parts[2].split(',') : [], + line: parts[4] ? +parts[4] : null, + column: parts[5] ? +parts[5] : null + }; + } else { + continue; + } + + if (!element.func && element.line) { + element.func = UNKNOWN_FUNCTION; + } + + stack.push(element); + } + + if (!stack.length) { + return null; + } + + return { + name: ex.name, + message: ex.message, + url: getLocationHref(), + stack: stack + }; + } + /** + * Adds information about the first frame to incomplete stack traces. + * Safari and IE require this to get complete data on the first frame. + * @param {Object.} stackInfo Stack trace information from + * one of the compute* methods. + * @param {string} url The URL of the script that caused an error. + * @param {(number|string)} lineNo The line number of the script that + * caused an error. + * @param {string=} message The error generated by the browser, which + * hopefully contains the name of the object that caused the error. + * @return {boolean} Whether or not the stack information was + * augmented. + */ + + + function augmentStackTraceWithInitialElement(stackInfo, url, lineNo, message) { + var initial = { + url: url, + line: lineNo + }; + + if (initial.url && initial.line) { + stackInfo.incomplete = false; + + if (!initial.func) { + initial.func = UNKNOWN_FUNCTION; + } + + if (stackInfo.stack.length > 0) { + if (stackInfo.stack[0].url === initial.url) { + if (stackInfo.stack[0].line === initial.line) { + return false; // already in stack trace + } else if (!stackInfo.stack[0].line && stackInfo.stack[0].func === initial.func) { + stackInfo.stack[0].line = initial.line; + return false; + } + } + } + + stackInfo.stack.unshift(initial); + stackInfo.partial = true; + return true; + } else { + stackInfo.incomplete = true; + } + + return false; + } + /** + * Computes stack trace information by walking the arguments.caller + * chain at the time the exception occurred. This will cause earlier + * frames to be missed but is the only way to get any stack trace in + * Safari and IE. The top frame is restored by + * {@link augmentStackTraceWithInitialElement}. + * @param {Error} ex + * @return {?Object.} Stack trace information. + */ + + + function computeStackTraceByWalkingCallerChain(ex, depth) { + var functionName = /function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i, + stack = [], + funcs = {}, + recursion = false, + parts, + item; + + for (var curr = computeStackTraceByWalkingCallerChain.caller; curr && !recursion; curr = curr.caller) { + if (curr === computeStackTrace || curr === TraceKit.report) { + // console.log('skipping internal function'); + continue; + } + + item = { + url: null, + func: UNKNOWN_FUNCTION, + line: null, + column: null + }; + + if (curr.name) { + item.func = curr.name; + } else if (parts = functionName.exec(curr.toString())) { + item.func = parts[1]; + } + + if (typeof item.func === 'undefined') { + try { + item.func = parts.input.substring(0, parts.input.indexOf('{')); + } catch (e) {} + } + + if (funcs['' + curr]) { + recursion = true; + } else { + funcs['' + curr] = true; + } + + stack.push(item); + } + + if (depth) { + // console.log('depth is ' + depth); + // console.log('stack is ' + stack.length); + stack.splice(0, depth); + } + + var result = { + name: ex.name, + message: ex.message, + url: getLocationHref(), + stack: stack + }; + augmentStackTraceWithInitialElement(result, ex.sourceURL || ex.fileName, ex.line || ex.lineNumber, ex.message || ex.description); + return result; + } + /** + * Computes a stack trace for an exception. + * @param {Error} ex + * @param {(string|number)=} depth + */ + + + function computeStackTrace(ex, depth) { + var stack = null; + depth = depth == null ? 0 : +depth; + + try { + stack = computeStackTraceFromStackProp(ex); + + if (stack) { + return stack; + } + } catch (e) { + if (TraceKit.debug) { + throw e; + } + } + + try { + stack = computeStackTraceByWalkingCallerChain(ex, depth + 1); + + if (stack) { + return stack; + } + } catch (e) { + if (TraceKit.debug) { + throw e; + } + } + + return { + name: ex.name, + message: ex.message, + url: getLocationHref() + }; + } + + computeStackTrace.augmentStackTraceWithInitialElement = augmentStackTraceWithInitialElement; + computeStackTrace.computeStackTraceFromStackProp = computeStackTraceFromStackProp; + return computeStackTrace; +}(); + +var tracekit = TraceKit; + +var stringify_1 = createCommonjsModule(function (module, exports) { + /* + json-stringify-safe + Like JSON.stringify, but doesn't throw on circular references. + + Originally forked from https://github.com/isaacs/json-stringify-safe + version 5.0.1 on 3/8/2017 and modified to handle Errors serialization + and IE8 compatibility. Tests for this are in test/vendor. + + ISC license: https://github.com/isaacs/json-stringify-safe/blob/master/LICENSE + */ + exports = module.exports = stringify; + exports.getSerialize = serializer; + + function indexOf(haystack, needle) { + for (var i = 0; i < haystack.length; ++i) { + if (haystack[i] === needle) return i; + } + + return -1; + } + + function stringify(obj, replacer, spaces, cycleReplacer) { + return JSON.stringify(obj, serializer(replacer, cycleReplacer), spaces); + } // https://github.com/ftlabs/js-abbreviate/blob/fa709e5f139e7770a71827b1893f22418097fbda/index.js#L95-L106 + + + function stringifyError(value) { + var err = { + // These properties are implemented as magical getters and don't show up in for in + stack: value.stack, + message: value.message, + name: value.name + }; + + for (var i in value) { + if (Object.prototype.hasOwnProperty.call(value, i)) { + err[i] = value[i]; + } + } + + return err; + } + + function serializer(replacer, cycleReplacer) { + var stack = []; + var keys = []; + + if (cycleReplacer == null) { + cycleReplacer = function cycleReplacer(key, value) { + if (stack[0] === value) { + return '[Circular ~]'; + } + + return '[Circular ~.' + keys.slice(0, indexOf(stack, value)).join('.') + ']'; + }; + } + + return function (key, value) { + if (stack.length > 0) { + var thisPos = indexOf(stack, this); + ~thisPos ? stack.splice(thisPos + 1) : stack.push(this); + ~thisPos ? keys.splice(thisPos, Infinity, key) : keys.push(key); + + if (~indexOf(stack, value)) { + value = cycleReplacer.call(this, key, value); + } + } else { + stack.push(value); + } + + return replacer == null ? value instanceof Error ? stringifyError(value) : value : replacer.call(this, key, value); + }; + } +}); +var stringify_2 = stringify_1.getSerialize; + +function RavenConfigError(message) { + this.name = 'RavenConfigError'; + this.message = message; +} + +RavenConfigError.prototype = new Error(); +RavenConfigError.prototype.constructor = RavenConfigError; +var configError = RavenConfigError; + +var wrapMethod = function wrapMethod(console, level, callback) { + var originalConsoleLevel = console[level]; + var originalConsole = console; + + if (!(level in console)) { + return; + } + + var sentryLevel = level === 'warn' ? 'warning' : level; + + console[level] = function () { + var args = [].slice.call(arguments); + var msg = utils.safeJoin(args, ' '); + var data = { + level: sentryLevel, + logger: 'console', + extra: { + arguments: args + } + }; + + if (level === 'assert') { + if (args[0] === false) { + // Default browsers message + msg = 'Assertion failed: ' + (utils.safeJoin(args.slice(1), ' ') || 'console.assert'); + data.extra.arguments = args.slice(1); + callback && callback(msg, data); + } + } else { + callback && callback(msg, data); + } // this fails for some browsers. :( + + + if (originalConsoleLevel) { + // IE9 doesn't allow calling apply on console functions directly + // See: https://stackoverflow.com/questions/5472938/does-ie9-support-console-log-and-is-it-a-real-function#answer-5473193 + Function.prototype.apply.call(originalConsoleLevel, originalConsole, args); + } + }; +}; + +var console$1 = { + wrapMethod: wrapMethod +}; + +/*global XDomainRequest:false */ + +var isError = utils.isError; +var isObject = utils.isObject; +var isErrorEvent = utils.isErrorEvent; +var isUndefined = utils.isUndefined; +var isFunction = utils.isFunction; +var isString = utils.isString; +var isArray = utils.isArray; +var isEmptyObject = utils.isEmptyObject; +var each = utils.each; +var objectMerge = utils.objectMerge; +var truncate = utils.truncate; +var objectFrozen = utils.objectFrozen; +var hasKey = utils.hasKey; +var joinRegExp = utils.joinRegExp; +var urlencode = utils.urlencode; +var uuid4 = utils.uuid4; +var htmlTreeAsString = utils.htmlTreeAsString; +var isSameException = utils.isSameException; +var isSameStacktrace = utils.isSameStacktrace; +var parseUrl = utils.parseUrl; +var fill = utils.fill; +var supportsFetch = utils.supportsFetch; +var wrapConsoleMethod = console$1.wrapMethod; +var dsnKeys = 'source protocol user pass host port path'.split(' '); +var dsnPattern = /^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/; + +function now() { + return +new Date(); +} // This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) + + +var _window$1 = typeof window !== 'undefined' ? window : typeof commonjsGlobal !== 'undefined' ? commonjsGlobal : typeof self !== 'undefined' ? self : {}; + +var _document = _window$1.document; +var _navigator = _window$1.navigator; + +function keepOriginalCallback(original, callback) { + return isFunction(callback) ? function (data) { + return callback(data, original); + } : callback; +} // First, check for JSON support +// If there is no JSON, we no-op the core features of Raven +// since JSON is required to encode the payload + + +function Raven$1() { + this._hasJSON = !!(_typeof(JSON) === 'object' && JSON.stringify); // Raven can run in contexts where there's no document (react-native) + + this._hasDocument = !isUndefined(_document); + this._hasNavigator = !isUndefined(_navigator); + this._lastCapturedException = null; + this._lastData = null; + this._lastEventId = null; + this._globalServer = null; + this._globalKey = null; + this._globalProject = null; + this._globalContext = {}; + this._globalOptions = { + // SENTRY_RELEASE can be injected by https://github.com/getsentry/sentry-webpack-plugin + release: _window$1.SENTRY_RELEASE && _window$1.SENTRY_RELEASE.id, + logger: 'javascript', + ignoreErrors: [], + ignoreUrls: [], + whitelistUrls: [], + includePaths: [], + headers: null, + collectWindowErrors: true, + maxMessageLength: 0, + // By default, truncates URL values to 250 chars + maxUrlLength: 250, + stackTraceLimit: 50, + autoBreadcrumbs: true, + instrument: true, + sampleRate: 1 + }; + this._fetchDefaults = { + method: 'POST', + keepalive: true, + referrerPolicy: 'origin' + }; + this._ignoreOnError = 0; + this._isRavenInstalled = false; + this._originalErrorStackTraceLimit = Error.stackTraceLimit; // capture references to window.console *and* all its methods first + // before the console plugin has a chance to monkey patch + + this._originalConsole = _window$1.console || {}; + this._originalConsoleMethods = {}; + this._plugins = []; + this._startTime = now(); + this._wrappedBuiltIns = []; + this._breadcrumbs = []; + this._lastCapturedEvent = null; + this._keypressTimeout; + this._location = _window$1.location; + this._lastHref = this._location && this._location.href; + + this._resetBackoff(); // eslint-disable-next-line guard-for-in + + + for (var method in this._originalConsole) { + this._originalConsoleMethods[method] = this._originalConsole[method]; + } +} +/* + * The core Raven singleton + * + * @this {Raven} + */ + + +Raven$1.prototype = { + // Hardcode version string so that raven source can be loaded directly via + // webpack (using a build step causes webpack #1617). Grunt verifies that + // this value matches package.json during build. + // See: https://github.com/getsentry/raven-js/issues/465 + VERSION: '3.22.2', + debug: false, + TraceKit: tracekit, + // alias to TraceKit + + /* + * Configure Raven with a DSN and extra options + * + * @param {string} dsn The public Sentry DSN + * @param {object} options Set of global options [optional] + * @return {Raven} + */ + config: function config(dsn, options) { + var self = this; + + if (self._globalServer) { + this._logDebug('error', 'Error: Raven has already been configured'); + + return self; + } + + if (!dsn) return self; + var globalOptions = self._globalOptions; // merge in options + + if (options) { + each(options, function (key, value) { + // tags and extra are special and need to be put into context + if (key === 'tags' || key === 'extra' || key === 'user') { + self._globalContext[key] = value; + } else { + globalOptions[key] = value; + } + }); + } + + self.setDSN(dsn); // "Script error." is hard coded into browsers for errors that it can't read. + // this is the result of a script being pulled in from an external domain and CORS. + + globalOptions.ignoreErrors.push(/^Script error\.?$/); + globalOptions.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/); // join regexp rules into one big rule + + globalOptions.ignoreErrors = joinRegExp(globalOptions.ignoreErrors); + globalOptions.ignoreUrls = globalOptions.ignoreUrls.length ? joinRegExp(globalOptions.ignoreUrls) : false; + globalOptions.whitelistUrls = globalOptions.whitelistUrls.length ? joinRegExp(globalOptions.whitelistUrls) : false; + globalOptions.includePaths = joinRegExp(globalOptions.includePaths); + globalOptions.maxBreadcrumbs = Math.max(0, Math.min(globalOptions.maxBreadcrumbs || 100, 100)); // default and hard limit is 100 + + var autoBreadcrumbDefaults = { + xhr: true, + console: true, + dom: true, + location: true, + sentry: true + }; + var autoBreadcrumbs = globalOptions.autoBreadcrumbs; + + if ({}.toString.call(autoBreadcrumbs) === '[object Object]') { + autoBreadcrumbs = objectMerge(autoBreadcrumbDefaults, autoBreadcrumbs); + } else if (autoBreadcrumbs !== false) { + autoBreadcrumbs = autoBreadcrumbDefaults; + } + + globalOptions.autoBreadcrumbs = autoBreadcrumbs; + var instrumentDefaults = { + tryCatch: true + }; + var instrument = globalOptions.instrument; + + if ({}.toString.call(instrument) === '[object Object]') { + instrument = objectMerge(instrumentDefaults, instrument); + } else if (instrument !== false) { + instrument = instrumentDefaults; + } + + globalOptions.instrument = instrument; + tracekit.collectWindowErrors = !!globalOptions.collectWindowErrors; // return for chaining + + return self; + }, + + /* + * Installs a global window.onerror error handler + * to capture and report uncaught exceptions. + * At this point, install() is required to be called due + * to the way TraceKit is set up. + * + * @return {Raven} + */ + install: function install() { + var self = this; + + if (self.isSetup() && !self._isRavenInstalled) { + tracekit.report.subscribe(function () { + self._handleOnErrorStackInfo.apply(self, arguments); + }); + + self._patchFunctionToString(); + + if (self._globalOptions.instrument && self._globalOptions.instrument.tryCatch) { + self._instrumentTryCatch(); + } + + if (self._globalOptions.autoBreadcrumbs) self._instrumentBreadcrumbs(); // Install all of the plugins + + self._drainPlugins(); + + self._isRavenInstalled = true; + } + + Error.stackTraceLimit = self._globalOptions.stackTraceLimit; + return this; + }, + + /* + * Set the DSN (can be called multiple time unlike config) + * + * @param {string} dsn The public Sentry DSN + */ + setDSN: function setDSN(dsn) { + var self = this, + uri = self._parseDSN(dsn), + lastSlash = uri.path.lastIndexOf('/'), + path = uri.path.substr(1, lastSlash); + + self._dsn = dsn; + self._globalKey = uri.user; + self._globalSecret = uri.pass && uri.pass.substr(1); + self._globalProject = uri.path.substr(lastSlash + 1); + self._globalServer = self._getGlobalServer(uri); + self._globalEndpoint = self._globalServer + '/' + path + 'api/' + self._globalProject + '/store/'; // Reset backoff state since we may be pointing at a + // new project/server + + this._resetBackoff(); + }, + + /* + * Wrap code within a context so Raven can capture errors + * reliably across domains that is executed immediately. + * + * @param {object} options A specific set of options for this context [optional] + * @param {function} func The callback to be immediately executed within the context + * @param {array} args An array of arguments to be called with the callback [optional] + */ + context: function context(options, func, args) { + if (isFunction(options)) { + args = func || []; + func = options; + options = undefined; + } + + return this.wrap(options, func).apply(this, args); + }, + + /* + * Wrap code within a context and returns back a new function to be executed + * + * @param {object} options A specific set of options for this context [optional] + * @param {function} func The function to be wrapped in a new context + * @param {function} func A function to call before the try/catch wrapper [optional, private] + * @return {function} The newly wrapped functions with a context + */ + wrap: function wrap(options, func, _before) { + var self = this; // 1 argument has been passed, and it's not a function + // so just return it + + if (isUndefined(func) && !isFunction(options)) { + return options; + } // options is optional + + + if (isFunction(options)) { + func = options; + options = undefined; + } // At this point, we've passed along 2 arguments, and the second one + // is not a function either, so we'll just return the second argument. + + + if (!isFunction(func)) { + return func; + } // We don't wanna wrap it twice! + + + try { + if (func.__raven__) { + return func; + } // If this has already been wrapped in the past, return that + + + if (func.__raven_wrapper__) { + return func.__raven_wrapper__; + } + } catch (e) { + // Just accessing custom props in some Selenium environments + // can cause a "Permission denied" exception (see raven-js#495). + // Bail on wrapping and return the function as-is (defers to window.onerror). + return func; + } + + function wrapped() { + var args = [], + i = arguments.length, + deep = !options || options && options.deep !== false; + + if (_before && isFunction(_before)) { + _before.apply(this, arguments); + } // Recursively wrap all of a function's arguments that are + // functions themselves. + + + while (i--) { + args[i] = deep ? self.wrap(options, arguments[i]) : arguments[i]; + } + + try { + // Attempt to invoke user-land function + // NOTE: If you are a Sentry user, and you are seeing this stack frame, it + // means Raven caught an error invoking your application code. This is + // expected behavior and NOT indicative of a bug with Raven.js. + return func.apply(this, args); + } catch (e) { + self._ignoreNextOnError(); + + self.captureException(e, options); + throw e; + } + } // copy over properties of the old function + + + for (var property in func) { + if (hasKey(func, property)) { + wrapped[property] = func[property]; + } + } + + wrapped.prototype = func.prototype; + func.__raven_wrapper__ = wrapped; // Signal that this function has been wrapped/filled already + // for both debugging and to prevent it to being wrapped/filled twice + + wrapped.__raven__ = true; + wrapped.__orig__ = func; + return wrapped; + }, + + /* + * Uninstalls the global error handler. + * + * @return {Raven} + */ + uninstall: function uninstall() { + tracekit.report.uninstall(); + + this._unpatchFunctionToString(); + + this._restoreBuiltIns(); + + this._restoreConsole(); + + Error.stackTraceLimit = this._originalErrorStackTraceLimit; + this._isRavenInstalled = false; + return this; + }, + + /* + * Manually capture an exception and send it over to Sentry + * + * @param {error} ex An exception to be logged + * @param {object} options A specific set of options for this error [optional] + * @return {Raven} + */ + captureException: function captureException(ex, options) { + options = objectMerge({ + trimHeadFrames: 0 + }, options ? options : {}); // Cases for sending ex as a message, rather than an exception + + var isNotError = !isError(ex); + var isNotErrorEvent = !isErrorEvent(ex); + var isErrorEventWithoutError = isErrorEvent(ex) && !ex.error; + + if (isNotError && isNotErrorEvent || isErrorEventWithoutError) { + return this.captureMessage(ex, objectMerge(options, { + stacktrace: true, + // if we fall back to captureMessage, default to attempting a new trace + trimHeadFrames: options.trimHeadFrames + 1 + })); + } // Get actual Error from ErrorEvent + + + if (isErrorEvent(ex)) ex = ex.error; // Store the raw exception object for potential debugging and introspection + + this._lastCapturedException = ex; // TraceKit.report will re-raise any exception passed to it, + // which means you have to wrap it in try/catch. Instead, we + // can wrap it here and only re-raise if TraceKit.report + // raises an exception different from the one we asked to + // report on. + + try { + var stack = tracekit.computeStackTrace(ex); + + this._handleStackInfo(stack, options); + } catch (ex1) { + if (ex !== ex1) { + throw ex1; + } + } + + return this; + }, + + /* + * Manually send a message to Sentry + * + * @param {string} msg A plain message to be captured in Sentry + * @param {object} options A specific set of options for this message [optional] + * @return {Raven} + */ + captureMessage: function captureMessage(msg, options) { + // config() automagically converts ignoreErrors from a list to a RegExp so we need to test for an + // early call; we'll error on the side of logging anything called before configuration since it's + // probably something you should see: + if (!!this._globalOptions.ignoreErrors.test && this._globalOptions.ignoreErrors.test(msg)) { + return; + } + + options = options || {}; + var data = objectMerge({ + message: msg + '' // Make sure it's actually a string + + }, options); + var ex; // Generate a "synthetic" stack trace from this point. + // NOTE: If you are a Sentry user, and you are seeing this stack frame, it is NOT indicative + // of a bug with Raven.js. Sentry generates synthetic traces either by configuration, + // or if it catches a thrown object without a "stack" property. + + try { + throw new Error(msg); + } catch (ex1) { + ex = ex1; + } // null exception name so `Error` isn't prefixed to msg + + + ex.name = null; + var stack = tracekit.computeStackTrace(ex); // stack[0] is `throw new Error(msg)` call itself, we are interested in the frame that was just before that, stack[1] + + var initialCall = isArray(stack.stack) && stack.stack[1]; + var fileurl = initialCall && initialCall.url || ''; + + if (!!this._globalOptions.ignoreUrls.test && this._globalOptions.ignoreUrls.test(fileurl)) { + return; + } + + if (!!this._globalOptions.whitelistUrls.test && !this._globalOptions.whitelistUrls.test(fileurl)) { + return; + } + + if (this._globalOptions.stacktrace || options && options.stacktrace) { + options = objectMerge({ + // fingerprint on msg, not stack trace (legacy behavior, could be + // revisited) + fingerprint: msg, + // since we know this is a synthetic trace, the top N-most frames + // MUST be from Raven.js, so mark them as in_app later by setting + // trimHeadFrames + trimHeadFrames: (options.trimHeadFrames || 0) + 1 + }, options); + + var frames = this._prepareFrames(stack, options); + + data.stacktrace = { + // Sentry expects frames oldest to newest + frames: frames.reverse() + }; + } // Fire away! + + + this._send(data); + + return this; + }, + captureBreadcrumb: function captureBreadcrumb(obj) { + var crumb = objectMerge({ + timestamp: now() / 1000 + }, obj); + + if (isFunction(this._globalOptions.breadcrumbCallback)) { + var result = this._globalOptions.breadcrumbCallback(crumb); + + if (isObject(result) && !isEmptyObject(result)) { + crumb = result; + } else if (result === false) { + return this; + } + } + + this._breadcrumbs.push(crumb); + + if (this._breadcrumbs.length > this._globalOptions.maxBreadcrumbs) { + this._breadcrumbs.shift(); + } + + return this; + }, + addPlugin: function addPlugin(plugin + /*arg1, arg2, ... argN*/ + ) { + var pluginArgs = [].slice.call(arguments, 1); + + this._plugins.push([plugin, pluginArgs]); + + if (this._isRavenInstalled) { + this._drainPlugins(); + } + + return this; + }, + + /* + * Set/clear a user to be sent along with the payload. + * + * @param {object} user An object representing user data [optional] + * @return {Raven} + */ + setUserContext: function setUserContext(user) { + // Intentionally do not merge here since that's an unexpected behavior. + this._globalContext.user = user; + return this; + }, + + /* + * Merge extra attributes to be sent along with the payload. + * + * @param {object} extra An object representing extra data [optional] + * @return {Raven} + */ + setExtraContext: function setExtraContext(extra) { + this._mergeContext('extra', extra); + + return this; + }, + + /* + * Merge tags to be sent along with the payload. + * + * @param {object} tags An object representing tags [optional] + * @return {Raven} + */ + setTagsContext: function setTagsContext(tags) { + this._mergeContext('tags', tags); + + return this; + }, + + /* + * Clear all of the context. + * + * @return {Raven} + */ + clearContext: function clearContext() { + this._globalContext = {}; + return this; + }, + + /* + * Get a copy of the current context. This cannot be mutated. + * + * @return {object} copy of context + */ + getContext: function getContext() { + // lol javascript + return JSON.parse(stringify_1(this._globalContext)); + }, + + /* + * Set environment of application + * + * @param {string} environment Typically something like 'production'. + * @return {Raven} + */ + setEnvironment: function setEnvironment(environment) { + this._globalOptions.environment = environment; + return this; + }, + + /* + * Set release version of application + * + * @param {string} release Typically something like a git SHA to identify version + * @return {Raven} + */ + setRelease: function setRelease(release) { + this._globalOptions.release = release; + return this; + }, + + /* + * Set the dataCallback option + * + * @param {function} callback The callback to run which allows the + * data blob to be mutated before sending + * @return {Raven} + */ + setDataCallback: function setDataCallback(callback) { + var original = this._globalOptions.dataCallback; + this._globalOptions.dataCallback = keepOriginalCallback(original, callback); + return this; + }, + + /* + * Set the breadcrumbCallback option + * + * @param {function} callback The callback to run which allows filtering + * or mutating breadcrumbs + * @return {Raven} + */ + setBreadcrumbCallback: function setBreadcrumbCallback(callback) { + var original = this._globalOptions.breadcrumbCallback; + this._globalOptions.breadcrumbCallback = keepOriginalCallback(original, callback); + return this; + }, + + /* + * Set the shouldSendCallback option + * + * @param {function} callback The callback to run which allows + * introspecting the blob before sending + * @return {Raven} + */ + setShouldSendCallback: function setShouldSendCallback(callback) { + var original = this._globalOptions.shouldSendCallback; + this._globalOptions.shouldSendCallback = keepOriginalCallback(original, callback); + return this; + }, + + /** + * Override the default HTTP transport mechanism that transmits data + * to the Sentry server. + * + * @param {function} transport Function invoked instead of the default + * `makeRequest` handler. + * + * @return {Raven} + */ + setTransport: function setTransport(transport) { + this._globalOptions.transport = transport; + return this; + }, + + /* + * Get the latest raw exception that was captured by Raven. + * + * @return {error} + */ + lastException: function lastException() { + return this._lastCapturedException; + }, + + /* + * Get the last event id + * + * @return {string} + */ + lastEventId: function lastEventId() { + return this._lastEventId; + }, + + /* + * Determine if Raven is setup and ready to go. + * + * @return {boolean} + */ + isSetup: function isSetup() { + if (!this._hasJSON) return false; // needs JSON support + + if (!this._globalServer) { + if (!this.ravenNotConfiguredError) { + this.ravenNotConfiguredError = true; + + this._logDebug('error', 'Error: Raven has not been configured.'); + } + + return false; + } + + return true; + }, + afterLoad: function afterLoad() { + // TODO: remove window dependence? + // Attempt to initialize Raven on load + var RavenConfig = _window$1.RavenConfig; + + if (RavenConfig) { + this.config(RavenConfig.dsn, RavenConfig.config).install(); + } + }, + showReportDialog: function showReportDialog(options) { + if (!_document // doesn't work without a document (React native) + ) return; + options = options || {}; + var lastEventId = options.eventId || this.lastEventId(); + + if (!lastEventId) { + throw new configError('Missing eventId'); + } + + var dsn = options.dsn || this._dsn; + + if (!dsn) { + throw new configError('Missing DSN'); + } + + var encode = encodeURIComponent; + var qs = ''; + qs += '?eventId=' + encode(lastEventId); + qs += '&dsn=' + encode(dsn); + var user = options.user || this._globalContext.user; + + if (user) { + if (user.name) qs += '&name=' + encode(user.name); + if (user.email) qs += '&email=' + encode(user.email); + } + + var globalServer = this._getGlobalServer(this._parseDSN(dsn)); + + var script = _document.createElement('script'); + + script.async = true; + script.src = globalServer + '/api/embed/error-page/' + qs; + + (_document.head || _document.body).appendChild(script); + }, + + /**** Private functions ****/ + _ignoreNextOnError: function _ignoreNextOnError() { + var self = this; + this._ignoreOnError += 1; + setTimeout(function () { + // onerror should trigger before setTimeout + self._ignoreOnError -= 1; + }); + }, + _triggerEvent: function _triggerEvent(eventType, options) { + // NOTE: `event` is a native browser thing, so let's avoid conflicting wiht it + var evt, key; + if (!this._hasDocument) return; + options = options || {}; + eventType = 'raven' + eventType.substr(0, 1).toUpperCase() + eventType.substr(1); + + if (_document.createEvent) { + evt = _document.createEvent('HTMLEvents'); + evt.initEvent(eventType, true, true); + } else { + evt = _document.createEventObject(); + evt.eventType = eventType; + } + + for (key in options) { + if (hasKey(options, key)) { + evt[key] = options[key]; + } + } + + if (_document.createEvent) { + // IE9 if standards + _document.dispatchEvent(evt); + } else { + // IE8 regardless of Quirks or Standards + // IE9 if quirks + try { + _document.fireEvent('on' + evt.eventType.toLowerCase(), evt); + } catch (e) {// Do nothing + } + } + }, + + /** + * Wraps addEventListener to capture UI breadcrumbs + * @param evtName the event name (e.g. "click") + * @returns {Function} + * @private + */ + _breadcrumbEventHandler: function _breadcrumbEventHandler(evtName) { + var self = this; + return function (evt) { + // reset keypress timeout; e.g. triggering a 'click' after + // a 'keypress' will reset the keypress debounce so that a new + // set of keypresses can be recorded + self._keypressTimeout = null; // It's possible this handler might trigger multiple times for the same + // event (e.g. event propagation through node ancestors). Ignore if we've + // already captured the event. + + if (self._lastCapturedEvent === evt) return; + self._lastCapturedEvent = evt; // try/catch both: + // - accessing evt.target (see getsentry/raven-js#838, #768) + // - `htmlTreeAsString` because it's complex, and just accessing the DOM incorrectly + // can throw an exception in some circumstances. + + var target; + + try { + target = htmlTreeAsString(evt.target); + } catch (e) { + target = ''; + } + + self.captureBreadcrumb({ + category: 'ui.' + evtName, + // e.g. ui.click, ui.input + message: target + }); + }; + }, + + /** + * Wraps addEventListener to capture keypress UI events + * @returns {Function} + * @private + */ + _keypressEventHandler: function _keypressEventHandler() { + var self = this, + debounceDuration = 1000; // milliseconds + // TODO: if somehow user switches keypress target before + // debounce timeout is triggered, we will only capture + // a single breadcrumb from the FIRST target (acceptable?) + + return function (evt) { + var target; + + try { + target = evt.target; + } catch (e) { + // just accessing event properties can throw an exception in some rare circumstances + // see: https://github.com/getsentry/raven-js/issues/838 + return; + } + + var tagName = target && target.tagName; // only consider keypress events on actual input elements + // this will disregard keypresses targeting body (e.g. tabbing + // through elements, hotkeys, etc) + + if (!tagName || tagName !== 'INPUT' && tagName !== 'TEXTAREA' && !target.isContentEditable) return; // record first keypress in a series, but ignore subsequent + // keypresses until debounce clears + + var timeout = self._keypressTimeout; + + if (!timeout) { + self._breadcrumbEventHandler('input')(evt); + } + + clearTimeout(timeout); + self._keypressTimeout = setTimeout(function () { + self._keypressTimeout = null; + }, debounceDuration); + }; + }, + + /** + * Captures a breadcrumb of type "navigation", normalizing input URLs + * @param to the originating URL + * @param from the target URL + * @private + */ + _captureUrlChange: function _captureUrlChange(from, to) { + var parsedLoc = parseUrl(this._location.href); + var parsedTo = parseUrl(to); + var parsedFrom = parseUrl(from); // because onpopstate only tells you the "new" (to) value of location.href, and + // not the previous (from) value, we need to track the value of the current URL + // state ourselves + + this._lastHref = to; // Use only the path component of the URL if the URL matches the current + // document (almost all the time when using pushState) + + if (parsedLoc.protocol === parsedTo.protocol && parsedLoc.host === parsedTo.host) to = parsedTo.relative; + if (parsedLoc.protocol === parsedFrom.protocol && parsedLoc.host === parsedFrom.host) from = parsedFrom.relative; + this.captureBreadcrumb({ + category: 'navigation', + data: { + to: to, + from: from + } + }); + }, + _patchFunctionToString: function _patchFunctionToString() { + var self = this; + self._originalFunctionToString = Function.prototype.toString; // eslint-disable-next-line no-extend-native + + Function.prototype.toString = function () { + if (typeof this === 'function' && this.__raven__) { + return self._originalFunctionToString.apply(this.__orig__, arguments); + } + + return self._originalFunctionToString.apply(this, arguments); + }; + }, + _unpatchFunctionToString: function _unpatchFunctionToString() { + if (this._originalFunctionToString) { + // eslint-disable-next-line no-extend-native + Function.prototype.toString = this._originalFunctionToString; + } + }, + + /** + * Wrap timer functions and event targets to catch errors and provide + * better metadata. + */ + _instrumentTryCatch: function _instrumentTryCatch() { + var self = this; + var wrappedBuiltIns = self._wrappedBuiltIns; + + function wrapTimeFn(orig) { + return function (fn, t) { + // preserve arity + // Make a copy of the arguments to prevent deoptimization + // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments + var args = new Array(arguments.length); + + for (var i = 0; i < args.length; ++i) { + args[i] = arguments[i]; + } + + var originalCallback = args[0]; + + if (isFunction(originalCallback)) { + args[0] = self.wrap(originalCallback); + } // IE < 9 doesn't support .call/.apply on setInterval/setTimeout, but it + // also supports only two arguments and doesn't care what this is, so we + // can just call the original function directly. + + + if (orig.apply) { + return orig.apply(this, args); + } else { + return orig(args[0], args[1]); + } + }; + } + + var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; + + function wrapEventTarget(global) { + var proto = _window$1[global] && _window$1[global].prototype; + + if (proto && proto.hasOwnProperty && proto.hasOwnProperty('addEventListener')) { + fill(proto, 'addEventListener', function (orig) { + return function (evtName, fn, capture, secure) { + // preserve arity + try { + if (fn && fn.handleEvent) { + fn.handleEvent = self.wrap(fn.handleEvent); + } + } catch (err) {} // can sometimes get 'Permission denied to access property "handle Event' + // More breadcrumb DOM capture ... done here and not in `_instrumentBreadcrumbs` + // so that we don't have more than one wrapper function + + + var before, clickHandler, keypressHandler; + + if (autoBreadcrumbs && autoBreadcrumbs.dom && (global === 'EventTarget' || global === 'Node')) { + // NOTE: generating multiple handlers per addEventListener invocation, should + // revisit and verify we can just use one (almost certainly) + clickHandler = self._breadcrumbEventHandler('click'); + keypressHandler = self._keypressEventHandler(); + + before = function before(evt) { + // need to intercept every DOM event in `before` argument, in case that + // same wrapped method is re-used for different events (e.g. mousemove THEN click) + // see #724 + if (!evt) return; + var eventType; + + try { + eventType = evt.type; + } catch (e) { + // just accessing event properties can throw an exception in some rare circumstances + // see: https://github.com/getsentry/raven-js/issues/838 + return; + } + + if (eventType === 'click') return clickHandler(evt);else if (eventType === 'keypress') return keypressHandler(evt); + }; + } + + return orig.call(this, evtName, self.wrap(fn, undefined, before), capture, secure); + }; + }, wrappedBuiltIns); + fill(proto, 'removeEventListener', function (orig) { + return function (evt, fn, capture, secure) { + try { + fn = fn && (fn.__raven_wrapper__ ? fn.__raven_wrapper__ : fn); + } catch (e) {// ignore, accessing __raven_wrapper__ will throw in some Selenium environments + } + + return orig.call(this, evt, fn, capture, secure); + }; + }, wrappedBuiltIns); + } + } + + fill(_window$1, 'setTimeout', wrapTimeFn, wrappedBuiltIns); + fill(_window$1, 'setInterval', wrapTimeFn, wrappedBuiltIns); + + if (_window$1.requestAnimationFrame) { + fill(_window$1, 'requestAnimationFrame', function (orig) { + return function (cb) { + return orig(self.wrap(cb)); + }; + }, wrappedBuiltIns); + } // event targets borrowed from bugsnag-js: + // https://github.com/bugsnag/bugsnag-js/blob/master/src/bugsnag.js#L666 + + + var eventTargets = ['EventTarget', 'Window', 'Node', 'ApplicationCache', 'AudioTrackList', 'ChannelMergerNode', 'CryptoOperation', 'EventSource', 'FileReader', 'HTMLUnknownElement', 'IDBDatabase', 'IDBRequest', 'IDBTransaction', 'KeyOperation', 'MediaController', 'MessagePort', 'ModalWindow', 'Notification', 'SVGElementInstance', 'Screen', 'TextTrack', 'TextTrackCue', 'TextTrackList', 'WebSocket', 'WebSocketWorker', 'Worker', 'XMLHttpRequest', 'XMLHttpRequestEventTarget', 'XMLHttpRequestUpload']; + + for (var i = 0; i < eventTargets.length; i++) { + wrapEventTarget(eventTargets[i]); + } + }, + + /** + * Instrument browser built-ins w/ breadcrumb capturing + * - XMLHttpRequests + * - DOM interactions (click/typing) + * - window.location changes + * - console + * + * Can be disabled or individually configured via the `autoBreadcrumbs` config option + */ + _instrumentBreadcrumbs: function _instrumentBreadcrumbs() { + var self = this; + var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; + var wrappedBuiltIns = self._wrappedBuiltIns; + + function wrapProp(prop, xhr) { + if (prop in xhr && isFunction(xhr[prop])) { + fill(xhr, prop, function (orig) { + return self.wrap(orig); + }); // intentionally don't track filled methods on XHR instances + } + } + + if (autoBreadcrumbs.xhr && 'XMLHttpRequest' in _window$1) { + var xhrproto = XMLHttpRequest.prototype; + fill(xhrproto, 'open', function (origOpen) { + return function (method, url) { + // preserve arity + // if Sentry key appears in URL, don't capture + if (isString(url) && url.indexOf(self._globalKey) === -1) { + this.__raven_xhr = { + method: method, + url: url, + status_code: null + }; + } + + return origOpen.apply(this, arguments); + }; + }, wrappedBuiltIns); + fill(xhrproto, 'send', function (origSend) { + return function () { + // preserve arity + var xhr = this; + + function onreadystatechangeHandler() { + if (xhr.__raven_xhr && xhr.readyState === 4) { + try { + // touching statusCode in some platforms throws + // an exception + xhr.__raven_xhr.status_code = xhr.status; + } catch (e) { + /* do nothing */ + } + + self.captureBreadcrumb({ + type: 'http', + category: 'xhr', + data: xhr.__raven_xhr + }); + } + } + + var props = ['onload', 'onerror', 'onprogress']; + + for (var j = 0; j < props.length; j++) { + wrapProp(props[j], xhr); + } + + if ('onreadystatechange' in xhr && isFunction(xhr.onreadystatechange)) { + fill(xhr, 'onreadystatechange', function (orig) { + return self.wrap(orig, undefined, onreadystatechangeHandler); + } + /* intentionally don't track this instrumentation */ + ); + } else { + // if onreadystatechange wasn't actually set by the page on this xhr, we + // are free to set our own and capture the breadcrumb + xhr.onreadystatechange = onreadystatechangeHandler; + } + + return origSend.apply(this, arguments); + }; + }, wrappedBuiltIns); + } + + if (autoBreadcrumbs.xhr && supportsFetch()) { + fill(_window$1, 'fetch', function (origFetch) { + return function () { + // preserve arity + // Make a copy of the arguments to prevent deoptimization + // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments + var args = new Array(arguments.length); + + for (var i = 0; i < args.length; ++i) { + args[i] = arguments[i]; + } + + var fetchInput = args[0]; + var method = 'GET'; + var url; + + if (typeof fetchInput === 'string') { + url = fetchInput; + } else if ('Request' in _window$1 && fetchInput instanceof _window$1.Request) { + url = fetchInput.url; + + if (fetchInput.method) { + method = fetchInput.method; + } + } else { + url = '' + fetchInput; + } // if Sentry key appears in URL, don't capture, as it's our own request + + + if (url.indexOf(self._globalKey) !== -1) { + return origFetch.apply(this, args); + } + + if (args[1] && args[1].method) { + method = args[1].method; + } + + var fetchData = { + method: method, + url: url, + status_code: null + }; + return origFetch.apply(this, args).then(function (response) { + fetchData.status_code = response.status; + self.captureBreadcrumb({ + type: 'http', + category: 'fetch', + data: fetchData + }); + return response; + }); + }; + }, wrappedBuiltIns); + } // Capture breadcrumbs from any click that is unhandled / bubbled up all the way + // to the document. Do this before we instrument addEventListener. + + + if (autoBreadcrumbs.dom && this._hasDocument) { + if (_document.addEventListener) { + _document.addEventListener('click', self._breadcrumbEventHandler('click'), false); + + _document.addEventListener('keypress', self._keypressEventHandler(), false); + } else { + // IE8 Compatibility + _document.attachEvent('onclick', self._breadcrumbEventHandler('click')); + + _document.attachEvent('onkeypress', self._keypressEventHandler()); + } + } // record navigation (URL) changes + // NOTE: in Chrome App environment, touching history.pushState, *even inside + // a try/catch block*, will cause Chrome to output an error to console.error + // borrowed from: https://github.com/angular/angular.js/pull/13945/files + + + var chrome = _window$1.chrome; + var isChromePackagedApp = chrome && chrome.app && chrome.app.runtime; + var hasPushAndReplaceState = !isChromePackagedApp && _window$1.history && history.pushState && history.replaceState; + + if (autoBreadcrumbs.location && hasPushAndReplaceState) { + // TODO: remove onpopstate handler on uninstall() + var oldOnPopState = _window$1.onpopstate; + + _window$1.onpopstate = function () { + var currentHref = self._location.href; + + self._captureUrlChange(self._lastHref, currentHref); + + if (oldOnPopState) { + return oldOnPopState.apply(this, arguments); + } + }; + + var historyReplacementFunction = function historyReplacementFunction(origHistFunction) { + // note history.pushState.length is 0; intentionally not declaring + // params to preserve 0 arity + return function () + /* state, title, url */ + { + var url = arguments.length > 2 ? arguments[2] : undefined; // url argument is optional + + if (url) { + // coerce to string (this is what pushState does) + self._captureUrlChange(self._lastHref, url + ''); + } + + return origHistFunction.apply(this, arguments); + }; + }; + + fill(history, 'pushState', historyReplacementFunction, wrappedBuiltIns); + fill(history, 'replaceState', historyReplacementFunction, wrappedBuiltIns); + } + + if (autoBreadcrumbs.console && 'console' in _window$1 && console.log) { + // console + var consoleMethodCallback = function consoleMethodCallback(msg, data) { + self.captureBreadcrumb({ + message: msg, + level: data.level, + category: 'console' + }); + }; + + each(['debug', 'info', 'warn', 'error', 'log'], function (_, level) { + wrapConsoleMethod(console, level, consoleMethodCallback); + }); + } + }, + _restoreBuiltIns: function _restoreBuiltIns() { + // restore any wrapped builtins + var builtin; + + while (this._wrappedBuiltIns.length) { + builtin = this._wrappedBuiltIns.shift(); + var obj = builtin[0], + name = builtin[1], + orig = builtin[2]; + obj[name] = orig; + } + }, + _restoreConsole: function _restoreConsole() { + // eslint-disable-next-line guard-for-in + for (var method in this._originalConsoleMethods) { + this._originalConsole[method] = this._originalConsoleMethods[method]; + } + }, + _drainPlugins: function _drainPlugins() { + var self = this; // FIX ME TODO + + each(this._plugins, function (_, plugin) { + var installer = plugin[0]; + var args = plugin[1]; + installer.apply(self, [self].concat(args)); + }); + }, + _parseDSN: function _parseDSN(str) { + var m = dsnPattern.exec(str), + dsn = {}, + i = 7; + + try { + while (i--) { + dsn[dsnKeys[i]] = m[i] || ''; + } + } catch (e) { + throw new configError('Invalid DSN: ' + str); + } + + if (dsn.pass && !this._globalOptions.allowSecretKey) { + throw new configError('Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key'); + } + + return dsn; + }, + _getGlobalServer: function _getGlobalServer(uri) { + // assemble the endpoint from the uri pieces + var globalServer = '//' + uri.host + (uri.port ? ':' + uri.port : ''); + + if (uri.protocol) { + globalServer = uri.protocol + ':' + globalServer; + } + + return globalServer; + }, + _handleOnErrorStackInfo: function _handleOnErrorStackInfo() { + // if we are intentionally ignoring errors via onerror, bail out + if (!this._ignoreOnError) { + this._handleStackInfo.apply(this, arguments); + } + }, + _handleStackInfo: function _handleStackInfo(stackInfo, options) { + var frames = this._prepareFrames(stackInfo, options); + + this._triggerEvent('handle', { + stackInfo: stackInfo, + options: options + }); + + this._processException(stackInfo.name, stackInfo.message, stackInfo.url, stackInfo.lineno, frames, options); + }, + _prepareFrames: function _prepareFrames(stackInfo, options) { + var self = this; + var frames = []; + + if (stackInfo.stack && stackInfo.stack.length) { + each(stackInfo.stack, function (i, stack) { + var frame = self._normalizeFrame(stack, stackInfo.url); + + if (frame) { + frames.push(frame); + } + }); // e.g. frames captured via captureMessage throw + + if (options && options.trimHeadFrames) { + for (var j = 0; j < options.trimHeadFrames && j < frames.length; j++) { + frames[j].in_app = false; + } + } + } + + frames = frames.slice(0, this._globalOptions.stackTraceLimit); + return frames; + }, + _normalizeFrame: function _normalizeFrame(frame, stackInfoUrl) { + // normalize the frames data + var normalized = { + filename: frame.url, + lineno: frame.line, + colno: frame.column, + function: frame.func || '?' + }; // Case when we don't have any information about the error + // E.g. throwing a string or raw object, instead of an `Error` in Firefox + // Generating synthetic error doesn't add any value here + // + // We should probably somehow let a user know that they should fix their code + + if (!frame.url) { + normalized.filename = stackInfoUrl; // fallback to whole stacks url from onerror handler + } + + normalized.in_app = !( // determine if an exception came from outside of our app + // first we check the global includePaths list. + !!this._globalOptions.includePaths.test && !this._globalOptions.includePaths.test(normalized.filename) || // Now we check for fun, if the function name is Raven or TraceKit + /(Raven|TraceKit)\./.test(normalized['function']) || // finally, we do a last ditch effort and check for raven.min.js + /raven\.(min\.)?js$/.test(normalized.filename)); + return normalized; + }, + _processException: function _processException(type, message, fileurl, lineno, frames, options) { + var prefixedMessage = (type ? type + ': ' : '') + (message || ''); + + if (!!this._globalOptions.ignoreErrors.test && (this._globalOptions.ignoreErrors.test(message) || this._globalOptions.ignoreErrors.test(prefixedMessage))) { + return; + } + + var stacktrace; + + if (frames && frames.length) { + fileurl = frames[0].filename || fileurl; // Sentry expects frames oldest to newest + // and JS sends them as newest to oldest + + frames.reverse(); + stacktrace = { + frames: frames + }; + } else if (fileurl) { + stacktrace = { + frames: [{ + filename: fileurl, + lineno: lineno, + in_app: true + }] + }; + } + + if (!!this._globalOptions.ignoreUrls.test && this._globalOptions.ignoreUrls.test(fileurl)) { + return; + } + + if (!!this._globalOptions.whitelistUrls.test && !this._globalOptions.whitelistUrls.test(fileurl)) { + return; + } + + var data = objectMerge({ + // sentry.interfaces.Exception + exception: { + values: [{ + type: type, + value: message, + stacktrace: stacktrace + }] + }, + culprit: fileurl + }, options); // Fire away! + + this._send(data); + }, + _trimPacket: function _trimPacket(data) { + // For now, we only want to truncate the two different messages + // but this could/should be expanded to just trim everything + var max = this._globalOptions.maxMessageLength; + + if (data.message) { + data.message = truncate(data.message, max); + } + + if (data.exception) { + var exception = data.exception.values[0]; + exception.value = truncate(exception.value, max); + } + + var request = data.request; + + if (request) { + if (request.url) { + request.url = truncate(request.url, this._globalOptions.maxUrlLength); + } + + if (request.Referer) { + request.Referer = truncate(request.Referer, this._globalOptions.maxUrlLength); + } + } + + if (data.breadcrumbs && data.breadcrumbs.values) this._trimBreadcrumbs(data.breadcrumbs); + return data; + }, + + /** + * Truncate breadcrumb values (right now just URLs) + */ + _trimBreadcrumbs: function _trimBreadcrumbs(breadcrumbs) { + // known breadcrumb properties with urls + // TODO: also consider arbitrary prop values that start with (https?)?:// + var urlProps = ['to', 'from', 'url'], + urlProp, + crumb, + data; + + for (var i = 0; i < breadcrumbs.values.length; ++i) { + crumb = breadcrumbs.values[i]; + if (!crumb.hasOwnProperty('data') || !isObject(crumb.data) || objectFrozen(crumb.data)) continue; + data = objectMerge({}, crumb.data); + + for (var j = 0; j < urlProps.length; ++j) { + urlProp = urlProps[j]; + + if (data.hasOwnProperty(urlProp) && data[urlProp]) { + data[urlProp] = truncate(data[urlProp], this._globalOptions.maxUrlLength); + } + } + + breadcrumbs.values[i].data = data; + } + }, + _getHttpData: function _getHttpData() { + if (!this._hasNavigator && !this._hasDocument) return; + var httpData = {}; + + if (this._hasNavigator && _navigator.userAgent) { + httpData.headers = { + 'User-Agent': navigator.userAgent + }; + } // Check in `window` instead of `document`, as we may be in ServiceWorker environment + + + if (_window$1.location && _window$1.location.href) { + httpData.url = _window$1.location.href; + } + + if (this._hasDocument && _document.referrer) { + if (!httpData.headers) httpData.headers = {}; + httpData.headers.Referer = _document.referrer; + } + + return httpData; + }, + _resetBackoff: function _resetBackoff() { + this._backoffDuration = 0; + this._backoffStart = null; + }, + _shouldBackoff: function _shouldBackoff() { + return this._backoffDuration && now() - this._backoffStart < this._backoffDuration; + }, + + /** + * Returns true if the in-process data payload matches the signature + * of the previously-sent data + * + * NOTE: This has to be done at this level because TraceKit can generate + * data from window.onerror WITHOUT an exception object (IE8, IE9, + * other old browsers). This can take the form of an "exception" + * data object with a single frame (derived from the onerror args). + */ + _isRepeatData: function _isRepeatData(current) { + var last = this._lastData; + if (!last || current.message !== last.message || // defined for captureMessage + current.culprit !== last.culprit // defined for captureException/onerror + ) return false; // Stacktrace interface (i.e. from captureMessage) + + if (current.stacktrace || last.stacktrace) { + return isSameStacktrace(current.stacktrace, last.stacktrace); + } else if (current.exception || last.exception) { + // Exception interface (i.e. from captureException/onerror) + return isSameException(current.exception, last.exception); + } + + return true; + }, + _setBackoffState: function _setBackoffState(request) { + // If we are already in a backoff state, don't change anything + if (this._shouldBackoff()) { + return; + } + + var status = request.status; // 400 - project_id doesn't exist or some other fatal + // 401 - invalid/revoked dsn + // 429 - too many requests + + if (!(status === 400 || status === 401 || status === 429)) return; + var retry; + + try { + // If Retry-After is not in Access-Control-Expose-Headers, most + // browsers will throw an exception trying to access it + if (supportsFetch()) { + retry = request.headers.get('Retry-After'); + } else { + retry = request.getResponseHeader('Retry-After'); + } // Retry-After is returned in seconds + + + retry = parseInt(retry, 10) * 1000; + } catch (e) { + /* eslint no-empty:0 */ + } + + this._backoffDuration = retry ? // If Sentry server returned a Retry-After value, use it + retry : // Otherwise, double the last backoff duration (starts at 1 sec) + this._backoffDuration * 2 || 1000; + this._backoffStart = now(); + }, + _send: function _send(data) { + var globalOptions = this._globalOptions; + + var baseData = { + project: this._globalProject, + logger: globalOptions.logger, + platform: 'javascript' + }, + httpData = this._getHttpData(); + + if (httpData) { + baseData.request = httpData; + } // HACK: delete `trimHeadFrames` to prevent from appearing in outbound payload + + + if (data.trimHeadFrames) delete data.trimHeadFrames; + data = objectMerge(baseData, data); // Merge in the tags and extra separately since objectMerge doesn't handle a deep merge + + data.tags = objectMerge(objectMerge({}, this._globalContext.tags), data.tags); + data.extra = objectMerge(objectMerge({}, this._globalContext.extra), data.extra); // Send along our own collected metadata with extra + + data.extra['session:duration'] = now() - this._startTime; + + if (this._breadcrumbs && this._breadcrumbs.length > 0) { + // intentionally make shallow copy so that additions + // to breadcrumbs aren't accidentally sent in this request + data.breadcrumbs = { + values: [].slice.call(this._breadcrumbs, 0) + }; + } + + if (this._globalContext.user) { + // sentry.interfaces.User + data.user = this._globalContext.user; + } // Include the environment if it's defined in globalOptions + + + if (globalOptions.environment) data.environment = globalOptions.environment; // Include the release if it's defined in globalOptions + + if (globalOptions.release) data.release = globalOptions.release; // Include server_name if it's defined in globalOptions + + if (globalOptions.serverName) data.server_name = globalOptions.serverName; // Cleanup empty properties before sending them to the server + + Object.keys(data).forEach(function (key) { + if (data[key] == null || data[key] === '' || isEmptyObject(data[key])) { + delete data[key]; + } + }); + + if (isFunction(globalOptions.dataCallback)) { + data = globalOptions.dataCallback(data) || data; + } // Why?????????? + + + if (!data || isEmptyObject(data)) { + return; + } // Check if the request should be filtered or not + + + if (isFunction(globalOptions.shouldSendCallback) && !globalOptions.shouldSendCallback(data)) { + return; + } // Backoff state: Sentry server previously responded w/ an error (e.g. 429 - too many requests), + // so drop requests until "cool-off" period has elapsed. + + + if (this._shouldBackoff()) { + this._logDebug('warn', 'Raven dropped error due to backoff: ', data); + + return; + } + + if (typeof globalOptions.sampleRate === 'number') { + if (Math.random() < globalOptions.sampleRate) { + this._sendProcessedPayload(data); + } + } else { + this._sendProcessedPayload(data); + } + }, + _getUuid: function _getUuid() { + return uuid4(); + }, + _sendProcessedPayload: function _sendProcessedPayload(data, callback) { + var self = this; + var globalOptions = this._globalOptions; + if (!this.isSetup()) return; // Try and clean up the packet before sending by truncating long values + + data = this._trimPacket(data); // ideally duplicate error testing should occur *before* dataCallback/shouldSendCallback, + // but this would require copying an un-truncated copy of the data packet, which can be + // arbitrarily deep (extra_data) -- could be worthwhile? will revisit + + if (!this._globalOptions.allowDuplicates && this._isRepeatData(data)) { + this._logDebug('warn', 'Raven dropped repeat event: ', data); + + return; + } // Send along an event_id if not explicitly passed. + // This event_id can be used to reference the error within Sentry itself. + // Set lastEventId after we know the error should actually be sent + + + this._lastEventId = data.event_id || (data.event_id = this._getUuid()); // Store outbound payload after trim + + this._lastData = data; + + this._logDebug('debug', 'Raven about to send:', data); + + var auth = { + sentry_version: '7', + sentry_client: 'raven-js/' + this.VERSION, + sentry_key: this._globalKey + }; + + if (this._globalSecret) { + auth.sentry_secret = this._globalSecret; + } + + var exception = data.exception && data.exception.values[0]; // only capture 'sentry' breadcrumb is autoBreadcrumbs is truthy + + if (this._globalOptions.autoBreadcrumbs && this._globalOptions.autoBreadcrumbs.sentry) { + this.captureBreadcrumb({ + category: 'sentry', + message: exception ? (exception.type ? exception.type + ': ' : '') + exception.value : data.message, + event_id: data.event_id, + level: data.level || 'error' // presume error unless specified + + }); + } + + var url = this._globalEndpoint; + + (globalOptions.transport || this._makeRequest).call(this, { + url: url, + auth: auth, + data: data, + options: globalOptions, + onSuccess: function success() { + self._resetBackoff(); + + self._triggerEvent('success', { + data: data, + src: url + }); + + callback && callback(); + }, + onError: function failure(error) { + self._logDebug('error', 'Raven transport failed to send: ', error); + + if (error.request) { + self._setBackoffState(error.request); + } + + self._triggerEvent('failure', { + data: data, + src: url + }); + + error = error || new Error('Raven send failed (no additional details provided)'); + callback && callback(error); + } + }); + }, + _makeRequest: function _makeRequest(opts) { + // Auth is intentionally sent as part of query string (NOT as custom HTTP header) to avoid preflight CORS requests + var url = opts.url + '?' + urlencode(opts.auth); + var evaluatedHeaders = null; + var evaluatedFetchParameters = {}; + + if (opts.options.headers) { + evaluatedHeaders = this._evaluateHash(opts.options.headers); + } + + if (opts.options.fetchParameters) { + evaluatedFetchParameters = this._evaluateHash(opts.options.fetchParameters); + } + + if (supportsFetch()) { + evaluatedFetchParameters.body = stringify_1(opts.data); + var defaultFetchOptions = objectMerge({}, this._fetchDefaults); + var fetchOptions = objectMerge(defaultFetchOptions, evaluatedFetchParameters); + + if (evaluatedHeaders) { + fetchOptions.headers = evaluatedHeaders; + } + + return _window$1.fetch(url, fetchOptions).then(function (response) { + if (response.ok) { + opts.onSuccess && opts.onSuccess(); + } else { + var error = new Error('Sentry error code: ' + response.status); // It's called request only to keep compatibility with XHR interface + // and not add more redundant checks in setBackoffState method + + error.request = response; + opts.onError && opts.onError(error); + } + })['catch'](function () { + opts.onError && opts.onError(new Error('Sentry error code: network unavailable')); + }); + } + + var request = _window$1.XMLHttpRequest && new _window$1.XMLHttpRequest(); + if (!request) return; // if browser doesn't support CORS (e.g. IE7), we are out of luck + + var hasCORS = 'withCredentials' in request || typeof XDomainRequest !== 'undefined'; + if (!hasCORS) return; + + if ('withCredentials' in request) { + request.onreadystatechange = function () { + if (request.readyState !== 4) { + return; + } else if (request.status === 200) { + opts.onSuccess && opts.onSuccess(); + } else if (opts.onError) { + var err = new Error('Sentry error code: ' + request.status); + err.request = request; + opts.onError(err); + } + }; + } else { + request = new XDomainRequest(); // xdomainrequest cannot go http -> https (or vice versa), + // so always use protocol relative + + url = url.replace(/^https?:/, ''); // onreadystatechange not supported by XDomainRequest + + if (opts.onSuccess) { + request.onload = opts.onSuccess; + } + + if (opts.onError) { + request.onerror = function () { + var err = new Error('Sentry error code: XDomainRequest'); + err.request = request; + opts.onError(err); + }; + } + } + + request.open('POST', url); + + if (evaluatedHeaders) { + each(evaluatedHeaders, function (key, value) { + request.setRequestHeader(key, value); + }); + } + + request.send(stringify_1(opts.data)); + }, + _evaluateHash: function _evaluateHash(hash) { + var evaluated = {}; + + for (var key in hash) { + if (hash.hasOwnProperty(key)) { + var value = hash[key]; + evaluated[key] = typeof value === 'function' ? value() : value; + } + } + + return evaluated; + }, + _logDebug: function _logDebug(level) { + if (this._originalConsoleMethods[level] && this.debug) { + // In IE<10 console methods do not have their own 'apply' method + Function.prototype.apply.call(this._originalConsoleMethods[level], this._originalConsole, [].slice.call(arguments, 1)); + } + }, + _mergeContext: function _mergeContext(key, context) { + if (isUndefined(context)) { + delete this._globalContext[key]; + } else { + this._globalContext[key] = objectMerge(this._globalContext[key] || {}, context); + } + } +}; // Deprecations + +Raven$1.prototype.setUser = Raven$1.prototype.setUserContext; +Raven$1.prototype.setReleaseContext = Raven$1.prototype.setRelease; +var raven = Raven$1; + +/** + * Enforces a single instance of the Raven client, and the + * main entry point for Raven. If you are a consumer of the + * Raven library, you SHOULD load this file (vs raven.js). + **/ +// This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) + +var _window = typeof window !== 'undefined' ? window : typeof commonjsGlobal !== 'undefined' ? commonjsGlobal : typeof self !== 'undefined' ? self : {}; + +var _Raven = _window.Raven; +var Raven = new raven(); +/* + * Allow multiple versions of Raven to be installed. + * Strip Raven from the global context and returns the instance. + * + * @return {Raven} + */ + +Raven.noConflict = function () { + _window.Raven = _Raven; + return Raven; +}; + +Raven.afterLoad(); +var singleton = Raven; + +/** + * Ember.js plugin + * + * Patches event handler callbacks and ajax callbacks. + */ +function emberPlugin(Raven, Ember) { + Ember = Ember || window.Ember; // quit if Ember isn't on the page + + if (!Ember) return; + var _oldOnError = Ember.onerror; + + Ember.onerror = function EmberOnError(error) { + Raven.captureException(error); + + if (typeof _oldOnError === 'function') { + _oldOnError.call(this, error); + } + }; + + Ember.RSVP.on('error', function (reason) { + if (reason instanceof Error) { + Raven.captureException(reason, { + extra: { + context: 'Unhandled Promise error detected' + } + }); + } else { + Raven.captureMessage('Unhandled Promise error detected', { + extra: { + reason: reason + } + }); + } + }); +} + +var ember = emberPlugin; + +/*global define*/ + +/** + * require.js plugin + * + * Automatically wrap define/require callbacks. (Experimental) + */ + +function requirePlugin(Raven) { + if (typeof undefined === 'function' && undefined.amd) { + window.define = Raven.wrap({ + deep: false + }, undefined); + window.require = Raven.wrap({ + deep: false + }, commonjsRequire); + } +} + +var require_1 = requirePlugin; + +/** + * Vue.js 2.0 plugin + * + */ +function formatComponentName(vm) { + if (vm.$root === vm) { + return 'root instance'; + } + + var name = vm._isVue ? vm.$options.name || vm.$options._componentTag : vm.name; + return (name ? 'component <' + name + '>' : 'anonymous component') + (vm._isVue && vm.$options.__file ? ' at ' + vm.$options.__file : ''); +} + +function vuePlugin(Raven, Vue) { + Vue = Vue || window.Vue; // quit if Vue isn't on the page + + if (!Vue || !Vue.config) return; + var _oldOnError = Vue.config.errorHandler; + + Vue.config.errorHandler = function VueErrorHandler(error, vm, info) { + var metaData = {}; // vm and lifecycleHook are not always available + + if (Object.prototype.toString.call(vm) === '[object Object]') { + metaData.componentName = formatComponentName(vm); + metaData.propsData = vm.$options.propsData; + } + + if (typeof info !== 'undefined') { + metaData.lifecycleHook = info; + } + + Raven.captureException(error, { + extra: metaData + }); + + if (typeof _oldOnError === 'function') { + _oldOnError.call(this, error, vm, info); + } + }; +} + +var vue = vuePlugin; + +/* This file was generated by './scripts/generate-plugin-combinations.js'! */ + +singleton.addPlugin(ember).addPlugin(require_1).addPlugin(vue); +var ember_require_vue = {}; + +return ember_require_vue; + +}))); diff --git a/dist/ember,require,vue/raven.min.js b/dist/ember,require,vue/raven.min.js new file mode 100644 index 000000000000..1cfb941edf96 --- /dev/null +++ b/dist/ember,require,vue/raven.min.js @@ -0,0 +1,3 @@ +/*! Raven.js 3.22.2 (1b6187b) | github.com/getsentry/raven-js */ +!function(a,b){"object"==typeof exports&&"undefined"!=typeof module?module.exports=b():"function"==typeof define&&define.amd?define(b):a.Raven=b()}(this,function(){"use strict";function a(a,b){return b={exports:{}},a(b,b.exports),b.exports}function b(a){return(b="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(a){return typeof a}:function(a){return a&&"function"==typeof Symbol&&a.constructor===Symbol&&a!==Symbol.prototype?"symbol":typeof a})(a)}function c(a){return"object"===b(a)&&null!==a}function d(a){switch({}.toString.call(a)){case"[object Error]":return!0;case"[object Exception]":return!0;case"[object DOMException]":return!0;default:return a instanceof Error}}function e(a){return l()&&"[object ErrorEvent]"==={}.toString.call(a)}function f(a){return void 0===a}function g(a){return"function"==typeof a}function h(a){return"[object Object]"===Object.prototype.toString.call(a)}function i(a){return"[object String]"===Object.prototype.toString.call(a)}function j(a){return"[object Array]"===Object.prototype.toString.call(a)}function k(a){if(!h(a))return!1;for(var b in a)if(a.hasOwnProperty(b))return!1;return!0}function l(){try{return new ErrorEvent(""),!0}catch(a){return!1}}function m(){if(!("fetch"in Q))return!1;try{return new Headers,new Request(""),new Response,!0}catch(a){return!1}}function n(a){function b(b,c){var d=a(b)||b;return c?c(d)||d:d}return b}function o(a,b){var c,d;if(f(a.length))for(c in a)s(a,c)&&b.call(null,c,a[c]);else if(d=a.length)for(c=0;c ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function y(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&i(b))for(c=b.split(/\s+/),f=0;f":"anonymous component")+(a._isVue&&a.$options.__file?" at "+a.$options.__file:"")}function N(a,b){if(b=b||window.Vue,b&&b.config){var c=b.config.errorHandler;b.config.errorHandler=function(b,d,e){var f={};"[object Object]"===Object.prototype.toString.call(d)&&(f.componentName=M(d),f.propsData=d.$options.propsData),"undefined"!=typeof e&&(f.lifecycleHook=e),a.captureException(b,{extra:f}),"function"==typeof c&&c.call(this,b,d,e)}}}var O="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{},P=Object.setPrototypeOf||function(a,b){return a.B=b,a},Q=("object"==typeof Reflect&&Reflect.construct||function(a,b,c){var d,e=[null];return e.push.apply(e,b),d=a.bind.apply(a,e),P(new d,c.prototype)},"undefined"!=typeof window?window:"undefined"!=typeof O?O:"undefined"!=typeof self?self:{}),R={isObject:c,isError:d,isErrorEvent:e,isUndefined:f,isFunction:g,isPlainObject:h,isString:i,isArray:j,isEmptyObject:k,supportsErrorEvent:l,supportsFetch:m,wrappedCallback:n,each:o,objectMerge:p,truncate:r,objectFrozen:q,hasKey:s,joinRegExp:t,urlencode:u,uuid4:w,htmlTreeAsString:x,htmlElementAsString:y,isSameException:B,isSameStacktrace:C,parseUrl:v,fill:D,safeJoin:E},S={collectWindowErrors:!0,debug:!1},T="undefined"!=typeof window?window:"undefined"!=typeof O?O:"undefined"!=typeof self?self:{},U=[].slice,V="?",W=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;S.report=function(){function a(a){f(),l.push(a)}function b(a){for(var b=l.length-1;b>=0;--b)l[b]===a&&l.splice(b,1)}function c(){g(),l=[]}function d(a,b){var c=null;if(!b||S.collectWindowErrors){for(var d in l)if(l.hasOwnProperty(d))try{l[d].apply(null,[a].concat(U.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function e(a,b,c,e,f){var g=null,i=R.isErrorEvent(f)?f.error:f,k=R.isErrorEvent(a)?a.message:a;if(o)S.computeStackTrace.augmentStackTraceWithInitialElement(o,b,c,k),h();else if(i&&R.isError(i))g=S.computeStackTrace(i),d(g,!0);else{var l,m={url:b,line:c,column:e},n=void 0;if("[object String]"==={}.toString.call(k)){var l=k.match(W);l&&(n=l[1],k=l[2])}m.func=V,g={name:n,message:k,url:F(),stack:[m]},d(g,!0)}return!!j&&j.apply(this,arguments)}function f(){k||(j=T.onerror,T.onerror=e,k=!0)}function g(){k&&(T.onerror=j,k=!1,j=void 0)}function h(){var a=o,b=m;m=null,o=null,n=null,d.apply(null,[a,!1].concat(b))}function i(a,b){var c=U.call(arguments,1);if(o){if(n===a)return;h()}var d=S.computeStackTrace(a);if(o=d,n=a,m=c,setTimeout(function(){n===a&&h()},d.incomplete?2e3:0),b!==!1)throw a}var j,k,l=[],m=null,n=null,o=null;return i.subscribe=a,i.unsubscribe=b,i.uninstall=c,i}(),S.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,d,e=/^\s*at (.*?) ?\(((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,f=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|\[native).*?|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,g=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,h=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,i=/\((\S*)(?::(\d+))(?::(\d+))\)/,j=a.stack.split("\n"),k=[],l=(/^(.*) is undefined$/.exec(a.message),0),m=j.length;l eval")>-1;o&&(b=h.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==l||c[5]||"undefined"==typeof a.columnNumber||(k[0].column=a.columnNumber+1),d={url:c[3],func:c[1]||V,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}!d.func&&d.line&&(d.func=V),k.push(d)}return k.length?{name:a.name,message:a.message,url:F(),stack:k}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=V),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,e){for(var f,g,h=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,i=[],j={},k=!1,l=c.caller;l&&!k;l=l.caller)if(l!==d&&l!==S.report){if(g={url:null,func:V,line:null,column:null},l.name?g.func=l.name:(f=h.exec(l.toString()))&&(g.func=f[1]),"undefined"==typeof g.func)try{g.func=f.input.substring(0,f.input.indexOf("{"))}catch(m){}j[""+l]?k=!0:j[""+l]=!0,i.push(g)}e&&i.splice(0,e);var n={name:a.name,message:a.message,url:F(),stack:i};return b(n,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),n}function d(b,d){var e=null;d=null==d?0:+d;try{if(e=a(b))return e}catch(f){if(S.debug)throw f}try{if(e=c(b,d+1))return e}catch(f){if(S.debug)throw f}return{name:b.name,message:b.message,url:F()}}return d.augmentStackTraceWithInitialElement=b,d.computeStackTraceFromStackProp=a,d}();var X=S,Y=a(function(a,b){function c(a,b){for(var c=0;c0){var i=c(d,this);~i?d.splice(i+1):d.push(this),~i?f.splice(i,1/0,g):f.push(g),~c(d,h)&&(h=b.call(this,g,h))}else d.push(h);return null==a?h instanceof Error?e(h):h:a.call(this,g,h)}}b=a.exports=d,b.getSerialize=f});G.prototype=new Error,G.prototype.constructor=G;var Z=G,$=function(a,b,c){var d=a[b],e=a;if(b in a){var f="warn"===b?"warning":b;a[b]=function(){var a=[].slice.call(arguments),g=R.safeJoin(a," "),h={level:f,logger:"console",extra:{arguments:a}};"assert"===b?a[0]===!1&&(g="Assertion failed: "+(R.safeJoin(a.slice(1)," ")||"console.assert"),h.extra.arguments=a.slice(1),c&&c(g,h)):c&&c(g,h),d&&Function.prototype.apply.call(d,e,a)}}},_={wrapMethod:$},aa=R.isError,ba=R.isObject,ca=R.isErrorEvent,da=R.isUndefined,ea=R.isFunction,fa=R.isString,ga=R.isArray,ha=R.isEmptyObject,ia=R.each,ja=R.objectMerge,ka=R.truncate,la=R.objectFrozen,ma=R.hasKey,na=R.joinRegExp,oa=R.urlencode,pa=R.uuid4,qa=R.htmlTreeAsString,ra=R.isSameException,sa=R.isSameStacktrace,ta=R.parseUrl,ua=R.fill,va=R.supportsFetch,wa=_.wrapMethod,xa="source protocol user pass host port path".split(" "),ya=/^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/,za="undefined"!=typeof window?window:"undefined"!=typeof O?O:"undefined"!=typeof self?self:{},Aa=za.document,Ba=za.navigator;J.prototype={VERSION:"3.22.2",debug:!1,TraceKit:X,config:function(a,b){var c=this;if(c.i)return this.C("error","Error: Raven has already been configured"),c;if(!a)return c;var d=c.m;b&&ia(b,function(a,b){"tags"===a||"extra"===a||"user"===a?c.l[a]=b:d[a]=b}),c.setDSN(a),d.ignoreErrors.push(/^Script error\.?$/),d.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/),d.ignoreErrors=na(d.ignoreErrors),d.ignoreUrls=!!d.ignoreUrls.length&&na(d.ignoreUrls),d.whitelistUrls=!!d.whitelistUrls.length&&na(d.whitelistUrls),d.includePaths=na(d.includePaths),d.maxBreadcrumbs=Math.max(0,Math.min(d.maxBreadcrumbs||100,100));var e={xhr:!0,console:!0,dom:!0,location:!0,sentry:!0},f=d.autoBreadcrumbs;"[object Object]"==={}.toString.call(f)?f=ja(e,f):f!==!1&&(f=e),d.autoBreadcrumbs=f;var g={tryCatch:!0},h=d.instrument;return"[object Object]"==={}.toString.call(h)?h=ja(g,h):h!==!1&&(h=g),d.instrument=h,X.collectWindowErrors=!!d.collectWindowErrors,c},install:function(){var a=this;return a.isSetup()&&!a.p&&(X.report.subscribe(function(){a.D.apply(a,arguments)}),a.E(),a.m.instrument&&a.m.instrument.tryCatch&&a.F(),a.m.autoBreadcrumbs&&a.G(),a.H(),a.p=!0),Error.stackTraceLimit=a.m.stackTraceLimit,this},setDSN:function(a){var b=this,c=b.I(a),d=c.path.lastIndexOf("/"),e=c.path.substr(1,d);b.J=a,b.j=c.user,b.K=c.pass&&c.pass.substr(1),b.k=c.path.substr(d+1),b.i=b.L(c),b.M=b.i+"/"+e+"api/"+b.k+"/store/",this.A()},context:function(a,b,c){return ea(a)&&(c=b||[],b=a,a=void 0),this.wrap(a,b).apply(this,c)},wrap:function(a,b,c){function d(){var d=[],f=arguments.length,g=!a||a&&a.deep!==!1;for(c&&ea(c)&&c.apply(this,arguments);f--;)d[f]=g?e.wrap(a,arguments[f]):arguments[f];try{return b.apply(this,d)}catch(h){throw e.N(),e.captureException(h,a),h}}var e=this;if(da(b)&&!ea(a))return a;if(ea(a)&&(b=a,a=void 0),!ea(b))return b;try{if(b.a)return b;if(b.O)return b.O}catch(f){return b}for(var g in b)ma(b,g)&&(d[g]=b[g]);return d.prototype=b.prototype,b.O=d,d.a=!0,d.b=b,d},uninstall:function(){return X.report.uninstall(),this.P(),this.Q(),this.R(),Error.stackTraceLimit=this.q,this.p=!1,this},captureException:function(a,b){b=ja({trimHeadFrames:0},b?b:{});var c=!aa(a),d=!ca(a),e=ca(a)&&!a.error;if(c&&d||e)return this.captureMessage(a,ja(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}));ca(a)&&(a=a.error),this.f=a;try{var f=X.computeStackTrace(a);this.S(f,b)}catch(g){if(a!==g)throw g}return this},captureMessage:function(a,b){if(!this.m.ignoreErrors.test||!this.m.ignoreErrors.test(a)){b=b||{};var c,d=ja({message:a+""},b);try{throw new Error(a)}catch(e){c=e}c.name=null;var f=X.computeStackTrace(c),g=ga(f.stack)&&f.stack[1],h=g&&g.url||"";if((!this.m.ignoreUrls.test||!this.m.ignoreUrls.test(h))&&(!this.m.whitelistUrls.test||this.m.whitelistUrls.test(h))){if(this.m.stacktrace||b&&b.stacktrace){b=ja({fingerprint:a,trimHeadFrames:(b.trimHeadFrames||0)+1},b);var i=this.T(f,b);d.stacktrace={frames:i.reverse()}}return this.U(d),this}}},captureBreadcrumb:function(a){var b=ja({timestamp:H()/1e3},a);if(ea(this.m.breadcrumbCallback)){var c=this.m.breadcrumbCallback(b);if(ba(c)&&!ha(c))b=c;else if(c===!1)return this}return this.w.push(b),this.w.length>this.m.maxBreadcrumbs&&this.w.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.t.push([a,b]),this.p&&this.H(),this},setUserContext:function(a){return this.l.user=a,this},setExtraContext:function(a){return this.V("extra",a),this},setTagsContext:function(a){return this.V("tags",a),this},clearContext:function(){return this.l={},this},getContext:function(){return JSON.parse(Y(this.l))},setEnvironment:function(a){return this.m.environment=a,this},setRelease:function(a){return this.m.release=a,this},setDataCallback:function(a){var b=this.m.dataCallback;return this.m.dataCallback=I(b,a),this},setBreadcrumbCallback:function(a){var b=this.m.breadcrumbCallback;return this.m.breadcrumbCallback=I(b,a),this},setShouldSendCallback:function(a){var b=this.m.shouldSendCallback;return this.m.shouldSendCallback=I(b,a),this},setTransport:function(a){return this.m.transport=a,this},lastException:function(){return this.f},lastEventId:function(){return this.h},isSetup:function(){return!!this.c&&(!!this.i||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.C("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=za.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(Aa){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new Z("Missing eventId");var c=a.dsn||this.J;if(!c)throw new Z("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.l.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.L(this.I(c)),h=Aa.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(Aa.head||Aa.body).appendChild(h)}},N:function(){var a=this;this.o+=1,setTimeout(function(){a.o-=1})},W:function(a,b){var c,d;if(this.d){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),Aa.createEvent?(c=Aa.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=Aa.createEventObject(),c.eventType=a);for(d in b)ma(b,d)&&(c[d]=b[d]);if(Aa.createEvent)Aa.dispatchEvent(c);else try{Aa.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},X:function(a){var b=this;return function(c){if(b.Y=null,b.x!==c){b.x=c;var d;try{d=qa(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},Z:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.Y;g||a.X("input")(c),clearTimeout(g),a.Y=setTimeout(function(){a.Y=null},b)}}},$:function(a,b){var c=ta(this.y.href),d=ta(b),e=ta(a);this.z=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},E:function(){var a=this;a._=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.a?a._.apply(this.b,arguments):a._.apply(this,arguments)}},P:function(){this._&&(Function.prototype.toString=this._)},F:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.$(b.z,c+""),a.apply(this,arguments)}};ua(history,"pushState",j,d),ua(history,"replaceState",j,d)}if(c.console&&"console"in za&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};ia(["debug","info","warn","error","log"],function(a,b){wa(console,b,k)})}},Q:function(){for(var a;this.v.length;){a=this.v.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},R:function(){for(var a in this.s)this.r[a]=this.s[a]},H:function(){var a=this;ia(this.t,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},I:function(a){var b=ya.exec(a),c={},d=7;try{for(;d--;)c[xa[d]]=b[d]||""}catch(e){throw new Z("Invalid DSN: "+a)}if(c.pass&&!this.m.allowSecretKey)throw new Z("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},L:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},D:function(){this.o||this.S.apply(this,arguments)},S:function(a,b){var c=this.T(a,b);this.W("handle",{stackInfo:a,options:b}),this.ba(a.name,a.message,a.url,a.lineno,c,b)},T:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(ia(a.stack,function(b,e){var f=c.ca(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.w,0)}),this.l.user&&(a.user=this.l.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||ha(a[b]))&&delete a[b]}),ea(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!ha(a)&&(!ea(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.ia()?void this.C("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() href parsing trick because React Native and other +// environments where DOM might not be available + + +function parseUrl$1(url) { + if (typeof url !== 'string') return {}; + var match = url.match(/^(([^:\/?#]+):)?(\/\/([^\/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?$/); // coerce to undefined values to empty string so we don't get 'undefined' + + var query = match[6] || ''; + var fragment = match[8] || ''; + return { + protocol: match[2], + host: match[4], + path: match[5], + relative: match[5] + query + fragment // everything minus origin + + }; +} + +function uuid4$1() { + var crypto = _window$3.crypto || _window$3.msCrypto; + + if (!isUndefined$1(crypto) && crypto.getRandomValues) { + // Use window.crypto API if available + // eslint-disable-next-line no-undef + var arr = new Uint16Array(8); + crypto.getRandomValues(arr); // set 4 in byte 7 + + arr[3] = arr[3] & 0xfff | 0x4000; // set 2 most significant bits of byte 9 to '10' + + arr[4] = arr[4] & 0x3fff | 0x8000; + + var pad = function pad(num) { + var v = num.toString(16); + + while (v.length < 4) { + v = '0' + v; + } + + return v; + }; + + return pad(arr[0]) + pad(arr[1]) + pad(arr[2]) + pad(arr[3]) + pad(arr[4]) + pad(arr[5]) + pad(arr[6]) + pad(arr[7]); + } else { + // http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/2117523#2117523 + return 'xxxxxxxxxxxx4xxxyxxxxxxxxxxxxxxx'.replace(/[xy]/g, function (c) { + var r = Math.random() * 16 | 0, + v = c === 'x' ? r : r & 0x3 | 0x8; + return v.toString(16); + }); + } +} +/** + * Given a child DOM element, returns a query-selector statement describing that + * and its ancestors + * e.g. [HTMLElement] => body > div > input#foo.btn[name=baz] + * @param elem + * @returns {string} + */ + + +function htmlTreeAsString$1(elem) { + /* eslint no-extra-parens:0*/ + var MAX_TRAVERSE_HEIGHT = 5, + MAX_OUTPUT_LEN = 80, + out = [], + height = 0, + len = 0, + separator = ' > ', + sepLength = separator.length, + nextStr; + + while (elem && height++ < MAX_TRAVERSE_HEIGHT) { + nextStr = htmlElementAsString(elem); // bail out if + // - nextStr is the 'html' element + // - the length of the string that would be created exceeds MAX_OUTPUT_LEN + // (ignore this limit if we are on the first iteration) + + if (nextStr === 'html' || height > 1 && len + out.length * sepLength + nextStr.length >= MAX_OUTPUT_LEN) { + break; + } + + out.push(nextStr); + len += nextStr.length; + elem = elem.parentNode; + } + + return out.reverse().join(separator); +} +/** + * Returns a simple, query-selector representation of a DOM element + * e.g. [HTMLElement] => input#foo.btn[name=baz] + * @param HTMLElement + * @returns {string} + */ + + +function htmlElementAsString(elem) { + var out = [], + className, + classes, + key, + attr, + i; + + if (!elem || !elem.tagName) { + return ''; + } + + out.push(elem.tagName.toLowerCase()); + + if (elem.id) { + out.push('#' + elem.id); + } + + className = elem.className; + + if (className && isString$1(className)) { + classes = className.split(/\s+/); + + for (i = 0; i < classes.length; i++) { + out.push('.' + classes[i]); + } + } + + var attrWhitelist = ['type', 'name', 'title', 'alt']; + + for (i = 0; i < attrWhitelist.length; i++) { + key = attrWhitelist[i]; + attr = elem.getAttribute(key); + + if (attr) { + out.push('[' + key + '="' + attr + '"]'); + } + } + + return out.join(''); +} +/** + * Returns true if either a OR b is truthy, but not both + */ + + +function isOnlyOneTruthy(a, b) { + return !!(!!a ^ !!b); +} +/** + * Returns true if both parameters are undefined + */ + + +function isBothUndefined(a, b) { + return isUndefined$1(a) && isUndefined$1(b); +} +/** + * Returns true if the two input exception interfaces have the same content + */ + + +function isSameException$1(ex1, ex2) { + if (isOnlyOneTruthy(ex1, ex2)) return false; + ex1 = ex1.values[0]; + ex2 = ex2.values[0]; + if (ex1.type !== ex2.type || ex1.value !== ex2.value) return false; // in case both stacktraces are undefined, we can't decide so default to false + + if (isBothUndefined(ex1.stacktrace, ex2.stacktrace)) return false; + return isSameStacktrace$1(ex1.stacktrace, ex2.stacktrace); +} +/** + * Returns true if the two input stack trace interfaces have the same content + */ + + +function isSameStacktrace$1(stack1, stack2) { + if (isOnlyOneTruthy(stack1, stack2)) return false; + var frames1 = stack1.frames; + var frames2 = stack2.frames; // Exit early if frame count differs + + if (frames1.length !== frames2.length) return false; // Iterate through every frame; bail out if anything differs + + var a, b; + + for (var i = 0; i < frames1.length; i++) { + a = frames1[i]; + b = frames2[i]; + if (a.filename !== b.filename || a.lineno !== b.lineno || a.colno !== b.colno || a['function'] !== b['function']) return false; + } + + return true; +} +/** + * Polyfill a method + * @param obj object e.g. `document` + * @param name method name present on object e.g. `addEventListener` + * @param replacement replacement function + * @param track {optional} record instrumentation to an array + */ + + +function fill$1(obj, name, replacement, track) { + var orig = obj[name]; + obj[name] = replacement(orig); + obj[name].__raven__ = true; + obj[name].__orig__ = orig; + + if (track) { + track.push([obj, name, orig]); + } +} +/** + * Join values in array + * @param input array of values to be joined together + * @param delimiter string to be placed in-between values + * @returns {string} + */ + + +function safeJoin(input, delimiter) { + if (!isArray$1(input)) return ''; + var output = []; + + for (var i = 0; i < input.length; i++) { + try { + output.push(String(input[i])); + } catch (e) { + output.push('[value cannot be serialized]'); + } + } + + return output.join(delimiter); +} + +var utils = { + isObject: isObject$1, + isError: isError$1, + isErrorEvent: isErrorEvent$1, + isUndefined: isUndefined$1, + isFunction: isFunction$1, + isPlainObject: isPlainObject, + isString: isString$1, + isArray: isArray$1, + isEmptyObject: isEmptyObject$1, + supportsErrorEvent: supportsErrorEvent, + supportsFetch: supportsFetch$1, + wrappedCallback: wrappedCallback, + each: each$1, + objectMerge: objectMerge$1, + truncate: truncate$1, + objectFrozen: objectFrozen$1, + hasKey: hasKey$1, + joinRegExp: joinRegExp$1, + urlencode: urlencode$1, + uuid4: uuid4$1, + htmlTreeAsString: htmlTreeAsString$1, + htmlElementAsString: htmlElementAsString, + isSameException: isSameException$1, + isSameStacktrace: isSameStacktrace$1, + parseUrl: parseUrl$1, + fill: fill$1, + safeJoin: safeJoin +}; + +/* + TraceKit - Cross brower stack traces + + This was originally forked from github.com/occ/TraceKit, but has since been + largely re-written and is now maintained as part of raven-js. Tests for + this are in test/vendor. + + MIT license +*/ + +var TraceKit = { + collectWindowErrors: true, + debug: false +}; // This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) + +var _window$2 = typeof window !== 'undefined' ? window : typeof commonjsGlobal !== 'undefined' ? commonjsGlobal : typeof self !== 'undefined' ? self : {}; // global reference to slice + + +var _slice = [].slice; +var UNKNOWN_FUNCTION = '?'; // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error#Error_types + +var ERROR_TYPES_RE = /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/; + +function getLocationHref() { + if (typeof document === 'undefined' || document.location == null) return ''; + return document.location.href; +} +/** + * TraceKit.report: cross-browser processing of unhandled exceptions + * + * Syntax: + * TraceKit.report.subscribe(function(stackInfo) { ... }) + * TraceKit.report.unsubscribe(function(stackInfo) { ... }) + * TraceKit.report(exception) + * try { ...code... } catch(ex) { TraceKit.report(ex); } + * + * Supports: + * - Firefox: full stack trace with line numbers, plus column number + * on top frame; column number is not guaranteed + * - Opera: full stack trace with line and column numbers + * - Chrome: full stack trace with line and column numbers + * - Safari: line and column number for the top frame only; some frames + * may be missing, and column number is not guaranteed + * - IE: line and column number for the top frame only; some frames + * may be missing, and column number is not guaranteed + * + * In theory, TraceKit should work on all of the following versions: + * - IE5.5+ (only 8.0 tested) + * - Firefox 0.9+ (only 3.5+ tested) + * - Opera 7+ (only 10.50 tested; versions 9 and earlier may require + * Exceptions Have Stacktrace to be enabled in opera:config) + * - Safari 3+ (only 4+ tested) + * - Chrome 1+ (only 5+ tested) + * - Konqueror 3.5+ (untested) + * + * Requires TraceKit.computeStackTrace. + * + * Tries to catch all unhandled exceptions and report them to the + * subscribed handlers. Please note that TraceKit.report will rethrow the + * exception. This is REQUIRED in order to get a useful stack trace in IE. + * If the exception does not reach the top of the browser, you will only + * get a stack trace from the point where TraceKit.report was called. + * + * Handlers receive a stackInfo object as described in the + * TraceKit.computeStackTrace docs. + */ + + +TraceKit.report = function reportModuleWrapper() { + var handlers = [], + lastArgs = null, + lastException = null, + lastExceptionStack = null; + /** + * Add a crash handler. + * @param {Function} handler + */ + + function subscribe(handler) { + installGlobalHandler(); + handlers.push(handler); + } + /** + * Remove a crash handler. + * @param {Function} handler + */ + + + function unsubscribe(handler) { + for (var i = handlers.length - 1; i >= 0; --i) { + if (handlers[i] === handler) { + handlers.splice(i, 1); + } + } + } + /** + * Remove all crash handlers. + */ + + + function unsubscribeAll() { + uninstallGlobalHandler(); + handlers = []; + } + /** + * Dispatch stack information to all handlers. + * @param {Object.} stack + */ + + + function notifyHandlers(stack, isWindowError) { + var exception = null; + + if (isWindowError && !TraceKit.collectWindowErrors) { + return; + } + + for (var i in handlers) { + if (handlers.hasOwnProperty(i)) { + try { + handlers[i].apply(null, [stack].concat(_slice.call(arguments, 2))); + } catch (inner) { + exception = inner; + } + } + } + + if (exception) { + throw exception; + } + } + + var _oldOnerrorHandler, _onErrorHandlerInstalled; + /** + * Ensures all global unhandled exceptions are recorded. + * Supported by Gecko and IE. + * @param {string} msg Error message. + * @param {string} url URL of script that generated the exception. + * @param {(number|string)} lineNo The line number at which the error + * occurred. + * @param {?(number|string)} colNo The column number at which the error + * occurred. + * @param {?Error} ex The actual Error object. + */ + + + function traceKitWindowOnError(msg, url, lineNo, colNo, ex) { + var stack = null; // If 'ex' is ErrorEvent, get real Error from inside + + var exception = utils.isErrorEvent(ex) ? ex.error : ex; // If 'msg' is ErrorEvent, get real message from inside + + var message = utils.isErrorEvent(msg) ? msg.message : msg; + + if (lastExceptionStack) { + TraceKit.computeStackTrace.augmentStackTraceWithInitialElement(lastExceptionStack, url, lineNo, message); + processLastException(); + } else if (exception && utils.isError(exception)) { + // non-string `exception` arg; attempt to extract stack trace + // New chrome and blink send along a real error object + // Let's just report that like a normal error. + // See: https://mikewest.org/2013/08/debugging-runtime-errors-with-window-onerror + stack = TraceKit.computeStackTrace(exception); + notifyHandlers(stack, true); + } else { + var location = { + url: url, + line: lineNo, + column: colNo + }; + var name = undefined; + var groups; + + if ({}.toString.call(message) === '[object String]') { + var groups = message.match(ERROR_TYPES_RE); + + if (groups) { + name = groups[1]; + message = groups[2]; + } + } + + location.func = UNKNOWN_FUNCTION; + stack = { + name: name, + message: message, + url: getLocationHref(), + stack: [location] + }; + notifyHandlers(stack, true); + } + + if (_oldOnerrorHandler) { + return _oldOnerrorHandler.apply(this, arguments); + } + + return false; + } + + function installGlobalHandler() { + if (_onErrorHandlerInstalled) { + return; + } + + _oldOnerrorHandler = _window$2.onerror; + _window$2.onerror = traceKitWindowOnError; + _onErrorHandlerInstalled = true; + } + + function uninstallGlobalHandler() { + if (!_onErrorHandlerInstalled) { + return; + } + + _window$2.onerror = _oldOnerrorHandler; + _onErrorHandlerInstalled = false; + _oldOnerrorHandler = undefined; + } + + function processLastException() { + var _lastExceptionStack = lastExceptionStack, + _lastArgs = lastArgs; + lastArgs = null; + lastExceptionStack = null; + lastException = null; + notifyHandlers.apply(null, [_lastExceptionStack, false].concat(_lastArgs)); + } + /** + * Reports an unhandled Error to TraceKit. + * @param {Error} ex + * @param {?boolean} rethrow If false, do not re-throw the exception. + * Only used for window.onerror to not cause an infinite loop of + * rethrowing. + */ + + + function report(ex, rethrow) { + var args = _slice.call(arguments, 1); + + if (lastExceptionStack) { + if (lastException === ex) { + return; // already caught by an inner catch block, ignore + } else { + processLastException(); + } + } + + var stack = TraceKit.computeStackTrace(ex); + lastExceptionStack = stack; + lastException = ex; + lastArgs = args; // If the stack trace is incomplete, wait for 2 seconds for + // slow slow IE to see if onerror occurs or not before reporting + // this exception; otherwise, we will end up with an incomplete + // stack trace + + setTimeout(function () { + if (lastException === ex) { + processLastException(); + } + }, stack.incomplete ? 2000 : 0); + + if (rethrow !== false) { + throw ex; // re-throw to propagate to the top level (and cause window.onerror) + } + } + + report.subscribe = subscribe; + report.unsubscribe = unsubscribe; + report.uninstall = unsubscribeAll; + return report; +}(); +/** + * TraceKit.computeStackTrace: cross-browser stack traces in JavaScript + * + * Syntax: + * s = TraceKit.computeStackTrace(exception) // consider using TraceKit.report instead (see below) + * Returns: + * s.name - exception name + * s.message - exception message + * s.stack[i].url - JavaScript or HTML file URL + * s.stack[i].func - function name, or empty for anonymous functions (if guessing did not work) + * s.stack[i].args - arguments passed to the function, if known + * s.stack[i].line - line number, if known + * s.stack[i].column - column number, if known + * + * Supports: + * - Firefox: full stack trace with line numbers and unreliable column + * number on top frame + * - Opera 10: full stack trace with line and column numbers + * - Opera 9-: full stack trace with line numbers + * - Chrome: full stack trace with line and column numbers + * - Safari: line and column number for the topmost stacktrace element + * only + * - IE: no line numbers whatsoever + * + * Tries to guess names of anonymous functions by looking for assignments + * in the source code. In IE and Safari, we have to guess source file names + * by searching for function bodies inside all page scripts. This will not + * work for scripts that are loaded cross-domain. + * Here be dragons: some function names may be guessed incorrectly, and + * duplicate functions may be mismatched. + * + * TraceKit.computeStackTrace should only be used for tracing purposes. + * Logging of unhandled exceptions should be done with TraceKit.report, + * which builds on top of TraceKit.computeStackTrace and provides better + * IE support by utilizing the window.onerror event to retrieve information + * about the top of the stack. + * + * Note: In IE and Safari, no stack trace is recorded on the Error object, + * so computeStackTrace instead walks its *own* chain of callers. + * This means that: + * * in Safari, some methods may be missing from the stack trace; + * * in IE, the topmost function in the stack trace will always be the + * caller of computeStackTrace. + * + * This is okay for tracing (because you are likely to be calling + * computeStackTrace from the function you want to be the topmost element + * of the stack trace anyway), but not okay for logging unhandled + * exceptions (because your catch block will likely be far away from the + * inner function that actually caused the exception). + * + */ + + +TraceKit.computeStackTrace = function computeStackTraceWrapper() { + // Contents of Exception in various browsers. + // + // SAFARI: + // ex.message = Can't find variable: qq + // ex.line = 59 + // ex.sourceId = 580238192 + // ex.sourceURL = http://... + // ex.expressionBeginOffset = 96 + // ex.expressionCaretOffset = 98 + // ex.expressionEndOffset = 98 + // ex.name = ReferenceError + // + // FIREFOX: + // ex.message = qq is not defined + // ex.fileName = http://... + // ex.lineNumber = 59 + // ex.columnNumber = 69 + // ex.stack = ...stack trace... (see the example below) + // ex.name = ReferenceError + // + // CHROME: + // ex.message = qq is not defined + // ex.name = ReferenceError + // ex.type = not_defined + // ex.arguments = ['aa'] + // ex.stack = ...stack trace... + // + // INTERNET EXPLORER: + // ex.message = ... + // ex.name = ReferenceError + // + // OPERA: + // ex.message = ...message... (see the example below) + // ex.name = ReferenceError + // ex.opera#sourceloc = 11 (pretty much useless, duplicates the info in ex.message) + // ex.stacktrace = n/a; see 'opera:config#UserPrefs|Exceptions Have Stacktrace' + + /** + * Computes stack trace information from the stack property. + * Chrome and Gecko use this property. + * @param {Error} ex + * @return {?Object.} Stack trace information. + */ + function computeStackTraceFromStackProp(ex) { + if (typeof ex.stack === 'undefined' || !ex.stack) return; + var chrome = /^\s*at (.*?) ?\(((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i, + gecko = /^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|\[native).*?|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i, + winjs = /^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i, + // Used to additionally parse URL/line/column from eval frames + geckoEval = /(\S+) line (\d+)(?: > eval line \d+)* > eval/i, + chromeEval = /\((\S*)(?::(\d+))(?::(\d+))\)/, + lines = ex.stack.split('\n'), + stack = [], + submatch, + parts, + element, + reference = /^(.*) is undefined$/.exec(ex.message); + + for (var i = 0, j = lines.length; i < j; ++i) { + if (parts = chrome.exec(lines[i])) { + var isNative = parts[2] && parts[2].indexOf('native') === 0; // start of line + + var isEval = parts[2] && parts[2].indexOf('eval') === 0; // start of line + + if (isEval && (submatch = chromeEval.exec(parts[2]))) { + // throw out eval line/column and use top-most line/column number + parts[2] = submatch[1]; // url + + parts[3] = submatch[2]; // line + + parts[4] = submatch[3]; // column + } + + element = { + url: !isNative ? parts[2] : null, + func: parts[1] || UNKNOWN_FUNCTION, + args: isNative ? [parts[2]] : [], + line: parts[3] ? +parts[3] : null, + column: parts[4] ? +parts[4] : null + }; + } else if (parts = winjs.exec(lines[i])) { + element = { + url: parts[2], + func: parts[1] || UNKNOWN_FUNCTION, + args: [], + line: +parts[3], + column: parts[4] ? +parts[4] : null + }; + } else if (parts = gecko.exec(lines[i])) { + var isEval = parts[3] && parts[3].indexOf(' > eval') > -1; + + if (isEval && (submatch = geckoEval.exec(parts[3]))) { + // throw out eval line/column and use top-most line number + parts[3] = submatch[1]; + parts[4] = submatch[2]; + parts[5] = null; // no column when eval + } else if (i === 0 && !parts[5] && typeof ex.columnNumber !== 'undefined') { + // FireFox uses this awesome columnNumber property for its top frame + // Also note, Firefox's column number is 0-based and everything else expects 1-based, + // so adding 1 + // NOTE: this hack doesn't work if top-most frame is eval + stack[0].column = ex.columnNumber + 1; + } + + element = { + url: parts[3], + func: parts[1] || UNKNOWN_FUNCTION, + args: parts[2] ? parts[2].split(',') : [], + line: parts[4] ? +parts[4] : null, + column: parts[5] ? +parts[5] : null + }; + } else { + continue; + } + + if (!element.func && element.line) { + element.func = UNKNOWN_FUNCTION; + } + + stack.push(element); + } + + if (!stack.length) { + return null; + } + + return { + name: ex.name, + message: ex.message, + url: getLocationHref(), + stack: stack + }; + } + /** + * Adds information about the first frame to incomplete stack traces. + * Safari and IE require this to get complete data on the first frame. + * @param {Object.} stackInfo Stack trace information from + * one of the compute* methods. + * @param {string} url The URL of the script that caused an error. + * @param {(number|string)} lineNo The line number of the script that + * caused an error. + * @param {string=} message The error generated by the browser, which + * hopefully contains the name of the object that caused the error. + * @return {boolean} Whether or not the stack information was + * augmented. + */ + + + function augmentStackTraceWithInitialElement(stackInfo, url, lineNo, message) { + var initial = { + url: url, + line: lineNo + }; + + if (initial.url && initial.line) { + stackInfo.incomplete = false; + + if (!initial.func) { + initial.func = UNKNOWN_FUNCTION; + } + + if (stackInfo.stack.length > 0) { + if (stackInfo.stack[0].url === initial.url) { + if (stackInfo.stack[0].line === initial.line) { + return false; // already in stack trace + } else if (!stackInfo.stack[0].line && stackInfo.stack[0].func === initial.func) { + stackInfo.stack[0].line = initial.line; + return false; + } + } + } + + stackInfo.stack.unshift(initial); + stackInfo.partial = true; + return true; + } else { + stackInfo.incomplete = true; + } + + return false; + } + /** + * Computes stack trace information by walking the arguments.caller + * chain at the time the exception occurred. This will cause earlier + * frames to be missed but is the only way to get any stack trace in + * Safari and IE. The top frame is restored by + * {@link augmentStackTraceWithInitialElement}. + * @param {Error} ex + * @return {?Object.} Stack trace information. + */ + + + function computeStackTraceByWalkingCallerChain(ex, depth) { + var functionName = /function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i, + stack = [], + funcs = {}, + recursion = false, + parts, + item; + + for (var curr = computeStackTraceByWalkingCallerChain.caller; curr && !recursion; curr = curr.caller) { + if (curr === computeStackTrace || curr === TraceKit.report) { + // console.log('skipping internal function'); + continue; + } + + item = { + url: null, + func: UNKNOWN_FUNCTION, + line: null, + column: null + }; + + if (curr.name) { + item.func = curr.name; + } else if (parts = functionName.exec(curr.toString())) { + item.func = parts[1]; + } + + if (typeof item.func === 'undefined') { + try { + item.func = parts.input.substring(0, parts.input.indexOf('{')); + } catch (e) {} + } + + if (funcs['' + curr]) { + recursion = true; + } else { + funcs['' + curr] = true; + } + + stack.push(item); + } + + if (depth) { + // console.log('depth is ' + depth); + // console.log('stack is ' + stack.length); + stack.splice(0, depth); + } + + var result = { + name: ex.name, + message: ex.message, + url: getLocationHref(), + stack: stack + }; + augmentStackTraceWithInitialElement(result, ex.sourceURL || ex.fileName, ex.line || ex.lineNumber, ex.message || ex.description); + return result; + } + /** + * Computes a stack trace for an exception. + * @param {Error} ex + * @param {(string|number)=} depth + */ + + + function computeStackTrace(ex, depth) { + var stack = null; + depth = depth == null ? 0 : +depth; + + try { + stack = computeStackTraceFromStackProp(ex); + + if (stack) { + return stack; + } + } catch (e) { + if (TraceKit.debug) { + throw e; + } + } + + try { + stack = computeStackTraceByWalkingCallerChain(ex, depth + 1); + + if (stack) { + return stack; + } + } catch (e) { + if (TraceKit.debug) { + throw e; + } + } + + return { + name: ex.name, + message: ex.message, + url: getLocationHref() + }; + } + + computeStackTrace.augmentStackTraceWithInitialElement = augmentStackTraceWithInitialElement; + computeStackTrace.computeStackTraceFromStackProp = computeStackTraceFromStackProp; + return computeStackTrace; +}(); + +var tracekit = TraceKit; + +var stringify_1 = createCommonjsModule(function (module, exports) { + /* + json-stringify-safe + Like JSON.stringify, but doesn't throw on circular references. + + Originally forked from https://github.com/isaacs/json-stringify-safe + version 5.0.1 on 3/8/2017 and modified to handle Errors serialization + and IE8 compatibility. Tests for this are in test/vendor. + + ISC license: https://github.com/isaacs/json-stringify-safe/blob/master/LICENSE + */ + exports = module.exports = stringify; + exports.getSerialize = serializer; + + function indexOf(haystack, needle) { + for (var i = 0; i < haystack.length; ++i) { + if (haystack[i] === needle) return i; + } + + return -1; + } + + function stringify(obj, replacer, spaces, cycleReplacer) { + return JSON.stringify(obj, serializer(replacer, cycleReplacer), spaces); + } // https://github.com/ftlabs/js-abbreviate/blob/fa709e5f139e7770a71827b1893f22418097fbda/index.js#L95-L106 + + + function stringifyError(value) { + var err = { + // These properties are implemented as magical getters and don't show up in for in + stack: value.stack, + message: value.message, + name: value.name + }; + + for (var i in value) { + if (Object.prototype.hasOwnProperty.call(value, i)) { + err[i] = value[i]; + } + } + + return err; + } + + function serializer(replacer, cycleReplacer) { + var stack = []; + var keys = []; + + if (cycleReplacer == null) { + cycleReplacer = function cycleReplacer(key, value) { + if (stack[0] === value) { + return '[Circular ~]'; + } + + return '[Circular ~.' + keys.slice(0, indexOf(stack, value)).join('.') + ']'; + }; + } + + return function (key, value) { + if (stack.length > 0) { + var thisPos = indexOf(stack, this); + ~thisPos ? stack.splice(thisPos + 1) : stack.push(this); + ~thisPos ? keys.splice(thisPos, Infinity, key) : keys.push(key); + + if (~indexOf(stack, value)) { + value = cycleReplacer.call(this, key, value); + } + } else { + stack.push(value); + } + + return replacer == null ? value instanceof Error ? stringifyError(value) : value : replacer.call(this, key, value); + }; + } +}); +var stringify_2 = stringify_1.getSerialize; + +function RavenConfigError(message) { + this.name = 'RavenConfigError'; + this.message = message; +} + +RavenConfigError.prototype = new Error(); +RavenConfigError.prototype.constructor = RavenConfigError; +var configError = RavenConfigError; + +var wrapMethod = function wrapMethod(console, level, callback) { + var originalConsoleLevel = console[level]; + var originalConsole = console; + + if (!(level in console)) { + return; + } + + var sentryLevel = level === 'warn' ? 'warning' : level; + + console[level] = function () { + var args = [].slice.call(arguments); + var msg = utils.safeJoin(args, ' '); + var data = { + level: sentryLevel, + logger: 'console', + extra: { + arguments: args + } + }; + + if (level === 'assert') { + if (args[0] === false) { + // Default browsers message + msg = 'Assertion failed: ' + (utils.safeJoin(args.slice(1), ' ') || 'console.assert'); + data.extra.arguments = args.slice(1); + callback && callback(msg, data); + } + } else { + callback && callback(msg, data); + } // this fails for some browsers. :( + + + if (originalConsoleLevel) { + // IE9 doesn't allow calling apply on console functions directly + // See: https://stackoverflow.com/questions/5472938/does-ie9-support-console-log-and-is-it-a-real-function#answer-5473193 + Function.prototype.apply.call(originalConsoleLevel, originalConsole, args); + } + }; +}; + +var console$1 = { + wrapMethod: wrapMethod +}; + +/*global XDomainRequest:false */ + +var isError = utils.isError; +var isObject = utils.isObject; +var isErrorEvent = utils.isErrorEvent; +var isUndefined = utils.isUndefined; +var isFunction = utils.isFunction; +var isString = utils.isString; +var isArray = utils.isArray; +var isEmptyObject = utils.isEmptyObject; +var each = utils.each; +var objectMerge = utils.objectMerge; +var truncate = utils.truncate; +var objectFrozen = utils.objectFrozen; +var hasKey = utils.hasKey; +var joinRegExp = utils.joinRegExp; +var urlencode = utils.urlencode; +var uuid4 = utils.uuid4; +var htmlTreeAsString = utils.htmlTreeAsString; +var isSameException = utils.isSameException; +var isSameStacktrace = utils.isSameStacktrace; +var parseUrl = utils.parseUrl; +var fill = utils.fill; +var supportsFetch = utils.supportsFetch; +var wrapConsoleMethod = console$1.wrapMethod; +var dsnKeys = 'source protocol user pass host port path'.split(' '); +var dsnPattern = /^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/; + +function now() { + return +new Date(); +} // This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) + + +var _window$1 = typeof window !== 'undefined' ? window : typeof commonjsGlobal !== 'undefined' ? commonjsGlobal : typeof self !== 'undefined' ? self : {}; + +var _document = _window$1.document; +var _navigator = _window$1.navigator; + +function keepOriginalCallback(original, callback) { + return isFunction(callback) ? function (data) { + return callback(data, original); + } : callback; +} // First, check for JSON support +// If there is no JSON, we no-op the core features of Raven +// since JSON is required to encode the payload + + +function Raven$1() { + this._hasJSON = !!(_typeof(JSON) === 'object' && JSON.stringify); // Raven can run in contexts where there's no document (react-native) + + this._hasDocument = !isUndefined(_document); + this._hasNavigator = !isUndefined(_navigator); + this._lastCapturedException = null; + this._lastData = null; + this._lastEventId = null; + this._globalServer = null; + this._globalKey = null; + this._globalProject = null; + this._globalContext = {}; + this._globalOptions = { + // SENTRY_RELEASE can be injected by https://github.com/getsentry/sentry-webpack-plugin + release: _window$1.SENTRY_RELEASE && _window$1.SENTRY_RELEASE.id, + logger: 'javascript', + ignoreErrors: [], + ignoreUrls: [], + whitelistUrls: [], + includePaths: [], + headers: null, + collectWindowErrors: true, + maxMessageLength: 0, + // By default, truncates URL values to 250 chars + maxUrlLength: 250, + stackTraceLimit: 50, + autoBreadcrumbs: true, + instrument: true, + sampleRate: 1 + }; + this._fetchDefaults = { + method: 'POST', + keepalive: true, + referrerPolicy: 'origin' + }; + this._ignoreOnError = 0; + this._isRavenInstalled = false; + this._originalErrorStackTraceLimit = Error.stackTraceLimit; // capture references to window.console *and* all its methods first + // before the console plugin has a chance to monkey patch + + this._originalConsole = _window$1.console || {}; + this._originalConsoleMethods = {}; + this._plugins = []; + this._startTime = now(); + this._wrappedBuiltIns = []; + this._breadcrumbs = []; + this._lastCapturedEvent = null; + this._keypressTimeout; + this._location = _window$1.location; + this._lastHref = this._location && this._location.href; + + this._resetBackoff(); // eslint-disable-next-line guard-for-in + + + for (var method in this._originalConsole) { + this._originalConsoleMethods[method] = this._originalConsole[method]; + } +} +/* + * The core Raven singleton + * + * @this {Raven} + */ + + +Raven$1.prototype = { + // Hardcode version string so that raven source can be loaded directly via + // webpack (using a build step causes webpack #1617). Grunt verifies that + // this value matches package.json during build. + // See: https://github.com/getsentry/raven-js/issues/465 + VERSION: '3.22.2', + debug: false, + TraceKit: tracekit, + // alias to TraceKit + + /* + * Configure Raven with a DSN and extra options + * + * @param {string} dsn The public Sentry DSN + * @param {object} options Set of global options [optional] + * @return {Raven} + */ + config: function config(dsn, options) { + var self = this; + + if (self._globalServer) { + this._logDebug('error', 'Error: Raven has already been configured'); + + return self; + } + + if (!dsn) return self; + var globalOptions = self._globalOptions; // merge in options + + if (options) { + each(options, function (key, value) { + // tags and extra are special and need to be put into context + if (key === 'tags' || key === 'extra' || key === 'user') { + self._globalContext[key] = value; + } else { + globalOptions[key] = value; + } + }); + } + + self.setDSN(dsn); // "Script error." is hard coded into browsers for errors that it can't read. + // this is the result of a script being pulled in from an external domain and CORS. + + globalOptions.ignoreErrors.push(/^Script error\.?$/); + globalOptions.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/); // join regexp rules into one big rule + + globalOptions.ignoreErrors = joinRegExp(globalOptions.ignoreErrors); + globalOptions.ignoreUrls = globalOptions.ignoreUrls.length ? joinRegExp(globalOptions.ignoreUrls) : false; + globalOptions.whitelistUrls = globalOptions.whitelistUrls.length ? joinRegExp(globalOptions.whitelistUrls) : false; + globalOptions.includePaths = joinRegExp(globalOptions.includePaths); + globalOptions.maxBreadcrumbs = Math.max(0, Math.min(globalOptions.maxBreadcrumbs || 100, 100)); // default and hard limit is 100 + + var autoBreadcrumbDefaults = { + xhr: true, + console: true, + dom: true, + location: true, + sentry: true + }; + var autoBreadcrumbs = globalOptions.autoBreadcrumbs; + + if ({}.toString.call(autoBreadcrumbs) === '[object Object]') { + autoBreadcrumbs = objectMerge(autoBreadcrumbDefaults, autoBreadcrumbs); + } else if (autoBreadcrumbs !== false) { + autoBreadcrumbs = autoBreadcrumbDefaults; + } + + globalOptions.autoBreadcrumbs = autoBreadcrumbs; + var instrumentDefaults = { + tryCatch: true + }; + var instrument = globalOptions.instrument; + + if ({}.toString.call(instrument) === '[object Object]') { + instrument = objectMerge(instrumentDefaults, instrument); + } else if (instrument !== false) { + instrument = instrumentDefaults; + } + + globalOptions.instrument = instrument; + tracekit.collectWindowErrors = !!globalOptions.collectWindowErrors; // return for chaining + + return self; + }, + + /* + * Installs a global window.onerror error handler + * to capture and report uncaught exceptions. + * At this point, install() is required to be called due + * to the way TraceKit is set up. + * + * @return {Raven} + */ + install: function install() { + var self = this; + + if (self.isSetup() && !self._isRavenInstalled) { + tracekit.report.subscribe(function () { + self._handleOnErrorStackInfo.apply(self, arguments); + }); + + self._patchFunctionToString(); + + if (self._globalOptions.instrument && self._globalOptions.instrument.tryCatch) { + self._instrumentTryCatch(); + } + + if (self._globalOptions.autoBreadcrumbs) self._instrumentBreadcrumbs(); // Install all of the plugins + + self._drainPlugins(); + + self._isRavenInstalled = true; + } + + Error.stackTraceLimit = self._globalOptions.stackTraceLimit; + return this; + }, + + /* + * Set the DSN (can be called multiple time unlike config) + * + * @param {string} dsn The public Sentry DSN + */ + setDSN: function setDSN(dsn) { + var self = this, + uri = self._parseDSN(dsn), + lastSlash = uri.path.lastIndexOf('/'), + path = uri.path.substr(1, lastSlash); + + self._dsn = dsn; + self._globalKey = uri.user; + self._globalSecret = uri.pass && uri.pass.substr(1); + self._globalProject = uri.path.substr(lastSlash + 1); + self._globalServer = self._getGlobalServer(uri); + self._globalEndpoint = self._globalServer + '/' + path + 'api/' + self._globalProject + '/store/'; // Reset backoff state since we may be pointing at a + // new project/server + + this._resetBackoff(); + }, + + /* + * Wrap code within a context so Raven can capture errors + * reliably across domains that is executed immediately. + * + * @param {object} options A specific set of options for this context [optional] + * @param {function} func The callback to be immediately executed within the context + * @param {array} args An array of arguments to be called with the callback [optional] + */ + context: function context(options, func, args) { + if (isFunction(options)) { + args = func || []; + func = options; + options = undefined; + } + + return this.wrap(options, func).apply(this, args); + }, + + /* + * Wrap code within a context and returns back a new function to be executed + * + * @param {object} options A specific set of options for this context [optional] + * @param {function} func The function to be wrapped in a new context + * @param {function} func A function to call before the try/catch wrapper [optional, private] + * @return {function} The newly wrapped functions with a context + */ + wrap: function wrap(options, func, _before) { + var self = this; // 1 argument has been passed, and it's not a function + // so just return it + + if (isUndefined(func) && !isFunction(options)) { + return options; + } // options is optional + + + if (isFunction(options)) { + func = options; + options = undefined; + } // At this point, we've passed along 2 arguments, and the second one + // is not a function either, so we'll just return the second argument. + + + if (!isFunction(func)) { + return func; + } // We don't wanna wrap it twice! + + + try { + if (func.__raven__) { + return func; + } // If this has already been wrapped in the past, return that + + + if (func.__raven_wrapper__) { + return func.__raven_wrapper__; + } + } catch (e) { + // Just accessing custom props in some Selenium environments + // can cause a "Permission denied" exception (see raven-js#495). + // Bail on wrapping and return the function as-is (defers to window.onerror). + return func; + } + + function wrapped() { + var args = [], + i = arguments.length, + deep = !options || options && options.deep !== false; + + if (_before && isFunction(_before)) { + _before.apply(this, arguments); + } // Recursively wrap all of a function's arguments that are + // functions themselves. + + + while (i--) { + args[i] = deep ? self.wrap(options, arguments[i]) : arguments[i]; + } + + try { + // Attempt to invoke user-land function + // NOTE: If you are a Sentry user, and you are seeing this stack frame, it + // means Raven caught an error invoking your application code. This is + // expected behavior and NOT indicative of a bug with Raven.js. + return func.apply(this, args); + } catch (e) { + self._ignoreNextOnError(); + + self.captureException(e, options); + throw e; + } + } // copy over properties of the old function + + + for (var property in func) { + if (hasKey(func, property)) { + wrapped[property] = func[property]; + } + } + + wrapped.prototype = func.prototype; + func.__raven_wrapper__ = wrapped; // Signal that this function has been wrapped/filled already + // for both debugging and to prevent it to being wrapped/filled twice + + wrapped.__raven__ = true; + wrapped.__orig__ = func; + return wrapped; + }, + + /* + * Uninstalls the global error handler. + * + * @return {Raven} + */ + uninstall: function uninstall() { + tracekit.report.uninstall(); + + this._unpatchFunctionToString(); + + this._restoreBuiltIns(); + + this._restoreConsole(); + + Error.stackTraceLimit = this._originalErrorStackTraceLimit; + this._isRavenInstalled = false; + return this; + }, + + /* + * Manually capture an exception and send it over to Sentry + * + * @param {error} ex An exception to be logged + * @param {object} options A specific set of options for this error [optional] + * @return {Raven} + */ + captureException: function captureException(ex, options) { + options = objectMerge({ + trimHeadFrames: 0 + }, options ? options : {}); // Cases for sending ex as a message, rather than an exception + + var isNotError = !isError(ex); + var isNotErrorEvent = !isErrorEvent(ex); + var isErrorEventWithoutError = isErrorEvent(ex) && !ex.error; + + if (isNotError && isNotErrorEvent || isErrorEventWithoutError) { + return this.captureMessage(ex, objectMerge(options, { + stacktrace: true, + // if we fall back to captureMessage, default to attempting a new trace + trimHeadFrames: options.trimHeadFrames + 1 + })); + } // Get actual Error from ErrorEvent + + + if (isErrorEvent(ex)) ex = ex.error; // Store the raw exception object for potential debugging and introspection + + this._lastCapturedException = ex; // TraceKit.report will re-raise any exception passed to it, + // which means you have to wrap it in try/catch. Instead, we + // can wrap it here and only re-raise if TraceKit.report + // raises an exception different from the one we asked to + // report on. + + try { + var stack = tracekit.computeStackTrace(ex); + + this._handleStackInfo(stack, options); + } catch (ex1) { + if (ex !== ex1) { + throw ex1; + } + } + + return this; + }, + + /* + * Manually send a message to Sentry + * + * @param {string} msg A plain message to be captured in Sentry + * @param {object} options A specific set of options for this message [optional] + * @return {Raven} + */ + captureMessage: function captureMessage(msg, options) { + // config() automagically converts ignoreErrors from a list to a RegExp so we need to test for an + // early call; we'll error on the side of logging anything called before configuration since it's + // probably something you should see: + if (!!this._globalOptions.ignoreErrors.test && this._globalOptions.ignoreErrors.test(msg)) { + return; + } + + options = options || {}; + var data = objectMerge({ + message: msg + '' // Make sure it's actually a string + + }, options); + var ex; // Generate a "synthetic" stack trace from this point. + // NOTE: If you are a Sentry user, and you are seeing this stack frame, it is NOT indicative + // of a bug with Raven.js. Sentry generates synthetic traces either by configuration, + // or if it catches a thrown object without a "stack" property. + + try { + throw new Error(msg); + } catch (ex1) { + ex = ex1; + } // null exception name so `Error` isn't prefixed to msg + + + ex.name = null; + var stack = tracekit.computeStackTrace(ex); // stack[0] is `throw new Error(msg)` call itself, we are interested in the frame that was just before that, stack[1] + + var initialCall = isArray(stack.stack) && stack.stack[1]; + var fileurl = initialCall && initialCall.url || ''; + + if (!!this._globalOptions.ignoreUrls.test && this._globalOptions.ignoreUrls.test(fileurl)) { + return; + } + + if (!!this._globalOptions.whitelistUrls.test && !this._globalOptions.whitelistUrls.test(fileurl)) { + return; + } + + if (this._globalOptions.stacktrace || options && options.stacktrace) { + options = objectMerge({ + // fingerprint on msg, not stack trace (legacy behavior, could be + // revisited) + fingerprint: msg, + // since we know this is a synthetic trace, the top N-most frames + // MUST be from Raven.js, so mark them as in_app later by setting + // trimHeadFrames + trimHeadFrames: (options.trimHeadFrames || 0) + 1 + }, options); + + var frames = this._prepareFrames(stack, options); + + data.stacktrace = { + // Sentry expects frames oldest to newest + frames: frames.reverse() + }; + } // Fire away! + + + this._send(data); + + return this; + }, + captureBreadcrumb: function captureBreadcrumb(obj) { + var crumb = objectMerge({ + timestamp: now() / 1000 + }, obj); + + if (isFunction(this._globalOptions.breadcrumbCallback)) { + var result = this._globalOptions.breadcrumbCallback(crumb); + + if (isObject(result) && !isEmptyObject(result)) { + crumb = result; + } else if (result === false) { + return this; + } + } + + this._breadcrumbs.push(crumb); + + if (this._breadcrumbs.length > this._globalOptions.maxBreadcrumbs) { + this._breadcrumbs.shift(); + } + + return this; + }, + addPlugin: function addPlugin(plugin + /*arg1, arg2, ... argN*/ + ) { + var pluginArgs = [].slice.call(arguments, 1); + + this._plugins.push([plugin, pluginArgs]); + + if (this._isRavenInstalled) { + this._drainPlugins(); + } + + return this; + }, + + /* + * Set/clear a user to be sent along with the payload. + * + * @param {object} user An object representing user data [optional] + * @return {Raven} + */ + setUserContext: function setUserContext(user) { + // Intentionally do not merge here since that's an unexpected behavior. + this._globalContext.user = user; + return this; + }, + + /* + * Merge extra attributes to be sent along with the payload. + * + * @param {object} extra An object representing extra data [optional] + * @return {Raven} + */ + setExtraContext: function setExtraContext(extra) { + this._mergeContext('extra', extra); + + return this; + }, + + /* + * Merge tags to be sent along with the payload. + * + * @param {object} tags An object representing tags [optional] + * @return {Raven} + */ + setTagsContext: function setTagsContext(tags) { + this._mergeContext('tags', tags); + + return this; + }, + + /* + * Clear all of the context. + * + * @return {Raven} + */ + clearContext: function clearContext() { + this._globalContext = {}; + return this; + }, + + /* + * Get a copy of the current context. This cannot be mutated. + * + * @return {object} copy of context + */ + getContext: function getContext() { + // lol javascript + return JSON.parse(stringify_1(this._globalContext)); + }, + + /* + * Set environment of application + * + * @param {string} environment Typically something like 'production'. + * @return {Raven} + */ + setEnvironment: function setEnvironment(environment) { + this._globalOptions.environment = environment; + return this; + }, + + /* + * Set release version of application + * + * @param {string} release Typically something like a git SHA to identify version + * @return {Raven} + */ + setRelease: function setRelease(release) { + this._globalOptions.release = release; + return this; + }, + + /* + * Set the dataCallback option + * + * @param {function} callback The callback to run which allows the + * data blob to be mutated before sending + * @return {Raven} + */ + setDataCallback: function setDataCallback(callback) { + var original = this._globalOptions.dataCallback; + this._globalOptions.dataCallback = keepOriginalCallback(original, callback); + return this; + }, + + /* + * Set the breadcrumbCallback option + * + * @param {function} callback The callback to run which allows filtering + * or mutating breadcrumbs + * @return {Raven} + */ + setBreadcrumbCallback: function setBreadcrumbCallback(callback) { + var original = this._globalOptions.breadcrumbCallback; + this._globalOptions.breadcrumbCallback = keepOriginalCallback(original, callback); + return this; + }, + + /* + * Set the shouldSendCallback option + * + * @param {function} callback The callback to run which allows + * introspecting the blob before sending + * @return {Raven} + */ + setShouldSendCallback: function setShouldSendCallback(callback) { + var original = this._globalOptions.shouldSendCallback; + this._globalOptions.shouldSendCallback = keepOriginalCallback(original, callback); + return this; + }, + + /** + * Override the default HTTP transport mechanism that transmits data + * to the Sentry server. + * + * @param {function} transport Function invoked instead of the default + * `makeRequest` handler. + * + * @return {Raven} + */ + setTransport: function setTransport(transport) { + this._globalOptions.transport = transport; + return this; + }, + + /* + * Get the latest raw exception that was captured by Raven. + * + * @return {error} + */ + lastException: function lastException() { + return this._lastCapturedException; + }, + + /* + * Get the last event id + * + * @return {string} + */ + lastEventId: function lastEventId() { + return this._lastEventId; + }, + + /* + * Determine if Raven is setup and ready to go. + * + * @return {boolean} + */ + isSetup: function isSetup() { + if (!this._hasJSON) return false; // needs JSON support + + if (!this._globalServer) { + if (!this.ravenNotConfiguredError) { + this.ravenNotConfiguredError = true; + + this._logDebug('error', 'Error: Raven has not been configured.'); + } + + return false; + } + + return true; + }, + afterLoad: function afterLoad() { + // TODO: remove window dependence? + // Attempt to initialize Raven on load + var RavenConfig = _window$1.RavenConfig; + + if (RavenConfig) { + this.config(RavenConfig.dsn, RavenConfig.config).install(); + } + }, + showReportDialog: function showReportDialog(options) { + if (!_document // doesn't work without a document (React native) + ) return; + options = options || {}; + var lastEventId = options.eventId || this.lastEventId(); + + if (!lastEventId) { + throw new configError('Missing eventId'); + } + + var dsn = options.dsn || this._dsn; + + if (!dsn) { + throw new configError('Missing DSN'); + } + + var encode = encodeURIComponent; + var qs = ''; + qs += '?eventId=' + encode(lastEventId); + qs += '&dsn=' + encode(dsn); + var user = options.user || this._globalContext.user; + + if (user) { + if (user.name) qs += '&name=' + encode(user.name); + if (user.email) qs += '&email=' + encode(user.email); + } + + var globalServer = this._getGlobalServer(this._parseDSN(dsn)); + + var script = _document.createElement('script'); + + script.async = true; + script.src = globalServer + '/api/embed/error-page/' + qs; + + (_document.head || _document.body).appendChild(script); + }, + + /**** Private functions ****/ + _ignoreNextOnError: function _ignoreNextOnError() { + var self = this; + this._ignoreOnError += 1; + setTimeout(function () { + // onerror should trigger before setTimeout + self._ignoreOnError -= 1; + }); + }, + _triggerEvent: function _triggerEvent(eventType, options) { + // NOTE: `event` is a native browser thing, so let's avoid conflicting wiht it + var evt, key; + if (!this._hasDocument) return; + options = options || {}; + eventType = 'raven' + eventType.substr(0, 1).toUpperCase() + eventType.substr(1); + + if (_document.createEvent) { + evt = _document.createEvent('HTMLEvents'); + evt.initEvent(eventType, true, true); + } else { + evt = _document.createEventObject(); + evt.eventType = eventType; + } + + for (key in options) { + if (hasKey(options, key)) { + evt[key] = options[key]; + } + } + + if (_document.createEvent) { + // IE9 if standards + _document.dispatchEvent(evt); + } else { + // IE8 regardless of Quirks or Standards + // IE9 if quirks + try { + _document.fireEvent('on' + evt.eventType.toLowerCase(), evt); + } catch (e) {// Do nothing + } + } + }, + + /** + * Wraps addEventListener to capture UI breadcrumbs + * @param evtName the event name (e.g. "click") + * @returns {Function} + * @private + */ + _breadcrumbEventHandler: function _breadcrumbEventHandler(evtName) { + var self = this; + return function (evt) { + // reset keypress timeout; e.g. triggering a 'click' after + // a 'keypress' will reset the keypress debounce so that a new + // set of keypresses can be recorded + self._keypressTimeout = null; // It's possible this handler might trigger multiple times for the same + // event (e.g. event propagation through node ancestors). Ignore if we've + // already captured the event. + + if (self._lastCapturedEvent === evt) return; + self._lastCapturedEvent = evt; // try/catch both: + // - accessing evt.target (see getsentry/raven-js#838, #768) + // - `htmlTreeAsString` because it's complex, and just accessing the DOM incorrectly + // can throw an exception in some circumstances. + + var target; + + try { + target = htmlTreeAsString(evt.target); + } catch (e) { + target = ''; + } + + self.captureBreadcrumb({ + category: 'ui.' + evtName, + // e.g. ui.click, ui.input + message: target + }); + }; + }, + + /** + * Wraps addEventListener to capture keypress UI events + * @returns {Function} + * @private + */ + _keypressEventHandler: function _keypressEventHandler() { + var self = this, + debounceDuration = 1000; // milliseconds + // TODO: if somehow user switches keypress target before + // debounce timeout is triggered, we will only capture + // a single breadcrumb from the FIRST target (acceptable?) + + return function (evt) { + var target; + + try { + target = evt.target; + } catch (e) { + // just accessing event properties can throw an exception in some rare circumstances + // see: https://github.com/getsentry/raven-js/issues/838 + return; + } + + var tagName = target && target.tagName; // only consider keypress events on actual input elements + // this will disregard keypresses targeting body (e.g. tabbing + // through elements, hotkeys, etc) + + if (!tagName || tagName !== 'INPUT' && tagName !== 'TEXTAREA' && !target.isContentEditable) return; // record first keypress in a series, but ignore subsequent + // keypresses until debounce clears + + var timeout = self._keypressTimeout; + + if (!timeout) { + self._breadcrumbEventHandler('input')(evt); + } + + clearTimeout(timeout); + self._keypressTimeout = setTimeout(function () { + self._keypressTimeout = null; + }, debounceDuration); + }; + }, + + /** + * Captures a breadcrumb of type "navigation", normalizing input URLs + * @param to the originating URL + * @param from the target URL + * @private + */ + _captureUrlChange: function _captureUrlChange(from, to) { + var parsedLoc = parseUrl(this._location.href); + var parsedTo = parseUrl(to); + var parsedFrom = parseUrl(from); // because onpopstate only tells you the "new" (to) value of location.href, and + // not the previous (from) value, we need to track the value of the current URL + // state ourselves + + this._lastHref = to; // Use only the path component of the URL if the URL matches the current + // document (almost all the time when using pushState) + + if (parsedLoc.protocol === parsedTo.protocol && parsedLoc.host === parsedTo.host) to = parsedTo.relative; + if (parsedLoc.protocol === parsedFrom.protocol && parsedLoc.host === parsedFrom.host) from = parsedFrom.relative; + this.captureBreadcrumb({ + category: 'navigation', + data: { + to: to, + from: from + } + }); + }, + _patchFunctionToString: function _patchFunctionToString() { + var self = this; + self._originalFunctionToString = Function.prototype.toString; // eslint-disable-next-line no-extend-native + + Function.prototype.toString = function () { + if (typeof this === 'function' && this.__raven__) { + return self._originalFunctionToString.apply(this.__orig__, arguments); + } + + return self._originalFunctionToString.apply(this, arguments); + }; + }, + _unpatchFunctionToString: function _unpatchFunctionToString() { + if (this._originalFunctionToString) { + // eslint-disable-next-line no-extend-native + Function.prototype.toString = this._originalFunctionToString; + } + }, + + /** + * Wrap timer functions and event targets to catch errors and provide + * better metadata. + */ + _instrumentTryCatch: function _instrumentTryCatch() { + var self = this; + var wrappedBuiltIns = self._wrappedBuiltIns; + + function wrapTimeFn(orig) { + return function (fn, t) { + // preserve arity + // Make a copy of the arguments to prevent deoptimization + // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments + var args = new Array(arguments.length); + + for (var i = 0; i < args.length; ++i) { + args[i] = arguments[i]; + } + + var originalCallback = args[0]; + + if (isFunction(originalCallback)) { + args[0] = self.wrap(originalCallback); + } // IE < 9 doesn't support .call/.apply on setInterval/setTimeout, but it + // also supports only two arguments and doesn't care what this is, so we + // can just call the original function directly. + + + if (orig.apply) { + return orig.apply(this, args); + } else { + return orig(args[0], args[1]); + } + }; + } + + var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; + + function wrapEventTarget(global) { + var proto = _window$1[global] && _window$1[global].prototype; + + if (proto && proto.hasOwnProperty && proto.hasOwnProperty('addEventListener')) { + fill(proto, 'addEventListener', function (orig) { + return function (evtName, fn, capture, secure) { + // preserve arity + try { + if (fn && fn.handleEvent) { + fn.handleEvent = self.wrap(fn.handleEvent); + } + } catch (err) {} // can sometimes get 'Permission denied to access property "handle Event' + // More breadcrumb DOM capture ... done here and not in `_instrumentBreadcrumbs` + // so that we don't have more than one wrapper function + + + var before, clickHandler, keypressHandler; + + if (autoBreadcrumbs && autoBreadcrumbs.dom && (global === 'EventTarget' || global === 'Node')) { + // NOTE: generating multiple handlers per addEventListener invocation, should + // revisit and verify we can just use one (almost certainly) + clickHandler = self._breadcrumbEventHandler('click'); + keypressHandler = self._keypressEventHandler(); + + before = function before(evt) { + // need to intercept every DOM event in `before` argument, in case that + // same wrapped method is re-used for different events (e.g. mousemove THEN click) + // see #724 + if (!evt) return; + var eventType; + + try { + eventType = evt.type; + } catch (e) { + // just accessing event properties can throw an exception in some rare circumstances + // see: https://github.com/getsentry/raven-js/issues/838 + return; + } + + if (eventType === 'click') return clickHandler(evt);else if (eventType === 'keypress') return keypressHandler(evt); + }; + } + + return orig.call(this, evtName, self.wrap(fn, undefined, before), capture, secure); + }; + }, wrappedBuiltIns); + fill(proto, 'removeEventListener', function (orig) { + return function (evt, fn, capture, secure) { + try { + fn = fn && (fn.__raven_wrapper__ ? fn.__raven_wrapper__ : fn); + } catch (e) {// ignore, accessing __raven_wrapper__ will throw in some Selenium environments + } + + return orig.call(this, evt, fn, capture, secure); + }; + }, wrappedBuiltIns); + } + } + + fill(_window$1, 'setTimeout', wrapTimeFn, wrappedBuiltIns); + fill(_window$1, 'setInterval', wrapTimeFn, wrappedBuiltIns); + + if (_window$1.requestAnimationFrame) { + fill(_window$1, 'requestAnimationFrame', function (orig) { + return function (cb) { + return orig(self.wrap(cb)); + }; + }, wrappedBuiltIns); + } // event targets borrowed from bugsnag-js: + // https://github.com/bugsnag/bugsnag-js/blob/master/src/bugsnag.js#L666 + + + var eventTargets = ['EventTarget', 'Window', 'Node', 'ApplicationCache', 'AudioTrackList', 'ChannelMergerNode', 'CryptoOperation', 'EventSource', 'FileReader', 'HTMLUnknownElement', 'IDBDatabase', 'IDBRequest', 'IDBTransaction', 'KeyOperation', 'MediaController', 'MessagePort', 'ModalWindow', 'Notification', 'SVGElementInstance', 'Screen', 'TextTrack', 'TextTrackCue', 'TextTrackList', 'WebSocket', 'WebSocketWorker', 'Worker', 'XMLHttpRequest', 'XMLHttpRequestEventTarget', 'XMLHttpRequestUpload']; + + for (var i = 0; i < eventTargets.length; i++) { + wrapEventTarget(eventTargets[i]); + } + }, + + /** + * Instrument browser built-ins w/ breadcrumb capturing + * - XMLHttpRequests + * - DOM interactions (click/typing) + * - window.location changes + * - console + * + * Can be disabled or individually configured via the `autoBreadcrumbs` config option + */ + _instrumentBreadcrumbs: function _instrumentBreadcrumbs() { + var self = this; + var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; + var wrappedBuiltIns = self._wrappedBuiltIns; + + function wrapProp(prop, xhr) { + if (prop in xhr && isFunction(xhr[prop])) { + fill(xhr, prop, function (orig) { + return self.wrap(orig); + }); // intentionally don't track filled methods on XHR instances + } + } + + if (autoBreadcrumbs.xhr && 'XMLHttpRequest' in _window$1) { + var xhrproto = XMLHttpRequest.prototype; + fill(xhrproto, 'open', function (origOpen) { + return function (method, url) { + // preserve arity + // if Sentry key appears in URL, don't capture + if (isString(url) && url.indexOf(self._globalKey) === -1) { + this.__raven_xhr = { + method: method, + url: url, + status_code: null + }; + } + + return origOpen.apply(this, arguments); + }; + }, wrappedBuiltIns); + fill(xhrproto, 'send', function (origSend) { + return function () { + // preserve arity + var xhr = this; + + function onreadystatechangeHandler() { + if (xhr.__raven_xhr && xhr.readyState === 4) { + try { + // touching statusCode in some platforms throws + // an exception + xhr.__raven_xhr.status_code = xhr.status; + } catch (e) { + /* do nothing */ + } + + self.captureBreadcrumb({ + type: 'http', + category: 'xhr', + data: xhr.__raven_xhr + }); + } + } + + var props = ['onload', 'onerror', 'onprogress']; + + for (var j = 0; j < props.length; j++) { + wrapProp(props[j], xhr); + } + + if ('onreadystatechange' in xhr && isFunction(xhr.onreadystatechange)) { + fill(xhr, 'onreadystatechange', function (orig) { + return self.wrap(orig, undefined, onreadystatechangeHandler); + } + /* intentionally don't track this instrumentation */ + ); + } else { + // if onreadystatechange wasn't actually set by the page on this xhr, we + // are free to set our own and capture the breadcrumb + xhr.onreadystatechange = onreadystatechangeHandler; + } + + return origSend.apply(this, arguments); + }; + }, wrappedBuiltIns); + } + + if (autoBreadcrumbs.xhr && supportsFetch()) { + fill(_window$1, 'fetch', function (origFetch) { + return function () { + // preserve arity + // Make a copy of the arguments to prevent deoptimization + // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments + var args = new Array(arguments.length); + + for (var i = 0; i < args.length; ++i) { + args[i] = arguments[i]; + } + + var fetchInput = args[0]; + var method = 'GET'; + var url; + + if (typeof fetchInput === 'string') { + url = fetchInput; + } else if ('Request' in _window$1 && fetchInput instanceof _window$1.Request) { + url = fetchInput.url; + + if (fetchInput.method) { + method = fetchInput.method; + } + } else { + url = '' + fetchInput; + } // if Sentry key appears in URL, don't capture, as it's our own request + + + if (url.indexOf(self._globalKey) !== -1) { + return origFetch.apply(this, args); + } + + if (args[1] && args[1].method) { + method = args[1].method; + } + + var fetchData = { + method: method, + url: url, + status_code: null + }; + return origFetch.apply(this, args).then(function (response) { + fetchData.status_code = response.status; + self.captureBreadcrumb({ + type: 'http', + category: 'fetch', + data: fetchData + }); + return response; + }); + }; + }, wrappedBuiltIns); + } // Capture breadcrumbs from any click that is unhandled / bubbled up all the way + // to the document. Do this before we instrument addEventListener. + + + if (autoBreadcrumbs.dom && this._hasDocument) { + if (_document.addEventListener) { + _document.addEventListener('click', self._breadcrumbEventHandler('click'), false); + + _document.addEventListener('keypress', self._keypressEventHandler(), false); + } else { + // IE8 Compatibility + _document.attachEvent('onclick', self._breadcrumbEventHandler('click')); + + _document.attachEvent('onkeypress', self._keypressEventHandler()); + } + } // record navigation (URL) changes + // NOTE: in Chrome App environment, touching history.pushState, *even inside + // a try/catch block*, will cause Chrome to output an error to console.error + // borrowed from: https://github.com/angular/angular.js/pull/13945/files + + + var chrome = _window$1.chrome; + var isChromePackagedApp = chrome && chrome.app && chrome.app.runtime; + var hasPushAndReplaceState = !isChromePackagedApp && _window$1.history && history.pushState && history.replaceState; + + if (autoBreadcrumbs.location && hasPushAndReplaceState) { + // TODO: remove onpopstate handler on uninstall() + var oldOnPopState = _window$1.onpopstate; + + _window$1.onpopstate = function () { + var currentHref = self._location.href; + + self._captureUrlChange(self._lastHref, currentHref); + + if (oldOnPopState) { + return oldOnPopState.apply(this, arguments); + } + }; + + var historyReplacementFunction = function historyReplacementFunction(origHistFunction) { + // note history.pushState.length is 0; intentionally not declaring + // params to preserve 0 arity + return function () + /* state, title, url */ + { + var url = arguments.length > 2 ? arguments[2] : undefined; // url argument is optional + + if (url) { + // coerce to string (this is what pushState does) + self._captureUrlChange(self._lastHref, url + ''); + } + + return origHistFunction.apply(this, arguments); + }; + }; + + fill(history, 'pushState', historyReplacementFunction, wrappedBuiltIns); + fill(history, 'replaceState', historyReplacementFunction, wrappedBuiltIns); + } + + if (autoBreadcrumbs.console && 'console' in _window$1 && console.log) { + // console + var consoleMethodCallback = function consoleMethodCallback(msg, data) { + self.captureBreadcrumb({ + message: msg, + level: data.level, + category: 'console' + }); + }; + + each(['debug', 'info', 'warn', 'error', 'log'], function (_, level) { + wrapConsoleMethod(console, level, consoleMethodCallback); + }); + } + }, + _restoreBuiltIns: function _restoreBuiltIns() { + // restore any wrapped builtins + var builtin; + + while (this._wrappedBuiltIns.length) { + builtin = this._wrappedBuiltIns.shift(); + var obj = builtin[0], + name = builtin[1], + orig = builtin[2]; + obj[name] = orig; + } + }, + _restoreConsole: function _restoreConsole() { + // eslint-disable-next-line guard-for-in + for (var method in this._originalConsoleMethods) { + this._originalConsole[method] = this._originalConsoleMethods[method]; + } + }, + _drainPlugins: function _drainPlugins() { + var self = this; // FIX ME TODO + + each(this._plugins, function (_, plugin) { + var installer = plugin[0]; + var args = plugin[1]; + installer.apply(self, [self].concat(args)); + }); + }, + _parseDSN: function _parseDSN(str) { + var m = dsnPattern.exec(str), + dsn = {}, + i = 7; + + try { + while (i--) { + dsn[dsnKeys[i]] = m[i] || ''; + } + } catch (e) { + throw new configError('Invalid DSN: ' + str); + } + + if (dsn.pass && !this._globalOptions.allowSecretKey) { + throw new configError('Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key'); + } + + return dsn; + }, + _getGlobalServer: function _getGlobalServer(uri) { + // assemble the endpoint from the uri pieces + var globalServer = '//' + uri.host + (uri.port ? ':' + uri.port : ''); + + if (uri.protocol) { + globalServer = uri.protocol + ':' + globalServer; + } + + return globalServer; + }, + _handleOnErrorStackInfo: function _handleOnErrorStackInfo() { + // if we are intentionally ignoring errors via onerror, bail out + if (!this._ignoreOnError) { + this._handleStackInfo.apply(this, arguments); + } + }, + _handleStackInfo: function _handleStackInfo(stackInfo, options) { + var frames = this._prepareFrames(stackInfo, options); + + this._triggerEvent('handle', { + stackInfo: stackInfo, + options: options + }); + + this._processException(stackInfo.name, stackInfo.message, stackInfo.url, stackInfo.lineno, frames, options); + }, + _prepareFrames: function _prepareFrames(stackInfo, options) { + var self = this; + var frames = []; + + if (stackInfo.stack && stackInfo.stack.length) { + each(stackInfo.stack, function (i, stack) { + var frame = self._normalizeFrame(stack, stackInfo.url); + + if (frame) { + frames.push(frame); + } + }); // e.g. frames captured via captureMessage throw + + if (options && options.trimHeadFrames) { + for (var j = 0; j < options.trimHeadFrames && j < frames.length; j++) { + frames[j].in_app = false; + } + } + } + + frames = frames.slice(0, this._globalOptions.stackTraceLimit); + return frames; + }, + _normalizeFrame: function _normalizeFrame(frame, stackInfoUrl) { + // normalize the frames data + var normalized = { + filename: frame.url, + lineno: frame.line, + colno: frame.column, + function: frame.func || '?' + }; // Case when we don't have any information about the error + // E.g. throwing a string or raw object, instead of an `Error` in Firefox + // Generating synthetic error doesn't add any value here + // + // We should probably somehow let a user know that they should fix their code + + if (!frame.url) { + normalized.filename = stackInfoUrl; // fallback to whole stacks url from onerror handler + } + + normalized.in_app = !( // determine if an exception came from outside of our app + // first we check the global includePaths list. + !!this._globalOptions.includePaths.test && !this._globalOptions.includePaths.test(normalized.filename) || // Now we check for fun, if the function name is Raven or TraceKit + /(Raven|TraceKit)\./.test(normalized['function']) || // finally, we do a last ditch effort and check for raven.min.js + /raven\.(min\.)?js$/.test(normalized.filename)); + return normalized; + }, + _processException: function _processException(type, message, fileurl, lineno, frames, options) { + var prefixedMessage = (type ? type + ': ' : '') + (message || ''); + + if (!!this._globalOptions.ignoreErrors.test && (this._globalOptions.ignoreErrors.test(message) || this._globalOptions.ignoreErrors.test(prefixedMessage))) { + return; + } + + var stacktrace; + + if (frames && frames.length) { + fileurl = frames[0].filename || fileurl; // Sentry expects frames oldest to newest + // and JS sends them as newest to oldest + + frames.reverse(); + stacktrace = { + frames: frames + }; + } else if (fileurl) { + stacktrace = { + frames: [{ + filename: fileurl, + lineno: lineno, + in_app: true + }] + }; + } + + if (!!this._globalOptions.ignoreUrls.test && this._globalOptions.ignoreUrls.test(fileurl)) { + return; + } + + if (!!this._globalOptions.whitelistUrls.test && !this._globalOptions.whitelistUrls.test(fileurl)) { + return; + } + + var data = objectMerge({ + // sentry.interfaces.Exception + exception: { + values: [{ + type: type, + value: message, + stacktrace: stacktrace + }] + }, + culprit: fileurl + }, options); // Fire away! + + this._send(data); + }, + _trimPacket: function _trimPacket(data) { + // For now, we only want to truncate the two different messages + // but this could/should be expanded to just trim everything + var max = this._globalOptions.maxMessageLength; + + if (data.message) { + data.message = truncate(data.message, max); + } + + if (data.exception) { + var exception = data.exception.values[0]; + exception.value = truncate(exception.value, max); + } + + var request = data.request; + + if (request) { + if (request.url) { + request.url = truncate(request.url, this._globalOptions.maxUrlLength); + } + + if (request.Referer) { + request.Referer = truncate(request.Referer, this._globalOptions.maxUrlLength); + } + } + + if (data.breadcrumbs && data.breadcrumbs.values) this._trimBreadcrumbs(data.breadcrumbs); + return data; + }, + + /** + * Truncate breadcrumb values (right now just URLs) + */ + _trimBreadcrumbs: function _trimBreadcrumbs(breadcrumbs) { + // known breadcrumb properties with urls + // TODO: also consider arbitrary prop values that start with (https?)?:// + var urlProps = ['to', 'from', 'url'], + urlProp, + crumb, + data; + + for (var i = 0; i < breadcrumbs.values.length; ++i) { + crumb = breadcrumbs.values[i]; + if (!crumb.hasOwnProperty('data') || !isObject(crumb.data) || objectFrozen(crumb.data)) continue; + data = objectMerge({}, crumb.data); + + for (var j = 0; j < urlProps.length; ++j) { + urlProp = urlProps[j]; + + if (data.hasOwnProperty(urlProp) && data[urlProp]) { + data[urlProp] = truncate(data[urlProp], this._globalOptions.maxUrlLength); + } + } + + breadcrumbs.values[i].data = data; + } + }, + _getHttpData: function _getHttpData() { + if (!this._hasNavigator && !this._hasDocument) return; + var httpData = {}; + + if (this._hasNavigator && _navigator.userAgent) { + httpData.headers = { + 'User-Agent': navigator.userAgent + }; + } // Check in `window` instead of `document`, as we may be in ServiceWorker environment + + + if (_window$1.location && _window$1.location.href) { + httpData.url = _window$1.location.href; + } + + if (this._hasDocument && _document.referrer) { + if (!httpData.headers) httpData.headers = {}; + httpData.headers.Referer = _document.referrer; + } + + return httpData; + }, + _resetBackoff: function _resetBackoff() { + this._backoffDuration = 0; + this._backoffStart = null; + }, + _shouldBackoff: function _shouldBackoff() { + return this._backoffDuration && now() - this._backoffStart < this._backoffDuration; + }, + + /** + * Returns true if the in-process data payload matches the signature + * of the previously-sent data + * + * NOTE: This has to be done at this level because TraceKit can generate + * data from window.onerror WITHOUT an exception object (IE8, IE9, + * other old browsers). This can take the form of an "exception" + * data object with a single frame (derived from the onerror args). + */ + _isRepeatData: function _isRepeatData(current) { + var last = this._lastData; + if (!last || current.message !== last.message || // defined for captureMessage + current.culprit !== last.culprit // defined for captureException/onerror + ) return false; // Stacktrace interface (i.e. from captureMessage) + + if (current.stacktrace || last.stacktrace) { + return isSameStacktrace(current.stacktrace, last.stacktrace); + } else if (current.exception || last.exception) { + // Exception interface (i.e. from captureException/onerror) + return isSameException(current.exception, last.exception); + } + + return true; + }, + _setBackoffState: function _setBackoffState(request) { + // If we are already in a backoff state, don't change anything + if (this._shouldBackoff()) { + return; + } + + var status = request.status; // 400 - project_id doesn't exist or some other fatal + // 401 - invalid/revoked dsn + // 429 - too many requests + + if (!(status === 400 || status === 401 || status === 429)) return; + var retry; + + try { + // If Retry-After is not in Access-Control-Expose-Headers, most + // browsers will throw an exception trying to access it + if (supportsFetch()) { + retry = request.headers.get('Retry-After'); + } else { + retry = request.getResponseHeader('Retry-After'); + } // Retry-After is returned in seconds + + + retry = parseInt(retry, 10) * 1000; + } catch (e) { + /* eslint no-empty:0 */ + } + + this._backoffDuration = retry ? // If Sentry server returned a Retry-After value, use it + retry : // Otherwise, double the last backoff duration (starts at 1 sec) + this._backoffDuration * 2 || 1000; + this._backoffStart = now(); + }, + _send: function _send(data) { + var globalOptions = this._globalOptions; + + var baseData = { + project: this._globalProject, + logger: globalOptions.logger, + platform: 'javascript' + }, + httpData = this._getHttpData(); + + if (httpData) { + baseData.request = httpData; + } // HACK: delete `trimHeadFrames` to prevent from appearing in outbound payload + + + if (data.trimHeadFrames) delete data.trimHeadFrames; + data = objectMerge(baseData, data); // Merge in the tags and extra separately since objectMerge doesn't handle a deep merge + + data.tags = objectMerge(objectMerge({}, this._globalContext.tags), data.tags); + data.extra = objectMerge(objectMerge({}, this._globalContext.extra), data.extra); // Send along our own collected metadata with extra + + data.extra['session:duration'] = now() - this._startTime; + + if (this._breadcrumbs && this._breadcrumbs.length > 0) { + // intentionally make shallow copy so that additions + // to breadcrumbs aren't accidentally sent in this request + data.breadcrumbs = { + values: [].slice.call(this._breadcrumbs, 0) + }; + } + + if (this._globalContext.user) { + // sentry.interfaces.User + data.user = this._globalContext.user; + } // Include the environment if it's defined in globalOptions + + + if (globalOptions.environment) data.environment = globalOptions.environment; // Include the release if it's defined in globalOptions + + if (globalOptions.release) data.release = globalOptions.release; // Include server_name if it's defined in globalOptions + + if (globalOptions.serverName) data.server_name = globalOptions.serverName; // Cleanup empty properties before sending them to the server + + Object.keys(data).forEach(function (key) { + if (data[key] == null || data[key] === '' || isEmptyObject(data[key])) { + delete data[key]; + } + }); + + if (isFunction(globalOptions.dataCallback)) { + data = globalOptions.dataCallback(data) || data; + } // Why?????????? + + + if (!data || isEmptyObject(data)) { + return; + } // Check if the request should be filtered or not + + + if (isFunction(globalOptions.shouldSendCallback) && !globalOptions.shouldSendCallback(data)) { + return; + } // Backoff state: Sentry server previously responded w/ an error (e.g. 429 - too many requests), + // so drop requests until "cool-off" period has elapsed. + + + if (this._shouldBackoff()) { + this._logDebug('warn', 'Raven dropped error due to backoff: ', data); + + return; + } + + if (typeof globalOptions.sampleRate === 'number') { + if (Math.random() < globalOptions.sampleRate) { + this._sendProcessedPayload(data); + } + } else { + this._sendProcessedPayload(data); + } + }, + _getUuid: function _getUuid() { + return uuid4(); + }, + _sendProcessedPayload: function _sendProcessedPayload(data, callback) { + var self = this; + var globalOptions = this._globalOptions; + if (!this.isSetup()) return; // Try and clean up the packet before sending by truncating long values + + data = this._trimPacket(data); // ideally duplicate error testing should occur *before* dataCallback/shouldSendCallback, + // but this would require copying an un-truncated copy of the data packet, which can be + // arbitrarily deep (extra_data) -- could be worthwhile? will revisit + + if (!this._globalOptions.allowDuplicates && this._isRepeatData(data)) { + this._logDebug('warn', 'Raven dropped repeat event: ', data); + + return; + } // Send along an event_id if not explicitly passed. + // This event_id can be used to reference the error within Sentry itself. + // Set lastEventId after we know the error should actually be sent + + + this._lastEventId = data.event_id || (data.event_id = this._getUuid()); // Store outbound payload after trim + + this._lastData = data; + + this._logDebug('debug', 'Raven about to send:', data); + + var auth = { + sentry_version: '7', + sentry_client: 'raven-js/' + this.VERSION, + sentry_key: this._globalKey + }; + + if (this._globalSecret) { + auth.sentry_secret = this._globalSecret; + } + + var exception = data.exception && data.exception.values[0]; // only capture 'sentry' breadcrumb is autoBreadcrumbs is truthy + + if (this._globalOptions.autoBreadcrumbs && this._globalOptions.autoBreadcrumbs.sentry) { + this.captureBreadcrumb({ + category: 'sentry', + message: exception ? (exception.type ? exception.type + ': ' : '') + exception.value : data.message, + event_id: data.event_id, + level: data.level || 'error' // presume error unless specified + + }); + } + + var url = this._globalEndpoint; + + (globalOptions.transport || this._makeRequest).call(this, { + url: url, + auth: auth, + data: data, + options: globalOptions, + onSuccess: function success() { + self._resetBackoff(); + + self._triggerEvent('success', { + data: data, + src: url + }); + + callback && callback(); + }, + onError: function failure(error) { + self._logDebug('error', 'Raven transport failed to send: ', error); + + if (error.request) { + self._setBackoffState(error.request); + } + + self._triggerEvent('failure', { + data: data, + src: url + }); + + error = error || new Error('Raven send failed (no additional details provided)'); + callback && callback(error); + } + }); + }, + _makeRequest: function _makeRequest(opts) { + // Auth is intentionally sent as part of query string (NOT as custom HTTP header) to avoid preflight CORS requests + var url = opts.url + '?' + urlencode(opts.auth); + var evaluatedHeaders = null; + var evaluatedFetchParameters = {}; + + if (opts.options.headers) { + evaluatedHeaders = this._evaluateHash(opts.options.headers); + } + + if (opts.options.fetchParameters) { + evaluatedFetchParameters = this._evaluateHash(opts.options.fetchParameters); + } + + if (supportsFetch()) { + evaluatedFetchParameters.body = stringify_1(opts.data); + var defaultFetchOptions = objectMerge({}, this._fetchDefaults); + var fetchOptions = objectMerge(defaultFetchOptions, evaluatedFetchParameters); + + if (evaluatedHeaders) { + fetchOptions.headers = evaluatedHeaders; + } + + return _window$1.fetch(url, fetchOptions).then(function (response) { + if (response.ok) { + opts.onSuccess && opts.onSuccess(); + } else { + var error = new Error('Sentry error code: ' + response.status); // It's called request only to keep compatibility with XHR interface + // and not add more redundant checks in setBackoffState method + + error.request = response; + opts.onError && opts.onError(error); + } + })['catch'](function () { + opts.onError && opts.onError(new Error('Sentry error code: network unavailable')); + }); + } + + var request = _window$1.XMLHttpRequest && new _window$1.XMLHttpRequest(); + if (!request) return; // if browser doesn't support CORS (e.g. IE7), we are out of luck + + var hasCORS = 'withCredentials' in request || typeof XDomainRequest !== 'undefined'; + if (!hasCORS) return; + + if ('withCredentials' in request) { + request.onreadystatechange = function () { + if (request.readyState !== 4) { + return; + } else if (request.status === 200) { + opts.onSuccess && opts.onSuccess(); + } else if (opts.onError) { + var err = new Error('Sentry error code: ' + request.status); + err.request = request; + opts.onError(err); + } + }; + } else { + request = new XDomainRequest(); // xdomainrequest cannot go http -> https (or vice versa), + // so always use protocol relative + + url = url.replace(/^https?:/, ''); // onreadystatechange not supported by XDomainRequest + + if (opts.onSuccess) { + request.onload = opts.onSuccess; + } + + if (opts.onError) { + request.onerror = function () { + var err = new Error('Sentry error code: XDomainRequest'); + err.request = request; + opts.onError(err); + }; + } + } + + request.open('POST', url); + + if (evaluatedHeaders) { + each(evaluatedHeaders, function (key, value) { + request.setRequestHeader(key, value); + }); + } + + request.send(stringify_1(opts.data)); + }, + _evaluateHash: function _evaluateHash(hash) { + var evaluated = {}; + + for (var key in hash) { + if (hash.hasOwnProperty(key)) { + var value = hash[key]; + evaluated[key] = typeof value === 'function' ? value() : value; + } + } + + return evaluated; + }, + _logDebug: function _logDebug(level) { + if (this._originalConsoleMethods[level] && this.debug) { + // In IE<10 console methods do not have their own 'apply' method + Function.prototype.apply.call(this._originalConsoleMethods[level], this._originalConsole, [].slice.call(arguments, 1)); + } + }, + _mergeContext: function _mergeContext(key, context) { + if (isUndefined(context)) { + delete this._globalContext[key]; + } else { + this._globalContext[key] = objectMerge(this._globalContext[key] || {}, context); + } + } +}; // Deprecations + +Raven$1.prototype.setUser = Raven$1.prototype.setUserContext; +Raven$1.prototype.setReleaseContext = Raven$1.prototype.setRelease; +var raven = Raven$1; + +/** + * Enforces a single instance of the Raven client, and the + * main entry point for Raven. If you are a consumer of the + * Raven library, you SHOULD load this file (vs raven.js). + **/ +// This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) + +var _window = typeof window !== 'undefined' ? window : typeof commonjsGlobal !== 'undefined' ? commonjsGlobal : typeof self !== 'undefined' ? self : {}; + +var _Raven = _window.Raven; +var Raven = new raven(); +/* + * Allow multiple versions of Raven to be installed. + * Strip Raven from the global context and returns the instance. + * + * @return {Raven} + */ + +Raven.noConflict = function () { + _window.Raven = _Raven; + return Raven; +}; + +Raven.afterLoad(); +var singleton = Raven; + +/** + * Ember.js plugin + * + * Patches event handler callbacks and ajax callbacks. + */ +function emberPlugin(Raven, Ember) { + Ember = Ember || window.Ember; // quit if Ember isn't on the page + + if (!Ember) return; + var _oldOnError = Ember.onerror; + + Ember.onerror = function EmberOnError(error) { + Raven.captureException(error); + + if (typeof _oldOnError === 'function') { + _oldOnError.call(this, error); + } + }; + + Ember.RSVP.on('error', function (reason) { + if (reason instanceof Error) { + Raven.captureException(reason, { + extra: { + context: 'Unhandled Promise error detected' + } + }); + } else { + Raven.captureMessage('Unhandled Promise error detected', { + extra: { + reason: reason + } + }); + } + }); +} + +var ember = emberPlugin; + +/*global define*/ + +/** + * require.js plugin + * + * Automatically wrap define/require callbacks. (Experimental) + */ + +function requirePlugin(Raven) { + if (typeof undefined === 'function' && undefined.amd) { + window.define = Raven.wrap({ + deep: false + }, undefined); + window.require = Raven.wrap({ + deep: false + }, commonjsRequire); + } +} + +var require_1 = requirePlugin; + +/* This file was generated by './scripts/generate-plugin-combinations.js'! */ + +singleton.addPlugin(ember).addPlugin(require_1); +var ember_require = {}; + +return ember_require; + +}))); diff --git a/dist/ember,require/raven.min.js b/dist/ember,require/raven.min.js new file mode 100644 index 000000000000..df697ad84ed4 --- /dev/null +++ b/dist/ember,require/raven.min.js @@ -0,0 +1,3 @@ +/*! Raven.js 3.22.2 (1b6187b) | github.com/getsentry/raven-js */ +!function(a,b){"object"==typeof exports&&"undefined"!=typeof module?module.exports=b():"function"==typeof define&&define.amd?define(b):a.Raven=b()}(this,function(){"use strict";function a(a,b){return b={exports:{}},a(b,b.exports),b.exports}function b(a){return(b="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(a){return typeof a}:function(a){return a&&"function"==typeof Symbol&&a.constructor===Symbol&&a!==Symbol.prototype?"symbol":typeof a})(a)}function c(a){return"object"===b(a)&&null!==a}function d(a){switch({}.toString.call(a)){case"[object Error]":return!0;case"[object Exception]":return!0;case"[object DOMException]":return!0;default:return a instanceof Error}}function e(a){return l()&&"[object ErrorEvent]"==={}.toString.call(a)}function f(a){return void 0===a}function g(a){return"function"==typeof a}function h(a){return"[object Object]"===Object.prototype.toString.call(a)}function i(a){return"[object String]"===Object.prototype.toString.call(a)}function j(a){return"[object Array]"===Object.prototype.toString.call(a)}function k(a){if(!h(a))return!1;for(var b in a)if(a.hasOwnProperty(b))return!1;return!0}function l(){try{return new ErrorEvent(""),!0}catch(a){return!1}}function m(){if(!("fetch"in O))return!1;try{return new Headers,new Request(""),new Response,!0}catch(a){return!1}}function n(a){function b(b,c){var d=a(b)||b;return c?c(d)||d:d}return b}function o(a,b){var c,d;if(f(a.length))for(c in a)s(a,c)&&b.call(null,c,a[c]);else if(d=a.length)for(c=0;c ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function y(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&i(b))for(c=b.split(/\s+/),f=0;f=0;--b)l[b]===a&&l.splice(b,1)}function c(){g(),l=[]}function d(a,b){var c=null;if(!b||Q.collectWindowErrors){for(var d in l)if(l.hasOwnProperty(d))try{l[d].apply(null,[a].concat(S.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function e(a,b,c,e,f){var g=null,i=P.isErrorEvent(f)?f.error:f,k=P.isErrorEvent(a)?a.message:a;if(o)Q.computeStackTrace.augmentStackTraceWithInitialElement(o,b,c,k),h();else if(i&&P.isError(i))g=Q.computeStackTrace(i),d(g,!0);else{var l,m={url:b,line:c,column:e},n=void 0;if("[object String]"==={}.toString.call(k)){var l=k.match(U);l&&(n=l[1],k=l[2])}m.func=T,g={name:n,message:k,url:F(),stack:[m]},d(g,!0)}return!!j&&j.apply(this,arguments)}function f(){k||(j=R.onerror,R.onerror=e,k=!0)}function g(){k&&(R.onerror=j,k=!1,j=void 0)}function h(){var a=o,b=m;m=null,o=null,n=null,d.apply(null,[a,!1].concat(b))}function i(a,b){var c=S.call(arguments,1);if(o){if(n===a)return;h()}var d=Q.computeStackTrace(a);if(o=d,n=a,m=c,setTimeout(function(){n===a&&h()},d.incomplete?2e3:0),b!==!1)throw a}var j,k,l=[],m=null,n=null,o=null;return i.subscribe=a,i.unsubscribe=b,i.uninstall=c,i}(),Q.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,d,e=/^\s*at (.*?) ?\(((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,f=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|\[native).*?|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,g=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,h=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,i=/\((\S*)(?::(\d+))(?::(\d+))\)/,j=a.stack.split("\n"),k=[],l=(/^(.*) is undefined$/.exec(a.message),0),m=j.length;l eval")>-1;o&&(b=h.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==l||c[5]||"undefined"==typeof a.columnNumber||(k[0].column=a.columnNumber+1),d={url:c[3],func:c[1]||T,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}!d.func&&d.line&&(d.func=T),k.push(d)}return k.length?{name:a.name,message:a.message,url:F(),stack:k}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=T),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,e){for(var f,g,h=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,i=[],j={},k=!1,l=c.caller;l&&!k;l=l.caller)if(l!==d&&l!==Q.report){if(g={url:null,func:T,line:null,column:null},l.name?g.func=l.name:(f=h.exec(l.toString()))&&(g.func=f[1]),"undefined"==typeof g.func)try{g.func=f.input.substring(0,f.input.indexOf("{"))}catch(m){}j[""+l]?k=!0:j[""+l]=!0,i.push(g)}e&&i.splice(0,e);var n={name:a.name,message:a.message,url:F(),stack:i};return b(n,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),n}function d(b,d){var e=null;d=null==d?0:+d;try{if(e=a(b))return e}catch(f){if(Q.debug)throw f}try{if(e=c(b,d+1))return e}catch(f){if(Q.debug)throw f}return{name:b.name,message:b.message,url:F()}}return d.augmentStackTraceWithInitialElement=b,d.computeStackTraceFromStackProp=a,d}();var V=Q,W=a(function(a,b){function c(a,b){for(var c=0;c0){var i=c(d,this);~i?d.splice(i+1):d.push(this),~i?f.splice(i,1/0,g):f.push(g),~c(d,h)&&(h=b.call(this,g,h))}else d.push(h);return null==a?h instanceof Error?e(h):h:a.call(this,g,h)}}b=a.exports=d,b.getSerialize=f});G.prototype=new Error,G.prototype.constructor=G;var X=G,Y=function(a,b,c){var d=a[b],e=a;if(b in a){var f="warn"===b?"warning":b;a[b]=function(){var a=[].slice.call(arguments),g=P.safeJoin(a," "),h={level:f,logger:"console",extra:{arguments:a}};"assert"===b?a[0]===!1&&(g="Assertion failed: "+(P.safeJoin(a.slice(1)," ")||"console.assert"),h.extra.arguments=a.slice(1),c&&c(g,h)):c&&c(g,h),d&&Function.prototype.apply.call(d,e,a)}}},Z={wrapMethod:Y},$=P.isError,_=P.isObject,aa=P.isErrorEvent,ba=P.isUndefined,ca=P.isFunction,da=P.isString,ea=P.isArray,fa=P.isEmptyObject,ga=P.each,ha=P.objectMerge,ia=P.truncate,ja=P.objectFrozen,ka=P.hasKey,la=P.joinRegExp,ma=P.urlencode,na=P.uuid4,oa=P.htmlTreeAsString,pa=P.isSameException,qa=P.isSameStacktrace,ra=P.parseUrl,sa=P.fill,ta=P.supportsFetch,ua=Z.wrapMethod,va="source protocol user pass host port path".split(" "),wa=/^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/,xa="undefined"!=typeof window?window:"undefined"!=typeof M?M:"undefined"!=typeof self?self:{},ya=xa.document,za=xa.navigator;J.prototype={VERSION:"3.22.2",debug:!1,TraceKit:V,config:function(a,b){var c=this;if(c.i)return this.C("error","Error: Raven has already been configured"),c;if(!a)return c;var d=c.m;b&&ga(b,function(a,b){"tags"===a||"extra"===a||"user"===a?c.l[a]=b:d[a]=b}),c.setDSN(a),d.ignoreErrors.push(/^Script error\.?$/),d.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/),d.ignoreErrors=la(d.ignoreErrors),d.ignoreUrls=!!d.ignoreUrls.length&&la(d.ignoreUrls),d.whitelistUrls=!!d.whitelistUrls.length&&la(d.whitelistUrls),d.includePaths=la(d.includePaths),d.maxBreadcrumbs=Math.max(0,Math.min(d.maxBreadcrumbs||100,100));var e={xhr:!0,console:!0,dom:!0,location:!0,sentry:!0},f=d.autoBreadcrumbs;"[object Object]"==={}.toString.call(f)?f=ha(e,f):f!==!1&&(f=e),d.autoBreadcrumbs=f;var g={tryCatch:!0},h=d.instrument;return"[object Object]"==={}.toString.call(h)?h=ha(g,h):h!==!1&&(h=g),d.instrument=h,V.collectWindowErrors=!!d.collectWindowErrors,c},install:function(){var a=this;return a.isSetup()&&!a.p&&(V.report.subscribe(function(){a.D.apply(a,arguments)}),a.E(),a.m.instrument&&a.m.instrument.tryCatch&&a.F(),a.m.autoBreadcrumbs&&a.G(),a.H(),a.p=!0),Error.stackTraceLimit=a.m.stackTraceLimit,this},setDSN:function(a){var b=this,c=b.I(a),d=c.path.lastIndexOf("/"),e=c.path.substr(1,d);b.J=a,b.j=c.user,b.K=c.pass&&c.pass.substr(1),b.k=c.path.substr(d+1),b.i=b.L(c),b.M=b.i+"/"+e+"api/"+b.k+"/store/",this.A()},context:function(a,b,c){return ca(a)&&(c=b||[],b=a,a=void 0),this.wrap(a,b).apply(this,c)},wrap:function(a,b,c){function d(){var d=[],f=arguments.length,g=!a||a&&a.deep!==!1;for(c&&ca(c)&&c.apply(this,arguments);f--;)d[f]=g?e.wrap(a,arguments[f]):arguments[f];try{return b.apply(this,d)}catch(h){throw e.N(),e.captureException(h,a),h}}var e=this;if(ba(b)&&!ca(a))return a;if(ca(a)&&(b=a,a=void 0),!ca(b))return b;try{if(b.a)return b;if(b.O)return b.O}catch(f){return b}for(var g in b)ka(b,g)&&(d[g]=b[g]);return d.prototype=b.prototype,b.O=d,d.a=!0,d.b=b,d},uninstall:function(){return V.report.uninstall(),this.P(),this.Q(),this.R(),Error.stackTraceLimit=this.q,this.p=!1,this},captureException:function(a,b){b=ha({trimHeadFrames:0},b?b:{});var c=!$(a),d=!aa(a),e=aa(a)&&!a.error;if(c&&d||e)return this.captureMessage(a,ha(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}));aa(a)&&(a=a.error),this.f=a;try{var f=V.computeStackTrace(a);this.S(f,b)}catch(g){if(a!==g)throw g}return this},captureMessage:function(a,b){if(!this.m.ignoreErrors.test||!this.m.ignoreErrors.test(a)){b=b||{};var c,d=ha({message:a+""},b);try{throw new Error(a)}catch(e){c=e}c.name=null;var f=V.computeStackTrace(c),g=ea(f.stack)&&f.stack[1],h=g&&g.url||"";if((!this.m.ignoreUrls.test||!this.m.ignoreUrls.test(h))&&(!this.m.whitelistUrls.test||this.m.whitelistUrls.test(h))){if(this.m.stacktrace||b&&b.stacktrace){b=ha({fingerprint:a,trimHeadFrames:(b.trimHeadFrames||0)+1},b);var i=this.T(f,b);d.stacktrace={frames:i.reverse()}}return this.U(d),this}}},captureBreadcrumb:function(a){var b=ha({timestamp:H()/1e3},a);if(ca(this.m.breadcrumbCallback)){var c=this.m.breadcrumbCallback(b);if(_(c)&&!fa(c))b=c;else if(c===!1)return this}return this.w.push(b),this.w.length>this.m.maxBreadcrumbs&&this.w.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.t.push([a,b]),this.p&&this.H(),this},setUserContext:function(a){return this.l.user=a,this},setExtraContext:function(a){return this.V("extra",a),this},setTagsContext:function(a){return this.V("tags",a),this},clearContext:function(){return this.l={},this},getContext:function(){return JSON.parse(W(this.l))},setEnvironment:function(a){return this.m.environment=a,this},setRelease:function(a){return this.m.release=a,this},setDataCallback:function(a){var b=this.m.dataCallback;return this.m.dataCallback=I(b,a),this},setBreadcrumbCallback:function(a){var b=this.m.breadcrumbCallback;return this.m.breadcrumbCallback=I(b,a),this},setShouldSendCallback:function(a){var b=this.m.shouldSendCallback;return this.m.shouldSendCallback=I(b,a),this},setTransport:function(a){return this.m.transport=a,this},lastException:function(){return this.f},lastEventId:function(){return this.h},isSetup:function(){return!!this.c&&(!!this.i||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.C("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=xa.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(ya){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new X("Missing eventId");var c=a.dsn||this.J;if(!c)throw new X("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.l.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.L(this.I(c)),h=ya.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(ya.head||ya.body).appendChild(h)}},N:function(){var a=this;this.o+=1,setTimeout(function(){a.o-=1})},W:function(a,b){var c,d;if(this.d){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),ya.createEvent?(c=ya.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=ya.createEventObject(),c.eventType=a);for(d in b)ka(b,d)&&(c[d]=b[d]);if(ya.createEvent)ya.dispatchEvent(c);else try{ya.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},X:function(a){var b=this;return function(c){if(b.Y=null,b.x!==c){b.x=c;var d;try{d=oa(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},Z:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.Y;g||a.X("input")(c),clearTimeout(g),a.Y=setTimeout(function(){a.Y=null},b)}}},$:function(a,b){var c=ra(this.y.href),d=ra(b),e=ra(a);this.z=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},E:function(){var a=this;a._=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.a?a._.apply(this.b,arguments):a._.apply(this,arguments)}},P:function(){this._&&(Function.prototype.toString=this._)},F:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.$(b.z,c+""),a.apply(this,arguments)}};sa(history,"pushState",j,d),sa(history,"replaceState",j,d)}if(c.console&&"console"in xa&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};ga(["debug","info","warn","error","log"],function(a,b){ua(console,b,k)})}},Q:function(){for(var a;this.v.length;){a=this.v.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},R:function(){for(var a in this.s)this.r[a]=this.s[a]},H:function(){var a=this;ga(this.t,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},I:function(a){var b=wa.exec(a),c={},d=7;try{for(;d--;)c[va[d]]=b[d]||""}catch(e){throw new X("Invalid DSN: "+a)}if(c.pass&&!this.m.allowSecretKey)throw new X("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},L:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},D:function(){this.o||this.S.apply(this,arguments)},S:function(a,b){var c=this.T(a,b);this.W("handle",{stackInfo:a,options:b}),this.ba(a.name,a.message,a.url,a.lineno,c,b)},T:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(ga(a.stack,function(b,e){var f=c.ca(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.w,0)}),this.l.user&&(a.user=this.l.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||fa(a[b]))&&delete a[b]}),ca(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!fa(a)&&(!ca(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.ia()?void this.C("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() href parsing trick because React Native and other +// environments where DOM might not be available + + +function parseUrl$1(url) { + if (typeof url !== 'string') return {}; + var match = url.match(/^(([^:\/?#]+):)?(\/\/([^\/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?$/); // coerce to undefined values to empty string so we don't get 'undefined' + + var query = match[6] || ''; + var fragment = match[8] || ''; + return { + protocol: match[2], + host: match[4], + path: match[5], + relative: match[5] + query + fragment // everything minus origin + + }; +} + +function uuid4$1() { + var crypto = _window$3.crypto || _window$3.msCrypto; + + if (!isUndefined$1(crypto) && crypto.getRandomValues) { + // Use window.crypto API if available + // eslint-disable-next-line no-undef + var arr = new Uint16Array(8); + crypto.getRandomValues(arr); // set 4 in byte 7 + + arr[3] = arr[3] & 0xfff | 0x4000; // set 2 most significant bits of byte 9 to '10' + + arr[4] = arr[4] & 0x3fff | 0x8000; + + var pad = function pad(num) { + var v = num.toString(16); + + while (v.length < 4) { + v = '0' + v; + } + + return v; + }; + + return pad(arr[0]) + pad(arr[1]) + pad(arr[2]) + pad(arr[3]) + pad(arr[4]) + pad(arr[5]) + pad(arr[6]) + pad(arr[7]); + } else { + // http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/2117523#2117523 + return 'xxxxxxxxxxxx4xxxyxxxxxxxxxxxxxxx'.replace(/[xy]/g, function (c) { + var r = Math.random() * 16 | 0, + v = c === 'x' ? r : r & 0x3 | 0x8; + return v.toString(16); + }); + } +} +/** + * Given a child DOM element, returns a query-selector statement describing that + * and its ancestors + * e.g. [HTMLElement] => body > div > input#foo.btn[name=baz] + * @param elem + * @returns {string} + */ + + +function htmlTreeAsString$1(elem) { + /* eslint no-extra-parens:0*/ + var MAX_TRAVERSE_HEIGHT = 5, + MAX_OUTPUT_LEN = 80, + out = [], + height = 0, + len = 0, + separator = ' > ', + sepLength = separator.length, + nextStr; + + while (elem && height++ < MAX_TRAVERSE_HEIGHT) { + nextStr = htmlElementAsString(elem); // bail out if + // - nextStr is the 'html' element + // - the length of the string that would be created exceeds MAX_OUTPUT_LEN + // (ignore this limit if we are on the first iteration) + + if (nextStr === 'html' || height > 1 && len + out.length * sepLength + nextStr.length >= MAX_OUTPUT_LEN) { + break; + } + + out.push(nextStr); + len += nextStr.length; + elem = elem.parentNode; + } + + return out.reverse().join(separator); +} +/** + * Returns a simple, query-selector representation of a DOM element + * e.g. [HTMLElement] => input#foo.btn[name=baz] + * @param HTMLElement + * @returns {string} + */ + + +function htmlElementAsString(elem) { + var out = [], + className, + classes, + key, + attr, + i; + + if (!elem || !elem.tagName) { + return ''; + } + + out.push(elem.tagName.toLowerCase()); + + if (elem.id) { + out.push('#' + elem.id); + } + + className = elem.className; + + if (className && isString$1(className)) { + classes = className.split(/\s+/); + + for (i = 0; i < classes.length; i++) { + out.push('.' + classes[i]); + } + } + + var attrWhitelist = ['type', 'name', 'title', 'alt']; + + for (i = 0; i < attrWhitelist.length; i++) { + key = attrWhitelist[i]; + attr = elem.getAttribute(key); + + if (attr) { + out.push('[' + key + '="' + attr + '"]'); + } + } + + return out.join(''); +} +/** + * Returns true if either a OR b is truthy, but not both + */ + + +function isOnlyOneTruthy(a, b) { + return !!(!!a ^ !!b); +} +/** + * Returns true if both parameters are undefined + */ + + +function isBothUndefined(a, b) { + return isUndefined$1(a) && isUndefined$1(b); +} +/** + * Returns true if the two input exception interfaces have the same content + */ + + +function isSameException$1(ex1, ex2) { + if (isOnlyOneTruthy(ex1, ex2)) return false; + ex1 = ex1.values[0]; + ex2 = ex2.values[0]; + if (ex1.type !== ex2.type || ex1.value !== ex2.value) return false; // in case both stacktraces are undefined, we can't decide so default to false + + if (isBothUndefined(ex1.stacktrace, ex2.stacktrace)) return false; + return isSameStacktrace$1(ex1.stacktrace, ex2.stacktrace); +} +/** + * Returns true if the two input stack trace interfaces have the same content + */ + + +function isSameStacktrace$1(stack1, stack2) { + if (isOnlyOneTruthy(stack1, stack2)) return false; + var frames1 = stack1.frames; + var frames2 = stack2.frames; // Exit early if frame count differs + + if (frames1.length !== frames2.length) return false; // Iterate through every frame; bail out if anything differs + + var a, b; + + for (var i = 0; i < frames1.length; i++) { + a = frames1[i]; + b = frames2[i]; + if (a.filename !== b.filename || a.lineno !== b.lineno || a.colno !== b.colno || a['function'] !== b['function']) return false; + } + + return true; +} +/** + * Polyfill a method + * @param obj object e.g. `document` + * @param name method name present on object e.g. `addEventListener` + * @param replacement replacement function + * @param track {optional} record instrumentation to an array + */ + + +function fill$1(obj, name, replacement, track) { + var orig = obj[name]; + obj[name] = replacement(orig); + obj[name].__raven__ = true; + obj[name].__orig__ = orig; + + if (track) { + track.push([obj, name, orig]); + } +} +/** + * Join values in array + * @param input array of values to be joined together + * @param delimiter string to be placed in-between values + * @returns {string} + */ + + +function safeJoin(input, delimiter) { + if (!isArray$1(input)) return ''; + var output = []; + + for (var i = 0; i < input.length; i++) { + try { + output.push(String(input[i])); + } catch (e) { + output.push('[value cannot be serialized]'); + } + } + + return output.join(delimiter); +} + +var utils = { + isObject: isObject$1, + isError: isError$1, + isErrorEvent: isErrorEvent$1, + isUndefined: isUndefined$1, + isFunction: isFunction$1, + isPlainObject: isPlainObject, + isString: isString$1, + isArray: isArray$1, + isEmptyObject: isEmptyObject$1, + supportsErrorEvent: supportsErrorEvent, + supportsFetch: supportsFetch$1, + wrappedCallback: wrappedCallback, + each: each$1, + objectMerge: objectMerge$1, + truncate: truncate$1, + objectFrozen: objectFrozen$1, + hasKey: hasKey$1, + joinRegExp: joinRegExp$1, + urlencode: urlencode$1, + uuid4: uuid4$1, + htmlTreeAsString: htmlTreeAsString$1, + htmlElementAsString: htmlElementAsString, + isSameException: isSameException$1, + isSameStacktrace: isSameStacktrace$1, + parseUrl: parseUrl$1, + fill: fill$1, + safeJoin: safeJoin +}; + +/* + TraceKit - Cross brower stack traces + + This was originally forked from github.com/occ/TraceKit, but has since been + largely re-written and is now maintained as part of raven-js. Tests for + this are in test/vendor. + + MIT license +*/ + +var TraceKit = { + collectWindowErrors: true, + debug: false +}; // This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) + +var _window$2 = typeof window !== 'undefined' ? window : typeof commonjsGlobal !== 'undefined' ? commonjsGlobal : typeof self !== 'undefined' ? self : {}; // global reference to slice + + +var _slice = [].slice; +var UNKNOWN_FUNCTION = '?'; // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error#Error_types + +var ERROR_TYPES_RE = /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/; + +function getLocationHref() { + if (typeof document === 'undefined' || document.location == null) return ''; + return document.location.href; +} +/** + * TraceKit.report: cross-browser processing of unhandled exceptions + * + * Syntax: + * TraceKit.report.subscribe(function(stackInfo) { ... }) + * TraceKit.report.unsubscribe(function(stackInfo) { ... }) + * TraceKit.report(exception) + * try { ...code... } catch(ex) { TraceKit.report(ex); } + * + * Supports: + * - Firefox: full stack trace with line numbers, plus column number + * on top frame; column number is not guaranteed + * - Opera: full stack trace with line and column numbers + * - Chrome: full stack trace with line and column numbers + * - Safari: line and column number for the top frame only; some frames + * may be missing, and column number is not guaranteed + * - IE: line and column number for the top frame only; some frames + * may be missing, and column number is not guaranteed + * + * In theory, TraceKit should work on all of the following versions: + * - IE5.5+ (only 8.0 tested) + * - Firefox 0.9+ (only 3.5+ tested) + * - Opera 7+ (only 10.50 tested; versions 9 and earlier may require + * Exceptions Have Stacktrace to be enabled in opera:config) + * - Safari 3+ (only 4+ tested) + * - Chrome 1+ (only 5+ tested) + * - Konqueror 3.5+ (untested) + * + * Requires TraceKit.computeStackTrace. + * + * Tries to catch all unhandled exceptions and report them to the + * subscribed handlers. Please note that TraceKit.report will rethrow the + * exception. This is REQUIRED in order to get a useful stack trace in IE. + * If the exception does not reach the top of the browser, you will only + * get a stack trace from the point where TraceKit.report was called. + * + * Handlers receive a stackInfo object as described in the + * TraceKit.computeStackTrace docs. + */ + + +TraceKit.report = function reportModuleWrapper() { + var handlers = [], + lastArgs = null, + lastException = null, + lastExceptionStack = null; + /** + * Add a crash handler. + * @param {Function} handler + */ + + function subscribe(handler) { + installGlobalHandler(); + handlers.push(handler); + } + /** + * Remove a crash handler. + * @param {Function} handler + */ + + + function unsubscribe(handler) { + for (var i = handlers.length - 1; i >= 0; --i) { + if (handlers[i] === handler) { + handlers.splice(i, 1); + } + } + } + /** + * Remove all crash handlers. + */ + + + function unsubscribeAll() { + uninstallGlobalHandler(); + handlers = []; + } + /** + * Dispatch stack information to all handlers. + * @param {Object.} stack + */ + + + function notifyHandlers(stack, isWindowError) { + var exception = null; + + if (isWindowError && !TraceKit.collectWindowErrors) { + return; + } + + for (var i in handlers) { + if (handlers.hasOwnProperty(i)) { + try { + handlers[i].apply(null, [stack].concat(_slice.call(arguments, 2))); + } catch (inner) { + exception = inner; + } + } + } + + if (exception) { + throw exception; + } + } + + var _oldOnerrorHandler, _onErrorHandlerInstalled; + /** + * Ensures all global unhandled exceptions are recorded. + * Supported by Gecko and IE. + * @param {string} msg Error message. + * @param {string} url URL of script that generated the exception. + * @param {(number|string)} lineNo The line number at which the error + * occurred. + * @param {?(number|string)} colNo The column number at which the error + * occurred. + * @param {?Error} ex The actual Error object. + */ + + + function traceKitWindowOnError(msg, url, lineNo, colNo, ex) { + var stack = null; // If 'ex' is ErrorEvent, get real Error from inside + + var exception = utils.isErrorEvent(ex) ? ex.error : ex; // If 'msg' is ErrorEvent, get real message from inside + + var message = utils.isErrorEvent(msg) ? msg.message : msg; + + if (lastExceptionStack) { + TraceKit.computeStackTrace.augmentStackTraceWithInitialElement(lastExceptionStack, url, lineNo, message); + processLastException(); + } else if (exception && utils.isError(exception)) { + // non-string `exception` arg; attempt to extract stack trace + // New chrome and blink send along a real error object + // Let's just report that like a normal error. + // See: https://mikewest.org/2013/08/debugging-runtime-errors-with-window-onerror + stack = TraceKit.computeStackTrace(exception); + notifyHandlers(stack, true); + } else { + var location = { + url: url, + line: lineNo, + column: colNo + }; + var name = undefined; + var groups; + + if ({}.toString.call(message) === '[object String]') { + var groups = message.match(ERROR_TYPES_RE); + + if (groups) { + name = groups[1]; + message = groups[2]; + } + } + + location.func = UNKNOWN_FUNCTION; + stack = { + name: name, + message: message, + url: getLocationHref(), + stack: [location] + }; + notifyHandlers(stack, true); + } + + if (_oldOnerrorHandler) { + return _oldOnerrorHandler.apply(this, arguments); + } + + return false; + } + + function installGlobalHandler() { + if (_onErrorHandlerInstalled) { + return; + } + + _oldOnerrorHandler = _window$2.onerror; + _window$2.onerror = traceKitWindowOnError; + _onErrorHandlerInstalled = true; + } + + function uninstallGlobalHandler() { + if (!_onErrorHandlerInstalled) { + return; + } + + _window$2.onerror = _oldOnerrorHandler; + _onErrorHandlerInstalled = false; + _oldOnerrorHandler = undefined; + } + + function processLastException() { + var _lastExceptionStack = lastExceptionStack, + _lastArgs = lastArgs; + lastArgs = null; + lastExceptionStack = null; + lastException = null; + notifyHandlers.apply(null, [_lastExceptionStack, false].concat(_lastArgs)); + } + /** + * Reports an unhandled Error to TraceKit. + * @param {Error} ex + * @param {?boolean} rethrow If false, do not re-throw the exception. + * Only used for window.onerror to not cause an infinite loop of + * rethrowing. + */ + + + function report(ex, rethrow) { + var args = _slice.call(arguments, 1); + + if (lastExceptionStack) { + if (lastException === ex) { + return; // already caught by an inner catch block, ignore + } else { + processLastException(); + } + } + + var stack = TraceKit.computeStackTrace(ex); + lastExceptionStack = stack; + lastException = ex; + lastArgs = args; // If the stack trace is incomplete, wait for 2 seconds for + // slow slow IE to see if onerror occurs or not before reporting + // this exception; otherwise, we will end up with an incomplete + // stack trace + + setTimeout(function () { + if (lastException === ex) { + processLastException(); + } + }, stack.incomplete ? 2000 : 0); + + if (rethrow !== false) { + throw ex; // re-throw to propagate to the top level (and cause window.onerror) + } + } + + report.subscribe = subscribe; + report.unsubscribe = unsubscribe; + report.uninstall = unsubscribeAll; + return report; +}(); +/** + * TraceKit.computeStackTrace: cross-browser stack traces in JavaScript + * + * Syntax: + * s = TraceKit.computeStackTrace(exception) // consider using TraceKit.report instead (see below) + * Returns: + * s.name - exception name + * s.message - exception message + * s.stack[i].url - JavaScript or HTML file URL + * s.stack[i].func - function name, or empty for anonymous functions (if guessing did not work) + * s.stack[i].args - arguments passed to the function, if known + * s.stack[i].line - line number, if known + * s.stack[i].column - column number, if known + * + * Supports: + * - Firefox: full stack trace with line numbers and unreliable column + * number on top frame + * - Opera 10: full stack trace with line and column numbers + * - Opera 9-: full stack trace with line numbers + * - Chrome: full stack trace with line and column numbers + * - Safari: line and column number for the topmost stacktrace element + * only + * - IE: no line numbers whatsoever + * + * Tries to guess names of anonymous functions by looking for assignments + * in the source code. In IE and Safari, we have to guess source file names + * by searching for function bodies inside all page scripts. This will not + * work for scripts that are loaded cross-domain. + * Here be dragons: some function names may be guessed incorrectly, and + * duplicate functions may be mismatched. + * + * TraceKit.computeStackTrace should only be used for tracing purposes. + * Logging of unhandled exceptions should be done with TraceKit.report, + * which builds on top of TraceKit.computeStackTrace and provides better + * IE support by utilizing the window.onerror event to retrieve information + * about the top of the stack. + * + * Note: In IE and Safari, no stack trace is recorded on the Error object, + * so computeStackTrace instead walks its *own* chain of callers. + * This means that: + * * in Safari, some methods may be missing from the stack trace; + * * in IE, the topmost function in the stack trace will always be the + * caller of computeStackTrace. + * + * This is okay for tracing (because you are likely to be calling + * computeStackTrace from the function you want to be the topmost element + * of the stack trace anyway), but not okay for logging unhandled + * exceptions (because your catch block will likely be far away from the + * inner function that actually caused the exception). + * + */ + + +TraceKit.computeStackTrace = function computeStackTraceWrapper() { + // Contents of Exception in various browsers. + // + // SAFARI: + // ex.message = Can't find variable: qq + // ex.line = 59 + // ex.sourceId = 580238192 + // ex.sourceURL = http://... + // ex.expressionBeginOffset = 96 + // ex.expressionCaretOffset = 98 + // ex.expressionEndOffset = 98 + // ex.name = ReferenceError + // + // FIREFOX: + // ex.message = qq is not defined + // ex.fileName = http://... + // ex.lineNumber = 59 + // ex.columnNumber = 69 + // ex.stack = ...stack trace... (see the example below) + // ex.name = ReferenceError + // + // CHROME: + // ex.message = qq is not defined + // ex.name = ReferenceError + // ex.type = not_defined + // ex.arguments = ['aa'] + // ex.stack = ...stack trace... + // + // INTERNET EXPLORER: + // ex.message = ... + // ex.name = ReferenceError + // + // OPERA: + // ex.message = ...message... (see the example below) + // ex.name = ReferenceError + // ex.opera#sourceloc = 11 (pretty much useless, duplicates the info in ex.message) + // ex.stacktrace = n/a; see 'opera:config#UserPrefs|Exceptions Have Stacktrace' + + /** + * Computes stack trace information from the stack property. + * Chrome and Gecko use this property. + * @param {Error} ex + * @return {?Object.} Stack trace information. + */ + function computeStackTraceFromStackProp(ex) { + if (typeof ex.stack === 'undefined' || !ex.stack) return; + var chrome = /^\s*at (.*?) ?\(((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i, + gecko = /^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|\[native).*?|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i, + winjs = /^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i, + // Used to additionally parse URL/line/column from eval frames + geckoEval = /(\S+) line (\d+)(?: > eval line \d+)* > eval/i, + chromeEval = /\((\S*)(?::(\d+))(?::(\d+))\)/, + lines = ex.stack.split('\n'), + stack = [], + submatch, + parts, + element, + reference = /^(.*) is undefined$/.exec(ex.message); + + for (var i = 0, j = lines.length; i < j; ++i) { + if (parts = chrome.exec(lines[i])) { + var isNative = parts[2] && parts[2].indexOf('native') === 0; // start of line + + var isEval = parts[2] && parts[2].indexOf('eval') === 0; // start of line + + if (isEval && (submatch = chromeEval.exec(parts[2]))) { + // throw out eval line/column and use top-most line/column number + parts[2] = submatch[1]; // url + + parts[3] = submatch[2]; // line + + parts[4] = submatch[3]; // column + } + + element = { + url: !isNative ? parts[2] : null, + func: parts[1] || UNKNOWN_FUNCTION, + args: isNative ? [parts[2]] : [], + line: parts[3] ? +parts[3] : null, + column: parts[4] ? +parts[4] : null + }; + } else if (parts = winjs.exec(lines[i])) { + element = { + url: parts[2], + func: parts[1] || UNKNOWN_FUNCTION, + args: [], + line: +parts[3], + column: parts[4] ? +parts[4] : null + }; + } else if (parts = gecko.exec(lines[i])) { + var isEval = parts[3] && parts[3].indexOf(' > eval') > -1; + + if (isEval && (submatch = geckoEval.exec(parts[3]))) { + // throw out eval line/column and use top-most line number + parts[3] = submatch[1]; + parts[4] = submatch[2]; + parts[5] = null; // no column when eval + } else if (i === 0 && !parts[5] && typeof ex.columnNumber !== 'undefined') { + // FireFox uses this awesome columnNumber property for its top frame + // Also note, Firefox's column number is 0-based and everything else expects 1-based, + // so adding 1 + // NOTE: this hack doesn't work if top-most frame is eval + stack[0].column = ex.columnNumber + 1; + } + + element = { + url: parts[3], + func: parts[1] || UNKNOWN_FUNCTION, + args: parts[2] ? parts[2].split(',') : [], + line: parts[4] ? +parts[4] : null, + column: parts[5] ? +parts[5] : null + }; + } else { + continue; + } + + if (!element.func && element.line) { + element.func = UNKNOWN_FUNCTION; + } + + stack.push(element); + } + + if (!stack.length) { + return null; + } + + return { + name: ex.name, + message: ex.message, + url: getLocationHref(), + stack: stack + }; + } + /** + * Adds information about the first frame to incomplete stack traces. + * Safari and IE require this to get complete data on the first frame. + * @param {Object.} stackInfo Stack trace information from + * one of the compute* methods. + * @param {string} url The URL of the script that caused an error. + * @param {(number|string)} lineNo The line number of the script that + * caused an error. + * @param {string=} message The error generated by the browser, which + * hopefully contains the name of the object that caused the error. + * @return {boolean} Whether or not the stack information was + * augmented. + */ + + + function augmentStackTraceWithInitialElement(stackInfo, url, lineNo, message) { + var initial = { + url: url, + line: lineNo + }; + + if (initial.url && initial.line) { + stackInfo.incomplete = false; + + if (!initial.func) { + initial.func = UNKNOWN_FUNCTION; + } + + if (stackInfo.stack.length > 0) { + if (stackInfo.stack[0].url === initial.url) { + if (stackInfo.stack[0].line === initial.line) { + return false; // already in stack trace + } else if (!stackInfo.stack[0].line && stackInfo.stack[0].func === initial.func) { + stackInfo.stack[0].line = initial.line; + return false; + } + } + } + + stackInfo.stack.unshift(initial); + stackInfo.partial = true; + return true; + } else { + stackInfo.incomplete = true; + } + + return false; + } + /** + * Computes stack trace information by walking the arguments.caller + * chain at the time the exception occurred. This will cause earlier + * frames to be missed but is the only way to get any stack trace in + * Safari and IE. The top frame is restored by + * {@link augmentStackTraceWithInitialElement}. + * @param {Error} ex + * @return {?Object.} Stack trace information. + */ + + + function computeStackTraceByWalkingCallerChain(ex, depth) { + var functionName = /function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i, + stack = [], + funcs = {}, + recursion = false, + parts, + item; + + for (var curr = computeStackTraceByWalkingCallerChain.caller; curr && !recursion; curr = curr.caller) { + if (curr === computeStackTrace || curr === TraceKit.report) { + // console.log('skipping internal function'); + continue; + } + + item = { + url: null, + func: UNKNOWN_FUNCTION, + line: null, + column: null + }; + + if (curr.name) { + item.func = curr.name; + } else if (parts = functionName.exec(curr.toString())) { + item.func = parts[1]; + } + + if (typeof item.func === 'undefined') { + try { + item.func = parts.input.substring(0, parts.input.indexOf('{')); + } catch (e) {} + } + + if (funcs['' + curr]) { + recursion = true; + } else { + funcs['' + curr] = true; + } + + stack.push(item); + } + + if (depth) { + // console.log('depth is ' + depth); + // console.log('stack is ' + stack.length); + stack.splice(0, depth); + } + + var result = { + name: ex.name, + message: ex.message, + url: getLocationHref(), + stack: stack + }; + augmentStackTraceWithInitialElement(result, ex.sourceURL || ex.fileName, ex.line || ex.lineNumber, ex.message || ex.description); + return result; + } + /** + * Computes a stack trace for an exception. + * @param {Error} ex + * @param {(string|number)=} depth + */ + + + function computeStackTrace(ex, depth) { + var stack = null; + depth = depth == null ? 0 : +depth; + + try { + stack = computeStackTraceFromStackProp(ex); + + if (stack) { + return stack; + } + } catch (e) { + if (TraceKit.debug) { + throw e; + } + } + + try { + stack = computeStackTraceByWalkingCallerChain(ex, depth + 1); + + if (stack) { + return stack; + } + } catch (e) { + if (TraceKit.debug) { + throw e; + } + } + + return { + name: ex.name, + message: ex.message, + url: getLocationHref() + }; + } + + computeStackTrace.augmentStackTraceWithInitialElement = augmentStackTraceWithInitialElement; + computeStackTrace.computeStackTraceFromStackProp = computeStackTraceFromStackProp; + return computeStackTrace; +}(); + +var tracekit = TraceKit; + +var stringify_1 = createCommonjsModule(function (module, exports) { + /* + json-stringify-safe + Like JSON.stringify, but doesn't throw on circular references. + + Originally forked from https://github.com/isaacs/json-stringify-safe + version 5.0.1 on 3/8/2017 and modified to handle Errors serialization + and IE8 compatibility. Tests for this are in test/vendor. + + ISC license: https://github.com/isaacs/json-stringify-safe/blob/master/LICENSE + */ + exports = module.exports = stringify; + exports.getSerialize = serializer; + + function indexOf(haystack, needle) { + for (var i = 0; i < haystack.length; ++i) { + if (haystack[i] === needle) return i; + } + + return -1; + } + + function stringify(obj, replacer, spaces, cycleReplacer) { + return JSON.stringify(obj, serializer(replacer, cycleReplacer), spaces); + } // https://github.com/ftlabs/js-abbreviate/blob/fa709e5f139e7770a71827b1893f22418097fbda/index.js#L95-L106 + + + function stringifyError(value) { + var err = { + // These properties are implemented as magical getters and don't show up in for in + stack: value.stack, + message: value.message, + name: value.name + }; + + for (var i in value) { + if (Object.prototype.hasOwnProperty.call(value, i)) { + err[i] = value[i]; + } + } + + return err; + } + + function serializer(replacer, cycleReplacer) { + var stack = []; + var keys = []; + + if (cycleReplacer == null) { + cycleReplacer = function cycleReplacer(key, value) { + if (stack[0] === value) { + return '[Circular ~]'; + } + + return '[Circular ~.' + keys.slice(0, indexOf(stack, value)).join('.') + ']'; + }; + } + + return function (key, value) { + if (stack.length > 0) { + var thisPos = indexOf(stack, this); + ~thisPos ? stack.splice(thisPos + 1) : stack.push(this); + ~thisPos ? keys.splice(thisPos, Infinity, key) : keys.push(key); + + if (~indexOf(stack, value)) { + value = cycleReplacer.call(this, key, value); + } + } else { + stack.push(value); + } + + return replacer == null ? value instanceof Error ? stringifyError(value) : value : replacer.call(this, key, value); + }; + } +}); +var stringify_2 = stringify_1.getSerialize; + +function RavenConfigError(message) { + this.name = 'RavenConfigError'; + this.message = message; +} + +RavenConfigError.prototype = new Error(); +RavenConfigError.prototype.constructor = RavenConfigError; +var configError = RavenConfigError; + +var wrapMethod = function wrapMethod(console, level, callback) { + var originalConsoleLevel = console[level]; + var originalConsole = console; + + if (!(level in console)) { + return; + } + + var sentryLevel = level === 'warn' ? 'warning' : level; + + console[level] = function () { + var args = [].slice.call(arguments); + var msg = utils.safeJoin(args, ' '); + var data = { + level: sentryLevel, + logger: 'console', + extra: { + arguments: args + } + }; + + if (level === 'assert') { + if (args[0] === false) { + // Default browsers message + msg = 'Assertion failed: ' + (utils.safeJoin(args.slice(1), ' ') || 'console.assert'); + data.extra.arguments = args.slice(1); + callback && callback(msg, data); + } + } else { + callback && callback(msg, data); + } // this fails for some browsers. :( + + + if (originalConsoleLevel) { + // IE9 doesn't allow calling apply on console functions directly + // See: https://stackoverflow.com/questions/5472938/does-ie9-support-console-log-and-is-it-a-real-function#answer-5473193 + Function.prototype.apply.call(originalConsoleLevel, originalConsole, args); + } + }; +}; + +var console$1 = { + wrapMethod: wrapMethod +}; + +/*global XDomainRequest:false */ + +var isError = utils.isError; +var isObject = utils.isObject; +var isErrorEvent = utils.isErrorEvent; +var isUndefined = utils.isUndefined; +var isFunction = utils.isFunction; +var isString = utils.isString; +var isArray = utils.isArray; +var isEmptyObject = utils.isEmptyObject; +var each = utils.each; +var objectMerge = utils.objectMerge; +var truncate = utils.truncate; +var objectFrozen = utils.objectFrozen; +var hasKey = utils.hasKey; +var joinRegExp = utils.joinRegExp; +var urlencode = utils.urlencode; +var uuid4 = utils.uuid4; +var htmlTreeAsString = utils.htmlTreeAsString; +var isSameException = utils.isSameException; +var isSameStacktrace = utils.isSameStacktrace; +var parseUrl = utils.parseUrl; +var fill = utils.fill; +var supportsFetch = utils.supportsFetch; +var wrapConsoleMethod = console$1.wrapMethod; +var dsnKeys = 'source protocol user pass host port path'.split(' '); +var dsnPattern = /^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/; + +function now() { + return +new Date(); +} // This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) + + +var _window$1 = typeof window !== 'undefined' ? window : typeof commonjsGlobal !== 'undefined' ? commonjsGlobal : typeof self !== 'undefined' ? self : {}; + +var _document = _window$1.document; +var _navigator = _window$1.navigator; + +function keepOriginalCallback(original, callback) { + return isFunction(callback) ? function (data) { + return callback(data, original); + } : callback; +} // First, check for JSON support +// If there is no JSON, we no-op the core features of Raven +// since JSON is required to encode the payload + + +function Raven$1() { + this._hasJSON = !!(_typeof(JSON) === 'object' && JSON.stringify); // Raven can run in contexts where there's no document (react-native) + + this._hasDocument = !isUndefined(_document); + this._hasNavigator = !isUndefined(_navigator); + this._lastCapturedException = null; + this._lastData = null; + this._lastEventId = null; + this._globalServer = null; + this._globalKey = null; + this._globalProject = null; + this._globalContext = {}; + this._globalOptions = { + // SENTRY_RELEASE can be injected by https://github.com/getsentry/sentry-webpack-plugin + release: _window$1.SENTRY_RELEASE && _window$1.SENTRY_RELEASE.id, + logger: 'javascript', + ignoreErrors: [], + ignoreUrls: [], + whitelistUrls: [], + includePaths: [], + headers: null, + collectWindowErrors: true, + maxMessageLength: 0, + // By default, truncates URL values to 250 chars + maxUrlLength: 250, + stackTraceLimit: 50, + autoBreadcrumbs: true, + instrument: true, + sampleRate: 1 + }; + this._fetchDefaults = { + method: 'POST', + keepalive: true, + referrerPolicy: 'origin' + }; + this._ignoreOnError = 0; + this._isRavenInstalled = false; + this._originalErrorStackTraceLimit = Error.stackTraceLimit; // capture references to window.console *and* all its methods first + // before the console plugin has a chance to monkey patch + + this._originalConsole = _window$1.console || {}; + this._originalConsoleMethods = {}; + this._plugins = []; + this._startTime = now(); + this._wrappedBuiltIns = []; + this._breadcrumbs = []; + this._lastCapturedEvent = null; + this._keypressTimeout; + this._location = _window$1.location; + this._lastHref = this._location && this._location.href; + + this._resetBackoff(); // eslint-disable-next-line guard-for-in + + + for (var method in this._originalConsole) { + this._originalConsoleMethods[method] = this._originalConsole[method]; + } +} +/* + * The core Raven singleton + * + * @this {Raven} + */ + + +Raven$1.prototype = { + // Hardcode version string so that raven source can be loaded directly via + // webpack (using a build step causes webpack #1617). Grunt verifies that + // this value matches package.json during build. + // See: https://github.com/getsentry/raven-js/issues/465 + VERSION: '3.22.2', + debug: false, + TraceKit: tracekit, + // alias to TraceKit + + /* + * Configure Raven with a DSN and extra options + * + * @param {string} dsn The public Sentry DSN + * @param {object} options Set of global options [optional] + * @return {Raven} + */ + config: function config(dsn, options) { + var self = this; + + if (self._globalServer) { + this._logDebug('error', 'Error: Raven has already been configured'); + + return self; + } + + if (!dsn) return self; + var globalOptions = self._globalOptions; // merge in options + + if (options) { + each(options, function (key, value) { + // tags and extra are special and need to be put into context + if (key === 'tags' || key === 'extra' || key === 'user') { + self._globalContext[key] = value; + } else { + globalOptions[key] = value; + } + }); + } + + self.setDSN(dsn); // "Script error." is hard coded into browsers for errors that it can't read. + // this is the result of a script being pulled in from an external domain and CORS. + + globalOptions.ignoreErrors.push(/^Script error\.?$/); + globalOptions.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/); // join regexp rules into one big rule + + globalOptions.ignoreErrors = joinRegExp(globalOptions.ignoreErrors); + globalOptions.ignoreUrls = globalOptions.ignoreUrls.length ? joinRegExp(globalOptions.ignoreUrls) : false; + globalOptions.whitelistUrls = globalOptions.whitelistUrls.length ? joinRegExp(globalOptions.whitelistUrls) : false; + globalOptions.includePaths = joinRegExp(globalOptions.includePaths); + globalOptions.maxBreadcrumbs = Math.max(0, Math.min(globalOptions.maxBreadcrumbs || 100, 100)); // default and hard limit is 100 + + var autoBreadcrumbDefaults = { + xhr: true, + console: true, + dom: true, + location: true, + sentry: true + }; + var autoBreadcrumbs = globalOptions.autoBreadcrumbs; + + if ({}.toString.call(autoBreadcrumbs) === '[object Object]') { + autoBreadcrumbs = objectMerge(autoBreadcrumbDefaults, autoBreadcrumbs); + } else if (autoBreadcrumbs !== false) { + autoBreadcrumbs = autoBreadcrumbDefaults; + } + + globalOptions.autoBreadcrumbs = autoBreadcrumbs; + var instrumentDefaults = { + tryCatch: true + }; + var instrument = globalOptions.instrument; + + if ({}.toString.call(instrument) === '[object Object]') { + instrument = objectMerge(instrumentDefaults, instrument); + } else if (instrument !== false) { + instrument = instrumentDefaults; + } + + globalOptions.instrument = instrument; + tracekit.collectWindowErrors = !!globalOptions.collectWindowErrors; // return for chaining + + return self; + }, + + /* + * Installs a global window.onerror error handler + * to capture and report uncaught exceptions. + * At this point, install() is required to be called due + * to the way TraceKit is set up. + * + * @return {Raven} + */ + install: function install() { + var self = this; + + if (self.isSetup() && !self._isRavenInstalled) { + tracekit.report.subscribe(function () { + self._handleOnErrorStackInfo.apply(self, arguments); + }); + + self._patchFunctionToString(); + + if (self._globalOptions.instrument && self._globalOptions.instrument.tryCatch) { + self._instrumentTryCatch(); + } + + if (self._globalOptions.autoBreadcrumbs) self._instrumentBreadcrumbs(); // Install all of the plugins + + self._drainPlugins(); + + self._isRavenInstalled = true; + } + + Error.stackTraceLimit = self._globalOptions.stackTraceLimit; + return this; + }, + + /* + * Set the DSN (can be called multiple time unlike config) + * + * @param {string} dsn The public Sentry DSN + */ + setDSN: function setDSN(dsn) { + var self = this, + uri = self._parseDSN(dsn), + lastSlash = uri.path.lastIndexOf('/'), + path = uri.path.substr(1, lastSlash); + + self._dsn = dsn; + self._globalKey = uri.user; + self._globalSecret = uri.pass && uri.pass.substr(1); + self._globalProject = uri.path.substr(lastSlash + 1); + self._globalServer = self._getGlobalServer(uri); + self._globalEndpoint = self._globalServer + '/' + path + 'api/' + self._globalProject + '/store/'; // Reset backoff state since we may be pointing at a + // new project/server + + this._resetBackoff(); + }, + + /* + * Wrap code within a context so Raven can capture errors + * reliably across domains that is executed immediately. + * + * @param {object} options A specific set of options for this context [optional] + * @param {function} func The callback to be immediately executed within the context + * @param {array} args An array of arguments to be called with the callback [optional] + */ + context: function context(options, func, args) { + if (isFunction(options)) { + args = func || []; + func = options; + options = undefined; + } + + return this.wrap(options, func).apply(this, args); + }, + + /* + * Wrap code within a context and returns back a new function to be executed + * + * @param {object} options A specific set of options for this context [optional] + * @param {function} func The function to be wrapped in a new context + * @param {function} func A function to call before the try/catch wrapper [optional, private] + * @return {function} The newly wrapped functions with a context + */ + wrap: function wrap(options, func, _before) { + var self = this; // 1 argument has been passed, and it's not a function + // so just return it + + if (isUndefined(func) && !isFunction(options)) { + return options; + } // options is optional + + + if (isFunction(options)) { + func = options; + options = undefined; + } // At this point, we've passed along 2 arguments, and the second one + // is not a function either, so we'll just return the second argument. + + + if (!isFunction(func)) { + return func; + } // We don't wanna wrap it twice! + + + try { + if (func.__raven__) { + return func; + } // If this has already been wrapped in the past, return that + + + if (func.__raven_wrapper__) { + return func.__raven_wrapper__; + } + } catch (e) { + // Just accessing custom props in some Selenium environments + // can cause a "Permission denied" exception (see raven-js#495). + // Bail on wrapping and return the function as-is (defers to window.onerror). + return func; + } + + function wrapped() { + var args = [], + i = arguments.length, + deep = !options || options && options.deep !== false; + + if (_before && isFunction(_before)) { + _before.apply(this, arguments); + } // Recursively wrap all of a function's arguments that are + // functions themselves. + + + while (i--) { + args[i] = deep ? self.wrap(options, arguments[i]) : arguments[i]; + } + + try { + // Attempt to invoke user-land function + // NOTE: If you are a Sentry user, and you are seeing this stack frame, it + // means Raven caught an error invoking your application code. This is + // expected behavior and NOT indicative of a bug with Raven.js. + return func.apply(this, args); + } catch (e) { + self._ignoreNextOnError(); + + self.captureException(e, options); + throw e; + } + } // copy over properties of the old function + + + for (var property in func) { + if (hasKey(func, property)) { + wrapped[property] = func[property]; + } + } + + wrapped.prototype = func.prototype; + func.__raven_wrapper__ = wrapped; // Signal that this function has been wrapped/filled already + // for both debugging and to prevent it to being wrapped/filled twice + + wrapped.__raven__ = true; + wrapped.__orig__ = func; + return wrapped; + }, + + /* + * Uninstalls the global error handler. + * + * @return {Raven} + */ + uninstall: function uninstall() { + tracekit.report.uninstall(); + + this._unpatchFunctionToString(); + + this._restoreBuiltIns(); + + this._restoreConsole(); + + Error.stackTraceLimit = this._originalErrorStackTraceLimit; + this._isRavenInstalled = false; + return this; + }, + + /* + * Manually capture an exception and send it over to Sentry + * + * @param {error} ex An exception to be logged + * @param {object} options A specific set of options for this error [optional] + * @return {Raven} + */ + captureException: function captureException(ex, options) { + options = objectMerge({ + trimHeadFrames: 0 + }, options ? options : {}); // Cases for sending ex as a message, rather than an exception + + var isNotError = !isError(ex); + var isNotErrorEvent = !isErrorEvent(ex); + var isErrorEventWithoutError = isErrorEvent(ex) && !ex.error; + + if (isNotError && isNotErrorEvent || isErrorEventWithoutError) { + return this.captureMessage(ex, objectMerge(options, { + stacktrace: true, + // if we fall back to captureMessage, default to attempting a new trace + trimHeadFrames: options.trimHeadFrames + 1 + })); + } // Get actual Error from ErrorEvent + + + if (isErrorEvent(ex)) ex = ex.error; // Store the raw exception object for potential debugging and introspection + + this._lastCapturedException = ex; // TraceKit.report will re-raise any exception passed to it, + // which means you have to wrap it in try/catch. Instead, we + // can wrap it here and only re-raise if TraceKit.report + // raises an exception different from the one we asked to + // report on. + + try { + var stack = tracekit.computeStackTrace(ex); + + this._handleStackInfo(stack, options); + } catch (ex1) { + if (ex !== ex1) { + throw ex1; + } + } + + return this; + }, + + /* + * Manually send a message to Sentry + * + * @param {string} msg A plain message to be captured in Sentry + * @param {object} options A specific set of options for this message [optional] + * @return {Raven} + */ + captureMessage: function captureMessage(msg, options) { + // config() automagically converts ignoreErrors from a list to a RegExp so we need to test for an + // early call; we'll error on the side of logging anything called before configuration since it's + // probably something you should see: + if (!!this._globalOptions.ignoreErrors.test && this._globalOptions.ignoreErrors.test(msg)) { + return; + } + + options = options || {}; + var data = objectMerge({ + message: msg + '' // Make sure it's actually a string + + }, options); + var ex; // Generate a "synthetic" stack trace from this point. + // NOTE: If you are a Sentry user, and you are seeing this stack frame, it is NOT indicative + // of a bug with Raven.js. Sentry generates synthetic traces either by configuration, + // or if it catches a thrown object without a "stack" property. + + try { + throw new Error(msg); + } catch (ex1) { + ex = ex1; + } // null exception name so `Error` isn't prefixed to msg + + + ex.name = null; + var stack = tracekit.computeStackTrace(ex); // stack[0] is `throw new Error(msg)` call itself, we are interested in the frame that was just before that, stack[1] + + var initialCall = isArray(stack.stack) && stack.stack[1]; + var fileurl = initialCall && initialCall.url || ''; + + if (!!this._globalOptions.ignoreUrls.test && this._globalOptions.ignoreUrls.test(fileurl)) { + return; + } + + if (!!this._globalOptions.whitelistUrls.test && !this._globalOptions.whitelistUrls.test(fileurl)) { + return; + } + + if (this._globalOptions.stacktrace || options && options.stacktrace) { + options = objectMerge({ + // fingerprint on msg, not stack trace (legacy behavior, could be + // revisited) + fingerprint: msg, + // since we know this is a synthetic trace, the top N-most frames + // MUST be from Raven.js, so mark them as in_app later by setting + // trimHeadFrames + trimHeadFrames: (options.trimHeadFrames || 0) + 1 + }, options); + + var frames = this._prepareFrames(stack, options); + + data.stacktrace = { + // Sentry expects frames oldest to newest + frames: frames.reverse() + }; + } // Fire away! + + + this._send(data); + + return this; + }, + captureBreadcrumb: function captureBreadcrumb(obj) { + var crumb = objectMerge({ + timestamp: now() / 1000 + }, obj); + + if (isFunction(this._globalOptions.breadcrumbCallback)) { + var result = this._globalOptions.breadcrumbCallback(crumb); + + if (isObject(result) && !isEmptyObject(result)) { + crumb = result; + } else if (result === false) { + return this; + } + } + + this._breadcrumbs.push(crumb); + + if (this._breadcrumbs.length > this._globalOptions.maxBreadcrumbs) { + this._breadcrumbs.shift(); + } + + return this; + }, + addPlugin: function addPlugin(plugin + /*arg1, arg2, ... argN*/ + ) { + var pluginArgs = [].slice.call(arguments, 1); + + this._plugins.push([plugin, pluginArgs]); + + if (this._isRavenInstalled) { + this._drainPlugins(); + } + + return this; + }, + + /* + * Set/clear a user to be sent along with the payload. + * + * @param {object} user An object representing user data [optional] + * @return {Raven} + */ + setUserContext: function setUserContext(user) { + // Intentionally do not merge here since that's an unexpected behavior. + this._globalContext.user = user; + return this; + }, + + /* + * Merge extra attributes to be sent along with the payload. + * + * @param {object} extra An object representing extra data [optional] + * @return {Raven} + */ + setExtraContext: function setExtraContext(extra) { + this._mergeContext('extra', extra); + + return this; + }, + + /* + * Merge tags to be sent along with the payload. + * + * @param {object} tags An object representing tags [optional] + * @return {Raven} + */ + setTagsContext: function setTagsContext(tags) { + this._mergeContext('tags', tags); + + return this; + }, + + /* + * Clear all of the context. + * + * @return {Raven} + */ + clearContext: function clearContext() { + this._globalContext = {}; + return this; + }, + + /* + * Get a copy of the current context. This cannot be mutated. + * + * @return {object} copy of context + */ + getContext: function getContext() { + // lol javascript + return JSON.parse(stringify_1(this._globalContext)); + }, + + /* + * Set environment of application + * + * @param {string} environment Typically something like 'production'. + * @return {Raven} + */ + setEnvironment: function setEnvironment(environment) { + this._globalOptions.environment = environment; + return this; + }, + + /* + * Set release version of application + * + * @param {string} release Typically something like a git SHA to identify version + * @return {Raven} + */ + setRelease: function setRelease(release) { + this._globalOptions.release = release; + return this; + }, + + /* + * Set the dataCallback option + * + * @param {function} callback The callback to run which allows the + * data blob to be mutated before sending + * @return {Raven} + */ + setDataCallback: function setDataCallback(callback) { + var original = this._globalOptions.dataCallback; + this._globalOptions.dataCallback = keepOriginalCallback(original, callback); + return this; + }, + + /* + * Set the breadcrumbCallback option + * + * @param {function} callback The callback to run which allows filtering + * or mutating breadcrumbs + * @return {Raven} + */ + setBreadcrumbCallback: function setBreadcrumbCallback(callback) { + var original = this._globalOptions.breadcrumbCallback; + this._globalOptions.breadcrumbCallback = keepOriginalCallback(original, callback); + return this; + }, + + /* + * Set the shouldSendCallback option + * + * @param {function} callback The callback to run which allows + * introspecting the blob before sending + * @return {Raven} + */ + setShouldSendCallback: function setShouldSendCallback(callback) { + var original = this._globalOptions.shouldSendCallback; + this._globalOptions.shouldSendCallback = keepOriginalCallback(original, callback); + return this; + }, + + /** + * Override the default HTTP transport mechanism that transmits data + * to the Sentry server. + * + * @param {function} transport Function invoked instead of the default + * `makeRequest` handler. + * + * @return {Raven} + */ + setTransport: function setTransport(transport) { + this._globalOptions.transport = transport; + return this; + }, + + /* + * Get the latest raw exception that was captured by Raven. + * + * @return {error} + */ + lastException: function lastException() { + return this._lastCapturedException; + }, + + /* + * Get the last event id + * + * @return {string} + */ + lastEventId: function lastEventId() { + return this._lastEventId; + }, + + /* + * Determine if Raven is setup and ready to go. + * + * @return {boolean} + */ + isSetup: function isSetup() { + if (!this._hasJSON) return false; // needs JSON support + + if (!this._globalServer) { + if (!this.ravenNotConfiguredError) { + this.ravenNotConfiguredError = true; + + this._logDebug('error', 'Error: Raven has not been configured.'); + } + + return false; + } + + return true; + }, + afterLoad: function afterLoad() { + // TODO: remove window dependence? + // Attempt to initialize Raven on load + var RavenConfig = _window$1.RavenConfig; + + if (RavenConfig) { + this.config(RavenConfig.dsn, RavenConfig.config).install(); + } + }, + showReportDialog: function showReportDialog(options) { + if (!_document // doesn't work without a document (React native) + ) return; + options = options || {}; + var lastEventId = options.eventId || this.lastEventId(); + + if (!lastEventId) { + throw new configError('Missing eventId'); + } + + var dsn = options.dsn || this._dsn; + + if (!dsn) { + throw new configError('Missing DSN'); + } + + var encode = encodeURIComponent; + var qs = ''; + qs += '?eventId=' + encode(lastEventId); + qs += '&dsn=' + encode(dsn); + var user = options.user || this._globalContext.user; + + if (user) { + if (user.name) qs += '&name=' + encode(user.name); + if (user.email) qs += '&email=' + encode(user.email); + } + + var globalServer = this._getGlobalServer(this._parseDSN(dsn)); + + var script = _document.createElement('script'); + + script.async = true; + script.src = globalServer + '/api/embed/error-page/' + qs; + + (_document.head || _document.body).appendChild(script); + }, + + /**** Private functions ****/ + _ignoreNextOnError: function _ignoreNextOnError() { + var self = this; + this._ignoreOnError += 1; + setTimeout(function () { + // onerror should trigger before setTimeout + self._ignoreOnError -= 1; + }); + }, + _triggerEvent: function _triggerEvent(eventType, options) { + // NOTE: `event` is a native browser thing, so let's avoid conflicting wiht it + var evt, key; + if (!this._hasDocument) return; + options = options || {}; + eventType = 'raven' + eventType.substr(0, 1).toUpperCase() + eventType.substr(1); + + if (_document.createEvent) { + evt = _document.createEvent('HTMLEvents'); + evt.initEvent(eventType, true, true); + } else { + evt = _document.createEventObject(); + evt.eventType = eventType; + } + + for (key in options) { + if (hasKey(options, key)) { + evt[key] = options[key]; + } + } + + if (_document.createEvent) { + // IE9 if standards + _document.dispatchEvent(evt); + } else { + // IE8 regardless of Quirks or Standards + // IE9 if quirks + try { + _document.fireEvent('on' + evt.eventType.toLowerCase(), evt); + } catch (e) {// Do nothing + } + } + }, + + /** + * Wraps addEventListener to capture UI breadcrumbs + * @param evtName the event name (e.g. "click") + * @returns {Function} + * @private + */ + _breadcrumbEventHandler: function _breadcrumbEventHandler(evtName) { + var self = this; + return function (evt) { + // reset keypress timeout; e.g. triggering a 'click' after + // a 'keypress' will reset the keypress debounce so that a new + // set of keypresses can be recorded + self._keypressTimeout = null; // It's possible this handler might trigger multiple times for the same + // event (e.g. event propagation through node ancestors). Ignore if we've + // already captured the event. + + if (self._lastCapturedEvent === evt) return; + self._lastCapturedEvent = evt; // try/catch both: + // - accessing evt.target (see getsentry/raven-js#838, #768) + // - `htmlTreeAsString` because it's complex, and just accessing the DOM incorrectly + // can throw an exception in some circumstances. + + var target; + + try { + target = htmlTreeAsString(evt.target); + } catch (e) { + target = ''; + } + + self.captureBreadcrumb({ + category: 'ui.' + evtName, + // e.g. ui.click, ui.input + message: target + }); + }; + }, + + /** + * Wraps addEventListener to capture keypress UI events + * @returns {Function} + * @private + */ + _keypressEventHandler: function _keypressEventHandler() { + var self = this, + debounceDuration = 1000; // milliseconds + // TODO: if somehow user switches keypress target before + // debounce timeout is triggered, we will only capture + // a single breadcrumb from the FIRST target (acceptable?) + + return function (evt) { + var target; + + try { + target = evt.target; + } catch (e) { + // just accessing event properties can throw an exception in some rare circumstances + // see: https://github.com/getsentry/raven-js/issues/838 + return; + } + + var tagName = target && target.tagName; // only consider keypress events on actual input elements + // this will disregard keypresses targeting body (e.g. tabbing + // through elements, hotkeys, etc) + + if (!tagName || tagName !== 'INPUT' && tagName !== 'TEXTAREA' && !target.isContentEditable) return; // record first keypress in a series, but ignore subsequent + // keypresses until debounce clears + + var timeout = self._keypressTimeout; + + if (!timeout) { + self._breadcrumbEventHandler('input')(evt); + } + + clearTimeout(timeout); + self._keypressTimeout = setTimeout(function () { + self._keypressTimeout = null; + }, debounceDuration); + }; + }, + + /** + * Captures a breadcrumb of type "navigation", normalizing input URLs + * @param to the originating URL + * @param from the target URL + * @private + */ + _captureUrlChange: function _captureUrlChange(from, to) { + var parsedLoc = parseUrl(this._location.href); + var parsedTo = parseUrl(to); + var parsedFrom = parseUrl(from); // because onpopstate only tells you the "new" (to) value of location.href, and + // not the previous (from) value, we need to track the value of the current URL + // state ourselves + + this._lastHref = to; // Use only the path component of the URL if the URL matches the current + // document (almost all the time when using pushState) + + if (parsedLoc.protocol === parsedTo.protocol && parsedLoc.host === parsedTo.host) to = parsedTo.relative; + if (parsedLoc.protocol === parsedFrom.protocol && parsedLoc.host === parsedFrom.host) from = parsedFrom.relative; + this.captureBreadcrumb({ + category: 'navigation', + data: { + to: to, + from: from + } + }); + }, + _patchFunctionToString: function _patchFunctionToString() { + var self = this; + self._originalFunctionToString = Function.prototype.toString; // eslint-disable-next-line no-extend-native + + Function.prototype.toString = function () { + if (typeof this === 'function' && this.__raven__) { + return self._originalFunctionToString.apply(this.__orig__, arguments); + } + + return self._originalFunctionToString.apply(this, arguments); + }; + }, + _unpatchFunctionToString: function _unpatchFunctionToString() { + if (this._originalFunctionToString) { + // eslint-disable-next-line no-extend-native + Function.prototype.toString = this._originalFunctionToString; + } + }, + + /** + * Wrap timer functions and event targets to catch errors and provide + * better metadata. + */ + _instrumentTryCatch: function _instrumentTryCatch() { + var self = this; + var wrappedBuiltIns = self._wrappedBuiltIns; + + function wrapTimeFn(orig) { + return function (fn, t) { + // preserve arity + // Make a copy of the arguments to prevent deoptimization + // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments + var args = new Array(arguments.length); + + for (var i = 0; i < args.length; ++i) { + args[i] = arguments[i]; + } + + var originalCallback = args[0]; + + if (isFunction(originalCallback)) { + args[0] = self.wrap(originalCallback); + } // IE < 9 doesn't support .call/.apply on setInterval/setTimeout, but it + // also supports only two arguments and doesn't care what this is, so we + // can just call the original function directly. + + + if (orig.apply) { + return orig.apply(this, args); + } else { + return orig(args[0], args[1]); + } + }; + } + + var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; + + function wrapEventTarget(global) { + var proto = _window$1[global] && _window$1[global].prototype; + + if (proto && proto.hasOwnProperty && proto.hasOwnProperty('addEventListener')) { + fill(proto, 'addEventListener', function (orig) { + return function (evtName, fn, capture, secure) { + // preserve arity + try { + if (fn && fn.handleEvent) { + fn.handleEvent = self.wrap(fn.handleEvent); + } + } catch (err) {} // can sometimes get 'Permission denied to access property "handle Event' + // More breadcrumb DOM capture ... done here and not in `_instrumentBreadcrumbs` + // so that we don't have more than one wrapper function + + + var before, clickHandler, keypressHandler; + + if (autoBreadcrumbs && autoBreadcrumbs.dom && (global === 'EventTarget' || global === 'Node')) { + // NOTE: generating multiple handlers per addEventListener invocation, should + // revisit and verify we can just use one (almost certainly) + clickHandler = self._breadcrumbEventHandler('click'); + keypressHandler = self._keypressEventHandler(); + + before = function before(evt) { + // need to intercept every DOM event in `before` argument, in case that + // same wrapped method is re-used for different events (e.g. mousemove THEN click) + // see #724 + if (!evt) return; + var eventType; + + try { + eventType = evt.type; + } catch (e) { + // just accessing event properties can throw an exception in some rare circumstances + // see: https://github.com/getsentry/raven-js/issues/838 + return; + } + + if (eventType === 'click') return clickHandler(evt);else if (eventType === 'keypress') return keypressHandler(evt); + }; + } + + return orig.call(this, evtName, self.wrap(fn, undefined, before), capture, secure); + }; + }, wrappedBuiltIns); + fill(proto, 'removeEventListener', function (orig) { + return function (evt, fn, capture, secure) { + try { + fn = fn && (fn.__raven_wrapper__ ? fn.__raven_wrapper__ : fn); + } catch (e) {// ignore, accessing __raven_wrapper__ will throw in some Selenium environments + } + + return orig.call(this, evt, fn, capture, secure); + }; + }, wrappedBuiltIns); + } + } + + fill(_window$1, 'setTimeout', wrapTimeFn, wrappedBuiltIns); + fill(_window$1, 'setInterval', wrapTimeFn, wrappedBuiltIns); + + if (_window$1.requestAnimationFrame) { + fill(_window$1, 'requestAnimationFrame', function (orig) { + return function (cb) { + return orig(self.wrap(cb)); + }; + }, wrappedBuiltIns); + } // event targets borrowed from bugsnag-js: + // https://github.com/bugsnag/bugsnag-js/blob/master/src/bugsnag.js#L666 + + + var eventTargets = ['EventTarget', 'Window', 'Node', 'ApplicationCache', 'AudioTrackList', 'ChannelMergerNode', 'CryptoOperation', 'EventSource', 'FileReader', 'HTMLUnknownElement', 'IDBDatabase', 'IDBRequest', 'IDBTransaction', 'KeyOperation', 'MediaController', 'MessagePort', 'ModalWindow', 'Notification', 'SVGElementInstance', 'Screen', 'TextTrack', 'TextTrackCue', 'TextTrackList', 'WebSocket', 'WebSocketWorker', 'Worker', 'XMLHttpRequest', 'XMLHttpRequestEventTarget', 'XMLHttpRequestUpload']; + + for (var i = 0; i < eventTargets.length; i++) { + wrapEventTarget(eventTargets[i]); + } + }, + + /** + * Instrument browser built-ins w/ breadcrumb capturing + * - XMLHttpRequests + * - DOM interactions (click/typing) + * - window.location changes + * - console + * + * Can be disabled or individually configured via the `autoBreadcrumbs` config option + */ + _instrumentBreadcrumbs: function _instrumentBreadcrumbs() { + var self = this; + var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; + var wrappedBuiltIns = self._wrappedBuiltIns; + + function wrapProp(prop, xhr) { + if (prop in xhr && isFunction(xhr[prop])) { + fill(xhr, prop, function (orig) { + return self.wrap(orig); + }); // intentionally don't track filled methods on XHR instances + } + } + + if (autoBreadcrumbs.xhr && 'XMLHttpRequest' in _window$1) { + var xhrproto = XMLHttpRequest.prototype; + fill(xhrproto, 'open', function (origOpen) { + return function (method, url) { + // preserve arity + // if Sentry key appears in URL, don't capture + if (isString(url) && url.indexOf(self._globalKey) === -1) { + this.__raven_xhr = { + method: method, + url: url, + status_code: null + }; + } + + return origOpen.apply(this, arguments); + }; + }, wrappedBuiltIns); + fill(xhrproto, 'send', function (origSend) { + return function () { + // preserve arity + var xhr = this; + + function onreadystatechangeHandler() { + if (xhr.__raven_xhr && xhr.readyState === 4) { + try { + // touching statusCode in some platforms throws + // an exception + xhr.__raven_xhr.status_code = xhr.status; + } catch (e) { + /* do nothing */ + } + + self.captureBreadcrumb({ + type: 'http', + category: 'xhr', + data: xhr.__raven_xhr + }); + } + } + + var props = ['onload', 'onerror', 'onprogress']; + + for (var j = 0; j < props.length; j++) { + wrapProp(props[j], xhr); + } + + if ('onreadystatechange' in xhr && isFunction(xhr.onreadystatechange)) { + fill(xhr, 'onreadystatechange', function (orig) { + return self.wrap(orig, undefined, onreadystatechangeHandler); + } + /* intentionally don't track this instrumentation */ + ); + } else { + // if onreadystatechange wasn't actually set by the page on this xhr, we + // are free to set our own and capture the breadcrumb + xhr.onreadystatechange = onreadystatechangeHandler; + } + + return origSend.apply(this, arguments); + }; + }, wrappedBuiltIns); + } + + if (autoBreadcrumbs.xhr && supportsFetch()) { + fill(_window$1, 'fetch', function (origFetch) { + return function () { + // preserve arity + // Make a copy of the arguments to prevent deoptimization + // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments + var args = new Array(arguments.length); + + for (var i = 0; i < args.length; ++i) { + args[i] = arguments[i]; + } + + var fetchInput = args[0]; + var method = 'GET'; + var url; + + if (typeof fetchInput === 'string') { + url = fetchInput; + } else if ('Request' in _window$1 && fetchInput instanceof _window$1.Request) { + url = fetchInput.url; + + if (fetchInput.method) { + method = fetchInput.method; + } + } else { + url = '' + fetchInput; + } // if Sentry key appears in URL, don't capture, as it's our own request + + + if (url.indexOf(self._globalKey) !== -1) { + return origFetch.apply(this, args); + } + + if (args[1] && args[1].method) { + method = args[1].method; + } + + var fetchData = { + method: method, + url: url, + status_code: null + }; + return origFetch.apply(this, args).then(function (response) { + fetchData.status_code = response.status; + self.captureBreadcrumb({ + type: 'http', + category: 'fetch', + data: fetchData + }); + return response; + }); + }; + }, wrappedBuiltIns); + } // Capture breadcrumbs from any click that is unhandled / bubbled up all the way + // to the document. Do this before we instrument addEventListener. + + + if (autoBreadcrumbs.dom && this._hasDocument) { + if (_document.addEventListener) { + _document.addEventListener('click', self._breadcrumbEventHandler('click'), false); + + _document.addEventListener('keypress', self._keypressEventHandler(), false); + } else { + // IE8 Compatibility + _document.attachEvent('onclick', self._breadcrumbEventHandler('click')); + + _document.attachEvent('onkeypress', self._keypressEventHandler()); + } + } // record navigation (URL) changes + // NOTE: in Chrome App environment, touching history.pushState, *even inside + // a try/catch block*, will cause Chrome to output an error to console.error + // borrowed from: https://github.com/angular/angular.js/pull/13945/files + + + var chrome = _window$1.chrome; + var isChromePackagedApp = chrome && chrome.app && chrome.app.runtime; + var hasPushAndReplaceState = !isChromePackagedApp && _window$1.history && history.pushState && history.replaceState; + + if (autoBreadcrumbs.location && hasPushAndReplaceState) { + // TODO: remove onpopstate handler on uninstall() + var oldOnPopState = _window$1.onpopstate; + + _window$1.onpopstate = function () { + var currentHref = self._location.href; + + self._captureUrlChange(self._lastHref, currentHref); + + if (oldOnPopState) { + return oldOnPopState.apply(this, arguments); + } + }; + + var historyReplacementFunction = function historyReplacementFunction(origHistFunction) { + // note history.pushState.length is 0; intentionally not declaring + // params to preserve 0 arity + return function () + /* state, title, url */ + { + var url = arguments.length > 2 ? arguments[2] : undefined; // url argument is optional + + if (url) { + // coerce to string (this is what pushState does) + self._captureUrlChange(self._lastHref, url + ''); + } + + return origHistFunction.apply(this, arguments); + }; + }; + + fill(history, 'pushState', historyReplacementFunction, wrappedBuiltIns); + fill(history, 'replaceState', historyReplacementFunction, wrappedBuiltIns); + } + + if (autoBreadcrumbs.console && 'console' in _window$1 && console.log) { + // console + var consoleMethodCallback = function consoleMethodCallback(msg, data) { + self.captureBreadcrumb({ + message: msg, + level: data.level, + category: 'console' + }); + }; + + each(['debug', 'info', 'warn', 'error', 'log'], function (_, level) { + wrapConsoleMethod(console, level, consoleMethodCallback); + }); + } + }, + _restoreBuiltIns: function _restoreBuiltIns() { + // restore any wrapped builtins + var builtin; + + while (this._wrappedBuiltIns.length) { + builtin = this._wrappedBuiltIns.shift(); + var obj = builtin[0], + name = builtin[1], + orig = builtin[2]; + obj[name] = orig; + } + }, + _restoreConsole: function _restoreConsole() { + // eslint-disable-next-line guard-for-in + for (var method in this._originalConsoleMethods) { + this._originalConsole[method] = this._originalConsoleMethods[method]; + } + }, + _drainPlugins: function _drainPlugins() { + var self = this; // FIX ME TODO + + each(this._plugins, function (_, plugin) { + var installer = plugin[0]; + var args = plugin[1]; + installer.apply(self, [self].concat(args)); + }); + }, + _parseDSN: function _parseDSN(str) { + var m = dsnPattern.exec(str), + dsn = {}, + i = 7; + + try { + while (i--) { + dsn[dsnKeys[i]] = m[i] || ''; + } + } catch (e) { + throw new configError('Invalid DSN: ' + str); + } + + if (dsn.pass && !this._globalOptions.allowSecretKey) { + throw new configError('Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key'); + } + + return dsn; + }, + _getGlobalServer: function _getGlobalServer(uri) { + // assemble the endpoint from the uri pieces + var globalServer = '//' + uri.host + (uri.port ? ':' + uri.port : ''); + + if (uri.protocol) { + globalServer = uri.protocol + ':' + globalServer; + } + + return globalServer; + }, + _handleOnErrorStackInfo: function _handleOnErrorStackInfo() { + // if we are intentionally ignoring errors via onerror, bail out + if (!this._ignoreOnError) { + this._handleStackInfo.apply(this, arguments); + } + }, + _handleStackInfo: function _handleStackInfo(stackInfo, options) { + var frames = this._prepareFrames(stackInfo, options); + + this._triggerEvent('handle', { + stackInfo: stackInfo, + options: options + }); + + this._processException(stackInfo.name, stackInfo.message, stackInfo.url, stackInfo.lineno, frames, options); + }, + _prepareFrames: function _prepareFrames(stackInfo, options) { + var self = this; + var frames = []; + + if (stackInfo.stack && stackInfo.stack.length) { + each(stackInfo.stack, function (i, stack) { + var frame = self._normalizeFrame(stack, stackInfo.url); + + if (frame) { + frames.push(frame); + } + }); // e.g. frames captured via captureMessage throw + + if (options && options.trimHeadFrames) { + for (var j = 0; j < options.trimHeadFrames && j < frames.length; j++) { + frames[j].in_app = false; + } + } + } + + frames = frames.slice(0, this._globalOptions.stackTraceLimit); + return frames; + }, + _normalizeFrame: function _normalizeFrame(frame, stackInfoUrl) { + // normalize the frames data + var normalized = { + filename: frame.url, + lineno: frame.line, + colno: frame.column, + function: frame.func || '?' + }; // Case when we don't have any information about the error + // E.g. throwing a string or raw object, instead of an `Error` in Firefox + // Generating synthetic error doesn't add any value here + // + // We should probably somehow let a user know that they should fix their code + + if (!frame.url) { + normalized.filename = stackInfoUrl; // fallback to whole stacks url from onerror handler + } + + normalized.in_app = !( // determine if an exception came from outside of our app + // first we check the global includePaths list. + !!this._globalOptions.includePaths.test && !this._globalOptions.includePaths.test(normalized.filename) || // Now we check for fun, if the function name is Raven or TraceKit + /(Raven|TraceKit)\./.test(normalized['function']) || // finally, we do a last ditch effort and check for raven.min.js + /raven\.(min\.)?js$/.test(normalized.filename)); + return normalized; + }, + _processException: function _processException(type, message, fileurl, lineno, frames, options) { + var prefixedMessage = (type ? type + ': ' : '') + (message || ''); + + if (!!this._globalOptions.ignoreErrors.test && (this._globalOptions.ignoreErrors.test(message) || this._globalOptions.ignoreErrors.test(prefixedMessage))) { + return; + } + + var stacktrace; + + if (frames && frames.length) { + fileurl = frames[0].filename || fileurl; // Sentry expects frames oldest to newest + // and JS sends them as newest to oldest + + frames.reverse(); + stacktrace = { + frames: frames + }; + } else if (fileurl) { + stacktrace = { + frames: [{ + filename: fileurl, + lineno: lineno, + in_app: true + }] + }; + } + + if (!!this._globalOptions.ignoreUrls.test && this._globalOptions.ignoreUrls.test(fileurl)) { + return; + } + + if (!!this._globalOptions.whitelistUrls.test && !this._globalOptions.whitelistUrls.test(fileurl)) { + return; + } + + var data = objectMerge({ + // sentry.interfaces.Exception + exception: { + values: [{ + type: type, + value: message, + stacktrace: stacktrace + }] + }, + culprit: fileurl + }, options); // Fire away! + + this._send(data); + }, + _trimPacket: function _trimPacket(data) { + // For now, we only want to truncate the two different messages + // but this could/should be expanded to just trim everything + var max = this._globalOptions.maxMessageLength; + + if (data.message) { + data.message = truncate(data.message, max); + } + + if (data.exception) { + var exception = data.exception.values[0]; + exception.value = truncate(exception.value, max); + } + + var request = data.request; + + if (request) { + if (request.url) { + request.url = truncate(request.url, this._globalOptions.maxUrlLength); + } + + if (request.Referer) { + request.Referer = truncate(request.Referer, this._globalOptions.maxUrlLength); + } + } + + if (data.breadcrumbs && data.breadcrumbs.values) this._trimBreadcrumbs(data.breadcrumbs); + return data; + }, + + /** + * Truncate breadcrumb values (right now just URLs) + */ + _trimBreadcrumbs: function _trimBreadcrumbs(breadcrumbs) { + // known breadcrumb properties with urls + // TODO: also consider arbitrary prop values that start with (https?)?:// + var urlProps = ['to', 'from', 'url'], + urlProp, + crumb, + data; + + for (var i = 0; i < breadcrumbs.values.length; ++i) { + crumb = breadcrumbs.values[i]; + if (!crumb.hasOwnProperty('data') || !isObject(crumb.data) || objectFrozen(crumb.data)) continue; + data = objectMerge({}, crumb.data); + + for (var j = 0; j < urlProps.length; ++j) { + urlProp = urlProps[j]; + + if (data.hasOwnProperty(urlProp) && data[urlProp]) { + data[urlProp] = truncate(data[urlProp], this._globalOptions.maxUrlLength); + } + } + + breadcrumbs.values[i].data = data; + } + }, + _getHttpData: function _getHttpData() { + if (!this._hasNavigator && !this._hasDocument) return; + var httpData = {}; + + if (this._hasNavigator && _navigator.userAgent) { + httpData.headers = { + 'User-Agent': navigator.userAgent + }; + } // Check in `window` instead of `document`, as we may be in ServiceWorker environment + + + if (_window$1.location && _window$1.location.href) { + httpData.url = _window$1.location.href; + } + + if (this._hasDocument && _document.referrer) { + if (!httpData.headers) httpData.headers = {}; + httpData.headers.Referer = _document.referrer; + } + + return httpData; + }, + _resetBackoff: function _resetBackoff() { + this._backoffDuration = 0; + this._backoffStart = null; + }, + _shouldBackoff: function _shouldBackoff() { + return this._backoffDuration && now() - this._backoffStart < this._backoffDuration; + }, + + /** + * Returns true if the in-process data payload matches the signature + * of the previously-sent data + * + * NOTE: This has to be done at this level because TraceKit can generate + * data from window.onerror WITHOUT an exception object (IE8, IE9, + * other old browsers). This can take the form of an "exception" + * data object with a single frame (derived from the onerror args). + */ + _isRepeatData: function _isRepeatData(current) { + var last = this._lastData; + if (!last || current.message !== last.message || // defined for captureMessage + current.culprit !== last.culprit // defined for captureException/onerror + ) return false; // Stacktrace interface (i.e. from captureMessage) + + if (current.stacktrace || last.stacktrace) { + return isSameStacktrace(current.stacktrace, last.stacktrace); + } else if (current.exception || last.exception) { + // Exception interface (i.e. from captureException/onerror) + return isSameException(current.exception, last.exception); + } + + return true; + }, + _setBackoffState: function _setBackoffState(request) { + // If we are already in a backoff state, don't change anything + if (this._shouldBackoff()) { + return; + } + + var status = request.status; // 400 - project_id doesn't exist or some other fatal + // 401 - invalid/revoked dsn + // 429 - too many requests + + if (!(status === 400 || status === 401 || status === 429)) return; + var retry; + + try { + // If Retry-After is not in Access-Control-Expose-Headers, most + // browsers will throw an exception trying to access it + if (supportsFetch()) { + retry = request.headers.get('Retry-After'); + } else { + retry = request.getResponseHeader('Retry-After'); + } // Retry-After is returned in seconds + + + retry = parseInt(retry, 10) * 1000; + } catch (e) { + /* eslint no-empty:0 */ + } + + this._backoffDuration = retry ? // If Sentry server returned a Retry-After value, use it + retry : // Otherwise, double the last backoff duration (starts at 1 sec) + this._backoffDuration * 2 || 1000; + this._backoffStart = now(); + }, + _send: function _send(data) { + var globalOptions = this._globalOptions; + + var baseData = { + project: this._globalProject, + logger: globalOptions.logger, + platform: 'javascript' + }, + httpData = this._getHttpData(); + + if (httpData) { + baseData.request = httpData; + } // HACK: delete `trimHeadFrames` to prevent from appearing in outbound payload + + + if (data.trimHeadFrames) delete data.trimHeadFrames; + data = objectMerge(baseData, data); // Merge in the tags and extra separately since objectMerge doesn't handle a deep merge + + data.tags = objectMerge(objectMerge({}, this._globalContext.tags), data.tags); + data.extra = objectMerge(objectMerge({}, this._globalContext.extra), data.extra); // Send along our own collected metadata with extra + + data.extra['session:duration'] = now() - this._startTime; + + if (this._breadcrumbs && this._breadcrumbs.length > 0) { + // intentionally make shallow copy so that additions + // to breadcrumbs aren't accidentally sent in this request + data.breadcrumbs = { + values: [].slice.call(this._breadcrumbs, 0) + }; + } + + if (this._globalContext.user) { + // sentry.interfaces.User + data.user = this._globalContext.user; + } // Include the environment if it's defined in globalOptions + + + if (globalOptions.environment) data.environment = globalOptions.environment; // Include the release if it's defined in globalOptions + + if (globalOptions.release) data.release = globalOptions.release; // Include server_name if it's defined in globalOptions + + if (globalOptions.serverName) data.server_name = globalOptions.serverName; // Cleanup empty properties before sending them to the server + + Object.keys(data).forEach(function (key) { + if (data[key] == null || data[key] === '' || isEmptyObject(data[key])) { + delete data[key]; + } + }); + + if (isFunction(globalOptions.dataCallback)) { + data = globalOptions.dataCallback(data) || data; + } // Why?????????? + + + if (!data || isEmptyObject(data)) { + return; + } // Check if the request should be filtered or not + + + if (isFunction(globalOptions.shouldSendCallback) && !globalOptions.shouldSendCallback(data)) { + return; + } // Backoff state: Sentry server previously responded w/ an error (e.g. 429 - too many requests), + // so drop requests until "cool-off" period has elapsed. + + + if (this._shouldBackoff()) { + this._logDebug('warn', 'Raven dropped error due to backoff: ', data); + + return; + } + + if (typeof globalOptions.sampleRate === 'number') { + if (Math.random() < globalOptions.sampleRate) { + this._sendProcessedPayload(data); + } + } else { + this._sendProcessedPayload(data); + } + }, + _getUuid: function _getUuid() { + return uuid4(); + }, + _sendProcessedPayload: function _sendProcessedPayload(data, callback) { + var self = this; + var globalOptions = this._globalOptions; + if (!this.isSetup()) return; // Try and clean up the packet before sending by truncating long values + + data = this._trimPacket(data); // ideally duplicate error testing should occur *before* dataCallback/shouldSendCallback, + // but this would require copying an un-truncated copy of the data packet, which can be + // arbitrarily deep (extra_data) -- could be worthwhile? will revisit + + if (!this._globalOptions.allowDuplicates && this._isRepeatData(data)) { + this._logDebug('warn', 'Raven dropped repeat event: ', data); + + return; + } // Send along an event_id if not explicitly passed. + // This event_id can be used to reference the error within Sentry itself. + // Set lastEventId after we know the error should actually be sent + + + this._lastEventId = data.event_id || (data.event_id = this._getUuid()); // Store outbound payload after trim + + this._lastData = data; + + this._logDebug('debug', 'Raven about to send:', data); + + var auth = { + sentry_version: '7', + sentry_client: 'raven-js/' + this.VERSION, + sentry_key: this._globalKey + }; + + if (this._globalSecret) { + auth.sentry_secret = this._globalSecret; + } + + var exception = data.exception && data.exception.values[0]; // only capture 'sentry' breadcrumb is autoBreadcrumbs is truthy + + if (this._globalOptions.autoBreadcrumbs && this._globalOptions.autoBreadcrumbs.sentry) { + this.captureBreadcrumb({ + category: 'sentry', + message: exception ? (exception.type ? exception.type + ': ' : '') + exception.value : data.message, + event_id: data.event_id, + level: data.level || 'error' // presume error unless specified + + }); + } + + var url = this._globalEndpoint; + + (globalOptions.transport || this._makeRequest).call(this, { + url: url, + auth: auth, + data: data, + options: globalOptions, + onSuccess: function success() { + self._resetBackoff(); + + self._triggerEvent('success', { + data: data, + src: url + }); + + callback && callback(); + }, + onError: function failure(error) { + self._logDebug('error', 'Raven transport failed to send: ', error); + + if (error.request) { + self._setBackoffState(error.request); + } + + self._triggerEvent('failure', { + data: data, + src: url + }); + + error = error || new Error('Raven send failed (no additional details provided)'); + callback && callback(error); + } + }); + }, + _makeRequest: function _makeRequest(opts) { + // Auth is intentionally sent as part of query string (NOT as custom HTTP header) to avoid preflight CORS requests + var url = opts.url + '?' + urlencode(opts.auth); + var evaluatedHeaders = null; + var evaluatedFetchParameters = {}; + + if (opts.options.headers) { + evaluatedHeaders = this._evaluateHash(opts.options.headers); + } + + if (opts.options.fetchParameters) { + evaluatedFetchParameters = this._evaluateHash(opts.options.fetchParameters); + } + + if (supportsFetch()) { + evaluatedFetchParameters.body = stringify_1(opts.data); + var defaultFetchOptions = objectMerge({}, this._fetchDefaults); + var fetchOptions = objectMerge(defaultFetchOptions, evaluatedFetchParameters); + + if (evaluatedHeaders) { + fetchOptions.headers = evaluatedHeaders; + } + + return _window$1.fetch(url, fetchOptions).then(function (response) { + if (response.ok) { + opts.onSuccess && opts.onSuccess(); + } else { + var error = new Error('Sentry error code: ' + response.status); // It's called request only to keep compatibility with XHR interface + // and not add more redundant checks in setBackoffState method + + error.request = response; + opts.onError && opts.onError(error); + } + })['catch'](function () { + opts.onError && opts.onError(new Error('Sentry error code: network unavailable')); + }); + } + + var request = _window$1.XMLHttpRequest && new _window$1.XMLHttpRequest(); + if (!request) return; // if browser doesn't support CORS (e.g. IE7), we are out of luck + + var hasCORS = 'withCredentials' in request || typeof XDomainRequest !== 'undefined'; + if (!hasCORS) return; + + if ('withCredentials' in request) { + request.onreadystatechange = function () { + if (request.readyState !== 4) { + return; + } else if (request.status === 200) { + opts.onSuccess && opts.onSuccess(); + } else if (opts.onError) { + var err = new Error('Sentry error code: ' + request.status); + err.request = request; + opts.onError(err); + } + }; + } else { + request = new XDomainRequest(); // xdomainrequest cannot go http -> https (or vice versa), + // so always use protocol relative + + url = url.replace(/^https?:/, ''); // onreadystatechange not supported by XDomainRequest + + if (opts.onSuccess) { + request.onload = opts.onSuccess; + } + + if (opts.onError) { + request.onerror = function () { + var err = new Error('Sentry error code: XDomainRequest'); + err.request = request; + opts.onError(err); + }; + } + } + + request.open('POST', url); + + if (evaluatedHeaders) { + each(evaluatedHeaders, function (key, value) { + request.setRequestHeader(key, value); + }); + } + + request.send(stringify_1(opts.data)); + }, + _evaluateHash: function _evaluateHash(hash) { + var evaluated = {}; + + for (var key in hash) { + if (hash.hasOwnProperty(key)) { + var value = hash[key]; + evaluated[key] = typeof value === 'function' ? value() : value; + } + } + + return evaluated; + }, + _logDebug: function _logDebug(level) { + if (this._originalConsoleMethods[level] && this.debug) { + // In IE<10 console methods do not have their own 'apply' method + Function.prototype.apply.call(this._originalConsoleMethods[level], this._originalConsole, [].slice.call(arguments, 1)); + } + }, + _mergeContext: function _mergeContext(key, context) { + if (isUndefined(context)) { + delete this._globalContext[key]; + } else { + this._globalContext[key] = objectMerge(this._globalContext[key] || {}, context); + } + } +}; // Deprecations + +Raven$1.prototype.setUser = Raven$1.prototype.setUserContext; +Raven$1.prototype.setReleaseContext = Raven$1.prototype.setRelease; +var raven = Raven$1; + +/** + * Enforces a single instance of the Raven client, and the + * main entry point for Raven. If you are a consumer of the + * Raven library, you SHOULD load this file (vs raven.js). + **/ +// This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) + +var _window = typeof window !== 'undefined' ? window : typeof commonjsGlobal !== 'undefined' ? commonjsGlobal : typeof self !== 'undefined' ? self : {}; + +var _Raven = _window.Raven; +var Raven = new raven(); +/* + * Allow multiple versions of Raven to be installed. + * Strip Raven from the global context and returns the instance. + * + * @return {Raven} + */ + +Raven.noConflict = function () { + _window.Raven = _Raven; + return Raven; +}; + +Raven.afterLoad(); +var singleton = Raven; + +/** + * Ember.js plugin + * + * Patches event handler callbacks and ajax callbacks. + */ +function emberPlugin(Raven, Ember) { + Ember = Ember || window.Ember; // quit if Ember isn't on the page + + if (!Ember) return; + var _oldOnError = Ember.onerror; + + Ember.onerror = function EmberOnError(error) { + Raven.captureException(error); + + if (typeof _oldOnError === 'function') { + _oldOnError.call(this, error); + } + }; + + Ember.RSVP.on('error', function (reason) { + if (reason instanceof Error) { + Raven.captureException(reason, { + extra: { + context: 'Unhandled Promise error detected' + } + }); + } else { + Raven.captureMessage('Unhandled Promise error detected', { + extra: { + reason: reason + } + }); + } + }); +} + +var ember = emberPlugin; + +/** + * Vue.js 2.0 plugin + * + */ +function formatComponentName(vm) { + if (vm.$root === vm) { + return 'root instance'; + } + + var name = vm._isVue ? vm.$options.name || vm.$options._componentTag : vm.name; + return (name ? 'component <' + name + '>' : 'anonymous component') + (vm._isVue && vm.$options.__file ? ' at ' + vm.$options.__file : ''); +} + +function vuePlugin(Raven, Vue) { + Vue = Vue || window.Vue; // quit if Vue isn't on the page + + if (!Vue || !Vue.config) return; + var _oldOnError = Vue.config.errorHandler; + + Vue.config.errorHandler = function VueErrorHandler(error, vm, info) { + var metaData = {}; // vm and lifecycleHook are not always available + + if (Object.prototype.toString.call(vm) === '[object Object]') { + metaData.componentName = formatComponentName(vm); + metaData.propsData = vm.$options.propsData; + } + + if (typeof info !== 'undefined') { + metaData.lifecycleHook = info; + } + + Raven.captureException(error, { + extra: metaData + }); + + if (typeof _oldOnError === 'function') { + _oldOnError.call(this, error, vm, info); + } + }; +} + +var vue = vuePlugin; + +/* This file was generated by './scripts/generate-plugin-combinations.js'! */ + +singleton.addPlugin(ember).addPlugin(vue); +var ember_vue = {}; + +return ember_vue; + +}))); diff --git a/dist/ember,vue/raven.min.js b/dist/ember,vue/raven.min.js new file mode 100644 index 000000000000..78a6c4304518 --- /dev/null +++ b/dist/ember,vue/raven.min.js @@ -0,0 +1,3 @@ +/*! Raven.js 3.22.2 (1b6187b) | github.com/getsentry/raven-js */ +!function(a,b){"object"==typeof exports&&"undefined"!=typeof module?module.exports=b():"function"==typeof define&&define.amd?define(b):a.Raven=b()}(this,function(){"use strict";function a(a,b){return b={exports:{}},a(b,b.exports),b.exports}function b(a){return(b="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(a){return typeof a}:function(a){return a&&"function"==typeof Symbol&&a.constructor===Symbol&&a!==Symbol.prototype?"symbol":typeof a})(a)}function c(a){return"object"===b(a)&&null!==a}function d(a){switch({}.toString.call(a)){case"[object Error]":return!0;case"[object Exception]":return!0;case"[object DOMException]":return!0;default:return a instanceof Error}}function e(a){return l()&&"[object ErrorEvent]"==={}.toString.call(a)}function f(a){return void 0===a}function g(a){return"function"==typeof a}function h(a){return"[object Object]"===Object.prototype.toString.call(a)}function i(a){return"[object String]"===Object.prototype.toString.call(a)}function j(a){return"[object Array]"===Object.prototype.toString.call(a)}function k(a){if(!h(a))return!1;for(var b in a)if(a.hasOwnProperty(b))return!1;return!0}function l(){try{return new ErrorEvent(""),!0}catch(a){return!1}}function m(){if(!("fetch"in P))return!1;try{return new Headers,new Request(""),new Response,!0}catch(a){return!1}}function n(a){function b(b,c){var d=a(b)||b;return c?c(d)||d:d}return b}function o(a,b){var c,d;if(f(a.length))for(c in a)s(a,c)&&b.call(null,c,a[c]);else if(d=a.length)for(c=0;c ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function y(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&i(b))for(c=b.split(/\s+/),f=0;f":"anonymous component")+(a._isVue&&a.$options.__file?" at "+a.$options.__file:"")}function M(a,b){if(b=b||window.Vue,b&&b.config){var c=b.config.errorHandler;b.config.errorHandler=function(b,d,e){var f={};"[object Object]"===Object.prototype.toString.call(d)&&(f.componentName=L(d),f.propsData=d.$options.propsData),"undefined"!=typeof e&&(f.lifecycleHook=e),a.captureException(b,{extra:f}),"function"==typeof c&&c.call(this,b,d,e)}}}var N="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{},O=Object.setPrototypeOf||function(a,b){return a.B=b,a},P=("object"==typeof Reflect&&Reflect.construct||function(a,b,c){var d,e=[null];return e.push.apply(e,b),d=a.bind.apply(a,e),O(new d,c.prototype)},"undefined"!=typeof window?window:"undefined"!=typeof N?N:"undefined"!=typeof self?self:{}),Q={isObject:c,isError:d,isErrorEvent:e,isUndefined:f,isFunction:g,isPlainObject:h,isString:i,isArray:j,isEmptyObject:k,supportsErrorEvent:l,supportsFetch:m,wrappedCallback:n,each:o,objectMerge:p,truncate:r,objectFrozen:q,hasKey:s,joinRegExp:t,urlencode:u,uuid4:w,htmlTreeAsString:x,htmlElementAsString:y,isSameException:B,isSameStacktrace:C,parseUrl:v,fill:D,safeJoin:E},R={collectWindowErrors:!0,debug:!1},S="undefined"!=typeof window?window:"undefined"!=typeof N?N:"undefined"!=typeof self?self:{},T=[].slice,U="?",V=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;R.report=function(){function a(a){f(),l.push(a)}function b(a){for(var b=l.length-1;b>=0;--b)l[b]===a&&l.splice(b,1)}function c(){g(),l=[]}function d(a,b){var c=null;if(!b||R.collectWindowErrors){for(var d in l)if(l.hasOwnProperty(d))try{l[d].apply(null,[a].concat(T.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function e(a,b,c,e,f){var g=null,i=Q.isErrorEvent(f)?f.error:f,k=Q.isErrorEvent(a)?a.message:a;if(o)R.computeStackTrace.augmentStackTraceWithInitialElement(o,b,c,k),h();else if(i&&Q.isError(i))g=R.computeStackTrace(i),d(g,!0);else{var l,m={url:b,line:c,column:e},n=void 0;if("[object String]"==={}.toString.call(k)){var l=k.match(V);l&&(n=l[1],k=l[2])}m.func=U,g={name:n,message:k,url:F(),stack:[m]},d(g,!0)}return!!j&&j.apply(this,arguments)}function f(){k||(j=S.onerror,S.onerror=e,k=!0)}function g(){k&&(S.onerror=j,k=!1,j=void 0)}function h(){var a=o,b=m;m=null,o=null,n=null,d.apply(null,[a,!1].concat(b))}function i(a,b){var c=T.call(arguments,1);if(o){if(n===a)return;h()}var d=R.computeStackTrace(a);if(o=d,n=a,m=c,setTimeout(function(){n===a&&h()},d.incomplete?2e3:0),b!==!1)throw a}var j,k,l=[],m=null,n=null,o=null;return i.subscribe=a,i.unsubscribe=b,i.uninstall=c,i}(),R.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,d,e=/^\s*at (.*?) ?\(((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,f=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|\[native).*?|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,g=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,h=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,i=/\((\S*)(?::(\d+))(?::(\d+))\)/,j=a.stack.split("\n"),k=[],l=(/^(.*) is undefined$/.exec(a.message),0),m=j.length;l eval")>-1;o&&(b=h.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==l||c[5]||"undefined"==typeof a.columnNumber||(k[0].column=a.columnNumber+1),d={url:c[3],func:c[1]||U,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}!d.func&&d.line&&(d.func=U),k.push(d)}return k.length?{name:a.name,message:a.message,url:F(),stack:k}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=U),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,e){for(var f,g,h=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,i=[],j={},k=!1,l=c.caller;l&&!k;l=l.caller)if(l!==d&&l!==R.report){if(g={url:null,func:U,line:null,column:null},l.name?g.func=l.name:(f=h.exec(l.toString()))&&(g.func=f[1]),"undefined"==typeof g.func)try{g.func=f.input.substring(0,f.input.indexOf("{"))}catch(m){}j[""+l]?k=!0:j[""+l]=!0,i.push(g)}e&&i.splice(0,e);var n={name:a.name,message:a.message,url:F(),stack:i};return b(n,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),n}function d(b,d){var e=null;d=null==d?0:+d;try{if(e=a(b))return e}catch(f){if(R.debug)throw f}try{if(e=c(b,d+1))return e}catch(f){if(R.debug)throw f}return{name:b.name,message:b.message,url:F()}}return d.augmentStackTraceWithInitialElement=b,d.computeStackTraceFromStackProp=a,d}();var W=R,X=a(function(a,b){function c(a,b){for(var c=0;c0){var i=c(d,this);~i?d.splice(i+1):d.push(this),~i?f.splice(i,1/0,g):f.push(g),~c(d,h)&&(h=b.call(this,g,h))}else d.push(h);return null==a?h instanceof Error?e(h):h:a.call(this,g,h)}}b=a.exports=d,b.getSerialize=f});G.prototype=new Error,G.prototype.constructor=G;var Y=G,Z=function(a,b,c){var d=a[b],e=a;if(b in a){var f="warn"===b?"warning":b;a[b]=function(){var a=[].slice.call(arguments),g=Q.safeJoin(a," "),h={level:f,logger:"console",extra:{arguments:a}};"assert"===b?a[0]===!1&&(g="Assertion failed: "+(Q.safeJoin(a.slice(1)," ")||"console.assert"),h.extra.arguments=a.slice(1),c&&c(g,h)):c&&c(g,h),d&&Function.prototype.apply.call(d,e,a)}}},$={wrapMethod:Z},_=Q.isError,aa=Q.isObject,ba=Q.isErrorEvent,ca=Q.isUndefined,da=Q.isFunction,ea=Q.isString,fa=Q.isArray,ga=Q.isEmptyObject,ha=Q.each,ia=Q.objectMerge,ja=Q.truncate,ka=Q.objectFrozen,la=Q.hasKey,ma=Q.joinRegExp,na=Q.urlencode,oa=Q.uuid4,pa=Q.htmlTreeAsString,qa=Q.isSameException,ra=Q.isSameStacktrace,sa=Q.parseUrl,ta=Q.fill,ua=Q.supportsFetch,va=$.wrapMethod,wa="source protocol user pass host port path".split(" "),xa=/^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/,ya="undefined"!=typeof window?window:"undefined"!=typeof N?N:"undefined"!=typeof self?self:{},za=ya.document,Aa=ya.navigator;J.prototype={VERSION:"3.22.2",debug:!1,TraceKit:W,config:function(a,b){var c=this;if(c.i)return this.C("error","Error: Raven has already been configured"),c;if(!a)return c;var d=c.m;b&&ha(b,function(a,b){"tags"===a||"extra"===a||"user"===a?c.l[a]=b:d[a]=b}),c.setDSN(a),d.ignoreErrors.push(/^Script error\.?$/),d.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/),d.ignoreErrors=ma(d.ignoreErrors),d.ignoreUrls=!!d.ignoreUrls.length&&ma(d.ignoreUrls),d.whitelistUrls=!!d.whitelistUrls.length&&ma(d.whitelistUrls),d.includePaths=ma(d.includePaths),d.maxBreadcrumbs=Math.max(0,Math.min(d.maxBreadcrumbs||100,100));var e={xhr:!0,console:!0,dom:!0,location:!0,sentry:!0},f=d.autoBreadcrumbs;"[object Object]"==={}.toString.call(f)?f=ia(e,f):f!==!1&&(f=e),d.autoBreadcrumbs=f;var g={tryCatch:!0},h=d.instrument;return"[object Object]"==={}.toString.call(h)?h=ia(g,h):h!==!1&&(h=g),d.instrument=h,W.collectWindowErrors=!!d.collectWindowErrors,c},install:function(){var a=this;return a.isSetup()&&!a.p&&(W.report.subscribe(function(){a.D.apply(a,arguments)}),a.E(),a.m.instrument&&a.m.instrument.tryCatch&&a.F(),a.m.autoBreadcrumbs&&a.G(),a.H(),a.p=!0),Error.stackTraceLimit=a.m.stackTraceLimit,this},setDSN:function(a){var b=this,c=b.I(a),d=c.path.lastIndexOf("/"),e=c.path.substr(1,d);b.J=a,b.j=c.user,b.K=c.pass&&c.pass.substr(1),b.k=c.path.substr(d+1),b.i=b.L(c),b.M=b.i+"/"+e+"api/"+b.k+"/store/",this.A()},context:function(a,b,c){return da(a)&&(c=b||[],b=a,a=void 0),this.wrap(a,b).apply(this,c)},wrap:function(a,b,c){function d(){var d=[],f=arguments.length,g=!a||a&&a.deep!==!1;for(c&&da(c)&&c.apply(this,arguments);f--;)d[f]=g?e.wrap(a,arguments[f]):arguments[f];try{return b.apply(this,d)}catch(h){throw e.N(),e.captureException(h,a),h}}var e=this;if(ca(b)&&!da(a))return a;if(da(a)&&(b=a,a=void 0),!da(b))return b;try{if(b.a)return b;if(b.O)return b.O}catch(f){return b}for(var g in b)la(b,g)&&(d[g]=b[g]);return d.prototype=b.prototype,b.O=d,d.a=!0,d.b=b,d},uninstall:function(){return W.report.uninstall(),this.P(),this.Q(),this.R(),Error.stackTraceLimit=this.q,this.p=!1,this},captureException:function(a,b){b=ia({trimHeadFrames:0},b?b:{});var c=!_(a),d=!ba(a),e=ba(a)&&!a.error;if(c&&d||e)return this.captureMessage(a,ia(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}));ba(a)&&(a=a.error),this.f=a;try{var f=W.computeStackTrace(a);this.S(f,b)}catch(g){if(a!==g)throw g}return this},captureMessage:function(a,b){if(!this.m.ignoreErrors.test||!this.m.ignoreErrors.test(a)){b=b||{};var c,d=ia({message:a+""},b);try{throw new Error(a)}catch(e){c=e}c.name=null;var f=W.computeStackTrace(c),g=fa(f.stack)&&f.stack[1],h=g&&g.url||"";if((!this.m.ignoreUrls.test||!this.m.ignoreUrls.test(h))&&(!this.m.whitelistUrls.test||this.m.whitelistUrls.test(h))){if(this.m.stacktrace||b&&b.stacktrace){b=ia({fingerprint:a,trimHeadFrames:(b.trimHeadFrames||0)+1},b);var i=this.T(f,b);d.stacktrace={frames:i.reverse()}}return this.U(d),this}}},captureBreadcrumb:function(a){var b=ia({timestamp:H()/1e3},a);if(da(this.m.breadcrumbCallback)){var c=this.m.breadcrumbCallback(b);if(aa(c)&&!ga(c))b=c;else if(c===!1)return this}return this.w.push(b),this.w.length>this.m.maxBreadcrumbs&&this.w.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.t.push([a,b]),this.p&&this.H(),this},setUserContext:function(a){return this.l.user=a,this},setExtraContext:function(a){return this.V("extra",a),this},setTagsContext:function(a){return this.V("tags",a),this},clearContext:function(){return this.l={},this},getContext:function(){return JSON.parse(X(this.l))},setEnvironment:function(a){return this.m.environment=a,this},setRelease:function(a){return this.m.release=a,this},setDataCallback:function(a){var b=this.m.dataCallback;return this.m.dataCallback=I(b,a),this},setBreadcrumbCallback:function(a){var b=this.m.breadcrumbCallback;return this.m.breadcrumbCallback=I(b,a),this},setShouldSendCallback:function(a){var b=this.m.shouldSendCallback;return this.m.shouldSendCallback=I(b,a),this},setTransport:function(a){return this.m.transport=a,this},lastException:function(){return this.f},lastEventId:function(){return this.h},isSetup:function(){return!!this.c&&(!!this.i||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.C("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=ya.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(za){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new Y("Missing eventId");var c=a.dsn||this.J;if(!c)throw new Y("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.l.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.L(this.I(c)),h=za.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(za.head||za.body).appendChild(h)}},N:function(){var a=this;this.o+=1,setTimeout(function(){a.o-=1})},W:function(a,b){var c,d;if(this.d){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),za.createEvent?(c=za.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=za.createEventObject(),c.eventType=a);for(d in b)la(b,d)&&(c[d]=b[d]);if(za.createEvent)za.dispatchEvent(c);else try{za.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},X:function(a){var b=this;return function(c){if(b.Y=null,b.x!==c){b.x=c;var d;try{d=pa(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},Z:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.Y;g||a.X("input")(c),clearTimeout(g),a.Y=setTimeout(function(){a.Y=null},b)}}},$:function(a,b){var c=sa(this.y.href),d=sa(b),e=sa(a);this.z=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},E:function(){var a=this;a._=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.a?a._.apply(this.b,arguments):a._.apply(this,arguments)}},P:function(){this._&&(Function.prototype.toString=this._)},F:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.$(b.z,c+""),a.apply(this,arguments)}};ta(history,"pushState",j,d),ta(history,"replaceState",j,d)}if(c.console&&"console"in ya&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};ha(["debug","info","warn","error","log"],function(a,b){va(console,b,k)})}},Q:function(){for(var a;this.v.length;){a=this.v.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},R:function(){for(var a in this.s)this.r[a]=this.s[a]},H:function(){var a=this;ha(this.t,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},I:function(a){var b=xa.exec(a),c={},d=7;try{for(;d--;)c[wa[d]]=b[d]||""}catch(e){throw new Y("Invalid DSN: "+a)}if(c.pass&&!this.m.allowSecretKey)throw new Y("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},L:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},D:function(){this.o||this.S.apply(this,arguments)},S:function(a,b){var c=this.T(a,b);this.W("handle",{stackInfo:a,options:b}),this.ba(a.name,a.message,a.url,a.lineno,c,b)},T:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(ha(a.stack,function(b,e){var f=c.ca(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.w,0)}),this.l.user&&(a.user=this.l.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||ga(a[b]))&&delete a[b]}),da(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!ga(a)&&(!da(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.ia()?void this.C("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() href parsing trick because React Native and other +// environments where DOM might not be available + + +function parseUrl$1(url) { + if (typeof url !== 'string') return {}; + var match = url.match(/^(([^:\/?#]+):)?(\/\/([^\/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?$/); // coerce to undefined values to empty string so we don't get 'undefined' + + var query = match[6] || ''; + var fragment = match[8] || ''; + return { + protocol: match[2], + host: match[4], + path: match[5], + relative: match[5] + query + fragment // everything minus origin + + }; +} + +function uuid4$1() { + var crypto = _window$3.crypto || _window$3.msCrypto; + + if (!isUndefined$1(crypto) && crypto.getRandomValues) { + // Use window.crypto API if available + // eslint-disable-next-line no-undef + var arr = new Uint16Array(8); + crypto.getRandomValues(arr); // set 4 in byte 7 + + arr[3] = arr[3] & 0xfff | 0x4000; // set 2 most significant bits of byte 9 to '10' + + arr[4] = arr[4] & 0x3fff | 0x8000; + + var pad = function pad(num) { + var v = num.toString(16); + + while (v.length < 4) { + v = '0' + v; + } + + return v; + }; + + return pad(arr[0]) + pad(arr[1]) + pad(arr[2]) + pad(arr[3]) + pad(arr[4]) + pad(arr[5]) + pad(arr[6]) + pad(arr[7]); + } else { + // http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/2117523#2117523 + return 'xxxxxxxxxxxx4xxxyxxxxxxxxxxxxxxx'.replace(/[xy]/g, function (c) { + var r = Math.random() * 16 | 0, + v = c === 'x' ? r : r & 0x3 | 0x8; + return v.toString(16); + }); + } +} +/** + * Given a child DOM element, returns a query-selector statement describing that + * and its ancestors + * e.g. [HTMLElement] => body > div > input#foo.btn[name=baz] + * @param elem + * @returns {string} + */ + + +function htmlTreeAsString$1(elem) { + /* eslint no-extra-parens:0*/ + var MAX_TRAVERSE_HEIGHT = 5, + MAX_OUTPUT_LEN = 80, + out = [], + height = 0, + len = 0, + separator = ' > ', + sepLength = separator.length, + nextStr; + + while (elem && height++ < MAX_TRAVERSE_HEIGHT) { + nextStr = htmlElementAsString(elem); // bail out if + // - nextStr is the 'html' element + // - the length of the string that would be created exceeds MAX_OUTPUT_LEN + // (ignore this limit if we are on the first iteration) + + if (nextStr === 'html' || height > 1 && len + out.length * sepLength + nextStr.length >= MAX_OUTPUT_LEN) { + break; + } + + out.push(nextStr); + len += nextStr.length; + elem = elem.parentNode; + } + + return out.reverse().join(separator); +} +/** + * Returns a simple, query-selector representation of a DOM element + * e.g. [HTMLElement] => input#foo.btn[name=baz] + * @param HTMLElement + * @returns {string} + */ + + +function htmlElementAsString(elem) { + var out = [], + className, + classes, + key, + attr, + i; + + if (!elem || !elem.tagName) { + return ''; + } + + out.push(elem.tagName.toLowerCase()); + + if (elem.id) { + out.push('#' + elem.id); + } + + className = elem.className; + + if (className && isString$1(className)) { + classes = className.split(/\s+/); + + for (i = 0; i < classes.length; i++) { + out.push('.' + classes[i]); + } + } + + var attrWhitelist = ['type', 'name', 'title', 'alt']; + + for (i = 0; i < attrWhitelist.length; i++) { + key = attrWhitelist[i]; + attr = elem.getAttribute(key); + + if (attr) { + out.push('[' + key + '="' + attr + '"]'); + } + } + + return out.join(''); +} +/** + * Returns true if either a OR b is truthy, but not both + */ + + +function isOnlyOneTruthy(a, b) { + return !!(!!a ^ !!b); +} +/** + * Returns true if both parameters are undefined + */ + + +function isBothUndefined(a, b) { + return isUndefined$1(a) && isUndefined$1(b); +} +/** + * Returns true if the two input exception interfaces have the same content + */ + + +function isSameException$1(ex1, ex2) { + if (isOnlyOneTruthy(ex1, ex2)) return false; + ex1 = ex1.values[0]; + ex2 = ex2.values[0]; + if (ex1.type !== ex2.type || ex1.value !== ex2.value) return false; // in case both stacktraces are undefined, we can't decide so default to false + + if (isBothUndefined(ex1.stacktrace, ex2.stacktrace)) return false; + return isSameStacktrace$1(ex1.stacktrace, ex2.stacktrace); +} +/** + * Returns true if the two input stack trace interfaces have the same content + */ + + +function isSameStacktrace$1(stack1, stack2) { + if (isOnlyOneTruthy(stack1, stack2)) return false; + var frames1 = stack1.frames; + var frames2 = stack2.frames; // Exit early if frame count differs + + if (frames1.length !== frames2.length) return false; // Iterate through every frame; bail out if anything differs + + var a, b; + + for (var i = 0; i < frames1.length; i++) { + a = frames1[i]; + b = frames2[i]; + if (a.filename !== b.filename || a.lineno !== b.lineno || a.colno !== b.colno || a['function'] !== b['function']) return false; + } + + return true; +} +/** + * Polyfill a method + * @param obj object e.g. `document` + * @param name method name present on object e.g. `addEventListener` + * @param replacement replacement function + * @param track {optional} record instrumentation to an array + */ + + +function fill$1(obj, name, replacement, track) { + var orig = obj[name]; + obj[name] = replacement(orig); + obj[name].__raven__ = true; + obj[name].__orig__ = orig; + + if (track) { + track.push([obj, name, orig]); + } +} +/** + * Join values in array + * @param input array of values to be joined together + * @param delimiter string to be placed in-between values + * @returns {string} + */ + + +function safeJoin(input, delimiter) { + if (!isArray$1(input)) return ''; + var output = []; + + for (var i = 0; i < input.length; i++) { + try { + output.push(String(input[i])); + } catch (e) { + output.push('[value cannot be serialized]'); + } + } + + return output.join(delimiter); +} + +var utils = { + isObject: isObject$1, + isError: isError$1, + isErrorEvent: isErrorEvent$1, + isUndefined: isUndefined$1, + isFunction: isFunction$1, + isPlainObject: isPlainObject, + isString: isString$1, + isArray: isArray$1, + isEmptyObject: isEmptyObject$1, + supportsErrorEvent: supportsErrorEvent, + supportsFetch: supportsFetch$1, + wrappedCallback: wrappedCallback, + each: each$1, + objectMerge: objectMerge$1, + truncate: truncate$1, + objectFrozen: objectFrozen$1, + hasKey: hasKey$1, + joinRegExp: joinRegExp$1, + urlencode: urlencode$1, + uuid4: uuid4$1, + htmlTreeAsString: htmlTreeAsString$1, + htmlElementAsString: htmlElementAsString, + isSameException: isSameException$1, + isSameStacktrace: isSameStacktrace$1, + parseUrl: parseUrl$1, + fill: fill$1, + safeJoin: safeJoin +}; + +/* + TraceKit - Cross brower stack traces + + This was originally forked from github.com/occ/TraceKit, but has since been + largely re-written and is now maintained as part of raven-js. Tests for + this are in test/vendor. + + MIT license +*/ + +var TraceKit = { + collectWindowErrors: true, + debug: false +}; // This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) + +var _window$2 = typeof window !== 'undefined' ? window : typeof commonjsGlobal !== 'undefined' ? commonjsGlobal : typeof self !== 'undefined' ? self : {}; // global reference to slice + + +var _slice = [].slice; +var UNKNOWN_FUNCTION = '?'; // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error#Error_types + +var ERROR_TYPES_RE = /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/; + +function getLocationHref() { + if (typeof document === 'undefined' || document.location == null) return ''; + return document.location.href; +} +/** + * TraceKit.report: cross-browser processing of unhandled exceptions + * + * Syntax: + * TraceKit.report.subscribe(function(stackInfo) { ... }) + * TraceKit.report.unsubscribe(function(stackInfo) { ... }) + * TraceKit.report(exception) + * try { ...code... } catch(ex) { TraceKit.report(ex); } + * + * Supports: + * - Firefox: full stack trace with line numbers, plus column number + * on top frame; column number is not guaranteed + * - Opera: full stack trace with line and column numbers + * - Chrome: full stack trace with line and column numbers + * - Safari: line and column number for the top frame only; some frames + * may be missing, and column number is not guaranteed + * - IE: line and column number for the top frame only; some frames + * may be missing, and column number is not guaranteed + * + * In theory, TraceKit should work on all of the following versions: + * - IE5.5+ (only 8.0 tested) + * - Firefox 0.9+ (only 3.5+ tested) + * - Opera 7+ (only 10.50 tested; versions 9 and earlier may require + * Exceptions Have Stacktrace to be enabled in opera:config) + * - Safari 3+ (only 4+ tested) + * - Chrome 1+ (only 5+ tested) + * - Konqueror 3.5+ (untested) + * + * Requires TraceKit.computeStackTrace. + * + * Tries to catch all unhandled exceptions and report them to the + * subscribed handlers. Please note that TraceKit.report will rethrow the + * exception. This is REQUIRED in order to get a useful stack trace in IE. + * If the exception does not reach the top of the browser, you will only + * get a stack trace from the point where TraceKit.report was called. + * + * Handlers receive a stackInfo object as described in the + * TraceKit.computeStackTrace docs. + */ + + +TraceKit.report = function reportModuleWrapper() { + var handlers = [], + lastArgs = null, + lastException = null, + lastExceptionStack = null; + /** + * Add a crash handler. + * @param {Function} handler + */ + + function subscribe(handler) { + installGlobalHandler(); + handlers.push(handler); + } + /** + * Remove a crash handler. + * @param {Function} handler + */ + + + function unsubscribe(handler) { + for (var i = handlers.length - 1; i >= 0; --i) { + if (handlers[i] === handler) { + handlers.splice(i, 1); + } + } + } + /** + * Remove all crash handlers. + */ + + + function unsubscribeAll() { + uninstallGlobalHandler(); + handlers = []; + } + /** + * Dispatch stack information to all handlers. + * @param {Object.} stack + */ + + + function notifyHandlers(stack, isWindowError) { + var exception = null; + + if (isWindowError && !TraceKit.collectWindowErrors) { + return; + } + + for (var i in handlers) { + if (handlers.hasOwnProperty(i)) { + try { + handlers[i].apply(null, [stack].concat(_slice.call(arguments, 2))); + } catch (inner) { + exception = inner; + } + } + } + + if (exception) { + throw exception; + } + } + + var _oldOnerrorHandler, _onErrorHandlerInstalled; + /** + * Ensures all global unhandled exceptions are recorded. + * Supported by Gecko and IE. + * @param {string} msg Error message. + * @param {string} url URL of script that generated the exception. + * @param {(number|string)} lineNo The line number at which the error + * occurred. + * @param {?(number|string)} colNo The column number at which the error + * occurred. + * @param {?Error} ex The actual Error object. + */ + + + function traceKitWindowOnError(msg, url, lineNo, colNo, ex) { + var stack = null; // If 'ex' is ErrorEvent, get real Error from inside + + var exception = utils.isErrorEvent(ex) ? ex.error : ex; // If 'msg' is ErrorEvent, get real message from inside + + var message = utils.isErrorEvent(msg) ? msg.message : msg; + + if (lastExceptionStack) { + TraceKit.computeStackTrace.augmentStackTraceWithInitialElement(lastExceptionStack, url, lineNo, message); + processLastException(); + } else if (exception && utils.isError(exception)) { + // non-string `exception` arg; attempt to extract stack trace + // New chrome and blink send along a real error object + // Let's just report that like a normal error. + // See: https://mikewest.org/2013/08/debugging-runtime-errors-with-window-onerror + stack = TraceKit.computeStackTrace(exception); + notifyHandlers(stack, true); + } else { + var location = { + url: url, + line: lineNo, + column: colNo + }; + var name = undefined; + var groups; + + if ({}.toString.call(message) === '[object String]') { + var groups = message.match(ERROR_TYPES_RE); + + if (groups) { + name = groups[1]; + message = groups[2]; + } + } + + location.func = UNKNOWN_FUNCTION; + stack = { + name: name, + message: message, + url: getLocationHref(), + stack: [location] + }; + notifyHandlers(stack, true); + } + + if (_oldOnerrorHandler) { + return _oldOnerrorHandler.apply(this, arguments); + } + + return false; + } + + function installGlobalHandler() { + if (_onErrorHandlerInstalled) { + return; + } + + _oldOnerrorHandler = _window$2.onerror; + _window$2.onerror = traceKitWindowOnError; + _onErrorHandlerInstalled = true; + } + + function uninstallGlobalHandler() { + if (!_onErrorHandlerInstalled) { + return; + } + + _window$2.onerror = _oldOnerrorHandler; + _onErrorHandlerInstalled = false; + _oldOnerrorHandler = undefined; + } + + function processLastException() { + var _lastExceptionStack = lastExceptionStack, + _lastArgs = lastArgs; + lastArgs = null; + lastExceptionStack = null; + lastException = null; + notifyHandlers.apply(null, [_lastExceptionStack, false].concat(_lastArgs)); + } + /** + * Reports an unhandled Error to TraceKit. + * @param {Error} ex + * @param {?boolean} rethrow If false, do not re-throw the exception. + * Only used for window.onerror to not cause an infinite loop of + * rethrowing. + */ + + + function report(ex, rethrow) { + var args = _slice.call(arguments, 1); + + if (lastExceptionStack) { + if (lastException === ex) { + return; // already caught by an inner catch block, ignore + } else { + processLastException(); + } + } + + var stack = TraceKit.computeStackTrace(ex); + lastExceptionStack = stack; + lastException = ex; + lastArgs = args; // If the stack trace is incomplete, wait for 2 seconds for + // slow slow IE to see if onerror occurs or not before reporting + // this exception; otherwise, we will end up with an incomplete + // stack trace + + setTimeout(function () { + if (lastException === ex) { + processLastException(); + } + }, stack.incomplete ? 2000 : 0); + + if (rethrow !== false) { + throw ex; // re-throw to propagate to the top level (and cause window.onerror) + } + } + + report.subscribe = subscribe; + report.unsubscribe = unsubscribe; + report.uninstall = unsubscribeAll; + return report; +}(); +/** + * TraceKit.computeStackTrace: cross-browser stack traces in JavaScript + * + * Syntax: + * s = TraceKit.computeStackTrace(exception) // consider using TraceKit.report instead (see below) + * Returns: + * s.name - exception name + * s.message - exception message + * s.stack[i].url - JavaScript or HTML file URL + * s.stack[i].func - function name, or empty for anonymous functions (if guessing did not work) + * s.stack[i].args - arguments passed to the function, if known + * s.stack[i].line - line number, if known + * s.stack[i].column - column number, if known + * + * Supports: + * - Firefox: full stack trace with line numbers and unreliable column + * number on top frame + * - Opera 10: full stack trace with line and column numbers + * - Opera 9-: full stack trace with line numbers + * - Chrome: full stack trace with line and column numbers + * - Safari: line and column number for the topmost stacktrace element + * only + * - IE: no line numbers whatsoever + * + * Tries to guess names of anonymous functions by looking for assignments + * in the source code. In IE and Safari, we have to guess source file names + * by searching for function bodies inside all page scripts. This will not + * work for scripts that are loaded cross-domain. + * Here be dragons: some function names may be guessed incorrectly, and + * duplicate functions may be mismatched. + * + * TraceKit.computeStackTrace should only be used for tracing purposes. + * Logging of unhandled exceptions should be done with TraceKit.report, + * which builds on top of TraceKit.computeStackTrace and provides better + * IE support by utilizing the window.onerror event to retrieve information + * about the top of the stack. + * + * Note: In IE and Safari, no stack trace is recorded on the Error object, + * so computeStackTrace instead walks its *own* chain of callers. + * This means that: + * * in Safari, some methods may be missing from the stack trace; + * * in IE, the topmost function in the stack trace will always be the + * caller of computeStackTrace. + * + * This is okay for tracing (because you are likely to be calling + * computeStackTrace from the function you want to be the topmost element + * of the stack trace anyway), but not okay for logging unhandled + * exceptions (because your catch block will likely be far away from the + * inner function that actually caused the exception). + * + */ + + +TraceKit.computeStackTrace = function computeStackTraceWrapper() { + // Contents of Exception in various browsers. + // + // SAFARI: + // ex.message = Can't find variable: qq + // ex.line = 59 + // ex.sourceId = 580238192 + // ex.sourceURL = http://... + // ex.expressionBeginOffset = 96 + // ex.expressionCaretOffset = 98 + // ex.expressionEndOffset = 98 + // ex.name = ReferenceError + // + // FIREFOX: + // ex.message = qq is not defined + // ex.fileName = http://... + // ex.lineNumber = 59 + // ex.columnNumber = 69 + // ex.stack = ...stack trace... (see the example below) + // ex.name = ReferenceError + // + // CHROME: + // ex.message = qq is not defined + // ex.name = ReferenceError + // ex.type = not_defined + // ex.arguments = ['aa'] + // ex.stack = ...stack trace... + // + // INTERNET EXPLORER: + // ex.message = ... + // ex.name = ReferenceError + // + // OPERA: + // ex.message = ...message... (see the example below) + // ex.name = ReferenceError + // ex.opera#sourceloc = 11 (pretty much useless, duplicates the info in ex.message) + // ex.stacktrace = n/a; see 'opera:config#UserPrefs|Exceptions Have Stacktrace' + + /** + * Computes stack trace information from the stack property. + * Chrome and Gecko use this property. + * @param {Error} ex + * @return {?Object.} Stack trace information. + */ + function computeStackTraceFromStackProp(ex) { + if (typeof ex.stack === 'undefined' || !ex.stack) return; + var chrome = /^\s*at (.*?) ?\(((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i, + gecko = /^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|\[native).*?|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i, + winjs = /^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i, + // Used to additionally parse URL/line/column from eval frames + geckoEval = /(\S+) line (\d+)(?: > eval line \d+)* > eval/i, + chromeEval = /\((\S*)(?::(\d+))(?::(\d+))\)/, + lines = ex.stack.split('\n'), + stack = [], + submatch, + parts, + element, + reference = /^(.*) is undefined$/.exec(ex.message); + + for (var i = 0, j = lines.length; i < j; ++i) { + if (parts = chrome.exec(lines[i])) { + var isNative = parts[2] && parts[2].indexOf('native') === 0; // start of line + + var isEval = parts[2] && parts[2].indexOf('eval') === 0; // start of line + + if (isEval && (submatch = chromeEval.exec(parts[2]))) { + // throw out eval line/column and use top-most line/column number + parts[2] = submatch[1]; // url + + parts[3] = submatch[2]; // line + + parts[4] = submatch[3]; // column + } + + element = { + url: !isNative ? parts[2] : null, + func: parts[1] || UNKNOWN_FUNCTION, + args: isNative ? [parts[2]] : [], + line: parts[3] ? +parts[3] : null, + column: parts[4] ? +parts[4] : null + }; + } else if (parts = winjs.exec(lines[i])) { + element = { + url: parts[2], + func: parts[1] || UNKNOWN_FUNCTION, + args: [], + line: +parts[3], + column: parts[4] ? +parts[4] : null + }; + } else if (parts = gecko.exec(lines[i])) { + var isEval = parts[3] && parts[3].indexOf(' > eval') > -1; + + if (isEval && (submatch = geckoEval.exec(parts[3]))) { + // throw out eval line/column and use top-most line number + parts[3] = submatch[1]; + parts[4] = submatch[2]; + parts[5] = null; // no column when eval + } else if (i === 0 && !parts[5] && typeof ex.columnNumber !== 'undefined') { + // FireFox uses this awesome columnNumber property for its top frame + // Also note, Firefox's column number is 0-based and everything else expects 1-based, + // so adding 1 + // NOTE: this hack doesn't work if top-most frame is eval + stack[0].column = ex.columnNumber + 1; + } + + element = { + url: parts[3], + func: parts[1] || UNKNOWN_FUNCTION, + args: parts[2] ? parts[2].split(',') : [], + line: parts[4] ? +parts[4] : null, + column: parts[5] ? +parts[5] : null + }; + } else { + continue; + } + + if (!element.func && element.line) { + element.func = UNKNOWN_FUNCTION; + } + + stack.push(element); + } + + if (!stack.length) { + return null; + } + + return { + name: ex.name, + message: ex.message, + url: getLocationHref(), + stack: stack + }; + } + /** + * Adds information about the first frame to incomplete stack traces. + * Safari and IE require this to get complete data on the first frame. + * @param {Object.} stackInfo Stack trace information from + * one of the compute* methods. + * @param {string} url The URL of the script that caused an error. + * @param {(number|string)} lineNo The line number of the script that + * caused an error. + * @param {string=} message The error generated by the browser, which + * hopefully contains the name of the object that caused the error. + * @return {boolean} Whether or not the stack information was + * augmented. + */ + + + function augmentStackTraceWithInitialElement(stackInfo, url, lineNo, message) { + var initial = { + url: url, + line: lineNo + }; + + if (initial.url && initial.line) { + stackInfo.incomplete = false; + + if (!initial.func) { + initial.func = UNKNOWN_FUNCTION; + } + + if (stackInfo.stack.length > 0) { + if (stackInfo.stack[0].url === initial.url) { + if (stackInfo.stack[0].line === initial.line) { + return false; // already in stack trace + } else if (!stackInfo.stack[0].line && stackInfo.stack[0].func === initial.func) { + stackInfo.stack[0].line = initial.line; + return false; + } + } + } + + stackInfo.stack.unshift(initial); + stackInfo.partial = true; + return true; + } else { + stackInfo.incomplete = true; + } + + return false; + } + /** + * Computes stack trace information by walking the arguments.caller + * chain at the time the exception occurred. This will cause earlier + * frames to be missed but is the only way to get any stack trace in + * Safari and IE. The top frame is restored by + * {@link augmentStackTraceWithInitialElement}. + * @param {Error} ex + * @return {?Object.} Stack trace information. + */ + + + function computeStackTraceByWalkingCallerChain(ex, depth) { + var functionName = /function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i, + stack = [], + funcs = {}, + recursion = false, + parts, + item; + + for (var curr = computeStackTraceByWalkingCallerChain.caller; curr && !recursion; curr = curr.caller) { + if (curr === computeStackTrace || curr === TraceKit.report) { + // console.log('skipping internal function'); + continue; + } + + item = { + url: null, + func: UNKNOWN_FUNCTION, + line: null, + column: null + }; + + if (curr.name) { + item.func = curr.name; + } else if (parts = functionName.exec(curr.toString())) { + item.func = parts[1]; + } + + if (typeof item.func === 'undefined') { + try { + item.func = parts.input.substring(0, parts.input.indexOf('{')); + } catch (e) {} + } + + if (funcs['' + curr]) { + recursion = true; + } else { + funcs['' + curr] = true; + } + + stack.push(item); + } + + if (depth) { + // console.log('depth is ' + depth); + // console.log('stack is ' + stack.length); + stack.splice(0, depth); + } + + var result = { + name: ex.name, + message: ex.message, + url: getLocationHref(), + stack: stack + }; + augmentStackTraceWithInitialElement(result, ex.sourceURL || ex.fileName, ex.line || ex.lineNumber, ex.message || ex.description); + return result; + } + /** + * Computes a stack trace for an exception. + * @param {Error} ex + * @param {(string|number)=} depth + */ + + + function computeStackTrace(ex, depth) { + var stack = null; + depth = depth == null ? 0 : +depth; + + try { + stack = computeStackTraceFromStackProp(ex); + + if (stack) { + return stack; + } + } catch (e) { + if (TraceKit.debug) { + throw e; + } + } + + try { + stack = computeStackTraceByWalkingCallerChain(ex, depth + 1); + + if (stack) { + return stack; + } + } catch (e) { + if (TraceKit.debug) { + throw e; + } + } + + return { + name: ex.name, + message: ex.message, + url: getLocationHref() + }; + } + + computeStackTrace.augmentStackTraceWithInitialElement = augmentStackTraceWithInitialElement; + computeStackTrace.computeStackTraceFromStackProp = computeStackTraceFromStackProp; + return computeStackTrace; +}(); + +var tracekit = TraceKit; + +var stringify_1 = createCommonjsModule(function (module, exports) { + /* + json-stringify-safe + Like JSON.stringify, but doesn't throw on circular references. + + Originally forked from https://github.com/isaacs/json-stringify-safe + version 5.0.1 on 3/8/2017 and modified to handle Errors serialization + and IE8 compatibility. Tests for this are in test/vendor. + + ISC license: https://github.com/isaacs/json-stringify-safe/blob/master/LICENSE + */ + exports = module.exports = stringify; + exports.getSerialize = serializer; + + function indexOf(haystack, needle) { + for (var i = 0; i < haystack.length; ++i) { + if (haystack[i] === needle) return i; + } + + return -1; + } + + function stringify(obj, replacer, spaces, cycleReplacer) { + return JSON.stringify(obj, serializer(replacer, cycleReplacer), spaces); + } // https://github.com/ftlabs/js-abbreviate/blob/fa709e5f139e7770a71827b1893f22418097fbda/index.js#L95-L106 + + + function stringifyError(value) { + var err = { + // These properties are implemented as magical getters and don't show up in for in + stack: value.stack, + message: value.message, + name: value.name + }; + + for (var i in value) { + if (Object.prototype.hasOwnProperty.call(value, i)) { + err[i] = value[i]; + } + } + + return err; + } + + function serializer(replacer, cycleReplacer) { + var stack = []; + var keys = []; + + if (cycleReplacer == null) { + cycleReplacer = function cycleReplacer(key, value) { + if (stack[0] === value) { + return '[Circular ~]'; + } + + return '[Circular ~.' + keys.slice(0, indexOf(stack, value)).join('.') + ']'; + }; + } + + return function (key, value) { + if (stack.length > 0) { + var thisPos = indexOf(stack, this); + ~thisPos ? stack.splice(thisPos + 1) : stack.push(this); + ~thisPos ? keys.splice(thisPos, Infinity, key) : keys.push(key); + + if (~indexOf(stack, value)) { + value = cycleReplacer.call(this, key, value); + } + } else { + stack.push(value); + } + + return replacer == null ? value instanceof Error ? stringifyError(value) : value : replacer.call(this, key, value); + }; + } +}); +var stringify_2 = stringify_1.getSerialize; + +function RavenConfigError(message) { + this.name = 'RavenConfigError'; + this.message = message; +} + +RavenConfigError.prototype = new Error(); +RavenConfigError.prototype.constructor = RavenConfigError; +var configError = RavenConfigError; + +var wrapMethod = function wrapMethod(console, level, callback) { + var originalConsoleLevel = console[level]; + var originalConsole = console; + + if (!(level in console)) { + return; + } + + var sentryLevel = level === 'warn' ? 'warning' : level; + + console[level] = function () { + var args = [].slice.call(arguments); + var msg = utils.safeJoin(args, ' '); + var data = { + level: sentryLevel, + logger: 'console', + extra: { + arguments: args + } + }; + + if (level === 'assert') { + if (args[0] === false) { + // Default browsers message + msg = 'Assertion failed: ' + (utils.safeJoin(args.slice(1), ' ') || 'console.assert'); + data.extra.arguments = args.slice(1); + callback && callback(msg, data); + } + } else { + callback && callback(msg, data); + } // this fails for some browsers. :( + + + if (originalConsoleLevel) { + // IE9 doesn't allow calling apply on console functions directly + // See: https://stackoverflow.com/questions/5472938/does-ie9-support-console-log-and-is-it-a-real-function#answer-5473193 + Function.prototype.apply.call(originalConsoleLevel, originalConsole, args); + } + }; +}; + +var console$1 = { + wrapMethod: wrapMethod +}; + +/*global XDomainRequest:false */ + +var isError = utils.isError; +var isObject = utils.isObject; +var isErrorEvent = utils.isErrorEvent; +var isUndefined = utils.isUndefined; +var isFunction = utils.isFunction; +var isString = utils.isString; +var isArray = utils.isArray; +var isEmptyObject = utils.isEmptyObject; +var each = utils.each; +var objectMerge = utils.objectMerge; +var truncate = utils.truncate; +var objectFrozen = utils.objectFrozen; +var hasKey = utils.hasKey; +var joinRegExp = utils.joinRegExp; +var urlencode = utils.urlencode; +var uuid4 = utils.uuid4; +var htmlTreeAsString = utils.htmlTreeAsString; +var isSameException = utils.isSameException; +var isSameStacktrace = utils.isSameStacktrace; +var parseUrl = utils.parseUrl; +var fill = utils.fill; +var supportsFetch = utils.supportsFetch; +var wrapConsoleMethod = console$1.wrapMethod; +var dsnKeys = 'source protocol user pass host port path'.split(' '); +var dsnPattern = /^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/; + +function now() { + return +new Date(); +} // This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) + + +var _window$1 = typeof window !== 'undefined' ? window : typeof commonjsGlobal !== 'undefined' ? commonjsGlobal : typeof self !== 'undefined' ? self : {}; + +var _document = _window$1.document; +var _navigator = _window$1.navigator; + +function keepOriginalCallback(original, callback) { + return isFunction(callback) ? function (data) { + return callback(data, original); + } : callback; +} // First, check for JSON support +// If there is no JSON, we no-op the core features of Raven +// since JSON is required to encode the payload + + +function Raven$1() { + this._hasJSON = !!(_typeof(JSON) === 'object' && JSON.stringify); // Raven can run in contexts where there's no document (react-native) + + this._hasDocument = !isUndefined(_document); + this._hasNavigator = !isUndefined(_navigator); + this._lastCapturedException = null; + this._lastData = null; + this._lastEventId = null; + this._globalServer = null; + this._globalKey = null; + this._globalProject = null; + this._globalContext = {}; + this._globalOptions = { + // SENTRY_RELEASE can be injected by https://github.com/getsentry/sentry-webpack-plugin + release: _window$1.SENTRY_RELEASE && _window$1.SENTRY_RELEASE.id, + logger: 'javascript', + ignoreErrors: [], + ignoreUrls: [], + whitelistUrls: [], + includePaths: [], + headers: null, + collectWindowErrors: true, + maxMessageLength: 0, + // By default, truncates URL values to 250 chars + maxUrlLength: 250, + stackTraceLimit: 50, + autoBreadcrumbs: true, + instrument: true, + sampleRate: 1 + }; + this._fetchDefaults = { + method: 'POST', + keepalive: true, + referrerPolicy: 'origin' + }; + this._ignoreOnError = 0; + this._isRavenInstalled = false; + this._originalErrorStackTraceLimit = Error.stackTraceLimit; // capture references to window.console *and* all its methods first + // before the console plugin has a chance to monkey patch + + this._originalConsole = _window$1.console || {}; + this._originalConsoleMethods = {}; + this._plugins = []; + this._startTime = now(); + this._wrappedBuiltIns = []; + this._breadcrumbs = []; + this._lastCapturedEvent = null; + this._keypressTimeout; + this._location = _window$1.location; + this._lastHref = this._location && this._location.href; + + this._resetBackoff(); // eslint-disable-next-line guard-for-in + + + for (var method in this._originalConsole) { + this._originalConsoleMethods[method] = this._originalConsole[method]; + } +} +/* + * The core Raven singleton + * + * @this {Raven} + */ + + +Raven$1.prototype = { + // Hardcode version string so that raven source can be loaded directly via + // webpack (using a build step causes webpack #1617). Grunt verifies that + // this value matches package.json during build. + // See: https://github.com/getsentry/raven-js/issues/465 + VERSION: '3.22.2', + debug: false, + TraceKit: tracekit, + // alias to TraceKit + + /* + * Configure Raven with a DSN and extra options + * + * @param {string} dsn The public Sentry DSN + * @param {object} options Set of global options [optional] + * @return {Raven} + */ + config: function config(dsn, options) { + var self = this; + + if (self._globalServer) { + this._logDebug('error', 'Error: Raven has already been configured'); + + return self; + } + + if (!dsn) return self; + var globalOptions = self._globalOptions; // merge in options + + if (options) { + each(options, function (key, value) { + // tags and extra are special and need to be put into context + if (key === 'tags' || key === 'extra' || key === 'user') { + self._globalContext[key] = value; + } else { + globalOptions[key] = value; + } + }); + } + + self.setDSN(dsn); // "Script error." is hard coded into browsers for errors that it can't read. + // this is the result of a script being pulled in from an external domain and CORS. + + globalOptions.ignoreErrors.push(/^Script error\.?$/); + globalOptions.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/); // join regexp rules into one big rule + + globalOptions.ignoreErrors = joinRegExp(globalOptions.ignoreErrors); + globalOptions.ignoreUrls = globalOptions.ignoreUrls.length ? joinRegExp(globalOptions.ignoreUrls) : false; + globalOptions.whitelistUrls = globalOptions.whitelistUrls.length ? joinRegExp(globalOptions.whitelistUrls) : false; + globalOptions.includePaths = joinRegExp(globalOptions.includePaths); + globalOptions.maxBreadcrumbs = Math.max(0, Math.min(globalOptions.maxBreadcrumbs || 100, 100)); // default and hard limit is 100 + + var autoBreadcrumbDefaults = { + xhr: true, + console: true, + dom: true, + location: true, + sentry: true + }; + var autoBreadcrumbs = globalOptions.autoBreadcrumbs; + + if ({}.toString.call(autoBreadcrumbs) === '[object Object]') { + autoBreadcrumbs = objectMerge(autoBreadcrumbDefaults, autoBreadcrumbs); + } else if (autoBreadcrumbs !== false) { + autoBreadcrumbs = autoBreadcrumbDefaults; + } + + globalOptions.autoBreadcrumbs = autoBreadcrumbs; + var instrumentDefaults = { + tryCatch: true + }; + var instrument = globalOptions.instrument; + + if ({}.toString.call(instrument) === '[object Object]') { + instrument = objectMerge(instrumentDefaults, instrument); + } else if (instrument !== false) { + instrument = instrumentDefaults; + } + + globalOptions.instrument = instrument; + tracekit.collectWindowErrors = !!globalOptions.collectWindowErrors; // return for chaining + + return self; + }, + + /* + * Installs a global window.onerror error handler + * to capture and report uncaught exceptions. + * At this point, install() is required to be called due + * to the way TraceKit is set up. + * + * @return {Raven} + */ + install: function install() { + var self = this; + + if (self.isSetup() && !self._isRavenInstalled) { + tracekit.report.subscribe(function () { + self._handleOnErrorStackInfo.apply(self, arguments); + }); + + self._patchFunctionToString(); + + if (self._globalOptions.instrument && self._globalOptions.instrument.tryCatch) { + self._instrumentTryCatch(); + } + + if (self._globalOptions.autoBreadcrumbs) self._instrumentBreadcrumbs(); // Install all of the plugins + + self._drainPlugins(); + + self._isRavenInstalled = true; + } + + Error.stackTraceLimit = self._globalOptions.stackTraceLimit; + return this; + }, + + /* + * Set the DSN (can be called multiple time unlike config) + * + * @param {string} dsn The public Sentry DSN + */ + setDSN: function setDSN(dsn) { + var self = this, + uri = self._parseDSN(dsn), + lastSlash = uri.path.lastIndexOf('/'), + path = uri.path.substr(1, lastSlash); + + self._dsn = dsn; + self._globalKey = uri.user; + self._globalSecret = uri.pass && uri.pass.substr(1); + self._globalProject = uri.path.substr(lastSlash + 1); + self._globalServer = self._getGlobalServer(uri); + self._globalEndpoint = self._globalServer + '/' + path + 'api/' + self._globalProject + '/store/'; // Reset backoff state since we may be pointing at a + // new project/server + + this._resetBackoff(); + }, + + /* + * Wrap code within a context so Raven can capture errors + * reliably across domains that is executed immediately. + * + * @param {object} options A specific set of options for this context [optional] + * @param {function} func The callback to be immediately executed within the context + * @param {array} args An array of arguments to be called with the callback [optional] + */ + context: function context(options, func, args) { + if (isFunction(options)) { + args = func || []; + func = options; + options = undefined; + } + + return this.wrap(options, func).apply(this, args); + }, + + /* + * Wrap code within a context and returns back a new function to be executed + * + * @param {object} options A specific set of options for this context [optional] + * @param {function} func The function to be wrapped in a new context + * @param {function} func A function to call before the try/catch wrapper [optional, private] + * @return {function} The newly wrapped functions with a context + */ + wrap: function wrap(options, func, _before) { + var self = this; // 1 argument has been passed, and it's not a function + // so just return it + + if (isUndefined(func) && !isFunction(options)) { + return options; + } // options is optional + + + if (isFunction(options)) { + func = options; + options = undefined; + } // At this point, we've passed along 2 arguments, and the second one + // is not a function either, so we'll just return the second argument. + + + if (!isFunction(func)) { + return func; + } // We don't wanna wrap it twice! + + + try { + if (func.__raven__) { + return func; + } // If this has already been wrapped in the past, return that + + + if (func.__raven_wrapper__) { + return func.__raven_wrapper__; + } + } catch (e) { + // Just accessing custom props in some Selenium environments + // can cause a "Permission denied" exception (see raven-js#495). + // Bail on wrapping and return the function as-is (defers to window.onerror). + return func; + } + + function wrapped() { + var args = [], + i = arguments.length, + deep = !options || options && options.deep !== false; + + if (_before && isFunction(_before)) { + _before.apply(this, arguments); + } // Recursively wrap all of a function's arguments that are + // functions themselves. + + + while (i--) { + args[i] = deep ? self.wrap(options, arguments[i]) : arguments[i]; + } + + try { + // Attempt to invoke user-land function + // NOTE: If you are a Sentry user, and you are seeing this stack frame, it + // means Raven caught an error invoking your application code. This is + // expected behavior and NOT indicative of a bug with Raven.js. + return func.apply(this, args); + } catch (e) { + self._ignoreNextOnError(); + + self.captureException(e, options); + throw e; + } + } // copy over properties of the old function + + + for (var property in func) { + if (hasKey(func, property)) { + wrapped[property] = func[property]; + } + } + + wrapped.prototype = func.prototype; + func.__raven_wrapper__ = wrapped; // Signal that this function has been wrapped/filled already + // for both debugging and to prevent it to being wrapped/filled twice + + wrapped.__raven__ = true; + wrapped.__orig__ = func; + return wrapped; + }, + + /* + * Uninstalls the global error handler. + * + * @return {Raven} + */ + uninstall: function uninstall() { + tracekit.report.uninstall(); + + this._unpatchFunctionToString(); + + this._restoreBuiltIns(); + + this._restoreConsole(); + + Error.stackTraceLimit = this._originalErrorStackTraceLimit; + this._isRavenInstalled = false; + return this; + }, + + /* + * Manually capture an exception and send it over to Sentry + * + * @param {error} ex An exception to be logged + * @param {object} options A specific set of options for this error [optional] + * @return {Raven} + */ + captureException: function captureException(ex, options) { + options = objectMerge({ + trimHeadFrames: 0 + }, options ? options : {}); // Cases for sending ex as a message, rather than an exception + + var isNotError = !isError(ex); + var isNotErrorEvent = !isErrorEvent(ex); + var isErrorEventWithoutError = isErrorEvent(ex) && !ex.error; + + if (isNotError && isNotErrorEvent || isErrorEventWithoutError) { + return this.captureMessage(ex, objectMerge(options, { + stacktrace: true, + // if we fall back to captureMessage, default to attempting a new trace + trimHeadFrames: options.trimHeadFrames + 1 + })); + } // Get actual Error from ErrorEvent + + + if (isErrorEvent(ex)) ex = ex.error; // Store the raw exception object for potential debugging and introspection + + this._lastCapturedException = ex; // TraceKit.report will re-raise any exception passed to it, + // which means you have to wrap it in try/catch. Instead, we + // can wrap it here and only re-raise if TraceKit.report + // raises an exception different from the one we asked to + // report on. + + try { + var stack = tracekit.computeStackTrace(ex); + + this._handleStackInfo(stack, options); + } catch (ex1) { + if (ex !== ex1) { + throw ex1; + } + } + + return this; + }, + + /* + * Manually send a message to Sentry + * + * @param {string} msg A plain message to be captured in Sentry + * @param {object} options A specific set of options for this message [optional] + * @return {Raven} + */ + captureMessage: function captureMessage(msg, options) { + // config() automagically converts ignoreErrors from a list to a RegExp so we need to test for an + // early call; we'll error on the side of logging anything called before configuration since it's + // probably something you should see: + if (!!this._globalOptions.ignoreErrors.test && this._globalOptions.ignoreErrors.test(msg)) { + return; + } + + options = options || {}; + var data = objectMerge({ + message: msg + '' // Make sure it's actually a string + + }, options); + var ex; // Generate a "synthetic" stack trace from this point. + // NOTE: If you are a Sentry user, and you are seeing this stack frame, it is NOT indicative + // of a bug with Raven.js. Sentry generates synthetic traces either by configuration, + // or if it catches a thrown object without a "stack" property. + + try { + throw new Error(msg); + } catch (ex1) { + ex = ex1; + } // null exception name so `Error` isn't prefixed to msg + + + ex.name = null; + var stack = tracekit.computeStackTrace(ex); // stack[0] is `throw new Error(msg)` call itself, we are interested in the frame that was just before that, stack[1] + + var initialCall = isArray(stack.stack) && stack.stack[1]; + var fileurl = initialCall && initialCall.url || ''; + + if (!!this._globalOptions.ignoreUrls.test && this._globalOptions.ignoreUrls.test(fileurl)) { + return; + } + + if (!!this._globalOptions.whitelistUrls.test && !this._globalOptions.whitelistUrls.test(fileurl)) { + return; + } + + if (this._globalOptions.stacktrace || options && options.stacktrace) { + options = objectMerge({ + // fingerprint on msg, not stack trace (legacy behavior, could be + // revisited) + fingerprint: msg, + // since we know this is a synthetic trace, the top N-most frames + // MUST be from Raven.js, so mark them as in_app later by setting + // trimHeadFrames + trimHeadFrames: (options.trimHeadFrames || 0) + 1 + }, options); + + var frames = this._prepareFrames(stack, options); + + data.stacktrace = { + // Sentry expects frames oldest to newest + frames: frames.reverse() + }; + } // Fire away! + + + this._send(data); + + return this; + }, + captureBreadcrumb: function captureBreadcrumb(obj) { + var crumb = objectMerge({ + timestamp: now() / 1000 + }, obj); + + if (isFunction(this._globalOptions.breadcrumbCallback)) { + var result = this._globalOptions.breadcrumbCallback(crumb); + + if (isObject(result) && !isEmptyObject(result)) { + crumb = result; + } else if (result === false) { + return this; + } + } + + this._breadcrumbs.push(crumb); + + if (this._breadcrumbs.length > this._globalOptions.maxBreadcrumbs) { + this._breadcrumbs.shift(); + } + + return this; + }, + addPlugin: function addPlugin(plugin + /*arg1, arg2, ... argN*/ + ) { + var pluginArgs = [].slice.call(arguments, 1); + + this._plugins.push([plugin, pluginArgs]); + + if (this._isRavenInstalled) { + this._drainPlugins(); + } + + return this; + }, + + /* + * Set/clear a user to be sent along with the payload. + * + * @param {object} user An object representing user data [optional] + * @return {Raven} + */ + setUserContext: function setUserContext(user) { + // Intentionally do not merge here since that's an unexpected behavior. + this._globalContext.user = user; + return this; + }, + + /* + * Merge extra attributes to be sent along with the payload. + * + * @param {object} extra An object representing extra data [optional] + * @return {Raven} + */ + setExtraContext: function setExtraContext(extra) { + this._mergeContext('extra', extra); + + return this; + }, + + /* + * Merge tags to be sent along with the payload. + * + * @param {object} tags An object representing tags [optional] + * @return {Raven} + */ + setTagsContext: function setTagsContext(tags) { + this._mergeContext('tags', tags); + + return this; + }, + + /* + * Clear all of the context. + * + * @return {Raven} + */ + clearContext: function clearContext() { + this._globalContext = {}; + return this; + }, + + /* + * Get a copy of the current context. This cannot be mutated. + * + * @return {object} copy of context + */ + getContext: function getContext() { + // lol javascript + return JSON.parse(stringify_1(this._globalContext)); + }, + + /* + * Set environment of application + * + * @param {string} environment Typically something like 'production'. + * @return {Raven} + */ + setEnvironment: function setEnvironment(environment) { + this._globalOptions.environment = environment; + return this; + }, + + /* + * Set release version of application + * + * @param {string} release Typically something like a git SHA to identify version + * @return {Raven} + */ + setRelease: function setRelease(release) { + this._globalOptions.release = release; + return this; + }, + + /* + * Set the dataCallback option + * + * @param {function} callback The callback to run which allows the + * data blob to be mutated before sending + * @return {Raven} + */ + setDataCallback: function setDataCallback(callback) { + var original = this._globalOptions.dataCallback; + this._globalOptions.dataCallback = keepOriginalCallback(original, callback); + return this; + }, + + /* + * Set the breadcrumbCallback option + * + * @param {function} callback The callback to run which allows filtering + * or mutating breadcrumbs + * @return {Raven} + */ + setBreadcrumbCallback: function setBreadcrumbCallback(callback) { + var original = this._globalOptions.breadcrumbCallback; + this._globalOptions.breadcrumbCallback = keepOriginalCallback(original, callback); + return this; + }, + + /* + * Set the shouldSendCallback option + * + * @param {function} callback The callback to run which allows + * introspecting the blob before sending + * @return {Raven} + */ + setShouldSendCallback: function setShouldSendCallback(callback) { + var original = this._globalOptions.shouldSendCallback; + this._globalOptions.shouldSendCallback = keepOriginalCallback(original, callback); + return this; + }, + + /** + * Override the default HTTP transport mechanism that transmits data + * to the Sentry server. + * + * @param {function} transport Function invoked instead of the default + * `makeRequest` handler. + * + * @return {Raven} + */ + setTransport: function setTransport(transport) { + this._globalOptions.transport = transport; + return this; + }, + + /* + * Get the latest raw exception that was captured by Raven. + * + * @return {error} + */ + lastException: function lastException() { + return this._lastCapturedException; + }, + + /* + * Get the last event id + * + * @return {string} + */ + lastEventId: function lastEventId() { + return this._lastEventId; + }, + + /* + * Determine if Raven is setup and ready to go. + * + * @return {boolean} + */ + isSetup: function isSetup() { + if (!this._hasJSON) return false; // needs JSON support + + if (!this._globalServer) { + if (!this.ravenNotConfiguredError) { + this.ravenNotConfiguredError = true; + + this._logDebug('error', 'Error: Raven has not been configured.'); + } + + return false; + } + + return true; + }, + afterLoad: function afterLoad() { + // TODO: remove window dependence? + // Attempt to initialize Raven on load + var RavenConfig = _window$1.RavenConfig; + + if (RavenConfig) { + this.config(RavenConfig.dsn, RavenConfig.config).install(); + } + }, + showReportDialog: function showReportDialog(options) { + if (!_document // doesn't work without a document (React native) + ) return; + options = options || {}; + var lastEventId = options.eventId || this.lastEventId(); + + if (!lastEventId) { + throw new configError('Missing eventId'); + } + + var dsn = options.dsn || this._dsn; + + if (!dsn) { + throw new configError('Missing DSN'); + } + + var encode = encodeURIComponent; + var qs = ''; + qs += '?eventId=' + encode(lastEventId); + qs += '&dsn=' + encode(dsn); + var user = options.user || this._globalContext.user; + + if (user) { + if (user.name) qs += '&name=' + encode(user.name); + if (user.email) qs += '&email=' + encode(user.email); + } + + var globalServer = this._getGlobalServer(this._parseDSN(dsn)); + + var script = _document.createElement('script'); + + script.async = true; + script.src = globalServer + '/api/embed/error-page/' + qs; + + (_document.head || _document.body).appendChild(script); + }, + + /**** Private functions ****/ + _ignoreNextOnError: function _ignoreNextOnError() { + var self = this; + this._ignoreOnError += 1; + setTimeout(function () { + // onerror should trigger before setTimeout + self._ignoreOnError -= 1; + }); + }, + _triggerEvent: function _triggerEvent(eventType, options) { + // NOTE: `event` is a native browser thing, so let's avoid conflicting wiht it + var evt, key; + if (!this._hasDocument) return; + options = options || {}; + eventType = 'raven' + eventType.substr(0, 1).toUpperCase() + eventType.substr(1); + + if (_document.createEvent) { + evt = _document.createEvent('HTMLEvents'); + evt.initEvent(eventType, true, true); + } else { + evt = _document.createEventObject(); + evt.eventType = eventType; + } + + for (key in options) { + if (hasKey(options, key)) { + evt[key] = options[key]; + } + } + + if (_document.createEvent) { + // IE9 if standards + _document.dispatchEvent(evt); + } else { + // IE8 regardless of Quirks or Standards + // IE9 if quirks + try { + _document.fireEvent('on' + evt.eventType.toLowerCase(), evt); + } catch (e) {// Do nothing + } + } + }, + + /** + * Wraps addEventListener to capture UI breadcrumbs + * @param evtName the event name (e.g. "click") + * @returns {Function} + * @private + */ + _breadcrumbEventHandler: function _breadcrumbEventHandler(evtName) { + var self = this; + return function (evt) { + // reset keypress timeout; e.g. triggering a 'click' after + // a 'keypress' will reset the keypress debounce so that a new + // set of keypresses can be recorded + self._keypressTimeout = null; // It's possible this handler might trigger multiple times for the same + // event (e.g. event propagation through node ancestors). Ignore if we've + // already captured the event. + + if (self._lastCapturedEvent === evt) return; + self._lastCapturedEvent = evt; // try/catch both: + // - accessing evt.target (see getsentry/raven-js#838, #768) + // - `htmlTreeAsString` because it's complex, and just accessing the DOM incorrectly + // can throw an exception in some circumstances. + + var target; + + try { + target = htmlTreeAsString(evt.target); + } catch (e) { + target = ''; + } + + self.captureBreadcrumb({ + category: 'ui.' + evtName, + // e.g. ui.click, ui.input + message: target + }); + }; + }, + + /** + * Wraps addEventListener to capture keypress UI events + * @returns {Function} + * @private + */ + _keypressEventHandler: function _keypressEventHandler() { + var self = this, + debounceDuration = 1000; // milliseconds + // TODO: if somehow user switches keypress target before + // debounce timeout is triggered, we will only capture + // a single breadcrumb from the FIRST target (acceptable?) + + return function (evt) { + var target; + + try { + target = evt.target; + } catch (e) { + // just accessing event properties can throw an exception in some rare circumstances + // see: https://github.com/getsentry/raven-js/issues/838 + return; + } + + var tagName = target && target.tagName; // only consider keypress events on actual input elements + // this will disregard keypresses targeting body (e.g. tabbing + // through elements, hotkeys, etc) + + if (!tagName || tagName !== 'INPUT' && tagName !== 'TEXTAREA' && !target.isContentEditable) return; // record first keypress in a series, but ignore subsequent + // keypresses until debounce clears + + var timeout = self._keypressTimeout; + + if (!timeout) { + self._breadcrumbEventHandler('input')(evt); + } + + clearTimeout(timeout); + self._keypressTimeout = setTimeout(function () { + self._keypressTimeout = null; + }, debounceDuration); + }; + }, + + /** + * Captures a breadcrumb of type "navigation", normalizing input URLs + * @param to the originating URL + * @param from the target URL + * @private + */ + _captureUrlChange: function _captureUrlChange(from, to) { + var parsedLoc = parseUrl(this._location.href); + var parsedTo = parseUrl(to); + var parsedFrom = parseUrl(from); // because onpopstate only tells you the "new" (to) value of location.href, and + // not the previous (from) value, we need to track the value of the current URL + // state ourselves + + this._lastHref = to; // Use only the path component of the URL if the URL matches the current + // document (almost all the time when using pushState) + + if (parsedLoc.protocol === parsedTo.protocol && parsedLoc.host === parsedTo.host) to = parsedTo.relative; + if (parsedLoc.protocol === parsedFrom.protocol && parsedLoc.host === parsedFrom.host) from = parsedFrom.relative; + this.captureBreadcrumb({ + category: 'navigation', + data: { + to: to, + from: from + } + }); + }, + _patchFunctionToString: function _patchFunctionToString() { + var self = this; + self._originalFunctionToString = Function.prototype.toString; // eslint-disable-next-line no-extend-native + + Function.prototype.toString = function () { + if (typeof this === 'function' && this.__raven__) { + return self._originalFunctionToString.apply(this.__orig__, arguments); + } + + return self._originalFunctionToString.apply(this, arguments); + }; + }, + _unpatchFunctionToString: function _unpatchFunctionToString() { + if (this._originalFunctionToString) { + // eslint-disable-next-line no-extend-native + Function.prototype.toString = this._originalFunctionToString; + } + }, + + /** + * Wrap timer functions and event targets to catch errors and provide + * better metadata. + */ + _instrumentTryCatch: function _instrumentTryCatch() { + var self = this; + var wrappedBuiltIns = self._wrappedBuiltIns; + + function wrapTimeFn(orig) { + return function (fn, t) { + // preserve arity + // Make a copy of the arguments to prevent deoptimization + // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments + var args = new Array(arguments.length); + + for (var i = 0; i < args.length; ++i) { + args[i] = arguments[i]; + } + + var originalCallback = args[0]; + + if (isFunction(originalCallback)) { + args[0] = self.wrap(originalCallback); + } // IE < 9 doesn't support .call/.apply on setInterval/setTimeout, but it + // also supports only two arguments and doesn't care what this is, so we + // can just call the original function directly. + + + if (orig.apply) { + return orig.apply(this, args); + } else { + return orig(args[0], args[1]); + } + }; + } + + var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; + + function wrapEventTarget(global) { + var proto = _window$1[global] && _window$1[global].prototype; + + if (proto && proto.hasOwnProperty && proto.hasOwnProperty('addEventListener')) { + fill(proto, 'addEventListener', function (orig) { + return function (evtName, fn, capture, secure) { + // preserve arity + try { + if (fn && fn.handleEvent) { + fn.handleEvent = self.wrap(fn.handleEvent); + } + } catch (err) {} // can sometimes get 'Permission denied to access property "handle Event' + // More breadcrumb DOM capture ... done here and not in `_instrumentBreadcrumbs` + // so that we don't have more than one wrapper function + + + var before, clickHandler, keypressHandler; + + if (autoBreadcrumbs && autoBreadcrumbs.dom && (global === 'EventTarget' || global === 'Node')) { + // NOTE: generating multiple handlers per addEventListener invocation, should + // revisit and verify we can just use one (almost certainly) + clickHandler = self._breadcrumbEventHandler('click'); + keypressHandler = self._keypressEventHandler(); + + before = function before(evt) { + // need to intercept every DOM event in `before` argument, in case that + // same wrapped method is re-used for different events (e.g. mousemove THEN click) + // see #724 + if (!evt) return; + var eventType; + + try { + eventType = evt.type; + } catch (e) { + // just accessing event properties can throw an exception in some rare circumstances + // see: https://github.com/getsentry/raven-js/issues/838 + return; + } + + if (eventType === 'click') return clickHandler(evt);else if (eventType === 'keypress') return keypressHandler(evt); + }; + } + + return orig.call(this, evtName, self.wrap(fn, undefined, before), capture, secure); + }; + }, wrappedBuiltIns); + fill(proto, 'removeEventListener', function (orig) { + return function (evt, fn, capture, secure) { + try { + fn = fn && (fn.__raven_wrapper__ ? fn.__raven_wrapper__ : fn); + } catch (e) {// ignore, accessing __raven_wrapper__ will throw in some Selenium environments + } + + return orig.call(this, evt, fn, capture, secure); + }; + }, wrappedBuiltIns); + } + } + + fill(_window$1, 'setTimeout', wrapTimeFn, wrappedBuiltIns); + fill(_window$1, 'setInterval', wrapTimeFn, wrappedBuiltIns); + + if (_window$1.requestAnimationFrame) { + fill(_window$1, 'requestAnimationFrame', function (orig) { + return function (cb) { + return orig(self.wrap(cb)); + }; + }, wrappedBuiltIns); + } // event targets borrowed from bugsnag-js: + // https://github.com/bugsnag/bugsnag-js/blob/master/src/bugsnag.js#L666 + + + var eventTargets = ['EventTarget', 'Window', 'Node', 'ApplicationCache', 'AudioTrackList', 'ChannelMergerNode', 'CryptoOperation', 'EventSource', 'FileReader', 'HTMLUnknownElement', 'IDBDatabase', 'IDBRequest', 'IDBTransaction', 'KeyOperation', 'MediaController', 'MessagePort', 'ModalWindow', 'Notification', 'SVGElementInstance', 'Screen', 'TextTrack', 'TextTrackCue', 'TextTrackList', 'WebSocket', 'WebSocketWorker', 'Worker', 'XMLHttpRequest', 'XMLHttpRequestEventTarget', 'XMLHttpRequestUpload']; + + for (var i = 0; i < eventTargets.length; i++) { + wrapEventTarget(eventTargets[i]); + } + }, + + /** + * Instrument browser built-ins w/ breadcrumb capturing + * - XMLHttpRequests + * - DOM interactions (click/typing) + * - window.location changes + * - console + * + * Can be disabled or individually configured via the `autoBreadcrumbs` config option + */ + _instrumentBreadcrumbs: function _instrumentBreadcrumbs() { + var self = this; + var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; + var wrappedBuiltIns = self._wrappedBuiltIns; + + function wrapProp(prop, xhr) { + if (prop in xhr && isFunction(xhr[prop])) { + fill(xhr, prop, function (orig) { + return self.wrap(orig); + }); // intentionally don't track filled methods on XHR instances + } + } + + if (autoBreadcrumbs.xhr && 'XMLHttpRequest' in _window$1) { + var xhrproto = XMLHttpRequest.prototype; + fill(xhrproto, 'open', function (origOpen) { + return function (method, url) { + // preserve arity + // if Sentry key appears in URL, don't capture + if (isString(url) && url.indexOf(self._globalKey) === -1) { + this.__raven_xhr = { + method: method, + url: url, + status_code: null + }; + } + + return origOpen.apply(this, arguments); + }; + }, wrappedBuiltIns); + fill(xhrproto, 'send', function (origSend) { + return function () { + // preserve arity + var xhr = this; + + function onreadystatechangeHandler() { + if (xhr.__raven_xhr && xhr.readyState === 4) { + try { + // touching statusCode in some platforms throws + // an exception + xhr.__raven_xhr.status_code = xhr.status; + } catch (e) { + /* do nothing */ + } + + self.captureBreadcrumb({ + type: 'http', + category: 'xhr', + data: xhr.__raven_xhr + }); + } + } + + var props = ['onload', 'onerror', 'onprogress']; + + for (var j = 0; j < props.length; j++) { + wrapProp(props[j], xhr); + } + + if ('onreadystatechange' in xhr && isFunction(xhr.onreadystatechange)) { + fill(xhr, 'onreadystatechange', function (orig) { + return self.wrap(orig, undefined, onreadystatechangeHandler); + } + /* intentionally don't track this instrumentation */ + ); + } else { + // if onreadystatechange wasn't actually set by the page on this xhr, we + // are free to set our own and capture the breadcrumb + xhr.onreadystatechange = onreadystatechangeHandler; + } + + return origSend.apply(this, arguments); + }; + }, wrappedBuiltIns); + } + + if (autoBreadcrumbs.xhr && supportsFetch()) { + fill(_window$1, 'fetch', function (origFetch) { + return function () { + // preserve arity + // Make a copy of the arguments to prevent deoptimization + // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments + var args = new Array(arguments.length); + + for (var i = 0; i < args.length; ++i) { + args[i] = arguments[i]; + } + + var fetchInput = args[0]; + var method = 'GET'; + var url; + + if (typeof fetchInput === 'string') { + url = fetchInput; + } else if ('Request' in _window$1 && fetchInput instanceof _window$1.Request) { + url = fetchInput.url; + + if (fetchInput.method) { + method = fetchInput.method; + } + } else { + url = '' + fetchInput; + } // if Sentry key appears in URL, don't capture, as it's our own request + + + if (url.indexOf(self._globalKey) !== -1) { + return origFetch.apply(this, args); + } + + if (args[1] && args[1].method) { + method = args[1].method; + } + + var fetchData = { + method: method, + url: url, + status_code: null + }; + return origFetch.apply(this, args).then(function (response) { + fetchData.status_code = response.status; + self.captureBreadcrumb({ + type: 'http', + category: 'fetch', + data: fetchData + }); + return response; + }); + }; + }, wrappedBuiltIns); + } // Capture breadcrumbs from any click that is unhandled / bubbled up all the way + // to the document. Do this before we instrument addEventListener. + + + if (autoBreadcrumbs.dom && this._hasDocument) { + if (_document.addEventListener) { + _document.addEventListener('click', self._breadcrumbEventHandler('click'), false); + + _document.addEventListener('keypress', self._keypressEventHandler(), false); + } else { + // IE8 Compatibility + _document.attachEvent('onclick', self._breadcrumbEventHandler('click')); + + _document.attachEvent('onkeypress', self._keypressEventHandler()); + } + } // record navigation (URL) changes + // NOTE: in Chrome App environment, touching history.pushState, *even inside + // a try/catch block*, will cause Chrome to output an error to console.error + // borrowed from: https://github.com/angular/angular.js/pull/13945/files + + + var chrome = _window$1.chrome; + var isChromePackagedApp = chrome && chrome.app && chrome.app.runtime; + var hasPushAndReplaceState = !isChromePackagedApp && _window$1.history && history.pushState && history.replaceState; + + if (autoBreadcrumbs.location && hasPushAndReplaceState) { + // TODO: remove onpopstate handler on uninstall() + var oldOnPopState = _window$1.onpopstate; + + _window$1.onpopstate = function () { + var currentHref = self._location.href; + + self._captureUrlChange(self._lastHref, currentHref); + + if (oldOnPopState) { + return oldOnPopState.apply(this, arguments); + } + }; + + var historyReplacementFunction = function historyReplacementFunction(origHistFunction) { + // note history.pushState.length is 0; intentionally not declaring + // params to preserve 0 arity + return function () + /* state, title, url */ + { + var url = arguments.length > 2 ? arguments[2] : undefined; // url argument is optional + + if (url) { + // coerce to string (this is what pushState does) + self._captureUrlChange(self._lastHref, url + ''); + } + + return origHistFunction.apply(this, arguments); + }; + }; + + fill(history, 'pushState', historyReplacementFunction, wrappedBuiltIns); + fill(history, 'replaceState', historyReplacementFunction, wrappedBuiltIns); + } + + if (autoBreadcrumbs.console && 'console' in _window$1 && console.log) { + // console + var consoleMethodCallback = function consoleMethodCallback(msg, data) { + self.captureBreadcrumb({ + message: msg, + level: data.level, + category: 'console' + }); + }; + + each(['debug', 'info', 'warn', 'error', 'log'], function (_, level) { + wrapConsoleMethod(console, level, consoleMethodCallback); + }); + } + }, + _restoreBuiltIns: function _restoreBuiltIns() { + // restore any wrapped builtins + var builtin; + + while (this._wrappedBuiltIns.length) { + builtin = this._wrappedBuiltIns.shift(); + var obj = builtin[0], + name = builtin[1], + orig = builtin[2]; + obj[name] = orig; + } + }, + _restoreConsole: function _restoreConsole() { + // eslint-disable-next-line guard-for-in + for (var method in this._originalConsoleMethods) { + this._originalConsole[method] = this._originalConsoleMethods[method]; + } + }, + _drainPlugins: function _drainPlugins() { + var self = this; // FIX ME TODO + + each(this._plugins, function (_, plugin) { + var installer = plugin[0]; + var args = plugin[1]; + installer.apply(self, [self].concat(args)); + }); + }, + _parseDSN: function _parseDSN(str) { + var m = dsnPattern.exec(str), + dsn = {}, + i = 7; + + try { + while (i--) { + dsn[dsnKeys[i]] = m[i] || ''; + } + } catch (e) { + throw new configError('Invalid DSN: ' + str); + } + + if (dsn.pass && !this._globalOptions.allowSecretKey) { + throw new configError('Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key'); + } + + return dsn; + }, + _getGlobalServer: function _getGlobalServer(uri) { + // assemble the endpoint from the uri pieces + var globalServer = '//' + uri.host + (uri.port ? ':' + uri.port : ''); + + if (uri.protocol) { + globalServer = uri.protocol + ':' + globalServer; + } + + return globalServer; + }, + _handleOnErrorStackInfo: function _handleOnErrorStackInfo() { + // if we are intentionally ignoring errors via onerror, bail out + if (!this._ignoreOnError) { + this._handleStackInfo.apply(this, arguments); + } + }, + _handleStackInfo: function _handleStackInfo(stackInfo, options) { + var frames = this._prepareFrames(stackInfo, options); + + this._triggerEvent('handle', { + stackInfo: stackInfo, + options: options + }); + + this._processException(stackInfo.name, stackInfo.message, stackInfo.url, stackInfo.lineno, frames, options); + }, + _prepareFrames: function _prepareFrames(stackInfo, options) { + var self = this; + var frames = []; + + if (stackInfo.stack && stackInfo.stack.length) { + each(stackInfo.stack, function (i, stack) { + var frame = self._normalizeFrame(stack, stackInfo.url); + + if (frame) { + frames.push(frame); + } + }); // e.g. frames captured via captureMessage throw + + if (options && options.trimHeadFrames) { + for (var j = 0; j < options.trimHeadFrames && j < frames.length; j++) { + frames[j].in_app = false; + } + } + } + + frames = frames.slice(0, this._globalOptions.stackTraceLimit); + return frames; + }, + _normalizeFrame: function _normalizeFrame(frame, stackInfoUrl) { + // normalize the frames data + var normalized = { + filename: frame.url, + lineno: frame.line, + colno: frame.column, + function: frame.func || '?' + }; // Case when we don't have any information about the error + // E.g. throwing a string or raw object, instead of an `Error` in Firefox + // Generating synthetic error doesn't add any value here + // + // We should probably somehow let a user know that they should fix their code + + if (!frame.url) { + normalized.filename = stackInfoUrl; // fallback to whole stacks url from onerror handler + } + + normalized.in_app = !( // determine if an exception came from outside of our app + // first we check the global includePaths list. + !!this._globalOptions.includePaths.test && !this._globalOptions.includePaths.test(normalized.filename) || // Now we check for fun, if the function name is Raven or TraceKit + /(Raven|TraceKit)\./.test(normalized['function']) || // finally, we do a last ditch effort and check for raven.min.js + /raven\.(min\.)?js$/.test(normalized.filename)); + return normalized; + }, + _processException: function _processException(type, message, fileurl, lineno, frames, options) { + var prefixedMessage = (type ? type + ': ' : '') + (message || ''); + + if (!!this._globalOptions.ignoreErrors.test && (this._globalOptions.ignoreErrors.test(message) || this._globalOptions.ignoreErrors.test(prefixedMessage))) { + return; + } + + var stacktrace; + + if (frames && frames.length) { + fileurl = frames[0].filename || fileurl; // Sentry expects frames oldest to newest + // and JS sends them as newest to oldest + + frames.reverse(); + stacktrace = { + frames: frames + }; + } else if (fileurl) { + stacktrace = { + frames: [{ + filename: fileurl, + lineno: lineno, + in_app: true + }] + }; + } + + if (!!this._globalOptions.ignoreUrls.test && this._globalOptions.ignoreUrls.test(fileurl)) { + return; + } + + if (!!this._globalOptions.whitelistUrls.test && !this._globalOptions.whitelistUrls.test(fileurl)) { + return; + } + + var data = objectMerge({ + // sentry.interfaces.Exception + exception: { + values: [{ + type: type, + value: message, + stacktrace: stacktrace + }] + }, + culprit: fileurl + }, options); // Fire away! + + this._send(data); + }, + _trimPacket: function _trimPacket(data) { + // For now, we only want to truncate the two different messages + // but this could/should be expanded to just trim everything + var max = this._globalOptions.maxMessageLength; + + if (data.message) { + data.message = truncate(data.message, max); + } + + if (data.exception) { + var exception = data.exception.values[0]; + exception.value = truncate(exception.value, max); + } + + var request = data.request; + + if (request) { + if (request.url) { + request.url = truncate(request.url, this._globalOptions.maxUrlLength); + } + + if (request.Referer) { + request.Referer = truncate(request.Referer, this._globalOptions.maxUrlLength); + } + } + + if (data.breadcrumbs && data.breadcrumbs.values) this._trimBreadcrumbs(data.breadcrumbs); + return data; + }, + + /** + * Truncate breadcrumb values (right now just URLs) + */ + _trimBreadcrumbs: function _trimBreadcrumbs(breadcrumbs) { + // known breadcrumb properties with urls + // TODO: also consider arbitrary prop values that start with (https?)?:// + var urlProps = ['to', 'from', 'url'], + urlProp, + crumb, + data; + + for (var i = 0; i < breadcrumbs.values.length; ++i) { + crumb = breadcrumbs.values[i]; + if (!crumb.hasOwnProperty('data') || !isObject(crumb.data) || objectFrozen(crumb.data)) continue; + data = objectMerge({}, crumb.data); + + for (var j = 0; j < urlProps.length; ++j) { + urlProp = urlProps[j]; + + if (data.hasOwnProperty(urlProp) && data[urlProp]) { + data[urlProp] = truncate(data[urlProp], this._globalOptions.maxUrlLength); + } + } + + breadcrumbs.values[i].data = data; + } + }, + _getHttpData: function _getHttpData() { + if (!this._hasNavigator && !this._hasDocument) return; + var httpData = {}; + + if (this._hasNavigator && _navigator.userAgent) { + httpData.headers = { + 'User-Agent': navigator.userAgent + }; + } // Check in `window` instead of `document`, as we may be in ServiceWorker environment + + + if (_window$1.location && _window$1.location.href) { + httpData.url = _window$1.location.href; + } + + if (this._hasDocument && _document.referrer) { + if (!httpData.headers) httpData.headers = {}; + httpData.headers.Referer = _document.referrer; + } + + return httpData; + }, + _resetBackoff: function _resetBackoff() { + this._backoffDuration = 0; + this._backoffStart = null; + }, + _shouldBackoff: function _shouldBackoff() { + return this._backoffDuration && now() - this._backoffStart < this._backoffDuration; + }, + + /** + * Returns true if the in-process data payload matches the signature + * of the previously-sent data + * + * NOTE: This has to be done at this level because TraceKit can generate + * data from window.onerror WITHOUT an exception object (IE8, IE9, + * other old browsers). This can take the form of an "exception" + * data object with a single frame (derived from the onerror args). + */ + _isRepeatData: function _isRepeatData(current) { + var last = this._lastData; + if (!last || current.message !== last.message || // defined for captureMessage + current.culprit !== last.culprit // defined for captureException/onerror + ) return false; // Stacktrace interface (i.e. from captureMessage) + + if (current.stacktrace || last.stacktrace) { + return isSameStacktrace(current.stacktrace, last.stacktrace); + } else if (current.exception || last.exception) { + // Exception interface (i.e. from captureException/onerror) + return isSameException(current.exception, last.exception); + } + + return true; + }, + _setBackoffState: function _setBackoffState(request) { + // If we are already in a backoff state, don't change anything + if (this._shouldBackoff()) { + return; + } + + var status = request.status; // 400 - project_id doesn't exist or some other fatal + // 401 - invalid/revoked dsn + // 429 - too many requests + + if (!(status === 400 || status === 401 || status === 429)) return; + var retry; + + try { + // If Retry-After is not in Access-Control-Expose-Headers, most + // browsers will throw an exception trying to access it + if (supportsFetch()) { + retry = request.headers.get('Retry-After'); + } else { + retry = request.getResponseHeader('Retry-After'); + } // Retry-After is returned in seconds + + + retry = parseInt(retry, 10) * 1000; + } catch (e) { + /* eslint no-empty:0 */ + } + + this._backoffDuration = retry ? // If Sentry server returned a Retry-After value, use it + retry : // Otherwise, double the last backoff duration (starts at 1 sec) + this._backoffDuration * 2 || 1000; + this._backoffStart = now(); + }, + _send: function _send(data) { + var globalOptions = this._globalOptions; + + var baseData = { + project: this._globalProject, + logger: globalOptions.logger, + platform: 'javascript' + }, + httpData = this._getHttpData(); + + if (httpData) { + baseData.request = httpData; + } // HACK: delete `trimHeadFrames` to prevent from appearing in outbound payload + + + if (data.trimHeadFrames) delete data.trimHeadFrames; + data = objectMerge(baseData, data); // Merge in the tags and extra separately since objectMerge doesn't handle a deep merge + + data.tags = objectMerge(objectMerge({}, this._globalContext.tags), data.tags); + data.extra = objectMerge(objectMerge({}, this._globalContext.extra), data.extra); // Send along our own collected metadata with extra + + data.extra['session:duration'] = now() - this._startTime; + + if (this._breadcrumbs && this._breadcrumbs.length > 0) { + // intentionally make shallow copy so that additions + // to breadcrumbs aren't accidentally sent in this request + data.breadcrumbs = { + values: [].slice.call(this._breadcrumbs, 0) + }; + } + + if (this._globalContext.user) { + // sentry.interfaces.User + data.user = this._globalContext.user; + } // Include the environment if it's defined in globalOptions + + + if (globalOptions.environment) data.environment = globalOptions.environment; // Include the release if it's defined in globalOptions + + if (globalOptions.release) data.release = globalOptions.release; // Include server_name if it's defined in globalOptions + + if (globalOptions.serverName) data.server_name = globalOptions.serverName; // Cleanup empty properties before sending them to the server + + Object.keys(data).forEach(function (key) { + if (data[key] == null || data[key] === '' || isEmptyObject(data[key])) { + delete data[key]; + } + }); + + if (isFunction(globalOptions.dataCallback)) { + data = globalOptions.dataCallback(data) || data; + } // Why?????????? + + + if (!data || isEmptyObject(data)) { + return; + } // Check if the request should be filtered or not + + + if (isFunction(globalOptions.shouldSendCallback) && !globalOptions.shouldSendCallback(data)) { + return; + } // Backoff state: Sentry server previously responded w/ an error (e.g. 429 - too many requests), + // so drop requests until "cool-off" period has elapsed. + + + if (this._shouldBackoff()) { + this._logDebug('warn', 'Raven dropped error due to backoff: ', data); + + return; + } + + if (typeof globalOptions.sampleRate === 'number') { + if (Math.random() < globalOptions.sampleRate) { + this._sendProcessedPayload(data); + } + } else { + this._sendProcessedPayload(data); + } + }, + _getUuid: function _getUuid() { + return uuid4(); + }, + _sendProcessedPayload: function _sendProcessedPayload(data, callback) { + var self = this; + var globalOptions = this._globalOptions; + if (!this.isSetup()) return; // Try and clean up the packet before sending by truncating long values + + data = this._trimPacket(data); // ideally duplicate error testing should occur *before* dataCallback/shouldSendCallback, + // but this would require copying an un-truncated copy of the data packet, which can be + // arbitrarily deep (extra_data) -- could be worthwhile? will revisit + + if (!this._globalOptions.allowDuplicates && this._isRepeatData(data)) { + this._logDebug('warn', 'Raven dropped repeat event: ', data); + + return; + } // Send along an event_id if not explicitly passed. + // This event_id can be used to reference the error within Sentry itself. + // Set lastEventId after we know the error should actually be sent + + + this._lastEventId = data.event_id || (data.event_id = this._getUuid()); // Store outbound payload after trim + + this._lastData = data; + + this._logDebug('debug', 'Raven about to send:', data); + + var auth = { + sentry_version: '7', + sentry_client: 'raven-js/' + this.VERSION, + sentry_key: this._globalKey + }; + + if (this._globalSecret) { + auth.sentry_secret = this._globalSecret; + } + + var exception = data.exception && data.exception.values[0]; // only capture 'sentry' breadcrumb is autoBreadcrumbs is truthy + + if (this._globalOptions.autoBreadcrumbs && this._globalOptions.autoBreadcrumbs.sentry) { + this.captureBreadcrumb({ + category: 'sentry', + message: exception ? (exception.type ? exception.type + ': ' : '') + exception.value : data.message, + event_id: data.event_id, + level: data.level || 'error' // presume error unless specified + + }); + } + + var url = this._globalEndpoint; + + (globalOptions.transport || this._makeRequest).call(this, { + url: url, + auth: auth, + data: data, + options: globalOptions, + onSuccess: function success() { + self._resetBackoff(); + + self._triggerEvent('success', { + data: data, + src: url + }); + + callback && callback(); + }, + onError: function failure(error) { + self._logDebug('error', 'Raven transport failed to send: ', error); + + if (error.request) { + self._setBackoffState(error.request); + } + + self._triggerEvent('failure', { + data: data, + src: url + }); + + error = error || new Error('Raven send failed (no additional details provided)'); + callback && callback(error); + } + }); + }, + _makeRequest: function _makeRequest(opts) { + // Auth is intentionally sent as part of query string (NOT as custom HTTP header) to avoid preflight CORS requests + var url = opts.url + '?' + urlencode(opts.auth); + var evaluatedHeaders = null; + var evaluatedFetchParameters = {}; + + if (opts.options.headers) { + evaluatedHeaders = this._evaluateHash(opts.options.headers); + } + + if (opts.options.fetchParameters) { + evaluatedFetchParameters = this._evaluateHash(opts.options.fetchParameters); + } + + if (supportsFetch()) { + evaluatedFetchParameters.body = stringify_1(opts.data); + var defaultFetchOptions = objectMerge({}, this._fetchDefaults); + var fetchOptions = objectMerge(defaultFetchOptions, evaluatedFetchParameters); + + if (evaluatedHeaders) { + fetchOptions.headers = evaluatedHeaders; + } + + return _window$1.fetch(url, fetchOptions).then(function (response) { + if (response.ok) { + opts.onSuccess && opts.onSuccess(); + } else { + var error = new Error('Sentry error code: ' + response.status); // It's called request only to keep compatibility with XHR interface + // and not add more redundant checks in setBackoffState method + + error.request = response; + opts.onError && opts.onError(error); + } + })['catch'](function () { + opts.onError && opts.onError(new Error('Sentry error code: network unavailable')); + }); + } + + var request = _window$1.XMLHttpRequest && new _window$1.XMLHttpRequest(); + if (!request) return; // if browser doesn't support CORS (e.g. IE7), we are out of luck + + var hasCORS = 'withCredentials' in request || typeof XDomainRequest !== 'undefined'; + if (!hasCORS) return; + + if ('withCredentials' in request) { + request.onreadystatechange = function () { + if (request.readyState !== 4) { + return; + } else if (request.status === 200) { + opts.onSuccess && opts.onSuccess(); + } else if (opts.onError) { + var err = new Error('Sentry error code: ' + request.status); + err.request = request; + opts.onError(err); + } + }; + } else { + request = new XDomainRequest(); // xdomainrequest cannot go http -> https (or vice versa), + // so always use protocol relative + + url = url.replace(/^https?:/, ''); // onreadystatechange not supported by XDomainRequest + + if (opts.onSuccess) { + request.onload = opts.onSuccess; + } + + if (opts.onError) { + request.onerror = function () { + var err = new Error('Sentry error code: XDomainRequest'); + err.request = request; + opts.onError(err); + }; + } + } + + request.open('POST', url); + + if (evaluatedHeaders) { + each(evaluatedHeaders, function (key, value) { + request.setRequestHeader(key, value); + }); + } + + request.send(stringify_1(opts.data)); + }, + _evaluateHash: function _evaluateHash(hash) { + var evaluated = {}; + + for (var key in hash) { + if (hash.hasOwnProperty(key)) { + var value = hash[key]; + evaluated[key] = typeof value === 'function' ? value() : value; + } + } + + return evaluated; + }, + _logDebug: function _logDebug(level) { + if (this._originalConsoleMethods[level] && this.debug) { + // In IE<10 console methods do not have their own 'apply' method + Function.prototype.apply.call(this._originalConsoleMethods[level], this._originalConsole, [].slice.call(arguments, 1)); + } + }, + _mergeContext: function _mergeContext(key, context) { + if (isUndefined(context)) { + delete this._globalContext[key]; + } else { + this._globalContext[key] = objectMerge(this._globalContext[key] || {}, context); + } + } +}; // Deprecations + +Raven$1.prototype.setUser = Raven$1.prototype.setUserContext; +Raven$1.prototype.setReleaseContext = Raven$1.prototype.setRelease; +var raven = Raven$1; + +/** + * Enforces a single instance of the Raven client, and the + * main entry point for Raven. If you are a consumer of the + * Raven library, you SHOULD load this file (vs raven.js). + **/ +// This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) + +var _window = typeof window !== 'undefined' ? window : typeof commonjsGlobal !== 'undefined' ? commonjsGlobal : typeof self !== 'undefined' ? self : {}; + +var _Raven = _window.Raven; +var Raven = new raven(); +/* + * Allow multiple versions of Raven to be installed. + * Strip Raven from the global context and returns the instance. + * + * @return {Raven} + */ + +Raven.noConflict = function () { + _window.Raven = _Raven; + return Raven; +}; + +Raven.afterLoad(); +var singleton = Raven; + +/** + * Ember.js plugin + * + * Patches event handler callbacks and ajax callbacks. + */ +function emberPlugin(Raven, Ember) { + Ember = Ember || window.Ember; // quit if Ember isn't on the page + + if (!Ember) return; + var _oldOnError = Ember.onerror; + + Ember.onerror = function EmberOnError(error) { + Raven.captureException(error); + + if (typeof _oldOnError === 'function') { + _oldOnError.call(this, error); + } + }; + + Ember.RSVP.on('error', function (reason) { + if (reason instanceof Error) { + Raven.captureException(reason, { + extra: { + context: 'Unhandled Promise error detected' + } + }); + } else { + Raven.captureMessage('Unhandled Promise error detected', { + extra: { + reason: reason + } + }); + } + }); +} + +var ember$2 = emberPlugin; + +/* This file was generated by './scripts/generate-plugin-combinations.js'! */ + +singleton.addPlugin(ember$2); +var ember = {}; + +return ember; + +}))); diff --git a/dist/ember/raven.min.js b/dist/ember/raven.min.js new file mode 100644 index 000000000000..02cb7780491b --- /dev/null +++ b/dist/ember/raven.min.js @@ -0,0 +1,3 @@ +/*! Raven.js 3.22.2 (1b6187b) | github.com/getsentry/raven-js */ +!function(a,b){"object"==typeof exports&&"undefined"!=typeof module?module.exports=b():"function"==typeof define&&define.amd?define(b):a.Raven=b()}(this,function(){"use strict";function a(a,b){return b={exports:{}},a(b,b.exports),b.exports}function b(a){return(b="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(a){return typeof a}:function(a){return a&&"function"==typeof Symbol&&a.constructor===Symbol&&a!==Symbol.prototype?"symbol":typeof a})(a)}function c(a){return"object"===b(a)&&null!==a}function d(a){switch({}.toString.call(a)){case"[object Error]":return!0;case"[object Exception]":return!0;case"[object DOMException]":return!0;default:return a instanceof Error}}function e(a){return l()&&"[object ErrorEvent]"==={}.toString.call(a)}function f(a){return void 0===a}function g(a){return"function"==typeof a}function h(a){return"[object Object]"===Object.prototype.toString.call(a)}function i(a){return"[object String]"===Object.prototype.toString.call(a)}function j(a){return"[object Array]"===Object.prototype.toString.call(a)}function k(a){if(!h(a))return!1;for(var b in a)if(a.hasOwnProperty(b))return!1;return!0}function l(){try{return new ErrorEvent(""),!0}catch(a){return!1}}function m(){if(!("fetch"in N))return!1;try{return new Headers,new Request(""),new Response,!0}catch(a){return!1}}function n(a){function b(b,c){var d=a(b)||b;return c?c(d)||d:d}return b}function o(a,b){var c,d;if(f(a.length))for(c in a)s(a,c)&&b.call(null,c,a[c]);else if(d=a.length)for(c=0;c ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function y(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&i(b))for(c=b.split(/\s+/),f=0;f=0;--b)l[b]===a&&l.splice(b,1)}function c(){g(),l=[]}function d(a,b){var c=null;if(!b||P.collectWindowErrors){for(var d in l)if(l.hasOwnProperty(d))try{l[d].apply(null,[a].concat(R.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function e(a,b,c,e,f){var g=null,i=O.isErrorEvent(f)?f.error:f,k=O.isErrorEvent(a)?a.message:a;if(o)P.computeStackTrace.augmentStackTraceWithInitialElement(o,b,c,k),h();else if(i&&O.isError(i))g=P.computeStackTrace(i),d(g,!0);else{var l,m={url:b,line:c,column:e},n=void 0;if("[object String]"==={}.toString.call(k)){var l=k.match(T);l&&(n=l[1],k=l[2])}m.func=S,g={name:n,message:k,url:F(),stack:[m]},d(g,!0)}return!!j&&j.apply(this,arguments)}function f(){k||(j=Q.onerror,Q.onerror=e,k=!0)}function g(){k&&(Q.onerror=j,k=!1,j=void 0)}function h(){var a=o,b=m;m=null,o=null,n=null,d.apply(null,[a,!1].concat(b))}function i(a,b){var c=R.call(arguments,1);if(o){if(n===a)return;h()}var d=P.computeStackTrace(a);if(o=d,n=a,m=c,setTimeout(function(){n===a&&h()},d.incomplete?2e3:0),b!==!1)throw a}var j,k,l=[],m=null,n=null,o=null;return i.subscribe=a,i.unsubscribe=b,i.uninstall=c,i}(),P.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,d,e=/^\s*at (.*?) ?\(((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,f=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|\[native).*?|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,g=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,h=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,i=/\((\S*)(?::(\d+))(?::(\d+))\)/,j=a.stack.split("\n"),k=[],l=(/^(.*) is undefined$/.exec(a.message),0),m=j.length;l eval")>-1;o&&(b=h.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==l||c[5]||"undefined"==typeof a.columnNumber||(k[0].column=a.columnNumber+1),d={url:c[3],func:c[1]||S,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}!d.func&&d.line&&(d.func=S),k.push(d)}return k.length?{name:a.name,message:a.message,url:F(),stack:k}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=S),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,e){for(var f,g,h=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,i=[],j={},k=!1,l=c.caller;l&&!k;l=l.caller)if(l!==d&&l!==P.report){if(g={url:null,func:S,line:null,column:null},l.name?g.func=l.name:(f=h.exec(l.toString()))&&(g.func=f[1]),"undefined"==typeof g.func)try{g.func=f.input.substring(0,f.input.indexOf("{"))}catch(m){}j[""+l]?k=!0:j[""+l]=!0,i.push(g)}e&&i.splice(0,e);var n={name:a.name,message:a.message,url:F(),stack:i};return b(n,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),n}function d(b,d){var e=null;d=null==d?0:+d;try{if(e=a(b))return e}catch(f){if(P.debug)throw f}try{if(e=c(b,d+1))return e}catch(f){if(P.debug)throw f}return{name:b.name,message:b.message,url:F()}}return d.augmentStackTraceWithInitialElement=b,d.computeStackTraceFromStackProp=a,d}();var U=P,V=a(function(a,b){function c(a,b){for(var c=0;c0){var i=c(d,this);~i?d.splice(i+1):d.push(this),~i?f.splice(i,1/0,g):f.push(g),~c(d,h)&&(h=b.call(this,g,h))}else d.push(h);return null==a?h instanceof Error?e(h):h:a.call(this,g,h)}}b=a.exports=d,b.getSerialize=f});G.prototype=new Error,G.prototype.constructor=G;var W=G,X=function(a,b,c){var d=a[b],e=a;if(b in a){var f="warn"===b?"warning":b;a[b]=function(){var a=[].slice.call(arguments),g=O.safeJoin(a," "),h={level:f,logger:"console",extra:{arguments:a}};"assert"===b?a[0]===!1&&(g="Assertion failed: "+(O.safeJoin(a.slice(1)," ")||"console.assert"),h.extra.arguments=a.slice(1),c&&c(g,h)):c&&c(g,h),d&&Function.prototype.apply.call(d,e,a)}}},Y={wrapMethod:X},Z=O.isError,$=O.isObject,_=O.isErrorEvent,aa=O.isUndefined,ba=O.isFunction,ca=O.isString,da=O.isArray,ea=O.isEmptyObject,fa=O.each,ga=O.objectMerge,ha=O.truncate,ia=O.objectFrozen,ja=O.hasKey,ka=O.joinRegExp,la=O.urlencode,ma=O.uuid4,na=O.htmlTreeAsString,oa=O.isSameException,pa=O.isSameStacktrace,qa=O.parseUrl,ra=O.fill,sa=O.supportsFetch,ta=Y.wrapMethod,ua="source protocol user pass host port path".split(" "),va=/^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/,wa="undefined"!=typeof window?window:"undefined"!=typeof L?L:"undefined"!=typeof self?self:{},xa=wa.document,ya=wa.navigator;J.prototype={VERSION:"3.22.2",debug:!1,TraceKit:U,config:function(a,b){var c=this;if(c.i)return this.C("error","Error: Raven has already been configured"),c;if(!a)return c;var d=c.m;b&&fa(b,function(a,b){"tags"===a||"extra"===a||"user"===a?c.l[a]=b:d[a]=b}),c.setDSN(a),d.ignoreErrors.push(/^Script error\.?$/),d.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/),d.ignoreErrors=ka(d.ignoreErrors),d.ignoreUrls=!!d.ignoreUrls.length&&ka(d.ignoreUrls),d.whitelistUrls=!!d.whitelistUrls.length&&ka(d.whitelistUrls),d.includePaths=ka(d.includePaths),d.maxBreadcrumbs=Math.max(0,Math.min(d.maxBreadcrumbs||100,100));var e={xhr:!0,console:!0,dom:!0,location:!0,sentry:!0},f=d.autoBreadcrumbs;"[object Object]"==={}.toString.call(f)?f=ga(e,f):f!==!1&&(f=e),d.autoBreadcrumbs=f;var g={tryCatch:!0},h=d.instrument;return"[object Object]"==={}.toString.call(h)?h=ga(g,h):h!==!1&&(h=g),d.instrument=h,U.collectWindowErrors=!!d.collectWindowErrors,c},install:function(){var a=this;return a.isSetup()&&!a.p&&(U.report.subscribe(function(){a.D.apply(a,arguments)}),a.E(),a.m.instrument&&a.m.instrument.tryCatch&&a.F(),a.m.autoBreadcrumbs&&a.G(),a.H(),a.p=!0),Error.stackTraceLimit=a.m.stackTraceLimit,this},setDSN:function(a){var b=this,c=b.I(a),d=c.path.lastIndexOf("/"),e=c.path.substr(1,d);b.J=a,b.j=c.user,b.K=c.pass&&c.pass.substr(1),b.k=c.path.substr(d+1),b.i=b.L(c),b.M=b.i+"/"+e+"api/"+b.k+"/store/",this.A()},context:function(a,b,c){return ba(a)&&(c=b||[],b=a,a=void 0),this.wrap(a,b).apply(this,c)},wrap:function(a,b,c){function d(){var d=[],f=arguments.length,g=!a||a&&a.deep!==!1;for(c&&ba(c)&&c.apply(this,arguments);f--;)d[f]=g?e.wrap(a,arguments[f]):arguments[f];try{return b.apply(this,d)}catch(h){throw e.N(),e.captureException(h,a),h}}var e=this;if(aa(b)&&!ba(a))return a;if(ba(a)&&(b=a,a=void 0),!ba(b))return b;try{if(b.a)return b;if(b.O)return b.O}catch(f){return b}for(var g in b)ja(b,g)&&(d[g]=b[g]);return d.prototype=b.prototype,b.O=d,d.a=!0,d.b=b,d},uninstall:function(){return U.report.uninstall(),this.P(),this.Q(),this.R(),Error.stackTraceLimit=this.q,this.p=!1,this},captureException:function(a,b){b=ga({trimHeadFrames:0},b?b:{});var c=!Z(a),d=!_(a),e=_(a)&&!a.error;if(c&&d||e)return this.captureMessage(a,ga(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}));_(a)&&(a=a.error),this.f=a;try{var f=U.computeStackTrace(a);this.S(f,b)}catch(g){if(a!==g)throw g}return this},captureMessage:function(a,b){if(!this.m.ignoreErrors.test||!this.m.ignoreErrors.test(a)){b=b||{};var c,d=ga({message:a+""},b);try{throw new Error(a)}catch(e){c=e}c.name=null;var f=U.computeStackTrace(c),g=da(f.stack)&&f.stack[1],h=g&&g.url||"";if((!this.m.ignoreUrls.test||!this.m.ignoreUrls.test(h))&&(!this.m.whitelistUrls.test||this.m.whitelistUrls.test(h))){if(this.m.stacktrace||b&&b.stacktrace){b=ga({fingerprint:a,trimHeadFrames:(b.trimHeadFrames||0)+1},b);var i=this.T(f,b);d.stacktrace={frames:i.reverse()}}return this.U(d),this}}},captureBreadcrumb:function(a){var b=ga({timestamp:H()/1e3},a);if(ba(this.m.breadcrumbCallback)){var c=this.m.breadcrumbCallback(b);if($(c)&&!ea(c))b=c;else if(c===!1)return this}return this.w.push(b),this.w.length>this.m.maxBreadcrumbs&&this.w.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.t.push([a,b]),this.p&&this.H(),this},setUserContext:function(a){return this.l.user=a,this},setExtraContext:function(a){return this.V("extra",a),this},setTagsContext:function(a){return this.V("tags",a),this},clearContext:function(){return this.l={},this},getContext:function(){return JSON.parse(V(this.l))},setEnvironment:function(a){return this.m.environment=a,this},setRelease:function(a){return this.m.release=a,this},setDataCallback:function(a){var b=this.m.dataCallback;return this.m.dataCallback=I(b,a),this},setBreadcrumbCallback:function(a){var b=this.m.breadcrumbCallback;return this.m.breadcrumbCallback=I(b,a),this},setShouldSendCallback:function(a){var b=this.m.shouldSendCallback;return this.m.shouldSendCallback=I(b,a),this},setTransport:function(a){return this.m.transport=a,this},lastException:function(){return this.f},lastEventId:function(){return this.h},isSetup:function(){return!!this.c&&(!!this.i||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.C("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=wa.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(xa){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new W("Missing eventId");var c=a.dsn||this.J;if(!c)throw new W("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.l.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.L(this.I(c)),h=xa.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(xa.head||xa.body).appendChild(h)}},N:function(){var a=this;this.o+=1,setTimeout(function(){a.o-=1})},W:function(a,b){var c,d;if(this.d){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),xa.createEvent?(c=xa.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=xa.createEventObject(),c.eventType=a);for(d in b)ja(b,d)&&(c[d]=b[d]);if(xa.createEvent)xa.dispatchEvent(c);else try{xa.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},X:function(a){var b=this;return function(c){if(b.Y=null,b.x!==c){b.x=c;var d;try{d=na(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},Z:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.Y;g||a.X("input")(c),clearTimeout(g),a.Y=setTimeout(function(){a.Y=null},b)}}},$:function(a,b){var c=qa(this.y.href),d=qa(b),e=qa(a);this.z=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},E:function(){var a=this;a._=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.a?a._.apply(this.b,arguments):a._.apply(this,arguments)}},P:function(){this._&&(Function.prototype.toString=this._)},F:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.$(b.z,c+""),a.apply(this,arguments)}};ra(history,"pushState",j,d),ra(history,"replaceState",j,d)}if(c.console&&"console"in wa&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};fa(["debug","info","warn","error","log"],function(a,b){ta(console,b,k)})}},Q:function(){for(var a;this.v.length;){a=this.v.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},R:function(){for(var a in this.s)this.r[a]=this.s[a]},H:function(){var a=this;fa(this.t,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},I:function(a){var b=va.exec(a),c={},d=7;try{for(;d--;)c[ua[d]]=b[d]||""}catch(e){throw new W("Invalid DSN: "+a)}if(c.pass&&!this.m.allowSecretKey)throw new W("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},L:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},D:function(){this.o||this.S.apply(this,arguments)},S:function(a,b){var c=this.T(a,b);this.W("handle",{stackInfo:a,options:b}),this.ba(a.name,a.message,a.url,a.lineno,c,b)},T:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(fa(a.stack,function(b,e){var f=c.ca(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.w,0)}),this.l.user&&(a.user=this.l.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||ea(a[b]))&&delete a[b]}),ba(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!ea(a)&&(!ba(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.ia()?void this.C("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() href parsing trick because React Native and other // environments where DOM might not be available + + function parseUrl(url) { if (typeof url !== 'string') return {}; - var match = url.match(/^(([^:\/?#]+):)?(\/\/([^\/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?$/); + var match = url.match(/^(([^:\/?#]+):)?(\/\/([^\/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?$/); // coerce to undefined values to empty string so we don't get 'undefined' - // coerce to undefined values to empty string so we don't get 'undefined' var query = match[6] || ''; var fragment = match[8] || ''; return { @@ -286,8 +256,10 @@ function parseUrl(url) { host: match[4], path: match[5], relative: match[5] + query + fragment // everything minus origin + }; } + function uuid4() { var crypto = _window.crypto || _window.msCrypto; @@ -295,41 +267,32 @@ function uuid4() { // Use window.crypto API if available // eslint-disable-next-line no-undef var arr = new Uint16Array(8); - crypto.getRandomValues(arr); + crypto.getRandomValues(arr); // set 4 in byte 7 + + arr[3] = arr[3] & 0xfff | 0x4000; // set 2 most significant bits of byte 9 to '10' - // set 4 in byte 7 - arr[3] = (arr[3] & 0xfff) | 0x4000; - // set 2 most significant bits of byte 9 to '10' - arr[4] = (arr[4] & 0x3fff) | 0x8000; + arr[4] = arr[4] & 0x3fff | 0x8000; - var pad = function(num) { + var pad = function pad(num) { var v = num.toString(16); + while (v.length < 4) { v = '0' + v; } + return v; }; - return ( - pad(arr[0]) + - pad(arr[1]) + - pad(arr[2]) + - pad(arr[3]) + - pad(arr[4]) + - pad(arr[5]) + - pad(arr[6]) + - pad(arr[7]) - ); + return pad(arr[0]) + pad(arr[1]) + pad(arr[2]) + pad(arr[3]) + pad(arr[4]) + pad(arr[5]) + pad(arr[6]) + pad(arr[7]); } else { // http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/2117523#2117523 - return 'xxxxxxxxxxxx4xxxyxxxxxxxxxxxxxxx'.replace(/[xy]/g, function(c) { - var r = (Math.random() * 16) | 0, - v = c === 'x' ? r : (r & 0x3) | 0x8; + return 'xxxxxxxxxxxx4xxxyxxxxxxxxxxxxxxx'.replace(/[xy]/g, function (c) { + var r = Math.random() * 16 | 0, + v = c === 'x' ? r : r & 0x3 | 0x8; return v.toString(16); }); } } - /** * Given a child DOM element, returns a query-selector statement describing that * and its ancestors @@ -337,139 +300,137 @@ function uuid4() { * @param elem * @returns {string} */ + + function htmlTreeAsString(elem) { /* eslint no-extra-parens:0*/ var MAX_TRAVERSE_HEIGHT = 5, - MAX_OUTPUT_LEN = 80, - out = [], - height = 0, - len = 0, - separator = ' > ', - sepLength = separator.length, - nextStr; + MAX_OUTPUT_LEN = 80, + out = [], + height = 0, + len = 0, + separator = ' > ', + sepLength = separator.length, + nextStr; while (elem && height++ < MAX_TRAVERSE_HEIGHT) { - nextStr = htmlElementAsString(elem); - // bail out if + nextStr = htmlElementAsString(elem); // bail out if // - nextStr is the 'html' element // - the length of the string that would be created exceeds MAX_OUTPUT_LEN // (ignore this limit if we are on the first iteration) - if ( - nextStr === 'html' || - (height > 1 && len + out.length * sepLength + nextStr.length >= MAX_OUTPUT_LEN) - ) { + + if (nextStr === 'html' || height > 1 && len + out.length * sepLength + nextStr.length >= MAX_OUTPUT_LEN) { break; } out.push(nextStr); - len += nextStr.length; elem = elem.parentNode; } return out.reverse().join(separator); } - /** * Returns a simple, query-selector representation of a DOM element * e.g. [HTMLElement] => input#foo.btn[name=baz] * @param HTMLElement * @returns {string} */ + + function htmlElementAsString(elem) { var out = [], - className, - classes, - key, - attr, - i; + className, + classes, + key, + attr, + i; if (!elem || !elem.tagName) { return ''; } out.push(elem.tagName.toLowerCase()); + if (elem.id) { out.push('#' + elem.id); } className = elem.className; + if (className && isString(className)) { classes = className.split(/\s+/); + for (i = 0; i < classes.length; i++) { out.push('.' + classes[i]); } } + var attrWhitelist = ['type', 'name', 'title', 'alt']; + for (i = 0; i < attrWhitelist.length; i++) { key = attrWhitelist[i]; attr = elem.getAttribute(key); + if (attr) { out.push('[' + key + '="' + attr + '"]'); } } + return out.join(''); } - /** * Returns true if either a OR b is truthy, but not both */ + + function isOnlyOneTruthy(a, b) { return !!(!!a ^ !!b); } - /** * Returns true if both parameters are undefined */ + + function isBothUndefined(a, b) { return isUndefined(a) && isUndefined(b); } - /** * Returns true if the two input exception interfaces have the same content */ + + function isSameException(ex1, ex2) { if (isOnlyOneTruthy(ex1, ex2)) return false; - ex1 = ex1.values[0]; ex2 = ex2.values[0]; + if (ex1.type !== ex2.type || ex1.value !== ex2.value) return false; // in case both stacktraces are undefined, we can't decide so default to false - if (ex1.type !== ex2.type || ex1.value !== ex2.value) return false; - - // in case both stacktraces are undefined, we can't decide so default to false if (isBothUndefined(ex1.stacktrace, ex2.stacktrace)) return false; - return isSameStacktrace(ex1.stacktrace, ex2.stacktrace); } - /** * Returns true if the two input stack trace interfaces have the same content */ + + function isSameStacktrace(stack1, stack2) { if (isOnlyOneTruthy(stack1, stack2)) return false; - var frames1 = stack1.frames; - var frames2 = stack2.frames; + var frames2 = stack2.frames; // Exit early if frame count differs - // Exit early if frame count differs - if (frames1.length !== frames2.length) return false; + if (frames1.length !== frames2.length) return false; // Iterate through every frame; bail out if anything differs - // Iterate through every frame; bail out if anything differs var a, b; + for (var i = 0; i < frames1.length; i++) { a = frames1[i]; b = frames2[i]; - if ( - a.filename !== b.filename || - a.lineno !== b.lineno || - a.colno !== b.colno || - a['function'] !== b['function'] - ) - return false; + if (a.filename !== b.filename || a.lineno !== b.lineno || a.colno !== b.colno || a['function'] !== b['function']) return false; } + return true; } - /** * Polyfill a method * @param obj object e.g. `document` @@ -477,17 +438,42 @@ function isSameStacktrace(stack1, stack2) { * @param replacement replacement function * @param track {optional} record instrumentation to an array */ + + function fill(obj, name, replacement, track) { var orig = obj[name]; obj[name] = replacement(orig); obj[name].__raven__ = true; obj[name].__orig__ = orig; + if (track) { track.push([obj, name, orig]); } } +/** + * Join values in array + * @param input array of values to be joined together + * @param delimiter string to be placed in-between values + * @returns {string} + */ -module.exports = { + +function safeJoin(input, delimiter) { + if (!isArray(input)) return ''; + var output = []; + + for (var i = 0; i < input.length; i++) { + try { + output.push(String(input[i])); + } catch (e) { + output.push('[value cannot be serialized]'); + } + } + + return output.join(delimiter); +} + +var utils = { isObject: isObject, isError: isError, isErrorEvent: isErrorEvent, @@ -499,7 +485,7 @@ module.exports = { isEmptyObject: isEmptyObject, supportsErrorEvent: supportsErrorEvent, supportsFetch: supportsFetch, - wrappedCallback: wrappedCallback, + wrappedCallback: wrappedCallback$1, each: each, objectMerge: objectMerge, truncate: truncate, @@ -513,9 +499,76 @@ module.exports = { isSameException: isSameException, isSameStacktrace: isSameStacktrace, parseUrl: parseUrl, - fill: fill + fill: fill, + safeJoin: safeJoin }; -}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) -},{}]},{},[1])(1) -}); \ No newline at end of file +/** + * Angular.js plugin + * + * Provides an $exceptionHandler for Angular.js + */ + +var wrappedCallback = utils.wrappedCallback; // See https://github.com/angular/angular.js/blob/v1.4.7/src/minErr.js + +var angularPattern = /^\[((?:[$a-zA-Z0-9]+:)?(?:[$a-zA-Z0-9]+))\] (.*?)\n?(\S+)$/; +var moduleName = 'ngRaven'; + +function angularPlugin(Raven, angular) { + angular = angular || window.angular; + if (!angular) return; + + function RavenProvider() { + this.$get = ['$window', function ($window) { + return Raven; + }]; + } + + function ExceptionHandlerProvider($provide) { + $provide.decorator('$exceptionHandler', ['Raven', '$delegate', exceptionHandler]); + } + + function exceptionHandler(R, $delegate) { + return function (ex, cause) { + R.captureException(ex, { + extra: { + cause: cause + } + }); + $delegate(ex, cause); + }; + } + + angular.module(moduleName, []).provider('Raven', RavenProvider).config(['$provide', ExceptionHandlerProvider]); + Raven.setDataCallback(wrappedCallback(function (data) { + return angularPlugin._normalizeData(data); + })); +} + +angularPlugin._normalizeData = function (data) { + // We only care about mutating an exception + var exception = data.exception; + + if (exception) { + exception = exception.values[0]; + var matches = angularPattern.exec(exception.value); + + if (matches) { + // This type now becomes something like: $rootScope:inprog + exception.type = matches[1]; + exception.value = matches[2]; + data.message = exception.type + ': ' + exception.value; // auto set a new tag specifically for the angular error url + + data.extra.angularDocs = matches[3].substr(0, 250); + } + } + + return data; +}; + +angularPlugin.moduleName = moduleName; +var angular = angularPlugin; + +return angular; + +}))); diff --git a/dist/plugins/angular.min.js b/dist/plugins/angular.min.js index 8ee0aea30635..dd70ed3681d7 100644 --- a/dist/plugins/angular.min.js +++ b/dist/plugins/angular.min.js @@ -1,3 +1,3 @@ -/*! Raven.js 3.22.1 (eec289b) | github.com/getsentry/raven-js */ -!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b=b.Raven||(b.Raven={}),b=b.Plugins||(b.Plugins={}),b.Angular=a()}}(function(){return function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};b[g][0].call(k.exports,function(a){var c=b[g][1][a];return e(c?c:a)},k,k.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;g ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function y(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&i(b))for(c=b.split(/\s+/),f=0;f ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function x(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&h(b))for(c=b.split(/\s+/),f=0;f href parsing trick because React Native and other +// environments where DOM might not be available + + +function parseUrl(url) { + if (typeof url !== 'string') return {}; + var match = url.match(/^(([^:\/?#]+):)?(\/\/([^\/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?$/); // coerce to undefined values to empty string so we don't get 'undefined' + + var query = match[6] || ''; + var fragment = match[8] || ''; + return { + protocol: match[2], + host: match[4], + path: match[5], + relative: match[5] + query + fragment // everything minus origin - var callback = function(msg, data) { - Raven.captureMessage(msg, data); }; +} - var level = logLevels.pop(); - while (level) { - wrapConsoleMethod(console, level, callback); - level = logLevels.pop(); +function uuid4() { + var crypto = _window.crypto || _window.msCrypto; + + if (!isUndefined(crypto) && crypto.getRandomValues) { + // Use window.crypto API if available + // eslint-disable-next-line no-undef + var arr = new Uint16Array(8); + crypto.getRandomValues(arr); // set 4 in byte 7 + + arr[3] = arr[3] & 0xfff | 0x4000; // set 2 most significant bits of byte 9 to '10' + + arr[4] = arr[4] & 0x3fff | 0x8000; + + var pad = function pad(num) { + var v = num.toString(16); + + while (v.length < 4) { + v = '0' + v; + } + + return v; + }; + + return pad(arr[0]) + pad(arr[1]) + pad(arr[2]) + pad(arr[3]) + pad(arr[4]) + pad(arr[5]) + pad(arr[6]) + pad(arr[7]); + } else { + // http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/2117523#2117523 + return 'xxxxxxxxxxxx4xxxyxxxxxxxxxxxxxxx'.replace(/[xy]/g, function (c) { + var r = Math.random() * 16 | 0, + v = c === 'x' ? r : r & 0x3 | 0x8; + return v.toString(16); + }); } } +/** + * Given a child DOM element, returns a query-selector statement describing that + * and its ancestors + * e.g. [HTMLElement] => body > div > input#foo.btn[name=baz] + * @param elem + * @returns {string} + */ + + +function htmlTreeAsString(elem) { + /* eslint no-extra-parens:0*/ + var MAX_TRAVERSE_HEIGHT = 5, + MAX_OUTPUT_LEN = 80, + out = [], + height = 0, + len = 0, + separator = ' > ', + sepLength = separator.length, + nextStr; + + while (elem && height++ < MAX_TRAVERSE_HEIGHT) { + nextStr = htmlElementAsString(elem); // bail out if + // - nextStr is the 'html' element + // - the length of the string that would be created exceeds MAX_OUTPUT_LEN + // (ignore this limit if we are on the first iteration) + + if (nextStr === 'html' || height > 1 && len + out.length * sepLength + nextStr.length >= MAX_OUTPUT_LEN) { + break; + } + + out.push(nextStr); + len += nextStr.length; + elem = elem.parentNode; + } + + return out.reverse().join(separator); +} +/** + * Returns a simple, query-selector representation of a DOM element + * e.g. [HTMLElement] => input#foo.btn[name=baz] + * @param HTMLElement + * @returns {string} + */ + + +function htmlElementAsString(elem) { + var out = [], + className, + classes, + key, + attr, + i; + + if (!elem || !elem.tagName) { + return ''; + } + + out.push(elem.tagName.toLowerCase()); + + if (elem.id) { + out.push('#' + elem.id); + } + + className = elem.className; + + if (className && isString(className)) { + classes = className.split(/\s+/); + + for (i = 0; i < classes.length; i++) { + out.push('.' + classes[i]); + } + } + + var attrWhitelist = ['type', 'name', 'title', 'alt']; + + for (i = 0; i < attrWhitelist.length; i++) { + key = attrWhitelist[i]; + attr = elem.getAttribute(key); -module.exports = consolePlugin; + if (attr) { + out.push('[' + key + '="' + attr + '"]'); + } + } + + return out.join(''); +} +/** + * Returns true if either a OR b is truthy, but not both + */ + + +function isOnlyOneTruthy(a, b) { + return !!(!!a ^ !!b); +} +/** + * Returns true if both parameters are undefined + */ + + +function isBothUndefined(a, b) { + return isUndefined(a) && isUndefined(b); +} +/** + * Returns true if the two input exception interfaces have the same content + */ + + +function isSameException(ex1, ex2) { + if (isOnlyOneTruthy(ex1, ex2)) return false; + ex1 = ex1.values[0]; + ex2 = ex2.values[0]; + if (ex1.type !== ex2.type || ex1.value !== ex2.value) return false; // in case both stacktraces are undefined, we can't decide so default to false + + if (isBothUndefined(ex1.stacktrace, ex2.stacktrace)) return false; + return isSameStacktrace(ex1.stacktrace, ex2.stacktrace); +} +/** + * Returns true if the two input stack trace interfaces have the same content + */ + + +function isSameStacktrace(stack1, stack2) { + if (isOnlyOneTruthy(stack1, stack2)) return false; + var frames1 = stack1.frames; + var frames2 = stack2.frames; // Exit early if frame count differs + + if (frames1.length !== frames2.length) return false; // Iterate through every frame; bail out if anything differs + + var a, b; + + for (var i = 0; i < frames1.length; i++) { + a = frames1[i]; + b = frames2[i]; + if (a.filename !== b.filename || a.lineno !== b.lineno || a.colno !== b.colno || a['function'] !== b['function']) return false; + } -},{"2":2}],2:[function(_dereq_,module,exports){ -var wrapMethod = function(console, level, callback) { + return true; +} +/** + * Polyfill a method + * @param obj object e.g. `document` + * @param name method name present on object e.g. `addEventListener` + * @param replacement replacement function + * @param track {optional} record instrumentation to an array + */ + + +function fill(obj, name, replacement, track) { + var orig = obj[name]; + obj[name] = replacement(orig); + obj[name].__raven__ = true; + obj[name].__orig__ = orig; + + if (track) { + track.push([obj, name, orig]); + } +} +/** + * Join values in array + * @param input array of values to be joined together + * @param delimiter string to be placed in-between values + * @returns {string} + */ + + +function safeJoin(input, delimiter) { + if (!isArray(input)) return ''; + var output = []; + + for (var i = 0; i < input.length; i++) { + try { + output.push(String(input[i])); + } catch (e) { + output.push('[value cannot be serialized]'); + } + } + + return output.join(delimiter); +} + +var utils = { + isObject: isObject, + isError: isError, + isErrorEvent: isErrorEvent, + isUndefined: isUndefined, + isFunction: isFunction, + isPlainObject: isPlainObject, + isString: isString, + isArray: isArray, + isEmptyObject: isEmptyObject, + supportsErrorEvent: supportsErrorEvent, + supportsFetch: supportsFetch, + wrappedCallback: wrappedCallback, + each: each, + objectMerge: objectMerge, + truncate: truncate, + objectFrozen: objectFrozen, + hasKey: hasKey, + joinRegExp: joinRegExp, + urlencode: urlencode, + uuid4: uuid4, + htmlTreeAsString: htmlTreeAsString, + htmlElementAsString: htmlElementAsString, + isSameException: isSameException, + isSameStacktrace: isSameStacktrace, + parseUrl: parseUrl, + fill: fill, + safeJoin: safeJoin +}; + +var wrapMethod = function wrapMethod(console, level, callback) { var originalConsoleLevel = console[level]; var originalConsole = console; @@ -55,24 +513,29 @@ var wrapMethod = function(console, level, callback) { var sentryLevel = level === 'warn' ? 'warning' : level; - console[level] = function() { + console[level] = function () { var args = [].slice.call(arguments); - - var msg = '' + args.join(' '); - var data = {level: sentryLevel, logger: 'console', extra: {arguments: args}}; + var msg = utils.safeJoin(args, ' '); + var data = { + level: sentryLevel, + logger: 'console', + extra: { + arguments: args + } + }; if (level === 'assert') { if (args[0] === false) { // Default browsers message - msg = 'Assertion failed: ' + (args.slice(1).join(' ') || 'console.assert'); + msg = 'Assertion failed: ' + (utils.safeJoin(args.slice(1), ' ') || 'console.assert'); data.extra.arguments = args.slice(1); callback && callback(msg, data); } } else { callback && callback(msg, data); - } + } // this fails for some browsers. :( + - // this fails for some browsers. :( if (originalConsoleLevel) { // IE9 doesn't allow calling apply on console functions directly // See: https://stackoverflow.com/questions/5472938/does-ie9-support-console-log-and-is-it-a-real-function#answer-5473193 @@ -81,9 +544,44 @@ var wrapMethod = function(console, level, callback) { }; }; -module.exports = { +var console$2 = { wrapMethod: wrapMethod }; -},{}]},{},[1])(1) -}); \ No newline at end of file +/** + * console plugin + * + * Monkey patches console.* calls into Sentry messages with + * their appropriate log levels. (Experimental) + * + * Options: + * + * `levels`: An array of levels (methods on `console`) to report to Sentry. + * Defaults to debug, info, warn, and error. + */ + +var wrapConsoleMethod = console$2.wrapMethod; + +function consolePlugin(Raven, console, pluginOptions) { + console = console || window.console || {}; + pluginOptions = pluginOptions || {}; + var logLevels = pluginOptions.levels || ['debug', 'info', 'warn', 'error']; + if ('assert' in console) logLevels.push('assert'); + + var callback = function callback(msg, data) { + Raven.captureMessage(msg, data); + }; + + var level = logLevels.pop(); + + while (level) { + wrapConsoleMethod(console, level, callback); + level = logLevels.pop(); + } +} + +var console = consolePlugin; + +return console; + +}))); diff --git a/dist/plugins/console.min.js b/dist/plugins/console.min.js index ba6bc0e34d08..1d8556035e97 100644 --- a/dist/plugins/console.min.js +++ b/dist/plugins/console.min.js @@ -1,3 +1,3 @@ -/*! Raven.js 3.22.1 (eec289b) | github.com/getsentry/raven-js */ -!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b=b.Raven||(b.Raven={}),b=b.Plugins||(b.Plugins={}),b.Console=a()}}(function(){return function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};b[g][0].call(k.exports,function(a){var c=b[g][1][a];return e(c?c:a)},k,k.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;g ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function x(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&h(b))for(c=b.split(/\s+/),f=0;f' : 'anonymous component') + - (vm._isVue && vm.$options.__file ? ' at ' + vm.$options.__file : '') - ); + return (name ? 'component <' + name + '>' : 'anonymous component') + (vm._isVue && vm.$options.__file ? ' at ' + vm.$options.__file : ''); } function vuePlugin(Raven, Vue) { - Vue = Vue || window.Vue; + Vue = Vue || window.Vue; // quit if Vue isn't on the page - // quit if Vue isn't on the page if (!Vue || !Vue.config) return; - var _oldOnError = Vue.config.errorHandler; + Vue.config.errorHandler = function VueErrorHandler(error, vm, info) { - var metaData = {}; + var metaData = {}; // vm and lifecycleHook are not always available - // vm and lifecycleHook are not always available if (Object.prototype.toString.call(vm) === '[object Object]') { metaData.componentName = formatComponentName(vm); metaData.propsData = vm.$options.propsData; @@ -57,7 +57,8 @@ function vuePlugin(Raven, Vue) { }; } -module.exports = vuePlugin; +var vue = vuePlugin; + +return vue; -},{}]},{},[1])(1) -}); \ No newline at end of file +}))); diff --git a/dist/plugins/vue.min.js b/dist/plugins/vue.min.js index 6dac637b98ea..94ee6f5f82ca 100644 --- a/dist/plugins/vue.min.js +++ b/dist/plugins/vue.min.js @@ -1,3 +1,3 @@ -/*! Raven.js 3.22.1 (eec289b) | github.com/getsentry/raven-js */ -!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b=b.Raven||(b.Raven={}),b=b.Plugins||(b.Plugins={}),b.Vue=a()}}(function(){return function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};b[g][0].call(k.exports,function(a){var c=b[g][1][a];return e(c?c:a)},k,k.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;g":"anonymous component")+(a._isVue&&a.$options.__file?" at "+a.$options.__file:"")}function e(a,b){if(b=b||window.Vue,b&&b.config){var c=b.config.errorHandler;b.config.errorHandler=function(b,e,f){var g={};"[object Object]"===Object.prototype.toString.call(e)&&(g.componentName=d(e),g.propsData=e.$options.propsData),"undefined"!=typeof f&&(g.lifecycleHook=f),a.captureException(b,{extra:g}),"function"==typeof c&&c.call(this,b,e,f)}}}b.exports=e},{}]},{},[1])(1)}); +/*! Raven.js 3.22.2 (1b6187b) | github.com/getsentry/raven-js */ +!function(a,b){"object"==typeof exports&&"undefined"!=typeof module?module.exports=b():"function"==typeof define&&define.amd?define(b):(a.Raven=a.Raven||{},a.Raven.Plugins=a.Raven.Plugins||{},a.Raven.Plugins.Vue=b())}(this,function(){"use strict";function a(a){if(a.$root===a)return"root instance";var b=a._isVue?a.$options.name||a.$options._componentTag:a.name;return(b?"component <"+b+">":"anonymous component")+(a._isVue&&a.$options.__file?" at "+a.$options.__file:"")}function b(b,c){if(c=c||window.Vue,c&&c.config){var d=c.config.errorHandler;c.config.errorHandler=function(c,e,f){var g={};"[object Object]"===Object.prototype.toString.call(e)&&(g.componentName=a(e),g.propsData=e.$options.propsData),"undefined"!=typeof f&&(g.lifecycleHook=f),b.captureException(c,{extra:g}),"function"==typeof d&&d.call(this,c,e,f)}}}var c=b;return c}); //# sourceMappingURL=vue.min.js.map \ No newline at end of file diff --git a/dist/plugins/vue.min.js.map b/dist/plugins/vue.min.js.map index f263c96e5eb5..d1024dc73b49 100644 --- a/dist/plugins/vue.min.js.map +++ b/dist/plugins/vue.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["vue.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","Plugins","Vue","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","formatComponentName","vm","$root","name","_isVue","$options","_componentTag","__file","vuePlugin","config","_oldOnError","errorHandler","error","info","metaData","Object","prototype","toString","componentName","propsData","lifecycleHook","captureException","extra"],"mappings":";CAYA,SAAUA,GAAG,GAAoB,gBAAVC,UAAoC,mBAATC,QAAsBA,OAAOD,QAAQD,QAAS,IAAmB,kBAATG,SAAqBA,OAAOC,IAAKD,UAAUH,OAAO,CAAC,GAAIK,EAAkCA,GAAb,mBAATC,QAAwBA,OAA+B,mBAATC,QAAwBA,OAA6B,mBAAPC,MAAsBA,KAAYC,KAAKJ,EAAGA,EAAEK,QAAQL,EAAEK,UAAaL,EAAGA,EAAEM,UAAUN,EAAEM,YAAeN,EAAEO,IAAMZ,MAAO,WAAqC,MAAO,SAAUa,GAAEC,EAAEC,EAAEC,GAAG,QAASC,GAAEC,EAAEC,GAAG,IAAIJ,EAAEG,GAAG,CAAC,IAAIJ,EAAEI,GAAG,CAAC,GAAIE,GAAkB,kBAATC,UAAqBA,OAAQ,KAAIF,GAAGC,EAAE,MAAOA,GAAEF,GAAE,EAAI,IAAGI,EAAE,MAAOA,GAAEJ,GAAE,EAAI,IAAIlB,GAAE,GAAIuB,OAAM,uBAAuBL,EAAE,IAAK,MAAMlB,GAAEwB,KAAK,mBAAmBxB,EAAE,GAAIyB,GAAEV,EAAEG,IAAIjB,WAAYa,GAAEI,GAAG,GAAGQ,KAAKD,EAAExB,QAAQ,SAASY,GAAG,GAAIE,GAAED,EAAEI,GAAG,GAAGL,EAAG,OAAOI,GAAEF,EAAEA,EAAEF,IAAIY,EAAEA,EAAExB,QAAQY,EAAEC,EAAEC,EAAEC,GAAG,MAAOD,GAAEG,GAAGjB,QAAkD,IAAI,GAA1CqB,GAAkB,kBAATD,UAAqBA,QAAgBH,EAAE,EAAEA,EAAEF,EAAEW,OAAOT,IAAID,EAAED,EAAEE,GAAI,OAAOD,KAAKW,GAAG,SAASC,EAAQ3B,EAAOD,GAM93B,QAAS6B,GAAoBC,GAC3B,GAAIA,EAAGC,QAAUD,EACf,MAAO,eAET,IAAIE,GAAOF,EAAGG,OAASH,EAAGI,SAASF,MAAQF,EAAGI,SAASC,cAAgBL,EAAGE,IAC1E,QACGA,EAAO,cAAgBA,EAAO,IAAM,wBACpCF,EAAGG,QAAUH,EAAGI,SAASE,OAAS,OAASN,EAAGI,SAASE,OAAS,IAIrE,QAASC,GAAU5B,EAAOE,GAIxB,GAHAA,EAAMA,GAAON,OAAOM,IAGfA,GAAQA,EAAI2B,OAAjB,CAEA,GAAIC,GAAc5B,EAAI2B,OAAOE,YAC7B7B,GAAI2B,OAAOE,aAAe,SAAyBC,EAAOX,EAAIY,GAC5D,GAAIC,KAGuC,qBAAvCC,OAAOC,UAAUC,SAASrB,KAAKK,KACjCa,EAASI,cAAgBlB,EAAoBC,GAC7Ca,EAASK,UAAYlB,EAAGI,SAASc,WAGf,mBAATN,KACTC,EAASM,cAAgBP,GAG3BjC,EAAMyC,iBAAiBT,GACrBU,MAAOR,IAGkB,kBAAhBJ,IACTA,EAAYd,KAAKjB,KAAMiC,EAAOX,EAAIY,KAKxCzC,EAAOD,QAAUqC,YAEN,IAAI","file":"vue.min.js"} \ No newline at end of file +{"version":3,"sources":["vue.js"],"names":["global","factory","exports","module","define","amd","Raven","Plugins","Vue","this","formatComponentName","vm","$root","name","_isVue","$options","_componentTag","__file","vuePlugin","window","config","_oldOnError","errorHandler","error","info","metaData","Object","prototype","toString","call","componentName","propsData","lifecycleHook","captureException","extra","vue"],"mappings":";CAYC,SAAUA,EAAQC,GACC,gBAAZC,UAA0C,mBAAXC,QAAyBA,OAAOD,QAAUD,IAC9D,kBAAXG,SAAyBA,OAAOC,IAAMD,OAAOH,IACnDD,EAAOM,MAAQN,EAAOM,UAAaN,EAAOM,MAAMC,QAAUP,EAAOM,MAAMC,YAAeP,EAAOM,MAAMC,QAAQC,IAAMP,MACjHQ,KAAM,WAAe,YAMvB,SAASC,GAAoBC,GAC3B,GAAIA,EAAGC,QAAUD,EACf,MAAO,eAGT,IAAIE,GAAOF,EAAGG,OAASH,EAAGI,SAASF,MAAQF,EAAGI,SAASC,cAAgBL,EAAGE,IAC1E,QAAQA,EAAO,cAAgBA,EAAO,IAAM,wBAA0BF,EAAGG,QAAUH,EAAGI,SAASE,OAAS,OAASN,EAAGI,SAASE,OAAS,IAGxI,QAASC,GAAUZ,EAAOE,GAGxB,GAFAA,EAAMA,GAAOW,OAAOX,IAEfA,GAAQA,EAAIY,OAAjB,CACA,GAAIC,GAAcb,EAAIY,OAAOE,YAE7Bd,GAAIY,OAAOE,aAAe,SAAyBC,EAAOZ,EAAIa,GAC5D,GAAIC,KAEuC,qBAAvCC,OAAOC,UAAUC,SAASC,KAAKlB,KACjCc,EAASK,cAAgBpB,EAAoBC,GAC7Cc,EAASM,UAAYpB,EAAGI,SAASgB,WAGf,mBAATP,KACTC,EAASO,cAAgBR,GAG3BlB,EAAM2B,iBAAiBV,GACrBW,MAAOT,IAGkB,kBAAhBJ,IACTA,EAAYQ,KAAKpB,KAAMc,EAAOZ,EAAIa,KAKxC,GAAIW,GAAMjB,CAEV,OAAOiB","file":"vue.min.js"} \ No newline at end of file diff --git a/dist/raven.js b/dist/raven.js index 284312328452..21e4188da574 100644 --- a/dist/raven.js +++ b/dist/raven.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.22.1 (eec289b) | github.com/getsentry/raven-js */ +/*! Raven.js 3.22.2 (1b6187b) | github.com/getsentry/raven-js */ /* * Includes TraceKit @@ -10,3272 +10,3122 @@ * */ -(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.Raven = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o href parsing trick because React Native and other +// environments where DOM might not be available - try { - // Attempt to invoke user-land function - // NOTE: If you are a Sentry user, and you are seeing this stack frame, it - // means Raven caught an error invoking your application code. This is - // expected behavior and NOT indicative of a bug with Raven.js. - return func.apply(this, args); - } catch (e) { - self._ignoreNextOnError(); - self.captureException(e, options); - throw e; - } - } - // copy over properties of the old function - for (var property in func) { - if (hasKey(func, property)) { - wrapped[property] = func[property]; - } - } - wrapped.prototype = func.prototype; +function parseUrl$1(url) { + if (typeof url !== 'string') return {}; + var match = url.match(/^(([^:\/?#]+):)?(\/\/([^\/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?$/); // coerce to undefined values to empty string so we don't get 'undefined' - func.__raven_wrapper__ = wrapped; - // Signal that this function has been wrapped/filled already - // for both debugging and to prevent it to being wrapped/filled twice - wrapped.__raven__ = true; - wrapped.__orig__ = func; + var query = match[6] || ''; + var fragment = match[8] || ''; + return { + protocol: match[2], + host: match[4], + path: match[5], + relative: match[5] + query + fragment // everything minus origin - return wrapped; - }, + }; +} - /* - * Uninstalls the global error handler. - * - * @return {Raven} - */ - uninstall: function() { - TraceKit.report.uninstall(); +function uuid4$1() { + var crypto = _window$3.crypto || _window$3.msCrypto; - this._unpatchFunctionToString(); - this._restoreBuiltIns(); + if (!isUndefined$1(crypto) && crypto.getRandomValues) { + // Use window.crypto API if available + // eslint-disable-next-line no-undef + var arr = new Uint16Array(8); + crypto.getRandomValues(arr); // set 4 in byte 7 - Error.stackTraceLimit = this._originalErrorStackTraceLimit; - this._isRavenInstalled = false; + arr[3] = arr[3] & 0xfff | 0x4000; // set 2 most significant bits of byte 9 to '10' - return this; - }, + arr[4] = arr[4] & 0x3fff | 0x8000; - /* - * Manually capture an exception and send it over to Sentry - * - * @param {error} ex An exception to be logged - * @param {object} options A specific set of options for this error [optional] - * @return {Raven} - */ - captureException: function(ex, options) { - // Cases for sending ex as a message, rather than an exception - var isNotError = !isError(ex); - var isNotErrorEvent = !isErrorEvent(ex); - var isErrorEventWithoutError = isErrorEvent(ex) && !ex.error; + var pad = function pad(num) { + var v = num.toString(16); - if ((isNotError && isNotErrorEvent) || isErrorEventWithoutError) { - return this.captureMessage( - ex, - objectMerge( - { - trimHeadFrames: 1, - stacktrace: true // if we fall back to captureMessage, default to attempting a new trace - }, - options - ) - ); - } + while (v.length < 4) { + v = '0' + v; + } - // Get actual Error from ErrorEvent - if (isErrorEvent(ex)) ex = ex.error; + return v; + }; - // Store the raw exception object for potential debugging and introspection - this._lastCapturedException = ex; + return pad(arr[0]) + pad(arr[1]) + pad(arr[2]) + pad(arr[3]) + pad(arr[4]) + pad(arr[5]) + pad(arr[6]) + pad(arr[7]); + } else { + // http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/2117523#2117523 + return 'xxxxxxxxxxxx4xxxyxxxxxxxxxxxxxxx'.replace(/[xy]/g, function (c) { + var r = Math.random() * 16 | 0, + v = c === 'x' ? r : r & 0x3 | 0x8; + return v.toString(16); + }); + } +} +/** + * Given a child DOM element, returns a query-selector statement describing that + * and its ancestors + * e.g. [HTMLElement] => body > div > input#foo.btn[name=baz] + * @param elem + * @returns {string} + */ - // TraceKit.report will re-raise any exception passed to it, - // which means you have to wrap it in try/catch. Instead, we - // can wrap it here and only re-raise if TraceKit.report - // raises an exception different from the one we asked to - // report on. - try { - var stack = TraceKit.computeStackTrace(ex); - this._handleStackInfo(stack, options); - } catch (ex1) { - if (ex !== ex1) { - throw ex1; - } - } - return this; - }, +function htmlTreeAsString$1(elem) { + /* eslint no-extra-parens:0*/ + var MAX_TRAVERSE_HEIGHT = 5, + MAX_OUTPUT_LEN = 80, + out = [], + height = 0, + len = 0, + separator = ' > ', + sepLength = separator.length, + nextStr; - /* - * Manually send a message to Sentry - * - * @param {string} msg A plain message to be captured in Sentry - * @param {object} options A specific set of options for this message [optional] - * @return {Raven} - */ - captureMessage: function(msg, options) { - // config() automagically converts ignoreErrors from a list to a RegExp so we need to test for an - // early call; we'll error on the side of logging anything called before configuration since it's - // probably something you should see: - if ( - !!this._globalOptions.ignoreErrors.test && - this._globalOptions.ignoreErrors.test(msg) - ) { - return; + while (elem && height++ < MAX_TRAVERSE_HEIGHT) { + nextStr = htmlElementAsString(elem); // bail out if + // - nextStr is the 'html' element + // - the length of the string that would be created exceeds MAX_OUTPUT_LEN + // (ignore this limit if we are on the first iteration) + + if (nextStr === 'html' || height > 1 && len + out.length * sepLength + nextStr.length >= MAX_OUTPUT_LEN) { + break; } - options = options || {}; + out.push(nextStr); + len += nextStr.length; + elem = elem.parentNode; + } - var data = objectMerge( - { - message: msg + '' // Make sure it's actually a string - }, - options - ); + return out.reverse().join(separator); +} +/** + * Returns a simple, query-selector representation of a DOM element + * e.g. [HTMLElement] => input#foo.btn[name=baz] + * @param HTMLElement + * @returns {string} + */ - var ex; - // Generate a "synthetic" stack trace from this point. - // NOTE: If you are a Sentry user, and you are seeing this stack frame, it is NOT indicative - // of a bug with Raven.js. Sentry generates synthetic traces either by configuration, - // or if it catches a thrown object without a "stack" property. - try { - throw new Error(msg); - } catch (ex1) { - ex = ex1; - } - // null exception name so `Error` isn't prefixed to msg - ex.name = null; - var stack = TraceKit.computeStackTrace(ex); +function htmlElementAsString(elem) { + var out = [], + className, + classes, + key, + attr, + i; - // stack[0] is `throw new Error(msg)` call itself, we are interested in the frame that was just before that, stack[1] - var initialCall = isArray(stack.stack) && stack.stack[1]; - var fileurl = (initialCall && initialCall.url) || ''; + if (!elem || !elem.tagName) { + return ''; + } - if ( - !!this._globalOptions.ignoreUrls.test && - this._globalOptions.ignoreUrls.test(fileurl) - ) { - return; - } + out.push(elem.tagName.toLowerCase()); - if ( - !!this._globalOptions.whitelistUrls.test && - !this._globalOptions.whitelistUrls.test(fileurl) - ) { - return; + if (elem.id) { + out.push('#' + elem.id); + } + + className = elem.className; + + if (className && isString$1(className)) { + classes = className.split(/\s+/); + + for (i = 0; i < classes.length; i++) { + out.push('.' + classes[i]); } + } - if (this._globalOptions.stacktrace || (options && options.stacktrace)) { - options = objectMerge( - { - // fingerprint on msg, not stack trace (legacy behavior, could be - // revisited) - fingerprint: msg, - // since we know this is a synthetic trace, the top N-most frames - // MUST be from Raven.js, so mark them as in_app later by setting - // trimHeadFrames - trimHeadFrames: (options.trimHeadFrames || 0) + 1 - }, - options - ); + var attrWhitelist = ['type', 'name', 'title', 'alt']; - var frames = this._prepareFrames(stack, options); - data.stacktrace = { - // Sentry expects frames oldest to newest - frames: frames.reverse() - }; + for (i = 0; i < attrWhitelist.length; i++) { + key = attrWhitelist[i]; + attr = elem.getAttribute(key); + + if (attr) { + out.push('[' + key + '="' + attr + '"]'); } + } - // Fire away! - this._send(data); + return out.join(''); +} +/** + * Returns true if either a OR b is truthy, but not both + */ - return this; - }, - captureBreadcrumb: function(obj) { - var crumb = objectMerge( - { - timestamp: now() / 1000 - }, - obj - ); +function isOnlyOneTruthy(a, b) { + return !!(!!a ^ !!b); +} +/** + * Returns true if both parameters are undefined + */ - if (isFunction(this._globalOptions.breadcrumbCallback)) { - var result = this._globalOptions.breadcrumbCallback(crumb); - if (isObject(result) && !isEmptyObject(result)) { - crumb = result; - } else if (result === false) { - return this; - } - } +function isBothUndefined(a, b) { + return isUndefined$1(a) && isUndefined$1(b); +} +/** + * Returns true if the two input exception interfaces have the same content + */ - this._breadcrumbs.push(crumb); - if (this._breadcrumbs.length > this._globalOptions.maxBreadcrumbs) { - this._breadcrumbs.shift(); - } - return this; - }, - addPlugin: function(plugin /*arg1, arg2, ... argN*/) { - var pluginArgs = [].slice.call(arguments, 1); +function isSameException$1(ex1, ex2) { + if (isOnlyOneTruthy(ex1, ex2)) return false; + ex1 = ex1.values[0]; + ex2 = ex2.values[0]; + if (ex1.type !== ex2.type || ex1.value !== ex2.value) return false; // in case both stacktraces are undefined, we can't decide so default to false - this._plugins.push([plugin, pluginArgs]); - if (this._isRavenInstalled) { - this._drainPlugins(); - } + if (isBothUndefined(ex1.stacktrace, ex2.stacktrace)) return false; + return isSameStacktrace$1(ex1.stacktrace, ex2.stacktrace); +} +/** + * Returns true if the two input stack trace interfaces have the same content + */ - return this; - }, - /* - * Set/clear a user to be sent along with the payload. - * - * @param {object} user An object representing user data [optional] - * @return {Raven} - */ - setUserContext: function(user) { - // Intentionally do not merge here since that's an unexpected behavior. - this._globalContext.user = user; +function isSameStacktrace$1(stack1, stack2) { + if (isOnlyOneTruthy(stack1, stack2)) return false; + var frames1 = stack1.frames; + var frames2 = stack2.frames; // Exit early if frame count differs - return this; - }, + if (frames1.length !== frames2.length) return false; // Iterate through every frame; bail out if anything differs - /* - * Merge extra attributes to be sent along with the payload. - * - * @param {object} extra An object representing extra data [optional] - * @return {Raven} - */ - setExtraContext: function(extra) { - this._mergeContext('extra', extra); + var a, b; - return this; - }, + for (var i = 0; i < frames1.length; i++) { + a = frames1[i]; + b = frames2[i]; + if (a.filename !== b.filename || a.lineno !== b.lineno || a.colno !== b.colno || a['function'] !== b['function']) return false; + } - /* - * Merge tags to be sent along with the payload. - * - * @param {object} tags An object representing tags [optional] - * @return {Raven} - */ - setTagsContext: function(tags) { - this._mergeContext('tags', tags); + return true; +} +/** + * Polyfill a method + * @param obj object e.g. `document` + * @param name method name present on object e.g. `addEventListener` + * @param replacement replacement function + * @param track {optional} record instrumentation to an array + */ - return this; - }, - /* - * Clear all of the context. - * - * @return {Raven} - */ - clearContext: function() { - this._globalContext = {}; +function fill$1(obj, name, replacement, track) { + var orig = obj[name]; + obj[name] = replacement(orig); + obj[name].__raven__ = true; + obj[name].__orig__ = orig; - return this; - }, + if (track) { + track.push([obj, name, orig]); + } +} +/** + * Join values in array + * @param input array of values to be joined together + * @param delimiter string to be placed in-between values + * @returns {string} + */ - /* - * Get a copy of the current context. This cannot be mutated. - * - * @return {object} copy of context - */ - getContext: function() { - // lol javascript - return JSON.parse(stringify(this._globalContext)); - }, - /* - * Set environment of application - * - * @param {string} environment Typically something like 'production'. - * @return {Raven} - */ - setEnvironment: function(environment) { - this._globalOptions.environment = environment; +function safeJoin(input, delimiter) { + if (!isArray$1(input)) return ''; + var output = []; - return this; - }, + for (var i = 0; i < input.length; i++) { + try { + output.push(String(input[i])); + } catch (e) { + output.push('[value cannot be serialized]'); + } + } - /* - * Set release version of application - * - * @param {string} release Typically something like a git SHA to identify version - * @return {Raven} - */ - setRelease: function(release) { - this._globalOptions.release = release; + return output.join(delimiter); +} - return this; - }, +var utils = { + isObject: isObject$1, + isError: isError$1, + isErrorEvent: isErrorEvent$1, + isUndefined: isUndefined$1, + isFunction: isFunction$1, + isPlainObject: isPlainObject, + isString: isString$1, + isArray: isArray$1, + isEmptyObject: isEmptyObject$1, + supportsErrorEvent: supportsErrorEvent, + supportsFetch: supportsFetch$1, + wrappedCallback: wrappedCallback, + each: each$1, + objectMerge: objectMerge$1, + truncate: truncate$1, + objectFrozen: objectFrozen$1, + hasKey: hasKey$1, + joinRegExp: joinRegExp$1, + urlencode: urlencode$1, + uuid4: uuid4$1, + htmlTreeAsString: htmlTreeAsString$1, + htmlElementAsString: htmlElementAsString, + isSameException: isSameException$1, + isSameStacktrace: isSameStacktrace$1, + parseUrl: parseUrl$1, + fill: fill$1, + safeJoin: safeJoin +}; - /* - * Set the dataCallback option - * - * @param {function} callback The callback to run which allows the - * data blob to be mutated before sending - * @return {Raven} - */ - setDataCallback: function(callback) { - var original = this._globalOptions.dataCallback; - this._globalOptions.dataCallback = keepOriginalCallback(original, callback); - return this; - }, +/* + TraceKit - Cross brower stack traces - /* - * Set the breadcrumbCallback option - * - * @param {function} callback The callback to run which allows filtering - * or mutating breadcrumbs - * @return {Raven} - */ - setBreadcrumbCallback: function(callback) { - var original = this._globalOptions.breadcrumbCallback; - this._globalOptions.breadcrumbCallback = keepOriginalCallback(original, callback); - return this; - }, + This was originally forked from github.com/occ/TraceKit, but has since been + largely re-written and is now maintained as part of raven-js. Tests for + this are in test/vendor. - /* - * Set the shouldSendCallback option - * - * @param {function} callback The callback to run which allows - * introspecting the blob before sending - * @return {Raven} - */ - setShouldSendCallback: function(callback) { - var original = this._globalOptions.shouldSendCallback; - this._globalOptions.shouldSendCallback = keepOriginalCallback(original, callback); - return this; - }, + MIT license +*/ - /** - * Override the default HTTP transport mechanism that transmits data - * to the Sentry server. - * - * @param {function} transport Function invoked instead of the default - * `makeRequest` handler. - * - * @return {Raven} - */ - setTransport: function(transport) { - this._globalOptions.transport = transport; +var TraceKit = { + collectWindowErrors: true, + debug: false +}; // This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) - return this; - }, +var _window$2 = typeof window !== 'undefined' ? window : typeof commonjsGlobal !== 'undefined' ? commonjsGlobal : typeof self !== 'undefined' ? self : {}; // global reference to slice - /* - * Get the latest raw exception that was captured by Raven. - * - * @return {error} - */ - lastException: function() { - return this._lastCapturedException; - }, - /* - * Get the last event id - * - * @return {string} +var _slice = [].slice; +var UNKNOWN_FUNCTION = '?'; // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error#Error_types + +var ERROR_TYPES_RE = /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/; + +function getLocationHref() { + if (typeof document === 'undefined' || document.location == null) return ''; + return document.location.href; +} +/** + * TraceKit.report: cross-browser processing of unhandled exceptions + * + * Syntax: + * TraceKit.report.subscribe(function(stackInfo) { ... }) + * TraceKit.report.unsubscribe(function(stackInfo) { ... }) + * TraceKit.report(exception) + * try { ...code... } catch(ex) { TraceKit.report(ex); } + * + * Supports: + * - Firefox: full stack trace with line numbers, plus column number + * on top frame; column number is not guaranteed + * - Opera: full stack trace with line and column numbers + * - Chrome: full stack trace with line and column numbers + * - Safari: line and column number for the top frame only; some frames + * may be missing, and column number is not guaranteed + * - IE: line and column number for the top frame only; some frames + * may be missing, and column number is not guaranteed + * + * In theory, TraceKit should work on all of the following versions: + * - IE5.5+ (only 8.0 tested) + * - Firefox 0.9+ (only 3.5+ tested) + * - Opera 7+ (only 10.50 tested; versions 9 and earlier may require + * Exceptions Have Stacktrace to be enabled in opera:config) + * - Safari 3+ (only 4+ tested) + * - Chrome 1+ (only 5+ tested) + * - Konqueror 3.5+ (untested) + * + * Requires TraceKit.computeStackTrace. + * + * Tries to catch all unhandled exceptions and report them to the + * subscribed handlers. Please note that TraceKit.report will rethrow the + * exception. This is REQUIRED in order to get a useful stack trace in IE. + * If the exception does not reach the top of the browser, you will only + * get a stack trace from the point where TraceKit.report was called. + * + * Handlers receive a stackInfo object as described in the + * TraceKit.computeStackTrace docs. + */ + + +TraceKit.report = function reportModuleWrapper() { + var handlers = [], + lastArgs = null, + lastException = null, + lastExceptionStack = null; + /** + * Add a crash handler. + * @param {Function} handler */ - lastEventId: function() { - return this._lastEventId; - }, - /* - * Determine if Raven is setup and ready to go. - * - * @return {boolean} + function subscribe(handler) { + installGlobalHandler(); + handlers.push(handler); + } + /** + * Remove a crash handler. + * @param {Function} handler */ - isSetup: function() { - if (!this._hasJSON) return false; // needs JSON support - if (!this._globalServer) { - if (!this.ravenNotConfiguredError) { - this.ravenNotConfiguredError = true; - this._logDebug('error', 'Error: Raven has not been configured.'); + + + function unsubscribe(handler) { + for (var i = handlers.length - 1; i >= 0; --i) { + if (handlers[i] === handler) { + handlers.splice(i, 1); } - return false; } - return true; - }, + } + /** + * Remove all crash handlers. + */ - afterLoad: function() { - // TODO: remove window dependence? - // Attempt to initialize Raven on load - var RavenConfig = _window.RavenConfig; - if (RavenConfig) { - this.config(RavenConfig.dsn, RavenConfig.config).install(); - } - }, + function unsubscribeAll() { + uninstallGlobalHandler(); + handlers = []; + } + /** + * Dispatch stack information to all handlers. + * @param {Object.} stack + */ - showReportDialog: function(options) { - if ( - !_document // doesn't work without a document (React native) - ) - return; - options = options || {}; + function notifyHandlers(stack, isWindowError) { + var exception = null; - var lastEventId = options.eventId || this.lastEventId(); - if (!lastEventId) { - throw new RavenConfigError('Missing eventId'); + if (isWindowError && !TraceKit.collectWindowErrors) { + return; } - var dsn = options.dsn || this._dsn; - if (!dsn) { - throw new RavenConfigError('Missing DSN'); + for (var i in handlers) { + if (handlers.hasOwnProperty(i)) { + try { + handlers[i].apply(null, [stack].concat(_slice.call(arguments, 2))); + } catch (inner) { + exception = inner; + } + } } - var encode = encodeURIComponent; - var qs = ''; - qs += '?eventId=' + encode(lastEventId); - qs += '&dsn=' + encode(dsn); - - var user = options.user || this._globalContext.user; - if (user) { - if (user.name) qs += '&name=' + encode(user.name); - if (user.email) qs += '&email=' + encode(user.email); + if (exception) { + throw exception; } + } - var globalServer = this._getGlobalServer(this._parseDSN(dsn)); - - var script = _document.createElement('script'); - script.async = true; - script.src = globalServer + '/api/embed/error-page/' + qs; - (_document.head || _document.body).appendChild(script); - }, - - /**** Private functions ****/ - _ignoreNextOnError: function() { - var self = this; - this._ignoreOnError += 1; - setTimeout(function() { - // onerror should trigger before setTimeout - self._ignoreOnError -= 1; - }); - }, + var _oldOnerrorHandler, _onErrorHandlerInstalled; + /** + * Ensures all global unhandled exceptions are recorded. + * Supported by Gecko and IE. + * @param {string} msg Error message. + * @param {string} url URL of script that generated the exception. + * @param {(number|string)} lineNo The line number at which the error + * occurred. + * @param {?(number|string)} colNo The column number at which the error + * occurred. + * @param {?Error} ex The actual Error object. + */ - _triggerEvent: function(eventType, options) { - // NOTE: `event` is a native browser thing, so let's avoid conflicting wiht it - var evt, key; - if (!this._hasDocument) return; + function traceKitWindowOnError(msg, url, lineNo, colNo, ex) { + var stack = null; // If 'ex' is ErrorEvent, get real Error from inside - options = options || {}; + var exception = utils.isErrorEvent(ex) ? ex.error : ex; // If 'msg' is ErrorEvent, get real message from inside - eventType = 'raven' + eventType.substr(0, 1).toUpperCase() + eventType.substr(1); + var message = utils.isErrorEvent(msg) ? msg.message : msg; - if (_document.createEvent) { - evt = _document.createEvent('HTMLEvents'); - evt.initEvent(eventType, true, true); + if (lastExceptionStack) { + TraceKit.computeStackTrace.augmentStackTraceWithInitialElement(lastExceptionStack, url, lineNo, message); + processLastException(); + } else if (exception && utils.isError(exception)) { + // non-string `exception` arg; attempt to extract stack trace + // New chrome and blink send along a real error object + // Let's just report that like a normal error. + // See: https://mikewest.org/2013/08/debugging-runtime-errors-with-window-onerror + stack = TraceKit.computeStackTrace(exception); + notifyHandlers(stack, true); } else { - evt = _document.createEventObject(); - evt.eventType = eventType; - } + var location = { + url: url, + line: lineNo, + column: colNo + }; + var name = undefined; + var groups; - for (key in options) - if (hasKey(options, key)) { - evt[key] = options[key]; - } + if ({}.toString.call(message) === '[object String]') { + var groups = message.match(ERROR_TYPES_RE); - if (_document.createEvent) { - // IE9 if standards - _document.dispatchEvent(evt); - } else { - // IE8 regardless of Quirks or Standards - // IE9 if quirks - try { - _document.fireEvent('on' + evt.eventType.toLowerCase(), evt); - } catch (e) { - // Do nothing + if (groups) { + name = groups[1]; + message = groups[2]; + } } + + location.func = UNKNOWN_FUNCTION; + stack = { + name: name, + message: message, + url: getLocationHref(), + stack: [location] + }; + notifyHandlers(stack, true); } - }, - /** - * Wraps addEventListener to capture UI breadcrumbs - * @param evtName the event name (e.g. "click") - * @returns {Function} - * @private - */ - _breadcrumbEventHandler: function(evtName) { - var self = this; - return function(evt) { - // reset keypress timeout; e.g. triggering a 'click' after - // a 'keypress' will reset the keypress debounce so that a new - // set of keypresses can be recorded - self._keypressTimeout = null; + if (_oldOnerrorHandler) { + return _oldOnerrorHandler.apply(this, arguments); + } - // It's possible this handler might trigger multiple times for the same - // event (e.g. event propagation through node ancestors). Ignore if we've - // already captured the event. - if (self._lastCapturedEvent === evt) return; + return false; + } - self._lastCapturedEvent = evt; + function installGlobalHandler() { + if (_onErrorHandlerInstalled) { + return; + } - // try/catch both: - // - accessing evt.target (see getsentry/raven-js#838, #768) - // - `htmlTreeAsString` because it's complex, and just accessing the DOM incorrectly - // can throw an exception in some circumstances. - var target; - try { - target = htmlTreeAsString(evt.target); - } catch (e) { - target = ''; - } + _oldOnerrorHandler = _window$2.onerror; + _window$2.onerror = traceKitWindowOnError; + _onErrorHandlerInstalled = true; + } - self.captureBreadcrumb({ - category: 'ui.' + evtName, // e.g. ui.click, ui.input - message: target - }); - }; - }, + function uninstallGlobalHandler() { + if (!_onErrorHandlerInstalled) { + return; + } - /** - * Wraps addEventListener to capture keypress UI events - * @returns {Function} - * @private - */ - _keypressEventHandler: function() { - var self = this, - debounceDuration = 1000; // milliseconds + _window$2.onerror = _oldOnerrorHandler; + _onErrorHandlerInstalled = false; + _oldOnerrorHandler = undefined; + } + + function processLastException() { + var _lastExceptionStack = lastExceptionStack, + _lastArgs = lastArgs; + lastArgs = null; + lastExceptionStack = null; + lastException = null; + notifyHandlers.apply(null, [_lastExceptionStack, false].concat(_lastArgs)); + } + /** + * Reports an unhandled Error to TraceKit. + * @param {Error} ex + * @param {?boolean} rethrow If false, do not re-throw the exception. + * Only used for window.onerror to not cause an infinite loop of + * rethrowing. + */ + + + function report(ex, rethrow) { + var args = _slice.call(arguments, 1); + + if (lastExceptionStack) { + if (lastException === ex) { + return; // already caught by an inner catch block, ignore + } else { + processLastException(); + } + } + + var stack = TraceKit.computeStackTrace(ex); + lastExceptionStack = stack; + lastException = ex; + lastArgs = args; // If the stack trace is incomplete, wait for 2 seconds for + // slow slow IE to see if onerror occurs or not before reporting + // this exception; otherwise, we will end up with an incomplete + // stack trace + + setTimeout(function () { + if (lastException === ex) { + processLastException(); + } + }, stack.incomplete ? 2000 : 0); + + if (rethrow !== false) { + throw ex; // re-throw to propagate to the top level (and cause window.onerror) + } + } + + report.subscribe = subscribe; + report.unsubscribe = unsubscribe; + report.uninstall = unsubscribeAll; + return report; +}(); +/** + * TraceKit.computeStackTrace: cross-browser stack traces in JavaScript + * + * Syntax: + * s = TraceKit.computeStackTrace(exception) // consider using TraceKit.report instead (see below) + * Returns: + * s.name - exception name + * s.message - exception message + * s.stack[i].url - JavaScript or HTML file URL + * s.stack[i].func - function name, or empty for anonymous functions (if guessing did not work) + * s.stack[i].args - arguments passed to the function, if known + * s.stack[i].line - line number, if known + * s.stack[i].column - column number, if known + * + * Supports: + * - Firefox: full stack trace with line numbers and unreliable column + * number on top frame + * - Opera 10: full stack trace with line and column numbers + * - Opera 9-: full stack trace with line numbers + * - Chrome: full stack trace with line and column numbers + * - Safari: line and column number for the topmost stacktrace element + * only + * - IE: no line numbers whatsoever + * + * Tries to guess names of anonymous functions by looking for assignments + * in the source code. In IE and Safari, we have to guess source file names + * by searching for function bodies inside all page scripts. This will not + * work for scripts that are loaded cross-domain. + * Here be dragons: some function names may be guessed incorrectly, and + * duplicate functions may be mismatched. + * + * TraceKit.computeStackTrace should only be used for tracing purposes. + * Logging of unhandled exceptions should be done with TraceKit.report, + * which builds on top of TraceKit.computeStackTrace and provides better + * IE support by utilizing the window.onerror event to retrieve information + * about the top of the stack. + * + * Note: In IE and Safari, no stack trace is recorded on the Error object, + * so computeStackTrace instead walks its *own* chain of callers. + * This means that: + * * in Safari, some methods may be missing from the stack trace; + * * in IE, the topmost function in the stack trace will always be the + * caller of computeStackTrace. + * + * This is okay for tracing (because you are likely to be calling + * computeStackTrace from the function you want to be the topmost element + * of the stack trace anyway), but not okay for logging unhandled + * exceptions (because your catch block will likely be far away from the + * inner function that actually caused the exception). + * + */ + + +TraceKit.computeStackTrace = function computeStackTraceWrapper() { + // Contents of Exception in various browsers. + // + // SAFARI: + // ex.message = Can't find variable: qq + // ex.line = 59 + // ex.sourceId = 580238192 + // ex.sourceURL = http://... + // ex.expressionBeginOffset = 96 + // ex.expressionCaretOffset = 98 + // ex.expressionEndOffset = 98 + // ex.name = ReferenceError + // + // FIREFOX: + // ex.message = qq is not defined + // ex.fileName = http://... + // ex.lineNumber = 59 + // ex.columnNumber = 69 + // ex.stack = ...stack trace... (see the example below) + // ex.name = ReferenceError + // + // CHROME: + // ex.message = qq is not defined + // ex.name = ReferenceError + // ex.type = not_defined + // ex.arguments = ['aa'] + // ex.stack = ...stack trace... + // + // INTERNET EXPLORER: + // ex.message = ... + // ex.name = ReferenceError + // + // OPERA: + // ex.message = ...message... (see the example below) + // ex.name = ReferenceError + // ex.opera#sourceloc = 11 (pretty much useless, duplicates the info in ex.message) + // ex.stacktrace = n/a; see 'opera:config#UserPrefs|Exceptions Have Stacktrace' + + /** + * Computes stack trace information from the stack property. + * Chrome and Gecko use this property. + * @param {Error} ex + * @return {?Object.} Stack trace information. + */ + function computeStackTraceFromStackProp(ex) { + if (typeof ex.stack === 'undefined' || !ex.stack) return; + var chrome = /^\s*at (.*?) ?\(((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i, + gecko = /^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|\[native).*?|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i, + winjs = /^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i, + // Used to additionally parse URL/line/column from eval frames + geckoEval = /(\S+) line (\d+)(?: > eval line \d+)* > eval/i, + chromeEval = /\((\S*)(?::(\d+))(?::(\d+))\)/, + lines = ex.stack.split('\n'), + stack = [], + submatch, + parts, + element, + reference = /^(.*) is undefined$/.exec(ex.message); + + for (var i = 0, j = lines.length; i < j; ++i) { + if (parts = chrome.exec(lines[i])) { + var isNative = parts[2] && parts[2].indexOf('native') === 0; // start of line + + var isEval = parts[2] && parts[2].indexOf('eval') === 0; // start of line + + if (isEval && (submatch = chromeEval.exec(parts[2]))) { + // throw out eval line/column and use top-most line/column number + parts[2] = submatch[1]; // url + + parts[3] = submatch[2]; // line + + parts[4] = submatch[3]; // column + } + + element = { + url: !isNative ? parts[2] : null, + func: parts[1] || UNKNOWN_FUNCTION, + args: isNative ? [parts[2]] : [], + line: parts[3] ? +parts[3] : null, + column: parts[4] ? +parts[4] : null + }; + } else if (parts = winjs.exec(lines[i])) { + element = { + url: parts[2], + func: parts[1] || UNKNOWN_FUNCTION, + args: [], + line: +parts[3], + column: parts[4] ? +parts[4] : null + }; + } else if (parts = gecko.exec(lines[i])) { + var isEval = parts[3] && parts[3].indexOf(' > eval') > -1; + + if (isEval && (submatch = geckoEval.exec(parts[3]))) { + // throw out eval line/column and use top-most line number + parts[3] = submatch[1]; + parts[4] = submatch[2]; + parts[5] = null; // no column when eval + } else if (i === 0 && !parts[5] && typeof ex.columnNumber !== 'undefined') { + // FireFox uses this awesome columnNumber property for its top frame + // Also note, Firefox's column number is 0-based and everything else expects 1-based, + // so adding 1 + // NOTE: this hack doesn't work if top-most frame is eval + stack[0].column = ex.columnNumber + 1; + } + + element = { + url: parts[3], + func: parts[1] || UNKNOWN_FUNCTION, + args: parts[2] ? parts[2].split(',') : [], + line: parts[4] ? +parts[4] : null, + column: parts[5] ? +parts[5] : null + }; + } else { + continue; + } + + if (!element.func && element.line) { + element.func = UNKNOWN_FUNCTION; + } + + stack.push(element); + } + + if (!stack.length) { + return null; + } + + return { + name: ex.name, + message: ex.message, + url: getLocationHref(), + stack: stack + }; + } + /** + * Adds information about the first frame to incomplete stack traces. + * Safari and IE require this to get complete data on the first frame. + * @param {Object.} stackInfo Stack trace information from + * one of the compute* methods. + * @param {string} url The URL of the script that caused an error. + * @param {(number|string)} lineNo The line number of the script that + * caused an error. + * @param {string=} message The error generated by the browser, which + * hopefully contains the name of the object that caused the error. + * @return {boolean} Whether or not the stack information was + * augmented. + */ + + + function augmentStackTraceWithInitialElement(stackInfo, url, lineNo, message) { + var initial = { + url: url, + line: lineNo + }; + + if (initial.url && initial.line) { + stackInfo.incomplete = false; + + if (!initial.func) { + initial.func = UNKNOWN_FUNCTION; + } + + if (stackInfo.stack.length > 0) { + if (stackInfo.stack[0].url === initial.url) { + if (stackInfo.stack[0].line === initial.line) { + return false; // already in stack trace + } else if (!stackInfo.stack[0].line && stackInfo.stack[0].func === initial.func) { + stackInfo.stack[0].line = initial.line; + return false; + } + } + } + + stackInfo.stack.unshift(initial); + stackInfo.partial = true; + return true; + } else { + stackInfo.incomplete = true; + } + + return false; + } + /** + * Computes stack trace information by walking the arguments.caller + * chain at the time the exception occurred. This will cause earlier + * frames to be missed but is the only way to get any stack trace in + * Safari and IE. The top frame is restored by + * {@link augmentStackTraceWithInitialElement}. + * @param {Error} ex + * @return {?Object.} Stack trace information. + */ - // TODO: if somehow user switches keypress target before - // debounce timeout is triggered, we will only capture - // a single breadcrumb from the FIRST target (acceptable?) - return function(evt) { - var target; - try { - target = evt.target; - } catch (e) { - // just accessing event properties can throw an exception in some rare circumstances - // see: https://github.com/getsentry/raven-js/issues/838 - return; + + function computeStackTraceByWalkingCallerChain(ex, depth) { + var functionName = /function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i, + stack = [], + funcs = {}, + recursion = false, + parts, + item; + + for (var curr = computeStackTraceByWalkingCallerChain.caller; curr && !recursion; curr = curr.caller) { + if (curr === computeStackTrace || curr === TraceKit.report) { + // console.log('skipping internal function'); + continue; } - var tagName = target && target.tagName; - // only consider keypress events on actual input elements - // this will disregard keypresses targeting body (e.g. tabbing - // through elements, hotkeys, etc) - if ( - !tagName || - (tagName !== 'INPUT' && tagName !== 'TEXTAREA' && !target.isContentEditable) - ) - return; + item = { + url: null, + func: UNKNOWN_FUNCTION, + line: null, + column: null + }; - // record first keypress in a series, but ignore subsequent - // keypresses until debounce clears - var timeout = self._keypressTimeout; - if (!timeout) { - self._breadcrumbEventHandler('input')(evt); + if (curr.name) { + item.func = curr.name; + } else if (parts = functionName.exec(curr.toString())) { + item.func = parts[1]; } - clearTimeout(timeout); - self._keypressTimeout = setTimeout(function() { - self._keypressTimeout = null; - }, debounceDuration); + + if (typeof item.func === 'undefined') { + try { + item.func = parts.input.substring(0, parts.input.indexOf('{')); + } catch (e) {} + } + + if (funcs['' + curr]) { + recursion = true; + } else { + funcs['' + curr] = true; + } + + stack.push(item); + } + + if (depth) { + // console.log('depth is ' + depth); + // console.log('stack is ' + stack.length); + stack.splice(0, depth); + } + + var result = { + name: ex.name, + message: ex.message, + url: getLocationHref(), + stack: stack }; - }, + augmentStackTraceWithInitialElement(result, ex.sourceURL || ex.fileName, ex.line || ex.lineNumber, ex.message || ex.description); + return result; + } + /** + * Computes a stack trace for an exception. + * @param {Error} ex + * @param {(string|number)=} depth + */ + + + function computeStackTrace(ex, depth) { + var stack = null; + depth = depth == null ? 0 : +depth; + + try { + stack = computeStackTraceFromStackProp(ex); + + if (stack) { + return stack; + } + } catch (e) { + if (TraceKit.debug) { + throw e; + } + } + + try { + stack = computeStackTraceByWalkingCallerChain(ex, depth + 1); + + if (stack) { + return stack; + } + } catch (e) { + if (TraceKit.debug) { + throw e; + } + } + + return { + name: ex.name, + message: ex.message, + url: getLocationHref() + }; + } + + computeStackTrace.augmentStackTraceWithInitialElement = augmentStackTraceWithInitialElement; + computeStackTrace.computeStackTraceFromStackProp = computeStackTraceFromStackProp; + return computeStackTrace; +}(); + +var tracekit = TraceKit; + +var stringify_1 = createCommonjsModule(function (module, exports) { + /* + json-stringify-safe + Like JSON.stringify, but doesn't throw on circular references. + + Originally forked from https://github.com/isaacs/json-stringify-safe + version 5.0.1 on 3/8/2017 and modified to handle Errors serialization + and IE8 compatibility. Tests for this are in test/vendor. + + ISC license: https://github.com/isaacs/json-stringify-safe/blob/master/LICENSE + */ + exports = module.exports = stringify; + exports.getSerialize = serializer; + + function indexOf(haystack, needle) { + for (var i = 0; i < haystack.length; ++i) { + if (haystack[i] === needle) return i; + } + + return -1; + } + + function stringify(obj, replacer, spaces, cycleReplacer) { + return JSON.stringify(obj, serializer(replacer, cycleReplacer), spaces); + } // https://github.com/ftlabs/js-abbreviate/blob/fa709e5f139e7770a71827b1893f22418097fbda/index.js#L95-L106 + + + function stringifyError(value) { + var err = { + // These properties are implemented as magical getters and don't show up in for in + stack: value.stack, + message: value.message, + name: value.name + }; + + for (var i in value) { + if (Object.prototype.hasOwnProperty.call(value, i)) { + err[i] = value[i]; + } + } + + return err; + } + + function serializer(replacer, cycleReplacer) { + var stack = []; + var keys = []; + + if (cycleReplacer == null) { + cycleReplacer = function cycleReplacer(key, value) { + if (stack[0] === value) { + return '[Circular ~]'; + } + + return '[Circular ~.' + keys.slice(0, indexOf(stack, value)).join('.') + ']'; + }; + } + + return function (key, value) { + if (stack.length > 0) { + var thisPos = indexOf(stack, this); + ~thisPos ? stack.splice(thisPos + 1) : stack.push(this); + ~thisPos ? keys.splice(thisPos, Infinity, key) : keys.push(key); + + if (~indexOf(stack, value)) { + value = cycleReplacer.call(this, key, value); + } + } else { + stack.push(value); + } + + return replacer == null ? value instanceof Error ? stringifyError(value) : value : replacer.call(this, key, value); + }; + } +}); +var stringify_2 = stringify_1.getSerialize; + +function RavenConfigError(message) { + this.name = 'RavenConfigError'; + this.message = message; +} + +RavenConfigError.prototype = new Error(); +RavenConfigError.prototype.constructor = RavenConfigError; +var configError = RavenConfigError; + +var wrapMethod = function wrapMethod(console, level, callback) { + var originalConsoleLevel = console[level]; + var originalConsole = console; + + if (!(level in console)) { + return; + } + + var sentryLevel = level === 'warn' ? 'warning' : level; + + console[level] = function () { + var args = [].slice.call(arguments); + var msg = utils.safeJoin(args, ' '); + var data = { + level: sentryLevel, + logger: 'console', + extra: { + arguments: args + } + }; + + if (level === 'assert') { + if (args[0] === false) { + // Default browsers message + msg = 'Assertion failed: ' + (utils.safeJoin(args.slice(1), ' ') || 'console.assert'); + data.extra.arguments = args.slice(1); + callback && callback(msg, data); + } + } else { + callback && callback(msg, data); + } // this fails for some browsers. :( + + + if (originalConsoleLevel) { + // IE9 doesn't allow calling apply on console functions directly + // See: https://stackoverflow.com/questions/5472938/does-ie9-support-console-log-and-is-it-a-real-function#answer-5473193 + Function.prototype.apply.call(originalConsoleLevel, originalConsole, args); + } + }; +}; + +var console$1 = { + wrapMethod: wrapMethod +}; + +/*global XDomainRequest:false */ + +var isError = utils.isError; +var isObject = utils.isObject; +var isErrorEvent = utils.isErrorEvent; +var isUndefined = utils.isUndefined; +var isFunction = utils.isFunction; +var isString = utils.isString; +var isArray = utils.isArray; +var isEmptyObject = utils.isEmptyObject; +var each = utils.each; +var objectMerge = utils.objectMerge; +var truncate = utils.truncate; +var objectFrozen = utils.objectFrozen; +var hasKey = utils.hasKey; +var joinRegExp = utils.joinRegExp; +var urlencode = utils.urlencode; +var uuid4 = utils.uuid4; +var htmlTreeAsString = utils.htmlTreeAsString; +var isSameException = utils.isSameException; +var isSameStacktrace = utils.isSameStacktrace; +var parseUrl = utils.parseUrl; +var fill = utils.fill; +var supportsFetch = utils.supportsFetch; +var wrapConsoleMethod = console$1.wrapMethod; +var dsnKeys = 'source protocol user pass host port path'.split(' '); +var dsnPattern = /^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/; + +function now() { + return +new Date(); +} // This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) + + +var _window$1 = typeof window !== 'undefined' ? window : typeof commonjsGlobal !== 'undefined' ? commonjsGlobal : typeof self !== 'undefined' ? self : {}; + +var _document = _window$1.document; +var _navigator = _window$1.navigator; + +function keepOriginalCallback(original, callback) { + return isFunction(callback) ? function (data) { + return callback(data, original); + } : callback; +} // First, check for JSON support +// If there is no JSON, we no-op the core features of Raven +// since JSON is required to encode the payload + + +function Raven$1() { + this._hasJSON = !!(_typeof(JSON) === 'object' && JSON.stringify); // Raven can run in contexts where there's no document (react-native) + + this._hasDocument = !isUndefined(_document); + this._hasNavigator = !isUndefined(_navigator); + this._lastCapturedException = null; + this._lastData = null; + this._lastEventId = null; + this._globalServer = null; + this._globalKey = null; + this._globalProject = null; + this._globalContext = {}; + this._globalOptions = { + // SENTRY_RELEASE can be injected by https://github.com/getsentry/sentry-webpack-plugin + release: _window$1.SENTRY_RELEASE && _window$1.SENTRY_RELEASE.id, + logger: 'javascript', + ignoreErrors: [], + ignoreUrls: [], + whitelistUrls: [], + includePaths: [], + headers: null, + collectWindowErrors: true, + maxMessageLength: 0, + // By default, truncates URL values to 250 chars + maxUrlLength: 250, + stackTraceLimit: 50, + autoBreadcrumbs: true, + instrument: true, + sampleRate: 1 + }; + this._fetchDefaults = { + method: 'POST', + keepalive: true, + referrerPolicy: 'origin' + }; + this._ignoreOnError = 0; + this._isRavenInstalled = false; + this._originalErrorStackTraceLimit = Error.stackTraceLimit; // capture references to window.console *and* all its methods first + // before the console plugin has a chance to monkey patch - /** - * Captures a breadcrumb of type "navigation", normalizing input URLs - * @param to the originating URL - * @param from the target URL - * @private - */ - _captureUrlChange: function(from, to) { - var parsedLoc = parseUrl(this._location.href); - var parsedTo = parseUrl(to); - var parsedFrom = parseUrl(from); + this._originalConsole = _window$1.console || {}; + this._originalConsoleMethods = {}; + this._plugins = []; + this._startTime = now(); + this._wrappedBuiltIns = []; + this._breadcrumbs = []; + this._lastCapturedEvent = null; + this._keypressTimeout; + this._location = _window$1.location; + this._lastHref = this._location && this._location.href; - // because onpopstate only tells you the "new" (to) value of location.href, and - // not the previous (from) value, we need to track the value of the current URL - // state ourselves - this._lastHref = to; + this._resetBackoff(); // eslint-disable-next-line guard-for-in - // Use only the path component of the URL if the URL matches the current - // document (almost all the time when using pushState) - if (parsedLoc.protocol === parsedTo.protocol && parsedLoc.host === parsedTo.host) - to = parsedTo.relative; - if (parsedLoc.protocol === parsedFrom.protocol && parsedLoc.host === parsedFrom.host) - from = parsedFrom.relative; - this.captureBreadcrumb({ - category: 'navigation', - data: { - to: to, - from: from - } - }); - }, + for (var method in this._originalConsole) { + this._originalConsoleMethods[method] = this._originalConsole[method]; + } +} +/* + * The core Raven singleton + * + * @this {Raven} + */ - _patchFunctionToString: function() { - var self = this; - self._originalFunctionToString = Function.prototype.toString; - // eslint-disable-next-line no-extend-native - Function.prototype.toString = function() { - if (typeof this === 'function' && this.__raven__) { - return self._originalFunctionToString.apply(this.__orig__, arguments); - } - return self._originalFunctionToString.apply(this, arguments); - }; - }, - _unpatchFunctionToString: function() { - if (this._originalFunctionToString) { - // eslint-disable-next-line no-extend-native - Function.prototype.toString = this._originalFunctionToString; - } - }, +Raven$1.prototype = { + // Hardcode version string so that raven source can be loaded directly via + // webpack (using a build step causes webpack #1617). Grunt verifies that + // this value matches package.json during build. + // See: https://github.com/getsentry/raven-js/issues/465 + VERSION: '3.22.2', + debug: false, + TraceKit: tracekit, + // alias to TraceKit - /** - * Wrap timer functions and event targets to catch errors and provide - * better metadata. - */ - _instrumentTryCatch: function() { + /* + * Configure Raven with a DSN and extra options + * + * @param {string} dsn The public Sentry DSN + * @param {object} options Set of global options [optional] + * @return {Raven} + */ + config: function config(dsn, options) { var self = this; - var wrappedBuiltIns = self._wrappedBuiltIns; + if (self._globalServer) { + this._logDebug('error', 'Error: Raven has already been configured'); - function wrapTimeFn(orig) { - return function(fn, t) { - // preserve arity - // Make a copy of the arguments to prevent deoptimization - // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments - var args = new Array(arguments.length); - for (var i = 0; i < args.length; ++i) { - args[i] = arguments[i]; - } - var originalCallback = args[0]; - if (isFunction(originalCallback)) { - args[0] = self.wrap(originalCallback); - } + return self; + } - // IE < 9 doesn't support .call/.apply on setInterval/setTimeout, but it - // also supports only two arguments and doesn't care what this is, so we - // can just call the original function directly. - if (orig.apply) { - return orig.apply(this, args); + if (!dsn) return self; + var globalOptions = self._globalOptions; // merge in options + + if (options) { + each(options, function (key, value) { + // tags and extra are special and need to be put into context + if (key === 'tags' || key === 'extra' || key === 'user') { + self._globalContext[key] = value; } else { - return orig(args[0], args[1]); + globalOptions[key] = value; } - }; + }); } - var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; + self.setDSN(dsn); // "Script error." is hard coded into browsers for errors that it can't read. + // this is the result of a script being pulled in from an external domain and CORS. - function wrapEventTarget(global) { - var proto = _window[global] && _window[global].prototype; - if (proto && proto.hasOwnProperty && proto.hasOwnProperty('addEventListener')) { - fill( - proto, - 'addEventListener', - function(orig) { - return function(evtName, fn, capture, secure) { - // preserve arity - try { - if (fn && fn.handleEvent) { - fn.handleEvent = self.wrap(fn.handleEvent); - } - } catch (err) { - // can sometimes get 'Permission denied to access property "handle Event' - } + globalOptions.ignoreErrors.push(/^Script error\.?$/); + globalOptions.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/); // join regexp rules into one big rule - // More breadcrumb DOM capture ... done here and not in `_instrumentBreadcrumbs` - // so that we don't have more than one wrapper function - var before, clickHandler, keypressHandler; - - if ( - autoBreadcrumbs && - autoBreadcrumbs.dom && - (global === 'EventTarget' || global === 'Node') - ) { - // NOTE: generating multiple handlers per addEventListener invocation, should - // revisit and verify we can just use one (almost certainly) - clickHandler = self._breadcrumbEventHandler('click'); - keypressHandler = self._keypressEventHandler(); - before = function(evt) { - // need to intercept every DOM event in `before` argument, in case that - // same wrapped method is re-used for different events (e.g. mousemove THEN click) - // see #724 - if (!evt) return; - - var eventType; - try { - eventType = evt.type; - } catch (e) { - // just accessing event properties can throw an exception in some rare circumstances - // see: https://github.com/getsentry/raven-js/issues/838 - return; - } - if (eventType === 'click') return clickHandler(evt); - else if (eventType === 'keypress') return keypressHandler(evt); - }; - } - return orig.call( - this, - evtName, - self.wrap(fn, undefined, before), - capture, - secure - ); - }; - }, - wrappedBuiltIns - ); - fill( - proto, - 'removeEventListener', - function(orig) { - return function(evt, fn, capture, secure) { - try { - fn = fn && (fn.__raven_wrapper__ ? fn.__raven_wrapper__ : fn); - } catch (e) { - // ignore, accessing __raven_wrapper__ will throw in some Selenium environments - } - return orig.call(this, evt, fn, capture, secure); - }; - }, - wrappedBuiltIns - ); - } - } + globalOptions.ignoreErrors = joinRegExp(globalOptions.ignoreErrors); + globalOptions.ignoreUrls = globalOptions.ignoreUrls.length ? joinRegExp(globalOptions.ignoreUrls) : false; + globalOptions.whitelistUrls = globalOptions.whitelistUrls.length ? joinRegExp(globalOptions.whitelistUrls) : false; + globalOptions.includePaths = joinRegExp(globalOptions.includePaths); + globalOptions.maxBreadcrumbs = Math.max(0, Math.min(globalOptions.maxBreadcrumbs || 100, 100)); // default and hard limit is 100 - fill(_window, 'setTimeout', wrapTimeFn, wrappedBuiltIns); - fill(_window, 'setInterval', wrapTimeFn, wrappedBuiltIns); - if (_window.requestAnimationFrame) { - fill( - _window, - 'requestAnimationFrame', - function(orig) { - return function(cb) { - return orig(self.wrap(cb)); - }; - }, - wrappedBuiltIns - ); + var autoBreadcrumbDefaults = { + xhr: true, + console: true, + dom: true, + location: true, + sentry: true + }; + var autoBreadcrumbs = globalOptions.autoBreadcrumbs; + + if ({}.toString.call(autoBreadcrumbs) === '[object Object]') { + autoBreadcrumbs = objectMerge(autoBreadcrumbDefaults, autoBreadcrumbs); + } else if (autoBreadcrumbs !== false) { + autoBreadcrumbs = autoBreadcrumbDefaults; } - // event targets borrowed from bugsnag-js: - // https://github.com/bugsnag/bugsnag-js/blob/master/src/bugsnag.js#L666 - var eventTargets = [ - 'EventTarget', - 'Window', - 'Node', - 'ApplicationCache', - 'AudioTrackList', - 'ChannelMergerNode', - 'CryptoOperation', - 'EventSource', - 'FileReader', - 'HTMLUnknownElement', - 'IDBDatabase', - 'IDBRequest', - 'IDBTransaction', - 'KeyOperation', - 'MediaController', - 'MessagePort', - 'ModalWindow', - 'Notification', - 'SVGElementInstance', - 'Screen', - 'TextTrack', - 'TextTrackCue', - 'TextTrackList', - 'WebSocket', - 'WebSocketWorker', - 'Worker', - 'XMLHttpRequest', - 'XMLHttpRequestEventTarget', - 'XMLHttpRequestUpload' - ]; - for (var i = 0; i < eventTargets.length; i++) { - wrapEventTarget(eventTargets[i]); + globalOptions.autoBreadcrumbs = autoBreadcrumbs; + var instrumentDefaults = { + tryCatch: true + }; + var instrument = globalOptions.instrument; + + if ({}.toString.call(instrument) === '[object Object]') { + instrument = objectMerge(instrumentDefaults, instrument); + } else if (instrument !== false) { + instrument = instrumentDefaults; } + + globalOptions.instrument = instrument; + tracekit.collectWindowErrors = !!globalOptions.collectWindowErrors; // return for chaining + + return self; }, - /** - * Instrument browser built-ins w/ breadcrumb capturing - * - XMLHttpRequests - * - DOM interactions (click/typing) - * - window.location changes - * - console - * - * Can be disabled or individually configured via the `autoBreadcrumbs` config option - */ - _instrumentBreadcrumbs: function() { + /* + * Installs a global window.onerror error handler + * to capture and report uncaught exceptions. + * At this point, install() is required to be called due + * to the way TraceKit is set up. + * + * @return {Raven} + */ + install: function install() { var self = this; - var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; - var wrappedBuiltIns = self._wrappedBuiltIns; + if (self.isSetup() && !self._isRavenInstalled) { + tracekit.report.subscribe(function () { + self._handleOnErrorStackInfo.apply(self, arguments); + }); - function wrapProp(prop, xhr) { - if (prop in xhr && isFunction(xhr[prop])) { - fill(xhr, prop, function(orig) { - return self.wrap(orig); - }); // intentionally don't track filled methods on XHR instances + self._patchFunctionToString(); + + if (self._globalOptions.instrument && self._globalOptions.instrument.tryCatch) { + self._instrumentTryCatch(); } - } - if (autoBreadcrumbs.xhr && 'XMLHttpRequest' in _window) { - var xhrproto = XMLHttpRequest.prototype; - fill( - xhrproto, - 'open', - function(origOpen) { - return function(method, url) { - // preserve arity + if (self._globalOptions.autoBreadcrumbs) self._instrumentBreadcrumbs(); // Install all of the plugins - // if Sentry key appears in URL, don't capture - if (isString(url) && url.indexOf(self._globalKey) === -1) { - this.__raven_xhr = { - method: method, - url: url, - status_code: null - }; - } + self._drainPlugins(); - return origOpen.apply(this, arguments); - }; - }, - wrappedBuiltIns - ); - - fill( - xhrproto, - 'send', - function(origSend) { - return function() { - // preserve arity - var xhr = this; + self._isRavenInstalled = true; + } - function onreadystatechangeHandler() { - if (xhr.__raven_xhr && xhr.readyState === 4) { - try { - // touching statusCode in some platforms throws - // an exception - xhr.__raven_xhr.status_code = xhr.status; - } catch (e) { - /* do nothing */ - } + Error.stackTraceLimit = self._globalOptions.stackTraceLimit; + return this; + }, - self.captureBreadcrumb({ - type: 'http', - category: 'xhr', - data: xhr.__raven_xhr - }); - } - } + /* + * Set the DSN (can be called multiple time unlike config) + * + * @param {string} dsn The public Sentry DSN + */ + setDSN: function setDSN(dsn) { + var self = this, + uri = self._parseDSN(dsn), + lastSlash = uri.path.lastIndexOf('/'), + path = uri.path.substr(1, lastSlash); - var props = ['onload', 'onerror', 'onprogress']; - for (var j = 0; j < props.length; j++) { - wrapProp(props[j], xhr); - } + self._dsn = dsn; + self._globalKey = uri.user; + self._globalSecret = uri.pass && uri.pass.substr(1); + self._globalProject = uri.path.substr(lastSlash + 1); + self._globalServer = self._getGlobalServer(uri); + self._globalEndpoint = self._globalServer + '/' + path + 'api/' + self._globalProject + '/store/'; // Reset backoff state since we may be pointing at a + // new project/server - if ('onreadystatechange' in xhr && isFunction(xhr.onreadystatechange)) { - fill( - xhr, - 'onreadystatechange', - function(orig) { - return self.wrap(orig, undefined, onreadystatechangeHandler); - } /* intentionally don't track this instrumentation */ - ); - } else { - // if onreadystatechange wasn't actually set by the page on this xhr, we - // are free to set our own and capture the breadcrumb - xhr.onreadystatechange = onreadystatechangeHandler; - } + this._resetBackoff(); + }, - return origSend.apply(this, arguments); - }; - }, - wrappedBuiltIns - ); + /* + * Wrap code within a context so Raven can capture errors + * reliably across domains that is executed immediately. + * + * @param {object} options A specific set of options for this context [optional] + * @param {function} func The callback to be immediately executed within the context + * @param {array} args An array of arguments to be called with the callback [optional] + */ + context: function context(options, func, args) { + if (isFunction(options)) { + args = func || []; + func = options; + options = undefined; } - if (autoBreadcrumbs.xhr && supportsFetch()) { - fill( - _window, - 'fetch', - function(origFetch) { - return function() { - // preserve arity - // Make a copy of the arguments to prevent deoptimization - // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments - var args = new Array(arguments.length); - for (var i = 0; i < args.length; ++i) { - args[i] = arguments[i]; - } + return this.wrap(options, func).apply(this, args); + }, - var fetchInput = args[0]; - var method = 'GET'; - var url; + /* + * Wrap code within a context and returns back a new function to be executed + * + * @param {object} options A specific set of options for this context [optional] + * @param {function} func The function to be wrapped in a new context + * @param {function} func A function to call before the try/catch wrapper [optional, private] + * @return {function} The newly wrapped functions with a context + */ + wrap: function wrap(options, func, _before) { + var self = this; // 1 argument has been passed, and it's not a function + // so just return it - if (typeof fetchInput === 'string') { - url = fetchInput; - } else if ('Request' in _window && fetchInput instanceof _window.Request) { - url = fetchInput.url; - if (fetchInput.method) { - method = fetchInput.method; - } - } else { - url = '' + fetchInput; - } + if (isUndefined(func) && !isFunction(options)) { + return options; + } // options is optional - // if Sentry key appears in URL, don't capture, as it's our own request - if (url.indexOf(self._globalKey) !== -1) { - return origFetch.apply(this, args); - } - if (args[1] && args[1].method) { - method = args[1].method; - } + if (isFunction(options)) { + func = options; + options = undefined; + } // At this point, we've passed along 2 arguments, and the second one + // is not a function either, so we'll just return the second argument. - var fetchData = { - method: method, - url: url, - status_code: null - }; - return origFetch.apply(this, args).then(function(response) { - fetchData.status_code = response.status; + if (!isFunction(func)) { + return func; + } // We don't wanna wrap it twice! + - self.captureBreadcrumb({ - type: 'http', - category: 'fetch', - data: fetchData - }); + try { + if (func.__raven__) { + return func; + } // If this has already been wrapped in the past, return that - return response; - }); - }; - }, - wrappedBuiltIns - ); - } - // Capture breadcrumbs from any click that is unhandled / bubbled up all the way - // to the document. Do this before we instrument addEventListener. - if (autoBreadcrumbs.dom && this._hasDocument) { - if (_document.addEventListener) { - _document.addEventListener('click', self._breadcrumbEventHandler('click'), false); - _document.addEventListener('keypress', self._keypressEventHandler(), false); - } else { - // IE8 Compatibility - _document.attachEvent('onclick', self._breadcrumbEventHandler('click')); - _document.attachEvent('onkeypress', self._keypressEventHandler()); + if (func.__raven_wrapper__) { + return func.__raven_wrapper__; } + } catch (e) { + // Just accessing custom props in some Selenium environments + // can cause a "Permission denied" exception (see raven-js#495). + // Bail on wrapping and return the function as-is (defers to window.onerror). + return func; } - // record navigation (URL) changes - // NOTE: in Chrome App environment, touching history.pushState, *even inside - // a try/catch block*, will cause Chrome to output an error to console.error - // borrowed from: https://github.com/angular/angular.js/pull/13945/files - var chrome = _window.chrome; - var isChromePackagedApp = chrome && chrome.app && chrome.app.runtime; - var hasPushAndReplaceState = - !isChromePackagedApp && - _window.history && - history.pushState && - history.replaceState; - if (autoBreadcrumbs.location && hasPushAndReplaceState) { - // TODO: remove onpopstate handler on uninstall() - var oldOnPopState = _window.onpopstate; - _window.onpopstate = function() { - var currentHref = self._location.href; - self._captureUrlChange(self._lastHref, currentHref); + function wrapped() { + var args = [], + i = arguments.length, + deep = !options || options && options.deep !== false; - if (oldOnPopState) { - return oldOnPopState.apply(this, arguments); - } - }; + if (_before && isFunction(_before)) { + _before.apply(this, arguments); + } // Recursively wrap all of a function's arguments that are + // functions themselves. - var historyReplacementFunction = function(origHistFunction) { - // note history.pushState.length is 0; intentionally not declaring - // params to preserve 0 arity - return function(/* state, title, url */) { - var url = arguments.length > 2 ? arguments[2] : undefined; - // url argument is optional - if (url) { - // coerce to string (this is what pushState does) - self._captureUrlChange(self._lastHref, url + ''); - } + while (i--) { + args[i] = deep ? self.wrap(options, arguments[i]) : arguments[i]; + } - return origHistFunction.apply(this, arguments); - }; - }; + try { + // Attempt to invoke user-land function + // NOTE: If you are a Sentry user, and you are seeing this stack frame, it + // means Raven caught an error invoking your application code. This is + // expected behavior and NOT indicative of a bug with Raven.js. + return func.apply(this, args); + } catch (e) { + self._ignoreNextOnError(); - fill(history, 'pushState', historyReplacementFunction, wrappedBuiltIns); - fill(history, 'replaceState', historyReplacementFunction, wrappedBuiltIns); - } + self.captureException(e, options); + throw e; + } + } // copy over properties of the old function - if (autoBreadcrumbs.console && 'console' in _window && console.log) { - // console - var consoleMethodCallback = function(msg, data) { - self.captureBreadcrumb({ - message: msg, - level: data.level, - category: 'console' - }); - }; - each(['debug', 'info', 'warn', 'error', 'log'], function(_, level) { - wrapConsoleMethod(console, level, consoleMethodCallback); - }); + for (var property in func) { + if (hasKey(func, property)) { + wrapped[property] = func[property]; + } } - }, - _restoreBuiltIns: function() { - // restore any wrapped builtins - var builtin; - while (this._wrappedBuiltIns.length) { - builtin = this._wrappedBuiltIns.shift(); - - var obj = builtin[0], - name = builtin[1], - orig = builtin[2]; + wrapped.prototype = func.prototype; + func.__raven_wrapper__ = wrapped; // Signal that this function has been wrapped/filled already + // for both debugging and to prevent it to being wrapped/filled twice - obj[name] = orig; - } + wrapped.__raven__ = true; + wrapped.__orig__ = func; + return wrapped; }, - _drainPlugins: function() { - var self = this; - - // FIX ME TODO - each(this._plugins, function(_, plugin) { - var installer = plugin[0]; - var args = plugin[1]; - installer.apply(self, [self].concat(args)); - }); - }, + /* + * Uninstalls the global error handler. + * + * @return {Raven} + */ + uninstall: function uninstall() { + tracekit.report.uninstall(); - _parseDSN: function(str) { - var m = dsnPattern.exec(str), - dsn = {}, - i = 7; + this._unpatchFunctionToString(); - try { - while (i--) dsn[dsnKeys[i]] = m[i] || ''; - } catch (e) { - throw new RavenConfigError('Invalid DSN: ' + str); - } + this._restoreBuiltIns(); - if (dsn.pass && !this._globalOptions.allowSecretKey) { - throw new RavenConfigError( - 'Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key' - ); - } + this._restoreConsole(); - return dsn; + Error.stackTraceLimit = this._originalErrorStackTraceLimit; + this._isRavenInstalled = false; + return this; }, - _getGlobalServer: function(uri) { - // assemble the endpoint from the uri pieces - var globalServer = '//' + uri.host + (uri.port ? ':' + uri.port : ''); + /* + * Manually capture an exception and send it over to Sentry + * + * @param {error} ex An exception to be logged + * @param {object} options A specific set of options for this error [optional] + * @return {Raven} + */ + captureException: function captureException(ex, options) { + options = objectMerge({ + trimHeadFrames: 0 + }, options ? options : {}); // Cases for sending ex as a message, rather than an exception - if (uri.protocol) { - globalServer = uri.protocol + ':' + globalServer; - } - return globalServer; - }, + var isNotError = !isError(ex); + var isNotErrorEvent = !isErrorEvent(ex); + var isErrorEventWithoutError = isErrorEvent(ex) && !ex.error; - _handleOnErrorStackInfo: function() { - // if we are intentionally ignoring errors via onerror, bail out - if (!this._ignoreOnError) { - this._handleStackInfo.apply(this, arguments); - } - }, + if (isNotError && isNotErrorEvent || isErrorEventWithoutError) { + return this.captureMessage(ex, objectMerge(options, { + stacktrace: true, + // if we fall back to captureMessage, default to attempting a new trace + trimHeadFrames: options.trimHeadFrames + 1 + })); + } // Get actual Error from ErrorEvent - _handleStackInfo: function(stackInfo, options) { - var frames = this._prepareFrames(stackInfo, options); - this._triggerEvent('handle', { - stackInfo: stackInfo, - options: options - }); + if (isErrorEvent(ex)) ex = ex.error; // Store the raw exception object for potential debugging and introspection - this._processException( - stackInfo.name, - stackInfo.message, - stackInfo.url, - stackInfo.lineno, - frames, - options - ); - }, + this._lastCapturedException = ex; // TraceKit.report will re-raise any exception passed to it, + // which means you have to wrap it in try/catch. Instead, we + // can wrap it here and only re-raise if TraceKit.report + // raises an exception different from the one we asked to + // report on. - _prepareFrames: function(stackInfo, options) { - var self = this; - var frames = []; - if (stackInfo.stack && stackInfo.stack.length) { - each(stackInfo.stack, function(i, stack) { - var frame = self._normalizeFrame(stack, stackInfo.url); - if (frame) { - frames.push(frame); - } - }); + try { + var stack = tracekit.computeStackTrace(ex); - // e.g. frames captured via captureMessage throw - if (options && options.trimHeadFrames) { - for (var j = 0; j < options.trimHeadFrames && j < frames.length; j++) { - frames[j].in_app = false; - } + this._handleStackInfo(stack, options); + } catch (ex1) { + if (ex !== ex1) { + throw ex1; } } - frames = frames.slice(0, this._globalOptions.stackTraceLimit); - return frames; - }, - _normalizeFrame: function(frame, stackInfoUrl) { - // normalize the frames data - var normalized = { - filename: frame.url, - lineno: frame.line, - colno: frame.column, - function: frame.func || '?' - }; + return this; + }, - // Case when we don't have any information about the error - // E.g. throwing a string or raw object, instead of an `Error` in Firefox - // Generating synthetic error doesn't add any value here - // - // We should probably somehow let a user know that they should fix their code - if (!frame.url) { - normalized.filename = stackInfoUrl; // fallback to whole stacks url from onerror handler + /* + * Manually send a message to Sentry + * + * @param {string} msg A plain message to be captured in Sentry + * @param {object} options A specific set of options for this message [optional] + * @return {Raven} + */ + captureMessage: function captureMessage(msg, options) { + // config() automagically converts ignoreErrors from a list to a RegExp so we need to test for an + // early call; we'll error on the side of logging anything called before configuration since it's + // probably something you should see: + if (!!this._globalOptions.ignoreErrors.test && this._globalOptions.ignoreErrors.test(msg)) { + return; } - normalized.in_app = !// determine if an exception came from outside of our app - // first we check the global includePaths list. - ( - (!!this._globalOptions.includePaths.test && - !this._globalOptions.includePaths.test(normalized.filename)) || - // Now we check for fun, if the function name is Raven or TraceKit - /(Raven|TraceKit)\./.test(normalized['function']) || - // finally, we do a last ditch effort and check for raven.min.js - /raven\.(min\.)?js$/.test(normalized.filename) - ); + options = options || {}; + var data = objectMerge({ + message: msg + '' // Make sure it's actually a string - return normalized; - }, + }, options); + var ex; // Generate a "synthetic" stack trace from this point. + // NOTE: If you are a Sentry user, and you are seeing this stack frame, it is NOT indicative + // of a bug with Raven.js. Sentry generates synthetic traces either by configuration, + // or if it catches a thrown object without a "stack" property. - _processException: function(type, message, fileurl, lineno, frames, options) { - var prefixedMessage = (type ? type + ': ' : '') + (message || ''); - if ( - !!this._globalOptions.ignoreErrors.test && - (this._globalOptions.ignoreErrors.test(message) || - this._globalOptions.ignoreErrors.test(prefixedMessage)) - ) { - return; - } + try { + throw new Error(msg); + } catch (ex1) { + ex = ex1; + } // null exception name so `Error` isn't prefixed to msg - var stacktrace; - if (frames && frames.length) { - fileurl = frames[0].filename || fileurl; - // Sentry expects frames oldest to newest - // and JS sends them as newest to oldest - frames.reverse(); - stacktrace = {frames: frames}; - } else if (fileurl) { - stacktrace = { - frames: [ - { - filename: fileurl, - lineno: lineno, - in_app: true - } - ] - }; - } + ex.name = null; + var stack = tracekit.computeStackTrace(ex); // stack[0] is `throw new Error(msg)` call itself, we are interested in the frame that was just before that, stack[1] + + var initialCall = isArray(stack.stack) && stack.stack[1]; + var fileurl = initialCall && initialCall.url || ''; - if ( - !!this._globalOptions.ignoreUrls.test && - this._globalOptions.ignoreUrls.test(fileurl) - ) { + if (!!this._globalOptions.ignoreUrls.test && this._globalOptions.ignoreUrls.test(fileurl)) { return; } - if ( - !!this._globalOptions.whitelistUrls.test && - !this._globalOptions.whitelistUrls.test(fileurl) - ) { + if (!!this._globalOptions.whitelistUrls.test && !this._globalOptions.whitelistUrls.test(fileurl)) { return; } - var data = objectMerge( - { - // sentry.interfaces.Exception - exception: { - values: [ - { - type: type, - value: message, - stacktrace: stacktrace - } - ] - }, - culprit: fileurl - }, - options - ); + if (this._globalOptions.stacktrace || options && options.stacktrace) { + options = objectMerge({ + // fingerprint on msg, not stack trace (legacy behavior, could be + // revisited) + fingerprint: msg, + // since we know this is a synthetic trace, the top N-most frames + // MUST be from Raven.js, so mark them as in_app later by setting + // trimHeadFrames + trimHeadFrames: (options.trimHeadFrames || 0) + 1 + }, options); + + var frames = this._prepareFrames(stack, options); + + data.stacktrace = { + // Sentry expects frames oldest to newest + frames: frames.reverse() + }; + } // Fire away! + - // Fire away! this._send(data); + + return this; }, + captureBreadcrumb: function captureBreadcrumb(obj) { + var crumb = objectMerge({ + timestamp: now() / 1000 + }, obj); - _trimPacket: function(data) { - // For now, we only want to truncate the two different messages - // but this could/should be expanded to just trim everything - var max = this._globalOptions.maxMessageLength; - if (data.message) { - data.message = truncate(data.message, max); + if (isFunction(this._globalOptions.breadcrumbCallback)) { + var result = this._globalOptions.breadcrumbCallback(crumb); + + if (isObject(result) && !isEmptyObject(result)) { + crumb = result; + } else if (result === false) { + return this; + } } - if (data.exception) { - var exception = data.exception.values[0]; - exception.value = truncate(exception.value, max); + + this._breadcrumbs.push(crumb); + + if (this._breadcrumbs.length > this._globalOptions.maxBreadcrumbs) { + this._breadcrumbs.shift(); } - var request = data.request; - if (request) { - if (request.url) { - request.url = truncate(request.url, this._globalOptions.maxUrlLength); - } - if (request.Referer) { - request.Referer = truncate(request.Referer, this._globalOptions.maxUrlLength); - } + return this; + }, + addPlugin: function addPlugin(plugin + /*arg1, arg2, ... argN*/ + ) { + var pluginArgs = [].slice.call(arguments, 1); + + this._plugins.push([plugin, pluginArgs]); + + if (this._isRavenInstalled) { + this._drainPlugins(); } - if (data.breadcrumbs && data.breadcrumbs.values) - this._trimBreadcrumbs(data.breadcrumbs); + return this; + }, - return data; + /* + * Set/clear a user to be sent along with the payload. + * + * @param {object} user An object representing user data [optional] + * @return {Raven} + */ + setUserContext: function setUserContext(user) { + // Intentionally do not merge here since that's an unexpected behavior. + this._globalContext.user = user; + return this; }, - /** - * Truncate breadcrumb values (right now just URLs) - */ - _trimBreadcrumbs: function(breadcrumbs) { - // known breadcrumb properties with urls - // TODO: also consider arbitrary prop values that start with (https?)?:// - var urlProps = ['to', 'from', 'url'], - urlProp, - crumb, - data; + /* + * Merge extra attributes to be sent along with the payload. + * + * @param {object} extra An object representing extra data [optional] + * @return {Raven} + */ + setExtraContext: function setExtraContext(extra) { + this._mergeContext('extra', extra); - for (var i = 0; i < breadcrumbs.values.length; ++i) { - crumb = breadcrumbs.values[i]; - if ( - !crumb.hasOwnProperty('data') || - !isObject(crumb.data) || - objectFrozen(crumb.data) - ) - continue; + return this; + }, - data = objectMerge({}, crumb.data); - for (var j = 0; j < urlProps.length; ++j) { - urlProp = urlProps[j]; - if (data.hasOwnProperty(urlProp) && data[urlProp]) { - data[urlProp] = truncate(data[urlProp], this._globalOptions.maxUrlLength); - } - } - breadcrumbs.values[i].data = data; - } + /* + * Merge tags to be sent along with the payload. + * + * @param {object} tags An object representing tags [optional] + * @return {Raven} + */ + setTagsContext: function setTagsContext(tags) { + this._mergeContext('tags', tags); + + return this; }, - _getHttpData: function() { - if (!this._hasNavigator && !this._hasDocument) return; - var httpData = {}; + /* + * Clear all of the context. + * + * @return {Raven} + */ + clearContext: function clearContext() { + this._globalContext = {}; + return this; + }, - if (this._hasNavigator && _navigator.userAgent) { - httpData.headers = { - 'User-Agent': navigator.userAgent - }; - } + /* + * Get a copy of the current context. This cannot be mutated. + * + * @return {object} copy of context + */ + getContext: function getContext() { + // lol javascript + return JSON.parse(stringify_1(this._globalContext)); + }, - // Check in `window` instead of `document`, as we may be in ServiceWorker environment - if (_window.location && _window.location.href) { - httpData.url = _window.location.href; - } + /* + * Set environment of application + * + * @param {string} environment Typically something like 'production'. + * @return {Raven} + */ + setEnvironment: function setEnvironment(environment) { + this._globalOptions.environment = environment; + return this; + }, - if (this._hasDocument && _document.referrer) { - if (!httpData.headers) httpData.headers = {}; - httpData.headers.Referer = _document.referrer; - } + /* + * Set release version of application + * + * @param {string} release Typically something like a git SHA to identify version + * @return {Raven} + */ + setRelease: function setRelease(release) { + this._globalOptions.release = release; + return this; + }, - return httpData; + /* + * Set the dataCallback option + * + * @param {function} callback The callback to run which allows the + * data blob to be mutated before sending + * @return {Raven} + */ + setDataCallback: function setDataCallback(callback) { + var original = this._globalOptions.dataCallback; + this._globalOptions.dataCallback = keepOriginalCallback(original, callback); + return this; }, - _resetBackoff: function() { - this._backoffDuration = 0; - this._backoffStart = null; + /* + * Set the breadcrumbCallback option + * + * @param {function} callback The callback to run which allows filtering + * or mutating breadcrumbs + * @return {Raven} + */ + setBreadcrumbCallback: function setBreadcrumbCallback(callback) { + var original = this._globalOptions.breadcrumbCallback; + this._globalOptions.breadcrumbCallback = keepOriginalCallback(original, callback); + return this; }, - _shouldBackoff: function() { - return this._backoffDuration && now() - this._backoffStart < this._backoffDuration; + /* + * Set the shouldSendCallback option + * + * @param {function} callback The callback to run which allows + * introspecting the blob before sending + * @return {Raven} + */ + setShouldSendCallback: function setShouldSendCallback(callback) { + var original = this._globalOptions.shouldSendCallback; + this._globalOptions.shouldSendCallback = keepOriginalCallback(original, callback); + return this; }, /** - * Returns true if the in-process data payload matches the signature - * of the previously-sent data + * Override the default HTTP transport mechanism that transmits data + * to the Sentry server. * - * NOTE: This has to be done at this level because TraceKit can generate - * data from window.onerror WITHOUT an exception object (IE8, IE9, - * other old browsers). This can take the form of an "exception" - * data object with a single frame (derived from the onerror args). + * @param {function} transport Function invoked instead of the default + * `makeRequest` handler. + * + * @return {Raven} */ - _isRepeatData: function(current) { - var last = this._lastData; - - if ( - !last || - current.message !== last.message || // defined for captureMessage - current.culprit !== last.culprit // defined for captureException/onerror - ) - return false; - - // Stacktrace interface (i.e. from captureMessage) - if (current.stacktrace || last.stacktrace) { - return isSameStacktrace(current.stacktrace, last.stacktrace); - } else if (current.exception || last.exception) { - // Exception interface (i.e. from captureException/onerror) - return isSameException(current.exception, last.exception); - } + setTransport: function setTransport(transport) { + this._globalOptions.transport = transport; + return this; + }, - return true; + /* + * Get the latest raw exception that was captured by Raven. + * + * @return {error} + */ + lastException: function lastException() { + return this._lastCapturedException; }, - _setBackoffState: function(request) { - // If we are already in a backoff state, don't change anything - if (this._shouldBackoff()) { - return; - } + /* + * Get the last event id + * + * @return {string} + */ + lastEventId: function lastEventId() { + return this._lastEventId; + }, - var status = request.status; + /* + * Determine if Raven is setup and ready to go. + * + * @return {boolean} + */ + isSetup: function isSetup() { + if (!this._hasJSON) return false; // needs JSON support - // 400 - project_id doesn't exist or some other fatal - // 401 - invalid/revoked dsn - // 429 - too many requests - if (!(status === 400 || status === 401 || status === 429)) return; + if (!this._globalServer) { + if (!this.ravenNotConfiguredError) { + this.ravenNotConfiguredError = true; - var retry; - try { - // If Retry-After is not in Access-Control-Expose-Headers, most - // browsers will throw an exception trying to access it - if (supportsFetch()) { - retry = request.headers.get('Retry-After'); - } else { - retry = request.getResponseHeader('Retry-After'); + this._logDebug('error', 'Error: Raven has not been configured.'); } - // Retry-After is returned in seconds - retry = parseInt(retry, 10) * 1000; - } catch (e) { - /* eslint no-empty:0 */ + return false; } - this._backoffDuration = retry - ? // If Sentry server returned a Retry-After value, use it - retry - : // Otherwise, double the last backoff duration (starts at 1 sec) - this._backoffDuration * 2 || 1000; - - this._backoffStart = now(); + return true; }, + afterLoad: function afterLoad() { + // TODO: remove window dependence? + // Attempt to initialize Raven on load + var RavenConfig = _window$1.RavenConfig; - _send: function(data) { - var globalOptions = this._globalOptions; - - var baseData = { - project: this._globalProject, - logger: globalOptions.logger, - platform: 'javascript' - }, - httpData = this._getHttpData(); - - if (httpData) { - baseData.request = httpData; + if (RavenConfig) { + this.config(RavenConfig.dsn, RavenConfig.config).install(); } + }, + showReportDialog: function showReportDialog(options) { + if (!_document // doesn't work without a document (React native) + ) return; + options = options || {}; + var lastEventId = options.eventId || this.lastEventId(); - // HACK: delete `trimHeadFrames` to prevent from appearing in outbound payload - if (data.trimHeadFrames) delete data.trimHeadFrames; + if (!lastEventId) { + throw new configError('Missing eventId'); + } - data = objectMerge(baseData, data); + var dsn = options.dsn || this._dsn; - // Merge in the tags and extra separately since objectMerge doesn't handle a deep merge - data.tags = objectMerge(objectMerge({}, this._globalContext.tags), data.tags); - data.extra = objectMerge(objectMerge({}, this._globalContext.extra), data.extra); + if (!dsn) { + throw new configError('Missing DSN'); + } - // Send along our own collected metadata with extra - data.extra['session:duration'] = now() - this._startTime; + var encode = encodeURIComponent; + var qs = ''; + qs += '?eventId=' + encode(lastEventId); + qs += '&dsn=' + encode(dsn); + var user = options.user || this._globalContext.user; - if (this._breadcrumbs && this._breadcrumbs.length > 0) { - // intentionally make shallow copy so that additions - // to breadcrumbs aren't accidentally sent in this request - data.breadcrumbs = { - values: [].slice.call(this._breadcrumbs, 0) - }; + if (user) { + if (user.name) qs += '&name=' + encode(user.name); + if (user.email) qs += '&email=' + encode(user.email); } - if (this._globalContext.user) { - // sentry.interfaces.User - data.user = this._globalContext.user; - } + var globalServer = this._getGlobalServer(this._parseDSN(dsn)); - // Include the environment if it's defined in globalOptions - if (globalOptions.environment) data.environment = globalOptions.environment; + var script = _document.createElement('script'); - // Include the release if it's defined in globalOptions - if (globalOptions.release) data.release = globalOptions.release; + script.async = true; + script.src = globalServer + '/api/embed/error-page/' + qs; - // Include server_name if it's defined in globalOptions - if (globalOptions.serverName) data.server_name = globalOptions.serverName; + (_document.head || _document.body).appendChild(script); + }, - // Cleanup empty properties before sending them to the server - Object.keys(data).forEach(function(key) { - if (data[key] == null || data[key] === '' || isEmptyObject(data[key])) { - delete data[key]; - } + /**** Private functions ****/ + _ignoreNextOnError: function _ignoreNextOnError() { + var self = this; + this._ignoreOnError += 1; + setTimeout(function () { + // onerror should trigger before setTimeout + self._ignoreOnError -= 1; }); + }, + _triggerEvent: function _triggerEvent(eventType, options) { + // NOTE: `event` is a native browser thing, so let's avoid conflicting wiht it + var evt, key; + if (!this._hasDocument) return; + options = options || {}; + eventType = 'raven' + eventType.substr(0, 1).toUpperCase() + eventType.substr(1); - if (isFunction(globalOptions.dataCallback)) { - data = globalOptions.dataCallback(data) || data; - } - - // Why?????????? - if (!data || isEmptyObject(data)) { - return; - } - - // Check if the request should be filtered or not - if ( - isFunction(globalOptions.shouldSendCallback) && - !globalOptions.shouldSendCallback(data) - ) { - return; + if (_document.createEvent) { + evt = _document.createEvent('HTMLEvents'); + evt.initEvent(eventType, true, true); + } else { + evt = _document.createEventObject(); + evt.eventType = eventType; } - // Backoff state: Sentry server previously responded w/ an error (e.g. 429 - too many requests), - // so drop requests until "cool-off" period has elapsed. - if (this._shouldBackoff()) { - this._logDebug('warn', 'Raven dropped error due to backoff: ', data); - return; + for (key in options) { + if (hasKey(options, key)) { + evt[key] = options[key]; + } } - if (typeof globalOptions.sampleRate === 'number') { - if (Math.random() < globalOptions.sampleRate) { - this._sendProcessedPayload(data); - } + if (_document.createEvent) { + // IE9 if standards + _document.dispatchEvent(evt); } else { - this._sendProcessedPayload(data); + // IE8 regardless of Quirks or Standards + // IE9 if quirks + try { + _document.fireEvent('on' + evt.eventType.toLowerCase(), evt); + } catch (e) {// Do nothing + } } }, - _getUuid: function() { - return uuid4(); - }, - - _sendProcessedPayload: function(data, callback) { + /** + * Wraps addEventListener to capture UI breadcrumbs + * @param evtName the event name (e.g. "click") + * @returns {Function} + * @private + */ + _breadcrumbEventHandler: function _breadcrumbEventHandler(evtName) { var self = this; - var globalOptions = this._globalOptions; + return function (evt) { + // reset keypress timeout; e.g. triggering a 'click' after + // a 'keypress' will reset the keypress debounce so that a new + // set of keypresses can be recorded + self._keypressTimeout = null; // It's possible this handler might trigger multiple times for the same + // event (e.g. event propagation through node ancestors). Ignore if we've + // already captured the event. - if (!this.isSetup()) return; + if (self._lastCapturedEvent === evt) return; + self._lastCapturedEvent = evt; // try/catch both: + // - accessing evt.target (see getsentry/raven-js#838, #768) + // - `htmlTreeAsString` because it's complex, and just accessing the DOM incorrectly + // can throw an exception in some circumstances. - // Try and clean up the packet before sending by truncating long values - data = this._trimPacket(data); + var target; - // ideally duplicate error testing should occur *before* dataCallback/shouldSendCallback, - // but this would require copying an un-truncated copy of the data packet, which can be - // arbitrarily deep (extra_data) -- could be worthwhile? will revisit - if (!this._globalOptions.allowDuplicates && this._isRepeatData(data)) { - this._logDebug('warn', 'Raven dropped repeat event: ', data); - return; - } + try { + target = htmlTreeAsString(evt.target); + } catch (e) { + target = ''; + } - // Send along an event_id if not explicitly passed. - // This event_id can be used to reference the error within Sentry itself. - // Set lastEventId after we know the error should actually be sent - this._lastEventId = data.event_id || (data.event_id = this._getUuid()); + self.captureBreadcrumb({ + category: 'ui.' + evtName, + // e.g. ui.click, ui.input + message: target + }); + }; + }, - // Store outbound payload after trim - this._lastData = data; + /** + * Wraps addEventListener to capture keypress UI events + * @returns {Function} + * @private + */ + _keypressEventHandler: function _keypressEventHandler() { + var self = this, + debounceDuration = 1000; // milliseconds + // TODO: if somehow user switches keypress target before + // debounce timeout is triggered, we will only capture + // a single breadcrumb from the FIRST target (acceptable?) - this._logDebug('debug', 'Raven about to send:', data); + return function (evt) { + var target; - var auth = { - sentry_version: '7', - sentry_client: 'raven-js/' + this.VERSION, - sentry_key: this._globalKey - }; + try { + target = evt.target; + } catch (e) { + // just accessing event properties can throw an exception in some rare circumstances + // see: https://github.com/getsentry/raven-js/issues/838 + return; + } - if (this._globalSecret) { - auth.sentry_secret = this._globalSecret; - } + var tagName = target && target.tagName; // only consider keypress events on actual input elements + // this will disregard keypresses targeting body (e.g. tabbing + // through elements, hotkeys, etc) - var exception = data.exception && data.exception.values[0]; + if (!tagName || tagName !== 'INPUT' && tagName !== 'TEXTAREA' && !target.isContentEditable) return; // record first keypress in a series, but ignore subsequent + // keypresses until debounce clears - // only capture 'sentry' breadcrumb is autoBreadcrumbs is truthy - if ( - this._globalOptions.autoBreadcrumbs && - this._globalOptions.autoBreadcrumbs.sentry - ) { - this.captureBreadcrumb({ - category: 'sentry', - message: exception - ? (exception.type ? exception.type + ': ' : '') + exception.value - : data.message, - event_id: data.event_id, - level: data.level || 'error' // presume error unless specified - }); - } + var timeout = self._keypressTimeout; - var url = this._globalEndpoint; - (globalOptions.transport || this._makeRequest).call(this, { - url: url, - auth: auth, - data: data, - options: globalOptions, - onSuccess: function success() { - self._resetBackoff(); + if (!timeout) { + self._breadcrumbEventHandler('input')(evt); + } - self._triggerEvent('success', { - data: data, - src: url - }); - callback && callback(); - }, - onError: function failure(error) { - self._logDebug('error', 'Raven transport failed to send: ', error); + clearTimeout(timeout); + self._keypressTimeout = setTimeout(function () { + self._keypressTimeout = null; + }, debounceDuration); + }; + }, - if (error.request) { - self._setBackoffState(error.request); - } + /** + * Captures a breadcrumb of type "navigation", normalizing input URLs + * @param to the originating URL + * @param from the target URL + * @private + */ + _captureUrlChange: function _captureUrlChange(from, to) { + var parsedLoc = parseUrl(this._location.href); + var parsedTo = parseUrl(to); + var parsedFrom = parseUrl(from); // because onpopstate only tells you the "new" (to) value of location.href, and + // not the previous (from) value, we need to track the value of the current URL + // state ourselves - self._triggerEvent('failure', { - data: data, - src: url - }); - error = error || new Error('Raven send failed (no additional details provided)'); - callback && callback(error); + this._lastHref = to; // Use only the path component of the URL if the URL matches the current + // document (almost all the time when using pushState) + + if (parsedLoc.protocol === parsedTo.protocol && parsedLoc.host === parsedTo.host) to = parsedTo.relative; + if (parsedLoc.protocol === parsedFrom.protocol && parsedLoc.host === parsedFrom.host) from = parsedFrom.relative; + this.captureBreadcrumb({ + category: 'navigation', + data: { + to: to, + from: from } }); }, + _patchFunctionToString: function _patchFunctionToString() { + var self = this; + self._originalFunctionToString = Function.prototype.toString; // eslint-disable-next-line no-extend-native - _makeRequest: function(opts) { - // Auth is intentionally sent as part of query string (NOT as custom HTTP header) to avoid preflight CORS requests - var url = opts.url + '?' + urlencode(opts.auth); - - var evaluatedHeaders = null; - var evaluatedFetchParameters = {}; - - if (opts.options.headers) { - evaluatedHeaders = this._evaluateHash(opts.options.headers); - } + Function.prototype.toString = function () { + if (typeof this === 'function' && this.__raven__) { + return self._originalFunctionToString.apply(this.__orig__, arguments); + } - if (opts.options.fetchParameters) { - evaluatedFetchParameters = this._evaluateHash(opts.options.fetchParameters); + return self._originalFunctionToString.apply(this, arguments); + }; + }, + _unpatchFunctionToString: function _unpatchFunctionToString() { + if (this._originalFunctionToString) { + // eslint-disable-next-line no-extend-native + Function.prototype.toString = this._originalFunctionToString; } + }, - if (supportsFetch()) { - evaluatedFetchParameters.body = stringify(opts.data); - - var defaultFetchOptions = objectMerge({}, this._fetchDefaults); - var fetchOptions = objectMerge(defaultFetchOptions, evaluatedFetchParameters); + /** + * Wrap timer functions and event targets to catch errors and provide + * better metadata. + */ + _instrumentTryCatch: function _instrumentTryCatch() { + var self = this; + var wrappedBuiltIns = self._wrappedBuiltIns; - if (evaluatedHeaders) { - fetchOptions.headers = evaluatedHeaders; - } + function wrapTimeFn(orig) { + return function (fn, t) { + // preserve arity + // Make a copy of the arguments to prevent deoptimization + // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments + var args = new Array(arguments.length); - return _window - .fetch(url, fetchOptions) - .then(function(response) { - if (response.ok) { - opts.onSuccess && opts.onSuccess(); - } else { - var error = new Error('Sentry error code: ' + response.status); - // It's called request only to keep compatibility with XHR interface - // and not add more redundant checks in setBackoffState method - error.request = response; - opts.onError && opts.onError(error); - } - }) - ['catch'](function() { - opts.onError && - opts.onError(new Error('Sentry error code: network unavailable')); - }); - } + for (var i = 0; i < args.length; ++i) { + args[i] = arguments[i]; + } - var request = _window.XMLHttpRequest && new _window.XMLHttpRequest(); - if (!request) return; + var originalCallback = args[0]; - // if browser doesn't support CORS (e.g. IE7), we are out of luck - var hasCORS = 'withCredentials' in request || typeof XDomainRequest !== 'undefined'; + if (isFunction(originalCallback)) { + args[0] = self.wrap(originalCallback); + } // IE < 9 doesn't support .call/.apply on setInterval/setTimeout, but it + // also supports only two arguments and doesn't care what this is, so we + // can just call the original function directly. - if (!hasCORS) return; - if ('withCredentials' in request) { - request.onreadystatechange = function() { - if (request.readyState !== 4) { - return; - } else if (request.status === 200) { - opts.onSuccess && opts.onSuccess(); - } else if (opts.onError) { - var err = new Error('Sentry error code: ' + request.status); - err.request = request; - opts.onError(err); + if (orig.apply) { + return orig.apply(this, args); + } else { + return orig(args[0], args[1]); } - }; - } else { - request = new XDomainRequest(); - // xdomainrequest cannot go http -> https (or vice versa), - // so always use protocol relative - url = url.replace(/^https?:/, ''); - - // onreadystatechange not supported by XDomainRequest - if (opts.onSuccess) { - request.onload = opts.onSuccess; - } - if (opts.onError) { - request.onerror = function() { - var err = new Error('Sentry error code: XDomainRequest'); - err.request = request; - opts.onError(err); - }; - } + }; } - request.open('POST', url); + var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; - if (evaluatedHeaders) { - each(evaluatedHeaders, function(key, value) { - request.setRequestHeader(key, value); - }); - } + function wrapEventTarget(global) { + var proto = _window$1[global] && _window$1[global].prototype; - request.send(stringify(opts.data)); - }, + if (proto && proto.hasOwnProperty && proto.hasOwnProperty('addEventListener')) { + fill(proto, 'addEventListener', function (orig) { + return function (evtName, fn, capture, secure) { + // preserve arity + try { + if (fn && fn.handleEvent) { + fn.handleEvent = self.wrap(fn.handleEvent); + } + } catch (err) {} // can sometimes get 'Permission denied to access property "handle Event' + // More breadcrumb DOM capture ... done here and not in `_instrumentBreadcrumbs` + // so that we don't have more than one wrapper function - _evaluateHash: function(hash) { - var evaluated = {}; - for (var key in hash) { - if (hash.hasOwnProperty(key)) { - var value = hash[key]; - evaluated[key] = typeof value === 'function' ? value() : value; - } - } + var before, clickHandler, keypressHandler; - return evaluated; - }, + if (autoBreadcrumbs && autoBreadcrumbs.dom && (global === 'EventTarget' || global === 'Node')) { + // NOTE: generating multiple handlers per addEventListener invocation, should + // revisit and verify we can just use one (almost certainly) + clickHandler = self._breadcrumbEventHandler('click'); + keypressHandler = self._keypressEventHandler(); - _logDebug: function(level) { - if (this._originalConsoleMethods[level] && this.debug) { - // In IE<10 console methods do not have their own 'apply' method - Function.prototype.apply.call( - this._originalConsoleMethods[level], - this._originalConsole, - [].slice.call(arguments, 1) - ); - } - }, + before = function before(evt) { + // need to intercept every DOM event in `before` argument, in case that + // same wrapped method is re-used for different events (e.g. mousemove THEN click) + // see #724 + if (!evt) return; + var eventType; - _mergeContext: function(key, context) { - if (isUndefined(context)) { - delete this._globalContext[key]; - } else { - this._globalContext[key] = objectMerge(this._globalContext[key] || {}, context); - } - } -}; + try { + eventType = evt.type; + } catch (e) { + // just accessing event properties can throw an exception in some rare circumstances + // see: https://github.com/getsentry/raven-js/issues/838 + return; + } -// Deprecations -Raven.prototype.setUser = Raven.prototype.setUserContext; -Raven.prototype.setReleaseContext = Raven.prototype.setRelease; + if (eventType === 'click') return clickHandler(evt);else if (eventType === 'keypress') return keypressHandler(evt); + }; + } -module.exports = Raven; + return orig.call(this, evtName, self.wrap(fn, undefined, before), capture, secure); + }; + }, wrappedBuiltIns); + fill(proto, 'removeEventListener', function (orig) { + return function (evt, fn, capture, secure) { + try { + fn = fn && (fn.__raven_wrapper__ ? fn.__raven_wrapper__ : fn); + } catch (e) {// ignore, accessing __raven_wrapper__ will throw in some Selenium environments + } -}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) -},{"1":1,"2":2,"5":5,"6":6,"7":7}],4:[function(_dereq_,module,exports){ -(function (global){ -/** - * Enforces a single instance of the Raven client, and the - * main entry point for Raven. If you are a consumer of the - * Raven library, you SHOULD load this file (vs raven.js). - **/ + return orig.call(this, evt, fn, capture, secure); + }; + }, wrappedBuiltIns); + } + } -var RavenConstructor = _dereq_(3); + fill(_window$1, 'setTimeout', wrapTimeFn, wrappedBuiltIns); + fill(_window$1, 'setInterval', wrapTimeFn, wrappedBuiltIns); -// This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) -var _window = - typeof window !== 'undefined' - ? window - : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; -var _Raven = _window.Raven; + if (_window$1.requestAnimationFrame) { + fill(_window$1, 'requestAnimationFrame', function (orig) { + return function (cb) { + return orig(self.wrap(cb)); + }; + }, wrappedBuiltIns); + } // event targets borrowed from bugsnag-js: + // https://github.com/bugsnag/bugsnag-js/blob/master/src/bugsnag.js#L666 -var Raven = new RavenConstructor(); -/* - * Allow multiple versions of Raven to be installed. - * Strip Raven from the global context and returns the instance. - * - * @return {Raven} - */ -Raven.noConflict = function() { - _window.Raven = _Raven; - return Raven; -}; + var eventTargets = ['EventTarget', 'Window', 'Node', 'ApplicationCache', 'AudioTrackList', 'ChannelMergerNode', 'CryptoOperation', 'EventSource', 'FileReader', 'HTMLUnknownElement', 'IDBDatabase', 'IDBRequest', 'IDBTransaction', 'KeyOperation', 'MediaController', 'MessagePort', 'ModalWindow', 'Notification', 'SVGElementInstance', 'Screen', 'TextTrack', 'TextTrackCue', 'TextTrackList', 'WebSocket', 'WebSocketWorker', 'Worker', 'XMLHttpRequest', 'XMLHttpRequestEventTarget', 'XMLHttpRequestUpload']; -Raven.afterLoad(); + for (var i = 0; i < eventTargets.length; i++) { + wrapEventTarget(eventTargets[i]); + } + }, -module.exports = Raven; + /** + * Instrument browser built-ins w/ breadcrumb capturing + * - XMLHttpRequests + * - DOM interactions (click/typing) + * - window.location changes + * - console + * + * Can be disabled or individually configured via the `autoBreadcrumbs` config option + */ + _instrumentBreadcrumbs: function _instrumentBreadcrumbs() { + var self = this; + var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; + var wrappedBuiltIns = self._wrappedBuiltIns; -}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) -},{"3":3}],5:[function(_dereq_,module,exports){ -(function (global){ -var _window = - typeof window !== 'undefined' - ? window - : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; + function wrapProp(prop, xhr) { + if (prop in xhr && isFunction(xhr[prop])) { + fill(xhr, prop, function (orig) { + return self.wrap(orig); + }); // intentionally don't track filled methods on XHR instances + } + } -function isObject(what) { - return typeof what === 'object' && what !== null; -} + if (autoBreadcrumbs.xhr && 'XMLHttpRequest' in _window$1) { + var xhrproto = XMLHttpRequest.prototype; + fill(xhrproto, 'open', function (origOpen) { + return function (method, url) { + // preserve arity + // if Sentry key appears in URL, don't capture + if (isString(url) && url.indexOf(self._globalKey) === -1) { + this.__raven_xhr = { + method: method, + url: url, + status_code: null + }; + } -// Yanked from https://git.io/vS8DV re-used under CC0 -// with some tiny modifications -function isError(value) { - switch ({}.toString.call(value)) { - case '[object Error]': - return true; - case '[object Exception]': - return true; - case '[object DOMException]': - return true; - default: - return value instanceof Error; - } -} + return origOpen.apply(this, arguments); + }; + }, wrappedBuiltIns); + fill(xhrproto, 'send', function (origSend) { + return function () { + // preserve arity + var xhr = this; + + function onreadystatechangeHandler() { + if (xhr.__raven_xhr && xhr.readyState === 4) { + try { + // touching statusCode in some platforms throws + // an exception + xhr.__raven_xhr.status_code = xhr.status; + } catch (e) { + /* do nothing */ + } -function isErrorEvent(value) { - return supportsErrorEvent() && {}.toString.call(value) === '[object ErrorEvent]'; -} + self.captureBreadcrumb({ + type: 'http', + category: 'xhr', + data: xhr.__raven_xhr + }); + } + } -function isUndefined(what) { - return what === void 0; -} + var props = ['onload', 'onerror', 'onprogress']; -function isFunction(what) { - return typeof what === 'function'; -} + for (var j = 0; j < props.length; j++) { + wrapProp(props[j], xhr); + } -function isPlainObject(what) { - return Object.prototype.toString.call(what) === '[object Object]'; -} + if ('onreadystatechange' in xhr && isFunction(xhr.onreadystatechange)) { + fill(xhr, 'onreadystatechange', function (orig) { + return self.wrap(orig, undefined, onreadystatechangeHandler); + } + /* intentionally don't track this instrumentation */ + ); + } else { + // if onreadystatechange wasn't actually set by the page on this xhr, we + // are free to set our own and capture the breadcrumb + xhr.onreadystatechange = onreadystatechangeHandler; + } -function isString(what) { - return Object.prototype.toString.call(what) === '[object String]'; -} + return origSend.apply(this, arguments); + }; + }, wrappedBuiltIns); + } -function isArray(what) { - return Object.prototype.toString.call(what) === '[object Array]'; -} + if (autoBreadcrumbs.xhr && supportsFetch()) { + fill(_window$1, 'fetch', function (origFetch) { + return function () { + // preserve arity + // Make a copy of the arguments to prevent deoptimization + // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments + var args = new Array(arguments.length); + + for (var i = 0; i < args.length; ++i) { + args[i] = arguments[i]; + } -function isEmptyObject(what) { - if (!isPlainObject(what)) return false; + var fetchInput = args[0]; + var method = 'GET'; + var url; - for (var _ in what) { - if (what.hasOwnProperty(_)) { - return false; - } - } - return true; -} + if (typeof fetchInput === 'string') { + url = fetchInput; + } else if ('Request' in _window$1 && fetchInput instanceof _window$1.Request) { + url = fetchInput.url; -function supportsErrorEvent() { - try { - new ErrorEvent(''); // eslint-disable-line no-new - return true; - } catch (e) { - return false; - } -} + if (fetchInput.method) { + method = fetchInput.method; + } + } else { + url = '' + fetchInput; + } // if Sentry key appears in URL, don't capture, as it's our own request -function supportsFetch() { - if (!('fetch' in _window)) return false; - try { - new Headers(); // eslint-disable-line no-new - new Request(''); // eslint-disable-line no-new - new Response(); // eslint-disable-line no-new - return true; - } catch (e) { - return false; - } -} + if (url.indexOf(self._globalKey) !== -1) { + return origFetch.apply(this, args); + } -function wrappedCallback(callback) { - function dataCallback(data, original) { - var normalizedData = callback(data) || data; - if (original) { - return original(normalizedData) || normalizedData; - } - return normalizedData; - } + if (args[1] && args[1].method) { + method = args[1].method; + } - return dataCallback; -} + var fetchData = { + method: method, + url: url, + status_code: null + }; + return origFetch.apply(this, args).then(function (response) { + fetchData.status_code = response.status; + self.captureBreadcrumb({ + type: 'http', + category: 'fetch', + data: fetchData + }); + return response; + }); + }; + }, wrappedBuiltIns); + } // Capture breadcrumbs from any click that is unhandled / bubbled up all the way + // to the document. Do this before we instrument addEventListener. -function each(obj, callback) { - var i, j; - if (isUndefined(obj.length)) { - for (i in obj) { - if (hasKey(obj, i)) { - callback.call(null, i, obj[i]); - } - } - } else { - j = obj.length; - if (j) { - for (i = 0; i < j; i++) { - callback.call(null, i, obj[i]); + if (autoBreadcrumbs.dom && this._hasDocument) { + if (_document.addEventListener) { + _document.addEventListener('click', self._breadcrumbEventHandler('click'), false); + + _document.addEventListener('keypress', self._keypressEventHandler(), false); + } else { + // IE8 Compatibility + _document.attachEvent('onclick', self._breadcrumbEventHandler('click')); + + _document.attachEvent('onkeypress', self._keypressEventHandler()); } - } - } -} + } // record navigation (URL) changes + // NOTE: in Chrome App environment, touching history.pushState, *even inside + // a try/catch block*, will cause Chrome to output an error to console.error + // borrowed from: https://github.com/angular/angular.js/pull/13945/files -function objectMerge(obj1, obj2) { - if (!obj2) { - return obj1; - } - each(obj2, function(key, value) { - obj1[key] = value; - }); - return obj1; -} -/** - * This function is only used for react-native. - * react-native freezes object that have already been sent over the - * js bridge. We need this function in order to check if the object is frozen. - * So it's ok that objectFrozen returns false if Object.isFrozen is not - * supported because it's not relevant for other "platforms". See related issue: - * https://github.com/getsentry/react-native-sentry/issues/57 - */ -function objectFrozen(obj) { - if (!Object.isFrozen) { - return false; - } - return Object.isFrozen(obj); -} + var chrome = _window$1.chrome; + var isChromePackagedApp = chrome && chrome.app && chrome.app.runtime; + var hasPushAndReplaceState = !isChromePackagedApp && _window$1.history && history.pushState && history.replaceState; -function truncate(str, max) { - return !max || str.length <= max ? str : str.substr(0, max) + '\u2026'; -} + if (autoBreadcrumbs.location && hasPushAndReplaceState) { + // TODO: remove onpopstate handler on uninstall() + var oldOnPopState = _window$1.onpopstate; -/** - * hasKey, a better form of hasOwnProperty - * Example: hasKey(MainHostObject, property) === true/false - * - * @param {Object} host object to check property - * @param {string} key to check - */ -function hasKey(object, key) { - return Object.prototype.hasOwnProperty.call(object, key); -} + _window$1.onpopstate = function () { + var currentHref = self._location.href; -function joinRegExp(patterns) { - // Combine an array of regular expressions and strings into one large regexp - // Be mad. - var sources = [], - i = 0, - len = patterns.length, - pattern; + self._captureUrlChange(self._lastHref, currentHref); - for (; i < len; i++) { - pattern = patterns[i]; - if (isString(pattern)) { - // If it's a string, we need to escape it - // Taken from: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions - sources.push(pattern.replace(/([.*+?^=!:${}()|\[\]\/\\])/g, '\\$1')); - } else if (pattern && pattern.source) { - // If it's a regexp already, we want to extract the source - sources.push(pattern.source); - } - // Intentionally skip other cases - } - return new RegExp(sources.join('|'), 'i'); -} + if (oldOnPopState) { + return oldOnPopState.apply(this, arguments); + } + }; + + var historyReplacementFunction = function historyReplacementFunction(origHistFunction) { + // note history.pushState.length is 0; intentionally not declaring + // params to preserve 0 arity + return function () + /* state, title, url */ + { + var url = arguments.length > 2 ? arguments[2] : undefined; // url argument is optional -function urlencode(o) { - var pairs = []; - each(o, function(key, value) { - pairs.push(encodeURIComponent(key) + '=' + encodeURIComponent(value)); - }); - return pairs.join('&'); -} + if (url) { + // coerce to string (this is what pushState does) + self._captureUrlChange(self._lastHref, url + ''); + } -// borrowed from https://tools.ietf.org/html/rfc3986#appendix-B -// intentionally using regex and not href parsing trick because React Native and other -// environments where DOM might not be available -function parseUrl(url) { - if (typeof url !== 'string') return {}; - var match = url.match(/^(([^:\/?#]+):)?(\/\/([^\/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?$/); + return origHistFunction.apply(this, arguments); + }; + }; - // coerce to undefined values to empty string so we don't get 'undefined' - var query = match[6] || ''; - var fragment = match[8] || ''; - return { - protocol: match[2], - host: match[4], - path: match[5], - relative: match[5] + query + fragment // everything minus origin - }; -} -function uuid4() { - var crypto = _window.crypto || _window.msCrypto; + fill(history, 'pushState', historyReplacementFunction, wrappedBuiltIns); + fill(history, 'replaceState', historyReplacementFunction, wrappedBuiltIns); + } - if (!isUndefined(crypto) && crypto.getRandomValues) { - // Use window.crypto API if available - // eslint-disable-next-line no-undef - var arr = new Uint16Array(8); - crypto.getRandomValues(arr); + if (autoBreadcrumbs.console && 'console' in _window$1 && console.log) { + // console + var consoleMethodCallback = function consoleMethodCallback(msg, data) { + self.captureBreadcrumb({ + message: msg, + level: data.level, + category: 'console' + }); + }; - // set 4 in byte 7 - arr[3] = (arr[3] & 0xfff) | 0x4000; - // set 2 most significant bits of byte 9 to '10' - arr[4] = (arr[4] & 0x3fff) | 0x8000; + each(['debug', 'info', 'warn', 'error', 'log'], function (_, level) { + wrapConsoleMethod(console, level, consoleMethodCallback); + }); + } + }, + _restoreBuiltIns: function _restoreBuiltIns() { + // restore any wrapped builtins + var builtin; - var pad = function(num) { - var v = num.toString(16); - while (v.length < 4) { - v = '0' + v; - } - return v; - }; + while (this._wrappedBuiltIns.length) { + builtin = this._wrappedBuiltIns.shift(); + var obj = builtin[0], + name = builtin[1], + orig = builtin[2]; + obj[name] = orig; + } + }, + _restoreConsole: function _restoreConsole() { + // eslint-disable-next-line guard-for-in + for (var method in this._originalConsoleMethods) { + this._originalConsole[method] = this._originalConsoleMethods[method]; + } + }, + _drainPlugins: function _drainPlugins() { + var self = this; // FIX ME TODO - return ( - pad(arr[0]) + - pad(arr[1]) + - pad(arr[2]) + - pad(arr[3]) + - pad(arr[4]) + - pad(arr[5]) + - pad(arr[6]) + - pad(arr[7]) - ); - } else { - // http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/2117523#2117523 - return 'xxxxxxxxxxxx4xxxyxxxxxxxxxxxxxxx'.replace(/[xy]/g, function(c) { - var r = (Math.random() * 16) | 0, - v = c === 'x' ? r : (r & 0x3) | 0x8; - return v.toString(16); + each(this._plugins, function (_, plugin) { + var installer = plugin[0]; + var args = plugin[1]; + installer.apply(self, [self].concat(args)); }); - } -} + }, + _parseDSN: function _parseDSN(str) { + var m = dsnPattern.exec(str), + dsn = {}, + i = 7; -/** - * Given a child DOM element, returns a query-selector statement describing that - * and its ancestors - * e.g. [HTMLElement] => body > div > input#foo.btn[name=baz] - * @param elem - * @returns {string} - */ -function htmlTreeAsString(elem) { - /* eslint no-extra-parens:0*/ - var MAX_TRAVERSE_HEIGHT = 5, - MAX_OUTPUT_LEN = 80, - out = [], - height = 0, - len = 0, - separator = ' > ', - sepLength = separator.length, - nextStr; + try { + while (i--) { + dsn[dsnKeys[i]] = m[i] || ''; + } + } catch (e) { + throw new configError('Invalid DSN: ' + str); + } - while (elem && height++ < MAX_TRAVERSE_HEIGHT) { - nextStr = htmlElementAsString(elem); - // bail out if - // - nextStr is the 'html' element - // - the length of the string that would be created exceeds MAX_OUTPUT_LEN - // (ignore this limit if we are on the first iteration) - if ( - nextStr === 'html' || - (height > 1 && len + out.length * sepLength + nextStr.length >= MAX_OUTPUT_LEN) - ) { - break; + if (dsn.pass && !this._globalOptions.allowSecretKey) { + throw new configError('Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key'); } - out.push(nextStr); + return dsn; + }, + _getGlobalServer: function _getGlobalServer(uri) { + // assemble the endpoint from the uri pieces + var globalServer = '//' + uri.host + (uri.port ? ':' + uri.port : ''); - len += nextStr.length; - elem = elem.parentNode; - } + if (uri.protocol) { + globalServer = uri.protocol + ':' + globalServer; + } - return out.reverse().join(separator); -} + return globalServer; + }, + _handleOnErrorStackInfo: function _handleOnErrorStackInfo() { + // if we are intentionally ignoring errors via onerror, bail out + if (!this._ignoreOnError) { + this._handleStackInfo.apply(this, arguments); + } + }, + _handleStackInfo: function _handleStackInfo(stackInfo, options) { + var frames = this._prepareFrames(stackInfo, options); -/** - * Returns a simple, query-selector representation of a DOM element - * e.g. [HTMLElement] => input#foo.btn[name=baz] - * @param HTMLElement - * @returns {string} - */ -function htmlElementAsString(elem) { - var out = [], - className, - classes, - key, - attr, - i; + this._triggerEvent('handle', { + stackInfo: stackInfo, + options: options + }); - if (!elem || !elem.tagName) { - return ''; - } + this._processException(stackInfo.name, stackInfo.message, stackInfo.url, stackInfo.lineno, frames, options); + }, + _prepareFrames: function _prepareFrames(stackInfo, options) { + var self = this; + var frames = []; - out.push(elem.tagName.toLowerCase()); - if (elem.id) { - out.push('#' + elem.id); - } + if (stackInfo.stack && stackInfo.stack.length) { + each(stackInfo.stack, function (i, stack) { + var frame = self._normalizeFrame(stack, stackInfo.url); - className = elem.className; - if (className && isString(className)) { - classes = className.split(/\s+/); - for (i = 0; i < classes.length; i++) { - out.push('.' + classes[i]); - } - } - var attrWhitelist = ['type', 'name', 'title', 'alt']; - for (i = 0; i < attrWhitelist.length; i++) { - key = attrWhitelist[i]; - attr = elem.getAttribute(key); - if (attr) { - out.push('[' + key + '="' + attr + '"]'); - } - } - return out.join(''); -} + if (frame) { + frames.push(frame); + } + }); // e.g. frames captured via captureMessage throw -/** - * Returns true if either a OR b is truthy, but not both - */ -function isOnlyOneTruthy(a, b) { - return !!(!!a ^ !!b); -} + if (options && options.trimHeadFrames) { + for (var j = 0; j < options.trimHeadFrames && j < frames.length; j++) { + frames[j].in_app = false; + } + } + } -/** - * Returns true if both parameters are undefined - */ -function isBothUndefined(a, b) { - return isUndefined(a) && isUndefined(b); -} + frames = frames.slice(0, this._globalOptions.stackTraceLimit); + return frames; + }, + _normalizeFrame: function _normalizeFrame(frame, stackInfoUrl) { + // normalize the frames data + var normalized = { + filename: frame.url, + lineno: frame.line, + colno: frame.column, + function: frame.func || '?' + }; // Case when we don't have any information about the error + // E.g. throwing a string or raw object, instead of an `Error` in Firefox + // Generating synthetic error doesn't add any value here + // + // We should probably somehow let a user know that they should fix their code -/** - * Returns true if the two input exception interfaces have the same content - */ -function isSameException(ex1, ex2) { - if (isOnlyOneTruthy(ex1, ex2)) return false; + if (!frame.url) { + normalized.filename = stackInfoUrl; // fallback to whole stacks url from onerror handler + } - ex1 = ex1.values[0]; - ex2 = ex2.values[0]; + normalized.in_app = !( // determine if an exception came from outside of our app + // first we check the global includePaths list. + !!this._globalOptions.includePaths.test && !this._globalOptions.includePaths.test(normalized.filename) || // Now we check for fun, if the function name is Raven or TraceKit + /(Raven|TraceKit)\./.test(normalized['function']) || // finally, we do a last ditch effort and check for raven.min.js + /raven\.(min\.)?js$/.test(normalized.filename)); + return normalized; + }, + _processException: function _processException(type, message, fileurl, lineno, frames, options) { + var prefixedMessage = (type ? type + ': ' : '') + (message || ''); - if (ex1.type !== ex2.type || ex1.value !== ex2.value) return false; + if (!!this._globalOptions.ignoreErrors.test && (this._globalOptions.ignoreErrors.test(message) || this._globalOptions.ignoreErrors.test(prefixedMessage))) { + return; + } - // in case both stacktraces are undefined, we can't decide so default to false - if (isBothUndefined(ex1.stacktrace, ex2.stacktrace)) return false; + var stacktrace; - return isSameStacktrace(ex1.stacktrace, ex2.stacktrace); -} + if (frames && frames.length) { + fileurl = frames[0].filename || fileurl; // Sentry expects frames oldest to newest + // and JS sends them as newest to oldest -/** - * Returns true if the two input stack trace interfaces have the same content - */ -function isSameStacktrace(stack1, stack2) { - if (isOnlyOneTruthy(stack1, stack2)) return false; + frames.reverse(); + stacktrace = { + frames: frames + }; + } else if (fileurl) { + stacktrace = { + frames: [{ + filename: fileurl, + lineno: lineno, + in_app: true + }] + }; + } - var frames1 = stack1.frames; - var frames2 = stack2.frames; + if (!!this._globalOptions.ignoreUrls.test && this._globalOptions.ignoreUrls.test(fileurl)) { + return; + } - // Exit early if frame count differs - if (frames1.length !== frames2.length) return false; + if (!!this._globalOptions.whitelistUrls.test && !this._globalOptions.whitelistUrls.test(fileurl)) { + return; + } - // Iterate through every frame; bail out if anything differs - var a, b; - for (var i = 0; i < frames1.length; i++) { - a = frames1[i]; - b = frames2[i]; - if ( - a.filename !== b.filename || - a.lineno !== b.lineno || - a.colno !== b.colno || - a['function'] !== b['function'] - ) - return false; - } - return true; -} + var data = objectMerge({ + // sentry.interfaces.Exception + exception: { + values: [{ + type: type, + value: message, + stacktrace: stacktrace + }] + }, + culprit: fileurl + }, options); // Fire away! -/** - * Polyfill a method - * @param obj object e.g. `document` - * @param name method name present on object e.g. `addEventListener` - * @param replacement replacement function - * @param track {optional} record instrumentation to an array - */ -function fill(obj, name, replacement, track) { - var orig = obj[name]; - obj[name] = replacement(orig); - obj[name].__raven__ = true; - obj[name].__orig__ = orig; - if (track) { - track.push([obj, name, orig]); - } -} + this._send(data); + }, + _trimPacket: function _trimPacket(data) { + // For now, we only want to truncate the two different messages + // but this could/should be expanded to just trim everything + var max = this._globalOptions.maxMessageLength; -module.exports = { - isObject: isObject, - isError: isError, - isErrorEvent: isErrorEvent, - isUndefined: isUndefined, - isFunction: isFunction, - isPlainObject: isPlainObject, - isString: isString, - isArray: isArray, - isEmptyObject: isEmptyObject, - supportsErrorEvent: supportsErrorEvent, - supportsFetch: supportsFetch, - wrappedCallback: wrappedCallback, - each: each, - objectMerge: objectMerge, - truncate: truncate, - objectFrozen: objectFrozen, - hasKey: hasKey, - joinRegExp: joinRegExp, - urlencode: urlencode, - uuid4: uuid4, - htmlTreeAsString: htmlTreeAsString, - htmlElementAsString: htmlElementAsString, - isSameException: isSameException, - isSameStacktrace: isSameStacktrace, - parseUrl: parseUrl, - fill: fill -}; + if (data.message) { + data.message = truncate(data.message, max); + } -}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) -},{}],6:[function(_dereq_,module,exports){ -(function (global){ -var utils = _dereq_(5); + if (data.exception) { + var exception = data.exception.values[0]; + exception.value = truncate(exception.value, max); + } -/* - TraceKit - Cross brower stack traces + var request = data.request; - This was originally forked from github.com/occ/TraceKit, but has since been - largely re-written and is now maintained as part of raven-js. Tests for - this are in test/vendor. + if (request) { + if (request.url) { + request.url = truncate(request.url, this._globalOptions.maxUrlLength); + } - MIT license -*/ + if (request.Referer) { + request.Referer = truncate(request.Referer, this._globalOptions.maxUrlLength); + } + } -var TraceKit = { - collectWindowErrors: true, - debug: false -}; + if (data.breadcrumbs && data.breadcrumbs.values) this._trimBreadcrumbs(data.breadcrumbs); + return data; + }, -// This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) -var _window = - typeof window !== 'undefined' - ? window - : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; + /** + * Truncate breadcrumb values (right now just URLs) + */ + _trimBreadcrumbs: function _trimBreadcrumbs(breadcrumbs) { + // known breadcrumb properties with urls + // TODO: also consider arbitrary prop values that start with (https?)?:// + var urlProps = ['to', 'from', 'url'], + urlProp, + crumb, + data; -// global reference to slice -var _slice = [].slice; -var UNKNOWN_FUNCTION = '?'; + for (var i = 0; i < breadcrumbs.values.length; ++i) { + crumb = breadcrumbs.values[i]; + if (!crumb.hasOwnProperty('data') || !isObject(crumb.data) || objectFrozen(crumb.data)) continue; + data = objectMerge({}, crumb.data); -// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error#Error_types -var ERROR_TYPES_RE = /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/; + for (var j = 0; j < urlProps.length; ++j) { + urlProp = urlProps[j]; -function getLocationHref() { - if (typeof document === 'undefined' || document.location == null) return ''; + if (data.hasOwnProperty(urlProp) && data[urlProp]) { + data[urlProp] = truncate(data[urlProp], this._globalOptions.maxUrlLength); + } + } - return document.location.href; -} + breadcrumbs.values[i].data = data; + } + }, + _getHttpData: function _getHttpData() { + if (!this._hasNavigator && !this._hasDocument) return; + var httpData = {}; -/** - * TraceKit.report: cross-browser processing of unhandled exceptions - * - * Syntax: - * TraceKit.report.subscribe(function(stackInfo) { ... }) - * TraceKit.report.unsubscribe(function(stackInfo) { ... }) - * TraceKit.report(exception) - * try { ...code... } catch(ex) { TraceKit.report(ex); } - * - * Supports: - * - Firefox: full stack trace with line numbers, plus column number - * on top frame; column number is not guaranteed - * - Opera: full stack trace with line and column numbers - * - Chrome: full stack trace with line and column numbers - * - Safari: line and column number for the top frame only; some frames - * may be missing, and column number is not guaranteed - * - IE: line and column number for the top frame only; some frames - * may be missing, and column number is not guaranteed - * - * In theory, TraceKit should work on all of the following versions: - * - IE5.5+ (only 8.0 tested) - * - Firefox 0.9+ (only 3.5+ tested) - * - Opera 7+ (only 10.50 tested; versions 9 and earlier may require - * Exceptions Have Stacktrace to be enabled in opera:config) - * - Safari 3+ (only 4+ tested) - * - Chrome 1+ (only 5+ tested) - * - Konqueror 3.5+ (untested) - * - * Requires TraceKit.computeStackTrace. - * - * Tries to catch all unhandled exceptions and report them to the - * subscribed handlers. Please note that TraceKit.report will rethrow the - * exception. This is REQUIRED in order to get a useful stack trace in IE. - * If the exception does not reach the top of the browser, you will only - * get a stack trace from the point where TraceKit.report was called. - * - * Handlers receive a stackInfo object as described in the - * TraceKit.computeStackTrace docs. - */ -TraceKit.report = (function reportModuleWrapper() { - var handlers = [], - lastArgs = null, - lastException = null, - lastExceptionStack = null; + if (this._hasNavigator && _navigator.userAgent) { + httpData.headers = { + 'User-Agent': navigator.userAgent + }; + } // Check in `window` instead of `document`, as we may be in ServiceWorker environment - /** - * Add a crash handler. - * @param {Function} handler - */ - function subscribe(handler) { - installGlobalHandler(); - handlers.push(handler); - } - /** - * Remove a crash handler. - * @param {Function} handler - */ - function unsubscribe(handler) { - for (var i = handlers.length - 1; i >= 0; --i) { - if (handlers[i] === handler) { - handlers.splice(i, 1); - } + if (_window$1.location && _window$1.location.href) { + httpData.url = _window$1.location.href; } - } - /** - * Remove all crash handlers. - */ - function unsubscribeAll() { - uninstallGlobalHandler(); - handlers = []; - } + if (this._hasDocument && _document.referrer) { + if (!httpData.headers) httpData.headers = {}; + httpData.headers.Referer = _document.referrer; + } + + return httpData; + }, + _resetBackoff: function _resetBackoff() { + this._backoffDuration = 0; + this._backoffStart = null; + }, + _shouldBackoff: function _shouldBackoff() { + return this._backoffDuration && now() - this._backoffStart < this._backoffDuration; + }, /** - * Dispatch stack information to all handlers. - * @param {Object.} stack - */ - function notifyHandlers(stack, isWindowError) { - var exception = null; - if (isWindowError && !TraceKit.collectWindowErrors) { - return; + * Returns true if the in-process data payload matches the signature + * of the previously-sent data + * + * NOTE: This has to be done at this level because TraceKit can generate + * data from window.onerror WITHOUT an exception object (IE8, IE9, + * other old browsers). This can take the form of an "exception" + * data object with a single frame (derived from the onerror args). + */ + _isRepeatData: function _isRepeatData(current) { + var last = this._lastData; + if (!last || current.message !== last.message || // defined for captureMessage + current.culprit !== last.culprit // defined for captureException/onerror + ) return false; // Stacktrace interface (i.e. from captureMessage) + + if (current.stacktrace || last.stacktrace) { + return isSameStacktrace(current.stacktrace, last.stacktrace); + } else if (current.exception || last.exception) { + // Exception interface (i.e. from captureException/onerror) + return isSameException(current.exception, last.exception); } - for (var i in handlers) { - if (handlers.hasOwnProperty(i)) { - try { - handlers[i].apply(null, [stack].concat(_slice.call(arguments, 2))); - } catch (inner) { - exception = inner; - } - } + + return true; + }, + _setBackoffState: function _setBackoffState(request) { + // If we are already in a backoff state, don't change anything + if (this._shouldBackoff()) { + return; } - if (exception) { - throw exception; + var status = request.status; // 400 - project_id doesn't exist or some other fatal + // 401 - invalid/revoked dsn + // 429 - too many requests + + if (!(status === 400 || status === 401 || status === 429)) return; + var retry; + + try { + // If Retry-After is not in Access-Control-Expose-Headers, most + // browsers will throw an exception trying to access it + if (supportsFetch()) { + retry = request.headers.get('Retry-After'); + } else { + retry = request.getResponseHeader('Retry-After'); + } // Retry-After is returned in seconds + + + retry = parseInt(retry, 10) * 1000; + } catch (e) { + /* eslint no-empty:0 */ } - } - var _oldOnerrorHandler, _onErrorHandlerInstalled; + this._backoffDuration = retry ? // If Sentry server returned a Retry-After value, use it + retry : // Otherwise, double the last backoff duration (starts at 1 sec) + this._backoffDuration * 2 || 1000; + this._backoffStart = now(); + }, + _send: function _send(data) { + var globalOptions = this._globalOptions; - /** - * Ensures all global unhandled exceptions are recorded. - * Supported by Gecko and IE. - * @param {string} msg Error message. - * @param {string} url URL of script that generated the exception. - * @param {(number|string)} lineNo The line number at which the error - * occurred. - * @param {?(number|string)} colNo The column number at which the error - * occurred. - * @param {?Error} ex The actual Error object. - */ - function traceKitWindowOnError(msg, url, lineNo, colNo, ex) { - var stack = null; - // If 'ex' is ErrorEvent, get real Error from inside - var exception = utils.isErrorEvent(ex) ? ex.error : ex; - // If 'msg' is ErrorEvent, get real message from inside - var message = utils.isErrorEvent(msg) ? msg.message : msg; + var baseData = { + project: this._globalProject, + logger: globalOptions.logger, + platform: 'javascript' + }, + httpData = this._getHttpData(); - if (lastExceptionStack) { - TraceKit.computeStackTrace.augmentStackTraceWithInitialElement( - lastExceptionStack, - url, - lineNo, - message - ); - processLastException(); - } else if (exception && utils.isError(exception)) { - // non-string `exception` arg; attempt to extract stack trace + if (httpData) { + baseData.request = httpData; + } // HACK: delete `trimHeadFrames` to prevent from appearing in outbound payload - // New chrome and blink send along a real error object - // Let's just report that like a normal error. - // See: https://mikewest.org/2013/08/debugging-runtime-errors-with-window-onerror - stack = TraceKit.computeStackTrace(exception); - notifyHandlers(stack, true); - } else { - var location = { - url: url, - line: lineNo, - column: colNo - }; - var name = undefined; - var groups; + if (data.trimHeadFrames) delete data.trimHeadFrames; + data = objectMerge(baseData, data); // Merge in the tags and extra separately since objectMerge doesn't handle a deep merge - if ({}.toString.call(message) === '[object String]') { - var groups = message.match(ERROR_TYPES_RE); - if (groups) { - name = groups[1]; - message = groups[2]; - } - } + data.tags = objectMerge(objectMerge({}, this._globalContext.tags), data.tags); + data.extra = objectMerge(objectMerge({}, this._globalContext.extra), data.extra); // Send along our own collected metadata with extra - location.func = UNKNOWN_FUNCTION; + data.extra['session:duration'] = now() - this._startTime; - stack = { - name: name, - message: message, - url: getLocationHref(), - stack: [location] + if (this._breadcrumbs && this._breadcrumbs.length > 0) { + // intentionally make shallow copy so that additions + // to breadcrumbs aren't accidentally sent in this request + data.breadcrumbs = { + values: [].slice.call(this._breadcrumbs, 0) }; - notifyHandlers(stack, true); - } - - if (_oldOnerrorHandler) { - return _oldOnerrorHandler.apply(this, arguments); } - return false; - } - - function installGlobalHandler() { - if (_onErrorHandlerInstalled) { - return; - } - _oldOnerrorHandler = _window.onerror; - _window.onerror = traceKitWindowOnError; - _onErrorHandlerInstalled = true; - } + if (this._globalContext.user) { + // sentry.interfaces.User + data.user = this._globalContext.user; + } // Include the environment if it's defined in globalOptions - function uninstallGlobalHandler() { - if (!_onErrorHandlerInstalled) { - return; - } - _window.onerror = _oldOnerrorHandler; - _onErrorHandlerInstalled = false; - _oldOnerrorHandler = undefined; - } - function processLastException() { - var _lastExceptionStack = lastExceptionStack, - _lastArgs = lastArgs; - lastArgs = null; - lastExceptionStack = null; - lastException = null; - notifyHandlers.apply(null, [_lastExceptionStack, false].concat(_lastArgs)); - } + if (globalOptions.environment) data.environment = globalOptions.environment; // Include the release if it's defined in globalOptions - /** - * Reports an unhandled Error to TraceKit. - * @param {Error} ex - * @param {?boolean} rethrow If false, do not re-throw the exception. - * Only used for window.onerror to not cause an infinite loop of - * rethrowing. - */ - function report(ex, rethrow) { - var args = _slice.call(arguments, 1); - if (lastExceptionStack) { - if (lastException === ex) { - return; // already caught by an inner catch block, ignore - } else { - processLastException(); - } - } + if (globalOptions.release) data.release = globalOptions.release; // Include server_name if it's defined in globalOptions - var stack = TraceKit.computeStackTrace(ex); - lastExceptionStack = stack; - lastException = ex; - lastArgs = args; + if (globalOptions.serverName) data.server_name = globalOptions.serverName; // Cleanup empty properties before sending them to the server - // If the stack trace is incomplete, wait for 2 seconds for - // slow slow IE to see if onerror occurs or not before reporting - // this exception; otherwise, we will end up with an incomplete - // stack trace - setTimeout(function() { - if (lastException === ex) { - processLastException(); + Object.keys(data).forEach(function (key) { + if (data[key] == null || data[key] === '' || isEmptyObject(data[key])) { + delete data[key]; } - }, stack.incomplete ? 2000 : 0); + }); - if (rethrow !== false) { - throw ex; // re-throw to propagate to the top level (and cause window.onerror) - } - } + if (isFunction(globalOptions.dataCallback)) { + data = globalOptions.dataCallback(data) || data; + } // Why?????????? - report.subscribe = subscribe; - report.unsubscribe = unsubscribe; - report.uninstall = unsubscribeAll; - return report; -})(); -/** - * TraceKit.computeStackTrace: cross-browser stack traces in JavaScript - * - * Syntax: - * s = TraceKit.computeStackTrace(exception) // consider using TraceKit.report instead (see below) - * Returns: - * s.name - exception name - * s.message - exception message - * s.stack[i].url - JavaScript or HTML file URL - * s.stack[i].func - function name, or empty for anonymous functions (if guessing did not work) - * s.stack[i].args - arguments passed to the function, if known - * s.stack[i].line - line number, if known - * s.stack[i].column - column number, if known - * - * Supports: - * - Firefox: full stack trace with line numbers and unreliable column - * number on top frame - * - Opera 10: full stack trace with line and column numbers - * - Opera 9-: full stack trace with line numbers - * - Chrome: full stack trace with line and column numbers - * - Safari: line and column number for the topmost stacktrace element - * only - * - IE: no line numbers whatsoever - * - * Tries to guess names of anonymous functions by looking for assignments - * in the source code. In IE and Safari, we have to guess source file names - * by searching for function bodies inside all page scripts. This will not - * work for scripts that are loaded cross-domain. - * Here be dragons: some function names may be guessed incorrectly, and - * duplicate functions may be mismatched. - * - * TraceKit.computeStackTrace should only be used for tracing purposes. - * Logging of unhandled exceptions should be done with TraceKit.report, - * which builds on top of TraceKit.computeStackTrace and provides better - * IE support by utilizing the window.onerror event to retrieve information - * about the top of the stack. - * - * Note: In IE and Safari, no stack trace is recorded on the Error object, - * so computeStackTrace instead walks its *own* chain of callers. - * This means that: - * * in Safari, some methods may be missing from the stack trace; - * * in IE, the topmost function in the stack trace will always be the - * caller of computeStackTrace. - * - * This is okay for tracing (because you are likely to be calling - * computeStackTrace from the function you want to be the topmost element - * of the stack trace anyway), but not okay for logging unhandled - * exceptions (because your catch block will likely be far away from the - * inner function that actually caused the exception). - * - */ -TraceKit.computeStackTrace = (function computeStackTraceWrapper() { - // Contents of Exception in various browsers. - // - // SAFARI: - // ex.message = Can't find variable: qq - // ex.line = 59 - // ex.sourceId = 580238192 - // ex.sourceURL = http://... - // ex.expressionBeginOffset = 96 - // ex.expressionCaretOffset = 98 - // ex.expressionEndOffset = 98 - // ex.name = ReferenceError - // - // FIREFOX: - // ex.message = qq is not defined - // ex.fileName = http://... - // ex.lineNumber = 59 - // ex.columnNumber = 69 - // ex.stack = ...stack trace... (see the example below) - // ex.name = ReferenceError - // - // CHROME: - // ex.message = qq is not defined - // ex.name = ReferenceError - // ex.type = not_defined - // ex.arguments = ['aa'] - // ex.stack = ...stack trace... - // - // INTERNET EXPLORER: - // ex.message = ... - // ex.name = ReferenceError - // - // OPERA: - // ex.message = ...message... (see the example below) - // ex.name = ReferenceError - // ex.opera#sourceloc = 11 (pretty much useless, duplicates the info in ex.message) - // ex.stacktrace = n/a; see 'opera:config#UserPrefs|Exceptions Have Stacktrace' + if (!data || isEmptyObject(data)) { + return; + } // Check if the request should be filtered or not - /** - * Computes stack trace information from the stack property. - * Chrome and Gecko use this property. - * @param {Error} ex - * @return {?Object.} Stack trace information. - */ - function computeStackTraceFromStackProp(ex) { - if (typeof ex.stack === 'undefined' || !ex.stack) return; - var chrome = /^\s*at (.*?) ?\(((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i, - gecko = /^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|\[native).*?|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i, - winjs = /^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i, - // Used to additionally parse URL/line/column from eval frames - geckoEval = /(\S+) line (\d+)(?: > eval line \d+)* > eval/i, - chromeEval = /\((\S*)(?::(\d+))(?::(\d+))\)/, - lines = ex.stack.split('\n'), - stack = [], - submatch, - parts, - element, - reference = /^(.*) is undefined$/.exec(ex.message); + if (isFunction(globalOptions.shouldSendCallback) && !globalOptions.shouldSendCallback(data)) { + return; + } // Backoff state: Sentry server previously responded w/ an error (e.g. 429 - too many requests), + // so drop requests until "cool-off" period has elapsed. - for (var i = 0, j = lines.length; i < j; ++i) { - if ((parts = chrome.exec(lines[i]))) { - var isNative = parts[2] && parts[2].indexOf('native') === 0; // start of line - var isEval = parts[2] && parts[2].indexOf('eval') === 0; // start of line - if (isEval && (submatch = chromeEval.exec(parts[2]))) { - // throw out eval line/column and use top-most line/column number - parts[2] = submatch[1]; // url - parts[3] = submatch[2]; // line - parts[4] = submatch[3]; // column - } - element = { - url: !isNative ? parts[2] : null, - func: parts[1] || UNKNOWN_FUNCTION, - args: isNative ? [parts[2]] : [], - line: parts[3] ? +parts[3] : null, - column: parts[4] ? +parts[4] : null - }; - } else if ((parts = winjs.exec(lines[i]))) { - element = { - url: parts[2], - func: parts[1] || UNKNOWN_FUNCTION, - args: [], - line: +parts[3], - column: parts[4] ? +parts[4] : null - }; - } else if ((parts = gecko.exec(lines[i]))) { - var isEval = parts[3] && parts[3].indexOf(' > eval') > -1; - if (isEval && (submatch = geckoEval.exec(parts[3]))) { - // throw out eval line/column and use top-most line number - parts[3] = submatch[1]; - parts[4] = submatch[2]; - parts[5] = null; // no column when eval - } else if (i === 0 && !parts[5] && typeof ex.columnNumber !== 'undefined') { - // FireFox uses this awesome columnNumber property for its top frame - // Also note, Firefox's column number is 0-based and everything else expects 1-based, - // so adding 1 - // NOTE: this hack doesn't work if top-most frame is eval - stack[0].column = ex.columnNumber + 1; - } - element = { - url: parts[3], - func: parts[1] || UNKNOWN_FUNCTION, - args: parts[2] ? parts[2].split(',') : [], - line: parts[4] ? +parts[4] : null, - column: parts[5] ? +parts[5] : null - }; - } else { - continue; - } - if (!element.func && element.line) { - element.func = UNKNOWN_FUNCTION; - } + if (this._shouldBackoff()) { + this._logDebug('warn', 'Raven dropped error due to backoff: ', data); - stack.push(element); + return; } - if (!stack.length) { - return null; + if (typeof globalOptions.sampleRate === 'number') { + if (Math.random() < globalOptions.sampleRate) { + this._sendProcessedPayload(data); + } + } else { + this._sendProcessedPayload(data); } + }, + _getUuid: function _getUuid() { + return uuid4(); + }, + _sendProcessedPayload: function _sendProcessedPayload(data, callback) { + var self = this; + var globalOptions = this._globalOptions; + if (!this.isSetup()) return; // Try and clean up the packet before sending by truncating long values - return { - name: ex.name, - message: ex.message, - url: getLocationHref(), - stack: stack - }; - } + data = this._trimPacket(data); // ideally duplicate error testing should occur *before* dataCallback/shouldSendCallback, + // but this would require copying an un-truncated copy of the data packet, which can be + // arbitrarily deep (extra_data) -- could be worthwhile? will revisit - /** - * Adds information about the first frame to incomplete stack traces. - * Safari and IE require this to get complete data on the first frame. - * @param {Object.} stackInfo Stack trace information from - * one of the compute* methods. - * @param {string} url The URL of the script that caused an error. - * @param {(number|string)} lineNo The line number of the script that - * caused an error. - * @param {string=} message The error generated by the browser, which - * hopefully contains the name of the object that caused the error. - * @return {boolean} Whether or not the stack information was - * augmented. - */ - function augmentStackTraceWithInitialElement(stackInfo, url, lineNo, message) { - var initial = { - url: url, - line: lineNo + if (!this._globalOptions.allowDuplicates && this._isRepeatData(data)) { + this._logDebug('warn', 'Raven dropped repeat event: ', data); + + return; + } // Send along an event_id if not explicitly passed. + // This event_id can be used to reference the error within Sentry itself. + // Set lastEventId after we know the error should actually be sent + + + this._lastEventId = data.event_id || (data.event_id = this._getUuid()); // Store outbound payload after trim + + this._lastData = data; + + this._logDebug('debug', 'Raven about to send:', data); + + var auth = { + sentry_version: '7', + sentry_client: 'raven-js/' + this.VERSION, + sentry_key: this._globalKey }; - if (initial.url && initial.line) { - stackInfo.incomplete = false; + if (this._globalSecret) { + auth.sentry_secret = this._globalSecret; + } - if (!initial.func) { - initial.func = UNKNOWN_FUNCTION; - } + var exception = data.exception && data.exception.values[0]; // only capture 'sentry' breadcrumb is autoBreadcrumbs is truthy - if (stackInfo.stack.length > 0) { - if (stackInfo.stack[0].url === initial.url) { - if (stackInfo.stack[0].line === initial.line) { - return false; // already in stack trace - } else if ( - !stackInfo.stack[0].line && - stackInfo.stack[0].func === initial.func - ) { - stackInfo.stack[0].line = initial.line; - return false; - } - } - } + if (this._globalOptions.autoBreadcrumbs && this._globalOptions.autoBreadcrumbs.sentry) { + this.captureBreadcrumb({ + category: 'sentry', + message: exception ? (exception.type ? exception.type + ': ' : '') + exception.value : data.message, + event_id: data.event_id, + level: data.level || 'error' // presume error unless specified - stackInfo.stack.unshift(initial); - stackInfo.partial = true; - return true; - } else { - stackInfo.incomplete = true; + }); } - return false; - } + var url = this._globalEndpoint; - /** - * Computes stack trace information by walking the arguments.caller - * chain at the time the exception occurred. This will cause earlier - * frames to be missed but is the only way to get any stack trace in - * Safari and IE. The top frame is restored by - * {@link augmentStackTraceWithInitialElement}. - * @param {Error} ex - * @return {?Object.} Stack trace information. - */ - function computeStackTraceByWalkingCallerChain(ex, depth) { - var functionName = /function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i, - stack = [], - funcs = {}, - recursion = false, - parts, - item, - source; - - for ( - var curr = computeStackTraceByWalkingCallerChain.caller; - curr && !recursion; - curr = curr.caller - ) { - if (curr === computeStackTrace || curr === TraceKit.report) { - // console.log('skipping internal function'); - continue; - } + (globalOptions.transport || this._makeRequest).call(this, { + url: url, + auth: auth, + data: data, + options: globalOptions, + onSuccess: function success() { + self._resetBackoff(); - item = { - url: null, - func: UNKNOWN_FUNCTION, - line: null, - column: null - }; + self._triggerEvent('success', { + data: data, + src: url + }); - if (curr.name) { - item.func = curr.name; - } else if ((parts = functionName.exec(curr.toString()))) { - item.func = parts[1]; - } + callback && callback(); + }, + onError: function failure(error) { + self._logDebug('error', 'Raven transport failed to send: ', error); - if (typeof item.func === 'undefined') { - try { - item.func = parts.input.substring(0, parts.input.indexOf('{')); - } catch (e) {} - } + if (error.request) { + self._setBackoffState(error.request); + } - if (funcs['' + curr]) { - recursion = true; - } else { - funcs['' + curr] = true; + self._triggerEvent('failure', { + data: data, + src: url + }); + + error = error || new Error('Raven send failed (no additional details provided)'); + callback && callback(error); } + }); + }, + _makeRequest: function _makeRequest(opts) { + // Auth is intentionally sent as part of query string (NOT as custom HTTP header) to avoid preflight CORS requests + var url = opts.url + '?' + urlencode(opts.auth); + var evaluatedHeaders = null; + var evaluatedFetchParameters = {}; - stack.push(item); + if (opts.options.headers) { + evaluatedHeaders = this._evaluateHash(opts.options.headers); } - if (depth) { - // console.log('depth is ' + depth); - // console.log('stack is ' + stack.length); - stack.splice(0, depth); + if (opts.options.fetchParameters) { + evaluatedFetchParameters = this._evaluateHash(opts.options.fetchParameters); } - var result = { - name: ex.name, - message: ex.message, - url: getLocationHref(), - stack: stack - }; - augmentStackTraceWithInitialElement( - result, - ex.sourceURL || ex.fileName, - ex.line || ex.lineNumber, - ex.message || ex.description - ); - return result; - } - - /** - * Computes a stack trace for an exception. - * @param {Error} ex - * @param {(string|number)=} depth - */ - function computeStackTrace(ex, depth) { - var stack = null; - depth = depth == null ? 0 : +depth; + if (supportsFetch()) { + evaluatedFetchParameters.body = stringify_1(opts.data); + var defaultFetchOptions = objectMerge({}, this._fetchDefaults); + var fetchOptions = objectMerge(defaultFetchOptions, evaluatedFetchParameters); - try { - stack = computeStackTraceFromStackProp(ex); - if (stack) { - return stack; - } - } catch (e) { - if (TraceKit.debug) { - throw e; + if (evaluatedHeaders) { + fetchOptions.headers = evaluatedHeaders; } - } - try { - stack = computeStackTraceByWalkingCallerChain(ex, depth + 1); - if (stack) { - return stack; - } - } catch (e) { - if (TraceKit.debug) { - throw e; - } + return _window$1.fetch(url, fetchOptions).then(function (response) { + if (response.ok) { + opts.onSuccess && opts.onSuccess(); + } else { + var error = new Error('Sentry error code: ' + response.status); // It's called request only to keep compatibility with XHR interface + // and not add more redundant checks in setBackoffState method + + error.request = response; + opts.onError && opts.onError(error); + } + })['catch'](function () { + opts.onError && opts.onError(new Error('Sentry error code: network unavailable')); + }); } - return { - name: ex.name, - message: ex.message, - url: getLocationHref() - }; - } - computeStackTrace.augmentStackTraceWithInitialElement = augmentStackTraceWithInitialElement; - computeStackTrace.computeStackTraceFromStackProp = computeStackTraceFromStackProp; + var request = _window$1.XMLHttpRequest && new _window$1.XMLHttpRequest(); + if (!request) return; // if browser doesn't support CORS (e.g. IE7), we are out of luck - return computeStackTrace; -})(); + var hasCORS = 'withCredentials' in request || typeof XDomainRequest !== 'undefined'; + if (!hasCORS) return; -module.exports = TraceKit; + if ('withCredentials' in request) { + request.onreadystatechange = function () { + if (request.readyState !== 4) { + return; + } else if (request.status === 200) { + opts.onSuccess && opts.onSuccess(); + } else if (opts.onError) { + var err = new Error('Sentry error code: ' + request.status); + err.request = request; + opts.onError(err); + } + }; + } else { + request = new XDomainRequest(); // xdomainrequest cannot go http -> https (or vice versa), + // so always use protocol relative -}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) -},{"5":5}],7:[function(_dereq_,module,exports){ -/* - json-stringify-safe - Like JSON.stringify, but doesn't throw on circular references. + url = url.replace(/^https?:/, ''); // onreadystatechange not supported by XDomainRequest - Originally forked from https://github.com/isaacs/json-stringify-safe - version 5.0.1 on 3/8/2017 and modified to handle Errors serialization - and IE8 compatibility. Tests for this are in test/vendor. + if (opts.onSuccess) { + request.onload = opts.onSuccess; + } - ISC license: https://github.com/isaacs/json-stringify-safe/blob/master/LICENSE -*/ + if (opts.onError) { + request.onerror = function () { + var err = new Error('Sentry error code: XDomainRequest'); + err.request = request; + opts.onError(err); + }; + } + } -exports = module.exports = stringify; -exports.getSerialize = serializer; + request.open('POST', url); -function indexOf(haystack, needle) { - for (var i = 0; i < haystack.length; ++i) { - if (haystack[i] === needle) return i; - } - return -1; -} + if (evaluatedHeaders) { + each(evaluatedHeaders, function (key, value) { + request.setRequestHeader(key, value); + }); + } -function stringify(obj, replacer, spaces, cycleReplacer) { - return JSON.stringify(obj, serializer(replacer, cycleReplacer), spaces); -} + request.send(stringify_1(opts.data)); + }, + _evaluateHash: function _evaluateHash(hash) { + var evaluated = {}; -// https://github.com/ftlabs/js-abbreviate/blob/fa709e5f139e7770a71827b1893f22418097fbda/index.js#L95-L106 -function stringifyError(value) { - var err = { - // These properties are implemented as magical getters and don't show up in for in - stack: value.stack, - message: value.message, - name: value.name - }; + for (var key in hash) { + if (hash.hasOwnProperty(key)) { + var value = hash[key]; + evaluated[key] = typeof value === 'function' ? value() : value; + } + } - for (var i in value) { - if (Object.prototype.hasOwnProperty.call(value, i)) { - err[i] = value[i]; + return evaluated; + }, + _logDebug: function _logDebug(level) { + if (this._originalConsoleMethods[level] && this.debug) { + // In IE<10 console methods do not have their own 'apply' method + Function.prototype.apply.call(this._originalConsoleMethods[level], this._originalConsole, [].slice.call(arguments, 1)); + } + }, + _mergeContext: function _mergeContext(key, context) { + if (isUndefined(context)) { + delete this._globalContext[key]; + } else { + this._globalContext[key] = objectMerge(this._globalContext[key] || {}, context); } } +}; // Deprecations - return err; -} +Raven$1.prototype.setUser = Raven$1.prototype.setUserContext; +Raven$1.prototype.setReleaseContext = Raven$1.prototype.setRelease; +var raven = Raven$1; + +/** + * Enforces a single instance of the Raven client, and the + * main entry point for Raven. If you are a consumer of the + * Raven library, you SHOULD load this file (vs raven.js). + **/ +// This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) -function serializer(replacer, cycleReplacer) { - var stack = []; - var keys = []; +var _window = typeof window !== 'undefined' ? window : typeof commonjsGlobal !== 'undefined' ? commonjsGlobal : typeof self !== 'undefined' ? self : {}; - if (cycleReplacer == null) { - cycleReplacer = function(key, value) { - if (stack[0] === value) { - return '[Circular ~]'; - } - return '[Circular ~.' + keys.slice(0, indexOf(stack, value)).join('.') + ']'; - }; - } +var _Raven = _window.Raven; +var Raven = new raven(); +/* + * Allow multiple versions of Raven to be installed. + * Strip Raven from the global context and returns the instance. + * + * @return {Raven} + */ - return function(key, value) { - if (stack.length > 0) { - var thisPos = indexOf(stack, this); - ~thisPos ? stack.splice(thisPos + 1) : stack.push(this); - ~thisPos ? keys.splice(thisPos, Infinity, key) : keys.push(key); +Raven.noConflict = function () { + _window.Raven = _Raven; + return Raven; +}; - if (~indexOf(stack, value)) { - value = cycleReplacer.call(this, key, value); - } - } else { - stack.push(value); - } +Raven.afterLoad(); +var singleton = Raven; - return replacer == null - ? value instanceof Error ? stringifyError(value) : value - : replacer.call(this, key, value); - }; -} +return singleton; -},{}]},{},[4])(4) -}); \ No newline at end of file +}))); diff --git a/dist/raven.min.js b/dist/raven.min.js index 10ccf58f0beb..d24684a52069 100644 --- a/dist/raven.min.js +++ b/dist/raven.min.js @@ -1,3 +1,3 @@ -/*! Raven.js 3.22.1 (eec289b) | github.com/getsentry/raven-js */ -!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.Raven=a()}}(function(){return function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};b[g][0].call(k.exports,function(a){var c=b[g][1][a];return e(c?c:a)},k,k.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;gthis.k.maxBreadcrumbs&&this.u.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.r.push([a,b]),this.n&&this.E(),this},setUserContext:function(a){return this.j.user=a,this},setExtraContext:function(a){return this.T("extra",a),this},setTagsContext:function(a){return this.T("tags",a),this},clearContext:function(){return this.j={},this},getContext:function(){return JSON.parse(h(this.j))},setEnvironment:function(a){return this.k.environment=a,this},setRelease:function(a){return this.k.release=a,this},setDataCallback:function(a){var b=this.k.dataCallback;return this.k.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.k.breadcrumbCallback;return this.k.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.k.shouldSendCallback;return this.k.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.k.transport=a,this},lastException:function(){return this.d},lastEventId:function(){return this.f},isSetup:function(){return!!this.a&&(!!this.g||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.z("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=J.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(K){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new i("Missing eventId");var c=a.dsn||this.G;if(!c)throw new i("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.j.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.I(this.F(c)),h=K.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(K.head||K.body).appendChild(h)}},K:function(){var a=this;this.m+=1,setTimeout(function(){a.m-=1})},U:function(a,b){var c,d;if(this.b){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),K.createEvent?(c=K.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=K.createEventObject(),c.eventType=a);for(d in b)w(b,d)&&(c[d]=b[d]);if(K.createEvent)K.dispatchEvent(c);else try{K.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},V:function(a){var b=this;return function(c){if(b.W=null,b.v!==c){b.v=c;var d;try{d=A(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},X:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.W;g||a.V("input")(c),clearTimeout(g),a.W=setTimeout(function(){a.W=null},b)}}},Y:function(a,b){var c=D(this.w.href),d=D(b),e=D(a);this.x=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},B:function(){var a=this;a.Z=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.L?a.Z.apply(this.N,arguments):a.Z.apply(this,arguments)}},O:function(){this.Z&&(Function.prototype.toString=this.Z)},C:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.Y(b.x,c+""),a.apply(this,arguments)}};E(history,"pushState",j,d),E(history,"replaceState",j,d)}if(c.console&&"console"in J&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};s(["debug","info","warn","error","log"],function(a,b){G(console,b,k)})}},P:function(){for(var a;this.t.length;){a=this.t.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},E:function(){var a=this;s(this.r,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},F:function(a){var b=I.exec(a),c={},d=7;try{for(;d--;)c[H[d]]=b[d]||""}catch(e){throw new i("Invalid DSN: "+a)}if(c.pass&&!this.k.allowSecretKey)throw new i("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},I:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},A:function(){this.m||this.Q.apply(this,arguments)},Q:function(a,b){var c=this.R(a,b);this.U("handle",{stackInfo:a,options:b}),this._(a.name,a.message,a.url,a.lineno,c,b)},R:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(s(a.stack,function(b,e){var f=c.aa(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.u,0)}),this.j.user&&(a.user=this.j.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||r(a[b]))&&delete a[b]}),o(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!r(a)&&(!o(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.ga()?void this.z("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function y(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&i(b))for(c=b.split(/\s+/),f=0;f=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function k(a,b){var c=null;if(!b||f.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(h.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,g,h){var l=null,m=e.isErrorEvent(h)?h.error:h,n=e.isErrorEvent(a)?a.message:a;if(v)f.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&e.isError(m))l=f.computeStackTrace(m),k(l,!0);else{var p,r={url:b,line:c,column:g},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(j);p&&(s=p[1],n=p[2])}r.func=i,l={name:s,message:n,url:d(),stack:[r]},k(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=g.onerror,g.onerror=l,r=!0)}function n(){r&&(g.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,k.apply(null,[a,!1].concat(b))}function p(a,b){var c=h.call(arguments,1);if(v){if(u===a)return;o()}var d=f.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),f.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,e,f=/^\s*at (.*?) ?\(((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,g=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|\[native).*?|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,h=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,j=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,k=/\((\S*)(?::(\d+))(?::(\d+))\)/,l=a.stack.split("\n"),m=[],n=(/^(.*) is undefined$/.exec(a.message),0),o=l.length;n eval")>-1;q&&(b=j.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==n||c[5]||"undefined"==typeof a.columnNumber||(m[0].column=a.columnNumber+1),e={url:c[3],func:c[1]||i,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}!e.func&&e.line&&(e.func=i),m.push(e)}return m.length?{name:a.name,message:a.message,url:d(),stack:m}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=i),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,g){for(var h,j,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==e&&o!==f.report){if(j={url:null,func:i,line:null,column:null},o.name?j.func=o.name:(h=k.exec(o.toString()))&&(j.func=h[1]),"undefined"==typeof j.func)try{j.func=h.input.substring(0,h.input.indexOf("{"))}catch(p){}m[""+o]?n=!0:m[""+o]=!0,l.push(j)}g&&l.splice(0,g);var q={name:a.name,message:a.message,url:d(),stack:l};return b(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),q}function e(b,e){var g=null;e=null==e?0:+e;try{if(g=a(b))return g}catch(h){if(f.debug)throw h}try{if(g=c(b,e+1))return g}catch(h){if(f.debug)throw h}return{name:b.name,message:b.message,url:d()}}return e.augmentStackTraceWithInitialElement=b,e.computeStackTraceFromStackProp=a,e}(),b.exports=f}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{5:5}],7:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}]},{},[4])(4)}); +/*! Raven.js 3.22.2 (1b6187b) | github.com/getsentry/raven-js */ +!function(a,b){"object"==typeof exports&&"undefined"!=typeof module?module.exports=b():"function"==typeof define&&define.amd?define(b):a.Raven=b()}(this,function(){"use strict";function a(a,b){return b={exports:{}},a(b,b.exports),b.exports}function b(a){return(b="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(a){return typeof a}:function(a){return a&&"function"==typeof Symbol&&a.constructor===Symbol&&a!==Symbol.prototype?"symbol":typeof a})(a)}function c(a){return"object"===b(a)&&null!==a}function d(a){switch({}.toString.call(a)){case"[object Error]":return!0;case"[object Exception]":return!0;case"[object DOMException]":return!0;default:return a instanceof Error}}function e(a){return l()&&"[object ErrorEvent]"==={}.toString.call(a)}function f(a){return void 0===a}function g(a){return"function"==typeof a}function h(a){return"[object Object]"===Object.prototype.toString.call(a)}function i(a){return"[object String]"===Object.prototype.toString.call(a)}function j(a){return"[object Array]"===Object.prototype.toString.call(a)}function k(a){if(!h(a))return!1;for(var b in a)if(a.hasOwnProperty(b))return!1;return!0}function l(){try{return new ErrorEvent(""),!0}catch(a){return!1}}function m(){if(!("fetch"in M))return!1;try{return new Headers,new Request(""),new Response,!0}catch(a){return!1}}function n(a){function b(b,c){var d=a(b)||b;return c?c(d)||d:d}return b}function o(a,b){var c,d;if(f(a.length))for(c in a)s(a,c)&&b.call(null,c,a[c]);else if(d=a.length)for(c=0;c ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function y(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&i(b))for(c=b.split(/\s+/),f=0;f=0;--b)l[b]===a&&l.splice(b,1)}function c(){g(),l=[]}function d(a,b){var c=null;if(!b||O.collectWindowErrors){for(var d in l)if(l.hasOwnProperty(d))try{l[d].apply(null,[a].concat(Q.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function e(a,b,c,e,f){var g=null,i=N.isErrorEvent(f)?f.error:f,k=N.isErrorEvent(a)?a.message:a;if(o)O.computeStackTrace.augmentStackTraceWithInitialElement(o,b,c,k),h();else if(i&&N.isError(i))g=O.computeStackTrace(i),d(g,!0);else{var l,m={url:b,line:c,column:e},n=void 0;if("[object String]"==={}.toString.call(k)){var l=k.match(S);l&&(n=l[1],k=l[2])}m.func=R,g={name:n,message:k,url:F(),stack:[m]},d(g,!0)}return!!j&&j.apply(this,arguments)}function f(){k||(j=P.onerror,P.onerror=e,k=!0)}function g(){k&&(P.onerror=j,k=!1,j=void 0)}function h(){var a=o,b=m;m=null,o=null,n=null,d.apply(null,[a,!1].concat(b))}function i(a,b){var c=Q.call(arguments,1);if(o){if(n===a)return;h()}var d=O.computeStackTrace(a);if(o=d,n=a,m=c,setTimeout(function(){n===a&&h()},d.incomplete?2e3:0),b!==!1)throw a}var j,k,l=[],m=null,n=null,o=null;return i.subscribe=a,i.unsubscribe=b,i.uninstall=c,i}(),O.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,d,e=/^\s*at (.*?) ?\(((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,f=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|\[native).*?|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,g=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,h=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,i=/\((\S*)(?::(\d+))(?::(\d+))\)/,j=a.stack.split("\n"),k=[],l=(/^(.*) is undefined$/.exec(a.message),0),m=j.length;l eval")>-1;o&&(b=h.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==l||c[5]||"undefined"==typeof a.columnNumber||(k[0].column=a.columnNumber+1),d={url:c[3],func:c[1]||R,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}!d.func&&d.line&&(d.func=R),k.push(d)}return k.length?{name:a.name,message:a.message,url:F(),stack:k}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=R),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,e){for(var f,g,h=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,i=[],j={},k=!1,l=c.caller;l&&!k;l=l.caller)if(l!==d&&l!==O.report){if(g={url:null,func:R,line:null,column:null},l.name?g.func=l.name:(f=h.exec(l.toString()))&&(g.func=f[1]),"undefined"==typeof g.func)try{g.func=f.input.substring(0,f.input.indexOf("{"))}catch(m){}j[""+l]?k=!0:j[""+l]=!0,i.push(g)}e&&i.splice(0,e);var n={name:a.name,message:a.message,url:F(),stack:i};return b(n,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),n}function d(b,d){var e=null;d=null==d?0:+d;try{if(e=a(b))return e}catch(f){if(O.debug)throw f}try{if(e=c(b,d+1))return e}catch(f){if(O.debug)throw f}return{name:b.name,message:b.message,url:F()}}return d.augmentStackTraceWithInitialElement=b,d.computeStackTraceFromStackProp=a,d}();var T=O,U=a(function(a,b){function c(a,b){for(var c=0;c0){var i=c(d,this);~i?d.splice(i+1):d.push(this),~i?f.splice(i,1/0,g):f.push(g),~c(d,h)&&(h=b.call(this,g,h))}else d.push(h);return null==a?h instanceof Error?e(h):h:a.call(this,g,h)}}b=a.exports=d,b.getSerialize=f});G.prototype=new Error,G.prototype.constructor=G;var V=G,W=function(a,b,c){var d=a[b],e=a;if(b in a){var f="warn"===b?"warning":b;a[b]=function(){var a=[].slice.call(arguments),g=N.safeJoin(a," "),h={level:f,logger:"console",extra:{arguments:a}};"assert"===b?a[0]===!1&&(g="Assertion failed: "+(N.safeJoin(a.slice(1)," ")||"console.assert"),h.extra.arguments=a.slice(1),c&&c(g,h)):c&&c(g,h),d&&Function.prototype.apply.call(d,e,a)}}},X={wrapMethod:W},Y=N.isError,Z=N.isObject,$=N.isErrorEvent,_=N.isUndefined,aa=N.isFunction,ba=N.isString,ca=N.isArray,da=N.isEmptyObject,ea=N.each,fa=N.objectMerge,ga=N.truncate,ha=N.objectFrozen,ia=N.hasKey,ja=N.joinRegExp,ka=N.urlencode,la=N.uuid4,ma=N.htmlTreeAsString,na=N.isSameException,oa=N.isSameStacktrace,pa=N.parseUrl,qa=N.fill,ra=N.supportsFetch,sa=X.wrapMethod,ta="source protocol user pass host port path".split(" "),ua=/^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/,va="undefined"!=typeof window?window:"undefined"!=typeof K?K:"undefined"!=typeof self?self:{},wa=va.document,xa=va.navigator;J.prototype={VERSION:"3.22.2",debug:!1,TraceKit:T,config:function(a,b){var c=this;if(c.i)return this.C("error","Error: Raven has already been configured"),c;if(!a)return c;var d=c.m;b&&ea(b,function(a,b){"tags"===a||"extra"===a||"user"===a?c.l[a]=b:d[a]=b}),c.setDSN(a),d.ignoreErrors.push(/^Script error\.?$/),d.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/),d.ignoreErrors=ja(d.ignoreErrors),d.ignoreUrls=!!d.ignoreUrls.length&&ja(d.ignoreUrls),d.whitelistUrls=!!d.whitelistUrls.length&&ja(d.whitelistUrls),d.includePaths=ja(d.includePaths),d.maxBreadcrumbs=Math.max(0,Math.min(d.maxBreadcrumbs||100,100));var e={xhr:!0,console:!0,dom:!0,location:!0,sentry:!0},f=d.autoBreadcrumbs;"[object Object]"==={}.toString.call(f)?f=fa(e,f):f!==!1&&(f=e),d.autoBreadcrumbs=f;var g={tryCatch:!0},h=d.instrument;return"[object Object]"==={}.toString.call(h)?h=fa(g,h):h!==!1&&(h=g),d.instrument=h,T.collectWindowErrors=!!d.collectWindowErrors,c},install:function(){var a=this;return a.isSetup()&&!a.p&&(T.report.subscribe(function(){a.D.apply(a,arguments)}),a.E(),a.m.instrument&&a.m.instrument.tryCatch&&a.F(),a.m.autoBreadcrumbs&&a.G(),a.H(),a.p=!0),Error.stackTraceLimit=a.m.stackTraceLimit,this},setDSN:function(a){var b=this,c=b.I(a),d=c.path.lastIndexOf("/"),e=c.path.substr(1,d);b.J=a,b.j=c.user,b.K=c.pass&&c.pass.substr(1),b.k=c.path.substr(d+1),b.i=b.L(c),b.M=b.i+"/"+e+"api/"+b.k+"/store/",this.A()},context:function(a,b,c){return aa(a)&&(c=b||[],b=a,a=void 0),this.wrap(a,b).apply(this,c)},wrap:function(a,b,c){function d(){var d=[],f=arguments.length,g=!a||a&&a.deep!==!1;for(c&&aa(c)&&c.apply(this,arguments);f--;)d[f]=g?e.wrap(a,arguments[f]):arguments[f];try{return b.apply(this,d)}catch(h){throw e.N(),e.captureException(h,a),h}}var e=this;if(_(b)&&!aa(a))return a;if(aa(a)&&(b=a,a=void 0),!aa(b))return b;try{if(b.a)return b;if(b.O)return b.O}catch(f){return b}for(var g in b)ia(b,g)&&(d[g]=b[g]);return d.prototype=b.prototype,b.O=d,d.a=!0,d.b=b,d},uninstall:function(){return T.report.uninstall(),this.P(),this.Q(),this.R(),Error.stackTraceLimit=this.q,this.p=!1,this},captureException:function(a,b){b=fa({trimHeadFrames:0},b?b:{});var c=!Y(a),d=!$(a),e=$(a)&&!a.error;if(c&&d||e)return this.captureMessage(a,fa(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}));$(a)&&(a=a.error),this.f=a;try{var f=T.computeStackTrace(a);this.S(f,b)}catch(g){if(a!==g)throw g}return this},captureMessage:function(a,b){if(!this.m.ignoreErrors.test||!this.m.ignoreErrors.test(a)){b=b||{};var c,d=fa({message:a+""},b);try{throw new Error(a)}catch(e){c=e}c.name=null;var f=T.computeStackTrace(c),g=ca(f.stack)&&f.stack[1],h=g&&g.url||"";if((!this.m.ignoreUrls.test||!this.m.ignoreUrls.test(h))&&(!this.m.whitelistUrls.test||this.m.whitelistUrls.test(h))){if(this.m.stacktrace||b&&b.stacktrace){b=fa({fingerprint:a,trimHeadFrames:(b.trimHeadFrames||0)+1},b);var i=this.T(f,b);d.stacktrace={frames:i.reverse()}}return this.U(d),this}}},captureBreadcrumb:function(a){var b=fa({timestamp:H()/1e3},a);if(aa(this.m.breadcrumbCallback)){var c=this.m.breadcrumbCallback(b);if(Z(c)&&!da(c))b=c;else if(c===!1)return this}return this.w.push(b),this.w.length>this.m.maxBreadcrumbs&&this.w.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.t.push([a,b]),this.p&&this.H(),this},setUserContext:function(a){return this.l.user=a,this},setExtraContext:function(a){return this.V("extra",a),this},setTagsContext:function(a){return this.V("tags",a),this},clearContext:function(){return this.l={},this},getContext:function(){return JSON.parse(U(this.l))},setEnvironment:function(a){return this.m.environment=a,this},setRelease:function(a){return this.m.release=a,this},setDataCallback:function(a){var b=this.m.dataCallback;return this.m.dataCallback=I(b,a),this},setBreadcrumbCallback:function(a){var b=this.m.breadcrumbCallback;return this.m.breadcrumbCallback=I(b,a),this},setShouldSendCallback:function(a){var b=this.m.shouldSendCallback;return this.m.shouldSendCallback=I(b,a),this},setTransport:function(a){return this.m.transport=a,this},lastException:function(){return this.f},lastEventId:function(){return this.h},isSetup:function(){return!!this.c&&(!!this.i||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.C("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=va.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(wa){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new V("Missing eventId");var c=a.dsn||this.J;if(!c)throw new V("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.l.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.L(this.I(c)),h=wa.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(wa.head||wa.body).appendChild(h)}},N:function(){var a=this;this.o+=1,setTimeout(function(){a.o-=1})},W:function(a,b){var c,d;if(this.d){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),wa.createEvent?(c=wa.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=wa.createEventObject(),c.eventType=a);for(d in b)ia(b,d)&&(c[d]=b[d]);if(wa.createEvent)wa.dispatchEvent(c);else try{wa.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},X:function(a){var b=this;return function(c){if(b.Y=null,b.x!==c){b.x=c;var d;try{d=ma(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},Z:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.Y;g||a.X("input")(c),clearTimeout(g),a.Y=setTimeout(function(){a.Y=null},b)}}},$:function(a,b){var c=pa(this.y.href),d=pa(b),e=pa(a);this.z=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},E:function(){var a=this;a._=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.a?a._.apply(this.b,arguments):a._.apply(this,arguments)}},P:function(){this._&&(Function.prototype.toString=this._)},F:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.$(b.z,c+""),a.apply(this,arguments)}};qa(history,"pushState",j,d),qa(history,"replaceState",j,d)}if(c.console&&"console"in va&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};ea(["debug","info","warn","error","log"],function(a,b){sa(console,b,k)})}},Q:function(){for(var a;this.v.length;){a=this.v.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},R:function(){for(var a in this.s)this.r[a]=this.s[a]},H:function(){var a=this;ea(this.t,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},I:function(a){var b=ua.exec(a),c={},d=7;try{for(;d--;)c[ta[d]]=b[d]||""}catch(e){throw new V("Invalid DSN: "+a)}if(c.pass&&!this.m.allowSecretKey)throw new V("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},L:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},D:function(){this.o||this.S.apply(this,arguments)},S:function(a,b){var c=this.T(a,b);this.W("handle",{stackInfo:a,options:b}),this.ba(a.name,a.message,a.url,a.lineno,c,b)},T:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(ea(a.stack,function(b,e){var f=c.ca(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.w,0)}),this.l.user&&(a.user=this.l.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||da(a[b]))&&delete a[b]}),aa(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!da(a)&&(!aa(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.ia()?void this.C("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() href parsing trick because React Native and other +// environments where DOM might not be available + + +function parseUrl$1(url) { + if (typeof url !== 'string') return {}; + var match = url.match(/^(([^:\/?#]+):)?(\/\/([^\/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?$/); // coerce to undefined values to empty string so we don't get 'undefined' + + var query = match[6] || ''; + var fragment = match[8] || ''; + return { + protocol: match[2], + host: match[4], + path: match[5], + relative: match[5] + query + fragment // everything minus origin + + }; +} + +function uuid4$1() { + var crypto = _window$3.crypto || _window$3.msCrypto; + + if (!isUndefined$1(crypto) && crypto.getRandomValues) { + // Use window.crypto API if available + // eslint-disable-next-line no-undef + var arr = new Uint16Array(8); + crypto.getRandomValues(arr); // set 4 in byte 7 + + arr[3] = arr[3] & 0xfff | 0x4000; // set 2 most significant bits of byte 9 to '10' + + arr[4] = arr[4] & 0x3fff | 0x8000; + + var pad = function pad(num) { + var v = num.toString(16); + + while (v.length < 4) { + v = '0' + v; + } + + return v; + }; + + return pad(arr[0]) + pad(arr[1]) + pad(arr[2]) + pad(arr[3]) + pad(arr[4]) + pad(arr[5]) + pad(arr[6]) + pad(arr[7]); + } else { + // http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/2117523#2117523 + return 'xxxxxxxxxxxx4xxxyxxxxxxxxxxxxxxx'.replace(/[xy]/g, function (c) { + var r = Math.random() * 16 | 0, + v = c === 'x' ? r : r & 0x3 | 0x8; + return v.toString(16); + }); + } +} +/** + * Given a child DOM element, returns a query-selector statement describing that + * and its ancestors + * e.g. [HTMLElement] => body > div > input#foo.btn[name=baz] + * @param elem + * @returns {string} + */ + + +function htmlTreeAsString$1(elem) { + /* eslint no-extra-parens:0*/ + var MAX_TRAVERSE_HEIGHT = 5, + MAX_OUTPUT_LEN = 80, + out = [], + height = 0, + len = 0, + separator = ' > ', + sepLength = separator.length, + nextStr; + + while (elem && height++ < MAX_TRAVERSE_HEIGHT) { + nextStr = htmlElementAsString(elem); // bail out if + // - nextStr is the 'html' element + // - the length of the string that would be created exceeds MAX_OUTPUT_LEN + // (ignore this limit if we are on the first iteration) + + if (nextStr === 'html' || height > 1 && len + out.length * sepLength + nextStr.length >= MAX_OUTPUT_LEN) { + break; + } + + out.push(nextStr); + len += nextStr.length; + elem = elem.parentNode; + } + + return out.reverse().join(separator); +} +/** + * Returns a simple, query-selector representation of a DOM element + * e.g. [HTMLElement] => input#foo.btn[name=baz] + * @param HTMLElement + * @returns {string} + */ + + +function htmlElementAsString(elem) { + var out = [], + className, + classes, + key, + attr, + i; + + if (!elem || !elem.tagName) { + return ''; + } + + out.push(elem.tagName.toLowerCase()); + + if (elem.id) { + out.push('#' + elem.id); + } + + className = elem.className; + + if (className && isString$1(className)) { + classes = className.split(/\s+/); + + for (i = 0; i < classes.length; i++) { + out.push('.' + classes[i]); + } + } + + var attrWhitelist = ['type', 'name', 'title', 'alt']; + + for (i = 0; i < attrWhitelist.length; i++) { + key = attrWhitelist[i]; + attr = elem.getAttribute(key); + + if (attr) { + out.push('[' + key + '="' + attr + '"]'); + } + } + + return out.join(''); +} +/** + * Returns true if either a OR b is truthy, but not both + */ + + +function isOnlyOneTruthy(a, b) { + return !!(!!a ^ !!b); +} +/** + * Returns true if both parameters are undefined + */ + + +function isBothUndefined(a, b) { + return isUndefined$1(a) && isUndefined$1(b); +} +/** + * Returns true if the two input exception interfaces have the same content + */ + + +function isSameException$1(ex1, ex2) { + if (isOnlyOneTruthy(ex1, ex2)) return false; + ex1 = ex1.values[0]; + ex2 = ex2.values[0]; + if (ex1.type !== ex2.type || ex1.value !== ex2.value) return false; // in case both stacktraces are undefined, we can't decide so default to false + + if (isBothUndefined(ex1.stacktrace, ex2.stacktrace)) return false; + return isSameStacktrace$1(ex1.stacktrace, ex2.stacktrace); +} +/** + * Returns true if the two input stack trace interfaces have the same content + */ + + +function isSameStacktrace$1(stack1, stack2) { + if (isOnlyOneTruthy(stack1, stack2)) return false; + var frames1 = stack1.frames; + var frames2 = stack2.frames; // Exit early if frame count differs + + if (frames1.length !== frames2.length) return false; // Iterate through every frame; bail out if anything differs + + var a, b; + + for (var i = 0; i < frames1.length; i++) { + a = frames1[i]; + b = frames2[i]; + if (a.filename !== b.filename || a.lineno !== b.lineno || a.colno !== b.colno || a['function'] !== b['function']) return false; + } + + return true; +} +/** + * Polyfill a method + * @param obj object e.g. `document` + * @param name method name present on object e.g. `addEventListener` + * @param replacement replacement function + * @param track {optional} record instrumentation to an array + */ + + +function fill$1(obj, name, replacement, track) { + var orig = obj[name]; + obj[name] = replacement(orig); + obj[name].__raven__ = true; + obj[name].__orig__ = orig; + + if (track) { + track.push([obj, name, orig]); + } +} +/** + * Join values in array + * @param input array of values to be joined together + * @param delimiter string to be placed in-between values + * @returns {string} + */ + + +function safeJoin(input, delimiter) { + if (!isArray$1(input)) return ''; + var output = []; + + for (var i = 0; i < input.length; i++) { + try { + output.push(String(input[i])); + } catch (e) { + output.push('[value cannot be serialized]'); + } + } + + return output.join(delimiter); +} + +var utils = { + isObject: isObject$1, + isError: isError$1, + isErrorEvent: isErrorEvent$1, + isUndefined: isUndefined$1, + isFunction: isFunction$1, + isPlainObject: isPlainObject, + isString: isString$1, + isArray: isArray$1, + isEmptyObject: isEmptyObject$1, + supportsErrorEvent: supportsErrorEvent, + supportsFetch: supportsFetch$1, + wrappedCallback: wrappedCallback, + each: each$1, + objectMerge: objectMerge$1, + truncate: truncate$1, + objectFrozen: objectFrozen$1, + hasKey: hasKey$1, + joinRegExp: joinRegExp$1, + urlencode: urlencode$1, + uuid4: uuid4$1, + htmlTreeAsString: htmlTreeAsString$1, + htmlElementAsString: htmlElementAsString, + isSameException: isSameException$1, + isSameStacktrace: isSameStacktrace$1, + parseUrl: parseUrl$1, + fill: fill$1, + safeJoin: safeJoin +}; + +/* + TraceKit - Cross brower stack traces + + This was originally forked from github.com/occ/TraceKit, but has since been + largely re-written and is now maintained as part of raven-js. Tests for + this are in test/vendor. + + MIT license +*/ + +var TraceKit = { + collectWindowErrors: true, + debug: false +}; // This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) + +var _window$2 = typeof window !== 'undefined' ? window : typeof commonjsGlobal !== 'undefined' ? commonjsGlobal : typeof self !== 'undefined' ? self : {}; // global reference to slice + + +var _slice = [].slice; +var UNKNOWN_FUNCTION = '?'; // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error#Error_types + +var ERROR_TYPES_RE = /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/; + +function getLocationHref() { + if (typeof document === 'undefined' || document.location == null) return ''; + return document.location.href; +} +/** + * TraceKit.report: cross-browser processing of unhandled exceptions + * + * Syntax: + * TraceKit.report.subscribe(function(stackInfo) { ... }) + * TraceKit.report.unsubscribe(function(stackInfo) { ... }) + * TraceKit.report(exception) + * try { ...code... } catch(ex) { TraceKit.report(ex); } + * + * Supports: + * - Firefox: full stack trace with line numbers, plus column number + * on top frame; column number is not guaranteed + * - Opera: full stack trace with line and column numbers + * - Chrome: full stack trace with line and column numbers + * - Safari: line and column number for the top frame only; some frames + * may be missing, and column number is not guaranteed + * - IE: line and column number for the top frame only; some frames + * may be missing, and column number is not guaranteed + * + * In theory, TraceKit should work on all of the following versions: + * - IE5.5+ (only 8.0 tested) + * - Firefox 0.9+ (only 3.5+ tested) + * - Opera 7+ (only 10.50 tested; versions 9 and earlier may require + * Exceptions Have Stacktrace to be enabled in opera:config) + * - Safari 3+ (only 4+ tested) + * - Chrome 1+ (only 5+ tested) + * - Konqueror 3.5+ (untested) + * + * Requires TraceKit.computeStackTrace. + * + * Tries to catch all unhandled exceptions and report them to the + * subscribed handlers. Please note that TraceKit.report will rethrow the + * exception. This is REQUIRED in order to get a useful stack trace in IE. + * If the exception does not reach the top of the browser, you will only + * get a stack trace from the point where TraceKit.report was called. + * + * Handlers receive a stackInfo object as described in the + * TraceKit.computeStackTrace docs. + */ + + +TraceKit.report = function reportModuleWrapper() { + var handlers = [], + lastArgs = null, + lastException = null, + lastExceptionStack = null; + /** + * Add a crash handler. + * @param {Function} handler + */ + + function subscribe(handler) { + installGlobalHandler(); + handlers.push(handler); + } + /** + * Remove a crash handler. + * @param {Function} handler + */ + + + function unsubscribe(handler) { + for (var i = handlers.length - 1; i >= 0; --i) { + if (handlers[i] === handler) { + handlers.splice(i, 1); + } + } + } + /** + * Remove all crash handlers. + */ + + + function unsubscribeAll() { + uninstallGlobalHandler(); + handlers = []; + } + /** + * Dispatch stack information to all handlers. + * @param {Object.} stack + */ + + + function notifyHandlers(stack, isWindowError) { + var exception = null; + + if (isWindowError && !TraceKit.collectWindowErrors) { + return; + } + + for (var i in handlers) { + if (handlers.hasOwnProperty(i)) { + try { + handlers[i].apply(null, [stack].concat(_slice.call(arguments, 2))); + } catch (inner) { + exception = inner; + } + } + } + + if (exception) { + throw exception; + } + } + + var _oldOnerrorHandler, _onErrorHandlerInstalled; + /** + * Ensures all global unhandled exceptions are recorded. + * Supported by Gecko and IE. + * @param {string} msg Error message. + * @param {string} url URL of script that generated the exception. + * @param {(number|string)} lineNo The line number at which the error + * occurred. + * @param {?(number|string)} colNo The column number at which the error + * occurred. + * @param {?Error} ex The actual Error object. + */ + + + function traceKitWindowOnError(msg, url, lineNo, colNo, ex) { + var stack = null; // If 'ex' is ErrorEvent, get real Error from inside + + var exception = utils.isErrorEvent(ex) ? ex.error : ex; // If 'msg' is ErrorEvent, get real message from inside + + var message = utils.isErrorEvent(msg) ? msg.message : msg; + + if (lastExceptionStack) { + TraceKit.computeStackTrace.augmentStackTraceWithInitialElement(lastExceptionStack, url, lineNo, message); + processLastException(); + } else if (exception && utils.isError(exception)) { + // non-string `exception` arg; attempt to extract stack trace + // New chrome and blink send along a real error object + // Let's just report that like a normal error. + // See: https://mikewest.org/2013/08/debugging-runtime-errors-with-window-onerror + stack = TraceKit.computeStackTrace(exception); + notifyHandlers(stack, true); + } else { + var location = { + url: url, + line: lineNo, + column: colNo + }; + var name = undefined; + var groups; + + if ({}.toString.call(message) === '[object String]') { + var groups = message.match(ERROR_TYPES_RE); + + if (groups) { + name = groups[1]; + message = groups[2]; + } + } + + location.func = UNKNOWN_FUNCTION; + stack = { + name: name, + message: message, + url: getLocationHref(), + stack: [location] + }; + notifyHandlers(stack, true); + } + + if (_oldOnerrorHandler) { + return _oldOnerrorHandler.apply(this, arguments); + } + + return false; + } + + function installGlobalHandler() { + if (_onErrorHandlerInstalled) { + return; + } + + _oldOnerrorHandler = _window$2.onerror; + _window$2.onerror = traceKitWindowOnError; + _onErrorHandlerInstalled = true; + } + + function uninstallGlobalHandler() { + if (!_onErrorHandlerInstalled) { + return; + } + + _window$2.onerror = _oldOnerrorHandler; + _onErrorHandlerInstalled = false; + _oldOnerrorHandler = undefined; + } + + function processLastException() { + var _lastExceptionStack = lastExceptionStack, + _lastArgs = lastArgs; + lastArgs = null; + lastExceptionStack = null; + lastException = null; + notifyHandlers.apply(null, [_lastExceptionStack, false].concat(_lastArgs)); + } + /** + * Reports an unhandled Error to TraceKit. + * @param {Error} ex + * @param {?boolean} rethrow If false, do not re-throw the exception. + * Only used for window.onerror to not cause an infinite loop of + * rethrowing. + */ + + + function report(ex, rethrow) { + var args = _slice.call(arguments, 1); + + if (lastExceptionStack) { + if (lastException === ex) { + return; // already caught by an inner catch block, ignore + } else { + processLastException(); + } + } + + var stack = TraceKit.computeStackTrace(ex); + lastExceptionStack = stack; + lastException = ex; + lastArgs = args; // If the stack trace is incomplete, wait for 2 seconds for + // slow slow IE to see if onerror occurs or not before reporting + // this exception; otherwise, we will end up with an incomplete + // stack trace + + setTimeout(function () { + if (lastException === ex) { + processLastException(); + } + }, stack.incomplete ? 2000 : 0); + + if (rethrow !== false) { + throw ex; // re-throw to propagate to the top level (and cause window.onerror) + } + } + + report.subscribe = subscribe; + report.unsubscribe = unsubscribe; + report.uninstall = unsubscribeAll; + return report; +}(); +/** + * TraceKit.computeStackTrace: cross-browser stack traces in JavaScript + * + * Syntax: + * s = TraceKit.computeStackTrace(exception) // consider using TraceKit.report instead (see below) + * Returns: + * s.name - exception name + * s.message - exception message + * s.stack[i].url - JavaScript or HTML file URL + * s.stack[i].func - function name, or empty for anonymous functions (if guessing did not work) + * s.stack[i].args - arguments passed to the function, if known + * s.stack[i].line - line number, if known + * s.stack[i].column - column number, if known + * + * Supports: + * - Firefox: full stack trace with line numbers and unreliable column + * number on top frame + * - Opera 10: full stack trace with line and column numbers + * - Opera 9-: full stack trace with line numbers + * - Chrome: full stack trace with line and column numbers + * - Safari: line and column number for the topmost stacktrace element + * only + * - IE: no line numbers whatsoever + * + * Tries to guess names of anonymous functions by looking for assignments + * in the source code. In IE and Safari, we have to guess source file names + * by searching for function bodies inside all page scripts. This will not + * work for scripts that are loaded cross-domain. + * Here be dragons: some function names may be guessed incorrectly, and + * duplicate functions may be mismatched. + * + * TraceKit.computeStackTrace should only be used for tracing purposes. + * Logging of unhandled exceptions should be done with TraceKit.report, + * which builds on top of TraceKit.computeStackTrace and provides better + * IE support by utilizing the window.onerror event to retrieve information + * about the top of the stack. + * + * Note: In IE and Safari, no stack trace is recorded on the Error object, + * so computeStackTrace instead walks its *own* chain of callers. + * This means that: + * * in Safari, some methods may be missing from the stack trace; + * * in IE, the topmost function in the stack trace will always be the + * caller of computeStackTrace. + * + * This is okay for tracing (because you are likely to be calling + * computeStackTrace from the function you want to be the topmost element + * of the stack trace anyway), but not okay for logging unhandled + * exceptions (because your catch block will likely be far away from the + * inner function that actually caused the exception). + * + */ + + +TraceKit.computeStackTrace = function computeStackTraceWrapper() { + // Contents of Exception in various browsers. + // + // SAFARI: + // ex.message = Can't find variable: qq + // ex.line = 59 + // ex.sourceId = 580238192 + // ex.sourceURL = http://... + // ex.expressionBeginOffset = 96 + // ex.expressionCaretOffset = 98 + // ex.expressionEndOffset = 98 + // ex.name = ReferenceError + // + // FIREFOX: + // ex.message = qq is not defined + // ex.fileName = http://... + // ex.lineNumber = 59 + // ex.columnNumber = 69 + // ex.stack = ...stack trace... (see the example below) + // ex.name = ReferenceError + // + // CHROME: + // ex.message = qq is not defined + // ex.name = ReferenceError + // ex.type = not_defined + // ex.arguments = ['aa'] + // ex.stack = ...stack trace... + // + // INTERNET EXPLORER: + // ex.message = ... + // ex.name = ReferenceError + // + // OPERA: + // ex.message = ...message... (see the example below) + // ex.name = ReferenceError + // ex.opera#sourceloc = 11 (pretty much useless, duplicates the info in ex.message) + // ex.stacktrace = n/a; see 'opera:config#UserPrefs|Exceptions Have Stacktrace' + + /** + * Computes stack trace information from the stack property. + * Chrome and Gecko use this property. + * @param {Error} ex + * @return {?Object.} Stack trace information. + */ + function computeStackTraceFromStackProp(ex) { + if (typeof ex.stack === 'undefined' || !ex.stack) return; + var chrome = /^\s*at (.*?) ?\(((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i, + gecko = /^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|\[native).*?|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i, + winjs = /^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i, + // Used to additionally parse URL/line/column from eval frames + geckoEval = /(\S+) line (\d+)(?: > eval line \d+)* > eval/i, + chromeEval = /\((\S*)(?::(\d+))(?::(\d+))\)/, + lines = ex.stack.split('\n'), + stack = [], + submatch, + parts, + element, + reference = /^(.*) is undefined$/.exec(ex.message); + + for (var i = 0, j = lines.length; i < j; ++i) { + if (parts = chrome.exec(lines[i])) { + var isNative = parts[2] && parts[2].indexOf('native') === 0; // start of line + + var isEval = parts[2] && parts[2].indexOf('eval') === 0; // start of line + + if (isEval && (submatch = chromeEval.exec(parts[2]))) { + // throw out eval line/column and use top-most line/column number + parts[2] = submatch[1]; // url + + parts[3] = submatch[2]; // line + + parts[4] = submatch[3]; // column + } + + element = { + url: !isNative ? parts[2] : null, + func: parts[1] || UNKNOWN_FUNCTION, + args: isNative ? [parts[2]] : [], + line: parts[3] ? +parts[3] : null, + column: parts[4] ? +parts[4] : null + }; + } else if (parts = winjs.exec(lines[i])) { + element = { + url: parts[2], + func: parts[1] || UNKNOWN_FUNCTION, + args: [], + line: +parts[3], + column: parts[4] ? +parts[4] : null + }; + } else if (parts = gecko.exec(lines[i])) { + var isEval = parts[3] && parts[3].indexOf(' > eval') > -1; + + if (isEval && (submatch = geckoEval.exec(parts[3]))) { + // throw out eval line/column and use top-most line number + parts[3] = submatch[1]; + parts[4] = submatch[2]; + parts[5] = null; // no column when eval + } else if (i === 0 && !parts[5] && typeof ex.columnNumber !== 'undefined') { + // FireFox uses this awesome columnNumber property for its top frame + // Also note, Firefox's column number is 0-based and everything else expects 1-based, + // so adding 1 + // NOTE: this hack doesn't work if top-most frame is eval + stack[0].column = ex.columnNumber + 1; + } + + element = { + url: parts[3], + func: parts[1] || UNKNOWN_FUNCTION, + args: parts[2] ? parts[2].split(',') : [], + line: parts[4] ? +parts[4] : null, + column: parts[5] ? +parts[5] : null + }; + } else { + continue; + } + + if (!element.func && element.line) { + element.func = UNKNOWN_FUNCTION; + } + + stack.push(element); + } + + if (!stack.length) { + return null; + } + + return { + name: ex.name, + message: ex.message, + url: getLocationHref(), + stack: stack + }; + } + /** + * Adds information about the first frame to incomplete stack traces. + * Safari and IE require this to get complete data on the first frame. + * @param {Object.} stackInfo Stack trace information from + * one of the compute* methods. + * @param {string} url The URL of the script that caused an error. + * @param {(number|string)} lineNo The line number of the script that + * caused an error. + * @param {string=} message The error generated by the browser, which + * hopefully contains the name of the object that caused the error. + * @return {boolean} Whether or not the stack information was + * augmented. + */ + + + function augmentStackTraceWithInitialElement(stackInfo, url, lineNo, message) { + var initial = { + url: url, + line: lineNo + }; + + if (initial.url && initial.line) { + stackInfo.incomplete = false; + + if (!initial.func) { + initial.func = UNKNOWN_FUNCTION; + } + + if (stackInfo.stack.length > 0) { + if (stackInfo.stack[0].url === initial.url) { + if (stackInfo.stack[0].line === initial.line) { + return false; // already in stack trace + } else if (!stackInfo.stack[0].line && stackInfo.stack[0].func === initial.func) { + stackInfo.stack[0].line = initial.line; + return false; + } + } + } + + stackInfo.stack.unshift(initial); + stackInfo.partial = true; + return true; + } else { + stackInfo.incomplete = true; + } + + return false; + } + /** + * Computes stack trace information by walking the arguments.caller + * chain at the time the exception occurred. This will cause earlier + * frames to be missed but is the only way to get any stack trace in + * Safari and IE. The top frame is restored by + * {@link augmentStackTraceWithInitialElement}. + * @param {Error} ex + * @return {?Object.} Stack trace information. + */ + + + function computeStackTraceByWalkingCallerChain(ex, depth) { + var functionName = /function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i, + stack = [], + funcs = {}, + recursion = false, + parts, + item; + + for (var curr = computeStackTraceByWalkingCallerChain.caller; curr && !recursion; curr = curr.caller) { + if (curr === computeStackTrace || curr === TraceKit.report) { + // console.log('skipping internal function'); + continue; + } + + item = { + url: null, + func: UNKNOWN_FUNCTION, + line: null, + column: null + }; + + if (curr.name) { + item.func = curr.name; + } else if (parts = functionName.exec(curr.toString())) { + item.func = parts[1]; + } + + if (typeof item.func === 'undefined') { + try { + item.func = parts.input.substring(0, parts.input.indexOf('{')); + } catch (e) {} + } + + if (funcs['' + curr]) { + recursion = true; + } else { + funcs['' + curr] = true; + } + + stack.push(item); + } + + if (depth) { + // console.log('depth is ' + depth); + // console.log('stack is ' + stack.length); + stack.splice(0, depth); + } + + var result = { + name: ex.name, + message: ex.message, + url: getLocationHref(), + stack: stack + }; + augmentStackTraceWithInitialElement(result, ex.sourceURL || ex.fileName, ex.line || ex.lineNumber, ex.message || ex.description); + return result; + } + /** + * Computes a stack trace for an exception. + * @param {Error} ex + * @param {(string|number)=} depth + */ + + + function computeStackTrace(ex, depth) { + var stack = null; + depth = depth == null ? 0 : +depth; + + try { + stack = computeStackTraceFromStackProp(ex); + + if (stack) { + return stack; + } + } catch (e) { + if (TraceKit.debug) { + throw e; + } + } + + try { + stack = computeStackTraceByWalkingCallerChain(ex, depth + 1); + + if (stack) { + return stack; + } + } catch (e) { + if (TraceKit.debug) { + throw e; + } + } + + return { + name: ex.name, + message: ex.message, + url: getLocationHref() + }; + } + + computeStackTrace.augmentStackTraceWithInitialElement = augmentStackTraceWithInitialElement; + computeStackTrace.computeStackTraceFromStackProp = computeStackTraceFromStackProp; + return computeStackTrace; +}(); + +var tracekit = TraceKit; + +var stringify_1 = createCommonjsModule(function (module, exports) { + /* + json-stringify-safe + Like JSON.stringify, but doesn't throw on circular references. + + Originally forked from https://github.com/isaacs/json-stringify-safe + version 5.0.1 on 3/8/2017 and modified to handle Errors serialization + and IE8 compatibility. Tests for this are in test/vendor. + + ISC license: https://github.com/isaacs/json-stringify-safe/blob/master/LICENSE + */ + exports = module.exports = stringify; + exports.getSerialize = serializer; + + function indexOf(haystack, needle) { + for (var i = 0; i < haystack.length; ++i) { + if (haystack[i] === needle) return i; + } + + return -1; + } + + function stringify(obj, replacer, spaces, cycleReplacer) { + return JSON.stringify(obj, serializer(replacer, cycleReplacer), spaces); + } // https://github.com/ftlabs/js-abbreviate/blob/fa709e5f139e7770a71827b1893f22418097fbda/index.js#L95-L106 + + + function stringifyError(value) { + var err = { + // These properties are implemented as magical getters and don't show up in for in + stack: value.stack, + message: value.message, + name: value.name + }; + + for (var i in value) { + if (Object.prototype.hasOwnProperty.call(value, i)) { + err[i] = value[i]; + } + } + + return err; + } + + function serializer(replacer, cycleReplacer) { + var stack = []; + var keys = []; + + if (cycleReplacer == null) { + cycleReplacer = function cycleReplacer(key, value) { + if (stack[0] === value) { + return '[Circular ~]'; + } + + return '[Circular ~.' + keys.slice(0, indexOf(stack, value)).join('.') + ']'; + }; + } + + return function (key, value) { + if (stack.length > 0) { + var thisPos = indexOf(stack, this); + ~thisPos ? stack.splice(thisPos + 1) : stack.push(this); + ~thisPos ? keys.splice(thisPos, Infinity, key) : keys.push(key); + + if (~indexOf(stack, value)) { + value = cycleReplacer.call(this, key, value); + } + } else { + stack.push(value); + } + + return replacer == null ? value instanceof Error ? stringifyError(value) : value : replacer.call(this, key, value); + }; + } +}); +var stringify_2 = stringify_1.getSerialize; + +function RavenConfigError(message) { + this.name = 'RavenConfigError'; + this.message = message; +} + +RavenConfigError.prototype = new Error(); +RavenConfigError.prototype.constructor = RavenConfigError; +var configError = RavenConfigError; + +var wrapMethod = function wrapMethod(console, level, callback) { + var originalConsoleLevel = console[level]; + var originalConsole = console; + + if (!(level in console)) { + return; + } + + var sentryLevel = level === 'warn' ? 'warning' : level; + + console[level] = function () { + var args = [].slice.call(arguments); + var msg = utils.safeJoin(args, ' '); + var data = { + level: sentryLevel, + logger: 'console', + extra: { + arguments: args + } + }; + + if (level === 'assert') { + if (args[0] === false) { + // Default browsers message + msg = 'Assertion failed: ' + (utils.safeJoin(args.slice(1), ' ') || 'console.assert'); + data.extra.arguments = args.slice(1); + callback && callback(msg, data); + } + } else { + callback && callback(msg, data); + } // this fails for some browsers. :( + + + if (originalConsoleLevel) { + // IE9 doesn't allow calling apply on console functions directly + // See: https://stackoverflow.com/questions/5472938/does-ie9-support-console-log-and-is-it-a-real-function#answer-5473193 + Function.prototype.apply.call(originalConsoleLevel, originalConsole, args); + } + }; +}; + +var console$1 = { + wrapMethod: wrapMethod +}; + +/*global XDomainRequest:false */ + +var isError = utils.isError; +var isObject = utils.isObject; +var isErrorEvent = utils.isErrorEvent; +var isUndefined = utils.isUndefined; +var isFunction = utils.isFunction; +var isString = utils.isString; +var isArray = utils.isArray; +var isEmptyObject = utils.isEmptyObject; +var each = utils.each; +var objectMerge = utils.objectMerge; +var truncate = utils.truncate; +var objectFrozen = utils.objectFrozen; +var hasKey = utils.hasKey; +var joinRegExp = utils.joinRegExp; +var urlencode = utils.urlencode; +var uuid4 = utils.uuid4; +var htmlTreeAsString = utils.htmlTreeAsString; +var isSameException = utils.isSameException; +var isSameStacktrace = utils.isSameStacktrace; +var parseUrl = utils.parseUrl; +var fill = utils.fill; +var supportsFetch = utils.supportsFetch; +var wrapConsoleMethod = console$1.wrapMethod; +var dsnKeys = 'source protocol user pass host port path'.split(' '); +var dsnPattern = /^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/; + +function now() { + return +new Date(); +} // This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) + + +var _window$1 = typeof window !== 'undefined' ? window : typeof commonjsGlobal !== 'undefined' ? commonjsGlobal : typeof self !== 'undefined' ? self : {}; + +var _document = _window$1.document; +var _navigator = _window$1.navigator; + +function keepOriginalCallback(original, callback) { + return isFunction(callback) ? function (data) { + return callback(data, original); + } : callback; +} // First, check for JSON support +// If there is no JSON, we no-op the core features of Raven +// since JSON is required to encode the payload + + +function Raven$1() { + this._hasJSON = !!(_typeof(JSON) === 'object' && JSON.stringify); // Raven can run in contexts where there's no document (react-native) + + this._hasDocument = !isUndefined(_document); + this._hasNavigator = !isUndefined(_navigator); + this._lastCapturedException = null; + this._lastData = null; + this._lastEventId = null; + this._globalServer = null; + this._globalKey = null; + this._globalProject = null; + this._globalContext = {}; + this._globalOptions = { + // SENTRY_RELEASE can be injected by https://github.com/getsentry/sentry-webpack-plugin + release: _window$1.SENTRY_RELEASE && _window$1.SENTRY_RELEASE.id, + logger: 'javascript', + ignoreErrors: [], + ignoreUrls: [], + whitelistUrls: [], + includePaths: [], + headers: null, + collectWindowErrors: true, + maxMessageLength: 0, + // By default, truncates URL values to 250 chars + maxUrlLength: 250, + stackTraceLimit: 50, + autoBreadcrumbs: true, + instrument: true, + sampleRate: 1 + }; + this._fetchDefaults = { + method: 'POST', + keepalive: true, + referrerPolicy: 'origin' + }; + this._ignoreOnError = 0; + this._isRavenInstalled = false; + this._originalErrorStackTraceLimit = Error.stackTraceLimit; // capture references to window.console *and* all its methods first + // before the console plugin has a chance to monkey patch + + this._originalConsole = _window$1.console || {}; + this._originalConsoleMethods = {}; + this._plugins = []; + this._startTime = now(); + this._wrappedBuiltIns = []; + this._breadcrumbs = []; + this._lastCapturedEvent = null; + this._keypressTimeout; + this._location = _window$1.location; + this._lastHref = this._location && this._location.href; + + this._resetBackoff(); // eslint-disable-next-line guard-for-in + + + for (var method in this._originalConsole) { + this._originalConsoleMethods[method] = this._originalConsole[method]; + } +} +/* + * The core Raven singleton + * + * @this {Raven} + */ + + +Raven$1.prototype = { + // Hardcode version string so that raven source can be loaded directly via + // webpack (using a build step causes webpack #1617). Grunt verifies that + // this value matches package.json during build. + // See: https://github.com/getsentry/raven-js/issues/465 + VERSION: '3.22.2', + debug: false, + TraceKit: tracekit, + // alias to TraceKit + + /* + * Configure Raven with a DSN and extra options + * + * @param {string} dsn The public Sentry DSN + * @param {object} options Set of global options [optional] + * @return {Raven} + */ + config: function config(dsn, options) { + var self = this; + + if (self._globalServer) { + this._logDebug('error', 'Error: Raven has already been configured'); + + return self; + } + + if (!dsn) return self; + var globalOptions = self._globalOptions; // merge in options + + if (options) { + each(options, function (key, value) { + // tags and extra are special and need to be put into context + if (key === 'tags' || key === 'extra' || key === 'user') { + self._globalContext[key] = value; + } else { + globalOptions[key] = value; + } + }); + } + + self.setDSN(dsn); // "Script error." is hard coded into browsers for errors that it can't read. + // this is the result of a script being pulled in from an external domain and CORS. + + globalOptions.ignoreErrors.push(/^Script error\.?$/); + globalOptions.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/); // join regexp rules into one big rule + + globalOptions.ignoreErrors = joinRegExp(globalOptions.ignoreErrors); + globalOptions.ignoreUrls = globalOptions.ignoreUrls.length ? joinRegExp(globalOptions.ignoreUrls) : false; + globalOptions.whitelistUrls = globalOptions.whitelistUrls.length ? joinRegExp(globalOptions.whitelistUrls) : false; + globalOptions.includePaths = joinRegExp(globalOptions.includePaths); + globalOptions.maxBreadcrumbs = Math.max(0, Math.min(globalOptions.maxBreadcrumbs || 100, 100)); // default and hard limit is 100 + + var autoBreadcrumbDefaults = { + xhr: true, + console: true, + dom: true, + location: true, + sentry: true + }; + var autoBreadcrumbs = globalOptions.autoBreadcrumbs; + + if ({}.toString.call(autoBreadcrumbs) === '[object Object]') { + autoBreadcrumbs = objectMerge(autoBreadcrumbDefaults, autoBreadcrumbs); + } else if (autoBreadcrumbs !== false) { + autoBreadcrumbs = autoBreadcrumbDefaults; + } + + globalOptions.autoBreadcrumbs = autoBreadcrumbs; + var instrumentDefaults = { + tryCatch: true + }; + var instrument = globalOptions.instrument; + + if ({}.toString.call(instrument) === '[object Object]') { + instrument = objectMerge(instrumentDefaults, instrument); + } else if (instrument !== false) { + instrument = instrumentDefaults; + } + + globalOptions.instrument = instrument; + tracekit.collectWindowErrors = !!globalOptions.collectWindowErrors; // return for chaining + + return self; + }, + + /* + * Installs a global window.onerror error handler + * to capture and report uncaught exceptions. + * At this point, install() is required to be called due + * to the way TraceKit is set up. + * + * @return {Raven} + */ + install: function install() { + var self = this; + + if (self.isSetup() && !self._isRavenInstalled) { + tracekit.report.subscribe(function () { + self._handleOnErrorStackInfo.apply(self, arguments); + }); + + self._patchFunctionToString(); + + if (self._globalOptions.instrument && self._globalOptions.instrument.tryCatch) { + self._instrumentTryCatch(); + } + + if (self._globalOptions.autoBreadcrumbs) self._instrumentBreadcrumbs(); // Install all of the plugins + + self._drainPlugins(); + + self._isRavenInstalled = true; + } + + Error.stackTraceLimit = self._globalOptions.stackTraceLimit; + return this; + }, + + /* + * Set the DSN (can be called multiple time unlike config) + * + * @param {string} dsn The public Sentry DSN + */ + setDSN: function setDSN(dsn) { + var self = this, + uri = self._parseDSN(dsn), + lastSlash = uri.path.lastIndexOf('/'), + path = uri.path.substr(1, lastSlash); + + self._dsn = dsn; + self._globalKey = uri.user; + self._globalSecret = uri.pass && uri.pass.substr(1); + self._globalProject = uri.path.substr(lastSlash + 1); + self._globalServer = self._getGlobalServer(uri); + self._globalEndpoint = self._globalServer + '/' + path + 'api/' + self._globalProject + '/store/'; // Reset backoff state since we may be pointing at a + // new project/server + + this._resetBackoff(); + }, + + /* + * Wrap code within a context so Raven can capture errors + * reliably across domains that is executed immediately. + * + * @param {object} options A specific set of options for this context [optional] + * @param {function} func The callback to be immediately executed within the context + * @param {array} args An array of arguments to be called with the callback [optional] + */ + context: function context(options, func, args) { + if (isFunction(options)) { + args = func || []; + func = options; + options = undefined; + } + + return this.wrap(options, func).apply(this, args); + }, + + /* + * Wrap code within a context and returns back a new function to be executed + * + * @param {object} options A specific set of options for this context [optional] + * @param {function} func The function to be wrapped in a new context + * @param {function} func A function to call before the try/catch wrapper [optional, private] + * @return {function} The newly wrapped functions with a context + */ + wrap: function wrap(options, func, _before) { + var self = this; // 1 argument has been passed, and it's not a function + // so just return it + + if (isUndefined(func) && !isFunction(options)) { + return options; + } // options is optional + + + if (isFunction(options)) { + func = options; + options = undefined; + } // At this point, we've passed along 2 arguments, and the second one + // is not a function either, so we'll just return the second argument. + + + if (!isFunction(func)) { + return func; + } // We don't wanna wrap it twice! + + + try { + if (func.__raven__) { + return func; + } // If this has already been wrapped in the past, return that + + + if (func.__raven_wrapper__) { + return func.__raven_wrapper__; + } + } catch (e) { + // Just accessing custom props in some Selenium environments + // can cause a "Permission denied" exception (see raven-js#495). + // Bail on wrapping and return the function as-is (defers to window.onerror). + return func; + } + + function wrapped() { + var args = [], + i = arguments.length, + deep = !options || options && options.deep !== false; + + if (_before && isFunction(_before)) { + _before.apply(this, arguments); + } // Recursively wrap all of a function's arguments that are + // functions themselves. + + + while (i--) { + args[i] = deep ? self.wrap(options, arguments[i]) : arguments[i]; + } + + try { + // Attempt to invoke user-land function + // NOTE: If you are a Sentry user, and you are seeing this stack frame, it + // means Raven caught an error invoking your application code. This is + // expected behavior and NOT indicative of a bug with Raven.js. + return func.apply(this, args); + } catch (e) { + self._ignoreNextOnError(); + + self.captureException(e, options); + throw e; + } + } // copy over properties of the old function + + + for (var property in func) { + if (hasKey(func, property)) { + wrapped[property] = func[property]; + } + } + + wrapped.prototype = func.prototype; + func.__raven_wrapper__ = wrapped; // Signal that this function has been wrapped/filled already + // for both debugging and to prevent it to being wrapped/filled twice + + wrapped.__raven__ = true; + wrapped.__orig__ = func; + return wrapped; + }, + + /* + * Uninstalls the global error handler. + * + * @return {Raven} + */ + uninstall: function uninstall() { + tracekit.report.uninstall(); + + this._unpatchFunctionToString(); + + this._restoreBuiltIns(); + + this._restoreConsole(); + + Error.stackTraceLimit = this._originalErrorStackTraceLimit; + this._isRavenInstalled = false; + return this; + }, + + /* + * Manually capture an exception and send it over to Sentry + * + * @param {error} ex An exception to be logged + * @param {object} options A specific set of options for this error [optional] + * @return {Raven} + */ + captureException: function captureException(ex, options) { + options = objectMerge({ + trimHeadFrames: 0 + }, options ? options : {}); // Cases for sending ex as a message, rather than an exception + + var isNotError = !isError(ex); + var isNotErrorEvent = !isErrorEvent(ex); + var isErrorEventWithoutError = isErrorEvent(ex) && !ex.error; + + if (isNotError && isNotErrorEvent || isErrorEventWithoutError) { + return this.captureMessage(ex, objectMerge(options, { + stacktrace: true, + // if we fall back to captureMessage, default to attempting a new trace + trimHeadFrames: options.trimHeadFrames + 1 + })); + } // Get actual Error from ErrorEvent + + + if (isErrorEvent(ex)) ex = ex.error; // Store the raw exception object for potential debugging and introspection + + this._lastCapturedException = ex; // TraceKit.report will re-raise any exception passed to it, + // which means you have to wrap it in try/catch. Instead, we + // can wrap it here and only re-raise if TraceKit.report + // raises an exception different from the one we asked to + // report on. + + try { + var stack = tracekit.computeStackTrace(ex); + + this._handleStackInfo(stack, options); + } catch (ex1) { + if (ex !== ex1) { + throw ex1; + } + } + + return this; + }, + + /* + * Manually send a message to Sentry + * + * @param {string} msg A plain message to be captured in Sentry + * @param {object} options A specific set of options for this message [optional] + * @return {Raven} + */ + captureMessage: function captureMessage(msg, options) { + // config() automagically converts ignoreErrors from a list to a RegExp so we need to test for an + // early call; we'll error on the side of logging anything called before configuration since it's + // probably something you should see: + if (!!this._globalOptions.ignoreErrors.test && this._globalOptions.ignoreErrors.test(msg)) { + return; + } + + options = options || {}; + var data = objectMerge({ + message: msg + '' // Make sure it's actually a string + + }, options); + var ex; // Generate a "synthetic" stack trace from this point. + // NOTE: If you are a Sentry user, and you are seeing this stack frame, it is NOT indicative + // of a bug with Raven.js. Sentry generates synthetic traces either by configuration, + // or if it catches a thrown object without a "stack" property. + + try { + throw new Error(msg); + } catch (ex1) { + ex = ex1; + } // null exception name so `Error` isn't prefixed to msg + + + ex.name = null; + var stack = tracekit.computeStackTrace(ex); // stack[0] is `throw new Error(msg)` call itself, we are interested in the frame that was just before that, stack[1] + + var initialCall = isArray(stack.stack) && stack.stack[1]; + var fileurl = initialCall && initialCall.url || ''; + + if (!!this._globalOptions.ignoreUrls.test && this._globalOptions.ignoreUrls.test(fileurl)) { + return; + } + + if (!!this._globalOptions.whitelistUrls.test && !this._globalOptions.whitelistUrls.test(fileurl)) { + return; + } + + if (this._globalOptions.stacktrace || options && options.stacktrace) { + options = objectMerge({ + // fingerprint on msg, not stack trace (legacy behavior, could be + // revisited) + fingerprint: msg, + // since we know this is a synthetic trace, the top N-most frames + // MUST be from Raven.js, so mark them as in_app later by setting + // trimHeadFrames + trimHeadFrames: (options.trimHeadFrames || 0) + 1 + }, options); + + var frames = this._prepareFrames(stack, options); + + data.stacktrace = { + // Sentry expects frames oldest to newest + frames: frames.reverse() + }; + } // Fire away! + + + this._send(data); + + return this; + }, + captureBreadcrumb: function captureBreadcrumb(obj) { + var crumb = objectMerge({ + timestamp: now() / 1000 + }, obj); + + if (isFunction(this._globalOptions.breadcrumbCallback)) { + var result = this._globalOptions.breadcrumbCallback(crumb); + + if (isObject(result) && !isEmptyObject(result)) { + crumb = result; + } else if (result === false) { + return this; + } + } + + this._breadcrumbs.push(crumb); + + if (this._breadcrumbs.length > this._globalOptions.maxBreadcrumbs) { + this._breadcrumbs.shift(); + } + + return this; + }, + addPlugin: function addPlugin(plugin + /*arg1, arg2, ... argN*/ + ) { + var pluginArgs = [].slice.call(arguments, 1); + + this._plugins.push([plugin, pluginArgs]); + + if (this._isRavenInstalled) { + this._drainPlugins(); + } + + return this; + }, + + /* + * Set/clear a user to be sent along with the payload. + * + * @param {object} user An object representing user data [optional] + * @return {Raven} + */ + setUserContext: function setUserContext(user) { + // Intentionally do not merge here since that's an unexpected behavior. + this._globalContext.user = user; + return this; + }, + + /* + * Merge extra attributes to be sent along with the payload. + * + * @param {object} extra An object representing extra data [optional] + * @return {Raven} + */ + setExtraContext: function setExtraContext(extra) { + this._mergeContext('extra', extra); + + return this; + }, + + /* + * Merge tags to be sent along with the payload. + * + * @param {object} tags An object representing tags [optional] + * @return {Raven} + */ + setTagsContext: function setTagsContext(tags) { + this._mergeContext('tags', tags); + + return this; + }, + + /* + * Clear all of the context. + * + * @return {Raven} + */ + clearContext: function clearContext() { + this._globalContext = {}; + return this; + }, + + /* + * Get a copy of the current context. This cannot be mutated. + * + * @return {object} copy of context + */ + getContext: function getContext() { + // lol javascript + return JSON.parse(stringify_1(this._globalContext)); + }, + + /* + * Set environment of application + * + * @param {string} environment Typically something like 'production'. + * @return {Raven} + */ + setEnvironment: function setEnvironment(environment) { + this._globalOptions.environment = environment; + return this; + }, + + /* + * Set release version of application + * + * @param {string} release Typically something like a git SHA to identify version + * @return {Raven} + */ + setRelease: function setRelease(release) { + this._globalOptions.release = release; + return this; + }, + + /* + * Set the dataCallback option + * + * @param {function} callback The callback to run which allows the + * data blob to be mutated before sending + * @return {Raven} + */ + setDataCallback: function setDataCallback(callback) { + var original = this._globalOptions.dataCallback; + this._globalOptions.dataCallback = keepOriginalCallback(original, callback); + return this; + }, + + /* + * Set the breadcrumbCallback option + * + * @param {function} callback The callback to run which allows filtering + * or mutating breadcrumbs + * @return {Raven} + */ + setBreadcrumbCallback: function setBreadcrumbCallback(callback) { + var original = this._globalOptions.breadcrumbCallback; + this._globalOptions.breadcrumbCallback = keepOriginalCallback(original, callback); + return this; + }, + + /* + * Set the shouldSendCallback option + * + * @param {function} callback The callback to run which allows + * introspecting the blob before sending + * @return {Raven} + */ + setShouldSendCallback: function setShouldSendCallback(callback) { + var original = this._globalOptions.shouldSendCallback; + this._globalOptions.shouldSendCallback = keepOriginalCallback(original, callback); + return this; + }, + + /** + * Override the default HTTP transport mechanism that transmits data + * to the Sentry server. + * + * @param {function} transport Function invoked instead of the default + * `makeRequest` handler. + * + * @return {Raven} + */ + setTransport: function setTransport(transport) { + this._globalOptions.transport = transport; + return this; + }, + + /* + * Get the latest raw exception that was captured by Raven. + * + * @return {error} + */ + lastException: function lastException() { + return this._lastCapturedException; + }, + + /* + * Get the last event id + * + * @return {string} + */ + lastEventId: function lastEventId() { + return this._lastEventId; + }, + + /* + * Determine if Raven is setup and ready to go. + * + * @return {boolean} + */ + isSetup: function isSetup() { + if (!this._hasJSON) return false; // needs JSON support + + if (!this._globalServer) { + if (!this.ravenNotConfiguredError) { + this.ravenNotConfiguredError = true; + + this._logDebug('error', 'Error: Raven has not been configured.'); + } + + return false; + } + + return true; + }, + afterLoad: function afterLoad() { + // TODO: remove window dependence? + // Attempt to initialize Raven on load + var RavenConfig = _window$1.RavenConfig; + + if (RavenConfig) { + this.config(RavenConfig.dsn, RavenConfig.config).install(); + } + }, + showReportDialog: function showReportDialog(options) { + if (!_document // doesn't work without a document (React native) + ) return; + options = options || {}; + var lastEventId = options.eventId || this.lastEventId(); + + if (!lastEventId) { + throw new configError('Missing eventId'); + } + + var dsn = options.dsn || this._dsn; + + if (!dsn) { + throw new configError('Missing DSN'); + } + + var encode = encodeURIComponent; + var qs = ''; + qs += '?eventId=' + encode(lastEventId); + qs += '&dsn=' + encode(dsn); + var user = options.user || this._globalContext.user; + + if (user) { + if (user.name) qs += '&name=' + encode(user.name); + if (user.email) qs += '&email=' + encode(user.email); + } + + var globalServer = this._getGlobalServer(this._parseDSN(dsn)); + + var script = _document.createElement('script'); + + script.async = true; + script.src = globalServer + '/api/embed/error-page/' + qs; + + (_document.head || _document.body).appendChild(script); + }, + + /**** Private functions ****/ + _ignoreNextOnError: function _ignoreNextOnError() { + var self = this; + this._ignoreOnError += 1; + setTimeout(function () { + // onerror should trigger before setTimeout + self._ignoreOnError -= 1; + }); + }, + _triggerEvent: function _triggerEvent(eventType, options) { + // NOTE: `event` is a native browser thing, so let's avoid conflicting wiht it + var evt, key; + if (!this._hasDocument) return; + options = options || {}; + eventType = 'raven' + eventType.substr(0, 1).toUpperCase() + eventType.substr(1); + + if (_document.createEvent) { + evt = _document.createEvent('HTMLEvents'); + evt.initEvent(eventType, true, true); + } else { + evt = _document.createEventObject(); + evt.eventType = eventType; + } + + for (key in options) { + if (hasKey(options, key)) { + evt[key] = options[key]; + } + } + + if (_document.createEvent) { + // IE9 if standards + _document.dispatchEvent(evt); + } else { + // IE8 regardless of Quirks or Standards + // IE9 if quirks + try { + _document.fireEvent('on' + evt.eventType.toLowerCase(), evt); + } catch (e) {// Do nothing + } + } + }, + + /** + * Wraps addEventListener to capture UI breadcrumbs + * @param evtName the event name (e.g. "click") + * @returns {Function} + * @private + */ + _breadcrumbEventHandler: function _breadcrumbEventHandler(evtName) { + var self = this; + return function (evt) { + // reset keypress timeout; e.g. triggering a 'click' after + // a 'keypress' will reset the keypress debounce so that a new + // set of keypresses can be recorded + self._keypressTimeout = null; // It's possible this handler might trigger multiple times for the same + // event (e.g. event propagation through node ancestors). Ignore if we've + // already captured the event. + + if (self._lastCapturedEvent === evt) return; + self._lastCapturedEvent = evt; // try/catch both: + // - accessing evt.target (see getsentry/raven-js#838, #768) + // - `htmlTreeAsString` because it's complex, and just accessing the DOM incorrectly + // can throw an exception in some circumstances. + + var target; + + try { + target = htmlTreeAsString(evt.target); + } catch (e) { + target = ''; + } + + self.captureBreadcrumb({ + category: 'ui.' + evtName, + // e.g. ui.click, ui.input + message: target + }); + }; + }, + + /** + * Wraps addEventListener to capture keypress UI events + * @returns {Function} + * @private + */ + _keypressEventHandler: function _keypressEventHandler() { + var self = this, + debounceDuration = 1000; // milliseconds + // TODO: if somehow user switches keypress target before + // debounce timeout is triggered, we will only capture + // a single breadcrumb from the FIRST target (acceptable?) + + return function (evt) { + var target; + + try { + target = evt.target; + } catch (e) { + // just accessing event properties can throw an exception in some rare circumstances + // see: https://github.com/getsentry/raven-js/issues/838 + return; + } + + var tagName = target && target.tagName; // only consider keypress events on actual input elements + // this will disregard keypresses targeting body (e.g. tabbing + // through elements, hotkeys, etc) + + if (!tagName || tagName !== 'INPUT' && tagName !== 'TEXTAREA' && !target.isContentEditable) return; // record first keypress in a series, but ignore subsequent + // keypresses until debounce clears + + var timeout = self._keypressTimeout; + + if (!timeout) { + self._breadcrumbEventHandler('input')(evt); + } + + clearTimeout(timeout); + self._keypressTimeout = setTimeout(function () { + self._keypressTimeout = null; + }, debounceDuration); + }; + }, + + /** + * Captures a breadcrumb of type "navigation", normalizing input URLs + * @param to the originating URL + * @param from the target URL + * @private + */ + _captureUrlChange: function _captureUrlChange(from, to) { + var parsedLoc = parseUrl(this._location.href); + var parsedTo = parseUrl(to); + var parsedFrom = parseUrl(from); // because onpopstate only tells you the "new" (to) value of location.href, and + // not the previous (from) value, we need to track the value of the current URL + // state ourselves + + this._lastHref = to; // Use only the path component of the URL if the URL matches the current + // document (almost all the time when using pushState) + + if (parsedLoc.protocol === parsedTo.protocol && parsedLoc.host === parsedTo.host) to = parsedTo.relative; + if (parsedLoc.protocol === parsedFrom.protocol && parsedLoc.host === parsedFrom.host) from = parsedFrom.relative; + this.captureBreadcrumb({ + category: 'navigation', + data: { + to: to, + from: from + } + }); + }, + _patchFunctionToString: function _patchFunctionToString() { + var self = this; + self._originalFunctionToString = Function.prototype.toString; // eslint-disable-next-line no-extend-native + + Function.prototype.toString = function () { + if (typeof this === 'function' && this.__raven__) { + return self._originalFunctionToString.apply(this.__orig__, arguments); + } + + return self._originalFunctionToString.apply(this, arguments); + }; + }, + _unpatchFunctionToString: function _unpatchFunctionToString() { + if (this._originalFunctionToString) { + // eslint-disable-next-line no-extend-native + Function.prototype.toString = this._originalFunctionToString; + } + }, + + /** + * Wrap timer functions and event targets to catch errors and provide + * better metadata. + */ + _instrumentTryCatch: function _instrumentTryCatch() { + var self = this; + var wrappedBuiltIns = self._wrappedBuiltIns; + + function wrapTimeFn(orig) { + return function (fn, t) { + // preserve arity + // Make a copy of the arguments to prevent deoptimization + // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments + var args = new Array(arguments.length); + + for (var i = 0; i < args.length; ++i) { + args[i] = arguments[i]; + } + + var originalCallback = args[0]; + + if (isFunction(originalCallback)) { + args[0] = self.wrap(originalCallback); + } // IE < 9 doesn't support .call/.apply on setInterval/setTimeout, but it + // also supports only two arguments and doesn't care what this is, so we + // can just call the original function directly. + + + if (orig.apply) { + return orig.apply(this, args); + } else { + return orig(args[0], args[1]); + } + }; + } + + var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; + + function wrapEventTarget(global) { + var proto = _window$1[global] && _window$1[global].prototype; + + if (proto && proto.hasOwnProperty && proto.hasOwnProperty('addEventListener')) { + fill(proto, 'addEventListener', function (orig) { + return function (evtName, fn, capture, secure) { + // preserve arity + try { + if (fn && fn.handleEvent) { + fn.handleEvent = self.wrap(fn.handleEvent); + } + } catch (err) {} // can sometimes get 'Permission denied to access property "handle Event' + // More breadcrumb DOM capture ... done here and not in `_instrumentBreadcrumbs` + // so that we don't have more than one wrapper function + + + var before, clickHandler, keypressHandler; + + if (autoBreadcrumbs && autoBreadcrumbs.dom && (global === 'EventTarget' || global === 'Node')) { + // NOTE: generating multiple handlers per addEventListener invocation, should + // revisit and verify we can just use one (almost certainly) + clickHandler = self._breadcrumbEventHandler('click'); + keypressHandler = self._keypressEventHandler(); + + before = function before(evt) { + // need to intercept every DOM event in `before` argument, in case that + // same wrapped method is re-used for different events (e.g. mousemove THEN click) + // see #724 + if (!evt) return; + var eventType; + + try { + eventType = evt.type; + } catch (e) { + // just accessing event properties can throw an exception in some rare circumstances + // see: https://github.com/getsentry/raven-js/issues/838 + return; + } + + if (eventType === 'click') return clickHandler(evt);else if (eventType === 'keypress') return keypressHandler(evt); + }; + } + + return orig.call(this, evtName, self.wrap(fn, undefined, before), capture, secure); + }; + }, wrappedBuiltIns); + fill(proto, 'removeEventListener', function (orig) { + return function (evt, fn, capture, secure) { + try { + fn = fn && (fn.__raven_wrapper__ ? fn.__raven_wrapper__ : fn); + } catch (e) {// ignore, accessing __raven_wrapper__ will throw in some Selenium environments + } + + return orig.call(this, evt, fn, capture, secure); + }; + }, wrappedBuiltIns); + } + } + + fill(_window$1, 'setTimeout', wrapTimeFn, wrappedBuiltIns); + fill(_window$1, 'setInterval', wrapTimeFn, wrappedBuiltIns); + + if (_window$1.requestAnimationFrame) { + fill(_window$1, 'requestAnimationFrame', function (orig) { + return function (cb) { + return orig(self.wrap(cb)); + }; + }, wrappedBuiltIns); + } // event targets borrowed from bugsnag-js: + // https://github.com/bugsnag/bugsnag-js/blob/master/src/bugsnag.js#L666 + + + var eventTargets = ['EventTarget', 'Window', 'Node', 'ApplicationCache', 'AudioTrackList', 'ChannelMergerNode', 'CryptoOperation', 'EventSource', 'FileReader', 'HTMLUnknownElement', 'IDBDatabase', 'IDBRequest', 'IDBTransaction', 'KeyOperation', 'MediaController', 'MessagePort', 'ModalWindow', 'Notification', 'SVGElementInstance', 'Screen', 'TextTrack', 'TextTrackCue', 'TextTrackList', 'WebSocket', 'WebSocketWorker', 'Worker', 'XMLHttpRequest', 'XMLHttpRequestEventTarget', 'XMLHttpRequestUpload']; + + for (var i = 0; i < eventTargets.length; i++) { + wrapEventTarget(eventTargets[i]); + } + }, + + /** + * Instrument browser built-ins w/ breadcrumb capturing + * - XMLHttpRequests + * - DOM interactions (click/typing) + * - window.location changes + * - console + * + * Can be disabled or individually configured via the `autoBreadcrumbs` config option + */ + _instrumentBreadcrumbs: function _instrumentBreadcrumbs() { + var self = this; + var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; + var wrappedBuiltIns = self._wrappedBuiltIns; + + function wrapProp(prop, xhr) { + if (prop in xhr && isFunction(xhr[prop])) { + fill(xhr, prop, function (orig) { + return self.wrap(orig); + }); // intentionally don't track filled methods on XHR instances + } + } + + if (autoBreadcrumbs.xhr && 'XMLHttpRequest' in _window$1) { + var xhrproto = XMLHttpRequest.prototype; + fill(xhrproto, 'open', function (origOpen) { + return function (method, url) { + // preserve arity + // if Sentry key appears in URL, don't capture + if (isString(url) && url.indexOf(self._globalKey) === -1) { + this.__raven_xhr = { + method: method, + url: url, + status_code: null + }; + } + + return origOpen.apply(this, arguments); + }; + }, wrappedBuiltIns); + fill(xhrproto, 'send', function (origSend) { + return function () { + // preserve arity + var xhr = this; + + function onreadystatechangeHandler() { + if (xhr.__raven_xhr && xhr.readyState === 4) { + try { + // touching statusCode in some platforms throws + // an exception + xhr.__raven_xhr.status_code = xhr.status; + } catch (e) { + /* do nothing */ + } + + self.captureBreadcrumb({ + type: 'http', + category: 'xhr', + data: xhr.__raven_xhr + }); + } + } + + var props = ['onload', 'onerror', 'onprogress']; + + for (var j = 0; j < props.length; j++) { + wrapProp(props[j], xhr); + } + + if ('onreadystatechange' in xhr && isFunction(xhr.onreadystatechange)) { + fill(xhr, 'onreadystatechange', function (orig) { + return self.wrap(orig, undefined, onreadystatechangeHandler); + } + /* intentionally don't track this instrumentation */ + ); + } else { + // if onreadystatechange wasn't actually set by the page on this xhr, we + // are free to set our own and capture the breadcrumb + xhr.onreadystatechange = onreadystatechangeHandler; + } + + return origSend.apply(this, arguments); + }; + }, wrappedBuiltIns); + } + + if (autoBreadcrumbs.xhr && supportsFetch()) { + fill(_window$1, 'fetch', function (origFetch) { + return function () { + // preserve arity + // Make a copy of the arguments to prevent deoptimization + // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments + var args = new Array(arguments.length); + + for (var i = 0; i < args.length; ++i) { + args[i] = arguments[i]; + } + + var fetchInput = args[0]; + var method = 'GET'; + var url; + + if (typeof fetchInput === 'string') { + url = fetchInput; + } else if ('Request' in _window$1 && fetchInput instanceof _window$1.Request) { + url = fetchInput.url; + + if (fetchInput.method) { + method = fetchInput.method; + } + } else { + url = '' + fetchInput; + } // if Sentry key appears in URL, don't capture, as it's our own request + + + if (url.indexOf(self._globalKey) !== -1) { + return origFetch.apply(this, args); + } + + if (args[1] && args[1].method) { + method = args[1].method; + } + + var fetchData = { + method: method, + url: url, + status_code: null + }; + return origFetch.apply(this, args).then(function (response) { + fetchData.status_code = response.status; + self.captureBreadcrumb({ + type: 'http', + category: 'fetch', + data: fetchData + }); + return response; + }); + }; + }, wrappedBuiltIns); + } // Capture breadcrumbs from any click that is unhandled / bubbled up all the way + // to the document. Do this before we instrument addEventListener. + + + if (autoBreadcrumbs.dom && this._hasDocument) { + if (_document.addEventListener) { + _document.addEventListener('click', self._breadcrumbEventHandler('click'), false); + + _document.addEventListener('keypress', self._keypressEventHandler(), false); + } else { + // IE8 Compatibility + _document.attachEvent('onclick', self._breadcrumbEventHandler('click')); + + _document.attachEvent('onkeypress', self._keypressEventHandler()); + } + } // record navigation (URL) changes + // NOTE: in Chrome App environment, touching history.pushState, *even inside + // a try/catch block*, will cause Chrome to output an error to console.error + // borrowed from: https://github.com/angular/angular.js/pull/13945/files + + + var chrome = _window$1.chrome; + var isChromePackagedApp = chrome && chrome.app && chrome.app.runtime; + var hasPushAndReplaceState = !isChromePackagedApp && _window$1.history && history.pushState && history.replaceState; + + if (autoBreadcrumbs.location && hasPushAndReplaceState) { + // TODO: remove onpopstate handler on uninstall() + var oldOnPopState = _window$1.onpopstate; + + _window$1.onpopstate = function () { + var currentHref = self._location.href; + + self._captureUrlChange(self._lastHref, currentHref); + + if (oldOnPopState) { + return oldOnPopState.apply(this, arguments); + } + }; + + var historyReplacementFunction = function historyReplacementFunction(origHistFunction) { + // note history.pushState.length is 0; intentionally not declaring + // params to preserve 0 arity + return function () + /* state, title, url */ + { + var url = arguments.length > 2 ? arguments[2] : undefined; // url argument is optional + + if (url) { + // coerce to string (this is what pushState does) + self._captureUrlChange(self._lastHref, url + ''); + } + + return origHistFunction.apply(this, arguments); + }; + }; + + fill(history, 'pushState', historyReplacementFunction, wrappedBuiltIns); + fill(history, 'replaceState', historyReplacementFunction, wrappedBuiltIns); + } + + if (autoBreadcrumbs.console && 'console' in _window$1 && console.log) { + // console + var consoleMethodCallback = function consoleMethodCallback(msg, data) { + self.captureBreadcrumb({ + message: msg, + level: data.level, + category: 'console' + }); + }; + + each(['debug', 'info', 'warn', 'error', 'log'], function (_, level) { + wrapConsoleMethod(console, level, consoleMethodCallback); + }); + } + }, + _restoreBuiltIns: function _restoreBuiltIns() { + // restore any wrapped builtins + var builtin; + + while (this._wrappedBuiltIns.length) { + builtin = this._wrappedBuiltIns.shift(); + var obj = builtin[0], + name = builtin[1], + orig = builtin[2]; + obj[name] = orig; + } + }, + _restoreConsole: function _restoreConsole() { + // eslint-disable-next-line guard-for-in + for (var method in this._originalConsoleMethods) { + this._originalConsole[method] = this._originalConsoleMethods[method]; + } + }, + _drainPlugins: function _drainPlugins() { + var self = this; // FIX ME TODO + + each(this._plugins, function (_, plugin) { + var installer = plugin[0]; + var args = plugin[1]; + installer.apply(self, [self].concat(args)); + }); + }, + _parseDSN: function _parseDSN(str) { + var m = dsnPattern.exec(str), + dsn = {}, + i = 7; + + try { + while (i--) { + dsn[dsnKeys[i]] = m[i] || ''; + } + } catch (e) { + throw new configError('Invalid DSN: ' + str); + } + + if (dsn.pass && !this._globalOptions.allowSecretKey) { + throw new configError('Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key'); + } + + return dsn; + }, + _getGlobalServer: function _getGlobalServer(uri) { + // assemble the endpoint from the uri pieces + var globalServer = '//' + uri.host + (uri.port ? ':' + uri.port : ''); + + if (uri.protocol) { + globalServer = uri.protocol + ':' + globalServer; + } + + return globalServer; + }, + _handleOnErrorStackInfo: function _handleOnErrorStackInfo() { + // if we are intentionally ignoring errors via onerror, bail out + if (!this._ignoreOnError) { + this._handleStackInfo.apply(this, arguments); + } + }, + _handleStackInfo: function _handleStackInfo(stackInfo, options) { + var frames = this._prepareFrames(stackInfo, options); + + this._triggerEvent('handle', { + stackInfo: stackInfo, + options: options + }); + + this._processException(stackInfo.name, stackInfo.message, stackInfo.url, stackInfo.lineno, frames, options); + }, + _prepareFrames: function _prepareFrames(stackInfo, options) { + var self = this; + var frames = []; + + if (stackInfo.stack && stackInfo.stack.length) { + each(stackInfo.stack, function (i, stack) { + var frame = self._normalizeFrame(stack, stackInfo.url); + + if (frame) { + frames.push(frame); + } + }); // e.g. frames captured via captureMessage throw + + if (options && options.trimHeadFrames) { + for (var j = 0; j < options.trimHeadFrames && j < frames.length; j++) { + frames[j].in_app = false; + } + } + } + + frames = frames.slice(0, this._globalOptions.stackTraceLimit); + return frames; + }, + _normalizeFrame: function _normalizeFrame(frame, stackInfoUrl) { + // normalize the frames data + var normalized = { + filename: frame.url, + lineno: frame.line, + colno: frame.column, + function: frame.func || '?' + }; // Case when we don't have any information about the error + // E.g. throwing a string or raw object, instead of an `Error` in Firefox + // Generating synthetic error doesn't add any value here + // + // We should probably somehow let a user know that they should fix their code + + if (!frame.url) { + normalized.filename = stackInfoUrl; // fallback to whole stacks url from onerror handler + } + + normalized.in_app = !( // determine if an exception came from outside of our app + // first we check the global includePaths list. + !!this._globalOptions.includePaths.test && !this._globalOptions.includePaths.test(normalized.filename) || // Now we check for fun, if the function name is Raven or TraceKit + /(Raven|TraceKit)\./.test(normalized['function']) || // finally, we do a last ditch effort and check for raven.min.js + /raven\.(min\.)?js$/.test(normalized.filename)); + return normalized; + }, + _processException: function _processException(type, message, fileurl, lineno, frames, options) { + var prefixedMessage = (type ? type + ': ' : '') + (message || ''); + + if (!!this._globalOptions.ignoreErrors.test && (this._globalOptions.ignoreErrors.test(message) || this._globalOptions.ignoreErrors.test(prefixedMessage))) { + return; + } + + var stacktrace; + + if (frames && frames.length) { + fileurl = frames[0].filename || fileurl; // Sentry expects frames oldest to newest + // and JS sends them as newest to oldest + + frames.reverse(); + stacktrace = { + frames: frames + }; + } else if (fileurl) { + stacktrace = { + frames: [{ + filename: fileurl, + lineno: lineno, + in_app: true + }] + }; + } + + if (!!this._globalOptions.ignoreUrls.test && this._globalOptions.ignoreUrls.test(fileurl)) { + return; + } + + if (!!this._globalOptions.whitelistUrls.test && !this._globalOptions.whitelistUrls.test(fileurl)) { + return; + } + + var data = objectMerge({ + // sentry.interfaces.Exception + exception: { + values: [{ + type: type, + value: message, + stacktrace: stacktrace + }] + }, + culprit: fileurl + }, options); // Fire away! + + this._send(data); + }, + _trimPacket: function _trimPacket(data) { + // For now, we only want to truncate the two different messages + // but this could/should be expanded to just trim everything + var max = this._globalOptions.maxMessageLength; + + if (data.message) { + data.message = truncate(data.message, max); + } + + if (data.exception) { + var exception = data.exception.values[0]; + exception.value = truncate(exception.value, max); + } + + var request = data.request; + + if (request) { + if (request.url) { + request.url = truncate(request.url, this._globalOptions.maxUrlLength); + } + + if (request.Referer) { + request.Referer = truncate(request.Referer, this._globalOptions.maxUrlLength); + } + } + + if (data.breadcrumbs && data.breadcrumbs.values) this._trimBreadcrumbs(data.breadcrumbs); + return data; + }, + + /** + * Truncate breadcrumb values (right now just URLs) + */ + _trimBreadcrumbs: function _trimBreadcrumbs(breadcrumbs) { + // known breadcrumb properties with urls + // TODO: also consider arbitrary prop values that start with (https?)?:// + var urlProps = ['to', 'from', 'url'], + urlProp, + crumb, + data; + + for (var i = 0; i < breadcrumbs.values.length; ++i) { + crumb = breadcrumbs.values[i]; + if (!crumb.hasOwnProperty('data') || !isObject(crumb.data) || objectFrozen(crumb.data)) continue; + data = objectMerge({}, crumb.data); + + for (var j = 0; j < urlProps.length; ++j) { + urlProp = urlProps[j]; + + if (data.hasOwnProperty(urlProp) && data[urlProp]) { + data[urlProp] = truncate(data[urlProp], this._globalOptions.maxUrlLength); + } + } + + breadcrumbs.values[i].data = data; + } + }, + _getHttpData: function _getHttpData() { + if (!this._hasNavigator && !this._hasDocument) return; + var httpData = {}; + + if (this._hasNavigator && _navigator.userAgent) { + httpData.headers = { + 'User-Agent': navigator.userAgent + }; + } // Check in `window` instead of `document`, as we may be in ServiceWorker environment + + + if (_window$1.location && _window$1.location.href) { + httpData.url = _window$1.location.href; + } + + if (this._hasDocument && _document.referrer) { + if (!httpData.headers) httpData.headers = {}; + httpData.headers.Referer = _document.referrer; + } + + return httpData; + }, + _resetBackoff: function _resetBackoff() { + this._backoffDuration = 0; + this._backoffStart = null; + }, + _shouldBackoff: function _shouldBackoff() { + return this._backoffDuration && now() - this._backoffStart < this._backoffDuration; + }, + + /** + * Returns true if the in-process data payload matches the signature + * of the previously-sent data + * + * NOTE: This has to be done at this level because TraceKit can generate + * data from window.onerror WITHOUT an exception object (IE8, IE9, + * other old browsers). This can take the form of an "exception" + * data object with a single frame (derived from the onerror args). + */ + _isRepeatData: function _isRepeatData(current) { + var last = this._lastData; + if (!last || current.message !== last.message || // defined for captureMessage + current.culprit !== last.culprit // defined for captureException/onerror + ) return false; // Stacktrace interface (i.e. from captureMessage) + + if (current.stacktrace || last.stacktrace) { + return isSameStacktrace(current.stacktrace, last.stacktrace); + } else if (current.exception || last.exception) { + // Exception interface (i.e. from captureException/onerror) + return isSameException(current.exception, last.exception); + } + + return true; + }, + _setBackoffState: function _setBackoffState(request) { + // If we are already in a backoff state, don't change anything + if (this._shouldBackoff()) { + return; + } + + var status = request.status; // 400 - project_id doesn't exist or some other fatal + // 401 - invalid/revoked dsn + // 429 - too many requests + + if (!(status === 400 || status === 401 || status === 429)) return; + var retry; + + try { + // If Retry-After is not in Access-Control-Expose-Headers, most + // browsers will throw an exception trying to access it + if (supportsFetch()) { + retry = request.headers.get('Retry-After'); + } else { + retry = request.getResponseHeader('Retry-After'); + } // Retry-After is returned in seconds + + + retry = parseInt(retry, 10) * 1000; + } catch (e) { + /* eslint no-empty:0 */ + } + + this._backoffDuration = retry ? // If Sentry server returned a Retry-After value, use it + retry : // Otherwise, double the last backoff duration (starts at 1 sec) + this._backoffDuration * 2 || 1000; + this._backoffStart = now(); + }, + _send: function _send(data) { + var globalOptions = this._globalOptions; + + var baseData = { + project: this._globalProject, + logger: globalOptions.logger, + platform: 'javascript' + }, + httpData = this._getHttpData(); + + if (httpData) { + baseData.request = httpData; + } // HACK: delete `trimHeadFrames` to prevent from appearing in outbound payload + + + if (data.trimHeadFrames) delete data.trimHeadFrames; + data = objectMerge(baseData, data); // Merge in the tags and extra separately since objectMerge doesn't handle a deep merge + + data.tags = objectMerge(objectMerge({}, this._globalContext.tags), data.tags); + data.extra = objectMerge(objectMerge({}, this._globalContext.extra), data.extra); // Send along our own collected metadata with extra + + data.extra['session:duration'] = now() - this._startTime; + + if (this._breadcrumbs && this._breadcrumbs.length > 0) { + // intentionally make shallow copy so that additions + // to breadcrumbs aren't accidentally sent in this request + data.breadcrumbs = { + values: [].slice.call(this._breadcrumbs, 0) + }; + } + + if (this._globalContext.user) { + // sentry.interfaces.User + data.user = this._globalContext.user; + } // Include the environment if it's defined in globalOptions + + + if (globalOptions.environment) data.environment = globalOptions.environment; // Include the release if it's defined in globalOptions + + if (globalOptions.release) data.release = globalOptions.release; // Include server_name if it's defined in globalOptions + + if (globalOptions.serverName) data.server_name = globalOptions.serverName; // Cleanup empty properties before sending them to the server + + Object.keys(data).forEach(function (key) { + if (data[key] == null || data[key] === '' || isEmptyObject(data[key])) { + delete data[key]; + } + }); + + if (isFunction(globalOptions.dataCallback)) { + data = globalOptions.dataCallback(data) || data; + } // Why?????????? + + + if (!data || isEmptyObject(data)) { + return; + } // Check if the request should be filtered or not + + + if (isFunction(globalOptions.shouldSendCallback) && !globalOptions.shouldSendCallback(data)) { + return; + } // Backoff state: Sentry server previously responded w/ an error (e.g. 429 - too many requests), + // so drop requests until "cool-off" period has elapsed. + + + if (this._shouldBackoff()) { + this._logDebug('warn', 'Raven dropped error due to backoff: ', data); + + return; + } + + if (typeof globalOptions.sampleRate === 'number') { + if (Math.random() < globalOptions.sampleRate) { + this._sendProcessedPayload(data); + } + } else { + this._sendProcessedPayload(data); + } + }, + _getUuid: function _getUuid() { + return uuid4(); + }, + _sendProcessedPayload: function _sendProcessedPayload(data, callback) { + var self = this; + var globalOptions = this._globalOptions; + if (!this.isSetup()) return; // Try and clean up the packet before sending by truncating long values + + data = this._trimPacket(data); // ideally duplicate error testing should occur *before* dataCallback/shouldSendCallback, + // but this would require copying an un-truncated copy of the data packet, which can be + // arbitrarily deep (extra_data) -- could be worthwhile? will revisit + + if (!this._globalOptions.allowDuplicates && this._isRepeatData(data)) { + this._logDebug('warn', 'Raven dropped repeat event: ', data); + + return; + } // Send along an event_id if not explicitly passed. + // This event_id can be used to reference the error within Sentry itself. + // Set lastEventId after we know the error should actually be sent + + + this._lastEventId = data.event_id || (data.event_id = this._getUuid()); // Store outbound payload after trim + + this._lastData = data; + + this._logDebug('debug', 'Raven about to send:', data); + + var auth = { + sentry_version: '7', + sentry_client: 'raven-js/' + this.VERSION, + sentry_key: this._globalKey + }; + + if (this._globalSecret) { + auth.sentry_secret = this._globalSecret; + } + + var exception = data.exception && data.exception.values[0]; // only capture 'sentry' breadcrumb is autoBreadcrumbs is truthy + + if (this._globalOptions.autoBreadcrumbs && this._globalOptions.autoBreadcrumbs.sentry) { + this.captureBreadcrumb({ + category: 'sentry', + message: exception ? (exception.type ? exception.type + ': ' : '') + exception.value : data.message, + event_id: data.event_id, + level: data.level || 'error' // presume error unless specified + + }); + } + + var url = this._globalEndpoint; + + (globalOptions.transport || this._makeRequest).call(this, { + url: url, + auth: auth, + data: data, + options: globalOptions, + onSuccess: function success() { + self._resetBackoff(); + + self._triggerEvent('success', { + data: data, + src: url + }); + + callback && callback(); + }, + onError: function failure(error) { + self._logDebug('error', 'Raven transport failed to send: ', error); + + if (error.request) { + self._setBackoffState(error.request); + } + + self._triggerEvent('failure', { + data: data, + src: url + }); + + error = error || new Error('Raven send failed (no additional details provided)'); + callback && callback(error); + } + }); + }, + _makeRequest: function _makeRequest(opts) { + // Auth is intentionally sent as part of query string (NOT as custom HTTP header) to avoid preflight CORS requests + var url = opts.url + '?' + urlencode(opts.auth); + var evaluatedHeaders = null; + var evaluatedFetchParameters = {}; + + if (opts.options.headers) { + evaluatedHeaders = this._evaluateHash(opts.options.headers); + } + + if (opts.options.fetchParameters) { + evaluatedFetchParameters = this._evaluateHash(opts.options.fetchParameters); + } + + if (supportsFetch()) { + evaluatedFetchParameters.body = stringify_1(opts.data); + var defaultFetchOptions = objectMerge({}, this._fetchDefaults); + var fetchOptions = objectMerge(defaultFetchOptions, evaluatedFetchParameters); + + if (evaluatedHeaders) { + fetchOptions.headers = evaluatedHeaders; + } + + return _window$1.fetch(url, fetchOptions).then(function (response) { + if (response.ok) { + opts.onSuccess && opts.onSuccess(); + } else { + var error = new Error('Sentry error code: ' + response.status); // It's called request only to keep compatibility with XHR interface + // and not add more redundant checks in setBackoffState method + + error.request = response; + opts.onError && opts.onError(error); + } + })['catch'](function () { + opts.onError && opts.onError(new Error('Sentry error code: network unavailable')); + }); + } + + var request = _window$1.XMLHttpRequest && new _window$1.XMLHttpRequest(); + if (!request) return; // if browser doesn't support CORS (e.g. IE7), we are out of luck + + var hasCORS = 'withCredentials' in request || typeof XDomainRequest !== 'undefined'; + if (!hasCORS) return; + + if ('withCredentials' in request) { + request.onreadystatechange = function () { + if (request.readyState !== 4) { + return; + } else if (request.status === 200) { + opts.onSuccess && opts.onSuccess(); + } else if (opts.onError) { + var err = new Error('Sentry error code: ' + request.status); + err.request = request; + opts.onError(err); + } + }; + } else { + request = new XDomainRequest(); // xdomainrequest cannot go http -> https (or vice versa), + // so always use protocol relative + + url = url.replace(/^https?:/, ''); // onreadystatechange not supported by XDomainRequest + + if (opts.onSuccess) { + request.onload = opts.onSuccess; + } + + if (opts.onError) { + request.onerror = function () { + var err = new Error('Sentry error code: XDomainRequest'); + err.request = request; + opts.onError(err); + }; + } + } + + request.open('POST', url); + + if (evaluatedHeaders) { + each(evaluatedHeaders, function (key, value) { + request.setRequestHeader(key, value); + }); + } + + request.send(stringify_1(opts.data)); + }, + _evaluateHash: function _evaluateHash(hash) { + var evaluated = {}; + + for (var key in hash) { + if (hash.hasOwnProperty(key)) { + var value = hash[key]; + evaluated[key] = typeof value === 'function' ? value() : value; + } + } + + return evaluated; + }, + _logDebug: function _logDebug(level) { + if (this._originalConsoleMethods[level] && this.debug) { + // In IE<10 console methods do not have their own 'apply' method + Function.prototype.apply.call(this._originalConsoleMethods[level], this._originalConsole, [].slice.call(arguments, 1)); + } + }, + _mergeContext: function _mergeContext(key, context) { + if (isUndefined(context)) { + delete this._globalContext[key]; + } else { + this._globalContext[key] = objectMerge(this._globalContext[key] || {}, context); + } + } +}; // Deprecations + +Raven$1.prototype.setUser = Raven$1.prototype.setUserContext; +Raven$1.prototype.setReleaseContext = Raven$1.prototype.setRelease; +var raven = Raven$1; + +/** + * Enforces a single instance of the Raven client, and the + * main entry point for Raven. If you are a consumer of the + * Raven library, you SHOULD load this file (vs raven.js). + **/ +// This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) + +var _window = typeof window !== 'undefined' ? window : typeof commonjsGlobal !== 'undefined' ? commonjsGlobal : typeof self !== 'undefined' ? self : {}; + +var _Raven = _window.Raven; +var Raven = new raven(); +/* + * Allow multiple versions of Raven to be installed. + * Strip Raven from the global context and returns the instance. + * + * @return {Raven} + */ + +Raven.noConflict = function () { + _window.Raven = _Raven; + return Raven; +}; + +Raven.afterLoad(); +var singleton = Raven; + +/*global define*/ + +/** + * require.js plugin + * + * Automatically wrap define/require callbacks. (Experimental) + */ + +function requirePlugin(Raven) { + if (typeof undefined === 'function' && undefined.amd) { + window.define = Raven.wrap({ + deep: false + }, undefined); + window.require = Raven.wrap({ + deep: false + }, commonjsRequire); + } +} + +var require_1 = requirePlugin; + +/** + * Vue.js 2.0 plugin + * + */ +function formatComponentName(vm) { + if (vm.$root === vm) { + return 'root instance'; + } + + var name = vm._isVue ? vm.$options.name || vm.$options._componentTag : vm.name; + return (name ? 'component <' + name + '>' : 'anonymous component') + (vm._isVue && vm.$options.__file ? ' at ' + vm.$options.__file : ''); +} + +function vuePlugin(Raven, Vue) { + Vue = Vue || window.Vue; // quit if Vue isn't on the page + + if (!Vue || !Vue.config) return; + var _oldOnError = Vue.config.errorHandler; + + Vue.config.errorHandler = function VueErrorHandler(error, vm, info) { + var metaData = {}; // vm and lifecycleHook are not always available + + if (Object.prototype.toString.call(vm) === '[object Object]') { + metaData.componentName = formatComponentName(vm); + metaData.propsData = vm.$options.propsData; + } + + if (typeof info !== 'undefined') { + metaData.lifecycleHook = info; + } + + Raven.captureException(error, { + extra: metaData + }); + + if (typeof _oldOnError === 'function') { + _oldOnError.call(this, error, vm, info); + } + }; +} + +var vue = vuePlugin; + +/* This file was generated by './scripts/generate-plugin-combinations.js'! */ + +singleton.addPlugin(require_1).addPlugin(vue); +var require_vue = {}; + +return require_vue; + +}))); diff --git a/dist/require,vue/raven.min.js b/dist/require,vue/raven.min.js new file mode 100644 index 000000000000..e028c39f0d23 --- /dev/null +++ b/dist/require,vue/raven.min.js @@ -0,0 +1,3 @@ +/*! Raven.js 3.22.2 (1b6187b) | github.com/getsentry/raven-js */ +!function(a,b){"object"==typeof exports&&"undefined"!=typeof module?module.exports=b():"function"==typeof define&&define.amd?define(b):a.Raven=b()}(this,function(){"use strict";function a(a,b){return b={exports:{}},a(b,b.exports),b.exports}function b(a){return(b="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(a){return typeof a}:function(a){return a&&"function"==typeof Symbol&&a.constructor===Symbol&&a!==Symbol.prototype?"symbol":typeof a})(a)}function c(a){return"object"===b(a)&&null!==a}function d(a){switch({}.toString.call(a)){case"[object Error]":return!0;case"[object Exception]":return!0;case"[object DOMException]":return!0;default:return a instanceof Error}}function e(a){return l()&&"[object ErrorEvent]"==={}.toString.call(a)}function f(a){return void 0===a}function g(a){return"function"==typeof a}function h(a){return"[object Object]"===Object.prototype.toString.call(a)}function i(a){return"[object String]"===Object.prototype.toString.call(a)}function j(a){return"[object Array]"===Object.prototype.toString.call(a)}function k(a){if(!h(a))return!1;for(var b in a)if(a.hasOwnProperty(b))return!1;return!0}function l(){try{return new ErrorEvent(""),!0}catch(a){return!1}}function m(){if(!("fetch"in P))return!1;try{return new Headers,new Request(""),new Response,!0}catch(a){return!1}}function n(a){function b(b,c){var d=a(b)||b;return c?c(d)||d:d}return b}function o(a,b){var c,d;if(f(a.length))for(c in a)s(a,c)&&b.call(null,c,a[c]);else if(d=a.length)for(c=0;c ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function y(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&i(b))for(c=b.split(/\s+/),f=0;f":"anonymous component")+(a._isVue&&a.$options.__file?" at "+a.$options.__file:"")}function M(a,b){if(b=b||window.Vue,b&&b.config){var c=b.config.errorHandler;b.config.errorHandler=function(b,d,e){var f={};"[object Object]"===Object.prototype.toString.call(d)&&(f.componentName=L(d),f.propsData=d.$options.propsData),"undefined"!=typeof e&&(f.lifecycleHook=e),a.captureException(b,{extra:f}),"function"==typeof c&&c.call(this,b,d,e)}}}var N="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{},O=Object.setPrototypeOf||function(a,b){return a.B=b,a},P=("object"==typeof Reflect&&Reflect.construct||function(a,b,c){var d,e=[null];return e.push.apply(e,b),d=a.bind.apply(a,e),O(new d,c.prototype)},"undefined"!=typeof window?window:"undefined"!=typeof N?N:"undefined"!=typeof self?self:{}),Q={isObject:c,isError:d,isErrorEvent:e,isUndefined:f,isFunction:g,isPlainObject:h,isString:i,isArray:j,isEmptyObject:k,supportsErrorEvent:l,supportsFetch:m,wrappedCallback:n,each:o,objectMerge:p,truncate:r,objectFrozen:q,hasKey:s,joinRegExp:t,urlencode:u,uuid4:w,htmlTreeAsString:x,htmlElementAsString:y,isSameException:B,isSameStacktrace:C,parseUrl:v,fill:D,safeJoin:E},R={collectWindowErrors:!0,debug:!1},S="undefined"!=typeof window?window:"undefined"!=typeof N?N:"undefined"!=typeof self?self:{},T=[].slice,U="?",V=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;R.report=function(){function a(a){f(),l.push(a)}function b(a){for(var b=l.length-1;b>=0;--b)l[b]===a&&l.splice(b,1)}function c(){g(),l=[]}function d(a,b){var c=null;if(!b||R.collectWindowErrors){for(var d in l)if(l.hasOwnProperty(d))try{l[d].apply(null,[a].concat(T.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function e(a,b,c,e,f){var g=null,i=Q.isErrorEvent(f)?f.error:f,k=Q.isErrorEvent(a)?a.message:a;if(o)R.computeStackTrace.augmentStackTraceWithInitialElement(o,b,c,k),h();else if(i&&Q.isError(i))g=R.computeStackTrace(i),d(g,!0);else{var l,m={url:b,line:c,column:e},n=void 0;if("[object String]"==={}.toString.call(k)){var l=k.match(V);l&&(n=l[1],k=l[2])}m.func=U,g={name:n,message:k,url:F(),stack:[m]},d(g,!0)}return!!j&&j.apply(this,arguments)}function f(){k||(j=S.onerror,S.onerror=e,k=!0)}function g(){k&&(S.onerror=j,k=!1,j=void 0)}function h(){var a=o,b=m;m=null,o=null,n=null,d.apply(null,[a,!1].concat(b))}function i(a,b){var c=T.call(arguments,1);if(o){if(n===a)return;h()}var d=R.computeStackTrace(a);if(o=d,n=a,m=c,setTimeout(function(){n===a&&h()},d.incomplete?2e3:0),b!==!1)throw a}var j,k,l=[],m=null,n=null,o=null;return i.subscribe=a,i.unsubscribe=b,i.uninstall=c,i}(),R.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,d,e=/^\s*at (.*?) ?\(((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,f=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|\[native).*?|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,g=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,h=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,i=/\((\S*)(?::(\d+))(?::(\d+))\)/,j=a.stack.split("\n"),k=[],l=(/^(.*) is undefined$/.exec(a.message),0),m=j.length;l eval")>-1;o&&(b=h.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==l||c[5]||"undefined"==typeof a.columnNumber||(k[0].column=a.columnNumber+1),d={url:c[3],func:c[1]||U,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}!d.func&&d.line&&(d.func=U),k.push(d)}return k.length?{name:a.name,message:a.message,url:F(),stack:k}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=U),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,e){for(var f,g,h=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,i=[],j={},k=!1,l=c.caller;l&&!k;l=l.caller)if(l!==d&&l!==R.report){if(g={url:null,func:U,line:null,column:null},l.name?g.func=l.name:(f=h.exec(l.toString()))&&(g.func=f[1]),"undefined"==typeof g.func)try{g.func=f.input.substring(0,f.input.indexOf("{"))}catch(m){}j[""+l]?k=!0:j[""+l]=!0,i.push(g)}e&&i.splice(0,e);var n={name:a.name,message:a.message,url:F(),stack:i};return b(n,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),n}function d(b,d){var e=null;d=null==d?0:+d;try{if(e=a(b))return e}catch(f){if(R.debug)throw f}try{if(e=c(b,d+1))return e}catch(f){if(R.debug)throw f}return{name:b.name,message:b.message,url:F()}}return d.augmentStackTraceWithInitialElement=b,d.computeStackTraceFromStackProp=a,d}();var W=R,X=a(function(a,b){function c(a,b){for(var c=0;c0){var i=c(d,this);~i?d.splice(i+1):d.push(this),~i?f.splice(i,1/0,g):f.push(g),~c(d,h)&&(h=b.call(this,g,h))}else d.push(h);return null==a?h instanceof Error?e(h):h:a.call(this,g,h)}}b=a.exports=d,b.getSerialize=f});G.prototype=new Error,G.prototype.constructor=G;var Y=G,Z=function(a,b,c){var d=a[b],e=a;if(b in a){var f="warn"===b?"warning":b;a[b]=function(){var a=[].slice.call(arguments),g=Q.safeJoin(a," "),h={level:f,logger:"console",extra:{arguments:a}};"assert"===b?a[0]===!1&&(g="Assertion failed: "+(Q.safeJoin(a.slice(1)," ")||"console.assert"),h.extra.arguments=a.slice(1),c&&c(g,h)):c&&c(g,h),d&&Function.prototype.apply.call(d,e,a)}}},$={wrapMethod:Z},_=Q.isError,aa=Q.isObject,ba=Q.isErrorEvent,ca=Q.isUndefined,da=Q.isFunction,ea=Q.isString,fa=Q.isArray,ga=Q.isEmptyObject,ha=Q.each,ia=Q.objectMerge,ja=Q.truncate,ka=Q.objectFrozen,la=Q.hasKey,ma=Q.joinRegExp,na=Q.urlencode,oa=Q.uuid4,pa=Q.htmlTreeAsString,qa=Q.isSameException,ra=Q.isSameStacktrace,sa=Q.parseUrl,ta=Q.fill,ua=Q.supportsFetch,va=$.wrapMethod,wa="source protocol user pass host port path".split(" "),xa=/^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/,ya="undefined"!=typeof window?window:"undefined"!=typeof N?N:"undefined"!=typeof self?self:{},za=ya.document,Aa=ya.navigator;J.prototype={VERSION:"3.22.2",debug:!1,TraceKit:W,config:function(a,b){var c=this;if(c.i)return this.C("error","Error: Raven has already been configured"),c;if(!a)return c;var d=c.m;b&&ha(b,function(a,b){"tags"===a||"extra"===a||"user"===a?c.l[a]=b:d[a]=b}),c.setDSN(a),d.ignoreErrors.push(/^Script error\.?$/),d.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/),d.ignoreErrors=ma(d.ignoreErrors),d.ignoreUrls=!!d.ignoreUrls.length&&ma(d.ignoreUrls),d.whitelistUrls=!!d.whitelistUrls.length&&ma(d.whitelistUrls),d.includePaths=ma(d.includePaths),d.maxBreadcrumbs=Math.max(0,Math.min(d.maxBreadcrumbs||100,100));var e={xhr:!0,console:!0,dom:!0,location:!0,sentry:!0},f=d.autoBreadcrumbs;"[object Object]"==={}.toString.call(f)?f=ia(e,f):f!==!1&&(f=e),d.autoBreadcrumbs=f;var g={tryCatch:!0},h=d.instrument;return"[object Object]"==={}.toString.call(h)?h=ia(g,h):h!==!1&&(h=g),d.instrument=h,W.collectWindowErrors=!!d.collectWindowErrors,c},install:function(){var a=this;return a.isSetup()&&!a.p&&(W.report.subscribe(function(){a.D.apply(a,arguments)}),a.E(),a.m.instrument&&a.m.instrument.tryCatch&&a.F(),a.m.autoBreadcrumbs&&a.G(),a.H(),a.p=!0),Error.stackTraceLimit=a.m.stackTraceLimit,this},setDSN:function(a){var b=this,c=b.I(a),d=c.path.lastIndexOf("/"),e=c.path.substr(1,d);b.J=a,b.j=c.user,b.K=c.pass&&c.pass.substr(1),b.k=c.path.substr(d+1),b.i=b.L(c),b.M=b.i+"/"+e+"api/"+b.k+"/store/",this.A()},context:function(a,b,c){return da(a)&&(c=b||[],b=a,a=void 0),this.wrap(a,b).apply(this,c)},wrap:function(a,b,c){function d(){var d=[],f=arguments.length,g=!a||a&&a.deep!==!1;for(c&&da(c)&&c.apply(this,arguments);f--;)d[f]=g?e.wrap(a,arguments[f]):arguments[f];try{return b.apply(this,d)}catch(h){throw e.N(),e.captureException(h,a),h}}var e=this;if(ca(b)&&!da(a))return a;if(da(a)&&(b=a,a=void 0),!da(b))return b;try{if(b.a)return b;if(b.O)return b.O}catch(f){return b}for(var g in b)la(b,g)&&(d[g]=b[g]);return d.prototype=b.prototype,b.O=d,d.a=!0,d.b=b,d},uninstall:function(){return W.report.uninstall(),this.P(),this.Q(),this.R(),Error.stackTraceLimit=this.q,this.p=!1,this},captureException:function(a,b){b=ia({trimHeadFrames:0},b?b:{});var c=!_(a),d=!ba(a),e=ba(a)&&!a.error;if(c&&d||e)return this.captureMessage(a,ia(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}));ba(a)&&(a=a.error),this.f=a;try{var f=W.computeStackTrace(a);this.S(f,b)}catch(g){if(a!==g)throw g}return this},captureMessage:function(a,b){if(!this.m.ignoreErrors.test||!this.m.ignoreErrors.test(a)){b=b||{};var c,d=ia({message:a+""},b);try{throw new Error(a)}catch(e){c=e}c.name=null;var f=W.computeStackTrace(c),g=fa(f.stack)&&f.stack[1],h=g&&g.url||"";if((!this.m.ignoreUrls.test||!this.m.ignoreUrls.test(h))&&(!this.m.whitelistUrls.test||this.m.whitelistUrls.test(h))){if(this.m.stacktrace||b&&b.stacktrace){b=ia({fingerprint:a,trimHeadFrames:(b.trimHeadFrames||0)+1},b);var i=this.T(f,b);d.stacktrace={frames:i.reverse()}}return this.U(d),this}}},captureBreadcrumb:function(a){var b=ia({timestamp:H()/1e3},a);if(da(this.m.breadcrumbCallback)){var c=this.m.breadcrumbCallback(b);if(aa(c)&&!ga(c))b=c;else if(c===!1)return this}return this.w.push(b),this.w.length>this.m.maxBreadcrumbs&&this.w.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.t.push([a,b]),this.p&&this.H(),this},setUserContext:function(a){return this.l.user=a,this},setExtraContext:function(a){return this.V("extra",a),this},setTagsContext:function(a){return this.V("tags",a),this},clearContext:function(){return this.l={},this},getContext:function(){return JSON.parse(X(this.l))},setEnvironment:function(a){return this.m.environment=a,this},setRelease:function(a){return this.m.release=a,this},setDataCallback:function(a){var b=this.m.dataCallback;return this.m.dataCallback=I(b,a),this},setBreadcrumbCallback:function(a){var b=this.m.breadcrumbCallback;return this.m.breadcrumbCallback=I(b,a),this},setShouldSendCallback:function(a){var b=this.m.shouldSendCallback;return this.m.shouldSendCallback=I(b,a),this},setTransport:function(a){return this.m.transport=a,this},lastException:function(){return this.f},lastEventId:function(){return this.h},isSetup:function(){return!!this.c&&(!!this.i||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.C("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=ya.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(za){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new Y("Missing eventId");var c=a.dsn||this.J;if(!c)throw new Y("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.l.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.L(this.I(c)),h=za.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(za.head||za.body).appendChild(h)}},N:function(){var a=this;this.o+=1,setTimeout(function(){a.o-=1})},W:function(a,b){var c,d;if(this.d){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),za.createEvent?(c=za.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=za.createEventObject(),c.eventType=a);for(d in b)la(b,d)&&(c[d]=b[d]);if(za.createEvent)za.dispatchEvent(c);else try{za.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},X:function(a){var b=this;return function(c){if(b.Y=null,b.x!==c){b.x=c;var d;try{d=pa(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},Z:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.Y;g||a.X("input")(c),clearTimeout(g),a.Y=setTimeout(function(){a.Y=null},b)}}},$:function(a,b){var c=sa(this.y.href),d=sa(b),e=sa(a);this.z=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},E:function(){var a=this;a._=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.a?a._.apply(this.b,arguments):a._.apply(this,arguments)}},P:function(){this._&&(Function.prototype.toString=this._)},F:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.$(b.z,c+""),a.apply(this,arguments)}};ta(history,"pushState",j,d),ta(history,"replaceState",j,d)}if(c.console&&"console"in ya&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};ha(["debug","info","warn","error","log"],function(a,b){va(console,b,k)})}},Q:function(){for(var a;this.v.length;){a=this.v.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},R:function(){for(var a in this.s)this.r[a]=this.s[a]},H:function(){var a=this;ha(this.t,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},I:function(a){var b=xa.exec(a),c={},d=7;try{for(;d--;)c[wa[d]]=b[d]||""}catch(e){throw new Y("Invalid DSN: "+a)}if(c.pass&&!this.m.allowSecretKey)throw new Y("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},L:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},D:function(){this.o||this.S.apply(this,arguments)},S:function(a,b){var c=this.T(a,b);this.W("handle",{stackInfo:a,options:b}),this.ba(a.name,a.message,a.url,a.lineno,c,b)},T:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(ha(a.stack,function(b,e){var f=c.ca(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.w,0)}),this.l.user&&(a.user=this.l.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||ga(a[b]))&&delete a[b]}),da(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!ga(a)&&(!da(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.ia()?void this.C("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() href parsing trick because React Native and other +// environments where DOM might not be available + + +function parseUrl$1(url) { + if (typeof url !== 'string') return {}; + var match = url.match(/^(([^:\/?#]+):)?(\/\/([^\/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?$/); // coerce to undefined values to empty string so we don't get 'undefined' + + var query = match[6] || ''; + var fragment = match[8] || ''; + return { + protocol: match[2], + host: match[4], + path: match[5], + relative: match[5] + query + fragment // everything minus origin + + }; +} + +function uuid4$1() { + var crypto = _window$3.crypto || _window$3.msCrypto; + + if (!isUndefined$1(crypto) && crypto.getRandomValues) { + // Use window.crypto API if available + // eslint-disable-next-line no-undef + var arr = new Uint16Array(8); + crypto.getRandomValues(arr); // set 4 in byte 7 + + arr[3] = arr[3] & 0xfff | 0x4000; // set 2 most significant bits of byte 9 to '10' + + arr[4] = arr[4] & 0x3fff | 0x8000; + + var pad = function pad(num) { + var v = num.toString(16); + + while (v.length < 4) { + v = '0' + v; + } + + return v; + }; + + return pad(arr[0]) + pad(arr[1]) + pad(arr[2]) + pad(arr[3]) + pad(arr[4]) + pad(arr[5]) + pad(arr[6]) + pad(arr[7]); + } else { + // http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/2117523#2117523 + return 'xxxxxxxxxxxx4xxxyxxxxxxxxxxxxxxx'.replace(/[xy]/g, function (c) { + var r = Math.random() * 16 | 0, + v = c === 'x' ? r : r & 0x3 | 0x8; + return v.toString(16); + }); + } +} +/** + * Given a child DOM element, returns a query-selector statement describing that + * and its ancestors + * e.g. [HTMLElement] => body > div > input#foo.btn[name=baz] + * @param elem + * @returns {string} + */ + + +function htmlTreeAsString$1(elem) { + /* eslint no-extra-parens:0*/ + var MAX_TRAVERSE_HEIGHT = 5, + MAX_OUTPUT_LEN = 80, + out = [], + height = 0, + len = 0, + separator = ' > ', + sepLength = separator.length, + nextStr; + + while (elem && height++ < MAX_TRAVERSE_HEIGHT) { + nextStr = htmlElementAsString(elem); // bail out if + // - nextStr is the 'html' element + // - the length of the string that would be created exceeds MAX_OUTPUT_LEN + // (ignore this limit if we are on the first iteration) + + if (nextStr === 'html' || height > 1 && len + out.length * sepLength + nextStr.length >= MAX_OUTPUT_LEN) { + break; + } + + out.push(nextStr); + len += nextStr.length; + elem = elem.parentNode; + } + + return out.reverse().join(separator); +} +/** + * Returns a simple, query-selector representation of a DOM element + * e.g. [HTMLElement] => input#foo.btn[name=baz] + * @param HTMLElement + * @returns {string} + */ + + +function htmlElementAsString(elem) { + var out = [], + className, + classes, + key, + attr, + i; + + if (!elem || !elem.tagName) { + return ''; + } + + out.push(elem.tagName.toLowerCase()); + + if (elem.id) { + out.push('#' + elem.id); + } + + className = elem.className; + + if (className && isString$1(className)) { + classes = className.split(/\s+/); + + for (i = 0; i < classes.length; i++) { + out.push('.' + classes[i]); + } + } + + var attrWhitelist = ['type', 'name', 'title', 'alt']; + + for (i = 0; i < attrWhitelist.length; i++) { + key = attrWhitelist[i]; + attr = elem.getAttribute(key); + + if (attr) { + out.push('[' + key + '="' + attr + '"]'); + } + } + + return out.join(''); +} +/** + * Returns true if either a OR b is truthy, but not both + */ + + +function isOnlyOneTruthy(a, b) { + return !!(!!a ^ !!b); +} +/** + * Returns true if both parameters are undefined + */ + + +function isBothUndefined(a, b) { + return isUndefined$1(a) && isUndefined$1(b); +} +/** + * Returns true if the two input exception interfaces have the same content + */ + + +function isSameException$1(ex1, ex2) { + if (isOnlyOneTruthy(ex1, ex2)) return false; + ex1 = ex1.values[0]; + ex2 = ex2.values[0]; + if (ex1.type !== ex2.type || ex1.value !== ex2.value) return false; // in case both stacktraces are undefined, we can't decide so default to false + + if (isBothUndefined(ex1.stacktrace, ex2.stacktrace)) return false; + return isSameStacktrace$1(ex1.stacktrace, ex2.stacktrace); +} +/** + * Returns true if the two input stack trace interfaces have the same content + */ + + +function isSameStacktrace$1(stack1, stack2) { + if (isOnlyOneTruthy(stack1, stack2)) return false; + var frames1 = stack1.frames; + var frames2 = stack2.frames; // Exit early if frame count differs + + if (frames1.length !== frames2.length) return false; // Iterate through every frame; bail out if anything differs + + var a, b; + + for (var i = 0; i < frames1.length; i++) { + a = frames1[i]; + b = frames2[i]; + if (a.filename !== b.filename || a.lineno !== b.lineno || a.colno !== b.colno || a['function'] !== b['function']) return false; + } + + return true; +} +/** + * Polyfill a method + * @param obj object e.g. `document` + * @param name method name present on object e.g. `addEventListener` + * @param replacement replacement function + * @param track {optional} record instrumentation to an array + */ + + +function fill$1(obj, name, replacement, track) { + var orig = obj[name]; + obj[name] = replacement(orig); + obj[name].__raven__ = true; + obj[name].__orig__ = orig; + + if (track) { + track.push([obj, name, orig]); + } +} +/** + * Join values in array + * @param input array of values to be joined together + * @param delimiter string to be placed in-between values + * @returns {string} + */ + + +function safeJoin(input, delimiter) { + if (!isArray$1(input)) return ''; + var output = []; + + for (var i = 0; i < input.length; i++) { + try { + output.push(String(input[i])); + } catch (e) { + output.push('[value cannot be serialized]'); + } + } + + return output.join(delimiter); +} + +var utils = { + isObject: isObject$1, + isError: isError$1, + isErrorEvent: isErrorEvent$1, + isUndefined: isUndefined$1, + isFunction: isFunction$1, + isPlainObject: isPlainObject, + isString: isString$1, + isArray: isArray$1, + isEmptyObject: isEmptyObject$1, + supportsErrorEvent: supportsErrorEvent, + supportsFetch: supportsFetch$1, + wrappedCallback: wrappedCallback, + each: each$1, + objectMerge: objectMerge$1, + truncate: truncate$1, + objectFrozen: objectFrozen$1, + hasKey: hasKey$1, + joinRegExp: joinRegExp$1, + urlencode: urlencode$1, + uuid4: uuid4$1, + htmlTreeAsString: htmlTreeAsString$1, + htmlElementAsString: htmlElementAsString, + isSameException: isSameException$1, + isSameStacktrace: isSameStacktrace$1, + parseUrl: parseUrl$1, + fill: fill$1, + safeJoin: safeJoin +}; + +/* + TraceKit - Cross brower stack traces + + This was originally forked from github.com/occ/TraceKit, but has since been + largely re-written and is now maintained as part of raven-js. Tests for + this are in test/vendor. + + MIT license +*/ + +var TraceKit = { + collectWindowErrors: true, + debug: false +}; // This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) + +var _window$2 = typeof window !== 'undefined' ? window : typeof commonjsGlobal !== 'undefined' ? commonjsGlobal : typeof self !== 'undefined' ? self : {}; // global reference to slice + + +var _slice = [].slice; +var UNKNOWN_FUNCTION = '?'; // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error#Error_types + +var ERROR_TYPES_RE = /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/; + +function getLocationHref() { + if (typeof document === 'undefined' || document.location == null) return ''; + return document.location.href; +} +/** + * TraceKit.report: cross-browser processing of unhandled exceptions + * + * Syntax: + * TraceKit.report.subscribe(function(stackInfo) { ... }) + * TraceKit.report.unsubscribe(function(stackInfo) { ... }) + * TraceKit.report(exception) + * try { ...code... } catch(ex) { TraceKit.report(ex); } + * + * Supports: + * - Firefox: full stack trace with line numbers, plus column number + * on top frame; column number is not guaranteed + * - Opera: full stack trace with line and column numbers + * - Chrome: full stack trace with line and column numbers + * - Safari: line and column number for the top frame only; some frames + * may be missing, and column number is not guaranteed + * - IE: line and column number for the top frame only; some frames + * may be missing, and column number is not guaranteed + * + * In theory, TraceKit should work on all of the following versions: + * - IE5.5+ (only 8.0 tested) + * - Firefox 0.9+ (only 3.5+ tested) + * - Opera 7+ (only 10.50 tested; versions 9 and earlier may require + * Exceptions Have Stacktrace to be enabled in opera:config) + * - Safari 3+ (only 4+ tested) + * - Chrome 1+ (only 5+ tested) + * - Konqueror 3.5+ (untested) + * + * Requires TraceKit.computeStackTrace. + * + * Tries to catch all unhandled exceptions and report them to the + * subscribed handlers. Please note that TraceKit.report will rethrow the + * exception. This is REQUIRED in order to get a useful stack trace in IE. + * If the exception does not reach the top of the browser, you will only + * get a stack trace from the point where TraceKit.report was called. + * + * Handlers receive a stackInfo object as described in the + * TraceKit.computeStackTrace docs. + */ + + +TraceKit.report = function reportModuleWrapper() { + var handlers = [], + lastArgs = null, + lastException = null, + lastExceptionStack = null; + /** + * Add a crash handler. + * @param {Function} handler + */ + + function subscribe(handler) { + installGlobalHandler(); + handlers.push(handler); + } + /** + * Remove a crash handler. + * @param {Function} handler + */ + + + function unsubscribe(handler) { + for (var i = handlers.length - 1; i >= 0; --i) { + if (handlers[i] === handler) { + handlers.splice(i, 1); + } + } + } + /** + * Remove all crash handlers. + */ + + + function unsubscribeAll() { + uninstallGlobalHandler(); + handlers = []; + } + /** + * Dispatch stack information to all handlers. + * @param {Object.} stack + */ + + + function notifyHandlers(stack, isWindowError) { + var exception = null; + + if (isWindowError && !TraceKit.collectWindowErrors) { + return; + } + + for (var i in handlers) { + if (handlers.hasOwnProperty(i)) { + try { + handlers[i].apply(null, [stack].concat(_slice.call(arguments, 2))); + } catch (inner) { + exception = inner; + } + } + } + + if (exception) { + throw exception; + } + } + + var _oldOnerrorHandler, _onErrorHandlerInstalled; + /** + * Ensures all global unhandled exceptions are recorded. + * Supported by Gecko and IE. + * @param {string} msg Error message. + * @param {string} url URL of script that generated the exception. + * @param {(number|string)} lineNo The line number at which the error + * occurred. + * @param {?(number|string)} colNo The column number at which the error + * occurred. + * @param {?Error} ex The actual Error object. + */ + + + function traceKitWindowOnError(msg, url, lineNo, colNo, ex) { + var stack = null; // If 'ex' is ErrorEvent, get real Error from inside + + var exception = utils.isErrorEvent(ex) ? ex.error : ex; // If 'msg' is ErrorEvent, get real message from inside + + var message = utils.isErrorEvent(msg) ? msg.message : msg; + + if (lastExceptionStack) { + TraceKit.computeStackTrace.augmentStackTraceWithInitialElement(lastExceptionStack, url, lineNo, message); + processLastException(); + } else if (exception && utils.isError(exception)) { + // non-string `exception` arg; attempt to extract stack trace + // New chrome and blink send along a real error object + // Let's just report that like a normal error. + // See: https://mikewest.org/2013/08/debugging-runtime-errors-with-window-onerror + stack = TraceKit.computeStackTrace(exception); + notifyHandlers(stack, true); + } else { + var location = { + url: url, + line: lineNo, + column: colNo + }; + var name = undefined; + var groups; + + if ({}.toString.call(message) === '[object String]') { + var groups = message.match(ERROR_TYPES_RE); + + if (groups) { + name = groups[1]; + message = groups[2]; + } + } + + location.func = UNKNOWN_FUNCTION; + stack = { + name: name, + message: message, + url: getLocationHref(), + stack: [location] + }; + notifyHandlers(stack, true); + } + + if (_oldOnerrorHandler) { + return _oldOnerrorHandler.apply(this, arguments); + } + + return false; + } + + function installGlobalHandler() { + if (_onErrorHandlerInstalled) { + return; + } + + _oldOnerrorHandler = _window$2.onerror; + _window$2.onerror = traceKitWindowOnError; + _onErrorHandlerInstalled = true; + } + + function uninstallGlobalHandler() { + if (!_onErrorHandlerInstalled) { + return; + } + + _window$2.onerror = _oldOnerrorHandler; + _onErrorHandlerInstalled = false; + _oldOnerrorHandler = undefined; + } + + function processLastException() { + var _lastExceptionStack = lastExceptionStack, + _lastArgs = lastArgs; + lastArgs = null; + lastExceptionStack = null; + lastException = null; + notifyHandlers.apply(null, [_lastExceptionStack, false].concat(_lastArgs)); + } + /** + * Reports an unhandled Error to TraceKit. + * @param {Error} ex + * @param {?boolean} rethrow If false, do not re-throw the exception. + * Only used for window.onerror to not cause an infinite loop of + * rethrowing. + */ + + + function report(ex, rethrow) { + var args = _slice.call(arguments, 1); + + if (lastExceptionStack) { + if (lastException === ex) { + return; // already caught by an inner catch block, ignore + } else { + processLastException(); + } + } + + var stack = TraceKit.computeStackTrace(ex); + lastExceptionStack = stack; + lastException = ex; + lastArgs = args; // If the stack trace is incomplete, wait for 2 seconds for + // slow slow IE to see if onerror occurs or not before reporting + // this exception; otherwise, we will end up with an incomplete + // stack trace + + setTimeout(function () { + if (lastException === ex) { + processLastException(); + } + }, stack.incomplete ? 2000 : 0); + + if (rethrow !== false) { + throw ex; // re-throw to propagate to the top level (and cause window.onerror) + } + } + + report.subscribe = subscribe; + report.unsubscribe = unsubscribe; + report.uninstall = unsubscribeAll; + return report; +}(); +/** + * TraceKit.computeStackTrace: cross-browser stack traces in JavaScript + * + * Syntax: + * s = TraceKit.computeStackTrace(exception) // consider using TraceKit.report instead (see below) + * Returns: + * s.name - exception name + * s.message - exception message + * s.stack[i].url - JavaScript or HTML file URL + * s.stack[i].func - function name, or empty for anonymous functions (if guessing did not work) + * s.stack[i].args - arguments passed to the function, if known + * s.stack[i].line - line number, if known + * s.stack[i].column - column number, if known + * + * Supports: + * - Firefox: full stack trace with line numbers and unreliable column + * number on top frame + * - Opera 10: full stack trace with line and column numbers + * - Opera 9-: full stack trace with line numbers + * - Chrome: full stack trace with line and column numbers + * - Safari: line and column number for the topmost stacktrace element + * only + * - IE: no line numbers whatsoever + * + * Tries to guess names of anonymous functions by looking for assignments + * in the source code. In IE and Safari, we have to guess source file names + * by searching for function bodies inside all page scripts. This will not + * work for scripts that are loaded cross-domain. + * Here be dragons: some function names may be guessed incorrectly, and + * duplicate functions may be mismatched. + * + * TraceKit.computeStackTrace should only be used for tracing purposes. + * Logging of unhandled exceptions should be done with TraceKit.report, + * which builds on top of TraceKit.computeStackTrace and provides better + * IE support by utilizing the window.onerror event to retrieve information + * about the top of the stack. + * + * Note: In IE and Safari, no stack trace is recorded on the Error object, + * so computeStackTrace instead walks its *own* chain of callers. + * This means that: + * * in Safari, some methods may be missing from the stack trace; + * * in IE, the topmost function in the stack trace will always be the + * caller of computeStackTrace. + * + * This is okay for tracing (because you are likely to be calling + * computeStackTrace from the function you want to be the topmost element + * of the stack trace anyway), but not okay for logging unhandled + * exceptions (because your catch block will likely be far away from the + * inner function that actually caused the exception). + * + */ + + +TraceKit.computeStackTrace = function computeStackTraceWrapper() { + // Contents of Exception in various browsers. + // + // SAFARI: + // ex.message = Can't find variable: qq + // ex.line = 59 + // ex.sourceId = 580238192 + // ex.sourceURL = http://... + // ex.expressionBeginOffset = 96 + // ex.expressionCaretOffset = 98 + // ex.expressionEndOffset = 98 + // ex.name = ReferenceError + // + // FIREFOX: + // ex.message = qq is not defined + // ex.fileName = http://... + // ex.lineNumber = 59 + // ex.columnNumber = 69 + // ex.stack = ...stack trace... (see the example below) + // ex.name = ReferenceError + // + // CHROME: + // ex.message = qq is not defined + // ex.name = ReferenceError + // ex.type = not_defined + // ex.arguments = ['aa'] + // ex.stack = ...stack trace... + // + // INTERNET EXPLORER: + // ex.message = ... + // ex.name = ReferenceError + // + // OPERA: + // ex.message = ...message... (see the example below) + // ex.name = ReferenceError + // ex.opera#sourceloc = 11 (pretty much useless, duplicates the info in ex.message) + // ex.stacktrace = n/a; see 'opera:config#UserPrefs|Exceptions Have Stacktrace' + + /** + * Computes stack trace information from the stack property. + * Chrome and Gecko use this property. + * @param {Error} ex + * @return {?Object.} Stack trace information. + */ + function computeStackTraceFromStackProp(ex) { + if (typeof ex.stack === 'undefined' || !ex.stack) return; + var chrome = /^\s*at (.*?) ?\(((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i, + gecko = /^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|\[native).*?|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i, + winjs = /^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i, + // Used to additionally parse URL/line/column from eval frames + geckoEval = /(\S+) line (\d+)(?: > eval line \d+)* > eval/i, + chromeEval = /\((\S*)(?::(\d+))(?::(\d+))\)/, + lines = ex.stack.split('\n'), + stack = [], + submatch, + parts, + element, + reference = /^(.*) is undefined$/.exec(ex.message); + + for (var i = 0, j = lines.length; i < j; ++i) { + if (parts = chrome.exec(lines[i])) { + var isNative = parts[2] && parts[2].indexOf('native') === 0; // start of line + + var isEval = parts[2] && parts[2].indexOf('eval') === 0; // start of line + + if (isEval && (submatch = chromeEval.exec(parts[2]))) { + // throw out eval line/column and use top-most line/column number + parts[2] = submatch[1]; // url + + parts[3] = submatch[2]; // line + + parts[4] = submatch[3]; // column + } + + element = { + url: !isNative ? parts[2] : null, + func: parts[1] || UNKNOWN_FUNCTION, + args: isNative ? [parts[2]] : [], + line: parts[3] ? +parts[3] : null, + column: parts[4] ? +parts[4] : null + }; + } else if (parts = winjs.exec(lines[i])) { + element = { + url: parts[2], + func: parts[1] || UNKNOWN_FUNCTION, + args: [], + line: +parts[3], + column: parts[4] ? +parts[4] : null + }; + } else if (parts = gecko.exec(lines[i])) { + var isEval = parts[3] && parts[3].indexOf(' > eval') > -1; + + if (isEval && (submatch = geckoEval.exec(parts[3]))) { + // throw out eval line/column and use top-most line number + parts[3] = submatch[1]; + parts[4] = submatch[2]; + parts[5] = null; // no column when eval + } else if (i === 0 && !parts[5] && typeof ex.columnNumber !== 'undefined') { + // FireFox uses this awesome columnNumber property for its top frame + // Also note, Firefox's column number is 0-based and everything else expects 1-based, + // so adding 1 + // NOTE: this hack doesn't work if top-most frame is eval + stack[0].column = ex.columnNumber + 1; + } + + element = { + url: parts[3], + func: parts[1] || UNKNOWN_FUNCTION, + args: parts[2] ? parts[2].split(',') : [], + line: parts[4] ? +parts[4] : null, + column: parts[5] ? +parts[5] : null + }; + } else { + continue; + } + + if (!element.func && element.line) { + element.func = UNKNOWN_FUNCTION; + } + + stack.push(element); + } + + if (!stack.length) { + return null; + } + + return { + name: ex.name, + message: ex.message, + url: getLocationHref(), + stack: stack + }; + } + /** + * Adds information about the first frame to incomplete stack traces. + * Safari and IE require this to get complete data on the first frame. + * @param {Object.} stackInfo Stack trace information from + * one of the compute* methods. + * @param {string} url The URL of the script that caused an error. + * @param {(number|string)} lineNo The line number of the script that + * caused an error. + * @param {string=} message The error generated by the browser, which + * hopefully contains the name of the object that caused the error. + * @return {boolean} Whether or not the stack information was + * augmented. + */ + + + function augmentStackTraceWithInitialElement(stackInfo, url, lineNo, message) { + var initial = { + url: url, + line: lineNo + }; + + if (initial.url && initial.line) { + stackInfo.incomplete = false; + + if (!initial.func) { + initial.func = UNKNOWN_FUNCTION; + } + + if (stackInfo.stack.length > 0) { + if (stackInfo.stack[0].url === initial.url) { + if (stackInfo.stack[0].line === initial.line) { + return false; // already in stack trace + } else if (!stackInfo.stack[0].line && stackInfo.stack[0].func === initial.func) { + stackInfo.stack[0].line = initial.line; + return false; + } + } + } + + stackInfo.stack.unshift(initial); + stackInfo.partial = true; + return true; + } else { + stackInfo.incomplete = true; + } + + return false; + } + /** + * Computes stack trace information by walking the arguments.caller + * chain at the time the exception occurred. This will cause earlier + * frames to be missed but is the only way to get any stack trace in + * Safari and IE. The top frame is restored by + * {@link augmentStackTraceWithInitialElement}. + * @param {Error} ex + * @return {?Object.} Stack trace information. + */ + + + function computeStackTraceByWalkingCallerChain(ex, depth) { + var functionName = /function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i, + stack = [], + funcs = {}, + recursion = false, + parts, + item; + + for (var curr = computeStackTraceByWalkingCallerChain.caller; curr && !recursion; curr = curr.caller) { + if (curr === computeStackTrace || curr === TraceKit.report) { + // console.log('skipping internal function'); + continue; + } + + item = { + url: null, + func: UNKNOWN_FUNCTION, + line: null, + column: null + }; + + if (curr.name) { + item.func = curr.name; + } else if (parts = functionName.exec(curr.toString())) { + item.func = parts[1]; + } + + if (typeof item.func === 'undefined') { + try { + item.func = parts.input.substring(0, parts.input.indexOf('{')); + } catch (e) {} + } + + if (funcs['' + curr]) { + recursion = true; + } else { + funcs['' + curr] = true; + } + + stack.push(item); + } + + if (depth) { + // console.log('depth is ' + depth); + // console.log('stack is ' + stack.length); + stack.splice(0, depth); + } + + var result = { + name: ex.name, + message: ex.message, + url: getLocationHref(), + stack: stack + }; + augmentStackTraceWithInitialElement(result, ex.sourceURL || ex.fileName, ex.line || ex.lineNumber, ex.message || ex.description); + return result; + } + /** + * Computes a stack trace for an exception. + * @param {Error} ex + * @param {(string|number)=} depth + */ + + + function computeStackTrace(ex, depth) { + var stack = null; + depth = depth == null ? 0 : +depth; + + try { + stack = computeStackTraceFromStackProp(ex); + + if (stack) { + return stack; + } + } catch (e) { + if (TraceKit.debug) { + throw e; + } + } + + try { + stack = computeStackTraceByWalkingCallerChain(ex, depth + 1); + + if (stack) { + return stack; + } + } catch (e) { + if (TraceKit.debug) { + throw e; + } + } + + return { + name: ex.name, + message: ex.message, + url: getLocationHref() + }; + } + + computeStackTrace.augmentStackTraceWithInitialElement = augmentStackTraceWithInitialElement; + computeStackTrace.computeStackTraceFromStackProp = computeStackTraceFromStackProp; + return computeStackTrace; +}(); + +var tracekit = TraceKit; + +var stringify_1 = createCommonjsModule(function (module, exports) { + /* + json-stringify-safe + Like JSON.stringify, but doesn't throw on circular references. + + Originally forked from https://github.com/isaacs/json-stringify-safe + version 5.0.1 on 3/8/2017 and modified to handle Errors serialization + and IE8 compatibility. Tests for this are in test/vendor. + + ISC license: https://github.com/isaacs/json-stringify-safe/blob/master/LICENSE + */ + exports = module.exports = stringify; + exports.getSerialize = serializer; + + function indexOf(haystack, needle) { + for (var i = 0; i < haystack.length; ++i) { + if (haystack[i] === needle) return i; + } + + return -1; + } + + function stringify(obj, replacer, spaces, cycleReplacer) { + return JSON.stringify(obj, serializer(replacer, cycleReplacer), spaces); + } // https://github.com/ftlabs/js-abbreviate/blob/fa709e5f139e7770a71827b1893f22418097fbda/index.js#L95-L106 + + + function stringifyError(value) { + var err = { + // These properties are implemented as magical getters and don't show up in for in + stack: value.stack, + message: value.message, + name: value.name + }; + + for (var i in value) { + if (Object.prototype.hasOwnProperty.call(value, i)) { + err[i] = value[i]; + } + } + + return err; + } + + function serializer(replacer, cycleReplacer) { + var stack = []; + var keys = []; + + if (cycleReplacer == null) { + cycleReplacer = function cycleReplacer(key, value) { + if (stack[0] === value) { + return '[Circular ~]'; + } + + return '[Circular ~.' + keys.slice(0, indexOf(stack, value)).join('.') + ']'; + }; + } + + return function (key, value) { + if (stack.length > 0) { + var thisPos = indexOf(stack, this); + ~thisPos ? stack.splice(thisPos + 1) : stack.push(this); + ~thisPos ? keys.splice(thisPos, Infinity, key) : keys.push(key); + + if (~indexOf(stack, value)) { + value = cycleReplacer.call(this, key, value); + } + } else { + stack.push(value); + } + + return replacer == null ? value instanceof Error ? stringifyError(value) : value : replacer.call(this, key, value); + }; + } +}); +var stringify_2 = stringify_1.getSerialize; + +function RavenConfigError(message) { + this.name = 'RavenConfigError'; + this.message = message; +} + +RavenConfigError.prototype = new Error(); +RavenConfigError.prototype.constructor = RavenConfigError; +var configError = RavenConfigError; + +var wrapMethod = function wrapMethod(console, level, callback) { + var originalConsoleLevel = console[level]; + var originalConsole = console; + + if (!(level in console)) { + return; + } + + var sentryLevel = level === 'warn' ? 'warning' : level; + + console[level] = function () { + var args = [].slice.call(arguments); + var msg = utils.safeJoin(args, ' '); + var data = { + level: sentryLevel, + logger: 'console', + extra: { + arguments: args + } + }; + + if (level === 'assert') { + if (args[0] === false) { + // Default browsers message + msg = 'Assertion failed: ' + (utils.safeJoin(args.slice(1), ' ') || 'console.assert'); + data.extra.arguments = args.slice(1); + callback && callback(msg, data); + } + } else { + callback && callback(msg, data); + } // this fails for some browsers. :( + + + if (originalConsoleLevel) { + // IE9 doesn't allow calling apply on console functions directly + // See: https://stackoverflow.com/questions/5472938/does-ie9-support-console-log-and-is-it-a-real-function#answer-5473193 + Function.prototype.apply.call(originalConsoleLevel, originalConsole, args); + } + }; +}; + +var console$1 = { + wrapMethod: wrapMethod +}; + +/*global XDomainRequest:false */ + +var isError = utils.isError; +var isObject = utils.isObject; +var isErrorEvent = utils.isErrorEvent; +var isUndefined = utils.isUndefined; +var isFunction = utils.isFunction; +var isString = utils.isString; +var isArray = utils.isArray; +var isEmptyObject = utils.isEmptyObject; +var each = utils.each; +var objectMerge = utils.objectMerge; +var truncate = utils.truncate; +var objectFrozen = utils.objectFrozen; +var hasKey = utils.hasKey; +var joinRegExp = utils.joinRegExp; +var urlencode = utils.urlencode; +var uuid4 = utils.uuid4; +var htmlTreeAsString = utils.htmlTreeAsString; +var isSameException = utils.isSameException; +var isSameStacktrace = utils.isSameStacktrace; +var parseUrl = utils.parseUrl; +var fill = utils.fill; +var supportsFetch = utils.supportsFetch; +var wrapConsoleMethod = console$1.wrapMethod; +var dsnKeys = 'source protocol user pass host port path'.split(' '); +var dsnPattern = /^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/; + +function now() { + return +new Date(); +} // This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) + + +var _window$1 = typeof window !== 'undefined' ? window : typeof commonjsGlobal !== 'undefined' ? commonjsGlobal : typeof self !== 'undefined' ? self : {}; + +var _document = _window$1.document; +var _navigator = _window$1.navigator; + +function keepOriginalCallback(original, callback) { + return isFunction(callback) ? function (data) { + return callback(data, original); + } : callback; +} // First, check for JSON support +// If there is no JSON, we no-op the core features of Raven +// since JSON is required to encode the payload + + +function Raven$1() { + this._hasJSON = !!(_typeof(JSON) === 'object' && JSON.stringify); // Raven can run in contexts where there's no document (react-native) + + this._hasDocument = !isUndefined(_document); + this._hasNavigator = !isUndefined(_navigator); + this._lastCapturedException = null; + this._lastData = null; + this._lastEventId = null; + this._globalServer = null; + this._globalKey = null; + this._globalProject = null; + this._globalContext = {}; + this._globalOptions = { + // SENTRY_RELEASE can be injected by https://github.com/getsentry/sentry-webpack-plugin + release: _window$1.SENTRY_RELEASE && _window$1.SENTRY_RELEASE.id, + logger: 'javascript', + ignoreErrors: [], + ignoreUrls: [], + whitelistUrls: [], + includePaths: [], + headers: null, + collectWindowErrors: true, + maxMessageLength: 0, + // By default, truncates URL values to 250 chars + maxUrlLength: 250, + stackTraceLimit: 50, + autoBreadcrumbs: true, + instrument: true, + sampleRate: 1 + }; + this._fetchDefaults = { + method: 'POST', + keepalive: true, + referrerPolicy: 'origin' + }; + this._ignoreOnError = 0; + this._isRavenInstalled = false; + this._originalErrorStackTraceLimit = Error.stackTraceLimit; // capture references to window.console *and* all its methods first + // before the console plugin has a chance to monkey patch + + this._originalConsole = _window$1.console || {}; + this._originalConsoleMethods = {}; + this._plugins = []; + this._startTime = now(); + this._wrappedBuiltIns = []; + this._breadcrumbs = []; + this._lastCapturedEvent = null; + this._keypressTimeout; + this._location = _window$1.location; + this._lastHref = this._location && this._location.href; + + this._resetBackoff(); // eslint-disable-next-line guard-for-in + + + for (var method in this._originalConsole) { + this._originalConsoleMethods[method] = this._originalConsole[method]; + } +} +/* + * The core Raven singleton + * + * @this {Raven} + */ + + +Raven$1.prototype = { + // Hardcode version string so that raven source can be loaded directly via + // webpack (using a build step causes webpack #1617). Grunt verifies that + // this value matches package.json during build. + // See: https://github.com/getsentry/raven-js/issues/465 + VERSION: '3.22.2', + debug: false, + TraceKit: tracekit, + // alias to TraceKit + + /* + * Configure Raven with a DSN and extra options + * + * @param {string} dsn The public Sentry DSN + * @param {object} options Set of global options [optional] + * @return {Raven} + */ + config: function config(dsn, options) { + var self = this; + + if (self._globalServer) { + this._logDebug('error', 'Error: Raven has already been configured'); + + return self; + } + + if (!dsn) return self; + var globalOptions = self._globalOptions; // merge in options + + if (options) { + each(options, function (key, value) { + // tags and extra are special and need to be put into context + if (key === 'tags' || key === 'extra' || key === 'user') { + self._globalContext[key] = value; + } else { + globalOptions[key] = value; + } + }); + } + + self.setDSN(dsn); // "Script error." is hard coded into browsers for errors that it can't read. + // this is the result of a script being pulled in from an external domain and CORS. + + globalOptions.ignoreErrors.push(/^Script error\.?$/); + globalOptions.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/); // join regexp rules into one big rule + + globalOptions.ignoreErrors = joinRegExp(globalOptions.ignoreErrors); + globalOptions.ignoreUrls = globalOptions.ignoreUrls.length ? joinRegExp(globalOptions.ignoreUrls) : false; + globalOptions.whitelistUrls = globalOptions.whitelistUrls.length ? joinRegExp(globalOptions.whitelistUrls) : false; + globalOptions.includePaths = joinRegExp(globalOptions.includePaths); + globalOptions.maxBreadcrumbs = Math.max(0, Math.min(globalOptions.maxBreadcrumbs || 100, 100)); // default and hard limit is 100 + + var autoBreadcrumbDefaults = { + xhr: true, + console: true, + dom: true, + location: true, + sentry: true + }; + var autoBreadcrumbs = globalOptions.autoBreadcrumbs; + + if ({}.toString.call(autoBreadcrumbs) === '[object Object]') { + autoBreadcrumbs = objectMerge(autoBreadcrumbDefaults, autoBreadcrumbs); + } else if (autoBreadcrumbs !== false) { + autoBreadcrumbs = autoBreadcrumbDefaults; + } + + globalOptions.autoBreadcrumbs = autoBreadcrumbs; + var instrumentDefaults = { + tryCatch: true + }; + var instrument = globalOptions.instrument; + + if ({}.toString.call(instrument) === '[object Object]') { + instrument = objectMerge(instrumentDefaults, instrument); + } else if (instrument !== false) { + instrument = instrumentDefaults; + } + + globalOptions.instrument = instrument; + tracekit.collectWindowErrors = !!globalOptions.collectWindowErrors; // return for chaining + + return self; + }, + + /* + * Installs a global window.onerror error handler + * to capture and report uncaught exceptions. + * At this point, install() is required to be called due + * to the way TraceKit is set up. + * + * @return {Raven} + */ + install: function install() { + var self = this; + + if (self.isSetup() && !self._isRavenInstalled) { + tracekit.report.subscribe(function () { + self._handleOnErrorStackInfo.apply(self, arguments); + }); + + self._patchFunctionToString(); + + if (self._globalOptions.instrument && self._globalOptions.instrument.tryCatch) { + self._instrumentTryCatch(); + } + + if (self._globalOptions.autoBreadcrumbs) self._instrumentBreadcrumbs(); // Install all of the plugins + + self._drainPlugins(); + + self._isRavenInstalled = true; + } + + Error.stackTraceLimit = self._globalOptions.stackTraceLimit; + return this; + }, + + /* + * Set the DSN (can be called multiple time unlike config) + * + * @param {string} dsn The public Sentry DSN + */ + setDSN: function setDSN(dsn) { + var self = this, + uri = self._parseDSN(dsn), + lastSlash = uri.path.lastIndexOf('/'), + path = uri.path.substr(1, lastSlash); + + self._dsn = dsn; + self._globalKey = uri.user; + self._globalSecret = uri.pass && uri.pass.substr(1); + self._globalProject = uri.path.substr(lastSlash + 1); + self._globalServer = self._getGlobalServer(uri); + self._globalEndpoint = self._globalServer + '/' + path + 'api/' + self._globalProject + '/store/'; // Reset backoff state since we may be pointing at a + // new project/server + + this._resetBackoff(); + }, + + /* + * Wrap code within a context so Raven can capture errors + * reliably across domains that is executed immediately. + * + * @param {object} options A specific set of options for this context [optional] + * @param {function} func The callback to be immediately executed within the context + * @param {array} args An array of arguments to be called with the callback [optional] + */ + context: function context(options, func, args) { + if (isFunction(options)) { + args = func || []; + func = options; + options = undefined; + } + + return this.wrap(options, func).apply(this, args); + }, + + /* + * Wrap code within a context and returns back a new function to be executed + * + * @param {object} options A specific set of options for this context [optional] + * @param {function} func The function to be wrapped in a new context + * @param {function} func A function to call before the try/catch wrapper [optional, private] + * @return {function} The newly wrapped functions with a context + */ + wrap: function wrap(options, func, _before) { + var self = this; // 1 argument has been passed, and it's not a function + // so just return it + + if (isUndefined(func) && !isFunction(options)) { + return options; + } // options is optional + + + if (isFunction(options)) { + func = options; + options = undefined; + } // At this point, we've passed along 2 arguments, and the second one + // is not a function either, so we'll just return the second argument. + + + if (!isFunction(func)) { + return func; + } // We don't wanna wrap it twice! + + + try { + if (func.__raven__) { + return func; + } // If this has already been wrapped in the past, return that + + + if (func.__raven_wrapper__) { + return func.__raven_wrapper__; + } + } catch (e) { + // Just accessing custom props in some Selenium environments + // can cause a "Permission denied" exception (see raven-js#495). + // Bail on wrapping and return the function as-is (defers to window.onerror). + return func; + } + + function wrapped() { + var args = [], + i = arguments.length, + deep = !options || options && options.deep !== false; + + if (_before && isFunction(_before)) { + _before.apply(this, arguments); + } // Recursively wrap all of a function's arguments that are + // functions themselves. + + + while (i--) { + args[i] = deep ? self.wrap(options, arguments[i]) : arguments[i]; + } + + try { + // Attempt to invoke user-land function + // NOTE: If you are a Sentry user, and you are seeing this stack frame, it + // means Raven caught an error invoking your application code. This is + // expected behavior and NOT indicative of a bug with Raven.js. + return func.apply(this, args); + } catch (e) { + self._ignoreNextOnError(); + + self.captureException(e, options); + throw e; + } + } // copy over properties of the old function + + + for (var property in func) { + if (hasKey(func, property)) { + wrapped[property] = func[property]; + } + } + + wrapped.prototype = func.prototype; + func.__raven_wrapper__ = wrapped; // Signal that this function has been wrapped/filled already + // for both debugging and to prevent it to being wrapped/filled twice + + wrapped.__raven__ = true; + wrapped.__orig__ = func; + return wrapped; + }, + + /* + * Uninstalls the global error handler. + * + * @return {Raven} + */ + uninstall: function uninstall() { + tracekit.report.uninstall(); + + this._unpatchFunctionToString(); + + this._restoreBuiltIns(); + + this._restoreConsole(); + + Error.stackTraceLimit = this._originalErrorStackTraceLimit; + this._isRavenInstalled = false; + return this; + }, + + /* + * Manually capture an exception and send it over to Sentry + * + * @param {error} ex An exception to be logged + * @param {object} options A specific set of options for this error [optional] + * @return {Raven} + */ + captureException: function captureException(ex, options) { + options = objectMerge({ + trimHeadFrames: 0 + }, options ? options : {}); // Cases for sending ex as a message, rather than an exception + + var isNotError = !isError(ex); + var isNotErrorEvent = !isErrorEvent(ex); + var isErrorEventWithoutError = isErrorEvent(ex) && !ex.error; + + if (isNotError && isNotErrorEvent || isErrorEventWithoutError) { + return this.captureMessage(ex, objectMerge(options, { + stacktrace: true, + // if we fall back to captureMessage, default to attempting a new trace + trimHeadFrames: options.trimHeadFrames + 1 + })); + } // Get actual Error from ErrorEvent + + + if (isErrorEvent(ex)) ex = ex.error; // Store the raw exception object for potential debugging and introspection + + this._lastCapturedException = ex; // TraceKit.report will re-raise any exception passed to it, + // which means you have to wrap it in try/catch. Instead, we + // can wrap it here and only re-raise if TraceKit.report + // raises an exception different from the one we asked to + // report on. + + try { + var stack = tracekit.computeStackTrace(ex); + + this._handleStackInfo(stack, options); + } catch (ex1) { + if (ex !== ex1) { + throw ex1; + } + } + + return this; + }, + + /* + * Manually send a message to Sentry + * + * @param {string} msg A plain message to be captured in Sentry + * @param {object} options A specific set of options for this message [optional] + * @return {Raven} + */ + captureMessage: function captureMessage(msg, options) { + // config() automagically converts ignoreErrors from a list to a RegExp so we need to test for an + // early call; we'll error on the side of logging anything called before configuration since it's + // probably something you should see: + if (!!this._globalOptions.ignoreErrors.test && this._globalOptions.ignoreErrors.test(msg)) { + return; + } + + options = options || {}; + var data = objectMerge({ + message: msg + '' // Make sure it's actually a string + + }, options); + var ex; // Generate a "synthetic" stack trace from this point. + // NOTE: If you are a Sentry user, and you are seeing this stack frame, it is NOT indicative + // of a bug with Raven.js. Sentry generates synthetic traces either by configuration, + // or if it catches a thrown object without a "stack" property. + + try { + throw new Error(msg); + } catch (ex1) { + ex = ex1; + } // null exception name so `Error` isn't prefixed to msg + + + ex.name = null; + var stack = tracekit.computeStackTrace(ex); // stack[0] is `throw new Error(msg)` call itself, we are interested in the frame that was just before that, stack[1] + + var initialCall = isArray(stack.stack) && stack.stack[1]; + var fileurl = initialCall && initialCall.url || ''; + + if (!!this._globalOptions.ignoreUrls.test && this._globalOptions.ignoreUrls.test(fileurl)) { + return; + } + + if (!!this._globalOptions.whitelistUrls.test && !this._globalOptions.whitelistUrls.test(fileurl)) { + return; + } + + if (this._globalOptions.stacktrace || options && options.stacktrace) { + options = objectMerge({ + // fingerprint on msg, not stack trace (legacy behavior, could be + // revisited) + fingerprint: msg, + // since we know this is a synthetic trace, the top N-most frames + // MUST be from Raven.js, so mark them as in_app later by setting + // trimHeadFrames + trimHeadFrames: (options.trimHeadFrames || 0) + 1 + }, options); + + var frames = this._prepareFrames(stack, options); + + data.stacktrace = { + // Sentry expects frames oldest to newest + frames: frames.reverse() + }; + } // Fire away! + + + this._send(data); + + return this; + }, + captureBreadcrumb: function captureBreadcrumb(obj) { + var crumb = objectMerge({ + timestamp: now() / 1000 + }, obj); + + if (isFunction(this._globalOptions.breadcrumbCallback)) { + var result = this._globalOptions.breadcrumbCallback(crumb); + + if (isObject(result) && !isEmptyObject(result)) { + crumb = result; + } else if (result === false) { + return this; + } + } + + this._breadcrumbs.push(crumb); + + if (this._breadcrumbs.length > this._globalOptions.maxBreadcrumbs) { + this._breadcrumbs.shift(); + } + + return this; + }, + addPlugin: function addPlugin(plugin + /*arg1, arg2, ... argN*/ + ) { + var pluginArgs = [].slice.call(arguments, 1); + + this._plugins.push([plugin, pluginArgs]); + + if (this._isRavenInstalled) { + this._drainPlugins(); + } + + return this; + }, + + /* + * Set/clear a user to be sent along with the payload. + * + * @param {object} user An object representing user data [optional] + * @return {Raven} + */ + setUserContext: function setUserContext(user) { + // Intentionally do not merge here since that's an unexpected behavior. + this._globalContext.user = user; + return this; + }, + + /* + * Merge extra attributes to be sent along with the payload. + * + * @param {object} extra An object representing extra data [optional] + * @return {Raven} + */ + setExtraContext: function setExtraContext(extra) { + this._mergeContext('extra', extra); + + return this; + }, + + /* + * Merge tags to be sent along with the payload. + * + * @param {object} tags An object representing tags [optional] + * @return {Raven} + */ + setTagsContext: function setTagsContext(tags) { + this._mergeContext('tags', tags); + + return this; + }, + + /* + * Clear all of the context. + * + * @return {Raven} + */ + clearContext: function clearContext() { + this._globalContext = {}; + return this; + }, + + /* + * Get a copy of the current context. This cannot be mutated. + * + * @return {object} copy of context + */ + getContext: function getContext() { + // lol javascript + return JSON.parse(stringify_1(this._globalContext)); + }, + + /* + * Set environment of application + * + * @param {string} environment Typically something like 'production'. + * @return {Raven} + */ + setEnvironment: function setEnvironment(environment) { + this._globalOptions.environment = environment; + return this; + }, + + /* + * Set release version of application + * + * @param {string} release Typically something like a git SHA to identify version + * @return {Raven} + */ + setRelease: function setRelease(release) { + this._globalOptions.release = release; + return this; + }, + + /* + * Set the dataCallback option + * + * @param {function} callback The callback to run which allows the + * data blob to be mutated before sending + * @return {Raven} + */ + setDataCallback: function setDataCallback(callback) { + var original = this._globalOptions.dataCallback; + this._globalOptions.dataCallback = keepOriginalCallback(original, callback); + return this; + }, + + /* + * Set the breadcrumbCallback option + * + * @param {function} callback The callback to run which allows filtering + * or mutating breadcrumbs + * @return {Raven} + */ + setBreadcrumbCallback: function setBreadcrumbCallback(callback) { + var original = this._globalOptions.breadcrumbCallback; + this._globalOptions.breadcrumbCallback = keepOriginalCallback(original, callback); + return this; + }, + + /* + * Set the shouldSendCallback option + * + * @param {function} callback The callback to run which allows + * introspecting the blob before sending + * @return {Raven} + */ + setShouldSendCallback: function setShouldSendCallback(callback) { + var original = this._globalOptions.shouldSendCallback; + this._globalOptions.shouldSendCallback = keepOriginalCallback(original, callback); + return this; + }, + + /** + * Override the default HTTP transport mechanism that transmits data + * to the Sentry server. + * + * @param {function} transport Function invoked instead of the default + * `makeRequest` handler. + * + * @return {Raven} + */ + setTransport: function setTransport(transport) { + this._globalOptions.transport = transport; + return this; + }, + + /* + * Get the latest raw exception that was captured by Raven. + * + * @return {error} + */ + lastException: function lastException() { + return this._lastCapturedException; + }, + + /* + * Get the last event id + * + * @return {string} + */ + lastEventId: function lastEventId() { + return this._lastEventId; + }, + + /* + * Determine if Raven is setup and ready to go. + * + * @return {boolean} + */ + isSetup: function isSetup() { + if (!this._hasJSON) return false; // needs JSON support + + if (!this._globalServer) { + if (!this.ravenNotConfiguredError) { + this.ravenNotConfiguredError = true; + + this._logDebug('error', 'Error: Raven has not been configured.'); + } + + return false; + } + + return true; + }, + afterLoad: function afterLoad() { + // TODO: remove window dependence? + // Attempt to initialize Raven on load + var RavenConfig = _window$1.RavenConfig; + + if (RavenConfig) { + this.config(RavenConfig.dsn, RavenConfig.config).install(); + } + }, + showReportDialog: function showReportDialog(options) { + if (!_document // doesn't work without a document (React native) + ) return; + options = options || {}; + var lastEventId = options.eventId || this.lastEventId(); + + if (!lastEventId) { + throw new configError('Missing eventId'); + } + + var dsn = options.dsn || this._dsn; + + if (!dsn) { + throw new configError('Missing DSN'); + } + + var encode = encodeURIComponent; + var qs = ''; + qs += '?eventId=' + encode(lastEventId); + qs += '&dsn=' + encode(dsn); + var user = options.user || this._globalContext.user; + + if (user) { + if (user.name) qs += '&name=' + encode(user.name); + if (user.email) qs += '&email=' + encode(user.email); + } + + var globalServer = this._getGlobalServer(this._parseDSN(dsn)); + + var script = _document.createElement('script'); + + script.async = true; + script.src = globalServer + '/api/embed/error-page/' + qs; + + (_document.head || _document.body).appendChild(script); + }, + + /**** Private functions ****/ + _ignoreNextOnError: function _ignoreNextOnError() { + var self = this; + this._ignoreOnError += 1; + setTimeout(function () { + // onerror should trigger before setTimeout + self._ignoreOnError -= 1; + }); + }, + _triggerEvent: function _triggerEvent(eventType, options) { + // NOTE: `event` is a native browser thing, so let's avoid conflicting wiht it + var evt, key; + if (!this._hasDocument) return; + options = options || {}; + eventType = 'raven' + eventType.substr(0, 1).toUpperCase() + eventType.substr(1); + + if (_document.createEvent) { + evt = _document.createEvent('HTMLEvents'); + evt.initEvent(eventType, true, true); + } else { + evt = _document.createEventObject(); + evt.eventType = eventType; + } + + for (key in options) { + if (hasKey(options, key)) { + evt[key] = options[key]; + } + } + + if (_document.createEvent) { + // IE9 if standards + _document.dispatchEvent(evt); + } else { + // IE8 regardless of Quirks or Standards + // IE9 if quirks + try { + _document.fireEvent('on' + evt.eventType.toLowerCase(), evt); + } catch (e) {// Do nothing + } + } + }, + + /** + * Wraps addEventListener to capture UI breadcrumbs + * @param evtName the event name (e.g. "click") + * @returns {Function} + * @private + */ + _breadcrumbEventHandler: function _breadcrumbEventHandler(evtName) { + var self = this; + return function (evt) { + // reset keypress timeout; e.g. triggering a 'click' after + // a 'keypress' will reset the keypress debounce so that a new + // set of keypresses can be recorded + self._keypressTimeout = null; // It's possible this handler might trigger multiple times for the same + // event (e.g. event propagation through node ancestors). Ignore if we've + // already captured the event. + + if (self._lastCapturedEvent === evt) return; + self._lastCapturedEvent = evt; // try/catch both: + // - accessing evt.target (see getsentry/raven-js#838, #768) + // - `htmlTreeAsString` because it's complex, and just accessing the DOM incorrectly + // can throw an exception in some circumstances. + + var target; + + try { + target = htmlTreeAsString(evt.target); + } catch (e) { + target = ''; + } + + self.captureBreadcrumb({ + category: 'ui.' + evtName, + // e.g. ui.click, ui.input + message: target + }); + }; + }, + + /** + * Wraps addEventListener to capture keypress UI events + * @returns {Function} + * @private + */ + _keypressEventHandler: function _keypressEventHandler() { + var self = this, + debounceDuration = 1000; // milliseconds + // TODO: if somehow user switches keypress target before + // debounce timeout is triggered, we will only capture + // a single breadcrumb from the FIRST target (acceptable?) + + return function (evt) { + var target; + + try { + target = evt.target; + } catch (e) { + // just accessing event properties can throw an exception in some rare circumstances + // see: https://github.com/getsentry/raven-js/issues/838 + return; + } + + var tagName = target && target.tagName; // only consider keypress events on actual input elements + // this will disregard keypresses targeting body (e.g. tabbing + // through elements, hotkeys, etc) + + if (!tagName || tagName !== 'INPUT' && tagName !== 'TEXTAREA' && !target.isContentEditable) return; // record first keypress in a series, but ignore subsequent + // keypresses until debounce clears + + var timeout = self._keypressTimeout; + + if (!timeout) { + self._breadcrumbEventHandler('input')(evt); + } + + clearTimeout(timeout); + self._keypressTimeout = setTimeout(function () { + self._keypressTimeout = null; + }, debounceDuration); + }; + }, + + /** + * Captures a breadcrumb of type "navigation", normalizing input URLs + * @param to the originating URL + * @param from the target URL + * @private + */ + _captureUrlChange: function _captureUrlChange(from, to) { + var parsedLoc = parseUrl(this._location.href); + var parsedTo = parseUrl(to); + var parsedFrom = parseUrl(from); // because onpopstate only tells you the "new" (to) value of location.href, and + // not the previous (from) value, we need to track the value of the current URL + // state ourselves + + this._lastHref = to; // Use only the path component of the URL if the URL matches the current + // document (almost all the time when using pushState) + + if (parsedLoc.protocol === parsedTo.protocol && parsedLoc.host === parsedTo.host) to = parsedTo.relative; + if (parsedLoc.protocol === parsedFrom.protocol && parsedLoc.host === parsedFrom.host) from = parsedFrom.relative; + this.captureBreadcrumb({ + category: 'navigation', + data: { + to: to, + from: from + } + }); + }, + _patchFunctionToString: function _patchFunctionToString() { + var self = this; + self._originalFunctionToString = Function.prototype.toString; // eslint-disable-next-line no-extend-native + + Function.prototype.toString = function () { + if (typeof this === 'function' && this.__raven__) { + return self._originalFunctionToString.apply(this.__orig__, arguments); + } + + return self._originalFunctionToString.apply(this, arguments); + }; + }, + _unpatchFunctionToString: function _unpatchFunctionToString() { + if (this._originalFunctionToString) { + // eslint-disable-next-line no-extend-native + Function.prototype.toString = this._originalFunctionToString; + } + }, + + /** + * Wrap timer functions and event targets to catch errors and provide + * better metadata. + */ + _instrumentTryCatch: function _instrumentTryCatch() { + var self = this; + var wrappedBuiltIns = self._wrappedBuiltIns; + + function wrapTimeFn(orig) { + return function (fn, t) { + // preserve arity + // Make a copy of the arguments to prevent deoptimization + // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments + var args = new Array(arguments.length); + + for (var i = 0; i < args.length; ++i) { + args[i] = arguments[i]; + } + + var originalCallback = args[0]; + + if (isFunction(originalCallback)) { + args[0] = self.wrap(originalCallback); + } // IE < 9 doesn't support .call/.apply on setInterval/setTimeout, but it + // also supports only two arguments and doesn't care what this is, so we + // can just call the original function directly. + + + if (orig.apply) { + return orig.apply(this, args); + } else { + return orig(args[0], args[1]); + } + }; + } + + var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; + + function wrapEventTarget(global) { + var proto = _window$1[global] && _window$1[global].prototype; + + if (proto && proto.hasOwnProperty && proto.hasOwnProperty('addEventListener')) { + fill(proto, 'addEventListener', function (orig) { + return function (evtName, fn, capture, secure) { + // preserve arity + try { + if (fn && fn.handleEvent) { + fn.handleEvent = self.wrap(fn.handleEvent); + } + } catch (err) {} // can sometimes get 'Permission denied to access property "handle Event' + // More breadcrumb DOM capture ... done here and not in `_instrumentBreadcrumbs` + // so that we don't have more than one wrapper function + + + var before, clickHandler, keypressHandler; + + if (autoBreadcrumbs && autoBreadcrumbs.dom && (global === 'EventTarget' || global === 'Node')) { + // NOTE: generating multiple handlers per addEventListener invocation, should + // revisit and verify we can just use one (almost certainly) + clickHandler = self._breadcrumbEventHandler('click'); + keypressHandler = self._keypressEventHandler(); + + before = function before(evt) { + // need to intercept every DOM event in `before` argument, in case that + // same wrapped method is re-used for different events (e.g. mousemove THEN click) + // see #724 + if (!evt) return; + var eventType; + + try { + eventType = evt.type; + } catch (e) { + // just accessing event properties can throw an exception in some rare circumstances + // see: https://github.com/getsentry/raven-js/issues/838 + return; + } + + if (eventType === 'click') return clickHandler(evt);else if (eventType === 'keypress') return keypressHandler(evt); + }; + } + + return orig.call(this, evtName, self.wrap(fn, undefined, before), capture, secure); + }; + }, wrappedBuiltIns); + fill(proto, 'removeEventListener', function (orig) { + return function (evt, fn, capture, secure) { + try { + fn = fn && (fn.__raven_wrapper__ ? fn.__raven_wrapper__ : fn); + } catch (e) {// ignore, accessing __raven_wrapper__ will throw in some Selenium environments + } + + return orig.call(this, evt, fn, capture, secure); + }; + }, wrappedBuiltIns); + } + } + + fill(_window$1, 'setTimeout', wrapTimeFn, wrappedBuiltIns); + fill(_window$1, 'setInterval', wrapTimeFn, wrappedBuiltIns); + + if (_window$1.requestAnimationFrame) { + fill(_window$1, 'requestAnimationFrame', function (orig) { + return function (cb) { + return orig(self.wrap(cb)); + }; + }, wrappedBuiltIns); + } // event targets borrowed from bugsnag-js: + // https://github.com/bugsnag/bugsnag-js/blob/master/src/bugsnag.js#L666 + + + var eventTargets = ['EventTarget', 'Window', 'Node', 'ApplicationCache', 'AudioTrackList', 'ChannelMergerNode', 'CryptoOperation', 'EventSource', 'FileReader', 'HTMLUnknownElement', 'IDBDatabase', 'IDBRequest', 'IDBTransaction', 'KeyOperation', 'MediaController', 'MessagePort', 'ModalWindow', 'Notification', 'SVGElementInstance', 'Screen', 'TextTrack', 'TextTrackCue', 'TextTrackList', 'WebSocket', 'WebSocketWorker', 'Worker', 'XMLHttpRequest', 'XMLHttpRequestEventTarget', 'XMLHttpRequestUpload']; + + for (var i = 0; i < eventTargets.length; i++) { + wrapEventTarget(eventTargets[i]); + } + }, + + /** + * Instrument browser built-ins w/ breadcrumb capturing + * - XMLHttpRequests + * - DOM interactions (click/typing) + * - window.location changes + * - console + * + * Can be disabled or individually configured via the `autoBreadcrumbs` config option + */ + _instrumentBreadcrumbs: function _instrumentBreadcrumbs() { + var self = this; + var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; + var wrappedBuiltIns = self._wrappedBuiltIns; + + function wrapProp(prop, xhr) { + if (prop in xhr && isFunction(xhr[prop])) { + fill(xhr, prop, function (orig) { + return self.wrap(orig); + }); // intentionally don't track filled methods on XHR instances + } + } + + if (autoBreadcrumbs.xhr && 'XMLHttpRequest' in _window$1) { + var xhrproto = XMLHttpRequest.prototype; + fill(xhrproto, 'open', function (origOpen) { + return function (method, url) { + // preserve arity + // if Sentry key appears in URL, don't capture + if (isString(url) && url.indexOf(self._globalKey) === -1) { + this.__raven_xhr = { + method: method, + url: url, + status_code: null + }; + } + + return origOpen.apply(this, arguments); + }; + }, wrappedBuiltIns); + fill(xhrproto, 'send', function (origSend) { + return function () { + // preserve arity + var xhr = this; + + function onreadystatechangeHandler() { + if (xhr.__raven_xhr && xhr.readyState === 4) { + try { + // touching statusCode in some platforms throws + // an exception + xhr.__raven_xhr.status_code = xhr.status; + } catch (e) { + /* do nothing */ + } + + self.captureBreadcrumb({ + type: 'http', + category: 'xhr', + data: xhr.__raven_xhr + }); + } + } + + var props = ['onload', 'onerror', 'onprogress']; + + for (var j = 0; j < props.length; j++) { + wrapProp(props[j], xhr); + } + + if ('onreadystatechange' in xhr && isFunction(xhr.onreadystatechange)) { + fill(xhr, 'onreadystatechange', function (orig) { + return self.wrap(orig, undefined, onreadystatechangeHandler); + } + /* intentionally don't track this instrumentation */ + ); + } else { + // if onreadystatechange wasn't actually set by the page on this xhr, we + // are free to set our own and capture the breadcrumb + xhr.onreadystatechange = onreadystatechangeHandler; + } + + return origSend.apply(this, arguments); + }; + }, wrappedBuiltIns); + } + + if (autoBreadcrumbs.xhr && supportsFetch()) { + fill(_window$1, 'fetch', function (origFetch) { + return function () { + // preserve arity + // Make a copy of the arguments to prevent deoptimization + // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments + var args = new Array(arguments.length); + + for (var i = 0; i < args.length; ++i) { + args[i] = arguments[i]; + } + + var fetchInput = args[0]; + var method = 'GET'; + var url; + + if (typeof fetchInput === 'string') { + url = fetchInput; + } else if ('Request' in _window$1 && fetchInput instanceof _window$1.Request) { + url = fetchInput.url; + + if (fetchInput.method) { + method = fetchInput.method; + } + } else { + url = '' + fetchInput; + } // if Sentry key appears in URL, don't capture, as it's our own request + + + if (url.indexOf(self._globalKey) !== -1) { + return origFetch.apply(this, args); + } + + if (args[1] && args[1].method) { + method = args[1].method; + } + + var fetchData = { + method: method, + url: url, + status_code: null + }; + return origFetch.apply(this, args).then(function (response) { + fetchData.status_code = response.status; + self.captureBreadcrumb({ + type: 'http', + category: 'fetch', + data: fetchData + }); + return response; + }); + }; + }, wrappedBuiltIns); + } // Capture breadcrumbs from any click that is unhandled / bubbled up all the way + // to the document. Do this before we instrument addEventListener. + + + if (autoBreadcrumbs.dom && this._hasDocument) { + if (_document.addEventListener) { + _document.addEventListener('click', self._breadcrumbEventHandler('click'), false); + + _document.addEventListener('keypress', self._keypressEventHandler(), false); + } else { + // IE8 Compatibility + _document.attachEvent('onclick', self._breadcrumbEventHandler('click')); + + _document.attachEvent('onkeypress', self._keypressEventHandler()); + } + } // record navigation (URL) changes + // NOTE: in Chrome App environment, touching history.pushState, *even inside + // a try/catch block*, will cause Chrome to output an error to console.error + // borrowed from: https://github.com/angular/angular.js/pull/13945/files + + + var chrome = _window$1.chrome; + var isChromePackagedApp = chrome && chrome.app && chrome.app.runtime; + var hasPushAndReplaceState = !isChromePackagedApp && _window$1.history && history.pushState && history.replaceState; + + if (autoBreadcrumbs.location && hasPushAndReplaceState) { + // TODO: remove onpopstate handler on uninstall() + var oldOnPopState = _window$1.onpopstate; + + _window$1.onpopstate = function () { + var currentHref = self._location.href; + + self._captureUrlChange(self._lastHref, currentHref); + + if (oldOnPopState) { + return oldOnPopState.apply(this, arguments); + } + }; + + var historyReplacementFunction = function historyReplacementFunction(origHistFunction) { + // note history.pushState.length is 0; intentionally not declaring + // params to preserve 0 arity + return function () + /* state, title, url */ + { + var url = arguments.length > 2 ? arguments[2] : undefined; // url argument is optional + + if (url) { + // coerce to string (this is what pushState does) + self._captureUrlChange(self._lastHref, url + ''); + } + + return origHistFunction.apply(this, arguments); + }; + }; + + fill(history, 'pushState', historyReplacementFunction, wrappedBuiltIns); + fill(history, 'replaceState', historyReplacementFunction, wrappedBuiltIns); + } + + if (autoBreadcrumbs.console && 'console' in _window$1 && console.log) { + // console + var consoleMethodCallback = function consoleMethodCallback(msg, data) { + self.captureBreadcrumb({ + message: msg, + level: data.level, + category: 'console' + }); + }; + + each(['debug', 'info', 'warn', 'error', 'log'], function (_, level) { + wrapConsoleMethod(console, level, consoleMethodCallback); + }); + } + }, + _restoreBuiltIns: function _restoreBuiltIns() { + // restore any wrapped builtins + var builtin; + + while (this._wrappedBuiltIns.length) { + builtin = this._wrappedBuiltIns.shift(); + var obj = builtin[0], + name = builtin[1], + orig = builtin[2]; + obj[name] = orig; + } + }, + _restoreConsole: function _restoreConsole() { + // eslint-disable-next-line guard-for-in + for (var method in this._originalConsoleMethods) { + this._originalConsole[method] = this._originalConsoleMethods[method]; + } + }, + _drainPlugins: function _drainPlugins() { + var self = this; // FIX ME TODO + + each(this._plugins, function (_, plugin) { + var installer = plugin[0]; + var args = plugin[1]; + installer.apply(self, [self].concat(args)); + }); + }, + _parseDSN: function _parseDSN(str) { + var m = dsnPattern.exec(str), + dsn = {}, + i = 7; + + try { + while (i--) { + dsn[dsnKeys[i]] = m[i] || ''; + } + } catch (e) { + throw new configError('Invalid DSN: ' + str); + } + + if (dsn.pass && !this._globalOptions.allowSecretKey) { + throw new configError('Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key'); + } + + return dsn; + }, + _getGlobalServer: function _getGlobalServer(uri) { + // assemble the endpoint from the uri pieces + var globalServer = '//' + uri.host + (uri.port ? ':' + uri.port : ''); + + if (uri.protocol) { + globalServer = uri.protocol + ':' + globalServer; + } + + return globalServer; + }, + _handleOnErrorStackInfo: function _handleOnErrorStackInfo() { + // if we are intentionally ignoring errors via onerror, bail out + if (!this._ignoreOnError) { + this._handleStackInfo.apply(this, arguments); + } + }, + _handleStackInfo: function _handleStackInfo(stackInfo, options) { + var frames = this._prepareFrames(stackInfo, options); + + this._triggerEvent('handle', { + stackInfo: stackInfo, + options: options + }); + + this._processException(stackInfo.name, stackInfo.message, stackInfo.url, stackInfo.lineno, frames, options); + }, + _prepareFrames: function _prepareFrames(stackInfo, options) { + var self = this; + var frames = []; + + if (stackInfo.stack && stackInfo.stack.length) { + each(stackInfo.stack, function (i, stack) { + var frame = self._normalizeFrame(stack, stackInfo.url); + + if (frame) { + frames.push(frame); + } + }); // e.g. frames captured via captureMessage throw + + if (options && options.trimHeadFrames) { + for (var j = 0; j < options.trimHeadFrames && j < frames.length; j++) { + frames[j].in_app = false; + } + } + } + + frames = frames.slice(0, this._globalOptions.stackTraceLimit); + return frames; + }, + _normalizeFrame: function _normalizeFrame(frame, stackInfoUrl) { + // normalize the frames data + var normalized = { + filename: frame.url, + lineno: frame.line, + colno: frame.column, + function: frame.func || '?' + }; // Case when we don't have any information about the error + // E.g. throwing a string or raw object, instead of an `Error` in Firefox + // Generating synthetic error doesn't add any value here + // + // We should probably somehow let a user know that they should fix their code + + if (!frame.url) { + normalized.filename = stackInfoUrl; // fallback to whole stacks url from onerror handler + } + + normalized.in_app = !( // determine if an exception came from outside of our app + // first we check the global includePaths list. + !!this._globalOptions.includePaths.test && !this._globalOptions.includePaths.test(normalized.filename) || // Now we check for fun, if the function name is Raven or TraceKit + /(Raven|TraceKit)\./.test(normalized['function']) || // finally, we do a last ditch effort and check for raven.min.js + /raven\.(min\.)?js$/.test(normalized.filename)); + return normalized; + }, + _processException: function _processException(type, message, fileurl, lineno, frames, options) { + var prefixedMessage = (type ? type + ': ' : '') + (message || ''); + + if (!!this._globalOptions.ignoreErrors.test && (this._globalOptions.ignoreErrors.test(message) || this._globalOptions.ignoreErrors.test(prefixedMessage))) { + return; + } + + var stacktrace; + + if (frames && frames.length) { + fileurl = frames[0].filename || fileurl; // Sentry expects frames oldest to newest + // and JS sends them as newest to oldest + + frames.reverse(); + stacktrace = { + frames: frames + }; + } else if (fileurl) { + stacktrace = { + frames: [{ + filename: fileurl, + lineno: lineno, + in_app: true + }] + }; + } + + if (!!this._globalOptions.ignoreUrls.test && this._globalOptions.ignoreUrls.test(fileurl)) { + return; + } + + if (!!this._globalOptions.whitelistUrls.test && !this._globalOptions.whitelistUrls.test(fileurl)) { + return; + } + + var data = objectMerge({ + // sentry.interfaces.Exception + exception: { + values: [{ + type: type, + value: message, + stacktrace: stacktrace + }] + }, + culprit: fileurl + }, options); // Fire away! + + this._send(data); + }, + _trimPacket: function _trimPacket(data) { + // For now, we only want to truncate the two different messages + // but this could/should be expanded to just trim everything + var max = this._globalOptions.maxMessageLength; + + if (data.message) { + data.message = truncate(data.message, max); + } + + if (data.exception) { + var exception = data.exception.values[0]; + exception.value = truncate(exception.value, max); + } + + var request = data.request; + + if (request) { + if (request.url) { + request.url = truncate(request.url, this._globalOptions.maxUrlLength); + } + + if (request.Referer) { + request.Referer = truncate(request.Referer, this._globalOptions.maxUrlLength); + } + } + + if (data.breadcrumbs && data.breadcrumbs.values) this._trimBreadcrumbs(data.breadcrumbs); + return data; + }, + + /** + * Truncate breadcrumb values (right now just URLs) + */ + _trimBreadcrumbs: function _trimBreadcrumbs(breadcrumbs) { + // known breadcrumb properties with urls + // TODO: also consider arbitrary prop values that start with (https?)?:// + var urlProps = ['to', 'from', 'url'], + urlProp, + crumb, + data; + + for (var i = 0; i < breadcrumbs.values.length; ++i) { + crumb = breadcrumbs.values[i]; + if (!crumb.hasOwnProperty('data') || !isObject(crumb.data) || objectFrozen(crumb.data)) continue; + data = objectMerge({}, crumb.data); + + for (var j = 0; j < urlProps.length; ++j) { + urlProp = urlProps[j]; + + if (data.hasOwnProperty(urlProp) && data[urlProp]) { + data[urlProp] = truncate(data[urlProp], this._globalOptions.maxUrlLength); + } + } + + breadcrumbs.values[i].data = data; + } + }, + _getHttpData: function _getHttpData() { + if (!this._hasNavigator && !this._hasDocument) return; + var httpData = {}; + + if (this._hasNavigator && _navigator.userAgent) { + httpData.headers = { + 'User-Agent': navigator.userAgent + }; + } // Check in `window` instead of `document`, as we may be in ServiceWorker environment + + + if (_window$1.location && _window$1.location.href) { + httpData.url = _window$1.location.href; + } + + if (this._hasDocument && _document.referrer) { + if (!httpData.headers) httpData.headers = {}; + httpData.headers.Referer = _document.referrer; + } + + return httpData; + }, + _resetBackoff: function _resetBackoff() { + this._backoffDuration = 0; + this._backoffStart = null; + }, + _shouldBackoff: function _shouldBackoff() { + return this._backoffDuration && now() - this._backoffStart < this._backoffDuration; + }, + + /** + * Returns true if the in-process data payload matches the signature + * of the previously-sent data + * + * NOTE: This has to be done at this level because TraceKit can generate + * data from window.onerror WITHOUT an exception object (IE8, IE9, + * other old browsers). This can take the form of an "exception" + * data object with a single frame (derived from the onerror args). + */ + _isRepeatData: function _isRepeatData(current) { + var last = this._lastData; + if (!last || current.message !== last.message || // defined for captureMessage + current.culprit !== last.culprit // defined for captureException/onerror + ) return false; // Stacktrace interface (i.e. from captureMessage) + + if (current.stacktrace || last.stacktrace) { + return isSameStacktrace(current.stacktrace, last.stacktrace); + } else if (current.exception || last.exception) { + // Exception interface (i.e. from captureException/onerror) + return isSameException(current.exception, last.exception); + } + + return true; + }, + _setBackoffState: function _setBackoffState(request) { + // If we are already in a backoff state, don't change anything + if (this._shouldBackoff()) { + return; + } + + var status = request.status; // 400 - project_id doesn't exist or some other fatal + // 401 - invalid/revoked dsn + // 429 - too many requests + + if (!(status === 400 || status === 401 || status === 429)) return; + var retry; + + try { + // If Retry-After is not in Access-Control-Expose-Headers, most + // browsers will throw an exception trying to access it + if (supportsFetch()) { + retry = request.headers.get('Retry-After'); + } else { + retry = request.getResponseHeader('Retry-After'); + } // Retry-After is returned in seconds + + + retry = parseInt(retry, 10) * 1000; + } catch (e) { + /* eslint no-empty:0 */ + } + + this._backoffDuration = retry ? // If Sentry server returned a Retry-After value, use it + retry : // Otherwise, double the last backoff duration (starts at 1 sec) + this._backoffDuration * 2 || 1000; + this._backoffStart = now(); + }, + _send: function _send(data) { + var globalOptions = this._globalOptions; + + var baseData = { + project: this._globalProject, + logger: globalOptions.logger, + platform: 'javascript' + }, + httpData = this._getHttpData(); + + if (httpData) { + baseData.request = httpData; + } // HACK: delete `trimHeadFrames` to prevent from appearing in outbound payload + + + if (data.trimHeadFrames) delete data.trimHeadFrames; + data = objectMerge(baseData, data); // Merge in the tags and extra separately since objectMerge doesn't handle a deep merge + + data.tags = objectMerge(objectMerge({}, this._globalContext.tags), data.tags); + data.extra = objectMerge(objectMerge({}, this._globalContext.extra), data.extra); // Send along our own collected metadata with extra + + data.extra['session:duration'] = now() - this._startTime; + + if (this._breadcrumbs && this._breadcrumbs.length > 0) { + // intentionally make shallow copy so that additions + // to breadcrumbs aren't accidentally sent in this request + data.breadcrumbs = { + values: [].slice.call(this._breadcrumbs, 0) + }; + } + + if (this._globalContext.user) { + // sentry.interfaces.User + data.user = this._globalContext.user; + } // Include the environment if it's defined in globalOptions + + + if (globalOptions.environment) data.environment = globalOptions.environment; // Include the release if it's defined in globalOptions + + if (globalOptions.release) data.release = globalOptions.release; // Include server_name if it's defined in globalOptions + + if (globalOptions.serverName) data.server_name = globalOptions.serverName; // Cleanup empty properties before sending them to the server + + Object.keys(data).forEach(function (key) { + if (data[key] == null || data[key] === '' || isEmptyObject(data[key])) { + delete data[key]; + } + }); + + if (isFunction(globalOptions.dataCallback)) { + data = globalOptions.dataCallback(data) || data; + } // Why?????????? + + + if (!data || isEmptyObject(data)) { + return; + } // Check if the request should be filtered or not + + + if (isFunction(globalOptions.shouldSendCallback) && !globalOptions.shouldSendCallback(data)) { + return; + } // Backoff state: Sentry server previously responded w/ an error (e.g. 429 - too many requests), + // so drop requests until "cool-off" period has elapsed. + + + if (this._shouldBackoff()) { + this._logDebug('warn', 'Raven dropped error due to backoff: ', data); + + return; + } + + if (typeof globalOptions.sampleRate === 'number') { + if (Math.random() < globalOptions.sampleRate) { + this._sendProcessedPayload(data); + } + } else { + this._sendProcessedPayload(data); + } + }, + _getUuid: function _getUuid() { + return uuid4(); + }, + _sendProcessedPayload: function _sendProcessedPayload(data, callback) { + var self = this; + var globalOptions = this._globalOptions; + if (!this.isSetup()) return; // Try and clean up the packet before sending by truncating long values + + data = this._trimPacket(data); // ideally duplicate error testing should occur *before* dataCallback/shouldSendCallback, + // but this would require copying an un-truncated copy of the data packet, which can be + // arbitrarily deep (extra_data) -- could be worthwhile? will revisit + + if (!this._globalOptions.allowDuplicates && this._isRepeatData(data)) { + this._logDebug('warn', 'Raven dropped repeat event: ', data); + + return; + } // Send along an event_id if not explicitly passed. + // This event_id can be used to reference the error within Sentry itself. + // Set lastEventId after we know the error should actually be sent + + + this._lastEventId = data.event_id || (data.event_id = this._getUuid()); // Store outbound payload after trim + + this._lastData = data; + + this._logDebug('debug', 'Raven about to send:', data); + + var auth = { + sentry_version: '7', + sentry_client: 'raven-js/' + this.VERSION, + sentry_key: this._globalKey + }; + + if (this._globalSecret) { + auth.sentry_secret = this._globalSecret; + } + + var exception = data.exception && data.exception.values[0]; // only capture 'sentry' breadcrumb is autoBreadcrumbs is truthy + + if (this._globalOptions.autoBreadcrumbs && this._globalOptions.autoBreadcrumbs.sentry) { + this.captureBreadcrumb({ + category: 'sentry', + message: exception ? (exception.type ? exception.type + ': ' : '') + exception.value : data.message, + event_id: data.event_id, + level: data.level || 'error' // presume error unless specified + + }); + } + + var url = this._globalEndpoint; + + (globalOptions.transport || this._makeRequest).call(this, { + url: url, + auth: auth, + data: data, + options: globalOptions, + onSuccess: function success() { + self._resetBackoff(); + + self._triggerEvent('success', { + data: data, + src: url + }); + + callback && callback(); + }, + onError: function failure(error) { + self._logDebug('error', 'Raven transport failed to send: ', error); + + if (error.request) { + self._setBackoffState(error.request); + } + + self._triggerEvent('failure', { + data: data, + src: url + }); + + error = error || new Error('Raven send failed (no additional details provided)'); + callback && callback(error); + } + }); + }, + _makeRequest: function _makeRequest(opts) { + // Auth is intentionally sent as part of query string (NOT as custom HTTP header) to avoid preflight CORS requests + var url = opts.url + '?' + urlencode(opts.auth); + var evaluatedHeaders = null; + var evaluatedFetchParameters = {}; + + if (opts.options.headers) { + evaluatedHeaders = this._evaluateHash(opts.options.headers); + } + + if (opts.options.fetchParameters) { + evaluatedFetchParameters = this._evaluateHash(opts.options.fetchParameters); + } + + if (supportsFetch()) { + evaluatedFetchParameters.body = stringify_1(opts.data); + var defaultFetchOptions = objectMerge({}, this._fetchDefaults); + var fetchOptions = objectMerge(defaultFetchOptions, evaluatedFetchParameters); + + if (evaluatedHeaders) { + fetchOptions.headers = evaluatedHeaders; + } + + return _window$1.fetch(url, fetchOptions).then(function (response) { + if (response.ok) { + opts.onSuccess && opts.onSuccess(); + } else { + var error = new Error('Sentry error code: ' + response.status); // It's called request only to keep compatibility with XHR interface + // and not add more redundant checks in setBackoffState method + + error.request = response; + opts.onError && opts.onError(error); + } + })['catch'](function () { + opts.onError && opts.onError(new Error('Sentry error code: network unavailable')); + }); + } + + var request = _window$1.XMLHttpRequest && new _window$1.XMLHttpRequest(); + if (!request) return; // if browser doesn't support CORS (e.g. IE7), we are out of luck + + var hasCORS = 'withCredentials' in request || typeof XDomainRequest !== 'undefined'; + if (!hasCORS) return; + + if ('withCredentials' in request) { + request.onreadystatechange = function () { + if (request.readyState !== 4) { + return; + } else if (request.status === 200) { + opts.onSuccess && opts.onSuccess(); + } else if (opts.onError) { + var err = new Error('Sentry error code: ' + request.status); + err.request = request; + opts.onError(err); + } + }; + } else { + request = new XDomainRequest(); // xdomainrequest cannot go http -> https (or vice versa), + // so always use protocol relative + + url = url.replace(/^https?:/, ''); // onreadystatechange not supported by XDomainRequest + + if (opts.onSuccess) { + request.onload = opts.onSuccess; + } + + if (opts.onError) { + request.onerror = function () { + var err = new Error('Sentry error code: XDomainRequest'); + err.request = request; + opts.onError(err); + }; + } + } + + request.open('POST', url); + + if (evaluatedHeaders) { + each(evaluatedHeaders, function (key, value) { + request.setRequestHeader(key, value); + }); + } + + request.send(stringify_1(opts.data)); + }, + _evaluateHash: function _evaluateHash(hash) { + var evaluated = {}; + + for (var key in hash) { + if (hash.hasOwnProperty(key)) { + var value = hash[key]; + evaluated[key] = typeof value === 'function' ? value() : value; + } + } + + return evaluated; + }, + _logDebug: function _logDebug(level) { + if (this._originalConsoleMethods[level] && this.debug) { + // In IE<10 console methods do not have their own 'apply' method + Function.prototype.apply.call(this._originalConsoleMethods[level], this._originalConsole, [].slice.call(arguments, 1)); + } + }, + _mergeContext: function _mergeContext(key, context) { + if (isUndefined(context)) { + delete this._globalContext[key]; + } else { + this._globalContext[key] = objectMerge(this._globalContext[key] || {}, context); + } + } +}; // Deprecations + +Raven$1.prototype.setUser = Raven$1.prototype.setUserContext; +Raven$1.prototype.setReleaseContext = Raven$1.prototype.setRelease; +var raven = Raven$1; + +/** + * Enforces a single instance of the Raven client, and the + * main entry point for Raven. If you are a consumer of the + * Raven library, you SHOULD load this file (vs raven.js). + **/ +// This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) + +var _window = typeof window !== 'undefined' ? window : typeof commonjsGlobal !== 'undefined' ? commonjsGlobal : typeof self !== 'undefined' ? self : {}; + +var _Raven = _window.Raven; +var Raven = new raven(); +/* + * Allow multiple versions of Raven to be installed. + * Strip Raven from the global context and returns the instance. + * + * @return {Raven} + */ + +Raven.noConflict = function () { + _window.Raven = _Raven; + return Raven; +}; + +Raven.afterLoad(); +var singleton = Raven; + +/*global define*/ + +/** + * require.js plugin + * + * Automatically wrap define/require callbacks. (Experimental) + */ + +function requirePlugin(Raven) { + if (typeof undefined === 'function' && undefined.amd) { + window.define = Raven.wrap({ + deep: false + }, undefined); + window.require = Raven.wrap({ + deep: false + }, commonjsRequire); + } +} + +var require_1 = requirePlugin; + +/* This file was generated by './scripts/generate-plugin-combinations.js'! */ + +singleton.addPlugin(require_1); +var require = {}; + +return require; + +}))); diff --git a/dist/require/raven.min.js b/dist/require/raven.min.js new file mode 100644 index 000000000000..a23e2e263286 --- /dev/null +++ b/dist/require/raven.min.js @@ -0,0 +1,3 @@ +/*! Raven.js 3.22.2 (1b6187b) | github.com/getsentry/raven-js */ +!function(a,b){"object"==typeof exports&&"undefined"!=typeof module?module.exports=b():"function"==typeof define&&define.amd?define(b):a.Raven=b()}(this,function(){"use strict";function a(a,b){return b={exports:{}},a(b,b.exports),b.exports}function b(a){return(b="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(a){return typeof a}:function(a){return a&&"function"==typeof Symbol&&a.constructor===Symbol&&a!==Symbol.prototype?"symbol":typeof a})(a)}function c(a){return"object"===b(a)&&null!==a}function d(a){switch({}.toString.call(a)){case"[object Error]":return!0;case"[object Exception]":return!0;case"[object DOMException]":return!0;default:return a instanceof Error}}function e(a){return l()&&"[object ErrorEvent]"==={}.toString.call(a)}function f(a){return void 0===a}function g(a){return"function"==typeof a}function h(a){return"[object Object]"===Object.prototype.toString.call(a)}function i(a){return"[object String]"===Object.prototype.toString.call(a)}function j(a){return"[object Array]"===Object.prototype.toString.call(a)}function k(a){if(!h(a))return!1;for(var b in a)if(a.hasOwnProperty(b))return!1;return!0}function l(){try{return new ErrorEvent(""),!0}catch(a){return!1}}function m(){if(!("fetch"in N))return!1;try{return new Headers,new Request(""),new Response,!0}catch(a){return!1}}function n(a){function b(b,c){var d=a(b)||b;return c?c(d)||d:d}return b}function o(a,b){var c,d;if(f(a.length))for(c in a)s(a,c)&&b.call(null,c,a[c]);else if(d=a.length)for(c=0;c ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function y(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&i(b))for(c=b.split(/\s+/),f=0;f=0;--b)l[b]===a&&l.splice(b,1)}function c(){g(),l=[]}function d(a,b){var c=null;if(!b||P.collectWindowErrors){for(var d in l)if(l.hasOwnProperty(d))try{l[d].apply(null,[a].concat(R.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function e(a,b,c,e,f){var g=null,i=O.isErrorEvent(f)?f.error:f,k=O.isErrorEvent(a)?a.message:a;if(o)P.computeStackTrace.augmentStackTraceWithInitialElement(o,b,c,k),h();else if(i&&O.isError(i))g=P.computeStackTrace(i),d(g,!0);else{var l,m={url:b,line:c,column:e},n=void 0;if("[object String]"==={}.toString.call(k)){var l=k.match(T);l&&(n=l[1],k=l[2])}m.func=S,g={name:n,message:k,url:F(),stack:[m]},d(g,!0)}return!!j&&j.apply(this,arguments)}function f(){k||(j=Q.onerror,Q.onerror=e,k=!0)}function g(){k&&(Q.onerror=j,k=!1,j=void 0)}function h(){var a=o,b=m;m=null,o=null,n=null,d.apply(null,[a,!1].concat(b))}function i(a,b){var c=R.call(arguments,1);if(o){if(n===a)return;h()}var d=P.computeStackTrace(a);if(o=d,n=a,m=c,setTimeout(function(){n===a&&h()},d.incomplete?2e3:0),b!==!1)throw a}var j,k,l=[],m=null,n=null,o=null;return i.subscribe=a,i.unsubscribe=b,i.uninstall=c,i}(),P.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,d,e=/^\s*at (.*?) ?\(((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,f=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|\[native).*?|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,g=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,h=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,i=/\((\S*)(?::(\d+))(?::(\d+))\)/,j=a.stack.split("\n"),k=[],l=(/^(.*) is undefined$/.exec(a.message),0),m=j.length;l eval")>-1;o&&(b=h.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==l||c[5]||"undefined"==typeof a.columnNumber||(k[0].column=a.columnNumber+1),d={url:c[3],func:c[1]||S,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}!d.func&&d.line&&(d.func=S),k.push(d)}return k.length?{name:a.name,message:a.message,url:F(),stack:k}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=S),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,e){for(var f,g,h=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,i=[],j={},k=!1,l=c.caller;l&&!k;l=l.caller)if(l!==d&&l!==P.report){if(g={url:null,func:S,line:null,column:null},l.name?g.func=l.name:(f=h.exec(l.toString()))&&(g.func=f[1]),"undefined"==typeof g.func)try{g.func=f.input.substring(0,f.input.indexOf("{"))}catch(m){}j[""+l]?k=!0:j[""+l]=!0,i.push(g)}e&&i.splice(0,e);var n={name:a.name,message:a.message,url:F(),stack:i};return b(n,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),n}function d(b,d){var e=null;d=null==d?0:+d;try{if(e=a(b))return e}catch(f){if(P.debug)throw f}try{if(e=c(b,d+1))return e}catch(f){if(P.debug)throw f}return{name:b.name,message:b.message,url:F()}}return d.augmentStackTraceWithInitialElement=b,d.computeStackTraceFromStackProp=a,d}();var U=P,V=a(function(a,b){function c(a,b){for(var c=0;c0){var i=c(d,this);~i?d.splice(i+1):d.push(this),~i?f.splice(i,1/0,g):f.push(g),~c(d,h)&&(h=b.call(this,g,h))}else d.push(h);return null==a?h instanceof Error?e(h):h:a.call(this,g,h)}}b=a.exports=d,b.getSerialize=f});G.prototype=new Error,G.prototype.constructor=G;var W=G,X=function(a,b,c){var d=a[b],e=a;if(b in a){var f="warn"===b?"warning":b;a[b]=function(){var a=[].slice.call(arguments),g=O.safeJoin(a," "),h={level:f,logger:"console",extra:{arguments:a}};"assert"===b?a[0]===!1&&(g="Assertion failed: "+(O.safeJoin(a.slice(1)," ")||"console.assert"),h.extra.arguments=a.slice(1),c&&c(g,h)):c&&c(g,h),d&&Function.prototype.apply.call(d,e,a)}}},Y={wrapMethod:X},Z=O.isError,$=O.isObject,_=O.isErrorEvent,aa=O.isUndefined,ba=O.isFunction,ca=O.isString,da=O.isArray,ea=O.isEmptyObject,fa=O.each,ga=O.objectMerge,ha=O.truncate,ia=O.objectFrozen,ja=O.hasKey,ka=O.joinRegExp,la=O.urlencode,ma=O.uuid4,na=O.htmlTreeAsString,oa=O.isSameException,pa=O.isSameStacktrace,qa=O.parseUrl,ra=O.fill,sa=O.supportsFetch,ta=Y.wrapMethod,ua="source protocol user pass host port path".split(" "),va=/^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/,wa="undefined"!=typeof window?window:"undefined"!=typeof L?L:"undefined"!=typeof self?self:{},xa=wa.document,ya=wa.navigator;J.prototype={VERSION:"3.22.2",debug:!1,TraceKit:U,config:function(a,b){var c=this;if(c.i)return this.C("error","Error: Raven has already been configured"),c;if(!a)return c;var d=c.m;b&&fa(b,function(a,b){"tags"===a||"extra"===a||"user"===a?c.l[a]=b:d[a]=b}),c.setDSN(a),d.ignoreErrors.push(/^Script error\.?$/),d.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/),d.ignoreErrors=ka(d.ignoreErrors),d.ignoreUrls=!!d.ignoreUrls.length&&ka(d.ignoreUrls),d.whitelistUrls=!!d.whitelistUrls.length&&ka(d.whitelistUrls),d.includePaths=ka(d.includePaths),d.maxBreadcrumbs=Math.max(0,Math.min(d.maxBreadcrumbs||100,100));var e={xhr:!0,console:!0,dom:!0,location:!0,sentry:!0},f=d.autoBreadcrumbs;"[object Object]"==={}.toString.call(f)?f=ga(e,f):f!==!1&&(f=e),d.autoBreadcrumbs=f;var g={tryCatch:!0},h=d.instrument;return"[object Object]"==={}.toString.call(h)?h=ga(g,h):h!==!1&&(h=g),d.instrument=h,U.collectWindowErrors=!!d.collectWindowErrors,c},install:function(){var a=this;return a.isSetup()&&!a.p&&(U.report.subscribe(function(){a.D.apply(a,arguments)}),a.E(),a.m.instrument&&a.m.instrument.tryCatch&&a.F(),a.m.autoBreadcrumbs&&a.G(),a.H(),a.p=!0),Error.stackTraceLimit=a.m.stackTraceLimit,this},setDSN:function(a){var b=this,c=b.I(a),d=c.path.lastIndexOf("/"),e=c.path.substr(1,d);b.J=a,b.j=c.user,b.K=c.pass&&c.pass.substr(1),b.k=c.path.substr(d+1),b.i=b.L(c),b.M=b.i+"/"+e+"api/"+b.k+"/store/",this.A()},context:function(a,b,c){return ba(a)&&(c=b||[],b=a,a=void 0),this.wrap(a,b).apply(this,c)},wrap:function(a,b,c){function d(){var d=[],f=arguments.length,g=!a||a&&a.deep!==!1;for(c&&ba(c)&&c.apply(this,arguments);f--;)d[f]=g?e.wrap(a,arguments[f]):arguments[f];try{return b.apply(this,d)}catch(h){throw e.N(),e.captureException(h,a),h}}var e=this;if(aa(b)&&!ba(a))return a;if(ba(a)&&(b=a,a=void 0),!ba(b))return b;try{if(b.a)return b;if(b.O)return b.O}catch(f){return b}for(var g in b)ja(b,g)&&(d[g]=b[g]);return d.prototype=b.prototype,b.O=d,d.a=!0,d.b=b,d},uninstall:function(){return U.report.uninstall(),this.P(),this.Q(),this.R(),Error.stackTraceLimit=this.q,this.p=!1,this},captureException:function(a,b){b=ga({trimHeadFrames:0},b?b:{});var c=!Z(a),d=!_(a),e=_(a)&&!a.error;if(c&&d||e)return this.captureMessage(a,ga(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}));_(a)&&(a=a.error),this.f=a;try{var f=U.computeStackTrace(a);this.S(f,b)}catch(g){if(a!==g)throw g}return this},captureMessage:function(a,b){if(!this.m.ignoreErrors.test||!this.m.ignoreErrors.test(a)){b=b||{};var c,d=ga({message:a+""},b);try{throw new Error(a)}catch(e){c=e}c.name=null;var f=U.computeStackTrace(c),g=da(f.stack)&&f.stack[1],h=g&&g.url||"";if((!this.m.ignoreUrls.test||!this.m.ignoreUrls.test(h))&&(!this.m.whitelistUrls.test||this.m.whitelistUrls.test(h))){if(this.m.stacktrace||b&&b.stacktrace){b=ga({fingerprint:a,trimHeadFrames:(b.trimHeadFrames||0)+1},b);var i=this.T(f,b);d.stacktrace={frames:i.reverse()}}return this.U(d),this}}},captureBreadcrumb:function(a){var b=ga({timestamp:H()/1e3},a);if(ba(this.m.breadcrumbCallback)){var c=this.m.breadcrumbCallback(b);if($(c)&&!ea(c))b=c;else if(c===!1)return this}return this.w.push(b),this.w.length>this.m.maxBreadcrumbs&&this.w.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.t.push([a,b]),this.p&&this.H(),this},setUserContext:function(a){return this.l.user=a,this},setExtraContext:function(a){return this.V("extra",a),this},setTagsContext:function(a){return this.V("tags",a),this},clearContext:function(){return this.l={},this},getContext:function(){return JSON.parse(V(this.l))},setEnvironment:function(a){return this.m.environment=a,this},setRelease:function(a){return this.m.release=a,this},setDataCallback:function(a){var b=this.m.dataCallback;return this.m.dataCallback=I(b,a),this},setBreadcrumbCallback:function(a){var b=this.m.breadcrumbCallback;return this.m.breadcrumbCallback=I(b,a),this},setShouldSendCallback:function(a){var b=this.m.shouldSendCallback;return this.m.shouldSendCallback=I(b,a),this},setTransport:function(a){return this.m.transport=a,this},lastException:function(){return this.f},lastEventId:function(){return this.h},isSetup:function(){return!!this.c&&(!!this.i||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.C("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=wa.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(xa){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new W("Missing eventId");var c=a.dsn||this.J;if(!c)throw new W("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.l.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.L(this.I(c)),h=xa.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(xa.head||xa.body).appendChild(h)}},N:function(){var a=this;this.o+=1,setTimeout(function(){a.o-=1})},W:function(a,b){var c,d;if(this.d){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),xa.createEvent?(c=xa.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=xa.createEventObject(),c.eventType=a);for(d in b)ja(b,d)&&(c[d]=b[d]);if(xa.createEvent)xa.dispatchEvent(c);else try{xa.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},X:function(a){var b=this;return function(c){if(b.Y=null,b.x!==c){b.x=c;var d;try{d=na(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},Z:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.Y;g||a.X("input")(c),clearTimeout(g),a.Y=setTimeout(function(){a.Y=null},b)}}},$:function(a,b){var c=qa(this.y.href),d=qa(b),e=qa(a);this.z=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},E:function(){var a=this;a._=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.a?a._.apply(this.b,arguments):a._.apply(this,arguments)}},P:function(){this._&&(Function.prototype.toString=this._)},F:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.$(b.z,c+""),a.apply(this,arguments)}};ra(history,"pushState",j,d),ra(history,"replaceState",j,d)}if(c.console&&"console"in wa&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};fa(["debug","info","warn","error","log"],function(a,b){ta(console,b,k)})}},Q:function(){for(var a;this.v.length;){a=this.v.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},R:function(){for(var a in this.s)this.r[a]=this.s[a]},H:function(){var a=this;fa(this.t,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},I:function(a){var b=va.exec(a),c={},d=7;try{for(;d--;)c[ua[d]]=b[d]||""}catch(e){throw new W("Invalid DSN: "+a)}if(c.pass&&!this.m.allowSecretKey)throw new W("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},L:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},D:function(){this.o||this.S.apply(this,arguments)},S:function(a,b){var c=this.T(a,b);this.W("handle",{stackInfo:a,options:b}),this.ba(a.name,a.message,a.url,a.lineno,c,b)},T:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(fa(a.stack,function(b,e){var f=c.ca(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.w,0)}),this.l.user&&(a.user=this.l.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||ea(a[b]))&&delete a[b]}),ba(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!ea(a)&&(!ba(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.ia()?void this.C("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() href parsing trick because React Native and other +// environments where DOM might not be available + + +function parseUrl$1(url) { + if (typeof url !== 'string') return {}; + var match = url.match(/^(([^:\/?#]+):)?(\/\/([^\/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?$/); // coerce to undefined values to empty string so we don't get 'undefined' + + var query = match[6] || ''; + var fragment = match[8] || ''; + return { + protocol: match[2], + host: match[4], + path: match[5], + relative: match[5] + query + fragment // everything minus origin + + }; +} + +function uuid4$1() { + var crypto = _window$3.crypto || _window$3.msCrypto; + + if (!isUndefined$1(crypto) && crypto.getRandomValues) { + // Use window.crypto API if available + // eslint-disable-next-line no-undef + var arr = new Uint16Array(8); + crypto.getRandomValues(arr); // set 4 in byte 7 + + arr[3] = arr[3] & 0xfff | 0x4000; // set 2 most significant bits of byte 9 to '10' + + arr[4] = arr[4] & 0x3fff | 0x8000; + + var pad = function pad(num) { + var v = num.toString(16); + + while (v.length < 4) { + v = '0' + v; + } + + return v; + }; + + return pad(arr[0]) + pad(arr[1]) + pad(arr[2]) + pad(arr[3]) + pad(arr[4]) + pad(arr[5]) + pad(arr[6]) + pad(arr[7]); + } else { + // http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/2117523#2117523 + return 'xxxxxxxxxxxx4xxxyxxxxxxxxxxxxxxx'.replace(/[xy]/g, function (c) { + var r = Math.random() * 16 | 0, + v = c === 'x' ? r : r & 0x3 | 0x8; + return v.toString(16); + }); + } +} +/** + * Given a child DOM element, returns a query-selector statement describing that + * and its ancestors + * e.g. [HTMLElement] => body > div > input#foo.btn[name=baz] + * @param elem + * @returns {string} + */ + + +function htmlTreeAsString$1(elem) { + /* eslint no-extra-parens:0*/ + var MAX_TRAVERSE_HEIGHT = 5, + MAX_OUTPUT_LEN = 80, + out = [], + height = 0, + len = 0, + separator = ' > ', + sepLength = separator.length, + nextStr; + + while (elem && height++ < MAX_TRAVERSE_HEIGHT) { + nextStr = htmlElementAsString(elem); // bail out if + // - nextStr is the 'html' element + // - the length of the string that would be created exceeds MAX_OUTPUT_LEN + // (ignore this limit if we are on the first iteration) + + if (nextStr === 'html' || height > 1 && len + out.length * sepLength + nextStr.length >= MAX_OUTPUT_LEN) { + break; + } + + out.push(nextStr); + len += nextStr.length; + elem = elem.parentNode; + } + + return out.reverse().join(separator); +} +/** + * Returns a simple, query-selector representation of a DOM element + * e.g. [HTMLElement] => input#foo.btn[name=baz] + * @param HTMLElement + * @returns {string} + */ + + +function htmlElementAsString(elem) { + var out = [], + className, + classes, + key, + attr, + i; + + if (!elem || !elem.tagName) { + return ''; + } + + out.push(elem.tagName.toLowerCase()); + + if (elem.id) { + out.push('#' + elem.id); + } + + className = elem.className; + + if (className && isString$1(className)) { + classes = className.split(/\s+/); + + for (i = 0; i < classes.length; i++) { + out.push('.' + classes[i]); + } + } + + var attrWhitelist = ['type', 'name', 'title', 'alt']; + + for (i = 0; i < attrWhitelist.length; i++) { + key = attrWhitelist[i]; + attr = elem.getAttribute(key); + + if (attr) { + out.push('[' + key + '="' + attr + '"]'); + } + } + + return out.join(''); +} +/** + * Returns true if either a OR b is truthy, but not both + */ + + +function isOnlyOneTruthy(a, b) { + return !!(!!a ^ !!b); +} +/** + * Returns true if both parameters are undefined + */ + + +function isBothUndefined(a, b) { + return isUndefined$1(a) && isUndefined$1(b); +} +/** + * Returns true if the two input exception interfaces have the same content + */ + + +function isSameException$1(ex1, ex2) { + if (isOnlyOneTruthy(ex1, ex2)) return false; + ex1 = ex1.values[0]; + ex2 = ex2.values[0]; + if (ex1.type !== ex2.type || ex1.value !== ex2.value) return false; // in case both stacktraces are undefined, we can't decide so default to false + + if (isBothUndefined(ex1.stacktrace, ex2.stacktrace)) return false; + return isSameStacktrace$1(ex1.stacktrace, ex2.stacktrace); +} +/** + * Returns true if the two input stack trace interfaces have the same content + */ + + +function isSameStacktrace$1(stack1, stack2) { + if (isOnlyOneTruthy(stack1, stack2)) return false; + var frames1 = stack1.frames; + var frames2 = stack2.frames; // Exit early if frame count differs + + if (frames1.length !== frames2.length) return false; // Iterate through every frame; bail out if anything differs + + var a, b; + + for (var i = 0; i < frames1.length; i++) { + a = frames1[i]; + b = frames2[i]; + if (a.filename !== b.filename || a.lineno !== b.lineno || a.colno !== b.colno || a['function'] !== b['function']) return false; + } + + return true; +} +/** + * Polyfill a method + * @param obj object e.g. `document` + * @param name method name present on object e.g. `addEventListener` + * @param replacement replacement function + * @param track {optional} record instrumentation to an array + */ + + +function fill$1(obj, name, replacement, track) { + var orig = obj[name]; + obj[name] = replacement(orig); + obj[name].__raven__ = true; + obj[name].__orig__ = orig; + + if (track) { + track.push([obj, name, orig]); + } +} +/** + * Join values in array + * @param input array of values to be joined together + * @param delimiter string to be placed in-between values + * @returns {string} + */ + + +function safeJoin(input, delimiter) { + if (!isArray$1(input)) return ''; + var output = []; + + for (var i = 0; i < input.length; i++) { + try { + output.push(String(input[i])); + } catch (e) { + output.push('[value cannot be serialized]'); + } + } + + return output.join(delimiter); +} + +var utils = { + isObject: isObject$1, + isError: isError$1, + isErrorEvent: isErrorEvent$1, + isUndefined: isUndefined$1, + isFunction: isFunction$1, + isPlainObject: isPlainObject, + isString: isString$1, + isArray: isArray$1, + isEmptyObject: isEmptyObject$1, + supportsErrorEvent: supportsErrorEvent, + supportsFetch: supportsFetch$1, + wrappedCallback: wrappedCallback, + each: each$1, + objectMerge: objectMerge$1, + truncate: truncate$1, + objectFrozen: objectFrozen$1, + hasKey: hasKey$1, + joinRegExp: joinRegExp$1, + urlencode: urlencode$1, + uuid4: uuid4$1, + htmlTreeAsString: htmlTreeAsString$1, + htmlElementAsString: htmlElementAsString, + isSameException: isSameException$1, + isSameStacktrace: isSameStacktrace$1, + parseUrl: parseUrl$1, + fill: fill$1, + safeJoin: safeJoin +}; + +/* + TraceKit - Cross brower stack traces + + This was originally forked from github.com/occ/TraceKit, but has since been + largely re-written and is now maintained as part of raven-js. Tests for + this are in test/vendor. + + MIT license +*/ + +var TraceKit = { + collectWindowErrors: true, + debug: false +}; // This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) + +var _window$2 = typeof window !== 'undefined' ? window : typeof commonjsGlobal !== 'undefined' ? commonjsGlobal : typeof self !== 'undefined' ? self : {}; // global reference to slice + + +var _slice = [].slice; +var UNKNOWN_FUNCTION = '?'; // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error#Error_types + +var ERROR_TYPES_RE = /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/; + +function getLocationHref() { + if (typeof document === 'undefined' || document.location == null) return ''; + return document.location.href; +} +/** + * TraceKit.report: cross-browser processing of unhandled exceptions + * + * Syntax: + * TraceKit.report.subscribe(function(stackInfo) { ... }) + * TraceKit.report.unsubscribe(function(stackInfo) { ... }) + * TraceKit.report(exception) + * try { ...code... } catch(ex) { TraceKit.report(ex); } + * + * Supports: + * - Firefox: full stack trace with line numbers, plus column number + * on top frame; column number is not guaranteed + * - Opera: full stack trace with line and column numbers + * - Chrome: full stack trace with line and column numbers + * - Safari: line and column number for the top frame only; some frames + * may be missing, and column number is not guaranteed + * - IE: line and column number for the top frame only; some frames + * may be missing, and column number is not guaranteed + * + * In theory, TraceKit should work on all of the following versions: + * - IE5.5+ (only 8.0 tested) + * - Firefox 0.9+ (only 3.5+ tested) + * - Opera 7+ (only 10.50 tested; versions 9 and earlier may require + * Exceptions Have Stacktrace to be enabled in opera:config) + * - Safari 3+ (only 4+ tested) + * - Chrome 1+ (only 5+ tested) + * - Konqueror 3.5+ (untested) + * + * Requires TraceKit.computeStackTrace. + * + * Tries to catch all unhandled exceptions and report them to the + * subscribed handlers. Please note that TraceKit.report will rethrow the + * exception. This is REQUIRED in order to get a useful stack trace in IE. + * If the exception does not reach the top of the browser, you will only + * get a stack trace from the point where TraceKit.report was called. + * + * Handlers receive a stackInfo object as described in the + * TraceKit.computeStackTrace docs. + */ + + +TraceKit.report = function reportModuleWrapper() { + var handlers = [], + lastArgs = null, + lastException = null, + lastExceptionStack = null; + /** + * Add a crash handler. + * @param {Function} handler + */ + + function subscribe(handler) { + installGlobalHandler(); + handlers.push(handler); + } + /** + * Remove a crash handler. + * @param {Function} handler + */ + + + function unsubscribe(handler) { + for (var i = handlers.length - 1; i >= 0; --i) { + if (handlers[i] === handler) { + handlers.splice(i, 1); + } + } + } + /** + * Remove all crash handlers. + */ + + + function unsubscribeAll() { + uninstallGlobalHandler(); + handlers = []; + } + /** + * Dispatch stack information to all handlers. + * @param {Object.} stack + */ + + + function notifyHandlers(stack, isWindowError) { + var exception = null; + + if (isWindowError && !TraceKit.collectWindowErrors) { + return; + } + + for (var i in handlers) { + if (handlers.hasOwnProperty(i)) { + try { + handlers[i].apply(null, [stack].concat(_slice.call(arguments, 2))); + } catch (inner) { + exception = inner; + } + } + } + + if (exception) { + throw exception; + } + } + + var _oldOnerrorHandler, _onErrorHandlerInstalled; + /** + * Ensures all global unhandled exceptions are recorded. + * Supported by Gecko and IE. + * @param {string} msg Error message. + * @param {string} url URL of script that generated the exception. + * @param {(number|string)} lineNo The line number at which the error + * occurred. + * @param {?(number|string)} colNo The column number at which the error + * occurred. + * @param {?Error} ex The actual Error object. + */ + + + function traceKitWindowOnError(msg, url, lineNo, colNo, ex) { + var stack = null; // If 'ex' is ErrorEvent, get real Error from inside + + var exception = utils.isErrorEvent(ex) ? ex.error : ex; // If 'msg' is ErrorEvent, get real message from inside + + var message = utils.isErrorEvent(msg) ? msg.message : msg; + + if (lastExceptionStack) { + TraceKit.computeStackTrace.augmentStackTraceWithInitialElement(lastExceptionStack, url, lineNo, message); + processLastException(); + } else if (exception && utils.isError(exception)) { + // non-string `exception` arg; attempt to extract stack trace + // New chrome and blink send along a real error object + // Let's just report that like a normal error. + // See: https://mikewest.org/2013/08/debugging-runtime-errors-with-window-onerror + stack = TraceKit.computeStackTrace(exception); + notifyHandlers(stack, true); + } else { + var location = { + url: url, + line: lineNo, + column: colNo + }; + var name = undefined; + var groups; + + if ({}.toString.call(message) === '[object String]') { + var groups = message.match(ERROR_TYPES_RE); + + if (groups) { + name = groups[1]; + message = groups[2]; + } + } + + location.func = UNKNOWN_FUNCTION; + stack = { + name: name, + message: message, + url: getLocationHref(), + stack: [location] + }; + notifyHandlers(stack, true); + } + + if (_oldOnerrorHandler) { + return _oldOnerrorHandler.apply(this, arguments); + } + + return false; + } + + function installGlobalHandler() { + if (_onErrorHandlerInstalled) { + return; + } + + _oldOnerrorHandler = _window$2.onerror; + _window$2.onerror = traceKitWindowOnError; + _onErrorHandlerInstalled = true; + } + + function uninstallGlobalHandler() { + if (!_onErrorHandlerInstalled) { + return; + } + + _window$2.onerror = _oldOnerrorHandler; + _onErrorHandlerInstalled = false; + _oldOnerrorHandler = undefined; + } + + function processLastException() { + var _lastExceptionStack = lastExceptionStack, + _lastArgs = lastArgs; + lastArgs = null; + lastExceptionStack = null; + lastException = null; + notifyHandlers.apply(null, [_lastExceptionStack, false].concat(_lastArgs)); + } + /** + * Reports an unhandled Error to TraceKit. + * @param {Error} ex + * @param {?boolean} rethrow If false, do not re-throw the exception. + * Only used for window.onerror to not cause an infinite loop of + * rethrowing. + */ + + + function report(ex, rethrow) { + var args = _slice.call(arguments, 1); + + if (lastExceptionStack) { + if (lastException === ex) { + return; // already caught by an inner catch block, ignore + } else { + processLastException(); + } + } + + var stack = TraceKit.computeStackTrace(ex); + lastExceptionStack = stack; + lastException = ex; + lastArgs = args; // If the stack trace is incomplete, wait for 2 seconds for + // slow slow IE to see if onerror occurs or not before reporting + // this exception; otherwise, we will end up with an incomplete + // stack trace + + setTimeout(function () { + if (lastException === ex) { + processLastException(); + } + }, stack.incomplete ? 2000 : 0); + + if (rethrow !== false) { + throw ex; // re-throw to propagate to the top level (and cause window.onerror) + } + } + + report.subscribe = subscribe; + report.unsubscribe = unsubscribe; + report.uninstall = unsubscribeAll; + return report; +}(); +/** + * TraceKit.computeStackTrace: cross-browser stack traces in JavaScript + * + * Syntax: + * s = TraceKit.computeStackTrace(exception) // consider using TraceKit.report instead (see below) + * Returns: + * s.name - exception name + * s.message - exception message + * s.stack[i].url - JavaScript or HTML file URL + * s.stack[i].func - function name, or empty for anonymous functions (if guessing did not work) + * s.stack[i].args - arguments passed to the function, if known + * s.stack[i].line - line number, if known + * s.stack[i].column - column number, if known + * + * Supports: + * - Firefox: full stack trace with line numbers and unreliable column + * number on top frame + * - Opera 10: full stack trace with line and column numbers + * - Opera 9-: full stack trace with line numbers + * - Chrome: full stack trace with line and column numbers + * - Safari: line and column number for the topmost stacktrace element + * only + * - IE: no line numbers whatsoever + * + * Tries to guess names of anonymous functions by looking for assignments + * in the source code. In IE and Safari, we have to guess source file names + * by searching for function bodies inside all page scripts. This will not + * work for scripts that are loaded cross-domain. + * Here be dragons: some function names may be guessed incorrectly, and + * duplicate functions may be mismatched. + * + * TraceKit.computeStackTrace should only be used for tracing purposes. + * Logging of unhandled exceptions should be done with TraceKit.report, + * which builds on top of TraceKit.computeStackTrace and provides better + * IE support by utilizing the window.onerror event to retrieve information + * about the top of the stack. + * + * Note: In IE and Safari, no stack trace is recorded on the Error object, + * so computeStackTrace instead walks its *own* chain of callers. + * This means that: + * * in Safari, some methods may be missing from the stack trace; + * * in IE, the topmost function in the stack trace will always be the + * caller of computeStackTrace. + * + * This is okay for tracing (because you are likely to be calling + * computeStackTrace from the function you want to be the topmost element + * of the stack trace anyway), but not okay for logging unhandled + * exceptions (because your catch block will likely be far away from the + * inner function that actually caused the exception). + * + */ + + +TraceKit.computeStackTrace = function computeStackTraceWrapper() { + // Contents of Exception in various browsers. + // + // SAFARI: + // ex.message = Can't find variable: qq + // ex.line = 59 + // ex.sourceId = 580238192 + // ex.sourceURL = http://... + // ex.expressionBeginOffset = 96 + // ex.expressionCaretOffset = 98 + // ex.expressionEndOffset = 98 + // ex.name = ReferenceError + // + // FIREFOX: + // ex.message = qq is not defined + // ex.fileName = http://... + // ex.lineNumber = 59 + // ex.columnNumber = 69 + // ex.stack = ...stack trace... (see the example below) + // ex.name = ReferenceError + // + // CHROME: + // ex.message = qq is not defined + // ex.name = ReferenceError + // ex.type = not_defined + // ex.arguments = ['aa'] + // ex.stack = ...stack trace... + // + // INTERNET EXPLORER: + // ex.message = ... + // ex.name = ReferenceError + // + // OPERA: + // ex.message = ...message... (see the example below) + // ex.name = ReferenceError + // ex.opera#sourceloc = 11 (pretty much useless, duplicates the info in ex.message) + // ex.stacktrace = n/a; see 'opera:config#UserPrefs|Exceptions Have Stacktrace' + + /** + * Computes stack trace information from the stack property. + * Chrome and Gecko use this property. + * @param {Error} ex + * @return {?Object.} Stack trace information. + */ + function computeStackTraceFromStackProp(ex) { + if (typeof ex.stack === 'undefined' || !ex.stack) return; + var chrome = /^\s*at (.*?) ?\(((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i, + gecko = /^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|\[native).*?|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i, + winjs = /^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i, + // Used to additionally parse URL/line/column from eval frames + geckoEval = /(\S+) line (\d+)(?: > eval line \d+)* > eval/i, + chromeEval = /\((\S*)(?::(\d+))(?::(\d+))\)/, + lines = ex.stack.split('\n'), + stack = [], + submatch, + parts, + element, + reference = /^(.*) is undefined$/.exec(ex.message); + + for (var i = 0, j = lines.length; i < j; ++i) { + if (parts = chrome.exec(lines[i])) { + var isNative = parts[2] && parts[2].indexOf('native') === 0; // start of line + + var isEval = parts[2] && parts[2].indexOf('eval') === 0; // start of line + + if (isEval && (submatch = chromeEval.exec(parts[2]))) { + // throw out eval line/column and use top-most line/column number + parts[2] = submatch[1]; // url + + parts[3] = submatch[2]; // line + + parts[4] = submatch[3]; // column + } + + element = { + url: !isNative ? parts[2] : null, + func: parts[1] || UNKNOWN_FUNCTION, + args: isNative ? [parts[2]] : [], + line: parts[3] ? +parts[3] : null, + column: parts[4] ? +parts[4] : null + }; + } else if (parts = winjs.exec(lines[i])) { + element = { + url: parts[2], + func: parts[1] || UNKNOWN_FUNCTION, + args: [], + line: +parts[3], + column: parts[4] ? +parts[4] : null + }; + } else if (parts = gecko.exec(lines[i])) { + var isEval = parts[3] && parts[3].indexOf(' > eval') > -1; + + if (isEval && (submatch = geckoEval.exec(parts[3]))) { + // throw out eval line/column and use top-most line number + parts[3] = submatch[1]; + parts[4] = submatch[2]; + parts[5] = null; // no column when eval + } else if (i === 0 && !parts[5] && typeof ex.columnNumber !== 'undefined') { + // FireFox uses this awesome columnNumber property for its top frame + // Also note, Firefox's column number is 0-based and everything else expects 1-based, + // so adding 1 + // NOTE: this hack doesn't work if top-most frame is eval + stack[0].column = ex.columnNumber + 1; + } + + element = { + url: parts[3], + func: parts[1] || UNKNOWN_FUNCTION, + args: parts[2] ? parts[2].split(',') : [], + line: parts[4] ? +parts[4] : null, + column: parts[5] ? +parts[5] : null + }; + } else { + continue; + } + + if (!element.func && element.line) { + element.func = UNKNOWN_FUNCTION; + } + + stack.push(element); + } + + if (!stack.length) { + return null; + } + + return { + name: ex.name, + message: ex.message, + url: getLocationHref(), + stack: stack + }; + } + /** + * Adds information about the first frame to incomplete stack traces. + * Safari and IE require this to get complete data on the first frame. + * @param {Object.} stackInfo Stack trace information from + * one of the compute* methods. + * @param {string} url The URL of the script that caused an error. + * @param {(number|string)} lineNo The line number of the script that + * caused an error. + * @param {string=} message The error generated by the browser, which + * hopefully contains the name of the object that caused the error. + * @return {boolean} Whether or not the stack information was + * augmented. + */ + + + function augmentStackTraceWithInitialElement(stackInfo, url, lineNo, message) { + var initial = { + url: url, + line: lineNo + }; + + if (initial.url && initial.line) { + stackInfo.incomplete = false; + + if (!initial.func) { + initial.func = UNKNOWN_FUNCTION; + } + + if (stackInfo.stack.length > 0) { + if (stackInfo.stack[0].url === initial.url) { + if (stackInfo.stack[0].line === initial.line) { + return false; // already in stack trace + } else if (!stackInfo.stack[0].line && stackInfo.stack[0].func === initial.func) { + stackInfo.stack[0].line = initial.line; + return false; + } + } + } + + stackInfo.stack.unshift(initial); + stackInfo.partial = true; + return true; + } else { + stackInfo.incomplete = true; + } + + return false; + } + /** + * Computes stack trace information by walking the arguments.caller + * chain at the time the exception occurred. This will cause earlier + * frames to be missed but is the only way to get any stack trace in + * Safari and IE. The top frame is restored by + * {@link augmentStackTraceWithInitialElement}. + * @param {Error} ex + * @return {?Object.} Stack trace information. + */ + + + function computeStackTraceByWalkingCallerChain(ex, depth) { + var functionName = /function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i, + stack = [], + funcs = {}, + recursion = false, + parts, + item; + + for (var curr = computeStackTraceByWalkingCallerChain.caller; curr && !recursion; curr = curr.caller) { + if (curr === computeStackTrace || curr === TraceKit.report) { + // console.log('skipping internal function'); + continue; + } + + item = { + url: null, + func: UNKNOWN_FUNCTION, + line: null, + column: null + }; + + if (curr.name) { + item.func = curr.name; + } else if (parts = functionName.exec(curr.toString())) { + item.func = parts[1]; + } + + if (typeof item.func === 'undefined') { + try { + item.func = parts.input.substring(0, parts.input.indexOf('{')); + } catch (e) {} + } + + if (funcs['' + curr]) { + recursion = true; + } else { + funcs['' + curr] = true; + } + + stack.push(item); + } + + if (depth) { + // console.log('depth is ' + depth); + // console.log('stack is ' + stack.length); + stack.splice(0, depth); + } + + var result = { + name: ex.name, + message: ex.message, + url: getLocationHref(), + stack: stack + }; + augmentStackTraceWithInitialElement(result, ex.sourceURL || ex.fileName, ex.line || ex.lineNumber, ex.message || ex.description); + return result; + } + /** + * Computes a stack trace for an exception. + * @param {Error} ex + * @param {(string|number)=} depth + */ + + + function computeStackTrace(ex, depth) { + var stack = null; + depth = depth == null ? 0 : +depth; + + try { + stack = computeStackTraceFromStackProp(ex); + + if (stack) { + return stack; + } + } catch (e) { + if (TraceKit.debug) { + throw e; + } + } + + try { + stack = computeStackTraceByWalkingCallerChain(ex, depth + 1); + + if (stack) { + return stack; + } + } catch (e) { + if (TraceKit.debug) { + throw e; + } + } + + return { + name: ex.name, + message: ex.message, + url: getLocationHref() + }; + } + + computeStackTrace.augmentStackTraceWithInitialElement = augmentStackTraceWithInitialElement; + computeStackTrace.computeStackTraceFromStackProp = computeStackTraceFromStackProp; + return computeStackTrace; +}(); + +var tracekit = TraceKit; + +var stringify_1 = createCommonjsModule(function (module, exports) { + /* + json-stringify-safe + Like JSON.stringify, but doesn't throw on circular references. + + Originally forked from https://github.com/isaacs/json-stringify-safe + version 5.0.1 on 3/8/2017 and modified to handle Errors serialization + and IE8 compatibility. Tests for this are in test/vendor. + + ISC license: https://github.com/isaacs/json-stringify-safe/blob/master/LICENSE + */ + exports = module.exports = stringify; + exports.getSerialize = serializer; + + function indexOf(haystack, needle) { + for (var i = 0; i < haystack.length; ++i) { + if (haystack[i] === needle) return i; + } + + return -1; + } + + function stringify(obj, replacer, spaces, cycleReplacer) { + return JSON.stringify(obj, serializer(replacer, cycleReplacer), spaces); + } // https://github.com/ftlabs/js-abbreviate/blob/fa709e5f139e7770a71827b1893f22418097fbda/index.js#L95-L106 + + + function stringifyError(value) { + var err = { + // These properties are implemented as magical getters and don't show up in for in + stack: value.stack, + message: value.message, + name: value.name + }; + + for (var i in value) { + if (Object.prototype.hasOwnProperty.call(value, i)) { + err[i] = value[i]; + } + } + + return err; + } + + function serializer(replacer, cycleReplacer) { + var stack = []; + var keys = []; + + if (cycleReplacer == null) { + cycleReplacer = function cycleReplacer(key, value) { + if (stack[0] === value) { + return '[Circular ~]'; + } + + return '[Circular ~.' + keys.slice(0, indexOf(stack, value)).join('.') + ']'; + }; + } + + return function (key, value) { + if (stack.length > 0) { + var thisPos = indexOf(stack, this); + ~thisPos ? stack.splice(thisPos + 1) : stack.push(this); + ~thisPos ? keys.splice(thisPos, Infinity, key) : keys.push(key); + + if (~indexOf(stack, value)) { + value = cycleReplacer.call(this, key, value); + } + } else { + stack.push(value); + } + + return replacer == null ? value instanceof Error ? stringifyError(value) : value : replacer.call(this, key, value); + }; + } +}); +var stringify_2 = stringify_1.getSerialize; + +function RavenConfigError(message) { + this.name = 'RavenConfigError'; + this.message = message; +} + +RavenConfigError.prototype = new Error(); +RavenConfigError.prototype.constructor = RavenConfigError; +var configError = RavenConfigError; + +var wrapMethod = function wrapMethod(console, level, callback) { + var originalConsoleLevel = console[level]; + var originalConsole = console; + + if (!(level in console)) { + return; + } + + var sentryLevel = level === 'warn' ? 'warning' : level; + + console[level] = function () { + var args = [].slice.call(arguments); + var msg = utils.safeJoin(args, ' '); + var data = { + level: sentryLevel, + logger: 'console', + extra: { + arguments: args + } + }; + + if (level === 'assert') { + if (args[0] === false) { + // Default browsers message + msg = 'Assertion failed: ' + (utils.safeJoin(args.slice(1), ' ') || 'console.assert'); + data.extra.arguments = args.slice(1); + callback && callback(msg, data); + } + } else { + callback && callback(msg, data); + } // this fails for some browsers. :( + + + if (originalConsoleLevel) { + // IE9 doesn't allow calling apply on console functions directly + // See: https://stackoverflow.com/questions/5472938/does-ie9-support-console-log-and-is-it-a-real-function#answer-5473193 + Function.prototype.apply.call(originalConsoleLevel, originalConsole, args); + } + }; +}; + +var console$1 = { + wrapMethod: wrapMethod +}; + +/*global XDomainRequest:false */ + +var isError = utils.isError; +var isObject = utils.isObject; +var isErrorEvent = utils.isErrorEvent; +var isUndefined = utils.isUndefined; +var isFunction = utils.isFunction; +var isString = utils.isString; +var isArray = utils.isArray; +var isEmptyObject = utils.isEmptyObject; +var each = utils.each; +var objectMerge = utils.objectMerge; +var truncate = utils.truncate; +var objectFrozen = utils.objectFrozen; +var hasKey = utils.hasKey; +var joinRegExp = utils.joinRegExp; +var urlencode = utils.urlencode; +var uuid4 = utils.uuid4; +var htmlTreeAsString = utils.htmlTreeAsString; +var isSameException = utils.isSameException; +var isSameStacktrace = utils.isSameStacktrace; +var parseUrl = utils.parseUrl; +var fill = utils.fill; +var supportsFetch = utils.supportsFetch; +var wrapConsoleMethod = console$1.wrapMethod; +var dsnKeys = 'source protocol user pass host port path'.split(' '); +var dsnPattern = /^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/; + +function now() { + return +new Date(); +} // This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) + + +var _window$1 = typeof window !== 'undefined' ? window : typeof commonjsGlobal !== 'undefined' ? commonjsGlobal : typeof self !== 'undefined' ? self : {}; + +var _document = _window$1.document; +var _navigator = _window$1.navigator; + +function keepOriginalCallback(original, callback) { + return isFunction(callback) ? function (data) { + return callback(data, original); + } : callback; +} // First, check for JSON support +// If there is no JSON, we no-op the core features of Raven +// since JSON is required to encode the payload + + +function Raven$1() { + this._hasJSON = !!(_typeof(JSON) === 'object' && JSON.stringify); // Raven can run in contexts where there's no document (react-native) + + this._hasDocument = !isUndefined(_document); + this._hasNavigator = !isUndefined(_navigator); + this._lastCapturedException = null; + this._lastData = null; + this._lastEventId = null; + this._globalServer = null; + this._globalKey = null; + this._globalProject = null; + this._globalContext = {}; + this._globalOptions = { + // SENTRY_RELEASE can be injected by https://github.com/getsentry/sentry-webpack-plugin + release: _window$1.SENTRY_RELEASE && _window$1.SENTRY_RELEASE.id, + logger: 'javascript', + ignoreErrors: [], + ignoreUrls: [], + whitelistUrls: [], + includePaths: [], + headers: null, + collectWindowErrors: true, + maxMessageLength: 0, + // By default, truncates URL values to 250 chars + maxUrlLength: 250, + stackTraceLimit: 50, + autoBreadcrumbs: true, + instrument: true, + sampleRate: 1 + }; + this._fetchDefaults = { + method: 'POST', + keepalive: true, + referrerPolicy: 'origin' + }; + this._ignoreOnError = 0; + this._isRavenInstalled = false; + this._originalErrorStackTraceLimit = Error.stackTraceLimit; // capture references to window.console *and* all its methods first + // before the console plugin has a chance to monkey patch + + this._originalConsole = _window$1.console || {}; + this._originalConsoleMethods = {}; + this._plugins = []; + this._startTime = now(); + this._wrappedBuiltIns = []; + this._breadcrumbs = []; + this._lastCapturedEvent = null; + this._keypressTimeout; + this._location = _window$1.location; + this._lastHref = this._location && this._location.href; + + this._resetBackoff(); // eslint-disable-next-line guard-for-in + + + for (var method in this._originalConsole) { + this._originalConsoleMethods[method] = this._originalConsole[method]; + } +} +/* + * The core Raven singleton + * + * @this {Raven} + */ + + +Raven$1.prototype = { + // Hardcode version string so that raven source can be loaded directly via + // webpack (using a build step causes webpack #1617). Grunt verifies that + // this value matches package.json during build. + // See: https://github.com/getsentry/raven-js/issues/465 + VERSION: '3.22.2', + debug: false, + TraceKit: tracekit, + // alias to TraceKit + + /* + * Configure Raven with a DSN and extra options + * + * @param {string} dsn The public Sentry DSN + * @param {object} options Set of global options [optional] + * @return {Raven} + */ + config: function config(dsn, options) { + var self = this; + + if (self._globalServer) { + this._logDebug('error', 'Error: Raven has already been configured'); + + return self; + } + + if (!dsn) return self; + var globalOptions = self._globalOptions; // merge in options + + if (options) { + each(options, function (key, value) { + // tags and extra are special and need to be put into context + if (key === 'tags' || key === 'extra' || key === 'user') { + self._globalContext[key] = value; + } else { + globalOptions[key] = value; + } + }); + } + + self.setDSN(dsn); // "Script error." is hard coded into browsers for errors that it can't read. + // this is the result of a script being pulled in from an external domain and CORS. + + globalOptions.ignoreErrors.push(/^Script error\.?$/); + globalOptions.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/); // join regexp rules into one big rule + + globalOptions.ignoreErrors = joinRegExp(globalOptions.ignoreErrors); + globalOptions.ignoreUrls = globalOptions.ignoreUrls.length ? joinRegExp(globalOptions.ignoreUrls) : false; + globalOptions.whitelistUrls = globalOptions.whitelistUrls.length ? joinRegExp(globalOptions.whitelistUrls) : false; + globalOptions.includePaths = joinRegExp(globalOptions.includePaths); + globalOptions.maxBreadcrumbs = Math.max(0, Math.min(globalOptions.maxBreadcrumbs || 100, 100)); // default and hard limit is 100 + + var autoBreadcrumbDefaults = { + xhr: true, + console: true, + dom: true, + location: true, + sentry: true + }; + var autoBreadcrumbs = globalOptions.autoBreadcrumbs; + + if ({}.toString.call(autoBreadcrumbs) === '[object Object]') { + autoBreadcrumbs = objectMerge(autoBreadcrumbDefaults, autoBreadcrumbs); + } else if (autoBreadcrumbs !== false) { + autoBreadcrumbs = autoBreadcrumbDefaults; + } + + globalOptions.autoBreadcrumbs = autoBreadcrumbs; + var instrumentDefaults = { + tryCatch: true + }; + var instrument = globalOptions.instrument; + + if ({}.toString.call(instrument) === '[object Object]') { + instrument = objectMerge(instrumentDefaults, instrument); + } else if (instrument !== false) { + instrument = instrumentDefaults; + } + + globalOptions.instrument = instrument; + tracekit.collectWindowErrors = !!globalOptions.collectWindowErrors; // return for chaining + + return self; + }, + + /* + * Installs a global window.onerror error handler + * to capture and report uncaught exceptions. + * At this point, install() is required to be called due + * to the way TraceKit is set up. + * + * @return {Raven} + */ + install: function install() { + var self = this; + + if (self.isSetup() && !self._isRavenInstalled) { + tracekit.report.subscribe(function () { + self._handleOnErrorStackInfo.apply(self, arguments); + }); + + self._patchFunctionToString(); + + if (self._globalOptions.instrument && self._globalOptions.instrument.tryCatch) { + self._instrumentTryCatch(); + } + + if (self._globalOptions.autoBreadcrumbs) self._instrumentBreadcrumbs(); // Install all of the plugins + + self._drainPlugins(); + + self._isRavenInstalled = true; + } + + Error.stackTraceLimit = self._globalOptions.stackTraceLimit; + return this; + }, + + /* + * Set the DSN (can be called multiple time unlike config) + * + * @param {string} dsn The public Sentry DSN + */ + setDSN: function setDSN(dsn) { + var self = this, + uri = self._parseDSN(dsn), + lastSlash = uri.path.lastIndexOf('/'), + path = uri.path.substr(1, lastSlash); + + self._dsn = dsn; + self._globalKey = uri.user; + self._globalSecret = uri.pass && uri.pass.substr(1); + self._globalProject = uri.path.substr(lastSlash + 1); + self._globalServer = self._getGlobalServer(uri); + self._globalEndpoint = self._globalServer + '/' + path + 'api/' + self._globalProject + '/store/'; // Reset backoff state since we may be pointing at a + // new project/server + + this._resetBackoff(); + }, + + /* + * Wrap code within a context so Raven can capture errors + * reliably across domains that is executed immediately. + * + * @param {object} options A specific set of options for this context [optional] + * @param {function} func The callback to be immediately executed within the context + * @param {array} args An array of arguments to be called with the callback [optional] + */ + context: function context(options, func, args) { + if (isFunction(options)) { + args = func || []; + func = options; + options = undefined; + } + + return this.wrap(options, func).apply(this, args); + }, + + /* + * Wrap code within a context and returns back a new function to be executed + * + * @param {object} options A specific set of options for this context [optional] + * @param {function} func The function to be wrapped in a new context + * @param {function} func A function to call before the try/catch wrapper [optional, private] + * @return {function} The newly wrapped functions with a context + */ + wrap: function wrap(options, func, _before) { + var self = this; // 1 argument has been passed, and it's not a function + // so just return it + + if (isUndefined(func) && !isFunction(options)) { + return options; + } // options is optional + + + if (isFunction(options)) { + func = options; + options = undefined; + } // At this point, we've passed along 2 arguments, and the second one + // is not a function either, so we'll just return the second argument. + + + if (!isFunction(func)) { + return func; + } // We don't wanna wrap it twice! + + + try { + if (func.__raven__) { + return func; + } // If this has already been wrapped in the past, return that + + + if (func.__raven_wrapper__) { + return func.__raven_wrapper__; + } + } catch (e) { + // Just accessing custom props in some Selenium environments + // can cause a "Permission denied" exception (see raven-js#495). + // Bail on wrapping and return the function as-is (defers to window.onerror). + return func; + } + + function wrapped() { + var args = [], + i = arguments.length, + deep = !options || options && options.deep !== false; + + if (_before && isFunction(_before)) { + _before.apply(this, arguments); + } // Recursively wrap all of a function's arguments that are + // functions themselves. + + + while (i--) { + args[i] = deep ? self.wrap(options, arguments[i]) : arguments[i]; + } + + try { + // Attempt to invoke user-land function + // NOTE: If you are a Sentry user, and you are seeing this stack frame, it + // means Raven caught an error invoking your application code. This is + // expected behavior and NOT indicative of a bug with Raven.js. + return func.apply(this, args); + } catch (e) { + self._ignoreNextOnError(); + + self.captureException(e, options); + throw e; + } + } // copy over properties of the old function + + + for (var property in func) { + if (hasKey(func, property)) { + wrapped[property] = func[property]; + } + } + + wrapped.prototype = func.prototype; + func.__raven_wrapper__ = wrapped; // Signal that this function has been wrapped/filled already + // for both debugging and to prevent it to being wrapped/filled twice + + wrapped.__raven__ = true; + wrapped.__orig__ = func; + return wrapped; + }, + + /* + * Uninstalls the global error handler. + * + * @return {Raven} + */ + uninstall: function uninstall() { + tracekit.report.uninstall(); + + this._unpatchFunctionToString(); + + this._restoreBuiltIns(); + + this._restoreConsole(); + + Error.stackTraceLimit = this._originalErrorStackTraceLimit; + this._isRavenInstalled = false; + return this; + }, + + /* + * Manually capture an exception and send it over to Sentry + * + * @param {error} ex An exception to be logged + * @param {object} options A specific set of options for this error [optional] + * @return {Raven} + */ + captureException: function captureException(ex, options) { + options = objectMerge({ + trimHeadFrames: 0 + }, options ? options : {}); // Cases for sending ex as a message, rather than an exception + + var isNotError = !isError(ex); + var isNotErrorEvent = !isErrorEvent(ex); + var isErrorEventWithoutError = isErrorEvent(ex) && !ex.error; + + if (isNotError && isNotErrorEvent || isErrorEventWithoutError) { + return this.captureMessage(ex, objectMerge(options, { + stacktrace: true, + // if we fall back to captureMessage, default to attempting a new trace + trimHeadFrames: options.trimHeadFrames + 1 + })); + } // Get actual Error from ErrorEvent + + + if (isErrorEvent(ex)) ex = ex.error; // Store the raw exception object for potential debugging and introspection + + this._lastCapturedException = ex; // TraceKit.report will re-raise any exception passed to it, + // which means you have to wrap it in try/catch. Instead, we + // can wrap it here and only re-raise if TraceKit.report + // raises an exception different from the one we asked to + // report on. + + try { + var stack = tracekit.computeStackTrace(ex); + + this._handleStackInfo(stack, options); + } catch (ex1) { + if (ex !== ex1) { + throw ex1; + } + } + + return this; + }, + + /* + * Manually send a message to Sentry + * + * @param {string} msg A plain message to be captured in Sentry + * @param {object} options A specific set of options for this message [optional] + * @return {Raven} + */ + captureMessage: function captureMessage(msg, options) { + // config() automagically converts ignoreErrors from a list to a RegExp so we need to test for an + // early call; we'll error on the side of logging anything called before configuration since it's + // probably something you should see: + if (!!this._globalOptions.ignoreErrors.test && this._globalOptions.ignoreErrors.test(msg)) { + return; + } + + options = options || {}; + var data = objectMerge({ + message: msg + '' // Make sure it's actually a string + + }, options); + var ex; // Generate a "synthetic" stack trace from this point. + // NOTE: If you are a Sentry user, and you are seeing this stack frame, it is NOT indicative + // of a bug with Raven.js. Sentry generates synthetic traces either by configuration, + // or if it catches a thrown object without a "stack" property. + + try { + throw new Error(msg); + } catch (ex1) { + ex = ex1; + } // null exception name so `Error` isn't prefixed to msg + + + ex.name = null; + var stack = tracekit.computeStackTrace(ex); // stack[0] is `throw new Error(msg)` call itself, we are interested in the frame that was just before that, stack[1] + + var initialCall = isArray(stack.stack) && stack.stack[1]; + var fileurl = initialCall && initialCall.url || ''; + + if (!!this._globalOptions.ignoreUrls.test && this._globalOptions.ignoreUrls.test(fileurl)) { + return; + } + + if (!!this._globalOptions.whitelistUrls.test && !this._globalOptions.whitelistUrls.test(fileurl)) { + return; + } + + if (this._globalOptions.stacktrace || options && options.stacktrace) { + options = objectMerge({ + // fingerprint on msg, not stack trace (legacy behavior, could be + // revisited) + fingerprint: msg, + // since we know this is a synthetic trace, the top N-most frames + // MUST be from Raven.js, so mark them as in_app later by setting + // trimHeadFrames + trimHeadFrames: (options.trimHeadFrames || 0) + 1 + }, options); + + var frames = this._prepareFrames(stack, options); + + data.stacktrace = { + // Sentry expects frames oldest to newest + frames: frames.reverse() + }; + } // Fire away! + + + this._send(data); + + return this; + }, + captureBreadcrumb: function captureBreadcrumb(obj) { + var crumb = objectMerge({ + timestamp: now() / 1000 + }, obj); + + if (isFunction(this._globalOptions.breadcrumbCallback)) { + var result = this._globalOptions.breadcrumbCallback(crumb); + + if (isObject(result) && !isEmptyObject(result)) { + crumb = result; + } else if (result === false) { + return this; + } + } + + this._breadcrumbs.push(crumb); + + if (this._breadcrumbs.length > this._globalOptions.maxBreadcrumbs) { + this._breadcrumbs.shift(); + } + + return this; + }, + addPlugin: function addPlugin(plugin + /*arg1, arg2, ... argN*/ + ) { + var pluginArgs = [].slice.call(arguments, 1); + + this._plugins.push([plugin, pluginArgs]); + + if (this._isRavenInstalled) { + this._drainPlugins(); + } + + return this; + }, + + /* + * Set/clear a user to be sent along with the payload. + * + * @param {object} user An object representing user data [optional] + * @return {Raven} + */ + setUserContext: function setUserContext(user) { + // Intentionally do not merge here since that's an unexpected behavior. + this._globalContext.user = user; + return this; + }, + + /* + * Merge extra attributes to be sent along with the payload. + * + * @param {object} extra An object representing extra data [optional] + * @return {Raven} + */ + setExtraContext: function setExtraContext(extra) { + this._mergeContext('extra', extra); + + return this; + }, + + /* + * Merge tags to be sent along with the payload. + * + * @param {object} tags An object representing tags [optional] + * @return {Raven} + */ + setTagsContext: function setTagsContext(tags) { + this._mergeContext('tags', tags); + + return this; + }, + + /* + * Clear all of the context. + * + * @return {Raven} + */ + clearContext: function clearContext() { + this._globalContext = {}; + return this; + }, + + /* + * Get a copy of the current context. This cannot be mutated. + * + * @return {object} copy of context + */ + getContext: function getContext() { + // lol javascript + return JSON.parse(stringify_1(this._globalContext)); + }, + + /* + * Set environment of application + * + * @param {string} environment Typically something like 'production'. + * @return {Raven} + */ + setEnvironment: function setEnvironment(environment) { + this._globalOptions.environment = environment; + return this; + }, + + /* + * Set release version of application + * + * @param {string} release Typically something like a git SHA to identify version + * @return {Raven} + */ + setRelease: function setRelease(release) { + this._globalOptions.release = release; + return this; + }, + + /* + * Set the dataCallback option + * + * @param {function} callback The callback to run which allows the + * data blob to be mutated before sending + * @return {Raven} + */ + setDataCallback: function setDataCallback(callback) { + var original = this._globalOptions.dataCallback; + this._globalOptions.dataCallback = keepOriginalCallback(original, callback); + return this; + }, + + /* + * Set the breadcrumbCallback option + * + * @param {function} callback The callback to run which allows filtering + * or mutating breadcrumbs + * @return {Raven} + */ + setBreadcrumbCallback: function setBreadcrumbCallback(callback) { + var original = this._globalOptions.breadcrumbCallback; + this._globalOptions.breadcrumbCallback = keepOriginalCallback(original, callback); + return this; + }, + + /* + * Set the shouldSendCallback option + * + * @param {function} callback The callback to run which allows + * introspecting the blob before sending + * @return {Raven} + */ + setShouldSendCallback: function setShouldSendCallback(callback) { + var original = this._globalOptions.shouldSendCallback; + this._globalOptions.shouldSendCallback = keepOriginalCallback(original, callback); + return this; + }, + + /** + * Override the default HTTP transport mechanism that transmits data + * to the Sentry server. + * + * @param {function} transport Function invoked instead of the default + * `makeRequest` handler. + * + * @return {Raven} + */ + setTransport: function setTransport(transport) { + this._globalOptions.transport = transport; + return this; + }, + + /* + * Get the latest raw exception that was captured by Raven. + * + * @return {error} + */ + lastException: function lastException() { + return this._lastCapturedException; + }, + + /* + * Get the last event id + * + * @return {string} + */ + lastEventId: function lastEventId() { + return this._lastEventId; + }, + + /* + * Determine if Raven is setup and ready to go. + * + * @return {boolean} + */ + isSetup: function isSetup() { + if (!this._hasJSON) return false; // needs JSON support + + if (!this._globalServer) { + if (!this.ravenNotConfiguredError) { + this.ravenNotConfiguredError = true; + + this._logDebug('error', 'Error: Raven has not been configured.'); + } + + return false; + } + + return true; + }, + afterLoad: function afterLoad() { + // TODO: remove window dependence? + // Attempt to initialize Raven on load + var RavenConfig = _window$1.RavenConfig; + + if (RavenConfig) { + this.config(RavenConfig.dsn, RavenConfig.config).install(); + } + }, + showReportDialog: function showReportDialog(options) { + if (!_document // doesn't work without a document (React native) + ) return; + options = options || {}; + var lastEventId = options.eventId || this.lastEventId(); + + if (!lastEventId) { + throw new configError('Missing eventId'); + } + + var dsn = options.dsn || this._dsn; + + if (!dsn) { + throw new configError('Missing DSN'); + } + + var encode = encodeURIComponent; + var qs = ''; + qs += '?eventId=' + encode(lastEventId); + qs += '&dsn=' + encode(dsn); + var user = options.user || this._globalContext.user; + + if (user) { + if (user.name) qs += '&name=' + encode(user.name); + if (user.email) qs += '&email=' + encode(user.email); + } + + var globalServer = this._getGlobalServer(this._parseDSN(dsn)); + + var script = _document.createElement('script'); + + script.async = true; + script.src = globalServer + '/api/embed/error-page/' + qs; + + (_document.head || _document.body).appendChild(script); + }, + + /**** Private functions ****/ + _ignoreNextOnError: function _ignoreNextOnError() { + var self = this; + this._ignoreOnError += 1; + setTimeout(function () { + // onerror should trigger before setTimeout + self._ignoreOnError -= 1; + }); + }, + _triggerEvent: function _triggerEvent(eventType, options) { + // NOTE: `event` is a native browser thing, so let's avoid conflicting wiht it + var evt, key; + if (!this._hasDocument) return; + options = options || {}; + eventType = 'raven' + eventType.substr(0, 1).toUpperCase() + eventType.substr(1); + + if (_document.createEvent) { + evt = _document.createEvent('HTMLEvents'); + evt.initEvent(eventType, true, true); + } else { + evt = _document.createEventObject(); + evt.eventType = eventType; + } + + for (key in options) { + if (hasKey(options, key)) { + evt[key] = options[key]; + } + } + + if (_document.createEvent) { + // IE9 if standards + _document.dispatchEvent(evt); + } else { + // IE8 regardless of Quirks or Standards + // IE9 if quirks + try { + _document.fireEvent('on' + evt.eventType.toLowerCase(), evt); + } catch (e) {// Do nothing + } + } + }, + + /** + * Wraps addEventListener to capture UI breadcrumbs + * @param evtName the event name (e.g. "click") + * @returns {Function} + * @private + */ + _breadcrumbEventHandler: function _breadcrumbEventHandler(evtName) { + var self = this; + return function (evt) { + // reset keypress timeout; e.g. triggering a 'click' after + // a 'keypress' will reset the keypress debounce so that a new + // set of keypresses can be recorded + self._keypressTimeout = null; // It's possible this handler might trigger multiple times for the same + // event (e.g. event propagation through node ancestors). Ignore if we've + // already captured the event. + + if (self._lastCapturedEvent === evt) return; + self._lastCapturedEvent = evt; // try/catch both: + // - accessing evt.target (see getsentry/raven-js#838, #768) + // - `htmlTreeAsString` because it's complex, and just accessing the DOM incorrectly + // can throw an exception in some circumstances. + + var target; + + try { + target = htmlTreeAsString(evt.target); + } catch (e) { + target = ''; + } + + self.captureBreadcrumb({ + category: 'ui.' + evtName, + // e.g. ui.click, ui.input + message: target + }); + }; + }, + + /** + * Wraps addEventListener to capture keypress UI events + * @returns {Function} + * @private + */ + _keypressEventHandler: function _keypressEventHandler() { + var self = this, + debounceDuration = 1000; // milliseconds + // TODO: if somehow user switches keypress target before + // debounce timeout is triggered, we will only capture + // a single breadcrumb from the FIRST target (acceptable?) + + return function (evt) { + var target; + + try { + target = evt.target; + } catch (e) { + // just accessing event properties can throw an exception in some rare circumstances + // see: https://github.com/getsentry/raven-js/issues/838 + return; + } + + var tagName = target && target.tagName; // only consider keypress events on actual input elements + // this will disregard keypresses targeting body (e.g. tabbing + // through elements, hotkeys, etc) + + if (!tagName || tagName !== 'INPUT' && tagName !== 'TEXTAREA' && !target.isContentEditable) return; // record first keypress in a series, but ignore subsequent + // keypresses until debounce clears + + var timeout = self._keypressTimeout; + + if (!timeout) { + self._breadcrumbEventHandler('input')(evt); + } + + clearTimeout(timeout); + self._keypressTimeout = setTimeout(function () { + self._keypressTimeout = null; + }, debounceDuration); + }; + }, + + /** + * Captures a breadcrumb of type "navigation", normalizing input URLs + * @param to the originating URL + * @param from the target URL + * @private + */ + _captureUrlChange: function _captureUrlChange(from, to) { + var parsedLoc = parseUrl(this._location.href); + var parsedTo = parseUrl(to); + var parsedFrom = parseUrl(from); // because onpopstate only tells you the "new" (to) value of location.href, and + // not the previous (from) value, we need to track the value of the current URL + // state ourselves + + this._lastHref = to; // Use only the path component of the URL if the URL matches the current + // document (almost all the time when using pushState) + + if (parsedLoc.protocol === parsedTo.protocol && parsedLoc.host === parsedTo.host) to = parsedTo.relative; + if (parsedLoc.protocol === parsedFrom.protocol && parsedLoc.host === parsedFrom.host) from = parsedFrom.relative; + this.captureBreadcrumb({ + category: 'navigation', + data: { + to: to, + from: from + } + }); + }, + _patchFunctionToString: function _patchFunctionToString() { + var self = this; + self._originalFunctionToString = Function.prototype.toString; // eslint-disable-next-line no-extend-native + + Function.prototype.toString = function () { + if (typeof this === 'function' && this.__raven__) { + return self._originalFunctionToString.apply(this.__orig__, arguments); + } + + return self._originalFunctionToString.apply(this, arguments); + }; + }, + _unpatchFunctionToString: function _unpatchFunctionToString() { + if (this._originalFunctionToString) { + // eslint-disable-next-line no-extend-native + Function.prototype.toString = this._originalFunctionToString; + } + }, + + /** + * Wrap timer functions and event targets to catch errors and provide + * better metadata. + */ + _instrumentTryCatch: function _instrumentTryCatch() { + var self = this; + var wrappedBuiltIns = self._wrappedBuiltIns; + + function wrapTimeFn(orig) { + return function (fn, t) { + // preserve arity + // Make a copy of the arguments to prevent deoptimization + // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments + var args = new Array(arguments.length); + + for (var i = 0; i < args.length; ++i) { + args[i] = arguments[i]; + } + + var originalCallback = args[0]; + + if (isFunction(originalCallback)) { + args[0] = self.wrap(originalCallback); + } // IE < 9 doesn't support .call/.apply on setInterval/setTimeout, but it + // also supports only two arguments and doesn't care what this is, so we + // can just call the original function directly. + + + if (orig.apply) { + return orig.apply(this, args); + } else { + return orig(args[0], args[1]); + } + }; + } + + var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; + + function wrapEventTarget(global) { + var proto = _window$1[global] && _window$1[global].prototype; + + if (proto && proto.hasOwnProperty && proto.hasOwnProperty('addEventListener')) { + fill(proto, 'addEventListener', function (orig) { + return function (evtName, fn, capture, secure) { + // preserve arity + try { + if (fn && fn.handleEvent) { + fn.handleEvent = self.wrap(fn.handleEvent); + } + } catch (err) {} // can sometimes get 'Permission denied to access property "handle Event' + // More breadcrumb DOM capture ... done here and not in `_instrumentBreadcrumbs` + // so that we don't have more than one wrapper function + + + var before, clickHandler, keypressHandler; + + if (autoBreadcrumbs && autoBreadcrumbs.dom && (global === 'EventTarget' || global === 'Node')) { + // NOTE: generating multiple handlers per addEventListener invocation, should + // revisit and verify we can just use one (almost certainly) + clickHandler = self._breadcrumbEventHandler('click'); + keypressHandler = self._keypressEventHandler(); + + before = function before(evt) { + // need to intercept every DOM event in `before` argument, in case that + // same wrapped method is re-used for different events (e.g. mousemove THEN click) + // see #724 + if (!evt) return; + var eventType; + + try { + eventType = evt.type; + } catch (e) { + // just accessing event properties can throw an exception in some rare circumstances + // see: https://github.com/getsentry/raven-js/issues/838 + return; + } + + if (eventType === 'click') return clickHandler(evt);else if (eventType === 'keypress') return keypressHandler(evt); + }; + } + + return orig.call(this, evtName, self.wrap(fn, undefined, before), capture, secure); + }; + }, wrappedBuiltIns); + fill(proto, 'removeEventListener', function (orig) { + return function (evt, fn, capture, secure) { + try { + fn = fn && (fn.__raven_wrapper__ ? fn.__raven_wrapper__ : fn); + } catch (e) {// ignore, accessing __raven_wrapper__ will throw in some Selenium environments + } + + return orig.call(this, evt, fn, capture, secure); + }; + }, wrappedBuiltIns); + } + } + + fill(_window$1, 'setTimeout', wrapTimeFn, wrappedBuiltIns); + fill(_window$1, 'setInterval', wrapTimeFn, wrappedBuiltIns); + + if (_window$1.requestAnimationFrame) { + fill(_window$1, 'requestAnimationFrame', function (orig) { + return function (cb) { + return orig(self.wrap(cb)); + }; + }, wrappedBuiltIns); + } // event targets borrowed from bugsnag-js: + // https://github.com/bugsnag/bugsnag-js/blob/master/src/bugsnag.js#L666 + + + var eventTargets = ['EventTarget', 'Window', 'Node', 'ApplicationCache', 'AudioTrackList', 'ChannelMergerNode', 'CryptoOperation', 'EventSource', 'FileReader', 'HTMLUnknownElement', 'IDBDatabase', 'IDBRequest', 'IDBTransaction', 'KeyOperation', 'MediaController', 'MessagePort', 'ModalWindow', 'Notification', 'SVGElementInstance', 'Screen', 'TextTrack', 'TextTrackCue', 'TextTrackList', 'WebSocket', 'WebSocketWorker', 'Worker', 'XMLHttpRequest', 'XMLHttpRequestEventTarget', 'XMLHttpRequestUpload']; + + for (var i = 0; i < eventTargets.length; i++) { + wrapEventTarget(eventTargets[i]); + } + }, + + /** + * Instrument browser built-ins w/ breadcrumb capturing + * - XMLHttpRequests + * - DOM interactions (click/typing) + * - window.location changes + * - console + * + * Can be disabled or individually configured via the `autoBreadcrumbs` config option + */ + _instrumentBreadcrumbs: function _instrumentBreadcrumbs() { + var self = this; + var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; + var wrappedBuiltIns = self._wrappedBuiltIns; + + function wrapProp(prop, xhr) { + if (prop in xhr && isFunction(xhr[prop])) { + fill(xhr, prop, function (orig) { + return self.wrap(orig); + }); // intentionally don't track filled methods on XHR instances + } + } + + if (autoBreadcrumbs.xhr && 'XMLHttpRequest' in _window$1) { + var xhrproto = XMLHttpRequest.prototype; + fill(xhrproto, 'open', function (origOpen) { + return function (method, url) { + // preserve arity + // if Sentry key appears in URL, don't capture + if (isString(url) && url.indexOf(self._globalKey) === -1) { + this.__raven_xhr = { + method: method, + url: url, + status_code: null + }; + } + + return origOpen.apply(this, arguments); + }; + }, wrappedBuiltIns); + fill(xhrproto, 'send', function (origSend) { + return function () { + // preserve arity + var xhr = this; + + function onreadystatechangeHandler() { + if (xhr.__raven_xhr && xhr.readyState === 4) { + try { + // touching statusCode in some platforms throws + // an exception + xhr.__raven_xhr.status_code = xhr.status; + } catch (e) { + /* do nothing */ + } + + self.captureBreadcrumb({ + type: 'http', + category: 'xhr', + data: xhr.__raven_xhr + }); + } + } + + var props = ['onload', 'onerror', 'onprogress']; + + for (var j = 0; j < props.length; j++) { + wrapProp(props[j], xhr); + } + + if ('onreadystatechange' in xhr && isFunction(xhr.onreadystatechange)) { + fill(xhr, 'onreadystatechange', function (orig) { + return self.wrap(orig, undefined, onreadystatechangeHandler); + } + /* intentionally don't track this instrumentation */ + ); + } else { + // if onreadystatechange wasn't actually set by the page on this xhr, we + // are free to set our own and capture the breadcrumb + xhr.onreadystatechange = onreadystatechangeHandler; + } + + return origSend.apply(this, arguments); + }; + }, wrappedBuiltIns); + } + + if (autoBreadcrumbs.xhr && supportsFetch()) { + fill(_window$1, 'fetch', function (origFetch) { + return function () { + // preserve arity + // Make a copy of the arguments to prevent deoptimization + // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments + var args = new Array(arguments.length); + + for (var i = 0; i < args.length; ++i) { + args[i] = arguments[i]; + } + + var fetchInput = args[0]; + var method = 'GET'; + var url; + + if (typeof fetchInput === 'string') { + url = fetchInput; + } else if ('Request' in _window$1 && fetchInput instanceof _window$1.Request) { + url = fetchInput.url; + + if (fetchInput.method) { + method = fetchInput.method; + } + } else { + url = '' + fetchInput; + } // if Sentry key appears in URL, don't capture, as it's our own request + + + if (url.indexOf(self._globalKey) !== -1) { + return origFetch.apply(this, args); + } + + if (args[1] && args[1].method) { + method = args[1].method; + } + + var fetchData = { + method: method, + url: url, + status_code: null + }; + return origFetch.apply(this, args).then(function (response) { + fetchData.status_code = response.status; + self.captureBreadcrumb({ + type: 'http', + category: 'fetch', + data: fetchData + }); + return response; + }); + }; + }, wrappedBuiltIns); + } // Capture breadcrumbs from any click that is unhandled / bubbled up all the way + // to the document. Do this before we instrument addEventListener. + + + if (autoBreadcrumbs.dom && this._hasDocument) { + if (_document.addEventListener) { + _document.addEventListener('click', self._breadcrumbEventHandler('click'), false); + + _document.addEventListener('keypress', self._keypressEventHandler(), false); + } else { + // IE8 Compatibility + _document.attachEvent('onclick', self._breadcrumbEventHandler('click')); + + _document.attachEvent('onkeypress', self._keypressEventHandler()); + } + } // record navigation (URL) changes + // NOTE: in Chrome App environment, touching history.pushState, *even inside + // a try/catch block*, will cause Chrome to output an error to console.error + // borrowed from: https://github.com/angular/angular.js/pull/13945/files + + + var chrome = _window$1.chrome; + var isChromePackagedApp = chrome && chrome.app && chrome.app.runtime; + var hasPushAndReplaceState = !isChromePackagedApp && _window$1.history && history.pushState && history.replaceState; + + if (autoBreadcrumbs.location && hasPushAndReplaceState) { + // TODO: remove onpopstate handler on uninstall() + var oldOnPopState = _window$1.onpopstate; + + _window$1.onpopstate = function () { + var currentHref = self._location.href; + + self._captureUrlChange(self._lastHref, currentHref); + + if (oldOnPopState) { + return oldOnPopState.apply(this, arguments); + } + }; + + var historyReplacementFunction = function historyReplacementFunction(origHistFunction) { + // note history.pushState.length is 0; intentionally not declaring + // params to preserve 0 arity + return function () + /* state, title, url */ + { + var url = arguments.length > 2 ? arguments[2] : undefined; // url argument is optional + + if (url) { + // coerce to string (this is what pushState does) + self._captureUrlChange(self._lastHref, url + ''); + } + + return origHistFunction.apply(this, arguments); + }; + }; + + fill(history, 'pushState', historyReplacementFunction, wrappedBuiltIns); + fill(history, 'replaceState', historyReplacementFunction, wrappedBuiltIns); + } + + if (autoBreadcrumbs.console && 'console' in _window$1 && console.log) { + // console + var consoleMethodCallback = function consoleMethodCallback(msg, data) { + self.captureBreadcrumb({ + message: msg, + level: data.level, + category: 'console' + }); + }; + + each(['debug', 'info', 'warn', 'error', 'log'], function (_, level) { + wrapConsoleMethod(console, level, consoleMethodCallback); + }); + } + }, + _restoreBuiltIns: function _restoreBuiltIns() { + // restore any wrapped builtins + var builtin; + + while (this._wrappedBuiltIns.length) { + builtin = this._wrappedBuiltIns.shift(); + var obj = builtin[0], + name = builtin[1], + orig = builtin[2]; + obj[name] = orig; + } + }, + _restoreConsole: function _restoreConsole() { + // eslint-disable-next-line guard-for-in + for (var method in this._originalConsoleMethods) { + this._originalConsole[method] = this._originalConsoleMethods[method]; + } + }, + _drainPlugins: function _drainPlugins() { + var self = this; // FIX ME TODO + + each(this._plugins, function (_, plugin) { + var installer = plugin[0]; + var args = plugin[1]; + installer.apply(self, [self].concat(args)); + }); + }, + _parseDSN: function _parseDSN(str) { + var m = dsnPattern.exec(str), + dsn = {}, + i = 7; + + try { + while (i--) { + dsn[dsnKeys[i]] = m[i] || ''; + } + } catch (e) { + throw new configError('Invalid DSN: ' + str); + } + + if (dsn.pass && !this._globalOptions.allowSecretKey) { + throw new configError('Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key'); + } + + return dsn; + }, + _getGlobalServer: function _getGlobalServer(uri) { + // assemble the endpoint from the uri pieces + var globalServer = '//' + uri.host + (uri.port ? ':' + uri.port : ''); + + if (uri.protocol) { + globalServer = uri.protocol + ':' + globalServer; + } + + return globalServer; + }, + _handleOnErrorStackInfo: function _handleOnErrorStackInfo() { + // if we are intentionally ignoring errors via onerror, bail out + if (!this._ignoreOnError) { + this._handleStackInfo.apply(this, arguments); + } + }, + _handleStackInfo: function _handleStackInfo(stackInfo, options) { + var frames = this._prepareFrames(stackInfo, options); + + this._triggerEvent('handle', { + stackInfo: stackInfo, + options: options + }); + + this._processException(stackInfo.name, stackInfo.message, stackInfo.url, stackInfo.lineno, frames, options); + }, + _prepareFrames: function _prepareFrames(stackInfo, options) { + var self = this; + var frames = []; + + if (stackInfo.stack && stackInfo.stack.length) { + each(stackInfo.stack, function (i, stack) { + var frame = self._normalizeFrame(stack, stackInfo.url); + + if (frame) { + frames.push(frame); + } + }); // e.g. frames captured via captureMessage throw + + if (options && options.trimHeadFrames) { + for (var j = 0; j < options.trimHeadFrames && j < frames.length; j++) { + frames[j].in_app = false; + } + } + } + + frames = frames.slice(0, this._globalOptions.stackTraceLimit); + return frames; + }, + _normalizeFrame: function _normalizeFrame(frame, stackInfoUrl) { + // normalize the frames data + var normalized = { + filename: frame.url, + lineno: frame.line, + colno: frame.column, + function: frame.func || '?' + }; // Case when we don't have any information about the error + // E.g. throwing a string or raw object, instead of an `Error` in Firefox + // Generating synthetic error doesn't add any value here + // + // We should probably somehow let a user know that they should fix their code + + if (!frame.url) { + normalized.filename = stackInfoUrl; // fallback to whole stacks url from onerror handler + } + + normalized.in_app = !( // determine if an exception came from outside of our app + // first we check the global includePaths list. + !!this._globalOptions.includePaths.test && !this._globalOptions.includePaths.test(normalized.filename) || // Now we check for fun, if the function name is Raven or TraceKit + /(Raven|TraceKit)\./.test(normalized['function']) || // finally, we do a last ditch effort and check for raven.min.js + /raven\.(min\.)?js$/.test(normalized.filename)); + return normalized; + }, + _processException: function _processException(type, message, fileurl, lineno, frames, options) { + var prefixedMessage = (type ? type + ': ' : '') + (message || ''); + + if (!!this._globalOptions.ignoreErrors.test && (this._globalOptions.ignoreErrors.test(message) || this._globalOptions.ignoreErrors.test(prefixedMessage))) { + return; + } + + var stacktrace; + + if (frames && frames.length) { + fileurl = frames[0].filename || fileurl; // Sentry expects frames oldest to newest + // and JS sends them as newest to oldest + + frames.reverse(); + stacktrace = { + frames: frames + }; + } else if (fileurl) { + stacktrace = { + frames: [{ + filename: fileurl, + lineno: lineno, + in_app: true + }] + }; + } + + if (!!this._globalOptions.ignoreUrls.test && this._globalOptions.ignoreUrls.test(fileurl)) { + return; + } + + if (!!this._globalOptions.whitelistUrls.test && !this._globalOptions.whitelistUrls.test(fileurl)) { + return; + } + + var data = objectMerge({ + // sentry.interfaces.Exception + exception: { + values: [{ + type: type, + value: message, + stacktrace: stacktrace + }] + }, + culprit: fileurl + }, options); // Fire away! + + this._send(data); + }, + _trimPacket: function _trimPacket(data) { + // For now, we only want to truncate the two different messages + // but this could/should be expanded to just trim everything + var max = this._globalOptions.maxMessageLength; + + if (data.message) { + data.message = truncate(data.message, max); + } + + if (data.exception) { + var exception = data.exception.values[0]; + exception.value = truncate(exception.value, max); + } + + var request = data.request; + + if (request) { + if (request.url) { + request.url = truncate(request.url, this._globalOptions.maxUrlLength); + } + + if (request.Referer) { + request.Referer = truncate(request.Referer, this._globalOptions.maxUrlLength); + } + } + + if (data.breadcrumbs && data.breadcrumbs.values) this._trimBreadcrumbs(data.breadcrumbs); + return data; + }, + + /** + * Truncate breadcrumb values (right now just URLs) + */ + _trimBreadcrumbs: function _trimBreadcrumbs(breadcrumbs) { + // known breadcrumb properties with urls + // TODO: also consider arbitrary prop values that start with (https?)?:// + var urlProps = ['to', 'from', 'url'], + urlProp, + crumb, + data; + + for (var i = 0; i < breadcrumbs.values.length; ++i) { + crumb = breadcrumbs.values[i]; + if (!crumb.hasOwnProperty('data') || !isObject(crumb.data) || objectFrozen(crumb.data)) continue; + data = objectMerge({}, crumb.data); + + for (var j = 0; j < urlProps.length; ++j) { + urlProp = urlProps[j]; + + if (data.hasOwnProperty(urlProp) && data[urlProp]) { + data[urlProp] = truncate(data[urlProp], this._globalOptions.maxUrlLength); + } + } + + breadcrumbs.values[i].data = data; + } + }, + _getHttpData: function _getHttpData() { + if (!this._hasNavigator && !this._hasDocument) return; + var httpData = {}; + + if (this._hasNavigator && _navigator.userAgent) { + httpData.headers = { + 'User-Agent': navigator.userAgent + }; + } // Check in `window` instead of `document`, as we may be in ServiceWorker environment + + + if (_window$1.location && _window$1.location.href) { + httpData.url = _window$1.location.href; + } + + if (this._hasDocument && _document.referrer) { + if (!httpData.headers) httpData.headers = {}; + httpData.headers.Referer = _document.referrer; + } + + return httpData; + }, + _resetBackoff: function _resetBackoff() { + this._backoffDuration = 0; + this._backoffStart = null; + }, + _shouldBackoff: function _shouldBackoff() { + return this._backoffDuration && now() - this._backoffStart < this._backoffDuration; + }, + + /** + * Returns true if the in-process data payload matches the signature + * of the previously-sent data + * + * NOTE: This has to be done at this level because TraceKit can generate + * data from window.onerror WITHOUT an exception object (IE8, IE9, + * other old browsers). This can take the form of an "exception" + * data object with a single frame (derived from the onerror args). + */ + _isRepeatData: function _isRepeatData(current) { + var last = this._lastData; + if (!last || current.message !== last.message || // defined for captureMessage + current.culprit !== last.culprit // defined for captureException/onerror + ) return false; // Stacktrace interface (i.e. from captureMessage) + + if (current.stacktrace || last.stacktrace) { + return isSameStacktrace(current.stacktrace, last.stacktrace); + } else if (current.exception || last.exception) { + // Exception interface (i.e. from captureException/onerror) + return isSameException(current.exception, last.exception); + } + + return true; + }, + _setBackoffState: function _setBackoffState(request) { + // If we are already in a backoff state, don't change anything + if (this._shouldBackoff()) { + return; + } + + var status = request.status; // 400 - project_id doesn't exist or some other fatal + // 401 - invalid/revoked dsn + // 429 - too many requests + + if (!(status === 400 || status === 401 || status === 429)) return; + var retry; + + try { + // If Retry-After is not in Access-Control-Expose-Headers, most + // browsers will throw an exception trying to access it + if (supportsFetch()) { + retry = request.headers.get('Retry-After'); + } else { + retry = request.getResponseHeader('Retry-After'); + } // Retry-After is returned in seconds + + + retry = parseInt(retry, 10) * 1000; + } catch (e) { + /* eslint no-empty:0 */ + } + + this._backoffDuration = retry ? // If Sentry server returned a Retry-After value, use it + retry : // Otherwise, double the last backoff duration (starts at 1 sec) + this._backoffDuration * 2 || 1000; + this._backoffStart = now(); + }, + _send: function _send(data) { + var globalOptions = this._globalOptions; + + var baseData = { + project: this._globalProject, + logger: globalOptions.logger, + platform: 'javascript' + }, + httpData = this._getHttpData(); + + if (httpData) { + baseData.request = httpData; + } // HACK: delete `trimHeadFrames` to prevent from appearing in outbound payload + + + if (data.trimHeadFrames) delete data.trimHeadFrames; + data = objectMerge(baseData, data); // Merge in the tags and extra separately since objectMerge doesn't handle a deep merge + + data.tags = objectMerge(objectMerge({}, this._globalContext.tags), data.tags); + data.extra = objectMerge(objectMerge({}, this._globalContext.extra), data.extra); // Send along our own collected metadata with extra + + data.extra['session:duration'] = now() - this._startTime; + + if (this._breadcrumbs && this._breadcrumbs.length > 0) { + // intentionally make shallow copy so that additions + // to breadcrumbs aren't accidentally sent in this request + data.breadcrumbs = { + values: [].slice.call(this._breadcrumbs, 0) + }; + } + + if (this._globalContext.user) { + // sentry.interfaces.User + data.user = this._globalContext.user; + } // Include the environment if it's defined in globalOptions + + + if (globalOptions.environment) data.environment = globalOptions.environment; // Include the release if it's defined in globalOptions + + if (globalOptions.release) data.release = globalOptions.release; // Include server_name if it's defined in globalOptions + + if (globalOptions.serverName) data.server_name = globalOptions.serverName; // Cleanup empty properties before sending them to the server + + Object.keys(data).forEach(function (key) { + if (data[key] == null || data[key] === '' || isEmptyObject(data[key])) { + delete data[key]; + } + }); + + if (isFunction(globalOptions.dataCallback)) { + data = globalOptions.dataCallback(data) || data; + } // Why?????????? + + + if (!data || isEmptyObject(data)) { + return; + } // Check if the request should be filtered or not + + + if (isFunction(globalOptions.shouldSendCallback) && !globalOptions.shouldSendCallback(data)) { + return; + } // Backoff state: Sentry server previously responded w/ an error (e.g. 429 - too many requests), + // so drop requests until "cool-off" period has elapsed. + + + if (this._shouldBackoff()) { + this._logDebug('warn', 'Raven dropped error due to backoff: ', data); + + return; + } + + if (typeof globalOptions.sampleRate === 'number') { + if (Math.random() < globalOptions.sampleRate) { + this._sendProcessedPayload(data); + } + } else { + this._sendProcessedPayload(data); + } + }, + _getUuid: function _getUuid() { + return uuid4(); + }, + _sendProcessedPayload: function _sendProcessedPayload(data, callback) { + var self = this; + var globalOptions = this._globalOptions; + if (!this.isSetup()) return; // Try and clean up the packet before sending by truncating long values + + data = this._trimPacket(data); // ideally duplicate error testing should occur *before* dataCallback/shouldSendCallback, + // but this would require copying an un-truncated copy of the data packet, which can be + // arbitrarily deep (extra_data) -- could be worthwhile? will revisit + + if (!this._globalOptions.allowDuplicates && this._isRepeatData(data)) { + this._logDebug('warn', 'Raven dropped repeat event: ', data); + + return; + } // Send along an event_id if not explicitly passed. + // This event_id can be used to reference the error within Sentry itself. + // Set lastEventId after we know the error should actually be sent + + + this._lastEventId = data.event_id || (data.event_id = this._getUuid()); // Store outbound payload after trim + + this._lastData = data; + + this._logDebug('debug', 'Raven about to send:', data); + + var auth = { + sentry_version: '7', + sentry_client: 'raven-js/' + this.VERSION, + sentry_key: this._globalKey + }; + + if (this._globalSecret) { + auth.sentry_secret = this._globalSecret; + } + + var exception = data.exception && data.exception.values[0]; // only capture 'sentry' breadcrumb is autoBreadcrumbs is truthy + + if (this._globalOptions.autoBreadcrumbs && this._globalOptions.autoBreadcrumbs.sentry) { + this.captureBreadcrumb({ + category: 'sentry', + message: exception ? (exception.type ? exception.type + ': ' : '') + exception.value : data.message, + event_id: data.event_id, + level: data.level || 'error' // presume error unless specified + + }); + } + + var url = this._globalEndpoint; + + (globalOptions.transport || this._makeRequest).call(this, { + url: url, + auth: auth, + data: data, + options: globalOptions, + onSuccess: function success() { + self._resetBackoff(); + + self._triggerEvent('success', { + data: data, + src: url + }); + + callback && callback(); + }, + onError: function failure(error) { + self._logDebug('error', 'Raven transport failed to send: ', error); + + if (error.request) { + self._setBackoffState(error.request); + } + + self._triggerEvent('failure', { + data: data, + src: url + }); + + error = error || new Error('Raven send failed (no additional details provided)'); + callback && callback(error); + } + }); + }, + _makeRequest: function _makeRequest(opts) { + // Auth is intentionally sent as part of query string (NOT as custom HTTP header) to avoid preflight CORS requests + var url = opts.url + '?' + urlencode(opts.auth); + var evaluatedHeaders = null; + var evaluatedFetchParameters = {}; + + if (opts.options.headers) { + evaluatedHeaders = this._evaluateHash(opts.options.headers); + } + + if (opts.options.fetchParameters) { + evaluatedFetchParameters = this._evaluateHash(opts.options.fetchParameters); + } + + if (supportsFetch()) { + evaluatedFetchParameters.body = stringify_1(opts.data); + var defaultFetchOptions = objectMerge({}, this._fetchDefaults); + var fetchOptions = objectMerge(defaultFetchOptions, evaluatedFetchParameters); + + if (evaluatedHeaders) { + fetchOptions.headers = evaluatedHeaders; + } + + return _window$1.fetch(url, fetchOptions).then(function (response) { + if (response.ok) { + opts.onSuccess && opts.onSuccess(); + } else { + var error = new Error('Sentry error code: ' + response.status); // It's called request only to keep compatibility with XHR interface + // and not add more redundant checks in setBackoffState method + + error.request = response; + opts.onError && opts.onError(error); + } + })['catch'](function () { + opts.onError && opts.onError(new Error('Sentry error code: network unavailable')); + }); + } + + var request = _window$1.XMLHttpRequest && new _window$1.XMLHttpRequest(); + if (!request) return; // if browser doesn't support CORS (e.g. IE7), we are out of luck + + var hasCORS = 'withCredentials' in request || typeof XDomainRequest !== 'undefined'; + if (!hasCORS) return; + + if ('withCredentials' in request) { + request.onreadystatechange = function () { + if (request.readyState !== 4) { + return; + } else if (request.status === 200) { + opts.onSuccess && opts.onSuccess(); + } else if (opts.onError) { + var err = new Error('Sentry error code: ' + request.status); + err.request = request; + opts.onError(err); + } + }; + } else { + request = new XDomainRequest(); // xdomainrequest cannot go http -> https (or vice versa), + // so always use protocol relative + + url = url.replace(/^https?:/, ''); // onreadystatechange not supported by XDomainRequest + + if (opts.onSuccess) { + request.onload = opts.onSuccess; + } + + if (opts.onError) { + request.onerror = function () { + var err = new Error('Sentry error code: XDomainRequest'); + err.request = request; + opts.onError(err); + }; + } + } + + request.open('POST', url); + + if (evaluatedHeaders) { + each(evaluatedHeaders, function (key, value) { + request.setRequestHeader(key, value); + }); + } + + request.send(stringify_1(opts.data)); + }, + _evaluateHash: function _evaluateHash(hash) { + var evaluated = {}; + + for (var key in hash) { + if (hash.hasOwnProperty(key)) { + var value = hash[key]; + evaluated[key] = typeof value === 'function' ? value() : value; + } + } + + return evaluated; + }, + _logDebug: function _logDebug(level) { + if (this._originalConsoleMethods[level] && this.debug) { + // In IE<10 console methods do not have their own 'apply' method + Function.prototype.apply.call(this._originalConsoleMethods[level], this._originalConsole, [].slice.call(arguments, 1)); + } + }, + _mergeContext: function _mergeContext(key, context) { + if (isUndefined(context)) { + delete this._globalContext[key]; + } else { + this._globalContext[key] = objectMerge(this._globalContext[key] || {}, context); + } + } +}; // Deprecations + +Raven$1.prototype.setUser = Raven$1.prototype.setUserContext; +Raven$1.prototype.setReleaseContext = Raven$1.prototype.setRelease; +var raven = Raven$1; + +/** + * Enforces a single instance of the Raven client, and the + * main entry point for Raven. If you are a consumer of the + * Raven library, you SHOULD load this file (vs raven.js). + **/ +// This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) + +var _window = typeof window !== 'undefined' ? window : typeof commonjsGlobal !== 'undefined' ? commonjsGlobal : typeof self !== 'undefined' ? self : {}; + +var _Raven = _window.Raven; +var Raven = new raven(); +/* + * Allow multiple versions of Raven to be installed. + * Strip Raven from the global context and returns the instance. + * + * @return {Raven} + */ + +Raven.noConflict = function () { + _window.Raven = _Raven; + return Raven; +}; + +Raven.afterLoad(); +var singleton = Raven; + +/** + * Vue.js 2.0 plugin + * + */ +function formatComponentName(vm) { + if (vm.$root === vm) { + return 'root instance'; + } + + var name = vm._isVue ? vm.$options.name || vm.$options._componentTag : vm.name; + return (name ? 'component <' + name + '>' : 'anonymous component') + (vm._isVue && vm.$options.__file ? ' at ' + vm.$options.__file : ''); +} + +function vuePlugin(Raven, Vue) { + Vue = Vue || window.Vue; // quit if Vue isn't on the page + + if (!Vue || !Vue.config) return; + var _oldOnError = Vue.config.errorHandler; + + Vue.config.errorHandler = function VueErrorHandler(error, vm, info) { + var metaData = {}; // vm and lifecycleHook are not always available + + if (Object.prototype.toString.call(vm) === '[object Object]') { + metaData.componentName = formatComponentName(vm); + metaData.propsData = vm.$options.propsData; + } + + if (typeof info !== 'undefined') { + metaData.lifecycleHook = info; + } + + Raven.captureException(error, { + extra: metaData + }); + + if (typeof _oldOnError === 'function') { + _oldOnError.call(this, error, vm, info); + } + }; +} + +var vue$2 = vuePlugin; + +/* This file was generated by './scripts/generate-plugin-combinations.js'! */ + +singleton.addPlugin(vue$2); +var vue = {}; + +return vue; + +}))); diff --git a/dist/vue/raven.min.js b/dist/vue/raven.min.js new file mode 100644 index 000000000000..2289ae020b06 --- /dev/null +++ b/dist/vue/raven.min.js @@ -0,0 +1,3 @@ +/*! Raven.js 3.22.2 (1b6187b) | github.com/getsentry/raven-js */ +!function(a,b){"object"==typeof exports&&"undefined"!=typeof module?module.exports=b():"function"==typeof define&&define.amd?define(b):a.Raven=b()}(this,function(){"use strict";function a(a,b){return b={exports:{}},a(b,b.exports),b.exports}function b(a){return(b="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(a){return typeof a}:function(a){return a&&"function"==typeof Symbol&&a.constructor===Symbol&&a!==Symbol.prototype?"symbol":typeof a})(a)}function c(a){return"object"===b(a)&&null!==a}function d(a){switch({}.toString.call(a)){case"[object Error]":return!0;case"[object Exception]":return!0;case"[object DOMException]":return!0;default:return a instanceof Error}}function e(a){return l()&&"[object ErrorEvent]"==={}.toString.call(a)}function f(a){return void 0===a}function g(a){return"function"==typeof a}function h(a){return"[object Object]"===Object.prototype.toString.call(a)}function i(a){return"[object String]"===Object.prototype.toString.call(a)}function j(a){return"[object Array]"===Object.prototype.toString.call(a)}function k(a){if(!h(a))return!1;for(var b in a)if(a.hasOwnProperty(b))return!1;return!0}function l(){try{return new ErrorEvent(""),!0}catch(a){return!1}}function m(){if(!("fetch"in O))return!1;try{return new Headers,new Request(""),new Response,!0}catch(a){return!1}}function n(a){function b(b,c){var d=a(b)||b;return c?c(d)||d:d}return b}function o(a,b){var c,d;if(f(a.length))for(c in a)s(a,c)&&b.call(null,c,a[c]);else if(d=a.length)for(c=0;c ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function y(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&i(b))for(c=b.split(/\s+/),f=0;f":"anonymous component")+(a._isVue&&a.$options.__file?" at "+a.$options.__file:"")}function L(a,b){if(b=b||window.Vue,b&&b.config){var c=b.config.errorHandler;b.config.errorHandler=function(b,d,e){var f={};"[object Object]"===Object.prototype.toString.call(d)&&(f.componentName=K(d),f.propsData=d.$options.propsData),"undefined"!=typeof e&&(f.lifecycleHook=e),a.captureException(b,{extra:f}),"function"==typeof c&&c.call(this,b,d,e)}}}var M="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{},N=Object.setPrototypeOf||function(a,b){return a.B=b,a},O=("object"==typeof Reflect&&Reflect.construct||function(a,b,c){var d,e=[null];return e.push.apply(e,b),d=a.bind.apply(a,e),N(new d,c.prototype)},"undefined"!=typeof window?window:"undefined"!=typeof M?M:"undefined"!=typeof self?self:{}),P={isObject:c,isError:d,isErrorEvent:e,isUndefined:f,isFunction:g,isPlainObject:h,isString:i,isArray:j,isEmptyObject:k,supportsErrorEvent:l,supportsFetch:m,wrappedCallback:n,each:o,objectMerge:p,truncate:r,objectFrozen:q,hasKey:s,joinRegExp:t,urlencode:u,uuid4:w,htmlTreeAsString:x,htmlElementAsString:y,isSameException:B,isSameStacktrace:C,parseUrl:v,fill:D,safeJoin:E},Q={collectWindowErrors:!0,debug:!1},R="undefined"!=typeof window?window:"undefined"!=typeof M?M:"undefined"!=typeof self?self:{},S=[].slice,T="?",U=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;Q.report=function(){function a(a){f(),l.push(a)}function b(a){for(var b=l.length-1;b>=0;--b)l[b]===a&&l.splice(b,1)}function c(){g(),l=[]}function d(a,b){var c=null;if(!b||Q.collectWindowErrors){for(var d in l)if(l.hasOwnProperty(d))try{l[d].apply(null,[a].concat(S.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function e(a,b,c,e,f){var g=null,i=P.isErrorEvent(f)?f.error:f,k=P.isErrorEvent(a)?a.message:a;if(o)Q.computeStackTrace.augmentStackTraceWithInitialElement(o,b,c,k),h();else if(i&&P.isError(i))g=Q.computeStackTrace(i),d(g,!0);else{var l,m={url:b,line:c,column:e},n=void 0;if("[object String]"==={}.toString.call(k)){var l=k.match(U);l&&(n=l[1],k=l[2])}m.func=T,g={name:n,message:k,url:F(),stack:[m]},d(g,!0)}return!!j&&j.apply(this,arguments)}function f(){k||(j=R.onerror,R.onerror=e,k=!0)}function g(){k&&(R.onerror=j,k=!1,j=void 0)}function h(){var a=o,b=m;m=null,o=null,n=null,d.apply(null,[a,!1].concat(b))}function i(a,b){var c=S.call(arguments,1);if(o){if(n===a)return;h()}var d=Q.computeStackTrace(a);if(o=d,n=a,m=c,setTimeout(function(){n===a&&h()},d.incomplete?2e3:0),b!==!1)throw a}var j,k,l=[],m=null,n=null,o=null;return i.subscribe=a,i.unsubscribe=b,i.uninstall=c,i}(),Q.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,d,e=/^\s*at (.*?) ?\(((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,f=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|\[native).*?|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,g=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,h=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,i=/\((\S*)(?::(\d+))(?::(\d+))\)/,j=a.stack.split("\n"),k=[],l=(/^(.*) is undefined$/.exec(a.message),0),m=j.length;l eval")>-1;o&&(b=h.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==l||c[5]||"undefined"==typeof a.columnNumber||(k[0].column=a.columnNumber+1),d={url:c[3],func:c[1]||T,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}!d.func&&d.line&&(d.func=T),k.push(d)}return k.length?{name:a.name,message:a.message,url:F(),stack:k}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=T),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,e){for(var f,g,h=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,i=[],j={},k=!1,l=c.caller;l&&!k;l=l.caller)if(l!==d&&l!==Q.report){if(g={url:null,func:T,line:null,column:null},l.name?g.func=l.name:(f=h.exec(l.toString()))&&(g.func=f[1]),"undefined"==typeof g.func)try{g.func=f.input.substring(0,f.input.indexOf("{"))}catch(m){}j[""+l]?k=!0:j[""+l]=!0,i.push(g)}e&&i.splice(0,e);var n={name:a.name,message:a.message,url:F(),stack:i};return b(n,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),n}function d(b,d){var e=null;d=null==d?0:+d;try{if(e=a(b))return e}catch(f){if(Q.debug)throw f}try{if(e=c(b,d+1))return e}catch(f){if(Q.debug)throw f}return{name:b.name,message:b.message,url:F()}}return d.augmentStackTraceWithInitialElement=b,d.computeStackTraceFromStackProp=a,d}();var V=Q,W=a(function(a,b){function c(a,b){for(var c=0;c0){var i=c(d,this);~i?d.splice(i+1):d.push(this),~i?f.splice(i,1/0,g):f.push(g),~c(d,h)&&(h=b.call(this,g,h))}else d.push(h);return null==a?h instanceof Error?e(h):h:a.call(this,g,h)}}b=a.exports=d,b.getSerialize=f});G.prototype=new Error,G.prototype.constructor=G;var X=G,Y=function(a,b,c){var d=a[b],e=a;if(b in a){var f="warn"===b?"warning":b;a[b]=function(){var a=[].slice.call(arguments),g=P.safeJoin(a," "),h={level:f,logger:"console",extra:{arguments:a}};"assert"===b?a[0]===!1&&(g="Assertion failed: "+(P.safeJoin(a.slice(1)," ")||"console.assert"),h.extra.arguments=a.slice(1),c&&c(g,h)):c&&c(g,h),d&&Function.prototype.apply.call(d,e,a)}}},Z={wrapMethod:Y},$=P.isError,_=P.isObject,aa=P.isErrorEvent,ba=P.isUndefined,ca=P.isFunction,da=P.isString,ea=P.isArray,fa=P.isEmptyObject,ga=P.each,ha=P.objectMerge,ia=P.truncate,ja=P.objectFrozen,ka=P.hasKey,la=P.joinRegExp,ma=P.urlencode,na=P.uuid4,oa=P.htmlTreeAsString,pa=P.isSameException,qa=P.isSameStacktrace,ra=P.parseUrl,sa=P.fill,ta=P.supportsFetch,ua=Z.wrapMethod,va="source protocol user pass host port path".split(" "),wa=/^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/,xa="undefined"!=typeof window?window:"undefined"!=typeof M?M:"undefined"!=typeof self?self:{},ya=xa.document,za=xa.navigator;J.prototype={VERSION:"3.22.2",debug:!1,TraceKit:V,config:function(a,b){var c=this;if(c.i)return this.C("error","Error: Raven has already been configured"),c;if(!a)return c;var d=c.m;b&&ga(b,function(a,b){"tags"===a||"extra"===a||"user"===a?c.l[a]=b:d[a]=b}),c.setDSN(a),d.ignoreErrors.push(/^Script error\.?$/),d.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/),d.ignoreErrors=la(d.ignoreErrors),d.ignoreUrls=!!d.ignoreUrls.length&&la(d.ignoreUrls),d.whitelistUrls=!!d.whitelistUrls.length&&la(d.whitelistUrls),d.includePaths=la(d.includePaths),d.maxBreadcrumbs=Math.max(0,Math.min(d.maxBreadcrumbs||100,100));var e={xhr:!0,console:!0,dom:!0,location:!0,sentry:!0},f=d.autoBreadcrumbs;"[object Object]"==={}.toString.call(f)?f=ha(e,f):f!==!1&&(f=e),d.autoBreadcrumbs=f;var g={tryCatch:!0},h=d.instrument;return"[object Object]"==={}.toString.call(h)?h=ha(g,h):h!==!1&&(h=g),d.instrument=h,V.collectWindowErrors=!!d.collectWindowErrors,c},install:function(){var a=this;return a.isSetup()&&!a.p&&(V.report.subscribe(function(){a.D.apply(a,arguments)}),a.E(),a.m.instrument&&a.m.instrument.tryCatch&&a.F(),a.m.autoBreadcrumbs&&a.G(),a.H(),a.p=!0),Error.stackTraceLimit=a.m.stackTraceLimit,this},setDSN:function(a){var b=this,c=b.I(a),d=c.path.lastIndexOf("/"),e=c.path.substr(1,d);b.J=a,b.j=c.user,b.K=c.pass&&c.pass.substr(1),b.k=c.path.substr(d+1),b.i=b.L(c),b.M=b.i+"/"+e+"api/"+b.k+"/store/",this.A()},context:function(a,b,c){return ca(a)&&(c=b||[],b=a,a=void 0),this.wrap(a,b).apply(this,c)},wrap:function(a,b,c){function d(){var d=[],f=arguments.length,g=!a||a&&a.deep!==!1;for(c&&ca(c)&&c.apply(this,arguments);f--;)d[f]=g?e.wrap(a,arguments[f]):arguments[f];try{return b.apply(this,d)}catch(h){throw e.N(),e.captureException(h,a),h}}var e=this;if(ba(b)&&!ca(a))return a;if(ca(a)&&(b=a,a=void 0),!ca(b))return b;try{if(b.a)return b;if(b.O)return b.O}catch(f){return b}for(var g in b)ka(b,g)&&(d[g]=b[g]);return d.prototype=b.prototype,b.O=d,d.a=!0,d.b=b,d},uninstall:function(){return V.report.uninstall(),this.P(),this.Q(),this.R(),Error.stackTraceLimit=this.q,this.p=!1,this},captureException:function(a,b){b=ha({trimHeadFrames:0},b?b:{});var c=!$(a),d=!aa(a),e=aa(a)&&!a.error;if(c&&d||e)return this.captureMessage(a,ha(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}));aa(a)&&(a=a.error),this.f=a;try{var f=V.computeStackTrace(a);this.S(f,b)}catch(g){if(a!==g)throw g}return this},captureMessage:function(a,b){if(!this.m.ignoreErrors.test||!this.m.ignoreErrors.test(a)){b=b||{};var c,d=ha({message:a+""},b);try{throw new Error(a)}catch(e){c=e}c.name=null;var f=V.computeStackTrace(c),g=ea(f.stack)&&f.stack[1],h=g&&g.url||"";if((!this.m.ignoreUrls.test||!this.m.ignoreUrls.test(h))&&(!this.m.whitelistUrls.test||this.m.whitelistUrls.test(h))){if(this.m.stacktrace||b&&b.stacktrace){b=ha({fingerprint:a,trimHeadFrames:(b.trimHeadFrames||0)+1},b);var i=this.T(f,b);d.stacktrace={frames:i.reverse()}}return this.U(d),this}}},captureBreadcrumb:function(a){var b=ha({timestamp:H()/1e3},a);if(ca(this.m.breadcrumbCallback)){var c=this.m.breadcrumbCallback(b);if(_(c)&&!fa(c))b=c;else if(c===!1)return this}return this.w.push(b),this.w.length>this.m.maxBreadcrumbs&&this.w.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.t.push([a,b]),this.p&&this.H(),this},setUserContext:function(a){return this.l.user=a,this},setExtraContext:function(a){return this.V("extra",a),this},setTagsContext:function(a){return this.V("tags",a),this},clearContext:function(){return this.l={},this},getContext:function(){return JSON.parse(W(this.l))},setEnvironment:function(a){return this.m.environment=a,this},setRelease:function(a){return this.m.release=a,this},setDataCallback:function(a){var b=this.m.dataCallback;return this.m.dataCallback=I(b,a),this},setBreadcrumbCallback:function(a){var b=this.m.breadcrumbCallback;return this.m.breadcrumbCallback=I(b,a),this},setShouldSendCallback:function(a){var b=this.m.shouldSendCallback;return this.m.shouldSendCallback=I(b,a),this},setTransport:function(a){return this.m.transport=a,this},lastException:function(){return this.f},lastEventId:function(){return this.h},isSetup:function(){return!!this.c&&(!!this.i||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.C("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=xa.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(ya){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new X("Missing eventId");var c=a.dsn||this.J;if(!c)throw new X("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.l.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.L(this.I(c)),h=ya.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(ya.head||ya.body).appendChild(h)}},N:function(){var a=this;this.o+=1,setTimeout(function(){a.o-=1})},W:function(a,b){var c,d;if(this.d){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),ya.createEvent?(c=ya.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=ya.createEventObject(),c.eventType=a);for(d in b)ka(b,d)&&(c[d]=b[d]);if(ya.createEvent)ya.dispatchEvent(c);else try{ya.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},X:function(a){var b=this;return function(c){if(b.Y=null,b.x!==c){b.x=c;var d;try{d=oa(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},Z:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.Y;g||a.X("input")(c),clearTimeout(g),a.Y=setTimeout(function(){a.Y=null},b)}}},$:function(a,b){var c=ra(this.y.href),d=ra(b),e=ra(a);this.z=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},E:function(){var a=this;a._=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.a?a._.apply(this.b,arguments):a._.apply(this,arguments)}},P:function(){this._&&(Function.prototype.toString=this._)},F:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.$(b.z,c+""),a.apply(this,arguments)}};sa(history,"pushState",j,d),sa(history,"replaceState",j,d)}if(c.console&&"console"in xa&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};ga(["debug","info","warn","error","log"],function(a,b){ua(console,b,k)})}},Q:function(){for(var a;this.v.length;){a=this.v.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},R:function(){for(var a in this.s)this.r[a]=this.s[a]},H:function(){var a=this;ga(this.t,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},I:function(a){var b=wa.exec(a),c={},d=7;try{for(;d--;)c[va[d]]=b[d]||""}catch(e){throw new X("Invalid DSN: "+a)}if(c.pass&&!this.m.allowSecretKey)throw new X("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},L:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},D:function(){this.o||this.S.apply(this,arguments)},S:function(a,b){var c=this.T(a,b);this.W("handle",{stackInfo:a,options:b}),this.ba(a.name,a.message,a.url,a.lineno,c,b)},T:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(ga(a.stack,function(b,e){var f=c.ca(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.w,0)}),this.l.user&&(a.user=this.l.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||fa(a[b]))&&delete a[b]}),ca(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!fa(a)&&(!ca(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.ia()?void this.C("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() Date: Tue, 13 Feb 2018 11:10:29 +0100 Subject: [PATCH 07/75] build: Revert build system to browserify (#1227) --- .babelrc | 14 -- .eslintrc | 6 +- .gitignore | 1 - Gruntfile.js | 253 ++++++++++++++---------- karma.unit.config.js | 13 +- package-lock.json | 2 +- package.json | 10 +- scripts/build.js | 40 ---- scripts/generate-plugin-combinations.js | 61 ------ test/raven.test.js | 23 ++- 10 files changed, 169 insertions(+), 254 deletions(-) delete mode 100644 .babelrc delete mode 100644 scripts/build.js delete mode 100755 scripts/generate-plugin-combinations.js diff --git a/.babelrc b/.babelrc deleted file mode 100644 index 875e315a0a73..000000000000 --- a/.babelrc +++ /dev/null @@ -1,14 +0,0 @@ -{ - "presets": [ - ["@babel/preset-env", { - "modules": false, - "targets": { - "browsers": [ - "last 1 version", - "android >= 4.4", - "ie >= 10" - ] - } - }] - ] -} diff --git a/.eslintrc b/.eslintrc index 91966b6ce9d2..5b6301356b47 100644 --- a/.eslintrc +++ b/.eslintrc @@ -6,12 +6,8 @@ "browser": true, "builtin": true }, - "parserOptions": { - "ecmaVersion": 6 - }, "globals": { - "require": false, - "Promise": true + "require": false }, "rules": { "block-scoped-var": 2, diff --git a/.gitignore b/.gitignore index 492bbd5cf0b1..f21ffb033612 100644 --- a/.gitignore +++ b/.gitignore @@ -12,7 +12,6 @@ docs/doctrees build node_modules -plugins/combinations npm-debug.log scratch/ diff --git a/Gruntfile.js b/Gruntfile.js index 15378a4bfe54..211318bbd951 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -2,96 +2,155 @@ module.exports = function(grunt) { var path = require('path'); var os = require('os'); + var through = require('through2'); + var proxyquire = require('proxyquireify'); + var versionify = require('browserify-versionify'); + var derequire = require('derequire/plugin'); + var collapser = require('bundle-collapser/plugin'); var excludedPlugins = ['react-native']; - var plugins = grunt.file.expand('plugins/*.js').filter(function(plugin) { + var plugins = grunt.option('plugins'); + // Create plugin paths and verify they exist + plugins = (plugins ? plugins.split(',') : []).map(function(plugin) { + var p = 'plugins/' + plugin + '.js'; + + if (!grunt.file.exists(p)) + throw new Error("Plugin '" + plugin + "' not found in plugins directory."); + + return p; + }); + + // custom browserify transformer to re-write plugins to + // self-register with Raven via addPlugin + function AddPluginBrowserifyTransformer() { + return function(file) { + return through(function(buf, enc, next) { + buf = buf.toString('utf8'); + if (/plugins/.test(file)) { + buf += "\nrequire('../src/singleton').addPlugin(module.exports);"; + } + this.push(buf); + next(); + }); + }; + } + + // Taken from http://dzone.com/snippets/calculate-all-combinations + var combine = function(a) { + var fn = function(n, src, got, all) { + if (n === 0) { + all.push(got); + return; + } + + for (var j = 0; j < src.length; j++) { + fn(n - 1, src.slice(j + 1), got.concat([src[j]]), all); + } + }; + + var excluded = excludedPlugins.map(function(plugin) { + return 'plugins/' + plugin + '.js'; + }); + + // Remove the plugins that we don't want to build + a = a.filter(function(n) { + return excluded.indexOf(n) === -1; + }); + + var all = [a]; + + for (var i = 0; i < a.length; i++) { + fn(i, a, [], all); + } + + return all; + }; + + var plugins = grunt.file.expand('plugins/*.js'); + + var cleanedPlugins = plugins.filter(function(plugin) { var pluginName = path.basename(plugin, '.js'); return excludedPlugins.indexOf(pluginName) === -1; }); - // These files are generated with the 'generate:plugins-combined' npm script - var pluginCombinations = grunt.file.expand('plugins/combinations/*.js'); + var pluginSingleFiles = cleanedPlugins.map(function(plugin) { + var filename = path.basename(plugin); - var tests = grunt.file.expand('test/**/*.test.js'); + var file = {}; + file.src = plugin; + file.dest = path.join('build', 'plugins', filename); - var rollupConfig = { - core: { - options: [ - { - input: { - input: 'src/singleton.js' - }, - output: { - file: 'build/raven.js', - name: 'Raven', - banner: grunt.file.read('template/_copyright.js') - } - } - ] + return file; + }); + + var pluginCombinations = combine(plugins); + var pluginConcatFiles = pluginCombinations.reduce(function(dict, comb) { + var key = comb.map(function(plugin) { + return path.basename(plugin, '.js'); + }); + key.sort(); + + var dest = path.join('build/', key.join(','), '/raven.js'); + dict[dest] = ['src/singleton.js'].concat(comb); + + return dict; + }, {}); + + var browserifyConfig = { + options: { + banner: grunt.file.read('template/_copyright.js'), + browserifyOptions: { + standalone: 'Raven' // umd + }, + transform: [versionify], + plugin: [derequire, collapser] }, - plugins: { - options: [] + core: { + src: 'src/singleton.js', + dest: 'build/raven.js' }, - pluginCombinations: { - options: [] + 'plugins-combined': { + files: pluginConcatFiles, + options: { + transform: [[versionify], [new AddPluginBrowserifyTransformer()]] + } }, - tests: { - options: [] + test: { + src: 'test/**/*.test.js', + dest: 'build/raven.test.js', + options: { + browserifyOptions: { + debug: false // source maps + }, + ignore: ['react-native'], + plugin: [proxyquire.plugin] + } } }; - // Create a dedicated entry in rollup config for each individual - // plugin (each needs a unique `standalone` config) - plugins.forEach(function(plugin) { - var name = plugin + // Create a dedicated entry in browserify config for + // each individual plugin (each needs a unique `standalone` + // config) + var browserifyPluginTaskNames = []; + pluginSingleFiles.forEach(function(item) { + var name = item.src .replace(/.*\//, '') // everything before slash .replace('.js', ''); // extension var capsName = name.charAt(0).toUpperCase() + name.slice(1); var config = { - input: { - input: plugin - }, - output: { - file: path.join('build', 'plugins', path.basename(plugin)), - name: 'Raven.Plugins.' + capsName, - banner: grunt.file.read('template/_copyright.js') - } - }; - - rollupConfig.plugins.options.push(config); - }); - - // Create a dedicated entry in rollup config for each individual plugin combination - pluginCombinations.forEach(function(pluginCombination) { - var config = { - input: { - input: pluginCombination - }, - output: { - file: path.join('build', path.basename(pluginCombination, '.js'), 'raven.js'), - name: 'Raven', - banner: grunt.file.read('template/_copyright.js') - } - }; - - rollupConfig.pluginCombinations.options.push(config); - }); - - // Transpile all test scripts - tests.forEach(function(test) { - var config = { - input: { - input: test - }, - output: { - file: path.join('build', path.basename(test)), - name: path.basename(test, '.js') + src: item.src, + dest: item.dest, + options: { + browserifyOptions: { + // e.g. Raven.Plugins.Angular + standalone: 'Raven.Plugins.' + capsName + } } }; - - rollupConfig.tests.options.push(config); + browserifyConfig[name] = config; + browserifyPluginTaskNames.push('browserify:' + name); }); var awsConfigPath = path.join(os.homedir(), '.aws', 'raven-js.json'); @@ -99,9 +158,9 @@ module.exports = function(grunt) { pkg: grunt.file.readJSON('package.json'), aws: grunt.file.exists(awsConfigPath) ? grunt.file.readJSON(awsConfigPath) : {}, - clean: ['build', 'plugins/combinations'], + clean: ['build'], - rollup: rollupConfig, + browserify: browserifyConfig, uglify: { options: { @@ -218,30 +277,6 @@ module.exports = function(grunt) { grunt.initConfig(gruntConfig); // Custom Grunt tasks - grunt.registerMultiTask('rollup', 'Create the bundles', function() { - var build = require('./scripts/build'); - var options = this.options(); - var done = this.async(); - - var promises = Object.keys(options).map(function(key) { - return build(options[key].input, options[key].output); - }); - - Promise.all(promises) - .then(function() { - done(); - }) - ['catch'](function(error) { - grunt.fail.warn(error); - }); - }); - - grunt.registerTask('generate-plugin-combinations', function() { - var dest = './plugins/combinations'; - grunt.file.mkdir(dest); - require('./scripts/generate-plugin-combinations')(plugins, dest); - }); - grunt.registerTask('version', function() { var pkg = grunt.config.get('pkg'); @@ -280,28 +315,34 @@ module.exports = function(grunt) { grunt.loadNpmTasks('grunt-contrib-copy'); // 3rd party Grunt tasks + grunt.loadNpmTasks('grunt-browserify'); grunt.loadNpmTasks('grunt-release'); grunt.loadNpmTasks('grunt-s3'); grunt.loadNpmTasks('grunt-gitinfo'); grunt.loadNpmTasks('grunt-sri'); // Build tasks - grunt.registerTask('_prep', ['gitinfo', 'version']); - grunt.registerTask('build.test', ['_prep', 'rollup:core', 'rollup:tests']); - grunt.registerTask('build.core', ['_prep', 'rollup:core']); - grunt.registerTask('build.plugins', [ + grunt.registerTask('_prep', ['clean', 'gitinfo', 'version']); + grunt.registerTask( + 'browserify.core', + ['_prep', 'browserify:core'].concat(browserifyPluginTaskNames) + ); + grunt.registerTask('browserify.plugins-combined', [ '_prep', - 'generate-plugin-combinations', - 'rollup:plugins', - 'rollup:pluginCombinations', + 'browserify:plugins-combined' + ]); + grunt.registerTask('build.test', ['_prep', 'browserify.core', 'browserify:test']); + grunt.registerTask('build.core', ['browserify.core', 'uglify', 'sri:dist']); + grunt.registerTask('build.plugins-combined', [ + 'browserify.plugins-combined', + 'uglify', + 'sri:dist', 'sri:build' ]); - grunt.registerTask('build', ['build.core', 'build.plugins', 'uglify']); - - grunt.registerTask('dist', ['clean', 'build', 'copy:dist', 'sri:dist']); + grunt.registerTask('build', ['build.plugins-combined']); + grunt.registerTask('dist', ['build.core', 'copy:dist']); - // Test tasks - grunt.registerTask('test:ci', ['config:ci', 'build:test']); + grunt.registerTask('test:ci', ['config:ci', 'build.test']); // Webserver tasks grunt.registerTask('run:test', ['build.test', 'connect:test']); diff --git a/karma.unit.config.js b/karma.unit.config.js index 9a0c86a164c8..d6f468af2f3a 100644 --- a/karma.unit.config.js +++ b/karma.unit.config.js @@ -1,17 +1,6 @@ var commonConfig = require('./karma.config'); -var testFiles = [ - 'test/globals.js', - 'build/angular.test.js', - 'build/console.test.js', - 'build/json-stringify-safe.test.js', - 'build/raven.test.js', - 'build/react-native.test.js', - 'build/tracekit.test.js', - 'build/tracekit-parser.test.js', - 'build/utils.test.js', - 'build/vue.test.js', -]; +var testFiles = ['test/globals.js', 'build/raven.test.js']; module.exports = function(config) { var testConfig = Object.assign( diff --git a/package-lock.json b/package-lock.json index 6f102205ad1d..3a013cf303e7 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "raven-js", - "version": "3.21.0", + "version": "3.22.2", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index dc54e97146d5..85a14df01ccf 100644 --- a/package.json +++ b/package.json @@ -30,9 +30,9 @@ "test:size": "grunt dist && bundlesize && git checkout -- dist/" }, "devDependencies": { - "@babel/core": "^7.0.0-beta.32", - "@babel/preset-env": "^7.0.0-beta.32", "bluebird": "^3.4.1", + "browserify-versionify": "^1.0.6", + "bundle-collapser": "^1.2.1", "bundlesize": "^0.15.2", "chai": "^4.1.1", "derequire": "2.0.3", @@ -40,6 +40,7 @@ "eslint": "^4.6.1", "eslint-config-prettier": "^2.3.0", "grunt": "^0.4.5", + "grunt-browserify": "^4.0.1", "grunt-cli": "^0.1.13", "grunt-contrib-clean": "^0.7.0", "grunt-contrib-connect": "^0.11.2", @@ -64,11 +65,8 @@ "mocha": "^3.5.0", "prettier": "^1.6.1", "proxyquireify": "^3.0.2", - "rollup": "^0.52.0", - "rollup-plugin-babel": "^4.0.0-beta.0", - "rollup-plugin-commonjs": "^8.2.6", - "rollup-plugin-node-resolve": "^3.0.0", "sinon": "^3.2.1", + "through2": "^2.0.0", "typescript": "^2.3.0", "whatwg-fetch": "^2.0.3" }, diff --git a/scripts/build.js b/scripts/build.js deleted file mode 100644 index 4c1b822281c0..000000000000 --- a/scripts/build.js +++ /dev/null @@ -1,40 +0,0 @@ -const rollup = require('rollup').rollup; -const babel = require('rollup-plugin-babel'); -const commonjs = require('rollup-plugin-commonjs'); // Remove this plugin as soon as all modules are ES6 -const resolve = require('rollup-plugin-node-resolve'); // Only needed for test build - -/** - * Build using rollup.js - * - * @see https://rollupjs.org/#javascript-api - * - * @param inputOptions - * @param outputOptions - * @returns Promise - */ -async function build(inputOptions, outputOptions) { - const input = Object.assign( - { - plugins: [ - commonjs(), // We can remove this plugin if there are no more CommonJS modules - resolve(), // We need this plugin only to build the test script - babel({ - exclude: 'node_modules/**' - }) - ] - }, - inputOptions - ); - - const output = Object.assign( - { - format: 'umd' - }, - outputOptions - ); - - const bundle = await rollup(input); - await bundle.write(output); -} - -module.exports = build; diff --git a/scripts/generate-plugin-combinations.js b/scripts/generate-plugin-combinations.js deleted file mode 100755 index 2b10e944081c..000000000000 --- a/scripts/generate-plugin-combinations.js +++ /dev/null @@ -1,61 +0,0 @@ -#!/usr/bin/env node - -const fs = require('fs'); -const path = require('path'); - -const template = plugins => `/* This file was generated by './scripts/generate-plugin-combinations.js'! */ -const Raven = require('../../src/singleton'); -${plugins.map(plugin => `const ${plugin}Plugin = require('../${plugin}');`).join('\n')} - -Raven -${plugins.map(plugin => ` .addPlugin(${plugin}Plugin)`).join('\n')}; -`; - -/** - * Taken from http://dzone.com/snippets/calculate-all-combinations - */ -function combine(a) { - const fn = function(n, src, got, all) { - if (n === 0) { - all.push(got); - return; - } - - for (let j = 0; j < src.length; j++) { - fn(n - 1, src.slice(j + 1), got.concat([src[j]]), all); - } - }; - - const all = [a]; - - for (let i = 0; i < a.length; i++) { - fn(i, a, [], all); - } - - all.splice(1, 1); // Remove the empty array - - return all; -} - -/** - * Generate all plugin combinations. - * - * @param {array} plugins - * @param {string} dest - */ -function generate(plugins, dest) { - const pluginNames = plugins.map((plugin) => { - return path.basename(plugin, '.js'); - }); - - const pluginCombinations = combine(pluginNames); - - pluginCombinations.forEach((pluginCombination) => { - fs.writeFileSync( - path.resolve(dest, `${pluginCombination.join(',')}.js`), - template(pluginCombination), - ); - }); -} - -module.exports = generate; diff --git a/test/raven.test.js b/test/raven.test.js index 65d4604df844..0614a64399e0 100644 --- a/test/raven.test.js +++ b/test/raven.test.js @@ -6,13 +6,20 @@ var sinon = require('sinon'); var chai = require('chai'); var assert = chai.assert; -var _Raven = require('../src/raven'); -_Raven.prototype._getUuid = function() { - return 'abc123'; // Mock in order to get a predictable UUID -}; +var proxyquire = require('proxyquireify')(require); var TraceKit = require('../vendor/TraceKit/tracekit'); +var _Raven = proxyquire('../src/raven', { + // Ensure same TraceKit obj is shared (without specifying this, proxyquire + // seems to clone dependencies or something weird) + '../vendor/TraceKit/tracekit': TraceKit +}); + +_Raven.prototype._getUuid = function() { + return 'abc123'; +}; + var utils = require('../src/utils'); var joinRegExp = utils.joinRegExp; var supportsErrorEvent = utils.supportsErrorEvent; @@ -2503,7 +2510,7 @@ describe('Raven (public API)', function() { }, error); }); - it('should return input function as-is if accessing __raven__ prop throws exception', function() { + it('should return input funciton as-is if accessing __raven__ prop throws exception', function() { // see raven-js#495 var fn = function() {}; Object.defineProperty(fn, '__raven__', { @@ -2512,13 +2519,13 @@ describe('Raven (public API)', function() { } }); assert.throw(function() { - return fn.__raven__; + fn.__raven__; }, 'Permission denied'); var wrapped = Raven.wrap(fn); assert.equal(fn, wrapped); }); - it('should return input function as-is if accessing __raven_wrapper__ prop throws exception', function() { + it('should return input funciton as-is if accessing __raven_wrapper__ prop throws exception', function() { // see raven-js#495 var fn = function() {}; Object.defineProperty(fn, '__raven_wrapper__', { @@ -2527,7 +2534,7 @@ describe('Raven (public API)', function() { } }); assert.throw(function() { - return fn.__raven_wrapper__; + fn.__raven_wrapper__; }, 'Permission denied'); var wrapped = Raven.wrap(fn); assert.equal(fn, wrapped); From 33f0872da73db283f509ff05f620a3213fbb552b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kamil=20Og=C3=B3rek?= Date: Tue, 13 Feb 2018 11:12:57 +0100 Subject: [PATCH 08/75] 3.22.3 --- CHANGELOG.md | 4 + bower.json | 2 +- dist/plugins/angular.js | 354 +- dist/plugins/angular.min.js | 4 +- dist/plugins/angular.min.js.map | 2 +- dist/plugins/console.js | 369 +-- dist/plugins/console.min.js | 4 +- dist/plugins/console.min.js.map | 2 +- dist/plugins/ember.js | 35 +- dist/plugins/ember.min.js | 4 +- dist/plugins/ember.min.js.map | 2 +- dist/plugins/require.js | 32 +- dist/plugins/require.min.js | 4 +- dist/plugins/require.min.js.map | 2 +- dist/plugins/vue.js | 31 +- dist/plugins/vue.min.js | 4 +- dist/plugins/vue.min.js.map | 2 +- dist/raven.js | 5460 ++++++++++++++++--------------- dist/raven.min.js | 4 +- dist/raven.min.js.map | 2 +- docs/sentry-doc-config.json | 2 +- package.json | 2 +- src/raven.js | 2 +- test/raven.test.js | 4 +- 24 files changed, 3209 insertions(+), 3124 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ac58814b5d6a..8e15bcc36469 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,9 @@ # Changelog +## 3.22.3 + +* BUGFIX: Reverted Rollup-based build system and fixed broken plugin builds + ## 3.22.2 * BUGFIX: Use correct trimHeadFrames value if capturing new trace (#1216) diff --git a/bower.json b/bower.json index 1696b60b533e..adc8fa55a371 100644 --- a/bower.json +++ b/bower.json @@ -1,6 +1,6 @@ { "name": "raven-js", - "version": "3.22.2", + "version": "3.22.3", "dependencies": {}, "main": "dist/raven.js", "ignore": [ diff --git a/dist/plugins/angular.js b/dist/plugins/angular.js index dc9e2db69578..453fcc4914b8 100644 --- a/dist/plugins/angular.js +++ b/dist/plugins/angular.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.22.2 (1b6187b) | github.com/getsentry/raven-js */ +/*! Raven.js 3.22.3 (d6a1ff2) | github.com/getsentry/raven-js */ /* * Includes TraceKit @@ -10,60 +10,103 @@ * */ -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : - typeof define === 'function' && define.amd ? define(factory) : - (global.Raven = global.Raven || {}, global.Raven.Plugins = global.Raven.Plugins || {}, global.Raven.Plugins.Angular = factory()); -}(this, (function () { 'use strict'; +(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=(g.Raven||(g.Raven = {}));g=(g.Plugins||(g.Plugins = {}));g.Angular = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o href parsing trick because React Native and other // environments where DOM might not be available - - function parseUrl(url) { if (typeof url !== 'string') return {}; - var match = url.match(/^(([^:\/?#]+):)?(\/\/([^\/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?$/); // coerce to undefined values to empty string so we don't get 'undefined' + var match = url.match(/^(([^:\/?#]+):)?(\/\/([^\/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?$/); + // coerce to undefined values to empty string so we don't get 'undefined' var query = match[6] || ''; var fragment = match[8] || ''; return { @@ -256,10 +286,8 @@ function parseUrl(url) { host: match[4], path: match[5], relative: match[5] + query + fragment // everything minus origin - }; } - function uuid4() { var crypto = _window.crypto || _window.msCrypto; @@ -267,32 +295,41 @@ function uuid4() { // Use window.crypto API if available // eslint-disable-next-line no-undef var arr = new Uint16Array(8); - crypto.getRandomValues(arr); // set 4 in byte 7 - - arr[3] = arr[3] & 0xfff | 0x4000; // set 2 most significant bits of byte 9 to '10' + crypto.getRandomValues(arr); - arr[4] = arr[4] & 0x3fff | 0x8000; + // set 4 in byte 7 + arr[3] = (arr[3] & 0xfff) | 0x4000; + // set 2 most significant bits of byte 9 to '10' + arr[4] = (arr[4] & 0x3fff) | 0x8000; - var pad = function pad(num) { + var pad = function(num) { var v = num.toString(16); - while (v.length < 4) { v = '0' + v; } - return v; }; - return pad(arr[0]) + pad(arr[1]) + pad(arr[2]) + pad(arr[3]) + pad(arr[4]) + pad(arr[5]) + pad(arr[6]) + pad(arr[7]); + return ( + pad(arr[0]) + + pad(arr[1]) + + pad(arr[2]) + + pad(arr[3]) + + pad(arr[4]) + + pad(arr[5]) + + pad(arr[6]) + + pad(arr[7]) + ); } else { // http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/2117523#2117523 - return 'xxxxxxxxxxxx4xxxyxxxxxxxxxxxxxxx'.replace(/[xy]/g, function (c) { - var r = Math.random() * 16 | 0, - v = c === 'x' ? r : r & 0x3 | 0x8; + return 'xxxxxxxxxxxx4xxxyxxxxxxxxxxxxxxx'.replace(/[xy]/g, function(c) { + var r = (Math.random() * 16) | 0, + v = c === 'x' ? r : (r & 0x3) | 0x8; return v.toString(16); }); } } + /** * Given a child DOM element, returns a query-selector statement describing that * and its ancestors @@ -300,137 +337,139 @@ function uuid4() { * @param elem * @returns {string} */ - - function htmlTreeAsString(elem) { /* eslint no-extra-parens:0*/ var MAX_TRAVERSE_HEIGHT = 5, - MAX_OUTPUT_LEN = 80, - out = [], - height = 0, - len = 0, - separator = ' > ', - sepLength = separator.length, - nextStr; + MAX_OUTPUT_LEN = 80, + out = [], + height = 0, + len = 0, + separator = ' > ', + sepLength = separator.length, + nextStr; while (elem && height++ < MAX_TRAVERSE_HEIGHT) { - nextStr = htmlElementAsString(elem); // bail out if + nextStr = htmlElementAsString(elem); + // bail out if // - nextStr is the 'html' element // - the length of the string that would be created exceeds MAX_OUTPUT_LEN // (ignore this limit if we are on the first iteration) - - if (nextStr === 'html' || height > 1 && len + out.length * sepLength + nextStr.length >= MAX_OUTPUT_LEN) { + if ( + nextStr === 'html' || + (height > 1 && len + out.length * sepLength + nextStr.length >= MAX_OUTPUT_LEN) + ) { break; } out.push(nextStr); + len += nextStr.length; elem = elem.parentNode; } return out.reverse().join(separator); } + /** * Returns a simple, query-selector representation of a DOM element * e.g. [HTMLElement] => input#foo.btn[name=baz] * @param HTMLElement * @returns {string} */ - - function htmlElementAsString(elem) { var out = [], - className, - classes, - key, - attr, - i; + className, + classes, + key, + attr, + i; if (!elem || !elem.tagName) { return ''; } out.push(elem.tagName.toLowerCase()); - if (elem.id) { out.push('#' + elem.id); } className = elem.className; - if (className && isString(className)) { classes = className.split(/\s+/); - for (i = 0; i < classes.length; i++) { out.push('.' + classes[i]); } } - var attrWhitelist = ['type', 'name', 'title', 'alt']; - for (i = 0; i < attrWhitelist.length; i++) { key = attrWhitelist[i]; attr = elem.getAttribute(key); - if (attr) { out.push('[' + key + '="' + attr + '"]'); } } - return out.join(''); } + /** * Returns true if either a OR b is truthy, but not both */ - - function isOnlyOneTruthy(a, b) { return !!(!!a ^ !!b); } + /** * Returns true if both parameters are undefined */ - - function isBothUndefined(a, b) { return isUndefined(a) && isUndefined(b); } + /** * Returns true if the two input exception interfaces have the same content */ - - function isSameException(ex1, ex2) { if (isOnlyOneTruthy(ex1, ex2)) return false; + ex1 = ex1.values[0]; ex2 = ex2.values[0]; - if (ex1.type !== ex2.type || ex1.value !== ex2.value) return false; // in case both stacktraces are undefined, we can't decide so default to false + if (ex1.type !== ex2.type || ex1.value !== ex2.value) return false; + + // in case both stacktraces are undefined, we can't decide so default to false if (isBothUndefined(ex1.stacktrace, ex2.stacktrace)) return false; + return isSameStacktrace(ex1.stacktrace, ex2.stacktrace); } + /** * Returns true if the two input stack trace interfaces have the same content */ - - function isSameStacktrace(stack1, stack2) { if (isOnlyOneTruthy(stack1, stack2)) return false; + var frames1 = stack1.frames; - var frames2 = stack2.frames; // Exit early if frame count differs + var frames2 = stack2.frames; - if (frames1.length !== frames2.length) return false; // Iterate through every frame; bail out if anything differs + // Exit early if frame count differs + if (frames1.length !== frames2.length) return false; + // Iterate through every frame; bail out if anything differs var a, b; - for (var i = 0; i < frames1.length; i++) { a = frames1[i]; b = frames2[i]; - if (a.filename !== b.filename || a.lineno !== b.lineno || a.colno !== b.colno || a['function'] !== b['function']) return false; + if ( + a.filename !== b.filename || + a.lineno !== b.lineno || + a.colno !== b.colno || + a['function'] !== b['function'] + ) + return false; } - return true; } + /** * Polyfill a method * @param obj object e.g. `document` @@ -438,28 +477,25 @@ function isSameStacktrace(stack1, stack2) { * @param replacement replacement function * @param track {optional} record instrumentation to an array */ - - function fill(obj, name, replacement, track) { var orig = obj[name]; obj[name] = replacement(orig); obj[name].__raven__ = true; obj[name].__orig__ = orig; - if (track) { track.push([obj, name, orig]); } } + /** * Join values in array * @param input array of values to be joined together * @param delimiter string to be placed in-between values * @returns {string} */ - - function safeJoin(input, delimiter) { if (!isArray(input)) return ''; + var output = []; for (var i = 0; i < input.length; i++) { @@ -473,7 +509,7 @@ function safeJoin(input, delimiter) { return output.join(delimiter); } -var utils = { +module.exports = { isObject: isObject, isError: isError, isErrorEvent: isErrorEvent, @@ -485,7 +521,7 @@ var utils = { isEmptyObject: isEmptyObject, supportsErrorEvent: supportsErrorEvent, supportsFetch: supportsFetch, - wrappedCallback: wrappedCallback$1, + wrappedCallback: wrappedCallback, each: each, objectMerge: objectMerge, truncate: truncate, @@ -503,72 +539,6 @@ var utils = { safeJoin: safeJoin }; -/** - * Angular.js plugin - * - * Provides an $exceptionHandler for Angular.js - */ - -var wrappedCallback = utils.wrappedCallback; // See https://github.com/angular/angular.js/blob/v1.4.7/src/minErr.js - -var angularPattern = /^\[((?:[$a-zA-Z0-9]+:)?(?:[$a-zA-Z0-9]+))\] (.*?)\n?(\S+)$/; -var moduleName = 'ngRaven'; - -function angularPlugin(Raven, angular) { - angular = angular || window.angular; - if (!angular) return; - - function RavenProvider() { - this.$get = ['$window', function ($window) { - return Raven; - }]; - } - - function ExceptionHandlerProvider($provide) { - $provide.decorator('$exceptionHandler', ['Raven', '$delegate', exceptionHandler]); - } - - function exceptionHandler(R, $delegate) { - return function (ex, cause) { - R.captureException(ex, { - extra: { - cause: cause - } - }); - $delegate(ex, cause); - }; - } - - angular.module(moduleName, []).provider('Raven', RavenProvider).config(['$provide', ExceptionHandlerProvider]); - Raven.setDataCallback(wrappedCallback(function (data) { - return angularPlugin._normalizeData(data); - })); -} - -angularPlugin._normalizeData = function (data) { - // We only care about mutating an exception - var exception = data.exception; - - if (exception) { - exception = exception.values[0]; - var matches = angularPattern.exec(exception.value); - - if (matches) { - // This type now becomes something like: $rootScope:inprog - exception.type = matches[1]; - exception.value = matches[2]; - data.message = exception.type + ': ' + exception.value; // auto set a new tag specifically for the angular error url - - data.extra.angularDocs = matches[3].substr(0, 250); - } - } - - return data; -}; - -angularPlugin.moduleName = moduleName; -var angular = angularPlugin; - -return angular; - -}))); +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{}]},{},[1])(1) +}); \ No newline at end of file diff --git a/dist/plugins/angular.min.js b/dist/plugins/angular.min.js index dd70ed3681d7..bf7923234138 100644 --- a/dist/plugins/angular.min.js +++ b/dist/plugins/angular.min.js @@ -1,3 +1,3 @@ -/*! Raven.js 3.22.2 (1b6187b) | github.com/getsentry/raven-js */ -!function(a,b){"object"==typeof exports&&"undefined"!=typeof module?module.exports=b():"function"==typeof define&&define.amd?define(b):(a.Raven=a.Raven||{},a.Raven.Plugins=a.Raven.Plugins||{},a.Raven.Plugins.Angular=b())}(this,function(){"use strict";function a(b){return(a="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(a){return typeof a}:function(a){return a&&"function"==typeof Symbol&&a.constructor===Symbol&&a!==Symbol.prototype?"symbol":typeof a})(b)}function b(b){return"object"===a(b)&&null!==b}function c(a){switch({}.toString.call(a)){case"[object Error]":return!0;case"[object Exception]":return!0;case"[object DOMException]":return!0;default:return a instanceof Error}}function d(a){return k()&&"[object ErrorEvent]"==={}.toString.call(a)}function e(a){return void 0===a}function f(a){return"function"==typeof a}function g(a){return"[object Object]"===Object.prototype.toString.call(a)}function h(a){return"[object String]"===Object.prototype.toString.call(a)}function i(a){return"[object Array]"===Object.prototype.toString.call(a)}function j(a){if(!g(a))return!1;for(var b in a)if(a.hasOwnProperty(b))return!1;return!0}function k(){try{return new ErrorEvent(""),!0}catch(a){return!1}}function l(){if(!("fetch"in H))return!1;try{return new Headers,new Request(""),new Response,!0}catch(a){return!1}}function m(a){function b(b,c){var d=a(b)||b;return c?c(d)||d:d}return b}function n(a,b){var c,d;if(e(a.length))for(c in a)r(a,c)&&b.call(null,c,a[c]);else if(d=a.length)for(c=0;c ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function x(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&h(b))for(c=b.split(/\s+/),f=0;f ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function y(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&i(b))for(c=b.split(/\s+/),f=0;f href parsing trick because React Native and other // environments where DOM might not be available - - function parseUrl(url) { if (typeof url !== 'string') return {}; - var match = url.match(/^(([^:\/?#]+):)?(\/\/([^\/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?$/); // coerce to undefined values to empty string so we don't get 'undefined' + var match = url.match(/^(([^:\/?#]+):)?(\/\/([^\/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?$/); + // coerce to undefined values to empty string so we don't get 'undefined' var query = match[6] || ''; var fragment = match[8] || ''; return { @@ -256,10 +288,8 @@ function parseUrl(url) { host: match[4], path: match[5], relative: match[5] + query + fragment // everything minus origin - }; } - function uuid4() { var crypto = _window.crypto || _window.msCrypto; @@ -267,32 +297,41 @@ function uuid4() { // Use window.crypto API if available // eslint-disable-next-line no-undef var arr = new Uint16Array(8); - crypto.getRandomValues(arr); // set 4 in byte 7 + crypto.getRandomValues(arr); - arr[3] = arr[3] & 0xfff | 0x4000; // set 2 most significant bits of byte 9 to '10' + // set 4 in byte 7 + arr[3] = (arr[3] & 0xfff) | 0x4000; + // set 2 most significant bits of byte 9 to '10' + arr[4] = (arr[4] & 0x3fff) | 0x8000; - arr[4] = arr[4] & 0x3fff | 0x8000; - - var pad = function pad(num) { + var pad = function(num) { var v = num.toString(16); - while (v.length < 4) { v = '0' + v; } - return v; }; - return pad(arr[0]) + pad(arr[1]) + pad(arr[2]) + pad(arr[3]) + pad(arr[4]) + pad(arr[5]) + pad(arr[6]) + pad(arr[7]); + return ( + pad(arr[0]) + + pad(arr[1]) + + pad(arr[2]) + + pad(arr[3]) + + pad(arr[4]) + + pad(arr[5]) + + pad(arr[6]) + + pad(arr[7]) + ); } else { // http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/2117523#2117523 - return 'xxxxxxxxxxxx4xxxyxxxxxxxxxxxxxxx'.replace(/[xy]/g, function (c) { - var r = Math.random() * 16 | 0, - v = c === 'x' ? r : r & 0x3 | 0x8; + return 'xxxxxxxxxxxx4xxxyxxxxxxxxxxxxxxx'.replace(/[xy]/g, function(c) { + var r = (Math.random() * 16) | 0, + v = c === 'x' ? r : (r & 0x3) | 0x8; return v.toString(16); }); } } + /** * Given a child DOM element, returns a query-selector statement describing that * and its ancestors @@ -300,137 +339,139 @@ function uuid4() { * @param elem * @returns {string} */ - - function htmlTreeAsString(elem) { /* eslint no-extra-parens:0*/ var MAX_TRAVERSE_HEIGHT = 5, - MAX_OUTPUT_LEN = 80, - out = [], - height = 0, - len = 0, - separator = ' > ', - sepLength = separator.length, - nextStr; + MAX_OUTPUT_LEN = 80, + out = [], + height = 0, + len = 0, + separator = ' > ', + sepLength = separator.length, + nextStr; while (elem && height++ < MAX_TRAVERSE_HEIGHT) { - nextStr = htmlElementAsString(elem); // bail out if + nextStr = htmlElementAsString(elem); + // bail out if // - nextStr is the 'html' element // - the length of the string that would be created exceeds MAX_OUTPUT_LEN // (ignore this limit if we are on the first iteration) - - if (nextStr === 'html' || height > 1 && len + out.length * sepLength + nextStr.length >= MAX_OUTPUT_LEN) { + if ( + nextStr === 'html' || + (height > 1 && len + out.length * sepLength + nextStr.length >= MAX_OUTPUT_LEN) + ) { break; } out.push(nextStr); + len += nextStr.length; elem = elem.parentNode; } return out.reverse().join(separator); } + /** * Returns a simple, query-selector representation of a DOM element * e.g. [HTMLElement] => input#foo.btn[name=baz] * @param HTMLElement * @returns {string} */ - - function htmlElementAsString(elem) { var out = [], - className, - classes, - key, - attr, - i; + className, + classes, + key, + attr, + i; if (!elem || !elem.tagName) { return ''; } out.push(elem.tagName.toLowerCase()); - if (elem.id) { out.push('#' + elem.id); } className = elem.className; - if (className && isString(className)) { classes = className.split(/\s+/); - for (i = 0; i < classes.length; i++) { out.push('.' + classes[i]); } } - var attrWhitelist = ['type', 'name', 'title', 'alt']; - for (i = 0; i < attrWhitelist.length; i++) { key = attrWhitelist[i]; attr = elem.getAttribute(key); - if (attr) { out.push('[' + key + '="' + attr + '"]'); } } - return out.join(''); } + /** * Returns true if either a OR b is truthy, but not both */ - - function isOnlyOneTruthy(a, b) { return !!(!!a ^ !!b); } + /** * Returns true if both parameters are undefined */ - - function isBothUndefined(a, b) { return isUndefined(a) && isUndefined(b); } + /** * Returns true if the two input exception interfaces have the same content */ - - function isSameException(ex1, ex2) { if (isOnlyOneTruthy(ex1, ex2)) return false; + ex1 = ex1.values[0]; ex2 = ex2.values[0]; - if (ex1.type !== ex2.type || ex1.value !== ex2.value) return false; // in case both stacktraces are undefined, we can't decide so default to false + if (ex1.type !== ex2.type || ex1.value !== ex2.value) return false; + + // in case both stacktraces are undefined, we can't decide so default to false if (isBothUndefined(ex1.stacktrace, ex2.stacktrace)) return false; + return isSameStacktrace(ex1.stacktrace, ex2.stacktrace); } + /** * Returns true if the two input stack trace interfaces have the same content */ - - function isSameStacktrace(stack1, stack2) { if (isOnlyOneTruthy(stack1, stack2)) return false; + var frames1 = stack1.frames; - var frames2 = stack2.frames; // Exit early if frame count differs + var frames2 = stack2.frames; - if (frames1.length !== frames2.length) return false; // Iterate through every frame; bail out if anything differs + // Exit early if frame count differs + if (frames1.length !== frames2.length) return false; + // Iterate through every frame; bail out if anything differs var a, b; - for (var i = 0; i < frames1.length; i++) { a = frames1[i]; b = frames2[i]; - if (a.filename !== b.filename || a.lineno !== b.lineno || a.colno !== b.colno || a['function'] !== b['function']) return false; + if ( + a.filename !== b.filename || + a.lineno !== b.lineno || + a.colno !== b.colno || + a['function'] !== b['function'] + ) + return false; } - return true; } + /** * Polyfill a method * @param obj object e.g. `document` @@ -438,28 +479,25 @@ function isSameStacktrace(stack1, stack2) { * @param replacement replacement function * @param track {optional} record instrumentation to an array */ - - function fill(obj, name, replacement, track) { var orig = obj[name]; obj[name] = replacement(orig); obj[name].__raven__ = true; obj[name].__orig__ = orig; - if (track) { track.push([obj, name, orig]); } } + /** * Join values in array * @param input array of values to be joined together * @param delimiter string to be placed in-between values * @returns {string} */ - - function safeJoin(input, delimiter) { if (!isArray(input)) return ''; + var output = []; for (var i = 0; i < input.length; i++) { @@ -473,7 +511,7 @@ function safeJoin(input, delimiter) { return output.join(delimiter); } -var utils = { +module.exports = { isObject: isObject, isError: isError, isErrorEvent: isErrorEvent, @@ -503,85 +541,6 @@ var utils = { safeJoin: safeJoin }; -var wrapMethod = function wrapMethod(console, level, callback) { - var originalConsoleLevel = console[level]; - var originalConsole = console; - - if (!(level in console)) { - return; - } - - var sentryLevel = level === 'warn' ? 'warning' : level; - - console[level] = function () { - var args = [].slice.call(arguments); - var msg = utils.safeJoin(args, ' '); - var data = { - level: sentryLevel, - logger: 'console', - extra: { - arguments: args - } - }; - - if (level === 'assert') { - if (args[0] === false) { - // Default browsers message - msg = 'Assertion failed: ' + (utils.safeJoin(args.slice(1), ' ') || 'console.assert'); - data.extra.arguments = args.slice(1); - callback && callback(msg, data); - } - } else { - callback && callback(msg, data); - } // this fails for some browsers. :( - - - if (originalConsoleLevel) { - // IE9 doesn't allow calling apply on console functions directly - // See: https://stackoverflow.com/questions/5472938/does-ie9-support-console-log-and-is-it-a-real-function#answer-5473193 - Function.prototype.apply.call(originalConsoleLevel, originalConsole, args); - } - }; -}; - -var console$2 = { - wrapMethod: wrapMethod -}; - -/** - * console plugin - * - * Monkey patches console.* calls into Sentry messages with - * their appropriate log levels. (Experimental) - * - * Options: - * - * `levels`: An array of levels (methods on `console`) to report to Sentry. - * Defaults to debug, info, warn, and error. - */ - -var wrapConsoleMethod = console$2.wrapMethod; - -function consolePlugin(Raven, console, pluginOptions) { - console = console || window.console || {}; - pluginOptions = pluginOptions || {}; - var logLevels = pluginOptions.levels || ['debug', 'info', 'warn', 'error']; - if ('assert' in console) logLevels.push('assert'); - - var callback = function callback(msg, data) { - Raven.captureMessage(msg, data); - }; - - var level = logLevels.pop(); - - while (level) { - wrapConsoleMethod(console, level, callback); - level = logLevels.pop(); - } -} - -var console = consolePlugin; - -return console; - -}))); +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{}]},{},[1])(1) +}); \ No newline at end of file diff --git a/dist/plugins/console.min.js b/dist/plugins/console.min.js index 1d8556035e97..c983ecf74774 100644 --- a/dist/plugins/console.min.js +++ b/dist/plugins/console.min.js @@ -1,3 +1,3 @@ -/*! Raven.js 3.22.2 (1b6187b) | github.com/getsentry/raven-js */ -!function(a,b){"object"==typeof exports&&"undefined"!=typeof module?module.exports=b():"function"==typeof define&&define.amd?define(b):(a.Raven=a.Raven||{},a.Raven.Plugins=a.Raven.Plugins||{},a.Raven.Plugins.Console=b())}(this,function(){"use strict";function a(b){return(a="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(a){return typeof a}:function(a){return a&&"function"==typeof Symbol&&a.constructor===Symbol&&a!==Symbol.prototype?"symbol":typeof a})(b)}function b(b){return"object"===a(b)&&null!==b}function c(a){switch({}.toString.call(a)){case"[object Error]":return!0;case"[object Exception]":return!0;case"[object DOMException]":return!0;default:return a instanceof Error}}function d(a){return k()&&"[object ErrorEvent]"==={}.toString.call(a)}function e(a){return void 0===a}function f(a){return"function"==typeof a}function g(a){return"[object Object]"===Object.prototype.toString.call(a)}function h(a){return"[object String]"===Object.prototype.toString.call(a)}function i(a){return"[object Array]"===Object.prototype.toString.call(a)}function j(a){if(!g(a))return!1;for(var b in a)if(a.hasOwnProperty(b))return!1;return!0}function k(){try{return new ErrorEvent(""),!0}catch(a){return!1}}function l(){if(!("fetch"in H))return!1;try{return new Headers,new Request(""),new Response,!0}catch(a){return!1}}function m(a){function b(b,c){var d=a(b)||b;return c?c(d)||d:d}return b}function n(a,b){var c,d;if(e(a.length))for(c in a)r(a,c)&&b.call(null,c,a[c]);else if(d=a.length)for(c=0;c ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function x(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&h(b))for(c=b.split(/\s+/),f=0;f ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function y(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&i(b))for(c=b.split(/\s+/),f=0;f' : 'anonymous component') + (vm._isVue && vm.$options.__file ? ' at ' + vm.$options.__file : ''); + return ( + (name ? 'component <' + name + '>' : 'anonymous component') + + (vm._isVue && vm.$options.__file ? ' at ' + vm.$options.__file : '') + ); } function vuePlugin(Raven, Vue) { - Vue = Vue || window.Vue; // quit if Vue isn't on the page + Vue = Vue || window.Vue; + // quit if Vue isn't on the page if (!Vue || !Vue.config) return; - var _oldOnError = Vue.config.errorHandler; + var _oldOnError = Vue.config.errorHandler; Vue.config.errorHandler = function VueErrorHandler(error, vm, info) { - var metaData = {}; // vm and lifecycleHook are not always available + var metaData = {}; + // vm and lifecycleHook are not always available if (Object.prototype.toString.call(vm) === '[object Object]') { metaData.componentName = formatComponentName(vm); metaData.propsData = vm.$options.propsData; @@ -57,8 +57,7 @@ function vuePlugin(Raven, Vue) { }; } -var vue = vuePlugin; - -return vue; +module.exports = vuePlugin; -}))); +},{}]},{},[1])(1) +}); \ No newline at end of file diff --git a/dist/plugins/vue.min.js b/dist/plugins/vue.min.js index 94ee6f5f82ca..a9d75d577297 100644 --- a/dist/plugins/vue.min.js +++ b/dist/plugins/vue.min.js @@ -1,3 +1,3 @@ -/*! Raven.js 3.22.2 (1b6187b) | github.com/getsentry/raven-js */ -!function(a,b){"object"==typeof exports&&"undefined"!=typeof module?module.exports=b():"function"==typeof define&&define.amd?define(b):(a.Raven=a.Raven||{},a.Raven.Plugins=a.Raven.Plugins||{},a.Raven.Plugins.Vue=b())}(this,function(){"use strict";function a(a){if(a.$root===a)return"root instance";var b=a._isVue?a.$options.name||a.$options._componentTag:a.name;return(b?"component <"+b+">":"anonymous component")+(a._isVue&&a.$options.__file?" at "+a.$options.__file:"")}function b(b,c){if(c=c||window.Vue,c&&c.config){var d=c.config.errorHandler;c.config.errorHandler=function(c,e,f){var g={};"[object Object]"===Object.prototype.toString.call(e)&&(g.componentName=a(e),g.propsData=e.$options.propsData),"undefined"!=typeof f&&(g.lifecycleHook=f),b.captureException(c,{extra:g}),"function"==typeof d&&d.call(this,c,e,f)}}}var c=b;return c}); +/*! Raven.js 3.22.3 (d6a1ff2) | github.com/getsentry/raven-js */ +!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b=b.Raven||(b.Raven={}),b=b.Plugins||(b.Plugins={}),b.Vue=a()}}(function(){return function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};b[g][0].call(k.exports,function(a){var c=b[g][1][a];return e(c?c:a)},k,k.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;g":"anonymous component")+(a._isVue&&a.$options.__file?" at "+a.$options.__file:"")}function e(a,b){if(b=b||window.Vue,b&&b.config){var c=b.config.errorHandler;b.config.errorHandler=function(b,e,f){var g={};"[object Object]"===Object.prototype.toString.call(e)&&(g.componentName=d(e),g.propsData=e.$options.propsData),"undefined"!=typeof f&&(g.lifecycleHook=f),a.captureException(b,{extra:g}),"function"==typeof c&&c.call(this,b,e,f)}}}b.exports=e},{}]},{},[1])(1)}); //# sourceMappingURL=vue.min.js.map \ No newline at end of file diff --git a/dist/plugins/vue.min.js.map b/dist/plugins/vue.min.js.map index d1024dc73b49..f263c96e5eb5 100644 --- a/dist/plugins/vue.min.js.map +++ b/dist/plugins/vue.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["vue.js"],"names":["global","factory","exports","module","define","amd","Raven","Plugins","Vue","this","formatComponentName","vm","$root","name","_isVue","$options","_componentTag","__file","vuePlugin","window","config","_oldOnError","errorHandler","error","info","metaData","Object","prototype","toString","call","componentName","propsData","lifecycleHook","captureException","extra","vue"],"mappings":";CAYC,SAAUA,EAAQC,GACC,gBAAZC,UAA0C,mBAAXC,QAAyBA,OAAOD,QAAUD,IAC9D,kBAAXG,SAAyBA,OAAOC,IAAMD,OAAOH,IACnDD,EAAOM,MAAQN,EAAOM,UAAaN,EAAOM,MAAMC,QAAUP,EAAOM,MAAMC,YAAeP,EAAOM,MAAMC,QAAQC,IAAMP,MACjHQ,KAAM,WAAe,YAMvB,SAASC,GAAoBC,GAC3B,GAAIA,EAAGC,QAAUD,EACf,MAAO,eAGT,IAAIE,GAAOF,EAAGG,OAASH,EAAGI,SAASF,MAAQF,EAAGI,SAASC,cAAgBL,EAAGE,IAC1E,QAAQA,EAAO,cAAgBA,EAAO,IAAM,wBAA0BF,EAAGG,QAAUH,EAAGI,SAASE,OAAS,OAASN,EAAGI,SAASE,OAAS,IAGxI,QAASC,GAAUZ,EAAOE,GAGxB,GAFAA,EAAMA,GAAOW,OAAOX,IAEfA,GAAQA,EAAIY,OAAjB,CACA,GAAIC,GAAcb,EAAIY,OAAOE,YAE7Bd,GAAIY,OAAOE,aAAe,SAAyBC,EAAOZ,EAAIa,GAC5D,GAAIC,KAEuC,qBAAvCC,OAAOC,UAAUC,SAASC,KAAKlB,KACjCc,EAASK,cAAgBpB,EAAoBC,GAC7Cc,EAASM,UAAYpB,EAAGI,SAASgB,WAGf,mBAATP,KACTC,EAASO,cAAgBR,GAG3BlB,EAAM2B,iBAAiBV,GACrBW,MAAOT,IAGkB,kBAAhBJ,IACTA,EAAYQ,KAAKpB,KAAMc,EAAOZ,EAAIa,KAKxC,GAAIW,GAAMjB,CAEV,OAAOiB","file":"vue.min.js"} \ No newline at end of file +{"version":3,"sources":["vue.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","Plugins","Vue","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","formatComponentName","vm","$root","name","_isVue","$options","_componentTag","__file","vuePlugin","config","_oldOnError","errorHandler","error","info","metaData","Object","prototype","toString","componentName","propsData","lifecycleHook","captureException","extra"],"mappings":";CAYA,SAAUA,GAAG,GAAoB,gBAAVC,UAAoC,mBAATC,QAAsBA,OAAOD,QAAQD,QAAS,IAAmB,kBAATG,SAAqBA,OAAOC,IAAKD,UAAUH,OAAO,CAAC,GAAIK,EAAkCA,GAAb,mBAATC,QAAwBA,OAA+B,mBAATC,QAAwBA,OAA6B,mBAAPC,MAAsBA,KAAYC,KAAKJ,EAAGA,EAAEK,QAAQL,EAAEK,UAAaL,EAAGA,EAAEM,UAAUN,EAAEM,YAAeN,EAAEO,IAAMZ,MAAO,WAAqC,MAAO,SAAUa,GAAEC,EAAEC,EAAEC,GAAG,QAASC,GAAEC,EAAEC,GAAG,IAAIJ,EAAEG,GAAG,CAAC,IAAIJ,EAAEI,GAAG,CAAC,GAAIE,GAAkB,kBAATC,UAAqBA,OAAQ,KAAIF,GAAGC,EAAE,MAAOA,GAAEF,GAAE,EAAI,IAAGI,EAAE,MAAOA,GAAEJ,GAAE,EAAI,IAAIlB,GAAE,GAAIuB,OAAM,uBAAuBL,EAAE,IAAK,MAAMlB,GAAEwB,KAAK,mBAAmBxB,EAAE,GAAIyB,GAAEV,EAAEG,IAAIjB,WAAYa,GAAEI,GAAG,GAAGQ,KAAKD,EAAExB,QAAQ,SAASY,GAAG,GAAIE,GAAED,EAAEI,GAAG,GAAGL,EAAG,OAAOI,GAAEF,EAAEA,EAAEF,IAAIY,EAAEA,EAAExB,QAAQY,EAAEC,EAAEC,EAAEC,GAAG,MAAOD,GAAEG,GAAGjB,QAAkD,IAAI,GAA1CqB,GAAkB,kBAATD,UAAqBA,QAAgBH,EAAE,EAAEA,EAAEF,EAAEW,OAAOT,IAAID,EAAED,EAAEE,GAAI,OAAOD,KAAKW,GAAG,SAASC,EAAQ3B,EAAOD,GAM93B,QAAS6B,GAAoBC,GAC3B,GAAIA,EAAGC,QAAUD,EACf,MAAO,eAET,IAAIE,GAAOF,EAAGG,OAASH,EAAGI,SAASF,MAAQF,EAAGI,SAASC,cAAgBL,EAAGE,IAC1E,QACGA,EAAO,cAAgBA,EAAO,IAAM,wBACpCF,EAAGG,QAAUH,EAAGI,SAASE,OAAS,OAASN,EAAGI,SAASE,OAAS,IAIrE,QAASC,GAAU5B,EAAOE,GAIxB,GAHAA,EAAMA,GAAON,OAAOM,IAGfA,GAAQA,EAAI2B,OAAjB,CAEA,GAAIC,GAAc5B,EAAI2B,OAAOE,YAC7B7B,GAAI2B,OAAOE,aAAe,SAAyBC,EAAOX,EAAIY,GAC5D,GAAIC,KAGuC,qBAAvCC,OAAOC,UAAUC,SAASrB,KAAKK,KACjCa,EAASI,cAAgBlB,EAAoBC,GAC7Ca,EAASK,UAAYlB,EAAGI,SAASc,WAGf,mBAATN,KACTC,EAASM,cAAgBP,GAG3BjC,EAAMyC,iBAAiBT,GACrBU,MAAOR,IAGkB,kBAAhBJ,IACTA,EAAYd,KAAKjB,KAAMiC,EAAOX,EAAIY,KAKxCzC,EAAOD,QAAUqC,YAEN,IAAI","file":"vue.min.js"} \ No newline at end of file diff --git a/dist/raven.js b/dist/raven.js index 21e4188da574..ce27b87a2e6e 100644 --- a/dist/raven.js +++ b/dist/raven.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.22.2 (1b6187b) | github.com/getsentry/raven-js */ +/*! Raven.js 3.22.3 (d6a1ff2) | github.com/getsentry/raven-js */ /* * Includes TraceKit @@ -10,3122 +10,3304 @@ * */ -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : - typeof define === 'function' && define.amd ? define(factory) : - (global.Raven = factory()); -}(this, (function () { 'use strict'; +(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.Raven = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o href parsing trick because React Native and other -// environments where DOM might not be available + /* + * Set the DSN (can be called multiple time unlike config) + * + * @param {string} dsn The public Sentry DSN + */ + setDSN: function(dsn) { + var self = this, + uri = self._parseDSN(dsn), + lastSlash = uri.path.lastIndexOf('/'), + path = uri.path.substr(1, lastSlash); + self._dsn = dsn; + self._globalKey = uri.user; + self._globalSecret = uri.pass && uri.pass.substr(1); + self._globalProject = uri.path.substr(lastSlash + 1); -function parseUrl$1(url) { - if (typeof url !== 'string') return {}; - var match = url.match(/^(([^:\/?#]+):)?(\/\/([^\/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?$/); // coerce to undefined values to empty string so we don't get 'undefined' + self._globalServer = self._getGlobalServer(uri); - var query = match[6] || ''; - var fragment = match[8] || ''; - return { - protocol: match[2], - host: match[4], - path: match[5], - relative: match[5] + query + fragment // everything minus origin + self._globalEndpoint = + self._globalServer + '/' + path + 'api/' + self._globalProject + '/store/'; - }; -} + // Reset backoff state since we may be pointing at a + // new project/server + this._resetBackoff(); + }, -function uuid4$1() { - var crypto = _window$3.crypto || _window$3.msCrypto; + /* + * Wrap code within a context so Raven can capture errors + * reliably across domains that is executed immediately. + * + * @param {object} options A specific set of options for this context [optional] + * @param {function} func The callback to be immediately executed within the context + * @param {array} args An array of arguments to be called with the callback [optional] + */ + context: function(options, func, args) { + if (isFunction(options)) { + args = func || []; + func = options; + options = undefined; + } - if (!isUndefined$1(crypto) && crypto.getRandomValues) { - // Use window.crypto API if available - // eslint-disable-next-line no-undef - var arr = new Uint16Array(8); - crypto.getRandomValues(arr); // set 4 in byte 7 + return this.wrap(options, func).apply(this, args); + }, - arr[3] = arr[3] & 0xfff | 0x4000; // set 2 most significant bits of byte 9 to '10' + /* + * Wrap code within a context and returns back a new function to be executed + * + * @param {object} options A specific set of options for this context [optional] + * @param {function} func The function to be wrapped in a new context + * @param {function} func A function to call before the try/catch wrapper [optional, private] + * @return {function} The newly wrapped functions with a context + */ + wrap: function(options, func, _before) { + var self = this; + // 1 argument has been passed, and it's not a function + // so just return it + if (isUndefined(func) && !isFunction(options)) { + return options; + } - arr[4] = arr[4] & 0x3fff | 0x8000; + // options is optional + if (isFunction(options)) { + func = options; + options = undefined; + } - var pad = function pad(num) { - var v = num.toString(16); + // At this point, we've passed along 2 arguments, and the second one + // is not a function either, so we'll just return the second argument. + if (!isFunction(func)) { + return func; + } - while (v.length < 4) { - v = '0' + v; + // We don't wanna wrap it twice! + try { + if (func.__raven__) { + return func; } - return v; - }; + // If this has already been wrapped in the past, return that + if (func.__raven_wrapper__) { + return func.__raven_wrapper__; + } + } catch (e) { + // Just accessing custom props in some Selenium environments + // can cause a "Permission denied" exception (see raven-js#495). + // Bail on wrapping and return the function as-is (defers to window.onerror). + return func; + } - return pad(arr[0]) + pad(arr[1]) + pad(arr[2]) + pad(arr[3]) + pad(arr[4]) + pad(arr[5]) + pad(arr[6]) + pad(arr[7]); - } else { - // http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/2117523#2117523 - return 'xxxxxxxxxxxx4xxxyxxxxxxxxxxxxxxx'.replace(/[xy]/g, function (c) { - var r = Math.random() * 16 | 0, - v = c === 'x' ? r : r & 0x3 | 0x8; - return v.toString(16); - }); - } -} -/** - * Given a child DOM element, returns a query-selector statement describing that - * and its ancestors - * e.g. [HTMLElement] => body > div > input#foo.btn[name=baz] - * @param elem - * @returns {string} - */ + function wrapped() { + var args = [], + i = arguments.length, + deep = !options || (options && options.deep !== false); + if (_before && isFunction(_before)) { + _before.apply(this, arguments); + } -function htmlTreeAsString$1(elem) { - /* eslint no-extra-parens:0*/ - var MAX_TRAVERSE_HEIGHT = 5, - MAX_OUTPUT_LEN = 80, - out = [], - height = 0, - len = 0, - separator = ' > ', - sepLength = separator.length, - nextStr; + // Recursively wrap all of a function's arguments that are + // functions themselves. + while (i--) args[i] = deep ? self.wrap(options, arguments[i]) : arguments[i]; - while (elem && height++ < MAX_TRAVERSE_HEIGHT) { - nextStr = htmlElementAsString(elem); // bail out if - // - nextStr is the 'html' element - // - the length of the string that would be created exceeds MAX_OUTPUT_LEN - // (ignore this limit if we are on the first iteration) + try { + // Attempt to invoke user-land function + // NOTE: If you are a Sentry user, and you are seeing this stack frame, it + // means Raven caught an error invoking your application code. This is + // expected behavior and NOT indicative of a bug with Raven.js. + return func.apply(this, args); + } catch (e) { + self._ignoreNextOnError(); + self.captureException(e, options); + throw e; + } + } - if (nextStr === 'html' || height > 1 && len + out.length * sepLength + nextStr.length >= MAX_OUTPUT_LEN) { - break; + // copy over properties of the old function + for (var property in func) { + if (hasKey(func, property)) { + wrapped[property] = func[property]; + } } + wrapped.prototype = func.prototype; - out.push(nextStr); - len += nextStr.length; - elem = elem.parentNode; - } + func.__raven_wrapper__ = wrapped; + // Signal that this function has been wrapped/filled already + // for both debugging and to prevent it to being wrapped/filled twice + wrapped.__raven__ = true; + wrapped.__orig__ = func; - return out.reverse().join(separator); -} -/** - * Returns a simple, query-selector representation of a DOM element - * e.g. [HTMLElement] => input#foo.btn[name=baz] - * @param HTMLElement - * @returns {string} - */ + return wrapped; + }, + /* + * Uninstalls the global error handler. + * + * @return {Raven} + */ + uninstall: function() { + TraceKit.report.uninstall(); -function htmlElementAsString(elem) { - var out = [], - className, - classes, - key, - attr, - i; + this._unpatchFunctionToString(); + this._restoreBuiltIns(); + this._restoreConsole(); - if (!elem || !elem.tagName) { - return ''; - } + Error.stackTraceLimit = this._originalErrorStackTraceLimit; + this._isRavenInstalled = false; - out.push(elem.tagName.toLowerCase()); + return this; + }, - if (elem.id) { - out.push('#' + elem.id); - } + /* + * Manually capture an exception and send it over to Sentry + * + * @param {error} ex An exception to be logged + * @param {object} options A specific set of options for this error [optional] + * @return {Raven} + */ + captureException: function(ex, options) { + options = objectMerge({trimHeadFrames: 0}, options ? options : {}); + // Cases for sending ex as a message, rather than an exception + var isNotError = !isError(ex); + var isNotErrorEvent = !isErrorEvent(ex); + var isErrorEventWithoutError = isErrorEvent(ex) && !ex.error; - className = elem.className; + if ((isNotError && isNotErrorEvent) || isErrorEventWithoutError) { + return this.captureMessage( + ex, + objectMerge(options, { + stacktrace: true, // if we fall back to captureMessage, default to attempting a new trace + trimHeadFrames: options.trimHeadFrames + 1 + }) + ); + } - if (className && isString$1(className)) { - classes = className.split(/\s+/); + // Get actual Error from ErrorEvent + if (isErrorEvent(ex)) ex = ex.error; - for (i = 0; i < classes.length; i++) { - out.push('.' + classes[i]); + // Store the raw exception object for potential debugging and introspection + this._lastCapturedException = ex; + + // TraceKit.report will re-raise any exception passed to it, + // which means you have to wrap it in try/catch. Instead, we + // can wrap it here and only re-raise if TraceKit.report + // raises an exception different from the one we asked to + // report on. + try { + var stack = TraceKit.computeStackTrace(ex); + this._handleStackInfo(stack, options); + } catch (ex1) { + if (ex !== ex1) { + throw ex1; + } } - } - var attrWhitelist = ['type', 'name', 'title', 'alt']; + return this; + }, - for (i = 0; i < attrWhitelist.length; i++) { - key = attrWhitelist[i]; - attr = elem.getAttribute(key); - - if (attr) { - out.push('[' + key + '="' + attr + '"]'); + /* + * Manually send a message to Sentry + * + * @param {string} msg A plain message to be captured in Sentry + * @param {object} options A specific set of options for this message [optional] + * @return {Raven} + */ + captureMessage: function(msg, options) { + // config() automagically converts ignoreErrors from a list to a RegExp so we need to test for an + // early call; we'll error on the side of logging anything called before configuration since it's + // probably something you should see: + if ( + !!this._globalOptions.ignoreErrors.test && + this._globalOptions.ignoreErrors.test(msg) + ) { + return; } - } - - return out.join(''); -} -/** - * Returns true if either a OR b is truthy, but not both - */ - - -function isOnlyOneTruthy(a, b) { - return !!(!!a ^ !!b); -} -/** - * Returns true if both parameters are undefined - */ + options = options || {}; -function isBothUndefined(a, b) { - return isUndefined$1(a) && isUndefined$1(b); -} -/** - * Returns true if the two input exception interfaces have the same content - */ + var data = objectMerge( + { + message: msg + '' // Make sure it's actually a string + }, + options + ); + var ex; + // Generate a "synthetic" stack trace from this point. + // NOTE: If you are a Sentry user, and you are seeing this stack frame, it is NOT indicative + // of a bug with Raven.js. Sentry generates synthetic traces either by configuration, + // or if it catches a thrown object without a "stack" property. + try { + throw new Error(msg); + } catch (ex1) { + ex = ex1; + } -function isSameException$1(ex1, ex2) { - if (isOnlyOneTruthy(ex1, ex2)) return false; - ex1 = ex1.values[0]; - ex2 = ex2.values[0]; - if (ex1.type !== ex2.type || ex1.value !== ex2.value) return false; // in case both stacktraces are undefined, we can't decide so default to false + // null exception name so `Error` isn't prefixed to msg + ex.name = null; + var stack = TraceKit.computeStackTrace(ex); - if (isBothUndefined(ex1.stacktrace, ex2.stacktrace)) return false; - return isSameStacktrace$1(ex1.stacktrace, ex2.stacktrace); -} -/** - * Returns true if the two input stack trace interfaces have the same content - */ + // stack[0] is `throw new Error(msg)` call itself, we are interested in the frame that was just before that, stack[1] + var initialCall = isArray(stack.stack) && stack.stack[1]; + var fileurl = (initialCall && initialCall.url) || ''; + if ( + !!this._globalOptions.ignoreUrls.test && + this._globalOptions.ignoreUrls.test(fileurl) + ) { + return; + } -function isSameStacktrace$1(stack1, stack2) { - if (isOnlyOneTruthy(stack1, stack2)) return false; - var frames1 = stack1.frames; - var frames2 = stack2.frames; // Exit early if frame count differs + if ( + !!this._globalOptions.whitelistUrls.test && + !this._globalOptions.whitelistUrls.test(fileurl) + ) { + return; + } - if (frames1.length !== frames2.length) return false; // Iterate through every frame; bail out if anything differs + if (this._globalOptions.stacktrace || (options && options.stacktrace)) { + options = objectMerge( + { + // fingerprint on msg, not stack trace (legacy behavior, could be + // revisited) + fingerprint: msg, + // since we know this is a synthetic trace, the top N-most frames + // MUST be from Raven.js, so mark them as in_app later by setting + // trimHeadFrames + trimHeadFrames: (options.trimHeadFrames || 0) + 1 + }, + options + ); - var a, b; + var frames = this._prepareFrames(stack, options); + data.stacktrace = { + // Sentry expects frames oldest to newest + frames: frames.reverse() + }; + } - for (var i = 0; i < frames1.length; i++) { - a = frames1[i]; - b = frames2[i]; - if (a.filename !== b.filename || a.lineno !== b.lineno || a.colno !== b.colno || a['function'] !== b['function']) return false; - } + // Fire away! + this._send(data); - return true; -} -/** - * Polyfill a method - * @param obj object e.g. `document` - * @param name method name present on object e.g. `addEventListener` - * @param replacement replacement function - * @param track {optional} record instrumentation to an array - */ + return this; + }, + captureBreadcrumb: function(obj) { + var crumb = objectMerge( + { + timestamp: now() / 1000 + }, + obj + ); -function fill$1(obj, name, replacement, track) { - var orig = obj[name]; - obj[name] = replacement(orig); - obj[name].__raven__ = true; - obj[name].__orig__ = orig; + if (isFunction(this._globalOptions.breadcrumbCallback)) { + var result = this._globalOptions.breadcrumbCallback(crumb); - if (track) { - track.push([obj, name, orig]); - } -} -/** - * Join values in array - * @param input array of values to be joined together - * @param delimiter string to be placed in-between values - * @returns {string} - */ + if (isObject(result) && !isEmptyObject(result)) { + crumb = result; + } else if (result === false) { + return this; + } + } + this._breadcrumbs.push(crumb); + if (this._breadcrumbs.length > this._globalOptions.maxBreadcrumbs) { + this._breadcrumbs.shift(); + } + return this; + }, -function safeJoin(input, delimiter) { - if (!isArray$1(input)) return ''; - var output = []; + addPlugin: function(plugin /*arg1, arg2, ... argN*/) { + var pluginArgs = [].slice.call(arguments, 1); - for (var i = 0; i < input.length; i++) { - try { - output.push(String(input[i])); - } catch (e) { - output.push('[value cannot be serialized]'); + this._plugins.push([plugin, pluginArgs]); + if (this._isRavenInstalled) { + this._drainPlugins(); } - } - return output.join(delimiter); -} + return this; + }, -var utils = { - isObject: isObject$1, - isError: isError$1, - isErrorEvent: isErrorEvent$1, - isUndefined: isUndefined$1, - isFunction: isFunction$1, - isPlainObject: isPlainObject, - isString: isString$1, - isArray: isArray$1, - isEmptyObject: isEmptyObject$1, - supportsErrorEvent: supportsErrorEvent, - supportsFetch: supportsFetch$1, - wrappedCallback: wrappedCallback, - each: each$1, - objectMerge: objectMerge$1, - truncate: truncate$1, - objectFrozen: objectFrozen$1, - hasKey: hasKey$1, - joinRegExp: joinRegExp$1, - urlencode: urlencode$1, - uuid4: uuid4$1, - htmlTreeAsString: htmlTreeAsString$1, - htmlElementAsString: htmlElementAsString, - isSameException: isSameException$1, - isSameStacktrace: isSameStacktrace$1, - parseUrl: parseUrl$1, - fill: fill$1, - safeJoin: safeJoin -}; + /* + * Set/clear a user to be sent along with the payload. + * + * @param {object} user An object representing user data [optional] + * @return {Raven} + */ + setUserContext: function(user) { + // Intentionally do not merge here since that's an unexpected behavior. + this._globalContext.user = user; -/* - TraceKit - Cross brower stack traces + return this; + }, - This was originally forked from github.com/occ/TraceKit, but has since been - largely re-written and is now maintained as part of raven-js. Tests for - this are in test/vendor. + /* + * Merge extra attributes to be sent along with the payload. + * + * @param {object} extra An object representing extra data [optional] + * @return {Raven} + */ + setExtraContext: function(extra) { + this._mergeContext('extra', extra); - MIT license -*/ + return this; + }, -var TraceKit = { - collectWindowErrors: true, - debug: false -}; // This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) + /* + * Merge tags to be sent along with the payload. + * + * @param {object} tags An object representing tags [optional] + * @return {Raven} + */ + setTagsContext: function(tags) { + this._mergeContext('tags', tags); -var _window$2 = typeof window !== 'undefined' ? window : typeof commonjsGlobal !== 'undefined' ? commonjsGlobal : typeof self !== 'undefined' ? self : {}; // global reference to slice + return this; + }, + /* + * Clear all of the context. + * + * @return {Raven} + */ + clearContext: function() { + this._globalContext = {}; -var _slice = [].slice; -var UNKNOWN_FUNCTION = '?'; // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error#Error_types + return this; + }, -var ERROR_TYPES_RE = /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/; + /* + * Get a copy of the current context. This cannot be mutated. + * + * @return {object} copy of context + */ + getContext: function() { + // lol javascript + return JSON.parse(stringify(this._globalContext)); + }, -function getLocationHref() { - if (typeof document === 'undefined' || document.location == null) return ''; - return document.location.href; -} -/** - * TraceKit.report: cross-browser processing of unhandled exceptions - * - * Syntax: - * TraceKit.report.subscribe(function(stackInfo) { ... }) - * TraceKit.report.unsubscribe(function(stackInfo) { ... }) - * TraceKit.report(exception) - * try { ...code... } catch(ex) { TraceKit.report(ex); } - * - * Supports: - * - Firefox: full stack trace with line numbers, plus column number - * on top frame; column number is not guaranteed - * - Opera: full stack trace with line and column numbers - * - Chrome: full stack trace with line and column numbers - * - Safari: line and column number for the top frame only; some frames - * may be missing, and column number is not guaranteed - * - IE: line and column number for the top frame only; some frames - * may be missing, and column number is not guaranteed - * - * In theory, TraceKit should work on all of the following versions: - * - IE5.5+ (only 8.0 tested) - * - Firefox 0.9+ (only 3.5+ tested) - * - Opera 7+ (only 10.50 tested; versions 9 and earlier may require - * Exceptions Have Stacktrace to be enabled in opera:config) - * - Safari 3+ (only 4+ tested) - * - Chrome 1+ (only 5+ tested) - * - Konqueror 3.5+ (untested) - * - * Requires TraceKit.computeStackTrace. - * - * Tries to catch all unhandled exceptions and report them to the - * subscribed handlers. Please note that TraceKit.report will rethrow the - * exception. This is REQUIRED in order to get a useful stack trace in IE. - * If the exception does not reach the top of the browser, you will only - * get a stack trace from the point where TraceKit.report was called. - * - * Handlers receive a stackInfo object as described in the - * TraceKit.computeStackTrace docs. - */ + /* + * Set environment of application + * + * @param {string} environment Typically something like 'production'. + * @return {Raven} + */ + setEnvironment: function(environment) { + this._globalOptions.environment = environment; + return this; + }, -TraceKit.report = function reportModuleWrapper() { - var handlers = [], - lastArgs = null, - lastException = null, - lastExceptionStack = null; - /** - * Add a crash handler. - * @param {Function} handler + /* + * Set release version of application + * + * @param {string} release Typically something like a git SHA to identify version + * @return {Raven} */ + setRelease: function(release) { + this._globalOptions.release = release; - function subscribe(handler) { - installGlobalHandler(); - handlers.push(handler); - } - /** - * Remove a crash handler. - * @param {Function} handler + return this; + }, + + /* + * Set the dataCallback option + * + * @param {function} callback The callback to run which allows the + * data blob to be mutated before sending + * @return {Raven} */ + setDataCallback: function(callback) { + var original = this._globalOptions.dataCallback; + this._globalOptions.dataCallback = keepOriginalCallback(original, callback); + return this; + }, + /* + * Set the breadcrumbCallback option + * + * @param {function} callback The callback to run which allows filtering + * or mutating breadcrumbs + * @return {Raven} + */ + setBreadcrumbCallback: function(callback) { + var original = this._globalOptions.breadcrumbCallback; + this._globalOptions.breadcrumbCallback = keepOriginalCallback(original, callback); + return this; + }, + + /* + * Set the shouldSendCallback option + * + * @param {function} callback The callback to run which allows + * introspecting the blob before sending + * @return {Raven} + */ + setShouldSendCallback: function(callback) { + var original = this._globalOptions.shouldSendCallback; + this._globalOptions.shouldSendCallback = keepOriginalCallback(original, callback); + return this; + }, - function unsubscribe(handler) { - for (var i = handlers.length - 1; i >= 0; --i) { - if (handlers[i] === handler) { - handlers.splice(i, 1); - } - } - } /** - * Remove all crash handlers. + * Override the default HTTP transport mechanism that transmits data + * to the Sentry server. + * + * @param {function} transport Function invoked instead of the default + * `makeRequest` handler. + * + * @return {Raven} + */ + setTransport: function(transport) { + this._globalOptions.transport = transport; + + return this; + }, + + /* + * Get the latest raw exception that was captured by Raven. + * + * @return {error} */ + lastException: function() { + return this._lastCapturedException; + }, + /* + * Get the last event id + * + * @return {string} + */ + lastEventId: function() { + return this._lastEventId; + }, - function unsubscribeAll() { - uninstallGlobalHandler(); - handlers = []; - } - /** - * Dispatch stack information to all handlers. - * @param {Object.} stack + /* + * Determine if Raven is setup and ready to go. + * + * @return {boolean} */ + isSetup: function() { + if (!this._hasJSON) return false; // needs JSON support + if (!this._globalServer) { + if (!this.ravenNotConfiguredError) { + this.ravenNotConfiguredError = true; + this._logDebug('error', 'Error: Raven has not been configured.'); + } + return false; + } + return true; + }, + afterLoad: function() { + // TODO: remove window dependence? - function notifyHandlers(stack, isWindowError) { - var exception = null; + // Attempt to initialize Raven on load + var RavenConfig = _window.RavenConfig; + if (RavenConfig) { + this.config(RavenConfig.dsn, RavenConfig.config).install(); + } + }, - if (isWindowError && !TraceKit.collectWindowErrors) { + showReportDialog: function(options) { + if ( + !_document // doesn't work without a document (React native) + ) return; - } - for (var i in handlers) { - if (handlers.hasOwnProperty(i)) { - try { - handlers[i].apply(null, [stack].concat(_slice.call(arguments, 2))); - } catch (inner) { - exception = inner; - } - } + options = options || {}; + + var lastEventId = options.eventId || this.lastEventId(); + if (!lastEventId) { + throw new RavenConfigError('Missing eventId'); } - if (exception) { - throw exception; + var dsn = options.dsn || this._dsn; + if (!dsn) { + throw new RavenConfigError('Missing DSN'); } - } - var _oldOnerrorHandler, _onErrorHandlerInstalled; - /** - * Ensures all global unhandled exceptions are recorded. - * Supported by Gecko and IE. - * @param {string} msg Error message. - * @param {string} url URL of script that generated the exception. - * @param {(number|string)} lineNo The line number at which the error - * occurred. - * @param {?(number|string)} colNo The column number at which the error - * occurred. - * @param {?Error} ex The actual Error object. - */ + var encode = encodeURIComponent; + var qs = ''; + qs += '?eventId=' + encode(lastEventId); + qs += '&dsn=' + encode(dsn); + var user = options.user || this._globalContext.user; + if (user) { + if (user.name) qs += '&name=' + encode(user.name); + if (user.email) qs += '&email=' + encode(user.email); + } - function traceKitWindowOnError(msg, url, lineNo, colNo, ex) { - var stack = null; // If 'ex' is ErrorEvent, get real Error from inside + var globalServer = this._getGlobalServer(this._parseDSN(dsn)); - var exception = utils.isErrorEvent(ex) ? ex.error : ex; // If 'msg' is ErrorEvent, get real message from inside + var script = _document.createElement('script'); + script.async = true; + script.src = globalServer + '/api/embed/error-page/' + qs; + (_document.head || _document.body).appendChild(script); + }, - var message = utils.isErrorEvent(msg) ? msg.message : msg; + /**** Private functions ****/ + _ignoreNextOnError: function() { + var self = this; + this._ignoreOnError += 1; + setTimeout(function() { + // onerror should trigger before setTimeout + self._ignoreOnError -= 1; + }); + }, - if (lastExceptionStack) { - TraceKit.computeStackTrace.augmentStackTraceWithInitialElement(lastExceptionStack, url, lineNo, message); - processLastException(); - } else if (exception && utils.isError(exception)) { - // non-string `exception` arg; attempt to extract stack trace - // New chrome and blink send along a real error object - // Let's just report that like a normal error. - // See: https://mikewest.org/2013/08/debugging-runtime-errors-with-window-onerror - stack = TraceKit.computeStackTrace(exception); - notifyHandlers(stack, true); - } else { - var location = { - url: url, - line: lineNo, - column: colNo - }; - var name = undefined; - var groups; + _triggerEvent: function(eventType, options) { + // NOTE: `event` is a native browser thing, so let's avoid conflicting wiht it + var evt, key; - if ({}.toString.call(message) === '[object String]') { - var groups = message.match(ERROR_TYPES_RE); + if (!this._hasDocument) return; - if (groups) { - name = groups[1]; - message = groups[2]; - } - } + options = options || {}; - location.func = UNKNOWN_FUNCTION; - stack = { - name: name, - message: message, - url: getLocationHref(), - stack: [location] - }; - notifyHandlers(stack, true); - } + eventType = 'raven' + eventType.substr(0, 1).toUpperCase() + eventType.substr(1); - if (_oldOnerrorHandler) { - return _oldOnerrorHandler.apply(this, arguments); + if (_document.createEvent) { + evt = _document.createEvent('HTMLEvents'); + evt.initEvent(eventType, true, true); + } else { + evt = _document.createEventObject(); + evt.eventType = eventType; } - return false; - } + for (key in options) + if (hasKey(options, key)) { + evt[key] = options[key]; + } - function installGlobalHandler() { - if (_onErrorHandlerInstalled) { - return; + if (_document.createEvent) { + // IE9 if standards + _document.dispatchEvent(evt); + } else { + // IE8 regardless of Quirks or Standards + // IE9 if quirks + try { + _document.fireEvent('on' + evt.eventType.toLowerCase(), evt); + } catch (e) { + // Do nothing + } } + }, - _oldOnerrorHandler = _window$2.onerror; - _window$2.onerror = traceKitWindowOnError; - _onErrorHandlerInstalled = true; - } + /** + * Wraps addEventListener to capture UI breadcrumbs + * @param evtName the event name (e.g. "click") + * @returns {Function} + * @private + */ + _breadcrumbEventHandler: function(evtName) { + var self = this; + return function(evt) { + // reset keypress timeout; e.g. triggering a 'click' after + // a 'keypress' will reset the keypress debounce so that a new + // set of keypresses can be recorded + self._keypressTimeout = null; - function uninstallGlobalHandler() { - if (!_onErrorHandlerInstalled) { - return; - } + // It's possible this handler might trigger multiple times for the same + // event (e.g. event propagation through node ancestors). Ignore if we've + // already captured the event. + if (self._lastCapturedEvent === evt) return; - _window$2.onerror = _oldOnerrorHandler; - _onErrorHandlerInstalled = false; - _oldOnerrorHandler = undefined; - } + self._lastCapturedEvent = evt; - function processLastException() { - var _lastExceptionStack = lastExceptionStack, - _lastArgs = lastArgs; - lastArgs = null; - lastExceptionStack = null; - lastException = null; - notifyHandlers.apply(null, [_lastExceptionStack, false].concat(_lastArgs)); - } - /** - * Reports an unhandled Error to TraceKit. - * @param {Error} ex - * @param {?boolean} rethrow If false, do not re-throw the exception. - * Only used for window.onerror to not cause an infinite loop of - * rethrowing. - */ - - - function report(ex, rethrow) { - var args = _slice.call(arguments, 1); - - if (lastExceptionStack) { - if (lastException === ex) { - return; // already caught by an inner catch block, ignore - } else { - processLastException(); - } - } - - var stack = TraceKit.computeStackTrace(ex); - lastExceptionStack = stack; - lastException = ex; - lastArgs = args; // If the stack trace is incomplete, wait for 2 seconds for - // slow slow IE to see if onerror occurs or not before reporting - // this exception; otherwise, we will end up with an incomplete - // stack trace - - setTimeout(function () { - if (lastException === ex) { - processLastException(); - } - }, stack.incomplete ? 2000 : 0); - - if (rethrow !== false) { - throw ex; // re-throw to propagate to the top level (and cause window.onerror) - } - } - - report.subscribe = subscribe; - report.unsubscribe = unsubscribe; - report.uninstall = unsubscribeAll; - return report; -}(); -/** - * TraceKit.computeStackTrace: cross-browser stack traces in JavaScript - * - * Syntax: - * s = TraceKit.computeStackTrace(exception) // consider using TraceKit.report instead (see below) - * Returns: - * s.name - exception name - * s.message - exception message - * s.stack[i].url - JavaScript or HTML file URL - * s.stack[i].func - function name, or empty for anonymous functions (if guessing did not work) - * s.stack[i].args - arguments passed to the function, if known - * s.stack[i].line - line number, if known - * s.stack[i].column - column number, if known - * - * Supports: - * - Firefox: full stack trace with line numbers and unreliable column - * number on top frame - * - Opera 10: full stack trace with line and column numbers - * - Opera 9-: full stack trace with line numbers - * - Chrome: full stack trace with line and column numbers - * - Safari: line and column number for the topmost stacktrace element - * only - * - IE: no line numbers whatsoever - * - * Tries to guess names of anonymous functions by looking for assignments - * in the source code. In IE and Safari, we have to guess source file names - * by searching for function bodies inside all page scripts. This will not - * work for scripts that are loaded cross-domain. - * Here be dragons: some function names may be guessed incorrectly, and - * duplicate functions may be mismatched. - * - * TraceKit.computeStackTrace should only be used for tracing purposes. - * Logging of unhandled exceptions should be done with TraceKit.report, - * which builds on top of TraceKit.computeStackTrace and provides better - * IE support by utilizing the window.onerror event to retrieve information - * about the top of the stack. - * - * Note: In IE and Safari, no stack trace is recorded on the Error object, - * so computeStackTrace instead walks its *own* chain of callers. - * This means that: - * * in Safari, some methods may be missing from the stack trace; - * * in IE, the topmost function in the stack trace will always be the - * caller of computeStackTrace. - * - * This is okay for tracing (because you are likely to be calling - * computeStackTrace from the function you want to be the topmost element - * of the stack trace anyway), but not okay for logging unhandled - * exceptions (because your catch block will likely be far away from the - * inner function that actually caused the exception). - * - */ - - -TraceKit.computeStackTrace = function computeStackTraceWrapper() { - // Contents of Exception in various browsers. - // - // SAFARI: - // ex.message = Can't find variable: qq - // ex.line = 59 - // ex.sourceId = 580238192 - // ex.sourceURL = http://... - // ex.expressionBeginOffset = 96 - // ex.expressionCaretOffset = 98 - // ex.expressionEndOffset = 98 - // ex.name = ReferenceError - // - // FIREFOX: - // ex.message = qq is not defined - // ex.fileName = http://... - // ex.lineNumber = 59 - // ex.columnNumber = 69 - // ex.stack = ...stack trace... (see the example below) - // ex.name = ReferenceError - // - // CHROME: - // ex.message = qq is not defined - // ex.name = ReferenceError - // ex.type = not_defined - // ex.arguments = ['aa'] - // ex.stack = ...stack trace... - // - // INTERNET EXPLORER: - // ex.message = ... - // ex.name = ReferenceError - // - // OPERA: - // ex.message = ...message... (see the example below) - // ex.name = ReferenceError - // ex.opera#sourceloc = 11 (pretty much useless, duplicates the info in ex.message) - // ex.stacktrace = n/a; see 'opera:config#UserPrefs|Exceptions Have Stacktrace' - - /** - * Computes stack trace information from the stack property. - * Chrome and Gecko use this property. - * @param {Error} ex - * @return {?Object.} Stack trace information. - */ - function computeStackTraceFromStackProp(ex) { - if (typeof ex.stack === 'undefined' || !ex.stack) return; - var chrome = /^\s*at (.*?) ?\(((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i, - gecko = /^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|\[native).*?|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i, - winjs = /^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i, - // Used to additionally parse URL/line/column from eval frames - geckoEval = /(\S+) line (\d+)(?: > eval line \d+)* > eval/i, - chromeEval = /\((\S*)(?::(\d+))(?::(\d+))\)/, - lines = ex.stack.split('\n'), - stack = [], - submatch, - parts, - element, - reference = /^(.*) is undefined$/.exec(ex.message); - - for (var i = 0, j = lines.length; i < j; ++i) { - if (parts = chrome.exec(lines[i])) { - var isNative = parts[2] && parts[2].indexOf('native') === 0; // start of line - - var isEval = parts[2] && parts[2].indexOf('eval') === 0; // start of line - - if (isEval && (submatch = chromeEval.exec(parts[2]))) { - // throw out eval line/column and use top-most line/column number - parts[2] = submatch[1]; // url - - parts[3] = submatch[2]; // line - - parts[4] = submatch[3]; // column - } - - element = { - url: !isNative ? parts[2] : null, - func: parts[1] || UNKNOWN_FUNCTION, - args: isNative ? [parts[2]] : [], - line: parts[3] ? +parts[3] : null, - column: parts[4] ? +parts[4] : null - }; - } else if (parts = winjs.exec(lines[i])) { - element = { - url: parts[2], - func: parts[1] || UNKNOWN_FUNCTION, - args: [], - line: +parts[3], - column: parts[4] ? +parts[4] : null - }; - } else if (parts = gecko.exec(lines[i])) { - var isEval = parts[3] && parts[3].indexOf(' > eval') > -1; - - if (isEval && (submatch = geckoEval.exec(parts[3]))) { - // throw out eval line/column and use top-most line number - parts[3] = submatch[1]; - parts[4] = submatch[2]; - parts[5] = null; // no column when eval - } else if (i === 0 && !parts[5] && typeof ex.columnNumber !== 'undefined') { - // FireFox uses this awesome columnNumber property for its top frame - // Also note, Firefox's column number is 0-based and everything else expects 1-based, - // so adding 1 - // NOTE: this hack doesn't work if top-most frame is eval - stack[0].column = ex.columnNumber + 1; - } - - element = { - url: parts[3], - func: parts[1] || UNKNOWN_FUNCTION, - args: parts[2] ? parts[2].split(',') : [], - line: parts[4] ? +parts[4] : null, - column: parts[5] ? +parts[5] : null - }; - } else { - continue; - } - - if (!element.func && element.line) { - element.func = UNKNOWN_FUNCTION; - } - - stack.push(element); - } - - if (!stack.length) { - return null; - } - - return { - name: ex.name, - message: ex.message, - url: getLocationHref(), - stack: stack - }; - } - /** - * Adds information about the first frame to incomplete stack traces. - * Safari and IE require this to get complete data on the first frame. - * @param {Object.} stackInfo Stack trace information from - * one of the compute* methods. - * @param {string} url The URL of the script that caused an error. - * @param {(number|string)} lineNo The line number of the script that - * caused an error. - * @param {string=} message The error generated by the browser, which - * hopefully contains the name of the object that caused the error. - * @return {boolean} Whether or not the stack information was - * augmented. - */ - - - function augmentStackTraceWithInitialElement(stackInfo, url, lineNo, message) { - var initial = { - url: url, - line: lineNo - }; - - if (initial.url && initial.line) { - stackInfo.incomplete = false; - - if (!initial.func) { - initial.func = UNKNOWN_FUNCTION; - } - - if (stackInfo.stack.length > 0) { - if (stackInfo.stack[0].url === initial.url) { - if (stackInfo.stack[0].line === initial.line) { - return false; // already in stack trace - } else if (!stackInfo.stack[0].line && stackInfo.stack[0].func === initial.func) { - stackInfo.stack[0].line = initial.line; - return false; - } - } - } - - stackInfo.stack.unshift(initial); - stackInfo.partial = true; - return true; - } else { - stackInfo.incomplete = true; - } - - return false; - } - /** - * Computes stack trace information by walking the arguments.caller - * chain at the time the exception occurred. This will cause earlier - * frames to be missed but is the only way to get any stack trace in - * Safari and IE. The top frame is restored by - * {@link augmentStackTraceWithInitialElement}. - * @param {Error} ex - * @return {?Object.} Stack trace information. - */ - - - function computeStackTraceByWalkingCallerChain(ex, depth) { - var functionName = /function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i, - stack = [], - funcs = {}, - recursion = false, - parts, - item; - - for (var curr = computeStackTraceByWalkingCallerChain.caller; curr && !recursion; curr = curr.caller) { - if (curr === computeStackTrace || curr === TraceKit.report) { - // console.log('skipping internal function'); - continue; - } - - item = { - url: null, - func: UNKNOWN_FUNCTION, - line: null, - column: null - }; - - if (curr.name) { - item.func = curr.name; - } else if (parts = functionName.exec(curr.toString())) { - item.func = parts[1]; - } - - if (typeof item.func === 'undefined') { - try { - item.func = parts.input.substring(0, parts.input.indexOf('{')); - } catch (e) {} - } - - if (funcs['' + curr]) { - recursion = true; - } else { - funcs['' + curr] = true; - } - - stack.push(item); - } - - if (depth) { - // console.log('depth is ' + depth); - // console.log('stack is ' + stack.length); - stack.splice(0, depth); - } - - var result = { - name: ex.name, - message: ex.message, - url: getLocationHref(), - stack: stack - }; - augmentStackTraceWithInitialElement(result, ex.sourceURL || ex.fileName, ex.line || ex.lineNumber, ex.message || ex.description); - return result; - } - /** - * Computes a stack trace for an exception. - * @param {Error} ex - * @param {(string|number)=} depth - */ - - - function computeStackTrace(ex, depth) { - var stack = null; - depth = depth == null ? 0 : +depth; - - try { - stack = computeStackTraceFromStackProp(ex); - - if (stack) { - return stack; - } - } catch (e) { - if (TraceKit.debug) { - throw e; - } - } - - try { - stack = computeStackTraceByWalkingCallerChain(ex, depth + 1); - - if (stack) { - return stack; - } - } catch (e) { - if (TraceKit.debug) { - throw e; - } - } - - return { - name: ex.name, - message: ex.message, - url: getLocationHref() - }; - } - - computeStackTrace.augmentStackTraceWithInitialElement = augmentStackTraceWithInitialElement; - computeStackTrace.computeStackTraceFromStackProp = computeStackTraceFromStackProp; - return computeStackTrace; -}(); - -var tracekit = TraceKit; - -var stringify_1 = createCommonjsModule(function (module, exports) { - /* - json-stringify-safe - Like JSON.stringify, but doesn't throw on circular references. - - Originally forked from https://github.com/isaacs/json-stringify-safe - version 5.0.1 on 3/8/2017 and modified to handle Errors serialization - and IE8 compatibility. Tests for this are in test/vendor. - - ISC license: https://github.com/isaacs/json-stringify-safe/blob/master/LICENSE - */ - exports = module.exports = stringify; - exports.getSerialize = serializer; - - function indexOf(haystack, needle) { - for (var i = 0; i < haystack.length; ++i) { - if (haystack[i] === needle) return i; - } - - return -1; - } - - function stringify(obj, replacer, spaces, cycleReplacer) { - return JSON.stringify(obj, serializer(replacer, cycleReplacer), spaces); - } // https://github.com/ftlabs/js-abbreviate/blob/fa709e5f139e7770a71827b1893f22418097fbda/index.js#L95-L106 - - - function stringifyError(value) { - var err = { - // These properties are implemented as magical getters and don't show up in for in - stack: value.stack, - message: value.message, - name: value.name - }; - - for (var i in value) { - if (Object.prototype.hasOwnProperty.call(value, i)) { - err[i] = value[i]; - } - } - - return err; - } - - function serializer(replacer, cycleReplacer) { - var stack = []; - var keys = []; - - if (cycleReplacer == null) { - cycleReplacer = function cycleReplacer(key, value) { - if (stack[0] === value) { - return '[Circular ~]'; - } - - return '[Circular ~.' + keys.slice(0, indexOf(stack, value)).join('.') + ']'; - }; - } - - return function (key, value) { - if (stack.length > 0) { - var thisPos = indexOf(stack, this); - ~thisPos ? stack.splice(thisPos + 1) : stack.push(this); - ~thisPos ? keys.splice(thisPos, Infinity, key) : keys.push(key); - - if (~indexOf(stack, value)) { - value = cycleReplacer.call(this, key, value); - } - } else { - stack.push(value); - } - - return replacer == null ? value instanceof Error ? stringifyError(value) : value : replacer.call(this, key, value); - }; - } -}); -var stringify_2 = stringify_1.getSerialize; - -function RavenConfigError(message) { - this.name = 'RavenConfigError'; - this.message = message; -} - -RavenConfigError.prototype = new Error(); -RavenConfigError.prototype.constructor = RavenConfigError; -var configError = RavenConfigError; - -var wrapMethod = function wrapMethod(console, level, callback) { - var originalConsoleLevel = console[level]; - var originalConsole = console; - - if (!(level in console)) { - return; - } - - var sentryLevel = level === 'warn' ? 'warning' : level; - - console[level] = function () { - var args = [].slice.call(arguments); - var msg = utils.safeJoin(args, ' '); - var data = { - level: sentryLevel, - logger: 'console', - extra: { - arguments: args - } - }; - - if (level === 'assert') { - if (args[0] === false) { - // Default browsers message - msg = 'Assertion failed: ' + (utils.safeJoin(args.slice(1), ' ') || 'console.assert'); - data.extra.arguments = args.slice(1); - callback && callback(msg, data); - } - } else { - callback && callback(msg, data); - } // this fails for some browsers. :( - - - if (originalConsoleLevel) { - // IE9 doesn't allow calling apply on console functions directly - // See: https://stackoverflow.com/questions/5472938/does-ie9-support-console-log-and-is-it-a-real-function#answer-5473193 - Function.prototype.apply.call(originalConsoleLevel, originalConsole, args); - } - }; -}; - -var console$1 = { - wrapMethod: wrapMethod -}; - -/*global XDomainRequest:false */ - -var isError = utils.isError; -var isObject = utils.isObject; -var isErrorEvent = utils.isErrorEvent; -var isUndefined = utils.isUndefined; -var isFunction = utils.isFunction; -var isString = utils.isString; -var isArray = utils.isArray; -var isEmptyObject = utils.isEmptyObject; -var each = utils.each; -var objectMerge = utils.objectMerge; -var truncate = utils.truncate; -var objectFrozen = utils.objectFrozen; -var hasKey = utils.hasKey; -var joinRegExp = utils.joinRegExp; -var urlencode = utils.urlencode; -var uuid4 = utils.uuid4; -var htmlTreeAsString = utils.htmlTreeAsString; -var isSameException = utils.isSameException; -var isSameStacktrace = utils.isSameStacktrace; -var parseUrl = utils.parseUrl; -var fill = utils.fill; -var supportsFetch = utils.supportsFetch; -var wrapConsoleMethod = console$1.wrapMethod; -var dsnKeys = 'source protocol user pass host port path'.split(' '); -var dsnPattern = /^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/; - -function now() { - return +new Date(); -} // This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) - - -var _window$1 = typeof window !== 'undefined' ? window : typeof commonjsGlobal !== 'undefined' ? commonjsGlobal : typeof self !== 'undefined' ? self : {}; - -var _document = _window$1.document; -var _navigator = _window$1.navigator; - -function keepOriginalCallback(original, callback) { - return isFunction(callback) ? function (data) { - return callback(data, original); - } : callback; -} // First, check for JSON support -// If there is no JSON, we no-op the core features of Raven -// since JSON is required to encode the payload - - -function Raven$1() { - this._hasJSON = !!(_typeof(JSON) === 'object' && JSON.stringify); // Raven can run in contexts where there's no document (react-native) - - this._hasDocument = !isUndefined(_document); - this._hasNavigator = !isUndefined(_navigator); - this._lastCapturedException = null; - this._lastData = null; - this._lastEventId = null; - this._globalServer = null; - this._globalKey = null; - this._globalProject = null; - this._globalContext = {}; - this._globalOptions = { - // SENTRY_RELEASE can be injected by https://github.com/getsentry/sentry-webpack-plugin - release: _window$1.SENTRY_RELEASE && _window$1.SENTRY_RELEASE.id, - logger: 'javascript', - ignoreErrors: [], - ignoreUrls: [], - whitelistUrls: [], - includePaths: [], - headers: null, - collectWindowErrors: true, - maxMessageLength: 0, - // By default, truncates URL values to 250 chars - maxUrlLength: 250, - stackTraceLimit: 50, - autoBreadcrumbs: true, - instrument: true, - sampleRate: 1 - }; - this._fetchDefaults = { - method: 'POST', - keepalive: true, - referrerPolicy: 'origin' - }; - this._ignoreOnError = 0; - this._isRavenInstalled = false; - this._originalErrorStackTraceLimit = Error.stackTraceLimit; // capture references to window.console *and* all its methods first - // before the console plugin has a chance to monkey patch - - this._originalConsole = _window$1.console || {}; - this._originalConsoleMethods = {}; - this._plugins = []; - this._startTime = now(); - this._wrappedBuiltIns = []; - this._breadcrumbs = []; - this._lastCapturedEvent = null; - this._keypressTimeout; - this._location = _window$1.location; - this._lastHref = this._location && this._location.href; - - this._resetBackoff(); // eslint-disable-next-line guard-for-in - - - for (var method in this._originalConsole) { - this._originalConsoleMethods[method] = this._originalConsole[method]; - } -} -/* - * The core Raven singleton - * - * @this {Raven} - */ - - -Raven$1.prototype = { - // Hardcode version string so that raven source can be loaded directly via - // webpack (using a build step causes webpack #1617). Grunt verifies that - // this value matches package.json during build. - // See: https://github.com/getsentry/raven-js/issues/465 - VERSION: '3.22.2', - debug: false, - TraceKit: tracekit, - // alias to TraceKit - - /* - * Configure Raven with a DSN and extra options - * - * @param {string} dsn The public Sentry DSN - * @param {object} options Set of global options [optional] - * @return {Raven} - */ - config: function config(dsn, options) { - var self = this; - - if (self._globalServer) { - this._logDebug('error', 'Error: Raven has already been configured'); - - return self; - } - - if (!dsn) return self; - var globalOptions = self._globalOptions; // merge in options - - if (options) { - each(options, function (key, value) { - // tags and extra are special and need to be put into context - if (key === 'tags' || key === 'extra' || key === 'user') { - self._globalContext[key] = value; - } else { - globalOptions[key] = value; - } - }); - } - - self.setDSN(dsn); // "Script error." is hard coded into browsers for errors that it can't read. - // this is the result of a script being pulled in from an external domain and CORS. - - globalOptions.ignoreErrors.push(/^Script error\.?$/); - globalOptions.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/); // join regexp rules into one big rule - - globalOptions.ignoreErrors = joinRegExp(globalOptions.ignoreErrors); - globalOptions.ignoreUrls = globalOptions.ignoreUrls.length ? joinRegExp(globalOptions.ignoreUrls) : false; - globalOptions.whitelistUrls = globalOptions.whitelistUrls.length ? joinRegExp(globalOptions.whitelistUrls) : false; - globalOptions.includePaths = joinRegExp(globalOptions.includePaths); - globalOptions.maxBreadcrumbs = Math.max(0, Math.min(globalOptions.maxBreadcrumbs || 100, 100)); // default and hard limit is 100 - - var autoBreadcrumbDefaults = { - xhr: true, - console: true, - dom: true, - location: true, - sentry: true - }; - var autoBreadcrumbs = globalOptions.autoBreadcrumbs; - - if ({}.toString.call(autoBreadcrumbs) === '[object Object]') { - autoBreadcrumbs = objectMerge(autoBreadcrumbDefaults, autoBreadcrumbs); - } else if (autoBreadcrumbs !== false) { - autoBreadcrumbs = autoBreadcrumbDefaults; - } - - globalOptions.autoBreadcrumbs = autoBreadcrumbs; - var instrumentDefaults = { - tryCatch: true - }; - var instrument = globalOptions.instrument; - - if ({}.toString.call(instrument) === '[object Object]') { - instrument = objectMerge(instrumentDefaults, instrument); - } else if (instrument !== false) { - instrument = instrumentDefaults; - } - - globalOptions.instrument = instrument; - tracekit.collectWindowErrors = !!globalOptions.collectWindowErrors; // return for chaining - - return self; - }, - - /* - * Installs a global window.onerror error handler - * to capture and report uncaught exceptions. - * At this point, install() is required to be called due - * to the way TraceKit is set up. - * - * @return {Raven} - */ - install: function install() { - var self = this; - - if (self.isSetup() && !self._isRavenInstalled) { - tracekit.report.subscribe(function () { - self._handleOnErrorStackInfo.apply(self, arguments); - }); - - self._patchFunctionToString(); - - if (self._globalOptions.instrument && self._globalOptions.instrument.tryCatch) { - self._instrumentTryCatch(); + // try/catch both: + // - accessing evt.target (see getsentry/raven-js#838, #768) + // - `htmlTreeAsString` because it's complex, and just accessing the DOM incorrectly + // can throw an exception in some circumstances. + var target; + try { + target = htmlTreeAsString(evt.target); + } catch (e) { + target = ''; } - if (self._globalOptions.autoBreadcrumbs) self._instrumentBreadcrumbs(); // Install all of the plugins - - self._drainPlugins(); - - self._isRavenInstalled = true; - } - - Error.stackTraceLimit = self._globalOptions.stackTraceLimit; - return this; + self.captureBreadcrumb({ + category: 'ui.' + evtName, // e.g. ui.click, ui.input + message: target + }); + }; }, - /* - * Set the DSN (can be called multiple time unlike config) - * - * @param {string} dsn The public Sentry DSN - */ - setDSN: function setDSN(dsn) { + /** + * Wraps addEventListener to capture keypress UI events + * @returns {Function} + * @private + */ + _keypressEventHandler: function() { var self = this, - uri = self._parseDSN(dsn), - lastSlash = uri.path.lastIndexOf('/'), - path = uri.path.substr(1, lastSlash); - - self._dsn = dsn; - self._globalKey = uri.user; - self._globalSecret = uri.pass && uri.pass.substr(1); - self._globalProject = uri.path.substr(lastSlash + 1); - self._globalServer = self._getGlobalServer(uri); - self._globalEndpoint = self._globalServer + '/' + path + 'api/' + self._globalProject + '/store/'; // Reset backoff state since we may be pointing at a - // new project/server - - this._resetBackoff(); - }, - - /* - * Wrap code within a context so Raven can capture errors - * reliably across domains that is executed immediately. - * - * @param {object} options A specific set of options for this context [optional] - * @param {function} func The callback to be immediately executed within the context - * @param {array} args An array of arguments to be called with the callback [optional] - */ - context: function context(options, func, args) { - if (isFunction(options)) { - args = func || []; - func = options; - options = undefined; - } - - return this.wrap(options, func).apply(this, args); - }, - - /* - * Wrap code within a context and returns back a new function to be executed - * - * @param {object} options A specific set of options for this context [optional] - * @param {function} func The function to be wrapped in a new context - * @param {function} func A function to call before the try/catch wrapper [optional, private] - * @return {function} The newly wrapped functions with a context - */ - wrap: function wrap(options, func, _before) { - var self = this; // 1 argument has been passed, and it's not a function - // so just return it - - if (isUndefined(func) && !isFunction(options)) { - return options; - } // options is optional + debounceDuration = 1000; // milliseconds + // TODO: if somehow user switches keypress target before + // debounce timeout is triggered, we will only capture + // a single breadcrumb from the FIRST target (acceptable?) + return function(evt) { + var target; + try { + target = evt.target; + } catch (e) { + // just accessing event properties can throw an exception in some rare circumstances + // see: https://github.com/getsentry/raven-js/issues/838 + return; + } + var tagName = target && target.tagName; - if (isFunction(options)) { - func = options; - options = undefined; - } // At this point, we've passed along 2 arguments, and the second one - // is not a function either, so we'll just return the second argument. - - - if (!isFunction(func)) { - return func; - } // We don't wanna wrap it twice! - - - try { - if (func.__raven__) { - return func; - } // If this has already been wrapped in the past, return that - + // only consider keypress events on actual input elements + // this will disregard keypresses targeting body (e.g. tabbing + // through elements, hotkeys, etc) + if ( + !tagName || + (tagName !== 'INPUT' && tagName !== 'TEXTAREA' && !target.isContentEditable) + ) + return; - if (func.__raven_wrapper__) { - return func.__raven_wrapper__; + // record first keypress in a series, but ignore subsequent + // keypresses until debounce clears + var timeout = self._keypressTimeout; + if (!timeout) { + self._breadcrumbEventHandler('input')(evt); } - } catch (e) { - // Just accessing custom props in some Selenium environments - // can cause a "Permission denied" exception (see raven-js#495). - // Bail on wrapping and return the function as-is (defers to window.onerror). - return func; - } + clearTimeout(timeout); + self._keypressTimeout = setTimeout(function() { + self._keypressTimeout = null; + }, debounceDuration); + }; + }, - function wrapped() { - var args = [], - i = arguments.length, - deep = !options || options && options.deep !== false; + /** + * Captures a breadcrumb of type "navigation", normalizing input URLs + * @param to the originating URL + * @param from the target URL + * @private + */ + _captureUrlChange: function(from, to) { + var parsedLoc = parseUrl(this._location.href); + var parsedTo = parseUrl(to); + var parsedFrom = parseUrl(from); - if (_before && isFunction(_before)) { - _before.apply(this, arguments); - } // Recursively wrap all of a function's arguments that are - // functions themselves. + // because onpopstate only tells you the "new" (to) value of location.href, and + // not the previous (from) value, we need to track the value of the current URL + // state ourselves + this._lastHref = to; + // Use only the path component of the URL if the URL matches the current + // document (almost all the time when using pushState) + if (parsedLoc.protocol === parsedTo.protocol && parsedLoc.host === parsedTo.host) + to = parsedTo.relative; + if (parsedLoc.protocol === parsedFrom.protocol && parsedLoc.host === parsedFrom.host) + from = parsedFrom.relative; - while (i--) { - args[i] = deep ? self.wrap(options, arguments[i]) : arguments[i]; + this.captureBreadcrumb({ + category: 'navigation', + data: { + to: to, + from: from } + }); + }, - try { - // Attempt to invoke user-land function - // NOTE: If you are a Sentry user, and you are seeing this stack frame, it - // means Raven caught an error invoking your application code. This is - // expected behavior and NOT indicative of a bug with Raven.js. - return func.apply(this, args); - } catch (e) { - self._ignoreNextOnError(); - - self.captureException(e, options); - throw e; + _patchFunctionToString: function() { + var self = this; + self._originalFunctionToString = Function.prototype.toString; + // eslint-disable-next-line no-extend-native + Function.prototype.toString = function() { + if (typeof this === 'function' && this.__raven__) { + return self._originalFunctionToString.apply(this.__orig__, arguments); } - } // copy over properties of the old function - + return self._originalFunctionToString.apply(this, arguments); + }; + }, - for (var property in func) { - if (hasKey(func, property)) { - wrapped[property] = func[property]; - } + _unpatchFunctionToString: function() { + if (this._originalFunctionToString) { + // eslint-disable-next-line no-extend-native + Function.prototype.toString = this._originalFunctionToString; } - - wrapped.prototype = func.prototype; - func.__raven_wrapper__ = wrapped; // Signal that this function has been wrapped/filled already - // for both debugging and to prevent it to being wrapped/filled twice - - wrapped.__raven__ = true; - wrapped.__orig__ = func; - return wrapped; }, - /* - * Uninstalls the global error handler. - * - * @return {Raven} - */ - uninstall: function uninstall() { - tracekit.report.uninstall(); - - this._unpatchFunctionToString(); + /** + * Wrap timer functions and event targets to catch errors and provide + * better metadata. + */ + _instrumentTryCatch: function() { + var self = this; - this._restoreBuiltIns(); + var wrappedBuiltIns = self._wrappedBuiltIns; - this._restoreConsole(); + function wrapTimeFn(orig) { + return function(fn, t) { + // preserve arity + // Make a copy of the arguments to prevent deoptimization + // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments + var args = new Array(arguments.length); + for (var i = 0; i < args.length; ++i) { + args[i] = arguments[i]; + } + var originalCallback = args[0]; + if (isFunction(originalCallback)) { + args[0] = self.wrap(originalCallback); + } - Error.stackTraceLimit = this._originalErrorStackTraceLimit; - this._isRavenInstalled = false; - return this; - }, + // IE < 9 doesn't support .call/.apply on setInterval/setTimeout, but it + // also supports only two arguments and doesn't care what this is, so we + // can just call the original function directly. + if (orig.apply) { + return orig.apply(this, args); + } else { + return orig(args[0], args[1]); + } + }; + } - /* - * Manually capture an exception and send it over to Sentry - * - * @param {error} ex An exception to be logged - * @param {object} options A specific set of options for this error [optional] - * @return {Raven} - */ - captureException: function captureException(ex, options) { - options = objectMerge({ - trimHeadFrames: 0 - }, options ? options : {}); // Cases for sending ex as a message, rather than an exception + var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; - var isNotError = !isError(ex); - var isNotErrorEvent = !isErrorEvent(ex); - var isErrorEventWithoutError = isErrorEvent(ex) && !ex.error; + function wrapEventTarget(global) { + var proto = _window[global] && _window[global].prototype; + if (proto && proto.hasOwnProperty && proto.hasOwnProperty('addEventListener')) { + fill( + proto, + 'addEventListener', + function(orig) { + return function(evtName, fn, capture, secure) { + // preserve arity + try { + if (fn && fn.handleEvent) { + fn.handleEvent = self.wrap(fn.handleEvent); + } + } catch (err) { + // can sometimes get 'Permission denied to access property "handle Event' + } - if (isNotError && isNotErrorEvent || isErrorEventWithoutError) { - return this.captureMessage(ex, objectMerge(options, { - stacktrace: true, - // if we fall back to captureMessage, default to attempting a new trace - trimHeadFrames: options.trimHeadFrames + 1 - })); - } // Get actual Error from ErrorEvent + // More breadcrumb DOM capture ... done here and not in `_instrumentBreadcrumbs` + // so that we don't have more than one wrapper function + var before, clickHandler, keypressHandler; + + if ( + autoBreadcrumbs && + autoBreadcrumbs.dom && + (global === 'EventTarget' || global === 'Node') + ) { + // NOTE: generating multiple handlers per addEventListener invocation, should + // revisit and verify we can just use one (almost certainly) + clickHandler = self._breadcrumbEventHandler('click'); + keypressHandler = self._keypressEventHandler(); + before = function(evt) { + // need to intercept every DOM event in `before` argument, in case that + // same wrapped method is re-used for different events (e.g. mousemove THEN click) + // see #724 + if (!evt) return; + + var eventType; + try { + eventType = evt.type; + } catch (e) { + // just accessing event properties can throw an exception in some rare circumstances + // see: https://github.com/getsentry/raven-js/issues/838 + return; + } + if (eventType === 'click') return clickHandler(evt); + else if (eventType === 'keypress') return keypressHandler(evt); + }; + } + return orig.call( + this, + evtName, + self.wrap(fn, undefined, before), + capture, + secure + ); + }; + }, + wrappedBuiltIns + ); + fill( + proto, + 'removeEventListener', + function(orig) { + return function(evt, fn, capture, secure) { + try { + fn = fn && (fn.__raven_wrapper__ ? fn.__raven_wrapper__ : fn); + } catch (e) { + // ignore, accessing __raven_wrapper__ will throw in some Selenium environments + } + return orig.call(this, evt, fn, capture, secure); + }; + }, + wrappedBuiltIns + ); + } + } + fill(_window, 'setTimeout', wrapTimeFn, wrappedBuiltIns); + fill(_window, 'setInterval', wrapTimeFn, wrappedBuiltIns); + if (_window.requestAnimationFrame) { + fill( + _window, + 'requestAnimationFrame', + function(orig) { + return function(cb) { + return orig(self.wrap(cb)); + }; + }, + wrappedBuiltIns + ); + } - if (isErrorEvent(ex)) ex = ex.error; // Store the raw exception object for potential debugging and introspection + // event targets borrowed from bugsnag-js: + // https://github.com/bugsnag/bugsnag-js/blob/master/src/bugsnag.js#L666 + var eventTargets = [ + 'EventTarget', + 'Window', + 'Node', + 'ApplicationCache', + 'AudioTrackList', + 'ChannelMergerNode', + 'CryptoOperation', + 'EventSource', + 'FileReader', + 'HTMLUnknownElement', + 'IDBDatabase', + 'IDBRequest', + 'IDBTransaction', + 'KeyOperation', + 'MediaController', + 'MessagePort', + 'ModalWindow', + 'Notification', + 'SVGElementInstance', + 'Screen', + 'TextTrack', + 'TextTrackCue', + 'TextTrackList', + 'WebSocket', + 'WebSocketWorker', + 'Worker', + 'XMLHttpRequest', + 'XMLHttpRequestEventTarget', + 'XMLHttpRequestUpload' + ]; + for (var i = 0; i < eventTargets.length; i++) { + wrapEventTarget(eventTargets[i]); + } + }, - this._lastCapturedException = ex; // TraceKit.report will re-raise any exception passed to it, - // which means you have to wrap it in try/catch. Instead, we - // can wrap it here and only re-raise if TraceKit.report - // raises an exception different from the one we asked to - // report on. + /** + * Instrument browser built-ins w/ breadcrumb capturing + * - XMLHttpRequests + * - DOM interactions (click/typing) + * - window.location changes + * - console + * + * Can be disabled or individually configured via the `autoBreadcrumbs` config option + */ + _instrumentBreadcrumbs: function() { + var self = this; + var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; - try { - var stack = tracekit.computeStackTrace(ex); + var wrappedBuiltIns = self._wrappedBuiltIns; - this._handleStackInfo(stack, options); - } catch (ex1) { - if (ex !== ex1) { - throw ex1; + function wrapProp(prop, xhr) { + if (prop in xhr && isFunction(xhr[prop])) { + fill(xhr, prop, function(orig) { + return self.wrap(orig); + }); // intentionally don't track filled methods on XHR instances } } - return this; - }, - - /* - * Manually send a message to Sentry - * - * @param {string} msg A plain message to be captured in Sentry - * @param {object} options A specific set of options for this message [optional] - * @return {Raven} - */ - captureMessage: function captureMessage(msg, options) { - // config() automagically converts ignoreErrors from a list to a RegExp so we need to test for an - // early call; we'll error on the side of logging anything called before configuration since it's - // probably something you should see: - if (!!this._globalOptions.ignoreErrors.test && this._globalOptions.ignoreErrors.test(msg)) { - return; - } + if (autoBreadcrumbs.xhr && 'XMLHttpRequest' in _window) { + var xhrproto = XMLHttpRequest.prototype; + fill( + xhrproto, + 'open', + function(origOpen) { + return function(method, url) { + // preserve arity - options = options || {}; - var data = objectMerge({ - message: msg + '' // Make sure it's actually a string + // if Sentry key appears in URL, don't capture + if (isString(url) && url.indexOf(self._globalKey) === -1) { + this.__raven_xhr = { + method: method, + url: url, + status_code: null + }; + } - }, options); - var ex; // Generate a "synthetic" stack trace from this point. - // NOTE: If you are a Sentry user, and you are seeing this stack frame, it is NOT indicative - // of a bug with Raven.js. Sentry generates synthetic traces either by configuration, - // or if it catches a thrown object without a "stack" property. + return origOpen.apply(this, arguments); + }; + }, + wrappedBuiltIns + ); + + fill( + xhrproto, + 'send', + function(origSend) { + return function() { + // preserve arity + var xhr = this; - try { - throw new Error(msg); - } catch (ex1) { - ex = ex1; - } // null exception name so `Error` isn't prefixed to msg + function onreadystatechangeHandler() { + if (xhr.__raven_xhr && xhr.readyState === 4) { + try { + // touching statusCode in some platforms throws + // an exception + xhr.__raven_xhr.status_code = xhr.status; + } catch (e) { + /* do nothing */ + } + self.captureBreadcrumb({ + type: 'http', + category: 'xhr', + data: xhr.__raven_xhr + }); + } + } - ex.name = null; - var stack = tracekit.computeStackTrace(ex); // stack[0] is `throw new Error(msg)` call itself, we are interested in the frame that was just before that, stack[1] + var props = ['onload', 'onerror', 'onprogress']; + for (var j = 0; j < props.length; j++) { + wrapProp(props[j], xhr); + } - var initialCall = isArray(stack.stack) && stack.stack[1]; - var fileurl = initialCall && initialCall.url || ''; + if ('onreadystatechange' in xhr && isFunction(xhr.onreadystatechange)) { + fill( + xhr, + 'onreadystatechange', + function(orig) { + return self.wrap(orig, undefined, onreadystatechangeHandler); + } /* intentionally don't track this instrumentation */ + ); + } else { + // if onreadystatechange wasn't actually set by the page on this xhr, we + // are free to set our own and capture the breadcrumb + xhr.onreadystatechange = onreadystatechangeHandler; + } - if (!!this._globalOptions.ignoreUrls.test && this._globalOptions.ignoreUrls.test(fileurl)) { - return; + return origSend.apply(this, arguments); + }; + }, + wrappedBuiltIns + ); } - if (!!this._globalOptions.whitelistUrls.test && !this._globalOptions.whitelistUrls.test(fileurl)) { - return; - } + if (autoBreadcrumbs.xhr && supportsFetch()) { + fill( + _window, + 'fetch', + function(origFetch) { + return function() { + // preserve arity + // Make a copy of the arguments to prevent deoptimization + // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments + var args = new Array(arguments.length); + for (var i = 0; i < args.length; ++i) { + args[i] = arguments[i]; + } - if (this._globalOptions.stacktrace || options && options.stacktrace) { - options = objectMerge({ - // fingerprint on msg, not stack trace (legacy behavior, could be - // revisited) - fingerprint: msg, - // since we know this is a synthetic trace, the top N-most frames - // MUST be from Raven.js, so mark them as in_app later by setting - // trimHeadFrames - trimHeadFrames: (options.trimHeadFrames || 0) + 1 - }, options); + var fetchInput = args[0]; + var method = 'GET'; + var url; - var frames = this._prepareFrames(stack, options); + if (typeof fetchInput === 'string') { + url = fetchInput; + } else if ('Request' in _window && fetchInput instanceof _window.Request) { + url = fetchInput.url; + if (fetchInput.method) { + method = fetchInput.method; + } + } else { + url = '' + fetchInput; + } - data.stacktrace = { - // Sentry expects frames oldest to newest - frames: frames.reverse() - }; - } // Fire away! + // if Sentry key appears in URL, don't capture, as it's our own request + if (url.indexOf(self._globalKey) !== -1) { + return origFetch.apply(this, args); + } + if (args[1] && args[1].method) { + method = args[1].method; + } - this._send(data); + var fetchData = { + method: method, + url: url, + status_code: null + }; - return this; - }, - captureBreadcrumb: function captureBreadcrumb(obj) { - var crumb = objectMerge({ - timestamp: now() / 1000 - }, obj); + return origFetch.apply(this, args).then(function(response) { + fetchData.status_code = response.status; - if (isFunction(this._globalOptions.breadcrumbCallback)) { - var result = this._globalOptions.breadcrumbCallback(crumb); + self.captureBreadcrumb({ + type: 'http', + category: 'fetch', + data: fetchData + }); - if (isObject(result) && !isEmptyObject(result)) { - crumb = result; - } else if (result === false) { - return this; - } + return response; + }); + }; + }, + wrappedBuiltIns + ); } - this._breadcrumbs.push(crumb); - - if (this._breadcrumbs.length > this._globalOptions.maxBreadcrumbs) { - this._breadcrumbs.shift(); + // Capture breadcrumbs from any click that is unhandled / bubbled up all the way + // to the document. Do this before we instrument addEventListener. + if (autoBreadcrumbs.dom && this._hasDocument) { + if (_document.addEventListener) { + _document.addEventListener('click', self._breadcrumbEventHandler('click'), false); + _document.addEventListener('keypress', self._keypressEventHandler(), false); + } else { + // IE8 Compatibility + _document.attachEvent('onclick', self._breadcrumbEventHandler('click')); + _document.attachEvent('onkeypress', self._keypressEventHandler()); + } } - return this; - }, - addPlugin: function addPlugin(plugin - /*arg1, arg2, ... argN*/ - ) { - var pluginArgs = [].slice.call(arguments, 1); - - this._plugins.push([plugin, pluginArgs]); + // record navigation (URL) changes + // NOTE: in Chrome App environment, touching history.pushState, *even inside + // a try/catch block*, will cause Chrome to output an error to console.error + // borrowed from: https://github.com/angular/angular.js/pull/13945/files + var chrome = _window.chrome; + var isChromePackagedApp = chrome && chrome.app && chrome.app.runtime; + var hasPushAndReplaceState = + !isChromePackagedApp && + _window.history && + history.pushState && + history.replaceState; + if (autoBreadcrumbs.location && hasPushAndReplaceState) { + // TODO: remove onpopstate handler on uninstall() + var oldOnPopState = _window.onpopstate; + _window.onpopstate = function() { + var currentHref = self._location.href; + self._captureUrlChange(self._lastHref, currentHref); - if (this._isRavenInstalled) { - this._drainPlugins(); - } + if (oldOnPopState) { + return oldOnPopState.apply(this, arguments); + } + }; - return this; - }, + var historyReplacementFunction = function(origHistFunction) { + // note history.pushState.length is 0; intentionally not declaring + // params to preserve 0 arity + return function(/* state, title, url */) { + var url = arguments.length > 2 ? arguments[2] : undefined; - /* - * Set/clear a user to be sent along with the payload. - * - * @param {object} user An object representing user data [optional] - * @return {Raven} - */ - setUserContext: function setUserContext(user) { - // Intentionally do not merge here since that's an unexpected behavior. - this._globalContext.user = user; - return this; - }, + // url argument is optional + if (url) { + // coerce to string (this is what pushState does) + self._captureUrlChange(self._lastHref, url + ''); + } - /* - * Merge extra attributes to be sent along with the payload. - * - * @param {object} extra An object representing extra data [optional] - * @return {Raven} - */ - setExtraContext: function setExtraContext(extra) { - this._mergeContext('extra', extra); + return origHistFunction.apply(this, arguments); + }; + }; - return this; - }, + fill(history, 'pushState', historyReplacementFunction, wrappedBuiltIns); + fill(history, 'replaceState', historyReplacementFunction, wrappedBuiltIns); + } - /* - * Merge tags to be sent along with the payload. - * - * @param {object} tags An object representing tags [optional] - * @return {Raven} - */ - setTagsContext: function setTagsContext(tags) { - this._mergeContext('tags', tags); + if (autoBreadcrumbs.console && 'console' in _window && console.log) { + // console + var consoleMethodCallback = function(msg, data) { + self.captureBreadcrumb({ + message: msg, + level: data.level, + category: 'console' + }); + }; - return this; + each(['debug', 'info', 'warn', 'error', 'log'], function(_, level) { + wrapConsoleMethod(console, level, consoleMethodCallback); + }); + } }, - /* - * Clear all of the context. - * - * @return {Raven} - */ - clearContext: function clearContext() { - this._globalContext = {}; - return this; - }, + _restoreBuiltIns: function() { + // restore any wrapped builtins + var builtin; + while (this._wrappedBuiltIns.length) { + builtin = this._wrappedBuiltIns.shift(); - /* - * Get a copy of the current context. This cannot be mutated. - * - * @return {object} copy of context - */ - getContext: function getContext() { - // lol javascript - return JSON.parse(stringify_1(this._globalContext)); - }, + var obj = builtin[0], + name = builtin[1], + orig = builtin[2]; - /* - * Set environment of application - * - * @param {string} environment Typically something like 'production'. - * @return {Raven} - */ - setEnvironment: function setEnvironment(environment) { - this._globalOptions.environment = environment; - return this; + obj[name] = orig; + } }, - /* - * Set release version of application - * - * @param {string} release Typically something like a git SHA to identify version - * @return {Raven} - */ - setRelease: function setRelease(release) { - this._globalOptions.release = release; - return this; + _restoreConsole: function() { + // eslint-disable-next-line guard-for-in + for (var method in this._originalConsoleMethods) { + this._originalConsole[method] = this._originalConsoleMethods[method]; + } }, - /* - * Set the dataCallback option - * - * @param {function} callback The callback to run which allows the - * data blob to be mutated before sending - * @return {Raven} - */ - setDataCallback: function setDataCallback(callback) { - var original = this._globalOptions.dataCallback; - this._globalOptions.dataCallback = keepOriginalCallback(original, callback); - return this; - }, + _drainPlugins: function() { + var self = this; - /* - * Set the breadcrumbCallback option - * - * @param {function} callback The callback to run which allows filtering - * or mutating breadcrumbs - * @return {Raven} - */ - setBreadcrumbCallback: function setBreadcrumbCallback(callback) { - var original = this._globalOptions.breadcrumbCallback; - this._globalOptions.breadcrumbCallback = keepOriginalCallback(original, callback); - return this; + // FIX ME TODO + each(this._plugins, function(_, plugin) { + var installer = plugin[0]; + var args = plugin[1]; + installer.apply(self, [self].concat(args)); + }); }, - /* - * Set the shouldSendCallback option - * - * @param {function} callback The callback to run which allows - * introspecting the blob before sending - * @return {Raven} - */ - setShouldSendCallback: function setShouldSendCallback(callback) { - var original = this._globalOptions.shouldSendCallback; - this._globalOptions.shouldSendCallback = keepOriginalCallback(original, callback); - return this; - }, + _parseDSN: function(str) { + var m = dsnPattern.exec(str), + dsn = {}, + i = 7; - /** - * Override the default HTTP transport mechanism that transmits data - * to the Sentry server. - * - * @param {function} transport Function invoked instead of the default - * `makeRequest` handler. - * - * @return {Raven} - */ - setTransport: function setTransport(transport) { - this._globalOptions.transport = transport; - return this; + try { + while (i--) dsn[dsnKeys[i]] = m[i] || ''; + } catch (e) { + throw new RavenConfigError('Invalid DSN: ' + str); + } + + if (dsn.pass && !this._globalOptions.allowSecretKey) { + throw new RavenConfigError( + 'Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key' + ); + } + + return dsn; }, - /* - * Get the latest raw exception that was captured by Raven. - * - * @return {error} - */ - lastException: function lastException() { - return this._lastCapturedException; + _getGlobalServer: function(uri) { + // assemble the endpoint from the uri pieces + var globalServer = '//' + uri.host + (uri.port ? ':' + uri.port : ''); + + if (uri.protocol) { + globalServer = uri.protocol + ':' + globalServer; + } + return globalServer; }, - /* - * Get the last event id - * - * @return {string} - */ - lastEventId: function lastEventId() { - return this._lastEventId; + _handleOnErrorStackInfo: function() { + // if we are intentionally ignoring errors via onerror, bail out + if (!this._ignoreOnError) { + this._handleStackInfo.apply(this, arguments); + } }, - /* - * Determine if Raven is setup and ready to go. - * - * @return {boolean} - */ - isSetup: function isSetup() { - if (!this._hasJSON) return false; // needs JSON support + _handleStackInfo: function(stackInfo, options) { + var frames = this._prepareFrames(stackInfo, options); - if (!this._globalServer) { - if (!this.ravenNotConfiguredError) { - this.ravenNotConfiguredError = true; + this._triggerEvent('handle', { + stackInfo: stackInfo, + options: options + }); - this._logDebug('error', 'Error: Raven has not been configured.'); + this._processException( + stackInfo.name, + stackInfo.message, + stackInfo.url, + stackInfo.lineno, + frames, + options + ); + }, + + _prepareFrames: function(stackInfo, options) { + var self = this; + var frames = []; + if (stackInfo.stack && stackInfo.stack.length) { + each(stackInfo.stack, function(i, stack) { + var frame = self._normalizeFrame(stack, stackInfo.url); + if (frame) { + frames.push(frame); + } + }); + + // e.g. frames captured via captureMessage throw + if (options && options.trimHeadFrames) { + for (var j = 0; j < options.trimHeadFrames && j < frames.length; j++) { + frames[j].in_app = false; + } } + } + frames = frames.slice(0, this._globalOptions.stackTraceLimit); + return frames; + }, - return false; + _normalizeFrame: function(frame, stackInfoUrl) { + // normalize the frames data + var normalized = { + filename: frame.url, + lineno: frame.line, + colno: frame.column, + function: frame.func || '?' + }; + + // Case when we don't have any information about the error + // E.g. throwing a string or raw object, instead of an `Error` in Firefox + // Generating synthetic error doesn't add any value here + // + // We should probably somehow let a user know that they should fix their code + if (!frame.url) { + normalized.filename = stackInfoUrl; // fallback to whole stacks url from onerror handler } - return true; + normalized.in_app = !// determine if an exception came from outside of our app + // first we check the global includePaths list. + ( + (!!this._globalOptions.includePaths.test && + !this._globalOptions.includePaths.test(normalized.filename)) || + // Now we check for fun, if the function name is Raven or TraceKit + /(Raven|TraceKit)\./.test(normalized['function']) || + // finally, we do a last ditch effort and check for raven.min.js + /raven\.(min\.)?js$/.test(normalized.filename) + ); + + return normalized; }, - afterLoad: function afterLoad() { - // TODO: remove window dependence? - // Attempt to initialize Raven on load - var RavenConfig = _window$1.RavenConfig; - if (RavenConfig) { - this.config(RavenConfig.dsn, RavenConfig.config).install(); + _processException: function(type, message, fileurl, lineno, frames, options) { + var prefixedMessage = (type ? type + ': ' : '') + (message || ''); + if ( + !!this._globalOptions.ignoreErrors.test && + (this._globalOptions.ignoreErrors.test(message) || + this._globalOptions.ignoreErrors.test(prefixedMessage)) + ) { + return; + } + + var stacktrace; + + if (frames && frames.length) { + fileurl = frames[0].filename || fileurl; + // Sentry expects frames oldest to newest + // and JS sends them as newest to oldest + frames.reverse(); + stacktrace = {frames: frames}; + } else if (fileurl) { + stacktrace = { + frames: [ + { + filename: fileurl, + lineno: lineno, + in_app: true + } + ] + }; + } + + if ( + !!this._globalOptions.ignoreUrls.test && + this._globalOptions.ignoreUrls.test(fileurl) + ) { + return; + } + + if ( + !!this._globalOptions.whitelistUrls.test && + !this._globalOptions.whitelistUrls.test(fileurl) + ) { + return; } + + var data = objectMerge( + { + // sentry.interfaces.Exception + exception: { + values: [ + { + type: type, + value: message, + stacktrace: stacktrace + } + ] + }, + culprit: fileurl + }, + options + ); + + // Fire away! + this._send(data); }, - showReportDialog: function showReportDialog(options) { - if (!_document // doesn't work without a document (React native) - ) return; - options = options || {}; - var lastEventId = options.eventId || this.lastEventId(); - if (!lastEventId) { - throw new configError('Missing eventId'); + _trimPacket: function(data) { + // For now, we only want to truncate the two different messages + // but this could/should be expanded to just trim everything + var max = this._globalOptions.maxMessageLength; + if (data.message) { + data.message = truncate(data.message, max); + } + if (data.exception) { + var exception = data.exception.values[0]; + exception.value = truncate(exception.value, max); } - var dsn = options.dsn || this._dsn; + var request = data.request; + if (request) { + if (request.url) { + request.url = truncate(request.url, this._globalOptions.maxUrlLength); + } + if (request.Referer) { + request.Referer = truncate(request.Referer, this._globalOptions.maxUrlLength); + } + } - if (!dsn) { - throw new configError('Missing DSN'); + if (data.breadcrumbs && data.breadcrumbs.values) + this._trimBreadcrumbs(data.breadcrumbs); + + return data; + }, + + /** + * Truncate breadcrumb values (right now just URLs) + */ + _trimBreadcrumbs: function(breadcrumbs) { + // known breadcrumb properties with urls + // TODO: also consider arbitrary prop values that start with (https?)?:// + var urlProps = ['to', 'from', 'url'], + urlProp, + crumb, + data; + + for (var i = 0; i < breadcrumbs.values.length; ++i) { + crumb = breadcrumbs.values[i]; + if ( + !crumb.hasOwnProperty('data') || + !isObject(crumb.data) || + objectFrozen(crumb.data) + ) + continue; + + data = objectMerge({}, crumb.data); + for (var j = 0; j < urlProps.length; ++j) { + urlProp = urlProps[j]; + if (data.hasOwnProperty(urlProp) && data[urlProp]) { + data[urlProp] = truncate(data[urlProp], this._globalOptions.maxUrlLength); + } + } + breadcrumbs.values[i].data = data; } + }, - var encode = encodeURIComponent; - var qs = ''; - qs += '?eventId=' + encode(lastEventId); - qs += '&dsn=' + encode(dsn); - var user = options.user || this._globalContext.user; + _getHttpData: function() { + if (!this._hasNavigator && !this._hasDocument) return; + var httpData = {}; - if (user) { - if (user.name) qs += '&name=' + encode(user.name); - if (user.email) qs += '&email=' + encode(user.email); + if (this._hasNavigator && _navigator.userAgent) { + httpData.headers = { + 'User-Agent': navigator.userAgent + }; } - var globalServer = this._getGlobalServer(this._parseDSN(dsn)); + // Check in `window` instead of `document`, as we may be in ServiceWorker environment + if (_window.location && _window.location.href) { + httpData.url = _window.location.href; + } - var script = _document.createElement('script'); + if (this._hasDocument && _document.referrer) { + if (!httpData.headers) httpData.headers = {}; + httpData.headers.Referer = _document.referrer; + } - script.async = true; - script.src = globalServer + '/api/embed/error-page/' + qs; + return httpData; + }, - (_document.head || _document.body).appendChild(script); + _resetBackoff: function() { + this._backoffDuration = 0; + this._backoffStart = null; }, - /**** Private functions ****/ - _ignoreNextOnError: function _ignoreNextOnError() { - var self = this; - this._ignoreOnError += 1; - setTimeout(function () { - // onerror should trigger before setTimeout - self._ignoreOnError -= 1; - }); + _shouldBackoff: function() { + return this._backoffDuration && now() - this._backoffStart < this._backoffDuration; }, - _triggerEvent: function _triggerEvent(eventType, options) { - // NOTE: `event` is a native browser thing, so let's avoid conflicting wiht it - var evt, key; - if (!this._hasDocument) return; - options = options || {}; - eventType = 'raven' + eventType.substr(0, 1).toUpperCase() + eventType.substr(1); - if (_document.createEvent) { - evt = _document.createEvent('HTMLEvents'); - evt.initEvent(eventType, true, true); - } else { - evt = _document.createEventObject(); - evt.eventType = eventType; + /** + * Returns true if the in-process data payload matches the signature + * of the previously-sent data + * + * NOTE: This has to be done at this level because TraceKit can generate + * data from window.onerror WITHOUT an exception object (IE8, IE9, + * other old browsers). This can take the form of an "exception" + * data object with a single frame (derived from the onerror args). + */ + _isRepeatData: function(current) { + var last = this._lastData; + + if ( + !last || + current.message !== last.message || // defined for captureMessage + current.culprit !== last.culprit // defined for captureException/onerror + ) + return false; + + // Stacktrace interface (i.e. from captureMessage) + if (current.stacktrace || last.stacktrace) { + return isSameStacktrace(current.stacktrace, last.stacktrace); + } else if (current.exception || last.exception) { + // Exception interface (i.e. from captureException/onerror) + return isSameException(current.exception, last.exception); } - for (key in options) { - if (hasKey(options, key)) { - evt[key] = options[key]; - } + return true; + }, + + _setBackoffState: function(request) { + // If we are already in a backoff state, don't change anything + if (this._shouldBackoff()) { + return; } - if (_document.createEvent) { - // IE9 if standards - _document.dispatchEvent(evt); - } else { - // IE8 regardless of Quirks or Standards - // IE9 if quirks - try { - _document.fireEvent('on' + evt.eventType.toLowerCase(), evt); - } catch (e) {// Do nothing + var status = request.status; + + // 400 - project_id doesn't exist or some other fatal + // 401 - invalid/revoked dsn + // 429 - too many requests + if (!(status === 400 || status === 401 || status === 429)) return; + + var retry; + try { + // If Retry-After is not in Access-Control-Expose-Headers, most + // browsers will throw an exception trying to access it + if (supportsFetch()) { + retry = request.headers.get('Retry-After'); + } else { + retry = request.getResponseHeader('Retry-After'); } + + // Retry-After is returned in seconds + retry = parseInt(retry, 10) * 1000; + } catch (e) { + /* eslint no-empty:0 */ } + + this._backoffDuration = retry + ? // If Sentry server returned a Retry-After value, use it + retry + : // Otherwise, double the last backoff duration (starts at 1 sec) + this._backoffDuration * 2 || 1000; + + this._backoffStart = now(); }, - /** - * Wraps addEventListener to capture UI breadcrumbs - * @param evtName the event name (e.g. "click") - * @returns {Function} - * @private - */ - _breadcrumbEventHandler: function _breadcrumbEventHandler(evtName) { - var self = this; - return function (evt) { - // reset keypress timeout; e.g. triggering a 'click' after - // a 'keypress' will reset the keypress debounce so that a new - // set of keypresses can be recorded - self._keypressTimeout = null; // It's possible this handler might trigger multiple times for the same - // event (e.g. event propagation through node ancestors). Ignore if we've - // already captured the event. + _send: function(data) { + var globalOptions = this._globalOptions; - if (self._lastCapturedEvent === evt) return; - self._lastCapturedEvent = evt; // try/catch both: - // - accessing evt.target (see getsentry/raven-js#838, #768) - // - `htmlTreeAsString` because it's complex, and just accessing the DOM incorrectly - // can throw an exception in some circumstances. + var baseData = { + project: this._globalProject, + logger: globalOptions.logger, + platform: 'javascript' + }, + httpData = this._getHttpData(); - var target; + if (httpData) { + baseData.request = httpData; + } - try { - target = htmlTreeAsString(evt.target); - } catch (e) { - target = ''; - } + // HACK: delete `trimHeadFrames` to prevent from appearing in outbound payload + if (data.trimHeadFrames) delete data.trimHeadFrames; - self.captureBreadcrumb({ - category: 'ui.' + evtName, - // e.g. ui.click, ui.input - message: target - }); - }; - }, + data = objectMerge(baseData, data); - /** - * Wraps addEventListener to capture keypress UI events - * @returns {Function} - * @private - */ - _keypressEventHandler: function _keypressEventHandler() { - var self = this, - debounceDuration = 1000; // milliseconds - // TODO: if somehow user switches keypress target before - // debounce timeout is triggered, we will only capture - // a single breadcrumb from the FIRST target (acceptable?) + // Merge in the tags and extra separately since objectMerge doesn't handle a deep merge + data.tags = objectMerge(objectMerge({}, this._globalContext.tags), data.tags); + data.extra = objectMerge(objectMerge({}, this._globalContext.extra), data.extra); - return function (evt) { - var target; + // Send along our own collected metadata with extra + data.extra['session:duration'] = now() - this._startTime; - try { - target = evt.target; - } catch (e) { - // just accessing event properties can throw an exception in some rare circumstances - // see: https://github.com/getsentry/raven-js/issues/838 - return; - } + if (this._breadcrumbs && this._breadcrumbs.length > 0) { + // intentionally make shallow copy so that additions + // to breadcrumbs aren't accidentally sent in this request + data.breadcrumbs = { + values: [].slice.call(this._breadcrumbs, 0) + }; + } - var tagName = target && target.tagName; // only consider keypress events on actual input elements - // this will disregard keypresses targeting body (e.g. tabbing - // through elements, hotkeys, etc) + if (this._globalContext.user) { + // sentry.interfaces.User + data.user = this._globalContext.user; + } - if (!tagName || tagName !== 'INPUT' && tagName !== 'TEXTAREA' && !target.isContentEditable) return; // record first keypress in a series, but ignore subsequent - // keypresses until debounce clears + // Include the environment if it's defined in globalOptions + if (globalOptions.environment) data.environment = globalOptions.environment; - var timeout = self._keypressTimeout; + // Include the release if it's defined in globalOptions + if (globalOptions.release) data.release = globalOptions.release; - if (!timeout) { - self._breadcrumbEventHandler('input')(evt); + // Include server_name if it's defined in globalOptions + if (globalOptions.serverName) data.server_name = globalOptions.serverName; + + // Cleanup empty properties before sending them to the server + Object.keys(data).forEach(function(key) { + if (data[key] == null || data[key] === '' || isEmptyObject(data[key])) { + delete data[key]; } + }); - clearTimeout(timeout); - self._keypressTimeout = setTimeout(function () { - self._keypressTimeout = null; - }, debounceDuration); - }; - }, + if (isFunction(globalOptions.dataCallback)) { + data = globalOptions.dataCallback(data) || data; + } - /** - * Captures a breadcrumb of type "navigation", normalizing input URLs - * @param to the originating URL - * @param from the target URL - * @private - */ - _captureUrlChange: function _captureUrlChange(from, to) { - var parsedLoc = parseUrl(this._location.href); - var parsedTo = parseUrl(to); - var parsedFrom = parseUrl(from); // because onpopstate only tells you the "new" (to) value of location.href, and - // not the previous (from) value, we need to track the value of the current URL - // state ourselves + // Why?????????? + if (!data || isEmptyObject(data)) { + return; + } - this._lastHref = to; // Use only the path component of the URL if the URL matches the current - // document (almost all the time when using pushState) + // Check if the request should be filtered or not + if ( + isFunction(globalOptions.shouldSendCallback) && + !globalOptions.shouldSendCallback(data) + ) { + return; + } - if (parsedLoc.protocol === parsedTo.protocol && parsedLoc.host === parsedTo.host) to = parsedTo.relative; - if (parsedLoc.protocol === parsedFrom.protocol && parsedLoc.host === parsedFrom.host) from = parsedFrom.relative; - this.captureBreadcrumb({ - category: 'navigation', - data: { - to: to, - from: from + // Backoff state: Sentry server previously responded w/ an error (e.g. 429 - too many requests), + // so drop requests until "cool-off" period has elapsed. + if (this._shouldBackoff()) { + this._logDebug('warn', 'Raven dropped error due to backoff: ', data); + return; + } + + if (typeof globalOptions.sampleRate === 'number') { + if (Math.random() < globalOptions.sampleRate) { + this._sendProcessedPayload(data); } - }); + } else { + this._sendProcessedPayload(data); + } + }, + + _getUuid: function() { + return uuid4(); }, - _patchFunctionToString: function _patchFunctionToString() { + + _sendProcessedPayload: function(data, callback) { var self = this; - self._originalFunctionToString = Function.prototype.toString; // eslint-disable-next-line no-extend-native + var globalOptions = this._globalOptions; - Function.prototype.toString = function () { - if (typeof this === 'function' && this.__raven__) { - return self._originalFunctionToString.apply(this.__orig__, arguments); - } + if (!this.isSetup()) return; - return self._originalFunctionToString.apply(this, arguments); - }; - }, - _unpatchFunctionToString: function _unpatchFunctionToString() { - if (this._originalFunctionToString) { - // eslint-disable-next-line no-extend-native - Function.prototype.toString = this._originalFunctionToString; + // Try and clean up the packet before sending by truncating long values + data = this._trimPacket(data); + + // ideally duplicate error testing should occur *before* dataCallback/shouldSendCallback, + // but this would require copying an un-truncated copy of the data packet, which can be + // arbitrarily deep (extra_data) -- could be worthwhile? will revisit + if (!this._globalOptions.allowDuplicates && this._isRepeatData(data)) { + this._logDebug('warn', 'Raven dropped repeat event: ', data); + return; } - }, - /** - * Wrap timer functions and event targets to catch errors and provide - * better metadata. - */ - _instrumentTryCatch: function _instrumentTryCatch() { - var self = this; - var wrappedBuiltIns = self._wrappedBuiltIns; + // Send along an event_id if not explicitly passed. + // This event_id can be used to reference the error within Sentry itself. + // Set lastEventId after we know the error should actually be sent + this._lastEventId = data.event_id || (data.event_id = this._getUuid()); - function wrapTimeFn(orig) { - return function (fn, t) { - // preserve arity - // Make a copy of the arguments to prevent deoptimization - // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments - var args = new Array(arguments.length); + // Store outbound payload after trim + this._lastData = data; - for (var i = 0; i < args.length; ++i) { - args[i] = arguments[i]; - } + this._logDebug('debug', 'Raven about to send:', data); - var originalCallback = args[0]; + var auth = { + sentry_version: '7', + sentry_client: 'raven-js/' + this.VERSION, + sentry_key: this._globalKey + }; - if (isFunction(originalCallback)) { - args[0] = self.wrap(originalCallback); - } // IE < 9 doesn't support .call/.apply on setInterval/setTimeout, but it - // also supports only two arguments and doesn't care what this is, so we - // can just call the original function directly. + if (this._globalSecret) { + auth.sentry_secret = this._globalSecret; + } + var exception = data.exception && data.exception.values[0]; - if (orig.apply) { - return orig.apply(this, args); - } else { - return orig(args[0], args[1]); - } - }; + // only capture 'sentry' breadcrumb is autoBreadcrumbs is truthy + if ( + this._globalOptions.autoBreadcrumbs && + this._globalOptions.autoBreadcrumbs.sentry + ) { + this.captureBreadcrumb({ + category: 'sentry', + message: exception + ? (exception.type ? exception.type + ': ' : '') + exception.value + : data.message, + event_id: data.event_id, + level: data.level || 'error' // presume error unless specified + }); } - var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; + var url = this._globalEndpoint; + (globalOptions.transport || this._makeRequest).call(this, { + url: url, + auth: auth, + data: data, + options: globalOptions, + onSuccess: function success() { + self._resetBackoff(); - function wrapEventTarget(global) { - var proto = _window$1[global] && _window$1[global].prototype; + self._triggerEvent('success', { + data: data, + src: url + }); + callback && callback(); + }, + onError: function failure(error) { + self._logDebug('error', 'Raven transport failed to send: ', error); - if (proto && proto.hasOwnProperty && proto.hasOwnProperty('addEventListener')) { - fill(proto, 'addEventListener', function (orig) { - return function (evtName, fn, capture, secure) { - // preserve arity - try { - if (fn && fn.handleEvent) { - fn.handleEvent = self.wrap(fn.handleEvent); - } - } catch (err) {} // can sometimes get 'Permission denied to access property "handle Event' - // More breadcrumb DOM capture ... done here and not in `_instrumentBreadcrumbs` - // so that we don't have more than one wrapper function + if (error.request) { + self._setBackoffState(error.request); + } + self._triggerEvent('failure', { + data: data, + src: url + }); + error = error || new Error('Raven send failed (no additional details provided)'); + callback && callback(error); + } + }); + }, - var before, clickHandler, keypressHandler; + _makeRequest: function(opts) { + // Auth is intentionally sent as part of query string (NOT as custom HTTP header) to avoid preflight CORS requests + var url = opts.url + '?' + urlencode(opts.auth); - if (autoBreadcrumbs && autoBreadcrumbs.dom && (global === 'EventTarget' || global === 'Node')) { - // NOTE: generating multiple handlers per addEventListener invocation, should - // revisit and verify we can just use one (almost certainly) - clickHandler = self._breadcrumbEventHandler('click'); - keypressHandler = self._keypressEventHandler(); + var evaluatedHeaders = null; + var evaluatedFetchParameters = {}; - before = function before(evt) { - // need to intercept every DOM event in `before` argument, in case that - // same wrapped method is re-used for different events (e.g. mousemove THEN click) - // see #724 - if (!evt) return; - var eventType; + if (opts.options.headers) { + evaluatedHeaders = this._evaluateHash(opts.options.headers); + } - try { - eventType = evt.type; - } catch (e) { - // just accessing event properties can throw an exception in some rare circumstances - // see: https://github.com/getsentry/raven-js/issues/838 - return; - } + if (opts.options.fetchParameters) { + evaluatedFetchParameters = this._evaluateHash(opts.options.fetchParameters); + } - if (eventType === 'click') return clickHandler(evt);else if (eventType === 'keypress') return keypressHandler(evt); - }; - } + if (supportsFetch()) { + evaluatedFetchParameters.body = stringify(opts.data); - return orig.call(this, evtName, self.wrap(fn, undefined, before), capture, secure); - }; - }, wrappedBuiltIns); - fill(proto, 'removeEventListener', function (orig) { - return function (evt, fn, capture, secure) { - try { - fn = fn && (fn.__raven_wrapper__ ? fn.__raven_wrapper__ : fn); - } catch (e) {// ignore, accessing __raven_wrapper__ will throw in some Selenium environments - } + var defaultFetchOptions = objectMerge({}, this._fetchDefaults); + var fetchOptions = objectMerge(defaultFetchOptions, evaluatedFetchParameters); - return orig.call(this, evt, fn, capture, secure); - }; - }, wrappedBuiltIns); + if (evaluatedHeaders) { + fetchOptions.headers = evaluatedHeaders; } + + return _window + .fetch(url, fetchOptions) + .then(function(response) { + if (response.ok) { + opts.onSuccess && opts.onSuccess(); + } else { + var error = new Error('Sentry error code: ' + response.status); + // It's called request only to keep compatibility with XHR interface + // and not add more redundant checks in setBackoffState method + error.request = response; + opts.onError && opts.onError(error); + } + }) + ['catch'](function() { + opts.onError && + opts.onError(new Error('Sentry error code: network unavailable')); + }); } - fill(_window$1, 'setTimeout', wrapTimeFn, wrappedBuiltIns); - fill(_window$1, 'setInterval', wrapTimeFn, wrappedBuiltIns); + var request = _window.XMLHttpRequest && new _window.XMLHttpRequest(); + if (!request) return; + + // if browser doesn't support CORS (e.g. IE7), we are out of luck + var hasCORS = 'withCredentials' in request || typeof XDomainRequest !== 'undefined'; + + if (!hasCORS) return; + + if ('withCredentials' in request) { + request.onreadystatechange = function() { + if (request.readyState !== 4) { + return; + } else if (request.status === 200) { + opts.onSuccess && opts.onSuccess(); + } else if (opts.onError) { + var err = new Error('Sentry error code: ' + request.status); + err.request = request; + opts.onError(err); + } + }; + } else { + request = new XDomainRequest(); + // xdomainrequest cannot go http -> https (or vice versa), + // so always use protocol relative + url = url.replace(/^https?:/, ''); - if (_window$1.requestAnimationFrame) { - fill(_window$1, 'requestAnimationFrame', function (orig) { - return function (cb) { - return orig(self.wrap(cb)); + // onreadystatechange not supported by XDomainRequest + if (opts.onSuccess) { + request.onload = opts.onSuccess; + } + if (opts.onError) { + request.onerror = function() { + var err = new Error('Sentry error code: XDomainRequest'); + err.request = request; + opts.onError(err); }; - }, wrappedBuiltIns); - } // event targets borrowed from bugsnag-js: - // https://github.com/bugsnag/bugsnag-js/blob/master/src/bugsnag.js#L666 - + } + } - var eventTargets = ['EventTarget', 'Window', 'Node', 'ApplicationCache', 'AudioTrackList', 'ChannelMergerNode', 'CryptoOperation', 'EventSource', 'FileReader', 'HTMLUnknownElement', 'IDBDatabase', 'IDBRequest', 'IDBTransaction', 'KeyOperation', 'MediaController', 'MessagePort', 'ModalWindow', 'Notification', 'SVGElementInstance', 'Screen', 'TextTrack', 'TextTrackCue', 'TextTrackList', 'WebSocket', 'WebSocketWorker', 'Worker', 'XMLHttpRequest', 'XMLHttpRequestEventTarget', 'XMLHttpRequestUpload']; + request.open('POST', url); - for (var i = 0; i < eventTargets.length; i++) { - wrapEventTarget(eventTargets[i]); + if (evaluatedHeaders) { + each(evaluatedHeaders, function(key, value) { + request.setRequestHeader(key, value); + }); } + + request.send(stringify(opts.data)); }, - /** - * Instrument browser built-ins w/ breadcrumb capturing - * - XMLHttpRequests - * - DOM interactions (click/typing) - * - window.location changes - * - console - * - * Can be disabled or individually configured via the `autoBreadcrumbs` config option - */ - _instrumentBreadcrumbs: function _instrumentBreadcrumbs() { - var self = this; - var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; - var wrappedBuiltIns = self._wrappedBuiltIns; + _evaluateHash: function(hash) { + var evaluated = {}; - function wrapProp(prop, xhr) { - if (prop in xhr && isFunction(xhr[prop])) { - fill(xhr, prop, function (orig) { - return self.wrap(orig); - }); // intentionally don't track filled methods on XHR instances + for (var key in hash) { + if (hash.hasOwnProperty(key)) { + var value = hash[key]; + evaluated[key] = typeof value === 'function' ? value() : value; } } - if (autoBreadcrumbs.xhr && 'XMLHttpRequest' in _window$1) { - var xhrproto = XMLHttpRequest.prototype; - fill(xhrproto, 'open', function (origOpen) { - return function (method, url) { - // preserve arity - // if Sentry key appears in URL, don't capture - if (isString(url) && url.indexOf(self._globalKey) === -1) { - this.__raven_xhr = { - method: method, - url: url, - status_code: null - }; - } - - return origOpen.apply(this, arguments); - }; - }, wrappedBuiltIns); - fill(xhrproto, 'send', function (origSend) { - return function () { - // preserve arity - var xhr = this; - - function onreadystatechangeHandler() { - if (xhr.__raven_xhr && xhr.readyState === 4) { - try { - // touching statusCode in some platforms throws - // an exception - xhr.__raven_xhr.status_code = xhr.status; - } catch (e) { - /* do nothing */ - } - - self.captureBreadcrumb({ - type: 'http', - category: 'xhr', - data: xhr.__raven_xhr - }); - } - } + return evaluated; + }, - var props = ['onload', 'onerror', 'onprogress']; + _logDebug: function(level) { + if (this._originalConsoleMethods[level] && this.debug) { + // In IE<10 console methods do not have their own 'apply' method + Function.prototype.apply.call( + this._originalConsoleMethods[level], + this._originalConsole, + [].slice.call(arguments, 1) + ); + } + }, - for (var j = 0; j < props.length; j++) { - wrapProp(props[j], xhr); - } + _mergeContext: function(key, context) { + if (isUndefined(context)) { + delete this._globalContext[key]; + } else { + this._globalContext[key] = objectMerge(this._globalContext[key] || {}, context); + } + } +}; - if ('onreadystatechange' in xhr && isFunction(xhr.onreadystatechange)) { - fill(xhr, 'onreadystatechange', function (orig) { - return self.wrap(orig, undefined, onreadystatechangeHandler); - } - /* intentionally don't track this instrumentation */ - ); - } else { - // if onreadystatechange wasn't actually set by the page on this xhr, we - // are free to set our own and capture the breadcrumb - xhr.onreadystatechange = onreadystatechangeHandler; - } +// Deprecations +Raven.prototype.setUser = Raven.prototype.setUserContext; +Raven.prototype.setReleaseContext = Raven.prototype.setRelease; - return origSend.apply(this, arguments); - }; - }, wrappedBuiltIns); - } +module.exports = Raven; - if (autoBreadcrumbs.xhr && supportsFetch()) { - fill(_window$1, 'fetch', function (origFetch) { - return function () { - // preserve arity - // Make a copy of the arguments to prevent deoptimization - // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments - var args = new Array(arguments.length); - - for (var i = 0; i < args.length; ++i) { - args[i] = arguments[i]; - } +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"1":1,"2":2,"5":5,"6":6,"7":7}],4:[function(_dereq_,module,exports){ +(function (global){ +/** + * Enforces a single instance of the Raven client, and the + * main entry point for Raven. If you are a consumer of the + * Raven library, you SHOULD load this file (vs raven.js). + **/ - var fetchInput = args[0]; - var method = 'GET'; - var url; +var RavenConstructor = _dereq_(3); - if (typeof fetchInput === 'string') { - url = fetchInput; - } else if ('Request' in _window$1 && fetchInput instanceof _window$1.Request) { - url = fetchInput.url; +// This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) +var _window = + typeof window !== 'undefined' + ? window + : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; +var _Raven = _window.Raven; - if (fetchInput.method) { - method = fetchInput.method; - } - } else { - url = '' + fetchInput; - } // if Sentry key appears in URL, don't capture, as it's our own request +var Raven = new RavenConstructor(); +/* + * Allow multiple versions of Raven to be installed. + * Strip Raven from the global context and returns the instance. + * + * @return {Raven} + */ +Raven.noConflict = function() { + _window.Raven = _Raven; + return Raven; +}; - if (url.indexOf(self._globalKey) !== -1) { - return origFetch.apply(this, args); - } +Raven.afterLoad(); - if (args[1] && args[1].method) { - method = args[1].method; - } +module.exports = Raven; - var fetchData = { - method: method, - url: url, - status_code: null - }; - return origFetch.apply(this, args).then(function (response) { - fetchData.status_code = response.status; - self.captureBreadcrumb({ - type: 'http', - category: 'fetch', - data: fetchData - }); - return response; - }); - }; - }, wrappedBuiltIns); - } // Capture breadcrumbs from any click that is unhandled / bubbled up all the way - // to the document. Do this before we instrument addEventListener. +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"3":3}],5:[function(_dereq_,module,exports){ +(function (global){ +var _window = + typeof window !== 'undefined' + ? window + : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; +function isObject(what) { + return typeof what === 'object' && what !== null; +} - if (autoBreadcrumbs.dom && this._hasDocument) { - if (_document.addEventListener) { - _document.addEventListener('click', self._breadcrumbEventHandler('click'), false); +// Yanked from https://git.io/vS8DV re-used under CC0 +// with some tiny modifications +function isError(value) { + switch ({}.toString.call(value)) { + case '[object Error]': + return true; + case '[object Exception]': + return true; + case '[object DOMException]': + return true; + default: + return value instanceof Error; + } +} - _document.addEventListener('keypress', self._keypressEventHandler(), false); - } else { - // IE8 Compatibility - _document.attachEvent('onclick', self._breadcrumbEventHandler('click')); +function isErrorEvent(value) { + return supportsErrorEvent() && {}.toString.call(value) === '[object ErrorEvent]'; +} - _document.attachEvent('onkeypress', self._keypressEventHandler()); - } - } // record navigation (URL) changes - // NOTE: in Chrome App environment, touching history.pushState, *even inside - // a try/catch block*, will cause Chrome to output an error to console.error - // borrowed from: https://github.com/angular/angular.js/pull/13945/files +function isUndefined(what) { + return what === void 0; +} +function isFunction(what) { + return typeof what === 'function'; +} - var chrome = _window$1.chrome; - var isChromePackagedApp = chrome && chrome.app && chrome.app.runtime; - var hasPushAndReplaceState = !isChromePackagedApp && _window$1.history && history.pushState && history.replaceState; +function isPlainObject(what) { + return Object.prototype.toString.call(what) === '[object Object]'; +} - if (autoBreadcrumbs.location && hasPushAndReplaceState) { - // TODO: remove onpopstate handler on uninstall() - var oldOnPopState = _window$1.onpopstate; +function isString(what) { + return Object.prototype.toString.call(what) === '[object String]'; +} - _window$1.onpopstate = function () { - var currentHref = self._location.href; +function isArray(what) { + return Object.prototype.toString.call(what) === '[object Array]'; +} - self._captureUrlChange(self._lastHref, currentHref); +function isEmptyObject(what) { + if (!isPlainObject(what)) return false; - if (oldOnPopState) { - return oldOnPopState.apply(this, arguments); - } - }; + for (var _ in what) { + if (what.hasOwnProperty(_)) { + return false; + } + } + return true; +} - var historyReplacementFunction = function historyReplacementFunction(origHistFunction) { - // note history.pushState.length is 0; intentionally not declaring - // params to preserve 0 arity - return function () - /* state, title, url */ - { - var url = arguments.length > 2 ? arguments[2] : undefined; // url argument is optional +function supportsErrorEvent() { + try { + new ErrorEvent(''); // eslint-disable-line no-new + return true; + } catch (e) { + return false; + } +} - if (url) { - // coerce to string (this is what pushState does) - self._captureUrlChange(self._lastHref, url + ''); - } +function supportsFetch() { + if (!('fetch' in _window)) return false; - return origHistFunction.apply(this, arguments); - }; - }; + try { + new Headers(); // eslint-disable-line no-new + new Request(''); // eslint-disable-line no-new + new Response(); // eslint-disable-line no-new + return true; + } catch (e) { + return false; + } +} - fill(history, 'pushState', historyReplacementFunction, wrappedBuiltIns); - fill(history, 'replaceState', historyReplacementFunction, wrappedBuiltIns); +function wrappedCallback(callback) { + function dataCallback(data, original) { + var normalizedData = callback(data) || data; + if (original) { + return original(normalizedData) || normalizedData; } + return normalizedData; + } - if (autoBreadcrumbs.console && 'console' in _window$1 && console.log) { - // console - var consoleMethodCallback = function consoleMethodCallback(msg, data) { - self.captureBreadcrumb({ - message: msg, - level: data.level, - category: 'console' - }); - }; + return dataCallback; +} - each(['debug', 'info', 'warn', 'error', 'log'], function (_, level) { - wrapConsoleMethod(console, level, consoleMethodCallback); - }); - } - }, - _restoreBuiltIns: function _restoreBuiltIns() { - // restore any wrapped builtins - var builtin; +function each(obj, callback) { + var i, j; - while (this._wrappedBuiltIns.length) { - builtin = this._wrappedBuiltIns.shift(); - var obj = builtin[0], - name = builtin[1], - orig = builtin[2]; - obj[name] = orig; + if (isUndefined(obj.length)) { + for (i in obj) { + if (hasKey(obj, i)) { + callback.call(null, i, obj[i]); + } } - }, - _restoreConsole: function _restoreConsole() { - // eslint-disable-next-line guard-for-in - for (var method in this._originalConsoleMethods) { - this._originalConsole[method] = this._originalConsoleMethods[method]; + } else { + j = obj.length; + if (j) { + for (i = 0; i < j; i++) { + callback.call(null, i, obj[i]); + } } - }, - _drainPlugins: function _drainPlugins() { - var self = this; // FIX ME TODO + } +} - each(this._plugins, function (_, plugin) { - var installer = plugin[0]; - var args = plugin[1]; - installer.apply(self, [self].concat(args)); - }); - }, - _parseDSN: function _parseDSN(str) { - var m = dsnPattern.exec(str), - dsn = {}, - i = 7; +function objectMerge(obj1, obj2) { + if (!obj2) { + return obj1; + } + each(obj2, function(key, value) { + obj1[key] = value; + }); + return obj1; +} + +/** + * This function is only used for react-native. + * react-native freezes object that have already been sent over the + * js bridge. We need this function in order to check if the object is frozen. + * So it's ok that objectFrozen returns false if Object.isFrozen is not + * supported because it's not relevant for other "platforms". See related issue: + * https://github.com/getsentry/react-native-sentry/issues/57 + */ +function objectFrozen(obj) { + if (!Object.isFrozen) { + return false; + } + return Object.isFrozen(obj); +} - try { - while (i--) { - dsn[dsnKeys[i]] = m[i] || ''; - } - } catch (e) { - throw new configError('Invalid DSN: ' + str); - } +function truncate(str, max) { + return !max || str.length <= max ? str : str.substr(0, max) + '\u2026'; +} - if (dsn.pass && !this._globalOptions.allowSecretKey) { - throw new configError('Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key'); - } +/** + * hasKey, a better form of hasOwnProperty + * Example: hasKey(MainHostObject, property) === true/false + * + * @param {Object} host object to check property + * @param {string} key to check + */ +function hasKey(object, key) { + return Object.prototype.hasOwnProperty.call(object, key); +} - return dsn; - }, - _getGlobalServer: function _getGlobalServer(uri) { - // assemble the endpoint from the uri pieces - var globalServer = '//' + uri.host + (uri.port ? ':' + uri.port : ''); +function joinRegExp(patterns) { + // Combine an array of regular expressions and strings into one large regexp + // Be mad. + var sources = [], + i = 0, + len = patterns.length, + pattern; - if (uri.protocol) { - globalServer = uri.protocol + ':' + globalServer; + for (; i < len; i++) { + pattern = patterns[i]; + if (isString(pattern)) { + // If it's a string, we need to escape it + // Taken from: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions + sources.push(pattern.replace(/([.*+?^=!:${}()|\[\]\/\\])/g, '\\$1')); + } else if (pattern && pattern.source) { + // If it's a regexp already, we want to extract the source + sources.push(pattern.source); } + // Intentionally skip other cases + } + return new RegExp(sources.join('|'), 'i'); +} - return globalServer; - }, - _handleOnErrorStackInfo: function _handleOnErrorStackInfo() { - // if we are intentionally ignoring errors via onerror, bail out - if (!this._ignoreOnError) { - this._handleStackInfo.apply(this, arguments); - } - }, - _handleStackInfo: function _handleStackInfo(stackInfo, options) { - var frames = this._prepareFrames(stackInfo, options); +function urlencode(o) { + var pairs = []; + each(o, function(key, value) { + pairs.push(encodeURIComponent(key) + '=' + encodeURIComponent(value)); + }); + return pairs.join('&'); +} - this._triggerEvent('handle', { - stackInfo: stackInfo, - options: options - }); +// borrowed from https://tools.ietf.org/html/rfc3986#appendix-B +// intentionally using regex and not href parsing trick because React Native and other +// environments where DOM might not be available +function parseUrl(url) { + if (typeof url !== 'string') return {}; + var match = url.match(/^(([^:\/?#]+):)?(\/\/([^\/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?$/); - this._processException(stackInfo.name, stackInfo.message, stackInfo.url, stackInfo.lineno, frames, options); - }, - _prepareFrames: function _prepareFrames(stackInfo, options) { - var self = this; - var frames = []; + // coerce to undefined values to empty string so we don't get 'undefined' + var query = match[6] || ''; + var fragment = match[8] || ''; + return { + protocol: match[2], + host: match[4], + path: match[5], + relative: match[5] + query + fragment // everything minus origin + }; +} +function uuid4() { + var crypto = _window.crypto || _window.msCrypto; - if (stackInfo.stack && stackInfo.stack.length) { - each(stackInfo.stack, function (i, stack) { - var frame = self._normalizeFrame(stack, stackInfo.url); + if (!isUndefined(crypto) && crypto.getRandomValues) { + // Use window.crypto API if available + // eslint-disable-next-line no-undef + var arr = new Uint16Array(8); + crypto.getRandomValues(arr); - if (frame) { - frames.push(frame); - } - }); // e.g. frames captured via captureMessage throw + // set 4 in byte 7 + arr[3] = (arr[3] & 0xfff) | 0x4000; + // set 2 most significant bits of byte 9 to '10' + arr[4] = (arr[4] & 0x3fff) | 0x8000; - if (options && options.trimHeadFrames) { - for (var j = 0; j < options.trimHeadFrames && j < frames.length; j++) { - frames[j].in_app = false; - } + var pad = function(num) { + var v = num.toString(16); + while (v.length < 4) { + v = '0' + v; } - } - - frames = frames.slice(0, this._globalOptions.stackTraceLimit); - return frames; - }, - _normalizeFrame: function _normalizeFrame(frame, stackInfoUrl) { - // normalize the frames data - var normalized = { - filename: frame.url, - lineno: frame.line, - colno: frame.column, - function: frame.func || '?' - }; // Case when we don't have any information about the error - // E.g. throwing a string or raw object, instead of an `Error` in Firefox - // Generating synthetic error doesn't add any value here - // - // We should probably somehow let a user know that they should fix their code + return v; + }; - if (!frame.url) { - normalized.filename = stackInfoUrl; // fallback to whole stacks url from onerror handler - } + return ( + pad(arr[0]) + + pad(arr[1]) + + pad(arr[2]) + + pad(arr[3]) + + pad(arr[4]) + + pad(arr[5]) + + pad(arr[6]) + + pad(arr[7]) + ); + } else { + // http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/2117523#2117523 + return 'xxxxxxxxxxxx4xxxyxxxxxxxxxxxxxxx'.replace(/[xy]/g, function(c) { + var r = (Math.random() * 16) | 0, + v = c === 'x' ? r : (r & 0x3) | 0x8; + return v.toString(16); + }); + } +} - normalized.in_app = !( // determine if an exception came from outside of our app - // first we check the global includePaths list. - !!this._globalOptions.includePaths.test && !this._globalOptions.includePaths.test(normalized.filename) || // Now we check for fun, if the function name is Raven or TraceKit - /(Raven|TraceKit)\./.test(normalized['function']) || // finally, we do a last ditch effort and check for raven.min.js - /raven\.(min\.)?js$/.test(normalized.filename)); - return normalized; - }, - _processException: function _processException(type, message, fileurl, lineno, frames, options) { - var prefixedMessage = (type ? type + ': ' : '') + (message || ''); +/** + * Given a child DOM element, returns a query-selector statement describing that + * and its ancestors + * e.g. [HTMLElement] => body > div > input#foo.btn[name=baz] + * @param elem + * @returns {string} + */ +function htmlTreeAsString(elem) { + /* eslint no-extra-parens:0*/ + var MAX_TRAVERSE_HEIGHT = 5, + MAX_OUTPUT_LEN = 80, + out = [], + height = 0, + len = 0, + separator = ' > ', + sepLength = separator.length, + nextStr; - if (!!this._globalOptions.ignoreErrors.test && (this._globalOptions.ignoreErrors.test(message) || this._globalOptions.ignoreErrors.test(prefixedMessage))) { - return; + while (elem && height++ < MAX_TRAVERSE_HEIGHT) { + nextStr = htmlElementAsString(elem); + // bail out if + // - nextStr is the 'html' element + // - the length of the string that would be created exceeds MAX_OUTPUT_LEN + // (ignore this limit if we are on the first iteration) + if ( + nextStr === 'html' || + (height > 1 && len + out.length * sepLength + nextStr.length >= MAX_OUTPUT_LEN) + ) { + break; } - var stacktrace; - - if (frames && frames.length) { - fileurl = frames[0].filename || fileurl; // Sentry expects frames oldest to newest - // and JS sends them as newest to oldest + out.push(nextStr); - frames.reverse(); - stacktrace = { - frames: frames - }; - } else if (fileurl) { - stacktrace = { - frames: [{ - filename: fileurl, - lineno: lineno, - in_app: true - }] - }; - } + len += nextStr.length; + elem = elem.parentNode; + } - if (!!this._globalOptions.ignoreUrls.test && this._globalOptions.ignoreUrls.test(fileurl)) { - return; - } + return out.reverse().join(separator); +} - if (!!this._globalOptions.whitelistUrls.test && !this._globalOptions.whitelistUrls.test(fileurl)) { - return; - } +/** + * Returns a simple, query-selector representation of a DOM element + * e.g. [HTMLElement] => input#foo.btn[name=baz] + * @param HTMLElement + * @returns {string} + */ +function htmlElementAsString(elem) { + var out = [], + className, + classes, + key, + attr, + i; - var data = objectMerge({ - // sentry.interfaces.Exception - exception: { - values: [{ - type: type, - value: message, - stacktrace: stacktrace - }] - }, - culprit: fileurl - }, options); // Fire away! + if (!elem || !elem.tagName) { + return ''; + } - this._send(data); - }, - _trimPacket: function _trimPacket(data) { - // For now, we only want to truncate the two different messages - // but this could/should be expanded to just trim everything - var max = this._globalOptions.maxMessageLength; + out.push(elem.tagName.toLowerCase()); + if (elem.id) { + out.push('#' + elem.id); + } - if (data.message) { - data.message = truncate(data.message, max); + className = elem.className; + if (className && isString(className)) { + classes = className.split(/\s+/); + for (i = 0; i < classes.length; i++) { + out.push('.' + classes[i]); } - - if (data.exception) { - var exception = data.exception.values[0]; - exception.value = truncate(exception.value, max); + } + var attrWhitelist = ['type', 'name', 'title', 'alt']; + for (i = 0; i < attrWhitelist.length; i++) { + key = attrWhitelist[i]; + attr = elem.getAttribute(key); + if (attr) { + out.push('[' + key + '="' + attr + '"]'); } + } + return out.join(''); +} - var request = data.request; +/** + * Returns true if either a OR b is truthy, but not both + */ +function isOnlyOneTruthy(a, b) { + return !!(!!a ^ !!b); +} - if (request) { - if (request.url) { - request.url = truncate(request.url, this._globalOptions.maxUrlLength); - } +/** + * Returns true if both parameters are undefined + */ +function isBothUndefined(a, b) { + return isUndefined(a) && isUndefined(b); +} - if (request.Referer) { - request.Referer = truncate(request.Referer, this._globalOptions.maxUrlLength); - } - } +/** + * Returns true if the two input exception interfaces have the same content + */ +function isSameException(ex1, ex2) { + if (isOnlyOneTruthy(ex1, ex2)) return false; - if (data.breadcrumbs && data.breadcrumbs.values) this._trimBreadcrumbs(data.breadcrumbs); - return data; - }, + ex1 = ex1.values[0]; + ex2 = ex2.values[0]; - /** - * Truncate breadcrumb values (right now just URLs) - */ - _trimBreadcrumbs: function _trimBreadcrumbs(breadcrumbs) { - // known breadcrumb properties with urls - // TODO: also consider arbitrary prop values that start with (https?)?:// - var urlProps = ['to', 'from', 'url'], - urlProp, - crumb, - data; + if (ex1.type !== ex2.type || ex1.value !== ex2.value) return false; - for (var i = 0; i < breadcrumbs.values.length; ++i) { - crumb = breadcrumbs.values[i]; - if (!crumb.hasOwnProperty('data') || !isObject(crumb.data) || objectFrozen(crumb.data)) continue; - data = objectMerge({}, crumb.data); + // in case both stacktraces are undefined, we can't decide so default to false + if (isBothUndefined(ex1.stacktrace, ex2.stacktrace)) return false; - for (var j = 0; j < urlProps.length; ++j) { - urlProp = urlProps[j]; + return isSameStacktrace(ex1.stacktrace, ex2.stacktrace); +} - if (data.hasOwnProperty(urlProp) && data[urlProp]) { - data[urlProp] = truncate(data[urlProp], this._globalOptions.maxUrlLength); - } - } +/** + * Returns true if the two input stack trace interfaces have the same content + */ +function isSameStacktrace(stack1, stack2) { + if (isOnlyOneTruthy(stack1, stack2)) return false; - breadcrumbs.values[i].data = data; - } - }, - _getHttpData: function _getHttpData() { - if (!this._hasNavigator && !this._hasDocument) return; - var httpData = {}; + var frames1 = stack1.frames; + var frames2 = stack2.frames; + + // Exit early if frame count differs + if (frames1.length !== frames2.length) return false; + + // Iterate through every frame; bail out if anything differs + var a, b; + for (var i = 0; i < frames1.length; i++) { + a = frames1[i]; + b = frames2[i]; + if ( + a.filename !== b.filename || + a.lineno !== b.lineno || + a.colno !== b.colno || + a['function'] !== b['function'] + ) + return false; + } + return true; +} - if (this._hasNavigator && _navigator.userAgent) { - httpData.headers = { - 'User-Agent': navigator.userAgent - }; - } // Check in `window` instead of `document`, as we may be in ServiceWorker environment +/** + * Polyfill a method + * @param obj object e.g. `document` + * @param name method name present on object e.g. `addEventListener` + * @param replacement replacement function + * @param track {optional} record instrumentation to an array + */ +function fill(obj, name, replacement, track) { + var orig = obj[name]; + obj[name] = replacement(orig); + obj[name].__raven__ = true; + obj[name].__orig__ = orig; + if (track) { + track.push([obj, name, orig]); + } +} +/** + * Join values in array + * @param input array of values to be joined together + * @param delimiter string to be placed in-between values + * @returns {string} + */ +function safeJoin(input, delimiter) { + if (!isArray(input)) return ''; - if (_window$1.location && _window$1.location.href) { - httpData.url = _window$1.location.href; - } + var output = []; - if (this._hasDocument && _document.referrer) { - if (!httpData.headers) httpData.headers = {}; - httpData.headers.Referer = _document.referrer; + for (var i = 0; i < input.length; i++) { + try { + output.push(String(input[i])); + } catch (e) { + output.push('[value cannot be serialized]'); } + } - return httpData; - }, - _resetBackoff: function _resetBackoff() { - this._backoffDuration = 0; - this._backoffStart = null; - }, - _shouldBackoff: function _shouldBackoff() { - return this._backoffDuration && now() - this._backoffStart < this._backoffDuration; - }, + return output.join(delimiter); +} - /** - * Returns true if the in-process data payload matches the signature - * of the previously-sent data - * - * NOTE: This has to be done at this level because TraceKit can generate - * data from window.onerror WITHOUT an exception object (IE8, IE9, - * other old browsers). This can take the form of an "exception" - * data object with a single frame (derived from the onerror args). - */ - _isRepeatData: function _isRepeatData(current) { - var last = this._lastData; - if (!last || current.message !== last.message || // defined for captureMessage - current.culprit !== last.culprit // defined for captureException/onerror - ) return false; // Stacktrace interface (i.e. from captureMessage) +module.exports = { + isObject: isObject, + isError: isError, + isErrorEvent: isErrorEvent, + isUndefined: isUndefined, + isFunction: isFunction, + isPlainObject: isPlainObject, + isString: isString, + isArray: isArray, + isEmptyObject: isEmptyObject, + supportsErrorEvent: supportsErrorEvent, + supportsFetch: supportsFetch, + wrappedCallback: wrappedCallback, + each: each, + objectMerge: objectMerge, + truncate: truncate, + objectFrozen: objectFrozen, + hasKey: hasKey, + joinRegExp: joinRegExp, + urlencode: urlencode, + uuid4: uuid4, + htmlTreeAsString: htmlTreeAsString, + htmlElementAsString: htmlElementAsString, + isSameException: isSameException, + isSameStacktrace: isSameStacktrace, + parseUrl: parseUrl, + fill: fill, + safeJoin: safeJoin +}; - if (current.stacktrace || last.stacktrace) { - return isSameStacktrace(current.stacktrace, last.stacktrace); - } else if (current.exception || last.exception) { - // Exception interface (i.e. from captureException/onerror) - return isSameException(current.exception, last.exception); - } +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{}],6:[function(_dereq_,module,exports){ +(function (global){ +var utils = _dereq_(5); - return true; - }, - _setBackoffState: function _setBackoffState(request) { - // If we are already in a backoff state, don't change anything - if (this._shouldBackoff()) { - return; - } +/* + TraceKit - Cross brower stack traces - var status = request.status; // 400 - project_id doesn't exist or some other fatal - // 401 - invalid/revoked dsn - // 429 - too many requests + This was originally forked from github.com/occ/TraceKit, but has since been + largely re-written and is now maintained as part of raven-js. Tests for + this are in test/vendor. - if (!(status === 400 || status === 401 || status === 429)) return; - var retry; + MIT license +*/ - try { - // If Retry-After is not in Access-Control-Expose-Headers, most - // browsers will throw an exception trying to access it - if (supportsFetch()) { - retry = request.headers.get('Retry-After'); - } else { - retry = request.getResponseHeader('Retry-After'); - } // Retry-After is returned in seconds +var TraceKit = { + collectWindowErrors: true, + debug: false +}; +// This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) +var _window = + typeof window !== 'undefined' + ? window + : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; - retry = parseInt(retry, 10) * 1000; - } catch (e) { - /* eslint no-empty:0 */ - } +// global reference to slice +var _slice = [].slice; +var UNKNOWN_FUNCTION = '?'; - this._backoffDuration = retry ? // If Sentry server returned a Retry-After value, use it - retry : // Otherwise, double the last backoff duration (starts at 1 sec) - this._backoffDuration * 2 || 1000; - this._backoffStart = now(); - }, - _send: function _send(data) { - var globalOptions = this._globalOptions; +// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error#Error_types +var ERROR_TYPES_RE = /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/; - var baseData = { - project: this._globalProject, - logger: globalOptions.logger, - platform: 'javascript' - }, - httpData = this._getHttpData(); +function getLocationHref() { + if (typeof document === 'undefined' || document.location == null) return ''; - if (httpData) { - baseData.request = httpData; - } // HACK: delete `trimHeadFrames` to prevent from appearing in outbound payload + return document.location.href; +} + +/** + * TraceKit.report: cross-browser processing of unhandled exceptions + * + * Syntax: + * TraceKit.report.subscribe(function(stackInfo) { ... }) + * TraceKit.report.unsubscribe(function(stackInfo) { ... }) + * TraceKit.report(exception) + * try { ...code... } catch(ex) { TraceKit.report(ex); } + * + * Supports: + * - Firefox: full stack trace with line numbers, plus column number + * on top frame; column number is not guaranteed + * - Opera: full stack trace with line and column numbers + * - Chrome: full stack trace with line and column numbers + * - Safari: line and column number for the top frame only; some frames + * may be missing, and column number is not guaranteed + * - IE: line and column number for the top frame only; some frames + * may be missing, and column number is not guaranteed + * + * In theory, TraceKit should work on all of the following versions: + * - IE5.5+ (only 8.0 tested) + * - Firefox 0.9+ (only 3.5+ tested) + * - Opera 7+ (only 10.50 tested; versions 9 and earlier may require + * Exceptions Have Stacktrace to be enabled in opera:config) + * - Safari 3+ (only 4+ tested) + * - Chrome 1+ (only 5+ tested) + * - Konqueror 3.5+ (untested) + * + * Requires TraceKit.computeStackTrace. + * + * Tries to catch all unhandled exceptions and report them to the + * subscribed handlers. Please note that TraceKit.report will rethrow the + * exception. This is REQUIRED in order to get a useful stack trace in IE. + * If the exception does not reach the top of the browser, you will only + * get a stack trace from the point where TraceKit.report was called. + * + * Handlers receive a stackInfo object as described in the + * TraceKit.computeStackTrace docs. + */ +TraceKit.report = (function reportModuleWrapper() { + var handlers = [], + lastArgs = null, + lastException = null, + lastExceptionStack = null; + /** + * Add a crash handler. + * @param {Function} handler + */ + function subscribe(handler) { + installGlobalHandler(); + handlers.push(handler); + } - if (data.trimHeadFrames) delete data.trimHeadFrames; - data = objectMerge(baseData, data); // Merge in the tags and extra separately since objectMerge doesn't handle a deep merge + /** + * Remove a crash handler. + * @param {Function} handler + */ + function unsubscribe(handler) { + for (var i = handlers.length - 1; i >= 0; --i) { + if (handlers[i] === handler) { + handlers.splice(i, 1); + } + } + } - data.tags = objectMerge(objectMerge({}, this._globalContext.tags), data.tags); - data.extra = objectMerge(objectMerge({}, this._globalContext.extra), data.extra); // Send along our own collected metadata with extra + /** + * Remove all crash handlers. + */ + function unsubscribeAll() { + uninstallGlobalHandler(); + handlers = []; + } - data.extra['session:duration'] = now() - this._startTime; + /** + * Dispatch stack information to all handlers. + * @param {Object.} stack + */ + function notifyHandlers(stack, isWindowError) { + var exception = null; + if (isWindowError && !TraceKit.collectWindowErrors) { + return; + } + for (var i in handlers) { + if (handlers.hasOwnProperty(i)) { + try { + handlers[i].apply(null, [stack].concat(_slice.call(arguments, 2))); + } catch (inner) { + exception = inner; + } + } + } - if (this._breadcrumbs && this._breadcrumbs.length > 0) { - // intentionally make shallow copy so that additions - // to breadcrumbs aren't accidentally sent in this request - data.breadcrumbs = { - values: [].slice.call(this._breadcrumbs, 0) - }; + if (exception) { + throw exception; } + } - if (this._globalContext.user) { - // sentry.interfaces.User - data.user = this._globalContext.user; - } // Include the environment if it's defined in globalOptions + var _oldOnerrorHandler, _onErrorHandlerInstalled; + /** + * Ensures all global unhandled exceptions are recorded. + * Supported by Gecko and IE. + * @param {string} msg Error message. + * @param {string} url URL of script that generated the exception. + * @param {(number|string)} lineNo The line number at which the error + * occurred. + * @param {?(number|string)} colNo The column number at which the error + * occurred. + * @param {?Error} ex The actual Error object. + */ + function traceKitWindowOnError(msg, url, lineNo, colNo, ex) { + var stack = null; + // If 'ex' is ErrorEvent, get real Error from inside + var exception = utils.isErrorEvent(ex) ? ex.error : ex; + // If 'msg' is ErrorEvent, get real message from inside + var message = utils.isErrorEvent(msg) ? msg.message : msg; - if (globalOptions.environment) data.environment = globalOptions.environment; // Include the release if it's defined in globalOptions + if (lastExceptionStack) { + TraceKit.computeStackTrace.augmentStackTraceWithInitialElement( + lastExceptionStack, + url, + lineNo, + message + ); + processLastException(); + } else if (exception && utils.isError(exception)) { + // non-string `exception` arg; attempt to extract stack trace - if (globalOptions.release) data.release = globalOptions.release; // Include server_name if it's defined in globalOptions + // New chrome and blink send along a real error object + // Let's just report that like a normal error. + // See: https://mikewest.org/2013/08/debugging-runtime-errors-with-window-onerror + stack = TraceKit.computeStackTrace(exception); + notifyHandlers(stack, true); + } else { + var location = { + url: url, + line: lineNo, + column: colNo + }; - if (globalOptions.serverName) data.server_name = globalOptions.serverName; // Cleanup empty properties before sending them to the server + var name = undefined; + var groups; - Object.keys(data).forEach(function (key) { - if (data[key] == null || data[key] === '' || isEmptyObject(data[key])) { - delete data[key]; + if ({}.toString.call(message) === '[object String]') { + var groups = message.match(ERROR_TYPES_RE); + if (groups) { + name = groups[1]; + message = groups[2]; + } } - }); - if (isFunction(globalOptions.dataCallback)) { - data = globalOptions.dataCallback(data) || data; - } // Why?????????? + location.func = UNKNOWN_FUNCTION; + stack = { + name: name, + message: message, + url: getLocationHref(), + stack: [location] + }; + notifyHandlers(stack, true); + } - if (!data || isEmptyObject(data)) { - return; - } // Check if the request should be filtered or not + if (_oldOnerrorHandler) { + return _oldOnerrorHandler.apply(this, arguments); + } + return false; + } - if (isFunction(globalOptions.shouldSendCallback) && !globalOptions.shouldSendCallback(data)) { + function installGlobalHandler() { + if (_onErrorHandlerInstalled) { return; - } // Backoff state: Sentry server previously responded w/ an error (e.g. 429 - too many requests), - // so drop requests until "cool-off" period has elapsed. + } + _oldOnerrorHandler = _window.onerror; + _window.onerror = traceKitWindowOnError; + _onErrorHandlerInstalled = true; + } + function uninstallGlobalHandler() { + if (!_onErrorHandlerInstalled) { + return; + } + _window.onerror = _oldOnerrorHandler; + _onErrorHandlerInstalled = false; + _oldOnerrorHandler = undefined; + } - if (this._shouldBackoff()) { - this._logDebug('warn', 'Raven dropped error due to backoff: ', data); + function processLastException() { + var _lastExceptionStack = lastExceptionStack, + _lastArgs = lastArgs; + lastArgs = null; + lastExceptionStack = null; + lastException = null; + notifyHandlers.apply(null, [_lastExceptionStack, false].concat(_lastArgs)); + } - return; + /** + * Reports an unhandled Error to TraceKit. + * @param {Error} ex + * @param {?boolean} rethrow If false, do not re-throw the exception. + * Only used for window.onerror to not cause an infinite loop of + * rethrowing. + */ + function report(ex, rethrow) { + var args = _slice.call(arguments, 1); + if (lastExceptionStack) { + if (lastException === ex) { + return; // already caught by an inner catch block, ignore + } else { + processLastException(); + } } - if (typeof globalOptions.sampleRate === 'number') { - if (Math.random() < globalOptions.sampleRate) { - this._sendProcessedPayload(data); + var stack = TraceKit.computeStackTrace(ex); + lastExceptionStack = stack; + lastException = ex; + lastArgs = args; + + // If the stack trace is incomplete, wait for 2 seconds for + // slow slow IE to see if onerror occurs or not before reporting + // this exception; otherwise, we will end up with an incomplete + // stack trace + setTimeout(function() { + if (lastException === ex) { + processLastException(); } - } else { - this._sendProcessedPayload(data); + }, stack.incomplete ? 2000 : 0); + + if (rethrow !== false) { + throw ex; // re-throw to propagate to the top level (and cause window.onerror) } - }, - _getUuid: function _getUuid() { - return uuid4(); - }, - _sendProcessedPayload: function _sendProcessedPayload(data, callback) { - var self = this; - var globalOptions = this._globalOptions; - if (!this.isSetup()) return; // Try and clean up the packet before sending by truncating long values + } - data = this._trimPacket(data); // ideally duplicate error testing should occur *before* dataCallback/shouldSendCallback, - // but this would require copying an un-truncated copy of the data packet, which can be - // arbitrarily deep (extra_data) -- could be worthwhile? will revisit + report.subscribe = subscribe; + report.unsubscribe = unsubscribe; + report.uninstall = unsubscribeAll; + return report; +})(); - if (!this._globalOptions.allowDuplicates && this._isRepeatData(data)) { - this._logDebug('warn', 'Raven dropped repeat event: ', data); +/** + * TraceKit.computeStackTrace: cross-browser stack traces in JavaScript + * + * Syntax: + * s = TraceKit.computeStackTrace(exception) // consider using TraceKit.report instead (see below) + * Returns: + * s.name - exception name + * s.message - exception message + * s.stack[i].url - JavaScript or HTML file URL + * s.stack[i].func - function name, or empty for anonymous functions (if guessing did not work) + * s.stack[i].args - arguments passed to the function, if known + * s.stack[i].line - line number, if known + * s.stack[i].column - column number, if known + * + * Supports: + * - Firefox: full stack trace with line numbers and unreliable column + * number on top frame + * - Opera 10: full stack trace with line and column numbers + * - Opera 9-: full stack trace with line numbers + * - Chrome: full stack trace with line and column numbers + * - Safari: line and column number for the topmost stacktrace element + * only + * - IE: no line numbers whatsoever + * + * Tries to guess names of anonymous functions by looking for assignments + * in the source code. In IE and Safari, we have to guess source file names + * by searching for function bodies inside all page scripts. This will not + * work for scripts that are loaded cross-domain. + * Here be dragons: some function names may be guessed incorrectly, and + * duplicate functions may be mismatched. + * + * TraceKit.computeStackTrace should only be used for tracing purposes. + * Logging of unhandled exceptions should be done with TraceKit.report, + * which builds on top of TraceKit.computeStackTrace and provides better + * IE support by utilizing the window.onerror event to retrieve information + * about the top of the stack. + * + * Note: In IE and Safari, no stack trace is recorded on the Error object, + * so computeStackTrace instead walks its *own* chain of callers. + * This means that: + * * in Safari, some methods may be missing from the stack trace; + * * in IE, the topmost function in the stack trace will always be the + * caller of computeStackTrace. + * + * This is okay for tracing (because you are likely to be calling + * computeStackTrace from the function you want to be the topmost element + * of the stack trace anyway), but not okay for logging unhandled + * exceptions (because your catch block will likely be far away from the + * inner function that actually caused the exception). + * + */ +TraceKit.computeStackTrace = (function computeStackTraceWrapper() { + // Contents of Exception in various browsers. + // + // SAFARI: + // ex.message = Can't find variable: qq + // ex.line = 59 + // ex.sourceId = 580238192 + // ex.sourceURL = http://... + // ex.expressionBeginOffset = 96 + // ex.expressionCaretOffset = 98 + // ex.expressionEndOffset = 98 + // ex.name = ReferenceError + // + // FIREFOX: + // ex.message = qq is not defined + // ex.fileName = http://... + // ex.lineNumber = 59 + // ex.columnNumber = 69 + // ex.stack = ...stack trace... (see the example below) + // ex.name = ReferenceError + // + // CHROME: + // ex.message = qq is not defined + // ex.name = ReferenceError + // ex.type = not_defined + // ex.arguments = ['aa'] + // ex.stack = ...stack trace... + // + // INTERNET EXPLORER: + // ex.message = ... + // ex.name = ReferenceError + // + // OPERA: + // ex.message = ...message... (see the example below) + // ex.name = ReferenceError + // ex.opera#sourceloc = 11 (pretty much useless, duplicates the info in ex.message) + // ex.stacktrace = n/a; see 'opera:config#UserPrefs|Exceptions Have Stacktrace' - return; - } // Send along an event_id if not explicitly passed. - // This event_id can be used to reference the error within Sentry itself. - // Set lastEventId after we know the error should actually be sent + /** + * Computes stack trace information from the stack property. + * Chrome and Gecko use this property. + * @param {Error} ex + * @return {?Object.} Stack trace information. + */ + function computeStackTraceFromStackProp(ex) { + if (typeof ex.stack === 'undefined' || !ex.stack) return; + + var chrome = /^\s*at (.*?) ?\(((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i, + gecko = /^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|\[native).*?|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i, + winjs = /^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i, + // Used to additionally parse URL/line/column from eval frames + geckoEval = /(\S+) line (\d+)(?: > eval line \d+)* > eval/i, + chromeEval = /\((\S*)(?::(\d+))(?::(\d+))\)/, + lines = ex.stack.split('\n'), + stack = [], + submatch, + parts, + element, + reference = /^(.*) is undefined$/.exec(ex.message); + + for (var i = 0, j = lines.length; i < j; ++i) { + if ((parts = chrome.exec(lines[i]))) { + var isNative = parts[2] && parts[2].indexOf('native') === 0; // start of line + var isEval = parts[2] && parts[2].indexOf('eval') === 0; // start of line + if (isEval && (submatch = chromeEval.exec(parts[2]))) { + // throw out eval line/column and use top-most line/column number + parts[2] = submatch[1]; // url + parts[3] = submatch[2]; // line + parts[4] = submatch[3]; // column + } + element = { + url: !isNative ? parts[2] : null, + func: parts[1] || UNKNOWN_FUNCTION, + args: isNative ? [parts[2]] : [], + line: parts[3] ? +parts[3] : null, + column: parts[4] ? +parts[4] : null + }; + } else if ((parts = winjs.exec(lines[i]))) { + element = { + url: parts[2], + func: parts[1] || UNKNOWN_FUNCTION, + args: [], + line: +parts[3], + column: parts[4] ? +parts[4] : null + }; + } else if ((parts = gecko.exec(lines[i]))) { + var isEval = parts[3] && parts[3].indexOf(' > eval') > -1; + if (isEval && (submatch = geckoEval.exec(parts[3]))) { + // throw out eval line/column and use top-most line number + parts[3] = submatch[1]; + parts[4] = submatch[2]; + parts[5] = null; // no column when eval + } else if (i === 0 && !parts[5] && typeof ex.columnNumber !== 'undefined') { + // FireFox uses this awesome columnNumber property for its top frame + // Also note, Firefox's column number is 0-based and everything else expects 1-based, + // so adding 1 + // NOTE: this hack doesn't work if top-most frame is eval + stack[0].column = ex.columnNumber + 1; + } + element = { + url: parts[3], + func: parts[1] || UNKNOWN_FUNCTION, + args: parts[2] ? parts[2].split(',') : [], + line: parts[4] ? +parts[4] : null, + column: parts[5] ? +parts[5] : null + }; + } else { + continue; + } + if (!element.func && element.line) { + element.func = UNKNOWN_FUNCTION; + } - this._lastEventId = data.event_id || (data.event_id = this._getUuid()); // Store outbound payload after trim + stack.push(element); + } - this._lastData = data; + if (!stack.length) { + return null; + } - this._logDebug('debug', 'Raven about to send:', data); + return { + name: ex.name, + message: ex.message, + url: getLocationHref(), + stack: stack + }; + } - var auth = { - sentry_version: '7', - sentry_client: 'raven-js/' + this.VERSION, - sentry_key: this._globalKey + /** + * Adds information about the first frame to incomplete stack traces. + * Safari and IE require this to get complete data on the first frame. + * @param {Object.} stackInfo Stack trace information from + * one of the compute* methods. + * @param {string} url The URL of the script that caused an error. + * @param {(number|string)} lineNo The line number of the script that + * caused an error. + * @param {string=} message The error generated by the browser, which + * hopefully contains the name of the object that caused the error. + * @return {boolean} Whether or not the stack information was + * augmented. + */ + function augmentStackTraceWithInitialElement(stackInfo, url, lineNo, message) { + var initial = { + url: url, + line: lineNo }; - if (this._globalSecret) { - auth.sentry_secret = this._globalSecret; - } + if (initial.url && initial.line) { + stackInfo.incomplete = false; - var exception = data.exception && data.exception.values[0]; // only capture 'sentry' breadcrumb is autoBreadcrumbs is truthy + if (!initial.func) { + initial.func = UNKNOWN_FUNCTION; + } - if (this._globalOptions.autoBreadcrumbs && this._globalOptions.autoBreadcrumbs.sentry) { - this.captureBreadcrumb({ - category: 'sentry', - message: exception ? (exception.type ? exception.type + ': ' : '') + exception.value : data.message, - event_id: data.event_id, - level: data.level || 'error' // presume error unless specified + if (stackInfo.stack.length > 0) { + if (stackInfo.stack[0].url === initial.url) { + if (stackInfo.stack[0].line === initial.line) { + return false; // already in stack trace + } else if ( + !stackInfo.stack[0].line && + stackInfo.stack[0].func === initial.func + ) { + stackInfo.stack[0].line = initial.line; + return false; + } + } + } - }); + stackInfo.stack.unshift(initial); + stackInfo.partial = true; + return true; + } else { + stackInfo.incomplete = true; } - var url = this._globalEndpoint; - - (globalOptions.transport || this._makeRequest).call(this, { - url: url, - auth: auth, - data: data, - options: globalOptions, - onSuccess: function success() { - self._resetBackoff(); + return false; + } - self._triggerEvent('success', { - data: data, - src: url - }); + /** + * Computes stack trace information by walking the arguments.caller + * chain at the time the exception occurred. This will cause earlier + * frames to be missed but is the only way to get any stack trace in + * Safari and IE. The top frame is restored by + * {@link augmentStackTraceWithInitialElement}. + * @param {Error} ex + * @return {?Object.} Stack trace information. + */ + function computeStackTraceByWalkingCallerChain(ex, depth) { + var functionName = /function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i, + stack = [], + funcs = {}, + recursion = false, + parts, + item, + source; + + for ( + var curr = computeStackTraceByWalkingCallerChain.caller; + curr && !recursion; + curr = curr.caller + ) { + if (curr === computeStackTrace || curr === TraceKit.report) { + // console.log('skipping internal function'); + continue; + } - callback && callback(); - }, - onError: function failure(error) { - self._logDebug('error', 'Raven transport failed to send: ', error); + item = { + url: null, + func: UNKNOWN_FUNCTION, + line: null, + column: null + }; - if (error.request) { - self._setBackoffState(error.request); - } + if (curr.name) { + item.func = curr.name; + } else if ((parts = functionName.exec(curr.toString()))) { + item.func = parts[1]; + } - self._triggerEvent('failure', { - data: data, - src: url - }); + if (typeof item.func === 'undefined') { + try { + item.func = parts.input.substring(0, parts.input.indexOf('{')); + } catch (e) {} + } - error = error || new Error('Raven send failed (no additional details provided)'); - callback && callback(error); + if (funcs['' + curr]) { + recursion = true; + } else { + funcs['' + curr] = true; } - }); - }, - _makeRequest: function _makeRequest(opts) { - // Auth is intentionally sent as part of query string (NOT as custom HTTP header) to avoid preflight CORS requests - var url = opts.url + '?' + urlencode(opts.auth); - var evaluatedHeaders = null; - var evaluatedFetchParameters = {}; - if (opts.options.headers) { - evaluatedHeaders = this._evaluateHash(opts.options.headers); + stack.push(item); } - if (opts.options.fetchParameters) { - evaluatedFetchParameters = this._evaluateHash(opts.options.fetchParameters); + if (depth) { + // console.log('depth is ' + depth); + // console.log('stack is ' + stack.length); + stack.splice(0, depth); } - if (supportsFetch()) { - evaluatedFetchParameters.body = stringify_1(opts.data); - var defaultFetchOptions = objectMerge({}, this._fetchDefaults); - var fetchOptions = objectMerge(defaultFetchOptions, evaluatedFetchParameters); + var result = { + name: ex.name, + message: ex.message, + url: getLocationHref(), + stack: stack + }; + augmentStackTraceWithInitialElement( + result, + ex.sourceURL || ex.fileName, + ex.line || ex.lineNumber, + ex.message || ex.description + ); + return result; + } - if (evaluatedHeaders) { - fetchOptions.headers = evaluatedHeaders; - } + /** + * Computes a stack trace for an exception. + * @param {Error} ex + * @param {(string|number)=} depth + */ + function computeStackTrace(ex, depth) { + var stack = null; + depth = depth == null ? 0 : +depth; - return _window$1.fetch(url, fetchOptions).then(function (response) { - if (response.ok) { - opts.onSuccess && opts.onSuccess(); - } else { - var error = new Error('Sentry error code: ' + response.status); // It's called request only to keep compatibility with XHR interface - // and not add more redundant checks in setBackoffState method + try { + stack = computeStackTraceFromStackProp(ex); + if (stack) { + return stack; + } + } catch (e) { + if (TraceKit.debug) { + throw e; + } + } - error.request = response; - opts.onError && opts.onError(error); - } - })['catch'](function () { - opts.onError && opts.onError(new Error('Sentry error code: network unavailable')); - }); + try { + stack = computeStackTraceByWalkingCallerChain(ex, depth + 1); + if (stack) { + return stack; + } + } catch (e) { + if (TraceKit.debug) { + throw e; + } } + return { + name: ex.name, + message: ex.message, + url: getLocationHref() + }; + } - var request = _window$1.XMLHttpRequest && new _window$1.XMLHttpRequest(); - if (!request) return; // if browser doesn't support CORS (e.g. IE7), we are out of luck + computeStackTrace.augmentStackTraceWithInitialElement = augmentStackTraceWithInitialElement; + computeStackTrace.computeStackTraceFromStackProp = computeStackTraceFromStackProp; - var hasCORS = 'withCredentials' in request || typeof XDomainRequest !== 'undefined'; - if (!hasCORS) return; + return computeStackTrace; +})(); - if ('withCredentials' in request) { - request.onreadystatechange = function () { - if (request.readyState !== 4) { - return; - } else if (request.status === 200) { - opts.onSuccess && opts.onSuccess(); - } else if (opts.onError) { - var err = new Error('Sentry error code: ' + request.status); - err.request = request; - opts.onError(err); - } - }; - } else { - request = new XDomainRequest(); // xdomainrequest cannot go http -> https (or vice versa), - // so always use protocol relative +module.exports = TraceKit; - url = url.replace(/^https?:/, ''); // onreadystatechange not supported by XDomainRequest +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"5":5}],7:[function(_dereq_,module,exports){ +/* + json-stringify-safe + Like JSON.stringify, but doesn't throw on circular references. - if (opts.onSuccess) { - request.onload = opts.onSuccess; - } + Originally forked from https://github.com/isaacs/json-stringify-safe + version 5.0.1 on 3/8/2017 and modified to handle Errors serialization + and IE8 compatibility. Tests for this are in test/vendor. - if (opts.onError) { - request.onerror = function () { - var err = new Error('Sentry error code: XDomainRequest'); - err.request = request; - opts.onError(err); - }; - } - } + ISC license: https://github.com/isaacs/json-stringify-safe/blob/master/LICENSE +*/ - request.open('POST', url); +exports = module.exports = stringify; +exports.getSerialize = serializer; - if (evaluatedHeaders) { - each(evaluatedHeaders, function (key, value) { - request.setRequestHeader(key, value); - }); - } +function indexOf(haystack, needle) { + for (var i = 0; i < haystack.length; ++i) { + if (haystack[i] === needle) return i; + } + return -1; +} - request.send(stringify_1(opts.data)); - }, - _evaluateHash: function _evaluateHash(hash) { - var evaluated = {}; +function stringify(obj, replacer, spaces, cycleReplacer) { + return JSON.stringify(obj, serializer(replacer, cycleReplacer), spaces); +} - for (var key in hash) { - if (hash.hasOwnProperty(key)) { - var value = hash[key]; - evaluated[key] = typeof value === 'function' ? value() : value; - } - } +// https://github.com/ftlabs/js-abbreviate/blob/fa709e5f139e7770a71827b1893f22418097fbda/index.js#L95-L106 +function stringifyError(value) { + var err = { + // These properties are implemented as magical getters and don't show up in for in + stack: value.stack, + message: value.message, + name: value.name + }; - return evaluated; - }, - _logDebug: function _logDebug(level) { - if (this._originalConsoleMethods[level] && this.debug) { - // In IE<10 console methods do not have their own 'apply' method - Function.prototype.apply.call(this._originalConsoleMethods[level], this._originalConsole, [].slice.call(arguments, 1)); - } - }, - _mergeContext: function _mergeContext(key, context) { - if (isUndefined(context)) { - delete this._globalContext[key]; - } else { - this._globalContext[key] = objectMerge(this._globalContext[key] || {}, context); + for (var i in value) { + if (Object.prototype.hasOwnProperty.call(value, i)) { + err[i] = value[i]; } } -}; // Deprecations - -Raven$1.prototype.setUser = Raven$1.prototype.setUserContext; -Raven$1.prototype.setReleaseContext = Raven$1.prototype.setRelease; -var raven = Raven$1; -/** - * Enforces a single instance of the Raven client, and the - * main entry point for Raven. If you are a consumer of the - * Raven library, you SHOULD load this file (vs raven.js). - **/ -// This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) + return err; +} -var _window = typeof window !== 'undefined' ? window : typeof commonjsGlobal !== 'undefined' ? commonjsGlobal : typeof self !== 'undefined' ? self : {}; +function serializer(replacer, cycleReplacer) { + var stack = []; + var keys = []; -var _Raven = _window.Raven; -var Raven = new raven(); -/* - * Allow multiple versions of Raven to be installed. - * Strip Raven from the global context and returns the instance. - * - * @return {Raven} - */ + if (cycleReplacer == null) { + cycleReplacer = function(key, value) { + if (stack[0] === value) { + return '[Circular ~]'; + } + return '[Circular ~.' + keys.slice(0, indexOf(stack, value)).join('.') + ']'; + }; + } -Raven.noConflict = function () { - _window.Raven = _Raven; - return Raven; -}; + return function(key, value) { + if (stack.length > 0) { + var thisPos = indexOf(stack, this); + ~thisPos ? stack.splice(thisPos + 1) : stack.push(this); + ~thisPos ? keys.splice(thisPos, Infinity, key) : keys.push(key); -Raven.afterLoad(); -var singleton = Raven; + if (~indexOf(stack, value)) { + value = cycleReplacer.call(this, key, value); + } + } else { + stack.push(value); + } -return singleton; + return replacer == null + ? value instanceof Error ? stringifyError(value) : value + : replacer.call(this, key, value); + }; +} -}))); +},{}]},{},[4])(4) +}); \ No newline at end of file diff --git a/dist/raven.min.js b/dist/raven.min.js index d24684a52069..fe2ae35ed191 100644 --- a/dist/raven.min.js +++ b/dist/raven.min.js @@ -1,3 +1,3 @@ -/*! Raven.js 3.22.2 (1b6187b) | github.com/getsentry/raven-js */ -!function(a,b){"object"==typeof exports&&"undefined"!=typeof module?module.exports=b():"function"==typeof define&&define.amd?define(b):a.Raven=b()}(this,function(){"use strict";function a(a,b){return b={exports:{}},a(b,b.exports),b.exports}function b(a){return(b="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(a){return typeof a}:function(a){return a&&"function"==typeof Symbol&&a.constructor===Symbol&&a!==Symbol.prototype?"symbol":typeof a})(a)}function c(a){return"object"===b(a)&&null!==a}function d(a){switch({}.toString.call(a)){case"[object Error]":return!0;case"[object Exception]":return!0;case"[object DOMException]":return!0;default:return a instanceof Error}}function e(a){return l()&&"[object ErrorEvent]"==={}.toString.call(a)}function f(a){return void 0===a}function g(a){return"function"==typeof a}function h(a){return"[object Object]"===Object.prototype.toString.call(a)}function i(a){return"[object String]"===Object.prototype.toString.call(a)}function j(a){return"[object Array]"===Object.prototype.toString.call(a)}function k(a){if(!h(a))return!1;for(var b in a)if(a.hasOwnProperty(b))return!1;return!0}function l(){try{return new ErrorEvent(""),!0}catch(a){return!1}}function m(){if(!("fetch"in M))return!1;try{return new Headers,new Request(""),new Response,!0}catch(a){return!1}}function n(a){function b(b,c){var d=a(b)||b;return c?c(d)||d:d}return b}function o(a,b){var c,d;if(f(a.length))for(c in a)s(a,c)&&b.call(null,c,a[c]);else if(d=a.length)for(c=0;c ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function y(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&i(b))for(c=b.split(/\s+/),f=0;f=0;--b)l[b]===a&&l.splice(b,1)}function c(){g(),l=[]}function d(a,b){var c=null;if(!b||O.collectWindowErrors){for(var d in l)if(l.hasOwnProperty(d))try{l[d].apply(null,[a].concat(Q.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function e(a,b,c,e,f){var g=null,i=N.isErrorEvent(f)?f.error:f,k=N.isErrorEvent(a)?a.message:a;if(o)O.computeStackTrace.augmentStackTraceWithInitialElement(o,b,c,k),h();else if(i&&N.isError(i))g=O.computeStackTrace(i),d(g,!0);else{var l,m={url:b,line:c,column:e},n=void 0;if("[object String]"==={}.toString.call(k)){var l=k.match(S);l&&(n=l[1],k=l[2])}m.func=R,g={name:n,message:k,url:F(),stack:[m]},d(g,!0)}return!!j&&j.apply(this,arguments)}function f(){k||(j=P.onerror,P.onerror=e,k=!0)}function g(){k&&(P.onerror=j,k=!1,j=void 0)}function h(){var a=o,b=m;m=null,o=null,n=null,d.apply(null,[a,!1].concat(b))}function i(a,b){var c=Q.call(arguments,1);if(o){if(n===a)return;h()}var d=O.computeStackTrace(a);if(o=d,n=a,m=c,setTimeout(function(){n===a&&h()},d.incomplete?2e3:0),b!==!1)throw a}var j,k,l=[],m=null,n=null,o=null;return i.subscribe=a,i.unsubscribe=b,i.uninstall=c,i}(),O.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,d,e=/^\s*at (.*?) ?\(((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,f=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|\[native).*?|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,g=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,h=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,i=/\((\S*)(?::(\d+))(?::(\d+))\)/,j=a.stack.split("\n"),k=[],l=(/^(.*) is undefined$/.exec(a.message),0),m=j.length;l eval")>-1;o&&(b=h.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==l||c[5]||"undefined"==typeof a.columnNumber||(k[0].column=a.columnNumber+1),d={url:c[3],func:c[1]||R,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}!d.func&&d.line&&(d.func=R),k.push(d)}return k.length?{name:a.name,message:a.message,url:F(),stack:k}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=R),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,e){for(var f,g,h=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,i=[],j={},k=!1,l=c.caller;l&&!k;l=l.caller)if(l!==d&&l!==O.report){if(g={url:null,func:R,line:null,column:null},l.name?g.func=l.name:(f=h.exec(l.toString()))&&(g.func=f[1]),"undefined"==typeof g.func)try{g.func=f.input.substring(0,f.input.indexOf("{"))}catch(m){}j[""+l]?k=!0:j[""+l]=!0,i.push(g)}e&&i.splice(0,e);var n={name:a.name,message:a.message,url:F(),stack:i};return b(n,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),n}function d(b,d){var e=null;d=null==d?0:+d;try{if(e=a(b))return e}catch(f){if(O.debug)throw f}try{if(e=c(b,d+1))return e}catch(f){if(O.debug)throw f}return{name:b.name,message:b.message,url:F()}}return d.augmentStackTraceWithInitialElement=b,d.computeStackTraceFromStackProp=a,d}();var T=O,U=a(function(a,b){function c(a,b){for(var c=0;c0){var i=c(d,this);~i?d.splice(i+1):d.push(this),~i?f.splice(i,1/0,g):f.push(g),~c(d,h)&&(h=b.call(this,g,h))}else d.push(h);return null==a?h instanceof Error?e(h):h:a.call(this,g,h)}}b=a.exports=d,b.getSerialize=f});G.prototype=new Error,G.prototype.constructor=G;var V=G,W=function(a,b,c){var d=a[b],e=a;if(b in a){var f="warn"===b?"warning":b;a[b]=function(){var a=[].slice.call(arguments),g=N.safeJoin(a," "),h={level:f,logger:"console",extra:{arguments:a}};"assert"===b?a[0]===!1&&(g="Assertion failed: "+(N.safeJoin(a.slice(1)," ")||"console.assert"),h.extra.arguments=a.slice(1),c&&c(g,h)):c&&c(g,h),d&&Function.prototype.apply.call(d,e,a)}}},X={wrapMethod:W},Y=N.isError,Z=N.isObject,$=N.isErrorEvent,_=N.isUndefined,aa=N.isFunction,ba=N.isString,ca=N.isArray,da=N.isEmptyObject,ea=N.each,fa=N.objectMerge,ga=N.truncate,ha=N.objectFrozen,ia=N.hasKey,ja=N.joinRegExp,ka=N.urlencode,la=N.uuid4,ma=N.htmlTreeAsString,na=N.isSameException,oa=N.isSameStacktrace,pa=N.parseUrl,qa=N.fill,ra=N.supportsFetch,sa=X.wrapMethod,ta="source protocol user pass host port path".split(" "),ua=/^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/,va="undefined"!=typeof window?window:"undefined"!=typeof K?K:"undefined"!=typeof self?self:{},wa=va.document,xa=va.navigator;J.prototype={VERSION:"3.22.2",debug:!1,TraceKit:T,config:function(a,b){var c=this;if(c.i)return this.C("error","Error: Raven has already been configured"),c;if(!a)return c;var d=c.m;b&&ea(b,function(a,b){"tags"===a||"extra"===a||"user"===a?c.l[a]=b:d[a]=b}),c.setDSN(a),d.ignoreErrors.push(/^Script error\.?$/),d.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/),d.ignoreErrors=ja(d.ignoreErrors),d.ignoreUrls=!!d.ignoreUrls.length&&ja(d.ignoreUrls),d.whitelistUrls=!!d.whitelistUrls.length&&ja(d.whitelistUrls),d.includePaths=ja(d.includePaths),d.maxBreadcrumbs=Math.max(0,Math.min(d.maxBreadcrumbs||100,100));var e={xhr:!0,console:!0,dom:!0,location:!0,sentry:!0},f=d.autoBreadcrumbs;"[object Object]"==={}.toString.call(f)?f=fa(e,f):f!==!1&&(f=e),d.autoBreadcrumbs=f;var g={tryCatch:!0},h=d.instrument;return"[object Object]"==={}.toString.call(h)?h=fa(g,h):h!==!1&&(h=g),d.instrument=h,T.collectWindowErrors=!!d.collectWindowErrors,c},install:function(){var a=this;return a.isSetup()&&!a.p&&(T.report.subscribe(function(){a.D.apply(a,arguments)}),a.E(),a.m.instrument&&a.m.instrument.tryCatch&&a.F(),a.m.autoBreadcrumbs&&a.G(),a.H(),a.p=!0),Error.stackTraceLimit=a.m.stackTraceLimit,this},setDSN:function(a){var b=this,c=b.I(a),d=c.path.lastIndexOf("/"),e=c.path.substr(1,d);b.J=a,b.j=c.user,b.K=c.pass&&c.pass.substr(1),b.k=c.path.substr(d+1),b.i=b.L(c),b.M=b.i+"/"+e+"api/"+b.k+"/store/",this.A()},context:function(a,b,c){return aa(a)&&(c=b||[],b=a,a=void 0),this.wrap(a,b).apply(this,c)},wrap:function(a,b,c){function d(){var d=[],f=arguments.length,g=!a||a&&a.deep!==!1;for(c&&aa(c)&&c.apply(this,arguments);f--;)d[f]=g?e.wrap(a,arguments[f]):arguments[f];try{return b.apply(this,d)}catch(h){throw e.N(),e.captureException(h,a),h}}var e=this;if(_(b)&&!aa(a))return a;if(aa(a)&&(b=a,a=void 0),!aa(b))return b;try{if(b.a)return b;if(b.O)return b.O}catch(f){return b}for(var g in b)ia(b,g)&&(d[g]=b[g]);return d.prototype=b.prototype,b.O=d,d.a=!0,d.b=b,d},uninstall:function(){return T.report.uninstall(),this.P(),this.Q(),this.R(),Error.stackTraceLimit=this.q,this.p=!1,this},captureException:function(a,b){b=fa({trimHeadFrames:0},b?b:{});var c=!Y(a),d=!$(a),e=$(a)&&!a.error;if(c&&d||e)return this.captureMessage(a,fa(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}));$(a)&&(a=a.error),this.f=a;try{var f=T.computeStackTrace(a);this.S(f,b)}catch(g){if(a!==g)throw g}return this},captureMessage:function(a,b){if(!this.m.ignoreErrors.test||!this.m.ignoreErrors.test(a)){b=b||{};var c,d=fa({message:a+""},b);try{throw new Error(a)}catch(e){c=e}c.name=null;var f=T.computeStackTrace(c),g=ca(f.stack)&&f.stack[1],h=g&&g.url||"";if((!this.m.ignoreUrls.test||!this.m.ignoreUrls.test(h))&&(!this.m.whitelistUrls.test||this.m.whitelistUrls.test(h))){if(this.m.stacktrace||b&&b.stacktrace){b=fa({fingerprint:a,trimHeadFrames:(b.trimHeadFrames||0)+1},b);var i=this.T(f,b);d.stacktrace={frames:i.reverse()}}return this.U(d),this}}},captureBreadcrumb:function(a){var b=fa({timestamp:H()/1e3},a);if(aa(this.m.breadcrumbCallback)){var c=this.m.breadcrumbCallback(b);if(Z(c)&&!da(c))b=c;else if(c===!1)return this}return this.w.push(b),this.w.length>this.m.maxBreadcrumbs&&this.w.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.t.push([a,b]),this.p&&this.H(),this},setUserContext:function(a){return this.l.user=a,this},setExtraContext:function(a){return this.V("extra",a),this},setTagsContext:function(a){return this.V("tags",a),this},clearContext:function(){return this.l={},this},getContext:function(){return JSON.parse(U(this.l))},setEnvironment:function(a){return this.m.environment=a,this},setRelease:function(a){return this.m.release=a,this},setDataCallback:function(a){var b=this.m.dataCallback;return this.m.dataCallback=I(b,a),this},setBreadcrumbCallback:function(a){var b=this.m.breadcrumbCallback;return this.m.breadcrumbCallback=I(b,a),this},setShouldSendCallback:function(a){var b=this.m.shouldSendCallback;return this.m.shouldSendCallback=I(b,a),this},setTransport:function(a){return this.m.transport=a,this},lastException:function(){return this.f},lastEventId:function(){return this.h},isSetup:function(){return!!this.c&&(!!this.i||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.C("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=va.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(wa){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new V("Missing eventId");var c=a.dsn||this.J;if(!c)throw new V("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.l.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.L(this.I(c)),h=wa.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(wa.head||wa.body).appendChild(h)}},N:function(){var a=this;this.o+=1,setTimeout(function(){a.o-=1})},W:function(a,b){var c,d;if(this.d){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),wa.createEvent?(c=wa.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=wa.createEventObject(),c.eventType=a);for(d in b)ia(b,d)&&(c[d]=b[d]);if(wa.createEvent)wa.dispatchEvent(c);else try{wa.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},X:function(a){var b=this;return function(c){if(b.Y=null,b.x!==c){b.x=c;var d;try{d=ma(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},Z:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.Y;g||a.X("input")(c),clearTimeout(g),a.Y=setTimeout(function(){a.Y=null},b)}}},$:function(a,b){var c=pa(this.y.href),d=pa(b),e=pa(a);this.z=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},E:function(){var a=this;a._=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.a?a._.apply(this.b,arguments):a._.apply(this,arguments)}},P:function(){this._&&(Function.prototype.toString=this._)},F:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.$(b.z,c+""),a.apply(this,arguments)}};qa(history,"pushState",j,d),qa(history,"replaceState",j,d)}if(c.console&&"console"in va&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};ea(["debug","info","warn","error","log"],function(a,b){sa(console,b,k)})}},Q:function(){for(var a;this.v.length;){a=this.v.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},R:function(){for(var a in this.s)this.r[a]=this.s[a]},H:function(){var a=this;ea(this.t,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},I:function(a){var b=ua.exec(a),c={},d=7;try{for(;d--;)c[ta[d]]=b[d]||""}catch(e){throw new V("Invalid DSN: "+a)}if(c.pass&&!this.m.allowSecretKey)throw new V("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},L:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},D:function(){this.o||this.S.apply(this,arguments)},S:function(a,b){var c=this.T(a,b);this.W("handle",{stackInfo:a,options:b}),this.ba(a.name,a.message,a.url,a.lineno,c,b)},T:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(ea(a.stack,function(b,e){var f=c.ca(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.w,0)}),this.l.user&&(a.user=this.l.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||da(a[b]))&&delete a[b]}),aa(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!da(a)&&(!aa(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.ia()?void this.C("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random()this.k.maxBreadcrumbs&&this.u.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.r.push([a,b]),this.n&&this.E(),this},setUserContext:function(a){return this.j.user=a,this},setExtraContext:function(a){return this.U("extra",a),this},setTagsContext:function(a){return this.U("tags",a),this},clearContext:function(){return this.j={},this},getContext:function(){return JSON.parse(h(this.j))},setEnvironment:function(a){return this.k.environment=a,this},setRelease:function(a){return this.k.release=a,this},setDataCallback:function(a){var b=this.k.dataCallback;return this.k.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.k.breadcrumbCallback;return this.k.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.k.shouldSendCallback;return this.k.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.k.transport=a,this},lastException:function(){return this.d},lastEventId:function(){return this.f},isSetup:function(){return!!this.a&&(!!this.g||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.z("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=J.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(K){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new i("Missing eventId");var c=a.dsn||this.G;if(!c)throw new i("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.j.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.I(this.F(c)),h=K.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(K.head||K.body).appendChild(h)}},K:function(){var a=this;this.m+=1,setTimeout(function(){a.m-=1})},V:function(a,b){var c,d;if(this.b){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),K.createEvent?(c=K.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=K.createEventObject(),c.eventType=a);for(d in b)w(b,d)&&(c[d]=b[d]);if(K.createEvent)K.dispatchEvent(c);else try{K.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},W:function(a){var b=this;return function(c){if(b.X=null,b.v!==c){b.v=c;var d;try{d=A(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},Y:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.X;g||a.W("input")(c),clearTimeout(g),a.X=setTimeout(function(){a.X=null},b)}}},Z:function(a,b){var c=D(this.w.href),d=D(b),e=D(a);this.x=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},B:function(){var a=this;a.$=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.L?a.$.apply(this.N,arguments):a.$.apply(this,arguments)}},O:function(){this.$&&(Function.prototype.toString=this.$)},C:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.Z(b.x,c+""),a.apply(this,arguments)}};E(history,"pushState",j,d),E(history,"replaceState",j,d)}if(c.console&&"console"in J&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};s(["debug","info","warn","error","log"],function(a,b){G(console,b,k)})}},P:function(){for(var a;this.t.length;){a=this.t.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},Q:function(){for(var a in this.q)this.p[a]=this.q[a]},E:function(){var a=this;s(this.r,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},F:function(a){var b=I.exec(a),c={},d=7;try{for(;d--;)c[H[d]]=b[d]||""}catch(e){throw new i("Invalid DSN: "+a)}if(c.pass&&!this.k.allowSecretKey)throw new i("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},I:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},A:function(){this.m||this.R.apply(this,arguments)},R:function(a,b){var c=this.S(a,b);this.V("handle",{stackInfo:a,options:b}),this.aa(a.name,a.message,a.url,a.lineno,c,b)},S:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(s(a.stack,function(b,e){var f=c.ba(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.u,0)}),this.j.user&&(a.user=this.j.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||r(a[b]))&&delete a[b]}),o(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!r(a)&&(!o(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.ha()?void this.z("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function y(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&i(b))for(c=b.split(/\s+/),f=0;f=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function k(a,b){var c=null;if(!b||f.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(h.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,g,h){var l=null,m=e.isErrorEvent(h)?h.error:h,n=e.isErrorEvent(a)?a.message:a;if(v)f.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&e.isError(m))l=f.computeStackTrace(m),k(l,!0);else{var p,r={url:b,line:c,column:g},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(j);p&&(s=p[1],n=p[2])}r.func=i,l={name:s,message:n,url:d(),stack:[r]},k(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=g.onerror,g.onerror=l,r=!0)}function n(){r&&(g.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,k.apply(null,[a,!1].concat(b))}function p(a,b){var c=h.call(arguments,1);if(v){if(u===a)return;o()}var d=f.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),f.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,e,f=/^\s*at (.*?) ?\(((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,g=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|\[native).*?|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,h=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,j=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,k=/\((\S*)(?::(\d+))(?::(\d+))\)/,l=a.stack.split("\n"),m=[],n=(/^(.*) is undefined$/.exec(a.message),0),o=l.length;n eval")>-1;q&&(b=j.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==n||c[5]||"undefined"==typeof a.columnNumber||(m[0].column=a.columnNumber+1),e={url:c[3],func:c[1]||i,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}!e.func&&e.line&&(e.func=i),m.push(e)}return m.length?{name:a.name,message:a.message,url:d(),stack:m}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=i),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,g){for(var h,j,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==e&&o!==f.report){if(j={url:null,func:i,line:null,column:null},o.name?j.func=o.name:(h=k.exec(o.toString()))&&(j.func=h[1]),"undefined"==typeof j.func)try{j.func=h.input.substring(0,h.input.indexOf("{"))}catch(p){}m[""+o]?n=!0:m[""+o]=!0,l.push(j)}g&&l.splice(0,g);var q={name:a.name,message:a.message,url:d(),stack:l};return b(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),q}function e(b,e){var g=null;e=null==e?0:+e;try{if(g=a(b))return g}catch(h){if(f.debug)throw h}try{if(g=c(b,e+1))return g}catch(h){if(f.debug)throw h}return{name:b.name,message:b.message,url:d()}}return e.augmentStackTraceWithInitialElement=b,e.computeStackTraceFromStackProp=a,e}(),b.exports=f}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{5:5}],7:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}]},{},[4])(4)}); //# sourceMappingURL=raven.min.js.map \ No newline at end of file diff --git a/dist/raven.min.js.map b/dist/raven.min.js.map index 4eb63a22819a..e83f52a39371 100644 --- a/dist/raven.min.js.map +++ b/dist/raven.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["raven.js"],"names":["global","factory","exports","module","define","amd","Raven","this","createCommonjsModule","fn","_typeof","obj","Symbol","iterator","constructor","prototype","isObject$1","what","isError$1","value","toString","call","Error","isErrorEvent$1","supportsErrorEvent","isUndefined$1","isFunction$1","isPlainObject","Object","isString$1","isArray$1","isEmptyObject$1","_","hasOwnProperty","ErrorEvent","e","supportsFetch$1","_window$3","Headers","Request","Response","wrappedCallback","callback","dataCallback","data","original","normalizedData","each$1","i","j","length","hasKey$1","objectMerge$1","obj1","obj2","key","objectFrozen$1","isFrozen","truncate$1","str","max","substr","object","joinRegExp$1","patterns","pattern","sources","len","push","replace","source","RegExp","join","urlencode$1","o","pairs","encodeURIComponent","parseUrl$1","url","match","query","fragment","protocol","host","path","relative","uuid4$1","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","r","Math","random","htmlTreeAsString$1","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","reverse","className","classes","attr","tagName","toLowerCase","id","split","attrWhitelist","getAttribute","isOnlyOneTruthy","a","b","isBothUndefined","isSameException$1","ex1","ex2","values","type","stacktrace","isSameStacktrace$1","stack1","stack2","frames1","frames","frames2","filename","lineno","colno","fill$1","name","replacement","track","orig","__raven__","__orig__","safeJoin","input","delimiter","output","String","getLocationHref","document","location","href","RavenConfigError","message","now","Date","keepOriginalCallback","isFunction","Raven$1","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window$1","SENTRY_RELEASE","logger","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","_fetchDefaults","method","keepalive","referrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","console","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","_lastHref","_resetBackoff","commonjsGlobal","window","self","_sPO","setPrototypeOf","p","__proto__","Reflect","construct","Parent","args","Class","Constructor","apply","bind","utils","isObject","isError","isErrorEvent","isString","isArray","isEmptyObject","supportsFetch","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","TraceKit","debug","_window$2","_slice","slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","report","subscribe","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","stack","isWindowError","exception","concat","arguments","inner","traceKitWindowOnError","msg","lineNo","colNo","ex","error","lastExceptionStack","computeStackTrace","augmentStackTraceWithInitialElement","processLastException","groups","line","column","undefined","func","_oldOnerrorHandler","_onErrorHandlerInstalled","onerror","_lastExceptionStack","_lastArgs","lastArgs","lastException","rethrow","setTimeout","incomplete","uninstall","computeStackTraceFromStackProp","submatch","parts","element","chrome","gecko","winjs","geckoEval","chromeEval","lines","exec","isNative","indexOf","isEval","columnNumber","stackInfo","initial","unshift","partial","computeStackTraceByWalkingCallerChain","depth","item","functionName","funcs","recursion","curr","caller","substring","result","sourceURL","fileName","lineNumber","description","tracekit","stringify_1","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","err","keys","thisPos","Infinity","getSerialize","configError","wrapMethod","level","originalConsoleLevel","originalConsole","sentryLevel","extra","Function","console$1","wrapConsoleMethod","dsnKeys","dsnPattern","navigator","VERSION","config","dsn","options","_logDebug","globalOptions","setDSN","maxBreadcrumbs","min","autoBreadcrumbDefaults","xhr","dom","sentry","instrumentDefaults","tryCatch","install","isSetup","_handleOnErrorStackInfo","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","lastIndexOf","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","context","wrap","_before","wrapped","deep","_ignoreNextOnError","captureException","__raven_wrapper__","property","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","trimHeadFrames","isNotError","isNotErrorEvent","isErrorEventWithoutError","captureMessage","_handleStackInfo","test","initialCall","fileurl","fingerprint","_prepareFrames","_send","captureBreadcrumb","crumb","timestamp","breadcrumbCallback","shift","addPlugin","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","setDataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","N","W","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","X","evtName","_keypressTimeout","target","category","Z","debounceDuration","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","$","from","to","parsedLoc","parsedTo","parsedFrom","E","_originalFunctionToString","P","F","wrapTimeFn","t","Array","originalCallback","wrapEventTarget","proto","capture","secure","handleEvent","before","clickHandler","keypressHandler","_keypressEventHandler","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","G","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","onreadystatechange","origFetch","fetchInput","fetchData","then","response","addEventListener","attachEvent","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","Q","builtin","R","H","installer","I","m","allowSecretKey","L","port","D","S","_triggerEvent","_processException","T","frame","_normalizeFrame","in_app","ca","stackInfoUrl","normalized","function","ba","prefixedMessage","culprit","da","request","Referer","breadcrumbs","_trimBreadcrumbs","ea","urlProp","urlProps","fa","httpData","userAgent","User-Agent","referrer","A","_backoffDuration","_backoffStart","ia","ja","current","last","ka","_shouldBackoff","retry","get","getResponseHeader","parseInt","U","baseData","project","platform","_getHttpData","serverName","server_name","forEach","_sendProcessedPayload","ma","la","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","na","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","onload","open","setRequestHeader","send","oa","hash","evaluated","C","V","setUser","setReleaseContext","raven","_window","_Raven","noConflict","singleton"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file +{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","RavenConfigError","message","name","prototype","constructor","2","utils","wrapMethod","console","level","callback","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","msg","safeJoin","data","logger","extra","Function","apply","5","3","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","_fetchDefaults","method","keepalive","referrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","isError","isObject","isErrorEvent","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","wrapConsoleMethod","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","config","dsn","options","_logDebug","globalOptions","key","value","setDSN","push","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","toString","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","substr","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","context","func","undefined","wrap","_before","wrapped","deep","_ignoreNextOnError","captureException","__raven__","__raven_wrapper__","property","__orig__","uninstall","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","ex","trimHeadFrames","isNotError","isNotErrorEvent","isErrorEventWithoutError","error","captureMessage","stacktrace","stack","computeStackTrace","_handleStackInfo","ex1","test","initialCall","fileurl","url","fingerprint","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","addPlugin","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","setDataCallback","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","K","setTimeout","V","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","W","evtName","_keypressTimeout","target","category","Y","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","Z","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","B","_originalFunctionToString","O","C","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","type","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","D","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","addEventListener","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","_","P","builtin","Q","E","installer","concat","F","str","m","exec","allowSecretKey","I","port","A","R","stackInfo","_triggerEvent","_processException","lineno","S","frame","_normalizeFrame","in_app","ba","stackInfoUrl","normalized","filename","line","colno","column","function","aa","prefixedMessage","exception","values","culprit","ca","request","Referer","breadcrumbs","_trimBreadcrumbs","da","urlProp","urlProps","ea","httpData","userAgent","User-Agent","referrer","y","_backoffDuration","_backoffStart","ha","ia","current","last","ja","_shouldBackoff","retry","get","getResponseHeader","parseInt","T","baseData","project","platform","_getHttpData","serverName","server_name","Object","keys","forEach","random","_sendProcessedPayload","la","ka","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","ma","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","onerror","open","setRequestHeader","send","na","hash","evaluated","z","U","setUser","setReleaseContext","6","7","4","RavenConstructor","_Raven","noConflict","what","supportsErrorEvent","isPlainObject","ErrorEvent","Headers","Response","wrappedCallback","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","getLocationHref","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","gecko","winjs","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","initial","unshift","partial","computeStackTraceByWalkingCallerChain","depth","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file diff --git a/docs/sentry-doc-config.json b/docs/sentry-doc-config.json index 501e6512c831..4f06990be6ce 100644 --- a/docs/sentry-doc-config.json +++ b/docs/sentry-doc-config.json @@ -75,6 +75,6 @@ } }, "vars": { - "RAVEN_VERSION": "3.22.2" + "RAVEN_VERSION": "3.22.3" } } diff --git a/package.json b/package.json index 85a14df01ccf..01d7ceb60a57 100644 --- a/package.json +++ b/package.json @@ -9,7 +9,7 @@ "raven", "sentry" ], - "version": "3.22.2", + "version": "3.22.3", "repository": "git://github.com/getsentry/raven-js.git", "license": "BSD-2-Clause", "homepage": "https://github.com/getsentry/raven-js", diff --git a/src/raven.js b/src/raven.js index 76ae04eb52d6..e52e6835e4e8 100644 --- a/src/raven.js +++ b/src/raven.js @@ -126,7 +126,7 @@ Raven.prototype = { // webpack (using a build step causes webpack #1617). Grunt verifies that // this value matches package.json during build. // See: https://github.com/getsentry/raven-js/issues/465 - VERSION: '3.22.2', + VERSION: '3.22.3', debug: false, diff --git a/test/raven.test.js b/test/raven.test.js index 0614a64399e0..57ab5788e902 100644 --- a/test/raven.test.js +++ b/test/raven.test.js @@ -1313,7 +1313,7 @@ describe('globals', function() { extra: {'session:duration': 100} }); assert.deepEqual(opts.auth, { - sentry_client: 'raven-js/3.22.2', + sentry_client: 'raven-js/3.22.3', sentry_key: 'abc', sentry_version: '7' }); @@ -1360,7 +1360,7 @@ describe('globals', function() { extra: {'session:duration': 100} }); assert.deepEqual(opts.auth, { - sentry_client: 'raven-js/3.22.2', + sentry_client: 'raven-js/3.22.3', sentry_key: 'abc', sentry_secret: 'def', sentry_version: '7' From 9ad02d85c1c1d7574d5de24695db7f36640139b3 Mon Sep 17 00:00:00 2001 From: Amir Szekely Date: Wed, 14 Feb 2018 00:23:40 -0800 Subject: [PATCH 09/75] docs: missing comma in docs example (#1230) --- docs/config.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/config.rst b/docs/config.rst index 1d479f81770b..557b5ea25891 100644 --- a/docs/config.rst +++ b/docs/config.rst @@ -218,7 +218,7 @@ Those configuration options are documented below: 'xhr': false, // XMLHttpRequest 'console': false, // console logging 'dom': true, // DOM interactions, i.e. clicks/typing - 'location': false // url changes, including pushState/popState + 'location': false, // url changes, including pushState/popState 'sentry': true // sentry events } From dd5a3bc458a9ea139a8e388164b0581e1fb6ce77 Mon Sep 17 00:00:00 2001 From: Marcus Cobden Date: Wed, 14 Feb 2018 11:46:04 +0000 Subject: [PATCH 10/75] fix: Correctly increment trimHeadFrames in captureMessage (#1224) --- src/raven.js | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/raven.js b/src/raven.js index e52e6835e4e8..2045debc8cfa 100644 --- a/src/raven.js +++ b/src/raven.js @@ -513,13 +513,15 @@ Raven.prototype = { // fingerprint on msg, not stack trace (legacy behavior, could be // revisited) fingerprint: msg, - // since we know this is a synthetic trace, the top N-most frames - // MUST be from Raven.js, so mark them as in_app later by setting - // trimHeadFrames - trimHeadFrames: (options.trimHeadFrames || 0) + 1 + trimHeadFrames: 0 }, options ); + // Since we know this is a synthetic trace, the top frame (this function call) + // MUST be from Raven.js, so mark it for trimming + // We add to the trim counter so that callers can choose to trim extra frames, such + // as utility functions. + options.trimHeadFrames += 1; var frames = this._prepareFrames(stack, options); data.stacktrace = { From f4a286280ae96648108dc47341886560ce380e1b Mon Sep 17 00:00:00 2001 From: Thomas Grainger Date: Wed, 14 Feb 2018 12:39:42 +0000 Subject: [PATCH 11/75] build: Fix browserify plugin transform append (#1229) --- Gruntfile.js | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) diff --git a/Gruntfile.js b/Gruntfile.js index 211318bbd951..f0fa6b474353 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -24,15 +24,10 @@ module.exports = function(grunt) { // custom browserify transformer to re-write plugins to // self-register with Raven via addPlugin function AddPluginBrowserifyTransformer() { + var noop = function (chunk, _, cb) { cb(null, chunk); }; + var append = function (cb) { cb(null, "\nrequire('../src/singleton').addPlugin(module.exports);"); }; return function(file) { - return through(function(buf, enc, next) { - buf = buf.toString('utf8'); - if (/plugins/.test(file)) { - buf += "\nrequire('../src/singleton').addPlugin(module.exports);"; - } - this.push(buf); - next(); - }); + return through(noop, /plugins/.test(file) ? append : undefined); }; } From 97b63e2e654d58a760142c0df4c84ebe42ae5f31 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kamil=20Og=C3=B3rek?= Date: Wed, 21 Feb 2018 13:42:56 +0100 Subject: [PATCH 12/75] fix: Let Edge to send fetch requests using default config (#1236) --- src/raven.js | 7 ++++++- src/utils.js | 19 +++++++++++++++++++ test/raven.test.js | 3 ++- 3 files changed, 27 insertions(+), 2 deletions(-) diff --git a/src/raven.js b/src/raven.js index 2045debc8cfa..8faa020ffcfd 100644 --- a/src/raven.js +++ b/src/raven.js @@ -27,6 +27,7 @@ var isSameStacktrace = utils.isSameStacktrace; var parseUrl = utils.parseUrl; var fill = utils.fill; var supportsFetch = utils.supportsFetch; +var supportsReferrerPolicy = utils.supportsReferrerPolicy; var wrapConsoleMethod = require('./console').wrapMethod; @@ -90,7 +91,11 @@ function Raven() { this._fetchDefaults = { method: 'POST', keepalive: true, - referrerPolicy: 'origin' + // Despite all stars in the sky saying that Edge supports old draft syntax, aka 'never', 'always', 'origin' and 'default + // https://caniuse.com/#feat=referrer-policy + // It doesn't. And it throw exception instead of ignoring this parameter... + // REF: https://github.com/getsentry/raven-js/issues/1233 + referrerPolicy: supportsReferrerPolicy() ? 'origin' : '' }; this._ignoreOnError = 0; this._isRavenInstalled = false; diff --git a/src/utils.js b/src/utils.js index 619068332bc7..a729a8c4f77b 100644 --- a/src/utils.js +++ b/src/utils.js @@ -79,6 +79,24 @@ function supportsFetch() { } } +// Despite all stars in the sky saying that Edge supports old draft syntax, aka 'never', 'always', 'origin' and 'default +// https://caniuse.com/#feat=referrer-policy +// It doesn't. And it throw exception instead of ignoring this parameter... +// REF: https://github.com/getsentry/raven-js/issues/1233 +function supportsReferrerPolicy() { + if (!supportsFetch()) return false; + + try { + // eslint-disable-next-line no-new + new Request('pickleRick', { + referrerPolicy: 'origin' + }); + return true; + } catch (e) { + return false; + } +} + function wrappedCallback(callback) { function dataCallback(data, original) { var normalizedData = callback(data) || data; @@ -431,6 +449,7 @@ module.exports = { isEmptyObject: isEmptyObject, supportsErrorEvent: supportsErrorEvent, supportsFetch: supportsFetch, + supportsReferrerPolicy: supportsReferrerPolicy, wrappedCallback: wrappedCallback, each: each, objectMerge: objectMerge, diff --git a/test/raven.test.js b/test/raven.test.js index 57ab5788e902..b08b858cffab 100644 --- a/test/raven.test.js +++ b/test/raven.test.js @@ -24,6 +24,7 @@ var utils = require('../src/utils'); var joinRegExp = utils.joinRegExp; var supportsErrorEvent = utils.supportsErrorEvent; var supportsFetch = utils.supportsFetch; +var supportsReferrerPolicy = utils.supportsReferrerPolicy; // window.console must be stubbed in for browsers that don't have it if (typeof window.console === 'undefined') { @@ -1784,7 +1785,7 @@ describe('globals', function() { 'http://localhost/?a=1&b=2', { keepalive: true, - referrerPolicy: 'origin', + referrerPolicy: supportsReferrerPolicy() ? 'origin' : '', method: 'POST', body: '{"foo":"bar"}' } From a8a7637022b9a9a66f72dbd930e1ffb660d79e69 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kamil=20Og=C3=B3rek?= Date: Wed, 21 Feb 2018 13:43:04 +0100 Subject: [PATCH 13/75] Chrome and Firefox Extensions stack trace parsing (#1235) * feat: Handle moz-extension stack traces in TraceKit * feat: Handle chrome-extension stack traces in TraceKit --- package-lock.json | 2 +- test/vendor/fixtures/captured-errors.js | 28 +++++- test/vendor/tracekit-parser.test.js | 28 ++++++ vendor/TraceKit/tracekit.js | 116 ++++++++++++------------ 4 files changed, 111 insertions(+), 63 deletions(-) diff --git a/package-lock.json b/package-lock.json index 3a013cf303e7..a57b8993306a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "raven-js", - "version": "3.22.2", + "version": "3.22.3", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/test/vendor/fixtures/captured-errors.js b/test/vendor/fixtures/captured-errors.js index 776ac6f001c5..b75dcc0c599c 100644 --- a/test/vendor/fixtures/captured-errors.js +++ b/test/vendor/fixtures/captured-errors.js @@ -193,10 +193,18 @@ CapturedExceptions.CHROME_XX_WEBPACK = { name: 'TypeError', stack: "TypeError: Cannot read property 'error' of undefined\n" + - ' at TESTTESTTEST.eval(webpack:///./src/components/test/test.jsx?:295:108)\n' + - ' at TESTTESTTEST.render(webpack:///./src/components/test/test.jsx?:272:32)\n' + - ' at TESTTESTTEST.tryRender(webpack:///./~/react-transform-catch-errors/lib/index.js?:34:31)\n' + - ' at TESTTESTTEST.proxiedMethod(webpack:///./~/react-proxy/modules/createPrototypeProxy.js?:44:30)' + ' at TESTTESTTEST.eval(webpack:///./src/components/test/test.jsx?:295:108)\n' + + ' at TESTTESTTEST.render(webpack:///./src/components/test/test.jsx?:272:32)\n' + + ' at TESTTESTTEST.tryRender(webpack:///./~/react-transform-catch-errors/lib/index.js?:34:31)\n' + + ' at TESTTESTTEST.proxiedMethod(webpack:///./~/react-proxy/modules/createPrototypeProxy.js?:44:30)' +}; + +CapturedExceptions.CHROME_EXTENSION = { + message: 'oops!', + name: 'Error', + stack: + 'Error: oops!\n' + + ' at chrome-extension://negengibeecgiokdifncekejdgkcoono/content-script-main.js:93:12' }; CapturedExceptions.FIREFOX_3 = { @@ -297,6 +305,18 @@ CapturedExceptions.FIREFOX_50_RESOURCE_URL = { name: 'TypeError' }; +CapturedExceptions.FIREFOX_MOZ_EXTENSION = { + stack: + 'render@moz-extension://path/data/content/bundle.js:5529:16\n' + + 'dispatchEvent@moz-extension://path/data/content/vendor.bundle.js:18:23028\n' + + 'wrapped@moz-extension//path/data/content/bundle.js:7270:25', + fileName: 'moz-extension://path/data/content/bundle.js', + lineNumber: 5529, + columnNumber: 16, + message: 'this.props.raw[this.state.dataSource].rows is undefined', + name: 'TypeError' +}; + CapturedExceptions.SAFARI_6 = { message: "'null' is not an object (evaluating 'x.undef')", stack: diff --git a/test/vendor/tracekit-parser.test.js b/test/vendor/tracekit-parser.test.js index 8baf61298bd0..4943a03afecb 100644 --- a/test/vendor/tracekit-parser.test.js +++ b/test/vendor/tracekit-parser.test.js @@ -431,6 +431,19 @@ describe('TraceKit', function() { }); }); + it('should parse Chrome Extension errors', function() { + var stackFrames = TraceKit.computeStackTrace(CapturedExceptions.CHROME_EXTENSION); + assert.ok(stackFrames); + assert.deepEqual(stackFrames.stack.length, 1); + assert.deepEqual(stackFrames.stack[0], { + url: 'chrome-extension://negengibeecgiokdifncekejdgkcoono/content-script-main.js', + func: '?', + args: [], + line: 93, + column: 12 + }); + }); + it('should parse nested eval() from Chrome', function() { var stackFrames = TraceKit.computeStackTrace(CapturedExceptions.CHROME_48_EVAL); assert.ok(stackFrames); @@ -788,6 +801,21 @@ describe('TraceKit', function() { }); }); + it('should parse Firefox Extension errors', function() { + var stackFrames = TraceKit.computeStackTrace( + CapturedExceptions.FIREFOX_MOZ_EXTENSION + ); + assert.ok(stackFrames); + assert.deepEqual(stackFrames.stack.length, 3); + assert.deepEqual(stackFrames.stack[0], { + url: 'moz-extension://path/data/content/bundle.js', + func: 'render', + args: [], + line: 5529, + column: 16 + }); + }); + it('should parse React Native errors on Android', function() { var stackFrames = TraceKit.computeStackTrace( CapturedExceptions.ANDROID_REACT_NATIVE diff --git a/vendor/TraceKit/tracekit.js b/vendor/TraceKit/tracekit.js index ca9e71a662c3..3c92edd6fa39 100644 --- a/vendor/TraceKit/tracekit.js +++ b/vendor/TraceKit/tracekit.js @@ -80,18 +80,18 @@ TraceKit.report = (function reportModuleWrapper() { lastExceptionStack = null; /** - * Add a crash handler. - * @param {Function} handler - */ + * Add a crash handler. + * @param {Function} handler + */ function subscribe(handler) { installGlobalHandler(); handlers.push(handler); } /** - * Remove a crash handler. - * @param {Function} handler - */ + * Remove a crash handler. + * @param {Function} handler + */ function unsubscribe(handler) { for (var i = handlers.length - 1; i >= 0; --i) { if (handlers[i] === handler) { @@ -101,17 +101,17 @@ TraceKit.report = (function reportModuleWrapper() { } /** - * Remove all crash handlers. - */ + * Remove all crash handlers. + */ function unsubscribeAll() { uninstallGlobalHandler(); handlers = []; } /** - * Dispatch stack information to all handlers. - * @param {Object.} stack - */ + * Dispatch stack information to all handlers. + * @param {Object.} stack + */ function notifyHandlers(stack, isWindowError) { var exception = null; if (isWindowError && !TraceKit.collectWindowErrors) { @@ -135,16 +135,16 @@ TraceKit.report = (function reportModuleWrapper() { var _oldOnerrorHandler, _onErrorHandlerInstalled; /** - * Ensures all global unhandled exceptions are recorded. - * Supported by Gecko and IE. - * @param {string} msg Error message. - * @param {string} url URL of script that generated the exception. - * @param {(number|string)} lineNo The line number at which the error - * occurred. - * @param {?(number|string)} colNo The column number at which the error - * occurred. - * @param {?Error} ex The actual Error object. - */ + * Ensures all global unhandled exceptions are recorded. + * Supported by Gecko and IE. + * @param {string} msg Error message. + * @param {string} url URL of script that generated the exception. + * @param {(number|string)} lineNo The line number at which the error + * occurred. + * @param {?(number|string)} colNo The column number at which the error + * occurred. + * @param {?Error} ex The actual Error object. + */ function traceKitWindowOnError(msg, url, lineNo, colNo, ex) { var stack = null; // If 'ex' is ErrorEvent, get real Error from inside @@ -232,12 +232,12 @@ TraceKit.report = (function reportModuleWrapper() { } /** - * Reports an unhandled Error to TraceKit. - * @param {Error} ex - * @param {?boolean} rethrow If false, do not re-throw the exception. - * Only used for window.onerror to not cause an infinite loop of - * rethrowing. - */ + * Reports an unhandled Error to TraceKit. + * @param {Error} ex + * @param {?boolean} rethrow If false, do not re-throw the exception. + * Only used for window.onerror to not cause an infinite loop of + * rethrowing. + */ function report(ex, rethrow) { var args = _slice.call(arguments, 1); if (lastExceptionStack) { @@ -364,16 +364,16 @@ TraceKit.computeStackTrace = (function computeStackTraceWrapper() { // ex.stacktrace = n/a; see 'opera:config#UserPrefs|Exceptions Have Stacktrace' /** - * Computes stack trace information from the stack property. - * Chrome and Gecko use this property. - * @param {Error} ex - * @return {?Object.} Stack trace information. - */ + * Computes stack trace information from the stack property. + * Chrome and Gecko use this property. + * @param {Error} ex + * @return {?Object.} Stack trace information. + */ function computeStackTraceFromStackProp(ex) { if (typeof ex.stack === 'undefined' || !ex.stack) return; - var chrome = /^\s*at (.*?) ?\(((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i, - gecko = /^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|\[native).*?|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i, + var chrome = /^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i, + gecko = /^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension|\[native).*?|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i, winjs = /^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i, // Used to additionally parse URL/line/column from eval frames geckoEval = /(\S+) line (\d+)(?: > eval line \d+)* > eval/i, @@ -455,18 +455,18 @@ TraceKit.computeStackTrace = (function computeStackTraceWrapper() { } /** - * Adds information about the first frame to incomplete stack traces. - * Safari and IE require this to get complete data on the first frame. - * @param {Object.} stackInfo Stack trace information from - * one of the compute* methods. - * @param {string} url The URL of the script that caused an error. - * @param {(number|string)} lineNo The line number of the script that - * caused an error. - * @param {string=} message The error generated by the browser, which - * hopefully contains the name of the object that caused the error. - * @return {boolean} Whether or not the stack information was - * augmented. - */ + * Adds information about the first frame to incomplete stack traces. + * Safari and IE require this to get complete data on the first frame. + * @param {Object.} stackInfo Stack trace information from + * one of the compute* methods. + * @param {string} url The URL of the script that caused an error. + * @param {(number|string)} lineNo The line number of the script that + * caused an error. + * @param {string=} message The error generated by the browser, which + * hopefully contains the name of the object that caused the error. + * @return {boolean} Whether or not the stack information was + * augmented. + */ function augmentStackTraceWithInitialElement(stackInfo, url, lineNo, message) { var initial = { url: url, @@ -505,14 +505,14 @@ TraceKit.computeStackTrace = (function computeStackTraceWrapper() { } /** - * Computes stack trace information by walking the arguments.caller - * chain at the time the exception occurred. This will cause earlier - * frames to be missed but is the only way to get any stack trace in - * Safari and IE. The top frame is restored by - * {@link augmentStackTraceWithInitialElement}. - * @param {Error} ex - * @return {?Object.} Stack trace information. - */ + * Computes stack trace information by walking the arguments.caller + * chain at the time the exception occurred. This will cause earlier + * frames to be missed but is the only way to get any stack trace in + * Safari and IE. The top frame is restored by + * {@link augmentStackTraceWithInitialElement}. + * @param {Error} ex + * @return {?Object.} Stack trace information. + */ function computeStackTraceByWalkingCallerChain(ex, depth) { var functionName = /function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i, stack = [], @@ -582,10 +582,10 @@ TraceKit.computeStackTrace = (function computeStackTraceWrapper() { } /** - * Computes a stack trace for an exception. - * @param {Error} ex - * @param {(string|number)=} depth - */ + * Computes a stack trace for an exception. + * @param {Error} ex + * @param {(string|number)=} depth + */ function computeStackTrace(ex, depth) { var stack = null; depth = depth == null ? 0 : +depth; From 114c958756f0bfe3b8bd3c661ec9efe4e80f3432 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kamil=20Og=C3=B3rek?= Date: Wed, 21 Feb 2018 14:10:32 +0100 Subject: [PATCH 14/75] fix: Handle custom error names in TraceKit (#1237) * ref: Reformat computeStackTraceFromStackProp variables in TraceKit * fix: Handle custom error names in TraceKit --- test/vendor/fixtures/captured-errors.js | 8 +++++++- test/vendor/tracekit-parser.test.js | 13 +++++++++++++ vendor/TraceKit/tracekit.js | 26 +++++++++++++------------ 3 files changed, 34 insertions(+), 13 deletions(-) diff --git a/test/vendor/fixtures/captured-errors.js b/test/vendor/fixtures/captured-errors.js index b75dcc0c599c..3efdf6ad091d 100644 --- a/test/vendor/fixtures/captured-errors.js +++ b/test/vendor/fixtures/captured-errors.js @@ -309,7 +309,7 @@ CapturedExceptions.FIREFOX_MOZ_EXTENSION = { stack: 'render@moz-extension://path/data/content/bundle.js:5529:16\n' + 'dispatchEvent@moz-extension://path/data/content/vendor.bundle.js:18:23028\n' + - 'wrapped@moz-extension//path/data/content/bundle.js:7270:25', + 'wrapped@moz-extension://path/data/content/bundle.js:7270:25', fileName: 'moz-extension://path/data/content/bundle.js', lineNumber: 5529, columnNumber: 16, @@ -504,4 +504,10 @@ CapturedExceptions.CHROME_ELECTRON = { ' at TESTTESTTEST.someMethod (C:\\Users\\user\\path\\to\\file.js:295:108)' }; +CapturedExceptions.CUSTOM_ERROR = { + message: 'test', + name: 'HttpError', + stack: 'HttpError: test\n' + ' at file:///path/to/file.js:19:40' +}; + module.exports = CapturedExceptions; diff --git a/test/vendor/tracekit-parser.test.js b/test/vendor/tracekit-parser.test.js index 4943a03afecb..47924cfbf5e7 100644 --- a/test/vendor/tracekit-parser.test.js +++ b/test/vendor/tracekit-parser.test.js @@ -881,5 +881,18 @@ describe('TraceKit', function() { column: 108 }); }); + + it('should parse custom errors', function() { + var stackFrames = TraceKit.computeStackTrace(CapturedExceptions.CUSTOM_ERROR); + assert.ok(stackFrames); + assert.deepEqual(stackFrames.stack.length, 1); + assert.deepEqual(stackFrames.stack[0], { + url: 'file:///path/to/file.js', + func: '?', + args: [], + line: 19, + column: 40 + }); + }); }); }); diff --git a/vendor/TraceKit/tracekit.js b/vendor/TraceKit/tracekit.js index 3c92edd6fa39..2a313fe5b988 100644 --- a/vendor/TraceKit/tracekit.js +++ b/vendor/TraceKit/tracekit.js @@ -372,18 +372,20 @@ TraceKit.computeStackTrace = (function computeStackTraceWrapper() { function computeStackTraceFromStackProp(ex) { if (typeof ex.stack === 'undefined' || !ex.stack) return; - var chrome = /^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i, - gecko = /^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension|\[native).*?|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i, - winjs = /^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i, - // Used to additionally parse URL/line/column from eval frames - geckoEval = /(\S+) line (\d+)(?: > eval line \d+)* > eval/i, - chromeEval = /\((\S*)(?::(\d+))(?::(\d+))\)/, - lines = ex.stack.split('\n'), - stack = [], - submatch, - parts, - element, - reference = /^(.*) is undefined$/.exec(ex.message); + var chrome = /^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i; + var winjs = /^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i; + // NOTE: blob urls are now supposed to always have an origin, therefore it's format + // which is `blob:http://url/path/with-some-uuid`, is matched by `blob.*?:\/` as well + var gecko = /^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i; + // Used to additionally parse URL/line/column from eval frames + var geckoEval = /(\S+) line (\d+)(?: > eval line \d+)* > eval/i; + var chromeEval = /\((\S*)(?::(\d+))(?::(\d+))\)/; + var lines = ex.stack.split('\n'); + var stack = []; + var submatch; + var parts; + var element; + var reference = /^(.*) is undefined$/.exec(ex.message); for (var i = 0, j = lines.length; i < j; ++i) { if ((parts = chrome.exec(lines[i]))) { From 8f511896dabdc4ed0dd401f0fe27c847293947db Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kamil=20Og=C3=B3rek?= Date: Tue, 27 Feb 2018 12:06:42 +0100 Subject: [PATCH 15/75] 3.22.4 --- CHANGELOG.md | 8 ++ bower.json | 2 +- dist/plugins/angular.js | 21 +++- dist/plugins/angular.min.js | 4 +- dist/plugins/angular.min.js.map | 2 +- dist/plugins/console.js | 21 +++- dist/plugins/console.min.js | 4 +- dist/plugins/console.min.js.map | 2 +- dist/plugins/ember.js | 2 +- dist/plugins/ember.min.js | 2 +- dist/plugins/require.js | 2 +- dist/plugins/require.min.js | 2 +- dist/plugins/vue.js | 2 +- dist/plugins/vue.min.js | 2 +- dist/raven.js | 178 ++++++++++++++++++-------------- dist/raven.min.js | 4 +- dist/raven.min.js.map | 2 +- dist/sri.json | 12 +-- docs/sentry-doc-config.json | 2 +- package.json | 2 +- src/raven.js | 2 +- test/raven.test.js | 4 +- 22 files changed, 178 insertions(+), 104 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 8e15bcc36469..9901e0424e18 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,13 @@ # Changelog +## 3.22.4 + +* NEW: Chrome and Firefox Extensions stack trace parsing (#1235) +* BUGFIX: Handle custom error names in TraceKit (#1237) +* BUGFIX: Let Edge to send fetch requests using default config (#1236) +* BUGFIX: Correctly increment trimHeadFrames in captureMessage (#1224) +* BUILD: Fix browserify plugin transform append (#1229) + ## 3.22.3 * BUGFIX: Reverted Rollup-based build system and fixed broken plugin builds diff --git a/bower.json b/bower.json index adc8fa55a371..b0e28618e7e6 100644 --- a/bower.json +++ b/bower.json @@ -1,6 +1,6 @@ { "name": "raven-js", - "version": "3.22.3", + "version": "3.22.4", "dependencies": {}, "main": "dist/raven.js", "ignore": [ diff --git a/dist/plugins/angular.js b/dist/plugins/angular.js index 453fcc4914b8..d1326ba24e4c 100644 --- a/dist/plugins/angular.js +++ b/dist/plugins/angular.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.22.3 (d6a1ff2) | github.com/getsentry/raven-js */ +/*! Raven.js 3.22.4 (114c958) | github.com/getsentry/raven-js */ /* * Includes TraceKit @@ -169,6 +169,24 @@ function supportsFetch() { } } +// Despite all stars in the sky saying that Edge supports old draft syntax, aka 'never', 'always', 'origin' and 'default +// https://caniuse.com/#feat=referrer-policy +// It doesn't. And it throw exception instead of ignoring this parameter... +// REF: https://github.com/getsentry/raven-js/issues/1233 +function supportsReferrerPolicy() { + if (!supportsFetch()) return false; + + try { + // eslint-disable-next-line no-new + new Request('pickleRick', { + referrerPolicy: 'origin' + }); + return true; + } catch (e) { + return false; + } +} + function wrappedCallback(callback) { function dataCallback(data, original) { var normalizedData = callback(data) || data; @@ -521,6 +539,7 @@ module.exports = { isEmptyObject: isEmptyObject, supportsErrorEvent: supportsErrorEvent, supportsFetch: supportsFetch, + supportsReferrerPolicy: supportsReferrerPolicy, wrappedCallback: wrappedCallback, each: each, objectMerge: objectMerge, diff --git a/dist/plugins/angular.min.js b/dist/plugins/angular.min.js index bf7923234138..b7572769df0b 100644 --- a/dist/plugins/angular.min.js +++ b/dist/plugins/angular.min.js @@ -1,3 +1,3 @@ -/*! Raven.js 3.22.3 (d6a1ff2) | github.com/getsentry/raven-js */ -!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b=b.Raven||(b.Raven={}),b=b.Plugins||(b.Plugins={}),b.Angular=a()}}(function(){return function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};b[g][0].call(k.exports,function(a){var c=b[g][1][a];return e(c?c:a)},k,k.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;g ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function y(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&i(b))for(c=b.split(/\s+/),f=0;f ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function z(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&i(b))for(c=b.split(/\s+/),f=0;f ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function y(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&i(b))for(c=b.split(/\s+/),f=0;f ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function z(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&i(b))for(c=b.split(/\s+/),f=0;f":"anonymous component")+(a._isVue&&a.$options.__file?" at "+a.$options.__file:"")}function e(a,b){if(b=b||window.Vue,b&&b.config){var c=b.config.errorHandler;b.config.errorHandler=function(b,e,f){var g={};"[object Object]"===Object.prototype.toString.call(e)&&(g.componentName=d(e),g.propsData=e.$options.propsData),"undefined"!=typeof f&&(g.lifecycleHook=f),a.captureException(b,{extra:g}),"function"==typeof c&&c.call(this,b,e,f)}}}b.exports=e},{}]},{},[1])(1)}); //# sourceMappingURL=vue.min.js.map \ No newline at end of file diff --git a/dist/raven.js b/dist/raven.js index ce27b87a2e6e..ddd6d30b10e5 100644 --- a/dist/raven.js +++ b/dist/raven.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.22.3 (d6a1ff2) | github.com/getsentry/raven-js */ +/*! Raven.js 3.22.4 (114c958) | github.com/getsentry/raven-js */ /* * Includes TraceKit @@ -95,6 +95,7 @@ var isSameStacktrace = utils.isSameStacktrace; var parseUrl = utils.parseUrl; var fill = utils.fill; var supportsFetch = utils.supportsFetch; +var supportsReferrerPolicy = utils.supportsReferrerPolicy; var wrapConsoleMethod = _dereq_(2).wrapMethod; @@ -158,7 +159,11 @@ function Raven() { this._fetchDefaults = { method: 'POST', keepalive: true, - referrerPolicy: 'origin' + // Despite all stars in the sky saying that Edge supports old draft syntax, aka 'never', 'always', 'origin' and 'default + // https://caniuse.com/#feat=referrer-policy + // It doesn't. And it throw exception instead of ignoring this parameter... + // REF: https://github.com/getsentry/raven-js/issues/1233 + referrerPolicy: supportsReferrerPolicy() ? 'origin' : '' }; this._ignoreOnError = 0; this._isRavenInstalled = false; @@ -194,7 +199,7 @@ Raven.prototype = { // webpack (using a build step causes webpack #1617). Grunt verifies that // this value matches package.json during build. // See: https://github.com/getsentry/raven-js/issues/465 - VERSION: '3.22.3', + VERSION: '3.22.4', debug: false, @@ -581,13 +586,15 @@ Raven.prototype = { // fingerprint on msg, not stack trace (legacy behavior, could be // revisited) fingerprint: msg, - // since we know this is a synthetic trace, the top N-most frames - // MUST be from Raven.js, so mark them as in_app later by setting - // trimHeadFrames - trimHeadFrames: (options.trimHeadFrames || 0) + 1 + trimHeadFrames: 0 }, options ); + // Since we know this is a synthetic trace, the top frame (this function call) + // MUST be from Raven.js, so mark it for trimming + // We add to the trim counter so that callers can choose to trim extra frames, such + // as utility functions. + options.trimHeadFrames += 1; var frames = this._prepareFrames(stack, options); data.stacktrace = { @@ -2231,6 +2238,24 @@ function supportsFetch() { } } +// Despite all stars in the sky saying that Edge supports old draft syntax, aka 'never', 'always', 'origin' and 'default +// https://caniuse.com/#feat=referrer-policy +// It doesn't. And it throw exception instead of ignoring this parameter... +// REF: https://github.com/getsentry/raven-js/issues/1233 +function supportsReferrerPolicy() { + if (!supportsFetch()) return false; + + try { + // eslint-disable-next-line no-new + new Request('pickleRick', { + referrerPolicy: 'origin' + }); + return true; + } catch (e) { + return false; + } +} + function wrappedCallback(callback) { function dataCallback(data, original) { var normalizedData = callback(data) || data; @@ -2583,6 +2608,7 @@ module.exports = { isEmptyObject: isEmptyObject, supportsErrorEvent: supportsErrorEvent, supportsFetch: supportsFetch, + supportsReferrerPolicy: supportsReferrerPolicy, wrappedCallback: wrappedCallback, each: each, objectMerge: objectMerge, @@ -2686,18 +2712,18 @@ TraceKit.report = (function reportModuleWrapper() { lastExceptionStack = null; /** - * Add a crash handler. - * @param {Function} handler - */ + * Add a crash handler. + * @param {Function} handler + */ function subscribe(handler) { installGlobalHandler(); handlers.push(handler); } /** - * Remove a crash handler. - * @param {Function} handler - */ + * Remove a crash handler. + * @param {Function} handler + */ function unsubscribe(handler) { for (var i = handlers.length - 1; i >= 0; --i) { if (handlers[i] === handler) { @@ -2707,17 +2733,17 @@ TraceKit.report = (function reportModuleWrapper() { } /** - * Remove all crash handlers. - */ + * Remove all crash handlers. + */ function unsubscribeAll() { uninstallGlobalHandler(); handlers = []; } /** - * Dispatch stack information to all handlers. - * @param {Object.} stack - */ + * Dispatch stack information to all handlers. + * @param {Object.} stack + */ function notifyHandlers(stack, isWindowError) { var exception = null; if (isWindowError && !TraceKit.collectWindowErrors) { @@ -2741,16 +2767,16 @@ TraceKit.report = (function reportModuleWrapper() { var _oldOnerrorHandler, _onErrorHandlerInstalled; /** - * Ensures all global unhandled exceptions are recorded. - * Supported by Gecko and IE. - * @param {string} msg Error message. - * @param {string} url URL of script that generated the exception. - * @param {(number|string)} lineNo The line number at which the error - * occurred. - * @param {?(number|string)} colNo The column number at which the error - * occurred. - * @param {?Error} ex The actual Error object. - */ + * Ensures all global unhandled exceptions are recorded. + * Supported by Gecko and IE. + * @param {string} msg Error message. + * @param {string} url URL of script that generated the exception. + * @param {(number|string)} lineNo The line number at which the error + * occurred. + * @param {?(number|string)} colNo The column number at which the error + * occurred. + * @param {?Error} ex The actual Error object. + */ function traceKitWindowOnError(msg, url, lineNo, colNo, ex) { var stack = null; // If 'ex' is ErrorEvent, get real Error from inside @@ -2838,12 +2864,12 @@ TraceKit.report = (function reportModuleWrapper() { } /** - * Reports an unhandled Error to TraceKit. - * @param {Error} ex - * @param {?boolean} rethrow If false, do not re-throw the exception. - * Only used for window.onerror to not cause an infinite loop of - * rethrowing. - */ + * Reports an unhandled Error to TraceKit. + * @param {Error} ex + * @param {?boolean} rethrow If false, do not re-throw the exception. + * Only used for window.onerror to not cause an infinite loop of + * rethrowing. + */ function report(ex, rethrow) { var args = _slice.call(arguments, 1); if (lastExceptionStack) { @@ -2970,26 +2996,28 @@ TraceKit.computeStackTrace = (function computeStackTraceWrapper() { // ex.stacktrace = n/a; see 'opera:config#UserPrefs|Exceptions Have Stacktrace' /** - * Computes stack trace information from the stack property. - * Chrome and Gecko use this property. - * @param {Error} ex - * @return {?Object.} Stack trace information. - */ + * Computes stack trace information from the stack property. + * Chrome and Gecko use this property. + * @param {Error} ex + * @return {?Object.} Stack trace information. + */ function computeStackTraceFromStackProp(ex) { if (typeof ex.stack === 'undefined' || !ex.stack) return; - var chrome = /^\s*at (.*?) ?\(((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i, - gecko = /^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|\[native).*?|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i, - winjs = /^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i, - // Used to additionally parse URL/line/column from eval frames - geckoEval = /(\S+) line (\d+)(?: > eval line \d+)* > eval/i, - chromeEval = /\((\S*)(?::(\d+))(?::(\d+))\)/, - lines = ex.stack.split('\n'), - stack = [], - submatch, - parts, - element, - reference = /^(.*) is undefined$/.exec(ex.message); + var chrome = /^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i; + var winjs = /^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i; + // NOTE: blob urls are now supposed to always have an origin, therefore it's format + // which is `blob:http://url/path/with-some-uuid`, is matched by `blob.*?:\/` as well + var gecko = /^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i; + // Used to additionally parse URL/line/column from eval frames + var geckoEval = /(\S+) line (\d+)(?: > eval line \d+)* > eval/i; + var chromeEval = /\((\S*)(?::(\d+))(?::(\d+))\)/; + var lines = ex.stack.split('\n'); + var stack = []; + var submatch; + var parts; + var element; + var reference = /^(.*) is undefined$/.exec(ex.message); for (var i = 0, j = lines.length; i < j; ++i) { if ((parts = chrome.exec(lines[i]))) { @@ -3061,18 +3089,18 @@ TraceKit.computeStackTrace = (function computeStackTraceWrapper() { } /** - * Adds information about the first frame to incomplete stack traces. - * Safari and IE require this to get complete data on the first frame. - * @param {Object.} stackInfo Stack trace information from - * one of the compute* methods. - * @param {string} url The URL of the script that caused an error. - * @param {(number|string)} lineNo The line number of the script that - * caused an error. - * @param {string=} message The error generated by the browser, which - * hopefully contains the name of the object that caused the error. - * @return {boolean} Whether or not the stack information was - * augmented. - */ + * Adds information about the first frame to incomplete stack traces. + * Safari and IE require this to get complete data on the first frame. + * @param {Object.} stackInfo Stack trace information from + * one of the compute* methods. + * @param {string} url The URL of the script that caused an error. + * @param {(number|string)} lineNo The line number of the script that + * caused an error. + * @param {string=} message The error generated by the browser, which + * hopefully contains the name of the object that caused the error. + * @return {boolean} Whether or not the stack information was + * augmented. + */ function augmentStackTraceWithInitialElement(stackInfo, url, lineNo, message) { var initial = { url: url, @@ -3111,14 +3139,14 @@ TraceKit.computeStackTrace = (function computeStackTraceWrapper() { } /** - * Computes stack trace information by walking the arguments.caller - * chain at the time the exception occurred. This will cause earlier - * frames to be missed but is the only way to get any stack trace in - * Safari and IE. The top frame is restored by - * {@link augmentStackTraceWithInitialElement}. - * @param {Error} ex - * @return {?Object.} Stack trace information. - */ + * Computes stack trace information by walking the arguments.caller + * chain at the time the exception occurred. This will cause earlier + * frames to be missed but is the only way to get any stack trace in + * Safari and IE. The top frame is restored by + * {@link augmentStackTraceWithInitialElement}. + * @param {Error} ex + * @return {?Object.} Stack trace information. + */ function computeStackTraceByWalkingCallerChain(ex, depth) { var functionName = /function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i, stack = [], @@ -3188,10 +3216,10 @@ TraceKit.computeStackTrace = (function computeStackTraceWrapper() { } /** - * Computes a stack trace for an exception. - * @param {Error} ex - * @param {(string|number)=} depth - */ + * Computes a stack trace for an exception. + * @param {Error} ex + * @param {(string|number)=} depth + */ function computeStackTrace(ex, depth) { var stack = null; depth = depth == null ? 0 : +depth; diff --git a/dist/raven.min.js b/dist/raven.min.js index fe2ae35ed191..7ca54f33bec6 100644 --- a/dist/raven.min.js +++ b/dist/raven.min.js @@ -1,3 +1,3 @@ -/*! Raven.js 3.22.3 (d6a1ff2) | github.com/getsentry/raven-js */ -!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.Raven=a()}}(function(){return function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};b[g][0].call(k.exports,function(a){var c=b[g][1][a];return e(c?c:a)},k,k.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;gthis.k.maxBreadcrumbs&&this.u.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.r.push([a,b]),this.n&&this.E(),this},setUserContext:function(a){return this.j.user=a,this},setExtraContext:function(a){return this.U("extra",a),this},setTagsContext:function(a){return this.U("tags",a),this},clearContext:function(){return this.j={},this},getContext:function(){return JSON.parse(h(this.j))},setEnvironment:function(a){return this.k.environment=a,this},setRelease:function(a){return this.k.release=a,this},setDataCallback:function(a){var b=this.k.dataCallback;return this.k.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.k.breadcrumbCallback;return this.k.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.k.shouldSendCallback;return this.k.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.k.transport=a,this},lastException:function(){return this.d},lastEventId:function(){return this.f},isSetup:function(){return!!this.a&&(!!this.g||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.z("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=J.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(K){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new i("Missing eventId");var c=a.dsn||this.G;if(!c)throw new i("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.j.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.I(this.F(c)),h=K.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(K.head||K.body).appendChild(h)}},K:function(){var a=this;this.m+=1,setTimeout(function(){a.m-=1})},V:function(a,b){var c,d;if(this.b){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),K.createEvent?(c=K.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=K.createEventObject(),c.eventType=a);for(d in b)w(b,d)&&(c[d]=b[d]);if(K.createEvent)K.dispatchEvent(c);else try{K.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},W:function(a){var b=this;return function(c){if(b.X=null,b.v!==c){b.v=c;var d;try{d=A(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},Y:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.X;g||a.W("input")(c),clearTimeout(g),a.X=setTimeout(function(){a.X=null},b)}}},Z:function(a,b){var c=D(this.w.href),d=D(b),e=D(a);this.x=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},B:function(){var a=this;a.$=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.L?a.$.apply(this.N,arguments):a.$.apply(this,arguments)}},O:function(){this.$&&(Function.prototype.toString=this.$)},C:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.Z(b.x,c+""),a.apply(this,arguments)}};E(history,"pushState",j,d),E(history,"replaceState",j,d)}if(c.console&&"console"in J&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};s(["debug","info","warn","error","log"],function(a,b){G(console,b,k)})}},P:function(){for(var a;this.t.length;){a=this.t.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},Q:function(){for(var a in this.q)this.p[a]=this.q[a]},E:function(){var a=this;s(this.r,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},F:function(a){var b=I.exec(a),c={},d=7;try{for(;d--;)c[H[d]]=b[d]||""}catch(e){throw new i("Invalid DSN: "+a)}if(c.pass&&!this.k.allowSecretKey)throw new i("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},I:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},A:function(){this.m||this.R.apply(this,arguments)},R:function(a,b){var c=this.S(a,b);this.V("handle",{stackInfo:a,options:b}),this.aa(a.name,a.message,a.url,a.lineno,c,b)},S:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(s(a.stack,function(b,e){var f=c.ba(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.u,0)}),this.j.user&&(a.user=this.j.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||r(a[b]))&&delete a[b]}),o(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!r(a)&&(!o(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.ha()?void this.z("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function y(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&i(b))for(c=b.split(/\s+/),f=0;f=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function k(a,b){var c=null;if(!b||f.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(h.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,g,h){var l=null,m=e.isErrorEvent(h)?h.error:h,n=e.isErrorEvent(a)?a.message:a;if(v)f.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&e.isError(m))l=f.computeStackTrace(m),k(l,!0);else{var p,r={url:b,line:c,column:g},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(j);p&&(s=p[1],n=p[2])}r.func=i,l={name:s,message:n,url:d(),stack:[r]},k(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=g.onerror,g.onerror=l,r=!0)}function n(){r&&(g.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,k.apply(null,[a,!1].concat(b))}function p(a,b){var c=h.call(arguments,1);if(v){if(u===a)return;o()}var d=f.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),f.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,e,f=/^\s*at (.*?) ?\(((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,g=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|\[native).*?|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,h=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,j=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,k=/\((\S*)(?::(\d+))(?::(\d+))\)/,l=a.stack.split("\n"),m=[],n=(/^(.*) is undefined$/.exec(a.message),0),o=l.length;n eval")>-1;q&&(b=j.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==n||c[5]||"undefined"==typeof a.columnNumber||(m[0].column=a.columnNumber+1),e={url:c[3],func:c[1]||i,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}!e.func&&e.line&&(e.func=i),m.push(e)}return m.length?{name:a.name,message:a.message,url:d(),stack:m}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=i),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,g){for(var h,j,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==e&&o!==f.report){if(j={url:null,func:i,line:null,column:null},o.name?j.func=o.name:(h=k.exec(o.toString()))&&(j.func=h[1]),"undefined"==typeof j.func)try{j.func=h.input.substring(0,h.input.indexOf("{"))}catch(p){}m[""+o]?n=!0:m[""+o]=!0,l.push(j)}g&&l.splice(0,g);var q={name:a.name,message:a.message,url:d(),stack:l};return b(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),q}function e(b,e){var g=null;e=null==e?0:+e;try{if(g=a(b))return g}catch(h){if(f.debug)throw h}try{if(g=c(b,e+1))return g}catch(h){if(f.debug)throw h}return{name:b.name,message:b.message,url:d()}}return e.augmentStackTraceWithInitialElement=b,e.computeStackTraceFromStackProp=a,e}(),b.exports=f}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{5:5}],7:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}]},{},[4])(4)}); +/*! Raven.js 3.22.4 (114c958) | github.com/getsentry/raven-js */ +!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.Raven=a()}}(function(){return function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};b[g][0].call(k.exports,function(a){var c=b[g][1][a];return e(c?c:a)},k,k.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;gthis.k.maxBreadcrumbs&&this.u.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.r.push([a,b]),this.n&&this.E(),this},setUserContext:function(a){return this.j.user=a,this},setExtraContext:function(a){return this.U("extra",a),this},setTagsContext:function(a){return this.U("tags",a),this},clearContext:function(){return this.j={},this},getContext:function(){return JSON.parse(h(this.j))},setEnvironment:function(a){return this.k.environment=a,this},setRelease:function(a){return this.k.release=a,this},setDataCallback:function(a){var b=this.k.dataCallback;return this.k.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.k.breadcrumbCallback;return this.k.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.k.shouldSendCallback;return this.k.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.k.transport=a,this},lastException:function(){return this.d},lastEventId:function(){return this.f},isSetup:function(){return!!this.a&&(!!this.g||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.z("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=K.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(L){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new i("Missing eventId");var c=a.dsn||this.G;if(!c)throw new i("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.j.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.I(this.F(c)),h=L.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(L.head||L.body).appendChild(h)}},K:function(){var a=this;this.m+=1,setTimeout(function(){a.m-=1})},V:function(a,b){var c,d;if(this.b){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),L.createEvent?(c=L.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=L.createEventObject(),c.eventType=a);for(d in b)w(b,d)&&(c[d]=b[d]);if(L.createEvent)L.dispatchEvent(c);else try{L.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},W:function(a){var b=this;return function(c){if(b.X=null,b.v!==c){b.v=c;var d;try{d=A(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},Y:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.X;g||a.W("input")(c),clearTimeout(g),a.X=setTimeout(function(){a.X=null},b)}}},Z:function(a,b){var c=D(this.w.href),d=D(b),e=D(a);this.x=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},B:function(){var a=this;a.$=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.L?a.$.apply(this.N,arguments):a.$.apply(this,arguments)}},O:function(){this.$&&(Function.prototype.toString=this.$)},C:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.Z(b.x,c+""),a.apply(this,arguments)}};E(history,"pushState",j,d),E(history,"replaceState",j,d)}if(c.console&&"console"in K&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};s(["debug","info","warn","error","log"],function(a,b){H(console,b,k)})}},P:function(){for(var a;this.t.length;){a=this.t.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},Q:function(){for(var a in this.q)this.p[a]=this.q[a]},E:function(){var a=this;s(this.r,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},F:function(a){var b=J.exec(a),c={},d=7;try{for(;d--;)c[I[d]]=b[d]||""}catch(e){throw new i("Invalid DSN: "+a)}if(c.pass&&!this.k.allowSecretKey)throw new i("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},I:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},A:function(){this.m||this.R.apply(this,arguments)},R:function(a,b){var c=this.S(a,b);this.V("handle",{stackInfo:a,options:b}),this.aa(a.name,a.message,a.url,a.lineno,c,b)},S:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(s(a.stack,function(b,e){var f=c.ba(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.u,0)}),this.j.user&&(a.user=this.j.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||r(a[b]))&&delete a[b]}),o(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!r(a)&&(!o(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.ha()?void this.z("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function z(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&i(b))for(c=b.split(/\s+/),f=0;f=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function k(a,b){var c=null;if(!b||f.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(h.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,g,h){var l=null,m=e.isErrorEvent(h)?h.error:h,n=e.isErrorEvent(a)?a.message:a;if(v)f.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&e.isError(m))l=f.computeStackTrace(m),k(l,!0);else{var p,r={url:b,line:c,column:g},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(j);p&&(s=p[1],n=p[2])}r.func=i,l={name:s,message:n,url:d(),stack:[r]},k(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=g.onerror,g.onerror=l,r=!0)}function n(){r&&(g.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,k.apply(null,[a,!1].concat(b))}function p(a,b){var c=h.call(arguments,1);if(v){if(u===a)return;o()}var d=f.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),f.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,e,f=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,g=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,h=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,j=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,k=/\((\S*)(?::(\d+))(?::(\d+))\)/,l=a.stack.split("\n"),m=[],n=(/^(.*) is undefined$/.exec(a.message),0),o=l.length;n eval")>-1;q&&(b=j.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==n||c[5]||"undefined"==typeof a.columnNumber||(m[0].column=a.columnNumber+1),e={url:c[3],func:c[1]||i,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}!e.func&&e.line&&(e.func=i),m.push(e)}return m.length?{name:a.name,message:a.message,url:d(),stack:m}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=i),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,g){for(var h,j,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==e&&o!==f.report){if(j={url:null,func:i,line:null,column:null},o.name?j.func=o.name:(h=k.exec(o.toString()))&&(j.func=h[1]),"undefined"==typeof j.func)try{j.func=h.input.substring(0,h.input.indexOf("{"))}catch(p){}m[""+o]?n=!0:m[""+o]=!0,l.push(j)}g&&l.splice(0,g);var q={name:a.name,message:a.message,url:d(),stack:l};return b(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),q}function e(b,e){var g=null;e=null==e?0:+e;try{if(g=a(b))return g}catch(h){if(f.debug)throw h}try{if(g=c(b,e+1))return g}catch(h){if(f.debug)throw h}return{name:b.name,message:b.message,url:d()}}return e.augmentStackTraceWithInitialElement=b,e.computeStackTraceFromStackProp=a,e}(),b.exports=f}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{5:5}],7:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}]},{},[4])(4)}); //# sourceMappingURL=raven.min.js.map \ No newline at end of file diff --git a/dist/raven.min.js.map b/dist/raven.min.js.map index e83f52a39371..80db3350555e 100644 --- a/dist/raven.min.js.map +++ b/dist/raven.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","RavenConfigError","message","name","prototype","constructor","2","utils","wrapMethod","console","level","callback","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","msg","safeJoin","data","logger","extra","Function","apply","5","3","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","_fetchDefaults","method","keepalive","referrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","isError","isObject","isErrorEvent","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","wrapConsoleMethod","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","config","dsn","options","_logDebug","globalOptions","key","value","setDSN","push","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","toString","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","substr","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","context","func","undefined","wrap","_before","wrapped","deep","_ignoreNextOnError","captureException","__raven__","__raven_wrapper__","property","__orig__","uninstall","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","ex","trimHeadFrames","isNotError","isNotErrorEvent","isErrorEventWithoutError","error","captureMessage","stacktrace","stack","computeStackTrace","_handleStackInfo","ex1","test","initialCall","fileurl","url","fingerprint","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","addPlugin","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","setDataCallback","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","K","setTimeout","V","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","W","evtName","_keypressTimeout","target","category","Y","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","Z","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","B","_originalFunctionToString","O","C","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","type","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","D","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","addEventListener","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","_","P","builtin","Q","E","installer","concat","F","str","m","exec","allowSecretKey","I","port","A","R","stackInfo","_triggerEvent","_processException","lineno","S","frame","_normalizeFrame","in_app","ba","stackInfoUrl","normalized","filename","line","colno","column","function","aa","prefixedMessage","exception","values","culprit","ca","request","Referer","breadcrumbs","_trimBreadcrumbs","da","urlProp","urlProps","ea","httpData","userAgent","User-Agent","referrer","y","_backoffDuration","_backoffStart","ha","ia","current","last","ja","_shouldBackoff","retry","get","getResponseHeader","parseInt","T","baseData","project","platform","_getHttpData","serverName","server_name","Object","keys","forEach","random","_sendProcessedPayload","la","ka","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","ma","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","onerror","open","setRequestHeader","send","na","hash","evaluated","z","U","setUser","setReleaseContext","6","7","4","RavenConstructor","_Raven","noConflict","what","supportsErrorEvent","isPlainObject","ErrorEvent","Headers","Response","wrappedCallback","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","getLocationHref","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","gecko","winjs","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","initial","unshift","partial","computeStackTraceByWalkingCallerChain","depth","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file +{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","RavenConfigError","message","name","prototype","constructor","2","utils","wrapMethod","console","level","callback","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","msg","safeJoin","data","logger","extra","Function","apply","5","3","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","isError","isObject","isErrorEvent","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","wrapConsoleMethod","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","config","dsn","options","_logDebug","globalOptions","key","value","setDSN","push","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","toString","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","substr","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","context","func","undefined","wrap","_before","wrapped","deep","_ignoreNextOnError","captureException","__raven__","__raven_wrapper__","property","__orig__","uninstall","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","ex","trimHeadFrames","isNotError","isNotErrorEvent","isErrorEventWithoutError","error","captureMessage","stacktrace","stack","computeStackTrace","_handleStackInfo","ex1","test","initialCall","fileurl","url","fingerprint","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","addPlugin","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","setDataCallback","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","K","setTimeout","V","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","W","evtName","_keypressTimeout","target","category","Y","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","Z","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","B","_originalFunctionToString","O","C","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","type","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","D","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","addEventListener","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","_","P","builtin","Q","E","installer","concat","F","str","m","exec","allowSecretKey","I","port","A","R","stackInfo","_triggerEvent","_processException","lineno","S","frame","_normalizeFrame","in_app","ba","stackInfoUrl","normalized","filename","line","colno","column","function","aa","prefixedMessage","exception","values","culprit","ca","request","Referer","breadcrumbs","_trimBreadcrumbs","da","urlProp","urlProps","ea","httpData","userAgent","User-Agent","referrer","y","_backoffDuration","_backoffStart","ha","ia","current","last","ja","_shouldBackoff","retry","get","getResponseHeader","parseInt","T","baseData","project","platform","_getHttpData","serverName","server_name","Object","keys","forEach","random","_sendProcessedPayload","la","ka","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","ma","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","onerror","open","setRequestHeader","send","na","hash","evaluated","z","U","setUser","setReleaseContext","6","7","4","RavenConstructor","_Raven","noConflict","what","supportsErrorEvent","isPlainObject","ErrorEvent","Headers","Response","wrappedCallback","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","getLocationHref","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","initial","unshift","partial","computeStackTraceByWalkingCallerChain","depth","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file diff --git a/dist/sri.json b/dist/sri.json index 9ebcb2507e2d..86c66fc1f632 100644 --- a/dist/sri.json +++ b/dist/sri.json @@ -1,20 +1,20 @@ { "@dist/raven.js": { "hashes": { - "sha256": "+HWXP9ac3YkJ8HPWhHJvUTmLnBiQRNiYpVBfCJQX9cI=", - "sha512": "yghB1768liscjqk5PJ/Tch9Unjtr4QKPOJziszGGQb/Xs4FK9zlBBY9DfAtZoPvwf9R7BslA2toUFaWXfm4YAQ==" + "sha256": "+L61BDMaxkLMtaAUJI6mvsmP00DOYIIWtNl+1i+Y3aA=", + "sha512": "T83F3qr0lcTjMsUlxNWALkMxaQOCxsLYrNEx8m7SXVFh1qTg9cOlhL4SW17ltyinTHI6WzpaIGYcOH+kVCQ51w==" }, "type": null, - "integrity": "sha256-+HWXP9ac3YkJ8HPWhHJvUTmLnBiQRNiYpVBfCJQX9cI= sha512-yghB1768liscjqk5PJ/Tch9Unjtr4QKPOJziszGGQb/Xs4FK9zlBBY9DfAtZoPvwf9R7BslA2toUFaWXfm4YAQ==", + "integrity": "sha256-+L61BDMaxkLMtaAUJI6mvsmP00DOYIIWtNl+1i+Y3aA= sha512-T83F3qr0lcTjMsUlxNWALkMxaQOCxsLYrNEx8m7SXVFh1qTg9cOlhL4SW17ltyinTHI6WzpaIGYcOH+kVCQ51w==", "path": "dist/raven.js" }, "@dist/raven.min.js": { "hashes": { - "sha256": "iy1PHaiXeBtyom/9xNufaCW9uGjv9YlMavMr+XOOQXI=", - "sha512": "hNzD03ikSsqSHmZTHGnCxxFFaRtNFjrDbvLoC5iHxDqUhAbLhtvUbUc+yLWNkJmzLsZZ++PNoWNONopCamP4Qg==" + "sha256": "oD7SHrzViZXl9xqPbsk+RGgVC2DIRSY0F2uOJjFoj58=", + "sha512": "GACBRIXYbp1Wl99VjGG+MNDfGNWNLCPw216jzhM5nPpOkKpBroMUz15GG7XEuR1JsJbV4bmRcKnqZ3pAPbgl8g==" }, "type": null, - "integrity": "sha256-iy1PHaiXeBtyom/9xNufaCW9uGjv9YlMavMr+XOOQXI= sha512-hNzD03ikSsqSHmZTHGnCxxFFaRtNFjrDbvLoC5iHxDqUhAbLhtvUbUc+yLWNkJmzLsZZ++PNoWNONopCamP4Qg==", + "integrity": "sha256-oD7SHrzViZXl9xqPbsk+RGgVC2DIRSY0F2uOJjFoj58= sha512-GACBRIXYbp1Wl99VjGG+MNDfGNWNLCPw216jzhM5nPpOkKpBroMUz15GG7XEuR1JsJbV4bmRcKnqZ3pAPbgl8g==", "path": "dist/raven.min.js" } } \ No newline at end of file diff --git a/docs/sentry-doc-config.json b/docs/sentry-doc-config.json index 4f06990be6ce..61ad3a0f5559 100644 --- a/docs/sentry-doc-config.json +++ b/docs/sentry-doc-config.json @@ -75,6 +75,6 @@ } }, "vars": { - "RAVEN_VERSION": "3.22.3" + "RAVEN_VERSION": "3.22.4" } } diff --git a/package.json b/package.json index 01d7ceb60a57..318750e2faa8 100644 --- a/package.json +++ b/package.json @@ -9,7 +9,7 @@ "raven", "sentry" ], - "version": "3.22.3", + "version": "3.22.4", "repository": "git://github.com/getsentry/raven-js.git", "license": "BSD-2-Clause", "homepage": "https://github.com/getsentry/raven-js", diff --git a/src/raven.js b/src/raven.js index 8faa020ffcfd..a44d09b05182 100644 --- a/src/raven.js +++ b/src/raven.js @@ -131,7 +131,7 @@ Raven.prototype = { // webpack (using a build step causes webpack #1617). Grunt verifies that // this value matches package.json during build. // See: https://github.com/getsentry/raven-js/issues/465 - VERSION: '3.22.3', + VERSION: '3.22.4', debug: false, diff --git a/test/raven.test.js b/test/raven.test.js index b08b858cffab..30d796b8b6da 100644 --- a/test/raven.test.js +++ b/test/raven.test.js @@ -1314,7 +1314,7 @@ describe('globals', function() { extra: {'session:duration': 100} }); assert.deepEqual(opts.auth, { - sentry_client: 'raven-js/3.22.3', + sentry_client: 'raven-js/3.22.4', sentry_key: 'abc', sentry_version: '7' }); @@ -1361,7 +1361,7 @@ describe('globals', function() { extra: {'session:duration': 100} }); assert.deepEqual(opts.auth, { - sentry_client: 'raven-js/3.22.3', + sentry_client: 'raven-js/3.22.4', sentry_key: 'abc', sentry_secret: 'def', sentry_version: '7' From 0516d9ed811aca9576db2c8c9ab1b5c0bc849de3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kamil=20Og=C3=B3rek?= Date: Fri, 2 Mar 2018 11:34:49 +0100 Subject: [PATCH 16/75] feat: Support unhandled rejections by default (#1242) --- docs/config.rst | 5 +++ docs/usage.rst | 17 ++++------ src/raven.js | 64 +++++++++++++++++++++++++++++------- src/utils.js | 5 +++ test/raven.test.js | 58 ++++++++++++++++++++++++++++++++ test/vendor/tracekit.test.js | 8 ++--- 6 files changed, 128 insertions(+), 29 deletions(-) diff --git a/docs/config.rst b/docs/config.rst index 557b5ea25891..4079a5c678d7 100644 --- a/docs/config.rst +++ b/docs/config.rst @@ -227,6 +227,11 @@ Those configuration options are documented below: By default, Raven captures as many as 100 breadcrumb entries. If you find this too noisy, you can reduce this number by setting `maxBreadcrumbs`. Note that this number cannot be set higher than the default of 100. +.. describe:: captureUnhandledRejections + + By default, Raven captures all unhandled promise rejections using standard ``unhandledrejection`` event. + If you want to disable this behaviour, set this option to ``false``. + .. describe:: transport Override the default HTTP data transport handler. diff --git a/docs/usage.rst b/docs/usage.rst index c9f790107efa..e58a11e14d3a 100644 --- a/docs/usage.rst +++ b/docs/usage.rst @@ -333,11 +333,11 @@ And set an ``Access-Control-Allow-Origin`` HTTP header on that file. Promises -------- -By default, Raven.js does not capture unhandled promise rejections. +By default, Raven.js capture unhandled promise rejections as described in official ECMAScript 6 standard. -Most Promise libraries have a global hook for capturing unhandled errors. You will need to -manually hook into such an event handler and call ``Raven.captureException`` or ``Raven.captureMessage`` -directly. +Most Promise libraries however, have a global hook for capturing unhandled errors. You may want to disable default behaviour +by setting ``captureUnhandledRejections`` option to ``false`` and manually hook into such event handler +and call ``Raven.captureException`` or ``Raven.captureMessage`` directly. For example, the `RSVP.js library `_ (used by Ember.js) allows you to bind an event handler to a `global error event @@ -350,13 +350,8 @@ For example, the `RSVP.js library }); `Bluebird -`_ and other promise libraries report unhandled rejections to a global DOM event, ``unhandledrejection``: - -.. code-block:: javascript - - window.onunhandledrejection = function(evt) { - Raven.captureException(evt.reason); - }; +`_ and other promise libraries report unhandled rejections to a global DOM event, ``unhandledrejection``. +In this case, you don't need to do anything, we've already got you covered by with default ``captureUnhandledRejections: true`` setting. Please consult your promise library documentation on how to hook into its global unhandled rejection handler, if it exposes one. diff --git a/src/raven.js b/src/raven.js index a44d09b05182..42298403faf3 100644 --- a/src/raven.js +++ b/src/raven.js @@ -79,6 +79,7 @@ function Raven() { includePaths: [], headers: null, collectWindowErrors: true, + captureUnhandledRejections: true, maxMessageLength: 0, // By default, truncates URL values to 250 chars @@ -237,6 +238,10 @@ Raven.prototype = { self._handleOnErrorStackInfo.apply(self, arguments); }); + if (self._globalOptions.captureUnhandledRejections) { + self._attachPromiseRejectionHandler(); + } + self._patchFunctionToString(); if (self._globalOptions.instrument && self._globalOptions.instrument.tryCatch) { @@ -387,14 +392,15 @@ Raven.prototype = { return wrapped; }, - /* - * Uninstalls the global error handler. - * - * @return {Raven} - */ + /** + * Uninstalls the global error handler. + * + * @return {Raven} + */ uninstall: function() { TraceKit.report.uninstall(); + this._detachPromiseRejectionHandler(); this._unpatchFunctionToString(); this._restoreBuiltIns(); this._restoreConsole(); @@ -405,13 +411,47 @@ Raven.prototype = { return this; }, - /* - * Manually capture an exception and send it over to Sentry - * - * @param {error} ex An exception to be logged - * @param {object} options A specific set of options for this error [optional] - * @return {Raven} - */ + /** + * Callback used for `unhandledrejection` event + * + * @param {PromiseRejectionEvent} event An object containing + * promise: the Promise that was rejected + * reason: the value with which the Promise was rejected + * @return void + */ + _promiseRejectionHandler: function(event) { + this._logDebug('debug', 'Raven caught unhandled promise rejection:', event); + this.captureException(event.reason); + }, + + /** + * Installs the global promise rejection handler. + * + * @return {raven} + */ + _attachPromiseRejectionHandler: function() { + this._promiseRejectionHandler = this._promiseRejectionHandler.bind(this); + _window.addEventListener('unhandledrejection', this._promiseRejectionHandler); + return this; + }, + + /** + * Uninstalls the global promise rejection handler. + * + * @return {raven} + */ + _detachPromiseRejectionHandler: function() { + _window.removeEventListener('unhandledrejection', this._promiseRejectionHandler); + return this; + }, + + /** + * Manually capture an exception and send it over to Sentry + * + * @param {error} ex An exception to be logged + * @param {object} options A specific set of options for this error [optional] + * @return {Raven} + */ captureException: function(ex, options) { options = objectMerge({trimHeadFrames: 0}, options ? options : {}); // Cases for sending ex as a message, rather than an exception diff --git a/src/utils.js b/src/utils.js index a729a8c4f77b..a4fcc6b1ebc9 100644 --- a/src/utils.js +++ b/src/utils.js @@ -97,6 +97,10 @@ function supportsReferrerPolicy() { } } +function supportsPromiseRejectionEvent() { + return typeof PromiseRejectionEvent === 'function'; +} + function wrappedCallback(callback) { function dataCallback(data, original) { var normalizedData = callback(data) || data; @@ -450,6 +454,7 @@ module.exports = { supportsErrorEvent: supportsErrorEvent, supportsFetch: supportsFetch, supportsReferrerPolicy: supportsReferrerPolicy, + supportsPromiseRejectionEvent: supportsPromiseRejectionEvent, wrappedCallback: wrappedCallback, each: each, objectMerge: objectMerge, diff --git a/test/raven.test.js b/test/raven.test.js index 30d796b8b6da..297b3017e5c7 100644 --- a/test/raven.test.js +++ b/test/raven.test.js @@ -25,6 +25,7 @@ var joinRegExp = utils.joinRegExp; var supportsErrorEvent = utils.supportsErrorEvent; var supportsFetch = utils.supportsFetch; var supportsReferrerPolicy = utils.supportsReferrerPolicy; +var supportsPromiseRejectionEvent = utils.supportsPromiseRejectionEvent; // window.console must be stubbed in for browsers that don't have it if (typeof window.console === 'undefined') { @@ -756,6 +757,40 @@ describe('globals', function() { }); }); + if (supportsPromiseRejectionEvent()) { + describe('captureUnhandledRejections', function() { + it('should capture string rejections', function(done) { + Raven._attachPromiseRejectionHandler(); + + this.sinon.stub(Raven, 'captureException').callsFake(function(reason) { + assert.equal(reason, 'foo'); + Raven._detachPromiseRejectionHandler(); + done(); + }); + + new Promise(function(resolve, reject) { + reject('foo'); + }); + }); + + it('should capture error rejections', function(done) { + var err = new Error('foo'); + + Raven._attachPromiseRejectionHandler(); + + this.sinon.stub(Raven, 'captureException').callsFake(function(reason) { + assert.equal(reason, err); + Raven._detachPromiseRejectionHandler(); + done(); + }); + + new Promise(function(resolve, reject) { + reject(err); + }); + }); + }); + } + describe('send', function() { it('should build a good data payload', function() { this.sinon.stub(Raven, 'isSetup').returns(true); @@ -2347,6 +2382,29 @@ describe('Raven (public API)', function() { }); }); + describe('captureUnhandledRejections', function() { + it('should be true by default', function() { + Raven.config(SENTRY_DSN); + assert.isTrue(Raven._globalOptions.captureUnhandledRejections); + }); + + it('should be true if set to true', function() { + Raven.config(SENTRY_DSN, { + captureUnhandledRejections: true + }); + + assert.isTrue(Raven._globalOptions.captureUnhandledRejections); + }); + + it('should be false if set to false', function() { + Raven.config(SENTRY_DSN, { + captureUnhandledRejections: false + }); + + assert.isFalse(Raven._globalOptions.captureUnhandledRejections); + }); + }); + describe('maxBreadcrumbs', function() { it('should override the default', function() { Raven.config(SENTRY_DSN, {maxBreadcrumbs: 50}); diff --git a/test/vendor/tracekit.test.js b/test/vendor/tracekit.test.js index d82438ea1bfb..4ac81fd6c10c 100644 --- a/test/vendor/tracekit.test.js +++ b/test/vendor/tracekit.test.js @@ -181,9 +181,7 @@ describe('TraceKit', function() { }); describe('when no 5th argument (error object)', function() { - it('should seperate name, message for default error types (e.g. ReferenceError)', function( - done - ) { + it('should seperate name, message for default error types (e.g. ReferenceError)', function(done) { subscriptionHandler = function(stackInfo, extra) { assert.equal(stackInfo.name, 'ReferenceError'); assert.equal(stackInfo.message, 'foo is undefined'); @@ -203,9 +201,7 @@ describe('TraceKit', function() { done(); }); - it('should separate name, message for default error types on Opera Mini (see #546)', function( - done - ) { + it('should separate name, message for default error types on Opera Mini (see #546)', function(done) { subscriptionHandler = function(stackInfo, extra) { assert.equal(stackInfo.name, 'ReferenceError'); assert.equal(stackInfo.message, 'Undefined variable: foo'); From 772cf3ca8c82c0f5715d6c787a6a1368db5ec778 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kamil=20Og=C3=B3rek?= Date: Fri, 2 Mar 2018 11:48:06 +0100 Subject: [PATCH 17/75] 3.23.0 --- CHANGELOG.md | 8 + bower.json | 2 +- dist/plugins/angular.js | 7 +- dist/plugins/angular.min.js | 4 +- dist/plugins/angular.min.js.map | 2 +- dist/plugins/console.js | 7 +- dist/plugins/console.min.js | 4 +- dist/plugins/console.min.js.map | 2 +- dist/plugins/ember.js | 2 +- dist/plugins/ember.min.js | 2 +- dist/plugins/require.js | 2 +- dist/plugins/require.min.js | 2 +- dist/plugins/vue.js | 2 +- dist/plugins/vue.min.js | 2 +- dist/raven.js | 73 +++++-- dist/raven.min.js | 4 +- dist/raven.min.js.map | 2 +- dist/sri.json | 12 +- docs/sentry-doc-config.json | 2 +- package.json | 2 +- src/raven.js | 2 +- test/raven.test.js | 4 +- typescript/raven.d.ts | 363 ++++++++++++++++---------------- 23 files changed, 291 insertions(+), 221 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 9901e0424e18..2dbf3591870a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,13 @@ # Changelog +## 3.23.0 + +**NOTE**: +This release may introduce some new, previously uncaught errors that were silently occuring in the background. +Your Sentry Issues stream may show new errors, without any changes done to your application's code. + +* NEW: Introduce global unhandled rejections handler and `captureUnhandledRejections` config option (#1242). + ## 3.22.4 * NEW: Chrome and Firefox Extensions stack trace parsing (#1235) diff --git a/bower.json b/bower.json index b0e28618e7e6..f68b7a78f98e 100644 --- a/bower.json +++ b/bower.json @@ -1,6 +1,6 @@ { "name": "raven-js", - "version": "3.22.4", + "version": "3.23.0", "dependencies": {}, "main": "dist/raven.js", "ignore": [ diff --git a/dist/plugins/angular.js b/dist/plugins/angular.js index d1326ba24e4c..9e5dcea33fe4 100644 --- a/dist/plugins/angular.js +++ b/dist/plugins/angular.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.22.4 (114c958) | github.com/getsentry/raven-js */ +/*! Raven.js 3.23.0 (0516d9e) | github.com/getsentry/raven-js */ /* * Includes TraceKit @@ -187,6 +187,10 @@ function supportsReferrerPolicy() { } } +function supportsPromiseRejectionEvent() { + return typeof PromiseRejectionEvent === 'function'; +} + function wrappedCallback(callback) { function dataCallback(data, original) { var normalizedData = callback(data) || data; @@ -540,6 +544,7 @@ module.exports = { supportsErrorEvent: supportsErrorEvent, supportsFetch: supportsFetch, supportsReferrerPolicy: supportsReferrerPolicy, + supportsPromiseRejectionEvent: supportsPromiseRejectionEvent, wrappedCallback: wrappedCallback, each: each, objectMerge: objectMerge, diff --git a/dist/plugins/angular.min.js b/dist/plugins/angular.min.js index b7572769df0b..e52c9a43298c 100644 --- a/dist/plugins/angular.min.js +++ b/dist/plugins/angular.min.js @@ -1,3 +1,3 @@ -/*! Raven.js 3.22.4 (114c958) | github.com/getsentry/raven-js */ -!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b=b.Raven||(b.Raven={}),b=b.Plugins||(b.Plugins={}),b.Angular=a()}}(function(){return function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};b[g][0].call(k.exports,function(a){var c=b[g][1][a];return e(c?c:a)},k,k.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;g ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function z(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&i(b))for(c=b.split(/\s+/),f=0;f ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function A(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&i(b))for(c=b.split(/\s+/),f=0;f ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function z(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&i(b))for(c=b.split(/\s+/),f=0;f ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function A(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&i(b))for(c=b.split(/\s+/),f=0;f":"anonymous component")+(a._isVue&&a.$options.__file?" at "+a.$options.__file:"")}function e(a,b){if(b=b||window.Vue,b&&b.config){var c=b.config.errorHandler;b.config.errorHandler=function(b,e,f){var g={};"[object Object]"===Object.prototype.toString.call(e)&&(g.componentName=d(e),g.propsData=e.$options.propsData),"undefined"!=typeof f&&(g.lifecycleHook=f),a.captureException(b,{extra:g}),"function"==typeof c&&c.call(this,b,e,f)}}}b.exports=e},{}]},{},[1])(1)}); //# sourceMappingURL=vue.min.js.map \ No newline at end of file diff --git a/dist/raven.js b/dist/raven.js index ddd6d30b10e5..dab00f09496a 100644 --- a/dist/raven.js +++ b/dist/raven.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.22.4 (114c958) | github.com/getsentry/raven-js */ +/*! Raven.js 3.23.0 (0516d9e) | github.com/getsentry/raven-js */ /* * Includes TraceKit @@ -147,6 +147,7 @@ function Raven() { includePaths: [], headers: null, collectWindowErrors: true, + captureUnhandledRejections: true, maxMessageLength: 0, // By default, truncates URL values to 250 chars @@ -199,7 +200,7 @@ Raven.prototype = { // webpack (using a build step causes webpack #1617). Grunt verifies that // this value matches package.json during build. // See: https://github.com/getsentry/raven-js/issues/465 - VERSION: '3.22.4', + VERSION: '3.23.0', debug: false, @@ -305,6 +306,10 @@ Raven.prototype = { self._handleOnErrorStackInfo.apply(self, arguments); }); + if (self._globalOptions.captureUnhandledRejections) { + self._attachPromiseRejectionHandler(); + } + self._patchFunctionToString(); if (self._globalOptions.instrument && self._globalOptions.instrument.tryCatch) { @@ -455,14 +460,15 @@ Raven.prototype = { return wrapped; }, - /* - * Uninstalls the global error handler. - * - * @return {Raven} - */ + /** + * Uninstalls the global error handler. + * + * @return {Raven} + */ uninstall: function() { TraceKit.report.uninstall(); + this._detachPromiseRejectionHandler(); this._unpatchFunctionToString(); this._restoreBuiltIns(); this._restoreConsole(); @@ -473,13 +479,47 @@ Raven.prototype = { return this; }, - /* - * Manually capture an exception and send it over to Sentry - * - * @param {error} ex An exception to be logged - * @param {object} options A specific set of options for this error [optional] - * @return {Raven} - */ + /** + * Callback used for `unhandledrejection` event + * + * @param {PromiseRejectionEvent} event An object containing + * promise: the Promise that was rejected + * reason: the value with which the Promise was rejected + * @return void + */ + _promiseRejectionHandler: function(event) { + this._logDebug('debug', 'Raven caught unhandled promise rejection:', event); + this.captureException(event.reason); + }, + + /** + * Installs the global promise rejection handler. + * + * @return {raven} + */ + _attachPromiseRejectionHandler: function() { + this._promiseRejectionHandler = this._promiseRejectionHandler.bind(this); + _window.addEventListener('unhandledrejection', this._promiseRejectionHandler); + return this; + }, + + /** + * Uninstalls the global promise rejection handler. + * + * @return {raven} + */ + _detachPromiseRejectionHandler: function() { + _window.removeEventListener('unhandledrejection', this._promiseRejectionHandler); + return this; + }, + + /** + * Manually capture an exception and send it over to Sentry + * + * @param {error} ex An exception to be logged + * @param {object} options A specific set of options for this error [optional] + * @return {Raven} + */ captureException: function(ex, options) { options = objectMerge({trimHeadFrames: 0}, options ? options : {}); // Cases for sending ex as a message, rather than an exception @@ -2256,6 +2296,10 @@ function supportsReferrerPolicy() { } } +function supportsPromiseRejectionEvent() { + return typeof PromiseRejectionEvent === 'function'; +} + function wrappedCallback(callback) { function dataCallback(data, original) { var normalizedData = callback(data) || data; @@ -2609,6 +2653,7 @@ module.exports = { supportsErrorEvent: supportsErrorEvent, supportsFetch: supportsFetch, supportsReferrerPolicy: supportsReferrerPolicy, + supportsPromiseRejectionEvent: supportsPromiseRejectionEvent, wrappedCallback: wrappedCallback, each: each, objectMerge: objectMerge, diff --git a/dist/raven.min.js b/dist/raven.min.js index 7ca54f33bec6..a71f44dd9d16 100644 --- a/dist/raven.min.js +++ b/dist/raven.min.js @@ -1,3 +1,3 @@ -/*! Raven.js 3.22.4 (114c958) | github.com/getsentry/raven-js */ -!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.Raven=a()}}(function(){return function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};b[g][0].call(k.exports,function(a){var c=b[g][1][a];return e(c?c:a)},k,k.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;gthis.k.maxBreadcrumbs&&this.u.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.r.push([a,b]),this.n&&this.E(),this},setUserContext:function(a){return this.j.user=a,this},setExtraContext:function(a){return this.U("extra",a),this},setTagsContext:function(a){return this.U("tags",a),this},clearContext:function(){return this.j={},this},getContext:function(){return JSON.parse(h(this.j))},setEnvironment:function(a){return this.k.environment=a,this},setRelease:function(a){return this.k.release=a,this},setDataCallback:function(a){var b=this.k.dataCallback;return this.k.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.k.breadcrumbCallback;return this.k.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.k.shouldSendCallback;return this.k.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.k.transport=a,this},lastException:function(){return this.d},lastEventId:function(){return this.f},isSetup:function(){return!!this.a&&(!!this.g||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.z("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=K.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(L){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new i("Missing eventId");var c=a.dsn||this.G;if(!c)throw new i("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.j.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.I(this.F(c)),h=L.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(L.head||L.body).appendChild(h)}},K:function(){var a=this;this.m+=1,setTimeout(function(){a.m-=1})},V:function(a,b){var c,d;if(this.b){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),L.createEvent?(c=L.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=L.createEventObject(),c.eventType=a);for(d in b)w(b,d)&&(c[d]=b[d]);if(L.createEvent)L.dispatchEvent(c);else try{L.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},W:function(a){var b=this;return function(c){if(b.X=null,b.v!==c){b.v=c;var d;try{d=A(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},Y:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.X;g||a.W("input")(c),clearTimeout(g),a.X=setTimeout(function(){a.X=null},b)}}},Z:function(a,b){var c=D(this.w.href),d=D(b),e=D(a);this.x=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},B:function(){var a=this;a.$=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.L?a.$.apply(this.N,arguments):a.$.apply(this,arguments)}},O:function(){this.$&&(Function.prototype.toString=this.$)},C:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.Z(b.x,c+""),a.apply(this,arguments)}};E(history,"pushState",j,d),E(history,"replaceState",j,d)}if(c.console&&"console"in K&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};s(["debug","info","warn","error","log"],function(a,b){H(console,b,k)})}},P:function(){for(var a;this.t.length;){a=this.t.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},Q:function(){for(var a in this.q)this.p[a]=this.q[a]},E:function(){var a=this;s(this.r,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},F:function(a){var b=J.exec(a),c={},d=7;try{for(;d--;)c[I[d]]=b[d]||""}catch(e){throw new i("Invalid DSN: "+a)}if(c.pass&&!this.k.allowSecretKey)throw new i("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},I:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},A:function(){this.m||this.R.apply(this,arguments)},R:function(a,b){var c=this.S(a,b);this.V("handle",{stackInfo:a,options:b}),this.aa(a.name,a.message,a.url,a.lineno,c,b)},S:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(s(a.stack,function(b,e){var f=c.ba(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.u,0)}),this.j.user&&(a.user=this.j.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||r(a[b]))&&delete a[b]}),o(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!r(a)&&(!o(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.ha()?void this.z("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function z(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&i(b))for(c=b.split(/\s+/),f=0;f=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function k(a,b){var c=null;if(!b||f.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(h.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,g,h){var l=null,m=e.isErrorEvent(h)?h.error:h,n=e.isErrorEvent(a)?a.message:a;if(v)f.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&e.isError(m))l=f.computeStackTrace(m),k(l,!0);else{var p,r={url:b,line:c,column:g},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(j);p&&(s=p[1],n=p[2])}r.func=i,l={name:s,message:n,url:d(),stack:[r]},k(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=g.onerror,g.onerror=l,r=!0)}function n(){r&&(g.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,k.apply(null,[a,!1].concat(b))}function p(a,b){var c=h.call(arguments,1);if(v){if(u===a)return;o()}var d=f.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),f.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,e,f=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,g=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,h=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,j=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,k=/\((\S*)(?::(\d+))(?::(\d+))\)/,l=a.stack.split("\n"),m=[],n=(/^(.*) is undefined$/.exec(a.message),0),o=l.length;n eval")>-1;q&&(b=j.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==n||c[5]||"undefined"==typeof a.columnNumber||(m[0].column=a.columnNumber+1),e={url:c[3],func:c[1]||i,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}!e.func&&e.line&&(e.func=i),m.push(e)}return m.length?{name:a.name,message:a.message,url:d(),stack:m}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=i),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,g){for(var h,j,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==e&&o!==f.report){if(j={url:null,func:i,line:null,column:null},o.name?j.func=o.name:(h=k.exec(o.toString()))&&(j.func=h[1]),"undefined"==typeof j.func)try{j.func=h.input.substring(0,h.input.indexOf("{"))}catch(p){}m[""+o]?n=!0:m[""+o]=!0,l.push(j)}g&&l.splice(0,g);var q={name:a.name,message:a.message,url:d(),stack:l};return b(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),q}function e(b,e){var g=null;e=null==e?0:+e;try{if(g=a(b))return g}catch(h){if(f.debug)throw h}try{if(g=c(b,e+1))return g}catch(h){if(f.debug)throw h}return{name:b.name,message:b.message,url:d()}}return e.augmentStackTraceWithInitialElement=b,e.computeStackTraceFromStackProp=a,e}(),b.exports=f}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{5:5}],7:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}]},{},[4])(4)}); +/*! Raven.js 3.23.0 (0516d9e) | github.com/getsentry/raven-js */ +!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.Raven=a()}}(function(){return function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};b[g][0].call(k.exports,function(a){var c=b[g][1][a];return e(c?c:a)},k,k.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;gthis.k.maxBreadcrumbs&&this.u.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.r.push([a,b]),this.n&&this.F(),this},setUserContext:function(a){return this.j.user=a,this},setExtraContext:function(a){return this.X("extra",a),this},setTagsContext:function(a){return this.X("tags",a),this},clearContext:function(){return this.j={},this},getContext:function(){return JSON.parse(h(this.j))},setEnvironment:function(a){return this.k.environment=a,this},setRelease:function(a){return this.k.release=a,this},setDataCallback:function(a){var b=this.k.dataCallback;return this.k.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.k.breadcrumbCallback;return this.k.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.k.shouldSendCallback;return this.k.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.k.transport=a,this},lastException:function(){return this.d},lastEventId:function(){return this.f},isSetup:function(){return!!this.a&&(!!this.g||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.z("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=K.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(L){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new i("Missing eventId");var c=a.dsn||this.H;if(!c)throw new i("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.j.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.J(this.G(c)),h=L.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(L.head||L.body).appendChild(h)}},L:function(){var a=this;this.m+=1,setTimeout(function(){a.m-=1})},Y:function(a,b){var c,d;if(this.b){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),L.createEvent?(c=L.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=L.createEventObject(),c.eventType=a);for(d in b)w(b,d)&&(c[d]=b[d]);if(L.createEvent)L.dispatchEvent(c);else try{L.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},Z:function(a){var b=this;return function(c){if(b.$=null,b.v!==c){b.v=c;var d;try{d=A(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},_:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.$;g||a.Z("input")(c),clearTimeout(g),a.$=setTimeout(function(){a.$=null},b)}}},aa:function(a,b){var c=D(this.w.href),d=D(b),e=D(a);this.x=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},C:function(){var a=this;a.ba=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.M?a.ba.apply(this.O,arguments):a.ba.apply(this,arguments)}},Q:function(){this.ba&&(Function.prototype.toString=this.ba)},D:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.aa(b.x,c+""),a.apply(this,arguments)}};E(history,"pushState",j,d),E(history,"replaceState",j,d)}if(c.console&&"console"in K&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};s(["debug","info","warn","error","log"],function(a,b){H(console,b,k)})}},R:function(){for(var a;this.t.length;){a=this.t.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},S:function(){for(var a in this.q)this.p[a]=this.q[a]},F:function(){var a=this;s(this.r,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},G:function(a){var b=J.exec(a),c={},d=7;try{for(;d--;)c[I[d]]=b[d]||""}catch(e){throw new i("Invalid DSN: "+a)}if(c.pass&&!this.k.allowSecretKey)throw new i("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},J:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},A:function(){this.m||this.U.apply(this,arguments)},U:function(a,b){var c=this.V(a,b);this.Y("handle",{stackInfo:a,options:b}),this.da(a.name,a.message,a.url,a.lineno,c,b)},V:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(s(a.stack,function(b,e){var f=c.ea(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.u,0)}),this.j.user&&(a.user=this.j.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||r(a[b]))&&delete a[b]}),o(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!r(a)&&(!o(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.ka()?void this.z("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function A(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&i(b))for(c=b.split(/\s+/),f=0;f=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function k(a,b){var c=null;if(!b||f.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(h.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,g,h){var l=null,m=e.isErrorEvent(h)?h.error:h,n=e.isErrorEvent(a)?a.message:a;if(v)f.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&e.isError(m))l=f.computeStackTrace(m),k(l,!0);else{var p,r={url:b,line:c,column:g},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(j);p&&(s=p[1],n=p[2])}r.func=i,l={name:s,message:n,url:d(),stack:[r]},k(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=g.onerror,g.onerror=l,r=!0)}function n(){r&&(g.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,k.apply(null,[a,!1].concat(b))}function p(a,b){var c=h.call(arguments,1);if(v){if(u===a)return;o()}var d=f.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),f.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,e,f=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,g=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,h=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,j=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,k=/\((\S*)(?::(\d+))(?::(\d+))\)/,l=a.stack.split("\n"),m=[],n=(/^(.*) is undefined$/.exec(a.message),0),o=l.length;n eval")>-1;q&&(b=j.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==n||c[5]||"undefined"==typeof a.columnNumber||(m[0].column=a.columnNumber+1),e={url:c[3],func:c[1]||i,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}!e.func&&e.line&&(e.func=i),m.push(e)}return m.length?{name:a.name,message:a.message,url:d(),stack:m}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=i),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,g){for(var h,j,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==e&&o!==f.report){if(j={url:null,func:i,line:null,column:null},o.name?j.func=o.name:(h=k.exec(o.toString()))&&(j.func=h[1]),"undefined"==typeof j.func)try{j.func=h.input.substring(0,h.input.indexOf("{"))}catch(p){}m[""+o]?n=!0:m[""+o]=!0,l.push(j)}g&&l.splice(0,g);var q={name:a.name,message:a.message,url:d(),stack:l};return b(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),q}function e(b,e){var g=null;e=null==e?0:+e;try{if(g=a(b))return g}catch(h){if(f.debug)throw h}try{if(g=c(b,e+1))return g}catch(h){if(f.debug)throw h}return{name:b.name,message:b.message,url:d()}}return e.augmentStackTraceWithInitialElement=b,e.computeStackTraceFromStackProp=a,e}(),b.exports=f}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{5:5}],7:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}]},{},[4])(4)}); //# sourceMappingURL=raven.min.js.map \ No newline at end of file diff --git a/dist/raven.min.js.map b/dist/raven.min.js.map index 80db3350555e..8b32cc62e706 100644 --- a/dist/raven.min.js.map +++ b/dist/raven.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","RavenConfigError","message","name","prototype","constructor","2","utils","wrapMethod","console","level","callback","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","msg","safeJoin","data","logger","extra","Function","apply","5","3","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","isError","isObject","isErrorEvent","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","wrapConsoleMethod","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","config","dsn","options","_logDebug","globalOptions","key","value","setDSN","push","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","toString","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","substr","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","context","func","undefined","wrap","_before","wrapped","deep","_ignoreNextOnError","captureException","__raven__","__raven_wrapper__","property","__orig__","uninstall","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","ex","trimHeadFrames","isNotError","isNotErrorEvent","isErrorEventWithoutError","error","captureMessage","stacktrace","stack","computeStackTrace","_handleStackInfo","ex1","test","initialCall","fileurl","url","fingerprint","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","addPlugin","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","setDataCallback","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","K","setTimeout","V","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","W","evtName","_keypressTimeout","target","category","Y","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","Z","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","B","_originalFunctionToString","O","C","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","type","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","D","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","addEventListener","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","_","P","builtin","Q","E","installer","concat","F","str","m","exec","allowSecretKey","I","port","A","R","stackInfo","_triggerEvent","_processException","lineno","S","frame","_normalizeFrame","in_app","ba","stackInfoUrl","normalized","filename","line","colno","column","function","aa","prefixedMessage","exception","values","culprit","ca","request","Referer","breadcrumbs","_trimBreadcrumbs","da","urlProp","urlProps","ea","httpData","userAgent","User-Agent","referrer","y","_backoffDuration","_backoffStart","ha","ia","current","last","ja","_shouldBackoff","retry","get","getResponseHeader","parseInt","T","baseData","project","platform","_getHttpData","serverName","server_name","Object","keys","forEach","random","_sendProcessedPayload","la","ka","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","ma","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","onerror","open","setRequestHeader","send","na","hash","evaluated","z","U","setUser","setReleaseContext","6","7","4","RavenConstructor","_Raven","noConflict","what","supportsErrorEvent","isPlainObject","ErrorEvent","Headers","Response","wrappedCallback","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","getLocationHref","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","initial","unshift","partial","computeStackTraceByWalkingCallerChain","depth","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file +{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","RavenConfigError","message","name","prototype","constructor","2","utils","wrapMethod","console","level","callback","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","msg","safeJoin","data","logger","extra","Function","apply","5","3","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","isError","isObject","isErrorEvent","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","wrapConsoleMethod","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","config","dsn","options","_logDebug","globalOptions","key","value","setDSN","push","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","toString","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","substr","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","context","func","undefined","wrap","_before","wrapped","deep","_ignoreNextOnError","captureException","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","T","event","reason","B","_promiseRejectionHandler","bind","addEventListener","P","removeEventListener","ex","trimHeadFrames","isNotError","isNotErrorEvent","isErrorEventWithoutError","error","captureMessage","stacktrace","stack","computeStackTrace","_handleStackInfo","ex1","test","initialCall","fileurl","url","fingerprint","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","addPlugin","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","setDataCallback","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","L","setTimeout","Y","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","Z","evtName","_keypressTimeout","target","category","_","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","aa","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","C","_originalFunctionToString","Q","D","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","type","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","E","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","R","builtin","S","F","installer","concat","G","str","m","exec","allowSecretKey","J","port","A","U","stackInfo","_triggerEvent","_processException","lineno","V","frame","_normalizeFrame","in_app","ea","stackInfoUrl","normalized","filename","line","colno","column","function","da","prefixedMessage","exception","values","culprit","fa","request","Referer","breadcrumbs","_trimBreadcrumbs","ga","urlProp","urlProps","ha","httpData","userAgent","User-Agent","referrer","y","_backoffDuration","_backoffStart","ka","la","current","last","ma","_shouldBackoff","retry","get","getResponseHeader","parseInt","W","baseData","project","platform","_getHttpData","serverName","server_name","Object","keys","forEach","random","_sendProcessedPayload","oa","na","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","pa","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","onerror","open","setRequestHeader","send","qa","hash","evaluated","z","X","setUser","setReleaseContext","6","7","4","RavenConstructor","_Raven","noConflict","what","supportsErrorEvent","isPlainObject","ErrorEvent","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","wrappedCallback","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","getLocationHref","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","initial","unshift","partial","computeStackTraceByWalkingCallerChain","depth","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file diff --git a/dist/sri.json b/dist/sri.json index 86c66fc1f632..5346ed42ea89 100644 --- a/dist/sri.json +++ b/dist/sri.json @@ -1,20 +1,20 @@ { "@dist/raven.js": { "hashes": { - "sha256": "+L61BDMaxkLMtaAUJI6mvsmP00DOYIIWtNl+1i+Y3aA=", - "sha512": "T83F3qr0lcTjMsUlxNWALkMxaQOCxsLYrNEx8m7SXVFh1qTg9cOlhL4SW17ltyinTHI6WzpaIGYcOH+kVCQ51w==" + "sha256": "rEGUJFjbDHQQEotUYUkiKZ0ssMViV8xD1nHbmzPO80k=", + "sha512": "6wCQAHF1Z/2mtwl3lmI09I/H8WpF3p179YQamTJ1DAPyLMPBTs4sNpNqy/j5KG3KIrBWPcBd+RZGB+/Oyb1x0Q==" }, "type": null, - "integrity": "sha256-+L61BDMaxkLMtaAUJI6mvsmP00DOYIIWtNl+1i+Y3aA= sha512-T83F3qr0lcTjMsUlxNWALkMxaQOCxsLYrNEx8m7SXVFh1qTg9cOlhL4SW17ltyinTHI6WzpaIGYcOH+kVCQ51w==", + "integrity": "sha256-rEGUJFjbDHQQEotUYUkiKZ0ssMViV8xD1nHbmzPO80k= sha512-6wCQAHF1Z/2mtwl3lmI09I/H8WpF3p179YQamTJ1DAPyLMPBTs4sNpNqy/j5KG3KIrBWPcBd+RZGB+/Oyb1x0Q==", "path": "dist/raven.js" }, "@dist/raven.min.js": { "hashes": { - "sha256": "oD7SHrzViZXl9xqPbsk+RGgVC2DIRSY0F2uOJjFoj58=", - "sha512": "GACBRIXYbp1Wl99VjGG+MNDfGNWNLCPw216jzhM5nPpOkKpBroMUz15GG7XEuR1JsJbV4bmRcKnqZ3pAPbgl8g==" + "sha256": "C3Unt78h5O/vDKMLAI5A5dNaRu+lWGa4nuo3+lZfEg8=", + "sha512": "hCRLIS7r7YoiDqJds2uH9hZr5XVkf//HpSD3phv7EKTvM+Mxt8ozeFQd5eLioZedIELn9e5OBDDa7ja7fizUqg==" }, "type": null, - "integrity": "sha256-oD7SHrzViZXl9xqPbsk+RGgVC2DIRSY0F2uOJjFoj58= sha512-GACBRIXYbp1Wl99VjGG+MNDfGNWNLCPw216jzhM5nPpOkKpBroMUz15GG7XEuR1JsJbV4bmRcKnqZ3pAPbgl8g==", + "integrity": "sha256-C3Unt78h5O/vDKMLAI5A5dNaRu+lWGa4nuo3+lZfEg8= sha512-hCRLIS7r7YoiDqJds2uH9hZr5XVkf//HpSD3phv7EKTvM+Mxt8ozeFQd5eLioZedIELn9e5OBDDa7ja7fizUqg==", "path": "dist/raven.min.js" } } \ No newline at end of file diff --git a/docs/sentry-doc-config.json b/docs/sentry-doc-config.json index 61ad3a0f5559..31fc0c23b481 100644 --- a/docs/sentry-doc-config.json +++ b/docs/sentry-doc-config.json @@ -75,6 +75,6 @@ } }, "vars": { - "RAVEN_VERSION": "3.22.4" + "RAVEN_VERSION": "3.23.0" } } diff --git a/package.json b/package.json index 318750e2faa8..547ecf5efd2b 100644 --- a/package.json +++ b/package.json @@ -9,7 +9,7 @@ "raven", "sentry" ], - "version": "3.22.4", + "version": "3.23.0", "repository": "git://github.com/getsentry/raven-js.git", "license": "BSD-2-Clause", "homepage": "https://github.com/getsentry/raven-js", diff --git a/src/raven.js b/src/raven.js index 42298403faf3..11d9532b786a 100644 --- a/src/raven.js +++ b/src/raven.js @@ -132,7 +132,7 @@ Raven.prototype = { // webpack (using a build step causes webpack #1617). Grunt verifies that // this value matches package.json during build. // See: https://github.com/getsentry/raven-js/issues/465 - VERSION: '3.22.4', + VERSION: '3.23.0', debug: false, diff --git a/test/raven.test.js b/test/raven.test.js index 297b3017e5c7..eb69c593decb 100644 --- a/test/raven.test.js +++ b/test/raven.test.js @@ -1349,7 +1349,7 @@ describe('globals', function() { extra: {'session:duration': 100} }); assert.deepEqual(opts.auth, { - sentry_client: 'raven-js/3.22.4', + sentry_client: 'raven-js/3.23.0', sentry_key: 'abc', sentry_version: '7' }); @@ -1396,7 +1396,7 @@ describe('globals', function() { extra: {'session:duration': 100} }); assert.deepEqual(opts.auth, { - sentry_client: 'raven-js/3.22.4', + sentry_client: 'raven-js/3.23.0', sentry_key: 'abc', sentry_secret: 'def', sentry_version: '7' diff --git a/typescript/raven.d.ts b/typescript/raven.d.ts index 83767513711d..6f9746098114 100644 --- a/typescript/raven.d.ts +++ b/typescript/raven.d.ts @@ -6,143 +6,145 @@ declare var Raven: Raven.RavenStatic; export = Raven; -declare module Raven { - interface RavenOptions { - /** The log level associated with this event. Default: error */ - level?: LogLevel; +declare namespace Raven { + interface RavenOptions { + /** The log level associated with this event. Default: error */ + level?: LogLevel; - /** The name of the logger used by Sentry. Default: javascript */ - logger?: string; + /** The name of the logger used by Sentry. Default: javascript */ + logger?: string; - /** The environment of the application you are monitoring with Sentry */ - environment?: string; + /** The environment of the application you are monitoring with Sentry */ + environment?: string; - /** The release version of the application you are monitoring with Sentry */ - release?: string; + /** The release version of the application you are monitoring with Sentry */ + release?: string; - /** The name of the server or device that the client is running on */ - serverName?: string; + /** The name of the server or device that the client is running on */ + serverName?: string; - /** List of messages to be filtered out before being sent to Sentry. */ - ignoreErrors?: (RegExp | string)[]; + /** List of messages to be filtered out before being sent to Sentry. */ + ignoreErrors?: (RegExp | string)[]; - /** Similar to ignoreErrors, but will ignore errors from whole urls patching a regex pattern. */ - ignoreUrls?: (RegExp | string)[]; + /** Similar to ignoreErrors, but will ignore errors from whole urls patching a regex pattern. */ + ignoreUrls?: (RegExp | string)[]; - /** The inverse of ignoreUrls. Only report errors from whole urls matching a regex pattern. */ - whitelistUrls?: (RegExp | string)[]; + /** The inverse of ignoreUrls. Only report errors from whole urls matching a regex pattern. */ + whitelistUrls?: (RegExp | string)[]; - /** An array of regex patterns to indicate which urls are a part of your app. */ - includePaths?: (RegExp | string)[]; + /** An array of regex patterns to indicate which urls are a part of your app. */ + includePaths?: (RegExp | string)[]; - /** Additional data to be tagged onto the error. */ - tags?: { - [id: string]: string; - }; + /** Additional data to be tagged onto the error. */ + tags?: { + [id: string]: string; + }; - /** set to true to get the stack trace of your message */ - stacktrace?: boolean; + /** set to true to get the stack trace of your message */ + stacktrace?: boolean; - extra?: any; + extra?: any; - /** In some cases you may see issues where Sentry groups multiple events together when they should be separate entities. In other cases, Sentry simply doesn’t group events together because they’re so sporadic that they never look the same. */ - fingerprint?: string[]; + /** In some cases you may see issues where Sentry groups multiple events together when they should be separate entities. In other cases, Sentry simply doesn’t group events together because they’re so sporadic that they never look the same. */ + fingerprint?: string[]; - /** A function which allows mutation of the data payload right before being sent to Sentry */ - dataCallback?: (data: any) => any; + /** A function which allows mutation of the data payload right before being sent to Sentry */ + dataCallback?: (data: any) => any; - /** A callback function that allows you to apply your own filters to determine if the message should be sent to Sentry. */ - shouldSendCallback?: (data: any) => boolean; + /** A callback function that allows you to apply your own filters to determine if the message should be sent to Sentry. */ + shouldSendCallback?: (data: any) => boolean; - /** By default, Raven does not truncate messages. If you need to truncate characters for whatever reason, you may set this to limit the length. */ - maxMessageLength?: number; + /** By default, Raven does not truncate messages. If you need to truncate characters for whatever reason, you may set this to limit the length. */ + maxMessageLength?: number; - /** By default, Raven will truncate URLs as they appear in breadcrumbs and other meta interfaces to 250 characters in order to minimize bytes over the wire. This does *not* affect URLs in stack traces. */ - maxUrlLength?: number; + /** By default, Raven will truncate URLs as they appear in breadcrumbs and other meta interfaces to 250 characters in order to minimize bytes over the wire. This does *not* affect URLs in stack traces. */ + maxUrlLength?: number; - /** Override the default HTTP data transport handler. */ - transport?: (options: RavenTransportOptions) => void; + /** By default, Raven captures all unhandled promise rejections using standard `unhandledrejection` event. If you want to disable this behaviour, set this option to `false` */ + captureUnhandledRejections?: boolean; - /** Append headers to the fetch or XMLHttpRequest request. Should be in a form of hash, were value can be string or function */ - headers?: { - [key: string]: (string | Function); - }; + /** Override the default HTTP data transport handler. */ + transport?: (options: RavenTransportOptions) => void; - /** `fetch` init parameters */ - fetchParameters?: { - [key: string]: (string | Function); - }; + /** Append headers to the fetch or XMLHttpRequest request. Should be in a form of hash, were value can be string or function */ + headers?: { + [key: string]: string | Function; + }; - /** Allow use of private/secretKey. */ - allowSecretKey?: boolean; + /** `fetch` init parameters */ + fetchParameters?: { + [key: string]: string | Function; + }; - /** Enables/disables instrumentation of globals. */ - instrument?: boolean | RavenInstrumentationOptions; + /** Allow use of private/secretKey. */ + allowSecretKey?: boolean; - /** Enables/disables automatic collection of breadcrumbs. */ - autoBreadcrumbs?: boolean | AutoBreadcrumbOptions; + /** Enables/disables instrumentation of globals. */ + instrument?: boolean | RavenInstrumentationOptions; - /** By default, Raven captures as many as 100 breadcrumb entries. If you find this too noisy, you can reduce this number by setting maxBreadcrumbs. Note that this number cannot be set higher than the default of 100. */ - maxBreadcrumbs?: number; + /** Enables/disables automatic collection of breadcrumbs. */ + autoBreadcrumbs?: boolean | AutoBreadcrumbOptions; - /** A function that allows filtering or mutating breadcrumb payloads. Return false to throw away the breadcrumb. */ - breadcrumbCallback?: (data: any) => any; + /** By default, Raven captures as many as 100 breadcrumb entries. If you find this too noisy, you can reduce this number by setting maxBreadcrumbs. Note that this number cannot be set higher than the default of 100. */ + maxBreadcrumbs?: number; - /** - * A sampling rate to apply to events. A value of 0.0 will send no events, and a value of 1.0 will send all events (default). - */ - sampleRate?: number; + /** A function that allows filtering or mutating breadcrumb payloads. Return false to throw away the breadcrumb. */ + breadcrumbCallback?: (data: any) => any; - /** - * By default, Raven.js attempts to suppress duplicate captured errors and messages that occur back-to-back. - * Such events are often triggered by rogue code (e.g. from a `setInterval` callback in a browser extension), - * are not actionable, and eat up your event quota. - */ - allowDuplicates?: boolean; + /** + * A sampling rate to apply to events. A value of 0.0 will send no events, and a value of 1.0 will send all events (default). + */ + sampleRate?: number; - /** - * If set to true, Raven.js outputs some light debugging information onto the console. - */ - debug?: boolean; - } + /** + * By default, Raven.js attempts to suppress duplicate captured errors and messages that occur back-to-back. + * Such events are often triggered by rogue code (e.g. from a `setInterval` callback in a browser extension), + * are not actionable, and eat up your event quota. + */ + allowDuplicates?: boolean; - interface RavenInstrumentationOptions { - tryCatch?: boolean; - } + /** + * If set to true, Raven.js outputs some light debugging information onto the console. + */ + debug?: boolean; + } - interface RavenStatic { + interface RavenInstrumentationOptions { + tryCatch?: boolean; + } - /** Raven.js version. */ - VERSION: string; + interface RavenStatic { + /** Raven.js version. */ + VERSION: string; - Plugins: { [id: string]: RavenPlugin }; + Plugins: {[id: string]: RavenPlugin}; - /* + /* * Allow Raven to be configured as soon as it is loaded * It uses a global RavenConfig = {dsn: '...', config: {}} * * @return undefined */ - afterLoad(): void; + afterLoad(): void; - /* + /* * Allow multiple versions of Raven to be installed. * Strip Raven from the global context and returns the instance. * * @return {Raven} */ - noConflict(): RavenStatic; + noConflict(): RavenStatic; - /* + /* * Configure Raven with a DSN and extra options * * @param {string} dsn The public Sentry DSN * @param {object} options Optional set of global options [optional] * @return {Raven} */ - config(dsn: string, options?: RavenOptions): RavenStatic; + config(dsn: string, options?: RavenOptions): RavenStatic; - /* + /* * Installs a global window.onerror error handler * to capture and report uncaught exceptions. * At this point, install() is required to be called due @@ -150,16 +152,16 @@ declare module Raven { * * @return {Raven} */ - install(): RavenStatic; + install(): RavenStatic; - /* + /* * Adds a plugin to Raven * * @return {Raven} */ - addPlugin(plugin: RavenPlugin, ...pluginArgs: any[]): RavenStatic; + addPlugin(plugin: RavenPlugin, ...pluginArgs: any[]): RavenStatic; - /* + /* * Wrap code within a context so Raven can capture errors * reliably across domains that is executed immediately. * @@ -167,157 +169,162 @@ declare module Raven { * @param {function} func The callback to be immediately executed within the context * @param {array} args An array of arguments to be called with the callback [optional] */ - context(func: Function, ...args: any[]): void; - context(options: RavenOptions, func: Function, ...args: any[]): void; + context(func: Function, ...args: any[]): void; + context(options: RavenOptions, func: Function, ...args: any[]): void; - /* + /* * Wrap code within a context and returns back a new function to be executed * * @param {object} options A specific set of options for this context [optional] * @param {function} func The function to be wrapped in a new context * @return {function} The newly wrapped functions with a context */ - wrap(func: Function): Function; - wrap(options: RavenOptions, func: Function): Function; - wrap(func: T): T; - wrap(options: RavenOptions, func: T): T; + wrap(func: Function): Function; + wrap(options: RavenOptions, func: Function): Function; + wrap(func: T): T; + wrap(options: RavenOptions, func: T): T; - /* + /* * Uninstalls the global error handler. * * @return {Raven} */ - uninstall(): RavenStatic; + uninstall(): RavenStatic; - /* + /* * Manually capture an exception and send it over to Sentry * * @param {error|ErrorEvent|string} ex An exception to be logged * @param {object} options A specific set of options for this error [optional] * @return {Raven} */ - captureException(ex: Error | ErrorEvent | string, options?: RavenOptions): RavenStatic; + captureException( + ex: Error | ErrorEvent | string, + options?: RavenOptions + ): RavenStatic; - /* + /* * Manually send a message to Sentry * * @param {string} msg A plain message to be captured in Sentry * @param {object} options A specific set of options for this message [optional] * @return {Raven} */ - captureMessage(msg: string, options?: RavenOptions): RavenStatic; + captureMessage(msg: string, options?: RavenOptions): RavenStatic; - /** Log a breadcrumb */ - captureBreadcrumb(crumb: Breadcrumb): RavenStatic; + /** Log a breadcrumb */ + captureBreadcrumb(crumb: Breadcrumb): RavenStatic; - /* + /* * Set/Clear a user to be sent along with the payload. * * @param {object} user An object representing user data [optional] * If user is undefined, the current user context will be removed. * @return {Raven} */ - setUserContext(user?: { - [key: string]: string | number | boolean | null | void - }): RavenStatic; + setUserContext(user?: { + [key: string]: string | number | boolean | null | void; + }): RavenStatic; - /* + /* * Merge extra attributes to be sent along with the payload. * * @param {object} context A set of data to be merged with the current extra context data [optional] * If context is undefined, the current extra context data will be removed. * @return {Raven} */ - setExtraContext(context?: Object): RavenStatic; + setExtraContext(context?: Object): RavenStatic; - /* + /* * Merge tags to be sent along with the payload. * * @param {object} tags A set of data to be merged with the current tag context data [optional] * If tags is undefined, the current tag context data will be removed. * @return {Raven} */ - setTagsContext(tags?: Object): RavenStatic; + setTagsContext(tags?: Object): RavenStatic; - /** Clear all of the context. */ - clearContext(): RavenStatic; + /** Clear all of the context. */ + clearContext(): RavenStatic; - /** Get a copy of the current context. This cannot be mutated.*/ - getContext(): Object; + /** Get a copy of the current context. This cannot be mutated.*/ + getContext(): Object; - /** Override the default HTTP data transport handler. */ - setTransport(transportFunction: (options: RavenTransportOptions) => void): RavenStatic; + /** Override the default HTTP data transport handler. */ + setTransport( + transportFunction: (options: RavenTransportOptions) => void + ): RavenStatic; - /** Set environment of application */ - setEnvironment(environment: string): RavenStatic; + /** Set environment of application */ + setEnvironment(environment: string): RavenStatic; - /** Set release version of application */ - setRelease(release: string): RavenStatic; + /** Set release version of application */ + setRelease(release: string): RavenStatic; - /** Get the latest raw exception that was captured by Raven.*/ - lastException(): Error; + /** Get the latest raw exception that was captured by Raven.*/ + lastException(): Error; - /** An event id is a globally unique id for the event that was just sent. This event id can be used to find the exact event from within Sentry. */ - lastEventId(): string; + /** An event id is a globally unique id for the event that was just sent. This event id can be used to find the exact event from within Sentry. */ + lastEventId(): string; - /** If you need to conditionally check if raven needs to be initialized or not, you can use the isSetup function. It will return true if Raven is already initialized. */ - isSetup(): boolean; + /** If you need to conditionally check if raven needs to be initialized or not, you can use the isSetup function. It will return true if Raven is already initialized. */ + isSetup(): boolean; - /** Specify a function that allows mutation of the data payload right before being sent to Sentry. */ - setDataCallback(callback?: RavenCallback): RavenStatic; + /** Specify a function that allows mutation of the data payload right before being sent to Sentry. */ + setDataCallback(callback?: RavenCallback): RavenStatic; - /** Specify a callback function that allows you to mutate or filter breadcrumbs when they are captured. */ - setBreadcrumbCallback(callback?: RavenCallback): RavenStatic; + /** Specify a callback function that allows you to mutate or filter breadcrumbs when they are captured. */ + setBreadcrumbCallback(callback?: RavenCallback): RavenStatic; - /** Specify a callback function that allows you to apply your own filters to determine if the message should be sent to Sentry. */ - setShouldSendCallback(callback?: RavenCallback): RavenStatic; + /** Specify a callback function that allows you to apply your own filters to determine if the message should be sent to Sentry. */ + setShouldSendCallback(callback?: RavenCallback): RavenStatic; - /** Show Sentry user feedback dialog */ - showReportDialog(options?: Object): void; + /** Show Sentry user feedback dialog */ + showReportDialog(options?: Object): void; - /* + /* * Configure Raven DSN * * @param {string} dsn The public Sentry DSN */ - setDSN(dsn: string): void; - } - - type RavenCallback = (data: any, orig?: (data: any) => any) => any | void; - - interface RavenTransportOptions { - url: string; - data: any; - auth: { - sentry_version: string; - sentry_client: string; - sentry_key: string; - }; - onSuccess(): void; - onError(error: Error & { request?: XMLHttpRequest }): void; - } - - interface RavenPlugin { - (raven: RavenStatic, ...args: any[]): RavenStatic; - } - - interface Breadcrumb { - message?: string; - category?: string; - level?: LogLevel; - data?: any; - type?: BreadcrumbType - } - - type BreadcrumbType = "navigation" | "http"; - - interface AutoBreadcrumbOptions { - xhr?: boolean; - console?: boolean; - dom?: boolean; - location?: boolean; - sentry?: boolean; - } - - type LogLevel = "critical" | "error" | "warning" | "info" | "debug" | "warn" | "log"; + setDSN(dsn: string): void; + } + + type RavenCallback = (data: any, orig?: (data: any) => any) => any | void; + + interface RavenTransportOptions { + url: string; + data: any; + auth: { + sentry_version: string; + sentry_client: string; + sentry_key: string; + }; + onSuccess(): void; + onError(error: Error & {request?: XMLHttpRequest}): void; + } + + interface RavenPlugin { + (raven: RavenStatic, ...args: any[]): RavenStatic; + } + + interface Breadcrumb { + message?: string; + category?: string; + level?: LogLevel; + data?: any; + type?: BreadcrumbType; + } + + type BreadcrumbType = 'navigation' | 'http'; + + interface AutoBreadcrumbOptions { + xhr?: boolean; + console?: boolean; + dom?: boolean; + location?: boolean; + sentry?: boolean; + } + + type LogLevel = 'critical' | 'error' | 'warning' | 'info' | 'debug' | 'warn' | 'log'; } From 84edddc3d8eeea284042f783d2ef91a7fe43a632 Mon Sep 17 00:00:00 2001 From: Max Bittker Date: Fri, 2 Mar 2018 11:23:54 -0800 Subject: [PATCH 18/75] fix: window defensiveness with promise handler (#1244) --- src/raven.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/raven.js b/src/raven.js index 11d9532b786a..c43abeeab5f2 100644 --- a/src/raven.js +++ b/src/raven.js @@ -431,7 +431,7 @@ Raven.prototype = { */ _attachPromiseRejectionHandler: function() { this._promiseRejectionHandler = this._promiseRejectionHandler.bind(this); - _window.addEventListener('unhandledrejection', this._promiseRejectionHandler); + _window.addEventListener && _window.addEventListener('unhandledrejection', this._promiseRejectionHandler); return this; }, @@ -441,7 +441,7 @@ Raven.prototype = { * @return {raven} */ _detachPromiseRejectionHandler: function() { - _window.removeEventListener('unhandledrejection', this._promiseRejectionHandler); + _window.removeEventListener && _window.removeEventListener('unhandledrejection', this._promiseRejectionHandler); return this; }, From c2b377e7a254264fd4a1fe328e4e3cfc9e245570 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kamil=20Og=C3=B3rek?= Date: Fri, 2 Mar 2018 20:25:21 +0100 Subject: [PATCH 19/75] 3.23.1 --- CHANGELOG.md | 4 ++++ bower.json | 2 +- dist/plugins/angular.js | 2 +- dist/plugins/angular.min.js | 2 +- dist/plugins/console.js | 2 +- dist/plugins/console.min.js | 2 +- dist/plugins/ember.js | 2 +- dist/plugins/ember.min.js | 2 +- dist/plugins/require.js | 2 +- dist/plugins/require.min.js | 2 +- dist/plugins/vue.js | 2 +- dist/plugins/vue.min.js | 2 +- dist/raven.js | 8 ++++---- dist/raven.min.js | 4 ++-- dist/raven.min.js.map | 2 +- dist/sri.json | 12 ++++++------ docs/sentry-doc-config.json | 2 +- package.json | 2 +- src/raven.js | 8 +++++--- test/raven.test.js | 4 ++-- 20 files changed, 37 insertions(+), 31 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 2dbf3591870a..f2a755a1d069 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,9 @@ # Changelog +## 3.23.1 + +* BUGFIX: Check if `addEventListener` and `removeEventListener` are present before calling them + ## 3.23.0 **NOTE**: diff --git a/bower.json b/bower.json index f68b7a78f98e..bf496c39d70d 100644 --- a/bower.json +++ b/bower.json @@ -1,6 +1,6 @@ { "name": "raven-js", - "version": "3.23.0", + "version": "3.23.1", "dependencies": {}, "main": "dist/raven.js", "ignore": [ diff --git a/dist/plugins/angular.js b/dist/plugins/angular.js index 9e5dcea33fe4..d011caafaa0b 100644 --- a/dist/plugins/angular.js +++ b/dist/plugins/angular.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.23.0 (0516d9e) | github.com/getsentry/raven-js */ +/*! Raven.js 3.23.1 (84edddc) | github.com/getsentry/raven-js */ /* * Includes TraceKit diff --git a/dist/plugins/angular.min.js b/dist/plugins/angular.min.js index e52c9a43298c..28c39a5776bd 100644 --- a/dist/plugins/angular.min.js +++ b/dist/plugins/angular.min.js @@ -1,3 +1,3 @@ -/*! Raven.js 3.23.0 (0516d9e) | github.com/getsentry/raven-js */ +/*! Raven.js 3.23.1 (84edddc) | github.com/getsentry/raven-js */ !function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b=b.Raven||(b.Raven={}),b=b.Plugins||(b.Plugins={}),b.Angular=a()}}(function(){return function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};b[g][0].call(k.exports,function(a){var c=b[g][1][a];return e(c?c:a)},k,k.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;g ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function A(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&i(b))for(c=b.split(/\s+/),f=0;f ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function A(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&i(b))for(c=b.split(/\s+/),f=0;f":"anonymous component")+(a._isVue&&a.$options.__file?" at "+a.$options.__file:"")}function e(a,b){if(b=b||window.Vue,b&&b.config){var c=b.config.errorHandler;b.config.errorHandler=function(b,e,f){var g={};"[object Object]"===Object.prototype.toString.call(e)&&(g.componentName=d(e),g.propsData=e.$options.propsData),"undefined"!=typeof f&&(g.lifecycleHook=f),a.captureException(b,{extra:g}),"function"==typeof c&&c.call(this,b,e,f)}}}b.exports=e},{}]},{},[1])(1)}); //# sourceMappingURL=vue.min.js.map \ No newline at end of file diff --git a/dist/raven.js b/dist/raven.js index dab00f09496a..e6229c6f04de 100644 --- a/dist/raven.js +++ b/dist/raven.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.23.0 (0516d9e) | github.com/getsentry/raven-js */ +/*! Raven.js 3.23.1 (84edddc) | github.com/getsentry/raven-js */ /* * Includes TraceKit @@ -200,7 +200,7 @@ Raven.prototype = { // webpack (using a build step causes webpack #1617). Grunt verifies that // this value matches package.json during build. // See: https://github.com/getsentry/raven-js/issues/465 - VERSION: '3.23.0', + VERSION: '3.23.1', debug: false, @@ -499,7 +499,7 @@ Raven.prototype = { */ _attachPromiseRejectionHandler: function() { this._promiseRejectionHandler = this._promiseRejectionHandler.bind(this); - _window.addEventListener('unhandledrejection', this._promiseRejectionHandler); + _window.addEventListener && _window.addEventListener('unhandledrejection', this._promiseRejectionHandler); return this; }, @@ -509,7 +509,7 @@ Raven.prototype = { * @return {raven} */ _detachPromiseRejectionHandler: function() { - _window.removeEventListener('unhandledrejection', this._promiseRejectionHandler); + _window.removeEventListener && _window.removeEventListener('unhandledrejection', this._promiseRejectionHandler); return this; }, diff --git a/dist/raven.min.js b/dist/raven.min.js index a71f44dd9d16..a38734bca380 100644 --- a/dist/raven.min.js +++ b/dist/raven.min.js @@ -1,3 +1,3 @@ -/*! Raven.js 3.23.0 (0516d9e) | github.com/getsentry/raven-js */ -!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.Raven=a()}}(function(){return function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};b[g][0].call(k.exports,function(a){var c=b[g][1][a];return e(c?c:a)},k,k.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;gthis.k.maxBreadcrumbs&&this.u.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.r.push([a,b]),this.n&&this.F(),this},setUserContext:function(a){return this.j.user=a,this},setExtraContext:function(a){return this.X("extra",a),this},setTagsContext:function(a){return this.X("tags",a),this},clearContext:function(){return this.j={},this},getContext:function(){return JSON.parse(h(this.j))},setEnvironment:function(a){return this.k.environment=a,this},setRelease:function(a){return this.k.release=a,this},setDataCallback:function(a){var b=this.k.dataCallback;return this.k.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.k.breadcrumbCallback;return this.k.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.k.shouldSendCallback;return this.k.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.k.transport=a,this},lastException:function(){return this.d},lastEventId:function(){return this.f},isSetup:function(){return!!this.a&&(!!this.g||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.z("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=K.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(L){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new i("Missing eventId");var c=a.dsn||this.H;if(!c)throw new i("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.j.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.J(this.G(c)),h=L.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(L.head||L.body).appendChild(h)}},L:function(){var a=this;this.m+=1,setTimeout(function(){a.m-=1})},Y:function(a,b){var c,d;if(this.b){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),L.createEvent?(c=L.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=L.createEventObject(),c.eventType=a);for(d in b)w(b,d)&&(c[d]=b[d]);if(L.createEvent)L.dispatchEvent(c);else try{L.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},Z:function(a){var b=this;return function(c){if(b.$=null,b.v!==c){b.v=c;var d;try{d=A(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},_:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.$;g||a.Z("input")(c),clearTimeout(g),a.$=setTimeout(function(){a.$=null},b)}}},aa:function(a,b){var c=D(this.w.href),d=D(b),e=D(a);this.x=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},C:function(){var a=this;a.ba=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.M?a.ba.apply(this.O,arguments):a.ba.apply(this,arguments)}},Q:function(){this.ba&&(Function.prototype.toString=this.ba)},D:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.aa(b.x,c+""),a.apply(this,arguments)}};E(history,"pushState",j,d),E(history,"replaceState",j,d)}if(c.console&&"console"in K&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};s(["debug","info","warn","error","log"],function(a,b){H(console,b,k)})}},R:function(){for(var a;this.t.length;){a=this.t.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},S:function(){for(var a in this.q)this.p[a]=this.q[a]},F:function(){var a=this;s(this.r,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},G:function(a){var b=J.exec(a),c={},d=7;try{for(;d--;)c[I[d]]=b[d]||""}catch(e){throw new i("Invalid DSN: "+a)}if(c.pass&&!this.k.allowSecretKey)throw new i("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},J:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},A:function(){this.m||this.U.apply(this,arguments)},U:function(a,b){var c=this.V(a,b);this.Y("handle",{stackInfo:a,options:b}),this.da(a.name,a.message,a.url,a.lineno,c,b)},V:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(s(a.stack,function(b,e){var f=c.ea(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.u,0)}),this.j.user&&(a.user=this.j.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||r(a[b]))&&delete a[b]}),o(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!r(a)&&(!o(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.ka()?void this.z("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function A(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&i(b))for(c=b.split(/\s+/),f=0;f=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function k(a,b){var c=null;if(!b||f.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(h.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,g,h){var l=null,m=e.isErrorEvent(h)?h.error:h,n=e.isErrorEvent(a)?a.message:a;if(v)f.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&e.isError(m))l=f.computeStackTrace(m),k(l,!0);else{var p,r={url:b,line:c,column:g},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(j);p&&(s=p[1],n=p[2])}r.func=i,l={name:s,message:n,url:d(),stack:[r]},k(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=g.onerror,g.onerror=l,r=!0)}function n(){r&&(g.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,k.apply(null,[a,!1].concat(b))}function p(a,b){var c=h.call(arguments,1);if(v){if(u===a)return;o()}var d=f.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),f.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,e,f=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,g=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,h=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,j=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,k=/\((\S*)(?::(\d+))(?::(\d+))\)/,l=a.stack.split("\n"),m=[],n=(/^(.*) is undefined$/.exec(a.message),0),o=l.length;n eval")>-1;q&&(b=j.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==n||c[5]||"undefined"==typeof a.columnNumber||(m[0].column=a.columnNumber+1),e={url:c[3],func:c[1]||i,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}!e.func&&e.line&&(e.func=i),m.push(e)}return m.length?{name:a.name,message:a.message,url:d(),stack:m}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=i),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,g){for(var h,j,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==e&&o!==f.report){if(j={url:null,func:i,line:null,column:null},o.name?j.func=o.name:(h=k.exec(o.toString()))&&(j.func=h[1]),"undefined"==typeof j.func)try{j.func=h.input.substring(0,h.input.indexOf("{"))}catch(p){}m[""+o]?n=!0:m[""+o]=!0,l.push(j)}g&&l.splice(0,g);var q={name:a.name,message:a.message,url:d(),stack:l};return b(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),q}function e(b,e){var g=null;e=null==e?0:+e;try{if(g=a(b))return g}catch(h){if(f.debug)throw h}try{if(g=c(b,e+1))return g}catch(h){if(f.debug)throw h}return{name:b.name,message:b.message,url:d()}}return e.augmentStackTraceWithInitialElement=b,e.computeStackTraceFromStackProp=a,e}(),b.exports=f}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{5:5}],7:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}]},{},[4])(4)}); +/*! Raven.js 3.23.1 (84edddc) | github.com/getsentry/raven-js */ +!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.Raven=a()}}(function(){return function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};b[g][0].call(k.exports,function(a){var c=b[g][1][a];return e(c?c:a)},k,k.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;gthis.k.maxBreadcrumbs&&this.u.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.r.push([a,b]),this.n&&this.F(),this},setUserContext:function(a){return this.j.user=a,this},setExtraContext:function(a){return this.X("extra",a),this},setTagsContext:function(a){return this.X("tags",a),this},clearContext:function(){return this.j={},this},getContext:function(){return JSON.parse(h(this.j))},setEnvironment:function(a){return this.k.environment=a,this},setRelease:function(a){return this.k.release=a,this},setDataCallback:function(a){var b=this.k.dataCallback;return this.k.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.k.breadcrumbCallback;return this.k.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.k.shouldSendCallback;return this.k.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.k.transport=a,this},lastException:function(){return this.d},lastEventId:function(){return this.f},isSetup:function(){return!!this.a&&(!!this.g||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.z("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=K.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(L){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new i("Missing eventId");var c=a.dsn||this.H;if(!c)throw new i("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.j.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.J(this.G(c)),h=L.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(L.head||L.body).appendChild(h)}},L:function(){var a=this;this.m+=1,setTimeout(function(){a.m-=1})},Y:function(a,b){var c,d;if(this.b){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),L.createEvent?(c=L.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=L.createEventObject(),c.eventType=a);for(d in b)w(b,d)&&(c[d]=b[d]);if(L.createEvent)L.dispatchEvent(c);else try{L.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},Z:function(a){var b=this;return function(c){if(b.$=null,b.v!==c){b.v=c;var d;try{d=A(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},_:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.$;g||a.Z("input")(c),clearTimeout(g),a.$=setTimeout(function(){a.$=null},b)}}},aa:function(a,b){var c=D(this.w.href),d=D(b),e=D(a);this.x=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},C:function(){var a=this;a.ba=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.M?a.ba.apply(this.O,arguments):a.ba.apply(this,arguments)}},Q:function(){this.ba&&(Function.prototype.toString=this.ba)},D:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.aa(b.x,c+""),a.apply(this,arguments)}};E(history,"pushState",j,d),E(history,"replaceState",j,d)}if(c.console&&"console"in K&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};s(["debug","info","warn","error","log"],function(a,b){H(console,b,k)})}},R:function(){for(var a;this.t.length;){a=this.t.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},S:function(){for(var a in this.q)this.p[a]=this.q[a]},F:function(){var a=this;s(this.r,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},G:function(a){var b=J.exec(a),c={},d=7;try{for(;d--;)c[I[d]]=b[d]||""}catch(e){throw new i("Invalid DSN: "+a)}if(c.pass&&!this.k.allowSecretKey)throw new i("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},J:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},A:function(){this.m||this.U.apply(this,arguments)},U:function(a,b){var c=this.V(a,b);this.Y("handle",{stackInfo:a,options:b}),this.da(a.name,a.message,a.url,a.lineno,c,b)},V:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(s(a.stack,function(b,e){var f=c.ea(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.u,0)}),this.j.user&&(a.user=this.j.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||r(a[b]))&&delete a[b]}),o(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!r(a)&&(!o(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.ka()?void this.z("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function A(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&i(b))for(c=b.split(/\s+/),f=0;f=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function k(a,b){var c=null;if(!b||f.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(h.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,g,h){var l=null,m=e.isErrorEvent(h)?h.error:h,n=e.isErrorEvent(a)?a.message:a;if(v)f.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&e.isError(m))l=f.computeStackTrace(m),k(l,!0);else{var p,r={url:b,line:c,column:g},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(j);p&&(s=p[1],n=p[2])}r.func=i,l={name:s,message:n,url:d(),stack:[r]},k(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=g.onerror,g.onerror=l,r=!0)}function n(){r&&(g.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,k.apply(null,[a,!1].concat(b))}function p(a,b){var c=h.call(arguments,1);if(v){if(u===a)return;o()}var d=f.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),f.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,e,f=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,g=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,h=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,j=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,k=/\((\S*)(?::(\d+))(?::(\d+))\)/,l=a.stack.split("\n"),m=[],n=(/^(.*) is undefined$/.exec(a.message),0),o=l.length;n eval")>-1;q&&(b=j.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==n||c[5]||"undefined"==typeof a.columnNumber||(m[0].column=a.columnNumber+1),e={url:c[3],func:c[1]||i,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}!e.func&&e.line&&(e.func=i),m.push(e)}return m.length?{name:a.name,message:a.message,url:d(),stack:m}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=i),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,g){for(var h,j,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==e&&o!==f.report){if(j={url:null,func:i,line:null,column:null},o.name?j.func=o.name:(h=k.exec(o.toString()))&&(j.func=h[1]),"undefined"==typeof j.func)try{j.func=h.input.substring(0,h.input.indexOf("{"))}catch(p){}m[""+o]?n=!0:m[""+o]=!0,l.push(j)}g&&l.splice(0,g);var q={name:a.name,message:a.message,url:d(),stack:l};return b(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),q}function e(b,e){var g=null;e=null==e?0:+e;try{if(g=a(b))return g}catch(h){if(f.debug)throw h}try{if(g=c(b,e+1))return g}catch(h){if(f.debug)throw h}return{name:b.name,message:b.message,url:d()}}return e.augmentStackTraceWithInitialElement=b,e.computeStackTraceFromStackProp=a,e}(),b.exports=f}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{5:5}],7:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}]},{},[4])(4)}); //# sourceMappingURL=raven.min.js.map \ No newline at end of file diff --git a/dist/raven.min.js.map b/dist/raven.min.js.map index 8b32cc62e706..5f09c661c695 100644 --- a/dist/raven.min.js.map +++ b/dist/raven.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","RavenConfigError","message","name","prototype","constructor","2","utils","wrapMethod","console","level","callback","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","msg","safeJoin","data","logger","extra","Function","apply","5","3","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","isError","isObject","isErrorEvent","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","wrapConsoleMethod","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","config","dsn","options","_logDebug","globalOptions","key","value","setDSN","push","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","toString","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","substr","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","context","func","undefined","wrap","_before","wrapped","deep","_ignoreNextOnError","captureException","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","T","event","reason","B","_promiseRejectionHandler","bind","addEventListener","P","removeEventListener","ex","trimHeadFrames","isNotError","isNotErrorEvent","isErrorEventWithoutError","error","captureMessage","stacktrace","stack","computeStackTrace","_handleStackInfo","ex1","test","initialCall","fileurl","url","fingerprint","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","addPlugin","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","setDataCallback","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","L","setTimeout","Y","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","Z","evtName","_keypressTimeout","target","category","_","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","aa","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","C","_originalFunctionToString","Q","D","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","type","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","E","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","R","builtin","S","F","installer","concat","G","str","m","exec","allowSecretKey","J","port","A","U","stackInfo","_triggerEvent","_processException","lineno","V","frame","_normalizeFrame","in_app","ea","stackInfoUrl","normalized","filename","line","colno","column","function","da","prefixedMessage","exception","values","culprit","fa","request","Referer","breadcrumbs","_trimBreadcrumbs","ga","urlProp","urlProps","ha","httpData","userAgent","User-Agent","referrer","y","_backoffDuration","_backoffStart","ka","la","current","last","ma","_shouldBackoff","retry","get","getResponseHeader","parseInt","W","baseData","project","platform","_getHttpData","serverName","server_name","Object","keys","forEach","random","_sendProcessedPayload","oa","na","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","pa","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","onerror","open","setRequestHeader","send","qa","hash","evaluated","z","X","setUser","setReleaseContext","6","7","4","RavenConstructor","_Raven","noConflict","what","supportsErrorEvent","isPlainObject","ErrorEvent","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","wrappedCallback","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","getLocationHref","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","initial","unshift","partial","computeStackTraceByWalkingCallerChain","depth","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file +{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","RavenConfigError","message","name","prototype","constructor","2","utils","wrapMethod","console","level","callback","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","msg","safeJoin","data","logger","extra","Function","apply","5","3","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","isError","isObject","isErrorEvent","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","wrapConsoleMethod","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","config","dsn","options","_logDebug","globalOptions","key","value","setDSN","push","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","toString","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","substr","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","context","func","undefined","wrap","_before","wrapped","deep","_ignoreNextOnError","captureException","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","T","event","reason","B","_promiseRejectionHandler","bind","addEventListener","P","removeEventListener","ex","trimHeadFrames","isNotError","isNotErrorEvent","isErrorEventWithoutError","error","captureMessage","stacktrace","stack","computeStackTrace","_handleStackInfo","ex1","test","initialCall","fileurl","url","fingerprint","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","addPlugin","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","setDataCallback","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","L","setTimeout","Y","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","Z","evtName","_keypressTimeout","target","category","_","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","aa","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","C","_originalFunctionToString","Q","D","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","type","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","E","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","R","builtin","S","F","installer","concat","G","str","m","exec","allowSecretKey","J","port","A","U","stackInfo","_triggerEvent","_processException","lineno","V","frame","_normalizeFrame","in_app","ea","stackInfoUrl","normalized","filename","line","colno","column","function","da","prefixedMessage","exception","values","culprit","fa","request","Referer","breadcrumbs","_trimBreadcrumbs","ga","urlProp","urlProps","ha","httpData","userAgent","User-Agent","referrer","y","_backoffDuration","_backoffStart","ka","la","current","last","ma","_shouldBackoff","retry","get","getResponseHeader","parseInt","W","baseData","project","platform","_getHttpData","serverName","server_name","Object","keys","forEach","random","_sendProcessedPayload","oa","na","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","pa","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","onerror","open","setRequestHeader","send","qa","hash","evaluated","z","X","setUser","setReleaseContext","6","7","4","RavenConstructor","_Raven","noConflict","what","supportsErrorEvent","isPlainObject","ErrorEvent","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","wrappedCallback","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","getLocationHref","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","initial","unshift","partial","computeStackTraceByWalkingCallerChain","depth","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file diff --git a/dist/sri.json b/dist/sri.json index 5346ed42ea89..567aef94ba8a 100644 --- a/dist/sri.json +++ b/dist/sri.json @@ -1,20 +1,20 @@ { "@dist/raven.js": { "hashes": { - "sha256": "rEGUJFjbDHQQEotUYUkiKZ0ssMViV8xD1nHbmzPO80k=", - "sha512": "6wCQAHF1Z/2mtwl3lmI09I/H8WpF3p179YQamTJ1DAPyLMPBTs4sNpNqy/j5KG3KIrBWPcBd+RZGB+/Oyb1x0Q==" + "sha256": "y4/aKaCCmTpvb+Pe42nLotW3plnbTA+O1yjvOESJi+A=", + "sha512": "k3tWTgP8abuoUfzFKHRnnIA3c7wFlqU9ELrG8Ivz7hqW/zAGgBzXOwWjPE9RLiZ/TvchrcKIst+po0Lfejiwog==" }, "type": null, - "integrity": "sha256-rEGUJFjbDHQQEotUYUkiKZ0ssMViV8xD1nHbmzPO80k= sha512-6wCQAHF1Z/2mtwl3lmI09I/H8WpF3p179YQamTJ1DAPyLMPBTs4sNpNqy/j5KG3KIrBWPcBd+RZGB+/Oyb1x0Q==", + "integrity": "sha256-y4/aKaCCmTpvb+Pe42nLotW3plnbTA+O1yjvOESJi+A= sha512-k3tWTgP8abuoUfzFKHRnnIA3c7wFlqU9ELrG8Ivz7hqW/zAGgBzXOwWjPE9RLiZ/TvchrcKIst+po0Lfejiwog==", "path": "dist/raven.js" }, "@dist/raven.min.js": { "hashes": { - "sha256": "C3Unt78h5O/vDKMLAI5A5dNaRu+lWGa4nuo3+lZfEg8=", - "sha512": "hCRLIS7r7YoiDqJds2uH9hZr5XVkf//HpSD3phv7EKTvM+Mxt8ozeFQd5eLioZedIELn9e5OBDDa7ja7fizUqg==" + "sha256": "dk8pv3eguRWw+jXTPjU2LokunhTbqMP7EyMg7YKMfmc=", + "sha512": "ab2uU8roVxB0bAuxKGmfZguFRJMpOuUDlQ6AwpplGAUJV+dajvE+yHKa1panuCBcT+geG68FRmCcsEI7/+J4OA==" }, "type": null, - "integrity": "sha256-C3Unt78h5O/vDKMLAI5A5dNaRu+lWGa4nuo3+lZfEg8= sha512-hCRLIS7r7YoiDqJds2uH9hZr5XVkf//HpSD3phv7EKTvM+Mxt8ozeFQd5eLioZedIELn9e5OBDDa7ja7fizUqg==", + "integrity": "sha256-dk8pv3eguRWw+jXTPjU2LokunhTbqMP7EyMg7YKMfmc= sha512-ab2uU8roVxB0bAuxKGmfZguFRJMpOuUDlQ6AwpplGAUJV+dajvE+yHKa1panuCBcT+geG68FRmCcsEI7/+J4OA==", "path": "dist/raven.min.js" } } \ No newline at end of file diff --git a/docs/sentry-doc-config.json b/docs/sentry-doc-config.json index 31fc0c23b481..ae305ebc53aa 100644 --- a/docs/sentry-doc-config.json +++ b/docs/sentry-doc-config.json @@ -75,6 +75,6 @@ } }, "vars": { - "RAVEN_VERSION": "3.23.0" + "RAVEN_VERSION": "3.23.1" } } diff --git a/package.json b/package.json index 547ecf5efd2b..f60e03871a16 100644 --- a/package.json +++ b/package.json @@ -9,7 +9,7 @@ "raven", "sentry" ], - "version": "3.23.0", + "version": "3.23.1", "repository": "git://github.com/getsentry/raven-js.git", "license": "BSD-2-Clause", "homepage": "https://github.com/getsentry/raven-js", diff --git a/src/raven.js b/src/raven.js index c43abeeab5f2..8611bc35e34d 100644 --- a/src/raven.js +++ b/src/raven.js @@ -132,7 +132,7 @@ Raven.prototype = { // webpack (using a build step causes webpack #1617). Grunt verifies that // this value matches package.json during build. // See: https://github.com/getsentry/raven-js/issues/465 - VERSION: '3.23.0', + VERSION: '3.23.1', debug: false, @@ -431,7 +431,8 @@ Raven.prototype = { */ _attachPromiseRejectionHandler: function() { this._promiseRejectionHandler = this._promiseRejectionHandler.bind(this); - _window.addEventListener && _window.addEventListener('unhandledrejection', this._promiseRejectionHandler); + _window.addEventListener && + _window.addEventListener('unhandledrejection', this._promiseRejectionHandler); return this; }, @@ -441,7 +442,8 @@ Raven.prototype = { * @return {raven} */ _detachPromiseRejectionHandler: function() { - _window.removeEventListener && _window.removeEventListener('unhandledrejection', this._promiseRejectionHandler); + _window.removeEventListener && + _window.removeEventListener('unhandledrejection', this._promiseRejectionHandler); return this; }, diff --git a/test/raven.test.js b/test/raven.test.js index eb69c593decb..0586b6937210 100644 --- a/test/raven.test.js +++ b/test/raven.test.js @@ -1349,7 +1349,7 @@ describe('globals', function() { extra: {'session:duration': 100} }); assert.deepEqual(opts.auth, { - sentry_client: 'raven-js/3.23.0', + sentry_client: 'raven-js/3.23.1', sentry_key: 'abc', sentry_version: '7' }); @@ -1396,7 +1396,7 @@ describe('globals', function() { extra: {'session:duration': 100} }); assert.deepEqual(opts.auth, { - sentry_client: 'raven-js/3.23.0', + sentry_client: 'raven-js/3.23.1', sentry_key: 'abc', sentry_secret: 'def', sentry_version: '7' From 8f8a62487c7ef245e55561e94c319a23ff7625e4 Mon Sep 17 00:00:00 2001 From: Jorge Cruz Date: Mon, 5 Mar 2018 17:33:02 -0800 Subject: [PATCH 20/75] fix: default fingerprinting when using synthetic stacktraces When stracktrace:true is set via globalOptions there is an attempt to create a default fingerprint value but it gets dropped from the request to sentry. This ensures the fingerprint value is included in the data sent to sentry. --- src/raven.js | 16 ++++++++++++---- test/raven.test.js | 13 +++++++++++++ 2 files changed, 25 insertions(+), 4 deletions(-) diff --git a/src/raven.js b/src/raven.js index 8611bc35e34d..b20de308080b 100644 --- a/src/raven.js +++ b/src/raven.js @@ -513,10 +513,11 @@ Raven.prototype = { } options = options || {}; + msg = msg + ''; // Make sure it's actually a string var data = objectMerge( { - message: msg + '' // Make sure it's actually a string + message: msg }, options ); @@ -555,11 +556,11 @@ Raven.prototype = { } if (this._globalOptions.stacktrace || (options && options.stacktrace)) { + // fingerprint on msg, not stack trace (legacy behavior, could be revisited) + data.fingerprint = data.fingerprint == null ? msg : data.fingerprint; + options = objectMerge( { - // fingerprint on msg, not stack trace (legacy behavior, could be - // revisited) - fingerprint: msg, trimHeadFrames: 0 }, options @@ -577,6 +578,13 @@ Raven.prototype = { }; } + // Make sure that fingerprint is always wrapped in an array + if (data.fingerprint) { + data.fingerprint = isArray(data.fingerprint) + ? data.fingerprint + : [data.fingerprint]; + } + // Fire away! this._send(data); diff --git a/test/raven.test.js b/test/raven.test.js index 0586b6937210..4d0d7095dfc1 100644 --- a/test/raven.test.js +++ b/test/raven.test.js @@ -3044,6 +3044,19 @@ describe('Raven (public API)', function() { var frames = Raven._send.lastCall.args[0].stacktrace.frames; assertSynthetic(frames); }); + + it('should send a default fingerprint if stacktrace:true is set via globalOptions', function() { + this.sinon.stub(Raven, 'isSetup').returns(true); + this.sinon.stub(Raven, '_send'); + + Raven._globalOptions.stacktrace = true; + Raven.captureMessage('foo'); + + var fingerprint = Raven._send.lastCall.args[0].fingerprint; + // the fingerprint should be the same as the message + // but wrapped in an array + assert.deepEqual(fingerprint, ['foo']); + }); }); }); From 5e4297016efa30ec568c8ad2f7a7c68754f1fcd0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kamil=20Og=C3=B3rek?= Date: Mon, 12 Mar 2018 14:24:20 +0100 Subject: [PATCH 21/75] misc: Update npmignore (#1250) --- .npmignore | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/.npmignore b/.npmignore index 26069b02e9e7..850a5e46d7f6 100644 --- a/.npmignore +++ b/.npmignore @@ -10,4 +10,9 @@ test/ .* karma.* Makefile -npm-debug.log \ No newline at end of file +npm-debug.log +Gruntfile.js +typescript/raven-tests.ts +AUTHORS +CHANGELOG.md +CONTRIBUTING.md From add03a5889124cf38b2ea410891782b0678248bf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kamil=20Og=C3=B3rek?= Date: Tue, 13 Mar 2018 20:55:39 +0100 Subject: [PATCH 22/75] feat: Sensible non-Error exception serializer (#1253) * feat: Sensible non-Error exception serializer * ref: Restructure captureException method --- src/raven.js | 60 ++++++--- src/utils.js | 98 ++++++++++++++- test/integration/test.js | 7 +- test/raven.test.js | 71 +++++++++-- test/utils.test.js | 243 +++++++++++++++++++++++++++++++++++ vendor/md5/md5.js | 266 +++++++++++++++++++++++++++++++++++++++ 6 files changed, 716 insertions(+), 29 deletions(-) create mode 100644 vendor/md5/md5.js diff --git a/src/raven.js b/src/raven.js index b20de308080b..a70411dcf424 100644 --- a/src/raven.js +++ b/src/raven.js @@ -2,11 +2,13 @@ var TraceKit = require('../vendor/TraceKit/tracekit'); var stringify = require('../vendor/json-stringify-safe/stringify'); +var md5 = require('../vendor/md5/md5'); var RavenConfigError = require('./configError'); var utils = require('./utils'); var isError = utils.isError; var isObject = utils.isObject; +var isPlainObject = utils.isPlainObject; var isErrorEvent = utils.isErrorEvent; var isUndefined = utils.isUndefined; var isFunction = utils.isFunction; @@ -28,6 +30,8 @@ var parseUrl = utils.parseUrl; var fill = utils.fill; var supportsFetch = utils.supportsFetch; var supportsReferrerPolicy = utils.supportsReferrerPolicy; +var serializeKeysForMessage = utils.serializeKeysForMessage; +var serializeException = utils.serializeException; var wrapConsoleMethod = require('./console').wrapMethod; @@ -456,23 +460,34 @@ Raven.prototype = { */ captureException: function(ex, options) { options = objectMerge({trimHeadFrames: 0}, options ? options : {}); - // Cases for sending ex as a message, rather than an exception - var isNotError = !isError(ex); - var isNotErrorEvent = !isErrorEvent(ex); - var isErrorEventWithoutError = isErrorEvent(ex) && !ex.error; - - if ((isNotError && isNotErrorEvent) || isErrorEventWithoutError) { - return this.captureMessage( - ex, - objectMerge(options, { - stacktrace: true, // if we fall back to captureMessage, default to attempting a new trace - trimHeadFrames: options.trimHeadFrames + 1 - }) - ); - } - // Get actual Error from ErrorEvent - if (isErrorEvent(ex)) ex = ex.error; + if (isPlainObject(ex)) { + // If it is plain Object, serialize it manually and extract options + // This will allow us to group events based on top-level keys + // which is much better than creating new group when any key/value change + options = this._getCaptureExceptionOptionsFromPlainObject(options, ex); + ex = new Error(options.message); + + } else if (isErrorEvent(ex) && ex.error) { + // If it is an ErrorEvent with `error` property, extract it to get actual Error + ex = ex.error; + } else if (isError(ex)){ + // we have a real Error object + ex = ex; + } else { + // If none of previous checks were valid, then it means that + // it's not a plain Object + // it's not a valid ErrorEvent (one with an error property) + // it's not an Error + // So bail out and capture it as a simple message: + return this.captureMessage( + ex, + objectMerge(options, { + stacktrace: true, // if we fall back to captureMessage, default to attempting a new trace + trimHeadFrames: options.trimHeadFrames + 1 + }) + ); + } // Store the raw exception object for potential debugging and introspection this._lastCapturedException = ex; @@ -494,6 +509,19 @@ Raven.prototype = { return this; }, + _getCaptureExceptionOptionsFromPlainObject: function(currentOptions, ex) { + var exKeys = Object.keys(ex).sort(); + var options = objectMerge(currentOptions, { + message: + 'Non-Error exception captured with keys: ' + serializeKeysForMessage(exKeys), + fingerprint: [md5(exKeys)], + extra: currentOptions.extra || {} + }); + options.extra.__serialized__ = serializeException(ex); + + return options; + }, + /* * Manually send a message to Sentry * diff --git a/src/utils.js b/src/utils.js index a4fcc6b1ebc9..eab9c76dffa1 100644 --- a/src/utils.js +++ b/src/utils.js @@ -1,3 +1,5 @@ +var stringify = require('../vendor/json-stringify-safe/stringify'); + var _window = typeof window !== 'undefined' ? window @@ -441,6 +443,98 @@ function safeJoin(input, delimiter) { return output.join(delimiter); } +// Default Node.js REPL depth +var MAX_SERIALIZE_EXCEPTION_DEPTH = 3; +// 50kB, as 100kB is max payload size, so half sounds reasonable +var MAX_SERIALIZE_EXCEPTION_SIZE = 50 * 1024; +var MAX_SERIALIZE_KEYS_LENGTH = 40; + +function utf8Length(value) { + return ~-encodeURI(value).split(/%..|./).length; +} + +function jsonSize(value) { + return utf8Length(JSON.stringify(value)); +} + +function serializeValue(value) { + var maxLength = 40; + + if (typeof value === 'string') { + return value.length <= maxLength ? value : value.substr(0, maxLength - 1) + '\u2026'; + } else if ( + typeof value === 'number' || + typeof value === 'boolean' || + typeof value === 'undefined' + ) { + return value; + } + + var type = Object.prototype.toString.call(value); + + // Node.js REPL notation + if (type === '[object Object]') return '[Object]'; + if (type === '[object Array]') return '[Array]'; + if (type === '[object Function]') + return value.name ? '[Function: ' + value.name + ']' : '[Function]'; + + return value; +} + +function serializeObject(value, depth) { + if (depth === 0) return serializeValue(value); + + if (isPlainObject(value)) { + return Object.keys(value).reduce(function(acc, key) { + acc[key] = serializeObject(value[key], depth - 1); + return acc; + }, {}); + } else if (Array.isArray(value)) { + return value.map(function(val) { + return serializeObject(val, depth - 1); + }); + } + + return serializeValue(value); +} + +function serializeException(ex, depth, maxSize) { + if (!isPlainObject(ex)) return ex; + + depth = typeof depth !== 'number' ? MAX_SERIALIZE_EXCEPTION_DEPTH : depth; + maxSize = typeof depth !== 'number' ? MAX_SERIALIZE_EXCEPTION_SIZE : maxSize; + + var serialized = serializeObject(ex, depth); + + if (jsonSize(stringify(serialized)) > maxSize) { + return serializeException(ex, depth - 1); + } + + return serialized; +} + +function serializeKeysForMessage(keys, maxLength) { + if (typeof keys === 'number' || typeof keys === 'string') return keys.toString(); + if (!Array.isArray(keys)) return ''; + + keys = keys.filter(function(key) { + return typeof key === 'string'; + }); + if (keys.length === 0) return '[object has no keys]'; + + maxLength = typeof maxLength !== 'number' ? MAX_SERIALIZE_KEYS_LENGTH : maxLength; + if (keys[0].length >= maxLength) return keys[0]; + + for (var usedKeys = keys.length; usedKeys > 0; usedKeys--) { + var serialized = keys.slice(0, usedKeys).join(', '); + if (serialized.length > maxLength) continue; + if (usedKeys === keys.length) return serialized; + return serialized + '\u2026'; + } + + return ''; +} + module.exports = { isObject: isObject, isError: isError, @@ -470,5 +564,7 @@ module.exports = { isSameStacktrace: isSameStacktrace, parseUrl: parseUrl, fill: fill, - safeJoin: safeJoin + safeJoin: safeJoin, + serializeException: serializeException, + serializeKeysForMessage: serializeKeysForMessage }; diff --git a/test/integration/test.js b/test/integration/test.js index 779e6c38265d..5552ed84b052 100644 --- a/test/integration/test.js +++ b/test/integration/test.js @@ -106,11 +106,8 @@ describe('integration', function() { }, function() { var ravenData = iframe.contentWindow.ravenData[0]; - assert.isAtLeast(ravenData.stacktrace.frames.length, 1); - assert.isAtMost(ravenData.stacktrace.frames.length, 3); - - // verify trimHeadFrames hasn't slipped into final payload - assert.isUndefined(ravenData.trimHeadFrames); + assert.isAtLeast(ravenData.exception.values[0].stacktrace.frames.length, 1); + assert.isAtMost(ravenData.exception.values[0].stacktrace.frames.length, 3); } ); }); diff --git a/test/raven.test.js b/test/raven.test.js index 4d0d7095dfc1..819f31afc65e 100644 --- a/test/raven.test.js +++ b/test/raven.test.js @@ -3079,13 +3079,6 @@ describe('Raven (public API)', function() { }); } - it('should send non-Errors as messages', function() { - this.sinon.stub(Raven, 'isSetup').returns(true); - this.sinon.stub(Raven, 'captureMessage'); - Raven.captureException({}, {foo: 'bar'}); - assert.isTrue(Raven.captureMessage.calledOnce); - }); - it('should call handleStackInfo', function() { var error = new Error('pickleRick'); this.sinon.stub(Raven, 'isSetup').returns(true); @@ -3156,6 +3149,70 @@ describe('Raven (public API)', function() { Raven.captureException(new Error('err')); }); }); + + it('should serialize non-error exceptions', function(done) { + this.sinon.stub(Raven, 'isSetup').returns(true); + this.sinon.stub(Raven, '_send').callsFake(function stubbedSend(kwargs) { + kwargs.message.should.equal( + 'Non-Error exception captured with keys: aKeyOne, bKeyTwo, cKeyThree, dKeyFour\u2026' + ); + + var serialized = kwargs.extra.__serialized__; + var fn; + + // Yes, I know, it's ugly but... + // unfortunately older browsers are not capable of extracting method names + // therefore we have to use `oneOf` here + fn = serialized.eKeyFive; + delete serialized.eKeyFive; + assert.oneOf(fn, ['[Function: foo]', '[Function]']); + + fn = serialized.fKeySix.levelTwo.levelThreeAnonymousFunction; + delete serialized.fKeySix.levelTwo.levelThreeAnonymousFunction; + assert.oneOf(fn, ['[Function: levelThreeAnonymousFunction]', '[Function]']); + + fn = serialized.fKeySix.levelTwo.levelThreeNamedFunction; + delete serialized.fKeySix.levelTwo.levelThreeNamedFunction; + assert.oneOf(fn, ['[Function: bar]', '[Function]']); + + assert.deepEqual(serialized, { + aKeyOne: 'a', + bKeyTwo: 42, + cKeyThree: {}, + dKeyFour: ['d'], + fKeySix: { + levelTwo: { + levelThreeObject: '[Object]', + levelThreeArray: '[Array]', + levelThreeString: 'foo', + levelThreeNumber: 42 + } + } + }); + + done(); + }); + + Raven.captureException({ + aKeyOne: 'a', + bKeyTwo: 42, + cKeyThree: {}, + dKeyFour: ['d'], + eKeyFive: function foo() {}, + fKeySix: { + levelTwo: { + levelThreeObject: { + enough: 42 + }, + levelThreeArray: [42], + levelThreeAnonymousFunction: function() {}, + levelThreeNamedFunction: function bar() {}, + levelThreeString: 'foo', + levelThreeNumber: 42 + } + } + }); + }); }); describe('.captureBreadcrumb', function() { diff --git a/test/utils.test.js b/test/utils.test.js index fd63389efe78..2c4d6baca8ec 100644 --- a/test/utils.test.js +++ b/test/utils.test.js @@ -24,6 +24,8 @@ var htmlTreeAsString = utils.htmlTreeAsString; var htmlElementAsString = utils.htmlElementAsString; var parseUrl = utils.parseUrl; var safeJoin = utils.safeJoin; +var serializeException = utils.serializeException; +var serializeKeysForMessage = utils.serializeKeysForMessage; describe('utils', function() { describe('isUndefined', function() { @@ -453,4 +455,245 @@ describe('utils', function() { ); }); }); + + describe('serializeException', function() { + it('return [Object] when reached depth=0', function() { + var actual = serializeException( + { + a: 42, + b: 'asd', + c: true + }, + 0 + ); + var expected = '[Object]'; + + assert.deepEqual(actual, expected); + }); + + it('should serialize one level deep with depth=1', function() { + var actual = serializeException( + { + a: 42, + b: 'asd', + c: true, + d: undefined, + e: + 'very long string that is definitely over 120 characters, which is default for now but can be changed anytime because why not?', + f: {foo: 42}, + g: [1, 'a', true], + h: function() {} + }, + 1 + ); + var expected = { + a: 42, + b: 'asd', + c: true, + d: undefined, + e: 'very long string that is definitely ove\u2026', + f: '[Object]', + g: '[Array]' + }; + + // Unfortunately older browsers are not capable of extracting method names + // therefore we have to use `oneOf` here + var fn = actual.h; + delete actual.h; + + assert.deepEqual(actual, expected); + assert.oneOf(fn, ['[Function: h]', '[Function]']); + }); + + it('should serialize arbitrary number of depths', function() { + var actual = serializeException( + { + a: 42, + b: 'asd', + c: true, + d: undefined, + e: + 'very long string that is definitely over 40 characters, which is default for now but can be changed', + f: { + foo: 42, + bar: { + foo: 42, + bar: { + bar: { + bar: { + bar: 42 + } + } + }, + baz: ['hello'] + }, + baz: [1, 'a', true] + }, + g: [1, 'a', true], + h: function bar() {} + }, + 5 + ); + var expected = { + a: 42, + b: 'asd', + c: true, + d: undefined, + e: 'very long string that is definitely ove\u2026', + f: { + foo: 42, + bar: { + foo: 42, + bar: { + bar: { + bar: '[Object]' + } + }, + baz: ['hello'] + }, + baz: [1, 'a', true] + }, + g: [1, 'a', true] + }; + + // Unfortunately older browsers are not capable of extracting method names + // therefore we have to use `oneOf` here + var fn = actual.h; + delete actual.h; + + assert.deepEqual(actual, expected); + assert.oneOf(fn, ['[Function: bar]', '[Function]']); + }); + + it('should reduce depth if payload size was exceeded', function() { + var actual = serializeException( + { + a: { + a: '50kB worth of payload pickle rick', + b: '50kB worth of payload pickle rick' + }, + b: '50kB worth of payload pickle rick' + }, + 2, + 100 + ); + var expected = { + a: '[Object]', + b: '50kB worth of payload pickle rick' + }; + + assert.deepEqual(actual, expected); + }); + + it('should reduce depth only one level at the time', function() { + var actual = serializeException( + { + a: { + a: { + a: { + a: [ + '50kB worth of payload pickle rick', + '50kB worth of payload pickle rick', + '50kB worth of payload pickle rick' + ] + } + }, + b: '50kB worth of payload pickle rick' + }, + b: '50kB worth of payload pickle rick' + }, + 4, + 200 + ); + var expected = { + a: { + a: { + a: { + a: '[Array]' + } + }, + b: '50kB worth of payload pickle rick' + }, + b: '50kB worth of payload pickle rick' + }; + + assert.deepEqual(actual, expected); + }); + + it('should fallback to [Object] if cannot reduce payload size enough', function() { + var actual = serializeException( + { + a: '50kB worth of payload pickle rick', + b: '50kB worth of payload pickle rick', + c: '50kB worth of payload pickle rick', + d: '50kB worth of payload pickle rick' + }, + 1, + 100 + ); + var expected = '[Object]'; + + assert.deepEqual(actual, expected); + }); + }); + + describe('serializeKeysForMessage', function() { + it('should fit as many keys as possible in default limit of 40', function() { + var actual = serializeKeysForMessage([ + 'pickle', + 'rick', + 'morty', + 'snuffles', + 'server', + 'request' + ]); + var expected = 'pickle, rick, morty, snuffles, server\u2026'; + assert.equal(actual, expected); + }); + + it('shouldnt append ellipsis if you use the exact length limit', function() { + var actual = serializeKeysForMessage( + ['pickle', 'rick', 'morty', 'summer', 'jerry', 'beth'], + 40 + ); + var expected = 'pickle, rick, morty, summer, jerry, beth'; + // expected.length === 40 + assert.equal(actual, expected); + }); + + it('shouldnt append ellipsis if have enough space', function() { + var actual = serializeKeysForMessage(['pickle', 'rick', 'morty']); + var expected = 'pickle, rick, morty'; + assert.equal(actual, expected); + }); + + it('should default to no-keys message if empty array provided', function() { + var actual = serializeKeysForMessage([]); + var expected = '[object has no keys]'; + assert.equal(actual, expected); + }); + + it('should leave first key as is, if its too long for the limit', function() { + var actual = serializeKeysForMessage([ + 'imSuchALongKeyThatIDontEvenFitInTheLimitOf40Characters', + 'pickle' + ]); + var expected = 'imSuchALongKeyThatIDontEvenFitInTheLimitOf40Characters'; + assert.equal(actual, expected); + }); + + it('should work with provided maxLength', function() { + var actual = serializeKeysForMessage(['foo', 'bar', 'baz'], 10); + var expected = 'foo, bar\u2026'; + assert.equal(actual, expected); + }); + + it('handles incorrect input', function() { + assert.equal(serializeKeysForMessage({}), ''); + assert.equal(serializeKeysForMessage(false), ''); + assert.equal(serializeKeysForMessage(undefined), ''); + assert.equal(serializeKeysForMessage(42), '42'); + assert.equal(serializeKeysForMessage('foo'), 'foo'); + }); + }); }); diff --git a/vendor/md5/md5.js b/vendor/md5/md5.js new file mode 100644 index 000000000000..6ed37d99bb31 --- /dev/null +++ b/vendor/md5/md5.js @@ -0,0 +1,266 @@ +/* + * JavaScript MD5 + * https://github.com/blueimp/JavaScript-MD5 + * + * Copyright 2011, Sebastian Tschan + * https://blueimp.net + * + * Licensed under the MIT license: + * https://opensource.org/licenses/MIT + * + * Based on + * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message + * Digest Algorithm, as defined in RFC 1321. + * Version 2.2 Copyright (C) Paul Johnston 1999 - 2009 + * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet + * Distributed under the BSD License + * See http://pajhome.org.uk/crypt/md5 for more info. + */ + +/* +* Add integers, wrapping at 2^32. This uses 16-bit operations internally +* to work around bugs in some JS interpreters. +*/ +function safeAdd(x, y) { + var lsw = (x & 0xffff) + (y & 0xffff); + var msw = (x >> 16) + (y >> 16) + (lsw >> 16); + return (msw << 16) | (lsw & 0xffff); +} + +/* +* Bitwise rotate a 32-bit number to the left. +*/ +function bitRotateLeft(num, cnt) { + return (num << cnt) | (num >>> (32 - cnt)); +} + +/* +* These functions implement the four basic operations the algorithm uses. +*/ +function md5cmn(q, a, b, x, s, t) { + return safeAdd(bitRotateLeft(safeAdd(safeAdd(a, q), safeAdd(x, t)), s), b); +} +function md5ff(a, b, c, d, x, s, t) { + return md5cmn((b & c) | (~b & d), a, b, x, s, t); +} +function md5gg(a, b, c, d, x, s, t) { + return md5cmn((b & d) | (c & ~d), a, b, x, s, t); +} +function md5hh(a, b, c, d, x, s, t) { + return md5cmn(b ^ c ^ d, a, b, x, s, t); +} +function md5ii(a, b, c, d, x, s, t) { + return md5cmn(c ^ (b | ~d), a, b, x, s, t); +} + +/* +* Calculate the MD5 of an array of little-endian words, and a bit length. +*/ +function binlMD5(x, len) { + /* append padding */ + x[len >> 5] |= 0x80 << (len % 32); + x[(((len + 64) >>> 9) << 4) + 14] = len; + + var i; + var olda; + var oldb; + var oldc; + var oldd; + var a = 1732584193; + var b = -271733879; + var c = -1732584194; + var d = 271733878; + + for (i = 0; i < x.length; i += 16) { + olda = a; + oldb = b; + oldc = c; + oldd = d; + + a = md5ff(a, b, c, d, x[i], 7, -680876936); + d = md5ff(d, a, b, c, x[i + 1], 12, -389564586); + c = md5ff(c, d, a, b, x[i + 2], 17, 606105819); + b = md5ff(b, c, d, a, x[i + 3], 22, -1044525330); + a = md5ff(a, b, c, d, x[i + 4], 7, -176418897); + d = md5ff(d, a, b, c, x[i + 5], 12, 1200080426); + c = md5ff(c, d, a, b, x[i + 6], 17, -1473231341); + b = md5ff(b, c, d, a, x[i + 7], 22, -45705983); + a = md5ff(a, b, c, d, x[i + 8], 7, 1770035416); + d = md5ff(d, a, b, c, x[i + 9], 12, -1958414417); + c = md5ff(c, d, a, b, x[i + 10], 17, -42063); + b = md5ff(b, c, d, a, x[i + 11], 22, -1990404162); + a = md5ff(a, b, c, d, x[i + 12], 7, 1804603682); + d = md5ff(d, a, b, c, x[i + 13], 12, -40341101); + c = md5ff(c, d, a, b, x[i + 14], 17, -1502002290); + b = md5ff(b, c, d, a, x[i + 15], 22, 1236535329); + + a = md5gg(a, b, c, d, x[i + 1], 5, -165796510); + d = md5gg(d, a, b, c, x[i + 6], 9, -1069501632); + c = md5gg(c, d, a, b, x[i + 11], 14, 643717713); + b = md5gg(b, c, d, a, x[i], 20, -373897302); + a = md5gg(a, b, c, d, x[i + 5], 5, -701558691); + d = md5gg(d, a, b, c, x[i + 10], 9, 38016083); + c = md5gg(c, d, a, b, x[i + 15], 14, -660478335); + b = md5gg(b, c, d, a, x[i + 4], 20, -405537848); + a = md5gg(a, b, c, d, x[i + 9], 5, 568446438); + d = md5gg(d, a, b, c, x[i + 14], 9, -1019803690); + c = md5gg(c, d, a, b, x[i + 3], 14, -187363961); + b = md5gg(b, c, d, a, x[i + 8], 20, 1163531501); + a = md5gg(a, b, c, d, x[i + 13], 5, -1444681467); + d = md5gg(d, a, b, c, x[i + 2], 9, -51403784); + c = md5gg(c, d, a, b, x[i + 7], 14, 1735328473); + b = md5gg(b, c, d, a, x[i + 12], 20, -1926607734); + + a = md5hh(a, b, c, d, x[i + 5], 4, -378558); + d = md5hh(d, a, b, c, x[i + 8], 11, -2022574463); + c = md5hh(c, d, a, b, x[i + 11], 16, 1839030562); + b = md5hh(b, c, d, a, x[i + 14], 23, -35309556); + a = md5hh(a, b, c, d, x[i + 1], 4, -1530992060); + d = md5hh(d, a, b, c, x[i + 4], 11, 1272893353); + c = md5hh(c, d, a, b, x[i + 7], 16, -155497632); + b = md5hh(b, c, d, a, x[i + 10], 23, -1094730640); + a = md5hh(a, b, c, d, x[i + 13], 4, 681279174); + d = md5hh(d, a, b, c, x[i], 11, -358537222); + c = md5hh(c, d, a, b, x[i + 3], 16, -722521979); + b = md5hh(b, c, d, a, x[i + 6], 23, 76029189); + a = md5hh(a, b, c, d, x[i + 9], 4, -640364487); + d = md5hh(d, a, b, c, x[i + 12], 11, -421815835); + c = md5hh(c, d, a, b, x[i + 15], 16, 530742520); + b = md5hh(b, c, d, a, x[i + 2], 23, -995338651); + + a = md5ii(a, b, c, d, x[i], 6, -198630844); + d = md5ii(d, a, b, c, x[i + 7], 10, 1126891415); + c = md5ii(c, d, a, b, x[i + 14], 15, -1416354905); + b = md5ii(b, c, d, a, x[i + 5], 21, -57434055); + a = md5ii(a, b, c, d, x[i + 12], 6, 1700485571); + d = md5ii(d, a, b, c, x[i + 3], 10, -1894986606); + c = md5ii(c, d, a, b, x[i + 10], 15, -1051523); + b = md5ii(b, c, d, a, x[i + 1], 21, -2054922799); + a = md5ii(a, b, c, d, x[i + 8], 6, 1873313359); + d = md5ii(d, a, b, c, x[i + 15], 10, -30611744); + c = md5ii(c, d, a, b, x[i + 6], 15, -1560198380); + b = md5ii(b, c, d, a, x[i + 13], 21, 1309151649); + a = md5ii(a, b, c, d, x[i + 4], 6, -145523070); + d = md5ii(d, a, b, c, x[i + 11], 10, -1120210379); + c = md5ii(c, d, a, b, x[i + 2], 15, 718787259); + b = md5ii(b, c, d, a, x[i + 9], 21, -343485551); + + a = safeAdd(a, olda); + b = safeAdd(b, oldb); + c = safeAdd(c, oldc); + d = safeAdd(d, oldd); + } + return [a, b, c, d]; +} + +/* +* Convert an array of little-endian words to a string +*/ +function binl2rstr(input) { + var i; + var output = ''; + var length32 = input.length * 32; + for (i = 0; i < length32; i += 8) { + output += String.fromCharCode((input[i >> 5] >>> (i % 32)) & 0xff); + } + return output; +} + +/* +* Convert a raw string to an array of little-endian words +* Characters >255 have their high-byte silently ignored. +*/ +function rstr2binl(input) { + var i; + var output = []; + output[(input.length >> 2) - 1] = undefined; + for (i = 0; i < output.length; i += 1) { + output[i] = 0; + } + var length8 = input.length * 8; + for (i = 0; i < length8; i += 8) { + output[i >> 5] |= (input.charCodeAt(i / 8) & 0xff) << (i % 32); + } + return output; +} + +/* +* Calculate the MD5 of a raw string +*/ +function rstrMD5(s) { + return binl2rstr(binlMD5(rstr2binl(s), s.length * 8)); +} + +/* +* Calculate the HMAC-MD5, of a key and some data (raw strings) +*/ +function rstrHMACMD5(key, data) { + var i; + var bkey = rstr2binl(key); + var ipad = []; + var opad = []; + var hash; + ipad[15] = opad[15] = undefined; + if (bkey.length > 16) { + bkey = binlMD5(bkey, key.length * 8); + } + for (i = 0; i < 16; i += 1) { + ipad[i] = bkey[i] ^ 0x36363636; + opad[i] = bkey[i] ^ 0x5c5c5c5c; + } + hash = binlMD5(ipad.concat(rstr2binl(data)), 512 + data.length * 8); + return binl2rstr(binlMD5(opad.concat(hash), 512 + 128)); +} + +/* +* Convert a raw string to a hex string +*/ +function rstr2hex(input) { + var hexTab = '0123456789abcdef'; + var output = ''; + var x; + var i; + for (i = 0; i < input.length; i += 1) { + x = input.charCodeAt(i); + output += hexTab.charAt((x >>> 4) & 0x0f) + hexTab.charAt(x & 0x0f); + } + return output; +} + +/* +* Encode a string as utf-8 +*/ +function str2rstrUTF8(input) { + return unescape(encodeURIComponent(input)); +} + +/* +* Take string arguments and return either raw or hex encoded strings +*/ +function rawMD5(s) { + return rstrMD5(str2rstrUTF8(s)); +} +function hexMD5(s) { + return rstr2hex(rawMD5(s)); +} +function rawHMACMD5(k, d) { + return rstrHMACMD5(str2rstrUTF8(k), str2rstrUTF8(d)); +} +function hexHMACMD5(k, d) { + return rstr2hex(rawHMACMD5(k, d)); +} + +function md5(string, key, raw) { + if (!key) { + if (!raw) { + return hexMD5(string); + } + return rawMD5(string); + } + if (!raw) { + return hexHMACMD5(key, string); + } + return rawHMACMD5(key, string); +} + +module.exports = md5; From 72f8e05b2542b6a583c2c258e425a540a3f94249 Mon Sep 17 00:00:00 2001 From: Daniel Griesser Date: Tue, 13 Mar 2018 21:17:51 +0100 Subject: [PATCH 23/75] feat: Update electron docs (#1241) * feat: Update electron docs * fix: typos * meta: Update code example * docs(electron): Remove Electron docs --- docs/integrations/electron.rst | 73 ---------------------------------- docs/integrations/index.rst | 1 - docs/sentry-doc-config.json | 9 ----- 3 files changed, 83 deletions(-) delete mode 100644 docs/integrations/electron.rst diff --git a/docs/integrations/electron.rst b/docs/integrations/electron.rst deleted file mode 100644 index ead6b697d8b6..000000000000 --- a/docs/integrations/electron.rst +++ /dev/null @@ -1,73 +0,0 @@ -Electron -======== - -To use Sentry with your Electron application, you will need to use both Raven.js SDKs, one for Browser and one for Node.js. -Browser SDK is used to report all errors from Electron's ``renderer process``, while Node.js is used to report ``main process`` errors. - -On its own, Raven.js will report any uncaught exceptions triggered from your application. For advanced usage examples of Raven.js, please read :doc:`Raven.js usage <../usage>`. - -Installation ------------- - -Both packages are available via npm. - -.. code-block:: sh - - $ npm install raven raven-js --save - -Configuring the Client ----------------------- - -First, let's configure ``main process``, which uses the Node.js SDK: - -.. code-block:: javascript - - var Raven = require('raven'); - - Raven.config('___PUBLIC_DSN___', { - captureUnhandledRejections: true - }).install(); - -And now ``renderer process``, which uses the Browser SDK: - -.. code-block:: javascript - - var Raven = require('raven-js'); - Raven.config('___PUBLIC_DSN___').install(); - - window.addEventListener('unhandledrejection', function (event) { - Raven.captureException(event.reason); - }); - -This configuration will also take care of unhandled Promise rejections, which can be handled in various ways. By default, Electron uses standard JS API. -To learn more about handling promises, refer to :ref:`raven-js-promises` documentation. - -Sending environment information -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -It's often a good idea to send platform information along with a caught error. -Some things that we can easily add, but are not limited to, are: - -- Environment type (browser/renderer) -- Electron version -- Chrome version -- Operation System type -- Operation System release - -You can configure both processes in the same way. To do this, require the standard Node.js module `os` and add a `tags` attribute to your `config` call: - -.. code-block:: javascript - - var os = require('os'); - var Raven = require('raven'); - - Raven.config('___PUBLIC_DSN___', { - captureUnhandledRejections: true, - tags: { - process: process.type, - electron: process.versions.electron, - chrome: process.versions.chrome, - platform: os.platform(), - platform_release: os.release() - } - }).install(); diff --git a/docs/integrations/index.rst b/docs/integrations/index.rst index 8763f24cbd59..74c507d09f56 100644 --- a/docs/integrations/index.rst +++ b/docs/integrations/index.rst @@ -36,7 +36,6 @@ To install a plugin just include the plugin **after** Raven has been loaded and angularjs angular backbone - electron ember react vue diff --git a/docs/sentry-doc-config.json b/docs/sentry-doc-config.json index ae305ebc53aa..2799eb0efbd4 100644 --- a/docs/sentry-doc-config.json +++ b/docs/sentry-doc-config.json @@ -38,15 +38,6 @@ "integrations/backbone#configuring-the-client" ] }, - "javascript.electron": { - "name": "Electron", - "type": "framework", - "doc_link": "integrations/electron/", - "wizard": [ - "integrations/electron#installation", - "integrations/electron#configuring-the-client" - ] - }, "javascript.ember": { "name": "Ember", "type": "framework", From 3c65e28d59709c6a415b03d81a7a60e048b34a67 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kamil=20Og=C3=B3rek?= Date: Wed, 14 Mar 2018 13:42:14 +0100 Subject: [PATCH 24/75] 3.23.2 --- CHANGELOG.md | 9 + bower.json | 2 +- dist/plugins/angular.js | 176 +++++++++++- dist/plugins/angular.min.js | 4 +- dist/plugins/angular.min.js.map | 2 +- dist/plugins/console.js | 176 +++++++++++- dist/plugins/console.min.js | 4 +- dist/plugins/console.min.js.map | 2 +- dist/plugins/ember.js | 2 +- dist/plugins/ember.min.js | 2 +- dist/plugins/require.js | 2 +- dist/plugins/require.min.js | 2 +- dist/plugins/vue.js | 2 +- dist/plugins/vue.min.js | 2 +- dist/raven.js | 456 ++++++++++++++++++++++++++++++-- dist/raven.min.js | 5 +- dist/raven.min.js.map | 2 +- dist/sri.json | 12 +- docs/sentry-doc-config.json | 2 +- package.json | 2 +- src/raven.js | 29 +- test/raven.test.js | 4 +- 22 files changed, 827 insertions(+), 72 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f2a755a1d069..5a49b1912835 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,14 @@ # Changelog +## 3.23.2 + +**NOTE**: +This release may introduce some new events for the same errors, as we'll provide more information on them now. +Your Sentry Issues stream may show new errors, without any changes done to your application's code. + +* NEW: Sensible non-Error exception serializer (#1253) +* BUGFIX: Create correct fingerprint when using synthetic stacktraces (#1246) + ## 3.23.1 * BUGFIX: Check if `addEventListener` and `removeEventListener` are present before calling them diff --git a/bower.json b/bower.json index bf496c39d70d..05fb2ad8732e 100644 --- a/bower.json +++ b/bower.json @@ -1,6 +1,6 @@ { "name": "raven-js", - "version": "3.23.1", + "version": "3.23.2", "dependencies": {}, "main": "dist/raven.js", "ignore": [ diff --git a/dist/plugins/angular.js b/dist/plugins/angular.js index d011caafaa0b..f3e8939ded4c 100644 --- a/dist/plugins/angular.js +++ b/dist/plugins/angular.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.23.1 (84edddc) | github.com/getsentry/raven-js */ +/*! Raven.js 3.23.2 (72f8e05) | github.com/getsentry/raven-js */ /* * Includes TraceKit @@ -88,6 +88,8 @@ module.exports = angularPlugin; },{"2":2}],2:[function(_dereq_,module,exports){ (function (global){ +var stringify = _dereq_(3); + var _window = typeof window !== 'undefined' ? window @@ -531,6 +533,98 @@ function safeJoin(input, delimiter) { return output.join(delimiter); } +// Default Node.js REPL depth +var MAX_SERIALIZE_EXCEPTION_DEPTH = 3; +// 50kB, as 100kB is max payload size, so half sounds reasonable +var MAX_SERIALIZE_EXCEPTION_SIZE = 50 * 1024; +var MAX_SERIALIZE_KEYS_LENGTH = 40; + +function utf8Length(value) { + return ~-encodeURI(value).split(/%..|./).length; +} + +function jsonSize(value) { + return utf8Length(JSON.stringify(value)); +} + +function serializeValue(value) { + var maxLength = 40; + + if (typeof value === 'string') { + return value.length <= maxLength ? value : value.substr(0, maxLength - 1) + '\u2026'; + } else if ( + typeof value === 'number' || + typeof value === 'boolean' || + typeof value === 'undefined' + ) { + return value; + } + + var type = Object.prototype.toString.call(value); + + // Node.js REPL notation + if (type === '[object Object]') return '[Object]'; + if (type === '[object Array]') return '[Array]'; + if (type === '[object Function]') + return value.name ? '[Function: ' + value.name + ']' : '[Function]'; + + return value; +} + +function serializeObject(value, depth) { + if (depth === 0) return serializeValue(value); + + if (isPlainObject(value)) { + return Object.keys(value).reduce(function(acc, key) { + acc[key] = serializeObject(value[key], depth - 1); + return acc; + }, {}); + } else if (Array.isArray(value)) { + return value.map(function(val) { + return serializeObject(val, depth - 1); + }); + } + + return serializeValue(value); +} + +function serializeException(ex, depth, maxSize) { + if (!isPlainObject(ex)) return ex; + + depth = typeof depth !== 'number' ? MAX_SERIALIZE_EXCEPTION_DEPTH : depth; + maxSize = typeof depth !== 'number' ? MAX_SERIALIZE_EXCEPTION_SIZE : maxSize; + + var serialized = serializeObject(ex, depth); + + if (jsonSize(stringify(serialized)) > maxSize) { + return serializeException(ex, depth - 1); + } + + return serialized; +} + +function serializeKeysForMessage(keys, maxLength) { + if (typeof keys === 'number' || typeof keys === 'string') return keys.toString(); + if (!Array.isArray(keys)) return ''; + + keys = keys.filter(function(key) { + return typeof key === 'string'; + }); + if (keys.length === 0) return '[object has no keys]'; + + maxLength = typeof maxLength !== 'number' ? MAX_SERIALIZE_KEYS_LENGTH : maxLength; + if (keys[0].length >= maxLength) return keys[0]; + + for (var usedKeys = keys.length; usedKeys > 0; usedKeys--) { + var serialized = keys.slice(0, usedKeys).join(', '); + if (serialized.length > maxLength) continue; + if (usedKeys === keys.length) return serialized; + return serialized + '\u2026'; + } + + return ''; +} + module.exports = { isObject: isObject, isError: isError, @@ -560,9 +654,87 @@ module.exports = { isSameStacktrace: isSameStacktrace, parseUrl: parseUrl, fill: fill, - safeJoin: safeJoin + safeJoin: safeJoin, + serializeException: serializeException, + serializeKeysForMessage: serializeKeysForMessage }; }).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"3":3}],3:[function(_dereq_,module,exports){ +/* + json-stringify-safe + Like JSON.stringify, but doesn't throw on circular references. + + Originally forked from https://github.com/isaacs/json-stringify-safe + version 5.0.1 on 3/8/2017 and modified to handle Errors serialization + and IE8 compatibility. Tests for this are in test/vendor. + + ISC license: https://github.com/isaacs/json-stringify-safe/blob/master/LICENSE +*/ + +exports = module.exports = stringify; +exports.getSerialize = serializer; + +function indexOf(haystack, needle) { + for (var i = 0; i < haystack.length; ++i) { + if (haystack[i] === needle) return i; + } + return -1; +} + +function stringify(obj, replacer, spaces, cycleReplacer) { + return JSON.stringify(obj, serializer(replacer, cycleReplacer), spaces); +} + +// https://github.com/ftlabs/js-abbreviate/blob/fa709e5f139e7770a71827b1893f22418097fbda/index.js#L95-L106 +function stringifyError(value) { + var err = { + // These properties are implemented as magical getters and don't show up in for in + stack: value.stack, + message: value.message, + name: value.name + }; + + for (var i in value) { + if (Object.prototype.hasOwnProperty.call(value, i)) { + err[i] = value[i]; + } + } + + return err; +} + +function serializer(replacer, cycleReplacer) { + var stack = []; + var keys = []; + + if (cycleReplacer == null) { + cycleReplacer = function(key, value) { + if (stack[0] === value) { + return '[Circular ~]'; + } + return '[Circular ~.' + keys.slice(0, indexOf(stack, value)).join('.') + ']'; + }; + } + + return function(key, value) { + if (stack.length > 0) { + var thisPos = indexOf(stack, this); + ~thisPos ? stack.splice(thisPos + 1) : stack.push(this); + ~thisPos ? keys.splice(thisPos, Infinity, key) : keys.push(key); + + if (~indexOf(stack, value)) { + value = cycleReplacer.call(this, key, value); + } + } else { + stack.push(value); + } + + return replacer == null + ? value instanceof Error ? stringifyError(value) : value + : replacer.call(this, key, value); + }; +} + },{}]},{},[1])(1) }); \ No newline at end of file diff --git a/dist/plugins/angular.min.js b/dist/plugins/angular.min.js index 28c39a5776bd..639527e58c14 100644 --- a/dist/plugins/angular.min.js +++ b/dist/plugins/angular.min.js @@ -1,3 +1,3 @@ -/*! Raven.js 3.23.1 (84edddc) | github.com/getsentry/raven-js */ -!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b=b.Raven||(b.Raven={}),b=b.Plugins||(b.Plugins={}),b.Angular=a()}}(function(){return function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};b[g][0].call(k.exports,function(a){var c=b[g][1][a];return e(c?c:a)},k,k.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;g ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function A(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&i(b))for(c=b.split(/\s+/),f=0;f ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function B(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&j(b))for(c=b.split(/\s+/),f=0;fc?M(a,b-1):d}function N(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?S:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}var O=a(3),P="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},Q=3,R=51200,S=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isUndefined:g,isFunction:h,isPlainObject:i,isString:j,isArray:k,isEmptyObject:l,supportsErrorEvent:m,supportsFetch:n,supportsReferrerPolicy:o,supportsPromiseRejectionEvent:p,wrappedCallback:q,each:r,objectMerge:s,truncate:u,objectFrozen:t,hasKey:v,joinRegExp:w,urlencode:x,uuid4:z,htmlTreeAsString:A,htmlElementAsString:B,isSameException:E,isSameStacktrace:F,parseUrl:y,fill:G,safeJoin:H,serializeException:M,serializeKeysForMessage:N}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{3:3}],3:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}]},{},[1])(1)}); //# sourceMappingURL=angular.min.js.map \ No newline at end of file diff --git a/dist/plugins/angular.min.js.map b/dist/plugins/angular.min.js.map index ceb12edc4de5..4690d340afd9 100644 --- a/dist/plugins/angular.min.js.map +++ b/dist/plugins/angular.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["angular.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","Plugins","Angular","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","angularPlugin","angular","RavenProvider","$get","$window","ExceptionHandlerProvider","$provide","decorator","exceptionHandler","R","$delegate","ex","cause","captureException","extra","moduleName","provider","config","setDataCallback","wrappedCallback","data","_normalizeData","angularPattern","exception","values","matches","exec","value","type","message","angularDocs","substr","2","isObject","what","isError","toString","isErrorEvent","supportsErrorEvent","isUndefined","isFunction","isPlainObject","Object","prototype","isString","isArray","isEmptyObject","_","hasOwnProperty","ErrorEvent","supportsFetch","_window","Headers","Request","Response","supportsReferrerPolicy","referrerPolicy","supportsPromiseRejectionEvent","PromiseRejectionEvent","callback","dataCallback","original","normalizedData","each","obj","j","hasKey","objectMerge","obj1","obj2","key","objectFrozen","isFrozen","truncate","str","max","object","joinRegExp","patterns","pattern","sources","len","push","replace","source","RegExp","join","urlencode","pairs","encodeURIComponent","parseUrl","url","match","query","fragment","protocol","host","path","relative","uuid4","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","Math","random","htmlTreeAsString","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","reverse","className","classes","attr","tagName","toLowerCase","id","split","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","isSameException","ex1","ex2","stacktrace","isSameStacktrace","stack1","stack2","frames1","frames","frames2","filename","lineno","colno","fill","name","replacement","track","orig","__raven__","__orig__","safeJoin","input","delimiter","output","String"],"mappings":"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","file":"angular.min.js"} \ No newline at end of file +{"version":3,"sources":["angular.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","Plugins","Angular","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","angularPlugin","angular","RavenProvider","$get","$window","ExceptionHandlerProvider","$provide","decorator","exceptionHandler","R","$delegate","ex","cause","captureException","extra","moduleName","provider","config","setDataCallback","wrappedCallback","data","_normalizeData","angularPattern","exception","values","matches","exec","value","type","message","angularDocs","substr","2","isObject","what","isError","toString","isErrorEvent","supportsErrorEvent","isUndefined","isFunction","isPlainObject","Object","prototype","isString","isArray","isEmptyObject","_","hasOwnProperty","ErrorEvent","supportsFetch","_window","Headers","Request","Response","supportsReferrerPolicy","referrerPolicy","supportsPromiseRejectionEvent","PromiseRejectionEvent","callback","dataCallback","original","normalizedData","each","obj","j","hasKey","objectMerge","obj1","obj2","key","objectFrozen","isFrozen","truncate","str","max","object","joinRegExp","patterns","pattern","sources","len","push","replace","source","RegExp","join","urlencode","pairs","encodeURIComponent","parseUrl","url","match","query","fragment","protocol","host","path","relative","uuid4","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","Math","random","htmlTreeAsString","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","reverse","className","classes","attr","tagName","toLowerCase","id","split","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","isSameException","ex1","ex2","stacktrace","isSameStacktrace","stack1","stack2","frames1","frames","frames2","filename","lineno","colno","fill","name","replacement","track","orig","__raven__","__orig__","safeJoin","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","JSON","stringify","serializeValue","maxLength","serializeObject","depth","keys","reduce","acc","Array","map","val","serializeException","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","serializeKeysForMessage","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","slice","3","indexOf","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","err","stack","thisPos","splice","Infinity","getSerialize"],"mappings":"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","file":"angular.min.js"} \ No newline at end of file diff --git a/dist/plugins/console.js b/dist/plugins/console.js index 3dc51f0467e6..7b1389043a61 100644 --- a/dist/plugins/console.js +++ b/dist/plugins/console.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.23.1 (84edddc) | github.com/getsentry/raven-js */ +/*! Raven.js 3.23.2 (72f8e05) | github.com/getsentry/raven-js */ /* * Includes TraceKit @@ -90,6 +90,8 @@ module.exports = { },{"3":3}],3:[function(_dereq_,module,exports){ (function (global){ +var stringify = _dereq_(4); + var _window = typeof window !== 'undefined' ? window @@ -533,6 +535,98 @@ function safeJoin(input, delimiter) { return output.join(delimiter); } +// Default Node.js REPL depth +var MAX_SERIALIZE_EXCEPTION_DEPTH = 3; +// 50kB, as 100kB is max payload size, so half sounds reasonable +var MAX_SERIALIZE_EXCEPTION_SIZE = 50 * 1024; +var MAX_SERIALIZE_KEYS_LENGTH = 40; + +function utf8Length(value) { + return ~-encodeURI(value).split(/%..|./).length; +} + +function jsonSize(value) { + return utf8Length(JSON.stringify(value)); +} + +function serializeValue(value) { + var maxLength = 40; + + if (typeof value === 'string') { + return value.length <= maxLength ? value : value.substr(0, maxLength - 1) + '\u2026'; + } else if ( + typeof value === 'number' || + typeof value === 'boolean' || + typeof value === 'undefined' + ) { + return value; + } + + var type = Object.prototype.toString.call(value); + + // Node.js REPL notation + if (type === '[object Object]') return '[Object]'; + if (type === '[object Array]') return '[Array]'; + if (type === '[object Function]') + return value.name ? '[Function: ' + value.name + ']' : '[Function]'; + + return value; +} + +function serializeObject(value, depth) { + if (depth === 0) return serializeValue(value); + + if (isPlainObject(value)) { + return Object.keys(value).reduce(function(acc, key) { + acc[key] = serializeObject(value[key], depth - 1); + return acc; + }, {}); + } else if (Array.isArray(value)) { + return value.map(function(val) { + return serializeObject(val, depth - 1); + }); + } + + return serializeValue(value); +} + +function serializeException(ex, depth, maxSize) { + if (!isPlainObject(ex)) return ex; + + depth = typeof depth !== 'number' ? MAX_SERIALIZE_EXCEPTION_DEPTH : depth; + maxSize = typeof depth !== 'number' ? MAX_SERIALIZE_EXCEPTION_SIZE : maxSize; + + var serialized = serializeObject(ex, depth); + + if (jsonSize(stringify(serialized)) > maxSize) { + return serializeException(ex, depth - 1); + } + + return serialized; +} + +function serializeKeysForMessage(keys, maxLength) { + if (typeof keys === 'number' || typeof keys === 'string') return keys.toString(); + if (!Array.isArray(keys)) return ''; + + keys = keys.filter(function(key) { + return typeof key === 'string'; + }); + if (keys.length === 0) return '[object has no keys]'; + + maxLength = typeof maxLength !== 'number' ? MAX_SERIALIZE_KEYS_LENGTH : maxLength; + if (keys[0].length >= maxLength) return keys[0]; + + for (var usedKeys = keys.length; usedKeys > 0; usedKeys--) { + var serialized = keys.slice(0, usedKeys).join(', '); + if (serialized.length > maxLength) continue; + if (usedKeys === keys.length) return serialized; + return serialized + '\u2026'; + } + + return ''; +} + module.exports = { isObject: isObject, isError: isError, @@ -562,9 +656,87 @@ module.exports = { isSameStacktrace: isSameStacktrace, parseUrl: parseUrl, fill: fill, - safeJoin: safeJoin + safeJoin: safeJoin, + serializeException: serializeException, + serializeKeysForMessage: serializeKeysForMessage }; }).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"4":4}],4:[function(_dereq_,module,exports){ +/* + json-stringify-safe + Like JSON.stringify, but doesn't throw on circular references. + + Originally forked from https://github.com/isaacs/json-stringify-safe + version 5.0.1 on 3/8/2017 and modified to handle Errors serialization + and IE8 compatibility. Tests for this are in test/vendor. + + ISC license: https://github.com/isaacs/json-stringify-safe/blob/master/LICENSE +*/ + +exports = module.exports = stringify; +exports.getSerialize = serializer; + +function indexOf(haystack, needle) { + for (var i = 0; i < haystack.length; ++i) { + if (haystack[i] === needle) return i; + } + return -1; +} + +function stringify(obj, replacer, spaces, cycleReplacer) { + return JSON.stringify(obj, serializer(replacer, cycleReplacer), spaces); +} + +// https://github.com/ftlabs/js-abbreviate/blob/fa709e5f139e7770a71827b1893f22418097fbda/index.js#L95-L106 +function stringifyError(value) { + var err = { + // These properties are implemented as magical getters and don't show up in for in + stack: value.stack, + message: value.message, + name: value.name + }; + + for (var i in value) { + if (Object.prototype.hasOwnProperty.call(value, i)) { + err[i] = value[i]; + } + } + + return err; +} + +function serializer(replacer, cycleReplacer) { + var stack = []; + var keys = []; + + if (cycleReplacer == null) { + cycleReplacer = function(key, value) { + if (stack[0] === value) { + return '[Circular ~]'; + } + return '[Circular ~.' + keys.slice(0, indexOf(stack, value)).join('.') + ']'; + }; + } + + return function(key, value) { + if (stack.length > 0) { + var thisPos = indexOf(stack, this); + ~thisPos ? stack.splice(thisPos + 1) : stack.push(this); + ~thisPos ? keys.splice(thisPos, Infinity, key) : keys.push(key); + + if (~indexOf(stack, value)) { + value = cycleReplacer.call(this, key, value); + } + } else { + stack.push(value); + } + + return replacer == null + ? value instanceof Error ? stringifyError(value) : value + : replacer.call(this, key, value); + }; +} + },{}]},{},[1])(1) }); \ No newline at end of file diff --git a/dist/plugins/console.min.js b/dist/plugins/console.min.js index 8704d274b7cf..3c7e67db5935 100644 --- a/dist/plugins/console.min.js +++ b/dist/plugins/console.min.js @@ -1,3 +1,3 @@ -/*! Raven.js 3.23.1 (84edddc) | github.com/getsentry/raven-js */ -!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b=b.Raven||(b.Raven={}),b=b.Plugins||(b.Plugins={}),b.Console=a()}}(function(){return function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};b[g][0].call(k.exports,function(a){var c=b[g][1][a];return e(c?c:a)},k,k.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;g ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function A(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&i(b))for(c=b.split(/\s+/),f=0;f ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function B(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&j(b))for(c=b.split(/\s+/),f=0;fc?M(a,b-1):d}function N(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?S:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}var O=a(4),P="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},Q=3,R=51200,S=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isUndefined:g,isFunction:h,isPlainObject:i,isString:j,isArray:k,isEmptyObject:l,supportsErrorEvent:m,supportsFetch:n,supportsReferrerPolicy:o,supportsPromiseRejectionEvent:p,wrappedCallback:q,each:r,objectMerge:s,truncate:u,objectFrozen:t,hasKey:v,joinRegExp:w,urlencode:x,uuid4:z,htmlTreeAsString:A,htmlElementAsString:B,isSameException:E,isSameStacktrace:F,parseUrl:y,fill:G,safeJoin:H,serializeException:M,serializeKeysForMessage:N}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{4:4}],4:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}]},{},[1])(1)}); //# sourceMappingURL=console.min.js.map \ No newline at end of file diff --git a/dist/plugins/console.min.js.map b/dist/plugins/console.min.js.map index 68b817652e00..7e1fbbf6dc49 100644 --- a/dist/plugins/console.min.js.map +++ b/dist/plugins/console.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["console.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","Plugins","Console","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","consolePlugin","console","pluginOptions","logLevels","levels","push","callback","msg","data","captureMessage","level","pop","wrapConsoleMethod","wrapMethod","2","utils","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","safeJoin","logger","extra","Function","prototype","apply","3","isObject","what","isError","value","toString","isErrorEvent","supportsErrorEvent","isUndefined","isFunction","isPlainObject","Object","isString","isArray","isEmptyObject","_","hasOwnProperty","ErrorEvent","supportsFetch","_window","Headers","Request","Response","supportsReferrerPolicy","referrerPolicy","supportsPromiseRejectionEvent","PromiseRejectionEvent","wrappedCallback","dataCallback","original","normalizedData","each","obj","j","hasKey","objectMerge","obj1","obj2","key","objectFrozen","isFrozen","truncate","str","max","substr","object","joinRegExp","patterns","pattern","sources","len","replace","source","RegExp","join","urlencode","pairs","encodeURIComponent","parseUrl","url","match","query","fragment","protocol","host","path","relative","uuid4","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","Math","random","htmlTreeAsString","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","reverse","className","classes","attr","tagName","toLowerCase","id","split","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","isSameException","ex1","ex2","values","type","stacktrace","isSameStacktrace","stack1","stack2","frames1","frames","frames2","filename","lineno","colno","fill","name","replacement","track","orig","__raven__","__orig__","input","delimiter","output","String"],"mappings":"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","file":"console.min.js"} \ No newline at end of file +{"version":3,"sources":["console.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","Plugins","Console","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","consolePlugin","console","pluginOptions","logLevels","levels","push","callback","msg","data","captureMessage","level","pop","wrapConsoleMethod","wrapMethod","2","utils","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","safeJoin","logger","extra","Function","prototype","apply","3","isObject","what","isError","value","toString","isErrorEvent","supportsErrorEvent","isUndefined","isFunction","isPlainObject","Object","isString","isArray","isEmptyObject","_","hasOwnProperty","ErrorEvent","supportsFetch","_window","Headers","Request","Response","supportsReferrerPolicy","referrerPolicy","supportsPromiseRejectionEvent","PromiseRejectionEvent","wrappedCallback","dataCallback","original","normalizedData","each","obj","j","hasKey","objectMerge","obj1","obj2","key","objectFrozen","isFrozen","truncate","str","max","substr","object","joinRegExp","patterns","pattern","sources","len","replace","source","RegExp","join","urlencode","pairs","encodeURIComponent","parseUrl","url","match","query","fragment","protocol","host","path","relative","uuid4","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","Math","random","htmlTreeAsString","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","reverse","className","classes","attr","tagName","toLowerCase","id","split","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","isSameException","ex1","ex2","values","type","stacktrace","isSameStacktrace","stack1","stack2","frames1","frames","frames2","filename","lineno","colno","fill","name","replacement","track","orig","__raven__","__orig__","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","JSON","stringify","serializeValue","maxLength","serializeObject","depth","keys","reduce","acc","Array","map","val","serializeException","ex","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","serializeKeysForMessage","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","4","indexOf","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","err","stack","message","thisPos","splice","Infinity","getSerialize"],"mappings":"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","file":"console.min.js"} \ No newline at end of file diff --git a/dist/plugins/ember.js b/dist/plugins/ember.js index a6c421cf322f..dfea1d7c758b 100644 --- a/dist/plugins/ember.js +++ b/dist/plugins/ember.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.23.1 (84edddc) | github.com/getsentry/raven-js */ +/*! Raven.js 3.23.2 (72f8e05) | github.com/getsentry/raven-js */ /* * Includes TraceKit diff --git a/dist/plugins/ember.min.js b/dist/plugins/ember.min.js index 0efaecc02e12..4bca693609ed 100644 --- a/dist/plugins/ember.min.js +++ b/dist/plugins/ember.min.js @@ -1,3 +1,3 @@ -/*! Raven.js 3.23.1 (84edddc) | github.com/getsentry/raven-js */ +/*! Raven.js 3.23.2 (72f8e05) | github.com/getsentry/raven-js */ !function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b=b.Raven||(b.Raven={}),b=b.Plugins||(b.Plugins={}),b.Ember=a()}}(function(){return function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};b[g][0].call(k.exports,function(a){var c=b[g][1][a];return e(c?c:a)},k,k.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;g":"anonymous component")+(a._isVue&&a.$options.__file?" at "+a.$options.__file:"")}function e(a,b){if(b=b||window.Vue,b&&b.config){var c=b.config.errorHandler;b.config.errorHandler=function(b,e,f){var g={};"[object Object]"===Object.prototype.toString.call(e)&&(g.componentName=d(e),g.propsData=e.$options.propsData),"undefined"!=typeof f&&(g.lifecycleHook=f),a.captureException(b,{extra:g}),"function"==typeof c&&c.call(this,b,e,f)}}}b.exports=e},{}]},{},[1])(1)}); //# sourceMappingURL=vue.min.js.map \ No newline at end of file diff --git a/dist/raven.js b/dist/raven.js index e6229c6f04de..97d5aae29b7b 100644 --- a/dist/raven.js +++ b/dist/raven.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.23.1 (84edddc) | github.com/getsentry/raven-js */ +/*! Raven.js 3.23.2 (72f8e05) | github.com/getsentry/raven-js */ /* * Includes TraceKit @@ -70,11 +70,13 @@ module.exports = { var TraceKit = _dereq_(6); var stringify = _dereq_(7); +var md5 = _dereq_(8); var RavenConfigError = _dereq_(1); var utils = _dereq_(5); var isError = utils.isError; var isObject = utils.isObject; +var isPlainObject = utils.isPlainObject; var isErrorEvent = utils.isErrorEvent; var isUndefined = utils.isUndefined; var isFunction = utils.isFunction; @@ -96,6 +98,8 @@ var parseUrl = utils.parseUrl; var fill = utils.fill; var supportsFetch = utils.supportsFetch; var supportsReferrerPolicy = utils.supportsReferrerPolicy; +var serializeKeysForMessage = utils.serializeKeysForMessage; +var serializeException = utils.serializeException; var wrapConsoleMethod = _dereq_(2).wrapMethod; @@ -200,7 +204,7 @@ Raven.prototype = { // webpack (using a build step causes webpack #1617). Grunt verifies that // this value matches package.json during build. // See: https://github.com/getsentry/raven-js/issues/465 - VERSION: '3.23.1', + VERSION: '3.23.2', debug: false, @@ -499,7 +503,8 @@ Raven.prototype = { */ _attachPromiseRejectionHandler: function() { this._promiseRejectionHandler = this._promiseRejectionHandler.bind(this); - _window.addEventListener && _window.addEventListener('unhandledrejection', this._promiseRejectionHandler); + _window.addEventListener && + _window.addEventListener('unhandledrejection', this._promiseRejectionHandler); return this; }, @@ -509,7 +514,8 @@ Raven.prototype = { * @return {raven} */ _detachPromiseRejectionHandler: function() { - _window.removeEventListener && _window.removeEventListener('unhandledrejection', this._promiseRejectionHandler); + _window.removeEventListener && + _window.removeEventListener('unhandledrejection', this._promiseRejectionHandler); return this; }, @@ -522,23 +528,34 @@ Raven.prototype = { */ captureException: function(ex, options) { options = objectMerge({trimHeadFrames: 0}, options ? options : {}); - // Cases for sending ex as a message, rather than an exception - var isNotError = !isError(ex); - var isNotErrorEvent = !isErrorEvent(ex); - var isErrorEventWithoutError = isErrorEvent(ex) && !ex.error; - - if ((isNotError && isNotErrorEvent) || isErrorEventWithoutError) { - return this.captureMessage( - ex, - objectMerge(options, { - stacktrace: true, // if we fall back to captureMessage, default to attempting a new trace - trimHeadFrames: options.trimHeadFrames + 1 - }) - ); - } - // Get actual Error from ErrorEvent - if (isErrorEvent(ex)) ex = ex.error; + if (isPlainObject(ex)) { + // If it is plain Object, serialize it manually and extract options + // This will allow us to group events based on top-level keys + // which is much better than creating new group when any key/value change + options = this._getCaptureExceptionOptionsFromPlainObject(options, ex); + ex = new Error(options.message); + + } else if (isErrorEvent(ex) && ex.error) { + // If it is an ErrorEvent with `error` property, extract it to get actual Error + ex = ex.error; + } else if (isError(ex)){ + // we have a real Error object + ex = ex; + } else { + // If none of previous checks were valid, then it means that + // it's not a plain Object + // it's not a valid ErrorEvent (one with an error property) + // it's not an Error + // So bail out and capture it as a simple message: + return this.captureMessage( + ex, + objectMerge(options, { + stacktrace: true, // if we fall back to captureMessage, default to attempting a new trace + trimHeadFrames: options.trimHeadFrames + 1 + }) + ); + } // Store the raw exception object for potential debugging and introspection this._lastCapturedException = ex; @@ -560,6 +577,19 @@ Raven.prototype = { return this; }, + _getCaptureExceptionOptionsFromPlainObject: function(currentOptions, ex) { + var exKeys = Object.keys(ex).sort(); + var options = objectMerge(currentOptions, { + message: + 'Non-Error exception captured with keys: ' + serializeKeysForMessage(exKeys), + fingerprint: [md5(exKeys)], + extra: currentOptions.extra || {} + }); + options.extra.__serialized__ = serializeException(ex); + + return options; + }, + /* * Manually send a message to Sentry * @@ -579,10 +609,11 @@ Raven.prototype = { } options = options || {}; + msg = msg + ''; // Make sure it's actually a string var data = objectMerge( { - message: msg + '' // Make sure it's actually a string + message: msg }, options ); @@ -621,11 +652,11 @@ Raven.prototype = { } if (this._globalOptions.stacktrace || (options && options.stacktrace)) { + // fingerprint on msg, not stack trace (legacy behavior, could be revisited) + data.fingerprint = data.fingerprint == null ? msg : data.fingerprint; + options = objectMerge( { - // fingerprint on msg, not stack trace (legacy behavior, could be - // revisited) - fingerprint: msg, trimHeadFrames: 0 }, options @@ -643,6 +674,13 @@ Raven.prototype = { }; } + // Make sure that fingerprint is always wrapped in an array + if (data.fingerprint) { + data.fingerprint = isArray(data.fingerprint) + ? data.fingerprint + : [data.fingerprint]; + } + // Fire away! this._send(data); @@ -2160,7 +2198,7 @@ Raven.prototype.setReleaseContext = Raven.prototype.setRelease; module.exports = Raven; }).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) -},{"1":1,"2":2,"5":5,"6":6,"7":7}],4:[function(_dereq_,module,exports){ +},{"1":1,"2":2,"5":5,"6":6,"7":7,"8":8}],4:[function(_dereq_,module,exports){ (function (global){ /** * Enforces a single instance of the Raven client, and the @@ -2197,6 +2235,8 @@ module.exports = Raven; }).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) },{"3":3}],5:[function(_dereq_,module,exports){ (function (global){ +var stringify = _dereq_(7); + var _window = typeof window !== 'undefined' ? window @@ -2640,6 +2680,98 @@ function safeJoin(input, delimiter) { return output.join(delimiter); } +// Default Node.js REPL depth +var MAX_SERIALIZE_EXCEPTION_DEPTH = 3; +// 50kB, as 100kB is max payload size, so half sounds reasonable +var MAX_SERIALIZE_EXCEPTION_SIZE = 50 * 1024; +var MAX_SERIALIZE_KEYS_LENGTH = 40; + +function utf8Length(value) { + return ~-encodeURI(value).split(/%..|./).length; +} + +function jsonSize(value) { + return utf8Length(JSON.stringify(value)); +} + +function serializeValue(value) { + var maxLength = 40; + + if (typeof value === 'string') { + return value.length <= maxLength ? value : value.substr(0, maxLength - 1) + '\u2026'; + } else if ( + typeof value === 'number' || + typeof value === 'boolean' || + typeof value === 'undefined' + ) { + return value; + } + + var type = Object.prototype.toString.call(value); + + // Node.js REPL notation + if (type === '[object Object]') return '[Object]'; + if (type === '[object Array]') return '[Array]'; + if (type === '[object Function]') + return value.name ? '[Function: ' + value.name + ']' : '[Function]'; + + return value; +} + +function serializeObject(value, depth) { + if (depth === 0) return serializeValue(value); + + if (isPlainObject(value)) { + return Object.keys(value).reduce(function(acc, key) { + acc[key] = serializeObject(value[key], depth - 1); + return acc; + }, {}); + } else if (Array.isArray(value)) { + return value.map(function(val) { + return serializeObject(val, depth - 1); + }); + } + + return serializeValue(value); +} + +function serializeException(ex, depth, maxSize) { + if (!isPlainObject(ex)) return ex; + + depth = typeof depth !== 'number' ? MAX_SERIALIZE_EXCEPTION_DEPTH : depth; + maxSize = typeof depth !== 'number' ? MAX_SERIALIZE_EXCEPTION_SIZE : maxSize; + + var serialized = serializeObject(ex, depth); + + if (jsonSize(stringify(serialized)) > maxSize) { + return serializeException(ex, depth - 1); + } + + return serialized; +} + +function serializeKeysForMessage(keys, maxLength) { + if (typeof keys === 'number' || typeof keys === 'string') return keys.toString(); + if (!Array.isArray(keys)) return ''; + + keys = keys.filter(function(key) { + return typeof key === 'string'; + }); + if (keys.length === 0) return '[object has no keys]'; + + maxLength = typeof maxLength !== 'number' ? MAX_SERIALIZE_KEYS_LENGTH : maxLength; + if (keys[0].length >= maxLength) return keys[0]; + + for (var usedKeys = keys.length; usedKeys > 0; usedKeys--) { + var serialized = keys.slice(0, usedKeys).join(', '); + if (serialized.length > maxLength) continue; + if (usedKeys === keys.length) return serialized; + return serialized + '\u2026'; + } + + return ''; +} + module.exports = { isObject: isObject, isError: isError, @@ -2669,11 +2801,13 @@ module.exports = { isSameStacktrace: isSameStacktrace, parseUrl: parseUrl, fill: fill, - safeJoin: safeJoin + safeJoin: safeJoin, + serializeException: serializeException, + serializeKeysForMessage: serializeKeysForMessage }; }).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) -},{}],6:[function(_dereq_,module,exports){ +},{"7":7}],6:[function(_dereq_,module,exports){ (function (global){ var utils = _dereq_(5); @@ -3382,5 +3516,273 @@ function serializer(replacer, cycleReplacer) { }; } +},{}],8:[function(_dereq_,module,exports){ +/* + * JavaScript MD5 + * https://github.com/blueimp/JavaScript-MD5 + * + * Copyright 2011, Sebastian Tschan + * https://blueimp.net + * + * Licensed under the MIT license: + * https://opensource.org/licenses/MIT + * + * Based on + * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message + * Digest Algorithm, as defined in RFC 1321. + * Version 2.2 Copyright (C) Paul Johnston 1999 - 2009 + * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet + * Distributed under the BSD License + * See http://pajhome.org.uk/crypt/md5 for more info. + */ + +/* +* Add integers, wrapping at 2^32. This uses 16-bit operations internally +* to work around bugs in some JS interpreters. +*/ +function safeAdd(x, y) { + var lsw = (x & 0xffff) + (y & 0xffff); + var msw = (x >> 16) + (y >> 16) + (lsw >> 16); + return (msw << 16) | (lsw & 0xffff); +} + +/* +* Bitwise rotate a 32-bit number to the left. +*/ +function bitRotateLeft(num, cnt) { + return (num << cnt) | (num >>> (32 - cnt)); +} + +/* +* These functions implement the four basic operations the algorithm uses. +*/ +function md5cmn(q, a, b, x, s, t) { + return safeAdd(bitRotateLeft(safeAdd(safeAdd(a, q), safeAdd(x, t)), s), b); +} +function md5ff(a, b, c, d, x, s, t) { + return md5cmn((b & c) | (~b & d), a, b, x, s, t); +} +function md5gg(a, b, c, d, x, s, t) { + return md5cmn((b & d) | (c & ~d), a, b, x, s, t); +} +function md5hh(a, b, c, d, x, s, t) { + return md5cmn(b ^ c ^ d, a, b, x, s, t); +} +function md5ii(a, b, c, d, x, s, t) { + return md5cmn(c ^ (b | ~d), a, b, x, s, t); +} + +/* +* Calculate the MD5 of an array of little-endian words, and a bit length. +*/ +function binlMD5(x, len) { + /* append padding */ + x[len >> 5] |= 0x80 << (len % 32); + x[(((len + 64) >>> 9) << 4) + 14] = len; + + var i; + var olda; + var oldb; + var oldc; + var oldd; + var a = 1732584193; + var b = -271733879; + var c = -1732584194; + var d = 271733878; + + for (i = 0; i < x.length; i += 16) { + olda = a; + oldb = b; + oldc = c; + oldd = d; + + a = md5ff(a, b, c, d, x[i], 7, -680876936); + d = md5ff(d, a, b, c, x[i + 1], 12, -389564586); + c = md5ff(c, d, a, b, x[i + 2], 17, 606105819); + b = md5ff(b, c, d, a, x[i + 3], 22, -1044525330); + a = md5ff(a, b, c, d, x[i + 4], 7, -176418897); + d = md5ff(d, a, b, c, x[i + 5], 12, 1200080426); + c = md5ff(c, d, a, b, x[i + 6], 17, -1473231341); + b = md5ff(b, c, d, a, x[i + 7], 22, -45705983); + a = md5ff(a, b, c, d, x[i + 8], 7, 1770035416); + d = md5ff(d, a, b, c, x[i + 9], 12, -1958414417); + c = md5ff(c, d, a, b, x[i + 10], 17, -42063); + b = md5ff(b, c, d, a, x[i + 11], 22, -1990404162); + a = md5ff(a, b, c, d, x[i + 12], 7, 1804603682); + d = md5ff(d, a, b, c, x[i + 13], 12, -40341101); + c = md5ff(c, d, a, b, x[i + 14], 17, -1502002290); + b = md5ff(b, c, d, a, x[i + 15], 22, 1236535329); + + a = md5gg(a, b, c, d, x[i + 1], 5, -165796510); + d = md5gg(d, a, b, c, x[i + 6], 9, -1069501632); + c = md5gg(c, d, a, b, x[i + 11], 14, 643717713); + b = md5gg(b, c, d, a, x[i], 20, -373897302); + a = md5gg(a, b, c, d, x[i + 5], 5, -701558691); + d = md5gg(d, a, b, c, x[i + 10], 9, 38016083); + c = md5gg(c, d, a, b, x[i + 15], 14, -660478335); + b = md5gg(b, c, d, a, x[i + 4], 20, -405537848); + a = md5gg(a, b, c, d, x[i + 9], 5, 568446438); + d = md5gg(d, a, b, c, x[i + 14], 9, -1019803690); + c = md5gg(c, d, a, b, x[i + 3], 14, -187363961); + b = md5gg(b, c, d, a, x[i + 8], 20, 1163531501); + a = md5gg(a, b, c, d, x[i + 13], 5, -1444681467); + d = md5gg(d, a, b, c, x[i + 2], 9, -51403784); + c = md5gg(c, d, a, b, x[i + 7], 14, 1735328473); + b = md5gg(b, c, d, a, x[i + 12], 20, -1926607734); + + a = md5hh(a, b, c, d, x[i + 5], 4, -378558); + d = md5hh(d, a, b, c, x[i + 8], 11, -2022574463); + c = md5hh(c, d, a, b, x[i + 11], 16, 1839030562); + b = md5hh(b, c, d, a, x[i + 14], 23, -35309556); + a = md5hh(a, b, c, d, x[i + 1], 4, -1530992060); + d = md5hh(d, a, b, c, x[i + 4], 11, 1272893353); + c = md5hh(c, d, a, b, x[i + 7], 16, -155497632); + b = md5hh(b, c, d, a, x[i + 10], 23, -1094730640); + a = md5hh(a, b, c, d, x[i + 13], 4, 681279174); + d = md5hh(d, a, b, c, x[i], 11, -358537222); + c = md5hh(c, d, a, b, x[i + 3], 16, -722521979); + b = md5hh(b, c, d, a, x[i + 6], 23, 76029189); + a = md5hh(a, b, c, d, x[i + 9], 4, -640364487); + d = md5hh(d, a, b, c, x[i + 12], 11, -421815835); + c = md5hh(c, d, a, b, x[i + 15], 16, 530742520); + b = md5hh(b, c, d, a, x[i + 2], 23, -995338651); + + a = md5ii(a, b, c, d, x[i], 6, -198630844); + d = md5ii(d, a, b, c, x[i + 7], 10, 1126891415); + c = md5ii(c, d, a, b, x[i + 14], 15, -1416354905); + b = md5ii(b, c, d, a, x[i + 5], 21, -57434055); + a = md5ii(a, b, c, d, x[i + 12], 6, 1700485571); + d = md5ii(d, a, b, c, x[i + 3], 10, -1894986606); + c = md5ii(c, d, a, b, x[i + 10], 15, -1051523); + b = md5ii(b, c, d, a, x[i + 1], 21, -2054922799); + a = md5ii(a, b, c, d, x[i + 8], 6, 1873313359); + d = md5ii(d, a, b, c, x[i + 15], 10, -30611744); + c = md5ii(c, d, a, b, x[i + 6], 15, -1560198380); + b = md5ii(b, c, d, a, x[i + 13], 21, 1309151649); + a = md5ii(a, b, c, d, x[i + 4], 6, -145523070); + d = md5ii(d, a, b, c, x[i + 11], 10, -1120210379); + c = md5ii(c, d, a, b, x[i + 2], 15, 718787259); + b = md5ii(b, c, d, a, x[i + 9], 21, -343485551); + + a = safeAdd(a, olda); + b = safeAdd(b, oldb); + c = safeAdd(c, oldc); + d = safeAdd(d, oldd); + } + return [a, b, c, d]; +} + +/* +* Convert an array of little-endian words to a string +*/ +function binl2rstr(input) { + var i; + var output = ''; + var length32 = input.length * 32; + for (i = 0; i < length32; i += 8) { + output += String.fromCharCode((input[i >> 5] >>> (i % 32)) & 0xff); + } + return output; +} + +/* +* Convert a raw string to an array of little-endian words +* Characters >255 have their high-byte silently ignored. +*/ +function rstr2binl(input) { + var i; + var output = []; + output[(input.length >> 2) - 1] = undefined; + for (i = 0; i < output.length; i += 1) { + output[i] = 0; + } + var length8 = input.length * 8; + for (i = 0; i < length8; i += 8) { + output[i >> 5] |= (input.charCodeAt(i / 8) & 0xff) << (i % 32); + } + return output; +} + +/* +* Calculate the MD5 of a raw string +*/ +function rstrMD5(s) { + return binl2rstr(binlMD5(rstr2binl(s), s.length * 8)); +} + +/* +* Calculate the HMAC-MD5, of a key and some data (raw strings) +*/ +function rstrHMACMD5(key, data) { + var i; + var bkey = rstr2binl(key); + var ipad = []; + var opad = []; + var hash; + ipad[15] = opad[15] = undefined; + if (bkey.length > 16) { + bkey = binlMD5(bkey, key.length * 8); + } + for (i = 0; i < 16; i += 1) { + ipad[i] = bkey[i] ^ 0x36363636; + opad[i] = bkey[i] ^ 0x5c5c5c5c; + } + hash = binlMD5(ipad.concat(rstr2binl(data)), 512 + data.length * 8); + return binl2rstr(binlMD5(opad.concat(hash), 512 + 128)); +} + +/* +* Convert a raw string to a hex string +*/ +function rstr2hex(input) { + var hexTab = '0123456789abcdef'; + var output = ''; + var x; + var i; + for (i = 0; i < input.length; i += 1) { + x = input.charCodeAt(i); + output += hexTab.charAt((x >>> 4) & 0x0f) + hexTab.charAt(x & 0x0f); + } + return output; +} + +/* +* Encode a string as utf-8 +*/ +function str2rstrUTF8(input) { + return unescape(encodeURIComponent(input)); +} + +/* +* Take string arguments and return either raw or hex encoded strings +*/ +function rawMD5(s) { + return rstrMD5(str2rstrUTF8(s)); +} +function hexMD5(s) { + return rstr2hex(rawMD5(s)); +} +function rawHMACMD5(k, d) { + return rstrHMACMD5(str2rstrUTF8(k), str2rstrUTF8(d)); +} +function hexHMACMD5(k, d) { + return rstr2hex(rawHMACMD5(k, d)); +} + +function md5(string, key, raw) { + if (!key) { + if (!raw) { + return hexMD5(string); + } + return rawMD5(string); + } + if (!raw) { + return hexHMACMD5(key, string); + } + return rawHMACMD5(key, string); +} + +module.exports = md5; + },{}]},{},[4])(4) }); \ No newline at end of file diff --git a/dist/raven.min.js b/dist/raven.min.js index a38734bca380..6abbdfbc0c26 100644 --- a/dist/raven.min.js +++ b/dist/raven.min.js @@ -1,3 +1,4 @@ -/*! Raven.js 3.23.1 (84edddc) | github.com/getsentry/raven-js */ -!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.Raven=a()}}(function(){return function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};b[g][0].call(k.exports,function(a){var c=b[g][1][a];return e(c?c:a)},k,k.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;gthis.k.maxBreadcrumbs&&this.u.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.r.push([a,b]),this.n&&this.F(),this},setUserContext:function(a){return this.j.user=a,this},setExtraContext:function(a){return this.X("extra",a),this},setTagsContext:function(a){return this.X("tags",a),this},clearContext:function(){return this.j={},this},getContext:function(){return JSON.parse(h(this.j))},setEnvironment:function(a){return this.k.environment=a,this},setRelease:function(a){return this.k.release=a,this},setDataCallback:function(a){var b=this.k.dataCallback;return this.k.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.k.breadcrumbCallback;return this.k.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.k.shouldSendCallback;return this.k.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.k.transport=a,this},lastException:function(){return this.d},lastEventId:function(){return this.f},isSetup:function(){return!!this.a&&(!!this.g||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.z("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=K.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(L){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new i("Missing eventId");var c=a.dsn||this.H;if(!c)throw new i("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.j.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.J(this.G(c)),h=L.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(L.head||L.body).appendChild(h)}},L:function(){var a=this;this.m+=1,setTimeout(function(){a.m-=1})},Y:function(a,b){var c,d;if(this.b){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),L.createEvent?(c=L.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=L.createEventObject(),c.eventType=a);for(d in b)w(b,d)&&(c[d]=b[d]);if(L.createEvent)L.dispatchEvent(c);else try{L.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},Z:function(a){var b=this;return function(c){if(b.$=null,b.v!==c){b.v=c;var d;try{d=A(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},_:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.$;g||a.Z("input")(c),clearTimeout(g),a.$=setTimeout(function(){a.$=null},b)}}},aa:function(a,b){var c=D(this.w.href),d=D(b),e=D(a);this.x=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},C:function(){var a=this;a.ba=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.M?a.ba.apply(this.O,arguments):a.ba.apply(this,arguments)}},Q:function(){this.ba&&(Function.prototype.toString=this.ba)},D:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.aa(b.x,c+""),a.apply(this,arguments)}};E(history,"pushState",j,d),E(history,"replaceState",j,d)}if(c.console&&"console"in K&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};s(["debug","info","warn","error","log"],function(a,b){H(console,b,k)})}},R:function(){for(var a;this.t.length;){a=this.t.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},S:function(){for(var a in this.q)this.p[a]=this.q[a]},F:function(){var a=this;s(this.r,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},G:function(a){var b=J.exec(a),c={},d=7;try{for(;d--;)c[I[d]]=b[d]||""}catch(e){throw new i("Invalid DSN: "+a)}if(c.pass&&!this.k.allowSecretKey)throw new i("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},J:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},A:function(){this.m||this.U.apply(this,arguments)},U:function(a,b){var c=this.V(a,b);this.Y("handle",{stackInfo:a,options:b}),this.da(a.name,a.message,a.url,a.lineno,c,b)},V:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(s(a.stack,function(b,e){var f=c.ea(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.u,0)}),this.j.user&&(a.user=this.j.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||r(a[b]))&&delete a[b]}),o(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!r(a)&&(!o(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.ka()?void this.z("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function A(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&i(b))for(c=b.split(/\s+/),f=0;f=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function k(a,b){var c=null;if(!b||f.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(h.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,g,h){var l=null,m=e.isErrorEvent(h)?h.error:h,n=e.isErrorEvent(a)?a.message:a;if(v)f.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&e.isError(m))l=f.computeStackTrace(m),k(l,!0);else{var p,r={url:b,line:c,column:g},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(j);p&&(s=p[1],n=p[2])}r.func=i,l={name:s,message:n,url:d(),stack:[r]},k(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=g.onerror,g.onerror=l,r=!0)}function n(){r&&(g.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,k.apply(null,[a,!1].concat(b))}function p(a,b){var c=h.call(arguments,1);if(v){if(u===a)return;o()}var d=f.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),f.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,e,f=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,g=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,h=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,j=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,k=/\((\S*)(?::(\d+))(?::(\d+))\)/,l=a.stack.split("\n"),m=[],n=(/^(.*) is undefined$/.exec(a.message),0),o=l.length;n eval")>-1;q&&(b=j.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==n||c[5]||"undefined"==typeof a.columnNumber||(m[0].column=a.columnNumber+1),e={url:c[3],func:c[1]||i,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}!e.func&&e.line&&(e.func=i),m.push(e)}return m.length?{name:a.name,message:a.message,url:d(),stack:m}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=i),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,g){for(var h,j,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==e&&o!==f.report){if(j={url:null,func:i,line:null,column:null},o.name?j.func=o.name:(h=k.exec(o.toString()))&&(j.func=h[1]),"undefined"==typeof j.func)try{j.func=h.input.substring(0,h.input.indexOf("{"))}catch(p){}m[""+o]?n=!0:m[""+o]=!0,l.push(j)}g&&l.splice(0,g);var q={name:a.name,message:a.message,url:d(),stack:l};return b(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),q}function e(b,e){var g=null;e=null==e?0:+e;try{if(g=a(b))return g}catch(h){if(f.debug)throw h}try{if(g=c(b,e+1))return g}catch(h){if(f.debug)throw h}return{name:b.name,message:b.message,url:d()}}return e.augmentStackTraceWithInitialElement=b,e.computeStackTraceFromStackProp=a,e}(),b.exports=f}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{5:5}],7:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}]},{},[4])(4)}); +/*! Raven.js 3.23.2 (72f8e05) | github.com/getsentry/raven-js */ +!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.Raven=a()}}(function(){return function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};b[g][0].call(k.exports,function(a){var c=b[g][1][a];return e(c?c:a)},k,k.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;gthis.k.maxBreadcrumbs&&this.u.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.r.push([a,b]),this.n&&this.F(),this},setUserContext:function(a){return this.j.user=a,this},setExtraContext:function(a){return this.Z("extra",a),this},setTagsContext:function(a){return this.Z("tags",a),this},clearContext:function(){return this.j={},this},getContext:function(){return JSON.parse(h(this.j))},setEnvironment:function(a){return this.k.environment=a,this},setRelease:function(a){return this.k.release=a,this},setDataCallback:function(a){var b=this.k.dataCallback;return this.k.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.k.breadcrumbCallback;return this.k.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.k.shouldSendCallback;return this.k.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.k.transport=a,this},lastException:function(){return this.d},lastEventId:function(){return this.f},isSetup:function(){return!!this.a&&(!!this.g||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.z("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=O.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(P){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.H;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.j.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.J(this.G(c)),h=P.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(P.head||P.body).appendChild(h)}},L:function(){var a=this;this.m+=1,setTimeout(function(){a.m-=1})},$:function(a,b){var c,d;if(this.b){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),P.createEvent?(c=P.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=P.createEventObject(),c.eventType=a);for(d in b)y(b,d)&&(c[d]=b[d]);if(P.createEvent)P.dispatchEvent(c);else try{P.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},_:function(a){var b=this;return function(c){if(b.aa=null,b.v!==c){b.v=c;var d;try{d=C(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ba:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.aa;g||a._("input")(c),clearTimeout(g),a.aa=setTimeout(function(){a.aa=null},b)}}},ca:function(a,b){var c=F(this.w.href),d=F(b),e=F(a);this.x=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},C:function(){var a=this;a.da=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.M?a.da.apply(this.O,arguments):a.da.apply(this,arguments)}},Q:function(){this.da&&(Function.prototype.toString=this.da)},D:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.ca(b.x,c+""),a.apply(this,arguments)}};G(history,"pushState",j,d),G(history,"replaceState",j,d)}if(c.console&&"console"in O&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};u(["debug","info","warn","error","log"],function(a,b){L(console,b,k)})}},R:function(){for(var a;this.t.length;){a=this.t.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},S:function(){for(var a in this.q)this.p[a]=this.q[a]},F:function(){var a=this;u(this.r,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},G:function(a){var b=N.exec(a),c={},d=7;try{for(;d--;)c[M[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.k.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},J:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},A:function(){this.m||this.V.apply(this,arguments)},V:function(a,b){var c=this.X(a,b);this.$("handle",{stackInfo:a,options:b}),this.fa(a.name,a.message,a.url,a.lineno,c,b)},X:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(u(a.stack,function(b,e){var f=c.ga(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.u,0)}),this.j.user&&(a.user=this.j.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||t(a[b]))&&delete a[b]}),q(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!t(a)&&(!q(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.ma()?void this.z("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function B(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&j(b))for(c=b.split(/\s+/),f=0;fc?M(a,b-1):d}function N(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?S:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}var O=a(7),P="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},Q=3,R=51200,S=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isUndefined:g,isFunction:h,isPlainObject:i,isString:j,isArray:k,isEmptyObject:l,supportsErrorEvent:m,supportsFetch:n,supportsReferrerPolicy:o,supportsPromiseRejectionEvent:p,wrappedCallback:q,each:r,objectMerge:s,truncate:u,objectFrozen:t,hasKey:v,joinRegExp:w,urlencode:x,uuid4:z,htmlTreeAsString:A,htmlElementAsString:B,isSameException:E,isSameStacktrace:F,parseUrl:y,fill:G,safeJoin:H,serializeException:M,serializeKeysForMessage:N}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{7:7}],6:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}var e=a(5),f={collectWindowErrors:!0,debug:!1},g="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},h=[].slice,i="?",j=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;f.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function k(a,b){var c=null;if(!b||f.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(h.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,g,h){var l=null,m=e.isErrorEvent(h)?h.error:h,n=e.isErrorEvent(a)?a.message:a;if(v)f.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&e.isError(m))l=f.computeStackTrace(m),k(l,!0);else{var p,r={url:b,line:c,column:g},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(j);p&&(s=p[1],n=p[2])}r.func=i,l={name:s,message:n,url:d(),stack:[r]},k(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=g.onerror,g.onerror=l,r=!0)}function n(){r&&(g.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,k.apply(null,[a,!1].concat(b))}function p(a,b){var c=h.call(arguments,1);if(v){if(u===a)return;o()}var d=f.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),f.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,e,f=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,g=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,h=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,j=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,k=/\((\S*)(?::(\d+))(?::(\d+))\)/,l=a.stack.split("\n"),m=[],n=(/^(.*) is undefined$/.exec(a.message),0),o=l.length;n eval")>-1;q&&(b=j.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==n||c[5]||"undefined"==typeof a.columnNumber||(m[0].column=a.columnNumber+1),e={url:c[3],func:c[1]||i,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}!e.func&&e.line&&(e.func=i),m.push(e)}return m.length?{name:a.name,message:a.message,url:d(),stack:m}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=i),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,g){for(var h,j,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==e&&o!==f.report){if(j={url:null,func:i,line:null,column:null},o.name?j.func=o.name:(h=k.exec(o.toString()))&&(j.func=h[1]),"undefined"==typeof j.func)try{j.func=h.input.substring(0,h.input.indexOf("{"))}catch(p){}m[""+o]?n=!0:m[""+o]=!0,l.push(j)}g&&l.splice(0,g);var q={name:a.name,message:a.message,url:d(),stack:l};return b(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),q}function e(b,e){var g=null;e=null==e?0:+e;try{if(g=a(b))return g}catch(h){if(f.debug)throw h}try{if(g=c(b,e+1))return g}catch(h){if(f.debug)throw h}return{name:b.name,message:b.message,url:d()}}return e.augmentStackTraceWithInitialElement=b,e.computeStackTraceFromStackProp=a,e}(),b.exports=f}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{5:5}],7:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}],8:[function(a,b,c){function d(a,b){var c=(65535&a)+(65535&b),d=(a>>16)+(b>>16)+(c>>16);return d<<16|65535&c}function e(a,b){return a<>>32-b}function f(a,b,c,f,g,h){return d(e(d(d(b,a),d(f,h)),g),c)}function g(a,b,c,d,e,g,h){return f(b&c|~b&d,a,b,e,g,h)}function h(a,b,c,d,e,g,h){return f(b&d|c&~d,a,b,e,g,h)}function i(a,b,c,d,e,g,h){return f(b^c^d,a,b,e,g,h)}function j(a,b,c,d,e,g,h){return f(c^(b|~d),a,b,e,g,h)}function k(a,b){a[b>>5]|=128<>>9<<4)+14]=b;var c,e,f,k,l,m=1732584193,n=-271733879,o=-1732584194,p=271733878;for(c=0;c>5]>>>b%32&255);return c}function m(a){var b,c=[];for(c[(a.length>>2)-1]=void 0,b=0;b>5]|=(255&a.charCodeAt(b/8))<16&&(e=k(e,8*a.length)),c=0;c<16;c+=1)f[c]=909522486^e[c],g[c]=1549556828^e[c];return d=k(f.concat(m(b)),512+8*b.length),l(k(g.concat(d),640))}function p(a){var b,c,d="0123456789abcdef",e="";for(c=0;c>>4&15)+d.charAt(15&b);return e}function q(a){return unescape(encodeURIComponent(a))}function r(a){return n(q(a))}function s(a){return p(r(a))}function t(a,b){return o(q(a),q(b))}function u(a,b){return p(t(a,b))}function v(a,b,c){return b?c?t(b,a):u(b,a):c?r(a):s(a)}b.exports=v},{}]},{},[4])(4)}); //# sourceMappingURL=raven.min.js.map \ No newline at end of file diff --git a/dist/raven.min.js.map b/dist/raven.min.js.map index 5f09c661c695..511d390bac7a 100644 --- a/dist/raven.min.js.map +++ b/dist/raven.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","RavenConfigError","message","name","prototype","constructor","2","utils","wrapMethod","console","level","callback","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","msg","safeJoin","data","logger","extra","Function","apply","5","3","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","isError","isObject","isErrorEvent","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","wrapConsoleMethod","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","config","dsn","options","_logDebug","globalOptions","key","value","setDSN","push","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","toString","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","substr","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","context","func","undefined","wrap","_before","wrapped","deep","_ignoreNextOnError","captureException","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","T","event","reason","B","_promiseRejectionHandler","bind","addEventListener","P","removeEventListener","ex","trimHeadFrames","isNotError","isNotErrorEvent","isErrorEventWithoutError","error","captureMessage","stacktrace","stack","computeStackTrace","_handleStackInfo","ex1","test","initialCall","fileurl","url","fingerprint","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","addPlugin","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","setDataCallback","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","L","setTimeout","Y","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","Z","evtName","_keypressTimeout","target","category","_","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","aa","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","C","_originalFunctionToString","Q","D","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","type","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","E","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","R","builtin","S","F","installer","concat","G","str","m","exec","allowSecretKey","J","port","A","U","stackInfo","_triggerEvent","_processException","lineno","V","frame","_normalizeFrame","in_app","ea","stackInfoUrl","normalized","filename","line","colno","column","function","da","prefixedMessage","exception","values","culprit","fa","request","Referer","breadcrumbs","_trimBreadcrumbs","ga","urlProp","urlProps","ha","httpData","userAgent","User-Agent","referrer","y","_backoffDuration","_backoffStart","ka","la","current","last","ma","_shouldBackoff","retry","get","getResponseHeader","parseInt","W","baseData","project","platform","_getHttpData","serverName","server_name","Object","keys","forEach","random","_sendProcessedPayload","oa","na","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","pa","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","onerror","open","setRequestHeader","send","qa","hash","evaluated","z","X","setUser","setReleaseContext","6","7","4","RavenConstructor","_Raven","noConflict","what","supportsErrorEvent","isPlainObject","ErrorEvent","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","wrappedCallback","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","getLocationHref","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","initial","unshift","partial","computeStackTraceByWalkingCallerChain","depth","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file +{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","RavenConfigError","message","name","prototype","constructor","2","utils","wrapMethod","console","level","callback","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","msg","safeJoin","data","logger","extra","Function","apply","5","3","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isError","isObject","isPlainObject","isErrorEvent","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","wrapConsoleMethod","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","config","dsn","options","_logDebug","globalOptions","key","value","setDSN","push","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","toString","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","substr","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","context","func","undefined","wrap","_before","wrapped","deep","_ignoreNextOnError","captureException","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","T","event","reason","B","_promiseRejectionHandler","bind","addEventListener","P","removeEventListener","ex","trimHeadFrames","_getCaptureExceptionOptionsFromPlainObject","error","captureMessage","stacktrace","stack","computeStackTrace","_handleStackInfo","ex1","U","currentOptions","exKeys","Object","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","addPlugin","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","setDataCallback","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","L","setTimeout","$","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","_","evtName","_keypressTimeout","target","category","ba","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","ca","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","C","_originalFunctionToString","Q","D","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","type","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","E","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","R","builtin","S","F","installer","concat","G","str","m","exec","allowSecretKey","J","port","A","V","stackInfo","_triggerEvent","_processException","lineno","X","frame","_normalizeFrame","in_app","ga","stackInfoUrl","normalized","filename","line","colno","column","function","fa","prefixedMessage","exception","values","culprit","ha","request","Referer","breadcrumbs","_trimBreadcrumbs","ia","urlProp","urlProps","ja","httpData","userAgent","User-Agent","referrer","y","_backoffDuration","_backoffStart","ma","na","current","last","oa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Y","baseData","project","platform","_getHttpData","serverName","server_name","forEach","random","_sendProcessedPayload","qa","pa","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","ra","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","onerror","open","setRequestHeader","send","sa","hash","evaluated","z","Z","setUser","setReleaseContext","6","7","8","4","RavenConstructor","_Raven","noConflict","what","supportsErrorEvent","ErrorEvent","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","wrappedCallback","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","getLocationHref","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","charAt","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","k","hexHMACMD5","string","raw"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file diff --git a/dist/sri.json b/dist/sri.json index 567aef94ba8a..7fbe770ec279 100644 --- a/dist/sri.json +++ b/dist/sri.json @@ -1,20 +1,20 @@ { "@dist/raven.js": { "hashes": { - "sha256": "y4/aKaCCmTpvb+Pe42nLotW3plnbTA+O1yjvOESJi+A=", - "sha512": "k3tWTgP8abuoUfzFKHRnnIA3c7wFlqU9ELrG8Ivz7hqW/zAGgBzXOwWjPE9RLiZ/TvchrcKIst+po0Lfejiwog==" + "sha256": "3SpfxMUaoKdvV/KSFcNChRGafbiVlgwQg6sIi+XD7As=", + "sha512": "B17FNNZtKpMv7jo4zm7WXiiOAAtfzlZpmcifbiiZf9NJIJ2h7lTQ8cx0ilphbpAqZjkW9afkghOHNl7shx93JQ==" }, "type": null, - "integrity": "sha256-y4/aKaCCmTpvb+Pe42nLotW3plnbTA+O1yjvOESJi+A= sha512-k3tWTgP8abuoUfzFKHRnnIA3c7wFlqU9ELrG8Ivz7hqW/zAGgBzXOwWjPE9RLiZ/TvchrcKIst+po0Lfejiwog==", + "integrity": "sha256-3SpfxMUaoKdvV/KSFcNChRGafbiVlgwQg6sIi+XD7As= sha512-B17FNNZtKpMv7jo4zm7WXiiOAAtfzlZpmcifbiiZf9NJIJ2h7lTQ8cx0ilphbpAqZjkW9afkghOHNl7shx93JQ==", "path": "dist/raven.js" }, "@dist/raven.min.js": { "hashes": { - "sha256": "dk8pv3eguRWw+jXTPjU2LokunhTbqMP7EyMg7YKMfmc=", - "sha512": "ab2uU8roVxB0bAuxKGmfZguFRJMpOuUDlQ6AwpplGAUJV+dajvE+yHKa1panuCBcT+geG68FRmCcsEI7/+J4OA==" + "sha256": "nXtsPRT+cKDtuIyNxjQKhAT7uoScqXEH2g14uSPhJuE=", + "sha512": "+Jjj6mMOWWU4/q9eKd0NE+v/U8lNdEzo8Cnt1YsWapPp/M2PcInqqaqLZVxjtLRyO5ksyLyLS+IBznrKwZDRhA==" }, "type": null, - "integrity": "sha256-dk8pv3eguRWw+jXTPjU2LokunhTbqMP7EyMg7YKMfmc= sha512-ab2uU8roVxB0bAuxKGmfZguFRJMpOuUDlQ6AwpplGAUJV+dajvE+yHKa1panuCBcT+geG68FRmCcsEI7/+J4OA==", + "integrity": "sha256-nXtsPRT+cKDtuIyNxjQKhAT7uoScqXEH2g14uSPhJuE= sha512-+Jjj6mMOWWU4/q9eKd0NE+v/U8lNdEzo8Cnt1YsWapPp/M2PcInqqaqLZVxjtLRyO5ksyLyLS+IBznrKwZDRhA==", "path": "dist/raven.min.js" } } \ No newline at end of file diff --git a/docs/sentry-doc-config.json b/docs/sentry-doc-config.json index 2799eb0efbd4..4b4b0bb471d2 100644 --- a/docs/sentry-doc-config.json +++ b/docs/sentry-doc-config.json @@ -66,6 +66,6 @@ } }, "vars": { - "RAVEN_VERSION": "3.23.1" + "RAVEN_VERSION": "3.23.2" } } diff --git a/package.json b/package.json index f60e03871a16..59d2adb23f03 100644 --- a/package.json +++ b/package.json @@ -9,7 +9,7 @@ "raven", "sentry" ], - "version": "3.23.1", + "version": "3.23.2", "repository": "git://github.com/getsentry/raven-js.git", "license": "BSD-2-Clause", "homepage": "https://github.com/getsentry/raven-js", diff --git a/src/raven.js b/src/raven.js index a70411dcf424..f1d60855b4ed 100644 --- a/src/raven.js +++ b/src/raven.js @@ -136,7 +136,7 @@ Raven.prototype = { // webpack (using a build step causes webpack #1617). Grunt verifies that // this value matches package.json during build. // See: https://github.com/getsentry/raven-js/issues/465 - VERSION: '3.23.1', + VERSION: '3.23.2', debug: false, @@ -467,26 +467,25 @@ Raven.prototype = { // which is much better than creating new group when any key/value change options = this._getCaptureExceptionOptionsFromPlainObject(options, ex); ex = new Error(options.message); - } else if (isErrorEvent(ex) && ex.error) { // If it is an ErrorEvent with `error` property, extract it to get actual Error ex = ex.error; - } else if (isError(ex)){ + } else if (isError(ex)) { // we have a real Error object ex = ex; } else { - // If none of previous checks were valid, then it means that - // it's not a plain Object - // it's not a valid ErrorEvent (one with an error property) - // it's not an Error - // So bail out and capture it as a simple message: - return this.captureMessage( - ex, - objectMerge(options, { - stacktrace: true, // if we fall back to captureMessage, default to attempting a new trace - trimHeadFrames: options.trimHeadFrames + 1 - }) - ); + // If none of previous checks were valid, then it means that + // it's not a plain Object + // it's not a valid ErrorEvent (one with an error property) + // it's not an Error + // So bail out and capture it as a simple message: + return this.captureMessage( + ex, + objectMerge(options, { + stacktrace: true, // if we fall back to captureMessage, default to attempting a new trace + trimHeadFrames: options.trimHeadFrames + 1 + }) + ); } // Store the raw exception object for potential debugging and introspection diff --git a/test/raven.test.js b/test/raven.test.js index 819f31afc65e..3ac7e82b93e6 100644 --- a/test/raven.test.js +++ b/test/raven.test.js @@ -1349,7 +1349,7 @@ describe('globals', function() { extra: {'session:duration': 100} }); assert.deepEqual(opts.auth, { - sentry_client: 'raven-js/3.23.1', + sentry_client: 'raven-js/3.23.2', sentry_key: 'abc', sentry_version: '7' }); @@ -1396,7 +1396,7 @@ describe('globals', function() { extra: {'session:duration': 100} }); assert.deepEqual(opts.auth, { - sentry_client: 'raven-js/3.23.1', + sentry_client: 'raven-js/3.23.2', sentry_key: 'abc', sentry_secret: 'def', sentry_version: '7' From f261ec2301520608de0242ba04c451f78f1b02d0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kamil=20Og=C3=B3rek?= Date: Thu, 15 Mar 2018 19:18:41 +0100 Subject: [PATCH 25/75] fix: Handle Schrodingers Error (#1261) * fix: Handle Schrodingers Error * ref: Create better description for Schrodinger's Error --- src/raven.js | 14 +++++++------- test/raven.test.js | 40 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 47 insertions(+), 7 deletions(-) diff --git a/src/raven.js b/src/raven.js index f1d60855b4ed..7e8ed72e127b 100644 --- a/src/raven.js +++ b/src/raven.js @@ -461,18 +461,18 @@ Raven.prototype = { captureException: function(ex, options) { options = objectMerge({trimHeadFrames: 0}, options ? options : {}); - if (isPlainObject(ex)) { - // If it is plain Object, serialize it manually and extract options - // This will allow us to group events based on top-level keys - // which is much better than creating new group when any key/value change - options = this._getCaptureExceptionOptionsFromPlainObject(options, ex); - ex = new Error(options.message); - } else if (isErrorEvent(ex) && ex.error) { + if (isErrorEvent(ex) && ex.error) { // If it is an ErrorEvent with `error` property, extract it to get actual Error ex = ex.error; } else if (isError(ex)) { // we have a real Error object ex = ex; + } else if (isPlainObject(ex)) { + // If it is plain Object, serialize it manually and extract options + // This will allow us to group events based on top-level keys + // which is much better than creating new group when any key/value change + options = this._getCaptureExceptionOptionsFromPlainObject(options, ex); + ex = new Error(options.message); } else { // If none of previous checks were valid, then it means that // it's not a plain Object diff --git a/test/raven.test.js b/test/raven.test.js index 3ac7e82b93e6..9585759af91c 100644 --- a/test/raven.test.js +++ b/test/raven.test.js @@ -3066,8 +3066,10 @@ describe('Raven (public API)', function() { var error = new ErrorEvent('pickleRick', {error: new Error('pickleRick')}); this.sinon.stub(Raven, 'isSetup').returns(true); this.sinon.stub(Raven, '_handleStackInfo'); + this.sinon.spy(Raven, '_getCaptureExceptionOptionsFromPlainObject'); Raven.captureException(error, {foo: 'bar'}); assert.isTrue(Raven._handleStackInfo.calledOnce); + assert.isFalse(Raven._getCaptureExceptionOptionsFromPlainObject.called); }); it('should send ErrorEvents without Errors as messages', function() { @@ -3079,6 +3081,44 @@ describe('Raven (public API)', function() { }); } + it("should treat Schrodinger's Error in the same way as regular Error", function() { + // Schrodinger's Error is an object that is and is not an Error at the same time + // Like... error, but not really. + // But error. + // + // To be more exact, it's an object literal or an instance of constructor function + // that has it's prototype set to the Error object itself. + // When using `isPlanObject`, which makes a call to `Object.prototype.toString`, + // it returns `[object Object]`, because any instance created with `new X` + // where X is a custom constructor like `function X () {}`, it's return value + // is an object literal. + // However, because it has it's prototype set to an Error object, + // when using `instanceof Error` check, it returns `true`, because calls + // like this, are always going up the prototype chain and will verify + // all possible constructors. For example: + // + // class Foo extends Bar {} + // class Bar extends Error {} + // + // var foo = new Foo(); + // + // and now `foo` is instance of every "extension" ever created in the chain + // + // foo instanceof Foo; // true + // foo instanceof Bar; // true (because Foo extends Bar) + // foo instanceof Error; // true (because Foo extends Bar that extends Error) + + function SchrodingersError() {} + SchrodingersError.prototype = new Error("Schrödinger's cat was here"); + var error = new SchrodingersError(); + this.sinon.stub(Raven, 'isSetup').returns(true); + this.sinon.stub(Raven, '_handleStackInfo'); + this.sinon.spy(Raven, '_getCaptureExceptionOptionsFromPlainObject'); + Raven.captureException(error, {foo: 'bar'}); + assert.isTrue(Raven._handleStackInfo.calledOnce); + assert.isFalse(Raven._getCaptureExceptionOptionsFromPlainObject.called); + }); + it('should call handleStackInfo', function() { var error = new Error('pickleRick'); this.sinon.stub(Raven, 'isSetup').returns(true); From 8fc21de728bc5c561f7eac18e86d96de6caa041b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kamil=20Og=C3=B3rek?= Date: Thu, 15 Mar 2018 19:21:42 +0100 Subject: [PATCH 26/75] 3.23.3 --- CHANGELOG.md | 4 ++++ bower.json | 2 +- dist/plugins/angular.js | 2 +- dist/plugins/angular.min.js | 2 +- dist/plugins/console.js | 2 +- dist/plugins/console.min.js | 2 +- dist/plugins/ember.js | 2 +- dist/plugins/ember.min.js | 2 +- dist/plugins/require.js | 2 +- dist/plugins/require.min.js | 2 +- dist/plugins/vue.js | 2 +- dist/plugins/vue.min.js | 2 +- dist/raven.js | 43 ++++++++++++++++++------------------- dist/raven.min.js | 4 ++-- dist/raven.min.js.map | 2 +- dist/sri.json | 12 +++++------ docs/sentry-doc-config.json | 2 +- package.json | 2 +- src/raven.js | 2 +- test/raven.test.js | 4 ++-- 20 files changed, 50 insertions(+), 47 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5a49b1912835..fd9d3872833c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,9 @@ # Changelog +## 3.23.3 + +* BUGFIX: Fix detection of custom error objects in `captureException` method, aka "Schrodinger's Error"© patch(#1261) + ## 3.23.2 **NOTE**: diff --git a/bower.json b/bower.json index 05fb2ad8732e..651dad5a943c 100644 --- a/bower.json +++ b/bower.json @@ -1,6 +1,6 @@ { "name": "raven-js", - "version": "3.23.2", + "version": "3.23.3", "dependencies": {}, "main": "dist/raven.js", "ignore": [ diff --git a/dist/plugins/angular.js b/dist/plugins/angular.js index f3e8939ded4c..13dae70b3b1b 100644 --- a/dist/plugins/angular.js +++ b/dist/plugins/angular.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.23.2 (72f8e05) | github.com/getsentry/raven-js */ +/*! Raven.js 3.23.3 (f261ec2) | github.com/getsentry/raven-js */ /* * Includes TraceKit diff --git a/dist/plugins/angular.min.js b/dist/plugins/angular.min.js index 639527e58c14..6c1fc3a26fe9 100644 --- a/dist/plugins/angular.min.js +++ b/dist/plugins/angular.min.js @@ -1,3 +1,3 @@ -/*! Raven.js 3.23.2 (72f8e05) | github.com/getsentry/raven-js */ +/*! Raven.js 3.23.3 (f261ec2) | github.com/getsentry/raven-js */ !function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b=b.Raven||(b.Raven={}),b=b.Plugins||(b.Plugins={}),b.Angular=a()}}(function(){return function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};b[g][0].call(k.exports,function(a){var c=b[g][1][a];return e(c?c:a)},k,k.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;g ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function B(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&j(b))for(c=b.split(/\s+/),f=0;fc?M(a,b-1):d}function N(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?S:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}var O=a(3),P="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},Q=3,R=51200,S=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isUndefined:g,isFunction:h,isPlainObject:i,isString:j,isArray:k,isEmptyObject:l,supportsErrorEvent:m,supportsFetch:n,supportsReferrerPolicy:o,supportsPromiseRejectionEvent:p,wrappedCallback:q,each:r,objectMerge:s,truncate:u,objectFrozen:t,hasKey:v,joinRegExp:w,urlencode:x,uuid4:z,htmlTreeAsString:A,htmlElementAsString:B,isSameException:E,isSameStacktrace:F,parseUrl:y,fill:G,safeJoin:H,serializeException:M,serializeKeysForMessage:N}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{3:3}],3:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}]},{},[1])(1)}); //# sourceMappingURL=angular.min.js.map \ No newline at end of file diff --git a/dist/plugins/console.js b/dist/plugins/console.js index 7b1389043a61..e3dd9ae22816 100644 --- a/dist/plugins/console.js +++ b/dist/plugins/console.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.23.2 (72f8e05) | github.com/getsentry/raven-js */ +/*! Raven.js 3.23.3 (f261ec2) | github.com/getsentry/raven-js */ /* * Includes TraceKit diff --git a/dist/plugins/console.min.js b/dist/plugins/console.min.js index 3c7e67db5935..0a6a0c436ee4 100644 --- a/dist/plugins/console.min.js +++ b/dist/plugins/console.min.js @@ -1,3 +1,3 @@ -/*! Raven.js 3.23.2 (72f8e05) | github.com/getsentry/raven-js */ +/*! Raven.js 3.23.3 (f261ec2) | github.com/getsentry/raven-js */ !function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b=b.Raven||(b.Raven={}),b=b.Plugins||(b.Plugins={}),b.Console=a()}}(function(){return function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};b[g][0].call(k.exports,function(a){var c=b[g][1][a];return e(c?c:a)},k,k.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;g ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function B(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&j(b))for(c=b.split(/\s+/),f=0;fc?M(a,b-1):d}function N(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?S:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}var O=a(4),P="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},Q=3,R=51200,S=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isUndefined:g,isFunction:h,isPlainObject:i,isString:j,isArray:k,isEmptyObject:l,supportsErrorEvent:m,supportsFetch:n,supportsReferrerPolicy:o,supportsPromiseRejectionEvent:p,wrappedCallback:q,each:r,objectMerge:s,truncate:u,objectFrozen:t,hasKey:v,joinRegExp:w,urlencode:x,uuid4:z,htmlTreeAsString:A,htmlElementAsString:B,isSameException:E,isSameStacktrace:F,parseUrl:y,fill:G,safeJoin:H,serializeException:M,serializeKeysForMessage:N}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{4:4}],4:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}]},{},[1])(1)}); //# sourceMappingURL=console.min.js.map \ No newline at end of file diff --git a/dist/plugins/ember.js b/dist/plugins/ember.js index dfea1d7c758b..07cf825a2e4d 100644 --- a/dist/plugins/ember.js +++ b/dist/plugins/ember.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.23.2 (72f8e05) | github.com/getsentry/raven-js */ +/*! Raven.js 3.23.3 (f261ec2) | github.com/getsentry/raven-js */ /* * Includes TraceKit diff --git a/dist/plugins/ember.min.js b/dist/plugins/ember.min.js index 4bca693609ed..07c063182678 100644 --- a/dist/plugins/ember.min.js +++ b/dist/plugins/ember.min.js @@ -1,3 +1,3 @@ -/*! Raven.js 3.23.2 (72f8e05) | github.com/getsentry/raven-js */ +/*! Raven.js 3.23.3 (f261ec2) | github.com/getsentry/raven-js */ !function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b=b.Raven||(b.Raven={}),b=b.Plugins||(b.Plugins={}),b.Ember=a()}}(function(){return function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};b[g][0].call(k.exports,function(a){var c=b[g][1][a];return e(c?c:a)},k,k.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;g":"anonymous component")+(a._isVue&&a.$options.__file?" at "+a.$options.__file:"")}function e(a,b){if(b=b||window.Vue,b&&b.config){var c=b.config.errorHandler;b.config.errorHandler=function(b,e,f){var g={};"[object Object]"===Object.prototype.toString.call(e)&&(g.componentName=d(e),g.propsData=e.$options.propsData),"undefined"!=typeof f&&(g.lifecycleHook=f),a.captureException(b,{extra:g}),"function"==typeof c&&c.call(this,b,e,f)}}}b.exports=e},{}]},{},[1])(1)}); //# sourceMappingURL=vue.min.js.map \ No newline at end of file diff --git a/dist/raven.js b/dist/raven.js index 97d5aae29b7b..5c37bb02242d 100644 --- a/dist/raven.js +++ b/dist/raven.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.23.2 (72f8e05) | github.com/getsentry/raven-js */ +/*! Raven.js 3.23.3 (f261ec2) | github.com/getsentry/raven-js */ /* * Includes TraceKit @@ -204,7 +204,7 @@ Raven.prototype = { // webpack (using a build step causes webpack #1617). Grunt verifies that // this value matches package.json during build. // See: https://github.com/getsentry/raven-js/issues/465 - VERSION: '3.23.2', + VERSION: '3.23.3', debug: false, @@ -529,32 +529,31 @@ Raven.prototype = { captureException: function(ex, options) { options = objectMerge({trimHeadFrames: 0}, options ? options : {}); - if (isPlainObject(ex)) { + if (isErrorEvent(ex) && ex.error) { + // If it is an ErrorEvent with `error` property, extract it to get actual Error + ex = ex.error; + } else if (isError(ex)) { + // we have a real Error object + ex = ex; + } else if (isPlainObject(ex)) { // If it is plain Object, serialize it manually and extract options // This will allow us to group events based on top-level keys // which is much better than creating new group when any key/value change options = this._getCaptureExceptionOptionsFromPlainObject(options, ex); ex = new Error(options.message); - - } else if (isErrorEvent(ex) && ex.error) { - // If it is an ErrorEvent with `error` property, extract it to get actual Error - ex = ex.error; - } else if (isError(ex)){ - // we have a real Error object - ex = ex; } else { - // If none of previous checks were valid, then it means that - // it's not a plain Object - // it's not a valid ErrorEvent (one with an error property) - // it's not an Error - // So bail out and capture it as a simple message: - return this.captureMessage( - ex, - objectMerge(options, { - stacktrace: true, // if we fall back to captureMessage, default to attempting a new trace - trimHeadFrames: options.trimHeadFrames + 1 - }) - ); + // If none of previous checks were valid, then it means that + // it's not a plain Object + // it's not a valid ErrorEvent (one with an error property) + // it's not an Error + // So bail out and capture it as a simple message: + return this.captureMessage( + ex, + objectMerge(options, { + stacktrace: true, // if we fall back to captureMessage, default to attempting a new trace + trimHeadFrames: options.trimHeadFrames + 1 + }) + ); } // Store the raw exception object for potential debugging and introspection diff --git a/dist/raven.min.js b/dist/raven.min.js index 6abbdfbc0c26..a5bdc2e272f0 100644 --- a/dist/raven.min.js +++ b/dist/raven.min.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.23.2 (72f8e05) | github.com/getsentry/raven-js */ -!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.Raven=a()}}(function(){return function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};b[g][0].call(k.exports,function(a){var c=b[g][1][a];return e(c?c:a)},k,k.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;gthis.k.maxBreadcrumbs&&this.u.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.r.push([a,b]),this.n&&this.F(),this},setUserContext:function(a){return this.j.user=a,this},setExtraContext:function(a){return this.Z("extra",a),this},setTagsContext:function(a){return this.Z("tags",a),this},clearContext:function(){return this.j={},this},getContext:function(){return JSON.parse(h(this.j))},setEnvironment:function(a){return this.k.environment=a,this},setRelease:function(a){return this.k.release=a,this},setDataCallback:function(a){var b=this.k.dataCallback;return this.k.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.k.breadcrumbCallback;return this.k.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.k.shouldSendCallback;return this.k.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.k.transport=a,this},lastException:function(){return this.d},lastEventId:function(){return this.f},isSetup:function(){return!!this.a&&(!!this.g||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.z("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=O.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(P){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.H;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.j.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.J(this.G(c)),h=P.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(P.head||P.body).appendChild(h)}},L:function(){var a=this;this.m+=1,setTimeout(function(){a.m-=1})},$:function(a,b){var c,d;if(this.b){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),P.createEvent?(c=P.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=P.createEventObject(),c.eventType=a);for(d in b)y(b,d)&&(c[d]=b[d]);if(P.createEvent)P.dispatchEvent(c);else try{P.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},_:function(a){var b=this;return function(c){if(b.aa=null,b.v!==c){b.v=c;var d;try{d=C(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ba:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.aa;g||a._("input")(c),clearTimeout(g),a.aa=setTimeout(function(){a.aa=null},b)}}},ca:function(a,b){var c=F(this.w.href),d=F(b),e=F(a);this.x=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},C:function(){var a=this;a.da=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.M?a.da.apply(this.O,arguments):a.da.apply(this,arguments)}},Q:function(){this.da&&(Function.prototype.toString=this.da)},D:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.ca(b.x,c+""),a.apply(this,arguments)}};G(history,"pushState",j,d),G(history,"replaceState",j,d)}if(c.console&&"console"in O&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};u(["debug","info","warn","error","log"],function(a,b){L(console,b,k)})}},R:function(){for(var a;this.t.length;){a=this.t.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},S:function(){for(var a in this.q)this.p[a]=this.q[a]},F:function(){var a=this;u(this.r,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},G:function(a){var b=N.exec(a),c={},d=7;try{for(;d--;)c[M[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.k.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},J:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},A:function(){this.m||this.V.apply(this,arguments)},V:function(a,b){var c=this.X(a,b);this.$("handle",{stackInfo:a,options:b}),this.fa(a.name,a.message,a.url,a.lineno,c,b)},X:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(u(a.stack,function(b,e){var f=c.ga(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.u,0)}),this.j.user&&(a.user=this.j.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||t(a[b]))&&delete a[b]}),q(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!t(a)&&(!q(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.ma()?void this.z("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function B(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&j(b))for(c=b.split(/\s+/),f=0;fc?M(a,b-1):d}function N(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?S:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}var O=a(7),P="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},Q=3,R=51200,S=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isUndefined:g,isFunction:h,isPlainObject:i,isString:j,isArray:k,isEmptyObject:l,supportsErrorEvent:m,supportsFetch:n,supportsReferrerPolicy:o,supportsPromiseRejectionEvent:p,wrappedCallback:q,each:r,objectMerge:s,truncate:u,objectFrozen:t,hasKey:v,joinRegExp:w,urlencode:x,uuid4:z,htmlTreeAsString:A,htmlElementAsString:B,isSameException:E,isSameStacktrace:F,parseUrl:y,fill:G,safeJoin:H,serializeException:M,serializeKeysForMessage:N}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{7:7}],6:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}var e=a(5),f={collectWindowErrors:!0,debug:!1},g="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},h=[].slice,i="?",j=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;f.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function k(a,b){var c=null;if(!b||f.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(h.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,g,h){var l=null,m=e.isErrorEvent(h)?h.error:h,n=e.isErrorEvent(a)?a.message:a;if(v)f.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&e.isError(m))l=f.computeStackTrace(m),k(l,!0);else{var p,r={url:b,line:c,column:g},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(j);p&&(s=p[1],n=p[2])}r.func=i,l={name:s,message:n,url:d(),stack:[r]},k(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=g.onerror,g.onerror=l,r=!0)}function n(){r&&(g.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,k.apply(null,[a,!1].concat(b))}function p(a,b){var c=h.call(arguments,1);if(v){if(u===a)return;o()}var d=f.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),f.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,e,f=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,g=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,h=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,j=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,k=/\((\S*)(?::(\d+))(?::(\d+))\)/,l=a.stack.split("\n"),m=[],n=(/^(.*) is undefined$/.exec(a.message),0),o=l.length;n eval")>-1;q&&(b=j.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==n||c[5]||"undefined"==typeof a.columnNumber||(m[0].column=a.columnNumber+1),e={url:c[3],func:c[1]||i,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}!e.func&&e.line&&(e.func=i),m.push(e)}return m.length?{name:a.name,message:a.message,url:d(),stack:m}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=i),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,g){for(var h,j,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==e&&o!==f.report){if(j={url:null,func:i,line:null,column:null},o.name?j.func=o.name:(h=k.exec(o.toString()))&&(j.func=h[1]),"undefined"==typeof j.func)try{j.func=h.input.substring(0,h.input.indexOf("{"))}catch(p){}m[""+o]?n=!0:m[""+o]=!0,l.push(j)}g&&l.splice(0,g);var q={name:a.name,message:a.message,url:d(),stack:l};return b(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),q}function e(b,e){var g=null;e=null==e?0:+e;try{if(g=a(b))return g}catch(h){if(f.debug)throw h}try{if(g=c(b,e+1))return g}catch(h){if(f.debug)throw h}return{name:b.name,message:b.message,url:d()}}return e.augmentStackTraceWithInitialElement=b,e.computeStackTraceFromStackProp=a,e}(),b.exports=f}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{5:5}],7:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}],8:[function(a,b,c){function d(a,b){var c=(65535&a)+(65535&b),d=(a>>16)+(b>>16)+(c>>16);return d<<16|65535&c}function e(a,b){return a<>>32-b}function f(a,b,c,f,g,h){return d(e(d(d(b,a),d(f,h)),g),c)}function g(a,b,c,d,e,g,h){return f(b&c|~b&d,a,b,e,g,h)}function h(a,b,c,d,e,g,h){return f(b&d|c&~d,a,b,e,g,h)}function i(a,b,c,d,e,g,h){return f(b^c^d,a,b,e,g,h)}function j(a,b,c,d,e,g,h){return f(c^(b|~d),a,b,e,g,h)}function k(a,b){a[b>>5]|=128<>>9<<4)+14]=b;var c,e,f,k,l,m=1732584193,n=-271733879,o=-1732584194,p=271733878;for(c=0;cthis.k.maxBreadcrumbs&&this.u.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.r.push([a,b]),this.n&&this.F(),this},setUserContext:function(a){return this.j.user=a,this},setExtraContext:function(a){return this.Z("extra",a),this},setTagsContext:function(a){return this.Z("tags",a),this},clearContext:function(){return this.j={},this},getContext:function(){return JSON.parse(h(this.j))},setEnvironment:function(a){return this.k.environment=a,this},setRelease:function(a){return this.k.release=a,this},setDataCallback:function(a){var b=this.k.dataCallback;return this.k.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.k.breadcrumbCallback;return this.k.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.k.shouldSendCallback;return this.k.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.k.transport=a,this},lastException:function(){return this.d},lastEventId:function(){return this.f},isSetup:function(){return!!this.a&&(!!this.g||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.z("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=O.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(P){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.H;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.j.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.J(this.G(c)),h=P.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(P.head||P.body).appendChild(h)}},L:function(){var a=this;this.m+=1,setTimeout(function(){a.m-=1})},$:function(a,b){var c,d;if(this.b){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),P.createEvent?(c=P.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=P.createEventObject(),c.eventType=a);for(d in b)y(b,d)&&(c[d]=b[d]);if(P.createEvent)P.dispatchEvent(c);else try{P.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},_:function(a){var b=this;return function(c){if(b.aa=null,b.v!==c){b.v=c;var d;try{d=C(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ba:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.aa;g||a._("input")(c),clearTimeout(g),a.aa=setTimeout(function(){a.aa=null},b)}}},ca:function(a,b){var c=F(this.w.href),d=F(b),e=F(a);this.x=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},C:function(){var a=this;a.da=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.M?a.da.apply(this.O,arguments):a.da.apply(this,arguments)}},Q:function(){this.da&&(Function.prototype.toString=this.da)},D:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.ca(b.x,c+""),a.apply(this,arguments)}};G(history,"pushState",j,d),G(history,"replaceState",j,d)}if(c.console&&"console"in O&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};u(["debug","info","warn","error","log"],function(a,b){L(console,b,k)})}},R:function(){for(var a;this.t.length;){a=this.t.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},S:function(){for(var a in this.q)this.p[a]=this.q[a]},F:function(){var a=this;u(this.r,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},G:function(a){var b=N.exec(a),c={},d=7;try{for(;d--;)c[M[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.k.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},J:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},A:function(){this.m||this.V.apply(this,arguments)},V:function(a,b){var c=this.X(a,b);this.$("handle",{stackInfo:a,options:b}),this.fa(a.name,a.message,a.url,a.lineno,c,b)},X:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(u(a.stack,function(b,e){var f=c.ga(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.u,0)}),this.j.user&&(a.user=this.j.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||t(a[b]))&&delete a[b]}),q(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!t(a)&&(!q(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.ma()?void this.z("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function B(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&j(b))for(c=b.split(/\s+/),f=0;fc?M(a,b-1):d}function N(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?S:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}var O=a(7),P="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},Q=3,R=51200,S=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isUndefined:g,isFunction:h,isPlainObject:i,isString:j,isArray:k,isEmptyObject:l,supportsErrorEvent:m,supportsFetch:n,supportsReferrerPolicy:o,supportsPromiseRejectionEvent:p,wrappedCallback:q,each:r,objectMerge:s,truncate:u,objectFrozen:t,hasKey:v,joinRegExp:w,urlencode:x,uuid4:z,htmlTreeAsString:A,htmlElementAsString:B,isSameException:E,isSameStacktrace:F,parseUrl:y,fill:G,safeJoin:H,serializeException:M,serializeKeysForMessage:N}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{7:7}],6:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}var e=a(5),f={collectWindowErrors:!0,debug:!1},g="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},h=[].slice,i="?",j=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;f.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function k(a,b){var c=null;if(!b||f.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(h.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,g,h){var l=null,m=e.isErrorEvent(h)?h.error:h,n=e.isErrorEvent(a)?a.message:a;if(v)f.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&e.isError(m))l=f.computeStackTrace(m),k(l,!0);else{var p,r={url:b,line:c,column:g},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(j);p&&(s=p[1],n=p[2])}r.func=i,l={name:s,message:n,url:d(),stack:[r]},k(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=g.onerror,g.onerror=l,r=!0)}function n(){r&&(g.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,k.apply(null,[a,!1].concat(b))}function p(a,b){var c=h.call(arguments,1);if(v){if(u===a)return;o()}var d=f.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),f.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,e,f=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,g=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,h=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,j=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,k=/\((\S*)(?::(\d+))(?::(\d+))\)/,l=a.stack.split("\n"),m=[],n=(/^(.*) is undefined$/.exec(a.message),0),o=l.length;n eval")>-1;q&&(b=j.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==n||c[5]||"undefined"==typeof a.columnNumber||(m[0].column=a.columnNumber+1),e={url:c[3],func:c[1]||i,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}!e.func&&e.line&&(e.func=i),m.push(e)}return m.length?{name:a.name,message:a.message,url:d(),stack:m}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=i),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,g){for(var h,j,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==e&&o!==f.report){if(j={url:null,func:i,line:null,column:null},o.name?j.func=o.name:(h=k.exec(o.toString()))&&(j.func=h[1]),"undefined"==typeof j.func)try{j.func=h.input.substring(0,h.input.indexOf("{"))}catch(p){}m[""+o]?n=!0:m[""+o]=!0,l.push(j)}g&&l.splice(0,g);var q={name:a.name,message:a.message,url:d(),stack:l};return b(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),q}function e(b,e){var g=null;e=null==e?0:+e;try{if(g=a(b))return g}catch(h){if(f.debug)throw h}try{if(g=c(b,e+1))return g}catch(h){if(f.debug)throw h}return{name:b.name,message:b.message,url:d()}}return e.augmentStackTraceWithInitialElement=b,e.computeStackTraceFromStackProp=a,e}(),b.exports=f}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{5:5}],7:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}],8:[function(a,b,c){function d(a,b){var c=(65535&a)+(65535&b),d=(a>>16)+(b>>16)+(c>>16);return d<<16|65535&c}function e(a,b){return a<>>32-b}function f(a,b,c,f,g,h){return d(e(d(d(b,a),d(f,h)),g),c)}function g(a,b,c,d,e,g,h){return f(b&c|~b&d,a,b,e,g,h)}function h(a,b,c,d,e,g,h){return f(b&d|c&~d,a,b,e,g,h)}function i(a,b,c,d,e,g,h){return f(b^c^d,a,b,e,g,h)}function j(a,b,c,d,e,g,h){return f(c^(b|~d),a,b,e,g,h)}function k(a,b){a[b>>5]|=128<>>9<<4)+14]=b;var c,e,f,k,l,m=1732584193,n=-271733879,o=-1732584194,p=271733878;for(c=0;c>5]>>>b%32&255);return c}function m(a){var b,c=[];for(c[(a.length>>2)-1]=void 0,b=0;b>5]|=(255&a.charCodeAt(b/8))<16&&(e=k(e,8*a.length)),c=0;c<16;c+=1)f[c]=909522486^e[c],g[c]=1549556828^e[c];return d=k(f.concat(m(b)),512+8*b.length),l(k(g.concat(d),640))}function p(a){var b,c,d="0123456789abcdef",e="";for(c=0;c>>4&15)+d.charAt(15&b);return e}function q(a){return unescape(encodeURIComponent(a))}function r(a){return n(q(a))}function s(a){return p(r(a))}function t(a,b){return o(q(a),q(b))}function u(a,b){return p(t(a,b))}function v(a,b,c){return b?c?t(b,a):u(b,a):c?r(a):s(a)}b.exports=v},{}]},{},[4])(4)}); //# sourceMappingURL=raven.min.js.map \ No newline at end of file diff --git a/dist/raven.min.js.map b/dist/raven.min.js.map index 511d390bac7a..7f574c186afd 100644 --- a/dist/raven.min.js.map +++ b/dist/raven.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","RavenConfigError","message","name","prototype","constructor","2","utils","wrapMethod","console","level","callback","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","msg","safeJoin","data","logger","extra","Function","apply","5","3","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isError","isObject","isPlainObject","isErrorEvent","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","wrapConsoleMethod","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","config","dsn","options","_logDebug","globalOptions","key","value","setDSN","push","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","toString","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","substr","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","context","func","undefined","wrap","_before","wrapped","deep","_ignoreNextOnError","captureException","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","T","event","reason","B","_promiseRejectionHandler","bind","addEventListener","P","removeEventListener","ex","trimHeadFrames","_getCaptureExceptionOptionsFromPlainObject","error","captureMessage","stacktrace","stack","computeStackTrace","_handleStackInfo","ex1","U","currentOptions","exKeys","Object","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","addPlugin","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","setDataCallback","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","L","setTimeout","$","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","_","evtName","_keypressTimeout","target","category","ba","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","ca","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","C","_originalFunctionToString","Q","D","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","type","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","E","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","R","builtin","S","F","installer","concat","G","str","m","exec","allowSecretKey","J","port","A","V","stackInfo","_triggerEvent","_processException","lineno","X","frame","_normalizeFrame","in_app","ga","stackInfoUrl","normalized","filename","line","colno","column","function","fa","prefixedMessage","exception","values","culprit","ha","request","Referer","breadcrumbs","_trimBreadcrumbs","ia","urlProp","urlProps","ja","httpData","userAgent","User-Agent","referrer","y","_backoffDuration","_backoffStart","ma","na","current","last","oa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Y","baseData","project","platform","_getHttpData","serverName","server_name","forEach","random","_sendProcessedPayload","qa","pa","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","ra","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","onerror","open","setRequestHeader","send","sa","hash","evaluated","z","Z","setUser","setReleaseContext","6","7","8","4","RavenConstructor","_Raven","noConflict","what","supportsErrorEvent","ErrorEvent","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","wrappedCallback","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","getLocationHref","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","charAt","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","k","hexHMACMD5","string","raw"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file +{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","RavenConfigError","message","name","prototype","constructor","2","utils","wrapMethod","console","level","callback","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","msg","safeJoin","data","logger","extra","Function","apply","5","3","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isError","isObject","isPlainObject","isErrorEvent","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","wrapConsoleMethod","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","config","dsn","options","_logDebug","globalOptions","key","value","setDSN","push","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","toString","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","substr","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","context","func","undefined","wrap","_before","wrapped","deep","_ignoreNextOnError","captureException","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","T","event","reason","B","_promiseRejectionHandler","bind","addEventListener","P","removeEventListener","ex","trimHeadFrames","error","captureMessage","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","U","currentOptions","exKeys","Object","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","addPlugin","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","setDataCallback","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","L","setTimeout","$","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","_","evtName","_keypressTimeout","target","category","ba","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","ca","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","C","_originalFunctionToString","Q","D","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","type","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","E","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","R","builtin","S","F","installer","concat","G","str","m","exec","allowSecretKey","J","port","A","V","stackInfo","_triggerEvent","_processException","lineno","X","frame","_normalizeFrame","in_app","ga","stackInfoUrl","normalized","filename","line","colno","column","function","fa","prefixedMessage","exception","values","culprit","ha","request","Referer","breadcrumbs","_trimBreadcrumbs","ia","urlProp","urlProps","ja","httpData","userAgent","User-Agent","referrer","y","_backoffDuration","_backoffStart","ma","na","current","last","oa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Y","baseData","project","platform","_getHttpData","serverName","server_name","forEach","random","_sendProcessedPayload","qa","pa","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","ra","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","onerror","open","setRequestHeader","send","sa","hash","evaluated","z","Z","setUser","setReleaseContext","6","7","8","4","RavenConstructor","_Raven","noConflict","what","supportsErrorEvent","ErrorEvent","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","wrappedCallback","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","getLocationHref","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","charAt","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","k","hexHMACMD5","string","raw"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file diff --git a/dist/sri.json b/dist/sri.json index 7fbe770ec279..12a5b7a11ece 100644 --- a/dist/sri.json +++ b/dist/sri.json @@ -1,20 +1,20 @@ { "@dist/raven.js": { "hashes": { - "sha256": "3SpfxMUaoKdvV/KSFcNChRGafbiVlgwQg6sIi+XD7As=", - "sha512": "B17FNNZtKpMv7jo4zm7WXiiOAAtfzlZpmcifbiiZf9NJIJ2h7lTQ8cx0ilphbpAqZjkW9afkghOHNl7shx93JQ==" + "sha256": "GmX67vv8/Ks8XqHGXfKa5GI8s3YucPfOG4A3XYqtVFY=", + "sha512": "/h6wGsW4xBCvbK3QpCC6mktzvzmojTRsbjXpLwxvmIChKFiZfqFjnYdHFxj7LmtMk8umWYeq+22o20vCcQxeXQ==" }, "type": null, - "integrity": "sha256-3SpfxMUaoKdvV/KSFcNChRGafbiVlgwQg6sIi+XD7As= sha512-B17FNNZtKpMv7jo4zm7WXiiOAAtfzlZpmcifbiiZf9NJIJ2h7lTQ8cx0ilphbpAqZjkW9afkghOHNl7shx93JQ==", + "integrity": "sha256-GmX67vv8/Ks8XqHGXfKa5GI8s3YucPfOG4A3XYqtVFY= sha512-/h6wGsW4xBCvbK3QpCC6mktzvzmojTRsbjXpLwxvmIChKFiZfqFjnYdHFxj7LmtMk8umWYeq+22o20vCcQxeXQ==", "path": "dist/raven.js" }, "@dist/raven.min.js": { "hashes": { - "sha256": "nXtsPRT+cKDtuIyNxjQKhAT7uoScqXEH2g14uSPhJuE=", - "sha512": "+Jjj6mMOWWU4/q9eKd0NE+v/U8lNdEzo8Cnt1YsWapPp/M2PcInqqaqLZVxjtLRyO5ksyLyLS+IBznrKwZDRhA==" + "sha256": "RwAxUjH9W/xWvPiAA0es8dWsZwV45PGEOrm83cdIkNY=", + "sha512": "7yeV8AlsLyWFuXYoQaY0hwWuO70/u9jkyQLcdpIgwrgAYSv89ks9V5DVC1q2YBIqrHM7kApV1w5of76Cwla7/w==" }, "type": null, - "integrity": "sha256-nXtsPRT+cKDtuIyNxjQKhAT7uoScqXEH2g14uSPhJuE= sha512-+Jjj6mMOWWU4/q9eKd0NE+v/U8lNdEzo8Cnt1YsWapPp/M2PcInqqaqLZVxjtLRyO5ksyLyLS+IBznrKwZDRhA==", + "integrity": "sha256-RwAxUjH9W/xWvPiAA0es8dWsZwV45PGEOrm83cdIkNY= sha512-7yeV8AlsLyWFuXYoQaY0hwWuO70/u9jkyQLcdpIgwrgAYSv89ks9V5DVC1q2YBIqrHM7kApV1w5of76Cwla7/w==", "path": "dist/raven.min.js" } } \ No newline at end of file diff --git a/docs/sentry-doc-config.json b/docs/sentry-doc-config.json index 4b4b0bb471d2..dbabc2d686d5 100644 --- a/docs/sentry-doc-config.json +++ b/docs/sentry-doc-config.json @@ -66,6 +66,6 @@ } }, "vars": { - "RAVEN_VERSION": "3.23.2" + "RAVEN_VERSION": "3.23.3" } } diff --git a/package.json b/package.json index 59d2adb23f03..369bdb59af2b 100644 --- a/package.json +++ b/package.json @@ -9,7 +9,7 @@ "raven", "sentry" ], - "version": "3.23.2", + "version": "3.23.3", "repository": "git://github.com/getsentry/raven-js.git", "license": "BSD-2-Clause", "homepage": "https://github.com/getsentry/raven-js", diff --git a/src/raven.js b/src/raven.js index 7e8ed72e127b..31d8ded3d9d1 100644 --- a/src/raven.js +++ b/src/raven.js @@ -136,7 +136,7 @@ Raven.prototype = { // webpack (using a build step causes webpack #1617). Grunt verifies that // this value matches package.json during build. // See: https://github.com/getsentry/raven-js/issues/465 - VERSION: '3.23.2', + VERSION: '3.23.3', debug: false, diff --git a/test/raven.test.js b/test/raven.test.js index 9585759af91c..69608fd515e2 100644 --- a/test/raven.test.js +++ b/test/raven.test.js @@ -1349,7 +1349,7 @@ describe('globals', function() { extra: {'session:duration': 100} }); assert.deepEqual(opts.auth, { - sentry_client: 'raven-js/3.23.2', + sentry_client: 'raven-js/3.23.3', sentry_key: 'abc', sentry_version: '7' }); @@ -1396,7 +1396,7 @@ describe('globals', function() { extra: {'session:duration': 100} }); assert.deepEqual(opts.auth, { - sentry_client: 'raven-js/3.23.2', + sentry_client: 'raven-js/3.23.3', sentry_key: 'abc', sentry_secret: 'def', sentry_version: '7' From 9b83e9ea64c8ec165b6054991a385d79c910590c Mon Sep 17 00:00:00 2001 From: Ziv Levy Date: Mon, 19 Mar 2018 12:22:28 +0200 Subject: [PATCH 27/75] docs: Add documentation regarding raven-teskit plugin (#1231) * handle case where both stackstraces are undefined when checking 'isSameException' * add documentation regarding raven-teskit plugin * adding raven-testkit docs to Tips and Tricks --- docs/tips.rst | 46 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) diff --git a/docs/tips.rst b/docs/tips.rst index e3695af25abe..5e09889115ba 100644 --- a/docs/tips.rst +++ b/docs/tips.rst @@ -182,3 +182,49 @@ and will fail on slow connection or long response time: dataType: 'script', crossDomain: true }); + + +Raven Test Kit +-------------- +When building tests for your application, you want to assert that the right flow-tracking or error is being sent to *Sentry*, +**but** without really sending it to the *Sentry* system. +This way you won't swamp it with false reports during test running and other CI operations. + +`Raven Test Kit `_ enables Raven to work natively in your application, +but it overrides the default Raven transport mechanism so the report is not really sent but rather logged locally. +In this way, the logged reports can be fetched later for usage verification or other uses you may have in your testing environment. + +Installation +```````````` +.. code-block:: sh + + $ npm install raven-testkit --save-dev + +How to Use +`````````` +Then you may create a ``testkit`` instance and validate your reports against it as follows: + +.. code:: javascript + + import testKitInitializer from 'raven-testkit' + + const testKit = testKitInitializer(Raven) + + // any scenario that should call Raven.catchException(...) + + expect(testKit.reports()).to.have.lengthOf(1) + const report = testKit.reports()[0] + expect(report).to.have.property('release').to.equal('test') + + +Additionally, you may pass your own ``shouldSendCallback`` logic + +.. code:: javascript + + const shouldSendCallback = data => { + return /* your own logic */ + } + const testKit = testKitInitializer(Raven, shouldSendCallback) + + +Other useful API, more example usage and updates can be found in `Raven Test Kit `_ From 9bd9ca92d0a13030d8586e868962f0e41756c918 Mon Sep 17 00:00:00 2001 From: "C.J. Winslow" Date: Mon, 19 Mar 2018 13:33:07 -0700 Subject: [PATCH 28/75] fix: Check if XMLHttpRequest exists before using it Fixes loading raven in a JS dom environment --- src/raven.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/raven.js b/src/raven.js index 31d8ded3d9d1..79c2609c2ae0 100644 --- a/src/raven.js +++ b/src/raven.js @@ -1244,7 +1244,7 @@ Raven.prototype = { } if (autoBreadcrumbs.xhr && 'XMLHttpRequest' in _window) { - var xhrproto = XMLHttpRequest.prototype; + var xhrproto = _window.XMLHttpRequest && _window.XMLHttpRequest.prototype; fill( xhrproto, 'open', From 7fbb94a80f31b10d238fe657546b865fc5222fe1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kamil=20Og=C3=B3rek?= Date: Tue, 20 Mar 2018 11:10:47 +0100 Subject: [PATCH 29/75] fix: Guard for invalid input to `fill` helper method --- src/utils.js | 1 + 1 file changed, 1 insertion(+) diff --git a/src/utils.js b/src/utils.js index eab9c76dffa1..90ae7bec1405 100644 --- a/src/utils.js +++ b/src/utils.js @@ -412,6 +412,7 @@ function isSameStacktrace(stack1, stack2) { * @param track {optional} record instrumentation to an array */ function fill(obj, name, replacement, track) { + if (obj == null) return; var orig = obj[name]; obj[name] = replacement(orig); obj[name].__raven__ = true; From 49a2fa2d29c99c6c33dfe44d7e4e32197c34a732 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kamil=20Og=C3=B3rek?= Date: Fri, 23 Mar 2018 10:07:19 +0100 Subject: [PATCH 30/75] ref: Expose Ravens constructor publicly. Kinda. (#1272) --- src/singleton.js | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/src/singleton.js b/src/singleton.js index 78262573e946..313cebc76ca1 100644 --- a/src/singleton.js +++ b/src/singleton.js @@ -29,3 +29,39 @@ Raven.noConflict = function() { Raven.afterLoad(); module.exports = Raven; + +/** + * DISCLAIMER: + * + * Expose `Client` constructor for cases where user want to track multiple "sub-applications" in one larger app. + * It's not meant to be used by a wide audience, so pleaaase make sure that you know what you're doing before using it. + * Accidentally calling `install` multiple times, may result in an unexpected behavior that's very hard to debug. + * + * It's called `Client' to be in-line with Raven Node implementation. + * + * HOWTO: + * + * import Raven from 'raven-js'; + * + * const someAppReporter = new Raven.Client(); + * const someOtherAppReporter = new Raven.Client(); + * + * someAppReporter('__DSN__', { + * ...config goes here + * }); + * + * someOtherAppReporter('__OTHER_DSN__', { + * ...config goes here + * }); + * + * someAppReporter.captureMessage(...); + * someAppReporter.captureException(...); + * someAppReporter.captureBreadcrumb(...); + * + * someOtherAppReporter.captureMessage(...); + * someOtherAppReporter.captureException(...); + * someOtherAppReporter.captureBreadcrumb(...); + * + * It should "just work". + */ +module.exports.Client = RavenConstructor; From cf87968ac284a99278f8999b0b5681b241991925 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kamil=20Og=C3=B3rek?= Date: Fri, 23 Mar 2018 10:32:59 +0100 Subject: [PATCH 31/75] feat: Introduce 'sanitizeKeys' config option (#1264) * feat: Introduce 'sanitizeKeys' config option * ref: Handle cyclic references and support RegExp in * docs: Make docs a tad better --- docs/config.rst | 15 ++++++ src/raven.js | 11 +++- src/utils.js | 41 ++++++++++++++- test/raven.test.js | 27 ++++++++++ test/utils.test.js | 102 ++++++++++++++++++++++++++++++++++++ typescript/raven-tests.ts | 105 ++++++++++++++++++-------------------- typescript/raven.d.ts | 3 ++ 7 files changed, 245 insertions(+), 59 deletions(-) diff --git a/docs/config.rst b/docs/config.rst index 4079a5c678d7..8a7c66953901 100644 --- a/docs/config.rst +++ b/docs/config.rst @@ -149,6 +149,21 @@ Those configuration options are documented below: sampleRate: 0.5 // send 50% of events, drop the other half } +.. describe:: sanitizeKeys + + An array of strings or regex patterns representing keys that should be scrubbed from the payload sent to Sentry. + We'll go through every field in the payload and mask the values with simple `********` string instead. + This will match *only* keys of the object, not the values. + Sentry also sanitize all events sent to it on the server-side, but this allows you to strip the payload before it gets to the server. + + + .. code-block:: javascript + + { + sanitizeKeys: [/_token$/, /password/i, 'someHidiousKey'] + } + + .. describe:: dataCallback A function that allows mutation of the data payload right before being diff --git a/src/raven.js b/src/raven.js index 79c2609c2ae0..132181d2ad99 100644 --- a/src/raven.js +++ b/src/raven.js @@ -32,6 +32,7 @@ var supportsFetch = utils.supportsFetch; var supportsReferrerPolicy = utils.supportsReferrerPolicy; var serializeKeysForMessage = utils.serializeKeysForMessage; var serializeException = utils.serializeException; +var sanitize = utils.sanitize; var wrapConsoleMethod = require('./console').wrapMethod; @@ -85,13 +86,13 @@ function Raven() { collectWindowErrors: true, captureUnhandledRejections: true, maxMessageLength: 0, - // By default, truncates URL values to 250 chars maxUrlLength: 250, stackTraceLimit: 50, autoBreadcrumbs: true, instrument: true, - sampleRate: 1 + sampleRate: 1, + sanitizeKeys: [] }; this._fetchDefaults = { method: 'POST', @@ -1865,6 +1866,8 @@ Raven.prototype = { // Include server_name if it's defined in globalOptions if (globalOptions.serverName) data.server_name = globalOptions.serverName; + data = this._sanitizeData(data); + // Cleanup empty properties before sending them to the server Object.keys(data).forEach(function(key) { if (data[key] == null || data[key] === '' || isEmptyObject(data[key])) { @@ -1905,6 +1908,10 @@ Raven.prototype = { } }, + _sanitizeData: function(data) { + return sanitize(data, this._globalOptions.sanitizeKeys); + }, + _getUuid: function() { return uuid4(); }, diff --git a/src/utils.js b/src/utils.js index 90ae7bec1405..aea891eea98c 100644 --- a/src/utils.js +++ b/src/utils.js @@ -536,6 +536,44 @@ function serializeKeysForMessage(keys, maxLength) { return ''; } +function sanitize(input, sanitizeKeys) { + if (!isArray(sanitizeKeys) || (isArray(sanitizeKeys) && sanitizeKeys.length === 0)) + return input; + + var sanitizeRegExp = joinRegExp(sanitizeKeys); + var sanitizeMask = '********'; + var safeInput; + + try { + safeInput = JSON.parse(stringify(input)); + } catch (o_O) { + return input; + } + + function sanitizeWorker(workerInput) { + if (isArray(workerInput)) { + return workerInput.map(function(val) { + return sanitizeWorker(val); + }); + } + + if (isPlainObject(workerInput)) { + return Object.keys(workerInput).reduce(function(acc, k) { + if (sanitizeRegExp.test(k)) { + acc[k] = sanitizeMask; + } else { + acc[k] = sanitizeWorker(workerInput[k]); + } + return acc; + }, {}); + } + + return workerInput; + } + + return sanitizeWorker(safeInput); +} + module.exports = { isObject: isObject, isError: isError, @@ -567,5 +605,6 @@ module.exports = { fill: fill, safeJoin: safeJoin, serializeException: serializeException, - serializeKeysForMessage: serializeKeysForMessage + serializeKeysForMessage: serializeKeysForMessage, + sanitize: sanitize }; diff --git a/test/raven.test.js b/test/raven.test.js index 69608fd515e2..fb3caf4ddbf6 100644 --- a/test/raven.test.js +++ b/test/raven.test.js @@ -576,6 +576,33 @@ describe('globals', function() { assert.isTrue(Raven._send.calledOnce); }); + it('should respect `sanitizeKeys`', function() { + this.sinon.stub(Raven, '_sendProcessedPayload'); + Raven._globalOptions.sanitizeKeys = ['password', 'token']; + Raven.captureMessage('hello', { + extra: { + password: 'foo', + token: 'abc', + user: 'rick' + }, + user: { + password: 'foo' + } + }); + + // It's not the main thing we test here and it's a variable with every run + delete Raven._sendProcessedPayload.lastCall.args[0].extra['session:duration']; + + assert.deepEqual(Raven._sendProcessedPayload.lastCall.args[0].extra, { + password: '********', + token: '********', + user: 'rick' + }); + assert.deepEqual(Raven._sendProcessedPayload.lastCall.args[0].user, { + password: '********' + }); + }); + it('should send a proper payload with frames', function() { this.sinon.stub(Raven, '_send'); diff --git a/test/utils.test.js b/test/utils.test.js index 2c4d6baca8ec..0ef72cb00914 100644 --- a/test/utils.test.js +++ b/test/utils.test.js @@ -26,6 +26,7 @@ var parseUrl = utils.parseUrl; var safeJoin = utils.safeJoin; var serializeException = utils.serializeException; var serializeKeysForMessage = utils.serializeKeysForMessage; +var sanitize = utils.sanitize; describe('utils', function() { describe('isUndefined', function() { @@ -696,4 +697,105 @@ describe('utils', function() { assert.equal(serializeKeysForMessage('foo'), 'foo'); }); }); + + describe('sanitize', function() { + var sanitizeMask = '********'; + + it('should return simple values directly', function() { + var actual = sanitize('foo'); + var expected = 'foo'; + assert.deepEqual(actual, expected); + }); + + it('should return same value when no sanitizeKeys passed', function() { + var actual = sanitize({foo: 42}); + var expected = {foo: 42}; + assert.deepEqual(actual, expected); + }); + + it('should return same value when empty sanitizeKeys array passed', function() { + var actual = sanitize({foo: 42}, []); + var expected = {foo: 42}; + assert.deepEqual(actual, expected); + }); + + it('should sanitize flat objects', function() { + var actual = sanitize({foo: 42}, ['foo']); + var expected = {foo: sanitizeMask}; + assert.deepEqual(actual, expected); + }); + + it('should sanitize flat objects with multiple keys', function() { + var actual = sanitize({foo: 42, bar: 'abc', baz: 1337}, ['foo', 'baz']); + var expected = {foo: sanitizeMask, bar: 'abc', baz: sanitizeMask}; + assert.deepEqual(actual, expected); + }); + + it('should sanitize flat objects when value is a plain object or array', function() { + var actual = sanitize({foo: {bar: 42}}, ['foo']); + var expected = {foo: sanitizeMask}; + assert.deepEqual(actual, expected); + + actual = sanitize({foo: [42, 'abc']}, ['foo']); + expected = {foo: sanitizeMask}; + assert.deepEqual(actual, expected); + }); + + it('should sanitize nested objects keys', function() { + var actual = sanitize({foo: {bar: 42}}, ['bar']); + var expected = {foo: {bar: sanitizeMask}}; + assert.deepEqual(actual, expected); + }); + + it('should sanitize objects nested in arrays', function() { + var actual = sanitize({foo: [{bar: 42}, 42]}, ['bar']); + var expected = {foo: [{bar: sanitizeMask}, 42]}; + assert.deepEqual(actual, expected); + }); + + it('should sanitize every object when array provided as input', function() { + var actual = sanitize([{foo: 42}, {bar: 42}, 42], ['foo', 'bar']); + var expected = [{foo: sanitizeMask}, {bar: sanitizeMask}, 42]; + assert.deepEqual(actual, expected); + }); + + it('shouldnt break with cyclic references', function() { + var input = { + foo: {}, + baz: 42 + }; + input.foo.bar = input.foo; + + var actual = sanitize(input, ['baz']); + var expected = {foo: {bar: '[Circular ~.foo]'}, baz: sanitizeMask}; + assert.deepEqual(actual, expected); + }); + + it('should work with keys as RegExps', function() { + var actual = sanitize( + { + foo: { + bar: 42, + baz: 1337, + qux: 'rick', + forgotFifthWord: 'whoops', + thisShouldMatch123_32: 'hello', + butThisNot123_42_X: 'morty' + } + }, + [/^ba/i, 'forgotFifthWord', /\d{3}_\d{2}$/i] + ); + var expected = { + foo: { + bar: sanitizeMask, + baz: sanitizeMask, + qux: 'rick', + forgotFifthWord: sanitizeMask, + thisShouldMatch123_32: sanitizeMask, + butThisNot123_42_X: 'morty' + } + }; + assert.deepEqual(actual, expected); + }); + }); }); diff --git a/typescript/raven-tests.ts b/typescript/raven-tests.ts index d2a8bf5f43cc..ff9b2107f7ad 100644 --- a/typescript/raven-tests.ts +++ b/typescript/raven-tests.ts @@ -3,78 +3,67 @@ import Raven = require('..'); // or import * as Raven from '..' Raven.config('https://public@sentry.io/1').install(); var options: Raven.RavenOptions = { - logger: 'my-logger', - ignoreUrls: [ - /graph\.facebook\.com/i, - 'graph.facebook.com' - ], - ignoreErrors: [ - /fb_xd_fragment/, - 'fb_xd_fragment' - ], - includePaths: [ - /https?:\/\/(www\.)?getsentry\.com/, - 'https://www.sentry.io' - ], - whitelistUrls: [ - /https?:\/\/google\.com/, - 'https://www.google.com' - ], - autoBreadcrumbs: { - xhr: false, - console: false, - dom: true, - location: false, - sentry: true - }, - breadcrumbCallback: function (data) { - return data - } + logger: 'my-logger', + ignoreUrls: [/graph\.facebook\.com/i, 'graph.facebook.com'], + ignoreErrors: [/fb_xd_fragment/, 'fb_xd_fragment'], + includePaths: [/https?:\/\/(www\.)?getsentry\.com/, 'https://www.sentry.io'], + whitelistUrls: [/https?:\/\/google\.com/, 'https://www.google.com'], + autoBreadcrumbs: { + xhr: false, + console: false, + dom: true, + location: false, + sentry: true + }, + breadcrumbCallback: function(data) { + return data; + }, + sanitizeKeys: ['token', 'userPassword', 'csrf_token'] }; Raven.config('https://public@sentry.io/1', options).install(); var throwsError = () => { - throw new Error('broken'); + throw new Error('broken'); }; try { - throwsError(); -} catch(e) { - Raven.captureException(e); - Raven.captureException(e, {tags: { key: "value" }}); + throwsError(); +} catch (e) { + Raven.captureException(e); + Raven.captureException(e, {tags: {key: 'value'}}); } // ErrorEvent requires at least Typescript 2.3.0 due to incorrect ErrorEvent definitions // prior to that version. var throwsErrorEvent = () => { - throw new ErrorEvent('oops', {error: new Error('Oops')}); + throw new ErrorEvent('oops', {error: new Error('Oops')}); }; try { - throwsErrorEvent(); -} catch(ee) { - Raven.captureException(ee); - Raven.captureException(ee, {tags: { key: "value" }}); + throwsErrorEvent(); +} catch (ee) { + Raven.captureException(ee); + Raven.captureException(ee, {tags: {key: 'value'}}); } Raven.captureException('Something broke'); -Raven.captureException('Something broke', {tags: { key: "value" }}); +Raven.captureException('Something broke', {tags: {key: 'value'}}); Raven.context(throwsError); -Raven.context({tags: { key: "value" }}, throwsError); +Raven.context({tags: {key: 'value'}}, throwsError); Raven.context(throwsErrorEvent); -Raven.context({tags: { key: "value" }}, throwsErrorEvent); +Raven.context({tags: {key: 'value'}}, throwsErrorEvent); setTimeout(Raven.wrap(throwsError), 1000); -Raven.wrap({logger: "my.module"}, throwsError)(); +Raven.wrap({logger: 'my.module'}, throwsError)(); Raven.wrap(throwsErrorEvent)(); -Raven.wrap({logger: "my.module"}, throwsErrorEvent)(); +Raven.wrap({logger: 'my.module'}, throwsErrorEvent)(); Raven.setUserContext(); Raven.setUserContext({ - email: 'matt@example.com', - id: '123' + email: 'matt@example.com', + id: '123' }); Raven.setExtraContext({foo: 'bar'}); @@ -82,28 +71,32 @@ Raven.setExtraContext(); Raven.setTagsContext({env: 'prod'}); Raven.setTagsContext(); Raven.clearContext(); -var obj:Object = Raven.getContext(); -var err:Error = Raven.lastException(); +var obj: Object = Raven.getContext(); +var err: Error = Raven.lastException(); Raven.captureMessage('Broken!'); -Raven.captureMessage('Broken!', {tags: { key: "value" }}); -Raven.captureMessage('Broken!', { stacktrace: true }); -Raven.captureMessage('Warning', { level: 'warning' }); +Raven.captureMessage('Broken!', {tags: {key: 'value'}}); +Raven.captureMessage('Broken!', {stacktrace: true}); +Raven.captureMessage('Warning', {level: 'warning'}); Raven.captureBreadcrumb({ - message: "This is a breadcrumb message." + message: 'This is a breadcrumb message.' +}); +Raven.captureBreadcrumb({ + category: 'console', + level: 'log', + message: 'A console.log() message' }); -Raven.captureBreadcrumb({category: "console", level: "log", message: "A console.log() message"}); Raven.setRelease('abc123'); Raven.setEnvironment('production'); -Raven.setDataCallback(function (data: any) {}); -Raven.setDataCallback(function (data: any, original: any) {}); -Raven.setShouldSendCallback(function (data: any) {}); -Raven.setShouldSendCallback(function (data: any, original: any) {}); +Raven.setDataCallback(function(data: any) {}); +Raven.setDataCallback(function(data: any, original: any) {}); +Raven.setShouldSendCallback(function(data: any) {}); +Raven.setShouldSendCallback(function(data: any, original: any) {}); Raven.showReportDialog({ - eventId: 'abcdef123456' + eventId: 'abcdef123456' }); Raven.setDSN('https://public@sentry.io/2'); diff --git a/typescript/raven.d.ts b/typescript/raven.d.ts index 6f9746098114..905c98e25d48 100644 --- a/typescript/raven.d.ts +++ b/typescript/raven.d.ts @@ -48,6 +48,9 @@ declare namespace Raven { /** In some cases you may see issues where Sentry groups multiple events together when they should be separate entities. In other cases, Sentry simply doesn’t group events together because they’re so sporadic that they never look the same. */ fingerprint?: string[]; + /** An array of strings representing keys that should be scrubbed from the payload sent to Sentry */ + sanitizeKeys?: string[]; + /** A function which allows mutation of the data payload right before being sent to Sentry */ dataCallback?: (data: any) => any; From e002e4f1ab05fd629925d0ea40e79910e8c33d96 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kamil=20Og=C3=B3rek?= Date: Fri, 23 Mar 2018 10:35:22 +0100 Subject: [PATCH 32/75] 3.24.0 --- CHANGELOG.md | 7 +++ bower.json | 2 +- dist/plugins/angular.js | 44 ++++++++++++++- dist/plugins/angular.min.js | 4 +- dist/plugins/angular.min.js.map | 2 +- dist/plugins/console.js | 44 ++++++++++++++- dist/plugins/console.min.js | 4 +- dist/plugins/console.min.js.map | 2 +- dist/plugins/ember.js | 2 +- dist/plugins/ember.min.js | 2 +- dist/plugins/require.js | 2 +- dist/plugins/require.min.js | 2 +- dist/plugins/vue.js | 2 +- dist/plugins/vue.min.js | 2 +- dist/raven.js | 95 ++++++++++++++++++++++++++++++--- dist/raven.min.js | 6 +-- dist/raven.min.js.map | 2 +- dist/sri.json | 12 ++--- docs/sentry-doc-config.json | 2 +- package.json | 2 +- src/raven.js | 2 +- test/raven.test.js | 4 +- 22 files changed, 208 insertions(+), 38 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index fd9d3872833c..17c486a6d7df 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## 3.24.0 + +* NEW: Introduce `sanitizeKeys` config option (#1264) +* NEW: Expose Ravens constructor publicly. Kinda. (#1272) +* BUGFIX: Guard for invalid input to `fill` helper method (#1265) +* BUGFIX: Check if `XMLHttpRequest` exists before using it (#1265) + ## 3.23.3 * BUGFIX: Fix detection of custom error objects in `captureException` method, aka "Schrodinger's Error"© patch(#1261) diff --git a/bower.json b/bower.json index 651dad5a943c..5d1d8ce69267 100644 --- a/bower.json +++ b/bower.json @@ -1,6 +1,6 @@ { "name": "raven-js", - "version": "3.23.3", + "version": "3.24.0", "dependencies": {}, "main": "dist/raven.js", "ignore": [ diff --git a/dist/plugins/angular.js b/dist/plugins/angular.js index 13dae70b3b1b..a5919bb3e93d 100644 --- a/dist/plugins/angular.js +++ b/dist/plugins/angular.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.23.3 (f261ec2) | github.com/getsentry/raven-js */ +/*! Raven.js 3.24.0 (cf87968) | github.com/getsentry/raven-js */ /* * Includes TraceKit @@ -502,6 +502,7 @@ function isSameStacktrace(stack1, stack2) { * @param track {optional} record instrumentation to an array */ function fill(obj, name, replacement, track) { + if (obj == null) return; var orig = obj[name]; obj[name] = replacement(orig); obj[name].__raven__ = true; @@ -625,6 +626,44 @@ function serializeKeysForMessage(keys, maxLength) { return ''; } +function sanitize(input, sanitizeKeys) { + if (!isArray(sanitizeKeys) || (isArray(sanitizeKeys) && sanitizeKeys.length === 0)) + return input; + + var sanitizeRegExp = joinRegExp(sanitizeKeys); + var sanitizeMask = '********'; + var safeInput; + + try { + safeInput = JSON.parse(stringify(input)); + } catch (o_O) { + return input; + } + + function sanitizeWorker(workerInput) { + if (isArray(workerInput)) { + return workerInput.map(function(val) { + return sanitizeWorker(val); + }); + } + + if (isPlainObject(workerInput)) { + return Object.keys(workerInput).reduce(function(acc, k) { + if (sanitizeRegExp.test(k)) { + acc[k] = sanitizeMask; + } else { + acc[k] = sanitizeWorker(workerInput[k]); + } + return acc; + }, {}); + } + + return workerInput; + } + + return sanitizeWorker(safeInput); +} + module.exports = { isObject: isObject, isError: isError, @@ -656,7 +695,8 @@ module.exports = { fill: fill, safeJoin: safeJoin, serializeException: serializeException, - serializeKeysForMessage: serializeKeysForMessage + serializeKeysForMessage: serializeKeysForMessage, + sanitize: sanitize }; }).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) diff --git a/dist/plugins/angular.min.js b/dist/plugins/angular.min.js index 6c1fc3a26fe9..b7620edf7831 100644 --- a/dist/plugins/angular.min.js +++ b/dist/plugins/angular.min.js @@ -1,3 +1,3 @@ -/*! Raven.js 3.23.3 (f261ec2) | github.com/getsentry/raven-js */ -!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b=b.Raven||(b.Raven={}),b=b.Plugins||(b.Plugins={}),b.Angular=a()}}(function(){return function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};b[g][0].call(k.exports,function(a){var c=b[g][1][a];return e(c?c:a)},k,k.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;g ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function B(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&j(b))for(c=b.split(/\s+/),f=0;fc?M(a,b-1):d}function N(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?S:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}var O=a(3),P="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},Q=3,R=51200,S=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isUndefined:g,isFunction:h,isPlainObject:i,isString:j,isArray:k,isEmptyObject:l,supportsErrorEvent:m,supportsFetch:n,supportsReferrerPolicy:o,supportsPromiseRejectionEvent:p,wrappedCallback:q,each:r,objectMerge:s,truncate:u,objectFrozen:t,hasKey:v,joinRegExp:w,urlencode:x,uuid4:z,htmlTreeAsString:A,htmlElementAsString:B,isSameException:E,isSameStacktrace:F,parseUrl:y,fill:G,safeJoin:H,serializeException:M,serializeKeysForMessage:N}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{3:3}],3:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}]},{},[1])(1)}); +/*! Raven.js 3.24.0 (cf87968) | github.com/getsentry/raven-js */ +!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b=b.Raven||(b.Raven={}),b=b.Plugins||(b.Plugins={}),b.Angular=a()}}(function(){return function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};b[g][0].call(k.exports,function(a){var c=b[g][1][a];return e(c?c:a)},k,k.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;g ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function B(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&j(b))for(c=b.split(/\s+/),f=0;fc?M(a,b-1):d}function N(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?T:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function O(a,b){function c(a){return k(a)?a.map(function(a){return c(a)}):i(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!k(b)||k(b)&&0===b.length)return a;var d,e=w(b),f="********";try{d=JSON.parse(P(a))}catch(g){return a}return c(d)}var P=a(3),Q="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},R=3,S=51200,T=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isUndefined:g,isFunction:h,isPlainObject:i,isString:j,isArray:k,isEmptyObject:l,supportsErrorEvent:m,supportsFetch:n,supportsReferrerPolicy:o,supportsPromiseRejectionEvent:p,wrappedCallback:q,each:r,objectMerge:s,truncate:u,objectFrozen:t,hasKey:v,joinRegExp:w,urlencode:x,uuid4:z,htmlTreeAsString:A,htmlElementAsString:B,isSameException:E,isSameStacktrace:F,parseUrl:y,fill:G,safeJoin:H,serializeException:M,serializeKeysForMessage:N,sanitize:O}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{3:3}],3:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}]},{},[1])(1)}); //# sourceMappingURL=angular.min.js.map \ No newline at end of file diff --git a/dist/plugins/angular.min.js.map b/dist/plugins/angular.min.js.map index 4690d340afd9..df040ce69259 100644 --- a/dist/plugins/angular.min.js.map +++ b/dist/plugins/angular.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["angular.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","Plugins","Angular","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","angularPlugin","angular","RavenProvider","$get","$window","ExceptionHandlerProvider","$provide","decorator","exceptionHandler","R","$delegate","ex","cause","captureException","extra","moduleName","provider","config","setDataCallback","wrappedCallback","data","_normalizeData","angularPattern","exception","values","matches","exec","value","type","message","angularDocs","substr","2","isObject","what","isError","toString","isErrorEvent","supportsErrorEvent","isUndefined","isFunction","isPlainObject","Object","prototype","isString","isArray","isEmptyObject","_","hasOwnProperty","ErrorEvent","supportsFetch","_window","Headers","Request","Response","supportsReferrerPolicy","referrerPolicy","supportsPromiseRejectionEvent","PromiseRejectionEvent","callback","dataCallback","original","normalizedData","each","obj","j","hasKey","objectMerge","obj1","obj2","key","objectFrozen","isFrozen","truncate","str","max","object","joinRegExp","patterns","pattern","sources","len","push","replace","source","RegExp","join","urlencode","pairs","encodeURIComponent","parseUrl","url","match","query","fragment","protocol","host","path","relative","uuid4","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","Math","random","htmlTreeAsString","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","reverse","className","classes","attr","tagName","toLowerCase","id","split","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","isSameException","ex1","ex2","stacktrace","isSameStacktrace","stack1","stack2","frames1","frames","frames2","filename","lineno","colno","fill","name","replacement","track","orig","__raven__","__orig__","safeJoin","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","JSON","stringify","serializeValue","maxLength","serializeObject","depth","keys","reduce","acc","Array","map","val","serializeException","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","serializeKeysForMessage","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","slice","3","indexOf","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","err","stack","thisPos","splice","Infinity","getSerialize"],"mappings":";CAYA,SAAUA,GAAG,GAAoB,gBAAVC,UAAoC,mBAATC,QAAsBA,OAAOD,QAAQD,QAAS,IAAmB,kBAATG,SAAqBA,OAAOC,IAAKD,UAAUH,OAAO,CAAC,GAAIK,EAAkCA,GAAb,mBAATC,QAAwBA,OAA+B,mBAATC,QAAwBA,OAA6B,mBAAPC,MAAsBA,KAAYC,KAAKJ,EAAGA,EAAEK,QAAQL,EAAEK,UAAaL,EAAGA,EAAEM,UAAUN,EAAEM,YAAeN,EAAEO,QAAUZ,MAAO,WAAqC,MAAO,SAAUa,GAAEC,EAAEC,EAAEC,GAAG,QAASC,GAAEC,EAAEC,GAAG,IAAIJ,EAAEG,GAAG,CAAC,IAAIJ,EAAEI,GAAG,CAAC,GAAIE,GAAkB,kBAATC,UAAqBA,OAAQ,KAAIF,GAAGC,EAAE,MAAOA,GAAEF,GAAE,EAAI,IAAGI,EAAE,MAAOA,GAAEJ,GAAE,EAAI,IAAIlB,GAAE,GAAIuB,OAAM,uBAAuBL,EAAE,IAAK,MAAMlB,GAAEwB,KAAK,mBAAmBxB,EAAE,GAAIyB,GAAEV,EAAEG,IAAIjB,WAAYa,GAAEI,GAAG,GAAGQ,KAAKD,EAAExB,QAAQ,SAASY,GAAG,GAAIE,GAAED,EAAEI,GAAG,GAAGL,EAAG,OAAOI,GAAEF,EAAEA,EAAEF,IAAIY,EAAEA,EAAExB,QAAQY,EAAEC,EAAEC,EAAEC,GAAG,MAAOD,GAAEG,GAAGjB,QAAkD,IAAI,GAA1CqB,GAAkB,kBAATD,UAAqBA,QAAgBH,EAAE,EAAEA,EAAEF,EAAEW,OAAOT,IAAID,EAAED,EAAEE,GAAI,OAAOD,KAAKW,GAAG,SAASC,EAAQ3B,EAAOD,GAYl4B,QAAS6B,GAAcpB,EAAOqB,GAK5B,QAASC,KACPvB,KAAKwB,MACH,UACA,SAASC,GACP,MAAOxB,KAKb,QAASyB,GAAyBC,GAChCA,EAASC,UAAU,qBAAsB,QAAS,YAAaC,IAGjE,QAASA,GAAiBC,EAAGC,GAC3B,MAAO,UAASC,EAAIC,GAClBH,EAAEI,iBAAiBF,GACjBG,OAAQF,MAAOA,KAEjBF,EAAUC,EAAIC,IAtBlBX,EAAUA,GAAWzB,OAAOyB,QAEvBA,IAwBLA,EACG7B,OAAO2C,MACPC,SAAS,QAASd,GAClBe,QAAQ,WAAYZ,IAEvBzB,EAAMsC,gBACJC,EAAgB,SAASC,GACvB,MAAOpB,GAAcqB,EAAeD,OAxC1C,GAAID,GAAkBpB,EAAQ,GAAGoB,gBAG7BG,EAAiB,6DACjBP,EAAa,SAyCjBf,GAAcqB,EAAiB,SAASD,GAEtC,GAAIG,GAAYH,EAAKG,SACrB,IAAIA,EAAW,CACbA,EAAYA,EAAUC,OAAO,EAC7B,IAAIC,GAAUH,EAAeI,KAAKH,EAAUI,MAExCF,KAEFF,EAAUK,KAAOH,EAAQ,GACzBF,EAAUI,MAAQF,EAAQ,GAE1BL,EAAKS,QAAUN,EAAUK,KAAO,KAAOL,EAAUI,MAEjDP,EAAKN,MAAMgB,YAAcL,EAAQ,GAAGM,OAAO,EAAG,MAIlD,MAAOX,IAGTpB,EAAce,WAAaA,EAE3B3C,EAAOD,QAAU6B,IAEdgC,EAAI,IAAIA,GAAG,SAASjC,EAAQ3B,EAAOD,IACtC,SAAWM,GAQX,QAASwD,GAASC,GAChB,MAAuB,gBAATA,IAA8B,OAATA,EAKrC,QAASC,GAAQR,GACf,UAAWS,SAASxC,KAAK+B,IACvB,IAAK,iBACH,OAAO,CACT,KAAK,qBACH,OAAO,CACT,KAAK,wBACH,OAAO,CACT,SACE,MAAOA,aAAiBlC,QAI9B,QAAS4C,GAAaV,GACpB,MAAOW,MAAoD,2BAAzBF,SAASxC,KAAK+B,GAGlD,QAASY,GAAYL,GACnB,MAAgB,UAATA,EAGT,QAASM,GAAWN,GAClB,MAAuB,kBAATA,GAGhB,QAASO,GAAcP,GACrB,MAAgD,oBAAzCQ,OAAOC,UAAUP,SAASxC,KAAKsC,GAGxC,QAASU,GAASV,GAChB,MAAgD,oBAAzCQ,OAAOC,UAAUP,SAASxC,KAAKsC,GAGxC,QAASW,GAAQX,GACf,MAAgD,mBAAzCQ,OAAOC,UAAUP,SAASxC,KAAKsC,GAGxC,QAASY,GAAcZ,GACrB,IAAKO,EAAcP,GAAO,OAAO,CAEjC,KAAK,GAAIa,KAAKb,GACZ,GAAIA,EAAKc,eAAeD,GACtB,OAAO,CAGX,QAAO,EAGT,QAAST,KACP,IAEE,MADA,IAAIW,YAAW,KACR,EACP,MAAOlE,GACP,OAAO,GAIX,QAASmE,KACP,KAAM,SAAWC,IAAU,OAAO,CAElC,KAIE,MAHA,IAAIC,SACJ,GAAIC,SAAQ,IACZ,GAAIC,WACG,EACP,MAAOvE,GACP,OAAO,GAQX,QAASwE,KACP,IAAKL,IAAiB,OAAO,CAE7B,KAKE,MAHA,IAAIG,SAAQ,cACVG,eAAgB,YAEX,EACP,MAAOzE,GACP,OAAO,GAIX,QAAS0E,KACP,MAAwC,kBAA1BC,uBAGhB,QAASvC,GAAgBwC,GACvB,QAASC,GAAaxC,EAAMyC,GAC1B,GAAIC,GAAiBH,EAASvC,IAASA,CACvC,OAAIyC,GACKA,EAASC,IAAmBA,EAE9BA,EAGT,MAAOF,GAGT,QAASG,GAAKC,EAAKL,GACjB,GAAInE,GAAGyE,CAEP,IAAI1B,EAAYyB,EAAInE,QAClB,IAAKL,IAAKwE,GACJE,EAAOF,EAAKxE,IACdmE,EAAS/D,KAAK,KAAMJ,EAAGwE,EAAIxE,QAK/B,IADAyE,EAAID,EAAInE,OAEN,IAAKL,EAAI,EAAGA,EAAIyE,EAAGzE,IACjBmE,EAAS/D,KAAK,KAAMJ,EAAGwE,EAAIxE,IAMnC,QAAS2E,GAAYC,EAAMC,GACzB,MAAKA,IAGLN,EAAKM,EAAM,SAASC,EAAK3C,GACvByC,EAAKE,GAAO3C,IAEPyC,GALEA,EAgBX,QAASG,GAAaP,GACpB,QAAKtB,OAAO8B,UAGL9B,OAAO8B,SAASR,GAGzB,QAASS,GAASC,EAAKC,GACrB,OAAQA,GAAOD,EAAI7E,QAAU8E,EAAMD,EAAMA,EAAI3C,OAAO,EAAG4C,GAAO,IAUhE,QAAST,GAAOU,EAAQN,GACtB,MAAO5B,QAAOC,UAAUK,eAAepD,KAAKgF,EAAQN,GAGtD,QAASO,GAAWC,GAQlB,IALA,GAGEC,GAHEC,KACFxF,EAAI,EACJyF,EAAMH,EAASjF,OAGVL,EAAIyF,EAAKzF,IACduF,EAAUD,EAAStF,GACfoD,EAASmC,GAGXC,EAAQE,KAAKH,EAAQI,QAAQ,8BAA+B,SACnDJ,GAAWA,EAAQK,QAE5BJ,EAAQE,KAAKH,EAAQK,OAIzB,OAAO,IAAIC,QAAOL,EAAQM,KAAK,KAAM,KAGvC,QAASC,GAAUnG,GACjB,GAAIoG,KAIJ,OAHAzB,GAAK3E,EAAG,SAASkF,EAAK3C,GACpB6D,EAAMN,KAAKO,mBAAmBnB,GAAO,IAAMmB,mBAAmB9D,MAEzD6D,EAAMF,KAAK,KAMpB,QAASI,GAASC,GAChB,GAAmB,gBAARA,GAAkB,QAC7B,IAAIC,GAAQD,EAAIC,MAAM,kEAGlBC,EAAQD,EAAM,IAAM,GACpBE,EAAWF,EAAM,IAAM,EAC3B,QACEG,SAAUH,EAAM,GAChBI,KAAMJ,EAAM,GACZK,KAAML,EAAM,GACZM,SAAUN,EAAM,GAAKC,EAAQC,GAGjC,QAASK,KACP,GAAIC,GAASjD,EAAQiD,QAAUjD,EAAQkD,QAEvC,KAAK9D,EAAY6D,IAAWA,EAAOE,gBAAiB,CAGlD,GAAIC,GAAM,GAAIC,aAAY,EAC1BJ,GAAOE,gBAAgBC,GAGvBA,EAAI,GAAe,KAATA,EAAI,GAAc,MAE5BA,EAAI,GAAe,MAATA,EAAI,GAAe,KAE7B,IAAIE,GAAM,SAASC,GAEjB,IADA,GAAIC,GAAID,EAAItE,SAAS,IACduE,EAAE9G,OAAS,GAChB8G,EAAI,IAAMA,CAEZ,OAAOA,GAGT,OACEF,GAAIF,EAAI,IACRE,EAAIF,EAAI,IACRE,EAAIF,EAAI,IACRE,EAAIF,EAAI,IACRE,EAAIF,EAAI,IACRE,EAAIF,EAAI,IACRE,EAAIF,EAAI,IACRE,EAAIF,EAAI,IAIV,MAAO,mCAAmCpB,QAAQ,QAAS,SAASyB,GAClE,GAAI1H,GAAqB,GAAhB2H,KAAKC,SAAiB,EAC7BH,EAAU,MAANC,EAAY1H,EAAS,EAAJA,EAAW,CAClC,OAAOyH,GAAEvE,SAAS,MAYxB,QAAS2E,GAAiBC,GAWxB,IATA,GAOEC,GAPEC,EAAsB,EACxBC,EAAiB,GACjBC,KACAC,EAAS,EACTpC,EAAM,EACNqC,EAAY,MACZC,EAAYD,EAAUzH,OAGjBmH,GAAQK,IAAWH,IACxBD,EAAUO,EAAoBR,KAMhB,SAAZC,GACCI,EAAS,GAAKpC,EAAMmC,EAAIvH,OAAS0H,EAAYN,EAAQpH,QAAUsH,KAKlEC,EAAIlC,KAAK+B,GAEThC,GAAOgC,EAAQpH,OACfmH,EAAOA,EAAKS,UAGd,OAAOL,GAAIM,UAAUpC,KAAKgC,GAS5B,QAASE,GAAoBR,GAC3B,GACEW,GACAC,EACAtD,EACAuD,EACArI,EALE4H,IAOJ,KAAKJ,IAASA,EAAKc,QACjB,MAAO,EAST,IANAV,EAAIlC,KAAK8B,EAAKc,QAAQC,eAClBf,EAAKgB,IACPZ,EAAIlC,KAAK,IAAM8B,EAAKgB,IAGtBL,EAAYX,EAAKW,UACbA,GAAa/E,EAAS+E,GAExB,IADAC,EAAUD,EAAUM,MAAM,OACrBzI,EAAI,EAAGA,EAAIoI,EAAQ/H,OAAQL,IAC9B4H,EAAIlC,KAAK,IAAM0C,EAAQpI,GAG3B,IAAI0I,IAAiB,OAAQ,OAAQ,QAAS,MAC9C,KAAK1I,EAAI,EAAGA,EAAI0I,EAAcrI,OAAQL,IACpC8E,EAAM4D,EAAc1I,GACpBqI,EAAOb,EAAKmB,aAAa7D,GACrBuD,GACFT,EAAIlC,KAAK,IAAMZ,EAAM,KAAOuD,EAAO,KAGvC,OAAOT,GAAI9B,KAAK,IAMlB,QAAS8C,GAAgB9I,EAAG+I,GAC1B,WAAY/I,IAAM+I,GAMpB,QAASC,GAAgBhJ,EAAG+I,GAC1B,MAAO9F,GAAYjD,IAAMiD,EAAY8F,GAMvC,QAASE,GAAgBC,EAAKC,GAC5B,OAAIL,EAAgBI,EAAKC,KAEzBD,EAAMA,EAAIhH,OAAO,GACjBiH,EAAMA,EAAIjH,OAAO,GAEbgH,EAAI5G,OAAS6G,EAAI7G,MAAQ4G,EAAI7G,QAAU8G,EAAI9G,SAG3C2G,EAAgBE,EAAIE,WAAYD,EAAIC,aAEjCC,EAAiBH,EAAIE,WAAYD,EAAIC,cAM9C,QAASC,GAAiBC,EAAQC,GAChC,GAAIT,EAAgBQ,EAAQC,GAAS,OAAO,CAE5C,IAAIC,GAAUF,EAAOG,OACjBC,EAAUH,EAAOE,MAGrB,IAAID,EAAQjJ,SAAWmJ,EAAQnJ,OAAQ,OAAO,CAI9C,KAAK,GADDP,GAAG+I,EACE7I,EAAI,EAAGA,EAAIsJ,EAAQjJ,OAAQL,IAGlC,GAFAF,EAAIwJ,EAAQtJ,GACZ6I,EAAIW,EAAQxJ,GAEVF,EAAE2J,WAAaZ,EAAEY,UACjB3J,EAAE4J,SAAWb,EAAEa,QACf5J,EAAE6J,QAAUd,EAAEc,OACd7J,EAAE,cAAgB+I,EAAE,YAEpB,OAAO,CAEX,QAAO,EAUT,QAASe,GAAKpF,EAAKqF,EAAMC,EAAaC,GACpC,GAAIC,GAAOxF,EAAIqF,EACfrF,GAAIqF,GAAQC,EAAYE,GACxBxF,EAAIqF,GAAMI,GAAY,EACtBzF,EAAIqF,GAAMK,EAAWF,EACjBD,GACFA,EAAMrE,MAAMlB,EAAKqF,EAAMG,IAU3B,QAASG,GAASC,EAAOC,GACvB,IAAKhH,EAAQ+G,GAAQ,MAAO,EAI5B,KAAK,GAFDE,MAEKtK,EAAI,EAAGA,EAAIoK,EAAM/J,OAAQL,IAChC,IACEsK,EAAO5E,KAAK6E,OAAOH,EAAMpK,KACzB,MAAOT,GACP+K,EAAO5E,KAAK,gCAIhB,MAAO4E,GAAOxE,KAAKuE,GASrB,QAASG,GAAWrI,GAClB,QAASsI,UAAUtI,GAAOsG,MAAM,SAASpI,OAG3C,QAASqK,GAASvI,GAChB,MAAOqI,GAAWG,KAAKC,UAAUzI,IAGnC,QAAS0I,GAAe1I,GACtB,GAAI2I,GAAY,EAEhB,IAAqB,gBAAV3I,GACT,MAAOA,GAAM9B,QAAUyK,EAAY3I,EAAQA,EAAMI,OAAO,EAAGuI,EAAY,GAAK,GACvE,IACY,gBAAV3I,IACU,iBAAVA,IACU,mBAAVA,GAEP,MAAOA,EAGT,IAAIC,GAAOc,OAAOC,UAAUP,SAASxC,KAAK+B,EAG1C,OAAa,oBAATC,EAAmC,WAC1B,mBAATA,EAAkC,UACzB,sBAATA,EACKD,EAAM0H,KAAO,cAAgB1H,EAAM0H,KAAO,IAAM,aAElD1H,EAGT,QAAS4I,GAAgB5I,EAAO6I,GAC9B,MAAc,KAAVA,EAAoBH,EAAe1I,GAEnCc,EAAcd,GACTe,OAAO+H,KAAK9I,GAAO+I,OAAO,SAASC,EAAKrG,GAE7C,MADAqG,GAAIrG,GAAOiG,EAAgB5I,EAAM2C,GAAMkG,EAAQ,GACxCG,OAEAC,MAAM/H,QAAQlB,GAChBA,EAAMkJ,IAAI,SAASC,GACxB,MAAOP,GAAgBO,EAAKN,EAAQ,KAIjCH,EAAe1I,GAGxB,QAASoJ,GAAmBpK,EAAI6J,EAAOQ,GACrC,IAAKvI,EAAc9B,GAAK,MAAOA,EAE/B6J,GAAyB,gBAAVA,GAAqBS,EAAgCT,EACpEQ,EAA2B,gBAAVR,GAAqBU,EAA+BF,CAErE,IAAIG,GAAaZ,EAAgB5J,EAAI6J,EAErC,OAAIN,GAASE,EAAUe,IAAeH,EAC7BD,EAAmBpK,EAAI6J,EAAQ,GAGjCW,EAGT,QAASC,GAAwBX,EAAMH,GACrC,GAAoB,gBAATG,IAAqC,gBAATA,GAAmB,MAAOA,GAAKrI,UACtE,KAAKwI,MAAM/H,QAAQ4H,GAAO,MAAO,EAKjC,IAHAA,EAAOA,EAAKY,OAAO,SAAS/G,GAC1B,MAAsB,gBAARA,KAEI,IAAhBmG,EAAK5K,OAAc,MAAO,sBAG9B,IADAyK,EAAiC,gBAAdA,GAAyBgB,EAA4BhB,EACpEG,EAAK,GAAG5K,QAAUyK,EAAW,MAAOG,GAAK,EAE7C,KAAK,GAAIc,GAAWd,EAAK5K,OAAQ0L,EAAW,EAAGA,IAAY,CACzD,GAAIJ,GAAaV,EAAKe,MAAM,EAAGD,GAAUjG,KAAK,KAC9C,MAAI6F,EAAWtL,OAASyK,GACxB,MAAIiB,KAAad,EAAK5K,OAAesL,EAC9BA,EAAa,IAGtB,MAAO,GAthBT,GAAIf,GAAYrK,EAAQ,GAEpBoD,EACgB,mBAAX3E,QACHA,OACkB,mBAAXC,GAAyBA,EAAyB,mBAATC,MAAuBA,QAybzEuM,EAAgC,EAEhCC,EAA+B,MAC/BI,EAA4B,EAwFhClN,GAAOD,SACL8D,SAAUA,EACVE,QAASA,EACTE,aAAcA,EACdE,YAAaA,EACbC,WAAYA,EACZC,cAAeA,EACfG,SAAUA,EACVC,QAASA,EACTC,cAAeA,EACfR,mBAAoBA,EACpBY,cAAeA,EACfK,uBAAwBA,EACxBE,8BAA+BA,EAC/BtC,gBAAiBA,EACjB4C,KAAMA,EACNI,YAAaA,EACbM,SAAUA,EACVF,aAAcA,EACdL,OAAQA,EACRW,WAAYA,EACZU,UAAWA,EACXY,MAAOA,EACPY,iBAAkBA,EAClBS,oBAAqBA,EACrBe,gBAAiBA,EACjBI,iBAAkBA,EAClBjD,SAAUA,EACV0D,KAAMA,EACNO,SAAUA,EACVoB,mBAAoBA,EACpBK,wBAAyBA,KAGxBxL,KAAKjB,KAAuB,mBAAXF,QAAyBA,OAAyB,mBAATC,MAAuBA,KAAyB,mBAAXF,QAAyBA,aACxHiN,EAAI,IAAIA,GAAG,SAAS1L,EAAQ3B,EAAOD,GAetC,QAASuN,GAAQC,EAAUC,GACzB,IAAK,GAAIpM,GAAI,EAAGA,EAAImM,EAAS9L,SAAUL,EACrC,GAAImM,EAASnM,KAAOoM,EAAQ,MAAOpM,EAErC,UAGF,QAAS4K,GAAUpG,EAAK6H,EAAUC,EAAQC,GACxC,MAAO5B,MAAKC,UAAUpG,EAAKgI,EAAWH,EAAUE,GAAgBD,GAIlE,QAASG,GAAetK,GACtB,GAAIuK,IAEFC,MAAOxK,EAAMwK,MACbtK,QAASF,EAAME,QACfwH,KAAM1H,EAAM0H,KAGd,KAAK,GAAI7J,KAAKmC,GACRe,OAAOC,UAAUK,eAAepD,KAAK+B,EAAOnC,KAC9C0M,EAAI1M,GAAKmC,EAAMnC,GAInB,OAAO0M,GAGT,QAASF,GAAWH,EAAUE,GAC5B,GAAII,MACA1B,IAWJ,OATqB,OAAjBsB,IACFA,EAAgB,SAASzH,EAAK3C,GAC5B,MAAIwK,GAAM,KAAOxK,EACR,eAEF,eAAiB8I,EAAKe,MAAM,EAAGE,EAAQS,EAAOxK,IAAQ2D,KAAK,KAAO,MAItE,SAAShB,EAAK3C,GACnB,GAAIwK,EAAMtM,OAAS,EAAG,CACpB,GAAIuM,GAAUV,EAAQS,EAAOxN,OAC5ByN,EAAUD,EAAME,OAAOD,EAAU,GAAKD,EAAMjH,KAAKvG,OACjDyN,EAAU3B,EAAK4B,OAAOD,EAASE,EAAAA,EAAUhI,GAAOmG,EAAKvF,KAAKZ,IAEtDoH,EAAQS,EAAOxK,KAClBA,EAAQoK,EAAcnM,KAAKjB,KAAM2F,EAAK3C,QAGxCwK,GAAMjH,KAAKvD,EAGb,OAAmB,OAAZkK,EACHlK,YAAiBlC,OAAQwM,EAAetK,GAASA,EACjDkK,EAASjM,KAAKjB,KAAM2F,EAAK3C,IA5DjCxD,EAAUC,EAAOD,QAAUiM,EAC3BjM,EAAQoO,aAAeP,YA+DZ,IAAI","file":"angular.min.js"} \ No newline at end of file +{"version":3,"sources":["angular.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","Plugins","Angular","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","angularPlugin","angular","RavenProvider","$get","$window","ExceptionHandlerProvider","$provide","decorator","exceptionHandler","R","$delegate","ex","cause","captureException","extra","moduleName","provider","config","setDataCallback","wrappedCallback","data","_normalizeData","angularPattern","exception","values","matches","exec","value","type","message","angularDocs","substr","2","isObject","what","isError","toString","isErrorEvent","supportsErrorEvent","isUndefined","isFunction","isPlainObject","Object","prototype","isString","isArray","isEmptyObject","_","hasOwnProperty","ErrorEvent","supportsFetch","_window","Headers","Request","Response","supportsReferrerPolicy","referrerPolicy","supportsPromiseRejectionEvent","PromiseRejectionEvent","callback","dataCallback","original","normalizedData","each","obj","j","hasKey","objectMerge","obj1","obj2","key","objectFrozen","isFrozen","truncate","str","max","object","joinRegExp","patterns","pattern","sources","len","push","replace","source","RegExp","join","urlencode","pairs","encodeURIComponent","parseUrl","url","match","query","fragment","protocol","host","path","relative","uuid4","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","Math","random","htmlTreeAsString","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","reverse","className","classes","attr","tagName","toLowerCase","id","split","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","isSameException","ex1","ex2","stacktrace","isSameStacktrace","stack1","stack2","frames1","frames","frames2","filename","lineno","colno","fill","name","replacement","track","orig","__raven__","__orig__","safeJoin","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","JSON","stringify","serializeValue","maxLength","serializeObject","depth","keys","reduce","acc","Array","map","val","serializeException","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","serializeKeysForMessage","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","slice","sanitize","sanitizeKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","test","sanitizeMask","safeInput","parse","o_O","3","indexOf","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","err","stack","thisPos","splice","Infinity","getSerialize"],"mappings":"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","file":"angular.min.js"} \ No newline at end of file diff --git a/dist/plugins/console.js b/dist/plugins/console.js index e3dd9ae22816..e2e26d07c30b 100644 --- a/dist/plugins/console.js +++ b/dist/plugins/console.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.23.3 (f261ec2) | github.com/getsentry/raven-js */ +/*! Raven.js 3.24.0 (cf87968) | github.com/getsentry/raven-js */ /* * Includes TraceKit @@ -504,6 +504,7 @@ function isSameStacktrace(stack1, stack2) { * @param track {optional} record instrumentation to an array */ function fill(obj, name, replacement, track) { + if (obj == null) return; var orig = obj[name]; obj[name] = replacement(orig); obj[name].__raven__ = true; @@ -627,6 +628,44 @@ function serializeKeysForMessage(keys, maxLength) { return ''; } +function sanitize(input, sanitizeKeys) { + if (!isArray(sanitizeKeys) || (isArray(sanitizeKeys) && sanitizeKeys.length === 0)) + return input; + + var sanitizeRegExp = joinRegExp(sanitizeKeys); + var sanitizeMask = '********'; + var safeInput; + + try { + safeInput = JSON.parse(stringify(input)); + } catch (o_O) { + return input; + } + + function sanitizeWorker(workerInput) { + if (isArray(workerInput)) { + return workerInput.map(function(val) { + return sanitizeWorker(val); + }); + } + + if (isPlainObject(workerInput)) { + return Object.keys(workerInput).reduce(function(acc, k) { + if (sanitizeRegExp.test(k)) { + acc[k] = sanitizeMask; + } else { + acc[k] = sanitizeWorker(workerInput[k]); + } + return acc; + }, {}); + } + + return workerInput; + } + + return sanitizeWorker(safeInput); +} + module.exports = { isObject: isObject, isError: isError, @@ -658,7 +697,8 @@ module.exports = { fill: fill, safeJoin: safeJoin, serializeException: serializeException, - serializeKeysForMessage: serializeKeysForMessage + serializeKeysForMessage: serializeKeysForMessage, + sanitize: sanitize }; }).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) diff --git a/dist/plugins/console.min.js b/dist/plugins/console.min.js index 0a6a0c436ee4..e2e10d4d7f21 100644 --- a/dist/plugins/console.min.js +++ b/dist/plugins/console.min.js @@ -1,3 +1,3 @@ -/*! Raven.js 3.23.3 (f261ec2) | github.com/getsentry/raven-js */ -!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b=b.Raven||(b.Raven={}),b=b.Plugins||(b.Plugins={}),b.Console=a()}}(function(){return function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};b[g][0].call(k.exports,function(a){var c=b[g][1][a];return e(c?c:a)},k,k.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;g ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function B(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&j(b))for(c=b.split(/\s+/),f=0;fc?M(a,b-1):d}function N(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?S:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}var O=a(4),P="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},Q=3,R=51200,S=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isUndefined:g,isFunction:h,isPlainObject:i,isString:j,isArray:k,isEmptyObject:l,supportsErrorEvent:m,supportsFetch:n,supportsReferrerPolicy:o,supportsPromiseRejectionEvent:p,wrappedCallback:q,each:r,objectMerge:s,truncate:u,objectFrozen:t,hasKey:v,joinRegExp:w,urlencode:x,uuid4:z,htmlTreeAsString:A,htmlElementAsString:B,isSameException:E,isSameStacktrace:F,parseUrl:y,fill:G,safeJoin:H,serializeException:M,serializeKeysForMessage:N}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{4:4}],4:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}]},{},[1])(1)}); +/*! Raven.js 3.24.0 (cf87968) | github.com/getsentry/raven-js */ +!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b=b.Raven||(b.Raven={}),b=b.Plugins||(b.Plugins={}),b.Console=a()}}(function(){return function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};b[g][0].call(k.exports,function(a){var c=b[g][1][a];return e(c?c:a)},k,k.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;g ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function B(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&j(b))for(c=b.split(/\s+/),f=0;fc?M(a,b-1):d}function N(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?T:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function O(a,b){function c(a){return k(a)?a.map(function(a){return c(a)}):i(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!k(b)||k(b)&&0===b.length)return a;var d,e=w(b),f="********";try{d=JSON.parse(P(a))}catch(g){return a}return c(d)}var P=a(4),Q="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},R=3,S=51200,T=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isUndefined:g,isFunction:h,isPlainObject:i,isString:j,isArray:k,isEmptyObject:l,supportsErrorEvent:m,supportsFetch:n,supportsReferrerPolicy:o,supportsPromiseRejectionEvent:p,wrappedCallback:q,each:r,objectMerge:s,truncate:u,objectFrozen:t,hasKey:v,joinRegExp:w,urlencode:x,uuid4:z,htmlTreeAsString:A,htmlElementAsString:B,isSameException:E,isSameStacktrace:F,parseUrl:y,fill:G,safeJoin:H,serializeException:M,serializeKeysForMessage:N,sanitize:O}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{4:4}],4:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}]},{},[1])(1)}); //# sourceMappingURL=console.min.js.map \ No newline at end of file diff --git a/dist/plugins/console.min.js.map b/dist/plugins/console.min.js.map index 7e1fbbf6dc49..b930fb33c9a3 100644 --- a/dist/plugins/console.min.js.map +++ b/dist/plugins/console.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["console.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","Plugins","Console","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","consolePlugin","console","pluginOptions","logLevels","levels","push","callback","msg","data","captureMessage","level","pop","wrapConsoleMethod","wrapMethod","2","utils","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","safeJoin","logger","extra","Function","prototype","apply","3","isObject","what","isError","value","toString","isErrorEvent","supportsErrorEvent","isUndefined","isFunction","isPlainObject","Object","isString","isArray","isEmptyObject","_","hasOwnProperty","ErrorEvent","supportsFetch","_window","Headers","Request","Response","supportsReferrerPolicy","referrerPolicy","supportsPromiseRejectionEvent","PromiseRejectionEvent","wrappedCallback","dataCallback","original","normalizedData","each","obj","j","hasKey","objectMerge","obj1","obj2","key","objectFrozen","isFrozen","truncate","str","max","substr","object","joinRegExp","patterns","pattern","sources","len","replace","source","RegExp","join","urlencode","pairs","encodeURIComponent","parseUrl","url","match","query","fragment","protocol","host","path","relative","uuid4","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","Math","random","htmlTreeAsString","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","reverse","className","classes","attr","tagName","toLowerCase","id","split","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","isSameException","ex1","ex2","values","type","stacktrace","isSameStacktrace","stack1","stack2","frames1","frames","frames2","filename","lineno","colno","fill","name","replacement","track","orig","__raven__","__orig__","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","JSON","stringify","serializeValue","maxLength","serializeObject","depth","keys","reduce","acc","Array","map","val","serializeException","ex","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","serializeKeysForMessage","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","4","indexOf","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","err","stack","message","thisPos","splice","Infinity","getSerialize"],"mappings":"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","file":"console.min.js"} \ No newline at end of file +{"version":3,"sources":["console.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","Plugins","Console","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","consolePlugin","console","pluginOptions","logLevels","levels","push","callback","msg","data","captureMessage","level","pop","wrapConsoleMethod","wrapMethod","2","utils","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","safeJoin","logger","extra","Function","prototype","apply","3","isObject","what","isError","value","toString","isErrorEvent","supportsErrorEvent","isUndefined","isFunction","isPlainObject","Object","isString","isArray","isEmptyObject","_","hasOwnProperty","ErrorEvent","supportsFetch","_window","Headers","Request","Response","supportsReferrerPolicy","referrerPolicy","supportsPromiseRejectionEvent","PromiseRejectionEvent","wrappedCallback","dataCallback","original","normalizedData","each","obj","j","hasKey","objectMerge","obj1","obj2","key","objectFrozen","isFrozen","truncate","str","max","substr","object","joinRegExp","patterns","pattern","sources","len","replace","source","RegExp","join","urlencode","pairs","encodeURIComponent","parseUrl","url","match","query","fragment","protocol","host","path","relative","uuid4","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","Math","random","htmlTreeAsString","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","reverse","className","classes","attr","tagName","toLowerCase","id","split","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","isSameException","ex1","ex2","values","type","stacktrace","isSameStacktrace","stack1","stack2","frames1","frames","frames2","filename","lineno","colno","fill","name","replacement","track","orig","__raven__","__orig__","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","JSON","stringify","serializeValue","maxLength","serializeObject","depth","keys","reduce","acc","Array","map","val","serializeException","ex","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","serializeKeysForMessage","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitize","sanitizeKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","test","sanitizeMask","safeInput","parse","o_O","4","indexOf","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","err","stack","message","thisPos","splice","Infinity","getSerialize"],"mappings":"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","file":"console.min.js"} \ No newline at end of file diff --git a/dist/plugins/ember.js b/dist/plugins/ember.js index 07cf825a2e4d..eaefeeb7846b 100644 --- a/dist/plugins/ember.js +++ b/dist/plugins/ember.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.23.3 (f261ec2) | github.com/getsentry/raven-js */ +/*! Raven.js 3.24.0 (cf87968) | github.com/getsentry/raven-js */ /* * Includes TraceKit diff --git a/dist/plugins/ember.min.js b/dist/plugins/ember.min.js index 07c063182678..117173798ffc 100644 --- a/dist/plugins/ember.min.js +++ b/dist/plugins/ember.min.js @@ -1,3 +1,3 @@ -/*! Raven.js 3.23.3 (f261ec2) | github.com/getsentry/raven-js */ +/*! Raven.js 3.24.0 (cf87968) | github.com/getsentry/raven-js */ !function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b=b.Raven||(b.Raven={}),b=b.Plugins||(b.Plugins={}),b.Ember=a()}}(function(){return function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};b[g][0].call(k.exports,function(a){var c=b[g][1][a];return e(c?c:a)},k,k.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;g":"anonymous component")+(a._isVue&&a.$options.__file?" at "+a.$options.__file:"")}function e(a,b){if(b=b||window.Vue,b&&b.config){var c=b.config.errorHandler;b.config.errorHandler=function(b,e,f){var g={};"[object Object]"===Object.prototype.toString.call(e)&&(g.componentName=d(e),g.propsData=e.$options.propsData),"undefined"!=typeof f&&(g.lifecycleHook=f),a.captureException(b,{extra:g}),"function"==typeof c&&c.call(this,b,e,f)}}}b.exports=e},{}]},{},[1])(1)}); //# sourceMappingURL=vue.min.js.map \ No newline at end of file diff --git a/dist/raven.js b/dist/raven.js index 5c37bb02242d..393fab9790b1 100644 --- a/dist/raven.js +++ b/dist/raven.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.23.3 (f261ec2) | github.com/getsentry/raven-js */ +/*! Raven.js 3.24.0 (cf87968) | github.com/getsentry/raven-js */ /* * Includes TraceKit @@ -100,6 +100,7 @@ var supportsFetch = utils.supportsFetch; var supportsReferrerPolicy = utils.supportsReferrerPolicy; var serializeKeysForMessage = utils.serializeKeysForMessage; var serializeException = utils.serializeException; +var sanitize = utils.sanitize; var wrapConsoleMethod = _dereq_(2).wrapMethod; @@ -153,13 +154,13 @@ function Raven() { collectWindowErrors: true, captureUnhandledRejections: true, maxMessageLength: 0, - // By default, truncates URL values to 250 chars maxUrlLength: 250, stackTraceLimit: 50, autoBreadcrumbs: true, instrument: true, - sampleRate: 1 + sampleRate: 1, + sanitizeKeys: [] }; this._fetchDefaults = { method: 'POST', @@ -204,7 +205,7 @@ Raven.prototype = { // webpack (using a build step causes webpack #1617). Grunt verifies that // this value matches package.json during build. // See: https://github.com/getsentry/raven-js/issues/465 - VERSION: '3.23.3', + VERSION: '3.24.0', debug: false, @@ -1312,7 +1313,7 @@ Raven.prototype = { } if (autoBreadcrumbs.xhr && 'XMLHttpRequest' in _window) { - var xhrproto = XMLHttpRequest.prototype; + var xhrproto = _window.XMLHttpRequest && _window.XMLHttpRequest.prototype; fill( xhrproto, 'open', @@ -1933,6 +1934,8 @@ Raven.prototype = { // Include server_name if it's defined in globalOptions if (globalOptions.serverName) data.server_name = globalOptions.serverName; + data = this._sanitizeData(data); + // Cleanup empty properties before sending them to the server Object.keys(data).forEach(function(key) { if (data[key] == null || data[key] === '' || isEmptyObject(data[key])) { @@ -1973,6 +1976,10 @@ Raven.prototype = { } }, + _sanitizeData: function(data) { + return sanitize(data, this._globalOptions.sanitizeKeys); + }, + _getUuid: function() { return uuid4(); }, @@ -2231,6 +2238,42 @@ Raven.afterLoad(); module.exports = Raven; +/** + * DISCLAIMER: + * + * Expose `Client` constructor for cases where user want to track multiple "sub-applications" in one larger app. + * It's not meant to be used by a wide audience, so pleaaase make sure that you know what you're doing before using it. + * Accidentally calling `install` multiple times, may result in an unexpected behavior that's very hard to debug. + * + * It's called `Client' to be in-line with Raven Node implementation. + * + * HOWTO: + * + * import Raven from 'raven-js'; + * + * const someAppReporter = new Raven.Client(); + * const someOtherAppReporter = new Raven.Client(); + * + * someAppReporter('__DSN__', { + * ...config goes here + * }); + * + * someOtherAppReporter('__OTHER_DSN__', { + * ...config goes here + * }); + * + * someAppReporter.captureMessage(...); + * someAppReporter.captureException(...); + * someAppReporter.captureBreadcrumb(...); + * + * someOtherAppReporter.captureMessage(...); + * someOtherAppReporter.captureException(...); + * someOtherAppReporter.captureBreadcrumb(...); + * + * It should "just work". + */ +module.exports.Client = RavenConstructor; + }).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) },{"3":3}],5:[function(_dereq_,module,exports){ (function (global){ @@ -2648,6 +2691,7 @@ function isSameStacktrace(stack1, stack2) { * @param track {optional} record instrumentation to an array */ function fill(obj, name, replacement, track) { + if (obj == null) return; var orig = obj[name]; obj[name] = replacement(orig); obj[name].__raven__ = true; @@ -2771,6 +2815,44 @@ function serializeKeysForMessage(keys, maxLength) { return ''; } +function sanitize(input, sanitizeKeys) { + if (!isArray(sanitizeKeys) || (isArray(sanitizeKeys) && sanitizeKeys.length === 0)) + return input; + + var sanitizeRegExp = joinRegExp(sanitizeKeys); + var sanitizeMask = '********'; + var safeInput; + + try { + safeInput = JSON.parse(stringify(input)); + } catch (o_O) { + return input; + } + + function sanitizeWorker(workerInput) { + if (isArray(workerInput)) { + return workerInput.map(function(val) { + return sanitizeWorker(val); + }); + } + + if (isPlainObject(workerInput)) { + return Object.keys(workerInput).reduce(function(acc, k) { + if (sanitizeRegExp.test(k)) { + acc[k] = sanitizeMask; + } else { + acc[k] = sanitizeWorker(workerInput[k]); + } + return acc; + }, {}); + } + + return workerInput; + } + + return sanitizeWorker(safeInput); +} + module.exports = { isObject: isObject, isError: isError, @@ -2802,7 +2884,8 @@ module.exports = { fill: fill, safeJoin: safeJoin, serializeException: serializeException, - serializeKeysForMessage: serializeKeysForMessage + serializeKeysForMessage: serializeKeysForMessage, + sanitize: sanitize }; }).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) diff --git a/dist/raven.min.js b/dist/raven.min.js index a5bdc2e272f0..12cd77997be4 100644 --- a/dist/raven.min.js +++ b/dist/raven.min.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.23.3 (f261ec2) | github.com/getsentry/raven-js */ -!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.Raven=a()}}(function(){return function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};b[g][0].call(k.exports,function(a){var c=b[g][1][a];return e(c?c:a)},k,k.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;gthis.k.maxBreadcrumbs&&this.u.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.r.push([a,b]),this.n&&this.F(),this},setUserContext:function(a){return this.j.user=a,this},setExtraContext:function(a){return this.Z("extra",a),this},setTagsContext:function(a){return this.Z("tags",a),this},clearContext:function(){return this.j={},this},getContext:function(){return JSON.parse(h(this.j))},setEnvironment:function(a){return this.k.environment=a,this},setRelease:function(a){return this.k.release=a,this},setDataCallback:function(a){var b=this.k.dataCallback;return this.k.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.k.breadcrumbCallback;return this.k.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.k.shouldSendCallback;return this.k.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.k.transport=a,this},lastException:function(){return this.d},lastEventId:function(){return this.f},isSetup:function(){return!!this.a&&(!!this.g||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.z("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=O.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(P){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.H;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.j.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.J(this.G(c)),h=P.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(P.head||P.body).appendChild(h)}},L:function(){var a=this;this.m+=1,setTimeout(function(){a.m-=1})},$:function(a,b){var c,d;if(this.b){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),P.createEvent?(c=P.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=P.createEventObject(),c.eventType=a);for(d in b)y(b,d)&&(c[d]=b[d]);if(P.createEvent)P.dispatchEvent(c);else try{P.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},_:function(a){var b=this;return function(c){if(b.aa=null,b.v!==c){b.v=c;var d;try{d=C(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ba:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.aa;g||a._("input")(c),clearTimeout(g),a.aa=setTimeout(function(){a.aa=null},b)}}},ca:function(a,b){var c=F(this.w.href),d=F(b),e=F(a);this.x=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},C:function(){var a=this;a.da=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.M?a.da.apply(this.O,arguments):a.da.apply(this,arguments)}},Q:function(){this.da&&(Function.prototype.toString=this.da)},D:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.ca(b.x,c+""),a.apply(this,arguments)}};G(history,"pushState",j,d),G(history,"replaceState",j,d)}if(c.console&&"console"in O&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};u(["debug","info","warn","error","log"],function(a,b){L(console,b,k)})}},R:function(){for(var a;this.t.length;){a=this.t.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},S:function(){for(var a in this.q)this.p[a]=this.q[a]},F:function(){var a=this;u(this.r,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},G:function(a){var b=N.exec(a),c={},d=7;try{for(;d--;)c[M[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.k.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},J:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},A:function(){this.m||this.V.apply(this,arguments)},V:function(a,b){var c=this.X(a,b);this.$("handle",{stackInfo:a,options:b}),this.fa(a.name,a.message,a.url,a.lineno,c,b)},X:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(u(a.stack,function(b,e){var f=c.ga(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.u,0)}),this.j.user&&(a.user=this.j.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||t(a[b]))&&delete a[b]}),q(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!t(a)&&(!q(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.ma()?void this.z("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function B(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&j(b))for(c=b.split(/\s+/),f=0;fc?M(a,b-1):d}function N(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?S:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}var O=a(7),P="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},Q=3,R=51200,S=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isUndefined:g,isFunction:h,isPlainObject:i,isString:j,isArray:k,isEmptyObject:l,supportsErrorEvent:m,supportsFetch:n,supportsReferrerPolicy:o,supportsPromiseRejectionEvent:p,wrappedCallback:q,each:r,objectMerge:s,truncate:u,objectFrozen:t,hasKey:v,joinRegExp:w,urlencode:x,uuid4:z,htmlTreeAsString:A,htmlElementAsString:B,isSameException:E,isSameStacktrace:F,parseUrl:y,fill:G,safeJoin:H,serializeException:M,serializeKeysForMessage:N}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{7:7}],6:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}var e=a(5),f={collectWindowErrors:!0,debug:!1},g="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},h=[].slice,i="?",j=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;f.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function k(a,b){var c=null;if(!b||f.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(h.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,g,h){var l=null,m=e.isErrorEvent(h)?h.error:h,n=e.isErrorEvent(a)?a.message:a;if(v)f.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&e.isError(m))l=f.computeStackTrace(m),k(l,!0);else{var p,r={url:b,line:c,column:g},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(j);p&&(s=p[1],n=p[2])}r.func=i,l={name:s,message:n,url:d(),stack:[r]},k(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=g.onerror,g.onerror=l,r=!0)}function n(){r&&(g.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,k.apply(null,[a,!1].concat(b))}function p(a,b){var c=h.call(arguments,1);if(v){if(u===a)return;o()}var d=f.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),f.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,e,f=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,g=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,h=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,j=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,k=/\((\S*)(?::(\d+))(?::(\d+))\)/,l=a.stack.split("\n"),m=[],n=(/^(.*) is undefined$/.exec(a.message),0),o=l.length;n eval")>-1;q&&(b=j.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==n||c[5]||"undefined"==typeof a.columnNumber||(m[0].column=a.columnNumber+1),e={url:c[3],func:c[1]||i,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}!e.func&&e.line&&(e.func=i),m.push(e)}return m.length?{name:a.name,message:a.message,url:d(),stack:m}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=i),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,g){for(var h,j,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==e&&o!==f.report){if(j={url:null,func:i,line:null,column:null},o.name?j.func=o.name:(h=k.exec(o.toString()))&&(j.func=h[1]),"undefined"==typeof j.func)try{j.func=h.input.substring(0,h.input.indexOf("{"))}catch(p){}m[""+o]?n=!0:m[""+o]=!0,l.push(j)}g&&l.splice(0,g);var q={name:a.name,message:a.message,url:d(),stack:l};return b(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),q}function e(b,e){var g=null;e=null==e?0:+e;try{if(g=a(b))return g}catch(h){if(f.debug)throw h}try{if(g=c(b,e+1))return g}catch(h){if(f.debug)throw h}return{name:b.name,message:b.message,url:d()}}return e.augmentStackTraceWithInitialElement=b,e.computeStackTraceFromStackProp=a,e}(),b.exports=f}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{5:5}],7:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}],8:[function(a,b,c){function d(a,b){var c=(65535&a)+(65535&b),d=(a>>16)+(b>>16)+(c>>16);return d<<16|65535&c}function e(a,b){return a<>>32-b}function f(a,b,c,f,g,h){return d(e(d(d(b,a),d(f,h)),g),c)}function g(a,b,c,d,e,g,h){return f(b&c|~b&d,a,b,e,g,h)}function h(a,b,c,d,e,g,h){return f(b&d|c&~d,a,b,e,g,h)}function i(a,b,c,d,e,g,h){return f(b^c^d,a,b,e,g,h)}function j(a,b,c,d,e,g,h){return f(c^(b|~d),a,b,e,g,h)}function k(a,b){a[b>>5]|=128<>>9<<4)+14]=b;var c,e,f,k,l,m=1732584193,n=-271733879,o=-1732584194,p=271733878;for(c=0;c>5]>>>b%32&255);return c}function m(a){var b,c=[];for(c[(a.length>>2)-1]=void 0,b=0;b>5]|=(255&a.charCodeAt(b/8))<16&&(e=k(e,8*a.length)),c=0;c<16;c+=1)f[c]=909522486^e[c],g[c]=1549556828^e[c];return d=k(f.concat(m(b)),512+8*b.length),l(k(g.concat(d),640))}function p(a){var b,c,d="0123456789abcdef",e="";for(c=0;c>>4&15)+d.charAt(15&b);return e}function q(a){return unescape(encodeURIComponent(a))}function r(a){return n(q(a))}function s(a){return p(r(a))}function t(a,b){return o(q(a),q(b))}function u(a,b){return p(t(a,b))}function v(a,b,c){return b?c?t(b,a):u(b,a):c?r(a):s(a)}b.exports=v},{}]},{},[4])(4)}); +/*! Raven.js 3.24.0 (cf87968) | github.com/getsentry/raven-js */ +!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.Raven=a()}}(function(){return function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};b[g][0].call(k.exports,function(a){var c=b[g][1][a];return e(c?c:a)},k,k.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;gthis.k.maxBreadcrumbs&&this.u.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.r.push([a,b]),this.n&&this.F(),this},setUserContext:function(a){return this.j.user=a,this},setExtraContext:function(a){return this.Z("extra",a),this},setTagsContext:function(a){return this.Z("tags",a),this},clearContext:function(){return this.j={},this},getContext:function(){return JSON.parse(h(this.j))},setEnvironment:function(a){return this.k.environment=a,this},setRelease:function(a){return this.k.release=a,this},setDataCallback:function(a){var b=this.k.dataCallback;return this.k.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.k.breadcrumbCallback;return this.k.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.k.shouldSendCallback;return this.k.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.k.transport=a,this},lastException:function(){return this.d},lastEventId:function(){return this.f},isSetup:function(){return!!this.a&&(!!this.g||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.z("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=P.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(Q){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.H;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.j.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.J(this.G(c)),h=Q.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(Q.head||Q.body).appendChild(h)}},L:function(){var a=this;this.m+=1,setTimeout(function(){a.m-=1})},$:function(a,b){var c,d;if(this.b){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),Q.createEvent?(c=Q.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=Q.createEventObject(),c.eventType=a);for(d in b)y(b,d)&&(c[d]=b[d]);if(Q.createEvent)Q.dispatchEvent(c);else try{Q.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},_:function(a){var b=this;return function(c){if(b.aa=null,b.v!==c){b.v=c;var d;try{d=C(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ba:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.aa;g||a._("input")(c),clearTimeout(g),a.aa=setTimeout(function(){a.aa=null},b)}}},ca:function(a,b){var c=F(this.w.href),d=F(b),e=F(a);this.x=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},C:function(){var a=this;a.da=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.M?a.da.apply(this.O,arguments):a.da.apply(this,arguments)}},Q:function(){this.da&&(Function.prototype.toString=this.da)},D:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.ca(b.x,c+""),a.apply(this,arguments)}};G(history,"pushState",j,d),G(history,"replaceState",j,d)}if(c.console&&"console"in P&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};u(["debug","info","warn","error","log"],function(a,b){M(console,b,k)})}},R:function(){for(var a;this.t.length;){a=this.t.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},S:function(){for(var a in this.q)this.p[a]=this.q[a]},F:function(){var a=this;u(this.r,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},G:function(a){var b=O.exec(a),c={},d=7;try{for(;d--;)c[N[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.k.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},J:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},A:function(){this.m||this.V.apply(this,arguments)},V:function(a,b){var c=this.X(a,b);this.$("handle",{stackInfo:a,options:b}),this.fa(a.name,a.message,a.url,a.lineno,c,b)},X:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(u(a.stack,function(b,e){var f=c.ga(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.u,0)}),this.j.user&&(a.user=this.j.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),a=this.pa(a),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||t(a[b]))&&delete a[b]}),q(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!t(a)&&(!q(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.ma()?void this.z("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function B(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&j(b))for(c=b.split(/\s+/),f=0;fc?M(a,b-1):d}function N(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?T:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function O(a,b){function c(a){return k(a)?a.map(function(a){return c(a)}):i(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!k(b)||k(b)&&0===b.length)return a;var d,e=w(b),f="********";try{d=JSON.parse(P(a))}catch(g){return a}return c(d)}var P=a(7),Q="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},R=3,S=51200,T=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isUndefined:g,isFunction:h,isPlainObject:i,isString:j,isArray:k,isEmptyObject:l,supportsErrorEvent:m,supportsFetch:n,supportsReferrerPolicy:o,supportsPromiseRejectionEvent:p,wrappedCallback:q,each:r,objectMerge:s,truncate:u,objectFrozen:t,hasKey:v,joinRegExp:w,urlencode:x,uuid4:z,htmlTreeAsString:A,htmlElementAsString:B,isSameException:E,isSameStacktrace:F,parseUrl:y,fill:G,safeJoin:H,serializeException:M,serializeKeysForMessage:N,sanitize:O}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{7:7}],6:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}var e=a(5),f={collectWindowErrors:!0,debug:!1},g="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},h=[].slice,i="?",j=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;f.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function k(a,b){var c=null;if(!b||f.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(h.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,g,h){var l=null,m=e.isErrorEvent(h)?h.error:h,n=e.isErrorEvent(a)?a.message:a;if(v)f.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&e.isError(m))l=f.computeStackTrace(m),k(l,!0);else{var p,r={url:b,line:c,column:g},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(j);p&&(s=p[1],n=p[2])}r.func=i,l={name:s,message:n,url:d(),stack:[r]},k(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=g.onerror,g.onerror=l,r=!0)}function n(){r&&(g.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,k.apply(null,[a,!1].concat(b))}function p(a,b){var c=h.call(arguments,1);if(v){if(u===a)return;o()}var d=f.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),f.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,e,f=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,g=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,h=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,j=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,k=/\((\S*)(?::(\d+))(?::(\d+))\)/,l=a.stack.split("\n"),m=[],n=(/^(.*) is undefined$/.exec(a.message),0),o=l.length;n eval")>-1;q&&(b=j.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==n||c[5]||"undefined"==typeof a.columnNumber||(m[0].column=a.columnNumber+1),e={url:c[3],func:c[1]||i,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}!e.func&&e.line&&(e.func=i),m.push(e)}return m.length?{name:a.name,message:a.message,url:d(),stack:m}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=i),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,g){for(var h,j,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==e&&o!==f.report){if(j={url:null,func:i,line:null,column:null},o.name?j.func=o.name:(h=k.exec(o.toString()))&&(j.func=h[1]),"undefined"==typeof j.func)try{j.func=h.input.substring(0,h.input.indexOf("{"))}catch(p){}m[""+o]?n=!0:m[""+o]=!0,l.push(j)}g&&l.splice(0,g);var q={name:a.name,message:a.message,url:d(),stack:l};return b(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),q}function e(b,e){var g=null;e=null==e?0:+e;try{if(g=a(b))return g}catch(h){if(f.debug)throw h}try{if(g=c(b,e+1))return g}catch(h){if(f.debug)throw h}return{name:b.name,message:b.message,url:d()}}return e.augmentStackTraceWithInitialElement=b,e.computeStackTraceFromStackProp=a,e}(),b.exports=f}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{5:5}],7:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}],8:[function(a,b,c){function d(a,b){var c=(65535&a)+(65535&b),d=(a>>16)+(b>>16)+(c>>16);return d<<16|65535&c}function e(a,b){return a<>>32-b}function f(a,b,c,f,g,h){return d(e(d(d(b,a),d(f,h)),g),c)}function g(a,b,c,d,e,g,h){return f(b&c|~b&d,a,b,e,g,h)}function h(a,b,c,d,e,g,h){return f(b&d|c&~d,a,b,e,g,h)}function i(a,b,c,d,e,g,h){return f(b^c^d,a,b,e,g,h)}function j(a,b,c,d,e,g,h){return f(c^(b|~d),a,b,e,g,h)}function k(a,b){a[b>>5]|=128<>>9<<4)+14]=b;var c,e,f,k,l,m=1732584193,n=-271733879,o=-1732584194,p=271733878;for(c=0;c>5]>>>b%32&255);return c}function m(a){var b,c=[];for(c[(a.length>>2)-1]=void 0,b=0;b>5]|=(255&a.charCodeAt(b/8))<16&&(e=k(e,8*a.length)),c=0;c<16;c+=1)f[c]=909522486^e[c],g[c]=1549556828^e[c];return d=k(f.concat(m(b)),512+8*b.length),l(k(g.concat(d),640))}function p(a){var b,c,d="0123456789abcdef",e="";for(c=0;c>>4&15)+d.charAt(15&b);return e}function q(a){return unescape(encodeURIComponent(a))}function r(a){return n(q(a))}function s(a){return p(r(a))}function t(a,b){return o(q(a),q(b))}function u(a,b){return p(t(a,b))}function v(a,b,c){return b?c?t(b,a):u(b,a):c?r(a):s(a)}b.exports=v},{}]},{},[4])(4)}); //# sourceMappingURL=raven.min.js.map \ No newline at end of file diff --git a/dist/raven.min.js.map b/dist/raven.min.js.map index 7f574c186afd..37e6f2d14b6f 100644 --- a/dist/raven.min.js.map +++ b/dist/raven.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","RavenConfigError","message","name","prototype","constructor","2","utils","wrapMethod","console","level","callback","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","msg","safeJoin","data","logger","extra","Function","apply","5","3","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isError","isObject","isPlainObject","isErrorEvent","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","wrapConsoleMethod","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","config","dsn","options","_logDebug","globalOptions","key","value","setDSN","push","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","toString","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","substr","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","context","func","undefined","wrap","_before","wrapped","deep","_ignoreNextOnError","captureException","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","T","event","reason","B","_promiseRejectionHandler","bind","addEventListener","P","removeEventListener","ex","trimHeadFrames","error","captureMessage","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","U","currentOptions","exKeys","Object","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","addPlugin","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","setDataCallback","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","L","setTimeout","$","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","_","evtName","_keypressTimeout","target","category","ba","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","ca","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","C","_originalFunctionToString","Q","D","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","type","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","E","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","R","builtin","S","F","installer","concat","G","str","m","exec","allowSecretKey","J","port","A","V","stackInfo","_triggerEvent","_processException","lineno","X","frame","_normalizeFrame","in_app","ga","stackInfoUrl","normalized","filename","line","colno","column","function","fa","prefixedMessage","exception","values","culprit","ha","request","Referer","breadcrumbs","_trimBreadcrumbs","ia","urlProp","urlProps","ja","httpData","userAgent","User-Agent","referrer","y","_backoffDuration","_backoffStart","ma","na","current","last","oa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Y","baseData","project","platform","_getHttpData","serverName","server_name","forEach","random","_sendProcessedPayload","qa","pa","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","ra","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","onerror","open","setRequestHeader","send","sa","hash","evaluated","z","Z","setUser","setReleaseContext","6","7","8","4","RavenConstructor","_Raven","noConflict","what","supportsErrorEvent","ErrorEvent","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","wrappedCallback","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","getLocationHref","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","charAt","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","k","hexHMACMD5","string","raw"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file +{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","RavenConfigError","message","name","prototype","constructor","2","utils","wrapMethod","console","level","callback","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","msg","safeJoin","data","logger","extra","Function","apply","5","3","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","sanitizeKeys","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isError","isObject","isPlainObject","isErrorEvent","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","sanitize","wrapConsoleMethod","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","config","dsn","options","_logDebug","globalOptions","key","value","setDSN","push","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","toString","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","substr","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","context","func","undefined","wrap","_before","wrapped","deep","_ignoreNextOnError","captureException","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","T","event","reason","B","_promiseRejectionHandler","bind","addEventListener","P","removeEventListener","ex","trimHeadFrames","error","captureMessage","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","U","currentOptions","exKeys","Object","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","addPlugin","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","setDataCallback","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","L","setTimeout","$","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","_","evtName","_keypressTimeout","target","category","ba","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","ca","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","C","_originalFunctionToString","Q","D","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","type","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","E","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","R","builtin","S","F","installer","concat","G","str","m","exec","allowSecretKey","J","port","A","V","stackInfo","_triggerEvent","_processException","lineno","X","frame","_normalizeFrame","in_app","ga","stackInfoUrl","normalized","filename","line","colno","column","function","fa","prefixedMessage","exception","values","culprit","ha","request","Referer","breadcrumbs","_trimBreadcrumbs","ia","urlProp","urlProps","ja","httpData","userAgent","User-Agent","referrer","y","_backoffDuration","_backoffStart","ma","na","current","last","oa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Y","baseData","project","platform","_getHttpData","serverName","server_name","_sanitizeData","forEach","random","_sendProcessedPayload","pa","ra","qa","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","sa","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","onerror","open","setRequestHeader","send","ta","hash","evaluated","z","Z","setUser","setReleaseContext","6","7","8","4","RavenConstructor","_Raven","noConflict","Client","what","supportsErrorEvent","ErrorEvent","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","wrappedCallback","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","sanitizeMask","safeInput","o_O","getLocationHref","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","charAt","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","string","raw"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file diff --git a/dist/sri.json b/dist/sri.json index 12a5b7a11ece..782e8f771dc6 100644 --- a/dist/sri.json +++ b/dist/sri.json @@ -1,20 +1,20 @@ { "@dist/raven.js": { "hashes": { - "sha256": "GmX67vv8/Ks8XqHGXfKa5GI8s3YucPfOG4A3XYqtVFY=", - "sha512": "/h6wGsW4xBCvbK3QpCC6mktzvzmojTRsbjXpLwxvmIChKFiZfqFjnYdHFxj7LmtMk8umWYeq+22o20vCcQxeXQ==" + "sha256": "uoJIFt4AtR+DNmMvLyz4Jmw6E1FMYV8E0x/RRxrISaY=", + "sha512": "gnb2gMnPV22ZWbl+tHDWX9vsRs+fDZN9K2zNM7l4jrkTMMd7A4+JhYyz83/QZB5ayN9cmFpiDL92RetIaHoyHQ==" }, "type": null, - "integrity": "sha256-GmX67vv8/Ks8XqHGXfKa5GI8s3YucPfOG4A3XYqtVFY= sha512-/h6wGsW4xBCvbK3QpCC6mktzvzmojTRsbjXpLwxvmIChKFiZfqFjnYdHFxj7LmtMk8umWYeq+22o20vCcQxeXQ==", + "integrity": "sha256-uoJIFt4AtR+DNmMvLyz4Jmw6E1FMYV8E0x/RRxrISaY= sha512-gnb2gMnPV22ZWbl+tHDWX9vsRs+fDZN9K2zNM7l4jrkTMMd7A4+JhYyz83/QZB5ayN9cmFpiDL92RetIaHoyHQ==", "path": "dist/raven.js" }, "@dist/raven.min.js": { "hashes": { - "sha256": "RwAxUjH9W/xWvPiAA0es8dWsZwV45PGEOrm83cdIkNY=", - "sha512": "7yeV8AlsLyWFuXYoQaY0hwWuO70/u9jkyQLcdpIgwrgAYSv89ks9V5DVC1q2YBIqrHM7kApV1w5of76Cwla7/w==" + "sha256": "fOke6uUzxOhGNOmbq7J9g4IOxACE2zp5JL4MaknbhE8=", + "sha512": "pR4xrWhG7K3YCVeCrTUg1Pybe1m4wTmHWR35w2ldKJ2Nei979hzz94VcBNfFi85gCimb+ckW+XRIzmddOcXYjg==" }, "type": null, - "integrity": "sha256-RwAxUjH9W/xWvPiAA0es8dWsZwV45PGEOrm83cdIkNY= sha512-7yeV8AlsLyWFuXYoQaY0hwWuO70/u9jkyQLcdpIgwrgAYSv89ks9V5DVC1q2YBIqrHM7kApV1w5of76Cwla7/w==", + "integrity": "sha256-fOke6uUzxOhGNOmbq7J9g4IOxACE2zp5JL4MaknbhE8= sha512-pR4xrWhG7K3YCVeCrTUg1Pybe1m4wTmHWR35w2ldKJ2Nei979hzz94VcBNfFi85gCimb+ckW+XRIzmddOcXYjg==", "path": "dist/raven.min.js" } } \ No newline at end of file diff --git a/docs/sentry-doc-config.json b/docs/sentry-doc-config.json index dbabc2d686d5..bd28ee90c321 100644 --- a/docs/sentry-doc-config.json +++ b/docs/sentry-doc-config.json @@ -66,6 +66,6 @@ } }, "vars": { - "RAVEN_VERSION": "3.23.3" + "RAVEN_VERSION": "3.24.0" } } diff --git a/package.json b/package.json index 369bdb59af2b..1e50c78a2f64 100644 --- a/package.json +++ b/package.json @@ -9,7 +9,7 @@ "raven", "sentry" ], - "version": "3.23.3", + "version": "3.24.0", "repository": "git://github.com/getsentry/raven-js.git", "license": "BSD-2-Clause", "homepage": "https://github.com/getsentry/raven-js", diff --git a/src/raven.js b/src/raven.js index 132181d2ad99..58f025bf80bb 100644 --- a/src/raven.js +++ b/src/raven.js @@ -137,7 +137,7 @@ Raven.prototype = { // webpack (using a build step causes webpack #1617). Grunt verifies that // this value matches package.json during build. // See: https://github.com/getsentry/raven-js/issues/465 - VERSION: '3.23.3', + VERSION: '3.24.0', debug: false, diff --git a/test/raven.test.js b/test/raven.test.js index fb3caf4ddbf6..f3c19156cdcc 100644 --- a/test/raven.test.js +++ b/test/raven.test.js @@ -1376,7 +1376,7 @@ describe('globals', function() { extra: {'session:duration': 100} }); assert.deepEqual(opts.auth, { - sentry_client: 'raven-js/3.23.3', + sentry_client: 'raven-js/3.24.0', sentry_key: 'abc', sentry_version: '7' }); @@ -1423,7 +1423,7 @@ describe('globals', function() { extra: {'session:duration': 100} }); assert.deepEqual(opts.auth, { - sentry_client: 'raven-js/3.23.3', + sentry_client: 'raven-js/3.24.0', sentry_key: 'abc', sentry_secret: 'def', sentry_version: '7' From 2bfb2e4af684a228dc7a1eccc7f11dfb270ebf90 Mon Sep 17 00:00:00 2001 From: AsrarMemon Date: Wed, 4 Apr 2018 16:52:08 +0530 Subject: [PATCH 33/75] fix: Use guard for document.attachEvent calls (#1289) This fixes the issue when Raven is used in NativeScript codebases --- src/raven.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/raven.js b/src/raven.js index 58f025bf80bb..9c324713b0c1 100644 --- a/src/raven.js +++ b/src/raven.js @@ -1387,7 +1387,7 @@ Raven.prototype = { if (_document.addEventListener) { _document.addEventListener('click', self._breadcrumbEventHandler('click'), false); _document.addEventListener('keypress', self._keypressEventHandler(), false); - } else { + } else if(_document.attachEvent){ // IE8 Compatibility _document.attachEvent('onclick', self._breadcrumbEventHandler('click')); _document.attachEvent('onkeypress', self._keypressEventHandler()); From b478429449ea2eea3267e5d1b2ce2abbb8e1d8b0 Mon Sep 17 00:00:00 2001 From: kumavis Date: Thu, 5 Apr 2018 03:41:06 -0700 Subject: [PATCH 34/75] feat: add flag for unhandled promise rejections (#1278) --- src/raven.js | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/raven.js b/src/raven.js index 9c324713b0c1..d9fa9313b789 100644 --- a/src/raven.js +++ b/src/raven.js @@ -426,7 +426,11 @@ Raven.prototype = { */ _promiseRejectionHandler: function(event) { this._logDebug('debug', 'Raven caught unhandled promise rejection:', event); - this.captureException(event.reason); + this.captureException(event.reason, { + extra: { + unhandledPromiseRejection: true + } + }); }, /** From f3b3500ebe7c0a5f87f0351fc5cb1e2b058a1e8c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kamil=20Og=C3=B3rek?= Date: Mon, 9 Apr 2018 12:10:18 +0200 Subject: [PATCH 35/75] docs: Update usage comment for multiple Raven instances --- src/singleton.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/singleton.js b/src/singleton.js index 313cebc76ca1..bc483a4d5c14 100644 --- a/src/singleton.js +++ b/src/singleton.js @@ -46,11 +46,11 @@ module.exports = Raven; * const someAppReporter = new Raven.Client(); * const someOtherAppReporter = new Raven.Client(); * - * someAppReporter('__DSN__', { + * someAppReporter.config('__DSN__', { * ...config goes here * }); * - * someOtherAppReporter('__OTHER_DSN__', { + * someOtherAppReporter.config('__OTHER_DSN__', { * ...config goes here * }); * From 68373be8046932e967c314e18d6303ebeb3c735a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kamil=20Og=C3=B3rek?= Date: Mon, 9 Apr 2018 15:00:43 +0200 Subject: [PATCH 36/75] 3.24.1 --- CHANGELOG.md | 5 +++++ bower.json | 2 +- dist/plugins/angular.js | 2 +- dist/plugins/angular.min.js | 2 +- dist/plugins/console.js | 2 +- dist/plugins/console.min.js | 2 +- dist/plugins/ember.js | 2 +- dist/plugins/ember.min.js | 2 +- dist/plugins/require.js | 2 +- dist/plugins/require.min.js | 2 +- dist/plugins/vue.js | 2 +- dist/plugins/vue.min.js | 2 +- dist/raven.js | 16 ++++++++++------ dist/raven.min.js | 6 +++--- dist/raven.min.js.map | 2 +- dist/sri.json | 12 ++++++------ docs/sentry-doc-config.json | 2 +- package.json | 2 +- src/raven.js | 4 ++-- test/raven.test.js | 4 ++-- 20 files changed, 42 insertions(+), 33 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 17c486a6d7df..03c8e72d9573 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,10 @@ # Changelog +## 3.24.1 + +* FEAT: Add flag for unhandled promise rejections (#1278) +* BUGFIX: Use guard for document.attachEvent calls (#1289) + ## 3.24.0 * NEW: Introduce `sanitizeKeys` config option (#1264) diff --git a/bower.json b/bower.json index 5d1d8ce69267..16121eb8556b 100644 --- a/bower.json +++ b/bower.json @@ -1,6 +1,6 @@ { "name": "raven-js", - "version": "3.24.0", + "version": "3.24.1", "dependencies": {}, "main": "dist/raven.js", "ignore": [ diff --git a/dist/plugins/angular.js b/dist/plugins/angular.js index a5919bb3e93d..f8476266a6d7 100644 --- a/dist/plugins/angular.js +++ b/dist/plugins/angular.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.24.0 (cf87968) | github.com/getsentry/raven-js */ +/*! Raven.js 3.24.1 (f3b3500) | github.com/getsentry/raven-js */ /* * Includes TraceKit diff --git a/dist/plugins/angular.min.js b/dist/plugins/angular.min.js index b7620edf7831..b559eebae502 100644 --- a/dist/plugins/angular.min.js +++ b/dist/plugins/angular.min.js @@ -1,3 +1,3 @@ -/*! Raven.js 3.24.0 (cf87968) | github.com/getsentry/raven-js */ +/*! Raven.js 3.24.1 (f3b3500) | github.com/getsentry/raven-js */ !function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b=b.Raven||(b.Raven={}),b=b.Plugins||(b.Plugins={}),b.Angular=a()}}(function(){return function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};b[g][0].call(k.exports,function(a){var c=b[g][1][a];return e(c?c:a)},k,k.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;g ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function B(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&j(b))for(c=b.split(/\s+/),f=0;fc?M(a,b-1):d}function N(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?T:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function O(a,b){function c(a){return k(a)?a.map(function(a){return c(a)}):i(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!k(b)||k(b)&&0===b.length)return a;var d,e=w(b),f="********";try{d=JSON.parse(P(a))}catch(g){return a}return c(d)}var P=a(3),Q="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},R=3,S=51200,T=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isUndefined:g,isFunction:h,isPlainObject:i,isString:j,isArray:k,isEmptyObject:l,supportsErrorEvent:m,supportsFetch:n,supportsReferrerPolicy:o,supportsPromiseRejectionEvent:p,wrappedCallback:q,each:r,objectMerge:s,truncate:u,objectFrozen:t,hasKey:v,joinRegExp:w,urlencode:x,uuid4:z,htmlTreeAsString:A,htmlElementAsString:B,isSameException:E,isSameStacktrace:F,parseUrl:y,fill:G,safeJoin:H,serializeException:M,serializeKeysForMessage:N,sanitize:O}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{3:3}],3:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}]},{},[1])(1)}); //# sourceMappingURL=angular.min.js.map \ No newline at end of file diff --git a/dist/plugins/console.js b/dist/plugins/console.js index e2e26d07c30b..20c8629103df 100644 --- a/dist/plugins/console.js +++ b/dist/plugins/console.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.24.0 (cf87968) | github.com/getsentry/raven-js */ +/*! Raven.js 3.24.1 (f3b3500) | github.com/getsentry/raven-js */ /* * Includes TraceKit diff --git a/dist/plugins/console.min.js b/dist/plugins/console.min.js index e2e10d4d7f21..42f48f71940f 100644 --- a/dist/plugins/console.min.js +++ b/dist/plugins/console.min.js @@ -1,3 +1,3 @@ -/*! Raven.js 3.24.0 (cf87968) | github.com/getsentry/raven-js */ +/*! Raven.js 3.24.1 (f3b3500) | github.com/getsentry/raven-js */ !function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b=b.Raven||(b.Raven={}),b=b.Plugins||(b.Plugins={}),b.Console=a()}}(function(){return function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};b[g][0].call(k.exports,function(a){var c=b[g][1][a];return e(c?c:a)},k,k.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;g ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function B(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&j(b))for(c=b.split(/\s+/),f=0;fc?M(a,b-1):d}function N(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?T:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function O(a,b){function c(a){return k(a)?a.map(function(a){return c(a)}):i(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!k(b)||k(b)&&0===b.length)return a;var d,e=w(b),f="********";try{d=JSON.parse(P(a))}catch(g){return a}return c(d)}var P=a(4),Q="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},R=3,S=51200,T=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isUndefined:g,isFunction:h,isPlainObject:i,isString:j,isArray:k,isEmptyObject:l,supportsErrorEvent:m,supportsFetch:n,supportsReferrerPolicy:o,supportsPromiseRejectionEvent:p,wrappedCallback:q,each:r,objectMerge:s,truncate:u,objectFrozen:t,hasKey:v,joinRegExp:w,urlencode:x,uuid4:z,htmlTreeAsString:A,htmlElementAsString:B,isSameException:E,isSameStacktrace:F,parseUrl:y,fill:G,safeJoin:H,serializeException:M,serializeKeysForMessage:N,sanitize:O}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{4:4}],4:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}]},{},[1])(1)}); //# sourceMappingURL=console.min.js.map \ No newline at end of file diff --git a/dist/plugins/ember.js b/dist/plugins/ember.js index eaefeeb7846b..ffc6db6534b9 100644 --- a/dist/plugins/ember.js +++ b/dist/plugins/ember.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.24.0 (cf87968) | github.com/getsentry/raven-js */ +/*! Raven.js 3.24.1 (f3b3500) | github.com/getsentry/raven-js */ /* * Includes TraceKit diff --git a/dist/plugins/ember.min.js b/dist/plugins/ember.min.js index 117173798ffc..80ce2491e506 100644 --- a/dist/plugins/ember.min.js +++ b/dist/plugins/ember.min.js @@ -1,3 +1,3 @@ -/*! Raven.js 3.24.0 (cf87968) | github.com/getsentry/raven-js */ +/*! Raven.js 3.24.1 (f3b3500) | github.com/getsentry/raven-js */ !function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b=b.Raven||(b.Raven={}),b=b.Plugins||(b.Plugins={}),b.Ember=a()}}(function(){return function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};b[g][0].call(k.exports,function(a){var c=b[g][1][a];return e(c?c:a)},k,k.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;g":"anonymous component")+(a._isVue&&a.$options.__file?" at "+a.$options.__file:"")}function e(a,b){if(b=b||window.Vue,b&&b.config){var c=b.config.errorHandler;b.config.errorHandler=function(b,e,f){var g={};"[object Object]"===Object.prototype.toString.call(e)&&(g.componentName=d(e),g.propsData=e.$options.propsData),"undefined"!=typeof f&&(g.lifecycleHook=f),a.captureException(b,{extra:g}),"function"==typeof c&&c.call(this,b,e,f)}}}b.exports=e},{}]},{},[1])(1)}); //# sourceMappingURL=vue.min.js.map \ No newline at end of file diff --git a/dist/raven.js b/dist/raven.js index 393fab9790b1..6d4dde750db2 100644 --- a/dist/raven.js +++ b/dist/raven.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.24.0 (cf87968) | github.com/getsentry/raven-js */ +/*! Raven.js 3.24.1 (f3b3500) | github.com/getsentry/raven-js */ /* * Includes TraceKit @@ -205,7 +205,7 @@ Raven.prototype = { // webpack (using a build step causes webpack #1617). Grunt verifies that // this value matches package.json during build. // See: https://github.com/getsentry/raven-js/issues/465 - VERSION: '3.24.0', + VERSION: '3.24.1', debug: false, @@ -494,7 +494,11 @@ Raven.prototype = { */ _promiseRejectionHandler: function(event) { this._logDebug('debug', 'Raven caught unhandled promise rejection:', event); - this.captureException(event.reason); + this.captureException(event.reason, { + extra: { + unhandledPromiseRejection: true + } + }); }, /** @@ -1455,7 +1459,7 @@ Raven.prototype = { if (_document.addEventListener) { _document.addEventListener('click', self._breadcrumbEventHandler('click'), false); _document.addEventListener('keypress', self._keypressEventHandler(), false); - } else { + } else if(_document.attachEvent){ // IE8 Compatibility _document.attachEvent('onclick', self._breadcrumbEventHandler('click')); _document.attachEvent('onkeypress', self._keypressEventHandler()); @@ -2254,11 +2258,11 @@ module.exports = Raven; * const someAppReporter = new Raven.Client(); * const someOtherAppReporter = new Raven.Client(); * - * someAppReporter('__DSN__', { + * someAppReporter.config('__DSN__', { * ...config goes here * }); * - * someOtherAppReporter('__OTHER_DSN__', { + * someOtherAppReporter.config('__OTHER_DSN__', { * ...config goes here * }); * diff --git a/dist/raven.min.js b/dist/raven.min.js index 12cd77997be4..a870fc29b24a 100644 --- a/dist/raven.min.js +++ b/dist/raven.min.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.24.0 (cf87968) | github.com/getsentry/raven-js */ -!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.Raven=a()}}(function(){return function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};b[g][0].call(k.exports,function(a){var c=b[g][1][a];return e(c?c:a)},k,k.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;gthis.k.maxBreadcrumbs&&this.u.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.r.push([a,b]),this.n&&this.F(),this},setUserContext:function(a){return this.j.user=a,this},setExtraContext:function(a){return this.Z("extra",a),this},setTagsContext:function(a){return this.Z("tags",a),this},clearContext:function(){return this.j={},this},getContext:function(){return JSON.parse(h(this.j))},setEnvironment:function(a){return this.k.environment=a,this},setRelease:function(a){return this.k.release=a,this},setDataCallback:function(a){var b=this.k.dataCallback;return this.k.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.k.breadcrumbCallback;return this.k.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.k.shouldSendCallback;return this.k.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.k.transport=a,this},lastException:function(){return this.d},lastEventId:function(){return this.f},isSetup:function(){return!!this.a&&(!!this.g||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.z("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=P.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(Q){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.H;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.j.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.J(this.G(c)),h=Q.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(Q.head||Q.body).appendChild(h)}},L:function(){var a=this;this.m+=1,setTimeout(function(){a.m-=1})},$:function(a,b){var c,d;if(this.b){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),Q.createEvent?(c=Q.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=Q.createEventObject(),c.eventType=a);for(d in b)y(b,d)&&(c[d]=b[d]);if(Q.createEvent)Q.dispatchEvent(c);else try{Q.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},_:function(a){var b=this;return function(c){if(b.aa=null,b.v!==c){b.v=c;var d;try{d=C(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ba:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.aa;g||a._("input")(c),clearTimeout(g),a.aa=setTimeout(function(){a.aa=null},b)}}},ca:function(a,b){var c=F(this.w.href),d=F(b),e=F(a);this.x=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},C:function(){var a=this;a.da=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.M?a.da.apply(this.O,arguments):a.da.apply(this,arguments)}},Q:function(){this.da&&(Function.prototype.toString=this.da)},D:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.ca(b.x,c+""),a.apply(this,arguments)}};G(history,"pushState",j,d),G(history,"replaceState",j,d)}if(c.console&&"console"in P&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};u(["debug","info","warn","error","log"],function(a,b){M(console,b,k)})}},R:function(){for(var a;this.t.length;){a=this.t.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},S:function(){for(var a in this.q)this.p[a]=this.q[a]},F:function(){var a=this;u(this.r,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},G:function(a){var b=O.exec(a),c={},d=7;try{for(;d--;)c[N[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.k.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},J:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},A:function(){this.m||this.V.apply(this,arguments)},V:function(a,b){var c=this.X(a,b);this.$("handle",{stackInfo:a,options:b}),this.fa(a.name,a.message,a.url,a.lineno,c,b)},X:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(u(a.stack,function(b,e){var f=c.ga(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.u,0)}),this.j.user&&(a.user=this.j.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),a=this.pa(a),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||t(a[b]))&&delete a[b]}),q(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!t(a)&&(!q(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.ma()?void this.z("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function B(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&j(b))for(c=b.split(/\s+/),f=0;fc?M(a,b-1):d}function N(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?T:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function O(a,b){function c(a){return k(a)?a.map(function(a){return c(a)}):i(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!k(b)||k(b)&&0===b.length)return a;var d,e=w(b),f="********";try{d=JSON.parse(P(a))}catch(g){return a}return c(d)}var P=a(7),Q="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},R=3,S=51200,T=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isUndefined:g,isFunction:h,isPlainObject:i,isString:j,isArray:k,isEmptyObject:l,supportsErrorEvent:m,supportsFetch:n,supportsReferrerPolicy:o,supportsPromiseRejectionEvent:p,wrappedCallback:q,each:r,objectMerge:s,truncate:u,objectFrozen:t,hasKey:v,joinRegExp:w,urlencode:x,uuid4:z,htmlTreeAsString:A,htmlElementAsString:B,isSameException:E,isSameStacktrace:F,parseUrl:y,fill:G,safeJoin:H,serializeException:M,serializeKeysForMessage:N,sanitize:O}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{7:7}],6:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}var e=a(5),f={collectWindowErrors:!0,debug:!1},g="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},h=[].slice,i="?",j=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;f.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function k(a,b){var c=null;if(!b||f.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(h.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,g,h){var l=null,m=e.isErrorEvent(h)?h.error:h,n=e.isErrorEvent(a)?a.message:a;if(v)f.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&e.isError(m))l=f.computeStackTrace(m),k(l,!0);else{var p,r={url:b,line:c,column:g},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(j);p&&(s=p[1],n=p[2])}r.func=i,l={name:s,message:n,url:d(),stack:[r]},k(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=g.onerror,g.onerror=l,r=!0)}function n(){r&&(g.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,k.apply(null,[a,!1].concat(b))}function p(a,b){var c=h.call(arguments,1);if(v){if(u===a)return;o()}var d=f.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),f.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,e,f=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,g=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,h=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,j=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,k=/\((\S*)(?::(\d+))(?::(\d+))\)/,l=a.stack.split("\n"),m=[],n=(/^(.*) is undefined$/.exec(a.message),0),o=l.length;n eval")>-1;q&&(b=j.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==n||c[5]||"undefined"==typeof a.columnNumber||(m[0].column=a.columnNumber+1),e={url:c[3],func:c[1]||i,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}!e.func&&e.line&&(e.func=i),m.push(e)}return m.length?{name:a.name,message:a.message,url:d(),stack:m}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=i),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,g){for(var h,j,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==e&&o!==f.report){if(j={url:null,func:i,line:null,column:null},o.name?j.func=o.name:(h=k.exec(o.toString()))&&(j.func=h[1]),"undefined"==typeof j.func)try{j.func=h.input.substring(0,h.input.indexOf("{"))}catch(p){}m[""+o]?n=!0:m[""+o]=!0,l.push(j)}g&&l.splice(0,g);var q={name:a.name,message:a.message,url:d(),stack:l};return b(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),q}function e(b,e){var g=null;e=null==e?0:+e;try{if(g=a(b))return g}catch(h){if(f.debug)throw h}try{if(g=c(b,e+1))return g}catch(h){if(f.debug)throw h}return{name:b.name,message:b.message,url:d()}}return e.augmentStackTraceWithInitialElement=b,e.computeStackTraceFromStackProp=a,e}(),b.exports=f}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{5:5}],7:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}],8:[function(a,b,c){function d(a,b){var c=(65535&a)+(65535&b),d=(a>>16)+(b>>16)+(c>>16);return d<<16|65535&c}function e(a,b){return a<>>32-b}function f(a,b,c,f,g,h){return d(e(d(d(b,a),d(f,h)),g),c)}function g(a,b,c,d,e,g,h){return f(b&c|~b&d,a,b,e,g,h)}function h(a,b,c,d,e,g,h){return f(b&d|c&~d,a,b,e,g,h)}function i(a,b,c,d,e,g,h){return f(b^c^d,a,b,e,g,h)}function j(a,b,c,d,e,g,h){return f(c^(b|~d),a,b,e,g,h)}function k(a,b){a[b>>5]|=128<>>9<<4)+14]=b;var c,e,f,k,l,m=1732584193,n=-271733879,o=-1732584194,p=271733878;for(c=0;c>5]>>>b%32&255);return c}function m(a){var b,c=[];for(c[(a.length>>2)-1]=void 0,b=0;b>5]|=(255&a.charCodeAt(b/8))<16&&(e=k(e,8*a.length)),c=0;c<16;c+=1)f[c]=909522486^e[c],g[c]=1549556828^e[c];return d=k(f.concat(m(b)),512+8*b.length),l(k(g.concat(d),640))}function p(a){var b,c,d="0123456789abcdef",e="";for(c=0;c>>4&15)+d.charAt(15&b);return e}function q(a){return unescape(encodeURIComponent(a))}function r(a){return n(q(a))}function s(a){return p(r(a))}function t(a,b){return o(q(a),q(b))}function u(a,b){return p(t(a,b))}function v(a,b,c){return b?c?t(b,a):u(b,a):c?r(a):s(a)}b.exports=v},{}]},{},[4])(4)}); +/*! Raven.js 3.24.1 (f3b3500) | github.com/getsentry/raven-js */ +!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.Raven=a()}}(function(){return function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};b[g][0].call(k.exports,function(a){var c=b[g][1][a];return e(c?c:a)},k,k.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;gthis.k.maxBreadcrumbs&&this.u.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.r.push([a,b]),this.n&&this.F(),this},setUserContext:function(a){return this.j.user=a,this},setExtraContext:function(a){return this.Z("extra",a),this},setTagsContext:function(a){return this.Z("tags",a),this},clearContext:function(){return this.j={},this},getContext:function(){return JSON.parse(h(this.j))},setEnvironment:function(a){return this.k.environment=a,this},setRelease:function(a){return this.k.release=a,this},setDataCallback:function(a){var b=this.k.dataCallback;return this.k.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.k.breadcrumbCallback;return this.k.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.k.shouldSendCallback;return this.k.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.k.transport=a,this},lastException:function(){return this.d},lastEventId:function(){return this.f},isSetup:function(){return!!this.a&&(!!this.g||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.z("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=P.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(Q){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.H;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.j.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.J(this.G(c)),h=Q.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(Q.head||Q.body).appendChild(h)}},L:function(){var a=this;this.m+=1,setTimeout(function(){a.m-=1})},$:function(a,b){var c,d;if(this.b){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),Q.createEvent?(c=Q.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=Q.createEventObject(),c.eventType=a);for(d in b)y(b,d)&&(c[d]=b[d]);if(Q.createEvent)Q.dispatchEvent(c);else try{Q.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},_:function(a){var b=this;return function(c){if(b.aa=null,b.v!==c){b.v=c;var d;try{d=C(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ba:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.aa;g||a._("input")(c),clearTimeout(g),a.aa=setTimeout(function(){a.aa=null},b)}}},ca:function(a,b){var c=F(this.w.href),d=F(b),e=F(a);this.x=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},C:function(){var a=this;a.da=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.M?a.da.apply(this.O,arguments):a.da.apply(this,arguments)}},Q:function(){this.da&&(Function.prototype.toString=this.da)},D:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.ca(b.x,c+""),a.apply(this,arguments)}};G(history,"pushState",j,d),G(history,"replaceState",j,d)}if(c.console&&"console"in P&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};u(["debug","info","warn","error","log"],function(a,b){M(console,b,k)})}},R:function(){for(var a;this.t.length;){a=this.t.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},S:function(){for(var a in this.q)this.p[a]=this.q[a]},F:function(){var a=this;u(this.r,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},G:function(a){var b=O.exec(a),c={},d=7;try{for(;d--;)c[N[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.k.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},J:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},A:function(){this.m||this.V.apply(this,arguments)},V:function(a,b){var c=this.X(a,b);this.$("handle",{stackInfo:a,options:b}),this.fa(a.name,a.message,a.url,a.lineno,c,b)},X:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(u(a.stack,function(b,e){var f=c.ga(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.u,0)}),this.j.user&&(a.user=this.j.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),a=this.pa(a),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||t(a[b]))&&delete a[b]}),q(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!t(a)&&(!q(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.ma()?void this.z("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function B(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&j(b))for(c=b.split(/\s+/),f=0;fc?M(a,b-1):d}function N(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?T:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function O(a,b){function c(a){return k(a)?a.map(function(a){return c(a)}):i(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!k(b)||k(b)&&0===b.length)return a;var d,e=w(b),f="********";try{d=JSON.parse(P(a))}catch(g){return a}return c(d)}var P=a(7),Q="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},R=3,S=51200,T=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isUndefined:g,isFunction:h,isPlainObject:i,isString:j,isArray:k,isEmptyObject:l,supportsErrorEvent:m,supportsFetch:n,supportsReferrerPolicy:o,supportsPromiseRejectionEvent:p,wrappedCallback:q,each:r,objectMerge:s,truncate:u,objectFrozen:t,hasKey:v,joinRegExp:w,urlencode:x,uuid4:z,htmlTreeAsString:A,htmlElementAsString:B,isSameException:E,isSameStacktrace:F,parseUrl:y,fill:G,safeJoin:H,serializeException:M,serializeKeysForMessage:N,sanitize:O}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{7:7}],6:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}var e=a(5),f={collectWindowErrors:!0,debug:!1},g="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},h=[].slice,i="?",j=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;f.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function k(a,b){var c=null;if(!b||f.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(h.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,g,h){var l=null,m=e.isErrorEvent(h)?h.error:h,n=e.isErrorEvent(a)?a.message:a;if(v)f.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&e.isError(m))l=f.computeStackTrace(m),k(l,!0);else{var p,r={url:b,line:c,column:g},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(j);p&&(s=p[1],n=p[2])}r.func=i,l={name:s,message:n,url:d(),stack:[r]},k(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=g.onerror,g.onerror=l,r=!0)}function n(){r&&(g.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,k.apply(null,[a,!1].concat(b))}function p(a,b){var c=h.call(arguments,1);if(v){if(u===a)return;o()}var d=f.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),f.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,e,f=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,g=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,h=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,j=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,k=/\((\S*)(?::(\d+))(?::(\d+))\)/,l=a.stack.split("\n"),m=[],n=(/^(.*) is undefined$/.exec(a.message),0),o=l.length;n eval")>-1;q&&(b=j.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==n||c[5]||"undefined"==typeof a.columnNumber||(m[0].column=a.columnNumber+1),e={url:c[3],func:c[1]||i,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}!e.func&&e.line&&(e.func=i),m.push(e)}return m.length?{name:a.name,message:a.message,url:d(),stack:m}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=i),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,g){for(var h,j,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==e&&o!==f.report){if(j={url:null,func:i,line:null,column:null},o.name?j.func=o.name:(h=k.exec(o.toString()))&&(j.func=h[1]),"undefined"==typeof j.func)try{j.func=h.input.substring(0,h.input.indexOf("{"))}catch(p){}m[""+o]?n=!0:m[""+o]=!0,l.push(j)}g&&l.splice(0,g);var q={name:a.name,message:a.message,url:d(),stack:l};return b(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),q}function e(b,e){var g=null;e=null==e?0:+e;try{if(g=a(b))return g}catch(h){if(f.debug)throw h}try{if(g=c(b,e+1))return g}catch(h){if(f.debug)throw h}return{name:b.name,message:b.message,url:d()}}return e.augmentStackTraceWithInitialElement=b,e.computeStackTraceFromStackProp=a,e}(),b.exports=f}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{5:5}],7:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}],8:[function(a,b,c){function d(a,b){var c=(65535&a)+(65535&b),d=(a>>16)+(b>>16)+(c>>16);return d<<16|65535&c}function e(a,b){return a<>>32-b}function f(a,b,c,f,g,h){return d(e(d(d(b,a),d(f,h)),g),c)}function g(a,b,c,d,e,g,h){return f(b&c|~b&d,a,b,e,g,h)}function h(a,b,c,d,e,g,h){return f(b&d|c&~d,a,b,e,g,h)}function i(a,b,c,d,e,g,h){return f(b^c^d,a,b,e,g,h)}function j(a,b,c,d,e,g,h){return f(c^(b|~d),a,b,e,g,h)}function k(a,b){a[b>>5]|=128<>>9<<4)+14]=b;var c,e,f,k,l,m=1732584193,n=-271733879,o=-1732584194,p=271733878;for(c=0;c>5]>>>b%32&255);return c}function m(a){var b,c=[];for(c[(a.length>>2)-1]=void 0,b=0;b>5]|=(255&a.charCodeAt(b/8))<16&&(e=k(e,8*a.length)),c=0;c<16;c+=1)f[c]=909522486^e[c],g[c]=1549556828^e[c];return d=k(f.concat(m(b)),512+8*b.length),l(k(g.concat(d),640))}function p(a){var b,c,d="0123456789abcdef",e="";for(c=0;c>>4&15)+d.charAt(15&b);return e}function q(a){return unescape(encodeURIComponent(a))}function r(a){return n(q(a))}function s(a){return p(r(a))}function t(a,b){return o(q(a),q(b))}function u(a,b){return p(t(a,b))}function v(a,b,c){return b?c?t(b,a):u(b,a):c?r(a):s(a)}b.exports=v},{}]},{},[4])(4)}); //# sourceMappingURL=raven.min.js.map \ No newline at end of file diff --git a/dist/raven.min.js.map b/dist/raven.min.js.map index 37e6f2d14b6f..001355f3658f 100644 --- a/dist/raven.min.js.map +++ b/dist/raven.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","RavenConfigError","message","name","prototype","constructor","2","utils","wrapMethod","console","level","callback","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","msg","safeJoin","data","logger","extra","Function","apply","5","3","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","sanitizeKeys","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isError","isObject","isPlainObject","isErrorEvent","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","sanitize","wrapConsoleMethod","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","config","dsn","options","_logDebug","globalOptions","key","value","setDSN","push","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","toString","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","substr","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","context","func","undefined","wrap","_before","wrapped","deep","_ignoreNextOnError","captureException","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","T","event","reason","B","_promiseRejectionHandler","bind","addEventListener","P","removeEventListener","ex","trimHeadFrames","error","captureMessage","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","U","currentOptions","exKeys","Object","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","addPlugin","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","setDataCallback","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","L","setTimeout","$","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","_","evtName","_keypressTimeout","target","category","ba","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","ca","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","C","_originalFunctionToString","Q","D","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","type","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","E","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","R","builtin","S","F","installer","concat","G","str","m","exec","allowSecretKey","J","port","A","V","stackInfo","_triggerEvent","_processException","lineno","X","frame","_normalizeFrame","in_app","ga","stackInfoUrl","normalized","filename","line","colno","column","function","fa","prefixedMessage","exception","values","culprit","ha","request","Referer","breadcrumbs","_trimBreadcrumbs","ia","urlProp","urlProps","ja","httpData","userAgent","User-Agent","referrer","y","_backoffDuration","_backoffStart","ma","na","current","last","oa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Y","baseData","project","platform","_getHttpData","serverName","server_name","_sanitizeData","forEach","random","_sendProcessedPayload","pa","ra","qa","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","sa","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","onerror","open","setRequestHeader","send","ta","hash","evaluated","z","Z","setUser","setReleaseContext","6","7","8","4","RavenConstructor","_Raven","noConflict","Client","what","supportsErrorEvent","ErrorEvent","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","wrappedCallback","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","sanitizeMask","safeInput","o_O","getLocationHref","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","charAt","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","string","raw"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file +{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","RavenConfigError","message","name","prototype","constructor","2","utils","wrapMethod","console","level","callback","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","msg","safeJoin","data","logger","extra","Function","apply","5","3","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","sanitizeKeys","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isError","isObject","isPlainObject","isErrorEvent","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","sanitize","wrapConsoleMethod","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","config","dsn","options","_logDebug","globalOptions","key","value","setDSN","push","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","toString","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","substr","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","context","func","undefined","wrap","_before","wrapped","deep","_ignoreNextOnError","captureException","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","T","event","reason","unhandledPromiseRejection","B","_promiseRejectionHandler","bind","addEventListener","P","removeEventListener","ex","trimHeadFrames","error","captureMessage","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","U","currentOptions","exKeys","Object","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","addPlugin","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","setDataCallback","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","L","setTimeout","$","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","_","evtName","_keypressTimeout","target","category","ba","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","ca","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","C","_originalFunctionToString","Q","D","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","type","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","E","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","R","builtin","S","F","installer","concat","G","str","m","exec","allowSecretKey","J","port","A","V","stackInfo","_triggerEvent","_processException","lineno","X","frame","_normalizeFrame","in_app","ga","stackInfoUrl","normalized","filename","line","colno","column","function","fa","prefixedMessage","exception","values","culprit","ha","request","Referer","breadcrumbs","_trimBreadcrumbs","ia","urlProp","urlProps","ja","httpData","userAgent","User-Agent","referrer","y","_backoffDuration","_backoffStart","ma","na","current","last","oa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Y","baseData","project","platform","_getHttpData","serverName","server_name","_sanitizeData","forEach","random","_sendProcessedPayload","pa","ra","qa","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","sa","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","onerror","open","setRequestHeader","send","ta","hash","evaluated","z","Z","setUser","setReleaseContext","6","7","8","4","RavenConstructor","_Raven","noConflict","Client","what","supportsErrorEvent","ErrorEvent","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","wrappedCallback","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","sanitizeMask","safeInput","o_O","getLocationHref","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","charAt","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","string","raw"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file diff --git a/dist/sri.json b/dist/sri.json index 782e8f771dc6..dc8b5006f0c4 100644 --- a/dist/sri.json +++ b/dist/sri.json @@ -1,20 +1,20 @@ { "@dist/raven.js": { "hashes": { - "sha256": "uoJIFt4AtR+DNmMvLyz4Jmw6E1FMYV8E0x/RRxrISaY=", - "sha512": "gnb2gMnPV22ZWbl+tHDWX9vsRs+fDZN9K2zNM7l4jrkTMMd7A4+JhYyz83/QZB5ayN9cmFpiDL92RetIaHoyHQ==" + "sha256": "/ONdAalAceMcNzn9xPsmeCnrYM52+JxI9taRSMwL6Bk=", + "sha512": "WMqEoQ1FfK46hKApMRtpKlvPKecuWGMCj7DRPglDKip7HXRv4xt1DiKSBPn0msNN1K4uI67lesz5wdIw5lE1AQ==" }, "type": null, - "integrity": "sha256-uoJIFt4AtR+DNmMvLyz4Jmw6E1FMYV8E0x/RRxrISaY= sha512-gnb2gMnPV22ZWbl+tHDWX9vsRs+fDZN9K2zNM7l4jrkTMMd7A4+JhYyz83/QZB5ayN9cmFpiDL92RetIaHoyHQ==", + "integrity": "sha256-/ONdAalAceMcNzn9xPsmeCnrYM52+JxI9taRSMwL6Bk= sha512-WMqEoQ1FfK46hKApMRtpKlvPKecuWGMCj7DRPglDKip7HXRv4xt1DiKSBPn0msNN1K4uI67lesz5wdIw5lE1AQ==", "path": "dist/raven.js" }, "@dist/raven.min.js": { "hashes": { - "sha256": "fOke6uUzxOhGNOmbq7J9g4IOxACE2zp5JL4MaknbhE8=", - "sha512": "pR4xrWhG7K3YCVeCrTUg1Pybe1m4wTmHWR35w2ldKJ2Nei979hzz94VcBNfFi85gCimb+ckW+XRIzmddOcXYjg==" + "sha256": "C0v6xCW0XKv2zJSWSiNl920zYMsEWWLUvysjc48qp88=", + "sha512": "tdc7P+N+tY7wHWTALVNM1bTI0cdpgFckHXhydV0dWE4q1S3w9EWOJJYKF2Jy9J4srTruk3p/QJtH+/PpsCUsjw==" }, "type": null, - "integrity": "sha256-fOke6uUzxOhGNOmbq7J9g4IOxACE2zp5JL4MaknbhE8= sha512-pR4xrWhG7K3YCVeCrTUg1Pybe1m4wTmHWR35w2ldKJ2Nei979hzz94VcBNfFi85gCimb+ckW+XRIzmddOcXYjg==", + "integrity": "sha256-C0v6xCW0XKv2zJSWSiNl920zYMsEWWLUvysjc48qp88= sha512-tdc7P+N+tY7wHWTALVNM1bTI0cdpgFckHXhydV0dWE4q1S3w9EWOJJYKF2Jy9J4srTruk3p/QJtH+/PpsCUsjw==", "path": "dist/raven.min.js" } } \ No newline at end of file diff --git a/docs/sentry-doc-config.json b/docs/sentry-doc-config.json index bd28ee90c321..69d341e0fafc 100644 --- a/docs/sentry-doc-config.json +++ b/docs/sentry-doc-config.json @@ -66,6 +66,6 @@ } }, "vars": { - "RAVEN_VERSION": "3.24.0" + "RAVEN_VERSION": "3.24.1" } } diff --git a/package.json b/package.json index 1e50c78a2f64..20d58c63d85d 100644 --- a/package.json +++ b/package.json @@ -9,7 +9,7 @@ "raven", "sentry" ], - "version": "3.24.0", + "version": "3.24.1", "repository": "git://github.com/getsentry/raven-js.git", "license": "BSD-2-Clause", "homepage": "https://github.com/getsentry/raven-js", diff --git a/src/raven.js b/src/raven.js index d9fa9313b789..2a6ad4c33367 100644 --- a/src/raven.js +++ b/src/raven.js @@ -137,7 +137,7 @@ Raven.prototype = { // webpack (using a build step causes webpack #1617). Grunt verifies that // this value matches package.json during build. // See: https://github.com/getsentry/raven-js/issues/465 - VERSION: '3.24.0', + VERSION: '3.24.1', debug: false, @@ -1391,7 +1391,7 @@ Raven.prototype = { if (_document.addEventListener) { _document.addEventListener('click', self._breadcrumbEventHandler('click'), false); _document.addEventListener('keypress', self._keypressEventHandler(), false); - } else if(_document.attachEvent){ + } else if (_document.attachEvent) { // IE8 Compatibility _document.attachEvent('onclick', self._breadcrumbEventHandler('click')); _document.attachEvent('onkeypress', self._keypressEventHandler()); diff --git a/test/raven.test.js b/test/raven.test.js index f3c19156cdcc..1e85f70ef3d1 100644 --- a/test/raven.test.js +++ b/test/raven.test.js @@ -1376,7 +1376,7 @@ describe('globals', function() { extra: {'session:duration': 100} }); assert.deepEqual(opts.auth, { - sentry_client: 'raven-js/3.24.0', + sentry_client: 'raven-js/3.24.1', sentry_key: 'abc', sentry_version: '7' }); @@ -1423,7 +1423,7 @@ describe('globals', function() { extra: {'session:duration': 100} }); assert.deepEqual(opts.auth, { - sentry_client: 'raven-js/3.24.0', + sentry_client: 'raven-js/3.24.1', sentry_key: 'abc', sentry_secret: 'def', sentry_version: '7' From 4fb4ca3da5b865e3b0fdeca76a2c96d6b6bc7dd3 Mon Sep 17 00:00:00 2001 From: kumavis Date: Tue, 10 Apr 2018 10:42:05 -0700 Subject: [PATCH 37/75] feat: Capture breadcrumbs on failed fetch request (#1293) --- src/raven.js | 31 ++++++++++++++++++++++--------- 1 file changed, 22 insertions(+), 9 deletions(-) diff --git a/src/raven.js b/src/raven.js index 2a6ad4c33367..3f3052a929b3 100644 --- a/src/raven.js +++ b/src/raven.js @@ -1368,17 +1368,30 @@ Raven.prototype = { status_code: null }; - return origFetch.apply(this, args).then(function(response) { - fetchData.status_code = response.status; + return origFetch + .apply(this, args) + .then(function(response) { + fetchData.status_code = response.status; - self.captureBreadcrumb({ - type: 'http', - category: 'fetch', - data: fetchData - }); + self.captureBreadcrumb({ + type: 'http', + category: 'fetch', + data: fetchData + }); - return response; - }); + return response; + }) + ['catch'](function(err) { + // if there is an error performing the request + self.captureBreadcrumb({ + type: 'http', + category: 'fetch', + data: fetchData, + level: 'error' + }); + + throw err; + }); }; }, wrappedBuiltIns From 622021e445b0c733ea2dbf6996e3aca37572da37 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kamil=20Og=C3=B3rek?= Date: Thu, 12 Apr 2018 12:09:41 +0200 Subject: [PATCH 38/75] fix: Check inputs type before doing truncation (#1299) --- src/utils.js | 13 +++++-- test/raven.test.js | 97 ++++++++++++++++++++-------------------------- test/utils.test.js | 30 +++++++++++++- 3 files changed, 78 insertions(+), 62 deletions(-) diff --git a/src/utils.js b/src/utils.js index aea891eea98c..a7f4b8d6eb15 100644 --- a/src/utils.js +++ b/src/utils.js @@ -160,7 +160,13 @@ function objectFrozen(obj) { } function truncate(str, max) { - return !max || str.length <= max ? str : str.substr(0, max) + '\u2026'; + if (typeof max !== 'number') { + throw new Error('2nd argument to `truncate` function should be a number'); + } + if (typeof str !== 'string' || max === 0) { + return str; + } + return str.length <= max ? str : str.substr(0, max) + '\u2026'; } /** @@ -459,10 +465,9 @@ function jsonSize(value) { } function serializeValue(value) { - var maxLength = 40; - if (typeof value === 'string') { - return value.length <= maxLength ? value : value.substr(0, maxLength - 1) + '\u2026'; + var maxLength = 40; + return truncate(value, maxLength); } else if ( typeof value === 'number' || typeof value === 'boolean' || diff --git a/test/raven.test.js b/test/raven.test.js index 1e85f70ef3d1..012c4fa9924d 100644 --- a/test/raven.test.js +++ b/test/raven.test.js @@ -828,10 +828,10 @@ describe('globals', function() { }); Raven._globalProject = '2'; - Raven._globalOptions = { + Object.assign(Raven._globalOptions, { logger: 'javascript', maxMessageLength: 100 - }; + }); Raven._breadcrumbs = [ { type: 'request', @@ -875,13 +875,13 @@ describe('globals', function() { }); Raven._globalProject = '2'; - Raven._globalOptions = { + Object.assign(Raven._globalOptions, { logger: 'javascript', maxMessageLength: 100, autoBreadcrumbs: { sentry: true } - }; + }); Raven._breadcrumbs = [ { type: 'http', @@ -979,11 +979,11 @@ describe('globals', function() { }); Raven._globalProject = '2'; - Raven._globalOptions = { + Object.assign(Raven._globalOptions, { logger: 'javascript', maxMessageLength: 100, autoBreadcrumbs: false - }; + }); Raven._send({message: 'bar'}); @@ -1014,10 +1014,10 @@ describe('globals', function() { }); Raven._globalProject = '2'; - Raven._globalOptions = { + Object.assign(Raven._globalOptions, { logger: 'javascript', maxMessageLength: 100 - }; + }); Raven._globalContext = {user: {name: 'Matt'}}; Raven._send({message: 'bar'}); @@ -1049,10 +1049,6 @@ describe('globals', function() { }); Raven._globalProject = '2'; - Raven._globalOptions = { - logger: 'javascript', - maxMessageLength: 100 - }; Raven._globalContext = {tags: {tag1: 'value1'}}; Raven._send({message: 'bar', tags: {tag2: 'value2'}}); @@ -1072,10 +1068,6 @@ describe('globals', function() { extra: {'session:duration': 100} }); - assert.deepEqual(Raven._globalOptions, { - logger: 'javascript', - maxMessageLength: 100 - }); assert.deepEqual(Raven._globalContext, { tags: {tag1: 'value1'} }); @@ -1090,10 +1082,6 @@ describe('globals', function() { }); Raven._globalProject = '2'; - Raven._globalOptions = { - logger: 'javascript', - maxMessageLength: 100 - }; Raven._globalContext = {extra: {key1: 'value1'}}; Raven._send({message: 'bar', extra: {key2: 'value2'}}); @@ -1113,10 +1101,6 @@ describe('globals', function() { extra: {key1: 'value1', key2: 'value2', 'session:duration': 100} }); - assert.deepEqual(Raven._globalOptions, { - logger: 'javascript', - maxMessageLength: 100 - }); assert.deepEqual(Raven._globalContext, { extra: {key1: 'value1'} }); @@ -1126,14 +1110,14 @@ describe('globals', function() { this.sinon.stub(Raven, 'isSetup').returns(true); this.sinon.stub(Raven, '_makeRequest'); - Raven._globalOptions = { + Object.assign(Raven._globalOptions, { projectId: 2, logger: 'javascript', maxMessageLength: 100, dataCallback: function() { return {message: 'ibrokeit'}; } - }; + }); Raven._globalContext = {user: {name: 'Matt'}}; Raven._send({message: 'bar'}); @@ -1152,13 +1136,13 @@ describe('globals', function() { }); Raven._globalProject = '2'; - Raven._globalOptions = { + Object.assign(Raven._globalOptions, { logger: 'javascript', maxMessageLength: 100, dataCallback: function() { return; } - }; + }); Raven._send({message: 'bar'}); assert.deepEqual(Raven._makeRequest.lastCall.args[0].data, { @@ -1207,13 +1191,13 @@ describe('globals', function() { headers: {'User-Agent': 'lolbrowser'} }); - Raven._globalOptions = { + Object.assign(Raven._globalOptions, { projectId: 2, logger: 'javascript', maxMessageLength: 100, tags: {}, extra: {} - }; + }); Raven._send({ message: 'bar', @@ -1247,12 +1231,12 @@ describe('globals', function() { headers: {'User-Agent': 'lolbrowser'} }); - Raven._globalOptions = { + Object.assign(Raven._globalOptions, { projectId: 2, logger: 'javascript', maxMessageLength: 100, environment: 'abc123' - }; + }); Raven._send({message: 'bar'}); assert.deepEqual(Raven._makeRequest.lastCall.args[0].data, { @@ -1280,12 +1264,12 @@ describe('globals', function() { headers: {'User-Agent': 'lolbrowser'} }); - Raven._globalOptions = { + Object.assign(Raven._globalOptions, { projectId: 2, logger: 'javascript', maxMessageLength: 100, release: 'abc123' - }; + }); Raven._send({message: 'bar'}); assert.deepEqual(Raven._makeRequest.lastCall.args[0].data, { @@ -1313,12 +1297,12 @@ describe('globals', function() { headers: {'User-Agent': 'lolbrowser'} }); - Raven._globalOptions = { + Object.assign(Raven._globalOptions, { projectId: 2, logger: 'javascript', maxMessageLength: 100, serverName: 'abc123' - }; + }); Raven._send({message: 'bar'}); assert.deepEqual(Raven._makeRequest.lastCall.args[0].data, { @@ -1346,14 +1330,15 @@ describe('globals', function() { headers: {'User-Agent': 'lolbrowser'} }); - var globalOptions = { + var globalOptions = Object.assign({}, Raven._globalOptions, { projectId: 2, logger: 'javascript', maxMessageLength: 100, release: 'abc123' - }; - Raven._globalEndpoint = 'http://localhost/store/'; + }); + Raven._globalOptions = globalOptions; + Raven._globalEndpoint = 'http://localhost/store/'; Raven._send({message: 'bar'}); var args = Raven._makeRequest.lastCall.args; @@ -1394,12 +1379,12 @@ describe('globals', function() { }); Raven._globalEndpoint = 'http://localhost/store/'; - Raven._globalOptions = { + Object.assign(Raven._globalOptions, { projectId: 2, logger: 'javascript', maxMessageLength: 100, release: 'abc123' - }; + }); Raven._globalSecret = 'def'; // <-- secret Raven._send({message: 'bar'}); @@ -1437,14 +1422,14 @@ describe('globals', function() { headers: {'User-Agent': 'lolbrowser'} }); - var globalOptions = { + var globalOptions = Object.assign({}, Raven._globalOptions, { logger: 'javascript', maxMessageLength: 100, transport: sinon.stub() - }; + }); - Raven._globalProject = '2'; Raven._globalOptions = globalOptions; + Raven._globalProject = '2'; Raven._send({message: 'bar'}); assert.deepEqual(globalOptions.transport.lastCall.args[0].data, { @@ -1468,13 +1453,13 @@ describe('globals', function() { this.sinon.stub(window, 'fetch').resolves(true); Raven._globalProject = '2'; - Raven._globalOptions = { + Object.assign(Raven._globalOptions, { logger: 'javascript', maxMessageLength: 100, headers: { 'custom-header': 'value' } - }; + }); Raven._send({message: 'bar'}); @@ -1487,7 +1472,7 @@ describe('globals', function() { this.sinon.stub(window, 'fetch').resolves(true); Raven._globalProject = '2'; - Raven._globalOptions = { + Object.assign(Raven._globalOptions, { logger: 'javascript', maxMessageLength: 100, headers: { @@ -1495,7 +1480,7 @@ describe('globals', function() { return 'computed-header-value'; } } - }; + }); Raven._send({message: 'bar'}); @@ -1516,14 +1501,14 @@ describe('globals', function() { requests.push(xhr); }; - Raven._globalOptions = { + Object.assign(Raven._globalOptions, { headers: { 'custom-string-header': 'pickle-rick', 'custom-function-header': function() { return 'morty'; } } - }; + }); Raven._send({message: 'bar'}); @@ -1713,10 +1698,10 @@ describe('globals', function() { }); Raven._globalProject = '2'; - Raven._globalOptions = { + Object.assign(Raven._globalOptions, { logger: 'javascript', maxMessageLength: 100 - }; + }); Raven._globalOptions.maxUrlLength = 30; var longUrl = new Array(50).join('a'); @@ -1758,10 +1743,10 @@ describe('globals', function() { }); Raven._globalProject = '2'; - Raven._globalOptions = { + Object.assign(Raven._globalOptions, { logger: 'javascript', maxMessageLength: 100 - }; + }); Raven._globalOptions.maxUrlLength = 35; var longUrl = new Array(50).join('a'); @@ -1809,10 +1794,10 @@ describe('globals', function() { }); Raven._globalProject = '2'; - Raven._globalOptions = { + Object.assign(Raven._globalOptions, { logger: 'javascript', maxMessageLength: 100 - }; + }); Raven._globalOptions.maxUrlLength = 35; var obj = {method: 'POST', url: undefined}; diff --git a/test/utils.test.js b/test/utils.test.js index 0ef72cb00914..c914b57ebd20 100644 --- a/test/utils.test.js +++ b/test/utils.test.js @@ -169,6 +169,32 @@ describe('utils', function() { assert.equal(truncate('lolol', 10), 'lolol'); assert.equal(truncate('lol', 3), 'lol'); assert.equal(truncate(new Array(1000).join('f'), 0), new Array(1000).join('f')); + // Invalid input + assert.equal(truncate(42, 10), 42); + assert.deepEqual(truncate([1, 2, 3], 10), [1, 2, 3]); + assert.deepEqual(truncate({foo: 'bar'}, 10), {foo: 'bar'}); + }); + + it('should throw when `max` is not a number', function() { + assert.throws(function() { + truncate('something'); + }); + assert.throws(function() { + truncate('something', null); + }); + assert.throws(function() { + truncate('something', undefined); + }); + assert.throws(function() { + truncate('something', 'notNumber'); + }); + + assert.doesNotThrow(function() { + truncate('something', 0); + }); + assert.doesNotThrow(function() { + truncate('something', 42); + }); }); }); @@ -492,7 +518,7 @@ describe('utils', function() { b: 'asd', c: true, d: undefined, - e: 'very long string that is definitely ove\u2026', + e: 'very long string that is definitely over\u2026', f: '[Object]', g: '[Array]' }; @@ -540,7 +566,7 @@ describe('utils', function() { b: 'asd', c: true, d: undefined, - e: 'very long string that is definitely ove\u2026', + e: 'very long string that is definitely over\u2026', f: { foo: 42, bar: { From a25aa97e4c7dd6eb6d4e068d56f860961aa4c8ba Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kamil=20Og=C3=B3rek?= Date: Thu, 12 Apr 2018 15:37:20 +0200 Subject: [PATCH 39/75] test: Correct syntax for tests to not break IE10/11 and Mobile --- test/raven.test.js | 38 +++++++++++++++++++------------------- 1 file changed, 19 insertions(+), 19 deletions(-) diff --git a/test/raven.test.js b/test/raven.test.js index 012c4fa9924d..93095f7d4942 100644 --- a/test/raven.test.js +++ b/test/raven.test.js @@ -828,7 +828,7 @@ describe('globals', function() { }); Raven._globalProject = '2'; - Object.assign(Raven._globalOptions, { + utils.objectMerge(Raven._globalOptions, { logger: 'javascript', maxMessageLength: 100 }); @@ -875,7 +875,7 @@ describe('globals', function() { }); Raven._globalProject = '2'; - Object.assign(Raven._globalOptions, { + utils.objectMerge(Raven._globalOptions, { logger: 'javascript', maxMessageLength: 100, autoBreadcrumbs: { @@ -979,7 +979,7 @@ describe('globals', function() { }); Raven._globalProject = '2'; - Object.assign(Raven._globalOptions, { + utils.objectMerge(Raven._globalOptions, { logger: 'javascript', maxMessageLength: 100, autoBreadcrumbs: false @@ -1014,7 +1014,7 @@ describe('globals', function() { }); Raven._globalProject = '2'; - Object.assign(Raven._globalOptions, { + utils.objectMerge(Raven._globalOptions, { logger: 'javascript', maxMessageLength: 100 }); @@ -1110,7 +1110,7 @@ describe('globals', function() { this.sinon.stub(Raven, 'isSetup').returns(true); this.sinon.stub(Raven, '_makeRequest'); - Object.assign(Raven._globalOptions, { + utils.objectMerge(Raven._globalOptions, { projectId: 2, logger: 'javascript', maxMessageLength: 100, @@ -1136,7 +1136,7 @@ describe('globals', function() { }); Raven._globalProject = '2'; - Object.assign(Raven._globalOptions, { + utils.objectMerge(Raven._globalOptions, { logger: 'javascript', maxMessageLength: 100, dataCallback: function() { @@ -1191,7 +1191,7 @@ describe('globals', function() { headers: {'User-Agent': 'lolbrowser'} }); - Object.assign(Raven._globalOptions, { + utils.objectMerge(Raven._globalOptions, { projectId: 2, logger: 'javascript', maxMessageLength: 100, @@ -1231,7 +1231,7 @@ describe('globals', function() { headers: {'User-Agent': 'lolbrowser'} }); - Object.assign(Raven._globalOptions, { + utils.objectMerge(Raven._globalOptions, { projectId: 2, logger: 'javascript', maxMessageLength: 100, @@ -1264,7 +1264,7 @@ describe('globals', function() { headers: {'User-Agent': 'lolbrowser'} }); - Object.assign(Raven._globalOptions, { + utils.objectMerge(Raven._globalOptions, { projectId: 2, logger: 'javascript', maxMessageLength: 100, @@ -1297,7 +1297,7 @@ describe('globals', function() { headers: {'User-Agent': 'lolbrowser'} }); - Object.assign(Raven._globalOptions, { + utils.objectMerge(Raven._globalOptions, { projectId: 2, logger: 'javascript', maxMessageLength: 100, @@ -1330,7 +1330,7 @@ describe('globals', function() { headers: {'User-Agent': 'lolbrowser'} }); - var globalOptions = Object.assign({}, Raven._globalOptions, { + var globalOptions = utils.objectMerge(Raven._globalOptions, { projectId: 2, logger: 'javascript', maxMessageLength: 100, @@ -1379,7 +1379,7 @@ describe('globals', function() { }); Raven._globalEndpoint = 'http://localhost/store/'; - Object.assign(Raven._globalOptions, { + utils.objectMerge(Raven._globalOptions, { projectId: 2, logger: 'javascript', maxMessageLength: 100, @@ -1422,7 +1422,7 @@ describe('globals', function() { headers: {'User-Agent': 'lolbrowser'} }); - var globalOptions = Object.assign({}, Raven._globalOptions, { + var globalOptions = utils.objectMerge(Raven._globalOptions, { logger: 'javascript', maxMessageLength: 100, transport: sinon.stub() @@ -1453,7 +1453,7 @@ describe('globals', function() { this.sinon.stub(window, 'fetch').resolves(true); Raven._globalProject = '2'; - Object.assign(Raven._globalOptions, { + utils.objectMerge(Raven._globalOptions, { logger: 'javascript', maxMessageLength: 100, headers: { @@ -1472,7 +1472,7 @@ describe('globals', function() { this.sinon.stub(window, 'fetch').resolves(true); Raven._globalProject = '2'; - Object.assign(Raven._globalOptions, { + utils.objectMerge(Raven._globalOptions, { logger: 'javascript', maxMessageLength: 100, headers: { @@ -1501,7 +1501,7 @@ describe('globals', function() { requests.push(xhr); }; - Object.assign(Raven._globalOptions, { + utils.objectMerge(Raven._globalOptions, { headers: { 'custom-string-header': 'pickle-rick', 'custom-function-header': function() { @@ -1698,7 +1698,7 @@ describe('globals', function() { }); Raven._globalProject = '2'; - Object.assign(Raven._globalOptions, { + utils.objectMerge(Raven._globalOptions, { logger: 'javascript', maxMessageLength: 100 }); @@ -1743,7 +1743,7 @@ describe('globals', function() { }); Raven._globalProject = '2'; - Object.assign(Raven._globalOptions, { + utils.objectMerge(Raven._globalOptions, { logger: 'javascript', maxMessageLength: 100 }); @@ -1794,7 +1794,7 @@ describe('globals', function() { }); Raven._globalProject = '2'; - Object.assign(Raven._globalOptions, { + utils.objectMerge(Raven._globalOptions, { logger: 'javascript', maxMessageLength: 100 }); From d3d6f989f1c2cd94fd4216e6a0a3d0deac7cb823 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kamil=20Og=C3=B3rek?= Date: Tue, 17 Apr 2018 11:20:41 +0200 Subject: [PATCH 40/75] fix: use correct call url in ignore/whitelisturl calls (#1304) --- src/raven.js | 8 ++++++++ test/raven.test.js | 24 ++++++++++++++++++++++++ 2 files changed, 32 insertions(+) diff --git a/src/raven.js b/src/raven.js index 3f3052a929b3..3ab040f9b29c 100644 --- a/src/raven.js +++ b/src/raven.js @@ -571,6 +571,14 @@ Raven.prototype = { // stack[0] is `throw new Error(msg)` call itself, we are interested in the frame that was just before that, stack[1] var initialCall = isArray(stack.stack) && stack.stack[1]; + + // if stack[1] is `Raven.captureException`, it means that someone passed a string to it and we redirected that call + // to be handled by `captureMessage`, thus `initialCall` is the 3rd one, not 2nd + // initialCall => captureException(string) => captureMessage(string) + if (initialCall && initialCall.func === 'Raven.captureException') { + initialCall = stack.stack[2]; + } + var fileurl = (initialCall && initialCall.url) || ''; if ( diff --git a/test/raven.test.js b/test/raven.test.js index 93095f7d4942..685b7f79f252 100644 --- a/test/raven.test.js +++ b/test/raven.test.js @@ -3015,6 +3015,30 @@ describe('Raven (public API)', function() { assert.isTrue(Raven._send.calledOnce); }); + it('should use 3rd frame from stack to get a fileurl if captureMessage was just a redirect from captureException', function() { + this.sinon.stub(Raven, '_send'); + var TraceKitStub = this.sinon.stub(TraceKit, 'computeStackTrace'); + TraceKitStub.returns({ + stack: [ + {url: 'http://example.com', func: 'Raven.captureMessage'}, + {url: 'http://example.com', func: 'Raven.captureException'}, + {url: '', func: '?'} + ] + }); + Raven._globalOptions.whitelistUrls = { + test: function() { + return false; + } + }; + this.sinon.spy(Raven._globalOptions.whitelistUrls, 'test'); + this.sinon.spy(Raven, 'captureMessage'); + + Raven.captureException('some string'); + + assert.isTrue(Raven.captureMessage.calledWith('some string')); + assert.isTrue(Raven._globalOptions.whitelistUrls.test.calledWith('')); + }); + describe('synthetic traces', function() { function assertSynthetic(frames) { // Raven.captureMessage From d92b6a2d1bf42f52dae5877be09cc07a8fbb543b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kamil=20Og=C3=B3rek?= Date: Wed, 18 Apr 2018 13:42:56 +0200 Subject: [PATCH 41/75] fix: make debug mode actually work (#1305) --- src/raven.js | 6 +++++- test/raven.test.js | 7 +++++++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/src/raven.js b/src/raven.js index 3ab040f9b29c..b49de1211aa0 100644 --- a/src/raven.js +++ b/src/raven.js @@ -2135,7 +2135,11 @@ Raven.prototype = { }, _logDebug: function(level) { - if (this._originalConsoleMethods[level] && this.debug) { + // We allow `Raven.debug` and `Raven.config(DSN, { debug: true })` to not make backward incompatible API change + if ( + this._originalConsoleMethods[level] && + (this.debug || this._globalOptions.debug) + ) { // In IE<10 console methods do not have their own 'apply' method Function.prototype.apply.call( this._originalConsoleMethods[level], diff --git a/test/raven.test.js b/test/raven.test.js index 685b7f79f252..903fc88306d5 100644 --- a/test/raven.test.js +++ b/test/raven.test.js @@ -262,6 +262,13 @@ describe('globals', function() { assert.isTrue(originalConsoleMethods[level].calledOnce); }); + it('should write to console when Raven.config(DSN, { debug: true })', function() { + Raven._globalOptions.debug = true; + this.sinon.stub(originalConsoleMethods, level); + Raven._logDebug(level, message); + assert.isTrue(originalConsoleMethods[level].calledOnce); + }); + it('should handle variadic arguments', function() { Raven.debug = true; this.sinon.stub(originalConsoleMethods, level); From 26fcb595ca46b6323717349087a9415c813b0ac8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kamil=20Og=C3=B3rek?= Date: Wed, 18 Apr 2018 13:45:02 +0200 Subject: [PATCH 42/75] 3.24.2 --- CHANGELOG.md | 7 ++++ bower.json | 2 +- dist/plugins/angular.js | 15 +++++--- dist/plugins/angular.min.js | 4 +-- dist/plugins/angular.min.js.map | 2 +- dist/plugins/console.js | 15 +++++--- dist/plugins/console.min.js | 4 +-- dist/plugins/console.min.js.map | 2 +- dist/plugins/ember.js | 2 +- dist/plugins/ember.min.js | 2 +- dist/plugins/require.js | 2 +- dist/plugins/require.min.js | 2 +- dist/plugins/vue.js | 2 +- dist/plugins/vue.min.js | 2 +- dist/raven.js | 64 ++++++++++++++++++++++++--------- dist/raven.min.js | 6 ++-- dist/raven.min.js.map | 2 +- dist/sri.json | 12 +++---- docs/sentry-doc-config.json | 2 +- package.json | 2 +- src/raven.js | 2 +- test/raven.test.js | 4 +-- 22 files changed, 102 insertions(+), 55 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 03c8e72d9573..528fa286eeeb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## 3.24.2 + +* FEAT: Capture breadcrumbs on failed fetch request (#1293) +* BUGFIX: Make debug mode actually work (#1305) +* BUGFIX: Use correct frame url in ignore/whitelisturl calls (#1304) +* BUGFIX: Check input type before doing truncation (#1299) + ## 3.24.1 * FEAT: Add flag for unhandled promise rejections (#1278) diff --git a/bower.json b/bower.json index 16121eb8556b..1d21b35e5b4d 100644 --- a/bower.json +++ b/bower.json @@ -1,6 +1,6 @@ { "name": "raven-js", - "version": "3.24.1", + "version": "3.24.2", "dependencies": {}, "main": "dist/raven.js", "ignore": [ diff --git a/dist/plugins/angular.js b/dist/plugins/angular.js index f8476266a6d7..cf31bb8b8b27 100644 --- a/dist/plugins/angular.js +++ b/dist/plugins/angular.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.24.1 (f3b3500) | github.com/getsentry/raven-js */ +/*! Raven.js 3.24.2 (d92b6a2) | github.com/getsentry/raven-js */ /* * Includes TraceKit @@ -250,7 +250,13 @@ function objectFrozen(obj) { } function truncate(str, max) { - return !max || str.length <= max ? str : str.substr(0, max) + '\u2026'; + if (typeof max !== 'number') { + throw new Error('2nd argument to `truncate` function should be a number'); + } + if (typeof str !== 'string' || max === 0) { + return str; + } + return str.length <= max ? str : str.substr(0, max) + '\u2026'; } /** @@ -549,10 +555,9 @@ function jsonSize(value) { } function serializeValue(value) { - var maxLength = 40; - if (typeof value === 'string') { - return value.length <= maxLength ? value : value.substr(0, maxLength - 1) + '\u2026'; + var maxLength = 40; + return truncate(value, maxLength); } else if ( typeof value === 'number' || typeof value === 'boolean' || diff --git a/dist/plugins/angular.min.js b/dist/plugins/angular.min.js index b559eebae502..4023a0eb138c 100644 --- a/dist/plugins/angular.min.js +++ b/dist/plugins/angular.min.js @@ -1,3 +1,3 @@ -/*! Raven.js 3.24.1 (f3b3500) | github.com/getsentry/raven-js */ -!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b=b.Raven||(b.Raven={}),b=b.Plugins||(b.Plugins={}),b.Angular=a()}}(function(){return function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};b[g][0].call(k.exports,function(a){var c=b[g][1][a];return e(c?c:a)},k,k.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;g ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function B(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&j(b))for(c=b.split(/\s+/),f=0;fc?M(a,b-1):d}function N(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?T:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function O(a,b){function c(a){return k(a)?a.map(function(a){return c(a)}):i(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!k(b)||k(b)&&0===b.length)return a;var d,e=w(b),f="********";try{d=JSON.parse(P(a))}catch(g){return a}return c(d)}var P=a(3),Q="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},R=3,S=51200,T=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isUndefined:g,isFunction:h,isPlainObject:i,isString:j,isArray:k,isEmptyObject:l,supportsErrorEvent:m,supportsFetch:n,supportsReferrerPolicy:o,supportsPromiseRejectionEvent:p,wrappedCallback:q,each:r,objectMerge:s,truncate:u,objectFrozen:t,hasKey:v,joinRegExp:w,urlencode:x,uuid4:z,htmlTreeAsString:A,htmlElementAsString:B,isSameException:E,isSameStacktrace:F,parseUrl:y,fill:G,safeJoin:H,serializeException:M,serializeKeysForMessage:N,sanitize:O}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{3:3}],3:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}]},{},[1])(1)}); +/*! Raven.js 3.24.2 (d92b6a2) | github.com/getsentry/raven-js */ +!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b=b.Raven||(b.Raven={}),b=b.Plugins||(b.Plugins={}),b.Angular=a()}}(function(){return function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};b[g][0].call(k.exports,function(a){var c=b[g][1][a];return e(c?c:a)},k,k.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;g ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function B(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&j(b))for(c=b.split(/\s+/),f=0;fc?M(a,b-1):d}function N(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?T:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function O(a,b){function c(a){return k(a)?a.map(function(a){return c(a)}):i(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!k(b)||k(b)&&0===b.length)return a;var d,e=w(b),f="********";try{d=JSON.parse(P(a))}catch(g){return a}return c(d)}var P=a(3),Q="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},R=3,S=51200,T=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isUndefined:g,isFunction:h,isPlainObject:i,isString:j,isArray:k,isEmptyObject:l,supportsErrorEvent:m,supportsFetch:n,supportsReferrerPolicy:o,supportsPromiseRejectionEvent:p,wrappedCallback:q,each:r,objectMerge:s,truncate:u,objectFrozen:t,hasKey:v,joinRegExp:w,urlencode:x,uuid4:z,htmlTreeAsString:A,htmlElementAsString:B,isSameException:E,isSameStacktrace:F,parseUrl:y,fill:G,safeJoin:H,serializeException:M,serializeKeysForMessage:N,sanitize:O}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{3:3}],3:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}]},{},[1])(1)}); //# sourceMappingURL=angular.min.js.map \ No newline at end of file diff --git a/dist/plugins/angular.min.js.map b/dist/plugins/angular.min.js.map index df040ce69259..367b13d3c6ec 100644 --- a/dist/plugins/angular.min.js.map +++ b/dist/plugins/angular.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["angular.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","Plugins","Angular","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","angularPlugin","angular","RavenProvider","$get","$window","ExceptionHandlerProvider","$provide","decorator","exceptionHandler","R","$delegate","ex","cause","captureException","extra","moduleName","provider","config","setDataCallback","wrappedCallback","data","_normalizeData","angularPattern","exception","values","matches","exec","value","type","message","angularDocs","substr","2","isObject","what","isError","toString","isErrorEvent","supportsErrorEvent","isUndefined","isFunction","isPlainObject","Object","prototype","isString","isArray","isEmptyObject","_","hasOwnProperty","ErrorEvent","supportsFetch","_window","Headers","Request","Response","supportsReferrerPolicy","referrerPolicy","supportsPromiseRejectionEvent","PromiseRejectionEvent","callback","dataCallback","original","normalizedData","each","obj","j","hasKey","objectMerge","obj1","obj2","key","objectFrozen","isFrozen","truncate","str","max","object","joinRegExp","patterns","pattern","sources","len","push","replace","source","RegExp","join","urlencode","pairs","encodeURIComponent","parseUrl","url","match","query","fragment","protocol","host","path","relative","uuid4","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","Math","random","htmlTreeAsString","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","reverse","className","classes","attr","tagName","toLowerCase","id","split","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","isSameException","ex1","ex2","stacktrace","isSameStacktrace","stack1","stack2","frames1","frames","frames2","filename","lineno","colno","fill","name","replacement","track","orig","__raven__","__orig__","safeJoin","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","JSON","stringify","serializeValue","maxLength","serializeObject","depth","keys","reduce","acc","Array","map","val","serializeException","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","serializeKeysForMessage","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","slice","sanitize","sanitizeKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","test","sanitizeMask","safeInput","parse","o_O","3","indexOf","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","err","stack","thisPos","splice","Infinity","getSerialize"],"mappings":"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","file":"angular.min.js"} \ No newline at end of file +{"version":3,"sources":["angular.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","Plugins","Angular","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","angularPlugin","angular","RavenProvider","$get","$window","ExceptionHandlerProvider","$provide","decorator","exceptionHandler","R","$delegate","ex","cause","captureException","extra","moduleName","provider","config","setDataCallback","wrappedCallback","data","_normalizeData","angularPattern","exception","values","matches","exec","value","type","message","angularDocs","substr","2","isObject","what","isError","toString","isErrorEvent","supportsErrorEvent","isUndefined","isFunction","isPlainObject","Object","prototype","isString","isArray","isEmptyObject","_","hasOwnProperty","ErrorEvent","supportsFetch","_window","Headers","Request","Response","supportsReferrerPolicy","referrerPolicy","supportsPromiseRejectionEvent","PromiseRejectionEvent","callback","dataCallback","original","normalizedData","each","obj","j","hasKey","objectMerge","obj1","obj2","key","objectFrozen","isFrozen","truncate","str","max","object","joinRegExp","patterns","pattern","sources","len","push","replace","source","RegExp","join","urlencode","pairs","encodeURIComponent","parseUrl","url","match","query","fragment","protocol","host","path","relative","uuid4","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","Math","random","htmlTreeAsString","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","reverse","className","classes","attr","tagName","toLowerCase","id","split","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","isSameException","ex1","ex2","stacktrace","isSameStacktrace","stack1","stack2","frames1","frames","frames2","filename","lineno","colno","fill","name","replacement","track","orig","__raven__","__orig__","safeJoin","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","JSON","stringify","serializeValue","maxLength","serializeObject","depth","keys","reduce","acc","Array","map","val","serializeException","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","serializeKeysForMessage","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","slice","sanitize","sanitizeKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","test","sanitizeMask","safeInput","parse","o_O","3","indexOf","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","err","stack","thisPos","splice","Infinity","getSerialize"],"mappings":";CAYA,SAAUA,GAAG,GAAoB,gBAAVC,UAAoC,mBAATC,QAAsBA,OAAOD,QAAQD,QAAS,IAAmB,kBAATG,SAAqBA,OAAOC,IAAKD,UAAUH,OAAO,CAAC,GAAIK,EAAkCA,GAAb,mBAATC,QAAwBA,OAA+B,mBAATC,QAAwBA,OAA6B,mBAAPC,MAAsBA,KAAYC,KAAKJ,EAAGA,EAAEK,QAAQL,EAAEK,UAAaL,EAAGA,EAAEM,UAAUN,EAAEM,YAAeN,EAAEO,QAAUZ,MAAO,WAAqC,MAAO,SAAUa,GAAEC,EAAEC,EAAEC,GAAG,QAASC,GAAEC,EAAEC,GAAG,IAAIJ,EAAEG,GAAG,CAAC,IAAIJ,EAAEI,GAAG,CAAC,GAAIE,GAAkB,kBAATC,UAAqBA,OAAQ,KAAIF,GAAGC,EAAE,MAAOA,GAAEF,GAAE,EAAI,IAAGI,EAAE,MAAOA,GAAEJ,GAAE,EAAI,IAAIlB,GAAE,GAAIuB,OAAM,uBAAuBL,EAAE,IAAK,MAAMlB,GAAEwB,KAAK,mBAAmBxB,EAAE,GAAIyB,GAAEV,EAAEG,IAAIjB,WAAYa,GAAEI,GAAG,GAAGQ,KAAKD,EAAExB,QAAQ,SAASY,GAAG,GAAIE,GAAED,EAAEI,GAAG,GAAGL,EAAG,OAAOI,GAAEF,EAAEA,EAAEF,IAAIY,EAAEA,EAAExB,QAAQY,EAAEC,EAAEC,EAAEC,GAAG,MAAOD,GAAEG,GAAGjB,QAAkD,IAAI,GAA1CqB,GAAkB,kBAATD,UAAqBA,QAAgBH,EAAE,EAAEA,EAAEF,EAAEW,OAAOT,IAAID,EAAED,EAAEE,GAAI,OAAOD,KAAKW,GAAG,SAASC,EAAQ3B,EAAOD,GAYl4B,QAAS6B,GAAcpB,EAAOqB,GAK5B,QAASC,KACPvB,KAAKwB,MACH,UACA,SAASC,GACP,MAAOxB,KAKb,QAASyB,GAAyBC,GAChCA,EAASC,UAAU,qBAAsB,QAAS,YAAaC,IAGjE,QAASA,GAAiBC,EAAGC,GAC3B,MAAO,UAASC,EAAIC,GAClBH,EAAEI,iBAAiBF,GACjBG,OAAQF,MAAOA,KAEjBF,EAAUC,EAAIC,IAtBlBX,EAAUA,GAAWzB,OAAOyB,QAEvBA,IAwBLA,EACG7B,OAAO2C,MACPC,SAAS,QAASd,GAClBe,QAAQ,WAAYZ,IAEvBzB,EAAMsC,gBACJC,EAAgB,SAASC,GACvB,MAAOpB,GAAcqB,EAAeD,OAxC1C,GAAID,GAAkBpB,EAAQ,GAAGoB,gBAG7BG,EAAiB,6DACjBP,EAAa,SAyCjBf,GAAcqB,EAAiB,SAASD,GAEtC,GAAIG,GAAYH,EAAKG,SACrB,IAAIA,EAAW,CACbA,EAAYA,EAAUC,OAAO,EAC7B,IAAIC,GAAUH,EAAeI,KAAKH,EAAUI,MAExCF,KAEFF,EAAUK,KAAOH,EAAQ,GACzBF,EAAUI,MAAQF,EAAQ,GAE1BL,EAAKS,QAAUN,EAAUK,KAAO,KAAOL,EAAUI,MAEjDP,EAAKN,MAAMgB,YAAcL,EAAQ,GAAGM,OAAO,EAAG,MAIlD,MAAOX,IAGTpB,EAAce,WAAaA,EAE3B3C,EAAOD,QAAU6B,IAEdgC,EAAI,IAAIA,GAAG,SAASjC,EAAQ3B,EAAOD,IACtC,SAAWM,GAQX,QAASwD,GAASC,GAChB,MAAuB,gBAATA,IAA8B,OAATA,EAKrC,QAASC,GAAQR,GACf,UAAWS,SAASxC,KAAK+B,IACvB,IAAK,iBACH,OAAO,CACT,KAAK,qBACH,OAAO,CACT,KAAK,wBACH,OAAO,CACT,SACE,MAAOA,aAAiBlC,QAI9B,QAAS4C,GAAaV,GACpB,MAAOW,MAAoD,2BAAzBF,SAASxC,KAAK+B,GAGlD,QAASY,GAAYL,GACnB,MAAgB,UAATA,EAGT,QAASM,GAAWN,GAClB,MAAuB,kBAATA,GAGhB,QAASO,GAAcP,GACrB,MAAgD,oBAAzCQ,OAAOC,UAAUP,SAASxC,KAAKsC,GAGxC,QAASU,GAASV,GAChB,MAAgD,oBAAzCQ,OAAOC,UAAUP,SAASxC,KAAKsC,GAGxC,QAASW,GAAQX,GACf,MAAgD,mBAAzCQ,OAAOC,UAAUP,SAASxC,KAAKsC,GAGxC,QAASY,GAAcZ,GACrB,IAAKO,EAAcP,GAAO,OAAO,CAEjC,KAAK,GAAIa,KAAKb,GACZ,GAAIA,EAAKc,eAAeD,GACtB,OAAO,CAGX,QAAO,EAGT,QAAST,KACP,IAEE,MADA,IAAIW,YAAW,KACR,EACP,MAAOlE,GACP,OAAO,GAIX,QAASmE,KACP,KAAM,SAAWC,IAAU,OAAO,CAElC,KAIE,MAHA,IAAIC,SACJ,GAAIC,SAAQ,IACZ,GAAIC,WACG,EACP,MAAOvE,GACP,OAAO,GAQX,QAASwE,KACP,IAAKL,IAAiB,OAAO,CAE7B,KAKE,MAHA,IAAIG,SAAQ,cACVG,eAAgB,YAEX,EACP,MAAOzE,GACP,OAAO,GAIX,QAAS0E,KACP,MAAwC,kBAA1BC,uBAGhB,QAASvC,GAAgBwC,GACvB,QAASC,GAAaxC,EAAMyC,GAC1B,GAAIC,GAAiBH,EAASvC,IAASA,CACvC,OAAIyC,GACKA,EAASC,IAAmBA,EAE9BA,EAGT,MAAOF,GAGT,QAASG,GAAKC,EAAKL,GACjB,GAAInE,GAAGyE,CAEP,IAAI1B,EAAYyB,EAAInE,QAClB,IAAKL,IAAKwE,GACJE,EAAOF,EAAKxE,IACdmE,EAAS/D,KAAK,KAAMJ,EAAGwE,EAAIxE,QAK/B,IADAyE,EAAID,EAAInE,OAEN,IAAKL,EAAI,EAAGA,EAAIyE,EAAGzE,IACjBmE,EAAS/D,KAAK,KAAMJ,EAAGwE,EAAIxE,IAMnC,QAAS2E,GAAYC,EAAMC,GACzB,MAAKA,IAGLN,EAAKM,EAAM,SAASC,EAAK3C,GACvByC,EAAKE,GAAO3C,IAEPyC,GALEA,EAgBX,QAASG,GAAaP,GACpB,QAAKtB,OAAO8B,UAGL9B,OAAO8B,SAASR,GAGzB,QAASS,GAASC,EAAKC,GACrB,GAAmB,gBAARA,GACT,KAAM,IAAIlF,OAAM,yDAElB,OAAmB,gBAARiF,IAA4B,IAARC,EACtBD,EAEFA,EAAI7E,QAAU8E,EAAMD,EAAMA,EAAI3C,OAAO,EAAG4C,GAAO,IAUxD,QAAST,GAAOU,EAAQN,GACtB,MAAO5B,QAAOC,UAAUK,eAAepD,KAAKgF,EAAQN,GAGtD,QAASO,GAAWC,GAQlB,IALA,GAGEC,GAHEC,KACFxF,EAAI,EACJyF,EAAMH,EAASjF,OAGVL,EAAIyF,EAAKzF,IACduF,EAAUD,EAAStF,GACfoD,EAASmC,GAGXC,EAAQE,KAAKH,EAAQI,QAAQ,8BAA+B,SACnDJ,GAAWA,EAAQK,QAE5BJ,EAAQE,KAAKH,EAAQK,OAIzB,OAAO,IAAIC,QAAOL,EAAQM,KAAK,KAAM,KAGvC,QAASC,GAAUnG,GACjB,GAAIoG,KAIJ,OAHAzB,GAAK3E,EAAG,SAASkF,EAAK3C,GACpB6D,EAAMN,KAAKO,mBAAmBnB,GAAO,IAAMmB,mBAAmB9D,MAEzD6D,EAAMF,KAAK,KAMpB,QAASI,GAASC,GAChB,GAAmB,gBAARA,GAAkB,QAC7B,IAAIC,GAAQD,EAAIC,MAAM,kEAGlBC,EAAQD,EAAM,IAAM,GACpBE,EAAWF,EAAM,IAAM,EAC3B,QACEG,SAAUH,EAAM,GAChBI,KAAMJ,EAAM,GACZK,KAAML,EAAM,GACZM,SAAUN,EAAM,GAAKC,EAAQC,GAGjC,QAASK,KACP,GAAIC,GAASjD,EAAQiD,QAAUjD,EAAQkD,QAEvC,KAAK9D,EAAY6D,IAAWA,EAAOE,gBAAiB,CAGlD,GAAIC,GAAM,GAAIC,aAAY,EAC1BJ,GAAOE,gBAAgBC,GAGvBA,EAAI,GAAe,KAATA,EAAI,GAAc,MAE5BA,EAAI,GAAe,MAATA,EAAI,GAAe,KAE7B,IAAIE,GAAM,SAASC,GAEjB,IADA,GAAIC,GAAID,EAAItE,SAAS,IACduE,EAAE9G,OAAS,GAChB8G,EAAI,IAAMA,CAEZ,OAAOA,GAGT,OACEF,GAAIF,EAAI,IACRE,EAAIF,EAAI,IACRE,EAAIF,EAAI,IACRE,EAAIF,EAAI,IACRE,EAAIF,EAAI,IACRE,EAAIF,EAAI,IACRE,EAAIF,EAAI,IACRE,EAAIF,EAAI,IAIV,MAAO,mCAAmCpB,QAAQ,QAAS,SAASyB,GAClE,GAAI1H,GAAqB,GAAhB2H,KAAKC,SAAiB,EAC7BH,EAAU,MAANC,EAAY1H,EAAS,EAAJA,EAAW,CAClC,OAAOyH,GAAEvE,SAAS,MAYxB,QAAS2E,GAAiBC,GAWxB,IATA,GAOEC,GAPEC,EAAsB,EACxBC,EAAiB,GACjBC,KACAC,EAAS,EACTpC,EAAM,EACNqC,EAAY,MACZC,EAAYD,EAAUzH,OAGjBmH,GAAQK,IAAWH,IACxBD,EAAUO,EAAoBR,KAMhB,SAAZC,GACCI,EAAS,GAAKpC,EAAMmC,EAAIvH,OAAS0H,EAAYN,EAAQpH,QAAUsH,KAKlEC,EAAIlC,KAAK+B,GAEThC,GAAOgC,EAAQpH,OACfmH,EAAOA,EAAKS,UAGd,OAAOL,GAAIM,UAAUpC,KAAKgC,GAS5B,QAASE,GAAoBR,GAC3B,GACEW,GACAC,EACAtD,EACAuD,EACArI,EALE4H,IAOJ,KAAKJ,IAASA,EAAKc,QACjB,MAAO,EAST,IANAV,EAAIlC,KAAK8B,EAAKc,QAAQC,eAClBf,EAAKgB,IACPZ,EAAIlC,KAAK,IAAM8B,EAAKgB,IAGtBL,EAAYX,EAAKW,UACbA,GAAa/E,EAAS+E,GAExB,IADAC,EAAUD,EAAUM,MAAM,OACrBzI,EAAI,EAAGA,EAAIoI,EAAQ/H,OAAQL,IAC9B4H,EAAIlC,KAAK,IAAM0C,EAAQpI,GAG3B,IAAI0I,IAAiB,OAAQ,OAAQ,QAAS,MAC9C,KAAK1I,EAAI,EAAGA,EAAI0I,EAAcrI,OAAQL,IACpC8E,EAAM4D,EAAc1I,GACpBqI,EAAOb,EAAKmB,aAAa7D,GACrBuD,GACFT,EAAIlC,KAAK,IAAMZ,EAAM,KAAOuD,EAAO,KAGvC,OAAOT,GAAI9B,KAAK,IAMlB,QAAS8C,GAAgB9I,EAAG+I,GAC1B,WAAY/I,IAAM+I,GAMpB,QAASC,GAAgBhJ,EAAG+I,GAC1B,MAAO9F,GAAYjD,IAAMiD,EAAY8F,GAMvC,QAASE,GAAgBC,EAAKC,GAC5B,OAAIL,EAAgBI,EAAKC,KAEzBD,EAAMA,EAAIhH,OAAO,GACjBiH,EAAMA,EAAIjH,OAAO,GAEbgH,EAAI5G,OAAS6G,EAAI7G,MAAQ4G,EAAI7G,QAAU8G,EAAI9G,SAG3C2G,EAAgBE,EAAIE,WAAYD,EAAIC,aAEjCC,EAAiBH,EAAIE,WAAYD,EAAIC,cAM9C,QAASC,GAAiBC,EAAQC,GAChC,GAAIT,EAAgBQ,EAAQC,GAAS,OAAO,CAE5C,IAAIC,GAAUF,EAAOG,OACjBC,EAAUH,EAAOE,MAGrB,IAAID,EAAQjJ,SAAWmJ,EAAQnJ,OAAQ,OAAO,CAI9C,KAAK,GADDP,GAAG+I,EACE7I,EAAI,EAAGA,EAAIsJ,EAAQjJ,OAAQL,IAGlC,GAFAF,EAAIwJ,EAAQtJ,GACZ6I,EAAIW,EAAQxJ,GAEVF,EAAE2J,WAAaZ,EAAEY,UACjB3J,EAAE4J,SAAWb,EAAEa,QACf5J,EAAE6J,QAAUd,EAAEc,OACd7J,EAAE,cAAgB+I,EAAE,YAEpB,OAAO,CAEX,QAAO,EAUT,QAASe,GAAKpF,EAAKqF,EAAMC,EAAaC,GACpC,GAAW,MAAPvF,EAAJ,CACA,GAAIwF,GAAOxF,EAAIqF,EACfrF,GAAIqF,GAAQC,EAAYE,GACxBxF,EAAIqF,GAAMI,GAAY,EACtBzF,EAAIqF,GAAMK,EAAWF,EACjBD,GACFA,EAAMrE,MAAMlB,EAAKqF,EAAMG,KAU3B,QAASG,GAASC,EAAOC,GACvB,IAAKhH,EAAQ+G,GAAQ,MAAO,EAI5B,KAAK,GAFDE,MAEKtK,EAAI,EAAGA,EAAIoK,EAAM/J,OAAQL,IAChC,IACEsK,EAAO5E,KAAK6E,OAAOH,EAAMpK,KACzB,MAAOT,GACP+K,EAAO5E,KAAK,gCAIhB,MAAO4E,GAAOxE,KAAKuE,GASrB,QAASG,GAAWrI,GAClB,QAASsI,UAAUtI,GAAOsG,MAAM,SAASpI,OAG3C,QAASqK,GAASvI,GAChB,MAAOqI,GAAWG,KAAKC,UAAUzI,IAGnC,QAAS0I,GAAe1I,GACtB,GAAqB,gBAAVA,GAAoB,CAC7B,GAAI2I,GAAY,EAChB,OAAO7F,GAAS9C,EAAO2I,GAClB,GACY,gBAAV3I,IACU,iBAAVA,IACU,mBAAVA,GAEP,MAAOA,EAGT,IAAIC,GAAOc,OAAOC,UAAUP,SAASxC,KAAK+B,EAG1C,OAAa,oBAATC,EAAmC,WAC1B,mBAATA,EAAkC,UACzB,sBAATA,EACKD,EAAM0H,KAAO,cAAgB1H,EAAM0H,KAAO,IAAM,aAElD1H,EAGT,QAAS4I,GAAgB5I,EAAO6I,GAC9B,MAAc,KAAVA,EAAoBH,EAAe1I,GAEnCc,EAAcd,GACTe,OAAO+H,KAAK9I,GAAO+I,OAAO,SAASC,EAAKrG,GAE7C,MADAqG,GAAIrG,GAAOiG,EAAgB5I,EAAM2C,GAAMkG,EAAQ,GACxCG,OAEAC,MAAM/H,QAAQlB,GAChBA,EAAMkJ,IAAI,SAASC,GACxB,MAAOP,GAAgBO,EAAKN,EAAQ,KAIjCH,EAAe1I,GAGxB,QAASoJ,GAAmBpK,EAAI6J,EAAOQ,GACrC,IAAKvI,EAAc9B,GAAK,MAAOA,EAE/B6J,GAAyB,gBAAVA,GAAqBS,EAAgCT,EACpEQ,EAA2B,gBAAVR,GAAqBU,EAA+BF,CAErE,IAAIG,GAAaZ,EAAgB5J,EAAI6J,EAErC,OAAIN,GAASE,EAAUe,IAAeH,EAC7BD,EAAmBpK,EAAI6J,EAAQ,GAGjCW,EAGT,QAASC,GAAwBX,EAAMH,GACrC,GAAoB,gBAATG,IAAqC,gBAATA,GAAmB,MAAOA,GAAKrI,UACtE,KAAKwI,MAAM/H,QAAQ4H,GAAO,MAAO,EAKjC,IAHAA,EAAOA,EAAKY,OAAO,SAAS/G,GAC1B,MAAsB,gBAARA,KAEI,IAAhBmG,EAAK5K,OAAc,MAAO,sBAG9B,IADAyK,EAAiC,gBAAdA,GAAyBgB,EAA4BhB,EACpEG,EAAK,GAAG5K,QAAUyK,EAAW,MAAOG,GAAK,EAE7C,KAAK,GAAIc,GAAWd,EAAK5K,OAAQ0L,EAAW,EAAGA,IAAY,CACzD,GAAIJ,GAAaV,EAAKe,MAAM,EAAGD,GAAUjG,KAAK,KAC9C,MAAI6F,EAAWtL,OAASyK,GACxB,MAAIiB,KAAad,EAAK5K,OAAesL,EAC9BA,EAAa,IAGtB,MAAO,GAGT,QAASM,GAAS7B,EAAO8B,GAcvB,QAASC,GAAeC,GACtB,MAAI/I,GAAQ+I,GACHA,EAAYf,IAAI,SAASC,GAC9B,MAAOa,GAAeb,KAItBrI,EAAcmJ,GACTlJ,OAAO+H,KAAKmB,GAAalB,OAAO,SAASC,EAAKkB,GAMnD,MAJElB,GAAIkB,GADFC,EAAeC,KAAKF,GACbG,EAEAL,EAAeC,EAAYC,IAE/BlB,OAIJiB,EA/BT,IAAK/I,EAAQ6I,IAAkB7I,EAAQ6I,IAAyC,IAAxBA,EAAa7L,OACnE,MAAO+J,EAET,IAEIqC,GAFAH,EAAiBjH,EAAW6G,GAC5BM,EAAe,UAGnB,KACEC,EAAY9B,KAAK+B,MAAM9B,EAAUR,IACjC,MAAOuC,GACP,MAAOvC,GAwBT,MAAO+B,GAAeM,GAlkBxB,GAAI7B,GAAYrK,EAAQ,GAEpBoD,EACgB,mBAAX3E,QACHA,OACkB,mBAAXC,GAAyBA,EAAyB,mBAATC,MAAuBA,QAgczEuM,EAAgC,EAEhCC,EAA+B,MAC/BI,EAA4B,EA6HhClN,GAAOD,SACL8D,SAAUA,EACVE,QAASA,EACTE,aAAcA,EACdE,YAAaA,EACbC,WAAYA,EACZC,cAAeA,EACfG,SAAUA,EACVC,QAASA,EACTC,cAAeA,EACfR,mBAAoBA,EACpBY,cAAeA,EACfK,uBAAwBA,EACxBE,8BAA+BA,EAC/BtC,gBAAiBA,EACjB4C,KAAMA,EACNI,YAAaA,EACbM,SAAUA,EACVF,aAAcA,EACdL,OAAQA,EACRW,WAAYA,EACZU,UAAWA,EACXY,MAAOA,EACPY,iBAAkBA,EAClBS,oBAAqBA,EACrBe,gBAAiBA,EACjBI,iBAAkBA,EAClBjD,SAAUA,EACV0D,KAAMA,EACNO,SAAUA,EACVoB,mBAAoBA,EACpBK,wBAAyBA,EACzBK,SAAUA,KAGT7L,KAAKjB,KAAuB,mBAAXF,QAAyBA,OAAyB,mBAATC,MAAuBA,KAAyB,mBAAXF,QAAyBA,aACxH4N,EAAI,IAAIA,GAAG,SAASrM,EAAQ3B,EAAOD,GAetC,QAASkO,GAAQC,EAAUC,GACzB,IAAK,GAAI/M,GAAI,EAAGA,EAAI8M,EAASzM,SAAUL,EACrC,GAAI8M,EAAS9M,KAAO+M,EAAQ,MAAO/M,EAErC,UAGF,QAAS4K,GAAUpG,EAAKwI,EAAUC,EAAQC,GACxC,MAAOvC,MAAKC,UAAUpG,EAAK2I,EAAWH,EAAUE,GAAgBD,GAIlE,QAASG,GAAejL,GACtB,GAAIkL,IAEFC,MAAOnL,EAAMmL,MACbjL,QAASF,EAAME,QACfwH,KAAM1H,EAAM0H,KAGd,KAAK,GAAI7J,KAAKmC,GACRe,OAAOC,UAAUK,eAAepD,KAAK+B,EAAOnC,KAC9CqN,EAAIrN,GAAKmC,EAAMnC,GAInB,OAAOqN,GAGT,QAASF,GAAWH,EAAUE,GAC5B,GAAII,MACArC,IAWJ,OATqB,OAAjBiC,IACFA,EAAgB,SAASpI,EAAK3C,GAC5B,MAAImL,GAAM,KAAOnL,EACR,eAEF,eAAiB8I,EAAKe,MAAM,EAAGa,EAAQS,EAAOnL,IAAQ2D,KAAK,KAAO,MAItE,SAAShB,EAAK3C,GACnB,GAAImL,EAAMjN,OAAS,EAAG,CACpB,GAAIkN,GAAUV,EAAQS,EAAOnO,OAC5BoO,EAAUD,EAAME,OAAOD,EAAU,GAAKD,EAAM5H,KAAKvG,OACjDoO,EAAUtC,EAAKuC,OAAOD,EAASE,EAAAA,EAAU3I,GAAOmG,EAAKvF,KAAKZ,IAEtD+H,EAAQS,EAAOnL,KAClBA,EAAQ+K,EAAc9M,KAAKjB,KAAM2F,EAAK3C,QAGxCmL,GAAM5H,KAAKvD,EAGb,OAAmB,OAAZ6K,EACH7K,YAAiBlC,OAAQmN,EAAejL,GAASA,EACjD6K,EAAS5M,KAAKjB,KAAM2F,EAAK3C,IA5DjCxD,EAAUC,EAAOD,QAAUiM,EAC3BjM,EAAQ+O,aAAeP,YA+DZ,IAAI","file":"angular.min.js"} \ No newline at end of file diff --git a/dist/plugins/console.js b/dist/plugins/console.js index 20c8629103df..d44cd5c32478 100644 --- a/dist/plugins/console.js +++ b/dist/plugins/console.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.24.1 (f3b3500) | github.com/getsentry/raven-js */ +/*! Raven.js 3.24.2 (d92b6a2) | github.com/getsentry/raven-js */ /* * Includes TraceKit @@ -252,7 +252,13 @@ function objectFrozen(obj) { } function truncate(str, max) { - return !max || str.length <= max ? str : str.substr(0, max) + '\u2026'; + if (typeof max !== 'number') { + throw new Error('2nd argument to `truncate` function should be a number'); + } + if (typeof str !== 'string' || max === 0) { + return str; + } + return str.length <= max ? str : str.substr(0, max) + '\u2026'; } /** @@ -551,10 +557,9 @@ function jsonSize(value) { } function serializeValue(value) { - var maxLength = 40; - if (typeof value === 'string') { - return value.length <= maxLength ? value : value.substr(0, maxLength - 1) + '\u2026'; + var maxLength = 40; + return truncate(value, maxLength); } else if ( typeof value === 'number' || typeof value === 'boolean' || diff --git a/dist/plugins/console.min.js b/dist/plugins/console.min.js index 42f48f71940f..eb668d57f0cc 100644 --- a/dist/plugins/console.min.js +++ b/dist/plugins/console.min.js @@ -1,3 +1,3 @@ -/*! Raven.js 3.24.1 (f3b3500) | github.com/getsentry/raven-js */ -!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b=b.Raven||(b.Raven={}),b=b.Plugins||(b.Plugins={}),b.Console=a()}}(function(){return function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};b[g][0].call(k.exports,function(a){var c=b[g][1][a];return e(c?c:a)},k,k.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;g ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function B(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&j(b))for(c=b.split(/\s+/),f=0;fc?M(a,b-1):d}function N(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?T:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function O(a,b){function c(a){return k(a)?a.map(function(a){return c(a)}):i(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!k(b)||k(b)&&0===b.length)return a;var d,e=w(b),f="********";try{d=JSON.parse(P(a))}catch(g){return a}return c(d)}var P=a(4),Q="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},R=3,S=51200,T=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isUndefined:g,isFunction:h,isPlainObject:i,isString:j,isArray:k,isEmptyObject:l,supportsErrorEvent:m,supportsFetch:n,supportsReferrerPolicy:o,supportsPromiseRejectionEvent:p,wrappedCallback:q,each:r,objectMerge:s,truncate:u,objectFrozen:t,hasKey:v,joinRegExp:w,urlencode:x,uuid4:z,htmlTreeAsString:A,htmlElementAsString:B,isSameException:E,isSameStacktrace:F,parseUrl:y,fill:G,safeJoin:H,serializeException:M,serializeKeysForMessage:N,sanitize:O}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{4:4}],4:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}]},{},[1])(1)}); +/*! Raven.js 3.24.2 (d92b6a2) | github.com/getsentry/raven-js */ +!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b=b.Raven||(b.Raven={}),b=b.Plugins||(b.Plugins={}),b.Console=a()}}(function(){return function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};b[g][0].call(k.exports,function(a){var c=b[g][1][a];return e(c?c:a)},k,k.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;g ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function B(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&j(b))for(c=b.split(/\s+/),f=0;fc?M(a,b-1):d}function N(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?T:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function O(a,b){function c(a){return k(a)?a.map(function(a){return c(a)}):i(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!k(b)||k(b)&&0===b.length)return a;var d,e=w(b),f="********";try{d=JSON.parse(P(a))}catch(g){return a}return c(d)}var P=a(4),Q="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},R=3,S=51200,T=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isUndefined:g,isFunction:h,isPlainObject:i,isString:j,isArray:k,isEmptyObject:l,supportsErrorEvent:m,supportsFetch:n,supportsReferrerPolicy:o,supportsPromiseRejectionEvent:p,wrappedCallback:q,each:r,objectMerge:s,truncate:u,objectFrozen:t,hasKey:v,joinRegExp:w,urlencode:x,uuid4:z,htmlTreeAsString:A,htmlElementAsString:B,isSameException:E,isSameStacktrace:F,parseUrl:y,fill:G,safeJoin:H,serializeException:M,serializeKeysForMessage:N,sanitize:O}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{4:4}],4:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}]},{},[1])(1)}); //# sourceMappingURL=console.min.js.map \ No newline at end of file diff --git a/dist/plugins/console.min.js.map b/dist/plugins/console.min.js.map index b930fb33c9a3..a829391de21e 100644 --- a/dist/plugins/console.min.js.map +++ b/dist/plugins/console.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["console.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","Plugins","Console","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","consolePlugin","console","pluginOptions","logLevels","levels","push","callback","msg","data","captureMessage","level","pop","wrapConsoleMethod","wrapMethod","2","utils","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","safeJoin","logger","extra","Function","prototype","apply","3","isObject","what","isError","value","toString","isErrorEvent","supportsErrorEvent","isUndefined","isFunction","isPlainObject","Object","isString","isArray","isEmptyObject","_","hasOwnProperty","ErrorEvent","supportsFetch","_window","Headers","Request","Response","supportsReferrerPolicy","referrerPolicy","supportsPromiseRejectionEvent","PromiseRejectionEvent","wrappedCallback","dataCallback","original","normalizedData","each","obj","j","hasKey","objectMerge","obj1","obj2","key","objectFrozen","isFrozen","truncate","str","max","substr","object","joinRegExp","patterns","pattern","sources","len","replace","source","RegExp","join","urlencode","pairs","encodeURIComponent","parseUrl","url","match","query","fragment","protocol","host","path","relative","uuid4","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","Math","random","htmlTreeAsString","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","reverse","className","classes","attr","tagName","toLowerCase","id","split","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","isSameException","ex1","ex2","values","type","stacktrace","isSameStacktrace","stack1","stack2","frames1","frames","frames2","filename","lineno","colno","fill","name","replacement","track","orig","__raven__","__orig__","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","JSON","stringify","serializeValue","maxLength","serializeObject","depth","keys","reduce","acc","Array","map","val","serializeException","ex","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","serializeKeysForMessage","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitize","sanitizeKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","test","sanitizeMask","safeInput","parse","o_O","4","indexOf","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","err","stack","message","thisPos","splice","Infinity","getSerialize"],"mappings":"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","file":"console.min.js"} \ No newline at end of file +{"version":3,"sources":["console.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","Plugins","Console","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","consolePlugin","console","pluginOptions","logLevels","levels","push","callback","msg","data","captureMessage","level","pop","wrapConsoleMethod","wrapMethod","2","utils","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","safeJoin","logger","extra","Function","prototype","apply","3","isObject","what","isError","value","toString","isErrorEvent","supportsErrorEvent","isUndefined","isFunction","isPlainObject","Object","isString","isArray","isEmptyObject","_","hasOwnProperty","ErrorEvent","supportsFetch","_window","Headers","Request","Response","supportsReferrerPolicy","referrerPolicy","supportsPromiseRejectionEvent","PromiseRejectionEvent","wrappedCallback","dataCallback","original","normalizedData","each","obj","j","hasKey","objectMerge","obj1","obj2","key","objectFrozen","isFrozen","truncate","str","max","substr","object","joinRegExp","patterns","pattern","sources","len","replace","source","RegExp","join","urlencode","pairs","encodeURIComponent","parseUrl","url","match","query","fragment","protocol","host","path","relative","uuid4","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","Math","random","htmlTreeAsString","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","reverse","className","classes","attr","tagName","toLowerCase","id","split","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","isSameException","ex1","ex2","values","type","stacktrace","isSameStacktrace","stack1","stack2","frames1","frames","frames2","filename","lineno","colno","fill","name","replacement","track","orig","__raven__","__orig__","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","JSON","stringify","serializeValue","maxLength","serializeObject","depth","keys","reduce","acc","Array","map","val","serializeException","ex","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","serializeKeysForMessage","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitize","sanitizeKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","test","sanitizeMask","safeInput","parse","o_O","4","indexOf","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","err","stack","message","thisPos","splice","Infinity","getSerialize"],"mappings":"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","file":"console.min.js"} \ No newline at end of file diff --git a/dist/plugins/ember.js b/dist/plugins/ember.js index ffc6db6534b9..68b096bd42ba 100644 --- a/dist/plugins/ember.js +++ b/dist/plugins/ember.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.24.1 (f3b3500) | github.com/getsentry/raven-js */ +/*! Raven.js 3.24.2 (d92b6a2) | github.com/getsentry/raven-js */ /* * Includes TraceKit diff --git a/dist/plugins/ember.min.js b/dist/plugins/ember.min.js index 80ce2491e506..830793b9ed01 100644 --- a/dist/plugins/ember.min.js +++ b/dist/plugins/ember.min.js @@ -1,3 +1,3 @@ -/*! Raven.js 3.24.1 (f3b3500) | github.com/getsentry/raven-js */ +/*! Raven.js 3.24.2 (d92b6a2) | github.com/getsentry/raven-js */ !function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b=b.Raven||(b.Raven={}),b=b.Plugins||(b.Plugins={}),b.Ember=a()}}(function(){return function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};b[g][0].call(k.exports,function(a){var c=b[g][1][a];return e(c?c:a)},k,k.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;g":"anonymous component")+(a._isVue&&a.$options.__file?" at "+a.$options.__file:"")}function e(a,b){if(b=b||window.Vue,b&&b.config){var c=b.config.errorHandler;b.config.errorHandler=function(b,e,f){var g={};"[object Object]"===Object.prototype.toString.call(e)&&(g.componentName=d(e),g.propsData=e.$options.propsData),"undefined"!=typeof f&&(g.lifecycleHook=f),a.captureException(b,{extra:g}),"function"==typeof c&&c.call(this,b,e,f)}}}b.exports=e},{}]},{},[1])(1)}); //# sourceMappingURL=vue.min.js.map \ No newline at end of file diff --git a/dist/raven.js b/dist/raven.js index 6d4dde750db2..4d52539e16d2 100644 --- a/dist/raven.js +++ b/dist/raven.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.24.1 (f3b3500) | github.com/getsentry/raven-js */ +/*! Raven.js 3.24.2 (d92b6a2) | github.com/getsentry/raven-js */ /* * Includes TraceKit @@ -205,7 +205,7 @@ Raven.prototype = { // webpack (using a build step causes webpack #1617). Grunt verifies that // this value matches package.json during build. // See: https://github.com/getsentry/raven-js/issues/465 - VERSION: '3.24.1', + VERSION: '3.24.2', debug: false, @@ -639,6 +639,14 @@ Raven.prototype = { // stack[0] is `throw new Error(msg)` call itself, we are interested in the frame that was just before that, stack[1] var initialCall = isArray(stack.stack) && stack.stack[1]; + + // if stack[1] is `Raven.captureException`, it means that someone passed a string to it and we redirected that call + // to be handled by `captureMessage`, thus `initialCall` is the 3rd one, not 2nd + // initialCall => captureException(string) => captureMessage(string) + if (initialCall && initialCall.func === 'Raven.captureException') { + initialCall = stack.stack[2]; + } + var fileurl = (initialCall && initialCall.url) || ''; if ( @@ -1436,17 +1444,30 @@ Raven.prototype = { status_code: null }; - return origFetch.apply(this, args).then(function(response) { - fetchData.status_code = response.status; + return origFetch + .apply(this, args) + .then(function(response) { + fetchData.status_code = response.status; - self.captureBreadcrumb({ - type: 'http', - category: 'fetch', - data: fetchData - }); + self.captureBreadcrumb({ + type: 'http', + category: 'fetch', + data: fetchData + }); - return response; - }); + return response; + }) + ['catch'](function(err) { + // if there is an error performing the request + self.captureBreadcrumb({ + type: 'http', + category: 'fetch', + data: fetchData, + level: 'error' + }); + + throw err; + }); }; }, wrappedBuiltIns @@ -1459,7 +1480,7 @@ Raven.prototype = { if (_document.addEventListener) { _document.addEventListener('click', self._breadcrumbEventHandler('click'), false); _document.addEventListener('keypress', self._keypressEventHandler(), false); - } else if(_document.attachEvent){ + } else if (_document.attachEvent) { // IE8 Compatibility _document.attachEvent('onclick', self._breadcrumbEventHandler('click')); _document.attachEvent('onkeypress', self._keypressEventHandler()); @@ -2182,7 +2203,11 @@ Raven.prototype = { }, _logDebug: function(level) { - if (this._originalConsoleMethods[level] && this.debug) { + // We allow `Raven.debug` and `Raven.config(DSN, { debug: true })` to not make backward incompatible API change + if ( + this._originalConsoleMethods[level] && + (this.debug || this._globalOptions.debug) + ) { // In IE<10 console methods do not have their own 'apply' method Function.prototype.apply.call( this._originalConsoleMethods[level], @@ -2443,7 +2468,13 @@ function objectFrozen(obj) { } function truncate(str, max) { - return !max || str.length <= max ? str : str.substr(0, max) + '\u2026'; + if (typeof max !== 'number') { + throw new Error('2nd argument to `truncate` function should be a number'); + } + if (typeof str !== 'string' || max === 0) { + return str; + } + return str.length <= max ? str : str.substr(0, max) + '\u2026'; } /** @@ -2742,10 +2773,9 @@ function jsonSize(value) { } function serializeValue(value) { - var maxLength = 40; - if (typeof value === 'string') { - return value.length <= maxLength ? value : value.substr(0, maxLength - 1) + '\u2026'; + var maxLength = 40; + return truncate(value, maxLength); } else if ( typeof value === 'number' || typeof value === 'boolean' || diff --git a/dist/raven.min.js b/dist/raven.min.js index a870fc29b24a..68405096ac2f 100644 --- a/dist/raven.min.js +++ b/dist/raven.min.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.24.1 (f3b3500) | github.com/getsentry/raven-js */ -!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.Raven=a()}}(function(){return function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};b[g][0].call(k.exports,function(a){var c=b[g][1][a];return e(c?c:a)},k,k.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;gthis.k.maxBreadcrumbs&&this.u.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.r.push([a,b]),this.n&&this.F(),this},setUserContext:function(a){return this.j.user=a,this},setExtraContext:function(a){return this.Z("extra",a),this},setTagsContext:function(a){return this.Z("tags",a),this},clearContext:function(){return this.j={},this},getContext:function(){return JSON.parse(h(this.j))},setEnvironment:function(a){return this.k.environment=a,this},setRelease:function(a){return this.k.release=a,this},setDataCallback:function(a){var b=this.k.dataCallback;return this.k.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.k.breadcrumbCallback;return this.k.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.k.shouldSendCallback;return this.k.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.k.transport=a,this},lastException:function(){return this.d},lastEventId:function(){return this.f},isSetup:function(){return!!this.a&&(!!this.g||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.z("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=P.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(Q){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.H;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.j.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.J(this.G(c)),h=Q.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(Q.head||Q.body).appendChild(h)}},L:function(){var a=this;this.m+=1,setTimeout(function(){a.m-=1})},$:function(a,b){var c,d;if(this.b){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),Q.createEvent?(c=Q.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=Q.createEventObject(),c.eventType=a);for(d in b)y(b,d)&&(c[d]=b[d]);if(Q.createEvent)Q.dispatchEvent(c);else try{Q.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},_:function(a){var b=this;return function(c){if(b.aa=null,b.v!==c){b.v=c;var d;try{d=C(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ba:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.aa;g||a._("input")(c),clearTimeout(g),a.aa=setTimeout(function(){a.aa=null},b)}}},ca:function(a,b){var c=F(this.w.href),d=F(b),e=F(a);this.x=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},C:function(){var a=this;a.da=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.M?a.da.apply(this.O,arguments):a.da.apply(this,arguments)}},Q:function(){this.da&&(Function.prototype.toString=this.da)},D:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.ca(b.x,c+""),a.apply(this,arguments)}};G(history,"pushState",j,d),G(history,"replaceState",j,d)}if(c.console&&"console"in P&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};u(["debug","info","warn","error","log"],function(a,b){M(console,b,k)})}},R:function(){for(var a;this.t.length;){a=this.t.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},S:function(){for(var a in this.q)this.p[a]=this.q[a]},F:function(){var a=this;u(this.r,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},G:function(a){var b=O.exec(a),c={},d=7;try{for(;d--;)c[N[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.k.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},J:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},A:function(){this.m||this.V.apply(this,arguments)},V:function(a,b){var c=this.X(a,b);this.$("handle",{stackInfo:a,options:b}),this.fa(a.name,a.message,a.url,a.lineno,c,b)},X:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(u(a.stack,function(b,e){var f=c.ga(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.u,0)}),this.j.user&&(a.user=this.j.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),a=this.pa(a),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||t(a[b]))&&delete a[b]}),q(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!t(a)&&(!q(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.ma()?void this.z("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function B(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&j(b))for(c=b.split(/\s+/),f=0;fc?M(a,b-1):d}function N(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?T:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function O(a,b){function c(a){return k(a)?a.map(function(a){return c(a)}):i(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!k(b)||k(b)&&0===b.length)return a;var d,e=w(b),f="********";try{d=JSON.parse(P(a))}catch(g){return a}return c(d)}var P=a(7),Q="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},R=3,S=51200,T=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isUndefined:g,isFunction:h,isPlainObject:i,isString:j,isArray:k,isEmptyObject:l,supportsErrorEvent:m,supportsFetch:n,supportsReferrerPolicy:o,supportsPromiseRejectionEvent:p,wrappedCallback:q,each:r,objectMerge:s,truncate:u,objectFrozen:t,hasKey:v,joinRegExp:w,urlencode:x,uuid4:z,htmlTreeAsString:A,htmlElementAsString:B,isSameException:E,isSameStacktrace:F,parseUrl:y,fill:G,safeJoin:H,serializeException:M,serializeKeysForMessage:N,sanitize:O}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{7:7}],6:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}var e=a(5),f={collectWindowErrors:!0,debug:!1},g="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},h=[].slice,i="?",j=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;f.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function k(a,b){var c=null;if(!b||f.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(h.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,g,h){var l=null,m=e.isErrorEvent(h)?h.error:h,n=e.isErrorEvent(a)?a.message:a;if(v)f.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&e.isError(m))l=f.computeStackTrace(m),k(l,!0);else{var p,r={url:b,line:c,column:g},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(j);p&&(s=p[1],n=p[2])}r.func=i,l={name:s,message:n,url:d(),stack:[r]},k(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=g.onerror,g.onerror=l,r=!0)}function n(){r&&(g.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,k.apply(null,[a,!1].concat(b))}function p(a,b){var c=h.call(arguments,1);if(v){if(u===a)return;o()}var d=f.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),f.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,e,f=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,g=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,h=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,j=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,k=/\((\S*)(?::(\d+))(?::(\d+))\)/,l=a.stack.split("\n"),m=[],n=(/^(.*) is undefined$/.exec(a.message),0),o=l.length;n eval")>-1;q&&(b=j.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==n||c[5]||"undefined"==typeof a.columnNumber||(m[0].column=a.columnNumber+1),e={url:c[3],func:c[1]||i,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}!e.func&&e.line&&(e.func=i),m.push(e)}return m.length?{name:a.name,message:a.message,url:d(),stack:m}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=i),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,g){for(var h,j,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==e&&o!==f.report){if(j={url:null,func:i,line:null,column:null},o.name?j.func=o.name:(h=k.exec(o.toString()))&&(j.func=h[1]),"undefined"==typeof j.func)try{j.func=h.input.substring(0,h.input.indexOf("{"))}catch(p){}m[""+o]?n=!0:m[""+o]=!0,l.push(j)}g&&l.splice(0,g);var q={name:a.name,message:a.message,url:d(),stack:l};return b(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),q}function e(b,e){var g=null;e=null==e?0:+e;try{if(g=a(b))return g}catch(h){if(f.debug)throw h}try{if(g=c(b,e+1))return g}catch(h){if(f.debug)throw h}return{name:b.name,message:b.message,url:d()}}return e.augmentStackTraceWithInitialElement=b,e.computeStackTraceFromStackProp=a,e}(),b.exports=f}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{5:5}],7:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}],8:[function(a,b,c){function d(a,b){var c=(65535&a)+(65535&b),d=(a>>16)+(b>>16)+(c>>16);return d<<16|65535&c}function e(a,b){return a<>>32-b}function f(a,b,c,f,g,h){return d(e(d(d(b,a),d(f,h)),g),c)}function g(a,b,c,d,e,g,h){return f(b&c|~b&d,a,b,e,g,h)}function h(a,b,c,d,e,g,h){return f(b&d|c&~d,a,b,e,g,h)}function i(a,b,c,d,e,g,h){return f(b^c^d,a,b,e,g,h)}function j(a,b,c,d,e,g,h){return f(c^(b|~d),a,b,e,g,h)}function k(a,b){a[b>>5]|=128<>>9<<4)+14]=b;var c,e,f,k,l,m=1732584193,n=-271733879,o=-1732584194,p=271733878;for(c=0;c>5]>>>b%32&255);return c}function m(a){var b,c=[];for(c[(a.length>>2)-1]=void 0,b=0;b>5]|=(255&a.charCodeAt(b/8))<16&&(e=k(e,8*a.length)),c=0;c<16;c+=1)f[c]=909522486^e[c],g[c]=1549556828^e[c];return d=k(f.concat(m(b)),512+8*b.length),l(k(g.concat(d),640))}function p(a){var b,c,d="0123456789abcdef",e="";for(c=0;c>>4&15)+d.charAt(15&b);return e}function q(a){return unescape(encodeURIComponent(a))}function r(a){return n(q(a))}function s(a){return p(r(a))}function t(a,b){return o(q(a),q(b))}function u(a,b){return p(t(a,b))}function v(a,b,c){return b?c?t(b,a):u(b,a):c?r(a):s(a)}b.exports=v},{}]},{},[4])(4)}); +/*! Raven.js 3.24.2 (d92b6a2) | github.com/getsentry/raven-js */ +!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.Raven=a()}}(function(){return function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};b[g][0].call(k.exports,function(a){var c=b[g][1][a];return e(c?c:a)},k,k.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;gthis.k.maxBreadcrumbs&&this.u.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.r.push([a,b]),this.n&&this.F(),this},setUserContext:function(a){return this.j.user=a,this},setExtraContext:function(a){return this.Z("extra",a),this},setTagsContext:function(a){return this.Z("tags",a),this},clearContext:function(){return this.j={},this},getContext:function(){return JSON.parse(h(this.j))},setEnvironment:function(a){return this.k.environment=a,this},setRelease:function(a){return this.k.release=a,this},setDataCallback:function(a){var b=this.k.dataCallback;return this.k.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.k.breadcrumbCallback;return this.k.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.k.shouldSendCallback;return this.k.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.k.transport=a,this},lastException:function(){return this.d},lastEventId:function(){return this.f},isSetup:function(){return!!this.a&&(!!this.g||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.z("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=P.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(Q){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.H;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.j.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.J(this.G(c)),h=Q.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(Q.head||Q.body).appendChild(h)}},L:function(){var a=this;this.m+=1,setTimeout(function(){a.m-=1})},$:function(a,b){var c,d;if(this.b){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),Q.createEvent?(c=Q.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=Q.createEventObject(),c.eventType=a);for(d in b)y(b,d)&&(c[d]=b[d]);if(Q.createEvent)Q.dispatchEvent(c);else try{Q.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},_:function(a){var b=this;return function(c){if(b.aa=null,b.v!==c){b.v=c;var d;try{d=C(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ba:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.aa;g||a._("input")(c),clearTimeout(g),a.aa=setTimeout(function(){a.aa=null},b)}}},ca:function(a,b){var c=F(this.w.href),d=F(b),e=F(a);this.x=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},C:function(){var a=this;a.da=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.M?a.da.apply(this.O,arguments):a.da.apply(this,arguments)}},Q:function(){this.da&&(Function.prototype.toString=this.da)},D:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.ca(b.x,c+""),a.apply(this,arguments)}};G(history,"pushState",j,d),G(history,"replaceState",j,d)}if(c.console&&"console"in P&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};u(["debug","info","warn","error","log"],function(a,b){M(console,b,k)})}},R:function(){for(var a;this.t.length;){a=this.t.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},S:function(){for(var a in this.q)this.p[a]=this.q[a]},F:function(){var a=this;u(this.r,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},G:function(a){var b=O.exec(a),c={},d=7;try{for(;d--;)c[N[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.k.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},J:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},A:function(){this.m||this.V.apply(this,arguments)},V:function(a,b){var c=this.X(a,b);this.$("handle",{stackInfo:a,options:b}),this.fa(a.name,a.message,a.url,a.lineno,c,b)},X:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(u(a.stack,function(b,e){var f=c.ga(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.u,0)}),this.j.user&&(a.user=this.j.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),a=this.pa(a),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||t(a[b]))&&delete a[b]}),q(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!t(a)&&(!q(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.ma()?void this.z("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function B(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&j(b))for(c=b.split(/\s+/),f=0;fc?M(a,b-1):d}function N(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?T:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function O(a,b){function c(a){return k(a)?a.map(function(a){return c(a)}):i(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!k(b)||k(b)&&0===b.length)return a;var d,e=w(b),f="********";try{d=JSON.parse(P(a))}catch(g){return a}return c(d)}var P=a(7),Q="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},R=3,S=51200,T=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isUndefined:g,isFunction:h,isPlainObject:i,isString:j,isArray:k,isEmptyObject:l,supportsErrorEvent:m,supportsFetch:n,supportsReferrerPolicy:o,supportsPromiseRejectionEvent:p,wrappedCallback:q,each:r,objectMerge:s,truncate:u,objectFrozen:t,hasKey:v,joinRegExp:w,urlencode:x,uuid4:z,htmlTreeAsString:A,htmlElementAsString:B,isSameException:E,isSameStacktrace:F,parseUrl:y,fill:G,safeJoin:H,serializeException:M,serializeKeysForMessage:N,sanitize:O}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{7:7}],6:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}var e=a(5),f={collectWindowErrors:!0,debug:!1},g="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},h=[].slice,i="?",j=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;f.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function k(a,b){var c=null;if(!b||f.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(h.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,g,h){var l=null,m=e.isErrorEvent(h)?h.error:h,n=e.isErrorEvent(a)?a.message:a;if(v)f.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&e.isError(m))l=f.computeStackTrace(m),k(l,!0);else{var p,r={url:b,line:c,column:g},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(j);p&&(s=p[1],n=p[2])}r.func=i,l={name:s,message:n,url:d(),stack:[r]},k(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=g.onerror,g.onerror=l,r=!0)}function n(){r&&(g.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,k.apply(null,[a,!1].concat(b))}function p(a,b){var c=h.call(arguments,1);if(v){if(u===a)return;o()}var d=f.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),f.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,e,f=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,g=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,h=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,j=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,k=/\((\S*)(?::(\d+))(?::(\d+))\)/,l=a.stack.split("\n"),m=[],n=(/^(.*) is undefined$/.exec(a.message),0),o=l.length;n eval")>-1;q&&(b=j.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==n||c[5]||"undefined"==typeof a.columnNumber||(m[0].column=a.columnNumber+1),e={url:c[3],func:c[1]||i,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}!e.func&&e.line&&(e.func=i),m.push(e)}return m.length?{name:a.name,message:a.message,url:d(),stack:m}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=i),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,g){for(var h,j,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==e&&o!==f.report){if(j={url:null,func:i,line:null,column:null},o.name?j.func=o.name:(h=k.exec(o.toString()))&&(j.func=h[1]),"undefined"==typeof j.func)try{j.func=h.input.substring(0,h.input.indexOf("{"))}catch(p){}m[""+o]?n=!0:m[""+o]=!0,l.push(j)}g&&l.splice(0,g);var q={name:a.name,message:a.message,url:d(),stack:l};return b(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),q}function e(b,e){var g=null;e=null==e?0:+e;try{if(g=a(b))return g}catch(h){if(f.debug)throw h}try{if(g=c(b,e+1))return g}catch(h){if(f.debug)throw h}return{name:b.name,message:b.message,url:d()}}return e.augmentStackTraceWithInitialElement=b,e.computeStackTraceFromStackProp=a,e}(),b.exports=f}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{5:5}],7:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}],8:[function(a,b,c){function d(a,b){var c=(65535&a)+(65535&b),d=(a>>16)+(b>>16)+(c>>16);return d<<16|65535&c}function e(a,b){return a<>>32-b}function f(a,b,c,f,g,h){return d(e(d(d(b,a),d(f,h)),g),c)}function g(a,b,c,d,e,g,h){return f(b&c|~b&d,a,b,e,g,h)}function h(a,b,c,d,e,g,h){return f(b&d|c&~d,a,b,e,g,h)}function i(a,b,c,d,e,g,h){return f(b^c^d,a,b,e,g,h)}function j(a,b,c,d,e,g,h){ +return f(c^(b|~d),a,b,e,g,h)}function k(a,b){a[b>>5]|=128<>>9<<4)+14]=b;var c,e,f,k,l,m=1732584193,n=-271733879,o=-1732584194,p=271733878;for(c=0;c>5]>>>b%32&255);return c}function m(a){var b,c=[];for(c[(a.length>>2)-1]=void 0,b=0;b>5]|=(255&a.charCodeAt(b/8))<16&&(e=k(e,8*a.length)),c=0;c<16;c+=1)f[c]=909522486^e[c],g[c]=1549556828^e[c];return d=k(f.concat(m(b)),512+8*b.length),l(k(g.concat(d),640))}function p(a){var b,c,d="0123456789abcdef",e="";for(c=0;c>>4&15)+d.charAt(15&b);return e}function q(a){return unescape(encodeURIComponent(a))}function r(a){return n(q(a))}function s(a){return p(r(a))}function t(a,b){return o(q(a),q(b))}function u(a,b){return p(t(a,b))}function v(a,b,c){return b?c?t(b,a):u(b,a):c?r(a):s(a)}b.exports=v},{}]},{},[4])(4)}); //# sourceMappingURL=raven.min.js.map \ No newline at end of file diff --git a/dist/raven.min.js.map b/dist/raven.min.js.map index 001355f3658f..6287adb26595 100644 --- a/dist/raven.min.js.map +++ b/dist/raven.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","RavenConfigError","message","name","prototype","constructor","2","utils","wrapMethod","console","level","callback","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","msg","safeJoin","data","logger","extra","Function","apply","5","3","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","sanitizeKeys","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isError","isObject","isPlainObject","isErrorEvent","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","sanitize","wrapConsoleMethod","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","config","dsn","options","_logDebug","globalOptions","key","value","setDSN","push","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","toString","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","substr","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","context","func","undefined","wrap","_before","wrapped","deep","_ignoreNextOnError","captureException","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","T","event","reason","unhandledPromiseRejection","B","_promiseRejectionHandler","bind","addEventListener","P","removeEventListener","ex","trimHeadFrames","error","captureMessage","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","U","currentOptions","exKeys","Object","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","addPlugin","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","setDataCallback","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","L","setTimeout","$","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","_","evtName","_keypressTimeout","target","category","ba","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","ca","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","C","_originalFunctionToString","Q","D","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","type","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","E","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","R","builtin","S","F","installer","concat","G","str","m","exec","allowSecretKey","J","port","A","V","stackInfo","_triggerEvent","_processException","lineno","X","frame","_normalizeFrame","in_app","ga","stackInfoUrl","normalized","filename","line","colno","column","function","fa","prefixedMessage","exception","values","culprit","ha","request","Referer","breadcrumbs","_trimBreadcrumbs","ia","urlProp","urlProps","ja","httpData","userAgent","User-Agent","referrer","y","_backoffDuration","_backoffStart","ma","na","current","last","oa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Y","baseData","project","platform","_getHttpData","serverName","server_name","_sanitizeData","forEach","random","_sendProcessedPayload","pa","ra","qa","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","sa","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","onerror","open","setRequestHeader","send","ta","hash","evaluated","z","Z","setUser","setReleaseContext","6","7","8","4","RavenConstructor","_Raven","noConflict","Client","what","supportsErrorEvent","ErrorEvent","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","wrappedCallback","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","sanitizeMask","safeInput","o_O","getLocationHref","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","charAt","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","string","raw"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file +{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","RavenConfigError","message","name","prototype","constructor","2","utils","wrapMethod","console","level","callback","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","msg","safeJoin","data","logger","extra","Function","apply","5","3","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","sanitizeKeys","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isError","isObject","isPlainObject","isErrorEvent","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","sanitize","wrapConsoleMethod","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","config","dsn","options","_logDebug","globalOptions","key","value","setDSN","push","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","toString","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","substr","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","context","func","undefined","wrap","_before","wrapped","deep","_ignoreNextOnError","captureException","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","T","event","reason","unhandledPromiseRejection","B","_promiseRejectionHandler","bind","addEventListener","P","removeEventListener","ex","trimHeadFrames","error","captureMessage","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","U","currentOptions","exKeys","Object","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","addPlugin","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","setDataCallback","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","L","setTimeout","$","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","_","evtName","_keypressTimeout","target","category","ba","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","ca","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","C","_originalFunctionToString","Q","D","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","type","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","E","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","R","builtin","S","F","installer","concat","G","str","m","exec","allowSecretKey","J","port","A","V","stackInfo","_triggerEvent","_processException","lineno","X","frame","_normalizeFrame","in_app","ga","stackInfoUrl","normalized","filename","line","colno","column","function","fa","prefixedMessage","exception","values","culprit","ha","request","Referer","breadcrumbs","_trimBreadcrumbs","ia","urlProp","urlProps","ja","httpData","userAgent","User-Agent","referrer","y","_backoffDuration","_backoffStart","ma","na","current","last","oa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Y","baseData","project","platform","_getHttpData","serverName","server_name","_sanitizeData","forEach","random","_sendProcessedPayload","pa","ra","qa","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","sa","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","onerror","open","setRequestHeader","send","ta","hash","evaluated","z","Z","setUser","setReleaseContext","6","7","8","4","RavenConstructor","_Raven","noConflict","Client","what","supportsErrorEvent","ErrorEvent","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","wrappedCallback","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","sanitizeMask","safeInput","o_O","getLocationHref","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","charAt","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","string","raw"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file diff --git a/dist/sri.json b/dist/sri.json index dc8b5006f0c4..fb3e2642417f 100644 --- a/dist/sri.json +++ b/dist/sri.json @@ -1,20 +1,20 @@ { "@dist/raven.js": { "hashes": { - "sha256": "/ONdAalAceMcNzn9xPsmeCnrYM52+JxI9taRSMwL6Bk=", - "sha512": "WMqEoQ1FfK46hKApMRtpKlvPKecuWGMCj7DRPglDKip7HXRv4xt1DiKSBPn0msNN1K4uI67lesz5wdIw5lE1AQ==" + "sha256": "986P+XPpcUAsCgHIffZrLXOM3qF8hwwRAf8Pbj3+l0U=", + "sha512": "B1SSEgalruqKHRjLG3hl+g55bgm5ucuCRg8oBCyB0DcIXhNlsHxeG3XwmDn93lAy9yLIMAW3hXKehkZj+h+8HQ==" }, "type": null, - "integrity": "sha256-/ONdAalAceMcNzn9xPsmeCnrYM52+JxI9taRSMwL6Bk= sha512-WMqEoQ1FfK46hKApMRtpKlvPKecuWGMCj7DRPglDKip7HXRv4xt1DiKSBPn0msNN1K4uI67lesz5wdIw5lE1AQ==", + "integrity": "sha256-986P+XPpcUAsCgHIffZrLXOM3qF8hwwRAf8Pbj3+l0U= sha512-B1SSEgalruqKHRjLG3hl+g55bgm5ucuCRg8oBCyB0DcIXhNlsHxeG3XwmDn93lAy9yLIMAW3hXKehkZj+h+8HQ==", "path": "dist/raven.js" }, "@dist/raven.min.js": { "hashes": { - "sha256": "C0v6xCW0XKv2zJSWSiNl920zYMsEWWLUvysjc48qp88=", - "sha512": "tdc7P+N+tY7wHWTALVNM1bTI0cdpgFckHXhydV0dWE4q1S3w9EWOJJYKF2Jy9J4srTruk3p/QJtH+/PpsCUsjw==" + "sha256": "iSi2Hd/fgRrUbyfELh7lQ0S4iqkOSNmEBMeb+rED1gI=", + "sha512": "VLhKf10cRS55TuheDYJRq3t5EU86sjfnu3ZEbIjGgo6AlZXJIZfvTSbOYTFliA9QABBfl057rAEyptvDPYuOMA==" }, "type": null, - "integrity": "sha256-C0v6xCW0XKv2zJSWSiNl920zYMsEWWLUvysjc48qp88= sha512-tdc7P+N+tY7wHWTALVNM1bTI0cdpgFckHXhydV0dWE4q1S3w9EWOJJYKF2Jy9J4srTruk3p/QJtH+/PpsCUsjw==", + "integrity": "sha256-iSi2Hd/fgRrUbyfELh7lQ0S4iqkOSNmEBMeb+rED1gI= sha512-VLhKf10cRS55TuheDYJRq3t5EU86sjfnu3ZEbIjGgo6AlZXJIZfvTSbOYTFliA9QABBfl057rAEyptvDPYuOMA==", "path": "dist/raven.min.js" } } \ No newline at end of file diff --git a/docs/sentry-doc-config.json b/docs/sentry-doc-config.json index 69d341e0fafc..d711fcc512e0 100644 --- a/docs/sentry-doc-config.json +++ b/docs/sentry-doc-config.json @@ -66,6 +66,6 @@ } }, "vars": { - "RAVEN_VERSION": "3.24.1" + "RAVEN_VERSION": "3.24.2" } } diff --git a/package.json b/package.json index 20d58c63d85d..ea966fc5328b 100644 --- a/package.json +++ b/package.json @@ -9,7 +9,7 @@ "raven", "sentry" ], - "version": "3.24.1", + "version": "3.24.2", "repository": "git://github.com/getsentry/raven-js.git", "license": "BSD-2-Clause", "homepage": "https://github.com/getsentry/raven-js", diff --git a/src/raven.js b/src/raven.js index b49de1211aa0..b5d569470094 100644 --- a/src/raven.js +++ b/src/raven.js @@ -137,7 +137,7 @@ Raven.prototype = { // webpack (using a build step causes webpack #1617). Grunt verifies that // this value matches package.json during build. // See: https://github.com/getsentry/raven-js/issues/465 - VERSION: '3.24.1', + VERSION: '3.24.2', debug: false, diff --git a/test/raven.test.js b/test/raven.test.js index 903fc88306d5..a0ac4caa1d1e 100644 --- a/test/raven.test.js +++ b/test/raven.test.js @@ -1368,7 +1368,7 @@ describe('globals', function() { extra: {'session:duration': 100} }); assert.deepEqual(opts.auth, { - sentry_client: 'raven-js/3.24.1', + sentry_client: 'raven-js/3.24.2', sentry_key: 'abc', sentry_version: '7' }); @@ -1415,7 +1415,7 @@ describe('globals', function() { extra: {'session:duration': 100} }); assert.deepEqual(opts.auth, { - sentry_client: 'raven-js/3.24.1', + sentry_client: 'raven-js/3.24.2', sentry_key: 'abc', sentry_secret: 'def', sentry_version: '7' From 258c024ff857f48a0d85d814ed1288264d4f7961 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kamil=20Og=C3=B3rek?= Date: Wed, 25 Apr 2018 12:52:21 +0200 Subject: [PATCH 43/75] feat: Handle DOMError and DOMException gracefully (#1310) --- src/raven.js | 22 +++++++++++++++++++++- src/utils.js | 34 ++++++++++++++++++++++++++++++++-- test/raven.test.js | 25 +++++++++++++++++++++++++ test/utils.test.js | 22 ++++++++++++++++++++++ 4 files changed, 100 insertions(+), 3 deletions(-) diff --git a/src/raven.js b/src/raven.js index b5d569470094..20c175336a30 100644 --- a/src/raven.js +++ b/src/raven.js @@ -6,10 +6,12 @@ var md5 = require('../vendor/md5/md5'); var RavenConfigError = require('./configError'); var utils = require('./utils'); +var isErrorEvent = utils.isErrorEvent; +var isDOMError = utils.isDOMError; +var isDOMException = utils.isDOMException; var isError = utils.isError; var isObject = utils.isObject; var isPlainObject = utils.isPlainObject; -var isErrorEvent = utils.isErrorEvent; var isUndefined = utils.isUndefined; var isFunction = utils.isFunction; var isString = utils.isString; @@ -469,6 +471,23 @@ Raven.prototype = { if (isErrorEvent(ex) && ex.error) { // If it is an ErrorEvent with `error` property, extract it to get actual Error ex = ex.error; + } else if (isDOMError(ex) || isDOMException(ex)) { + // If it is a DOMError or DOMException (which are legacy APIs, but still supported in some browsers) + // then we just extract the name and message, as they don't provide anything else + // https://developer.mozilla.org/en-US/docs/Web/API/DOMError + // https://developer.mozilla.org/en-US/docs/Web/API/DOMException + var name = ex.name || (isDOMError(ex) ? 'DOMError' : 'DOMException'); + var message = ex.message ? name + ': ' + ex.message : name; + + return this.captureMessage( + message, + objectMerge(options, { + // neither DOMError or DOMException provide stack trace and we most likely wont get it this way as well + // but it's barely any overhead so we may at least try + stacktrace: true, + trimHeadFrames: options.trimHeadFrames + 1 + }) + ); } else if (isError(ex)) { // we have a real Error object ex = ex; @@ -480,6 +499,7 @@ Raven.prototype = { ex = new Error(options.message); } else { // If none of previous checks were valid, then it means that + // it's not a DOMError/DOMException // it's not a plain Object // it's not a valid ErrorEvent (one with an error property) // it's not an Error diff --git a/src/utils.js b/src/utils.js index a7f4b8d6eb15..e6ad496c737b 100644 --- a/src/utils.js +++ b/src/utils.js @@ -12,7 +12,7 @@ function isObject(what) { // Yanked from https://git.io/vS8DV re-used under CC0 // with some tiny modifications function isError(value) { - switch ({}.toString.call(value)) { + switch (Object.prototype.toString.call(value)) { case '[object Error]': return true; case '[object Exception]': @@ -25,7 +25,15 @@ function isError(value) { } function isErrorEvent(value) { - return supportsErrorEvent() && {}.toString.call(value) === '[object ErrorEvent]'; + return Object.prototype.toString.call(value) === '[object ErrorEvent]'; +} + +function isDOMError(value) { + return Object.prototype.toString.call(value) === '[object DOMError]'; +} + +function isDOMException(value) { + return Object.prototype.toString.call(value) === '[object DOMException]'; } function isUndefined(what) { @@ -68,6 +76,24 @@ function supportsErrorEvent() { } } +function supportsDOMError() { + try { + new DOMError(''); // eslint-disable-line no-new + return true; + } catch (e) { + return false; + } +} + +function supportsDOMException() { + try { + new DOMException(''); // eslint-disable-line no-new + return true; + } catch (e) { + return false; + } +} + function supportsFetch() { if (!('fetch' in _window)) return false; @@ -583,6 +609,8 @@ module.exports = { isObject: isObject, isError: isError, isErrorEvent: isErrorEvent, + isDOMError: isDOMError, + isDOMException: isDOMException, isUndefined: isUndefined, isFunction: isFunction, isPlainObject: isPlainObject, @@ -590,6 +618,8 @@ module.exports = { isArray: isArray, isEmptyObject: isEmptyObject, supportsErrorEvent: supportsErrorEvent, + supportsDOMError: supportsDOMError, + supportsDOMException: supportsDOMException, supportsFetch: supportsFetch, supportsReferrerPolicy: supportsReferrerPolicy, supportsPromiseRejectionEvent: supportsPromiseRejectionEvent, diff --git a/test/raven.test.js b/test/raven.test.js index a0ac4caa1d1e..7047cc85a1d0 100644 --- a/test/raven.test.js +++ b/test/raven.test.js @@ -23,6 +23,8 @@ _Raven.prototype._getUuid = function() { var utils = require('../src/utils'); var joinRegExp = utils.joinRegExp; var supportsErrorEvent = utils.supportsErrorEvent; +var supportsDOMError = utils.supportsDOMError; +var supportsDOMException = utils.supportsDOMException; var supportsFetch = utils.supportsFetch; var supportsReferrerPolicy = utils.supportsReferrerPolicy; var supportsPromiseRejectionEvent = utils.supportsPromiseRejectionEvent; @@ -3124,6 +3126,29 @@ describe('Raven (public API)', function() { }); } + if (supportsDOMError()) { + it('should just pull name and message from DOMError and call captureMessage', function() { + var error = new DOMError('pickleRick', 'Morty'); + this.sinon.stub(Raven, 'isSetup').returns(true); + this.sinon.spy(Raven, 'captureMessage'); + Raven.captureException(error); + var call = Raven.captureMessage.getCall(0).args[0]; + assert.equal(call, 'pickleRick: Morty'); + }); + } + + if (supportsDOMException()) { + it('should just pull name and message from DOMException and call captureMessage', function() { + // Yes, in DOMException order of arguments is reversed... + var error = new DOMException('Morty', 'pickleRick'); + this.sinon.stub(Raven, 'isSetup').returns(true); + this.sinon.spy(Raven, 'captureMessage'); + Raven.captureException(error); + var call = Raven.captureMessage.getCall(0).args[0]; + assert.equal(call, 'pickleRick: Morty'); + }); + } + it("should treat Schrodinger's Error in the same way as regular Error", function() { // Schrodinger's Error is an object that is and is not an Error at the same time // Like... error, but not really. diff --git a/test/utils.test.js b/test/utils.test.js index c914b57ebd20..0815970156a3 100644 --- a/test/utils.test.js +++ b/test/utils.test.js @@ -12,9 +12,13 @@ var isString = utils.isString; var isArray = utils.isArray; var isObject = utils.isObject; var isEmptyObject = utils.isEmptyObject; +var isDOMError = utils.isDOMError; +var isDOMException = utils.isDOMException; var isError = utils.isError; var isErrorEvent = utils.isErrorEvent; var supportsErrorEvent = utils.supportsErrorEvent; +var supportsDOMError = utils.supportsDOMError; +var supportsDOMException = utils.supportsDOMException; var wrappedCallback = utils.wrappedCallback; var joinRegExp = utils.joinRegExp; var objectMerge = utils.objectMerge; @@ -113,6 +117,24 @@ describe('utils', function() { }); } + if (supportsDOMError()) { + describe('isDOMError', function() { + it('should work as advertised', function() { + assert.isFalse(isDOMError(new Error())); + assert.isTrue(isDOMError(new DOMError(''))); + }); + }); + } + + if (supportsDOMException()) { + describe('isDOMException', function() { + it('should work as advertised', function() { + assert.isFalse(isDOMException(new Error())); + assert.isTrue(isDOMException(new DOMException(''))); + }); + }); + } + describe('isError', function() { function testErrorFromDifferentContext(createError) { var iframe = document.createElement('iframe'); From 9ec1dd46cc18964c3fefc640ed5ccf32ca1b0951 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kamil=20Og=C3=B3rek?= Date: Wed, 9 May 2018 11:23:45 +0200 Subject: [PATCH 44/75] build: include plugins-combination in dist and clear some old grunt configs (#1313) * build: include plugins-combination in dist and clear some old grunt configs * build: Rebuild all plugins with latest raven version --- Gruntfile.js | 40 +- .../raven.js | 6190 ++++++++++------- .../raven.min.js | 5 +- .../raven.min.js.map | 2 +- dist/angular,console,ember,require/raven.js | 6097 +++++++++------- .../raven.min.js | 5 +- .../raven.min.js.map | 2 +- dist/angular,console,ember,vue/raven.js | 6152 +++++++++------- dist/angular,console,ember,vue/raven.min.js | 5 +- .../raven.min.js.map | 2 +- dist/angular,console,ember/raven.js | 6073 +++++++++------- dist/angular,console,ember/raven.min.js | 5 +- dist/angular,console,ember/raven.min.js.map | 2 +- dist/angular,console,require,vue/raven.js | 6113 +++++++++------- dist/angular,console,require,vue/raven.min.js | 5 +- .../raven.min.js.map | 2 +- dist/angular,console,require/raven.js | 6036 +++++++++------- dist/angular,console,require/raven.min.js | 5 +- dist/angular,console,require/raven.min.js.map | 2 +- dist/angular,console,vue/raven.js | 6111 +++++++++------- dist/angular,console,vue/raven.min.js | 5 +- dist/angular,console,vue/raven.min.js.map | 2 +- dist/angular,console/raven.js | 6028 +++++++++------- dist/angular,console/raven.min.js | 5 +- dist/angular,console/raven.min.js.map | 2 +- dist/angular,ember,require,vue/raven.js | 6125 +++++++++------- dist/angular,ember,require,vue/raven.min.js | 5 +- .../raven.min.js.map | 2 +- dist/angular,ember,require/raven.js | 6050 +++++++++------- dist/angular,ember,require/raven.min.js | 5 +- dist/angular,ember,require/raven.min.js.map | 2 +- dist/angular,ember,vue/raven.js | 6123 +++++++++------- dist/angular,ember,vue/raven.min.js | 5 +- dist/angular,ember,vue/raven.min.js.map | 2 +- dist/angular,ember/raven.js | 6040 +++++++++------- dist/angular,ember/raven.min.js | 5 +- dist/angular,ember/raven.min.js.map | 2 +- dist/angular,require,vue/raven.js | 6054 +++++++++------- dist/angular,require,vue/raven.min.js | 5 +- dist/angular,require,vue/raven.min.js.map | 2 +- dist/angular,require/raven.js | 6017 +++++++++------- dist/angular,require/raven.min.js | 5 +- dist/angular,require/raven.min.js.map | 2 +- dist/angular,vue/raven.js | 6042 +++++++++------- dist/angular,vue/raven.min.js | 5 +- dist/angular,vue/raven.min.js.map | 2 +- dist/angular/raven.js | 5989 +++++++++------- dist/angular/raven.min.js | 5 +- dist/angular/raven.min.js.map | 2 +- dist/console,ember,require,vue/raven.js | 6069 +++++++++------- dist/console,ember,require,vue/raven.min.js | 5 +- .../raven.min.js.map | 2 +- dist/console,ember,require/raven.js | 6036 +++++++++------- dist/console,ember,require/raven.min.js | 5 +- dist/console,ember,require/raven.min.js.map | 2 +- dist/console,ember,vue/raven.js | 6037 +++++++++------- dist/console,ember,vue/raven.min.js | 5 +- dist/console,ember,vue/raven.min.js.map | 2 +- dist/console,ember/raven.js | 6012 +++++++++------- dist/console,ember/raven.min.js | 5 +- dist/console,ember/raven.min.js.map | 2 +- dist/console,require,vue/raven.js | 6058 +++++++++------- dist/console,require,vue/raven.min.js | 5 +- dist/console,require,vue/raven.min.js.map | 2 +- dist/console,require/raven.js | 5977 +++++++++------- dist/console,require/raven.min.js | 5 +- dist/console,require/raven.min.js.map | 2 +- dist/console,vue/raven.js | 5988 +++++++++------- dist/console,vue/raven.min.js | 5 +- dist/console,vue/raven.min.js.map | 2 +- dist/console/raven.js | 5945 +++++++++------- dist/console/raven.min.js | 5 +- dist/console/raven.min.js.map | 2 +- dist/ember,require,vue/raven.js | 6064 +++++++++------- dist/ember,require,vue/raven.min.js | 5 +- dist/ember,require,vue/raven.min.js.map | 2 +- dist/ember,require/raven.js | 6017 +++++++++------- dist/ember,require/raven.min.js | 5 +- dist/ember,require/raven.min.js.map | 2 +- dist/ember,vue/raven.js | 6020 +++++++++------- dist/ember,vue/raven.min.js | 5 +- dist/ember,vue/raven.min.js.map | 2 +- dist/ember/raven.js | 5977 +++++++++------- dist/ember/raven.min.js | 5 +- dist/ember/raven.min.js.map | 2 +- dist/plugins/angular.js | 785 --- dist/plugins/angular.min.js | 3 - dist/plugins/angular.min.js.map | 1 - dist/plugins/console.js | 787 --- dist/plugins/console.min.js | 3 - dist/plugins/console.min.js.map | 1 - dist/plugins/ember.js | 46 - dist/plugins/ember.min.js | 3 - dist/plugins/ember.min.js.map | 1 - dist/plugins/require.js | 30 - dist/plugins/require.min.js | 3 - dist/plugins/require.min.js.map | 1 - dist/plugins/vue.js | 63 - dist/plugins/vue.min.js | 3 - dist/plugins/vue.min.js.map | 1 - dist/raven.js | 2 +- dist/raven.min.js | 2 +- dist/require,vue/raven.js | 5993 +++++++++------- dist/require,vue/raven.min.js | 5 +- dist/require,vue/raven.min.js.map | 2 +- dist/require/raven.js | 5952 +++++++++------- dist/require/raven.min.js | 5 +- dist/require/raven.min.js.map | 2 +- dist/sri.json | 578 +- dist/vue/raven.js | 5973 +++++++++------- dist/vue/raven.min.js | 5 +- dist/vue/raven.min.js.map | 2 +- package.json | 5 +- 113 files changed, 106352 insertions(+), 83581 deletions(-) delete mode 100644 dist/plugins/angular.js delete mode 100644 dist/plugins/angular.min.js delete mode 100644 dist/plugins/angular.min.js.map delete mode 100644 dist/plugins/console.js delete mode 100644 dist/plugins/console.min.js delete mode 100644 dist/plugins/console.min.js.map delete mode 100644 dist/plugins/ember.js delete mode 100644 dist/plugins/ember.min.js delete mode 100644 dist/plugins/ember.min.js.map delete mode 100644 dist/plugins/require.js delete mode 100644 dist/plugins/require.min.js delete mode 100644 dist/plugins/require.min.js.map delete mode 100644 dist/plugins/vue.js delete mode 100644 dist/plugins/vue.min.js delete mode 100644 dist/plugins/vue.min.js.map diff --git a/Gruntfile.js b/Gruntfile.js index f0fa6b474353..8e94445e7634 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -24,8 +24,12 @@ module.exports = function(grunt) { // custom browserify transformer to re-write plugins to // self-register with Raven via addPlugin function AddPluginBrowserifyTransformer() { - var noop = function (chunk, _, cb) { cb(null, chunk); }; - var append = function (cb) { cb(null, "\nrequire('../src/singleton').addPlugin(module.exports);"); }; + var noop = function(chunk, _, cb) { + cb(null, chunk); + }; + var append = function(cb) { + cb(null, "\nrequire('../src/singleton').addPlugin(module.exports);"); + }; return function(file) { return through(noop, /plugins/.test(file) ? append : undefined); }; @@ -222,25 +226,6 @@ module.exports = function(grunt) { } }, - connect: { - test: { - options: { - port: 8000, - debug: true, - keepalive: true - } - }, - - docs: { - options: { - port: 8000, - debug: true, - base: 'docs/_build/html', - keepalive: true - } - } - }, - copy: { dist: { expand: true, @@ -306,7 +291,6 @@ module.exports = function(grunt) { // Grunt contrib tasks grunt.loadNpmTasks('grunt-contrib-uglify'); grunt.loadNpmTasks('grunt-contrib-clean'); - grunt.loadNpmTasks('grunt-contrib-connect'); grunt.loadNpmTasks('grunt-contrib-copy'); // 3rd party Grunt tasks @@ -326,6 +310,7 @@ module.exports = function(grunt) { '_prep', 'browserify:plugins-combined' ]); + grunt.registerTask('build', ['build.core', 'build.plugins-combined']); grunt.registerTask('build.test', ['_prep', 'browserify.core', 'browserify:test']); grunt.registerTask('build.core', ['browserify.core', 'uglify', 'sri:dist']); grunt.registerTask('build.plugins-combined', [ @@ -334,14 +319,7 @@ module.exports = function(grunt) { 'sri:dist', 'sri:build' ]); - grunt.registerTask('build', ['build.plugins-combined']); - grunt.registerTask('dist', ['build.core', 'copy:dist']); - + grunt.registerTask('dist', ['build', 'copy:dist']); + grunt.registerTask('publish', ['build', 's3']); grunt.registerTask('test:ci', ['config:ci', 'build.test']); - - // Webserver tasks - grunt.registerTask('run:test', ['build.test', 'connect:test']); - grunt.registerTask('run:docs', ['connect:docs']); - - grunt.registerTask('publish', ['build.plugins-combined', 's3']); }; diff --git a/dist/angular,console,ember,require,vue/raven.js b/dist/angular,console,ember,require,vue/raven.js index 70c0f7a1baab..144c31914d59 100644 --- a/dist/angular,console,ember,require,vue/raven.js +++ b/dist/angular,console,ember,require,vue/raven.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.22.2 (1b6187b) | github.com/getsentry/raven-js */ +/*! Raven.js 3.24.2 (540f32b) | github.com/getsentry/raven-js */ /* * Includes TraceKit @@ -10,3331 +10,4107 @@ * */ -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : - typeof define === 'function' && define.amd ? define(factory) : - (global.Raven = factory()); -}(this, (function () { 'use strict'; +(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.Raven = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o' : 'anonymous component') + + (vm._isVue && vm.$options.__file ? ' at ' + vm.$options.__file : '') + ); } -function supportsFetch$1() { - if (!('fetch' in _window$3)) return false; +function vuePlugin(Raven, Vue) { + Vue = Vue || window.Vue; - try { - new Headers(); // eslint-disable-line no-new + // quit if Vue isn't on the page + if (!Vue || !Vue.config) return; - new Request(''); // eslint-disable-line no-new + var _oldOnError = Vue.config.errorHandler; + Vue.config.errorHandler = function VueErrorHandler(error, vm, info) { + var metaData = {}; - new Response(); // eslint-disable-line no-new + // vm and lifecycleHook are not always available + if (Object.prototype.toString.call(vm) === '[object Object]') { + metaData.componentName = formatComponentName(vm); + metaData.propsData = vm.$options.propsData; + } - return true; - } catch (e) { - return false; - } -} + if (typeof info !== 'undefined') { + metaData.lifecycleHook = info; + } -function wrappedCallback(callback) { - function dataCallback(data, original) { - var normalizedData = callback(data) || data; + Raven.captureException(error, { + extra: metaData + }); - if (original) { - return original(normalizedData) || normalizedData; + if (typeof _oldOnError === 'function') { + _oldOnError.call(this, error, vm, info); } + }; +} - return normalizedData; - } +module.exports = vuePlugin; - return dataCallback; +_dereq_(9).addPlugin(module.exports); +},{"9":9}],6:[function(_dereq_,module,exports){ +function RavenConfigError(message) { + this.name = 'RavenConfigError'; + this.message = message; } +RavenConfigError.prototype = new Error(); +RavenConfigError.prototype.constructor = RavenConfigError; -function each$1(obj, callback) { - var i, j; +module.exports = RavenConfigError; - if (isUndefined$1(obj.length)) { - for (i in obj) { - if (hasKey$1(obj, i)) { - callback.call(null, i, obj[i]); - } - } - } else { - j = obj.length; +},{}],7:[function(_dereq_,module,exports){ +var utils = _dereq_(10); - if (j) { - for (i = 0; i < j; i++) { - callback.call(null, i, obj[i]); - } - } - } -} +var wrapMethod = function(console, level, callback) { + var originalConsoleLevel = console[level]; + var originalConsole = console; -function objectMerge$1(obj1, obj2) { - if (!obj2) { - return obj1; + if (!(level in console)) { + return; } - each$1(obj2, function (key, value) { - obj1[key] = value; - }); - return obj1; -} -/** - * This function is only used for react-native. - * react-native freezes object that have already been sent over the - * js bridge. We need this function in order to check if the object is frozen. - * So it's ok that objectFrozen returns false if Object.isFrozen is not - * supported because it's not relevant for other "platforms". See related issue: - * https://github.com/getsentry/react-native-sentry/issues/57 - */ - + var sentryLevel = level === 'warn' ? 'warning' : level; -function objectFrozen$1(obj) { - if (!Object.isFrozen) { - return false; - } + console[level] = function() { + var args = [].slice.call(arguments); - return Object.isFrozen(obj); -} + var msg = utils.safeJoin(args, ' '); + var data = {level: sentryLevel, logger: 'console', extra: {arguments: args}}; -function truncate$1(str, max) { - return !max || str.length <= max ? str : str.substr(0, max) + "\u2026"; -} -/** - * hasKey, a better form of hasOwnProperty - * Example: hasKey(MainHostObject, property) === true/false - * - * @param {Object} host object to check property - * @param {string} key to check - */ + if (level === 'assert') { + if (args[0] === false) { + // Default browsers message + msg = + 'Assertion failed: ' + (utils.safeJoin(args.slice(1), ' ') || 'console.assert'); + data.extra.arguments = args.slice(1); + callback && callback(msg, data); + } + } else { + callback && callback(msg, data); + } + // this fails for some browsers. :( + if (originalConsoleLevel) { + // IE9 doesn't allow calling apply on console functions directly + // See: https://stackoverflow.com/questions/5472938/does-ie9-support-console-log-and-is-it-a-real-function#answer-5473193 + Function.prototype.apply.call(originalConsoleLevel, originalConsole, args); + } + }; +}; -function hasKey$1(object, key) { - return Object.prototype.hasOwnProperty.call(object, key); -} +module.exports = { + wrapMethod: wrapMethod +}; -function joinRegExp$1(patterns) { - // Combine an array of regular expressions and strings into one large regexp - // Be mad. - var sources = [], - i = 0, - len = patterns.length, - pattern; +},{"10":10}],8:[function(_dereq_,module,exports){ +(function (global){ +/*global XDomainRequest:false */ - for (; i < len; i++) { - pattern = patterns[i]; - - if (isString$1(pattern)) { - // If it's a string, we need to escape it - // Taken from: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions - sources.push(pattern.replace(/([.*+?^=!:${}()|\[\]\/\\])/g, '\\$1')); - } else if (pattern && pattern.source) { - // If it's a regexp already, we want to extract the source - sources.push(pattern.source); - } // Intentionally skip other cases - - } - - return new RegExp(sources.join('|'), 'i'); -} - -function urlencode$1(o) { - var pairs = []; - each$1(o, function (key, value) { - pairs.push(encodeURIComponent(key) + '=' + encodeURIComponent(value)); - }); - return pairs.join('&'); -} // borrowed from https://tools.ietf.org/html/rfc3986#appendix-B -// intentionally using regex and not href parsing trick because React Native and other -// environments where DOM might not be available +var TraceKit = _dereq_(11); +var stringify = _dereq_(12); +var md5 = _dereq_(13); +var RavenConfigError = _dereq_(6); +var utils = _dereq_(10); +var isError = utils.isError; +var isObject = utils.isObject; +var isPlainObject = utils.isPlainObject; +var isErrorEvent = utils.isErrorEvent; +var isUndefined = utils.isUndefined; +var isFunction = utils.isFunction; +var isString = utils.isString; +var isArray = utils.isArray; +var isEmptyObject = utils.isEmptyObject; +var each = utils.each; +var objectMerge = utils.objectMerge; +var truncate = utils.truncate; +var objectFrozen = utils.objectFrozen; +var hasKey = utils.hasKey; +var joinRegExp = utils.joinRegExp; +var urlencode = utils.urlencode; +var uuid4 = utils.uuid4; +var htmlTreeAsString = utils.htmlTreeAsString; +var isSameException = utils.isSameException; +var isSameStacktrace = utils.isSameStacktrace; +var parseUrl = utils.parseUrl; +var fill = utils.fill; +var supportsFetch = utils.supportsFetch; +var supportsReferrerPolicy = utils.supportsReferrerPolicy; +var serializeKeysForMessage = utils.serializeKeysForMessage; +var serializeException = utils.serializeException; +var sanitize = utils.sanitize; -function parseUrl$1(url) { - if (typeof url !== 'string') return {}; - var match = url.match(/^(([^:\/?#]+):)?(\/\/([^\/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?$/); // coerce to undefined values to empty string so we don't get 'undefined' +var wrapConsoleMethod = _dereq_(7).wrapMethod; - var query = match[6] || ''; - var fragment = match[8] || ''; - return { - protocol: match[2], - host: match[4], - path: match[5], - relative: match[5] + query + fragment // everything minus origin +var dsnKeys = 'source protocol user pass host port path'.split(' '), + dsnPattern = /^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/; - }; +function now() { + return +new Date(); } -function uuid4$1() { - var crypto = _window$3.crypto || _window$3.msCrypto; - - if (!isUndefined$1(crypto) && crypto.getRandomValues) { - // Use window.crypto API if available - // eslint-disable-next-line no-undef - var arr = new Uint16Array(8); - crypto.getRandomValues(arr); // set 4 in byte 7 - - arr[3] = arr[3] & 0xfff | 0x4000; // set 2 most significant bits of byte 9 to '10' - - arr[4] = arr[4] & 0x3fff | 0x8000; - - var pad = function pad(num) { - var v = num.toString(16); +// This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) +var _window = + typeof window !== 'undefined' + ? window + : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; +var _document = _window.document; +var _navigator = _window.navigator; - while (v.length < 4) { - v = '0' + v; +function keepOriginalCallback(original, callback) { + return isFunction(callback) + ? function(data) { + return callback(data, original); } + : callback; +} - return v; - }; +// First, check for JSON support +// If there is no JSON, we no-op the core features of Raven +// since JSON is required to encode the payload +function Raven() { + this._hasJSON = !!(typeof JSON === 'object' && JSON.stringify); + // Raven can run in contexts where there's no document (react-native) + this._hasDocument = !isUndefined(_document); + this._hasNavigator = !isUndefined(_navigator); + this._lastCapturedException = null; + this._lastData = null; + this._lastEventId = null; + this._globalServer = null; + this._globalKey = null; + this._globalProject = null; + this._globalContext = {}; + this._globalOptions = { + // SENTRY_RELEASE can be injected by https://github.com/getsentry/sentry-webpack-plugin + release: _window.SENTRY_RELEASE && _window.SENTRY_RELEASE.id, + logger: 'javascript', + ignoreErrors: [], + ignoreUrls: [], + whitelistUrls: [], + includePaths: [], + headers: null, + collectWindowErrors: true, + captureUnhandledRejections: true, + maxMessageLength: 0, + // By default, truncates URL values to 250 chars + maxUrlLength: 250, + stackTraceLimit: 50, + autoBreadcrumbs: true, + instrument: true, + sampleRate: 1, + sanitizeKeys: [] + }; + this._fetchDefaults = { + method: 'POST', + keepalive: true, + // Despite all stars in the sky saying that Edge supports old draft syntax, aka 'never', 'always', 'origin' and 'default + // https://caniuse.com/#feat=referrer-policy + // It doesn't. And it throw exception instead of ignoring this parameter... + // REF: https://github.com/getsentry/raven-js/issues/1233 + referrerPolicy: supportsReferrerPolicy() ? 'origin' : '' + }; + this._ignoreOnError = 0; + this._isRavenInstalled = false; + this._originalErrorStackTraceLimit = Error.stackTraceLimit; + // capture references to window.console *and* all its methods first + // before the console plugin has a chance to monkey patch + this._originalConsole = _window.console || {}; + this._originalConsoleMethods = {}; + this._plugins = []; + this._startTime = now(); + this._wrappedBuiltIns = []; + this._breadcrumbs = []; + this._lastCapturedEvent = null; + this._keypressTimeout; + this._location = _window.location; + this._lastHref = this._location && this._location.href; + this._resetBackoff(); - return pad(arr[0]) + pad(arr[1]) + pad(arr[2]) + pad(arr[3]) + pad(arr[4]) + pad(arr[5]) + pad(arr[6]) + pad(arr[7]); - } else { - // http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/2117523#2117523 - return 'xxxxxxxxxxxx4xxxyxxxxxxxxxxxxxxx'.replace(/[xy]/g, function (c) { - var r = Math.random() * 16 | 0, - v = c === 'x' ? r : r & 0x3 | 0x8; - return v.toString(16); - }); + // eslint-disable-next-line guard-for-in + for (var method in this._originalConsole) { + this._originalConsoleMethods[method] = this._originalConsole[method]; } } -/** - * Given a child DOM element, returns a query-selector statement describing that - * and its ancestors - * e.g. [HTMLElement] => body > div > input#foo.btn[name=baz] - * @param elem - * @returns {string} + +/* + * The core Raven singleton + * + * @this {Raven} */ +Raven.prototype = { + // Hardcode version string so that raven source can be loaded directly via + // webpack (using a build step causes webpack #1617). Grunt verifies that + // this value matches package.json during build. + // See: https://github.com/getsentry/raven-js/issues/465 + VERSION: '3.24.2', -function htmlTreeAsString$1(elem) { - /* eslint no-extra-parens:0*/ - var MAX_TRAVERSE_HEIGHT = 5, - MAX_OUTPUT_LEN = 80, - out = [], - height = 0, - len = 0, - separator = ' > ', - sepLength = separator.length, - nextStr; + debug: false, - while (elem && height++ < MAX_TRAVERSE_HEIGHT) { - nextStr = htmlElementAsString(elem); // bail out if - // - nextStr is the 'html' element - // - the length of the string that would be created exceeds MAX_OUTPUT_LEN - // (ignore this limit if we are on the first iteration) + TraceKit: TraceKit, // alias to TraceKit - if (nextStr === 'html' || height > 1 && len + out.length * sepLength + nextStr.length >= MAX_OUTPUT_LEN) { - break; - } + /* + * Configure Raven with a DSN and extra options + * + * @param {string} dsn The public Sentry DSN + * @param {object} options Set of global options [optional] + * @return {Raven} + */ + config: function(dsn, options) { + var self = this; - out.push(nextStr); - len += nextStr.length; - elem = elem.parentNode; - } + if (self._globalServer) { + this._logDebug('error', 'Error: Raven has already been configured'); + return self; + } + if (!dsn) return self; - return out.reverse().join(separator); -} -/** - * Returns a simple, query-selector representation of a DOM element - * e.g. [HTMLElement] => input#foo.btn[name=baz] - * @param HTMLElement - * @returns {string} - */ + var globalOptions = self._globalOptions; + // merge in options + if (options) { + each(options, function(key, value) { + // tags and extra are special and need to be put into context + if (key === 'tags' || key === 'extra' || key === 'user') { + self._globalContext[key] = value; + } else { + globalOptions[key] = value; + } + }); + } -function htmlElementAsString(elem) { - var out = [], - className, - classes, - key, - attr, - i; + self.setDSN(dsn); - if (!elem || !elem.tagName) { - return ''; - } + // "Script error." is hard coded into browsers for errors that it can't read. + // this is the result of a script being pulled in from an external domain and CORS. + globalOptions.ignoreErrors.push(/^Script error\.?$/); + globalOptions.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/); - out.push(elem.tagName.toLowerCase()); + // join regexp rules into one big rule + globalOptions.ignoreErrors = joinRegExp(globalOptions.ignoreErrors); + globalOptions.ignoreUrls = globalOptions.ignoreUrls.length + ? joinRegExp(globalOptions.ignoreUrls) + : false; + globalOptions.whitelistUrls = globalOptions.whitelistUrls.length + ? joinRegExp(globalOptions.whitelistUrls) + : false; + globalOptions.includePaths = joinRegExp(globalOptions.includePaths); + globalOptions.maxBreadcrumbs = Math.max( + 0, + Math.min(globalOptions.maxBreadcrumbs || 100, 100) + ); // default and hard limit is 100 - if (elem.id) { - out.push('#' + elem.id); - } + var autoBreadcrumbDefaults = { + xhr: true, + console: true, + dom: true, + location: true, + sentry: true + }; - className = elem.className; + var autoBreadcrumbs = globalOptions.autoBreadcrumbs; + if ({}.toString.call(autoBreadcrumbs) === '[object Object]') { + autoBreadcrumbs = objectMerge(autoBreadcrumbDefaults, autoBreadcrumbs); + } else if (autoBreadcrumbs !== false) { + autoBreadcrumbs = autoBreadcrumbDefaults; + } + globalOptions.autoBreadcrumbs = autoBreadcrumbs; - if (className && isString$1(className)) { - classes = className.split(/\s+/); + var instrumentDefaults = { + tryCatch: true + }; - for (i = 0; i < classes.length; i++) { - out.push('.' + classes[i]); + var instrument = globalOptions.instrument; + if ({}.toString.call(instrument) === '[object Object]') { + instrument = objectMerge(instrumentDefaults, instrument); + } else if (instrument !== false) { + instrument = instrumentDefaults; } - } + globalOptions.instrument = instrument; - var attrWhitelist = ['type', 'name', 'title', 'alt']; + TraceKit.collectWindowErrors = !!globalOptions.collectWindowErrors; - for (i = 0; i < attrWhitelist.length; i++) { - key = attrWhitelist[i]; - attr = elem.getAttribute(key); + // return for chaining + return self; + }, - if (attr) { - out.push('[' + key + '="' + attr + '"]'); - } - } + /* + * Installs a global window.onerror error handler + * to capture and report uncaught exceptions. + * At this point, install() is required to be called due + * to the way TraceKit is set up. + * + * @return {Raven} + */ + install: function() { + var self = this; + if (self.isSetup() && !self._isRavenInstalled) { + TraceKit.report.subscribe(function() { + self._handleOnErrorStackInfo.apply(self, arguments); + }); - return out.join(''); -} -/** - * Returns true if either a OR b is truthy, but not both - */ + if (self._globalOptions.captureUnhandledRejections) { + self._attachPromiseRejectionHandler(); + } + self._patchFunctionToString(); -function isOnlyOneTruthy(a, b) { - return !!(!!a ^ !!b); -} -/** - * Returns true if both parameters are undefined - */ + if (self._globalOptions.instrument && self._globalOptions.instrument.tryCatch) { + self._instrumentTryCatch(); + } + if (self._globalOptions.autoBreadcrumbs) self._instrumentBreadcrumbs(); -function isBothUndefined(a, b) { - return isUndefined$1(a) && isUndefined$1(b); -} -/** - * Returns true if the two input exception interfaces have the same content - */ + // Install all of the plugins + self._drainPlugins(); + self._isRavenInstalled = true; + } -function isSameException$1(ex1, ex2) { - if (isOnlyOneTruthy(ex1, ex2)) return false; - ex1 = ex1.values[0]; - ex2 = ex2.values[0]; - if (ex1.type !== ex2.type || ex1.value !== ex2.value) return false; // in case both stacktraces are undefined, we can't decide so default to false - - if (isBothUndefined(ex1.stacktrace, ex2.stacktrace)) return false; - return isSameStacktrace$1(ex1.stacktrace, ex2.stacktrace); -} -/** - * Returns true if the two input stack trace interfaces have the same content - */ - + Error.stackTraceLimit = self._globalOptions.stackTraceLimit; + return this; + }, -function isSameStacktrace$1(stack1, stack2) { - if (isOnlyOneTruthy(stack1, stack2)) return false; - var frames1 = stack1.frames; - var frames2 = stack2.frames; // Exit early if frame count differs + /* + * Set the DSN (can be called multiple time unlike config) + * + * @param {string} dsn The public Sentry DSN + */ + setDSN: function(dsn) { + var self = this, + uri = self._parseDSN(dsn), + lastSlash = uri.path.lastIndexOf('/'), + path = uri.path.substr(1, lastSlash); - if (frames1.length !== frames2.length) return false; // Iterate through every frame; bail out if anything differs + self._dsn = dsn; + self._globalKey = uri.user; + self._globalSecret = uri.pass && uri.pass.substr(1); + self._globalProject = uri.path.substr(lastSlash + 1); - var a, b; + self._globalServer = self._getGlobalServer(uri); - for (var i = 0; i < frames1.length; i++) { - a = frames1[i]; - b = frames2[i]; - if (a.filename !== b.filename || a.lineno !== b.lineno || a.colno !== b.colno || a['function'] !== b['function']) return false; - } + self._globalEndpoint = + self._globalServer + '/' + path + 'api/' + self._globalProject + '/store/'; - return true; -} -/** - * Polyfill a method - * @param obj object e.g. `document` - * @param name method name present on object e.g. `addEventListener` - * @param replacement replacement function - * @param track {optional} record instrumentation to an array - */ + // Reset backoff state since we may be pointing at a + // new project/server + this._resetBackoff(); + }, + /* + * Wrap code within a context so Raven can capture errors + * reliably across domains that is executed immediately. + * + * @param {object} options A specific set of options for this context [optional] + * @param {function} func The callback to be immediately executed within the context + * @param {array} args An array of arguments to be called with the callback [optional] + */ + context: function(options, func, args) { + if (isFunction(options)) { + args = func || []; + func = options; + options = undefined; + } -function fill$1(obj, name, replacement, track) { - var orig = obj[name]; - obj[name] = replacement(orig); - obj[name].__raven__ = true; - obj[name].__orig__ = orig; + return this.wrap(options, func).apply(this, args); + }, - if (track) { - track.push([obj, name, orig]); - } -} -/** - * Join values in array - * @param input array of values to be joined together - * @param delimiter string to be placed in-between values - * @returns {string} - */ + /* + * Wrap code within a context and returns back a new function to be executed + * + * @param {object} options A specific set of options for this context [optional] + * @param {function} func The function to be wrapped in a new context + * @param {function} func A function to call before the try/catch wrapper [optional, private] + * @return {function} The newly wrapped functions with a context + */ + wrap: function(options, func, _before) { + var self = this; + // 1 argument has been passed, and it's not a function + // so just return it + if (isUndefined(func) && !isFunction(options)) { + return options; + } + // options is optional + if (isFunction(options)) { + func = options; + options = undefined; + } -function safeJoin(input, delimiter) { - if (!isArray$1(input)) return ''; - var output = []; + // At this point, we've passed along 2 arguments, and the second one + // is not a function either, so we'll just return the second argument. + if (!isFunction(func)) { + return func; + } - for (var i = 0; i < input.length; i++) { + // We don't wanna wrap it twice! try { - output.push(String(input[i])); + if (func.__raven__) { + return func; + } + + // If this has already been wrapped in the past, return that + if (func.__raven_wrapper__) { + return func.__raven_wrapper__; + } } catch (e) { - output.push('[value cannot be serialized]'); + // Just accessing custom props in some Selenium environments + // can cause a "Permission denied" exception (see raven-js#495). + // Bail on wrapping and return the function as-is (defers to window.onerror). + return func; } - } - - return output.join(delimiter); -} -var utils = { - isObject: isObject$1, - isError: isError$1, - isErrorEvent: isErrorEvent$1, - isUndefined: isUndefined$1, - isFunction: isFunction$1, - isPlainObject: isPlainObject, - isString: isString$1, - isArray: isArray$1, - isEmptyObject: isEmptyObject$1, - supportsErrorEvent: supportsErrorEvent, - supportsFetch: supportsFetch$1, - wrappedCallback: wrappedCallback, - each: each$1, - objectMerge: objectMerge$1, - truncate: truncate$1, - objectFrozen: objectFrozen$1, - hasKey: hasKey$1, - joinRegExp: joinRegExp$1, - urlencode: urlencode$1, - uuid4: uuid4$1, - htmlTreeAsString: htmlTreeAsString$1, - htmlElementAsString: htmlElementAsString, - isSameException: isSameException$1, - isSameStacktrace: isSameStacktrace$1, - parseUrl: parseUrl$1, - fill: fill$1, - safeJoin: safeJoin -}; + function wrapped() { + var args = [], + i = arguments.length, + deep = !options || (options && options.deep !== false); -/* - TraceKit - Cross brower stack traces + if (_before && isFunction(_before)) { + _before.apply(this, arguments); + } - This was originally forked from github.com/occ/TraceKit, but has since been - largely re-written and is now maintained as part of raven-js. Tests for - this are in test/vendor. + // Recursively wrap all of a function's arguments that are + // functions themselves. + while (i--) args[i] = deep ? self.wrap(options, arguments[i]) : arguments[i]; - MIT license -*/ + try { + // Attempt to invoke user-land function + // NOTE: If you are a Sentry user, and you are seeing this stack frame, it + // means Raven caught an error invoking your application code. This is + // expected behavior and NOT indicative of a bug with Raven.js. + return func.apply(this, args); + } catch (e) { + self._ignoreNextOnError(); + self.captureException(e, options); + throw e; + } + } -var TraceKit = { - collectWindowErrors: true, - debug: false -}; // This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) + // copy over properties of the old function + for (var property in func) { + if (hasKey(func, property)) { + wrapped[property] = func[property]; + } + } + wrapped.prototype = func.prototype; -var _window$2 = typeof window !== 'undefined' ? window : typeof commonjsGlobal !== 'undefined' ? commonjsGlobal : typeof self !== 'undefined' ? self : {}; // global reference to slice + func.__raven_wrapper__ = wrapped; + // Signal that this function has been wrapped/filled already + // for both debugging and to prevent it to being wrapped/filled twice + wrapped.__raven__ = true; + wrapped.__orig__ = func; + return wrapped; + }, -var _slice = [].slice; -var UNKNOWN_FUNCTION = '?'; // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error#Error_types + /** + * Uninstalls the global error handler. + * + * @return {Raven} + */ + uninstall: function() { + TraceKit.report.uninstall(); -var ERROR_TYPES_RE = /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/; + this._detachPromiseRejectionHandler(); + this._unpatchFunctionToString(); + this._restoreBuiltIns(); + this._restoreConsole(); -function getLocationHref() { - if (typeof document === 'undefined' || document.location == null) return ''; - return document.location.href; -} -/** - * TraceKit.report: cross-browser processing of unhandled exceptions - * - * Syntax: - * TraceKit.report.subscribe(function(stackInfo) { ... }) - * TraceKit.report.unsubscribe(function(stackInfo) { ... }) - * TraceKit.report(exception) - * try { ...code... } catch(ex) { TraceKit.report(ex); } - * - * Supports: - * - Firefox: full stack trace with line numbers, plus column number - * on top frame; column number is not guaranteed - * - Opera: full stack trace with line and column numbers - * - Chrome: full stack trace with line and column numbers - * - Safari: line and column number for the top frame only; some frames - * may be missing, and column number is not guaranteed - * - IE: line and column number for the top frame only; some frames - * may be missing, and column number is not guaranteed - * - * In theory, TraceKit should work on all of the following versions: - * - IE5.5+ (only 8.0 tested) - * - Firefox 0.9+ (only 3.5+ tested) - * - Opera 7+ (only 10.50 tested; versions 9 and earlier may require - * Exceptions Have Stacktrace to be enabled in opera:config) - * - Safari 3+ (only 4+ tested) - * - Chrome 1+ (only 5+ tested) - * - Konqueror 3.5+ (untested) - * - * Requires TraceKit.computeStackTrace. - * - * Tries to catch all unhandled exceptions and report them to the - * subscribed handlers. Please note that TraceKit.report will rethrow the - * exception. This is REQUIRED in order to get a useful stack trace in IE. - * If the exception does not reach the top of the browser, you will only - * get a stack trace from the point where TraceKit.report was called. - * - * Handlers receive a stackInfo object as described in the - * TraceKit.computeStackTrace docs. - */ + Error.stackTraceLimit = this._originalErrorStackTraceLimit; + this._isRavenInstalled = false; + return this; + }, -TraceKit.report = function reportModuleWrapper() { - var handlers = [], - lastArgs = null, - lastException = null, - lastExceptionStack = null; /** - * Add a crash handler. - * @param {Function} handler - */ + * Callback used for `unhandledrejection` event + * + * @param {PromiseRejectionEvent} event An object containing + * promise: the Promise that was rejected + * reason: the value with which the Promise was rejected + * @return void + */ + _promiseRejectionHandler: function(event) { + this._logDebug('debug', 'Raven caught unhandled promise rejection:', event); + this.captureException(event.reason, { + extra: { + unhandledPromiseRejection: true + } + }); + }, - function subscribe(handler) { - installGlobalHandler(); - handlers.push(handler); - } /** - * Remove a crash handler. - * @param {Function} handler - */ - + * Installs the global promise rejection handler. + * + * @return {raven} + */ + _attachPromiseRejectionHandler: function() { + this._promiseRejectionHandler = this._promiseRejectionHandler.bind(this); + _window.addEventListener && + _window.addEventListener('unhandledrejection', this._promiseRejectionHandler); + return this; + }, - function unsubscribe(handler) { - for (var i = handlers.length - 1; i >= 0; --i) { - if (handlers[i] === handler) { - handlers.splice(i, 1); - } - } - } /** - * Remove all crash handlers. - */ - + * Uninstalls the global promise rejection handler. + * + * @return {raven} + */ + _detachPromiseRejectionHandler: function() { + _window.removeEventListener && + _window.removeEventListener('unhandledrejection', this._promiseRejectionHandler); + return this; + }, - function unsubscribeAll() { - uninstallGlobalHandler(); - handlers = []; - } /** - * Dispatch stack information to all handlers. - * @param {Object.} stack - */ - + * Manually capture an exception and send it over to Sentry + * + * @param {error} ex An exception to be logged + * @param {object} options A specific set of options for this error [optional] + * @return {Raven} + */ + captureException: function(ex, options) { + options = objectMerge({trimHeadFrames: 0}, options ? options : {}); + + if (isErrorEvent(ex) && ex.error) { + // If it is an ErrorEvent with `error` property, extract it to get actual Error + ex = ex.error; + } else if (isError(ex)) { + // we have a real Error object + ex = ex; + } else if (isPlainObject(ex)) { + // If it is plain Object, serialize it manually and extract options + // This will allow us to group events based on top-level keys + // which is much better than creating new group when any key/value change + options = this._getCaptureExceptionOptionsFromPlainObject(options, ex); + ex = new Error(options.message); + } else { + // If none of previous checks were valid, then it means that + // it's not a plain Object + // it's not a valid ErrorEvent (one with an error property) + // it's not an Error + // So bail out and capture it as a simple message: + return this.captureMessage( + ex, + objectMerge(options, { + stacktrace: true, // if we fall back to captureMessage, default to attempting a new trace + trimHeadFrames: options.trimHeadFrames + 1 + }) + ); + } - function notifyHandlers(stack, isWindowError) { - var exception = null; + // Store the raw exception object for potential debugging and introspection + this._lastCapturedException = ex; - if (isWindowError && !TraceKit.collectWindowErrors) { - return; - } - - for (var i in handlers) { - if (handlers.hasOwnProperty(i)) { - try { - handlers[i].apply(null, [stack].concat(_slice.call(arguments, 2))); - } catch (inner) { - exception = inner; - } + // TraceKit.report will re-raise any exception passed to it, + // which means you have to wrap it in try/catch. Instead, we + // can wrap it here and only re-raise if TraceKit.report + // raises an exception different from the one we asked to + // report on. + try { + var stack = TraceKit.computeStackTrace(ex); + this._handleStackInfo(stack, options); + } catch (ex1) { + if (ex !== ex1) { + throw ex1; } } - if (exception) { - throw exception; - } - } + return this; + }, - var _oldOnerrorHandler, _onErrorHandlerInstalled; - /** - * Ensures all global unhandled exceptions are recorded. - * Supported by Gecko and IE. - * @param {string} msg Error message. - * @param {string} url URL of script that generated the exception. - * @param {(number|string)} lineNo The line number at which the error - * occurred. - * @param {?(number|string)} colNo The column number at which the error - * occurred. - * @param {?Error} ex The actual Error object. - */ + _getCaptureExceptionOptionsFromPlainObject: function(currentOptions, ex) { + var exKeys = Object.keys(ex).sort(); + var options = objectMerge(currentOptions, { + message: + 'Non-Error exception captured with keys: ' + serializeKeysForMessage(exKeys), + fingerprint: [md5(exKeys)], + extra: currentOptions.extra || {} + }); + options.extra.__serialized__ = serializeException(ex); + return options; + }, - function traceKitWindowOnError(msg, url, lineNo, colNo, ex) { - var stack = null; // If 'ex' is ErrorEvent, get real Error from inside + /* + * Manually send a message to Sentry + * + * @param {string} msg A plain message to be captured in Sentry + * @param {object} options A specific set of options for this message [optional] + * @return {Raven} + */ + captureMessage: function(msg, options) { + // config() automagically converts ignoreErrors from a list to a RegExp so we need to test for an + // early call; we'll error on the side of logging anything called before configuration since it's + // probably something you should see: + if ( + !!this._globalOptions.ignoreErrors.test && + this._globalOptions.ignoreErrors.test(msg) + ) { + return; + } - var exception = utils.isErrorEvent(ex) ? ex.error : ex; // If 'msg' is ErrorEvent, get real message from inside + options = options || {}; + msg = msg + ''; // Make sure it's actually a string - var message = utils.isErrorEvent(msg) ? msg.message : msg; + var data = objectMerge( + { + message: msg + }, + options + ); - if (lastExceptionStack) { - TraceKit.computeStackTrace.augmentStackTraceWithInitialElement(lastExceptionStack, url, lineNo, message); - processLastException(); - } else if (exception && utils.isError(exception)) { - // non-string `exception` arg; attempt to extract stack trace - // New chrome and blink send along a real error object - // Let's just report that like a normal error. - // See: https://mikewest.org/2013/08/debugging-runtime-errors-with-window-onerror - stack = TraceKit.computeStackTrace(exception); - notifyHandlers(stack, true); - } else { - var location = { - url: url, - line: lineNo, - column: colNo - }; - var name = undefined; - var groups; + var ex; + // Generate a "synthetic" stack trace from this point. + // NOTE: If you are a Sentry user, and you are seeing this stack frame, it is NOT indicative + // of a bug with Raven.js. Sentry generates synthetic traces either by configuration, + // or if it catches a thrown object without a "stack" property. + try { + throw new Error(msg); + } catch (ex1) { + ex = ex1; + } - if ({}.toString.call(message) === '[object String]') { - var groups = message.match(ERROR_TYPES_RE); + // null exception name so `Error` isn't prefixed to msg + ex.name = null; + var stack = TraceKit.computeStackTrace(ex); - if (groups) { - name = groups[1]; - message = groups[2]; - } - } + // stack[0] is `throw new Error(msg)` call itself, we are interested in the frame that was just before that, stack[1] + var initialCall = isArray(stack.stack) && stack.stack[1]; - location.func = UNKNOWN_FUNCTION; - stack = { - name: name, - message: message, - url: getLocationHref(), - stack: [location] - }; - notifyHandlers(stack, true); + // if stack[1] is `Raven.captureException`, it means that someone passed a string to it and we redirected that call + // to be handled by `captureMessage`, thus `initialCall` is the 3rd one, not 2nd + // initialCall => captureException(string) => captureMessage(string) + if (initialCall && initialCall.func === 'Raven.captureException') { + initialCall = stack.stack[2]; } - if (_oldOnerrorHandler) { - return _oldOnerrorHandler.apply(this, arguments); - } + var fileurl = (initialCall && initialCall.url) || ''; - return false; - } + if ( + !!this._globalOptions.ignoreUrls.test && + this._globalOptions.ignoreUrls.test(fileurl) + ) { + return; + } - function installGlobalHandler() { - if (_onErrorHandlerInstalled) { + if ( + !!this._globalOptions.whitelistUrls.test && + !this._globalOptions.whitelistUrls.test(fileurl) + ) { return; } - _oldOnerrorHandler = _window$2.onerror; - _window$2.onerror = traceKitWindowOnError; - _onErrorHandlerInstalled = true; - } + if (this._globalOptions.stacktrace || (options && options.stacktrace)) { + // fingerprint on msg, not stack trace (legacy behavior, could be revisited) + data.fingerprint = data.fingerprint == null ? msg : data.fingerprint; - function uninstallGlobalHandler() { - if (!_onErrorHandlerInstalled) { - return; + options = objectMerge( + { + trimHeadFrames: 0 + }, + options + ); + // Since we know this is a synthetic trace, the top frame (this function call) + // MUST be from Raven.js, so mark it for trimming + // We add to the trim counter so that callers can choose to trim extra frames, such + // as utility functions. + options.trimHeadFrames += 1; + + var frames = this._prepareFrames(stack, options); + data.stacktrace = { + // Sentry expects frames oldest to newest + frames: frames.reverse() + }; } - _window$2.onerror = _oldOnerrorHandler; - _onErrorHandlerInstalled = false; - _oldOnerrorHandler = undefined; - } + // Make sure that fingerprint is always wrapped in an array + if (data.fingerprint) { + data.fingerprint = isArray(data.fingerprint) + ? data.fingerprint + : [data.fingerprint]; + } - function processLastException() { - var _lastExceptionStack = lastExceptionStack, - _lastArgs = lastArgs; - lastArgs = null; - lastExceptionStack = null; - lastException = null; - notifyHandlers.apply(null, [_lastExceptionStack, false].concat(_lastArgs)); - } - /** - * Reports an unhandled Error to TraceKit. - * @param {Error} ex - * @param {?boolean} rethrow If false, do not re-throw the exception. - * Only used for window.onerror to not cause an infinite loop of - * rethrowing. - */ + // Fire away! + this._send(data); + return this; + }, - function report(ex, rethrow) { - var args = _slice.call(arguments, 1); + captureBreadcrumb: function(obj) { + var crumb = objectMerge( + { + timestamp: now() / 1000 + }, + obj + ); - if (lastExceptionStack) { - if (lastException === ex) { - return; // already caught by an inner catch block, ignore - } else { - processLastException(); + if (isFunction(this._globalOptions.breadcrumbCallback)) { + var result = this._globalOptions.breadcrumbCallback(crumb); + + if (isObject(result) && !isEmptyObject(result)) { + crumb = result; + } else if (result === false) { + return this; } } - var stack = TraceKit.computeStackTrace(ex); - lastExceptionStack = stack; - lastException = ex; - lastArgs = args; // If the stack trace is incomplete, wait for 2 seconds for - // slow slow IE to see if onerror occurs or not before reporting - // this exception; otherwise, we will end up with an incomplete - // stack trace + this._breadcrumbs.push(crumb); + if (this._breadcrumbs.length > this._globalOptions.maxBreadcrumbs) { + this._breadcrumbs.shift(); + } + return this; + }, - setTimeout(function () { - if (lastException === ex) { - processLastException(); - } - }, stack.incomplete ? 2000 : 0); + addPlugin: function(plugin /*arg1, arg2, ... argN*/) { + var pluginArgs = [].slice.call(arguments, 1); - if (rethrow !== false) { - throw ex; // re-throw to propagate to the top level (and cause window.onerror) + this._plugins.push([plugin, pluginArgs]); + if (this._isRavenInstalled) { + this._drainPlugins(); } - } - report.subscribe = subscribe; - report.unsubscribe = unsubscribe; - report.uninstall = unsubscribeAll; - return report; -}(); -/** - * TraceKit.computeStackTrace: cross-browser stack traces in JavaScript - * - * Syntax: - * s = TraceKit.computeStackTrace(exception) // consider using TraceKit.report instead (see below) - * Returns: - * s.name - exception name - * s.message - exception message - * s.stack[i].url - JavaScript or HTML file URL - * s.stack[i].func - function name, or empty for anonymous functions (if guessing did not work) - * s.stack[i].args - arguments passed to the function, if known - * s.stack[i].line - line number, if known - * s.stack[i].column - column number, if known - * - * Supports: - * - Firefox: full stack trace with line numbers and unreliable column - * number on top frame - * - Opera 10: full stack trace with line and column numbers - * - Opera 9-: full stack trace with line numbers - * - Chrome: full stack trace with line and column numbers - * - Safari: line and column number for the topmost stacktrace element - * only - * - IE: no line numbers whatsoever - * - * Tries to guess names of anonymous functions by looking for assignments - * in the source code. In IE and Safari, we have to guess source file names - * by searching for function bodies inside all page scripts. This will not - * work for scripts that are loaded cross-domain. - * Here be dragons: some function names may be guessed incorrectly, and - * duplicate functions may be mismatched. - * - * TraceKit.computeStackTrace should only be used for tracing purposes. - * Logging of unhandled exceptions should be done with TraceKit.report, - * which builds on top of TraceKit.computeStackTrace and provides better - * IE support by utilizing the window.onerror event to retrieve information - * about the top of the stack. - * - * Note: In IE and Safari, no stack trace is recorded on the Error object, - * so computeStackTrace instead walks its *own* chain of callers. - * This means that: - * * in Safari, some methods may be missing from the stack trace; - * * in IE, the topmost function in the stack trace will always be the - * caller of computeStackTrace. - * - * This is okay for tracing (because you are likely to be calling - * computeStackTrace from the function you want to be the topmost element - * of the stack trace anyway), but not okay for logging unhandled - * exceptions (because your catch block will likely be far away from the - * inner function that actually caused the exception). - * - */ + return this; + }, + /* + * Set/clear a user to be sent along with the payload. + * + * @param {object} user An object representing user data [optional] + * @return {Raven} + */ + setUserContext: function(user) { + // Intentionally do not merge here since that's an unexpected behavior. + this._globalContext.user = user; -TraceKit.computeStackTrace = function computeStackTraceWrapper() { - // Contents of Exception in various browsers. - // - // SAFARI: - // ex.message = Can't find variable: qq - // ex.line = 59 - // ex.sourceId = 580238192 - // ex.sourceURL = http://... - // ex.expressionBeginOffset = 96 - // ex.expressionCaretOffset = 98 - // ex.expressionEndOffset = 98 - // ex.name = ReferenceError - // - // FIREFOX: - // ex.message = qq is not defined - // ex.fileName = http://... - // ex.lineNumber = 59 - // ex.columnNumber = 69 - // ex.stack = ...stack trace... (see the example below) - // ex.name = ReferenceError - // - // CHROME: - // ex.message = qq is not defined - // ex.name = ReferenceError - // ex.type = not_defined - // ex.arguments = ['aa'] - // ex.stack = ...stack trace... - // - // INTERNET EXPLORER: - // ex.message = ... - // ex.name = ReferenceError - // - // OPERA: - // ex.message = ...message... (see the example below) - // ex.name = ReferenceError - // ex.opera#sourceloc = 11 (pretty much useless, duplicates the info in ex.message) - // ex.stacktrace = n/a; see 'opera:config#UserPrefs|Exceptions Have Stacktrace' + return this; + }, - /** - * Computes stack trace information from the stack property. - * Chrome and Gecko use this property. - * @param {Error} ex - * @return {?Object.} Stack trace information. + /* + * Merge extra attributes to be sent along with the payload. + * + * @param {object} extra An object representing extra data [optional] + * @return {Raven} */ - function computeStackTraceFromStackProp(ex) { - if (typeof ex.stack === 'undefined' || !ex.stack) return; - var chrome = /^\s*at (.*?) ?\(((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i, - gecko = /^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|\[native).*?|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i, - winjs = /^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i, - // Used to additionally parse URL/line/column from eval frames - geckoEval = /(\S+) line (\d+)(?: > eval line \d+)* > eval/i, - chromeEval = /\((\S*)(?::(\d+))(?::(\d+))\)/, - lines = ex.stack.split('\n'), - stack = [], - submatch, - parts, - element, - reference = /^(.*) is undefined$/.exec(ex.message); - - for (var i = 0, j = lines.length; i < j; ++i) { - if (parts = chrome.exec(lines[i])) { - var isNative = parts[2] && parts[2].indexOf('native') === 0; // start of line - - var isEval = parts[2] && parts[2].indexOf('eval') === 0; // start of line - - if (isEval && (submatch = chromeEval.exec(parts[2]))) { - // throw out eval line/column and use top-most line/column number - parts[2] = submatch[1]; // url + setExtraContext: function(extra) { + this._mergeContext('extra', extra); - parts[3] = submatch[2]; // line + return this; + }, - parts[4] = submatch[3]; // column - } + /* + * Merge tags to be sent along with the payload. + * + * @param {object} tags An object representing tags [optional] + * @return {Raven} + */ + setTagsContext: function(tags) { + this._mergeContext('tags', tags); - element = { - url: !isNative ? parts[2] : null, - func: parts[1] || UNKNOWN_FUNCTION, - args: isNative ? [parts[2]] : [], - line: parts[3] ? +parts[3] : null, - column: parts[4] ? +parts[4] : null - }; - } else if (parts = winjs.exec(lines[i])) { - element = { - url: parts[2], - func: parts[1] || UNKNOWN_FUNCTION, - args: [], - line: +parts[3], - column: parts[4] ? +parts[4] : null - }; - } else if (parts = gecko.exec(lines[i])) { - var isEval = parts[3] && parts[3].indexOf(' > eval') > -1; + return this; + }, - if (isEval && (submatch = geckoEval.exec(parts[3]))) { - // throw out eval line/column and use top-most line number - parts[3] = submatch[1]; - parts[4] = submatch[2]; - parts[5] = null; // no column when eval - } else if (i === 0 && !parts[5] && typeof ex.columnNumber !== 'undefined') { - // FireFox uses this awesome columnNumber property for its top frame - // Also note, Firefox's column number is 0-based and everything else expects 1-based, - // so adding 1 - // NOTE: this hack doesn't work if top-most frame is eval - stack[0].column = ex.columnNumber + 1; - } + /* + * Clear all of the context. + * + * @return {Raven} + */ + clearContext: function() { + this._globalContext = {}; - element = { - url: parts[3], - func: parts[1] || UNKNOWN_FUNCTION, - args: parts[2] ? parts[2].split(',') : [], - line: parts[4] ? +parts[4] : null, - column: parts[5] ? +parts[5] : null - }; - } else { - continue; - } + return this; + }, - if (!element.func && element.line) { - element.func = UNKNOWN_FUNCTION; - } + /* + * Get a copy of the current context. This cannot be mutated. + * + * @return {object} copy of context + */ + getContext: function() { + // lol javascript + return JSON.parse(stringify(this._globalContext)); + }, - stack.push(element); - } + /* + * Set environment of application + * + * @param {string} environment Typically something like 'production'. + * @return {Raven} + */ + setEnvironment: function(environment) { + this._globalOptions.environment = environment; - if (!stack.length) { - return null; - } + return this; + }, - return { - name: ex.name, - message: ex.message, - url: getLocationHref(), - stack: stack - }; - } - /** - * Adds information about the first frame to incomplete stack traces. - * Safari and IE require this to get complete data on the first frame. - * @param {Object.} stackInfo Stack trace information from - * one of the compute* methods. - * @param {string} url The URL of the script that caused an error. - * @param {(number|string)} lineNo The line number of the script that - * caused an error. - * @param {string=} message The error generated by the browser, which - * hopefully contains the name of the object that caused the error. - * @return {boolean} Whether or not the stack information was - * augmented. + /* + * Set release version of application + * + * @param {string} release Typically something like a git SHA to identify version + * @return {Raven} */ + setRelease: function(release) { + this._globalOptions.release = release; + return this; + }, - function augmentStackTraceWithInitialElement(stackInfo, url, lineNo, message) { - var initial = { - url: url, - line: lineNo - }; + /* + * Set the dataCallback option + * + * @param {function} callback The callback to run which allows the + * data blob to be mutated before sending + * @return {Raven} + */ + setDataCallback: function(callback) { + var original = this._globalOptions.dataCallback; + this._globalOptions.dataCallback = keepOriginalCallback(original, callback); + return this; + }, - if (initial.url && initial.line) { - stackInfo.incomplete = false; + /* + * Set the breadcrumbCallback option + * + * @param {function} callback The callback to run which allows filtering + * or mutating breadcrumbs + * @return {Raven} + */ + setBreadcrumbCallback: function(callback) { + var original = this._globalOptions.breadcrumbCallback; + this._globalOptions.breadcrumbCallback = keepOriginalCallback(original, callback); + return this; + }, - if (!initial.func) { - initial.func = UNKNOWN_FUNCTION; - } + /* + * Set the shouldSendCallback option + * + * @param {function} callback The callback to run which allows + * introspecting the blob before sending + * @return {Raven} + */ + setShouldSendCallback: function(callback) { + var original = this._globalOptions.shouldSendCallback; + this._globalOptions.shouldSendCallback = keepOriginalCallback(original, callback); + return this; + }, - if (stackInfo.stack.length > 0) { - if (stackInfo.stack[0].url === initial.url) { - if (stackInfo.stack[0].line === initial.line) { - return false; // already in stack trace - } else if (!stackInfo.stack[0].line && stackInfo.stack[0].func === initial.func) { - stackInfo.stack[0].line = initial.line; - return false; - } - } - } + /** + * Override the default HTTP transport mechanism that transmits data + * to the Sentry server. + * + * @param {function} transport Function invoked instead of the default + * `makeRequest` handler. + * + * @return {Raven} + */ + setTransport: function(transport) { + this._globalOptions.transport = transport; - stackInfo.stack.unshift(initial); - stackInfo.partial = true; - return true; - } else { - stackInfo.incomplete = true; - } + return this; + }, - return false; - } - /** - * Computes stack trace information by walking the arguments.caller - * chain at the time the exception occurred. This will cause earlier - * frames to be missed but is the only way to get any stack trace in - * Safari and IE. The top frame is restored by - * {@link augmentStackTraceWithInitialElement}. - * @param {Error} ex - * @return {?Object.} Stack trace information. + /* + * Get the latest raw exception that was captured by Raven. + * + * @return {error} */ + lastException: function() { + return this._lastCapturedException; + }, + /* + * Get the last event id + * + * @return {string} + */ + lastEventId: function() { + return this._lastEventId; + }, - function computeStackTraceByWalkingCallerChain(ex, depth) { - var functionName = /function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i, - stack = [], - funcs = {}, - recursion = false, - parts, - item; - - for (var curr = computeStackTraceByWalkingCallerChain.caller; curr && !recursion; curr = curr.caller) { - if (curr === computeStackTrace || curr === TraceKit.report) { - // console.log('skipping internal function'); - continue; + /* + * Determine if Raven is setup and ready to go. + * + * @return {boolean} + */ + isSetup: function() { + if (!this._hasJSON) return false; // needs JSON support + if (!this._globalServer) { + if (!this.ravenNotConfiguredError) { + this.ravenNotConfiguredError = true; + this._logDebug('error', 'Error: Raven has not been configured.'); } + return false; + } + return true; + }, - item = { - url: null, - func: UNKNOWN_FUNCTION, - line: null, - column: null - }; + afterLoad: function() { + // TODO: remove window dependence? - if (curr.name) { - item.func = curr.name; - } else if (parts = functionName.exec(curr.toString())) { - item.func = parts[1]; - } + // Attempt to initialize Raven on load + var RavenConfig = _window.RavenConfig; + if (RavenConfig) { + this.config(RavenConfig.dsn, RavenConfig.config).install(); + } + }, - if (typeof item.func === 'undefined') { - try { - item.func = parts.input.substring(0, parts.input.indexOf('{')); - } catch (e) {} - } + showReportDialog: function(options) { + if ( + !_document // doesn't work without a document (React native) + ) + return; - if (funcs['' + curr]) { - recursion = true; - } else { - funcs['' + curr] = true; - } + options = options || {}; - stack.push(item); + var lastEventId = options.eventId || this.lastEventId(); + if (!lastEventId) { + throw new RavenConfigError('Missing eventId'); } - if (depth) { - // console.log('depth is ' + depth); - // console.log('stack is ' + stack.length); - stack.splice(0, depth); + var dsn = options.dsn || this._dsn; + if (!dsn) { + throw new RavenConfigError('Missing DSN'); } - var result = { - name: ex.name, - message: ex.message, - url: getLocationHref(), - stack: stack - }; - augmentStackTraceWithInitialElement(result, ex.sourceURL || ex.fileName, ex.line || ex.lineNumber, ex.message || ex.description); - return result; - } - /** - * Computes a stack trace for an exception. - * @param {Error} ex - * @param {(string|number)=} depth - */ - - - function computeStackTrace(ex, depth) { - var stack = null; - depth = depth == null ? 0 : +depth; - - try { - stack = computeStackTraceFromStackProp(ex); + var encode = encodeURIComponent; + var qs = ''; + qs += '?eventId=' + encode(lastEventId); + qs += '&dsn=' + encode(dsn); - if (stack) { - return stack; - } - } catch (e) { - if (TraceKit.debug) { - throw e; - } + var user = options.user || this._globalContext.user; + if (user) { + if (user.name) qs += '&name=' + encode(user.name); + if (user.email) qs += '&email=' + encode(user.email); } - try { - stack = computeStackTraceByWalkingCallerChain(ex, depth + 1); + var globalServer = this._getGlobalServer(this._parseDSN(dsn)); - if (stack) { - return stack; - } - } catch (e) { - if (TraceKit.debug) { - throw e; - } - } + var script = _document.createElement('script'); + script.async = true; + script.src = globalServer + '/api/embed/error-page/' + qs; + (_document.head || _document.body).appendChild(script); + }, - return { - name: ex.name, - message: ex.message, - url: getLocationHref() - }; - } + /**** Private functions ****/ + _ignoreNextOnError: function() { + var self = this; + this._ignoreOnError += 1; + setTimeout(function() { + // onerror should trigger before setTimeout + self._ignoreOnError -= 1; + }); + }, - computeStackTrace.augmentStackTraceWithInitialElement = augmentStackTraceWithInitialElement; - computeStackTrace.computeStackTraceFromStackProp = computeStackTraceFromStackProp; - return computeStackTrace; -}(); + _triggerEvent: function(eventType, options) { + // NOTE: `event` is a native browser thing, so let's avoid conflicting wiht it + var evt, key; -var tracekit = TraceKit; + if (!this._hasDocument) return; -var stringify_1 = createCommonjsModule(function (module, exports) { - /* - json-stringify-safe - Like JSON.stringify, but doesn't throw on circular references. - - Originally forked from https://github.com/isaacs/json-stringify-safe - version 5.0.1 on 3/8/2017 and modified to handle Errors serialization - and IE8 compatibility. Tests for this are in test/vendor. - - ISC license: https://github.com/isaacs/json-stringify-safe/blob/master/LICENSE - */ - exports = module.exports = stringify; - exports.getSerialize = serializer; - - function indexOf(haystack, needle) { - for (var i = 0; i < haystack.length; ++i) { - if (haystack[i] === needle) return i; - } - - return -1; - } + options = options || {}; - function stringify(obj, replacer, spaces, cycleReplacer) { - return JSON.stringify(obj, serializer(replacer, cycleReplacer), spaces); - } // https://github.com/ftlabs/js-abbreviate/blob/fa709e5f139e7770a71827b1893f22418097fbda/index.js#L95-L106 + eventType = 'raven' + eventType.substr(0, 1).toUpperCase() + eventType.substr(1); + if (_document.createEvent) { + evt = _document.createEvent('HTMLEvents'); + evt.initEvent(eventType, true, true); + } else { + evt = _document.createEventObject(); + evt.eventType = eventType; + } - function stringifyError(value) { - var err = { - // These properties are implemented as magical getters and don't show up in for in - stack: value.stack, - message: value.message, - name: value.name - }; + for (key in options) + if (hasKey(options, key)) { + evt[key] = options[key]; + } - for (var i in value) { - if (Object.prototype.hasOwnProperty.call(value, i)) { - err[i] = value[i]; + if (_document.createEvent) { + // IE9 if standards + _document.dispatchEvent(evt); + } else { + // IE8 regardless of Quirks or Standards + // IE9 if quirks + try { + _document.fireEvent('on' + evt.eventType.toLowerCase(), evt); + } catch (e) { + // Do nothing } } + }, - return err; - } - - function serializer(replacer, cycleReplacer) { - var stack = []; - var keys = []; - - if (cycleReplacer == null) { - cycleReplacer = function cycleReplacer(key, value) { - if (stack[0] === value) { - return '[Circular ~]'; - } + /** + * Wraps addEventListener to capture UI breadcrumbs + * @param evtName the event name (e.g. "click") + * @returns {Function} + * @private + */ + _breadcrumbEventHandler: function(evtName) { + var self = this; + return function(evt) { + // reset keypress timeout; e.g. triggering a 'click' after + // a 'keypress' will reset the keypress debounce so that a new + // set of keypresses can be recorded + self._keypressTimeout = null; - return '[Circular ~.' + keys.slice(0, indexOf(stack, value)).join('.') + ']'; - }; - } + // It's possible this handler might trigger multiple times for the same + // event (e.g. event propagation through node ancestors). Ignore if we've + // already captured the event. + if (self._lastCapturedEvent === evt) return; - return function (key, value) { - if (stack.length > 0) { - var thisPos = indexOf(stack, this); - ~thisPos ? stack.splice(thisPos + 1) : stack.push(this); - ~thisPos ? keys.splice(thisPos, Infinity, key) : keys.push(key); + self._lastCapturedEvent = evt; - if (~indexOf(stack, value)) { - value = cycleReplacer.call(this, key, value); - } - } else { - stack.push(value); + // try/catch both: + // - accessing evt.target (see getsentry/raven-js#838, #768) + // - `htmlTreeAsString` because it's complex, and just accessing the DOM incorrectly + // can throw an exception in some circumstances. + var target; + try { + target = htmlTreeAsString(evt.target); + } catch (e) { + target = ''; } - return replacer == null ? value instanceof Error ? stringifyError(value) : value : replacer.call(this, key, value); + self.captureBreadcrumb({ + category: 'ui.' + evtName, // e.g. ui.click, ui.input + message: target + }); }; - } -}); -var stringify_2 = stringify_1.getSerialize; - -function RavenConfigError(message) { - this.name = 'RavenConfigError'; - this.message = message; -} - -RavenConfigError.prototype = new Error(); -RavenConfigError.prototype.constructor = RavenConfigError; -var configError = RavenConfigError; + }, -var wrapMethod = function wrapMethod(console, level, callback) { - var originalConsoleLevel = console[level]; - var originalConsole = console; + /** + * Wraps addEventListener to capture keypress UI events + * @returns {Function} + * @private + */ + _keypressEventHandler: function() { + var self = this, + debounceDuration = 1000; // milliseconds - if (!(level in console)) { - return; - } + // TODO: if somehow user switches keypress target before + // debounce timeout is triggered, we will only capture + // a single breadcrumb from the FIRST target (acceptable?) + return function(evt) { + var target; + try { + target = evt.target; + } catch (e) { + // just accessing event properties can throw an exception in some rare circumstances + // see: https://github.com/getsentry/raven-js/issues/838 + return; + } + var tagName = target && target.tagName; - var sentryLevel = level === 'warn' ? 'warning' : level; + // only consider keypress events on actual input elements + // this will disregard keypresses targeting body (e.g. tabbing + // through elements, hotkeys, etc) + if ( + !tagName || + (tagName !== 'INPUT' && tagName !== 'TEXTAREA' && !target.isContentEditable) + ) + return; - console[level] = function () { - var args = [].slice.call(arguments); - var msg = utils.safeJoin(args, ' '); - var data = { - level: sentryLevel, - logger: 'console', - extra: { - arguments: args + // record first keypress in a series, but ignore subsequent + // keypresses until debounce clears + var timeout = self._keypressTimeout; + if (!timeout) { + self._breadcrumbEventHandler('input')(evt); } + clearTimeout(timeout); + self._keypressTimeout = setTimeout(function() { + self._keypressTimeout = null; + }, debounceDuration); }; + }, - if (level === 'assert') { - if (args[0] === false) { - // Default browsers message - msg = 'Assertion failed: ' + (utils.safeJoin(args.slice(1), ' ') || 'console.assert'); - data.extra.arguments = args.slice(1); - callback && callback(msg, data); + /** + * Captures a breadcrumb of type "navigation", normalizing input URLs + * @param to the originating URL + * @param from the target URL + * @private + */ + _captureUrlChange: function(from, to) { + var parsedLoc = parseUrl(this._location.href); + var parsedTo = parseUrl(to); + var parsedFrom = parseUrl(from); + + // because onpopstate only tells you the "new" (to) value of location.href, and + // not the previous (from) value, we need to track the value of the current URL + // state ourselves + this._lastHref = to; + + // Use only the path component of the URL if the URL matches the current + // document (almost all the time when using pushState) + if (parsedLoc.protocol === parsedTo.protocol && parsedLoc.host === parsedTo.host) + to = parsedTo.relative; + if (parsedLoc.protocol === parsedFrom.protocol && parsedLoc.host === parsedFrom.host) + from = parsedFrom.relative; + + this.captureBreadcrumb({ + category: 'navigation', + data: { + to: to, + from: from } - } else { - callback && callback(msg, data); - } // this fails for some browsers. :( + }); + }, + _patchFunctionToString: function() { + var self = this; + self._originalFunctionToString = Function.prototype.toString; + // eslint-disable-next-line no-extend-native + Function.prototype.toString = function() { + if (typeof this === 'function' && this.__raven__) { + return self._originalFunctionToString.apply(this.__orig__, arguments); + } + return self._originalFunctionToString.apply(this, arguments); + }; + }, - if (originalConsoleLevel) { - // IE9 doesn't allow calling apply on console functions directly - // See: https://stackoverflow.com/questions/5472938/does-ie9-support-console-log-and-is-it-a-real-function#answer-5473193 - Function.prototype.apply.call(originalConsoleLevel, originalConsole, args); + _unpatchFunctionToString: function() { + if (this._originalFunctionToString) { + // eslint-disable-next-line no-extend-native + Function.prototype.toString = this._originalFunctionToString; } - }; -}; + }, -var console$1 = { - wrapMethod: wrapMethod -}; + /** + * Wrap timer functions and event targets to catch errors and provide + * better metadata. + */ + _instrumentTryCatch: function() { + var self = this; -/*global XDomainRequest:false */ + var wrappedBuiltIns = self._wrappedBuiltIns; -var isError = utils.isError; -var isObject = utils.isObject; -var isErrorEvent = utils.isErrorEvent; -var isUndefined = utils.isUndefined; -var isFunction = utils.isFunction; -var isString = utils.isString; -var isArray = utils.isArray; -var isEmptyObject = utils.isEmptyObject; -var each = utils.each; -var objectMerge = utils.objectMerge; -var truncate = utils.truncate; -var objectFrozen = utils.objectFrozen; -var hasKey = utils.hasKey; -var joinRegExp = utils.joinRegExp; -var urlencode = utils.urlencode; -var uuid4 = utils.uuid4; -var htmlTreeAsString = utils.htmlTreeAsString; -var isSameException = utils.isSameException; -var isSameStacktrace = utils.isSameStacktrace; -var parseUrl = utils.parseUrl; -var fill = utils.fill; -var supportsFetch = utils.supportsFetch; -var wrapConsoleMethod = console$1.wrapMethod; -var dsnKeys = 'source protocol user pass host port path'.split(' '); -var dsnPattern = /^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/; + function wrapTimeFn(orig) { + return function(fn, t) { + // preserve arity + // Make a copy of the arguments to prevent deoptimization + // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments + var args = new Array(arguments.length); + for (var i = 0; i < args.length; ++i) { + args[i] = arguments[i]; + } + var originalCallback = args[0]; + if (isFunction(originalCallback)) { + args[0] = self.wrap(originalCallback); + } -function now() { - return +new Date(); -} // This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) + // IE < 9 doesn't support .call/.apply on setInterval/setTimeout, but it + // also supports only two arguments and doesn't care what this is, so we + // can just call the original function directly. + if (orig.apply) { + return orig.apply(this, args); + } else { + return orig(args[0], args[1]); + } + }; + } + var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; -var _window$1 = typeof window !== 'undefined' ? window : typeof commonjsGlobal !== 'undefined' ? commonjsGlobal : typeof self !== 'undefined' ? self : {}; + function wrapEventTarget(global) { + var proto = _window[global] && _window[global].prototype; + if (proto && proto.hasOwnProperty && proto.hasOwnProperty('addEventListener')) { + fill( + proto, + 'addEventListener', + function(orig) { + return function(evtName, fn, capture, secure) { + // preserve arity + try { + if (fn && fn.handleEvent) { + fn.handleEvent = self.wrap(fn.handleEvent); + } + } catch (err) { + // can sometimes get 'Permission denied to access property "handle Event' + } -var _document = _window$1.document; -var _navigator = _window$1.navigator; + // More breadcrumb DOM capture ... done here and not in `_instrumentBreadcrumbs` + // so that we don't have more than one wrapper function + var before, clickHandler, keypressHandler; + + if ( + autoBreadcrumbs && + autoBreadcrumbs.dom && + (global === 'EventTarget' || global === 'Node') + ) { + // NOTE: generating multiple handlers per addEventListener invocation, should + // revisit and verify we can just use one (almost certainly) + clickHandler = self._breadcrumbEventHandler('click'); + keypressHandler = self._keypressEventHandler(); + before = function(evt) { + // need to intercept every DOM event in `before` argument, in case that + // same wrapped method is re-used for different events (e.g. mousemove THEN click) + // see #724 + if (!evt) return; + + var eventType; + try { + eventType = evt.type; + } catch (e) { + // just accessing event properties can throw an exception in some rare circumstances + // see: https://github.com/getsentry/raven-js/issues/838 + return; + } + if (eventType === 'click') return clickHandler(evt); + else if (eventType === 'keypress') return keypressHandler(evt); + }; + } + return orig.call( + this, + evtName, + self.wrap(fn, undefined, before), + capture, + secure + ); + }; + }, + wrappedBuiltIns + ); + fill( + proto, + 'removeEventListener', + function(orig) { + return function(evt, fn, capture, secure) { + try { + fn = fn && (fn.__raven_wrapper__ ? fn.__raven_wrapper__ : fn); + } catch (e) { + // ignore, accessing __raven_wrapper__ will throw in some Selenium environments + } + return orig.call(this, evt, fn, capture, secure); + }; + }, + wrappedBuiltIns + ); + } + } -function keepOriginalCallback(original, callback) { - return isFunction(callback) ? function (data) { - return callback(data, original); - } : callback; -} // First, check for JSON support -// If there is no JSON, we no-op the core features of Raven -// since JSON is required to encode the payload + fill(_window, 'setTimeout', wrapTimeFn, wrappedBuiltIns); + fill(_window, 'setInterval', wrapTimeFn, wrappedBuiltIns); + if (_window.requestAnimationFrame) { + fill( + _window, + 'requestAnimationFrame', + function(orig) { + return function(cb) { + return orig(self.wrap(cb)); + }; + }, + wrappedBuiltIns + ); + } + // event targets borrowed from bugsnag-js: + // https://github.com/bugsnag/bugsnag-js/blob/master/src/bugsnag.js#L666 + var eventTargets = [ + 'EventTarget', + 'Window', + 'Node', + 'ApplicationCache', + 'AudioTrackList', + 'ChannelMergerNode', + 'CryptoOperation', + 'EventSource', + 'FileReader', + 'HTMLUnknownElement', + 'IDBDatabase', + 'IDBRequest', + 'IDBTransaction', + 'KeyOperation', + 'MediaController', + 'MessagePort', + 'ModalWindow', + 'Notification', + 'SVGElementInstance', + 'Screen', + 'TextTrack', + 'TextTrackCue', + 'TextTrackList', + 'WebSocket', + 'WebSocketWorker', + 'Worker', + 'XMLHttpRequest', + 'XMLHttpRequestEventTarget', + 'XMLHttpRequestUpload' + ]; + for (var i = 0; i < eventTargets.length; i++) { + wrapEventTarget(eventTargets[i]); + } + }, -function Raven$1() { - this._hasJSON = !!(_typeof(JSON) === 'object' && JSON.stringify); // Raven can run in contexts where there's no document (react-native) + /** + * Instrument browser built-ins w/ breadcrumb capturing + * - XMLHttpRequests + * - DOM interactions (click/typing) + * - window.location changes + * - console + * + * Can be disabled or individually configured via the `autoBreadcrumbs` config option + */ + _instrumentBreadcrumbs: function() { + var self = this; + var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; - this._hasDocument = !isUndefined(_document); - this._hasNavigator = !isUndefined(_navigator); - this._lastCapturedException = null; - this._lastData = null; - this._lastEventId = null; - this._globalServer = null; - this._globalKey = null; - this._globalProject = null; - this._globalContext = {}; - this._globalOptions = { - // SENTRY_RELEASE can be injected by https://github.com/getsentry/sentry-webpack-plugin - release: _window$1.SENTRY_RELEASE && _window$1.SENTRY_RELEASE.id, - logger: 'javascript', - ignoreErrors: [], - ignoreUrls: [], - whitelistUrls: [], - includePaths: [], - headers: null, - collectWindowErrors: true, - maxMessageLength: 0, - // By default, truncates URL values to 250 chars - maxUrlLength: 250, - stackTraceLimit: 50, - autoBreadcrumbs: true, - instrument: true, - sampleRate: 1 - }; - this._fetchDefaults = { - method: 'POST', - keepalive: true, - referrerPolicy: 'origin' - }; - this._ignoreOnError = 0; - this._isRavenInstalled = false; - this._originalErrorStackTraceLimit = Error.stackTraceLimit; // capture references to window.console *and* all its methods first - // before the console plugin has a chance to monkey patch + var wrappedBuiltIns = self._wrappedBuiltIns; - this._originalConsole = _window$1.console || {}; - this._originalConsoleMethods = {}; - this._plugins = []; - this._startTime = now(); - this._wrappedBuiltIns = []; - this._breadcrumbs = []; - this._lastCapturedEvent = null; - this._keypressTimeout; - this._location = _window$1.location; - this._lastHref = this._location && this._location.href; + function wrapProp(prop, xhr) { + if (prop in xhr && isFunction(xhr[prop])) { + fill(xhr, prop, function(orig) { + return self.wrap(orig); + }); // intentionally don't track filled methods on XHR instances + } + } - this._resetBackoff(); // eslint-disable-next-line guard-for-in + if (autoBreadcrumbs.xhr && 'XMLHttpRequest' in _window) { + var xhrproto = _window.XMLHttpRequest && _window.XMLHttpRequest.prototype; + fill( + xhrproto, + 'open', + function(origOpen) { + return function(method, url) { + // preserve arity + // if Sentry key appears in URL, don't capture + if (isString(url) && url.indexOf(self._globalKey) === -1) { + this.__raven_xhr = { + method: method, + url: url, + status_code: null + }; + } - for (var method in this._originalConsole) { - this._originalConsoleMethods[method] = this._originalConsole[method]; - } -} -/* - * The core Raven singleton - * - * @this {Raven} - */ + return origOpen.apply(this, arguments); + }; + }, + wrappedBuiltIns + ); + + fill( + xhrproto, + 'send', + function(origSend) { + return function() { + // preserve arity + var xhr = this; + function onreadystatechangeHandler() { + if (xhr.__raven_xhr && xhr.readyState === 4) { + try { + // touching statusCode in some platforms throws + // an exception + xhr.__raven_xhr.status_code = xhr.status; + } catch (e) { + /* do nothing */ + } -Raven$1.prototype = { - // Hardcode version string so that raven source can be loaded directly via - // webpack (using a build step causes webpack #1617). Grunt verifies that - // this value matches package.json during build. - // See: https://github.com/getsentry/raven-js/issues/465 - VERSION: '3.22.2', - debug: false, - TraceKit: tracekit, - // alias to TraceKit + self.captureBreadcrumb({ + type: 'http', + category: 'xhr', + data: xhr.__raven_xhr + }); + } + } - /* - * Configure Raven with a DSN and extra options - * - * @param {string} dsn The public Sentry DSN - * @param {object} options Set of global options [optional] - * @return {Raven} - */ - config: function config(dsn, options) { - var self = this; + var props = ['onload', 'onerror', 'onprogress']; + for (var j = 0; j < props.length; j++) { + wrapProp(props[j], xhr); + } - if (self._globalServer) { - this._logDebug('error', 'Error: Raven has already been configured'); + if ('onreadystatechange' in xhr && isFunction(xhr.onreadystatechange)) { + fill( + xhr, + 'onreadystatechange', + function(orig) { + return self.wrap(orig, undefined, onreadystatechangeHandler); + } /* intentionally don't track this instrumentation */ + ); + } else { + // if onreadystatechange wasn't actually set by the page on this xhr, we + // are free to set our own and capture the breadcrumb + xhr.onreadystatechange = onreadystatechangeHandler; + } - return self; + return origSend.apply(this, arguments); + }; + }, + wrappedBuiltIns + ); } - if (!dsn) return self; - var globalOptions = self._globalOptions; // merge in options + if (autoBreadcrumbs.xhr && supportsFetch()) { + fill( + _window, + 'fetch', + function(origFetch) { + return function() { + // preserve arity + // Make a copy of the arguments to prevent deoptimization + // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments + var args = new Array(arguments.length); + for (var i = 0; i < args.length; ++i) { + args[i] = arguments[i]; + } - if (options) { - each(options, function (key, value) { - // tags and extra are special and need to be put into context - if (key === 'tags' || key === 'extra' || key === 'user') { - self._globalContext[key] = value; - } else { - globalOptions[key] = value; - } - }); - } + var fetchInput = args[0]; + var method = 'GET'; + var url; - self.setDSN(dsn); // "Script error." is hard coded into browsers for errors that it can't read. - // this is the result of a script being pulled in from an external domain and CORS. + if (typeof fetchInput === 'string') { + url = fetchInput; + } else if ('Request' in _window && fetchInput instanceof _window.Request) { + url = fetchInput.url; + if (fetchInput.method) { + method = fetchInput.method; + } + } else { + url = '' + fetchInput; + } - globalOptions.ignoreErrors.push(/^Script error\.?$/); - globalOptions.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/); // join regexp rules into one big rule + // if Sentry key appears in URL, don't capture, as it's our own request + if (url.indexOf(self._globalKey) !== -1) { + return origFetch.apply(this, args); + } - globalOptions.ignoreErrors = joinRegExp(globalOptions.ignoreErrors); - globalOptions.ignoreUrls = globalOptions.ignoreUrls.length ? joinRegExp(globalOptions.ignoreUrls) : false; - globalOptions.whitelistUrls = globalOptions.whitelistUrls.length ? joinRegExp(globalOptions.whitelistUrls) : false; - globalOptions.includePaths = joinRegExp(globalOptions.includePaths); - globalOptions.maxBreadcrumbs = Math.max(0, Math.min(globalOptions.maxBreadcrumbs || 100, 100)); // default and hard limit is 100 + if (args[1] && args[1].method) { + method = args[1].method; + } - var autoBreadcrumbDefaults = { - xhr: true, - console: true, - dom: true, - location: true, - sentry: true - }; - var autoBreadcrumbs = globalOptions.autoBreadcrumbs; + var fetchData = { + method: method, + url: url, + status_code: null + }; - if ({}.toString.call(autoBreadcrumbs) === '[object Object]') { - autoBreadcrumbs = objectMerge(autoBreadcrumbDefaults, autoBreadcrumbs); - } else if (autoBreadcrumbs !== false) { - autoBreadcrumbs = autoBreadcrumbDefaults; + return origFetch + .apply(this, args) + .then(function(response) { + fetchData.status_code = response.status; + + self.captureBreadcrumb({ + type: 'http', + category: 'fetch', + data: fetchData + }); + + return response; + }) + ['catch'](function(err) { + // if there is an error performing the request + self.captureBreadcrumb({ + type: 'http', + category: 'fetch', + data: fetchData, + level: 'error' + }); + + throw err; + }); + }; + }, + wrappedBuiltIns + ); } - globalOptions.autoBreadcrumbs = autoBreadcrumbs; - var instrumentDefaults = { - tryCatch: true - }; - var instrument = globalOptions.instrument; - - if ({}.toString.call(instrument) === '[object Object]') { - instrument = objectMerge(instrumentDefaults, instrument); - } else if (instrument !== false) { - instrument = instrumentDefaults; + // Capture breadcrumbs from any click that is unhandled / bubbled up all the way + // to the document. Do this before we instrument addEventListener. + if (autoBreadcrumbs.dom && this._hasDocument) { + if (_document.addEventListener) { + _document.addEventListener('click', self._breadcrumbEventHandler('click'), false); + _document.addEventListener('keypress', self._keypressEventHandler(), false); + } else if (_document.attachEvent) { + // IE8 Compatibility + _document.attachEvent('onclick', self._breadcrumbEventHandler('click')); + _document.attachEvent('onkeypress', self._keypressEventHandler()); + } } - globalOptions.instrument = instrument; - tracekit.collectWindowErrors = !!globalOptions.collectWindowErrors; // return for chaining - - return self; - }, + // record navigation (URL) changes + // NOTE: in Chrome App environment, touching history.pushState, *even inside + // a try/catch block*, will cause Chrome to output an error to console.error + // borrowed from: https://github.com/angular/angular.js/pull/13945/files + var chrome = _window.chrome; + var isChromePackagedApp = chrome && chrome.app && chrome.app.runtime; + var hasPushAndReplaceState = + !isChromePackagedApp && + _window.history && + history.pushState && + history.replaceState; + if (autoBreadcrumbs.location && hasPushAndReplaceState) { + // TODO: remove onpopstate handler on uninstall() + var oldOnPopState = _window.onpopstate; + _window.onpopstate = function() { + var currentHref = self._location.href; + self._captureUrlChange(self._lastHref, currentHref); - /* - * Installs a global window.onerror error handler - * to capture and report uncaught exceptions. - * At this point, install() is required to be called due - * to the way TraceKit is set up. - * - * @return {Raven} - */ - install: function install() { - var self = this; + if (oldOnPopState) { + return oldOnPopState.apply(this, arguments); + } + }; - if (self.isSetup() && !self._isRavenInstalled) { - tracekit.report.subscribe(function () { - self._handleOnErrorStackInfo.apply(self, arguments); - }); + var historyReplacementFunction = function(origHistFunction) { + // note history.pushState.length is 0; intentionally not declaring + // params to preserve 0 arity + return function(/* state, title, url */) { + var url = arguments.length > 2 ? arguments[2] : undefined; - self._patchFunctionToString(); + // url argument is optional + if (url) { + // coerce to string (this is what pushState does) + self._captureUrlChange(self._lastHref, url + ''); + } - if (self._globalOptions.instrument && self._globalOptions.instrument.tryCatch) { - self._instrumentTryCatch(); - } + return origHistFunction.apply(this, arguments); + }; + }; - if (self._globalOptions.autoBreadcrumbs) self._instrumentBreadcrumbs(); // Install all of the plugins + fill(history, 'pushState', historyReplacementFunction, wrappedBuiltIns); + fill(history, 'replaceState', historyReplacementFunction, wrappedBuiltIns); + } - self._drainPlugins(); + if (autoBreadcrumbs.console && 'console' in _window && console.log) { + // console + var consoleMethodCallback = function(msg, data) { + self.captureBreadcrumb({ + message: msg, + level: data.level, + category: 'console' + }); + }; - self._isRavenInstalled = true; + each(['debug', 'info', 'warn', 'error', 'log'], function(_, level) { + wrapConsoleMethod(console, level, consoleMethodCallback); + }); } - - Error.stackTraceLimit = self._globalOptions.stackTraceLimit; - return this; }, - /* - * Set the DSN (can be called multiple time unlike config) - * - * @param {string} dsn The public Sentry DSN - */ - setDSN: function setDSN(dsn) { - var self = this, - uri = self._parseDSN(dsn), - lastSlash = uri.path.lastIndexOf('/'), - path = uri.path.substr(1, lastSlash); + _restoreBuiltIns: function() { + // restore any wrapped builtins + var builtin; + while (this._wrappedBuiltIns.length) { + builtin = this._wrappedBuiltIns.shift(); - self._dsn = dsn; - self._globalKey = uri.user; - self._globalSecret = uri.pass && uri.pass.substr(1); - self._globalProject = uri.path.substr(lastSlash + 1); - self._globalServer = self._getGlobalServer(uri); - self._globalEndpoint = self._globalServer + '/' + path + 'api/' + self._globalProject + '/store/'; // Reset backoff state since we may be pointing at a - // new project/server + var obj = builtin[0], + name = builtin[1], + orig = builtin[2]; - this._resetBackoff(); + obj[name] = orig; + } }, - /* - * Wrap code within a context so Raven can capture errors - * reliably across domains that is executed immediately. - * - * @param {object} options A specific set of options for this context [optional] - * @param {function} func The callback to be immediately executed within the context - * @param {array} args An array of arguments to be called with the callback [optional] - */ - context: function context(options, func, args) { - if (isFunction(options)) { - args = func || []; - func = options; - options = undefined; + _restoreConsole: function() { + // eslint-disable-next-line guard-for-in + for (var method in this._originalConsoleMethods) { + this._originalConsole[method] = this._originalConsoleMethods[method]; } - - return this.wrap(options, func).apply(this, args); }, - /* - * Wrap code within a context and returns back a new function to be executed - * - * @param {object} options A specific set of options for this context [optional] - * @param {function} func The function to be wrapped in a new context - * @param {function} func A function to call before the try/catch wrapper [optional, private] - * @return {function} The newly wrapped functions with a context - */ - wrap: function wrap(options, func, _before) { - var self = this; // 1 argument has been passed, and it's not a function - // so just return it - - if (isUndefined(func) && !isFunction(options)) { - return options; - } // options is optional - + _drainPlugins: function() { + var self = this; - if (isFunction(options)) { - func = options; - options = undefined; - } // At this point, we've passed along 2 arguments, and the second one - // is not a function either, so we'll just return the second argument. + // FIX ME TODO + each(this._plugins, function(_, plugin) { + var installer = plugin[0]; + var args = plugin[1]; + installer.apply(self, [self].concat(args)); + }); + }, + _parseDSN: function(str) { + var m = dsnPattern.exec(str), + dsn = {}, + i = 7; - if (!isFunction(func)) { - return func; - } // We don't wanna wrap it twice! + try { + while (i--) dsn[dsnKeys[i]] = m[i] || ''; + } catch (e) { + throw new RavenConfigError('Invalid DSN: ' + str); + } + if (dsn.pass && !this._globalOptions.allowSecretKey) { + throw new RavenConfigError( + 'Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key' + ); + } - try { - if (func.__raven__) { - return func; - } // If this has already been wrapped in the past, return that + return dsn; + }, + _getGlobalServer: function(uri) { + // assemble the endpoint from the uri pieces + var globalServer = '//' + uri.host + (uri.port ? ':' + uri.port : ''); - if (func.__raven_wrapper__) { - return func.__raven_wrapper__; - } - } catch (e) { - // Just accessing custom props in some Selenium environments - // can cause a "Permission denied" exception (see raven-js#495). - // Bail on wrapping and return the function as-is (defers to window.onerror). - return func; + if (uri.protocol) { + globalServer = uri.protocol + ':' + globalServer; } + return globalServer; + }, - function wrapped() { - var args = [], - i = arguments.length, - deep = !options || options && options.deep !== false; + _handleOnErrorStackInfo: function() { + // if we are intentionally ignoring errors via onerror, bail out + if (!this._ignoreOnError) { + this._handleStackInfo.apply(this, arguments); + } + }, - if (_before && isFunction(_before)) { - _before.apply(this, arguments); - } // Recursively wrap all of a function's arguments that are - // functions themselves. + _handleStackInfo: function(stackInfo, options) { + var frames = this._prepareFrames(stackInfo, options); + this._triggerEvent('handle', { + stackInfo: stackInfo, + options: options + }); - while (i--) { - args[i] = deep ? self.wrap(options, arguments[i]) : arguments[i]; - } + this._processException( + stackInfo.name, + stackInfo.message, + stackInfo.url, + stackInfo.lineno, + frames, + options + ); + }, - try { - // Attempt to invoke user-land function - // NOTE: If you are a Sentry user, and you are seeing this stack frame, it - // means Raven caught an error invoking your application code. This is - // expected behavior and NOT indicative of a bug with Raven.js. - return func.apply(this, args); - } catch (e) { - self._ignoreNextOnError(); + _prepareFrames: function(stackInfo, options) { + var self = this; + var frames = []; + if (stackInfo.stack && stackInfo.stack.length) { + each(stackInfo.stack, function(i, stack) { + var frame = self._normalizeFrame(stack, stackInfo.url); + if (frame) { + frames.push(frame); + } + }); - self.captureException(e, options); - throw e; + // e.g. frames captured via captureMessage throw + if (options && options.trimHeadFrames) { + for (var j = 0; j < options.trimHeadFrames && j < frames.length; j++) { + frames[j].in_app = false; + } } - } // copy over properties of the old function + } + frames = frames.slice(0, this._globalOptions.stackTraceLimit); + return frames; + }, + _normalizeFrame: function(frame, stackInfoUrl) { + // normalize the frames data + var normalized = { + filename: frame.url, + lineno: frame.line, + colno: frame.column, + function: frame.func || '?' + }; - for (var property in func) { - if (hasKey(func, property)) { - wrapped[property] = func[property]; - } + // Case when we don't have any information about the error + // E.g. throwing a string or raw object, instead of an `Error` in Firefox + // Generating synthetic error doesn't add any value here + // + // We should probably somehow let a user know that they should fix their code + if (!frame.url) { + normalized.filename = stackInfoUrl; // fallback to whole stacks url from onerror handler } - wrapped.prototype = func.prototype; - func.__raven_wrapper__ = wrapped; // Signal that this function has been wrapped/filled already - // for both debugging and to prevent it to being wrapped/filled twice + normalized.in_app = !// determine if an exception came from outside of our app + // first we check the global includePaths list. + ( + (!!this._globalOptions.includePaths.test && + !this._globalOptions.includePaths.test(normalized.filename)) || + // Now we check for fun, if the function name is Raven or TraceKit + /(Raven|TraceKit)\./.test(normalized['function']) || + // finally, we do a last ditch effort and check for raven.min.js + /raven\.(min\.)?js$/.test(normalized.filename) + ); - wrapped.__raven__ = true; - wrapped.__orig__ = func; - return wrapped; + return normalized; }, - /* - * Uninstalls the global error handler. - * - * @return {Raven} - */ - uninstall: function uninstall() { - tracekit.report.uninstall(); + _processException: function(type, message, fileurl, lineno, frames, options) { + var prefixedMessage = (type ? type + ': ' : '') + (message || ''); + if ( + !!this._globalOptions.ignoreErrors.test && + (this._globalOptions.ignoreErrors.test(message) || + this._globalOptions.ignoreErrors.test(prefixedMessage)) + ) { + return; + } - this._unpatchFunctionToString(); + var stacktrace; - this._restoreBuiltIns(); + if (frames && frames.length) { + fileurl = frames[0].filename || fileurl; + // Sentry expects frames oldest to newest + // and JS sends them as newest to oldest + frames.reverse(); + stacktrace = {frames: frames}; + } else if (fileurl) { + stacktrace = { + frames: [ + { + filename: fileurl, + lineno: lineno, + in_app: true + } + ] + }; + } - this._restoreConsole(); + if ( + !!this._globalOptions.ignoreUrls.test && + this._globalOptions.ignoreUrls.test(fileurl) + ) { + return; + } - Error.stackTraceLimit = this._originalErrorStackTraceLimit; - this._isRavenInstalled = false; - return this; - }, + if ( + !!this._globalOptions.whitelistUrls.test && + !this._globalOptions.whitelistUrls.test(fileurl) + ) { + return; + } - /* - * Manually capture an exception and send it over to Sentry - * - * @param {error} ex An exception to be logged - * @param {object} options A specific set of options for this error [optional] - * @return {Raven} - */ - captureException: function captureException(ex, options) { - options = objectMerge({ - trimHeadFrames: 0 - }, options ? options : {}); // Cases for sending ex as a message, rather than an exception + var data = objectMerge( + { + // sentry.interfaces.Exception + exception: { + values: [ + { + type: type, + value: message, + stacktrace: stacktrace + } + ] + }, + culprit: fileurl + }, + options + ); + + // Fire away! + this._send(data); + }, - var isNotError = !isError(ex); - var isNotErrorEvent = !isErrorEvent(ex); - var isErrorEventWithoutError = isErrorEvent(ex) && !ex.error; + _trimPacket: function(data) { + // For now, we only want to truncate the two different messages + // but this could/should be expanded to just trim everything + var max = this._globalOptions.maxMessageLength; + if (data.message) { + data.message = truncate(data.message, max); + } + if (data.exception) { + var exception = data.exception.values[0]; + exception.value = truncate(exception.value, max); + } - if (isNotError && isNotErrorEvent || isErrorEventWithoutError) { - return this.captureMessage(ex, objectMerge(options, { - stacktrace: true, - // if we fall back to captureMessage, default to attempting a new trace - trimHeadFrames: options.trimHeadFrames + 1 - })); - } // Get actual Error from ErrorEvent + var request = data.request; + if (request) { + if (request.url) { + request.url = truncate(request.url, this._globalOptions.maxUrlLength); + } + if (request.Referer) { + request.Referer = truncate(request.Referer, this._globalOptions.maxUrlLength); + } + } + if (data.breadcrumbs && data.breadcrumbs.values) + this._trimBreadcrumbs(data.breadcrumbs); - if (isErrorEvent(ex)) ex = ex.error; // Store the raw exception object for potential debugging and introspection + return data; + }, - this._lastCapturedException = ex; // TraceKit.report will re-raise any exception passed to it, - // which means you have to wrap it in try/catch. Instead, we - // can wrap it here and only re-raise if TraceKit.report - // raises an exception different from the one we asked to - // report on. + /** + * Truncate breadcrumb values (right now just URLs) + */ + _trimBreadcrumbs: function(breadcrumbs) { + // known breadcrumb properties with urls + // TODO: also consider arbitrary prop values that start with (https?)?:// + var urlProps = ['to', 'from', 'url'], + urlProp, + crumb, + data; - try { - var stack = tracekit.computeStackTrace(ex); + for (var i = 0; i < breadcrumbs.values.length; ++i) { + crumb = breadcrumbs.values[i]; + if ( + !crumb.hasOwnProperty('data') || + !isObject(crumb.data) || + objectFrozen(crumb.data) + ) + continue; - this._handleStackInfo(stack, options); - } catch (ex1) { - if (ex !== ex1) { - throw ex1; + data = objectMerge({}, crumb.data); + for (var j = 0; j < urlProps.length; ++j) { + urlProp = urlProps[j]; + if (data.hasOwnProperty(urlProp) && data[urlProp]) { + data[urlProp] = truncate(data[urlProp], this._globalOptions.maxUrlLength); + } } + breadcrumbs.values[i].data = data; } - - return this; }, - /* - * Manually send a message to Sentry - * - * @param {string} msg A plain message to be captured in Sentry - * @param {object} options A specific set of options for this message [optional] - * @return {Raven} - */ - captureMessage: function captureMessage(msg, options) { - // config() automagically converts ignoreErrors from a list to a RegExp so we need to test for an - // early call; we'll error on the side of logging anything called before configuration since it's - // probably something you should see: - if (!!this._globalOptions.ignoreErrors.test && this._globalOptions.ignoreErrors.test(msg)) { - return; + _getHttpData: function() { + if (!this._hasNavigator && !this._hasDocument) return; + var httpData = {}; + + if (this._hasNavigator && _navigator.userAgent) { + httpData.headers = { + 'User-Agent': navigator.userAgent + }; } - options = options || {}; - var data = objectMerge({ - message: msg + '' // Make sure it's actually a string + // Check in `window` instead of `document`, as we may be in ServiceWorker environment + if (_window.location && _window.location.href) { + httpData.url = _window.location.href; + } - }, options); - var ex; // Generate a "synthetic" stack trace from this point. - // NOTE: If you are a Sentry user, and you are seeing this stack frame, it is NOT indicative - // of a bug with Raven.js. Sentry generates synthetic traces either by configuration, - // or if it catches a thrown object without a "stack" property. + if (this._hasDocument && _document.referrer) { + if (!httpData.headers) httpData.headers = {}; + httpData.headers.Referer = _document.referrer; + } - try { - throw new Error(msg); - } catch (ex1) { - ex = ex1; - } // null exception name so `Error` isn't prefixed to msg + return httpData; + }, + _resetBackoff: function() { + this._backoffDuration = 0; + this._backoffStart = null; + }, - ex.name = null; - var stack = tracekit.computeStackTrace(ex); // stack[0] is `throw new Error(msg)` call itself, we are interested in the frame that was just before that, stack[1] + _shouldBackoff: function() { + return this._backoffDuration && now() - this._backoffStart < this._backoffDuration; + }, - var initialCall = isArray(stack.stack) && stack.stack[1]; - var fileurl = initialCall && initialCall.url || ''; + /** + * Returns true if the in-process data payload matches the signature + * of the previously-sent data + * + * NOTE: This has to be done at this level because TraceKit can generate + * data from window.onerror WITHOUT an exception object (IE8, IE9, + * other old browsers). This can take the form of an "exception" + * data object with a single frame (derived from the onerror args). + */ + _isRepeatData: function(current) { + var last = this._lastData; - if (!!this._globalOptions.ignoreUrls.test && this._globalOptions.ignoreUrls.test(fileurl)) { - return; + if ( + !last || + current.message !== last.message || // defined for captureMessage + current.culprit !== last.culprit // defined for captureException/onerror + ) + return false; + + // Stacktrace interface (i.e. from captureMessage) + if (current.stacktrace || last.stacktrace) { + return isSameStacktrace(current.stacktrace, last.stacktrace); + } else if (current.exception || last.exception) { + // Exception interface (i.e. from captureException/onerror) + return isSameException(current.exception, last.exception); } - if (!!this._globalOptions.whitelistUrls.test && !this._globalOptions.whitelistUrls.test(fileurl)) { + return true; + }, + + _setBackoffState: function(request) { + // If we are already in a backoff state, don't change anything + if (this._shouldBackoff()) { return; } - if (this._globalOptions.stacktrace || options && options.stacktrace) { - options = objectMerge({ - // fingerprint on msg, not stack trace (legacy behavior, could be - // revisited) - fingerprint: msg, - // since we know this is a synthetic trace, the top N-most frames - // MUST be from Raven.js, so mark them as in_app later by setting - // trimHeadFrames - trimHeadFrames: (options.trimHeadFrames || 0) + 1 - }, options); + var status = request.status; - var frames = this._prepareFrames(stack, options); + // 400 - project_id doesn't exist or some other fatal + // 401 - invalid/revoked dsn + // 429 - too many requests + if (!(status === 400 || status === 401 || status === 429)) return; - data.stacktrace = { - // Sentry expects frames oldest to newest - frames: frames.reverse() - }; - } // Fire away! + var retry; + try { + // If Retry-After is not in Access-Control-Expose-Headers, most + // browsers will throw an exception trying to access it + if (supportsFetch()) { + retry = request.headers.get('Retry-After'); + } else { + retry = request.getResponseHeader('Retry-After'); + } + // Retry-After is returned in seconds + retry = parseInt(retry, 10) * 1000; + } catch (e) { + /* eslint no-empty:0 */ + } - this._send(data); + this._backoffDuration = retry + ? // If Sentry server returned a Retry-After value, use it + retry + : // Otherwise, double the last backoff duration (starts at 1 sec) + this._backoffDuration * 2 || 1000; - return this; + this._backoffStart = now(); }, - captureBreadcrumb: function captureBreadcrumb(obj) { - var crumb = objectMerge({ - timestamp: now() / 1000 - }, obj); - if (isFunction(this._globalOptions.breadcrumbCallback)) { - var result = this._globalOptions.breadcrumbCallback(crumb); + _send: function(data) { + var globalOptions = this._globalOptions; - if (isObject(result) && !isEmptyObject(result)) { - crumb = result; - } else if (result === false) { - return this; - } + var baseData = { + project: this._globalProject, + logger: globalOptions.logger, + platform: 'javascript' + }, + httpData = this._getHttpData(); + + if (httpData) { + baseData.request = httpData; } - this._breadcrumbs.push(crumb); + // HACK: delete `trimHeadFrames` to prevent from appearing in outbound payload + if (data.trimHeadFrames) delete data.trimHeadFrames; - if (this._breadcrumbs.length > this._globalOptions.maxBreadcrumbs) { - this._breadcrumbs.shift(); - } + data = objectMerge(baseData, data); - return this; - }, - addPlugin: function addPlugin(plugin - /*arg1, arg2, ... argN*/ - ) { - var pluginArgs = [].slice.call(arguments, 1); + // Merge in the tags and extra separately since objectMerge doesn't handle a deep merge + data.tags = objectMerge(objectMerge({}, this._globalContext.tags), data.tags); + data.extra = objectMerge(objectMerge({}, this._globalContext.extra), data.extra); - this._plugins.push([plugin, pluginArgs]); + // Send along our own collected metadata with extra + data.extra['session:duration'] = now() - this._startTime; - if (this._isRavenInstalled) { - this._drainPlugins(); + if (this._breadcrumbs && this._breadcrumbs.length > 0) { + // intentionally make shallow copy so that additions + // to breadcrumbs aren't accidentally sent in this request + data.breadcrumbs = { + values: [].slice.call(this._breadcrumbs, 0) + }; } - return this; - }, + if (this._globalContext.user) { + // sentry.interfaces.User + data.user = this._globalContext.user; + } - /* - * Set/clear a user to be sent along with the payload. - * - * @param {object} user An object representing user data [optional] - * @return {Raven} - */ - setUserContext: function setUserContext(user) { - // Intentionally do not merge here since that's an unexpected behavior. - this._globalContext.user = user; - return this; - }, + // Include the environment if it's defined in globalOptions + if (globalOptions.environment) data.environment = globalOptions.environment; - /* - * Merge extra attributes to be sent along with the payload. - * - * @param {object} extra An object representing extra data [optional] - * @return {Raven} - */ - setExtraContext: function setExtraContext(extra) { - this._mergeContext('extra', extra); + // Include the release if it's defined in globalOptions + if (globalOptions.release) data.release = globalOptions.release; - return this; - }, + // Include server_name if it's defined in globalOptions + if (globalOptions.serverName) data.server_name = globalOptions.serverName; - /* - * Merge tags to be sent along with the payload. - * - * @param {object} tags An object representing tags [optional] - * @return {Raven} - */ - setTagsContext: function setTagsContext(tags) { - this._mergeContext('tags', tags); + data = this._sanitizeData(data); - return this; - }, + // Cleanup empty properties before sending them to the server + Object.keys(data).forEach(function(key) { + if (data[key] == null || data[key] === '' || isEmptyObject(data[key])) { + delete data[key]; + } + }); - /* - * Clear all of the context. - * - * @return {Raven} - */ - clearContext: function clearContext() { - this._globalContext = {}; - return this; - }, + if (isFunction(globalOptions.dataCallback)) { + data = globalOptions.dataCallback(data) || data; + } - /* - * Get a copy of the current context. This cannot be mutated. - * - * @return {object} copy of context - */ - getContext: function getContext() { - // lol javascript - return JSON.parse(stringify_1(this._globalContext)); - }, + // Why?????????? + if (!data || isEmptyObject(data)) { + return; + } - /* - * Set environment of application - * - * @param {string} environment Typically something like 'production'. - * @return {Raven} - */ - setEnvironment: function setEnvironment(environment) { - this._globalOptions.environment = environment; - return this; - }, + // Check if the request should be filtered or not + if ( + isFunction(globalOptions.shouldSendCallback) && + !globalOptions.shouldSendCallback(data) + ) { + return; + } - /* - * Set release version of application - * - * @param {string} release Typically something like a git SHA to identify version - * @return {Raven} - */ - setRelease: function setRelease(release) { - this._globalOptions.release = release; - return this; - }, + // Backoff state: Sentry server previously responded w/ an error (e.g. 429 - too many requests), + // so drop requests until "cool-off" period has elapsed. + if (this._shouldBackoff()) { + this._logDebug('warn', 'Raven dropped error due to backoff: ', data); + return; + } - /* - * Set the dataCallback option - * - * @param {function} callback The callback to run which allows the - * data blob to be mutated before sending - * @return {Raven} - */ - setDataCallback: function setDataCallback(callback) { - var original = this._globalOptions.dataCallback; - this._globalOptions.dataCallback = keepOriginalCallback(original, callback); - return this; + if (typeof globalOptions.sampleRate === 'number') { + if (Math.random() < globalOptions.sampleRate) { + this._sendProcessedPayload(data); + } + } else { + this._sendProcessedPayload(data); + } }, - /* - * Set the breadcrumbCallback option - * - * @param {function} callback The callback to run which allows filtering - * or mutating breadcrumbs - * @return {Raven} - */ - setBreadcrumbCallback: function setBreadcrumbCallback(callback) { - var original = this._globalOptions.breadcrumbCallback; - this._globalOptions.breadcrumbCallback = keepOriginalCallback(original, callback); - return this; + _sanitizeData: function(data) { + return sanitize(data, this._globalOptions.sanitizeKeys); }, - /* - * Set the shouldSendCallback option - * - * @param {function} callback The callback to run which allows - * introspecting the blob before sending - * @return {Raven} - */ - setShouldSendCallback: function setShouldSendCallback(callback) { - var original = this._globalOptions.shouldSendCallback; - this._globalOptions.shouldSendCallback = keepOriginalCallback(original, callback); - return this; + _getUuid: function() { + return uuid4(); }, - /** - * Override the default HTTP transport mechanism that transmits data - * to the Sentry server. - * - * @param {function} transport Function invoked instead of the default - * `makeRequest` handler. - * - * @return {Raven} - */ - setTransport: function setTransport(transport) { - this._globalOptions.transport = transport; - return this; - }, + _sendProcessedPayload: function(data, callback) { + var self = this; + var globalOptions = this._globalOptions; - /* - * Get the latest raw exception that was captured by Raven. - * - * @return {error} - */ - lastException: function lastException() { - return this._lastCapturedException; - }, + if (!this.isSetup()) return; - /* - * Get the last event id - * - * @return {string} - */ - lastEventId: function lastEventId() { - return this._lastEventId; - }, + // Try and clean up the packet before sending by truncating long values + data = this._trimPacket(data); - /* - * Determine if Raven is setup and ready to go. - * - * @return {boolean} - */ - isSetup: function isSetup() { - if (!this._hasJSON) return false; // needs JSON support + // ideally duplicate error testing should occur *before* dataCallback/shouldSendCallback, + // but this would require copying an un-truncated copy of the data packet, which can be + // arbitrarily deep (extra_data) -- could be worthwhile? will revisit + if (!this._globalOptions.allowDuplicates && this._isRepeatData(data)) { + this._logDebug('warn', 'Raven dropped repeat event: ', data); + return; + } - if (!this._globalServer) { - if (!this.ravenNotConfiguredError) { - this.ravenNotConfiguredError = true; + // Send along an event_id if not explicitly passed. + // This event_id can be used to reference the error within Sentry itself. + // Set lastEventId after we know the error should actually be sent + this._lastEventId = data.event_id || (data.event_id = this._getUuid()); - this._logDebug('error', 'Error: Raven has not been configured.'); - } + // Store outbound payload after trim + this._lastData = data; - return false; + this._logDebug('debug', 'Raven about to send:', data); + + var auth = { + sentry_version: '7', + sentry_client: 'raven-js/' + this.VERSION, + sentry_key: this._globalKey + }; + + if (this._globalSecret) { + auth.sentry_secret = this._globalSecret; } - return true; - }, - afterLoad: function afterLoad() { - // TODO: remove window dependence? - // Attempt to initialize Raven on load - var RavenConfig = _window$1.RavenConfig; + var exception = data.exception && data.exception.values[0]; - if (RavenConfig) { - this.config(RavenConfig.dsn, RavenConfig.config).install(); + // only capture 'sentry' breadcrumb is autoBreadcrumbs is truthy + if ( + this._globalOptions.autoBreadcrumbs && + this._globalOptions.autoBreadcrumbs.sentry + ) { + this.captureBreadcrumb({ + category: 'sentry', + message: exception + ? (exception.type ? exception.type + ': ' : '') + exception.value + : data.message, + event_id: data.event_id, + level: data.level || 'error' // presume error unless specified + }); } + + var url = this._globalEndpoint; + (globalOptions.transport || this._makeRequest).call(this, { + url: url, + auth: auth, + data: data, + options: globalOptions, + onSuccess: function success() { + self._resetBackoff(); + + self._triggerEvent('success', { + data: data, + src: url + }); + callback && callback(); + }, + onError: function failure(error) { + self._logDebug('error', 'Raven transport failed to send: ', error); + + if (error.request) { + self._setBackoffState(error.request); + } + + self._triggerEvent('failure', { + data: data, + src: url + }); + error = error || new Error('Raven send failed (no additional details provided)'); + callback && callback(error); + } + }); }, - showReportDialog: function showReportDialog(options) { - if (!_document // doesn't work without a document (React native) - ) return; - options = options || {}; - var lastEventId = options.eventId || this.lastEventId(); - if (!lastEventId) { - throw new configError('Missing eventId'); + _makeRequest: function(opts) { + // Auth is intentionally sent as part of query string (NOT as custom HTTP header) to avoid preflight CORS requests + var url = opts.url + '?' + urlencode(opts.auth); + + var evaluatedHeaders = null; + var evaluatedFetchParameters = {}; + + if (opts.options.headers) { + evaluatedHeaders = this._evaluateHash(opts.options.headers); } - var dsn = options.dsn || this._dsn; + if (opts.options.fetchParameters) { + evaluatedFetchParameters = this._evaluateHash(opts.options.fetchParameters); + } - if (!dsn) { - throw new configError('Missing DSN'); + if (supportsFetch()) { + evaluatedFetchParameters.body = stringify(opts.data); + + var defaultFetchOptions = objectMerge({}, this._fetchDefaults); + var fetchOptions = objectMerge(defaultFetchOptions, evaluatedFetchParameters); + + if (evaluatedHeaders) { + fetchOptions.headers = evaluatedHeaders; + } + + return _window + .fetch(url, fetchOptions) + .then(function(response) { + if (response.ok) { + opts.onSuccess && opts.onSuccess(); + } else { + var error = new Error('Sentry error code: ' + response.status); + // It's called request only to keep compatibility with XHR interface + // and not add more redundant checks in setBackoffState method + error.request = response; + opts.onError && opts.onError(error); + } + }) + ['catch'](function() { + opts.onError && + opts.onError(new Error('Sentry error code: network unavailable')); + }); } - var encode = encodeURIComponent; - var qs = ''; - qs += '?eventId=' + encode(lastEventId); - qs += '&dsn=' + encode(dsn); - var user = options.user || this._globalContext.user; + var request = _window.XMLHttpRequest && new _window.XMLHttpRequest(); + if (!request) return; - if (user) { - if (user.name) qs += '&name=' + encode(user.name); - if (user.email) qs += '&email=' + encode(user.email); + // if browser doesn't support CORS (e.g. IE7), we are out of luck + var hasCORS = 'withCredentials' in request || typeof XDomainRequest !== 'undefined'; + + if (!hasCORS) return; + + if ('withCredentials' in request) { + request.onreadystatechange = function() { + if (request.readyState !== 4) { + return; + } else if (request.status === 200) { + opts.onSuccess && opts.onSuccess(); + } else if (opts.onError) { + var err = new Error('Sentry error code: ' + request.status); + err.request = request; + opts.onError(err); + } + }; + } else { + request = new XDomainRequest(); + // xdomainrequest cannot go http -> https (or vice versa), + // so always use protocol relative + url = url.replace(/^https?:/, ''); + + // onreadystatechange not supported by XDomainRequest + if (opts.onSuccess) { + request.onload = opts.onSuccess; + } + if (opts.onError) { + request.onerror = function() { + var err = new Error('Sentry error code: XDomainRequest'); + err.request = request; + opts.onError(err); + }; + } } - var globalServer = this._getGlobalServer(this._parseDSN(dsn)); + request.open('POST', url); - var script = _document.createElement('script'); + if (evaluatedHeaders) { + each(evaluatedHeaders, function(key, value) { + request.setRequestHeader(key, value); + }); + } - script.async = true; - script.src = globalServer + '/api/embed/error-page/' + qs; + request.send(stringify(opts.data)); + }, - (_document.head || _document.body).appendChild(script); + _evaluateHash: function(hash) { + var evaluated = {}; + + for (var key in hash) { + if (hash.hasOwnProperty(key)) { + var value = hash[key]; + evaluated[key] = typeof value === 'function' ? value() : value; + } + } + + return evaluated; }, - /**** Private functions ****/ - _ignoreNextOnError: function _ignoreNextOnError() { - var self = this; - this._ignoreOnError += 1; - setTimeout(function () { - // onerror should trigger before setTimeout - self._ignoreOnError -= 1; - }); + _logDebug: function(level) { + // We allow `Raven.debug` and `Raven.config(DSN, { debug: true })` to not make backward incompatible API change + if ( + this._originalConsoleMethods[level] && + (this.debug || this._globalOptions.debug) + ) { + // In IE<10 console methods do not have their own 'apply' method + Function.prototype.apply.call( + this._originalConsoleMethods[level], + this._originalConsole, + [].slice.call(arguments, 1) + ); + } }, - _triggerEvent: function _triggerEvent(eventType, options) { - // NOTE: `event` is a native browser thing, so let's avoid conflicting wiht it - var evt, key; - if (!this._hasDocument) return; - options = options || {}; - eventType = 'raven' + eventType.substr(0, 1).toUpperCase() + eventType.substr(1); - if (_document.createEvent) { - evt = _document.createEvent('HTMLEvents'); - evt.initEvent(eventType, true, true); + _mergeContext: function(key, context) { + if (isUndefined(context)) { + delete this._globalContext[key]; } else { - evt = _document.createEventObject(); - evt.eventType = eventType; + this._globalContext[key] = objectMerge(this._globalContext[key] || {}, context); } + } +}; + +// Deprecations +Raven.prototype.setUser = Raven.prototype.setUserContext; +Raven.prototype.setReleaseContext = Raven.prototype.setRelease; + +module.exports = Raven; + +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"10":10,"11":11,"12":12,"13":13,"6":6,"7":7}],9:[function(_dereq_,module,exports){ +(function (global){ +/** + * Enforces a single instance of the Raven client, and the + * main entry point for Raven. If you are a consumer of the + * Raven library, you SHOULD load this file (vs raven.js). + **/ + +var RavenConstructor = _dereq_(8); + +// This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) +var _window = + typeof window !== 'undefined' + ? window + : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; +var _Raven = _window.Raven; + +var Raven = new RavenConstructor(); + +/* + * Allow multiple versions of Raven to be installed. + * Strip Raven from the global context and returns the instance. + * + * @return {Raven} + */ +Raven.noConflict = function() { + _window.Raven = _Raven; + return Raven; +}; - for (key in options) { - if (hasKey(options, key)) { - evt[key] = options[key]; - } - } +Raven.afterLoad(); - if (_document.createEvent) { - // IE9 if standards - _document.dispatchEvent(evt); - } else { - // IE8 regardless of Quirks or Standards - // IE9 if quirks - try { - _document.fireEvent('on' + evt.eventType.toLowerCase(), evt); - } catch (e) {// Do nothing - } - } - }, +module.exports = Raven; - /** - * Wraps addEventListener to capture UI breadcrumbs - * @param evtName the event name (e.g. "click") - * @returns {Function} - * @private - */ - _breadcrumbEventHandler: function _breadcrumbEventHandler(evtName) { - var self = this; - return function (evt) { - // reset keypress timeout; e.g. triggering a 'click' after - // a 'keypress' will reset the keypress debounce so that a new - // set of keypresses can be recorded - self._keypressTimeout = null; // It's possible this handler might trigger multiple times for the same - // event (e.g. event propagation through node ancestors). Ignore if we've - // already captured the event. +/** + * DISCLAIMER: + * + * Expose `Client` constructor for cases where user want to track multiple "sub-applications" in one larger app. + * It's not meant to be used by a wide audience, so pleaaase make sure that you know what you're doing before using it. + * Accidentally calling `install` multiple times, may result in an unexpected behavior that's very hard to debug. + * + * It's called `Client' to be in-line with Raven Node implementation. + * + * HOWTO: + * + * import Raven from 'raven-js'; + * + * const someAppReporter = new Raven.Client(); + * const someOtherAppReporter = new Raven.Client(); + * + * someAppReporter.config('__DSN__', { + * ...config goes here + * }); + * + * someOtherAppReporter.config('__OTHER_DSN__', { + * ...config goes here + * }); + * + * someAppReporter.captureMessage(...); + * someAppReporter.captureException(...); + * someAppReporter.captureBreadcrumb(...); + * + * someOtherAppReporter.captureMessage(...); + * someOtherAppReporter.captureException(...); + * someOtherAppReporter.captureBreadcrumb(...); + * + * It should "just work". + */ +module.exports.Client = RavenConstructor; - if (self._lastCapturedEvent === evt) return; - self._lastCapturedEvent = evt; // try/catch both: - // - accessing evt.target (see getsentry/raven-js#838, #768) - // - `htmlTreeAsString` because it's complex, and just accessing the DOM incorrectly - // can throw an exception in some circumstances. +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"8":8}],10:[function(_dereq_,module,exports){ +(function (global){ +var stringify = _dereq_(12); - var target; +var _window = + typeof window !== 'undefined' + ? window + : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; - try { - target = htmlTreeAsString(evt.target); - } catch (e) { - target = ''; - } +function isObject(what) { + return typeof what === 'object' && what !== null; +} - self.captureBreadcrumb({ - category: 'ui.' + evtName, - // e.g. ui.click, ui.input - message: target - }); - }; - }, +// Yanked from https://git.io/vS8DV re-used under CC0 +// with some tiny modifications +function isError(value) { + switch ({}.toString.call(value)) { + case '[object Error]': + return true; + case '[object Exception]': + return true; + case '[object DOMException]': + return true; + default: + return value instanceof Error; + } +} - /** - * Wraps addEventListener to capture keypress UI events - * @returns {Function} - * @private - */ - _keypressEventHandler: function _keypressEventHandler() { - var self = this, - debounceDuration = 1000; // milliseconds - // TODO: if somehow user switches keypress target before - // debounce timeout is triggered, we will only capture - // a single breadcrumb from the FIRST target (acceptable?) +function isErrorEvent(value) { + return supportsErrorEvent() && {}.toString.call(value) === '[object ErrorEvent]'; +} - return function (evt) { - var target; +function isUndefined(what) { + return what === void 0; +} - try { - target = evt.target; - } catch (e) { - // just accessing event properties can throw an exception in some rare circumstances - // see: https://github.com/getsentry/raven-js/issues/838 - return; - } +function isFunction(what) { + return typeof what === 'function'; +} - var tagName = target && target.tagName; // only consider keypress events on actual input elements - // this will disregard keypresses targeting body (e.g. tabbing - // through elements, hotkeys, etc) +function isPlainObject(what) { + return Object.prototype.toString.call(what) === '[object Object]'; +} - if (!tagName || tagName !== 'INPUT' && tagName !== 'TEXTAREA' && !target.isContentEditable) return; // record first keypress in a series, but ignore subsequent - // keypresses until debounce clears +function isString(what) { + return Object.prototype.toString.call(what) === '[object String]'; +} - var timeout = self._keypressTimeout; +function isArray(what) { + return Object.prototype.toString.call(what) === '[object Array]'; +} - if (!timeout) { - self._breadcrumbEventHandler('input')(evt); - } +function isEmptyObject(what) { + if (!isPlainObject(what)) return false; - clearTimeout(timeout); - self._keypressTimeout = setTimeout(function () { - self._keypressTimeout = null; - }, debounceDuration); - }; - }, + for (var _ in what) { + if (what.hasOwnProperty(_)) { + return false; + } + } + return true; +} - /** - * Captures a breadcrumb of type "navigation", normalizing input URLs - * @param to the originating URL - * @param from the target URL - * @private - */ - _captureUrlChange: function _captureUrlChange(from, to) { - var parsedLoc = parseUrl(this._location.href); - var parsedTo = parseUrl(to); - var parsedFrom = parseUrl(from); // because onpopstate only tells you the "new" (to) value of location.href, and - // not the previous (from) value, we need to track the value of the current URL - // state ourselves +function supportsErrorEvent() { + try { + new ErrorEvent(''); // eslint-disable-line no-new + return true; + } catch (e) { + return false; + } +} - this._lastHref = to; // Use only the path component of the URL if the URL matches the current - // document (almost all the time when using pushState) +function supportsFetch() { + if (!('fetch' in _window)) return false; - if (parsedLoc.protocol === parsedTo.protocol && parsedLoc.host === parsedTo.host) to = parsedTo.relative; - if (parsedLoc.protocol === parsedFrom.protocol && parsedLoc.host === parsedFrom.host) from = parsedFrom.relative; - this.captureBreadcrumb({ - category: 'navigation', - data: { - to: to, - from: from - } + try { + new Headers(); // eslint-disable-line no-new + new Request(''); // eslint-disable-line no-new + new Response(); // eslint-disable-line no-new + return true; + } catch (e) { + return false; + } +} + +// Despite all stars in the sky saying that Edge supports old draft syntax, aka 'never', 'always', 'origin' and 'default +// https://caniuse.com/#feat=referrer-policy +// It doesn't. And it throw exception instead of ignoring this parameter... +// REF: https://github.com/getsentry/raven-js/issues/1233 +function supportsReferrerPolicy() { + if (!supportsFetch()) return false; + + try { + // eslint-disable-next-line no-new + new Request('pickleRick', { + referrerPolicy: 'origin' }); - }, - _patchFunctionToString: function _patchFunctionToString() { - var self = this; - self._originalFunctionToString = Function.prototype.toString; // eslint-disable-next-line no-extend-native + return true; + } catch (e) { + return false; + } +} - Function.prototype.toString = function () { - if (typeof this === 'function' && this.__raven__) { - return self._originalFunctionToString.apply(this.__orig__, arguments); - } +function supportsPromiseRejectionEvent() { + return typeof PromiseRejectionEvent === 'function'; +} - return self._originalFunctionToString.apply(this, arguments); - }; - }, - _unpatchFunctionToString: function _unpatchFunctionToString() { - if (this._originalFunctionToString) { - // eslint-disable-next-line no-extend-native - Function.prototype.toString = this._originalFunctionToString; +function wrappedCallback(callback) { + function dataCallback(data, original) { + var normalizedData = callback(data) || data; + if (original) { + return original(normalizedData) || normalizedData; } - }, + return normalizedData; + } - /** - * Wrap timer functions and event targets to catch errors and provide - * better metadata. - */ - _instrumentTryCatch: function _instrumentTryCatch() { - var self = this; - var wrappedBuiltIns = self._wrappedBuiltIns; + return dataCallback; +} - function wrapTimeFn(orig) { - return function (fn, t) { - // preserve arity - // Make a copy of the arguments to prevent deoptimization - // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments - var args = new Array(arguments.length); +function each(obj, callback) { + var i, j; - for (var i = 0; i < args.length; ++i) { - args[i] = arguments[i]; - } + if (isUndefined(obj.length)) { + for (i in obj) { + if (hasKey(obj, i)) { + callback.call(null, i, obj[i]); + } + } + } else { + j = obj.length; + if (j) { + for (i = 0; i < j; i++) { + callback.call(null, i, obj[i]); + } + } + } +} - var originalCallback = args[0]; +function objectMerge(obj1, obj2) { + if (!obj2) { + return obj1; + } + each(obj2, function(key, value) { + obj1[key] = value; + }); + return obj1; +} - if (isFunction(originalCallback)) { - args[0] = self.wrap(originalCallback); - } // IE < 9 doesn't support .call/.apply on setInterval/setTimeout, but it - // also supports only two arguments and doesn't care what this is, so we - // can just call the original function directly. +/** + * This function is only used for react-native. + * react-native freezes object that have already been sent over the + * js bridge. We need this function in order to check if the object is frozen. + * So it's ok that objectFrozen returns false if Object.isFrozen is not + * supported because it's not relevant for other "platforms". See related issue: + * https://github.com/getsentry/react-native-sentry/issues/57 + */ +function objectFrozen(obj) { + if (!Object.isFrozen) { + return false; + } + return Object.isFrozen(obj); +} +function truncate(str, max) { + if (typeof max !== 'number') { + throw new Error('2nd argument to `truncate` function should be a number'); + } + if (typeof str !== 'string' || max === 0) { + return str; + } + return str.length <= max ? str : str.substr(0, max) + '\u2026'; +} - if (orig.apply) { - return orig.apply(this, args); - } else { - return orig(args[0], args[1]); - } - }; - } +/** + * hasKey, a better form of hasOwnProperty + * Example: hasKey(MainHostObject, property) === true/false + * + * @param {Object} host object to check property + * @param {string} key to check + */ +function hasKey(object, key) { + return Object.prototype.hasOwnProperty.call(object, key); +} - var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; +function joinRegExp(patterns) { + // Combine an array of regular expressions and strings into one large regexp + // Be mad. + var sources = [], + i = 0, + len = patterns.length, + pattern; - function wrapEventTarget(global) { - var proto = _window$1[global] && _window$1[global].prototype; + for (; i < len; i++) { + pattern = patterns[i]; + if (isString(pattern)) { + // If it's a string, we need to escape it + // Taken from: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions + sources.push(pattern.replace(/([.*+?^=!:${}()|\[\]\/\\])/g, '\\$1')); + } else if (pattern && pattern.source) { + // If it's a regexp already, we want to extract the source + sources.push(pattern.source); + } + // Intentionally skip other cases + } + return new RegExp(sources.join('|'), 'i'); +} - if (proto && proto.hasOwnProperty && proto.hasOwnProperty('addEventListener')) { - fill(proto, 'addEventListener', function (orig) { - return function (evtName, fn, capture, secure) { - // preserve arity - try { - if (fn && fn.handleEvent) { - fn.handleEvent = self.wrap(fn.handleEvent); - } - } catch (err) {} // can sometimes get 'Permission denied to access property "handle Event' - // More breadcrumb DOM capture ... done here and not in `_instrumentBreadcrumbs` - // so that we don't have more than one wrapper function +function urlencode(o) { + var pairs = []; + each(o, function(key, value) { + pairs.push(encodeURIComponent(key) + '=' + encodeURIComponent(value)); + }); + return pairs.join('&'); +} +// borrowed from https://tools.ietf.org/html/rfc3986#appendix-B +// intentionally using regex and not href parsing trick because React Native and other +// environments where DOM might not be available +function parseUrl(url) { + if (typeof url !== 'string') return {}; + var match = url.match(/^(([^:\/?#]+):)?(\/\/([^\/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?$/); - var before, clickHandler, keypressHandler; + // coerce to undefined values to empty string so we don't get 'undefined' + var query = match[6] || ''; + var fragment = match[8] || ''; + return { + protocol: match[2], + host: match[4], + path: match[5], + relative: match[5] + query + fragment // everything minus origin + }; +} +function uuid4() { + var crypto = _window.crypto || _window.msCrypto; - if (autoBreadcrumbs && autoBreadcrumbs.dom && (global === 'EventTarget' || global === 'Node')) { - // NOTE: generating multiple handlers per addEventListener invocation, should - // revisit and verify we can just use one (almost certainly) - clickHandler = self._breadcrumbEventHandler('click'); - keypressHandler = self._keypressEventHandler(); + if (!isUndefined(crypto) && crypto.getRandomValues) { + // Use window.crypto API if available + // eslint-disable-next-line no-undef + var arr = new Uint16Array(8); + crypto.getRandomValues(arr); - before = function before(evt) { - // need to intercept every DOM event in `before` argument, in case that - // same wrapped method is re-used for different events (e.g. mousemove THEN click) - // see #724 - if (!evt) return; - var eventType; + // set 4 in byte 7 + arr[3] = (arr[3] & 0xfff) | 0x4000; + // set 2 most significant bits of byte 9 to '10' + arr[4] = (arr[4] & 0x3fff) | 0x8000; - try { - eventType = evt.type; - } catch (e) { - // just accessing event properties can throw an exception in some rare circumstances - // see: https://github.com/getsentry/raven-js/issues/838 - return; - } + var pad = function(num) { + var v = num.toString(16); + while (v.length < 4) { + v = '0' + v; + } + return v; + }; - if (eventType === 'click') return clickHandler(evt);else if (eventType === 'keypress') return keypressHandler(evt); - }; - } + return ( + pad(arr[0]) + + pad(arr[1]) + + pad(arr[2]) + + pad(arr[3]) + + pad(arr[4]) + + pad(arr[5]) + + pad(arr[6]) + + pad(arr[7]) + ); + } else { + // http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/2117523#2117523 + return 'xxxxxxxxxxxx4xxxyxxxxxxxxxxxxxxx'.replace(/[xy]/g, function(c) { + var r = (Math.random() * 16) | 0, + v = c === 'x' ? r : (r & 0x3) | 0x8; + return v.toString(16); + }); + } +} - return orig.call(this, evtName, self.wrap(fn, undefined, before), capture, secure); - }; - }, wrappedBuiltIns); - fill(proto, 'removeEventListener', function (orig) { - return function (evt, fn, capture, secure) { - try { - fn = fn && (fn.__raven_wrapper__ ? fn.__raven_wrapper__ : fn); - } catch (e) {// ignore, accessing __raven_wrapper__ will throw in some Selenium environments - } +/** + * Given a child DOM element, returns a query-selector statement describing that + * and its ancestors + * e.g. [HTMLElement] => body > div > input#foo.btn[name=baz] + * @param elem + * @returns {string} + */ +function htmlTreeAsString(elem) { + /* eslint no-extra-parens:0*/ + var MAX_TRAVERSE_HEIGHT = 5, + MAX_OUTPUT_LEN = 80, + out = [], + height = 0, + len = 0, + separator = ' > ', + sepLength = separator.length, + nextStr; - return orig.call(this, evt, fn, capture, secure); - }; - }, wrappedBuiltIns); - } + while (elem && height++ < MAX_TRAVERSE_HEIGHT) { + nextStr = htmlElementAsString(elem); + // bail out if + // - nextStr is the 'html' element + // - the length of the string that would be created exceeds MAX_OUTPUT_LEN + // (ignore this limit if we are on the first iteration) + if ( + nextStr === 'html' || + (height > 1 && len + out.length * sepLength + nextStr.length >= MAX_OUTPUT_LEN) + ) { + break; } - fill(_window$1, 'setTimeout', wrapTimeFn, wrappedBuiltIns); - fill(_window$1, 'setInterval', wrapTimeFn, wrappedBuiltIns); + out.push(nextStr); - if (_window$1.requestAnimationFrame) { - fill(_window$1, 'requestAnimationFrame', function (orig) { - return function (cb) { - return orig(self.wrap(cb)); - }; - }, wrappedBuiltIns); - } // event targets borrowed from bugsnag-js: - // https://github.com/bugsnag/bugsnag-js/blob/master/src/bugsnag.js#L666 + len += nextStr.length; + elem = elem.parentNode; + } + return out.reverse().join(separator); +} - var eventTargets = ['EventTarget', 'Window', 'Node', 'ApplicationCache', 'AudioTrackList', 'ChannelMergerNode', 'CryptoOperation', 'EventSource', 'FileReader', 'HTMLUnknownElement', 'IDBDatabase', 'IDBRequest', 'IDBTransaction', 'KeyOperation', 'MediaController', 'MessagePort', 'ModalWindow', 'Notification', 'SVGElementInstance', 'Screen', 'TextTrack', 'TextTrackCue', 'TextTrackList', 'WebSocket', 'WebSocketWorker', 'Worker', 'XMLHttpRequest', 'XMLHttpRequestEventTarget', 'XMLHttpRequestUpload']; +/** + * Returns a simple, query-selector representation of a DOM element + * e.g. [HTMLElement] => input#foo.btn[name=baz] + * @param HTMLElement + * @returns {string} + */ +function htmlElementAsString(elem) { + var out = [], + className, + classes, + key, + attr, + i; - for (var i = 0; i < eventTargets.length; i++) { - wrapEventTarget(eventTargets[i]); - } - }, + if (!elem || !elem.tagName) { + return ''; + } - /** - * Instrument browser built-ins w/ breadcrumb capturing - * - XMLHttpRequests - * - DOM interactions (click/typing) - * - window.location changes - * - console - * - * Can be disabled or individually configured via the `autoBreadcrumbs` config option - */ - _instrumentBreadcrumbs: function _instrumentBreadcrumbs() { - var self = this; - var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; - var wrappedBuiltIns = self._wrappedBuiltIns; + out.push(elem.tagName.toLowerCase()); + if (elem.id) { + out.push('#' + elem.id); + } - function wrapProp(prop, xhr) { - if (prop in xhr && isFunction(xhr[prop])) { - fill(xhr, prop, function (orig) { - return self.wrap(orig); - }); // intentionally don't track filled methods on XHR instances - } + className = elem.className; + if (className && isString(className)) { + classes = className.split(/\s+/); + for (i = 0; i < classes.length; i++) { + out.push('.' + classes[i]); } + } + var attrWhitelist = ['type', 'name', 'title', 'alt']; + for (i = 0; i < attrWhitelist.length; i++) { + key = attrWhitelist[i]; + attr = elem.getAttribute(key); + if (attr) { + out.push('[' + key + '="' + attr + '"]'); + } + } + return out.join(''); +} - if (autoBreadcrumbs.xhr && 'XMLHttpRequest' in _window$1) { - var xhrproto = XMLHttpRequest.prototype; - fill(xhrproto, 'open', function (origOpen) { - return function (method, url) { - // preserve arity - // if Sentry key appears in URL, don't capture - if (isString(url) && url.indexOf(self._globalKey) === -1) { - this.__raven_xhr = { - method: method, - url: url, - status_code: null - }; - } - - return origOpen.apply(this, arguments); - }; - }, wrappedBuiltIns); - fill(xhrproto, 'send', function (origSend) { - return function () { - // preserve arity - var xhr = this; - - function onreadystatechangeHandler() { - if (xhr.__raven_xhr && xhr.readyState === 4) { - try { - // touching statusCode in some platforms throws - // an exception - xhr.__raven_xhr.status_code = xhr.status; - } catch (e) { - /* do nothing */ - } - - self.captureBreadcrumb({ - type: 'http', - category: 'xhr', - data: xhr.__raven_xhr - }); - } - } - - var props = ['onload', 'onerror', 'onprogress']; +/** + * Returns true if either a OR b is truthy, but not both + */ +function isOnlyOneTruthy(a, b) { + return !!(!!a ^ !!b); +} - for (var j = 0; j < props.length; j++) { - wrapProp(props[j], xhr); - } +/** + * Returns true if both parameters are undefined + */ +function isBothUndefined(a, b) { + return isUndefined(a) && isUndefined(b); +} - if ('onreadystatechange' in xhr && isFunction(xhr.onreadystatechange)) { - fill(xhr, 'onreadystatechange', function (orig) { - return self.wrap(orig, undefined, onreadystatechangeHandler); - } - /* intentionally don't track this instrumentation */ - ); - } else { - // if onreadystatechange wasn't actually set by the page on this xhr, we - // are free to set our own and capture the breadcrumb - xhr.onreadystatechange = onreadystatechangeHandler; - } +/** + * Returns true if the two input exception interfaces have the same content + */ +function isSameException(ex1, ex2) { + if (isOnlyOneTruthy(ex1, ex2)) return false; - return origSend.apply(this, arguments); - }; - }, wrappedBuiltIns); - } + ex1 = ex1.values[0]; + ex2 = ex2.values[0]; - if (autoBreadcrumbs.xhr && supportsFetch()) { - fill(_window$1, 'fetch', function (origFetch) { - return function () { - // preserve arity - // Make a copy of the arguments to prevent deoptimization - // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments - var args = new Array(arguments.length); - - for (var i = 0; i < args.length; ++i) { - args[i] = arguments[i]; - } + if (ex1.type !== ex2.type || ex1.value !== ex2.value) return false; - var fetchInput = args[0]; - var method = 'GET'; - var url; + // in case both stacktraces are undefined, we can't decide so default to false + if (isBothUndefined(ex1.stacktrace, ex2.stacktrace)) return false; - if (typeof fetchInput === 'string') { - url = fetchInput; - } else if ('Request' in _window$1 && fetchInput instanceof _window$1.Request) { - url = fetchInput.url; + return isSameStacktrace(ex1.stacktrace, ex2.stacktrace); +} - if (fetchInput.method) { - method = fetchInput.method; - } - } else { - url = '' + fetchInput; - } // if Sentry key appears in URL, don't capture, as it's our own request +/** + * Returns true if the two input stack trace interfaces have the same content + */ +function isSameStacktrace(stack1, stack2) { + if (isOnlyOneTruthy(stack1, stack2)) return false; + var frames1 = stack1.frames; + var frames2 = stack2.frames; - if (url.indexOf(self._globalKey) !== -1) { - return origFetch.apply(this, args); - } + // Exit early if frame count differs + if (frames1.length !== frames2.length) return false; - if (args[1] && args[1].method) { - method = args[1].method; - } + // Iterate through every frame; bail out if anything differs + var a, b; + for (var i = 0; i < frames1.length; i++) { + a = frames1[i]; + b = frames2[i]; + if ( + a.filename !== b.filename || + a.lineno !== b.lineno || + a.colno !== b.colno || + a['function'] !== b['function'] + ) + return false; + } + return true; +} - var fetchData = { - method: method, - url: url, - status_code: null - }; - return origFetch.apply(this, args).then(function (response) { - fetchData.status_code = response.status; - self.captureBreadcrumb({ - type: 'http', - category: 'fetch', - data: fetchData - }); - return response; - }); - }; - }, wrappedBuiltIns); - } // Capture breadcrumbs from any click that is unhandled / bubbled up all the way - // to the document. Do this before we instrument addEventListener. +/** + * Polyfill a method + * @param obj object e.g. `document` + * @param name method name present on object e.g. `addEventListener` + * @param replacement replacement function + * @param track {optional} record instrumentation to an array + */ +function fill(obj, name, replacement, track) { + if (obj == null) return; + var orig = obj[name]; + obj[name] = replacement(orig); + obj[name].__raven__ = true; + obj[name].__orig__ = orig; + if (track) { + track.push([obj, name, orig]); + } +} +/** + * Join values in array + * @param input array of values to be joined together + * @param delimiter string to be placed in-between values + * @returns {string} + */ +function safeJoin(input, delimiter) { + if (!isArray(input)) return ''; - if (autoBreadcrumbs.dom && this._hasDocument) { - if (_document.addEventListener) { - _document.addEventListener('click', self._breadcrumbEventHandler('click'), false); + var output = []; - _document.addEventListener('keypress', self._keypressEventHandler(), false); - } else { - // IE8 Compatibility - _document.attachEvent('onclick', self._breadcrumbEventHandler('click')); + for (var i = 0; i < input.length; i++) { + try { + output.push(String(input[i])); + } catch (e) { + output.push('[value cannot be serialized]'); + } + } - _document.attachEvent('onkeypress', self._keypressEventHandler()); - } - } // record navigation (URL) changes - // NOTE: in Chrome App environment, touching history.pushState, *even inside - // a try/catch block*, will cause Chrome to output an error to console.error - // borrowed from: https://github.com/angular/angular.js/pull/13945/files + return output.join(delimiter); +} +// Default Node.js REPL depth +var MAX_SERIALIZE_EXCEPTION_DEPTH = 3; +// 50kB, as 100kB is max payload size, so half sounds reasonable +var MAX_SERIALIZE_EXCEPTION_SIZE = 50 * 1024; +var MAX_SERIALIZE_KEYS_LENGTH = 40; - var chrome = _window$1.chrome; - var isChromePackagedApp = chrome && chrome.app && chrome.app.runtime; - var hasPushAndReplaceState = !isChromePackagedApp && _window$1.history && history.pushState && history.replaceState; +function utf8Length(value) { + return ~-encodeURI(value).split(/%..|./).length; +} - if (autoBreadcrumbs.location && hasPushAndReplaceState) { - // TODO: remove onpopstate handler on uninstall() - var oldOnPopState = _window$1.onpopstate; +function jsonSize(value) { + return utf8Length(JSON.stringify(value)); +} - _window$1.onpopstate = function () { - var currentHref = self._location.href; +function serializeValue(value) { + if (typeof value === 'string') { + var maxLength = 40; + return truncate(value, maxLength); + } else if ( + typeof value === 'number' || + typeof value === 'boolean' || + typeof value === 'undefined' + ) { + return value; + } - self._captureUrlChange(self._lastHref, currentHref); + var type = Object.prototype.toString.call(value); - if (oldOnPopState) { - return oldOnPopState.apply(this, arguments); - } - }; + // Node.js REPL notation + if (type === '[object Object]') return '[Object]'; + if (type === '[object Array]') return '[Array]'; + if (type === '[object Function]') + return value.name ? '[Function: ' + value.name + ']' : '[Function]'; - var historyReplacementFunction = function historyReplacementFunction(origHistFunction) { - // note history.pushState.length is 0; intentionally not declaring - // params to preserve 0 arity - return function () - /* state, title, url */ - { - var url = arguments.length > 2 ? arguments[2] : undefined; // url argument is optional + return value; +} - if (url) { - // coerce to string (this is what pushState does) - self._captureUrlChange(self._lastHref, url + ''); - } +function serializeObject(value, depth) { + if (depth === 0) return serializeValue(value); + + if (isPlainObject(value)) { + return Object.keys(value).reduce(function(acc, key) { + acc[key] = serializeObject(value[key], depth - 1); + return acc; + }, {}); + } else if (Array.isArray(value)) { + return value.map(function(val) { + return serializeObject(val, depth - 1); + }); + } - return origHistFunction.apply(this, arguments); - }; - }; + return serializeValue(value); +} - fill(history, 'pushState', historyReplacementFunction, wrappedBuiltIns); - fill(history, 'replaceState', historyReplacementFunction, wrappedBuiltIns); - } +function serializeException(ex, depth, maxSize) { + if (!isPlainObject(ex)) return ex; - if (autoBreadcrumbs.console && 'console' in _window$1 && console.log) { - // console - var consoleMethodCallback = function consoleMethodCallback(msg, data) { - self.captureBreadcrumb({ - message: msg, - level: data.level, - category: 'console' - }); - }; + depth = typeof depth !== 'number' ? MAX_SERIALIZE_EXCEPTION_DEPTH : depth; + maxSize = typeof depth !== 'number' ? MAX_SERIALIZE_EXCEPTION_SIZE : maxSize; - each(['debug', 'info', 'warn', 'error', 'log'], function (_, level) { - wrapConsoleMethod(console, level, consoleMethodCallback); - }); - } - }, - _restoreBuiltIns: function _restoreBuiltIns() { - // restore any wrapped builtins - var builtin; + var serialized = serializeObject(ex, depth); - while (this._wrappedBuiltIns.length) { - builtin = this._wrappedBuiltIns.shift(); - var obj = builtin[0], - name = builtin[1], - orig = builtin[2]; - obj[name] = orig; - } - }, - _restoreConsole: function _restoreConsole() { - // eslint-disable-next-line guard-for-in - for (var method in this._originalConsoleMethods) { - this._originalConsole[method] = this._originalConsoleMethods[method]; - } - }, - _drainPlugins: function _drainPlugins() { - var self = this; // FIX ME TODO + if (jsonSize(stringify(serialized)) > maxSize) { + return serializeException(ex, depth - 1); + } - each(this._plugins, function (_, plugin) { - var installer = plugin[0]; - var args = plugin[1]; - installer.apply(self, [self].concat(args)); - }); - }, - _parseDSN: function _parseDSN(str) { - var m = dsnPattern.exec(str), - dsn = {}, - i = 7; + return serialized; +} - try { - while (i--) { - dsn[dsnKeys[i]] = m[i] || ''; - } - } catch (e) { - throw new configError('Invalid DSN: ' + str); - } +function serializeKeysForMessage(keys, maxLength) { + if (typeof keys === 'number' || typeof keys === 'string') return keys.toString(); + if (!Array.isArray(keys)) return ''; - if (dsn.pass && !this._globalOptions.allowSecretKey) { - throw new configError('Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key'); - } + keys = keys.filter(function(key) { + return typeof key === 'string'; + }); + if (keys.length === 0) return '[object has no keys]'; - return dsn; - }, - _getGlobalServer: function _getGlobalServer(uri) { - // assemble the endpoint from the uri pieces - var globalServer = '//' + uri.host + (uri.port ? ':' + uri.port : ''); + maxLength = typeof maxLength !== 'number' ? MAX_SERIALIZE_KEYS_LENGTH : maxLength; + if (keys[0].length >= maxLength) return keys[0]; - if (uri.protocol) { - globalServer = uri.protocol + ':' + globalServer; - } + for (var usedKeys = keys.length; usedKeys > 0; usedKeys--) { + var serialized = keys.slice(0, usedKeys).join(', '); + if (serialized.length > maxLength) continue; + if (usedKeys === keys.length) return serialized; + return serialized + '\u2026'; + } - return globalServer; - }, - _handleOnErrorStackInfo: function _handleOnErrorStackInfo() { - // if we are intentionally ignoring errors via onerror, bail out - if (!this._ignoreOnError) { - this._handleStackInfo.apply(this, arguments); - } - }, - _handleStackInfo: function _handleStackInfo(stackInfo, options) { - var frames = this._prepareFrames(stackInfo, options); + return ''; +} - this._triggerEvent('handle', { - stackInfo: stackInfo, - options: options - }); +function sanitize(input, sanitizeKeys) { + if (!isArray(sanitizeKeys) || (isArray(sanitizeKeys) && sanitizeKeys.length === 0)) + return input; - this._processException(stackInfo.name, stackInfo.message, stackInfo.url, stackInfo.lineno, frames, options); - }, - _prepareFrames: function _prepareFrames(stackInfo, options) { - var self = this; - var frames = []; + var sanitizeRegExp = joinRegExp(sanitizeKeys); + var sanitizeMask = '********'; + var safeInput; - if (stackInfo.stack && stackInfo.stack.length) { - each(stackInfo.stack, function (i, stack) { - var frame = self._normalizeFrame(stack, stackInfo.url); + try { + safeInput = JSON.parse(stringify(input)); + } catch (o_O) { + return input; + } - if (frame) { - frames.push(frame); - } - }); // e.g. frames captured via captureMessage throw + function sanitizeWorker(workerInput) { + if (isArray(workerInput)) { + return workerInput.map(function(val) { + return sanitizeWorker(val); + }); + } - if (options && options.trimHeadFrames) { - for (var j = 0; j < options.trimHeadFrames && j < frames.length; j++) { - frames[j].in_app = false; + if (isPlainObject(workerInput)) { + return Object.keys(workerInput).reduce(function(acc, k) { + if (sanitizeRegExp.test(k)) { + acc[k] = sanitizeMask; + } else { + acc[k] = sanitizeWorker(workerInput[k]); } - } + return acc; + }, {}); } - frames = frames.slice(0, this._globalOptions.stackTraceLimit); - return frames; - }, - _normalizeFrame: function _normalizeFrame(frame, stackInfoUrl) { - // normalize the frames data - var normalized = { - filename: frame.url, - lineno: frame.line, - colno: frame.column, - function: frame.func || '?' - }; // Case when we don't have any information about the error - // E.g. throwing a string or raw object, instead of an `Error` in Firefox - // Generating synthetic error doesn't add any value here - // - // We should probably somehow let a user know that they should fix their code + return workerInput; + } - if (!frame.url) { - normalized.filename = stackInfoUrl; // fallback to whole stacks url from onerror handler - } + return sanitizeWorker(safeInput); +} - normalized.in_app = !( // determine if an exception came from outside of our app - // first we check the global includePaths list. - !!this._globalOptions.includePaths.test && !this._globalOptions.includePaths.test(normalized.filename) || // Now we check for fun, if the function name is Raven or TraceKit - /(Raven|TraceKit)\./.test(normalized['function']) || // finally, we do a last ditch effort and check for raven.min.js - /raven\.(min\.)?js$/.test(normalized.filename)); - return normalized; - }, - _processException: function _processException(type, message, fileurl, lineno, frames, options) { - var prefixedMessage = (type ? type + ': ' : '') + (message || ''); +module.exports = { + isObject: isObject, + isError: isError, + isErrorEvent: isErrorEvent, + isUndefined: isUndefined, + isFunction: isFunction, + isPlainObject: isPlainObject, + isString: isString, + isArray: isArray, + isEmptyObject: isEmptyObject, + supportsErrorEvent: supportsErrorEvent, + supportsFetch: supportsFetch, + supportsReferrerPolicy: supportsReferrerPolicy, + supportsPromiseRejectionEvent: supportsPromiseRejectionEvent, + wrappedCallback: wrappedCallback, + each: each, + objectMerge: objectMerge, + truncate: truncate, + objectFrozen: objectFrozen, + hasKey: hasKey, + joinRegExp: joinRegExp, + urlencode: urlencode, + uuid4: uuid4, + htmlTreeAsString: htmlTreeAsString, + htmlElementAsString: htmlElementAsString, + isSameException: isSameException, + isSameStacktrace: isSameStacktrace, + parseUrl: parseUrl, + fill: fill, + safeJoin: safeJoin, + serializeException: serializeException, + serializeKeysForMessage: serializeKeysForMessage, + sanitize: sanitize +}; - if (!!this._globalOptions.ignoreErrors.test && (this._globalOptions.ignoreErrors.test(message) || this._globalOptions.ignoreErrors.test(prefixedMessage))) { - return; - } +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"12":12}],11:[function(_dereq_,module,exports){ +(function (global){ +var utils = _dereq_(10); - var stacktrace; +/* + TraceKit - Cross brower stack traces - if (frames && frames.length) { - fileurl = frames[0].filename || fileurl; // Sentry expects frames oldest to newest - // and JS sends them as newest to oldest + This was originally forked from github.com/occ/TraceKit, but has since been + largely re-written and is now maintained as part of raven-js. Tests for + this are in test/vendor. - frames.reverse(); - stacktrace = { - frames: frames - }; - } else if (fileurl) { - stacktrace = { - frames: [{ - filename: fileurl, - lineno: lineno, - in_app: true - }] - }; - } + MIT license +*/ - if (!!this._globalOptions.ignoreUrls.test && this._globalOptions.ignoreUrls.test(fileurl)) { - return; - } +var TraceKit = { + collectWindowErrors: true, + debug: false +}; - if (!!this._globalOptions.whitelistUrls.test && !this._globalOptions.whitelistUrls.test(fileurl)) { - return; - } +// This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) +var _window = + typeof window !== 'undefined' + ? window + : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; - var data = objectMerge({ - // sentry.interfaces.Exception - exception: { - values: [{ - type: type, - value: message, - stacktrace: stacktrace - }] - }, - culprit: fileurl - }, options); // Fire away! +// global reference to slice +var _slice = [].slice; +var UNKNOWN_FUNCTION = '?'; - this._send(data); - }, - _trimPacket: function _trimPacket(data) { - // For now, we only want to truncate the two different messages - // but this could/should be expanded to just trim everything - var max = this._globalOptions.maxMessageLength; +// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error#Error_types +var ERROR_TYPES_RE = /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/; - if (data.message) { - data.message = truncate(data.message, max); - } +function getLocationHref() { + if (typeof document === 'undefined' || document.location == null) return ''; - if (data.exception) { - var exception = data.exception.values[0]; - exception.value = truncate(exception.value, max); - } + return document.location.href; +} - var request = data.request; +/** + * TraceKit.report: cross-browser processing of unhandled exceptions + * + * Syntax: + * TraceKit.report.subscribe(function(stackInfo) { ... }) + * TraceKit.report.unsubscribe(function(stackInfo) { ... }) + * TraceKit.report(exception) + * try { ...code... } catch(ex) { TraceKit.report(ex); } + * + * Supports: + * - Firefox: full stack trace with line numbers, plus column number + * on top frame; column number is not guaranteed + * - Opera: full stack trace with line and column numbers + * - Chrome: full stack trace with line and column numbers + * - Safari: line and column number for the top frame only; some frames + * may be missing, and column number is not guaranteed + * - IE: line and column number for the top frame only; some frames + * may be missing, and column number is not guaranteed + * + * In theory, TraceKit should work on all of the following versions: + * - IE5.5+ (only 8.0 tested) + * - Firefox 0.9+ (only 3.5+ tested) + * - Opera 7+ (only 10.50 tested; versions 9 and earlier may require + * Exceptions Have Stacktrace to be enabled in opera:config) + * - Safari 3+ (only 4+ tested) + * - Chrome 1+ (only 5+ tested) + * - Konqueror 3.5+ (untested) + * + * Requires TraceKit.computeStackTrace. + * + * Tries to catch all unhandled exceptions and report them to the + * subscribed handlers. Please note that TraceKit.report will rethrow the + * exception. This is REQUIRED in order to get a useful stack trace in IE. + * If the exception does not reach the top of the browser, you will only + * get a stack trace from the point where TraceKit.report was called. + * + * Handlers receive a stackInfo object as described in the + * TraceKit.computeStackTrace docs. + */ +TraceKit.report = (function reportModuleWrapper() { + var handlers = [], + lastArgs = null, + lastException = null, + lastExceptionStack = null; - if (request) { - if (request.url) { - request.url = truncate(request.url, this._globalOptions.maxUrlLength); + /** + * Add a crash handler. + * @param {Function} handler + */ + function subscribe(handler) { + installGlobalHandler(); + handlers.push(handler); + } + + /** + * Remove a crash handler. + * @param {Function} handler + */ + function unsubscribe(handler) { + for (var i = handlers.length - 1; i >= 0; --i) { + if (handlers[i] === handler) { + handlers.splice(i, 1); } + } + } - if (request.Referer) { - request.Referer = truncate(request.Referer, this._globalOptions.maxUrlLength); + /** + * Remove all crash handlers. + */ + function unsubscribeAll() { + uninstallGlobalHandler(); + handlers = []; + } + + /** + * Dispatch stack information to all handlers. + * @param {Object.} stack + */ + function notifyHandlers(stack, isWindowError) { + var exception = null; + if (isWindowError && !TraceKit.collectWindowErrors) { + return; + } + for (var i in handlers) { + if (handlers.hasOwnProperty(i)) { + try { + handlers[i].apply(null, [stack].concat(_slice.call(arguments, 2))); + } catch (inner) { + exception = inner; + } } } - if (data.breadcrumbs && data.breadcrumbs.values) this._trimBreadcrumbs(data.breadcrumbs); - return data; - }, + if (exception) { + throw exception; + } + } + + var _oldOnerrorHandler, _onErrorHandlerInstalled; /** - * Truncate breadcrumb values (right now just URLs) + * Ensures all global unhandled exceptions are recorded. + * Supported by Gecko and IE. + * @param {string} msg Error message. + * @param {string} url URL of script that generated the exception. + * @param {(number|string)} lineNo The line number at which the error + * occurred. + * @param {?(number|string)} colNo The column number at which the error + * occurred. + * @param {?Error} ex The actual Error object. */ - _trimBreadcrumbs: function _trimBreadcrumbs(breadcrumbs) { - // known breadcrumb properties with urls - // TODO: also consider arbitrary prop values that start with (https?)?:// - var urlProps = ['to', 'from', 'url'], - urlProp, - crumb, - data; + function traceKitWindowOnError(msg, url, lineNo, colNo, ex) { + var stack = null; + // If 'ex' is ErrorEvent, get real Error from inside + var exception = utils.isErrorEvent(ex) ? ex.error : ex; + // If 'msg' is ErrorEvent, get real message from inside + var message = utils.isErrorEvent(msg) ? msg.message : msg; - for (var i = 0; i < breadcrumbs.values.length; ++i) { - crumb = breadcrumbs.values[i]; - if (!crumb.hasOwnProperty('data') || !isObject(crumb.data) || objectFrozen(crumb.data)) continue; - data = objectMerge({}, crumb.data); + if (lastExceptionStack) { + TraceKit.computeStackTrace.augmentStackTraceWithInitialElement( + lastExceptionStack, + url, + lineNo, + message + ); + processLastException(); + } else if (exception && utils.isError(exception)) { + // non-string `exception` arg; attempt to extract stack trace - for (var j = 0; j < urlProps.length; ++j) { - urlProp = urlProps[j]; + // New chrome and blink send along a real error object + // Let's just report that like a normal error. + // See: https://mikewest.org/2013/08/debugging-runtime-errors-with-window-onerror + stack = TraceKit.computeStackTrace(exception); + notifyHandlers(stack, true); + } else { + var location = { + url: url, + line: lineNo, + column: colNo + }; - if (data.hasOwnProperty(urlProp) && data[urlProp]) { - data[urlProp] = truncate(data[urlProp], this._globalOptions.maxUrlLength); + var name = undefined; + var groups; + + if ({}.toString.call(message) === '[object String]') { + var groups = message.match(ERROR_TYPES_RE); + if (groups) { + name = groups[1]; + message = groups[2]; } } - breadcrumbs.values[i].data = data; - } - }, - _getHttpData: function _getHttpData() { - if (!this._hasNavigator && !this._hasDocument) return; - var httpData = {}; + location.func = UNKNOWN_FUNCTION; - if (this._hasNavigator && _navigator.userAgent) { - httpData.headers = { - 'User-Agent': navigator.userAgent + stack = { + name: name, + message: message, + url: getLocationHref(), + stack: [location] }; - } // Check in `window` instead of `document`, as we may be in ServiceWorker environment - - - if (_window$1.location && _window$1.location.href) { - httpData.url = _window$1.location.href; + notifyHandlers(stack, true); } - if (this._hasDocument && _document.referrer) { - if (!httpData.headers) httpData.headers = {}; - httpData.headers.Referer = _document.referrer; + if (_oldOnerrorHandler) { + return _oldOnerrorHandler.apply(this, arguments); } - return httpData; - }, - _resetBackoff: function _resetBackoff() { - this._backoffDuration = 0; - this._backoffStart = null; - }, - _shouldBackoff: function _shouldBackoff() { - return this._backoffDuration && now() - this._backoffStart < this._backoffDuration; - }, - - /** - * Returns true if the in-process data payload matches the signature - * of the previously-sent data - * - * NOTE: This has to be done at this level because TraceKit can generate - * data from window.onerror WITHOUT an exception object (IE8, IE9, - * other old browsers). This can take the form of an "exception" - * data object with a single frame (derived from the onerror args). - */ - _isRepeatData: function _isRepeatData(current) { - var last = this._lastData; - if (!last || current.message !== last.message || // defined for captureMessage - current.culprit !== last.culprit // defined for captureException/onerror - ) return false; // Stacktrace interface (i.e. from captureMessage) + return false; + } - if (current.stacktrace || last.stacktrace) { - return isSameStacktrace(current.stacktrace, last.stacktrace); - } else if (current.exception || last.exception) { - // Exception interface (i.e. from captureException/onerror) - return isSameException(current.exception, last.exception); + function installGlobalHandler() { + if (_onErrorHandlerInstalled) { + return; } + _oldOnerrorHandler = _window.onerror; + _window.onerror = traceKitWindowOnError; + _onErrorHandlerInstalled = true; + } - return true; - }, - _setBackoffState: function _setBackoffState(request) { - // If we are already in a backoff state, don't change anything - if (this._shouldBackoff()) { + function uninstallGlobalHandler() { + if (!_onErrorHandlerInstalled) { return; } + _window.onerror = _oldOnerrorHandler; + _onErrorHandlerInstalled = false; + _oldOnerrorHandler = undefined; + } - var status = request.status; // 400 - project_id doesn't exist or some other fatal - // 401 - invalid/revoked dsn - // 429 - too many requests - - if (!(status === 400 || status === 401 || status === 429)) return; - var retry; + function processLastException() { + var _lastExceptionStack = lastExceptionStack, + _lastArgs = lastArgs; + lastArgs = null; + lastExceptionStack = null; + lastException = null; + notifyHandlers.apply(null, [_lastExceptionStack, false].concat(_lastArgs)); + } - try { - // If Retry-After is not in Access-Control-Expose-Headers, most - // browsers will throw an exception trying to access it - if (supportsFetch()) { - retry = request.headers.get('Retry-After'); + /** + * Reports an unhandled Error to TraceKit. + * @param {Error} ex + * @param {?boolean} rethrow If false, do not re-throw the exception. + * Only used for window.onerror to not cause an infinite loop of + * rethrowing. + */ + function report(ex, rethrow) { + var args = _slice.call(arguments, 1); + if (lastExceptionStack) { + if (lastException === ex) { + return; // already caught by an inner catch block, ignore } else { - retry = request.getResponseHeader('Retry-After'); - } // Retry-After is returned in seconds - - - retry = parseInt(retry, 10) * 1000; - } catch (e) { - /* eslint no-empty:0 */ + processLastException(); + } } - this._backoffDuration = retry ? // If Sentry server returned a Retry-After value, use it - retry : // Otherwise, double the last backoff duration (starts at 1 sec) - this._backoffDuration * 2 || 1000; - this._backoffStart = now(); - }, - _send: function _send(data) { - var globalOptions = this._globalOptions; - - var baseData = { - project: this._globalProject, - logger: globalOptions.logger, - platform: 'javascript' - }, - httpData = this._getHttpData(); - - if (httpData) { - baseData.request = httpData; - } // HACK: delete `trimHeadFrames` to prevent from appearing in outbound payload - - - if (data.trimHeadFrames) delete data.trimHeadFrames; - data = objectMerge(baseData, data); // Merge in the tags and extra separately since objectMerge doesn't handle a deep merge - - data.tags = objectMerge(objectMerge({}, this._globalContext.tags), data.tags); - data.extra = objectMerge(objectMerge({}, this._globalContext.extra), data.extra); // Send along our own collected metadata with extra + var stack = TraceKit.computeStackTrace(ex); + lastExceptionStack = stack; + lastException = ex; + lastArgs = args; - data.extra['session:duration'] = now() - this._startTime; + // If the stack trace is incomplete, wait for 2 seconds for + // slow slow IE to see if onerror occurs or not before reporting + // this exception; otherwise, we will end up with an incomplete + // stack trace + setTimeout(function() { + if (lastException === ex) { + processLastException(); + } + }, stack.incomplete ? 2000 : 0); - if (this._breadcrumbs && this._breadcrumbs.length > 0) { - // intentionally make shallow copy so that additions - // to breadcrumbs aren't accidentally sent in this request - data.breadcrumbs = { - values: [].slice.call(this._breadcrumbs, 0) - }; + if (rethrow !== false) { + throw ex; // re-throw to propagate to the top level (and cause window.onerror) } + } - if (this._globalContext.user) { - // sentry.interfaces.User - data.user = this._globalContext.user; - } // Include the environment if it's defined in globalOptions - + report.subscribe = subscribe; + report.unsubscribe = unsubscribe; + report.uninstall = unsubscribeAll; + return report; +})(); - if (globalOptions.environment) data.environment = globalOptions.environment; // Include the release if it's defined in globalOptions +/** + * TraceKit.computeStackTrace: cross-browser stack traces in JavaScript + * + * Syntax: + * s = TraceKit.computeStackTrace(exception) // consider using TraceKit.report instead (see below) + * Returns: + * s.name - exception name + * s.message - exception message + * s.stack[i].url - JavaScript or HTML file URL + * s.stack[i].func - function name, or empty for anonymous functions (if guessing did not work) + * s.stack[i].args - arguments passed to the function, if known + * s.stack[i].line - line number, if known + * s.stack[i].column - column number, if known + * + * Supports: + * - Firefox: full stack trace with line numbers and unreliable column + * number on top frame + * - Opera 10: full stack trace with line and column numbers + * - Opera 9-: full stack trace with line numbers + * - Chrome: full stack trace with line and column numbers + * - Safari: line and column number for the topmost stacktrace element + * only + * - IE: no line numbers whatsoever + * + * Tries to guess names of anonymous functions by looking for assignments + * in the source code. In IE and Safari, we have to guess source file names + * by searching for function bodies inside all page scripts. This will not + * work for scripts that are loaded cross-domain. + * Here be dragons: some function names may be guessed incorrectly, and + * duplicate functions may be mismatched. + * + * TraceKit.computeStackTrace should only be used for tracing purposes. + * Logging of unhandled exceptions should be done with TraceKit.report, + * which builds on top of TraceKit.computeStackTrace and provides better + * IE support by utilizing the window.onerror event to retrieve information + * about the top of the stack. + * + * Note: In IE and Safari, no stack trace is recorded on the Error object, + * so computeStackTrace instead walks its *own* chain of callers. + * This means that: + * * in Safari, some methods may be missing from the stack trace; + * * in IE, the topmost function in the stack trace will always be the + * caller of computeStackTrace. + * + * This is okay for tracing (because you are likely to be calling + * computeStackTrace from the function you want to be the topmost element + * of the stack trace anyway), but not okay for logging unhandled + * exceptions (because your catch block will likely be far away from the + * inner function that actually caused the exception). + * + */ +TraceKit.computeStackTrace = (function computeStackTraceWrapper() { + // Contents of Exception in various browsers. + // + // SAFARI: + // ex.message = Can't find variable: qq + // ex.line = 59 + // ex.sourceId = 580238192 + // ex.sourceURL = http://... + // ex.expressionBeginOffset = 96 + // ex.expressionCaretOffset = 98 + // ex.expressionEndOffset = 98 + // ex.name = ReferenceError + // + // FIREFOX: + // ex.message = qq is not defined + // ex.fileName = http://... + // ex.lineNumber = 59 + // ex.columnNumber = 69 + // ex.stack = ...stack trace... (see the example below) + // ex.name = ReferenceError + // + // CHROME: + // ex.message = qq is not defined + // ex.name = ReferenceError + // ex.type = not_defined + // ex.arguments = ['aa'] + // ex.stack = ...stack trace... + // + // INTERNET EXPLORER: + // ex.message = ... + // ex.name = ReferenceError + // + // OPERA: + // ex.message = ...message... (see the example below) + // ex.name = ReferenceError + // ex.opera#sourceloc = 11 (pretty much useless, duplicates the info in ex.message) + // ex.stacktrace = n/a; see 'opera:config#UserPrefs|Exceptions Have Stacktrace' - if (globalOptions.release) data.release = globalOptions.release; // Include server_name if it's defined in globalOptions + /** + * Computes stack trace information from the stack property. + * Chrome and Gecko use this property. + * @param {Error} ex + * @return {?Object.} Stack trace information. + */ + function computeStackTraceFromStackProp(ex) { + if (typeof ex.stack === 'undefined' || !ex.stack) return; - if (globalOptions.serverName) data.server_name = globalOptions.serverName; // Cleanup empty properties before sending them to the server + var chrome = /^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i; + var winjs = /^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i; + // NOTE: blob urls are now supposed to always have an origin, therefore it's format + // which is `blob:http://url/path/with-some-uuid`, is matched by `blob.*?:\/` as well + var gecko = /^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i; + // Used to additionally parse URL/line/column from eval frames + var geckoEval = /(\S+) line (\d+)(?: > eval line \d+)* > eval/i; + var chromeEval = /\((\S*)(?::(\d+))(?::(\d+))\)/; + var lines = ex.stack.split('\n'); + var stack = []; + var submatch; + var parts; + var element; + var reference = /^(.*) is undefined$/.exec(ex.message); - Object.keys(data).forEach(function (key) { - if (data[key] == null || data[key] === '' || isEmptyObject(data[key])) { - delete data[key]; + for (var i = 0, j = lines.length; i < j; ++i) { + if ((parts = chrome.exec(lines[i]))) { + var isNative = parts[2] && parts[2].indexOf('native') === 0; // start of line + var isEval = parts[2] && parts[2].indexOf('eval') === 0; // start of line + if (isEval && (submatch = chromeEval.exec(parts[2]))) { + // throw out eval line/column and use top-most line/column number + parts[2] = submatch[1]; // url + parts[3] = submatch[2]; // line + parts[4] = submatch[3]; // column + } + element = { + url: !isNative ? parts[2] : null, + func: parts[1] || UNKNOWN_FUNCTION, + args: isNative ? [parts[2]] : [], + line: parts[3] ? +parts[3] : null, + column: parts[4] ? +parts[4] : null + }; + } else if ((parts = winjs.exec(lines[i]))) { + element = { + url: parts[2], + func: parts[1] || UNKNOWN_FUNCTION, + args: [], + line: +parts[3], + column: parts[4] ? +parts[4] : null + }; + } else if ((parts = gecko.exec(lines[i]))) { + var isEval = parts[3] && parts[3].indexOf(' > eval') > -1; + if (isEval && (submatch = geckoEval.exec(parts[3]))) { + // throw out eval line/column and use top-most line number + parts[3] = submatch[1]; + parts[4] = submatch[2]; + parts[5] = null; // no column when eval + } else if (i === 0 && !parts[5] && typeof ex.columnNumber !== 'undefined') { + // FireFox uses this awesome columnNumber property for its top frame + // Also note, Firefox's column number is 0-based and everything else expects 1-based, + // so adding 1 + // NOTE: this hack doesn't work if top-most frame is eval + stack[0].column = ex.columnNumber + 1; + } + element = { + url: parts[3], + func: parts[1] || UNKNOWN_FUNCTION, + args: parts[2] ? parts[2].split(',') : [], + line: parts[4] ? +parts[4] : null, + column: parts[5] ? +parts[5] : null + }; + } else { + continue; } - }); - - if (isFunction(globalOptions.dataCallback)) { - data = globalOptions.dataCallback(data) || data; - } // Why?????????? - - - if (!data || isEmptyObject(data)) { - return; - } // Check if the request should be filtered or not - - - if (isFunction(globalOptions.shouldSendCallback) && !globalOptions.shouldSendCallback(data)) { - return; - } // Backoff state: Sentry server previously responded w/ an error (e.g. 429 - too many requests), - // so drop requests until "cool-off" period has elapsed. - - - if (this._shouldBackoff()) { - this._logDebug('warn', 'Raven dropped error due to backoff: ', data); - - return; - } - if (typeof globalOptions.sampleRate === 'number') { - if (Math.random() < globalOptions.sampleRate) { - this._sendProcessedPayload(data); + if (!element.func && element.line) { + element.func = UNKNOWN_FUNCTION; } - } else { - this._sendProcessedPayload(data); - } - }, - _getUuid: function _getUuid() { - return uuid4(); - }, - _sendProcessedPayload: function _sendProcessedPayload(data, callback) { - var self = this; - var globalOptions = this._globalOptions; - if (!this.isSetup()) return; // Try and clean up the packet before sending by truncating long values - - data = this._trimPacket(data); // ideally duplicate error testing should occur *before* dataCallback/shouldSendCallback, - // but this would require copying an un-truncated copy of the data packet, which can be - // arbitrarily deep (extra_data) -- could be worthwhile? will revisit - - if (!this._globalOptions.allowDuplicates && this._isRepeatData(data)) { - this._logDebug('warn', 'Raven dropped repeat event: ', data); - - return; - } // Send along an event_id if not explicitly passed. - // This event_id can be used to reference the error within Sentry itself. - // Set lastEventId after we know the error should actually be sent - - this._lastEventId = data.event_id || (data.event_id = this._getUuid()); // Store outbound payload after trim - - this._lastData = data; - - this._logDebug('debug', 'Raven about to send:', data); - - var auth = { - sentry_version: '7', - sentry_client: 'raven-js/' + this.VERSION, - sentry_key: this._globalKey - }; - - if (this._globalSecret) { - auth.sentry_secret = this._globalSecret; + stack.push(element); } - var exception = data.exception && data.exception.values[0]; // only capture 'sentry' breadcrumb is autoBreadcrumbs is truthy - - if (this._globalOptions.autoBreadcrumbs && this._globalOptions.autoBreadcrumbs.sentry) { - this.captureBreadcrumb({ - category: 'sentry', - message: exception ? (exception.type ? exception.type + ': ' : '') + exception.value : data.message, - event_id: data.event_id, - level: data.level || 'error' // presume error unless specified - - }); + if (!stack.length) { + return null; } - var url = this._globalEndpoint; + return { + name: ex.name, + message: ex.message, + url: getLocationHref(), + stack: stack + }; + } - (globalOptions.transport || this._makeRequest).call(this, { + /** + * Adds information about the first frame to incomplete stack traces. + * Safari and IE require this to get complete data on the first frame. + * @param {Object.} stackInfo Stack trace information from + * one of the compute* methods. + * @param {string} url The URL of the script that caused an error. + * @param {(number|string)} lineNo The line number of the script that + * caused an error. + * @param {string=} message The error generated by the browser, which + * hopefully contains the name of the object that caused the error. + * @return {boolean} Whether or not the stack information was + * augmented. + */ + function augmentStackTraceWithInitialElement(stackInfo, url, lineNo, message) { + var initial = { url: url, - auth: auth, - data: data, - options: globalOptions, - onSuccess: function success() { - self._resetBackoff(); + line: lineNo + }; - self._triggerEvent('success', { - data: data, - src: url - }); + if (initial.url && initial.line) { + stackInfo.incomplete = false; - callback && callback(); - }, - onError: function failure(error) { - self._logDebug('error', 'Raven transport failed to send: ', error); + if (!initial.func) { + initial.func = UNKNOWN_FUNCTION; + } - if (error.request) { - self._setBackoffState(error.request); + if (stackInfo.stack.length > 0) { + if (stackInfo.stack[0].url === initial.url) { + if (stackInfo.stack[0].line === initial.line) { + return false; // already in stack trace + } else if ( + !stackInfo.stack[0].line && + stackInfo.stack[0].func === initial.func + ) { + stackInfo.stack[0].line = initial.line; + return false; + } } - - self._triggerEvent('failure', { - data: data, - src: url - }); - - error = error || new Error('Raven send failed (no additional details provided)'); - callback && callback(error); } - }); - }, - _makeRequest: function _makeRequest(opts) { - // Auth is intentionally sent as part of query string (NOT as custom HTTP header) to avoid preflight CORS requests - var url = opts.url + '?' + urlencode(opts.auth); - var evaluatedHeaders = null; - var evaluatedFetchParameters = {}; - if (opts.options.headers) { - evaluatedHeaders = this._evaluateHash(opts.options.headers); - } - - if (opts.options.fetchParameters) { - evaluatedFetchParameters = this._evaluateHash(opts.options.fetchParameters); + stackInfo.stack.unshift(initial); + stackInfo.partial = true; + return true; + } else { + stackInfo.incomplete = true; } - if (supportsFetch()) { - evaluatedFetchParameters.body = stringify_1(opts.data); - var defaultFetchOptions = objectMerge({}, this._fetchDefaults); - var fetchOptions = objectMerge(defaultFetchOptions, evaluatedFetchParameters); + return false; + } - if (evaluatedHeaders) { - fetchOptions.headers = evaluatedHeaders; + /** + * Computes stack trace information by walking the arguments.caller + * chain at the time the exception occurred. This will cause earlier + * frames to be missed but is the only way to get any stack trace in + * Safari and IE. The top frame is restored by + * {@link augmentStackTraceWithInitialElement}. + * @param {Error} ex + * @return {?Object.} Stack trace information. + */ + function computeStackTraceByWalkingCallerChain(ex, depth) { + var functionName = /function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i, + stack = [], + funcs = {}, + recursion = false, + parts, + item, + source; + + for ( + var curr = computeStackTraceByWalkingCallerChain.caller; + curr && !recursion; + curr = curr.caller + ) { + if (curr === computeStackTrace || curr === TraceKit.report) { + // console.log('skipping internal function'); + continue; } - return _window$1.fetch(url, fetchOptions).then(function (response) { - if (response.ok) { - opts.onSuccess && opts.onSuccess(); - } else { - var error = new Error('Sentry error code: ' + response.status); // It's called request only to keep compatibility with XHR interface - // and not add more redundant checks in setBackoffState method - - error.request = response; - opts.onError && opts.onError(error); - } - })['catch'](function () { - opts.onError && opts.onError(new Error('Sentry error code: network unavailable')); - }); - } - - var request = _window$1.XMLHttpRequest && new _window$1.XMLHttpRequest(); - if (!request) return; // if browser doesn't support CORS (e.g. IE7), we are out of luck - - var hasCORS = 'withCredentials' in request || typeof XDomainRequest !== 'undefined'; - if (!hasCORS) return; - - if ('withCredentials' in request) { - request.onreadystatechange = function () { - if (request.readyState !== 4) { - return; - } else if (request.status === 200) { - opts.onSuccess && opts.onSuccess(); - } else if (opts.onError) { - var err = new Error('Sentry error code: ' + request.status); - err.request = request; - opts.onError(err); - } + item = { + url: null, + func: UNKNOWN_FUNCTION, + line: null, + column: null }; - } else { - request = new XDomainRequest(); // xdomainrequest cannot go http -> https (or vice versa), - // so always use protocol relative - url = url.replace(/^https?:/, ''); // onreadystatechange not supported by XDomainRequest + if (curr.name) { + item.func = curr.name; + } else if ((parts = functionName.exec(curr.toString()))) { + item.func = parts[1]; + } - if (opts.onSuccess) { - request.onload = opts.onSuccess; + if (typeof item.func === 'undefined') { + try { + item.func = parts.input.substring(0, parts.input.indexOf('{')); + } catch (e) {} } - if (opts.onError) { - request.onerror = function () { - var err = new Error('Sentry error code: XDomainRequest'); - err.request = request; - opts.onError(err); - }; + if (funcs['' + curr]) { + recursion = true; + } else { + funcs['' + curr] = true; } - } - request.open('POST', url); + stack.push(item); + } - if (evaluatedHeaders) { - each(evaluatedHeaders, function (key, value) { - request.setRequestHeader(key, value); - }); + if (depth) { + // console.log('depth is ' + depth); + // console.log('stack is ' + stack.length); + stack.splice(0, depth); } - request.send(stringify_1(opts.data)); - }, - _evaluateHash: function _evaluateHash(hash) { - var evaluated = {}; + var result = { + name: ex.name, + message: ex.message, + url: getLocationHref(), + stack: stack + }; + augmentStackTraceWithInitialElement( + result, + ex.sourceURL || ex.fileName, + ex.line || ex.lineNumber, + ex.message || ex.description + ); + return result; + } - for (var key in hash) { - if (hash.hasOwnProperty(key)) { - var value = hash[key]; - evaluated[key] = typeof value === 'function' ? value() : value; + /** + * Computes a stack trace for an exception. + * @param {Error} ex + * @param {(string|number)=} depth + */ + function computeStackTrace(ex, depth) { + var stack = null; + depth = depth == null ? 0 : +depth; + + try { + stack = computeStackTraceFromStackProp(ex); + if (stack) { + return stack; + } + } catch (e) { + if (TraceKit.debug) { + throw e; } } - return evaluated; - }, - _logDebug: function _logDebug(level) { - if (this._originalConsoleMethods[level] && this.debug) { - // In IE<10 console methods do not have their own 'apply' method - Function.prototype.apply.call(this._originalConsoleMethods[level], this._originalConsole, [].slice.call(arguments, 1)); - } - }, - _mergeContext: function _mergeContext(key, context) { - if (isUndefined(context)) { - delete this._globalContext[key]; - } else { - this._globalContext[key] = objectMerge(this._globalContext[key] || {}, context); + try { + stack = computeStackTraceByWalkingCallerChain(ex, depth + 1); + if (stack) { + return stack; + } + } catch (e) { + if (TraceKit.debug) { + throw e; + } } + return { + name: ex.name, + message: ex.message, + url: getLocationHref() + }; } -}; // Deprecations -Raven$1.prototype.setUser = Raven$1.prototype.setUserContext; -Raven$1.prototype.setReleaseContext = Raven$1.prototype.setRelease; -var raven = Raven$1; + computeStackTrace.augmentStackTraceWithInitialElement = augmentStackTraceWithInitialElement; + computeStackTrace.computeStackTraceFromStackProp = computeStackTraceFromStackProp; -/** - * Enforces a single instance of the Raven client, and the - * main entry point for Raven. If you are a consumer of the - * Raven library, you SHOULD load this file (vs raven.js). - **/ -// This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) + return computeStackTrace; +})(); -var _window = typeof window !== 'undefined' ? window : typeof commonjsGlobal !== 'undefined' ? commonjsGlobal : typeof self !== 'undefined' ? self : {}; +module.exports = TraceKit; -var _Raven = _window.Raven; -var Raven = new raven(); +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"10":10}],12:[function(_dereq_,module,exports){ /* - * Allow multiple versions of Raven to be installed. - * Strip Raven from the global context and returns the instance. - * - * @return {Raven} - */ - -Raven.noConflict = function () { - _window.Raven = _Raven; - return Raven; -}; - -Raven.afterLoad(); -var singleton = Raven; - -/** - * Angular.js plugin - * - * Provides an $exceptionHandler for Angular.js - */ + json-stringify-safe + Like JSON.stringify, but doesn't throw on circular references. -var wrappedCallback$1 = utils.wrappedCallback; // See https://github.com/angular/angular.js/blob/v1.4.7/src/minErr.js + Originally forked from https://github.com/isaacs/json-stringify-safe + version 5.0.1 on 3/8/2017 and modified to handle Errors serialization + and IE8 compatibility. Tests for this are in test/vendor. -var angularPattern = /^\[((?:[$a-zA-Z0-9]+:)?(?:[$a-zA-Z0-9]+))\] (.*?)\n?(\S+)$/; -var moduleName = 'ngRaven'; + ISC license: https://github.com/isaacs/json-stringify-safe/blob/master/LICENSE +*/ -function angularPlugin(Raven, angular) { - angular = angular || window.angular; - if (!angular) return; +exports = module.exports = stringify; +exports.getSerialize = serializer; - function RavenProvider() { - this.$get = ['$window', function ($window) { - return Raven; - }]; +function indexOf(haystack, needle) { + for (var i = 0; i < haystack.length; ++i) { + if (haystack[i] === needle) return i; } + return -1; +} - function ExceptionHandlerProvider($provide) { - $provide.decorator('$exceptionHandler', ['Raven', '$delegate', exceptionHandler]); - } +function stringify(obj, replacer, spaces, cycleReplacer) { + return JSON.stringify(obj, serializer(replacer, cycleReplacer), spaces); +} - function exceptionHandler(R, $delegate) { - return function (ex, cause) { - R.captureException(ex, { - extra: { - cause: cause - } - }); - $delegate(ex, cause); - }; +// https://github.com/ftlabs/js-abbreviate/blob/fa709e5f139e7770a71827b1893f22418097fbda/index.js#L95-L106 +function stringifyError(value) { + var err = { + // These properties are implemented as magical getters and don't show up in for in + stack: value.stack, + message: value.message, + name: value.name + }; + + for (var i in value) { + if (Object.prototype.hasOwnProperty.call(value, i)) { + err[i] = value[i]; + } } - angular.module(moduleName, []).provider('Raven', RavenProvider).config(['$provide', ExceptionHandlerProvider]); - Raven.setDataCallback(wrappedCallback$1(function (data) { - return angularPlugin._normalizeData(data); - })); + return err; } -angularPlugin._normalizeData = function (data) { - // We only care about mutating an exception - var exception = data.exception; +function serializer(replacer, cycleReplacer) { + var stack = []; + var keys = []; - if (exception) { - exception = exception.values[0]; - var matches = angularPattern.exec(exception.value); + if (cycleReplacer == null) { + cycleReplacer = function(key, value) { + if (stack[0] === value) { + return '[Circular ~]'; + } + return '[Circular ~.' + keys.slice(0, indexOf(stack, value)).join('.') + ']'; + }; + } - if (matches) { - // This type now becomes something like: $rootScope:inprog - exception.type = matches[1]; - exception.value = matches[2]; - data.message = exception.type + ': ' + exception.value; // auto set a new tag specifically for the angular error url + return function(key, value) { + if (stack.length > 0) { + var thisPos = indexOf(stack, this); + ~thisPos ? stack.splice(thisPos + 1) : stack.push(this); + ~thisPos ? keys.splice(thisPos, Infinity, key) : keys.push(key); - data.extra.angularDocs = matches[3].substr(0, 250); + if (~indexOf(stack, value)) { + value = cycleReplacer.call(this, key, value); + } + } else { + stack.push(value); } - } - - return data; -}; -angularPlugin.moduleName = moduleName; -var angular = angularPlugin; + return replacer == null + ? value instanceof Error ? stringifyError(value) : value + : replacer.call(this, key, value); + }; +} -/** - * console plugin +},{}],13:[function(_dereq_,module,exports){ +/* + * JavaScript MD5 + * https://github.com/blueimp/JavaScript-MD5 * - * Monkey patches console.* calls into Sentry messages with - * their appropriate log levels. (Experimental) + * Copyright 2011, Sebastian Tschan + * https://blueimp.net * - * Options: + * Licensed under the MIT license: + * https://opensource.org/licenses/MIT * - * `levels`: An array of levels (methods on `console`) to report to Sentry. - * Defaults to debug, info, warn, and error. + * Based on + * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message + * Digest Algorithm, as defined in RFC 1321. + * Version 2.2 Copyright (C) Paul Johnston 1999 - 2009 + * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet + * Distributed under the BSD License + * See http://pajhome.org.uk/crypt/md5 for more info. */ -var wrapConsoleMethod$1 = console$1.wrapMethod; - -function consolePlugin(Raven, console, pluginOptions) { - console = console || window.console || {}; - pluginOptions = pluginOptions || {}; - var logLevels = pluginOptions.levels || ['debug', 'info', 'warn', 'error']; - if ('assert' in console) logLevels.push('assert'); +/* +* Add integers, wrapping at 2^32. This uses 16-bit operations internally +* to work around bugs in some JS interpreters. +*/ +function safeAdd(x, y) { + var lsw = (x & 0xffff) + (y & 0xffff); + var msw = (x >> 16) + (y >> 16) + (lsw >> 16); + return (msw << 16) | (lsw & 0xffff); +} - var callback = function callback(msg, data) { - Raven.captureMessage(msg, data); - }; +/* +* Bitwise rotate a 32-bit number to the left. +*/ +function bitRotateLeft(num, cnt) { + return (num << cnt) | (num >>> (32 - cnt)); +} - var level = logLevels.pop(); +/* +* These functions implement the four basic operations the algorithm uses. +*/ +function md5cmn(q, a, b, x, s, t) { + return safeAdd(bitRotateLeft(safeAdd(safeAdd(a, q), safeAdd(x, t)), s), b); +} +function md5ff(a, b, c, d, x, s, t) { + return md5cmn((b & c) | (~b & d), a, b, x, s, t); +} +function md5gg(a, b, c, d, x, s, t) { + return md5cmn((b & d) | (c & ~d), a, b, x, s, t); +} +function md5hh(a, b, c, d, x, s, t) { + return md5cmn(b ^ c ^ d, a, b, x, s, t); +} +function md5ii(a, b, c, d, x, s, t) { + return md5cmn(c ^ (b | ~d), a, b, x, s, t); +} - while (level) { - wrapConsoleMethod$1(console, level, callback); - level = logLevels.pop(); +/* +* Calculate the MD5 of an array of little-endian words, and a bit length. +*/ +function binlMD5(x, len) { + /* append padding */ + x[len >> 5] |= 0x80 << (len % 32); + x[(((len + 64) >>> 9) << 4) + 14] = len; + + var i; + var olda; + var oldb; + var oldc; + var oldd; + var a = 1732584193; + var b = -271733879; + var c = -1732584194; + var d = 271733878; + + for (i = 0; i < x.length; i += 16) { + olda = a; + oldb = b; + oldc = c; + oldd = d; + + a = md5ff(a, b, c, d, x[i], 7, -680876936); + d = md5ff(d, a, b, c, x[i + 1], 12, -389564586); + c = md5ff(c, d, a, b, x[i + 2], 17, 606105819); + b = md5ff(b, c, d, a, x[i + 3], 22, -1044525330); + a = md5ff(a, b, c, d, x[i + 4], 7, -176418897); + d = md5ff(d, a, b, c, x[i + 5], 12, 1200080426); + c = md5ff(c, d, a, b, x[i + 6], 17, -1473231341); + b = md5ff(b, c, d, a, x[i + 7], 22, -45705983); + a = md5ff(a, b, c, d, x[i + 8], 7, 1770035416); + d = md5ff(d, a, b, c, x[i + 9], 12, -1958414417); + c = md5ff(c, d, a, b, x[i + 10], 17, -42063); + b = md5ff(b, c, d, a, x[i + 11], 22, -1990404162); + a = md5ff(a, b, c, d, x[i + 12], 7, 1804603682); + d = md5ff(d, a, b, c, x[i + 13], 12, -40341101); + c = md5ff(c, d, a, b, x[i + 14], 17, -1502002290); + b = md5ff(b, c, d, a, x[i + 15], 22, 1236535329); + + a = md5gg(a, b, c, d, x[i + 1], 5, -165796510); + d = md5gg(d, a, b, c, x[i + 6], 9, -1069501632); + c = md5gg(c, d, a, b, x[i + 11], 14, 643717713); + b = md5gg(b, c, d, a, x[i], 20, -373897302); + a = md5gg(a, b, c, d, x[i + 5], 5, -701558691); + d = md5gg(d, a, b, c, x[i + 10], 9, 38016083); + c = md5gg(c, d, a, b, x[i + 15], 14, -660478335); + b = md5gg(b, c, d, a, x[i + 4], 20, -405537848); + a = md5gg(a, b, c, d, x[i + 9], 5, 568446438); + d = md5gg(d, a, b, c, x[i + 14], 9, -1019803690); + c = md5gg(c, d, a, b, x[i + 3], 14, -187363961); + b = md5gg(b, c, d, a, x[i + 8], 20, 1163531501); + a = md5gg(a, b, c, d, x[i + 13], 5, -1444681467); + d = md5gg(d, a, b, c, x[i + 2], 9, -51403784); + c = md5gg(c, d, a, b, x[i + 7], 14, 1735328473); + b = md5gg(b, c, d, a, x[i + 12], 20, -1926607734); + + a = md5hh(a, b, c, d, x[i + 5], 4, -378558); + d = md5hh(d, a, b, c, x[i + 8], 11, -2022574463); + c = md5hh(c, d, a, b, x[i + 11], 16, 1839030562); + b = md5hh(b, c, d, a, x[i + 14], 23, -35309556); + a = md5hh(a, b, c, d, x[i + 1], 4, -1530992060); + d = md5hh(d, a, b, c, x[i + 4], 11, 1272893353); + c = md5hh(c, d, a, b, x[i + 7], 16, -155497632); + b = md5hh(b, c, d, a, x[i + 10], 23, -1094730640); + a = md5hh(a, b, c, d, x[i + 13], 4, 681279174); + d = md5hh(d, a, b, c, x[i], 11, -358537222); + c = md5hh(c, d, a, b, x[i + 3], 16, -722521979); + b = md5hh(b, c, d, a, x[i + 6], 23, 76029189); + a = md5hh(a, b, c, d, x[i + 9], 4, -640364487); + d = md5hh(d, a, b, c, x[i + 12], 11, -421815835); + c = md5hh(c, d, a, b, x[i + 15], 16, 530742520); + b = md5hh(b, c, d, a, x[i + 2], 23, -995338651); + + a = md5ii(a, b, c, d, x[i], 6, -198630844); + d = md5ii(d, a, b, c, x[i + 7], 10, 1126891415); + c = md5ii(c, d, a, b, x[i + 14], 15, -1416354905); + b = md5ii(b, c, d, a, x[i + 5], 21, -57434055); + a = md5ii(a, b, c, d, x[i + 12], 6, 1700485571); + d = md5ii(d, a, b, c, x[i + 3], 10, -1894986606); + c = md5ii(c, d, a, b, x[i + 10], 15, -1051523); + b = md5ii(b, c, d, a, x[i + 1], 21, -2054922799); + a = md5ii(a, b, c, d, x[i + 8], 6, 1873313359); + d = md5ii(d, a, b, c, x[i + 15], 10, -30611744); + c = md5ii(c, d, a, b, x[i + 6], 15, -1560198380); + b = md5ii(b, c, d, a, x[i + 13], 21, 1309151649); + a = md5ii(a, b, c, d, x[i + 4], 6, -145523070); + d = md5ii(d, a, b, c, x[i + 11], 10, -1120210379); + c = md5ii(c, d, a, b, x[i + 2], 15, 718787259); + b = md5ii(b, c, d, a, x[i + 9], 21, -343485551); + + a = safeAdd(a, olda); + b = safeAdd(b, oldb); + c = safeAdd(c, oldc); + d = safeAdd(d, oldd); } + return [a, b, c, d]; } -var console$3 = consolePlugin; - -/** - * Ember.js plugin - * - * Patches event handler callbacks and ajax callbacks. - */ -function emberPlugin(Raven, Ember) { - Ember = Ember || window.Ember; // quit if Ember isn't on the page - - if (!Ember) return; - var _oldOnError = Ember.onerror; - - Ember.onerror = function EmberOnError(error) { - Raven.captureException(error); - - if (typeof _oldOnError === 'function') { - _oldOnError.call(this, error); - } - }; - - Ember.RSVP.on('error', function (reason) { - if (reason instanceof Error) { - Raven.captureException(reason, { - extra: { - context: 'Unhandled Promise error detected' - } - }); - } else { - Raven.captureMessage('Unhandled Promise error detected', { - extra: { - reason: reason - } - }); - } - }); +/* +* Convert an array of little-endian words to a string +*/ +function binl2rstr(input) { + var i; + var output = ''; + var length32 = input.length * 32; + for (i = 0; i < length32; i += 8) { + output += String.fromCharCode((input[i >> 5] >>> (i % 32)) & 0xff); + } + return output; } -var ember = emberPlugin; - -/*global define*/ - -/** - * require.js plugin - * - * Automatically wrap define/require callbacks. (Experimental) - */ - -function requirePlugin(Raven) { - if (typeof undefined === 'function' && undefined.amd) { - window.define = Raven.wrap({ - deep: false - }, undefined); - window.require = Raven.wrap({ - deep: false - }, commonjsRequire); +/* +* Convert a raw string to an array of little-endian words +* Characters >255 have their high-byte silently ignored. +*/ +function rstr2binl(input) { + var i; + var output = []; + output[(input.length >> 2) - 1] = undefined; + for (i = 0; i < output.length; i += 1) { + output[i] = 0; } + var length8 = input.length * 8; + for (i = 0; i < length8; i += 8) { + output[i >> 5] |= (input.charCodeAt(i / 8) & 0xff) << (i % 32); + } + return output; } -var require_1 = requirePlugin; +/* +* Calculate the MD5 of a raw string +*/ +function rstrMD5(s) { + return binl2rstr(binlMD5(rstr2binl(s), s.length * 8)); +} -/** - * Vue.js 2.0 plugin - * - */ -function formatComponentName(vm) { - if (vm.$root === vm) { - return 'root instance'; +/* +* Calculate the HMAC-MD5, of a key and some data (raw strings) +*/ +function rstrHMACMD5(key, data) { + var i; + var bkey = rstr2binl(key); + var ipad = []; + var opad = []; + var hash; + ipad[15] = opad[15] = undefined; + if (bkey.length > 16) { + bkey = binlMD5(bkey, key.length * 8); } - - var name = vm._isVue ? vm.$options.name || vm.$options._componentTag : vm.name; - return (name ? 'component <' + name + '>' : 'anonymous component') + (vm._isVue && vm.$options.__file ? ' at ' + vm.$options.__file : ''); + for (i = 0; i < 16; i += 1) { + ipad[i] = bkey[i] ^ 0x36363636; + opad[i] = bkey[i] ^ 0x5c5c5c5c; + } + hash = binlMD5(ipad.concat(rstr2binl(data)), 512 + data.length * 8); + return binl2rstr(binlMD5(opad.concat(hash), 512 + 128)); } -function vuePlugin(Raven, Vue) { - Vue = Vue || window.Vue; // quit if Vue isn't on the page - - if (!Vue || !Vue.config) return; - var _oldOnError = Vue.config.errorHandler; - - Vue.config.errorHandler = function VueErrorHandler(error, vm, info) { - var metaData = {}; // vm and lifecycleHook are not always available - - if (Object.prototype.toString.call(vm) === '[object Object]') { - metaData.componentName = formatComponentName(vm); - metaData.propsData = vm.$options.propsData; - } +/* +* Convert a raw string to a hex string +*/ +function rstr2hex(input) { + var hexTab = '0123456789abcdef'; + var output = ''; + var x; + var i; + for (i = 0; i < input.length; i += 1) { + x = input.charCodeAt(i); + output += hexTab.charAt((x >>> 4) & 0x0f) + hexTab.charAt(x & 0x0f); + } + return output; +} - if (typeof info !== 'undefined') { - metaData.lifecycleHook = info; - } +/* +* Encode a string as utf-8 +*/ +function str2rstrUTF8(input) { + return unescape(encodeURIComponent(input)); +} - Raven.captureException(error, { - extra: metaData - }); +/* +* Take string arguments and return either raw or hex encoded strings +*/ +function rawMD5(s) { + return rstrMD5(str2rstrUTF8(s)); +} +function hexMD5(s) { + return rstr2hex(rawMD5(s)); +} +function rawHMACMD5(k, d) { + return rstrHMACMD5(str2rstrUTF8(k), str2rstrUTF8(d)); +} +function hexHMACMD5(k, d) { + return rstr2hex(rawHMACMD5(k, d)); +} - if (typeof _oldOnError === 'function') { - _oldOnError.call(this, error, vm, info); +function md5(string, key, raw) { + if (!key) { + if (!raw) { + return hexMD5(string); } - }; + return rawMD5(string); + } + if (!raw) { + return hexHMACMD5(key, string); + } + return rawHMACMD5(key, string); } -var vue = vuePlugin; - -/* This file was generated by './scripts/generate-plugin-combinations.js'! */ - -singleton.addPlugin(angular).addPlugin(console$3).addPlugin(ember).addPlugin(require_1).addPlugin(vue); -var angular_console_ember_require_vue = {}; - -return angular_console_ember_require_vue; +module.exports = md5; -}))); +},{}]},{},[9,1,2,3,4,5])(9) +}); \ No newline at end of file diff --git a/dist/angular,console,ember,require,vue/raven.min.js b/dist/angular,console,ember,require,vue/raven.min.js index 055e12c89dca..787862878b70 100644 --- a/dist/angular,console,ember,require,vue/raven.min.js +++ b/dist/angular,console,ember,require,vue/raven.min.js @@ -1,3 +1,4 @@ -/*! Raven.js 3.22.2 (1b6187b) | github.com/getsentry/raven-js */ -!function(a,b){"object"==typeof exports&&"undefined"!=typeof module?module.exports=b():"function"==typeof define&&define.amd?define(b):a.Raven=b()}(this,function(){"use strict";function a(a,b){return b={exports:{}},a(b,b.exports),b.exports}function b(a){return(b="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(a){return typeof a}:function(a){return a&&"function"==typeof Symbol&&a.constructor===Symbol&&a!==Symbol.prototype?"symbol":typeof a})(a)}function c(a){return"object"===b(a)&&null!==a}function d(a){switch({}.toString.call(a)){case"[object Error]":return!0;case"[object Exception]":return!0;case"[object DOMException]":return!0;default:return a instanceof Error}}function e(a){return l()&&"[object ErrorEvent]"==={}.toString.call(a)}function f(a){return void 0===a}function g(a){return"function"==typeof a}function h(a){return"[object Object]"===Object.prototype.toString.call(a)}function i(a){return"[object String]"===Object.prototype.toString.call(a)}function j(a){return"[object Array]"===Object.prototype.toString.call(a)}function k(a){if(!h(a))return!1;for(var b in a)if(a.hasOwnProperty(b))return!1;return!0}function l(){try{return new ErrorEvent(""),!0}catch(a){return!1}}function m(){if(!("fetch"in S))return!1;try{return new Headers,new Request(""),new Response,!0}catch(a){return!1}}function n(a){function b(b,c){var d=a(b)||b;return c?c(d)||d:d}return b}function o(a,b){var c,d;if(f(a.length))for(c in a)s(a,c)&&b.call(null,c,a[c]);else if(d=a.length)for(c=0;c ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function y(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&i(b))for(c=b.split(/\s+/),f=0;f":"anonymous component")+(a._isVue&&a.$options.__file?" at "+a.$options.__file:"")}function P(a,b){if(b=b||window.Vue,b&&b.config){var c=b.config.errorHandler;b.config.errorHandler=function(b,d,e){var f={};"[object Object]"===Object.prototype.toString.call(d)&&(f.componentName=O(d),f.propsData=d.$options.propsData),"undefined"!=typeof e&&(f.lifecycleHook=e),a.captureException(b,{extra:f}),"function"==typeof c&&c.call(this,b,d,e)}}}var Q="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{},R=Object.setPrototypeOf||function(a,b){return a.C=b,a},S=("object"==typeof Reflect&&Reflect.construct||function(a,b,c){var d,e=[null];return e.push.apply(e,b),d=a.bind.apply(a,e),R(new d,c.prototype)},"undefined"!=typeof window?window:"undefined"!=typeof Q?Q:"undefined"!=typeof self?self:{}),T={isObject:c,isError:d,isErrorEvent:e,isUndefined:f,isFunction:g,isPlainObject:h,isString:i,isArray:j,isEmptyObject:k,supportsErrorEvent:l,supportsFetch:m,wrappedCallback:n,each:o,objectMerge:p,truncate:r,objectFrozen:q,hasKey:s,joinRegExp:t,urlencode:u,uuid4:w,htmlTreeAsString:x,htmlElementAsString:y,isSameException:B,isSameStacktrace:C,parseUrl:v,fill:D,safeJoin:E},U={collectWindowErrors:!0,debug:!1},V="undefined"!=typeof window?window:"undefined"!=typeof Q?Q:"undefined"!=typeof self?self:{},W=[].slice,X="?",Y=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;U.report=function(){function a(a){f(),l.push(a)}function b(a){for(var b=l.length-1;b>=0;--b)l[b]===a&&l.splice(b,1)}function c(){g(),l=[]}function d(a,b){var c=null;if(!b||U.collectWindowErrors){for(var d in l)if(l.hasOwnProperty(d))try{l[d].apply(null,[a].concat(W.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function e(a,b,c,e,f){var g=null,i=T.isErrorEvent(f)?f.error:f,k=T.isErrorEvent(a)?a.message:a;if(o)U.computeStackTrace.augmentStackTraceWithInitialElement(o,b,c,k),h();else if(i&&T.isError(i))g=U.computeStackTrace(i),d(g,!0);else{var l,m={url:b,line:c,column:e},n=void 0;if("[object String]"==={}.toString.call(k)){var l=k.match(Y);l&&(n=l[1],k=l[2])}m.func=X,g={name:n,message:k,url:F(),stack:[m]},d(g,!0)}return!!j&&j.apply(this,arguments)}function f(){k||(j=V.onerror,V.onerror=e,k=!0)}function g(){k&&(V.onerror=j,k=!1,j=void 0)}function h(){var a=o,b=m;m=null,o=null,n=null,d.apply(null,[a,!1].concat(b))}function i(a,b){var c=W.call(arguments,1);if(o){if(n===a)return;h()}var d=U.computeStackTrace(a);if(o=d,n=a,m=c,setTimeout(function(){n===a&&h()},d.incomplete?2e3:0),b!==!1)throw a}var j,k,l=[],m=null,n=null,o=null;return i.subscribe=a,i.unsubscribe=b,i.uninstall=c,i}(),U.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,d,e=/^\s*at (.*?) ?\(((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,f=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|\[native).*?|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,g=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,h=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,i=/\((\S*)(?::(\d+))(?::(\d+))\)/,j=a.stack.split("\n"),k=[],l=(/^(.*) is undefined$/.exec(a.message),0),m=j.length;l eval")>-1;o&&(b=h.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==l||c[5]||"undefined"==typeof a.columnNumber||(k[0].column=a.columnNumber+1),d={url:c[3],func:c[1]||X,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}!d.func&&d.line&&(d.func=X),k.push(d)}return k.length?{name:a.name,message:a.message,url:F(),stack:k}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=X),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,e){for(var f,g,h=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,i=[],j={},k=!1,l=c.caller;l&&!k;l=l.caller)if(l!==d&&l!==U.report){if(g={url:null,func:X,line:null,column:null},l.name?g.func=l.name:(f=h.exec(l.toString()))&&(g.func=f[1]),"undefined"==typeof g.func)try{g.func=f.input.substring(0,f.input.indexOf("{"))}catch(m){}j[""+l]?k=!0:j[""+l]=!0,i.push(g)}e&&i.splice(0,e);var n={name:a.name,message:a.message,url:F(),stack:i};return b(n,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),n}function d(b,d){var e=null;d=null==d?0:+d;try{if(e=a(b))return e}catch(f){if(U.debug)throw f}try{if(e=c(b,d+1))return e}catch(f){if(U.debug)throw f}return{name:b.name,message:b.message,url:F()}}return d.augmentStackTraceWithInitialElement=b,d.computeStackTraceFromStackProp=a,d}();var Z=U,$=a(function(a,b){function c(a,b){for(var c=0;c0){var i=c(d,this);~i?d.splice(i+1):d.push(this),~i?f.splice(i,1/0,g):f.push(g),~c(d,h)&&(h=b.call(this,g,h))}else d.push(h);return null==a?h instanceof Error?e(h):h:a.call(this,g,h)}}b=a.exports=d,b.getSerialize=f});G.prototype=new Error,G.prototype.constructor=G;var _=G,aa=function(a,b,c){var d=a[b],e=a;if(b in a){var f="warn"===b?"warning":b;a[b]=function(){var a=[].slice.call(arguments),g=T.safeJoin(a," "),h={level:f,logger:"console",extra:{arguments:a}};"assert"===b?a[0]===!1&&(g="Assertion failed: "+(T.safeJoin(a.slice(1)," ")||"console.assert"),h.extra.arguments=a.slice(1),c&&c(g,h)):c&&c(g,h),d&&Function.prototype.apply.call(d,e,a)}}},ba={wrapMethod:aa},ca=T.isError,da=T.isObject,ea=T.isErrorEvent,fa=T.isUndefined,ga=T.isFunction,ha=T.isString,ia=T.isArray,ja=T.isEmptyObject,ka=T.each,la=T.objectMerge,ma=T.truncate,na=T.objectFrozen,oa=T.hasKey,pa=T.joinRegExp,qa=T.urlencode,ra=T.uuid4,sa=T.htmlTreeAsString,ta=T.isSameException,ua=T.isSameStacktrace,va=T.parseUrl,wa=T.fill,xa=T.supportsFetch,ya=ba.wrapMethod,za="source protocol user pass host port path".split(" "),Aa=/^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/,Ba="undefined"!=typeof window?window:"undefined"!=typeof Q?Q:"undefined"!=typeof self?self:{},Ca=Ba.document,Da=Ba.navigator;J.prototype={VERSION:"3.22.2",debug:!1,TraceKit:Z,config:function(a,b){var c=this;if(c.i)return this.D("error","Error: Raven has already been configured"),c;if(!a)return c;var d=c.m;b&&ka(b,function(a,b){"tags"===a||"extra"===a||"user"===a?c.l[a]=b:d[a]=b}),c.setDSN(a),d.ignoreErrors.push(/^Script error\.?$/),d.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/),d.ignoreErrors=pa(d.ignoreErrors),d.ignoreUrls=!!d.ignoreUrls.length&&pa(d.ignoreUrls),d.whitelistUrls=!!d.whitelistUrls.length&&pa(d.whitelistUrls),d.includePaths=pa(d.includePaths),d.maxBreadcrumbs=Math.max(0,Math.min(d.maxBreadcrumbs||100,100));var e={xhr:!0,console:!0,dom:!0,location:!0,sentry:!0},f=d.autoBreadcrumbs;"[object Object]"==={}.toString.call(f)?f=la(e,f):f!==!1&&(f=e),d.autoBreadcrumbs=f;var g={tryCatch:!0},h=d.instrument;return"[object Object]"==={}.toString.call(h)?h=la(g,h):h!==!1&&(h=g),d.instrument=h,Z.collectWindowErrors=!!d.collectWindowErrors,c},install:function(){var a=this;return a.isSetup()&&!a.p&&(Z.report.subscribe(function(){a.E.apply(a,arguments)}),a.F(),a.m.instrument&&a.m.instrument.tryCatch&&a.G(),a.m.autoBreadcrumbs&&a.H(),a.I(),a.p=!0),Error.stackTraceLimit=a.m.stackTraceLimit,this},setDSN:function(a){var b=this,c=b.J(a),d=c.path.lastIndexOf("/"),e=c.path.substr(1,d);b.K=a,b.j=c.user,b.L=c.pass&&c.pass.substr(1),b.k=c.path.substr(d+1),b.i=b.M(c),b.N=b.i+"/"+e+"api/"+b.k+"/store/",this.A()},context:function(a,b,c){return ga(a)&&(c=b||[],b=a,a=void 0),this.wrap(a,b).apply(this,c)},wrap:function(a,b,c){function d(){var d=[],f=arguments.length,g=!a||a&&a.deep!==!1;for(c&&ga(c)&&c.apply(this,arguments);f--;)d[f]=g?e.wrap(a,arguments[f]):arguments[f];try{return b.apply(this,d)}catch(h){throw e.O(),e.captureException(h,a),h}}var e=this;if(fa(b)&&!ga(a))return a;if(ga(a)&&(b=a,a=void 0),!ga(b))return b;try{if(b.a)return b;if(b.P)return b.P}catch(f){return b}for(var g in b)oa(b,g)&&(d[g]=b[g]);return d.prototype=b.prototype,b.P=d,d.a=!0,d.b=b,d},uninstall:function(){return Z.report.uninstall(),this.Q(),this.R(),this.S(),Error.stackTraceLimit=this.q,this.p=!1,this},captureException:function(a,b){b=la({trimHeadFrames:0},b?b:{});var c=!ca(a),d=!ea(a),e=ea(a)&&!a.error;if(c&&d||e)return this.captureMessage(a,la(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}));ea(a)&&(a=a.error),this.f=a;try{var f=Z.computeStackTrace(a);this.T(f,b)}catch(g){if(a!==g)throw g}return this},captureMessage:function(a,b){if(!this.m.ignoreErrors.test||!this.m.ignoreErrors.test(a)){b=b||{};var c,d=la({message:a+""},b);try{throw new Error(a)}catch(e){c=e}c.name=null;var f=Z.computeStackTrace(c),g=ia(f.stack)&&f.stack[1],h=g&&g.url||"";if((!this.m.ignoreUrls.test||!this.m.ignoreUrls.test(h))&&(!this.m.whitelistUrls.test||this.m.whitelistUrls.test(h))){if(this.m.stacktrace||b&&b.stacktrace){b=la({fingerprint:a,trimHeadFrames:(b.trimHeadFrames||0)+1},b);var i=this.U(f,b);d.stacktrace={frames:i.reverse()}}return this.V(d),this}}},captureBreadcrumb:function(a){var b=la({timestamp:H()/1e3},a);if(ga(this.m.breadcrumbCallback)){var c=this.m.breadcrumbCallback(b);if(da(c)&&!ja(c))b=c;else if(c===!1)return this}return this.w.push(b),this.w.length>this.m.maxBreadcrumbs&&this.w.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.t.push([a,b]),this.p&&this.I(),this},setUserContext:function(a){return this.l.user=a,this},setExtraContext:function(a){return this.W("extra",a),this},setTagsContext:function(a){return this.W("tags",a),this},clearContext:function(){return this.l={},this},getContext:function(){return JSON.parse($(this.l))},setEnvironment:function(a){return this.m.environment=a,this},setRelease:function(a){return this.m.release=a,this},setDataCallback:function(a){var b=this.m.dataCallback;return this.m.dataCallback=I(b,a),this},setBreadcrumbCallback:function(a){var b=this.m.breadcrumbCallback;return this.m.breadcrumbCallback=I(b,a),this},setShouldSendCallback:function(a){var b=this.m.shouldSendCallback;return this.m.shouldSendCallback=I(b,a),this},setTransport:function(a){return this.m.transport=a,this},lastException:function(){return this.f},lastEventId:function(){return this.h},isSetup:function(){return!!this.c&&(!!this.i||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.D("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=Ba.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(Ca){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new _("Missing eventId");var c=a.dsn||this.K;if(!c)throw new _("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.l.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.M(this.J(c)),h=Ca.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(Ca.head||Ca.body).appendChild(h)}},O:function(){var a=this;this.o+=1,setTimeout(function(){a.o-=1})},X:function(a,b){var c,d;if(this.d){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),Ca.createEvent?(c=Ca.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=Ca.createEventObject(),c.eventType=a);for(d in b)oa(b,d)&&(c[d]=b[d]);if(Ca.createEvent)Ca.dispatchEvent(c);else try{Ca.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},Y:function(a){var b=this;return function(c){if(b.Z=null,b.x!==c){b.x=c;var d;try{d=sa(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},$:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.Z;g||a.Y("input")(c),clearTimeout(g),a.Z=setTimeout(function(){a.Z=null},b)}}},_:function(a,b){var c=va(this.y.href),d=va(b),e=va(a);this.z=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},F:function(){var a=this;a.aa=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.a?a.aa.apply(this.b,arguments):a.aa.apply(this,arguments)}},Q:function(){this.aa&&(Function.prototype.toString=this.aa)},G:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b._(b.z,c+""),a.apply(this,arguments)}};wa(history,"pushState",j,d),wa(history,"replaceState",j,d)}if(c.console&&"console"in Ba&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};ka(["debug","info","warn","error","log"],function(a,b){ya(console,b,k)})}},R:function(){for(var a;this.v.length;){a=this.v.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},S:function(){for(var a in this.s)this.r[a]=this.s[a]},I:function(){var a=this;ka(this.t,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},J:function(a){var b=Aa.exec(a),c={},d=7;try{for(;d--;)c[za[d]]=b[d]||""}catch(e){throw new _("Invalid DSN: "+a)}if(c.pass&&!this.m.allowSecretKey)throw new _("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},M:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},E:function(){this.o||this.T.apply(this,arguments)},T:function(a,b){var c=this.U(a,b);this.X("handle",{stackInfo:a,options:b}),this.ca(a.name,a.message,a.url,a.lineno,c,b)},U:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(ka(a.stack,function(b,e){var f=c.da(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.w,0)}),this.l.user&&(a.user=this.l.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||ja(a[b]))&&delete a[b]}),ga(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!ja(a)&&(!ga(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.ja()?void this.D("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random()":"anonymous component")+(a._isVue&&a.$options.__file?" at "+a.$options.__file:"")}function e(a,b){if(b=b||window.Vue,b&&b.config){var c=b.config.errorHandler;b.config.errorHandler=function(b,e,f){var g={};"[object Object]"===Object.prototype.toString.call(e)&&(g.componentName=d(e),g.propsData=e.$options.propsData),"undefined"!=typeof f&&(g.lifecycleHook=f),a.captureException(b,{extra:g}),"function"==typeof c&&c.call(this,b,e,f)}}}b.exports=e,a(9).addPlugin(b.exports)},{9:9}],6:[function(a,b,c){function d(a){this.name="RavenConfigError",this.message=a}d.prototype=new Error,d.prototype.constructor=d,b.exports=d},{}],7:[function(a,b,c){var d=a(10),e=function(a,b,c){var e=a[b],f=a;if(b in a){var g="warn"===b?"warning":b;a[b]=function(){var a=[].slice.call(arguments),h=d.safeJoin(a," "),i={level:g,logger:"console",extra:{arguments:a}};"assert"===b?a[0]===!1&&(h="Assertion failed: "+(d.safeJoin(a.slice(1)," ")||"console.assert"),i.extra.arguments=a.slice(1),c&&c(h,i)):c&&c(h,i),e&&Function.prototype.apply.call(e,f,a)}}};b.exports={wrapMethod:e}},{10:10}],8:[function(a,b,c){(function(c){function d(){return+new Date}function e(a,b){return q(b)?function(c){return b(c,a)}:b}function f(){this.b=!("object"!=typeof JSON||!JSON.stringify),this.c=!p(Q),this.d=!p(R),this.e=null,this.f=null,this.g=null,this.h=null,this.i=null,this.j=null,this.k={},this.l={release:P.SENTRY_RELEASE&&P.SENTRY_RELEASE.id,logger:"javascript",ignoreErrors:[],ignoreUrls:[],whitelistUrls:[],includePaths:[],headers:null,collectWindowErrors:!0,captureUnhandledRejections:!0,maxMessageLength:0,maxUrlLength:250,stackTraceLimit:50,autoBreadcrumbs:!0,instrument:!0,sampleRate:1,sanitizeKeys:[]},this.m={method:"POST",keepalive:!0,referrerPolicy:I()?"origin":""},this.n=0,this.o=!1,this.p=Error.stackTraceLimit,this.q=P.console||{},this.r={},this.s=[],this.t=d(),this.u=[],this.v=[],this.w=null,this.x=P.location,this.y=this.x&&this.x.href,this.z();for(var a in this.q)this.r[a]=this.q[a]}var g=a(11),h=a(12),i=a(13),j=a(6),k=a(10),l=k.isError,m=k.isObject,n=k.isPlainObject,o=k.isErrorEvent,p=k.isUndefined,q=k.isFunction,r=k.isString,s=k.isArray,t=k.isEmptyObject,u=k.each,v=k.objectMerge,w=k.truncate,x=k.objectFrozen,y=k.hasKey,z=k.joinRegExp,A=k.urlencode,B=k.uuid4,C=k.htmlTreeAsString,D=k.isSameException,E=k.isSameStacktrace,F=k.parseUrl,G=k.fill,H=k.supportsFetch,I=k.supportsReferrerPolicy,J=k.serializeKeysForMessage,K=k.serializeException,L=k.sanitize,M=a(7).wrapMethod,N="source protocol user pass host port path".split(" "),O=/^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/,P="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},Q=P.document,R=P.navigator;f.prototype={VERSION:"3.24.2",debug:!1,TraceKit:g,config:function(a,b){var c=this;if(c.h)return this.A("error","Error: Raven has already been configured"),c;if(!a)return c;var d=c.l;b&&u(b,function(a,b){"tags"===a||"extra"===a||"user"===a?c.k[a]=b:d[a]=b}),c.setDSN(a),d.ignoreErrors.push(/^Script error\.?$/),d.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/),d.ignoreErrors=z(d.ignoreErrors),d.ignoreUrls=!!d.ignoreUrls.length&&z(d.ignoreUrls),d.whitelistUrls=!!d.whitelistUrls.length&&z(d.whitelistUrls),d.includePaths=z(d.includePaths),d.maxBreadcrumbs=Math.max(0,Math.min(d.maxBreadcrumbs||100,100));var e={xhr:!0,console:!0,dom:!0,location:!0,sentry:!0},f=d.autoBreadcrumbs;"[object Object]"==={}.toString.call(f)?f=v(e,f):f!==!1&&(f=e),d.autoBreadcrumbs=f;var h={tryCatch:!0},i=d.instrument;return"[object Object]"==={}.toString.call(i)?i=v(h,i):i!==!1&&(i=h),d.instrument=i,g.collectWindowErrors=!!d.collectWindowErrors,c},install:function(){var a=this;return a.isSetup()&&!a.o&&(g.report.subscribe(function(){a.B.apply(a,arguments)}),a.l.captureUnhandledRejections&&a.C(),a.D(),a.l.instrument&&a.l.instrument.tryCatch&&a.E(),a.l.autoBreadcrumbs&&a.F(),a.G(),a.o=!0),Error.stackTraceLimit=a.l.stackTraceLimit,this},setDSN:function(a){var b=this,c=b.H(a),d=c.path.lastIndexOf("/"),e=c.path.substr(1,d);b.I=a,b.i=c.user,b.J=c.pass&&c.pass.substr(1),b.j=c.path.substr(d+1),b.h=b.K(c),b.L=b.h+"/"+e+"api/"+b.j+"/store/",this.z()},context:function(a,b,c){return q(a)&&(c=b||[],b=a,a=void 0),this.wrap(a,b).apply(this,c)},wrap:function(a,b,c){function d(){var d=[],f=arguments.length,g=!a||a&&a.deep!==!1;for(c&&q(c)&&c.apply(this,arguments);f--;)d[f]=g?e.wrap(a,arguments[f]):arguments[f];try{return b.apply(this,d)}catch(h){throw e.M(),e.captureException(h,a),h}}var e=this;if(p(b)&&!q(a))return a;if(q(a)&&(b=a,a=void 0),!q(b))return b;try{if(b.N)return b;if(b.O)return b.O}catch(f){return b}for(var g in b)y(b,g)&&(d[g]=b[g]);return d.prototype=b.prototype,b.O=d,d.N=!0,d.P=b,d},uninstall:function(){return g.report.uninstall(),this.Q(),this.R(),this.S(),this.T(),Error.stackTraceLimit=this.p,this.o=!1,this},U:function(a){this.A("debug","Raven caught unhandled promise rejection:",a),this.captureException(a.reason,{extra:{unhandledPromiseRejection:!0}})},C:function(){return this.U=this.U.bind(this),P.addEventListener&&P.addEventListener("unhandledrejection",this.U),this},Q:function(){return P.removeEventListener&&P.removeEventListener("unhandledrejection",this.U),this},captureException:function(a,b){if(b=v({trimHeadFrames:0},b?b:{}),o(a)&&a.error)a=a.error;else if(l(a))a=a;else{if(!n(a))return this.captureMessage(a,v(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}));b=this.V(b,a),a=new Error(b.message)}this.e=a;try{var c=g.computeStackTrace(a);this.W(c,b)}catch(d){if(a!==d)throw d}return this},V:function(a,b){var c=Object.keys(b).sort(),d=v(a,{message:"Non-Error exception captured with keys: "+J(c),fingerprint:[i(c)],extra:a.extra||{}});return d.extra.X=K(b),d},captureMessage:function(a,b){if(!this.l.ignoreErrors.test||!this.l.ignoreErrors.test(a)){b=b||{},a+="";var c,d=v({message:a},b);try{throw new Error(a)}catch(e){c=e}c.name=null;var f=g.computeStackTrace(c),h=s(f.stack)&&f.stack[1];h&&"Raven.captureException"===h.func&&(h=f.stack[2]);var i=h&&h.url||"";if((!this.l.ignoreUrls.test||!this.l.ignoreUrls.test(i))&&(!this.l.whitelistUrls.test||this.l.whitelistUrls.test(i))){if(this.l.stacktrace||b&&b.stacktrace){d.fingerprint=null==d.fingerprint?a:d.fingerprint,b=v({trimHeadFrames:0},b),b.trimHeadFrames+=1;var j=this.Y(f,b);d.stacktrace={frames:j.reverse()}}return d.fingerprint&&(d.fingerprint=s(d.fingerprint)?d.fingerprint:[d.fingerprint]),this.Z(d),this}}},captureBreadcrumb:function(a){var b=v({timestamp:d()/1e3},a);if(q(this.l.breadcrumbCallback)){var c=this.l.breadcrumbCallback(b);if(m(c)&&!t(c))b=c;else if(c===!1)return this}return this.v.push(b),this.v.length>this.l.maxBreadcrumbs&&this.v.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.s.push([a,b]),this.o&&this.G(),this},setUserContext:function(a){return this.k.user=a,this},setExtraContext:function(a){return this.$("extra",a),this},setTagsContext:function(a){return this.$("tags",a),this},clearContext:function(){return this.k={},this},getContext:function(){return JSON.parse(h(this.k))},setEnvironment:function(a){return this.l.environment=a,this},setRelease:function(a){return this.l.release=a,this},setDataCallback:function(a){var b=this.l.dataCallback;return this.l.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.l.breadcrumbCallback;return this.l.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.l.shouldSendCallback;return this.l.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.l.transport=a,this},lastException:function(){return this.e},lastEventId:function(){return this.g},isSetup:function(){return!!this.b&&(!!this.h||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.A("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=P.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(Q){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.I;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.k.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.K(this.H(c)),h=Q.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(Q.head||Q.body).appendChild(h)}},M:function(){var a=this;this.n+=1,setTimeout(function(){a.n-=1})},_:function(a,b){var c,d;if(this.c){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),Q.createEvent?(c=Q.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=Q.createEventObject(),c.eventType=a);for(d in b)y(b,d)&&(c[d]=b[d]);if(Q.createEvent)Q.dispatchEvent(c);else try{Q.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},aa:function(a){var b=this;return function(c){if(b.ba=null,b.w!==c){b.w=c;var d;try{d=C(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ca:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.ba;g||a.aa("input")(c),clearTimeout(g),a.ba=setTimeout(function(){a.ba=null},b)}}},da:function(a,b){var c=F(this.x.href),d=F(b),e=F(a);this.y=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},D:function(){var a=this;a.ea=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.N?a.ea.apply(this.P,arguments):a.ea.apply(this,arguments)}},R:function(){this.ea&&(Function.prototype.toString=this.ea)},E:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.da(b.y,c+""),a.apply(this,arguments)}};G(history,"pushState",j,d),G(history,"replaceState",j,d)}if(c.console&&"console"in P&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};u(["debug","info","warn","error","log"],function(a,b){M(console,b,k)})}},S:function(){for(var a;this.u.length;){a=this.u.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},T:function(){for(var a in this.r)this.q[a]=this.r[a]},G:function(){var a=this;u(this.s,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},H:function(a){var b=O.exec(a),c={},d=7;try{for(;d--;)c[N[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.l.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},K:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},B:function(){this.n||this.W.apply(this,arguments)},W:function(a,b){var c=this.Y(a,b);this._("handle",{stackInfo:a,options:b}),this.ga(a.name,a.message,a.url,a.lineno,c,b)},Y:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(u(a.stack,function(b,e){var f=c.ha(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.v,0)}),this.k.user&&(a.user=this.k.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),a=this.qa(a),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||t(a[b]))&&delete a[b]}),q(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!t(a)&&(!q(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.na()?void this.A("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function B(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&j(b))for(c=b.split(/\s+/),f=0;fc?M(a,b-1):d}function N(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?T:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function O(a,b){function c(a){return k(a)?a.map(function(a){return c(a)}):i(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!k(b)||k(b)&&0===b.length)return a;var d,e=w(b),f="********";try{d=JSON.parse(P(a))}catch(g){return a}return c(d)}var P=a(12),Q="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},R=3,S=51200,T=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isUndefined:g,isFunction:h,isPlainObject:i,isString:j,isArray:k,isEmptyObject:l,supportsErrorEvent:m,supportsFetch:n,supportsReferrerPolicy:o,supportsPromiseRejectionEvent:p,wrappedCallback:q,each:r,objectMerge:s,truncate:u,objectFrozen:t,hasKey:v,joinRegExp:w,urlencode:x,uuid4:z,htmlTreeAsString:A,htmlElementAsString:B,isSameException:E,isSameStacktrace:F,parseUrl:y,fill:G,safeJoin:H,serializeException:M,serializeKeysForMessage:N,sanitize:O}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{12:12}],11:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}var e=a(10),f={collectWindowErrors:!0,debug:!1},g="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},h=[].slice,i="?",j=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;f.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function k(a,b){var c=null;if(!b||f.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(h.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,g,h){var l=null,m=e.isErrorEvent(h)?h.error:h,n=e.isErrorEvent(a)?a.message:a;if(v)f.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&e.isError(m))l=f.computeStackTrace(m),k(l,!0);else{var p,r={url:b,line:c,column:g},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(j);p&&(s=p[1],n=p[2])}r.func=i,l={name:s,message:n,url:d(),stack:[r]},k(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=g.onerror,g.onerror=l,r=!0)}function n(){r&&(g.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,k.apply(null,[a,!1].concat(b))}function p(a,b){var c=h.call(arguments,1);if(v){if(u===a)return;o()}var d=f.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),f.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,e,f=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,g=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,h=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,j=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,k=/\((\S*)(?::(\d+))(?::(\d+))\)/,l=a.stack.split("\n"),m=[],n=(/^(.*) is undefined$/.exec(a.message),0),o=l.length;n eval")>-1;q&&(b=j.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==n||c[5]||"undefined"==typeof a.columnNumber||(m[0].column=a.columnNumber+1),e={url:c[3],func:c[1]||i,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}!e.func&&e.line&&(e.func=i),m.push(e)}return m.length?{name:a.name,message:a.message,url:d(),stack:m}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){ +if(a.incomplete=!1,e.func||(e.func=i),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,g){for(var h,j,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==e&&o!==f.report){if(j={url:null,func:i,line:null,column:null},o.name?j.func=o.name:(h=k.exec(o.toString()))&&(j.func=h[1]),"undefined"==typeof j.func)try{j.func=h.input.substring(0,h.input.indexOf("{"))}catch(p){}m[""+o]?n=!0:m[""+o]=!0,l.push(j)}g&&l.splice(0,g);var q={name:a.name,message:a.message,url:d(),stack:l};return b(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),q}function e(b,e){var g=null;e=null==e?0:+e;try{if(g=a(b))return g}catch(h){if(f.debug)throw h}try{if(g=c(b,e+1))return g}catch(h){if(f.debug)throw h}return{name:b.name,message:b.message,url:d()}}return e.augmentStackTraceWithInitialElement=b,e.computeStackTraceFromStackProp=a,e}(),b.exports=f}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{10:10}],12:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}],13:[function(a,b,c){function d(a,b){var c=(65535&a)+(65535&b),d=(a>>16)+(b>>16)+(c>>16);return d<<16|65535&c}function e(a,b){return a<>>32-b}function f(a,b,c,f,g,h){return d(e(d(d(b,a),d(f,h)),g),c)}function g(a,b,c,d,e,g,h){return f(b&c|~b&d,a,b,e,g,h)}function h(a,b,c,d,e,g,h){return f(b&d|c&~d,a,b,e,g,h)}function i(a,b,c,d,e,g,h){return f(b^c^d,a,b,e,g,h)}function j(a,b,c,d,e,g,h){return f(c^(b|~d),a,b,e,g,h)}function k(a,b){a[b>>5]|=128<>>9<<4)+14]=b;var c,e,f,k,l,m=1732584193,n=-271733879,o=-1732584194,p=271733878;for(c=0;c>5]>>>b%32&255);return c}function m(a){var b,c=[];for(c[(a.length>>2)-1]=void 0,b=0;b>5]|=(255&a.charCodeAt(b/8))<16&&(e=k(e,8*a.length)),c=0;c<16;c+=1)f[c]=909522486^e[c],g[c]=1549556828^e[c];return d=k(f.concat(m(b)),512+8*b.length),l(k(g.concat(d),640))}function p(a){var b,c,d="0123456789abcdef",e="";for(c=0;c>>4&15)+d.charAt(15&b);return e}function q(a){return unescape(encodeURIComponent(a))}function r(a){return n(q(a))}function s(a){return p(r(a))}function t(a,b){return o(q(a),q(b))}function u(a,b){return p(t(a,b))}function v(a,b,c){return b?c?t(b,a):u(b,a):c?r(a):s(a)}b.exports=v},{}]},{},[9,1,2,3,4,5])(9)}); //# sourceMappingURL=raven.min.js.map \ No newline at end of file diff --git a/dist/angular,console,ember,require,vue/raven.min.js.map b/dist/angular,console,ember,require,vue/raven.min.js.map index 305c51a37a51..e2bc28bbe0ca 100644 --- a/dist/angular,console,ember,require,vue/raven.min.js.map +++ b/dist/angular,console,ember,require,vue/raven.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["raven.js"],"names":["global","factory","exports","module","define","amd","Raven","this","createCommonjsModule","fn","_typeof","obj","Symbol","iterator","constructor","prototype","isObject$1","what","isError$1","value","toString","call","Error","isErrorEvent$1","supportsErrorEvent","isUndefined$1","isFunction$1","isPlainObject","Object","isString$1","isArray$1","isEmptyObject$1","_","hasOwnProperty","ErrorEvent","e","supportsFetch$1","_window$3","Headers","Request","Response","wrappedCallback","callback","dataCallback","data","original","normalizedData","each$1","i","j","length","hasKey$1","objectMerge$1","obj1","obj2","key","objectFrozen$1","isFrozen","truncate$1","str","max","substr","object","joinRegExp$1","patterns","pattern","sources","len","push","replace","source","RegExp","join","urlencode$1","o","pairs","encodeURIComponent","parseUrl$1","url","match","query","fragment","protocol","host","path","relative","uuid4$1","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","r","Math","random","htmlTreeAsString$1","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","reverse","className","classes","attr","tagName","toLowerCase","id","split","attrWhitelist","getAttribute","isOnlyOneTruthy","a","b","isBothUndefined","isSameException$1","ex1","ex2","values","type","stacktrace","isSameStacktrace$1","stack1","stack2","frames1","frames","frames2","filename","lineno","colno","fill$1","name","replacement","track","orig","__raven__","__orig__","safeJoin","input","delimiter","output","String","getLocationHref","document","location","href","RavenConfigError","message","now","Date","keepOriginalCallback","isFunction","Raven$1","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window$1","SENTRY_RELEASE","logger","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","_fetchDefaults","method","keepalive","referrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","console","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","_lastHref","_resetBackoff","angularPlugin","angular","RavenProvider","$get","$window","ExceptionHandlerProvider","$provide","decorator","exceptionHandler","R","$delegate","ex","cause","captureException","extra","window","moduleName","provider","config","setDataCallback","wrappedCallback$1","_normalizeData","consolePlugin","pluginOptions","logLevels","levels","msg","captureMessage","level","pop","wrapConsoleMethod$1","emberPlugin","Ember","_oldOnError","onerror","error","RSVP","on","reason","context","requirePlugin","formatComponentName","vm","$root","_isVue","$options","_componentTag","__file","vuePlugin","Vue","errorHandler","info","metaData","componentName","propsData","lifecycleHook","commonjsGlobal","self","_sPO","setPrototypeOf","p","__proto__","Reflect","construct","Parent","args","Class","Constructor","apply","bind","utils","isObject","isError","isErrorEvent","isString","isArray","isEmptyObject","supportsFetch","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","TraceKit","debug","_window$2","_slice","slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","report","subscribe","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","stack","isWindowError","exception","concat","arguments","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","computeStackTrace","augmentStackTraceWithInitialElement","processLastException","groups","line","column","undefined","func","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","lastException","rethrow","setTimeout","incomplete","uninstall","computeStackTraceFromStackProp","submatch","parts","element","chrome","gecko","winjs","geckoEval","chromeEval","lines","exec","isNative","indexOf","isEval","columnNumber","stackInfo","initial","unshift","partial","computeStackTraceByWalkingCallerChain","depth","item","functionName","funcs","recursion","curr","caller","substring","result","sourceURL","fileName","lineNumber","description","tracekit","stringify_1","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","err","keys","thisPos","Infinity","getSerialize","configError","wrapMethod","originalConsoleLevel","originalConsole","sentryLevel","Function","console$1","wrapConsoleMethod","dsnKeys","dsnPattern","navigator","VERSION","dsn","options","_logDebug","globalOptions","setDSN","maxBreadcrumbs","min","autoBreadcrumbDefaults","xhr","dom","sentry","instrumentDefaults","tryCatch","install","isSetup","_handleOnErrorStackInfo","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","lastIndexOf","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","wrap","_before","wrapped","deep","_ignoreNextOnError","__raven_wrapper__","property","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","trimHeadFrames","isNotError","isNotErrorEvent","isErrorEventWithoutError","_handleStackInfo","test","initialCall","fileurl","fingerprint","_prepareFrames","_send","captureBreadcrumb","crumb","timestamp","breadcrumbCallback","shift","addPlugin","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","O","X","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","Y","evtName","_keypressTimeout","target","category","$","debounceDuration","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","from","to","parsedLoc","parsedTo","parsedFrom","F","_originalFunctionToString","Q","G","wrapTimeFn","t","Array","originalCallback","wrapEventTarget","proto","capture","secure","handleEvent","before","clickHandler","keypressHandler","_keypressEventHandler","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","H","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","onreadystatechange","origFetch","fetchInput","fetchData","then","response","addEventListener","attachEvent","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","builtin","S","I","installer","J","m","allowSecretKey","M","port","E","T","_triggerEvent","_processException","U","frame","_normalizeFrame","in_app","da","stackInfoUrl","normalized","function","ca","prefixedMessage","culprit","ea","request","Referer","breadcrumbs","_trimBreadcrumbs","fa","urlProp","urlProps","ga","httpData","userAgent","User-Agent","referrer","A","_backoffDuration","_backoffStart","ja","ka","current","last","la","_shouldBackoff","retry","get","getResponseHeader","parseInt","V","baseData","project","platform","_getHttpData","serverName","server_name","forEach","_sendProcessedPayload","na","ma","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","oa","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","onload","open","setRequestHeader","send","pa","hash","evaluated","D","W","setUser","setReleaseContext","raven","_window","_Raven","noConflict","singleton","angularPattern","matches","angularDocs","console$3","ember","require_1","vue","angular_console_ember_require_vue"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file +{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","angularPlugin","angular","RavenProvider","$get","$window","ExceptionHandlerProvider","$provide","decorator","exceptionHandler","R","$delegate","ex","cause","captureException","extra","moduleName","provider","config","setDataCallback","wrappedCallback","data","_normalizeData","angularPattern","exception","values","matches","exec","value","type","message","angularDocs","substr","addPlugin","10","9","2","consolePlugin","console","pluginOptions","logLevels","levels","push","callback","msg","captureMessage","level","pop","wrapConsoleMethod","wrapMethod","7","3","emberPlugin","Ember","_oldOnError","onerror","error","RSVP","on","reason","context","4","requirePlugin","wrap","deep","5","formatComponentName","vm","$root","name","_isVue","$options","_componentTag","__file","vuePlugin","Vue","errorHandler","info","metaData","Object","prototype","toString","componentName","propsData","lifecycleHook","6","RavenConfigError","constructor","utils","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","safeJoin","logger","Function","apply","8","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","sanitizeKeys","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isError","isObject","isPlainObject","isErrorEvent","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","sanitize","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","dsn","options","_logDebug","globalOptions","key","setDSN","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","func","undefined","_before","wrapped","_ignoreNextOnError","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","U","event","unhandledPromiseRejection","C","_promiseRejectionHandler","bind","addEventListener","Q","removeEventListener","trimHeadFrames","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","V","currentOptions","exKeys","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","M","setTimeout","_","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","aa","evtName","_keypressTimeout","target","category","ca","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","da","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","D","_originalFunctionToString","E","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","F","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","S","builtin","T","G","installer","concat","H","str","m","allowSecretKey","K","port","B","W","stackInfo","_triggerEvent","_processException","lineno","Y","frame","_normalizeFrame","in_app","ha","stackInfoUrl","normalized","filename","line","colno","column","function","ga","prefixedMessage","culprit","ia","request","Referer","breadcrumbs","_trimBreadcrumbs","ja","urlProp","urlProps","ka","httpData","userAgent","User-Agent","referrer","z","_backoffDuration","_backoffStart","na","oa","current","last","pa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Z","baseData","project","platform","_getHttpData","serverName","server_name","_sanitizeData","forEach","random","_sendProcessedPayload","qa","sa","ra","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","ta","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","open","setRequestHeader","send","ua","hash","evaluated","A","$","setUser","setReleaseContext","11","12","13","RavenConstructor","_Raven","noConflict","Client","what","supportsErrorEvent","ErrorEvent","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","sanitizeMask","safeInput","o_O","getLocationHref","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","y","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","charAt","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","string","raw"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file diff --git a/dist/angular,console,ember,require/raven.js b/dist/angular,console,ember,require/raven.js index 1fe7e9e7850b..e358d6c75a6c 100644 --- a/dist/angular,console,ember,require/raven.js +++ b/dist/angular,console,ember,require/raven.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.22.2 (1b6187b) | github.com/getsentry/raven-js */ +/*! Raven.js 3.24.2 (540f32b) | github.com/getsentry/raven-js */ /* * Includes TraceKit @@ -10,3288 +10,4057 @@ * */ -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : - typeof define === 'function' && define.amd ? define(factory) : - (global.Raven = factory()); -}(this, (function () { 'use strict'; +(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.Raven = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o href parsing trick because React Native and other -// environments where DOM might not be available +/* + * The core Raven singleton + * + * @this {Raven} + */ +Raven.prototype = { + // Hardcode version string so that raven source can be loaded directly via + // webpack (using a build step causes webpack #1617). Grunt verifies that + // this value matches package.json during build. + // See: https://github.com/getsentry/raven-js/issues/465 + VERSION: '3.24.2', -function parseUrl$1(url) { - if (typeof url !== 'string') return {}; - var match = url.match(/^(([^:\/?#]+):)?(\/\/([^\/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?$/); // coerce to undefined values to empty string so we don't get 'undefined' + debug: false, - var query = match[6] || ''; - var fragment = match[8] || ''; - return { - protocol: match[2], - host: match[4], - path: match[5], - relative: match[5] + query + fragment // everything minus origin + TraceKit: TraceKit, // alias to TraceKit - }; -} + /* + * Configure Raven with a DSN and extra options + * + * @param {string} dsn The public Sentry DSN + * @param {object} options Set of global options [optional] + * @return {Raven} + */ + config: function(dsn, options) { + var self = this; -function uuid4$1() { - var crypto = _window$3.crypto || _window$3.msCrypto; + if (self._globalServer) { + this._logDebug('error', 'Error: Raven has already been configured'); + return self; + } + if (!dsn) return self; - if (!isUndefined$1(crypto) && crypto.getRandomValues) { - // Use window.crypto API if available - // eslint-disable-next-line no-undef - var arr = new Uint16Array(8); - crypto.getRandomValues(arr); // set 4 in byte 7 + var globalOptions = self._globalOptions; - arr[3] = arr[3] & 0xfff | 0x4000; // set 2 most significant bits of byte 9 to '10' + // merge in options + if (options) { + each(options, function(key, value) { + // tags and extra are special and need to be put into context + if (key === 'tags' || key === 'extra' || key === 'user') { + self._globalContext[key] = value; + } else { + globalOptions[key] = value; + } + }); + } - arr[4] = arr[4] & 0x3fff | 0x8000; + self.setDSN(dsn); - var pad = function pad(num) { - var v = num.toString(16); + // "Script error." is hard coded into browsers for errors that it can't read. + // this is the result of a script being pulled in from an external domain and CORS. + globalOptions.ignoreErrors.push(/^Script error\.?$/); + globalOptions.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/); - while (v.length < 4) { - v = '0' + v; - } + // join regexp rules into one big rule + globalOptions.ignoreErrors = joinRegExp(globalOptions.ignoreErrors); + globalOptions.ignoreUrls = globalOptions.ignoreUrls.length + ? joinRegExp(globalOptions.ignoreUrls) + : false; + globalOptions.whitelistUrls = globalOptions.whitelistUrls.length + ? joinRegExp(globalOptions.whitelistUrls) + : false; + globalOptions.includePaths = joinRegExp(globalOptions.includePaths); + globalOptions.maxBreadcrumbs = Math.max( + 0, + Math.min(globalOptions.maxBreadcrumbs || 100, 100) + ); // default and hard limit is 100 - return v; + var autoBreadcrumbDefaults = { + xhr: true, + console: true, + dom: true, + location: true, + sentry: true }; - return pad(arr[0]) + pad(arr[1]) + pad(arr[2]) + pad(arr[3]) + pad(arr[4]) + pad(arr[5]) + pad(arr[6]) + pad(arr[7]); - } else { - // http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/2117523#2117523 - return 'xxxxxxxxxxxx4xxxyxxxxxxxxxxxxxxx'.replace(/[xy]/g, function (c) { - var r = Math.random() * 16 | 0, - v = c === 'x' ? r : r & 0x3 | 0x8; - return v.toString(16); - }); - } -} -/** - * Given a child DOM element, returns a query-selector statement describing that - * and its ancestors - * e.g. [HTMLElement] => body > div > input#foo.btn[name=baz] - * @param elem - * @returns {string} - */ - - -function htmlTreeAsString$1(elem) { - /* eslint no-extra-parens:0*/ - var MAX_TRAVERSE_HEIGHT = 5, - MAX_OUTPUT_LEN = 80, - out = [], - height = 0, - len = 0, - separator = ' > ', - sepLength = separator.length, - nextStr; + var autoBreadcrumbs = globalOptions.autoBreadcrumbs; + if ({}.toString.call(autoBreadcrumbs) === '[object Object]') { + autoBreadcrumbs = objectMerge(autoBreadcrumbDefaults, autoBreadcrumbs); + } else if (autoBreadcrumbs !== false) { + autoBreadcrumbs = autoBreadcrumbDefaults; + } + globalOptions.autoBreadcrumbs = autoBreadcrumbs; - while (elem && height++ < MAX_TRAVERSE_HEIGHT) { - nextStr = htmlElementAsString(elem); // bail out if - // - nextStr is the 'html' element - // - the length of the string that would be created exceeds MAX_OUTPUT_LEN - // (ignore this limit if we are on the first iteration) + var instrumentDefaults = { + tryCatch: true + }; - if (nextStr === 'html' || height > 1 && len + out.length * sepLength + nextStr.length >= MAX_OUTPUT_LEN) { - break; + var instrument = globalOptions.instrument; + if ({}.toString.call(instrument) === '[object Object]') { + instrument = objectMerge(instrumentDefaults, instrument); + } else if (instrument !== false) { + instrument = instrumentDefaults; } + globalOptions.instrument = instrument; - out.push(nextStr); - len += nextStr.length; - elem = elem.parentNode; - } - - return out.reverse().join(separator); -} -/** - * Returns a simple, query-selector representation of a DOM element - * e.g. [HTMLElement] => input#foo.btn[name=baz] - * @param HTMLElement - * @returns {string} - */ + TraceKit.collectWindowErrors = !!globalOptions.collectWindowErrors; + // return for chaining + return self; + }, -function htmlElementAsString(elem) { - var out = [], - className, - classes, - key, - attr, - i; + /* + * Installs a global window.onerror error handler + * to capture and report uncaught exceptions. + * At this point, install() is required to be called due + * to the way TraceKit is set up. + * + * @return {Raven} + */ + install: function() { + var self = this; + if (self.isSetup() && !self._isRavenInstalled) { + TraceKit.report.subscribe(function() { + self._handleOnErrorStackInfo.apply(self, arguments); + }); - if (!elem || !elem.tagName) { - return ''; - } + if (self._globalOptions.captureUnhandledRejections) { + self._attachPromiseRejectionHandler(); + } - out.push(elem.tagName.toLowerCase()); + self._patchFunctionToString(); - if (elem.id) { - out.push('#' + elem.id); - } + if (self._globalOptions.instrument && self._globalOptions.instrument.tryCatch) { + self._instrumentTryCatch(); + } - className = elem.className; + if (self._globalOptions.autoBreadcrumbs) self._instrumentBreadcrumbs(); - if (className && isString$1(className)) { - classes = className.split(/\s+/); + // Install all of the plugins + self._drainPlugins(); - for (i = 0; i < classes.length; i++) { - out.push('.' + classes[i]); + self._isRavenInstalled = true; } - } - - var attrWhitelist = ['type', 'name', 'title', 'alt']; - for (i = 0; i < attrWhitelist.length; i++) { - key = attrWhitelist[i]; - attr = elem.getAttribute(key); + Error.stackTraceLimit = self._globalOptions.stackTraceLimit; + return this; + }, - if (attr) { - out.push('[' + key + '="' + attr + '"]'); - } - } + /* + * Set the DSN (can be called multiple time unlike config) + * + * @param {string} dsn The public Sentry DSN + */ + setDSN: function(dsn) { + var self = this, + uri = self._parseDSN(dsn), + lastSlash = uri.path.lastIndexOf('/'), + path = uri.path.substr(1, lastSlash); - return out.join(''); -} -/** - * Returns true if either a OR b is truthy, but not both - */ + self._dsn = dsn; + self._globalKey = uri.user; + self._globalSecret = uri.pass && uri.pass.substr(1); + self._globalProject = uri.path.substr(lastSlash + 1); + self._globalServer = self._getGlobalServer(uri); -function isOnlyOneTruthy(a, b) { - return !!(!!a ^ !!b); -} -/** - * Returns true if both parameters are undefined - */ + self._globalEndpoint = + self._globalServer + '/' + path + 'api/' + self._globalProject + '/store/'; + // Reset backoff state since we may be pointing at a + // new project/server + this._resetBackoff(); + }, -function isBothUndefined(a, b) { - return isUndefined$1(a) && isUndefined$1(b); -} -/** - * Returns true if the two input exception interfaces have the same content - */ + /* + * Wrap code within a context so Raven can capture errors + * reliably across domains that is executed immediately. + * + * @param {object} options A specific set of options for this context [optional] + * @param {function} func The callback to be immediately executed within the context + * @param {array} args An array of arguments to be called with the callback [optional] + */ + context: function(options, func, args) { + if (isFunction(options)) { + args = func || []; + func = options; + options = undefined; + } + return this.wrap(options, func).apply(this, args); + }, -function isSameException$1(ex1, ex2) { - if (isOnlyOneTruthy(ex1, ex2)) return false; - ex1 = ex1.values[0]; - ex2 = ex2.values[0]; - if (ex1.type !== ex2.type || ex1.value !== ex2.value) return false; // in case both stacktraces are undefined, we can't decide so default to false - - if (isBothUndefined(ex1.stacktrace, ex2.stacktrace)) return false; - return isSameStacktrace$1(ex1.stacktrace, ex2.stacktrace); -} -/** - * Returns true if the two input stack trace interfaces have the same content - */ - - -function isSameStacktrace$1(stack1, stack2) { - if (isOnlyOneTruthy(stack1, stack2)) return false; - var frames1 = stack1.frames; - var frames2 = stack2.frames; // Exit early if frame count differs - - if (frames1.length !== frames2.length) return false; // Iterate through every frame; bail out if anything differs - - var a, b; - - for (var i = 0; i < frames1.length; i++) { - a = frames1[i]; - b = frames2[i]; - if (a.filename !== b.filename || a.lineno !== b.lineno || a.colno !== b.colno || a['function'] !== b['function']) return false; - } - - return true; -} -/** - * Polyfill a method - * @param obj object e.g. `document` - * @param name method name present on object e.g. `addEventListener` - * @param replacement replacement function - * @param track {optional} record instrumentation to an array - */ - - -function fill$1(obj, name, replacement, track) { - var orig = obj[name]; - obj[name] = replacement(orig); - obj[name].__raven__ = true; - obj[name].__orig__ = orig; - - if (track) { - track.push([obj, name, orig]); - } -} -/** - * Join values in array - * @param input array of values to be joined together - * @param delimiter string to be placed in-between values - * @returns {string} - */ + /* + * Wrap code within a context and returns back a new function to be executed + * + * @param {object} options A specific set of options for this context [optional] + * @param {function} func The function to be wrapped in a new context + * @param {function} func A function to call before the try/catch wrapper [optional, private] + * @return {function} The newly wrapped functions with a context + */ + wrap: function(options, func, _before) { + var self = this; + // 1 argument has been passed, and it's not a function + // so just return it + if (isUndefined(func) && !isFunction(options)) { + return options; + } + // options is optional + if (isFunction(options)) { + func = options; + options = undefined; + } -function safeJoin(input, delimiter) { - if (!isArray$1(input)) return ''; - var output = []; + // At this point, we've passed along 2 arguments, and the second one + // is not a function either, so we'll just return the second argument. + if (!isFunction(func)) { + return func; + } - for (var i = 0; i < input.length; i++) { + // We don't wanna wrap it twice! try { - output.push(String(input[i])); + if (func.__raven__) { + return func; + } + + // If this has already been wrapped in the past, return that + if (func.__raven_wrapper__) { + return func.__raven_wrapper__; + } } catch (e) { - output.push('[value cannot be serialized]'); + // Just accessing custom props in some Selenium environments + // can cause a "Permission denied" exception (see raven-js#495). + // Bail on wrapping and return the function as-is (defers to window.onerror). + return func; } - } - - return output.join(delimiter); -} -var utils = { - isObject: isObject$1, - isError: isError$1, - isErrorEvent: isErrorEvent$1, - isUndefined: isUndefined$1, - isFunction: isFunction$1, - isPlainObject: isPlainObject, - isString: isString$1, - isArray: isArray$1, - isEmptyObject: isEmptyObject$1, - supportsErrorEvent: supportsErrorEvent, - supportsFetch: supportsFetch$1, - wrappedCallback: wrappedCallback, - each: each$1, - objectMerge: objectMerge$1, - truncate: truncate$1, - objectFrozen: objectFrozen$1, - hasKey: hasKey$1, - joinRegExp: joinRegExp$1, - urlencode: urlencode$1, - uuid4: uuid4$1, - htmlTreeAsString: htmlTreeAsString$1, - htmlElementAsString: htmlElementAsString, - isSameException: isSameException$1, - isSameStacktrace: isSameStacktrace$1, - parseUrl: parseUrl$1, - fill: fill$1, - safeJoin: safeJoin -}; + function wrapped() { + var args = [], + i = arguments.length, + deep = !options || (options && options.deep !== false); -/* - TraceKit - Cross brower stack traces + if (_before && isFunction(_before)) { + _before.apply(this, arguments); + } - This was originally forked from github.com/occ/TraceKit, but has since been - largely re-written and is now maintained as part of raven-js. Tests for - this are in test/vendor. + // Recursively wrap all of a function's arguments that are + // functions themselves. + while (i--) args[i] = deep ? self.wrap(options, arguments[i]) : arguments[i]; - MIT license -*/ + try { + // Attempt to invoke user-land function + // NOTE: If you are a Sentry user, and you are seeing this stack frame, it + // means Raven caught an error invoking your application code. This is + // expected behavior and NOT indicative of a bug with Raven.js. + return func.apply(this, args); + } catch (e) { + self._ignoreNextOnError(); + self.captureException(e, options); + throw e; + } + } -var TraceKit = { - collectWindowErrors: true, - debug: false -}; // This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) + // copy over properties of the old function + for (var property in func) { + if (hasKey(func, property)) { + wrapped[property] = func[property]; + } + } + wrapped.prototype = func.prototype; -var _window$2 = typeof window !== 'undefined' ? window : typeof commonjsGlobal !== 'undefined' ? commonjsGlobal : typeof self !== 'undefined' ? self : {}; // global reference to slice + func.__raven_wrapper__ = wrapped; + // Signal that this function has been wrapped/filled already + // for both debugging and to prevent it to being wrapped/filled twice + wrapped.__raven__ = true; + wrapped.__orig__ = func; + return wrapped; + }, -var _slice = [].slice; -var UNKNOWN_FUNCTION = '?'; // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error#Error_types + /** + * Uninstalls the global error handler. + * + * @return {Raven} + */ + uninstall: function() { + TraceKit.report.uninstall(); -var ERROR_TYPES_RE = /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/; + this._detachPromiseRejectionHandler(); + this._unpatchFunctionToString(); + this._restoreBuiltIns(); + this._restoreConsole(); -function getLocationHref() { - if (typeof document === 'undefined' || document.location == null) return ''; - return document.location.href; -} -/** - * TraceKit.report: cross-browser processing of unhandled exceptions - * - * Syntax: - * TraceKit.report.subscribe(function(stackInfo) { ... }) - * TraceKit.report.unsubscribe(function(stackInfo) { ... }) - * TraceKit.report(exception) - * try { ...code... } catch(ex) { TraceKit.report(ex); } - * - * Supports: - * - Firefox: full stack trace with line numbers, plus column number - * on top frame; column number is not guaranteed - * - Opera: full stack trace with line and column numbers - * - Chrome: full stack trace with line and column numbers - * - Safari: line and column number for the top frame only; some frames - * may be missing, and column number is not guaranteed - * - IE: line and column number for the top frame only; some frames - * may be missing, and column number is not guaranteed - * - * In theory, TraceKit should work on all of the following versions: - * - IE5.5+ (only 8.0 tested) - * - Firefox 0.9+ (only 3.5+ tested) - * - Opera 7+ (only 10.50 tested; versions 9 and earlier may require - * Exceptions Have Stacktrace to be enabled in opera:config) - * - Safari 3+ (only 4+ tested) - * - Chrome 1+ (only 5+ tested) - * - Konqueror 3.5+ (untested) - * - * Requires TraceKit.computeStackTrace. - * - * Tries to catch all unhandled exceptions and report them to the - * subscribed handlers. Please note that TraceKit.report will rethrow the - * exception. This is REQUIRED in order to get a useful stack trace in IE. - * If the exception does not reach the top of the browser, you will only - * get a stack trace from the point where TraceKit.report was called. - * - * Handlers receive a stackInfo object as described in the - * TraceKit.computeStackTrace docs. - */ + Error.stackTraceLimit = this._originalErrorStackTraceLimit; + this._isRavenInstalled = false; + return this; + }, -TraceKit.report = function reportModuleWrapper() { - var handlers = [], - lastArgs = null, - lastException = null, - lastExceptionStack = null; /** - * Add a crash handler. - * @param {Function} handler - */ + * Callback used for `unhandledrejection` event + * + * @param {PromiseRejectionEvent} event An object containing + * promise: the Promise that was rejected + * reason: the value with which the Promise was rejected + * @return void + */ + _promiseRejectionHandler: function(event) { + this._logDebug('debug', 'Raven caught unhandled promise rejection:', event); + this.captureException(event.reason, { + extra: { + unhandledPromiseRejection: true + } + }); + }, - function subscribe(handler) { - installGlobalHandler(); - handlers.push(handler); - } /** - * Remove a crash handler. - * @param {Function} handler - */ + * Installs the global promise rejection handler. + * + * @return {raven} + */ + _attachPromiseRejectionHandler: function() { + this._promiseRejectionHandler = this._promiseRejectionHandler.bind(this); + _window.addEventListener && + _window.addEventListener('unhandledrejection', this._promiseRejectionHandler); + return this; + }, + /** + * Uninstalls the global promise rejection handler. + * + * @return {raven} + */ + _detachPromiseRejectionHandler: function() { + _window.removeEventListener && + _window.removeEventListener('unhandledrejection', this._promiseRejectionHandler); + return this; + }, - function unsubscribe(handler) { - for (var i = handlers.length - 1; i >= 0; --i) { - if (handlers[i] === handler) { - handlers.splice(i, 1); + /** + * Manually capture an exception and send it over to Sentry + * + * @param {error} ex An exception to be logged + * @param {object} options A specific set of options for this error [optional] + * @return {Raven} + */ + captureException: function(ex, options) { + options = objectMerge({trimHeadFrames: 0}, options ? options : {}); + + if (isErrorEvent(ex) && ex.error) { + // If it is an ErrorEvent with `error` property, extract it to get actual Error + ex = ex.error; + } else if (isError(ex)) { + // we have a real Error object + ex = ex; + } else if (isPlainObject(ex)) { + // If it is plain Object, serialize it manually and extract options + // This will allow us to group events based on top-level keys + // which is much better than creating new group when any key/value change + options = this._getCaptureExceptionOptionsFromPlainObject(options, ex); + ex = new Error(options.message); + } else { + // If none of previous checks were valid, then it means that + // it's not a plain Object + // it's not a valid ErrorEvent (one with an error property) + // it's not an Error + // So bail out and capture it as a simple message: + return this.captureMessage( + ex, + objectMerge(options, { + stacktrace: true, // if we fall back to captureMessage, default to attempting a new trace + trimHeadFrames: options.trimHeadFrames + 1 + }) + ); + } + + // Store the raw exception object for potential debugging and introspection + this._lastCapturedException = ex; + + // TraceKit.report will re-raise any exception passed to it, + // which means you have to wrap it in try/catch. Instead, we + // can wrap it here and only re-raise if TraceKit.report + // raises an exception different from the one we asked to + // report on. + try { + var stack = TraceKit.computeStackTrace(ex); + this._handleStackInfo(stack, options); + } catch (ex1) { + if (ex !== ex1) { + throw ex1; } } - } - /** - * Remove all crash handlers. - */ + return this; + }, - function unsubscribeAll() { - uninstallGlobalHandler(); - handlers = []; - } - /** - * Dispatch stack information to all handlers. - * @param {Object.} stack - */ - + _getCaptureExceptionOptionsFromPlainObject: function(currentOptions, ex) { + var exKeys = Object.keys(ex).sort(); + var options = objectMerge(currentOptions, { + message: + 'Non-Error exception captured with keys: ' + serializeKeysForMessage(exKeys), + fingerprint: [md5(exKeys)], + extra: currentOptions.extra || {} + }); + options.extra.__serialized__ = serializeException(ex); - function notifyHandlers(stack, isWindowError) { - var exception = null; + return options; + }, - if (isWindowError && !TraceKit.collectWindowErrors) { + /* + * Manually send a message to Sentry + * + * @param {string} msg A plain message to be captured in Sentry + * @param {object} options A specific set of options for this message [optional] + * @return {Raven} + */ + captureMessage: function(msg, options) { + // config() automagically converts ignoreErrors from a list to a RegExp so we need to test for an + // early call; we'll error on the side of logging anything called before configuration since it's + // probably something you should see: + if ( + !!this._globalOptions.ignoreErrors.test && + this._globalOptions.ignoreErrors.test(msg) + ) { return; } - for (var i in handlers) { - if (handlers.hasOwnProperty(i)) { - try { - handlers[i].apply(null, [stack].concat(_slice.call(arguments, 2))); - } catch (inner) { - exception = inner; - } - } - } + options = options || {}; + msg = msg + ''; // Make sure it's actually a string - if (exception) { - throw exception; + var data = objectMerge( + { + message: msg + }, + options + ); + + var ex; + // Generate a "synthetic" stack trace from this point. + // NOTE: If you are a Sentry user, and you are seeing this stack frame, it is NOT indicative + // of a bug with Raven.js. Sentry generates synthetic traces either by configuration, + // or if it catches a thrown object without a "stack" property. + try { + throw new Error(msg); + } catch (ex1) { + ex = ex1; } - } - var _oldOnerrorHandler, _onErrorHandlerInstalled; - /** - * Ensures all global unhandled exceptions are recorded. - * Supported by Gecko and IE. - * @param {string} msg Error message. - * @param {string} url URL of script that generated the exception. - * @param {(number|string)} lineNo The line number at which the error - * occurred. - * @param {?(number|string)} colNo The column number at which the error - * occurred. - * @param {?Error} ex The actual Error object. - */ + // null exception name so `Error` isn't prefixed to msg + ex.name = null; + var stack = TraceKit.computeStackTrace(ex); + // stack[0] is `throw new Error(msg)` call itself, we are interested in the frame that was just before that, stack[1] + var initialCall = isArray(stack.stack) && stack.stack[1]; - function traceKitWindowOnError(msg, url, lineNo, colNo, ex) { - var stack = null; // If 'ex' is ErrorEvent, get real Error from inside + // if stack[1] is `Raven.captureException`, it means that someone passed a string to it and we redirected that call + // to be handled by `captureMessage`, thus `initialCall` is the 3rd one, not 2nd + // initialCall => captureException(string) => captureMessage(string) + if (initialCall && initialCall.func === 'Raven.captureException') { + initialCall = stack.stack[2]; + } - var exception = utils.isErrorEvent(ex) ? ex.error : ex; // If 'msg' is ErrorEvent, get real message from inside + var fileurl = (initialCall && initialCall.url) || ''; - var message = utils.isErrorEvent(msg) ? msg.message : msg; + if ( + !!this._globalOptions.ignoreUrls.test && + this._globalOptions.ignoreUrls.test(fileurl) + ) { + return; + } - if (lastExceptionStack) { - TraceKit.computeStackTrace.augmentStackTraceWithInitialElement(lastExceptionStack, url, lineNo, message); - processLastException(); - } else if (exception && utils.isError(exception)) { - // non-string `exception` arg; attempt to extract stack trace - // New chrome and blink send along a real error object - // Let's just report that like a normal error. - // See: https://mikewest.org/2013/08/debugging-runtime-errors-with-window-onerror - stack = TraceKit.computeStackTrace(exception); - notifyHandlers(stack, true); - } else { - var location = { - url: url, - line: lineNo, - column: colNo - }; - var name = undefined; - var groups; + if ( + !!this._globalOptions.whitelistUrls.test && + !this._globalOptions.whitelistUrls.test(fileurl) + ) { + return; + } - if ({}.toString.call(message) === '[object String]') { - var groups = message.match(ERROR_TYPES_RE); + if (this._globalOptions.stacktrace || (options && options.stacktrace)) { + // fingerprint on msg, not stack trace (legacy behavior, could be revisited) + data.fingerprint = data.fingerprint == null ? msg : data.fingerprint; - if (groups) { - name = groups[1]; - message = groups[2]; - } - } + options = objectMerge( + { + trimHeadFrames: 0 + }, + options + ); + // Since we know this is a synthetic trace, the top frame (this function call) + // MUST be from Raven.js, so mark it for trimming + // We add to the trim counter so that callers can choose to trim extra frames, such + // as utility functions. + options.trimHeadFrames += 1; - location.func = UNKNOWN_FUNCTION; - stack = { - name: name, - message: message, - url: getLocationHref(), - stack: [location] + var frames = this._prepareFrames(stack, options); + data.stacktrace = { + // Sentry expects frames oldest to newest + frames: frames.reverse() }; - notifyHandlers(stack, true); } - if (_oldOnerrorHandler) { - return _oldOnerrorHandler.apply(this, arguments); + // Make sure that fingerprint is always wrapped in an array + if (data.fingerprint) { + data.fingerprint = isArray(data.fingerprint) + ? data.fingerprint + : [data.fingerprint]; } - return false; - } + // Fire away! + this._send(data); - function installGlobalHandler() { - if (_onErrorHandlerInstalled) { - return; + return this; + }, + + captureBreadcrumb: function(obj) { + var crumb = objectMerge( + { + timestamp: now() / 1000 + }, + obj + ); + + if (isFunction(this._globalOptions.breadcrumbCallback)) { + var result = this._globalOptions.breadcrumbCallback(crumb); + + if (isObject(result) && !isEmptyObject(result)) { + crumb = result; + } else if (result === false) { + return this; + } } - _oldOnerrorHandler = _window$2.onerror; - _window$2.onerror = traceKitWindowOnError; - _onErrorHandlerInstalled = true; - } + this._breadcrumbs.push(crumb); + if (this._breadcrumbs.length > this._globalOptions.maxBreadcrumbs) { + this._breadcrumbs.shift(); + } + return this; + }, - function uninstallGlobalHandler() { - if (!_onErrorHandlerInstalled) { - return; + addPlugin: function(plugin /*arg1, arg2, ... argN*/) { + var pluginArgs = [].slice.call(arguments, 1); + + this._plugins.push([plugin, pluginArgs]); + if (this._isRavenInstalled) { + this._drainPlugins(); } - _window$2.onerror = _oldOnerrorHandler; - _onErrorHandlerInstalled = false; - _oldOnerrorHandler = undefined; - } + return this; + }, - function processLastException() { - var _lastExceptionStack = lastExceptionStack, - _lastArgs = lastArgs; - lastArgs = null; - lastExceptionStack = null; - lastException = null; - notifyHandlers.apply(null, [_lastExceptionStack, false].concat(_lastArgs)); - } - /** - * Reports an unhandled Error to TraceKit. - * @param {Error} ex - * @param {?boolean} rethrow If false, do not re-throw the exception. - * Only used for window.onerror to not cause an infinite loop of - * rethrowing. + /* + * Set/clear a user to be sent along with the payload. + * + * @param {object} user An object representing user data [optional] + * @return {Raven} */ + setUserContext: function(user) { + // Intentionally do not merge here since that's an unexpected behavior. + this._globalContext.user = user; + return this; + }, - function report(ex, rethrow) { - var args = _slice.call(arguments, 1); + /* + * Merge extra attributes to be sent along with the payload. + * + * @param {object} extra An object representing extra data [optional] + * @return {Raven} + */ + setExtraContext: function(extra) { + this._mergeContext('extra', extra); - if (lastExceptionStack) { - if (lastException === ex) { - return; // already caught by an inner catch block, ignore - } else { - processLastException(); - } - } + return this; + }, - var stack = TraceKit.computeStackTrace(ex); - lastExceptionStack = stack; - lastException = ex; - lastArgs = args; // If the stack trace is incomplete, wait for 2 seconds for - // slow slow IE to see if onerror occurs or not before reporting - // this exception; otherwise, we will end up with an incomplete - // stack trace + /* + * Merge tags to be sent along with the payload. + * + * @param {object} tags An object representing tags [optional] + * @return {Raven} + */ + setTagsContext: function(tags) { + this._mergeContext('tags', tags); - setTimeout(function () { - if (lastException === ex) { - processLastException(); - } - }, stack.incomplete ? 2000 : 0); + return this; + }, - if (rethrow !== false) { - throw ex; // re-throw to propagate to the top level (and cause window.onerror) - } - } + /* + * Clear all of the context. + * + * @return {Raven} + */ + clearContext: function() { + this._globalContext = {}; - report.subscribe = subscribe; - report.unsubscribe = unsubscribe; - report.uninstall = unsubscribeAll; - return report; -}(); -/** - * TraceKit.computeStackTrace: cross-browser stack traces in JavaScript - * - * Syntax: - * s = TraceKit.computeStackTrace(exception) // consider using TraceKit.report instead (see below) - * Returns: - * s.name - exception name - * s.message - exception message - * s.stack[i].url - JavaScript or HTML file URL - * s.stack[i].func - function name, or empty for anonymous functions (if guessing did not work) - * s.stack[i].args - arguments passed to the function, if known - * s.stack[i].line - line number, if known - * s.stack[i].column - column number, if known - * - * Supports: - * - Firefox: full stack trace with line numbers and unreliable column - * number on top frame - * - Opera 10: full stack trace with line and column numbers - * - Opera 9-: full stack trace with line numbers - * - Chrome: full stack trace with line and column numbers - * - Safari: line and column number for the topmost stacktrace element - * only - * - IE: no line numbers whatsoever - * - * Tries to guess names of anonymous functions by looking for assignments - * in the source code. In IE and Safari, we have to guess source file names - * by searching for function bodies inside all page scripts. This will not - * work for scripts that are loaded cross-domain. - * Here be dragons: some function names may be guessed incorrectly, and - * duplicate functions may be mismatched. - * - * TraceKit.computeStackTrace should only be used for tracing purposes. - * Logging of unhandled exceptions should be done with TraceKit.report, - * which builds on top of TraceKit.computeStackTrace and provides better - * IE support by utilizing the window.onerror event to retrieve information - * about the top of the stack. - * - * Note: In IE and Safari, no stack trace is recorded on the Error object, - * so computeStackTrace instead walks its *own* chain of callers. - * This means that: - * * in Safari, some methods may be missing from the stack trace; - * * in IE, the topmost function in the stack trace will always be the - * caller of computeStackTrace. - * - * This is okay for tracing (because you are likely to be calling - * computeStackTrace from the function you want to be the topmost element - * of the stack trace anyway), but not okay for logging unhandled - * exceptions (because your catch block will likely be far away from the - * inner function that actually caused the exception). - * - */ + return this; + }, + /* + * Get a copy of the current context. This cannot be mutated. + * + * @return {object} copy of context + */ + getContext: function() { + // lol javascript + return JSON.parse(stringify(this._globalContext)); + }, -TraceKit.computeStackTrace = function computeStackTraceWrapper() { - // Contents of Exception in various browsers. - // - // SAFARI: - // ex.message = Can't find variable: qq - // ex.line = 59 - // ex.sourceId = 580238192 - // ex.sourceURL = http://... - // ex.expressionBeginOffset = 96 - // ex.expressionCaretOffset = 98 - // ex.expressionEndOffset = 98 - // ex.name = ReferenceError - // - // FIREFOX: - // ex.message = qq is not defined - // ex.fileName = http://... - // ex.lineNumber = 59 - // ex.columnNumber = 69 - // ex.stack = ...stack trace... (see the example below) - // ex.name = ReferenceError - // - // CHROME: - // ex.message = qq is not defined - // ex.name = ReferenceError - // ex.type = not_defined - // ex.arguments = ['aa'] - // ex.stack = ...stack trace... - // - // INTERNET EXPLORER: - // ex.message = ... - // ex.name = ReferenceError - // - // OPERA: - // ex.message = ...message... (see the example below) - // ex.name = ReferenceError - // ex.opera#sourceloc = 11 (pretty much useless, duplicates the info in ex.message) - // ex.stacktrace = n/a; see 'opera:config#UserPrefs|Exceptions Have Stacktrace' + /* + * Set environment of application + * + * @param {string} environment Typically something like 'production'. + * @return {Raven} + */ + setEnvironment: function(environment) { + this._globalOptions.environment = environment; - /** - * Computes stack trace information from the stack property. - * Chrome and Gecko use this property. - * @param {Error} ex - * @return {?Object.} Stack trace information. + return this; + }, + + /* + * Set release version of application + * + * @param {string} release Typically something like a git SHA to identify version + * @return {Raven} */ - function computeStackTraceFromStackProp(ex) { - if (typeof ex.stack === 'undefined' || !ex.stack) return; - var chrome = /^\s*at (.*?) ?\(((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i, - gecko = /^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|\[native).*?|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i, - winjs = /^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i, - // Used to additionally parse URL/line/column from eval frames - geckoEval = /(\S+) line (\d+)(?: > eval line \d+)* > eval/i, - chromeEval = /\((\S*)(?::(\d+))(?::(\d+))\)/, - lines = ex.stack.split('\n'), - stack = [], - submatch, - parts, - element, - reference = /^(.*) is undefined$/.exec(ex.message); + setRelease: function(release) { + this._globalOptions.release = release; - for (var i = 0, j = lines.length; i < j; ++i) { - if (parts = chrome.exec(lines[i])) { - var isNative = parts[2] && parts[2].indexOf('native') === 0; // start of line + return this; + }, - var isEval = parts[2] && parts[2].indexOf('eval') === 0; // start of line + /* + * Set the dataCallback option + * + * @param {function} callback The callback to run which allows the + * data blob to be mutated before sending + * @return {Raven} + */ + setDataCallback: function(callback) { + var original = this._globalOptions.dataCallback; + this._globalOptions.dataCallback = keepOriginalCallback(original, callback); + return this; + }, - if (isEval && (submatch = chromeEval.exec(parts[2]))) { - // throw out eval line/column and use top-most line/column number - parts[2] = submatch[1]; // url + /* + * Set the breadcrumbCallback option + * + * @param {function} callback The callback to run which allows filtering + * or mutating breadcrumbs + * @return {Raven} + */ + setBreadcrumbCallback: function(callback) { + var original = this._globalOptions.breadcrumbCallback; + this._globalOptions.breadcrumbCallback = keepOriginalCallback(original, callback); + return this; + }, - parts[3] = submatch[2]; // line + /* + * Set the shouldSendCallback option + * + * @param {function} callback The callback to run which allows + * introspecting the blob before sending + * @return {Raven} + */ + setShouldSendCallback: function(callback) { + var original = this._globalOptions.shouldSendCallback; + this._globalOptions.shouldSendCallback = keepOriginalCallback(original, callback); + return this; + }, - parts[4] = submatch[3]; // column - } + /** + * Override the default HTTP transport mechanism that transmits data + * to the Sentry server. + * + * @param {function} transport Function invoked instead of the default + * `makeRequest` handler. + * + * @return {Raven} + */ + setTransport: function(transport) { + this._globalOptions.transport = transport; - element = { - url: !isNative ? parts[2] : null, - func: parts[1] || UNKNOWN_FUNCTION, - args: isNative ? [parts[2]] : [], - line: parts[3] ? +parts[3] : null, - column: parts[4] ? +parts[4] : null - }; - } else if (parts = winjs.exec(lines[i])) { - element = { - url: parts[2], - func: parts[1] || UNKNOWN_FUNCTION, - args: [], - line: +parts[3], - column: parts[4] ? +parts[4] : null - }; - } else if (parts = gecko.exec(lines[i])) { - var isEval = parts[3] && parts[3].indexOf(' > eval') > -1; + return this; + }, - if (isEval && (submatch = geckoEval.exec(parts[3]))) { - // throw out eval line/column and use top-most line number - parts[3] = submatch[1]; - parts[4] = submatch[2]; - parts[5] = null; // no column when eval - } else if (i === 0 && !parts[5] && typeof ex.columnNumber !== 'undefined') { - // FireFox uses this awesome columnNumber property for its top frame - // Also note, Firefox's column number is 0-based and everything else expects 1-based, - // so adding 1 - // NOTE: this hack doesn't work if top-most frame is eval - stack[0].column = ex.columnNumber + 1; - } + /* + * Get the latest raw exception that was captured by Raven. + * + * @return {error} + */ + lastException: function() { + return this._lastCapturedException; + }, - element = { - url: parts[3], - func: parts[1] || UNKNOWN_FUNCTION, - args: parts[2] ? parts[2].split(',') : [], - line: parts[4] ? +parts[4] : null, - column: parts[5] ? +parts[5] : null - }; - } else { - continue; - } + /* + * Get the last event id + * + * @return {string} + */ + lastEventId: function() { + return this._lastEventId; + }, - if (!element.func && element.line) { - element.func = UNKNOWN_FUNCTION; + /* + * Determine if Raven is setup and ready to go. + * + * @return {boolean} + */ + isSetup: function() { + if (!this._hasJSON) return false; // needs JSON support + if (!this._globalServer) { + if (!this.ravenNotConfiguredError) { + this.ravenNotConfiguredError = true; + this._logDebug('error', 'Error: Raven has not been configured.'); } - - stack.push(element); + return false; } + return true; + }, - if (!stack.length) { - return null; - } + afterLoad: function() { + // TODO: remove window dependence? - return { - name: ex.name, - message: ex.message, - url: getLocationHref(), - stack: stack - }; - } - /** - * Adds information about the first frame to incomplete stack traces. - * Safari and IE require this to get complete data on the first frame. - * @param {Object.} stackInfo Stack trace information from - * one of the compute* methods. - * @param {string} url The URL of the script that caused an error. - * @param {(number|string)} lineNo The line number of the script that - * caused an error. - * @param {string=} message The error generated by the browser, which - * hopefully contains the name of the object that caused the error. - * @return {boolean} Whether or not the stack information was - * augmented. - */ + // Attempt to initialize Raven on load + var RavenConfig = _window.RavenConfig; + if (RavenConfig) { + this.config(RavenConfig.dsn, RavenConfig.config).install(); + } + }, + showReportDialog: function(options) { + if ( + !_document // doesn't work without a document (React native) + ) + return; - function augmentStackTraceWithInitialElement(stackInfo, url, lineNo, message) { - var initial = { - url: url, - line: lineNo - }; + options = options || {}; - if (initial.url && initial.line) { - stackInfo.incomplete = false; + var lastEventId = options.eventId || this.lastEventId(); + if (!lastEventId) { + throw new RavenConfigError('Missing eventId'); + } - if (!initial.func) { - initial.func = UNKNOWN_FUNCTION; - } + var dsn = options.dsn || this._dsn; + if (!dsn) { + throw new RavenConfigError('Missing DSN'); + } - if (stackInfo.stack.length > 0) { - if (stackInfo.stack[0].url === initial.url) { - if (stackInfo.stack[0].line === initial.line) { - return false; // already in stack trace - } else if (!stackInfo.stack[0].line && stackInfo.stack[0].func === initial.func) { - stackInfo.stack[0].line = initial.line; - return false; - } - } - } + var encode = encodeURIComponent; + var qs = ''; + qs += '?eventId=' + encode(lastEventId); + qs += '&dsn=' + encode(dsn); - stackInfo.stack.unshift(initial); - stackInfo.partial = true; - return true; - } else { - stackInfo.incomplete = true; + var user = options.user || this._globalContext.user; + if (user) { + if (user.name) qs += '&name=' + encode(user.name); + if (user.email) qs += '&email=' + encode(user.email); } - return false; - } - /** - * Computes stack trace information by walking the arguments.caller - * chain at the time the exception occurred. This will cause earlier - * frames to be missed but is the only way to get any stack trace in - * Safari and IE. The top frame is restored by - * {@link augmentStackTraceWithInitialElement}. - * @param {Error} ex - * @return {?Object.} Stack trace information. - */ + var globalServer = this._getGlobalServer(this._parseDSN(dsn)); + var script = _document.createElement('script'); + script.async = true; + script.src = globalServer + '/api/embed/error-page/' + qs; + (_document.head || _document.body).appendChild(script); + }, - function computeStackTraceByWalkingCallerChain(ex, depth) { - var functionName = /function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i, - stack = [], - funcs = {}, - recursion = false, - parts, - item; + /**** Private functions ****/ + _ignoreNextOnError: function() { + var self = this; + this._ignoreOnError += 1; + setTimeout(function() { + // onerror should trigger before setTimeout + self._ignoreOnError -= 1; + }); + }, - for (var curr = computeStackTraceByWalkingCallerChain.caller; curr && !recursion; curr = curr.caller) { - if (curr === computeStackTrace || curr === TraceKit.report) { - // console.log('skipping internal function'); - continue; - } + _triggerEvent: function(eventType, options) { + // NOTE: `event` is a native browser thing, so let's avoid conflicting wiht it + var evt, key; - item = { - url: null, - func: UNKNOWN_FUNCTION, - line: null, - column: null - }; + if (!this._hasDocument) return; - if (curr.name) { - item.func = curr.name; - } else if (parts = functionName.exec(curr.toString())) { - item.func = parts[1]; - } - - if (typeof item.func === 'undefined') { - try { - item.func = parts.input.substring(0, parts.input.indexOf('{')); - } catch (e) {} - } + options = options || {}; - if (funcs['' + curr]) { - recursion = true; - } else { - funcs['' + curr] = true; - } + eventType = 'raven' + eventType.substr(0, 1).toUpperCase() + eventType.substr(1); - stack.push(item); + if (_document.createEvent) { + evt = _document.createEvent('HTMLEvents'); + evt.initEvent(eventType, true, true); + } else { + evt = _document.createEventObject(); + evt.eventType = eventType; } - if (depth) { - // console.log('depth is ' + depth); - // console.log('stack is ' + stack.length); - stack.splice(0, depth); + for (key in options) + if (hasKey(options, key)) { + evt[key] = options[key]; + } + + if (_document.createEvent) { + // IE9 if standards + _document.dispatchEvent(evt); + } else { + // IE8 regardless of Quirks or Standards + // IE9 if quirks + try { + _document.fireEvent('on' + evt.eventType.toLowerCase(), evt); + } catch (e) { + // Do nothing + } } + }, - var result = { - name: ex.name, - message: ex.message, - url: getLocationHref(), - stack: stack - }; - augmentStackTraceWithInitialElement(result, ex.sourceURL || ex.fileName, ex.line || ex.lineNumber, ex.message || ex.description); - return result; - } /** - * Computes a stack trace for an exception. - * @param {Error} ex - * @param {(string|number)=} depth - */ - + * Wraps addEventListener to capture UI breadcrumbs + * @param evtName the event name (e.g. "click") + * @returns {Function} + * @private + */ + _breadcrumbEventHandler: function(evtName) { + var self = this; + return function(evt) { + // reset keypress timeout; e.g. triggering a 'click' after + // a 'keypress' will reset the keypress debounce so that a new + // set of keypresses can be recorded + self._keypressTimeout = null; - function computeStackTrace(ex, depth) { - var stack = null; - depth = depth == null ? 0 : +depth; + // It's possible this handler might trigger multiple times for the same + // event (e.g. event propagation through node ancestors). Ignore if we've + // already captured the event. + if (self._lastCapturedEvent === evt) return; - try { - stack = computeStackTraceFromStackProp(ex); + self._lastCapturedEvent = evt; - if (stack) { - return stack; - } - } catch (e) { - if (TraceKit.debug) { - throw e; + // try/catch both: + // - accessing evt.target (see getsentry/raven-js#838, #768) + // - `htmlTreeAsString` because it's complex, and just accessing the DOM incorrectly + // can throw an exception in some circumstances. + var target; + try { + target = htmlTreeAsString(evt.target); + } catch (e) { + target = ''; } - } - try { - stack = computeStackTraceByWalkingCallerChain(ex, depth + 1); + self.captureBreadcrumb({ + category: 'ui.' + evtName, // e.g. ui.click, ui.input + message: target + }); + }; + }, - if (stack) { - return stack; - } - } catch (e) { - if (TraceKit.debug) { - throw e; + /** + * Wraps addEventListener to capture keypress UI events + * @returns {Function} + * @private + */ + _keypressEventHandler: function() { + var self = this, + debounceDuration = 1000; // milliseconds + + // TODO: if somehow user switches keypress target before + // debounce timeout is triggered, we will only capture + // a single breadcrumb from the FIRST target (acceptable?) + return function(evt) { + var target; + try { + target = evt.target; + } catch (e) { + // just accessing event properties can throw an exception in some rare circumstances + // see: https://github.com/getsentry/raven-js/issues/838 + return; } - } + var tagName = target && target.tagName; - return { - name: ex.name, - message: ex.message, - url: getLocationHref() - }; - } + // only consider keypress events on actual input elements + // this will disregard keypresses targeting body (e.g. tabbing + // through elements, hotkeys, etc) + if ( + !tagName || + (tagName !== 'INPUT' && tagName !== 'TEXTAREA' && !target.isContentEditable) + ) + return; - computeStackTrace.augmentStackTraceWithInitialElement = augmentStackTraceWithInitialElement; - computeStackTrace.computeStackTraceFromStackProp = computeStackTraceFromStackProp; - return computeStackTrace; -}(); + // record first keypress in a series, but ignore subsequent + // keypresses until debounce clears + var timeout = self._keypressTimeout; + if (!timeout) { + self._breadcrumbEventHandler('input')(evt); + } + clearTimeout(timeout); + self._keypressTimeout = setTimeout(function() { + self._keypressTimeout = null; + }, debounceDuration); + }; + }, -var tracekit = TraceKit; + /** + * Captures a breadcrumb of type "navigation", normalizing input URLs + * @param to the originating URL + * @param from the target URL + * @private + */ + _captureUrlChange: function(from, to) { + var parsedLoc = parseUrl(this._location.href); + var parsedTo = parseUrl(to); + var parsedFrom = parseUrl(from); -var stringify_1 = createCommonjsModule(function (module, exports) { - /* - json-stringify-safe - Like JSON.stringify, but doesn't throw on circular references. - - Originally forked from https://github.com/isaacs/json-stringify-safe - version 5.0.1 on 3/8/2017 and modified to handle Errors serialization - and IE8 compatibility. Tests for this are in test/vendor. - - ISC license: https://github.com/isaacs/json-stringify-safe/blob/master/LICENSE - */ - exports = module.exports = stringify; - exports.getSerialize = serializer; - - function indexOf(haystack, needle) { - for (var i = 0; i < haystack.length; ++i) { - if (haystack[i] === needle) return i; - } - - return -1; - } + // because onpopstate only tells you the "new" (to) value of location.href, and + // not the previous (from) value, we need to track the value of the current URL + // state ourselves + this._lastHref = to; - function stringify(obj, replacer, spaces, cycleReplacer) { - return JSON.stringify(obj, serializer(replacer, cycleReplacer), spaces); - } // https://github.com/ftlabs/js-abbreviate/blob/fa709e5f139e7770a71827b1893f22418097fbda/index.js#L95-L106 + // Use only the path component of the URL if the URL matches the current + // document (almost all the time when using pushState) + if (parsedLoc.protocol === parsedTo.protocol && parsedLoc.host === parsedTo.host) + to = parsedTo.relative; + if (parsedLoc.protocol === parsedFrom.protocol && parsedLoc.host === parsedFrom.host) + from = parsedFrom.relative; + this.captureBreadcrumb({ + category: 'navigation', + data: { + to: to, + from: from + } + }); + }, - function stringifyError(value) { - var err = { - // These properties are implemented as magical getters and don't show up in for in - stack: value.stack, - message: value.message, - name: value.name + _patchFunctionToString: function() { + var self = this; + self._originalFunctionToString = Function.prototype.toString; + // eslint-disable-next-line no-extend-native + Function.prototype.toString = function() { + if (typeof this === 'function' && this.__raven__) { + return self._originalFunctionToString.apply(this.__orig__, arguments); + } + return self._originalFunctionToString.apply(this, arguments); }; + }, - for (var i in value) { - if (Object.prototype.hasOwnProperty.call(value, i)) { - err[i] = value[i]; - } + _unpatchFunctionToString: function() { + if (this._originalFunctionToString) { + // eslint-disable-next-line no-extend-native + Function.prototype.toString = this._originalFunctionToString; } + }, - return err; - } + /** + * Wrap timer functions and event targets to catch errors and provide + * better metadata. + */ + _instrumentTryCatch: function() { + var self = this; - function serializer(replacer, cycleReplacer) { - var stack = []; - var keys = []; + var wrappedBuiltIns = self._wrappedBuiltIns; - if (cycleReplacer == null) { - cycleReplacer = function cycleReplacer(key, value) { - if (stack[0] === value) { - return '[Circular ~]'; + function wrapTimeFn(orig) { + return function(fn, t) { + // preserve arity + // Make a copy of the arguments to prevent deoptimization + // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments + var args = new Array(arguments.length); + for (var i = 0; i < args.length; ++i) { + args[i] = arguments[i]; + } + var originalCallback = args[0]; + if (isFunction(originalCallback)) { + args[0] = self.wrap(originalCallback); } - return '[Circular ~.' + keys.slice(0, indexOf(stack, value)).join('.') + ']'; + // IE < 9 doesn't support .call/.apply on setInterval/setTimeout, but it + // also supports only two arguments and doesn't care what this is, so we + // can just call the original function directly. + if (orig.apply) { + return orig.apply(this, args); + } else { + return orig(args[0], args[1]); + } }; } - return function (key, value) { - if (stack.length > 0) { - var thisPos = indexOf(stack, this); - ~thisPos ? stack.splice(thisPos + 1) : stack.push(this); - ~thisPos ? keys.splice(thisPos, Infinity, key) : keys.push(key); - - if (~indexOf(stack, value)) { - value = cycleReplacer.call(this, key, value); - } - } else { - stack.push(value); - } + var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; - return replacer == null ? value instanceof Error ? stringifyError(value) : value : replacer.call(this, key, value); - }; - } -}); -var stringify_2 = stringify_1.getSerialize; + function wrapEventTarget(global) { + var proto = _window[global] && _window[global].prototype; + if (proto && proto.hasOwnProperty && proto.hasOwnProperty('addEventListener')) { + fill( + proto, + 'addEventListener', + function(orig) { + return function(evtName, fn, capture, secure) { + // preserve arity + try { + if (fn && fn.handleEvent) { + fn.handleEvent = self.wrap(fn.handleEvent); + } + } catch (err) { + // can sometimes get 'Permission denied to access property "handle Event' + } -function RavenConfigError(message) { - this.name = 'RavenConfigError'; - this.message = message; -} + // More breadcrumb DOM capture ... done here and not in `_instrumentBreadcrumbs` + // so that we don't have more than one wrapper function + var before, clickHandler, keypressHandler; + + if ( + autoBreadcrumbs && + autoBreadcrumbs.dom && + (global === 'EventTarget' || global === 'Node') + ) { + // NOTE: generating multiple handlers per addEventListener invocation, should + // revisit and verify we can just use one (almost certainly) + clickHandler = self._breadcrumbEventHandler('click'); + keypressHandler = self._keypressEventHandler(); + before = function(evt) { + // need to intercept every DOM event in `before` argument, in case that + // same wrapped method is re-used for different events (e.g. mousemove THEN click) + // see #724 + if (!evt) return; + + var eventType; + try { + eventType = evt.type; + } catch (e) { + // just accessing event properties can throw an exception in some rare circumstances + // see: https://github.com/getsentry/raven-js/issues/838 + return; + } + if (eventType === 'click') return clickHandler(evt); + else if (eventType === 'keypress') return keypressHandler(evt); + }; + } + return orig.call( + this, + evtName, + self.wrap(fn, undefined, before), + capture, + secure + ); + }; + }, + wrappedBuiltIns + ); + fill( + proto, + 'removeEventListener', + function(orig) { + return function(evt, fn, capture, secure) { + try { + fn = fn && (fn.__raven_wrapper__ ? fn.__raven_wrapper__ : fn); + } catch (e) { + // ignore, accessing __raven_wrapper__ will throw in some Selenium environments + } + return orig.call(this, evt, fn, capture, secure); + }; + }, + wrappedBuiltIns + ); + } + } -RavenConfigError.prototype = new Error(); -RavenConfigError.prototype.constructor = RavenConfigError; -var configError = RavenConfigError; + fill(_window, 'setTimeout', wrapTimeFn, wrappedBuiltIns); + fill(_window, 'setInterval', wrapTimeFn, wrappedBuiltIns); + if (_window.requestAnimationFrame) { + fill( + _window, + 'requestAnimationFrame', + function(orig) { + return function(cb) { + return orig(self.wrap(cb)); + }; + }, + wrappedBuiltIns + ); + } -var wrapMethod = function wrapMethod(console, level, callback) { - var originalConsoleLevel = console[level]; - var originalConsole = console; + // event targets borrowed from bugsnag-js: + // https://github.com/bugsnag/bugsnag-js/blob/master/src/bugsnag.js#L666 + var eventTargets = [ + 'EventTarget', + 'Window', + 'Node', + 'ApplicationCache', + 'AudioTrackList', + 'ChannelMergerNode', + 'CryptoOperation', + 'EventSource', + 'FileReader', + 'HTMLUnknownElement', + 'IDBDatabase', + 'IDBRequest', + 'IDBTransaction', + 'KeyOperation', + 'MediaController', + 'MessagePort', + 'ModalWindow', + 'Notification', + 'SVGElementInstance', + 'Screen', + 'TextTrack', + 'TextTrackCue', + 'TextTrackList', + 'WebSocket', + 'WebSocketWorker', + 'Worker', + 'XMLHttpRequest', + 'XMLHttpRequestEventTarget', + 'XMLHttpRequestUpload' + ]; + for (var i = 0; i < eventTargets.length; i++) { + wrapEventTarget(eventTargets[i]); + } + }, - if (!(level in console)) { - return; - } + /** + * Instrument browser built-ins w/ breadcrumb capturing + * - XMLHttpRequests + * - DOM interactions (click/typing) + * - window.location changes + * - console + * + * Can be disabled or individually configured via the `autoBreadcrumbs` config option + */ + _instrumentBreadcrumbs: function() { + var self = this; + var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; - var sentryLevel = level === 'warn' ? 'warning' : level; + var wrappedBuiltIns = self._wrappedBuiltIns; - console[level] = function () { - var args = [].slice.call(arguments); - var msg = utils.safeJoin(args, ' '); - var data = { - level: sentryLevel, - logger: 'console', - extra: { - arguments: args + function wrapProp(prop, xhr) { + if (prop in xhr && isFunction(xhr[prop])) { + fill(xhr, prop, function(orig) { + return self.wrap(orig); + }); // intentionally don't track filled methods on XHR instances } - }; - - if (level === 'assert') { - if (args[0] === false) { - // Default browsers message - msg = 'Assertion failed: ' + (utils.safeJoin(args.slice(1), ' ') || 'console.assert'); - data.extra.arguments = args.slice(1); - callback && callback(msg, data); - } - } else { - callback && callback(msg, data); - } // this fails for some browsers. :( + } + if (autoBreadcrumbs.xhr && 'XMLHttpRequest' in _window) { + var xhrproto = _window.XMLHttpRequest && _window.XMLHttpRequest.prototype; + fill( + xhrproto, + 'open', + function(origOpen) { + return function(method, url) { + // preserve arity - if (originalConsoleLevel) { - // IE9 doesn't allow calling apply on console functions directly - // See: https://stackoverflow.com/questions/5472938/does-ie9-support-console-log-and-is-it-a-real-function#answer-5473193 - Function.prototype.apply.call(originalConsoleLevel, originalConsole, args); - } - }; -}; + // if Sentry key appears in URL, don't capture + if (isString(url) && url.indexOf(self._globalKey) === -1) { + this.__raven_xhr = { + method: method, + url: url, + status_code: null + }; + } -var console$1 = { - wrapMethod: wrapMethod -}; + return origOpen.apply(this, arguments); + }; + }, + wrappedBuiltIns + ); + + fill( + xhrproto, + 'send', + function(origSend) { + return function() { + // preserve arity + var xhr = this; -/*global XDomainRequest:false */ + function onreadystatechangeHandler() { + if (xhr.__raven_xhr && xhr.readyState === 4) { + try { + // touching statusCode in some platforms throws + // an exception + xhr.__raven_xhr.status_code = xhr.status; + } catch (e) { + /* do nothing */ + } -var isError = utils.isError; -var isObject = utils.isObject; -var isErrorEvent = utils.isErrorEvent; -var isUndefined = utils.isUndefined; -var isFunction = utils.isFunction; -var isString = utils.isString; -var isArray = utils.isArray; -var isEmptyObject = utils.isEmptyObject; -var each = utils.each; -var objectMerge = utils.objectMerge; -var truncate = utils.truncate; -var objectFrozen = utils.objectFrozen; -var hasKey = utils.hasKey; -var joinRegExp = utils.joinRegExp; -var urlencode = utils.urlencode; -var uuid4 = utils.uuid4; -var htmlTreeAsString = utils.htmlTreeAsString; -var isSameException = utils.isSameException; -var isSameStacktrace = utils.isSameStacktrace; -var parseUrl = utils.parseUrl; -var fill = utils.fill; -var supportsFetch = utils.supportsFetch; -var wrapConsoleMethod = console$1.wrapMethod; -var dsnKeys = 'source protocol user pass host port path'.split(' '); -var dsnPattern = /^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/; + self.captureBreadcrumb({ + type: 'http', + category: 'xhr', + data: xhr.__raven_xhr + }); + } + } -function now() { - return +new Date(); -} // This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) + var props = ['onload', 'onerror', 'onprogress']; + for (var j = 0; j < props.length; j++) { + wrapProp(props[j], xhr); + } + if ('onreadystatechange' in xhr && isFunction(xhr.onreadystatechange)) { + fill( + xhr, + 'onreadystatechange', + function(orig) { + return self.wrap(orig, undefined, onreadystatechangeHandler); + } /* intentionally don't track this instrumentation */ + ); + } else { + // if onreadystatechange wasn't actually set by the page on this xhr, we + // are free to set our own and capture the breadcrumb + xhr.onreadystatechange = onreadystatechangeHandler; + } -var _window$1 = typeof window !== 'undefined' ? window : typeof commonjsGlobal !== 'undefined' ? commonjsGlobal : typeof self !== 'undefined' ? self : {}; + return origSend.apply(this, arguments); + }; + }, + wrappedBuiltIns + ); + } -var _document = _window$1.document; -var _navigator = _window$1.navigator; + if (autoBreadcrumbs.xhr && supportsFetch()) { + fill( + _window, + 'fetch', + function(origFetch) { + return function() { + // preserve arity + // Make a copy of the arguments to prevent deoptimization + // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments + var args = new Array(arguments.length); + for (var i = 0; i < args.length; ++i) { + args[i] = arguments[i]; + } -function keepOriginalCallback(original, callback) { - return isFunction(callback) ? function (data) { - return callback(data, original); - } : callback; -} // First, check for JSON support -// If there is no JSON, we no-op the core features of Raven -// since JSON is required to encode the payload + var fetchInput = args[0]; + var method = 'GET'; + var url; + if (typeof fetchInput === 'string') { + url = fetchInput; + } else if ('Request' in _window && fetchInput instanceof _window.Request) { + url = fetchInput.url; + if (fetchInput.method) { + method = fetchInput.method; + } + } else { + url = '' + fetchInput; + } -function Raven$1() { - this._hasJSON = !!(_typeof(JSON) === 'object' && JSON.stringify); // Raven can run in contexts where there's no document (react-native) + // if Sentry key appears in URL, don't capture, as it's our own request + if (url.indexOf(self._globalKey) !== -1) { + return origFetch.apply(this, args); + } - this._hasDocument = !isUndefined(_document); - this._hasNavigator = !isUndefined(_navigator); - this._lastCapturedException = null; - this._lastData = null; - this._lastEventId = null; - this._globalServer = null; - this._globalKey = null; - this._globalProject = null; - this._globalContext = {}; - this._globalOptions = { - // SENTRY_RELEASE can be injected by https://github.com/getsentry/sentry-webpack-plugin - release: _window$1.SENTRY_RELEASE && _window$1.SENTRY_RELEASE.id, - logger: 'javascript', - ignoreErrors: [], - ignoreUrls: [], - whitelistUrls: [], - includePaths: [], - headers: null, - collectWindowErrors: true, - maxMessageLength: 0, - // By default, truncates URL values to 250 chars - maxUrlLength: 250, - stackTraceLimit: 50, - autoBreadcrumbs: true, - instrument: true, - sampleRate: 1 - }; - this._fetchDefaults = { - method: 'POST', - keepalive: true, - referrerPolicy: 'origin' - }; - this._ignoreOnError = 0; - this._isRavenInstalled = false; - this._originalErrorStackTraceLimit = Error.stackTraceLimit; // capture references to window.console *and* all its methods first - // before the console plugin has a chance to monkey patch + if (args[1] && args[1].method) { + method = args[1].method; + } - this._originalConsole = _window$1.console || {}; - this._originalConsoleMethods = {}; - this._plugins = []; - this._startTime = now(); - this._wrappedBuiltIns = []; - this._breadcrumbs = []; - this._lastCapturedEvent = null; - this._keypressTimeout; - this._location = _window$1.location; - this._lastHref = this._location && this._location.href; + var fetchData = { + method: method, + url: url, + status_code: null + }; - this._resetBackoff(); // eslint-disable-next-line guard-for-in + return origFetch + .apply(this, args) + .then(function(response) { + fetchData.status_code = response.status; + + self.captureBreadcrumb({ + type: 'http', + category: 'fetch', + data: fetchData + }); + + return response; + }) + ['catch'](function(err) { + // if there is an error performing the request + self.captureBreadcrumb({ + type: 'http', + category: 'fetch', + data: fetchData, + level: 'error' + }); + + throw err; + }); + }; + }, + wrappedBuiltIns + ); + } + // Capture breadcrumbs from any click that is unhandled / bubbled up all the way + // to the document. Do this before we instrument addEventListener. + if (autoBreadcrumbs.dom && this._hasDocument) { + if (_document.addEventListener) { + _document.addEventListener('click', self._breadcrumbEventHandler('click'), false); + _document.addEventListener('keypress', self._keypressEventHandler(), false); + } else if (_document.attachEvent) { + // IE8 Compatibility + _document.attachEvent('onclick', self._breadcrumbEventHandler('click')); + _document.attachEvent('onkeypress', self._keypressEventHandler()); + } + } - for (var method in this._originalConsole) { - this._originalConsoleMethods[method] = this._originalConsole[method]; - } -} -/* - * The core Raven singleton - * - * @this {Raven} - */ + // record navigation (URL) changes + // NOTE: in Chrome App environment, touching history.pushState, *even inside + // a try/catch block*, will cause Chrome to output an error to console.error + // borrowed from: https://github.com/angular/angular.js/pull/13945/files + var chrome = _window.chrome; + var isChromePackagedApp = chrome && chrome.app && chrome.app.runtime; + var hasPushAndReplaceState = + !isChromePackagedApp && + _window.history && + history.pushState && + history.replaceState; + if (autoBreadcrumbs.location && hasPushAndReplaceState) { + // TODO: remove onpopstate handler on uninstall() + var oldOnPopState = _window.onpopstate; + _window.onpopstate = function() { + var currentHref = self._location.href; + self._captureUrlChange(self._lastHref, currentHref); + if (oldOnPopState) { + return oldOnPopState.apply(this, arguments); + } + }; -Raven$1.prototype = { - // Hardcode version string so that raven source can be loaded directly via - // webpack (using a build step causes webpack #1617). Grunt verifies that - // this value matches package.json during build. - // See: https://github.com/getsentry/raven-js/issues/465 - VERSION: '3.22.2', - debug: false, - TraceKit: tracekit, - // alias to TraceKit + var historyReplacementFunction = function(origHistFunction) { + // note history.pushState.length is 0; intentionally not declaring + // params to preserve 0 arity + return function(/* state, title, url */) { + var url = arguments.length > 2 ? arguments[2] : undefined; - /* - * Configure Raven with a DSN and extra options - * - * @param {string} dsn The public Sentry DSN - * @param {object} options Set of global options [optional] - * @return {Raven} - */ - config: function config(dsn, options) { - var self = this; + // url argument is optional + if (url) { + // coerce to string (this is what pushState does) + self._captureUrlChange(self._lastHref, url + ''); + } - if (self._globalServer) { - this._logDebug('error', 'Error: Raven has already been configured'); + return origHistFunction.apply(this, arguments); + }; + }; - return self; + fill(history, 'pushState', historyReplacementFunction, wrappedBuiltIns); + fill(history, 'replaceState', historyReplacementFunction, wrappedBuiltIns); } - if (!dsn) return self; - var globalOptions = self._globalOptions; // merge in options + if (autoBreadcrumbs.console && 'console' in _window && console.log) { + // console + var consoleMethodCallback = function(msg, data) { + self.captureBreadcrumb({ + message: msg, + level: data.level, + category: 'console' + }); + }; - if (options) { - each(options, function (key, value) { - // tags and extra are special and need to be put into context - if (key === 'tags' || key === 'extra' || key === 'user') { - self._globalContext[key] = value; - } else { - globalOptions[key] = value; - } + each(['debug', 'info', 'warn', 'error', 'log'], function(_, level) { + wrapConsoleMethod(console, level, consoleMethodCallback); }); } + }, - self.setDSN(dsn); // "Script error." is hard coded into browsers for errors that it can't read. - // this is the result of a script being pulled in from an external domain and CORS. - - globalOptions.ignoreErrors.push(/^Script error\.?$/); - globalOptions.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/); // join regexp rules into one big rule - - globalOptions.ignoreErrors = joinRegExp(globalOptions.ignoreErrors); - globalOptions.ignoreUrls = globalOptions.ignoreUrls.length ? joinRegExp(globalOptions.ignoreUrls) : false; - globalOptions.whitelistUrls = globalOptions.whitelistUrls.length ? joinRegExp(globalOptions.whitelistUrls) : false; - globalOptions.includePaths = joinRegExp(globalOptions.includePaths); - globalOptions.maxBreadcrumbs = Math.max(0, Math.min(globalOptions.maxBreadcrumbs || 100, 100)); // default and hard limit is 100 + _restoreBuiltIns: function() { + // restore any wrapped builtins + var builtin; + while (this._wrappedBuiltIns.length) { + builtin = this._wrappedBuiltIns.shift(); - var autoBreadcrumbDefaults = { - xhr: true, - console: true, - dom: true, - location: true, - sentry: true - }; - var autoBreadcrumbs = globalOptions.autoBreadcrumbs; + var obj = builtin[0], + name = builtin[1], + orig = builtin[2]; - if ({}.toString.call(autoBreadcrumbs) === '[object Object]') { - autoBreadcrumbs = objectMerge(autoBreadcrumbDefaults, autoBreadcrumbs); - } else if (autoBreadcrumbs !== false) { - autoBreadcrumbs = autoBreadcrumbDefaults; + obj[name] = orig; } + }, - globalOptions.autoBreadcrumbs = autoBreadcrumbs; - var instrumentDefaults = { - tryCatch: true - }; - var instrument = globalOptions.instrument; - - if ({}.toString.call(instrument) === '[object Object]') { - instrument = objectMerge(instrumentDefaults, instrument); - } else if (instrument !== false) { - instrument = instrumentDefaults; + _restoreConsole: function() { + // eslint-disable-next-line guard-for-in + for (var method in this._originalConsoleMethods) { + this._originalConsole[method] = this._originalConsoleMethods[method]; } - - globalOptions.instrument = instrument; - tracekit.collectWindowErrors = !!globalOptions.collectWindowErrors; // return for chaining - - return self; }, - /* - * Installs a global window.onerror error handler - * to capture and report uncaught exceptions. - * At this point, install() is required to be called due - * to the way TraceKit is set up. - * - * @return {Raven} - */ - install: function install() { + _drainPlugins: function() { var self = this; - if (self.isSetup() && !self._isRavenInstalled) { - tracekit.report.subscribe(function () { - self._handleOnErrorStackInfo.apply(self, arguments); - }); + // FIX ME TODO + each(this._plugins, function(_, plugin) { + var installer = plugin[0]; + var args = plugin[1]; + installer.apply(self, [self].concat(args)); + }); + }, - self._patchFunctionToString(); + _parseDSN: function(str) { + var m = dsnPattern.exec(str), + dsn = {}, + i = 7; - if (self._globalOptions.instrument && self._globalOptions.instrument.tryCatch) { - self._instrumentTryCatch(); - } + try { + while (i--) dsn[dsnKeys[i]] = m[i] || ''; + } catch (e) { + throw new RavenConfigError('Invalid DSN: ' + str); + } - if (self._globalOptions.autoBreadcrumbs) self._instrumentBreadcrumbs(); // Install all of the plugins + if (dsn.pass && !this._globalOptions.allowSecretKey) { + throw new RavenConfigError( + 'Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key' + ); + } - self._drainPlugins(); - - self._isRavenInstalled = true; - } - - Error.stackTraceLimit = self._globalOptions.stackTraceLimit; - return this; + return dsn; }, - /* - * Set the DSN (can be called multiple time unlike config) - * - * @param {string} dsn The public Sentry DSN - */ - setDSN: function setDSN(dsn) { - var self = this, - uri = self._parseDSN(dsn), - lastSlash = uri.path.lastIndexOf('/'), - path = uri.path.substr(1, lastSlash); - - self._dsn = dsn; - self._globalKey = uri.user; - self._globalSecret = uri.pass && uri.pass.substr(1); - self._globalProject = uri.path.substr(lastSlash + 1); - self._globalServer = self._getGlobalServer(uri); - self._globalEndpoint = self._globalServer + '/' + path + 'api/' + self._globalProject + '/store/'; // Reset backoff state since we may be pointing at a - // new project/server + _getGlobalServer: function(uri) { + // assemble the endpoint from the uri pieces + var globalServer = '//' + uri.host + (uri.port ? ':' + uri.port : ''); - this._resetBackoff(); + if (uri.protocol) { + globalServer = uri.protocol + ':' + globalServer; + } + return globalServer; }, - /* - * Wrap code within a context so Raven can capture errors - * reliably across domains that is executed immediately. - * - * @param {object} options A specific set of options for this context [optional] - * @param {function} func The callback to be immediately executed within the context - * @param {array} args An array of arguments to be called with the callback [optional] - */ - context: function context(options, func, args) { - if (isFunction(options)) { - args = func || []; - func = options; - options = undefined; + _handleOnErrorStackInfo: function() { + // if we are intentionally ignoring errors via onerror, bail out + if (!this._ignoreOnError) { + this._handleStackInfo.apply(this, arguments); } - - return this.wrap(options, func).apply(this, args); }, - /* - * Wrap code within a context and returns back a new function to be executed - * - * @param {object} options A specific set of options for this context [optional] - * @param {function} func The function to be wrapped in a new context - * @param {function} func A function to call before the try/catch wrapper [optional, private] - * @return {function} The newly wrapped functions with a context - */ - wrap: function wrap(options, func, _before) { - var self = this; // 1 argument has been passed, and it's not a function - // so just return it + _handleStackInfo: function(stackInfo, options) { + var frames = this._prepareFrames(stackInfo, options); - if (isUndefined(func) && !isFunction(options)) { - return options; - } // options is optional + this._triggerEvent('handle', { + stackInfo: stackInfo, + options: options + }); + this._processException( + stackInfo.name, + stackInfo.message, + stackInfo.url, + stackInfo.lineno, + frames, + options + ); + }, - if (isFunction(options)) { - func = options; - options = undefined; - } // At this point, we've passed along 2 arguments, and the second one - // is not a function either, so we'll just return the second argument. + _prepareFrames: function(stackInfo, options) { + var self = this; + var frames = []; + if (stackInfo.stack && stackInfo.stack.length) { + each(stackInfo.stack, function(i, stack) { + var frame = self._normalizeFrame(stack, stackInfo.url); + if (frame) { + frames.push(frame); + } + }); + // e.g. frames captured via captureMessage throw + if (options && options.trimHeadFrames) { + for (var j = 0; j < options.trimHeadFrames && j < frames.length; j++) { + frames[j].in_app = false; + } + } + } + frames = frames.slice(0, this._globalOptions.stackTraceLimit); + return frames; + }, - if (!isFunction(func)) { - return func; - } // We don't wanna wrap it twice! + _normalizeFrame: function(frame, stackInfoUrl) { + // normalize the frames data + var normalized = { + filename: frame.url, + lineno: frame.line, + colno: frame.column, + function: frame.func || '?' + }; + // Case when we don't have any information about the error + // E.g. throwing a string or raw object, instead of an `Error` in Firefox + // Generating synthetic error doesn't add any value here + // + // We should probably somehow let a user know that they should fix their code + if (!frame.url) { + normalized.filename = stackInfoUrl; // fallback to whole stacks url from onerror handler + } - try { - if (func.__raven__) { - return func; - } // If this has already been wrapped in the past, return that + normalized.in_app = !// determine if an exception came from outside of our app + // first we check the global includePaths list. + ( + (!!this._globalOptions.includePaths.test && + !this._globalOptions.includePaths.test(normalized.filename)) || + // Now we check for fun, if the function name is Raven or TraceKit + /(Raven|TraceKit)\./.test(normalized['function']) || + // finally, we do a last ditch effort and check for raven.min.js + /raven\.(min\.)?js$/.test(normalized.filename) + ); + return normalized; + }, - if (func.__raven_wrapper__) { - return func.__raven_wrapper__; - } - } catch (e) { - // Just accessing custom props in some Selenium environments - // can cause a "Permission denied" exception (see raven-js#495). - // Bail on wrapping and return the function as-is (defers to window.onerror). - return func; + _processException: function(type, message, fileurl, lineno, frames, options) { + var prefixedMessage = (type ? type + ': ' : '') + (message || ''); + if ( + !!this._globalOptions.ignoreErrors.test && + (this._globalOptions.ignoreErrors.test(message) || + this._globalOptions.ignoreErrors.test(prefixedMessage)) + ) { + return; } - function wrapped() { - var args = [], - i = arguments.length, - deep = !options || options && options.deep !== false; + var stacktrace; - if (_before && isFunction(_before)) { - _before.apply(this, arguments); - } // Recursively wrap all of a function's arguments that are - // functions themselves. + if (frames && frames.length) { + fileurl = frames[0].filename || fileurl; + // Sentry expects frames oldest to newest + // and JS sends them as newest to oldest + frames.reverse(); + stacktrace = {frames: frames}; + } else if (fileurl) { + stacktrace = { + frames: [ + { + filename: fileurl, + lineno: lineno, + in_app: true + } + ] + }; + } + if ( + !!this._globalOptions.ignoreUrls.test && + this._globalOptions.ignoreUrls.test(fileurl) + ) { + return; + } - while (i--) { - args[i] = deep ? self.wrap(options, arguments[i]) : arguments[i]; - } + if ( + !!this._globalOptions.whitelistUrls.test && + !this._globalOptions.whitelistUrls.test(fileurl) + ) { + return; + } - try { - // Attempt to invoke user-land function - // NOTE: If you are a Sentry user, and you are seeing this stack frame, it - // means Raven caught an error invoking your application code. This is - // expected behavior and NOT indicative of a bug with Raven.js. - return func.apply(this, args); - } catch (e) { - self._ignoreNextOnError(); + var data = objectMerge( + { + // sentry.interfaces.Exception + exception: { + values: [ + { + type: type, + value: message, + stacktrace: stacktrace + } + ] + }, + culprit: fileurl + }, + options + ); - self.captureException(e, options); - throw e; - } - } // copy over properties of the old function + // Fire away! + this._send(data); + }, + _trimPacket: function(data) { + // For now, we only want to truncate the two different messages + // but this could/should be expanded to just trim everything + var max = this._globalOptions.maxMessageLength; + if (data.message) { + data.message = truncate(data.message, max); + } + if (data.exception) { + var exception = data.exception.values[0]; + exception.value = truncate(exception.value, max); + } - for (var property in func) { - if (hasKey(func, property)) { - wrapped[property] = func[property]; + var request = data.request; + if (request) { + if (request.url) { + request.url = truncate(request.url, this._globalOptions.maxUrlLength); + } + if (request.Referer) { + request.Referer = truncate(request.Referer, this._globalOptions.maxUrlLength); } } - wrapped.prototype = func.prototype; - func.__raven_wrapper__ = wrapped; // Signal that this function has been wrapped/filled already - // for both debugging and to prevent it to being wrapped/filled twice + if (data.breadcrumbs && data.breadcrumbs.values) + this._trimBreadcrumbs(data.breadcrumbs); - wrapped.__raven__ = true; - wrapped.__orig__ = func; - return wrapped; + return data; }, - /* - * Uninstalls the global error handler. - * - * @return {Raven} - */ - uninstall: function uninstall() { - tracekit.report.uninstall(); + /** + * Truncate breadcrumb values (right now just URLs) + */ + _trimBreadcrumbs: function(breadcrumbs) { + // known breadcrumb properties with urls + // TODO: also consider arbitrary prop values that start with (https?)?:// + var urlProps = ['to', 'from', 'url'], + urlProp, + crumb, + data; - this._unpatchFunctionToString(); + for (var i = 0; i < breadcrumbs.values.length; ++i) { + crumb = breadcrumbs.values[i]; + if ( + !crumb.hasOwnProperty('data') || + !isObject(crumb.data) || + objectFrozen(crumb.data) + ) + continue; - this._restoreBuiltIns(); + data = objectMerge({}, crumb.data); + for (var j = 0; j < urlProps.length; ++j) { + urlProp = urlProps[j]; + if (data.hasOwnProperty(urlProp) && data[urlProp]) { + data[urlProp] = truncate(data[urlProp], this._globalOptions.maxUrlLength); + } + } + breadcrumbs.values[i].data = data; + } + }, - this._restoreConsole(); + _getHttpData: function() { + if (!this._hasNavigator && !this._hasDocument) return; + var httpData = {}; - Error.stackTraceLimit = this._originalErrorStackTraceLimit; - this._isRavenInstalled = false; - return this; - }, + if (this._hasNavigator && _navigator.userAgent) { + httpData.headers = { + 'User-Agent': navigator.userAgent + }; + } - /* - * Manually capture an exception and send it over to Sentry - * - * @param {error} ex An exception to be logged - * @param {object} options A specific set of options for this error [optional] - * @return {Raven} - */ - captureException: function captureException(ex, options) { - options = objectMerge({ - trimHeadFrames: 0 - }, options ? options : {}); // Cases for sending ex as a message, rather than an exception + // Check in `window` instead of `document`, as we may be in ServiceWorker environment + if (_window.location && _window.location.href) { + httpData.url = _window.location.href; + } - var isNotError = !isError(ex); - var isNotErrorEvent = !isErrorEvent(ex); - var isErrorEventWithoutError = isErrorEvent(ex) && !ex.error; + if (this._hasDocument && _document.referrer) { + if (!httpData.headers) httpData.headers = {}; + httpData.headers.Referer = _document.referrer; + } - if (isNotError && isNotErrorEvent || isErrorEventWithoutError) { - return this.captureMessage(ex, objectMerge(options, { - stacktrace: true, - // if we fall back to captureMessage, default to attempting a new trace - trimHeadFrames: options.trimHeadFrames + 1 - })); - } // Get actual Error from ErrorEvent + return httpData; + }, + _resetBackoff: function() { + this._backoffDuration = 0; + this._backoffStart = null; + }, - if (isErrorEvent(ex)) ex = ex.error; // Store the raw exception object for potential debugging and introspection + _shouldBackoff: function() { + return this._backoffDuration && now() - this._backoffStart < this._backoffDuration; + }, - this._lastCapturedException = ex; // TraceKit.report will re-raise any exception passed to it, - // which means you have to wrap it in try/catch. Instead, we - // can wrap it here and only re-raise if TraceKit.report - // raises an exception different from the one we asked to - // report on. + /** + * Returns true if the in-process data payload matches the signature + * of the previously-sent data + * + * NOTE: This has to be done at this level because TraceKit can generate + * data from window.onerror WITHOUT an exception object (IE8, IE9, + * other old browsers). This can take the form of an "exception" + * data object with a single frame (derived from the onerror args). + */ + _isRepeatData: function(current) { + var last = this._lastData; - try { - var stack = tracekit.computeStackTrace(ex); + if ( + !last || + current.message !== last.message || // defined for captureMessage + current.culprit !== last.culprit // defined for captureException/onerror + ) + return false; - this._handleStackInfo(stack, options); - } catch (ex1) { - if (ex !== ex1) { - throw ex1; - } + // Stacktrace interface (i.e. from captureMessage) + if (current.stacktrace || last.stacktrace) { + return isSameStacktrace(current.stacktrace, last.stacktrace); + } else if (current.exception || last.exception) { + // Exception interface (i.e. from captureException/onerror) + return isSameException(current.exception, last.exception); } - return this; + return true; }, - /* - * Manually send a message to Sentry - * - * @param {string} msg A plain message to be captured in Sentry - * @param {object} options A specific set of options for this message [optional] - * @return {Raven} - */ - captureMessage: function captureMessage(msg, options) { - // config() automagically converts ignoreErrors from a list to a RegExp so we need to test for an - // early call; we'll error on the side of logging anything called before configuration since it's - // probably something you should see: - if (!!this._globalOptions.ignoreErrors.test && this._globalOptions.ignoreErrors.test(msg)) { + _setBackoffState: function(request) { + // If we are already in a backoff state, don't change anything + if (this._shouldBackoff()) { return; } - options = options || {}; - var data = objectMerge({ - message: msg + '' // Make sure it's actually a string + var status = request.status; - }, options); - var ex; // Generate a "synthetic" stack trace from this point. - // NOTE: If you are a Sentry user, and you are seeing this stack frame, it is NOT indicative - // of a bug with Raven.js. Sentry generates synthetic traces either by configuration, - // or if it catches a thrown object without a "stack" property. + // 400 - project_id doesn't exist or some other fatal + // 401 - invalid/revoked dsn + // 429 - too many requests + if (!(status === 400 || status === 401 || status === 429)) return; + var retry; try { - throw new Error(msg); - } catch (ex1) { - ex = ex1; - } // null exception name so `Error` isn't prefixed to msg + // If Retry-After is not in Access-Control-Expose-Headers, most + // browsers will throw an exception trying to access it + if (supportsFetch()) { + retry = request.headers.get('Retry-After'); + } else { + retry = request.getResponseHeader('Retry-After'); + } + + // Retry-After is returned in seconds + retry = parseInt(retry, 10) * 1000; + } catch (e) { + /* eslint no-empty:0 */ + } + this._backoffDuration = retry + ? // If Sentry server returned a Retry-After value, use it + retry + : // Otherwise, double the last backoff duration (starts at 1 sec) + this._backoffDuration * 2 || 1000; - ex.name = null; - var stack = tracekit.computeStackTrace(ex); // stack[0] is `throw new Error(msg)` call itself, we are interested in the frame that was just before that, stack[1] + this._backoffStart = now(); + }, - var initialCall = isArray(stack.stack) && stack.stack[1]; - var fileurl = initialCall && initialCall.url || ''; + _send: function(data) { + var globalOptions = this._globalOptions; - if (!!this._globalOptions.ignoreUrls.test && this._globalOptions.ignoreUrls.test(fileurl)) { - return; - } + var baseData = { + project: this._globalProject, + logger: globalOptions.logger, + platform: 'javascript' + }, + httpData = this._getHttpData(); - if (!!this._globalOptions.whitelistUrls.test && !this._globalOptions.whitelistUrls.test(fileurl)) { - return; + if (httpData) { + baseData.request = httpData; } - if (this._globalOptions.stacktrace || options && options.stacktrace) { - options = objectMerge({ - // fingerprint on msg, not stack trace (legacy behavior, could be - // revisited) - fingerprint: msg, - // since we know this is a synthetic trace, the top N-most frames - // MUST be from Raven.js, so mark them as in_app later by setting - // trimHeadFrames - trimHeadFrames: (options.trimHeadFrames || 0) + 1 - }, options); + // HACK: delete `trimHeadFrames` to prevent from appearing in outbound payload + if (data.trimHeadFrames) delete data.trimHeadFrames; - var frames = this._prepareFrames(stack, options); + data = objectMerge(baseData, data); - data.stacktrace = { - // Sentry expects frames oldest to newest - frames: frames.reverse() + // Merge in the tags and extra separately since objectMerge doesn't handle a deep merge + data.tags = objectMerge(objectMerge({}, this._globalContext.tags), data.tags); + data.extra = objectMerge(objectMerge({}, this._globalContext.extra), data.extra); + + // Send along our own collected metadata with extra + data.extra['session:duration'] = now() - this._startTime; + + if (this._breadcrumbs && this._breadcrumbs.length > 0) { + // intentionally make shallow copy so that additions + // to breadcrumbs aren't accidentally sent in this request + data.breadcrumbs = { + values: [].slice.call(this._breadcrumbs, 0) }; - } // Fire away! + } + + if (this._globalContext.user) { + // sentry.interfaces.User + data.user = this._globalContext.user; + } + // Include the environment if it's defined in globalOptions + if (globalOptions.environment) data.environment = globalOptions.environment; - this._send(data); + // Include the release if it's defined in globalOptions + if (globalOptions.release) data.release = globalOptions.release; - return this; - }, - captureBreadcrumb: function captureBreadcrumb(obj) { - var crumb = objectMerge({ - timestamp: now() / 1000 - }, obj); + // Include server_name if it's defined in globalOptions + if (globalOptions.serverName) data.server_name = globalOptions.serverName; - if (isFunction(this._globalOptions.breadcrumbCallback)) { - var result = this._globalOptions.breadcrumbCallback(crumb); + data = this._sanitizeData(data); - if (isObject(result) && !isEmptyObject(result)) { - crumb = result; - } else if (result === false) { - return this; + // Cleanup empty properties before sending them to the server + Object.keys(data).forEach(function(key) { + if (data[key] == null || data[key] === '' || isEmptyObject(data[key])) { + delete data[key]; } - } - - this._breadcrumbs.push(crumb); + }); - if (this._breadcrumbs.length > this._globalOptions.maxBreadcrumbs) { - this._breadcrumbs.shift(); + if (isFunction(globalOptions.dataCallback)) { + data = globalOptions.dataCallback(data) || data; } - return this; - }, - addPlugin: function addPlugin(plugin - /*arg1, arg2, ... argN*/ - ) { - var pluginArgs = [].slice.call(arguments, 1); + // Why?????????? + if (!data || isEmptyObject(data)) { + return; + } - this._plugins.push([plugin, pluginArgs]); + // Check if the request should be filtered or not + if ( + isFunction(globalOptions.shouldSendCallback) && + !globalOptions.shouldSendCallback(data) + ) { + return; + } - if (this._isRavenInstalled) { - this._drainPlugins(); + // Backoff state: Sentry server previously responded w/ an error (e.g. 429 - too many requests), + // so drop requests until "cool-off" period has elapsed. + if (this._shouldBackoff()) { + this._logDebug('warn', 'Raven dropped error due to backoff: ', data); + return; } - return this; + if (typeof globalOptions.sampleRate === 'number') { + if (Math.random() < globalOptions.sampleRate) { + this._sendProcessedPayload(data); + } + } else { + this._sendProcessedPayload(data); + } }, - /* - * Set/clear a user to be sent along with the payload. - * - * @param {object} user An object representing user data [optional] - * @return {Raven} - */ - setUserContext: function setUserContext(user) { - // Intentionally do not merge here since that's an unexpected behavior. - this._globalContext.user = user; - return this; + _sanitizeData: function(data) { + return sanitize(data, this._globalOptions.sanitizeKeys); }, - /* - * Merge extra attributes to be sent along with the payload. - * - * @param {object} extra An object representing extra data [optional] - * @return {Raven} - */ - setExtraContext: function setExtraContext(extra) { - this._mergeContext('extra', extra); - - return this; + _getUuid: function() { + return uuid4(); }, - /* - * Merge tags to be sent along with the payload. - * - * @param {object} tags An object representing tags [optional] - * @return {Raven} - */ - setTagsContext: function setTagsContext(tags) { - this._mergeContext('tags', tags); - - return this; - }, + _sendProcessedPayload: function(data, callback) { + var self = this; + var globalOptions = this._globalOptions; - /* - * Clear all of the context. - * - * @return {Raven} - */ - clearContext: function clearContext() { - this._globalContext = {}; - return this; - }, + if (!this.isSetup()) return; - /* - * Get a copy of the current context. This cannot be mutated. - * - * @return {object} copy of context - */ - getContext: function getContext() { - // lol javascript - return JSON.parse(stringify_1(this._globalContext)); - }, + // Try and clean up the packet before sending by truncating long values + data = this._trimPacket(data); - /* - * Set environment of application - * - * @param {string} environment Typically something like 'production'. - * @return {Raven} - */ - setEnvironment: function setEnvironment(environment) { - this._globalOptions.environment = environment; - return this; - }, + // ideally duplicate error testing should occur *before* dataCallback/shouldSendCallback, + // but this would require copying an un-truncated copy of the data packet, which can be + // arbitrarily deep (extra_data) -- could be worthwhile? will revisit + if (!this._globalOptions.allowDuplicates && this._isRepeatData(data)) { + this._logDebug('warn', 'Raven dropped repeat event: ', data); + return; + } - /* - * Set release version of application - * - * @param {string} release Typically something like a git SHA to identify version - * @return {Raven} - */ - setRelease: function setRelease(release) { - this._globalOptions.release = release; - return this; - }, + // Send along an event_id if not explicitly passed. + // This event_id can be used to reference the error within Sentry itself. + // Set lastEventId after we know the error should actually be sent + this._lastEventId = data.event_id || (data.event_id = this._getUuid()); - /* - * Set the dataCallback option - * - * @param {function} callback The callback to run which allows the - * data blob to be mutated before sending - * @return {Raven} - */ - setDataCallback: function setDataCallback(callback) { - var original = this._globalOptions.dataCallback; - this._globalOptions.dataCallback = keepOriginalCallback(original, callback); - return this; - }, + // Store outbound payload after trim + this._lastData = data; - /* - * Set the breadcrumbCallback option - * - * @param {function} callback The callback to run which allows filtering - * or mutating breadcrumbs - * @return {Raven} - */ - setBreadcrumbCallback: function setBreadcrumbCallback(callback) { - var original = this._globalOptions.breadcrumbCallback; - this._globalOptions.breadcrumbCallback = keepOriginalCallback(original, callback); - return this; - }, + this._logDebug('debug', 'Raven about to send:', data); - /* - * Set the shouldSendCallback option - * - * @param {function} callback The callback to run which allows - * introspecting the blob before sending - * @return {Raven} - */ - setShouldSendCallback: function setShouldSendCallback(callback) { - var original = this._globalOptions.shouldSendCallback; - this._globalOptions.shouldSendCallback = keepOriginalCallback(original, callback); - return this; - }, + var auth = { + sentry_version: '7', + sentry_client: 'raven-js/' + this.VERSION, + sentry_key: this._globalKey + }; - /** - * Override the default HTTP transport mechanism that transmits data - * to the Sentry server. - * - * @param {function} transport Function invoked instead of the default - * `makeRequest` handler. - * - * @return {Raven} - */ - setTransport: function setTransport(transport) { - this._globalOptions.transport = transport; - return this; - }, + if (this._globalSecret) { + auth.sentry_secret = this._globalSecret; + } - /* - * Get the latest raw exception that was captured by Raven. - * - * @return {error} - */ - lastException: function lastException() { - return this._lastCapturedException; - }, + var exception = data.exception && data.exception.values[0]; - /* - * Get the last event id - * - * @return {string} - */ - lastEventId: function lastEventId() { - return this._lastEventId; - }, + // only capture 'sentry' breadcrumb is autoBreadcrumbs is truthy + if ( + this._globalOptions.autoBreadcrumbs && + this._globalOptions.autoBreadcrumbs.sentry + ) { + this.captureBreadcrumb({ + category: 'sentry', + message: exception + ? (exception.type ? exception.type + ': ' : '') + exception.value + : data.message, + event_id: data.event_id, + level: data.level || 'error' // presume error unless specified + }); + } - /* - * Determine if Raven is setup and ready to go. - * - * @return {boolean} - */ - isSetup: function isSetup() { - if (!this._hasJSON) return false; // needs JSON support + var url = this._globalEndpoint; + (globalOptions.transport || this._makeRequest).call(this, { + url: url, + auth: auth, + data: data, + options: globalOptions, + onSuccess: function success() { + self._resetBackoff(); - if (!this._globalServer) { - if (!this.ravenNotConfiguredError) { - this.ravenNotConfiguredError = true; + self._triggerEvent('success', { + data: data, + src: url + }); + callback && callback(); + }, + onError: function failure(error) { + self._logDebug('error', 'Raven transport failed to send: ', error); - this._logDebug('error', 'Error: Raven has not been configured.'); + if (error.request) { + self._setBackoffState(error.request); + } + + self._triggerEvent('failure', { + data: data, + src: url + }); + error = error || new Error('Raven send failed (no additional details provided)'); + callback && callback(error); } + }); + }, - return false; - } + _makeRequest: function(opts) { + // Auth is intentionally sent as part of query string (NOT as custom HTTP header) to avoid preflight CORS requests + var url = opts.url + '?' + urlencode(opts.auth); - return true; - }, - afterLoad: function afterLoad() { - // TODO: remove window dependence? - // Attempt to initialize Raven on load - var RavenConfig = _window$1.RavenConfig; + var evaluatedHeaders = null; + var evaluatedFetchParameters = {}; - if (RavenConfig) { - this.config(RavenConfig.dsn, RavenConfig.config).install(); + if (opts.options.headers) { + evaluatedHeaders = this._evaluateHash(opts.options.headers); } - }, - showReportDialog: function showReportDialog(options) { - if (!_document // doesn't work without a document (React native) - ) return; - options = options || {}; - var lastEventId = options.eventId || this.lastEventId(); - if (!lastEventId) { - throw new configError('Missing eventId'); + if (opts.options.fetchParameters) { + evaluatedFetchParameters = this._evaluateHash(opts.options.fetchParameters); } - var dsn = options.dsn || this._dsn; + if (supportsFetch()) { + evaluatedFetchParameters.body = stringify(opts.data); - if (!dsn) { - throw new configError('Missing DSN'); - } + var defaultFetchOptions = objectMerge({}, this._fetchDefaults); + var fetchOptions = objectMerge(defaultFetchOptions, evaluatedFetchParameters); - var encode = encodeURIComponent; - var qs = ''; - qs += '?eventId=' + encode(lastEventId); - qs += '&dsn=' + encode(dsn); - var user = options.user || this._globalContext.user; + if (evaluatedHeaders) { + fetchOptions.headers = evaluatedHeaders; + } - if (user) { - if (user.name) qs += '&name=' + encode(user.name); - if (user.email) qs += '&email=' + encode(user.email); + return _window + .fetch(url, fetchOptions) + .then(function(response) { + if (response.ok) { + opts.onSuccess && opts.onSuccess(); + } else { + var error = new Error('Sentry error code: ' + response.status); + // It's called request only to keep compatibility with XHR interface + // and not add more redundant checks in setBackoffState method + error.request = response; + opts.onError && opts.onError(error); + } + }) + ['catch'](function() { + opts.onError && + opts.onError(new Error('Sentry error code: network unavailable')); + }); } - var globalServer = this._getGlobalServer(this._parseDSN(dsn)); - - var script = _document.createElement('script'); - - script.async = true; - script.src = globalServer + '/api/embed/error-page/' + qs; + var request = _window.XMLHttpRequest && new _window.XMLHttpRequest(); + if (!request) return; - (_document.head || _document.body).appendChild(script); - }, + // if browser doesn't support CORS (e.g. IE7), we are out of luck + var hasCORS = 'withCredentials' in request || typeof XDomainRequest !== 'undefined'; - /**** Private functions ****/ - _ignoreNextOnError: function _ignoreNextOnError() { - var self = this; - this._ignoreOnError += 1; - setTimeout(function () { - // onerror should trigger before setTimeout - self._ignoreOnError -= 1; - }); - }, - _triggerEvent: function _triggerEvent(eventType, options) { - // NOTE: `event` is a native browser thing, so let's avoid conflicting wiht it - var evt, key; - if (!this._hasDocument) return; - options = options || {}; - eventType = 'raven' + eventType.substr(0, 1).toUpperCase() + eventType.substr(1); + if (!hasCORS) return; - if (_document.createEvent) { - evt = _document.createEvent('HTMLEvents'); - evt.initEvent(eventType, true, true); + if ('withCredentials' in request) { + request.onreadystatechange = function() { + if (request.readyState !== 4) { + return; + } else if (request.status === 200) { + opts.onSuccess && opts.onSuccess(); + } else if (opts.onError) { + var err = new Error('Sentry error code: ' + request.status); + err.request = request; + opts.onError(err); + } + }; } else { - evt = _document.createEventObject(); - evt.eventType = eventType; - } + request = new XDomainRequest(); + // xdomainrequest cannot go http -> https (or vice versa), + // so always use protocol relative + url = url.replace(/^https?:/, ''); - for (key in options) { - if (hasKey(options, key)) { - evt[key] = options[key]; + // onreadystatechange not supported by XDomainRequest + if (opts.onSuccess) { + request.onload = opts.onSuccess; } - } - - if (_document.createEvent) { - // IE9 if standards - _document.dispatchEvent(evt); - } else { - // IE8 regardless of Quirks or Standards - // IE9 if quirks - try { - _document.fireEvent('on' + evt.eventType.toLowerCase(), evt); - } catch (e) {// Do nothing + if (opts.onError) { + request.onerror = function() { + var err = new Error('Sentry error code: XDomainRequest'); + err.request = request; + opts.onError(err); + }; } } - }, - /** - * Wraps addEventListener to capture UI breadcrumbs - * @param evtName the event name (e.g. "click") - * @returns {Function} - * @private - */ - _breadcrumbEventHandler: function _breadcrumbEventHandler(evtName) { - var self = this; - return function (evt) { - // reset keypress timeout; e.g. triggering a 'click' after - // a 'keypress' will reset the keypress debounce so that a new - // set of keypresses can be recorded - self._keypressTimeout = null; // It's possible this handler might trigger multiple times for the same - // event (e.g. event propagation through node ancestors). Ignore if we've - // already captured the event. + request.open('POST', url); - if (self._lastCapturedEvent === evt) return; - self._lastCapturedEvent = evt; // try/catch both: - // - accessing evt.target (see getsentry/raven-js#838, #768) - // - `htmlTreeAsString` because it's complex, and just accessing the DOM incorrectly - // can throw an exception in some circumstances. + if (evaluatedHeaders) { + each(evaluatedHeaders, function(key, value) { + request.setRequestHeader(key, value); + }); + } - var target; + request.send(stringify(opts.data)); + }, - try { - target = htmlTreeAsString(evt.target); - } catch (e) { - target = ''; + _evaluateHash: function(hash) { + var evaluated = {}; + + for (var key in hash) { + if (hash.hasOwnProperty(key)) { + var value = hash[key]; + evaluated[key] = typeof value === 'function' ? value() : value; } + } - self.captureBreadcrumb({ - category: 'ui.' + evtName, - // e.g. ui.click, ui.input - message: target - }); - }; + return evaluated; }, - /** - * Wraps addEventListener to capture keypress UI events - * @returns {Function} - * @private - */ - _keypressEventHandler: function _keypressEventHandler() { - var self = this, - debounceDuration = 1000; // milliseconds - // TODO: if somehow user switches keypress target before - // debounce timeout is triggered, we will only capture - // a single breadcrumb from the FIRST target (acceptable?) + _logDebug: function(level) { + // We allow `Raven.debug` and `Raven.config(DSN, { debug: true })` to not make backward incompatible API change + if ( + this._originalConsoleMethods[level] && + (this.debug || this._globalOptions.debug) + ) { + // In IE<10 console methods do not have their own 'apply' method + Function.prototype.apply.call( + this._originalConsoleMethods[level], + this._originalConsole, + [].slice.call(arguments, 1) + ); + } + }, - return function (evt) { - var target; + _mergeContext: function(key, context) { + if (isUndefined(context)) { + delete this._globalContext[key]; + } else { + this._globalContext[key] = objectMerge(this._globalContext[key] || {}, context); + } + } +}; - try { - target = evt.target; - } catch (e) { - // just accessing event properties can throw an exception in some rare circumstances - // see: https://github.com/getsentry/raven-js/issues/838 - return; - } +// Deprecations +Raven.prototype.setUser = Raven.prototype.setUserContext; +Raven.prototype.setReleaseContext = Raven.prototype.setRelease; - var tagName = target && target.tagName; // only consider keypress events on actual input elements - // this will disregard keypresses targeting body (e.g. tabbing - // through elements, hotkeys, etc) +module.exports = Raven; - if (!tagName || tagName !== 'INPUT' && tagName !== 'TEXTAREA' && !target.isContentEditable) return; // record first keypress in a series, but ignore subsequent - // keypresses until debounce clears +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"10":10,"11":11,"12":12,"5":5,"6":6,"9":9}],8:[function(_dereq_,module,exports){ +(function (global){ +/** + * Enforces a single instance of the Raven client, and the + * main entry point for Raven. If you are a consumer of the + * Raven library, you SHOULD load this file (vs raven.js). + **/ - var timeout = self._keypressTimeout; +var RavenConstructor = _dereq_(7); - if (!timeout) { - self._breadcrumbEventHandler('input')(evt); - } +// This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) +var _window = + typeof window !== 'undefined' + ? window + : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; +var _Raven = _window.Raven; - clearTimeout(timeout); - self._keypressTimeout = setTimeout(function () { - self._keypressTimeout = null; - }, debounceDuration); - }; - }, +var Raven = new RavenConstructor(); - /** - * Captures a breadcrumb of type "navigation", normalizing input URLs - * @param to the originating URL - * @param from the target URL - * @private - */ - _captureUrlChange: function _captureUrlChange(from, to) { - var parsedLoc = parseUrl(this._location.href); - var parsedTo = parseUrl(to); - var parsedFrom = parseUrl(from); // because onpopstate only tells you the "new" (to) value of location.href, and - // not the previous (from) value, we need to track the value of the current URL - // state ourselves +/* + * Allow multiple versions of Raven to be installed. + * Strip Raven from the global context and returns the instance. + * + * @return {Raven} + */ +Raven.noConflict = function() { + _window.Raven = _Raven; + return Raven; +}; - this._lastHref = to; // Use only the path component of the URL if the URL matches the current - // document (almost all the time when using pushState) +Raven.afterLoad(); - if (parsedLoc.protocol === parsedTo.protocol && parsedLoc.host === parsedTo.host) to = parsedTo.relative; - if (parsedLoc.protocol === parsedFrom.protocol && parsedLoc.host === parsedFrom.host) from = parsedFrom.relative; - this.captureBreadcrumb({ - category: 'navigation', - data: { - to: to, - from: from - } - }); - }, - _patchFunctionToString: function _patchFunctionToString() { - var self = this; - self._originalFunctionToString = Function.prototype.toString; // eslint-disable-next-line no-extend-native +module.exports = Raven; - Function.prototype.toString = function () { - if (typeof this === 'function' && this.__raven__) { - return self._originalFunctionToString.apply(this.__orig__, arguments); - } +/** + * DISCLAIMER: + * + * Expose `Client` constructor for cases where user want to track multiple "sub-applications" in one larger app. + * It's not meant to be used by a wide audience, so pleaaase make sure that you know what you're doing before using it. + * Accidentally calling `install` multiple times, may result in an unexpected behavior that's very hard to debug. + * + * It's called `Client' to be in-line with Raven Node implementation. + * + * HOWTO: + * + * import Raven from 'raven-js'; + * + * const someAppReporter = new Raven.Client(); + * const someOtherAppReporter = new Raven.Client(); + * + * someAppReporter.config('__DSN__', { + * ...config goes here + * }); + * + * someOtherAppReporter.config('__OTHER_DSN__', { + * ...config goes here + * }); + * + * someAppReporter.captureMessage(...); + * someAppReporter.captureException(...); + * someAppReporter.captureBreadcrumb(...); + * + * someOtherAppReporter.captureMessage(...); + * someOtherAppReporter.captureException(...); + * someOtherAppReporter.captureBreadcrumb(...); + * + * It should "just work". + */ +module.exports.Client = RavenConstructor; - return self._originalFunctionToString.apply(this, arguments); - }; - }, - _unpatchFunctionToString: function _unpatchFunctionToString() { - if (this._originalFunctionToString) { - // eslint-disable-next-line no-extend-native - Function.prototype.toString = this._originalFunctionToString; - } - }, +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"7":7}],9:[function(_dereq_,module,exports){ +(function (global){ +var stringify = _dereq_(11); - /** - * Wrap timer functions and event targets to catch errors and provide - * better metadata. - */ - _instrumentTryCatch: function _instrumentTryCatch() { - var self = this; - var wrappedBuiltIns = self._wrappedBuiltIns; +var _window = + typeof window !== 'undefined' + ? window + : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; - function wrapTimeFn(orig) { - return function (fn, t) { - // preserve arity - // Make a copy of the arguments to prevent deoptimization - // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments - var args = new Array(arguments.length); +function isObject(what) { + return typeof what === 'object' && what !== null; +} - for (var i = 0; i < args.length; ++i) { - args[i] = arguments[i]; - } +// Yanked from https://git.io/vS8DV re-used under CC0 +// with some tiny modifications +function isError(value) { + switch ({}.toString.call(value)) { + case '[object Error]': + return true; + case '[object Exception]': + return true; + case '[object DOMException]': + return true; + default: + return value instanceof Error; + } +} - var originalCallback = args[0]; +function isErrorEvent(value) { + return supportsErrorEvent() && {}.toString.call(value) === '[object ErrorEvent]'; +} - if (isFunction(originalCallback)) { - args[0] = self.wrap(originalCallback); - } // IE < 9 doesn't support .call/.apply on setInterval/setTimeout, but it - // also supports only two arguments and doesn't care what this is, so we - // can just call the original function directly. +function isUndefined(what) { + return what === void 0; +} +function isFunction(what) { + return typeof what === 'function'; +} - if (orig.apply) { - return orig.apply(this, args); - } else { - return orig(args[0], args[1]); - } - }; - } +function isPlainObject(what) { + return Object.prototype.toString.call(what) === '[object Object]'; +} - var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; +function isString(what) { + return Object.prototype.toString.call(what) === '[object String]'; +} - function wrapEventTarget(global) { - var proto = _window$1[global] && _window$1[global].prototype; +function isArray(what) { + return Object.prototype.toString.call(what) === '[object Array]'; +} - if (proto && proto.hasOwnProperty && proto.hasOwnProperty('addEventListener')) { - fill(proto, 'addEventListener', function (orig) { - return function (evtName, fn, capture, secure) { - // preserve arity - try { - if (fn && fn.handleEvent) { - fn.handleEvent = self.wrap(fn.handleEvent); - } - } catch (err) {} // can sometimes get 'Permission denied to access property "handle Event' - // More breadcrumb DOM capture ... done here and not in `_instrumentBreadcrumbs` - // so that we don't have more than one wrapper function +function isEmptyObject(what) { + if (!isPlainObject(what)) return false; + for (var _ in what) { + if (what.hasOwnProperty(_)) { + return false; + } + } + return true; +} - var before, clickHandler, keypressHandler; +function supportsErrorEvent() { + try { + new ErrorEvent(''); // eslint-disable-line no-new + return true; + } catch (e) { + return false; + } +} - if (autoBreadcrumbs && autoBreadcrumbs.dom && (global === 'EventTarget' || global === 'Node')) { - // NOTE: generating multiple handlers per addEventListener invocation, should - // revisit and verify we can just use one (almost certainly) - clickHandler = self._breadcrumbEventHandler('click'); - keypressHandler = self._keypressEventHandler(); +function supportsFetch() { + if (!('fetch' in _window)) return false; - before = function before(evt) { - // need to intercept every DOM event in `before` argument, in case that - // same wrapped method is re-used for different events (e.g. mousemove THEN click) - // see #724 - if (!evt) return; - var eventType; + try { + new Headers(); // eslint-disable-line no-new + new Request(''); // eslint-disable-line no-new + new Response(); // eslint-disable-line no-new + return true; + } catch (e) { + return false; + } +} - try { - eventType = evt.type; - } catch (e) { - // just accessing event properties can throw an exception in some rare circumstances - // see: https://github.com/getsentry/raven-js/issues/838 - return; - } +// Despite all stars in the sky saying that Edge supports old draft syntax, aka 'never', 'always', 'origin' and 'default +// https://caniuse.com/#feat=referrer-policy +// It doesn't. And it throw exception instead of ignoring this parameter... +// REF: https://github.com/getsentry/raven-js/issues/1233 +function supportsReferrerPolicy() { + if (!supportsFetch()) return false; - if (eventType === 'click') return clickHandler(evt);else if (eventType === 'keypress') return keypressHandler(evt); - }; - } + try { + // eslint-disable-next-line no-new + new Request('pickleRick', { + referrerPolicy: 'origin' + }); + return true; + } catch (e) { + return false; + } +} - return orig.call(this, evtName, self.wrap(fn, undefined, before), capture, secure); - }; - }, wrappedBuiltIns); - fill(proto, 'removeEventListener', function (orig) { - return function (evt, fn, capture, secure) { - try { - fn = fn && (fn.__raven_wrapper__ ? fn.__raven_wrapper__ : fn); - } catch (e) {// ignore, accessing __raven_wrapper__ will throw in some Selenium environments - } +function supportsPromiseRejectionEvent() { + return typeof PromiseRejectionEvent === 'function'; +} - return orig.call(this, evt, fn, capture, secure); - }; - }, wrappedBuiltIns); - } +function wrappedCallback(callback) { + function dataCallback(data, original) { + var normalizedData = callback(data) || data; + if (original) { + return original(normalizedData) || normalizedData; } + return normalizedData; + } - fill(_window$1, 'setTimeout', wrapTimeFn, wrappedBuiltIns); - fill(_window$1, 'setInterval', wrapTimeFn, wrappedBuiltIns); - - if (_window$1.requestAnimationFrame) { - fill(_window$1, 'requestAnimationFrame', function (orig) { - return function (cb) { - return orig(self.wrap(cb)); - }; - }, wrappedBuiltIns); - } // event targets borrowed from bugsnag-js: - // https://github.com/bugsnag/bugsnag-js/blob/master/src/bugsnag.js#L666 - + return dataCallback; +} - var eventTargets = ['EventTarget', 'Window', 'Node', 'ApplicationCache', 'AudioTrackList', 'ChannelMergerNode', 'CryptoOperation', 'EventSource', 'FileReader', 'HTMLUnknownElement', 'IDBDatabase', 'IDBRequest', 'IDBTransaction', 'KeyOperation', 'MediaController', 'MessagePort', 'ModalWindow', 'Notification', 'SVGElementInstance', 'Screen', 'TextTrack', 'TextTrackCue', 'TextTrackList', 'WebSocket', 'WebSocketWorker', 'Worker', 'XMLHttpRequest', 'XMLHttpRequestEventTarget', 'XMLHttpRequestUpload']; +function each(obj, callback) { + var i, j; - for (var i = 0; i < eventTargets.length; i++) { - wrapEventTarget(eventTargets[i]); + if (isUndefined(obj.length)) { + for (i in obj) { + if (hasKey(obj, i)) { + callback.call(null, i, obj[i]); + } } - }, - - /** - * Instrument browser built-ins w/ breadcrumb capturing - * - XMLHttpRequests - * - DOM interactions (click/typing) - * - window.location changes - * - console - * - * Can be disabled or individually configured via the `autoBreadcrumbs` config option - */ - _instrumentBreadcrumbs: function _instrumentBreadcrumbs() { - var self = this; - var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; - var wrappedBuiltIns = self._wrappedBuiltIns; - - function wrapProp(prop, xhr) { - if (prop in xhr && isFunction(xhr[prop])) { - fill(xhr, prop, function (orig) { - return self.wrap(orig); - }); // intentionally don't track filled methods on XHR instances + } else { + j = obj.length; + if (j) { + for (i = 0; i < j; i++) { + callback.call(null, i, obj[i]); } } + } +} - if (autoBreadcrumbs.xhr && 'XMLHttpRequest' in _window$1) { - var xhrproto = XMLHttpRequest.prototype; - fill(xhrproto, 'open', function (origOpen) { - return function (method, url) { - // preserve arity - // if Sentry key appears in URL, don't capture - if (isString(url) && url.indexOf(self._globalKey) === -1) { - this.__raven_xhr = { - method: method, - url: url, - status_code: null - }; - } - - return origOpen.apply(this, arguments); - }; - }, wrappedBuiltIns); - fill(xhrproto, 'send', function (origSend) { - return function () { - // preserve arity - var xhr = this; - - function onreadystatechangeHandler() { - if (xhr.__raven_xhr && xhr.readyState === 4) { - try { - // touching statusCode in some platforms throws - // an exception - xhr.__raven_xhr.status_code = xhr.status; - } catch (e) { - /* do nothing */ - } +function objectMerge(obj1, obj2) { + if (!obj2) { + return obj1; + } + each(obj2, function(key, value) { + obj1[key] = value; + }); + return obj1; +} - self.captureBreadcrumb({ - type: 'http', - category: 'xhr', - data: xhr.__raven_xhr - }); - } - } +/** + * This function is only used for react-native. + * react-native freezes object that have already been sent over the + * js bridge. We need this function in order to check if the object is frozen. + * So it's ok that objectFrozen returns false if Object.isFrozen is not + * supported because it's not relevant for other "platforms". See related issue: + * https://github.com/getsentry/react-native-sentry/issues/57 + */ +function objectFrozen(obj) { + if (!Object.isFrozen) { + return false; + } + return Object.isFrozen(obj); +} - var props = ['onload', 'onerror', 'onprogress']; +function truncate(str, max) { + if (typeof max !== 'number') { + throw new Error('2nd argument to `truncate` function should be a number'); + } + if (typeof str !== 'string' || max === 0) { + return str; + } + return str.length <= max ? str : str.substr(0, max) + '\u2026'; +} - for (var j = 0; j < props.length; j++) { - wrapProp(props[j], xhr); - } +/** + * hasKey, a better form of hasOwnProperty + * Example: hasKey(MainHostObject, property) === true/false + * + * @param {Object} host object to check property + * @param {string} key to check + */ +function hasKey(object, key) { + return Object.prototype.hasOwnProperty.call(object, key); +} - if ('onreadystatechange' in xhr && isFunction(xhr.onreadystatechange)) { - fill(xhr, 'onreadystatechange', function (orig) { - return self.wrap(orig, undefined, onreadystatechangeHandler); - } - /* intentionally don't track this instrumentation */ - ); - } else { - // if onreadystatechange wasn't actually set by the page on this xhr, we - // are free to set our own and capture the breadcrumb - xhr.onreadystatechange = onreadystatechangeHandler; - } +function joinRegExp(patterns) { + // Combine an array of regular expressions and strings into one large regexp + // Be mad. + var sources = [], + i = 0, + len = patterns.length, + pattern; - return origSend.apply(this, arguments); - }; - }, wrappedBuiltIns); + for (; i < len; i++) { + pattern = patterns[i]; + if (isString(pattern)) { + // If it's a string, we need to escape it + // Taken from: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions + sources.push(pattern.replace(/([.*+?^=!:${}()|\[\]\/\\])/g, '\\$1')); + } else if (pattern && pattern.source) { + // If it's a regexp already, we want to extract the source + sources.push(pattern.source); } + // Intentionally skip other cases + } + return new RegExp(sources.join('|'), 'i'); +} - if (autoBreadcrumbs.xhr && supportsFetch()) { - fill(_window$1, 'fetch', function (origFetch) { - return function () { - // preserve arity - // Make a copy of the arguments to prevent deoptimization - // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments - var args = new Array(arguments.length); - - for (var i = 0; i < args.length; ++i) { - args[i] = arguments[i]; - } - - var fetchInput = args[0]; - var method = 'GET'; - var url; - - if (typeof fetchInput === 'string') { - url = fetchInput; - } else if ('Request' in _window$1 && fetchInput instanceof _window$1.Request) { - url = fetchInput.url; +function urlencode(o) { + var pairs = []; + each(o, function(key, value) { + pairs.push(encodeURIComponent(key) + '=' + encodeURIComponent(value)); + }); + return pairs.join('&'); +} - if (fetchInput.method) { - method = fetchInput.method; - } - } else { - url = '' + fetchInput; - } // if Sentry key appears in URL, don't capture, as it's our own request +// borrowed from https://tools.ietf.org/html/rfc3986#appendix-B +// intentionally using regex and not href parsing trick because React Native and other +// environments where DOM might not be available +function parseUrl(url) { + if (typeof url !== 'string') return {}; + var match = url.match(/^(([^:\/?#]+):)?(\/\/([^\/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?$/); + // coerce to undefined values to empty string so we don't get 'undefined' + var query = match[6] || ''; + var fragment = match[8] || ''; + return { + protocol: match[2], + host: match[4], + path: match[5], + relative: match[5] + query + fragment // everything minus origin + }; +} +function uuid4() { + var crypto = _window.crypto || _window.msCrypto; - if (url.indexOf(self._globalKey) !== -1) { - return origFetch.apply(this, args); - } + if (!isUndefined(crypto) && crypto.getRandomValues) { + // Use window.crypto API if available + // eslint-disable-next-line no-undef + var arr = new Uint16Array(8); + crypto.getRandomValues(arr); - if (args[1] && args[1].method) { - method = args[1].method; - } + // set 4 in byte 7 + arr[3] = (arr[3] & 0xfff) | 0x4000; + // set 2 most significant bits of byte 9 to '10' + arr[4] = (arr[4] & 0x3fff) | 0x8000; - var fetchData = { - method: method, - url: url, - status_code: null - }; - return origFetch.apply(this, args).then(function (response) { - fetchData.status_code = response.status; - self.captureBreadcrumb({ - type: 'http', - category: 'fetch', - data: fetchData - }); - return response; - }); - }; - }, wrappedBuiltIns); - } // Capture breadcrumbs from any click that is unhandled / bubbled up all the way - // to the document. Do this before we instrument addEventListener. + var pad = function(num) { + var v = num.toString(16); + while (v.length < 4) { + v = '0' + v; + } + return v; + }; + return ( + pad(arr[0]) + + pad(arr[1]) + + pad(arr[2]) + + pad(arr[3]) + + pad(arr[4]) + + pad(arr[5]) + + pad(arr[6]) + + pad(arr[7]) + ); + } else { + // http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/2117523#2117523 + return 'xxxxxxxxxxxx4xxxyxxxxxxxxxxxxxxx'.replace(/[xy]/g, function(c) { + var r = (Math.random() * 16) | 0, + v = c === 'x' ? r : (r & 0x3) | 0x8; + return v.toString(16); + }); + } +} - if (autoBreadcrumbs.dom && this._hasDocument) { - if (_document.addEventListener) { - _document.addEventListener('click', self._breadcrumbEventHandler('click'), false); +/** + * Given a child DOM element, returns a query-selector statement describing that + * and its ancestors + * e.g. [HTMLElement] => body > div > input#foo.btn[name=baz] + * @param elem + * @returns {string} + */ +function htmlTreeAsString(elem) { + /* eslint no-extra-parens:0*/ + var MAX_TRAVERSE_HEIGHT = 5, + MAX_OUTPUT_LEN = 80, + out = [], + height = 0, + len = 0, + separator = ' > ', + sepLength = separator.length, + nextStr; - _document.addEventListener('keypress', self._keypressEventHandler(), false); - } else { - // IE8 Compatibility - _document.attachEvent('onclick', self._breadcrumbEventHandler('click')); + while (elem && height++ < MAX_TRAVERSE_HEIGHT) { + nextStr = htmlElementAsString(elem); + // bail out if + // - nextStr is the 'html' element + // - the length of the string that would be created exceeds MAX_OUTPUT_LEN + // (ignore this limit if we are on the first iteration) + if ( + nextStr === 'html' || + (height > 1 && len + out.length * sepLength + nextStr.length >= MAX_OUTPUT_LEN) + ) { + break; + } - _document.attachEvent('onkeypress', self._keypressEventHandler()); - } - } // record navigation (URL) changes - // NOTE: in Chrome App environment, touching history.pushState, *even inside - // a try/catch block*, will cause Chrome to output an error to console.error - // borrowed from: https://github.com/angular/angular.js/pull/13945/files + out.push(nextStr); + len += nextStr.length; + elem = elem.parentNode; + } - var chrome = _window$1.chrome; - var isChromePackagedApp = chrome && chrome.app && chrome.app.runtime; - var hasPushAndReplaceState = !isChromePackagedApp && _window$1.history && history.pushState && history.replaceState; + return out.reverse().join(separator); +} - if (autoBreadcrumbs.location && hasPushAndReplaceState) { - // TODO: remove onpopstate handler on uninstall() - var oldOnPopState = _window$1.onpopstate; +/** + * Returns a simple, query-selector representation of a DOM element + * e.g. [HTMLElement] => input#foo.btn[name=baz] + * @param HTMLElement + * @returns {string} + */ +function htmlElementAsString(elem) { + var out = [], + className, + classes, + key, + attr, + i; - _window$1.onpopstate = function () { - var currentHref = self._location.href; + if (!elem || !elem.tagName) { + return ''; + } - self._captureUrlChange(self._lastHref, currentHref); + out.push(elem.tagName.toLowerCase()); + if (elem.id) { + out.push('#' + elem.id); + } - if (oldOnPopState) { - return oldOnPopState.apply(this, arguments); - } - }; + className = elem.className; + if (className && isString(className)) { + classes = className.split(/\s+/); + for (i = 0; i < classes.length; i++) { + out.push('.' + classes[i]); + } + } + var attrWhitelist = ['type', 'name', 'title', 'alt']; + for (i = 0; i < attrWhitelist.length; i++) { + key = attrWhitelist[i]; + attr = elem.getAttribute(key); + if (attr) { + out.push('[' + key + '="' + attr + '"]'); + } + } + return out.join(''); +} - var historyReplacementFunction = function historyReplacementFunction(origHistFunction) { - // note history.pushState.length is 0; intentionally not declaring - // params to preserve 0 arity - return function () - /* state, title, url */ - { - var url = arguments.length > 2 ? arguments[2] : undefined; // url argument is optional +/** + * Returns true if either a OR b is truthy, but not both + */ +function isOnlyOneTruthy(a, b) { + return !!(!!a ^ !!b); +} - if (url) { - // coerce to string (this is what pushState does) - self._captureUrlChange(self._lastHref, url + ''); - } +/** + * Returns true if both parameters are undefined + */ +function isBothUndefined(a, b) { + return isUndefined(a) && isUndefined(b); +} - return origHistFunction.apply(this, arguments); - }; - }; +/** + * Returns true if the two input exception interfaces have the same content + */ +function isSameException(ex1, ex2) { + if (isOnlyOneTruthy(ex1, ex2)) return false; - fill(history, 'pushState', historyReplacementFunction, wrappedBuiltIns); - fill(history, 'replaceState', historyReplacementFunction, wrappedBuiltIns); - } + ex1 = ex1.values[0]; + ex2 = ex2.values[0]; - if (autoBreadcrumbs.console && 'console' in _window$1 && console.log) { - // console - var consoleMethodCallback = function consoleMethodCallback(msg, data) { - self.captureBreadcrumb({ - message: msg, - level: data.level, - category: 'console' - }); - }; + if (ex1.type !== ex2.type || ex1.value !== ex2.value) return false; - each(['debug', 'info', 'warn', 'error', 'log'], function (_, level) { - wrapConsoleMethod(console, level, consoleMethodCallback); - }); - } - }, - _restoreBuiltIns: function _restoreBuiltIns() { - // restore any wrapped builtins - var builtin; + // in case both stacktraces are undefined, we can't decide so default to false + if (isBothUndefined(ex1.stacktrace, ex2.stacktrace)) return false; - while (this._wrappedBuiltIns.length) { - builtin = this._wrappedBuiltIns.shift(); - var obj = builtin[0], - name = builtin[1], - orig = builtin[2]; - obj[name] = orig; - } - }, - _restoreConsole: function _restoreConsole() { - // eslint-disable-next-line guard-for-in - for (var method in this._originalConsoleMethods) { - this._originalConsole[method] = this._originalConsoleMethods[method]; - } - }, - _drainPlugins: function _drainPlugins() { - var self = this; // FIX ME TODO + return isSameStacktrace(ex1.stacktrace, ex2.stacktrace); +} - each(this._plugins, function (_, plugin) { - var installer = plugin[0]; - var args = plugin[1]; - installer.apply(self, [self].concat(args)); - }); - }, - _parseDSN: function _parseDSN(str) { - var m = dsnPattern.exec(str), - dsn = {}, - i = 7; +/** + * Returns true if the two input stack trace interfaces have the same content + */ +function isSameStacktrace(stack1, stack2) { + if (isOnlyOneTruthy(stack1, stack2)) return false; + + var frames1 = stack1.frames; + var frames2 = stack2.frames; + + // Exit early if frame count differs + if (frames1.length !== frames2.length) return false; + + // Iterate through every frame; bail out if anything differs + var a, b; + for (var i = 0; i < frames1.length; i++) { + a = frames1[i]; + b = frames2[i]; + if ( + a.filename !== b.filename || + a.lineno !== b.lineno || + a.colno !== b.colno || + a['function'] !== b['function'] + ) + return false; + } + return true; +} + +/** + * Polyfill a method + * @param obj object e.g. `document` + * @param name method name present on object e.g. `addEventListener` + * @param replacement replacement function + * @param track {optional} record instrumentation to an array + */ +function fill(obj, name, replacement, track) { + if (obj == null) return; + var orig = obj[name]; + obj[name] = replacement(orig); + obj[name].__raven__ = true; + obj[name].__orig__ = orig; + if (track) { + track.push([obj, name, orig]); + } +} + +/** + * Join values in array + * @param input array of values to be joined together + * @param delimiter string to be placed in-between values + * @returns {string} + */ +function safeJoin(input, delimiter) { + if (!isArray(input)) return ''; + + var output = []; + for (var i = 0; i < input.length; i++) { try { - while (i--) { - dsn[dsnKeys[i]] = m[i] || ''; - } + output.push(String(input[i])); } catch (e) { - throw new configError('Invalid DSN: ' + str); + output.push('[value cannot be serialized]'); } + } - if (dsn.pass && !this._globalOptions.allowSecretKey) { - throw new configError('Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key'); - } + return output.join(delimiter); +} - return dsn; - }, - _getGlobalServer: function _getGlobalServer(uri) { - // assemble the endpoint from the uri pieces - var globalServer = '//' + uri.host + (uri.port ? ':' + uri.port : ''); +// Default Node.js REPL depth +var MAX_SERIALIZE_EXCEPTION_DEPTH = 3; +// 50kB, as 100kB is max payload size, so half sounds reasonable +var MAX_SERIALIZE_EXCEPTION_SIZE = 50 * 1024; +var MAX_SERIALIZE_KEYS_LENGTH = 40; - if (uri.protocol) { - globalServer = uri.protocol + ':' + globalServer; - } +function utf8Length(value) { + return ~-encodeURI(value).split(/%..|./).length; +} - return globalServer; - }, - _handleOnErrorStackInfo: function _handleOnErrorStackInfo() { - // if we are intentionally ignoring errors via onerror, bail out - if (!this._ignoreOnError) { - this._handleStackInfo.apply(this, arguments); - } - }, - _handleStackInfo: function _handleStackInfo(stackInfo, options) { - var frames = this._prepareFrames(stackInfo, options); +function jsonSize(value) { + return utf8Length(JSON.stringify(value)); +} - this._triggerEvent('handle', { - stackInfo: stackInfo, - options: options - }); +function serializeValue(value) { + if (typeof value === 'string') { + var maxLength = 40; + return truncate(value, maxLength); + } else if ( + typeof value === 'number' || + typeof value === 'boolean' || + typeof value === 'undefined' + ) { + return value; + } - this._processException(stackInfo.name, stackInfo.message, stackInfo.url, stackInfo.lineno, frames, options); - }, - _prepareFrames: function _prepareFrames(stackInfo, options) { - var self = this; - var frames = []; + var type = Object.prototype.toString.call(value); - if (stackInfo.stack && stackInfo.stack.length) { - each(stackInfo.stack, function (i, stack) { - var frame = self._normalizeFrame(stack, stackInfo.url); + // Node.js REPL notation + if (type === '[object Object]') return '[Object]'; + if (type === '[object Array]') return '[Array]'; + if (type === '[object Function]') + return value.name ? '[Function: ' + value.name + ']' : '[Function]'; - if (frame) { - frames.push(frame); - } - }); // e.g. frames captured via captureMessage throw + return value; +} - if (options && options.trimHeadFrames) { - for (var j = 0; j < options.trimHeadFrames && j < frames.length; j++) { - frames[j].in_app = false; - } - } - } +function serializeObject(value, depth) { + if (depth === 0) return serializeValue(value); + + if (isPlainObject(value)) { + return Object.keys(value).reduce(function(acc, key) { + acc[key] = serializeObject(value[key], depth - 1); + return acc; + }, {}); + } else if (Array.isArray(value)) { + return value.map(function(val) { + return serializeObject(val, depth - 1); + }); + } - frames = frames.slice(0, this._globalOptions.stackTraceLimit); - return frames; - }, - _normalizeFrame: function _normalizeFrame(frame, stackInfoUrl) { - // normalize the frames data - var normalized = { - filename: frame.url, - lineno: frame.line, - colno: frame.column, - function: frame.func || '?' - }; // Case when we don't have any information about the error - // E.g. throwing a string or raw object, instead of an `Error` in Firefox - // Generating synthetic error doesn't add any value here - // - // We should probably somehow let a user know that they should fix their code + return serializeValue(value); +} - if (!frame.url) { - normalized.filename = stackInfoUrl; // fallback to whole stacks url from onerror handler - } +function serializeException(ex, depth, maxSize) { + if (!isPlainObject(ex)) return ex; - normalized.in_app = !( // determine if an exception came from outside of our app - // first we check the global includePaths list. - !!this._globalOptions.includePaths.test && !this._globalOptions.includePaths.test(normalized.filename) || // Now we check for fun, if the function name is Raven or TraceKit - /(Raven|TraceKit)\./.test(normalized['function']) || // finally, we do a last ditch effort and check for raven.min.js - /raven\.(min\.)?js$/.test(normalized.filename)); - return normalized; - }, - _processException: function _processException(type, message, fileurl, lineno, frames, options) { - var prefixedMessage = (type ? type + ': ' : '') + (message || ''); + depth = typeof depth !== 'number' ? MAX_SERIALIZE_EXCEPTION_DEPTH : depth; + maxSize = typeof depth !== 'number' ? MAX_SERIALIZE_EXCEPTION_SIZE : maxSize; - if (!!this._globalOptions.ignoreErrors.test && (this._globalOptions.ignoreErrors.test(message) || this._globalOptions.ignoreErrors.test(prefixedMessage))) { - return; - } + var serialized = serializeObject(ex, depth); - var stacktrace; + if (jsonSize(stringify(serialized)) > maxSize) { + return serializeException(ex, depth - 1); + } - if (frames && frames.length) { - fileurl = frames[0].filename || fileurl; // Sentry expects frames oldest to newest - // and JS sends them as newest to oldest + return serialized; +} - frames.reverse(); - stacktrace = { - frames: frames - }; - } else if (fileurl) { - stacktrace = { - frames: [{ - filename: fileurl, - lineno: lineno, - in_app: true - }] - }; - } +function serializeKeysForMessage(keys, maxLength) { + if (typeof keys === 'number' || typeof keys === 'string') return keys.toString(); + if (!Array.isArray(keys)) return ''; - if (!!this._globalOptions.ignoreUrls.test && this._globalOptions.ignoreUrls.test(fileurl)) { - return; - } + keys = keys.filter(function(key) { + return typeof key === 'string'; + }); + if (keys.length === 0) return '[object has no keys]'; - if (!!this._globalOptions.whitelistUrls.test && !this._globalOptions.whitelistUrls.test(fileurl)) { - return; - } + maxLength = typeof maxLength !== 'number' ? MAX_SERIALIZE_KEYS_LENGTH : maxLength; + if (keys[0].length >= maxLength) return keys[0]; - var data = objectMerge({ - // sentry.interfaces.Exception - exception: { - values: [{ - type: type, - value: message, - stacktrace: stacktrace - }] - }, - culprit: fileurl - }, options); // Fire away! + for (var usedKeys = keys.length; usedKeys > 0; usedKeys--) { + var serialized = keys.slice(0, usedKeys).join(', '); + if (serialized.length > maxLength) continue; + if (usedKeys === keys.length) return serialized; + return serialized + '\u2026'; + } - this._send(data); - }, - _trimPacket: function _trimPacket(data) { - // For now, we only want to truncate the two different messages - // but this could/should be expanded to just trim everything - var max = this._globalOptions.maxMessageLength; + return ''; +} - if (data.message) { - data.message = truncate(data.message, max); +function sanitize(input, sanitizeKeys) { + if (!isArray(sanitizeKeys) || (isArray(sanitizeKeys) && sanitizeKeys.length === 0)) + return input; + + var sanitizeRegExp = joinRegExp(sanitizeKeys); + var sanitizeMask = '********'; + var safeInput; + + try { + safeInput = JSON.parse(stringify(input)); + } catch (o_O) { + return input; + } + + function sanitizeWorker(workerInput) { + if (isArray(workerInput)) { + return workerInput.map(function(val) { + return sanitizeWorker(val); + }); } - if (data.exception) { - var exception = data.exception.values[0]; - exception.value = truncate(exception.value, max); + if (isPlainObject(workerInput)) { + return Object.keys(workerInput).reduce(function(acc, k) { + if (sanitizeRegExp.test(k)) { + acc[k] = sanitizeMask; + } else { + acc[k] = sanitizeWorker(workerInput[k]); + } + return acc; + }, {}); } - var request = data.request; + return workerInput; + } - if (request) { - if (request.url) { - request.url = truncate(request.url, this._globalOptions.maxUrlLength); - } + return sanitizeWorker(safeInput); +} - if (request.Referer) { - request.Referer = truncate(request.Referer, this._globalOptions.maxUrlLength); - } - } +module.exports = { + isObject: isObject, + isError: isError, + isErrorEvent: isErrorEvent, + isUndefined: isUndefined, + isFunction: isFunction, + isPlainObject: isPlainObject, + isString: isString, + isArray: isArray, + isEmptyObject: isEmptyObject, + supportsErrorEvent: supportsErrorEvent, + supportsFetch: supportsFetch, + supportsReferrerPolicy: supportsReferrerPolicy, + supportsPromiseRejectionEvent: supportsPromiseRejectionEvent, + wrappedCallback: wrappedCallback, + each: each, + objectMerge: objectMerge, + truncate: truncate, + objectFrozen: objectFrozen, + hasKey: hasKey, + joinRegExp: joinRegExp, + urlencode: urlencode, + uuid4: uuid4, + htmlTreeAsString: htmlTreeAsString, + htmlElementAsString: htmlElementAsString, + isSameException: isSameException, + isSameStacktrace: isSameStacktrace, + parseUrl: parseUrl, + fill: fill, + safeJoin: safeJoin, + serializeException: serializeException, + serializeKeysForMessage: serializeKeysForMessage, + sanitize: sanitize +}; - if (data.breadcrumbs && data.breadcrumbs.values) this._trimBreadcrumbs(data.breadcrumbs); - return data; - }, +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"11":11}],10:[function(_dereq_,module,exports){ +(function (global){ +var utils = _dereq_(9); - /** - * Truncate breadcrumb values (right now just URLs) - */ - _trimBreadcrumbs: function _trimBreadcrumbs(breadcrumbs) { - // known breadcrumb properties with urls - // TODO: also consider arbitrary prop values that start with (https?)?:// - var urlProps = ['to', 'from', 'url'], - urlProp, - crumb, - data; +/* + TraceKit - Cross brower stack traces - for (var i = 0; i < breadcrumbs.values.length; ++i) { - crumb = breadcrumbs.values[i]; - if (!crumb.hasOwnProperty('data') || !isObject(crumb.data) || objectFrozen(crumb.data)) continue; - data = objectMerge({}, crumb.data); + This was originally forked from github.com/occ/TraceKit, but has since been + largely re-written and is now maintained as part of raven-js. Tests for + this are in test/vendor. - for (var j = 0; j < urlProps.length; ++j) { - urlProp = urlProps[j]; + MIT license +*/ - if (data.hasOwnProperty(urlProp) && data[urlProp]) { - data[urlProp] = truncate(data[urlProp], this._globalOptions.maxUrlLength); - } - } +var TraceKit = { + collectWindowErrors: true, + debug: false +}; - breadcrumbs.values[i].data = data; - } - }, - _getHttpData: function _getHttpData() { - if (!this._hasNavigator && !this._hasDocument) return; - var httpData = {}; +// This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) +var _window = + typeof window !== 'undefined' + ? window + : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; - if (this._hasNavigator && _navigator.userAgent) { - httpData.headers = { - 'User-Agent': navigator.userAgent - }; - } // Check in `window` instead of `document`, as we may be in ServiceWorker environment +// global reference to slice +var _slice = [].slice; +var UNKNOWN_FUNCTION = '?'; +// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error#Error_types +var ERROR_TYPES_RE = /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/; - if (_window$1.location && _window$1.location.href) { - httpData.url = _window$1.location.href; - } +function getLocationHref() { + if (typeof document === 'undefined' || document.location == null) return ''; - if (this._hasDocument && _document.referrer) { - if (!httpData.headers) httpData.headers = {}; - httpData.headers.Referer = _document.referrer; - } + return document.location.href; +} - return httpData; - }, - _resetBackoff: function _resetBackoff() { - this._backoffDuration = 0; - this._backoffStart = null; - }, - _shouldBackoff: function _shouldBackoff() { - return this._backoffDuration && now() - this._backoffStart < this._backoffDuration; - }, +/** + * TraceKit.report: cross-browser processing of unhandled exceptions + * + * Syntax: + * TraceKit.report.subscribe(function(stackInfo) { ... }) + * TraceKit.report.unsubscribe(function(stackInfo) { ... }) + * TraceKit.report(exception) + * try { ...code... } catch(ex) { TraceKit.report(ex); } + * + * Supports: + * - Firefox: full stack trace with line numbers, plus column number + * on top frame; column number is not guaranteed + * - Opera: full stack trace with line and column numbers + * - Chrome: full stack trace with line and column numbers + * - Safari: line and column number for the top frame only; some frames + * may be missing, and column number is not guaranteed + * - IE: line and column number for the top frame only; some frames + * may be missing, and column number is not guaranteed + * + * In theory, TraceKit should work on all of the following versions: + * - IE5.5+ (only 8.0 tested) + * - Firefox 0.9+ (only 3.5+ tested) + * - Opera 7+ (only 10.50 tested; versions 9 and earlier may require + * Exceptions Have Stacktrace to be enabled in opera:config) + * - Safari 3+ (only 4+ tested) + * - Chrome 1+ (only 5+ tested) + * - Konqueror 3.5+ (untested) + * + * Requires TraceKit.computeStackTrace. + * + * Tries to catch all unhandled exceptions and report them to the + * subscribed handlers. Please note that TraceKit.report will rethrow the + * exception. This is REQUIRED in order to get a useful stack trace in IE. + * If the exception does not reach the top of the browser, you will only + * get a stack trace from the point where TraceKit.report was called. + * + * Handlers receive a stackInfo object as described in the + * TraceKit.computeStackTrace docs. + */ +TraceKit.report = (function reportModuleWrapper() { + var handlers = [], + lastArgs = null, + lastException = null, + lastExceptionStack = null; /** - * Returns true if the in-process data payload matches the signature - * of the previously-sent data - * - * NOTE: This has to be done at this level because TraceKit can generate - * data from window.onerror WITHOUT an exception object (IE8, IE9, - * other old browsers). This can take the form of an "exception" - * data object with a single frame (derived from the onerror args). + * Add a crash handler. + * @param {Function} handler */ - _isRepeatData: function _isRepeatData(current) { - var last = this._lastData; - if (!last || current.message !== last.message || // defined for captureMessage - current.culprit !== last.culprit // defined for captureException/onerror - ) return false; // Stacktrace interface (i.e. from captureMessage) + function subscribe(handler) { + installGlobalHandler(); + handlers.push(handler); + } - if (current.stacktrace || last.stacktrace) { - return isSameStacktrace(current.stacktrace, last.stacktrace); - } else if (current.exception || last.exception) { - // Exception interface (i.e. from captureException/onerror) - return isSameException(current.exception, last.exception); + /** + * Remove a crash handler. + * @param {Function} handler + */ + function unsubscribe(handler) { + for (var i = handlers.length - 1; i >= 0; --i) { + if (handlers[i] === handler) { + handlers.splice(i, 1); + } } + } - return true; - }, - _setBackoffState: function _setBackoffState(request) { - // If we are already in a backoff state, don't change anything - if (this._shouldBackoff()) { + /** + * Remove all crash handlers. + */ + function unsubscribeAll() { + uninstallGlobalHandler(); + handlers = []; + } + + /** + * Dispatch stack information to all handlers. + * @param {Object.} stack + */ + function notifyHandlers(stack, isWindowError) { + var exception = null; + if (isWindowError && !TraceKit.collectWindowErrors) { return; } + for (var i in handlers) { + if (handlers.hasOwnProperty(i)) { + try { + handlers[i].apply(null, [stack].concat(_slice.call(arguments, 2))); + } catch (inner) { + exception = inner; + } + } + } - var status = request.status; // 400 - project_id doesn't exist or some other fatal - // 401 - invalid/revoked dsn - // 429 - too many requests - - if (!(status === 400 || status === 401 || status === 429)) return; - var retry; + if (exception) { + throw exception; + } + } - try { - // If Retry-After is not in Access-Control-Expose-Headers, most - // browsers will throw an exception trying to access it - if (supportsFetch()) { - retry = request.headers.get('Retry-After'); - } else { - retry = request.getResponseHeader('Retry-After'); - } // Retry-After is returned in seconds + var _oldOnerrorHandler, _onErrorHandlerInstalled; + /** + * Ensures all global unhandled exceptions are recorded. + * Supported by Gecko and IE. + * @param {string} msg Error message. + * @param {string} url URL of script that generated the exception. + * @param {(number|string)} lineNo The line number at which the error + * occurred. + * @param {?(number|string)} colNo The column number at which the error + * occurred. + * @param {?Error} ex The actual Error object. + */ + function traceKitWindowOnError(msg, url, lineNo, colNo, ex) { + var stack = null; + // If 'ex' is ErrorEvent, get real Error from inside + var exception = utils.isErrorEvent(ex) ? ex.error : ex; + // If 'msg' is ErrorEvent, get real message from inside + var message = utils.isErrorEvent(msg) ? msg.message : msg; - retry = parseInt(retry, 10) * 1000; - } catch (e) { - /* eslint no-empty:0 */ - } + if (lastExceptionStack) { + TraceKit.computeStackTrace.augmentStackTraceWithInitialElement( + lastExceptionStack, + url, + lineNo, + message + ); + processLastException(); + } else if (exception && utils.isError(exception)) { + // non-string `exception` arg; attempt to extract stack trace - this._backoffDuration = retry ? // If Sentry server returned a Retry-After value, use it - retry : // Otherwise, double the last backoff duration (starts at 1 sec) - this._backoffDuration * 2 || 1000; - this._backoffStart = now(); - }, - _send: function _send(data) { - var globalOptions = this._globalOptions; + // New chrome and blink send along a real error object + // Let's just report that like a normal error. + // See: https://mikewest.org/2013/08/debugging-runtime-errors-with-window-onerror + stack = TraceKit.computeStackTrace(exception); + notifyHandlers(stack, true); + } else { + var location = { + url: url, + line: lineNo, + column: colNo + }; - var baseData = { - project: this._globalProject, - logger: globalOptions.logger, - platform: 'javascript' - }, - httpData = this._getHttpData(); + var name = undefined; + var groups; - if (httpData) { - baseData.request = httpData; - } // HACK: delete `trimHeadFrames` to prevent from appearing in outbound payload - - - if (data.trimHeadFrames) delete data.trimHeadFrames; - data = objectMerge(baseData, data); // Merge in the tags and extra separately since objectMerge doesn't handle a deep merge - - data.tags = objectMerge(objectMerge({}, this._globalContext.tags), data.tags); - data.extra = objectMerge(objectMerge({}, this._globalContext.extra), data.extra); // Send along our own collected metadata with extra + if ({}.toString.call(message) === '[object String]') { + var groups = message.match(ERROR_TYPES_RE); + if (groups) { + name = groups[1]; + message = groups[2]; + } + } - data.extra['session:duration'] = now() - this._startTime; + location.func = UNKNOWN_FUNCTION; - if (this._breadcrumbs && this._breadcrumbs.length > 0) { - // intentionally make shallow copy so that additions - // to breadcrumbs aren't accidentally sent in this request - data.breadcrumbs = { - values: [].slice.call(this._breadcrumbs, 0) + stack = { + name: name, + message: message, + url: getLocationHref(), + stack: [location] }; + notifyHandlers(stack, true); } - if (this._globalContext.user) { - // sentry.interfaces.User - data.user = this._globalContext.user; - } // Include the environment if it's defined in globalOptions - - - if (globalOptions.environment) data.environment = globalOptions.environment; // Include the release if it's defined in globalOptions - - if (globalOptions.release) data.release = globalOptions.release; // Include server_name if it's defined in globalOptions - - if (globalOptions.serverName) data.server_name = globalOptions.serverName; // Cleanup empty properties before sending them to the server - - Object.keys(data).forEach(function (key) { - if (data[key] == null || data[key] === '' || isEmptyObject(data[key])) { - delete data[key]; - } - }); - - if (isFunction(globalOptions.dataCallback)) { - data = globalOptions.dataCallback(data) || data; - } // Why?????????? - - - if (!data || isEmptyObject(data)) { - return; - } // Check if the request should be filtered or not + if (_oldOnerrorHandler) { + return _oldOnerrorHandler.apply(this, arguments); + } + return false; + } - if (isFunction(globalOptions.shouldSendCallback) && !globalOptions.shouldSendCallback(data)) { + function installGlobalHandler() { + if (_onErrorHandlerInstalled) { return; - } // Backoff state: Sentry server previously responded w/ an error (e.g. 429 - too many requests), - // so drop requests until "cool-off" period has elapsed. - - - if (this._shouldBackoff()) { - this._logDebug('warn', 'Raven dropped error due to backoff: ', data); + } + _oldOnerrorHandler = _window.onerror; + _window.onerror = traceKitWindowOnError; + _onErrorHandlerInstalled = true; + } + function uninstallGlobalHandler() { + if (!_onErrorHandlerInstalled) { return; } + _window.onerror = _oldOnerrorHandler; + _onErrorHandlerInstalled = false; + _oldOnerrorHandler = undefined; + } - if (typeof globalOptions.sampleRate === 'number') { - if (Math.random() < globalOptions.sampleRate) { - this._sendProcessedPayload(data); + function processLastException() { + var _lastExceptionStack = lastExceptionStack, + _lastArgs = lastArgs; + lastArgs = null; + lastExceptionStack = null; + lastException = null; + notifyHandlers.apply(null, [_lastExceptionStack, false].concat(_lastArgs)); + } + + /** + * Reports an unhandled Error to TraceKit. + * @param {Error} ex + * @param {?boolean} rethrow If false, do not re-throw the exception. + * Only used for window.onerror to not cause an infinite loop of + * rethrowing. + */ + function report(ex, rethrow) { + var args = _slice.call(arguments, 1); + if (lastExceptionStack) { + if (lastException === ex) { + return; // already caught by an inner catch block, ignore + } else { + processLastException(); } - } else { - this._sendProcessedPayload(data); } - }, - _getUuid: function _getUuid() { - return uuid4(); - }, - _sendProcessedPayload: function _sendProcessedPayload(data, callback) { - var self = this; - var globalOptions = this._globalOptions; - if (!this.isSetup()) return; // Try and clean up the packet before sending by truncating long values - - data = this._trimPacket(data); // ideally duplicate error testing should occur *before* dataCallback/shouldSendCallback, - // but this would require copying an un-truncated copy of the data packet, which can be - // arbitrarily deep (extra_data) -- could be worthwhile? will revisit - if (!this._globalOptions.allowDuplicates && this._isRepeatData(data)) { - this._logDebug('warn', 'Raven dropped repeat event: ', data); + var stack = TraceKit.computeStackTrace(ex); + lastExceptionStack = stack; + lastException = ex; + lastArgs = args; - return; - } // Send along an event_id if not explicitly passed. - // This event_id can be used to reference the error within Sentry itself. - // Set lastEventId after we know the error should actually be sent + // If the stack trace is incomplete, wait for 2 seconds for + // slow slow IE to see if onerror occurs or not before reporting + // this exception; otherwise, we will end up with an incomplete + // stack trace + setTimeout(function() { + if (lastException === ex) { + processLastException(); + } + }, stack.incomplete ? 2000 : 0); + if (rethrow !== false) { + throw ex; // re-throw to propagate to the top level (and cause window.onerror) + } + } - this._lastEventId = data.event_id || (data.event_id = this._getUuid()); // Store outbound payload after trim + report.subscribe = subscribe; + report.unsubscribe = unsubscribe; + report.uninstall = unsubscribeAll; + return report; +})(); - this._lastData = data; +/** + * TraceKit.computeStackTrace: cross-browser stack traces in JavaScript + * + * Syntax: + * s = TraceKit.computeStackTrace(exception) // consider using TraceKit.report instead (see below) + * Returns: + * s.name - exception name + * s.message - exception message + * s.stack[i].url - JavaScript or HTML file URL + * s.stack[i].func - function name, or empty for anonymous functions (if guessing did not work) + * s.stack[i].args - arguments passed to the function, if known + * s.stack[i].line - line number, if known + * s.stack[i].column - column number, if known + * + * Supports: + * - Firefox: full stack trace with line numbers and unreliable column + * number on top frame + * - Opera 10: full stack trace with line and column numbers + * - Opera 9-: full stack trace with line numbers + * - Chrome: full stack trace with line and column numbers + * - Safari: line and column number for the topmost stacktrace element + * only + * - IE: no line numbers whatsoever + * + * Tries to guess names of anonymous functions by looking for assignments + * in the source code. In IE and Safari, we have to guess source file names + * by searching for function bodies inside all page scripts. This will not + * work for scripts that are loaded cross-domain. + * Here be dragons: some function names may be guessed incorrectly, and + * duplicate functions may be mismatched. + * + * TraceKit.computeStackTrace should only be used for tracing purposes. + * Logging of unhandled exceptions should be done with TraceKit.report, + * which builds on top of TraceKit.computeStackTrace and provides better + * IE support by utilizing the window.onerror event to retrieve information + * about the top of the stack. + * + * Note: In IE and Safari, no stack trace is recorded on the Error object, + * so computeStackTrace instead walks its *own* chain of callers. + * This means that: + * * in Safari, some methods may be missing from the stack trace; + * * in IE, the topmost function in the stack trace will always be the + * caller of computeStackTrace. + * + * This is okay for tracing (because you are likely to be calling + * computeStackTrace from the function you want to be the topmost element + * of the stack trace anyway), but not okay for logging unhandled + * exceptions (because your catch block will likely be far away from the + * inner function that actually caused the exception). + * + */ +TraceKit.computeStackTrace = (function computeStackTraceWrapper() { + // Contents of Exception in various browsers. + // + // SAFARI: + // ex.message = Can't find variable: qq + // ex.line = 59 + // ex.sourceId = 580238192 + // ex.sourceURL = http://... + // ex.expressionBeginOffset = 96 + // ex.expressionCaretOffset = 98 + // ex.expressionEndOffset = 98 + // ex.name = ReferenceError + // + // FIREFOX: + // ex.message = qq is not defined + // ex.fileName = http://... + // ex.lineNumber = 59 + // ex.columnNumber = 69 + // ex.stack = ...stack trace... (see the example below) + // ex.name = ReferenceError + // + // CHROME: + // ex.message = qq is not defined + // ex.name = ReferenceError + // ex.type = not_defined + // ex.arguments = ['aa'] + // ex.stack = ...stack trace... + // + // INTERNET EXPLORER: + // ex.message = ... + // ex.name = ReferenceError + // + // OPERA: + // ex.message = ...message... (see the example below) + // ex.name = ReferenceError + // ex.opera#sourceloc = 11 (pretty much useless, duplicates the info in ex.message) + // ex.stacktrace = n/a; see 'opera:config#UserPrefs|Exceptions Have Stacktrace' - this._logDebug('debug', 'Raven about to send:', data); + /** + * Computes stack trace information from the stack property. + * Chrome and Gecko use this property. + * @param {Error} ex + * @return {?Object.} Stack trace information. + */ + function computeStackTraceFromStackProp(ex) { + if (typeof ex.stack === 'undefined' || !ex.stack) return; - var auth = { - sentry_version: '7', - sentry_client: 'raven-js/' + this.VERSION, - sentry_key: this._globalKey - }; + var chrome = /^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i; + var winjs = /^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i; + // NOTE: blob urls are now supposed to always have an origin, therefore it's format + // which is `blob:http://url/path/with-some-uuid`, is matched by `blob.*?:\/` as well + var gecko = /^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i; + // Used to additionally parse URL/line/column from eval frames + var geckoEval = /(\S+) line (\d+)(?: > eval line \d+)* > eval/i; + var chromeEval = /\((\S*)(?::(\d+))(?::(\d+))\)/; + var lines = ex.stack.split('\n'); + var stack = []; + var submatch; + var parts; + var element; + var reference = /^(.*) is undefined$/.exec(ex.message); - if (this._globalSecret) { - auth.sentry_secret = this._globalSecret; - } + for (var i = 0, j = lines.length; i < j; ++i) { + if ((parts = chrome.exec(lines[i]))) { + var isNative = parts[2] && parts[2].indexOf('native') === 0; // start of line + var isEval = parts[2] && parts[2].indexOf('eval') === 0; // start of line + if (isEval && (submatch = chromeEval.exec(parts[2]))) { + // throw out eval line/column and use top-most line/column number + parts[2] = submatch[1]; // url + parts[3] = submatch[2]; // line + parts[4] = submatch[3]; // column + } + element = { + url: !isNative ? parts[2] : null, + func: parts[1] || UNKNOWN_FUNCTION, + args: isNative ? [parts[2]] : [], + line: parts[3] ? +parts[3] : null, + column: parts[4] ? +parts[4] : null + }; + } else if ((parts = winjs.exec(lines[i]))) { + element = { + url: parts[2], + func: parts[1] || UNKNOWN_FUNCTION, + args: [], + line: +parts[3], + column: parts[4] ? +parts[4] : null + }; + } else if ((parts = gecko.exec(lines[i]))) { + var isEval = parts[3] && parts[3].indexOf(' > eval') > -1; + if (isEval && (submatch = geckoEval.exec(parts[3]))) { + // throw out eval line/column and use top-most line number + parts[3] = submatch[1]; + parts[4] = submatch[2]; + parts[5] = null; // no column when eval + } else if (i === 0 && !parts[5] && typeof ex.columnNumber !== 'undefined') { + // FireFox uses this awesome columnNumber property for its top frame + // Also note, Firefox's column number is 0-based and everything else expects 1-based, + // so adding 1 + // NOTE: this hack doesn't work if top-most frame is eval + stack[0].column = ex.columnNumber + 1; + } + element = { + url: parts[3], + func: parts[1] || UNKNOWN_FUNCTION, + args: parts[2] ? parts[2].split(',') : [], + line: parts[4] ? +parts[4] : null, + column: parts[5] ? +parts[5] : null + }; + } else { + continue; + } - var exception = data.exception && data.exception.values[0]; // only capture 'sentry' breadcrumb is autoBreadcrumbs is truthy + if (!element.func && element.line) { + element.func = UNKNOWN_FUNCTION; + } - if (this._globalOptions.autoBreadcrumbs && this._globalOptions.autoBreadcrumbs.sentry) { - this.captureBreadcrumb({ - category: 'sentry', - message: exception ? (exception.type ? exception.type + ': ' : '') + exception.value : data.message, - event_id: data.event_id, - level: data.level || 'error' // presume error unless specified + stack.push(element); + } - }); + if (!stack.length) { + return null; } - var url = this._globalEndpoint; + return { + name: ex.name, + message: ex.message, + url: getLocationHref(), + stack: stack + }; + } - (globalOptions.transport || this._makeRequest).call(this, { + /** + * Adds information about the first frame to incomplete stack traces. + * Safari and IE require this to get complete data on the first frame. + * @param {Object.} stackInfo Stack trace information from + * one of the compute* methods. + * @param {string} url The URL of the script that caused an error. + * @param {(number|string)} lineNo The line number of the script that + * caused an error. + * @param {string=} message The error generated by the browser, which + * hopefully contains the name of the object that caused the error. + * @return {boolean} Whether or not the stack information was + * augmented. + */ + function augmentStackTraceWithInitialElement(stackInfo, url, lineNo, message) { + var initial = { url: url, - auth: auth, - data: data, - options: globalOptions, - onSuccess: function success() { - self._resetBackoff(); + line: lineNo + }; - self._triggerEvent('success', { - data: data, - src: url - }); + if (initial.url && initial.line) { + stackInfo.incomplete = false; - callback && callback(); - }, - onError: function failure(error) { - self._logDebug('error', 'Raven transport failed to send: ', error); + if (!initial.func) { + initial.func = UNKNOWN_FUNCTION; + } - if (error.request) { - self._setBackoffState(error.request); + if (stackInfo.stack.length > 0) { + if (stackInfo.stack[0].url === initial.url) { + if (stackInfo.stack[0].line === initial.line) { + return false; // already in stack trace + } else if ( + !stackInfo.stack[0].line && + stackInfo.stack[0].func === initial.func + ) { + stackInfo.stack[0].line = initial.line; + return false; + } } - - self._triggerEvent('failure', { - data: data, - src: url - }); - - error = error || new Error('Raven send failed (no additional details provided)'); - callback && callback(error); } - }); - }, - _makeRequest: function _makeRequest(opts) { - // Auth is intentionally sent as part of query string (NOT as custom HTTP header) to avoid preflight CORS requests - var url = opts.url + '?' + urlencode(opts.auth); - var evaluatedHeaders = null; - var evaluatedFetchParameters = {}; - - if (opts.options.headers) { - evaluatedHeaders = this._evaluateHash(opts.options.headers); - } - if (opts.options.fetchParameters) { - evaluatedFetchParameters = this._evaluateHash(opts.options.fetchParameters); + stackInfo.stack.unshift(initial); + stackInfo.partial = true; + return true; + } else { + stackInfo.incomplete = true; } - if (supportsFetch()) { - evaluatedFetchParameters.body = stringify_1(opts.data); - var defaultFetchOptions = objectMerge({}, this._fetchDefaults); - var fetchOptions = objectMerge(defaultFetchOptions, evaluatedFetchParameters); + return false; + } - if (evaluatedHeaders) { - fetchOptions.headers = evaluatedHeaders; + /** + * Computes stack trace information by walking the arguments.caller + * chain at the time the exception occurred. This will cause earlier + * frames to be missed but is the only way to get any stack trace in + * Safari and IE. The top frame is restored by + * {@link augmentStackTraceWithInitialElement}. + * @param {Error} ex + * @return {?Object.} Stack trace information. + */ + function computeStackTraceByWalkingCallerChain(ex, depth) { + var functionName = /function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i, + stack = [], + funcs = {}, + recursion = false, + parts, + item, + source; + + for ( + var curr = computeStackTraceByWalkingCallerChain.caller; + curr && !recursion; + curr = curr.caller + ) { + if (curr === computeStackTrace || curr === TraceKit.report) { + // console.log('skipping internal function'); + continue; } - return _window$1.fetch(url, fetchOptions).then(function (response) { - if (response.ok) { - opts.onSuccess && opts.onSuccess(); - } else { - var error = new Error('Sentry error code: ' + response.status); // It's called request only to keep compatibility with XHR interface - // and not add more redundant checks in setBackoffState method - - error.request = response; - opts.onError && opts.onError(error); - } - })['catch'](function () { - opts.onError && opts.onError(new Error('Sentry error code: network unavailable')); - }); - } - - var request = _window$1.XMLHttpRequest && new _window$1.XMLHttpRequest(); - if (!request) return; // if browser doesn't support CORS (e.g. IE7), we are out of luck - - var hasCORS = 'withCredentials' in request || typeof XDomainRequest !== 'undefined'; - if (!hasCORS) return; - - if ('withCredentials' in request) { - request.onreadystatechange = function () { - if (request.readyState !== 4) { - return; - } else if (request.status === 200) { - opts.onSuccess && opts.onSuccess(); - } else if (opts.onError) { - var err = new Error('Sentry error code: ' + request.status); - err.request = request; - opts.onError(err); - } + item = { + url: null, + func: UNKNOWN_FUNCTION, + line: null, + column: null }; - } else { - request = new XDomainRequest(); // xdomainrequest cannot go http -> https (or vice versa), - // so always use protocol relative - url = url.replace(/^https?:/, ''); // onreadystatechange not supported by XDomainRequest + if (curr.name) { + item.func = curr.name; + } else if ((parts = functionName.exec(curr.toString()))) { + item.func = parts[1]; + } - if (opts.onSuccess) { - request.onload = opts.onSuccess; + if (typeof item.func === 'undefined') { + try { + item.func = parts.input.substring(0, parts.input.indexOf('{')); + } catch (e) {} } - if (opts.onError) { - request.onerror = function () { - var err = new Error('Sentry error code: XDomainRequest'); - err.request = request; - opts.onError(err); - }; + if (funcs['' + curr]) { + recursion = true; + } else { + funcs['' + curr] = true; } - } - request.open('POST', url); + stack.push(item); + } - if (evaluatedHeaders) { - each(evaluatedHeaders, function (key, value) { - request.setRequestHeader(key, value); - }); + if (depth) { + // console.log('depth is ' + depth); + // console.log('stack is ' + stack.length); + stack.splice(0, depth); } - request.send(stringify_1(opts.data)); - }, - _evaluateHash: function _evaluateHash(hash) { - var evaluated = {}; + var result = { + name: ex.name, + message: ex.message, + url: getLocationHref(), + stack: stack + }; + augmentStackTraceWithInitialElement( + result, + ex.sourceURL || ex.fileName, + ex.line || ex.lineNumber, + ex.message || ex.description + ); + return result; + } - for (var key in hash) { - if (hash.hasOwnProperty(key)) { - var value = hash[key]; - evaluated[key] = typeof value === 'function' ? value() : value; + /** + * Computes a stack trace for an exception. + * @param {Error} ex + * @param {(string|number)=} depth + */ + function computeStackTrace(ex, depth) { + var stack = null; + depth = depth == null ? 0 : +depth; + + try { + stack = computeStackTraceFromStackProp(ex); + if (stack) { + return stack; + } + } catch (e) { + if (TraceKit.debug) { + throw e; } } - return evaluated; - }, - _logDebug: function _logDebug(level) { - if (this._originalConsoleMethods[level] && this.debug) { - // In IE<10 console methods do not have their own 'apply' method - Function.prototype.apply.call(this._originalConsoleMethods[level], this._originalConsole, [].slice.call(arguments, 1)); - } - }, - _mergeContext: function _mergeContext(key, context) { - if (isUndefined(context)) { - delete this._globalContext[key]; - } else { - this._globalContext[key] = objectMerge(this._globalContext[key] || {}, context); + try { + stack = computeStackTraceByWalkingCallerChain(ex, depth + 1); + if (stack) { + return stack; + } + } catch (e) { + if (TraceKit.debug) { + throw e; + } } + return { + name: ex.name, + message: ex.message, + url: getLocationHref() + }; } -}; // Deprecations -Raven$1.prototype.setUser = Raven$1.prototype.setUserContext; -Raven$1.prototype.setReleaseContext = Raven$1.prototype.setRelease; -var raven = Raven$1; + computeStackTrace.augmentStackTraceWithInitialElement = augmentStackTraceWithInitialElement; + computeStackTrace.computeStackTraceFromStackProp = computeStackTraceFromStackProp; -/** - * Enforces a single instance of the Raven client, and the - * main entry point for Raven. If you are a consumer of the - * Raven library, you SHOULD load this file (vs raven.js). - **/ -// This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) + return computeStackTrace; +})(); -var _window = typeof window !== 'undefined' ? window : typeof commonjsGlobal !== 'undefined' ? commonjsGlobal : typeof self !== 'undefined' ? self : {}; +module.exports = TraceKit; -var _Raven = _window.Raven; -var Raven = new raven(); +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"9":9}],11:[function(_dereq_,module,exports){ /* - * Allow multiple versions of Raven to be installed. - * Strip Raven from the global context and returns the instance. - * - * @return {Raven} - */ - -Raven.noConflict = function () { - _window.Raven = _Raven; - return Raven; -}; - -Raven.afterLoad(); -var singleton = Raven; - -/** - * Angular.js plugin - * - * Provides an $exceptionHandler for Angular.js - */ + json-stringify-safe + Like JSON.stringify, but doesn't throw on circular references. -var wrappedCallback$1 = utils.wrappedCallback; // See https://github.com/angular/angular.js/blob/v1.4.7/src/minErr.js + Originally forked from https://github.com/isaacs/json-stringify-safe + version 5.0.1 on 3/8/2017 and modified to handle Errors serialization + and IE8 compatibility. Tests for this are in test/vendor. -var angularPattern = /^\[((?:[$a-zA-Z0-9]+:)?(?:[$a-zA-Z0-9]+))\] (.*?)\n?(\S+)$/; -var moduleName = 'ngRaven'; + ISC license: https://github.com/isaacs/json-stringify-safe/blob/master/LICENSE +*/ -function angularPlugin(Raven, angular) { - angular = angular || window.angular; - if (!angular) return; +exports = module.exports = stringify; +exports.getSerialize = serializer; - function RavenProvider() { - this.$get = ['$window', function ($window) { - return Raven; - }]; +function indexOf(haystack, needle) { + for (var i = 0; i < haystack.length; ++i) { + if (haystack[i] === needle) return i; } + return -1; +} - function ExceptionHandlerProvider($provide) { - $provide.decorator('$exceptionHandler', ['Raven', '$delegate', exceptionHandler]); - } +function stringify(obj, replacer, spaces, cycleReplacer) { + return JSON.stringify(obj, serializer(replacer, cycleReplacer), spaces); +} - function exceptionHandler(R, $delegate) { - return function (ex, cause) { - R.captureException(ex, { - extra: { - cause: cause - } - }); - $delegate(ex, cause); - }; +// https://github.com/ftlabs/js-abbreviate/blob/fa709e5f139e7770a71827b1893f22418097fbda/index.js#L95-L106 +function stringifyError(value) { + var err = { + // These properties are implemented as magical getters and don't show up in for in + stack: value.stack, + message: value.message, + name: value.name + }; + + for (var i in value) { + if (Object.prototype.hasOwnProperty.call(value, i)) { + err[i] = value[i]; + } } - angular.module(moduleName, []).provider('Raven', RavenProvider).config(['$provide', ExceptionHandlerProvider]); - Raven.setDataCallback(wrappedCallback$1(function (data) { - return angularPlugin._normalizeData(data); - })); + return err; } -angularPlugin._normalizeData = function (data) { - // We only care about mutating an exception - var exception = data.exception; +function serializer(replacer, cycleReplacer) { + var stack = []; + var keys = []; - if (exception) { - exception = exception.values[0]; - var matches = angularPattern.exec(exception.value); + if (cycleReplacer == null) { + cycleReplacer = function(key, value) { + if (stack[0] === value) { + return '[Circular ~]'; + } + return '[Circular ~.' + keys.slice(0, indexOf(stack, value)).join('.') + ']'; + }; + } - if (matches) { - // This type now becomes something like: $rootScope:inprog - exception.type = matches[1]; - exception.value = matches[2]; - data.message = exception.type + ': ' + exception.value; // auto set a new tag specifically for the angular error url + return function(key, value) { + if (stack.length > 0) { + var thisPos = indexOf(stack, this); + ~thisPos ? stack.splice(thisPos + 1) : stack.push(this); + ~thisPos ? keys.splice(thisPos, Infinity, key) : keys.push(key); - data.extra.angularDocs = matches[3].substr(0, 250); + if (~indexOf(stack, value)) { + value = cycleReplacer.call(this, key, value); + } + } else { + stack.push(value); } - } - - return data; -}; -angularPlugin.moduleName = moduleName; -var angular = angularPlugin; + return replacer == null + ? value instanceof Error ? stringifyError(value) : value + : replacer.call(this, key, value); + }; +} -/** - * console plugin +},{}],12:[function(_dereq_,module,exports){ +/* + * JavaScript MD5 + * https://github.com/blueimp/JavaScript-MD5 * - * Monkey patches console.* calls into Sentry messages with - * their appropriate log levels. (Experimental) + * Copyright 2011, Sebastian Tschan + * https://blueimp.net * - * Options: + * Licensed under the MIT license: + * https://opensource.org/licenses/MIT * - * `levels`: An array of levels (methods on `console`) to report to Sentry. - * Defaults to debug, info, warn, and error. + * Based on + * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message + * Digest Algorithm, as defined in RFC 1321. + * Version 2.2 Copyright (C) Paul Johnston 1999 - 2009 + * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet + * Distributed under the BSD License + * See http://pajhome.org.uk/crypt/md5 for more info. */ -var wrapConsoleMethod$1 = console$1.wrapMethod; - -function consolePlugin(Raven, console, pluginOptions) { - console = console || window.console || {}; - pluginOptions = pluginOptions || {}; - var logLevels = pluginOptions.levels || ['debug', 'info', 'warn', 'error']; - if ('assert' in console) logLevels.push('assert'); +/* +* Add integers, wrapping at 2^32. This uses 16-bit operations internally +* to work around bugs in some JS interpreters. +*/ +function safeAdd(x, y) { + var lsw = (x & 0xffff) + (y & 0xffff); + var msw = (x >> 16) + (y >> 16) + (lsw >> 16); + return (msw << 16) | (lsw & 0xffff); +} - var callback = function callback(msg, data) { - Raven.captureMessage(msg, data); - }; +/* +* Bitwise rotate a 32-bit number to the left. +*/ +function bitRotateLeft(num, cnt) { + return (num << cnt) | (num >>> (32 - cnt)); +} - var level = logLevels.pop(); +/* +* These functions implement the four basic operations the algorithm uses. +*/ +function md5cmn(q, a, b, x, s, t) { + return safeAdd(bitRotateLeft(safeAdd(safeAdd(a, q), safeAdd(x, t)), s), b); +} +function md5ff(a, b, c, d, x, s, t) { + return md5cmn((b & c) | (~b & d), a, b, x, s, t); +} +function md5gg(a, b, c, d, x, s, t) { + return md5cmn((b & d) | (c & ~d), a, b, x, s, t); +} +function md5hh(a, b, c, d, x, s, t) { + return md5cmn(b ^ c ^ d, a, b, x, s, t); +} +function md5ii(a, b, c, d, x, s, t) { + return md5cmn(c ^ (b | ~d), a, b, x, s, t); +} - while (level) { - wrapConsoleMethod$1(console, level, callback); - level = logLevels.pop(); +/* +* Calculate the MD5 of an array of little-endian words, and a bit length. +*/ +function binlMD5(x, len) { + /* append padding */ + x[len >> 5] |= 0x80 << (len % 32); + x[(((len + 64) >>> 9) << 4) + 14] = len; + + var i; + var olda; + var oldb; + var oldc; + var oldd; + var a = 1732584193; + var b = -271733879; + var c = -1732584194; + var d = 271733878; + + for (i = 0; i < x.length; i += 16) { + olda = a; + oldb = b; + oldc = c; + oldd = d; + + a = md5ff(a, b, c, d, x[i], 7, -680876936); + d = md5ff(d, a, b, c, x[i + 1], 12, -389564586); + c = md5ff(c, d, a, b, x[i + 2], 17, 606105819); + b = md5ff(b, c, d, a, x[i + 3], 22, -1044525330); + a = md5ff(a, b, c, d, x[i + 4], 7, -176418897); + d = md5ff(d, a, b, c, x[i + 5], 12, 1200080426); + c = md5ff(c, d, a, b, x[i + 6], 17, -1473231341); + b = md5ff(b, c, d, a, x[i + 7], 22, -45705983); + a = md5ff(a, b, c, d, x[i + 8], 7, 1770035416); + d = md5ff(d, a, b, c, x[i + 9], 12, -1958414417); + c = md5ff(c, d, a, b, x[i + 10], 17, -42063); + b = md5ff(b, c, d, a, x[i + 11], 22, -1990404162); + a = md5ff(a, b, c, d, x[i + 12], 7, 1804603682); + d = md5ff(d, a, b, c, x[i + 13], 12, -40341101); + c = md5ff(c, d, a, b, x[i + 14], 17, -1502002290); + b = md5ff(b, c, d, a, x[i + 15], 22, 1236535329); + + a = md5gg(a, b, c, d, x[i + 1], 5, -165796510); + d = md5gg(d, a, b, c, x[i + 6], 9, -1069501632); + c = md5gg(c, d, a, b, x[i + 11], 14, 643717713); + b = md5gg(b, c, d, a, x[i], 20, -373897302); + a = md5gg(a, b, c, d, x[i + 5], 5, -701558691); + d = md5gg(d, a, b, c, x[i + 10], 9, 38016083); + c = md5gg(c, d, a, b, x[i + 15], 14, -660478335); + b = md5gg(b, c, d, a, x[i + 4], 20, -405537848); + a = md5gg(a, b, c, d, x[i + 9], 5, 568446438); + d = md5gg(d, a, b, c, x[i + 14], 9, -1019803690); + c = md5gg(c, d, a, b, x[i + 3], 14, -187363961); + b = md5gg(b, c, d, a, x[i + 8], 20, 1163531501); + a = md5gg(a, b, c, d, x[i + 13], 5, -1444681467); + d = md5gg(d, a, b, c, x[i + 2], 9, -51403784); + c = md5gg(c, d, a, b, x[i + 7], 14, 1735328473); + b = md5gg(b, c, d, a, x[i + 12], 20, -1926607734); + + a = md5hh(a, b, c, d, x[i + 5], 4, -378558); + d = md5hh(d, a, b, c, x[i + 8], 11, -2022574463); + c = md5hh(c, d, a, b, x[i + 11], 16, 1839030562); + b = md5hh(b, c, d, a, x[i + 14], 23, -35309556); + a = md5hh(a, b, c, d, x[i + 1], 4, -1530992060); + d = md5hh(d, a, b, c, x[i + 4], 11, 1272893353); + c = md5hh(c, d, a, b, x[i + 7], 16, -155497632); + b = md5hh(b, c, d, a, x[i + 10], 23, -1094730640); + a = md5hh(a, b, c, d, x[i + 13], 4, 681279174); + d = md5hh(d, a, b, c, x[i], 11, -358537222); + c = md5hh(c, d, a, b, x[i + 3], 16, -722521979); + b = md5hh(b, c, d, a, x[i + 6], 23, 76029189); + a = md5hh(a, b, c, d, x[i + 9], 4, -640364487); + d = md5hh(d, a, b, c, x[i + 12], 11, -421815835); + c = md5hh(c, d, a, b, x[i + 15], 16, 530742520); + b = md5hh(b, c, d, a, x[i + 2], 23, -995338651); + + a = md5ii(a, b, c, d, x[i], 6, -198630844); + d = md5ii(d, a, b, c, x[i + 7], 10, 1126891415); + c = md5ii(c, d, a, b, x[i + 14], 15, -1416354905); + b = md5ii(b, c, d, a, x[i + 5], 21, -57434055); + a = md5ii(a, b, c, d, x[i + 12], 6, 1700485571); + d = md5ii(d, a, b, c, x[i + 3], 10, -1894986606); + c = md5ii(c, d, a, b, x[i + 10], 15, -1051523); + b = md5ii(b, c, d, a, x[i + 1], 21, -2054922799); + a = md5ii(a, b, c, d, x[i + 8], 6, 1873313359); + d = md5ii(d, a, b, c, x[i + 15], 10, -30611744); + c = md5ii(c, d, a, b, x[i + 6], 15, -1560198380); + b = md5ii(b, c, d, a, x[i + 13], 21, 1309151649); + a = md5ii(a, b, c, d, x[i + 4], 6, -145523070); + d = md5ii(d, a, b, c, x[i + 11], 10, -1120210379); + c = md5ii(c, d, a, b, x[i + 2], 15, 718787259); + b = md5ii(b, c, d, a, x[i + 9], 21, -343485551); + + a = safeAdd(a, olda); + b = safeAdd(b, oldb); + c = safeAdd(c, oldc); + d = safeAdd(d, oldd); } + return [a, b, c, d]; } -var console$3 = consolePlugin; - -/** - * Ember.js plugin - * - * Patches event handler callbacks and ajax callbacks. - */ -function emberPlugin(Raven, Ember) { - Ember = Ember || window.Ember; // quit if Ember isn't on the page - - if (!Ember) return; - var _oldOnError = Ember.onerror; - - Ember.onerror = function EmberOnError(error) { - Raven.captureException(error); - - if (typeof _oldOnError === 'function') { - _oldOnError.call(this, error); - } - }; - - Ember.RSVP.on('error', function (reason) { - if (reason instanceof Error) { - Raven.captureException(reason, { - extra: { - context: 'Unhandled Promise error detected' - } - }); - } else { - Raven.captureMessage('Unhandled Promise error detected', { - extra: { - reason: reason - } - }); - } - }); +/* +* Convert an array of little-endian words to a string +*/ +function binl2rstr(input) { + var i; + var output = ''; + var length32 = input.length * 32; + for (i = 0; i < length32; i += 8) { + output += String.fromCharCode((input[i >> 5] >>> (i % 32)) & 0xff); + } + return output; } -var ember = emberPlugin; +/* +* Convert a raw string to an array of little-endian words +* Characters >255 have their high-byte silently ignored. +*/ +function rstr2binl(input) { + var i; + var output = []; + output[(input.length >> 2) - 1] = undefined; + for (i = 0; i < output.length; i += 1) { + output[i] = 0; + } + var length8 = input.length * 8; + for (i = 0; i < length8; i += 8) { + output[i >> 5] |= (input.charCodeAt(i / 8) & 0xff) << (i % 32); + } + return output; +} -/*global define*/ +/* +* Calculate the MD5 of a raw string +*/ +function rstrMD5(s) { + return binl2rstr(binlMD5(rstr2binl(s), s.length * 8)); +} -/** - * require.js plugin - * - * Automatically wrap define/require callbacks. (Experimental) - */ +/* +* Calculate the HMAC-MD5, of a key and some data (raw strings) +*/ +function rstrHMACMD5(key, data) { + var i; + var bkey = rstr2binl(key); + var ipad = []; + var opad = []; + var hash; + ipad[15] = opad[15] = undefined; + if (bkey.length > 16) { + bkey = binlMD5(bkey, key.length * 8); + } + for (i = 0; i < 16; i += 1) { + ipad[i] = bkey[i] ^ 0x36363636; + opad[i] = bkey[i] ^ 0x5c5c5c5c; + } + hash = binlMD5(ipad.concat(rstr2binl(data)), 512 + data.length * 8); + return binl2rstr(binlMD5(opad.concat(hash), 512 + 128)); +} -function requirePlugin(Raven) { - if (typeof undefined === 'function' && undefined.amd) { - window.define = Raven.wrap({ - deep: false - }, undefined); - window.require = Raven.wrap({ - deep: false - }, commonjsRequire); +/* +* Convert a raw string to a hex string +*/ +function rstr2hex(input) { + var hexTab = '0123456789abcdef'; + var output = ''; + var x; + var i; + for (i = 0; i < input.length; i += 1) { + x = input.charCodeAt(i); + output += hexTab.charAt((x >>> 4) & 0x0f) + hexTab.charAt(x & 0x0f); } + return output; } -var require_1 = requirePlugin; +/* +* Encode a string as utf-8 +*/ +function str2rstrUTF8(input) { + return unescape(encodeURIComponent(input)); +} -/* This file was generated by './scripts/generate-plugin-combinations.js'! */ +/* +* Take string arguments and return either raw or hex encoded strings +*/ +function rawMD5(s) { + return rstrMD5(str2rstrUTF8(s)); +} +function hexMD5(s) { + return rstr2hex(rawMD5(s)); +} +function rawHMACMD5(k, d) { + return rstrHMACMD5(str2rstrUTF8(k), str2rstrUTF8(d)); +} +function hexHMACMD5(k, d) { + return rstr2hex(rawHMACMD5(k, d)); +} -singleton.addPlugin(angular).addPlugin(console$3).addPlugin(ember).addPlugin(require_1); -var angular_console_ember_require = {}; +function md5(string, key, raw) { + if (!key) { + if (!raw) { + return hexMD5(string); + } + return rawMD5(string); + } + if (!raw) { + return hexHMACMD5(key, string); + } + return rawHMACMD5(key, string); +} -return angular_console_ember_require; +module.exports = md5; -}))); +},{}]},{},[8,1,2,3,4])(8) +}); \ No newline at end of file diff --git a/dist/angular,console,ember,require/raven.min.js b/dist/angular,console,ember,require/raven.min.js index 969c034bc5d9..7a3479575936 100644 --- a/dist/angular,console,ember,require/raven.min.js +++ b/dist/angular,console,ember,require/raven.min.js @@ -1,3 +1,4 @@ -/*! Raven.js 3.22.2 (1b6187b) | github.com/getsentry/raven-js */ -!function(a,b){"object"==typeof exports&&"undefined"!=typeof module?module.exports=b():"function"==typeof define&&define.amd?define(b):a.Raven=b()}(this,function(){"use strict";function a(a,b){return b={exports:{}},a(b,b.exports),b.exports}function b(a){return(b="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(a){return typeof a}:function(a){return a&&"function"==typeof Symbol&&a.constructor===Symbol&&a!==Symbol.prototype?"symbol":typeof a})(a)}function c(a){return"object"===b(a)&&null!==a}function d(a){switch({}.toString.call(a)){case"[object Error]":return!0;case"[object Exception]":return!0;case"[object DOMException]":return!0;default:return a instanceof Error}}function e(a){return l()&&"[object ErrorEvent]"==={}.toString.call(a)}function f(a){return void 0===a}function g(a){return"function"==typeof a}function h(a){return"[object Object]"===Object.prototype.toString.call(a)}function i(a){return"[object String]"===Object.prototype.toString.call(a)}function j(a){return"[object Array]"===Object.prototype.toString.call(a)}function k(a){if(!h(a))return!1;for(var b in a)if(a.hasOwnProperty(b))return!1;return!0}function l(){try{return new ErrorEvent(""),!0}catch(a){return!1}}function m(){if(!("fetch"in Q))return!1;try{return new Headers,new Request(""),new Response,!0}catch(a){return!1}}function n(a){function b(b,c){var d=a(b)||b;return c?c(d)||d:d}return b}function o(a,b){var c,d;if(f(a.length))for(c in a)s(a,c)&&b.call(null,c,a[c]);else if(d=a.length)for(c=0;c ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function y(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&i(b))for(c=b.split(/\s+/),f=0;f=0;--b)l[b]===a&&l.splice(b,1)}function c(){g(),l=[]}function d(a,b){var c=null;if(!b||S.collectWindowErrors){for(var d in l)if(l.hasOwnProperty(d))try{l[d].apply(null,[a].concat(U.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function e(a,b,c,e,f){var g=null,i=R.isErrorEvent(f)?f.error:f,k=R.isErrorEvent(a)?a.message:a;if(o)S.computeStackTrace.augmentStackTraceWithInitialElement(o,b,c,k),h();else if(i&&R.isError(i))g=S.computeStackTrace(i),d(g,!0);else{var l,m={url:b,line:c,column:e},n=void 0;if("[object String]"==={}.toString.call(k)){var l=k.match(W);l&&(n=l[1],k=l[2])}m.func=V,g={name:n,message:k,url:F(),stack:[m]},d(g,!0)}return!!j&&j.apply(this,arguments)}function f(){k||(j=T.onerror,T.onerror=e,k=!0)}function g(){k&&(T.onerror=j,k=!1,j=void 0)}function h(){var a=o,b=m;m=null,o=null,n=null,d.apply(null,[a,!1].concat(b))}function i(a,b){var c=U.call(arguments,1);if(o){if(n===a)return;h()}var d=S.computeStackTrace(a);if(o=d,n=a,m=c,setTimeout(function(){n===a&&h()},d.incomplete?2e3:0),b!==!1)throw a}var j,k,l=[],m=null,n=null,o=null;return i.subscribe=a,i.unsubscribe=b,i.uninstall=c,i}(),S.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,d,e=/^\s*at (.*?) ?\(((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,f=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|\[native).*?|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,g=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,h=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,i=/\((\S*)(?::(\d+))(?::(\d+))\)/,j=a.stack.split("\n"),k=[],l=(/^(.*) is undefined$/.exec(a.message),0),m=j.length;l eval")>-1;o&&(b=h.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==l||c[5]||"undefined"==typeof a.columnNumber||(k[0].column=a.columnNumber+1),d={url:c[3],func:c[1]||V,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}!d.func&&d.line&&(d.func=V),k.push(d)}return k.length?{name:a.name,message:a.message,url:F(),stack:k}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=V),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,e){for(var f,g,h=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,i=[],j={},k=!1,l=c.caller;l&&!k;l=l.caller)if(l!==d&&l!==S.report){if(g={url:null,func:V,line:null,column:null},l.name?g.func=l.name:(f=h.exec(l.toString()))&&(g.func=f[1]),"undefined"==typeof g.func)try{g.func=f.input.substring(0,f.input.indexOf("{"))}catch(m){}j[""+l]?k=!0:j[""+l]=!0,i.push(g)}e&&i.splice(0,e);var n={name:a.name,message:a.message,url:F(),stack:i};return b(n,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),n}function d(b,d){var e=null;d=null==d?0:+d;try{if(e=a(b))return e}catch(f){if(S.debug)throw f}try{if(e=c(b,d+1))return e}catch(f){if(S.debug)throw f}return{name:b.name,message:b.message,url:F()}}return d.augmentStackTraceWithInitialElement=b,d.computeStackTraceFromStackProp=a,d}();var X=S,Y=a(function(a,b){function c(a,b){for(var c=0;c0){var i=c(d,this);~i?d.splice(i+1):d.push(this),~i?f.splice(i,1/0,g):f.push(g),~c(d,h)&&(h=b.call(this,g,h))}else d.push(h);return null==a?h instanceof Error?e(h):h:a.call(this,g,h)}}b=a.exports=d,b.getSerialize=f});G.prototype=new Error,G.prototype.constructor=G;var Z=G,$=function(a,b,c){var d=a[b],e=a;if(b in a){var f="warn"===b?"warning":b;a[b]=function(){var a=[].slice.call(arguments),g=R.safeJoin(a," "),h={level:f,logger:"console",extra:{arguments:a}};"assert"===b?a[0]===!1&&(g="Assertion failed: "+(R.safeJoin(a.slice(1)," ")||"console.assert"),h.extra.arguments=a.slice(1),c&&c(g,h)):c&&c(g,h),d&&Function.prototype.apply.call(d,e,a)}}},_={wrapMethod:$},aa=R.isError,ba=R.isObject,ca=R.isErrorEvent,da=R.isUndefined,ea=R.isFunction,fa=R.isString,ga=R.isArray,ha=R.isEmptyObject,ia=R.each,ja=R.objectMerge,ka=R.truncate,la=R.objectFrozen,ma=R.hasKey,na=R.joinRegExp,oa=R.urlencode,pa=R.uuid4,qa=R.htmlTreeAsString,ra=R.isSameException,sa=R.isSameStacktrace,ta=R.parseUrl,ua=R.fill,va=R.supportsFetch,wa=_.wrapMethod,xa="source protocol user pass host port path".split(" "),ya=/^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/,za="undefined"!=typeof window?window:"undefined"!=typeof O?O:"undefined"!=typeof self?self:{},Aa=za.document,Ba=za.navigator;J.prototype={VERSION:"3.22.2",debug:!1,TraceKit:X,config:function(a,b){var c=this;if(c.i)return this.D("error","Error: Raven has already been configured"),c;if(!a)return c;var d=c.m;b&&ia(b,function(a,b){"tags"===a||"extra"===a||"user"===a?c.l[a]=b:d[a]=b}),c.setDSN(a),d.ignoreErrors.push(/^Script error\.?$/),d.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/),d.ignoreErrors=na(d.ignoreErrors),d.ignoreUrls=!!d.ignoreUrls.length&&na(d.ignoreUrls),d.whitelistUrls=!!d.whitelistUrls.length&&na(d.whitelistUrls),d.includePaths=na(d.includePaths),d.maxBreadcrumbs=Math.max(0,Math.min(d.maxBreadcrumbs||100,100));var e={xhr:!0,console:!0,dom:!0,location:!0,sentry:!0},f=d.autoBreadcrumbs;"[object Object]"==={}.toString.call(f)?f=ja(e,f):f!==!1&&(f=e),d.autoBreadcrumbs=f;var g={tryCatch:!0},h=d.instrument;return"[object Object]"==={}.toString.call(h)?h=ja(g,h):h!==!1&&(h=g),d.instrument=h,X.collectWindowErrors=!!d.collectWindowErrors,c},install:function(){var a=this;return a.isSetup()&&!a.p&&(X.report.subscribe(function(){a.E.apply(a,arguments)}),a.F(),a.m.instrument&&a.m.instrument.tryCatch&&a.G(),a.m.autoBreadcrumbs&&a.H(),a.I(),a.p=!0),Error.stackTraceLimit=a.m.stackTraceLimit,this},setDSN:function(a){var b=this,c=b.J(a),d=c.path.lastIndexOf("/"),e=c.path.substr(1,d);b.K=a,b.j=c.user,b.L=c.pass&&c.pass.substr(1),b.k=c.path.substr(d+1),b.i=b.M(c),b.N=b.i+"/"+e+"api/"+b.k+"/store/",this.A()},context:function(a,b,c){return ea(a)&&(c=b||[],b=a,a=void 0),this.wrap(a,b).apply(this,c)},wrap:function(a,b,c){function d(){var d=[],f=arguments.length,g=!a||a&&a.deep!==!1;for(c&&ea(c)&&c.apply(this,arguments);f--;)d[f]=g?e.wrap(a,arguments[f]):arguments[f];try{return b.apply(this,d)}catch(h){throw e.O(),e.captureException(h,a),h}}var e=this;if(da(b)&&!ea(a))return a;if(ea(a)&&(b=a,a=void 0),!ea(b))return b;try{if(b.a)return b;if(b.P)return b.P}catch(f){return b}for(var g in b)ma(b,g)&&(d[g]=b[g]);return d.prototype=b.prototype,b.P=d,d.a=!0,d.b=b,d},uninstall:function(){return X.report.uninstall(),this.Q(),this.R(),this.S(),Error.stackTraceLimit=this.q,this.p=!1,this},captureException:function(a,b){b=ja({trimHeadFrames:0},b?b:{});var c=!aa(a),d=!ca(a),e=ca(a)&&!a.error;if(c&&d||e)return this.captureMessage(a,ja(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}));ca(a)&&(a=a.error),this.f=a;try{var f=X.computeStackTrace(a);this.T(f,b)}catch(g){if(a!==g)throw g}return this},captureMessage:function(a,b){if(!this.m.ignoreErrors.test||!this.m.ignoreErrors.test(a)){b=b||{};var c,d=ja({message:a+""},b);try{throw new Error(a)}catch(e){c=e}c.name=null;var f=X.computeStackTrace(c),g=ga(f.stack)&&f.stack[1],h=g&&g.url||"";if((!this.m.ignoreUrls.test||!this.m.ignoreUrls.test(h))&&(!this.m.whitelistUrls.test||this.m.whitelistUrls.test(h))){if(this.m.stacktrace||b&&b.stacktrace){b=ja({fingerprint:a,trimHeadFrames:(b.trimHeadFrames||0)+1},b);var i=this.U(f,b);d.stacktrace={frames:i.reverse()}}return this.V(d),this}}},captureBreadcrumb:function(a){var b=ja({timestamp:H()/1e3},a);if(ea(this.m.breadcrumbCallback)){var c=this.m.breadcrumbCallback(b);if(ba(c)&&!ha(c))b=c;else if(c===!1)return this}return this.w.push(b),this.w.length>this.m.maxBreadcrumbs&&this.w.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.t.push([a,b]),this.p&&this.I(),this},setUserContext:function(a){return this.l.user=a,this},setExtraContext:function(a){return this.W("extra",a),this},setTagsContext:function(a){return this.W("tags",a),this},clearContext:function(){return this.l={},this},getContext:function(){return JSON.parse(Y(this.l))},setEnvironment:function(a){return this.m.environment=a,this},setRelease:function(a){return this.m.release=a,this},setDataCallback:function(a){var b=this.m.dataCallback;return this.m.dataCallback=I(b,a),this},setBreadcrumbCallback:function(a){var b=this.m.breadcrumbCallback;return this.m.breadcrumbCallback=I(b,a),this},setShouldSendCallback:function(a){var b=this.m.shouldSendCallback;return this.m.shouldSendCallback=I(b,a),this},setTransport:function(a){return this.m.transport=a,this},lastException:function(){return this.f},lastEventId:function(){return this.h},isSetup:function(){return!!this.c&&(!!this.i||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.D("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=za.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(Aa){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new Z("Missing eventId");var c=a.dsn||this.K;if(!c)throw new Z("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.l.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.M(this.J(c)),h=Aa.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(Aa.head||Aa.body).appendChild(h)}},O:function(){var a=this;this.o+=1,setTimeout(function(){a.o-=1})},X:function(a,b){var c,d;if(this.d){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),Aa.createEvent?(c=Aa.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=Aa.createEventObject(),c.eventType=a);for(d in b)ma(b,d)&&(c[d]=b[d]);if(Aa.createEvent)Aa.dispatchEvent(c);else try{Aa.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},Y:function(a){var b=this;return function(c){if(b.Z=null,b.x!==c){b.x=c;var d;try{d=qa(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},$:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.Z;g||a.Y("input")(c),clearTimeout(g),a.Z=setTimeout(function(){a.Z=null},b)}}},_:function(a,b){var c=ta(this.y.href),d=ta(b),e=ta(a);this.z=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},F:function(){var a=this;a.aa=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.a?a.aa.apply(this.b,arguments):a.aa.apply(this,arguments)}},Q:function(){this.aa&&(Function.prototype.toString=this.aa)},G:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b._(b.z,c+""),a.apply(this,arguments)}};ua(history,"pushState",j,d),ua(history,"replaceState",j,d)}if(c.console&&"console"in za&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};ia(["debug","info","warn","error","log"],function(a,b){wa(console,b,k)})}},R:function(){for(var a;this.v.length;){a=this.v.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},S:function(){for(var a in this.s)this.r[a]=this.s[a]},I:function(){var a=this;ia(this.t,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},J:function(a){var b=ya.exec(a),c={},d=7;try{for(;d--;)c[xa[d]]=b[d]||""}catch(e){throw new Z("Invalid DSN: "+a)}if(c.pass&&!this.m.allowSecretKey)throw new Z("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},M:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},E:function(){this.o||this.T.apply(this,arguments)},T:function(a,b){var c=this.U(a,b);this.X("handle",{stackInfo:a,options:b}),this.ca(a.name,a.message,a.url,a.lineno,c,b)},U:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(ia(a.stack,function(b,e){var f=c.da(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.w,0)}),this.l.user&&(a.user=this.l.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||ha(a[b]))&&delete a[b]}),ea(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!ha(a)&&(!ea(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.ja()?void this.D("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random()this.l.maxBreadcrumbs&&this.v.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.s.push([a,b]),this.o&&this.G(),this},setUserContext:function(a){return this.k.user=a,this},setExtraContext:function(a){return this.$("extra",a),this},setTagsContext:function(a){return this.$("tags",a),this},clearContext:function(){return this.k={},this},getContext:function(){return JSON.parse(h(this.k))},setEnvironment:function(a){return this.l.environment=a,this},setRelease:function(a){return this.l.release=a,this},setDataCallback:function(a){var b=this.l.dataCallback;return this.l.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.l.breadcrumbCallback;return this.l.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.l.shouldSendCallback;return this.l.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.l.transport=a,this},lastException:function(){return this.e},lastEventId:function(){return this.g},isSetup:function(){return!!this.b&&(!!this.h||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.A("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=P.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(Q){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.I;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.k.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.K(this.H(c)),h=Q.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(Q.head||Q.body).appendChild(h)}},M:function(){var a=this;this.n+=1,setTimeout(function(){a.n-=1})},_:function(a,b){var c,d;if(this.c){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),Q.createEvent?(c=Q.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=Q.createEventObject(),c.eventType=a);for(d in b)y(b,d)&&(c[d]=b[d]);if(Q.createEvent)Q.dispatchEvent(c);else try{Q.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},aa:function(a){var b=this;return function(c){if(b.ba=null,b.w!==c){b.w=c;var d;try{d=C(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ca:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.ba;g||a.aa("input")(c),clearTimeout(g),a.ba=setTimeout(function(){a.ba=null},b)}}},da:function(a,b){var c=F(this.x.href),d=F(b),e=F(a);this.y=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},D:function(){var a=this;a.ea=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.N?a.ea.apply(this.P,arguments):a.ea.apply(this,arguments)}},R:function(){this.ea&&(Function.prototype.toString=this.ea)},E:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.da(b.y,c+""),a.apply(this,arguments)}};G(history,"pushState",j,d),G(history,"replaceState",j,d)}if(c.console&&"console"in P&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};u(["debug","info","warn","error","log"],function(a,b){M(console,b,k)})}},S:function(){for(var a;this.u.length;){a=this.u.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},T:function(){for(var a in this.r)this.q[a]=this.r[a]},G:function(){var a=this;u(this.s,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},H:function(a){var b=O.exec(a),c={},d=7;try{for(;d--;)c[N[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.l.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},K:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},B:function(){this.n||this.W.apply(this,arguments)},W:function(a,b){var c=this.Y(a,b);this._("handle",{stackInfo:a,options:b}),this.ga(a.name,a.message,a.url,a.lineno,c,b)},Y:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(u(a.stack,function(b,e){var f=c.ha(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.v,0)}),this.k.user&&(a.user=this.k.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),a=this.qa(a),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||t(a[b]))&&delete a[b]}),q(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!t(a)&&(!q(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.na()?void this.A("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function B(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&j(b))for(c=b.split(/\s+/),f=0;fc?M(a,b-1):d}function N(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?T:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function O(a,b){function c(a){return k(a)?a.map(function(a){return c(a)}):i(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!k(b)||k(b)&&0===b.length)return a;var d,e=w(b),f="********";try{d=JSON.parse(P(a))}catch(g){return a}return c(d)}var P=a(11),Q="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},R=3,S=51200,T=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isUndefined:g,isFunction:h,isPlainObject:i,isString:j,isArray:k,isEmptyObject:l,supportsErrorEvent:m,supportsFetch:n,supportsReferrerPolicy:o,supportsPromiseRejectionEvent:p,wrappedCallback:q,each:r,objectMerge:s,truncate:u,objectFrozen:t,hasKey:v,joinRegExp:w,urlencode:x,uuid4:z,htmlTreeAsString:A,htmlElementAsString:B,isSameException:E,isSameStacktrace:F,parseUrl:y,fill:G,safeJoin:H,serializeException:M,serializeKeysForMessage:N,sanitize:O}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{11:11}],10:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}var e=a(9),f={collectWindowErrors:!0,debug:!1},g="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},h=[].slice,i="?",j=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;f.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function k(a,b){var c=null;if(!b||f.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(h.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,g,h){var l=null,m=e.isErrorEvent(h)?h.error:h,n=e.isErrorEvent(a)?a.message:a;if(v)f.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&e.isError(m))l=f.computeStackTrace(m),k(l,!0);else{var p,r={url:b,line:c,column:g},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(j);p&&(s=p[1],n=p[2])}r.func=i,l={name:s,message:n,url:d(),stack:[r]},k(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=g.onerror,g.onerror=l,r=!0)}function n(){r&&(g.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,k.apply(null,[a,!1].concat(b))}function p(a,b){var c=h.call(arguments,1);if(v){if(u===a)return;o()}var d=f.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),f.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,e,f=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,g=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,h=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,j=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,k=/\((\S*)(?::(\d+))(?::(\d+))\)/,l=a.stack.split("\n"),m=[],n=(/^(.*) is undefined$/.exec(a.message),0),o=l.length;n eval")>-1;q&&(b=j.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==n||c[5]||"undefined"==typeof a.columnNumber||(m[0].column=a.columnNumber+1),e={url:c[3],func:c[1]||i,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}!e.func&&e.line&&(e.func=i),m.push(e)}return m.length?{name:a.name,message:a.message,url:d(),stack:m}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=i),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,g){for(var h,j,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==e&&o!==f.report){if(j={url:null,func:i,line:null,column:null},o.name?j.func=o.name:(h=k.exec(o.toString()))&&(j.func=h[1]),"undefined"==typeof j.func)try{j.func=h.input.substring(0,h.input.indexOf("{"))}catch(p){}m[""+o]?n=!0:m[""+o]=!0,l.push(j); +}g&&l.splice(0,g);var q={name:a.name,message:a.message,url:d(),stack:l};return b(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),q}function e(b,e){var g=null;e=null==e?0:+e;try{if(g=a(b))return g}catch(h){if(f.debug)throw h}try{if(g=c(b,e+1))return g}catch(h){if(f.debug)throw h}return{name:b.name,message:b.message,url:d()}}return e.augmentStackTraceWithInitialElement=b,e.computeStackTraceFromStackProp=a,e}(),b.exports=f}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{9:9}],11:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}],12:[function(a,b,c){function d(a,b){var c=(65535&a)+(65535&b),d=(a>>16)+(b>>16)+(c>>16);return d<<16|65535&c}function e(a,b){return a<>>32-b}function f(a,b,c,f,g,h){return d(e(d(d(b,a),d(f,h)),g),c)}function g(a,b,c,d,e,g,h){return f(b&c|~b&d,a,b,e,g,h)}function h(a,b,c,d,e,g,h){return f(b&d|c&~d,a,b,e,g,h)}function i(a,b,c,d,e,g,h){return f(b^c^d,a,b,e,g,h)}function j(a,b,c,d,e,g,h){return f(c^(b|~d),a,b,e,g,h)}function k(a,b){a[b>>5]|=128<>>9<<4)+14]=b;var c,e,f,k,l,m=1732584193,n=-271733879,o=-1732584194,p=271733878;for(c=0;c>5]>>>b%32&255);return c}function m(a){var b,c=[];for(c[(a.length>>2)-1]=void 0,b=0;b>5]|=(255&a.charCodeAt(b/8))<16&&(e=k(e,8*a.length)),c=0;c<16;c+=1)f[c]=909522486^e[c],g[c]=1549556828^e[c];return d=k(f.concat(m(b)),512+8*b.length),l(k(g.concat(d),640))}function p(a){var b,c,d="0123456789abcdef",e="";for(c=0;c>>4&15)+d.charAt(15&b);return e}function q(a){return unescape(encodeURIComponent(a))}function r(a){return n(q(a))}function s(a){return p(r(a))}function t(a,b){return o(q(a),q(b))}function u(a,b){return p(t(a,b))}function v(a,b,c){return b?c?t(b,a):u(b,a):c?r(a):s(a)}b.exports=v},{}]},{},[8,1,2,3,4])(8)}); //# sourceMappingURL=raven.min.js.map \ No newline at end of file diff --git a/dist/angular,console,ember,require/raven.min.js.map b/dist/angular,console,ember,require/raven.min.js.map index 6044a565908e..6ee4a92dd402 100644 --- a/dist/angular,console,ember,require/raven.min.js.map +++ b/dist/angular,console,ember,require/raven.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["raven.js"],"names":["global","factory","exports","module","define","amd","Raven","this","createCommonjsModule","fn","_typeof","obj","Symbol","iterator","constructor","prototype","isObject$1","what","isError$1","value","toString","call","Error","isErrorEvent$1","supportsErrorEvent","isUndefined$1","isFunction$1","isPlainObject","Object","isString$1","isArray$1","isEmptyObject$1","_","hasOwnProperty","ErrorEvent","e","supportsFetch$1","_window$3","Headers","Request","Response","wrappedCallback","callback","dataCallback","data","original","normalizedData","each$1","i","j","length","hasKey$1","objectMerge$1","obj1","obj2","key","objectFrozen$1","isFrozen","truncate$1","str","max","substr","object","joinRegExp$1","patterns","pattern","sources","len","push","replace","source","RegExp","join","urlencode$1","o","pairs","encodeURIComponent","parseUrl$1","url","match","query","fragment","protocol","host","path","relative","uuid4$1","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","r","Math","random","htmlTreeAsString$1","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","reverse","className","classes","attr","tagName","toLowerCase","id","split","attrWhitelist","getAttribute","isOnlyOneTruthy","a","b","isBothUndefined","isSameException$1","ex1","ex2","values","type","stacktrace","isSameStacktrace$1","stack1","stack2","frames1","frames","frames2","filename","lineno","colno","fill$1","name","replacement","track","orig","__raven__","__orig__","safeJoin","input","delimiter","output","String","getLocationHref","document","location","href","RavenConfigError","message","now","Date","keepOriginalCallback","isFunction","Raven$1","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window$1","SENTRY_RELEASE","logger","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","_fetchDefaults","method","keepalive","referrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","console","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","_lastHref","_resetBackoff","angularPlugin","angular","RavenProvider","$get","$window","ExceptionHandlerProvider","$provide","decorator","exceptionHandler","R","$delegate","ex","cause","captureException","extra","window","moduleName","provider","config","setDataCallback","wrappedCallback$1","_normalizeData","consolePlugin","pluginOptions","logLevels","levels","msg","captureMessage","level","pop","wrapConsoleMethod$1","emberPlugin","Ember","_oldOnError","onerror","error","RSVP","on","reason","context","requirePlugin","commonjsGlobal","self","_sPO","setPrototypeOf","p","__proto__","Reflect","construct","Parent","args","Class","Constructor","apply","bind","utils","isObject","isError","isErrorEvent","isString","isArray","isEmptyObject","supportsFetch","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","TraceKit","debug","_window$2","_slice","slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","report","subscribe","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","stack","isWindowError","exception","concat","arguments","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","computeStackTrace","augmentStackTraceWithInitialElement","processLastException","groups","line","column","undefined","func","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","lastException","rethrow","setTimeout","incomplete","uninstall","computeStackTraceFromStackProp","submatch","parts","element","chrome","gecko","winjs","geckoEval","chromeEval","lines","exec","isNative","indexOf","isEval","columnNumber","stackInfo","initial","unshift","partial","computeStackTraceByWalkingCallerChain","depth","item","functionName","funcs","recursion","curr","caller","substring","result","sourceURL","fileName","lineNumber","description","tracekit","stringify_1","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","err","keys","thisPos","Infinity","getSerialize","configError","wrapMethod","originalConsoleLevel","originalConsole","sentryLevel","Function","console$1","wrapConsoleMethod","dsnKeys","dsnPattern","navigator","VERSION","dsn","options","_logDebug","globalOptions","setDSN","maxBreadcrumbs","min","autoBreadcrumbDefaults","xhr","dom","sentry","instrumentDefaults","tryCatch","install","isSetup","_handleOnErrorStackInfo","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","lastIndexOf","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","wrap","_before","wrapped","deep","_ignoreNextOnError","__raven_wrapper__","property","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","trimHeadFrames","isNotError","isNotErrorEvent","isErrorEventWithoutError","_handleStackInfo","test","initialCall","fileurl","fingerprint","_prepareFrames","_send","captureBreadcrumb","crumb","timestamp","breadcrumbCallback","shift","addPlugin","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","O","X","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","Y","evtName","_keypressTimeout","target","category","$","debounceDuration","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","from","to","parsedLoc","parsedTo","parsedFrom","F","_originalFunctionToString","Q","G","wrapTimeFn","t","Array","originalCallback","wrapEventTarget","proto","capture","secure","handleEvent","before","clickHandler","keypressHandler","_keypressEventHandler","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","H","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","onreadystatechange","origFetch","fetchInput","fetchData","then","response","addEventListener","attachEvent","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","builtin","S","I","installer","J","m","allowSecretKey","M","port","E","T","_triggerEvent","_processException","U","frame","_normalizeFrame","in_app","da","stackInfoUrl","normalized","function","ca","prefixedMessage","culprit","ea","request","Referer","breadcrumbs","_trimBreadcrumbs","fa","urlProp","urlProps","ga","httpData","userAgent","User-Agent","referrer","A","_backoffDuration","_backoffStart","ja","ka","current","last","la","_shouldBackoff","retry","get","getResponseHeader","parseInt","V","baseData","project","platform","_getHttpData","serverName","server_name","forEach","_sendProcessedPayload","na","ma","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","oa","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","onload","open","setRequestHeader","send","pa","hash","evaluated","D","W","setUser","setReleaseContext","raven","_window","_Raven","noConflict","singleton","angularPattern","matches","angularDocs","console$3","ember","require_1","angular_console_ember_require"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file +{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","angularPlugin","angular","RavenProvider","$get","$window","ExceptionHandlerProvider","$provide","decorator","exceptionHandler","R","$delegate","ex","cause","captureException","extra","moduleName","provider","config","setDataCallback","wrappedCallback","data","_normalizeData","angularPattern","exception","values","matches","exec","value","type","message","angularDocs","substr","addPlugin","8","9","2","consolePlugin","console","pluginOptions","logLevels","levels","push","callback","msg","captureMessage","level","pop","wrapConsoleMethod","wrapMethod","6","3","emberPlugin","Ember","_oldOnError","onerror","error","RSVP","on","reason","context","4","requirePlugin","wrap","deep","5","RavenConfigError","name","prototype","constructor","utils","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","safeJoin","logger","Function","apply","7","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","sanitizeKeys","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isError","isObject","isPlainObject","isErrorEvent","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","sanitize","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","dsn","options","_logDebug","globalOptions","key","setDSN","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","toString","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","func","undefined","_before","wrapped","_ignoreNextOnError","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","U","event","unhandledPromiseRejection","C","_promiseRejectionHandler","bind","addEventListener","Q","removeEventListener","trimHeadFrames","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","V","currentOptions","exKeys","Object","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","M","setTimeout","_","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","aa","evtName","_keypressTimeout","target","category","ca","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","da","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","D","_originalFunctionToString","E","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","F","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","S","builtin","T","G","installer","concat","H","str","m","allowSecretKey","K","port","B","W","stackInfo","_triggerEvent","_processException","lineno","Y","frame","_normalizeFrame","in_app","ha","stackInfoUrl","normalized","filename","line","colno","column","function","ga","prefixedMessage","culprit","ia","request","Referer","breadcrumbs","_trimBreadcrumbs","ja","urlProp","urlProps","ka","httpData","userAgent","User-Agent","referrer","z","_backoffDuration","_backoffStart","na","oa","current","last","pa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Z","baseData","project","platform","_getHttpData","serverName","server_name","_sanitizeData","forEach","random","_sendProcessedPayload","qa","sa","ra","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","ta","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","open","setRequestHeader","send","ua","hash","evaluated","A","$","setUser","setReleaseContext","10","11","12","RavenConstructor","_Raven","noConflict","Client","what","supportsErrorEvent","ErrorEvent","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","sanitizeMask","safeInput","o_O","getLocationHref","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","y","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","charAt","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","string","raw"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file diff --git a/dist/angular,console,ember,vue/raven.js b/dist/angular,console,ember,vue/raven.js index fa0e8686ac2e..7a1448e0d6a7 100644 --- a/dist/angular,console,ember,vue/raven.js +++ b/dist/angular,console,ember,vue/raven.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.22.2 (1b6187b) | github.com/getsentry/raven-js */ +/*! Raven.js 3.24.2 (540f32b) | github.com/getsentry/raven-js */ /* * Includes TraceKit @@ -10,3308 +10,4090 @@ * */ -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : - typeof define === 'function' && define.amd ? define(factory) : - (global.Raven = factory()); -}(this, (function () { 'use strict'; - -var commonjsGlobal = typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; +(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.Raven = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o' : 'anonymous component') + + (vm._isVue && vm.$options.__file ? ' at ' + vm.$options.__file : '') + ); } -function supportsFetch$1() { - if (!('fetch' in _window$3)) return false; - - try { - new Headers(); // eslint-disable-line no-new - - new Request(''); // eslint-disable-line no-new +function vuePlugin(Raven, Vue) { + Vue = Vue || window.Vue; - new Response(); // eslint-disable-line no-new + // quit if Vue isn't on the page + if (!Vue || !Vue.config) return; - return true; - } catch (e) { - return false; - } -} + var _oldOnError = Vue.config.errorHandler; + Vue.config.errorHandler = function VueErrorHandler(error, vm, info) { + var metaData = {}; -function wrappedCallback(callback) { - function dataCallback(data, original) { - var normalizedData = callback(data) || data; + // vm and lifecycleHook are not always available + if (Object.prototype.toString.call(vm) === '[object Object]') { + metaData.componentName = formatComponentName(vm); + metaData.propsData = vm.$options.propsData; + } - if (original) { - return original(normalizedData) || normalizedData; + if (typeof info !== 'undefined') { + metaData.lifecycleHook = info; } - return normalizedData; - } + Raven.captureException(error, { + extra: metaData + }); - return dataCallback; + if (typeof _oldOnError === 'function') { + _oldOnError.call(this, error, vm, info); + } + }; } -function each$1(obj, callback) { - var i, j; - - if (isUndefined$1(obj.length)) { - for (i in obj) { - if (hasKey$1(obj, i)) { - callback.call(null, i, obj[i]); - } - } - } else { - j = obj.length; +module.exports = vuePlugin; - if (j) { - for (i = 0; i < j; i++) { - callback.call(null, i, obj[i]); - } - } - } +_dereq_(8).addPlugin(module.exports); +},{"8":8}],5:[function(_dereq_,module,exports){ +function RavenConfigError(message) { + this.name = 'RavenConfigError'; + this.message = message; } +RavenConfigError.prototype = new Error(); +RavenConfigError.prototype.constructor = RavenConfigError; -function objectMerge$1(obj1, obj2) { - if (!obj2) { - return obj1; - } +module.exports = RavenConfigError; - each$1(obj2, function (key, value) { - obj1[key] = value; - }); - return obj1; -} -/** - * This function is only used for react-native. - * react-native freezes object that have already been sent over the - * js bridge. We need this function in order to check if the object is frozen. - * So it's ok that objectFrozen returns false if Object.isFrozen is not - * supported because it's not relevant for other "platforms". See related issue: - * https://github.com/getsentry/react-native-sentry/issues/57 - */ +},{}],6:[function(_dereq_,module,exports){ +var utils = _dereq_(9); +var wrapMethod = function(console, level, callback) { + var originalConsoleLevel = console[level]; + var originalConsole = console; -function objectFrozen$1(obj) { - if (!Object.isFrozen) { - return false; + if (!(level in console)) { + return; } - return Object.isFrozen(obj); -} - -function truncate$1(str, max) { - return !max || str.length <= max ? str : str.substr(0, max) + "\u2026"; -} -/** - * hasKey, a better form of hasOwnProperty - * Example: hasKey(MainHostObject, property) === true/false - * - * @param {Object} host object to check property - * @param {string} key to check - */ + var sentryLevel = level === 'warn' ? 'warning' : level; + console[level] = function() { + var args = [].slice.call(arguments); -function hasKey$1(object, key) { - return Object.prototype.hasOwnProperty.call(object, key); -} + var msg = utils.safeJoin(args, ' '); + var data = {level: sentryLevel, logger: 'console', extra: {arguments: args}}; -function joinRegExp$1(patterns) { - // Combine an array of regular expressions and strings into one large regexp - // Be mad. - var sources = [], - i = 0, - len = patterns.length, - pattern; + if (level === 'assert') { + if (args[0] === false) { + // Default browsers message + msg = + 'Assertion failed: ' + (utils.safeJoin(args.slice(1), ' ') || 'console.assert'); + data.extra.arguments = args.slice(1); + callback && callback(msg, data); + } + } else { + callback && callback(msg, data); + } - for (; i < len; i++) { - pattern = patterns[i]; + // this fails for some browsers. :( + if (originalConsoleLevel) { + // IE9 doesn't allow calling apply on console functions directly + // See: https://stackoverflow.com/questions/5472938/does-ie9-support-console-log-and-is-it-a-real-function#answer-5473193 + Function.prototype.apply.call(originalConsoleLevel, originalConsole, args); + } + }; +}; - if (isString$1(pattern)) { - // If it's a string, we need to escape it - // Taken from: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions - sources.push(pattern.replace(/([.*+?^=!:${}()|\[\]\/\\])/g, '\\$1')); - } else if (pattern && pattern.source) { - // If it's a regexp already, we want to extract the source - sources.push(pattern.source); - } // Intentionally skip other cases +module.exports = { + wrapMethod: wrapMethod +}; - } +},{"9":9}],7:[function(_dereq_,module,exports){ +(function (global){ +/*global XDomainRequest:false */ - return new RegExp(sources.join('|'), 'i'); -} - -function urlencode$1(o) { - var pairs = []; - each$1(o, function (key, value) { - pairs.push(encodeURIComponent(key) + '=' + encodeURIComponent(value)); - }); - return pairs.join('&'); -} // borrowed from https://tools.ietf.org/html/rfc3986#appendix-B -// intentionally using regex and not href parsing trick because React Native and other -// environments where DOM might not be available +var TraceKit = _dereq_(10); +var stringify = _dereq_(11); +var md5 = _dereq_(12); +var RavenConfigError = _dereq_(5); +var utils = _dereq_(9); +var isError = utils.isError; +var isObject = utils.isObject; +var isPlainObject = utils.isPlainObject; +var isErrorEvent = utils.isErrorEvent; +var isUndefined = utils.isUndefined; +var isFunction = utils.isFunction; +var isString = utils.isString; +var isArray = utils.isArray; +var isEmptyObject = utils.isEmptyObject; +var each = utils.each; +var objectMerge = utils.objectMerge; +var truncate = utils.truncate; +var objectFrozen = utils.objectFrozen; +var hasKey = utils.hasKey; +var joinRegExp = utils.joinRegExp; +var urlencode = utils.urlencode; +var uuid4 = utils.uuid4; +var htmlTreeAsString = utils.htmlTreeAsString; +var isSameException = utils.isSameException; +var isSameStacktrace = utils.isSameStacktrace; +var parseUrl = utils.parseUrl; +var fill = utils.fill; +var supportsFetch = utils.supportsFetch; +var supportsReferrerPolicy = utils.supportsReferrerPolicy; +var serializeKeysForMessage = utils.serializeKeysForMessage; +var serializeException = utils.serializeException; +var sanitize = utils.sanitize; -function parseUrl$1(url) { - if (typeof url !== 'string') return {}; - var match = url.match(/^(([^:\/?#]+):)?(\/\/([^\/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?$/); // coerce to undefined values to empty string so we don't get 'undefined' +var wrapConsoleMethod = _dereq_(6).wrapMethod; - var query = match[6] || ''; - var fragment = match[8] || ''; - return { - protocol: match[2], - host: match[4], - path: match[5], - relative: match[5] + query + fragment // everything minus origin +var dsnKeys = 'source protocol user pass host port path'.split(' '), + dsnPattern = /^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/; - }; +function now() { + return +new Date(); } -function uuid4$1() { - var crypto = _window$3.crypto || _window$3.msCrypto; - - if (!isUndefined$1(crypto) && crypto.getRandomValues) { - // Use window.crypto API if available - // eslint-disable-next-line no-undef - var arr = new Uint16Array(8); - crypto.getRandomValues(arr); // set 4 in byte 7 - - arr[3] = arr[3] & 0xfff | 0x4000; // set 2 most significant bits of byte 9 to '10' - - arr[4] = arr[4] & 0x3fff | 0x8000; - - var pad = function pad(num) { - var v = num.toString(16); +// This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) +var _window = + typeof window !== 'undefined' + ? window + : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; +var _document = _window.document; +var _navigator = _window.navigator; - while (v.length < 4) { - v = '0' + v; +function keepOriginalCallback(original, callback) { + return isFunction(callback) + ? function(data) { + return callback(data, original); } + : callback; +} - return v; - }; +// First, check for JSON support +// If there is no JSON, we no-op the core features of Raven +// since JSON is required to encode the payload +function Raven() { + this._hasJSON = !!(typeof JSON === 'object' && JSON.stringify); + // Raven can run in contexts where there's no document (react-native) + this._hasDocument = !isUndefined(_document); + this._hasNavigator = !isUndefined(_navigator); + this._lastCapturedException = null; + this._lastData = null; + this._lastEventId = null; + this._globalServer = null; + this._globalKey = null; + this._globalProject = null; + this._globalContext = {}; + this._globalOptions = { + // SENTRY_RELEASE can be injected by https://github.com/getsentry/sentry-webpack-plugin + release: _window.SENTRY_RELEASE && _window.SENTRY_RELEASE.id, + logger: 'javascript', + ignoreErrors: [], + ignoreUrls: [], + whitelistUrls: [], + includePaths: [], + headers: null, + collectWindowErrors: true, + captureUnhandledRejections: true, + maxMessageLength: 0, + // By default, truncates URL values to 250 chars + maxUrlLength: 250, + stackTraceLimit: 50, + autoBreadcrumbs: true, + instrument: true, + sampleRate: 1, + sanitizeKeys: [] + }; + this._fetchDefaults = { + method: 'POST', + keepalive: true, + // Despite all stars in the sky saying that Edge supports old draft syntax, aka 'never', 'always', 'origin' and 'default + // https://caniuse.com/#feat=referrer-policy + // It doesn't. And it throw exception instead of ignoring this parameter... + // REF: https://github.com/getsentry/raven-js/issues/1233 + referrerPolicy: supportsReferrerPolicy() ? 'origin' : '' + }; + this._ignoreOnError = 0; + this._isRavenInstalled = false; + this._originalErrorStackTraceLimit = Error.stackTraceLimit; + // capture references to window.console *and* all its methods first + // before the console plugin has a chance to monkey patch + this._originalConsole = _window.console || {}; + this._originalConsoleMethods = {}; + this._plugins = []; + this._startTime = now(); + this._wrappedBuiltIns = []; + this._breadcrumbs = []; + this._lastCapturedEvent = null; + this._keypressTimeout; + this._location = _window.location; + this._lastHref = this._location && this._location.href; + this._resetBackoff(); - return pad(arr[0]) + pad(arr[1]) + pad(arr[2]) + pad(arr[3]) + pad(arr[4]) + pad(arr[5]) + pad(arr[6]) + pad(arr[7]); - } else { - // http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/2117523#2117523 - return 'xxxxxxxxxxxx4xxxyxxxxxxxxxxxxxxx'.replace(/[xy]/g, function (c) { - var r = Math.random() * 16 | 0, - v = c === 'x' ? r : r & 0x3 | 0x8; - return v.toString(16); - }); + // eslint-disable-next-line guard-for-in + for (var method in this._originalConsole) { + this._originalConsoleMethods[method] = this._originalConsole[method]; } } -/** - * Given a child DOM element, returns a query-selector statement describing that - * and its ancestors - * e.g. [HTMLElement] => body > div > input#foo.btn[name=baz] - * @param elem - * @returns {string} + +/* + * The core Raven singleton + * + * @this {Raven} */ +Raven.prototype = { + // Hardcode version string so that raven source can be loaded directly via + // webpack (using a build step causes webpack #1617). Grunt verifies that + // this value matches package.json during build. + // See: https://github.com/getsentry/raven-js/issues/465 + VERSION: '3.24.2', -function htmlTreeAsString$1(elem) { - /* eslint no-extra-parens:0*/ - var MAX_TRAVERSE_HEIGHT = 5, - MAX_OUTPUT_LEN = 80, - out = [], - height = 0, - len = 0, - separator = ' > ', - sepLength = separator.length, - nextStr; + debug: false, - while (elem && height++ < MAX_TRAVERSE_HEIGHT) { - nextStr = htmlElementAsString(elem); // bail out if - // - nextStr is the 'html' element - // - the length of the string that would be created exceeds MAX_OUTPUT_LEN - // (ignore this limit if we are on the first iteration) + TraceKit: TraceKit, // alias to TraceKit - if (nextStr === 'html' || height > 1 && len + out.length * sepLength + nextStr.length >= MAX_OUTPUT_LEN) { - break; - } + /* + * Configure Raven with a DSN and extra options + * + * @param {string} dsn The public Sentry DSN + * @param {object} options Set of global options [optional] + * @return {Raven} + */ + config: function(dsn, options) { + var self = this; - out.push(nextStr); - len += nextStr.length; - elem = elem.parentNode; - } + if (self._globalServer) { + this._logDebug('error', 'Error: Raven has already been configured'); + return self; + } + if (!dsn) return self; - return out.reverse().join(separator); -} -/** - * Returns a simple, query-selector representation of a DOM element - * e.g. [HTMLElement] => input#foo.btn[name=baz] - * @param HTMLElement - * @returns {string} - */ + var globalOptions = self._globalOptions; + // merge in options + if (options) { + each(options, function(key, value) { + // tags and extra are special and need to be put into context + if (key === 'tags' || key === 'extra' || key === 'user') { + self._globalContext[key] = value; + } else { + globalOptions[key] = value; + } + }); + } -function htmlElementAsString(elem) { - var out = [], - className, - classes, - key, - attr, - i; + self.setDSN(dsn); - if (!elem || !elem.tagName) { - return ''; - } + // "Script error." is hard coded into browsers for errors that it can't read. + // this is the result of a script being pulled in from an external domain and CORS. + globalOptions.ignoreErrors.push(/^Script error\.?$/); + globalOptions.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/); - out.push(elem.tagName.toLowerCase()); + // join regexp rules into one big rule + globalOptions.ignoreErrors = joinRegExp(globalOptions.ignoreErrors); + globalOptions.ignoreUrls = globalOptions.ignoreUrls.length + ? joinRegExp(globalOptions.ignoreUrls) + : false; + globalOptions.whitelistUrls = globalOptions.whitelistUrls.length + ? joinRegExp(globalOptions.whitelistUrls) + : false; + globalOptions.includePaths = joinRegExp(globalOptions.includePaths); + globalOptions.maxBreadcrumbs = Math.max( + 0, + Math.min(globalOptions.maxBreadcrumbs || 100, 100) + ); // default and hard limit is 100 - if (elem.id) { - out.push('#' + elem.id); - } + var autoBreadcrumbDefaults = { + xhr: true, + console: true, + dom: true, + location: true, + sentry: true + }; - className = elem.className; + var autoBreadcrumbs = globalOptions.autoBreadcrumbs; + if ({}.toString.call(autoBreadcrumbs) === '[object Object]') { + autoBreadcrumbs = objectMerge(autoBreadcrumbDefaults, autoBreadcrumbs); + } else if (autoBreadcrumbs !== false) { + autoBreadcrumbs = autoBreadcrumbDefaults; + } + globalOptions.autoBreadcrumbs = autoBreadcrumbs; - if (className && isString$1(className)) { - classes = className.split(/\s+/); + var instrumentDefaults = { + tryCatch: true + }; - for (i = 0; i < classes.length; i++) { - out.push('.' + classes[i]); + var instrument = globalOptions.instrument; + if ({}.toString.call(instrument) === '[object Object]') { + instrument = objectMerge(instrumentDefaults, instrument); + } else if (instrument !== false) { + instrument = instrumentDefaults; } - } + globalOptions.instrument = instrument; - var attrWhitelist = ['type', 'name', 'title', 'alt']; + TraceKit.collectWindowErrors = !!globalOptions.collectWindowErrors; - for (i = 0; i < attrWhitelist.length; i++) { - key = attrWhitelist[i]; - attr = elem.getAttribute(key); + // return for chaining + return self; + }, - if (attr) { - out.push('[' + key + '="' + attr + '"]'); - } - } + /* + * Installs a global window.onerror error handler + * to capture and report uncaught exceptions. + * At this point, install() is required to be called due + * to the way TraceKit is set up. + * + * @return {Raven} + */ + install: function() { + var self = this; + if (self.isSetup() && !self._isRavenInstalled) { + TraceKit.report.subscribe(function() { + self._handleOnErrorStackInfo.apply(self, arguments); + }); - return out.join(''); -} -/** - * Returns true if either a OR b is truthy, but not both - */ + if (self._globalOptions.captureUnhandledRejections) { + self._attachPromiseRejectionHandler(); + } + self._patchFunctionToString(); -function isOnlyOneTruthy(a, b) { - return !!(!!a ^ !!b); -} -/** - * Returns true if both parameters are undefined - */ + if (self._globalOptions.instrument && self._globalOptions.instrument.tryCatch) { + self._instrumentTryCatch(); + } + if (self._globalOptions.autoBreadcrumbs) self._instrumentBreadcrumbs(); -function isBothUndefined(a, b) { - return isUndefined$1(a) && isUndefined$1(b); -} -/** - * Returns true if the two input exception interfaces have the same content - */ + // Install all of the plugins + self._drainPlugins(); + self._isRavenInstalled = true; + } -function isSameException$1(ex1, ex2) { - if (isOnlyOneTruthy(ex1, ex2)) return false; - ex1 = ex1.values[0]; - ex2 = ex2.values[0]; - if (ex1.type !== ex2.type || ex1.value !== ex2.value) return false; // in case both stacktraces are undefined, we can't decide so default to false + Error.stackTraceLimit = self._globalOptions.stackTraceLimit; + return this; + }, - if (isBothUndefined(ex1.stacktrace, ex2.stacktrace)) return false; - return isSameStacktrace$1(ex1.stacktrace, ex2.stacktrace); -} -/** - * Returns true if the two input stack trace interfaces have the same content - */ - - -function isSameStacktrace$1(stack1, stack2) { - if (isOnlyOneTruthy(stack1, stack2)) return false; - var frames1 = stack1.frames; - var frames2 = stack2.frames; // Exit early if frame count differs + /* + * Set the DSN (can be called multiple time unlike config) + * + * @param {string} dsn The public Sentry DSN + */ + setDSN: function(dsn) { + var self = this, + uri = self._parseDSN(dsn), + lastSlash = uri.path.lastIndexOf('/'), + path = uri.path.substr(1, lastSlash); - if (frames1.length !== frames2.length) return false; // Iterate through every frame; bail out if anything differs + self._dsn = dsn; + self._globalKey = uri.user; + self._globalSecret = uri.pass && uri.pass.substr(1); + self._globalProject = uri.path.substr(lastSlash + 1); - var a, b; + self._globalServer = self._getGlobalServer(uri); - for (var i = 0; i < frames1.length; i++) { - a = frames1[i]; - b = frames2[i]; - if (a.filename !== b.filename || a.lineno !== b.lineno || a.colno !== b.colno || a['function'] !== b['function']) return false; - } + self._globalEndpoint = + self._globalServer + '/' + path + 'api/' + self._globalProject + '/store/'; - return true; -} -/** - * Polyfill a method - * @param obj object e.g. `document` - * @param name method name present on object e.g. `addEventListener` - * @param replacement replacement function - * @param track {optional} record instrumentation to an array - */ + // Reset backoff state since we may be pointing at a + // new project/server + this._resetBackoff(); + }, + /* + * Wrap code within a context so Raven can capture errors + * reliably across domains that is executed immediately. + * + * @param {object} options A specific set of options for this context [optional] + * @param {function} func The callback to be immediately executed within the context + * @param {array} args An array of arguments to be called with the callback [optional] + */ + context: function(options, func, args) { + if (isFunction(options)) { + args = func || []; + func = options; + options = undefined; + } -function fill$1(obj, name, replacement, track) { - var orig = obj[name]; - obj[name] = replacement(orig); - obj[name].__raven__ = true; - obj[name].__orig__ = orig; + return this.wrap(options, func).apply(this, args); + }, - if (track) { - track.push([obj, name, orig]); - } -} -/** - * Join values in array - * @param input array of values to be joined together - * @param delimiter string to be placed in-between values - * @returns {string} - */ + /* + * Wrap code within a context and returns back a new function to be executed + * + * @param {object} options A specific set of options for this context [optional] + * @param {function} func The function to be wrapped in a new context + * @param {function} func A function to call before the try/catch wrapper [optional, private] + * @return {function} The newly wrapped functions with a context + */ + wrap: function(options, func, _before) { + var self = this; + // 1 argument has been passed, and it's not a function + // so just return it + if (isUndefined(func) && !isFunction(options)) { + return options; + } + // options is optional + if (isFunction(options)) { + func = options; + options = undefined; + } -function safeJoin(input, delimiter) { - if (!isArray$1(input)) return ''; - var output = []; + // At this point, we've passed along 2 arguments, and the second one + // is not a function either, so we'll just return the second argument. + if (!isFunction(func)) { + return func; + } - for (var i = 0; i < input.length; i++) { + // We don't wanna wrap it twice! try { - output.push(String(input[i])); + if (func.__raven__) { + return func; + } + + // If this has already been wrapped in the past, return that + if (func.__raven_wrapper__) { + return func.__raven_wrapper__; + } } catch (e) { - output.push('[value cannot be serialized]'); + // Just accessing custom props in some Selenium environments + // can cause a "Permission denied" exception (see raven-js#495). + // Bail on wrapping and return the function as-is (defers to window.onerror). + return func; } - } - return output.join(delimiter); -} + function wrapped() { + var args = [], + i = arguments.length, + deep = !options || (options && options.deep !== false); -var utils = { - isObject: isObject$1, - isError: isError$1, - isErrorEvent: isErrorEvent$1, - isUndefined: isUndefined$1, - isFunction: isFunction$1, - isPlainObject: isPlainObject, - isString: isString$1, - isArray: isArray$1, - isEmptyObject: isEmptyObject$1, - supportsErrorEvent: supportsErrorEvent, - supportsFetch: supportsFetch$1, - wrappedCallback: wrappedCallback, - each: each$1, - objectMerge: objectMerge$1, - truncate: truncate$1, - objectFrozen: objectFrozen$1, - hasKey: hasKey$1, - joinRegExp: joinRegExp$1, - urlencode: urlencode$1, - uuid4: uuid4$1, - htmlTreeAsString: htmlTreeAsString$1, - htmlElementAsString: htmlElementAsString, - isSameException: isSameException$1, - isSameStacktrace: isSameStacktrace$1, - parseUrl: parseUrl$1, - fill: fill$1, - safeJoin: safeJoin -}; + if (_before && isFunction(_before)) { + _before.apply(this, arguments); + } -/* - TraceKit - Cross brower stack traces + // Recursively wrap all of a function's arguments that are + // functions themselves. + while (i--) args[i] = deep ? self.wrap(options, arguments[i]) : arguments[i]; - This was originally forked from github.com/occ/TraceKit, but has since been - largely re-written and is now maintained as part of raven-js. Tests for - this are in test/vendor. + try { + // Attempt to invoke user-land function + // NOTE: If you are a Sentry user, and you are seeing this stack frame, it + // means Raven caught an error invoking your application code. This is + // expected behavior and NOT indicative of a bug with Raven.js. + return func.apply(this, args); + } catch (e) { + self._ignoreNextOnError(); + self.captureException(e, options); + throw e; + } + } - MIT license -*/ + // copy over properties of the old function + for (var property in func) { + if (hasKey(func, property)) { + wrapped[property] = func[property]; + } + } + wrapped.prototype = func.prototype; -var TraceKit = { - collectWindowErrors: true, - debug: false -}; // This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) + func.__raven_wrapper__ = wrapped; + // Signal that this function has been wrapped/filled already + // for both debugging and to prevent it to being wrapped/filled twice + wrapped.__raven__ = true; + wrapped.__orig__ = func; -var _window$2 = typeof window !== 'undefined' ? window : typeof commonjsGlobal !== 'undefined' ? commonjsGlobal : typeof self !== 'undefined' ? self : {}; // global reference to slice + return wrapped; + }, + /** + * Uninstalls the global error handler. + * + * @return {Raven} + */ + uninstall: function() { + TraceKit.report.uninstall(); -var _slice = [].slice; -var UNKNOWN_FUNCTION = '?'; // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error#Error_types + this._detachPromiseRejectionHandler(); + this._unpatchFunctionToString(); + this._restoreBuiltIns(); + this._restoreConsole(); -var ERROR_TYPES_RE = /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/; + Error.stackTraceLimit = this._originalErrorStackTraceLimit; + this._isRavenInstalled = false; -function getLocationHref() { - if (typeof document === 'undefined' || document.location == null) return ''; - return document.location.href; -} -/** - * TraceKit.report: cross-browser processing of unhandled exceptions - * - * Syntax: - * TraceKit.report.subscribe(function(stackInfo) { ... }) - * TraceKit.report.unsubscribe(function(stackInfo) { ... }) - * TraceKit.report(exception) - * try { ...code... } catch(ex) { TraceKit.report(ex); } - * - * Supports: - * - Firefox: full stack trace with line numbers, plus column number - * on top frame; column number is not guaranteed - * - Opera: full stack trace with line and column numbers - * - Chrome: full stack trace with line and column numbers - * - Safari: line and column number for the top frame only; some frames - * may be missing, and column number is not guaranteed - * - IE: line and column number for the top frame only; some frames - * may be missing, and column number is not guaranteed - * - * In theory, TraceKit should work on all of the following versions: - * - IE5.5+ (only 8.0 tested) - * - Firefox 0.9+ (only 3.5+ tested) - * - Opera 7+ (only 10.50 tested; versions 9 and earlier may require - * Exceptions Have Stacktrace to be enabled in opera:config) - * - Safari 3+ (only 4+ tested) - * - Chrome 1+ (only 5+ tested) - * - Konqueror 3.5+ (untested) - * - * Requires TraceKit.computeStackTrace. - * - * Tries to catch all unhandled exceptions and report them to the - * subscribed handlers. Please note that TraceKit.report will rethrow the - * exception. This is REQUIRED in order to get a useful stack trace in IE. - * If the exception does not reach the top of the browser, you will only - * get a stack trace from the point where TraceKit.report was called. - * - * Handlers receive a stackInfo object as described in the - * TraceKit.computeStackTrace docs. - */ + return this; + }, + /** + * Callback used for `unhandledrejection` event + * + * @param {PromiseRejectionEvent} event An object containing + * promise: the Promise that was rejected + * reason: the value with which the Promise was rejected + * @return void + */ + _promiseRejectionHandler: function(event) { + this._logDebug('debug', 'Raven caught unhandled promise rejection:', event); + this.captureException(event.reason, { + extra: { + unhandledPromiseRejection: true + } + }); + }, -TraceKit.report = function reportModuleWrapper() { - var handlers = [], - lastArgs = null, - lastException = null, - lastExceptionStack = null; /** - * Add a crash handler. - * @param {Function} handler - */ + * Installs the global promise rejection handler. + * + * @return {raven} + */ + _attachPromiseRejectionHandler: function() { + this._promiseRejectionHandler = this._promiseRejectionHandler.bind(this); + _window.addEventListener && + _window.addEventListener('unhandledrejection', this._promiseRejectionHandler); + return this; + }, - function subscribe(handler) { - installGlobalHandler(); - handlers.push(handler); - } /** - * Remove a crash handler. - * @param {Function} handler - */ + * Uninstalls the global promise rejection handler. + * + * @return {raven} + */ + _detachPromiseRejectionHandler: function() { + _window.removeEventListener && + _window.removeEventListener('unhandledrejection', this._promiseRejectionHandler); + return this; + }, + + /** + * Manually capture an exception and send it over to Sentry + * + * @param {error} ex An exception to be logged + * @param {object} options A specific set of options for this error [optional] + * @return {Raven} + */ + captureException: function(ex, options) { + options = objectMerge({trimHeadFrames: 0}, options ? options : {}); + + if (isErrorEvent(ex) && ex.error) { + // If it is an ErrorEvent with `error` property, extract it to get actual Error + ex = ex.error; + } else if (isError(ex)) { + // we have a real Error object + ex = ex; + } else if (isPlainObject(ex)) { + // If it is plain Object, serialize it manually and extract options + // This will allow us to group events based on top-level keys + // which is much better than creating new group when any key/value change + options = this._getCaptureExceptionOptionsFromPlainObject(options, ex); + ex = new Error(options.message); + } else { + // If none of previous checks were valid, then it means that + // it's not a plain Object + // it's not a valid ErrorEvent (one with an error property) + // it's not an Error + // So bail out and capture it as a simple message: + return this.captureMessage( + ex, + objectMerge(options, { + stacktrace: true, // if we fall back to captureMessage, default to attempting a new trace + trimHeadFrames: options.trimHeadFrames + 1 + }) + ); + } + // Store the raw exception object for potential debugging and introspection + this._lastCapturedException = ex; - function unsubscribe(handler) { - for (var i = handlers.length - 1; i >= 0; --i) { - if (handlers[i] === handler) { - handlers.splice(i, 1); + // TraceKit.report will re-raise any exception passed to it, + // which means you have to wrap it in try/catch. Instead, we + // can wrap it here and only re-raise if TraceKit.report + // raises an exception different from the one we asked to + // report on. + try { + var stack = TraceKit.computeStackTrace(ex); + this._handleStackInfo(stack, options); + } catch (ex1) { + if (ex !== ex1) { + throw ex1; } } - } - /** - * Remove all crash handlers. - */ + return this; + }, - function unsubscribeAll() { - uninstallGlobalHandler(); - handlers = []; - } - /** - * Dispatch stack information to all handlers. - * @param {Object.} stack - */ - + _getCaptureExceptionOptionsFromPlainObject: function(currentOptions, ex) { + var exKeys = Object.keys(ex).sort(); + var options = objectMerge(currentOptions, { + message: + 'Non-Error exception captured with keys: ' + serializeKeysForMessage(exKeys), + fingerprint: [md5(exKeys)], + extra: currentOptions.extra || {} + }); + options.extra.__serialized__ = serializeException(ex); - function notifyHandlers(stack, isWindowError) { - var exception = null; + return options; + }, - if (isWindowError && !TraceKit.collectWindowErrors) { + /* + * Manually send a message to Sentry + * + * @param {string} msg A plain message to be captured in Sentry + * @param {object} options A specific set of options for this message [optional] + * @return {Raven} + */ + captureMessage: function(msg, options) { + // config() automagically converts ignoreErrors from a list to a RegExp so we need to test for an + // early call; we'll error on the side of logging anything called before configuration since it's + // probably something you should see: + if ( + !!this._globalOptions.ignoreErrors.test && + this._globalOptions.ignoreErrors.test(msg) + ) { return; } - for (var i in handlers) { - if (handlers.hasOwnProperty(i)) { - try { - handlers[i].apply(null, [stack].concat(_slice.call(arguments, 2))); - } catch (inner) { - exception = inner; - } - } - } + options = options || {}; + msg = msg + ''; // Make sure it's actually a string - if (exception) { - throw exception; + var data = objectMerge( + { + message: msg + }, + options + ); + + var ex; + // Generate a "synthetic" stack trace from this point. + // NOTE: If you are a Sentry user, and you are seeing this stack frame, it is NOT indicative + // of a bug with Raven.js. Sentry generates synthetic traces either by configuration, + // or if it catches a thrown object without a "stack" property. + try { + throw new Error(msg); + } catch (ex1) { + ex = ex1; } - } - var _oldOnerrorHandler, _onErrorHandlerInstalled; - /** - * Ensures all global unhandled exceptions are recorded. - * Supported by Gecko and IE. - * @param {string} msg Error message. - * @param {string} url URL of script that generated the exception. - * @param {(number|string)} lineNo The line number at which the error - * occurred. - * @param {?(number|string)} colNo The column number at which the error - * occurred. - * @param {?Error} ex The actual Error object. - */ + // null exception name so `Error` isn't prefixed to msg + ex.name = null; + var stack = TraceKit.computeStackTrace(ex); + // stack[0] is `throw new Error(msg)` call itself, we are interested in the frame that was just before that, stack[1] + var initialCall = isArray(stack.stack) && stack.stack[1]; - function traceKitWindowOnError(msg, url, lineNo, colNo, ex) { - var stack = null; // If 'ex' is ErrorEvent, get real Error from inside + // if stack[1] is `Raven.captureException`, it means that someone passed a string to it and we redirected that call + // to be handled by `captureMessage`, thus `initialCall` is the 3rd one, not 2nd + // initialCall => captureException(string) => captureMessage(string) + if (initialCall && initialCall.func === 'Raven.captureException') { + initialCall = stack.stack[2]; + } - var exception = utils.isErrorEvent(ex) ? ex.error : ex; // If 'msg' is ErrorEvent, get real message from inside + var fileurl = (initialCall && initialCall.url) || ''; - var message = utils.isErrorEvent(msg) ? msg.message : msg; + if ( + !!this._globalOptions.ignoreUrls.test && + this._globalOptions.ignoreUrls.test(fileurl) + ) { + return; + } - if (lastExceptionStack) { - TraceKit.computeStackTrace.augmentStackTraceWithInitialElement(lastExceptionStack, url, lineNo, message); - processLastException(); - } else if (exception && utils.isError(exception)) { - // non-string `exception` arg; attempt to extract stack trace - // New chrome and blink send along a real error object - // Let's just report that like a normal error. - // See: https://mikewest.org/2013/08/debugging-runtime-errors-with-window-onerror - stack = TraceKit.computeStackTrace(exception); - notifyHandlers(stack, true); - } else { - var location = { - url: url, - line: lineNo, - column: colNo - }; - var name = undefined; - var groups; + if ( + !!this._globalOptions.whitelistUrls.test && + !this._globalOptions.whitelistUrls.test(fileurl) + ) { + return; + } - if ({}.toString.call(message) === '[object String]') { - var groups = message.match(ERROR_TYPES_RE); + if (this._globalOptions.stacktrace || (options && options.stacktrace)) { + // fingerprint on msg, not stack trace (legacy behavior, could be revisited) + data.fingerprint = data.fingerprint == null ? msg : data.fingerprint; - if (groups) { - name = groups[1]; - message = groups[2]; - } - } + options = objectMerge( + { + trimHeadFrames: 0 + }, + options + ); + // Since we know this is a synthetic trace, the top frame (this function call) + // MUST be from Raven.js, so mark it for trimming + // We add to the trim counter so that callers can choose to trim extra frames, such + // as utility functions. + options.trimHeadFrames += 1; - location.func = UNKNOWN_FUNCTION; - stack = { - name: name, - message: message, - url: getLocationHref(), - stack: [location] + var frames = this._prepareFrames(stack, options); + data.stacktrace = { + // Sentry expects frames oldest to newest + frames: frames.reverse() }; - notifyHandlers(stack, true); } - if (_oldOnerrorHandler) { - return _oldOnerrorHandler.apply(this, arguments); + // Make sure that fingerprint is always wrapped in an array + if (data.fingerprint) { + data.fingerprint = isArray(data.fingerprint) + ? data.fingerprint + : [data.fingerprint]; } - return false; - } + // Fire away! + this._send(data); - function installGlobalHandler() { - if (_onErrorHandlerInstalled) { - return; + return this; + }, + + captureBreadcrumb: function(obj) { + var crumb = objectMerge( + { + timestamp: now() / 1000 + }, + obj + ); + + if (isFunction(this._globalOptions.breadcrumbCallback)) { + var result = this._globalOptions.breadcrumbCallback(crumb); + + if (isObject(result) && !isEmptyObject(result)) { + crumb = result; + } else if (result === false) { + return this; + } } - _oldOnerrorHandler = _window$2.onerror; - _window$2.onerror = traceKitWindowOnError; - _onErrorHandlerInstalled = true; - } + this._breadcrumbs.push(crumb); + if (this._breadcrumbs.length > this._globalOptions.maxBreadcrumbs) { + this._breadcrumbs.shift(); + } + return this; + }, - function uninstallGlobalHandler() { - if (!_onErrorHandlerInstalled) { - return; + addPlugin: function(plugin /*arg1, arg2, ... argN*/) { + var pluginArgs = [].slice.call(arguments, 1); + + this._plugins.push([plugin, pluginArgs]); + if (this._isRavenInstalled) { + this._drainPlugins(); } - _window$2.onerror = _oldOnerrorHandler; - _onErrorHandlerInstalled = false; - _oldOnerrorHandler = undefined; - } + return this; + }, - function processLastException() { - var _lastExceptionStack = lastExceptionStack, - _lastArgs = lastArgs; - lastArgs = null; - lastExceptionStack = null; - lastException = null; - notifyHandlers.apply(null, [_lastExceptionStack, false].concat(_lastArgs)); - } - /** - * Reports an unhandled Error to TraceKit. - * @param {Error} ex - * @param {?boolean} rethrow If false, do not re-throw the exception. - * Only used for window.onerror to not cause an infinite loop of - * rethrowing. + /* + * Set/clear a user to be sent along with the payload. + * + * @param {object} user An object representing user data [optional] + * @return {Raven} */ + setUserContext: function(user) { + // Intentionally do not merge here since that's an unexpected behavior. + this._globalContext.user = user; + return this; + }, - function report(ex, rethrow) { - var args = _slice.call(arguments, 1); - - if (lastExceptionStack) { - if (lastException === ex) { - return; // already caught by an inner catch block, ignore - } else { - processLastException(); - } - } + /* + * Merge extra attributes to be sent along with the payload. + * + * @param {object} extra An object representing extra data [optional] + * @return {Raven} + */ + setExtraContext: function(extra) { + this._mergeContext('extra', extra); - var stack = TraceKit.computeStackTrace(ex); - lastExceptionStack = stack; - lastException = ex; - lastArgs = args; // If the stack trace is incomplete, wait for 2 seconds for - // slow slow IE to see if onerror occurs or not before reporting - // this exception; otherwise, we will end up with an incomplete - // stack trace + return this; + }, - setTimeout(function () { - if (lastException === ex) { - processLastException(); - } - }, stack.incomplete ? 2000 : 0); + /* + * Merge tags to be sent along with the payload. + * + * @param {object} tags An object representing tags [optional] + * @return {Raven} + */ + setTagsContext: function(tags) { + this._mergeContext('tags', tags); - if (rethrow !== false) { - throw ex; // re-throw to propagate to the top level (and cause window.onerror) - } - } + return this; + }, - report.subscribe = subscribe; - report.unsubscribe = unsubscribe; - report.uninstall = unsubscribeAll; - return report; -}(); -/** - * TraceKit.computeStackTrace: cross-browser stack traces in JavaScript - * - * Syntax: - * s = TraceKit.computeStackTrace(exception) // consider using TraceKit.report instead (see below) - * Returns: - * s.name - exception name - * s.message - exception message - * s.stack[i].url - JavaScript or HTML file URL - * s.stack[i].func - function name, or empty for anonymous functions (if guessing did not work) - * s.stack[i].args - arguments passed to the function, if known - * s.stack[i].line - line number, if known - * s.stack[i].column - column number, if known - * - * Supports: - * - Firefox: full stack trace with line numbers and unreliable column - * number on top frame - * - Opera 10: full stack trace with line and column numbers - * - Opera 9-: full stack trace with line numbers - * - Chrome: full stack trace with line and column numbers - * - Safari: line and column number for the topmost stacktrace element - * only - * - IE: no line numbers whatsoever - * - * Tries to guess names of anonymous functions by looking for assignments - * in the source code. In IE and Safari, we have to guess source file names - * by searching for function bodies inside all page scripts. This will not - * work for scripts that are loaded cross-domain. - * Here be dragons: some function names may be guessed incorrectly, and - * duplicate functions may be mismatched. - * - * TraceKit.computeStackTrace should only be used for tracing purposes. - * Logging of unhandled exceptions should be done with TraceKit.report, - * which builds on top of TraceKit.computeStackTrace and provides better - * IE support by utilizing the window.onerror event to retrieve information - * about the top of the stack. - * - * Note: In IE and Safari, no stack trace is recorded on the Error object, - * so computeStackTrace instead walks its *own* chain of callers. - * This means that: - * * in Safari, some methods may be missing from the stack trace; - * * in IE, the topmost function in the stack trace will always be the - * caller of computeStackTrace. - * - * This is okay for tracing (because you are likely to be calling - * computeStackTrace from the function you want to be the topmost element - * of the stack trace anyway), but not okay for logging unhandled - * exceptions (because your catch block will likely be far away from the - * inner function that actually caused the exception). - * - */ + /* + * Clear all of the context. + * + * @return {Raven} + */ + clearContext: function() { + this._globalContext = {}; + return this; + }, -TraceKit.computeStackTrace = function computeStackTraceWrapper() { - // Contents of Exception in various browsers. - // - // SAFARI: - // ex.message = Can't find variable: qq - // ex.line = 59 - // ex.sourceId = 580238192 - // ex.sourceURL = http://... - // ex.expressionBeginOffset = 96 - // ex.expressionCaretOffset = 98 - // ex.expressionEndOffset = 98 - // ex.name = ReferenceError - // - // FIREFOX: - // ex.message = qq is not defined - // ex.fileName = http://... - // ex.lineNumber = 59 - // ex.columnNumber = 69 - // ex.stack = ...stack trace... (see the example below) - // ex.name = ReferenceError - // - // CHROME: - // ex.message = qq is not defined - // ex.name = ReferenceError - // ex.type = not_defined - // ex.arguments = ['aa'] - // ex.stack = ...stack trace... - // - // INTERNET EXPLORER: - // ex.message = ... - // ex.name = ReferenceError - // - // OPERA: - // ex.message = ...message... (see the example below) - // ex.name = ReferenceError - // ex.opera#sourceloc = 11 (pretty much useless, duplicates the info in ex.message) - // ex.stacktrace = n/a; see 'opera:config#UserPrefs|Exceptions Have Stacktrace' + /* + * Get a copy of the current context. This cannot be mutated. + * + * @return {object} copy of context + */ + getContext: function() { + // lol javascript + return JSON.parse(stringify(this._globalContext)); + }, - /** - * Computes stack trace information from the stack property. - * Chrome and Gecko use this property. - * @param {Error} ex - * @return {?Object.} Stack trace information. + /* + * Set environment of application + * + * @param {string} environment Typically something like 'production'. + * @return {Raven} */ - function computeStackTraceFromStackProp(ex) { - if (typeof ex.stack === 'undefined' || !ex.stack) return; - var chrome = /^\s*at (.*?) ?\(((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i, - gecko = /^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|\[native).*?|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i, - winjs = /^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i, - // Used to additionally parse URL/line/column from eval frames - geckoEval = /(\S+) line (\d+)(?: > eval line \d+)* > eval/i, - chromeEval = /\((\S*)(?::(\d+))(?::(\d+))\)/, - lines = ex.stack.split('\n'), - stack = [], - submatch, - parts, - element, - reference = /^(.*) is undefined$/.exec(ex.message); + setEnvironment: function(environment) { + this._globalOptions.environment = environment; - for (var i = 0, j = lines.length; i < j; ++i) { - if (parts = chrome.exec(lines[i])) { - var isNative = parts[2] && parts[2].indexOf('native') === 0; // start of line + return this; + }, - var isEval = parts[2] && parts[2].indexOf('eval') === 0; // start of line + /* + * Set release version of application + * + * @param {string} release Typically something like a git SHA to identify version + * @return {Raven} + */ + setRelease: function(release) { + this._globalOptions.release = release; - if (isEval && (submatch = chromeEval.exec(parts[2]))) { - // throw out eval line/column and use top-most line/column number - parts[2] = submatch[1]; // url + return this; + }, - parts[3] = submatch[2]; // line + /* + * Set the dataCallback option + * + * @param {function} callback The callback to run which allows the + * data blob to be mutated before sending + * @return {Raven} + */ + setDataCallback: function(callback) { + var original = this._globalOptions.dataCallback; + this._globalOptions.dataCallback = keepOriginalCallback(original, callback); + return this; + }, - parts[4] = submatch[3]; // column - } + /* + * Set the breadcrumbCallback option + * + * @param {function} callback The callback to run which allows filtering + * or mutating breadcrumbs + * @return {Raven} + */ + setBreadcrumbCallback: function(callback) { + var original = this._globalOptions.breadcrumbCallback; + this._globalOptions.breadcrumbCallback = keepOriginalCallback(original, callback); + return this; + }, - element = { - url: !isNative ? parts[2] : null, - func: parts[1] || UNKNOWN_FUNCTION, - args: isNative ? [parts[2]] : [], - line: parts[3] ? +parts[3] : null, - column: parts[4] ? +parts[4] : null - }; - } else if (parts = winjs.exec(lines[i])) { - element = { - url: parts[2], - func: parts[1] || UNKNOWN_FUNCTION, - args: [], - line: +parts[3], - column: parts[4] ? +parts[4] : null - }; - } else if (parts = gecko.exec(lines[i])) { - var isEval = parts[3] && parts[3].indexOf(' > eval') > -1; + /* + * Set the shouldSendCallback option + * + * @param {function} callback The callback to run which allows + * introspecting the blob before sending + * @return {Raven} + */ + setShouldSendCallback: function(callback) { + var original = this._globalOptions.shouldSendCallback; + this._globalOptions.shouldSendCallback = keepOriginalCallback(original, callback); + return this; + }, - if (isEval && (submatch = geckoEval.exec(parts[3]))) { - // throw out eval line/column and use top-most line number - parts[3] = submatch[1]; - parts[4] = submatch[2]; - parts[5] = null; // no column when eval - } else if (i === 0 && !parts[5] && typeof ex.columnNumber !== 'undefined') { - // FireFox uses this awesome columnNumber property for its top frame - // Also note, Firefox's column number is 0-based and everything else expects 1-based, - // so adding 1 - // NOTE: this hack doesn't work if top-most frame is eval - stack[0].column = ex.columnNumber + 1; - } + /** + * Override the default HTTP transport mechanism that transmits data + * to the Sentry server. + * + * @param {function} transport Function invoked instead of the default + * `makeRequest` handler. + * + * @return {Raven} + */ + setTransport: function(transport) { + this._globalOptions.transport = transport; - element = { - url: parts[3], - func: parts[1] || UNKNOWN_FUNCTION, - args: parts[2] ? parts[2].split(',') : [], - line: parts[4] ? +parts[4] : null, - column: parts[5] ? +parts[5] : null - }; - } else { - continue; - } + return this; + }, - if (!element.func && element.line) { - element.func = UNKNOWN_FUNCTION; + /* + * Get the latest raw exception that was captured by Raven. + * + * @return {error} + */ + lastException: function() { + return this._lastCapturedException; + }, + + /* + * Get the last event id + * + * @return {string} + */ + lastEventId: function() { + return this._lastEventId; + }, + + /* + * Determine if Raven is setup and ready to go. + * + * @return {boolean} + */ + isSetup: function() { + if (!this._hasJSON) return false; // needs JSON support + if (!this._globalServer) { + if (!this.ravenNotConfiguredError) { + this.ravenNotConfiguredError = true; + this._logDebug('error', 'Error: Raven has not been configured.'); } + return false; + } + return true; + }, - stack.push(element); + afterLoad: function() { + // TODO: remove window dependence? + + // Attempt to initialize Raven on load + var RavenConfig = _window.RavenConfig; + if (RavenConfig) { + this.config(RavenConfig.dsn, RavenConfig.config).install(); } + }, - if (!stack.length) { - return null; + showReportDialog: function(options) { + if ( + !_document // doesn't work without a document (React native) + ) + return; + + options = options || {}; + + var lastEventId = options.eventId || this.lastEventId(); + if (!lastEventId) { + throw new RavenConfigError('Missing eventId'); } - return { - name: ex.name, - message: ex.message, - url: getLocationHref(), - stack: stack - }; - } - /** - * Adds information about the first frame to incomplete stack traces. - * Safari and IE require this to get complete data on the first frame. - * @param {Object.} stackInfo Stack trace information from - * one of the compute* methods. - * @param {string} url The URL of the script that caused an error. - * @param {(number|string)} lineNo The line number of the script that - * caused an error. - * @param {string=} message The error generated by the browser, which - * hopefully contains the name of the object that caused the error. - * @return {boolean} Whether or not the stack information was - * augmented. - */ + var dsn = options.dsn || this._dsn; + if (!dsn) { + throw new RavenConfigError('Missing DSN'); + } + var encode = encodeURIComponent; + var qs = ''; + qs += '?eventId=' + encode(lastEventId); + qs += '&dsn=' + encode(dsn); - function augmentStackTraceWithInitialElement(stackInfo, url, lineNo, message) { - var initial = { - url: url, - line: lineNo - }; + var user = options.user || this._globalContext.user; + if (user) { + if (user.name) qs += '&name=' + encode(user.name); + if (user.email) qs += '&email=' + encode(user.email); + } - if (initial.url && initial.line) { - stackInfo.incomplete = false; + var globalServer = this._getGlobalServer(this._parseDSN(dsn)); - if (!initial.func) { - initial.func = UNKNOWN_FUNCTION; - } + var script = _document.createElement('script'); + script.async = true; + script.src = globalServer + '/api/embed/error-page/' + qs; + (_document.head || _document.body).appendChild(script); + }, - if (stackInfo.stack.length > 0) { - if (stackInfo.stack[0].url === initial.url) { - if (stackInfo.stack[0].line === initial.line) { - return false; // already in stack trace - } else if (!stackInfo.stack[0].line && stackInfo.stack[0].func === initial.func) { - stackInfo.stack[0].line = initial.line; - return false; - } - } + /**** Private functions ****/ + _ignoreNextOnError: function() { + var self = this; + this._ignoreOnError += 1; + setTimeout(function() { + // onerror should trigger before setTimeout + self._ignoreOnError -= 1; + }); + }, + + _triggerEvent: function(eventType, options) { + // NOTE: `event` is a native browser thing, so let's avoid conflicting wiht it + var evt, key; + + if (!this._hasDocument) return; + + options = options || {}; + + eventType = 'raven' + eventType.substr(0, 1).toUpperCase() + eventType.substr(1); + + if (_document.createEvent) { + evt = _document.createEvent('HTMLEvents'); + evt.initEvent(eventType, true, true); + } else { + evt = _document.createEventObject(); + evt.eventType = eventType; + } + + for (key in options) + if (hasKey(options, key)) { + evt[key] = options[key]; } - stackInfo.stack.unshift(initial); - stackInfo.partial = true; - return true; + if (_document.createEvent) { + // IE9 if standards + _document.dispatchEvent(evt); } else { - stackInfo.incomplete = true; + // IE8 regardless of Quirks or Standards + // IE9 if quirks + try { + _document.fireEvent('on' + evt.eventType.toLowerCase(), evt); + } catch (e) { + // Do nothing + } } + }, - return false; - } /** - * Computes stack trace information by walking the arguments.caller - * chain at the time the exception occurred. This will cause earlier - * frames to be missed but is the only way to get any stack trace in - * Safari and IE. The top frame is restored by - * {@link augmentStackTraceWithInitialElement}. - * @param {Error} ex - * @return {?Object.} Stack trace information. - */ + * Wraps addEventListener to capture UI breadcrumbs + * @param evtName the event name (e.g. "click") + * @returns {Function} + * @private + */ + _breadcrumbEventHandler: function(evtName) { + var self = this; + return function(evt) { + // reset keypress timeout; e.g. triggering a 'click' after + // a 'keypress' will reset the keypress debounce so that a new + // set of keypresses can be recorded + self._keypressTimeout = null; + // It's possible this handler might trigger multiple times for the same + // event (e.g. event propagation through node ancestors). Ignore if we've + // already captured the event. + if (self._lastCapturedEvent === evt) return; - function computeStackTraceByWalkingCallerChain(ex, depth) { - var functionName = /function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i, - stack = [], - funcs = {}, - recursion = false, - parts, - item; + self._lastCapturedEvent = evt; - for (var curr = computeStackTraceByWalkingCallerChain.caller; curr && !recursion; curr = curr.caller) { - if (curr === computeStackTrace || curr === TraceKit.report) { - // console.log('skipping internal function'); - continue; + // try/catch both: + // - accessing evt.target (see getsentry/raven-js#838, #768) + // - `htmlTreeAsString` because it's complex, and just accessing the DOM incorrectly + // can throw an exception in some circumstances. + var target; + try { + target = htmlTreeAsString(evt.target); + } catch (e) { + target = ''; } - item = { - url: null, - func: UNKNOWN_FUNCTION, - line: null, - column: null - }; - - if (curr.name) { - item.func = curr.name; - } else if (parts = functionName.exec(curr.toString())) { - item.func = parts[1]; - } + self.captureBreadcrumb({ + category: 'ui.' + evtName, // e.g. ui.click, ui.input + message: target + }); + }; + }, - if (typeof item.func === 'undefined') { - try { - item.func = parts.input.substring(0, parts.input.indexOf('{')); - } catch (e) {} - } + /** + * Wraps addEventListener to capture keypress UI events + * @returns {Function} + * @private + */ + _keypressEventHandler: function() { + var self = this, + debounceDuration = 1000; // milliseconds - if (funcs['' + curr]) { - recursion = true; - } else { - funcs['' + curr] = true; + // TODO: if somehow user switches keypress target before + // debounce timeout is triggered, we will only capture + // a single breadcrumb from the FIRST target (acceptable?) + return function(evt) { + var target; + try { + target = evt.target; + } catch (e) { + // just accessing event properties can throw an exception in some rare circumstances + // see: https://github.com/getsentry/raven-js/issues/838 + return; } + var tagName = target && target.tagName; - stack.push(item); - } - - if (depth) { - // console.log('depth is ' + depth); - // console.log('stack is ' + stack.length); - stack.splice(0, depth); - } + // only consider keypress events on actual input elements + // this will disregard keypresses targeting body (e.g. tabbing + // through elements, hotkeys, etc) + if ( + !tagName || + (tagName !== 'INPUT' && tagName !== 'TEXTAREA' && !target.isContentEditable) + ) + return; - var result = { - name: ex.name, - message: ex.message, - url: getLocationHref(), - stack: stack + // record first keypress in a series, but ignore subsequent + // keypresses until debounce clears + var timeout = self._keypressTimeout; + if (!timeout) { + self._breadcrumbEventHandler('input')(evt); + } + clearTimeout(timeout); + self._keypressTimeout = setTimeout(function() { + self._keypressTimeout = null; + }, debounceDuration); }; - augmentStackTraceWithInitialElement(result, ex.sourceURL || ex.fileName, ex.line || ex.lineNumber, ex.message || ex.description); - return result; - } - /** - * Computes a stack trace for an exception. - * @param {Error} ex - * @param {(string|number)=} depth - */ + }, + /** + * Captures a breadcrumb of type "navigation", normalizing input URLs + * @param to the originating URL + * @param from the target URL + * @private + */ + _captureUrlChange: function(from, to) { + var parsedLoc = parseUrl(this._location.href); + var parsedTo = parseUrl(to); + var parsedFrom = parseUrl(from); - function computeStackTrace(ex, depth) { - var stack = null; - depth = depth == null ? 0 : +depth; + // because onpopstate only tells you the "new" (to) value of location.href, and + // not the previous (from) value, we need to track the value of the current URL + // state ourselves + this._lastHref = to; - try { - stack = computeStackTraceFromStackProp(ex); + // Use only the path component of the URL if the URL matches the current + // document (almost all the time when using pushState) + if (parsedLoc.protocol === parsedTo.protocol && parsedLoc.host === parsedTo.host) + to = parsedTo.relative; + if (parsedLoc.protocol === parsedFrom.protocol && parsedLoc.host === parsedFrom.host) + from = parsedFrom.relative; - if (stack) { - return stack; + this.captureBreadcrumb({ + category: 'navigation', + data: { + to: to, + from: from } - } catch (e) { - if (TraceKit.debug) { - throw e; + }); + }, + + _patchFunctionToString: function() { + var self = this; + self._originalFunctionToString = Function.prototype.toString; + // eslint-disable-next-line no-extend-native + Function.prototype.toString = function() { + if (typeof this === 'function' && this.__raven__) { + return self._originalFunctionToString.apply(this.__orig__, arguments); } + return self._originalFunctionToString.apply(this, arguments); + }; + }, + + _unpatchFunctionToString: function() { + if (this._originalFunctionToString) { + // eslint-disable-next-line no-extend-native + Function.prototype.toString = this._originalFunctionToString; } + }, - try { - stack = computeStackTraceByWalkingCallerChain(ex, depth + 1); + /** + * Wrap timer functions and event targets to catch errors and provide + * better metadata. + */ + _instrumentTryCatch: function() { + var self = this; + + var wrappedBuiltIns = self._wrappedBuiltIns; + + function wrapTimeFn(orig) { + return function(fn, t) { + // preserve arity + // Make a copy of the arguments to prevent deoptimization + // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments + var args = new Array(arguments.length); + for (var i = 0; i < args.length; ++i) { + args[i] = arguments[i]; + } + var originalCallback = args[0]; + if (isFunction(originalCallback)) { + args[0] = self.wrap(originalCallback); + } - if (stack) { - return stack; - } - } catch (e) { - if (TraceKit.debug) { - throw e; - } + // IE < 9 doesn't support .call/.apply on setInterval/setTimeout, but it + // also supports only two arguments and doesn't care what this is, so we + // can just call the original function directly. + if (orig.apply) { + return orig.apply(this, args); + } else { + return orig(args[0], args[1]); + } + }; } - return { - name: ex.name, - message: ex.message, - url: getLocationHref() - }; - } + var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; - computeStackTrace.augmentStackTraceWithInitialElement = augmentStackTraceWithInitialElement; - computeStackTrace.computeStackTraceFromStackProp = computeStackTraceFromStackProp; - return computeStackTrace; -}(); + function wrapEventTarget(global) { + var proto = _window[global] && _window[global].prototype; + if (proto && proto.hasOwnProperty && proto.hasOwnProperty('addEventListener')) { + fill( + proto, + 'addEventListener', + function(orig) { + return function(evtName, fn, capture, secure) { + // preserve arity + try { + if (fn && fn.handleEvent) { + fn.handleEvent = self.wrap(fn.handleEvent); + } + } catch (err) { + // can sometimes get 'Permission denied to access property "handle Event' + } -var tracekit = TraceKit; + // More breadcrumb DOM capture ... done here and not in `_instrumentBreadcrumbs` + // so that we don't have more than one wrapper function + var before, clickHandler, keypressHandler; + + if ( + autoBreadcrumbs && + autoBreadcrumbs.dom && + (global === 'EventTarget' || global === 'Node') + ) { + // NOTE: generating multiple handlers per addEventListener invocation, should + // revisit and verify we can just use one (almost certainly) + clickHandler = self._breadcrumbEventHandler('click'); + keypressHandler = self._keypressEventHandler(); + before = function(evt) { + // need to intercept every DOM event in `before` argument, in case that + // same wrapped method is re-used for different events (e.g. mousemove THEN click) + // see #724 + if (!evt) return; + + var eventType; + try { + eventType = evt.type; + } catch (e) { + // just accessing event properties can throw an exception in some rare circumstances + // see: https://github.com/getsentry/raven-js/issues/838 + return; + } + if (eventType === 'click') return clickHandler(evt); + else if (eventType === 'keypress') return keypressHandler(evt); + }; + } + return orig.call( + this, + evtName, + self.wrap(fn, undefined, before), + capture, + secure + ); + }; + }, + wrappedBuiltIns + ); + fill( + proto, + 'removeEventListener', + function(orig) { + return function(evt, fn, capture, secure) { + try { + fn = fn && (fn.__raven_wrapper__ ? fn.__raven_wrapper__ : fn); + } catch (e) { + // ignore, accessing __raven_wrapper__ will throw in some Selenium environments + } + return orig.call(this, evt, fn, capture, secure); + }; + }, + wrappedBuiltIns + ); + } + } -var stringify_1 = createCommonjsModule(function (module, exports) { - /* - json-stringify-safe - Like JSON.stringify, but doesn't throw on circular references. - - Originally forked from https://github.com/isaacs/json-stringify-safe - version 5.0.1 on 3/8/2017 and modified to handle Errors serialization - and IE8 compatibility. Tests for this are in test/vendor. - - ISC license: https://github.com/isaacs/json-stringify-safe/blob/master/LICENSE - */ - exports = module.exports = stringify; - exports.getSerialize = serializer; - - function indexOf(haystack, needle) { - for (var i = 0; i < haystack.length; ++i) { - if (haystack[i] === needle) return i; - } - - return -1; - } + fill(_window, 'setTimeout', wrapTimeFn, wrappedBuiltIns); + fill(_window, 'setInterval', wrapTimeFn, wrappedBuiltIns); + if (_window.requestAnimationFrame) { + fill( + _window, + 'requestAnimationFrame', + function(orig) { + return function(cb) { + return orig(self.wrap(cb)); + }; + }, + wrappedBuiltIns + ); + } - function stringify(obj, replacer, spaces, cycleReplacer) { - return JSON.stringify(obj, serializer(replacer, cycleReplacer), spaces); - } // https://github.com/ftlabs/js-abbreviate/blob/fa709e5f139e7770a71827b1893f22418097fbda/index.js#L95-L106 + // event targets borrowed from bugsnag-js: + // https://github.com/bugsnag/bugsnag-js/blob/master/src/bugsnag.js#L666 + var eventTargets = [ + 'EventTarget', + 'Window', + 'Node', + 'ApplicationCache', + 'AudioTrackList', + 'ChannelMergerNode', + 'CryptoOperation', + 'EventSource', + 'FileReader', + 'HTMLUnknownElement', + 'IDBDatabase', + 'IDBRequest', + 'IDBTransaction', + 'KeyOperation', + 'MediaController', + 'MessagePort', + 'ModalWindow', + 'Notification', + 'SVGElementInstance', + 'Screen', + 'TextTrack', + 'TextTrackCue', + 'TextTrackList', + 'WebSocket', + 'WebSocketWorker', + 'Worker', + 'XMLHttpRequest', + 'XMLHttpRequestEventTarget', + 'XMLHttpRequestUpload' + ]; + for (var i = 0; i < eventTargets.length; i++) { + wrapEventTarget(eventTargets[i]); + } + }, + /** + * Instrument browser built-ins w/ breadcrumb capturing + * - XMLHttpRequests + * - DOM interactions (click/typing) + * - window.location changes + * - console + * + * Can be disabled or individually configured via the `autoBreadcrumbs` config option + */ + _instrumentBreadcrumbs: function() { + var self = this; + var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; - function stringifyError(value) { - var err = { - // These properties are implemented as magical getters and don't show up in for in - stack: value.stack, - message: value.message, - name: value.name - }; + var wrappedBuiltIns = self._wrappedBuiltIns; - for (var i in value) { - if (Object.prototype.hasOwnProperty.call(value, i)) { - err[i] = value[i]; + function wrapProp(prop, xhr) { + if (prop in xhr && isFunction(xhr[prop])) { + fill(xhr, prop, function(orig) { + return self.wrap(orig); + }); // intentionally don't track filled methods on XHR instances } } - return err; - } + if (autoBreadcrumbs.xhr && 'XMLHttpRequest' in _window) { + var xhrproto = _window.XMLHttpRequest && _window.XMLHttpRequest.prototype; + fill( + xhrproto, + 'open', + function(origOpen) { + return function(method, url) { + // preserve arity - function serializer(replacer, cycleReplacer) { - var stack = []; - var keys = []; + // if Sentry key appears in URL, don't capture + if (isString(url) && url.indexOf(self._globalKey) === -1) { + this.__raven_xhr = { + method: method, + url: url, + status_code: null + }; + } - if (cycleReplacer == null) { - cycleReplacer = function cycleReplacer(key, value) { - if (stack[0] === value) { - return '[Circular ~]'; - } + return origOpen.apply(this, arguments); + }; + }, + wrappedBuiltIns + ); + + fill( + xhrproto, + 'send', + function(origSend) { + return function() { + // preserve arity + var xhr = this; - return '[Circular ~.' + keys.slice(0, indexOf(stack, value)).join('.') + ']'; - }; - } + function onreadystatechangeHandler() { + if (xhr.__raven_xhr && xhr.readyState === 4) { + try { + // touching statusCode in some platforms throws + // an exception + xhr.__raven_xhr.status_code = xhr.status; + } catch (e) { + /* do nothing */ + } - return function (key, value) { - if (stack.length > 0) { - var thisPos = indexOf(stack, this); - ~thisPos ? stack.splice(thisPos + 1) : stack.push(this); - ~thisPos ? keys.splice(thisPos, Infinity, key) : keys.push(key); + self.captureBreadcrumb({ + type: 'http', + category: 'xhr', + data: xhr.__raven_xhr + }); + } + } - if (~indexOf(stack, value)) { - value = cycleReplacer.call(this, key, value); - } - } else { - stack.push(value); - } + var props = ['onload', 'onerror', 'onprogress']; + for (var j = 0; j < props.length; j++) { + wrapProp(props[j], xhr); + } - return replacer == null ? value instanceof Error ? stringifyError(value) : value : replacer.call(this, key, value); - }; - } -}); -var stringify_2 = stringify_1.getSerialize; + if ('onreadystatechange' in xhr && isFunction(xhr.onreadystatechange)) { + fill( + xhr, + 'onreadystatechange', + function(orig) { + return self.wrap(orig, undefined, onreadystatechangeHandler); + } /* intentionally don't track this instrumentation */ + ); + } else { + // if onreadystatechange wasn't actually set by the page on this xhr, we + // are free to set our own and capture the breadcrumb + xhr.onreadystatechange = onreadystatechangeHandler; + } -function RavenConfigError(message) { - this.name = 'RavenConfigError'; - this.message = message; -} + return origSend.apply(this, arguments); + }; + }, + wrappedBuiltIns + ); + } -RavenConfigError.prototype = new Error(); -RavenConfigError.prototype.constructor = RavenConfigError; -var configError = RavenConfigError; + if (autoBreadcrumbs.xhr && supportsFetch()) { + fill( + _window, + 'fetch', + function(origFetch) { + return function() { + // preserve arity + // Make a copy of the arguments to prevent deoptimization + // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments + var args = new Array(arguments.length); + for (var i = 0; i < args.length; ++i) { + args[i] = arguments[i]; + } -var wrapMethod = function wrapMethod(console, level, callback) { - var originalConsoleLevel = console[level]; - var originalConsole = console; + var fetchInput = args[0]; + var method = 'GET'; + var url; - if (!(level in console)) { - return; - } + if (typeof fetchInput === 'string') { + url = fetchInput; + } else if ('Request' in _window && fetchInput instanceof _window.Request) { + url = fetchInput.url; + if (fetchInput.method) { + method = fetchInput.method; + } + } else { + url = '' + fetchInput; + } - var sentryLevel = level === 'warn' ? 'warning' : level; + // if Sentry key appears in URL, don't capture, as it's our own request + if (url.indexOf(self._globalKey) !== -1) { + return origFetch.apply(this, args); + } - console[level] = function () { - var args = [].slice.call(arguments); - var msg = utils.safeJoin(args, ' '); - var data = { - level: sentryLevel, - logger: 'console', - extra: { - arguments: args - } - }; + if (args[1] && args[1].method) { + method = args[1].method; + } - if (level === 'assert') { - if (args[0] === false) { - // Default browsers message - msg = 'Assertion failed: ' + (utils.safeJoin(args.slice(1), ' ') || 'console.assert'); - data.extra.arguments = args.slice(1); - callback && callback(msg, data); - } - } else { - callback && callback(msg, data); - } // this fails for some browsers. :( + var fetchData = { + method: method, + url: url, + status_code: null + }; + return origFetch + .apply(this, args) + .then(function(response) { + fetchData.status_code = response.status; + + self.captureBreadcrumb({ + type: 'http', + category: 'fetch', + data: fetchData + }); + + return response; + }) + ['catch'](function(err) { + // if there is an error performing the request + self.captureBreadcrumb({ + type: 'http', + category: 'fetch', + data: fetchData, + level: 'error' + }); + + throw err; + }); + }; + }, + wrappedBuiltIns + ); + } - if (originalConsoleLevel) { - // IE9 doesn't allow calling apply on console functions directly - // See: https://stackoverflow.com/questions/5472938/does-ie9-support-console-log-and-is-it-a-real-function#answer-5473193 - Function.prototype.apply.call(originalConsoleLevel, originalConsole, args); + // Capture breadcrumbs from any click that is unhandled / bubbled up all the way + // to the document. Do this before we instrument addEventListener. + if (autoBreadcrumbs.dom && this._hasDocument) { + if (_document.addEventListener) { + _document.addEventListener('click', self._breadcrumbEventHandler('click'), false); + _document.addEventListener('keypress', self._keypressEventHandler(), false); + } else if (_document.attachEvent) { + // IE8 Compatibility + _document.attachEvent('onclick', self._breadcrumbEventHandler('click')); + _document.attachEvent('onkeypress', self._keypressEventHandler()); + } } - }; -}; -var console$1 = { - wrapMethod: wrapMethod -}; + // record navigation (URL) changes + // NOTE: in Chrome App environment, touching history.pushState, *even inside + // a try/catch block*, will cause Chrome to output an error to console.error + // borrowed from: https://github.com/angular/angular.js/pull/13945/files + var chrome = _window.chrome; + var isChromePackagedApp = chrome && chrome.app && chrome.app.runtime; + var hasPushAndReplaceState = + !isChromePackagedApp && + _window.history && + history.pushState && + history.replaceState; + if (autoBreadcrumbs.location && hasPushAndReplaceState) { + // TODO: remove onpopstate handler on uninstall() + var oldOnPopState = _window.onpopstate; + _window.onpopstate = function() { + var currentHref = self._location.href; + self._captureUrlChange(self._lastHref, currentHref); -/*global XDomainRequest:false */ + if (oldOnPopState) { + return oldOnPopState.apply(this, arguments); + } + }; -var isError = utils.isError; -var isObject = utils.isObject; -var isErrorEvent = utils.isErrorEvent; -var isUndefined = utils.isUndefined; -var isFunction = utils.isFunction; -var isString = utils.isString; -var isArray = utils.isArray; -var isEmptyObject = utils.isEmptyObject; -var each = utils.each; -var objectMerge = utils.objectMerge; -var truncate = utils.truncate; -var objectFrozen = utils.objectFrozen; -var hasKey = utils.hasKey; -var joinRegExp = utils.joinRegExp; -var urlencode = utils.urlencode; -var uuid4 = utils.uuid4; -var htmlTreeAsString = utils.htmlTreeAsString; -var isSameException = utils.isSameException; -var isSameStacktrace = utils.isSameStacktrace; -var parseUrl = utils.parseUrl; -var fill = utils.fill; -var supportsFetch = utils.supportsFetch; -var wrapConsoleMethod = console$1.wrapMethod; -var dsnKeys = 'source protocol user pass host port path'.split(' '); -var dsnPattern = /^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/; + var historyReplacementFunction = function(origHistFunction) { + // note history.pushState.length is 0; intentionally not declaring + // params to preserve 0 arity + return function(/* state, title, url */) { + var url = arguments.length > 2 ? arguments[2] : undefined; -function now() { - return +new Date(); -} // This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) + // url argument is optional + if (url) { + // coerce to string (this is what pushState does) + self._captureUrlChange(self._lastHref, url + ''); + } + return origHistFunction.apply(this, arguments); + }; + }; -var _window$1 = typeof window !== 'undefined' ? window : typeof commonjsGlobal !== 'undefined' ? commonjsGlobal : typeof self !== 'undefined' ? self : {}; + fill(history, 'pushState', historyReplacementFunction, wrappedBuiltIns); + fill(history, 'replaceState', historyReplacementFunction, wrappedBuiltIns); + } -var _document = _window$1.document; -var _navigator = _window$1.navigator; + if (autoBreadcrumbs.console && 'console' in _window && console.log) { + // console + var consoleMethodCallback = function(msg, data) { + self.captureBreadcrumb({ + message: msg, + level: data.level, + category: 'console' + }); + }; -function keepOriginalCallback(original, callback) { - return isFunction(callback) ? function (data) { - return callback(data, original); - } : callback; -} // First, check for JSON support -// If there is no JSON, we no-op the core features of Raven -// since JSON is required to encode the payload + each(['debug', 'info', 'warn', 'error', 'log'], function(_, level) { + wrapConsoleMethod(console, level, consoleMethodCallback); + }); + } + }, + _restoreBuiltIns: function() { + // restore any wrapped builtins + var builtin; + while (this._wrappedBuiltIns.length) { + builtin = this._wrappedBuiltIns.shift(); -function Raven$1() { - this._hasJSON = !!(_typeof(JSON) === 'object' && JSON.stringify); // Raven can run in contexts where there's no document (react-native) + var obj = builtin[0], + name = builtin[1], + orig = builtin[2]; - this._hasDocument = !isUndefined(_document); - this._hasNavigator = !isUndefined(_navigator); - this._lastCapturedException = null; - this._lastData = null; - this._lastEventId = null; - this._globalServer = null; - this._globalKey = null; - this._globalProject = null; - this._globalContext = {}; - this._globalOptions = { - // SENTRY_RELEASE can be injected by https://github.com/getsentry/sentry-webpack-plugin - release: _window$1.SENTRY_RELEASE && _window$1.SENTRY_RELEASE.id, - logger: 'javascript', - ignoreErrors: [], - ignoreUrls: [], - whitelistUrls: [], - includePaths: [], - headers: null, - collectWindowErrors: true, - maxMessageLength: 0, - // By default, truncates URL values to 250 chars - maxUrlLength: 250, - stackTraceLimit: 50, - autoBreadcrumbs: true, - instrument: true, - sampleRate: 1 - }; - this._fetchDefaults = { - method: 'POST', - keepalive: true, - referrerPolicy: 'origin' - }; - this._ignoreOnError = 0; - this._isRavenInstalled = false; - this._originalErrorStackTraceLimit = Error.stackTraceLimit; // capture references to window.console *and* all its methods first - // before the console plugin has a chance to monkey patch + obj[name] = orig; + } + }, - this._originalConsole = _window$1.console || {}; - this._originalConsoleMethods = {}; - this._plugins = []; - this._startTime = now(); - this._wrappedBuiltIns = []; - this._breadcrumbs = []; - this._lastCapturedEvent = null; - this._keypressTimeout; - this._location = _window$1.location; - this._lastHref = this._location && this._location.href; + _restoreConsole: function() { + // eslint-disable-next-line guard-for-in + for (var method in this._originalConsoleMethods) { + this._originalConsole[method] = this._originalConsoleMethods[method]; + } + }, - this._resetBackoff(); // eslint-disable-next-line guard-for-in + _drainPlugins: function() { + var self = this; + // FIX ME TODO + each(this._plugins, function(_, plugin) { + var installer = plugin[0]; + var args = plugin[1]; + installer.apply(self, [self].concat(args)); + }); + }, - for (var method in this._originalConsole) { - this._originalConsoleMethods[method] = this._originalConsole[method]; - } -} -/* - * The core Raven singleton - * - * @this {Raven} - */ + _parseDSN: function(str) { + var m = dsnPattern.exec(str), + dsn = {}, + i = 7; + try { + while (i--) dsn[dsnKeys[i]] = m[i] || ''; + } catch (e) { + throw new RavenConfigError('Invalid DSN: ' + str); + } -Raven$1.prototype = { - // Hardcode version string so that raven source can be loaded directly via - // webpack (using a build step causes webpack #1617). Grunt verifies that - // this value matches package.json during build. - // See: https://github.com/getsentry/raven-js/issues/465 - VERSION: '3.22.2', - debug: false, - TraceKit: tracekit, - // alias to TraceKit + if (dsn.pass && !this._globalOptions.allowSecretKey) { + throw new RavenConfigError( + 'Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key' + ); + } - /* - * Configure Raven with a DSN and extra options - * - * @param {string} dsn The public Sentry DSN - * @param {object} options Set of global options [optional] - * @return {Raven} - */ - config: function config(dsn, options) { - var self = this; + return dsn; + }, - if (self._globalServer) { - this._logDebug('error', 'Error: Raven has already been configured'); + _getGlobalServer: function(uri) { + // assemble the endpoint from the uri pieces + var globalServer = '//' + uri.host + (uri.port ? ':' + uri.port : ''); - return self; + if (uri.protocol) { + globalServer = uri.protocol + ':' + globalServer; } + return globalServer; + }, - if (!dsn) return self; - var globalOptions = self._globalOptions; // merge in options - - if (options) { - each(options, function (key, value) { - // tags and extra are special and need to be put into context - if (key === 'tags' || key === 'extra' || key === 'user') { - self._globalContext[key] = value; - } else { - globalOptions[key] = value; - } - }); + _handleOnErrorStackInfo: function() { + // if we are intentionally ignoring errors via onerror, bail out + if (!this._ignoreOnError) { + this._handleStackInfo.apply(this, arguments); } + }, - self.setDSN(dsn); // "Script error." is hard coded into browsers for errors that it can't read. - // this is the result of a script being pulled in from an external domain and CORS. + _handleStackInfo: function(stackInfo, options) { + var frames = this._prepareFrames(stackInfo, options); - globalOptions.ignoreErrors.push(/^Script error\.?$/); - globalOptions.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/); // join regexp rules into one big rule + this._triggerEvent('handle', { + stackInfo: stackInfo, + options: options + }); - globalOptions.ignoreErrors = joinRegExp(globalOptions.ignoreErrors); - globalOptions.ignoreUrls = globalOptions.ignoreUrls.length ? joinRegExp(globalOptions.ignoreUrls) : false; - globalOptions.whitelistUrls = globalOptions.whitelistUrls.length ? joinRegExp(globalOptions.whitelistUrls) : false; - globalOptions.includePaths = joinRegExp(globalOptions.includePaths); - globalOptions.maxBreadcrumbs = Math.max(0, Math.min(globalOptions.maxBreadcrumbs || 100, 100)); // default and hard limit is 100 + this._processException( + stackInfo.name, + stackInfo.message, + stackInfo.url, + stackInfo.lineno, + frames, + options + ); + }, - var autoBreadcrumbDefaults = { - xhr: true, - console: true, - dom: true, - location: true, - sentry: true - }; - var autoBreadcrumbs = globalOptions.autoBreadcrumbs; + _prepareFrames: function(stackInfo, options) { + var self = this; + var frames = []; + if (stackInfo.stack && stackInfo.stack.length) { + each(stackInfo.stack, function(i, stack) { + var frame = self._normalizeFrame(stack, stackInfo.url); + if (frame) { + frames.push(frame); + } + }); - if ({}.toString.call(autoBreadcrumbs) === '[object Object]') { - autoBreadcrumbs = objectMerge(autoBreadcrumbDefaults, autoBreadcrumbs); - } else if (autoBreadcrumbs !== false) { - autoBreadcrumbs = autoBreadcrumbDefaults; + // e.g. frames captured via captureMessage throw + if (options && options.trimHeadFrames) { + for (var j = 0; j < options.trimHeadFrames && j < frames.length; j++) { + frames[j].in_app = false; + } + } } + frames = frames.slice(0, this._globalOptions.stackTraceLimit); + return frames; + }, - globalOptions.autoBreadcrumbs = autoBreadcrumbs; - var instrumentDefaults = { - tryCatch: true + _normalizeFrame: function(frame, stackInfoUrl) { + // normalize the frames data + var normalized = { + filename: frame.url, + lineno: frame.line, + colno: frame.column, + function: frame.func || '?' }; - var instrument = globalOptions.instrument; - if ({}.toString.call(instrument) === '[object Object]') { - instrument = objectMerge(instrumentDefaults, instrument); - } else if (instrument !== false) { - instrument = instrumentDefaults; + // Case when we don't have any information about the error + // E.g. throwing a string or raw object, instead of an `Error` in Firefox + // Generating synthetic error doesn't add any value here + // + // We should probably somehow let a user know that they should fix their code + if (!frame.url) { + normalized.filename = stackInfoUrl; // fallback to whole stacks url from onerror handler } - globalOptions.instrument = instrument; - tracekit.collectWindowErrors = !!globalOptions.collectWindowErrors; // return for chaining + normalized.in_app = !// determine if an exception came from outside of our app + // first we check the global includePaths list. + ( + (!!this._globalOptions.includePaths.test && + !this._globalOptions.includePaths.test(normalized.filename)) || + // Now we check for fun, if the function name is Raven or TraceKit + /(Raven|TraceKit)\./.test(normalized['function']) || + // finally, we do a last ditch effort and check for raven.min.js + /raven\.(min\.)?js$/.test(normalized.filename) + ); - return self; + return normalized; }, - /* - * Installs a global window.onerror error handler - * to capture and report uncaught exceptions. - * At this point, install() is required to be called due - * to the way TraceKit is set up. - * - * @return {Raven} - */ - install: function install() { - var self = this; - - if (self.isSetup() && !self._isRavenInstalled) { - tracekit.report.subscribe(function () { - self._handleOnErrorStackInfo.apply(self, arguments); - }); - - self._patchFunctionToString(); - - if (self._globalOptions.instrument && self._globalOptions.instrument.tryCatch) { - self._instrumentTryCatch(); - } - - if (self._globalOptions.autoBreadcrumbs) self._instrumentBreadcrumbs(); // Install all of the plugins + _processException: function(type, message, fileurl, lineno, frames, options) { + var prefixedMessage = (type ? type + ': ' : '') + (message || ''); + if ( + !!this._globalOptions.ignoreErrors.test && + (this._globalOptions.ignoreErrors.test(message) || + this._globalOptions.ignoreErrors.test(prefixedMessage)) + ) { + return; + } - self._drainPlugins(); + var stacktrace; - self._isRavenInstalled = true; + if (frames && frames.length) { + fileurl = frames[0].filename || fileurl; + // Sentry expects frames oldest to newest + // and JS sends them as newest to oldest + frames.reverse(); + stacktrace = {frames: frames}; + } else if (fileurl) { + stacktrace = { + frames: [ + { + filename: fileurl, + lineno: lineno, + in_app: true + } + ] + }; } - Error.stackTraceLimit = self._globalOptions.stackTraceLimit; - return this; - }, + if ( + !!this._globalOptions.ignoreUrls.test && + this._globalOptions.ignoreUrls.test(fileurl) + ) { + return; + } - /* - * Set the DSN (can be called multiple time unlike config) - * - * @param {string} dsn The public Sentry DSN - */ - setDSN: function setDSN(dsn) { - var self = this, - uri = self._parseDSN(dsn), - lastSlash = uri.path.lastIndexOf('/'), - path = uri.path.substr(1, lastSlash); + if ( + !!this._globalOptions.whitelistUrls.test && + !this._globalOptions.whitelistUrls.test(fileurl) + ) { + return; + } - self._dsn = dsn; - self._globalKey = uri.user; - self._globalSecret = uri.pass && uri.pass.substr(1); - self._globalProject = uri.path.substr(lastSlash + 1); - self._globalServer = self._getGlobalServer(uri); - self._globalEndpoint = self._globalServer + '/' + path + 'api/' + self._globalProject + '/store/'; // Reset backoff state since we may be pointing at a - // new project/server + var data = objectMerge( + { + // sentry.interfaces.Exception + exception: { + values: [ + { + type: type, + value: message, + stacktrace: stacktrace + } + ] + }, + culprit: fileurl + }, + options + ); - this._resetBackoff(); + // Fire away! + this._send(data); }, - /* - * Wrap code within a context so Raven can capture errors - * reliably across domains that is executed immediately. - * - * @param {object} options A specific set of options for this context [optional] - * @param {function} func The callback to be immediately executed within the context - * @param {array} args An array of arguments to be called with the callback [optional] - */ - context: function context(options, func, args) { - if (isFunction(options)) { - args = func || []; - func = options; - options = undefined; + _trimPacket: function(data) { + // For now, we only want to truncate the two different messages + // but this could/should be expanded to just trim everything + var max = this._globalOptions.maxMessageLength; + if (data.message) { + data.message = truncate(data.message, max); + } + if (data.exception) { + var exception = data.exception.values[0]; + exception.value = truncate(exception.value, max); } - return this.wrap(options, func).apply(this, args); + var request = data.request; + if (request) { + if (request.url) { + request.url = truncate(request.url, this._globalOptions.maxUrlLength); + } + if (request.Referer) { + request.Referer = truncate(request.Referer, this._globalOptions.maxUrlLength); + } + } + + if (data.breadcrumbs && data.breadcrumbs.values) + this._trimBreadcrumbs(data.breadcrumbs); + + return data; }, - /* - * Wrap code within a context and returns back a new function to be executed - * - * @param {object} options A specific set of options for this context [optional] - * @param {function} func The function to be wrapped in a new context - * @param {function} func A function to call before the try/catch wrapper [optional, private] - * @return {function} The newly wrapped functions with a context - */ - wrap: function wrap(options, func, _before) { - var self = this; // 1 argument has been passed, and it's not a function - // so just return it + /** + * Truncate breadcrumb values (right now just URLs) + */ + _trimBreadcrumbs: function(breadcrumbs) { + // known breadcrumb properties with urls + // TODO: also consider arbitrary prop values that start with (https?)?:// + var urlProps = ['to', 'from', 'url'], + urlProp, + crumb, + data; - if (isUndefined(func) && !isFunction(options)) { - return options; - } // options is optional + for (var i = 0; i < breadcrumbs.values.length; ++i) { + crumb = breadcrumbs.values[i]; + if ( + !crumb.hasOwnProperty('data') || + !isObject(crumb.data) || + objectFrozen(crumb.data) + ) + continue; + data = objectMerge({}, crumb.data); + for (var j = 0; j < urlProps.length; ++j) { + urlProp = urlProps[j]; + if (data.hasOwnProperty(urlProp) && data[urlProp]) { + data[urlProp] = truncate(data[urlProp], this._globalOptions.maxUrlLength); + } + } + breadcrumbs.values[i].data = data; + } + }, - if (isFunction(options)) { - func = options; - options = undefined; - } // At this point, we've passed along 2 arguments, and the second one - // is not a function either, so we'll just return the second argument. + _getHttpData: function() { + if (!this._hasNavigator && !this._hasDocument) return; + var httpData = {}; + if (this._hasNavigator && _navigator.userAgent) { + httpData.headers = { + 'User-Agent': navigator.userAgent + }; + } - if (!isFunction(func)) { - return func; - } // We don't wanna wrap it twice! + // Check in `window` instead of `document`, as we may be in ServiceWorker environment + if (_window.location && _window.location.href) { + httpData.url = _window.location.href; + } + if (this._hasDocument && _document.referrer) { + if (!httpData.headers) httpData.headers = {}; + httpData.headers.Referer = _document.referrer; + } - try { - if (func.__raven__) { - return func; - } // If this has already been wrapped in the past, return that + return httpData; + }, + _resetBackoff: function() { + this._backoffDuration = 0; + this._backoffStart = null; + }, - if (func.__raven_wrapper__) { - return func.__raven_wrapper__; - } - } catch (e) { - // Just accessing custom props in some Selenium environments - // can cause a "Permission denied" exception (see raven-js#495). - // Bail on wrapping and return the function as-is (defers to window.onerror). - return func; - } + _shouldBackoff: function() { + return this._backoffDuration && now() - this._backoffStart < this._backoffDuration; + }, - function wrapped() { - var args = [], - i = arguments.length, - deep = !options || options && options.deep !== false; + /** + * Returns true if the in-process data payload matches the signature + * of the previously-sent data + * + * NOTE: This has to be done at this level because TraceKit can generate + * data from window.onerror WITHOUT an exception object (IE8, IE9, + * other old browsers). This can take the form of an "exception" + * data object with a single frame (derived from the onerror args). + */ + _isRepeatData: function(current) { + var last = this._lastData; - if (_before && isFunction(_before)) { - _before.apply(this, arguments); - } // Recursively wrap all of a function's arguments that are - // functions themselves. + if ( + !last || + current.message !== last.message || // defined for captureMessage + current.culprit !== last.culprit // defined for captureException/onerror + ) + return false; + // Stacktrace interface (i.e. from captureMessage) + if (current.stacktrace || last.stacktrace) { + return isSameStacktrace(current.stacktrace, last.stacktrace); + } else if (current.exception || last.exception) { + // Exception interface (i.e. from captureException/onerror) + return isSameException(current.exception, last.exception); + } - while (i--) { - args[i] = deep ? self.wrap(options, arguments[i]) : arguments[i]; - } + return true; + }, - try { - // Attempt to invoke user-land function - // NOTE: If you are a Sentry user, and you are seeing this stack frame, it - // means Raven caught an error invoking your application code. This is - // expected behavior and NOT indicative of a bug with Raven.js. - return func.apply(this, args); - } catch (e) { - self._ignoreNextOnError(); + _setBackoffState: function(request) { + // If we are already in a backoff state, don't change anything + if (this._shouldBackoff()) { + return; + } - self.captureException(e, options); - throw e; - } - } // copy over properties of the old function + var status = request.status; + // 400 - project_id doesn't exist or some other fatal + // 401 - invalid/revoked dsn + // 429 - too many requests + if (!(status === 400 || status === 401 || status === 429)) return; - for (var property in func) { - if (hasKey(func, property)) { - wrapped[property] = func[property]; + var retry; + try { + // If Retry-After is not in Access-Control-Expose-Headers, most + // browsers will throw an exception trying to access it + if (supportsFetch()) { + retry = request.headers.get('Retry-After'); + } else { + retry = request.getResponseHeader('Retry-After'); } + + // Retry-After is returned in seconds + retry = parseInt(retry, 10) * 1000; + } catch (e) { + /* eslint no-empty:0 */ } - wrapped.prototype = func.prototype; - func.__raven_wrapper__ = wrapped; // Signal that this function has been wrapped/filled already - // for both debugging and to prevent it to being wrapped/filled twice + this._backoffDuration = retry + ? // If Sentry server returned a Retry-After value, use it + retry + : // Otherwise, double the last backoff duration (starts at 1 sec) + this._backoffDuration * 2 || 1000; - wrapped.__raven__ = true; - wrapped.__orig__ = func; - return wrapped; + this._backoffStart = now(); }, - /* - * Uninstalls the global error handler. - * - * @return {Raven} - */ - uninstall: function uninstall() { - tracekit.report.uninstall(); + _send: function(data) { + var globalOptions = this._globalOptions; - this._unpatchFunctionToString(); + var baseData = { + project: this._globalProject, + logger: globalOptions.logger, + platform: 'javascript' + }, + httpData = this._getHttpData(); - this._restoreBuiltIns(); + if (httpData) { + baseData.request = httpData; + } - this._restoreConsole(); + // HACK: delete `trimHeadFrames` to prevent from appearing in outbound payload + if (data.trimHeadFrames) delete data.trimHeadFrames; - Error.stackTraceLimit = this._originalErrorStackTraceLimit; - this._isRavenInstalled = false; - return this; - }, + data = objectMerge(baseData, data); - /* - * Manually capture an exception and send it over to Sentry - * - * @param {error} ex An exception to be logged - * @param {object} options A specific set of options for this error [optional] - * @return {Raven} - */ - captureException: function captureException(ex, options) { - options = objectMerge({ - trimHeadFrames: 0 - }, options ? options : {}); // Cases for sending ex as a message, rather than an exception + // Merge in the tags and extra separately since objectMerge doesn't handle a deep merge + data.tags = objectMerge(objectMerge({}, this._globalContext.tags), data.tags); + data.extra = objectMerge(objectMerge({}, this._globalContext.extra), data.extra); - var isNotError = !isError(ex); - var isNotErrorEvent = !isErrorEvent(ex); - var isErrorEventWithoutError = isErrorEvent(ex) && !ex.error; + // Send along our own collected metadata with extra + data.extra['session:duration'] = now() - this._startTime; - if (isNotError && isNotErrorEvent || isErrorEventWithoutError) { - return this.captureMessage(ex, objectMerge(options, { - stacktrace: true, - // if we fall back to captureMessage, default to attempting a new trace - trimHeadFrames: options.trimHeadFrames + 1 - })); - } // Get actual Error from ErrorEvent + if (this._breadcrumbs && this._breadcrumbs.length > 0) { + // intentionally make shallow copy so that additions + // to breadcrumbs aren't accidentally sent in this request + data.breadcrumbs = { + values: [].slice.call(this._breadcrumbs, 0) + }; + } + if (this._globalContext.user) { + // sentry.interfaces.User + data.user = this._globalContext.user; + } - if (isErrorEvent(ex)) ex = ex.error; // Store the raw exception object for potential debugging and introspection + // Include the environment if it's defined in globalOptions + if (globalOptions.environment) data.environment = globalOptions.environment; - this._lastCapturedException = ex; // TraceKit.report will re-raise any exception passed to it, - // which means you have to wrap it in try/catch. Instead, we - // can wrap it here and only re-raise if TraceKit.report - // raises an exception different from the one we asked to - // report on. + // Include the release if it's defined in globalOptions + if (globalOptions.release) data.release = globalOptions.release; - try { - var stack = tracekit.computeStackTrace(ex); + // Include server_name if it's defined in globalOptions + if (globalOptions.serverName) data.server_name = globalOptions.serverName; - this._handleStackInfo(stack, options); - } catch (ex1) { - if (ex !== ex1) { - throw ex1; + data = this._sanitizeData(data); + + // Cleanup empty properties before sending them to the server + Object.keys(data).forEach(function(key) { + if (data[key] == null || data[key] === '' || isEmptyObject(data[key])) { + delete data[key]; } + }); + + if (isFunction(globalOptions.dataCallback)) { + data = globalOptions.dataCallback(data) || data; } - return this; - }, + // Why?????????? + if (!data || isEmptyObject(data)) { + return; + } - /* - * Manually send a message to Sentry - * - * @param {string} msg A plain message to be captured in Sentry - * @param {object} options A specific set of options for this message [optional] - * @return {Raven} - */ - captureMessage: function captureMessage(msg, options) { - // config() automagically converts ignoreErrors from a list to a RegExp so we need to test for an - // early call; we'll error on the side of logging anything called before configuration since it's - // probably something you should see: - if (!!this._globalOptions.ignoreErrors.test && this._globalOptions.ignoreErrors.test(msg)) { + // Check if the request should be filtered or not + if ( + isFunction(globalOptions.shouldSendCallback) && + !globalOptions.shouldSendCallback(data) + ) { return; } - options = options || {}; - var data = objectMerge({ - message: msg + '' // Make sure it's actually a string + // Backoff state: Sentry server previously responded w/ an error (e.g. 429 - too many requests), + // so drop requests until "cool-off" period has elapsed. + if (this._shouldBackoff()) { + this._logDebug('warn', 'Raven dropped error due to backoff: ', data); + return; + } - }, options); - var ex; // Generate a "synthetic" stack trace from this point. - // NOTE: If you are a Sentry user, and you are seeing this stack frame, it is NOT indicative - // of a bug with Raven.js. Sentry generates synthetic traces either by configuration, - // or if it catches a thrown object without a "stack" property. + if (typeof globalOptions.sampleRate === 'number') { + if (Math.random() < globalOptions.sampleRate) { + this._sendProcessedPayload(data); + } + } else { + this._sendProcessedPayload(data); + } + }, - try { - throw new Error(msg); - } catch (ex1) { - ex = ex1; - } // null exception name so `Error` isn't prefixed to msg + _sanitizeData: function(data) { + return sanitize(data, this._globalOptions.sanitizeKeys); + }, + _getUuid: function() { + return uuid4(); + }, - ex.name = null; - var stack = tracekit.computeStackTrace(ex); // stack[0] is `throw new Error(msg)` call itself, we are interested in the frame that was just before that, stack[1] + _sendProcessedPayload: function(data, callback) { + var self = this; + var globalOptions = this._globalOptions; - var initialCall = isArray(stack.stack) && stack.stack[1]; - var fileurl = initialCall && initialCall.url || ''; + if (!this.isSetup()) return; - if (!!this._globalOptions.ignoreUrls.test && this._globalOptions.ignoreUrls.test(fileurl)) { - return; - } + // Try and clean up the packet before sending by truncating long values + data = this._trimPacket(data); - if (!!this._globalOptions.whitelistUrls.test && !this._globalOptions.whitelistUrls.test(fileurl)) { + // ideally duplicate error testing should occur *before* dataCallback/shouldSendCallback, + // but this would require copying an un-truncated copy of the data packet, which can be + // arbitrarily deep (extra_data) -- could be worthwhile? will revisit + if (!this._globalOptions.allowDuplicates && this._isRepeatData(data)) { + this._logDebug('warn', 'Raven dropped repeat event: ', data); return; } - if (this._globalOptions.stacktrace || options && options.stacktrace) { - options = objectMerge({ - // fingerprint on msg, not stack trace (legacy behavior, could be - // revisited) - fingerprint: msg, - // since we know this is a synthetic trace, the top N-most frames - // MUST be from Raven.js, so mark them as in_app later by setting - // trimHeadFrames - trimHeadFrames: (options.trimHeadFrames || 0) + 1 - }, options); - - var frames = this._prepareFrames(stack, options); - - data.stacktrace = { - // Sentry expects frames oldest to newest - frames: frames.reverse() - }; - } // Fire away! - + // Send along an event_id if not explicitly passed. + // This event_id can be used to reference the error within Sentry itself. + // Set lastEventId after we know the error should actually be sent + this._lastEventId = data.event_id || (data.event_id = this._getUuid()); - this._send(data); + // Store outbound payload after trim + this._lastData = data; - return this; - }, - captureBreadcrumb: function captureBreadcrumb(obj) { - var crumb = objectMerge({ - timestamp: now() / 1000 - }, obj); + this._logDebug('debug', 'Raven about to send:', data); - if (isFunction(this._globalOptions.breadcrumbCallback)) { - var result = this._globalOptions.breadcrumbCallback(crumb); + var auth = { + sentry_version: '7', + sentry_client: 'raven-js/' + this.VERSION, + sentry_key: this._globalKey + }; - if (isObject(result) && !isEmptyObject(result)) { - crumb = result; - } else if (result === false) { - return this; - } + if (this._globalSecret) { + auth.sentry_secret = this._globalSecret; } - this._breadcrumbs.push(crumb); + var exception = data.exception && data.exception.values[0]; - if (this._breadcrumbs.length > this._globalOptions.maxBreadcrumbs) { - this._breadcrumbs.shift(); + // only capture 'sentry' breadcrumb is autoBreadcrumbs is truthy + if ( + this._globalOptions.autoBreadcrumbs && + this._globalOptions.autoBreadcrumbs.sentry + ) { + this.captureBreadcrumb({ + category: 'sentry', + message: exception + ? (exception.type ? exception.type + ': ' : '') + exception.value + : data.message, + event_id: data.event_id, + level: data.level || 'error' // presume error unless specified + }); } - return this; - }, - addPlugin: function addPlugin(plugin - /*arg1, arg2, ... argN*/ - ) { - var pluginArgs = [].slice.call(arguments, 1); + var url = this._globalEndpoint; + (globalOptions.transport || this._makeRequest).call(this, { + url: url, + auth: auth, + data: data, + options: globalOptions, + onSuccess: function success() { + self._resetBackoff(); - this._plugins.push([plugin, pluginArgs]); + self._triggerEvent('success', { + data: data, + src: url + }); + callback && callback(); + }, + onError: function failure(error) { + self._logDebug('error', 'Raven transport failed to send: ', error); - if (this._isRavenInstalled) { - this._drainPlugins(); - } + if (error.request) { + self._setBackoffState(error.request); + } - return this; + self._triggerEvent('failure', { + data: data, + src: url + }); + error = error || new Error('Raven send failed (no additional details provided)'); + callback && callback(error); + } + }); }, - /* - * Set/clear a user to be sent along with the payload. - * - * @param {object} user An object representing user data [optional] - * @return {Raven} - */ - setUserContext: function setUserContext(user) { - // Intentionally do not merge here since that's an unexpected behavior. - this._globalContext.user = user; - return this; - }, + _makeRequest: function(opts) { + // Auth is intentionally sent as part of query string (NOT as custom HTTP header) to avoid preflight CORS requests + var url = opts.url + '?' + urlencode(opts.auth); - /* - * Merge extra attributes to be sent along with the payload. - * - * @param {object} extra An object representing extra data [optional] - * @return {Raven} - */ - setExtraContext: function setExtraContext(extra) { - this._mergeContext('extra', extra); + var evaluatedHeaders = null; + var evaluatedFetchParameters = {}; - return this; - }, + if (opts.options.headers) { + evaluatedHeaders = this._evaluateHash(opts.options.headers); + } - /* - * Merge tags to be sent along with the payload. - * - * @param {object} tags An object representing tags [optional] - * @return {Raven} - */ - setTagsContext: function setTagsContext(tags) { - this._mergeContext('tags', tags); + if (opts.options.fetchParameters) { + evaluatedFetchParameters = this._evaluateHash(opts.options.fetchParameters); + } - return this; - }, + if (supportsFetch()) { + evaluatedFetchParameters.body = stringify(opts.data); - /* - * Clear all of the context. - * - * @return {Raven} - */ - clearContext: function clearContext() { - this._globalContext = {}; - return this; - }, + var defaultFetchOptions = objectMerge({}, this._fetchDefaults); + var fetchOptions = objectMerge(defaultFetchOptions, evaluatedFetchParameters); - /* - * Get a copy of the current context. This cannot be mutated. - * - * @return {object} copy of context - */ - getContext: function getContext() { - // lol javascript - return JSON.parse(stringify_1(this._globalContext)); - }, + if (evaluatedHeaders) { + fetchOptions.headers = evaluatedHeaders; + } - /* - * Set environment of application - * - * @param {string} environment Typically something like 'production'. - * @return {Raven} - */ - setEnvironment: function setEnvironment(environment) { - this._globalOptions.environment = environment; - return this; - }, + return _window + .fetch(url, fetchOptions) + .then(function(response) { + if (response.ok) { + opts.onSuccess && opts.onSuccess(); + } else { + var error = new Error('Sentry error code: ' + response.status); + // It's called request only to keep compatibility with XHR interface + // and not add more redundant checks in setBackoffState method + error.request = response; + opts.onError && opts.onError(error); + } + }) + ['catch'](function() { + opts.onError && + opts.onError(new Error('Sentry error code: network unavailable')); + }); + } - /* - * Set release version of application - * - * @param {string} release Typically something like a git SHA to identify version - * @return {Raven} - */ - setRelease: function setRelease(release) { - this._globalOptions.release = release; - return this; - }, + var request = _window.XMLHttpRequest && new _window.XMLHttpRequest(); + if (!request) return; - /* - * Set the dataCallback option - * - * @param {function} callback The callback to run which allows the - * data blob to be mutated before sending - * @return {Raven} - */ - setDataCallback: function setDataCallback(callback) { - var original = this._globalOptions.dataCallback; - this._globalOptions.dataCallback = keepOriginalCallback(original, callback); - return this; - }, + // if browser doesn't support CORS (e.g. IE7), we are out of luck + var hasCORS = 'withCredentials' in request || typeof XDomainRequest !== 'undefined'; - /* - * Set the breadcrumbCallback option - * - * @param {function} callback The callback to run which allows filtering - * or mutating breadcrumbs - * @return {Raven} - */ - setBreadcrumbCallback: function setBreadcrumbCallback(callback) { - var original = this._globalOptions.breadcrumbCallback; - this._globalOptions.breadcrumbCallback = keepOriginalCallback(original, callback); - return this; - }, + if (!hasCORS) return; - /* - * Set the shouldSendCallback option - * - * @param {function} callback The callback to run which allows - * introspecting the blob before sending - * @return {Raven} - */ - setShouldSendCallback: function setShouldSendCallback(callback) { - var original = this._globalOptions.shouldSendCallback; - this._globalOptions.shouldSendCallback = keepOriginalCallback(original, callback); - return this; - }, + if ('withCredentials' in request) { + request.onreadystatechange = function() { + if (request.readyState !== 4) { + return; + } else if (request.status === 200) { + opts.onSuccess && opts.onSuccess(); + } else if (opts.onError) { + var err = new Error('Sentry error code: ' + request.status); + err.request = request; + opts.onError(err); + } + }; + } else { + request = new XDomainRequest(); + // xdomainrequest cannot go http -> https (or vice versa), + // so always use protocol relative + url = url.replace(/^https?:/, ''); - /** - * Override the default HTTP transport mechanism that transmits data - * to the Sentry server. - * - * @param {function} transport Function invoked instead of the default - * `makeRequest` handler. - * - * @return {Raven} - */ - setTransport: function setTransport(transport) { - this._globalOptions.transport = transport; - return this; - }, + // onreadystatechange not supported by XDomainRequest + if (opts.onSuccess) { + request.onload = opts.onSuccess; + } + if (opts.onError) { + request.onerror = function() { + var err = new Error('Sentry error code: XDomainRequest'); + err.request = request; + opts.onError(err); + }; + } + } - /* - * Get the latest raw exception that was captured by Raven. - * - * @return {error} - */ - lastException: function lastException() { - return this._lastCapturedException; - }, + request.open('POST', url); - /* - * Get the last event id - * - * @return {string} - */ - lastEventId: function lastEventId() { - return this._lastEventId; - }, + if (evaluatedHeaders) { + each(evaluatedHeaders, function(key, value) { + request.setRequestHeader(key, value); + }); + } - /* - * Determine if Raven is setup and ready to go. - * - * @return {boolean} - */ - isSetup: function isSetup() { - if (!this._hasJSON) return false; // needs JSON support + request.send(stringify(opts.data)); + }, - if (!this._globalServer) { - if (!this.ravenNotConfiguredError) { - this.ravenNotConfiguredError = true; + _evaluateHash: function(hash) { + var evaluated = {}; - this._logDebug('error', 'Error: Raven has not been configured.'); + for (var key in hash) { + if (hash.hasOwnProperty(key)) { + var value = hash[key]; + evaluated[key] = typeof value === 'function' ? value() : value; } - - return false; } - return true; + return evaluated; }, - afterLoad: function afterLoad() { - // TODO: remove window dependence? - // Attempt to initialize Raven on load - var RavenConfig = _window$1.RavenConfig; - if (RavenConfig) { - this.config(RavenConfig.dsn, RavenConfig.config).install(); + _logDebug: function(level) { + // We allow `Raven.debug` and `Raven.config(DSN, { debug: true })` to not make backward incompatible API change + if ( + this._originalConsoleMethods[level] && + (this.debug || this._globalOptions.debug) + ) { + // In IE<10 console methods do not have their own 'apply' method + Function.prototype.apply.call( + this._originalConsoleMethods[level], + this._originalConsole, + [].slice.call(arguments, 1) + ); } }, - showReportDialog: function showReportDialog(options) { - if (!_document // doesn't work without a document (React native) - ) return; - options = options || {}; - var lastEventId = options.eventId || this.lastEventId(); - if (!lastEventId) { - throw new configError('Missing eventId'); + _mergeContext: function(key, context) { + if (isUndefined(context)) { + delete this._globalContext[key]; + } else { + this._globalContext[key] = objectMerge(this._globalContext[key] || {}, context); } + } +}; - var dsn = options.dsn || this._dsn; +// Deprecations +Raven.prototype.setUser = Raven.prototype.setUserContext; +Raven.prototype.setReleaseContext = Raven.prototype.setRelease; - if (!dsn) { - throw new configError('Missing DSN'); - } +module.exports = Raven; - var encode = encodeURIComponent; - var qs = ''; - qs += '?eventId=' + encode(lastEventId); - qs += '&dsn=' + encode(dsn); - var user = options.user || this._globalContext.user; +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"10":10,"11":11,"12":12,"5":5,"6":6,"9":9}],8:[function(_dereq_,module,exports){ +(function (global){ +/** + * Enforces a single instance of the Raven client, and the + * main entry point for Raven. If you are a consumer of the + * Raven library, you SHOULD load this file (vs raven.js). + **/ - if (user) { - if (user.name) qs += '&name=' + encode(user.name); - if (user.email) qs += '&email=' + encode(user.email); - } +var RavenConstructor = _dereq_(7); - var globalServer = this._getGlobalServer(this._parseDSN(dsn)); +// This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) +var _window = + typeof window !== 'undefined' + ? window + : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; +var _Raven = _window.Raven; - var script = _document.createElement('script'); +var Raven = new RavenConstructor(); + +/* + * Allow multiple versions of Raven to be installed. + * Strip Raven from the global context and returns the instance. + * + * @return {Raven} + */ +Raven.noConflict = function() { + _window.Raven = _Raven; + return Raven; +}; + +Raven.afterLoad(); + +module.exports = Raven; + +/** + * DISCLAIMER: + * + * Expose `Client` constructor for cases where user want to track multiple "sub-applications" in one larger app. + * It's not meant to be used by a wide audience, so pleaaase make sure that you know what you're doing before using it. + * Accidentally calling `install` multiple times, may result in an unexpected behavior that's very hard to debug. + * + * It's called `Client' to be in-line with Raven Node implementation. + * + * HOWTO: + * + * import Raven from 'raven-js'; + * + * const someAppReporter = new Raven.Client(); + * const someOtherAppReporter = new Raven.Client(); + * + * someAppReporter.config('__DSN__', { + * ...config goes here + * }); + * + * someOtherAppReporter.config('__OTHER_DSN__', { + * ...config goes here + * }); + * + * someAppReporter.captureMessage(...); + * someAppReporter.captureException(...); + * someAppReporter.captureBreadcrumb(...); + * + * someOtherAppReporter.captureMessage(...); + * someOtherAppReporter.captureException(...); + * someOtherAppReporter.captureBreadcrumb(...); + * + * It should "just work". + */ +module.exports.Client = RavenConstructor; - script.async = true; - script.src = globalServer + '/api/embed/error-page/' + qs; +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"7":7}],9:[function(_dereq_,module,exports){ +(function (global){ +var stringify = _dereq_(11); - (_document.head || _document.body).appendChild(script); - }, +var _window = + typeof window !== 'undefined' + ? window + : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; - /**** Private functions ****/ - _ignoreNextOnError: function _ignoreNextOnError() { - var self = this; - this._ignoreOnError += 1; - setTimeout(function () { - // onerror should trigger before setTimeout - self._ignoreOnError -= 1; - }); - }, - _triggerEvent: function _triggerEvent(eventType, options) { - // NOTE: `event` is a native browser thing, so let's avoid conflicting wiht it - var evt, key; - if (!this._hasDocument) return; - options = options || {}; - eventType = 'raven' + eventType.substr(0, 1).toUpperCase() + eventType.substr(1); +function isObject(what) { + return typeof what === 'object' && what !== null; +} - if (_document.createEvent) { - evt = _document.createEvent('HTMLEvents'); - evt.initEvent(eventType, true, true); - } else { - evt = _document.createEventObject(); - evt.eventType = eventType; - } +// Yanked from https://git.io/vS8DV re-used under CC0 +// with some tiny modifications +function isError(value) { + switch ({}.toString.call(value)) { + case '[object Error]': + return true; + case '[object Exception]': + return true; + case '[object DOMException]': + return true; + default: + return value instanceof Error; + } +} - for (key in options) { - if (hasKey(options, key)) { - evt[key] = options[key]; - } - } +function isErrorEvent(value) { + return supportsErrorEvent() && {}.toString.call(value) === '[object ErrorEvent]'; +} - if (_document.createEvent) { - // IE9 if standards - _document.dispatchEvent(evt); - } else { - // IE8 regardless of Quirks or Standards - // IE9 if quirks - try { - _document.fireEvent('on' + evt.eventType.toLowerCase(), evt); - } catch (e) {// Do nothing - } - } - }, +function isUndefined(what) { + return what === void 0; +} - /** - * Wraps addEventListener to capture UI breadcrumbs - * @param evtName the event name (e.g. "click") - * @returns {Function} - * @private - */ - _breadcrumbEventHandler: function _breadcrumbEventHandler(evtName) { - var self = this; - return function (evt) { - // reset keypress timeout; e.g. triggering a 'click' after - // a 'keypress' will reset the keypress debounce so that a new - // set of keypresses can be recorded - self._keypressTimeout = null; // It's possible this handler might trigger multiple times for the same - // event (e.g. event propagation through node ancestors). Ignore if we've - // already captured the event. +function isFunction(what) { + return typeof what === 'function'; +} - if (self._lastCapturedEvent === evt) return; - self._lastCapturedEvent = evt; // try/catch both: - // - accessing evt.target (see getsentry/raven-js#838, #768) - // - `htmlTreeAsString` because it's complex, and just accessing the DOM incorrectly - // can throw an exception in some circumstances. +function isPlainObject(what) { + return Object.prototype.toString.call(what) === '[object Object]'; +} - var target; +function isString(what) { + return Object.prototype.toString.call(what) === '[object String]'; +} - try { - target = htmlTreeAsString(evt.target); - } catch (e) { - target = ''; - } +function isArray(what) { + return Object.prototype.toString.call(what) === '[object Array]'; +} - self.captureBreadcrumb({ - category: 'ui.' + evtName, - // e.g. ui.click, ui.input - message: target - }); - }; - }, +function isEmptyObject(what) { + if (!isPlainObject(what)) return false; - /** - * Wraps addEventListener to capture keypress UI events - * @returns {Function} - * @private - */ - _keypressEventHandler: function _keypressEventHandler() { - var self = this, - debounceDuration = 1000; // milliseconds - // TODO: if somehow user switches keypress target before - // debounce timeout is triggered, we will only capture - // a single breadcrumb from the FIRST target (acceptable?) + for (var _ in what) { + if (what.hasOwnProperty(_)) { + return false; + } + } + return true; +} - return function (evt) { - var target; +function supportsErrorEvent() { + try { + new ErrorEvent(''); // eslint-disable-line no-new + return true; + } catch (e) { + return false; + } +} - try { - target = evt.target; - } catch (e) { - // just accessing event properties can throw an exception in some rare circumstances - // see: https://github.com/getsentry/raven-js/issues/838 - return; - } +function supportsFetch() { + if (!('fetch' in _window)) return false; - var tagName = target && target.tagName; // only consider keypress events on actual input elements - // this will disregard keypresses targeting body (e.g. tabbing - // through elements, hotkeys, etc) + try { + new Headers(); // eslint-disable-line no-new + new Request(''); // eslint-disable-line no-new + new Response(); // eslint-disable-line no-new + return true; + } catch (e) { + return false; + } +} - if (!tagName || tagName !== 'INPUT' && tagName !== 'TEXTAREA' && !target.isContentEditable) return; // record first keypress in a series, but ignore subsequent - // keypresses until debounce clears +// Despite all stars in the sky saying that Edge supports old draft syntax, aka 'never', 'always', 'origin' and 'default +// https://caniuse.com/#feat=referrer-policy +// It doesn't. And it throw exception instead of ignoring this parameter... +// REF: https://github.com/getsentry/raven-js/issues/1233 +function supportsReferrerPolicy() { + if (!supportsFetch()) return false; - var timeout = self._keypressTimeout; + try { + // eslint-disable-next-line no-new + new Request('pickleRick', { + referrerPolicy: 'origin' + }); + return true; + } catch (e) { + return false; + } +} - if (!timeout) { - self._breadcrumbEventHandler('input')(evt); - } +function supportsPromiseRejectionEvent() { + return typeof PromiseRejectionEvent === 'function'; +} - clearTimeout(timeout); - self._keypressTimeout = setTimeout(function () { - self._keypressTimeout = null; - }, debounceDuration); - }; - }, +function wrappedCallback(callback) { + function dataCallback(data, original) { + var normalizedData = callback(data) || data; + if (original) { + return original(normalizedData) || normalizedData; + } + return normalizedData; + } - /** - * Captures a breadcrumb of type "navigation", normalizing input URLs - * @param to the originating URL - * @param from the target URL - * @private - */ - _captureUrlChange: function _captureUrlChange(from, to) { - var parsedLoc = parseUrl(this._location.href); - var parsedTo = parseUrl(to); - var parsedFrom = parseUrl(from); // because onpopstate only tells you the "new" (to) value of location.href, and - // not the previous (from) value, we need to track the value of the current URL - // state ourselves + return dataCallback; +} - this._lastHref = to; // Use only the path component of the URL if the URL matches the current - // document (almost all the time when using pushState) +function each(obj, callback) { + var i, j; - if (parsedLoc.protocol === parsedTo.protocol && parsedLoc.host === parsedTo.host) to = parsedTo.relative; - if (parsedLoc.protocol === parsedFrom.protocol && parsedLoc.host === parsedFrom.host) from = parsedFrom.relative; - this.captureBreadcrumb({ - category: 'navigation', - data: { - to: to, - from: from + if (isUndefined(obj.length)) { + for (i in obj) { + if (hasKey(obj, i)) { + callback.call(null, i, obj[i]); } - }); - }, - _patchFunctionToString: function _patchFunctionToString() { - var self = this; - self._originalFunctionToString = Function.prototype.toString; // eslint-disable-next-line no-extend-native - - Function.prototype.toString = function () { - if (typeof this === 'function' && this.__raven__) { - return self._originalFunctionToString.apply(this.__orig__, arguments); + } + } else { + j = obj.length; + if (j) { + for (i = 0; i < j; i++) { + callback.call(null, i, obj[i]); } - - return self._originalFunctionToString.apply(this, arguments); - }; - }, - _unpatchFunctionToString: function _unpatchFunctionToString() { - if (this._originalFunctionToString) { - // eslint-disable-next-line no-extend-native - Function.prototype.toString = this._originalFunctionToString; } - }, - - /** - * Wrap timer functions and event targets to catch errors and provide - * better metadata. - */ - _instrumentTryCatch: function _instrumentTryCatch() { - var self = this; - var wrappedBuiltIns = self._wrappedBuiltIns; + } +} - function wrapTimeFn(orig) { - return function (fn, t) { - // preserve arity - // Make a copy of the arguments to prevent deoptimization - // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments - var args = new Array(arguments.length); +function objectMerge(obj1, obj2) { + if (!obj2) { + return obj1; + } + each(obj2, function(key, value) { + obj1[key] = value; + }); + return obj1; +} - for (var i = 0; i < args.length; ++i) { - args[i] = arguments[i]; - } +/** + * This function is only used for react-native. + * react-native freezes object that have already been sent over the + * js bridge. We need this function in order to check if the object is frozen. + * So it's ok that objectFrozen returns false if Object.isFrozen is not + * supported because it's not relevant for other "platforms". See related issue: + * https://github.com/getsentry/react-native-sentry/issues/57 + */ +function objectFrozen(obj) { + if (!Object.isFrozen) { + return false; + } + return Object.isFrozen(obj); +} - var originalCallback = args[0]; +function truncate(str, max) { + if (typeof max !== 'number') { + throw new Error('2nd argument to `truncate` function should be a number'); + } + if (typeof str !== 'string' || max === 0) { + return str; + } + return str.length <= max ? str : str.substr(0, max) + '\u2026'; +} - if (isFunction(originalCallback)) { - args[0] = self.wrap(originalCallback); - } // IE < 9 doesn't support .call/.apply on setInterval/setTimeout, but it - // also supports only two arguments and doesn't care what this is, so we - // can just call the original function directly. +/** + * hasKey, a better form of hasOwnProperty + * Example: hasKey(MainHostObject, property) === true/false + * + * @param {Object} host object to check property + * @param {string} key to check + */ +function hasKey(object, key) { + return Object.prototype.hasOwnProperty.call(object, key); +} +function joinRegExp(patterns) { + // Combine an array of regular expressions and strings into one large regexp + // Be mad. + var sources = [], + i = 0, + len = patterns.length, + pattern; - if (orig.apply) { - return orig.apply(this, args); - } else { - return orig(args[0], args[1]); - } - }; + for (; i < len; i++) { + pattern = patterns[i]; + if (isString(pattern)) { + // If it's a string, we need to escape it + // Taken from: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions + sources.push(pattern.replace(/([.*+?^=!:${}()|\[\]\/\\])/g, '\\$1')); + } else if (pattern && pattern.source) { + // If it's a regexp already, we want to extract the source + sources.push(pattern.source); } + // Intentionally skip other cases + } + return new RegExp(sources.join('|'), 'i'); +} - var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; - - function wrapEventTarget(global) { - var proto = _window$1[global] && _window$1[global].prototype; - - if (proto && proto.hasOwnProperty && proto.hasOwnProperty('addEventListener')) { - fill(proto, 'addEventListener', function (orig) { - return function (evtName, fn, capture, secure) { - // preserve arity - try { - if (fn && fn.handleEvent) { - fn.handleEvent = self.wrap(fn.handleEvent); - } - } catch (err) {} // can sometimes get 'Permission denied to access property "handle Event' - // More breadcrumb DOM capture ... done here and not in `_instrumentBreadcrumbs` - // so that we don't have more than one wrapper function +function urlencode(o) { + var pairs = []; + each(o, function(key, value) { + pairs.push(encodeURIComponent(key) + '=' + encodeURIComponent(value)); + }); + return pairs.join('&'); +} +// borrowed from https://tools.ietf.org/html/rfc3986#appendix-B +// intentionally using regex and not href parsing trick because React Native and other +// environments where DOM might not be available +function parseUrl(url) { + if (typeof url !== 'string') return {}; + var match = url.match(/^(([^:\/?#]+):)?(\/\/([^\/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?$/); - var before, clickHandler, keypressHandler; + // coerce to undefined values to empty string so we don't get 'undefined' + var query = match[6] || ''; + var fragment = match[8] || ''; + return { + protocol: match[2], + host: match[4], + path: match[5], + relative: match[5] + query + fragment // everything minus origin + }; +} +function uuid4() { + var crypto = _window.crypto || _window.msCrypto; - if (autoBreadcrumbs && autoBreadcrumbs.dom && (global === 'EventTarget' || global === 'Node')) { - // NOTE: generating multiple handlers per addEventListener invocation, should - // revisit and verify we can just use one (almost certainly) - clickHandler = self._breadcrumbEventHandler('click'); - keypressHandler = self._keypressEventHandler(); + if (!isUndefined(crypto) && crypto.getRandomValues) { + // Use window.crypto API if available + // eslint-disable-next-line no-undef + var arr = new Uint16Array(8); + crypto.getRandomValues(arr); - before = function before(evt) { - // need to intercept every DOM event in `before` argument, in case that - // same wrapped method is re-used for different events (e.g. mousemove THEN click) - // see #724 - if (!evt) return; - var eventType; + // set 4 in byte 7 + arr[3] = (arr[3] & 0xfff) | 0x4000; + // set 2 most significant bits of byte 9 to '10' + arr[4] = (arr[4] & 0x3fff) | 0x8000; - try { - eventType = evt.type; - } catch (e) { - // just accessing event properties can throw an exception in some rare circumstances - // see: https://github.com/getsentry/raven-js/issues/838 - return; - } + var pad = function(num) { + var v = num.toString(16); + while (v.length < 4) { + v = '0' + v; + } + return v; + }; - if (eventType === 'click') return clickHandler(evt);else if (eventType === 'keypress') return keypressHandler(evt); - }; - } + return ( + pad(arr[0]) + + pad(arr[1]) + + pad(arr[2]) + + pad(arr[3]) + + pad(arr[4]) + + pad(arr[5]) + + pad(arr[6]) + + pad(arr[7]) + ); + } else { + // http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/2117523#2117523 + return 'xxxxxxxxxxxx4xxxyxxxxxxxxxxxxxxx'.replace(/[xy]/g, function(c) { + var r = (Math.random() * 16) | 0, + v = c === 'x' ? r : (r & 0x3) | 0x8; + return v.toString(16); + }); + } +} - return orig.call(this, evtName, self.wrap(fn, undefined, before), capture, secure); - }; - }, wrappedBuiltIns); - fill(proto, 'removeEventListener', function (orig) { - return function (evt, fn, capture, secure) { - try { - fn = fn && (fn.__raven_wrapper__ ? fn.__raven_wrapper__ : fn); - } catch (e) {// ignore, accessing __raven_wrapper__ will throw in some Selenium environments - } +/** + * Given a child DOM element, returns a query-selector statement describing that + * and its ancestors + * e.g. [HTMLElement] => body > div > input#foo.btn[name=baz] + * @param elem + * @returns {string} + */ +function htmlTreeAsString(elem) { + /* eslint no-extra-parens:0*/ + var MAX_TRAVERSE_HEIGHT = 5, + MAX_OUTPUT_LEN = 80, + out = [], + height = 0, + len = 0, + separator = ' > ', + sepLength = separator.length, + nextStr; - return orig.call(this, evt, fn, capture, secure); - }; - }, wrappedBuiltIns); - } + while (elem && height++ < MAX_TRAVERSE_HEIGHT) { + nextStr = htmlElementAsString(elem); + // bail out if + // - nextStr is the 'html' element + // - the length of the string that would be created exceeds MAX_OUTPUT_LEN + // (ignore this limit if we are on the first iteration) + if ( + nextStr === 'html' || + (height > 1 && len + out.length * sepLength + nextStr.length >= MAX_OUTPUT_LEN) + ) { + break; } - fill(_window$1, 'setTimeout', wrapTimeFn, wrappedBuiltIns); - fill(_window$1, 'setInterval', wrapTimeFn, wrappedBuiltIns); + out.push(nextStr); - if (_window$1.requestAnimationFrame) { - fill(_window$1, 'requestAnimationFrame', function (orig) { - return function (cb) { - return orig(self.wrap(cb)); - }; - }, wrappedBuiltIns); - } // event targets borrowed from bugsnag-js: - // https://github.com/bugsnag/bugsnag-js/blob/master/src/bugsnag.js#L666 + len += nextStr.length; + elem = elem.parentNode; + } + return out.reverse().join(separator); +} - var eventTargets = ['EventTarget', 'Window', 'Node', 'ApplicationCache', 'AudioTrackList', 'ChannelMergerNode', 'CryptoOperation', 'EventSource', 'FileReader', 'HTMLUnknownElement', 'IDBDatabase', 'IDBRequest', 'IDBTransaction', 'KeyOperation', 'MediaController', 'MessagePort', 'ModalWindow', 'Notification', 'SVGElementInstance', 'Screen', 'TextTrack', 'TextTrackCue', 'TextTrackList', 'WebSocket', 'WebSocketWorker', 'Worker', 'XMLHttpRequest', 'XMLHttpRequestEventTarget', 'XMLHttpRequestUpload']; +/** + * Returns a simple, query-selector representation of a DOM element + * e.g. [HTMLElement] => input#foo.btn[name=baz] + * @param HTMLElement + * @returns {string} + */ +function htmlElementAsString(elem) { + var out = [], + className, + classes, + key, + attr, + i; - for (var i = 0; i < eventTargets.length; i++) { - wrapEventTarget(eventTargets[i]); - } - }, + if (!elem || !elem.tagName) { + return ''; + } - /** - * Instrument browser built-ins w/ breadcrumb capturing - * - XMLHttpRequests - * - DOM interactions (click/typing) - * - window.location changes - * - console - * - * Can be disabled or individually configured via the `autoBreadcrumbs` config option - */ - _instrumentBreadcrumbs: function _instrumentBreadcrumbs() { - var self = this; - var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; - var wrappedBuiltIns = self._wrappedBuiltIns; + out.push(elem.tagName.toLowerCase()); + if (elem.id) { + out.push('#' + elem.id); + } - function wrapProp(prop, xhr) { - if (prop in xhr && isFunction(xhr[prop])) { - fill(xhr, prop, function (orig) { - return self.wrap(orig); - }); // intentionally don't track filled methods on XHR instances - } + className = elem.className; + if (className && isString(className)) { + classes = className.split(/\s+/); + for (i = 0; i < classes.length; i++) { + out.push('.' + classes[i]); } + } + var attrWhitelist = ['type', 'name', 'title', 'alt']; + for (i = 0; i < attrWhitelist.length; i++) { + key = attrWhitelist[i]; + attr = elem.getAttribute(key); + if (attr) { + out.push('[' + key + '="' + attr + '"]'); + } + } + return out.join(''); +} - if (autoBreadcrumbs.xhr && 'XMLHttpRequest' in _window$1) { - var xhrproto = XMLHttpRequest.prototype; - fill(xhrproto, 'open', function (origOpen) { - return function (method, url) { - // preserve arity - // if Sentry key appears in URL, don't capture - if (isString(url) && url.indexOf(self._globalKey) === -1) { - this.__raven_xhr = { - method: method, - url: url, - status_code: null - }; - } - - return origOpen.apply(this, arguments); - }; - }, wrappedBuiltIns); - fill(xhrproto, 'send', function (origSend) { - return function () { - // preserve arity - var xhr = this; - - function onreadystatechangeHandler() { - if (xhr.__raven_xhr && xhr.readyState === 4) { - try { - // touching statusCode in some platforms throws - // an exception - xhr.__raven_xhr.status_code = xhr.status; - } catch (e) { - /* do nothing */ - } - - self.captureBreadcrumb({ - type: 'http', - category: 'xhr', - data: xhr.__raven_xhr - }); - } - } - - var props = ['onload', 'onerror', 'onprogress']; +/** + * Returns true if either a OR b is truthy, but not both + */ +function isOnlyOneTruthy(a, b) { + return !!(!!a ^ !!b); +} - for (var j = 0; j < props.length; j++) { - wrapProp(props[j], xhr); - } +/** + * Returns true if both parameters are undefined + */ +function isBothUndefined(a, b) { + return isUndefined(a) && isUndefined(b); +} - if ('onreadystatechange' in xhr && isFunction(xhr.onreadystatechange)) { - fill(xhr, 'onreadystatechange', function (orig) { - return self.wrap(orig, undefined, onreadystatechangeHandler); - } - /* intentionally don't track this instrumentation */ - ); - } else { - // if onreadystatechange wasn't actually set by the page on this xhr, we - // are free to set our own and capture the breadcrumb - xhr.onreadystatechange = onreadystatechangeHandler; - } +/** + * Returns true if the two input exception interfaces have the same content + */ +function isSameException(ex1, ex2) { + if (isOnlyOneTruthy(ex1, ex2)) return false; - return origSend.apply(this, arguments); - }; - }, wrappedBuiltIns); - } + ex1 = ex1.values[0]; + ex2 = ex2.values[0]; - if (autoBreadcrumbs.xhr && supportsFetch()) { - fill(_window$1, 'fetch', function (origFetch) { - return function () { - // preserve arity - // Make a copy of the arguments to prevent deoptimization - // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments - var args = new Array(arguments.length); - - for (var i = 0; i < args.length; ++i) { - args[i] = arguments[i]; - } + if (ex1.type !== ex2.type || ex1.value !== ex2.value) return false; - var fetchInput = args[0]; - var method = 'GET'; - var url; + // in case both stacktraces are undefined, we can't decide so default to false + if (isBothUndefined(ex1.stacktrace, ex2.stacktrace)) return false; - if (typeof fetchInput === 'string') { - url = fetchInput; - } else if ('Request' in _window$1 && fetchInput instanceof _window$1.Request) { - url = fetchInput.url; + return isSameStacktrace(ex1.stacktrace, ex2.stacktrace); +} - if (fetchInput.method) { - method = fetchInput.method; - } - } else { - url = '' + fetchInput; - } // if Sentry key appears in URL, don't capture, as it's our own request +/** + * Returns true if the two input stack trace interfaces have the same content + */ +function isSameStacktrace(stack1, stack2) { + if (isOnlyOneTruthy(stack1, stack2)) return false; + var frames1 = stack1.frames; + var frames2 = stack2.frames; - if (url.indexOf(self._globalKey) !== -1) { - return origFetch.apply(this, args); - } + // Exit early if frame count differs + if (frames1.length !== frames2.length) return false; - if (args[1] && args[1].method) { - method = args[1].method; - } + // Iterate through every frame; bail out if anything differs + var a, b; + for (var i = 0; i < frames1.length; i++) { + a = frames1[i]; + b = frames2[i]; + if ( + a.filename !== b.filename || + a.lineno !== b.lineno || + a.colno !== b.colno || + a['function'] !== b['function'] + ) + return false; + } + return true; +} - var fetchData = { - method: method, - url: url, - status_code: null - }; - return origFetch.apply(this, args).then(function (response) { - fetchData.status_code = response.status; - self.captureBreadcrumb({ - type: 'http', - category: 'fetch', - data: fetchData - }); - return response; - }); - }; - }, wrappedBuiltIns); - } // Capture breadcrumbs from any click that is unhandled / bubbled up all the way - // to the document. Do this before we instrument addEventListener. +/** + * Polyfill a method + * @param obj object e.g. `document` + * @param name method name present on object e.g. `addEventListener` + * @param replacement replacement function + * @param track {optional} record instrumentation to an array + */ +function fill(obj, name, replacement, track) { + if (obj == null) return; + var orig = obj[name]; + obj[name] = replacement(orig); + obj[name].__raven__ = true; + obj[name].__orig__ = orig; + if (track) { + track.push([obj, name, orig]); + } +} +/** + * Join values in array + * @param input array of values to be joined together + * @param delimiter string to be placed in-between values + * @returns {string} + */ +function safeJoin(input, delimiter) { + if (!isArray(input)) return ''; - if (autoBreadcrumbs.dom && this._hasDocument) { - if (_document.addEventListener) { - _document.addEventListener('click', self._breadcrumbEventHandler('click'), false); + var output = []; - _document.addEventListener('keypress', self._keypressEventHandler(), false); - } else { - // IE8 Compatibility - _document.attachEvent('onclick', self._breadcrumbEventHandler('click')); + for (var i = 0; i < input.length; i++) { + try { + output.push(String(input[i])); + } catch (e) { + output.push('[value cannot be serialized]'); + } + } - _document.attachEvent('onkeypress', self._keypressEventHandler()); - } - } // record navigation (URL) changes - // NOTE: in Chrome App environment, touching history.pushState, *even inside - // a try/catch block*, will cause Chrome to output an error to console.error - // borrowed from: https://github.com/angular/angular.js/pull/13945/files + return output.join(delimiter); +} +// Default Node.js REPL depth +var MAX_SERIALIZE_EXCEPTION_DEPTH = 3; +// 50kB, as 100kB is max payload size, so half sounds reasonable +var MAX_SERIALIZE_EXCEPTION_SIZE = 50 * 1024; +var MAX_SERIALIZE_KEYS_LENGTH = 40; - var chrome = _window$1.chrome; - var isChromePackagedApp = chrome && chrome.app && chrome.app.runtime; - var hasPushAndReplaceState = !isChromePackagedApp && _window$1.history && history.pushState && history.replaceState; +function utf8Length(value) { + return ~-encodeURI(value).split(/%..|./).length; +} - if (autoBreadcrumbs.location && hasPushAndReplaceState) { - // TODO: remove onpopstate handler on uninstall() - var oldOnPopState = _window$1.onpopstate; +function jsonSize(value) { + return utf8Length(JSON.stringify(value)); +} - _window$1.onpopstate = function () { - var currentHref = self._location.href; +function serializeValue(value) { + if (typeof value === 'string') { + var maxLength = 40; + return truncate(value, maxLength); + } else if ( + typeof value === 'number' || + typeof value === 'boolean' || + typeof value === 'undefined' + ) { + return value; + } - self._captureUrlChange(self._lastHref, currentHref); + var type = Object.prototype.toString.call(value); - if (oldOnPopState) { - return oldOnPopState.apply(this, arguments); - } - }; + // Node.js REPL notation + if (type === '[object Object]') return '[Object]'; + if (type === '[object Array]') return '[Array]'; + if (type === '[object Function]') + return value.name ? '[Function: ' + value.name + ']' : '[Function]'; - var historyReplacementFunction = function historyReplacementFunction(origHistFunction) { - // note history.pushState.length is 0; intentionally not declaring - // params to preserve 0 arity - return function () - /* state, title, url */ - { - var url = arguments.length > 2 ? arguments[2] : undefined; // url argument is optional + return value; +} - if (url) { - // coerce to string (this is what pushState does) - self._captureUrlChange(self._lastHref, url + ''); - } +function serializeObject(value, depth) { + if (depth === 0) return serializeValue(value); + + if (isPlainObject(value)) { + return Object.keys(value).reduce(function(acc, key) { + acc[key] = serializeObject(value[key], depth - 1); + return acc; + }, {}); + } else if (Array.isArray(value)) { + return value.map(function(val) { + return serializeObject(val, depth - 1); + }); + } - return origHistFunction.apply(this, arguments); - }; - }; + return serializeValue(value); +} - fill(history, 'pushState', historyReplacementFunction, wrappedBuiltIns); - fill(history, 'replaceState', historyReplacementFunction, wrappedBuiltIns); - } +function serializeException(ex, depth, maxSize) { + if (!isPlainObject(ex)) return ex; - if (autoBreadcrumbs.console && 'console' in _window$1 && console.log) { - // console - var consoleMethodCallback = function consoleMethodCallback(msg, data) { - self.captureBreadcrumb({ - message: msg, - level: data.level, - category: 'console' - }); - }; + depth = typeof depth !== 'number' ? MAX_SERIALIZE_EXCEPTION_DEPTH : depth; + maxSize = typeof depth !== 'number' ? MAX_SERIALIZE_EXCEPTION_SIZE : maxSize; - each(['debug', 'info', 'warn', 'error', 'log'], function (_, level) { - wrapConsoleMethod(console, level, consoleMethodCallback); - }); - } - }, - _restoreBuiltIns: function _restoreBuiltIns() { - // restore any wrapped builtins - var builtin; + var serialized = serializeObject(ex, depth); - while (this._wrappedBuiltIns.length) { - builtin = this._wrappedBuiltIns.shift(); - var obj = builtin[0], - name = builtin[1], - orig = builtin[2]; - obj[name] = orig; - } - }, - _restoreConsole: function _restoreConsole() { - // eslint-disable-next-line guard-for-in - for (var method in this._originalConsoleMethods) { - this._originalConsole[method] = this._originalConsoleMethods[method]; - } - }, - _drainPlugins: function _drainPlugins() { - var self = this; // FIX ME TODO + if (jsonSize(stringify(serialized)) > maxSize) { + return serializeException(ex, depth - 1); + } - each(this._plugins, function (_, plugin) { - var installer = plugin[0]; - var args = plugin[1]; - installer.apply(self, [self].concat(args)); - }); - }, - _parseDSN: function _parseDSN(str) { - var m = dsnPattern.exec(str), - dsn = {}, - i = 7; + return serialized; +} - try { - while (i--) { - dsn[dsnKeys[i]] = m[i] || ''; - } - } catch (e) { - throw new configError('Invalid DSN: ' + str); - } +function serializeKeysForMessage(keys, maxLength) { + if (typeof keys === 'number' || typeof keys === 'string') return keys.toString(); + if (!Array.isArray(keys)) return ''; - if (dsn.pass && !this._globalOptions.allowSecretKey) { - throw new configError('Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key'); - } + keys = keys.filter(function(key) { + return typeof key === 'string'; + }); + if (keys.length === 0) return '[object has no keys]'; - return dsn; - }, - _getGlobalServer: function _getGlobalServer(uri) { - // assemble the endpoint from the uri pieces - var globalServer = '//' + uri.host + (uri.port ? ':' + uri.port : ''); + maxLength = typeof maxLength !== 'number' ? MAX_SERIALIZE_KEYS_LENGTH : maxLength; + if (keys[0].length >= maxLength) return keys[0]; - if (uri.protocol) { - globalServer = uri.protocol + ':' + globalServer; - } + for (var usedKeys = keys.length; usedKeys > 0; usedKeys--) { + var serialized = keys.slice(0, usedKeys).join(', '); + if (serialized.length > maxLength) continue; + if (usedKeys === keys.length) return serialized; + return serialized + '\u2026'; + } - return globalServer; - }, - _handleOnErrorStackInfo: function _handleOnErrorStackInfo() { - // if we are intentionally ignoring errors via onerror, bail out - if (!this._ignoreOnError) { - this._handleStackInfo.apply(this, arguments); - } - }, - _handleStackInfo: function _handleStackInfo(stackInfo, options) { - var frames = this._prepareFrames(stackInfo, options); + return ''; +} - this._triggerEvent('handle', { - stackInfo: stackInfo, - options: options - }); +function sanitize(input, sanitizeKeys) { + if (!isArray(sanitizeKeys) || (isArray(sanitizeKeys) && sanitizeKeys.length === 0)) + return input; - this._processException(stackInfo.name, stackInfo.message, stackInfo.url, stackInfo.lineno, frames, options); - }, - _prepareFrames: function _prepareFrames(stackInfo, options) { - var self = this; - var frames = []; + var sanitizeRegExp = joinRegExp(sanitizeKeys); + var sanitizeMask = '********'; + var safeInput; - if (stackInfo.stack && stackInfo.stack.length) { - each(stackInfo.stack, function (i, stack) { - var frame = self._normalizeFrame(stack, stackInfo.url); + try { + safeInput = JSON.parse(stringify(input)); + } catch (o_O) { + return input; + } - if (frame) { - frames.push(frame); - } - }); // e.g. frames captured via captureMessage throw + function sanitizeWorker(workerInput) { + if (isArray(workerInput)) { + return workerInput.map(function(val) { + return sanitizeWorker(val); + }); + } - if (options && options.trimHeadFrames) { - for (var j = 0; j < options.trimHeadFrames && j < frames.length; j++) { - frames[j].in_app = false; + if (isPlainObject(workerInput)) { + return Object.keys(workerInput).reduce(function(acc, k) { + if (sanitizeRegExp.test(k)) { + acc[k] = sanitizeMask; + } else { + acc[k] = sanitizeWorker(workerInput[k]); } - } + return acc; + }, {}); } - frames = frames.slice(0, this._globalOptions.stackTraceLimit); - return frames; - }, - _normalizeFrame: function _normalizeFrame(frame, stackInfoUrl) { - // normalize the frames data - var normalized = { - filename: frame.url, - lineno: frame.line, - colno: frame.column, - function: frame.func || '?' - }; // Case when we don't have any information about the error - // E.g. throwing a string or raw object, instead of an `Error` in Firefox - // Generating synthetic error doesn't add any value here - // - // We should probably somehow let a user know that they should fix their code + return workerInput; + } - if (!frame.url) { - normalized.filename = stackInfoUrl; // fallback to whole stacks url from onerror handler - } + return sanitizeWorker(safeInput); +} - normalized.in_app = !( // determine if an exception came from outside of our app - // first we check the global includePaths list. - !!this._globalOptions.includePaths.test && !this._globalOptions.includePaths.test(normalized.filename) || // Now we check for fun, if the function name is Raven or TraceKit - /(Raven|TraceKit)\./.test(normalized['function']) || // finally, we do a last ditch effort and check for raven.min.js - /raven\.(min\.)?js$/.test(normalized.filename)); - return normalized; - }, - _processException: function _processException(type, message, fileurl, lineno, frames, options) { - var prefixedMessage = (type ? type + ': ' : '') + (message || ''); +module.exports = { + isObject: isObject, + isError: isError, + isErrorEvent: isErrorEvent, + isUndefined: isUndefined, + isFunction: isFunction, + isPlainObject: isPlainObject, + isString: isString, + isArray: isArray, + isEmptyObject: isEmptyObject, + supportsErrorEvent: supportsErrorEvent, + supportsFetch: supportsFetch, + supportsReferrerPolicy: supportsReferrerPolicy, + supportsPromiseRejectionEvent: supportsPromiseRejectionEvent, + wrappedCallback: wrappedCallback, + each: each, + objectMerge: objectMerge, + truncate: truncate, + objectFrozen: objectFrozen, + hasKey: hasKey, + joinRegExp: joinRegExp, + urlencode: urlencode, + uuid4: uuid4, + htmlTreeAsString: htmlTreeAsString, + htmlElementAsString: htmlElementAsString, + isSameException: isSameException, + isSameStacktrace: isSameStacktrace, + parseUrl: parseUrl, + fill: fill, + safeJoin: safeJoin, + serializeException: serializeException, + serializeKeysForMessage: serializeKeysForMessage, + sanitize: sanitize +}; - if (!!this._globalOptions.ignoreErrors.test && (this._globalOptions.ignoreErrors.test(message) || this._globalOptions.ignoreErrors.test(prefixedMessage))) { - return; - } +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"11":11}],10:[function(_dereq_,module,exports){ +(function (global){ +var utils = _dereq_(9); - var stacktrace; +/* + TraceKit - Cross brower stack traces - if (frames && frames.length) { - fileurl = frames[0].filename || fileurl; // Sentry expects frames oldest to newest - // and JS sends them as newest to oldest + This was originally forked from github.com/occ/TraceKit, but has since been + largely re-written and is now maintained as part of raven-js. Tests for + this are in test/vendor. - frames.reverse(); - stacktrace = { - frames: frames - }; - } else if (fileurl) { - stacktrace = { - frames: [{ - filename: fileurl, - lineno: lineno, - in_app: true - }] - }; - } + MIT license +*/ - if (!!this._globalOptions.ignoreUrls.test && this._globalOptions.ignoreUrls.test(fileurl)) { - return; - } +var TraceKit = { + collectWindowErrors: true, + debug: false +}; - if (!!this._globalOptions.whitelistUrls.test && !this._globalOptions.whitelistUrls.test(fileurl)) { - return; - } +// This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) +var _window = + typeof window !== 'undefined' + ? window + : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; - var data = objectMerge({ - // sentry.interfaces.Exception - exception: { - values: [{ - type: type, - value: message, - stacktrace: stacktrace - }] - }, - culprit: fileurl - }, options); // Fire away! +// global reference to slice +var _slice = [].slice; +var UNKNOWN_FUNCTION = '?'; - this._send(data); - }, - _trimPacket: function _trimPacket(data) { - // For now, we only want to truncate the two different messages - // but this could/should be expanded to just trim everything - var max = this._globalOptions.maxMessageLength; +// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error#Error_types +var ERROR_TYPES_RE = /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/; - if (data.message) { - data.message = truncate(data.message, max); - } +function getLocationHref() { + if (typeof document === 'undefined' || document.location == null) return ''; - if (data.exception) { - var exception = data.exception.values[0]; - exception.value = truncate(exception.value, max); - } + return document.location.href; +} - var request = data.request; +/** + * TraceKit.report: cross-browser processing of unhandled exceptions + * + * Syntax: + * TraceKit.report.subscribe(function(stackInfo) { ... }) + * TraceKit.report.unsubscribe(function(stackInfo) { ... }) + * TraceKit.report(exception) + * try { ...code... } catch(ex) { TraceKit.report(ex); } + * + * Supports: + * - Firefox: full stack trace with line numbers, plus column number + * on top frame; column number is not guaranteed + * - Opera: full stack trace with line and column numbers + * - Chrome: full stack trace with line and column numbers + * - Safari: line and column number for the top frame only; some frames + * may be missing, and column number is not guaranteed + * - IE: line and column number for the top frame only; some frames + * may be missing, and column number is not guaranteed + * + * In theory, TraceKit should work on all of the following versions: + * - IE5.5+ (only 8.0 tested) + * - Firefox 0.9+ (only 3.5+ tested) + * - Opera 7+ (only 10.50 tested; versions 9 and earlier may require + * Exceptions Have Stacktrace to be enabled in opera:config) + * - Safari 3+ (only 4+ tested) + * - Chrome 1+ (only 5+ tested) + * - Konqueror 3.5+ (untested) + * + * Requires TraceKit.computeStackTrace. + * + * Tries to catch all unhandled exceptions and report them to the + * subscribed handlers. Please note that TraceKit.report will rethrow the + * exception. This is REQUIRED in order to get a useful stack trace in IE. + * If the exception does not reach the top of the browser, you will only + * get a stack trace from the point where TraceKit.report was called. + * + * Handlers receive a stackInfo object as described in the + * TraceKit.computeStackTrace docs. + */ +TraceKit.report = (function reportModuleWrapper() { + var handlers = [], + lastArgs = null, + lastException = null, + lastExceptionStack = null; - if (request) { - if (request.url) { - request.url = truncate(request.url, this._globalOptions.maxUrlLength); + /** + * Add a crash handler. + * @param {Function} handler + */ + function subscribe(handler) { + installGlobalHandler(); + handlers.push(handler); + } + + /** + * Remove a crash handler. + * @param {Function} handler + */ + function unsubscribe(handler) { + for (var i = handlers.length - 1; i >= 0; --i) { + if (handlers[i] === handler) { + handlers.splice(i, 1); } + } + } - if (request.Referer) { - request.Referer = truncate(request.Referer, this._globalOptions.maxUrlLength); + /** + * Remove all crash handlers. + */ + function unsubscribeAll() { + uninstallGlobalHandler(); + handlers = []; + } + + /** + * Dispatch stack information to all handlers. + * @param {Object.} stack + */ + function notifyHandlers(stack, isWindowError) { + var exception = null; + if (isWindowError && !TraceKit.collectWindowErrors) { + return; + } + for (var i in handlers) { + if (handlers.hasOwnProperty(i)) { + try { + handlers[i].apply(null, [stack].concat(_slice.call(arguments, 2))); + } catch (inner) { + exception = inner; + } } } - if (data.breadcrumbs && data.breadcrumbs.values) this._trimBreadcrumbs(data.breadcrumbs); - return data; - }, + if (exception) { + throw exception; + } + } + + var _oldOnerrorHandler, _onErrorHandlerInstalled; /** - * Truncate breadcrumb values (right now just URLs) + * Ensures all global unhandled exceptions are recorded. + * Supported by Gecko and IE. + * @param {string} msg Error message. + * @param {string} url URL of script that generated the exception. + * @param {(number|string)} lineNo The line number at which the error + * occurred. + * @param {?(number|string)} colNo The column number at which the error + * occurred. + * @param {?Error} ex The actual Error object. */ - _trimBreadcrumbs: function _trimBreadcrumbs(breadcrumbs) { - // known breadcrumb properties with urls - // TODO: also consider arbitrary prop values that start with (https?)?:// - var urlProps = ['to', 'from', 'url'], - urlProp, - crumb, - data; + function traceKitWindowOnError(msg, url, lineNo, colNo, ex) { + var stack = null; + // If 'ex' is ErrorEvent, get real Error from inside + var exception = utils.isErrorEvent(ex) ? ex.error : ex; + // If 'msg' is ErrorEvent, get real message from inside + var message = utils.isErrorEvent(msg) ? msg.message : msg; - for (var i = 0; i < breadcrumbs.values.length; ++i) { - crumb = breadcrumbs.values[i]; - if (!crumb.hasOwnProperty('data') || !isObject(crumb.data) || objectFrozen(crumb.data)) continue; - data = objectMerge({}, crumb.data); + if (lastExceptionStack) { + TraceKit.computeStackTrace.augmentStackTraceWithInitialElement( + lastExceptionStack, + url, + lineNo, + message + ); + processLastException(); + } else if (exception && utils.isError(exception)) { + // non-string `exception` arg; attempt to extract stack trace - for (var j = 0; j < urlProps.length; ++j) { - urlProp = urlProps[j]; + // New chrome and blink send along a real error object + // Let's just report that like a normal error. + // See: https://mikewest.org/2013/08/debugging-runtime-errors-with-window-onerror + stack = TraceKit.computeStackTrace(exception); + notifyHandlers(stack, true); + } else { + var location = { + url: url, + line: lineNo, + column: colNo + }; - if (data.hasOwnProperty(urlProp) && data[urlProp]) { - data[urlProp] = truncate(data[urlProp], this._globalOptions.maxUrlLength); + var name = undefined; + var groups; + + if ({}.toString.call(message) === '[object String]') { + var groups = message.match(ERROR_TYPES_RE); + if (groups) { + name = groups[1]; + message = groups[2]; } } - breadcrumbs.values[i].data = data; - } - }, - _getHttpData: function _getHttpData() { - if (!this._hasNavigator && !this._hasDocument) return; - var httpData = {}; + location.func = UNKNOWN_FUNCTION; - if (this._hasNavigator && _navigator.userAgent) { - httpData.headers = { - 'User-Agent': navigator.userAgent + stack = { + name: name, + message: message, + url: getLocationHref(), + stack: [location] }; - } // Check in `window` instead of `document`, as we may be in ServiceWorker environment - - - if (_window$1.location && _window$1.location.href) { - httpData.url = _window$1.location.href; + notifyHandlers(stack, true); } - if (this._hasDocument && _document.referrer) { - if (!httpData.headers) httpData.headers = {}; - httpData.headers.Referer = _document.referrer; + if (_oldOnerrorHandler) { + return _oldOnerrorHandler.apply(this, arguments); } - return httpData; - }, - _resetBackoff: function _resetBackoff() { - this._backoffDuration = 0; - this._backoffStart = null; - }, - _shouldBackoff: function _shouldBackoff() { - return this._backoffDuration && now() - this._backoffStart < this._backoffDuration; - }, - - /** - * Returns true if the in-process data payload matches the signature - * of the previously-sent data - * - * NOTE: This has to be done at this level because TraceKit can generate - * data from window.onerror WITHOUT an exception object (IE8, IE9, - * other old browsers). This can take the form of an "exception" - * data object with a single frame (derived from the onerror args). - */ - _isRepeatData: function _isRepeatData(current) { - var last = this._lastData; - if (!last || current.message !== last.message || // defined for captureMessage - current.culprit !== last.culprit // defined for captureException/onerror - ) return false; // Stacktrace interface (i.e. from captureMessage) + return false; + } - if (current.stacktrace || last.stacktrace) { - return isSameStacktrace(current.stacktrace, last.stacktrace); - } else if (current.exception || last.exception) { - // Exception interface (i.e. from captureException/onerror) - return isSameException(current.exception, last.exception); + function installGlobalHandler() { + if (_onErrorHandlerInstalled) { + return; } + _oldOnerrorHandler = _window.onerror; + _window.onerror = traceKitWindowOnError; + _onErrorHandlerInstalled = true; + } - return true; - }, - _setBackoffState: function _setBackoffState(request) { - // If we are already in a backoff state, don't change anything - if (this._shouldBackoff()) { + function uninstallGlobalHandler() { + if (!_onErrorHandlerInstalled) { return; } + _window.onerror = _oldOnerrorHandler; + _onErrorHandlerInstalled = false; + _oldOnerrorHandler = undefined; + } - var status = request.status; // 400 - project_id doesn't exist or some other fatal - // 401 - invalid/revoked dsn - // 429 - too many requests - - if (!(status === 400 || status === 401 || status === 429)) return; - var retry; + function processLastException() { + var _lastExceptionStack = lastExceptionStack, + _lastArgs = lastArgs; + lastArgs = null; + lastExceptionStack = null; + lastException = null; + notifyHandlers.apply(null, [_lastExceptionStack, false].concat(_lastArgs)); + } - try { - // If Retry-After is not in Access-Control-Expose-Headers, most - // browsers will throw an exception trying to access it - if (supportsFetch()) { - retry = request.headers.get('Retry-After'); + /** + * Reports an unhandled Error to TraceKit. + * @param {Error} ex + * @param {?boolean} rethrow If false, do not re-throw the exception. + * Only used for window.onerror to not cause an infinite loop of + * rethrowing. + */ + function report(ex, rethrow) { + var args = _slice.call(arguments, 1); + if (lastExceptionStack) { + if (lastException === ex) { + return; // already caught by an inner catch block, ignore } else { - retry = request.getResponseHeader('Retry-After'); - } // Retry-After is returned in seconds - - - retry = parseInt(retry, 10) * 1000; - } catch (e) { - /* eslint no-empty:0 */ + processLastException(); + } } - this._backoffDuration = retry ? // If Sentry server returned a Retry-After value, use it - retry : // Otherwise, double the last backoff duration (starts at 1 sec) - this._backoffDuration * 2 || 1000; - this._backoffStart = now(); - }, - _send: function _send(data) { - var globalOptions = this._globalOptions; - - var baseData = { - project: this._globalProject, - logger: globalOptions.logger, - platform: 'javascript' - }, - httpData = this._getHttpData(); - - if (httpData) { - baseData.request = httpData; - } // HACK: delete `trimHeadFrames` to prevent from appearing in outbound payload - - - if (data.trimHeadFrames) delete data.trimHeadFrames; - data = objectMerge(baseData, data); // Merge in the tags and extra separately since objectMerge doesn't handle a deep merge - - data.tags = objectMerge(objectMerge({}, this._globalContext.tags), data.tags); - data.extra = objectMerge(objectMerge({}, this._globalContext.extra), data.extra); // Send along our own collected metadata with extra + var stack = TraceKit.computeStackTrace(ex); + lastExceptionStack = stack; + lastException = ex; + lastArgs = args; - data.extra['session:duration'] = now() - this._startTime; + // If the stack trace is incomplete, wait for 2 seconds for + // slow slow IE to see if onerror occurs or not before reporting + // this exception; otherwise, we will end up with an incomplete + // stack trace + setTimeout(function() { + if (lastException === ex) { + processLastException(); + } + }, stack.incomplete ? 2000 : 0); - if (this._breadcrumbs && this._breadcrumbs.length > 0) { - // intentionally make shallow copy so that additions - // to breadcrumbs aren't accidentally sent in this request - data.breadcrumbs = { - values: [].slice.call(this._breadcrumbs, 0) - }; + if (rethrow !== false) { + throw ex; // re-throw to propagate to the top level (and cause window.onerror) } + } - if (this._globalContext.user) { - // sentry.interfaces.User - data.user = this._globalContext.user; - } // Include the environment if it's defined in globalOptions - + report.subscribe = subscribe; + report.unsubscribe = unsubscribe; + report.uninstall = unsubscribeAll; + return report; +})(); - if (globalOptions.environment) data.environment = globalOptions.environment; // Include the release if it's defined in globalOptions +/** + * TraceKit.computeStackTrace: cross-browser stack traces in JavaScript + * + * Syntax: + * s = TraceKit.computeStackTrace(exception) // consider using TraceKit.report instead (see below) + * Returns: + * s.name - exception name + * s.message - exception message + * s.stack[i].url - JavaScript or HTML file URL + * s.stack[i].func - function name, or empty for anonymous functions (if guessing did not work) + * s.stack[i].args - arguments passed to the function, if known + * s.stack[i].line - line number, if known + * s.stack[i].column - column number, if known + * + * Supports: + * - Firefox: full stack trace with line numbers and unreliable column + * number on top frame + * - Opera 10: full stack trace with line and column numbers + * - Opera 9-: full stack trace with line numbers + * - Chrome: full stack trace with line and column numbers + * - Safari: line and column number for the topmost stacktrace element + * only + * - IE: no line numbers whatsoever + * + * Tries to guess names of anonymous functions by looking for assignments + * in the source code. In IE and Safari, we have to guess source file names + * by searching for function bodies inside all page scripts. This will not + * work for scripts that are loaded cross-domain. + * Here be dragons: some function names may be guessed incorrectly, and + * duplicate functions may be mismatched. + * + * TraceKit.computeStackTrace should only be used for tracing purposes. + * Logging of unhandled exceptions should be done with TraceKit.report, + * which builds on top of TraceKit.computeStackTrace and provides better + * IE support by utilizing the window.onerror event to retrieve information + * about the top of the stack. + * + * Note: In IE and Safari, no stack trace is recorded on the Error object, + * so computeStackTrace instead walks its *own* chain of callers. + * This means that: + * * in Safari, some methods may be missing from the stack trace; + * * in IE, the topmost function in the stack trace will always be the + * caller of computeStackTrace. + * + * This is okay for tracing (because you are likely to be calling + * computeStackTrace from the function you want to be the topmost element + * of the stack trace anyway), but not okay for logging unhandled + * exceptions (because your catch block will likely be far away from the + * inner function that actually caused the exception). + * + */ +TraceKit.computeStackTrace = (function computeStackTraceWrapper() { + // Contents of Exception in various browsers. + // + // SAFARI: + // ex.message = Can't find variable: qq + // ex.line = 59 + // ex.sourceId = 580238192 + // ex.sourceURL = http://... + // ex.expressionBeginOffset = 96 + // ex.expressionCaretOffset = 98 + // ex.expressionEndOffset = 98 + // ex.name = ReferenceError + // + // FIREFOX: + // ex.message = qq is not defined + // ex.fileName = http://... + // ex.lineNumber = 59 + // ex.columnNumber = 69 + // ex.stack = ...stack trace... (see the example below) + // ex.name = ReferenceError + // + // CHROME: + // ex.message = qq is not defined + // ex.name = ReferenceError + // ex.type = not_defined + // ex.arguments = ['aa'] + // ex.stack = ...stack trace... + // + // INTERNET EXPLORER: + // ex.message = ... + // ex.name = ReferenceError + // + // OPERA: + // ex.message = ...message... (see the example below) + // ex.name = ReferenceError + // ex.opera#sourceloc = 11 (pretty much useless, duplicates the info in ex.message) + // ex.stacktrace = n/a; see 'opera:config#UserPrefs|Exceptions Have Stacktrace' - if (globalOptions.release) data.release = globalOptions.release; // Include server_name if it's defined in globalOptions + /** + * Computes stack trace information from the stack property. + * Chrome and Gecko use this property. + * @param {Error} ex + * @return {?Object.} Stack trace information. + */ + function computeStackTraceFromStackProp(ex) { + if (typeof ex.stack === 'undefined' || !ex.stack) return; - if (globalOptions.serverName) data.server_name = globalOptions.serverName; // Cleanup empty properties before sending them to the server + var chrome = /^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i; + var winjs = /^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i; + // NOTE: blob urls are now supposed to always have an origin, therefore it's format + // which is `blob:http://url/path/with-some-uuid`, is matched by `blob.*?:\/` as well + var gecko = /^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i; + // Used to additionally parse URL/line/column from eval frames + var geckoEval = /(\S+) line (\d+)(?: > eval line \d+)* > eval/i; + var chromeEval = /\((\S*)(?::(\d+))(?::(\d+))\)/; + var lines = ex.stack.split('\n'); + var stack = []; + var submatch; + var parts; + var element; + var reference = /^(.*) is undefined$/.exec(ex.message); - Object.keys(data).forEach(function (key) { - if (data[key] == null || data[key] === '' || isEmptyObject(data[key])) { - delete data[key]; + for (var i = 0, j = lines.length; i < j; ++i) { + if ((parts = chrome.exec(lines[i]))) { + var isNative = parts[2] && parts[2].indexOf('native') === 0; // start of line + var isEval = parts[2] && parts[2].indexOf('eval') === 0; // start of line + if (isEval && (submatch = chromeEval.exec(parts[2]))) { + // throw out eval line/column and use top-most line/column number + parts[2] = submatch[1]; // url + parts[3] = submatch[2]; // line + parts[4] = submatch[3]; // column + } + element = { + url: !isNative ? parts[2] : null, + func: parts[1] || UNKNOWN_FUNCTION, + args: isNative ? [parts[2]] : [], + line: parts[3] ? +parts[3] : null, + column: parts[4] ? +parts[4] : null + }; + } else if ((parts = winjs.exec(lines[i]))) { + element = { + url: parts[2], + func: parts[1] || UNKNOWN_FUNCTION, + args: [], + line: +parts[3], + column: parts[4] ? +parts[4] : null + }; + } else if ((parts = gecko.exec(lines[i]))) { + var isEval = parts[3] && parts[3].indexOf(' > eval') > -1; + if (isEval && (submatch = geckoEval.exec(parts[3]))) { + // throw out eval line/column and use top-most line number + parts[3] = submatch[1]; + parts[4] = submatch[2]; + parts[5] = null; // no column when eval + } else if (i === 0 && !parts[5] && typeof ex.columnNumber !== 'undefined') { + // FireFox uses this awesome columnNumber property for its top frame + // Also note, Firefox's column number is 0-based and everything else expects 1-based, + // so adding 1 + // NOTE: this hack doesn't work if top-most frame is eval + stack[0].column = ex.columnNumber + 1; + } + element = { + url: parts[3], + func: parts[1] || UNKNOWN_FUNCTION, + args: parts[2] ? parts[2].split(',') : [], + line: parts[4] ? +parts[4] : null, + column: parts[5] ? +parts[5] : null + }; + } else { + continue; } - }); - if (isFunction(globalOptions.dataCallback)) { - data = globalOptions.dataCallback(data) || data; - } // Why?????????? - - - if (!data || isEmptyObject(data)) { - return; - } // Check if the request should be filtered or not - - - if (isFunction(globalOptions.shouldSendCallback) && !globalOptions.shouldSendCallback(data)) { - return; - } // Backoff state: Sentry server previously responded w/ an error (e.g. 429 - too many requests), - // so drop requests until "cool-off" period has elapsed. - - - if (this._shouldBackoff()) { - this._logDebug('warn', 'Raven dropped error due to backoff: ', data); - - return; - } - - if (typeof globalOptions.sampleRate === 'number') { - if (Math.random() < globalOptions.sampleRate) { - this._sendProcessedPayload(data); + if (!element.func && element.line) { + element.func = UNKNOWN_FUNCTION; } - } else { - this._sendProcessedPayload(data); - } - }, - _getUuid: function _getUuid() { - return uuid4(); - }, - _sendProcessedPayload: function _sendProcessedPayload(data, callback) { - var self = this; - var globalOptions = this._globalOptions; - if (!this.isSetup()) return; // Try and clean up the packet before sending by truncating long values - - data = this._trimPacket(data); // ideally duplicate error testing should occur *before* dataCallback/shouldSendCallback, - // but this would require copying an un-truncated copy of the data packet, which can be - // arbitrarily deep (extra_data) -- could be worthwhile? will revisit - - if (!this._globalOptions.allowDuplicates && this._isRepeatData(data)) { - this._logDebug('warn', 'Raven dropped repeat event: ', data); - - return; - } // Send along an event_id if not explicitly passed. - // This event_id can be used to reference the error within Sentry itself. - // Set lastEventId after we know the error should actually be sent - - - this._lastEventId = data.event_id || (data.event_id = this._getUuid()); // Store outbound payload after trim - - this._lastData = data; - - this._logDebug('debug', 'Raven about to send:', data); - - var auth = { - sentry_version: '7', - sentry_client: 'raven-js/' + this.VERSION, - sentry_key: this._globalKey - }; - if (this._globalSecret) { - auth.sentry_secret = this._globalSecret; + stack.push(element); } - var exception = data.exception && data.exception.values[0]; // only capture 'sentry' breadcrumb is autoBreadcrumbs is truthy - - if (this._globalOptions.autoBreadcrumbs && this._globalOptions.autoBreadcrumbs.sentry) { - this.captureBreadcrumb({ - category: 'sentry', - message: exception ? (exception.type ? exception.type + ': ' : '') + exception.value : data.message, - event_id: data.event_id, - level: data.level || 'error' // presume error unless specified - - }); + if (!stack.length) { + return null; } - var url = this._globalEndpoint; + return { + name: ex.name, + message: ex.message, + url: getLocationHref(), + stack: stack + }; + } - (globalOptions.transport || this._makeRequest).call(this, { + /** + * Adds information about the first frame to incomplete stack traces. + * Safari and IE require this to get complete data on the first frame. + * @param {Object.} stackInfo Stack trace information from + * one of the compute* methods. + * @param {string} url The URL of the script that caused an error. + * @param {(number|string)} lineNo The line number of the script that + * caused an error. + * @param {string=} message The error generated by the browser, which + * hopefully contains the name of the object that caused the error. + * @return {boolean} Whether or not the stack information was + * augmented. + */ + function augmentStackTraceWithInitialElement(stackInfo, url, lineNo, message) { + var initial = { url: url, - auth: auth, - data: data, - options: globalOptions, - onSuccess: function success() { - self._resetBackoff(); + line: lineNo + }; - self._triggerEvent('success', { - data: data, - src: url - }); + if (initial.url && initial.line) { + stackInfo.incomplete = false; - callback && callback(); - }, - onError: function failure(error) { - self._logDebug('error', 'Raven transport failed to send: ', error); + if (!initial.func) { + initial.func = UNKNOWN_FUNCTION; + } - if (error.request) { - self._setBackoffState(error.request); + if (stackInfo.stack.length > 0) { + if (stackInfo.stack[0].url === initial.url) { + if (stackInfo.stack[0].line === initial.line) { + return false; // already in stack trace + } else if ( + !stackInfo.stack[0].line && + stackInfo.stack[0].func === initial.func + ) { + stackInfo.stack[0].line = initial.line; + return false; + } } - - self._triggerEvent('failure', { - data: data, - src: url - }); - - error = error || new Error('Raven send failed (no additional details provided)'); - callback && callback(error); } - }); - }, - _makeRequest: function _makeRequest(opts) { - // Auth is intentionally sent as part of query string (NOT as custom HTTP header) to avoid preflight CORS requests - var url = opts.url + '?' + urlencode(opts.auth); - var evaluatedHeaders = null; - var evaluatedFetchParameters = {}; - - if (opts.options.headers) { - evaluatedHeaders = this._evaluateHash(opts.options.headers); - } - if (opts.options.fetchParameters) { - evaluatedFetchParameters = this._evaluateHash(opts.options.fetchParameters); + stackInfo.stack.unshift(initial); + stackInfo.partial = true; + return true; + } else { + stackInfo.incomplete = true; } - if (supportsFetch()) { - evaluatedFetchParameters.body = stringify_1(opts.data); - var defaultFetchOptions = objectMerge({}, this._fetchDefaults); - var fetchOptions = objectMerge(defaultFetchOptions, evaluatedFetchParameters); + return false; + } - if (evaluatedHeaders) { - fetchOptions.headers = evaluatedHeaders; + /** + * Computes stack trace information by walking the arguments.caller + * chain at the time the exception occurred. This will cause earlier + * frames to be missed but is the only way to get any stack trace in + * Safari and IE. The top frame is restored by + * {@link augmentStackTraceWithInitialElement}. + * @param {Error} ex + * @return {?Object.} Stack trace information. + */ + function computeStackTraceByWalkingCallerChain(ex, depth) { + var functionName = /function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i, + stack = [], + funcs = {}, + recursion = false, + parts, + item, + source; + + for ( + var curr = computeStackTraceByWalkingCallerChain.caller; + curr && !recursion; + curr = curr.caller + ) { + if (curr === computeStackTrace || curr === TraceKit.report) { + // console.log('skipping internal function'); + continue; } - return _window$1.fetch(url, fetchOptions).then(function (response) { - if (response.ok) { - opts.onSuccess && opts.onSuccess(); - } else { - var error = new Error('Sentry error code: ' + response.status); // It's called request only to keep compatibility with XHR interface - // and not add more redundant checks in setBackoffState method - - error.request = response; - opts.onError && opts.onError(error); - } - })['catch'](function () { - opts.onError && opts.onError(new Error('Sentry error code: network unavailable')); - }); - } - - var request = _window$1.XMLHttpRequest && new _window$1.XMLHttpRequest(); - if (!request) return; // if browser doesn't support CORS (e.g. IE7), we are out of luck - - var hasCORS = 'withCredentials' in request || typeof XDomainRequest !== 'undefined'; - if (!hasCORS) return; - - if ('withCredentials' in request) { - request.onreadystatechange = function () { - if (request.readyState !== 4) { - return; - } else if (request.status === 200) { - opts.onSuccess && opts.onSuccess(); - } else if (opts.onError) { - var err = new Error('Sentry error code: ' + request.status); - err.request = request; - opts.onError(err); - } + item = { + url: null, + func: UNKNOWN_FUNCTION, + line: null, + column: null }; - } else { - request = new XDomainRequest(); // xdomainrequest cannot go http -> https (or vice versa), - // so always use protocol relative - url = url.replace(/^https?:/, ''); // onreadystatechange not supported by XDomainRequest + if (curr.name) { + item.func = curr.name; + } else if ((parts = functionName.exec(curr.toString()))) { + item.func = parts[1]; + } - if (opts.onSuccess) { - request.onload = opts.onSuccess; + if (typeof item.func === 'undefined') { + try { + item.func = parts.input.substring(0, parts.input.indexOf('{')); + } catch (e) {} } - if (opts.onError) { - request.onerror = function () { - var err = new Error('Sentry error code: XDomainRequest'); - err.request = request; - opts.onError(err); - }; + if (funcs['' + curr]) { + recursion = true; + } else { + funcs['' + curr] = true; } - } - request.open('POST', url); + stack.push(item); + } - if (evaluatedHeaders) { - each(evaluatedHeaders, function (key, value) { - request.setRequestHeader(key, value); - }); + if (depth) { + // console.log('depth is ' + depth); + // console.log('stack is ' + stack.length); + stack.splice(0, depth); } - request.send(stringify_1(opts.data)); - }, - _evaluateHash: function _evaluateHash(hash) { - var evaluated = {}; + var result = { + name: ex.name, + message: ex.message, + url: getLocationHref(), + stack: stack + }; + augmentStackTraceWithInitialElement( + result, + ex.sourceURL || ex.fileName, + ex.line || ex.lineNumber, + ex.message || ex.description + ); + return result; + } - for (var key in hash) { - if (hash.hasOwnProperty(key)) { - var value = hash[key]; - evaluated[key] = typeof value === 'function' ? value() : value; + /** + * Computes a stack trace for an exception. + * @param {Error} ex + * @param {(string|number)=} depth + */ + function computeStackTrace(ex, depth) { + var stack = null; + depth = depth == null ? 0 : +depth; + + try { + stack = computeStackTraceFromStackProp(ex); + if (stack) { + return stack; + } + } catch (e) { + if (TraceKit.debug) { + throw e; } } - return evaluated; - }, - _logDebug: function _logDebug(level) { - if (this._originalConsoleMethods[level] && this.debug) { - // In IE<10 console methods do not have their own 'apply' method - Function.prototype.apply.call(this._originalConsoleMethods[level], this._originalConsole, [].slice.call(arguments, 1)); - } - }, - _mergeContext: function _mergeContext(key, context) { - if (isUndefined(context)) { - delete this._globalContext[key]; - } else { - this._globalContext[key] = objectMerge(this._globalContext[key] || {}, context); + try { + stack = computeStackTraceByWalkingCallerChain(ex, depth + 1); + if (stack) { + return stack; + } + } catch (e) { + if (TraceKit.debug) { + throw e; + } } + return { + name: ex.name, + message: ex.message, + url: getLocationHref() + }; } -}; // Deprecations -Raven$1.prototype.setUser = Raven$1.prototype.setUserContext; -Raven$1.prototype.setReleaseContext = Raven$1.prototype.setRelease; -var raven = Raven$1; + computeStackTrace.augmentStackTraceWithInitialElement = augmentStackTraceWithInitialElement; + computeStackTrace.computeStackTraceFromStackProp = computeStackTraceFromStackProp; -/** - * Enforces a single instance of the Raven client, and the - * main entry point for Raven. If you are a consumer of the - * Raven library, you SHOULD load this file (vs raven.js). - **/ -// This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) + return computeStackTrace; +})(); -var _window = typeof window !== 'undefined' ? window : typeof commonjsGlobal !== 'undefined' ? commonjsGlobal : typeof self !== 'undefined' ? self : {}; +module.exports = TraceKit; -var _Raven = _window.Raven; -var Raven = new raven(); +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"9":9}],11:[function(_dereq_,module,exports){ /* - * Allow multiple versions of Raven to be installed. - * Strip Raven from the global context and returns the instance. - * - * @return {Raven} - */ - -Raven.noConflict = function () { - _window.Raven = _Raven; - return Raven; -}; - -Raven.afterLoad(); -var singleton = Raven; - -/** - * Angular.js plugin - * - * Provides an $exceptionHandler for Angular.js - */ + json-stringify-safe + Like JSON.stringify, but doesn't throw on circular references. -var wrappedCallback$1 = utils.wrappedCallback; // See https://github.com/angular/angular.js/blob/v1.4.7/src/minErr.js + Originally forked from https://github.com/isaacs/json-stringify-safe + version 5.0.1 on 3/8/2017 and modified to handle Errors serialization + and IE8 compatibility. Tests for this are in test/vendor. -var angularPattern = /^\[((?:[$a-zA-Z0-9]+:)?(?:[$a-zA-Z0-9]+))\] (.*?)\n?(\S+)$/; -var moduleName = 'ngRaven'; + ISC license: https://github.com/isaacs/json-stringify-safe/blob/master/LICENSE +*/ -function angularPlugin(Raven, angular) { - angular = angular || window.angular; - if (!angular) return; +exports = module.exports = stringify; +exports.getSerialize = serializer; - function RavenProvider() { - this.$get = ['$window', function ($window) { - return Raven; - }]; +function indexOf(haystack, needle) { + for (var i = 0; i < haystack.length; ++i) { + if (haystack[i] === needle) return i; } + return -1; +} - function ExceptionHandlerProvider($provide) { - $provide.decorator('$exceptionHandler', ['Raven', '$delegate', exceptionHandler]); - } +function stringify(obj, replacer, spaces, cycleReplacer) { + return JSON.stringify(obj, serializer(replacer, cycleReplacer), spaces); +} - function exceptionHandler(R, $delegate) { - return function (ex, cause) { - R.captureException(ex, { - extra: { - cause: cause - } - }); - $delegate(ex, cause); - }; +// https://github.com/ftlabs/js-abbreviate/blob/fa709e5f139e7770a71827b1893f22418097fbda/index.js#L95-L106 +function stringifyError(value) { + var err = { + // These properties are implemented as magical getters and don't show up in for in + stack: value.stack, + message: value.message, + name: value.name + }; + + for (var i in value) { + if (Object.prototype.hasOwnProperty.call(value, i)) { + err[i] = value[i]; + } } - angular.module(moduleName, []).provider('Raven', RavenProvider).config(['$provide', ExceptionHandlerProvider]); - Raven.setDataCallback(wrappedCallback$1(function (data) { - return angularPlugin._normalizeData(data); - })); + return err; } -angularPlugin._normalizeData = function (data) { - // We only care about mutating an exception - var exception = data.exception; +function serializer(replacer, cycleReplacer) { + var stack = []; + var keys = []; - if (exception) { - exception = exception.values[0]; - var matches = angularPattern.exec(exception.value); + if (cycleReplacer == null) { + cycleReplacer = function(key, value) { + if (stack[0] === value) { + return '[Circular ~]'; + } + return '[Circular ~.' + keys.slice(0, indexOf(stack, value)).join('.') + ']'; + }; + } - if (matches) { - // This type now becomes something like: $rootScope:inprog - exception.type = matches[1]; - exception.value = matches[2]; - data.message = exception.type + ': ' + exception.value; // auto set a new tag specifically for the angular error url + return function(key, value) { + if (stack.length > 0) { + var thisPos = indexOf(stack, this); + ~thisPos ? stack.splice(thisPos + 1) : stack.push(this); + ~thisPos ? keys.splice(thisPos, Infinity, key) : keys.push(key); - data.extra.angularDocs = matches[3].substr(0, 250); + if (~indexOf(stack, value)) { + value = cycleReplacer.call(this, key, value); + } + } else { + stack.push(value); } - } - - return data; -}; -angularPlugin.moduleName = moduleName; -var angular = angularPlugin; + return replacer == null + ? value instanceof Error ? stringifyError(value) : value + : replacer.call(this, key, value); + }; +} -/** - * console plugin +},{}],12:[function(_dereq_,module,exports){ +/* + * JavaScript MD5 + * https://github.com/blueimp/JavaScript-MD5 * - * Monkey patches console.* calls into Sentry messages with - * their appropriate log levels. (Experimental) + * Copyright 2011, Sebastian Tschan + * https://blueimp.net * - * Options: + * Licensed under the MIT license: + * https://opensource.org/licenses/MIT * - * `levels`: An array of levels (methods on `console`) to report to Sentry. - * Defaults to debug, info, warn, and error. + * Based on + * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message + * Digest Algorithm, as defined in RFC 1321. + * Version 2.2 Copyright (C) Paul Johnston 1999 - 2009 + * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet + * Distributed under the BSD License + * See http://pajhome.org.uk/crypt/md5 for more info. */ -var wrapConsoleMethod$1 = console$1.wrapMethod; - -function consolePlugin(Raven, console, pluginOptions) { - console = console || window.console || {}; - pluginOptions = pluginOptions || {}; - var logLevels = pluginOptions.levels || ['debug', 'info', 'warn', 'error']; - if ('assert' in console) logLevels.push('assert'); +/* +* Add integers, wrapping at 2^32. This uses 16-bit operations internally +* to work around bugs in some JS interpreters. +*/ +function safeAdd(x, y) { + var lsw = (x & 0xffff) + (y & 0xffff); + var msw = (x >> 16) + (y >> 16) + (lsw >> 16); + return (msw << 16) | (lsw & 0xffff); +} - var callback = function callback(msg, data) { - Raven.captureMessage(msg, data); - }; +/* +* Bitwise rotate a 32-bit number to the left. +*/ +function bitRotateLeft(num, cnt) { + return (num << cnt) | (num >>> (32 - cnt)); +} - var level = logLevels.pop(); +/* +* These functions implement the four basic operations the algorithm uses. +*/ +function md5cmn(q, a, b, x, s, t) { + return safeAdd(bitRotateLeft(safeAdd(safeAdd(a, q), safeAdd(x, t)), s), b); +} +function md5ff(a, b, c, d, x, s, t) { + return md5cmn((b & c) | (~b & d), a, b, x, s, t); +} +function md5gg(a, b, c, d, x, s, t) { + return md5cmn((b & d) | (c & ~d), a, b, x, s, t); +} +function md5hh(a, b, c, d, x, s, t) { + return md5cmn(b ^ c ^ d, a, b, x, s, t); +} +function md5ii(a, b, c, d, x, s, t) { + return md5cmn(c ^ (b | ~d), a, b, x, s, t); +} - while (level) { - wrapConsoleMethod$1(console, level, callback); - level = logLevels.pop(); +/* +* Calculate the MD5 of an array of little-endian words, and a bit length. +*/ +function binlMD5(x, len) { + /* append padding */ + x[len >> 5] |= 0x80 << (len % 32); + x[(((len + 64) >>> 9) << 4) + 14] = len; + + var i; + var olda; + var oldb; + var oldc; + var oldd; + var a = 1732584193; + var b = -271733879; + var c = -1732584194; + var d = 271733878; + + for (i = 0; i < x.length; i += 16) { + olda = a; + oldb = b; + oldc = c; + oldd = d; + + a = md5ff(a, b, c, d, x[i], 7, -680876936); + d = md5ff(d, a, b, c, x[i + 1], 12, -389564586); + c = md5ff(c, d, a, b, x[i + 2], 17, 606105819); + b = md5ff(b, c, d, a, x[i + 3], 22, -1044525330); + a = md5ff(a, b, c, d, x[i + 4], 7, -176418897); + d = md5ff(d, a, b, c, x[i + 5], 12, 1200080426); + c = md5ff(c, d, a, b, x[i + 6], 17, -1473231341); + b = md5ff(b, c, d, a, x[i + 7], 22, -45705983); + a = md5ff(a, b, c, d, x[i + 8], 7, 1770035416); + d = md5ff(d, a, b, c, x[i + 9], 12, -1958414417); + c = md5ff(c, d, a, b, x[i + 10], 17, -42063); + b = md5ff(b, c, d, a, x[i + 11], 22, -1990404162); + a = md5ff(a, b, c, d, x[i + 12], 7, 1804603682); + d = md5ff(d, a, b, c, x[i + 13], 12, -40341101); + c = md5ff(c, d, a, b, x[i + 14], 17, -1502002290); + b = md5ff(b, c, d, a, x[i + 15], 22, 1236535329); + + a = md5gg(a, b, c, d, x[i + 1], 5, -165796510); + d = md5gg(d, a, b, c, x[i + 6], 9, -1069501632); + c = md5gg(c, d, a, b, x[i + 11], 14, 643717713); + b = md5gg(b, c, d, a, x[i], 20, -373897302); + a = md5gg(a, b, c, d, x[i + 5], 5, -701558691); + d = md5gg(d, a, b, c, x[i + 10], 9, 38016083); + c = md5gg(c, d, a, b, x[i + 15], 14, -660478335); + b = md5gg(b, c, d, a, x[i + 4], 20, -405537848); + a = md5gg(a, b, c, d, x[i + 9], 5, 568446438); + d = md5gg(d, a, b, c, x[i + 14], 9, -1019803690); + c = md5gg(c, d, a, b, x[i + 3], 14, -187363961); + b = md5gg(b, c, d, a, x[i + 8], 20, 1163531501); + a = md5gg(a, b, c, d, x[i + 13], 5, -1444681467); + d = md5gg(d, a, b, c, x[i + 2], 9, -51403784); + c = md5gg(c, d, a, b, x[i + 7], 14, 1735328473); + b = md5gg(b, c, d, a, x[i + 12], 20, -1926607734); + + a = md5hh(a, b, c, d, x[i + 5], 4, -378558); + d = md5hh(d, a, b, c, x[i + 8], 11, -2022574463); + c = md5hh(c, d, a, b, x[i + 11], 16, 1839030562); + b = md5hh(b, c, d, a, x[i + 14], 23, -35309556); + a = md5hh(a, b, c, d, x[i + 1], 4, -1530992060); + d = md5hh(d, a, b, c, x[i + 4], 11, 1272893353); + c = md5hh(c, d, a, b, x[i + 7], 16, -155497632); + b = md5hh(b, c, d, a, x[i + 10], 23, -1094730640); + a = md5hh(a, b, c, d, x[i + 13], 4, 681279174); + d = md5hh(d, a, b, c, x[i], 11, -358537222); + c = md5hh(c, d, a, b, x[i + 3], 16, -722521979); + b = md5hh(b, c, d, a, x[i + 6], 23, 76029189); + a = md5hh(a, b, c, d, x[i + 9], 4, -640364487); + d = md5hh(d, a, b, c, x[i + 12], 11, -421815835); + c = md5hh(c, d, a, b, x[i + 15], 16, 530742520); + b = md5hh(b, c, d, a, x[i + 2], 23, -995338651); + + a = md5ii(a, b, c, d, x[i], 6, -198630844); + d = md5ii(d, a, b, c, x[i + 7], 10, 1126891415); + c = md5ii(c, d, a, b, x[i + 14], 15, -1416354905); + b = md5ii(b, c, d, a, x[i + 5], 21, -57434055); + a = md5ii(a, b, c, d, x[i + 12], 6, 1700485571); + d = md5ii(d, a, b, c, x[i + 3], 10, -1894986606); + c = md5ii(c, d, a, b, x[i + 10], 15, -1051523); + b = md5ii(b, c, d, a, x[i + 1], 21, -2054922799); + a = md5ii(a, b, c, d, x[i + 8], 6, 1873313359); + d = md5ii(d, a, b, c, x[i + 15], 10, -30611744); + c = md5ii(c, d, a, b, x[i + 6], 15, -1560198380); + b = md5ii(b, c, d, a, x[i + 13], 21, 1309151649); + a = md5ii(a, b, c, d, x[i + 4], 6, -145523070); + d = md5ii(d, a, b, c, x[i + 11], 10, -1120210379); + c = md5ii(c, d, a, b, x[i + 2], 15, 718787259); + b = md5ii(b, c, d, a, x[i + 9], 21, -343485551); + + a = safeAdd(a, olda); + b = safeAdd(b, oldb); + c = safeAdd(c, oldc); + d = safeAdd(d, oldd); } + return [a, b, c, d]; } -var console$3 = consolePlugin; - -/** - * Ember.js plugin - * - * Patches event handler callbacks and ajax callbacks. - */ -function emberPlugin(Raven, Ember) { - Ember = Ember || window.Ember; // quit if Ember isn't on the page - - if (!Ember) return; - var _oldOnError = Ember.onerror; - - Ember.onerror = function EmberOnError(error) { - Raven.captureException(error); - - if (typeof _oldOnError === 'function') { - _oldOnError.call(this, error); - } - }; - - Ember.RSVP.on('error', function (reason) { - if (reason instanceof Error) { - Raven.captureException(reason, { - extra: { - context: 'Unhandled Promise error detected' - } - }); - } else { - Raven.captureMessage('Unhandled Promise error detected', { - extra: { - reason: reason - } - }); - } - }); +/* +* Convert an array of little-endian words to a string +*/ +function binl2rstr(input) { + var i; + var output = ''; + var length32 = input.length * 32; + for (i = 0; i < length32; i += 8) { + output += String.fromCharCode((input[i >> 5] >>> (i % 32)) & 0xff); + } + return output; } -var ember = emberPlugin; - -/** - * Vue.js 2.0 plugin - * - */ -function formatComponentName(vm) { - if (vm.$root === vm) { - return 'root instance'; +/* +* Convert a raw string to an array of little-endian words +* Characters >255 have their high-byte silently ignored. +*/ +function rstr2binl(input) { + var i; + var output = []; + output[(input.length >> 2) - 1] = undefined; + for (i = 0; i < output.length; i += 1) { + output[i] = 0; } - - var name = vm._isVue ? vm.$options.name || vm.$options._componentTag : vm.name; - return (name ? 'component <' + name + '>' : 'anonymous component') + (vm._isVue && vm.$options.__file ? ' at ' + vm.$options.__file : ''); + var length8 = input.length * 8; + for (i = 0; i < length8; i += 8) { + output[i >> 5] |= (input.charCodeAt(i / 8) & 0xff) << (i % 32); + } + return output; } -function vuePlugin(Raven, Vue) { - Vue = Vue || window.Vue; // quit if Vue isn't on the page - - if (!Vue || !Vue.config) return; - var _oldOnError = Vue.config.errorHandler; +/* +* Calculate the MD5 of a raw string +*/ +function rstrMD5(s) { + return binl2rstr(binlMD5(rstr2binl(s), s.length * 8)); +} - Vue.config.errorHandler = function VueErrorHandler(error, vm, info) { - var metaData = {}; // vm and lifecycleHook are not always available +/* +* Calculate the HMAC-MD5, of a key and some data (raw strings) +*/ +function rstrHMACMD5(key, data) { + var i; + var bkey = rstr2binl(key); + var ipad = []; + var opad = []; + var hash; + ipad[15] = opad[15] = undefined; + if (bkey.length > 16) { + bkey = binlMD5(bkey, key.length * 8); + } + for (i = 0; i < 16; i += 1) { + ipad[i] = bkey[i] ^ 0x36363636; + opad[i] = bkey[i] ^ 0x5c5c5c5c; + } + hash = binlMD5(ipad.concat(rstr2binl(data)), 512 + data.length * 8); + return binl2rstr(binlMD5(opad.concat(hash), 512 + 128)); +} - if (Object.prototype.toString.call(vm) === '[object Object]') { - metaData.componentName = formatComponentName(vm); - metaData.propsData = vm.$options.propsData; - } +/* +* Convert a raw string to a hex string +*/ +function rstr2hex(input) { + var hexTab = '0123456789abcdef'; + var output = ''; + var x; + var i; + for (i = 0; i < input.length; i += 1) { + x = input.charCodeAt(i); + output += hexTab.charAt((x >>> 4) & 0x0f) + hexTab.charAt(x & 0x0f); + } + return output; +} - if (typeof info !== 'undefined') { - metaData.lifecycleHook = info; - } +/* +* Encode a string as utf-8 +*/ +function str2rstrUTF8(input) { + return unescape(encodeURIComponent(input)); +} - Raven.captureException(error, { - extra: metaData - }); +/* +* Take string arguments and return either raw or hex encoded strings +*/ +function rawMD5(s) { + return rstrMD5(str2rstrUTF8(s)); +} +function hexMD5(s) { + return rstr2hex(rawMD5(s)); +} +function rawHMACMD5(k, d) { + return rstrHMACMD5(str2rstrUTF8(k), str2rstrUTF8(d)); +} +function hexHMACMD5(k, d) { + return rstr2hex(rawHMACMD5(k, d)); +} - if (typeof _oldOnError === 'function') { - _oldOnError.call(this, error, vm, info); +function md5(string, key, raw) { + if (!key) { + if (!raw) { + return hexMD5(string); } - }; + return rawMD5(string); + } + if (!raw) { + return hexHMACMD5(key, string); + } + return rawHMACMD5(key, string); } -var vue = vuePlugin; - -/* This file was generated by './scripts/generate-plugin-combinations.js'! */ - -singleton.addPlugin(angular).addPlugin(console$3).addPlugin(ember).addPlugin(vue); -var angular_console_ember_vue = {}; - -return angular_console_ember_vue; +module.exports = md5; -}))); +},{}]},{},[8,1,2,3,4])(8) +}); \ No newline at end of file diff --git a/dist/angular,console,ember,vue/raven.min.js b/dist/angular,console,ember,vue/raven.min.js index 8ed3775214a4..eb9433704491 100644 --- a/dist/angular,console,ember,vue/raven.min.js +++ b/dist/angular,console,ember,vue/raven.min.js @@ -1,3 +1,4 @@ -/*! Raven.js 3.22.2 (1b6187b) | github.com/getsentry/raven-js */ -!function(a,b){"object"==typeof exports&&"undefined"!=typeof module?module.exports=b():"function"==typeof define&&define.amd?define(b):a.Raven=b()}(this,function(){"use strict";function a(a,b){return b={exports:{}},a(b,b.exports),b.exports}function b(a){return(b="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(a){return typeof a}:function(a){return a&&"function"==typeof Symbol&&a.constructor===Symbol&&a!==Symbol.prototype?"symbol":typeof a})(a)}function c(a){return"object"===b(a)&&null!==a}function d(a){switch({}.toString.call(a)){case"[object Error]":return!0;case"[object Exception]":return!0;case"[object DOMException]":return!0;default:return a instanceof Error}}function e(a){return l()&&"[object ErrorEvent]"==={}.toString.call(a)}function f(a){return void 0===a}function g(a){return"function"==typeof a}function h(a){return"[object Object]"===Object.prototype.toString.call(a)}function i(a){return"[object String]"===Object.prototype.toString.call(a)}function j(a){return"[object Array]"===Object.prototype.toString.call(a)}function k(a){if(!h(a))return!1;for(var b in a)if(a.hasOwnProperty(b))return!1;return!0}function l(){try{return new ErrorEvent(""),!0}catch(a){return!1}}function m(){if(!("fetch"in R))return!1;try{return new Headers,new Request(""),new Response,!0}catch(a){return!1}}function n(a){function b(b,c){var d=a(b)||b;return c?c(d)||d:d}return b}function o(a,b){var c,d;if(f(a.length))for(c in a)s(a,c)&&b.call(null,c,a[c]);else if(d=a.length)for(c=0;c ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function y(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&i(b))for(c=b.split(/\s+/),f=0;f":"anonymous component")+(a._isVue&&a.$options.__file?" at "+a.$options.__file:"")}function O(a,b){if(b=b||window.Vue,b&&b.config){var c=b.config.errorHandler;b.config.errorHandler=function(b,d,e){var f={};"[object Object]"===Object.prototype.toString.call(d)&&(f.componentName=N(d),f.propsData=d.$options.propsData),"undefined"!=typeof e&&(f.lifecycleHook=e),a.captureException(b,{extra:f}),"function"==typeof c&&c.call(this,b,d,e)}}}var P="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{},Q=Object.setPrototypeOf||function(a,b){return a.C=b,a},R=("object"==typeof Reflect&&Reflect.construct||function(a,b,c){var d,e=[null];return e.push.apply(e,b),d=a.bind.apply(a,e),Q(new d,c.prototype)},"undefined"!=typeof window?window:"undefined"!=typeof P?P:"undefined"!=typeof self?self:{}),S={isObject:c,isError:d,isErrorEvent:e,isUndefined:f,isFunction:g,isPlainObject:h,isString:i,isArray:j,isEmptyObject:k,supportsErrorEvent:l,supportsFetch:m,wrappedCallback:n,each:o,objectMerge:p,truncate:r,objectFrozen:q,hasKey:s,joinRegExp:t,urlencode:u,uuid4:w,htmlTreeAsString:x,htmlElementAsString:y,isSameException:B,isSameStacktrace:C,parseUrl:v,fill:D,safeJoin:E},T={collectWindowErrors:!0,debug:!1},U="undefined"!=typeof window?window:"undefined"!=typeof P?P:"undefined"!=typeof self?self:{},V=[].slice,W="?",X=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;T.report=function(){function a(a){f(),l.push(a)}function b(a){for(var b=l.length-1;b>=0;--b)l[b]===a&&l.splice(b,1)}function c(){g(),l=[]}function d(a,b){var c=null;if(!b||T.collectWindowErrors){for(var d in l)if(l.hasOwnProperty(d))try{l[d].apply(null,[a].concat(V.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function e(a,b,c,e,f){var g=null,i=S.isErrorEvent(f)?f.error:f,k=S.isErrorEvent(a)?a.message:a;if(o)T.computeStackTrace.augmentStackTraceWithInitialElement(o,b,c,k),h();else if(i&&S.isError(i))g=T.computeStackTrace(i),d(g,!0);else{var l,m={url:b,line:c,column:e},n=void 0;if("[object String]"==={}.toString.call(k)){var l=k.match(X);l&&(n=l[1],k=l[2])}m.func=W,g={name:n,message:k,url:F(),stack:[m]},d(g,!0)}return!!j&&j.apply(this,arguments)}function f(){k||(j=U.onerror,U.onerror=e,k=!0)}function g(){k&&(U.onerror=j,k=!1,j=void 0)}function h(){var a=o,b=m;m=null,o=null,n=null,d.apply(null,[a,!1].concat(b))}function i(a,b){var c=V.call(arguments,1);if(o){if(n===a)return;h()}var d=T.computeStackTrace(a);if(o=d,n=a,m=c,setTimeout(function(){n===a&&h()},d.incomplete?2e3:0),b!==!1)throw a}var j,k,l=[],m=null,n=null,o=null;return i.subscribe=a,i.unsubscribe=b,i.uninstall=c,i}(),T.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,d,e=/^\s*at (.*?) ?\(((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,f=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|\[native).*?|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,g=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,h=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,i=/\((\S*)(?::(\d+))(?::(\d+))\)/,j=a.stack.split("\n"),k=[],l=(/^(.*) is undefined$/.exec(a.message),0),m=j.length;l eval")>-1;o&&(b=h.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==l||c[5]||"undefined"==typeof a.columnNumber||(k[0].column=a.columnNumber+1),d={url:c[3],func:c[1]||W,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}!d.func&&d.line&&(d.func=W),k.push(d)}return k.length?{name:a.name,message:a.message,url:F(),stack:k}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=W),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,e){for(var f,g,h=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,i=[],j={},k=!1,l=c.caller;l&&!k;l=l.caller)if(l!==d&&l!==T.report){if(g={url:null,func:W,line:null,column:null},l.name?g.func=l.name:(f=h.exec(l.toString()))&&(g.func=f[1]),"undefined"==typeof g.func)try{g.func=f.input.substring(0,f.input.indexOf("{"))}catch(m){}j[""+l]?k=!0:j[""+l]=!0,i.push(g)}e&&i.splice(0,e);var n={name:a.name,message:a.message,url:F(),stack:i};return b(n,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),n}function d(b,d){var e=null;d=null==d?0:+d;try{if(e=a(b))return e}catch(f){if(T.debug)throw f}try{if(e=c(b,d+1))return e}catch(f){if(T.debug)throw f}return{name:b.name,message:b.message,url:F()}}return d.augmentStackTraceWithInitialElement=b,d.computeStackTraceFromStackProp=a,d}();var Y=T,Z=a(function(a,b){function c(a,b){for(var c=0;c0){var i=c(d,this);~i?d.splice(i+1):d.push(this),~i?f.splice(i,1/0,g):f.push(g),~c(d,h)&&(h=b.call(this,g,h))}else d.push(h);return null==a?h instanceof Error?e(h):h:a.call(this,g,h)}}b=a.exports=d,b.getSerialize=f});G.prototype=new Error,G.prototype.constructor=G;var $=G,_=function(a,b,c){var d=a[b],e=a;if(b in a){var f="warn"===b?"warning":b;a[b]=function(){var a=[].slice.call(arguments),g=S.safeJoin(a," "),h={level:f,logger:"console",extra:{arguments:a}};"assert"===b?a[0]===!1&&(g="Assertion failed: "+(S.safeJoin(a.slice(1)," ")||"console.assert"),h.extra.arguments=a.slice(1),c&&c(g,h)):c&&c(g,h),d&&Function.prototype.apply.call(d,e,a)}}},aa={wrapMethod:_},ba=S.isError,ca=S.isObject,da=S.isErrorEvent,ea=S.isUndefined,fa=S.isFunction,ga=S.isString,ha=S.isArray,ia=S.isEmptyObject,ja=S.each,ka=S.objectMerge,la=S.truncate,ma=S.objectFrozen,na=S.hasKey,oa=S.joinRegExp,pa=S.urlencode,qa=S.uuid4,ra=S.htmlTreeAsString,sa=S.isSameException,ta=S.isSameStacktrace,ua=S.parseUrl,va=S.fill,wa=S.supportsFetch,xa=aa.wrapMethod,ya="source protocol user pass host port path".split(" "),za=/^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/,Aa="undefined"!=typeof window?window:"undefined"!=typeof P?P:"undefined"!=typeof self?self:{},Ba=Aa.document,Ca=Aa.navigator;J.prototype={VERSION:"3.22.2",debug:!1,TraceKit:Y,config:function(a,b){var c=this;if(c.i)return this.D("error","Error: Raven has already been configured"),c;if(!a)return c;var d=c.m;b&&ja(b,function(a,b){"tags"===a||"extra"===a||"user"===a?c.l[a]=b:d[a]=b}),c.setDSN(a),d.ignoreErrors.push(/^Script error\.?$/),d.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/),d.ignoreErrors=oa(d.ignoreErrors),d.ignoreUrls=!!d.ignoreUrls.length&&oa(d.ignoreUrls),d.whitelistUrls=!!d.whitelistUrls.length&&oa(d.whitelistUrls),d.includePaths=oa(d.includePaths),d.maxBreadcrumbs=Math.max(0,Math.min(d.maxBreadcrumbs||100,100));var e={xhr:!0,console:!0,dom:!0,location:!0,sentry:!0},f=d.autoBreadcrumbs;"[object Object]"==={}.toString.call(f)?f=ka(e,f):f!==!1&&(f=e),d.autoBreadcrumbs=f;var g={tryCatch:!0},h=d.instrument;return"[object Object]"==={}.toString.call(h)?h=ka(g,h):h!==!1&&(h=g),d.instrument=h,Y.collectWindowErrors=!!d.collectWindowErrors,c},install:function(){var a=this;return a.isSetup()&&!a.p&&(Y.report.subscribe(function(){a.E.apply(a,arguments)}),a.F(),a.m.instrument&&a.m.instrument.tryCatch&&a.G(),a.m.autoBreadcrumbs&&a.H(),a.I(),a.p=!0),Error.stackTraceLimit=a.m.stackTraceLimit,this},setDSN:function(a){var b=this,c=b.J(a),d=c.path.lastIndexOf("/"),e=c.path.substr(1,d);b.K=a,b.j=c.user,b.L=c.pass&&c.pass.substr(1),b.k=c.path.substr(d+1),b.i=b.M(c),b.N=b.i+"/"+e+"api/"+b.k+"/store/",this.A()},context:function(a,b,c){return fa(a)&&(c=b||[],b=a,a=void 0),this.wrap(a,b).apply(this,c)},wrap:function(a,b,c){function d(){var d=[],f=arguments.length,g=!a||a&&a.deep!==!1;for(c&&fa(c)&&c.apply(this,arguments);f--;)d[f]=g?e.wrap(a,arguments[f]):arguments[f];try{return b.apply(this,d)}catch(h){throw e.O(),e.captureException(h,a),h}}var e=this;if(ea(b)&&!fa(a))return a;if(fa(a)&&(b=a,a=void 0),!fa(b))return b;try{if(b.a)return b;if(b.P)return b.P}catch(f){return b}for(var g in b)na(b,g)&&(d[g]=b[g]);return d.prototype=b.prototype,b.P=d,d.a=!0,d.b=b,d},uninstall:function(){return Y.report.uninstall(),this.Q(),this.R(),this.S(),Error.stackTraceLimit=this.q,this.p=!1,this},captureException:function(a,b){b=ka({trimHeadFrames:0},b?b:{});var c=!ba(a),d=!da(a),e=da(a)&&!a.error;if(c&&d||e)return this.captureMessage(a,ka(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}));da(a)&&(a=a.error),this.f=a;try{var f=Y.computeStackTrace(a);this.T(f,b)}catch(g){if(a!==g)throw g}return this},captureMessage:function(a,b){if(!this.m.ignoreErrors.test||!this.m.ignoreErrors.test(a)){b=b||{};var c,d=ka({message:a+""},b);try{throw new Error(a)}catch(e){c=e}c.name=null;var f=Y.computeStackTrace(c),g=ha(f.stack)&&f.stack[1],h=g&&g.url||"";if((!this.m.ignoreUrls.test||!this.m.ignoreUrls.test(h))&&(!this.m.whitelistUrls.test||this.m.whitelistUrls.test(h))){if(this.m.stacktrace||b&&b.stacktrace){b=ka({fingerprint:a,trimHeadFrames:(b.trimHeadFrames||0)+1},b);var i=this.U(f,b);d.stacktrace={frames:i.reverse()}}return this.V(d),this}}},captureBreadcrumb:function(a){var b=ka({timestamp:H()/1e3},a);if(fa(this.m.breadcrumbCallback)){var c=this.m.breadcrumbCallback(b);if(ca(c)&&!ia(c))b=c;else if(c===!1)return this}return this.w.push(b),this.w.length>this.m.maxBreadcrumbs&&this.w.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.t.push([a,b]),this.p&&this.I(),this},setUserContext:function(a){return this.l.user=a,this},setExtraContext:function(a){return this.W("extra",a),this},setTagsContext:function(a){return this.W("tags",a),this},clearContext:function(){return this.l={},this},getContext:function(){return JSON.parse(Z(this.l))},setEnvironment:function(a){return this.m.environment=a,this},setRelease:function(a){return this.m.release=a,this},setDataCallback:function(a){var b=this.m.dataCallback;return this.m.dataCallback=I(b,a),this},setBreadcrumbCallback:function(a){var b=this.m.breadcrumbCallback;return this.m.breadcrumbCallback=I(b,a),this},setShouldSendCallback:function(a){var b=this.m.shouldSendCallback;return this.m.shouldSendCallback=I(b,a),this},setTransport:function(a){return this.m.transport=a,this},lastException:function(){return this.f},lastEventId:function(){return this.h},isSetup:function(){return!!this.c&&(!!this.i||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.D("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=Aa.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(Ba){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new $("Missing eventId");var c=a.dsn||this.K;if(!c)throw new $("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.l.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.M(this.J(c)),h=Ba.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(Ba.head||Ba.body).appendChild(h)}},O:function(){var a=this;this.o+=1,setTimeout(function(){a.o-=1})},X:function(a,b){var c,d;if(this.d){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),Ba.createEvent?(c=Ba.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=Ba.createEventObject(),c.eventType=a);for(d in b)na(b,d)&&(c[d]=b[d]);if(Ba.createEvent)Ba.dispatchEvent(c);else try{Ba.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},Y:function(a){var b=this;return function(c){if(b.Z=null,b.x!==c){b.x=c;var d;try{d=ra(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},$:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.Z;g||a.Y("input")(c),clearTimeout(g),a.Z=setTimeout(function(){a.Z=null},b)}}},_:function(a,b){var c=ua(this.y.href),d=ua(b),e=ua(a);this.z=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},F:function(){var a=this;a.aa=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.a?a.aa.apply(this.b,arguments):a.aa.apply(this,arguments)}},Q:function(){this.aa&&(Function.prototype.toString=this.aa)},G:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b._(b.z,c+""),a.apply(this,arguments)}};va(history,"pushState",j,d),va(history,"replaceState",j,d)}if(c.console&&"console"in Aa&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};ja(["debug","info","warn","error","log"],function(a,b){xa(console,b,k)})}},R:function(){for(var a;this.v.length;){a=this.v.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},S:function(){for(var a in this.s)this.r[a]=this.s[a]},I:function(){var a=this;ja(this.t,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},J:function(a){var b=za.exec(a),c={},d=7;try{for(;d--;)c[ya[d]]=b[d]||""}catch(e){throw new $("Invalid DSN: "+a)}if(c.pass&&!this.m.allowSecretKey)throw new $("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},M:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},E:function(){this.o||this.T.apply(this,arguments)},T:function(a,b){var c=this.U(a,b);this.X("handle",{stackInfo:a,options:b}),this.ca(a.name,a.message,a.url,a.lineno,c,b)},U:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(ja(a.stack,function(b,e){var f=c.da(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.w,0)}),this.l.user&&(a.user=this.l.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||ia(a[b]))&&delete a[b]}),fa(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!ia(a)&&(!fa(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.ja()?void this.D("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random()":"anonymous component")+(a._isVue&&a.$options.__file?" at "+a.$options.__file:"")}function e(a,b){if(b=b||window.Vue,b&&b.config){var c=b.config.errorHandler;b.config.errorHandler=function(b,e,f){var g={};"[object Object]"===Object.prototype.toString.call(e)&&(g.componentName=d(e),g.propsData=e.$options.propsData),"undefined"!=typeof f&&(g.lifecycleHook=f),a.captureException(b,{extra:g}),"function"==typeof c&&c.call(this,b,e,f)}}}b.exports=e,a(8).addPlugin(b.exports)},{8:8}],5:[function(a,b,c){function d(a){this.name="RavenConfigError",this.message=a}d.prototype=new Error,d.prototype.constructor=d,b.exports=d},{}],6:[function(a,b,c){var d=a(9),e=function(a,b,c){var e=a[b],f=a;if(b in a){var g="warn"===b?"warning":b;a[b]=function(){var a=[].slice.call(arguments),h=d.safeJoin(a," "),i={level:g,logger:"console",extra:{arguments:a}};"assert"===b?a[0]===!1&&(h="Assertion failed: "+(d.safeJoin(a.slice(1)," ")||"console.assert"),i.extra.arguments=a.slice(1),c&&c(h,i)):c&&c(h,i),e&&Function.prototype.apply.call(e,f,a)}}};b.exports={wrapMethod:e}},{9:9}],7:[function(a,b,c){(function(c){function d(){return+new Date}function e(a,b){return q(b)?function(c){return b(c,a)}:b}function f(){this.b=!("object"!=typeof JSON||!JSON.stringify),this.c=!p(Q),this.d=!p(R),this.e=null,this.f=null,this.g=null,this.h=null,this.i=null,this.j=null,this.k={},this.l={release:P.SENTRY_RELEASE&&P.SENTRY_RELEASE.id,logger:"javascript",ignoreErrors:[],ignoreUrls:[],whitelistUrls:[],includePaths:[],headers:null,collectWindowErrors:!0,captureUnhandledRejections:!0,maxMessageLength:0,maxUrlLength:250,stackTraceLimit:50,autoBreadcrumbs:!0,instrument:!0,sampleRate:1,sanitizeKeys:[]},this.m={method:"POST",keepalive:!0,referrerPolicy:I()?"origin":""},this.n=0,this.o=!1,this.p=Error.stackTraceLimit,this.q=P.console||{},this.r={},this.s=[],this.t=d(),this.u=[],this.v=[],this.w=null,this.x=P.location,this.y=this.x&&this.x.href,this.z();for(var a in this.q)this.r[a]=this.q[a]}var g=a(10),h=a(11),i=a(12),j=a(5),k=a(9),l=k.isError,m=k.isObject,n=k.isPlainObject,o=k.isErrorEvent,p=k.isUndefined,q=k.isFunction,r=k.isString,s=k.isArray,t=k.isEmptyObject,u=k.each,v=k.objectMerge,w=k.truncate,x=k.objectFrozen,y=k.hasKey,z=k.joinRegExp,A=k.urlencode,B=k.uuid4,C=k.htmlTreeAsString,D=k.isSameException,E=k.isSameStacktrace,F=k.parseUrl,G=k.fill,H=k.supportsFetch,I=k.supportsReferrerPolicy,J=k.serializeKeysForMessage,K=k.serializeException,L=k.sanitize,M=a(6).wrapMethod,N="source protocol user pass host port path".split(" "),O=/^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/,P="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},Q=P.document,R=P.navigator;f.prototype={VERSION:"3.24.2",debug:!1,TraceKit:g,config:function(a,b){var c=this;if(c.h)return this.A("error","Error: Raven has already been configured"),c;if(!a)return c;var d=c.l;b&&u(b,function(a,b){"tags"===a||"extra"===a||"user"===a?c.k[a]=b:d[a]=b}),c.setDSN(a),d.ignoreErrors.push(/^Script error\.?$/),d.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/),d.ignoreErrors=z(d.ignoreErrors),d.ignoreUrls=!!d.ignoreUrls.length&&z(d.ignoreUrls),d.whitelistUrls=!!d.whitelistUrls.length&&z(d.whitelistUrls),d.includePaths=z(d.includePaths),d.maxBreadcrumbs=Math.max(0,Math.min(d.maxBreadcrumbs||100,100));var e={xhr:!0,console:!0,dom:!0,location:!0,sentry:!0},f=d.autoBreadcrumbs;"[object Object]"==={}.toString.call(f)?f=v(e,f):f!==!1&&(f=e),d.autoBreadcrumbs=f;var h={tryCatch:!0},i=d.instrument;return"[object Object]"==={}.toString.call(i)?i=v(h,i):i!==!1&&(i=h),d.instrument=i,g.collectWindowErrors=!!d.collectWindowErrors,c},install:function(){var a=this;return a.isSetup()&&!a.o&&(g.report.subscribe(function(){a.B.apply(a,arguments)}),a.l.captureUnhandledRejections&&a.C(),a.D(),a.l.instrument&&a.l.instrument.tryCatch&&a.E(),a.l.autoBreadcrumbs&&a.F(),a.G(),a.o=!0),Error.stackTraceLimit=a.l.stackTraceLimit,this},setDSN:function(a){var b=this,c=b.H(a),d=c.path.lastIndexOf("/"),e=c.path.substr(1,d);b.I=a,b.i=c.user,b.J=c.pass&&c.pass.substr(1),b.j=c.path.substr(d+1),b.h=b.K(c),b.L=b.h+"/"+e+"api/"+b.j+"/store/",this.z()},context:function(a,b,c){return q(a)&&(c=b||[],b=a,a=void 0),this.wrap(a,b).apply(this,c)},wrap:function(a,b,c){function d(){var d=[],f=arguments.length,g=!a||a&&a.deep!==!1;for(c&&q(c)&&c.apply(this,arguments);f--;)d[f]=g?e.wrap(a,arguments[f]):arguments[f];try{return b.apply(this,d)}catch(h){throw e.M(),e.captureException(h,a),h}}var e=this;if(p(b)&&!q(a))return a;if(q(a)&&(b=a,a=void 0),!q(b))return b;try{if(b.N)return b;if(b.O)return b.O}catch(f){return b}for(var g in b)y(b,g)&&(d[g]=b[g]);return d.prototype=b.prototype,b.O=d,d.N=!0,d.P=b,d},uninstall:function(){return g.report.uninstall(),this.Q(),this.R(),this.S(),this.T(),Error.stackTraceLimit=this.p,this.o=!1,this},U:function(a){this.A("debug","Raven caught unhandled promise rejection:",a),this.captureException(a.reason,{extra:{unhandledPromiseRejection:!0}})},C:function(){return this.U=this.U.bind(this),P.addEventListener&&P.addEventListener("unhandledrejection",this.U),this},Q:function(){return P.removeEventListener&&P.removeEventListener("unhandledrejection",this.U),this},captureException:function(a,b){if(b=v({trimHeadFrames:0},b?b:{}),o(a)&&a.error)a=a.error;else if(l(a))a=a;else{if(!n(a))return this.captureMessage(a,v(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}));b=this.V(b,a),a=new Error(b.message)}this.e=a;try{var c=g.computeStackTrace(a);this.W(c,b)}catch(d){if(a!==d)throw d}return this},V:function(a,b){var c=Object.keys(b).sort(),d=v(a,{message:"Non-Error exception captured with keys: "+J(c),fingerprint:[i(c)],extra:a.extra||{}});return d.extra.X=K(b),d},captureMessage:function(a,b){if(!this.l.ignoreErrors.test||!this.l.ignoreErrors.test(a)){b=b||{},a+="";var c,d=v({message:a},b);try{throw new Error(a)}catch(e){c=e}c.name=null;var f=g.computeStackTrace(c),h=s(f.stack)&&f.stack[1];h&&"Raven.captureException"===h.func&&(h=f.stack[2]);var i=h&&h.url||"";if((!this.l.ignoreUrls.test||!this.l.ignoreUrls.test(i))&&(!this.l.whitelistUrls.test||this.l.whitelistUrls.test(i))){if(this.l.stacktrace||b&&b.stacktrace){d.fingerprint=null==d.fingerprint?a:d.fingerprint,b=v({trimHeadFrames:0},b),b.trimHeadFrames+=1;var j=this.Y(f,b);d.stacktrace={frames:j.reverse()}}return d.fingerprint&&(d.fingerprint=s(d.fingerprint)?d.fingerprint:[d.fingerprint]),this.Z(d),this}}},captureBreadcrumb:function(a){var b=v({timestamp:d()/1e3},a);if(q(this.l.breadcrumbCallback)){var c=this.l.breadcrumbCallback(b);if(m(c)&&!t(c))b=c;else if(c===!1)return this}return this.v.push(b),this.v.length>this.l.maxBreadcrumbs&&this.v.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.s.push([a,b]),this.o&&this.G(),this},setUserContext:function(a){return this.k.user=a,this},setExtraContext:function(a){return this.$("extra",a),this},setTagsContext:function(a){return this.$("tags",a),this},clearContext:function(){return this.k={},this},getContext:function(){return JSON.parse(h(this.k))},setEnvironment:function(a){return this.l.environment=a,this},setRelease:function(a){return this.l.release=a,this},setDataCallback:function(a){var b=this.l.dataCallback;return this.l.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.l.breadcrumbCallback;return this.l.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.l.shouldSendCallback;return this.l.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.l.transport=a,this},lastException:function(){return this.e},lastEventId:function(){return this.g},isSetup:function(){return!!this.b&&(!!this.h||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.A("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=P.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(Q){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.I;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.k.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.K(this.H(c)),h=Q.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(Q.head||Q.body).appendChild(h)}},M:function(){var a=this;this.n+=1,setTimeout(function(){a.n-=1})},_:function(a,b){var c,d;if(this.c){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),Q.createEvent?(c=Q.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=Q.createEventObject(),c.eventType=a);for(d in b)y(b,d)&&(c[d]=b[d]);if(Q.createEvent)Q.dispatchEvent(c);else try{Q.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},aa:function(a){var b=this;return function(c){if(b.ba=null,b.w!==c){b.w=c;var d;try{d=C(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ca:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.ba;g||a.aa("input")(c),clearTimeout(g),a.ba=setTimeout(function(){a.ba=null},b)}}},da:function(a,b){var c=F(this.x.href),d=F(b),e=F(a);this.y=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},D:function(){var a=this;a.ea=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.N?a.ea.apply(this.P,arguments):a.ea.apply(this,arguments)}},R:function(){this.ea&&(Function.prototype.toString=this.ea)},E:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.da(b.y,c+""),a.apply(this,arguments)}};G(history,"pushState",j,d),G(history,"replaceState",j,d)}if(c.console&&"console"in P&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};u(["debug","info","warn","error","log"],function(a,b){M(console,b,k)})}},S:function(){for(var a;this.u.length;){a=this.u.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},T:function(){for(var a in this.r)this.q[a]=this.r[a]},G:function(){var a=this;u(this.s,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},H:function(a){var b=O.exec(a),c={},d=7;try{for(;d--;)c[N[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.l.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},K:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},B:function(){this.n||this.W.apply(this,arguments)},W:function(a,b){var c=this.Y(a,b);this._("handle",{stackInfo:a,options:b}),this.ga(a.name,a.message,a.url,a.lineno,c,b)},Y:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(u(a.stack,function(b,e){var f=c.ha(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.v,0)}),this.k.user&&(a.user=this.k.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),a=this.qa(a),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||t(a[b]))&&delete a[b]}),q(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!t(a)&&(!q(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.na()?void this.A("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function B(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&j(b))for(c=b.split(/\s+/),f=0;fc?M(a,b-1):d}function N(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?T:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function O(a,b){function c(a){return k(a)?a.map(function(a){return c(a)}):i(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!k(b)||k(b)&&0===b.length)return a;var d,e=w(b),f="********";try{d=JSON.parse(P(a))}catch(g){return a}return c(d)}var P=a(11),Q="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},R=3,S=51200,T=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isUndefined:g,isFunction:h,isPlainObject:i,isString:j,isArray:k,isEmptyObject:l,supportsErrorEvent:m,supportsFetch:n,supportsReferrerPolicy:o,supportsPromiseRejectionEvent:p,wrappedCallback:q,each:r,objectMerge:s,truncate:u,objectFrozen:t,hasKey:v,joinRegExp:w,urlencode:x,uuid4:z,htmlTreeAsString:A,htmlElementAsString:B,isSameException:E,isSameStacktrace:F,parseUrl:y,fill:G,safeJoin:H,serializeException:M,serializeKeysForMessage:N,sanitize:O}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{11:11}],10:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}var e=a(9),f={collectWindowErrors:!0,debug:!1},g="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},h=[].slice,i="?",j=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;f.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function k(a,b){var c=null;if(!b||f.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(h.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,g,h){var l=null,m=e.isErrorEvent(h)?h.error:h,n=e.isErrorEvent(a)?a.message:a;if(v)f.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&e.isError(m))l=f.computeStackTrace(m),k(l,!0);else{var p,r={url:b,line:c,column:g},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(j);p&&(s=p[1],n=p[2])}r.func=i,l={name:s,message:n,url:d(),stack:[r]},k(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=g.onerror,g.onerror=l,r=!0)}function n(){r&&(g.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,k.apply(null,[a,!1].concat(b))}function p(a,b){var c=h.call(arguments,1);if(v){if(u===a)return;o()}var d=f.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),f.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,e,f=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,g=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,h=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,j=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,k=/\((\S*)(?::(\d+))(?::(\d+))\)/,l=a.stack.split("\n"),m=[],n=(/^(.*) is undefined$/.exec(a.message),0),o=l.length;n eval")>-1;q&&(b=j.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==n||c[5]||"undefined"==typeof a.columnNumber||(m[0].column=a.columnNumber+1),e={url:c[3],func:c[1]||i,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}!e.func&&e.line&&(e.func=i),m.push(e)}return m.length?{name:a.name,message:a.message,url:d(),stack:m}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=i),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1} +return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,g){for(var h,j,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==e&&o!==f.report){if(j={url:null,func:i,line:null,column:null},o.name?j.func=o.name:(h=k.exec(o.toString()))&&(j.func=h[1]),"undefined"==typeof j.func)try{j.func=h.input.substring(0,h.input.indexOf("{"))}catch(p){}m[""+o]?n=!0:m[""+o]=!0,l.push(j)}g&&l.splice(0,g);var q={name:a.name,message:a.message,url:d(),stack:l};return b(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),q}function e(b,e){var g=null;e=null==e?0:+e;try{if(g=a(b))return g}catch(h){if(f.debug)throw h}try{if(g=c(b,e+1))return g}catch(h){if(f.debug)throw h}return{name:b.name,message:b.message,url:d()}}return e.augmentStackTraceWithInitialElement=b,e.computeStackTraceFromStackProp=a,e}(),b.exports=f}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{9:9}],11:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}],12:[function(a,b,c){function d(a,b){var c=(65535&a)+(65535&b),d=(a>>16)+(b>>16)+(c>>16);return d<<16|65535&c}function e(a,b){return a<>>32-b}function f(a,b,c,f,g,h){return d(e(d(d(b,a),d(f,h)),g),c)}function g(a,b,c,d,e,g,h){return f(b&c|~b&d,a,b,e,g,h)}function h(a,b,c,d,e,g,h){return f(b&d|c&~d,a,b,e,g,h)}function i(a,b,c,d,e,g,h){return f(b^c^d,a,b,e,g,h)}function j(a,b,c,d,e,g,h){return f(c^(b|~d),a,b,e,g,h)}function k(a,b){a[b>>5]|=128<>>9<<4)+14]=b;var c,e,f,k,l,m=1732584193,n=-271733879,o=-1732584194,p=271733878;for(c=0;c>5]>>>b%32&255);return c}function m(a){var b,c=[];for(c[(a.length>>2)-1]=void 0,b=0;b>5]|=(255&a.charCodeAt(b/8))<16&&(e=k(e,8*a.length)),c=0;c<16;c+=1)f[c]=909522486^e[c],g[c]=1549556828^e[c];return d=k(f.concat(m(b)),512+8*b.length),l(k(g.concat(d),640))}function p(a){var b,c,d="0123456789abcdef",e="";for(c=0;c>>4&15)+d.charAt(15&b);return e}function q(a){return unescape(encodeURIComponent(a))}function r(a){return n(q(a))}function s(a){return p(r(a))}function t(a,b){return o(q(a),q(b))}function u(a,b){return p(t(a,b))}function v(a,b,c){return b?c?t(b,a):u(b,a):c?r(a):s(a)}b.exports=v},{}]},{},[8,1,2,3,4])(8)}); //# sourceMappingURL=raven.min.js.map \ No newline at end of file diff --git a/dist/angular,console,ember,vue/raven.min.js.map b/dist/angular,console,ember,vue/raven.min.js.map index 9782a3431fb2..b531dcaacb42 100644 --- a/dist/angular,console,ember,vue/raven.min.js.map +++ b/dist/angular,console,ember,vue/raven.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["raven.js"],"names":["global","factory","exports","module","define","amd","Raven","this","createCommonjsModule","fn","_typeof","obj","Symbol","iterator","constructor","prototype","isObject$1","what","isError$1","value","toString","call","Error","isErrorEvent$1","supportsErrorEvent","isUndefined$1","isFunction$1","isPlainObject","Object","isString$1","isArray$1","isEmptyObject$1","_","hasOwnProperty","ErrorEvent","e","supportsFetch$1","_window$3","Headers","Request","Response","wrappedCallback","callback","dataCallback","data","original","normalizedData","each$1","i","j","length","hasKey$1","objectMerge$1","obj1","obj2","key","objectFrozen$1","isFrozen","truncate$1","str","max","substr","object","joinRegExp$1","patterns","pattern","sources","len","push","replace","source","RegExp","join","urlencode$1","o","pairs","encodeURIComponent","parseUrl$1","url","match","query","fragment","protocol","host","path","relative","uuid4$1","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","r","Math","random","htmlTreeAsString$1","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","reverse","className","classes","attr","tagName","toLowerCase","id","split","attrWhitelist","getAttribute","isOnlyOneTruthy","a","b","isBothUndefined","isSameException$1","ex1","ex2","values","type","stacktrace","isSameStacktrace$1","stack1","stack2","frames1","frames","frames2","filename","lineno","colno","fill$1","name","replacement","track","orig","__raven__","__orig__","safeJoin","input","delimiter","output","String","getLocationHref","document","location","href","RavenConfigError","message","now","Date","keepOriginalCallback","isFunction","Raven$1","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window$1","SENTRY_RELEASE","logger","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","_fetchDefaults","method","keepalive","referrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","console","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","_lastHref","_resetBackoff","angularPlugin","angular","RavenProvider","$get","$window","ExceptionHandlerProvider","$provide","decorator","exceptionHandler","R","$delegate","ex","cause","captureException","extra","window","moduleName","provider","config","setDataCallback","wrappedCallback$1","_normalizeData","consolePlugin","pluginOptions","logLevels","levels","msg","captureMessage","level","pop","wrapConsoleMethod$1","emberPlugin","Ember","_oldOnError","onerror","error","RSVP","on","reason","context","formatComponentName","vm","$root","_isVue","$options","_componentTag","__file","vuePlugin","Vue","errorHandler","info","metaData","componentName","propsData","lifecycleHook","commonjsGlobal","self","_sPO","setPrototypeOf","p","__proto__","Reflect","construct","Parent","args","Class","Constructor","apply","bind","utils","isObject","isError","isErrorEvent","isString","isArray","isEmptyObject","supportsFetch","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","TraceKit","debug","_window$2","_slice","slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","report","subscribe","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","stack","isWindowError","exception","concat","arguments","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","computeStackTrace","augmentStackTraceWithInitialElement","processLastException","groups","line","column","undefined","func","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","lastException","rethrow","setTimeout","incomplete","uninstall","computeStackTraceFromStackProp","submatch","parts","element","chrome","gecko","winjs","geckoEval","chromeEval","lines","exec","isNative","indexOf","isEval","columnNumber","stackInfo","initial","unshift","partial","computeStackTraceByWalkingCallerChain","depth","item","functionName","funcs","recursion","curr","caller","substring","result","sourceURL","fileName","lineNumber","description","tracekit","stringify_1","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","err","keys","thisPos","Infinity","getSerialize","configError","wrapMethod","originalConsoleLevel","originalConsole","sentryLevel","Function","console$1","wrapConsoleMethod","dsnKeys","dsnPattern","navigator","VERSION","dsn","options","_logDebug","globalOptions","setDSN","maxBreadcrumbs","min","autoBreadcrumbDefaults","xhr","dom","sentry","instrumentDefaults","tryCatch","install","isSetup","_handleOnErrorStackInfo","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","lastIndexOf","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","wrap","_before","wrapped","deep","_ignoreNextOnError","__raven_wrapper__","property","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","trimHeadFrames","isNotError","isNotErrorEvent","isErrorEventWithoutError","_handleStackInfo","test","initialCall","fileurl","fingerprint","_prepareFrames","_send","captureBreadcrumb","crumb","timestamp","breadcrumbCallback","shift","addPlugin","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","O","X","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","Y","evtName","_keypressTimeout","target","category","$","debounceDuration","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","from","to","parsedLoc","parsedTo","parsedFrom","F","_originalFunctionToString","Q","G","wrapTimeFn","t","Array","originalCallback","wrapEventTarget","proto","capture","secure","handleEvent","before","clickHandler","keypressHandler","_keypressEventHandler","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","H","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","onreadystatechange","origFetch","fetchInput","fetchData","then","response","addEventListener","attachEvent","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","builtin","S","I","installer","J","m","allowSecretKey","M","port","E","T","_triggerEvent","_processException","U","frame","_normalizeFrame","in_app","da","stackInfoUrl","normalized","function","ca","prefixedMessage","culprit","ea","request","Referer","breadcrumbs","_trimBreadcrumbs","fa","urlProp","urlProps","ga","httpData","userAgent","User-Agent","referrer","A","_backoffDuration","_backoffStart","ja","ka","current","last","la","_shouldBackoff","retry","get","getResponseHeader","parseInt","V","baseData","project","platform","_getHttpData","serverName","server_name","forEach","_sendProcessedPayload","na","ma","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","oa","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","onload","open","setRequestHeader","send","pa","hash","evaluated","D","W","setUser","setReleaseContext","raven","_window","_Raven","noConflict","singleton","angularPattern","matches","angularDocs","console$3","ember","vue","angular_console_ember_vue"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file +{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","angularPlugin","angular","RavenProvider","$get","$window","ExceptionHandlerProvider","$provide","decorator","exceptionHandler","R","$delegate","ex","cause","captureException","extra","moduleName","provider","config","setDataCallback","wrappedCallback","data","_normalizeData","angularPattern","exception","values","matches","exec","value","type","message","angularDocs","substr","addPlugin","8","9","2","consolePlugin","console","pluginOptions","logLevels","levels","push","callback","msg","captureMessage","level","pop","wrapConsoleMethod","wrapMethod","6","3","emberPlugin","Ember","_oldOnError","onerror","error","RSVP","on","reason","context","4","formatComponentName","vm","$root","name","_isVue","$options","_componentTag","__file","vuePlugin","Vue","errorHandler","info","metaData","Object","prototype","toString","componentName","propsData","lifecycleHook","5","RavenConfigError","constructor","utils","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","safeJoin","logger","Function","apply","7","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","sanitizeKeys","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isError","isObject","isPlainObject","isErrorEvent","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","sanitize","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","dsn","options","_logDebug","globalOptions","key","setDSN","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","func","undefined","wrap","_before","wrapped","deep","_ignoreNextOnError","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","U","event","unhandledPromiseRejection","C","_promiseRejectionHandler","bind","addEventListener","Q","removeEventListener","trimHeadFrames","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","V","currentOptions","exKeys","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","M","setTimeout","_","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","aa","evtName","_keypressTimeout","target","category","ca","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","da","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","D","_originalFunctionToString","E","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","F","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","S","builtin","T","G","installer","concat","H","str","m","allowSecretKey","K","port","B","W","stackInfo","_triggerEvent","_processException","lineno","Y","frame","_normalizeFrame","in_app","ha","stackInfoUrl","normalized","filename","line","colno","column","function","ga","prefixedMessage","culprit","ia","request","Referer","breadcrumbs","_trimBreadcrumbs","ja","urlProp","urlProps","ka","httpData","userAgent","User-Agent","referrer","z","_backoffDuration","_backoffStart","na","oa","current","last","pa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Z","baseData","project","platform","_getHttpData","serverName","server_name","_sanitizeData","forEach","random","_sendProcessedPayload","qa","sa","ra","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","ta","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","open","setRequestHeader","send","ua","hash","evaluated","A","$","setUser","setReleaseContext","10","11","12","RavenConstructor","_Raven","noConflict","Client","what","supportsErrorEvent","ErrorEvent","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","sanitizeMask","safeInput","o_O","getLocationHref","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","y","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","charAt","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","string","raw"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file diff --git a/dist/angular,console,ember/raven.js b/dist/angular,console,ember/raven.js index c2368eed1654..8b2577848217 100644 --- a/dist/angular,console,ember/raven.js +++ b/dist/angular,console,ember/raven.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.22.2 (1b6187b) | github.com/getsentry/raven-js */ +/*! Raven.js 3.24.2 (540f32b) | github.com/getsentry/raven-js */ /* * Includes TraceKit @@ -10,3265 +10,4040 @@ * */ -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : - typeof define === 'function' && define.amd ? define(factory) : - (global.Raven = factory()); -}(this, (function () { 'use strict'; - -var commonjsGlobal = typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; +(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.Raven = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o href parsing trick because React Native and other -// environments where DOM might not be available - - -function parseUrl$1(url) { - if (typeof url !== 'string') return {}; - var match = url.match(/^(([^:\/?#]+):)?(\/\/([^\/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?$/); // coerce to undefined values to empty string so we don't get 'undefined' - - var query = match[6] || ''; - var fragment = match[8] || ''; - return { - protocol: match[2], - host: match[4], - path: match[5], - relative: match[5] + query + fragment // everything minus origin - +// First, check for JSON support +// If there is no JSON, we no-op the core features of Raven +// since JSON is required to encode the payload +function Raven() { + this._hasJSON = !!(typeof JSON === 'object' && JSON.stringify); + // Raven can run in contexts where there's no document (react-native) + this._hasDocument = !isUndefined(_document); + this._hasNavigator = !isUndefined(_navigator); + this._lastCapturedException = null; + this._lastData = null; + this._lastEventId = null; + this._globalServer = null; + this._globalKey = null; + this._globalProject = null; + this._globalContext = {}; + this._globalOptions = { + // SENTRY_RELEASE can be injected by https://github.com/getsentry/sentry-webpack-plugin + release: _window.SENTRY_RELEASE && _window.SENTRY_RELEASE.id, + logger: 'javascript', + ignoreErrors: [], + ignoreUrls: [], + whitelistUrls: [], + includePaths: [], + headers: null, + collectWindowErrors: true, + captureUnhandledRejections: true, + maxMessageLength: 0, + // By default, truncates URL values to 250 chars + maxUrlLength: 250, + stackTraceLimit: 50, + autoBreadcrumbs: true, + instrument: true, + sampleRate: 1, + sanitizeKeys: [] }; -} - -function uuid4$1() { - var crypto = _window$3.crypto || _window$3.msCrypto; - - if (!isUndefined$1(crypto) && crypto.getRandomValues) { - // Use window.crypto API if available - // eslint-disable-next-line no-undef - var arr = new Uint16Array(8); - crypto.getRandomValues(arr); // set 4 in byte 7 - - arr[3] = arr[3] & 0xfff | 0x4000; // set 2 most significant bits of byte 9 to '10' - - arr[4] = arr[4] & 0x3fff | 0x8000; - - var pad = function pad(num) { - var v = num.toString(16); - - while (v.length < 4) { - v = '0' + v; - } - - return v; - }; + this._fetchDefaults = { + method: 'POST', + keepalive: true, + // Despite all stars in the sky saying that Edge supports old draft syntax, aka 'never', 'always', 'origin' and 'default + // https://caniuse.com/#feat=referrer-policy + // It doesn't. And it throw exception instead of ignoring this parameter... + // REF: https://github.com/getsentry/raven-js/issues/1233 + referrerPolicy: supportsReferrerPolicy() ? 'origin' : '' + }; + this._ignoreOnError = 0; + this._isRavenInstalled = false; + this._originalErrorStackTraceLimit = Error.stackTraceLimit; + // capture references to window.console *and* all its methods first + // before the console plugin has a chance to monkey patch + this._originalConsole = _window.console || {}; + this._originalConsoleMethods = {}; + this._plugins = []; + this._startTime = now(); + this._wrappedBuiltIns = []; + this._breadcrumbs = []; + this._lastCapturedEvent = null; + this._keypressTimeout; + this._location = _window.location; + this._lastHref = this._location && this._location.href; + this._resetBackoff(); - return pad(arr[0]) + pad(arr[1]) + pad(arr[2]) + pad(arr[3]) + pad(arr[4]) + pad(arr[5]) + pad(arr[6]) + pad(arr[7]); - } else { - // http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/2117523#2117523 - return 'xxxxxxxxxxxx4xxxyxxxxxxxxxxxxxxx'.replace(/[xy]/g, function (c) { - var r = Math.random() * 16 | 0, - v = c === 'x' ? r : r & 0x3 | 0x8; - return v.toString(16); - }); + // eslint-disable-next-line guard-for-in + for (var method in this._originalConsole) { + this._originalConsoleMethods[method] = this._originalConsole[method]; } } -/** - * Given a child DOM element, returns a query-selector statement describing that - * and its ancestors - * e.g. [HTMLElement] => body > div > input#foo.btn[name=baz] - * @param elem - * @returns {string} + +/* + * The core Raven singleton + * + * @this {Raven} */ +Raven.prototype = { + // Hardcode version string so that raven source can be loaded directly via + // webpack (using a build step causes webpack #1617). Grunt verifies that + // this value matches package.json during build. + // See: https://github.com/getsentry/raven-js/issues/465 + VERSION: '3.24.2', + + debug: false, -function htmlTreeAsString$1(elem) { - /* eslint no-extra-parens:0*/ - var MAX_TRAVERSE_HEIGHT = 5, - MAX_OUTPUT_LEN = 80, - out = [], - height = 0, - len = 0, - separator = ' > ', - sepLength = separator.length, - nextStr; + TraceKit: TraceKit, // alias to TraceKit - while (elem && height++ < MAX_TRAVERSE_HEIGHT) { - nextStr = htmlElementAsString(elem); // bail out if - // - nextStr is the 'html' element - // - the length of the string that would be created exceeds MAX_OUTPUT_LEN - // (ignore this limit if we are on the first iteration) + /* + * Configure Raven with a DSN and extra options + * + * @param {string} dsn The public Sentry DSN + * @param {object} options Set of global options [optional] + * @return {Raven} + */ + config: function(dsn, options) { + var self = this; - if (nextStr === 'html' || height > 1 && len + out.length * sepLength + nextStr.length >= MAX_OUTPUT_LEN) { - break; + if (self._globalServer) { + this._logDebug('error', 'Error: Raven has already been configured'); + return self; } + if (!dsn) return self; - out.push(nextStr); - len += nextStr.length; - elem = elem.parentNode; - } - - return out.reverse().join(separator); -} -/** - * Returns a simple, query-selector representation of a DOM element - * e.g. [HTMLElement] => input#foo.btn[name=baz] - * @param HTMLElement - * @returns {string} - */ + var globalOptions = self._globalOptions; + // merge in options + if (options) { + each(options, function(key, value) { + // tags and extra are special and need to be put into context + if (key === 'tags' || key === 'extra' || key === 'user') { + self._globalContext[key] = value; + } else { + globalOptions[key] = value; + } + }); + } -function htmlElementAsString(elem) { - var out = [], - className, - classes, - key, - attr, - i; + self.setDSN(dsn); - if (!elem || !elem.tagName) { - return ''; - } + // "Script error." is hard coded into browsers for errors that it can't read. + // this is the result of a script being pulled in from an external domain and CORS. + globalOptions.ignoreErrors.push(/^Script error\.?$/); + globalOptions.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/); - out.push(elem.tagName.toLowerCase()); + // join regexp rules into one big rule + globalOptions.ignoreErrors = joinRegExp(globalOptions.ignoreErrors); + globalOptions.ignoreUrls = globalOptions.ignoreUrls.length + ? joinRegExp(globalOptions.ignoreUrls) + : false; + globalOptions.whitelistUrls = globalOptions.whitelistUrls.length + ? joinRegExp(globalOptions.whitelistUrls) + : false; + globalOptions.includePaths = joinRegExp(globalOptions.includePaths); + globalOptions.maxBreadcrumbs = Math.max( + 0, + Math.min(globalOptions.maxBreadcrumbs || 100, 100) + ); // default and hard limit is 100 - if (elem.id) { - out.push('#' + elem.id); - } + var autoBreadcrumbDefaults = { + xhr: true, + console: true, + dom: true, + location: true, + sentry: true + }; - className = elem.className; + var autoBreadcrumbs = globalOptions.autoBreadcrumbs; + if ({}.toString.call(autoBreadcrumbs) === '[object Object]') { + autoBreadcrumbs = objectMerge(autoBreadcrumbDefaults, autoBreadcrumbs); + } else if (autoBreadcrumbs !== false) { + autoBreadcrumbs = autoBreadcrumbDefaults; + } + globalOptions.autoBreadcrumbs = autoBreadcrumbs; - if (className && isString$1(className)) { - classes = className.split(/\s+/); + var instrumentDefaults = { + tryCatch: true + }; - for (i = 0; i < classes.length; i++) { - out.push('.' + classes[i]); + var instrument = globalOptions.instrument; + if ({}.toString.call(instrument) === '[object Object]') { + instrument = objectMerge(instrumentDefaults, instrument); + } else if (instrument !== false) { + instrument = instrumentDefaults; } - } + globalOptions.instrument = instrument; - var attrWhitelist = ['type', 'name', 'title', 'alt']; + TraceKit.collectWindowErrors = !!globalOptions.collectWindowErrors; - for (i = 0; i < attrWhitelist.length; i++) { - key = attrWhitelist[i]; - attr = elem.getAttribute(key); + // return for chaining + return self; + }, - if (attr) { - out.push('[' + key + '="' + attr + '"]'); - } - } + /* + * Installs a global window.onerror error handler + * to capture and report uncaught exceptions. + * At this point, install() is required to be called due + * to the way TraceKit is set up. + * + * @return {Raven} + */ + install: function() { + var self = this; + if (self.isSetup() && !self._isRavenInstalled) { + TraceKit.report.subscribe(function() { + self._handleOnErrorStackInfo.apply(self, arguments); + }); - return out.join(''); -} -/** - * Returns true if either a OR b is truthy, but not both - */ + if (self._globalOptions.captureUnhandledRejections) { + self._attachPromiseRejectionHandler(); + } + self._patchFunctionToString(); -function isOnlyOneTruthy(a, b) { - return !!(!!a ^ !!b); -} -/** - * Returns true if both parameters are undefined - */ + if (self._globalOptions.instrument && self._globalOptions.instrument.tryCatch) { + self._instrumentTryCatch(); + } + if (self._globalOptions.autoBreadcrumbs) self._instrumentBreadcrumbs(); -function isBothUndefined(a, b) { - return isUndefined$1(a) && isUndefined$1(b); -} -/** - * Returns true if the two input exception interfaces have the same content - */ + // Install all of the plugins + self._drainPlugins(); + self._isRavenInstalled = true; + } -function isSameException$1(ex1, ex2) { - if (isOnlyOneTruthy(ex1, ex2)) return false; - ex1 = ex1.values[0]; - ex2 = ex2.values[0]; - if (ex1.type !== ex2.type || ex1.value !== ex2.value) return false; // in case both stacktraces are undefined, we can't decide so default to false + Error.stackTraceLimit = self._globalOptions.stackTraceLimit; + return this; + }, - if (isBothUndefined(ex1.stacktrace, ex2.stacktrace)) return false; - return isSameStacktrace$1(ex1.stacktrace, ex2.stacktrace); -} -/** - * Returns true if the two input stack trace interfaces have the same content - */ + /* + * Set the DSN (can be called multiple time unlike config) + * + * @param {string} dsn The public Sentry DSN + */ + setDSN: function(dsn) { + var self = this, + uri = self._parseDSN(dsn), + lastSlash = uri.path.lastIndexOf('/'), + path = uri.path.substr(1, lastSlash); + self._dsn = dsn; + self._globalKey = uri.user; + self._globalSecret = uri.pass && uri.pass.substr(1); + self._globalProject = uri.path.substr(lastSlash + 1); -function isSameStacktrace$1(stack1, stack2) { - if (isOnlyOneTruthy(stack1, stack2)) return false; - var frames1 = stack1.frames; - var frames2 = stack2.frames; // Exit early if frame count differs + self._globalServer = self._getGlobalServer(uri); - if (frames1.length !== frames2.length) return false; // Iterate through every frame; bail out if anything differs + self._globalEndpoint = + self._globalServer + '/' + path + 'api/' + self._globalProject + '/store/'; - var a, b; - - for (var i = 0; i < frames1.length; i++) { - a = frames1[i]; - b = frames2[i]; - if (a.filename !== b.filename || a.lineno !== b.lineno || a.colno !== b.colno || a['function'] !== b['function']) return false; - } - - return true; -} -/** - * Polyfill a method - * @param obj object e.g. `document` - * @param name method name present on object e.g. `addEventListener` - * @param replacement replacement function - * @param track {optional} record instrumentation to an array - */ + // Reset backoff state since we may be pointing at a + // new project/server + this._resetBackoff(); + }, + /* + * Wrap code within a context so Raven can capture errors + * reliably across domains that is executed immediately. + * + * @param {object} options A specific set of options for this context [optional] + * @param {function} func The callback to be immediately executed within the context + * @param {array} args An array of arguments to be called with the callback [optional] + */ + context: function(options, func, args) { + if (isFunction(options)) { + args = func || []; + func = options; + options = undefined; + } -function fill$1(obj, name, replacement, track) { - var orig = obj[name]; - obj[name] = replacement(orig); - obj[name].__raven__ = true; - obj[name].__orig__ = orig; + return this.wrap(options, func).apply(this, args); + }, - if (track) { - track.push([obj, name, orig]); - } -} -/** - * Join values in array - * @param input array of values to be joined together - * @param delimiter string to be placed in-between values - * @returns {string} - */ + /* + * Wrap code within a context and returns back a new function to be executed + * + * @param {object} options A specific set of options for this context [optional] + * @param {function} func The function to be wrapped in a new context + * @param {function} func A function to call before the try/catch wrapper [optional, private] + * @return {function} The newly wrapped functions with a context + */ + wrap: function(options, func, _before) { + var self = this; + // 1 argument has been passed, and it's not a function + // so just return it + if (isUndefined(func) && !isFunction(options)) { + return options; + } + // options is optional + if (isFunction(options)) { + func = options; + options = undefined; + } -function safeJoin(input, delimiter) { - if (!isArray$1(input)) return ''; - var output = []; + // At this point, we've passed along 2 arguments, and the second one + // is not a function either, so we'll just return the second argument. + if (!isFunction(func)) { + return func; + } - for (var i = 0; i < input.length; i++) { + // We don't wanna wrap it twice! try { - output.push(String(input[i])); + if (func.__raven__) { + return func; + } + + // If this has already been wrapped in the past, return that + if (func.__raven_wrapper__) { + return func.__raven_wrapper__; + } } catch (e) { - output.push('[value cannot be serialized]'); + // Just accessing custom props in some Selenium environments + // can cause a "Permission denied" exception (see raven-js#495). + // Bail on wrapping and return the function as-is (defers to window.onerror). + return func; } - } - - return output.join(delimiter); -} -var utils = { - isObject: isObject$1, - isError: isError$1, - isErrorEvent: isErrorEvent$1, - isUndefined: isUndefined$1, - isFunction: isFunction$1, - isPlainObject: isPlainObject, - isString: isString$1, - isArray: isArray$1, - isEmptyObject: isEmptyObject$1, - supportsErrorEvent: supportsErrorEvent, - supportsFetch: supportsFetch$1, - wrappedCallback: wrappedCallback, - each: each$1, - objectMerge: objectMerge$1, - truncate: truncate$1, - objectFrozen: objectFrozen$1, - hasKey: hasKey$1, - joinRegExp: joinRegExp$1, - urlencode: urlencode$1, - uuid4: uuid4$1, - htmlTreeAsString: htmlTreeAsString$1, - htmlElementAsString: htmlElementAsString, - isSameException: isSameException$1, - isSameStacktrace: isSameStacktrace$1, - parseUrl: parseUrl$1, - fill: fill$1, - safeJoin: safeJoin -}; + function wrapped() { + var args = [], + i = arguments.length, + deep = !options || (options && options.deep !== false); -/* - TraceKit - Cross brower stack traces + if (_before && isFunction(_before)) { + _before.apply(this, arguments); + } - This was originally forked from github.com/occ/TraceKit, but has since been - largely re-written and is now maintained as part of raven-js. Tests for - this are in test/vendor. + // Recursively wrap all of a function's arguments that are + // functions themselves. + while (i--) args[i] = deep ? self.wrap(options, arguments[i]) : arguments[i]; - MIT license -*/ + try { + // Attempt to invoke user-land function + // NOTE: If you are a Sentry user, and you are seeing this stack frame, it + // means Raven caught an error invoking your application code. This is + // expected behavior and NOT indicative of a bug with Raven.js. + return func.apply(this, args); + } catch (e) { + self._ignoreNextOnError(); + self.captureException(e, options); + throw e; + } + } -var TraceKit = { - collectWindowErrors: true, - debug: false -}; // This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) + // copy over properties of the old function + for (var property in func) { + if (hasKey(func, property)) { + wrapped[property] = func[property]; + } + } + wrapped.prototype = func.prototype; -var _window$2 = typeof window !== 'undefined' ? window : typeof commonjsGlobal !== 'undefined' ? commonjsGlobal : typeof self !== 'undefined' ? self : {}; // global reference to slice + func.__raven_wrapper__ = wrapped; + // Signal that this function has been wrapped/filled already + // for both debugging and to prevent it to being wrapped/filled twice + wrapped.__raven__ = true; + wrapped.__orig__ = func; + return wrapped; + }, -var _slice = [].slice; -var UNKNOWN_FUNCTION = '?'; // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error#Error_types + /** + * Uninstalls the global error handler. + * + * @return {Raven} + */ + uninstall: function() { + TraceKit.report.uninstall(); -var ERROR_TYPES_RE = /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/; + this._detachPromiseRejectionHandler(); + this._unpatchFunctionToString(); + this._restoreBuiltIns(); + this._restoreConsole(); -function getLocationHref() { - if (typeof document === 'undefined' || document.location == null) return ''; - return document.location.href; -} -/** - * TraceKit.report: cross-browser processing of unhandled exceptions - * - * Syntax: - * TraceKit.report.subscribe(function(stackInfo) { ... }) - * TraceKit.report.unsubscribe(function(stackInfo) { ... }) - * TraceKit.report(exception) - * try { ...code... } catch(ex) { TraceKit.report(ex); } - * - * Supports: - * - Firefox: full stack trace with line numbers, plus column number - * on top frame; column number is not guaranteed - * - Opera: full stack trace with line and column numbers - * - Chrome: full stack trace with line and column numbers - * - Safari: line and column number for the top frame only; some frames - * may be missing, and column number is not guaranteed - * - IE: line and column number for the top frame only; some frames - * may be missing, and column number is not guaranteed - * - * In theory, TraceKit should work on all of the following versions: - * - IE5.5+ (only 8.0 tested) - * - Firefox 0.9+ (only 3.5+ tested) - * - Opera 7+ (only 10.50 tested; versions 9 and earlier may require - * Exceptions Have Stacktrace to be enabled in opera:config) - * - Safari 3+ (only 4+ tested) - * - Chrome 1+ (only 5+ tested) - * - Konqueror 3.5+ (untested) - * - * Requires TraceKit.computeStackTrace. - * - * Tries to catch all unhandled exceptions and report them to the - * subscribed handlers. Please note that TraceKit.report will rethrow the - * exception. This is REQUIRED in order to get a useful stack trace in IE. - * If the exception does not reach the top of the browser, you will only - * get a stack trace from the point where TraceKit.report was called. - * - * Handlers receive a stackInfo object as described in the - * TraceKit.computeStackTrace docs. - */ + Error.stackTraceLimit = this._originalErrorStackTraceLimit; + this._isRavenInstalled = false; + return this; + }, -TraceKit.report = function reportModuleWrapper() { - var handlers = [], - lastArgs = null, - lastException = null, - lastExceptionStack = null; /** - * Add a crash handler. - * @param {Function} handler - */ + * Callback used for `unhandledrejection` event + * + * @param {PromiseRejectionEvent} event An object containing + * promise: the Promise that was rejected + * reason: the value with which the Promise was rejected + * @return void + */ + _promiseRejectionHandler: function(event) { + this._logDebug('debug', 'Raven caught unhandled promise rejection:', event); + this.captureException(event.reason, { + extra: { + unhandledPromiseRejection: true + } + }); + }, - function subscribe(handler) { - installGlobalHandler(); - handlers.push(handler); - } /** - * Remove a crash handler. - * @param {Function} handler - */ + * Installs the global promise rejection handler. + * + * @return {raven} + */ + _attachPromiseRejectionHandler: function() { + this._promiseRejectionHandler = this._promiseRejectionHandler.bind(this); + _window.addEventListener && + _window.addEventListener('unhandledrejection', this._promiseRejectionHandler); + return this; + }, + /** + * Uninstalls the global promise rejection handler. + * + * @return {raven} + */ + _detachPromiseRejectionHandler: function() { + _window.removeEventListener && + _window.removeEventListener('unhandledrejection', this._promiseRejectionHandler); + return this; + }, - function unsubscribe(handler) { - for (var i = handlers.length - 1; i >= 0; --i) { - if (handlers[i] === handler) { - handlers.splice(i, 1); + /** + * Manually capture an exception and send it over to Sentry + * + * @param {error} ex An exception to be logged + * @param {object} options A specific set of options for this error [optional] + * @return {Raven} + */ + captureException: function(ex, options) { + options = objectMerge({trimHeadFrames: 0}, options ? options : {}); + + if (isErrorEvent(ex) && ex.error) { + // If it is an ErrorEvent with `error` property, extract it to get actual Error + ex = ex.error; + } else if (isError(ex)) { + // we have a real Error object + ex = ex; + } else if (isPlainObject(ex)) { + // If it is plain Object, serialize it manually and extract options + // This will allow us to group events based on top-level keys + // which is much better than creating new group when any key/value change + options = this._getCaptureExceptionOptionsFromPlainObject(options, ex); + ex = new Error(options.message); + } else { + // If none of previous checks were valid, then it means that + // it's not a plain Object + // it's not a valid ErrorEvent (one with an error property) + // it's not an Error + // So bail out and capture it as a simple message: + return this.captureMessage( + ex, + objectMerge(options, { + stacktrace: true, // if we fall back to captureMessage, default to attempting a new trace + trimHeadFrames: options.trimHeadFrames + 1 + }) + ); + } + + // Store the raw exception object for potential debugging and introspection + this._lastCapturedException = ex; + + // TraceKit.report will re-raise any exception passed to it, + // which means you have to wrap it in try/catch. Instead, we + // can wrap it here and only re-raise if TraceKit.report + // raises an exception different from the one we asked to + // report on. + try { + var stack = TraceKit.computeStackTrace(ex); + this._handleStackInfo(stack, options); + } catch (ex1) { + if (ex !== ex1) { + throw ex1; } } - } - /** - * Remove all crash handlers. - */ - - function unsubscribeAll() { - uninstallGlobalHandler(); - handlers = []; - } - /** - * Dispatch stack information to all handlers. - * @param {Object.} stack - */ + return this; + }, + _getCaptureExceptionOptionsFromPlainObject: function(currentOptions, ex) { + var exKeys = Object.keys(ex).sort(); + var options = objectMerge(currentOptions, { + message: + 'Non-Error exception captured with keys: ' + serializeKeysForMessage(exKeys), + fingerprint: [md5(exKeys)], + extra: currentOptions.extra || {} + }); + options.extra.__serialized__ = serializeException(ex); - function notifyHandlers(stack, isWindowError) { - var exception = null; + return options; + }, - if (isWindowError && !TraceKit.collectWindowErrors) { + /* + * Manually send a message to Sentry + * + * @param {string} msg A plain message to be captured in Sentry + * @param {object} options A specific set of options for this message [optional] + * @return {Raven} + */ + captureMessage: function(msg, options) { + // config() automagically converts ignoreErrors from a list to a RegExp so we need to test for an + // early call; we'll error on the side of logging anything called before configuration since it's + // probably something you should see: + if ( + !!this._globalOptions.ignoreErrors.test && + this._globalOptions.ignoreErrors.test(msg) + ) { return; } - for (var i in handlers) { - if (handlers.hasOwnProperty(i)) { - try { - handlers[i].apply(null, [stack].concat(_slice.call(arguments, 2))); - } catch (inner) { - exception = inner; - } - } - } - - if (exception) { - throw exception; - } - } - - var _oldOnerrorHandler, _onErrorHandlerInstalled; - /** - * Ensures all global unhandled exceptions are recorded. - * Supported by Gecko and IE. - * @param {string} msg Error message. - * @param {string} url URL of script that generated the exception. - * @param {(number|string)} lineNo The line number at which the error - * occurred. - * @param {?(number|string)} colNo The column number at which the error - * occurred. - * @param {?Error} ex The actual Error object. - */ - + options = options || {}; + msg = msg + ''; // Make sure it's actually a string - function traceKitWindowOnError(msg, url, lineNo, colNo, ex) { - var stack = null; // If 'ex' is ErrorEvent, get real Error from inside + var data = objectMerge( + { + message: msg + }, + options + ); - var exception = utils.isErrorEvent(ex) ? ex.error : ex; // If 'msg' is ErrorEvent, get real message from inside + var ex; + // Generate a "synthetic" stack trace from this point. + // NOTE: If you are a Sentry user, and you are seeing this stack frame, it is NOT indicative + // of a bug with Raven.js. Sentry generates synthetic traces either by configuration, + // or if it catches a thrown object without a "stack" property. + try { + throw new Error(msg); + } catch (ex1) { + ex = ex1; + } - var message = utils.isErrorEvent(msg) ? msg.message : msg; + // null exception name so `Error` isn't prefixed to msg + ex.name = null; + var stack = TraceKit.computeStackTrace(ex); - if (lastExceptionStack) { - TraceKit.computeStackTrace.augmentStackTraceWithInitialElement(lastExceptionStack, url, lineNo, message); - processLastException(); - } else if (exception && utils.isError(exception)) { - // non-string `exception` arg; attempt to extract stack trace - // New chrome and blink send along a real error object - // Let's just report that like a normal error. - // See: https://mikewest.org/2013/08/debugging-runtime-errors-with-window-onerror - stack = TraceKit.computeStackTrace(exception); - notifyHandlers(stack, true); - } else { - var location = { - url: url, - line: lineNo, - column: colNo - }; - var name = undefined; - var groups; + // stack[0] is `throw new Error(msg)` call itself, we are interested in the frame that was just before that, stack[1] + var initialCall = isArray(stack.stack) && stack.stack[1]; - if ({}.toString.call(message) === '[object String]') { - var groups = message.match(ERROR_TYPES_RE); + // if stack[1] is `Raven.captureException`, it means that someone passed a string to it and we redirected that call + // to be handled by `captureMessage`, thus `initialCall` is the 3rd one, not 2nd + // initialCall => captureException(string) => captureMessage(string) + if (initialCall && initialCall.func === 'Raven.captureException') { + initialCall = stack.stack[2]; + } - if (groups) { - name = groups[1]; - message = groups[2]; - } - } + var fileurl = (initialCall && initialCall.url) || ''; - location.func = UNKNOWN_FUNCTION; - stack = { - name: name, - message: message, - url: getLocationHref(), - stack: [location] - }; - notifyHandlers(stack, true); + if ( + !!this._globalOptions.ignoreUrls.test && + this._globalOptions.ignoreUrls.test(fileurl) + ) { + return; } - if (_oldOnerrorHandler) { - return _oldOnerrorHandler.apply(this, arguments); + if ( + !!this._globalOptions.whitelistUrls.test && + !this._globalOptions.whitelistUrls.test(fileurl) + ) { + return; } - return false; - } + if (this._globalOptions.stacktrace || (options && options.stacktrace)) { + // fingerprint on msg, not stack trace (legacy behavior, could be revisited) + data.fingerprint = data.fingerprint == null ? msg : data.fingerprint; - function installGlobalHandler() { - if (_onErrorHandlerInstalled) { - return; - } + options = objectMerge( + { + trimHeadFrames: 0 + }, + options + ); + // Since we know this is a synthetic trace, the top frame (this function call) + // MUST be from Raven.js, so mark it for trimming + // We add to the trim counter so that callers can choose to trim extra frames, such + // as utility functions. + options.trimHeadFrames += 1; - _oldOnerrorHandler = _window$2.onerror; - _window$2.onerror = traceKitWindowOnError; - _onErrorHandlerInstalled = true; - } + var frames = this._prepareFrames(stack, options); + data.stacktrace = { + // Sentry expects frames oldest to newest + frames: frames.reverse() + }; + } - function uninstallGlobalHandler() { - if (!_onErrorHandlerInstalled) { - return; + // Make sure that fingerprint is always wrapped in an array + if (data.fingerprint) { + data.fingerprint = isArray(data.fingerprint) + ? data.fingerprint + : [data.fingerprint]; } - _window$2.onerror = _oldOnerrorHandler; - _onErrorHandlerInstalled = false; - _oldOnerrorHandler = undefined; - } + // Fire away! + this._send(data); - function processLastException() { - var _lastExceptionStack = lastExceptionStack, - _lastArgs = lastArgs; - lastArgs = null; - lastExceptionStack = null; - lastException = null; - notifyHandlers.apply(null, [_lastExceptionStack, false].concat(_lastArgs)); - } - /** - * Reports an unhandled Error to TraceKit. - * @param {Error} ex - * @param {?boolean} rethrow If false, do not re-throw the exception. - * Only used for window.onerror to not cause an infinite loop of - * rethrowing. - */ + return this; + }, + captureBreadcrumb: function(obj) { + var crumb = objectMerge( + { + timestamp: now() / 1000 + }, + obj + ); - function report(ex, rethrow) { - var args = _slice.call(arguments, 1); + if (isFunction(this._globalOptions.breadcrumbCallback)) { + var result = this._globalOptions.breadcrumbCallback(crumb); - if (lastExceptionStack) { - if (lastException === ex) { - return; // already caught by an inner catch block, ignore - } else { - processLastException(); + if (isObject(result) && !isEmptyObject(result)) { + crumb = result; + } else if (result === false) { + return this; } } - var stack = TraceKit.computeStackTrace(ex); - lastExceptionStack = stack; - lastException = ex; - lastArgs = args; // If the stack trace is incomplete, wait for 2 seconds for - // slow slow IE to see if onerror occurs or not before reporting - // this exception; otherwise, we will end up with an incomplete - // stack trace + this._breadcrumbs.push(crumb); + if (this._breadcrumbs.length > this._globalOptions.maxBreadcrumbs) { + this._breadcrumbs.shift(); + } + return this; + }, - setTimeout(function () { - if (lastException === ex) { - processLastException(); - } - }, stack.incomplete ? 2000 : 0); + addPlugin: function(plugin /*arg1, arg2, ... argN*/) { + var pluginArgs = [].slice.call(arguments, 1); - if (rethrow !== false) { - throw ex; // re-throw to propagate to the top level (and cause window.onerror) + this._plugins.push([plugin, pluginArgs]); + if (this._isRavenInstalled) { + this._drainPlugins(); } - } - report.subscribe = subscribe; - report.unsubscribe = unsubscribe; - report.uninstall = unsubscribeAll; - return report; -}(); -/** - * TraceKit.computeStackTrace: cross-browser stack traces in JavaScript - * - * Syntax: - * s = TraceKit.computeStackTrace(exception) // consider using TraceKit.report instead (see below) - * Returns: - * s.name - exception name - * s.message - exception message - * s.stack[i].url - JavaScript or HTML file URL - * s.stack[i].func - function name, or empty for anonymous functions (if guessing did not work) - * s.stack[i].args - arguments passed to the function, if known - * s.stack[i].line - line number, if known - * s.stack[i].column - column number, if known - * - * Supports: - * - Firefox: full stack trace with line numbers and unreliable column - * number on top frame - * - Opera 10: full stack trace with line and column numbers - * - Opera 9-: full stack trace with line numbers - * - Chrome: full stack trace with line and column numbers - * - Safari: line and column number for the topmost stacktrace element - * only - * - IE: no line numbers whatsoever - * - * Tries to guess names of anonymous functions by looking for assignments - * in the source code. In IE and Safari, we have to guess source file names - * by searching for function bodies inside all page scripts. This will not - * work for scripts that are loaded cross-domain. - * Here be dragons: some function names may be guessed incorrectly, and - * duplicate functions may be mismatched. - * - * TraceKit.computeStackTrace should only be used for tracing purposes. - * Logging of unhandled exceptions should be done with TraceKit.report, - * which builds on top of TraceKit.computeStackTrace and provides better - * IE support by utilizing the window.onerror event to retrieve information - * about the top of the stack. - * - * Note: In IE and Safari, no stack trace is recorded on the Error object, - * so computeStackTrace instead walks its *own* chain of callers. - * This means that: - * * in Safari, some methods may be missing from the stack trace; - * * in IE, the topmost function in the stack trace will always be the - * caller of computeStackTrace. - * - * This is okay for tracing (because you are likely to be calling - * computeStackTrace from the function you want to be the topmost element - * of the stack trace anyway), but not okay for logging unhandled - * exceptions (because your catch block will likely be far away from the - * inner function that actually caused the exception). - * - */ + return this; + }, + /* + * Set/clear a user to be sent along with the payload. + * + * @param {object} user An object representing user data [optional] + * @return {Raven} + */ + setUserContext: function(user) { + // Intentionally do not merge here since that's an unexpected behavior. + this._globalContext.user = user; -TraceKit.computeStackTrace = function computeStackTraceWrapper() { - // Contents of Exception in various browsers. - // - // SAFARI: - // ex.message = Can't find variable: qq - // ex.line = 59 - // ex.sourceId = 580238192 - // ex.sourceURL = http://... - // ex.expressionBeginOffset = 96 - // ex.expressionCaretOffset = 98 - // ex.expressionEndOffset = 98 - // ex.name = ReferenceError - // - // FIREFOX: - // ex.message = qq is not defined - // ex.fileName = http://... - // ex.lineNumber = 59 - // ex.columnNumber = 69 - // ex.stack = ...stack trace... (see the example below) - // ex.name = ReferenceError - // - // CHROME: - // ex.message = qq is not defined - // ex.name = ReferenceError - // ex.type = not_defined - // ex.arguments = ['aa'] - // ex.stack = ...stack trace... - // - // INTERNET EXPLORER: - // ex.message = ... - // ex.name = ReferenceError - // - // OPERA: - // ex.message = ...message... (see the example below) - // ex.name = ReferenceError - // ex.opera#sourceloc = 11 (pretty much useless, duplicates the info in ex.message) - // ex.stacktrace = n/a; see 'opera:config#UserPrefs|Exceptions Have Stacktrace' + return this; + }, - /** - * Computes stack trace information from the stack property. - * Chrome and Gecko use this property. - * @param {Error} ex - * @return {?Object.} Stack trace information. + /* + * Merge extra attributes to be sent along with the payload. + * + * @param {object} extra An object representing extra data [optional] + * @return {Raven} */ - function computeStackTraceFromStackProp(ex) { - if (typeof ex.stack === 'undefined' || !ex.stack) return; - var chrome = /^\s*at (.*?) ?\(((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i, - gecko = /^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|\[native).*?|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i, - winjs = /^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i, - // Used to additionally parse URL/line/column from eval frames - geckoEval = /(\S+) line (\d+)(?: > eval line \d+)* > eval/i, - chromeEval = /\((\S*)(?::(\d+))(?::(\d+))\)/, - lines = ex.stack.split('\n'), - stack = [], - submatch, - parts, - element, - reference = /^(.*) is undefined$/.exec(ex.message); - - for (var i = 0, j = lines.length; i < j; ++i) { - if (parts = chrome.exec(lines[i])) { - var isNative = parts[2] && parts[2].indexOf('native') === 0; // start of line + setExtraContext: function(extra) { + this._mergeContext('extra', extra); - var isEval = parts[2] && parts[2].indexOf('eval') === 0; // start of line + return this; + }, - if (isEval && (submatch = chromeEval.exec(parts[2]))) { - // throw out eval line/column and use top-most line/column number - parts[2] = submatch[1]; // url + /* + * Merge tags to be sent along with the payload. + * + * @param {object} tags An object representing tags [optional] + * @return {Raven} + */ + setTagsContext: function(tags) { + this._mergeContext('tags', tags); - parts[3] = submatch[2]; // line + return this; + }, - parts[4] = submatch[3]; // column - } + /* + * Clear all of the context. + * + * @return {Raven} + */ + clearContext: function() { + this._globalContext = {}; - element = { - url: !isNative ? parts[2] : null, - func: parts[1] || UNKNOWN_FUNCTION, - args: isNative ? [parts[2]] : [], - line: parts[3] ? +parts[3] : null, - column: parts[4] ? +parts[4] : null - }; - } else if (parts = winjs.exec(lines[i])) { - element = { - url: parts[2], - func: parts[1] || UNKNOWN_FUNCTION, - args: [], - line: +parts[3], - column: parts[4] ? +parts[4] : null - }; - } else if (parts = gecko.exec(lines[i])) { - var isEval = parts[3] && parts[3].indexOf(' > eval') > -1; + return this; + }, - if (isEval && (submatch = geckoEval.exec(parts[3]))) { - // throw out eval line/column and use top-most line number - parts[3] = submatch[1]; - parts[4] = submatch[2]; - parts[5] = null; // no column when eval - } else if (i === 0 && !parts[5] && typeof ex.columnNumber !== 'undefined') { - // FireFox uses this awesome columnNumber property for its top frame - // Also note, Firefox's column number is 0-based and everything else expects 1-based, - // so adding 1 - // NOTE: this hack doesn't work if top-most frame is eval - stack[0].column = ex.columnNumber + 1; - } + /* + * Get a copy of the current context. This cannot be mutated. + * + * @return {object} copy of context + */ + getContext: function() { + // lol javascript + return JSON.parse(stringify(this._globalContext)); + }, - element = { - url: parts[3], - func: parts[1] || UNKNOWN_FUNCTION, - args: parts[2] ? parts[2].split(',') : [], - line: parts[4] ? +parts[4] : null, - column: parts[5] ? +parts[5] : null - }; - } else { - continue; - } + /* + * Set environment of application + * + * @param {string} environment Typically something like 'production'. + * @return {Raven} + */ + setEnvironment: function(environment) { + this._globalOptions.environment = environment; - if (!element.func && element.line) { - element.func = UNKNOWN_FUNCTION; - } + return this; + }, - stack.push(element); - } + /* + * Set release version of application + * + * @param {string} release Typically something like a git SHA to identify version + * @return {Raven} + */ + setRelease: function(release) { + this._globalOptions.release = release; - if (!stack.length) { - return null; - } + return this; + }, - return { - name: ex.name, - message: ex.message, - url: getLocationHref(), - stack: stack - }; - } - /** - * Adds information about the first frame to incomplete stack traces. - * Safari and IE require this to get complete data on the first frame. - * @param {Object.} stackInfo Stack trace information from - * one of the compute* methods. - * @param {string} url The URL of the script that caused an error. - * @param {(number|string)} lineNo The line number of the script that - * caused an error. - * @param {string=} message The error generated by the browser, which - * hopefully contains the name of the object that caused the error. - * @return {boolean} Whether or not the stack information was - * augmented. + /* + * Set the dataCallback option + * + * @param {function} callback The callback to run which allows the + * data blob to be mutated before sending + * @return {Raven} */ + setDataCallback: function(callback) { + var original = this._globalOptions.dataCallback; + this._globalOptions.dataCallback = keepOriginalCallback(original, callback); + return this; + }, + /* + * Set the breadcrumbCallback option + * + * @param {function} callback The callback to run which allows filtering + * or mutating breadcrumbs + * @return {Raven} + */ + setBreadcrumbCallback: function(callback) { + var original = this._globalOptions.breadcrumbCallback; + this._globalOptions.breadcrumbCallback = keepOriginalCallback(original, callback); + return this; + }, - function augmentStackTraceWithInitialElement(stackInfo, url, lineNo, message) { - var initial = { - url: url, - line: lineNo - }; + /* + * Set the shouldSendCallback option + * + * @param {function} callback The callback to run which allows + * introspecting the blob before sending + * @return {Raven} + */ + setShouldSendCallback: function(callback) { + var original = this._globalOptions.shouldSendCallback; + this._globalOptions.shouldSendCallback = keepOriginalCallback(original, callback); + return this; + }, - if (initial.url && initial.line) { - stackInfo.incomplete = false; + /** + * Override the default HTTP transport mechanism that transmits data + * to the Sentry server. + * + * @param {function} transport Function invoked instead of the default + * `makeRequest` handler. + * + * @return {Raven} + */ + setTransport: function(transport) { + this._globalOptions.transport = transport; - if (!initial.func) { - initial.func = UNKNOWN_FUNCTION; - } + return this; + }, - if (stackInfo.stack.length > 0) { - if (stackInfo.stack[0].url === initial.url) { - if (stackInfo.stack[0].line === initial.line) { - return false; // already in stack trace - } else if (!stackInfo.stack[0].line && stackInfo.stack[0].func === initial.func) { - stackInfo.stack[0].line = initial.line; - return false; - } - } - } + /* + * Get the latest raw exception that was captured by Raven. + * + * @return {error} + */ + lastException: function() { + return this._lastCapturedException; + }, - stackInfo.stack.unshift(initial); - stackInfo.partial = true; - return true; - } else { - stackInfo.incomplete = true; - } + /* + * Get the last event id + * + * @return {string} + */ + lastEventId: function() { + return this._lastEventId; + }, - return false; - } - /** - * Computes stack trace information by walking the arguments.caller - * chain at the time the exception occurred. This will cause earlier - * frames to be missed but is the only way to get any stack trace in - * Safari and IE. The top frame is restored by - * {@link augmentStackTraceWithInitialElement}. - * @param {Error} ex - * @return {?Object.} Stack trace information. + /* + * Determine if Raven is setup and ready to go. + * + * @return {boolean} */ + isSetup: function() { + if (!this._hasJSON) return false; // needs JSON support + if (!this._globalServer) { + if (!this.ravenNotConfiguredError) { + this.ravenNotConfiguredError = true; + this._logDebug('error', 'Error: Raven has not been configured.'); + } + return false; + } + return true; + }, + afterLoad: function() { + // TODO: remove window dependence? - function computeStackTraceByWalkingCallerChain(ex, depth) { - var functionName = /function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i, - stack = [], - funcs = {}, - recursion = false, - parts, - item; + // Attempt to initialize Raven on load + var RavenConfig = _window.RavenConfig; + if (RavenConfig) { + this.config(RavenConfig.dsn, RavenConfig.config).install(); + } + }, - for (var curr = computeStackTraceByWalkingCallerChain.caller; curr && !recursion; curr = curr.caller) { - if (curr === computeStackTrace || curr === TraceKit.report) { - // console.log('skipping internal function'); - continue; - } + showReportDialog: function(options) { + if ( + !_document // doesn't work without a document (React native) + ) + return; - item = { - url: null, - func: UNKNOWN_FUNCTION, - line: null, - column: null - }; + options = options || {}; - if (curr.name) { - item.func = curr.name; - } else if (parts = functionName.exec(curr.toString())) { - item.func = parts[1]; - } + var lastEventId = options.eventId || this.lastEventId(); + if (!lastEventId) { + throw new RavenConfigError('Missing eventId'); + } - if (typeof item.func === 'undefined') { - try { - item.func = parts.input.substring(0, parts.input.indexOf('{')); - } catch (e) {} - } + var dsn = options.dsn || this._dsn; + if (!dsn) { + throw new RavenConfigError('Missing DSN'); + } - if (funcs['' + curr]) { - recursion = true; - } else { - funcs['' + curr] = true; - } + var encode = encodeURIComponent; + var qs = ''; + qs += '?eventId=' + encode(lastEventId); + qs += '&dsn=' + encode(dsn); - stack.push(item); + var user = options.user || this._globalContext.user; + if (user) { + if (user.name) qs += '&name=' + encode(user.name); + if (user.email) qs += '&email=' + encode(user.email); } - if (depth) { - // console.log('depth is ' + depth); - // console.log('stack is ' + stack.length); - stack.splice(0, depth); - } + var globalServer = this._getGlobalServer(this._parseDSN(dsn)); - var result = { - name: ex.name, - message: ex.message, - url: getLocationHref(), - stack: stack - }; - augmentStackTraceWithInitialElement(result, ex.sourceURL || ex.fileName, ex.line || ex.lineNumber, ex.message || ex.description); - return result; - } - /** - * Computes a stack trace for an exception. - * @param {Error} ex - * @param {(string|number)=} depth - */ + var script = _document.createElement('script'); + script.async = true; + script.src = globalServer + '/api/embed/error-page/' + qs; + (_document.head || _document.body).appendChild(script); + }, + + /**** Private functions ****/ + _ignoreNextOnError: function() { + var self = this; + this._ignoreOnError += 1; + setTimeout(function() { + // onerror should trigger before setTimeout + self._ignoreOnError -= 1; + }); + }, + _triggerEvent: function(eventType, options) { + // NOTE: `event` is a native browser thing, so let's avoid conflicting wiht it + var evt, key; - function computeStackTrace(ex, depth) { - var stack = null; - depth = depth == null ? 0 : +depth; + if (!this._hasDocument) return; - try { - stack = computeStackTraceFromStackProp(ex); + options = options || {}; - if (stack) { - return stack; + eventType = 'raven' + eventType.substr(0, 1).toUpperCase() + eventType.substr(1); + + if (_document.createEvent) { + evt = _document.createEvent('HTMLEvents'); + evt.initEvent(eventType, true, true); + } else { + evt = _document.createEventObject(); + evt.eventType = eventType; + } + + for (key in options) + if (hasKey(options, key)) { + evt[key] = options[key]; } - } catch (e) { - if (TraceKit.debug) { - throw e; + + if (_document.createEvent) { + // IE9 if standards + _document.dispatchEvent(evt); + } else { + // IE8 regardless of Quirks or Standards + // IE9 if quirks + try { + _document.fireEvent('on' + evt.eventType.toLowerCase(), evt); + } catch (e) { + // Do nothing } } + }, - try { - stack = computeStackTraceByWalkingCallerChain(ex, depth + 1); + /** + * Wraps addEventListener to capture UI breadcrumbs + * @param evtName the event name (e.g. "click") + * @returns {Function} + * @private + */ + _breadcrumbEventHandler: function(evtName) { + var self = this; + return function(evt) { + // reset keypress timeout; e.g. triggering a 'click' after + // a 'keypress' will reset the keypress debounce so that a new + // set of keypresses can be recorded + self._keypressTimeout = null; - if (stack) { - return stack; - } - } catch (e) { - if (TraceKit.debug) { - throw e; + // It's possible this handler might trigger multiple times for the same + // event (e.g. event propagation through node ancestors). Ignore if we've + // already captured the event. + if (self._lastCapturedEvent === evt) return; + + self._lastCapturedEvent = evt; + + // try/catch both: + // - accessing evt.target (see getsentry/raven-js#838, #768) + // - `htmlTreeAsString` because it's complex, and just accessing the DOM incorrectly + // can throw an exception in some circumstances. + var target; + try { + target = htmlTreeAsString(evt.target); + } catch (e) { + target = ''; } - } - return { - name: ex.name, - message: ex.message, - url: getLocationHref() + self.captureBreadcrumb({ + category: 'ui.' + evtName, // e.g. ui.click, ui.input + message: target + }); }; - } + }, - computeStackTrace.augmentStackTraceWithInitialElement = augmentStackTraceWithInitialElement; - computeStackTrace.computeStackTraceFromStackProp = computeStackTraceFromStackProp; - return computeStackTrace; -}(); + /** + * Wraps addEventListener to capture keypress UI events + * @returns {Function} + * @private + */ + _keypressEventHandler: function() { + var self = this, + debounceDuration = 1000; // milliseconds + + // TODO: if somehow user switches keypress target before + // debounce timeout is triggered, we will only capture + // a single breadcrumb from the FIRST target (acceptable?) + return function(evt) { + var target; + try { + target = evt.target; + } catch (e) { + // just accessing event properties can throw an exception in some rare circumstances + // see: https://github.com/getsentry/raven-js/issues/838 + return; + } + var tagName = target && target.tagName; -var tracekit = TraceKit; + // only consider keypress events on actual input elements + // this will disregard keypresses targeting body (e.g. tabbing + // through elements, hotkeys, etc) + if ( + !tagName || + (tagName !== 'INPUT' && tagName !== 'TEXTAREA' && !target.isContentEditable) + ) + return; -var stringify_1 = createCommonjsModule(function (module, exports) { - /* - json-stringify-safe - Like JSON.stringify, but doesn't throw on circular references. - - Originally forked from https://github.com/isaacs/json-stringify-safe - version 5.0.1 on 3/8/2017 and modified to handle Errors serialization - and IE8 compatibility. Tests for this are in test/vendor. - - ISC license: https://github.com/isaacs/json-stringify-safe/blob/master/LICENSE - */ - exports = module.exports = stringify; - exports.getSerialize = serializer; - - function indexOf(haystack, needle) { - for (var i = 0; i < haystack.length; ++i) { - if (haystack[i] === needle) return i; - } - - return -1; - } + // record first keypress in a series, but ignore subsequent + // keypresses until debounce clears + var timeout = self._keypressTimeout; + if (!timeout) { + self._breadcrumbEventHandler('input')(evt); + } + clearTimeout(timeout); + self._keypressTimeout = setTimeout(function() { + self._keypressTimeout = null; + }, debounceDuration); + }; + }, + + /** + * Captures a breadcrumb of type "navigation", normalizing input URLs + * @param to the originating URL + * @param from the target URL + * @private + */ + _captureUrlChange: function(from, to) { + var parsedLoc = parseUrl(this._location.href); + var parsedTo = parseUrl(to); + var parsedFrom = parseUrl(from); - function stringify(obj, replacer, spaces, cycleReplacer) { - return JSON.stringify(obj, serializer(replacer, cycleReplacer), spaces); - } // https://github.com/ftlabs/js-abbreviate/blob/fa709e5f139e7770a71827b1893f22418097fbda/index.js#L95-L106 + // because onpopstate only tells you the "new" (to) value of location.href, and + // not the previous (from) value, we need to track the value of the current URL + // state ourselves + this._lastHref = to; + // Use only the path component of the URL if the URL matches the current + // document (almost all the time when using pushState) + if (parsedLoc.protocol === parsedTo.protocol && parsedLoc.host === parsedTo.host) + to = parsedTo.relative; + if (parsedLoc.protocol === parsedFrom.protocol && parsedLoc.host === parsedFrom.host) + from = parsedFrom.relative; - function stringifyError(value) { - var err = { - // These properties are implemented as magical getters and don't show up in for in - stack: value.stack, - message: value.message, - name: value.name - }; + this.captureBreadcrumb({ + category: 'navigation', + data: { + to: to, + from: from + } + }); + }, - for (var i in value) { - if (Object.prototype.hasOwnProperty.call(value, i)) { - err[i] = value[i]; + _patchFunctionToString: function() { + var self = this; + self._originalFunctionToString = Function.prototype.toString; + // eslint-disable-next-line no-extend-native + Function.prototype.toString = function() { + if (typeof this === 'function' && this.__raven__) { + return self._originalFunctionToString.apply(this.__orig__, arguments); } + return self._originalFunctionToString.apply(this, arguments); + }; + }, + + _unpatchFunctionToString: function() { + if (this._originalFunctionToString) { + // eslint-disable-next-line no-extend-native + Function.prototype.toString = this._originalFunctionToString; } + }, - return err; - } + /** + * Wrap timer functions and event targets to catch errors and provide + * better metadata. + */ + _instrumentTryCatch: function() { + var self = this; - function serializer(replacer, cycleReplacer) { - var stack = []; - var keys = []; + var wrappedBuiltIns = self._wrappedBuiltIns; - if (cycleReplacer == null) { - cycleReplacer = function cycleReplacer(key, value) { - if (stack[0] === value) { - return '[Circular ~]'; + function wrapTimeFn(orig) { + return function(fn, t) { + // preserve arity + // Make a copy of the arguments to prevent deoptimization + // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments + var args = new Array(arguments.length); + for (var i = 0; i < args.length; ++i) { + args[i] = arguments[i]; + } + var originalCallback = args[0]; + if (isFunction(originalCallback)) { + args[0] = self.wrap(originalCallback); } - return '[Circular ~.' + keys.slice(0, indexOf(stack, value)).join('.') + ']'; + // IE < 9 doesn't support .call/.apply on setInterval/setTimeout, but it + // also supports only two arguments and doesn't care what this is, so we + // can just call the original function directly. + if (orig.apply) { + return orig.apply(this, args); + } else { + return orig(args[0], args[1]); + } }; } - return function (key, value) { - if (stack.length > 0) { - var thisPos = indexOf(stack, this); - ~thisPos ? stack.splice(thisPos + 1) : stack.push(this); - ~thisPos ? keys.splice(thisPos, Infinity, key) : keys.push(key); + var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; - if (~indexOf(stack, value)) { - value = cycleReplacer.call(this, key, value); - } - } else { - stack.push(value); + function wrapEventTarget(global) { + var proto = _window[global] && _window[global].prototype; + if (proto && proto.hasOwnProperty && proto.hasOwnProperty('addEventListener')) { + fill( + proto, + 'addEventListener', + function(orig) { + return function(evtName, fn, capture, secure) { + // preserve arity + try { + if (fn && fn.handleEvent) { + fn.handleEvent = self.wrap(fn.handleEvent); + } + } catch (err) { + // can sometimes get 'Permission denied to access property "handle Event' + } + + // More breadcrumb DOM capture ... done here and not in `_instrumentBreadcrumbs` + // so that we don't have more than one wrapper function + var before, clickHandler, keypressHandler; + + if ( + autoBreadcrumbs && + autoBreadcrumbs.dom && + (global === 'EventTarget' || global === 'Node') + ) { + // NOTE: generating multiple handlers per addEventListener invocation, should + // revisit and verify we can just use one (almost certainly) + clickHandler = self._breadcrumbEventHandler('click'); + keypressHandler = self._keypressEventHandler(); + before = function(evt) { + // need to intercept every DOM event in `before` argument, in case that + // same wrapped method is re-used for different events (e.g. mousemove THEN click) + // see #724 + if (!evt) return; + + var eventType; + try { + eventType = evt.type; + } catch (e) { + // just accessing event properties can throw an exception in some rare circumstances + // see: https://github.com/getsentry/raven-js/issues/838 + return; + } + if (eventType === 'click') return clickHandler(evt); + else if (eventType === 'keypress') return keypressHandler(evt); + }; + } + return orig.call( + this, + evtName, + self.wrap(fn, undefined, before), + capture, + secure + ); + }; + }, + wrappedBuiltIns + ); + fill( + proto, + 'removeEventListener', + function(orig) { + return function(evt, fn, capture, secure) { + try { + fn = fn && (fn.__raven_wrapper__ ? fn.__raven_wrapper__ : fn); + } catch (e) { + // ignore, accessing __raven_wrapper__ will throw in some Selenium environments + } + return orig.call(this, evt, fn, capture, secure); + }; + }, + wrappedBuiltIns + ); } + } - return replacer == null ? value instanceof Error ? stringifyError(value) : value : replacer.call(this, key, value); - }; - } -}); -var stringify_2 = stringify_1.getSerialize; + fill(_window, 'setTimeout', wrapTimeFn, wrappedBuiltIns); + fill(_window, 'setInterval', wrapTimeFn, wrappedBuiltIns); + if (_window.requestAnimationFrame) { + fill( + _window, + 'requestAnimationFrame', + function(orig) { + return function(cb) { + return orig(self.wrap(cb)); + }; + }, + wrappedBuiltIns + ); + } -function RavenConfigError(message) { - this.name = 'RavenConfigError'; - this.message = message; -} + // event targets borrowed from bugsnag-js: + // https://github.com/bugsnag/bugsnag-js/blob/master/src/bugsnag.js#L666 + var eventTargets = [ + 'EventTarget', + 'Window', + 'Node', + 'ApplicationCache', + 'AudioTrackList', + 'ChannelMergerNode', + 'CryptoOperation', + 'EventSource', + 'FileReader', + 'HTMLUnknownElement', + 'IDBDatabase', + 'IDBRequest', + 'IDBTransaction', + 'KeyOperation', + 'MediaController', + 'MessagePort', + 'ModalWindow', + 'Notification', + 'SVGElementInstance', + 'Screen', + 'TextTrack', + 'TextTrackCue', + 'TextTrackList', + 'WebSocket', + 'WebSocketWorker', + 'Worker', + 'XMLHttpRequest', + 'XMLHttpRequestEventTarget', + 'XMLHttpRequestUpload' + ]; + for (var i = 0; i < eventTargets.length; i++) { + wrapEventTarget(eventTargets[i]); + } + }, -RavenConfigError.prototype = new Error(); -RavenConfigError.prototype.constructor = RavenConfigError; -var configError = RavenConfigError; + /** + * Instrument browser built-ins w/ breadcrumb capturing + * - XMLHttpRequests + * - DOM interactions (click/typing) + * - window.location changes + * - console + * + * Can be disabled or individually configured via the `autoBreadcrumbs` config option + */ + _instrumentBreadcrumbs: function() { + var self = this; + var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; -var wrapMethod = function wrapMethod(console, level, callback) { - var originalConsoleLevel = console[level]; - var originalConsole = console; + var wrappedBuiltIns = self._wrappedBuiltIns; - if (!(level in console)) { - return; - } + function wrapProp(prop, xhr) { + if (prop in xhr && isFunction(xhr[prop])) { + fill(xhr, prop, function(orig) { + return self.wrap(orig); + }); // intentionally don't track filled methods on XHR instances + } + } - var sentryLevel = level === 'warn' ? 'warning' : level; + if (autoBreadcrumbs.xhr && 'XMLHttpRequest' in _window) { + var xhrproto = _window.XMLHttpRequest && _window.XMLHttpRequest.prototype; + fill( + xhrproto, + 'open', + function(origOpen) { + return function(method, url) { + // preserve arity - console[level] = function () { - var args = [].slice.call(arguments); - var msg = utils.safeJoin(args, ' '); - var data = { - level: sentryLevel, - logger: 'console', - extra: { - arguments: args - } - }; + // if Sentry key appears in URL, don't capture + if (isString(url) && url.indexOf(self._globalKey) === -1) { + this.__raven_xhr = { + method: method, + url: url, + status_code: null + }; + } - if (level === 'assert') { - if (args[0] === false) { - // Default browsers message - msg = 'Assertion failed: ' + (utils.safeJoin(args.slice(1), ' ') || 'console.assert'); - data.extra.arguments = args.slice(1); - callback && callback(msg, data); - } - } else { - callback && callback(msg, data); - } // this fails for some browsers. :( - - - if (originalConsoleLevel) { - // IE9 doesn't allow calling apply on console functions directly - // See: https://stackoverflow.com/questions/5472938/does-ie9-support-console-log-and-is-it-a-real-function#answer-5473193 - Function.prototype.apply.call(originalConsoleLevel, originalConsole, args); - } - }; -}; - -var console$1 = { - wrapMethod: wrapMethod -}; + return origOpen.apply(this, arguments); + }; + }, + wrappedBuiltIns + ); + + fill( + xhrproto, + 'send', + function(origSend) { + return function() { + // preserve arity + var xhr = this; -/*global XDomainRequest:false */ + function onreadystatechangeHandler() { + if (xhr.__raven_xhr && xhr.readyState === 4) { + try { + // touching statusCode in some platforms throws + // an exception + xhr.__raven_xhr.status_code = xhr.status; + } catch (e) { + /* do nothing */ + } -var isError = utils.isError; -var isObject = utils.isObject; -var isErrorEvent = utils.isErrorEvent; -var isUndefined = utils.isUndefined; -var isFunction = utils.isFunction; -var isString = utils.isString; -var isArray = utils.isArray; -var isEmptyObject = utils.isEmptyObject; -var each = utils.each; -var objectMerge = utils.objectMerge; -var truncate = utils.truncate; -var objectFrozen = utils.objectFrozen; -var hasKey = utils.hasKey; -var joinRegExp = utils.joinRegExp; -var urlencode = utils.urlencode; -var uuid4 = utils.uuid4; -var htmlTreeAsString = utils.htmlTreeAsString; -var isSameException = utils.isSameException; -var isSameStacktrace = utils.isSameStacktrace; -var parseUrl = utils.parseUrl; -var fill = utils.fill; -var supportsFetch = utils.supportsFetch; -var wrapConsoleMethod = console$1.wrapMethod; -var dsnKeys = 'source protocol user pass host port path'.split(' '); -var dsnPattern = /^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/; + self.captureBreadcrumb({ + type: 'http', + category: 'xhr', + data: xhr.__raven_xhr + }); + } + } -function now() { - return +new Date(); -} // This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) + var props = ['onload', 'onerror', 'onprogress']; + for (var j = 0; j < props.length; j++) { + wrapProp(props[j], xhr); + } + if ('onreadystatechange' in xhr && isFunction(xhr.onreadystatechange)) { + fill( + xhr, + 'onreadystatechange', + function(orig) { + return self.wrap(orig, undefined, onreadystatechangeHandler); + } /* intentionally don't track this instrumentation */ + ); + } else { + // if onreadystatechange wasn't actually set by the page on this xhr, we + // are free to set our own and capture the breadcrumb + xhr.onreadystatechange = onreadystatechangeHandler; + } -var _window$1 = typeof window !== 'undefined' ? window : typeof commonjsGlobal !== 'undefined' ? commonjsGlobal : typeof self !== 'undefined' ? self : {}; + return origSend.apply(this, arguments); + }; + }, + wrappedBuiltIns + ); + } -var _document = _window$1.document; -var _navigator = _window$1.navigator; + if (autoBreadcrumbs.xhr && supportsFetch()) { + fill( + _window, + 'fetch', + function(origFetch) { + return function() { + // preserve arity + // Make a copy of the arguments to prevent deoptimization + // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments + var args = new Array(arguments.length); + for (var i = 0; i < args.length; ++i) { + args[i] = arguments[i]; + } -function keepOriginalCallback(original, callback) { - return isFunction(callback) ? function (data) { - return callback(data, original); - } : callback; -} // First, check for JSON support -// If there is no JSON, we no-op the core features of Raven -// since JSON is required to encode the payload + var fetchInput = args[0]; + var method = 'GET'; + var url; + if (typeof fetchInput === 'string') { + url = fetchInput; + } else if ('Request' in _window && fetchInput instanceof _window.Request) { + url = fetchInput.url; + if (fetchInput.method) { + method = fetchInput.method; + } + } else { + url = '' + fetchInput; + } -function Raven$1() { - this._hasJSON = !!(_typeof(JSON) === 'object' && JSON.stringify); // Raven can run in contexts where there's no document (react-native) + // if Sentry key appears in URL, don't capture, as it's our own request + if (url.indexOf(self._globalKey) !== -1) { + return origFetch.apply(this, args); + } - this._hasDocument = !isUndefined(_document); - this._hasNavigator = !isUndefined(_navigator); - this._lastCapturedException = null; - this._lastData = null; - this._lastEventId = null; - this._globalServer = null; - this._globalKey = null; - this._globalProject = null; - this._globalContext = {}; - this._globalOptions = { - // SENTRY_RELEASE can be injected by https://github.com/getsentry/sentry-webpack-plugin - release: _window$1.SENTRY_RELEASE && _window$1.SENTRY_RELEASE.id, - logger: 'javascript', - ignoreErrors: [], - ignoreUrls: [], - whitelistUrls: [], - includePaths: [], - headers: null, - collectWindowErrors: true, - maxMessageLength: 0, - // By default, truncates URL values to 250 chars - maxUrlLength: 250, - stackTraceLimit: 50, - autoBreadcrumbs: true, - instrument: true, - sampleRate: 1 - }; - this._fetchDefaults = { - method: 'POST', - keepalive: true, - referrerPolicy: 'origin' - }; - this._ignoreOnError = 0; - this._isRavenInstalled = false; - this._originalErrorStackTraceLimit = Error.stackTraceLimit; // capture references to window.console *and* all its methods first - // before the console plugin has a chance to monkey patch + if (args[1] && args[1].method) { + method = args[1].method; + } - this._originalConsole = _window$1.console || {}; - this._originalConsoleMethods = {}; - this._plugins = []; - this._startTime = now(); - this._wrappedBuiltIns = []; - this._breadcrumbs = []; - this._lastCapturedEvent = null; - this._keypressTimeout; - this._location = _window$1.location; - this._lastHref = this._location && this._location.href; + var fetchData = { + method: method, + url: url, + status_code: null + }; - this._resetBackoff(); // eslint-disable-next-line guard-for-in + return origFetch + .apply(this, args) + .then(function(response) { + fetchData.status_code = response.status; + + self.captureBreadcrumb({ + type: 'http', + category: 'fetch', + data: fetchData + }); + + return response; + }) + ['catch'](function(err) { + // if there is an error performing the request + self.captureBreadcrumb({ + type: 'http', + category: 'fetch', + data: fetchData, + level: 'error' + }); + + throw err; + }); + }; + }, + wrappedBuiltIns + ); + } + // Capture breadcrumbs from any click that is unhandled / bubbled up all the way + // to the document. Do this before we instrument addEventListener. + if (autoBreadcrumbs.dom && this._hasDocument) { + if (_document.addEventListener) { + _document.addEventListener('click', self._breadcrumbEventHandler('click'), false); + _document.addEventListener('keypress', self._keypressEventHandler(), false); + } else if (_document.attachEvent) { + // IE8 Compatibility + _document.attachEvent('onclick', self._breadcrumbEventHandler('click')); + _document.attachEvent('onkeypress', self._keypressEventHandler()); + } + } - for (var method in this._originalConsole) { - this._originalConsoleMethods[method] = this._originalConsole[method]; - } -} -/* - * The core Raven singleton - * - * @this {Raven} - */ + // record navigation (URL) changes + // NOTE: in Chrome App environment, touching history.pushState, *even inside + // a try/catch block*, will cause Chrome to output an error to console.error + // borrowed from: https://github.com/angular/angular.js/pull/13945/files + var chrome = _window.chrome; + var isChromePackagedApp = chrome && chrome.app && chrome.app.runtime; + var hasPushAndReplaceState = + !isChromePackagedApp && + _window.history && + history.pushState && + history.replaceState; + if (autoBreadcrumbs.location && hasPushAndReplaceState) { + // TODO: remove onpopstate handler on uninstall() + var oldOnPopState = _window.onpopstate; + _window.onpopstate = function() { + var currentHref = self._location.href; + self._captureUrlChange(self._lastHref, currentHref); + if (oldOnPopState) { + return oldOnPopState.apply(this, arguments); + } + }; -Raven$1.prototype = { - // Hardcode version string so that raven source can be loaded directly via - // webpack (using a build step causes webpack #1617). Grunt verifies that - // this value matches package.json during build. - // See: https://github.com/getsentry/raven-js/issues/465 - VERSION: '3.22.2', - debug: false, - TraceKit: tracekit, - // alias to TraceKit + var historyReplacementFunction = function(origHistFunction) { + // note history.pushState.length is 0; intentionally not declaring + // params to preserve 0 arity + return function(/* state, title, url */) { + var url = arguments.length > 2 ? arguments[2] : undefined; - /* - * Configure Raven with a DSN and extra options - * - * @param {string} dsn The public Sentry DSN - * @param {object} options Set of global options [optional] - * @return {Raven} - */ - config: function config(dsn, options) { - var self = this; + // url argument is optional + if (url) { + // coerce to string (this is what pushState does) + self._captureUrlChange(self._lastHref, url + ''); + } - if (self._globalServer) { - this._logDebug('error', 'Error: Raven has already been configured'); + return origHistFunction.apply(this, arguments); + }; + }; - return self; + fill(history, 'pushState', historyReplacementFunction, wrappedBuiltIns); + fill(history, 'replaceState', historyReplacementFunction, wrappedBuiltIns); } - if (!dsn) return self; - var globalOptions = self._globalOptions; // merge in options + if (autoBreadcrumbs.console && 'console' in _window && console.log) { + // console + var consoleMethodCallback = function(msg, data) { + self.captureBreadcrumb({ + message: msg, + level: data.level, + category: 'console' + }); + }; - if (options) { - each(options, function (key, value) { - // tags and extra are special and need to be put into context - if (key === 'tags' || key === 'extra' || key === 'user') { - self._globalContext[key] = value; - } else { - globalOptions[key] = value; - } + each(['debug', 'info', 'warn', 'error', 'log'], function(_, level) { + wrapConsoleMethod(console, level, consoleMethodCallback); }); } + }, - self.setDSN(dsn); // "Script error." is hard coded into browsers for errors that it can't read. - // this is the result of a script being pulled in from an external domain and CORS. - - globalOptions.ignoreErrors.push(/^Script error\.?$/); - globalOptions.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/); // join regexp rules into one big rule - - globalOptions.ignoreErrors = joinRegExp(globalOptions.ignoreErrors); - globalOptions.ignoreUrls = globalOptions.ignoreUrls.length ? joinRegExp(globalOptions.ignoreUrls) : false; - globalOptions.whitelistUrls = globalOptions.whitelistUrls.length ? joinRegExp(globalOptions.whitelistUrls) : false; - globalOptions.includePaths = joinRegExp(globalOptions.includePaths); - globalOptions.maxBreadcrumbs = Math.max(0, Math.min(globalOptions.maxBreadcrumbs || 100, 100)); // default and hard limit is 100 + _restoreBuiltIns: function() { + // restore any wrapped builtins + var builtin; + while (this._wrappedBuiltIns.length) { + builtin = this._wrappedBuiltIns.shift(); - var autoBreadcrumbDefaults = { - xhr: true, - console: true, - dom: true, - location: true, - sentry: true - }; - var autoBreadcrumbs = globalOptions.autoBreadcrumbs; + var obj = builtin[0], + name = builtin[1], + orig = builtin[2]; - if ({}.toString.call(autoBreadcrumbs) === '[object Object]') { - autoBreadcrumbs = objectMerge(autoBreadcrumbDefaults, autoBreadcrumbs); - } else if (autoBreadcrumbs !== false) { - autoBreadcrumbs = autoBreadcrumbDefaults; + obj[name] = orig; } + }, - globalOptions.autoBreadcrumbs = autoBreadcrumbs; - var instrumentDefaults = { - tryCatch: true - }; - var instrument = globalOptions.instrument; - - if ({}.toString.call(instrument) === '[object Object]') { - instrument = objectMerge(instrumentDefaults, instrument); - } else if (instrument !== false) { - instrument = instrumentDefaults; + _restoreConsole: function() { + // eslint-disable-next-line guard-for-in + for (var method in this._originalConsoleMethods) { + this._originalConsole[method] = this._originalConsoleMethods[method]; } - - globalOptions.instrument = instrument; - tracekit.collectWindowErrors = !!globalOptions.collectWindowErrors; // return for chaining - - return self; }, - /* - * Installs a global window.onerror error handler - * to capture and report uncaught exceptions. - * At this point, install() is required to be called due - * to the way TraceKit is set up. - * - * @return {Raven} - */ - install: function install() { + _drainPlugins: function() { var self = this; - if (self.isSetup() && !self._isRavenInstalled) { - tracekit.report.subscribe(function () { - self._handleOnErrorStackInfo.apply(self, arguments); - }); + // FIX ME TODO + each(this._plugins, function(_, plugin) { + var installer = plugin[0]; + var args = plugin[1]; + installer.apply(self, [self].concat(args)); + }); + }, - self._patchFunctionToString(); + _parseDSN: function(str) { + var m = dsnPattern.exec(str), + dsn = {}, + i = 7; - if (self._globalOptions.instrument && self._globalOptions.instrument.tryCatch) { - self._instrumentTryCatch(); - } + try { + while (i--) dsn[dsnKeys[i]] = m[i] || ''; + } catch (e) { + throw new RavenConfigError('Invalid DSN: ' + str); + } - if (self._globalOptions.autoBreadcrumbs) self._instrumentBreadcrumbs(); // Install all of the plugins + if (dsn.pass && !this._globalOptions.allowSecretKey) { + throw new RavenConfigError( + 'Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key' + ); + } - self._drainPlugins(); - - self._isRavenInstalled = true; - } - - Error.stackTraceLimit = self._globalOptions.stackTraceLimit; - return this; + return dsn; }, - /* - * Set the DSN (can be called multiple time unlike config) - * - * @param {string} dsn The public Sentry DSN - */ - setDSN: function setDSN(dsn) { - var self = this, - uri = self._parseDSN(dsn), - lastSlash = uri.path.lastIndexOf('/'), - path = uri.path.substr(1, lastSlash); - - self._dsn = dsn; - self._globalKey = uri.user; - self._globalSecret = uri.pass && uri.pass.substr(1); - self._globalProject = uri.path.substr(lastSlash + 1); - self._globalServer = self._getGlobalServer(uri); - self._globalEndpoint = self._globalServer + '/' + path + 'api/' + self._globalProject + '/store/'; // Reset backoff state since we may be pointing at a - // new project/server + _getGlobalServer: function(uri) { + // assemble the endpoint from the uri pieces + var globalServer = '//' + uri.host + (uri.port ? ':' + uri.port : ''); - this._resetBackoff(); + if (uri.protocol) { + globalServer = uri.protocol + ':' + globalServer; + } + return globalServer; }, - /* - * Wrap code within a context so Raven can capture errors - * reliably across domains that is executed immediately. - * - * @param {object} options A specific set of options for this context [optional] - * @param {function} func The callback to be immediately executed within the context - * @param {array} args An array of arguments to be called with the callback [optional] - */ - context: function context(options, func, args) { - if (isFunction(options)) { - args = func || []; - func = options; - options = undefined; + _handleOnErrorStackInfo: function() { + // if we are intentionally ignoring errors via onerror, bail out + if (!this._ignoreOnError) { + this._handleStackInfo.apply(this, arguments); } - - return this.wrap(options, func).apply(this, args); }, - /* - * Wrap code within a context and returns back a new function to be executed - * - * @param {object} options A specific set of options for this context [optional] - * @param {function} func The function to be wrapped in a new context - * @param {function} func A function to call before the try/catch wrapper [optional, private] - * @return {function} The newly wrapped functions with a context - */ - wrap: function wrap(options, func, _before) { - var self = this; // 1 argument has been passed, and it's not a function - // so just return it + _handleStackInfo: function(stackInfo, options) { + var frames = this._prepareFrames(stackInfo, options); - if (isUndefined(func) && !isFunction(options)) { - return options; - } // options is optional + this._triggerEvent('handle', { + stackInfo: stackInfo, + options: options + }); + this._processException( + stackInfo.name, + stackInfo.message, + stackInfo.url, + stackInfo.lineno, + frames, + options + ); + }, - if (isFunction(options)) { - func = options; - options = undefined; - } // At this point, we've passed along 2 arguments, and the second one - // is not a function either, so we'll just return the second argument. + _prepareFrames: function(stackInfo, options) { + var self = this; + var frames = []; + if (stackInfo.stack && stackInfo.stack.length) { + each(stackInfo.stack, function(i, stack) { + var frame = self._normalizeFrame(stack, stackInfo.url); + if (frame) { + frames.push(frame); + } + }); + // e.g. frames captured via captureMessage throw + if (options && options.trimHeadFrames) { + for (var j = 0; j < options.trimHeadFrames && j < frames.length; j++) { + frames[j].in_app = false; + } + } + } + frames = frames.slice(0, this._globalOptions.stackTraceLimit); + return frames; + }, - if (!isFunction(func)) { - return func; - } // We don't wanna wrap it twice! + _normalizeFrame: function(frame, stackInfoUrl) { + // normalize the frames data + var normalized = { + filename: frame.url, + lineno: frame.line, + colno: frame.column, + function: frame.func || '?' + }; + // Case when we don't have any information about the error + // E.g. throwing a string or raw object, instead of an `Error` in Firefox + // Generating synthetic error doesn't add any value here + // + // We should probably somehow let a user know that they should fix their code + if (!frame.url) { + normalized.filename = stackInfoUrl; // fallback to whole stacks url from onerror handler + } - try { - if (func.__raven__) { - return func; - } // If this has already been wrapped in the past, return that + normalized.in_app = !// determine if an exception came from outside of our app + // first we check the global includePaths list. + ( + (!!this._globalOptions.includePaths.test && + !this._globalOptions.includePaths.test(normalized.filename)) || + // Now we check for fun, if the function name is Raven or TraceKit + /(Raven|TraceKit)\./.test(normalized['function']) || + // finally, we do a last ditch effort and check for raven.min.js + /raven\.(min\.)?js$/.test(normalized.filename) + ); + return normalized; + }, - if (func.__raven_wrapper__) { - return func.__raven_wrapper__; - } - } catch (e) { - // Just accessing custom props in some Selenium environments - // can cause a "Permission denied" exception (see raven-js#495). - // Bail on wrapping and return the function as-is (defers to window.onerror). - return func; + _processException: function(type, message, fileurl, lineno, frames, options) { + var prefixedMessage = (type ? type + ': ' : '') + (message || ''); + if ( + !!this._globalOptions.ignoreErrors.test && + (this._globalOptions.ignoreErrors.test(message) || + this._globalOptions.ignoreErrors.test(prefixedMessage)) + ) { + return; } - function wrapped() { - var args = [], - i = arguments.length, - deep = !options || options && options.deep !== false; + var stacktrace; - if (_before && isFunction(_before)) { - _before.apply(this, arguments); - } // Recursively wrap all of a function's arguments that are - // functions themselves. + if (frames && frames.length) { + fileurl = frames[0].filename || fileurl; + // Sentry expects frames oldest to newest + // and JS sends them as newest to oldest + frames.reverse(); + stacktrace = {frames: frames}; + } else if (fileurl) { + stacktrace = { + frames: [ + { + filename: fileurl, + lineno: lineno, + in_app: true + } + ] + }; + } + if ( + !!this._globalOptions.ignoreUrls.test && + this._globalOptions.ignoreUrls.test(fileurl) + ) { + return; + } - while (i--) { - args[i] = deep ? self.wrap(options, arguments[i]) : arguments[i]; - } + if ( + !!this._globalOptions.whitelistUrls.test && + !this._globalOptions.whitelistUrls.test(fileurl) + ) { + return; + } - try { - // Attempt to invoke user-land function - // NOTE: If you are a Sentry user, and you are seeing this stack frame, it - // means Raven caught an error invoking your application code. This is - // expected behavior and NOT indicative of a bug with Raven.js. - return func.apply(this, args); - } catch (e) { - self._ignoreNextOnError(); + var data = objectMerge( + { + // sentry.interfaces.Exception + exception: { + values: [ + { + type: type, + value: message, + stacktrace: stacktrace + } + ] + }, + culprit: fileurl + }, + options + ); - self.captureException(e, options); - throw e; - } - } // copy over properties of the old function + // Fire away! + this._send(data); + }, + _trimPacket: function(data) { + // For now, we only want to truncate the two different messages + // but this could/should be expanded to just trim everything + var max = this._globalOptions.maxMessageLength; + if (data.message) { + data.message = truncate(data.message, max); + } + if (data.exception) { + var exception = data.exception.values[0]; + exception.value = truncate(exception.value, max); + } - for (var property in func) { - if (hasKey(func, property)) { - wrapped[property] = func[property]; + var request = data.request; + if (request) { + if (request.url) { + request.url = truncate(request.url, this._globalOptions.maxUrlLength); + } + if (request.Referer) { + request.Referer = truncate(request.Referer, this._globalOptions.maxUrlLength); } } - wrapped.prototype = func.prototype; - func.__raven_wrapper__ = wrapped; // Signal that this function has been wrapped/filled already - // for both debugging and to prevent it to being wrapped/filled twice + if (data.breadcrumbs && data.breadcrumbs.values) + this._trimBreadcrumbs(data.breadcrumbs); - wrapped.__raven__ = true; - wrapped.__orig__ = func; - return wrapped; + return data; }, - /* - * Uninstalls the global error handler. - * - * @return {Raven} - */ - uninstall: function uninstall() { - tracekit.report.uninstall(); + /** + * Truncate breadcrumb values (right now just URLs) + */ + _trimBreadcrumbs: function(breadcrumbs) { + // known breadcrumb properties with urls + // TODO: also consider arbitrary prop values that start with (https?)?:// + var urlProps = ['to', 'from', 'url'], + urlProp, + crumb, + data; - this._unpatchFunctionToString(); + for (var i = 0; i < breadcrumbs.values.length; ++i) { + crumb = breadcrumbs.values[i]; + if ( + !crumb.hasOwnProperty('data') || + !isObject(crumb.data) || + objectFrozen(crumb.data) + ) + continue; - this._restoreBuiltIns(); + data = objectMerge({}, crumb.data); + for (var j = 0; j < urlProps.length; ++j) { + urlProp = urlProps[j]; + if (data.hasOwnProperty(urlProp) && data[urlProp]) { + data[urlProp] = truncate(data[urlProp], this._globalOptions.maxUrlLength); + } + } + breadcrumbs.values[i].data = data; + } + }, - this._restoreConsole(); + _getHttpData: function() { + if (!this._hasNavigator && !this._hasDocument) return; + var httpData = {}; - Error.stackTraceLimit = this._originalErrorStackTraceLimit; - this._isRavenInstalled = false; - return this; - }, + if (this._hasNavigator && _navigator.userAgent) { + httpData.headers = { + 'User-Agent': navigator.userAgent + }; + } - /* - * Manually capture an exception and send it over to Sentry - * - * @param {error} ex An exception to be logged - * @param {object} options A specific set of options for this error [optional] - * @return {Raven} - */ - captureException: function captureException(ex, options) { - options = objectMerge({ - trimHeadFrames: 0 - }, options ? options : {}); // Cases for sending ex as a message, rather than an exception + // Check in `window` instead of `document`, as we may be in ServiceWorker environment + if (_window.location && _window.location.href) { + httpData.url = _window.location.href; + } - var isNotError = !isError(ex); - var isNotErrorEvent = !isErrorEvent(ex); - var isErrorEventWithoutError = isErrorEvent(ex) && !ex.error; + if (this._hasDocument && _document.referrer) { + if (!httpData.headers) httpData.headers = {}; + httpData.headers.Referer = _document.referrer; + } - if (isNotError && isNotErrorEvent || isErrorEventWithoutError) { - return this.captureMessage(ex, objectMerge(options, { - stacktrace: true, - // if we fall back to captureMessage, default to attempting a new trace - trimHeadFrames: options.trimHeadFrames + 1 - })); - } // Get actual Error from ErrorEvent + return httpData; + }, + _resetBackoff: function() { + this._backoffDuration = 0; + this._backoffStart = null; + }, - if (isErrorEvent(ex)) ex = ex.error; // Store the raw exception object for potential debugging and introspection + _shouldBackoff: function() { + return this._backoffDuration && now() - this._backoffStart < this._backoffDuration; + }, - this._lastCapturedException = ex; // TraceKit.report will re-raise any exception passed to it, - // which means you have to wrap it in try/catch. Instead, we - // can wrap it here and only re-raise if TraceKit.report - // raises an exception different from the one we asked to - // report on. + /** + * Returns true if the in-process data payload matches the signature + * of the previously-sent data + * + * NOTE: This has to be done at this level because TraceKit can generate + * data from window.onerror WITHOUT an exception object (IE8, IE9, + * other old browsers). This can take the form of an "exception" + * data object with a single frame (derived from the onerror args). + */ + _isRepeatData: function(current) { + var last = this._lastData; - try { - var stack = tracekit.computeStackTrace(ex); + if ( + !last || + current.message !== last.message || // defined for captureMessage + current.culprit !== last.culprit // defined for captureException/onerror + ) + return false; - this._handleStackInfo(stack, options); - } catch (ex1) { - if (ex !== ex1) { - throw ex1; - } + // Stacktrace interface (i.e. from captureMessage) + if (current.stacktrace || last.stacktrace) { + return isSameStacktrace(current.stacktrace, last.stacktrace); + } else if (current.exception || last.exception) { + // Exception interface (i.e. from captureException/onerror) + return isSameException(current.exception, last.exception); } - return this; + return true; }, - /* - * Manually send a message to Sentry - * - * @param {string} msg A plain message to be captured in Sentry - * @param {object} options A specific set of options for this message [optional] - * @return {Raven} - */ - captureMessage: function captureMessage(msg, options) { - // config() automagically converts ignoreErrors from a list to a RegExp so we need to test for an - // early call; we'll error on the side of logging anything called before configuration since it's - // probably something you should see: - if (!!this._globalOptions.ignoreErrors.test && this._globalOptions.ignoreErrors.test(msg)) { + _setBackoffState: function(request) { + // If we are already in a backoff state, don't change anything + if (this._shouldBackoff()) { return; } - options = options || {}; - var data = objectMerge({ - message: msg + '' // Make sure it's actually a string + var status = request.status; - }, options); - var ex; // Generate a "synthetic" stack trace from this point. - // NOTE: If you are a Sentry user, and you are seeing this stack frame, it is NOT indicative - // of a bug with Raven.js. Sentry generates synthetic traces either by configuration, - // or if it catches a thrown object without a "stack" property. + // 400 - project_id doesn't exist or some other fatal + // 401 - invalid/revoked dsn + // 429 - too many requests + if (!(status === 400 || status === 401 || status === 429)) return; + var retry; try { - throw new Error(msg); - } catch (ex1) { - ex = ex1; - } // null exception name so `Error` isn't prefixed to msg + // If Retry-After is not in Access-Control-Expose-Headers, most + // browsers will throw an exception trying to access it + if (supportsFetch()) { + retry = request.headers.get('Retry-After'); + } else { + retry = request.getResponseHeader('Retry-After'); + } + + // Retry-After is returned in seconds + retry = parseInt(retry, 10) * 1000; + } catch (e) { + /* eslint no-empty:0 */ + } + this._backoffDuration = retry + ? // If Sentry server returned a Retry-After value, use it + retry + : // Otherwise, double the last backoff duration (starts at 1 sec) + this._backoffDuration * 2 || 1000; - ex.name = null; - var stack = tracekit.computeStackTrace(ex); // stack[0] is `throw new Error(msg)` call itself, we are interested in the frame that was just before that, stack[1] + this._backoffStart = now(); + }, - var initialCall = isArray(stack.stack) && stack.stack[1]; - var fileurl = initialCall && initialCall.url || ''; + _send: function(data) { + var globalOptions = this._globalOptions; - if (!!this._globalOptions.ignoreUrls.test && this._globalOptions.ignoreUrls.test(fileurl)) { - return; - } + var baseData = { + project: this._globalProject, + logger: globalOptions.logger, + platform: 'javascript' + }, + httpData = this._getHttpData(); - if (!!this._globalOptions.whitelistUrls.test && !this._globalOptions.whitelistUrls.test(fileurl)) { - return; + if (httpData) { + baseData.request = httpData; } - if (this._globalOptions.stacktrace || options && options.stacktrace) { - options = objectMerge({ - // fingerprint on msg, not stack trace (legacy behavior, could be - // revisited) - fingerprint: msg, - // since we know this is a synthetic trace, the top N-most frames - // MUST be from Raven.js, so mark them as in_app later by setting - // trimHeadFrames - trimHeadFrames: (options.trimHeadFrames || 0) + 1 - }, options); + // HACK: delete `trimHeadFrames` to prevent from appearing in outbound payload + if (data.trimHeadFrames) delete data.trimHeadFrames; + + data = objectMerge(baseData, data); - var frames = this._prepareFrames(stack, options); + // Merge in the tags and extra separately since objectMerge doesn't handle a deep merge + data.tags = objectMerge(objectMerge({}, this._globalContext.tags), data.tags); + data.extra = objectMerge(objectMerge({}, this._globalContext.extra), data.extra); - data.stacktrace = { - // Sentry expects frames oldest to newest - frames: frames.reverse() + // Send along our own collected metadata with extra + data.extra['session:duration'] = now() - this._startTime; + + if (this._breadcrumbs && this._breadcrumbs.length > 0) { + // intentionally make shallow copy so that additions + // to breadcrumbs aren't accidentally sent in this request + data.breadcrumbs = { + values: [].slice.call(this._breadcrumbs, 0) }; - } // Fire away! + } + + if (this._globalContext.user) { + // sentry.interfaces.User + data.user = this._globalContext.user; + } + // Include the environment if it's defined in globalOptions + if (globalOptions.environment) data.environment = globalOptions.environment; - this._send(data); + // Include the release if it's defined in globalOptions + if (globalOptions.release) data.release = globalOptions.release; - return this; - }, - captureBreadcrumb: function captureBreadcrumb(obj) { - var crumb = objectMerge({ - timestamp: now() / 1000 - }, obj); + // Include server_name if it's defined in globalOptions + if (globalOptions.serverName) data.server_name = globalOptions.serverName; - if (isFunction(this._globalOptions.breadcrumbCallback)) { - var result = this._globalOptions.breadcrumbCallback(crumb); + data = this._sanitizeData(data); - if (isObject(result) && !isEmptyObject(result)) { - crumb = result; - } else if (result === false) { - return this; + // Cleanup empty properties before sending them to the server + Object.keys(data).forEach(function(key) { + if (data[key] == null || data[key] === '' || isEmptyObject(data[key])) { + delete data[key]; } - } - - this._breadcrumbs.push(crumb); + }); - if (this._breadcrumbs.length > this._globalOptions.maxBreadcrumbs) { - this._breadcrumbs.shift(); + if (isFunction(globalOptions.dataCallback)) { + data = globalOptions.dataCallback(data) || data; } - return this; - }, - addPlugin: function addPlugin(plugin - /*arg1, arg2, ... argN*/ - ) { - var pluginArgs = [].slice.call(arguments, 1); + // Why?????????? + if (!data || isEmptyObject(data)) { + return; + } - this._plugins.push([plugin, pluginArgs]); + // Check if the request should be filtered or not + if ( + isFunction(globalOptions.shouldSendCallback) && + !globalOptions.shouldSendCallback(data) + ) { + return; + } - if (this._isRavenInstalled) { - this._drainPlugins(); + // Backoff state: Sentry server previously responded w/ an error (e.g. 429 - too many requests), + // so drop requests until "cool-off" period has elapsed. + if (this._shouldBackoff()) { + this._logDebug('warn', 'Raven dropped error due to backoff: ', data); + return; } - return this; + if (typeof globalOptions.sampleRate === 'number') { + if (Math.random() < globalOptions.sampleRate) { + this._sendProcessedPayload(data); + } + } else { + this._sendProcessedPayload(data); + } }, - /* - * Set/clear a user to be sent along with the payload. - * - * @param {object} user An object representing user data [optional] - * @return {Raven} - */ - setUserContext: function setUserContext(user) { - // Intentionally do not merge here since that's an unexpected behavior. - this._globalContext.user = user; - return this; + _sanitizeData: function(data) { + return sanitize(data, this._globalOptions.sanitizeKeys); }, - /* - * Merge extra attributes to be sent along with the payload. - * - * @param {object} extra An object representing extra data [optional] - * @return {Raven} - */ - setExtraContext: function setExtraContext(extra) { - this._mergeContext('extra', extra); - - return this; + _getUuid: function() { + return uuid4(); }, - /* - * Merge tags to be sent along with the payload. - * - * @param {object} tags An object representing tags [optional] - * @return {Raven} - */ - setTagsContext: function setTagsContext(tags) { - this._mergeContext('tags', tags); + _sendProcessedPayload: function(data, callback) { + var self = this; + var globalOptions = this._globalOptions; - return this; - }, + if (!this.isSetup()) return; - /* - * Clear all of the context. - * - * @return {Raven} - */ - clearContext: function clearContext() { - this._globalContext = {}; - return this; - }, + // Try and clean up the packet before sending by truncating long values + data = this._trimPacket(data); - /* - * Get a copy of the current context. This cannot be mutated. - * - * @return {object} copy of context - */ - getContext: function getContext() { - // lol javascript - return JSON.parse(stringify_1(this._globalContext)); - }, + // ideally duplicate error testing should occur *before* dataCallback/shouldSendCallback, + // but this would require copying an un-truncated copy of the data packet, which can be + // arbitrarily deep (extra_data) -- could be worthwhile? will revisit + if (!this._globalOptions.allowDuplicates && this._isRepeatData(data)) { + this._logDebug('warn', 'Raven dropped repeat event: ', data); + return; + } - /* - * Set environment of application - * - * @param {string} environment Typically something like 'production'. - * @return {Raven} - */ - setEnvironment: function setEnvironment(environment) { - this._globalOptions.environment = environment; - return this; - }, + // Send along an event_id if not explicitly passed. + // This event_id can be used to reference the error within Sentry itself. + // Set lastEventId after we know the error should actually be sent + this._lastEventId = data.event_id || (data.event_id = this._getUuid()); - /* - * Set release version of application - * - * @param {string} release Typically something like a git SHA to identify version - * @return {Raven} - */ - setRelease: function setRelease(release) { - this._globalOptions.release = release; - return this; - }, + // Store outbound payload after trim + this._lastData = data; - /* - * Set the dataCallback option - * - * @param {function} callback The callback to run which allows the - * data blob to be mutated before sending - * @return {Raven} - */ - setDataCallback: function setDataCallback(callback) { - var original = this._globalOptions.dataCallback; - this._globalOptions.dataCallback = keepOriginalCallback(original, callback); - return this; - }, + this._logDebug('debug', 'Raven about to send:', data); - /* - * Set the breadcrumbCallback option - * - * @param {function} callback The callback to run which allows filtering - * or mutating breadcrumbs - * @return {Raven} - */ - setBreadcrumbCallback: function setBreadcrumbCallback(callback) { - var original = this._globalOptions.breadcrumbCallback; - this._globalOptions.breadcrumbCallback = keepOriginalCallback(original, callback); - return this; - }, + var auth = { + sentry_version: '7', + sentry_client: 'raven-js/' + this.VERSION, + sentry_key: this._globalKey + }; - /* - * Set the shouldSendCallback option - * - * @param {function} callback The callback to run which allows - * introspecting the blob before sending - * @return {Raven} - */ - setShouldSendCallback: function setShouldSendCallback(callback) { - var original = this._globalOptions.shouldSendCallback; - this._globalOptions.shouldSendCallback = keepOriginalCallback(original, callback); - return this; - }, + if (this._globalSecret) { + auth.sentry_secret = this._globalSecret; + } - /** - * Override the default HTTP transport mechanism that transmits data - * to the Sentry server. - * - * @param {function} transport Function invoked instead of the default - * `makeRequest` handler. - * - * @return {Raven} - */ - setTransport: function setTransport(transport) { - this._globalOptions.transport = transport; - return this; - }, + var exception = data.exception && data.exception.values[0]; - /* - * Get the latest raw exception that was captured by Raven. - * - * @return {error} - */ - lastException: function lastException() { - return this._lastCapturedException; - }, + // only capture 'sentry' breadcrumb is autoBreadcrumbs is truthy + if ( + this._globalOptions.autoBreadcrumbs && + this._globalOptions.autoBreadcrumbs.sentry + ) { + this.captureBreadcrumb({ + category: 'sentry', + message: exception + ? (exception.type ? exception.type + ': ' : '') + exception.value + : data.message, + event_id: data.event_id, + level: data.level || 'error' // presume error unless specified + }); + } - /* - * Get the last event id - * - * @return {string} - */ - lastEventId: function lastEventId() { - return this._lastEventId; - }, + var url = this._globalEndpoint; + (globalOptions.transport || this._makeRequest).call(this, { + url: url, + auth: auth, + data: data, + options: globalOptions, + onSuccess: function success() { + self._resetBackoff(); - /* - * Determine if Raven is setup and ready to go. - * - * @return {boolean} - */ - isSetup: function isSetup() { - if (!this._hasJSON) return false; // needs JSON support + self._triggerEvent('success', { + data: data, + src: url + }); + callback && callback(); + }, + onError: function failure(error) { + self._logDebug('error', 'Raven transport failed to send: ', error); - if (!this._globalServer) { - if (!this.ravenNotConfiguredError) { - this.ravenNotConfiguredError = true; + if (error.request) { + self._setBackoffState(error.request); + } - this._logDebug('error', 'Error: Raven has not been configured.'); + self._triggerEvent('failure', { + data: data, + src: url + }); + error = error || new Error('Raven send failed (no additional details provided)'); + callback && callback(error); } + }); + }, - return false; - } + _makeRequest: function(opts) { + // Auth is intentionally sent as part of query string (NOT as custom HTTP header) to avoid preflight CORS requests + var url = opts.url + '?' + urlencode(opts.auth); - return true; - }, - afterLoad: function afterLoad() { - // TODO: remove window dependence? - // Attempt to initialize Raven on load - var RavenConfig = _window$1.RavenConfig; + var evaluatedHeaders = null; + var evaluatedFetchParameters = {}; - if (RavenConfig) { - this.config(RavenConfig.dsn, RavenConfig.config).install(); + if (opts.options.headers) { + evaluatedHeaders = this._evaluateHash(opts.options.headers); } - }, - showReportDialog: function showReportDialog(options) { - if (!_document // doesn't work without a document (React native) - ) return; - options = options || {}; - var lastEventId = options.eventId || this.lastEventId(); - if (!lastEventId) { - throw new configError('Missing eventId'); + if (opts.options.fetchParameters) { + evaluatedFetchParameters = this._evaluateHash(opts.options.fetchParameters); } - var dsn = options.dsn || this._dsn; + if (supportsFetch()) { + evaluatedFetchParameters.body = stringify(opts.data); - if (!dsn) { - throw new configError('Missing DSN'); - } + var defaultFetchOptions = objectMerge({}, this._fetchDefaults); + var fetchOptions = objectMerge(defaultFetchOptions, evaluatedFetchParameters); - var encode = encodeURIComponent; - var qs = ''; - qs += '?eventId=' + encode(lastEventId); - qs += '&dsn=' + encode(dsn); - var user = options.user || this._globalContext.user; + if (evaluatedHeaders) { + fetchOptions.headers = evaluatedHeaders; + } - if (user) { - if (user.name) qs += '&name=' + encode(user.name); - if (user.email) qs += '&email=' + encode(user.email); + return _window + .fetch(url, fetchOptions) + .then(function(response) { + if (response.ok) { + opts.onSuccess && opts.onSuccess(); + } else { + var error = new Error('Sentry error code: ' + response.status); + // It's called request only to keep compatibility with XHR interface + // and not add more redundant checks in setBackoffState method + error.request = response; + opts.onError && opts.onError(error); + } + }) + ['catch'](function() { + opts.onError && + opts.onError(new Error('Sentry error code: network unavailable')); + }); } - var globalServer = this._getGlobalServer(this._parseDSN(dsn)); - - var script = _document.createElement('script'); - - script.async = true; - script.src = globalServer + '/api/embed/error-page/' + qs; + var request = _window.XMLHttpRequest && new _window.XMLHttpRequest(); + if (!request) return; - (_document.head || _document.body).appendChild(script); - }, + // if browser doesn't support CORS (e.g. IE7), we are out of luck + var hasCORS = 'withCredentials' in request || typeof XDomainRequest !== 'undefined'; - /**** Private functions ****/ - _ignoreNextOnError: function _ignoreNextOnError() { - var self = this; - this._ignoreOnError += 1; - setTimeout(function () { - // onerror should trigger before setTimeout - self._ignoreOnError -= 1; - }); - }, - _triggerEvent: function _triggerEvent(eventType, options) { - // NOTE: `event` is a native browser thing, so let's avoid conflicting wiht it - var evt, key; - if (!this._hasDocument) return; - options = options || {}; - eventType = 'raven' + eventType.substr(0, 1).toUpperCase() + eventType.substr(1); + if (!hasCORS) return; - if (_document.createEvent) { - evt = _document.createEvent('HTMLEvents'); - evt.initEvent(eventType, true, true); + if ('withCredentials' in request) { + request.onreadystatechange = function() { + if (request.readyState !== 4) { + return; + } else if (request.status === 200) { + opts.onSuccess && opts.onSuccess(); + } else if (opts.onError) { + var err = new Error('Sentry error code: ' + request.status); + err.request = request; + opts.onError(err); + } + }; } else { - evt = _document.createEventObject(); - evt.eventType = eventType; - } + request = new XDomainRequest(); + // xdomainrequest cannot go http -> https (or vice versa), + // so always use protocol relative + url = url.replace(/^https?:/, ''); - for (key in options) { - if (hasKey(options, key)) { - evt[key] = options[key]; + // onreadystatechange not supported by XDomainRequest + if (opts.onSuccess) { + request.onload = opts.onSuccess; } - } - - if (_document.createEvent) { - // IE9 if standards - _document.dispatchEvent(evt); - } else { - // IE8 regardless of Quirks or Standards - // IE9 if quirks - try { - _document.fireEvent('on' + evt.eventType.toLowerCase(), evt); - } catch (e) {// Do nothing + if (opts.onError) { + request.onerror = function() { + var err = new Error('Sentry error code: XDomainRequest'); + err.request = request; + opts.onError(err); + }; } } - }, - /** - * Wraps addEventListener to capture UI breadcrumbs - * @param evtName the event name (e.g. "click") - * @returns {Function} - * @private - */ - _breadcrumbEventHandler: function _breadcrumbEventHandler(evtName) { - var self = this; - return function (evt) { - // reset keypress timeout; e.g. triggering a 'click' after - // a 'keypress' will reset the keypress debounce so that a new - // set of keypresses can be recorded - self._keypressTimeout = null; // It's possible this handler might trigger multiple times for the same - // event (e.g. event propagation through node ancestors). Ignore if we've - // already captured the event. + request.open('POST', url); - if (self._lastCapturedEvent === evt) return; - self._lastCapturedEvent = evt; // try/catch both: - // - accessing evt.target (see getsentry/raven-js#838, #768) - // - `htmlTreeAsString` because it's complex, and just accessing the DOM incorrectly - // can throw an exception in some circumstances. + if (evaluatedHeaders) { + each(evaluatedHeaders, function(key, value) { + request.setRequestHeader(key, value); + }); + } - var target; + request.send(stringify(opts.data)); + }, - try { - target = htmlTreeAsString(evt.target); - } catch (e) { - target = ''; + _evaluateHash: function(hash) { + var evaluated = {}; + + for (var key in hash) { + if (hash.hasOwnProperty(key)) { + var value = hash[key]; + evaluated[key] = typeof value === 'function' ? value() : value; } + } - self.captureBreadcrumb({ - category: 'ui.' + evtName, - // e.g. ui.click, ui.input - message: target - }); - }; + return evaluated; }, - /** - * Wraps addEventListener to capture keypress UI events - * @returns {Function} - * @private - */ - _keypressEventHandler: function _keypressEventHandler() { - var self = this, - debounceDuration = 1000; // milliseconds - // TODO: if somehow user switches keypress target before - // debounce timeout is triggered, we will only capture - // a single breadcrumb from the FIRST target (acceptable?) - - return function (evt) { - var target; + _logDebug: function(level) { + // We allow `Raven.debug` and `Raven.config(DSN, { debug: true })` to not make backward incompatible API change + if ( + this._originalConsoleMethods[level] && + (this.debug || this._globalOptions.debug) + ) { + // In IE<10 console methods do not have their own 'apply' method + Function.prototype.apply.call( + this._originalConsoleMethods[level], + this._originalConsole, + [].slice.call(arguments, 1) + ); + } + }, - try { - target = evt.target; - } catch (e) { - // just accessing event properties can throw an exception in some rare circumstances - // see: https://github.com/getsentry/raven-js/issues/838 - return; - } + _mergeContext: function(key, context) { + if (isUndefined(context)) { + delete this._globalContext[key]; + } else { + this._globalContext[key] = objectMerge(this._globalContext[key] || {}, context); + } + } +}; - var tagName = target && target.tagName; // only consider keypress events on actual input elements - // this will disregard keypresses targeting body (e.g. tabbing - // through elements, hotkeys, etc) +// Deprecations +Raven.prototype.setUser = Raven.prototype.setUserContext; +Raven.prototype.setReleaseContext = Raven.prototype.setRelease; - if (!tagName || tagName !== 'INPUT' && tagName !== 'TEXTAREA' && !target.isContentEditable) return; // record first keypress in a series, but ignore subsequent - // keypresses until debounce clears +module.exports = Raven; - var timeout = self._keypressTimeout; +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"10":10,"11":11,"4":4,"5":5,"8":8,"9":9}],7:[function(_dereq_,module,exports){ +(function (global){ +/** + * Enforces a single instance of the Raven client, and the + * main entry point for Raven. If you are a consumer of the + * Raven library, you SHOULD load this file (vs raven.js). + **/ - if (!timeout) { - self._breadcrumbEventHandler('input')(evt); - } +var RavenConstructor = _dereq_(6); - clearTimeout(timeout); - self._keypressTimeout = setTimeout(function () { - self._keypressTimeout = null; - }, debounceDuration); - }; - }, +// This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) +var _window = + typeof window !== 'undefined' + ? window + : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; +var _Raven = _window.Raven; - /** - * Captures a breadcrumb of type "navigation", normalizing input URLs - * @param to the originating URL - * @param from the target URL - * @private - */ - _captureUrlChange: function _captureUrlChange(from, to) { - var parsedLoc = parseUrl(this._location.href); - var parsedTo = parseUrl(to); - var parsedFrom = parseUrl(from); // because onpopstate only tells you the "new" (to) value of location.href, and - // not the previous (from) value, we need to track the value of the current URL - // state ourselves +var Raven = new RavenConstructor(); - this._lastHref = to; // Use only the path component of the URL if the URL matches the current - // document (almost all the time when using pushState) +/* + * Allow multiple versions of Raven to be installed. + * Strip Raven from the global context and returns the instance. + * + * @return {Raven} + */ +Raven.noConflict = function() { + _window.Raven = _Raven; + return Raven; +}; - if (parsedLoc.protocol === parsedTo.protocol && parsedLoc.host === parsedTo.host) to = parsedTo.relative; - if (parsedLoc.protocol === parsedFrom.protocol && parsedLoc.host === parsedFrom.host) from = parsedFrom.relative; - this.captureBreadcrumb({ - category: 'navigation', - data: { - to: to, - from: from - } - }); - }, - _patchFunctionToString: function _patchFunctionToString() { - var self = this; - self._originalFunctionToString = Function.prototype.toString; // eslint-disable-next-line no-extend-native +Raven.afterLoad(); - Function.prototype.toString = function () { - if (typeof this === 'function' && this.__raven__) { - return self._originalFunctionToString.apply(this.__orig__, arguments); - } +module.exports = Raven; - return self._originalFunctionToString.apply(this, arguments); - }; - }, - _unpatchFunctionToString: function _unpatchFunctionToString() { - if (this._originalFunctionToString) { - // eslint-disable-next-line no-extend-native - Function.prototype.toString = this._originalFunctionToString; - } - }, - - /** - * Wrap timer functions and event targets to catch errors and provide - * better metadata. - */ - _instrumentTryCatch: function _instrumentTryCatch() { - var self = this; - var wrappedBuiltIns = self._wrappedBuiltIns; +/** + * DISCLAIMER: + * + * Expose `Client` constructor for cases where user want to track multiple "sub-applications" in one larger app. + * It's not meant to be used by a wide audience, so pleaaase make sure that you know what you're doing before using it. + * Accidentally calling `install` multiple times, may result in an unexpected behavior that's very hard to debug. + * + * It's called `Client' to be in-line with Raven Node implementation. + * + * HOWTO: + * + * import Raven from 'raven-js'; + * + * const someAppReporter = new Raven.Client(); + * const someOtherAppReporter = new Raven.Client(); + * + * someAppReporter.config('__DSN__', { + * ...config goes here + * }); + * + * someOtherAppReporter.config('__OTHER_DSN__', { + * ...config goes here + * }); + * + * someAppReporter.captureMessage(...); + * someAppReporter.captureException(...); + * someAppReporter.captureBreadcrumb(...); + * + * someOtherAppReporter.captureMessage(...); + * someOtherAppReporter.captureException(...); + * someOtherAppReporter.captureBreadcrumb(...); + * + * It should "just work". + */ +module.exports.Client = RavenConstructor; - function wrapTimeFn(orig) { - return function (fn, t) { - // preserve arity - // Make a copy of the arguments to prevent deoptimization - // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments - var args = new Array(arguments.length); +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"6":6}],8:[function(_dereq_,module,exports){ +(function (global){ +var stringify = _dereq_(10); - for (var i = 0; i < args.length; ++i) { - args[i] = arguments[i]; - } +var _window = + typeof window !== 'undefined' + ? window + : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; - var originalCallback = args[0]; +function isObject(what) { + return typeof what === 'object' && what !== null; +} - if (isFunction(originalCallback)) { - args[0] = self.wrap(originalCallback); - } // IE < 9 doesn't support .call/.apply on setInterval/setTimeout, but it - // also supports only two arguments and doesn't care what this is, so we - // can just call the original function directly. +// Yanked from https://git.io/vS8DV re-used under CC0 +// with some tiny modifications +function isError(value) { + switch ({}.toString.call(value)) { + case '[object Error]': + return true; + case '[object Exception]': + return true; + case '[object DOMException]': + return true; + default: + return value instanceof Error; + } +} +function isErrorEvent(value) { + return supportsErrorEvent() && {}.toString.call(value) === '[object ErrorEvent]'; +} - if (orig.apply) { - return orig.apply(this, args); - } else { - return orig(args[0], args[1]); - } - }; - } +function isUndefined(what) { + return what === void 0; +} - var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; +function isFunction(what) { + return typeof what === 'function'; +} - function wrapEventTarget(global) { - var proto = _window$1[global] && _window$1[global].prototype; +function isPlainObject(what) { + return Object.prototype.toString.call(what) === '[object Object]'; +} - if (proto && proto.hasOwnProperty && proto.hasOwnProperty('addEventListener')) { - fill(proto, 'addEventListener', function (orig) { - return function (evtName, fn, capture, secure) { - // preserve arity - try { - if (fn && fn.handleEvent) { - fn.handleEvent = self.wrap(fn.handleEvent); - } - } catch (err) {} // can sometimes get 'Permission denied to access property "handle Event' - // More breadcrumb DOM capture ... done here and not in `_instrumentBreadcrumbs` - // so that we don't have more than one wrapper function +function isString(what) { + return Object.prototype.toString.call(what) === '[object String]'; +} +function isArray(what) { + return Object.prototype.toString.call(what) === '[object Array]'; +} - var before, clickHandler, keypressHandler; +function isEmptyObject(what) { + if (!isPlainObject(what)) return false; - if (autoBreadcrumbs && autoBreadcrumbs.dom && (global === 'EventTarget' || global === 'Node')) { - // NOTE: generating multiple handlers per addEventListener invocation, should - // revisit and verify we can just use one (almost certainly) - clickHandler = self._breadcrumbEventHandler('click'); - keypressHandler = self._keypressEventHandler(); + for (var _ in what) { + if (what.hasOwnProperty(_)) { + return false; + } + } + return true; +} - before = function before(evt) { - // need to intercept every DOM event in `before` argument, in case that - // same wrapped method is re-used for different events (e.g. mousemove THEN click) - // see #724 - if (!evt) return; - var eventType; +function supportsErrorEvent() { + try { + new ErrorEvent(''); // eslint-disable-line no-new + return true; + } catch (e) { + return false; + } +} - try { - eventType = evt.type; - } catch (e) { - // just accessing event properties can throw an exception in some rare circumstances - // see: https://github.com/getsentry/raven-js/issues/838 - return; - } +function supportsFetch() { + if (!('fetch' in _window)) return false; - if (eventType === 'click') return clickHandler(evt);else if (eventType === 'keypress') return keypressHandler(evt); - }; - } + try { + new Headers(); // eslint-disable-line no-new + new Request(''); // eslint-disable-line no-new + new Response(); // eslint-disable-line no-new + return true; + } catch (e) { + return false; + } +} - return orig.call(this, evtName, self.wrap(fn, undefined, before), capture, secure); - }; - }, wrappedBuiltIns); - fill(proto, 'removeEventListener', function (orig) { - return function (evt, fn, capture, secure) { - try { - fn = fn && (fn.__raven_wrapper__ ? fn.__raven_wrapper__ : fn); - } catch (e) {// ignore, accessing __raven_wrapper__ will throw in some Selenium environments - } +// Despite all stars in the sky saying that Edge supports old draft syntax, aka 'never', 'always', 'origin' and 'default +// https://caniuse.com/#feat=referrer-policy +// It doesn't. And it throw exception instead of ignoring this parameter... +// REF: https://github.com/getsentry/raven-js/issues/1233 +function supportsReferrerPolicy() { + if (!supportsFetch()) return false; - return orig.call(this, evt, fn, capture, secure); - }; - }, wrappedBuiltIns); - } - } + try { + // eslint-disable-next-line no-new + new Request('pickleRick', { + referrerPolicy: 'origin' + }); + return true; + } catch (e) { + return false; + } +} - fill(_window$1, 'setTimeout', wrapTimeFn, wrappedBuiltIns); - fill(_window$1, 'setInterval', wrapTimeFn, wrappedBuiltIns); +function supportsPromiseRejectionEvent() { + return typeof PromiseRejectionEvent === 'function'; +} - if (_window$1.requestAnimationFrame) { - fill(_window$1, 'requestAnimationFrame', function (orig) { - return function (cb) { - return orig(self.wrap(cb)); - }; - }, wrappedBuiltIns); - } // event targets borrowed from bugsnag-js: - // https://github.com/bugsnag/bugsnag-js/blob/master/src/bugsnag.js#L666 +function wrappedCallback(callback) { + function dataCallback(data, original) { + var normalizedData = callback(data) || data; + if (original) { + return original(normalizedData) || normalizedData; + } + return normalizedData; + } + return dataCallback; +} - var eventTargets = ['EventTarget', 'Window', 'Node', 'ApplicationCache', 'AudioTrackList', 'ChannelMergerNode', 'CryptoOperation', 'EventSource', 'FileReader', 'HTMLUnknownElement', 'IDBDatabase', 'IDBRequest', 'IDBTransaction', 'KeyOperation', 'MediaController', 'MessagePort', 'ModalWindow', 'Notification', 'SVGElementInstance', 'Screen', 'TextTrack', 'TextTrackCue', 'TextTrackList', 'WebSocket', 'WebSocketWorker', 'Worker', 'XMLHttpRequest', 'XMLHttpRequestEventTarget', 'XMLHttpRequestUpload']; +function each(obj, callback) { + var i, j; - for (var i = 0; i < eventTargets.length; i++) { - wrapEventTarget(eventTargets[i]); + if (isUndefined(obj.length)) { + for (i in obj) { + if (hasKey(obj, i)) { + callback.call(null, i, obj[i]); + } } - }, - - /** - * Instrument browser built-ins w/ breadcrumb capturing - * - XMLHttpRequests - * - DOM interactions (click/typing) - * - window.location changes - * - console - * - * Can be disabled or individually configured via the `autoBreadcrumbs` config option - */ - _instrumentBreadcrumbs: function _instrumentBreadcrumbs() { - var self = this; - var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; - var wrappedBuiltIns = self._wrappedBuiltIns; - - function wrapProp(prop, xhr) { - if (prop in xhr && isFunction(xhr[prop])) { - fill(xhr, prop, function (orig) { - return self.wrap(orig); - }); // intentionally don't track filled methods on XHR instances + } else { + j = obj.length; + if (j) { + for (i = 0; i < j; i++) { + callback.call(null, i, obj[i]); } } + } +} - if (autoBreadcrumbs.xhr && 'XMLHttpRequest' in _window$1) { - var xhrproto = XMLHttpRequest.prototype; - fill(xhrproto, 'open', function (origOpen) { - return function (method, url) { - // preserve arity - // if Sentry key appears in URL, don't capture - if (isString(url) && url.indexOf(self._globalKey) === -1) { - this.__raven_xhr = { - method: method, - url: url, - status_code: null - }; - } - - return origOpen.apply(this, arguments); - }; - }, wrappedBuiltIns); - fill(xhrproto, 'send', function (origSend) { - return function () { - // preserve arity - var xhr = this; - - function onreadystatechangeHandler() { - if (xhr.__raven_xhr && xhr.readyState === 4) { - try { - // touching statusCode in some platforms throws - // an exception - xhr.__raven_xhr.status_code = xhr.status; - } catch (e) { - /* do nothing */ - } +function objectMerge(obj1, obj2) { + if (!obj2) { + return obj1; + } + each(obj2, function(key, value) { + obj1[key] = value; + }); + return obj1; +} - self.captureBreadcrumb({ - type: 'http', - category: 'xhr', - data: xhr.__raven_xhr - }); - } - } +/** + * This function is only used for react-native. + * react-native freezes object that have already been sent over the + * js bridge. We need this function in order to check if the object is frozen. + * So it's ok that objectFrozen returns false if Object.isFrozen is not + * supported because it's not relevant for other "platforms". See related issue: + * https://github.com/getsentry/react-native-sentry/issues/57 + */ +function objectFrozen(obj) { + if (!Object.isFrozen) { + return false; + } + return Object.isFrozen(obj); +} - var props = ['onload', 'onerror', 'onprogress']; +function truncate(str, max) { + if (typeof max !== 'number') { + throw new Error('2nd argument to `truncate` function should be a number'); + } + if (typeof str !== 'string' || max === 0) { + return str; + } + return str.length <= max ? str : str.substr(0, max) + '\u2026'; +} - for (var j = 0; j < props.length; j++) { - wrapProp(props[j], xhr); - } +/** + * hasKey, a better form of hasOwnProperty + * Example: hasKey(MainHostObject, property) === true/false + * + * @param {Object} host object to check property + * @param {string} key to check + */ +function hasKey(object, key) { + return Object.prototype.hasOwnProperty.call(object, key); +} - if ('onreadystatechange' in xhr && isFunction(xhr.onreadystatechange)) { - fill(xhr, 'onreadystatechange', function (orig) { - return self.wrap(orig, undefined, onreadystatechangeHandler); - } - /* intentionally don't track this instrumentation */ - ); - } else { - // if onreadystatechange wasn't actually set by the page on this xhr, we - // are free to set our own and capture the breadcrumb - xhr.onreadystatechange = onreadystatechangeHandler; - } +function joinRegExp(patterns) { + // Combine an array of regular expressions and strings into one large regexp + // Be mad. + var sources = [], + i = 0, + len = patterns.length, + pattern; - return origSend.apply(this, arguments); - }; - }, wrappedBuiltIns); + for (; i < len; i++) { + pattern = patterns[i]; + if (isString(pattern)) { + // If it's a string, we need to escape it + // Taken from: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions + sources.push(pattern.replace(/([.*+?^=!:${}()|\[\]\/\\])/g, '\\$1')); + } else if (pattern && pattern.source) { + // If it's a regexp already, we want to extract the source + sources.push(pattern.source); } + // Intentionally skip other cases + } + return new RegExp(sources.join('|'), 'i'); +} - if (autoBreadcrumbs.xhr && supportsFetch()) { - fill(_window$1, 'fetch', function (origFetch) { - return function () { - // preserve arity - // Make a copy of the arguments to prevent deoptimization - // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments - var args = new Array(arguments.length); - - for (var i = 0; i < args.length; ++i) { - args[i] = arguments[i]; - } - - var fetchInput = args[0]; - var method = 'GET'; - var url; +function urlencode(o) { + var pairs = []; + each(o, function(key, value) { + pairs.push(encodeURIComponent(key) + '=' + encodeURIComponent(value)); + }); + return pairs.join('&'); +} - if (typeof fetchInput === 'string') { - url = fetchInput; - } else if ('Request' in _window$1 && fetchInput instanceof _window$1.Request) { - url = fetchInput.url; +// borrowed from https://tools.ietf.org/html/rfc3986#appendix-B +// intentionally using regex and not href parsing trick because React Native and other +// environments where DOM might not be available +function parseUrl(url) { + if (typeof url !== 'string') return {}; + var match = url.match(/^(([^:\/?#]+):)?(\/\/([^\/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?$/); - if (fetchInput.method) { - method = fetchInput.method; - } - } else { - url = '' + fetchInput; - } // if Sentry key appears in URL, don't capture, as it's our own request + // coerce to undefined values to empty string so we don't get 'undefined' + var query = match[6] || ''; + var fragment = match[8] || ''; + return { + protocol: match[2], + host: match[4], + path: match[5], + relative: match[5] + query + fragment // everything minus origin + }; +} +function uuid4() { + var crypto = _window.crypto || _window.msCrypto; + if (!isUndefined(crypto) && crypto.getRandomValues) { + // Use window.crypto API if available + // eslint-disable-next-line no-undef + var arr = new Uint16Array(8); + crypto.getRandomValues(arr); - if (url.indexOf(self._globalKey) !== -1) { - return origFetch.apply(this, args); - } + // set 4 in byte 7 + arr[3] = (arr[3] & 0xfff) | 0x4000; + // set 2 most significant bits of byte 9 to '10' + arr[4] = (arr[4] & 0x3fff) | 0x8000; - if (args[1] && args[1].method) { - method = args[1].method; - } + var pad = function(num) { + var v = num.toString(16); + while (v.length < 4) { + v = '0' + v; + } + return v; + }; - var fetchData = { - method: method, - url: url, - status_code: null - }; - return origFetch.apply(this, args).then(function (response) { - fetchData.status_code = response.status; - self.captureBreadcrumb({ - type: 'http', - category: 'fetch', - data: fetchData - }); - return response; - }); - }; - }, wrappedBuiltIns); - } // Capture breadcrumbs from any click that is unhandled / bubbled up all the way - // to the document. Do this before we instrument addEventListener. + return ( + pad(arr[0]) + + pad(arr[1]) + + pad(arr[2]) + + pad(arr[3]) + + pad(arr[4]) + + pad(arr[5]) + + pad(arr[6]) + + pad(arr[7]) + ); + } else { + // http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/2117523#2117523 + return 'xxxxxxxxxxxx4xxxyxxxxxxxxxxxxxxx'.replace(/[xy]/g, function(c) { + var r = (Math.random() * 16) | 0, + v = c === 'x' ? r : (r & 0x3) | 0x8; + return v.toString(16); + }); + } +} +/** + * Given a child DOM element, returns a query-selector statement describing that + * and its ancestors + * e.g. [HTMLElement] => body > div > input#foo.btn[name=baz] + * @param elem + * @returns {string} + */ +function htmlTreeAsString(elem) { + /* eslint no-extra-parens:0*/ + var MAX_TRAVERSE_HEIGHT = 5, + MAX_OUTPUT_LEN = 80, + out = [], + height = 0, + len = 0, + separator = ' > ', + sepLength = separator.length, + nextStr; - if (autoBreadcrumbs.dom && this._hasDocument) { - if (_document.addEventListener) { - _document.addEventListener('click', self._breadcrumbEventHandler('click'), false); + while (elem && height++ < MAX_TRAVERSE_HEIGHT) { + nextStr = htmlElementAsString(elem); + // bail out if + // - nextStr is the 'html' element + // - the length of the string that would be created exceeds MAX_OUTPUT_LEN + // (ignore this limit if we are on the first iteration) + if ( + nextStr === 'html' || + (height > 1 && len + out.length * sepLength + nextStr.length >= MAX_OUTPUT_LEN) + ) { + break; + } - _document.addEventListener('keypress', self._keypressEventHandler(), false); - } else { - // IE8 Compatibility - _document.attachEvent('onclick', self._breadcrumbEventHandler('click')); + out.push(nextStr); - _document.attachEvent('onkeypress', self._keypressEventHandler()); - } - } // record navigation (URL) changes - // NOTE: in Chrome App environment, touching history.pushState, *even inside - // a try/catch block*, will cause Chrome to output an error to console.error - // borrowed from: https://github.com/angular/angular.js/pull/13945/files + len += nextStr.length; + elem = elem.parentNode; + } + return out.reverse().join(separator); +} - var chrome = _window$1.chrome; - var isChromePackagedApp = chrome && chrome.app && chrome.app.runtime; - var hasPushAndReplaceState = !isChromePackagedApp && _window$1.history && history.pushState && history.replaceState; +/** + * Returns a simple, query-selector representation of a DOM element + * e.g. [HTMLElement] => input#foo.btn[name=baz] + * @param HTMLElement + * @returns {string} + */ +function htmlElementAsString(elem) { + var out = [], + className, + classes, + key, + attr, + i; - if (autoBreadcrumbs.location && hasPushAndReplaceState) { - // TODO: remove onpopstate handler on uninstall() - var oldOnPopState = _window$1.onpopstate; + if (!elem || !elem.tagName) { + return ''; + } - _window$1.onpopstate = function () { - var currentHref = self._location.href; + out.push(elem.tagName.toLowerCase()); + if (elem.id) { + out.push('#' + elem.id); + } - self._captureUrlChange(self._lastHref, currentHref); + className = elem.className; + if (className && isString(className)) { + classes = className.split(/\s+/); + for (i = 0; i < classes.length; i++) { + out.push('.' + classes[i]); + } + } + var attrWhitelist = ['type', 'name', 'title', 'alt']; + for (i = 0; i < attrWhitelist.length; i++) { + key = attrWhitelist[i]; + attr = elem.getAttribute(key); + if (attr) { + out.push('[' + key + '="' + attr + '"]'); + } + } + return out.join(''); +} - if (oldOnPopState) { - return oldOnPopState.apply(this, arguments); - } - }; +/** + * Returns true if either a OR b is truthy, but not both + */ +function isOnlyOneTruthy(a, b) { + return !!(!!a ^ !!b); +} - var historyReplacementFunction = function historyReplacementFunction(origHistFunction) { - // note history.pushState.length is 0; intentionally not declaring - // params to preserve 0 arity - return function () - /* state, title, url */ - { - var url = arguments.length > 2 ? arguments[2] : undefined; // url argument is optional +/** + * Returns true if both parameters are undefined + */ +function isBothUndefined(a, b) { + return isUndefined(a) && isUndefined(b); +} - if (url) { - // coerce to string (this is what pushState does) - self._captureUrlChange(self._lastHref, url + ''); - } +/** + * Returns true if the two input exception interfaces have the same content + */ +function isSameException(ex1, ex2) { + if (isOnlyOneTruthy(ex1, ex2)) return false; - return origHistFunction.apply(this, arguments); - }; - }; + ex1 = ex1.values[0]; + ex2 = ex2.values[0]; - fill(history, 'pushState', historyReplacementFunction, wrappedBuiltIns); - fill(history, 'replaceState', historyReplacementFunction, wrappedBuiltIns); - } + if (ex1.type !== ex2.type || ex1.value !== ex2.value) return false; - if (autoBreadcrumbs.console && 'console' in _window$1 && console.log) { - // console - var consoleMethodCallback = function consoleMethodCallback(msg, data) { - self.captureBreadcrumb({ - message: msg, - level: data.level, - category: 'console' - }); - }; + // in case both stacktraces are undefined, we can't decide so default to false + if (isBothUndefined(ex1.stacktrace, ex2.stacktrace)) return false; - each(['debug', 'info', 'warn', 'error', 'log'], function (_, level) { - wrapConsoleMethod(console, level, consoleMethodCallback); - }); - } - }, - _restoreBuiltIns: function _restoreBuiltIns() { - // restore any wrapped builtins - var builtin; + return isSameStacktrace(ex1.stacktrace, ex2.stacktrace); +} - while (this._wrappedBuiltIns.length) { - builtin = this._wrappedBuiltIns.shift(); - var obj = builtin[0], - name = builtin[1], - orig = builtin[2]; - obj[name] = orig; - } - }, - _restoreConsole: function _restoreConsole() { - // eslint-disable-next-line guard-for-in - for (var method in this._originalConsoleMethods) { - this._originalConsole[method] = this._originalConsoleMethods[method]; - } - }, - _drainPlugins: function _drainPlugins() { - var self = this; // FIX ME TODO +/** + * Returns true if the two input stack trace interfaces have the same content + */ +function isSameStacktrace(stack1, stack2) { + if (isOnlyOneTruthy(stack1, stack2)) return false; - each(this._plugins, function (_, plugin) { - var installer = plugin[0]; - var args = plugin[1]; - installer.apply(self, [self].concat(args)); - }); - }, - _parseDSN: function _parseDSN(str) { - var m = dsnPattern.exec(str), - dsn = {}, - i = 7; + var frames1 = stack1.frames; + var frames2 = stack2.frames; + + // Exit early if frame count differs + if (frames1.length !== frames2.length) return false; + + // Iterate through every frame; bail out if anything differs + var a, b; + for (var i = 0; i < frames1.length; i++) { + a = frames1[i]; + b = frames2[i]; + if ( + a.filename !== b.filename || + a.lineno !== b.lineno || + a.colno !== b.colno || + a['function'] !== b['function'] + ) + return false; + } + return true; +} + +/** + * Polyfill a method + * @param obj object e.g. `document` + * @param name method name present on object e.g. `addEventListener` + * @param replacement replacement function + * @param track {optional} record instrumentation to an array + */ +function fill(obj, name, replacement, track) { + if (obj == null) return; + var orig = obj[name]; + obj[name] = replacement(orig); + obj[name].__raven__ = true; + obj[name].__orig__ = orig; + if (track) { + track.push([obj, name, orig]); + } +} + +/** + * Join values in array + * @param input array of values to be joined together + * @param delimiter string to be placed in-between values + * @returns {string} + */ +function safeJoin(input, delimiter) { + if (!isArray(input)) return ''; + + var output = []; + for (var i = 0; i < input.length; i++) { try { - while (i--) { - dsn[dsnKeys[i]] = m[i] || ''; - } + output.push(String(input[i])); } catch (e) { - throw new configError('Invalid DSN: ' + str); + output.push('[value cannot be serialized]'); } + } - if (dsn.pass && !this._globalOptions.allowSecretKey) { - throw new configError('Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key'); - } + return output.join(delimiter); +} - return dsn; - }, - _getGlobalServer: function _getGlobalServer(uri) { - // assemble the endpoint from the uri pieces - var globalServer = '//' + uri.host + (uri.port ? ':' + uri.port : ''); +// Default Node.js REPL depth +var MAX_SERIALIZE_EXCEPTION_DEPTH = 3; +// 50kB, as 100kB is max payload size, so half sounds reasonable +var MAX_SERIALIZE_EXCEPTION_SIZE = 50 * 1024; +var MAX_SERIALIZE_KEYS_LENGTH = 40; - if (uri.protocol) { - globalServer = uri.protocol + ':' + globalServer; - } +function utf8Length(value) { + return ~-encodeURI(value).split(/%..|./).length; +} - return globalServer; - }, - _handleOnErrorStackInfo: function _handleOnErrorStackInfo() { - // if we are intentionally ignoring errors via onerror, bail out - if (!this._ignoreOnError) { - this._handleStackInfo.apply(this, arguments); - } - }, - _handleStackInfo: function _handleStackInfo(stackInfo, options) { - var frames = this._prepareFrames(stackInfo, options); +function jsonSize(value) { + return utf8Length(JSON.stringify(value)); +} - this._triggerEvent('handle', { - stackInfo: stackInfo, - options: options - }); +function serializeValue(value) { + if (typeof value === 'string') { + var maxLength = 40; + return truncate(value, maxLength); + } else if ( + typeof value === 'number' || + typeof value === 'boolean' || + typeof value === 'undefined' + ) { + return value; + } - this._processException(stackInfo.name, stackInfo.message, stackInfo.url, stackInfo.lineno, frames, options); - }, - _prepareFrames: function _prepareFrames(stackInfo, options) { - var self = this; - var frames = []; + var type = Object.prototype.toString.call(value); - if (stackInfo.stack && stackInfo.stack.length) { - each(stackInfo.stack, function (i, stack) { - var frame = self._normalizeFrame(stack, stackInfo.url); + // Node.js REPL notation + if (type === '[object Object]') return '[Object]'; + if (type === '[object Array]') return '[Array]'; + if (type === '[object Function]') + return value.name ? '[Function: ' + value.name + ']' : '[Function]'; - if (frame) { - frames.push(frame); - } - }); // e.g. frames captured via captureMessage throw + return value; +} - if (options && options.trimHeadFrames) { - for (var j = 0; j < options.trimHeadFrames && j < frames.length; j++) { - frames[j].in_app = false; - } - } - } +function serializeObject(value, depth) { + if (depth === 0) return serializeValue(value); + + if (isPlainObject(value)) { + return Object.keys(value).reduce(function(acc, key) { + acc[key] = serializeObject(value[key], depth - 1); + return acc; + }, {}); + } else if (Array.isArray(value)) { + return value.map(function(val) { + return serializeObject(val, depth - 1); + }); + } - frames = frames.slice(0, this._globalOptions.stackTraceLimit); - return frames; - }, - _normalizeFrame: function _normalizeFrame(frame, stackInfoUrl) { - // normalize the frames data - var normalized = { - filename: frame.url, - lineno: frame.line, - colno: frame.column, - function: frame.func || '?' - }; // Case when we don't have any information about the error - // E.g. throwing a string or raw object, instead of an `Error` in Firefox - // Generating synthetic error doesn't add any value here - // - // We should probably somehow let a user know that they should fix their code + return serializeValue(value); +} - if (!frame.url) { - normalized.filename = stackInfoUrl; // fallback to whole stacks url from onerror handler - } +function serializeException(ex, depth, maxSize) { + if (!isPlainObject(ex)) return ex; - normalized.in_app = !( // determine if an exception came from outside of our app - // first we check the global includePaths list. - !!this._globalOptions.includePaths.test && !this._globalOptions.includePaths.test(normalized.filename) || // Now we check for fun, if the function name is Raven or TraceKit - /(Raven|TraceKit)\./.test(normalized['function']) || // finally, we do a last ditch effort and check for raven.min.js - /raven\.(min\.)?js$/.test(normalized.filename)); - return normalized; - }, - _processException: function _processException(type, message, fileurl, lineno, frames, options) { - var prefixedMessage = (type ? type + ': ' : '') + (message || ''); + depth = typeof depth !== 'number' ? MAX_SERIALIZE_EXCEPTION_DEPTH : depth; + maxSize = typeof depth !== 'number' ? MAX_SERIALIZE_EXCEPTION_SIZE : maxSize; - if (!!this._globalOptions.ignoreErrors.test && (this._globalOptions.ignoreErrors.test(message) || this._globalOptions.ignoreErrors.test(prefixedMessage))) { - return; - } + var serialized = serializeObject(ex, depth); - var stacktrace; + if (jsonSize(stringify(serialized)) > maxSize) { + return serializeException(ex, depth - 1); + } - if (frames && frames.length) { - fileurl = frames[0].filename || fileurl; // Sentry expects frames oldest to newest - // and JS sends them as newest to oldest + return serialized; +} - frames.reverse(); - stacktrace = { - frames: frames - }; - } else if (fileurl) { - stacktrace = { - frames: [{ - filename: fileurl, - lineno: lineno, - in_app: true - }] - }; - } +function serializeKeysForMessage(keys, maxLength) { + if (typeof keys === 'number' || typeof keys === 'string') return keys.toString(); + if (!Array.isArray(keys)) return ''; - if (!!this._globalOptions.ignoreUrls.test && this._globalOptions.ignoreUrls.test(fileurl)) { - return; - } + keys = keys.filter(function(key) { + return typeof key === 'string'; + }); + if (keys.length === 0) return '[object has no keys]'; - if (!!this._globalOptions.whitelistUrls.test && !this._globalOptions.whitelistUrls.test(fileurl)) { - return; - } + maxLength = typeof maxLength !== 'number' ? MAX_SERIALIZE_KEYS_LENGTH : maxLength; + if (keys[0].length >= maxLength) return keys[0]; - var data = objectMerge({ - // sentry.interfaces.Exception - exception: { - values: [{ - type: type, - value: message, - stacktrace: stacktrace - }] - }, - culprit: fileurl - }, options); // Fire away! + for (var usedKeys = keys.length; usedKeys > 0; usedKeys--) { + var serialized = keys.slice(0, usedKeys).join(', '); + if (serialized.length > maxLength) continue; + if (usedKeys === keys.length) return serialized; + return serialized + '\u2026'; + } - this._send(data); - }, - _trimPacket: function _trimPacket(data) { - // For now, we only want to truncate the two different messages - // but this could/should be expanded to just trim everything - var max = this._globalOptions.maxMessageLength; + return ''; +} - if (data.message) { - data.message = truncate(data.message, max); +function sanitize(input, sanitizeKeys) { + if (!isArray(sanitizeKeys) || (isArray(sanitizeKeys) && sanitizeKeys.length === 0)) + return input; + + var sanitizeRegExp = joinRegExp(sanitizeKeys); + var sanitizeMask = '********'; + var safeInput; + + try { + safeInput = JSON.parse(stringify(input)); + } catch (o_O) { + return input; + } + + function sanitizeWorker(workerInput) { + if (isArray(workerInput)) { + return workerInput.map(function(val) { + return sanitizeWorker(val); + }); } - if (data.exception) { - var exception = data.exception.values[0]; - exception.value = truncate(exception.value, max); + if (isPlainObject(workerInput)) { + return Object.keys(workerInput).reduce(function(acc, k) { + if (sanitizeRegExp.test(k)) { + acc[k] = sanitizeMask; + } else { + acc[k] = sanitizeWorker(workerInput[k]); + } + return acc; + }, {}); } - var request = data.request; + return workerInput; + } - if (request) { - if (request.url) { - request.url = truncate(request.url, this._globalOptions.maxUrlLength); - } + return sanitizeWorker(safeInput); +} - if (request.Referer) { - request.Referer = truncate(request.Referer, this._globalOptions.maxUrlLength); - } - } +module.exports = { + isObject: isObject, + isError: isError, + isErrorEvent: isErrorEvent, + isUndefined: isUndefined, + isFunction: isFunction, + isPlainObject: isPlainObject, + isString: isString, + isArray: isArray, + isEmptyObject: isEmptyObject, + supportsErrorEvent: supportsErrorEvent, + supportsFetch: supportsFetch, + supportsReferrerPolicy: supportsReferrerPolicy, + supportsPromiseRejectionEvent: supportsPromiseRejectionEvent, + wrappedCallback: wrappedCallback, + each: each, + objectMerge: objectMerge, + truncate: truncate, + objectFrozen: objectFrozen, + hasKey: hasKey, + joinRegExp: joinRegExp, + urlencode: urlencode, + uuid4: uuid4, + htmlTreeAsString: htmlTreeAsString, + htmlElementAsString: htmlElementAsString, + isSameException: isSameException, + isSameStacktrace: isSameStacktrace, + parseUrl: parseUrl, + fill: fill, + safeJoin: safeJoin, + serializeException: serializeException, + serializeKeysForMessage: serializeKeysForMessage, + sanitize: sanitize +}; - if (data.breadcrumbs && data.breadcrumbs.values) this._trimBreadcrumbs(data.breadcrumbs); - return data; - }, +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"10":10}],9:[function(_dereq_,module,exports){ +(function (global){ +var utils = _dereq_(8); - /** - * Truncate breadcrumb values (right now just URLs) - */ - _trimBreadcrumbs: function _trimBreadcrumbs(breadcrumbs) { - // known breadcrumb properties with urls - // TODO: also consider arbitrary prop values that start with (https?)?:// - var urlProps = ['to', 'from', 'url'], - urlProp, - crumb, - data; +/* + TraceKit - Cross brower stack traces - for (var i = 0; i < breadcrumbs.values.length; ++i) { - crumb = breadcrumbs.values[i]; - if (!crumb.hasOwnProperty('data') || !isObject(crumb.data) || objectFrozen(crumb.data)) continue; - data = objectMerge({}, crumb.data); + This was originally forked from github.com/occ/TraceKit, but has since been + largely re-written and is now maintained as part of raven-js. Tests for + this are in test/vendor. - for (var j = 0; j < urlProps.length; ++j) { - urlProp = urlProps[j]; + MIT license +*/ - if (data.hasOwnProperty(urlProp) && data[urlProp]) { - data[urlProp] = truncate(data[urlProp], this._globalOptions.maxUrlLength); - } - } +var TraceKit = { + collectWindowErrors: true, + debug: false +}; - breadcrumbs.values[i].data = data; - } - }, - _getHttpData: function _getHttpData() { - if (!this._hasNavigator && !this._hasDocument) return; - var httpData = {}; +// This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) +var _window = + typeof window !== 'undefined' + ? window + : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; - if (this._hasNavigator && _navigator.userAgent) { - httpData.headers = { - 'User-Agent': navigator.userAgent - }; - } // Check in `window` instead of `document`, as we may be in ServiceWorker environment +// global reference to slice +var _slice = [].slice; +var UNKNOWN_FUNCTION = '?'; +// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error#Error_types +var ERROR_TYPES_RE = /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/; - if (_window$1.location && _window$1.location.href) { - httpData.url = _window$1.location.href; - } +function getLocationHref() { + if (typeof document === 'undefined' || document.location == null) return ''; - if (this._hasDocument && _document.referrer) { - if (!httpData.headers) httpData.headers = {}; - httpData.headers.Referer = _document.referrer; - } + return document.location.href; +} - return httpData; - }, - _resetBackoff: function _resetBackoff() { - this._backoffDuration = 0; - this._backoffStart = null; - }, - _shouldBackoff: function _shouldBackoff() { - return this._backoffDuration && now() - this._backoffStart < this._backoffDuration; - }, +/** + * TraceKit.report: cross-browser processing of unhandled exceptions + * + * Syntax: + * TraceKit.report.subscribe(function(stackInfo) { ... }) + * TraceKit.report.unsubscribe(function(stackInfo) { ... }) + * TraceKit.report(exception) + * try { ...code... } catch(ex) { TraceKit.report(ex); } + * + * Supports: + * - Firefox: full stack trace with line numbers, plus column number + * on top frame; column number is not guaranteed + * - Opera: full stack trace with line and column numbers + * - Chrome: full stack trace with line and column numbers + * - Safari: line and column number for the top frame only; some frames + * may be missing, and column number is not guaranteed + * - IE: line and column number for the top frame only; some frames + * may be missing, and column number is not guaranteed + * + * In theory, TraceKit should work on all of the following versions: + * - IE5.5+ (only 8.0 tested) + * - Firefox 0.9+ (only 3.5+ tested) + * - Opera 7+ (only 10.50 tested; versions 9 and earlier may require + * Exceptions Have Stacktrace to be enabled in opera:config) + * - Safari 3+ (only 4+ tested) + * - Chrome 1+ (only 5+ tested) + * - Konqueror 3.5+ (untested) + * + * Requires TraceKit.computeStackTrace. + * + * Tries to catch all unhandled exceptions and report them to the + * subscribed handlers. Please note that TraceKit.report will rethrow the + * exception. This is REQUIRED in order to get a useful stack trace in IE. + * If the exception does not reach the top of the browser, you will only + * get a stack trace from the point where TraceKit.report was called. + * + * Handlers receive a stackInfo object as described in the + * TraceKit.computeStackTrace docs. + */ +TraceKit.report = (function reportModuleWrapper() { + var handlers = [], + lastArgs = null, + lastException = null, + lastExceptionStack = null; /** - * Returns true if the in-process data payload matches the signature - * of the previously-sent data - * - * NOTE: This has to be done at this level because TraceKit can generate - * data from window.onerror WITHOUT an exception object (IE8, IE9, - * other old browsers). This can take the form of an "exception" - * data object with a single frame (derived from the onerror args). + * Add a crash handler. + * @param {Function} handler */ - _isRepeatData: function _isRepeatData(current) { - var last = this._lastData; - if (!last || current.message !== last.message || // defined for captureMessage - current.culprit !== last.culprit // defined for captureException/onerror - ) return false; // Stacktrace interface (i.e. from captureMessage) + function subscribe(handler) { + installGlobalHandler(); + handlers.push(handler); + } - if (current.stacktrace || last.stacktrace) { - return isSameStacktrace(current.stacktrace, last.stacktrace); - } else if (current.exception || last.exception) { - // Exception interface (i.e. from captureException/onerror) - return isSameException(current.exception, last.exception); + /** + * Remove a crash handler. + * @param {Function} handler + */ + function unsubscribe(handler) { + for (var i = handlers.length - 1; i >= 0; --i) { + if (handlers[i] === handler) { + handlers.splice(i, 1); + } } + } - return true; - }, - _setBackoffState: function _setBackoffState(request) { - // If we are already in a backoff state, don't change anything - if (this._shouldBackoff()) { + /** + * Remove all crash handlers. + */ + function unsubscribeAll() { + uninstallGlobalHandler(); + handlers = []; + } + + /** + * Dispatch stack information to all handlers. + * @param {Object.} stack + */ + function notifyHandlers(stack, isWindowError) { + var exception = null; + if (isWindowError && !TraceKit.collectWindowErrors) { return; } + for (var i in handlers) { + if (handlers.hasOwnProperty(i)) { + try { + handlers[i].apply(null, [stack].concat(_slice.call(arguments, 2))); + } catch (inner) { + exception = inner; + } + } + } - var status = request.status; // 400 - project_id doesn't exist or some other fatal - // 401 - invalid/revoked dsn - // 429 - too many requests - - if (!(status === 400 || status === 401 || status === 429)) return; - var retry; - - try { - // If Retry-After is not in Access-Control-Expose-Headers, most - // browsers will throw an exception trying to access it - if (supportsFetch()) { - retry = request.headers.get('Retry-After'); - } else { - retry = request.getResponseHeader('Retry-After'); - } // Retry-After is returned in seconds - - - retry = parseInt(retry, 10) * 1000; - } catch (e) { - /* eslint no-empty:0 */ + if (exception) { + throw exception; } + } - this._backoffDuration = retry ? // If Sentry server returned a Retry-After value, use it - retry : // Otherwise, double the last backoff duration (starts at 1 sec) - this._backoffDuration * 2 || 1000; - this._backoffStart = now(); - }, - _send: function _send(data) { - var globalOptions = this._globalOptions; + var _oldOnerrorHandler, _onErrorHandlerInstalled; - var baseData = { - project: this._globalProject, - logger: globalOptions.logger, - platform: 'javascript' - }, - httpData = this._getHttpData(); + /** + * Ensures all global unhandled exceptions are recorded. + * Supported by Gecko and IE. + * @param {string} msg Error message. + * @param {string} url URL of script that generated the exception. + * @param {(number|string)} lineNo The line number at which the error + * occurred. + * @param {?(number|string)} colNo The column number at which the error + * occurred. + * @param {?Error} ex The actual Error object. + */ + function traceKitWindowOnError(msg, url, lineNo, colNo, ex) { + var stack = null; + // If 'ex' is ErrorEvent, get real Error from inside + var exception = utils.isErrorEvent(ex) ? ex.error : ex; + // If 'msg' is ErrorEvent, get real message from inside + var message = utils.isErrorEvent(msg) ? msg.message : msg; - if (httpData) { - baseData.request = httpData; - } // HACK: delete `trimHeadFrames` to prevent from appearing in outbound payload + if (lastExceptionStack) { + TraceKit.computeStackTrace.augmentStackTraceWithInitialElement( + lastExceptionStack, + url, + lineNo, + message + ); + processLastException(); + } else if (exception && utils.isError(exception)) { + // non-string `exception` arg; attempt to extract stack trace + // New chrome and blink send along a real error object + // Let's just report that like a normal error. + // See: https://mikewest.org/2013/08/debugging-runtime-errors-with-window-onerror + stack = TraceKit.computeStackTrace(exception); + notifyHandlers(stack, true); + } else { + var location = { + url: url, + line: lineNo, + column: colNo + }; - if (data.trimHeadFrames) delete data.trimHeadFrames; - data = objectMerge(baseData, data); // Merge in the tags and extra separately since objectMerge doesn't handle a deep merge + var name = undefined; + var groups; - data.tags = objectMerge(objectMerge({}, this._globalContext.tags), data.tags); - data.extra = objectMerge(objectMerge({}, this._globalContext.extra), data.extra); // Send along our own collected metadata with extra + if ({}.toString.call(message) === '[object String]') { + var groups = message.match(ERROR_TYPES_RE); + if (groups) { + name = groups[1]; + message = groups[2]; + } + } - data.extra['session:duration'] = now() - this._startTime; + location.func = UNKNOWN_FUNCTION; - if (this._breadcrumbs && this._breadcrumbs.length > 0) { - // intentionally make shallow copy so that additions - // to breadcrumbs aren't accidentally sent in this request - data.breadcrumbs = { - values: [].slice.call(this._breadcrumbs, 0) + stack = { + name: name, + message: message, + url: getLocationHref(), + stack: [location] }; + notifyHandlers(stack, true); } - if (this._globalContext.user) { - // sentry.interfaces.User - data.user = this._globalContext.user; - } // Include the environment if it's defined in globalOptions - - - if (globalOptions.environment) data.environment = globalOptions.environment; // Include the release if it's defined in globalOptions - - if (globalOptions.release) data.release = globalOptions.release; // Include server_name if it's defined in globalOptions - - if (globalOptions.serverName) data.server_name = globalOptions.serverName; // Cleanup empty properties before sending them to the server - - Object.keys(data).forEach(function (key) { - if (data[key] == null || data[key] === '' || isEmptyObject(data[key])) { - delete data[key]; - } - }); - - if (isFunction(globalOptions.dataCallback)) { - data = globalOptions.dataCallback(data) || data; - } // Why?????????? - - - if (!data || isEmptyObject(data)) { - return; - } // Check if the request should be filtered or not - - - if (isFunction(globalOptions.shouldSendCallback) && !globalOptions.shouldSendCallback(data)) { - return; - } // Backoff state: Sentry server previously responded w/ an error (e.g. 429 - too many requests), - // so drop requests until "cool-off" period has elapsed. - + if (_oldOnerrorHandler) { + return _oldOnerrorHandler.apply(this, arguments); + } - if (this._shouldBackoff()) { - this._logDebug('warn', 'Raven dropped error due to backoff: ', data); + return false; + } + function installGlobalHandler() { + if (_onErrorHandlerInstalled) { return; } + _oldOnerrorHandler = _window.onerror; + _window.onerror = traceKitWindowOnError; + _onErrorHandlerInstalled = true; + } - if (typeof globalOptions.sampleRate === 'number') { - if (Math.random() < globalOptions.sampleRate) { - this._sendProcessedPayload(data); - } - } else { - this._sendProcessedPayload(data); - } - }, - _getUuid: function _getUuid() { - return uuid4(); - }, - _sendProcessedPayload: function _sendProcessedPayload(data, callback) { - var self = this; - var globalOptions = this._globalOptions; - if (!this.isSetup()) return; // Try and clean up the packet before sending by truncating long values - - data = this._trimPacket(data); // ideally duplicate error testing should occur *before* dataCallback/shouldSendCallback, - // but this would require copying an un-truncated copy of the data packet, which can be - // arbitrarily deep (extra_data) -- could be worthwhile? will revisit - - if (!this._globalOptions.allowDuplicates && this._isRepeatData(data)) { - this._logDebug('warn', 'Raven dropped repeat event: ', data); - + function uninstallGlobalHandler() { + if (!_onErrorHandlerInstalled) { return; - } // Send along an event_id if not explicitly passed. - // This event_id can be used to reference the error within Sentry itself. - // Set lastEventId after we know the error should actually be sent - - - this._lastEventId = data.event_id || (data.event_id = this._getUuid()); // Store outbound payload after trim - - this._lastData = data; - - this._logDebug('debug', 'Raven about to send:', data); + } + _window.onerror = _oldOnerrorHandler; + _onErrorHandlerInstalled = false; + _oldOnerrorHandler = undefined; + } - var auth = { - sentry_version: '7', - sentry_client: 'raven-js/' + this.VERSION, - sentry_key: this._globalKey - }; + function processLastException() { + var _lastExceptionStack = lastExceptionStack, + _lastArgs = lastArgs; + lastArgs = null; + lastExceptionStack = null; + lastException = null; + notifyHandlers.apply(null, [_lastExceptionStack, false].concat(_lastArgs)); + } - if (this._globalSecret) { - auth.sentry_secret = this._globalSecret; + /** + * Reports an unhandled Error to TraceKit. + * @param {Error} ex + * @param {?boolean} rethrow If false, do not re-throw the exception. + * Only used for window.onerror to not cause an infinite loop of + * rethrowing. + */ + function report(ex, rethrow) { + var args = _slice.call(arguments, 1); + if (lastExceptionStack) { + if (lastException === ex) { + return; // already caught by an inner catch block, ignore + } else { + processLastException(); + } } - var exception = data.exception && data.exception.values[0]; // only capture 'sentry' breadcrumb is autoBreadcrumbs is truthy + var stack = TraceKit.computeStackTrace(ex); + lastExceptionStack = stack; + lastException = ex; + lastArgs = args; - if (this._globalOptions.autoBreadcrumbs && this._globalOptions.autoBreadcrumbs.sentry) { - this.captureBreadcrumb({ - category: 'sentry', - message: exception ? (exception.type ? exception.type + ': ' : '') + exception.value : data.message, - event_id: data.event_id, - level: data.level || 'error' // presume error unless specified + // If the stack trace is incomplete, wait for 2 seconds for + // slow slow IE to see if onerror occurs or not before reporting + // this exception; otherwise, we will end up with an incomplete + // stack trace + setTimeout(function() { + if (lastException === ex) { + processLastException(); + } + }, stack.incomplete ? 2000 : 0); - }); + if (rethrow !== false) { + throw ex; // re-throw to propagate to the top level (and cause window.onerror) } + } - var url = this._globalEndpoint; + report.subscribe = subscribe; + report.unsubscribe = unsubscribe; + report.uninstall = unsubscribeAll; + return report; +})(); - (globalOptions.transport || this._makeRequest).call(this, { - url: url, - auth: auth, - data: data, - options: globalOptions, - onSuccess: function success() { - self._resetBackoff(); +/** + * TraceKit.computeStackTrace: cross-browser stack traces in JavaScript + * + * Syntax: + * s = TraceKit.computeStackTrace(exception) // consider using TraceKit.report instead (see below) + * Returns: + * s.name - exception name + * s.message - exception message + * s.stack[i].url - JavaScript or HTML file URL + * s.stack[i].func - function name, or empty for anonymous functions (if guessing did not work) + * s.stack[i].args - arguments passed to the function, if known + * s.stack[i].line - line number, if known + * s.stack[i].column - column number, if known + * + * Supports: + * - Firefox: full stack trace with line numbers and unreliable column + * number on top frame + * - Opera 10: full stack trace with line and column numbers + * - Opera 9-: full stack trace with line numbers + * - Chrome: full stack trace with line and column numbers + * - Safari: line and column number for the topmost stacktrace element + * only + * - IE: no line numbers whatsoever + * + * Tries to guess names of anonymous functions by looking for assignments + * in the source code. In IE and Safari, we have to guess source file names + * by searching for function bodies inside all page scripts. This will not + * work for scripts that are loaded cross-domain. + * Here be dragons: some function names may be guessed incorrectly, and + * duplicate functions may be mismatched. + * + * TraceKit.computeStackTrace should only be used for tracing purposes. + * Logging of unhandled exceptions should be done with TraceKit.report, + * which builds on top of TraceKit.computeStackTrace and provides better + * IE support by utilizing the window.onerror event to retrieve information + * about the top of the stack. + * + * Note: In IE and Safari, no stack trace is recorded on the Error object, + * so computeStackTrace instead walks its *own* chain of callers. + * This means that: + * * in Safari, some methods may be missing from the stack trace; + * * in IE, the topmost function in the stack trace will always be the + * caller of computeStackTrace. + * + * This is okay for tracing (because you are likely to be calling + * computeStackTrace from the function you want to be the topmost element + * of the stack trace anyway), but not okay for logging unhandled + * exceptions (because your catch block will likely be far away from the + * inner function that actually caused the exception). + * + */ +TraceKit.computeStackTrace = (function computeStackTraceWrapper() { + // Contents of Exception in various browsers. + // + // SAFARI: + // ex.message = Can't find variable: qq + // ex.line = 59 + // ex.sourceId = 580238192 + // ex.sourceURL = http://... + // ex.expressionBeginOffset = 96 + // ex.expressionCaretOffset = 98 + // ex.expressionEndOffset = 98 + // ex.name = ReferenceError + // + // FIREFOX: + // ex.message = qq is not defined + // ex.fileName = http://... + // ex.lineNumber = 59 + // ex.columnNumber = 69 + // ex.stack = ...stack trace... (see the example below) + // ex.name = ReferenceError + // + // CHROME: + // ex.message = qq is not defined + // ex.name = ReferenceError + // ex.type = not_defined + // ex.arguments = ['aa'] + // ex.stack = ...stack trace... + // + // INTERNET EXPLORER: + // ex.message = ... + // ex.name = ReferenceError + // + // OPERA: + // ex.message = ...message... (see the example below) + // ex.name = ReferenceError + // ex.opera#sourceloc = 11 (pretty much useless, duplicates the info in ex.message) + // ex.stacktrace = n/a; see 'opera:config#UserPrefs|Exceptions Have Stacktrace' - self._triggerEvent('success', { - data: data, - src: url - }); + /** + * Computes stack trace information from the stack property. + * Chrome and Gecko use this property. + * @param {Error} ex + * @return {?Object.} Stack trace information. + */ + function computeStackTraceFromStackProp(ex) { + if (typeof ex.stack === 'undefined' || !ex.stack) return; - callback && callback(); - }, - onError: function failure(error) { - self._logDebug('error', 'Raven transport failed to send: ', error); + var chrome = /^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i; + var winjs = /^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i; + // NOTE: blob urls are now supposed to always have an origin, therefore it's format + // which is `blob:http://url/path/with-some-uuid`, is matched by `blob.*?:\/` as well + var gecko = /^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i; + // Used to additionally parse URL/line/column from eval frames + var geckoEval = /(\S+) line (\d+)(?: > eval line \d+)* > eval/i; + var chromeEval = /\((\S*)(?::(\d+))(?::(\d+))\)/; + var lines = ex.stack.split('\n'); + var stack = []; + var submatch; + var parts; + var element; + var reference = /^(.*) is undefined$/.exec(ex.message); - if (error.request) { - self._setBackoffState(error.request); + for (var i = 0, j = lines.length; i < j; ++i) { + if ((parts = chrome.exec(lines[i]))) { + var isNative = parts[2] && parts[2].indexOf('native') === 0; // start of line + var isEval = parts[2] && parts[2].indexOf('eval') === 0; // start of line + if (isEval && (submatch = chromeEval.exec(parts[2]))) { + // throw out eval line/column and use top-most line/column number + parts[2] = submatch[1]; // url + parts[3] = submatch[2]; // line + parts[4] = submatch[3]; // column } + element = { + url: !isNative ? parts[2] : null, + func: parts[1] || UNKNOWN_FUNCTION, + args: isNative ? [parts[2]] : [], + line: parts[3] ? +parts[3] : null, + column: parts[4] ? +parts[4] : null + }; + } else if ((parts = winjs.exec(lines[i]))) { + element = { + url: parts[2], + func: parts[1] || UNKNOWN_FUNCTION, + args: [], + line: +parts[3], + column: parts[4] ? +parts[4] : null + }; + } else if ((parts = gecko.exec(lines[i]))) { + var isEval = parts[3] && parts[3].indexOf(' > eval') > -1; + if (isEval && (submatch = geckoEval.exec(parts[3]))) { + // throw out eval line/column and use top-most line number + parts[3] = submatch[1]; + parts[4] = submatch[2]; + parts[5] = null; // no column when eval + } else if (i === 0 && !parts[5] && typeof ex.columnNumber !== 'undefined') { + // FireFox uses this awesome columnNumber property for its top frame + // Also note, Firefox's column number is 0-based and everything else expects 1-based, + // so adding 1 + // NOTE: this hack doesn't work if top-most frame is eval + stack[0].column = ex.columnNumber + 1; + } + element = { + url: parts[3], + func: parts[1] || UNKNOWN_FUNCTION, + args: parts[2] ? parts[2].split(',') : [], + line: parts[4] ? +parts[4] : null, + column: parts[5] ? +parts[5] : null + }; + } else { + continue; + } - self._triggerEvent('failure', { - data: data, - src: url - }); - - error = error || new Error('Raven send failed (no additional details provided)'); - callback && callback(error); + if (!element.func && element.line) { + element.func = UNKNOWN_FUNCTION; } - }); - }, - _makeRequest: function _makeRequest(opts) { - // Auth is intentionally sent as part of query string (NOT as custom HTTP header) to avoid preflight CORS requests - var url = opts.url + '?' + urlencode(opts.auth); - var evaluatedHeaders = null; - var evaluatedFetchParameters = {}; - if (opts.options.headers) { - evaluatedHeaders = this._evaluateHash(opts.options.headers); + stack.push(element); } - if (opts.options.fetchParameters) { - evaluatedFetchParameters = this._evaluateHash(opts.options.fetchParameters); + if (!stack.length) { + return null; } - if (supportsFetch()) { - evaluatedFetchParameters.body = stringify_1(opts.data); - var defaultFetchOptions = objectMerge({}, this._fetchDefaults); - var fetchOptions = objectMerge(defaultFetchOptions, evaluatedFetchParameters); + return { + name: ex.name, + message: ex.message, + url: getLocationHref(), + stack: stack + }; + } - if (evaluatedHeaders) { - fetchOptions.headers = evaluatedHeaders; - } + /** + * Adds information about the first frame to incomplete stack traces. + * Safari and IE require this to get complete data on the first frame. + * @param {Object.} stackInfo Stack trace information from + * one of the compute* methods. + * @param {string} url The URL of the script that caused an error. + * @param {(number|string)} lineNo The line number of the script that + * caused an error. + * @param {string=} message The error generated by the browser, which + * hopefully contains the name of the object that caused the error. + * @return {boolean} Whether or not the stack information was + * augmented. + */ + function augmentStackTraceWithInitialElement(stackInfo, url, lineNo, message) { + var initial = { + url: url, + line: lineNo + }; - return _window$1.fetch(url, fetchOptions).then(function (response) { - if (response.ok) { - opts.onSuccess && opts.onSuccess(); - } else { - var error = new Error('Sentry error code: ' + response.status); // It's called request only to keep compatibility with XHR interface - // and not add more redundant checks in setBackoffState method + if (initial.url && initial.line) { + stackInfo.incomplete = false; + + if (!initial.func) { + initial.func = UNKNOWN_FUNCTION; + } - error.request = response; - opts.onError && opts.onError(error); + if (stackInfo.stack.length > 0) { + if (stackInfo.stack[0].url === initial.url) { + if (stackInfo.stack[0].line === initial.line) { + return false; // already in stack trace + } else if ( + !stackInfo.stack[0].line && + stackInfo.stack[0].func === initial.func + ) { + stackInfo.stack[0].line = initial.line; + return false; + } } - })['catch'](function () { - opts.onError && opts.onError(new Error('Sentry error code: network unavailable')); - }); - } + } - var request = _window$1.XMLHttpRequest && new _window$1.XMLHttpRequest(); - if (!request) return; // if browser doesn't support CORS (e.g. IE7), we are out of luck + stackInfo.stack.unshift(initial); + stackInfo.partial = true; + return true; + } else { + stackInfo.incomplete = true; + } - var hasCORS = 'withCredentials' in request || typeof XDomainRequest !== 'undefined'; - if (!hasCORS) return; + return false; + } - if ('withCredentials' in request) { - request.onreadystatechange = function () { - if (request.readyState !== 4) { - return; - } else if (request.status === 200) { - opts.onSuccess && opts.onSuccess(); - } else if (opts.onError) { - var err = new Error('Sentry error code: ' + request.status); - err.request = request; - opts.onError(err); - } + /** + * Computes stack trace information by walking the arguments.caller + * chain at the time the exception occurred. This will cause earlier + * frames to be missed but is the only way to get any stack trace in + * Safari and IE. The top frame is restored by + * {@link augmentStackTraceWithInitialElement}. + * @param {Error} ex + * @return {?Object.} Stack trace information. + */ + function computeStackTraceByWalkingCallerChain(ex, depth) { + var functionName = /function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i, + stack = [], + funcs = {}, + recursion = false, + parts, + item, + source; + + for ( + var curr = computeStackTraceByWalkingCallerChain.caller; + curr && !recursion; + curr = curr.caller + ) { + if (curr === computeStackTrace || curr === TraceKit.report) { + // console.log('skipping internal function'); + continue; + } + + item = { + url: null, + func: UNKNOWN_FUNCTION, + line: null, + column: null }; - } else { - request = new XDomainRequest(); // xdomainrequest cannot go http -> https (or vice versa), - // so always use protocol relative - url = url.replace(/^https?:/, ''); // onreadystatechange not supported by XDomainRequest + if (curr.name) { + item.func = curr.name; + } else if ((parts = functionName.exec(curr.toString()))) { + item.func = parts[1]; + } - if (opts.onSuccess) { - request.onload = opts.onSuccess; + if (typeof item.func === 'undefined') { + try { + item.func = parts.input.substring(0, parts.input.indexOf('{')); + } catch (e) {} } - if (opts.onError) { - request.onerror = function () { - var err = new Error('Sentry error code: XDomainRequest'); - err.request = request; - opts.onError(err); - }; + if (funcs['' + curr]) { + recursion = true; + } else { + funcs['' + curr] = true; } - } - request.open('POST', url); + stack.push(item); + } - if (evaluatedHeaders) { - each(evaluatedHeaders, function (key, value) { - request.setRequestHeader(key, value); - }); + if (depth) { + // console.log('depth is ' + depth); + // console.log('stack is ' + stack.length); + stack.splice(0, depth); } - request.send(stringify_1(opts.data)); - }, - _evaluateHash: function _evaluateHash(hash) { - var evaluated = {}; + var result = { + name: ex.name, + message: ex.message, + url: getLocationHref(), + stack: stack + }; + augmentStackTraceWithInitialElement( + result, + ex.sourceURL || ex.fileName, + ex.line || ex.lineNumber, + ex.message || ex.description + ); + return result; + } - for (var key in hash) { - if (hash.hasOwnProperty(key)) { - var value = hash[key]; - evaluated[key] = typeof value === 'function' ? value() : value; + /** + * Computes a stack trace for an exception. + * @param {Error} ex + * @param {(string|number)=} depth + */ + function computeStackTrace(ex, depth) { + var stack = null; + depth = depth == null ? 0 : +depth; + + try { + stack = computeStackTraceFromStackProp(ex); + if (stack) { + return stack; + } + } catch (e) { + if (TraceKit.debug) { + throw e; } } - return evaluated; - }, - _logDebug: function _logDebug(level) { - if (this._originalConsoleMethods[level] && this.debug) { - // In IE<10 console methods do not have their own 'apply' method - Function.prototype.apply.call(this._originalConsoleMethods[level], this._originalConsole, [].slice.call(arguments, 1)); - } - }, - _mergeContext: function _mergeContext(key, context) { - if (isUndefined(context)) { - delete this._globalContext[key]; - } else { - this._globalContext[key] = objectMerge(this._globalContext[key] || {}, context); + try { + stack = computeStackTraceByWalkingCallerChain(ex, depth + 1); + if (stack) { + return stack; + } + } catch (e) { + if (TraceKit.debug) { + throw e; + } } + return { + name: ex.name, + message: ex.message, + url: getLocationHref() + }; } -}; // Deprecations -Raven$1.prototype.setUser = Raven$1.prototype.setUserContext; -Raven$1.prototype.setReleaseContext = Raven$1.prototype.setRelease; -var raven = Raven$1; + computeStackTrace.augmentStackTraceWithInitialElement = augmentStackTraceWithInitialElement; + computeStackTrace.computeStackTraceFromStackProp = computeStackTraceFromStackProp; -/** - * Enforces a single instance of the Raven client, and the - * main entry point for Raven. If you are a consumer of the - * Raven library, you SHOULD load this file (vs raven.js). - **/ -// This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) + return computeStackTrace; +})(); -var _window = typeof window !== 'undefined' ? window : typeof commonjsGlobal !== 'undefined' ? commonjsGlobal : typeof self !== 'undefined' ? self : {}; +module.exports = TraceKit; -var _Raven = _window.Raven; -var Raven = new raven(); +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"8":8}],10:[function(_dereq_,module,exports){ /* - * Allow multiple versions of Raven to be installed. - * Strip Raven from the global context and returns the instance. - * - * @return {Raven} - */ - -Raven.noConflict = function () { - _window.Raven = _Raven; - return Raven; -}; - -Raven.afterLoad(); -var singleton = Raven; - -/** - * Angular.js plugin - * - * Provides an $exceptionHandler for Angular.js - */ + json-stringify-safe + Like JSON.stringify, but doesn't throw on circular references. -var wrappedCallback$1 = utils.wrappedCallback; // See https://github.com/angular/angular.js/blob/v1.4.7/src/minErr.js + Originally forked from https://github.com/isaacs/json-stringify-safe + version 5.0.1 on 3/8/2017 and modified to handle Errors serialization + and IE8 compatibility. Tests for this are in test/vendor. -var angularPattern = /^\[((?:[$a-zA-Z0-9]+:)?(?:[$a-zA-Z0-9]+))\] (.*?)\n?(\S+)$/; -var moduleName = 'ngRaven'; + ISC license: https://github.com/isaacs/json-stringify-safe/blob/master/LICENSE +*/ -function angularPlugin(Raven, angular) { - angular = angular || window.angular; - if (!angular) return; +exports = module.exports = stringify; +exports.getSerialize = serializer; - function RavenProvider() { - this.$get = ['$window', function ($window) { - return Raven; - }]; +function indexOf(haystack, needle) { + for (var i = 0; i < haystack.length; ++i) { + if (haystack[i] === needle) return i; } + return -1; +} - function ExceptionHandlerProvider($provide) { - $provide.decorator('$exceptionHandler', ['Raven', '$delegate', exceptionHandler]); - } +function stringify(obj, replacer, spaces, cycleReplacer) { + return JSON.stringify(obj, serializer(replacer, cycleReplacer), spaces); +} - function exceptionHandler(R, $delegate) { - return function (ex, cause) { - R.captureException(ex, { - extra: { - cause: cause - } - }); - $delegate(ex, cause); - }; +// https://github.com/ftlabs/js-abbreviate/blob/fa709e5f139e7770a71827b1893f22418097fbda/index.js#L95-L106 +function stringifyError(value) { + var err = { + // These properties are implemented as magical getters and don't show up in for in + stack: value.stack, + message: value.message, + name: value.name + }; + + for (var i in value) { + if (Object.prototype.hasOwnProperty.call(value, i)) { + err[i] = value[i]; + } } - angular.module(moduleName, []).provider('Raven', RavenProvider).config(['$provide', ExceptionHandlerProvider]); - Raven.setDataCallback(wrappedCallback$1(function (data) { - return angularPlugin._normalizeData(data); - })); + return err; } -angularPlugin._normalizeData = function (data) { - // We only care about mutating an exception - var exception = data.exception; +function serializer(replacer, cycleReplacer) { + var stack = []; + var keys = []; - if (exception) { - exception = exception.values[0]; - var matches = angularPattern.exec(exception.value); + if (cycleReplacer == null) { + cycleReplacer = function(key, value) { + if (stack[0] === value) { + return '[Circular ~]'; + } + return '[Circular ~.' + keys.slice(0, indexOf(stack, value)).join('.') + ']'; + }; + } - if (matches) { - // This type now becomes something like: $rootScope:inprog - exception.type = matches[1]; - exception.value = matches[2]; - data.message = exception.type + ': ' + exception.value; // auto set a new tag specifically for the angular error url + return function(key, value) { + if (stack.length > 0) { + var thisPos = indexOf(stack, this); + ~thisPos ? stack.splice(thisPos + 1) : stack.push(this); + ~thisPos ? keys.splice(thisPos, Infinity, key) : keys.push(key); - data.extra.angularDocs = matches[3].substr(0, 250); + if (~indexOf(stack, value)) { + value = cycleReplacer.call(this, key, value); + } + } else { + stack.push(value); } - } - - return data; -}; -angularPlugin.moduleName = moduleName; -var angular = angularPlugin; + return replacer == null + ? value instanceof Error ? stringifyError(value) : value + : replacer.call(this, key, value); + }; +} -/** - * console plugin +},{}],11:[function(_dereq_,module,exports){ +/* + * JavaScript MD5 + * https://github.com/blueimp/JavaScript-MD5 * - * Monkey patches console.* calls into Sentry messages with - * their appropriate log levels. (Experimental) + * Copyright 2011, Sebastian Tschan + * https://blueimp.net * - * Options: + * Licensed under the MIT license: + * https://opensource.org/licenses/MIT * - * `levels`: An array of levels (methods on `console`) to report to Sentry. - * Defaults to debug, info, warn, and error. + * Based on + * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message + * Digest Algorithm, as defined in RFC 1321. + * Version 2.2 Copyright (C) Paul Johnston 1999 - 2009 + * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet + * Distributed under the BSD License + * See http://pajhome.org.uk/crypt/md5 for more info. */ -var wrapConsoleMethod$1 = console$1.wrapMethod; - -function consolePlugin(Raven, console, pluginOptions) { - console = console || window.console || {}; - pluginOptions = pluginOptions || {}; - var logLevels = pluginOptions.levels || ['debug', 'info', 'warn', 'error']; - if ('assert' in console) logLevels.push('assert'); +/* +* Add integers, wrapping at 2^32. This uses 16-bit operations internally +* to work around bugs in some JS interpreters. +*/ +function safeAdd(x, y) { + var lsw = (x & 0xffff) + (y & 0xffff); + var msw = (x >> 16) + (y >> 16) + (lsw >> 16); + return (msw << 16) | (lsw & 0xffff); +} - var callback = function callback(msg, data) { - Raven.captureMessage(msg, data); - }; +/* +* Bitwise rotate a 32-bit number to the left. +*/ +function bitRotateLeft(num, cnt) { + return (num << cnt) | (num >>> (32 - cnt)); +} - var level = logLevels.pop(); +/* +* These functions implement the four basic operations the algorithm uses. +*/ +function md5cmn(q, a, b, x, s, t) { + return safeAdd(bitRotateLeft(safeAdd(safeAdd(a, q), safeAdd(x, t)), s), b); +} +function md5ff(a, b, c, d, x, s, t) { + return md5cmn((b & c) | (~b & d), a, b, x, s, t); +} +function md5gg(a, b, c, d, x, s, t) { + return md5cmn((b & d) | (c & ~d), a, b, x, s, t); +} +function md5hh(a, b, c, d, x, s, t) { + return md5cmn(b ^ c ^ d, a, b, x, s, t); +} +function md5ii(a, b, c, d, x, s, t) { + return md5cmn(c ^ (b | ~d), a, b, x, s, t); +} - while (level) { - wrapConsoleMethod$1(console, level, callback); - level = logLevels.pop(); +/* +* Calculate the MD5 of an array of little-endian words, and a bit length. +*/ +function binlMD5(x, len) { + /* append padding */ + x[len >> 5] |= 0x80 << (len % 32); + x[(((len + 64) >>> 9) << 4) + 14] = len; + + var i; + var olda; + var oldb; + var oldc; + var oldd; + var a = 1732584193; + var b = -271733879; + var c = -1732584194; + var d = 271733878; + + for (i = 0; i < x.length; i += 16) { + olda = a; + oldb = b; + oldc = c; + oldd = d; + + a = md5ff(a, b, c, d, x[i], 7, -680876936); + d = md5ff(d, a, b, c, x[i + 1], 12, -389564586); + c = md5ff(c, d, a, b, x[i + 2], 17, 606105819); + b = md5ff(b, c, d, a, x[i + 3], 22, -1044525330); + a = md5ff(a, b, c, d, x[i + 4], 7, -176418897); + d = md5ff(d, a, b, c, x[i + 5], 12, 1200080426); + c = md5ff(c, d, a, b, x[i + 6], 17, -1473231341); + b = md5ff(b, c, d, a, x[i + 7], 22, -45705983); + a = md5ff(a, b, c, d, x[i + 8], 7, 1770035416); + d = md5ff(d, a, b, c, x[i + 9], 12, -1958414417); + c = md5ff(c, d, a, b, x[i + 10], 17, -42063); + b = md5ff(b, c, d, a, x[i + 11], 22, -1990404162); + a = md5ff(a, b, c, d, x[i + 12], 7, 1804603682); + d = md5ff(d, a, b, c, x[i + 13], 12, -40341101); + c = md5ff(c, d, a, b, x[i + 14], 17, -1502002290); + b = md5ff(b, c, d, a, x[i + 15], 22, 1236535329); + + a = md5gg(a, b, c, d, x[i + 1], 5, -165796510); + d = md5gg(d, a, b, c, x[i + 6], 9, -1069501632); + c = md5gg(c, d, a, b, x[i + 11], 14, 643717713); + b = md5gg(b, c, d, a, x[i], 20, -373897302); + a = md5gg(a, b, c, d, x[i + 5], 5, -701558691); + d = md5gg(d, a, b, c, x[i + 10], 9, 38016083); + c = md5gg(c, d, a, b, x[i + 15], 14, -660478335); + b = md5gg(b, c, d, a, x[i + 4], 20, -405537848); + a = md5gg(a, b, c, d, x[i + 9], 5, 568446438); + d = md5gg(d, a, b, c, x[i + 14], 9, -1019803690); + c = md5gg(c, d, a, b, x[i + 3], 14, -187363961); + b = md5gg(b, c, d, a, x[i + 8], 20, 1163531501); + a = md5gg(a, b, c, d, x[i + 13], 5, -1444681467); + d = md5gg(d, a, b, c, x[i + 2], 9, -51403784); + c = md5gg(c, d, a, b, x[i + 7], 14, 1735328473); + b = md5gg(b, c, d, a, x[i + 12], 20, -1926607734); + + a = md5hh(a, b, c, d, x[i + 5], 4, -378558); + d = md5hh(d, a, b, c, x[i + 8], 11, -2022574463); + c = md5hh(c, d, a, b, x[i + 11], 16, 1839030562); + b = md5hh(b, c, d, a, x[i + 14], 23, -35309556); + a = md5hh(a, b, c, d, x[i + 1], 4, -1530992060); + d = md5hh(d, a, b, c, x[i + 4], 11, 1272893353); + c = md5hh(c, d, a, b, x[i + 7], 16, -155497632); + b = md5hh(b, c, d, a, x[i + 10], 23, -1094730640); + a = md5hh(a, b, c, d, x[i + 13], 4, 681279174); + d = md5hh(d, a, b, c, x[i], 11, -358537222); + c = md5hh(c, d, a, b, x[i + 3], 16, -722521979); + b = md5hh(b, c, d, a, x[i + 6], 23, 76029189); + a = md5hh(a, b, c, d, x[i + 9], 4, -640364487); + d = md5hh(d, a, b, c, x[i + 12], 11, -421815835); + c = md5hh(c, d, a, b, x[i + 15], 16, 530742520); + b = md5hh(b, c, d, a, x[i + 2], 23, -995338651); + + a = md5ii(a, b, c, d, x[i], 6, -198630844); + d = md5ii(d, a, b, c, x[i + 7], 10, 1126891415); + c = md5ii(c, d, a, b, x[i + 14], 15, -1416354905); + b = md5ii(b, c, d, a, x[i + 5], 21, -57434055); + a = md5ii(a, b, c, d, x[i + 12], 6, 1700485571); + d = md5ii(d, a, b, c, x[i + 3], 10, -1894986606); + c = md5ii(c, d, a, b, x[i + 10], 15, -1051523); + b = md5ii(b, c, d, a, x[i + 1], 21, -2054922799); + a = md5ii(a, b, c, d, x[i + 8], 6, 1873313359); + d = md5ii(d, a, b, c, x[i + 15], 10, -30611744); + c = md5ii(c, d, a, b, x[i + 6], 15, -1560198380); + b = md5ii(b, c, d, a, x[i + 13], 21, 1309151649); + a = md5ii(a, b, c, d, x[i + 4], 6, -145523070); + d = md5ii(d, a, b, c, x[i + 11], 10, -1120210379); + c = md5ii(c, d, a, b, x[i + 2], 15, 718787259); + b = md5ii(b, c, d, a, x[i + 9], 21, -343485551); + + a = safeAdd(a, olda); + b = safeAdd(b, oldb); + c = safeAdd(c, oldc); + d = safeAdd(d, oldd); } + return [a, b, c, d]; } -var console$3 = consolePlugin; - -/** - * Ember.js plugin - * - * Patches event handler callbacks and ajax callbacks. - */ -function emberPlugin(Raven, Ember) { - Ember = Ember || window.Ember; // quit if Ember isn't on the page +/* +* Convert an array of little-endian words to a string +*/ +function binl2rstr(input) { + var i; + var output = ''; + var length32 = input.length * 32; + for (i = 0; i < length32; i += 8) { + output += String.fromCharCode((input[i >> 5] >>> (i % 32)) & 0xff); + } + return output; +} - if (!Ember) return; - var _oldOnError = Ember.onerror; +/* +* Convert a raw string to an array of little-endian words +* Characters >255 have their high-byte silently ignored. +*/ +function rstr2binl(input) { + var i; + var output = []; + output[(input.length >> 2) - 1] = undefined; + for (i = 0; i < output.length; i += 1) { + output[i] = 0; + } + var length8 = input.length * 8; + for (i = 0; i < length8; i += 8) { + output[i >> 5] |= (input.charCodeAt(i / 8) & 0xff) << (i % 32); + } + return output; +} - Ember.onerror = function EmberOnError(error) { - Raven.captureException(error); +/* +* Calculate the MD5 of a raw string +*/ +function rstrMD5(s) { + return binl2rstr(binlMD5(rstr2binl(s), s.length * 8)); +} - if (typeof _oldOnError === 'function') { - _oldOnError.call(this, error); - } - }; +/* +* Calculate the HMAC-MD5, of a key and some data (raw strings) +*/ +function rstrHMACMD5(key, data) { + var i; + var bkey = rstr2binl(key); + var ipad = []; + var opad = []; + var hash; + ipad[15] = opad[15] = undefined; + if (bkey.length > 16) { + bkey = binlMD5(bkey, key.length * 8); + } + for (i = 0; i < 16; i += 1) { + ipad[i] = bkey[i] ^ 0x36363636; + opad[i] = bkey[i] ^ 0x5c5c5c5c; + } + hash = binlMD5(ipad.concat(rstr2binl(data)), 512 + data.length * 8); + return binl2rstr(binlMD5(opad.concat(hash), 512 + 128)); +} - Ember.RSVP.on('error', function (reason) { - if (reason instanceof Error) { - Raven.captureException(reason, { - extra: { - context: 'Unhandled Promise error detected' - } - }); - } else { - Raven.captureMessage('Unhandled Promise error detected', { - extra: { - reason: reason - } - }); - } - }); +/* +* Convert a raw string to a hex string +*/ +function rstr2hex(input) { + var hexTab = '0123456789abcdef'; + var output = ''; + var x; + var i; + for (i = 0; i < input.length; i += 1) { + x = input.charCodeAt(i); + output += hexTab.charAt((x >>> 4) & 0x0f) + hexTab.charAt(x & 0x0f); + } + return output; } -var ember = emberPlugin; +/* +* Encode a string as utf-8 +*/ +function str2rstrUTF8(input) { + return unescape(encodeURIComponent(input)); +} -/* This file was generated by './scripts/generate-plugin-combinations.js'! */ +/* +* Take string arguments and return either raw or hex encoded strings +*/ +function rawMD5(s) { + return rstrMD5(str2rstrUTF8(s)); +} +function hexMD5(s) { + return rstr2hex(rawMD5(s)); +} +function rawHMACMD5(k, d) { + return rstrHMACMD5(str2rstrUTF8(k), str2rstrUTF8(d)); +} +function hexHMACMD5(k, d) { + return rstr2hex(rawHMACMD5(k, d)); +} -singleton.addPlugin(angular).addPlugin(console$3).addPlugin(ember); -var angular_console_ember = {}; +function md5(string, key, raw) { + if (!key) { + if (!raw) { + return hexMD5(string); + } + return rawMD5(string); + } + if (!raw) { + return hexHMACMD5(key, string); + } + return rawHMACMD5(key, string); +} -return angular_console_ember; +module.exports = md5; -}))); +},{}]},{},[7,1,2,3])(7) +}); \ No newline at end of file diff --git a/dist/angular,console,ember/raven.min.js b/dist/angular,console,ember/raven.min.js index 0be858a19eac..ba2abed2c13e 100644 --- a/dist/angular,console,ember/raven.min.js +++ b/dist/angular,console,ember/raven.min.js @@ -1,3 +1,4 @@ -/*! Raven.js 3.22.2 (1b6187b) | github.com/getsentry/raven-js */ -!function(a,b){"object"==typeof exports&&"undefined"!=typeof module?module.exports=b():"function"==typeof define&&define.amd?define(b):a.Raven=b()}(this,function(){"use strict";function a(a,b){return b={exports:{}},a(b,b.exports),b.exports}function b(a){return(b="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(a){return typeof a}:function(a){return a&&"function"==typeof Symbol&&a.constructor===Symbol&&a!==Symbol.prototype?"symbol":typeof a})(a)}function c(a){return"object"===b(a)&&null!==a}function d(a){switch({}.toString.call(a)){case"[object Error]":return!0;case"[object Exception]":return!0;case"[object DOMException]":return!0;default:return a instanceof Error}}function e(a){return l()&&"[object ErrorEvent]"==={}.toString.call(a)}function f(a){return void 0===a}function g(a){return"function"==typeof a}function h(a){return"[object Object]"===Object.prototype.toString.call(a)}function i(a){return"[object String]"===Object.prototype.toString.call(a)}function j(a){return"[object Array]"===Object.prototype.toString.call(a)}function k(a){if(!h(a))return!1;for(var b in a)if(a.hasOwnProperty(b))return!1;return!0}function l(){try{return new ErrorEvent(""),!0}catch(a){return!1}}function m(){if(!("fetch"in P))return!1;try{return new Headers,new Request(""),new Response,!0}catch(a){return!1}}function n(a){function b(b,c){var d=a(b)||b;return c?c(d)||d:d}return b}function o(a,b){var c,d;if(f(a.length))for(c in a)s(a,c)&&b.call(null,c,a[c]);else if(d=a.length)for(c=0;c ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function y(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&i(b))for(c=b.split(/\s+/),f=0;f=0;--b)l[b]===a&&l.splice(b,1)}function c(){g(),l=[]}function d(a,b){var c=null;if(!b||R.collectWindowErrors){for(var d in l)if(l.hasOwnProperty(d))try{l[d].apply(null,[a].concat(T.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function e(a,b,c,e,f){var g=null,i=Q.isErrorEvent(f)?f.error:f,k=Q.isErrorEvent(a)?a.message:a;if(o)R.computeStackTrace.augmentStackTraceWithInitialElement(o,b,c,k),h();else if(i&&Q.isError(i))g=R.computeStackTrace(i),d(g,!0);else{var l,m={url:b,line:c,column:e},n=void 0;if("[object String]"==={}.toString.call(k)){var l=k.match(V);l&&(n=l[1],k=l[2])}m.func=U,g={name:n,message:k,url:F(),stack:[m]},d(g,!0)}return!!j&&j.apply(this,arguments)}function f(){k||(j=S.onerror,S.onerror=e,k=!0)}function g(){k&&(S.onerror=j,k=!1,j=void 0)}function h(){var a=o,b=m;m=null,o=null,n=null,d.apply(null,[a,!1].concat(b))}function i(a,b){var c=T.call(arguments,1);if(o){if(n===a)return;h()}var d=R.computeStackTrace(a);if(o=d,n=a,m=c,setTimeout(function(){n===a&&h()},d.incomplete?2e3:0),b!==!1)throw a}var j,k,l=[],m=null,n=null,o=null;return i.subscribe=a,i.unsubscribe=b,i.uninstall=c,i}(),R.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,d,e=/^\s*at (.*?) ?\(((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,f=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|\[native).*?|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,g=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,h=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,i=/\((\S*)(?::(\d+))(?::(\d+))\)/,j=a.stack.split("\n"),k=[],l=(/^(.*) is undefined$/.exec(a.message),0),m=j.length;l eval")>-1;o&&(b=h.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==l||c[5]||"undefined"==typeof a.columnNumber||(k[0].column=a.columnNumber+1),d={url:c[3],func:c[1]||U,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}!d.func&&d.line&&(d.func=U),k.push(d)}return k.length?{name:a.name,message:a.message,url:F(),stack:k}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=U),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,e){for(var f,g,h=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,i=[],j={},k=!1,l=c.caller;l&&!k;l=l.caller)if(l!==d&&l!==R.report){if(g={url:null,func:U,line:null,column:null},l.name?g.func=l.name:(f=h.exec(l.toString()))&&(g.func=f[1]),"undefined"==typeof g.func)try{g.func=f.input.substring(0,f.input.indexOf("{"))}catch(m){}j[""+l]?k=!0:j[""+l]=!0,i.push(g)}e&&i.splice(0,e);var n={name:a.name,message:a.message,url:F(),stack:i};return b(n,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),n}function d(b,d){var e=null;d=null==d?0:+d;try{if(e=a(b))return e}catch(f){if(R.debug)throw f}try{if(e=c(b,d+1))return e}catch(f){if(R.debug)throw f}return{name:b.name,message:b.message,url:F()}}return d.augmentStackTraceWithInitialElement=b,d.computeStackTraceFromStackProp=a,d}();var W=R,X=a(function(a,b){function c(a,b){for(var c=0;c0){var i=c(d,this);~i?d.splice(i+1):d.push(this),~i?f.splice(i,1/0,g):f.push(g),~c(d,h)&&(h=b.call(this,g,h))}else d.push(h);return null==a?h instanceof Error?e(h):h:a.call(this,g,h)}}b=a.exports=d,b.getSerialize=f});G.prototype=new Error,G.prototype.constructor=G;var Y=G,Z=function(a,b,c){var d=a[b],e=a;if(b in a){var f="warn"===b?"warning":b;a[b]=function(){var a=[].slice.call(arguments),g=Q.safeJoin(a," "),h={level:f,logger:"console",extra:{arguments:a}};"assert"===b?a[0]===!1&&(g="Assertion failed: "+(Q.safeJoin(a.slice(1)," ")||"console.assert"),h.extra.arguments=a.slice(1),c&&c(g,h)):c&&c(g,h),d&&Function.prototype.apply.call(d,e,a)}}},$={wrapMethod:Z},_=Q.isError,aa=Q.isObject,ba=Q.isErrorEvent,ca=Q.isUndefined,da=Q.isFunction,ea=Q.isString,fa=Q.isArray,ga=Q.isEmptyObject,ha=Q.each,ia=Q.objectMerge,ja=Q.truncate,ka=Q.objectFrozen,la=Q.hasKey,ma=Q.joinRegExp,na=Q.urlencode,oa=Q.uuid4,pa=Q.htmlTreeAsString,qa=Q.isSameException,ra=Q.isSameStacktrace,sa=Q.parseUrl,ta=Q.fill,ua=Q.supportsFetch,va=$.wrapMethod,wa="source protocol user pass host port path".split(" "),xa=/^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/,ya="undefined"!=typeof window?window:"undefined"!=typeof N?N:"undefined"!=typeof self?self:{},za=ya.document,Aa=ya.navigator;J.prototype={VERSION:"3.22.2",debug:!1,TraceKit:W,config:function(a,b){var c=this;if(c.i)return this.D("error","Error: Raven has already been configured"),c;if(!a)return c;var d=c.m;b&&ha(b,function(a,b){"tags"===a||"extra"===a||"user"===a?c.l[a]=b:d[a]=b}),c.setDSN(a),d.ignoreErrors.push(/^Script error\.?$/),d.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/),d.ignoreErrors=ma(d.ignoreErrors),d.ignoreUrls=!!d.ignoreUrls.length&&ma(d.ignoreUrls),d.whitelistUrls=!!d.whitelistUrls.length&&ma(d.whitelistUrls),d.includePaths=ma(d.includePaths),d.maxBreadcrumbs=Math.max(0,Math.min(d.maxBreadcrumbs||100,100));var e={xhr:!0,console:!0,dom:!0,location:!0,sentry:!0},f=d.autoBreadcrumbs;"[object Object]"==={}.toString.call(f)?f=ia(e,f):f!==!1&&(f=e),d.autoBreadcrumbs=f;var g={tryCatch:!0},h=d.instrument;return"[object Object]"==={}.toString.call(h)?h=ia(g,h):h!==!1&&(h=g),d.instrument=h,W.collectWindowErrors=!!d.collectWindowErrors,c},install:function(){var a=this;return a.isSetup()&&!a.p&&(W.report.subscribe(function(){a.E.apply(a,arguments)}),a.F(),a.m.instrument&&a.m.instrument.tryCatch&&a.G(),a.m.autoBreadcrumbs&&a.H(),a.I(),a.p=!0),Error.stackTraceLimit=a.m.stackTraceLimit,this},setDSN:function(a){var b=this,c=b.J(a),d=c.path.lastIndexOf("/"),e=c.path.substr(1,d);b.K=a,b.j=c.user,b.L=c.pass&&c.pass.substr(1),b.k=c.path.substr(d+1),b.i=b.M(c),b.N=b.i+"/"+e+"api/"+b.k+"/store/",this.A()},context:function(a,b,c){return da(a)&&(c=b||[],b=a,a=void 0),this.wrap(a,b).apply(this,c)},wrap:function(a,b,c){function d(){var d=[],f=arguments.length,g=!a||a&&a.deep!==!1;for(c&&da(c)&&c.apply(this,arguments);f--;)d[f]=g?e.wrap(a,arguments[f]):arguments[f];try{return b.apply(this,d)}catch(h){throw e.O(),e.captureException(h,a),h}}var e=this;if(ca(b)&&!da(a))return a;if(da(a)&&(b=a,a=void 0),!da(b))return b;try{if(b.a)return b;if(b.P)return b.P}catch(f){return b}for(var g in b)la(b,g)&&(d[g]=b[g]);return d.prototype=b.prototype,b.P=d,d.a=!0,d.b=b,d},uninstall:function(){return W.report.uninstall(),this.Q(),this.R(),this.S(),Error.stackTraceLimit=this.q,this.p=!1,this},captureException:function(a,b){b=ia({trimHeadFrames:0},b?b:{});var c=!_(a),d=!ba(a),e=ba(a)&&!a.error;if(c&&d||e)return this.captureMessage(a,ia(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}));ba(a)&&(a=a.error),this.f=a;try{var f=W.computeStackTrace(a);this.T(f,b)}catch(g){if(a!==g)throw g}return this},captureMessage:function(a,b){if(!this.m.ignoreErrors.test||!this.m.ignoreErrors.test(a)){b=b||{};var c,d=ia({message:a+""},b);try{throw new Error(a)}catch(e){c=e}c.name=null;var f=W.computeStackTrace(c),g=fa(f.stack)&&f.stack[1],h=g&&g.url||"";if((!this.m.ignoreUrls.test||!this.m.ignoreUrls.test(h))&&(!this.m.whitelistUrls.test||this.m.whitelistUrls.test(h))){if(this.m.stacktrace||b&&b.stacktrace){b=ia({fingerprint:a,trimHeadFrames:(b.trimHeadFrames||0)+1},b);var i=this.U(f,b);d.stacktrace={frames:i.reverse()}}return this.V(d),this}}},captureBreadcrumb:function(a){var b=ia({timestamp:H()/1e3},a);if(da(this.m.breadcrumbCallback)){var c=this.m.breadcrumbCallback(b);if(aa(c)&&!ga(c))b=c;else if(c===!1)return this}return this.w.push(b),this.w.length>this.m.maxBreadcrumbs&&this.w.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.t.push([a,b]),this.p&&this.I(),this},setUserContext:function(a){return this.l.user=a,this},setExtraContext:function(a){return this.W("extra",a),this},setTagsContext:function(a){return this.W("tags",a),this},clearContext:function(){return this.l={},this},getContext:function(){return JSON.parse(X(this.l))},setEnvironment:function(a){return this.m.environment=a,this},setRelease:function(a){return this.m.release=a,this},setDataCallback:function(a){var b=this.m.dataCallback;return this.m.dataCallback=I(b,a),this},setBreadcrumbCallback:function(a){var b=this.m.breadcrumbCallback;return this.m.breadcrumbCallback=I(b,a),this},setShouldSendCallback:function(a){var b=this.m.shouldSendCallback;return this.m.shouldSendCallback=I(b,a),this},setTransport:function(a){return this.m.transport=a,this},lastException:function(){return this.f},lastEventId:function(){return this.h},isSetup:function(){return!!this.c&&(!!this.i||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.D("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=ya.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(za){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new Y("Missing eventId");var c=a.dsn||this.K;if(!c)throw new Y("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.l.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.M(this.J(c)),h=za.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(za.head||za.body).appendChild(h)}},O:function(){var a=this;this.o+=1,setTimeout(function(){a.o-=1})},X:function(a,b){var c,d;if(this.d){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),za.createEvent?(c=za.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=za.createEventObject(),c.eventType=a);for(d in b)la(b,d)&&(c[d]=b[d]);if(za.createEvent)za.dispatchEvent(c);else try{za.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},Y:function(a){var b=this;return function(c){if(b.Z=null,b.x!==c){b.x=c;var d;try{d=pa(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},$:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.Z;g||a.Y("input")(c),clearTimeout(g),a.Z=setTimeout(function(){a.Z=null},b)}}},_:function(a,b){var c=sa(this.y.href),d=sa(b),e=sa(a);this.z=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},F:function(){var a=this;a.aa=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.a?a.aa.apply(this.b,arguments):a.aa.apply(this,arguments)}},Q:function(){this.aa&&(Function.prototype.toString=this.aa)},G:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b._(b.z,c+""),a.apply(this,arguments)}};ta(history,"pushState",j,d),ta(history,"replaceState",j,d)}if(c.console&&"console"in ya&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};ha(["debug","info","warn","error","log"],function(a,b){va(console,b,k)})}},R:function(){for(var a;this.v.length;){a=this.v.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},S:function(){for(var a in this.s)this.r[a]=this.s[a]},I:function(){var a=this;ha(this.t,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},J:function(a){var b=xa.exec(a),c={},d=7;try{for(;d--;)c[wa[d]]=b[d]||""}catch(e){throw new Y("Invalid DSN: "+a)}if(c.pass&&!this.m.allowSecretKey)throw new Y("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},M:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},E:function(){this.o||this.T.apply(this,arguments)},T:function(a,b){var c=this.U(a,b);this.X("handle",{stackInfo:a,options:b}),this.ca(a.name,a.message,a.url,a.lineno,c,b)},U:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(ha(a.stack,function(b,e){var f=c.da(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.w,0)}),this.l.user&&(a.user=this.l.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||ga(a[b]))&&delete a[b]}),da(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!ga(a)&&(!da(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.ja()?void this.D("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random()this.l.maxBreadcrumbs&&this.v.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.s.push([a,b]),this.o&&this.G(),this},setUserContext:function(a){return this.k.user=a,this},setExtraContext:function(a){return this.$("extra",a),this},setTagsContext:function(a){return this.$("tags",a),this},clearContext:function(){return this.k={},this},getContext:function(){return JSON.parse(h(this.k))},setEnvironment:function(a){return this.l.environment=a,this},setRelease:function(a){return this.l.release=a,this},setDataCallback:function(a){var b=this.l.dataCallback;return this.l.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.l.breadcrumbCallback;return this.l.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.l.shouldSendCallback;return this.l.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.l.transport=a,this},lastException:function(){return this.e},lastEventId:function(){return this.g},isSetup:function(){return!!this.b&&(!!this.h||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.A("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=P.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(Q){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.I;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.k.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.K(this.H(c)),h=Q.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(Q.head||Q.body).appendChild(h)}},M:function(){var a=this;this.n+=1,setTimeout(function(){a.n-=1})},_:function(a,b){var c,d;if(this.c){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),Q.createEvent?(c=Q.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=Q.createEventObject(),c.eventType=a);for(d in b)y(b,d)&&(c[d]=b[d]);if(Q.createEvent)Q.dispatchEvent(c);else try{Q.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},aa:function(a){var b=this;return function(c){if(b.ba=null,b.w!==c){b.w=c;var d;try{d=C(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ca:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.ba;g||a.aa("input")(c),clearTimeout(g),a.ba=setTimeout(function(){a.ba=null},b)}}},da:function(a,b){var c=F(this.x.href),d=F(b),e=F(a);this.y=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},D:function(){var a=this;a.ea=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.N?a.ea.apply(this.P,arguments):a.ea.apply(this,arguments)}},R:function(){this.ea&&(Function.prototype.toString=this.ea)},E:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.da(b.y,c+""),a.apply(this,arguments)}};G(history,"pushState",j,d),G(history,"replaceState",j,d)}if(c.console&&"console"in P&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};u(["debug","info","warn","error","log"],function(a,b){M(console,b,k)})}},S:function(){for(var a;this.u.length;){a=this.u.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},T:function(){for(var a in this.r)this.q[a]=this.r[a]},G:function(){var a=this;u(this.s,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},H:function(a){var b=O.exec(a),c={},d=7;try{for(;d--;)c[N[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.l.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},K:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},B:function(){this.n||this.W.apply(this,arguments)},W:function(a,b){var c=this.Y(a,b);this._("handle",{stackInfo:a,options:b}),this.ga(a.name,a.message,a.url,a.lineno,c,b)},Y:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(u(a.stack,function(b,e){var f=c.ha(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.v,0)}),this.k.user&&(a.user=this.k.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),a=this.qa(a),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||t(a[b]))&&delete a[b]}),q(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!t(a)&&(!q(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.na()?void this.A("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function B(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&j(b))for(c=b.split(/\s+/),f=0;fc?M(a,b-1):d}function N(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?T:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function O(a,b){function c(a){return k(a)?a.map(function(a){return c(a)}):i(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!k(b)||k(b)&&0===b.length)return a;var d,e=w(b),f="********";try{d=JSON.parse(P(a))}catch(g){return a}return c(d)}var P=a(10),Q="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},R=3,S=51200,T=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isUndefined:g,isFunction:h,isPlainObject:i,isString:j,isArray:k,isEmptyObject:l,supportsErrorEvent:m,supportsFetch:n,supportsReferrerPolicy:o,supportsPromiseRejectionEvent:p,wrappedCallback:q,each:r,objectMerge:s,truncate:u,objectFrozen:t,hasKey:v,joinRegExp:w,urlencode:x,uuid4:z,htmlTreeAsString:A,htmlElementAsString:B,isSameException:E,isSameStacktrace:F,parseUrl:y,fill:G,safeJoin:H,serializeException:M,serializeKeysForMessage:N,sanitize:O}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{10:10}],9:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}var e=a(8),f={collectWindowErrors:!0,debug:!1},g="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},h=[].slice,i="?",j=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;f.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function k(a,b){var c=null;if(!b||f.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(h.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,g,h){var l=null,m=e.isErrorEvent(h)?h.error:h,n=e.isErrorEvent(a)?a.message:a;if(v)f.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&e.isError(m))l=f.computeStackTrace(m),k(l,!0);else{var p,r={url:b,line:c,column:g},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(j);p&&(s=p[1],n=p[2])}r.func=i,l={name:s,message:n,url:d(),stack:[r]},k(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=g.onerror,g.onerror=l,r=!0)}function n(){r&&(g.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,k.apply(null,[a,!1].concat(b))}function p(a,b){var c=h.call(arguments,1);if(v){if(u===a)return;o()}var d=f.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),f.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,e,f=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,g=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,h=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,j=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,k=/\((\S*)(?::(\d+))(?::(\d+))\)/,l=a.stack.split("\n"),m=[],n=(/^(.*) is undefined$/.exec(a.message),0),o=l.length;n eval")>-1;q&&(b=j.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==n||c[5]||"undefined"==typeof a.columnNumber||(m[0].column=a.columnNumber+1),e={url:c[3],func:c[1]||i,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}!e.func&&e.line&&(e.func=i),m.push(e)}return m.length?{name:a.name,message:a.message,url:d(),stack:m}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=i),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,g){for(var h,j,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==e&&o!==f.report){if(j={url:null,func:i,line:null,column:null},o.name?j.func=o.name:(h=k.exec(o.toString()))&&(j.func=h[1]),"undefined"==typeof j.func)try{j.func=h.input.substring(0,h.input.indexOf("{"))}catch(p){}m[""+o]?n=!0:m[""+o]=!0,l.push(j)}g&&l.splice(0,g);var q={name:a.name,message:a.message,url:d(),stack:l};return b(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),q}function e(b,e){var g=null;e=null==e?0:+e; +try{if(g=a(b))return g}catch(h){if(f.debug)throw h}try{if(g=c(b,e+1))return g}catch(h){if(f.debug)throw h}return{name:b.name,message:b.message,url:d()}}return e.augmentStackTraceWithInitialElement=b,e.computeStackTraceFromStackProp=a,e}(),b.exports=f}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{8:8}],10:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}],11:[function(a,b,c){function d(a,b){var c=(65535&a)+(65535&b),d=(a>>16)+(b>>16)+(c>>16);return d<<16|65535&c}function e(a,b){return a<>>32-b}function f(a,b,c,f,g,h){return d(e(d(d(b,a),d(f,h)),g),c)}function g(a,b,c,d,e,g,h){return f(b&c|~b&d,a,b,e,g,h)}function h(a,b,c,d,e,g,h){return f(b&d|c&~d,a,b,e,g,h)}function i(a,b,c,d,e,g,h){return f(b^c^d,a,b,e,g,h)}function j(a,b,c,d,e,g,h){return f(c^(b|~d),a,b,e,g,h)}function k(a,b){a[b>>5]|=128<>>9<<4)+14]=b;var c,e,f,k,l,m=1732584193,n=-271733879,o=-1732584194,p=271733878;for(c=0;c>5]>>>b%32&255);return c}function m(a){var b,c=[];for(c[(a.length>>2)-1]=void 0,b=0;b>5]|=(255&a.charCodeAt(b/8))<16&&(e=k(e,8*a.length)),c=0;c<16;c+=1)f[c]=909522486^e[c],g[c]=1549556828^e[c];return d=k(f.concat(m(b)),512+8*b.length),l(k(g.concat(d),640))}function p(a){var b,c,d="0123456789abcdef",e="";for(c=0;c>>4&15)+d.charAt(15&b);return e}function q(a){return unescape(encodeURIComponent(a))}function r(a){return n(q(a))}function s(a){return p(r(a))}function t(a,b){return o(q(a),q(b))}function u(a,b){return p(t(a,b))}function v(a,b,c){return b?c?t(b,a):u(b,a):c?r(a):s(a)}b.exports=v},{}]},{},[7,1,2,3])(7)}); //# sourceMappingURL=raven.min.js.map \ No newline at end of file diff --git a/dist/angular,console,ember/raven.min.js.map b/dist/angular,console,ember/raven.min.js.map index 339fd48c54dc..36f8c6931892 100644 --- a/dist/angular,console,ember/raven.min.js.map +++ b/dist/angular,console,ember/raven.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["raven.js"],"names":["global","factory","exports","module","define","amd","Raven","this","createCommonjsModule","fn","_typeof","obj","Symbol","iterator","constructor","prototype","isObject$1","what","isError$1","value","toString","call","Error","isErrorEvent$1","supportsErrorEvent","isUndefined$1","isFunction$1","isPlainObject","Object","isString$1","isArray$1","isEmptyObject$1","_","hasOwnProperty","ErrorEvent","e","supportsFetch$1","_window$3","Headers","Request","Response","wrappedCallback","callback","dataCallback","data","original","normalizedData","each$1","i","j","length","hasKey$1","objectMerge$1","obj1","obj2","key","objectFrozen$1","isFrozen","truncate$1","str","max","substr","object","joinRegExp$1","patterns","pattern","sources","len","push","replace","source","RegExp","join","urlencode$1","o","pairs","encodeURIComponent","parseUrl$1","url","match","query","fragment","protocol","host","path","relative","uuid4$1","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","r","Math","random","htmlTreeAsString$1","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","reverse","className","classes","attr","tagName","toLowerCase","id","split","attrWhitelist","getAttribute","isOnlyOneTruthy","a","b","isBothUndefined","isSameException$1","ex1","ex2","values","type","stacktrace","isSameStacktrace$1","stack1","stack2","frames1","frames","frames2","filename","lineno","colno","fill$1","name","replacement","track","orig","__raven__","__orig__","safeJoin","input","delimiter","output","String","getLocationHref","document","location","href","RavenConfigError","message","now","Date","keepOriginalCallback","isFunction","Raven$1","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window$1","SENTRY_RELEASE","logger","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","_fetchDefaults","method","keepalive","referrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","console","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","_lastHref","_resetBackoff","angularPlugin","angular","RavenProvider","$get","$window","ExceptionHandlerProvider","$provide","decorator","exceptionHandler","R","$delegate","ex","cause","captureException","extra","window","moduleName","provider","config","setDataCallback","wrappedCallback$1","_normalizeData","consolePlugin","pluginOptions","logLevels","levels","msg","captureMessage","level","pop","wrapConsoleMethod$1","emberPlugin","Ember","_oldOnError","onerror","error","RSVP","on","reason","context","commonjsGlobal","self","_sPO","setPrototypeOf","p","__proto__","Reflect","construct","Parent","args","Class","Constructor","apply","bind","utils","isObject","isError","isErrorEvent","isString","isArray","isEmptyObject","supportsFetch","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","TraceKit","debug","_window$2","_slice","slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","report","subscribe","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","stack","isWindowError","exception","concat","arguments","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","computeStackTrace","augmentStackTraceWithInitialElement","processLastException","groups","line","column","undefined","func","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","lastException","rethrow","setTimeout","incomplete","uninstall","computeStackTraceFromStackProp","submatch","parts","element","chrome","gecko","winjs","geckoEval","chromeEval","lines","exec","isNative","indexOf","isEval","columnNumber","stackInfo","initial","unshift","partial","computeStackTraceByWalkingCallerChain","depth","item","functionName","funcs","recursion","curr","caller","substring","result","sourceURL","fileName","lineNumber","description","tracekit","stringify_1","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","err","keys","thisPos","Infinity","getSerialize","configError","wrapMethod","originalConsoleLevel","originalConsole","sentryLevel","Function","console$1","wrapConsoleMethod","dsnKeys","dsnPattern","navigator","VERSION","dsn","options","_logDebug","globalOptions","setDSN","maxBreadcrumbs","min","autoBreadcrumbDefaults","xhr","dom","sentry","instrumentDefaults","tryCatch","install","isSetup","_handleOnErrorStackInfo","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","lastIndexOf","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","wrap","_before","wrapped","deep","_ignoreNextOnError","__raven_wrapper__","property","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","trimHeadFrames","isNotError","isNotErrorEvent","isErrorEventWithoutError","_handleStackInfo","test","initialCall","fileurl","fingerprint","_prepareFrames","_send","captureBreadcrumb","crumb","timestamp","breadcrumbCallback","shift","addPlugin","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","O","X","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","Y","evtName","_keypressTimeout","target","category","$","debounceDuration","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","from","to","parsedLoc","parsedTo","parsedFrom","F","_originalFunctionToString","Q","G","wrapTimeFn","t","Array","originalCallback","wrapEventTarget","proto","capture","secure","handleEvent","before","clickHandler","keypressHandler","_keypressEventHandler","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","H","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","onreadystatechange","origFetch","fetchInput","fetchData","then","response","addEventListener","attachEvent","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","builtin","S","I","installer","J","m","allowSecretKey","M","port","E","T","_triggerEvent","_processException","U","frame","_normalizeFrame","in_app","da","stackInfoUrl","normalized","function","ca","prefixedMessage","culprit","ea","request","Referer","breadcrumbs","_trimBreadcrumbs","fa","urlProp","urlProps","ga","httpData","userAgent","User-Agent","referrer","A","_backoffDuration","_backoffStart","ja","ka","current","last","la","_shouldBackoff","retry","get","getResponseHeader","parseInt","V","baseData","project","platform","_getHttpData","serverName","server_name","forEach","_sendProcessedPayload","na","ma","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","oa","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","onload","open","setRequestHeader","send","pa","hash","evaluated","D","W","setUser","setReleaseContext","raven","_window","_Raven","noConflict","singleton","angularPattern","matches","angularDocs","console$3","ember","angular_console_ember"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file +{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","angularPlugin","angular","RavenProvider","$get","$window","ExceptionHandlerProvider","$provide","decorator","exceptionHandler","R","$delegate","ex","cause","captureException","extra","moduleName","provider","config","setDataCallback","wrappedCallback","data","_normalizeData","angularPattern","exception","values","matches","exec","value","type","message","angularDocs","substr","addPlugin","7","8","2","consolePlugin","console","pluginOptions","logLevels","levels","push","callback","msg","captureMessage","level","pop","wrapConsoleMethod","wrapMethod","5","3","emberPlugin","Ember","_oldOnError","onerror","error","RSVP","on","reason","context","4","RavenConfigError","name","prototype","constructor","utils","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","safeJoin","logger","Function","apply","6","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","sanitizeKeys","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isError","isObject","isPlainObject","isErrorEvent","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","sanitize","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","dsn","options","_logDebug","globalOptions","key","setDSN","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","toString","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","func","undefined","wrap","_before","wrapped","deep","_ignoreNextOnError","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","U","event","unhandledPromiseRejection","C","_promiseRejectionHandler","bind","addEventListener","Q","removeEventListener","trimHeadFrames","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","V","currentOptions","exKeys","Object","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","M","setTimeout","_","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","aa","evtName","_keypressTimeout","target","category","ca","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","da","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","D","_originalFunctionToString","E","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","F","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","S","builtin","T","G","installer","concat","H","str","m","allowSecretKey","K","port","B","W","stackInfo","_triggerEvent","_processException","lineno","Y","frame","_normalizeFrame","in_app","ha","stackInfoUrl","normalized","filename","line","colno","column","function","ga","prefixedMessage","culprit","ia","request","Referer","breadcrumbs","_trimBreadcrumbs","ja","urlProp","urlProps","ka","httpData","userAgent","User-Agent","referrer","z","_backoffDuration","_backoffStart","na","oa","current","last","pa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Z","baseData","project","platform","_getHttpData","serverName","server_name","_sanitizeData","forEach","random","_sendProcessedPayload","qa","sa","ra","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","ta","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","open","setRequestHeader","send","ua","hash","evaluated","A","$","setUser","setReleaseContext","10","11","9","RavenConstructor","_Raven","noConflict","Client","what","supportsErrorEvent","ErrorEvent","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","sanitizeMask","safeInput","o_O","getLocationHref","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","y","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","charAt","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","string","raw"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file diff --git a/dist/angular,console,require,vue/raven.js b/dist/angular,console,require,vue/raven.js index 0e6bb8b816d4..f1b78a0466c8 100644 --- a/dist/angular,console,require,vue/raven.js +++ b/dist/angular,console,require,vue/raven.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.22.2 (1b6187b) | github.com/getsentry/raven-js */ +/*! Raven.js 3.24.2 (540f32b) | github.com/getsentry/raven-js */ /* * Includes TraceKit @@ -10,3293 +10,4074 @@ * */ -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : - typeof define === 'function' && define.amd ? define(factory) : - (global.Raven = factory()); -}(this, (function () { 'use strict'; +(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.Raven = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o' : 'anonymous component') + + (vm._isVue && vm.$options.__file ? ' at ' + vm.$options.__file : '') + ); } -function isArray$1(what) { - return Object.prototype.toString.call(what) === '[object Array]'; -} +function vuePlugin(Raven, Vue) { + Vue = Vue || window.Vue; -function isEmptyObject$1(what) { - if (!isPlainObject(what)) return false; + // quit if Vue isn't on the page + if (!Vue || !Vue.config) return; - for (var _ in what) { - if (what.hasOwnProperty(_)) { - return false; + var _oldOnError = Vue.config.errorHandler; + Vue.config.errorHandler = function VueErrorHandler(error, vm, info) { + var metaData = {}; + + // vm and lifecycleHook are not always available + if (Object.prototype.toString.call(vm) === '[object Object]') { + metaData.componentName = formatComponentName(vm); + metaData.propsData = vm.$options.propsData; } - } - return true; -} + if (typeof info !== 'undefined') { + metaData.lifecycleHook = info; + } -function supportsErrorEvent() { - try { - new ErrorEvent(''); // eslint-disable-line no-new + Raven.captureException(error, { + extra: metaData + }); - return true; - } catch (e) { - return false; - } + if (typeof _oldOnError === 'function') { + _oldOnError.call(this, error, vm, info); + } + }; } -function supportsFetch$1() { - if (!('fetch' in _window$3)) return false; - - try { - new Headers(); // eslint-disable-line no-new - - new Request(''); // eslint-disable-line no-new - - new Response(); // eslint-disable-line no-new +module.exports = vuePlugin; - return true; - } catch (e) { - return false; - } +_dereq_(8).addPlugin(module.exports); +},{"8":8}],5:[function(_dereq_,module,exports){ +function RavenConfigError(message) { + this.name = 'RavenConfigError'; + this.message = message; } +RavenConfigError.prototype = new Error(); +RavenConfigError.prototype.constructor = RavenConfigError; -function wrappedCallback(callback) { - function dataCallback(data, original) { - var normalizedData = callback(data) || data; +module.exports = RavenConfigError; - if (original) { - return original(normalizedData) || normalizedData; - } +},{}],6:[function(_dereq_,module,exports){ +var utils = _dereq_(9); - return normalizedData; +var wrapMethod = function(console, level, callback) { + var originalConsoleLevel = console[level]; + var originalConsole = console; + + if (!(level in console)) { + return; } - return dataCallback; -} + var sentryLevel = level === 'warn' ? 'warning' : level; -function each$1(obj, callback) { - var i, j; + console[level] = function() { + var args = [].slice.call(arguments); - if (isUndefined$1(obj.length)) { - for (i in obj) { - if (hasKey$1(obj, i)) { - callback.call(null, i, obj[i]); + var msg = utils.safeJoin(args, ' '); + var data = {level: sentryLevel, logger: 'console', extra: {arguments: args}}; + + if (level === 'assert') { + if (args[0] === false) { + // Default browsers message + msg = + 'Assertion failed: ' + (utils.safeJoin(args.slice(1), ' ') || 'console.assert'); + data.extra.arguments = args.slice(1); + callback && callback(msg, data); } + } else { + callback && callback(msg, data); } - } else { - j = obj.length; - if (j) { - for (i = 0; i < j; i++) { - callback.call(null, i, obj[i]); - } + // this fails for some browsers. :( + if (originalConsoleLevel) { + // IE9 doesn't allow calling apply on console functions directly + // See: https://stackoverflow.com/questions/5472938/does-ie9-support-console-log-and-is-it-a-real-function#answer-5473193 + Function.prototype.apply.call(originalConsoleLevel, originalConsole, args); } - } -} + }; +}; -function objectMerge$1(obj1, obj2) { - if (!obj2) { - return obj1; - } +module.exports = { + wrapMethod: wrapMethod +}; - each$1(obj2, function (key, value) { - obj1[key] = value; - }); - return obj1; -} -/** - * This function is only used for react-native. - * react-native freezes object that have already been sent over the - * js bridge. We need this function in order to check if the object is frozen. - * So it's ok that objectFrozen returns false if Object.isFrozen is not - * supported because it's not relevant for other "platforms". See related issue: - * https://github.com/getsentry/react-native-sentry/issues/57 - */ +},{"9":9}],7:[function(_dereq_,module,exports){ +(function (global){ +/*global XDomainRequest:false */ +var TraceKit = _dereq_(10); +var stringify = _dereq_(11); +var md5 = _dereq_(12); +var RavenConfigError = _dereq_(5); -function objectFrozen$1(obj) { - if (!Object.isFrozen) { - return false; - } +var utils = _dereq_(9); +var isError = utils.isError; +var isObject = utils.isObject; +var isPlainObject = utils.isPlainObject; +var isErrorEvent = utils.isErrorEvent; +var isUndefined = utils.isUndefined; +var isFunction = utils.isFunction; +var isString = utils.isString; +var isArray = utils.isArray; +var isEmptyObject = utils.isEmptyObject; +var each = utils.each; +var objectMerge = utils.objectMerge; +var truncate = utils.truncate; +var objectFrozen = utils.objectFrozen; +var hasKey = utils.hasKey; +var joinRegExp = utils.joinRegExp; +var urlencode = utils.urlencode; +var uuid4 = utils.uuid4; +var htmlTreeAsString = utils.htmlTreeAsString; +var isSameException = utils.isSameException; +var isSameStacktrace = utils.isSameStacktrace; +var parseUrl = utils.parseUrl; +var fill = utils.fill; +var supportsFetch = utils.supportsFetch; +var supportsReferrerPolicy = utils.supportsReferrerPolicy; +var serializeKeysForMessage = utils.serializeKeysForMessage; +var serializeException = utils.serializeException; +var sanitize = utils.sanitize; - return Object.isFrozen(obj); -} +var wrapConsoleMethod = _dereq_(6).wrapMethod; -function truncate$1(str, max) { - return !max || str.length <= max ? str : str.substr(0, max) + "\u2026"; +var dsnKeys = 'source protocol user pass host port path'.split(' '), + dsnPattern = /^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/; + +function now() { + return +new Date(); } -/** - * hasKey, a better form of hasOwnProperty - * Example: hasKey(MainHostObject, property) === true/false - * - * @param {Object} host object to check property - * @param {string} key to check - */ +// This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) +var _window = + typeof window !== 'undefined' + ? window + : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; +var _document = _window.document; +var _navigator = _window.navigator; -function hasKey$1(object, key) { - return Object.prototype.hasOwnProperty.call(object, key); +function keepOriginalCallback(original, callback) { + return isFunction(callback) + ? function(data) { + return callback(data, original); + } + : callback; } -function joinRegExp$1(patterns) { - // Combine an array of regular expressions and strings into one large regexp - // Be mad. - var sources = [], - i = 0, - len = patterns.length, - pattern; - - for (; i < len; i++) { - pattern = patterns[i]; - - if (isString$1(pattern)) { - // If it's a string, we need to escape it - // Taken from: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions - sources.push(pattern.replace(/([.*+?^=!:${}()|\[\]\/\\])/g, '\\$1')); - } else if (pattern && pattern.source) { - // If it's a regexp already, we want to extract the source - sources.push(pattern.source); - } // Intentionally skip other cases +// First, check for JSON support +// If there is no JSON, we no-op the core features of Raven +// since JSON is required to encode the payload +function Raven() { + this._hasJSON = !!(typeof JSON === 'object' && JSON.stringify); + // Raven can run in contexts where there's no document (react-native) + this._hasDocument = !isUndefined(_document); + this._hasNavigator = !isUndefined(_navigator); + this._lastCapturedException = null; + this._lastData = null; + this._lastEventId = null; + this._globalServer = null; + this._globalKey = null; + this._globalProject = null; + this._globalContext = {}; + this._globalOptions = { + // SENTRY_RELEASE can be injected by https://github.com/getsentry/sentry-webpack-plugin + release: _window.SENTRY_RELEASE && _window.SENTRY_RELEASE.id, + logger: 'javascript', + ignoreErrors: [], + ignoreUrls: [], + whitelistUrls: [], + includePaths: [], + headers: null, + collectWindowErrors: true, + captureUnhandledRejections: true, + maxMessageLength: 0, + // By default, truncates URL values to 250 chars + maxUrlLength: 250, + stackTraceLimit: 50, + autoBreadcrumbs: true, + instrument: true, + sampleRate: 1, + sanitizeKeys: [] + }; + this._fetchDefaults = { + method: 'POST', + keepalive: true, + // Despite all stars in the sky saying that Edge supports old draft syntax, aka 'never', 'always', 'origin' and 'default + // https://caniuse.com/#feat=referrer-policy + // It doesn't. And it throw exception instead of ignoring this parameter... + // REF: https://github.com/getsentry/raven-js/issues/1233 + referrerPolicy: supportsReferrerPolicy() ? 'origin' : '' + }; + this._ignoreOnError = 0; + this._isRavenInstalled = false; + this._originalErrorStackTraceLimit = Error.stackTraceLimit; + // capture references to window.console *and* all its methods first + // before the console plugin has a chance to monkey patch + this._originalConsole = _window.console || {}; + this._originalConsoleMethods = {}; + this._plugins = []; + this._startTime = now(); + this._wrappedBuiltIns = []; + this._breadcrumbs = []; + this._lastCapturedEvent = null; + this._keypressTimeout; + this._location = _window.location; + this._lastHref = this._location && this._location.href; + this._resetBackoff(); + // eslint-disable-next-line guard-for-in + for (var method in this._originalConsole) { + this._originalConsoleMethods[method] = this._originalConsole[method]; } - - return new RegExp(sources.join('|'), 'i'); } -function urlencode$1(o) { - var pairs = []; - each$1(o, function (key, value) { - pairs.push(encodeURIComponent(key) + '=' + encodeURIComponent(value)); - }); - return pairs.join('&'); -} // borrowed from https://tools.ietf.org/html/rfc3986#appendix-B -// intentionally using regex and not href parsing trick because React Native and other -// environments where DOM might not be available +/* + * The core Raven singleton + * + * @this {Raven} + */ +Raven.prototype = { + // Hardcode version string so that raven source can be loaded directly via + // webpack (using a build step causes webpack #1617). Grunt verifies that + // this value matches package.json during build. + // See: https://github.com/getsentry/raven-js/issues/465 + VERSION: '3.24.2', -function parseUrl$1(url) { - if (typeof url !== 'string') return {}; - var match = url.match(/^(([^:\/?#]+):)?(\/\/([^\/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?$/); // coerce to undefined values to empty string so we don't get 'undefined' + debug: false, - var query = match[6] || ''; - var fragment = match[8] || ''; - return { - protocol: match[2], - host: match[4], - path: match[5], - relative: match[5] + query + fragment // everything minus origin + TraceKit: TraceKit, // alias to TraceKit - }; -} + /* + * Configure Raven with a DSN and extra options + * + * @param {string} dsn The public Sentry DSN + * @param {object} options Set of global options [optional] + * @return {Raven} + */ + config: function(dsn, options) { + var self = this; -function uuid4$1() { - var crypto = _window$3.crypto || _window$3.msCrypto; + if (self._globalServer) { + this._logDebug('error', 'Error: Raven has already been configured'); + return self; + } + if (!dsn) return self; - if (!isUndefined$1(crypto) && crypto.getRandomValues) { - // Use window.crypto API if available - // eslint-disable-next-line no-undef - var arr = new Uint16Array(8); - crypto.getRandomValues(arr); // set 4 in byte 7 + var globalOptions = self._globalOptions; - arr[3] = arr[3] & 0xfff | 0x4000; // set 2 most significant bits of byte 9 to '10' + // merge in options + if (options) { + each(options, function(key, value) { + // tags and extra are special and need to be put into context + if (key === 'tags' || key === 'extra' || key === 'user') { + self._globalContext[key] = value; + } else { + globalOptions[key] = value; + } + }); + } - arr[4] = arr[4] & 0x3fff | 0x8000; + self.setDSN(dsn); - var pad = function pad(num) { - var v = num.toString(16); + // "Script error." is hard coded into browsers for errors that it can't read. + // this is the result of a script being pulled in from an external domain and CORS. + globalOptions.ignoreErrors.push(/^Script error\.?$/); + globalOptions.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/); - while (v.length < 4) { - v = '0' + v; - } + // join regexp rules into one big rule + globalOptions.ignoreErrors = joinRegExp(globalOptions.ignoreErrors); + globalOptions.ignoreUrls = globalOptions.ignoreUrls.length + ? joinRegExp(globalOptions.ignoreUrls) + : false; + globalOptions.whitelistUrls = globalOptions.whitelistUrls.length + ? joinRegExp(globalOptions.whitelistUrls) + : false; + globalOptions.includePaths = joinRegExp(globalOptions.includePaths); + globalOptions.maxBreadcrumbs = Math.max( + 0, + Math.min(globalOptions.maxBreadcrumbs || 100, 100) + ); // default and hard limit is 100 - return v; + var autoBreadcrumbDefaults = { + xhr: true, + console: true, + dom: true, + location: true, + sentry: true }; - return pad(arr[0]) + pad(arr[1]) + pad(arr[2]) + pad(arr[3]) + pad(arr[4]) + pad(arr[5]) + pad(arr[6]) + pad(arr[7]); - } else { - // http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/2117523#2117523 - return 'xxxxxxxxxxxx4xxxyxxxxxxxxxxxxxxx'.replace(/[xy]/g, function (c) { - var r = Math.random() * 16 | 0, - v = c === 'x' ? r : r & 0x3 | 0x8; - return v.toString(16); - }); - } -} -/** - * Given a child DOM element, returns a query-selector statement describing that - * and its ancestors - * e.g. [HTMLElement] => body > div > input#foo.btn[name=baz] - * @param elem - * @returns {string} - */ - - -function htmlTreeAsString$1(elem) { - /* eslint no-extra-parens:0*/ - var MAX_TRAVERSE_HEIGHT = 5, - MAX_OUTPUT_LEN = 80, - out = [], - height = 0, - len = 0, - separator = ' > ', - sepLength = separator.length, - nextStr; + var autoBreadcrumbs = globalOptions.autoBreadcrumbs; + if ({}.toString.call(autoBreadcrumbs) === '[object Object]') { + autoBreadcrumbs = objectMerge(autoBreadcrumbDefaults, autoBreadcrumbs); + } else if (autoBreadcrumbs !== false) { + autoBreadcrumbs = autoBreadcrumbDefaults; + } + globalOptions.autoBreadcrumbs = autoBreadcrumbs; - while (elem && height++ < MAX_TRAVERSE_HEIGHT) { - nextStr = htmlElementAsString(elem); // bail out if - // - nextStr is the 'html' element - // - the length of the string that would be created exceeds MAX_OUTPUT_LEN - // (ignore this limit if we are on the first iteration) + var instrumentDefaults = { + tryCatch: true + }; - if (nextStr === 'html' || height > 1 && len + out.length * sepLength + nextStr.length >= MAX_OUTPUT_LEN) { - break; + var instrument = globalOptions.instrument; + if ({}.toString.call(instrument) === '[object Object]') { + instrument = objectMerge(instrumentDefaults, instrument); + } else if (instrument !== false) { + instrument = instrumentDefaults; } + globalOptions.instrument = instrument; - out.push(nextStr); - len += nextStr.length; - elem = elem.parentNode; - } - - return out.reverse().join(separator); -} -/** - * Returns a simple, query-selector representation of a DOM element - * e.g. [HTMLElement] => input#foo.btn[name=baz] - * @param HTMLElement - * @returns {string} - */ + TraceKit.collectWindowErrors = !!globalOptions.collectWindowErrors; + // return for chaining + return self; + }, -function htmlElementAsString(elem) { - var out = [], - className, - classes, - key, - attr, - i; + /* + * Installs a global window.onerror error handler + * to capture and report uncaught exceptions. + * At this point, install() is required to be called due + * to the way TraceKit is set up. + * + * @return {Raven} + */ + install: function() { + var self = this; + if (self.isSetup() && !self._isRavenInstalled) { + TraceKit.report.subscribe(function() { + self._handleOnErrorStackInfo.apply(self, arguments); + }); - if (!elem || !elem.tagName) { - return ''; - } + if (self._globalOptions.captureUnhandledRejections) { + self._attachPromiseRejectionHandler(); + } - out.push(elem.tagName.toLowerCase()); + self._patchFunctionToString(); - if (elem.id) { - out.push('#' + elem.id); - } + if (self._globalOptions.instrument && self._globalOptions.instrument.tryCatch) { + self._instrumentTryCatch(); + } - className = elem.className; + if (self._globalOptions.autoBreadcrumbs) self._instrumentBreadcrumbs(); - if (className && isString$1(className)) { - classes = className.split(/\s+/); + // Install all of the plugins + self._drainPlugins(); - for (i = 0; i < classes.length; i++) { - out.push('.' + classes[i]); + self._isRavenInstalled = true; } - } - var attrWhitelist = ['type', 'name', 'title', 'alt']; + Error.stackTraceLimit = self._globalOptions.stackTraceLimit; + return this; + }, - for (i = 0; i < attrWhitelist.length; i++) { - key = attrWhitelist[i]; - attr = elem.getAttribute(key); + /* + * Set the DSN (can be called multiple time unlike config) + * + * @param {string} dsn The public Sentry DSN + */ + setDSN: function(dsn) { + var self = this, + uri = self._parseDSN(dsn), + lastSlash = uri.path.lastIndexOf('/'), + path = uri.path.substr(1, lastSlash); - if (attr) { - out.push('[' + key + '="' + attr + '"]'); - } - } + self._dsn = dsn; + self._globalKey = uri.user; + self._globalSecret = uri.pass && uri.pass.substr(1); + self._globalProject = uri.path.substr(lastSlash + 1); - return out.join(''); -} -/** - * Returns true if either a OR b is truthy, but not both - */ + self._globalServer = self._getGlobalServer(uri); + self._globalEndpoint = + self._globalServer + '/' + path + 'api/' + self._globalProject + '/store/'; -function isOnlyOneTruthy(a, b) { - return !!(!!a ^ !!b); -} -/** - * Returns true if both parameters are undefined - */ + // Reset backoff state since we may be pointing at a + // new project/server + this._resetBackoff(); + }, + /* + * Wrap code within a context so Raven can capture errors + * reliably across domains that is executed immediately. + * + * @param {object} options A specific set of options for this context [optional] + * @param {function} func The callback to be immediately executed within the context + * @param {array} args An array of arguments to be called with the callback [optional] + */ + context: function(options, func, args) { + if (isFunction(options)) { + args = func || []; + func = options; + options = undefined; + } -function isBothUndefined(a, b) { - return isUndefined$1(a) && isUndefined$1(b); -} -/** - * Returns true if the two input exception interfaces have the same content - */ - - -function isSameException$1(ex1, ex2) { - if (isOnlyOneTruthy(ex1, ex2)) return false; - ex1 = ex1.values[0]; - ex2 = ex2.values[0]; - if (ex1.type !== ex2.type || ex1.value !== ex2.value) return false; // in case both stacktraces are undefined, we can't decide so default to false - - if (isBothUndefined(ex1.stacktrace, ex2.stacktrace)) return false; - return isSameStacktrace$1(ex1.stacktrace, ex2.stacktrace); -} -/** - * Returns true if the two input stack trace interfaces have the same content - */ - - -function isSameStacktrace$1(stack1, stack2) { - if (isOnlyOneTruthy(stack1, stack2)) return false; - var frames1 = stack1.frames; - var frames2 = stack2.frames; // Exit early if frame count differs - - if (frames1.length !== frames2.length) return false; // Iterate through every frame; bail out if anything differs - - var a, b; - - for (var i = 0; i < frames1.length; i++) { - a = frames1[i]; - b = frames2[i]; - if (a.filename !== b.filename || a.lineno !== b.lineno || a.colno !== b.colno || a['function'] !== b['function']) return false; - } - - return true; -} -/** - * Polyfill a method - * @param obj object e.g. `document` - * @param name method name present on object e.g. `addEventListener` - * @param replacement replacement function - * @param track {optional} record instrumentation to an array - */ - - -function fill$1(obj, name, replacement, track) { - var orig = obj[name]; - obj[name] = replacement(orig); - obj[name].__raven__ = true; - obj[name].__orig__ = orig; + return this.wrap(options, func).apply(this, args); + }, - if (track) { - track.push([obj, name, orig]); - } -} -/** - * Join values in array - * @param input array of values to be joined together - * @param delimiter string to be placed in-between values - * @returns {string} - */ + /* + * Wrap code within a context and returns back a new function to be executed + * + * @param {object} options A specific set of options for this context [optional] + * @param {function} func The function to be wrapped in a new context + * @param {function} func A function to call before the try/catch wrapper [optional, private] + * @return {function} The newly wrapped functions with a context + */ + wrap: function(options, func, _before) { + var self = this; + // 1 argument has been passed, and it's not a function + // so just return it + if (isUndefined(func) && !isFunction(options)) { + return options; + } + // options is optional + if (isFunction(options)) { + func = options; + options = undefined; + } -function safeJoin(input, delimiter) { - if (!isArray$1(input)) return ''; - var output = []; + // At this point, we've passed along 2 arguments, and the second one + // is not a function either, so we'll just return the second argument. + if (!isFunction(func)) { + return func; + } - for (var i = 0; i < input.length; i++) { + // We don't wanna wrap it twice! try { - output.push(String(input[i])); + if (func.__raven__) { + return func; + } + + // If this has already been wrapped in the past, return that + if (func.__raven_wrapper__) { + return func.__raven_wrapper__; + } } catch (e) { - output.push('[value cannot be serialized]'); + // Just accessing custom props in some Selenium environments + // can cause a "Permission denied" exception (see raven-js#495). + // Bail on wrapping and return the function as-is (defers to window.onerror). + return func; } - } - return output.join(delimiter); -} - -var utils = { - isObject: isObject$1, - isError: isError$1, - isErrorEvent: isErrorEvent$1, - isUndefined: isUndefined$1, - isFunction: isFunction$1, - isPlainObject: isPlainObject, - isString: isString$1, - isArray: isArray$1, - isEmptyObject: isEmptyObject$1, - supportsErrorEvent: supportsErrorEvent, - supportsFetch: supportsFetch$1, - wrappedCallback: wrappedCallback, - each: each$1, - objectMerge: objectMerge$1, - truncate: truncate$1, - objectFrozen: objectFrozen$1, - hasKey: hasKey$1, - joinRegExp: joinRegExp$1, - urlencode: urlencode$1, - uuid4: uuid4$1, - htmlTreeAsString: htmlTreeAsString$1, - htmlElementAsString: htmlElementAsString, - isSameException: isSameException$1, - isSameStacktrace: isSameStacktrace$1, - parseUrl: parseUrl$1, - fill: fill$1, - safeJoin: safeJoin -}; + function wrapped() { + var args = [], + i = arguments.length, + deep = !options || (options && options.deep !== false); -/* - TraceKit - Cross brower stack traces + if (_before && isFunction(_before)) { + _before.apply(this, arguments); + } - This was originally forked from github.com/occ/TraceKit, but has since been - largely re-written and is now maintained as part of raven-js. Tests for - this are in test/vendor. + // Recursively wrap all of a function's arguments that are + // functions themselves. + while (i--) args[i] = deep ? self.wrap(options, arguments[i]) : arguments[i]; - MIT license -*/ + try { + // Attempt to invoke user-land function + // NOTE: If you are a Sentry user, and you are seeing this stack frame, it + // means Raven caught an error invoking your application code. This is + // expected behavior and NOT indicative of a bug with Raven.js. + return func.apply(this, args); + } catch (e) { + self._ignoreNextOnError(); + self.captureException(e, options); + throw e; + } + } -var TraceKit = { - collectWindowErrors: true, - debug: false -}; // This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) + // copy over properties of the old function + for (var property in func) { + if (hasKey(func, property)) { + wrapped[property] = func[property]; + } + } + wrapped.prototype = func.prototype; -var _window$2 = typeof window !== 'undefined' ? window : typeof commonjsGlobal !== 'undefined' ? commonjsGlobal : typeof self !== 'undefined' ? self : {}; // global reference to slice + func.__raven_wrapper__ = wrapped; + // Signal that this function has been wrapped/filled already + // for both debugging and to prevent it to being wrapped/filled twice + wrapped.__raven__ = true; + wrapped.__orig__ = func; + return wrapped; + }, -var _slice = [].slice; -var UNKNOWN_FUNCTION = '?'; // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error#Error_types + /** + * Uninstalls the global error handler. + * + * @return {Raven} + */ + uninstall: function() { + TraceKit.report.uninstall(); -var ERROR_TYPES_RE = /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/; + this._detachPromiseRejectionHandler(); + this._unpatchFunctionToString(); + this._restoreBuiltIns(); + this._restoreConsole(); -function getLocationHref() { - if (typeof document === 'undefined' || document.location == null) return ''; - return document.location.href; -} -/** - * TraceKit.report: cross-browser processing of unhandled exceptions - * - * Syntax: - * TraceKit.report.subscribe(function(stackInfo) { ... }) - * TraceKit.report.unsubscribe(function(stackInfo) { ... }) - * TraceKit.report(exception) - * try { ...code... } catch(ex) { TraceKit.report(ex); } - * - * Supports: - * - Firefox: full stack trace with line numbers, plus column number - * on top frame; column number is not guaranteed - * - Opera: full stack trace with line and column numbers - * - Chrome: full stack trace with line and column numbers - * - Safari: line and column number for the top frame only; some frames - * may be missing, and column number is not guaranteed - * - IE: line and column number for the top frame only; some frames - * may be missing, and column number is not guaranteed - * - * In theory, TraceKit should work on all of the following versions: - * - IE5.5+ (only 8.0 tested) - * - Firefox 0.9+ (only 3.5+ tested) - * - Opera 7+ (only 10.50 tested; versions 9 and earlier may require - * Exceptions Have Stacktrace to be enabled in opera:config) - * - Safari 3+ (only 4+ tested) - * - Chrome 1+ (only 5+ tested) - * - Konqueror 3.5+ (untested) - * - * Requires TraceKit.computeStackTrace. - * - * Tries to catch all unhandled exceptions and report them to the - * subscribed handlers. Please note that TraceKit.report will rethrow the - * exception. This is REQUIRED in order to get a useful stack trace in IE. - * If the exception does not reach the top of the browser, you will only - * get a stack trace from the point where TraceKit.report was called. - * - * Handlers receive a stackInfo object as described in the - * TraceKit.computeStackTrace docs. - */ + Error.stackTraceLimit = this._originalErrorStackTraceLimit; + this._isRavenInstalled = false; + return this; + }, -TraceKit.report = function reportModuleWrapper() { - var handlers = [], - lastArgs = null, - lastException = null, - lastExceptionStack = null; /** - * Add a crash handler. - * @param {Function} handler - */ + * Callback used for `unhandledrejection` event + * + * @param {PromiseRejectionEvent} event An object containing + * promise: the Promise that was rejected + * reason: the value with which the Promise was rejected + * @return void + */ + _promiseRejectionHandler: function(event) { + this._logDebug('debug', 'Raven caught unhandled promise rejection:', event); + this.captureException(event.reason, { + extra: { + unhandledPromiseRejection: true + } + }); + }, - function subscribe(handler) { - installGlobalHandler(); - handlers.push(handler); - } /** - * Remove a crash handler. - * @param {Function} handler - */ - + * Installs the global promise rejection handler. + * + * @return {raven} + */ + _attachPromiseRejectionHandler: function() { + this._promiseRejectionHandler = this._promiseRejectionHandler.bind(this); + _window.addEventListener && + _window.addEventListener('unhandledrejection', this._promiseRejectionHandler); + return this; + }, - function unsubscribe(handler) { - for (var i = handlers.length - 1; i >= 0; --i) { - if (handlers[i] === handler) { - handlers.splice(i, 1); - } - } - } /** - * Remove all crash handlers. - */ - + * Uninstalls the global promise rejection handler. + * + * @return {raven} + */ + _detachPromiseRejectionHandler: function() { + _window.removeEventListener && + _window.removeEventListener('unhandledrejection', this._promiseRejectionHandler); + return this; + }, - function unsubscribeAll() { - uninstallGlobalHandler(); - handlers = []; - } /** - * Dispatch stack information to all handlers. - * @param {Object.} stack - */ + * Manually capture an exception and send it over to Sentry + * + * @param {error} ex An exception to be logged + * @param {object} options A specific set of options for this error [optional] + * @return {Raven} + */ + captureException: function(ex, options) { + options = objectMerge({trimHeadFrames: 0}, options ? options : {}); + + if (isErrorEvent(ex) && ex.error) { + // If it is an ErrorEvent with `error` property, extract it to get actual Error + ex = ex.error; + } else if (isError(ex)) { + // we have a real Error object + ex = ex; + } else if (isPlainObject(ex)) { + // If it is plain Object, serialize it manually and extract options + // This will allow us to group events based on top-level keys + // which is much better than creating new group when any key/value change + options = this._getCaptureExceptionOptionsFromPlainObject(options, ex); + ex = new Error(options.message); + } else { + // If none of previous checks were valid, then it means that + // it's not a plain Object + // it's not a valid ErrorEvent (one with an error property) + // it's not an Error + // So bail out and capture it as a simple message: + return this.captureMessage( + ex, + objectMerge(options, { + stacktrace: true, // if we fall back to captureMessage, default to attempting a new trace + trimHeadFrames: options.trimHeadFrames + 1 + }) + ); + } + + // Store the raw exception object for potential debugging and introspection + this._lastCapturedException = ex; + + // TraceKit.report will re-raise any exception passed to it, + // which means you have to wrap it in try/catch. Instead, we + // can wrap it here and only re-raise if TraceKit.report + // raises an exception different from the one we asked to + // report on. + try { + var stack = TraceKit.computeStackTrace(ex); + this._handleStackInfo(stack, options); + } catch (ex1) { + if (ex !== ex1) { + throw ex1; + } + } + return this; + }, - function notifyHandlers(stack, isWindowError) { - var exception = null; + _getCaptureExceptionOptionsFromPlainObject: function(currentOptions, ex) { + var exKeys = Object.keys(ex).sort(); + var options = objectMerge(currentOptions, { + message: + 'Non-Error exception captured with keys: ' + serializeKeysForMessage(exKeys), + fingerprint: [md5(exKeys)], + extra: currentOptions.extra || {} + }); + options.extra.__serialized__ = serializeException(ex); - if (isWindowError && !TraceKit.collectWindowErrors) { - return; - } + return options; + }, - for (var i in handlers) { - if (handlers.hasOwnProperty(i)) { - try { - handlers[i].apply(null, [stack].concat(_slice.call(arguments, 2))); - } catch (inner) { - exception = inner; - } - } + /* + * Manually send a message to Sentry + * + * @param {string} msg A plain message to be captured in Sentry + * @param {object} options A specific set of options for this message [optional] + * @return {Raven} + */ + captureMessage: function(msg, options) { + // config() automagically converts ignoreErrors from a list to a RegExp so we need to test for an + // early call; we'll error on the side of logging anything called before configuration since it's + // probably something you should see: + if ( + !!this._globalOptions.ignoreErrors.test && + this._globalOptions.ignoreErrors.test(msg) + ) { + return; } - if (exception) { - throw exception; + options = options || {}; + msg = msg + ''; // Make sure it's actually a string + + var data = objectMerge( + { + message: msg + }, + options + ); + + var ex; + // Generate a "synthetic" stack trace from this point. + // NOTE: If you are a Sentry user, and you are seeing this stack frame, it is NOT indicative + // of a bug with Raven.js. Sentry generates synthetic traces either by configuration, + // or if it catches a thrown object without a "stack" property. + try { + throw new Error(msg); + } catch (ex1) { + ex = ex1; } - } - var _oldOnerrorHandler, _onErrorHandlerInstalled; - /** - * Ensures all global unhandled exceptions are recorded. - * Supported by Gecko and IE. - * @param {string} msg Error message. - * @param {string} url URL of script that generated the exception. - * @param {(number|string)} lineNo The line number at which the error - * occurred. - * @param {?(number|string)} colNo The column number at which the error - * occurred. - * @param {?Error} ex The actual Error object. - */ + // null exception name so `Error` isn't prefixed to msg + ex.name = null; + var stack = TraceKit.computeStackTrace(ex); + // stack[0] is `throw new Error(msg)` call itself, we are interested in the frame that was just before that, stack[1] + var initialCall = isArray(stack.stack) && stack.stack[1]; - function traceKitWindowOnError(msg, url, lineNo, colNo, ex) { - var stack = null; // If 'ex' is ErrorEvent, get real Error from inside + // if stack[1] is `Raven.captureException`, it means that someone passed a string to it and we redirected that call + // to be handled by `captureMessage`, thus `initialCall` is the 3rd one, not 2nd + // initialCall => captureException(string) => captureMessage(string) + if (initialCall && initialCall.func === 'Raven.captureException') { + initialCall = stack.stack[2]; + } - var exception = utils.isErrorEvent(ex) ? ex.error : ex; // If 'msg' is ErrorEvent, get real message from inside + var fileurl = (initialCall && initialCall.url) || ''; - var message = utils.isErrorEvent(msg) ? msg.message : msg; + if ( + !!this._globalOptions.ignoreUrls.test && + this._globalOptions.ignoreUrls.test(fileurl) + ) { + return; + } - if (lastExceptionStack) { - TraceKit.computeStackTrace.augmentStackTraceWithInitialElement(lastExceptionStack, url, lineNo, message); - processLastException(); - } else if (exception && utils.isError(exception)) { - // non-string `exception` arg; attempt to extract stack trace - // New chrome and blink send along a real error object - // Let's just report that like a normal error. - // See: https://mikewest.org/2013/08/debugging-runtime-errors-with-window-onerror - stack = TraceKit.computeStackTrace(exception); - notifyHandlers(stack, true); - } else { - var location = { - url: url, - line: lineNo, - column: colNo - }; - var name = undefined; - var groups; + if ( + !!this._globalOptions.whitelistUrls.test && + !this._globalOptions.whitelistUrls.test(fileurl) + ) { + return; + } - if ({}.toString.call(message) === '[object String]') { - var groups = message.match(ERROR_TYPES_RE); + if (this._globalOptions.stacktrace || (options && options.stacktrace)) { + // fingerprint on msg, not stack trace (legacy behavior, could be revisited) + data.fingerprint = data.fingerprint == null ? msg : data.fingerprint; - if (groups) { - name = groups[1]; - message = groups[2]; - } - } + options = objectMerge( + { + trimHeadFrames: 0 + }, + options + ); + // Since we know this is a synthetic trace, the top frame (this function call) + // MUST be from Raven.js, so mark it for trimming + // We add to the trim counter so that callers can choose to trim extra frames, such + // as utility functions. + options.trimHeadFrames += 1; - location.func = UNKNOWN_FUNCTION; - stack = { - name: name, - message: message, - url: getLocationHref(), - stack: [location] + var frames = this._prepareFrames(stack, options); + data.stacktrace = { + // Sentry expects frames oldest to newest + frames: frames.reverse() }; - notifyHandlers(stack, true); } - if (_oldOnerrorHandler) { - return _oldOnerrorHandler.apply(this, arguments); + // Make sure that fingerprint is always wrapped in an array + if (data.fingerprint) { + data.fingerprint = isArray(data.fingerprint) + ? data.fingerprint + : [data.fingerprint]; } - return false; - } + // Fire away! + this._send(data); - function installGlobalHandler() { - if (_onErrorHandlerInstalled) { - return; + return this; + }, + + captureBreadcrumb: function(obj) { + var crumb = objectMerge( + { + timestamp: now() / 1000 + }, + obj + ); + + if (isFunction(this._globalOptions.breadcrumbCallback)) { + var result = this._globalOptions.breadcrumbCallback(crumb); + + if (isObject(result) && !isEmptyObject(result)) { + crumb = result; + } else if (result === false) { + return this; + } } - _oldOnerrorHandler = _window$2.onerror; - _window$2.onerror = traceKitWindowOnError; - _onErrorHandlerInstalled = true; - } + this._breadcrumbs.push(crumb); + if (this._breadcrumbs.length > this._globalOptions.maxBreadcrumbs) { + this._breadcrumbs.shift(); + } + return this; + }, - function uninstallGlobalHandler() { - if (!_onErrorHandlerInstalled) { - return; + addPlugin: function(plugin /*arg1, arg2, ... argN*/) { + var pluginArgs = [].slice.call(arguments, 1); + + this._plugins.push([plugin, pluginArgs]); + if (this._isRavenInstalled) { + this._drainPlugins(); } - _window$2.onerror = _oldOnerrorHandler; - _onErrorHandlerInstalled = false; - _oldOnerrorHandler = undefined; - } + return this; + }, - function processLastException() { - var _lastExceptionStack = lastExceptionStack, - _lastArgs = lastArgs; - lastArgs = null; - lastExceptionStack = null; - lastException = null; - notifyHandlers.apply(null, [_lastExceptionStack, false].concat(_lastArgs)); - } - /** - * Reports an unhandled Error to TraceKit. - * @param {Error} ex - * @param {?boolean} rethrow If false, do not re-throw the exception. - * Only used for window.onerror to not cause an infinite loop of - * rethrowing. + /* + * Set/clear a user to be sent along with the payload. + * + * @param {object} user An object representing user data [optional] + * @return {Raven} */ + setUserContext: function(user) { + // Intentionally do not merge here since that's an unexpected behavior. + this._globalContext.user = user; + return this; + }, - function report(ex, rethrow) { - var args = _slice.call(arguments, 1); + /* + * Merge extra attributes to be sent along with the payload. + * + * @param {object} extra An object representing extra data [optional] + * @return {Raven} + */ + setExtraContext: function(extra) { + this._mergeContext('extra', extra); - if (lastExceptionStack) { - if (lastException === ex) { - return; // already caught by an inner catch block, ignore - } else { - processLastException(); - } - } + return this; + }, - var stack = TraceKit.computeStackTrace(ex); - lastExceptionStack = stack; - lastException = ex; - lastArgs = args; // If the stack trace is incomplete, wait for 2 seconds for - // slow slow IE to see if onerror occurs or not before reporting - // this exception; otherwise, we will end up with an incomplete - // stack trace + /* + * Merge tags to be sent along with the payload. + * + * @param {object} tags An object representing tags [optional] + * @return {Raven} + */ + setTagsContext: function(tags) { + this._mergeContext('tags', tags); - setTimeout(function () { - if (lastException === ex) { - processLastException(); - } - }, stack.incomplete ? 2000 : 0); + return this; + }, - if (rethrow !== false) { - throw ex; // re-throw to propagate to the top level (and cause window.onerror) - } - } + /* + * Clear all of the context. + * + * @return {Raven} + */ + clearContext: function() { + this._globalContext = {}; - report.subscribe = subscribe; - report.unsubscribe = unsubscribe; - report.uninstall = unsubscribeAll; - return report; -}(); -/** - * TraceKit.computeStackTrace: cross-browser stack traces in JavaScript - * - * Syntax: - * s = TraceKit.computeStackTrace(exception) // consider using TraceKit.report instead (see below) - * Returns: - * s.name - exception name - * s.message - exception message - * s.stack[i].url - JavaScript or HTML file URL - * s.stack[i].func - function name, or empty for anonymous functions (if guessing did not work) - * s.stack[i].args - arguments passed to the function, if known - * s.stack[i].line - line number, if known - * s.stack[i].column - column number, if known - * - * Supports: - * - Firefox: full stack trace with line numbers and unreliable column - * number on top frame - * - Opera 10: full stack trace with line and column numbers - * - Opera 9-: full stack trace with line numbers - * - Chrome: full stack trace with line and column numbers - * - Safari: line and column number for the topmost stacktrace element - * only - * - IE: no line numbers whatsoever - * - * Tries to guess names of anonymous functions by looking for assignments - * in the source code. In IE and Safari, we have to guess source file names - * by searching for function bodies inside all page scripts. This will not - * work for scripts that are loaded cross-domain. - * Here be dragons: some function names may be guessed incorrectly, and - * duplicate functions may be mismatched. - * - * TraceKit.computeStackTrace should only be used for tracing purposes. - * Logging of unhandled exceptions should be done with TraceKit.report, - * which builds on top of TraceKit.computeStackTrace and provides better - * IE support by utilizing the window.onerror event to retrieve information - * about the top of the stack. - * - * Note: In IE and Safari, no stack trace is recorded on the Error object, - * so computeStackTrace instead walks its *own* chain of callers. - * This means that: - * * in Safari, some methods may be missing from the stack trace; - * * in IE, the topmost function in the stack trace will always be the - * caller of computeStackTrace. - * - * This is okay for tracing (because you are likely to be calling - * computeStackTrace from the function you want to be the topmost element - * of the stack trace anyway), but not okay for logging unhandled - * exceptions (because your catch block will likely be far away from the - * inner function that actually caused the exception). - * - */ + return this; + }, + /* + * Get a copy of the current context. This cannot be mutated. + * + * @return {object} copy of context + */ + getContext: function() { + // lol javascript + return JSON.parse(stringify(this._globalContext)); + }, -TraceKit.computeStackTrace = function computeStackTraceWrapper() { - // Contents of Exception in various browsers. - // - // SAFARI: - // ex.message = Can't find variable: qq - // ex.line = 59 - // ex.sourceId = 580238192 - // ex.sourceURL = http://... - // ex.expressionBeginOffset = 96 - // ex.expressionCaretOffset = 98 - // ex.expressionEndOffset = 98 - // ex.name = ReferenceError - // - // FIREFOX: - // ex.message = qq is not defined - // ex.fileName = http://... - // ex.lineNumber = 59 - // ex.columnNumber = 69 - // ex.stack = ...stack trace... (see the example below) - // ex.name = ReferenceError - // - // CHROME: - // ex.message = qq is not defined - // ex.name = ReferenceError - // ex.type = not_defined - // ex.arguments = ['aa'] - // ex.stack = ...stack trace... - // - // INTERNET EXPLORER: - // ex.message = ... - // ex.name = ReferenceError - // - // OPERA: - // ex.message = ...message... (see the example below) - // ex.name = ReferenceError - // ex.opera#sourceloc = 11 (pretty much useless, duplicates the info in ex.message) - // ex.stacktrace = n/a; see 'opera:config#UserPrefs|Exceptions Have Stacktrace' + /* + * Set environment of application + * + * @param {string} environment Typically something like 'production'. + * @return {Raven} + */ + setEnvironment: function(environment) { + this._globalOptions.environment = environment; - /** - * Computes stack trace information from the stack property. - * Chrome and Gecko use this property. - * @param {Error} ex - * @return {?Object.} Stack trace information. + return this; + }, + + /* + * Set release version of application + * + * @param {string} release Typically something like a git SHA to identify version + * @return {Raven} */ - function computeStackTraceFromStackProp(ex) { - if (typeof ex.stack === 'undefined' || !ex.stack) return; - var chrome = /^\s*at (.*?) ?\(((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i, - gecko = /^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|\[native).*?|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i, - winjs = /^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i, - // Used to additionally parse URL/line/column from eval frames - geckoEval = /(\S+) line (\d+)(?: > eval line \d+)* > eval/i, - chromeEval = /\((\S*)(?::(\d+))(?::(\d+))\)/, - lines = ex.stack.split('\n'), - stack = [], - submatch, - parts, - element, - reference = /^(.*) is undefined$/.exec(ex.message); + setRelease: function(release) { + this._globalOptions.release = release; - for (var i = 0, j = lines.length; i < j; ++i) { - if (parts = chrome.exec(lines[i])) { - var isNative = parts[2] && parts[2].indexOf('native') === 0; // start of line + return this; + }, - var isEval = parts[2] && parts[2].indexOf('eval') === 0; // start of line + /* + * Set the dataCallback option + * + * @param {function} callback The callback to run which allows the + * data blob to be mutated before sending + * @return {Raven} + */ + setDataCallback: function(callback) { + var original = this._globalOptions.dataCallback; + this._globalOptions.dataCallback = keepOriginalCallback(original, callback); + return this; + }, - if (isEval && (submatch = chromeEval.exec(parts[2]))) { - // throw out eval line/column and use top-most line/column number - parts[2] = submatch[1]; // url + /* + * Set the breadcrumbCallback option + * + * @param {function} callback The callback to run which allows filtering + * or mutating breadcrumbs + * @return {Raven} + */ + setBreadcrumbCallback: function(callback) { + var original = this._globalOptions.breadcrumbCallback; + this._globalOptions.breadcrumbCallback = keepOriginalCallback(original, callback); + return this; + }, - parts[3] = submatch[2]; // line + /* + * Set the shouldSendCallback option + * + * @param {function} callback The callback to run which allows + * introspecting the blob before sending + * @return {Raven} + */ + setShouldSendCallback: function(callback) { + var original = this._globalOptions.shouldSendCallback; + this._globalOptions.shouldSendCallback = keepOriginalCallback(original, callback); + return this; + }, - parts[4] = submatch[3]; // column - } + /** + * Override the default HTTP transport mechanism that transmits data + * to the Sentry server. + * + * @param {function} transport Function invoked instead of the default + * `makeRequest` handler. + * + * @return {Raven} + */ + setTransport: function(transport) { + this._globalOptions.transport = transport; - element = { - url: !isNative ? parts[2] : null, - func: parts[1] || UNKNOWN_FUNCTION, - args: isNative ? [parts[2]] : [], - line: parts[3] ? +parts[3] : null, - column: parts[4] ? +parts[4] : null - }; - } else if (parts = winjs.exec(lines[i])) { - element = { - url: parts[2], - func: parts[1] || UNKNOWN_FUNCTION, - args: [], - line: +parts[3], - column: parts[4] ? +parts[4] : null - }; - } else if (parts = gecko.exec(lines[i])) { - var isEval = parts[3] && parts[3].indexOf(' > eval') > -1; + return this; + }, - if (isEval && (submatch = geckoEval.exec(parts[3]))) { - // throw out eval line/column and use top-most line number - parts[3] = submatch[1]; - parts[4] = submatch[2]; - parts[5] = null; // no column when eval - } else if (i === 0 && !parts[5] && typeof ex.columnNumber !== 'undefined') { - // FireFox uses this awesome columnNumber property for its top frame - // Also note, Firefox's column number is 0-based and everything else expects 1-based, - // so adding 1 - // NOTE: this hack doesn't work if top-most frame is eval - stack[0].column = ex.columnNumber + 1; - } + /* + * Get the latest raw exception that was captured by Raven. + * + * @return {error} + */ + lastException: function() { + return this._lastCapturedException; + }, - element = { - url: parts[3], - func: parts[1] || UNKNOWN_FUNCTION, - args: parts[2] ? parts[2].split(',') : [], - line: parts[4] ? +parts[4] : null, - column: parts[5] ? +parts[5] : null - }; - } else { - continue; - } + /* + * Get the last event id + * + * @return {string} + */ + lastEventId: function() { + return this._lastEventId; + }, - if (!element.func && element.line) { - element.func = UNKNOWN_FUNCTION; + /* + * Determine if Raven is setup and ready to go. + * + * @return {boolean} + */ + isSetup: function() { + if (!this._hasJSON) return false; // needs JSON support + if (!this._globalServer) { + if (!this.ravenNotConfiguredError) { + this.ravenNotConfiguredError = true; + this._logDebug('error', 'Error: Raven has not been configured.'); } - - stack.push(element); + return false; } + return true; + }, - if (!stack.length) { - return null; - } + afterLoad: function() { + // TODO: remove window dependence? - return { - name: ex.name, - message: ex.message, - url: getLocationHref(), - stack: stack - }; - } - /** - * Adds information about the first frame to incomplete stack traces. - * Safari and IE require this to get complete data on the first frame. - * @param {Object.} stackInfo Stack trace information from - * one of the compute* methods. - * @param {string} url The URL of the script that caused an error. - * @param {(number|string)} lineNo The line number of the script that - * caused an error. - * @param {string=} message The error generated by the browser, which - * hopefully contains the name of the object that caused the error. - * @return {boolean} Whether or not the stack information was - * augmented. - */ + // Attempt to initialize Raven on load + var RavenConfig = _window.RavenConfig; + if (RavenConfig) { + this.config(RavenConfig.dsn, RavenConfig.config).install(); + } + }, + showReportDialog: function(options) { + if ( + !_document // doesn't work without a document (React native) + ) + return; - function augmentStackTraceWithInitialElement(stackInfo, url, lineNo, message) { - var initial = { - url: url, - line: lineNo - }; + options = options || {}; - if (initial.url && initial.line) { - stackInfo.incomplete = false; + var lastEventId = options.eventId || this.lastEventId(); + if (!lastEventId) { + throw new RavenConfigError('Missing eventId'); + } - if (!initial.func) { - initial.func = UNKNOWN_FUNCTION; - } + var dsn = options.dsn || this._dsn; + if (!dsn) { + throw new RavenConfigError('Missing DSN'); + } - if (stackInfo.stack.length > 0) { - if (stackInfo.stack[0].url === initial.url) { - if (stackInfo.stack[0].line === initial.line) { - return false; // already in stack trace - } else if (!stackInfo.stack[0].line && stackInfo.stack[0].func === initial.func) { - stackInfo.stack[0].line = initial.line; - return false; - } - } - } + var encode = encodeURIComponent; + var qs = ''; + qs += '?eventId=' + encode(lastEventId); + qs += '&dsn=' + encode(dsn); - stackInfo.stack.unshift(initial); - stackInfo.partial = true; - return true; - } else { - stackInfo.incomplete = true; + var user = options.user || this._globalContext.user; + if (user) { + if (user.name) qs += '&name=' + encode(user.name); + if (user.email) qs += '&email=' + encode(user.email); } - return false; - } - /** - * Computes stack trace information by walking the arguments.caller - * chain at the time the exception occurred. This will cause earlier - * frames to be missed but is the only way to get any stack trace in - * Safari and IE. The top frame is restored by - * {@link augmentStackTraceWithInitialElement}. - * @param {Error} ex - * @return {?Object.} Stack trace information. - */ - + var globalServer = this._getGlobalServer(this._parseDSN(dsn)); - function computeStackTraceByWalkingCallerChain(ex, depth) { - var functionName = /function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i, - stack = [], - funcs = {}, - recursion = false, - parts, - item; + var script = _document.createElement('script'); + script.async = true; + script.src = globalServer + '/api/embed/error-page/' + qs; + (_document.head || _document.body).appendChild(script); + }, - for (var curr = computeStackTraceByWalkingCallerChain.caller; curr && !recursion; curr = curr.caller) { - if (curr === computeStackTrace || curr === TraceKit.report) { - // console.log('skipping internal function'); - continue; - } + /**** Private functions ****/ + _ignoreNextOnError: function() { + var self = this; + this._ignoreOnError += 1; + setTimeout(function() { + // onerror should trigger before setTimeout + self._ignoreOnError -= 1; + }); + }, - item = { - url: null, - func: UNKNOWN_FUNCTION, - line: null, - column: null - }; + _triggerEvent: function(eventType, options) { + // NOTE: `event` is a native browser thing, so let's avoid conflicting wiht it + var evt, key; - if (curr.name) { - item.func = curr.name; - } else if (parts = functionName.exec(curr.toString())) { - item.func = parts[1]; - } + if (!this._hasDocument) return; - if (typeof item.func === 'undefined') { - try { - item.func = parts.input.substring(0, parts.input.indexOf('{')); - } catch (e) {} - } + options = options || {}; - if (funcs['' + curr]) { - recursion = true; - } else { - funcs['' + curr] = true; - } + eventType = 'raven' + eventType.substr(0, 1).toUpperCase() + eventType.substr(1); - stack.push(item); + if (_document.createEvent) { + evt = _document.createEvent('HTMLEvents'); + evt.initEvent(eventType, true, true); + } else { + evt = _document.createEventObject(); + evt.eventType = eventType; } - if (depth) { - // console.log('depth is ' + depth); - // console.log('stack is ' + stack.length); - stack.splice(0, depth); + for (key in options) + if (hasKey(options, key)) { + evt[key] = options[key]; + } + + if (_document.createEvent) { + // IE9 if standards + _document.dispatchEvent(evt); + } else { + // IE8 regardless of Quirks or Standards + // IE9 if quirks + try { + _document.fireEvent('on' + evt.eventType.toLowerCase(), evt); + } catch (e) { + // Do nothing + } } + }, - var result = { - name: ex.name, - message: ex.message, - url: getLocationHref(), - stack: stack - }; - augmentStackTraceWithInitialElement(result, ex.sourceURL || ex.fileName, ex.line || ex.lineNumber, ex.message || ex.description); - return result; - } /** - * Computes a stack trace for an exception. - * @param {Error} ex - * @param {(string|number)=} depth - */ - + * Wraps addEventListener to capture UI breadcrumbs + * @param evtName the event name (e.g. "click") + * @returns {Function} + * @private + */ + _breadcrumbEventHandler: function(evtName) { + var self = this; + return function(evt) { + // reset keypress timeout; e.g. triggering a 'click' after + // a 'keypress' will reset the keypress debounce so that a new + // set of keypresses can be recorded + self._keypressTimeout = null; - function computeStackTrace(ex, depth) { - var stack = null; - depth = depth == null ? 0 : +depth; + // It's possible this handler might trigger multiple times for the same + // event (e.g. event propagation through node ancestors). Ignore if we've + // already captured the event. + if (self._lastCapturedEvent === evt) return; - try { - stack = computeStackTraceFromStackProp(ex); + self._lastCapturedEvent = evt; - if (stack) { - return stack; - } - } catch (e) { - if (TraceKit.debug) { - throw e; + // try/catch both: + // - accessing evt.target (see getsentry/raven-js#838, #768) + // - `htmlTreeAsString` because it's complex, and just accessing the DOM incorrectly + // can throw an exception in some circumstances. + var target; + try { + target = htmlTreeAsString(evt.target); + } catch (e) { + target = ''; } - } - try { - stack = computeStackTraceByWalkingCallerChain(ex, depth + 1); + self.captureBreadcrumb({ + category: 'ui.' + evtName, // e.g. ui.click, ui.input + message: target + }); + }; + }, - if (stack) { - return stack; - } - } catch (e) { - if (TraceKit.debug) { - throw e; + /** + * Wraps addEventListener to capture keypress UI events + * @returns {Function} + * @private + */ + _keypressEventHandler: function() { + var self = this, + debounceDuration = 1000; // milliseconds + + // TODO: if somehow user switches keypress target before + // debounce timeout is triggered, we will only capture + // a single breadcrumb from the FIRST target (acceptable?) + return function(evt) { + var target; + try { + target = evt.target; + } catch (e) { + // just accessing event properties can throw an exception in some rare circumstances + // see: https://github.com/getsentry/raven-js/issues/838 + return; } - } + var tagName = target && target.tagName; - return { - name: ex.name, - message: ex.message, - url: getLocationHref() - }; - } + // only consider keypress events on actual input elements + // this will disregard keypresses targeting body (e.g. tabbing + // through elements, hotkeys, etc) + if ( + !tagName || + (tagName !== 'INPUT' && tagName !== 'TEXTAREA' && !target.isContentEditable) + ) + return; - computeStackTrace.augmentStackTraceWithInitialElement = augmentStackTraceWithInitialElement; - computeStackTrace.computeStackTraceFromStackProp = computeStackTraceFromStackProp; - return computeStackTrace; -}(); + // record first keypress in a series, but ignore subsequent + // keypresses until debounce clears + var timeout = self._keypressTimeout; + if (!timeout) { + self._breadcrumbEventHandler('input')(evt); + } + clearTimeout(timeout); + self._keypressTimeout = setTimeout(function() { + self._keypressTimeout = null; + }, debounceDuration); + }; + }, -var tracekit = TraceKit; + /** + * Captures a breadcrumb of type "navigation", normalizing input URLs + * @param to the originating URL + * @param from the target URL + * @private + */ + _captureUrlChange: function(from, to) { + var parsedLoc = parseUrl(this._location.href); + var parsedTo = parseUrl(to); + var parsedFrom = parseUrl(from); -var stringify_1 = createCommonjsModule(function (module, exports) { - /* - json-stringify-safe - Like JSON.stringify, but doesn't throw on circular references. - - Originally forked from https://github.com/isaacs/json-stringify-safe - version 5.0.1 on 3/8/2017 and modified to handle Errors serialization - and IE8 compatibility. Tests for this are in test/vendor. - - ISC license: https://github.com/isaacs/json-stringify-safe/blob/master/LICENSE - */ - exports = module.exports = stringify; - exports.getSerialize = serializer; - - function indexOf(haystack, needle) { - for (var i = 0; i < haystack.length; ++i) { - if (haystack[i] === needle) return i; - } - - return -1; - } + // because onpopstate only tells you the "new" (to) value of location.href, and + // not the previous (from) value, we need to track the value of the current URL + // state ourselves + this._lastHref = to; - function stringify(obj, replacer, spaces, cycleReplacer) { - return JSON.stringify(obj, serializer(replacer, cycleReplacer), spaces); - } // https://github.com/ftlabs/js-abbreviate/blob/fa709e5f139e7770a71827b1893f22418097fbda/index.js#L95-L106 + // Use only the path component of the URL if the URL matches the current + // document (almost all the time when using pushState) + if (parsedLoc.protocol === parsedTo.protocol && parsedLoc.host === parsedTo.host) + to = parsedTo.relative; + if (parsedLoc.protocol === parsedFrom.protocol && parsedLoc.host === parsedFrom.host) + from = parsedFrom.relative; + this.captureBreadcrumb({ + category: 'navigation', + data: { + to: to, + from: from + } + }); + }, - function stringifyError(value) { - var err = { - // These properties are implemented as magical getters and don't show up in for in - stack: value.stack, - message: value.message, - name: value.name + _patchFunctionToString: function() { + var self = this; + self._originalFunctionToString = Function.prototype.toString; + // eslint-disable-next-line no-extend-native + Function.prototype.toString = function() { + if (typeof this === 'function' && this.__raven__) { + return self._originalFunctionToString.apply(this.__orig__, arguments); + } + return self._originalFunctionToString.apply(this, arguments); }; + }, - for (var i in value) { - if (Object.prototype.hasOwnProperty.call(value, i)) { - err[i] = value[i]; - } + _unpatchFunctionToString: function() { + if (this._originalFunctionToString) { + // eslint-disable-next-line no-extend-native + Function.prototype.toString = this._originalFunctionToString; } + }, - return err; - } + /** + * Wrap timer functions and event targets to catch errors and provide + * better metadata. + */ + _instrumentTryCatch: function() { + var self = this; - function serializer(replacer, cycleReplacer) { - var stack = []; - var keys = []; + var wrappedBuiltIns = self._wrappedBuiltIns; - if (cycleReplacer == null) { - cycleReplacer = function cycleReplacer(key, value) { - if (stack[0] === value) { - return '[Circular ~]'; + function wrapTimeFn(orig) { + return function(fn, t) { + // preserve arity + // Make a copy of the arguments to prevent deoptimization + // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments + var args = new Array(arguments.length); + for (var i = 0; i < args.length; ++i) { + args[i] = arguments[i]; + } + var originalCallback = args[0]; + if (isFunction(originalCallback)) { + args[0] = self.wrap(originalCallback); } - return '[Circular ~.' + keys.slice(0, indexOf(stack, value)).join('.') + ']'; + // IE < 9 doesn't support .call/.apply on setInterval/setTimeout, but it + // also supports only two arguments and doesn't care what this is, so we + // can just call the original function directly. + if (orig.apply) { + return orig.apply(this, args); + } else { + return orig(args[0], args[1]); + } }; } - return function (key, value) { - if (stack.length > 0) { - var thisPos = indexOf(stack, this); - ~thisPos ? stack.splice(thisPos + 1) : stack.push(this); - ~thisPos ? keys.splice(thisPos, Infinity, key) : keys.push(key); - - if (~indexOf(stack, value)) { - value = cycleReplacer.call(this, key, value); - } - } else { - stack.push(value); - } + var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; - return replacer == null ? value instanceof Error ? stringifyError(value) : value : replacer.call(this, key, value); - }; - } -}); -var stringify_2 = stringify_1.getSerialize; + function wrapEventTarget(global) { + var proto = _window[global] && _window[global].prototype; + if (proto && proto.hasOwnProperty && proto.hasOwnProperty('addEventListener')) { + fill( + proto, + 'addEventListener', + function(orig) { + return function(evtName, fn, capture, secure) { + // preserve arity + try { + if (fn && fn.handleEvent) { + fn.handleEvent = self.wrap(fn.handleEvent); + } + } catch (err) { + // can sometimes get 'Permission denied to access property "handle Event' + } -function RavenConfigError(message) { - this.name = 'RavenConfigError'; - this.message = message; -} + // More breadcrumb DOM capture ... done here and not in `_instrumentBreadcrumbs` + // so that we don't have more than one wrapper function + var before, clickHandler, keypressHandler; + + if ( + autoBreadcrumbs && + autoBreadcrumbs.dom && + (global === 'EventTarget' || global === 'Node') + ) { + // NOTE: generating multiple handlers per addEventListener invocation, should + // revisit and verify we can just use one (almost certainly) + clickHandler = self._breadcrumbEventHandler('click'); + keypressHandler = self._keypressEventHandler(); + before = function(evt) { + // need to intercept every DOM event in `before` argument, in case that + // same wrapped method is re-used for different events (e.g. mousemove THEN click) + // see #724 + if (!evt) return; + + var eventType; + try { + eventType = evt.type; + } catch (e) { + // just accessing event properties can throw an exception in some rare circumstances + // see: https://github.com/getsentry/raven-js/issues/838 + return; + } + if (eventType === 'click') return clickHandler(evt); + else if (eventType === 'keypress') return keypressHandler(evt); + }; + } + return orig.call( + this, + evtName, + self.wrap(fn, undefined, before), + capture, + secure + ); + }; + }, + wrappedBuiltIns + ); + fill( + proto, + 'removeEventListener', + function(orig) { + return function(evt, fn, capture, secure) { + try { + fn = fn && (fn.__raven_wrapper__ ? fn.__raven_wrapper__ : fn); + } catch (e) { + // ignore, accessing __raven_wrapper__ will throw in some Selenium environments + } + return orig.call(this, evt, fn, capture, secure); + }; + }, + wrappedBuiltIns + ); + } + } -RavenConfigError.prototype = new Error(); -RavenConfigError.prototype.constructor = RavenConfigError; -var configError = RavenConfigError; + fill(_window, 'setTimeout', wrapTimeFn, wrappedBuiltIns); + fill(_window, 'setInterval', wrapTimeFn, wrappedBuiltIns); + if (_window.requestAnimationFrame) { + fill( + _window, + 'requestAnimationFrame', + function(orig) { + return function(cb) { + return orig(self.wrap(cb)); + }; + }, + wrappedBuiltIns + ); + } -var wrapMethod = function wrapMethod(console, level, callback) { - var originalConsoleLevel = console[level]; - var originalConsole = console; + // event targets borrowed from bugsnag-js: + // https://github.com/bugsnag/bugsnag-js/blob/master/src/bugsnag.js#L666 + var eventTargets = [ + 'EventTarget', + 'Window', + 'Node', + 'ApplicationCache', + 'AudioTrackList', + 'ChannelMergerNode', + 'CryptoOperation', + 'EventSource', + 'FileReader', + 'HTMLUnknownElement', + 'IDBDatabase', + 'IDBRequest', + 'IDBTransaction', + 'KeyOperation', + 'MediaController', + 'MessagePort', + 'ModalWindow', + 'Notification', + 'SVGElementInstance', + 'Screen', + 'TextTrack', + 'TextTrackCue', + 'TextTrackList', + 'WebSocket', + 'WebSocketWorker', + 'Worker', + 'XMLHttpRequest', + 'XMLHttpRequestEventTarget', + 'XMLHttpRequestUpload' + ]; + for (var i = 0; i < eventTargets.length; i++) { + wrapEventTarget(eventTargets[i]); + } + }, - if (!(level in console)) { - return; - } + /** + * Instrument browser built-ins w/ breadcrumb capturing + * - XMLHttpRequests + * - DOM interactions (click/typing) + * - window.location changes + * - console + * + * Can be disabled or individually configured via the `autoBreadcrumbs` config option + */ + _instrumentBreadcrumbs: function() { + var self = this; + var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; - var sentryLevel = level === 'warn' ? 'warning' : level; + var wrappedBuiltIns = self._wrappedBuiltIns; - console[level] = function () { - var args = [].slice.call(arguments); - var msg = utils.safeJoin(args, ' '); - var data = { - level: sentryLevel, - logger: 'console', - extra: { - arguments: args - } - }; - - if (level === 'assert') { - if (args[0] === false) { - // Default browsers message - msg = 'Assertion failed: ' + (utils.safeJoin(args.slice(1), ' ') || 'console.assert'); - data.extra.arguments = args.slice(1); - callback && callback(msg, data); + function wrapProp(prop, xhr) { + if (prop in xhr && isFunction(xhr[prop])) { + fill(xhr, prop, function(orig) { + return self.wrap(orig); + }); // intentionally don't track filled methods on XHR instances } - } else { - callback && callback(msg, data); - } // this fails for some browsers. :( + } + if (autoBreadcrumbs.xhr && 'XMLHttpRequest' in _window) { + var xhrproto = _window.XMLHttpRequest && _window.XMLHttpRequest.prototype; + fill( + xhrproto, + 'open', + function(origOpen) { + return function(method, url) { + // preserve arity - if (originalConsoleLevel) { - // IE9 doesn't allow calling apply on console functions directly - // See: https://stackoverflow.com/questions/5472938/does-ie9-support-console-log-and-is-it-a-real-function#answer-5473193 - Function.prototype.apply.call(originalConsoleLevel, originalConsole, args); - } - }; -}; + // if Sentry key appears in URL, don't capture + if (isString(url) && url.indexOf(self._globalKey) === -1) { + this.__raven_xhr = { + method: method, + url: url, + status_code: null + }; + } -var console$1 = { - wrapMethod: wrapMethod -}; + return origOpen.apply(this, arguments); + }; + }, + wrappedBuiltIns + ); + + fill( + xhrproto, + 'send', + function(origSend) { + return function() { + // preserve arity + var xhr = this; -/*global XDomainRequest:false */ + function onreadystatechangeHandler() { + if (xhr.__raven_xhr && xhr.readyState === 4) { + try { + // touching statusCode in some platforms throws + // an exception + xhr.__raven_xhr.status_code = xhr.status; + } catch (e) { + /* do nothing */ + } -var isError = utils.isError; -var isObject = utils.isObject; -var isErrorEvent = utils.isErrorEvent; -var isUndefined = utils.isUndefined; -var isFunction = utils.isFunction; -var isString = utils.isString; -var isArray = utils.isArray; -var isEmptyObject = utils.isEmptyObject; -var each = utils.each; -var objectMerge = utils.objectMerge; -var truncate = utils.truncate; -var objectFrozen = utils.objectFrozen; -var hasKey = utils.hasKey; -var joinRegExp = utils.joinRegExp; -var urlencode = utils.urlencode; -var uuid4 = utils.uuid4; -var htmlTreeAsString = utils.htmlTreeAsString; -var isSameException = utils.isSameException; -var isSameStacktrace = utils.isSameStacktrace; -var parseUrl = utils.parseUrl; -var fill = utils.fill; -var supportsFetch = utils.supportsFetch; -var wrapConsoleMethod = console$1.wrapMethod; -var dsnKeys = 'source protocol user pass host port path'.split(' '); -var dsnPattern = /^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/; + self.captureBreadcrumb({ + type: 'http', + category: 'xhr', + data: xhr.__raven_xhr + }); + } + } -function now() { - return +new Date(); -} // This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) + var props = ['onload', 'onerror', 'onprogress']; + for (var j = 0; j < props.length; j++) { + wrapProp(props[j], xhr); + } + if ('onreadystatechange' in xhr && isFunction(xhr.onreadystatechange)) { + fill( + xhr, + 'onreadystatechange', + function(orig) { + return self.wrap(orig, undefined, onreadystatechangeHandler); + } /* intentionally don't track this instrumentation */ + ); + } else { + // if onreadystatechange wasn't actually set by the page on this xhr, we + // are free to set our own and capture the breadcrumb + xhr.onreadystatechange = onreadystatechangeHandler; + } -var _window$1 = typeof window !== 'undefined' ? window : typeof commonjsGlobal !== 'undefined' ? commonjsGlobal : typeof self !== 'undefined' ? self : {}; + return origSend.apply(this, arguments); + }; + }, + wrappedBuiltIns + ); + } -var _document = _window$1.document; -var _navigator = _window$1.navigator; + if (autoBreadcrumbs.xhr && supportsFetch()) { + fill( + _window, + 'fetch', + function(origFetch) { + return function() { + // preserve arity + // Make a copy of the arguments to prevent deoptimization + // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments + var args = new Array(arguments.length); + for (var i = 0; i < args.length; ++i) { + args[i] = arguments[i]; + } -function keepOriginalCallback(original, callback) { - return isFunction(callback) ? function (data) { - return callback(data, original); - } : callback; -} // First, check for JSON support -// If there is no JSON, we no-op the core features of Raven -// since JSON is required to encode the payload + var fetchInput = args[0]; + var method = 'GET'; + var url; + if (typeof fetchInput === 'string') { + url = fetchInput; + } else if ('Request' in _window && fetchInput instanceof _window.Request) { + url = fetchInput.url; + if (fetchInput.method) { + method = fetchInput.method; + } + } else { + url = '' + fetchInput; + } -function Raven$1() { - this._hasJSON = !!(_typeof(JSON) === 'object' && JSON.stringify); // Raven can run in contexts where there's no document (react-native) + // if Sentry key appears in URL, don't capture, as it's our own request + if (url.indexOf(self._globalKey) !== -1) { + return origFetch.apply(this, args); + } - this._hasDocument = !isUndefined(_document); - this._hasNavigator = !isUndefined(_navigator); - this._lastCapturedException = null; - this._lastData = null; - this._lastEventId = null; - this._globalServer = null; - this._globalKey = null; - this._globalProject = null; - this._globalContext = {}; - this._globalOptions = { - // SENTRY_RELEASE can be injected by https://github.com/getsentry/sentry-webpack-plugin - release: _window$1.SENTRY_RELEASE && _window$1.SENTRY_RELEASE.id, - logger: 'javascript', - ignoreErrors: [], - ignoreUrls: [], - whitelistUrls: [], - includePaths: [], - headers: null, - collectWindowErrors: true, - maxMessageLength: 0, - // By default, truncates URL values to 250 chars - maxUrlLength: 250, - stackTraceLimit: 50, - autoBreadcrumbs: true, - instrument: true, - sampleRate: 1 - }; - this._fetchDefaults = { - method: 'POST', - keepalive: true, - referrerPolicy: 'origin' - }; - this._ignoreOnError = 0; - this._isRavenInstalled = false; - this._originalErrorStackTraceLimit = Error.stackTraceLimit; // capture references to window.console *and* all its methods first - // before the console plugin has a chance to monkey patch + if (args[1] && args[1].method) { + method = args[1].method; + } - this._originalConsole = _window$1.console || {}; - this._originalConsoleMethods = {}; - this._plugins = []; - this._startTime = now(); - this._wrappedBuiltIns = []; - this._breadcrumbs = []; - this._lastCapturedEvent = null; - this._keypressTimeout; - this._location = _window$1.location; - this._lastHref = this._location && this._location.href; + var fetchData = { + method: method, + url: url, + status_code: null + }; - this._resetBackoff(); // eslint-disable-next-line guard-for-in + return origFetch + .apply(this, args) + .then(function(response) { + fetchData.status_code = response.status; + + self.captureBreadcrumb({ + type: 'http', + category: 'fetch', + data: fetchData + }); + + return response; + }) + ['catch'](function(err) { + // if there is an error performing the request + self.captureBreadcrumb({ + type: 'http', + category: 'fetch', + data: fetchData, + level: 'error' + }); + + throw err; + }); + }; + }, + wrappedBuiltIns + ); + } + // Capture breadcrumbs from any click that is unhandled / bubbled up all the way + // to the document. Do this before we instrument addEventListener. + if (autoBreadcrumbs.dom && this._hasDocument) { + if (_document.addEventListener) { + _document.addEventListener('click', self._breadcrumbEventHandler('click'), false); + _document.addEventListener('keypress', self._keypressEventHandler(), false); + } else if (_document.attachEvent) { + // IE8 Compatibility + _document.attachEvent('onclick', self._breadcrumbEventHandler('click')); + _document.attachEvent('onkeypress', self._keypressEventHandler()); + } + } - for (var method in this._originalConsole) { - this._originalConsoleMethods[method] = this._originalConsole[method]; - } -} -/* - * The core Raven singleton - * - * @this {Raven} - */ + // record navigation (URL) changes + // NOTE: in Chrome App environment, touching history.pushState, *even inside + // a try/catch block*, will cause Chrome to output an error to console.error + // borrowed from: https://github.com/angular/angular.js/pull/13945/files + var chrome = _window.chrome; + var isChromePackagedApp = chrome && chrome.app && chrome.app.runtime; + var hasPushAndReplaceState = + !isChromePackagedApp && + _window.history && + history.pushState && + history.replaceState; + if (autoBreadcrumbs.location && hasPushAndReplaceState) { + // TODO: remove onpopstate handler on uninstall() + var oldOnPopState = _window.onpopstate; + _window.onpopstate = function() { + var currentHref = self._location.href; + self._captureUrlChange(self._lastHref, currentHref); + if (oldOnPopState) { + return oldOnPopState.apply(this, arguments); + } + }; -Raven$1.prototype = { - // Hardcode version string so that raven source can be loaded directly via - // webpack (using a build step causes webpack #1617). Grunt verifies that - // this value matches package.json during build. - // See: https://github.com/getsentry/raven-js/issues/465 - VERSION: '3.22.2', - debug: false, - TraceKit: tracekit, - // alias to TraceKit + var historyReplacementFunction = function(origHistFunction) { + // note history.pushState.length is 0; intentionally not declaring + // params to preserve 0 arity + return function(/* state, title, url */) { + var url = arguments.length > 2 ? arguments[2] : undefined; - /* - * Configure Raven with a DSN and extra options - * - * @param {string} dsn The public Sentry DSN - * @param {object} options Set of global options [optional] - * @return {Raven} - */ - config: function config(dsn, options) { - var self = this; + // url argument is optional + if (url) { + // coerce to string (this is what pushState does) + self._captureUrlChange(self._lastHref, url + ''); + } - if (self._globalServer) { - this._logDebug('error', 'Error: Raven has already been configured'); + return origHistFunction.apply(this, arguments); + }; + }; - return self; + fill(history, 'pushState', historyReplacementFunction, wrappedBuiltIns); + fill(history, 'replaceState', historyReplacementFunction, wrappedBuiltIns); } - if (!dsn) return self; - var globalOptions = self._globalOptions; // merge in options + if (autoBreadcrumbs.console && 'console' in _window && console.log) { + // console + var consoleMethodCallback = function(msg, data) { + self.captureBreadcrumb({ + message: msg, + level: data.level, + category: 'console' + }); + }; - if (options) { - each(options, function (key, value) { - // tags and extra are special and need to be put into context - if (key === 'tags' || key === 'extra' || key === 'user') { - self._globalContext[key] = value; - } else { - globalOptions[key] = value; - } + each(['debug', 'info', 'warn', 'error', 'log'], function(_, level) { + wrapConsoleMethod(console, level, consoleMethodCallback); }); } + }, - self.setDSN(dsn); // "Script error." is hard coded into browsers for errors that it can't read. - // this is the result of a script being pulled in from an external domain and CORS. - - globalOptions.ignoreErrors.push(/^Script error\.?$/); - globalOptions.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/); // join regexp rules into one big rule + _restoreBuiltIns: function() { + // restore any wrapped builtins + var builtin; + while (this._wrappedBuiltIns.length) { + builtin = this._wrappedBuiltIns.shift(); - globalOptions.ignoreErrors = joinRegExp(globalOptions.ignoreErrors); - globalOptions.ignoreUrls = globalOptions.ignoreUrls.length ? joinRegExp(globalOptions.ignoreUrls) : false; - globalOptions.whitelistUrls = globalOptions.whitelistUrls.length ? joinRegExp(globalOptions.whitelistUrls) : false; - globalOptions.includePaths = joinRegExp(globalOptions.includePaths); - globalOptions.maxBreadcrumbs = Math.max(0, Math.min(globalOptions.maxBreadcrumbs || 100, 100)); // default and hard limit is 100 + var obj = builtin[0], + name = builtin[1], + orig = builtin[2]; - var autoBreadcrumbDefaults = { - xhr: true, - console: true, - dom: true, - location: true, - sentry: true - }; - var autoBreadcrumbs = globalOptions.autoBreadcrumbs; + obj[name] = orig; + } + }, - if ({}.toString.call(autoBreadcrumbs) === '[object Object]') { - autoBreadcrumbs = objectMerge(autoBreadcrumbDefaults, autoBreadcrumbs); - } else if (autoBreadcrumbs !== false) { - autoBreadcrumbs = autoBreadcrumbDefaults; + _restoreConsole: function() { + // eslint-disable-next-line guard-for-in + for (var method in this._originalConsoleMethods) { + this._originalConsole[method] = this._originalConsoleMethods[method]; } + }, - globalOptions.autoBreadcrumbs = autoBreadcrumbs; - var instrumentDefaults = { - tryCatch: true - }; - var instrument = globalOptions.instrument; + _drainPlugins: function() { + var self = this; - if ({}.toString.call(instrument) === '[object Object]') { - instrument = objectMerge(instrumentDefaults, instrument); - } else if (instrument !== false) { - instrument = instrumentDefaults; + // FIX ME TODO + each(this._plugins, function(_, plugin) { + var installer = plugin[0]; + var args = plugin[1]; + installer.apply(self, [self].concat(args)); + }); + }, + + _parseDSN: function(str) { + var m = dsnPattern.exec(str), + dsn = {}, + i = 7; + + try { + while (i--) dsn[dsnKeys[i]] = m[i] || ''; + } catch (e) { + throw new RavenConfigError('Invalid DSN: ' + str); } - globalOptions.instrument = instrument; - tracekit.collectWindowErrors = !!globalOptions.collectWindowErrors; // return for chaining + if (dsn.pass && !this._globalOptions.allowSecretKey) { + throw new RavenConfigError( + 'Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key' + ); + } - return self; + return dsn; }, - /* - * Installs a global window.onerror error handler - * to capture and report uncaught exceptions. - * At this point, install() is required to be called due - * to the way TraceKit is set up. - * - * @return {Raven} - */ - install: function install() { - var self = this; - - if (self.isSetup() && !self._isRavenInstalled) { - tracekit.report.subscribe(function () { - self._handleOnErrorStackInfo.apply(self, arguments); - }); - - self._patchFunctionToString(); - - if (self._globalOptions.instrument && self._globalOptions.instrument.tryCatch) { - self._instrumentTryCatch(); - } - - if (self._globalOptions.autoBreadcrumbs) self._instrumentBreadcrumbs(); // Install all of the plugins - - self._drainPlugins(); + _getGlobalServer: function(uri) { + // assemble the endpoint from the uri pieces + var globalServer = '//' + uri.host + (uri.port ? ':' + uri.port : ''); - self._isRavenInstalled = true; + if (uri.protocol) { + globalServer = uri.protocol + ':' + globalServer; } + return globalServer; + }, - Error.stackTraceLimit = self._globalOptions.stackTraceLimit; - return this; + _handleOnErrorStackInfo: function() { + // if we are intentionally ignoring errors via onerror, bail out + if (!this._ignoreOnError) { + this._handleStackInfo.apply(this, arguments); + } }, - /* - * Set the DSN (can be called multiple time unlike config) - * - * @param {string} dsn The public Sentry DSN - */ - setDSN: function setDSN(dsn) { - var self = this, - uri = self._parseDSN(dsn), - lastSlash = uri.path.lastIndexOf('/'), - path = uri.path.substr(1, lastSlash); + _handleStackInfo: function(stackInfo, options) { + var frames = this._prepareFrames(stackInfo, options); - self._dsn = dsn; - self._globalKey = uri.user; - self._globalSecret = uri.pass && uri.pass.substr(1); - self._globalProject = uri.path.substr(lastSlash + 1); - self._globalServer = self._getGlobalServer(uri); - self._globalEndpoint = self._globalServer + '/' + path + 'api/' + self._globalProject + '/store/'; // Reset backoff state since we may be pointing at a - // new project/server + this._triggerEvent('handle', { + stackInfo: stackInfo, + options: options + }); - this._resetBackoff(); + this._processException( + stackInfo.name, + stackInfo.message, + stackInfo.url, + stackInfo.lineno, + frames, + options + ); }, - /* - * Wrap code within a context so Raven can capture errors - * reliably across domains that is executed immediately. - * - * @param {object} options A specific set of options for this context [optional] - * @param {function} func The callback to be immediately executed within the context - * @param {array} args An array of arguments to be called with the callback [optional] - */ - context: function context(options, func, args) { - if (isFunction(options)) { - args = func || []; - func = options; - options = undefined; - } + _prepareFrames: function(stackInfo, options) { + var self = this; + var frames = []; + if (stackInfo.stack && stackInfo.stack.length) { + each(stackInfo.stack, function(i, stack) { + var frame = self._normalizeFrame(stack, stackInfo.url); + if (frame) { + frames.push(frame); + } + }); - return this.wrap(options, func).apply(this, args); + // e.g. frames captured via captureMessage throw + if (options && options.trimHeadFrames) { + for (var j = 0; j < options.trimHeadFrames && j < frames.length; j++) { + frames[j].in_app = false; + } + } + } + frames = frames.slice(0, this._globalOptions.stackTraceLimit); + return frames; }, - /* - * Wrap code within a context and returns back a new function to be executed - * - * @param {object} options A specific set of options for this context [optional] - * @param {function} func The function to be wrapped in a new context - * @param {function} func A function to call before the try/catch wrapper [optional, private] - * @return {function} The newly wrapped functions with a context - */ - wrap: function wrap(options, func, _before) { - var self = this; // 1 argument has been passed, and it's not a function - // so just return it - - if (isUndefined(func) && !isFunction(options)) { - return options; - } // options is optional + _normalizeFrame: function(frame, stackInfoUrl) { + // normalize the frames data + var normalized = { + filename: frame.url, + lineno: frame.line, + colno: frame.column, + function: frame.func || '?' + }; + // Case when we don't have any information about the error + // E.g. throwing a string or raw object, instead of an `Error` in Firefox + // Generating synthetic error doesn't add any value here + // + // We should probably somehow let a user know that they should fix their code + if (!frame.url) { + normalized.filename = stackInfoUrl; // fallback to whole stacks url from onerror handler + } - if (isFunction(options)) { - func = options; - options = undefined; - } // At this point, we've passed along 2 arguments, and the second one - // is not a function either, so we'll just return the second argument. + normalized.in_app = !// determine if an exception came from outside of our app + // first we check the global includePaths list. + ( + (!!this._globalOptions.includePaths.test && + !this._globalOptions.includePaths.test(normalized.filename)) || + // Now we check for fun, if the function name is Raven or TraceKit + /(Raven|TraceKit)\./.test(normalized['function']) || + // finally, we do a last ditch effort and check for raven.min.js + /raven\.(min\.)?js$/.test(normalized.filename) + ); + return normalized; + }, - if (!isFunction(func)) { - return func; - } // We don't wanna wrap it twice! + _processException: function(type, message, fileurl, lineno, frames, options) { + var prefixedMessage = (type ? type + ': ' : '') + (message || ''); + if ( + !!this._globalOptions.ignoreErrors.test && + (this._globalOptions.ignoreErrors.test(message) || + this._globalOptions.ignoreErrors.test(prefixedMessage)) + ) { + return; + } + var stacktrace; - try { - if (func.__raven__) { - return func; - } // If this has already been wrapped in the past, return that + if (frames && frames.length) { + fileurl = frames[0].filename || fileurl; + // Sentry expects frames oldest to newest + // and JS sends them as newest to oldest + frames.reverse(); + stacktrace = {frames: frames}; + } else if (fileurl) { + stacktrace = { + frames: [ + { + filename: fileurl, + lineno: lineno, + in_app: true + } + ] + }; + } + if ( + !!this._globalOptions.ignoreUrls.test && + this._globalOptions.ignoreUrls.test(fileurl) + ) { + return; + } - if (func.__raven_wrapper__) { - return func.__raven_wrapper__; - } - } catch (e) { - // Just accessing custom props in some Selenium environments - // can cause a "Permission denied" exception (see raven-js#495). - // Bail on wrapping and return the function as-is (defers to window.onerror). - return func; + if ( + !!this._globalOptions.whitelistUrls.test && + !this._globalOptions.whitelistUrls.test(fileurl) + ) { + return; } - function wrapped() { - var args = [], - i = arguments.length, - deep = !options || options && options.deep !== false; + var data = objectMerge( + { + // sentry.interfaces.Exception + exception: { + values: [ + { + type: type, + value: message, + stacktrace: stacktrace + } + ] + }, + culprit: fileurl + }, + options + ); - if (_before && isFunction(_before)) { - _before.apply(this, arguments); - } // Recursively wrap all of a function's arguments that are - // functions themselves. + // Fire away! + this._send(data); + }, + _trimPacket: function(data) { + // For now, we only want to truncate the two different messages + // but this could/should be expanded to just trim everything + var max = this._globalOptions.maxMessageLength; + if (data.message) { + data.message = truncate(data.message, max); + } + if (data.exception) { + var exception = data.exception.values[0]; + exception.value = truncate(exception.value, max); + } - while (i--) { - args[i] = deep ? self.wrap(options, arguments[i]) : arguments[i]; + var request = data.request; + if (request) { + if (request.url) { + request.url = truncate(request.url, this._globalOptions.maxUrlLength); + } + if (request.Referer) { + request.Referer = truncate(request.Referer, this._globalOptions.maxUrlLength); } + } - try { - // Attempt to invoke user-land function - // NOTE: If you are a Sentry user, and you are seeing this stack frame, it - // means Raven caught an error invoking your application code. This is - // expected behavior and NOT indicative of a bug with Raven.js. - return func.apply(this, args); - } catch (e) { - self._ignoreNextOnError(); + if (data.breadcrumbs && data.breadcrumbs.values) + this._trimBreadcrumbs(data.breadcrumbs); - self.captureException(e, options); - throw e; - } - } // copy over properties of the old function + return data; + }, + + /** + * Truncate breadcrumb values (right now just URLs) + */ + _trimBreadcrumbs: function(breadcrumbs) { + // known breadcrumb properties with urls + // TODO: also consider arbitrary prop values that start with (https?)?:// + var urlProps = ['to', 'from', 'url'], + urlProp, + crumb, + data; + for (var i = 0; i < breadcrumbs.values.length; ++i) { + crumb = breadcrumbs.values[i]; + if ( + !crumb.hasOwnProperty('data') || + !isObject(crumb.data) || + objectFrozen(crumb.data) + ) + continue; - for (var property in func) { - if (hasKey(func, property)) { - wrapped[property] = func[property]; + data = objectMerge({}, crumb.data); + for (var j = 0; j < urlProps.length; ++j) { + urlProp = urlProps[j]; + if (data.hasOwnProperty(urlProp) && data[urlProp]) { + data[urlProp] = truncate(data[urlProp], this._globalOptions.maxUrlLength); + } } + breadcrumbs.values[i].data = data; } - - wrapped.prototype = func.prototype; - func.__raven_wrapper__ = wrapped; // Signal that this function has been wrapped/filled already - // for both debugging and to prevent it to being wrapped/filled twice - - wrapped.__raven__ = true; - wrapped.__orig__ = func; - return wrapped; }, - /* - * Uninstalls the global error handler. - * - * @return {Raven} - */ - uninstall: function uninstall() { - tracekit.report.uninstall(); + _getHttpData: function() { + if (!this._hasNavigator && !this._hasDocument) return; + var httpData = {}; - this._unpatchFunctionToString(); + if (this._hasNavigator && _navigator.userAgent) { + httpData.headers = { + 'User-Agent': navigator.userAgent + }; + } - this._restoreBuiltIns(); + // Check in `window` instead of `document`, as we may be in ServiceWorker environment + if (_window.location && _window.location.href) { + httpData.url = _window.location.href; + } - this._restoreConsole(); + if (this._hasDocument && _document.referrer) { + if (!httpData.headers) httpData.headers = {}; + httpData.headers.Referer = _document.referrer; + } - Error.stackTraceLimit = this._originalErrorStackTraceLimit; - this._isRavenInstalled = false; - return this; + return httpData; }, - /* - * Manually capture an exception and send it over to Sentry - * - * @param {error} ex An exception to be logged - * @param {object} options A specific set of options for this error [optional] - * @return {Raven} - */ - captureException: function captureException(ex, options) { - options = objectMerge({ - trimHeadFrames: 0 - }, options ? options : {}); // Cases for sending ex as a message, rather than an exception + _resetBackoff: function() { + this._backoffDuration = 0; + this._backoffStart = null; + }, - var isNotError = !isError(ex); - var isNotErrorEvent = !isErrorEvent(ex); - var isErrorEventWithoutError = isErrorEvent(ex) && !ex.error; + _shouldBackoff: function() { + return this._backoffDuration && now() - this._backoffStart < this._backoffDuration; + }, - if (isNotError && isNotErrorEvent || isErrorEventWithoutError) { - return this.captureMessage(ex, objectMerge(options, { - stacktrace: true, - // if we fall back to captureMessage, default to attempting a new trace - trimHeadFrames: options.trimHeadFrames + 1 - })); - } // Get actual Error from ErrorEvent + /** + * Returns true if the in-process data payload matches the signature + * of the previously-sent data + * + * NOTE: This has to be done at this level because TraceKit can generate + * data from window.onerror WITHOUT an exception object (IE8, IE9, + * other old browsers). This can take the form of an "exception" + * data object with a single frame (derived from the onerror args). + */ + _isRepeatData: function(current) { + var last = this._lastData; + if ( + !last || + current.message !== last.message || // defined for captureMessage + current.culprit !== last.culprit // defined for captureException/onerror + ) + return false; - if (isErrorEvent(ex)) ex = ex.error; // Store the raw exception object for potential debugging and introspection + // Stacktrace interface (i.e. from captureMessage) + if (current.stacktrace || last.stacktrace) { + return isSameStacktrace(current.stacktrace, last.stacktrace); + } else if (current.exception || last.exception) { + // Exception interface (i.e. from captureException/onerror) + return isSameException(current.exception, last.exception); + } - this._lastCapturedException = ex; // TraceKit.report will re-raise any exception passed to it, - // which means you have to wrap it in try/catch. Instead, we - // can wrap it here and only re-raise if TraceKit.report - // raises an exception different from the one we asked to - // report on. - - try { - var stack = tracekit.computeStackTrace(ex); - - this._handleStackInfo(stack, options); - } catch (ex1) { - if (ex !== ex1) { - throw ex1; - } - } - - return this; + return true; }, - /* - * Manually send a message to Sentry - * - * @param {string} msg A plain message to be captured in Sentry - * @param {object} options A specific set of options for this message [optional] - * @return {Raven} - */ - captureMessage: function captureMessage(msg, options) { - // config() automagically converts ignoreErrors from a list to a RegExp so we need to test for an - // early call; we'll error on the side of logging anything called before configuration since it's - // probably something you should see: - if (!!this._globalOptions.ignoreErrors.test && this._globalOptions.ignoreErrors.test(msg)) { + _setBackoffState: function(request) { + // If we are already in a backoff state, don't change anything + if (this._shouldBackoff()) { return; } - options = options || {}; - var data = objectMerge({ - message: msg + '' // Make sure it's actually a string + var status = request.status; - }, options); - var ex; // Generate a "synthetic" stack trace from this point. - // NOTE: If you are a Sentry user, and you are seeing this stack frame, it is NOT indicative - // of a bug with Raven.js. Sentry generates synthetic traces either by configuration, - // or if it catches a thrown object without a "stack" property. + // 400 - project_id doesn't exist or some other fatal + // 401 - invalid/revoked dsn + // 429 - too many requests + if (!(status === 400 || status === 401 || status === 429)) return; + var retry; try { - throw new Error(msg); - } catch (ex1) { - ex = ex1; - } // null exception name so `Error` isn't prefixed to msg + // If Retry-After is not in Access-Control-Expose-Headers, most + // browsers will throw an exception trying to access it + if (supportsFetch()) { + retry = request.headers.get('Retry-After'); + } else { + retry = request.getResponseHeader('Retry-After'); + } + + // Retry-After is returned in seconds + retry = parseInt(retry, 10) * 1000; + } catch (e) { + /* eslint no-empty:0 */ + } + this._backoffDuration = retry + ? // If Sentry server returned a Retry-After value, use it + retry + : // Otherwise, double the last backoff duration (starts at 1 sec) + this._backoffDuration * 2 || 1000; - ex.name = null; - var stack = tracekit.computeStackTrace(ex); // stack[0] is `throw new Error(msg)` call itself, we are interested in the frame that was just before that, stack[1] + this._backoffStart = now(); + }, - var initialCall = isArray(stack.stack) && stack.stack[1]; - var fileurl = initialCall && initialCall.url || ''; + _send: function(data) { + var globalOptions = this._globalOptions; - if (!!this._globalOptions.ignoreUrls.test && this._globalOptions.ignoreUrls.test(fileurl)) { - return; - } + var baseData = { + project: this._globalProject, + logger: globalOptions.logger, + platform: 'javascript' + }, + httpData = this._getHttpData(); - if (!!this._globalOptions.whitelistUrls.test && !this._globalOptions.whitelistUrls.test(fileurl)) { - return; + if (httpData) { + baseData.request = httpData; } - if (this._globalOptions.stacktrace || options && options.stacktrace) { - options = objectMerge({ - // fingerprint on msg, not stack trace (legacy behavior, could be - // revisited) - fingerprint: msg, - // since we know this is a synthetic trace, the top N-most frames - // MUST be from Raven.js, so mark them as in_app later by setting - // trimHeadFrames - trimHeadFrames: (options.trimHeadFrames || 0) + 1 - }, options); + // HACK: delete `trimHeadFrames` to prevent from appearing in outbound payload + if (data.trimHeadFrames) delete data.trimHeadFrames; - var frames = this._prepareFrames(stack, options); + data = objectMerge(baseData, data); - data.stacktrace = { - // Sentry expects frames oldest to newest - frames: frames.reverse() + // Merge in the tags and extra separately since objectMerge doesn't handle a deep merge + data.tags = objectMerge(objectMerge({}, this._globalContext.tags), data.tags); + data.extra = objectMerge(objectMerge({}, this._globalContext.extra), data.extra); + + // Send along our own collected metadata with extra + data.extra['session:duration'] = now() - this._startTime; + + if (this._breadcrumbs && this._breadcrumbs.length > 0) { + // intentionally make shallow copy so that additions + // to breadcrumbs aren't accidentally sent in this request + data.breadcrumbs = { + values: [].slice.call(this._breadcrumbs, 0) }; - } // Fire away! + } + + if (this._globalContext.user) { + // sentry.interfaces.User + data.user = this._globalContext.user; + } + // Include the environment if it's defined in globalOptions + if (globalOptions.environment) data.environment = globalOptions.environment; - this._send(data); + // Include the release if it's defined in globalOptions + if (globalOptions.release) data.release = globalOptions.release; - return this; - }, - captureBreadcrumb: function captureBreadcrumb(obj) { - var crumb = objectMerge({ - timestamp: now() / 1000 - }, obj); + // Include server_name if it's defined in globalOptions + if (globalOptions.serverName) data.server_name = globalOptions.serverName; - if (isFunction(this._globalOptions.breadcrumbCallback)) { - var result = this._globalOptions.breadcrumbCallback(crumb); + data = this._sanitizeData(data); - if (isObject(result) && !isEmptyObject(result)) { - crumb = result; - } else if (result === false) { - return this; + // Cleanup empty properties before sending them to the server + Object.keys(data).forEach(function(key) { + if (data[key] == null || data[key] === '' || isEmptyObject(data[key])) { + delete data[key]; } - } - - this._breadcrumbs.push(crumb); + }); - if (this._breadcrumbs.length > this._globalOptions.maxBreadcrumbs) { - this._breadcrumbs.shift(); + if (isFunction(globalOptions.dataCallback)) { + data = globalOptions.dataCallback(data) || data; } - return this; - }, - addPlugin: function addPlugin(plugin - /*arg1, arg2, ... argN*/ - ) { - var pluginArgs = [].slice.call(arguments, 1); + // Why?????????? + if (!data || isEmptyObject(data)) { + return; + } - this._plugins.push([plugin, pluginArgs]); + // Check if the request should be filtered or not + if ( + isFunction(globalOptions.shouldSendCallback) && + !globalOptions.shouldSendCallback(data) + ) { + return; + } - if (this._isRavenInstalled) { - this._drainPlugins(); + // Backoff state: Sentry server previously responded w/ an error (e.g. 429 - too many requests), + // so drop requests until "cool-off" period has elapsed. + if (this._shouldBackoff()) { + this._logDebug('warn', 'Raven dropped error due to backoff: ', data); + return; } - return this; + if (typeof globalOptions.sampleRate === 'number') { + if (Math.random() < globalOptions.sampleRate) { + this._sendProcessedPayload(data); + } + } else { + this._sendProcessedPayload(data); + } }, - /* - * Set/clear a user to be sent along with the payload. - * - * @param {object} user An object representing user data [optional] - * @return {Raven} - */ - setUserContext: function setUserContext(user) { - // Intentionally do not merge here since that's an unexpected behavior. - this._globalContext.user = user; - return this; + _sanitizeData: function(data) { + return sanitize(data, this._globalOptions.sanitizeKeys); }, - /* - * Merge extra attributes to be sent along with the payload. - * - * @param {object} extra An object representing extra data [optional] - * @return {Raven} - */ - setExtraContext: function setExtraContext(extra) { - this._mergeContext('extra', extra); - - return this; + _getUuid: function() { + return uuid4(); }, - /* - * Merge tags to be sent along with the payload. - * - * @param {object} tags An object representing tags [optional] - * @return {Raven} - */ - setTagsContext: function setTagsContext(tags) { - this._mergeContext('tags', tags); + _sendProcessedPayload: function(data, callback) { + var self = this; + var globalOptions = this._globalOptions; - return this; - }, + if (!this.isSetup()) return; - /* - * Clear all of the context. - * - * @return {Raven} - */ - clearContext: function clearContext() { - this._globalContext = {}; - return this; - }, + // Try and clean up the packet before sending by truncating long values + data = this._trimPacket(data); - /* - * Get a copy of the current context. This cannot be mutated. - * - * @return {object} copy of context - */ - getContext: function getContext() { - // lol javascript - return JSON.parse(stringify_1(this._globalContext)); - }, + // ideally duplicate error testing should occur *before* dataCallback/shouldSendCallback, + // but this would require copying an un-truncated copy of the data packet, which can be + // arbitrarily deep (extra_data) -- could be worthwhile? will revisit + if (!this._globalOptions.allowDuplicates && this._isRepeatData(data)) { + this._logDebug('warn', 'Raven dropped repeat event: ', data); + return; + } - /* - * Set environment of application - * - * @param {string} environment Typically something like 'production'. - * @return {Raven} - */ - setEnvironment: function setEnvironment(environment) { - this._globalOptions.environment = environment; - return this; - }, + // Send along an event_id if not explicitly passed. + // This event_id can be used to reference the error within Sentry itself. + // Set lastEventId after we know the error should actually be sent + this._lastEventId = data.event_id || (data.event_id = this._getUuid()); - /* - * Set release version of application - * - * @param {string} release Typically something like a git SHA to identify version - * @return {Raven} - */ - setRelease: function setRelease(release) { - this._globalOptions.release = release; - return this; - }, + // Store outbound payload after trim + this._lastData = data; - /* - * Set the dataCallback option - * - * @param {function} callback The callback to run which allows the - * data blob to be mutated before sending - * @return {Raven} - */ - setDataCallback: function setDataCallback(callback) { - var original = this._globalOptions.dataCallback; - this._globalOptions.dataCallback = keepOriginalCallback(original, callback); - return this; - }, + this._logDebug('debug', 'Raven about to send:', data); - /* - * Set the breadcrumbCallback option - * - * @param {function} callback The callback to run which allows filtering - * or mutating breadcrumbs - * @return {Raven} - */ - setBreadcrumbCallback: function setBreadcrumbCallback(callback) { - var original = this._globalOptions.breadcrumbCallback; - this._globalOptions.breadcrumbCallback = keepOriginalCallback(original, callback); - return this; - }, + var auth = { + sentry_version: '7', + sentry_client: 'raven-js/' + this.VERSION, + sentry_key: this._globalKey + }; - /* - * Set the shouldSendCallback option - * - * @param {function} callback The callback to run which allows - * introspecting the blob before sending - * @return {Raven} - */ - setShouldSendCallback: function setShouldSendCallback(callback) { - var original = this._globalOptions.shouldSendCallback; - this._globalOptions.shouldSendCallback = keepOriginalCallback(original, callback); - return this; - }, + if (this._globalSecret) { + auth.sentry_secret = this._globalSecret; + } - /** - * Override the default HTTP transport mechanism that transmits data - * to the Sentry server. - * - * @param {function} transport Function invoked instead of the default - * `makeRequest` handler. - * - * @return {Raven} - */ - setTransport: function setTransport(transport) { - this._globalOptions.transport = transport; - return this; - }, + var exception = data.exception && data.exception.values[0]; - /* - * Get the latest raw exception that was captured by Raven. - * - * @return {error} - */ - lastException: function lastException() { - return this._lastCapturedException; - }, + // only capture 'sentry' breadcrumb is autoBreadcrumbs is truthy + if ( + this._globalOptions.autoBreadcrumbs && + this._globalOptions.autoBreadcrumbs.sentry + ) { + this.captureBreadcrumb({ + category: 'sentry', + message: exception + ? (exception.type ? exception.type + ': ' : '') + exception.value + : data.message, + event_id: data.event_id, + level: data.level || 'error' // presume error unless specified + }); + } - /* - * Get the last event id - * - * @return {string} - */ - lastEventId: function lastEventId() { - return this._lastEventId; - }, + var url = this._globalEndpoint; + (globalOptions.transport || this._makeRequest).call(this, { + url: url, + auth: auth, + data: data, + options: globalOptions, + onSuccess: function success() { + self._resetBackoff(); - /* - * Determine if Raven is setup and ready to go. - * - * @return {boolean} - */ - isSetup: function isSetup() { - if (!this._hasJSON) return false; // needs JSON support + self._triggerEvent('success', { + data: data, + src: url + }); + callback && callback(); + }, + onError: function failure(error) { + self._logDebug('error', 'Raven transport failed to send: ', error); - if (!this._globalServer) { - if (!this.ravenNotConfiguredError) { - this.ravenNotConfiguredError = true; + if (error.request) { + self._setBackoffState(error.request); + } - this._logDebug('error', 'Error: Raven has not been configured.'); + self._triggerEvent('failure', { + data: data, + src: url + }); + error = error || new Error('Raven send failed (no additional details provided)'); + callback && callback(error); } + }); + }, - return false; - } + _makeRequest: function(opts) { + // Auth is intentionally sent as part of query string (NOT as custom HTTP header) to avoid preflight CORS requests + var url = opts.url + '?' + urlencode(opts.auth); - return true; - }, - afterLoad: function afterLoad() { - // TODO: remove window dependence? - // Attempt to initialize Raven on load - var RavenConfig = _window$1.RavenConfig; + var evaluatedHeaders = null; + var evaluatedFetchParameters = {}; - if (RavenConfig) { - this.config(RavenConfig.dsn, RavenConfig.config).install(); + if (opts.options.headers) { + evaluatedHeaders = this._evaluateHash(opts.options.headers); } - }, - showReportDialog: function showReportDialog(options) { - if (!_document // doesn't work without a document (React native) - ) return; - options = options || {}; - var lastEventId = options.eventId || this.lastEventId(); - if (!lastEventId) { - throw new configError('Missing eventId'); + if (opts.options.fetchParameters) { + evaluatedFetchParameters = this._evaluateHash(opts.options.fetchParameters); } - var dsn = options.dsn || this._dsn; + if (supportsFetch()) { + evaluatedFetchParameters.body = stringify(opts.data); - if (!dsn) { - throw new configError('Missing DSN'); - } + var defaultFetchOptions = objectMerge({}, this._fetchDefaults); + var fetchOptions = objectMerge(defaultFetchOptions, evaluatedFetchParameters); - var encode = encodeURIComponent; - var qs = ''; - qs += '?eventId=' + encode(lastEventId); - qs += '&dsn=' + encode(dsn); - var user = options.user || this._globalContext.user; + if (evaluatedHeaders) { + fetchOptions.headers = evaluatedHeaders; + } - if (user) { - if (user.name) qs += '&name=' + encode(user.name); - if (user.email) qs += '&email=' + encode(user.email); + return _window + .fetch(url, fetchOptions) + .then(function(response) { + if (response.ok) { + opts.onSuccess && opts.onSuccess(); + } else { + var error = new Error('Sentry error code: ' + response.status); + // It's called request only to keep compatibility with XHR interface + // and not add more redundant checks in setBackoffState method + error.request = response; + opts.onError && opts.onError(error); + } + }) + ['catch'](function() { + opts.onError && + opts.onError(new Error('Sentry error code: network unavailable')); + }); } - var globalServer = this._getGlobalServer(this._parseDSN(dsn)); - - var script = _document.createElement('script'); - - script.async = true; - script.src = globalServer + '/api/embed/error-page/' + qs; + var request = _window.XMLHttpRequest && new _window.XMLHttpRequest(); + if (!request) return; - (_document.head || _document.body).appendChild(script); - }, + // if browser doesn't support CORS (e.g. IE7), we are out of luck + var hasCORS = 'withCredentials' in request || typeof XDomainRequest !== 'undefined'; - /**** Private functions ****/ - _ignoreNextOnError: function _ignoreNextOnError() { - var self = this; - this._ignoreOnError += 1; - setTimeout(function () { - // onerror should trigger before setTimeout - self._ignoreOnError -= 1; - }); - }, - _triggerEvent: function _triggerEvent(eventType, options) { - // NOTE: `event` is a native browser thing, so let's avoid conflicting wiht it - var evt, key; - if (!this._hasDocument) return; - options = options || {}; - eventType = 'raven' + eventType.substr(0, 1).toUpperCase() + eventType.substr(1); + if (!hasCORS) return; - if (_document.createEvent) { - evt = _document.createEvent('HTMLEvents'); - evt.initEvent(eventType, true, true); + if ('withCredentials' in request) { + request.onreadystatechange = function() { + if (request.readyState !== 4) { + return; + } else if (request.status === 200) { + opts.onSuccess && opts.onSuccess(); + } else if (opts.onError) { + var err = new Error('Sentry error code: ' + request.status); + err.request = request; + opts.onError(err); + } + }; } else { - evt = _document.createEventObject(); - evt.eventType = eventType; - } + request = new XDomainRequest(); + // xdomainrequest cannot go http -> https (or vice versa), + // so always use protocol relative + url = url.replace(/^https?:/, ''); - for (key in options) { - if (hasKey(options, key)) { - evt[key] = options[key]; + // onreadystatechange not supported by XDomainRequest + if (opts.onSuccess) { + request.onload = opts.onSuccess; } - } - - if (_document.createEvent) { - // IE9 if standards - _document.dispatchEvent(evt); - } else { - // IE8 regardless of Quirks or Standards - // IE9 if quirks - try { - _document.fireEvent('on' + evt.eventType.toLowerCase(), evt); - } catch (e) {// Do nothing + if (opts.onError) { + request.onerror = function() { + var err = new Error('Sentry error code: XDomainRequest'); + err.request = request; + opts.onError(err); + }; } } - }, - /** - * Wraps addEventListener to capture UI breadcrumbs - * @param evtName the event name (e.g. "click") - * @returns {Function} - * @private - */ - _breadcrumbEventHandler: function _breadcrumbEventHandler(evtName) { - var self = this; - return function (evt) { - // reset keypress timeout; e.g. triggering a 'click' after - // a 'keypress' will reset the keypress debounce so that a new - // set of keypresses can be recorded - self._keypressTimeout = null; // It's possible this handler might trigger multiple times for the same - // event (e.g. event propagation through node ancestors). Ignore if we've - // already captured the event. + request.open('POST', url); - if (self._lastCapturedEvent === evt) return; - self._lastCapturedEvent = evt; // try/catch both: - // - accessing evt.target (see getsentry/raven-js#838, #768) - // - `htmlTreeAsString` because it's complex, and just accessing the DOM incorrectly - // can throw an exception in some circumstances. + if (evaluatedHeaders) { + each(evaluatedHeaders, function(key, value) { + request.setRequestHeader(key, value); + }); + } - var target; + request.send(stringify(opts.data)); + }, - try { - target = htmlTreeAsString(evt.target); - } catch (e) { - target = ''; + _evaluateHash: function(hash) { + var evaluated = {}; + + for (var key in hash) { + if (hash.hasOwnProperty(key)) { + var value = hash[key]; + evaluated[key] = typeof value === 'function' ? value() : value; } + } - self.captureBreadcrumb({ - category: 'ui.' + evtName, - // e.g. ui.click, ui.input - message: target - }); - }; + return evaluated; }, - /** - * Wraps addEventListener to capture keypress UI events - * @returns {Function} - * @private - */ - _keypressEventHandler: function _keypressEventHandler() { - var self = this, - debounceDuration = 1000; // milliseconds - // TODO: if somehow user switches keypress target before - // debounce timeout is triggered, we will only capture - // a single breadcrumb from the FIRST target (acceptable?) + _logDebug: function(level) { + // We allow `Raven.debug` and `Raven.config(DSN, { debug: true })` to not make backward incompatible API change + if ( + this._originalConsoleMethods[level] && + (this.debug || this._globalOptions.debug) + ) { + // In IE<10 console methods do not have their own 'apply' method + Function.prototype.apply.call( + this._originalConsoleMethods[level], + this._originalConsole, + [].slice.call(arguments, 1) + ); + } + }, - return function (evt) { - var target; + _mergeContext: function(key, context) { + if (isUndefined(context)) { + delete this._globalContext[key]; + } else { + this._globalContext[key] = objectMerge(this._globalContext[key] || {}, context); + } + } +}; - try { - target = evt.target; - } catch (e) { - // just accessing event properties can throw an exception in some rare circumstances - // see: https://github.com/getsentry/raven-js/issues/838 - return; - } +// Deprecations +Raven.prototype.setUser = Raven.prototype.setUserContext; +Raven.prototype.setReleaseContext = Raven.prototype.setRelease; - var tagName = target && target.tagName; // only consider keypress events on actual input elements - // this will disregard keypresses targeting body (e.g. tabbing - // through elements, hotkeys, etc) +module.exports = Raven; - if (!tagName || tagName !== 'INPUT' && tagName !== 'TEXTAREA' && !target.isContentEditable) return; // record first keypress in a series, but ignore subsequent - // keypresses until debounce clears +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"10":10,"11":11,"12":12,"5":5,"6":6,"9":9}],8:[function(_dereq_,module,exports){ +(function (global){ +/** + * Enforces a single instance of the Raven client, and the + * main entry point for Raven. If you are a consumer of the + * Raven library, you SHOULD load this file (vs raven.js). + **/ - var timeout = self._keypressTimeout; +var RavenConstructor = _dereq_(7); - if (!timeout) { - self._breadcrumbEventHandler('input')(evt); - } +// This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) +var _window = + typeof window !== 'undefined' + ? window + : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; +var _Raven = _window.Raven; - clearTimeout(timeout); - self._keypressTimeout = setTimeout(function () { - self._keypressTimeout = null; - }, debounceDuration); - }; - }, +var Raven = new RavenConstructor(); - /** - * Captures a breadcrumb of type "navigation", normalizing input URLs - * @param to the originating URL - * @param from the target URL - * @private - */ - _captureUrlChange: function _captureUrlChange(from, to) { - var parsedLoc = parseUrl(this._location.href); - var parsedTo = parseUrl(to); - var parsedFrom = parseUrl(from); // because onpopstate only tells you the "new" (to) value of location.href, and - // not the previous (from) value, we need to track the value of the current URL - // state ourselves +/* + * Allow multiple versions of Raven to be installed. + * Strip Raven from the global context and returns the instance. + * + * @return {Raven} + */ +Raven.noConflict = function() { + _window.Raven = _Raven; + return Raven; +}; - this._lastHref = to; // Use only the path component of the URL if the URL matches the current - // document (almost all the time when using pushState) +Raven.afterLoad(); - if (parsedLoc.protocol === parsedTo.protocol && parsedLoc.host === parsedTo.host) to = parsedTo.relative; - if (parsedLoc.protocol === parsedFrom.protocol && parsedLoc.host === parsedFrom.host) from = parsedFrom.relative; - this.captureBreadcrumb({ - category: 'navigation', - data: { - to: to, - from: from - } - }); - }, - _patchFunctionToString: function _patchFunctionToString() { - var self = this; - self._originalFunctionToString = Function.prototype.toString; // eslint-disable-next-line no-extend-native +module.exports = Raven; - Function.prototype.toString = function () { - if (typeof this === 'function' && this.__raven__) { - return self._originalFunctionToString.apply(this.__orig__, arguments); - } +/** + * DISCLAIMER: + * + * Expose `Client` constructor for cases where user want to track multiple "sub-applications" in one larger app. + * It's not meant to be used by a wide audience, so pleaaase make sure that you know what you're doing before using it. + * Accidentally calling `install` multiple times, may result in an unexpected behavior that's very hard to debug. + * + * It's called `Client' to be in-line with Raven Node implementation. + * + * HOWTO: + * + * import Raven from 'raven-js'; + * + * const someAppReporter = new Raven.Client(); + * const someOtherAppReporter = new Raven.Client(); + * + * someAppReporter.config('__DSN__', { + * ...config goes here + * }); + * + * someOtherAppReporter.config('__OTHER_DSN__', { + * ...config goes here + * }); + * + * someAppReporter.captureMessage(...); + * someAppReporter.captureException(...); + * someAppReporter.captureBreadcrumb(...); + * + * someOtherAppReporter.captureMessage(...); + * someOtherAppReporter.captureException(...); + * someOtherAppReporter.captureBreadcrumb(...); + * + * It should "just work". + */ +module.exports.Client = RavenConstructor; - return self._originalFunctionToString.apply(this, arguments); - }; - }, - _unpatchFunctionToString: function _unpatchFunctionToString() { - if (this._originalFunctionToString) { - // eslint-disable-next-line no-extend-native - Function.prototype.toString = this._originalFunctionToString; - } - }, +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"7":7}],9:[function(_dereq_,module,exports){ +(function (global){ +var stringify = _dereq_(11); - /** - * Wrap timer functions and event targets to catch errors and provide - * better metadata. - */ - _instrumentTryCatch: function _instrumentTryCatch() { - var self = this; - var wrappedBuiltIns = self._wrappedBuiltIns; +var _window = + typeof window !== 'undefined' + ? window + : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; - function wrapTimeFn(orig) { - return function (fn, t) { - // preserve arity - // Make a copy of the arguments to prevent deoptimization - // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments - var args = new Array(arguments.length); +function isObject(what) { + return typeof what === 'object' && what !== null; +} - for (var i = 0; i < args.length; ++i) { - args[i] = arguments[i]; - } +// Yanked from https://git.io/vS8DV re-used under CC0 +// with some tiny modifications +function isError(value) { + switch ({}.toString.call(value)) { + case '[object Error]': + return true; + case '[object Exception]': + return true; + case '[object DOMException]': + return true; + default: + return value instanceof Error; + } +} - var originalCallback = args[0]; +function isErrorEvent(value) { + return supportsErrorEvent() && {}.toString.call(value) === '[object ErrorEvent]'; +} - if (isFunction(originalCallback)) { - args[0] = self.wrap(originalCallback); - } // IE < 9 doesn't support .call/.apply on setInterval/setTimeout, but it - // also supports only two arguments and doesn't care what this is, so we - // can just call the original function directly. +function isUndefined(what) { + return what === void 0; +} +function isFunction(what) { + return typeof what === 'function'; +} - if (orig.apply) { - return orig.apply(this, args); - } else { - return orig(args[0], args[1]); - } - }; - } +function isPlainObject(what) { + return Object.prototype.toString.call(what) === '[object Object]'; +} - var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; +function isString(what) { + return Object.prototype.toString.call(what) === '[object String]'; +} - function wrapEventTarget(global) { - var proto = _window$1[global] && _window$1[global].prototype; +function isArray(what) { + return Object.prototype.toString.call(what) === '[object Array]'; +} - if (proto && proto.hasOwnProperty && proto.hasOwnProperty('addEventListener')) { - fill(proto, 'addEventListener', function (orig) { - return function (evtName, fn, capture, secure) { - // preserve arity - try { - if (fn && fn.handleEvent) { - fn.handleEvent = self.wrap(fn.handleEvent); - } - } catch (err) {} // can sometimes get 'Permission denied to access property "handle Event' - // More breadcrumb DOM capture ... done here and not in `_instrumentBreadcrumbs` - // so that we don't have more than one wrapper function +function isEmptyObject(what) { + if (!isPlainObject(what)) return false; + for (var _ in what) { + if (what.hasOwnProperty(_)) { + return false; + } + } + return true; +} - var before, clickHandler, keypressHandler; +function supportsErrorEvent() { + try { + new ErrorEvent(''); // eslint-disable-line no-new + return true; + } catch (e) { + return false; + } +} - if (autoBreadcrumbs && autoBreadcrumbs.dom && (global === 'EventTarget' || global === 'Node')) { - // NOTE: generating multiple handlers per addEventListener invocation, should - // revisit and verify we can just use one (almost certainly) - clickHandler = self._breadcrumbEventHandler('click'); - keypressHandler = self._keypressEventHandler(); +function supportsFetch() { + if (!('fetch' in _window)) return false; - before = function before(evt) { - // need to intercept every DOM event in `before` argument, in case that - // same wrapped method is re-used for different events (e.g. mousemove THEN click) - // see #724 - if (!evt) return; - var eventType; + try { + new Headers(); // eslint-disable-line no-new + new Request(''); // eslint-disable-line no-new + new Response(); // eslint-disable-line no-new + return true; + } catch (e) { + return false; + } +} - try { - eventType = evt.type; - } catch (e) { - // just accessing event properties can throw an exception in some rare circumstances - // see: https://github.com/getsentry/raven-js/issues/838 - return; - } +// Despite all stars in the sky saying that Edge supports old draft syntax, aka 'never', 'always', 'origin' and 'default +// https://caniuse.com/#feat=referrer-policy +// It doesn't. And it throw exception instead of ignoring this parameter... +// REF: https://github.com/getsentry/raven-js/issues/1233 +function supportsReferrerPolicy() { + if (!supportsFetch()) return false; - if (eventType === 'click') return clickHandler(evt);else if (eventType === 'keypress') return keypressHandler(evt); - }; - } + try { + // eslint-disable-next-line no-new + new Request('pickleRick', { + referrerPolicy: 'origin' + }); + return true; + } catch (e) { + return false; + } +} - return orig.call(this, evtName, self.wrap(fn, undefined, before), capture, secure); - }; - }, wrappedBuiltIns); - fill(proto, 'removeEventListener', function (orig) { - return function (evt, fn, capture, secure) { - try { - fn = fn && (fn.__raven_wrapper__ ? fn.__raven_wrapper__ : fn); - } catch (e) {// ignore, accessing __raven_wrapper__ will throw in some Selenium environments - } +function supportsPromiseRejectionEvent() { + return typeof PromiseRejectionEvent === 'function'; +} - return orig.call(this, evt, fn, capture, secure); - }; - }, wrappedBuiltIns); - } +function wrappedCallback(callback) { + function dataCallback(data, original) { + var normalizedData = callback(data) || data; + if (original) { + return original(normalizedData) || normalizedData; } + return normalizedData; + } - fill(_window$1, 'setTimeout', wrapTimeFn, wrappedBuiltIns); - fill(_window$1, 'setInterval', wrapTimeFn, wrappedBuiltIns); - - if (_window$1.requestAnimationFrame) { - fill(_window$1, 'requestAnimationFrame', function (orig) { - return function (cb) { - return orig(self.wrap(cb)); - }; - }, wrappedBuiltIns); - } // event targets borrowed from bugsnag-js: - // https://github.com/bugsnag/bugsnag-js/blob/master/src/bugsnag.js#L666 - + return dataCallback; +} - var eventTargets = ['EventTarget', 'Window', 'Node', 'ApplicationCache', 'AudioTrackList', 'ChannelMergerNode', 'CryptoOperation', 'EventSource', 'FileReader', 'HTMLUnknownElement', 'IDBDatabase', 'IDBRequest', 'IDBTransaction', 'KeyOperation', 'MediaController', 'MessagePort', 'ModalWindow', 'Notification', 'SVGElementInstance', 'Screen', 'TextTrack', 'TextTrackCue', 'TextTrackList', 'WebSocket', 'WebSocketWorker', 'Worker', 'XMLHttpRequest', 'XMLHttpRequestEventTarget', 'XMLHttpRequestUpload']; +function each(obj, callback) { + var i, j; - for (var i = 0; i < eventTargets.length; i++) { - wrapEventTarget(eventTargets[i]); + if (isUndefined(obj.length)) { + for (i in obj) { + if (hasKey(obj, i)) { + callback.call(null, i, obj[i]); + } } - }, - - /** - * Instrument browser built-ins w/ breadcrumb capturing - * - XMLHttpRequests - * - DOM interactions (click/typing) - * - window.location changes - * - console - * - * Can be disabled or individually configured via the `autoBreadcrumbs` config option - */ - _instrumentBreadcrumbs: function _instrumentBreadcrumbs() { - var self = this; - var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; - var wrappedBuiltIns = self._wrappedBuiltIns; - - function wrapProp(prop, xhr) { - if (prop in xhr && isFunction(xhr[prop])) { - fill(xhr, prop, function (orig) { - return self.wrap(orig); - }); // intentionally don't track filled methods on XHR instances + } else { + j = obj.length; + if (j) { + for (i = 0; i < j; i++) { + callback.call(null, i, obj[i]); } } + } +} - if (autoBreadcrumbs.xhr && 'XMLHttpRequest' in _window$1) { - var xhrproto = XMLHttpRequest.prototype; - fill(xhrproto, 'open', function (origOpen) { - return function (method, url) { - // preserve arity - // if Sentry key appears in URL, don't capture - if (isString(url) && url.indexOf(self._globalKey) === -1) { - this.__raven_xhr = { - method: method, - url: url, - status_code: null - }; - } - - return origOpen.apply(this, arguments); - }; - }, wrappedBuiltIns); - fill(xhrproto, 'send', function (origSend) { - return function () { - // preserve arity - var xhr = this; - - function onreadystatechangeHandler() { - if (xhr.__raven_xhr && xhr.readyState === 4) { - try { - // touching statusCode in some platforms throws - // an exception - xhr.__raven_xhr.status_code = xhr.status; - } catch (e) { - /* do nothing */ - } +function objectMerge(obj1, obj2) { + if (!obj2) { + return obj1; + } + each(obj2, function(key, value) { + obj1[key] = value; + }); + return obj1; +} - self.captureBreadcrumb({ - type: 'http', - category: 'xhr', - data: xhr.__raven_xhr - }); - } - } +/** + * This function is only used for react-native. + * react-native freezes object that have already been sent over the + * js bridge. We need this function in order to check if the object is frozen. + * So it's ok that objectFrozen returns false if Object.isFrozen is not + * supported because it's not relevant for other "platforms". See related issue: + * https://github.com/getsentry/react-native-sentry/issues/57 + */ +function objectFrozen(obj) { + if (!Object.isFrozen) { + return false; + } + return Object.isFrozen(obj); +} - var props = ['onload', 'onerror', 'onprogress']; +function truncate(str, max) { + if (typeof max !== 'number') { + throw new Error('2nd argument to `truncate` function should be a number'); + } + if (typeof str !== 'string' || max === 0) { + return str; + } + return str.length <= max ? str : str.substr(0, max) + '\u2026'; +} - for (var j = 0; j < props.length; j++) { - wrapProp(props[j], xhr); - } +/** + * hasKey, a better form of hasOwnProperty + * Example: hasKey(MainHostObject, property) === true/false + * + * @param {Object} host object to check property + * @param {string} key to check + */ +function hasKey(object, key) { + return Object.prototype.hasOwnProperty.call(object, key); +} - if ('onreadystatechange' in xhr && isFunction(xhr.onreadystatechange)) { - fill(xhr, 'onreadystatechange', function (orig) { - return self.wrap(orig, undefined, onreadystatechangeHandler); - } - /* intentionally don't track this instrumentation */ - ); - } else { - // if onreadystatechange wasn't actually set by the page on this xhr, we - // are free to set our own and capture the breadcrumb - xhr.onreadystatechange = onreadystatechangeHandler; - } +function joinRegExp(patterns) { + // Combine an array of regular expressions and strings into one large regexp + // Be mad. + var sources = [], + i = 0, + len = patterns.length, + pattern; - return origSend.apply(this, arguments); - }; - }, wrappedBuiltIns); + for (; i < len; i++) { + pattern = patterns[i]; + if (isString(pattern)) { + // If it's a string, we need to escape it + // Taken from: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions + sources.push(pattern.replace(/([.*+?^=!:${}()|\[\]\/\\])/g, '\\$1')); + } else if (pattern && pattern.source) { + // If it's a regexp already, we want to extract the source + sources.push(pattern.source); } + // Intentionally skip other cases + } + return new RegExp(sources.join('|'), 'i'); +} - if (autoBreadcrumbs.xhr && supportsFetch()) { - fill(_window$1, 'fetch', function (origFetch) { - return function () { - // preserve arity - // Make a copy of the arguments to prevent deoptimization - // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments - var args = new Array(arguments.length); - - for (var i = 0; i < args.length; ++i) { - args[i] = arguments[i]; - } - - var fetchInput = args[0]; - var method = 'GET'; - var url; - - if (typeof fetchInput === 'string') { - url = fetchInput; - } else if ('Request' in _window$1 && fetchInput instanceof _window$1.Request) { - url = fetchInput.url; +function urlencode(o) { + var pairs = []; + each(o, function(key, value) { + pairs.push(encodeURIComponent(key) + '=' + encodeURIComponent(value)); + }); + return pairs.join('&'); +} - if (fetchInput.method) { - method = fetchInput.method; - } - } else { - url = '' + fetchInput; - } // if Sentry key appears in URL, don't capture, as it's our own request +// borrowed from https://tools.ietf.org/html/rfc3986#appendix-B +// intentionally using regex and not href parsing trick because React Native and other +// environments where DOM might not be available +function parseUrl(url) { + if (typeof url !== 'string') return {}; + var match = url.match(/^(([^:\/?#]+):)?(\/\/([^\/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?$/); + // coerce to undefined values to empty string so we don't get 'undefined' + var query = match[6] || ''; + var fragment = match[8] || ''; + return { + protocol: match[2], + host: match[4], + path: match[5], + relative: match[5] + query + fragment // everything minus origin + }; +} +function uuid4() { + var crypto = _window.crypto || _window.msCrypto; - if (url.indexOf(self._globalKey) !== -1) { - return origFetch.apply(this, args); - } + if (!isUndefined(crypto) && crypto.getRandomValues) { + // Use window.crypto API if available + // eslint-disable-next-line no-undef + var arr = new Uint16Array(8); + crypto.getRandomValues(arr); - if (args[1] && args[1].method) { - method = args[1].method; - } + // set 4 in byte 7 + arr[3] = (arr[3] & 0xfff) | 0x4000; + // set 2 most significant bits of byte 9 to '10' + arr[4] = (arr[4] & 0x3fff) | 0x8000; - var fetchData = { - method: method, - url: url, - status_code: null - }; - return origFetch.apply(this, args).then(function (response) { - fetchData.status_code = response.status; - self.captureBreadcrumb({ - type: 'http', - category: 'fetch', - data: fetchData - }); - return response; - }); - }; - }, wrappedBuiltIns); - } // Capture breadcrumbs from any click that is unhandled / bubbled up all the way - // to the document. Do this before we instrument addEventListener. + var pad = function(num) { + var v = num.toString(16); + while (v.length < 4) { + v = '0' + v; + } + return v; + }; + return ( + pad(arr[0]) + + pad(arr[1]) + + pad(arr[2]) + + pad(arr[3]) + + pad(arr[4]) + + pad(arr[5]) + + pad(arr[6]) + + pad(arr[7]) + ); + } else { + // http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/2117523#2117523 + return 'xxxxxxxxxxxx4xxxyxxxxxxxxxxxxxxx'.replace(/[xy]/g, function(c) { + var r = (Math.random() * 16) | 0, + v = c === 'x' ? r : (r & 0x3) | 0x8; + return v.toString(16); + }); + } +} - if (autoBreadcrumbs.dom && this._hasDocument) { - if (_document.addEventListener) { - _document.addEventListener('click', self._breadcrumbEventHandler('click'), false); +/** + * Given a child DOM element, returns a query-selector statement describing that + * and its ancestors + * e.g. [HTMLElement] => body > div > input#foo.btn[name=baz] + * @param elem + * @returns {string} + */ +function htmlTreeAsString(elem) { + /* eslint no-extra-parens:0*/ + var MAX_TRAVERSE_HEIGHT = 5, + MAX_OUTPUT_LEN = 80, + out = [], + height = 0, + len = 0, + separator = ' > ', + sepLength = separator.length, + nextStr; - _document.addEventListener('keypress', self._keypressEventHandler(), false); - } else { - // IE8 Compatibility - _document.attachEvent('onclick', self._breadcrumbEventHandler('click')); + while (elem && height++ < MAX_TRAVERSE_HEIGHT) { + nextStr = htmlElementAsString(elem); + // bail out if + // - nextStr is the 'html' element + // - the length of the string that would be created exceeds MAX_OUTPUT_LEN + // (ignore this limit if we are on the first iteration) + if ( + nextStr === 'html' || + (height > 1 && len + out.length * sepLength + nextStr.length >= MAX_OUTPUT_LEN) + ) { + break; + } - _document.attachEvent('onkeypress', self._keypressEventHandler()); - } - } // record navigation (URL) changes - // NOTE: in Chrome App environment, touching history.pushState, *even inside - // a try/catch block*, will cause Chrome to output an error to console.error - // borrowed from: https://github.com/angular/angular.js/pull/13945/files + out.push(nextStr); + len += nextStr.length; + elem = elem.parentNode; + } - var chrome = _window$1.chrome; - var isChromePackagedApp = chrome && chrome.app && chrome.app.runtime; - var hasPushAndReplaceState = !isChromePackagedApp && _window$1.history && history.pushState && history.replaceState; + return out.reverse().join(separator); +} - if (autoBreadcrumbs.location && hasPushAndReplaceState) { - // TODO: remove onpopstate handler on uninstall() - var oldOnPopState = _window$1.onpopstate; +/** + * Returns a simple, query-selector representation of a DOM element + * e.g. [HTMLElement] => input#foo.btn[name=baz] + * @param HTMLElement + * @returns {string} + */ +function htmlElementAsString(elem) { + var out = [], + className, + classes, + key, + attr, + i; - _window$1.onpopstate = function () { - var currentHref = self._location.href; + if (!elem || !elem.tagName) { + return ''; + } - self._captureUrlChange(self._lastHref, currentHref); + out.push(elem.tagName.toLowerCase()); + if (elem.id) { + out.push('#' + elem.id); + } - if (oldOnPopState) { - return oldOnPopState.apply(this, arguments); - } - }; + className = elem.className; + if (className && isString(className)) { + classes = className.split(/\s+/); + for (i = 0; i < classes.length; i++) { + out.push('.' + classes[i]); + } + } + var attrWhitelist = ['type', 'name', 'title', 'alt']; + for (i = 0; i < attrWhitelist.length; i++) { + key = attrWhitelist[i]; + attr = elem.getAttribute(key); + if (attr) { + out.push('[' + key + '="' + attr + '"]'); + } + } + return out.join(''); +} - var historyReplacementFunction = function historyReplacementFunction(origHistFunction) { - // note history.pushState.length is 0; intentionally not declaring - // params to preserve 0 arity - return function () - /* state, title, url */ - { - var url = arguments.length > 2 ? arguments[2] : undefined; // url argument is optional +/** + * Returns true if either a OR b is truthy, but not both + */ +function isOnlyOneTruthy(a, b) { + return !!(!!a ^ !!b); +} - if (url) { - // coerce to string (this is what pushState does) - self._captureUrlChange(self._lastHref, url + ''); - } +/** + * Returns true if both parameters are undefined + */ +function isBothUndefined(a, b) { + return isUndefined(a) && isUndefined(b); +} - return origHistFunction.apply(this, arguments); - }; - }; +/** + * Returns true if the two input exception interfaces have the same content + */ +function isSameException(ex1, ex2) { + if (isOnlyOneTruthy(ex1, ex2)) return false; - fill(history, 'pushState', historyReplacementFunction, wrappedBuiltIns); - fill(history, 'replaceState', historyReplacementFunction, wrappedBuiltIns); - } + ex1 = ex1.values[0]; + ex2 = ex2.values[0]; - if (autoBreadcrumbs.console && 'console' in _window$1 && console.log) { - // console - var consoleMethodCallback = function consoleMethodCallback(msg, data) { - self.captureBreadcrumb({ - message: msg, - level: data.level, - category: 'console' - }); - }; + if (ex1.type !== ex2.type || ex1.value !== ex2.value) return false; - each(['debug', 'info', 'warn', 'error', 'log'], function (_, level) { - wrapConsoleMethod(console, level, consoleMethodCallback); - }); - } - }, - _restoreBuiltIns: function _restoreBuiltIns() { - // restore any wrapped builtins - var builtin; + // in case both stacktraces are undefined, we can't decide so default to false + if (isBothUndefined(ex1.stacktrace, ex2.stacktrace)) return false; - while (this._wrappedBuiltIns.length) { - builtin = this._wrappedBuiltIns.shift(); - var obj = builtin[0], - name = builtin[1], - orig = builtin[2]; - obj[name] = orig; - } - }, - _restoreConsole: function _restoreConsole() { - // eslint-disable-next-line guard-for-in - for (var method in this._originalConsoleMethods) { - this._originalConsole[method] = this._originalConsoleMethods[method]; - } - }, - _drainPlugins: function _drainPlugins() { - var self = this; // FIX ME TODO + return isSameStacktrace(ex1.stacktrace, ex2.stacktrace); +} - each(this._plugins, function (_, plugin) { - var installer = plugin[0]; - var args = plugin[1]; - installer.apply(self, [self].concat(args)); - }); - }, - _parseDSN: function _parseDSN(str) { - var m = dsnPattern.exec(str), - dsn = {}, - i = 7; +/** + * Returns true if the two input stack trace interfaces have the same content + */ +function isSameStacktrace(stack1, stack2) { + if (isOnlyOneTruthy(stack1, stack2)) return false; + + var frames1 = stack1.frames; + var frames2 = stack2.frames; + + // Exit early if frame count differs + if (frames1.length !== frames2.length) return false; + + // Iterate through every frame; bail out if anything differs + var a, b; + for (var i = 0; i < frames1.length; i++) { + a = frames1[i]; + b = frames2[i]; + if ( + a.filename !== b.filename || + a.lineno !== b.lineno || + a.colno !== b.colno || + a['function'] !== b['function'] + ) + return false; + } + return true; +} + +/** + * Polyfill a method + * @param obj object e.g. `document` + * @param name method name present on object e.g. `addEventListener` + * @param replacement replacement function + * @param track {optional} record instrumentation to an array + */ +function fill(obj, name, replacement, track) { + if (obj == null) return; + var orig = obj[name]; + obj[name] = replacement(orig); + obj[name].__raven__ = true; + obj[name].__orig__ = orig; + if (track) { + track.push([obj, name, orig]); + } +} + +/** + * Join values in array + * @param input array of values to be joined together + * @param delimiter string to be placed in-between values + * @returns {string} + */ +function safeJoin(input, delimiter) { + if (!isArray(input)) return ''; + var output = []; + + for (var i = 0; i < input.length; i++) { try { - while (i--) { - dsn[dsnKeys[i]] = m[i] || ''; - } + output.push(String(input[i])); } catch (e) { - throw new configError('Invalid DSN: ' + str); + output.push('[value cannot be serialized]'); } + } - if (dsn.pass && !this._globalOptions.allowSecretKey) { - throw new configError('Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key'); - } + return output.join(delimiter); +} - return dsn; - }, - _getGlobalServer: function _getGlobalServer(uri) { - // assemble the endpoint from the uri pieces - var globalServer = '//' + uri.host + (uri.port ? ':' + uri.port : ''); +// Default Node.js REPL depth +var MAX_SERIALIZE_EXCEPTION_DEPTH = 3; +// 50kB, as 100kB is max payload size, so half sounds reasonable +var MAX_SERIALIZE_EXCEPTION_SIZE = 50 * 1024; +var MAX_SERIALIZE_KEYS_LENGTH = 40; - if (uri.protocol) { - globalServer = uri.protocol + ':' + globalServer; - } +function utf8Length(value) { + return ~-encodeURI(value).split(/%..|./).length; +} - return globalServer; - }, - _handleOnErrorStackInfo: function _handleOnErrorStackInfo() { - // if we are intentionally ignoring errors via onerror, bail out - if (!this._ignoreOnError) { - this._handleStackInfo.apply(this, arguments); - } - }, - _handleStackInfo: function _handleStackInfo(stackInfo, options) { - var frames = this._prepareFrames(stackInfo, options); +function jsonSize(value) { + return utf8Length(JSON.stringify(value)); +} - this._triggerEvent('handle', { - stackInfo: stackInfo, - options: options - }); +function serializeValue(value) { + if (typeof value === 'string') { + var maxLength = 40; + return truncate(value, maxLength); + } else if ( + typeof value === 'number' || + typeof value === 'boolean' || + typeof value === 'undefined' + ) { + return value; + } - this._processException(stackInfo.name, stackInfo.message, stackInfo.url, stackInfo.lineno, frames, options); - }, - _prepareFrames: function _prepareFrames(stackInfo, options) { - var self = this; - var frames = []; + var type = Object.prototype.toString.call(value); - if (stackInfo.stack && stackInfo.stack.length) { - each(stackInfo.stack, function (i, stack) { - var frame = self._normalizeFrame(stack, stackInfo.url); + // Node.js REPL notation + if (type === '[object Object]') return '[Object]'; + if (type === '[object Array]') return '[Array]'; + if (type === '[object Function]') + return value.name ? '[Function: ' + value.name + ']' : '[Function]'; - if (frame) { - frames.push(frame); - } - }); // e.g. frames captured via captureMessage throw + return value; +} - if (options && options.trimHeadFrames) { - for (var j = 0; j < options.trimHeadFrames && j < frames.length; j++) { - frames[j].in_app = false; - } - } - } +function serializeObject(value, depth) { + if (depth === 0) return serializeValue(value); + + if (isPlainObject(value)) { + return Object.keys(value).reduce(function(acc, key) { + acc[key] = serializeObject(value[key], depth - 1); + return acc; + }, {}); + } else if (Array.isArray(value)) { + return value.map(function(val) { + return serializeObject(val, depth - 1); + }); + } - frames = frames.slice(0, this._globalOptions.stackTraceLimit); - return frames; - }, - _normalizeFrame: function _normalizeFrame(frame, stackInfoUrl) { - // normalize the frames data - var normalized = { - filename: frame.url, - lineno: frame.line, - colno: frame.column, - function: frame.func || '?' - }; // Case when we don't have any information about the error - // E.g. throwing a string or raw object, instead of an `Error` in Firefox - // Generating synthetic error doesn't add any value here - // - // We should probably somehow let a user know that they should fix their code + return serializeValue(value); +} - if (!frame.url) { - normalized.filename = stackInfoUrl; // fallback to whole stacks url from onerror handler - } +function serializeException(ex, depth, maxSize) { + if (!isPlainObject(ex)) return ex; - normalized.in_app = !( // determine if an exception came from outside of our app - // first we check the global includePaths list. - !!this._globalOptions.includePaths.test && !this._globalOptions.includePaths.test(normalized.filename) || // Now we check for fun, if the function name is Raven or TraceKit - /(Raven|TraceKit)\./.test(normalized['function']) || // finally, we do a last ditch effort and check for raven.min.js - /raven\.(min\.)?js$/.test(normalized.filename)); - return normalized; - }, - _processException: function _processException(type, message, fileurl, lineno, frames, options) { - var prefixedMessage = (type ? type + ': ' : '') + (message || ''); + depth = typeof depth !== 'number' ? MAX_SERIALIZE_EXCEPTION_DEPTH : depth; + maxSize = typeof depth !== 'number' ? MAX_SERIALIZE_EXCEPTION_SIZE : maxSize; - if (!!this._globalOptions.ignoreErrors.test && (this._globalOptions.ignoreErrors.test(message) || this._globalOptions.ignoreErrors.test(prefixedMessage))) { - return; - } + var serialized = serializeObject(ex, depth); - var stacktrace; + if (jsonSize(stringify(serialized)) > maxSize) { + return serializeException(ex, depth - 1); + } - if (frames && frames.length) { - fileurl = frames[0].filename || fileurl; // Sentry expects frames oldest to newest - // and JS sends them as newest to oldest + return serialized; +} - frames.reverse(); - stacktrace = { - frames: frames - }; - } else if (fileurl) { - stacktrace = { - frames: [{ - filename: fileurl, - lineno: lineno, - in_app: true - }] - }; - } +function serializeKeysForMessage(keys, maxLength) { + if (typeof keys === 'number' || typeof keys === 'string') return keys.toString(); + if (!Array.isArray(keys)) return ''; - if (!!this._globalOptions.ignoreUrls.test && this._globalOptions.ignoreUrls.test(fileurl)) { - return; - } + keys = keys.filter(function(key) { + return typeof key === 'string'; + }); + if (keys.length === 0) return '[object has no keys]'; - if (!!this._globalOptions.whitelistUrls.test && !this._globalOptions.whitelistUrls.test(fileurl)) { - return; - } + maxLength = typeof maxLength !== 'number' ? MAX_SERIALIZE_KEYS_LENGTH : maxLength; + if (keys[0].length >= maxLength) return keys[0]; - var data = objectMerge({ - // sentry.interfaces.Exception - exception: { - values: [{ - type: type, - value: message, - stacktrace: stacktrace - }] - }, - culprit: fileurl - }, options); // Fire away! + for (var usedKeys = keys.length; usedKeys > 0; usedKeys--) { + var serialized = keys.slice(0, usedKeys).join(', '); + if (serialized.length > maxLength) continue; + if (usedKeys === keys.length) return serialized; + return serialized + '\u2026'; + } - this._send(data); - }, - _trimPacket: function _trimPacket(data) { - // For now, we only want to truncate the two different messages - // but this could/should be expanded to just trim everything - var max = this._globalOptions.maxMessageLength; + return ''; +} - if (data.message) { - data.message = truncate(data.message, max); +function sanitize(input, sanitizeKeys) { + if (!isArray(sanitizeKeys) || (isArray(sanitizeKeys) && sanitizeKeys.length === 0)) + return input; + + var sanitizeRegExp = joinRegExp(sanitizeKeys); + var sanitizeMask = '********'; + var safeInput; + + try { + safeInput = JSON.parse(stringify(input)); + } catch (o_O) { + return input; + } + + function sanitizeWorker(workerInput) { + if (isArray(workerInput)) { + return workerInput.map(function(val) { + return sanitizeWorker(val); + }); } - if (data.exception) { - var exception = data.exception.values[0]; - exception.value = truncate(exception.value, max); + if (isPlainObject(workerInput)) { + return Object.keys(workerInput).reduce(function(acc, k) { + if (sanitizeRegExp.test(k)) { + acc[k] = sanitizeMask; + } else { + acc[k] = sanitizeWorker(workerInput[k]); + } + return acc; + }, {}); } - var request = data.request; + return workerInput; + } - if (request) { - if (request.url) { - request.url = truncate(request.url, this._globalOptions.maxUrlLength); - } + return sanitizeWorker(safeInput); +} - if (request.Referer) { - request.Referer = truncate(request.Referer, this._globalOptions.maxUrlLength); - } - } +module.exports = { + isObject: isObject, + isError: isError, + isErrorEvent: isErrorEvent, + isUndefined: isUndefined, + isFunction: isFunction, + isPlainObject: isPlainObject, + isString: isString, + isArray: isArray, + isEmptyObject: isEmptyObject, + supportsErrorEvent: supportsErrorEvent, + supportsFetch: supportsFetch, + supportsReferrerPolicy: supportsReferrerPolicy, + supportsPromiseRejectionEvent: supportsPromiseRejectionEvent, + wrappedCallback: wrappedCallback, + each: each, + objectMerge: objectMerge, + truncate: truncate, + objectFrozen: objectFrozen, + hasKey: hasKey, + joinRegExp: joinRegExp, + urlencode: urlencode, + uuid4: uuid4, + htmlTreeAsString: htmlTreeAsString, + htmlElementAsString: htmlElementAsString, + isSameException: isSameException, + isSameStacktrace: isSameStacktrace, + parseUrl: parseUrl, + fill: fill, + safeJoin: safeJoin, + serializeException: serializeException, + serializeKeysForMessage: serializeKeysForMessage, + sanitize: sanitize +}; - if (data.breadcrumbs && data.breadcrumbs.values) this._trimBreadcrumbs(data.breadcrumbs); - return data; - }, +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"11":11}],10:[function(_dereq_,module,exports){ +(function (global){ +var utils = _dereq_(9); - /** - * Truncate breadcrumb values (right now just URLs) - */ - _trimBreadcrumbs: function _trimBreadcrumbs(breadcrumbs) { - // known breadcrumb properties with urls - // TODO: also consider arbitrary prop values that start with (https?)?:// - var urlProps = ['to', 'from', 'url'], - urlProp, - crumb, - data; +/* + TraceKit - Cross brower stack traces - for (var i = 0; i < breadcrumbs.values.length; ++i) { - crumb = breadcrumbs.values[i]; - if (!crumb.hasOwnProperty('data') || !isObject(crumb.data) || objectFrozen(crumb.data)) continue; - data = objectMerge({}, crumb.data); + This was originally forked from github.com/occ/TraceKit, but has since been + largely re-written and is now maintained as part of raven-js. Tests for + this are in test/vendor. - for (var j = 0; j < urlProps.length; ++j) { - urlProp = urlProps[j]; + MIT license +*/ - if (data.hasOwnProperty(urlProp) && data[urlProp]) { - data[urlProp] = truncate(data[urlProp], this._globalOptions.maxUrlLength); - } - } +var TraceKit = { + collectWindowErrors: true, + debug: false +}; - breadcrumbs.values[i].data = data; - } - }, - _getHttpData: function _getHttpData() { - if (!this._hasNavigator && !this._hasDocument) return; - var httpData = {}; +// This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) +var _window = + typeof window !== 'undefined' + ? window + : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; - if (this._hasNavigator && _navigator.userAgent) { - httpData.headers = { - 'User-Agent': navigator.userAgent - }; - } // Check in `window` instead of `document`, as we may be in ServiceWorker environment +// global reference to slice +var _slice = [].slice; +var UNKNOWN_FUNCTION = '?'; +// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error#Error_types +var ERROR_TYPES_RE = /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/; - if (_window$1.location && _window$1.location.href) { - httpData.url = _window$1.location.href; - } +function getLocationHref() { + if (typeof document === 'undefined' || document.location == null) return ''; - if (this._hasDocument && _document.referrer) { - if (!httpData.headers) httpData.headers = {}; - httpData.headers.Referer = _document.referrer; - } + return document.location.href; +} - return httpData; - }, - _resetBackoff: function _resetBackoff() { - this._backoffDuration = 0; - this._backoffStart = null; - }, - _shouldBackoff: function _shouldBackoff() { - return this._backoffDuration && now() - this._backoffStart < this._backoffDuration; - }, +/** + * TraceKit.report: cross-browser processing of unhandled exceptions + * + * Syntax: + * TraceKit.report.subscribe(function(stackInfo) { ... }) + * TraceKit.report.unsubscribe(function(stackInfo) { ... }) + * TraceKit.report(exception) + * try { ...code... } catch(ex) { TraceKit.report(ex); } + * + * Supports: + * - Firefox: full stack trace with line numbers, plus column number + * on top frame; column number is not guaranteed + * - Opera: full stack trace with line and column numbers + * - Chrome: full stack trace with line and column numbers + * - Safari: line and column number for the top frame only; some frames + * may be missing, and column number is not guaranteed + * - IE: line and column number for the top frame only; some frames + * may be missing, and column number is not guaranteed + * + * In theory, TraceKit should work on all of the following versions: + * - IE5.5+ (only 8.0 tested) + * - Firefox 0.9+ (only 3.5+ tested) + * - Opera 7+ (only 10.50 tested; versions 9 and earlier may require + * Exceptions Have Stacktrace to be enabled in opera:config) + * - Safari 3+ (only 4+ tested) + * - Chrome 1+ (only 5+ tested) + * - Konqueror 3.5+ (untested) + * + * Requires TraceKit.computeStackTrace. + * + * Tries to catch all unhandled exceptions and report them to the + * subscribed handlers. Please note that TraceKit.report will rethrow the + * exception. This is REQUIRED in order to get a useful stack trace in IE. + * If the exception does not reach the top of the browser, you will only + * get a stack trace from the point where TraceKit.report was called. + * + * Handlers receive a stackInfo object as described in the + * TraceKit.computeStackTrace docs. + */ +TraceKit.report = (function reportModuleWrapper() { + var handlers = [], + lastArgs = null, + lastException = null, + lastExceptionStack = null; /** - * Returns true if the in-process data payload matches the signature - * of the previously-sent data - * - * NOTE: This has to be done at this level because TraceKit can generate - * data from window.onerror WITHOUT an exception object (IE8, IE9, - * other old browsers). This can take the form of an "exception" - * data object with a single frame (derived from the onerror args). + * Add a crash handler. + * @param {Function} handler */ - _isRepeatData: function _isRepeatData(current) { - var last = this._lastData; - if (!last || current.message !== last.message || // defined for captureMessage - current.culprit !== last.culprit // defined for captureException/onerror - ) return false; // Stacktrace interface (i.e. from captureMessage) + function subscribe(handler) { + installGlobalHandler(); + handlers.push(handler); + } - if (current.stacktrace || last.stacktrace) { - return isSameStacktrace(current.stacktrace, last.stacktrace); - } else if (current.exception || last.exception) { - // Exception interface (i.e. from captureException/onerror) - return isSameException(current.exception, last.exception); + /** + * Remove a crash handler. + * @param {Function} handler + */ + function unsubscribe(handler) { + for (var i = handlers.length - 1; i >= 0; --i) { + if (handlers[i] === handler) { + handlers.splice(i, 1); + } } + } - return true; - }, - _setBackoffState: function _setBackoffState(request) { - // If we are already in a backoff state, don't change anything - if (this._shouldBackoff()) { + /** + * Remove all crash handlers. + */ + function unsubscribeAll() { + uninstallGlobalHandler(); + handlers = []; + } + + /** + * Dispatch stack information to all handlers. + * @param {Object.} stack + */ + function notifyHandlers(stack, isWindowError) { + var exception = null; + if (isWindowError && !TraceKit.collectWindowErrors) { return; } + for (var i in handlers) { + if (handlers.hasOwnProperty(i)) { + try { + handlers[i].apply(null, [stack].concat(_slice.call(arguments, 2))); + } catch (inner) { + exception = inner; + } + } + } - var status = request.status; // 400 - project_id doesn't exist or some other fatal - // 401 - invalid/revoked dsn - // 429 - too many requests - - if (!(status === 400 || status === 401 || status === 429)) return; - var retry; - - try { - // If Retry-After is not in Access-Control-Expose-Headers, most - // browsers will throw an exception trying to access it - if (supportsFetch()) { - retry = request.headers.get('Retry-After'); - } else { - retry = request.getResponseHeader('Retry-After'); - } // Retry-After is returned in seconds - - - retry = parseInt(retry, 10) * 1000; - } catch (e) { - /* eslint no-empty:0 */ + if (exception) { + throw exception; } + } - this._backoffDuration = retry ? // If Sentry server returned a Retry-After value, use it - retry : // Otherwise, double the last backoff duration (starts at 1 sec) - this._backoffDuration * 2 || 1000; - this._backoffStart = now(); - }, - _send: function _send(data) { - var globalOptions = this._globalOptions; + var _oldOnerrorHandler, _onErrorHandlerInstalled; - var baseData = { - project: this._globalProject, - logger: globalOptions.logger, - platform: 'javascript' - }, - httpData = this._getHttpData(); + /** + * Ensures all global unhandled exceptions are recorded. + * Supported by Gecko and IE. + * @param {string} msg Error message. + * @param {string} url URL of script that generated the exception. + * @param {(number|string)} lineNo The line number at which the error + * occurred. + * @param {?(number|string)} colNo The column number at which the error + * occurred. + * @param {?Error} ex The actual Error object. + */ + function traceKitWindowOnError(msg, url, lineNo, colNo, ex) { + var stack = null; + // If 'ex' is ErrorEvent, get real Error from inside + var exception = utils.isErrorEvent(ex) ? ex.error : ex; + // If 'msg' is ErrorEvent, get real message from inside + var message = utils.isErrorEvent(msg) ? msg.message : msg; - if (httpData) { - baseData.request = httpData; - } // HACK: delete `trimHeadFrames` to prevent from appearing in outbound payload - - - if (data.trimHeadFrames) delete data.trimHeadFrames; - data = objectMerge(baseData, data); // Merge in the tags and extra separately since objectMerge doesn't handle a deep merge - - data.tags = objectMerge(objectMerge({}, this._globalContext.tags), data.tags); - data.extra = objectMerge(objectMerge({}, this._globalContext.extra), data.extra); // Send along our own collected metadata with extra - - data.extra['session:duration'] = now() - this._startTime; + if (lastExceptionStack) { + TraceKit.computeStackTrace.augmentStackTraceWithInitialElement( + lastExceptionStack, + url, + lineNo, + message + ); + processLastException(); + } else if (exception && utils.isError(exception)) { + // non-string `exception` arg; attempt to extract stack trace - if (this._breadcrumbs && this._breadcrumbs.length > 0) { - // intentionally make shallow copy so that additions - // to breadcrumbs aren't accidentally sent in this request - data.breadcrumbs = { - values: [].slice.call(this._breadcrumbs, 0) + // New chrome and blink send along a real error object + // Let's just report that like a normal error. + // See: https://mikewest.org/2013/08/debugging-runtime-errors-with-window-onerror + stack = TraceKit.computeStackTrace(exception); + notifyHandlers(stack, true); + } else { + var location = { + url: url, + line: lineNo, + column: colNo }; - } - - if (this._globalContext.user) { - // sentry.interfaces.User - data.user = this._globalContext.user; - } // Include the environment if it's defined in globalOptions - - - if (globalOptions.environment) data.environment = globalOptions.environment; // Include the release if it's defined in globalOptions - if (globalOptions.release) data.release = globalOptions.release; // Include server_name if it's defined in globalOptions - - if (globalOptions.serverName) data.server_name = globalOptions.serverName; // Cleanup empty properties before sending them to the server + var name = undefined; + var groups; - Object.keys(data).forEach(function (key) { - if (data[key] == null || data[key] === '' || isEmptyObject(data[key])) { - delete data[key]; + if ({}.toString.call(message) === '[object String]') { + var groups = message.match(ERROR_TYPES_RE); + if (groups) { + name = groups[1]; + message = groups[2]; + } } - }); - if (isFunction(globalOptions.dataCallback)) { - data = globalOptions.dataCallback(data) || data; - } // Why?????????? + location.func = UNKNOWN_FUNCTION; + stack = { + name: name, + message: message, + url: getLocationHref(), + stack: [location] + }; + notifyHandlers(stack, true); + } - if (!data || isEmptyObject(data)) { - return; - } // Check if the request should be filtered or not + if (_oldOnerrorHandler) { + return _oldOnerrorHandler.apply(this, arguments); + } + return false; + } - if (isFunction(globalOptions.shouldSendCallback) && !globalOptions.shouldSendCallback(data)) { + function installGlobalHandler() { + if (_onErrorHandlerInstalled) { return; - } // Backoff state: Sentry server previously responded w/ an error (e.g. 429 - too many requests), - // so drop requests until "cool-off" period has elapsed. - - - if (this._shouldBackoff()) { - this._logDebug('warn', 'Raven dropped error due to backoff: ', data); + } + _oldOnerrorHandler = _window.onerror; + _window.onerror = traceKitWindowOnError; + _onErrorHandlerInstalled = true; + } + function uninstallGlobalHandler() { + if (!_onErrorHandlerInstalled) { return; } + _window.onerror = _oldOnerrorHandler; + _onErrorHandlerInstalled = false; + _oldOnerrorHandler = undefined; + } - if (typeof globalOptions.sampleRate === 'number') { - if (Math.random() < globalOptions.sampleRate) { - this._sendProcessedPayload(data); + function processLastException() { + var _lastExceptionStack = lastExceptionStack, + _lastArgs = lastArgs; + lastArgs = null; + lastExceptionStack = null; + lastException = null; + notifyHandlers.apply(null, [_lastExceptionStack, false].concat(_lastArgs)); + } + + /** + * Reports an unhandled Error to TraceKit. + * @param {Error} ex + * @param {?boolean} rethrow If false, do not re-throw the exception. + * Only used for window.onerror to not cause an infinite loop of + * rethrowing. + */ + function report(ex, rethrow) { + var args = _slice.call(arguments, 1); + if (lastExceptionStack) { + if (lastException === ex) { + return; // already caught by an inner catch block, ignore + } else { + processLastException(); } - } else { - this._sendProcessedPayload(data); } - }, - _getUuid: function _getUuid() { - return uuid4(); - }, - _sendProcessedPayload: function _sendProcessedPayload(data, callback) { - var self = this; - var globalOptions = this._globalOptions; - if (!this.isSetup()) return; // Try and clean up the packet before sending by truncating long values - - data = this._trimPacket(data); // ideally duplicate error testing should occur *before* dataCallback/shouldSendCallback, - // but this would require copying an un-truncated copy of the data packet, which can be - // arbitrarily deep (extra_data) -- could be worthwhile? will revisit - if (!this._globalOptions.allowDuplicates && this._isRepeatData(data)) { - this._logDebug('warn', 'Raven dropped repeat event: ', data); + var stack = TraceKit.computeStackTrace(ex); + lastExceptionStack = stack; + lastException = ex; + lastArgs = args; - return; - } // Send along an event_id if not explicitly passed. - // This event_id can be used to reference the error within Sentry itself. - // Set lastEventId after we know the error should actually be sent + // If the stack trace is incomplete, wait for 2 seconds for + // slow slow IE to see if onerror occurs or not before reporting + // this exception; otherwise, we will end up with an incomplete + // stack trace + setTimeout(function() { + if (lastException === ex) { + processLastException(); + } + }, stack.incomplete ? 2000 : 0); + if (rethrow !== false) { + throw ex; // re-throw to propagate to the top level (and cause window.onerror) + } + } - this._lastEventId = data.event_id || (data.event_id = this._getUuid()); // Store outbound payload after trim + report.subscribe = subscribe; + report.unsubscribe = unsubscribe; + report.uninstall = unsubscribeAll; + return report; +})(); - this._lastData = data; +/** + * TraceKit.computeStackTrace: cross-browser stack traces in JavaScript + * + * Syntax: + * s = TraceKit.computeStackTrace(exception) // consider using TraceKit.report instead (see below) + * Returns: + * s.name - exception name + * s.message - exception message + * s.stack[i].url - JavaScript or HTML file URL + * s.stack[i].func - function name, or empty for anonymous functions (if guessing did not work) + * s.stack[i].args - arguments passed to the function, if known + * s.stack[i].line - line number, if known + * s.stack[i].column - column number, if known + * + * Supports: + * - Firefox: full stack trace with line numbers and unreliable column + * number on top frame + * - Opera 10: full stack trace with line and column numbers + * - Opera 9-: full stack trace with line numbers + * - Chrome: full stack trace with line and column numbers + * - Safari: line and column number for the topmost stacktrace element + * only + * - IE: no line numbers whatsoever + * + * Tries to guess names of anonymous functions by looking for assignments + * in the source code. In IE and Safari, we have to guess source file names + * by searching for function bodies inside all page scripts. This will not + * work for scripts that are loaded cross-domain. + * Here be dragons: some function names may be guessed incorrectly, and + * duplicate functions may be mismatched. + * + * TraceKit.computeStackTrace should only be used for tracing purposes. + * Logging of unhandled exceptions should be done with TraceKit.report, + * which builds on top of TraceKit.computeStackTrace and provides better + * IE support by utilizing the window.onerror event to retrieve information + * about the top of the stack. + * + * Note: In IE and Safari, no stack trace is recorded on the Error object, + * so computeStackTrace instead walks its *own* chain of callers. + * This means that: + * * in Safari, some methods may be missing from the stack trace; + * * in IE, the topmost function in the stack trace will always be the + * caller of computeStackTrace. + * + * This is okay for tracing (because you are likely to be calling + * computeStackTrace from the function you want to be the topmost element + * of the stack trace anyway), but not okay for logging unhandled + * exceptions (because your catch block will likely be far away from the + * inner function that actually caused the exception). + * + */ +TraceKit.computeStackTrace = (function computeStackTraceWrapper() { + // Contents of Exception in various browsers. + // + // SAFARI: + // ex.message = Can't find variable: qq + // ex.line = 59 + // ex.sourceId = 580238192 + // ex.sourceURL = http://... + // ex.expressionBeginOffset = 96 + // ex.expressionCaretOffset = 98 + // ex.expressionEndOffset = 98 + // ex.name = ReferenceError + // + // FIREFOX: + // ex.message = qq is not defined + // ex.fileName = http://... + // ex.lineNumber = 59 + // ex.columnNumber = 69 + // ex.stack = ...stack trace... (see the example below) + // ex.name = ReferenceError + // + // CHROME: + // ex.message = qq is not defined + // ex.name = ReferenceError + // ex.type = not_defined + // ex.arguments = ['aa'] + // ex.stack = ...stack trace... + // + // INTERNET EXPLORER: + // ex.message = ... + // ex.name = ReferenceError + // + // OPERA: + // ex.message = ...message... (see the example below) + // ex.name = ReferenceError + // ex.opera#sourceloc = 11 (pretty much useless, duplicates the info in ex.message) + // ex.stacktrace = n/a; see 'opera:config#UserPrefs|Exceptions Have Stacktrace' - this._logDebug('debug', 'Raven about to send:', data); + /** + * Computes stack trace information from the stack property. + * Chrome and Gecko use this property. + * @param {Error} ex + * @return {?Object.} Stack trace information. + */ + function computeStackTraceFromStackProp(ex) { + if (typeof ex.stack === 'undefined' || !ex.stack) return; - var auth = { - sentry_version: '7', - sentry_client: 'raven-js/' + this.VERSION, - sentry_key: this._globalKey - }; + var chrome = /^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i; + var winjs = /^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i; + // NOTE: blob urls are now supposed to always have an origin, therefore it's format + // which is `blob:http://url/path/with-some-uuid`, is matched by `blob.*?:\/` as well + var gecko = /^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i; + // Used to additionally parse URL/line/column from eval frames + var geckoEval = /(\S+) line (\d+)(?: > eval line \d+)* > eval/i; + var chromeEval = /\((\S*)(?::(\d+))(?::(\d+))\)/; + var lines = ex.stack.split('\n'); + var stack = []; + var submatch; + var parts; + var element; + var reference = /^(.*) is undefined$/.exec(ex.message); - if (this._globalSecret) { - auth.sentry_secret = this._globalSecret; - } + for (var i = 0, j = lines.length; i < j; ++i) { + if ((parts = chrome.exec(lines[i]))) { + var isNative = parts[2] && parts[2].indexOf('native') === 0; // start of line + var isEval = parts[2] && parts[2].indexOf('eval') === 0; // start of line + if (isEval && (submatch = chromeEval.exec(parts[2]))) { + // throw out eval line/column and use top-most line/column number + parts[2] = submatch[1]; // url + parts[3] = submatch[2]; // line + parts[4] = submatch[3]; // column + } + element = { + url: !isNative ? parts[2] : null, + func: parts[1] || UNKNOWN_FUNCTION, + args: isNative ? [parts[2]] : [], + line: parts[3] ? +parts[3] : null, + column: parts[4] ? +parts[4] : null + }; + } else if ((parts = winjs.exec(lines[i]))) { + element = { + url: parts[2], + func: parts[1] || UNKNOWN_FUNCTION, + args: [], + line: +parts[3], + column: parts[4] ? +parts[4] : null + }; + } else if ((parts = gecko.exec(lines[i]))) { + var isEval = parts[3] && parts[3].indexOf(' > eval') > -1; + if (isEval && (submatch = geckoEval.exec(parts[3]))) { + // throw out eval line/column and use top-most line number + parts[3] = submatch[1]; + parts[4] = submatch[2]; + parts[5] = null; // no column when eval + } else if (i === 0 && !parts[5] && typeof ex.columnNumber !== 'undefined') { + // FireFox uses this awesome columnNumber property for its top frame + // Also note, Firefox's column number is 0-based and everything else expects 1-based, + // so adding 1 + // NOTE: this hack doesn't work if top-most frame is eval + stack[0].column = ex.columnNumber + 1; + } + element = { + url: parts[3], + func: parts[1] || UNKNOWN_FUNCTION, + args: parts[2] ? parts[2].split(',') : [], + line: parts[4] ? +parts[4] : null, + column: parts[5] ? +parts[5] : null + }; + } else { + continue; + } - var exception = data.exception && data.exception.values[0]; // only capture 'sentry' breadcrumb is autoBreadcrumbs is truthy + if (!element.func && element.line) { + element.func = UNKNOWN_FUNCTION; + } - if (this._globalOptions.autoBreadcrumbs && this._globalOptions.autoBreadcrumbs.sentry) { - this.captureBreadcrumb({ - category: 'sentry', - message: exception ? (exception.type ? exception.type + ': ' : '') + exception.value : data.message, - event_id: data.event_id, - level: data.level || 'error' // presume error unless specified + stack.push(element); + } - }); + if (!stack.length) { + return null; } - var url = this._globalEndpoint; + return { + name: ex.name, + message: ex.message, + url: getLocationHref(), + stack: stack + }; + } - (globalOptions.transport || this._makeRequest).call(this, { + /** + * Adds information about the first frame to incomplete stack traces. + * Safari and IE require this to get complete data on the first frame. + * @param {Object.} stackInfo Stack trace information from + * one of the compute* methods. + * @param {string} url The URL of the script that caused an error. + * @param {(number|string)} lineNo The line number of the script that + * caused an error. + * @param {string=} message The error generated by the browser, which + * hopefully contains the name of the object that caused the error. + * @return {boolean} Whether or not the stack information was + * augmented. + */ + function augmentStackTraceWithInitialElement(stackInfo, url, lineNo, message) { + var initial = { url: url, - auth: auth, - data: data, - options: globalOptions, - onSuccess: function success() { - self._resetBackoff(); + line: lineNo + }; - self._triggerEvent('success', { - data: data, - src: url - }); + if (initial.url && initial.line) { + stackInfo.incomplete = false; - callback && callback(); - }, - onError: function failure(error) { - self._logDebug('error', 'Raven transport failed to send: ', error); + if (!initial.func) { + initial.func = UNKNOWN_FUNCTION; + } - if (error.request) { - self._setBackoffState(error.request); + if (stackInfo.stack.length > 0) { + if (stackInfo.stack[0].url === initial.url) { + if (stackInfo.stack[0].line === initial.line) { + return false; // already in stack trace + } else if ( + !stackInfo.stack[0].line && + stackInfo.stack[0].func === initial.func + ) { + stackInfo.stack[0].line = initial.line; + return false; + } } - - self._triggerEvent('failure', { - data: data, - src: url - }); - - error = error || new Error('Raven send failed (no additional details provided)'); - callback && callback(error); } - }); - }, - _makeRequest: function _makeRequest(opts) { - // Auth is intentionally sent as part of query string (NOT as custom HTTP header) to avoid preflight CORS requests - var url = opts.url + '?' + urlencode(opts.auth); - var evaluatedHeaders = null; - var evaluatedFetchParameters = {}; - - if (opts.options.headers) { - evaluatedHeaders = this._evaluateHash(opts.options.headers); - } - if (opts.options.fetchParameters) { - evaluatedFetchParameters = this._evaluateHash(opts.options.fetchParameters); + stackInfo.stack.unshift(initial); + stackInfo.partial = true; + return true; + } else { + stackInfo.incomplete = true; } - if (supportsFetch()) { - evaluatedFetchParameters.body = stringify_1(opts.data); - var defaultFetchOptions = objectMerge({}, this._fetchDefaults); - var fetchOptions = objectMerge(defaultFetchOptions, evaluatedFetchParameters); + return false; + } - if (evaluatedHeaders) { - fetchOptions.headers = evaluatedHeaders; + /** + * Computes stack trace information by walking the arguments.caller + * chain at the time the exception occurred. This will cause earlier + * frames to be missed but is the only way to get any stack trace in + * Safari and IE. The top frame is restored by + * {@link augmentStackTraceWithInitialElement}. + * @param {Error} ex + * @return {?Object.} Stack trace information. + */ + function computeStackTraceByWalkingCallerChain(ex, depth) { + var functionName = /function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i, + stack = [], + funcs = {}, + recursion = false, + parts, + item, + source; + + for ( + var curr = computeStackTraceByWalkingCallerChain.caller; + curr && !recursion; + curr = curr.caller + ) { + if (curr === computeStackTrace || curr === TraceKit.report) { + // console.log('skipping internal function'); + continue; } - return _window$1.fetch(url, fetchOptions).then(function (response) { - if (response.ok) { - opts.onSuccess && opts.onSuccess(); - } else { - var error = new Error('Sentry error code: ' + response.status); // It's called request only to keep compatibility with XHR interface - // and not add more redundant checks in setBackoffState method - - error.request = response; - opts.onError && opts.onError(error); - } - })['catch'](function () { - opts.onError && opts.onError(new Error('Sentry error code: network unavailable')); - }); - } - - var request = _window$1.XMLHttpRequest && new _window$1.XMLHttpRequest(); - if (!request) return; // if browser doesn't support CORS (e.g. IE7), we are out of luck - - var hasCORS = 'withCredentials' in request || typeof XDomainRequest !== 'undefined'; - if (!hasCORS) return; - - if ('withCredentials' in request) { - request.onreadystatechange = function () { - if (request.readyState !== 4) { - return; - } else if (request.status === 200) { - opts.onSuccess && opts.onSuccess(); - } else if (opts.onError) { - var err = new Error('Sentry error code: ' + request.status); - err.request = request; - opts.onError(err); - } - }; - } else { - request = new XDomainRequest(); // xdomainrequest cannot go http -> https (or vice versa), - // so always use protocol relative + item = { + url: null, + func: UNKNOWN_FUNCTION, + line: null, + column: null + }; - url = url.replace(/^https?:/, ''); // onreadystatechange not supported by XDomainRequest + if (curr.name) { + item.func = curr.name; + } else if ((parts = functionName.exec(curr.toString()))) { + item.func = parts[1]; + } - if (opts.onSuccess) { - request.onload = opts.onSuccess; + if (typeof item.func === 'undefined') { + try { + item.func = parts.input.substring(0, parts.input.indexOf('{')); + } catch (e) {} } - if (opts.onError) { - request.onerror = function () { - var err = new Error('Sentry error code: XDomainRequest'); - err.request = request; - opts.onError(err); - }; + if (funcs['' + curr]) { + recursion = true; + } else { + funcs['' + curr] = true; } - } - request.open('POST', url); + stack.push(item); + } - if (evaluatedHeaders) { - each(evaluatedHeaders, function (key, value) { - request.setRequestHeader(key, value); - }); + if (depth) { + // console.log('depth is ' + depth); + // console.log('stack is ' + stack.length); + stack.splice(0, depth); } - request.send(stringify_1(opts.data)); - }, - _evaluateHash: function _evaluateHash(hash) { - var evaluated = {}; + var result = { + name: ex.name, + message: ex.message, + url: getLocationHref(), + stack: stack + }; + augmentStackTraceWithInitialElement( + result, + ex.sourceURL || ex.fileName, + ex.line || ex.lineNumber, + ex.message || ex.description + ); + return result; + } - for (var key in hash) { - if (hash.hasOwnProperty(key)) { - var value = hash[key]; - evaluated[key] = typeof value === 'function' ? value() : value; + /** + * Computes a stack trace for an exception. + * @param {Error} ex + * @param {(string|number)=} depth + */ + function computeStackTrace(ex, depth) { + var stack = null; + depth = depth == null ? 0 : +depth; + + try { + stack = computeStackTraceFromStackProp(ex); + if (stack) { + return stack; + } + } catch (e) { + if (TraceKit.debug) { + throw e; } } - return evaluated; - }, - _logDebug: function _logDebug(level) { - if (this._originalConsoleMethods[level] && this.debug) { - // In IE<10 console methods do not have their own 'apply' method - Function.prototype.apply.call(this._originalConsoleMethods[level], this._originalConsole, [].slice.call(arguments, 1)); - } - }, - _mergeContext: function _mergeContext(key, context) { - if (isUndefined(context)) { - delete this._globalContext[key]; - } else { - this._globalContext[key] = objectMerge(this._globalContext[key] || {}, context); + try { + stack = computeStackTraceByWalkingCallerChain(ex, depth + 1); + if (stack) { + return stack; + } + } catch (e) { + if (TraceKit.debug) { + throw e; + } } + return { + name: ex.name, + message: ex.message, + url: getLocationHref() + }; } -}; // Deprecations -Raven$1.prototype.setUser = Raven$1.prototype.setUserContext; -Raven$1.prototype.setReleaseContext = Raven$1.prototype.setRelease; -var raven = Raven$1; + computeStackTrace.augmentStackTraceWithInitialElement = augmentStackTraceWithInitialElement; + computeStackTrace.computeStackTraceFromStackProp = computeStackTraceFromStackProp; -/** - * Enforces a single instance of the Raven client, and the - * main entry point for Raven. If you are a consumer of the - * Raven library, you SHOULD load this file (vs raven.js). - **/ -// This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) + return computeStackTrace; +})(); -var _window = typeof window !== 'undefined' ? window : typeof commonjsGlobal !== 'undefined' ? commonjsGlobal : typeof self !== 'undefined' ? self : {}; +module.exports = TraceKit; -var _Raven = _window.Raven; -var Raven = new raven(); +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"9":9}],11:[function(_dereq_,module,exports){ /* - * Allow multiple versions of Raven to be installed. - * Strip Raven from the global context and returns the instance. - * - * @return {Raven} - */ - -Raven.noConflict = function () { - _window.Raven = _Raven; - return Raven; -}; - -Raven.afterLoad(); -var singleton = Raven; - -/** - * Angular.js plugin - * - * Provides an $exceptionHandler for Angular.js - */ + json-stringify-safe + Like JSON.stringify, but doesn't throw on circular references. -var wrappedCallback$1 = utils.wrappedCallback; // See https://github.com/angular/angular.js/blob/v1.4.7/src/minErr.js + Originally forked from https://github.com/isaacs/json-stringify-safe + version 5.0.1 on 3/8/2017 and modified to handle Errors serialization + and IE8 compatibility. Tests for this are in test/vendor. -var angularPattern = /^\[((?:[$a-zA-Z0-9]+:)?(?:[$a-zA-Z0-9]+))\] (.*?)\n?(\S+)$/; -var moduleName = 'ngRaven'; + ISC license: https://github.com/isaacs/json-stringify-safe/blob/master/LICENSE +*/ -function angularPlugin(Raven, angular) { - angular = angular || window.angular; - if (!angular) return; +exports = module.exports = stringify; +exports.getSerialize = serializer; - function RavenProvider() { - this.$get = ['$window', function ($window) { - return Raven; - }]; +function indexOf(haystack, needle) { + for (var i = 0; i < haystack.length; ++i) { + if (haystack[i] === needle) return i; } + return -1; +} - function ExceptionHandlerProvider($provide) { - $provide.decorator('$exceptionHandler', ['Raven', '$delegate', exceptionHandler]); - } +function stringify(obj, replacer, spaces, cycleReplacer) { + return JSON.stringify(obj, serializer(replacer, cycleReplacer), spaces); +} - function exceptionHandler(R, $delegate) { - return function (ex, cause) { - R.captureException(ex, { - extra: { - cause: cause - } - }); - $delegate(ex, cause); - }; +// https://github.com/ftlabs/js-abbreviate/blob/fa709e5f139e7770a71827b1893f22418097fbda/index.js#L95-L106 +function stringifyError(value) { + var err = { + // These properties are implemented as magical getters and don't show up in for in + stack: value.stack, + message: value.message, + name: value.name + }; + + for (var i in value) { + if (Object.prototype.hasOwnProperty.call(value, i)) { + err[i] = value[i]; + } } - angular.module(moduleName, []).provider('Raven', RavenProvider).config(['$provide', ExceptionHandlerProvider]); - Raven.setDataCallback(wrappedCallback$1(function (data) { - return angularPlugin._normalizeData(data); - })); + return err; } -angularPlugin._normalizeData = function (data) { - // We only care about mutating an exception - var exception = data.exception; +function serializer(replacer, cycleReplacer) { + var stack = []; + var keys = []; - if (exception) { - exception = exception.values[0]; - var matches = angularPattern.exec(exception.value); + if (cycleReplacer == null) { + cycleReplacer = function(key, value) { + if (stack[0] === value) { + return '[Circular ~]'; + } + return '[Circular ~.' + keys.slice(0, indexOf(stack, value)).join('.') + ']'; + }; + } - if (matches) { - // This type now becomes something like: $rootScope:inprog - exception.type = matches[1]; - exception.value = matches[2]; - data.message = exception.type + ': ' + exception.value; // auto set a new tag specifically for the angular error url + return function(key, value) { + if (stack.length > 0) { + var thisPos = indexOf(stack, this); + ~thisPos ? stack.splice(thisPos + 1) : stack.push(this); + ~thisPos ? keys.splice(thisPos, Infinity, key) : keys.push(key); - data.extra.angularDocs = matches[3].substr(0, 250); + if (~indexOf(stack, value)) { + value = cycleReplacer.call(this, key, value); + } + } else { + stack.push(value); } - } - - return data; -}; -angularPlugin.moduleName = moduleName; -var angular = angularPlugin; + return replacer == null + ? value instanceof Error ? stringifyError(value) : value + : replacer.call(this, key, value); + }; +} -/** - * console plugin +},{}],12:[function(_dereq_,module,exports){ +/* + * JavaScript MD5 + * https://github.com/blueimp/JavaScript-MD5 * - * Monkey patches console.* calls into Sentry messages with - * their appropriate log levels. (Experimental) + * Copyright 2011, Sebastian Tschan + * https://blueimp.net * - * Options: + * Licensed under the MIT license: + * https://opensource.org/licenses/MIT * - * `levels`: An array of levels (methods on `console`) to report to Sentry. - * Defaults to debug, info, warn, and error. + * Based on + * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message + * Digest Algorithm, as defined in RFC 1321. + * Version 2.2 Copyright (C) Paul Johnston 1999 - 2009 + * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet + * Distributed under the BSD License + * See http://pajhome.org.uk/crypt/md5 for more info. */ -var wrapConsoleMethod$1 = console$1.wrapMethod; - -function consolePlugin(Raven, console, pluginOptions) { - console = console || window.console || {}; - pluginOptions = pluginOptions || {}; - var logLevels = pluginOptions.levels || ['debug', 'info', 'warn', 'error']; - if ('assert' in console) logLevels.push('assert'); +/* +* Add integers, wrapping at 2^32. This uses 16-bit operations internally +* to work around bugs in some JS interpreters. +*/ +function safeAdd(x, y) { + var lsw = (x & 0xffff) + (y & 0xffff); + var msw = (x >> 16) + (y >> 16) + (lsw >> 16); + return (msw << 16) | (lsw & 0xffff); +} - var callback = function callback(msg, data) { - Raven.captureMessage(msg, data); - }; +/* +* Bitwise rotate a 32-bit number to the left. +*/ +function bitRotateLeft(num, cnt) { + return (num << cnt) | (num >>> (32 - cnt)); +} - var level = logLevels.pop(); +/* +* These functions implement the four basic operations the algorithm uses. +*/ +function md5cmn(q, a, b, x, s, t) { + return safeAdd(bitRotateLeft(safeAdd(safeAdd(a, q), safeAdd(x, t)), s), b); +} +function md5ff(a, b, c, d, x, s, t) { + return md5cmn((b & c) | (~b & d), a, b, x, s, t); +} +function md5gg(a, b, c, d, x, s, t) { + return md5cmn((b & d) | (c & ~d), a, b, x, s, t); +} +function md5hh(a, b, c, d, x, s, t) { + return md5cmn(b ^ c ^ d, a, b, x, s, t); +} +function md5ii(a, b, c, d, x, s, t) { + return md5cmn(c ^ (b | ~d), a, b, x, s, t); +} - while (level) { - wrapConsoleMethod$1(console, level, callback); - level = logLevels.pop(); +/* +* Calculate the MD5 of an array of little-endian words, and a bit length. +*/ +function binlMD5(x, len) { + /* append padding */ + x[len >> 5] |= 0x80 << (len % 32); + x[(((len + 64) >>> 9) << 4) + 14] = len; + + var i; + var olda; + var oldb; + var oldc; + var oldd; + var a = 1732584193; + var b = -271733879; + var c = -1732584194; + var d = 271733878; + + for (i = 0; i < x.length; i += 16) { + olda = a; + oldb = b; + oldc = c; + oldd = d; + + a = md5ff(a, b, c, d, x[i], 7, -680876936); + d = md5ff(d, a, b, c, x[i + 1], 12, -389564586); + c = md5ff(c, d, a, b, x[i + 2], 17, 606105819); + b = md5ff(b, c, d, a, x[i + 3], 22, -1044525330); + a = md5ff(a, b, c, d, x[i + 4], 7, -176418897); + d = md5ff(d, a, b, c, x[i + 5], 12, 1200080426); + c = md5ff(c, d, a, b, x[i + 6], 17, -1473231341); + b = md5ff(b, c, d, a, x[i + 7], 22, -45705983); + a = md5ff(a, b, c, d, x[i + 8], 7, 1770035416); + d = md5ff(d, a, b, c, x[i + 9], 12, -1958414417); + c = md5ff(c, d, a, b, x[i + 10], 17, -42063); + b = md5ff(b, c, d, a, x[i + 11], 22, -1990404162); + a = md5ff(a, b, c, d, x[i + 12], 7, 1804603682); + d = md5ff(d, a, b, c, x[i + 13], 12, -40341101); + c = md5ff(c, d, a, b, x[i + 14], 17, -1502002290); + b = md5ff(b, c, d, a, x[i + 15], 22, 1236535329); + + a = md5gg(a, b, c, d, x[i + 1], 5, -165796510); + d = md5gg(d, a, b, c, x[i + 6], 9, -1069501632); + c = md5gg(c, d, a, b, x[i + 11], 14, 643717713); + b = md5gg(b, c, d, a, x[i], 20, -373897302); + a = md5gg(a, b, c, d, x[i + 5], 5, -701558691); + d = md5gg(d, a, b, c, x[i + 10], 9, 38016083); + c = md5gg(c, d, a, b, x[i + 15], 14, -660478335); + b = md5gg(b, c, d, a, x[i + 4], 20, -405537848); + a = md5gg(a, b, c, d, x[i + 9], 5, 568446438); + d = md5gg(d, a, b, c, x[i + 14], 9, -1019803690); + c = md5gg(c, d, a, b, x[i + 3], 14, -187363961); + b = md5gg(b, c, d, a, x[i + 8], 20, 1163531501); + a = md5gg(a, b, c, d, x[i + 13], 5, -1444681467); + d = md5gg(d, a, b, c, x[i + 2], 9, -51403784); + c = md5gg(c, d, a, b, x[i + 7], 14, 1735328473); + b = md5gg(b, c, d, a, x[i + 12], 20, -1926607734); + + a = md5hh(a, b, c, d, x[i + 5], 4, -378558); + d = md5hh(d, a, b, c, x[i + 8], 11, -2022574463); + c = md5hh(c, d, a, b, x[i + 11], 16, 1839030562); + b = md5hh(b, c, d, a, x[i + 14], 23, -35309556); + a = md5hh(a, b, c, d, x[i + 1], 4, -1530992060); + d = md5hh(d, a, b, c, x[i + 4], 11, 1272893353); + c = md5hh(c, d, a, b, x[i + 7], 16, -155497632); + b = md5hh(b, c, d, a, x[i + 10], 23, -1094730640); + a = md5hh(a, b, c, d, x[i + 13], 4, 681279174); + d = md5hh(d, a, b, c, x[i], 11, -358537222); + c = md5hh(c, d, a, b, x[i + 3], 16, -722521979); + b = md5hh(b, c, d, a, x[i + 6], 23, 76029189); + a = md5hh(a, b, c, d, x[i + 9], 4, -640364487); + d = md5hh(d, a, b, c, x[i + 12], 11, -421815835); + c = md5hh(c, d, a, b, x[i + 15], 16, 530742520); + b = md5hh(b, c, d, a, x[i + 2], 23, -995338651); + + a = md5ii(a, b, c, d, x[i], 6, -198630844); + d = md5ii(d, a, b, c, x[i + 7], 10, 1126891415); + c = md5ii(c, d, a, b, x[i + 14], 15, -1416354905); + b = md5ii(b, c, d, a, x[i + 5], 21, -57434055); + a = md5ii(a, b, c, d, x[i + 12], 6, 1700485571); + d = md5ii(d, a, b, c, x[i + 3], 10, -1894986606); + c = md5ii(c, d, a, b, x[i + 10], 15, -1051523); + b = md5ii(b, c, d, a, x[i + 1], 21, -2054922799); + a = md5ii(a, b, c, d, x[i + 8], 6, 1873313359); + d = md5ii(d, a, b, c, x[i + 15], 10, -30611744); + c = md5ii(c, d, a, b, x[i + 6], 15, -1560198380); + b = md5ii(b, c, d, a, x[i + 13], 21, 1309151649); + a = md5ii(a, b, c, d, x[i + 4], 6, -145523070); + d = md5ii(d, a, b, c, x[i + 11], 10, -1120210379); + c = md5ii(c, d, a, b, x[i + 2], 15, 718787259); + b = md5ii(b, c, d, a, x[i + 9], 21, -343485551); + + a = safeAdd(a, olda); + b = safeAdd(b, oldb); + c = safeAdd(c, oldc); + d = safeAdd(d, oldd); } + return [a, b, c, d]; } -var console$3 = consolePlugin; - -/*global define*/ - -/** - * require.js plugin - * - * Automatically wrap define/require callbacks. (Experimental) - */ - -function requirePlugin(Raven) { - if (typeof undefined === 'function' && undefined.amd) { - window.define = Raven.wrap({ - deep: false - }, undefined); - window.require = Raven.wrap({ - deep: false - }, commonjsRequire); +/* +* Convert an array of little-endian words to a string +*/ +function binl2rstr(input) { + var i; + var output = ''; + var length32 = input.length * 32; + for (i = 0; i < length32; i += 8) { + output += String.fromCharCode((input[i >> 5] >>> (i % 32)) & 0xff); } + return output; } -var require_1 = requirePlugin; - -/** - * Vue.js 2.0 plugin - * - */ -function formatComponentName(vm) { - if (vm.$root === vm) { - return 'root instance'; +/* +* Convert a raw string to an array of little-endian words +* Characters >255 have their high-byte silently ignored. +*/ +function rstr2binl(input) { + var i; + var output = []; + output[(input.length >> 2) - 1] = undefined; + for (i = 0; i < output.length; i += 1) { + output[i] = 0; } - - var name = vm._isVue ? vm.$options.name || vm.$options._componentTag : vm.name; - return (name ? 'component <' + name + '>' : 'anonymous component') + (vm._isVue && vm.$options.__file ? ' at ' + vm.$options.__file : ''); + var length8 = input.length * 8; + for (i = 0; i < length8; i += 8) { + output[i >> 5] |= (input.charCodeAt(i / 8) & 0xff) << (i % 32); + } + return output; } -function vuePlugin(Raven, Vue) { - Vue = Vue || window.Vue; // quit if Vue isn't on the page - - if (!Vue || !Vue.config) return; - var _oldOnError = Vue.config.errorHandler; +/* +* Calculate the MD5 of a raw string +*/ +function rstrMD5(s) { + return binl2rstr(binlMD5(rstr2binl(s), s.length * 8)); +} - Vue.config.errorHandler = function VueErrorHandler(error, vm, info) { - var metaData = {}; // vm and lifecycleHook are not always available +/* +* Calculate the HMAC-MD5, of a key and some data (raw strings) +*/ +function rstrHMACMD5(key, data) { + var i; + var bkey = rstr2binl(key); + var ipad = []; + var opad = []; + var hash; + ipad[15] = opad[15] = undefined; + if (bkey.length > 16) { + bkey = binlMD5(bkey, key.length * 8); + } + for (i = 0; i < 16; i += 1) { + ipad[i] = bkey[i] ^ 0x36363636; + opad[i] = bkey[i] ^ 0x5c5c5c5c; + } + hash = binlMD5(ipad.concat(rstr2binl(data)), 512 + data.length * 8); + return binl2rstr(binlMD5(opad.concat(hash), 512 + 128)); +} - if (Object.prototype.toString.call(vm) === '[object Object]') { - metaData.componentName = formatComponentName(vm); - metaData.propsData = vm.$options.propsData; - } +/* +* Convert a raw string to a hex string +*/ +function rstr2hex(input) { + var hexTab = '0123456789abcdef'; + var output = ''; + var x; + var i; + for (i = 0; i < input.length; i += 1) { + x = input.charCodeAt(i); + output += hexTab.charAt((x >>> 4) & 0x0f) + hexTab.charAt(x & 0x0f); + } + return output; +} - if (typeof info !== 'undefined') { - metaData.lifecycleHook = info; - } +/* +* Encode a string as utf-8 +*/ +function str2rstrUTF8(input) { + return unescape(encodeURIComponent(input)); +} - Raven.captureException(error, { - extra: metaData - }); +/* +* Take string arguments and return either raw or hex encoded strings +*/ +function rawMD5(s) { + return rstrMD5(str2rstrUTF8(s)); +} +function hexMD5(s) { + return rstr2hex(rawMD5(s)); +} +function rawHMACMD5(k, d) { + return rstrHMACMD5(str2rstrUTF8(k), str2rstrUTF8(d)); +} +function hexHMACMD5(k, d) { + return rstr2hex(rawHMACMD5(k, d)); +} - if (typeof _oldOnError === 'function') { - _oldOnError.call(this, error, vm, info); +function md5(string, key, raw) { + if (!key) { + if (!raw) { + return hexMD5(string); } - }; + return rawMD5(string); + } + if (!raw) { + return hexHMACMD5(key, string); + } + return rawHMACMD5(key, string); } -var vue = vuePlugin; - -/* This file was generated by './scripts/generate-plugin-combinations.js'! */ - -singleton.addPlugin(angular).addPlugin(console$3).addPlugin(require_1).addPlugin(vue); -var angular_console_require_vue = {}; - -return angular_console_require_vue; +module.exports = md5; -}))); +},{}]},{},[8,1,2,3,4])(8) +}); \ No newline at end of file diff --git a/dist/angular,console,require,vue/raven.min.js b/dist/angular,console,require,vue/raven.min.js index a4b689065361..ccdadab8d8ef 100644 --- a/dist/angular,console,require,vue/raven.min.js +++ b/dist/angular,console,require,vue/raven.min.js @@ -1,3 +1,4 @@ -/*! Raven.js 3.22.2 (1b6187b) | github.com/getsentry/raven-js */ -!function(a,b){"object"==typeof exports&&"undefined"!=typeof module?module.exports=b():"function"==typeof define&&define.amd?define(b):a.Raven=b()}(this,function(){"use strict";function a(a,b){return b={exports:{}},a(b,b.exports),b.exports}function b(a){return(b="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(a){return typeof a}:function(a){return a&&"function"==typeof Symbol&&a.constructor===Symbol&&a!==Symbol.prototype?"symbol":typeof a})(a)}function c(a){return"object"===b(a)&&null!==a}function d(a){switch({}.toString.call(a)){case"[object Error]":return!0;case"[object Exception]":return!0;case"[object DOMException]":return!0;default:return a instanceof Error}}function e(a){return l()&&"[object ErrorEvent]"==={}.toString.call(a)}function f(a){return void 0===a}function g(a){return"function"==typeof a}function h(a){return"[object Object]"===Object.prototype.toString.call(a)}function i(a){return"[object String]"===Object.prototype.toString.call(a)}function j(a){return"[object Array]"===Object.prototype.toString.call(a)}function k(a){if(!h(a))return!1;for(var b in a)if(a.hasOwnProperty(b))return!1;return!0}function l(){try{return new ErrorEvent(""),!0}catch(a){return!1}}function m(){if(!("fetch"in R))return!1;try{return new Headers,new Request(""),new Response,!0}catch(a){return!1}}function n(a){function b(b,c){var d=a(b)||b;return c?c(d)||d:d}return b}function o(a,b){var c,d;if(f(a.length))for(c in a)s(a,c)&&b.call(null,c,a[c]);else if(d=a.length)for(c=0;c ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function y(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&i(b))for(c=b.split(/\s+/),f=0;f":"anonymous component")+(a._isVue&&a.$options.__file?" at "+a.$options.__file:"")}function O(a,b){if(b=b||window.Vue,b&&b.config){var c=b.config.errorHandler;b.config.errorHandler=function(b,d,e){var f={};"[object Object]"===Object.prototype.toString.call(d)&&(f.componentName=N(d),f.propsData=d.$options.propsData),"undefined"!=typeof e&&(f.lifecycleHook=e),a.captureException(b,{extra:f}),"function"==typeof c&&c.call(this,b,d,e)}}}var P="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{},Q=Object.setPrototypeOf||function(a,b){return a.C=b,a},R=("object"==typeof Reflect&&Reflect.construct||function(a,b,c){var d,e=[null];return e.push.apply(e,b),d=a.bind.apply(a,e),Q(new d,c.prototype)},"undefined"!=typeof window?window:"undefined"!=typeof P?P:"undefined"!=typeof self?self:{}),S={isObject:c,isError:d,isErrorEvent:e,isUndefined:f,isFunction:g,isPlainObject:h,isString:i,isArray:j,isEmptyObject:k,supportsErrorEvent:l,supportsFetch:m,wrappedCallback:n,each:o,objectMerge:p,truncate:r,objectFrozen:q,hasKey:s,joinRegExp:t,urlencode:u,uuid4:w,htmlTreeAsString:x,htmlElementAsString:y,isSameException:B,isSameStacktrace:C,parseUrl:v,fill:D,safeJoin:E},T={collectWindowErrors:!0,debug:!1},U="undefined"!=typeof window?window:"undefined"!=typeof P?P:"undefined"!=typeof self?self:{},V=[].slice,W="?",X=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;T.report=function(){function a(a){f(),l.push(a)}function b(a){for(var b=l.length-1;b>=0;--b)l[b]===a&&l.splice(b,1)}function c(){g(),l=[]}function d(a,b){var c=null;if(!b||T.collectWindowErrors){for(var d in l)if(l.hasOwnProperty(d))try{l[d].apply(null,[a].concat(V.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function e(a,b,c,e,f){var g=null,i=S.isErrorEvent(f)?f.error:f,k=S.isErrorEvent(a)?a.message:a;if(o)T.computeStackTrace.augmentStackTraceWithInitialElement(o,b,c,k),h();else if(i&&S.isError(i))g=T.computeStackTrace(i),d(g,!0);else{var l,m={url:b,line:c,column:e},n=void 0;if("[object String]"==={}.toString.call(k)){var l=k.match(X);l&&(n=l[1],k=l[2])}m.func=W,g={name:n,message:k,url:F(),stack:[m]},d(g,!0)}return!!j&&j.apply(this,arguments)}function f(){k||(j=U.onerror,U.onerror=e,k=!0)}function g(){k&&(U.onerror=j,k=!1,j=void 0)}function h(){var a=o,b=m;m=null,o=null,n=null,d.apply(null,[a,!1].concat(b))}function i(a,b){var c=V.call(arguments,1);if(o){if(n===a)return;h()}var d=T.computeStackTrace(a);if(o=d,n=a,m=c,setTimeout(function(){n===a&&h()},d.incomplete?2e3:0),b!==!1)throw a}var j,k,l=[],m=null,n=null,o=null;return i.subscribe=a,i.unsubscribe=b,i.uninstall=c,i}(),T.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,d,e=/^\s*at (.*?) ?\(((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,f=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|\[native).*?|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,g=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,h=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,i=/\((\S*)(?::(\d+))(?::(\d+))\)/,j=a.stack.split("\n"),k=[],l=(/^(.*) is undefined$/.exec(a.message),0),m=j.length;l eval")>-1;o&&(b=h.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==l||c[5]||"undefined"==typeof a.columnNumber||(k[0].column=a.columnNumber+1),d={url:c[3],func:c[1]||W,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}!d.func&&d.line&&(d.func=W),k.push(d)}return k.length?{name:a.name,message:a.message,url:F(),stack:k}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=W),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,e){for(var f,g,h=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,i=[],j={},k=!1,l=c.caller;l&&!k;l=l.caller)if(l!==d&&l!==T.report){if(g={url:null,func:W,line:null,column:null},l.name?g.func=l.name:(f=h.exec(l.toString()))&&(g.func=f[1]),"undefined"==typeof g.func)try{g.func=f.input.substring(0,f.input.indexOf("{"))}catch(m){}j[""+l]?k=!0:j[""+l]=!0,i.push(g)}e&&i.splice(0,e);var n={name:a.name,message:a.message,url:F(),stack:i};return b(n,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),n}function d(b,d){var e=null;d=null==d?0:+d;try{if(e=a(b))return e}catch(f){if(T.debug)throw f}try{if(e=c(b,d+1))return e}catch(f){if(T.debug)throw f}return{name:b.name,message:b.message,url:F()}}return d.augmentStackTraceWithInitialElement=b,d.computeStackTraceFromStackProp=a,d}();var Y=T,Z=a(function(a,b){function c(a,b){for(var c=0;c0){var i=c(d,this);~i?d.splice(i+1):d.push(this),~i?f.splice(i,1/0,g):f.push(g),~c(d,h)&&(h=b.call(this,g,h))}else d.push(h);return null==a?h instanceof Error?e(h):h:a.call(this,g,h)}}b=a.exports=d,b.getSerialize=f});G.prototype=new Error,G.prototype.constructor=G;var $=G,_=function(a,b,c){var d=a[b],e=a;if(b in a){var f="warn"===b?"warning":b;a[b]=function(){var a=[].slice.call(arguments),g=S.safeJoin(a," "),h={level:f,logger:"console",extra:{arguments:a}};"assert"===b?a[0]===!1&&(g="Assertion failed: "+(S.safeJoin(a.slice(1)," ")||"console.assert"),h.extra.arguments=a.slice(1),c&&c(g,h)):c&&c(g,h),d&&Function.prototype.apply.call(d,e,a)}}},aa={wrapMethod:_},ba=S.isError,ca=S.isObject,da=S.isErrorEvent,ea=S.isUndefined,fa=S.isFunction,ga=S.isString,ha=S.isArray,ia=S.isEmptyObject,ja=S.each,ka=S.objectMerge,la=S.truncate,ma=S.objectFrozen,na=S.hasKey,oa=S.joinRegExp,pa=S.urlencode,qa=S.uuid4,ra=S.htmlTreeAsString,sa=S.isSameException,ta=S.isSameStacktrace,ua=S.parseUrl,va=S.fill,wa=S.supportsFetch,xa=aa.wrapMethod,ya="source protocol user pass host port path".split(" "),za=/^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/,Aa="undefined"!=typeof window?window:"undefined"!=typeof P?P:"undefined"!=typeof self?self:{},Ba=Aa.document,Ca=Aa.navigator;J.prototype={VERSION:"3.22.2",debug:!1,TraceKit:Y,config:function(a,b){var c=this;if(c.i)return this.D("error","Error: Raven has already been configured"),c;if(!a)return c;var d=c.m;b&&ja(b,function(a,b){"tags"===a||"extra"===a||"user"===a?c.l[a]=b:d[a]=b}),c.setDSN(a),d.ignoreErrors.push(/^Script error\.?$/),d.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/),d.ignoreErrors=oa(d.ignoreErrors),d.ignoreUrls=!!d.ignoreUrls.length&&oa(d.ignoreUrls),d.whitelistUrls=!!d.whitelistUrls.length&&oa(d.whitelistUrls),d.includePaths=oa(d.includePaths),d.maxBreadcrumbs=Math.max(0,Math.min(d.maxBreadcrumbs||100,100));var e={xhr:!0,console:!0,dom:!0,location:!0,sentry:!0},f=d.autoBreadcrumbs;"[object Object]"==={}.toString.call(f)?f=ka(e,f):f!==!1&&(f=e),d.autoBreadcrumbs=f;var g={tryCatch:!0},h=d.instrument;return"[object Object]"==={}.toString.call(h)?h=ka(g,h):h!==!1&&(h=g),d.instrument=h,Y.collectWindowErrors=!!d.collectWindowErrors,c},install:function(){var a=this;return a.isSetup()&&!a.p&&(Y.report.subscribe(function(){a.E.apply(a,arguments)}),a.F(),a.m.instrument&&a.m.instrument.tryCatch&&a.G(),a.m.autoBreadcrumbs&&a.H(),a.I(),a.p=!0),Error.stackTraceLimit=a.m.stackTraceLimit,this},setDSN:function(a){var b=this,c=b.J(a),d=c.path.lastIndexOf("/"),e=c.path.substr(1,d);b.K=a,b.j=c.user,b.L=c.pass&&c.pass.substr(1),b.k=c.path.substr(d+1),b.i=b.M(c),b.N=b.i+"/"+e+"api/"+b.k+"/store/",this.A()},context:function(a,b,c){return fa(a)&&(c=b||[],b=a,a=void 0),this.wrap(a,b).apply(this,c)},wrap:function(a,b,c){function d(){var d=[],f=arguments.length,g=!a||a&&a.deep!==!1;for(c&&fa(c)&&c.apply(this,arguments);f--;)d[f]=g?e.wrap(a,arguments[f]):arguments[f];try{return b.apply(this,d)}catch(h){throw e.O(),e.captureException(h,a),h}}var e=this;if(ea(b)&&!fa(a))return a;if(fa(a)&&(b=a,a=void 0),!fa(b))return b;try{if(b.a)return b;if(b.P)return b.P}catch(f){return b}for(var g in b)na(b,g)&&(d[g]=b[g]);return d.prototype=b.prototype,b.P=d,d.a=!0,d.b=b,d},uninstall:function(){return Y.report.uninstall(),this.Q(),this.R(),this.S(),Error.stackTraceLimit=this.q,this.p=!1,this},captureException:function(a,b){b=ka({trimHeadFrames:0},b?b:{});var c=!ba(a),d=!da(a),e=da(a)&&!a.error;if(c&&d||e)return this.captureMessage(a,ka(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}));da(a)&&(a=a.error),this.f=a;try{var f=Y.computeStackTrace(a);this.T(f,b)}catch(g){if(a!==g)throw g}return this},captureMessage:function(a,b){if(!this.m.ignoreErrors.test||!this.m.ignoreErrors.test(a)){b=b||{};var c,d=ka({message:a+""},b);try{throw new Error(a)}catch(e){c=e}c.name=null;var f=Y.computeStackTrace(c),g=ha(f.stack)&&f.stack[1],h=g&&g.url||"";if((!this.m.ignoreUrls.test||!this.m.ignoreUrls.test(h))&&(!this.m.whitelistUrls.test||this.m.whitelistUrls.test(h))){if(this.m.stacktrace||b&&b.stacktrace){b=ka({fingerprint:a,trimHeadFrames:(b.trimHeadFrames||0)+1},b);var i=this.U(f,b);d.stacktrace={frames:i.reverse()}}return this.V(d),this}}},captureBreadcrumb:function(a){var b=ka({timestamp:H()/1e3},a);if(fa(this.m.breadcrumbCallback)){var c=this.m.breadcrumbCallback(b);if(ca(c)&&!ia(c))b=c;else if(c===!1)return this}return this.w.push(b),this.w.length>this.m.maxBreadcrumbs&&this.w.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.t.push([a,b]),this.p&&this.I(),this},setUserContext:function(a){return this.l.user=a,this},setExtraContext:function(a){return this.W("extra",a),this},setTagsContext:function(a){return this.W("tags",a),this},clearContext:function(){return this.l={},this},getContext:function(){return JSON.parse(Z(this.l))},setEnvironment:function(a){return this.m.environment=a,this},setRelease:function(a){return this.m.release=a,this},setDataCallback:function(a){var b=this.m.dataCallback;return this.m.dataCallback=I(b,a),this},setBreadcrumbCallback:function(a){var b=this.m.breadcrumbCallback;return this.m.breadcrumbCallback=I(b,a),this},setShouldSendCallback:function(a){var b=this.m.shouldSendCallback;return this.m.shouldSendCallback=I(b,a),this},setTransport:function(a){return this.m.transport=a,this},lastException:function(){return this.f},lastEventId:function(){return this.h},isSetup:function(){return!!this.c&&(!!this.i||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.D("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=Aa.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(Ba){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new $("Missing eventId");var c=a.dsn||this.K;if(!c)throw new $("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.l.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.M(this.J(c)),h=Ba.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(Ba.head||Ba.body).appendChild(h)}},O:function(){var a=this;this.o+=1,setTimeout(function(){a.o-=1})},X:function(a,b){var c,d;if(this.d){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),Ba.createEvent?(c=Ba.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=Ba.createEventObject(),c.eventType=a);for(d in b)na(b,d)&&(c[d]=b[d]);if(Ba.createEvent)Ba.dispatchEvent(c);else try{Ba.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},Y:function(a){var b=this;return function(c){if(b.Z=null,b.x!==c){b.x=c;var d;try{d=ra(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},$:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.Z;g||a.Y("input")(c),clearTimeout(g),a.Z=setTimeout(function(){a.Z=null},b)}}},_:function(a,b){var c=ua(this.y.href),d=ua(b),e=ua(a);this.z=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},F:function(){var a=this;a.aa=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.a?a.aa.apply(this.b,arguments):a.aa.apply(this,arguments)}},Q:function(){this.aa&&(Function.prototype.toString=this.aa)},G:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b._(b.z,c+""),a.apply(this,arguments)}};va(history,"pushState",j,d),va(history,"replaceState",j,d)}if(c.console&&"console"in Aa&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};ja(["debug","info","warn","error","log"],function(a,b){xa(console,b,k)})}},R:function(){for(var a;this.v.length;){a=this.v.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},S:function(){for(var a in this.s)this.r[a]=this.s[a]},I:function(){var a=this;ja(this.t,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},J:function(a){var b=za.exec(a),c={},d=7;try{for(;d--;)c[ya[d]]=b[d]||""}catch(e){throw new $("Invalid DSN: "+a)}if(c.pass&&!this.m.allowSecretKey)throw new $("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},M:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},E:function(){this.o||this.T.apply(this,arguments)},T:function(a,b){var c=this.U(a,b);this.X("handle",{stackInfo:a,options:b}),this.ca(a.name,a.message,a.url,a.lineno,c,b)},U:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(ja(a.stack,function(b,e){var f=c.da(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.w,0)}),this.l.user&&(a.user=this.l.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||ia(a[b]))&&delete a[b]}),fa(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!ia(a)&&(!fa(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.ja()?void this.D("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random()":"anonymous component")+(a._isVue&&a.$options.__file?" at "+a.$options.__file:"")}function e(a,b){if(b=b||window.Vue,b&&b.config){var c=b.config.errorHandler;b.config.errorHandler=function(b,e,f){var g={};"[object Object]"===Object.prototype.toString.call(e)&&(g.componentName=d(e),g.propsData=e.$options.propsData),"undefined"!=typeof f&&(g.lifecycleHook=f),a.captureException(b,{extra:g}),"function"==typeof c&&c.call(this,b,e,f)}}}b.exports=e,a(8).addPlugin(b.exports)},{8:8}],5:[function(a,b,c){function d(a){this.name="RavenConfigError",this.message=a}d.prototype=new Error,d.prototype.constructor=d,b.exports=d},{}],6:[function(a,b,c){var d=a(9),e=function(a,b,c){var e=a[b],f=a;if(b in a){var g="warn"===b?"warning":b;a[b]=function(){var a=[].slice.call(arguments),h=d.safeJoin(a," "),i={level:g,logger:"console",extra:{arguments:a}};"assert"===b?a[0]===!1&&(h="Assertion failed: "+(d.safeJoin(a.slice(1)," ")||"console.assert"),i.extra.arguments=a.slice(1),c&&c(h,i)):c&&c(h,i),e&&Function.prototype.apply.call(e,f,a)}}};b.exports={wrapMethod:e}},{9:9}],7:[function(a,b,c){(function(c){function d(){return+new Date}function e(a,b){return q(b)?function(c){return b(c,a)}:b}function f(){this.b=!("object"!=typeof JSON||!JSON.stringify),this.c=!p(Q),this.d=!p(R),this.e=null,this.f=null,this.g=null,this.h=null,this.i=null,this.j=null,this.k={},this.l={release:P.SENTRY_RELEASE&&P.SENTRY_RELEASE.id,logger:"javascript",ignoreErrors:[],ignoreUrls:[],whitelistUrls:[],includePaths:[],headers:null,collectWindowErrors:!0,captureUnhandledRejections:!0,maxMessageLength:0,maxUrlLength:250,stackTraceLimit:50,autoBreadcrumbs:!0,instrument:!0,sampleRate:1,sanitizeKeys:[]},this.m={method:"POST",keepalive:!0,referrerPolicy:I()?"origin":""},this.n=0,this.o=!1,this.p=Error.stackTraceLimit,this.q=P.console||{},this.r={},this.s=[],this.t=d(),this.u=[],this.v=[],this.w=null,this.x=P.location,this.y=this.x&&this.x.href,this.z();for(var a in this.q)this.r[a]=this.q[a]}var g=a(10),h=a(11),i=a(12),j=a(5),k=a(9),l=k.isError,m=k.isObject,n=k.isPlainObject,o=k.isErrorEvent,p=k.isUndefined,q=k.isFunction,r=k.isString,s=k.isArray,t=k.isEmptyObject,u=k.each,v=k.objectMerge,w=k.truncate,x=k.objectFrozen,y=k.hasKey,z=k.joinRegExp,A=k.urlencode,B=k.uuid4,C=k.htmlTreeAsString,D=k.isSameException,E=k.isSameStacktrace,F=k.parseUrl,G=k.fill,H=k.supportsFetch,I=k.supportsReferrerPolicy,J=k.serializeKeysForMessage,K=k.serializeException,L=k.sanitize,M=a(6).wrapMethod,N="source protocol user pass host port path".split(" "),O=/^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/,P="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},Q=P.document,R=P.navigator;f.prototype={VERSION:"3.24.2",debug:!1,TraceKit:g,config:function(a,b){var c=this;if(c.h)return this.A("error","Error: Raven has already been configured"),c;if(!a)return c;var d=c.l;b&&u(b,function(a,b){"tags"===a||"extra"===a||"user"===a?c.k[a]=b:d[a]=b}),c.setDSN(a),d.ignoreErrors.push(/^Script error\.?$/),d.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/),d.ignoreErrors=z(d.ignoreErrors),d.ignoreUrls=!!d.ignoreUrls.length&&z(d.ignoreUrls),d.whitelistUrls=!!d.whitelistUrls.length&&z(d.whitelistUrls),d.includePaths=z(d.includePaths),d.maxBreadcrumbs=Math.max(0,Math.min(d.maxBreadcrumbs||100,100));var e={xhr:!0,console:!0,dom:!0,location:!0,sentry:!0},f=d.autoBreadcrumbs;"[object Object]"==={}.toString.call(f)?f=v(e,f):f!==!1&&(f=e),d.autoBreadcrumbs=f;var h={tryCatch:!0},i=d.instrument;return"[object Object]"==={}.toString.call(i)?i=v(h,i):i!==!1&&(i=h),d.instrument=i,g.collectWindowErrors=!!d.collectWindowErrors,c},install:function(){var a=this;return a.isSetup()&&!a.o&&(g.report.subscribe(function(){a.B.apply(a,arguments)}),a.l.captureUnhandledRejections&&a.C(),a.D(),a.l.instrument&&a.l.instrument.tryCatch&&a.E(),a.l.autoBreadcrumbs&&a.F(),a.G(),a.o=!0),Error.stackTraceLimit=a.l.stackTraceLimit,this},setDSN:function(a){var b=this,c=b.H(a),d=c.path.lastIndexOf("/"),e=c.path.substr(1,d);b.I=a,b.i=c.user,b.J=c.pass&&c.pass.substr(1),b.j=c.path.substr(d+1),b.h=b.K(c),b.L=b.h+"/"+e+"api/"+b.j+"/store/",this.z()},context:function(a,b,c){return q(a)&&(c=b||[],b=a,a=void 0),this.wrap(a,b).apply(this,c)},wrap:function(a,b,c){function d(){var d=[],f=arguments.length,g=!a||a&&a.deep!==!1;for(c&&q(c)&&c.apply(this,arguments);f--;)d[f]=g?e.wrap(a,arguments[f]):arguments[f];try{return b.apply(this,d)}catch(h){throw e.M(),e.captureException(h,a),h}}var e=this;if(p(b)&&!q(a))return a;if(q(a)&&(b=a,a=void 0),!q(b))return b;try{if(b.N)return b;if(b.O)return b.O}catch(f){return b}for(var g in b)y(b,g)&&(d[g]=b[g]);return d.prototype=b.prototype,b.O=d,d.N=!0,d.P=b,d},uninstall:function(){return g.report.uninstall(),this.Q(),this.R(),this.S(),this.T(),Error.stackTraceLimit=this.p,this.o=!1,this},U:function(a){this.A("debug","Raven caught unhandled promise rejection:",a),this.captureException(a.reason,{extra:{unhandledPromiseRejection:!0}})},C:function(){return this.U=this.U.bind(this),P.addEventListener&&P.addEventListener("unhandledrejection",this.U),this},Q:function(){return P.removeEventListener&&P.removeEventListener("unhandledrejection",this.U),this},captureException:function(a,b){if(b=v({trimHeadFrames:0},b?b:{}),o(a)&&a.error)a=a.error;else if(l(a))a=a;else{if(!n(a))return this.captureMessage(a,v(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}));b=this.V(b,a),a=new Error(b.message)}this.e=a;try{var c=g.computeStackTrace(a);this.W(c,b)}catch(d){if(a!==d)throw d}return this},V:function(a,b){var c=Object.keys(b).sort(),d=v(a,{message:"Non-Error exception captured with keys: "+J(c),fingerprint:[i(c)],extra:a.extra||{}});return d.extra.X=K(b),d},captureMessage:function(a,b){if(!this.l.ignoreErrors.test||!this.l.ignoreErrors.test(a)){b=b||{},a+="";var c,d=v({message:a},b);try{throw new Error(a)}catch(e){c=e}c.name=null;var f=g.computeStackTrace(c),h=s(f.stack)&&f.stack[1];h&&"Raven.captureException"===h.func&&(h=f.stack[2]);var i=h&&h.url||"";if((!this.l.ignoreUrls.test||!this.l.ignoreUrls.test(i))&&(!this.l.whitelistUrls.test||this.l.whitelistUrls.test(i))){if(this.l.stacktrace||b&&b.stacktrace){d.fingerprint=null==d.fingerprint?a:d.fingerprint,b=v({trimHeadFrames:0},b),b.trimHeadFrames+=1;var j=this.Y(f,b);d.stacktrace={frames:j.reverse()}}return d.fingerprint&&(d.fingerprint=s(d.fingerprint)?d.fingerprint:[d.fingerprint]),this.Z(d),this}}},captureBreadcrumb:function(a){var b=v({timestamp:d()/1e3},a);if(q(this.l.breadcrumbCallback)){var c=this.l.breadcrumbCallback(b);if(m(c)&&!t(c))b=c;else if(c===!1)return this}return this.v.push(b),this.v.length>this.l.maxBreadcrumbs&&this.v.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.s.push([a,b]),this.o&&this.G(),this},setUserContext:function(a){return this.k.user=a,this},setExtraContext:function(a){return this.$("extra",a),this},setTagsContext:function(a){return this.$("tags",a),this},clearContext:function(){return this.k={},this},getContext:function(){return JSON.parse(h(this.k))},setEnvironment:function(a){return this.l.environment=a,this},setRelease:function(a){return this.l.release=a,this},setDataCallback:function(a){var b=this.l.dataCallback;return this.l.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.l.breadcrumbCallback;return this.l.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.l.shouldSendCallback;return this.l.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.l.transport=a,this},lastException:function(){return this.e},lastEventId:function(){return this.g},isSetup:function(){return!!this.b&&(!!this.h||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.A("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=P.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(Q){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.I;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.k.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.K(this.H(c)),h=Q.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(Q.head||Q.body).appendChild(h)}},M:function(){var a=this;this.n+=1,setTimeout(function(){a.n-=1})},_:function(a,b){var c,d;if(this.c){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),Q.createEvent?(c=Q.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=Q.createEventObject(),c.eventType=a);for(d in b)y(b,d)&&(c[d]=b[d]);if(Q.createEvent)Q.dispatchEvent(c);else try{Q.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},aa:function(a){var b=this;return function(c){if(b.ba=null,b.w!==c){b.w=c;var d;try{d=C(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ca:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.ba;g||a.aa("input")(c),clearTimeout(g),a.ba=setTimeout(function(){a.ba=null},b)}}},da:function(a,b){var c=F(this.x.href),d=F(b),e=F(a);this.y=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},D:function(){var a=this;a.ea=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.N?a.ea.apply(this.P,arguments):a.ea.apply(this,arguments)}},R:function(){this.ea&&(Function.prototype.toString=this.ea)},E:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.da(b.y,c+""),a.apply(this,arguments)}};G(history,"pushState",j,d),G(history,"replaceState",j,d)}if(c.console&&"console"in P&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};u(["debug","info","warn","error","log"],function(a,b){M(console,b,k)})}},S:function(){for(var a;this.u.length;){a=this.u.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},T:function(){for(var a in this.r)this.q[a]=this.r[a]},G:function(){var a=this;u(this.s,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},H:function(a){var b=O.exec(a),c={},d=7;try{for(;d--;)c[N[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.l.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},K:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},B:function(){this.n||this.W.apply(this,arguments)},W:function(a,b){var c=this.Y(a,b);this._("handle",{stackInfo:a,options:b}),this.ga(a.name,a.message,a.url,a.lineno,c,b)},Y:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(u(a.stack,function(b,e){var f=c.ha(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.v,0)}),this.k.user&&(a.user=this.k.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),a=this.qa(a),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||t(a[b]))&&delete a[b]}),q(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!t(a)&&(!q(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.na()?void this.A("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function B(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&j(b))for(c=b.split(/\s+/),f=0;fc?M(a,b-1):d}function N(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?T:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function O(a,b){function c(a){return k(a)?a.map(function(a){return c(a)}):i(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!k(b)||k(b)&&0===b.length)return a;var d,e=w(b),f="********";try{d=JSON.parse(P(a))}catch(g){return a}return c(d)}var P=a(11),Q="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},R=3,S=51200,T=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isUndefined:g,isFunction:h,isPlainObject:i,isString:j,isArray:k,isEmptyObject:l,supportsErrorEvent:m,supportsFetch:n,supportsReferrerPolicy:o,supportsPromiseRejectionEvent:p,wrappedCallback:q,each:r,objectMerge:s,truncate:u,objectFrozen:t,hasKey:v,joinRegExp:w,urlencode:x,uuid4:z,htmlTreeAsString:A,htmlElementAsString:B,isSameException:E,isSameStacktrace:F,parseUrl:y,fill:G,safeJoin:H,serializeException:M,serializeKeysForMessage:N,sanitize:O}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{11:11}],10:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}var e=a(9),f={collectWindowErrors:!0,debug:!1},g="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},h=[].slice,i="?",j=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;f.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function k(a,b){var c=null;if(!b||f.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(h.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,g,h){var l=null,m=e.isErrorEvent(h)?h.error:h,n=e.isErrorEvent(a)?a.message:a;if(v)f.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&e.isError(m))l=f.computeStackTrace(m),k(l,!0);else{var p,r={url:b,line:c,column:g},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(j);p&&(s=p[1],n=p[2])}r.func=i,l={name:s,message:n,url:d(),stack:[r]},k(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=g.onerror,g.onerror=l,r=!0)}function n(){r&&(g.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,k.apply(null,[a,!1].concat(b))}function p(a,b){var c=h.call(arguments,1);if(v){if(u===a)return;o()}var d=f.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),f.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,e,f=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,g=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,h=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,j=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,k=/\((\S*)(?::(\d+))(?::(\d+))\)/,l=a.stack.split("\n"),m=[],n=(/^(.*) is undefined$/.exec(a.message),0),o=l.length;n eval")>-1;q&&(b=j.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==n||c[5]||"undefined"==typeof a.columnNumber||(m[0].column=a.columnNumber+1),e={url:c[3],func:c[1]||i,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}!e.func&&e.line&&(e.func=i),m.push(e)}return m.length?{name:a.name,message:a.message,url:d(),stack:m}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=i),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,g){for(var h,j,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==e&&o!==f.report){ +if(j={url:null,func:i,line:null,column:null},o.name?j.func=o.name:(h=k.exec(o.toString()))&&(j.func=h[1]),"undefined"==typeof j.func)try{j.func=h.input.substring(0,h.input.indexOf("{"))}catch(p){}m[""+o]?n=!0:m[""+o]=!0,l.push(j)}g&&l.splice(0,g);var q={name:a.name,message:a.message,url:d(),stack:l};return b(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),q}function e(b,e){var g=null;e=null==e?0:+e;try{if(g=a(b))return g}catch(h){if(f.debug)throw h}try{if(g=c(b,e+1))return g}catch(h){if(f.debug)throw h}return{name:b.name,message:b.message,url:d()}}return e.augmentStackTraceWithInitialElement=b,e.computeStackTraceFromStackProp=a,e}(),b.exports=f}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{9:9}],11:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}],12:[function(a,b,c){function d(a,b){var c=(65535&a)+(65535&b),d=(a>>16)+(b>>16)+(c>>16);return d<<16|65535&c}function e(a,b){return a<>>32-b}function f(a,b,c,f,g,h){return d(e(d(d(b,a),d(f,h)),g),c)}function g(a,b,c,d,e,g,h){return f(b&c|~b&d,a,b,e,g,h)}function h(a,b,c,d,e,g,h){return f(b&d|c&~d,a,b,e,g,h)}function i(a,b,c,d,e,g,h){return f(b^c^d,a,b,e,g,h)}function j(a,b,c,d,e,g,h){return f(c^(b|~d),a,b,e,g,h)}function k(a,b){a[b>>5]|=128<>>9<<4)+14]=b;var c,e,f,k,l,m=1732584193,n=-271733879,o=-1732584194,p=271733878;for(c=0;c>5]>>>b%32&255);return c}function m(a){var b,c=[];for(c[(a.length>>2)-1]=void 0,b=0;b>5]|=(255&a.charCodeAt(b/8))<16&&(e=k(e,8*a.length)),c=0;c<16;c+=1)f[c]=909522486^e[c],g[c]=1549556828^e[c];return d=k(f.concat(m(b)),512+8*b.length),l(k(g.concat(d),640))}function p(a){var b,c,d="0123456789abcdef",e="";for(c=0;c>>4&15)+d.charAt(15&b);return e}function q(a){return unescape(encodeURIComponent(a))}function r(a){return n(q(a))}function s(a){return p(r(a))}function t(a,b){return o(q(a),q(b))}function u(a,b){return p(t(a,b))}function v(a,b,c){return b?c?t(b,a):u(b,a):c?r(a):s(a)}b.exports=v},{}]},{},[8,1,2,3,4])(8)}); //# sourceMappingURL=raven.min.js.map \ No newline at end of file diff --git a/dist/angular,console,require,vue/raven.min.js.map b/dist/angular,console,require,vue/raven.min.js.map index 43cbbbd68f57..bcdc2169f65b 100644 --- a/dist/angular,console,require,vue/raven.min.js.map +++ b/dist/angular,console,require,vue/raven.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["raven.js"],"names":["global","factory","exports","module","define","amd","Raven","this","createCommonjsModule","fn","_typeof","obj","Symbol","iterator","constructor","prototype","isObject$1","what","isError$1","value","toString","call","Error","isErrorEvent$1","supportsErrorEvent","isUndefined$1","isFunction$1","isPlainObject","Object","isString$1","isArray$1","isEmptyObject$1","_","hasOwnProperty","ErrorEvent","e","supportsFetch$1","_window$3","Headers","Request","Response","wrappedCallback","callback","dataCallback","data","original","normalizedData","each$1","i","j","length","hasKey$1","objectMerge$1","obj1","obj2","key","objectFrozen$1","isFrozen","truncate$1","str","max","substr","object","joinRegExp$1","patterns","pattern","sources","len","push","replace","source","RegExp","join","urlencode$1","o","pairs","encodeURIComponent","parseUrl$1","url","match","query","fragment","protocol","host","path","relative","uuid4$1","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","r","Math","random","htmlTreeAsString$1","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","reverse","className","classes","attr","tagName","toLowerCase","id","split","attrWhitelist","getAttribute","isOnlyOneTruthy","a","b","isBothUndefined","isSameException$1","ex1","ex2","values","type","stacktrace","isSameStacktrace$1","stack1","stack2","frames1","frames","frames2","filename","lineno","colno","fill$1","name","replacement","track","orig","__raven__","__orig__","safeJoin","input","delimiter","output","String","getLocationHref","document","location","href","RavenConfigError","message","now","Date","keepOriginalCallback","isFunction","Raven$1","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window$1","SENTRY_RELEASE","logger","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","_fetchDefaults","method","keepalive","referrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","console","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","_lastHref","_resetBackoff","angularPlugin","angular","RavenProvider","$get","$window","ExceptionHandlerProvider","$provide","decorator","exceptionHandler","R","$delegate","ex","cause","captureException","extra","window","moduleName","provider","config","setDataCallback","wrappedCallback$1","_normalizeData","consolePlugin","pluginOptions","logLevels","levels","msg","captureMessage","level","pop","wrapConsoleMethod$1","requirePlugin","formatComponentName","vm","$root","_isVue","$options","_componentTag","__file","vuePlugin","Vue","_oldOnError","errorHandler","error","info","metaData","componentName","propsData","lifecycleHook","commonjsGlobal","self","_sPO","setPrototypeOf","p","__proto__","Reflect","construct","Parent","args","Class","Constructor","apply","bind","utils","isObject","isError","isErrorEvent","isString","isArray","isEmptyObject","supportsFetch","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","TraceKit","debug","_window$2","_slice","slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","report","subscribe","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","stack","isWindowError","exception","concat","arguments","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","computeStackTrace","augmentStackTraceWithInitialElement","processLastException","groups","line","column","undefined","func","_oldOnerrorHandler","_onErrorHandlerInstalled","onerror","_lastExceptionStack","_lastArgs","lastArgs","lastException","rethrow","setTimeout","incomplete","uninstall","computeStackTraceFromStackProp","submatch","parts","element","chrome","gecko","winjs","geckoEval","chromeEval","lines","exec","isNative","indexOf","isEval","columnNumber","stackInfo","initial","unshift","partial","computeStackTraceByWalkingCallerChain","depth","item","functionName","funcs","recursion","curr","caller","substring","result","sourceURL","fileName","lineNumber","description","tracekit","stringify_1","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","err","keys","thisPos","Infinity","getSerialize","configError","wrapMethod","originalConsoleLevel","originalConsole","sentryLevel","Function","console$1","wrapConsoleMethod","dsnKeys","dsnPattern","navigator","VERSION","dsn","options","_logDebug","globalOptions","setDSN","maxBreadcrumbs","min","autoBreadcrumbDefaults","xhr","dom","sentry","instrumentDefaults","tryCatch","install","isSetup","_handleOnErrorStackInfo","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","lastIndexOf","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","context","wrap","_before","wrapped","deep","_ignoreNextOnError","__raven_wrapper__","property","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","trimHeadFrames","isNotError","isNotErrorEvent","isErrorEventWithoutError","_handleStackInfo","test","initialCall","fileurl","fingerprint","_prepareFrames","_send","captureBreadcrumb","crumb","timestamp","breadcrumbCallback","shift","addPlugin","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","O","X","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","Y","evtName","_keypressTimeout","target","category","$","debounceDuration","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","from","to","parsedLoc","parsedTo","parsedFrom","F","_originalFunctionToString","Q","G","wrapTimeFn","t","Array","originalCallback","wrapEventTarget","proto","capture","secure","handleEvent","before","clickHandler","keypressHandler","_keypressEventHandler","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","H","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","onreadystatechange","origFetch","fetchInput","fetchData","then","response","addEventListener","attachEvent","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","builtin","S","I","installer","J","m","allowSecretKey","M","port","E","T","_triggerEvent","_processException","U","frame","_normalizeFrame","in_app","da","stackInfoUrl","normalized","function","ca","prefixedMessage","culprit","ea","request","Referer","breadcrumbs","_trimBreadcrumbs","fa","urlProp","urlProps","ga","httpData","userAgent","User-Agent","referrer","A","_backoffDuration","_backoffStart","ja","ka","current","last","la","_shouldBackoff","retry","get","getResponseHeader","parseInt","V","baseData","project","platform","_getHttpData","serverName","server_name","forEach","_sendProcessedPayload","na","ma","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","oa","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","onload","open","setRequestHeader","send","pa","hash","evaluated","D","W","setUser","setReleaseContext","raven","_window","_Raven","noConflict","singleton","angularPattern","matches","angularDocs","console$3","require_1","vue","angular_console_require_vue"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file +{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","angularPlugin","angular","RavenProvider","$get","$window","ExceptionHandlerProvider","$provide","decorator","exceptionHandler","R","$delegate","ex","cause","captureException","extra","moduleName","provider","config","setDataCallback","wrappedCallback","data","_normalizeData","angularPattern","exception","values","matches","exec","value","type","message","angularDocs","substr","addPlugin","8","9","2","consolePlugin","console","pluginOptions","logLevels","levels","push","callback","msg","captureMessage","level","pop","wrapConsoleMethod","wrapMethod","6","3","requirePlugin","wrap","deep","4","formatComponentName","vm","$root","name","_isVue","$options","_componentTag","__file","vuePlugin","Vue","_oldOnError","errorHandler","error","info","metaData","Object","prototype","toString","componentName","propsData","lifecycleHook","5","RavenConfigError","constructor","utils","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","safeJoin","logger","Function","apply","7","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","sanitizeKeys","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isError","isObject","isPlainObject","isErrorEvent","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","sanitize","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","dsn","options","_logDebug","globalOptions","key","setDSN","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","context","func","undefined","_before","wrapped","_ignoreNextOnError","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","U","event","reason","unhandledPromiseRejection","C","_promiseRejectionHandler","bind","addEventListener","Q","removeEventListener","trimHeadFrames","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","V","currentOptions","exKeys","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","M","setTimeout","_","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","aa","evtName","_keypressTimeout","target","category","ca","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","da","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","D","_originalFunctionToString","E","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","F","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","S","builtin","T","G","installer","concat","H","str","m","allowSecretKey","K","port","B","W","stackInfo","_triggerEvent","_processException","lineno","Y","frame","_normalizeFrame","in_app","ha","stackInfoUrl","normalized","filename","line","colno","column","function","ga","prefixedMessage","culprit","ia","request","Referer","breadcrumbs","_trimBreadcrumbs","ja","urlProp","urlProps","ka","httpData","userAgent","User-Agent","referrer","z","_backoffDuration","_backoffStart","na","oa","current","last","pa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Z","baseData","project","platform","_getHttpData","serverName","server_name","_sanitizeData","forEach","random","_sendProcessedPayload","qa","sa","ra","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","ta","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","onerror","open","setRequestHeader","send","ua","hash","evaluated","A","$","setUser","setReleaseContext","10","11","12","RavenConstructor","_Raven","noConflict","Client","what","supportsErrorEvent","ErrorEvent","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","sanitizeMask","safeInput","o_O","getLocationHref","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","y","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","charAt","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","string","raw"],"mappings":";CAYA,SAAUA,GAAG,GAAoB,gBAAVC,UAAoC,mBAATC,QAAsBA,OAAOD,QAAQD,QAAS,IAAmB,kBAATG,SAAqBA,OAAOC,IAAKD,UAAUH,OAAO,CAAC,GAAIK,EAAkCA,GAAb,mBAATC,QAAwBA,OAA+B,mBAATC,QAAwBA,OAA6B,mBAAPC,MAAsBA,KAAYC,KAAKJ,EAAEK,MAAQV,MAAO,WAAW,GAAIG,EAAsB,OAAO,SAAUQ,GAAEC,EAAEC,EAAEC,GAAG,QAASC,GAAEC,EAAEC,GAAG,IAAIJ,EAAEG,GAAG,CAAC,IAAIJ,EAAEI,GAAG,CAAC,GAAIE,GAAkB,kBAATC,UAAqBA,OAAQ,KAAIF,GAAGC,EAAE,MAAOA,GAAEF,GAAE,EAAI,IAAGI,EAAE,MAAOA,GAAEJ,GAAE,EAAI,IAAIhB,GAAE,GAAIqB,OAAM,uBAAuBL,EAAE,IAAK,MAAMhB,GAAEsB,KAAK,mBAAmBtB,EAAE,GAAIuB,GAAEV,EAAEG,IAAIf,WAAYW,GAAEI,GAAG,GAAGQ,KAAKD,EAAEtB,QAAQ,SAASU,GAAG,GAAIE,GAAED,EAAEI,GAAG,GAAGL,EAAG,OAAOI,GAAEF,EAAEA,EAAEF,IAAIY,EAAEA,EAAEtB,QAAQU,EAAEC,EAAEC,EAAEC,GAAG,MAAOD,GAAEG,GAAGf,QAAkD,IAAI,GAA1CmB,GAAkB,kBAATD,UAAqBA,QAAgBH,EAAE,EAAEA,EAAEF,EAAEW,OAAOT,IAAID,EAAED,EAAEE,GAAI,OAAOD,KAAKW,GAAG,SAASC,EAAQzB,EAAOD,GAYp0B,QAAS2B,GAAclB,EAAOmB,GAK5B,QAASC,KACPrB,KAAKsB,MACH,UACA,SAASC,GACP,MAAOtB,KAKb,QAASuB,GAAyBC,GAChCA,EAASC,UAAU,qBAAsB,QAAS,YAAaC,IAGjE,QAASA,GAAiBC,EAAGC,GAC3B,MAAO,UAASC,EAAIC,GAClBH,EAAEI,iBAAiBF,GACjBG,OAAQF,MAAOA,KAEjBF,EAAUC,EAAIC,IAtBlBX,EAAUA,GAAWvB,OAAOuB,QAEvBA,IAwBLA,EACG3B,OAAOyC,MACPC,SAAS,QAASd,GAClBe,QAAQ,WAAYZ,IAEvBvB,EAAMoC,gBACJC,EAAgB,SAASC,GACvB,MAAOpB,GAAcqB,EAAeD,OAxC1C,GAAID,GAAkBpB,EAAQ,GAAGoB,gBAG7BG,EAAiB,6DACjBP,EAAa,SAyCjBf,GAAcqB,EAAiB,SAASD,GAEtC,GAAIG,GAAYH,EAAKG,SACrB,IAAIA,EAAW,CACbA,EAAYA,EAAUC,OAAO,EAC7B,IAAIC,GAAUH,EAAeI,KAAKH,EAAUI,MAExCF,KAEFF,EAAUK,KAAOH,EAAQ,GACzBF,EAAUI,MAAQF,EAAQ,GAE1BL,EAAKS,QAAUN,EAAUK,KAAO,KAAOL,EAAUI,MAEjDP,EAAKN,MAAMgB,YAAcL,EAAQ,GAAGM,OAAO,EAAG,MAIlD,MAAOX,IAGTpB,EAAce,WAAaA,EAE3BzC,EAAOD,QAAU2B,EAEjBD,EAAQ,GAAGiC,UAAU1D,EAAOD,WACzB4D,EAAI,EAAEC,EAAI,IAAIC,GAAG,SAASpC,EAAQzB,EAAOD,GAc5C,QAAS+D,GAActD,EAAOuD,EAASC,GACrCD,EAAUA,GAAW3D,OAAO2D,YAC5BC,EAAgBA,KAEhB,IAAIC,GAAYD,EAAcE,SAAW,QAAS,OAAQ,OAAQ,QAC9D,WAAYH,IAASE,EAAUE,KAAK,SAOxC,KALA,GAAIC,GAAW,SAASC,EAAKvB,GAC3BtC,EAAM8D,eAAeD,EAAKvB,IAGxByB,EAAQN,EAAUO,MACfD,GACLE,EAAkBV,EAASQ,EAAOH,GAClCG,EAAQN,EAAUO,MAhBtB,GAAIC,GAAoBhD,EAAQ,GAAGiD,UAoBnC1E,GAAOD,QAAU+D,EAEjBrC,EAAQ,GAAGiC,UAAU1D,EAAOD,WACzB4E,EAAI,EAAEhB,EAAI,IAAIiB,GAAG,SAASnD,EAAQzB,EAAOD,GAO5C,QAAS8E,GAAcrE,GACC,kBAAXP,IAAyBA,EAAOC,MACzCE,OAAOH,OAASO,EAAMsE,MAAMC,MAAM,GAAQ9E,GAC1CG,OAAOa,QAAUT,EAAMsE,MAAMC,MAAM,GAAQtD,IAI/CzB,EAAOD,QAAU8E,EAEjBpD,EAAQ,GAAGiC,UAAU1D,EAAOD,WACzB4D,EAAI,IAAIqB,GAAG,SAASvD,EAAQzB,EAAOD,GAMtC,QAASkF,GAAoBC,GAC3B,GAAIA,EAAGC,QAAUD,EACf,MAAO,eAET,IAAIE,GAAOF,EAAGG,OAASH,EAAGI,SAASF,MAAQF,EAAGI,SAASC,cAAgBL,EAAGE,IAC1E,QACGA,EAAO,cAAgBA,EAAO,IAAM,wBACpCF,EAAGG,QAAUH,EAAGI,SAASE,OAAS,OAASN,EAAGI,SAASE,OAAS,IAIrE,QAASC,GAAUjF,EAAOkF,GAIxB,GAHAA,EAAMA,GAAOtF,OAAOsF,IAGfA,GAAQA,EAAI/C,OAAjB,CAEA,GAAIgD,GAAcD,EAAI/C,OAAOiD,YAC7BF,GAAI/C,OAAOiD,aAAe,SAAyBC,EAAOX,EAAIY,GAC5D,GAAIC,KAGuC,qBAAvCC,OAAOC,UAAUC,SAAS5E,KAAK4D,KACjCa,EAASI,cAAgBlB,EAAoBC,GAC7Ca,EAASK,UAAYlB,EAAGI,SAASc,WAGf,mBAATN,KACTC,EAASM,cAAgBP,GAG3BtF,EAAM+B,iBAAiBsD,GACrBrD,MAAOuD,IAGkB,kBAAhBJ,IACTA,EAAYrE,KAAKf,KAAMsF,EAAOX,EAAIY,KAKxC9F,EAAOD,QAAU0F,EAEjBhE,EAAQ,GAAGiC,UAAU1D,EAAOD,WACzB4D,EAAI,IAAI2C,GAAG,SAAS7E,EAAQzB,EAAOD,GACtC,QAASwG,GAAiBhD,GACxBhD,KAAK6E,KAAO,mBACZ7E,KAAKgD,QAAUA,EAEjBgD,EAAiBN,UAAY,GAAI9E,OACjCoF,EAAiBN,UAAUO,YAAcD,EAEzCvG,EAAOD,QAAUwG,OAEX5B,GAAG,SAASlD,EAAQzB,EAAOD,GACjC,GAAI0G,GAAQhF,EAAQ,GAEhBiD,EAAa,SAASX,EAASQ,EAAOH,GACxC,GAAIsC,GAAuB3C,EAAQQ,GAC/BoC,EAAkB5C,CAEtB,IAAMQ,IAASR,GAAf,CAIA,GAAI6C,GAAwB,SAAVrC,EAAmB,UAAYA,CAEjDR,GAAQQ,GAAS,WACf,GAAIsC,MAAUC,MAAMxF,KAAKyF,WAErB1C,EAAMoC,EAAMO,SAASH,EAAM,KAC3B/D,GAAQyB,MAAOqC,EAAaK,OAAQ,UAAWzE,OAAQuE,UAAWF,GAExD,YAAVtC,EACEsC,EAAK,MAAO,IAEdxC,EACE,sBAAwBoC,EAAMO,SAASH,EAAKC,MAAM,GAAI,MAAQ,kBAChEhE,EAAKN,MAAMuE,UAAYF,EAAKC,MAAM,GAClC1C,GAAYA,EAASC,EAAKvB,IAG5BsB,GAAYA,EAASC,EAAKvB,GAIxB4D,GAGFQ,SAASjB,UAAUkB,MAAM7F,KAAKoF,EAAsBC,EAAiBE,KAK3E7G,GAAOD,SACL2E,WAAYA,KAGXd,EAAI,IAAIwD,GAAG,SAAS3F,EAAQzB,EAAOD,IACtC,SAAWM,GA0CX,QAASgH,KACP,OAAQ,GAAIC,MAWd,QAASC,GAAqBC,EAAUpD,GACtC,MAAOqD,GAAWrD,GACd,SAAStB,GACP,MAAOsB,GAAStB,EAAM0E,IAExBpD,EAMN,QAAS5D,KACPD,KAAKmH,IAA8B,gBAATC,QAAqBA,KAAKC,WAEpDrH,KAAKsH,GAAgBC,EAAYC,GACjCxH,KAAKyH,GAAiBF,EAAYG,GAClC1H,KAAK2H,EAAyB,KAC9B3H,KAAK4H,EAAY,KACjB5H,KAAK6H,EAAe,KACpB7H,KAAK8H,EAAgB,KACrB9H,KAAK+H,EAAa,KAClB/H,KAAKgI,EAAiB,KACtBhI,KAAKiI,KACLjI,KAAKkI,GAEHC,QAASC,EAAQC,gBAAkBD,EAAQC,eAAeC,GAC1D5B,OAAQ,aACR6B,gBACAC,cACAC,iBACAC,gBACAC,QAAS,KACTC,qBAAqB,EACrBC,4BAA4B,EAC5BC,iBAAkB,EAElBC,aAAc,IACdC,gBAAiB,GACjBC,iBAAiB,EACjBC,YAAY,EACZC,WAAY,EACZC,iBAEFpJ,KAAKqJ,GACHC,OAAQ,OACRC,WAAW,EAKXC,eAAgBC,IAA2B,SAAW,IAExDzJ,KAAK0J,EAAiB,EACtB1J,KAAK2J,GAAoB,EACzB3J,KAAK4J,EAAgChJ,MAAMoI,gBAG3ChJ,KAAK6J,EAAmBzB,EAAQ5E,YAChCxD,KAAK8J,KACL9J,KAAK+J,KACL/J,KAAKgK,EAAalD,IAClB9G,KAAKiK,KACLjK,KAAKkK,KACLlK,KAAKmK,EAAqB,KAE1BnK,KAAKoK,EAAYhC,EAAQiC,SACzBrK,KAAKsK,EAAYtK,KAAKoK,GAAapK,KAAKoK,EAAUG,KAClDvK,KAAKwK,GAGL,KAAK,GAAIlB,KAAUtJ,MAAK6J,EACtB7J,KAAK8J,EAAwBR,GAAUtJ,KAAK6J,EAAiBP,GA1HjE,GAAImB,GAAWvJ,EAAQ,IACnBmG,EAAYnG,EAAQ,IACpBwJ,EAAMxJ,EAAQ,IACd8E,EAAmB9E,EAAQ,GAE3BgF,EAAQhF,EAAQ,GAChByJ,EAAUzE,EAAMyE,QAChBC,EAAW1E,EAAM0E,SACjBC,EAAgB3E,EAAM2E,cACtBC,EAAe5E,EAAM4E,aACrBvD,EAAcrB,EAAMqB,YACpBL,EAAahB,EAAMgB,WACnB6D,EAAW7E,EAAM6E,SACjBC,EAAU9E,EAAM8E,QAChBC,EAAgB/E,EAAM+E,cACtBC,EAAOhF,EAAMgF,KACbC,EAAcjF,EAAMiF,YACpBC,EAAWlF,EAAMkF,SACjBC,EAAenF,EAAMmF,aACrBC,EAASpF,EAAMoF,OACfC,EAAarF,EAAMqF,WACnBC,EAAYtF,EAAMsF,UAClBC,EAAQvF,EAAMuF,MACdC,EAAmBxF,EAAMwF,iBACzBC,EAAkBzF,EAAMyF,gBACxBC,EAAmB1F,EAAM0F,iBACzBC,EAAW3F,EAAM2F,SACjBC,EAAO5F,EAAM4F,KACbC,EAAgB7F,EAAM6F,cACtBtC,EAAyBvD,EAAMuD,uBAC/BuC,EAA0B9F,EAAM8F,wBAChCC,EAAqB/F,EAAM+F,mBAC3BC,EAAWhG,EAAMgG,SAEjBhI,EAAoBhD,EAAQ,GAAGiD,WAE/BgI,EAAU,2CAA2CC,MAAM,KAC7DC,EAAa,gEAOXjE,EACgB,mBAAXvI,QACHA,OACkB,mBAAXC,GAAyBA,EAAyB,mBAATC,MAAuBA,QACzEyH,EAAYY,EAAQkE,SACpB5E,EAAaU,EAAQmE,SAmFzBtM,GAAMyF,WAKJ8G,QAAS,SAETC,OAAO,EAEPhC,SAAUA,EASVrI,OAAQ,SAASsK,EAAKC,GACpB,GAAI5M,GAAOC,IAEX,IAAID,EAAK+H,EAEP,MADA9H,MAAK4M,EAAU,QAAS,4CACjB7M,CAET,KAAK2M,EAAK,MAAO3M,EAEjB,IAAI8M,GAAgB9M,EAAKmI,CAGrByE,IACFzB,EAAKyB,EAAS,SAASG,EAAKhK,GAEd,SAARgK,GAA0B,UAARA,GAA2B,SAARA,EACvC/M,EAAKkI,EAAe6E,GAAOhK,EAE3B+J,EAAcC,GAAOhK,IAK3B/C,EAAKgN,OAAOL,GAIZG,EAActE,aAAa3E,KAAK,qBAChCiJ,EAActE,aAAa3E,KAAK,iDAGhCiJ,EAActE,aAAegD,EAAWsB,EAActE,cACtDsE,EAAcrE,aAAaqE,EAAcrE,WAAWxH,QAChDuK,EAAWsB,EAAcrE,YAE7BqE,EAAcpE,gBAAgBoE,EAAcpE,cAAczH,QACtDuK,EAAWsB,EAAcpE,eAE7BoE,EAAcnE,aAAe6C,EAAWsB,EAAcnE,cACtDmE,EAAcG,eAAiBC,KAAKC,IAClC,EACAD,KAAKE,IAAIN,EAAcG,gBAAkB,IAAK,KAGhD,IAAII,IACFC,KAAK,EACL7J,SAAS,EACT8J,KAAK,EACLjD,UAAU,EACVkD,QAAQ,GAGNtE,EAAkB4D,EAAc5D,eACM,wBAAnCtD,SAAS5E,KAAKkI,GACnBA,EAAkBkC,EAAYiC,EAAwBnE,GAC7CA,KAAoB,IAC7BA,EAAkBmE,GAEpBP,EAAc5D,gBAAkBA,CAEhC,IAAIuE,IACFC,UAAU,GAGRvE,EAAa2D,EAAc3D,UAW/B,OAVqC,uBAA9BvD,SAAS5E,KAAKmI,GACnBA,EAAaiC,EAAYqC,EAAoBtE,GACpCA,KAAe,IACxBA,EAAasE,GAEfX,EAAc3D,WAAaA,EAE3BuB,EAAS7B,sBAAwBiE,EAAcjE,oBAGxC7I,GAWT2N,QAAS,WACP,GAAI3N,GAAOC,IAyBX,OAxBID,GAAK4N,YAAc5N,EAAK4J,IAC1Bc,EAASmD,OAAOC,UAAU,WACxB9N,EAAK+N,EAAwBlH,MAAM7G,EAAMyG,aAGvCzG,EAAKmI,EAAeW,4BACtB9I,EAAKgO,IAGPhO,EAAKiO,IAEDjO,EAAKmI,EAAegB,YAAcnJ,EAAKmI,EAAegB,WAAWuE,UACnE1N,EAAKkO,IAGHlO,EAAKmI,EAAee,iBAAiBlJ,EAAKmO,IAG9CnO,EAAKoO,IAELpO,EAAK4J,GAAoB,GAG3B/I,MAAMoI,gBAAkBjJ,EAAKmI,EAAec,gBACrChJ,MAQT+M,OAAQ,SAASL,GACf,GAAI3M,GAAOC,KACToO,EAAMrO,EAAKsO,EAAU3B,GACrB4B,EAAYF,EAAIG,KAAKC,YAAY,KACjCD,EAAOH,EAAIG,KAAKrL,OAAO,EAAGoL,EAE5BvO,GAAK0O,EAAO/B,EACZ3M,EAAKgI,EAAaqG,EAAIM,KACtB3O,EAAK4O,EAAgBP,EAAIQ,MAAQR,EAAIQ,KAAK1L,OAAO,GACjDnD,EAAKiI,EAAiBoG,EAAIG,KAAKrL,OAAOoL,EAAY,GAElDvO,EAAK+H,EAAgB/H,EAAK8O,EAAiBT,GAE3CrO,EAAK+O,EACH/O,EAAK+H,EAAgB,IAAMyG,EAAO,OAASxO,EAAKiI,EAAiB,UAInEhI,KAAKwK,KAWPuE,QAAS,SAASpC,EAASqC,EAAM1I,GAO/B,MANIY,GAAWyF,KACbrG,EAAO0I,MACPA,EAAOrC,EACPA,EAAUsC,QAGLjP,KAAKuE,KAAKoI,EAASqC,GAAMpI,MAAM5G,KAAMsG,IAW9C/B,KAAM,SAASoI,EAASqC,EAAME,GAqC5B,QAASC,KACP,GAAI7I,MACF3F,EAAI6F,UAAUxF,OACdwD,GAAQmI,GAAYA,GAAWA,EAAQnI,QAAS,CAQlD,KANI0K,GAAWhI,EAAWgI,IACxBA,EAAQtI,MAAM5G,KAAMwG,WAKf7F,KAAK2F,EAAK3F,GAAK6D,EAAOzE,EAAKwE,KAAKoI,EAASnG,UAAU7F,IAAM6F,UAAU7F,EAE1E,KAKE,MAAOqO,GAAKpI,MAAM5G,KAAMsG,GACxB,MAAOpG,GAGP,KAFAH,GAAKqP,IACLrP,EAAKiC,iBAAiB9B,EAAGyM,GACnBzM,GA1DV,GAAIH,GAAOC,IAGX,IAAIuH,EAAYyH,KAAU9H,EAAWyF,GACnC,MAAOA,EAWT,IAPIzF,EAAWyF,KACbqC,EAAOrC,EACPA,EAAUsC,SAKP/H,EAAW8H,GACd,MAAOA,EAIT,KACE,GAAIA,EAAKK,EACP,MAAOL,EAIT,IAAIA,EAAKM,EACP,MAAON,GAAKM,EAEd,MAAOpP,GAIP,MAAO8O,GA8BT,IAAK,GAAIO,KAAYP,GACf1D,EAAO0D,EAAMO,KACfJ,EAAQI,GAAYP,EAAKO,GAW7B,OARAJ,GAAQzJ,UAAYsJ,EAAKtJ,UAEzBsJ,EAAKM,EAAoBH,EAGzBA,EAAQE,GAAY,EACpBF,EAAQK,EAAWR,EAEZG,GAQTM,UAAW,WAWT,MAVAhF,GAASmD,OAAO6B,YAEhBzP,KAAK0P,IACL1P,KAAK2P,IACL3P,KAAK4P,IACL5P,KAAK6P,IAELjP,MAAMoI,gBAAkBhJ,KAAK4J,EAC7B5J,KAAK2J,GAAoB,EAElB3J,MAWT8P,EAA0B,SAASC,GACjC/P,KAAK4M,EAAU,QAAS,4CAA6CmD,GACrE/P,KAAKgC,iBAAiB+N,EAAMC,QAC1B/N,OACEgO,2BAA2B,MAUjCC,EAAgC,WAI9B,MAHAlQ,MAAKmQ,EAA2BnQ,KAAKmQ,EAAyBC,KAAKpQ,MACnEoI,EAAQiI,kBACNjI,EAAQiI,iBAAiB,qBAAsBrQ,KAAKmQ,GAC/CnQ,MAQTsQ,EAAgC,WAG9B,MAFAlI,GAAQmI,qBACNnI,EAAQmI,oBAAoB,qBAAsBvQ,KAAKmQ,GAClDnQ,MAUTgC,iBAAkB,SAASF,EAAI6K,GAG7B,GAFAA,EAAUxB,GAAaqF,eAAgB,GAAI7D,EAAUA,MAEjD7B,EAAahJ,IAAOA,EAAGwD,MAEzBxD,EAAKA,EAAGwD,UACH,IAAIqF,EAAQ7I,GAEjBA,EAAKA,MACA,CAAA,IAAI+I,EAAc/I,GAYvB,MAAO9B,MAAK+D,eACVjC,EACAqJ,EAAYwB,GACV8D,YAAY,EACZD,eAAgB7D,EAAQ6D,eAAiB,IAZ7C7D,GAAU3M,KAAK0Q,EAA2C/D,EAAS7K,GACnEA,EAAK,GAAIlB,OAAM+L,EAAQ3J,SAiBzBhD,KAAK2H,EAAyB7F,CAO9B,KACE,GAAI6O,GAAQlG,EAASmG,kBAAkB9O,EACvC9B,MAAK6Q,EAAiBF,EAAOhE,GAC7B,MAAOmE,GACP,GAAIhP,IAAOgP,EACT,KAAMA,GAIV,MAAO9Q,OAGT+Q,EAA4C,SAASC,EAAgBlP,GACnE,GAAImP,GAASxL,OAAOyL,KAAKpP,GAAIqP,OACzBxE,EAAUxB,EAAY6F,GACxBhO,QACE,2CAA6CgJ,EAAwBiF,GACvEG,aAAc1G,EAAIuG,IAClBhP,MAAO+O,EAAe/O,WAIxB,OAFA0K,GAAQ1K,MAAMoP,EAAiBpF,EAAmBnK,GAE3C6K,GAUT5I,eAAgB,SAASD,EAAK6I,GAI5B,IACI3M,KAAKkI,EAAeK,aAAa+I,OACnCtR,KAAKkI,EAAeK,aAAa+I,KAAKxN,GAFxC,CAOA6I,EAAUA,MACV7I,GAAY,EAEZ,IAOIhC,GAPAS,EAAO4I,GAEPnI,QAASc,GAEX6I,EAQF,KACE,KAAM,IAAI/L,OAAMkD,GAChB,MAAOgN,GACPhP,EAAKgP,EAIPhP,EAAG+C,KAAO,IACV,IAAI8L,GAAQlG,EAASmG,kBAAkB9O,GAGnCyP,EAAcvG,EAAQ2F,EAAMA,QAAUA,EAAMA,MAAM,EAKlDY,IAAoC,2BAArBA,EAAYvC,OAC7BuC,EAAcZ,EAAMA,MAAM,GAG5B,IAAIa,GAAWD,GAAeA,EAAYE,KAAQ,EAElD,MACIzR,KAAKkI,EAAeM,WAAW8I,OACjCtR,KAAKkI,EAAeM,WAAW8I,KAAKE,OAMlCxR,KAAKkI,EAAeO,cAAc6I,MACnCtR,KAAKkI,EAAeO,cAAc6I,KAAKE,IAF1C,CAOA,GAAIxR,KAAKkI,EAAeuI,YAAe9D,GAAWA,EAAQ8D,WAAa,CAErElO,EAAK6O,YAAkC,MAApB7O,EAAK6O,YAAsBtN,EAAMvB,EAAK6O,YAEzDzE,EAAUxB,GAENqF,eAAgB,GAElB7D,GAMFA,EAAQ6D,gBAAkB,CAE1B,IAAIkB,GAAS1R,KAAK2R,EAAehB,EAAOhE,EACxCpK,GAAKkO,YAEHiB,OAAQA,EAAOE,WAcnB,MATIrP,GAAK6O,cACP7O,EAAK6O,YAAcpG,EAAQzI,EAAK6O,aAC5B7O,EAAK6O,aACJ7O,EAAK6O,cAIZpR,KAAK6R,EAAMtP,GAEJvC,QAGT8R,kBAAmB,SAASC,GAC1B,GAAIC,GAAQ7G,GAER8G,UAAWnL,IAAQ,KAErBiL,EAGF,IAAI7K,EAAWlH,KAAKkI,EAAegK,oBAAqB,CACtD,GAAIC,GAASnS,KAAKkI,EAAegK,mBAAmBF,EAEpD,IAAIpH,EAASuH,KAAYlH,EAAckH,GACrCH,EAAQG,MACH,IAAIA,KAAW,EACpB,MAAOnS,MAQX,MAJAA,MAAKkK,EAAatG,KAAKoO,GACnBhS,KAAKkK,EAAalJ,OAAShB,KAAKkI,EAAe8E,gBACjDhN,KAAKkK,EAAakI,QAEbpS,MAGTmD,UAAW,SAASkP,GAClB,GAAIC,MAAgB/L,MAAMxF,KAAKyF,UAAW,EAO1C,OALAxG,MAAK+J,EAASnG,MAAMyO,EAAQC,IACxBtS,KAAK2J,GACP3J,KAAKmO,IAGAnO,MASTuS,eAAgB,SAAS7D,GAIvB,MAFA1O,MAAKiI,EAAeyG,KAAOA,EAEpB1O,MASTwS,gBAAiB,SAASvQ,GAGxB,MAFAjC,MAAKyS,EAAc,QAASxQ,GAErBjC,MAST0S,eAAgB,SAASC,GAGvB,MAFA3S,MAAKyS,EAAc,OAAQE,GAEpB3S,MAQT4S,aAAc,WAGZ,MAFA5S,MAAKiI,KAEEjI,MAQT6S,WAAY,WAEV,MAAOzL,MAAK0L,MAAMzL,EAAUrH,KAAKiI,KASnC8K,eAAgB,SAASC,GAGvB,MAFAhT,MAAKkI,EAAe8K,YAAcA,EAE3BhT,MASTiT,WAAY,SAAS9K,GAGnB,MAFAnI,MAAKkI,EAAeC,QAAUA,EAEvBnI,MAUTqC,gBAAiB,SAASwB,GACxB,GAAIoD,GAAWjH,KAAKkI,EAAegL,YAEnC,OADAlT,MAAKkI,EAAegL,aAAelM,EAAqBC,EAAUpD,GAC3D7D,MAUTmT,sBAAuB,SAAStP,GAC9B,GAAIoD,GAAWjH,KAAKkI,EAAegK,kBAEnC,OADAlS,MAAKkI,EAAegK,mBAAqBlL,EAAqBC,EAAUpD,GACjE7D,MAUToT,sBAAuB,SAASvP,GAC9B,GAAIoD,GAAWjH,KAAKkI,EAAemL,kBAEnC,OADArT,MAAKkI,EAAemL,mBAAqBrM,EAAqBC,EAAUpD,GACjE7D,MAYTsT,aAAc,SAASC,GAGrB,MAFAvT,MAAKkI,EAAeqL,UAAYA,EAEzBvT,MAQTwT,cAAe,WACb,MAAOxT,MAAK2H,GAQd8L,YAAa,WACX,MAAOzT,MAAK6H,GAQd8F,QAAS,WACP,QAAK3N,KAAKmH,MACLnH,KAAK8H,IACH9H,KAAK0T,0BACR1T,KAAK0T,yBAA0B,EAC/B1T,KAAK4M,EAAU,QAAS,2CAEnB,KAKX+G,UAAW,WAIT,GAAIC,GAAcxL,EAAQwL,WACtBA,IACF5T,KAAKoC,OAAOwR,EAAYlH,IAAKkH,EAAYxR,QAAQsL,WAIrDmG,iBAAkB,SAASlH,GACzB,GACGnF,EADH,CAKAmF,EAAUA,KAEV,IAAI8G,GAAc9G,EAAQmH,SAAW9T,KAAKyT,aAC1C,KAAKA,EACH,KAAM,IAAIzN,GAAiB,kBAG7B,IAAI0G,GAAMC,EAAQD,KAAO1M,KAAKyO,CAC9B,KAAK/B,EACH,KAAM,IAAI1G,GAAiB,cAG7B,IAAI+N,GAASC,mBACTC,EAAK,EACTA,IAAM,YAAcF,EAAON,GAC3BQ,GAAM,QAAUF,EAAOrH,EAEvB,IAAIgC,GAAO/B,EAAQ+B,MAAQ1O,KAAKiI,EAAeyG,IAC3CA,KACEA,EAAK7J,OAAMoP,GAAM,SAAWF,EAAOrF,EAAK7J,OACxC6J,EAAKwF,QAAOD,GAAM,UAAYF,EAAOrF,EAAKwF,QAGhD,IAAIC,GAAenU,KAAK6O,EAAiB7O,KAAKqO,EAAU3B,IAEpD0H,EAAS5M,EAAU6M,cAAc,SACrCD,GAAOE,OAAQ,EACfF,EAAOG,IAAMJ,EAAe,yBAA2BF,GACtDzM,EAAUgN,MAAQhN,EAAUiN,MAAMC,YAAYN,KAIjDO,EAAoB,WAClB,GAAI5U,GAAOC,IACXA,MAAK0J,GAAkB,EACvBkL,WAAW,WAET7U,EAAK2J,GAAkB,KAI3BmL,EAAe,SAASC,EAAWnI,GAEjC,GAAIoI,GAAKjI,CAET,IAAK9M,KAAKsH,EAAV,CAEAqF,EAAUA,MAEVmI,EAAY,QAAUA,EAAU5R,OAAO,EAAG,GAAG8R,cAAgBF,EAAU5R,OAAO,GAE1EsE,EAAUyN,aACZF,EAAMvN,EAAUyN,YAAY,cAC5BF,EAAIG,UAAUJ,GAAW,GAAM,KAE/BC,EAAMvN,EAAU2N,oBAChBJ,EAAID,UAAYA,EAGlB,KAAKhI,IAAOH,GACNrB,EAAOqB,EAASG,KAClBiI,EAAIjI,GAAOH,EAAQG,GAGvB,IAAItF,EAAUyN,YAEZzN,EAAU4N,cAAcL,OAIxB,KACEvN,EAAU6N,UAAU,KAAON,EAAID,UAAUQ,cAAeP,GACxD,MAAO7U,OAYbqV,GAAyB,SAASC,GAChC,GAAIzV,GAAOC,IACX,OAAO,UAAS+U,GASd,GALAhV,EAAK0V,GAAmB,KAKpB1V,EAAKoK,IAAuB4K,EAAhC,CAEAhV,EAAKoK,EAAqB4K,CAM1B,IAAIW,EACJ,KACEA,EAAShK,EAAiBqJ,EAAIW,QAC9B,MAAOxV,GACPwV,EAAS,YAGX3V,EAAK+R,mBACH6D,SAAU,MAAQH,EAClBxS,QAAS0S,OAUfE,GAAuB,WACrB,GAAI7V,GAAOC,KACT6V,EAAmB,GAKrB,OAAO,UAASd,GACd,GAAIW,EACJ,KACEA,EAASX,EAAIW,OACb,MAAOxV,GAGP,OAEF,GAAI4V,GAAUJ,GAAUA,EAAOI,OAK/B,IACGA,IACY,UAAZA,GAAmC,aAAZA,GAA2BJ,EAAOK,mBAF5D,CAQA,GAAIC,GAAUjW,EAAK0V,EACdO,IACHjW,EAAKkW,GAAwB,SAASlB,GAExCmB,aAAaF,GACbjW,EAAK0V,GAAmBb,WAAW,WACjC7U,EAAK0V,GAAmB,MACvBI,MAUPM,GAAmB,SAASC,EAAMC,GAChC,GAAIC,GAAYzK,EAAS7L,KAAKoK,EAAUG,MACpCgM,EAAW1K,EAASwK,GACpBG,EAAa3K,EAASuK,EAK1BpW,MAAKsK,EAAY+L,EAIbC,EAAUG,WAAaF,EAASE,UAAYH,EAAUI,OAASH,EAASG,OAC1EL,EAAKE,EAASI,UACZL,EAAUG,WAAaD,EAAWC,UAAYH,EAAUI,OAASF,EAAWE,OAC9EN,EAAOI,EAAWG,UAEpB3W,KAAK8R,mBACH6D,SAAU,aACVpT,MACE8T,GAAIA,EACJD,KAAMA,MAKZQ,EAAwB,WACtB,GAAI7W,GAAOC,IACXD,GAAK8W,GAA4BlQ,SAASjB,UAAUC,SAEpDgB,SAASjB,UAAUC,SAAW,WAC5B,MAAoB,kBAAT3F,OAAuBA,KAAKqP,EAC9BtP,EAAK8W,GAA0BjQ,MAAM5G,KAAKwP,EAAUhJ,WAEtDzG,EAAK8W,GAA0BjQ,MAAM5G,KAAMwG,aAItD5E,EAA0B,WACpB5B,KAAK6W,KAEPlQ,SAASjB,UAAUC,SAAW3F,KAAK6W,KAQvCC,EAAqB,WAKnB,QAASC,GAAWC,GAClB,MAAO,UAASC,EAAI9W,GAKlB,IAAK,GADDmG,GAAO,GAAI4Q,OAAM1Q,UAAUxF,QACtBL,EAAI,EAAGA,EAAI2F,EAAKtF,SAAUL,EACjC2F,EAAK3F,GAAK6F,UAAU7F,EAEtB,IAAIwW,GAAmB7Q,EAAK,EAQ5B,OAPIY,GAAWiQ,KACb7Q,EAAK,GAAKvG,EAAKwE,KAAK4S,IAMlBH,EAAKpQ,MACAoQ,EAAKpQ,MAAM5G,KAAMsG,GAEjB0Q,EAAK1Q,EAAK,GAAIA,EAAK,KAOhC,QAAS8Q,GAAgBtX,GACvB,GAAIuX,GAAQjP,EAAQtI,IAAWsI,EAAQtI,GAAQ4F,SAC3C2R,IAASA,EAAMC,gBAAkBD,EAAMC,eAAe,sBACxDxL,EACEuL,EACA,mBACA,SAASL,GACP,MAAO,UAASxB,EAASyB,EAAIM,EAASC,GAEpC,IACMP,GAAMA,EAAGQ,cACXR,EAAGQ,YAAc1X,EAAKwE,KAAK0S,EAAGQ,cAEhC,MAAOC,IAMT,GAAIC,GAAQC,EAAcC,CA6B1B,OA1BE5O,IACAA,EAAgBqE,MACJ,gBAAXxN,GAAuC,SAAXA,KAI7B8X,EAAe7X,EAAKkW,GAAwB,SAC5C4B,EAAkB9X,EAAK+X,KACvBH,EAAS,SAAS5C,GAIhB,GAAKA,EAAL,CAEA,GAAID,EACJ,KACEA,EAAYC,EAAIhS,KAChB,MAAO7C,GAGP,OAEF,MAAkB,UAAd4U,EAA8B8C,EAAa7C,GACxB,aAAdD,EAAiC+C,EAAgB9C,GAArD,UAGFiC,EAAKjW,KACVf,KACAwV,EACAzV,EAAKwE,KAAK0S,EAAIhI,OAAW0I,GACzBJ,EACAC,KAINO,GAEFjM,EACEuL,EACA,sBACA,SAASL,GACP,MAAO,UAASjC,EAAKkC,EAAIM,EAASC,GAChC,IACEP,EAAKA,IAAOA,EAAG3H,EAAoB2H,EAAG3H,EAAoB2H,GAC1D,MAAO/W,IAGT,MAAO8W,GAAKjW,KAAKf,KAAM+U,EAAKkC,EAAIM,EAASC,KAG7CO,IAvGN,GAAIhY,GAAOC,KAEP+X,EAAkBhY,EAAKkK,EA2BvBhB,EAAkBjJ,KAAKkI,EAAee,eA+E1C6C,GAAK1D,EAAS,aAAc2O,EAAYgB,GACxCjM,EAAK1D,EAAS,cAAe2O,EAAYgB,GACrC3P,EAAQ4P,uBACVlM,EACE1D,EACA,wBACA,SAAS4O,GACP,MAAO,UAASiB,GACd,MAAOjB,GAAKjX,EAAKwE,KAAK0T,MAG1BF,EAqCJ,KAAK,GA/BDG,IACF,cACA,SACA,OACA,mBACA,iBACA,oBACA,kBACA,cACA,aACA,qBACA,cACA,aACA,iBACA,eACA,kBACA,cACA,cACA,eACA,qBACA,SACA,YACA,eACA,gBACA,YACA,kBACA,SACA,iBACA,4BACA,wBAEOvX,EAAI,EAAGA,EAAIuX,EAAalX,OAAQL,IACvCyW,EAAgBc,EAAavX,KAajCwX,EAAwB,WAMtB,QAASC,GAASC,EAAMhL,GAClBgL,IAAQhL,IAAOnG,EAAWmG,EAAIgL,KAChCvM,EAAKuB,EAAKgL,EAAM,SAASrB,GACvB,MAAOjX,GAAKwE,KAAKyS,KARvB,GAAIjX,GAAOC,KACPiJ,EAAkBjJ,KAAKkI,EAAee,gBAEtC8O,EAAkBhY,EAAKkK,CAU3B,IAAIhB,EAAgBoE,KAAO,kBAAoBjF,GAAS,CACtD,GAAIkQ,GAAWlQ,EAAQmQ,gBAAkBnQ,EAAQmQ,eAAe7S,SAChEoG,GACEwM,EACA,OACA,SAASE,GACP,MAAO,UAASlP,EAAQmI,GAYtB,MARI1G,GAAS0G,IAAQA,EAAIgH,QAAQ1Y,EAAKgI,UACpC/H,KAAK0Y,IACHpP,OAAQA,EACRmI,IAAKA,EACLkH,YAAa,OAIVH,EAAS5R,MAAM5G,KAAMwG,aAGhCuR,GAGFjM,EACEwM,EACA,OACA,SAASM,GACP,MAAO,YAIL,QAASC,KACP,GAAIxL,EAAIqL,IAAkC,IAAnBrL,EAAIyL,WAAkB,CAC3C,IAGEzL,EAAIqL,GAAYC,YAActL,EAAI0L,OAClC,MAAO7Y,IAITH,EAAK+R,mBACH/O,KAAM,OACN4S,SAAU,MACVpT,KAAM8K,EAAIqL,MAMhB,IAAK,GArBDrL,GAAMrN,KAoBNgZ,GAAS,SAAU,UAAW,cACzBC,EAAI,EAAGA,EAAID,EAAMhY,OAAQiY,IAChCb,EAASY,EAAMC,GAAI5L,EAiBrB,OAdI,sBAAwBA,IAAOnG,EAAWmG,EAAI6L,oBAChDpN,EACEuB,EACA,qBACA,SAAS2J,GACP,MAAOjX,GAAKwE,KAAKyS,EAAM/H,OAAW4J,KAMtCxL,EAAI6L,mBAAqBL,EAGpBD,EAAShS,MAAM5G,KAAMwG,aAGhCuR,GAIA9O,EAAgBoE,KAAOtB,KACzBD,EACE1D,EACA,QACA,SAAS+Q,GACP,MAAO,YAKL,IAAK,GADD7S,GAAO,GAAI4Q,OAAM1Q,UAAUxF,QACtBL,EAAI,EAAGA,EAAI2F,EAAKtF,SAAUL,EACjC2F,EAAK3F,GAAK6F,UAAU7F,EAGtB,IAEI8Q,GAFA2H,EAAa9S,EAAK,GAClBgD,EAAS,KAeb,IAZ0B,gBAAf8P,GACT3H,EAAM2H,EACG,WAAahR,IAAWgR,YAAsBhR,GAAQiR,SAC/D5H,EAAM2H,EAAW3H,IACb2H,EAAW9P,SACbA,EAAS8P,EAAW9P,SAGtBmI,EAAM,GAAK2H,EAIT3H,EAAIgH,QAAQ1Y,EAAKgI,QACnB,MAAOoR,GAAUvS,MAAM5G,KAAMsG,EAG3BA,GAAK,IAAMA,EAAK,GAAGgD,SACrBA,EAAShD,EAAK,GAAGgD,OAGnB,IAAIgQ,IACFhQ,OAAQA,EACRmI,IAAKA,EACLkH,YAAa,KAGf,OAAOQ,GACJvS,MAAM5G,KAAMsG,GACZiT,KAAK,SAASC,GASb,MARAF,GAAUX,YAAca,EAAST,OAEjChZ,EAAK+R,mBACH/O,KAAM,OACN4S,SAAU,QACVpT,KAAM+W,IAGDE,IAER,SAAS,SAAS9B,GASjB,KAPA3X,GAAK+R,mBACH/O,KAAM,OACN4S,SAAU,QACVpT,KAAM+W,EACNtV,MAAO,UAGH0T,MAIdK,GAMA9O,EAAgBqE,KAAOtN,KAAKsH,IAC1BE,EAAU6I,kBACZ7I,EAAU6I,iBAAiB,QAAStQ,EAAKkW,GAAwB,UAAU,GAC3EzO,EAAU6I,iBAAiB,WAAYtQ,EAAK+X,MAAyB,IAC5DtQ,EAAUiS,cAEnBjS,EAAUiS,YAAY,UAAW1Z,EAAKkW,GAAwB,UAC9DzO,EAAUiS,YAAY,aAAc1Z,EAAK+X,OAQ7C,IAAI4B,GAAStR,EAAQsR,OACjBC,EAAsBD,GAAUA,EAAOE,KAAOF,EAAOE,IAAIC,QACzDC,GACDH,GACDvR,EAAQ2R,SACRA,QAAQC,WACRD,QAAQE,YACV,IAAIhR,EAAgBoB,UAAYyP,EAAwB,CAEtD,GAAII,GAAgB9R,EAAQ+R,UAC5B/R,GAAQ+R,WAAa,WACnB,GAAIC,GAAcra,EAAKqK,EAAUG,IAGjC,IAFAxK,EAAKsa,GAAkBta,EAAKuK,EAAW8P,GAEnCF,EACF,MAAOA,GAActT,MAAM5G,KAAMwG,WAIrC,IAAI8T,GAA6B,SAASC,GAGxC,MAAO,YACL,GAAI9I,GAAMjL,UAAUxF,OAAS,EAAIwF,UAAU,GAAKyI,MAQhD,OALIwC,IAEF1R,EAAKsa,GAAkBta,EAAKuK,EAAWmH,EAAM,IAGxC8I,EAAiB3T,MAAM5G,KAAMwG,YAIxCsF,GAAKiO,QAAS,YAAaO,EAA4BvC,GACvDjM,EAAKiO,QAAS,eAAgBO,EAA4BvC,GAG5D,GAAI9O,EAAgBzF,SAAW,WAAa4E,IAAW5E,QAAQgX,IAAK,CAElE,GAAIC,GAAwB,SAAS3W,EAAKvB,GACxCxC,EAAK+R,mBACH9O,QAASc,EACTE,MAAOzB,EAAKyB,MACZ2R,SAAU,YAIdzK,IAAM,QAAS,OAAQ,OAAQ,QAAS,OAAQ,SAAS2J,EAAG7Q,GAC1DE,EAAkBV,QAASQ,EAAOyW,OAKxCC,EAAkB,WAGhB,IADA,GAAIC,GACG3a,KAAKiK,EAAiBjJ,QAAQ,CACnC2Z,EAAU3a,KAAKiK,EAAiBmI,OAEhC,IAAIL,GAAM4I,EAAQ,GAChB9V,EAAO8V,EAAQ,GACf3D,EAAO2D,EAAQ,EAEjB5I,GAAIlN,GAAQmS,IAIhB4D,EAAiB,WAEf,IAAK,GAAItR,KAAUtJ,MAAK8J,EACtB9J,KAAK6J,EAAiBP,GAAUtJ,KAAK8J,EAAwBR,IAIjEuR,EAAe,WACb,GAAI9a,GAAOC,IAGXkL,GAAKlL,KAAK+J,EAAU,SAAS8K,EAAGxC,GAC9B,GAAIyI,GAAYzI,EAAO,GACnB/L,EAAO+L,EAAO,EAClByI,GAAUlU,MAAM7G,GAAOA,GAAMgb,OAAOzU,OAIxC0U,EAAW,SAASC,GAClB,GAAIC,GAAI7O,EAAWxJ,KAAKoY,GACtBvO,KACA/L,EAAI,CAEN,KACE,KAAOA,KAAK+L,EAAIP,EAAQxL,IAAMua,EAAEva,IAAM,GACtC,MAAOT,GACP,KAAM,IAAI8F,GAAiB,gBAAkBiV,GAG/C,GAAIvO,EAAIkC,OAAS5O,KAAKkI,EAAeiT,eACnC,KAAM,IAAInV,GACR,iFAIJ,OAAO0G,IAGT0O,EAAkB,SAAShN,GAEzB,GAAI+F,GAAe,KAAO/F,EAAIsI,MAAQtI,EAAIiN,KAAO,IAAMjN,EAAIiN,KAAO,GAKlE,OAHIjN,GAAIqI,WACNtC,EAAe/F,EAAIqI,SAAW,IAAMtC,GAE/BA,GAGTmH,EAAyB,WAElBtb,KAAK0J,GACR1J,KAAK6Q,EAAiBjK,MAAM5G,KAAMwG,YAItC+U,EAAkB,SAASC,EAAW7O,GACpC,GAAI+E,GAAS1R,KAAK2R,EAAe6J,EAAW7O,EAE5C3M,MAAKyb,EAAc,UACjBD,UAAWA,EACX7O,QAASA,IAGX3M,KAAK0b,GACHF,EAAU3W,KACV2W,EAAUxY,QACVwY,EAAU/J,IACV+J,EAAUG,OACVjK,EACA/E,IAIJiP,EAAgB,SAASJ,EAAW7O,GAClC,GAAI5M,GAAOC,KACP0R,IACJ,IAAI8J,EAAU7K,OAAS6K,EAAU7K,MAAM3P,SACrCkK,EAAKsQ,EAAU7K,MAAO,SAAShQ,EAAGgQ,GAChC,GAAIkL,GAAQ9b,EAAK+b,GAAgBnL,EAAO6K,EAAU/J,IAC9CoK,IACFnK,EAAO9N,KAAKiY,KAKZlP,GAAWA,EAAQ6D,gBACrB,IAAK,GAAIyI,GAAI,EAAGA,EAAItM,EAAQ6D,gBAAkByI,EAAIvH,EAAO1Q,OAAQiY,IAC/DvH,EAAOuH,GAAG8C,QAAS,CAKzB,OADArK,GAASA,EAAOnL,MAAM,EAAGvG,KAAKkI,EAAec,kBAI/CgT,GAAiB,SAASH,EAAOI,GAE/B,GAAIC,IACFC,SAAUN,EAAMpK,IAChBkK,OAAQE,EAAMO,KACdC,MAAOR,EAAMS,OACbC,WAAUV,EAAM7M,MAAQ,IAuB1B,OAfK6M,GAAMpK,MACTyK,EAAWC,SAAWF,GAGxBC,EAAWH,SAGN/b,KAAKkI,EAAeQ,aAAa4I,OACjCtR,KAAKkI,EAAeQ,aAAa4I,KAAK4K,EAAWC,WAEpD,qBAAqB7K,KAAK4K,EAAW,cAErC,qBAAqB5K,KAAK4K,EAAWC,WAGhCD,GAGTM,GAAmB,SAASzZ,EAAMC,EAASwO,EAASmK,EAAQjK,EAAQ/E,GAClE,GAAI8P,IAAmB1Z,EAAOA,EAAO,KAAO,KAAOC,GAAW,GAC9D,KACIhD,KAAKkI,EAAeK,aAAa+I,OAClCtR,KAAKkI,EAAeK,aAAa+I,KAAKtO,KACrChD,KAAKkI,EAAeK,aAAa+I,KAAKmL,GAH1C,CAQA,GAAIhM,EAoBJ,IAlBIiB,GAAUA,EAAO1Q,QACnBwQ,EAAUE,EAAO,GAAGyK,UAAY3K,EAGhCE,EAAOE,UACPnB,GAAciB,OAAQA,IACbF,IACTf,GACEiB,SAEIyK,SAAU3K,EACVmK,OAAQA,EACRI,QAAQ,QAOZ/b,KAAKkI,EAAeM,WAAW8I,OACjCtR,KAAKkI,EAAeM,WAAW8I,KAAKE,OAMlCxR,KAAKkI,EAAeO,cAAc6I,MACnCtR,KAAKkI,EAAeO,cAAc6I,KAAKE,IAF1C,CAOA,GAAIjP,GAAO4I,GAGPzI,WACEC,SAEII,KAAMA,EACND,MAAOE,EACPyN,WAAYA,KAIlBiM,QAASlL,GAEX7E,EAIF3M,MAAK6R,EAAMtP,MAGboa,GAAa,SAASpa,GAGpB,GAAI2K,GAAMlN,KAAKkI,EAAeY,gBAI9B,IAHIvG,EAAKS,UACPT,EAAKS,QAAUoI,EAAS7I,EAAKS,QAASkK,IAEpC3K,EAAKG,UAAW,CAClB,GAAIA,GAAYH,EAAKG,UAAUC,OAAO,EACtCD,GAAUI,MAAQsI,EAAS1I,EAAUI,MAAOoK,GAG9C,GAAI0P,GAAUra,EAAKqa,OAanB,OAZIA,KACEA,EAAQnL,MACVmL,EAAQnL,IAAMrG,EAASwR,EAAQnL,IAAKzR,KAAKkI,EAAea,eAEtD6T,EAAQC,UACVD,EAAQC,QAAUzR,EAASwR,EAAQC,QAAS7c,KAAKkI,EAAea,gBAIhExG,EAAKua,aAAeva,EAAKua,YAAYna,QACvC3C,KAAK+c,GAAiBxa,EAAKua,aAEtBva,GAMTya,GAAkB,SAASF,GAQzB,IAAK,GAJHG,GACAjL,EACAzP,EAHE2a,GAAY,KAAM,OAAQ,OAKrBvc,EAAI,EAAGA,EAAImc,EAAYna,OAAO3B,SAAUL,EAE/C,GADAqR,EAAQ8K,EAAYna,OAAOhC,GAExBqR,EAAMsF,eAAe,SACrB1M,EAASoH,EAAMzP,QAChB8I,EAAa2G,EAAMzP,MAHrB,CAOAA,EAAO4I,KAAgB6G,EAAMzP,KAC7B,KAAK,GAAI0W,GAAI,EAAGA,EAAIiE,EAASlc,SAAUiY,EACrCgE,EAAUC,EAASjE,GACf1W,EAAK+U,eAAe2F,IAAY1a,EAAK0a,KACvC1a,EAAK0a,GAAW7R,EAAS7I,EAAK0a,GAAUjd,KAAKkI,EAAea,cAGhE+T,GAAYna,OAAOhC,GAAG4B,KAAOA,IAIjC4a,GAAc,WACZ,GAAKnd,KAAKyH,GAAkBzH,KAAKsH,EAAjC,CACA,GAAI8V,KAkBJ,OAhBIpd,MAAKyH,GAAiBC,EAAW2V,YACnCD,EAASzU,SACP2U,aAAc/Q,UAAU8Q,YAKxBjV,EAAQiC,UAAYjC,EAAQiC,SAASE,OACvC6S,EAAS3L,IAAMrJ,EAAQiC,SAASE,MAG9BvK,KAAKsH,GAAgBE,EAAU+V,WAC5BH,EAASzU,UAASyU,EAASzU,YAChCyU,EAASzU,QAAQkU,QAAUrV,EAAU+V,UAGhCH,IAGTI,EAAe,WACbxd,KAAKyd,GAAmB,EACxBzd,KAAK0d,GAAgB,MAGvBC,GAAgB,WACd,MAAO3d,MAAKyd,IAAoB3W,IAAQ9G,KAAK0d,GAAgB1d,KAAKyd,IAYpEG,GAAe,SAASC,GACtB,GAAIC,GAAO9d,KAAK4H,CAEhB,UACGkW,GACDD,EAAQ7a,UAAY8a,EAAK9a,SACzB6a,EAAQnB,UAAYoB,EAAKpB,WAKvBmB,EAAQpN,YAAcqN,EAAKrN,WACtB7E,EAAiBiS,EAAQpN,WAAYqN,EAAKrN,aACxCoN,EAAQnb,YAAaob,EAAKpb,WAE5BiJ,EAAgBkS,EAAQnb,UAAWob,EAAKpb,aAMnDqb,GAAkB,SAASnB,GAEzB,IAAI5c,KAAKge,KAAT,CAIA,GAAIjF,GAAS6D,EAAQ7D,MAKrB,IAAiB,MAAXA,GAA6B,MAAXA,GAA6B,MAAXA,EAA1C,CAEA,GAAIkF,EACJ,KAIIA,EADElS,IACM6Q,EAAQjU,QAAQuV,IAAI,eAEpBtB,EAAQuB,kBAAkB,eAIpCF,EAA8B,IAAtBG,SAASH,EAAO,IACxB,MAAO/d,IAITF,KAAKyd,GAAmBQ,EAEpBA,EAEwB,EAAxBje,KAAKyd,IAAwB,IAEjCzd,KAAK0d,GAAgB5W,OAGvBuX,EAAO,SAAS9b,GACd,GAAIsK,GAAgB7M,KAAKkI,EAErBoW,GACAC,QAASve,KAAKgI,EACdtB,OAAQmG,EAAcnG,OACtB8X,SAAU,cAEZpB,EAAWpd,KAAKye,IAsDlB,IApDIrB,IACFkB,EAAS1B,QAAUQ,GAIjB7a,EAAKiO,sBAAuBjO,GAAKiO,eAErCjO,EAAO4I,EAAYmT,EAAU/b,GAG7BA,EAAKoQ,KAAOxH,EAAYA,KAAgBnL,KAAKiI,EAAe0K,MAAOpQ,EAAKoQ,MACxEpQ,EAAKN,MAAQkJ,EAAYA,KAAgBnL,KAAKiI,EAAehG,OAAQM,EAAKN,OAG1EM,EAAKN,MAAM,oBAAsB6E,IAAQ9G,KAAKgK,EAE1ChK,KAAKkK,GAAgBlK,KAAKkK,EAAalJ,OAAS,IAGlDuB,EAAKua,aACHna,UAAW4D,MAAMxF,KAAKf,KAAKkK,EAAc,KAIzClK,KAAKiI,EAAeyG,OAEtBnM,EAAKmM,KAAO1O,KAAKiI,EAAeyG,MAI9B7B,EAAcmG,cAAazQ,EAAKyQ,YAAcnG,EAAcmG,aAG5DnG,EAAc1E,UAAS5F,EAAK4F,QAAU0E,EAAc1E,SAGpD0E,EAAc6R,aAAYnc,EAAKoc,YAAc9R,EAAc6R,YAE/Dnc,EAAOvC,KAAK4e,GAAcrc,GAG1BkD,OAAOyL,KAAK3O,GAAMsc,QAAQ,SAAS/R,IAChB,MAAbvK,EAAKuK,IAA8B,KAAdvK,EAAKuK,IAAe7B,EAAc1I,EAAKuK,YACvDvK,GAAKuK,KAIZ5F,EAAW2F,EAAcqG,gBAC3B3Q,EAAOsK,EAAcqG,aAAa3Q,IAASA,GAIxCA,IAAQ0I,EAAc1I,MAMzB2E,EAAW2F,EAAcwG,qBACxBxG,EAAcwG,mBAAmB9Q,IAOpC,MAAIvC,MAAKge,SACPhe,MAAK4M,EAAU,OAAQ,uCAAwCrK,QAIzB,gBAA7BsK,GAAc1D,WACnB8D,KAAK6R,SAAWjS,EAAc1D,YAChCnJ,KAAK+e,GAAsBxc,GAG7BvC,KAAK+e,GAAsBxc,KAI/Byc,GAAe,SAASzc,GACtB,MAAO2J,GAAS3J,EAAMvC,KAAKkI,EAAekB,eAG5C6V,GAAU,WACR,MAAOxT,MAGTyT,GAAuB,SAAS3c,EAAMsB,GACpC,GAAI9D,GAAOC,KACP6M,EAAgB7M,KAAKkI,CAEzB,IAAKlI,KAAK2N,UAAV,CAQA,GALApL,EAAOvC,KAAKmf,GAAY5c,IAKnBvC,KAAKkI,EAAekX,iBAAmBpf,KAAKqf,GAAc9c,GAE7D,WADAvC,MAAK4M,EAAU,OAAQ,+BAAgCrK,EAOzDvC,MAAK6H,EAAetF,EAAK+c,WAAa/c,EAAK+c,SAAWtf,KAAKuf,MAG3Dvf,KAAK4H,EAAYrF,EAEjBvC,KAAK4M,EAAU,QAAS,uBAAwBrK,EAEhD,IAAIid,IACFC,eAAgB,IAChBC,cAAe,YAAc1f,KAAKwM,QAClCmT,WAAY3f,KAAK+H,EAGf/H,MAAK2O,IACP6Q,EAAKI,cAAgB5f,KAAK2O,EAG5B,IAAIjM,GAAYH,EAAKG,WAAaH,EAAKG,UAAUC,OAAO,EAItD3C,MAAKkI,EAAee,iBACpBjJ,KAAKkI,EAAee,gBAAgBsE,QAEpCvN,KAAK8R,mBACH6D,SAAU,SACV3S,QAASN,GACJA,EAAUK,KAAOL,EAAUK,KAAO,KAAO,IAAML,EAAUI,MAC1DP,EAAKS,QACTsc,SAAU/c,EAAK+c,SACftb,MAAOzB,EAAKyB,OAAS,SAIzB,IAAIyN,GAAMzR,KAAK8O,GACdjC,EAAc0G,WAAavT,KAAK6f,IAAc9e,KAAKf,MAClDyR,IAAKA,EACL+N,KAAMA,EACNjd,KAAMA,EACNoK,QAASE,EACTiT,UAAW,WACT/f,EAAKyK,IAELzK,EAAK0b,EAAc,WACjBlZ,KAAMA,EACNgS,IAAK9C,IAEP5N,GAAYA,KAEdkc,QAAS,SAAiBza,GACxBvF,EAAK6M,EAAU,QAAS,mCAAoCtH,GAExDA,EAAMsX,SACR7c,EAAKigB,GAAiB1a,EAAMsX,SAG9B7c,EAAK0b,EAAc,WACjBlZ,KAAMA,EACNgS,IAAK9C,IAEPnM,EAAQA,GAAS,GAAI1E,OAAM,sDAC3BiD,GAAYA,EAASyB,QAK3B2a,GAAc,SAASC,GAErB,GAAIzO,GAAMyO,EAAKzO,IAAM,IAAMjG,EAAU0U,EAAKV,MAEtCW,EAAmB,KACnBC,IAUJ,IARIF,EAAKvT,QAAQhE,UACfwX,EAAmBngB,KAAKqgB,GAAcH,EAAKvT,QAAQhE,UAGjDuX,EAAKvT,QAAQ2T,kBACfF,EAA2BpgB,KAAKqgB,GAAcH,EAAKvT,QAAQ2T,kBAGzDvU,IAAiB,CACnBqU,EAAyB3L,KAAOpN,EAAU6Y,EAAK3d,KAE/C,IAAIge,GAAsBpV,KAAgBnL,KAAKqJ,GAC3CmX,EAAerV,EAAYoV,EAAqBH,EAMpD,OAJID,KACFK,EAAa7X,QAAUwX,GAGlB/X,EACJqY,MAAMhP,EAAK+O,GACXjH,KAAK,SAASC,GACb,GAAIA,EAASkH,GACXR,EAAKJ,WAAaI,EAAKJ,gBAClB,CACL,GAAIxa,GAAQ,GAAI1E,OAAM,sBAAwB4Y,EAAST,OAGvDzT,GAAMsX,QAAUpD,EAChB0G,EAAKH,SAAWG,EAAKH,QAAQza,MAGhC,SAAS,WACR4a,EAAKH,SACHG,EAAKH,QAAQ,GAAInf,OAAM,6CAI/B,GAAIgc,GAAUxU,EAAQmQ,gBAAkB,GAAInQ,GAAQmQ,cACpD,IAAKqE,EAAL,CAGA,GAAI+D,GAAU,mBAAqB/D,IAAqC,mBAAnBgE,eAEhDD,KAED,mBAAqB/D,GACvBA,EAAQ1D,mBAAqB,WAC3B,GAA2B,IAAvB0D,EAAQ9D,WAEL,GAAuB,MAAnB8D,EAAQ7D,OACjBmH,EAAKJ,WAAaI,EAAKJ,gBAClB,IAAII,EAAKH,QAAS,CACvB,GAAIrI,GAAM,GAAI9W,OAAM,sBAAwBgc,EAAQ7D,OACpDrB,GAAIkF,QAAUA,EACdsD,EAAKH,QAAQrI,MAIjBkF,EAAU,GAAIgE,gBAGdnP,EAAMA,EAAIoP,QAAQ,WAAY,IAG1BX,EAAKJ,YACPlD,EAAQkE,OAASZ,EAAKJ,WAEpBI,EAAKH,UACPnD,EAAQmE,QAAU,WAChB,GAAIrJ,GAAM,GAAI9W,OAAM,oCACpB8W,GAAIkF,QAAUA,EACdsD,EAAKH,QAAQrI,MAKnBkF,EAAQoE,KAAK,OAAQvP,GAEjB0O,GACFjV,EAAKiV,EAAkB,SAASrT,EAAKhK,GACnC8Z,EAAQqE,iBAAiBnU,EAAKhK,KAIlC8Z,EAAQsE,KAAK7Z,EAAU6Y,EAAK3d,UAG9B4e,GAAe,SAASC,GACtB,GAAIC,KAEJ,KAAK,GAAIvU,KAAOsU,GACd,GAAIA,EAAK9J,eAAexK,GAAM,CAC5B,GAAIhK,GAAQse,EAAKtU,EACjBuU,GAAUvU,GAAwB,kBAAVhK,GAAuBA,IAAUA,EAI7D,MAAOue,IAGTC,EAAW,SAAStd,GAGhBhE,KAAK8J,EAAwB9F,KAC5BhE,KAAKyM,OAASzM,KAAKkI,EAAeuE,QAGnC9F,SAASjB,UAAUkB,MAAM7F,KACvBf,KAAK8J,EAAwB9F,GAC7BhE,KAAK6J,KACFtD,MAAMxF,KAAKyF,UAAW,KAK/B+a,EAAe,SAASzU,EAAKiC,GACvBxH,EAAYwH,SACP/O,MAAKiI,EAAe6E,GAE3B9M,KAAKiI,EAAe6E,GAAO3B,EAAYnL,KAAKiI,EAAe6E,OAAYiC,KAM7E9O,EAAMyF,UAAU8b,QAAUvhB,EAAMyF,UAAU6M,eAC1CtS,EAAMyF,UAAU+b,kBAAoBxhB,EAAMyF,UAAUuN,WAEpDxT,EAAOD,QAAUS,IAEdc,KAAKf,KAAuB,mBAAXF,QAAyBA,OAAyB,mBAATC,MAAuBA,KAAyB,mBAAXF,QAAyBA,aACxH6hB,GAAK,GAAGC,GAAK,GAAGC,GAAK,GAAG7b,EAAI,EAAE3B,EAAI,EAAEf,EAAI,IAAID,GAAG,SAASlC,EAAQzB,EAAOD,IAC1E,SAAWM,GAOX,GAAI+hB,GAAmB3gB,EAAQ,GAG3BkH,EACgB,mBAAXvI,QACHA,OACkB,mBAAXC,GAAyBA,EAAyB,mBAATC,MAAuBA,QACzE+hB,EAAS1Z,EAAQnI,MAEjBA,EAAQ,GAAI4hB,EAQhB5hB,GAAM8hB,WAAa,WAEjB,MADA3Z,GAAQnI,MAAQ6hB,EACT7hB,GAGTA,EAAM0T,YAENlU,EAAOD,QAAUS,EAoCjBR,EAAOD,QAAQwiB,OAASH,IAErB9gB,KAAKf,KAAuB,mBAAXF,QAAyBA,OAAyB,mBAATC,MAAuBA,KAAyB,mBAAXF,QAAyBA,aACxHgH,EAAI,IAAIxD,GAAG,SAASnC,EAAQzB,EAAOD,IACtC,SAAWM,GAQX,QAAS8K,GAASqX,GAChB,MAAuB,gBAATA,IAA8B,OAATA,EAKrC,QAAStX,GAAQ7H,GACf,UAAW6C,SAAS5E,KAAK+B,IACvB,IAAK,iBACH,OAAO,CACT,KAAK,qBACH,OAAO,CACT,KAAK,wBACH,OAAO,CACT,SACE,MAAOA,aAAiBlC,QAI9B,QAASkK,GAAahI,GACpB,MAAOof,MAAoD,2BAAzBvc,SAAS5E,KAAK+B,GAGlD,QAASyE,GAAY0a,GACnB,MAAgB,UAATA,EAGT,QAAS/a,GAAW+a,GAClB,MAAuB,kBAATA,GAGhB,QAASpX,GAAcoX,GACrB,MAAgD,oBAAzCxc,OAAOC,UAAUC,SAAS5E,KAAKkhB,GAGxC,QAASlX,GAASkX,GAChB,MAAgD,oBAAzCxc,OAAOC,UAAUC,SAAS5E,KAAKkhB,GAGxC,QAASjX,GAAQiX,GACf,MAAgD,mBAAzCxc,OAAOC,UAAUC,SAAS5E,KAAKkhB,GAGxC,QAAShX,GAAcgX,GACrB,IAAKpX,EAAcoX,GAAO,OAAO,CAEjC,KAAK,GAAIpN,KAAKoN,GACZ,GAAIA,EAAK3K,eAAezC,GACtB,OAAO,CAGX,QAAO,EAGT,QAASqN,KACP,IAEE,MADA,IAAIC,YAAW,KACR,EACP,MAAOjiB,GACP,OAAO,GAIX,QAAS6L,KACP,KAAM,SAAW3D,IAAU,OAAO,CAElC,KAIE,MAHA,IAAIga,SACJ,GAAI/I,SAAQ,IACZ,GAAIgJ,WACG,EACP,MAAOniB,GACP,OAAO,GAQX,QAASuJ,KACP,IAAKsC,IAAiB,OAAO,CAE7B,KAKE,MAHA,IAAIsN,SAAQ,cACV7P,eAAgB,YAEX,EACP,MAAOtJ,GACP,OAAO,GAIX,QAASoiB,KACP,MAAwC,kBAA1BC,uBAGhB,QAASjgB,GAAgBuB,GACvB,QAASqP,GAAa3Q,EAAM0E,GAC1B,GAAIub,GAAiB3e,EAAStB,IAASA,CACvC,OAAI0E,GACKA,EAASub,IAAmBA,EAE9BA,EAGT,MAAOtP,GAGT,QAAShI,GAAK6G,EAAKlO,GACjB,GAAIlD,GAAGsY,CAEP,IAAI1R,EAAYwK,EAAI/Q,QAClB,IAAKL,IAAKoR,GACJzG,EAAOyG,EAAKpR,IACdkD,EAAS9C,KAAK,KAAMJ,EAAGoR,EAAIpR,QAK/B,IADAsY,EAAIlH,EAAI/Q,OAEN,IAAKL,EAAI,EAAGA,EAAIsY,EAAGtY,IACjBkD,EAAS9C,KAAK,KAAMJ,EAAGoR,EAAIpR,IAMnC,QAASwK,GAAYsX,EAAMC,GACzB,MAAKA,IAGLxX,EAAKwX,EAAM,SAAS5V,EAAKhK,GACvB2f,EAAK3V,GAAOhK,IAEP2f,GALEA,EAgBX,QAASpX,GAAa0G,GACpB,QAAKtM,OAAOkd,UAGLld,OAAOkd,SAAS5Q,GAGzB,QAAS3G,GAAS6P,EAAK/N,GACrB,GAAmB,gBAARA,GACT,KAAM,IAAItM,OAAM,yDAElB,OAAmB,gBAARqa,IAA4B,IAAR/N,EACtB+N,EAEFA,EAAIja,QAAUkM,EAAM+N,EAAMA,EAAI/X,OAAO,EAAGgK,GAAO,IAUxD,QAAS5B,GAAOsX,EAAQ9V,GACtB,MAAOrH,QAAOC,UAAU4R,eAAevW,KAAK6hB,EAAQ9V,GAGtD,QAASvB,GAAWsX,GAQlB,IALA,GAGEC,GAHEC,KACFpiB,EAAI,EACJqiB,EAAMH,EAAS7hB,OAGVL,EAAIqiB,EAAKriB,IACdmiB,EAAUD,EAASliB,GACfoK,EAAS+X,GAGXC,EAAQnf,KAAKkf,EAAQjC,QAAQ,8BAA+B,SACnDiC,GAAWA,EAAQG,QAE5BF,EAAQnf,KAAKkf,EAAQG,OAIzB,OAAO,IAAIC,QAAOH,EAAQI,KAAK,KAAM,KAGvC,QAAS3X,GAAUjL,GACjB,GAAI6iB,KAIJ,OAHAlY,GAAK3K,EAAG,SAASuM,EAAKhK,GACpBsgB,EAAMxf,KAAKoQ,mBAAmBlH,GAAO,IAAMkH,mBAAmBlR,MAEzDsgB,EAAMD,KAAK,KAMpB,QAAStX,GAAS4F,GAChB,GAAmB,gBAARA,GAAkB,QAC7B,IAAI4R,GAAQ5R,EAAI4R,MAAM,kEAGlBC,EAAQD,EAAM,IAAM,GACpBE,EAAWF,EAAM,IAAM,EAC3B,QACE5M,SAAU4M,EAAM,GAChB3M,KAAM2M,EAAM,GACZ9U,KAAM8U,EAAM,GACZ1M,SAAU0M,EAAM,GAAKC,EAAQC,GAGjC,QAAS9X,KACP,GAAI+X,GAASpb,EAAQob,QAAUpb,EAAQqb,QAEvC,KAAKlc,EAAYic,IAAWA,EAAOE,gBAAiB,CAGlD,GAAIC,GAAM,GAAIC,aAAY,EAC1BJ,GAAOE,gBAAgBC,GAGvBA,EAAI,GAAe,KAATA,EAAI,GAAc,MAE5BA,EAAI,GAAe,MAATA,EAAI,GAAe,KAE7B,IAAIE,GAAM,SAASC,GAEjB,IADA,GAAIC,GAAID,EAAIne,SAAS,IACdoe,EAAE/iB,OAAS,GAChB+iB,EAAI,IAAMA,CAEZ,OAAOA,GAGT,OACEF,GAAIF,EAAI,IACRE,EAAIF,EAAI,IACRE,EAAIF,EAAI,IACRE,EAAIF,EAAI,IACRE,EAAIF,EAAI,IACRE,EAAIF,EAAI,IACRE,EAAIF,EAAI,IACRE,EAAIF,EAAI,IAIV,MAAO,mCAAmC9C,QAAQ,QAAS,SAASmD,GAClE,GAAI3jB,GAAqB,GAAhB4M,KAAK6R,SAAiB,EAC7BiF,EAAU,MAANC,EAAY3jB,EAAS,EAAJA,EAAW,CAClC,OAAO0jB,GAAEpe,SAAS,MAYxB,QAAS+F,GAAiBuY,GAWxB,IATA,GAOEC,GAPEC,EAAsB,EACxBC,EAAiB,GACjBC,KACAC,EAAS,EACTtB,EAAM,EACNuB,EAAY,MACZC,EAAYD,EAAUvjB,OAGjBijB,GAAQK,IAAWH,IACxBD,EAAUO,EAAoBR,KAMhB,SAAZC,GACCI,EAAS,GAAKtB,EAAMqB,EAAIrjB,OAASwjB,EAAYN,EAAQljB,QAAUojB,KAKlEC,EAAIzgB,KAAKsgB,GAETlB,GAAOkB,EAAQljB,OACfijB,EAAOA,EAAKS,UAGd,OAAOL,GAAIzS,UAAUuR,KAAKoB,GAS5B,QAASE,GAAoBR,GAC3B,GACEU,GACAC,EACA9X,EACA+X,EACAlkB,EALE0jB,IAOJ,KAAKJ,IAASA,EAAKnO,QACjB,MAAO,EAST,IANAuO,EAAIzgB,KAAKqgB,EAAKnO,QAAQR,eAClB2O,EAAK3b,IACP+b,EAAIzgB,KAAK,IAAMqgB,EAAK3b,IAGtBqc,EAAYV,EAAKU,UACbA,GAAa5Z,EAAS4Z,GAExB,IADAC,EAAUD,EAAUvY,MAAM,OACrBzL,EAAI,EAAGA,EAAIikB,EAAQ5jB,OAAQL,IAC9B0jB,EAAIzgB,KAAK,IAAMghB,EAAQjkB,GAG3B,IAAImkB,IAAiB,OAAQ,OAAQ,QAAS,MAC9C,KAAKnkB,EAAI,EAAGA,EAAImkB,EAAc9jB,OAAQL,IACpCmM,EAAMgY,EAAcnkB,GACpBkkB,EAAOZ,EAAKc,aAAajY,GACrB+X,GACFR,EAAIzgB,KAAK,IAAMkJ,EAAM,KAAO+X,EAAO,KAGvC,OAAOR,GAAIlB,KAAK,IAMlB,QAAS6B,GAAgBvkB,EAAGwkB,GAC1B,WAAYxkB,IAAMwkB,GAMpB,QAASC,GAAgBzkB,EAAGwkB,GAC1B,MAAO1d,GAAY9G,IAAM8G,EAAY0d,GAMvC,QAAStZ,GAAgBmF,EAAKqU,GAC5B,OAAIH,EAAgBlU,EAAKqU,KAEzBrU,EAAMA,EAAInO,OAAO,GACjBwiB,EAAMA,EAAIxiB,OAAO,GAEbmO,EAAI/N,OAASoiB,EAAIpiB,MAAQ+N,EAAIhO,QAAUqiB,EAAIriB,SAG3CoiB,EAAgBpU,EAAIL,WAAY0U,EAAI1U,aAEjC7E,EAAiBkF,EAAIL,WAAY0U,EAAI1U,cAM9C,QAAS7E,GAAiBwZ,EAAQC,GAChC,GAAIL,EAAgBI,EAAQC,GAAS,OAAO,CAE5C,IAAIC,GAAUF,EAAO1T,OACjB6T,EAAUF,EAAO3T,MAGrB,IAAI4T,EAAQtkB,SAAWukB,EAAQvkB,OAAQ,OAAO,CAI9C,KAAK,GADDP,GAAGwkB,EACEtkB,EAAI,EAAGA,EAAI2kB,EAAQtkB,OAAQL,IAGlC,GAFAF,EAAI6kB,EAAQ3kB,GACZskB,EAAIM,EAAQ5kB,GAEVF,EAAE0b,WAAa8I,EAAE9I,UACjB1b,EAAEkb,SAAWsJ,EAAEtJ,QACflb,EAAE4b,QAAU4I,EAAE5I,OACd5b,EAAE,cAAgBwkB,EAAE,YAEpB,OAAO,CAEX,QAAO,EAUT,QAASnZ,GAAKiG,EAAKlN,EAAM2gB,EAAaC,GACpC,GAAW,MAAP1T,EAAJ,CACA,GAAIiF,GAAOjF,EAAIlN,EACfkN,GAAIlN,GAAQ2gB,EAAYxO,GACxBjF,EAAIlN,GAAMwK,GAAY,EACtB0C,EAAIlN,GAAM2K,EAAWwH,EACjByO,GACFA,EAAM7hB,MAAMmO,EAAKlN,EAAMmS,KAU3B,QAASvQ,GAASif,EAAOC,GACvB,IAAK3a,EAAQ0a,GAAQ,MAAO,EAI5B,KAAK,GAFDE,MAEKjlB,EAAI,EAAGA,EAAI+kB,EAAM1kB,OAAQL,IAChC,IACEilB,EAAOhiB,KAAKiiB,OAAOH,EAAM/kB,KACzB,MAAOT,GACP0lB,EAAOhiB,KAAK,gCAIhB,MAAOgiB,GAAOzC,KAAKwC,GASrB,QAASG,GAAWhjB,GAClB,QAASijB,UAAUjjB,GAAOsJ,MAAM,SAASpL,OAG3C,QAASglB,GAASljB,GAChB,MAAOgjB,GAAW1e,KAAKC,UAAUvE,IAGnC,QAASmjB,GAAenjB,GACtB,GAAqB,gBAAVA,GAAoB,CAC7B,GAAIojB,GAAY,EAChB,OAAO9a,GAAStI,EAAOojB,GAClB,GACY,gBAAVpjB,IACU,iBAAVA,IACU,mBAAVA,GAEP,MAAOA,EAGT,IAAIC,GAAO0C,OAAOC,UAAUC,SAAS5E,KAAK+B,EAG1C,OAAa,oBAATC,EAAmC,WAC1B,mBAATA,EAAkC,UACzB,sBAATA,EACKD,EAAM+B,KAAO,cAAgB/B,EAAM+B,KAAO,IAAM,aAElD/B,EAGT,QAASqjB,GAAgBrjB,EAAOsjB,GAC9B,MAAc,KAAVA,EAAoBH,EAAenjB,GAEnC+H,EAAc/H,GACT2C,OAAOyL,KAAKpO,GAAOujB,OAAO,SAASC,EAAKxZ,GAE7C,MADAwZ,GAAIxZ,GAAOqZ,EAAgBrjB,EAAMgK,GAAMsZ,EAAQ,GACxCE,OAEApP,MAAMlM,QAAQlI,GAChBA,EAAMyjB,IAAI,SAASC,GACxB,MAAOL,GAAgBK,EAAKJ,EAAQ,KAIjCH,EAAenjB,GAGxB,QAASmJ,GAAmBnK,EAAIskB,EAAOK,GACrC,IAAK5b,EAAc/I,GAAK,MAAOA,EAE/BskB,GAAyB,gBAAVA,GAAqBM,EAAgCN,EACpEK,EAA2B,gBAAVL,GAAqBO,EAA+BF,CAErE,IAAIG,GAAaT,EAAgBrkB,EAAIskB,EAErC,OAAIJ,GAAS3e,EAAUuf,IAAeH,EAC7Bxa,EAAmBnK,EAAIskB,EAAQ,GAGjCQ,EAGT,QAAS5a,GAAwBkF,EAAMgV,GACrC,GAAoB,gBAAThV,IAAqC,gBAATA,GAAmB,MAAOA,GAAKvL,UACtE,KAAKuR,MAAMlM,QAAQkG,GAAO,MAAO,EAKjC,IAHAA,EAAOA,EAAK2V,OAAO,SAAS/Z,GAC1B,MAAsB,gBAARA,KAEI,IAAhBoE,EAAKlQ,OAAc,MAAO,sBAG9B,IADAklB,EAAiC,gBAAdA,GAAyBY,EAA4BZ,EACpEhV,EAAK,GAAGlQ,QAAUklB,EAAW,MAAOhV,GAAK,EAE7C,KAAK,GAAI6V,GAAW7V,EAAKlQ,OAAQ+lB,EAAW,EAAGA,IAAY,CACzD,GAAIH,GAAa1V,EAAK3K,MAAM,EAAGwgB,GAAU5D,KAAK,KAC9C,MAAIyD,EAAW5lB,OAASklB,GACxB,MAAIa,KAAa7V,EAAKlQ,OAAe4lB,EAC9BA,EAAa,IAGtB,MAAO,GAGT,QAAS1a,GAASwZ,EAAOtc,GAcvB,QAAS4d,GAAeC,GACtB,MAAIjc,GAAQic,GACHA,EAAYV,IAAI,SAASC,GAC9B,MAAOQ,GAAeR,KAItB3b,EAAcoc,GACTxhB,OAAOyL,KAAK+V,GAAaZ,OAAO,SAASC,EAAKY,GAMnD,MAJEZ,GAAIY,GADFC,EAAe7V,KAAK4V,GACbE,EAEAJ,EAAeC,EAAYC,IAE/BZ,OAIJW,EA/BT,IAAKjc,EAAQ5B,IAAkB4B,EAAQ5B,IAAyC,IAAxBA,EAAapI,OACnE,MAAO0kB,EAET,IAEI2B,GAFAF,EAAiB5b,EAAWnC,GAC5Bge,EAAe,UAGnB,KACEC,EAAYjgB,KAAK0L,MAAMzL,EAAUqe,IACjC,MAAO4B,GACP,MAAO5B,GAwBT,MAAOsB,GAAeK,GAlkBxB,GAAIhgB,GAAYnG,EAAQ,IAEpBkH,EACgB,mBAAXvI,QACHA,OACkB,mBAAXC,GAAyBA,EAAyB,mBAATC,MAAuBA,QAgczE2mB,EAAgC,EAEhCC,EAA+B,MAC/BG,EAA4B,EA6HhCrnB,GAAOD,SACLoL,SAAUA,EACVD,QAASA,EACTG,aAAcA,EACdvD,YAAaA,EACbL,WAAYA,EACZ2D,cAAeA,EACfE,SAAUA,EACVC,QAASA,EACTC,cAAeA,EACfiX,mBAAoBA,EACpBnW,cAAeA,EACftC,uBAAwBA,EACxB6Y,8BAA+BA,EAC/BhgB,gBAAiBA,EACjB4I,KAAMA,EACNC,YAAaA,EACbC,SAAUA,EACVC,aAAcA,EACdC,OAAQA,EACRC,WAAYA,EACZC,UAAWA,EACXC,MAAOA,EACPC,iBAAkBA,EAClB+Y,oBAAqBA,EACrB9Y,gBAAiBA,EACjBC,iBAAkBA,EAClBC,SAAUA,EACVC,KAAMA,EACNrF,SAAUA,EACVwF,mBAAoBA,EACpBD,wBAAyBA,EACzBE,SAAUA,KAGTnL,KAAKf,KAAuB,mBAAXF,QAAyBA,OAAyB,mBAATC,MAAuBA,KAAyB,mBAAXF,QAAyBA,aACxH8hB,GAAK,KAAKD,IAAI,SAASxgB,EAAQzB,EAAOD,IACzC,SAAWM,GA+BX,QAASynB,KACP,MAAwB,mBAAbjb,WAAiD,MAArBA,SAASjC,SAAyB,GAElEiC,SAASjC,SAASE,KAjC3B,GAAIrE,GAAQhF,EAAQ,GAYhBuJ,GACF7B,qBAAqB,EACrB6D,OAAO,GAILrE,EACgB,mBAAXvI,QACHA,OACkB,mBAAXC,GAAyBA,EAAyB,mBAATC,MAAuBA,QAGzEynB,KAAYjhB,MACZkhB,EAAmB,IAGnBC,EAAiB,yGA+CrBjd,GAASmD,OAAS,WAUhB,QAASC,GAAU8Z,GACjBC,IACAC,EAASjkB,KAAK+jB,GAOhB,QAASG,GAAYH,GACnB,IAAK,GAAIhnB,GAAIknB,EAAS7mB,OAAS,EAAGL,GAAK,IAAKA,EACtCknB,EAASlnB,KAAOgnB,GAClBE,EAASE,OAAOpnB,EAAG,GAQzB,QAASqnB,KACPC,IACAJ,KAOF,QAASK,GAAevX,EAAOwX,GAC7B,GAAIzlB,GAAY,IAChB,KAAIylB,GAAkB1d,EAAS7B,oBAA/B,CAGA,IAAK,GAAIjI,KAAKknB,GACZ,GAAIA,EAASvQ,eAAe3W,GAC1B,IACEknB,EAASlnB,GAAGiG,MAAM,MAAO+J,GAAOoK,OAAOyM,EAAOzmB,KAAKyF,UAAW,KAC9D,MAAO4hB,GACP1lB,EAAY0lB,EAKlB,GAAI1lB,EACF,KAAMA,IAiBV,QAAS2lB,GAAsBvkB,EAAK2N,EAAK6W,EAAQC,EAAOzmB,GACtD,GAAI6O,GAAQ,KAERjO,EAAYwD,EAAM4E,aAAahJ,GAAMA,EAAGwD,MAAQxD,EAEhDkB,EAAUkD,EAAM4E,aAAahH,GAAOA,EAAId,QAAUc,CAEtD,IAAI0kB,EACF/d,EAASmG,kBAAkB6X,oCACzBD,EACA/W,EACA6W,EACAtlB,GAEF0lB,QACK,IAAIhmB,GAAawD,EAAMyE,QAAQjI,GAMpCiO,EAAQlG,EAASmG,kBAAkBlO,GACnCwlB,EAAevX,GAAO,OACjB,CACL,GAOIgY,GAPAte,GACFoH,IAAKA,EACL2K,KAAMkM,EACNhM,OAAQiM,GAGN1jB,EAAOoK,MAGX,IAAkC,uBAA3BtJ,SAAS5E,KAAKiC,GAAgC,CACnD,GAAI2lB,GAAS3lB,EAAQqgB,MAAMqE,EACvBiB,KACF9jB,EAAO8jB,EAAO,GACd3lB,EAAU2lB,EAAO,IAIrBte,EAAS2E,KAAOyY,EAEhB9W,GACE9L,KAAMA,EACN7B,QAASA,EACTyO,IAAK8V,IACL5W,OAAQtG,IAEV6d,EAAevX,GAAO,GAGxB,QAAIiY,GACKA,EAAmBhiB,MAAM5G,KAAMwG,WAM1C,QAASohB,KACHiB,IAGJD,EAAqBxgB,EAAQ2Y,QAC7B3Y,EAAQ2Y,QAAUsH,EAClBQ,GAA2B,GAG7B,QAASZ,KACFY,IAGLzgB,EAAQ2Y,QAAU6H,EAClBC,GAA2B,EAC3BD,EAAqB3Z,QAGvB,QAASyZ,KACP,GAAII,GAAsBN,EACxBO,EAAYC,CACdA,GAAW,KACXR,EAAqB,KACrBhV,EAAgB,KAChB0U,EAAethB,MAAM,MAAOkiB,GAAqB,GAAO/N,OAAOgO,IAUjE,QAASnb,GAAO9L,EAAImnB,GAClB,GAAI3iB,GAAOkhB,EAAOzmB,KAAKyF,UAAW,EAClC,IAAIgiB,EAAoB,CACtB,GAAIhV,IAAkB1R,EACpB,MAEA4mB,KAIJ,GAAI/X,GAAQlG,EAASmG,kBAAkB9O,EAevC,IAdA0mB,EAAqB7X,EACrB6C,EAAgB1R,EAChBknB,EAAW1iB,EAMXsO,WAAW,WACLpB,IAAkB1R,GACpB4mB,KAED/X,EAAMuY,WAAa,IAAO,GAEzBD,KAAY,EACd,KAAMnnB,GA9LV,GA0DI8mB,GAAoBC,EA1DpBhB,KACFmB,EAAW,KACXxV,EAAgB,KAChBgV,EAAqB,IAkMvB,OAHA5a,GAAOC,UAAYA,EACnBD,EAAOka,YAAcA,EACrBla,EAAO6B,UAAYuY,EACZpa,KAsDTnD,EAASmG,kBAAoB,WA4C3B,QAASuY,GAA+BrnB,GACtC,GAAwB,mBAAbA,GAAG6O,OAA0B7O,EAAG6O,MAA3C,CAiBA,IAAK,GALDyY,GACAC,EACAC,EAZA5P,EAAS,0IACT6P,EAAQ,wHAGRC,EAAQ,6JAERC,EAAY,gDACZC,EAAa,gCACbC,EAAQ7nB,EAAG6O,MAAMvE,MAAM,MACvBuE,KAMKhQ,GAFO,sBAAsBkC,KAAKf,EAAGkB,SAEjC,GAAGiW,EAAI0Q,EAAM3oB,OAAQL,EAAIsY,IAAKtY,EAAG,CAC5C,GAAK0oB,EAAQ3P,EAAO7W,KAAK8mB,EAAMhpB,IAAM,CACnC,GAAIipB,GAAWP,EAAM,IAAqC,IAA/BA,EAAM,GAAG5Q,QAAQ,UACxCoR,EAASR,EAAM,IAAmC,IAA7BA,EAAM,GAAG5Q,QAAQ,OACtCoR,KAAWT,EAAWM,EAAW7mB,KAAKwmB,EAAM,OAE9CA,EAAM,GAAKD,EAAS,GACpBC,EAAM,GAAKD,EAAS,GACpBC,EAAM,GAAKD,EAAS,IAEtBE,GACE7X,IAAMmY,EAAsB,KAAXP,EAAM,GACvBra,KAAMqa,EAAM,IAAM5B,EAClBnhB,KAAMsjB,GAAYP,EAAM,OACxBjN,KAAMiN,EAAM,IAAMA,EAAM,GAAK,KAC7B/M,OAAQ+M,EAAM,IAAMA,EAAM,GAAK,UAE5B,IAAKA,EAAQE,EAAM1mB,KAAK8mB,EAAMhpB,IACnC2oB,GACE7X,IAAK4X,EAAM,GACXra,KAAMqa,EAAM,IAAM5B,EAClBnhB,QACA8V,MAAOiN,EAAM,GACb/M,OAAQ+M,EAAM,IAAMA,EAAM,GAAK,UAE5B,CAAA,KAAKA,EAAQG,EAAM3mB,KAAK8mB,EAAMhpB,KAsBnC,QArBA,IAAIkpB,GAASR,EAAM,IAAMA,EAAM,GAAG5Q,QAAQ,aACtCoR,KAAWT,EAAWK,EAAU5mB,KAAKwmB,EAAM,MAE7CA,EAAM,GAAKD,EAAS,GACpBC,EAAM,GAAKD,EAAS,GACpBC,EAAM,GAAK,MACI,IAAN1oB,GAAY0oB,EAAM,IAAiC,mBAApBvnB,GAAGgoB,eAK3CnZ,EAAM,GAAG2L,OAASxa,EAAGgoB,aAAe,GAEtCR,GACE7X,IAAK4X,EAAM,GACXra,KAAMqa,EAAM,IAAM5B,EAClBnhB,KAAM+iB,EAAM,GAAKA,EAAM,GAAGjd,MAAM,QAChCgQ,KAAMiN,EAAM,IAAMA,EAAM,GAAK,KAC7B/M,OAAQ+M,EAAM,IAAMA,EAAM,GAAK,OAM9BC,EAAQta,MAAQsa,EAAQlN,OAC3BkN,EAAQta,KAAOyY,GAGjB9W,EAAM/M,KAAK0lB,GAGb,MAAK3Y,GAAM3P,QAKT6D,KAAM/C,EAAG+C,KACT7B,QAASlB,EAAGkB,QACZyO,IAAK8V,IACL5W,MAAOA,GAPA,MAwBX,QAAS8X,GAAoCjN,EAAW/J,EAAK6W,EAAQtlB,GACnE,GAAI+mB,IACFtY,IAAKA,EACL2K,KAAMkM,EAGR,IAAIyB,EAAQtY,KAAOsY,EAAQ3N,KAAM,CAO/B,GANAZ,EAAU0N,YAAa,EAElBa,EAAQ/a,OACX+a,EAAQ/a,KAAOyY,GAGbjM,EAAU7K,MAAM3P,OAAS,GACvBwa,EAAU7K,MAAM,GAAGc,MAAQsY,EAAQtY,IAAK,CAC1C,GAAI+J,EAAU7K,MAAM,GAAGyL,OAAS2N,EAAQ3N,KACtC,OAAO,CACF,KACJZ,EAAU7K,MAAM,GAAGyL,MACpBZ,EAAU7K,MAAM,GAAG3B,OAAS+a,EAAQ/a,KAGpC,MADAwM,GAAU7K,MAAM,GAAGyL,KAAO2N,EAAQ3N,MAC3B,EAOb,MAFAZ,GAAU7K,MAAMqZ,QAAQD,GACxBvO,EAAUyO,SAAU,GACb,EAKT,MAHEzO,GAAU0N,YAAa,GAGlB,EAYT,QAASgB,GAAsCpoB,EAAIskB,GASjD,IACE,GALAiD,GACAc,EALEC,EAAe,qEACjBzZ,KACA0Z,KACAC,GAAY,EAMRC,EAAOL,EAAsCM,OACjDD,IAASD,EACTC,EAAOA,EAAKC,OAEZ,GAAID,IAAS3Z,GAAqB2Z,IAAS9f,EAASmD,OAApD;AAkBA,GAbAuc,GACE1Y,IAAK,KACLzC,KAAMyY,EACNrL,KAAM,KACNE,OAAQ,MAGNiO,EAAK1lB,KACPslB,EAAKnb,KAAOub,EAAK1lB,MACPwkB,EAAQe,EAAavnB,KAAK0nB,EAAK5kB,eACzCwkB,EAAKnb,KAAOqa,EAAM,IAGK,mBAAdc,GAAKnb,KACd,IACEmb,EAAKnb,KAAOqa,EAAM3D,MAAM+E,UAAU,EAAGpB,EAAM3D,MAAMjN,QAAQ,MACzD,MAAOvY,IAGPmqB,EAAM,GAAKE,GACbD,GAAY,EAEZD,EAAM,GAAKE,IAAQ,EAGrB5Z,EAAM/M,KAAKumB,GAGT/D,GAGFzV,EAAMoX,OAAO,EAAG3B,EAGlB,IAAIjU,IACFtN,KAAM/C,EAAG+C,KACT7B,QAASlB,EAAGkB,QACZyO,IAAK8V,IACL5W,MAAOA,EAQT,OANA8X,GACEtW,EACArQ,EAAG4oB,WAAa5oB,EAAG6oB,SACnB7oB,EAAGsa,MAAQta,EAAG8oB,WACd9oB,EAAGkB,SAAWlB,EAAG+oB,aAEZ1Y,EAQT,QAASvB,GAAkB9O,EAAIskB,GAC7B,GAAIzV,GAAQ,IACZyV,GAAiB,MAATA,EAAgB,GAAKA,CAE7B,KAEE,GADAzV,EAAQwY,EAA+BrnB,GAErC,MAAO6O,GAET,MAAOzQ,GACP,GAAIuK,EAASgC,MACX,KAAMvM,GAIV,IAEE,GADAyQ,EAAQuZ,EAAsCpoB,EAAIskB,EAAQ,GAExD,MAAOzV,GAET,MAAOzQ,GACP,GAAIuK,EAASgC,MACX,KAAMvM,GAGV,OACE2E,KAAM/C,EAAG+C,KACT7B,QAASlB,EAAGkB,QACZyO,IAAK8V,KAOT,MAHA3W,GAAkB6X,oCAAsCA,EACxD7X,EAAkBuY,+BAAiCA,EAE5CvY,KAGTnR,EAAOD,QAAUiL,IAEd1J,KAAKf,KAAuB,mBAAXF,QAAyBA,OAAyB,mBAATC,MAAuBA,KAAyB,mBAAXF,QAAyBA,aACxHwD,EAAI,IAAIse,IAAI,SAASzgB,EAAQzB,EAAOD,GAevC,QAASiZ,GAAQqS,EAAUC,GACzB,IAAK,GAAIpqB,GAAI,EAAGA,EAAImqB,EAAS9pB,SAAUL,EACrC,GAAImqB,EAASnqB,KAAOoqB,EAAQ,MAAOpqB,EAErC,UAGF,QAAS0G,GAAU0K,EAAKiZ,EAAUC,EAAQC,GACxC,MAAO9jB,MAAKC,UAAU0K,EAAKoZ,EAAWH,EAAUE,GAAgBD,GAIlE,QAASG,GAAetoB,GACtB,GAAI4U,IAEF/G,MAAO7N,EAAM6N,MACb3N,QAASF,EAAME,QACf6B,KAAM/B,EAAM+B,KAGd,KAAK,GAAIlE,KAAKmC,GACR2C,OAAOC,UAAU4R,eAAevW,KAAK+B,EAAOnC,KAC9C+W,EAAI/W,GAAKmC,EAAMnC,GAInB,OAAO+W,GAGT,QAASyT,GAAWH,EAAUE,GAC5B,GAAIva,MACAO,IAWJ,OATqB,OAAjBga,IACFA,EAAgB,SAASpe,EAAKhK,GAC5B,MAAI6N,GAAM,KAAO7N,EACR,eAEF,eAAiBoO,EAAK3K,MAAM,EAAGkS,EAAQ9H,EAAO7N,IAAQqgB,KAAK,KAAO,MAItE,SAASrW,EAAKhK,GACnB,GAAI6N,EAAM3P,OAAS,EAAG,CACpB,GAAIqqB,GAAU5S,EAAQ9H,EAAO3Q,OAC5BqrB,EAAU1a,EAAMoX,OAAOsD,EAAU,GAAK1a,EAAM/M,KAAK5D,OACjDqrB,EAAUna,EAAK6W,OAAOsD,EAASC,EAAAA,EAAUxe,GAAOoE,EAAKtN,KAAKkJ,IAEtD2L,EAAQ9H,EAAO7N,KAClBA,EAAQooB,EAAcnqB,KAAKf,KAAM8M,EAAKhK,QAGxC6N,GAAM/M,KAAKd,EAGb,OAAmB,OAAZkoB,EACHloB,YAAiBlC,OAAQwqB,EAAetoB,GAASA,EACjDkoB,EAASjqB,KAAKf,KAAM8M,EAAKhK,IA5DjCtD,EAAUC,EAAOD,QAAU6H,EAC3B7H,EAAQ+rB,aAAeJ,OA+DjBvJ,IAAI,SAAS1gB,EAAQzB,EAAOD,GAwBlC,QAASgsB,GAAQC,EAAGC,GAClB,GAAIC,IAAW,MAAJF,IAAmB,MAAJC,GACtBE,GAAOH,GAAK,KAAOC,GAAK,KAAOC,GAAO,GAC1C,OAAQC,IAAO,GAAa,MAAND,EAMxB,QAASE,GAAc/H,EAAKgI,GAC1B,MAAQhI,IAAOgI,EAAQhI,IAAS,GAAKgI,EAMvC,QAASC,GAAOC,EAAGvrB,EAAGwkB,EAAGwG,EAAGnrB,EAAGH,GAC7B,MAAOqrB,GAAQK,EAAcL,EAAQA,EAAQ/qB,EAAGurB,GAAIR,EAAQC,EAAGtrB,IAAKG,GAAI2kB,GAE1E,QAASgH,GAAMxrB,EAAGwkB,EAAGjB,EAAGkI,EAAGT,EAAGnrB,EAAGH,GAC/B,MAAO4rB,GAAQ9G,EAAIjB,GAAOiB,EAAIiH,EAAIzrB,EAAGwkB,EAAGwG,EAAGnrB,EAAGH,GAEhD,QAASgsB,GAAM1rB,EAAGwkB,EAAGjB,EAAGkI,EAAGT,EAAGnrB,EAAGH,GAC/B,MAAO4rB,GAAQ9G,EAAIiH,EAAMlI,GAAKkI,EAAIzrB,EAAGwkB,EAAGwG,EAAGnrB,EAAGH,GAEhD,QAASisB,GAAM3rB,EAAGwkB,EAAGjB,EAAGkI,EAAGT,EAAGnrB,EAAGH,GAC/B,MAAO4rB,GAAO9G,EAAIjB,EAAIkI,EAAGzrB,EAAGwkB,EAAGwG,EAAGnrB,EAAGH,GAEvC,QAASksB,GAAM5rB,EAAGwkB,EAAGjB,EAAGkI,EAAGT,EAAGnrB,EAAGH,GAC/B,MAAO4rB,GAAO/H,GAAKiB,GAAKiH,GAAIzrB,EAAGwkB,EAAGwG,EAAGnrB,EAAGH,GAM1C,QAASmsB,GAAQb,EAAGzI,GAElByI,EAAEzI,GAAO,IAAM,KAASA,EAAM,GAC9ByI,GAAKzI,EAAM,KAAQ,GAAM,GAAK,IAAMA,CAEpC,IAAIriB,GACA4rB,EACAC,EACAC,EACAC,EACAjsB,EAAI,WACJwkB,aACAjB,cACAkI,EAAI,SAER,KAAKvrB,EAAI,EAAGA,EAAI8qB,EAAEzqB,OAAQL,GAAK,GAC7B4rB,EAAO9rB,EACP+rB,EAAOvH,EACPwH,EAAOzI,EACP0I,EAAOR,EAEPzrB,EAAIwrB,EAAMxrB,EAAGwkB,EAAGjB,EAAGkI,EAAGT,EAAE9qB,GAAI,cAC5BurB,EAAID,EAAMC,EAAGzrB,EAAGwkB,EAAGjB,EAAGyH,EAAE9qB,EAAI,GAAI,eAChCqjB,EAAIiI,EAAMjI,EAAGkI,EAAGzrB,EAAGwkB,EAAGwG,EAAE9qB,EAAI,GAAI,GAAI,WACpCskB,EAAIgH,EAAMhH,EAAGjB,EAAGkI,EAAGzrB,EAAGgrB,EAAE9qB,EAAI,GAAI,gBAChCF,EAAIwrB,EAAMxrB,EAAGwkB,EAAGjB,EAAGkI,EAAGT,EAAE9qB,EAAI,GAAI,cAChCurB,EAAID,EAAMC,EAAGzrB,EAAGwkB,EAAGjB,EAAGyH,EAAE9qB,EAAI,GAAI,GAAI,YACpCqjB,EAAIiI,EAAMjI,EAAGkI,EAAGzrB,EAAGwkB,EAAGwG,EAAE9qB,EAAI,GAAI,gBAChCskB,EAAIgH,EAAMhH,EAAGjB,EAAGkI,EAAGzrB,EAAGgrB,EAAE9qB,EAAI,GAAI,cAChCF,EAAIwrB,EAAMxrB,EAAGwkB,EAAGjB,EAAGkI,EAAGT,EAAE9qB,EAAI,GAAI,EAAG,YACnCurB,EAAID,EAAMC,EAAGzrB,EAAGwkB,EAAGjB,EAAGyH,EAAE9qB,EAAI,GAAI,gBAChCqjB,EAAIiI,EAAMjI,EAAGkI,EAAGzrB,EAAGwkB,EAAGwG,EAAE9qB,EAAI,IAAK,WACjCskB,EAAIgH,EAAMhH,EAAGjB,EAAGkI,EAAGzrB,EAAGgrB,EAAE9qB,EAAI,IAAK,gBACjCF,EAAIwrB,EAAMxrB,EAAGwkB,EAAGjB,EAAGkI,EAAGT,EAAE9qB,EAAI,IAAK,EAAG,YACpCurB,EAAID,EAAMC,EAAGzrB,EAAGwkB,EAAGjB,EAAGyH,EAAE9qB,EAAI,IAAK,cACjCqjB,EAAIiI,EAAMjI,EAAGkI,EAAGzrB,EAAGwkB,EAAGwG,EAAE9qB,EAAI,IAAK,gBACjCskB,EAAIgH,EAAMhH,EAAGjB,EAAGkI,EAAGzrB,EAAGgrB,EAAE9qB,EAAI,IAAK,GAAI,YAErCF,EAAI0rB,EAAM1rB,EAAGwkB,EAAGjB,EAAGkI,EAAGT,EAAE9qB,EAAI,GAAI,cAChCurB,EAAIC,EAAMD,EAAGzrB,EAAGwkB,EAAGjB,EAAGyH,EAAE9qB,EAAI,GAAI,eAChCqjB,EAAImI,EAAMnI,EAAGkI,EAAGzrB,EAAGwkB,EAAGwG,EAAE9qB,EAAI,IAAK,GAAI,WACrCskB,EAAIkH,EAAMlH,EAAGjB,EAAGkI,EAAGzrB,EAAGgrB,EAAE9qB,GAAI,eAC5BF,EAAI0rB,EAAM1rB,EAAGwkB,EAAGjB,EAAGkI,EAAGT,EAAE9qB,EAAI,GAAI,cAChCurB,EAAIC,EAAMD,EAAGzrB,EAAGwkB,EAAGjB,EAAGyH,EAAE9qB,EAAI,IAAK,EAAG,UACpCqjB,EAAImI,EAAMnI,EAAGkI,EAAGzrB,EAAGwkB,EAAGwG,EAAE9qB,EAAI,IAAK,eACjCskB,EAAIkH,EAAMlH,EAAGjB,EAAGkI,EAAGzrB,EAAGgrB,EAAE9qB,EAAI,GAAI,eAChCF,EAAI0rB,EAAM1rB,EAAGwkB,EAAGjB,EAAGkI,EAAGT,EAAE9qB,EAAI,GAAI,EAAG,WACnCurB,EAAIC,EAAMD,EAAGzrB,EAAGwkB,EAAGjB,EAAGyH,EAAE9qB,EAAI,IAAK,eACjCqjB,EAAImI,EAAMnI,EAAGkI,EAAGzrB,EAAGwkB,EAAGwG,EAAE9qB,EAAI,GAAI,eAChCskB,EAAIkH,EAAMlH,EAAGjB,EAAGkI,EAAGzrB,EAAGgrB,EAAE9qB,EAAI,GAAI,GAAI,YACpCF,EAAI0rB,EAAM1rB,EAAGwkB,EAAGjB,EAAGkI,EAAGT,EAAE9qB,EAAI,IAAK,eACjCurB,EAAIC,EAAMD,EAAGzrB,EAAGwkB,EAAGjB,EAAGyH,EAAE9qB,EAAI,GAAI,aAChCqjB,EAAImI,EAAMnI,EAAGkI,EAAGzrB,EAAGwkB,EAAGwG,EAAE9qB,EAAI,GAAI,GAAI,YACpCskB,EAAIkH,EAAMlH,EAAGjB,EAAGkI,EAAGzrB,EAAGgrB,EAAE9qB,EAAI,IAAK,gBAEjCF,EAAI2rB,EAAM3rB,EAAGwkB,EAAGjB,EAAGkI,EAAGT,EAAE9qB,EAAI,GAAI,WAChCurB,EAAIE,EAAMF,EAAGzrB,EAAGwkB,EAAGjB,EAAGyH,EAAE9qB,EAAI,GAAI,gBAChCqjB,EAAIoI,EAAMpI,EAAGkI,EAAGzrB,EAAGwkB,EAAGwG,EAAE9qB,EAAI,IAAK,GAAI,YACrCskB,EAAImH,EAAMnH,EAAGjB,EAAGkI,EAAGzrB,EAAGgrB,EAAE9qB,EAAI,IAAK,cACjCF,EAAI2rB,EAAM3rB,EAAGwkB,EAAGjB,EAAGkI,EAAGT,EAAE9qB,EAAI,GAAI,eAChCurB,EAAIE,EAAMF,EAAGzrB,EAAGwkB,EAAGjB,EAAGyH,EAAE9qB,EAAI,GAAI,GAAI,YACpCqjB,EAAIoI,EAAMpI,EAAGkI,EAAGzrB,EAAGwkB,EAAGwG,EAAE9qB,EAAI,GAAI,eAChCskB,EAAImH,EAAMnH,EAAGjB,EAAGkI,EAAGzrB,EAAGgrB,EAAE9qB,EAAI,IAAK,gBACjCF,EAAI2rB,EAAM3rB,EAAGwkB,EAAGjB,EAAGkI,EAAGT,EAAE9qB,EAAI,IAAK,EAAG,WACpCurB,EAAIE,EAAMF,EAAGzrB,EAAGwkB,EAAGjB,EAAGyH,EAAE9qB,GAAI,eAC5BqjB,EAAIoI,EAAMpI,EAAGkI,EAAGzrB,EAAGwkB,EAAGwG,EAAE9qB,EAAI,GAAI,eAChCskB,EAAImH,EAAMnH,EAAGjB,EAAGkI,EAAGzrB,EAAGgrB,EAAE9qB,EAAI,GAAI,GAAI,UACpCF,EAAI2rB,EAAM3rB,EAAGwkB,EAAGjB,EAAGkI,EAAGT,EAAE9qB,EAAI,GAAI,cAChCurB,EAAIE,EAAMF,EAAGzrB,EAAGwkB,EAAGjB,EAAGyH,EAAE9qB,EAAI,IAAK,eACjCqjB,EAAIoI,EAAMpI,EAAGkI,EAAGzrB,EAAGwkB,EAAGwG,EAAE9qB,EAAI,IAAK,GAAI,WACrCskB,EAAImH,EAAMnH,EAAGjB,EAAGkI,EAAGzrB,EAAGgrB,EAAE9qB,EAAI,GAAI,eAEhCF,EAAI4rB,EAAM5rB,EAAGwkB,EAAGjB,EAAGkI,EAAGT,EAAE9qB,GAAI,cAC5BurB,EAAIG,EAAMH,EAAGzrB,EAAGwkB,EAAGjB,EAAGyH,EAAE9qB,EAAI,GAAI,GAAI,YACpCqjB,EAAIqI,EAAMrI,EAAGkI,EAAGzrB,EAAGwkB,EAAGwG,EAAE9qB,EAAI,IAAK,gBACjCskB,EAAIoH,EAAMpH,EAAGjB,EAAGkI,EAAGzrB,EAAGgrB,EAAE9qB,EAAI,GAAI,cAChCF,EAAI4rB,EAAM5rB,EAAGwkB,EAAGjB,EAAGkI,EAAGT,EAAE9qB,EAAI,IAAK,EAAG,YACpCurB,EAAIG,EAAMH,EAAGzrB,EAAGwkB,EAAGjB,EAAGyH,EAAE9qB,EAAI,GAAI,gBAChCqjB,EAAIqI,EAAMrI,EAAGkI,EAAGzrB,EAAGwkB,EAAGwG,EAAE9qB,EAAI,IAAK,aACjCskB,EAAIoH,EAAMpH,EAAGjB,EAAGkI,EAAGzrB,EAAGgrB,EAAE9qB,EAAI,GAAI,gBAChCF,EAAI4rB,EAAM5rB,EAAGwkB,EAAGjB,EAAGkI,EAAGT,EAAE9qB,EAAI,GAAI,EAAG,YACnCurB,EAAIG,EAAMH,EAAGzrB,EAAGwkB,EAAGjB,EAAGyH,EAAE9qB,EAAI,IAAK,cACjCqjB,EAAIqI,EAAMrI,EAAGkI,EAAGzrB,EAAGwkB,EAAGwG,EAAE9qB,EAAI,GAAI,gBAChCskB,EAAIoH,EAAMpH,EAAGjB,EAAGkI,EAAGzrB,EAAGgrB,EAAE9qB,EAAI,IAAK,GAAI,YACrCF,EAAI4rB,EAAM5rB,EAAGwkB,EAAGjB,EAAGkI,EAAGT,EAAE9qB,EAAI,GAAI,cAChCurB,EAAIG,EAAMH,EAAGzrB,EAAGwkB,EAAGjB,EAAGyH,EAAE9qB,EAAI,IAAK,gBACjCqjB,EAAIqI,EAAMrI,EAAGkI,EAAGzrB,EAAGwkB,EAAGwG,EAAE9qB,EAAI,GAAI,GAAI,WACpCskB,EAAIoH,EAAMpH,EAAGjB,EAAGkI,EAAGzrB,EAAGgrB,EAAE9qB,EAAI,GAAI,eAEhCF,EAAI+qB,EAAQ/qB,EAAG8rB,GACftH,EAAIuG,EAAQvG,EAAGuH,GACfxI,EAAIwH,EAAQxH,EAAGyI,GACfP,EAAIV,EAAQU,EAAGQ,EAEjB,QAAQjsB,EAAGwkB,EAAGjB,EAAGkI,GAMnB,QAASS,GAAUjH,GACjB,GAAI/kB,GACAilB,EAAS,GACTgH,EAA0B,GAAflH,EAAM1kB,MACrB,KAAKL,EAAI,EAAGA,EAAIisB,EAAUjsB,GAAK,EAC7BilB,GAAUC,OAAOgH,aAAcnH,EAAM/kB,GAAK,KAAQA,EAAI,GAAO,IAE/D,OAAOilB,GAOT,QAASkH,GAAUpH,GACjB,GAAI/kB,GACAilB,IAEJ,KADAA,GAAQF,EAAM1kB,QAAU,GAAK,GAAKiO,OAC7BtO,EAAI,EAAGA,EAAIilB,EAAO5kB,OAAQL,GAAK,EAClCilB,EAAOjlB,GAAK,CAEd,IAAIosB,GAAyB,EAAfrH,EAAM1kB,MACpB,KAAKL,EAAI,EAAGA,EAAIosB,EAASpsB,GAAK,EAC5BilB,EAAOjlB,GAAK,KAAiC,IAA1B+kB,EAAMsH,WAAWrsB,EAAI,KAAeA,EAAI,EAE7D,OAAOilB,GAMT,QAASqH,GAAQ3sB,GACf,MAAOqsB,GAAUL,EAAQQ,EAAUxsB,GAAe,EAAXA,EAAEU,SAM3C,QAASksB,GAAYpgB,EAAKvK,GACxB,GAAI5B,GAIAygB,EAHA+L,EAAOL,EAAUhgB,GACjBsgB,KACAC,IAMJ,KAJAD,EAAK,IAAMC,EAAK,IAAMpe,OAClBke,EAAKnsB,OAAS,KAChBmsB,EAAOb,EAAQa,EAAmB,EAAbrgB,EAAI9L,SAEtBL,EAAI,EAAGA,EAAI,GAAIA,GAAK,EACvBysB,EAAKzsB,GAAe,UAAVwsB,EAAKxsB,GACf0sB,EAAK1sB,GAAe,WAAVwsB,EAAKxsB,EAGjB,OADAygB,GAAOkL,EAAQc,EAAKrS,OAAO+R,EAAUvqB,IAAQ,IAAoB,EAAdA,EAAKvB,QACjD2rB,EAAUL,EAAQe,EAAKtS,OAAOqG,GAAO,MAM9C,QAASkM,GAAS5H,GAChB,GAEI+F,GACA9qB,EAHA4sB,EAAS,mBACT3H,EAAS,EAGb,KAAKjlB,EAAI,EAAGA,EAAI+kB,EAAM1kB,OAAQL,GAAK,EACjC8qB,EAAI/F,EAAMsH,WAAWrsB,GACrBilB,GAAU2H,EAAOC,OAAQ/B,IAAM,EAAK,IAAQ8B,EAAOC,OAAW,GAAJ/B,EAE5D,OAAO7F,GAMT,QAAS6H,GAAa/H,GACpB,MAAOgI,UAAS1Z,mBAAmB0R,IAMrC,QAASiI,GAAOrtB,GACd,MAAO2sB,GAAQQ,EAAantB,IAE9B,QAASstB,GAAOttB,GACd,MAAOgtB,GAASK,EAAOrtB,IAEzB,QAASutB,GAAW3G,EAAGgF,GACrB,MAAOgB,GAAYO,EAAavG,GAAIuG,EAAavB,IAEnD,QAAS4B,GAAW5G,EAAGgF,GACrB,MAAOoB,GAASO,EAAW3G,EAAGgF,IAGhC,QAASxhB,GAAIqjB,EAAQjhB,EAAKkhB,GACxB,MAAKlhB,GAMAkhB,EAGEH,EAAW/gB,EAAKihB,GAFdD,EAAWhhB,EAAKihB,GANlBC,EAGEL,EAAOI,GAFLH,EAAOG,GAUpBtuB,EAAOD,QAAUkL,YAEN,EAAE,EAAE,EAAE,EAAE,IAAI","file":"raven.min.js"} \ No newline at end of file diff --git a/dist/angular,console,require/raven.js b/dist/angular,console,require/raven.js index 7c8408d76697..89d5288859d7 100644 --- a/dist/angular,console,require/raven.js +++ b/dist/angular,console,require/raven.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.22.2 (1b6187b) | github.com/getsentry/raven-js */ +/*! Raven.js 3.24.2 (540f32b) | github.com/getsentry/raven-js */ /* * Includes TraceKit @@ -10,3250 +10,4024 @@ * */ -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : - typeof define === 'function' && define.amd ? define(factory) : - (global.Raven = factory()); -}(this, (function () { 'use strict'; +(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.Raven = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o href parsing trick because React Native and other -// environments where DOM might not be available - - -function parseUrl$1(url) { - if (typeof url !== 'string') return {}; - var match = url.match(/^(([^:\/?#]+):)?(\/\/([^\/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?$/); // coerce to undefined values to empty string so we don't get 'undefined' - - var query = match[6] || ''; - var fragment = match[8] || ''; - return { - protocol: match[2], - host: match[4], - path: match[5], - relative: match[5] + query + fragment // everything minus origin - +// First, check for JSON support +// If there is no JSON, we no-op the core features of Raven +// since JSON is required to encode the payload +function Raven() { + this._hasJSON = !!(typeof JSON === 'object' && JSON.stringify); + // Raven can run in contexts where there's no document (react-native) + this._hasDocument = !isUndefined(_document); + this._hasNavigator = !isUndefined(_navigator); + this._lastCapturedException = null; + this._lastData = null; + this._lastEventId = null; + this._globalServer = null; + this._globalKey = null; + this._globalProject = null; + this._globalContext = {}; + this._globalOptions = { + // SENTRY_RELEASE can be injected by https://github.com/getsentry/sentry-webpack-plugin + release: _window.SENTRY_RELEASE && _window.SENTRY_RELEASE.id, + logger: 'javascript', + ignoreErrors: [], + ignoreUrls: [], + whitelistUrls: [], + includePaths: [], + headers: null, + collectWindowErrors: true, + captureUnhandledRejections: true, + maxMessageLength: 0, + // By default, truncates URL values to 250 chars + maxUrlLength: 250, + stackTraceLimit: 50, + autoBreadcrumbs: true, + instrument: true, + sampleRate: 1, + sanitizeKeys: [] }; -} - -function uuid4$1() { - var crypto = _window$3.crypto || _window$3.msCrypto; - - if (!isUndefined$1(crypto) && crypto.getRandomValues) { - // Use window.crypto API if available - // eslint-disable-next-line no-undef - var arr = new Uint16Array(8); - crypto.getRandomValues(arr); // set 4 in byte 7 - - arr[3] = arr[3] & 0xfff | 0x4000; // set 2 most significant bits of byte 9 to '10' - - arr[4] = arr[4] & 0x3fff | 0x8000; - - var pad = function pad(num) { - var v = num.toString(16); - - while (v.length < 4) { - v = '0' + v; - } - - return v; - }; + this._fetchDefaults = { + method: 'POST', + keepalive: true, + // Despite all stars in the sky saying that Edge supports old draft syntax, aka 'never', 'always', 'origin' and 'default + // https://caniuse.com/#feat=referrer-policy + // It doesn't. And it throw exception instead of ignoring this parameter... + // REF: https://github.com/getsentry/raven-js/issues/1233 + referrerPolicy: supportsReferrerPolicy() ? 'origin' : '' + }; + this._ignoreOnError = 0; + this._isRavenInstalled = false; + this._originalErrorStackTraceLimit = Error.stackTraceLimit; + // capture references to window.console *and* all its methods first + // before the console plugin has a chance to monkey patch + this._originalConsole = _window.console || {}; + this._originalConsoleMethods = {}; + this._plugins = []; + this._startTime = now(); + this._wrappedBuiltIns = []; + this._breadcrumbs = []; + this._lastCapturedEvent = null; + this._keypressTimeout; + this._location = _window.location; + this._lastHref = this._location && this._location.href; + this._resetBackoff(); - return pad(arr[0]) + pad(arr[1]) + pad(arr[2]) + pad(arr[3]) + pad(arr[4]) + pad(arr[5]) + pad(arr[6]) + pad(arr[7]); - } else { - // http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/2117523#2117523 - return 'xxxxxxxxxxxx4xxxyxxxxxxxxxxxxxxx'.replace(/[xy]/g, function (c) { - var r = Math.random() * 16 | 0, - v = c === 'x' ? r : r & 0x3 | 0x8; - return v.toString(16); - }); + // eslint-disable-next-line guard-for-in + for (var method in this._originalConsole) { + this._originalConsoleMethods[method] = this._originalConsole[method]; } } -/** - * Given a child DOM element, returns a query-selector statement describing that - * and its ancestors - * e.g. [HTMLElement] => body > div > input#foo.btn[name=baz] - * @param elem - * @returns {string} - */ - -function htmlTreeAsString$1(elem) { - /* eslint no-extra-parens:0*/ - var MAX_TRAVERSE_HEIGHT = 5, - MAX_OUTPUT_LEN = 80, - out = [], - height = 0, - len = 0, - separator = ' > ', - sepLength = separator.length, - nextStr; +/* + * The core Raven singleton + * + * @this {Raven} + */ - while (elem && height++ < MAX_TRAVERSE_HEIGHT) { - nextStr = htmlElementAsString(elem); // bail out if - // - nextStr is the 'html' element - // - the length of the string that would be created exceeds MAX_OUTPUT_LEN - // (ignore this limit if we are on the first iteration) +Raven.prototype = { + // Hardcode version string so that raven source can be loaded directly via + // webpack (using a build step causes webpack #1617). Grunt verifies that + // this value matches package.json during build. + // See: https://github.com/getsentry/raven-js/issues/465 + VERSION: '3.24.2', - if (nextStr === 'html' || height > 1 && len + out.length * sepLength + nextStr.length >= MAX_OUTPUT_LEN) { - break; - } + debug: false, - out.push(nextStr); - len += nextStr.length; - elem = elem.parentNode; - } + TraceKit: TraceKit, // alias to TraceKit - return out.reverse().join(separator); -} -/** - * Returns a simple, query-selector representation of a DOM element - * e.g. [HTMLElement] => input#foo.btn[name=baz] - * @param HTMLElement - * @returns {string} - */ + /* + * Configure Raven with a DSN and extra options + * + * @param {string} dsn The public Sentry DSN + * @param {object} options Set of global options [optional] + * @return {Raven} + */ + config: function(dsn, options) { + var self = this; + if (self._globalServer) { + this._logDebug('error', 'Error: Raven has already been configured'); + return self; + } + if (!dsn) return self; -function htmlElementAsString(elem) { - var out = [], - className, - classes, - key, - attr, - i; + var globalOptions = self._globalOptions; - if (!elem || !elem.tagName) { - return ''; - } + // merge in options + if (options) { + each(options, function(key, value) { + // tags and extra are special and need to be put into context + if (key === 'tags' || key === 'extra' || key === 'user') { + self._globalContext[key] = value; + } else { + globalOptions[key] = value; + } + }); + } - out.push(elem.tagName.toLowerCase()); + self.setDSN(dsn); - if (elem.id) { - out.push('#' + elem.id); - } + // "Script error." is hard coded into browsers for errors that it can't read. + // this is the result of a script being pulled in from an external domain and CORS. + globalOptions.ignoreErrors.push(/^Script error\.?$/); + globalOptions.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/); - className = elem.className; + // join regexp rules into one big rule + globalOptions.ignoreErrors = joinRegExp(globalOptions.ignoreErrors); + globalOptions.ignoreUrls = globalOptions.ignoreUrls.length + ? joinRegExp(globalOptions.ignoreUrls) + : false; + globalOptions.whitelistUrls = globalOptions.whitelistUrls.length + ? joinRegExp(globalOptions.whitelistUrls) + : false; + globalOptions.includePaths = joinRegExp(globalOptions.includePaths); + globalOptions.maxBreadcrumbs = Math.max( + 0, + Math.min(globalOptions.maxBreadcrumbs || 100, 100) + ); // default and hard limit is 100 - if (className && isString$1(className)) { - classes = className.split(/\s+/); + var autoBreadcrumbDefaults = { + xhr: true, + console: true, + dom: true, + location: true, + sentry: true + }; - for (i = 0; i < classes.length; i++) { - out.push('.' + classes[i]); + var autoBreadcrumbs = globalOptions.autoBreadcrumbs; + if ({}.toString.call(autoBreadcrumbs) === '[object Object]') { + autoBreadcrumbs = objectMerge(autoBreadcrumbDefaults, autoBreadcrumbs); + } else if (autoBreadcrumbs !== false) { + autoBreadcrumbs = autoBreadcrumbDefaults; } - } - - var attrWhitelist = ['type', 'name', 'title', 'alt']; + globalOptions.autoBreadcrumbs = autoBreadcrumbs; - for (i = 0; i < attrWhitelist.length; i++) { - key = attrWhitelist[i]; - attr = elem.getAttribute(key); + var instrumentDefaults = { + tryCatch: true + }; - if (attr) { - out.push('[' + key + '="' + attr + '"]'); + var instrument = globalOptions.instrument; + if ({}.toString.call(instrument) === '[object Object]') { + instrument = objectMerge(instrumentDefaults, instrument); + } else if (instrument !== false) { + instrument = instrumentDefaults; } - } + globalOptions.instrument = instrument; - return out.join(''); -} -/** - * Returns true if either a OR b is truthy, but not both - */ + TraceKit.collectWindowErrors = !!globalOptions.collectWindowErrors; + // return for chaining + return self; + }, -function isOnlyOneTruthy(a, b) { - return !!(!!a ^ !!b); -} -/** - * Returns true if both parameters are undefined - */ + /* + * Installs a global window.onerror error handler + * to capture and report uncaught exceptions. + * At this point, install() is required to be called due + * to the way TraceKit is set up. + * + * @return {Raven} + */ + install: function() { + var self = this; + if (self.isSetup() && !self._isRavenInstalled) { + TraceKit.report.subscribe(function() { + self._handleOnErrorStackInfo.apply(self, arguments); + }); + if (self._globalOptions.captureUnhandledRejections) { + self._attachPromiseRejectionHandler(); + } -function isBothUndefined(a, b) { - return isUndefined$1(a) && isUndefined$1(b); -} -/** - * Returns true if the two input exception interfaces have the same content - */ + self._patchFunctionToString(); + if (self._globalOptions.instrument && self._globalOptions.instrument.tryCatch) { + self._instrumentTryCatch(); + } -function isSameException$1(ex1, ex2) { - if (isOnlyOneTruthy(ex1, ex2)) return false; - ex1 = ex1.values[0]; - ex2 = ex2.values[0]; - if (ex1.type !== ex2.type || ex1.value !== ex2.value) return false; // in case both stacktraces are undefined, we can't decide so default to false + if (self._globalOptions.autoBreadcrumbs) self._instrumentBreadcrumbs(); - if (isBothUndefined(ex1.stacktrace, ex2.stacktrace)) return false; - return isSameStacktrace$1(ex1.stacktrace, ex2.stacktrace); -} -/** - * Returns true if the two input stack trace interfaces have the same content - */ + // Install all of the plugins + self._drainPlugins(); + self._isRavenInstalled = true; + } -function isSameStacktrace$1(stack1, stack2) { - if (isOnlyOneTruthy(stack1, stack2)) return false; - var frames1 = stack1.frames; - var frames2 = stack2.frames; // Exit early if frame count differs + Error.stackTraceLimit = self._globalOptions.stackTraceLimit; + return this; + }, - if (frames1.length !== frames2.length) return false; // Iterate through every frame; bail out if anything differs + /* + * Set the DSN (can be called multiple time unlike config) + * + * @param {string} dsn The public Sentry DSN + */ + setDSN: function(dsn) { + var self = this, + uri = self._parseDSN(dsn), + lastSlash = uri.path.lastIndexOf('/'), + path = uri.path.substr(1, lastSlash); - var a, b; + self._dsn = dsn; + self._globalKey = uri.user; + self._globalSecret = uri.pass && uri.pass.substr(1); + self._globalProject = uri.path.substr(lastSlash + 1); - for (var i = 0; i < frames1.length; i++) { - a = frames1[i]; - b = frames2[i]; - if (a.filename !== b.filename || a.lineno !== b.lineno || a.colno !== b.colno || a['function'] !== b['function']) return false; - } + self._globalServer = self._getGlobalServer(uri); - return true; -} -/** - * Polyfill a method - * @param obj object e.g. `document` - * @param name method name present on object e.g. `addEventListener` - * @param replacement replacement function - * @param track {optional} record instrumentation to an array - */ + self._globalEndpoint = + self._globalServer + '/' + path + 'api/' + self._globalProject + '/store/'; + // Reset backoff state since we may be pointing at a + // new project/server + this._resetBackoff(); + }, -function fill$1(obj, name, replacement, track) { - var orig = obj[name]; - obj[name] = replacement(orig); - obj[name].__raven__ = true; - obj[name].__orig__ = orig; + /* + * Wrap code within a context so Raven can capture errors + * reliably across domains that is executed immediately. + * + * @param {object} options A specific set of options for this context [optional] + * @param {function} func The callback to be immediately executed within the context + * @param {array} args An array of arguments to be called with the callback [optional] + */ + context: function(options, func, args) { + if (isFunction(options)) { + args = func || []; + func = options; + options = undefined; + } - if (track) { - track.push([obj, name, orig]); - } -} -/** - * Join values in array - * @param input array of values to be joined together - * @param delimiter string to be placed in-between values - * @returns {string} - */ + return this.wrap(options, func).apply(this, args); + }, + /* + * Wrap code within a context and returns back a new function to be executed + * + * @param {object} options A specific set of options for this context [optional] + * @param {function} func The function to be wrapped in a new context + * @param {function} func A function to call before the try/catch wrapper [optional, private] + * @return {function} The newly wrapped functions with a context + */ + wrap: function(options, func, _before) { + var self = this; + // 1 argument has been passed, and it's not a function + // so just return it + if (isUndefined(func) && !isFunction(options)) { + return options; + } -function safeJoin(input, delimiter) { - if (!isArray$1(input)) return ''; - var output = []; + // options is optional + if (isFunction(options)) { + func = options; + options = undefined; + } - for (var i = 0; i < input.length; i++) { + // At this point, we've passed along 2 arguments, and the second one + // is not a function either, so we'll just return the second argument. + if (!isFunction(func)) { + return func; + } + + // We don't wanna wrap it twice! try { - output.push(String(input[i])); + if (func.__raven__) { + return func; + } + + // If this has already been wrapped in the past, return that + if (func.__raven_wrapper__) { + return func.__raven_wrapper__; + } } catch (e) { - output.push('[value cannot be serialized]'); + // Just accessing custom props in some Selenium environments + // can cause a "Permission denied" exception (see raven-js#495). + // Bail on wrapping and return the function as-is (defers to window.onerror). + return func; } - } - - return output.join(delimiter); -} -var utils = { - isObject: isObject$1, - isError: isError$1, - isErrorEvent: isErrorEvent$1, - isUndefined: isUndefined$1, - isFunction: isFunction$1, - isPlainObject: isPlainObject, - isString: isString$1, - isArray: isArray$1, - isEmptyObject: isEmptyObject$1, - supportsErrorEvent: supportsErrorEvent, - supportsFetch: supportsFetch$1, - wrappedCallback: wrappedCallback, - each: each$1, - objectMerge: objectMerge$1, - truncate: truncate$1, - objectFrozen: objectFrozen$1, - hasKey: hasKey$1, - joinRegExp: joinRegExp$1, - urlencode: urlencode$1, - uuid4: uuid4$1, - htmlTreeAsString: htmlTreeAsString$1, - htmlElementAsString: htmlElementAsString, - isSameException: isSameException$1, - isSameStacktrace: isSameStacktrace$1, - parseUrl: parseUrl$1, - fill: fill$1, - safeJoin: safeJoin -}; + function wrapped() { + var args = [], + i = arguments.length, + deep = !options || (options && options.deep !== false); -/* - TraceKit - Cross brower stack traces + if (_before && isFunction(_before)) { + _before.apply(this, arguments); + } - This was originally forked from github.com/occ/TraceKit, but has since been - largely re-written and is now maintained as part of raven-js. Tests for - this are in test/vendor. + // Recursively wrap all of a function's arguments that are + // functions themselves. + while (i--) args[i] = deep ? self.wrap(options, arguments[i]) : arguments[i]; - MIT license -*/ + try { + // Attempt to invoke user-land function + // NOTE: If you are a Sentry user, and you are seeing this stack frame, it + // means Raven caught an error invoking your application code. This is + // expected behavior and NOT indicative of a bug with Raven.js. + return func.apply(this, args); + } catch (e) { + self._ignoreNextOnError(); + self.captureException(e, options); + throw e; + } + } -var TraceKit = { - collectWindowErrors: true, - debug: false -}; // This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) + // copy over properties of the old function + for (var property in func) { + if (hasKey(func, property)) { + wrapped[property] = func[property]; + } + } + wrapped.prototype = func.prototype; -var _window$2 = typeof window !== 'undefined' ? window : typeof commonjsGlobal !== 'undefined' ? commonjsGlobal : typeof self !== 'undefined' ? self : {}; // global reference to slice + func.__raven_wrapper__ = wrapped; + // Signal that this function has been wrapped/filled already + // for both debugging and to prevent it to being wrapped/filled twice + wrapped.__raven__ = true; + wrapped.__orig__ = func; + return wrapped; + }, -var _slice = [].slice; -var UNKNOWN_FUNCTION = '?'; // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error#Error_types + /** + * Uninstalls the global error handler. + * + * @return {Raven} + */ + uninstall: function() { + TraceKit.report.uninstall(); -var ERROR_TYPES_RE = /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/; + this._detachPromiseRejectionHandler(); + this._unpatchFunctionToString(); + this._restoreBuiltIns(); + this._restoreConsole(); -function getLocationHref() { - if (typeof document === 'undefined' || document.location == null) return ''; - return document.location.href; -} -/** - * TraceKit.report: cross-browser processing of unhandled exceptions - * - * Syntax: - * TraceKit.report.subscribe(function(stackInfo) { ... }) - * TraceKit.report.unsubscribe(function(stackInfo) { ... }) - * TraceKit.report(exception) - * try { ...code... } catch(ex) { TraceKit.report(ex); } - * - * Supports: - * - Firefox: full stack trace with line numbers, plus column number - * on top frame; column number is not guaranteed - * - Opera: full stack trace with line and column numbers - * - Chrome: full stack trace with line and column numbers - * - Safari: line and column number for the top frame only; some frames - * may be missing, and column number is not guaranteed - * - IE: line and column number for the top frame only; some frames - * may be missing, and column number is not guaranteed - * - * In theory, TraceKit should work on all of the following versions: - * - IE5.5+ (only 8.0 tested) - * - Firefox 0.9+ (only 3.5+ tested) - * - Opera 7+ (only 10.50 tested; versions 9 and earlier may require - * Exceptions Have Stacktrace to be enabled in opera:config) - * - Safari 3+ (only 4+ tested) - * - Chrome 1+ (only 5+ tested) - * - Konqueror 3.5+ (untested) - * - * Requires TraceKit.computeStackTrace. - * - * Tries to catch all unhandled exceptions and report them to the - * subscribed handlers. Please note that TraceKit.report will rethrow the - * exception. This is REQUIRED in order to get a useful stack trace in IE. - * If the exception does not reach the top of the browser, you will only - * get a stack trace from the point where TraceKit.report was called. - * - * Handlers receive a stackInfo object as described in the - * TraceKit.computeStackTrace docs. - */ + Error.stackTraceLimit = this._originalErrorStackTraceLimit; + this._isRavenInstalled = false; + return this; + }, -TraceKit.report = function reportModuleWrapper() { - var handlers = [], - lastArgs = null, - lastException = null, - lastExceptionStack = null; /** - * Add a crash handler. - * @param {Function} handler - */ + * Callback used for `unhandledrejection` event + * + * @param {PromiseRejectionEvent} event An object containing + * promise: the Promise that was rejected + * reason: the value with which the Promise was rejected + * @return void + */ + _promiseRejectionHandler: function(event) { + this._logDebug('debug', 'Raven caught unhandled promise rejection:', event); + this.captureException(event.reason, { + extra: { + unhandledPromiseRejection: true + } + }); + }, - function subscribe(handler) { - installGlobalHandler(); - handlers.push(handler); - } /** - * Remove a crash handler. - * @param {Function} handler - */ + * Installs the global promise rejection handler. + * + * @return {raven} + */ + _attachPromiseRejectionHandler: function() { + this._promiseRejectionHandler = this._promiseRejectionHandler.bind(this); + _window.addEventListener && + _window.addEventListener('unhandledrejection', this._promiseRejectionHandler); + return this; + }, + /** + * Uninstalls the global promise rejection handler. + * + * @return {raven} + */ + _detachPromiseRejectionHandler: function() { + _window.removeEventListener && + _window.removeEventListener('unhandledrejection', this._promiseRejectionHandler); + return this; + }, - function unsubscribe(handler) { - for (var i = handlers.length - 1; i >= 0; --i) { - if (handlers[i] === handler) { - handlers.splice(i, 1); + /** + * Manually capture an exception and send it over to Sentry + * + * @param {error} ex An exception to be logged + * @param {object} options A specific set of options for this error [optional] + * @return {Raven} + */ + captureException: function(ex, options) { + options = objectMerge({trimHeadFrames: 0}, options ? options : {}); + + if (isErrorEvent(ex) && ex.error) { + // If it is an ErrorEvent with `error` property, extract it to get actual Error + ex = ex.error; + } else if (isError(ex)) { + // we have a real Error object + ex = ex; + } else if (isPlainObject(ex)) { + // If it is plain Object, serialize it manually and extract options + // This will allow us to group events based on top-level keys + // which is much better than creating new group when any key/value change + options = this._getCaptureExceptionOptionsFromPlainObject(options, ex); + ex = new Error(options.message); + } else { + // If none of previous checks were valid, then it means that + // it's not a plain Object + // it's not a valid ErrorEvent (one with an error property) + // it's not an Error + // So bail out and capture it as a simple message: + return this.captureMessage( + ex, + objectMerge(options, { + stacktrace: true, // if we fall back to captureMessage, default to attempting a new trace + trimHeadFrames: options.trimHeadFrames + 1 + }) + ); + } + + // Store the raw exception object for potential debugging and introspection + this._lastCapturedException = ex; + + // TraceKit.report will re-raise any exception passed to it, + // which means you have to wrap it in try/catch. Instead, we + // can wrap it here and only re-raise if TraceKit.report + // raises an exception different from the one we asked to + // report on. + try { + var stack = TraceKit.computeStackTrace(ex); + this._handleStackInfo(stack, options); + } catch (ex1) { + if (ex !== ex1) { + throw ex1; } } - } - /** - * Remove all crash handlers. - */ - - function unsubscribeAll() { - uninstallGlobalHandler(); - handlers = []; - } - /** - * Dispatch stack information to all handlers. - * @param {Object.} stack - */ + return this; + }, + _getCaptureExceptionOptionsFromPlainObject: function(currentOptions, ex) { + var exKeys = Object.keys(ex).sort(); + var options = objectMerge(currentOptions, { + message: + 'Non-Error exception captured with keys: ' + serializeKeysForMessage(exKeys), + fingerprint: [md5(exKeys)], + extra: currentOptions.extra || {} + }); + options.extra.__serialized__ = serializeException(ex); - function notifyHandlers(stack, isWindowError) { - var exception = null; + return options; + }, - if (isWindowError && !TraceKit.collectWindowErrors) { + /* + * Manually send a message to Sentry + * + * @param {string} msg A plain message to be captured in Sentry + * @param {object} options A specific set of options for this message [optional] + * @return {Raven} + */ + captureMessage: function(msg, options) { + // config() automagically converts ignoreErrors from a list to a RegExp so we need to test for an + // early call; we'll error on the side of logging anything called before configuration since it's + // probably something you should see: + if ( + !!this._globalOptions.ignoreErrors.test && + this._globalOptions.ignoreErrors.test(msg) + ) { return; } - for (var i in handlers) { - if (handlers.hasOwnProperty(i)) { - try { - handlers[i].apply(null, [stack].concat(_slice.call(arguments, 2))); - } catch (inner) { - exception = inner; - } - } - } + options = options || {}; + msg = msg + ''; // Make sure it's actually a string - if (exception) { - throw exception; - } - } + var data = objectMerge( + { + message: msg + }, + options + ); - var _oldOnerrorHandler, _onErrorHandlerInstalled; - /** - * Ensures all global unhandled exceptions are recorded. - * Supported by Gecko and IE. - * @param {string} msg Error message. - * @param {string} url URL of script that generated the exception. - * @param {(number|string)} lineNo The line number at which the error - * occurred. - * @param {?(number|string)} colNo The column number at which the error - * occurred. - * @param {?Error} ex The actual Error object. - */ - - - function traceKitWindowOnError(msg, url, lineNo, colNo, ex) { - var stack = null; // If 'ex' is ErrorEvent, get real Error from inside - - var exception = utils.isErrorEvent(ex) ? ex.error : ex; // If 'msg' is ErrorEvent, get real message from inside + var ex; + // Generate a "synthetic" stack trace from this point. + // NOTE: If you are a Sentry user, and you are seeing this stack frame, it is NOT indicative + // of a bug with Raven.js. Sentry generates synthetic traces either by configuration, + // or if it catches a thrown object without a "stack" property. + try { + throw new Error(msg); + } catch (ex1) { + ex = ex1; + } - var message = utils.isErrorEvent(msg) ? msg.message : msg; + // null exception name so `Error` isn't prefixed to msg + ex.name = null; + var stack = TraceKit.computeStackTrace(ex); - if (lastExceptionStack) { - TraceKit.computeStackTrace.augmentStackTraceWithInitialElement(lastExceptionStack, url, lineNo, message); - processLastException(); - } else if (exception && utils.isError(exception)) { - // non-string `exception` arg; attempt to extract stack trace - // New chrome and blink send along a real error object - // Let's just report that like a normal error. - // See: https://mikewest.org/2013/08/debugging-runtime-errors-with-window-onerror - stack = TraceKit.computeStackTrace(exception); - notifyHandlers(stack, true); - } else { - var location = { - url: url, - line: lineNo, - column: colNo - }; - var name = undefined; - var groups; + // stack[0] is `throw new Error(msg)` call itself, we are interested in the frame that was just before that, stack[1] + var initialCall = isArray(stack.stack) && stack.stack[1]; - if ({}.toString.call(message) === '[object String]') { - var groups = message.match(ERROR_TYPES_RE); + // if stack[1] is `Raven.captureException`, it means that someone passed a string to it and we redirected that call + // to be handled by `captureMessage`, thus `initialCall` is the 3rd one, not 2nd + // initialCall => captureException(string) => captureMessage(string) + if (initialCall && initialCall.func === 'Raven.captureException') { + initialCall = stack.stack[2]; + } - if (groups) { - name = groups[1]; - message = groups[2]; - } - } + var fileurl = (initialCall && initialCall.url) || ''; - location.func = UNKNOWN_FUNCTION; - stack = { - name: name, - message: message, - url: getLocationHref(), - stack: [location] - }; - notifyHandlers(stack, true); + if ( + !!this._globalOptions.ignoreUrls.test && + this._globalOptions.ignoreUrls.test(fileurl) + ) { + return; } - if (_oldOnerrorHandler) { - return _oldOnerrorHandler.apply(this, arguments); + if ( + !!this._globalOptions.whitelistUrls.test && + !this._globalOptions.whitelistUrls.test(fileurl) + ) { + return; } - return false; - } + if (this._globalOptions.stacktrace || (options && options.stacktrace)) { + // fingerprint on msg, not stack trace (legacy behavior, could be revisited) + data.fingerprint = data.fingerprint == null ? msg : data.fingerprint; - function installGlobalHandler() { - if (_onErrorHandlerInstalled) { - return; - } + options = objectMerge( + { + trimHeadFrames: 0 + }, + options + ); + // Since we know this is a synthetic trace, the top frame (this function call) + // MUST be from Raven.js, so mark it for trimming + // We add to the trim counter so that callers can choose to trim extra frames, such + // as utility functions. + options.trimHeadFrames += 1; - _oldOnerrorHandler = _window$2.onerror; - _window$2.onerror = traceKitWindowOnError; - _onErrorHandlerInstalled = true; - } + var frames = this._prepareFrames(stack, options); + data.stacktrace = { + // Sentry expects frames oldest to newest + frames: frames.reverse() + }; + } - function uninstallGlobalHandler() { - if (!_onErrorHandlerInstalled) { - return; + // Make sure that fingerprint is always wrapped in an array + if (data.fingerprint) { + data.fingerprint = isArray(data.fingerprint) + ? data.fingerprint + : [data.fingerprint]; } - _window$2.onerror = _oldOnerrorHandler; - _onErrorHandlerInstalled = false; - _oldOnerrorHandler = undefined; - } + // Fire away! + this._send(data); - function processLastException() { - var _lastExceptionStack = lastExceptionStack, - _lastArgs = lastArgs; - lastArgs = null; - lastExceptionStack = null; - lastException = null; - notifyHandlers.apply(null, [_lastExceptionStack, false].concat(_lastArgs)); - } - /** - * Reports an unhandled Error to TraceKit. - * @param {Error} ex - * @param {?boolean} rethrow If false, do not re-throw the exception. - * Only used for window.onerror to not cause an infinite loop of - * rethrowing. - */ + return this; + }, + captureBreadcrumb: function(obj) { + var crumb = objectMerge( + { + timestamp: now() / 1000 + }, + obj + ); - function report(ex, rethrow) { - var args = _slice.call(arguments, 1); + if (isFunction(this._globalOptions.breadcrumbCallback)) { + var result = this._globalOptions.breadcrumbCallback(crumb); - if (lastExceptionStack) { - if (lastException === ex) { - return; // already caught by an inner catch block, ignore - } else { - processLastException(); + if (isObject(result) && !isEmptyObject(result)) { + crumb = result; + } else if (result === false) { + return this; } } - var stack = TraceKit.computeStackTrace(ex); - lastExceptionStack = stack; - lastException = ex; - lastArgs = args; // If the stack trace is incomplete, wait for 2 seconds for - // slow slow IE to see if onerror occurs or not before reporting - // this exception; otherwise, we will end up with an incomplete - // stack trace + this._breadcrumbs.push(crumb); + if (this._breadcrumbs.length > this._globalOptions.maxBreadcrumbs) { + this._breadcrumbs.shift(); + } + return this; + }, - setTimeout(function () { - if (lastException === ex) { - processLastException(); - } - }, stack.incomplete ? 2000 : 0); + addPlugin: function(plugin /*arg1, arg2, ... argN*/) { + var pluginArgs = [].slice.call(arguments, 1); - if (rethrow !== false) { - throw ex; // re-throw to propagate to the top level (and cause window.onerror) + this._plugins.push([plugin, pluginArgs]); + if (this._isRavenInstalled) { + this._drainPlugins(); } - } - report.subscribe = subscribe; - report.unsubscribe = unsubscribe; - report.uninstall = unsubscribeAll; - return report; -}(); -/** - * TraceKit.computeStackTrace: cross-browser stack traces in JavaScript - * - * Syntax: - * s = TraceKit.computeStackTrace(exception) // consider using TraceKit.report instead (see below) - * Returns: - * s.name - exception name - * s.message - exception message - * s.stack[i].url - JavaScript or HTML file URL - * s.stack[i].func - function name, or empty for anonymous functions (if guessing did not work) - * s.stack[i].args - arguments passed to the function, if known - * s.stack[i].line - line number, if known - * s.stack[i].column - column number, if known - * - * Supports: - * - Firefox: full stack trace with line numbers and unreliable column - * number on top frame - * - Opera 10: full stack trace with line and column numbers - * - Opera 9-: full stack trace with line numbers - * - Chrome: full stack trace with line and column numbers - * - Safari: line and column number for the topmost stacktrace element - * only - * - IE: no line numbers whatsoever - * - * Tries to guess names of anonymous functions by looking for assignments - * in the source code. In IE and Safari, we have to guess source file names - * by searching for function bodies inside all page scripts. This will not - * work for scripts that are loaded cross-domain. - * Here be dragons: some function names may be guessed incorrectly, and - * duplicate functions may be mismatched. - * - * TraceKit.computeStackTrace should only be used for tracing purposes. - * Logging of unhandled exceptions should be done with TraceKit.report, - * which builds on top of TraceKit.computeStackTrace and provides better - * IE support by utilizing the window.onerror event to retrieve information - * about the top of the stack. - * - * Note: In IE and Safari, no stack trace is recorded on the Error object, - * so computeStackTrace instead walks its *own* chain of callers. - * This means that: - * * in Safari, some methods may be missing from the stack trace; - * * in IE, the topmost function in the stack trace will always be the - * caller of computeStackTrace. - * - * This is okay for tracing (because you are likely to be calling - * computeStackTrace from the function you want to be the topmost element - * of the stack trace anyway), but not okay for logging unhandled - * exceptions (because your catch block will likely be far away from the - * inner function that actually caused the exception). - * - */ + return this; + }, + /* + * Set/clear a user to be sent along with the payload. + * + * @param {object} user An object representing user data [optional] + * @return {Raven} + */ + setUserContext: function(user) { + // Intentionally do not merge here since that's an unexpected behavior. + this._globalContext.user = user; -TraceKit.computeStackTrace = function computeStackTraceWrapper() { - // Contents of Exception in various browsers. - // - // SAFARI: - // ex.message = Can't find variable: qq - // ex.line = 59 - // ex.sourceId = 580238192 - // ex.sourceURL = http://... - // ex.expressionBeginOffset = 96 - // ex.expressionCaretOffset = 98 - // ex.expressionEndOffset = 98 - // ex.name = ReferenceError - // - // FIREFOX: - // ex.message = qq is not defined - // ex.fileName = http://... - // ex.lineNumber = 59 - // ex.columnNumber = 69 - // ex.stack = ...stack trace... (see the example below) - // ex.name = ReferenceError - // - // CHROME: - // ex.message = qq is not defined - // ex.name = ReferenceError - // ex.type = not_defined - // ex.arguments = ['aa'] - // ex.stack = ...stack trace... - // - // INTERNET EXPLORER: - // ex.message = ... - // ex.name = ReferenceError - // - // OPERA: - // ex.message = ...message... (see the example below) - // ex.name = ReferenceError - // ex.opera#sourceloc = 11 (pretty much useless, duplicates the info in ex.message) - // ex.stacktrace = n/a; see 'opera:config#UserPrefs|Exceptions Have Stacktrace' + return this; + }, - /** - * Computes stack trace information from the stack property. - * Chrome and Gecko use this property. - * @param {Error} ex - * @return {?Object.} Stack trace information. + /* + * Merge extra attributes to be sent along with the payload. + * + * @param {object} extra An object representing extra data [optional] + * @return {Raven} */ - function computeStackTraceFromStackProp(ex) { - if (typeof ex.stack === 'undefined' || !ex.stack) return; - var chrome = /^\s*at (.*?) ?\(((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i, - gecko = /^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|\[native).*?|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i, - winjs = /^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i, - // Used to additionally parse URL/line/column from eval frames - geckoEval = /(\S+) line (\d+)(?: > eval line \d+)* > eval/i, - chromeEval = /\((\S*)(?::(\d+))(?::(\d+))\)/, - lines = ex.stack.split('\n'), - stack = [], - submatch, - parts, - element, - reference = /^(.*) is undefined$/.exec(ex.message); + setExtraContext: function(extra) { + this._mergeContext('extra', extra); - for (var i = 0, j = lines.length; i < j; ++i) { - if (parts = chrome.exec(lines[i])) { - var isNative = parts[2] && parts[2].indexOf('native') === 0; // start of line + return this; + }, - var isEval = parts[2] && parts[2].indexOf('eval') === 0; // start of line + /* + * Merge tags to be sent along with the payload. + * + * @param {object} tags An object representing tags [optional] + * @return {Raven} + */ + setTagsContext: function(tags) { + this._mergeContext('tags', tags); - if (isEval && (submatch = chromeEval.exec(parts[2]))) { - // throw out eval line/column and use top-most line/column number - parts[2] = submatch[1]; // url + return this; + }, - parts[3] = submatch[2]; // line - - parts[4] = submatch[3]; // column - } - - element = { - url: !isNative ? parts[2] : null, - func: parts[1] || UNKNOWN_FUNCTION, - args: isNative ? [parts[2]] : [], - line: parts[3] ? +parts[3] : null, - column: parts[4] ? +parts[4] : null - }; - } else if (parts = winjs.exec(lines[i])) { - element = { - url: parts[2], - func: parts[1] || UNKNOWN_FUNCTION, - args: [], - line: +parts[3], - column: parts[4] ? +parts[4] : null - }; - } else if (parts = gecko.exec(lines[i])) { - var isEval = parts[3] && parts[3].indexOf(' > eval') > -1; - - if (isEval && (submatch = geckoEval.exec(parts[3]))) { - // throw out eval line/column and use top-most line number - parts[3] = submatch[1]; - parts[4] = submatch[2]; - parts[5] = null; // no column when eval - } else if (i === 0 && !parts[5] && typeof ex.columnNumber !== 'undefined') { - // FireFox uses this awesome columnNumber property for its top frame - // Also note, Firefox's column number is 0-based and everything else expects 1-based, - // so adding 1 - // NOTE: this hack doesn't work if top-most frame is eval - stack[0].column = ex.columnNumber + 1; - } + /* + * Clear all of the context. + * + * @return {Raven} + */ + clearContext: function() { + this._globalContext = {}; - element = { - url: parts[3], - func: parts[1] || UNKNOWN_FUNCTION, - args: parts[2] ? parts[2].split(',') : [], - line: parts[4] ? +parts[4] : null, - column: parts[5] ? +parts[5] : null - }; - } else { - continue; - } + return this; + }, - if (!element.func && element.line) { - element.func = UNKNOWN_FUNCTION; - } + /* + * Get a copy of the current context. This cannot be mutated. + * + * @return {object} copy of context + */ + getContext: function() { + // lol javascript + return JSON.parse(stringify(this._globalContext)); + }, - stack.push(element); - } + /* + * Set environment of application + * + * @param {string} environment Typically something like 'production'. + * @return {Raven} + */ + setEnvironment: function(environment) { + this._globalOptions.environment = environment; - if (!stack.length) { - return null; - } + return this; + }, - return { - name: ex.name, - message: ex.message, - url: getLocationHref(), - stack: stack - }; - } - /** - * Adds information about the first frame to incomplete stack traces. - * Safari and IE require this to get complete data on the first frame. - * @param {Object.} stackInfo Stack trace information from - * one of the compute* methods. - * @param {string} url The URL of the script that caused an error. - * @param {(number|string)} lineNo The line number of the script that - * caused an error. - * @param {string=} message The error generated by the browser, which - * hopefully contains the name of the object that caused the error. - * @return {boolean} Whether or not the stack information was - * augmented. + /* + * Set release version of application + * + * @param {string} release Typically something like a git SHA to identify version + * @return {Raven} */ + setRelease: function(release) { + this._globalOptions.release = release; + return this; + }, - function augmentStackTraceWithInitialElement(stackInfo, url, lineNo, message) { - var initial = { - url: url, - line: lineNo - }; + /* + * Set the dataCallback option + * + * @param {function} callback The callback to run which allows the + * data blob to be mutated before sending + * @return {Raven} + */ + setDataCallback: function(callback) { + var original = this._globalOptions.dataCallback; + this._globalOptions.dataCallback = keepOriginalCallback(original, callback); + return this; + }, - if (initial.url && initial.line) { - stackInfo.incomplete = false; + /* + * Set the breadcrumbCallback option + * + * @param {function} callback The callback to run which allows filtering + * or mutating breadcrumbs + * @return {Raven} + */ + setBreadcrumbCallback: function(callback) { + var original = this._globalOptions.breadcrumbCallback; + this._globalOptions.breadcrumbCallback = keepOriginalCallback(original, callback); + return this; + }, - if (!initial.func) { - initial.func = UNKNOWN_FUNCTION; - } + /* + * Set the shouldSendCallback option + * + * @param {function} callback The callback to run which allows + * introspecting the blob before sending + * @return {Raven} + */ + setShouldSendCallback: function(callback) { + var original = this._globalOptions.shouldSendCallback; + this._globalOptions.shouldSendCallback = keepOriginalCallback(original, callback); + return this; + }, - if (stackInfo.stack.length > 0) { - if (stackInfo.stack[0].url === initial.url) { - if (stackInfo.stack[0].line === initial.line) { - return false; // already in stack trace - } else if (!stackInfo.stack[0].line && stackInfo.stack[0].func === initial.func) { - stackInfo.stack[0].line = initial.line; - return false; - } - } - } + /** + * Override the default HTTP transport mechanism that transmits data + * to the Sentry server. + * + * @param {function} transport Function invoked instead of the default + * `makeRequest` handler. + * + * @return {Raven} + */ + setTransport: function(transport) { + this._globalOptions.transport = transport; - stackInfo.stack.unshift(initial); - stackInfo.partial = true; - return true; - } else { - stackInfo.incomplete = true; - } + return this; + }, - return false; - } - /** - * Computes stack trace information by walking the arguments.caller - * chain at the time the exception occurred. This will cause earlier - * frames to be missed but is the only way to get any stack trace in - * Safari and IE. The top frame is restored by - * {@link augmentStackTraceWithInitialElement}. - * @param {Error} ex - * @return {?Object.} Stack trace information. + /* + * Get the latest raw exception that was captured by Raven. + * + * @return {error} */ + lastException: function() { + return this._lastCapturedException; + }, + /* + * Get the last event id + * + * @return {string} + */ + lastEventId: function() { + return this._lastEventId; + }, - function computeStackTraceByWalkingCallerChain(ex, depth) { - var functionName = /function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i, - stack = [], - funcs = {}, - recursion = false, - parts, - item; - - for (var curr = computeStackTraceByWalkingCallerChain.caller; curr && !recursion; curr = curr.caller) { - if (curr === computeStackTrace || curr === TraceKit.report) { - // console.log('skipping internal function'); - continue; + /* + * Determine if Raven is setup and ready to go. + * + * @return {boolean} + */ + isSetup: function() { + if (!this._hasJSON) return false; // needs JSON support + if (!this._globalServer) { + if (!this.ravenNotConfiguredError) { + this.ravenNotConfiguredError = true; + this._logDebug('error', 'Error: Raven has not been configured.'); } + return false; + } + return true; + }, - item = { - url: null, - func: UNKNOWN_FUNCTION, - line: null, - column: null - }; + afterLoad: function() { + // TODO: remove window dependence? - if (curr.name) { - item.func = curr.name; - } else if (parts = functionName.exec(curr.toString())) { - item.func = parts[1]; - } + // Attempt to initialize Raven on load + var RavenConfig = _window.RavenConfig; + if (RavenConfig) { + this.config(RavenConfig.dsn, RavenConfig.config).install(); + } + }, - if (typeof item.func === 'undefined') { - try { - item.func = parts.input.substring(0, parts.input.indexOf('{')); - } catch (e) {} - } + showReportDialog: function(options) { + if ( + !_document // doesn't work without a document (React native) + ) + return; - if (funcs['' + curr]) { - recursion = true; - } else { - funcs['' + curr] = true; - } + options = options || {}; - stack.push(item); + var lastEventId = options.eventId || this.lastEventId(); + if (!lastEventId) { + throw new RavenConfigError('Missing eventId'); } - if (depth) { - // console.log('depth is ' + depth); - // console.log('stack is ' + stack.length); - stack.splice(0, depth); + var dsn = options.dsn || this._dsn; + if (!dsn) { + throw new RavenConfigError('Missing DSN'); } - var result = { - name: ex.name, - message: ex.message, - url: getLocationHref(), - stack: stack - }; - augmentStackTraceWithInitialElement(result, ex.sourceURL || ex.fileName, ex.line || ex.lineNumber, ex.message || ex.description); - return result; - } - /** - * Computes a stack trace for an exception. - * @param {Error} ex - * @param {(string|number)=} depth - */ + var encode = encodeURIComponent; + var qs = ''; + qs += '?eventId=' + encode(lastEventId); + qs += '&dsn=' + encode(dsn); + var user = options.user || this._globalContext.user; + if (user) { + if (user.name) qs += '&name=' + encode(user.name); + if (user.email) qs += '&email=' + encode(user.email); + } - function computeStackTrace(ex, depth) { - var stack = null; - depth = depth == null ? 0 : +depth; + var globalServer = this._getGlobalServer(this._parseDSN(dsn)); - try { - stack = computeStackTraceFromStackProp(ex); + var script = _document.createElement('script'); + script.async = true; + script.src = globalServer + '/api/embed/error-page/' + qs; + (_document.head || _document.body).appendChild(script); + }, - if (stack) { - return stack; + /**** Private functions ****/ + _ignoreNextOnError: function() { + var self = this; + this._ignoreOnError += 1; + setTimeout(function() { + // onerror should trigger before setTimeout + self._ignoreOnError -= 1; + }); + }, + + _triggerEvent: function(eventType, options) { + // NOTE: `event` is a native browser thing, so let's avoid conflicting wiht it + var evt, key; + + if (!this._hasDocument) return; + + options = options || {}; + + eventType = 'raven' + eventType.substr(0, 1).toUpperCase() + eventType.substr(1); + + if (_document.createEvent) { + evt = _document.createEvent('HTMLEvents'); + evt.initEvent(eventType, true, true); + } else { + evt = _document.createEventObject(); + evt.eventType = eventType; + } + + for (key in options) + if (hasKey(options, key)) { + evt[key] = options[key]; } - } catch (e) { - if (TraceKit.debug) { - throw e; + + if (_document.createEvent) { + // IE9 if standards + _document.dispatchEvent(evt); + } else { + // IE8 regardless of Quirks or Standards + // IE9 if quirks + try { + _document.fireEvent('on' + evt.eventType.toLowerCase(), evt); + } catch (e) { + // Do nothing } } + }, - try { - stack = computeStackTraceByWalkingCallerChain(ex, depth + 1); + /** + * Wraps addEventListener to capture UI breadcrumbs + * @param evtName the event name (e.g. "click") + * @returns {Function} + * @private + */ + _breadcrumbEventHandler: function(evtName) { + var self = this; + return function(evt) { + // reset keypress timeout; e.g. triggering a 'click' after + // a 'keypress' will reset the keypress debounce so that a new + // set of keypresses can be recorded + self._keypressTimeout = null; - if (stack) { - return stack; - } - } catch (e) { - if (TraceKit.debug) { - throw e; + // It's possible this handler might trigger multiple times for the same + // event (e.g. event propagation through node ancestors). Ignore if we've + // already captured the event. + if (self._lastCapturedEvent === evt) return; + + self._lastCapturedEvent = evt; + + // try/catch both: + // - accessing evt.target (see getsentry/raven-js#838, #768) + // - `htmlTreeAsString` because it's complex, and just accessing the DOM incorrectly + // can throw an exception in some circumstances. + var target; + try { + target = htmlTreeAsString(evt.target); + } catch (e) { + target = ''; } - } - return { - name: ex.name, - message: ex.message, - url: getLocationHref() + self.captureBreadcrumb({ + category: 'ui.' + evtName, // e.g. ui.click, ui.input + message: target + }); }; - } + }, - computeStackTrace.augmentStackTraceWithInitialElement = augmentStackTraceWithInitialElement; - computeStackTrace.computeStackTraceFromStackProp = computeStackTraceFromStackProp; - return computeStackTrace; -}(); + /** + * Wraps addEventListener to capture keypress UI events + * @returns {Function} + * @private + */ + _keypressEventHandler: function() { + var self = this, + debounceDuration = 1000; // milliseconds -var tracekit = TraceKit; + // TODO: if somehow user switches keypress target before + // debounce timeout is triggered, we will only capture + // a single breadcrumb from the FIRST target (acceptable?) + return function(evt) { + var target; + try { + target = evt.target; + } catch (e) { + // just accessing event properties can throw an exception in some rare circumstances + // see: https://github.com/getsentry/raven-js/issues/838 + return; + } + var tagName = target && target.tagName; -var stringify_1 = createCommonjsModule(function (module, exports) { - /* - json-stringify-safe - Like JSON.stringify, but doesn't throw on circular references. - - Originally forked from https://github.com/isaacs/json-stringify-safe - version 5.0.1 on 3/8/2017 and modified to handle Errors serialization - and IE8 compatibility. Tests for this are in test/vendor. - - ISC license: https://github.com/isaacs/json-stringify-safe/blob/master/LICENSE - */ - exports = module.exports = stringify; - exports.getSerialize = serializer; - - function indexOf(haystack, needle) { - for (var i = 0; i < haystack.length; ++i) { - if (haystack[i] === needle) return i; - } - - return -1; - } + // only consider keypress events on actual input elements + // this will disregard keypresses targeting body (e.g. tabbing + // through elements, hotkeys, etc) + if ( + !tagName || + (tagName !== 'INPUT' && tagName !== 'TEXTAREA' && !target.isContentEditable) + ) + return; + + // record first keypress in a series, but ignore subsequent + // keypresses until debounce clears + var timeout = self._keypressTimeout; + if (!timeout) { + self._breadcrumbEventHandler('input')(evt); + } + clearTimeout(timeout); + self._keypressTimeout = setTimeout(function() { + self._keypressTimeout = null; + }, debounceDuration); + }; + }, + + /** + * Captures a breadcrumb of type "navigation", normalizing input URLs + * @param to the originating URL + * @param from the target URL + * @private + */ + _captureUrlChange: function(from, to) { + var parsedLoc = parseUrl(this._location.href); + var parsedTo = parseUrl(to); + var parsedFrom = parseUrl(from); - function stringify(obj, replacer, spaces, cycleReplacer) { - return JSON.stringify(obj, serializer(replacer, cycleReplacer), spaces); - } // https://github.com/ftlabs/js-abbreviate/blob/fa709e5f139e7770a71827b1893f22418097fbda/index.js#L95-L106 + // because onpopstate only tells you the "new" (to) value of location.href, and + // not the previous (from) value, we need to track the value of the current URL + // state ourselves + this._lastHref = to; + // Use only the path component of the URL if the URL matches the current + // document (almost all the time when using pushState) + if (parsedLoc.protocol === parsedTo.protocol && parsedLoc.host === parsedTo.host) + to = parsedTo.relative; + if (parsedLoc.protocol === parsedFrom.protocol && parsedLoc.host === parsedFrom.host) + from = parsedFrom.relative; - function stringifyError(value) { - var err = { - // These properties are implemented as magical getters and don't show up in for in - stack: value.stack, - message: value.message, - name: value.name - }; + this.captureBreadcrumb({ + category: 'navigation', + data: { + to: to, + from: from + } + }); + }, - for (var i in value) { - if (Object.prototype.hasOwnProperty.call(value, i)) { - err[i] = value[i]; + _patchFunctionToString: function() { + var self = this; + self._originalFunctionToString = Function.prototype.toString; + // eslint-disable-next-line no-extend-native + Function.prototype.toString = function() { + if (typeof this === 'function' && this.__raven__) { + return self._originalFunctionToString.apply(this.__orig__, arguments); } + return self._originalFunctionToString.apply(this, arguments); + }; + }, + + _unpatchFunctionToString: function() { + if (this._originalFunctionToString) { + // eslint-disable-next-line no-extend-native + Function.prototype.toString = this._originalFunctionToString; } + }, - return err; - } + /** + * Wrap timer functions and event targets to catch errors and provide + * better metadata. + */ + _instrumentTryCatch: function() { + var self = this; - function serializer(replacer, cycleReplacer) { - var stack = []; - var keys = []; + var wrappedBuiltIns = self._wrappedBuiltIns; - if (cycleReplacer == null) { - cycleReplacer = function cycleReplacer(key, value) { - if (stack[0] === value) { - return '[Circular ~]'; + function wrapTimeFn(orig) { + return function(fn, t) { + // preserve arity + // Make a copy of the arguments to prevent deoptimization + // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments + var args = new Array(arguments.length); + for (var i = 0; i < args.length; ++i) { + args[i] = arguments[i]; + } + var originalCallback = args[0]; + if (isFunction(originalCallback)) { + args[0] = self.wrap(originalCallback); } - return '[Circular ~.' + keys.slice(0, indexOf(stack, value)).join('.') + ']'; + // IE < 9 doesn't support .call/.apply on setInterval/setTimeout, but it + // also supports only two arguments and doesn't care what this is, so we + // can just call the original function directly. + if (orig.apply) { + return orig.apply(this, args); + } else { + return orig(args[0], args[1]); + } }; } - return function (key, value) { - if (stack.length > 0) { - var thisPos = indexOf(stack, this); - ~thisPos ? stack.splice(thisPos + 1) : stack.push(this); - ~thisPos ? keys.splice(thisPos, Infinity, key) : keys.push(key); - - if (~indexOf(stack, value)) { - value = cycleReplacer.call(this, key, value); - } - } else { - stack.push(value); - } + var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; - return replacer == null ? value instanceof Error ? stringifyError(value) : value : replacer.call(this, key, value); - }; - } -}); -var stringify_2 = stringify_1.getSerialize; + function wrapEventTarget(global) { + var proto = _window[global] && _window[global].prototype; + if (proto && proto.hasOwnProperty && proto.hasOwnProperty('addEventListener')) { + fill( + proto, + 'addEventListener', + function(orig) { + return function(evtName, fn, capture, secure) { + // preserve arity + try { + if (fn && fn.handleEvent) { + fn.handleEvent = self.wrap(fn.handleEvent); + } + } catch (err) { + // can sometimes get 'Permission denied to access property "handle Event' + } -function RavenConfigError(message) { - this.name = 'RavenConfigError'; - this.message = message; -} + // More breadcrumb DOM capture ... done here and not in `_instrumentBreadcrumbs` + // so that we don't have more than one wrapper function + var before, clickHandler, keypressHandler; + + if ( + autoBreadcrumbs && + autoBreadcrumbs.dom && + (global === 'EventTarget' || global === 'Node') + ) { + // NOTE: generating multiple handlers per addEventListener invocation, should + // revisit and verify we can just use one (almost certainly) + clickHandler = self._breadcrumbEventHandler('click'); + keypressHandler = self._keypressEventHandler(); + before = function(evt) { + // need to intercept every DOM event in `before` argument, in case that + // same wrapped method is re-used for different events (e.g. mousemove THEN click) + // see #724 + if (!evt) return; + + var eventType; + try { + eventType = evt.type; + } catch (e) { + // just accessing event properties can throw an exception in some rare circumstances + // see: https://github.com/getsentry/raven-js/issues/838 + return; + } + if (eventType === 'click') return clickHandler(evt); + else if (eventType === 'keypress') return keypressHandler(evt); + }; + } + return orig.call( + this, + evtName, + self.wrap(fn, undefined, before), + capture, + secure + ); + }; + }, + wrappedBuiltIns + ); + fill( + proto, + 'removeEventListener', + function(orig) { + return function(evt, fn, capture, secure) { + try { + fn = fn && (fn.__raven_wrapper__ ? fn.__raven_wrapper__ : fn); + } catch (e) { + // ignore, accessing __raven_wrapper__ will throw in some Selenium environments + } + return orig.call(this, evt, fn, capture, secure); + }; + }, + wrappedBuiltIns + ); + } + } -RavenConfigError.prototype = new Error(); -RavenConfigError.prototype.constructor = RavenConfigError; -var configError = RavenConfigError; + fill(_window, 'setTimeout', wrapTimeFn, wrappedBuiltIns); + fill(_window, 'setInterval', wrapTimeFn, wrappedBuiltIns); + if (_window.requestAnimationFrame) { + fill( + _window, + 'requestAnimationFrame', + function(orig) { + return function(cb) { + return orig(self.wrap(cb)); + }; + }, + wrappedBuiltIns + ); + } -var wrapMethod = function wrapMethod(console, level, callback) { - var originalConsoleLevel = console[level]; - var originalConsole = console; + // event targets borrowed from bugsnag-js: + // https://github.com/bugsnag/bugsnag-js/blob/master/src/bugsnag.js#L666 + var eventTargets = [ + 'EventTarget', + 'Window', + 'Node', + 'ApplicationCache', + 'AudioTrackList', + 'ChannelMergerNode', + 'CryptoOperation', + 'EventSource', + 'FileReader', + 'HTMLUnknownElement', + 'IDBDatabase', + 'IDBRequest', + 'IDBTransaction', + 'KeyOperation', + 'MediaController', + 'MessagePort', + 'ModalWindow', + 'Notification', + 'SVGElementInstance', + 'Screen', + 'TextTrack', + 'TextTrackCue', + 'TextTrackList', + 'WebSocket', + 'WebSocketWorker', + 'Worker', + 'XMLHttpRequest', + 'XMLHttpRequestEventTarget', + 'XMLHttpRequestUpload' + ]; + for (var i = 0; i < eventTargets.length; i++) { + wrapEventTarget(eventTargets[i]); + } + }, - if (!(level in console)) { - return; - } + /** + * Instrument browser built-ins w/ breadcrumb capturing + * - XMLHttpRequests + * - DOM interactions (click/typing) + * - window.location changes + * - console + * + * Can be disabled or individually configured via the `autoBreadcrumbs` config option + */ + _instrumentBreadcrumbs: function() { + var self = this; + var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; - var sentryLevel = level === 'warn' ? 'warning' : level; + var wrappedBuiltIns = self._wrappedBuiltIns; - console[level] = function () { - var args = [].slice.call(arguments); - var msg = utils.safeJoin(args, ' '); - var data = { - level: sentryLevel, - logger: 'console', - extra: { - arguments: args + function wrapProp(prop, xhr) { + if (prop in xhr && isFunction(xhr[prop])) { + fill(xhr, prop, function(orig) { + return self.wrap(orig); + }); // intentionally don't track filled methods on XHR instances } - }; + } - if (level === 'assert') { - if (args[0] === false) { - // Default browsers message - msg = 'Assertion failed: ' + (utils.safeJoin(args.slice(1), ' ') || 'console.assert'); - data.extra.arguments = args.slice(1); - callback && callback(msg, data); - } - } else { - callback && callback(msg, data); - } // this fails for some browsers. :( + if (autoBreadcrumbs.xhr && 'XMLHttpRequest' in _window) { + var xhrproto = _window.XMLHttpRequest && _window.XMLHttpRequest.prototype; + fill( + xhrproto, + 'open', + function(origOpen) { + return function(method, url) { + // preserve arity + // if Sentry key appears in URL, don't capture + if (isString(url) && url.indexOf(self._globalKey) === -1) { + this.__raven_xhr = { + method: method, + url: url, + status_code: null + }; + } - if (originalConsoleLevel) { - // IE9 doesn't allow calling apply on console functions directly - // See: https://stackoverflow.com/questions/5472938/does-ie9-support-console-log-and-is-it-a-real-function#answer-5473193 - Function.prototype.apply.call(originalConsoleLevel, originalConsole, args); - } - }; -}; - -var console$1 = { - wrapMethod: wrapMethod -}; + return origOpen.apply(this, arguments); + }; + }, + wrappedBuiltIns + ); + + fill( + xhrproto, + 'send', + function(origSend) { + return function() { + // preserve arity + var xhr = this; -/*global XDomainRequest:false */ + function onreadystatechangeHandler() { + if (xhr.__raven_xhr && xhr.readyState === 4) { + try { + // touching statusCode in some platforms throws + // an exception + xhr.__raven_xhr.status_code = xhr.status; + } catch (e) { + /* do nothing */ + } -var isError = utils.isError; -var isObject = utils.isObject; -var isErrorEvent = utils.isErrorEvent; -var isUndefined = utils.isUndefined; -var isFunction = utils.isFunction; -var isString = utils.isString; -var isArray = utils.isArray; -var isEmptyObject = utils.isEmptyObject; -var each = utils.each; -var objectMerge = utils.objectMerge; -var truncate = utils.truncate; -var objectFrozen = utils.objectFrozen; -var hasKey = utils.hasKey; -var joinRegExp = utils.joinRegExp; -var urlencode = utils.urlencode; -var uuid4 = utils.uuid4; -var htmlTreeAsString = utils.htmlTreeAsString; -var isSameException = utils.isSameException; -var isSameStacktrace = utils.isSameStacktrace; -var parseUrl = utils.parseUrl; -var fill = utils.fill; -var supportsFetch = utils.supportsFetch; -var wrapConsoleMethod = console$1.wrapMethod; -var dsnKeys = 'source protocol user pass host port path'.split(' '); -var dsnPattern = /^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/; + self.captureBreadcrumb({ + type: 'http', + category: 'xhr', + data: xhr.__raven_xhr + }); + } + } -function now() { - return +new Date(); -} // This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) + var props = ['onload', 'onerror', 'onprogress']; + for (var j = 0; j < props.length; j++) { + wrapProp(props[j], xhr); + } + if ('onreadystatechange' in xhr && isFunction(xhr.onreadystatechange)) { + fill( + xhr, + 'onreadystatechange', + function(orig) { + return self.wrap(orig, undefined, onreadystatechangeHandler); + } /* intentionally don't track this instrumentation */ + ); + } else { + // if onreadystatechange wasn't actually set by the page on this xhr, we + // are free to set our own and capture the breadcrumb + xhr.onreadystatechange = onreadystatechangeHandler; + } -var _window$1 = typeof window !== 'undefined' ? window : typeof commonjsGlobal !== 'undefined' ? commonjsGlobal : typeof self !== 'undefined' ? self : {}; + return origSend.apply(this, arguments); + }; + }, + wrappedBuiltIns + ); + } -var _document = _window$1.document; -var _navigator = _window$1.navigator; + if (autoBreadcrumbs.xhr && supportsFetch()) { + fill( + _window, + 'fetch', + function(origFetch) { + return function() { + // preserve arity + // Make a copy of the arguments to prevent deoptimization + // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments + var args = new Array(arguments.length); + for (var i = 0; i < args.length; ++i) { + args[i] = arguments[i]; + } -function keepOriginalCallback(original, callback) { - return isFunction(callback) ? function (data) { - return callback(data, original); - } : callback; -} // First, check for JSON support -// If there is no JSON, we no-op the core features of Raven -// since JSON is required to encode the payload + var fetchInput = args[0]; + var method = 'GET'; + var url; + if (typeof fetchInput === 'string') { + url = fetchInput; + } else if ('Request' in _window && fetchInput instanceof _window.Request) { + url = fetchInput.url; + if (fetchInput.method) { + method = fetchInput.method; + } + } else { + url = '' + fetchInput; + } -function Raven$1() { - this._hasJSON = !!(_typeof(JSON) === 'object' && JSON.stringify); // Raven can run in contexts where there's no document (react-native) + // if Sentry key appears in URL, don't capture, as it's our own request + if (url.indexOf(self._globalKey) !== -1) { + return origFetch.apply(this, args); + } - this._hasDocument = !isUndefined(_document); - this._hasNavigator = !isUndefined(_navigator); - this._lastCapturedException = null; - this._lastData = null; - this._lastEventId = null; - this._globalServer = null; - this._globalKey = null; - this._globalProject = null; - this._globalContext = {}; - this._globalOptions = { - // SENTRY_RELEASE can be injected by https://github.com/getsentry/sentry-webpack-plugin - release: _window$1.SENTRY_RELEASE && _window$1.SENTRY_RELEASE.id, - logger: 'javascript', - ignoreErrors: [], - ignoreUrls: [], - whitelistUrls: [], - includePaths: [], - headers: null, - collectWindowErrors: true, - maxMessageLength: 0, - // By default, truncates URL values to 250 chars - maxUrlLength: 250, - stackTraceLimit: 50, - autoBreadcrumbs: true, - instrument: true, - sampleRate: 1 - }; - this._fetchDefaults = { - method: 'POST', - keepalive: true, - referrerPolicy: 'origin' - }; - this._ignoreOnError = 0; - this._isRavenInstalled = false; - this._originalErrorStackTraceLimit = Error.stackTraceLimit; // capture references to window.console *and* all its methods first - // before the console plugin has a chance to monkey patch + if (args[1] && args[1].method) { + method = args[1].method; + } - this._originalConsole = _window$1.console || {}; - this._originalConsoleMethods = {}; - this._plugins = []; - this._startTime = now(); - this._wrappedBuiltIns = []; - this._breadcrumbs = []; - this._lastCapturedEvent = null; - this._keypressTimeout; - this._location = _window$1.location; - this._lastHref = this._location && this._location.href; + var fetchData = { + method: method, + url: url, + status_code: null + }; - this._resetBackoff(); // eslint-disable-next-line guard-for-in + return origFetch + .apply(this, args) + .then(function(response) { + fetchData.status_code = response.status; + + self.captureBreadcrumb({ + type: 'http', + category: 'fetch', + data: fetchData + }); + + return response; + }) + ['catch'](function(err) { + // if there is an error performing the request + self.captureBreadcrumb({ + type: 'http', + category: 'fetch', + data: fetchData, + level: 'error' + }); + + throw err; + }); + }; + }, + wrappedBuiltIns + ); + } + // Capture breadcrumbs from any click that is unhandled / bubbled up all the way + // to the document. Do this before we instrument addEventListener. + if (autoBreadcrumbs.dom && this._hasDocument) { + if (_document.addEventListener) { + _document.addEventListener('click', self._breadcrumbEventHandler('click'), false); + _document.addEventListener('keypress', self._keypressEventHandler(), false); + } else if (_document.attachEvent) { + // IE8 Compatibility + _document.attachEvent('onclick', self._breadcrumbEventHandler('click')); + _document.attachEvent('onkeypress', self._keypressEventHandler()); + } + } - for (var method in this._originalConsole) { - this._originalConsoleMethods[method] = this._originalConsole[method]; - } -} -/* - * The core Raven singleton - * - * @this {Raven} - */ + // record navigation (URL) changes + // NOTE: in Chrome App environment, touching history.pushState, *even inside + // a try/catch block*, will cause Chrome to output an error to console.error + // borrowed from: https://github.com/angular/angular.js/pull/13945/files + var chrome = _window.chrome; + var isChromePackagedApp = chrome && chrome.app && chrome.app.runtime; + var hasPushAndReplaceState = + !isChromePackagedApp && + _window.history && + history.pushState && + history.replaceState; + if (autoBreadcrumbs.location && hasPushAndReplaceState) { + // TODO: remove onpopstate handler on uninstall() + var oldOnPopState = _window.onpopstate; + _window.onpopstate = function() { + var currentHref = self._location.href; + self._captureUrlChange(self._lastHref, currentHref); + if (oldOnPopState) { + return oldOnPopState.apply(this, arguments); + } + }; -Raven$1.prototype = { - // Hardcode version string so that raven source can be loaded directly via - // webpack (using a build step causes webpack #1617). Grunt verifies that - // this value matches package.json during build. - // See: https://github.com/getsentry/raven-js/issues/465 - VERSION: '3.22.2', - debug: false, - TraceKit: tracekit, - // alias to TraceKit + var historyReplacementFunction = function(origHistFunction) { + // note history.pushState.length is 0; intentionally not declaring + // params to preserve 0 arity + return function(/* state, title, url */) { + var url = arguments.length > 2 ? arguments[2] : undefined; - /* - * Configure Raven with a DSN and extra options - * - * @param {string} dsn The public Sentry DSN - * @param {object} options Set of global options [optional] - * @return {Raven} - */ - config: function config(dsn, options) { - var self = this; + // url argument is optional + if (url) { + // coerce to string (this is what pushState does) + self._captureUrlChange(self._lastHref, url + ''); + } - if (self._globalServer) { - this._logDebug('error', 'Error: Raven has already been configured'); + return origHistFunction.apply(this, arguments); + }; + }; - return self; + fill(history, 'pushState', historyReplacementFunction, wrappedBuiltIns); + fill(history, 'replaceState', historyReplacementFunction, wrappedBuiltIns); } - if (!dsn) return self; - var globalOptions = self._globalOptions; // merge in options + if (autoBreadcrumbs.console && 'console' in _window && console.log) { + // console + var consoleMethodCallback = function(msg, data) { + self.captureBreadcrumb({ + message: msg, + level: data.level, + category: 'console' + }); + }; - if (options) { - each(options, function (key, value) { - // tags and extra are special and need to be put into context - if (key === 'tags' || key === 'extra' || key === 'user') { - self._globalContext[key] = value; - } else { - globalOptions[key] = value; - } + each(['debug', 'info', 'warn', 'error', 'log'], function(_, level) { + wrapConsoleMethod(console, level, consoleMethodCallback); }); } + }, - self.setDSN(dsn); // "Script error." is hard coded into browsers for errors that it can't read. - // this is the result of a script being pulled in from an external domain and CORS. - - globalOptions.ignoreErrors.push(/^Script error\.?$/); - globalOptions.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/); // join regexp rules into one big rule - - globalOptions.ignoreErrors = joinRegExp(globalOptions.ignoreErrors); - globalOptions.ignoreUrls = globalOptions.ignoreUrls.length ? joinRegExp(globalOptions.ignoreUrls) : false; - globalOptions.whitelistUrls = globalOptions.whitelistUrls.length ? joinRegExp(globalOptions.whitelistUrls) : false; - globalOptions.includePaths = joinRegExp(globalOptions.includePaths); - globalOptions.maxBreadcrumbs = Math.max(0, Math.min(globalOptions.maxBreadcrumbs || 100, 100)); // default and hard limit is 100 + _restoreBuiltIns: function() { + // restore any wrapped builtins + var builtin; + while (this._wrappedBuiltIns.length) { + builtin = this._wrappedBuiltIns.shift(); - var autoBreadcrumbDefaults = { - xhr: true, - console: true, - dom: true, - location: true, - sentry: true - }; - var autoBreadcrumbs = globalOptions.autoBreadcrumbs; + var obj = builtin[0], + name = builtin[1], + orig = builtin[2]; - if ({}.toString.call(autoBreadcrumbs) === '[object Object]') { - autoBreadcrumbs = objectMerge(autoBreadcrumbDefaults, autoBreadcrumbs); - } else if (autoBreadcrumbs !== false) { - autoBreadcrumbs = autoBreadcrumbDefaults; + obj[name] = orig; } + }, - globalOptions.autoBreadcrumbs = autoBreadcrumbs; - var instrumentDefaults = { - tryCatch: true - }; - var instrument = globalOptions.instrument; - - if ({}.toString.call(instrument) === '[object Object]') { - instrument = objectMerge(instrumentDefaults, instrument); - } else if (instrument !== false) { - instrument = instrumentDefaults; + _restoreConsole: function() { + // eslint-disable-next-line guard-for-in + for (var method in this._originalConsoleMethods) { + this._originalConsole[method] = this._originalConsoleMethods[method]; } - - globalOptions.instrument = instrument; - tracekit.collectWindowErrors = !!globalOptions.collectWindowErrors; // return for chaining - - return self; }, - /* - * Installs a global window.onerror error handler - * to capture and report uncaught exceptions. - * At this point, install() is required to be called due - * to the way TraceKit is set up. - * - * @return {Raven} - */ - install: function install() { + _drainPlugins: function() { var self = this; - if (self.isSetup() && !self._isRavenInstalled) { - tracekit.report.subscribe(function () { - self._handleOnErrorStackInfo.apply(self, arguments); - }); - - self._patchFunctionToString(); - - if (self._globalOptions.instrument && self._globalOptions.instrument.tryCatch) { - self._instrumentTryCatch(); - } + // FIX ME TODO + each(this._plugins, function(_, plugin) { + var installer = plugin[0]; + var args = plugin[1]; + installer.apply(self, [self].concat(args)); + }); + }, - if (self._globalOptions.autoBreadcrumbs) self._instrumentBreadcrumbs(); // Install all of the plugins + _parseDSN: function(str) { + var m = dsnPattern.exec(str), + dsn = {}, + i = 7; - self._drainPlugins(); + try { + while (i--) dsn[dsnKeys[i]] = m[i] || ''; + } catch (e) { + throw new RavenConfigError('Invalid DSN: ' + str); + } - self._isRavenInstalled = true; + if (dsn.pass && !this._globalOptions.allowSecretKey) { + throw new RavenConfigError( + 'Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key' + ); } - Error.stackTraceLimit = self._globalOptions.stackTraceLimit; - return this; + return dsn; }, - /* - * Set the DSN (can be called multiple time unlike config) - * - * @param {string} dsn The public Sentry DSN - */ - setDSN: function setDSN(dsn) { - var self = this, - uri = self._parseDSN(dsn), - lastSlash = uri.path.lastIndexOf('/'), - path = uri.path.substr(1, lastSlash); - - self._dsn = dsn; - self._globalKey = uri.user; - self._globalSecret = uri.pass && uri.pass.substr(1); - self._globalProject = uri.path.substr(lastSlash + 1); - self._globalServer = self._getGlobalServer(uri); - self._globalEndpoint = self._globalServer + '/' + path + 'api/' + self._globalProject + '/store/'; // Reset backoff state since we may be pointing at a - // new project/server + _getGlobalServer: function(uri) { + // assemble the endpoint from the uri pieces + var globalServer = '//' + uri.host + (uri.port ? ':' + uri.port : ''); - this._resetBackoff(); + if (uri.protocol) { + globalServer = uri.protocol + ':' + globalServer; + } + return globalServer; }, - /* - * Wrap code within a context so Raven can capture errors - * reliably across domains that is executed immediately. - * - * @param {object} options A specific set of options for this context [optional] - * @param {function} func The callback to be immediately executed within the context - * @param {array} args An array of arguments to be called with the callback [optional] - */ - context: function context(options, func, args) { - if (isFunction(options)) { - args = func || []; - func = options; - options = undefined; + _handleOnErrorStackInfo: function() { + // if we are intentionally ignoring errors via onerror, bail out + if (!this._ignoreOnError) { + this._handleStackInfo.apply(this, arguments); } - - return this.wrap(options, func).apply(this, args); }, - /* - * Wrap code within a context and returns back a new function to be executed - * - * @param {object} options A specific set of options for this context [optional] - * @param {function} func The function to be wrapped in a new context - * @param {function} func A function to call before the try/catch wrapper [optional, private] - * @return {function} The newly wrapped functions with a context - */ - wrap: function wrap(options, func, _before) { - var self = this; // 1 argument has been passed, and it's not a function - // so just return it + _handleStackInfo: function(stackInfo, options) { + var frames = this._prepareFrames(stackInfo, options); - if (isUndefined(func) && !isFunction(options)) { - return options; - } // options is optional + this._triggerEvent('handle', { + stackInfo: stackInfo, + options: options + }); + this._processException( + stackInfo.name, + stackInfo.message, + stackInfo.url, + stackInfo.lineno, + frames, + options + ); + }, - if (isFunction(options)) { - func = options; - options = undefined; - } // At this point, we've passed along 2 arguments, and the second one - // is not a function either, so we'll just return the second argument. + _prepareFrames: function(stackInfo, options) { + var self = this; + var frames = []; + if (stackInfo.stack && stackInfo.stack.length) { + each(stackInfo.stack, function(i, stack) { + var frame = self._normalizeFrame(stack, stackInfo.url); + if (frame) { + frames.push(frame); + } + }); + // e.g. frames captured via captureMessage throw + if (options && options.trimHeadFrames) { + for (var j = 0; j < options.trimHeadFrames && j < frames.length; j++) { + frames[j].in_app = false; + } + } + } + frames = frames.slice(0, this._globalOptions.stackTraceLimit); + return frames; + }, - if (!isFunction(func)) { - return func; - } // We don't wanna wrap it twice! + _normalizeFrame: function(frame, stackInfoUrl) { + // normalize the frames data + var normalized = { + filename: frame.url, + lineno: frame.line, + colno: frame.column, + function: frame.func || '?' + }; + // Case when we don't have any information about the error + // E.g. throwing a string or raw object, instead of an `Error` in Firefox + // Generating synthetic error doesn't add any value here + // + // We should probably somehow let a user know that they should fix their code + if (!frame.url) { + normalized.filename = stackInfoUrl; // fallback to whole stacks url from onerror handler + } - try { - if (func.__raven__) { - return func; - } // If this has already been wrapped in the past, return that + normalized.in_app = !// determine if an exception came from outside of our app + // first we check the global includePaths list. + ( + (!!this._globalOptions.includePaths.test && + !this._globalOptions.includePaths.test(normalized.filename)) || + // Now we check for fun, if the function name is Raven or TraceKit + /(Raven|TraceKit)\./.test(normalized['function']) || + // finally, we do a last ditch effort and check for raven.min.js + /raven\.(min\.)?js$/.test(normalized.filename) + ); + return normalized; + }, - if (func.__raven_wrapper__) { - return func.__raven_wrapper__; - } - } catch (e) { - // Just accessing custom props in some Selenium environments - // can cause a "Permission denied" exception (see raven-js#495). - // Bail on wrapping and return the function as-is (defers to window.onerror). - return func; + _processException: function(type, message, fileurl, lineno, frames, options) { + var prefixedMessage = (type ? type + ': ' : '') + (message || ''); + if ( + !!this._globalOptions.ignoreErrors.test && + (this._globalOptions.ignoreErrors.test(message) || + this._globalOptions.ignoreErrors.test(prefixedMessage)) + ) { + return; } - function wrapped() { - var args = [], - i = arguments.length, - deep = !options || options && options.deep !== false; + var stacktrace; - if (_before && isFunction(_before)) { - _before.apply(this, arguments); - } // Recursively wrap all of a function's arguments that are - // functions themselves. + if (frames && frames.length) { + fileurl = frames[0].filename || fileurl; + // Sentry expects frames oldest to newest + // and JS sends them as newest to oldest + frames.reverse(); + stacktrace = {frames: frames}; + } else if (fileurl) { + stacktrace = { + frames: [ + { + filename: fileurl, + lineno: lineno, + in_app: true + } + ] + }; + } + if ( + !!this._globalOptions.ignoreUrls.test && + this._globalOptions.ignoreUrls.test(fileurl) + ) { + return; + } - while (i--) { - args[i] = deep ? self.wrap(options, arguments[i]) : arguments[i]; - } + if ( + !!this._globalOptions.whitelistUrls.test && + !this._globalOptions.whitelistUrls.test(fileurl) + ) { + return; + } - try { - // Attempt to invoke user-land function - // NOTE: If you are a Sentry user, and you are seeing this stack frame, it - // means Raven caught an error invoking your application code. This is - // expected behavior and NOT indicative of a bug with Raven.js. - return func.apply(this, args); - } catch (e) { - self._ignoreNextOnError(); + var data = objectMerge( + { + // sentry.interfaces.Exception + exception: { + values: [ + { + type: type, + value: message, + stacktrace: stacktrace + } + ] + }, + culprit: fileurl + }, + options + ); - self.captureException(e, options); - throw e; - } - } // copy over properties of the old function + // Fire away! + this._send(data); + }, + _trimPacket: function(data) { + // For now, we only want to truncate the two different messages + // but this could/should be expanded to just trim everything + var max = this._globalOptions.maxMessageLength; + if (data.message) { + data.message = truncate(data.message, max); + } + if (data.exception) { + var exception = data.exception.values[0]; + exception.value = truncate(exception.value, max); + } - for (var property in func) { - if (hasKey(func, property)) { - wrapped[property] = func[property]; + var request = data.request; + if (request) { + if (request.url) { + request.url = truncate(request.url, this._globalOptions.maxUrlLength); + } + if (request.Referer) { + request.Referer = truncate(request.Referer, this._globalOptions.maxUrlLength); } } - wrapped.prototype = func.prototype; - func.__raven_wrapper__ = wrapped; // Signal that this function has been wrapped/filled already - // for both debugging and to prevent it to being wrapped/filled twice + if (data.breadcrumbs && data.breadcrumbs.values) + this._trimBreadcrumbs(data.breadcrumbs); - wrapped.__raven__ = true; - wrapped.__orig__ = func; - return wrapped; + return data; }, - /* - * Uninstalls the global error handler. - * - * @return {Raven} - */ - uninstall: function uninstall() { - tracekit.report.uninstall(); + /** + * Truncate breadcrumb values (right now just URLs) + */ + _trimBreadcrumbs: function(breadcrumbs) { + // known breadcrumb properties with urls + // TODO: also consider arbitrary prop values that start with (https?)?:// + var urlProps = ['to', 'from', 'url'], + urlProp, + crumb, + data; - this._unpatchFunctionToString(); + for (var i = 0; i < breadcrumbs.values.length; ++i) { + crumb = breadcrumbs.values[i]; + if ( + !crumb.hasOwnProperty('data') || + !isObject(crumb.data) || + objectFrozen(crumb.data) + ) + continue; - this._restoreBuiltIns(); + data = objectMerge({}, crumb.data); + for (var j = 0; j < urlProps.length; ++j) { + urlProp = urlProps[j]; + if (data.hasOwnProperty(urlProp) && data[urlProp]) { + data[urlProp] = truncate(data[urlProp], this._globalOptions.maxUrlLength); + } + } + breadcrumbs.values[i].data = data; + } + }, - this._restoreConsole(); + _getHttpData: function() { + if (!this._hasNavigator && !this._hasDocument) return; + var httpData = {}; - Error.stackTraceLimit = this._originalErrorStackTraceLimit; - this._isRavenInstalled = false; - return this; - }, + if (this._hasNavigator && _navigator.userAgent) { + httpData.headers = { + 'User-Agent': navigator.userAgent + }; + } - /* - * Manually capture an exception and send it over to Sentry - * - * @param {error} ex An exception to be logged - * @param {object} options A specific set of options for this error [optional] - * @return {Raven} - */ - captureException: function captureException(ex, options) { - options = objectMerge({ - trimHeadFrames: 0 - }, options ? options : {}); // Cases for sending ex as a message, rather than an exception + // Check in `window` instead of `document`, as we may be in ServiceWorker environment + if (_window.location && _window.location.href) { + httpData.url = _window.location.href; + } - var isNotError = !isError(ex); - var isNotErrorEvent = !isErrorEvent(ex); - var isErrorEventWithoutError = isErrorEvent(ex) && !ex.error; + if (this._hasDocument && _document.referrer) { + if (!httpData.headers) httpData.headers = {}; + httpData.headers.Referer = _document.referrer; + } - if (isNotError && isNotErrorEvent || isErrorEventWithoutError) { - return this.captureMessage(ex, objectMerge(options, { - stacktrace: true, - // if we fall back to captureMessage, default to attempting a new trace - trimHeadFrames: options.trimHeadFrames + 1 - })); - } // Get actual Error from ErrorEvent + return httpData; + }, + _resetBackoff: function() { + this._backoffDuration = 0; + this._backoffStart = null; + }, - if (isErrorEvent(ex)) ex = ex.error; // Store the raw exception object for potential debugging and introspection + _shouldBackoff: function() { + return this._backoffDuration && now() - this._backoffStart < this._backoffDuration; + }, - this._lastCapturedException = ex; // TraceKit.report will re-raise any exception passed to it, - // which means you have to wrap it in try/catch. Instead, we - // can wrap it here and only re-raise if TraceKit.report - // raises an exception different from the one we asked to - // report on. + /** + * Returns true if the in-process data payload matches the signature + * of the previously-sent data + * + * NOTE: This has to be done at this level because TraceKit can generate + * data from window.onerror WITHOUT an exception object (IE8, IE9, + * other old browsers). This can take the form of an "exception" + * data object with a single frame (derived from the onerror args). + */ + _isRepeatData: function(current) { + var last = this._lastData; - try { - var stack = tracekit.computeStackTrace(ex); + if ( + !last || + current.message !== last.message || // defined for captureMessage + current.culprit !== last.culprit // defined for captureException/onerror + ) + return false; - this._handleStackInfo(stack, options); - } catch (ex1) { - if (ex !== ex1) { - throw ex1; - } + // Stacktrace interface (i.e. from captureMessage) + if (current.stacktrace || last.stacktrace) { + return isSameStacktrace(current.stacktrace, last.stacktrace); + } else if (current.exception || last.exception) { + // Exception interface (i.e. from captureException/onerror) + return isSameException(current.exception, last.exception); } - return this; + return true; }, - /* - * Manually send a message to Sentry - * - * @param {string} msg A plain message to be captured in Sentry - * @param {object} options A specific set of options for this message [optional] - * @return {Raven} - */ - captureMessage: function captureMessage(msg, options) { - // config() automagically converts ignoreErrors from a list to a RegExp so we need to test for an - // early call; we'll error on the side of logging anything called before configuration since it's - // probably something you should see: - if (!!this._globalOptions.ignoreErrors.test && this._globalOptions.ignoreErrors.test(msg)) { + _setBackoffState: function(request) { + // If we are already in a backoff state, don't change anything + if (this._shouldBackoff()) { return; } - options = options || {}; - var data = objectMerge({ - message: msg + '' // Make sure it's actually a string + var status = request.status; - }, options); - var ex; // Generate a "synthetic" stack trace from this point. - // NOTE: If you are a Sentry user, and you are seeing this stack frame, it is NOT indicative - // of a bug with Raven.js. Sentry generates synthetic traces either by configuration, - // or if it catches a thrown object without a "stack" property. + // 400 - project_id doesn't exist or some other fatal + // 401 - invalid/revoked dsn + // 429 - too many requests + if (!(status === 400 || status === 401 || status === 429)) return; + var retry; try { - throw new Error(msg); - } catch (ex1) { - ex = ex1; - } // null exception name so `Error` isn't prefixed to msg + // If Retry-After is not in Access-Control-Expose-Headers, most + // browsers will throw an exception trying to access it + if (supportsFetch()) { + retry = request.headers.get('Retry-After'); + } else { + retry = request.getResponseHeader('Retry-After'); + } + // Retry-After is returned in seconds + retry = parseInt(retry, 10) * 1000; + } catch (e) { + /* eslint no-empty:0 */ + } - ex.name = null; - var stack = tracekit.computeStackTrace(ex); // stack[0] is `throw new Error(msg)` call itself, we are interested in the frame that was just before that, stack[1] + this._backoffDuration = retry + ? // If Sentry server returned a Retry-After value, use it + retry + : // Otherwise, double the last backoff duration (starts at 1 sec) + this._backoffDuration * 2 || 1000; - var initialCall = isArray(stack.stack) && stack.stack[1]; - var fileurl = initialCall && initialCall.url || ''; + this._backoffStart = now(); + }, - if (!!this._globalOptions.ignoreUrls.test && this._globalOptions.ignoreUrls.test(fileurl)) { - return; - } + _send: function(data) { + var globalOptions = this._globalOptions; - if (!!this._globalOptions.whitelistUrls.test && !this._globalOptions.whitelistUrls.test(fileurl)) { - return; + var baseData = { + project: this._globalProject, + logger: globalOptions.logger, + platform: 'javascript' + }, + httpData = this._getHttpData(); + + if (httpData) { + baseData.request = httpData; } - if (this._globalOptions.stacktrace || options && options.stacktrace) { - options = objectMerge({ - // fingerprint on msg, not stack trace (legacy behavior, could be - // revisited) - fingerprint: msg, - // since we know this is a synthetic trace, the top N-most frames - // MUST be from Raven.js, so mark them as in_app later by setting - // trimHeadFrames - trimHeadFrames: (options.trimHeadFrames || 0) + 1 - }, options); + // HACK: delete `trimHeadFrames` to prevent from appearing in outbound payload + if (data.trimHeadFrames) delete data.trimHeadFrames; - var frames = this._prepareFrames(stack, options); + data = objectMerge(baseData, data); - data.stacktrace = { - // Sentry expects frames oldest to newest - frames: frames.reverse() + // Merge in the tags and extra separately since objectMerge doesn't handle a deep merge + data.tags = objectMerge(objectMerge({}, this._globalContext.tags), data.tags); + data.extra = objectMerge(objectMerge({}, this._globalContext.extra), data.extra); + + // Send along our own collected metadata with extra + data.extra['session:duration'] = now() - this._startTime; + + if (this._breadcrumbs && this._breadcrumbs.length > 0) { + // intentionally make shallow copy so that additions + // to breadcrumbs aren't accidentally sent in this request + data.breadcrumbs = { + values: [].slice.call(this._breadcrumbs, 0) }; - } // Fire away! + } + if (this._globalContext.user) { + // sentry.interfaces.User + data.user = this._globalContext.user; + } - this._send(data); + // Include the environment if it's defined in globalOptions + if (globalOptions.environment) data.environment = globalOptions.environment; - return this; - }, - captureBreadcrumb: function captureBreadcrumb(obj) { - var crumb = objectMerge({ - timestamp: now() / 1000 - }, obj); + // Include the release if it's defined in globalOptions + if (globalOptions.release) data.release = globalOptions.release; - if (isFunction(this._globalOptions.breadcrumbCallback)) { - var result = this._globalOptions.breadcrumbCallback(crumb); + // Include server_name if it's defined in globalOptions + if (globalOptions.serverName) data.server_name = globalOptions.serverName; - if (isObject(result) && !isEmptyObject(result)) { - crumb = result; - } else if (result === false) { - return this; - } - } + data = this._sanitizeData(data); - this._breadcrumbs.push(crumb); + // Cleanup empty properties before sending them to the server + Object.keys(data).forEach(function(key) { + if (data[key] == null || data[key] === '' || isEmptyObject(data[key])) { + delete data[key]; + } + }); - if (this._breadcrumbs.length > this._globalOptions.maxBreadcrumbs) { - this._breadcrumbs.shift(); + if (isFunction(globalOptions.dataCallback)) { + data = globalOptions.dataCallback(data) || data; } - return this; - }, - addPlugin: function addPlugin(plugin - /*arg1, arg2, ... argN*/ - ) { - var pluginArgs = [].slice.call(arguments, 1); + // Why?????????? + if (!data || isEmptyObject(data)) { + return; + } - this._plugins.push([plugin, pluginArgs]); + // Check if the request should be filtered or not + if ( + isFunction(globalOptions.shouldSendCallback) && + !globalOptions.shouldSendCallback(data) + ) { + return; + } - if (this._isRavenInstalled) { - this._drainPlugins(); + // Backoff state: Sentry server previously responded w/ an error (e.g. 429 - too many requests), + // so drop requests until "cool-off" period has elapsed. + if (this._shouldBackoff()) { + this._logDebug('warn', 'Raven dropped error due to backoff: ', data); + return; } - return this; + if (typeof globalOptions.sampleRate === 'number') { + if (Math.random() < globalOptions.sampleRate) { + this._sendProcessedPayload(data); + } + } else { + this._sendProcessedPayload(data); + } }, - /* - * Set/clear a user to be sent along with the payload. - * - * @param {object} user An object representing user data [optional] - * @return {Raven} - */ - setUserContext: function setUserContext(user) { - // Intentionally do not merge here since that's an unexpected behavior. - this._globalContext.user = user; - return this; + _sanitizeData: function(data) { + return sanitize(data, this._globalOptions.sanitizeKeys); }, - /* - * Merge extra attributes to be sent along with the payload. - * - * @param {object} extra An object representing extra data [optional] - * @return {Raven} - */ - setExtraContext: function setExtraContext(extra) { - this._mergeContext('extra', extra); - - return this; + _getUuid: function() { + return uuid4(); }, - /* - * Merge tags to be sent along with the payload. - * - * @param {object} tags An object representing tags [optional] - * @return {Raven} - */ - setTagsContext: function setTagsContext(tags) { - this._mergeContext('tags', tags); + _sendProcessedPayload: function(data, callback) { + var self = this; + var globalOptions = this._globalOptions; - return this; - }, + if (!this.isSetup()) return; - /* - * Clear all of the context. - * - * @return {Raven} - */ - clearContext: function clearContext() { - this._globalContext = {}; - return this; - }, + // Try and clean up the packet before sending by truncating long values + data = this._trimPacket(data); - /* - * Get a copy of the current context. This cannot be mutated. - * - * @return {object} copy of context - */ - getContext: function getContext() { - // lol javascript - return JSON.parse(stringify_1(this._globalContext)); - }, + // ideally duplicate error testing should occur *before* dataCallback/shouldSendCallback, + // but this would require copying an un-truncated copy of the data packet, which can be + // arbitrarily deep (extra_data) -- could be worthwhile? will revisit + if (!this._globalOptions.allowDuplicates && this._isRepeatData(data)) { + this._logDebug('warn', 'Raven dropped repeat event: ', data); + return; + } - /* - * Set environment of application - * - * @param {string} environment Typically something like 'production'. - * @return {Raven} - */ - setEnvironment: function setEnvironment(environment) { - this._globalOptions.environment = environment; - return this; - }, + // Send along an event_id if not explicitly passed. + // This event_id can be used to reference the error within Sentry itself. + // Set lastEventId after we know the error should actually be sent + this._lastEventId = data.event_id || (data.event_id = this._getUuid()); - /* - * Set release version of application - * - * @param {string} release Typically something like a git SHA to identify version - * @return {Raven} - */ - setRelease: function setRelease(release) { - this._globalOptions.release = release; - return this; - }, + // Store outbound payload after trim + this._lastData = data; - /* - * Set the dataCallback option - * - * @param {function} callback The callback to run which allows the - * data blob to be mutated before sending - * @return {Raven} - */ - setDataCallback: function setDataCallback(callback) { - var original = this._globalOptions.dataCallback; - this._globalOptions.dataCallback = keepOriginalCallback(original, callback); - return this; - }, + this._logDebug('debug', 'Raven about to send:', data); - /* - * Set the breadcrumbCallback option - * - * @param {function} callback The callback to run which allows filtering - * or mutating breadcrumbs - * @return {Raven} - */ - setBreadcrumbCallback: function setBreadcrumbCallback(callback) { - var original = this._globalOptions.breadcrumbCallback; - this._globalOptions.breadcrumbCallback = keepOriginalCallback(original, callback); - return this; - }, + var auth = { + sentry_version: '7', + sentry_client: 'raven-js/' + this.VERSION, + sentry_key: this._globalKey + }; - /* - * Set the shouldSendCallback option - * - * @param {function} callback The callback to run which allows - * introspecting the blob before sending - * @return {Raven} - */ - setShouldSendCallback: function setShouldSendCallback(callback) { - var original = this._globalOptions.shouldSendCallback; - this._globalOptions.shouldSendCallback = keepOriginalCallback(original, callback); - return this; - }, + if (this._globalSecret) { + auth.sentry_secret = this._globalSecret; + } - /** - * Override the default HTTP transport mechanism that transmits data - * to the Sentry server. - * - * @param {function} transport Function invoked instead of the default - * `makeRequest` handler. - * - * @return {Raven} - */ - setTransport: function setTransport(transport) { - this._globalOptions.transport = transport; - return this; - }, + var exception = data.exception && data.exception.values[0]; - /* - * Get the latest raw exception that was captured by Raven. - * - * @return {error} - */ - lastException: function lastException() { - return this._lastCapturedException; - }, + // only capture 'sentry' breadcrumb is autoBreadcrumbs is truthy + if ( + this._globalOptions.autoBreadcrumbs && + this._globalOptions.autoBreadcrumbs.sentry + ) { + this.captureBreadcrumb({ + category: 'sentry', + message: exception + ? (exception.type ? exception.type + ': ' : '') + exception.value + : data.message, + event_id: data.event_id, + level: data.level || 'error' // presume error unless specified + }); + } - /* - * Get the last event id - * - * @return {string} - */ - lastEventId: function lastEventId() { - return this._lastEventId; - }, + var url = this._globalEndpoint; + (globalOptions.transport || this._makeRequest).call(this, { + url: url, + auth: auth, + data: data, + options: globalOptions, + onSuccess: function success() { + self._resetBackoff(); - /* - * Determine if Raven is setup and ready to go. - * - * @return {boolean} - */ - isSetup: function isSetup() { - if (!this._hasJSON) return false; // needs JSON support + self._triggerEvent('success', { + data: data, + src: url + }); + callback && callback(); + }, + onError: function failure(error) { + self._logDebug('error', 'Raven transport failed to send: ', error); - if (!this._globalServer) { - if (!this.ravenNotConfiguredError) { - this.ravenNotConfiguredError = true; + if (error.request) { + self._setBackoffState(error.request); + } - this._logDebug('error', 'Error: Raven has not been configured.'); + self._triggerEvent('failure', { + data: data, + src: url + }); + error = error || new Error('Raven send failed (no additional details provided)'); + callback && callback(error); } + }); + }, - return false; - } + _makeRequest: function(opts) { + // Auth is intentionally sent as part of query string (NOT as custom HTTP header) to avoid preflight CORS requests + var url = opts.url + '?' + urlencode(opts.auth); - return true; - }, - afterLoad: function afterLoad() { - // TODO: remove window dependence? - // Attempt to initialize Raven on load - var RavenConfig = _window$1.RavenConfig; + var evaluatedHeaders = null; + var evaluatedFetchParameters = {}; - if (RavenConfig) { - this.config(RavenConfig.dsn, RavenConfig.config).install(); + if (opts.options.headers) { + evaluatedHeaders = this._evaluateHash(opts.options.headers); } - }, - showReportDialog: function showReportDialog(options) { - if (!_document // doesn't work without a document (React native) - ) return; - options = options || {}; - var lastEventId = options.eventId || this.lastEventId(); - if (!lastEventId) { - throw new configError('Missing eventId'); + if (opts.options.fetchParameters) { + evaluatedFetchParameters = this._evaluateHash(opts.options.fetchParameters); } - var dsn = options.dsn || this._dsn; + if (supportsFetch()) { + evaluatedFetchParameters.body = stringify(opts.data); - if (!dsn) { - throw new configError('Missing DSN'); - } + var defaultFetchOptions = objectMerge({}, this._fetchDefaults); + var fetchOptions = objectMerge(defaultFetchOptions, evaluatedFetchParameters); - var encode = encodeURIComponent; - var qs = ''; - qs += '?eventId=' + encode(lastEventId); - qs += '&dsn=' + encode(dsn); - var user = options.user || this._globalContext.user; + if (evaluatedHeaders) { + fetchOptions.headers = evaluatedHeaders; + } - if (user) { - if (user.name) qs += '&name=' + encode(user.name); - if (user.email) qs += '&email=' + encode(user.email); + return _window + .fetch(url, fetchOptions) + .then(function(response) { + if (response.ok) { + opts.onSuccess && opts.onSuccess(); + } else { + var error = new Error('Sentry error code: ' + response.status); + // It's called request only to keep compatibility with XHR interface + // and not add more redundant checks in setBackoffState method + error.request = response; + opts.onError && opts.onError(error); + } + }) + ['catch'](function() { + opts.onError && + opts.onError(new Error('Sentry error code: network unavailable')); + }); } - var globalServer = this._getGlobalServer(this._parseDSN(dsn)); - - var script = _document.createElement('script'); - - script.async = true; - script.src = globalServer + '/api/embed/error-page/' + qs; + var request = _window.XMLHttpRequest && new _window.XMLHttpRequest(); + if (!request) return; - (_document.head || _document.body).appendChild(script); - }, + // if browser doesn't support CORS (e.g. IE7), we are out of luck + var hasCORS = 'withCredentials' in request || typeof XDomainRequest !== 'undefined'; - /**** Private functions ****/ - _ignoreNextOnError: function _ignoreNextOnError() { - var self = this; - this._ignoreOnError += 1; - setTimeout(function () { - // onerror should trigger before setTimeout - self._ignoreOnError -= 1; - }); - }, - _triggerEvent: function _triggerEvent(eventType, options) { - // NOTE: `event` is a native browser thing, so let's avoid conflicting wiht it - var evt, key; - if (!this._hasDocument) return; - options = options || {}; - eventType = 'raven' + eventType.substr(0, 1).toUpperCase() + eventType.substr(1); + if (!hasCORS) return; - if (_document.createEvent) { - evt = _document.createEvent('HTMLEvents'); - evt.initEvent(eventType, true, true); + if ('withCredentials' in request) { + request.onreadystatechange = function() { + if (request.readyState !== 4) { + return; + } else if (request.status === 200) { + opts.onSuccess && opts.onSuccess(); + } else if (opts.onError) { + var err = new Error('Sentry error code: ' + request.status); + err.request = request; + opts.onError(err); + } + }; } else { - evt = _document.createEventObject(); - evt.eventType = eventType; - } + request = new XDomainRequest(); + // xdomainrequest cannot go http -> https (or vice versa), + // so always use protocol relative + url = url.replace(/^https?:/, ''); - for (key in options) { - if (hasKey(options, key)) { - evt[key] = options[key]; + // onreadystatechange not supported by XDomainRequest + if (opts.onSuccess) { + request.onload = opts.onSuccess; } - } - - if (_document.createEvent) { - // IE9 if standards - _document.dispatchEvent(evt); - } else { - // IE8 regardless of Quirks or Standards - // IE9 if quirks - try { - _document.fireEvent('on' + evt.eventType.toLowerCase(), evt); - } catch (e) {// Do nothing + if (opts.onError) { + request.onerror = function() { + var err = new Error('Sentry error code: XDomainRequest'); + err.request = request; + opts.onError(err); + }; } } - }, - /** - * Wraps addEventListener to capture UI breadcrumbs - * @param evtName the event name (e.g. "click") - * @returns {Function} - * @private - */ - _breadcrumbEventHandler: function _breadcrumbEventHandler(evtName) { - var self = this; - return function (evt) { - // reset keypress timeout; e.g. triggering a 'click' after - // a 'keypress' will reset the keypress debounce so that a new - // set of keypresses can be recorded - self._keypressTimeout = null; // It's possible this handler might trigger multiple times for the same - // event (e.g. event propagation through node ancestors). Ignore if we've - // already captured the event. + request.open('POST', url); - if (self._lastCapturedEvent === evt) return; - self._lastCapturedEvent = evt; // try/catch both: - // - accessing evt.target (see getsentry/raven-js#838, #768) - // - `htmlTreeAsString` because it's complex, and just accessing the DOM incorrectly - // can throw an exception in some circumstances. + if (evaluatedHeaders) { + each(evaluatedHeaders, function(key, value) { + request.setRequestHeader(key, value); + }); + } - var target; + request.send(stringify(opts.data)); + }, - try { - target = htmlTreeAsString(evt.target); - } catch (e) { - target = ''; + _evaluateHash: function(hash) { + var evaluated = {}; + + for (var key in hash) { + if (hash.hasOwnProperty(key)) { + var value = hash[key]; + evaluated[key] = typeof value === 'function' ? value() : value; } + } - self.captureBreadcrumb({ - category: 'ui.' + evtName, - // e.g. ui.click, ui.input - message: target - }); - }; + return evaluated; }, - /** - * Wraps addEventListener to capture keypress UI events - * @returns {Function} - * @private - */ - _keypressEventHandler: function _keypressEventHandler() { - var self = this, - debounceDuration = 1000; // milliseconds - // TODO: if somehow user switches keypress target before - // debounce timeout is triggered, we will only capture - // a single breadcrumb from the FIRST target (acceptable?) + _logDebug: function(level) { + // We allow `Raven.debug` and `Raven.config(DSN, { debug: true })` to not make backward incompatible API change + if ( + this._originalConsoleMethods[level] && + (this.debug || this._globalOptions.debug) + ) { + // In IE<10 console methods do not have their own 'apply' method + Function.prototype.apply.call( + this._originalConsoleMethods[level], + this._originalConsole, + [].slice.call(arguments, 1) + ); + } + }, - return function (evt) { - var target; + _mergeContext: function(key, context) { + if (isUndefined(context)) { + delete this._globalContext[key]; + } else { + this._globalContext[key] = objectMerge(this._globalContext[key] || {}, context); + } + } +}; - try { - target = evt.target; - } catch (e) { - // just accessing event properties can throw an exception in some rare circumstances - // see: https://github.com/getsentry/raven-js/issues/838 - return; - } +// Deprecations +Raven.prototype.setUser = Raven.prototype.setUserContext; +Raven.prototype.setReleaseContext = Raven.prototype.setRelease; - var tagName = target && target.tagName; // only consider keypress events on actual input elements - // this will disregard keypresses targeting body (e.g. tabbing - // through elements, hotkeys, etc) +module.exports = Raven; - if (!tagName || tagName !== 'INPUT' && tagName !== 'TEXTAREA' && !target.isContentEditable) return; // record first keypress in a series, but ignore subsequent - // keypresses until debounce clears +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"10":10,"11":11,"4":4,"5":5,"8":8,"9":9}],7:[function(_dereq_,module,exports){ +(function (global){ +/** + * Enforces a single instance of the Raven client, and the + * main entry point for Raven. If you are a consumer of the + * Raven library, you SHOULD load this file (vs raven.js). + **/ - var timeout = self._keypressTimeout; +var RavenConstructor = _dereq_(6); - if (!timeout) { - self._breadcrumbEventHandler('input')(evt); - } +// This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) +var _window = + typeof window !== 'undefined' + ? window + : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; +var _Raven = _window.Raven; - clearTimeout(timeout); - self._keypressTimeout = setTimeout(function () { - self._keypressTimeout = null; - }, debounceDuration); - }; - }, +var Raven = new RavenConstructor(); - /** - * Captures a breadcrumb of type "navigation", normalizing input URLs - * @param to the originating URL - * @param from the target URL - * @private - */ - _captureUrlChange: function _captureUrlChange(from, to) { - var parsedLoc = parseUrl(this._location.href); - var parsedTo = parseUrl(to); - var parsedFrom = parseUrl(from); // because onpopstate only tells you the "new" (to) value of location.href, and - // not the previous (from) value, we need to track the value of the current URL - // state ourselves +/* + * Allow multiple versions of Raven to be installed. + * Strip Raven from the global context and returns the instance. + * + * @return {Raven} + */ +Raven.noConflict = function() { + _window.Raven = _Raven; + return Raven; +}; - this._lastHref = to; // Use only the path component of the URL if the URL matches the current - // document (almost all the time when using pushState) +Raven.afterLoad(); - if (parsedLoc.protocol === parsedTo.protocol && parsedLoc.host === parsedTo.host) to = parsedTo.relative; - if (parsedLoc.protocol === parsedFrom.protocol && parsedLoc.host === parsedFrom.host) from = parsedFrom.relative; - this.captureBreadcrumb({ - category: 'navigation', - data: { - to: to, - from: from - } - }); - }, - _patchFunctionToString: function _patchFunctionToString() { - var self = this; - self._originalFunctionToString = Function.prototype.toString; // eslint-disable-next-line no-extend-native +module.exports = Raven; - Function.prototype.toString = function () { - if (typeof this === 'function' && this.__raven__) { - return self._originalFunctionToString.apply(this.__orig__, arguments); - } +/** + * DISCLAIMER: + * + * Expose `Client` constructor for cases where user want to track multiple "sub-applications" in one larger app. + * It's not meant to be used by a wide audience, so pleaaase make sure that you know what you're doing before using it. + * Accidentally calling `install` multiple times, may result in an unexpected behavior that's very hard to debug. + * + * It's called `Client' to be in-line with Raven Node implementation. + * + * HOWTO: + * + * import Raven from 'raven-js'; + * + * const someAppReporter = new Raven.Client(); + * const someOtherAppReporter = new Raven.Client(); + * + * someAppReporter.config('__DSN__', { + * ...config goes here + * }); + * + * someOtherAppReporter.config('__OTHER_DSN__', { + * ...config goes here + * }); + * + * someAppReporter.captureMessage(...); + * someAppReporter.captureException(...); + * someAppReporter.captureBreadcrumb(...); + * + * someOtherAppReporter.captureMessage(...); + * someOtherAppReporter.captureException(...); + * someOtherAppReporter.captureBreadcrumb(...); + * + * It should "just work". + */ +module.exports.Client = RavenConstructor; - return self._originalFunctionToString.apply(this, arguments); - }; - }, - _unpatchFunctionToString: function _unpatchFunctionToString() { - if (this._originalFunctionToString) { - // eslint-disable-next-line no-extend-native - Function.prototype.toString = this._originalFunctionToString; - } - }, +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"6":6}],8:[function(_dereq_,module,exports){ +(function (global){ +var stringify = _dereq_(10); - /** - * Wrap timer functions and event targets to catch errors and provide - * better metadata. - */ - _instrumentTryCatch: function _instrumentTryCatch() { - var self = this; - var wrappedBuiltIns = self._wrappedBuiltIns; +var _window = + typeof window !== 'undefined' + ? window + : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; - function wrapTimeFn(orig) { - return function (fn, t) { - // preserve arity - // Make a copy of the arguments to prevent deoptimization - // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments - var args = new Array(arguments.length); +function isObject(what) { + return typeof what === 'object' && what !== null; +} - for (var i = 0; i < args.length; ++i) { - args[i] = arguments[i]; - } +// Yanked from https://git.io/vS8DV re-used under CC0 +// with some tiny modifications +function isError(value) { + switch ({}.toString.call(value)) { + case '[object Error]': + return true; + case '[object Exception]': + return true; + case '[object DOMException]': + return true; + default: + return value instanceof Error; + } +} - var originalCallback = args[0]; +function isErrorEvent(value) { + return supportsErrorEvent() && {}.toString.call(value) === '[object ErrorEvent]'; +} - if (isFunction(originalCallback)) { - args[0] = self.wrap(originalCallback); - } // IE < 9 doesn't support .call/.apply on setInterval/setTimeout, but it - // also supports only two arguments and doesn't care what this is, so we - // can just call the original function directly. +function isUndefined(what) { + return what === void 0; +} +function isFunction(what) { + return typeof what === 'function'; +} - if (orig.apply) { - return orig.apply(this, args); - } else { - return orig(args[0], args[1]); - } - }; - } +function isPlainObject(what) { + return Object.prototype.toString.call(what) === '[object Object]'; +} - var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; +function isString(what) { + return Object.prototype.toString.call(what) === '[object String]'; +} - function wrapEventTarget(global) { - var proto = _window$1[global] && _window$1[global].prototype; +function isArray(what) { + return Object.prototype.toString.call(what) === '[object Array]'; +} - if (proto && proto.hasOwnProperty && proto.hasOwnProperty('addEventListener')) { - fill(proto, 'addEventListener', function (orig) { - return function (evtName, fn, capture, secure) { - // preserve arity - try { - if (fn && fn.handleEvent) { - fn.handleEvent = self.wrap(fn.handleEvent); - } - } catch (err) {} // can sometimes get 'Permission denied to access property "handle Event' - // More breadcrumb DOM capture ... done here and not in `_instrumentBreadcrumbs` - // so that we don't have more than one wrapper function +function isEmptyObject(what) { + if (!isPlainObject(what)) return false; + for (var _ in what) { + if (what.hasOwnProperty(_)) { + return false; + } + } + return true; +} - var before, clickHandler, keypressHandler; +function supportsErrorEvent() { + try { + new ErrorEvent(''); // eslint-disable-line no-new + return true; + } catch (e) { + return false; + } +} - if (autoBreadcrumbs && autoBreadcrumbs.dom && (global === 'EventTarget' || global === 'Node')) { - // NOTE: generating multiple handlers per addEventListener invocation, should - // revisit and verify we can just use one (almost certainly) - clickHandler = self._breadcrumbEventHandler('click'); - keypressHandler = self._keypressEventHandler(); +function supportsFetch() { + if (!('fetch' in _window)) return false; - before = function before(evt) { - // need to intercept every DOM event in `before` argument, in case that - // same wrapped method is re-used for different events (e.g. mousemove THEN click) - // see #724 - if (!evt) return; - var eventType; + try { + new Headers(); // eslint-disable-line no-new + new Request(''); // eslint-disable-line no-new + new Response(); // eslint-disable-line no-new + return true; + } catch (e) { + return false; + } +} - try { - eventType = evt.type; - } catch (e) { - // just accessing event properties can throw an exception in some rare circumstances - // see: https://github.com/getsentry/raven-js/issues/838 - return; - } +// Despite all stars in the sky saying that Edge supports old draft syntax, aka 'never', 'always', 'origin' and 'default +// https://caniuse.com/#feat=referrer-policy +// It doesn't. And it throw exception instead of ignoring this parameter... +// REF: https://github.com/getsentry/raven-js/issues/1233 +function supportsReferrerPolicy() { + if (!supportsFetch()) return false; - if (eventType === 'click') return clickHandler(evt);else if (eventType === 'keypress') return keypressHandler(evt); - }; - } + try { + // eslint-disable-next-line no-new + new Request('pickleRick', { + referrerPolicy: 'origin' + }); + return true; + } catch (e) { + return false; + } +} - return orig.call(this, evtName, self.wrap(fn, undefined, before), capture, secure); - }; - }, wrappedBuiltIns); - fill(proto, 'removeEventListener', function (orig) { - return function (evt, fn, capture, secure) { - try { - fn = fn && (fn.__raven_wrapper__ ? fn.__raven_wrapper__ : fn); - } catch (e) {// ignore, accessing __raven_wrapper__ will throw in some Selenium environments - } +function supportsPromiseRejectionEvent() { + return typeof PromiseRejectionEvent === 'function'; +} - return orig.call(this, evt, fn, capture, secure); - }; - }, wrappedBuiltIns); - } +function wrappedCallback(callback) { + function dataCallback(data, original) { + var normalizedData = callback(data) || data; + if (original) { + return original(normalizedData) || normalizedData; } + return normalizedData; + } - fill(_window$1, 'setTimeout', wrapTimeFn, wrappedBuiltIns); - fill(_window$1, 'setInterval', wrapTimeFn, wrappedBuiltIns); - - if (_window$1.requestAnimationFrame) { - fill(_window$1, 'requestAnimationFrame', function (orig) { - return function (cb) { - return orig(self.wrap(cb)); - }; - }, wrappedBuiltIns); - } // event targets borrowed from bugsnag-js: - // https://github.com/bugsnag/bugsnag-js/blob/master/src/bugsnag.js#L666 - + return dataCallback; +} - var eventTargets = ['EventTarget', 'Window', 'Node', 'ApplicationCache', 'AudioTrackList', 'ChannelMergerNode', 'CryptoOperation', 'EventSource', 'FileReader', 'HTMLUnknownElement', 'IDBDatabase', 'IDBRequest', 'IDBTransaction', 'KeyOperation', 'MediaController', 'MessagePort', 'ModalWindow', 'Notification', 'SVGElementInstance', 'Screen', 'TextTrack', 'TextTrackCue', 'TextTrackList', 'WebSocket', 'WebSocketWorker', 'Worker', 'XMLHttpRequest', 'XMLHttpRequestEventTarget', 'XMLHttpRequestUpload']; +function each(obj, callback) { + var i, j; - for (var i = 0; i < eventTargets.length; i++) { - wrapEventTarget(eventTargets[i]); + if (isUndefined(obj.length)) { + for (i in obj) { + if (hasKey(obj, i)) { + callback.call(null, i, obj[i]); + } } - }, - - /** - * Instrument browser built-ins w/ breadcrumb capturing - * - XMLHttpRequests - * - DOM interactions (click/typing) - * - window.location changes - * - console - * - * Can be disabled or individually configured via the `autoBreadcrumbs` config option - */ - _instrumentBreadcrumbs: function _instrumentBreadcrumbs() { - var self = this; - var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; - var wrappedBuiltIns = self._wrappedBuiltIns; - - function wrapProp(prop, xhr) { - if (prop in xhr && isFunction(xhr[prop])) { - fill(xhr, prop, function (orig) { - return self.wrap(orig); - }); // intentionally don't track filled methods on XHR instances + } else { + j = obj.length; + if (j) { + for (i = 0; i < j; i++) { + callback.call(null, i, obj[i]); } } + } +} - if (autoBreadcrumbs.xhr && 'XMLHttpRequest' in _window$1) { - var xhrproto = XMLHttpRequest.prototype; - fill(xhrproto, 'open', function (origOpen) { - return function (method, url) { - // preserve arity - // if Sentry key appears in URL, don't capture - if (isString(url) && url.indexOf(self._globalKey) === -1) { - this.__raven_xhr = { - method: method, - url: url, - status_code: null - }; - } - - return origOpen.apply(this, arguments); - }; - }, wrappedBuiltIns); - fill(xhrproto, 'send', function (origSend) { - return function () { - // preserve arity - var xhr = this; - - function onreadystatechangeHandler() { - if (xhr.__raven_xhr && xhr.readyState === 4) { - try { - // touching statusCode in some platforms throws - // an exception - xhr.__raven_xhr.status_code = xhr.status; - } catch (e) { - /* do nothing */ - } +function objectMerge(obj1, obj2) { + if (!obj2) { + return obj1; + } + each(obj2, function(key, value) { + obj1[key] = value; + }); + return obj1; +} - self.captureBreadcrumb({ - type: 'http', - category: 'xhr', - data: xhr.__raven_xhr - }); - } - } +/** + * This function is only used for react-native. + * react-native freezes object that have already been sent over the + * js bridge. We need this function in order to check if the object is frozen. + * So it's ok that objectFrozen returns false if Object.isFrozen is not + * supported because it's not relevant for other "platforms". See related issue: + * https://github.com/getsentry/react-native-sentry/issues/57 + */ +function objectFrozen(obj) { + if (!Object.isFrozen) { + return false; + } + return Object.isFrozen(obj); +} - var props = ['onload', 'onerror', 'onprogress']; +function truncate(str, max) { + if (typeof max !== 'number') { + throw new Error('2nd argument to `truncate` function should be a number'); + } + if (typeof str !== 'string' || max === 0) { + return str; + } + return str.length <= max ? str : str.substr(0, max) + '\u2026'; +} - for (var j = 0; j < props.length; j++) { - wrapProp(props[j], xhr); - } +/** + * hasKey, a better form of hasOwnProperty + * Example: hasKey(MainHostObject, property) === true/false + * + * @param {Object} host object to check property + * @param {string} key to check + */ +function hasKey(object, key) { + return Object.prototype.hasOwnProperty.call(object, key); +} - if ('onreadystatechange' in xhr && isFunction(xhr.onreadystatechange)) { - fill(xhr, 'onreadystatechange', function (orig) { - return self.wrap(orig, undefined, onreadystatechangeHandler); - } - /* intentionally don't track this instrumentation */ - ); - } else { - // if onreadystatechange wasn't actually set by the page on this xhr, we - // are free to set our own and capture the breadcrumb - xhr.onreadystatechange = onreadystatechangeHandler; - } +function joinRegExp(patterns) { + // Combine an array of regular expressions and strings into one large regexp + // Be mad. + var sources = [], + i = 0, + len = patterns.length, + pattern; - return origSend.apply(this, arguments); - }; - }, wrappedBuiltIns); + for (; i < len; i++) { + pattern = patterns[i]; + if (isString(pattern)) { + // If it's a string, we need to escape it + // Taken from: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions + sources.push(pattern.replace(/([.*+?^=!:${}()|\[\]\/\\])/g, '\\$1')); + } else if (pattern && pattern.source) { + // If it's a regexp already, we want to extract the source + sources.push(pattern.source); } + // Intentionally skip other cases + } + return new RegExp(sources.join('|'), 'i'); +} - if (autoBreadcrumbs.xhr && supportsFetch()) { - fill(_window$1, 'fetch', function (origFetch) { - return function () { - // preserve arity - // Make a copy of the arguments to prevent deoptimization - // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments - var args = new Array(arguments.length); - - for (var i = 0; i < args.length; ++i) { - args[i] = arguments[i]; - } +function urlencode(o) { + var pairs = []; + each(o, function(key, value) { + pairs.push(encodeURIComponent(key) + '=' + encodeURIComponent(value)); + }); + return pairs.join('&'); +} - var fetchInput = args[0]; - var method = 'GET'; - var url; +// borrowed from https://tools.ietf.org/html/rfc3986#appendix-B +// intentionally using regex and not href parsing trick because React Native and other +// environments where DOM might not be available +function parseUrl(url) { + if (typeof url !== 'string') return {}; + var match = url.match(/^(([^:\/?#]+):)?(\/\/([^\/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?$/); - if (typeof fetchInput === 'string') { - url = fetchInput; - } else if ('Request' in _window$1 && fetchInput instanceof _window$1.Request) { - url = fetchInput.url; + // coerce to undefined values to empty string so we don't get 'undefined' + var query = match[6] || ''; + var fragment = match[8] || ''; + return { + protocol: match[2], + host: match[4], + path: match[5], + relative: match[5] + query + fragment // everything minus origin + }; +} +function uuid4() { + var crypto = _window.crypto || _window.msCrypto; - if (fetchInput.method) { - method = fetchInput.method; - } - } else { - url = '' + fetchInput; - } // if Sentry key appears in URL, don't capture, as it's our own request + if (!isUndefined(crypto) && crypto.getRandomValues) { + // Use window.crypto API if available + // eslint-disable-next-line no-undef + var arr = new Uint16Array(8); + crypto.getRandomValues(arr); + // set 4 in byte 7 + arr[3] = (arr[3] & 0xfff) | 0x4000; + // set 2 most significant bits of byte 9 to '10' + arr[4] = (arr[4] & 0x3fff) | 0x8000; - if (url.indexOf(self._globalKey) !== -1) { - return origFetch.apply(this, args); - } + var pad = function(num) { + var v = num.toString(16); + while (v.length < 4) { + v = '0' + v; + } + return v; + }; - if (args[1] && args[1].method) { - method = args[1].method; - } + return ( + pad(arr[0]) + + pad(arr[1]) + + pad(arr[2]) + + pad(arr[3]) + + pad(arr[4]) + + pad(arr[5]) + + pad(arr[6]) + + pad(arr[7]) + ); + } else { + // http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/2117523#2117523 + return 'xxxxxxxxxxxx4xxxyxxxxxxxxxxxxxxx'.replace(/[xy]/g, function(c) { + var r = (Math.random() * 16) | 0, + v = c === 'x' ? r : (r & 0x3) | 0x8; + return v.toString(16); + }); + } +} - var fetchData = { - method: method, - url: url, - status_code: null - }; - return origFetch.apply(this, args).then(function (response) { - fetchData.status_code = response.status; - self.captureBreadcrumb({ - type: 'http', - category: 'fetch', - data: fetchData - }); - return response; - }); - }; - }, wrappedBuiltIns); - } // Capture breadcrumbs from any click that is unhandled / bubbled up all the way - // to the document. Do this before we instrument addEventListener. +/** + * Given a child DOM element, returns a query-selector statement describing that + * and its ancestors + * e.g. [HTMLElement] => body > div > input#foo.btn[name=baz] + * @param elem + * @returns {string} + */ +function htmlTreeAsString(elem) { + /* eslint no-extra-parens:0*/ + var MAX_TRAVERSE_HEIGHT = 5, + MAX_OUTPUT_LEN = 80, + out = [], + height = 0, + len = 0, + separator = ' > ', + sepLength = separator.length, + nextStr; + while (elem && height++ < MAX_TRAVERSE_HEIGHT) { + nextStr = htmlElementAsString(elem); + // bail out if + // - nextStr is the 'html' element + // - the length of the string that would be created exceeds MAX_OUTPUT_LEN + // (ignore this limit if we are on the first iteration) + if ( + nextStr === 'html' || + (height > 1 && len + out.length * sepLength + nextStr.length >= MAX_OUTPUT_LEN) + ) { + break; + } - if (autoBreadcrumbs.dom && this._hasDocument) { - if (_document.addEventListener) { - _document.addEventListener('click', self._breadcrumbEventHandler('click'), false); + out.push(nextStr); - _document.addEventListener('keypress', self._keypressEventHandler(), false); - } else { - // IE8 Compatibility - _document.attachEvent('onclick', self._breadcrumbEventHandler('click')); + len += nextStr.length; + elem = elem.parentNode; + } - _document.attachEvent('onkeypress', self._keypressEventHandler()); - } - } // record navigation (URL) changes - // NOTE: in Chrome App environment, touching history.pushState, *even inside - // a try/catch block*, will cause Chrome to output an error to console.error - // borrowed from: https://github.com/angular/angular.js/pull/13945/files + return out.reverse().join(separator); +} +/** + * Returns a simple, query-selector representation of a DOM element + * e.g. [HTMLElement] => input#foo.btn[name=baz] + * @param HTMLElement + * @returns {string} + */ +function htmlElementAsString(elem) { + var out = [], + className, + classes, + key, + attr, + i; - var chrome = _window$1.chrome; - var isChromePackagedApp = chrome && chrome.app && chrome.app.runtime; - var hasPushAndReplaceState = !isChromePackagedApp && _window$1.history && history.pushState && history.replaceState; + if (!elem || !elem.tagName) { + return ''; + } - if (autoBreadcrumbs.location && hasPushAndReplaceState) { - // TODO: remove onpopstate handler on uninstall() - var oldOnPopState = _window$1.onpopstate; + out.push(elem.tagName.toLowerCase()); + if (elem.id) { + out.push('#' + elem.id); + } - _window$1.onpopstate = function () { - var currentHref = self._location.href; + className = elem.className; + if (className && isString(className)) { + classes = className.split(/\s+/); + for (i = 0; i < classes.length; i++) { + out.push('.' + classes[i]); + } + } + var attrWhitelist = ['type', 'name', 'title', 'alt']; + for (i = 0; i < attrWhitelist.length; i++) { + key = attrWhitelist[i]; + attr = elem.getAttribute(key); + if (attr) { + out.push('[' + key + '="' + attr + '"]'); + } + } + return out.join(''); +} - self._captureUrlChange(self._lastHref, currentHref); +/** + * Returns true if either a OR b is truthy, but not both + */ +function isOnlyOneTruthy(a, b) { + return !!(!!a ^ !!b); +} - if (oldOnPopState) { - return oldOnPopState.apply(this, arguments); - } - }; +/** + * Returns true if both parameters are undefined + */ +function isBothUndefined(a, b) { + return isUndefined(a) && isUndefined(b); +} - var historyReplacementFunction = function historyReplacementFunction(origHistFunction) { - // note history.pushState.length is 0; intentionally not declaring - // params to preserve 0 arity - return function () - /* state, title, url */ - { - var url = arguments.length > 2 ? arguments[2] : undefined; // url argument is optional +/** + * Returns true if the two input exception interfaces have the same content + */ +function isSameException(ex1, ex2) { + if (isOnlyOneTruthy(ex1, ex2)) return false; - if (url) { - // coerce to string (this is what pushState does) - self._captureUrlChange(self._lastHref, url + ''); - } + ex1 = ex1.values[0]; + ex2 = ex2.values[0]; - return origHistFunction.apply(this, arguments); - }; - }; + if (ex1.type !== ex2.type || ex1.value !== ex2.value) return false; - fill(history, 'pushState', historyReplacementFunction, wrappedBuiltIns); - fill(history, 'replaceState', historyReplacementFunction, wrappedBuiltIns); - } + // in case both stacktraces are undefined, we can't decide so default to false + if (isBothUndefined(ex1.stacktrace, ex2.stacktrace)) return false; - if (autoBreadcrumbs.console && 'console' in _window$1 && console.log) { - // console - var consoleMethodCallback = function consoleMethodCallback(msg, data) { - self.captureBreadcrumb({ - message: msg, - level: data.level, - category: 'console' - }); - }; + return isSameStacktrace(ex1.stacktrace, ex2.stacktrace); +} - each(['debug', 'info', 'warn', 'error', 'log'], function (_, level) { - wrapConsoleMethod(console, level, consoleMethodCallback); - }); - } - }, - _restoreBuiltIns: function _restoreBuiltIns() { - // restore any wrapped builtins - var builtin; +/** + * Returns true if the two input stack trace interfaces have the same content + */ +function isSameStacktrace(stack1, stack2) { + if (isOnlyOneTruthy(stack1, stack2)) return false; - while (this._wrappedBuiltIns.length) { - builtin = this._wrappedBuiltIns.shift(); - var obj = builtin[0], - name = builtin[1], - orig = builtin[2]; - obj[name] = orig; - } - }, - _restoreConsole: function _restoreConsole() { - // eslint-disable-next-line guard-for-in - for (var method in this._originalConsoleMethods) { - this._originalConsole[method] = this._originalConsoleMethods[method]; - } - }, - _drainPlugins: function _drainPlugins() { - var self = this; // FIX ME TODO + var frames1 = stack1.frames; + var frames2 = stack2.frames; - each(this._plugins, function (_, plugin) { - var installer = plugin[0]; - var args = plugin[1]; - installer.apply(self, [self].concat(args)); - }); - }, - _parseDSN: function _parseDSN(str) { - var m = dsnPattern.exec(str), - dsn = {}, - i = 7; + // Exit early if frame count differs + if (frames1.length !== frames2.length) return false; + + // Iterate through every frame; bail out if anything differs + var a, b; + for (var i = 0; i < frames1.length; i++) { + a = frames1[i]; + b = frames2[i]; + if ( + a.filename !== b.filename || + a.lineno !== b.lineno || + a.colno !== b.colno || + a['function'] !== b['function'] + ) + return false; + } + return true; +} + +/** + * Polyfill a method + * @param obj object e.g. `document` + * @param name method name present on object e.g. `addEventListener` + * @param replacement replacement function + * @param track {optional} record instrumentation to an array + */ +function fill(obj, name, replacement, track) { + if (obj == null) return; + var orig = obj[name]; + obj[name] = replacement(orig); + obj[name].__raven__ = true; + obj[name].__orig__ = orig; + if (track) { + track.push([obj, name, orig]); + } +} + +/** + * Join values in array + * @param input array of values to be joined together + * @param delimiter string to be placed in-between values + * @returns {string} + */ +function safeJoin(input, delimiter) { + if (!isArray(input)) return ''; + + var output = []; + for (var i = 0; i < input.length; i++) { try { - while (i--) { - dsn[dsnKeys[i]] = m[i] || ''; - } + output.push(String(input[i])); } catch (e) { - throw new configError('Invalid DSN: ' + str); + output.push('[value cannot be serialized]'); } + } - if (dsn.pass && !this._globalOptions.allowSecretKey) { - throw new configError('Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key'); - } + return output.join(delimiter); +} - return dsn; - }, - _getGlobalServer: function _getGlobalServer(uri) { - // assemble the endpoint from the uri pieces - var globalServer = '//' + uri.host + (uri.port ? ':' + uri.port : ''); +// Default Node.js REPL depth +var MAX_SERIALIZE_EXCEPTION_DEPTH = 3; +// 50kB, as 100kB is max payload size, so half sounds reasonable +var MAX_SERIALIZE_EXCEPTION_SIZE = 50 * 1024; +var MAX_SERIALIZE_KEYS_LENGTH = 40; - if (uri.protocol) { - globalServer = uri.protocol + ':' + globalServer; - } +function utf8Length(value) { + return ~-encodeURI(value).split(/%..|./).length; +} - return globalServer; - }, - _handleOnErrorStackInfo: function _handleOnErrorStackInfo() { - // if we are intentionally ignoring errors via onerror, bail out - if (!this._ignoreOnError) { - this._handleStackInfo.apply(this, arguments); - } - }, - _handleStackInfo: function _handleStackInfo(stackInfo, options) { - var frames = this._prepareFrames(stackInfo, options); +function jsonSize(value) { + return utf8Length(JSON.stringify(value)); +} - this._triggerEvent('handle', { - stackInfo: stackInfo, - options: options +function serializeValue(value) { + if (typeof value === 'string') { + var maxLength = 40; + return truncate(value, maxLength); + } else if ( + typeof value === 'number' || + typeof value === 'boolean' || + typeof value === 'undefined' + ) { + return value; + } + + var type = Object.prototype.toString.call(value); + + // Node.js REPL notation + if (type === '[object Object]') return '[Object]'; + if (type === '[object Array]') return '[Array]'; + if (type === '[object Function]') + return value.name ? '[Function: ' + value.name + ']' : '[Function]'; + + return value; +} + +function serializeObject(value, depth) { + if (depth === 0) return serializeValue(value); + + if (isPlainObject(value)) { + return Object.keys(value).reduce(function(acc, key) { + acc[key] = serializeObject(value[key], depth - 1); + return acc; + }, {}); + } else if (Array.isArray(value)) { + return value.map(function(val) { + return serializeObject(val, depth - 1); }); + } - this._processException(stackInfo.name, stackInfo.message, stackInfo.url, stackInfo.lineno, frames, options); - }, - _prepareFrames: function _prepareFrames(stackInfo, options) { - var self = this; - var frames = []; + return serializeValue(value); +} - if (stackInfo.stack && stackInfo.stack.length) { - each(stackInfo.stack, function (i, stack) { - var frame = self._normalizeFrame(stack, stackInfo.url); +function serializeException(ex, depth, maxSize) { + if (!isPlainObject(ex)) return ex; - if (frame) { - frames.push(frame); - } - }); // e.g. frames captured via captureMessage throw + depth = typeof depth !== 'number' ? MAX_SERIALIZE_EXCEPTION_DEPTH : depth; + maxSize = typeof depth !== 'number' ? MAX_SERIALIZE_EXCEPTION_SIZE : maxSize; - if (options && options.trimHeadFrames) { - for (var j = 0; j < options.trimHeadFrames && j < frames.length; j++) { - frames[j].in_app = false; - } - } - } + var serialized = serializeObject(ex, depth); - frames = frames.slice(0, this._globalOptions.stackTraceLimit); - return frames; - }, - _normalizeFrame: function _normalizeFrame(frame, stackInfoUrl) { - // normalize the frames data - var normalized = { - filename: frame.url, - lineno: frame.line, - colno: frame.column, - function: frame.func || '?' - }; // Case when we don't have any information about the error - // E.g. throwing a string or raw object, instead of an `Error` in Firefox - // Generating synthetic error doesn't add any value here - // - // We should probably somehow let a user know that they should fix their code + if (jsonSize(stringify(serialized)) > maxSize) { + return serializeException(ex, depth - 1); + } - if (!frame.url) { - normalized.filename = stackInfoUrl; // fallback to whole stacks url from onerror handler - } + return serialized; +} - normalized.in_app = !( // determine if an exception came from outside of our app - // first we check the global includePaths list. - !!this._globalOptions.includePaths.test && !this._globalOptions.includePaths.test(normalized.filename) || // Now we check for fun, if the function name is Raven or TraceKit - /(Raven|TraceKit)\./.test(normalized['function']) || // finally, we do a last ditch effort and check for raven.min.js - /raven\.(min\.)?js$/.test(normalized.filename)); - return normalized; - }, - _processException: function _processException(type, message, fileurl, lineno, frames, options) { - var prefixedMessage = (type ? type + ': ' : '') + (message || ''); +function serializeKeysForMessage(keys, maxLength) { + if (typeof keys === 'number' || typeof keys === 'string') return keys.toString(); + if (!Array.isArray(keys)) return ''; - if (!!this._globalOptions.ignoreErrors.test && (this._globalOptions.ignoreErrors.test(message) || this._globalOptions.ignoreErrors.test(prefixedMessage))) { - return; - } + keys = keys.filter(function(key) { + return typeof key === 'string'; + }); + if (keys.length === 0) return '[object has no keys]'; - var stacktrace; + maxLength = typeof maxLength !== 'number' ? MAX_SERIALIZE_KEYS_LENGTH : maxLength; + if (keys[0].length >= maxLength) return keys[0]; - if (frames && frames.length) { - fileurl = frames[0].filename || fileurl; // Sentry expects frames oldest to newest - // and JS sends them as newest to oldest + for (var usedKeys = keys.length; usedKeys > 0; usedKeys--) { + var serialized = keys.slice(0, usedKeys).join(', '); + if (serialized.length > maxLength) continue; + if (usedKeys === keys.length) return serialized; + return serialized + '\u2026'; + } - frames.reverse(); - stacktrace = { - frames: frames - }; - } else if (fileurl) { - stacktrace = { - frames: [{ - filename: fileurl, - lineno: lineno, - in_app: true - }] - }; - } - - if (!!this._globalOptions.ignoreUrls.test && this._globalOptions.ignoreUrls.test(fileurl)) { - return; - } + return ''; +} - if (!!this._globalOptions.whitelistUrls.test && !this._globalOptions.whitelistUrls.test(fileurl)) { - return; - } +function sanitize(input, sanitizeKeys) { + if (!isArray(sanitizeKeys) || (isArray(sanitizeKeys) && sanitizeKeys.length === 0)) + return input; - var data = objectMerge({ - // sentry.interfaces.Exception - exception: { - values: [{ - type: type, - value: message, - stacktrace: stacktrace - }] - }, - culprit: fileurl - }, options); // Fire away! + var sanitizeRegExp = joinRegExp(sanitizeKeys); + var sanitizeMask = '********'; + var safeInput; - this._send(data); - }, - _trimPacket: function _trimPacket(data) { - // For now, we only want to truncate the two different messages - // but this could/should be expanded to just trim everything - var max = this._globalOptions.maxMessageLength; + try { + safeInput = JSON.parse(stringify(input)); + } catch (o_O) { + return input; + } - if (data.message) { - data.message = truncate(data.message, max); + function sanitizeWorker(workerInput) { + if (isArray(workerInput)) { + return workerInput.map(function(val) { + return sanitizeWorker(val); + }); } - if (data.exception) { - var exception = data.exception.values[0]; - exception.value = truncate(exception.value, max); + if (isPlainObject(workerInput)) { + return Object.keys(workerInput).reduce(function(acc, k) { + if (sanitizeRegExp.test(k)) { + acc[k] = sanitizeMask; + } else { + acc[k] = sanitizeWorker(workerInput[k]); + } + return acc; + }, {}); } - var request = data.request; + return workerInput; + } - if (request) { - if (request.url) { - request.url = truncate(request.url, this._globalOptions.maxUrlLength); - } + return sanitizeWorker(safeInput); +} - if (request.Referer) { - request.Referer = truncate(request.Referer, this._globalOptions.maxUrlLength); - } - } +module.exports = { + isObject: isObject, + isError: isError, + isErrorEvent: isErrorEvent, + isUndefined: isUndefined, + isFunction: isFunction, + isPlainObject: isPlainObject, + isString: isString, + isArray: isArray, + isEmptyObject: isEmptyObject, + supportsErrorEvent: supportsErrorEvent, + supportsFetch: supportsFetch, + supportsReferrerPolicy: supportsReferrerPolicy, + supportsPromiseRejectionEvent: supportsPromiseRejectionEvent, + wrappedCallback: wrappedCallback, + each: each, + objectMerge: objectMerge, + truncate: truncate, + objectFrozen: objectFrozen, + hasKey: hasKey, + joinRegExp: joinRegExp, + urlencode: urlencode, + uuid4: uuid4, + htmlTreeAsString: htmlTreeAsString, + htmlElementAsString: htmlElementAsString, + isSameException: isSameException, + isSameStacktrace: isSameStacktrace, + parseUrl: parseUrl, + fill: fill, + safeJoin: safeJoin, + serializeException: serializeException, + serializeKeysForMessage: serializeKeysForMessage, + sanitize: sanitize +}; - if (data.breadcrumbs && data.breadcrumbs.values) this._trimBreadcrumbs(data.breadcrumbs); - return data; - }, +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"10":10}],9:[function(_dereq_,module,exports){ +(function (global){ +var utils = _dereq_(8); - /** - * Truncate breadcrumb values (right now just URLs) - */ - _trimBreadcrumbs: function _trimBreadcrumbs(breadcrumbs) { - // known breadcrumb properties with urls - // TODO: also consider arbitrary prop values that start with (https?)?:// - var urlProps = ['to', 'from', 'url'], - urlProp, - crumb, - data; +/* + TraceKit - Cross brower stack traces - for (var i = 0; i < breadcrumbs.values.length; ++i) { - crumb = breadcrumbs.values[i]; - if (!crumb.hasOwnProperty('data') || !isObject(crumb.data) || objectFrozen(crumb.data)) continue; - data = objectMerge({}, crumb.data); + This was originally forked from github.com/occ/TraceKit, but has since been + largely re-written and is now maintained as part of raven-js. Tests for + this are in test/vendor. - for (var j = 0; j < urlProps.length; ++j) { - urlProp = urlProps[j]; + MIT license +*/ - if (data.hasOwnProperty(urlProp) && data[urlProp]) { - data[urlProp] = truncate(data[urlProp], this._globalOptions.maxUrlLength); - } - } +var TraceKit = { + collectWindowErrors: true, + debug: false +}; - breadcrumbs.values[i].data = data; - } - }, - _getHttpData: function _getHttpData() { - if (!this._hasNavigator && !this._hasDocument) return; - var httpData = {}; +// This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) +var _window = + typeof window !== 'undefined' + ? window + : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; - if (this._hasNavigator && _navigator.userAgent) { - httpData.headers = { - 'User-Agent': navigator.userAgent - }; - } // Check in `window` instead of `document`, as we may be in ServiceWorker environment +// global reference to slice +var _slice = [].slice; +var UNKNOWN_FUNCTION = '?'; +// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error#Error_types +var ERROR_TYPES_RE = /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/; - if (_window$1.location && _window$1.location.href) { - httpData.url = _window$1.location.href; - } +function getLocationHref() { + if (typeof document === 'undefined' || document.location == null) return ''; - if (this._hasDocument && _document.referrer) { - if (!httpData.headers) httpData.headers = {}; - httpData.headers.Referer = _document.referrer; - } + return document.location.href; +} - return httpData; - }, - _resetBackoff: function _resetBackoff() { - this._backoffDuration = 0; - this._backoffStart = null; - }, - _shouldBackoff: function _shouldBackoff() { - return this._backoffDuration && now() - this._backoffStart < this._backoffDuration; - }, +/** + * TraceKit.report: cross-browser processing of unhandled exceptions + * + * Syntax: + * TraceKit.report.subscribe(function(stackInfo) { ... }) + * TraceKit.report.unsubscribe(function(stackInfo) { ... }) + * TraceKit.report(exception) + * try { ...code... } catch(ex) { TraceKit.report(ex); } + * + * Supports: + * - Firefox: full stack trace with line numbers, plus column number + * on top frame; column number is not guaranteed + * - Opera: full stack trace with line and column numbers + * - Chrome: full stack trace with line and column numbers + * - Safari: line and column number for the top frame only; some frames + * may be missing, and column number is not guaranteed + * - IE: line and column number for the top frame only; some frames + * may be missing, and column number is not guaranteed + * + * In theory, TraceKit should work on all of the following versions: + * - IE5.5+ (only 8.0 tested) + * - Firefox 0.9+ (only 3.5+ tested) + * - Opera 7+ (only 10.50 tested; versions 9 and earlier may require + * Exceptions Have Stacktrace to be enabled in opera:config) + * - Safari 3+ (only 4+ tested) + * - Chrome 1+ (only 5+ tested) + * - Konqueror 3.5+ (untested) + * + * Requires TraceKit.computeStackTrace. + * + * Tries to catch all unhandled exceptions and report them to the + * subscribed handlers. Please note that TraceKit.report will rethrow the + * exception. This is REQUIRED in order to get a useful stack trace in IE. + * If the exception does not reach the top of the browser, you will only + * get a stack trace from the point where TraceKit.report was called. + * + * Handlers receive a stackInfo object as described in the + * TraceKit.computeStackTrace docs. + */ +TraceKit.report = (function reportModuleWrapper() { + var handlers = [], + lastArgs = null, + lastException = null, + lastExceptionStack = null; /** - * Returns true if the in-process data payload matches the signature - * of the previously-sent data - * - * NOTE: This has to be done at this level because TraceKit can generate - * data from window.onerror WITHOUT an exception object (IE8, IE9, - * other old browsers). This can take the form of an "exception" - * data object with a single frame (derived from the onerror args). + * Add a crash handler. + * @param {Function} handler */ - _isRepeatData: function _isRepeatData(current) { - var last = this._lastData; - if (!last || current.message !== last.message || // defined for captureMessage - current.culprit !== last.culprit // defined for captureException/onerror - ) return false; // Stacktrace interface (i.e. from captureMessage) + function subscribe(handler) { + installGlobalHandler(); + handlers.push(handler); + } - if (current.stacktrace || last.stacktrace) { - return isSameStacktrace(current.stacktrace, last.stacktrace); - } else if (current.exception || last.exception) { - // Exception interface (i.e. from captureException/onerror) - return isSameException(current.exception, last.exception); + /** + * Remove a crash handler. + * @param {Function} handler + */ + function unsubscribe(handler) { + for (var i = handlers.length - 1; i >= 0; --i) { + if (handlers[i] === handler) { + handlers.splice(i, 1); + } } + } - return true; - }, - _setBackoffState: function _setBackoffState(request) { - // If we are already in a backoff state, don't change anything - if (this._shouldBackoff()) { + /** + * Remove all crash handlers. + */ + function unsubscribeAll() { + uninstallGlobalHandler(); + handlers = []; + } + + /** + * Dispatch stack information to all handlers. + * @param {Object.} stack + */ + function notifyHandlers(stack, isWindowError) { + var exception = null; + if (isWindowError && !TraceKit.collectWindowErrors) { return; } + for (var i in handlers) { + if (handlers.hasOwnProperty(i)) { + try { + handlers[i].apply(null, [stack].concat(_slice.call(arguments, 2))); + } catch (inner) { + exception = inner; + } + } + } - var status = request.status; // 400 - project_id doesn't exist or some other fatal - // 401 - invalid/revoked dsn - // 429 - too many requests - - if (!(status === 400 || status === 401 || status === 429)) return; - var retry; - - try { - // If Retry-After is not in Access-Control-Expose-Headers, most - // browsers will throw an exception trying to access it - if (supportsFetch()) { - retry = request.headers.get('Retry-After'); - } else { - retry = request.getResponseHeader('Retry-After'); - } // Retry-After is returned in seconds - - - retry = parseInt(retry, 10) * 1000; - } catch (e) { - /* eslint no-empty:0 */ + if (exception) { + throw exception; } + } - this._backoffDuration = retry ? // If Sentry server returned a Retry-After value, use it - retry : // Otherwise, double the last backoff duration (starts at 1 sec) - this._backoffDuration * 2 || 1000; - this._backoffStart = now(); - }, - _send: function _send(data) { - var globalOptions = this._globalOptions; + var _oldOnerrorHandler, _onErrorHandlerInstalled; - var baseData = { - project: this._globalProject, - logger: globalOptions.logger, - platform: 'javascript' - }, - httpData = this._getHttpData(); + /** + * Ensures all global unhandled exceptions are recorded. + * Supported by Gecko and IE. + * @param {string} msg Error message. + * @param {string} url URL of script that generated the exception. + * @param {(number|string)} lineNo The line number at which the error + * occurred. + * @param {?(number|string)} colNo The column number at which the error + * occurred. + * @param {?Error} ex The actual Error object. + */ + function traceKitWindowOnError(msg, url, lineNo, colNo, ex) { + var stack = null; + // If 'ex' is ErrorEvent, get real Error from inside + var exception = utils.isErrorEvent(ex) ? ex.error : ex; + // If 'msg' is ErrorEvent, get real message from inside + var message = utils.isErrorEvent(msg) ? msg.message : msg; - if (httpData) { - baseData.request = httpData; - } // HACK: delete `trimHeadFrames` to prevent from appearing in outbound payload + if (lastExceptionStack) { + TraceKit.computeStackTrace.augmentStackTraceWithInitialElement( + lastExceptionStack, + url, + lineNo, + message + ); + processLastException(); + } else if (exception && utils.isError(exception)) { + // non-string `exception` arg; attempt to extract stack trace + // New chrome and blink send along a real error object + // Let's just report that like a normal error. + // See: https://mikewest.org/2013/08/debugging-runtime-errors-with-window-onerror + stack = TraceKit.computeStackTrace(exception); + notifyHandlers(stack, true); + } else { + var location = { + url: url, + line: lineNo, + column: colNo + }; - if (data.trimHeadFrames) delete data.trimHeadFrames; - data = objectMerge(baseData, data); // Merge in the tags and extra separately since objectMerge doesn't handle a deep merge + var name = undefined; + var groups; - data.tags = objectMerge(objectMerge({}, this._globalContext.tags), data.tags); - data.extra = objectMerge(objectMerge({}, this._globalContext.extra), data.extra); // Send along our own collected metadata with extra + if ({}.toString.call(message) === '[object String]') { + var groups = message.match(ERROR_TYPES_RE); + if (groups) { + name = groups[1]; + message = groups[2]; + } + } - data.extra['session:duration'] = now() - this._startTime; + location.func = UNKNOWN_FUNCTION; - if (this._breadcrumbs && this._breadcrumbs.length > 0) { - // intentionally make shallow copy so that additions - // to breadcrumbs aren't accidentally sent in this request - data.breadcrumbs = { - values: [].slice.call(this._breadcrumbs, 0) + stack = { + name: name, + message: message, + url: getLocationHref(), + stack: [location] }; + notifyHandlers(stack, true); } - if (this._globalContext.user) { - // sentry.interfaces.User - data.user = this._globalContext.user; - } // Include the environment if it's defined in globalOptions - - - if (globalOptions.environment) data.environment = globalOptions.environment; // Include the release if it's defined in globalOptions - - if (globalOptions.release) data.release = globalOptions.release; // Include server_name if it's defined in globalOptions - - if (globalOptions.serverName) data.server_name = globalOptions.serverName; // Cleanup empty properties before sending them to the server - - Object.keys(data).forEach(function (key) { - if (data[key] == null || data[key] === '' || isEmptyObject(data[key])) { - delete data[key]; - } - }); - - if (isFunction(globalOptions.dataCallback)) { - data = globalOptions.dataCallback(data) || data; - } // Why?????????? - - - if (!data || isEmptyObject(data)) { - return; - } // Check if the request should be filtered or not - - - if (isFunction(globalOptions.shouldSendCallback) && !globalOptions.shouldSendCallback(data)) { - return; - } // Backoff state: Sentry server previously responded w/ an error (e.g. 429 - too many requests), - // so drop requests until "cool-off" period has elapsed. - + if (_oldOnerrorHandler) { + return _oldOnerrorHandler.apply(this, arguments); + } - if (this._shouldBackoff()) { - this._logDebug('warn', 'Raven dropped error due to backoff: ', data); + return false; + } + function installGlobalHandler() { + if (_onErrorHandlerInstalled) { return; } + _oldOnerrorHandler = _window.onerror; + _window.onerror = traceKitWindowOnError; + _onErrorHandlerInstalled = true; + } - if (typeof globalOptions.sampleRate === 'number') { - if (Math.random() < globalOptions.sampleRate) { - this._sendProcessedPayload(data); - } - } else { - this._sendProcessedPayload(data); - } - }, - _getUuid: function _getUuid() { - return uuid4(); - }, - _sendProcessedPayload: function _sendProcessedPayload(data, callback) { - var self = this; - var globalOptions = this._globalOptions; - if (!this.isSetup()) return; // Try and clean up the packet before sending by truncating long values - - data = this._trimPacket(data); // ideally duplicate error testing should occur *before* dataCallback/shouldSendCallback, - // but this would require copying an un-truncated copy of the data packet, which can be - // arbitrarily deep (extra_data) -- could be worthwhile? will revisit - - if (!this._globalOptions.allowDuplicates && this._isRepeatData(data)) { - this._logDebug('warn', 'Raven dropped repeat event: ', data); - + function uninstallGlobalHandler() { + if (!_onErrorHandlerInstalled) { return; - } // Send along an event_id if not explicitly passed. - // This event_id can be used to reference the error within Sentry itself. - // Set lastEventId after we know the error should actually be sent - - - this._lastEventId = data.event_id || (data.event_id = this._getUuid()); // Store outbound payload after trim - - this._lastData = data; - - this._logDebug('debug', 'Raven about to send:', data); + } + _window.onerror = _oldOnerrorHandler; + _onErrorHandlerInstalled = false; + _oldOnerrorHandler = undefined; + } - var auth = { - sentry_version: '7', - sentry_client: 'raven-js/' + this.VERSION, - sentry_key: this._globalKey - }; + function processLastException() { + var _lastExceptionStack = lastExceptionStack, + _lastArgs = lastArgs; + lastArgs = null; + lastExceptionStack = null; + lastException = null; + notifyHandlers.apply(null, [_lastExceptionStack, false].concat(_lastArgs)); + } - if (this._globalSecret) { - auth.sentry_secret = this._globalSecret; + /** + * Reports an unhandled Error to TraceKit. + * @param {Error} ex + * @param {?boolean} rethrow If false, do not re-throw the exception. + * Only used for window.onerror to not cause an infinite loop of + * rethrowing. + */ + function report(ex, rethrow) { + var args = _slice.call(arguments, 1); + if (lastExceptionStack) { + if (lastException === ex) { + return; // already caught by an inner catch block, ignore + } else { + processLastException(); + } } - var exception = data.exception && data.exception.values[0]; // only capture 'sentry' breadcrumb is autoBreadcrumbs is truthy + var stack = TraceKit.computeStackTrace(ex); + lastExceptionStack = stack; + lastException = ex; + lastArgs = args; - if (this._globalOptions.autoBreadcrumbs && this._globalOptions.autoBreadcrumbs.sentry) { - this.captureBreadcrumb({ - category: 'sentry', - message: exception ? (exception.type ? exception.type + ': ' : '') + exception.value : data.message, - event_id: data.event_id, - level: data.level || 'error' // presume error unless specified + // If the stack trace is incomplete, wait for 2 seconds for + // slow slow IE to see if onerror occurs or not before reporting + // this exception; otherwise, we will end up with an incomplete + // stack trace + setTimeout(function() { + if (lastException === ex) { + processLastException(); + } + }, stack.incomplete ? 2000 : 0); - }); + if (rethrow !== false) { + throw ex; // re-throw to propagate to the top level (and cause window.onerror) } + } - var url = this._globalEndpoint; + report.subscribe = subscribe; + report.unsubscribe = unsubscribe; + report.uninstall = unsubscribeAll; + return report; +})(); - (globalOptions.transport || this._makeRequest).call(this, { - url: url, - auth: auth, - data: data, - options: globalOptions, - onSuccess: function success() { - self._resetBackoff(); +/** + * TraceKit.computeStackTrace: cross-browser stack traces in JavaScript + * + * Syntax: + * s = TraceKit.computeStackTrace(exception) // consider using TraceKit.report instead (see below) + * Returns: + * s.name - exception name + * s.message - exception message + * s.stack[i].url - JavaScript or HTML file URL + * s.stack[i].func - function name, or empty for anonymous functions (if guessing did not work) + * s.stack[i].args - arguments passed to the function, if known + * s.stack[i].line - line number, if known + * s.stack[i].column - column number, if known + * + * Supports: + * - Firefox: full stack trace with line numbers and unreliable column + * number on top frame + * - Opera 10: full stack trace with line and column numbers + * - Opera 9-: full stack trace with line numbers + * - Chrome: full stack trace with line and column numbers + * - Safari: line and column number for the topmost stacktrace element + * only + * - IE: no line numbers whatsoever + * + * Tries to guess names of anonymous functions by looking for assignments + * in the source code. In IE and Safari, we have to guess source file names + * by searching for function bodies inside all page scripts. This will not + * work for scripts that are loaded cross-domain. + * Here be dragons: some function names may be guessed incorrectly, and + * duplicate functions may be mismatched. + * + * TraceKit.computeStackTrace should only be used for tracing purposes. + * Logging of unhandled exceptions should be done with TraceKit.report, + * which builds on top of TraceKit.computeStackTrace and provides better + * IE support by utilizing the window.onerror event to retrieve information + * about the top of the stack. + * + * Note: In IE and Safari, no stack trace is recorded on the Error object, + * so computeStackTrace instead walks its *own* chain of callers. + * This means that: + * * in Safari, some methods may be missing from the stack trace; + * * in IE, the topmost function in the stack trace will always be the + * caller of computeStackTrace. + * + * This is okay for tracing (because you are likely to be calling + * computeStackTrace from the function you want to be the topmost element + * of the stack trace anyway), but not okay for logging unhandled + * exceptions (because your catch block will likely be far away from the + * inner function that actually caused the exception). + * + */ +TraceKit.computeStackTrace = (function computeStackTraceWrapper() { + // Contents of Exception in various browsers. + // + // SAFARI: + // ex.message = Can't find variable: qq + // ex.line = 59 + // ex.sourceId = 580238192 + // ex.sourceURL = http://... + // ex.expressionBeginOffset = 96 + // ex.expressionCaretOffset = 98 + // ex.expressionEndOffset = 98 + // ex.name = ReferenceError + // + // FIREFOX: + // ex.message = qq is not defined + // ex.fileName = http://... + // ex.lineNumber = 59 + // ex.columnNumber = 69 + // ex.stack = ...stack trace... (see the example below) + // ex.name = ReferenceError + // + // CHROME: + // ex.message = qq is not defined + // ex.name = ReferenceError + // ex.type = not_defined + // ex.arguments = ['aa'] + // ex.stack = ...stack trace... + // + // INTERNET EXPLORER: + // ex.message = ... + // ex.name = ReferenceError + // + // OPERA: + // ex.message = ...message... (see the example below) + // ex.name = ReferenceError + // ex.opera#sourceloc = 11 (pretty much useless, duplicates the info in ex.message) + // ex.stacktrace = n/a; see 'opera:config#UserPrefs|Exceptions Have Stacktrace' - self._triggerEvent('success', { - data: data, - src: url - }); + /** + * Computes stack trace information from the stack property. + * Chrome and Gecko use this property. + * @param {Error} ex + * @return {?Object.} Stack trace information. + */ + function computeStackTraceFromStackProp(ex) { + if (typeof ex.stack === 'undefined' || !ex.stack) return; - callback && callback(); - }, - onError: function failure(error) { - self._logDebug('error', 'Raven transport failed to send: ', error); + var chrome = /^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i; + var winjs = /^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i; + // NOTE: blob urls are now supposed to always have an origin, therefore it's format + // which is `blob:http://url/path/with-some-uuid`, is matched by `blob.*?:\/` as well + var gecko = /^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i; + // Used to additionally parse URL/line/column from eval frames + var geckoEval = /(\S+) line (\d+)(?: > eval line \d+)* > eval/i; + var chromeEval = /\((\S*)(?::(\d+))(?::(\d+))\)/; + var lines = ex.stack.split('\n'); + var stack = []; + var submatch; + var parts; + var element; + var reference = /^(.*) is undefined$/.exec(ex.message); - if (error.request) { - self._setBackoffState(error.request); + for (var i = 0, j = lines.length; i < j; ++i) { + if ((parts = chrome.exec(lines[i]))) { + var isNative = parts[2] && parts[2].indexOf('native') === 0; // start of line + var isEval = parts[2] && parts[2].indexOf('eval') === 0; // start of line + if (isEval && (submatch = chromeEval.exec(parts[2]))) { + // throw out eval line/column and use top-most line/column number + parts[2] = submatch[1]; // url + parts[3] = submatch[2]; // line + parts[4] = submatch[3]; // column } + element = { + url: !isNative ? parts[2] : null, + func: parts[1] || UNKNOWN_FUNCTION, + args: isNative ? [parts[2]] : [], + line: parts[3] ? +parts[3] : null, + column: parts[4] ? +parts[4] : null + }; + } else if ((parts = winjs.exec(lines[i]))) { + element = { + url: parts[2], + func: parts[1] || UNKNOWN_FUNCTION, + args: [], + line: +parts[3], + column: parts[4] ? +parts[4] : null + }; + } else if ((parts = gecko.exec(lines[i]))) { + var isEval = parts[3] && parts[3].indexOf(' > eval') > -1; + if (isEval && (submatch = geckoEval.exec(parts[3]))) { + // throw out eval line/column and use top-most line number + parts[3] = submatch[1]; + parts[4] = submatch[2]; + parts[5] = null; // no column when eval + } else if (i === 0 && !parts[5] && typeof ex.columnNumber !== 'undefined') { + // FireFox uses this awesome columnNumber property for its top frame + // Also note, Firefox's column number is 0-based and everything else expects 1-based, + // so adding 1 + // NOTE: this hack doesn't work if top-most frame is eval + stack[0].column = ex.columnNumber + 1; + } + element = { + url: parts[3], + func: parts[1] || UNKNOWN_FUNCTION, + args: parts[2] ? parts[2].split(',') : [], + line: parts[4] ? +parts[4] : null, + column: parts[5] ? +parts[5] : null + }; + } else { + continue; + } - self._triggerEvent('failure', { - data: data, - src: url - }); - - error = error || new Error('Raven send failed (no additional details provided)'); - callback && callback(error); + if (!element.func && element.line) { + element.func = UNKNOWN_FUNCTION; } - }); - }, - _makeRequest: function _makeRequest(opts) { - // Auth is intentionally sent as part of query string (NOT as custom HTTP header) to avoid preflight CORS requests - var url = opts.url + '?' + urlencode(opts.auth); - var evaluatedHeaders = null; - var evaluatedFetchParameters = {}; - if (opts.options.headers) { - evaluatedHeaders = this._evaluateHash(opts.options.headers); + stack.push(element); } - if (opts.options.fetchParameters) { - evaluatedFetchParameters = this._evaluateHash(opts.options.fetchParameters); + if (!stack.length) { + return null; } - if (supportsFetch()) { - evaluatedFetchParameters.body = stringify_1(opts.data); - var defaultFetchOptions = objectMerge({}, this._fetchDefaults); - var fetchOptions = objectMerge(defaultFetchOptions, evaluatedFetchParameters); + return { + name: ex.name, + message: ex.message, + url: getLocationHref(), + stack: stack + }; + } - if (evaluatedHeaders) { - fetchOptions.headers = evaluatedHeaders; - } + /** + * Adds information about the first frame to incomplete stack traces. + * Safari and IE require this to get complete data on the first frame. + * @param {Object.} stackInfo Stack trace information from + * one of the compute* methods. + * @param {string} url The URL of the script that caused an error. + * @param {(number|string)} lineNo The line number of the script that + * caused an error. + * @param {string=} message The error generated by the browser, which + * hopefully contains the name of the object that caused the error. + * @return {boolean} Whether or not the stack information was + * augmented. + */ + function augmentStackTraceWithInitialElement(stackInfo, url, lineNo, message) { + var initial = { + url: url, + line: lineNo + }; - return _window$1.fetch(url, fetchOptions).then(function (response) { - if (response.ok) { - opts.onSuccess && opts.onSuccess(); - } else { - var error = new Error('Sentry error code: ' + response.status); // It's called request only to keep compatibility with XHR interface - // and not add more redundant checks in setBackoffState method + if (initial.url && initial.line) { + stackInfo.incomplete = false; - error.request = response; - opts.onError && opts.onError(error); + if (!initial.func) { + initial.func = UNKNOWN_FUNCTION; + } + + if (stackInfo.stack.length > 0) { + if (stackInfo.stack[0].url === initial.url) { + if (stackInfo.stack[0].line === initial.line) { + return false; // already in stack trace + } else if ( + !stackInfo.stack[0].line && + stackInfo.stack[0].func === initial.func + ) { + stackInfo.stack[0].line = initial.line; + return false; + } } - })['catch'](function () { - opts.onError && opts.onError(new Error('Sentry error code: network unavailable')); - }); + } + + stackInfo.stack.unshift(initial); + stackInfo.partial = true; + return true; + } else { + stackInfo.incomplete = true; } - var request = _window$1.XMLHttpRequest && new _window$1.XMLHttpRequest(); - if (!request) return; // if browser doesn't support CORS (e.g. IE7), we are out of luck + return false; + } - var hasCORS = 'withCredentials' in request || typeof XDomainRequest !== 'undefined'; - if (!hasCORS) return; + /** + * Computes stack trace information by walking the arguments.caller + * chain at the time the exception occurred. This will cause earlier + * frames to be missed but is the only way to get any stack trace in + * Safari and IE. The top frame is restored by + * {@link augmentStackTraceWithInitialElement}. + * @param {Error} ex + * @return {?Object.} Stack trace information. + */ + function computeStackTraceByWalkingCallerChain(ex, depth) { + var functionName = /function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i, + stack = [], + funcs = {}, + recursion = false, + parts, + item, + source; + + for ( + var curr = computeStackTraceByWalkingCallerChain.caller; + curr && !recursion; + curr = curr.caller + ) { + if (curr === computeStackTrace || curr === TraceKit.report) { + // console.log('skipping internal function'); + continue; + } - if ('withCredentials' in request) { - request.onreadystatechange = function () { - if (request.readyState !== 4) { - return; - } else if (request.status === 200) { - opts.onSuccess && opts.onSuccess(); - } else if (opts.onError) { - var err = new Error('Sentry error code: ' + request.status); - err.request = request; - opts.onError(err); - } + item = { + url: null, + func: UNKNOWN_FUNCTION, + line: null, + column: null }; - } else { - request = new XDomainRequest(); // xdomainrequest cannot go http -> https (or vice versa), - // so always use protocol relative - url = url.replace(/^https?:/, ''); // onreadystatechange not supported by XDomainRequest + if (curr.name) { + item.func = curr.name; + } else if ((parts = functionName.exec(curr.toString()))) { + item.func = parts[1]; + } - if (opts.onSuccess) { - request.onload = opts.onSuccess; + if (typeof item.func === 'undefined') { + try { + item.func = parts.input.substring(0, parts.input.indexOf('{')); + } catch (e) {} } - if (opts.onError) { - request.onerror = function () { - var err = new Error('Sentry error code: XDomainRequest'); - err.request = request; - opts.onError(err); - }; + if (funcs['' + curr]) { + recursion = true; + } else { + funcs['' + curr] = true; } - } - request.open('POST', url); + stack.push(item); + } - if (evaluatedHeaders) { - each(evaluatedHeaders, function (key, value) { - request.setRequestHeader(key, value); - }); + if (depth) { + // console.log('depth is ' + depth); + // console.log('stack is ' + stack.length); + stack.splice(0, depth); } - request.send(stringify_1(opts.data)); - }, - _evaluateHash: function _evaluateHash(hash) { - var evaluated = {}; + var result = { + name: ex.name, + message: ex.message, + url: getLocationHref(), + stack: stack + }; + augmentStackTraceWithInitialElement( + result, + ex.sourceURL || ex.fileName, + ex.line || ex.lineNumber, + ex.message || ex.description + ); + return result; + } - for (var key in hash) { - if (hash.hasOwnProperty(key)) { - var value = hash[key]; - evaluated[key] = typeof value === 'function' ? value() : value; + /** + * Computes a stack trace for an exception. + * @param {Error} ex + * @param {(string|number)=} depth + */ + function computeStackTrace(ex, depth) { + var stack = null; + depth = depth == null ? 0 : +depth; + + try { + stack = computeStackTraceFromStackProp(ex); + if (stack) { + return stack; + } + } catch (e) { + if (TraceKit.debug) { + throw e; } } - return evaluated; - }, - _logDebug: function _logDebug(level) { - if (this._originalConsoleMethods[level] && this.debug) { - // In IE<10 console methods do not have their own 'apply' method - Function.prototype.apply.call(this._originalConsoleMethods[level], this._originalConsole, [].slice.call(arguments, 1)); - } - }, - _mergeContext: function _mergeContext(key, context) { - if (isUndefined(context)) { - delete this._globalContext[key]; - } else { - this._globalContext[key] = objectMerge(this._globalContext[key] || {}, context); + try { + stack = computeStackTraceByWalkingCallerChain(ex, depth + 1); + if (stack) { + return stack; + } + } catch (e) { + if (TraceKit.debug) { + throw e; + } } + return { + name: ex.name, + message: ex.message, + url: getLocationHref() + }; } -}; // Deprecations -Raven$1.prototype.setUser = Raven$1.prototype.setUserContext; -Raven$1.prototype.setReleaseContext = Raven$1.prototype.setRelease; -var raven = Raven$1; + computeStackTrace.augmentStackTraceWithInitialElement = augmentStackTraceWithInitialElement; + computeStackTrace.computeStackTraceFromStackProp = computeStackTraceFromStackProp; -/** - * Enforces a single instance of the Raven client, and the - * main entry point for Raven. If you are a consumer of the - * Raven library, you SHOULD load this file (vs raven.js). - **/ -// This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) + return computeStackTrace; +})(); -var _window = typeof window !== 'undefined' ? window : typeof commonjsGlobal !== 'undefined' ? commonjsGlobal : typeof self !== 'undefined' ? self : {}; +module.exports = TraceKit; -var _Raven = _window.Raven; -var Raven = new raven(); +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"8":8}],10:[function(_dereq_,module,exports){ /* - * Allow multiple versions of Raven to be installed. - * Strip Raven from the global context and returns the instance. - * - * @return {Raven} - */ + json-stringify-safe + Like JSON.stringify, but doesn't throw on circular references. -Raven.noConflict = function () { - _window.Raven = _Raven; - return Raven; -}; - -Raven.afterLoad(); -var singleton = Raven; - -/** - * Angular.js plugin - * - * Provides an $exceptionHandler for Angular.js - */ - -var wrappedCallback$1 = utils.wrappedCallback; // See https://github.com/angular/angular.js/blob/v1.4.7/src/minErr.js + Originally forked from https://github.com/isaacs/json-stringify-safe + version 5.0.1 on 3/8/2017 and modified to handle Errors serialization + and IE8 compatibility. Tests for this are in test/vendor. -var angularPattern = /^\[((?:[$a-zA-Z0-9]+:)?(?:[$a-zA-Z0-9]+))\] (.*?)\n?(\S+)$/; -var moduleName = 'ngRaven'; + ISC license: https://github.com/isaacs/json-stringify-safe/blob/master/LICENSE +*/ -function angularPlugin(Raven, angular) { - angular = angular || window.angular; - if (!angular) return; +exports = module.exports = stringify; +exports.getSerialize = serializer; - function RavenProvider() { - this.$get = ['$window', function ($window) { - return Raven; - }]; +function indexOf(haystack, needle) { + for (var i = 0; i < haystack.length; ++i) { + if (haystack[i] === needle) return i; } + return -1; +} - function ExceptionHandlerProvider($provide) { - $provide.decorator('$exceptionHandler', ['Raven', '$delegate', exceptionHandler]); - } +function stringify(obj, replacer, spaces, cycleReplacer) { + return JSON.stringify(obj, serializer(replacer, cycleReplacer), spaces); +} - function exceptionHandler(R, $delegate) { - return function (ex, cause) { - R.captureException(ex, { - extra: { - cause: cause - } - }); - $delegate(ex, cause); - }; +// https://github.com/ftlabs/js-abbreviate/blob/fa709e5f139e7770a71827b1893f22418097fbda/index.js#L95-L106 +function stringifyError(value) { + var err = { + // These properties are implemented as magical getters and don't show up in for in + stack: value.stack, + message: value.message, + name: value.name + }; + + for (var i in value) { + if (Object.prototype.hasOwnProperty.call(value, i)) { + err[i] = value[i]; + } } - angular.module(moduleName, []).provider('Raven', RavenProvider).config(['$provide', ExceptionHandlerProvider]); - Raven.setDataCallback(wrappedCallback$1(function (data) { - return angularPlugin._normalizeData(data); - })); + return err; } -angularPlugin._normalizeData = function (data) { - // We only care about mutating an exception - var exception = data.exception; +function serializer(replacer, cycleReplacer) { + var stack = []; + var keys = []; - if (exception) { - exception = exception.values[0]; - var matches = angularPattern.exec(exception.value); + if (cycleReplacer == null) { + cycleReplacer = function(key, value) { + if (stack[0] === value) { + return '[Circular ~]'; + } + return '[Circular ~.' + keys.slice(0, indexOf(stack, value)).join('.') + ']'; + }; + } - if (matches) { - // This type now becomes something like: $rootScope:inprog - exception.type = matches[1]; - exception.value = matches[2]; - data.message = exception.type + ': ' + exception.value; // auto set a new tag specifically for the angular error url + return function(key, value) { + if (stack.length > 0) { + var thisPos = indexOf(stack, this); + ~thisPos ? stack.splice(thisPos + 1) : stack.push(this); + ~thisPos ? keys.splice(thisPos, Infinity, key) : keys.push(key); - data.extra.angularDocs = matches[3].substr(0, 250); + if (~indexOf(stack, value)) { + value = cycleReplacer.call(this, key, value); + } + } else { + stack.push(value); } - } - - return data; -}; -angularPlugin.moduleName = moduleName; -var angular = angularPlugin; + return replacer == null + ? value instanceof Error ? stringifyError(value) : value + : replacer.call(this, key, value); + }; +} -/** - * console plugin +},{}],11:[function(_dereq_,module,exports){ +/* + * JavaScript MD5 + * https://github.com/blueimp/JavaScript-MD5 * - * Monkey patches console.* calls into Sentry messages with - * their appropriate log levels. (Experimental) + * Copyright 2011, Sebastian Tschan + * https://blueimp.net * - * Options: + * Licensed under the MIT license: + * https://opensource.org/licenses/MIT * - * `levels`: An array of levels (methods on `console`) to report to Sentry. - * Defaults to debug, info, warn, and error. + * Based on + * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message + * Digest Algorithm, as defined in RFC 1321. + * Version 2.2 Copyright (C) Paul Johnston 1999 - 2009 + * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet + * Distributed under the BSD License + * See http://pajhome.org.uk/crypt/md5 for more info. */ -var wrapConsoleMethod$1 = console$1.wrapMethod; +/* +* Add integers, wrapping at 2^32. This uses 16-bit operations internally +* to work around bugs in some JS interpreters. +*/ +function safeAdd(x, y) { + var lsw = (x & 0xffff) + (y & 0xffff); + var msw = (x >> 16) + (y >> 16) + (lsw >> 16); + return (msw << 16) | (lsw & 0xffff); +} -function consolePlugin(Raven, console, pluginOptions) { - console = console || window.console || {}; - pluginOptions = pluginOptions || {}; - var logLevels = pluginOptions.levels || ['debug', 'info', 'warn', 'error']; - if ('assert' in console) logLevels.push('assert'); +/* +* Bitwise rotate a 32-bit number to the left. +*/ +function bitRotateLeft(num, cnt) { + return (num << cnt) | (num >>> (32 - cnt)); +} - var callback = function callback(msg, data) { - Raven.captureMessage(msg, data); - }; +/* +* These functions implement the four basic operations the algorithm uses. +*/ +function md5cmn(q, a, b, x, s, t) { + return safeAdd(bitRotateLeft(safeAdd(safeAdd(a, q), safeAdd(x, t)), s), b); +} +function md5ff(a, b, c, d, x, s, t) { + return md5cmn((b & c) | (~b & d), a, b, x, s, t); +} +function md5gg(a, b, c, d, x, s, t) { + return md5cmn((b & d) | (c & ~d), a, b, x, s, t); +} +function md5hh(a, b, c, d, x, s, t) { + return md5cmn(b ^ c ^ d, a, b, x, s, t); +} +function md5ii(a, b, c, d, x, s, t) { + return md5cmn(c ^ (b | ~d), a, b, x, s, t); +} - var level = logLevels.pop(); +/* +* Calculate the MD5 of an array of little-endian words, and a bit length. +*/ +function binlMD5(x, len) { + /* append padding */ + x[len >> 5] |= 0x80 << (len % 32); + x[(((len + 64) >>> 9) << 4) + 14] = len; + + var i; + var olda; + var oldb; + var oldc; + var oldd; + var a = 1732584193; + var b = -271733879; + var c = -1732584194; + var d = 271733878; + + for (i = 0; i < x.length; i += 16) { + olda = a; + oldb = b; + oldc = c; + oldd = d; + + a = md5ff(a, b, c, d, x[i], 7, -680876936); + d = md5ff(d, a, b, c, x[i + 1], 12, -389564586); + c = md5ff(c, d, a, b, x[i + 2], 17, 606105819); + b = md5ff(b, c, d, a, x[i + 3], 22, -1044525330); + a = md5ff(a, b, c, d, x[i + 4], 7, -176418897); + d = md5ff(d, a, b, c, x[i + 5], 12, 1200080426); + c = md5ff(c, d, a, b, x[i + 6], 17, -1473231341); + b = md5ff(b, c, d, a, x[i + 7], 22, -45705983); + a = md5ff(a, b, c, d, x[i + 8], 7, 1770035416); + d = md5ff(d, a, b, c, x[i + 9], 12, -1958414417); + c = md5ff(c, d, a, b, x[i + 10], 17, -42063); + b = md5ff(b, c, d, a, x[i + 11], 22, -1990404162); + a = md5ff(a, b, c, d, x[i + 12], 7, 1804603682); + d = md5ff(d, a, b, c, x[i + 13], 12, -40341101); + c = md5ff(c, d, a, b, x[i + 14], 17, -1502002290); + b = md5ff(b, c, d, a, x[i + 15], 22, 1236535329); + + a = md5gg(a, b, c, d, x[i + 1], 5, -165796510); + d = md5gg(d, a, b, c, x[i + 6], 9, -1069501632); + c = md5gg(c, d, a, b, x[i + 11], 14, 643717713); + b = md5gg(b, c, d, a, x[i], 20, -373897302); + a = md5gg(a, b, c, d, x[i + 5], 5, -701558691); + d = md5gg(d, a, b, c, x[i + 10], 9, 38016083); + c = md5gg(c, d, a, b, x[i + 15], 14, -660478335); + b = md5gg(b, c, d, a, x[i + 4], 20, -405537848); + a = md5gg(a, b, c, d, x[i + 9], 5, 568446438); + d = md5gg(d, a, b, c, x[i + 14], 9, -1019803690); + c = md5gg(c, d, a, b, x[i + 3], 14, -187363961); + b = md5gg(b, c, d, a, x[i + 8], 20, 1163531501); + a = md5gg(a, b, c, d, x[i + 13], 5, -1444681467); + d = md5gg(d, a, b, c, x[i + 2], 9, -51403784); + c = md5gg(c, d, a, b, x[i + 7], 14, 1735328473); + b = md5gg(b, c, d, a, x[i + 12], 20, -1926607734); + + a = md5hh(a, b, c, d, x[i + 5], 4, -378558); + d = md5hh(d, a, b, c, x[i + 8], 11, -2022574463); + c = md5hh(c, d, a, b, x[i + 11], 16, 1839030562); + b = md5hh(b, c, d, a, x[i + 14], 23, -35309556); + a = md5hh(a, b, c, d, x[i + 1], 4, -1530992060); + d = md5hh(d, a, b, c, x[i + 4], 11, 1272893353); + c = md5hh(c, d, a, b, x[i + 7], 16, -155497632); + b = md5hh(b, c, d, a, x[i + 10], 23, -1094730640); + a = md5hh(a, b, c, d, x[i + 13], 4, 681279174); + d = md5hh(d, a, b, c, x[i], 11, -358537222); + c = md5hh(c, d, a, b, x[i + 3], 16, -722521979); + b = md5hh(b, c, d, a, x[i + 6], 23, 76029189); + a = md5hh(a, b, c, d, x[i + 9], 4, -640364487); + d = md5hh(d, a, b, c, x[i + 12], 11, -421815835); + c = md5hh(c, d, a, b, x[i + 15], 16, 530742520); + b = md5hh(b, c, d, a, x[i + 2], 23, -995338651); + + a = md5ii(a, b, c, d, x[i], 6, -198630844); + d = md5ii(d, a, b, c, x[i + 7], 10, 1126891415); + c = md5ii(c, d, a, b, x[i + 14], 15, -1416354905); + b = md5ii(b, c, d, a, x[i + 5], 21, -57434055); + a = md5ii(a, b, c, d, x[i + 12], 6, 1700485571); + d = md5ii(d, a, b, c, x[i + 3], 10, -1894986606); + c = md5ii(c, d, a, b, x[i + 10], 15, -1051523); + b = md5ii(b, c, d, a, x[i + 1], 21, -2054922799); + a = md5ii(a, b, c, d, x[i + 8], 6, 1873313359); + d = md5ii(d, a, b, c, x[i + 15], 10, -30611744); + c = md5ii(c, d, a, b, x[i + 6], 15, -1560198380); + b = md5ii(b, c, d, a, x[i + 13], 21, 1309151649); + a = md5ii(a, b, c, d, x[i + 4], 6, -145523070); + d = md5ii(d, a, b, c, x[i + 11], 10, -1120210379); + c = md5ii(c, d, a, b, x[i + 2], 15, 718787259); + b = md5ii(b, c, d, a, x[i + 9], 21, -343485551); + + a = safeAdd(a, olda); + b = safeAdd(b, oldb); + c = safeAdd(c, oldc); + d = safeAdd(d, oldd); + } + return [a, b, c, d]; +} - while (level) { - wrapConsoleMethod$1(console, level, callback); - level = logLevels.pop(); +/* +* Convert an array of little-endian words to a string +*/ +function binl2rstr(input) { + var i; + var output = ''; + var length32 = input.length * 32; + for (i = 0; i < length32; i += 8) { + output += String.fromCharCode((input[i >> 5] >>> (i % 32)) & 0xff); } + return output; } -var console$3 = consolePlugin; +/* +* Convert a raw string to an array of little-endian words +* Characters >255 have their high-byte silently ignored. +*/ +function rstr2binl(input) { + var i; + var output = []; + output[(input.length >> 2) - 1] = undefined; + for (i = 0; i < output.length; i += 1) { + output[i] = 0; + } + var length8 = input.length * 8; + for (i = 0; i < length8; i += 8) { + output[i >> 5] |= (input.charCodeAt(i / 8) & 0xff) << (i % 32); + } + return output; +} -/*global define*/ +/* +* Calculate the MD5 of a raw string +*/ +function rstrMD5(s) { + return binl2rstr(binlMD5(rstr2binl(s), s.length * 8)); +} -/** - * require.js plugin - * - * Automatically wrap define/require callbacks. (Experimental) - */ +/* +* Calculate the HMAC-MD5, of a key and some data (raw strings) +*/ +function rstrHMACMD5(key, data) { + var i; + var bkey = rstr2binl(key); + var ipad = []; + var opad = []; + var hash; + ipad[15] = opad[15] = undefined; + if (bkey.length > 16) { + bkey = binlMD5(bkey, key.length * 8); + } + for (i = 0; i < 16; i += 1) { + ipad[i] = bkey[i] ^ 0x36363636; + opad[i] = bkey[i] ^ 0x5c5c5c5c; + } + hash = binlMD5(ipad.concat(rstr2binl(data)), 512 + data.length * 8); + return binl2rstr(binlMD5(opad.concat(hash), 512 + 128)); +} -function requirePlugin(Raven) { - if (typeof undefined === 'function' && undefined.amd) { - window.define = Raven.wrap({ - deep: false - }, undefined); - window.require = Raven.wrap({ - deep: false - }, commonjsRequire); +/* +* Convert a raw string to a hex string +*/ +function rstr2hex(input) { + var hexTab = '0123456789abcdef'; + var output = ''; + var x; + var i; + for (i = 0; i < input.length; i += 1) { + x = input.charCodeAt(i); + output += hexTab.charAt((x >>> 4) & 0x0f) + hexTab.charAt(x & 0x0f); } + return output; } -var require_1 = requirePlugin; +/* +* Encode a string as utf-8 +*/ +function str2rstrUTF8(input) { + return unescape(encodeURIComponent(input)); +} -/* This file was generated by './scripts/generate-plugin-combinations.js'! */ +/* +* Take string arguments and return either raw or hex encoded strings +*/ +function rawMD5(s) { + return rstrMD5(str2rstrUTF8(s)); +} +function hexMD5(s) { + return rstr2hex(rawMD5(s)); +} +function rawHMACMD5(k, d) { + return rstrHMACMD5(str2rstrUTF8(k), str2rstrUTF8(d)); +} +function hexHMACMD5(k, d) { + return rstr2hex(rawHMACMD5(k, d)); +} -singleton.addPlugin(angular).addPlugin(console$3).addPlugin(require_1); -var angular_console_require = {}; +function md5(string, key, raw) { + if (!key) { + if (!raw) { + return hexMD5(string); + } + return rawMD5(string); + } + if (!raw) { + return hexHMACMD5(key, string); + } + return rawHMACMD5(key, string); +} -return angular_console_require; +module.exports = md5; -}))); +},{}]},{},[7,1,2,3])(7) +}); \ No newline at end of file diff --git a/dist/angular,console,require/raven.min.js b/dist/angular,console,require/raven.min.js index 88851c755ce8..5670062a393a 100644 --- a/dist/angular,console,require/raven.min.js +++ b/dist/angular,console,require/raven.min.js @@ -1,3 +1,4 @@ -/*! Raven.js 3.22.2 (1b6187b) | github.com/getsentry/raven-js */ -!function(a,b){"object"==typeof exports&&"undefined"!=typeof module?module.exports=b():"function"==typeof define&&define.amd?define(b):a.Raven=b()}(this,function(){"use strict";function a(a,b){return b={exports:{}},a(b,b.exports),b.exports}function b(a){return(b="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(a){return typeof a}:function(a){return a&&"function"==typeof Symbol&&a.constructor===Symbol&&a!==Symbol.prototype?"symbol":typeof a})(a)}function c(a){return"object"===b(a)&&null!==a}function d(a){switch({}.toString.call(a)){case"[object Error]":return!0;case"[object Exception]":return!0;case"[object DOMException]":return!0;default:return a instanceof Error}}function e(a){return l()&&"[object ErrorEvent]"==={}.toString.call(a)}function f(a){return void 0===a}function g(a){return"function"==typeof a}function h(a){return"[object Object]"===Object.prototype.toString.call(a)}function i(a){return"[object String]"===Object.prototype.toString.call(a)}function j(a){return"[object Array]"===Object.prototype.toString.call(a)}function k(a){if(!h(a))return!1;for(var b in a)if(a.hasOwnProperty(b))return!1;return!0}function l(){try{return new ErrorEvent(""),!0}catch(a){return!1}}function m(){if(!("fetch"in P))return!1;try{return new Headers,new Request(""),new Response,!0}catch(a){return!1}}function n(a){function b(b,c){var d=a(b)||b;return c?c(d)||d:d}return b}function o(a,b){var c,d;if(f(a.length))for(c in a)s(a,c)&&b.call(null,c,a[c]);else if(d=a.length)for(c=0;c ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function y(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&i(b))for(c=b.split(/\s+/),f=0;f=0;--b)l[b]===a&&l.splice(b,1)}function c(){g(),l=[]}function d(a,b){var c=null;if(!b||R.collectWindowErrors){for(var d in l)if(l.hasOwnProperty(d))try{l[d].apply(null,[a].concat(T.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function e(a,b,c,e,f){var g=null,i=Q.isErrorEvent(f)?f.error:f,k=Q.isErrorEvent(a)?a.message:a;if(o)R.computeStackTrace.augmentStackTraceWithInitialElement(o,b,c,k),h();else if(i&&Q.isError(i))g=R.computeStackTrace(i),d(g,!0);else{var l,m={url:b,line:c,column:e},n=void 0;if("[object String]"==={}.toString.call(k)){var l=k.match(V);l&&(n=l[1],k=l[2])}m.func=U,g={name:n,message:k,url:F(),stack:[m]},d(g,!0)}return!!j&&j.apply(this,arguments)}function f(){k||(j=S.onerror,S.onerror=e,k=!0)}function g(){k&&(S.onerror=j,k=!1,j=void 0)}function h(){var a=o,b=m;m=null,o=null,n=null,d.apply(null,[a,!1].concat(b))}function i(a,b){var c=T.call(arguments,1);if(o){if(n===a)return;h()}var d=R.computeStackTrace(a);if(o=d,n=a,m=c,setTimeout(function(){n===a&&h()},d.incomplete?2e3:0),b!==!1)throw a}var j,k,l=[],m=null,n=null,o=null;return i.subscribe=a,i.unsubscribe=b,i.uninstall=c,i}(),R.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,d,e=/^\s*at (.*?) ?\(((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,f=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|\[native).*?|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,g=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,h=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,i=/\((\S*)(?::(\d+))(?::(\d+))\)/,j=a.stack.split("\n"),k=[],l=(/^(.*) is undefined$/.exec(a.message),0),m=j.length;l eval")>-1;o&&(b=h.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==l||c[5]||"undefined"==typeof a.columnNumber||(k[0].column=a.columnNumber+1),d={url:c[3],func:c[1]||U,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}!d.func&&d.line&&(d.func=U),k.push(d)}return k.length?{name:a.name,message:a.message,url:F(),stack:k}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=U),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,e){for(var f,g,h=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,i=[],j={},k=!1,l=c.caller;l&&!k;l=l.caller)if(l!==d&&l!==R.report){if(g={url:null,func:U,line:null,column:null},l.name?g.func=l.name:(f=h.exec(l.toString()))&&(g.func=f[1]),"undefined"==typeof g.func)try{g.func=f.input.substring(0,f.input.indexOf("{"))}catch(m){}j[""+l]?k=!0:j[""+l]=!0,i.push(g)}e&&i.splice(0,e);var n={name:a.name,message:a.message,url:F(),stack:i};return b(n,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),n}function d(b,d){var e=null;d=null==d?0:+d;try{if(e=a(b))return e}catch(f){if(R.debug)throw f}try{if(e=c(b,d+1))return e}catch(f){if(R.debug)throw f}return{name:b.name,message:b.message,url:F()}}return d.augmentStackTraceWithInitialElement=b,d.computeStackTraceFromStackProp=a,d}();var W=R,X=a(function(a,b){function c(a,b){for(var c=0;c0){var i=c(d,this);~i?d.splice(i+1):d.push(this),~i?f.splice(i,1/0,g):f.push(g),~c(d,h)&&(h=b.call(this,g,h))}else d.push(h);return null==a?h instanceof Error?e(h):h:a.call(this,g,h)}}b=a.exports=d,b.getSerialize=f});G.prototype=new Error,G.prototype.constructor=G;var Y=G,Z=function(a,b,c){var d=a[b],e=a;if(b in a){var f="warn"===b?"warning":b;a[b]=function(){var a=[].slice.call(arguments),g=Q.safeJoin(a," "),h={level:f,logger:"console",extra:{arguments:a}};"assert"===b?a[0]===!1&&(g="Assertion failed: "+(Q.safeJoin(a.slice(1)," ")||"console.assert"),h.extra.arguments=a.slice(1),c&&c(g,h)):c&&c(g,h),d&&Function.prototype.apply.call(d,e,a)}}},$={wrapMethod:Z},_=Q.isError,aa=Q.isObject,ba=Q.isErrorEvent,ca=Q.isUndefined,da=Q.isFunction,ea=Q.isString,fa=Q.isArray,ga=Q.isEmptyObject,ha=Q.each,ia=Q.objectMerge,ja=Q.truncate,ka=Q.objectFrozen,la=Q.hasKey,ma=Q.joinRegExp,na=Q.urlencode,oa=Q.uuid4,pa=Q.htmlTreeAsString,qa=Q.isSameException,ra=Q.isSameStacktrace,sa=Q.parseUrl,ta=Q.fill,ua=Q.supportsFetch,va=$.wrapMethod,wa="source protocol user pass host port path".split(" "),xa=/^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/,ya="undefined"!=typeof window?window:"undefined"!=typeof N?N:"undefined"!=typeof self?self:{},za=ya.document,Aa=ya.navigator;J.prototype={VERSION:"3.22.2",debug:!1,TraceKit:W,config:function(a,b){var c=this;if(c.i)return this.D("error","Error: Raven has already been configured"),c;if(!a)return c;var d=c.m;b&&ha(b,function(a,b){"tags"===a||"extra"===a||"user"===a?c.l[a]=b:d[a]=b}),c.setDSN(a),d.ignoreErrors.push(/^Script error\.?$/),d.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/),d.ignoreErrors=ma(d.ignoreErrors),d.ignoreUrls=!!d.ignoreUrls.length&&ma(d.ignoreUrls),d.whitelistUrls=!!d.whitelistUrls.length&&ma(d.whitelistUrls),d.includePaths=ma(d.includePaths),d.maxBreadcrumbs=Math.max(0,Math.min(d.maxBreadcrumbs||100,100));var e={xhr:!0,console:!0,dom:!0,location:!0,sentry:!0},f=d.autoBreadcrumbs;"[object Object]"==={}.toString.call(f)?f=ia(e,f):f!==!1&&(f=e),d.autoBreadcrumbs=f;var g={tryCatch:!0},h=d.instrument;return"[object Object]"==={}.toString.call(h)?h=ia(g,h):h!==!1&&(h=g),d.instrument=h,W.collectWindowErrors=!!d.collectWindowErrors,c},install:function(){var a=this;return a.isSetup()&&!a.p&&(W.report.subscribe(function(){a.E.apply(a,arguments)}),a.F(),a.m.instrument&&a.m.instrument.tryCatch&&a.G(),a.m.autoBreadcrumbs&&a.H(),a.I(),a.p=!0),Error.stackTraceLimit=a.m.stackTraceLimit,this},setDSN:function(a){var b=this,c=b.J(a),d=c.path.lastIndexOf("/"),e=c.path.substr(1,d);b.K=a,b.j=c.user,b.L=c.pass&&c.pass.substr(1),b.k=c.path.substr(d+1),b.i=b.M(c),b.N=b.i+"/"+e+"api/"+b.k+"/store/",this.A()},context:function(a,b,c){return da(a)&&(c=b||[],b=a,a=void 0),this.wrap(a,b).apply(this,c)},wrap:function(a,b,c){function d(){var d=[],f=arguments.length,g=!a||a&&a.deep!==!1;for(c&&da(c)&&c.apply(this,arguments);f--;)d[f]=g?e.wrap(a,arguments[f]):arguments[f];try{return b.apply(this,d)}catch(h){throw e.O(),e.captureException(h,a),h}}var e=this;if(ca(b)&&!da(a))return a;if(da(a)&&(b=a,a=void 0),!da(b))return b;try{if(b.a)return b;if(b.P)return b.P}catch(f){return b}for(var g in b)la(b,g)&&(d[g]=b[g]);return d.prototype=b.prototype,b.P=d,d.a=!0,d.b=b,d},uninstall:function(){return W.report.uninstall(),this.Q(),this.R(),this.S(),Error.stackTraceLimit=this.q,this.p=!1,this},captureException:function(a,b){b=ia({trimHeadFrames:0},b?b:{});var c=!_(a),d=!ba(a),e=ba(a)&&!a.error;if(c&&d||e)return this.captureMessage(a,ia(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}));ba(a)&&(a=a.error),this.f=a;try{var f=W.computeStackTrace(a);this.T(f,b)}catch(g){if(a!==g)throw g}return this},captureMessage:function(a,b){if(!this.m.ignoreErrors.test||!this.m.ignoreErrors.test(a)){b=b||{};var c,d=ia({message:a+""},b);try{throw new Error(a)}catch(e){c=e}c.name=null;var f=W.computeStackTrace(c),g=fa(f.stack)&&f.stack[1],h=g&&g.url||"";if((!this.m.ignoreUrls.test||!this.m.ignoreUrls.test(h))&&(!this.m.whitelistUrls.test||this.m.whitelistUrls.test(h))){if(this.m.stacktrace||b&&b.stacktrace){b=ia({fingerprint:a,trimHeadFrames:(b.trimHeadFrames||0)+1},b);var i=this.U(f,b);d.stacktrace={frames:i.reverse()}}return this.V(d),this}}},captureBreadcrumb:function(a){var b=ia({timestamp:H()/1e3},a);if(da(this.m.breadcrumbCallback)){var c=this.m.breadcrumbCallback(b);if(aa(c)&&!ga(c))b=c;else if(c===!1)return this}return this.w.push(b),this.w.length>this.m.maxBreadcrumbs&&this.w.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.t.push([a,b]),this.p&&this.I(),this},setUserContext:function(a){return this.l.user=a,this},setExtraContext:function(a){return this.W("extra",a),this},setTagsContext:function(a){return this.W("tags",a),this},clearContext:function(){return this.l={},this},getContext:function(){return JSON.parse(X(this.l))},setEnvironment:function(a){return this.m.environment=a,this},setRelease:function(a){return this.m.release=a,this},setDataCallback:function(a){var b=this.m.dataCallback;return this.m.dataCallback=I(b,a),this},setBreadcrumbCallback:function(a){var b=this.m.breadcrumbCallback;return this.m.breadcrumbCallback=I(b,a),this},setShouldSendCallback:function(a){var b=this.m.shouldSendCallback;return this.m.shouldSendCallback=I(b,a),this},setTransport:function(a){return this.m.transport=a,this},lastException:function(){return this.f},lastEventId:function(){return this.h},isSetup:function(){return!!this.c&&(!!this.i||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.D("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=ya.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(za){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new Y("Missing eventId");var c=a.dsn||this.K;if(!c)throw new Y("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.l.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.M(this.J(c)),h=za.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(za.head||za.body).appendChild(h)}},O:function(){var a=this;this.o+=1,setTimeout(function(){a.o-=1})},X:function(a,b){var c,d;if(this.d){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),za.createEvent?(c=za.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=za.createEventObject(),c.eventType=a);for(d in b)la(b,d)&&(c[d]=b[d]);if(za.createEvent)za.dispatchEvent(c);else try{za.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},Y:function(a){var b=this;return function(c){if(b.Z=null,b.x!==c){b.x=c;var d;try{d=pa(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},$:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.Z;g||a.Y("input")(c),clearTimeout(g),a.Z=setTimeout(function(){a.Z=null},b)}}},_:function(a,b){var c=sa(this.y.href),d=sa(b),e=sa(a);this.z=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},F:function(){var a=this;a.aa=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.a?a.aa.apply(this.b,arguments):a.aa.apply(this,arguments)}},Q:function(){this.aa&&(Function.prototype.toString=this.aa)},G:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b._(b.z,c+""),a.apply(this,arguments)}};ta(history,"pushState",j,d),ta(history,"replaceState",j,d)}if(c.console&&"console"in ya&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};ha(["debug","info","warn","error","log"],function(a,b){va(console,b,k)})}},R:function(){for(var a;this.v.length;){a=this.v.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},S:function(){for(var a in this.s)this.r[a]=this.s[a]},I:function(){var a=this;ha(this.t,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},J:function(a){var b=xa.exec(a),c={},d=7;try{for(;d--;)c[wa[d]]=b[d]||""}catch(e){throw new Y("Invalid DSN: "+a)}if(c.pass&&!this.m.allowSecretKey)throw new Y("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},M:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},E:function(){this.o||this.T.apply(this,arguments)},T:function(a,b){var c=this.U(a,b);this.X("handle",{stackInfo:a,options:b}),this.ca(a.name,a.message,a.url,a.lineno,c,b)},U:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(ha(a.stack,function(b,e){var f=c.da(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.w,0)}),this.l.user&&(a.user=this.l.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||ga(a[b]))&&delete a[b]}),da(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!ga(a)&&(!da(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.ja()?void this.D("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random()this.l.maxBreadcrumbs&&this.v.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.s.push([a,b]),this.o&&this.G(),this},setUserContext:function(a){return this.k.user=a,this},setExtraContext:function(a){return this.$("extra",a),this},setTagsContext:function(a){return this.$("tags",a),this},clearContext:function(){return this.k={},this},getContext:function(){return JSON.parse(h(this.k))},setEnvironment:function(a){return this.l.environment=a,this},setRelease:function(a){return this.l.release=a,this},setDataCallback:function(a){var b=this.l.dataCallback;return this.l.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.l.breadcrumbCallback;return this.l.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.l.shouldSendCallback;return this.l.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.l.transport=a,this},lastException:function(){return this.e},lastEventId:function(){return this.g},isSetup:function(){return!!this.b&&(!!this.h||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.A("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=P.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(Q){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.I;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.k.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.K(this.H(c)),h=Q.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(Q.head||Q.body).appendChild(h)}},M:function(){var a=this;this.n+=1,setTimeout(function(){a.n-=1})},_:function(a,b){var c,d;if(this.c){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),Q.createEvent?(c=Q.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=Q.createEventObject(),c.eventType=a);for(d in b)y(b,d)&&(c[d]=b[d]);if(Q.createEvent)Q.dispatchEvent(c);else try{Q.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},aa:function(a){var b=this;return function(c){if(b.ba=null,b.w!==c){b.w=c;var d;try{d=C(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ca:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.ba;g||a.aa("input")(c),clearTimeout(g),a.ba=setTimeout(function(){a.ba=null},b)}}},da:function(a,b){var c=F(this.x.href),d=F(b),e=F(a);this.y=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},D:function(){var a=this;a.ea=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.N?a.ea.apply(this.P,arguments):a.ea.apply(this,arguments)}},R:function(){this.ea&&(Function.prototype.toString=this.ea)},E:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.da(b.y,c+""),a.apply(this,arguments)}};G(history,"pushState",j,d),G(history,"replaceState",j,d)}if(c.console&&"console"in P&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};u(["debug","info","warn","error","log"],function(a,b){M(console,b,k)})}},S:function(){for(var a;this.u.length;){a=this.u.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},T:function(){for(var a in this.r)this.q[a]=this.r[a]},G:function(){var a=this;u(this.s,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},H:function(a){var b=O.exec(a),c={},d=7;try{for(;d--;)c[N[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.l.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},K:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},B:function(){this.n||this.W.apply(this,arguments)},W:function(a,b){var c=this.Y(a,b);this._("handle",{stackInfo:a,options:b}),this.ga(a.name,a.message,a.url,a.lineno,c,b)},Y:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(u(a.stack,function(b,e){var f=c.ha(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.v,0)}),this.k.user&&(a.user=this.k.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),a=this.qa(a),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||t(a[b]))&&delete a[b]}),q(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!t(a)&&(!q(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.na()?void this.A("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function B(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&j(b))for(c=b.split(/\s+/),f=0;fc?M(a,b-1):d}function N(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?T:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function O(a,b){function c(a){return k(a)?a.map(function(a){return c(a)}):i(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!k(b)||k(b)&&0===b.length)return a;var d,e=w(b),f="********";try{d=JSON.parse(P(a))}catch(g){return a}return c(d)}var P=a(10),Q="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},R=3,S=51200,T=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isUndefined:g,isFunction:h,isPlainObject:i,isString:j,isArray:k,isEmptyObject:l,supportsErrorEvent:m,supportsFetch:n,supportsReferrerPolicy:o,supportsPromiseRejectionEvent:p,wrappedCallback:q,each:r,objectMerge:s,truncate:u,objectFrozen:t,hasKey:v,joinRegExp:w,urlencode:x,uuid4:z,htmlTreeAsString:A,htmlElementAsString:B,isSameException:E,isSameStacktrace:F,parseUrl:y,fill:G,safeJoin:H,serializeException:M,serializeKeysForMessage:N,sanitize:O}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{10:10}],9:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}var e=a(8),f={collectWindowErrors:!0,debug:!1},g="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},h=[].slice,i="?",j=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;f.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function k(a,b){var c=null;if(!b||f.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(h.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,g,h){var l=null,m=e.isErrorEvent(h)?h.error:h,n=e.isErrorEvent(a)?a.message:a;if(v)f.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&e.isError(m))l=f.computeStackTrace(m),k(l,!0);else{var p,r={url:b,line:c,column:g},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(j);p&&(s=p[1],n=p[2])}r.func=i,l={name:s,message:n,url:d(),stack:[r]},k(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=g.onerror,g.onerror=l,r=!0)}function n(){r&&(g.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,k.apply(null,[a,!1].concat(b))}function p(a,b){var c=h.call(arguments,1);if(v){if(u===a)return;o()}var d=f.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),f.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,e,f=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,g=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,h=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,j=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,k=/\((\S*)(?::(\d+))(?::(\d+))\)/,l=a.stack.split("\n"),m=[],n=(/^(.*) is undefined$/.exec(a.message),0),o=l.length;n eval")>-1;q&&(b=j.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==n||c[5]||"undefined"==typeof a.columnNumber||(m[0].column=a.columnNumber+1),e={url:c[3],func:c[1]||i,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}!e.func&&e.line&&(e.func=i),m.push(e)}return m.length?{name:a.name,message:a.message,url:d(),stack:m}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=i),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,g){for(var h,j,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==e&&o!==f.report){if(j={url:null,func:i,line:null,column:null},o.name?j.func=o.name:(h=k.exec(o.toString()))&&(j.func=h[1]),"undefined"==typeof j.func)try{j.func=h.input.substring(0,h.input.indexOf("{"))}catch(p){}m[""+o]?n=!0:m[""+o]=!0,l.push(j)}g&&l.splice(0,g);var q={name:a.name,message:a.message,url:d(),stack:l};return b(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),q}function e(b,e){var g=null;e=null==e?0:+e;try{if(g=a(b))return g}catch(h){if(f.debug)throw h}try{if(g=c(b,e+1))return g}catch(h){if(f.debug)throw h}return{name:b.name,message:b.message,url:d()}}return e.augmentStackTraceWithInitialElement=b,e.computeStackTraceFromStackProp=a, +e}(),b.exports=f}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{8:8}],10:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}],11:[function(a,b,c){function d(a,b){var c=(65535&a)+(65535&b),d=(a>>16)+(b>>16)+(c>>16);return d<<16|65535&c}function e(a,b){return a<>>32-b}function f(a,b,c,f,g,h){return d(e(d(d(b,a),d(f,h)),g),c)}function g(a,b,c,d,e,g,h){return f(b&c|~b&d,a,b,e,g,h)}function h(a,b,c,d,e,g,h){return f(b&d|c&~d,a,b,e,g,h)}function i(a,b,c,d,e,g,h){return f(b^c^d,a,b,e,g,h)}function j(a,b,c,d,e,g,h){return f(c^(b|~d),a,b,e,g,h)}function k(a,b){a[b>>5]|=128<>>9<<4)+14]=b;var c,e,f,k,l,m=1732584193,n=-271733879,o=-1732584194,p=271733878;for(c=0;c>5]>>>b%32&255);return c}function m(a){var b,c=[];for(c[(a.length>>2)-1]=void 0,b=0;b>5]|=(255&a.charCodeAt(b/8))<16&&(e=k(e,8*a.length)),c=0;c<16;c+=1)f[c]=909522486^e[c],g[c]=1549556828^e[c];return d=k(f.concat(m(b)),512+8*b.length),l(k(g.concat(d),640))}function p(a){var b,c,d="0123456789abcdef",e="";for(c=0;c>>4&15)+d.charAt(15&b);return e}function q(a){return unescape(encodeURIComponent(a))}function r(a){return n(q(a))}function s(a){return p(r(a))}function t(a,b){return o(q(a),q(b))}function u(a,b){return p(t(a,b))}function v(a,b,c){return b?c?t(b,a):u(b,a):c?r(a):s(a)}b.exports=v},{}]},{},[7,1,2,3])(7)}); //# sourceMappingURL=raven.min.js.map \ No newline at end of file diff --git a/dist/angular,console,require/raven.min.js.map b/dist/angular,console,require/raven.min.js.map index 4e9be89dabae..4c13d11f87a8 100644 --- a/dist/angular,console,require/raven.min.js.map +++ b/dist/angular,console,require/raven.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["raven.js"],"names":["global","factory","exports","module","define","amd","Raven","this","createCommonjsModule","fn","_typeof","obj","Symbol","iterator","constructor","prototype","isObject$1","what","isError$1","value","toString","call","Error","isErrorEvent$1","supportsErrorEvent","isUndefined$1","isFunction$1","isPlainObject","Object","isString$1","isArray$1","isEmptyObject$1","_","hasOwnProperty","ErrorEvent","e","supportsFetch$1","_window$3","Headers","Request","Response","wrappedCallback","callback","dataCallback","data","original","normalizedData","each$1","i","j","length","hasKey$1","objectMerge$1","obj1","obj2","key","objectFrozen$1","isFrozen","truncate$1","str","max","substr","object","joinRegExp$1","patterns","pattern","sources","len","push","replace","source","RegExp","join","urlencode$1","o","pairs","encodeURIComponent","parseUrl$1","url","match","query","fragment","protocol","host","path","relative","uuid4$1","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","r","Math","random","htmlTreeAsString$1","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","reverse","className","classes","attr","tagName","toLowerCase","id","split","attrWhitelist","getAttribute","isOnlyOneTruthy","a","b","isBothUndefined","isSameException$1","ex1","ex2","values","type","stacktrace","isSameStacktrace$1","stack1","stack2","frames1","frames","frames2","filename","lineno","colno","fill$1","name","replacement","track","orig","__raven__","__orig__","safeJoin","input","delimiter","output","String","getLocationHref","document","location","href","RavenConfigError","message","now","Date","keepOriginalCallback","isFunction","Raven$1","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window$1","SENTRY_RELEASE","logger","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","_fetchDefaults","method","keepalive","referrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","console","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","_lastHref","_resetBackoff","angularPlugin","angular","RavenProvider","$get","$window","ExceptionHandlerProvider","$provide","decorator","exceptionHandler","R","$delegate","ex","cause","captureException","extra","window","moduleName","provider","config","setDataCallback","wrappedCallback$1","_normalizeData","consolePlugin","pluginOptions","logLevels","levels","msg","captureMessage","level","pop","wrapConsoleMethod$1","requirePlugin","commonjsGlobal","self","_sPO","setPrototypeOf","p","__proto__","Reflect","construct","Parent","args","Class","Constructor","apply","bind","utils","isObject","isError","isErrorEvent","isString","isArray","isEmptyObject","supportsFetch","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","TraceKit","debug","_window$2","_slice","slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","report","subscribe","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","stack","isWindowError","exception","concat","arguments","inner","traceKitWindowOnError","lineNo","colNo","error","lastExceptionStack","computeStackTrace","augmentStackTraceWithInitialElement","processLastException","groups","line","column","undefined","func","_oldOnerrorHandler","_onErrorHandlerInstalled","onerror","_lastExceptionStack","_lastArgs","lastArgs","lastException","rethrow","setTimeout","incomplete","uninstall","computeStackTraceFromStackProp","submatch","parts","element","chrome","gecko","winjs","geckoEval","chromeEval","lines","exec","isNative","indexOf","isEval","columnNumber","stackInfo","initial","unshift","partial","computeStackTraceByWalkingCallerChain","depth","item","functionName","funcs","recursion","curr","caller","substring","result","sourceURL","fileName","lineNumber","description","tracekit","stringify_1","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","err","keys","thisPos","Infinity","getSerialize","configError","wrapMethod","originalConsoleLevel","originalConsole","sentryLevel","Function","console$1","wrapConsoleMethod","dsnKeys","dsnPattern","navigator","VERSION","dsn","options","_logDebug","globalOptions","setDSN","maxBreadcrumbs","min","autoBreadcrumbDefaults","xhr","dom","sentry","instrumentDefaults","tryCatch","install","isSetup","_handleOnErrorStackInfo","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","lastIndexOf","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","context","wrap","_before","wrapped","deep","_ignoreNextOnError","__raven_wrapper__","property","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","trimHeadFrames","isNotError","isNotErrorEvent","isErrorEventWithoutError","_handleStackInfo","test","initialCall","fileurl","fingerprint","_prepareFrames","_send","captureBreadcrumb","crumb","timestamp","breadcrumbCallback","shift","addPlugin","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","O","X","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","Y","evtName","_keypressTimeout","target","category","$","debounceDuration","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","from","to","parsedLoc","parsedTo","parsedFrom","F","_originalFunctionToString","Q","G","wrapTimeFn","t","Array","originalCallback","wrapEventTarget","proto","capture","secure","handleEvent","before","clickHandler","keypressHandler","_keypressEventHandler","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","H","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","onreadystatechange","origFetch","fetchInput","fetchData","then","response","addEventListener","attachEvent","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","builtin","S","I","installer","J","m","allowSecretKey","M","port","E","T","_triggerEvent","_processException","U","frame","_normalizeFrame","in_app","da","stackInfoUrl","normalized","function","ca","prefixedMessage","culprit","ea","request","Referer","breadcrumbs","_trimBreadcrumbs","fa","urlProp","urlProps","ga","httpData","userAgent","User-Agent","referrer","A","_backoffDuration","_backoffStart","ja","ka","current","last","la","_shouldBackoff","retry","get","getResponseHeader","parseInt","V","baseData","project","platform","_getHttpData","serverName","server_name","forEach","_sendProcessedPayload","na","ma","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","oa","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","onload","open","setRequestHeader","send","pa","hash","evaluated","D","W","setUser","setReleaseContext","raven","_window","_Raven","noConflict","singleton","angularPattern","matches","angularDocs","console$3","require_1","angular_console_require"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file +{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","angularPlugin","angular","RavenProvider","$get","$window","ExceptionHandlerProvider","$provide","decorator","exceptionHandler","R","$delegate","ex","cause","captureException","extra","moduleName","provider","config","setDataCallback","wrappedCallback","data","_normalizeData","angularPattern","exception","values","matches","exec","value","type","message","angularDocs","substr","addPlugin","7","8","2","consolePlugin","console","pluginOptions","logLevels","levels","push","callback","msg","captureMessage","level","pop","wrapConsoleMethod","wrapMethod","5","3","requirePlugin","wrap","deep","4","RavenConfigError","name","prototype","constructor","utils","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","safeJoin","logger","Function","apply","6","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","sanitizeKeys","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isError","isObject","isPlainObject","isErrorEvent","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","sanitize","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","dsn","options","_logDebug","globalOptions","key","setDSN","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","toString","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","context","func","undefined","_before","wrapped","_ignoreNextOnError","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","U","event","reason","unhandledPromiseRejection","C","_promiseRejectionHandler","bind","addEventListener","Q","removeEventListener","trimHeadFrames","error","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","V","currentOptions","exKeys","Object","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","M","setTimeout","_","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","aa","evtName","_keypressTimeout","target","category","ca","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","da","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","D","_originalFunctionToString","E","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","F","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","S","builtin","T","G","installer","concat","H","str","m","allowSecretKey","K","port","B","W","stackInfo","_triggerEvent","_processException","lineno","Y","frame","_normalizeFrame","in_app","ha","stackInfoUrl","normalized","filename","line","colno","column","function","ga","prefixedMessage","culprit","ia","request","Referer","breadcrumbs","_trimBreadcrumbs","ja","urlProp","urlProps","ka","httpData","userAgent","User-Agent","referrer","z","_backoffDuration","_backoffStart","na","oa","current","last","pa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Z","baseData","project","platform","_getHttpData","serverName","server_name","_sanitizeData","forEach","random","_sendProcessedPayload","qa","sa","ra","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","ta","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","onerror","open","setRequestHeader","send","ua","hash","evaluated","A","$","setUser","setReleaseContext","10","11","9","RavenConstructor","_Raven","noConflict","Client","what","supportsErrorEvent","ErrorEvent","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","sanitizeMask","safeInput","o_O","getLocationHref","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","y","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","charAt","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","string","raw"],"mappings":";CAYA,SAAUA,GAAG,GAAoB,gBAAVC,UAAoC,mBAATC,QAAsBA,OAAOD,QAAQD,QAAS,IAAmB,kBAATG,SAAqBA,OAAOC,IAAKD,UAAUH,OAAO,CAAC,GAAIK,EAAkCA,GAAb,mBAATC,QAAwBA,OAA+B,mBAATC,QAAwBA,OAA6B,mBAAPC,MAAsBA,KAAYC,KAAKJ,EAAEK,MAAQV,MAAO,WAAW,GAAIG,EAAsB,OAAO,SAAUQ,GAAEC,EAAEC,EAAEC,GAAG,QAASC,GAAEC,EAAEC,GAAG,IAAIJ,EAAEG,GAAG,CAAC,IAAIJ,EAAEI,GAAG,CAAC,GAAIE,GAAkB,kBAATC,UAAqBA,OAAQ,KAAIF,GAAGC,EAAE,MAAOA,GAAEF,GAAE,EAAI,IAAGI,EAAE,MAAOA,GAAEJ,GAAE,EAAI,IAAIhB,GAAE,GAAIqB,OAAM,uBAAuBL,EAAE,IAAK,MAAMhB,GAAEsB,KAAK,mBAAmBtB,EAAE,GAAIuB,GAAEV,EAAEG,IAAIf,WAAYW,GAAEI,GAAG,GAAGQ,KAAKD,EAAEtB,QAAQ,SAASU,GAAG,GAAIE,GAAED,EAAEI,GAAG,GAAGL,EAAG,OAAOI,GAAEF,EAAEA,EAAEF,IAAIY,EAAEA,EAAEtB,QAAQU,EAAEC,EAAEC,EAAEC,GAAG,MAAOD,GAAEG,GAAGf,QAAkD,IAAI,GAA1CmB,GAAkB,kBAATD,UAAqBA,QAAgBH,EAAE,EAAEA,EAAEF,EAAEW,OAAOT,IAAID,EAAED,EAAEE,GAAI,OAAOD,KAAKW,GAAG,SAASC,EAAQzB,EAAOD,GAYp0B,QAAS2B,GAAclB,EAAOmB,GAK5B,QAASC,KACPrB,KAAKsB,MACH,UACA,SAASC,GACP,MAAOtB,KAKb,QAASuB,GAAyBC,GAChCA,EAASC,UAAU,qBAAsB,QAAS,YAAaC,IAGjE,QAASA,GAAiBC,EAAGC,GAC3B,MAAO,UAASC,EAAIC,GAClBH,EAAEI,iBAAiBF,GACjBG,OAAQF,MAAOA,KAEjBF,EAAUC,EAAIC,IAtBlBX,EAAUA,GAAWvB,OAAOuB,QAEvBA,IAwBLA,EACG3B,OAAOyC,MACPC,SAAS,QAASd,GAClBe,QAAQ,WAAYZ,IAEvBvB,EAAMoC,gBACJC,EAAgB,SAASC,GACvB,MAAOpB,GAAcqB,EAAeD,OAxC1C,GAAID,GAAkBpB,EAAQ,GAAGoB,gBAG7BG,EAAiB,6DACjBP,EAAa,SAyCjBf,GAAcqB,EAAiB,SAASD,GAEtC,GAAIG,GAAYH,EAAKG,SACrB,IAAIA,EAAW,CACbA,EAAYA,EAAUC,OAAO,EAC7B,IAAIC,GAAUH,EAAeI,KAAKH,EAAUI,MAExCF,KAEFF,EAAUK,KAAOH,EAAQ,GACzBF,EAAUI,MAAQF,EAAQ,GAE1BL,EAAKS,QAAUN,EAAUK,KAAO,KAAOL,EAAUI,MAEjDP,EAAKN,MAAMgB,YAAcL,EAAQ,GAAGM,OAAO,EAAG,MAIlD,MAAOX,IAGTpB,EAAce,WAAaA,EAE3BzC,EAAOD,QAAU2B,EAEjBD,EAAQ,GAAGiC,UAAU1D,EAAOD,WACzB4D,EAAI,EAAEC,EAAI,IAAIC,GAAG,SAASpC,EAAQzB,EAAOD,GAc5C,QAAS+D,GAActD,EAAOuD,EAASC,GACrCD,EAAUA,GAAW3D,OAAO2D,YAC5BC,EAAgBA,KAEhB,IAAIC,GAAYD,EAAcE,SAAW,QAAS,OAAQ,OAAQ,QAC9D,WAAYH,IAASE,EAAUE,KAAK,SAOxC,KALA,GAAIC,GAAW,SAASC,EAAKvB,GAC3BtC,EAAM8D,eAAeD,EAAKvB,IAGxByB,EAAQN,EAAUO,MACfD,GACLE,EAAkBV,EAASQ,EAAOH,GAClCG,EAAQN,EAAUO,MAhBtB,GAAIC,GAAoBhD,EAAQ,GAAGiD,UAoBnC1E,GAAOD,QAAU+D,EAEjBrC,EAAQ,GAAGiC,UAAU1D,EAAOD,WACzB4E,EAAI,EAAEhB,EAAI,IAAIiB,GAAG,SAASnD,EAAQzB,EAAOD,GAO5C,QAAS8E,GAAcrE,GACC,kBAAXP,IAAyBA,EAAOC,MACzCE,OAAOH,OAASO,EAAMsE,MAAMC,MAAM,GAAQ9E,GAC1CG,OAAOa,QAAUT,EAAMsE,MAAMC,MAAM,GAAQtD,IAI/CzB,EAAOD,QAAU8E,EAEjBpD,EAAQ,GAAGiC,UAAU1D,EAAOD,WACzB4D,EAAI,IAAIqB,GAAG,SAASvD,EAAQzB,EAAOD,GACtC,QAASkF,GAAiB1B,GACxBhD,KAAK2E,KAAO,mBACZ3E,KAAKgD,QAAUA,EAEjB0B,EAAiBE,UAAY,GAAIhE,OACjC8D,EAAiBE,UAAUC,YAAcH,EAEzCjF,EAAOD,QAAUkF,OAEXN,GAAG,SAASlD,EAAQzB,EAAOD,GACjC,GAAIsF,GAAQ5D,EAAQ,GAEhBiD,EAAa,SAASX,EAASQ,EAAOH,GACxC,GAAIkB,GAAuBvB,EAAQQ,GAC/BgB,EAAkBxB,CAEtB,IAAMQ,IAASR,GAAf,CAIA,GAAIyB,GAAwB,SAAVjB,EAAmB,UAAYA,CAEjDR,GAAQQ,GAAS,WACf,GAAIkB,MAAUC,MAAMpE,KAAKqE,WAErBtB,EAAMgB,EAAMO,SAASH,EAAM,KAC3B3C,GAAQyB,MAAOiB,EAAaK,OAAQ,UAAWrD,OAAQmD,UAAWF,GAExD,YAAVlB,EACEkB,EAAK,MAAO,IAEdpB,EACE,sBAAwBgB,EAAMO,SAASH,EAAKC,MAAM,GAAI,MAAQ,kBAChE5C,EAAKN,MAAMmD,UAAYF,EAAKC,MAAM,GAClCtB,GAAYA,EAASC,EAAKvB,IAG5BsB,GAAYA,EAASC,EAAKvB,GAIxBwC,GAGFQ,SAASX,UAAUY,MAAMzE,KAAKgE,EAAsBC,EAAiBE,KAK3EzF,GAAOD,SACL2E,WAAYA,KAGXd,EAAI,IAAIoC,GAAG,SAASvE,EAAQzB,EAAOD,IACtC,SAAWM,GA0CX,QAAS4F,KACP,OAAQ,GAAIC,MAWd,QAASC,GAAqBC,EAAUhC,GACtC,MAAOiC,GAAWjC,GACd,SAAStB,GACP,MAAOsB,GAAStB,EAAMsD,IAExBhC,EAMN,QAAS5D,KACPD,KAAK+F,IAA8B,gBAATC,QAAqBA,KAAKC,WAEpDjG,KAAKkG,GAAgBC,EAAYC,GACjCpG,KAAKqG,GAAiBF,EAAYG,GAClCtG,KAAKuG,EAAyB,KAC9BvG,KAAKwG,EAAY,KACjBxG,KAAKyG,EAAe,KACpBzG,KAAK0G,EAAgB,KACrB1G,KAAK2G,EAAa,KAClB3G,KAAK4G,EAAiB,KACtB5G,KAAK6G,KACL7G,KAAK8G,GAEHC,QAASC,EAAQC,gBAAkBD,EAAQC,eAAeC,GAC1D5B,OAAQ,aACR6B,gBACAC,cACAC,iBACAC,gBACAC,QAAS,KACTC,qBAAqB,EACrBC,4BAA4B,EAC5BC,iBAAkB,EAElBC,aAAc,IACdC,gBAAiB,GACjBC,iBAAiB,EACjBC,YAAY,EACZC,WAAY,EACZC,iBAEFhI,KAAKiI,GACHC,OAAQ,OACRC,WAAW,EAKXC,eAAgBC,IAA2B,SAAW,IAExDrI,KAAKsI,EAAiB,EACtBtI,KAAKuI,GAAoB,EACzBvI,KAAKwI,EAAgC5H,MAAMgH,gBAG3C5H,KAAKyI,EAAmBzB,EAAQxD,YAChCxD,KAAK0I,KACL1I,KAAK2I,KACL3I,KAAK4I,EAAalD,IAClB1F,KAAK6I,KACL7I,KAAK8I,KACL9I,KAAK+I,EAAqB,KAE1B/I,KAAKgJ,EAAYhC,EAAQiC,SACzBjJ,KAAKkJ,EAAYlJ,KAAKgJ,GAAahJ,KAAKgJ,EAAUG,KAClDnJ,KAAKoJ,GAGL,KAAK,GAAIlB,KAAUlI,MAAKyI,EACtBzI,KAAK0I,EAAwBR,GAAUlI,KAAKyI,EAAiBP,GA1HjE,GAAImB,GAAWnI,EAAQ,GACnB+E,EAAY/E,EAAQ,IACpBoI,EAAMpI,EAAQ,IACdwD,EAAmBxD,EAAQ,GAE3B4D,EAAQ5D,EAAQ,GAChBqI,EAAUzE,EAAMyE,QAChBC,EAAW1E,EAAM0E,SACjBC,EAAgB3E,EAAM2E,cACtBC,EAAe5E,EAAM4E,aACrBvD,EAAcrB,EAAMqB,YACpBL,EAAahB,EAAMgB,WACnB6D,EAAW7E,EAAM6E,SACjBC,EAAU9E,EAAM8E,QAChBC,EAAgB/E,EAAM+E,cACtBC,EAAOhF,EAAMgF,KACbC,EAAcjF,EAAMiF,YACpBC,EAAWlF,EAAMkF,SACjBC,EAAenF,EAAMmF,aACrBC,EAASpF,EAAMoF,OACfC,EAAarF,EAAMqF,WACnBC,EAAYtF,EAAMsF,UAClBC,EAAQvF,EAAMuF,MACdC,EAAmBxF,EAAMwF,iBACzBC,EAAkBzF,EAAMyF,gBACxBC,EAAmB1F,EAAM0F,iBACzBC,EAAW3F,EAAM2F,SACjBC,EAAO5F,EAAM4F,KACbC,EAAgB7F,EAAM6F,cACtBtC,EAAyBvD,EAAMuD,uBAC/BuC,EAA0B9F,EAAM8F,wBAChCC,EAAqB/F,EAAM+F,mBAC3BC,EAAWhG,EAAMgG,SAEjB5G,EAAoBhD,EAAQ,GAAGiD,WAE/B4G,EAAU,2CAA2CC,MAAM,KAC7DC,EAAa,gEAOXjE,EACgB,mBAAXnH,QACHA,OACkB,mBAAXC,GAAyBA,EAAyB,mBAATC,MAAuBA,QACzEqG,EAAYY,EAAQkE,SACpB5E,EAAaU,EAAQmE,SAmFzBlL,GAAM2E,WAKJwG,QAAS,SAETC,OAAO,EAEPhC,SAAUA,EASVjH,OAAQ,SAASkJ,EAAKC,GACpB,GAAIxL,GAAOC,IAEX,IAAID,EAAK2G,EAEP,MADA1G,MAAKwL,EAAU,QAAS,4CACjBzL,CAET,KAAKuL,EAAK,MAAOvL,EAEjB,IAAI0L,GAAgB1L,EAAK+G,CAGrByE,IACFzB,EAAKyB,EAAS,SAASG,EAAK5I,GAEd,SAAR4I,GAA0B,UAARA,GAA2B,SAARA,EACvC3L,EAAK8G,EAAe6E,GAAO5I,EAE3B2I,EAAcC,GAAO5I,IAK3B/C,EAAK4L,OAAOL,GAIZG,EAActE,aAAavD,KAAK,qBAChC6H,EAActE,aAAavD,KAAK,iDAGhC6H,EAActE,aAAegD,EAAWsB,EAActE,cACtDsE,EAAcrE,aAAaqE,EAAcrE,WAAWpG,QAChDmJ,EAAWsB,EAAcrE,YAE7BqE,EAAcpE,gBAAgBoE,EAAcpE,cAAcrG,QACtDmJ,EAAWsB,EAAcpE,eAE7BoE,EAAcnE,aAAe6C,EAAWsB,EAAcnE,cACtDmE,EAAcG,eAAiBC,KAAKC,IAClC,EACAD,KAAKE,IAAIN,EAAcG,gBAAkB,IAAK,KAGhD,IAAII,IACFC,KAAK,EACLzI,SAAS,EACT0I,KAAK,EACLjD,UAAU,EACVkD,QAAQ,GAGNtE,EAAkB4D,EAAc5D,eACM,wBAAnCuE,SAASrL,KAAK8G,GACnBA,EAAkBkC,EAAYiC,EAAwBnE,GAC7CA,KAAoB,IAC7BA,EAAkBmE,GAEpBP,EAAc5D,gBAAkBA,CAEhC,IAAIwE,IACFC,UAAU,GAGRxE,EAAa2D,EAAc3D,UAW/B,OAVqC,uBAA9BsE,SAASrL,KAAK+G,GACnBA,EAAaiC,EAAYsC,EAAoBvE,GACpCA,KAAe,IACxBA,EAAauE,GAEfZ,EAAc3D,WAAaA,EAE3BuB,EAAS7B,sBAAwBiE,EAAcjE,oBAGxCzH,GAWTwM,QAAS,WACP,GAAIxM,GAAOC,IAyBX,OAxBID,GAAKyM,YAAczM,EAAKwI,IAC1Bc,EAASoD,OAAOC,UAAU,WACxB3M,EAAK4M,EAAwBnH,MAAMzF,EAAMqF,aAGvCrF,EAAK+G,EAAeW,4BACtB1H,EAAK6M,IAGP7M,EAAK8M,IAED9M,EAAK+G,EAAegB,YAAc/H,EAAK+G,EAAegB,WAAWwE,UACnEvM,EAAK+M,IAGH/M,EAAK+G,EAAee,iBAAiB9H,EAAKgN,IAG9ChN,EAAKiN,IAELjN,EAAKwI,GAAoB,GAG3B3H,MAAMgH,gBAAkB7H,EAAK+G,EAAec,gBACrC5H,MAQT2L,OAAQ,SAASL,GACf,GAAIvL,GAAOC,KACTiN,EAAMlN,EAAKmN,EAAU5B,GACrB6B,EAAYF,EAAIG,KAAKC,YAAY,KACjCD,EAAOH,EAAIG,KAAKlK,OAAO,EAAGiK,EAE5BpN,GAAKuN,EAAOhC,EACZvL,EAAK4G,EAAasG,EAAIM,KACtBxN,EAAKyN,EAAgBP,EAAIQ,MAAQR,EAAIQ,KAAKvK,OAAO,GACjDnD,EAAK6G,EAAiBqG,EAAIG,KAAKlK,OAAOiK,EAAY,GAElDpN,EAAK2G,EAAgB3G,EAAK2N,EAAiBT,GAE3ClN,EAAK4N,EACH5N,EAAK2G,EAAgB,IAAM0G,EAAO,OAASrN,EAAK6G,EAAiB,UAInE5G,KAAKoJ,KAWPwE,QAAS,SAASrC,EAASsC,EAAM3I,GAO/B,MANIY,GAAWyF,KACbrG,EAAO2I,MACPA,EAAOtC,EACPA,EAAUuC,QAGL9N,KAAKuE,KAAKgH,EAASsC,GAAMrI,MAAMxF,KAAMkF,IAW9CX,KAAM,SAASgH,EAASsC,EAAME,GAqC5B,QAASC,KACP,GAAI9I,MACFvE,EAAIyE,UAAUpE,OACdwD,GAAQ+G,GAAYA,GAAWA,EAAQ/G,QAAS,CAQlD,KANIuJ,GAAWjI,EAAWiI,IACxBA,EAAQvI,MAAMxF,KAAMoF,WAKfzE,KAAKuE,EAAKvE,GAAK6D,EAAOzE,EAAKwE,KAAKgH,EAASnG,UAAUzE,IAAMyE,UAAUzE,EAE1E,KAKE,MAAOkN,GAAKrI,MAAMxF,KAAMkF,GACxB,MAAOhF,GAGP,KAFAH,GAAKkO,IACLlO,EAAKiC,iBAAiB9B,EAAGqL,GACnBrL,GA1DV,GAAIH,GAAOC,IAGX,IAAImG,EAAY0H,KAAU/H,EAAWyF,GACnC,MAAOA,EAWT,IAPIzF,EAAWyF,KACbsC,EAAOtC,EACPA,EAAUuC,SAKPhI,EAAW+H,GACd,MAAOA,EAIT,KACE,GAAIA,EAAKK,EACP,MAAOL,EAIT,IAAIA,EAAKM,EACP,MAAON,GAAKM,EAEd,MAAOjO,GAIP,MAAO2N,GA8BT,IAAK,GAAIO,KAAYP,GACf3D,EAAO2D,EAAMO,KACfJ,EAAQI,GAAYP,EAAKO,GAW7B,OARAJ,GAAQpJ,UAAYiJ,EAAKjJ,UAEzBiJ,EAAKM,EAAoBH,EAGzBA,EAAQE,GAAY,EACpBF,EAAQK,EAAWR,EAEZG,GAQTM,UAAW,WAWT,MAVAjF,GAASoD,OAAO6B,YAEhBtO,KAAKuO,IACLvO,KAAKwO,IACLxO,KAAKyO,IACLzO,KAAK0O,IAEL9N,MAAMgH,gBAAkB5H,KAAKwI,EAC7BxI,KAAKuI,GAAoB,EAElBvI,MAWT2O,EAA0B,SAASC,GACjC5O,KAAKwL,EAAU,QAAS,4CAA6CoD,GACrE5O,KAAKgC,iBAAiB4M,EAAMC,QAC1B5M,OACE6M,2BAA2B,MAUjCC,EAAgC,WAI9B,MAHA/O,MAAKgP,EAA2BhP,KAAKgP,EAAyBC,KAAKjP,MACnEgH,EAAQkI,kBACNlI,EAAQkI,iBAAiB,qBAAsBlP,KAAKgP,GAC/ChP,MAQTmP,EAAgC,WAG9B,MAFAnI,GAAQoI,qBACNpI,EAAQoI,oBAAoB,qBAAsBpP,KAAKgP,GAClDhP,MAUTgC,iBAAkB,SAASF,EAAIyJ,GAG7B,GAFAA,EAAUxB,GAAasF,eAAgB,GAAI9D,EAAUA,MAEjD7B,EAAa5H,IAAOA,EAAGwN,MAEzBxN,EAAKA,EAAGwN,UACH,IAAI/F,EAAQzH,GAEjBA,EAAKA,MACA,CAAA,IAAI2H,EAAc3H,GAYvB,MAAO9B,MAAK+D,eACVjC,EACAiI,EAAYwB,GACVgE,YAAY,EACZF,eAAgB9D,EAAQ8D,eAAiB,IAZ7C9D,GAAUvL,KAAKwP,EAA2CjE,EAASzJ,GACnEA,EAAK,GAAIlB,OAAM2K,EAAQvI,SAiBzBhD,KAAKuG,EAAyBzE,CAO9B,KACE,GAAI2N,GAAQpG,EAASqG,kBAAkB5N,EACvC9B,MAAK2P,EAAiBF,EAAOlE,GAC7B,MAAOqE,GACP,GAAI9N,IAAO8N,EACT,KAAMA,GAIV,MAAO5P,OAGT6P,EAA4C,SAASC,EAAgBhO,GACnE,GAAIiO,GAASC,OAAOC,KAAKnO,GAAIoO,OACzB3E,EAAUxB,EAAY+F,GACxB9M,QACE,2CAA6C4H,EAAwBmF,GACvEI,aAAc7G,EAAIyG,IAClB9N,MAAO6N,EAAe7N,WAIxB,OAFAsJ,GAAQtJ,MAAMmO,EAAiBvF,EAAmB/I,GAE3CyJ,GAUTxH,eAAgB,SAASD,EAAKyH,GAI5B,IACIvL,KAAK8G,EAAeK,aAAakJ,OACnCrQ,KAAK8G,EAAeK,aAAakJ,KAAKvM,GAFxC,CAOAyH,EAAUA,MACVzH,GAAY,EAEZ,IAOIhC,GAPAS,EAAOwH,GAEP/G,QAASc,GAEXyH,EAQF,KACE,KAAM,IAAI3K,OAAMkD,GAChB,MAAO8L,GACP9N,EAAK8N,EAIP9N,EAAG6C,KAAO,IACV,IAAI8K,GAAQpG,EAASqG,kBAAkB5N,GAGnCwO,EAAc1G,EAAQ6F,EAAMA,QAAUA,EAAMA,MAAM,EAKlDa,IAAoC,2BAArBA,EAAYzC,OAC7ByC,EAAcb,EAAMA,MAAM,GAG5B,IAAIc,GAAWD,GAAeA,EAAYE,KAAQ,EAElD,MACIxQ,KAAK8G,EAAeM,WAAWiJ,OACjCrQ,KAAK8G,EAAeM,WAAWiJ,KAAKE,OAMlCvQ,KAAK8G,EAAeO,cAAcgJ,MACnCrQ,KAAK8G,EAAeO,cAAcgJ,KAAKE,IAF1C,CAOA,GAAIvQ,KAAK8G,EAAeyI,YAAehE,GAAWA,EAAQgE,WAAa,CAErEhN,EAAK4N,YAAkC,MAApB5N,EAAK4N,YAAsBrM,EAAMvB,EAAK4N,YAEzD5E,EAAUxB,GAENsF,eAAgB,GAElB9D,GAMFA,EAAQ8D,gBAAkB,CAE1B,IAAIoB,GAASzQ,KAAK0Q,EAAejB,EAAOlE,EACxChJ,GAAKgN,YAEHkB,OAAQA,EAAOE,WAcnB,MATIpO,GAAK4N,cACP5N,EAAK4N,YAAcvG,EAAQrH,EAAK4N,aAC5B5N,EAAK4N,aACJ5N,EAAK4N,cAIZnQ,KAAK4Q,EAAMrO,GAEJvC,QAGT6Q,kBAAmB,SAASC,GAC1B,GAAIC,GAAQhH,GAERiH,UAAWtL,IAAQ,KAErBoL,EAGF,IAAIhL,EAAW9F,KAAK8G,EAAemK,oBAAqB,CACtD,GAAIC,GAASlR,KAAK8G,EAAemK,mBAAmBF,EAEpD,IAAIvH,EAAS0H,KAAYrH,EAAcqH,GACrCH,EAAQG,MACH,IAAIA,KAAW,EACpB,MAAOlR,MAQX,MAJAA,MAAK8I,EAAalF,KAAKmN,GACnB/Q,KAAK8I,EAAa9H,OAAShB,KAAK8G,EAAe8E,gBACjD5L,KAAK8I,EAAaqI,QAEbnR,MAGTmD,UAAW,SAASiO,GAClB,GAAIC,MAAgBlM,MAAMpE,KAAKqE,UAAW,EAO1C,OALApF,MAAK2I,EAAS/E,MAAMwN,EAAQC,IACxBrR,KAAKuI,GACPvI,KAAKgN,IAGAhN,MASTsR,eAAgB,SAAS/D,GAIvB,MAFAvN,MAAK6G,EAAe0G,KAAOA,EAEpBvN,MASTuR,gBAAiB,SAAStP,GAGxB,MAFAjC,MAAKwR,EAAc,QAASvP,GAErBjC,MASTyR,eAAgB,SAASC,GAGvB,MAFA1R,MAAKwR,EAAc,OAAQE,GAEpB1R,MAQT2R,aAAc,WAGZ,MAFA3R,MAAK6G,KAEE7G,MAQT4R,WAAY,WAEV,MAAO5L,MAAK6L,MAAM5L,EAAUjG,KAAK6G,KASnCiL,eAAgB,SAASC,GAGvB,MAFA/R,MAAK8G,EAAeiL,YAAcA,EAE3B/R,MASTgS,WAAY,SAASjL,GAGnB,MAFA/G,MAAK8G,EAAeC,QAAUA,EAEvB/G,MAUTqC,gBAAiB,SAASwB,GACxB,GAAIgC,GAAW7F,KAAK8G,EAAemL,YAEnC,OADAjS,MAAK8G,EAAemL,aAAerM,EAAqBC,EAAUhC,GAC3D7D,MAUTkS,sBAAuB,SAASrO,GAC9B,GAAIgC,GAAW7F,KAAK8G,EAAemK,kBAEnC,OADAjR,MAAK8G,EAAemK,mBAAqBrL,EAAqBC,EAAUhC,GACjE7D,MAUTmS,sBAAuB,SAAStO,GAC9B,GAAIgC,GAAW7F,KAAK8G,EAAesL,kBAEnC,OADApS,MAAK8G,EAAesL,mBAAqBxM,EAAqBC,EAAUhC,GACjE7D,MAYTqS,aAAc,SAASC,GAGrB,MAFAtS,MAAK8G,EAAewL,UAAYA,EAEzBtS,MAQTuS,cAAe,WACb,MAAOvS,MAAKuG,GAQdiM,YAAa,WACX,MAAOxS,MAAKyG,GAQd+F,QAAS,WACP,QAAKxM,KAAK+F,MACL/F,KAAK0G,IACH1G,KAAKyS,0BACRzS,KAAKyS,yBAA0B,EAC/BzS,KAAKwL,EAAU,QAAS,2CAEnB,KAKXkH,UAAW,WAIT,GAAIC,GAAc3L,EAAQ2L,WACtBA,IACF3S,KAAKoC,OAAOuQ,EAAYrH,IAAKqH,EAAYvQ,QAAQmK,WAIrDqG,iBAAkB,SAASrH,GACzB,GACGnF,EADH,CAKAmF,EAAUA,KAEV,IAAIiH,GAAcjH,EAAQsH,SAAW7S,KAAKwS,aAC1C,KAAKA,EACH,KAAM,IAAI9N,GAAiB,kBAG7B,IAAI4G,GAAMC,EAAQD,KAAOtL,KAAKsN,CAC9B,KAAKhC,EACH,KAAM,IAAI5G,GAAiB,cAG7B,IAAIoO,GAASC,mBACTC,EAAK,EACTA,IAAM,YAAcF,EAAON,GAC3BQ,GAAM,QAAUF,EAAOxH,EAEvB,IAAIiC,GAAOhC,EAAQgC,MAAQvN,KAAK6G,EAAe0G,IAC3CA,KACEA,EAAK5I,OAAMqO,GAAM,SAAWF,EAAOvF,EAAK5I,OACxC4I,EAAK0F,QAAOD,GAAM,UAAYF,EAAOvF,EAAK0F,QAGhD,IAAIC,GAAelT,KAAK0N,EAAiB1N,KAAKkN,EAAU5B,IAEpD6H,EAAS/M,EAAUgN,cAAc,SACrCD,GAAOE,OAAQ,EACfF,EAAOG,IAAMJ,EAAe,yBAA2BF,GACtD5M,EAAUmN,MAAQnN,EAAUoN,MAAMC,YAAYN,KAIjDO,EAAoB,WAClB,GAAI3T,GAAOC,IACXA,MAAKsI,GAAkB,EACvBqL,WAAW,WAET5T,EAAKuI,GAAkB,KAI3BsL,EAAe,SAASC,EAAWtI,GAEjC,GAAIuI,GAAKpI,CAET,IAAK1L,KAAKkG,EAAV,CAEAqF,EAAUA,MAEVsI,EAAY,QAAUA,EAAU3Q,OAAO,EAAG,GAAG6Q,cAAgBF,EAAU3Q,OAAO,GAE1EkD,EAAU4N,aACZF,EAAM1N,EAAU4N,YAAY,cAC5BF,EAAIG,UAAUJ,GAAW,GAAM,KAE/BC,EAAM1N,EAAU8N,oBAChBJ,EAAID,UAAYA,EAGlB,KAAKnI,IAAOH,GACNrB,EAAOqB,EAASG,KAClBoI,EAAIpI,GAAOH,EAAQG,GAGvB,IAAItF,EAAU4N,YAEZ5N,EAAU+N,cAAcL,OAIxB,KACE1N,EAAUgO,UAAU,KAAON,EAAID,UAAUQ,cAAeP,GACxD,MAAO5T,OAYboU,GAAyB,SAASC,GAChC,GAAIxU,GAAOC,IACX,OAAO,UAAS8T,GASd,GALA/T,EAAKyU,GAAmB,KAKpBzU,EAAKgJ,IAAuB+K,EAAhC,CAEA/T,EAAKgJ,EAAqB+K,CAM1B,IAAIW,EACJ,KACEA,EAASnK,EAAiBwJ,EAAIW,QAC9B,MAAOvU,GACPuU,EAAS,YAGX1U,EAAK8Q,mBACH6D,SAAU,MAAQH,EAClBvR,QAASyR,OAUfE,GAAuB,WACrB,GAAI5U,GAAOC,KACT4U,EAAmB,GAKrB,OAAO,UAASd,GACd,GAAIW,EACJ,KACEA,EAASX,EAAIW,OACb,MAAOvU,GAGP,OAEF,GAAI2U,GAAUJ,GAAUA,EAAOI,OAK/B,IACGA,IACY,UAAZA,GAAmC,aAAZA,GAA2BJ,EAAOK,mBAF5D,CAQA,GAAIC,GAAUhV,EAAKyU,EACdO,IACHhV,EAAKiV,GAAwB,SAASlB,GAExCmB,aAAaF,GACbhV,EAAKyU,GAAmBb,WAAW,WACjC5T,EAAKyU,GAAmB,MACvBI,MAUPM,GAAmB,SAASC,EAAMC,GAChC,GAAIC,GAAY5K,EAASzK,KAAKgJ,EAAUG,MACpCmM,EAAW7K,EAAS2K,GACpBG,EAAa9K,EAAS0K,EAK1BnV,MAAKkJ,EAAYkM,EAIbC,EAAUG,WAAaF,EAASE,UAAYH,EAAUI,OAASH,EAASG,OAC1EL,EAAKE,EAASI,UACZL,EAAUG,WAAaD,EAAWC,UAAYH,EAAUI,OAASF,EAAWE,OAC9EN,EAAOI,EAAWG,UAEpB1V,KAAK6Q,mBACH6D,SAAU,aACVnS,MACE6S,GAAIA,EACJD,KAAMA,MAKZQ,EAAwB,WACtB,GAAI5V,GAAOC,IACXD,GAAK6V,GAA4BrQ,SAASX,UAAUwH,SAEpD7G,SAASX,UAAUwH,SAAW,WAC5B,MAAoB,kBAATpM,OAAuBA,KAAKkO,EAC9BnO,EAAK6V,GAA0BpQ,MAAMxF,KAAKqO,EAAUjJ,WAEtDrF,EAAK6V,GAA0BpQ,MAAMxF,KAAMoF,aAItDxD,EAA0B,WACpB5B,KAAK4V,KAEPrQ,SAASX,UAAUwH,SAAWpM,KAAK4V,KAQvCC,EAAqB,WAKnB,QAASC,GAAWC,GAClB,MAAO,UAASC,EAAI7V,GAKlB,IAAK,GADD+E,GAAO,GAAI+Q,OAAM7Q,UAAUpE,QACtBL,EAAI,EAAGA,EAAIuE,EAAKlE,SAAUL,EACjCuE,EAAKvE,GAAKyE,UAAUzE,EAEtB,IAAIuV,GAAmBhR,EAAK,EAQ5B,OAPIY,GAAWoQ,KACbhR,EAAK,GAAKnF,EAAKwE,KAAK2R,IAMlBH,EAAKvQ,MACAuQ,EAAKvQ,MAAMxF,KAAMkF,GAEjB6Q,EAAK7Q,EAAK,GAAIA,EAAK,KAOhC,QAASiR,GAAgBrW,GACvB,GAAIsW,GAAQpP,EAAQlH,IAAWkH,EAAQlH,GAAQ8E,SAC3CwR,IAASA,EAAMC,gBAAkBD,EAAMC,eAAe,sBACxD3L,EACE0L,EACA,mBACA,SAASL,GACP,MAAO,UAASxB,EAASyB,EAAIM,EAASC,GAEpC,IACMP,GAAMA,EAAGQ,cACXR,EAAGQ,YAAczW,EAAKwE,KAAKyR,EAAGQ,cAEhC,MAAOC,IAMT,GAAIC,GAAQC,EAAcC,CA6B1B,OA1BE/O,IACAA,EAAgBqE,MACJ,gBAAXpM,GAAuC,SAAXA,KAI7B6W,EAAe5W,EAAKiV,GAAwB,SAC5C4B,EAAkB7W,EAAK8W,KACvBH,EAAS,SAAS5C,GAIhB,GAAKA,EAAL,CAEA,GAAID,EACJ,KACEA,EAAYC,EAAI/Q,KAChB,MAAO7C,GAGP,OAEF,MAAkB,UAAd2T,EAA8B8C,EAAa7C,GACxB,aAAdD,EAAiC+C,EAAgB9C,GAArD,UAGFiC,EAAKhV,KACVf,KACAuU,EACAxU,EAAKwE,KAAKyR,EAAIlI,OAAW4I,GACzBJ,EACAC,KAINO,GAEFpM,EACE0L,EACA,sBACA,SAASL,GACP,MAAO,UAASjC,EAAKkC,EAAIM,EAASC,GAChC,IACEP,EAAKA,IAAOA,EAAG7H,EAAoB6H,EAAG7H,EAAoB6H,GAC1D,MAAO9V,IAGT,MAAO6V,GAAKhV,KAAKf,KAAM8T,EAAKkC,EAAIM,EAASC,KAG7CO,IAvGN,GAAI/W,GAAOC,KAEP8W,EAAkB/W,EAAK8I,EA2BvBhB,EAAkB7H,KAAK8G,EAAee,eA+E1C6C,GAAK1D,EAAS,aAAc8O,EAAYgB,GACxCpM,EAAK1D,EAAS,cAAe8O,EAAYgB,GACrC9P,EAAQ+P,uBACVrM,EACE1D,EACA,wBACA,SAAS+O,GACP,MAAO,UAASiB,GACd,MAAOjB,GAAKhW,EAAKwE,KAAKyS,MAG1BF,EAqCJ,KAAK,GA/BDG,IACF,cACA,SACA,OACA,mBACA,iBACA,oBACA,kBACA,cACA,aACA,qBACA,cACA,aACA,iBACA,eACA,kBACA,cACA,cACA,eACA,qBACA,SACA,YACA,eACA,gBACA,YACA,kBACA,SACA,iBACA,4BACA,wBAEOtW,EAAI,EAAGA,EAAIsW,EAAajW,OAAQL,IACvCwV,EAAgBc,EAAatW,KAajCuW,EAAwB,WAMtB,QAASC,GAASC,EAAMnL,GAClBmL,IAAQnL,IAAOnG,EAAWmG,EAAImL,KAChC1M,EAAKuB,EAAKmL,EAAM,SAASrB,GACvB,MAAOhW,GAAKwE,KAAKwR,KARvB,GAAIhW,GAAOC,KACP6H,EAAkB7H,KAAK8G,EAAee,gBAEtCiP,EAAkB/W,EAAK8I,CAU3B,IAAIhB,EAAgBoE,KAAO,kBAAoBjF,GAAS,CACtD,GAAIqQ,GAAWrQ,EAAQsQ,gBAAkBtQ,EAAQsQ,eAAe1S,SAChE8F,GACE2M,EACA,OACA,SAASE,GACP,MAAO,UAASrP,EAAQsI,GAYtB,MARI7G,GAAS6G,IAAQA,EAAIgH,QAAQzX,EAAK4G,UACpC3G,KAAKyX,IACHvP,OAAQA,EACRsI,IAAKA,EACLkH,YAAa,OAIVH,EAAS/R,MAAMxF,KAAMoF,aAGhC0R,GAGFpM,EACE2M,EACA,OACA,SAASM,GACP,MAAO,YAIL,QAASC,KACP,GAAI3L,EAAIwL,IAAkC,IAAnBxL,EAAI4L,WAAkB,CAC3C,IAGE5L,EAAIwL,GAAYC,YAAczL,EAAI6L,OAClC,MAAO5X,IAITH,EAAK8Q,mBACH9N,KAAM,OACN2R,SAAU,MACVnS,KAAM0J,EAAIwL,MAMhB,IAAK,GArBDxL,GAAMjM,KAoBN+X,GAAS,SAAU,UAAW,cACzBC,EAAI,EAAGA,EAAID,EAAM/W,OAAQgX,IAChCb,EAASY,EAAMC,GAAI/L,EAiBrB,OAdI,sBAAwBA,IAAOnG,EAAWmG,EAAIgM,oBAChDvN,EACEuB,EACA,qBACA,SAAS8J,GACP,MAAOhW,GAAKwE,KAAKwR,EAAMjI,OAAW8J,KAMtC3L,EAAIgM,mBAAqBL,EAGpBD,EAASnS,MAAMxF,KAAMoF,aAGhC0R,GAIAjP,EAAgBoE,KAAOtB,KACzBD,EACE1D,EACA,QACA,SAASkR,GACP,MAAO,YAKL,IAAK,GADDhT,GAAO,GAAI+Q,OAAM7Q,UAAUpE,QACtBL,EAAI,EAAGA,EAAIuE,EAAKlE,SAAUL,EACjCuE,EAAKvE,GAAKyE,UAAUzE,EAGtB,IAEI6P,GAFA2H,EAAajT,EAAK,GAClBgD,EAAS,KAeb,IAZ0B,gBAAfiQ,GACT3H,EAAM2H,EACG,WAAanR,IAAWmR,YAAsBnR,GAAQoR,SAC/D5H,EAAM2H,EAAW3H,IACb2H,EAAWjQ,SACbA,EAASiQ,EAAWjQ,SAGtBsI,EAAM,GAAK2H,EAIT3H,EAAIgH,QAAQzX,EAAK4G,QACnB,MAAOuR,GAAU1S,MAAMxF,KAAMkF,EAG3BA,GAAK,IAAMA,EAAK,GAAGgD,SACrBA,EAAShD,EAAK,GAAGgD,OAGnB,IAAImQ,IACFnQ,OAAQA,EACRsI,IAAKA,EACLkH,YAAa,KAGf,OAAOQ,GACJ1S,MAAMxF,KAAMkF,GACZoT,KAAK,SAASC,GASb,MARAF,GAAUX,YAAca,EAAST,OAEjC/X,EAAK8Q,mBACH9N,KAAM,OACN2R,SAAU,QACVnS,KAAM8V,IAGDE,IAER,SAAS,SAAS9B,GASjB,KAPA1W,GAAK8Q,mBACH9N,KAAM,OACN2R,SAAU,QACVnS,KAAM8V,EACNrU,MAAO,UAGHyS,MAIdK,GAMAjP,EAAgBqE,KAAOlM,KAAKkG,IAC1BE,EAAU8I,kBACZ9I,EAAU8I,iBAAiB,QAASnP,EAAKiV,GAAwB,UAAU,GAC3E5O,EAAU8I,iBAAiB,WAAYnP,EAAK8W,MAAyB,IAC5DzQ,EAAUoS,cAEnBpS,EAAUoS,YAAY,UAAWzY,EAAKiV,GAAwB,UAC9D5O,EAAUoS,YAAY,aAAczY,EAAK8W,OAQ7C,IAAI4B,GAASzR,EAAQyR,OACjBC,EAAsBD,GAAUA,EAAOE,KAAOF,EAAOE,IAAIC,QACzDC,GACDH,GACD1R,EAAQ8R,SACRA,QAAQC,WACRD,QAAQE,YACV,IAAInR,EAAgBoB,UAAY4P,EAAwB,CAEtD,GAAII,GAAgBjS,EAAQkS,UAC5BlS,GAAQkS,WAAa,WACnB,GAAIC,GAAcpZ,EAAKiJ,EAAUG,IAGjC,IAFApJ,EAAKqZ,GAAkBrZ,EAAKmJ,EAAWiQ,GAEnCF,EACF,MAAOA,GAAczT,MAAMxF,KAAMoF,WAIrC,IAAIiU,GAA6B,SAASC,GAGxC,MAAO,YACL,GAAI9I,GAAMpL,UAAUpE,OAAS,EAAIoE,UAAU,GAAK0I,MAQhD,OALI0C,IAEFzQ,EAAKqZ,GAAkBrZ,EAAKmJ,EAAWsH,EAAM,IAGxC8I,EAAiB9T,MAAMxF,KAAMoF,YAIxCsF,GAAKoO,QAAS,YAAaO,EAA4BvC,GACvDpM,EAAKoO,QAAS,eAAgBO,EAA4BvC,GAG5D,GAAIjP,EAAgBrE,SAAW,WAAawD,IAAWxD,QAAQ+V,IAAK,CAElE,GAAIC,GAAwB,SAAS1V,EAAKvB,GACxCxC,EAAK8Q,mBACH7N,QAASc,EACTE,MAAOzB,EAAKyB,MACZ0Q,SAAU,YAId5K,IAAM,QAAS,OAAQ,OAAQ,QAAS,OAAQ,SAAS8J,EAAG5P,GAC1DE,EAAkBV,QAASQ,EAAOwV,OAKxCC,EAAkB,WAGhB,IADA,GAAIC,GACG1Z,KAAK6I,EAAiB7H,QAAQ,CACnC0Y,EAAU1Z,KAAK6I,EAAiBsI,OAEhC,IAAIL,GAAM4I,EAAQ,GAChB/U,EAAO+U,EAAQ,GACf3D,EAAO2D,EAAQ,EAEjB5I,GAAInM,GAAQoR,IAIhB4D,EAAiB,WAEf,IAAK,GAAIzR,KAAUlI,MAAK0I,EACtB1I,KAAKyI,EAAiBP,GAAUlI,KAAK0I,EAAwBR,IAIjE0R,EAAe,WACb,GAAI7Z,GAAOC,IAGX8J,GAAK9J,KAAK2I,EAAU,SAASiL,EAAGxC,GAC9B,GAAIyI,GAAYzI,EAAO,GACnBlM,EAAOkM,EAAO,EAClByI,GAAUrU,MAAMzF,GAAOA,GAAM+Z,OAAO5U,OAIxC6U,EAAW,SAASC,GAClB,GAAIC,GAAIhP,EAAWpI,KAAKmX,GACtB1O,KACA3K,EAAI,CAEN,KACE,KAAOA,KAAK2K,EAAIP,EAAQpK,IAAMsZ,EAAEtZ,IAAM,GACtC,MAAOT,GACP,KAAM,IAAIwE,GAAiB,gBAAkBsV,GAG/C,GAAI1O,EAAImC,OAASzN,KAAK8G,EAAeoT,eACnC,KAAM,IAAIxV,GACR,iFAIJ,OAAO4G,IAGT6O,EAAkB,SAASlN,GAEzB,GAAIiG,GAAe,KAAOjG,EAAIwI,MAAQxI,EAAImN,KAAO,IAAMnN,EAAImN,KAAO,GAKlE,OAHInN,GAAIuI,WACNtC,EAAejG,EAAIuI,SAAW,IAAMtC,GAE/BA,GAGTmH,EAAyB,WAElBra,KAAKsI,GACRtI,KAAK2P,EAAiBnK,MAAMxF,KAAMoF,YAItCkV,EAAkB,SAASC,EAAWhP,GACpC,GAAIkF,GAASzQ,KAAK0Q,EAAe6J,EAAWhP,EAE5CvL,MAAKwa,EAAc,UACjBD,UAAWA,EACXhP,QAASA,IAGXvL,KAAKya,GACHF,EAAU5V,KACV4V,EAAUvX,QACVuX,EAAU/J,IACV+J,EAAUG,OACVjK,EACAlF,IAIJoP,EAAgB,SAASJ,EAAWhP,GAClC,GAAIxL,GAAOC,KACPyQ,IACJ,IAAI8J,EAAU9K,OAAS8K,EAAU9K,MAAMzO,SACrC8I,EAAKyQ,EAAU9K,MAAO,SAAS9O,EAAG8O,GAChC,GAAImL,GAAQ7a,EAAK8a,GAAgBpL,EAAO8K,EAAU/J,IAC9CoK,IACFnK,EAAO7M,KAAKgX,KAKZrP,GAAWA,EAAQ8D,gBACrB,IAAK,GAAI2I,GAAI,EAAGA,EAAIzM,EAAQ8D,gBAAkB2I,EAAIvH,EAAOzP,OAAQgX,IAC/DvH,EAAOuH,GAAG8C,QAAS,CAKzB,OADArK,GAASA,EAAOtL,MAAM,EAAGnF,KAAK8G,EAAec,kBAI/CmT,GAAiB,SAASH,EAAOI,GAE/B,GAAIC,IACFC,SAAUN,EAAMpK,IAChBkK,OAAQE,EAAMO,KACdC,MAAOR,EAAMS,OACbC,WAAUV,EAAM/M,MAAQ,IAuB1B,OAfK+M,GAAMpK,MACTyK,EAAWC,SAAWF,GAGxBC,EAAWH,SAGN9a,KAAK8G,EAAeQ,aAAa+I,OACjCrQ,KAAK8G,EAAeQ,aAAa+I,KAAK4K,EAAWC,WAEpD,qBAAqB7K,KAAK4K,EAAW,cAErC,qBAAqB5K,KAAK4K,EAAWC,WAGhCD,GAGTM,GAAmB,SAASxY,EAAMC,EAASuN,EAASmK,EAAQjK,EAAQlF,GAClE,GAAIiQ,IAAmBzY,EAAOA,EAAO,KAAO,KAAOC,GAAW,GAC9D,KACIhD,KAAK8G,EAAeK,aAAakJ,OAClCrQ,KAAK8G,EAAeK,aAAakJ,KAAKrN,KACrChD,KAAK8G,EAAeK,aAAakJ,KAAKmL,GAH1C,CAQA,GAAIjM,EAoBJ,IAlBIkB,GAAUA,EAAOzP,QACnBuP,EAAUE,EAAO,GAAGyK,UAAY3K,EAGhCE,EAAOE,UACPpB,GAAckB,OAAQA,IACbF,IACThB,GACEkB,SAEIyK,SAAU3K,EACVmK,OAAQA,EACRI,QAAQ,QAOZ9a,KAAK8G,EAAeM,WAAWiJ,OACjCrQ,KAAK8G,EAAeM,WAAWiJ,KAAKE,OAMlCvQ,KAAK8G,EAAeO,cAAcgJ,MACnCrQ,KAAK8G,EAAeO,cAAcgJ,KAAKE,IAF1C,CAOA,GAAIhO,GAAOwH,GAGPrH,WACEC,SAEII,KAAMA,EACND,MAAOE,EACPuM,WAAYA,KAIlBkM,QAASlL,GAEXhF,EAIFvL,MAAK4Q,EAAMrO,MAGbmZ,GAAa,SAASnZ,GAGpB,GAAIuJ,GAAM9L,KAAK8G,EAAeY,gBAI9B,IAHInF,EAAKS,UACPT,EAAKS,QAAUgH,EAASzH,EAAKS,QAAS8I,IAEpCvJ,EAAKG,UAAW,CAClB,GAAIA,GAAYH,EAAKG,UAAUC,OAAO,EACtCD,GAAUI,MAAQkH,EAAStH,EAAUI,MAAOgJ,GAG9C,GAAI6P,GAAUpZ,EAAKoZ,OAanB,OAZIA,KACEA,EAAQnL,MACVmL,EAAQnL,IAAMxG,EAAS2R,EAAQnL,IAAKxQ,KAAK8G,EAAea,eAEtDgU,EAAQC,UACVD,EAAQC,QAAU5R,EAAS2R,EAAQC,QAAS5b,KAAK8G,EAAea,gBAIhEpF,EAAKsZ,aAAetZ,EAAKsZ,YAAYlZ,QACvC3C,KAAK8b,GAAiBvZ,EAAKsZ,aAEtBtZ,GAMTwZ,GAAkB,SAASF,GAQzB,IAAK,GAJHG,GACAjL,EACAxO,EAHE0Z,GAAY,KAAM,OAAQ,OAKrBtb,EAAI,EAAGA,EAAIkb,EAAYlZ,OAAO3B,SAAUL,EAE/C,GADAoQ,EAAQ8K,EAAYlZ,OAAOhC,GAExBoQ,EAAMsF,eAAe,SACrB7M,EAASuH,EAAMxO,QAChB0H,EAAa8G,EAAMxO,MAHrB,CAOAA,EAAOwH,KAAgBgH,EAAMxO,KAC7B,KAAK,GAAIyV,GAAI,EAAGA,EAAIiE,EAASjb,SAAUgX,EACrCgE,EAAUC,EAASjE,GACfzV,EAAK8T,eAAe2F,IAAYzZ,EAAKyZ,KACvCzZ,EAAKyZ,GAAWhS,EAASzH,EAAKyZ,GAAUhc,KAAK8G,EAAea,cAGhEkU,GAAYlZ,OAAOhC,GAAG4B,KAAOA,IAIjC2Z,GAAc,WACZ,GAAKlc,KAAKqG,GAAkBrG,KAAKkG,EAAjC,CACA,GAAIiW,KAkBJ,OAhBInc,MAAKqG,GAAiBC,EAAW8V,YACnCD,EAAS5U,SACP8U,aAAclR,UAAUiR,YAKxBpV,EAAQiC,UAAYjC,EAAQiC,SAASE,OACvCgT,EAAS3L,IAAMxJ,EAAQiC,SAASE,MAG9BnJ,KAAKkG,GAAgBE,EAAUkW,WAC5BH,EAAS5U,UAAS4U,EAAS5U,YAChC4U,EAAS5U,QAAQqU,QAAUxV,EAAUkW,UAGhCH,IAGTI,EAAe,WACbvc,KAAKwc,GAAmB,EACxBxc,KAAKyc,GAAgB,MAGvBC,GAAgB,WACd,MAAO1c,MAAKwc,IAAoB9W,IAAQ1F,KAAKyc,GAAgBzc,KAAKwc,IAYpEG,GAAe,SAASC,GACtB,GAAIC,GAAO7c,KAAKwG,CAEhB,UACGqW,GACDD,EAAQ5Z,UAAY6Z,EAAK7Z,SACzB4Z,EAAQnB,UAAYoB,EAAKpB,WAKvBmB,EAAQrN,YAAcsN,EAAKtN,WACtB/E,EAAiBoS,EAAQrN,WAAYsN,EAAKtN,aACxCqN,EAAQla,YAAama,EAAKna,WAE5B6H,EAAgBqS,EAAQla,UAAWma,EAAKna,aAMnDoa,GAAkB,SAASnB,GAEzB,IAAI3b,KAAK+c,KAAT,CAIA,GAAIjF,GAAS6D,EAAQ7D,MAKrB,IAAiB,MAAXA,GAA6B,MAAXA,GAA6B,MAAXA,EAA1C,CAEA,GAAIkF,EACJ,KAIIA,EADErS,IACMgR,EAAQpU,QAAQ0V,IAAI,eAEpBtB,EAAQuB,kBAAkB,eAIpCF,EAA8B,IAAtBG,SAASH,EAAO,IACxB,MAAO9c,IAITF,KAAKwc,GAAmBQ,EAEpBA,EAEwB,EAAxBhd,KAAKwc,IAAwB,IAEjCxc,KAAKyc,GAAgB/W,OAGvB0X,EAAO,SAAS7a,GACd,GAAIkJ,GAAgBzL,KAAK8G,EAErBuW,GACAC,QAAStd,KAAK4G,EACdtB,OAAQmG,EAAcnG,OACtBiY,SAAU,cAEZpB,EAAWnc,KAAKwd,IAsDlB,IApDIrB,IACFkB,EAAS1B,QAAUQ,GAIjB5Z,EAAK8M,sBAAuB9M,GAAK8M,eAErC9M,EAAOwH,EAAYsT,EAAU9a,GAG7BA,EAAKmP,KAAO3H,EAAYA,KAAgB/J,KAAK6G,EAAe6K,MAAOnP,EAAKmP,MACxEnP,EAAKN,MAAQ8H,EAAYA,KAAgB/J,KAAK6G,EAAe5E,OAAQM,EAAKN,OAG1EM,EAAKN,MAAM,oBAAsByD,IAAQ1F,KAAK4I,EAE1C5I,KAAK8I,GAAgB9I,KAAK8I,EAAa9H,OAAS,IAGlDuB,EAAKsZ,aACHlZ,UAAWwC,MAAMpE,KAAKf,KAAK8I,EAAc,KAIzC9I,KAAK6G,EAAe0G,OAEtBhL,EAAKgL,KAAOvN,KAAK6G,EAAe0G,MAI9B9B,EAAcsG,cAAaxP,EAAKwP,YAActG,EAAcsG,aAG5DtG,EAAc1E,UAASxE,EAAKwE,QAAU0E,EAAc1E,SAGpD0E,EAAcgS,aAAYlb,EAAKmb,YAAcjS,EAAcgS,YAE/Dlb,EAAOvC,KAAK2d,GAAcpb,GAG1ByN,OAAOC,KAAK1N,GAAMqb,QAAQ,SAASlS,IAChB,MAAbnJ,EAAKmJ,IAA8B,KAAdnJ,EAAKmJ,IAAe7B,EAActH,EAAKmJ,YACvDnJ,GAAKmJ,KAIZ5F,EAAW2F,EAAcwG,gBAC3B1P,EAAOkJ,EAAcwG,aAAa1P,IAASA,GAIxCA,IAAQsH,EAActH,MAMzBuD,EAAW2F,EAAc2G,qBACxB3G,EAAc2G,mBAAmB7P,IAOpC,MAAIvC,MAAK+c,SACP/c,MAAKwL,EAAU,OAAQ,uCAAwCjJ,QAIzB,gBAA7BkJ,GAAc1D,WACnB8D,KAAKgS,SAAWpS,EAAc1D,YAChC/H,KAAK8d,GAAsBvb,GAG7BvC,KAAK8d,GAAsBvb,KAI/Bwb,GAAe,SAASxb,GACtB,MAAOuI,GAASvI,EAAMvC,KAAK8G,EAAekB,eAG5CgW,GAAU,WACR,MAAO3T,MAGT4T,GAAuB,SAAS1b,EAAMsB,GACpC,GAAI9D,GAAOC,KACPyL,EAAgBzL,KAAK8G,CAEzB,IAAK9G,KAAKwM,UAAV,CAQA,GALAjK,EAAOvC,KAAKke,GAAY3b,IAKnBvC,KAAK8G,EAAeqX,iBAAmBne,KAAKoe,GAAc7b,GAE7D,WADAvC,MAAKwL,EAAU,OAAQ,+BAAgCjJ,EAOzDvC,MAAKyG,EAAelE,EAAK8b,WAAa9b,EAAK8b,SAAWre,KAAKse,MAG3Dte,KAAKwG,EAAYjE,EAEjBvC,KAAKwL,EAAU,QAAS,uBAAwBjJ,EAEhD,IAAIgc,IACFC,eAAgB,IAChBC,cAAe,YAAcze,KAAKoL,QAClCsT,WAAY1e,KAAK2G,EAGf3G,MAAKwN,IACP+Q,EAAKI,cAAgB3e,KAAKwN,EAG5B,IAAI9K,GAAYH,EAAKG,WAAaH,EAAKG,UAAUC,OAAO,EAItD3C,MAAK8G,EAAee,iBACpB7H,KAAK8G,EAAee,gBAAgBsE,QAEpCnM,KAAK6Q,mBACH6D,SAAU,SACV1R,QAASN,GACJA,EAAUK,KAAOL,EAAUK,KAAO,KAAO,IAAML,EAAUI,MAC1DP,EAAKS,QACTqb,SAAU9b,EAAK8b,SACfra,MAAOzB,EAAKyB,OAAS,SAIzB,IAAIwM,GAAMxQ,KAAK2N,GACdlC,EAAc6G,WAAatS,KAAK4e,IAAc7d,KAAKf,MAClDwQ,IAAKA,EACL+N,KAAMA,EACNhc,KAAMA,EACNgJ,QAASE,EACToT,UAAW,WACT9e,EAAKqJ,IAELrJ,EAAKya,EAAc,WACjBjY,KAAMA,EACN+Q,IAAK9C,IAEP3M,GAAYA,KAEdib,QAAS,SAAiBxP,GACxBvP,EAAKyL,EAAU,QAAS,mCAAoC8D,GAExDA,EAAMqM,SACR5b,EAAKgf,GAAiBzP,EAAMqM,SAG9B5b,EAAKya,EAAc,WACjBjY,KAAMA,EACN+Q,IAAK9C,IAEPlB,EAAQA,GAAS,GAAI1O,OAAM,sDAC3BiD,GAAYA,EAASyL,QAK3B0P,GAAc,SAASC,GAErB,GAAIzO,GAAMyO,EAAKzO,IAAM,IAAMpG,EAAU6U,EAAKV,MAEtCW,EAAmB,KACnBC,IAUJ,IARIF,EAAK1T,QAAQhE,UACf2X,EAAmBlf,KAAKof,GAAcH,EAAK1T,QAAQhE,UAGjD0X,EAAK1T,QAAQ8T,kBACfF,EAA2Bnf,KAAKof,GAAcH,EAAK1T,QAAQ8T,kBAGzD1U,IAAiB,CACnBwU,EAAyB3L,KAAOvN,EAAUgZ,EAAK1c,KAE/C,IAAI+c,GAAsBvV,KAAgB/J,KAAKiI,GAC3CsX,EAAexV,EAAYuV,EAAqBH,EAMpD,OAJID,KACFK,EAAahY,QAAU2X,GAGlBlY,EACJwY,MAAMhP,EAAK+O,GACXjH,KAAK,SAASC,GACb,GAAIA,EAASkH,GACXR,EAAKJ,WAAaI,EAAKJ,gBAClB,CACL,GAAIvP,GAAQ,GAAI1O,OAAM,sBAAwB2X,EAAST,OAGvDxI,GAAMqM,QAAUpD,EAChB0G,EAAKH,SAAWG,EAAKH,QAAQxP,MAGhC,SAAS,WACR2P,EAAKH,SACHG,EAAKH,QAAQ,GAAIle,OAAM,6CAI/B,GAAI+a,GAAU3U,EAAQsQ,gBAAkB,GAAItQ,GAAQsQ,cACpD,IAAKqE,EAAL,CAGA,GAAI+D,GAAU,mBAAqB/D,IAAqC,mBAAnBgE,eAEhDD,KAED,mBAAqB/D,GACvBA,EAAQ1D,mBAAqB,WAC3B,GAA2B,IAAvB0D,EAAQ9D,WAEL,GAAuB,MAAnB8D,EAAQ7D,OACjBmH,EAAKJ,WAAaI,EAAKJ,gBAClB,IAAII,EAAKH,QAAS,CACvB,GAAIrI,GAAM,GAAI7V,OAAM,sBAAwB+a,EAAQ7D,OACpDrB,GAAIkF,QAAUA,EACdsD,EAAKH,QAAQrI,MAIjBkF,EAAU,GAAIgE,gBAGdnP,EAAMA,EAAIoP,QAAQ,WAAY,IAG1BX,EAAKJ,YACPlD,EAAQkE,OAASZ,EAAKJ,WAEpBI,EAAKH,UACPnD,EAAQmE,QAAU,WAChB,GAAIrJ,GAAM,GAAI7V,OAAM,oCACpB6V,GAAIkF,QAAUA,EACdsD,EAAKH,QAAQrI,MAKnBkF,EAAQoE,KAAK,OAAQvP,GAEjB0O,GACFpV,EAAKoV,EAAkB,SAASxT,EAAK5I,GACnC6Y,EAAQqE,iBAAiBtU,EAAK5I,KAIlC6Y,EAAQsE,KAAKha,EAAUgZ,EAAK1c,UAG9B2d,GAAe,SAASC,GACtB,GAAIC,KAEJ,KAAK,GAAI1U,KAAOyU,GACd,GAAIA,EAAK9J,eAAe3K,GAAM,CAC5B,GAAI5I,GAAQqd,EAAKzU,EACjB0U,GAAU1U,GAAwB,kBAAV5I,GAAuBA,IAAUA,EAI7D,MAAOsd,IAGTC,EAAW,SAASrc,GAGhBhE,KAAK0I,EAAwB1E,KAC5BhE,KAAKqL,OAASrL,KAAK8G,EAAeuE,QAGnC9F,SAASX,UAAUY,MAAMzE,KACvBf,KAAK0I,EAAwB1E,GAC7BhE,KAAKyI,KACFtD,MAAMpE,KAAKqE,UAAW,KAK/Bkb,EAAe,SAAS5U,EAAKkC,GACvBzH,EAAYyH,SACP5N,MAAK6G,EAAe6E,GAE3B1L,KAAK6G,EAAe6E,GAAO3B,EAAY/J,KAAK6G,EAAe6E,OAAYkC,KAM7E3N,EAAM2E,UAAU2b,QAAUtgB,EAAM2E,UAAU0M,eAC1CrR,EAAM2E,UAAU4b,kBAAoBvgB,EAAM2E,UAAUoN,WAEpDvS,EAAOD,QAAUS,IAEdc,KAAKf,KAAuB,mBAAXF,QAAyBA,OAAyB,mBAATC,MAAuBA,KAAyB,mBAAXF,QAAyBA,aACxH4gB,GAAK,GAAGC,GAAK,GAAGjc,EAAI,EAAEL,EAAI,EAAEf,EAAI,EAAEsd,EAAI,IAAIvd,GAAG,SAASlC,EAAQzB,EAAOD,IACxE,SAAWM,GAOX,GAAI8gB,GAAmB1f,EAAQ,GAG3B8F,EACgB,mBAAXnH,QACHA,OACkB,mBAAXC,GAAyBA,EAAyB,mBAATC,MAAuBA,QACzE8gB,EAAS7Z,EAAQ/G,MAEjBA,EAAQ,GAAI2gB,EAQhB3gB,GAAM6gB,WAAa,WAEjB,MADA9Z,GAAQ/G,MAAQ4gB,EACT5gB,GAGTA,EAAMyS,YAENjT,EAAOD,QAAUS,EAoCjBR,EAAOD,QAAQuhB,OAASH,IAErB7f,KAAKf,KAAuB,mBAAXF,QAAyBA,OAAyB,mBAATC,MAAuBA,KAAyB,mBAAXF,QAAyBA,aACxH4F,EAAI,IAAIpC,GAAG,SAASnC,EAAQzB,EAAOD,IACtC,SAAWM,GAQX,QAAS0J,GAASwX,GAChB,MAAuB,gBAATA,IAA8B,OAATA,EAKrC,QAASzX,GAAQzG,GACf,UAAWsJ,SAASrL,KAAK+B,IACvB,IAAK,iBACH,OAAO,CACT,KAAK,qBACH,OAAO,CACT,KAAK,wBACH,OAAO,CACT,SACE,MAAOA,aAAiBlC,QAI9B,QAAS8I,GAAa5G,GACpB,MAAOme,MAAoD,2BAAzB7U,SAASrL,KAAK+B,GAGlD,QAASqD,GAAY6a,GACnB,MAAgB,UAATA,EAGT,QAASlb,GAAWkb,GAClB,MAAuB,kBAATA,GAGhB,QAASvX,GAAcuX,GACrB,MAAgD,oBAAzChR,OAAOpL,UAAUwH,SAASrL,KAAKigB,GAGxC,QAASrX,GAASqX,GAChB,MAAgD,oBAAzChR,OAAOpL,UAAUwH,SAASrL,KAAKigB,GAGxC,QAASpX,GAAQoX,GACf,MAAgD,mBAAzChR,OAAOpL,UAAUwH,SAASrL,KAAKigB,GAGxC,QAASnX,GAAcmX,GACrB,IAAKvX,EAAcuX,GAAO,OAAO,CAEjC,KAAK,GAAIpN,KAAKoN,GACZ,GAAIA,EAAK3K,eAAezC,GACtB,OAAO,CAGX,QAAO,EAGT,QAASqN,KACP,IAEE,MADA,IAAIC,YAAW,KACR,EACP,MAAOhhB,GACP,OAAO,GAIX,QAASyK,KACP,KAAM,SAAW3D,IAAU,OAAO,CAElC,KAIE,MAHA,IAAIma,SACJ,GAAI/I,SAAQ,IACZ,GAAIgJ,WACG,EACP,MAAOlhB,GACP,OAAO,GAQX,QAASmI,KACP,IAAKsC,IAAiB,OAAO,CAE7B,KAKE,MAHA,IAAIyN,SAAQ,cACVhQ,eAAgB,YAEX,EACP,MAAOlI,GACP,OAAO,GAIX,QAASmhB,KACP,MAAwC,kBAA1BC,uBAGhB,QAAShf,GAAgBuB,GACvB,QAASoO,GAAa1P,EAAMsD,GAC1B,GAAI0b,GAAiB1d,EAAStB,IAASA,CACvC,OAAIsD,GACKA,EAAS0b,IAAmBA,EAE9BA,EAGT,MAAOtP,GAGT,QAASnI,GAAKgH,EAAKjN,GACjB,GAAIlD,GAAGqX,CAEP,IAAI7R,EAAY2K,EAAI9P,QAClB,IAAKL,IAAKmQ,GACJ5G,EAAO4G,EAAKnQ,IACdkD,EAAS9C,KAAK,KAAMJ,EAAGmQ,EAAInQ,QAK/B,IADAqX,EAAIlH,EAAI9P,OAEN,IAAKL,EAAI,EAAGA,EAAIqX,EAAGrX,IACjBkD,EAAS9C,KAAK,KAAMJ,EAAGmQ,EAAInQ,IAMnC,QAASoJ,GAAYyX,EAAMC,GACzB,MAAKA,IAGL3X,EAAK2X,EAAM,SAAS/V,EAAK5I,GACvB0e,EAAK9V,GAAO5I,IAEP0e,GALEA,EAgBX,QAASvX,GAAa6G,GACpB,QAAKd,OAAO0R,UAGL1R,OAAO0R,SAAS5Q,GAGzB,QAAS9G,GAASgQ,EAAKlO,GACrB,GAAmB,gBAARA,GACT,KAAM,IAAIlL,OAAM,yDAElB,OAAmB,gBAARoZ,IAA4B,IAARlO,EACtBkO,EAEFA,EAAIhZ,QAAU8K,EAAMkO,EAAMA,EAAI9W,OAAO,EAAG4I,GAAO,IAUxD,QAAS5B,GAAOyX,EAAQjW,GACtB,MAAOsE,QAAOpL,UAAUyR,eAAetV,KAAK4gB,EAAQjW,GAGtD,QAASvB,GAAWyX,GAQlB,IALA,GAGEC,GAHEC,KACFnhB,EAAI,EACJohB,EAAMH,EAAS5gB,OAGVL,EAAIohB,EAAKphB,IACdkhB,EAAUD,EAASjhB,GACfgJ,EAASkY,GAGXC,EAAQle,KAAKie,EAAQjC,QAAQ,8BAA+B,SACnDiC,GAAWA,EAAQG,QAE5BF,EAAQle,KAAKie,EAAQG,OAIzB,OAAO,IAAIC,QAAOH,EAAQI,KAAK,KAAM,KAGvC,QAAS9X,GAAU7J,GACjB,GAAI4hB,KAIJ,OAHArY,GAAKvJ,EAAG,SAASmL,EAAK5I,GACpBqf,EAAMve,KAAKmP,mBAAmBrH,GAAO,IAAMqH,mBAAmBjQ,MAEzDqf,EAAMD,KAAK,KAMpB,QAASzX,GAAS+F,GAChB,GAAmB,gBAARA,GAAkB,QAC7B,IAAI4R,GAAQ5R,EAAI4R,MAAM,kEAGlBC,EAAQD,EAAM,IAAM,GACpBE,EAAWF,EAAM,IAAM,EAC3B,QACE5M,SAAU4M,EAAM,GAChB3M,KAAM2M,EAAM,GACZhV,KAAMgV,EAAM,GACZ1M,SAAU0M,EAAM,GAAKC,EAAQC,GAGjC,QAASjY,KACP,GAAIkY,GAASvb,EAAQub,QAAUvb,EAAQwb,QAEvC,KAAKrc,EAAYoc,IAAWA,EAAOE,gBAAiB,CAGlD,GAAIC,GAAM,GAAIC,aAAY,EAC1BJ,GAAOE,gBAAgBC,GAGvBA,EAAI,GAAe,KAATA,EAAI,GAAc,MAE5BA,EAAI,GAAe,MAATA,EAAI,GAAe,KAE7B,IAAIE,GAAM,SAASC,GAEjB,IADA,GAAIC,GAAID,EAAIzW,SAAS,IACd0W,EAAE9hB,OAAS,GAChB8hB,EAAI,IAAMA,CAEZ,OAAOA,GAGT,OACEF,GAAIF,EAAI,IACRE,EAAIF,EAAI,IACRE,EAAIF,EAAI,IACRE,EAAIF,EAAI,IACRE,EAAIF,EAAI,IACRE,EAAIF,EAAI,IACRE,EAAIF,EAAI,IACRE,EAAIF,EAAI,IAIV,MAAO,mCAAmC9C,QAAQ,QAAS,SAASmD,GAClE,GAAI1iB,GAAqB,GAAhBwL,KAAKgS,SAAiB,EAC7BiF,EAAU,MAANC,EAAY1iB,EAAS,EAAJA,EAAW,CAClC,OAAOyiB,GAAE1W,SAAS,MAYxB,QAAS9B,GAAiB0Y,GAWxB,IATA,GAOEC,GAPEC,EAAsB,EACxBC,EAAiB,GACjBC,KACAC,EAAS,EACTtB,EAAM,EACNuB,EAAY,MACZC,EAAYD,EAAUtiB,OAGjBgiB,GAAQK,IAAWH,IACxBD,EAAUO,EAAoBR,KAMhB,SAAZC,GACCI,EAAS,GAAKtB,EAAMqB,EAAIpiB,OAASuiB,EAAYN,EAAQjiB,QAAUmiB,KAKlEC,EAAIxf,KAAKqf,GAETlB,GAAOkB,EAAQjiB,OACfgiB,EAAOA,EAAKS,UAGd,OAAOL,GAAIzS,UAAUuR,KAAKoB,GAS5B,QAASE,GAAoBR,GAC3B,GACEU,GACAC,EACAjY,EACAkY,EACAjjB,EALEyiB,IAOJ,KAAKJ,IAASA,EAAKnO,QACjB,MAAO,EAST,IANAuO,EAAIxf,KAAKof,EAAKnO,QAAQR,eAClB2O,EAAK9b,IACPkc,EAAIxf,KAAK,IAAMof,EAAK9b,IAGtBwc,EAAYV,EAAKU,UACbA,GAAa/Z,EAAS+Z,GAExB,IADAC,EAAUD,EAAU1Y,MAAM,OACrBrK,EAAI,EAAGA,EAAIgjB,EAAQ3iB,OAAQL,IAC9ByiB,EAAIxf,KAAK,IAAM+f,EAAQhjB,GAG3B,IAAIkjB,IAAiB,OAAQ,OAAQ,QAAS,MAC9C,KAAKljB,EAAI,EAAGA,EAAIkjB,EAAc7iB,OAAQL,IACpC+K,EAAMmY,EAAcljB,GACpBijB,EAAOZ,EAAKc,aAAapY,GACrBkY,GACFR,EAAIxf,KAAK,IAAM8H,EAAM,KAAOkY,EAAO,KAGvC,OAAOR,GAAIlB,KAAK,IAMlB,QAAS6B,GAAgBtjB,EAAGujB,GAC1B,WAAYvjB,IAAMujB,GAMpB,QAASC,GAAgBxjB,EAAGujB,GAC1B,MAAO7d,GAAY1F,IAAM0F,EAAY6d,GAMvC,QAASzZ,GAAgBqF,EAAKsU,GAC5B,OAAIH,EAAgBnU,EAAKsU,KAEzBtU,EAAMA,EAAIjN,OAAO,GACjBuhB,EAAMA,EAAIvhB,OAAO,GAEbiN,EAAI7M,OAASmhB,EAAInhB,MAAQ6M,EAAI9M,QAAUohB,EAAIphB,SAG3CmhB,EAAgBrU,EAAIL,WAAY2U,EAAI3U,aAEjC/E,EAAiBoF,EAAIL,WAAY2U,EAAI3U,cAM9C,QAAS/E,GAAiB2Z,EAAQC,GAChC,GAAIL,EAAgBI,EAAQC,GAAS,OAAO,CAE5C,IAAIC,GAAUF,EAAO1T,OACjB6T,EAAUF,EAAO3T,MAGrB,IAAI4T,EAAQrjB,SAAWsjB,EAAQtjB,OAAQ,OAAO,CAI9C,KAAK,GADDP,GAAGujB,EACErjB,EAAI,EAAGA,EAAI0jB,EAAQrjB,OAAQL,IAGlC,GAFAF,EAAI4jB,EAAQ1jB,GACZqjB,EAAIM,EAAQ3jB,GAEVF,EAAEya,WAAa8I,EAAE9I,UACjBza,EAAEia,SAAWsJ,EAAEtJ,QACfja,EAAE2a,QAAU4I,EAAE5I,OACd3a,EAAE,cAAgBujB,EAAE,YAEpB,OAAO,CAEX,QAAO,EAUT,QAAStZ,GAAKoG,EAAKnM,EAAM4f,EAAaC,GACpC,GAAW,MAAP1T,EAAJ,CACA,GAAIiF,GAAOjF,EAAInM,EACfmM,GAAInM,GAAQ4f,EAAYxO,GACxBjF,EAAInM,GAAMuJ,GAAY,EACtB4C,EAAInM,GAAM0J,EAAW0H,EACjByO,GACFA,EAAM5gB,MAAMkN,EAAKnM,EAAMoR,KAU3B,QAAS1Q,GAASof,EAAOC,GACvB,IAAK9a,EAAQ6a,GAAQ,MAAO,EAI5B,KAAK,GAFDE,MAEKhkB,EAAI,EAAGA,EAAI8jB,EAAMzjB,OAAQL,IAChC,IACEgkB,EAAO/gB,KAAKghB,OAAOH,EAAM9jB,KACzB,MAAOT,GACPykB,EAAO/gB,KAAK,gCAIhB,MAAO+gB,GAAOzC,KAAKwC,GASrB,QAASG,GAAW/hB,GAClB,QAASgiB,UAAUhiB,GAAOkI,MAAM,SAAShK,OAG3C,QAAS+jB,GAASjiB,GAChB,MAAO+hB,GAAW7e,KAAKC,UAAUnD,IAGnC,QAASkiB,GAAeliB,GACtB,GAAqB,gBAAVA,GAAoB,CAC7B,GAAImiB,GAAY,EAChB,OAAOjb,GAASlH,EAAOmiB,GAClB,GACY,gBAAVniB,IACU,iBAAVA,IACU,mBAAVA,GAEP,MAAOA,EAGT,IAAIC,GAAOiN,OAAOpL,UAAUwH,SAASrL,KAAK+B,EAG1C,OAAa,oBAATC,EAAmC,WAC1B,mBAATA,EAAkC,UACzB,sBAATA,EACKD,EAAM6B,KAAO,cAAgB7B,EAAM6B,KAAO,IAAM,aAElD7B,EAGT,QAASoiB,GAAgBpiB,EAAOqiB,GAC9B,MAAc,KAAVA,EAAoBH,EAAeliB,GAEnC2G,EAAc3G,GACTkN,OAAOC,KAAKnN,GAAOsiB,OAAO,SAASC,EAAK3Z,GAE7C,MADA2Z,GAAI3Z,GAAOwZ,EAAgBpiB,EAAM4I,GAAMyZ,EAAQ,GACxCE,OAEApP,MAAMrM,QAAQ9G,GAChBA,EAAMwiB,IAAI,SAASC,GACxB,MAAOL,GAAgBK,EAAKJ,EAAQ,KAIjCH,EAAeliB,GAGxB,QAAS+H,GAAmB/I,EAAIqjB,EAAOK,GACrC,IAAK/b,EAAc3H,GAAK,MAAOA,EAE/BqjB,GAAyB,gBAAVA,GAAqBM,EAAgCN,EACpEK,EAA2B,gBAAVL,GAAqBO,EAA+BF,CAErE,IAAIG,GAAaT,EAAgBpjB,EAAIqjB,EAErC,OAAIJ,GAAS9e,EAAU0f,IAAeH,EAC7B3a,EAAmB/I,EAAIqjB,EAAQ,GAGjCQ,EAGT,QAAS/a,GAAwBqF,EAAMgV,GACrC,GAAoB,gBAAThV,IAAqC,gBAATA,GAAmB,MAAOA,GAAK7D,UACtE,KAAK6J,MAAMrM,QAAQqG,GAAO,MAAO,EAKjC,IAHAA,EAAOA,EAAK2V,OAAO,SAASla,GAC1B,MAAsB,gBAARA,KAEI,IAAhBuE,EAAKjP,OAAc,MAAO,sBAG9B,IADAikB,EAAiC,gBAAdA,GAAyBY,EAA4BZ,EACpEhV,EAAK,GAAGjP,QAAUikB,EAAW,MAAOhV,GAAK,EAE7C,KAAK,GAAI6V,GAAW7V,EAAKjP,OAAQ8kB,EAAW,EAAGA,IAAY,CACzD,GAAIH,GAAa1V,EAAK9K,MAAM,EAAG2gB,GAAU5D,KAAK,KAC9C,MAAIyD,EAAW3kB,OAASikB,GACxB,MAAIa,KAAa7V,EAAKjP,OAAe2kB,EAC9BA,EAAa,IAGtB,MAAO,GAGT,QAAS7a,GAAS2Z,EAAOzc,GAcvB,QAAS+d,GAAeC,GACtB,MAAIpc,GAAQoc,GACHA,EAAYV,IAAI,SAASC,GAC9B,MAAOQ,GAAeR,KAItB9b,EAAcuc,GACThW,OAAOC,KAAK+V,GAAaZ,OAAO,SAASC,EAAKY,GAMnD,MAJEZ,GAAIY,GADFC,EAAe7V,KAAK4V,GACbE,EAEAJ,EAAeC,EAAYC,IAE/BZ,OAIJW,EA/BT,IAAKpc,EAAQ5B,IAAkB4B,EAAQ5B,IAAyC,IAAxBA,EAAahH,OACnE,MAAOyjB,EAET,IAEI2B,GAFAF,EAAiB/b,EAAWnC,GAC5Bme,EAAe,UAGnB,KACEC,EAAYpgB,KAAK6L,MAAM5L,EAAUwe,IACjC,MAAO4B,GACP,MAAO5B,GAwBT,MAAOsB,GAAeK,GAlkBxB,GAAIngB,GAAY/E,EAAQ,IAEpB8F,EACgB,mBAAXnH,QACHA,OACkB,mBAAXC,GAAyBA,EAAyB,mBAATC,MAAuBA,QAgczE0lB,EAAgC,EAEhCC,EAA+B,MAC/BG,EAA4B,EA6HhCpmB,GAAOD,SACLgK,SAAUA,EACVD,QAASA,EACTG,aAAcA,EACdvD,YAAaA,EACbL,WAAYA,EACZ2D,cAAeA,EACfE,SAAUA,EACVC,QAASA,EACTC,cAAeA,EACfoX,mBAAoBA,EACpBtW,cAAeA,EACftC,uBAAwBA,EACxBgZ,8BAA+BA,EAC/B/e,gBAAiBA,EACjBwH,KAAMA,EACNC,YAAaA,EACbC,SAAUA,EACVC,aAAcA,EACdC,OAAQA,EACRC,WAAYA,EACZC,UAAWA,EACXC,MAAOA,EACPC,iBAAkBA,EAClBkZ,oBAAqBA,EACrBjZ,gBAAiBA,EACjBC,iBAAkBA,EAClBC,SAAUA,EACVC,KAAMA,EACNrF,SAAUA,EACVwF,mBAAoBA,EACpBD,wBAAyBA,EACzBE,SAAUA,KAGT/J,KAAKf,KAAuB,mBAAXF,QAAyBA,OAAyB,mBAATC,MAAuBA,KAAyB,mBAAXF,QAAyBA,aACxH4gB,GAAK,KAAKE,GAAG,SAASzf,EAAQzB,EAAOD,IACxC,SAAWM,GA+BX,QAASwmB,KACP,MAAwB,mBAAbpb,WAAiD,MAArBA,SAASjC,SAAyB,GAElEiC,SAASjC,SAASE,KAjC3B,GAAIrE,GAAQ5D,EAAQ,GAYhBmI,GACF7B,qBAAqB,EACrB6D,OAAO,GAILrE,EACgB,mBAAXnH,QACHA,OACkB,mBAAXC,GAAyBA,EAAyB,mBAATC,MAAuBA,QAGzEwmB,KAAYphB,MACZqhB,EAAmB,IAGnBC,EAAiB,yGA+CrBpd,GAASoD,OAAS,WAUhB,QAASC,GAAUga,GACjBC,IACAC,EAAShjB,KAAK8iB,GAOhB,QAASG,GAAYH,GACnB,IAAK,GAAI/lB,GAAIimB,EAAS5lB,OAAS,EAAGL,GAAK,IAAKA,EACtCimB,EAASjmB,KAAO+lB,GAClBE,EAASE,OAAOnmB,EAAG,GAQzB,QAASomB,KACPC,IACAJ,KAOF,QAASK,GAAexX,EAAOyX,GAC7B,GAAIxkB,GAAY,IAChB,KAAIwkB,GAAkB7d,EAAS7B,oBAA/B,CAGA,IAAK,GAAI7G,KAAKimB,GACZ,GAAIA,EAASvQ,eAAe1V,GAC1B,IACEimB,EAASjmB,GAAG6E,MAAM,MAAOiK,GAAOqK,OAAOyM,EAAOxlB,KAAKqE,UAAW,KAC9D,MAAO+hB,GACPzkB,EAAYykB,EAKlB,GAAIzkB,EACF,KAAMA,IAiBV,QAAS0kB,GAAsBtjB,EAAK0M,EAAK6W,EAAQC,EAAOxlB,GACtD,GAAI2N,GAAQ,KAER/M,EAAYoC,EAAM4E,aAAa5H,GAAMA,EAAGwN,MAAQxN,EAEhDkB,EAAU8B,EAAM4E,aAAa5F,GAAOA,EAAId,QAAUc,CAEtD,IAAIyjB,EACFle,EAASqG,kBAAkB8X,oCACzBD,EACA/W,EACA6W,EACArkB,GAEFykB,QACK,IAAI/kB,GAAaoC,EAAMyE,QAAQ7G,GAMpC+M,EAAQpG,EAASqG,kBAAkBhN,GACnCukB,EAAexX,GAAO,OACjB,CACL,GAOIiY,GAPAze,GACFuH,IAAKA,EACL2K,KAAMkM,EACNhM,OAAQiM,GAGN3iB,EAAOmJ,MAGX,IAAkC,uBAA3B1B,SAASrL,KAAKiC,GAAgC,CACnD,GAAI0kB,GAAS1kB,EAAQof,MAAMqE,EACvBiB,KACF/iB,EAAO+iB,EAAO,GACd1kB,EAAU0kB,EAAO,IAIrBze,EAAS4E,KAAO2Y,EAEhB/W,GACE9K,KAAMA,EACN3B,QAASA,EACTwN,IAAK8V,IACL7W,OAAQxG,IAEVge,EAAexX,GAAO,GAGxB,QAAIkY,GACKA,EAAmBniB,MAAMxF,KAAMoF,WAM1C,QAASuhB,KACHiB,IAGJD,EAAqB3gB,EAAQ8Y,QAC7B9Y,EAAQ8Y,QAAUsH,EAClBQ,GAA2B,GAG7B,QAASZ,KACFY,IAGL5gB,EAAQ8Y,QAAU6H,EAClBC,GAA2B,EAC3BD,EAAqB7Z,QAGvB,QAAS2Z,KACP,GAAII,GAAsBN,EACxBO,EAAYC,CACdA,GAAW,KACXR,EAAqB,KACrBhV,EAAgB,KAChB0U,EAAezhB,MAAM,MAAOqiB,GAAqB,GAAO/N,OAAOgO,IAUjE,QAASrb,GAAO3K,EAAIkmB,GAClB,GAAI9iB,GAAOqhB,EAAOxlB,KAAKqE,UAAW,EAClC,IAAImiB,EAAoB,CACtB,GAAIhV,IAAkBzQ,EACpB,MAEA2lB,KAIJ,GAAIhY,GAAQpG,EAASqG,kBAAkB5N,EAevC,IAdAylB,EAAqB9X,EACrB8C,EAAgBzQ,EAChBimB,EAAW7iB,EAMXyO,WAAW,WACLpB,IAAkBzQ,GACpB2lB,KAEDhY,EAAMwY,WAAa,IAAO,GAEzBD,KAAY,EACd,KAAMlmB,GA9LV,GA0DI6lB,GAAoBC,EA1DpBhB,KACFmB,EAAW,KACXxV,EAAgB,KAChBgV,EAAqB,IAkMvB,OAHA9a,GAAOC,UAAYA,EACnBD,EAAOoa,YAAcA,EACrBpa,EAAO6B,UAAYyY,EACZta,KAsDTpD,EAASqG,kBAAoB,WA4C3B,QAASwY,GAA+BpmB,GACtC,GAAwB,mBAAbA,GAAG2N,OAA0B3N,EAAG2N,MAA3C,CAiBA,IAAK,GALD0Y,GACAC,EACAC,EAZA5P,EAAS,0IACT6P,EAAQ,wHAGRC,EAAQ,6JAERC,EAAY,gDACZC,EAAa,gCACbC,EAAQ5mB,EAAG2N,MAAMzE,MAAM,MACvByE,KAMK9O,GAFO,sBAAsBkC,KAAKf,EAAGkB,SAEjC,GAAGgV,EAAI0Q,EAAM1nB,OAAQL,EAAIqX,IAAKrX,EAAG,CAC5C,GAAKynB,EAAQ3P,EAAO5V,KAAK6lB,EAAM/nB,IAAM,CACnC,GAAIgoB,GAAWP,EAAM,IAAqC,IAA/BA,EAAM,GAAG5Q,QAAQ,UACxCoR,EAASR,EAAM,IAAmC,IAA7BA,EAAM,GAAG5Q,QAAQ,OACtCoR,KAAWT,EAAWM,EAAW5lB,KAAKulB,EAAM,OAE9CA,EAAM,GAAKD,EAAS,GACpBC,EAAM,GAAKD,EAAS,GACpBC,EAAM,GAAKD,EAAS,IAEtBE,GACE7X,IAAMmY,EAAsB,KAAXP,EAAM,GACvBva,KAAMua,EAAM,IAAM5B,EAClBthB,KAAMyjB,GAAYP,EAAM,OACxBjN,KAAMiN,EAAM,IAAMA,EAAM,GAAK,KAC7B/M,OAAQ+M,EAAM,IAAMA,EAAM,GAAK,UAE5B,IAAKA,EAAQE,EAAMzlB,KAAK6lB,EAAM/nB,IACnC0nB,GACE7X,IAAK4X,EAAM,GACXva,KAAMua,EAAM,IAAM5B,EAClBthB,QACAiW,MAAOiN,EAAM,GACb/M,OAAQ+M,EAAM,IAAMA,EAAM,GAAK,UAE5B,CAAA,KAAKA,EAAQG,EAAM1lB,KAAK6lB,EAAM/nB,KAsBnC,QArBA,IAAIioB,GAASR,EAAM,IAAMA,EAAM,GAAG5Q,QAAQ,aACtCoR,KAAWT,EAAWK,EAAU3lB,KAAKulB,EAAM,MAE7CA,EAAM,GAAKD,EAAS,GACpBC,EAAM,GAAKD,EAAS,GACpBC,EAAM,GAAK,MACI,IAANznB,GAAYynB,EAAM,IAAiC,mBAApBtmB,GAAG+mB,eAK3CpZ,EAAM,GAAG4L,OAASvZ,EAAG+mB,aAAe,GAEtCR,GACE7X,IAAK4X,EAAM,GACXva,KAAMua,EAAM,IAAM5B,EAClBthB,KAAMkjB,EAAM,GAAKA,EAAM,GAAGpd,MAAM,QAChCmQ,KAAMiN,EAAM,IAAMA,EAAM,GAAK,KAC7B/M,OAAQ+M,EAAM,IAAMA,EAAM,GAAK,OAM9BC,EAAQxa,MAAQwa,EAAQlN,OAC3BkN,EAAQxa,KAAO2Y,GAGjB/W,EAAM7L,KAAKykB,GAGb,MAAK5Y,GAAMzO,QAKT2D,KAAM7C,EAAG6C,KACT3B,QAASlB,EAAGkB,QACZwN,IAAK8V,IACL7W,MAAOA,GAPA,MAwBX,QAAS+X,GAAoCjN,EAAW/J,EAAK6W,EAAQrkB,GACnE,GAAI8lB,IACFtY,IAAKA,EACL2K,KAAMkM,EAGR,IAAIyB,EAAQtY,KAAOsY,EAAQ3N,KAAM,CAO/B,GANAZ,EAAU0N,YAAa,EAElBa,EAAQjb,OACXib,EAAQjb,KAAO2Y,GAGbjM,EAAU9K,MAAMzO,OAAS,GACvBuZ,EAAU9K,MAAM,GAAGe,MAAQsY,EAAQtY,IAAK,CAC1C,GAAI+J,EAAU9K,MAAM,GAAG0L,OAAS2N,EAAQ3N,KACtC,OAAO,CACF,KACJZ,EAAU9K,MAAM,GAAG0L,MACpBZ,EAAU9K,MAAM,GAAG5B,OAASib,EAAQjb,KAGpC,MADA0M,GAAU9K,MAAM,GAAG0L,KAAO2N,EAAQ3N,MAC3B,EAOb,MAFAZ,GAAU9K,MAAMsZ,QAAQD,GACxBvO,EAAUyO,SAAU,GACb,EAKT,MAHEzO,GAAU0N,YAAa,GAGlB,EAYT,QAASgB,GAAsCnnB,EAAIqjB,GASjD,IACE,GALAiD,GACAc,EALEC,EAAe,qEACjB1Z,KACA2Z,KACAC,GAAY,EAMRC,EAAOL,EAAsCM,OACjDD,IAASD,EACTC,EAAOA,EAAKC,OAEZ,GAAID,IAAS5Z,GAAqB4Z,IAASjgB,EAASoD,OAApD,CAkBA,GAbAyc,GACE1Y,IAAK,KACL3C,KAAM2Y,EACNrL,KAAM,KACNE,OAAQ,MAGNiO,EAAK3kB,KACPukB,EAAKrb,KAAOyb,EAAK3kB,MACPyjB,EAAQe,EAAatmB,KAAKymB,EAAKld,eACzC8c,EAAKrb,KAAOua,EAAM,IAGK,mBAAdc,GAAKrb,KACd,IACEqb,EAAKrb,KAAOua,EAAM3D,MAAM+E,UAAU,EAAGpB,EAAM3D,MAAMjN,QAAQ,MACzD,MAAOtX,IAGPkpB,EAAM,GAAKE,GACbD,GAAY,EAEZD,EAAM,GAAKE,IAAQ,EAGrB7Z,EAAM7L,KAAKslB,GAGT/D,GAGF1V,EAAMqX,OAAO,EAAG3B,EAGlB,IAAIjU,IACFvM,KAAM7C,EAAG6C,KACT3B,QAASlB,EAAGkB,QACZwN,IAAK8V,IACL7W,MAAOA,EAQT,OANA+X,GACEtW,EACApP,EAAG2nB,WAAa3nB,EAAG4nB,SACnB5nB,EAAGqZ,MAAQrZ,EAAG6nB,WACd7nB,EAAGkB,SAAWlB,EAAG8nB,aAEZ1Y,EAQT,QAASxB,GAAkB5N,EAAIqjB,GAC7B,GAAI1V,GAAQ,IACZ0V,GAAiB,MAATA,EAAgB,GAAKA,CAE7B,KAEE,GADA1V,EAAQyY,EAA+BpmB,GAErC,MAAO2N,GAET,MAAOvP,GACP,GAAImJ,EAASgC,MACX,KAAMnL,GAIV,IAEE,GADAuP,EAAQwZ,EAAsCnnB,EAAIqjB,EAAQ,GAExD,MAAO1V,GAET,MAAOvP,GACP,GAAImJ,EAASgC,MACX,KAAMnL,GAGV,OACEyE,KAAM7C,EAAG6C,KACT3B,QAASlB,EAAGkB,QACZwN,IAAK8V,KAOT,MAHA5W,GAAkB8X,oCAAsCA,EACxD9X,EAAkBwY,+BAAiCA;AAE5CxY,KAGTjQ,EAAOD,QAAU6J,IAEdtI,KAAKf,KAAuB,mBAAXF,QAAyBA,OAAyB,mBAATC,MAAuBA,KAAyB,mBAAXF,QAAyBA,aACxHwD,EAAI,IAAIod,IAAI,SAASvf,EAAQzB,EAAOD,GAevC,QAASgY,GAAQqS,EAAUC,GACzB,IAAK,GAAInpB,GAAI,EAAGA,EAAIkpB,EAAS7oB,SAAUL,EACrC,GAAIkpB,EAASlpB,KAAOmpB,EAAQ,MAAOnpB,EAErC,UAGF,QAASsF,GAAU6K,EAAKiZ,EAAUC,EAAQC,GACxC,MAAOjkB,MAAKC,UAAU6K,EAAKoZ,EAAWH,EAAUE,GAAgBD,GAIlE,QAASG,GAAernB,GACtB,GAAI2T,IAEFhH,MAAO3M,EAAM2M,MACbzM,QAASF,EAAME,QACf2B,KAAM7B,EAAM6B,KAGd,KAAK,GAAIhE,KAAKmC,GACRkN,OAAOpL,UAAUyR,eAAetV,KAAK+B,EAAOnC,KAC9C8V,EAAI9V,GAAKmC,EAAMnC,GAInB,OAAO8V,GAGT,QAASyT,GAAWH,EAAUE,GAC5B,GAAIxa,MACAQ,IAWJ,OATqB,OAAjBga,IACFA,EAAgB,SAASve,EAAK5I,GAC5B,MAAI2M,GAAM,KAAO3M,EACR,eAEF,eAAiBmN,EAAK9K,MAAM,EAAGqS,EAAQ/H,EAAO3M,IAAQof,KAAK,KAAO,MAItE,SAASxW,EAAK5I,GACnB,GAAI2M,EAAMzO,OAAS,EAAG,CACpB,GAAIopB,GAAU5S,EAAQ/H,EAAOzP,OAC5BoqB,EAAU3a,EAAMqX,OAAOsD,EAAU,GAAK3a,EAAM7L,KAAK5D,OACjDoqB,EAAUna,EAAK6W,OAAOsD,EAASC,EAAAA,EAAU3e,GAAOuE,EAAKrM,KAAK8H,IAEtD8L,EAAQ/H,EAAO3M,KAClBA,EAAQmnB,EAAclpB,KAAKf,KAAM0L,EAAK5I,QAGxC2M,GAAM7L,KAAKd,EAGb,OAAmB,OAAZinB,EACHjnB,YAAiBlC,OAAQupB,EAAernB,GAASA,EACjDinB,EAAShpB,KAAKf,KAAM0L,EAAK5I,IA5DjCtD,EAAUC,EAAOD,QAAUyG,EAC3BzG,EAAQ8qB,aAAeJ,OA+DjBxJ,IAAI,SAASxf,EAAQzB,EAAOD,GAwBlC,QAAS+qB,GAAQC,EAAGC,GAClB,GAAIC,IAAW,MAAJF,IAAmB,MAAJC,GACtBE,GAAOH,GAAK,KAAOC,GAAK,KAAOC,GAAO,GAC1C,OAAQC,IAAO,GAAa,MAAND,EAMxB,QAASE,GAAc/H,EAAKgI,GAC1B,MAAQhI,IAAOgI,EAAQhI,IAAS,GAAKgI,EAMvC,QAASC,GAAOC,EAAGtqB,EAAGujB,EAAGwG,EAAGlqB,EAAGH,GAC7B,MAAOoqB,GAAQK,EAAcL,EAAQA,EAAQ9pB,EAAGsqB,GAAIR,EAAQC,EAAGrqB,IAAKG,GAAI0jB,GAE1E,QAASgH,GAAMvqB,EAAGujB,EAAGjB,EAAGkI,EAAGT,EAAGlqB,EAAGH,GAC/B,MAAO2qB,GAAQ9G,EAAIjB,GAAOiB,EAAIiH,EAAIxqB,EAAGujB,EAAGwG,EAAGlqB,EAAGH,GAEhD,QAAS+qB,GAAMzqB,EAAGujB,EAAGjB,EAAGkI,EAAGT,EAAGlqB,EAAGH,GAC/B,MAAO2qB,GAAQ9G,EAAIiH,EAAMlI,GAAKkI,EAAIxqB,EAAGujB,EAAGwG,EAAGlqB,EAAGH,GAEhD,QAASgrB,GAAM1qB,EAAGujB,EAAGjB,EAAGkI,EAAGT,EAAGlqB,EAAGH,GAC/B,MAAO2qB,GAAO9G,EAAIjB,EAAIkI,EAAGxqB,EAAGujB,EAAGwG,EAAGlqB,EAAGH,GAEvC,QAASirB,GAAM3qB,EAAGujB,EAAGjB,EAAGkI,EAAGT,EAAGlqB,EAAGH,GAC/B,MAAO2qB,GAAO/H,GAAKiB,GAAKiH,GAAIxqB,EAAGujB,EAAGwG,EAAGlqB,EAAGH,GAM1C,QAASkrB,GAAQb,EAAGzI,GAElByI,EAAEzI,GAAO,IAAM,KAASA,EAAM,GAC9ByI,GAAKzI,EAAM,KAAQ,GAAM,GAAK,IAAMA,CAEpC,IAAIphB,GACA2qB,EACAC,EACAC,EACAC,EACAhrB,EAAI,WACJujB,aACAjB,cACAkI,EAAI,SAER,KAAKtqB,EAAI,EAAGA,EAAI6pB,EAAExpB,OAAQL,GAAK,GAC7B2qB,EAAO7qB,EACP8qB,EAAOvH,EACPwH,EAAOzI,EACP0I,EAAOR,EAEPxqB,EAAIuqB,EAAMvqB,EAAGujB,EAAGjB,EAAGkI,EAAGT,EAAE7pB,GAAI,cAC5BsqB,EAAID,EAAMC,EAAGxqB,EAAGujB,EAAGjB,EAAGyH,EAAE7pB,EAAI,GAAI,eAChCoiB,EAAIiI,EAAMjI,EAAGkI,EAAGxqB,EAAGujB,EAAGwG,EAAE7pB,EAAI,GAAI,GAAI,WACpCqjB,EAAIgH,EAAMhH,EAAGjB,EAAGkI,EAAGxqB,EAAG+pB,EAAE7pB,EAAI,GAAI,gBAChCF,EAAIuqB,EAAMvqB,EAAGujB,EAAGjB,EAAGkI,EAAGT,EAAE7pB,EAAI,GAAI,cAChCsqB,EAAID,EAAMC,EAAGxqB,EAAGujB,EAAGjB,EAAGyH,EAAE7pB,EAAI,GAAI,GAAI,YACpCoiB,EAAIiI,EAAMjI,EAAGkI,EAAGxqB,EAAGujB,EAAGwG,EAAE7pB,EAAI,GAAI,gBAChCqjB,EAAIgH,EAAMhH,EAAGjB,EAAGkI,EAAGxqB,EAAG+pB,EAAE7pB,EAAI,GAAI,cAChCF,EAAIuqB,EAAMvqB,EAAGujB,EAAGjB,EAAGkI,EAAGT,EAAE7pB,EAAI,GAAI,EAAG,YACnCsqB,EAAID,EAAMC,EAAGxqB,EAAGujB,EAAGjB,EAAGyH,EAAE7pB,EAAI,GAAI,gBAChCoiB,EAAIiI,EAAMjI,EAAGkI,EAAGxqB,EAAGujB,EAAGwG,EAAE7pB,EAAI,IAAK,WACjCqjB,EAAIgH,EAAMhH,EAAGjB,EAAGkI,EAAGxqB,EAAG+pB,EAAE7pB,EAAI,IAAK,gBACjCF,EAAIuqB,EAAMvqB,EAAGujB,EAAGjB,EAAGkI,EAAGT,EAAE7pB,EAAI,IAAK,EAAG,YACpCsqB,EAAID,EAAMC,EAAGxqB,EAAGujB,EAAGjB,EAAGyH,EAAE7pB,EAAI,IAAK,cACjCoiB,EAAIiI,EAAMjI,EAAGkI,EAAGxqB,EAAGujB,EAAGwG,EAAE7pB,EAAI,IAAK,gBACjCqjB,EAAIgH,EAAMhH,EAAGjB,EAAGkI,EAAGxqB,EAAG+pB,EAAE7pB,EAAI,IAAK,GAAI,YAErCF,EAAIyqB,EAAMzqB,EAAGujB,EAAGjB,EAAGkI,EAAGT,EAAE7pB,EAAI,GAAI,cAChCsqB,EAAIC,EAAMD,EAAGxqB,EAAGujB,EAAGjB,EAAGyH,EAAE7pB,EAAI,GAAI,eAChCoiB,EAAImI,EAAMnI,EAAGkI,EAAGxqB,EAAGujB,EAAGwG,EAAE7pB,EAAI,IAAK,GAAI,WACrCqjB,EAAIkH,EAAMlH,EAAGjB,EAAGkI,EAAGxqB,EAAG+pB,EAAE7pB,GAAI,eAC5BF,EAAIyqB,EAAMzqB,EAAGujB,EAAGjB,EAAGkI,EAAGT,EAAE7pB,EAAI,GAAI,cAChCsqB,EAAIC,EAAMD,EAAGxqB,EAAGujB,EAAGjB,EAAGyH,EAAE7pB,EAAI,IAAK,EAAG,UACpCoiB,EAAImI,EAAMnI,EAAGkI,EAAGxqB,EAAGujB,EAAGwG,EAAE7pB,EAAI,IAAK,eACjCqjB,EAAIkH,EAAMlH,EAAGjB,EAAGkI,EAAGxqB,EAAG+pB,EAAE7pB,EAAI,GAAI,eAChCF,EAAIyqB,EAAMzqB,EAAGujB,EAAGjB,EAAGkI,EAAGT,EAAE7pB,EAAI,GAAI,EAAG,WACnCsqB,EAAIC,EAAMD,EAAGxqB,EAAGujB,EAAGjB,EAAGyH,EAAE7pB,EAAI,IAAK,eACjCoiB,EAAImI,EAAMnI,EAAGkI,EAAGxqB,EAAGujB,EAAGwG,EAAE7pB,EAAI,GAAI,eAChCqjB,EAAIkH,EAAMlH,EAAGjB,EAAGkI,EAAGxqB,EAAG+pB,EAAE7pB,EAAI,GAAI,GAAI,YACpCF,EAAIyqB,EAAMzqB,EAAGujB,EAAGjB,EAAGkI,EAAGT,EAAE7pB,EAAI,IAAK,eACjCsqB,EAAIC,EAAMD,EAAGxqB,EAAGujB,EAAGjB,EAAGyH,EAAE7pB,EAAI,GAAI,aAChCoiB,EAAImI,EAAMnI,EAAGkI,EAAGxqB,EAAGujB,EAAGwG,EAAE7pB,EAAI,GAAI,GAAI,YACpCqjB,EAAIkH,EAAMlH,EAAGjB,EAAGkI,EAAGxqB,EAAG+pB,EAAE7pB,EAAI,IAAK,gBAEjCF,EAAI0qB,EAAM1qB,EAAGujB,EAAGjB,EAAGkI,EAAGT,EAAE7pB,EAAI,GAAI,WAChCsqB,EAAIE,EAAMF,EAAGxqB,EAAGujB,EAAGjB,EAAGyH,EAAE7pB,EAAI,GAAI,gBAChCoiB,EAAIoI,EAAMpI,EAAGkI,EAAGxqB,EAAGujB,EAAGwG,EAAE7pB,EAAI,IAAK,GAAI,YACrCqjB,EAAImH,EAAMnH,EAAGjB,EAAGkI,EAAGxqB,EAAG+pB,EAAE7pB,EAAI,IAAK,cACjCF,EAAI0qB,EAAM1qB,EAAGujB,EAAGjB,EAAGkI,EAAGT,EAAE7pB,EAAI,GAAI,eAChCsqB,EAAIE,EAAMF,EAAGxqB,EAAGujB,EAAGjB,EAAGyH,EAAE7pB,EAAI,GAAI,GAAI,YACpCoiB,EAAIoI,EAAMpI,EAAGkI,EAAGxqB,EAAGujB,EAAGwG,EAAE7pB,EAAI,GAAI,eAChCqjB,EAAImH,EAAMnH,EAAGjB,EAAGkI,EAAGxqB,EAAG+pB,EAAE7pB,EAAI,IAAK,gBACjCF,EAAI0qB,EAAM1qB,EAAGujB,EAAGjB,EAAGkI,EAAGT,EAAE7pB,EAAI,IAAK,EAAG,WACpCsqB,EAAIE,EAAMF,EAAGxqB,EAAGujB,EAAGjB,EAAGyH,EAAE7pB,GAAI,eAC5BoiB,EAAIoI,EAAMpI,EAAGkI,EAAGxqB,EAAGujB,EAAGwG,EAAE7pB,EAAI,GAAI,eAChCqjB,EAAImH,EAAMnH,EAAGjB,EAAGkI,EAAGxqB,EAAG+pB,EAAE7pB,EAAI,GAAI,GAAI,UACpCF,EAAI0qB,EAAM1qB,EAAGujB,EAAGjB,EAAGkI,EAAGT,EAAE7pB,EAAI,GAAI,cAChCsqB,EAAIE,EAAMF,EAAGxqB,EAAGujB,EAAGjB,EAAGyH,EAAE7pB,EAAI,IAAK,eACjCoiB,EAAIoI,EAAMpI,EAAGkI,EAAGxqB,EAAGujB,EAAGwG,EAAE7pB,EAAI,IAAK,GAAI,WACrCqjB,EAAImH,EAAMnH,EAAGjB,EAAGkI,EAAGxqB,EAAG+pB,EAAE7pB,EAAI,GAAI,eAEhCF,EAAI2qB,EAAM3qB,EAAGujB,EAAGjB,EAAGkI,EAAGT,EAAE7pB,GAAI,cAC5BsqB,EAAIG,EAAMH,EAAGxqB,EAAGujB,EAAGjB,EAAGyH,EAAE7pB,EAAI,GAAI,GAAI,YACpCoiB,EAAIqI,EAAMrI,EAAGkI,EAAGxqB,EAAGujB,EAAGwG,EAAE7pB,EAAI,IAAK,gBACjCqjB,EAAIoH,EAAMpH,EAAGjB,EAAGkI,EAAGxqB,EAAG+pB,EAAE7pB,EAAI,GAAI,cAChCF,EAAI2qB,EAAM3qB,EAAGujB,EAAGjB,EAAGkI,EAAGT,EAAE7pB,EAAI,IAAK,EAAG,YACpCsqB,EAAIG,EAAMH,EAAGxqB,EAAGujB,EAAGjB,EAAGyH,EAAE7pB,EAAI,GAAI,gBAChCoiB,EAAIqI,EAAMrI,EAAGkI,EAAGxqB,EAAGujB,EAAGwG,EAAE7pB,EAAI,IAAK,aACjCqjB,EAAIoH,EAAMpH,EAAGjB,EAAGkI,EAAGxqB,EAAG+pB,EAAE7pB,EAAI,GAAI,gBAChCF,EAAI2qB,EAAM3qB,EAAGujB,EAAGjB,EAAGkI,EAAGT,EAAE7pB,EAAI,GAAI,EAAG,YACnCsqB,EAAIG,EAAMH,EAAGxqB,EAAGujB,EAAGjB,EAAGyH,EAAE7pB,EAAI,IAAK,cACjCoiB,EAAIqI,EAAMrI,EAAGkI,EAAGxqB,EAAGujB,EAAGwG,EAAE7pB,EAAI,GAAI,gBAChCqjB,EAAIoH,EAAMpH,EAAGjB,EAAGkI,EAAGxqB,EAAG+pB,EAAE7pB,EAAI,IAAK,GAAI,YACrCF,EAAI2qB,EAAM3qB,EAAGujB,EAAGjB,EAAGkI,EAAGT,EAAE7pB,EAAI,GAAI,cAChCsqB,EAAIG,EAAMH,EAAGxqB,EAAGujB,EAAGjB,EAAGyH,EAAE7pB,EAAI,IAAK,gBACjCoiB,EAAIqI,EAAMrI,EAAGkI,EAAGxqB,EAAGujB,EAAGwG,EAAE7pB,EAAI,GAAI,GAAI,WACpCqjB,EAAIoH,EAAMpH,EAAGjB,EAAGkI,EAAGxqB,EAAG+pB,EAAE7pB,EAAI,GAAI,eAEhCF,EAAI8pB,EAAQ9pB,EAAG6qB,GACftH,EAAIuG,EAAQvG,EAAGuH,GACfxI,EAAIwH,EAAQxH,EAAGyI,GACfP,EAAIV,EAAQU,EAAGQ,EAEjB,QAAQhrB,EAAGujB,EAAGjB,EAAGkI,GAMnB,QAASS,GAAUjH,GACjB,GAAI9jB,GACAgkB,EAAS,GACTgH,EAA0B,GAAflH,EAAMzjB,MACrB,KAAKL,EAAI,EAAGA,EAAIgrB,EAAUhrB,GAAK,EAC7BgkB,GAAUC,OAAOgH,aAAcnH,EAAM9jB,GAAK,KAAQA,EAAI,GAAO,IAE/D,OAAOgkB,GAOT,QAASkH,GAAUpH,GACjB,GAAI9jB,GACAgkB,IAEJ,KADAA,GAAQF,EAAMzjB,QAAU,GAAK,GAAK8M,OAC7BnN,EAAI,EAAGA,EAAIgkB,EAAO3jB,OAAQL,GAAK,EAClCgkB,EAAOhkB,GAAK,CAEd,IAAImrB,GAAyB,EAAfrH,EAAMzjB,MACpB,KAAKL,EAAI,EAAGA,EAAImrB,EAASnrB,GAAK,EAC5BgkB,EAAOhkB,GAAK,KAAiC,IAA1B8jB,EAAMsH,WAAWprB,EAAI,KAAeA,EAAI,EAE7D,OAAOgkB,GAMT,QAASqH,GAAQ1rB,GACf,MAAOorB,GAAUL,EAAQQ,EAAUvrB,GAAe,EAAXA,EAAEU,SAM3C,QAASirB,GAAYvgB,EAAKnJ,GACxB,GAAI5B,GAIAwf,EAHA+L,EAAOL,EAAUngB,GACjBygB,KACAC,IAMJ,KAJAD,EAAK,IAAMC,EAAK,IAAMte,OAClBoe,EAAKlrB,OAAS,KAChBkrB,EAAOb,EAAQa,EAAmB,EAAbxgB,EAAI1K,SAEtBL,EAAI,EAAGA,EAAI,GAAIA,GAAK,EACvBwrB,EAAKxrB,GAAe,UAAVurB,EAAKvrB,GACfyrB,EAAKzrB,GAAe,WAAVurB,EAAKvrB,EAGjB,OADAwf,GAAOkL,EAAQc,EAAKrS,OAAO+R,EAAUtpB,IAAQ,IAAoB,EAAdA,EAAKvB,QACjD0qB,EAAUL,EAAQe,EAAKtS,OAAOqG,GAAO,MAM9C,QAASkM,GAAS5H,GAChB,GAEI+F,GACA7pB,EAHA2rB,EAAS,mBACT3H,EAAS,EAGb,KAAKhkB,EAAI,EAAGA,EAAI8jB,EAAMzjB,OAAQL,GAAK,EACjC6pB,EAAI/F,EAAMsH,WAAWprB,GACrBgkB,GAAU2H,EAAOC,OAAQ/B,IAAM,EAAK,IAAQ8B,EAAOC,OAAW,GAAJ/B,EAE5D,OAAO7F,GAMT,QAAS6H,GAAa/H,GACpB,MAAOgI,UAAS1Z,mBAAmB0R,IAMrC,QAASiI,GAAOpsB,GACd,MAAO0rB,GAAQQ,EAAalsB,IAE9B,QAASqsB,GAAOrsB,GACd,MAAO+rB,GAASK,EAAOpsB,IAEzB,QAASssB,GAAW3G,EAAGgF,GACrB,MAAOgB,GAAYO,EAAavG,GAAIuG,EAAavB,IAEnD,QAAS4B,GAAW5G,EAAGgF,GACrB,MAAOoB,GAASO,EAAW3G,EAAGgF,IAGhC,QAAS3hB,GAAIwjB,EAAQphB,EAAKqhB,GACxB,MAAKrhB,GAMAqhB,EAGEH,EAAWlhB,EAAKohB,GAFdD,EAAWnhB,EAAKohB,GANlBC,EAGEL,EAAOI,GAFLH,EAAOG,GAUpBrtB,EAAOD,QAAU8J,YAEN,EAAE,EAAE,EAAE,IAAI","file":"raven.min.js"} \ No newline at end of file diff --git a/dist/angular,console,vue/raven.js b/dist/angular,console,vue/raven.js index 21a6f9e8e8f4..2230f37a1d7b 100644 --- a/dist/angular,console,vue/raven.js +++ b/dist/angular,console,vue/raven.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.22.2 (1b6187b) | github.com/getsentry/raven-js */ +/*! Raven.js 3.24.2 (540f32b) | github.com/getsentry/raven-js */ /* * Includes TraceKit @@ -10,3270 +10,4057 @@ * */ -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : - typeof define === 'function' && define.amd ? define(factory) : - (global.Raven = factory()); -}(this, (function () { 'use strict'; - -var commonjsGlobal = typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; +(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.Raven = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o' : 'anonymous component') + + (vm._isVue && vm.$options.__file ? ' at ' + vm.$options.__file : '') + ); } -function isPlainObject(what) { - return Object.prototype.toString.call(what) === '[object Object]'; -} +function vuePlugin(Raven, Vue) { + Vue = Vue || window.Vue; -function isString$1(what) { - return Object.prototype.toString.call(what) === '[object String]'; -} + // quit if Vue isn't on the page + if (!Vue || !Vue.config) return; -function isArray$1(what) { - return Object.prototype.toString.call(what) === '[object Array]'; -} + var _oldOnError = Vue.config.errorHandler; + Vue.config.errorHandler = function VueErrorHandler(error, vm, info) { + var metaData = {}; -function isEmptyObject$1(what) { - if (!isPlainObject(what)) return false; + // vm and lifecycleHook are not always available + if (Object.prototype.toString.call(vm) === '[object Object]') { + metaData.componentName = formatComponentName(vm); + metaData.propsData = vm.$options.propsData; + } - for (var _ in what) { - if (what.hasOwnProperty(_)) { - return false; + if (typeof info !== 'undefined') { + metaData.lifecycleHook = info; } - } - return true; + Raven.captureException(error, { + extra: metaData + }); + + if (typeof _oldOnError === 'function') { + _oldOnError.call(this, error, vm, info); + } + }; } -function supportsErrorEvent() { - try { - new ErrorEvent(''); // eslint-disable-line no-new +module.exports = vuePlugin; - return true; - } catch (e) { - return false; - } +_dereq_(7).addPlugin(module.exports); +},{"7":7}],4:[function(_dereq_,module,exports){ +function RavenConfigError(message) { + this.name = 'RavenConfigError'; + this.message = message; } +RavenConfigError.prototype = new Error(); +RavenConfigError.prototype.constructor = RavenConfigError; -function supportsFetch$1() { - if (!('fetch' in _window$3)) return false; - - try { - new Headers(); // eslint-disable-line no-new +module.exports = RavenConfigError; - new Request(''); // eslint-disable-line no-new +},{}],5:[function(_dereq_,module,exports){ +var utils = _dereq_(8); - new Response(); // eslint-disable-line no-new +var wrapMethod = function(console, level, callback) { + var originalConsoleLevel = console[level]; + var originalConsole = console; - return true; - } catch (e) { - return false; + if (!(level in console)) { + return; } -} - -function wrappedCallback(callback) { - function dataCallback(data, original) { - var normalizedData = callback(data) || data; - - if (original) { - return original(normalizedData) || normalizedData; - } - return normalizedData; - } + var sentryLevel = level === 'warn' ? 'warning' : level; - return dataCallback; -} + console[level] = function() { + var args = [].slice.call(arguments); -function each$1(obj, callback) { - var i, j; + var msg = utils.safeJoin(args, ' '); + var data = {level: sentryLevel, logger: 'console', extra: {arguments: args}}; - if (isUndefined$1(obj.length)) { - for (i in obj) { - if (hasKey$1(obj, i)) { - callback.call(null, i, obj[i]); + if (level === 'assert') { + if (args[0] === false) { + // Default browsers message + msg = + 'Assertion failed: ' + (utils.safeJoin(args.slice(1), ' ') || 'console.assert'); + data.extra.arguments = args.slice(1); + callback && callback(msg, data); } + } else { + callback && callback(msg, data); } - } else { - j = obj.length; - if (j) { - for (i = 0; i < j; i++) { - callback.call(null, i, obj[i]); - } + // this fails for some browsers. :( + if (originalConsoleLevel) { + // IE9 doesn't allow calling apply on console functions directly + // See: https://stackoverflow.com/questions/5472938/does-ie9-support-console-log-and-is-it-a-real-function#answer-5473193 + Function.prototype.apply.call(originalConsoleLevel, originalConsole, args); } - } -} - -function objectMerge$1(obj1, obj2) { - if (!obj2) { - return obj1; - } + }; +}; - each$1(obj2, function (key, value) { - obj1[key] = value; - }); - return obj1; -} -/** - * This function is only used for react-native. - * react-native freezes object that have already been sent over the - * js bridge. We need this function in order to check if the object is frozen. - * So it's ok that objectFrozen returns false if Object.isFrozen is not - * supported because it's not relevant for other "platforms". See related issue: - * https://github.com/getsentry/react-native-sentry/issues/57 - */ +module.exports = { + wrapMethod: wrapMethod +}; +},{"8":8}],6:[function(_dereq_,module,exports){ +(function (global){ +/*global XDomainRequest:false */ -function objectFrozen$1(obj) { - if (!Object.isFrozen) { - return false; - } +var TraceKit = _dereq_(9); +var stringify = _dereq_(10); +var md5 = _dereq_(11); +var RavenConfigError = _dereq_(4); - return Object.isFrozen(obj); -} +var utils = _dereq_(8); +var isError = utils.isError; +var isObject = utils.isObject; +var isPlainObject = utils.isPlainObject; +var isErrorEvent = utils.isErrorEvent; +var isUndefined = utils.isUndefined; +var isFunction = utils.isFunction; +var isString = utils.isString; +var isArray = utils.isArray; +var isEmptyObject = utils.isEmptyObject; +var each = utils.each; +var objectMerge = utils.objectMerge; +var truncate = utils.truncate; +var objectFrozen = utils.objectFrozen; +var hasKey = utils.hasKey; +var joinRegExp = utils.joinRegExp; +var urlencode = utils.urlencode; +var uuid4 = utils.uuid4; +var htmlTreeAsString = utils.htmlTreeAsString; +var isSameException = utils.isSameException; +var isSameStacktrace = utils.isSameStacktrace; +var parseUrl = utils.parseUrl; +var fill = utils.fill; +var supportsFetch = utils.supportsFetch; +var supportsReferrerPolicy = utils.supportsReferrerPolicy; +var serializeKeysForMessage = utils.serializeKeysForMessage; +var serializeException = utils.serializeException; +var sanitize = utils.sanitize; -function truncate$1(str, max) { - return !max || str.length <= max ? str : str.substr(0, max) + "\u2026"; -} -/** - * hasKey, a better form of hasOwnProperty - * Example: hasKey(MainHostObject, property) === true/false - * - * @param {Object} host object to check property - * @param {string} key to check - */ +var wrapConsoleMethod = _dereq_(5).wrapMethod; +var dsnKeys = 'source protocol user pass host port path'.split(' '), + dsnPattern = /^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/; -function hasKey$1(object, key) { - return Object.prototype.hasOwnProperty.call(object, key); +function now() { + return +new Date(); } -function joinRegExp$1(patterns) { - // Combine an array of regular expressions and strings into one large regexp - // Be mad. - var sources = [], - i = 0, - len = patterns.length, - pattern; - - for (; i < len; i++) { - pattern = patterns[i]; +// This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) +var _window = + typeof window !== 'undefined' + ? window + : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; +var _document = _window.document; +var _navigator = _window.navigator; - if (isString$1(pattern)) { - // If it's a string, we need to escape it - // Taken from: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions - sources.push(pattern.replace(/([.*+?^=!:${}()|\[\]\/\\])/g, '\\$1')); - } else if (pattern && pattern.source) { - // If it's a regexp already, we want to extract the source - sources.push(pattern.source); - } // Intentionally skip other cases +function keepOriginalCallback(original, callback) { + return isFunction(callback) + ? function(data) { + return callback(data, original); + } + : callback; +} - } +// First, check for JSON support +// If there is no JSON, we no-op the core features of Raven +// since JSON is required to encode the payload +function Raven() { + this._hasJSON = !!(typeof JSON === 'object' && JSON.stringify); + // Raven can run in contexts where there's no document (react-native) + this._hasDocument = !isUndefined(_document); + this._hasNavigator = !isUndefined(_navigator); + this._lastCapturedException = null; + this._lastData = null; + this._lastEventId = null; + this._globalServer = null; + this._globalKey = null; + this._globalProject = null; + this._globalContext = {}; + this._globalOptions = { + // SENTRY_RELEASE can be injected by https://github.com/getsentry/sentry-webpack-plugin + release: _window.SENTRY_RELEASE && _window.SENTRY_RELEASE.id, + logger: 'javascript', + ignoreErrors: [], + ignoreUrls: [], + whitelistUrls: [], + includePaths: [], + headers: null, + collectWindowErrors: true, + captureUnhandledRejections: true, + maxMessageLength: 0, + // By default, truncates URL values to 250 chars + maxUrlLength: 250, + stackTraceLimit: 50, + autoBreadcrumbs: true, + instrument: true, + sampleRate: 1, + sanitizeKeys: [] + }; + this._fetchDefaults = { + method: 'POST', + keepalive: true, + // Despite all stars in the sky saying that Edge supports old draft syntax, aka 'never', 'always', 'origin' and 'default + // https://caniuse.com/#feat=referrer-policy + // It doesn't. And it throw exception instead of ignoring this parameter... + // REF: https://github.com/getsentry/raven-js/issues/1233 + referrerPolicy: supportsReferrerPolicy() ? 'origin' : '' + }; + this._ignoreOnError = 0; + this._isRavenInstalled = false; + this._originalErrorStackTraceLimit = Error.stackTraceLimit; + // capture references to window.console *and* all its methods first + // before the console plugin has a chance to monkey patch + this._originalConsole = _window.console || {}; + this._originalConsoleMethods = {}; + this._plugins = []; + this._startTime = now(); + this._wrappedBuiltIns = []; + this._breadcrumbs = []; + this._lastCapturedEvent = null; + this._keypressTimeout; + this._location = _window.location; + this._lastHref = this._location && this._location.href; + this._resetBackoff(); - return new RegExp(sources.join('|'), 'i'); + // eslint-disable-next-line guard-for-in + for (var method in this._originalConsole) { + this._originalConsoleMethods[method] = this._originalConsole[method]; + } } -function urlencode$1(o) { - var pairs = []; - each$1(o, function (key, value) { - pairs.push(encodeURIComponent(key) + '=' + encodeURIComponent(value)); - }); - return pairs.join('&'); -} // borrowed from https://tools.ietf.org/html/rfc3986#appendix-B -// intentionally using regex and not href parsing trick because React Native and other -// environments where DOM might not be available +/* + * The core Raven singleton + * + * @this {Raven} + */ +Raven.prototype = { + // Hardcode version string so that raven source can be loaded directly via + // webpack (using a build step causes webpack #1617). Grunt verifies that + // this value matches package.json during build. + // See: https://github.com/getsentry/raven-js/issues/465 + VERSION: '3.24.2', -function parseUrl$1(url) { - if (typeof url !== 'string') return {}; - var match = url.match(/^(([^:\/?#]+):)?(\/\/([^\/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?$/); // coerce to undefined values to empty string so we don't get 'undefined' + debug: false, - var query = match[6] || ''; - var fragment = match[8] || ''; - return { - protocol: match[2], - host: match[4], - path: match[5], - relative: match[5] + query + fragment // everything minus origin + TraceKit: TraceKit, // alias to TraceKit - }; -} + /* + * Configure Raven with a DSN and extra options + * + * @param {string} dsn The public Sentry DSN + * @param {object} options Set of global options [optional] + * @return {Raven} + */ + config: function(dsn, options) { + var self = this; -function uuid4$1() { - var crypto = _window$3.crypto || _window$3.msCrypto; + if (self._globalServer) { + this._logDebug('error', 'Error: Raven has already been configured'); + return self; + } + if (!dsn) return self; - if (!isUndefined$1(crypto) && crypto.getRandomValues) { - // Use window.crypto API if available - // eslint-disable-next-line no-undef - var arr = new Uint16Array(8); - crypto.getRandomValues(arr); // set 4 in byte 7 + var globalOptions = self._globalOptions; - arr[3] = arr[3] & 0xfff | 0x4000; // set 2 most significant bits of byte 9 to '10' + // merge in options + if (options) { + each(options, function(key, value) { + // tags and extra are special and need to be put into context + if (key === 'tags' || key === 'extra' || key === 'user') { + self._globalContext[key] = value; + } else { + globalOptions[key] = value; + } + }); + } - arr[4] = arr[4] & 0x3fff | 0x8000; + self.setDSN(dsn); - var pad = function pad(num) { - var v = num.toString(16); + // "Script error." is hard coded into browsers for errors that it can't read. + // this is the result of a script being pulled in from an external domain and CORS. + globalOptions.ignoreErrors.push(/^Script error\.?$/); + globalOptions.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/); - while (v.length < 4) { - v = '0' + v; - } + // join regexp rules into one big rule + globalOptions.ignoreErrors = joinRegExp(globalOptions.ignoreErrors); + globalOptions.ignoreUrls = globalOptions.ignoreUrls.length + ? joinRegExp(globalOptions.ignoreUrls) + : false; + globalOptions.whitelistUrls = globalOptions.whitelistUrls.length + ? joinRegExp(globalOptions.whitelistUrls) + : false; + globalOptions.includePaths = joinRegExp(globalOptions.includePaths); + globalOptions.maxBreadcrumbs = Math.max( + 0, + Math.min(globalOptions.maxBreadcrumbs || 100, 100) + ); // default and hard limit is 100 - return v; + var autoBreadcrumbDefaults = { + xhr: true, + console: true, + dom: true, + location: true, + sentry: true }; - return pad(arr[0]) + pad(arr[1]) + pad(arr[2]) + pad(arr[3]) + pad(arr[4]) + pad(arr[5]) + pad(arr[6]) + pad(arr[7]); - } else { - // http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/2117523#2117523 - return 'xxxxxxxxxxxx4xxxyxxxxxxxxxxxxxxx'.replace(/[xy]/g, function (c) { - var r = Math.random() * 16 | 0, - v = c === 'x' ? r : r & 0x3 | 0x8; - return v.toString(16); - }); - } -} -/** - * Given a child DOM element, returns a query-selector statement describing that - * and its ancestors - * e.g. [HTMLElement] => body > div > input#foo.btn[name=baz] - * @param elem - * @returns {string} - */ - - -function htmlTreeAsString$1(elem) { - /* eslint no-extra-parens:0*/ - var MAX_TRAVERSE_HEIGHT = 5, - MAX_OUTPUT_LEN = 80, - out = [], - height = 0, - len = 0, - separator = ' > ', - sepLength = separator.length, - nextStr; + var autoBreadcrumbs = globalOptions.autoBreadcrumbs; + if ({}.toString.call(autoBreadcrumbs) === '[object Object]') { + autoBreadcrumbs = objectMerge(autoBreadcrumbDefaults, autoBreadcrumbs); + } else if (autoBreadcrumbs !== false) { + autoBreadcrumbs = autoBreadcrumbDefaults; + } + globalOptions.autoBreadcrumbs = autoBreadcrumbs; - while (elem && height++ < MAX_TRAVERSE_HEIGHT) { - nextStr = htmlElementAsString(elem); // bail out if - // - nextStr is the 'html' element - // - the length of the string that would be created exceeds MAX_OUTPUT_LEN - // (ignore this limit if we are on the first iteration) + var instrumentDefaults = { + tryCatch: true + }; - if (nextStr === 'html' || height > 1 && len + out.length * sepLength + nextStr.length >= MAX_OUTPUT_LEN) { - break; + var instrument = globalOptions.instrument; + if ({}.toString.call(instrument) === '[object Object]') { + instrument = objectMerge(instrumentDefaults, instrument); + } else if (instrument !== false) { + instrument = instrumentDefaults; } + globalOptions.instrument = instrument; - out.push(nextStr); - len += nextStr.length; - elem = elem.parentNode; - } - - return out.reverse().join(separator); -} -/** - * Returns a simple, query-selector representation of a DOM element - * e.g. [HTMLElement] => input#foo.btn[name=baz] - * @param HTMLElement - * @returns {string} - */ + TraceKit.collectWindowErrors = !!globalOptions.collectWindowErrors; + // return for chaining + return self; + }, -function htmlElementAsString(elem) { - var out = [], - className, - classes, - key, - attr, - i; + /* + * Installs a global window.onerror error handler + * to capture and report uncaught exceptions. + * At this point, install() is required to be called due + * to the way TraceKit is set up. + * + * @return {Raven} + */ + install: function() { + var self = this; + if (self.isSetup() && !self._isRavenInstalled) { + TraceKit.report.subscribe(function() { + self._handleOnErrorStackInfo.apply(self, arguments); + }); - if (!elem || !elem.tagName) { - return ''; - } + if (self._globalOptions.captureUnhandledRejections) { + self._attachPromiseRejectionHandler(); + } - out.push(elem.tagName.toLowerCase()); + self._patchFunctionToString(); - if (elem.id) { - out.push('#' + elem.id); - } + if (self._globalOptions.instrument && self._globalOptions.instrument.tryCatch) { + self._instrumentTryCatch(); + } - className = elem.className; + if (self._globalOptions.autoBreadcrumbs) self._instrumentBreadcrumbs(); - if (className && isString$1(className)) { - classes = className.split(/\s+/); + // Install all of the plugins + self._drainPlugins(); - for (i = 0; i < classes.length; i++) { - out.push('.' + classes[i]); + self._isRavenInstalled = true; } - } - - var attrWhitelist = ['type', 'name', 'title', 'alt']; - for (i = 0; i < attrWhitelist.length; i++) { - key = attrWhitelist[i]; - attr = elem.getAttribute(key); + Error.stackTraceLimit = self._globalOptions.stackTraceLimit; + return this; + }, - if (attr) { - out.push('[' + key + '="' + attr + '"]'); - } - } + /* + * Set the DSN (can be called multiple time unlike config) + * + * @param {string} dsn The public Sentry DSN + */ + setDSN: function(dsn) { + var self = this, + uri = self._parseDSN(dsn), + lastSlash = uri.path.lastIndexOf('/'), + path = uri.path.substr(1, lastSlash); - return out.join(''); -} -/** - * Returns true if either a OR b is truthy, but not both - */ + self._dsn = dsn; + self._globalKey = uri.user; + self._globalSecret = uri.pass && uri.pass.substr(1); + self._globalProject = uri.path.substr(lastSlash + 1); + self._globalServer = self._getGlobalServer(uri); -function isOnlyOneTruthy(a, b) { - return !!(!!a ^ !!b); -} -/** - * Returns true if both parameters are undefined - */ + self._globalEndpoint = + self._globalServer + '/' + path + 'api/' + self._globalProject + '/store/'; + // Reset backoff state since we may be pointing at a + // new project/server + this._resetBackoff(); + }, -function isBothUndefined(a, b) { - return isUndefined$1(a) && isUndefined$1(b); -} -/** - * Returns true if the two input exception interfaces have the same content - */ + /* + * Wrap code within a context so Raven can capture errors + * reliably across domains that is executed immediately. + * + * @param {object} options A specific set of options for this context [optional] + * @param {function} func The callback to be immediately executed within the context + * @param {array} args An array of arguments to be called with the callback [optional] + */ + context: function(options, func, args) { + if (isFunction(options)) { + args = func || []; + func = options; + options = undefined; + } + return this.wrap(options, func).apply(this, args); + }, -function isSameException$1(ex1, ex2) { - if (isOnlyOneTruthy(ex1, ex2)) return false; - ex1 = ex1.values[0]; - ex2 = ex2.values[0]; - if (ex1.type !== ex2.type || ex1.value !== ex2.value) return false; // in case both stacktraces are undefined, we can't decide so default to false - - if (isBothUndefined(ex1.stacktrace, ex2.stacktrace)) return false; - return isSameStacktrace$1(ex1.stacktrace, ex2.stacktrace); -} -/** - * Returns true if the two input stack trace interfaces have the same content - */ - - -function isSameStacktrace$1(stack1, stack2) { - if (isOnlyOneTruthy(stack1, stack2)) return false; - var frames1 = stack1.frames; - var frames2 = stack2.frames; // Exit early if frame count differs - - if (frames1.length !== frames2.length) return false; // Iterate through every frame; bail out if anything differs - - var a, b; - - for (var i = 0; i < frames1.length; i++) { - a = frames1[i]; - b = frames2[i]; - if (a.filename !== b.filename || a.lineno !== b.lineno || a.colno !== b.colno || a['function'] !== b['function']) return false; - } - - return true; -} -/** - * Polyfill a method - * @param obj object e.g. `document` - * @param name method name present on object e.g. `addEventListener` - * @param replacement replacement function - * @param track {optional} record instrumentation to an array - */ - - -function fill$1(obj, name, replacement, track) { - var orig = obj[name]; - obj[name] = replacement(orig); - obj[name].__raven__ = true; - obj[name].__orig__ = orig; - - if (track) { - track.push([obj, name, orig]); - } -} -/** - * Join values in array - * @param input array of values to be joined together - * @param delimiter string to be placed in-between values - * @returns {string} - */ + /* + * Wrap code within a context and returns back a new function to be executed + * + * @param {object} options A specific set of options for this context [optional] + * @param {function} func The function to be wrapped in a new context + * @param {function} func A function to call before the try/catch wrapper [optional, private] + * @return {function} The newly wrapped functions with a context + */ + wrap: function(options, func, _before) { + var self = this; + // 1 argument has been passed, and it's not a function + // so just return it + if (isUndefined(func) && !isFunction(options)) { + return options; + } + // options is optional + if (isFunction(options)) { + func = options; + options = undefined; + } -function safeJoin(input, delimiter) { - if (!isArray$1(input)) return ''; - var output = []; + // At this point, we've passed along 2 arguments, and the second one + // is not a function either, so we'll just return the second argument. + if (!isFunction(func)) { + return func; + } - for (var i = 0; i < input.length; i++) { + // We don't wanna wrap it twice! try { - output.push(String(input[i])); + if (func.__raven__) { + return func; + } + + // If this has already been wrapped in the past, return that + if (func.__raven_wrapper__) { + return func.__raven_wrapper__; + } } catch (e) { - output.push('[value cannot be serialized]'); + // Just accessing custom props in some Selenium environments + // can cause a "Permission denied" exception (see raven-js#495). + // Bail on wrapping and return the function as-is (defers to window.onerror). + return func; } - } - - return output.join(delimiter); -} -var utils = { - isObject: isObject$1, - isError: isError$1, - isErrorEvent: isErrorEvent$1, - isUndefined: isUndefined$1, - isFunction: isFunction$1, - isPlainObject: isPlainObject, - isString: isString$1, - isArray: isArray$1, - isEmptyObject: isEmptyObject$1, - supportsErrorEvent: supportsErrorEvent, - supportsFetch: supportsFetch$1, - wrappedCallback: wrappedCallback, - each: each$1, - objectMerge: objectMerge$1, - truncate: truncate$1, - objectFrozen: objectFrozen$1, - hasKey: hasKey$1, - joinRegExp: joinRegExp$1, - urlencode: urlencode$1, - uuid4: uuid4$1, - htmlTreeAsString: htmlTreeAsString$1, - htmlElementAsString: htmlElementAsString, - isSameException: isSameException$1, - isSameStacktrace: isSameStacktrace$1, - parseUrl: parseUrl$1, - fill: fill$1, - safeJoin: safeJoin -}; + function wrapped() { + var args = [], + i = arguments.length, + deep = !options || (options && options.deep !== false); -/* - TraceKit - Cross brower stack traces + if (_before && isFunction(_before)) { + _before.apply(this, arguments); + } - This was originally forked from github.com/occ/TraceKit, but has since been - largely re-written and is now maintained as part of raven-js. Tests for - this are in test/vendor. + // Recursively wrap all of a function's arguments that are + // functions themselves. + while (i--) args[i] = deep ? self.wrap(options, arguments[i]) : arguments[i]; - MIT license -*/ + try { + // Attempt to invoke user-land function + // NOTE: If you are a Sentry user, and you are seeing this stack frame, it + // means Raven caught an error invoking your application code. This is + // expected behavior and NOT indicative of a bug with Raven.js. + return func.apply(this, args); + } catch (e) { + self._ignoreNextOnError(); + self.captureException(e, options); + throw e; + } + } -var TraceKit = { - collectWindowErrors: true, - debug: false -}; // This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) + // copy over properties of the old function + for (var property in func) { + if (hasKey(func, property)) { + wrapped[property] = func[property]; + } + } + wrapped.prototype = func.prototype; -var _window$2 = typeof window !== 'undefined' ? window : typeof commonjsGlobal !== 'undefined' ? commonjsGlobal : typeof self !== 'undefined' ? self : {}; // global reference to slice + func.__raven_wrapper__ = wrapped; + // Signal that this function has been wrapped/filled already + // for both debugging and to prevent it to being wrapped/filled twice + wrapped.__raven__ = true; + wrapped.__orig__ = func; + return wrapped; + }, -var _slice = [].slice; -var UNKNOWN_FUNCTION = '?'; // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error#Error_types + /** + * Uninstalls the global error handler. + * + * @return {Raven} + */ + uninstall: function() { + TraceKit.report.uninstall(); -var ERROR_TYPES_RE = /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/; + this._detachPromiseRejectionHandler(); + this._unpatchFunctionToString(); + this._restoreBuiltIns(); + this._restoreConsole(); -function getLocationHref() { - if (typeof document === 'undefined' || document.location == null) return ''; - return document.location.href; -} -/** - * TraceKit.report: cross-browser processing of unhandled exceptions - * - * Syntax: - * TraceKit.report.subscribe(function(stackInfo) { ... }) - * TraceKit.report.unsubscribe(function(stackInfo) { ... }) - * TraceKit.report(exception) - * try { ...code... } catch(ex) { TraceKit.report(ex); } - * - * Supports: - * - Firefox: full stack trace with line numbers, plus column number - * on top frame; column number is not guaranteed - * - Opera: full stack trace with line and column numbers - * - Chrome: full stack trace with line and column numbers - * - Safari: line and column number for the top frame only; some frames - * may be missing, and column number is not guaranteed - * - IE: line and column number for the top frame only; some frames - * may be missing, and column number is not guaranteed - * - * In theory, TraceKit should work on all of the following versions: - * - IE5.5+ (only 8.0 tested) - * - Firefox 0.9+ (only 3.5+ tested) - * - Opera 7+ (only 10.50 tested; versions 9 and earlier may require - * Exceptions Have Stacktrace to be enabled in opera:config) - * - Safari 3+ (only 4+ tested) - * - Chrome 1+ (only 5+ tested) - * - Konqueror 3.5+ (untested) - * - * Requires TraceKit.computeStackTrace. - * - * Tries to catch all unhandled exceptions and report them to the - * subscribed handlers. Please note that TraceKit.report will rethrow the - * exception. This is REQUIRED in order to get a useful stack trace in IE. - * If the exception does not reach the top of the browser, you will only - * get a stack trace from the point where TraceKit.report was called. - * - * Handlers receive a stackInfo object as described in the - * TraceKit.computeStackTrace docs. - */ + Error.stackTraceLimit = this._originalErrorStackTraceLimit; + this._isRavenInstalled = false; + return this; + }, -TraceKit.report = function reportModuleWrapper() { - var handlers = [], - lastArgs = null, - lastException = null, - lastExceptionStack = null; /** - * Add a crash handler. - * @param {Function} handler - */ + * Callback used for `unhandledrejection` event + * + * @param {PromiseRejectionEvent} event An object containing + * promise: the Promise that was rejected + * reason: the value with which the Promise was rejected + * @return void + */ + _promiseRejectionHandler: function(event) { + this._logDebug('debug', 'Raven caught unhandled promise rejection:', event); + this.captureException(event.reason, { + extra: { + unhandledPromiseRejection: true + } + }); + }, - function subscribe(handler) { - installGlobalHandler(); - handlers.push(handler); - } /** - * Remove a crash handler. - * @param {Function} handler - */ + * Installs the global promise rejection handler. + * + * @return {raven} + */ + _attachPromiseRejectionHandler: function() { + this._promiseRejectionHandler = this._promiseRejectionHandler.bind(this); + _window.addEventListener && + _window.addEventListener('unhandledrejection', this._promiseRejectionHandler); + return this; + }, + /** + * Uninstalls the global promise rejection handler. + * + * @return {raven} + */ + _detachPromiseRejectionHandler: function() { + _window.removeEventListener && + _window.removeEventListener('unhandledrejection', this._promiseRejectionHandler); + return this; + }, - function unsubscribe(handler) { - for (var i = handlers.length - 1; i >= 0; --i) { - if (handlers[i] === handler) { - handlers.splice(i, 1); + /** + * Manually capture an exception and send it over to Sentry + * + * @param {error} ex An exception to be logged + * @param {object} options A specific set of options for this error [optional] + * @return {Raven} + */ + captureException: function(ex, options) { + options = objectMerge({trimHeadFrames: 0}, options ? options : {}); + + if (isErrorEvent(ex) && ex.error) { + // If it is an ErrorEvent with `error` property, extract it to get actual Error + ex = ex.error; + } else if (isError(ex)) { + // we have a real Error object + ex = ex; + } else if (isPlainObject(ex)) { + // If it is plain Object, serialize it manually and extract options + // This will allow us to group events based on top-level keys + // which is much better than creating new group when any key/value change + options = this._getCaptureExceptionOptionsFromPlainObject(options, ex); + ex = new Error(options.message); + } else { + // If none of previous checks were valid, then it means that + // it's not a plain Object + // it's not a valid ErrorEvent (one with an error property) + // it's not an Error + // So bail out and capture it as a simple message: + return this.captureMessage( + ex, + objectMerge(options, { + stacktrace: true, // if we fall back to captureMessage, default to attempting a new trace + trimHeadFrames: options.trimHeadFrames + 1 + }) + ); + } + + // Store the raw exception object for potential debugging and introspection + this._lastCapturedException = ex; + + // TraceKit.report will re-raise any exception passed to it, + // which means you have to wrap it in try/catch. Instead, we + // can wrap it here and only re-raise if TraceKit.report + // raises an exception different from the one we asked to + // report on. + try { + var stack = TraceKit.computeStackTrace(ex); + this._handleStackInfo(stack, options); + } catch (ex1) { + if (ex !== ex1) { + throw ex1; } } - } - /** - * Remove all crash handlers. - */ - - function unsubscribeAll() { - uninstallGlobalHandler(); - handlers = []; - } - /** - * Dispatch stack information to all handlers. - * @param {Object.} stack - */ + return this; + }, + _getCaptureExceptionOptionsFromPlainObject: function(currentOptions, ex) { + var exKeys = Object.keys(ex).sort(); + var options = objectMerge(currentOptions, { + message: + 'Non-Error exception captured with keys: ' + serializeKeysForMessage(exKeys), + fingerprint: [md5(exKeys)], + extra: currentOptions.extra || {} + }); + options.extra.__serialized__ = serializeException(ex); - function notifyHandlers(stack, isWindowError) { - var exception = null; + return options; + }, - if (isWindowError && !TraceKit.collectWindowErrors) { + /* + * Manually send a message to Sentry + * + * @param {string} msg A plain message to be captured in Sentry + * @param {object} options A specific set of options for this message [optional] + * @return {Raven} + */ + captureMessage: function(msg, options) { + // config() automagically converts ignoreErrors from a list to a RegExp so we need to test for an + // early call; we'll error on the side of logging anything called before configuration since it's + // probably something you should see: + if ( + !!this._globalOptions.ignoreErrors.test && + this._globalOptions.ignoreErrors.test(msg) + ) { return; } - for (var i in handlers) { - if (handlers.hasOwnProperty(i)) { - try { - handlers[i].apply(null, [stack].concat(_slice.call(arguments, 2))); - } catch (inner) { - exception = inner; - } - } - } - - if (exception) { - throw exception; - } - } - - var _oldOnerrorHandler, _onErrorHandlerInstalled; - /** - * Ensures all global unhandled exceptions are recorded. - * Supported by Gecko and IE. - * @param {string} msg Error message. - * @param {string} url URL of script that generated the exception. - * @param {(number|string)} lineNo The line number at which the error - * occurred. - * @param {?(number|string)} colNo The column number at which the error - * occurred. - * @param {?Error} ex The actual Error object. - */ - + options = options || {}; + msg = msg + ''; // Make sure it's actually a string - function traceKitWindowOnError(msg, url, lineNo, colNo, ex) { - var stack = null; // If 'ex' is ErrorEvent, get real Error from inside + var data = objectMerge( + { + message: msg + }, + options + ); - var exception = utils.isErrorEvent(ex) ? ex.error : ex; // If 'msg' is ErrorEvent, get real message from inside + var ex; + // Generate a "synthetic" stack trace from this point. + // NOTE: If you are a Sentry user, and you are seeing this stack frame, it is NOT indicative + // of a bug with Raven.js. Sentry generates synthetic traces either by configuration, + // or if it catches a thrown object without a "stack" property. + try { + throw new Error(msg); + } catch (ex1) { + ex = ex1; + } - var message = utils.isErrorEvent(msg) ? msg.message : msg; + // null exception name so `Error` isn't prefixed to msg + ex.name = null; + var stack = TraceKit.computeStackTrace(ex); - if (lastExceptionStack) { - TraceKit.computeStackTrace.augmentStackTraceWithInitialElement(lastExceptionStack, url, lineNo, message); - processLastException(); - } else if (exception && utils.isError(exception)) { - // non-string `exception` arg; attempt to extract stack trace - // New chrome and blink send along a real error object - // Let's just report that like a normal error. - // See: https://mikewest.org/2013/08/debugging-runtime-errors-with-window-onerror - stack = TraceKit.computeStackTrace(exception); - notifyHandlers(stack, true); - } else { - var location = { - url: url, - line: lineNo, - column: colNo - }; - var name = undefined; - var groups; + // stack[0] is `throw new Error(msg)` call itself, we are interested in the frame that was just before that, stack[1] + var initialCall = isArray(stack.stack) && stack.stack[1]; - if ({}.toString.call(message) === '[object String]') { - var groups = message.match(ERROR_TYPES_RE); + // if stack[1] is `Raven.captureException`, it means that someone passed a string to it and we redirected that call + // to be handled by `captureMessage`, thus `initialCall` is the 3rd one, not 2nd + // initialCall => captureException(string) => captureMessage(string) + if (initialCall && initialCall.func === 'Raven.captureException') { + initialCall = stack.stack[2]; + } - if (groups) { - name = groups[1]; - message = groups[2]; - } - } + var fileurl = (initialCall && initialCall.url) || ''; - location.func = UNKNOWN_FUNCTION; - stack = { - name: name, - message: message, - url: getLocationHref(), - stack: [location] - }; - notifyHandlers(stack, true); + if ( + !!this._globalOptions.ignoreUrls.test && + this._globalOptions.ignoreUrls.test(fileurl) + ) { + return; } - if (_oldOnerrorHandler) { - return _oldOnerrorHandler.apply(this, arguments); + if ( + !!this._globalOptions.whitelistUrls.test && + !this._globalOptions.whitelistUrls.test(fileurl) + ) { + return; } - return false; - } + if (this._globalOptions.stacktrace || (options && options.stacktrace)) { + // fingerprint on msg, not stack trace (legacy behavior, could be revisited) + data.fingerprint = data.fingerprint == null ? msg : data.fingerprint; - function installGlobalHandler() { - if (_onErrorHandlerInstalled) { - return; - } + options = objectMerge( + { + trimHeadFrames: 0 + }, + options + ); + // Since we know this is a synthetic trace, the top frame (this function call) + // MUST be from Raven.js, so mark it for trimming + // We add to the trim counter so that callers can choose to trim extra frames, such + // as utility functions. + options.trimHeadFrames += 1; - _oldOnerrorHandler = _window$2.onerror; - _window$2.onerror = traceKitWindowOnError; - _onErrorHandlerInstalled = true; - } + var frames = this._prepareFrames(stack, options); + data.stacktrace = { + // Sentry expects frames oldest to newest + frames: frames.reverse() + }; + } - function uninstallGlobalHandler() { - if (!_onErrorHandlerInstalled) { - return; + // Make sure that fingerprint is always wrapped in an array + if (data.fingerprint) { + data.fingerprint = isArray(data.fingerprint) + ? data.fingerprint + : [data.fingerprint]; } - _window$2.onerror = _oldOnerrorHandler; - _onErrorHandlerInstalled = false; - _oldOnerrorHandler = undefined; - } + // Fire away! + this._send(data); - function processLastException() { - var _lastExceptionStack = lastExceptionStack, - _lastArgs = lastArgs; - lastArgs = null; - lastExceptionStack = null; - lastException = null; - notifyHandlers.apply(null, [_lastExceptionStack, false].concat(_lastArgs)); - } - /** - * Reports an unhandled Error to TraceKit. - * @param {Error} ex - * @param {?boolean} rethrow If false, do not re-throw the exception. - * Only used for window.onerror to not cause an infinite loop of - * rethrowing. - */ + return this; + }, + captureBreadcrumb: function(obj) { + var crumb = objectMerge( + { + timestamp: now() / 1000 + }, + obj + ); - function report(ex, rethrow) { - var args = _slice.call(arguments, 1); + if (isFunction(this._globalOptions.breadcrumbCallback)) { + var result = this._globalOptions.breadcrumbCallback(crumb); - if (lastExceptionStack) { - if (lastException === ex) { - return; // already caught by an inner catch block, ignore - } else { - processLastException(); + if (isObject(result) && !isEmptyObject(result)) { + crumb = result; + } else if (result === false) { + return this; } } - var stack = TraceKit.computeStackTrace(ex); - lastExceptionStack = stack; - lastException = ex; - lastArgs = args; // If the stack trace is incomplete, wait for 2 seconds for - // slow slow IE to see if onerror occurs or not before reporting - // this exception; otherwise, we will end up with an incomplete - // stack trace + this._breadcrumbs.push(crumb); + if (this._breadcrumbs.length > this._globalOptions.maxBreadcrumbs) { + this._breadcrumbs.shift(); + } + return this; + }, - setTimeout(function () { - if (lastException === ex) { - processLastException(); - } - }, stack.incomplete ? 2000 : 0); + addPlugin: function(plugin /*arg1, arg2, ... argN*/) { + var pluginArgs = [].slice.call(arguments, 1); - if (rethrow !== false) { - throw ex; // re-throw to propagate to the top level (and cause window.onerror) + this._plugins.push([plugin, pluginArgs]); + if (this._isRavenInstalled) { + this._drainPlugins(); } - } - report.subscribe = subscribe; - report.unsubscribe = unsubscribe; - report.uninstall = unsubscribeAll; - return report; -}(); -/** - * TraceKit.computeStackTrace: cross-browser stack traces in JavaScript - * - * Syntax: - * s = TraceKit.computeStackTrace(exception) // consider using TraceKit.report instead (see below) - * Returns: - * s.name - exception name - * s.message - exception message - * s.stack[i].url - JavaScript or HTML file URL - * s.stack[i].func - function name, or empty for anonymous functions (if guessing did not work) - * s.stack[i].args - arguments passed to the function, if known - * s.stack[i].line - line number, if known - * s.stack[i].column - column number, if known - * - * Supports: - * - Firefox: full stack trace with line numbers and unreliable column - * number on top frame - * - Opera 10: full stack trace with line and column numbers - * - Opera 9-: full stack trace with line numbers - * - Chrome: full stack trace with line and column numbers - * - Safari: line and column number for the topmost stacktrace element - * only - * - IE: no line numbers whatsoever - * - * Tries to guess names of anonymous functions by looking for assignments - * in the source code. In IE and Safari, we have to guess source file names - * by searching for function bodies inside all page scripts. This will not - * work for scripts that are loaded cross-domain. - * Here be dragons: some function names may be guessed incorrectly, and - * duplicate functions may be mismatched. - * - * TraceKit.computeStackTrace should only be used for tracing purposes. - * Logging of unhandled exceptions should be done with TraceKit.report, - * which builds on top of TraceKit.computeStackTrace and provides better - * IE support by utilizing the window.onerror event to retrieve information - * about the top of the stack. - * - * Note: In IE and Safari, no stack trace is recorded on the Error object, - * so computeStackTrace instead walks its *own* chain of callers. - * This means that: - * * in Safari, some methods may be missing from the stack trace; - * * in IE, the topmost function in the stack trace will always be the - * caller of computeStackTrace. - * - * This is okay for tracing (because you are likely to be calling - * computeStackTrace from the function you want to be the topmost element - * of the stack trace anyway), but not okay for logging unhandled - * exceptions (because your catch block will likely be far away from the - * inner function that actually caused the exception). - * - */ + return this; + }, + /* + * Set/clear a user to be sent along with the payload. + * + * @param {object} user An object representing user data [optional] + * @return {Raven} + */ + setUserContext: function(user) { + // Intentionally do not merge here since that's an unexpected behavior. + this._globalContext.user = user; -TraceKit.computeStackTrace = function computeStackTraceWrapper() { - // Contents of Exception in various browsers. - // - // SAFARI: - // ex.message = Can't find variable: qq - // ex.line = 59 - // ex.sourceId = 580238192 - // ex.sourceURL = http://... - // ex.expressionBeginOffset = 96 - // ex.expressionCaretOffset = 98 - // ex.expressionEndOffset = 98 - // ex.name = ReferenceError - // - // FIREFOX: - // ex.message = qq is not defined - // ex.fileName = http://... - // ex.lineNumber = 59 - // ex.columnNumber = 69 - // ex.stack = ...stack trace... (see the example below) - // ex.name = ReferenceError - // - // CHROME: - // ex.message = qq is not defined - // ex.name = ReferenceError - // ex.type = not_defined - // ex.arguments = ['aa'] - // ex.stack = ...stack trace... - // - // INTERNET EXPLORER: - // ex.message = ... - // ex.name = ReferenceError - // - // OPERA: - // ex.message = ...message... (see the example below) - // ex.name = ReferenceError - // ex.opera#sourceloc = 11 (pretty much useless, duplicates the info in ex.message) - // ex.stacktrace = n/a; see 'opera:config#UserPrefs|Exceptions Have Stacktrace' + return this; + }, - /** - * Computes stack trace information from the stack property. - * Chrome and Gecko use this property. - * @param {Error} ex - * @return {?Object.} Stack trace information. + /* + * Merge extra attributes to be sent along with the payload. + * + * @param {object} extra An object representing extra data [optional] + * @return {Raven} */ - function computeStackTraceFromStackProp(ex) { - if (typeof ex.stack === 'undefined' || !ex.stack) return; - var chrome = /^\s*at (.*?) ?\(((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i, - gecko = /^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|\[native).*?|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i, - winjs = /^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i, - // Used to additionally parse URL/line/column from eval frames - geckoEval = /(\S+) line (\d+)(?: > eval line \d+)* > eval/i, - chromeEval = /\((\S*)(?::(\d+))(?::(\d+))\)/, - lines = ex.stack.split('\n'), - stack = [], - submatch, - parts, - element, - reference = /^(.*) is undefined$/.exec(ex.message); + setExtraContext: function(extra) { + this._mergeContext('extra', extra); - for (var i = 0, j = lines.length; i < j; ++i) { - if (parts = chrome.exec(lines[i])) { - var isNative = parts[2] && parts[2].indexOf('native') === 0; // start of line + return this; + }, - var isEval = parts[2] && parts[2].indexOf('eval') === 0; // start of line - - if (isEval && (submatch = chromeEval.exec(parts[2]))) { - // throw out eval line/column and use top-most line/column number - parts[2] = submatch[1]; // url - - parts[3] = submatch[2]; // line - - parts[4] = submatch[3]; // column - } + /* + * Merge tags to be sent along with the payload. + * + * @param {object} tags An object representing tags [optional] + * @return {Raven} + */ + setTagsContext: function(tags) { + this._mergeContext('tags', tags); - element = { - url: !isNative ? parts[2] : null, - func: parts[1] || UNKNOWN_FUNCTION, - args: isNative ? [parts[2]] : [], - line: parts[3] ? +parts[3] : null, - column: parts[4] ? +parts[4] : null - }; - } else if (parts = winjs.exec(lines[i])) { - element = { - url: parts[2], - func: parts[1] || UNKNOWN_FUNCTION, - args: [], - line: +parts[3], - column: parts[4] ? +parts[4] : null - }; - } else if (parts = gecko.exec(lines[i])) { - var isEval = parts[3] && parts[3].indexOf(' > eval') > -1; + return this; + }, - if (isEval && (submatch = geckoEval.exec(parts[3]))) { - // throw out eval line/column and use top-most line number - parts[3] = submatch[1]; - parts[4] = submatch[2]; - parts[5] = null; // no column when eval - } else if (i === 0 && !parts[5] && typeof ex.columnNumber !== 'undefined') { - // FireFox uses this awesome columnNumber property for its top frame - // Also note, Firefox's column number is 0-based and everything else expects 1-based, - // so adding 1 - // NOTE: this hack doesn't work if top-most frame is eval - stack[0].column = ex.columnNumber + 1; - } + /* + * Clear all of the context. + * + * @return {Raven} + */ + clearContext: function() { + this._globalContext = {}; - element = { - url: parts[3], - func: parts[1] || UNKNOWN_FUNCTION, - args: parts[2] ? parts[2].split(',') : [], - line: parts[4] ? +parts[4] : null, - column: parts[5] ? +parts[5] : null - }; - } else { - continue; - } + return this; + }, - if (!element.func && element.line) { - element.func = UNKNOWN_FUNCTION; - } + /* + * Get a copy of the current context. This cannot be mutated. + * + * @return {object} copy of context + */ + getContext: function() { + // lol javascript + return JSON.parse(stringify(this._globalContext)); + }, - stack.push(element); - } + /* + * Set environment of application + * + * @param {string} environment Typically something like 'production'. + * @return {Raven} + */ + setEnvironment: function(environment) { + this._globalOptions.environment = environment; - if (!stack.length) { - return null; - } + return this; + }, - return { - name: ex.name, - message: ex.message, - url: getLocationHref(), - stack: stack - }; - } - /** - * Adds information about the first frame to incomplete stack traces. - * Safari and IE require this to get complete data on the first frame. - * @param {Object.} stackInfo Stack trace information from - * one of the compute* methods. - * @param {string} url The URL of the script that caused an error. - * @param {(number|string)} lineNo The line number of the script that - * caused an error. - * @param {string=} message The error generated by the browser, which - * hopefully contains the name of the object that caused the error. - * @return {boolean} Whether or not the stack information was - * augmented. + /* + * Set release version of application + * + * @param {string} release Typically something like a git SHA to identify version + * @return {Raven} */ + setRelease: function(release) { + this._globalOptions.release = release; + return this; + }, - function augmentStackTraceWithInitialElement(stackInfo, url, lineNo, message) { - var initial = { - url: url, - line: lineNo - }; + /* + * Set the dataCallback option + * + * @param {function} callback The callback to run which allows the + * data blob to be mutated before sending + * @return {Raven} + */ + setDataCallback: function(callback) { + var original = this._globalOptions.dataCallback; + this._globalOptions.dataCallback = keepOriginalCallback(original, callback); + return this; + }, - if (initial.url && initial.line) { - stackInfo.incomplete = false; + /* + * Set the breadcrumbCallback option + * + * @param {function} callback The callback to run which allows filtering + * or mutating breadcrumbs + * @return {Raven} + */ + setBreadcrumbCallback: function(callback) { + var original = this._globalOptions.breadcrumbCallback; + this._globalOptions.breadcrumbCallback = keepOriginalCallback(original, callback); + return this; + }, - if (!initial.func) { - initial.func = UNKNOWN_FUNCTION; - } + /* + * Set the shouldSendCallback option + * + * @param {function} callback The callback to run which allows + * introspecting the blob before sending + * @return {Raven} + */ + setShouldSendCallback: function(callback) { + var original = this._globalOptions.shouldSendCallback; + this._globalOptions.shouldSendCallback = keepOriginalCallback(original, callback); + return this; + }, - if (stackInfo.stack.length > 0) { - if (stackInfo.stack[0].url === initial.url) { - if (stackInfo.stack[0].line === initial.line) { - return false; // already in stack trace - } else if (!stackInfo.stack[0].line && stackInfo.stack[0].func === initial.func) { - stackInfo.stack[0].line = initial.line; - return false; - } - } - } + /** + * Override the default HTTP transport mechanism that transmits data + * to the Sentry server. + * + * @param {function} transport Function invoked instead of the default + * `makeRequest` handler. + * + * @return {Raven} + */ + setTransport: function(transport) { + this._globalOptions.transport = transport; - stackInfo.stack.unshift(initial); - stackInfo.partial = true; - return true; - } else { - stackInfo.incomplete = true; - } + return this; + }, - return false; - } - /** - * Computes stack trace information by walking the arguments.caller - * chain at the time the exception occurred. This will cause earlier - * frames to be missed but is the only way to get any stack trace in - * Safari and IE. The top frame is restored by - * {@link augmentStackTraceWithInitialElement}. - * @param {Error} ex - * @return {?Object.} Stack trace information. + /* + * Get the latest raw exception that was captured by Raven. + * + * @return {error} */ + lastException: function() { + return this._lastCapturedException; + }, + /* + * Get the last event id + * + * @return {string} + */ + lastEventId: function() { + return this._lastEventId; + }, - function computeStackTraceByWalkingCallerChain(ex, depth) { - var functionName = /function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i, - stack = [], - funcs = {}, - recursion = false, - parts, - item; - - for (var curr = computeStackTraceByWalkingCallerChain.caller; curr && !recursion; curr = curr.caller) { - if (curr === computeStackTrace || curr === TraceKit.report) { - // console.log('skipping internal function'); - continue; + /* + * Determine if Raven is setup and ready to go. + * + * @return {boolean} + */ + isSetup: function() { + if (!this._hasJSON) return false; // needs JSON support + if (!this._globalServer) { + if (!this.ravenNotConfiguredError) { + this.ravenNotConfiguredError = true; + this._logDebug('error', 'Error: Raven has not been configured.'); } + return false; + } + return true; + }, - item = { - url: null, - func: UNKNOWN_FUNCTION, - line: null, - column: null - }; + afterLoad: function() { + // TODO: remove window dependence? - if (curr.name) { - item.func = curr.name; - } else if (parts = functionName.exec(curr.toString())) { - item.func = parts[1]; - } + // Attempt to initialize Raven on load + var RavenConfig = _window.RavenConfig; + if (RavenConfig) { + this.config(RavenConfig.dsn, RavenConfig.config).install(); + } + }, - if (typeof item.func === 'undefined') { - try { - item.func = parts.input.substring(0, parts.input.indexOf('{')); - } catch (e) {} - } + showReportDialog: function(options) { + if ( + !_document // doesn't work without a document (React native) + ) + return; - if (funcs['' + curr]) { - recursion = true; - } else { - funcs['' + curr] = true; - } + options = options || {}; - stack.push(item); + var lastEventId = options.eventId || this.lastEventId(); + if (!lastEventId) { + throw new RavenConfigError('Missing eventId'); } - if (depth) { - // console.log('depth is ' + depth); - // console.log('stack is ' + stack.length); - stack.splice(0, depth); + var dsn = options.dsn || this._dsn; + if (!dsn) { + throw new RavenConfigError('Missing DSN'); } - var result = { - name: ex.name, - message: ex.message, - url: getLocationHref(), - stack: stack - }; - augmentStackTraceWithInitialElement(result, ex.sourceURL || ex.fileName, ex.line || ex.lineNumber, ex.message || ex.description); - return result; - } - /** - * Computes a stack trace for an exception. - * @param {Error} ex - * @param {(string|number)=} depth - */ + var encode = encodeURIComponent; + var qs = ''; + qs += '?eventId=' + encode(lastEventId); + qs += '&dsn=' + encode(dsn); + var user = options.user || this._globalContext.user; + if (user) { + if (user.name) qs += '&name=' + encode(user.name); + if (user.email) qs += '&email=' + encode(user.email); + } - function computeStackTrace(ex, depth) { - var stack = null; - depth = depth == null ? 0 : +depth; + var globalServer = this._getGlobalServer(this._parseDSN(dsn)); - try { - stack = computeStackTraceFromStackProp(ex); + var script = _document.createElement('script'); + script.async = true; + script.src = globalServer + '/api/embed/error-page/' + qs; + (_document.head || _document.body).appendChild(script); + }, - if (stack) { - return stack; - } - } catch (e) { - if (TraceKit.debug) { - throw e; - } - } + /**** Private functions ****/ + _ignoreNextOnError: function() { + var self = this; + this._ignoreOnError += 1; + setTimeout(function() { + // onerror should trigger before setTimeout + self._ignoreOnError -= 1; + }); + }, - try { - stack = computeStackTraceByWalkingCallerChain(ex, depth + 1); + _triggerEvent: function(eventType, options) { + // NOTE: `event` is a native browser thing, so let's avoid conflicting wiht it + var evt, key; - if (stack) { - return stack; - } - } catch (e) { - if (TraceKit.debug) { - throw e; - } + if (!this._hasDocument) return; + + options = options || {}; + + eventType = 'raven' + eventType.substr(0, 1).toUpperCase() + eventType.substr(1); + + if (_document.createEvent) { + evt = _document.createEvent('HTMLEvents'); + evt.initEvent(eventType, true, true); + } else { + evt = _document.createEventObject(); + evt.eventType = eventType; } - return { - name: ex.name, - message: ex.message, - url: getLocationHref() - }; - } + for (key in options) + if (hasKey(options, key)) { + evt[key] = options[key]; + } - computeStackTrace.augmentStackTraceWithInitialElement = augmentStackTraceWithInitialElement; - computeStackTrace.computeStackTraceFromStackProp = computeStackTraceFromStackProp; - return computeStackTrace; -}(); + if (_document.createEvent) { + // IE9 if standards + _document.dispatchEvent(evt); + } else { + // IE8 regardless of Quirks or Standards + // IE9 if quirks + try { + _document.fireEvent('on' + evt.eventType.toLowerCase(), evt); + } catch (e) { + // Do nothing + } + } + }, -var tracekit = TraceKit; + /** + * Wraps addEventListener to capture UI breadcrumbs + * @param evtName the event name (e.g. "click") + * @returns {Function} + * @private + */ + _breadcrumbEventHandler: function(evtName) { + var self = this; + return function(evt) { + // reset keypress timeout; e.g. triggering a 'click' after + // a 'keypress' will reset the keypress debounce so that a new + // set of keypresses can be recorded + self._keypressTimeout = null; -var stringify_1 = createCommonjsModule(function (module, exports) { - /* - json-stringify-safe - Like JSON.stringify, but doesn't throw on circular references. - - Originally forked from https://github.com/isaacs/json-stringify-safe - version 5.0.1 on 3/8/2017 and modified to handle Errors serialization - and IE8 compatibility. Tests for this are in test/vendor. - - ISC license: https://github.com/isaacs/json-stringify-safe/blob/master/LICENSE - */ - exports = module.exports = stringify; - exports.getSerialize = serializer; - - function indexOf(haystack, needle) { - for (var i = 0; i < haystack.length; ++i) { - if (haystack[i] === needle) return i; - } - - return -1; - } + // It's possible this handler might trigger multiple times for the same + // event (e.g. event propagation through node ancestors). Ignore if we've + // already captured the event. + if (self._lastCapturedEvent === evt) return; - function stringify(obj, replacer, spaces, cycleReplacer) { - return JSON.stringify(obj, serializer(replacer, cycleReplacer), spaces); - } // https://github.com/ftlabs/js-abbreviate/blob/fa709e5f139e7770a71827b1893f22418097fbda/index.js#L95-L106 + self._lastCapturedEvent = evt; + // try/catch both: + // - accessing evt.target (see getsentry/raven-js#838, #768) + // - `htmlTreeAsString` because it's complex, and just accessing the DOM incorrectly + // can throw an exception in some circumstances. + var target; + try { + target = htmlTreeAsString(evt.target); + } catch (e) { + target = ''; + } - function stringifyError(value) { - var err = { - // These properties are implemented as magical getters and don't show up in for in - stack: value.stack, - message: value.message, - name: value.name + self.captureBreadcrumb({ + category: 'ui.' + evtName, // e.g. ui.click, ui.input + message: target + }); }; + }, + + /** + * Wraps addEventListener to capture keypress UI events + * @returns {Function} + * @private + */ + _keypressEventHandler: function() { + var self = this, + debounceDuration = 1000; // milliseconds - for (var i in value) { - if (Object.prototype.hasOwnProperty.call(value, i)) { - err[i] = value[i]; + // TODO: if somehow user switches keypress target before + // debounce timeout is triggered, we will only capture + // a single breadcrumb from the FIRST target (acceptable?) + return function(evt) { + var target; + try { + target = evt.target; + } catch (e) { + // just accessing event properties can throw an exception in some rare circumstances + // see: https://github.com/getsentry/raven-js/issues/838 + return; } - } + var tagName = target && target.tagName; - return err; - } + // only consider keypress events on actual input elements + // this will disregard keypresses targeting body (e.g. tabbing + // through elements, hotkeys, etc) + if ( + !tagName || + (tagName !== 'INPUT' && tagName !== 'TEXTAREA' && !target.isContentEditable) + ) + return; - function serializer(replacer, cycleReplacer) { - var stack = []; - var keys = []; + // record first keypress in a series, but ignore subsequent + // keypresses until debounce clears + var timeout = self._keypressTimeout; + if (!timeout) { + self._breadcrumbEventHandler('input')(evt); + } + clearTimeout(timeout); + self._keypressTimeout = setTimeout(function() { + self._keypressTimeout = null; + }, debounceDuration); + }; + }, - if (cycleReplacer == null) { - cycleReplacer = function cycleReplacer(key, value) { - if (stack[0] === value) { - return '[Circular ~]'; - } + /** + * Captures a breadcrumb of type "navigation", normalizing input URLs + * @param to the originating URL + * @param from the target URL + * @private + */ + _captureUrlChange: function(from, to) { + var parsedLoc = parseUrl(this._location.href); + var parsedTo = parseUrl(to); + var parsedFrom = parseUrl(from); - return '[Circular ~.' + keys.slice(0, indexOf(stack, value)).join('.') + ']'; - }; - } + // because onpopstate only tells you the "new" (to) value of location.href, and + // not the previous (from) value, we need to track the value of the current URL + // state ourselves + this._lastHref = to; - return function (key, value) { - if (stack.length > 0) { - var thisPos = indexOf(stack, this); - ~thisPos ? stack.splice(thisPos + 1) : stack.push(this); - ~thisPos ? keys.splice(thisPos, Infinity, key) : keys.push(key); + // Use only the path component of the URL if the URL matches the current + // document (almost all the time when using pushState) + if (parsedLoc.protocol === parsedTo.protocol && parsedLoc.host === parsedTo.host) + to = parsedTo.relative; + if (parsedLoc.protocol === parsedFrom.protocol && parsedLoc.host === parsedFrom.host) + from = parsedFrom.relative; - if (~indexOf(stack, value)) { - value = cycleReplacer.call(this, key, value); - } - } else { - stack.push(value); + this.captureBreadcrumb({ + category: 'navigation', + data: { + to: to, + from: from } + }); + }, - return replacer == null ? value instanceof Error ? stringifyError(value) : value : replacer.call(this, key, value); + _patchFunctionToString: function() { + var self = this; + self._originalFunctionToString = Function.prototype.toString; + // eslint-disable-next-line no-extend-native + Function.prototype.toString = function() { + if (typeof this === 'function' && this.__raven__) { + return self._originalFunctionToString.apply(this.__orig__, arguments); + } + return self._originalFunctionToString.apply(this, arguments); }; - } -}); -var stringify_2 = stringify_1.getSerialize; + }, -function RavenConfigError(message) { - this.name = 'RavenConfigError'; - this.message = message; -} + _unpatchFunctionToString: function() { + if (this._originalFunctionToString) { + // eslint-disable-next-line no-extend-native + Function.prototype.toString = this._originalFunctionToString; + } + }, -RavenConfigError.prototype = new Error(); -RavenConfigError.prototype.constructor = RavenConfigError; -var configError = RavenConfigError; + /** + * Wrap timer functions and event targets to catch errors and provide + * better metadata. + */ + _instrumentTryCatch: function() { + var self = this; -var wrapMethod = function wrapMethod(console, level, callback) { - var originalConsoleLevel = console[level]; - var originalConsole = console; + var wrappedBuiltIns = self._wrappedBuiltIns; - if (!(level in console)) { - return; - } + function wrapTimeFn(orig) { + return function(fn, t) { + // preserve arity + // Make a copy of the arguments to prevent deoptimization + // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments + var args = new Array(arguments.length); + for (var i = 0; i < args.length; ++i) { + args[i] = arguments[i]; + } + var originalCallback = args[0]; + if (isFunction(originalCallback)) { + args[0] = self.wrap(originalCallback); + } - var sentryLevel = level === 'warn' ? 'warning' : level; + // IE < 9 doesn't support .call/.apply on setInterval/setTimeout, but it + // also supports only two arguments and doesn't care what this is, so we + // can just call the original function directly. + if (orig.apply) { + return orig.apply(this, args); + } else { + return orig(args[0], args[1]); + } + }; + } - console[level] = function () { - var args = [].slice.call(arguments); - var msg = utils.safeJoin(args, ' '); - var data = { - level: sentryLevel, - logger: 'console', - extra: { - arguments: args - } - }; + var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; - if (level === 'assert') { - if (args[0] === false) { - // Default browsers message - msg = 'Assertion failed: ' + (utils.safeJoin(args.slice(1), ' ') || 'console.assert'); - data.extra.arguments = args.slice(1); - callback && callback(msg, data); + function wrapEventTarget(global) { + var proto = _window[global] && _window[global].prototype; + if (proto && proto.hasOwnProperty && proto.hasOwnProperty('addEventListener')) { + fill( + proto, + 'addEventListener', + function(orig) { + return function(evtName, fn, capture, secure) { + // preserve arity + try { + if (fn && fn.handleEvent) { + fn.handleEvent = self.wrap(fn.handleEvent); + } + } catch (err) { + // can sometimes get 'Permission denied to access property "handle Event' + } + + // More breadcrumb DOM capture ... done here and not in `_instrumentBreadcrumbs` + // so that we don't have more than one wrapper function + var before, clickHandler, keypressHandler; + + if ( + autoBreadcrumbs && + autoBreadcrumbs.dom && + (global === 'EventTarget' || global === 'Node') + ) { + // NOTE: generating multiple handlers per addEventListener invocation, should + // revisit and verify we can just use one (almost certainly) + clickHandler = self._breadcrumbEventHandler('click'); + keypressHandler = self._keypressEventHandler(); + before = function(evt) { + // need to intercept every DOM event in `before` argument, in case that + // same wrapped method is re-used for different events (e.g. mousemove THEN click) + // see #724 + if (!evt) return; + + var eventType; + try { + eventType = evt.type; + } catch (e) { + // just accessing event properties can throw an exception in some rare circumstances + // see: https://github.com/getsentry/raven-js/issues/838 + return; + } + if (eventType === 'click') return clickHandler(evt); + else if (eventType === 'keypress') return keypressHandler(evt); + }; + } + return orig.call( + this, + evtName, + self.wrap(fn, undefined, before), + capture, + secure + ); + }; + }, + wrappedBuiltIns + ); + fill( + proto, + 'removeEventListener', + function(orig) { + return function(evt, fn, capture, secure) { + try { + fn = fn && (fn.__raven_wrapper__ ? fn.__raven_wrapper__ : fn); + } catch (e) { + // ignore, accessing __raven_wrapper__ will throw in some Selenium environments + } + return orig.call(this, evt, fn, capture, secure); + }; + }, + wrappedBuiltIns + ); } - } else { - callback && callback(msg, data); - } // this fails for some browsers. :( + } + fill(_window, 'setTimeout', wrapTimeFn, wrappedBuiltIns); + fill(_window, 'setInterval', wrapTimeFn, wrappedBuiltIns); + if (_window.requestAnimationFrame) { + fill( + _window, + 'requestAnimationFrame', + function(orig) { + return function(cb) { + return orig(self.wrap(cb)); + }; + }, + wrappedBuiltIns + ); + } - if (originalConsoleLevel) { - // IE9 doesn't allow calling apply on console functions directly - // See: https://stackoverflow.com/questions/5472938/does-ie9-support-console-log-and-is-it-a-real-function#answer-5473193 - Function.prototype.apply.call(originalConsoleLevel, originalConsole, args); + // event targets borrowed from bugsnag-js: + // https://github.com/bugsnag/bugsnag-js/blob/master/src/bugsnag.js#L666 + var eventTargets = [ + 'EventTarget', + 'Window', + 'Node', + 'ApplicationCache', + 'AudioTrackList', + 'ChannelMergerNode', + 'CryptoOperation', + 'EventSource', + 'FileReader', + 'HTMLUnknownElement', + 'IDBDatabase', + 'IDBRequest', + 'IDBTransaction', + 'KeyOperation', + 'MediaController', + 'MessagePort', + 'ModalWindow', + 'Notification', + 'SVGElementInstance', + 'Screen', + 'TextTrack', + 'TextTrackCue', + 'TextTrackList', + 'WebSocket', + 'WebSocketWorker', + 'Worker', + 'XMLHttpRequest', + 'XMLHttpRequestEventTarget', + 'XMLHttpRequestUpload' + ]; + for (var i = 0; i < eventTargets.length; i++) { + wrapEventTarget(eventTargets[i]); } - }; -}; + }, -var console$1 = { - wrapMethod: wrapMethod -}; - -/*global XDomainRequest:false */ + /** + * Instrument browser built-ins w/ breadcrumb capturing + * - XMLHttpRequests + * - DOM interactions (click/typing) + * - window.location changes + * - console + * + * Can be disabled or individually configured via the `autoBreadcrumbs` config option + */ + _instrumentBreadcrumbs: function() { + var self = this; + var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; -var isError = utils.isError; -var isObject = utils.isObject; -var isErrorEvent = utils.isErrorEvent; -var isUndefined = utils.isUndefined; -var isFunction = utils.isFunction; -var isString = utils.isString; -var isArray = utils.isArray; -var isEmptyObject = utils.isEmptyObject; -var each = utils.each; -var objectMerge = utils.objectMerge; -var truncate = utils.truncate; -var objectFrozen = utils.objectFrozen; -var hasKey = utils.hasKey; -var joinRegExp = utils.joinRegExp; -var urlencode = utils.urlencode; -var uuid4 = utils.uuid4; -var htmlTreeAsString = utils.htmlTreeAsString; -var isSameException = utils.isSameException; -var isSameStacktrace = utils.isSameStacktrace; -var parseUrl = utils.parseUrl; -var fill = utils.fill; -var supportsFetch = utils.supportsFetch; -var wrapConsoleMethod = console$1.wrapMethod; -var dsnKeys = 'source protocol user pass host port path'.split(' '); -var dsnPattern = /^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/; + var wrappedBuiltIns = self._wrappedBuiltIns; -function now() { - return +new Date(); -} // This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) + function wrapProp(prop, xhr) { + if (prop in xhr && isFunction(xhr[prop])) { + fill(xhr, prop, function(orig) { + return self.wrap(orig); + }); // intentionally don't track filled methods on XHR instances + } + } + if (autoBreadcrumbs.xhr && 'XMLHttpRequest' in _window) { + var xhrproto = _window.XMLHttpRequest && _window.XMLHttpRequest.prototype; + fill( + xhrproto, + 'open', + function(origOpen) { + return function(method, url) { + // preserve arity -var _window$1 = typeof window !== 'undefined' ? window : typeof commonjsGlobal !== 'undefined' ? commonjsGlobal : typeof self !== 'undefined' ? self : {}; + // if Sentry key appears in URL, don't capture + if (isString(url) && url.indexOf(self._globalKey) === -1) { + this.__raven_xhr = { + method: method, + url: url, + status_code: null + }; + } -var _document = _window$1.document; -var _navigator = _window$1.navigator; + return origOpen.apply(this, arguments); + }; + }, + wrappedBuiltIns + ); + + fill( + xhrproto, + 'send', + function(origSend) { + return function() { + // preserve arity + var xhr = this; -function keepOriginalCallback(original, callback) { - return isFunction(callback) ? function (data) { - return callback(data, original); - } : callback; -} // First, check for JSON support -// If there is no JSON, we no-op the core features of Raven -// since JSON is required to encode the payload + function onreadystatechangeHandler() { + if (xhr.__raven_xhr && xhr.readyState === 4) { + try { + // touching statusCode in some platforms throws + // an exception + xhr.__raven_xhr.status_code = xhr.status; + } catch (e) { + /* do nothing */ + } + self.captureBreadcrumb({ + type: 'http', + category: 'xhr', + data: xhr.__raven_xhr + }); + } + } -function Raven$1() { - this._hasJSON = !!(_typeof(JSON) === 'object' && JSON.stringify); // Raven can run in contexts where there's no document (react-native) + var props = ['onload', 'onerror', 'onprogress']; + for (var j = 0; j < props.length; j++) { + wrapProp(props[j], xhr); + } - this._hasDocument = !isUndefined(_document); - this._hasNavigator = !isUndefined(_navigator); - this._lastCapturedException = null; - this._lastData = null; - this._lastEventId = null; - this._globalServer = null; - this._globalKey = null; - this._globalProject = null; - this._globalContext = {}; - this._globalOptions = { - // SENTRY_RELEASE can be injected by https://github.com/getsentry/sentry-webpack-plugin - release: _window$1.SENTRY_RELEASE && _window$1.SENTRY_RELEASE.id, - logger: 'javascript', - ignoreErrors: [], - ignoreUrls: [], - whitelistUrls: [], - includePaths: [], - headers: null, - collectWindowErrors: true, - maxMessageLength: 0, - // By default, truncates URL values to 250 chars - maxUrlLength: 250, - stackTraceLimit: 50, - autoBreadcrumbs: true, - instrument: true, - sampleRate: 1 - }; - this._fetchDefaults = { - method: 'POST', - keepalive: true, - referrerPolicy: 'origin' - }; - this._ignoreOnError = 0; - this._isRavenInstalled = false; - this._originalErrorStackTraceLimit = Error.stackTraceLimit; // capture references to window.console *and* all its methods first - // before the console plugin has a chance to monkey patch + if ('onreadystatechange' in xhr && isFunction(xhr.onreadystatechange)) { + fill( + xhr, + 'onreadystatechange', + function(orig) { + return self.wrap(orig, undefined, onreadystatechangeHandler); + } /* intentionally don't track this instrumentation */ + ); + } else { + // if onreadystatechange wasn't actually set by the page on this xhr, we + // are free to set our own and capture the breadcrumb + xhr.onreadystatechange = onreadystatechangeHandler; + } - this._originalConsole = _window$1.console || {}; - this._originalConsoleMethods = {}; - this._plugins = []; - this._startTime = now(); - this._wrappedBuiltIns = []; - this._breadcrumbs = []; - this._lastCapturedEvent = null; - this._keypressTimeout; - this._location = _window$1.location; - this._lastHref = this._location && this._location.href; + return origSend.apply(this, arguments); + }; + }, + wrappedBuiltIns + ); + } - this._resetBackoff(); // eslint-disable-next-line guard-for-in + if (autoBreadcrumbs.xhr && supportsFetch()) { + fill( + _window, + 'fetch', + function(origFetch) { + return function() { + // preserve arity + // Make a copy of the arguments to prevent deoptimization + // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments + var args = new Array(arguments.length); + for (var i = 0; i < args.length; ++i) { + args[i] = arguments[i]; + } + var fetchInput = args[0]; + var method = 'GET'; + var url; - for (var method in this._originalConsole) { - this._originalConsoleMethods[method] = this._originalConsole[method]; - } -} -/* - * The core Raven singleton - * - * @this {Raven} - */ + if (typeof fetchInput === 'string') { + url = fetchInput; + } else if ('Request' in _window && fetchInput instanceof _window.Request) { + url = fetchInput.url; + if (fetchInput.method) { + method = fetchInput.method; + } + } else { + url = '' + fetchInput; + } + // if Sentry key appears in URL, don't capture, as it's our own request + if (url.indexOf(self._globalKey) !== -1) { + return origFetch.apply(this, args); + } -Raven$1.prototype = { - // Hardcode version string so that raven source can be loaded directly via - // webpack (using a build step causes webpack #1617). Grunt verifies that - // this value matches package.json during build. - // See: https://github.com/getsentry/raven-js/issues/465 - VERSION: '3.22.2', - debug: false, - TraceKit: tracekit, - // alias to TraceKit + if (args[1] && args[1].method) { + method = args[1].method; + } - /* - * Configure Raven with a DSN and extra options - * - * @param {string} dsn The public Sentry DSN - * @param {object} options Set of global options [optional] - * @return {Raven} - */ - config: function config(dsn, options) { - var self = this; + var fetchData = { + method: method, + url: url, + status_code: null + }; - if (self._globalServer) { - this._logDebug('error', 'Error: Raven has already been configured'); + return origFetch + .apply(this, args) + .then(function(response) { + fetchData.status_code = response.status; + + self.captureBreadcrumb({ + type: 'http', + category: 'fetch', + data: fetchData + }); + + return response; + }) + ['catch'](function(err) { + // if there is an error performing the request + self.captureBreadcrumb({ + type: 'http', + category: 'fetch', + data: fetchData, + level: 'error' + }); + + throw err; + }); + }; + }, + wrappedBuiltIns + ); + } - return self; + // Capture breadcrumbs from any click that is unhandled / bubbled up all the way + // to the document. Do this before we instrument addEventListener. + if (autoBreadcrumbs.dom && this._hasDocument) { + if (_document.addEventListener) { + _document.addEventListener('click', self._breadcrumbEventHandler('click'), false); + _document.addEventListener('keypress', self._keypressEventHandler(), false); + } else if (_document.attachEvent) { + // IE8 Compatibility + _document.attachEvent('onclick', self._breadcrumbEventHandler('click')); + _document.attachEvent('onkeypress', self._keypressEventHandler()); + } } - if (!dsn) return self; - var globalOptions = self._globalOptions; // merge in options + // record navigation (URL) changes + // NOTE: in Chrome App environment, touching history.pushState, *even inside + // a try/catch block*, will cause Chrome to output an error to console.error + // borrowed from: https://github.com/angular/angular.js/pull/13945/files + var chrome = _window.chrome; + var isChromePackagedApp = chrome && chrome.app && chrome.app.runtime; + var hasPushAndReplaceState = + !isChromePackagedApp && + _window.history && + history.pushState && + history.replaceState; + if (autoBreadcrumbs.location && hasPushAndReplaceState) { + // TODO: remove onpopstate handler on uninstall() + var oldOnPopState = _window.onpopstate; + _window.onpopstate = function() { + var currentHref = self._location.href; + self._captureUrlChange(self._lastHref, currentHref); - if (options) { - each(options, function (key, value) { - // tags and extra are special and need to be put into context - if (key === 'tags' || key === 'extra' || key === 'user') { - self._globalContext[key] = value; - } else { - globalOptions[key] = value; + if (oldOnPopState) { + return oldOnPopState.apply(this, arguments); } - }); - } - - self.setDSN(dsn); // "Script error." is hard coded into browsers for errors that it can't read. - // this is the result of a script being pulled in from an external domain and CORS. + }; - globalOptions.ignoreErrors.push(/^Script error\.?$/); - globalOptions.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/); // join regexp rules into one big rule + var historyReplacementFunction = function(origHistFunction) { + // note history.pushState.length is 0; intentionally not declaring + // params to preserve 0 arity + return function(/* state, title, url */) { + var url = arguments.length > 2 ? arguments[2] : undefined; - globalOptions.ignoreErrors = joinRegExp(globalOptions.ignoreErrors); - globalOptions.ignoreUrls = globalOptions.ignoreUrls.length ? joinRegExp(globalOptions.ignoreUrls) : false; - globalOptions.whitelistUrls = globalOptions.whitelistUrls.length ? joinRegExp(globalOptions.whitelistUrls) : false; - globalOptions.includePaths = joinRegExp(globalOptions.includePaths); - globalOptions.maxBreadcrumbs = Math.max(0, Math.min(globalOptions.maxBreadcrumbs || 100, 100)); // default and hard limit is 100 + // url argument is optional + if (url) { + // coerce to string (this is what pushState does) + self._captureUrlChange(self._lastHref, url + ''); + } - var autoBreadcrumbDefaults = { - xhr: true, - console: true, - dom: true, - location: true, - sentry: true - }; - var autoBreadcrumbs = globalOptions.autoBreadcrumbs; + return origHistFunction.apply(this, arguments); + }; + }; - if ({}.toString.call(autoBreadcrumbs) === '[object Object]') { - autoBreadcrumbs = objectMerge(autoBreadcrumbDefaults, autoBreadcrumbs); - } else if (autoBreadcrumbs !== false) { - autoBreadcrumbs = autoBreadcrumbDefaults; + fill(history, 'pushState', historyReplacementFunction, wrappedBuiltIns); + fill(history, 'replaceState', historyReplacementFunction, wrappedBuiltIns); } - globalOptions.autoBreadcrumbs = autoBreadcrumbs; - var instrumentDefaults = { - tryCatch: true - }; - var instrument = globalOptions.instrument; + if (autoBreadcrumbs.console && 'console' in _window && console.log) { + // console + var consoleMethodCallback = function(msg, data) { + self.captureBreadcrumb({ + message: msg, + level: data.level, + category: 'console' + }); + }; - if ({}.toString.call(instrument) === '[object Object]') { - instrument = objectMerge(instrumentDefaults, instrument); - } else if (instrument !== false) { - instrument = instrumentDefaults; + each(['debug', 'info', 'warn', 'error', 'log'], function(_, level) { + wrapConsoleMethod(console, level, consoleMethodCallback); + }); } - - globalOptions.instrument = instrument; - tracekit.collectWindowErrors = !!globalOptions.collectWindowErrors; // return for chaining - - return self; }, - /* - * Installs a global window.onerror error handler - * to capture and report uncaught exceptions. - * At this point, install() is required to be called due - * to the way TraceKit is set up. - * - * @return {Raven} - */ - install: function install() { - var self = this; - - if (self.isSetup() && !self._isRavenInstalled) { - tracekit.report.subscribe(function () { - self._handleOnErrorStackInfo.apply(self, arguments); - }); - - self._patchFunctionToString(); - - if (self._globalOptions.instrument && self._globalOptions.instrument.tryCatch) { - self._instrumentTryCatch(); - } - - if (self._globalOptions.autoBreadcrumbs) self._instrumentBreadcrumbs(); // Install all of the plugins + _restoreBuiltIns: function() { + // restore any wrapped builtins + var builtin; + while (this._wrappedBuiltIns.length) { + builtin = this._wrappedBuiltIns.shift(); - self._drainPlugins(); + var obj = builtin[0], + name = builtin[1], + orig = builtin[2]; - self._isRavenInstalled = true; + obj[name] = orig; } + }, - Error.stackTraceLimit = self._globalOptions.stackTraceLimit; - return this; + _restoreConsole: function() { + // eslint-disable-next-line guard-for-in + for (var method in this._originalConsoleMethods) { + this._originalConsole[method] = this._originalConsoleMethods[method]; + } }, - /* - * Set the DSN (can be called multiple time unlike config) - * - * @param {string} dsn The public Sentry DSN - */ - setDSN: function setDSN(dsn) { - var self = this, - uri = self._parseDSN(dsn), - lastSlash = uri.path.lastIndexOf('/'), - path = uri.path.substr(1, lastSlash); - - self._dsn = dsn; - self._globalKey = uri.user; - self._globalSecret = uri.pass && uri.pass.substr(1); - self._globalProject = uri.path.substr(lastSlash + 1); - self._globalServer = self._getGlobalServer(uri); - self._globalEndpoint = self._globalServer + '/' + path + 'api/' + self._globalProject + '/store/'; // Reset backoff state since we may be pointing at a - // new project/server - - this._resetBackoff(); - }, - - /* - * Wrap code within a context so Raven can capture errors - * reliably across domains that is executed immediately. - * - * @param {object} options A specific set of options for this context [optional] - * @param {function} func The callback to be immediately executed within the context - * @param {array} args An array of arguments to be called with the callback [optional] - */ - context: function context(options, func, args) { - if (isFunction(options)) { - args = func || []; - func = options; - options = undefined; - } + _drainPlugins: function() { + var self = this; - return this.wrap(options, func).apply(this, args); + // FIX ME TODO + each(this._plugins, function(_, plugin) { + var installer = plugin[0]; + var args = plugin[1]; + installer.apply(self, [self].concat(args)); + }); }, - /* - * Wrap code within a context and returns back a new function to be executed - * - * @param {object} options A specific set of options for this context [optional] - * @param {function} func The function to be wrapped in a new context - * @param {function} func A function to call before the try/catch wrapper [optional, private] - * @return {function} The newly wrapped functions with a context - */ - wrap: function wrap(options, func, _before) { - var self = this; // 1 argument has been passed, and it's not a function - // so just return it - - if (isUndefined(func) && !isFunction(options)) { - return options; - } // options is optional - - - if (isFunction(options)) { - func = options; - options = undefined; - } // At this point, we've passed along 2 arguments, and the second one - // is not a function either, so we'll just return the second argument. - - - if (!isFunction(func)) { - return func; - } // We don't wanna wrap it twice! - + _parseDSN: function(str) { + var m = dsnPattern.exec(str), + dsn = {}, + i = 7; try { - if (func.__raven__) { - return func; - } // If this has already been wrapped in the past, return that - - - if (func.__raven_wrapper__) { - return func.__raven_wrapper__; - } + while (i--) dsn[dsnKeys[i]] = m[i] || ''; } catch (e) { - // Just accessing custom props in some Selenium environments - // can cause a "Permission denied" exception (see raven-js#495). - // Bail on wrapping and return the function as-is (defers to window.onerror). - return func; + throw new RavenConfigError('Invalid DSN: ' + str); } - function wrapped() { - var args = [], - i = arguments.length, - deep = !options || options && options.deep !== false; - - if (_before && isFunction(_before)) { - _before.apply(this, arguments); - } // Recursively wrap all of a function's arguments that are - // functions themselves. - - - while (i--) { - args[i] = deep ? self.wrap(options, arguments[i]) : arguments[i]; - } - - try { - // Attempt to invoke user-land function - // NOTE: If you are a Sentry user, and you are seeing this stack frame, it - // means Raven caught an error invoking your application code. This is - // expected behavior and NOT indicative of a bug with Raven.js. - return func.apply(this, args); - } catch (e) { - self._ignoreNextOnError(); - - self.captureException(e, options); - throw e; - } - } // copy over properties of the old function - - - for (var property in func) { - if (hasKey(func, property)) { - wrapped[property] = func[property]; - } + if (dsn.pass && !this._globalOptions.allowSecretKey) { + throw new RavenConfigError( + 'Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key' + ); } - wrapped.prototype = func.prototype; - func.__raven_wrapper__ = wrapped; // Signal that this function has been wrapped/filled already - // for both debugging and to prevent it to being wrapped/filled twice - - wrapped.__raven__ = true; - wrapped.__orig__ = func; - return wrapped; + return dsn; }, - /* - * Uninstalls the global error handler. - * - * @return {Raven} - */ - uninstall: function uninstall() { - tracekit.report.uninstall(); - - this._unpatchFunctionToString(); - - this._restoreBuiltIns(); - - this._restoreConsole(); + _getGlobalServer: function(uri) { + // assemble the endpoint from the uri pieces + var globalServer = '//' + uri.host + (uri.port ? ':' + uri.port : ''); - Error.stackTraceLimit = this._originalErrorStackTraceLimit; - this._isRavenInstalled = false; - return this; + if (uri.protocol) { + globalServer = uri.protocol + ':' + globalServer; + } + return globalServer; }, - /* - * Manually capture an exception and send it over to Sentry - * - * @param {error} ex An exception to be logged - * @param {object} options A specific set of options for this error [optional] - * @return {Raven} - */ - captureException: function captureException(ex, options) { - options = objectMerge({ - trimHeadFrames: 0 - }, options ? options : {}); // Cases for sending ex as a message, rather than an exception - - var isNotError = !isError(ex); - var isNotErrorEvent = !isErrorEvent(ex); - var isErrorEventWithoutError = isErrorEvent(ex) && !ex.error; - - if (isNotError && isNotErrorEvent || isErrorEventWithoutError) { - return this.captureMessage(ex, objectMerge(options, { - stacktrace: true, - // if we fall back to captureMessage, default to attempting a new trace - trimHeadFrames: options.trimHeadFrames + 1 - })); - } // Get actual Error from ErrorEvent + _handleOnErrorStackInfo: function() { + // if we are intentionally ignoring errors via onerror, bail out + if (!this._ignoreOnError) { + this._handleStackInfo.apply(this, arguments); + } + }, + _handleStackInfo: function(stackInfo, options) { + var frames = this._prepareFrames(stackInfo, options); - if (isErrorEvent(ex)) ex = ex.error; // Store the raw exception object for potential debugging and introspection + this._triggerEvent('handle', { + stackInfo: stackInfo, + options: options + }); - this._lastCapturedException = ex; // TraceKit.report will re-raise any exception passed to it, - // which means you have to wrap it in try/catch. Instead, we - // can wrap it here and only re-raise if TraceKit.report - // raises an exception different from the one we asked to - // report on. + this._processException( + stackInfo.name, + stackInfo.message, + stackInfo.url, + stackInfo.lineno, + frames, + options + ); + }, - try { - var stack = tracekit.computeStackTrace(ex); + _prepareFrames: function(stackInfo, options) { + var self = this; + var frames = []; + if (stackInfo.stack && stackInfo.stack.length) { + each(stackInfo.stack, function(i, stack) { + var frame = self._normalizeFrame(stack, stackInfo.url); + if (frame) { + frames.push(frame); + } + }); - this._handleStackInfo(stack, options); - } catch (ex1) { - if (ex !== ex1) { - throw ex1; + // e.g. frames captured via captureMessage throw + if (options && options.trimHeadFrames) { + for (var j = 0; j < options.trimHeadFrames && j < frames.length; j++) { + frames[j].in_app = false; + } } } - - return this; + frames = frames.slice(0, this._globalOptions.stackTraceLimit); + return frames; }, - /* - * Manually send a message to Sentry - * - * @param {string} msg A plain message to be captured in Sentry - * @param {object} options A specific set of options for this message [optional] - * @return {Raven} - */ - captureMessage: function captureMessage(msg, options) { - // config() automagically converts ignoreErrors from a list to a RegExp so we need to test for an - // early call; we'll error on the side of logging anything called before configuration since it's - // probably something you should see: - if (!!this._globalOptions.ignoreErrors.test && this._globalOptions.ignoreErrors.test(msg)) { - return; - } + _normalizeFrame: function(frame, stackInfoUrl) { + // normalize the frames data + var normalized = { + filename: frame.url, + lineno: frame.line, + colno: frame.column, + function: frame.func || '?' + }; - options = options || {}; - var data = objectMerge({ - message: msg + '' // Make sure it's actually a string + // Case when we don't have any information about the error + // E.g. throwing a string or raw object, instead of an `Error` in Firefox + // Generating synthetic error doesn't add any value here + // + // We should probably somehow let a user know that they should fix their code + if (!frame.url) { + normalized.filename = stackInfoUrl; // fallback to whole stacks url from onerror handler + } - }, options); - var ex; // Generate a "synthetic" stack trace from this point. - // NOTE: If you are a Sentry user, and you are seeing this stack frame, it is NOT indicative - // of a bug with Raven.js. Sentry generates synthetic traces either by configuration, - // or if it catches a thrown object without a "stack" property. + normalized.in_app = !// determine if an exception came from outside of our app + // first we check the global includePaths list. + ( + (!!this._globalOptions.includePaths.test && + !this._globalOptions.includePaths.test(normalized.filename)) || + // Now we check for fun, if the function name is Raven or TraceKit + /(Raven|TraceKit)\./.test(normalized['function']) || + // finally, we do a last ditch effort and check for raven.min.js + /raven\.(min\.)?js$/.test(normalized.filename) + ); - try { - throw new Error(msg); - } catch (ex1) { - ex = ex1; - } // null exception name so `Error` isn't prefixed to msg + return normalized; + }, + _processException: function(type, message, fileurl, lineno, frames, options) { + var prefixedMessage = (type ? type + ': ' : '') + (message || ''); + if ( + !!this._globalOptions.ignoreErrors.test && + (this._globalOptions.ignoreErrors.test(message) || + this._globalOptions.ignoreErrors.test(prefixedMessage)) + ) { + return; + } - ex.name = null; - var stack = tracekit.computeStackTrace(ex); // stack[0] is `throw new Error(msg)` call itself, we are interested in the frame that was just before that, stack[1] + var stacktrace; - var initialCall = isArray(stack.stack) && stack.stack[1]; - var fileurl = initialCall && initialCall.url || ''; + if (frames && frames.length) { + fileurl = frames[0].filename || fileurl; + // Sentry expects frames oldest to newest + // and JS sends them as newest to oldest + frames.reverse(); + stacktrace = {frames: frames}; + } else if (fileurl) { + stacktrace = { + frames: [ + { + filename: fileurl, + lineno: lineno, + in_app: true + } + ] + }; + } - if (!!this._globalOptions.ignoreUrls.test && this._globalOptions.ignoreUrls.test(fileurl)) { + if ( + !!this._globalOptions.ignoreUrls.test && + this._globalOptions.ignoreUrls.test(fileurl) + ) { return; } - if (!!this._globalOptions.whitelistUrls.test && !this._globalOptions.whitelistUrls.test(fileurl)) { + if ( + !!this._globalOptions.whitelistUrls.test && + !this._globalOptions.whitelistUrls.test(fileurl) + ) { return; } - if (this._globalOptions.stacktrace || options && options.stacktrace) { - options = objectMerge({ - // fingerprint on msg, not stack trace (legacy behavior, could be - // revisited) - fingerprint: msg, - // since we know this is a synthetic trace, the top N-most frames - // MUST be from Raven.js, so mark them as in_app later by setting - // trimHeadFrames - trimHeadFrames: (options.trimHeadFrames || 0) + 1 - }, options); - - var frames = this._prepareFrames(stack, options); - - data.stacktrace = { - // Sentry expects frames oldest to newest - frames: frames.reverse() - }; - } // Fire away! - + var data = objectMerge( + { + // sentry.interfaces.Exception + exception: { + values: [ + { + type: type, + value: message, + stacktrace: stacktrace + } + ] + }, + culprit: fileurl + }, + options + ); + // Fire away! this._send(data); - - return this; }, - captureBreadcrumb: function captureBreadcrumb(obj) { - var crumb = objectMerge({ - timestamp: now() / 1000 - }, obj); - if (isFunction(this._globalOptions.breadcrumbCallback)) { - var result = this._globalOptions.breadcrumbCallback(crumb); + _trimPacket: function(data) { + // For now, we only want to truncate the two different messages + // but this could/should be expanded to just trim everything + var max = this._globalOptions.maxMessageLength; + if (data.message) { + data.message = truncate(data.message, max); + } + if (data.exception) { + var exception = data.exception.values[0]; + exception.value = truncate(exception.value, max); + } - if (isObject(result) && !isEmptyObject(result)) { - crumb = result; - } else if (result === false) { - return this; + var request = data.request; + if (request) { + if (request.url) { + request.url = truncate(request.url, this._globalOptions.maxUrlLength); + } + if (request.Referer) { + request.Referer = truncate(request.Referer, this._globalOptions.maxUrlLength); } } - this._breadcrumbs.push(crumb); + if (data.breadcrumbs && data.breadcrumbs.values) + this._trimBreadcrumbs(data.breadcrumbs); - if (this._breadcrumbs.length > this._globalOptions.maxBreadcrumbs) { - this._breadcrumbs.shift(); - } - - return this; - }, - addPlugin: function addPlugin(plugin - /*arg1, arg2, ... argN*/ - ) { - var pluginArgs = [].slice.call(arguments, 1); - - this._plugins.push([plugin, pluginArgs]); - - if (this._isRavenInstalled) { - this._drainPlugins(); - } - - return this; - }, - - /* - * Set/clear a user to be sent along with the payload. - * - * @param {object} user An object representing user data [optional] - * @return {Raven} - */ - setUserContext: function setUserContext(user) { - // Intentionally do not merge here since that's an unexpected behavior. - this._globalContext.user = user; - return this; + return data; }, - /* - * Merge extra attributes to be sent along with the payload. - * - * @param {object} extra An object representing extra data [optional] - * @return {Raven} - */ - setExtraContext: function setExtraContext(extra) { - this._mergeContext('extra', extra); - - return this; - }, + /** + * Truncate breadcrumb values (right now just URLs) + */ + _trimBreadcrumbs: function(breadcrumbs) { + // known breadcrumb properties with urls + // TODO: also consider arbitrary prop values that start with (https?)?:// + var urlProps = ['to', 'from', 'url'], + urlProp, + crumb, + data; - /* - * Merge tags to be sent along with the payload. - * - * @param {object} tags An object representing tags [optional] - * @return {Raven} - */ - setTagsContext: function setTagsContext(tags) { - this._mergeContext('tags', tags); + for (var i = 0; i < breadcrumbs.values.length; ++i) { + crumb = breadcrumbs.values[i]; + if ( + !crumb.hasOwnProperty('data') || + !isObject(crumb.data) || + objectFrozen(crumb.data) + ) + continue; - return this; + data = objectMerge({}, crumb.data); + for (var j = 0; j < urlProps.length; ++j) { + urlProp = urlProps[j]; + if (data.hasOwnProperty(urlProp) && data[urlProp]) { + data[urlProp] = truncate(data[urlProp], this._globalOptions.maxUrlLength); + } + } + breadcrumbs.values[i].data = data; + } }, - /* - * Clear all of the context. - * - * @return {Raven} - */ - clearContext: function clearContext() { - this._globalContext = {}; - return this; - }, + _getHttpData: function() { + if (!this._hasNavigator && !this._hasDocument) return; + var httpData = {}; - /* - * Get a copy of the current context. This cannot be mutated. - * - * @return {object} copy of context - */ - getContext: function getContext() { - // lol javascript - return JSON.parse(stringify_1(this._globalContext)); - }, + if (this._hasNavigator && _navigator.userAgent) { + httpData.headers = { + 'User-Agent': navigator.userAgent + }; + } - /* - * Set environment of application - * - * @param {string} environment Typically something like 'production'. - * @return {Raven} - */ - setEnvironment: function setEnvironment(environment) { - this._globalOptions.environment = environment; - return this; - }, + // Check in `window` instead of `document`, as we may be in ServiceWorker environment + if (_window.location && _window.location.href) { + httpData.url = _window.location.href; + } - /* - * Set release version of application - * - * @param {string} release Typically something like a git SHA to identify version - * @return {Raven} - */ - setRelease: function setRelease(release) { - this._globalOptions.release = release; - return this; - }, + if (this._hasDocument && _document.referrer) { + if (!httpData.headers) httpData.headers = {}; + httpData.headers.Referer = _document.referrer; + } - /* - * Set the dataCallback option - * - * @param {function} callback The callback to run which allows the - * data blob to be mutated before sending - * @return {Raven} - */ - setDataCallback: function setDataCallback(callback) { - var original = this._globalOptions.dataCallback; - this._globalOptions.dataCallback = keepOriginalCallback(original, callback); - return this; + return httpData; }, - /* - * Set the breadcrumbCallback option - * - * @param {function} callback The callback to run which allows filtering - * or mutating breadcrumbs - * @return {Raven} - */ - setBreadcrumbCallback: function setBreadcrumbCallback(callback) { - var original = this._globalOptions.breadcrumbCallback; - this._globalOptions.breadcrumbCallback = keepOriginalCallback(original, callback); - return this; + _resetBackoff: function() { + this._backoffDuration = 0; + this._backoffStart = null; }, - /* - * Set the shouldSendCallback option - * - * @param {function} callback The callback to run which allows - * introspecting the blob before sending - * @return {Raven} - */ - setShouldSendCallback: function setShouldSendCallback(callback) { - var original = this._globalOptions.shouldSendCallback; - this._globalOptions.shouldSendCallback = keepOriginalCallback(original, callback); - return this; + _shouldBackoff: function() { + return this._backoffDuration && now() - this._backoffStart < this._backoffDuration; }, /** - * Override the default HTTP transport mechanism that transmits data - * to the Sentry server. - * - * @param {function} transport Function invoked instead of the default - * `makeRequest` handler. + * Returns true if the in-process data payload matches the signature + * of the previously-sent data * - * @return {Raven} + * NOTE: This has to be done at this level because TraceKit can generate + * data from window.onerror WITHOUT an exception object (IE8, IE9, + * other old browsers). This can take the form of an "exception" + * data object with a single frame (derived from the onerror args). */ - setTransport: function setTransport(transport) { - this._globalOptions.transport = transport; - return this; - }, + _isRepeatData: function(current) { + var last = this._lastData; - /* - * Get the latest raw exception that was captured by Raven. - * - * @return {error} - */ - lastException: function lastException() { - return this._lastCapturedException; - }, + if ( + !last || + current.message !== last.message || // defined for captureMessage + current.culprit !== last.culprit // defined for captureException/onerror + ) + return false; - /* - * Get the last event id - * - * @return {string} - */ - lastEventId: function lastEventId() { - return this._lastEventId; + // Stacktrace interface (i.e. from captureMessage) + if (current.stacktrace || last.stacktrace) { + return isSameStacktrace(current.stacktrace, last.stacktrace); + } else if (current.exception || last.exception) { + // Exception interface (i.e. from captureException/onerror) + return isSameException(current.exception, last.exception); + } + + return true; }, - /* - * Determine if Raven is setup and ready to go. - * - * @return {boolean} - */ - isSetup: function isSetup() { - if (!this._hasJSON) return false; // needs JSON support + _setBackoffState: function(request) { + // If we are already in a backoff state, don't change anything + if (this._shouldBackoff()) { + return; + } - if (!this._globalServer) { - if (!this.ravenNotConfiguredError) { - this.ravenNotConfiguredError = true; + var status = request.status; - this._logDebug('error', 'Error: Raven has not been configured.'); + // 400 - project_id doesn't exist or some other fatal + // 401 - invalid/revoked dsn + // 429 - too many requests + if (!(status === 400 || status === 401 || status === 429)) return; + + var retry; + try { + // If Retry-After is not in Access-Control-Expose-Headers, most + // browsers will throw an exception trying to access it + if (supportsFetch()) { + retry = request.headers.get('Retry-After'); + } else { + retry = request.getResponseHeader('Retry-After'); } - return false; + // Retry-After is returned in seconds + retry = parseInt(retry, 10) * 1000; + } catch (e) { + /* eslint no-empty:0 */ } - return true; - }, - afterLoad: function afterLoad() { - // TODO: remove window dependence? - // Attempt to initialize Raven on load - var RavenConfig = _window$1.RavenConfig; + this._backoffDuration = retry + ? // If Sentry server returned a Retry-After value, use it + retry + : // Otherwise, double the last backoff duration (starts at 1 sec) + this._backoffDuration * 2 || 1000; - if (RavenConfig) { - this.config(RavenConfig.dsn, RavenConfig.config).install(); - } + this._backoffStart = now(); }, - showReportDialog: function showReportDialog(options) { - if (!_document // doesn't work without a document (React native) - ) return; - options = options || {}; - var lastEventId = options.eventId || this.lastEventId(); - if (!lastEventId) { - throw new configError('Missing eventId'); - } + _send: function(data) { + var globalOptions = this._globalOptions; - var dsn = options.dsn || this._dsn; + var baseData = { + project: this._globalProject, + logger: globalOptions.logger, + platform: 'javascript' + }, + httpData = this._getHttpData(); - if (!dsn) { - throw new configError('Missing DSN'); + if (httpData) { + baseData.request = httpData; } - var encode = encodeURIComponent; - var qs = ''; - qs += '?eventId=' + encode(lastEventId); - qs += '&dsn=' + encode(dsn); - var user = options.user || this._globalContext.user; - - if (user) { - if (user.name) qs += '&name=' + encode(user.name); - if (user.email) qs += '&email=' + encode(user.email); - } + // HACK: delete `trimHeadFrames` to prevent from appearing in outbound payload + if (data.trimHeadFrames) delete data.trimHeadFrames; - var globalServer = this._getGlobalServer(this._parseDSN(dsn)); + data = objectMerge(baseData, data); - var script = _document.createElement('script'); + // Merge in the tags and extra separately since objectMerge doesn't handle a deep merge + data.tags = objectMerge(objectMerge({}, this._globalContext.tags), data.tags); + data.extra = objectMerge(objectMerge({}, this._globalContext.extra), data.extra); - script.async = true; - script.src = globalServer + '/api/embed/error-page/' + qs; + // Send along our own collected metadata with extra + data.extra['session:duration'] = now() - this._startTime; - (_document.head || _document.body).appendChild(script); - }, + if (this._breadcrumbs && this._breadcrumbs.length > 0) { + // intentionally make shallow copy so that additions + // to breadcrumbs aren't accidentally sent in this request + data.breadcrumbs = { + values: [].slice.call(this._breadcrumbs, 0) + }; + } - /**** Private functions ****/ - _ignoreNextOnError: function _ignoreNextOnError() { - var self = this; - this._ignoreOnError += 1; - setTimeout(function () { - // onerror should trigger before setTimeout - self._ignoreOnError -= 1; - }); - }, - _triggerEvent: function _triggerEvent(eventType, options) { - // NOTE: `event` is a native browser thing, so let's avoid conflicting wiht it - var evt, key; - if (!this._hasDocument) return; - options = options || {}; - eventType = 'raven' + eventType.substr(0, 1).toUpperCase() + eventType.substr(1); - - if (_document.createEvent) { - evt = _document.createEvent('HTMLEvents'); - evt.initEvent(eventType, true, true); - } else { - evt = _document.createEventObject(); - evt.eventType = eventType; + if (this._globalContext.user) { + // sentry.interfaces.User + data.user = this._globalContext.user; } - for (key in options) { - if (hasKey(options, key)) { - evt[key] = options[key]; - } - } + // Include the environment if it's defined in globalOptions + if (globalOptions.environment) data.environment = globalOptions.environment; - if (_document.createEvent) { - // IE9 if standards - _document.dispatchEvent(evt); - } else { - // IE8 regardless of Quirks or Standards - // IE9 if quirks - try { - _document.fireEvent('on' + evt.eventType.toLowerCase(), evt); - } catch (e) {// Do nothing + // Include the release if it's defined in globalOptions + if (globalOptions.release) data.release = globalOptions.release; + + // Include server_name if it's defined in globalOptions + if (globalOptions.serverName) data.server_name = globalOptions.serverName; + + data = this._sanitizeData(data); + + // Cleanup empty properties before sending them to the server + Object.keys(data).forEach(function(key) { + if (data[key] == null || data[key] === '' || isEmptyObject(data[key])) { + delete data[key]; } + }); + + if (isFunction(globalOptions.dataCallback)) { + data = globalOptions.dataCallback(data) || data; } - }, - /** - * Wraps addEventListener to capture UI breadcrumbs - * @param evtName the event name (e.g. "click") - * @returns {Function} - * @private - */ - _breadcrumbEventHandler: function _breadcrumbEventHandler(evtName) { - var self = this; - return function (evt) { - // reset keypress timeout; e.g. triggering a 'click' after - // a 'keypress' will reset the keypress debounce so that a new - // set of keypresses can be recorded - self._keypressTimeout = null; // It's possible this handler might trigger multiple times for the same - // event (e.g. event propagation through node ancestors). Ignore if we've - // already captured the event. + // Why?????????? + if (!data || isEmptyObject(data)) { + return; + } - if (self._lastCapturedEvent === evt) return; - self._lastCapturedEvent = evt; // try/catch both: - // - accessing evt.target (see getsentry/raven-js#838, #768) - // - `htmlTreeAsString` because it's complex, and just accessing the DOM incorrectly - // can throw an exception in some circumstances. + // Check if the request should be filtered or not + if ( + isFunction(globalOptions.shouldSendCallback) && + !globalOptions.shouldSendCallback(data) + ) { + return; + } - var target; + // Backoff state: Sentry server previously responded w/ an error (e.g. 429 - too many requests), + // so drop requests until "cool-off" period has elapsed. + if (this._shouldBackoff()) { + this._logDebug('warn', 'Raven dropped error due to backoff: ', data); + return; + } - try { - target = htmlTreeAsString(evt.target); - } catch (e) { - target = ''; + if (typeof globalOptions.sampleRate === 'number') { + if (Math.random() < globalOptions.sampleRate) { + this._sendProcessedPayload(data); } - - self.captureBreadcrumb({ - category: 'ui.' + evtName, - // e.g. ui.click, ui.input - message: target - }); - }; + } else { + this._sendProcessedPayload(data); + } }, - /** - * Wraps addEventListener to capture keypress UI events - * @returns {Function} - * @private - */ - _keypressEventHandler: function _keypressEventHandler() { - var self = this, - debounceDuration = 1000; // milliseconds - // TODO: if somehow user switches keypress target before - // debounce timeout is triggered, we will only capture - // a single breadcrumb from the FIRST target (acceptable?) + _sanitizeData: function(data) { + return sanitize(data, this._globalOptions.sanitizeKeys); + }, - return function (evt) { - var target; + _getUuid: function() { + return uuid4(); + }, - try { - target = evt.target; - } catch (e) { - // just accessing event properties can throw an exception in some rare circumstances - // see: https://github.com/getsentry/raven-js/issues/838 - return; - } + _sendProcessedPayload: function(data, callback) { + var self = this; + var globalOptions = this._globalOptions; - var tagName = target && target.tagName; // only consider keypress events on actual input elements - // this will disregard keypresses targeting body (e.g. tabbing - // through elements, hotkeys, etc) + if (!this.isSetup()) return; - if (!tagName || tagName !== 'INPUT' && tagName !== 'TEXTAREA' && !target.isContentEditable) return; // record first keypress in a series, but ignore subsequent - // keypresses until debounce clears + // Try and clean up the packet before sending by truncating long values + data = this._trimPacket(data); - var timeout = self._keypressTimeout; + // ideally duplicate error testing should occur *before* dataCallback/shouldSendCallback, + // but this would require copying an un-truncated copy of the data packet, which can be + // arbitrarily deep (extra_data) -- could be worthwhile? will revisit + if (!this._globalOptions.allowDuplicates && this._isRepeatData(data)) { + this._logDebug('warn', 'Raven dropped repeat event: ', data); + return; + } - if (!timeout) { - self._breadcrumbEventHandler('input')(evt); - } + // Send along an event_id if not explicitly passed. + // This event_id can be used to reference the error within Sentry itself. + // Set lastEventId after we know the error should actually be sent + this._lastEventId = data.event_id || (data.event_id = this._getUuid()); - clearTimeout(timeout); - self._keypressTimeout = setTimeout(function () { - self._keypressTimeout = null; - }, debounceDuration); - }; - }, + // Store outbound payload after trim + this._lastData = data; - /** - * Captures a breadcrumb of type "navigation", normalizing input URLs - * @param to the originating URL - * @param from the target URL - * @private - */ - _captureUrlChange: function _captureUrlChange(from, to) { - var parsedLoc = parseUrl(this._location.href); - var parsedTo = parseUrl(to); - var parsedFrom = parseUrl(from); // because onpopstate only tells you the "new" (to) value of location.href, and - // not the previous (from) value, we need to track the value of the current URL - // state ourselves + this._logDebug('debug', 'Raven about to send:', data); - this._lastHref = to; // Use only the path component of the URL if the URL matches the current - // document (almost all the time when using pushState) + var auth = { + sentry_version: '7', + sentry_client: 'raven-js/' + this.VERSION, + sentry_key: this._globalKey + }; - if (parsedLoc.protocol === parsedTo.protocol && parsedLoc.host === parsedTo.host) to = parsedTo.relative; - if (parsedLoc.protocol === parsedFrom.protocol && parsedLoc.host === parsedFrom.host) from = parsedFrom.relative; - this.captureBreadcrumb({ - category: 'navigation', - data: { - to: to, - from: from - } - }); - }, - _patchFunctionToString: function _patchFunctionToString() { - var self = this; - self._originalFunctionToString = Function.prototype.toString; // eslint-disable-next-line no-extend-native + if (this._globalSecret) { + auth.sentry_secret = this._globalSecret; + } - Function.prototype.toString = function () { - if (typeof this === 'function' && this.__raven__) { - return self._originalFunctionToString.apply(this.__orig__, arguments); - } + var exception = data.exception && data.exception.values[0]; - return self._originalFunctionToString.apply(this, arguments); - }; - }, - _unpatchFunctionToString: function _unpatchFunctionToString() { - if (this._originalFunctionToString) { - // eslint-disable-next-line no-extend-native - Function.prototype.toString = this._originalFunctionToString; + // only capture 'sentry' breadcrumb is autoBreadcrumbs is truthy + if ( + this._globalOptions.autoBreadcrumbs && + this._globalOptions.autoBreadcrumbs.sentry + ) { + this.captureBreadcrumb({ + category: 'sentry', + message: exception + ? (exception.type ? exception.type + ': ' : '') + exception.value + : data.message, + event_id: data.event_id, + level: data.level || 'error' // presume error unless specified + }); } - }, - /** - * Wrap timer functions and event targets to catch errors and provide - * better metadata. - */ - _instrumentTryCatch: function _instrumentTryCatch() { - var self = this; - var wrappedBuiltIns = self._wrappedBuiltIns; + var url = this._globalEndpoint; + (globalOptions.transport || this._makeRequest).call(this, { + url: url, + auth: auth, + data: data, + options: globalOptions, + onSuccess: function success() { + self._resetBackoff(); - function wrapTimeFn(orig) { - return function (fn, t) { - // preserve arity - // Make a copy of the arguments to prevent deoptimization - // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments - var args = new Array(arguments.length); + self._triggerEvent('success', { + data: data, + src: url + }); + callback && callback(); + }, + onError: function failure(error) { + self._logDebug('error', 'Raven transport failed to send: ', error); - for (var i = 0; i < args.length; ++i) { - args[i] = arguments[i]; + if (error.request) { + self._setBackoffState(error.request); } - var originalCallback = args[0]; + self._triggerEvent('failure', { + data: data, + src: url + }); + error = error || new Error('Raven send failed (no additional details provided)'); + callback && callback(error); + } + }); + }, - if (isFunction(originalCallback)) { - args[0] = self.wrap(originalCallback); - } // IE < 9 doesn't support .call/.apply on setInterval/setTimeout, but it - // also supports only two arguments and doesn't care what this is, so we - // can just call the original function directly. + _makeRequest: function(opts) { + // Auth is intentionally sent as part of query string (NOT as custom HTTP header) to avoid preflight CORS requests + var url = opts.url + '?' + urlencode(opts.auth); + var evaluatedHeaders = null; + var evaluatedFetchParameters = {}; - if (orig.apply) { - return orig.apply(this, args); - } else { - return orig(args[0], args[1]); - } - }; + if (opts.options.headers) { + evaluatedHeaders = this._evaluateHash(opts.options.headers); } - var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; - - function wrapEventTarget(global) { - var proto = _window$1[global] && _window$1[global].prototype; + if (opts.options.fetchParameters) { + evaluatedFetchParameters = this._evaluateHash(opts.options.fetchParameters); + } - if (proto && proto.hasOwnProperty && proto.hasOwnProperty('addEventListener')) { - fill(proto, 'addEventListener', function (orig) { - return function (evtName, fn, capture, secure) { - // preserve arity - try { - if (fn && fn.handleEvent) { - fn.handleEvent = self.wrap(fn.handleEvent); - } - } catch (err) {} // can sometimes get 'Permission denied to access property "handle Event' - // More breadcrumb DOM capture ... done here and not in `_instrumentBreadcrumbs` - // so that we don't have more than one wrapper function + if (supportsFetch()) { + evaluatedFetchParameters.body = stringify(opts.data); + var defaultFetchOptions = objectMerge({}, this._fetchDefaults); + var fetchOptions = objectMerge(defaultFetchOptions, evaluatedFetchParameters); - var before, clickHandler, keypressHandler; + if (evaluatedHeaders) { + fetchOptions.headers = evaluatedHeaders; + } - if (autoBreadcrumbs && autoBreadcrumbs.dom && (global === 'EventTarget' || global === 'Node')) { - // NOTE: generating multiple handlers per addEventListener invocation, should - // revisit and verify we can just use one (almost certainly) - clickHandler = self._breadcrumbEventHandler('click'); - keypressHandler = self._keypressEventHandler(); + return _window + .fetch(url, fetchOptions) + .then(function(response) { + if (response.ok) { + opts.onSuccess && opts.onSuccess(); + } else { + var error = new Error('Sentry error code: ' + response.status); + // It's called request only to keep compatibility with XHR interface + // and not add more redundant checks in setBackoffState method + error.request = response; + opts.onError && opts.onError(error); + } + }) + ['catch'](function() { + opts.onError && + opts.onError(new Error('Sentry error code: network unavailable')); + }); + } - before = function before(evt) { - // need to intercept every DOM event in `before` argument, in case that - // same wrapped method is re-used for different events (e.g. mousemove THEN click) - // see #724 - if (!evt) return; - var eventType; + var request = _window.XMLHttpRequest && new _window.XMLHttpRequest(); + if (!request) return; - try { - eventType = evt.type; - } catch (e) { - // just accessing event properties can throw an exception in some rare circumstances - // see: https://github.com/getsentry/raven-js/issues/838 - return; - } + // if browser doesn't support CORS (e.g. IE7), we are out of luck + var hasCORS = 'withCredentials' in request || typeof XDomainRequest !== 'undefined'; - if (eventType === 'click') return clickHandler(evt);else if (eventType === 'keypress') return keypressHandler(evt); - }; - } + if (!hasCORS) return; - return orig.call(this, evtName, self.wrap(fn, undefined, before), capture, secure); - }; - }, wrappedBuiltIns); - fill(proto, 'removeEventListener', function (orig) { - return function (evt, fn, capture, secure) { - try { - fn = fn && (fn.__raven_wrapper__ ? fn.__raven_wrapper__ : fn); - } catch (e) {// ignore, accessing __raven_wrapper__ will throw in some Selenium environments - } + if ('withCredentials' in request) { + request.onreadystatechange = function() { + if (request.readyState !== 4) { + return; + } else if (request.status === 200) { + opts.onSuccess && opts.onSuccess(); + } else if (opts.onError) { + var err = new Error('Sentry error code: ' + request.status); + err.request = request; + opts.onError(err); + } + }; + } else { + request = new XDomainRequest(); + // xdomainrequest cannot go http -> https (or vice versa), + // so always use protocol relative + url = url.replace(/^https?:/, ''); - return orig.call(this, evt, fn, capture, secure); - }; - }, wrappedBuiltIns); + // onreadystatechange not supported by XDomainRequest + if (opts.onSuccess) { + request.onload = opts.onSuccess; + } + if (opts.onError) { + request.onerror = function() { + var err = new Error('Sentry error code: XDomainRequest'); + err.request = request; + opts.onError(err); + }; } } - fill(_window$1, 'setTimeout', wrapTimeFn, wrappedBuiltIns); - fill(_window$1, 'setInterval', wrapTimeFn, wrappedBuiltIns); + request.open('POST', url); - if (_window$1.requestAnimationFrame) { - fill(_window$1, 'requestAnimationFrame', function (orig) { - return function (cb) { - return orig(self.wrap(cb)); - }; - }, wrappedBuiltIns); - } // event targets borrowed from bugsnag-js: - // https://github.com/bugsnag/bugsnag-js/blob/master/src/bugsnag.js#L666 + if (evaluatedHeaders) { + each(evaluatedHeaders, function(key, value) { + request.setRequestHeader(key, value); + }); + } + request.send(stringify(opts.data)); + }, - var eventTargets = ['EventTarget', 'Window', 'Node', 'ApplicationCache', 'AudioTrackList', 'ChannelMergerNode', 'CryptoOperation', 'EventSource', 'FileReader', 'HTMLUnknownElement', 'IDBDatabase', 'IDBRequest', 'IDBTransaction', 'KeyOperation', 'MediaController', 'MessagePort', 'ModalWindow', 'Notification', 'SVGElementInstance', 'Screen', 'TextTrack', 'TextTrackCue', 'TextTrackList', 'WebSocket', 'WebSocketWorker', 'Worker', 'XMLHttpRequest', 'XMLHttpRequestEventTarget', 'XMLHttpRequestUpload']; + _evaluateHash: function(hash) { + var evaluated = {}; - for (var i = 0; i < eventTargets.length; i++) { - wrapEventTarget(eventTargets[i]); + for (var key in hash) { + if (hash.hasOwnProperty(key)) { + var value = hash[key]; + evaluated[key] = typeof value === 'function' ? value() : value; + } } + + return evaluated; }, - /** - * Instrument browser built-ins w/ breadcrumb capturing - * - XMLHttpRequests - * - DOM interactions (click/typing) - * - window.location changes - * - console - * - * Can be disabled or individually configured via the `autoBreadcrumbs` config option - */ - _instrumentBreadcrumbs: function _instrumentBreadcrumbs() { - var self = this; - var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; - var wrappedBuiltIns = self._wrappedBuiltIns; + _logDebug: function(level) { + // We allow `Raven.debug` and `Raven.config(DSN, { debug: true })` to not make backward incompatible API change + if ( + this._originalConsoleMethods[level] && + (this.debug || this._globalOptions.debug) + ) { + // In IE<10 console methods do not have their own 'apply' method + Function.prototype.apply.call( + this._originalConsoleMethods[level], + this._originalConsole, + [].slice.call(arguments, 1) + ); + } + }, - function wrapProp(prop, xhr) { - if (prop in xhr && isFunction(xhr[prop])) { - fill(xhr, prop, function (orig) { - return self.wrap(orig); - }); // intentionally don't track filled methods on XHR instances - } + _mergeContext: function(key, context) { + if (isUndefined(context)) { + delete this._globalContext[key]; + } else { + this._globalContext[key] = objectMerge(this._globalContext[key] || {}, context); } + } +}; - if (autoBreadcrumbs.xhr && 'XMLHttpRequest' in _window$1) { - var xhrproto = XMLHttpRequest.prototype; - fill(xhrproto, 'open', function (origOpen) { - return function (method, url) { - // preserve arity - // if Sentry key appears in URL, don't capture - if (isString(url) && url.indexOf(self._globalKey) === -1) { - this.__raven_xhr = { - method: method, - url: url, - status_code: null - }; - } +// Deprecations +Raven.prototype.setUser = Raven.prototype.setUserContext; +Raven.prototype.setReleaseContext = Raven.prototype.setRelease; - return origOpen.apply(this, arguments); - }; - }, wrappedBuiltIns); - fill(xhrproto, 'send', function (origSend) { - return function () { - // preserve arity - var xhr = this; - - function onreadystatechangeHandler() { - if (xhr.__raven_xhr && xhr.readyState === 4) { - try { - // touching statusCode in some platforms throws - // an exception - xhr.__raven_xhr.status_code = xhr.status; - } catch (e) { - /* do nothing */ - } +module.exports = Raven; - self.captureBreadcrumb({ - type: 'http', - category: 'xhr', - data: xhr.__raven_xhr - }); - } - } +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"10":10,"11":11,"4":4,"5":5,"8":8,"9":9}],7:[function(_dereq_,module,exports){ +(function (global){ +/** + * Enforces a single instance of the Raven client, and the + * main entry point for Raven. If you are a consumer of the + * Raven library, you SHOULD load this file (vs raven.js). + **/ - var props = ['onload', 'onerror', 'onprogress']; +var RavenConstructor = _dereq_(6); - for (var j = 0; j < props.length; j++) { - wrapProp(props[j], xhr); - } +// This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) +var _window = + typeof window !== 'undefined' + ? window + : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; +var _Raven = _window.Raven; - if ('onreadystatechange' in xhr && isFunction(xhr.onreadystatechange)) { - fill(xhr, 'onreadystatechange', function (orig) { - return self.wrap(orig, undefined, onreadystatechangeHandler); - } - /* intentionally don't track this instrumentation */ - ); - } else { - // if onreadystatechange wasn't actually set by the page on this xhr, we - // are free to set our own and capture the breadcrumb - xhr.onreadystatechange = onreadystatechangeHandler; - } +var Raven = new RavenConstructor(); - return origSend.apply(this, arguments); - }; - }, wrappedBuiltIns); - } +/* + * Allow multiple versions of Raven to be installed. + * Strip Raven from the global context and returns the instance. + * + * @return {Raven} + */ +Raven.noConflict = function() { + _window.Raven = _Raven; + return Raven; +}; - if (autoBreadcrumbs.xhr && supportsFetch()) { - fill(_window$1, 'fetch', function (origFetch) { - return function () { - // preserve arity - // Make a copy of the arguments to prevent deoptimization - // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments - var args = new Array(arguments.length); - - for (var i = 0; i < args.length; ++i) { - args[i] = arguments[i]; - } +Raven.afterLoad(); - var fetchInput = args[0]; - var method = 'GET'; - var url; +module.exports = Raven; - if (typeof fetchInput === 'string') { - url = fetchInput; - } else if ('Request' in _window$1 && fetchInput instanceof _window$1.Request) { - url = fetchInput.url; +/** + * DISCLAIMER: + * + * Expose `Client` constructor for cases where user want to track multiple "sub-applications" in one larger app. + * It's not meant to be used by a wide audience, so pleaaase make sure that you know what you're doing before using it. + * Accidentally calling `install` multiple times, may result in an unexpected behavior that's very hard to debug. + * + * It's called `Client' to be in-line with Raven Node implementation. + * + * HOWTO: + * + * import Raven from 'raven-js'; + * + * const someAppReporter = new Raven.Client(); + * const someOtherAppReporter = new Raven.Client(); + * + * someAppReporter.config('__DSN__', { + * ...config goes here + * }); + * + * someOtherAppReporter.config('__OTHER_DSN__', { + * ...config goes here + * }); + * + * someAppReporter.captureMessage(...); + * someAppReporter.captureException(...); + * someAppReporter.captureBreadcrumb(...); + * + * someOtherAppReporter.captureMessage(...); + * someOtherAppReporter.captureException(...); + * someOtherAppReporter.captureBreadcrumb(...); + * + * It should "just work". + */ +module.exports.Client = RavenConstructor; - if (fetchInput.method) { - method = fetchInput.method; - } - } else { - url = '' + fetchInput; - } // if Sentry key appears in URL, don't capture, as it's our own request +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"6":6}],8:[function(_dereq_,module,exports){ +(function (global){ +var stringify = _dereq_(10); +var _window = + typeof window !== 'undefined' + ? window + : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; - if (url.indexOf(self._globalKey) !== -1) { - return origFetch.apply(this, args); - } +function isObject(what) { + return typeof what === 'object' && what !== null; +} - if (args[1] && args[1].method) { - method = args[1].method; - } +// Yanked from https://git.io/vS8DV re-used under CC0 +// with some tiny modifications +function isError(value) { + switch ({}.toString.call(value)) { + case '[object Error]': + return true; + case '[object Exception]': + return true; + case '[object DOMException]': + return true; + default: + return value instanceof Error; + } +} - var fetchData = { - method: method, - url: url, - status_code: null - }; - return origFetch.apply(this, args).then(function (response) { - fetchData.status_code = response.status; - self.captureBreadcrumb({ - type: 'http', - category: 'fetch', - data: fetchData - }); - return response; - }); - }; - }, wrappedBuiltIns); - } // Capture breadcrumbs from any click that is unhandled / bubbled up all the way - // to the document. Do this before we instrument addEventListener. +function isErrorEvent(value) { + return supportsErrorEvent() && {}.toString.call(value) === '[object ErrorEvent]'; +} +function isUndefined(what) { + return what === void 0; +} - if (autoBreadcrumbs.dom && this._hasDocument) { - if (_document.addEventListener) { - _document.addEventListener('click', self._breadcrumbEventHandler('click'), false); +function isFunction(what) { + return typeof what === 'function'; +} - _document.addEventListener('keypress', self._keypressEventHandler(), false); - } else { - // IE8 Compatibility - _document.attachEvent('onclick', self._breadcrumbEventHandler('click')); +function isPlainObject(what) { + return Object.prototype.toString.call(what) === '[object Object]'; +} - _document.attachEvent('onkeypress', self._keypressEventHandler()); - } - } // record navigation (URL) changes - // NOTE: in Chrome App environment, touching history.pushState, *even inside - // a try/catch block*, will cause Chrome to output an error to console.error - // borrowed from: https://github.com/angular/angular.js/pull/13945/files +function isString(what) { + return Object.prototype.toString.call(what) === '[object String]'; +} +function isArray(what) { + return Object.prototype.toString.call(what) === '[object Array]'; +} - var chrome = _window$1.chrome; - var isChromePackagedApp = chrome && chrome.app && chrome.app.runtime; - var hasPushAndReplaceState = !isChromePackagedApp && _window$1.history && history.pushState && history.replaceState; +function isEmptyObject(what) { + if (!isPlainObject(what)) return false; - if (autoBreadcrumbs.location && hasPushAndReplaceState) { - // TODO: remove onpopstate handler on uninstall() - var oldOnPopState = _window$1.onpopstate; + for (var _ in what) { + if (what.hasOwnProperty(_)) { + return false; + } + } + return true; +} - _window$1.onpopstate = function () { - var currentHref = self._location.href; +function supportsErrorEvent() { + try { + new ErrorEvent(''); // eslint-disable-line no-new + return true; + } catch (e) { + return false; + } +} - self._captureUrlChange(self._lastHref, currentHref); +function supportsFetch() { + if (!('fetch' in _window)) return false; - if (oldOnPopState) { - return oldOnPopState.apply(this, arguments); - } - }; + try { + new Headers(); // eslint-disable-line no-new + new Request(''); // eslint-disable-line no-new + new Response(); // eslint-disable-line no-new + return true; + } catch (e) { + return false; + } +} - var historyReplacementFunction = function historyReplacementFunction(origHistFunction) { - // note history.pushState.length is 0; intentionally not declaring - // params to preserve 0 arity - return function () - /* state, title, url */ - { - var url = arguments.length > 2 ? arguments[2] : undefined; // url argument is optional +// Despite all stars in the sky saying that Edge supports old draft syntax, aka 'never', 'always', 'origin' and 'default +// https://caniuse.com/#feat=referrer-policy +// It doesn't. And it throw exception instead of ignoring this parameter... +// REF: https://github.com/getsentry/raven-js/issues/1233 +function supportsReferrerPolicy() { + if (!supportsFetch()) return false; - if (url) { - // coerce to string (this is what pushState does) - self._captureUrlChange(self._lastHref, url + ''); - } + try { + // eslint-disable-next-line no-new + new Request('pickleRick', { + referrerPolicy: 'origin' + }); + return true; + } catch (e) { + return false; + } +} - return origHistFunction.apply(this, arguments); - }; - }; +function supportsPromiseRejectionEvent() { + return typeof PromiseRejectionEvent === 'function'; +} - fill(history, 'pushState', historyReplacementFunction, wrappedBuiltIns); - fill(history, 'replaceState', historyReplacementFunction, wrappedBuiltIns); +function wrappedCallback(callback) { + function dataCallback(data, original) { + var normalizedData = callback(data) || data; + if (original) { + return original(normalizedData) || normalizedData; } + return normalizedData; + } - if (autoBreadcrumbs.console && 'console' in _window$1 && console.log) { - // console - var consoleMethodCallback = function consoleMethodCallback(msg, data) { - self.captureBreadcrumb({ - message: msg, - level: data.level, - category: 'console' - }); - }; + return dataCallback; +} - each(['debug', 'info', 'warn', 'error', 'log'], function (_, level) { - wrapConsoleMethod(console, level, consoleMethodCallback); - }); - } - }, - _restoreBuiltIns: function _restoreBuiltIns() { - // restore any wrapped builtins - var builtin; +function each(obj, callback) { + var i, j; - while (this._wrappedBuiltIns.length) { - builtin = this._wrappedBuiltIns.shift(); - var obj = builtin[0], - name = builtin[1], - orig = builtin[2]; - obj[name] = orig; + if (isUndefined(obj.length)) { + for (i in obj) { + if (hasKey(obj, i)) { + callback.call(null, i, obj[i]); + } } - }, - _restoreConsole: function _restoreConsole() { - // eslint-disable-next-line guard-for-in - for (var method in this._originalConsoleMethods) { - this._originalConsole[method] = this._originalConsoleMethods[method]; + } else { + j = obj.length; + if (j) { + for (i = 0; i < j; i++) { + callback.call(null, i, obj[i]); + } } - }, - _drainPlugins: function _drainPlugins() { - var self = this; // FIX ME TODO + } +} - each(this._plugins, function (_, plugin) { - var installer = plugin[0]; - var args = plugin[1]; - installer.apply(self, [self].concat(args)); - }); - }, - _parseDSN: function _parseDSN(str) { - var m = dsnPattern.exec(str), - dsn = {}, - i = 7; +function objectMerge(obj1, obj2) { + if (!obj2) { + return obj1; + } + each(obj2, function(key, value) { + obj1[key] = value; + }); + return obj1; +} - try { - while (i--) { - dsn[dsnKeys[i]] = m[i] || ''; - } - } catch (e) { - throw new configError('Invalid DSN: ' + str); - } +/** + * This function is only used for react-native. + * react-native freezes object that have already been sent over the + * js bridge. We need this function in order to check if the object is frozen. + * So it's ok that objectFrozen returns false if Object.isFrozen is not + * supported because it's not relevant for other "platforms". See related issue: + * https://github.com/getsentry/react-native-sentry/issues/57 + */ +function objectFrozen(obj) { + if (!Object.isFrozen) { + return false; + } + return Object.isFrozen(obj); +} - if (dsn.pass && !this._globalOptions.allowSecretKey) { - throw new configError('Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key'); - } +function truncate(str, max) { + if (typeof max !== 'number') { + throw new Error('2nd argument to `truncate` function should be a number'); + } + if (typeof str !== 'string' || max === 0) { + return str; + } + return str.length <= max ? str : str.substr(0, max) + '\u2026'; +} - return dsn; - }, - _getGlobalServer: function _getGlobalServer(uri) { - // assemble the endpoint from the uri pieces - var globalServer = '//' + uri.host + (uri.port ? ':' + uri.port : ''); +/** + * hasKey, a better form of hasOwnProperty + * Example: hasKey(MainHostObject, property) === true/false + * + * @param {Object} host object to check property + * @param {string} key to check + */ +function hasKey(object, key) { + return Object.prototype.hasOwnProperty.call(object, key); +} - if (uri.protocol) { - globalServer = uri.protocol + ':' + globalServer; - } +function joinRegExp(patterns) { + // Combine an array of regular expressions and strings into one large regexp + // Be mad. + var sources = [], + i = 0, + len = patterns.length, + pattern; - return globalServer; - }, - _handleOnErrorStackInfo: function _handleOnErrorStackInfo() { - // if we are intentionally ignoring errors via onerror, bail out - if (!this._ignoreOnError) { - this._handleStackInfo.apply(this, arguments); + for (; i < len; i++) { + pattern = patterns[i]; + if (isString(pattern)) { + // If it's a string, we need to escape it + // Taken from: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions + sources.push(pattern.replace(/([.*+?^=!:${}()|\[\]\/\\])/g, '\\$1')); + } else if (pattern && pattern.source) { + // If it's a regexp already, we want to extract the source + sources.push(pattern.source); } - }, - _handleStackInfo: function _handleStackInfo(stackInfo, options) { - var frames = this._prepareFrames(stackInfo, options); + // Intentionally skip other cases + } + return new RegExp(sources.join('|'), 'i'); +} - this._triggerEvent('handle', { - stackInfo: stackInfo, - options: options - }); +function urlencode(o) { + var pairs = []; + each(o, function(key, value) { + pairs.push(encodeURIComponent(key) + '=' + encodeURIComponent(value)); + }); + return pairs.join('&'); +} - this._processException(stackInfo.name, stackInfo.message, stackInfo.url, stackInfo.lineno, frames, options); - }, - _prepareFrames: function _prepareFrames(stackInfo, options) { - var self = this; - var frames = []; +// borrowed from https://tools.ietf.org/html/rfc3986#appendix-B +// intentionally using regex and not href parsing trick because React Native and other +// environments where DOM might not be available +function parseUrl(url) { + if (typeof url !== 'string') return {}; + var match = url.match(/^(([^:\/?#]+):)?(\/\/([^\/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?$/); - if (stackInfo.stack && stackInfo.stack.length) { - each(stackInfo.stack, function (i, stack) { - var frame = self._normalizeFrame(stack, stackInfo.url); + // coerce to undefined values to empty string so we don't get 'undefined' + var query = match[6] || ''; + var fragment = match[8] || ''; + return { + protocol: match[2], + host: match[4], + path: match[5], + relative: match[5] + query + fragment // everything minus origin + }; +} +function uuid4() { + var crypto = _window.crypto || _window.msCrypto; - if (frame) { - frames.push(frame); - } - }); // e.g. frames captured via captureMessage throw + if (!isUndefined(crypto) && crypto.getRandomValues) { + // Use window.crypto API if available + // eslint-disable-next-line no-undef + var arr = new Uint16Array(8); + crypto.getRandomValues(arr); - if (options && options.trimHeadFrames) { - for (var j = 0; j < options.trimHeadFrames && j < frames.length; j++) { - frames[j].in_app = false; - } + // set 4 in byte 7 + arr[3] = (arr[3] & 0xfff) | 0x4000; + // set 2 most significant bits of byte 9 to '10' + arr[4] = (arr[4] & 0x3fff) | 0x8000; + + var pad = function(num) { + var v = num.toString(16); + while (v.length < 4) { + v = '0' + v; } - } + return v; + }; - frames = frames.slice(0, this._globalOptions.stackTraceLimit); - return frames; - }, - _normalizeFrame: function _normalizeFrame(frame, stackInfoUrl) { - // normalize the frames data - var normalized = { - filename: frame.url, - lineno: frame.line, - colno: frame.column, - function: frame.func || '?' - }; // Case when we don't have any information about the error - // E.g. throwing a string or raw object, instead of an `Error` in Firefox - // Generating synthetic error doesn't add any value here - // - // We should probably somehow let a user know that they should fix their code + return ( + pad(arr[0]) + + pad(arr[1]) + + pad(arr[2]) + + pad(arr[3]) + + pad(arr[4]) + + pad(arr[5]) + + pad(arr[6]) + + pad(arr[7]) + ); + } else { + // http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/2117523#2117523 + return 'xxxxxxxxxxxx4xxxyxxxxxxxxxxxxxxx'.replace(/[xy]/g, function(c) { + var r = (Math.random() * 16) | 0, + v = c === 'x' ? r : (r & 0x3) | 0x8; + return v.toString(16); + }); + } +} - if (!frame.url) { - normalized.filename = stackInfoUrl; // fallback to whole stacks url from onerror handler +/** + * Given a child DOM element, returns a query-selector statement describing that + * and its ancestors + * e.g. [HTMLElement] => body > div > input#foo.btn[name=baz] + * @param elem + * @returns {string} + */ +function htmlTreeAsString(elem) { + /* eslint no-extra-parens:0*/ + var MAX_TRAVERSE_HEIGHT = 5, + MAX_OUTPUT_LEN = 80, + out = [], + height = 0, + len = 0, + separator = ' > ', + sepLength = separator.length, + nextStr; + + while (elem && height++ < MAX_TRAVERSE_HEIGHT) { + nextStr = htmlElementAsString(elem); + // bail out if + // - nextStr is the 'html' element + // - the length of the string that would be created exceeds MAX_OUTPUT_LEN + // (ignore this limit if we are on the first iteration) + if ( + nextStr === 'html' || + (height > 1 && len + out.length * sepLength + nextStr.length >= MAX_OUTPUT_LEN) + ) { + break; } - normalized.in_app = !( // determine if an exception came from outside of our app - // first we check the global includePaths list. - !!this._globalOptions.includePaths.test && !this._globalOptions.includePaths.test(normalized.filename) || // Now we check for fun, if the function name is Raven or TraceKit - /(Raven|TraceKit)\./.test(normalized['function']) || // finally, we do a last ditch effort and check for raven.min.js - /raven\.(min\.)?js$/.test(normalized.filename)); - return normalized; - }, - _processException: function _processException(type, message, fileurl, lineno, frames, options) { - var prefixedMessage = (type ? type + ': ' : '') + (message || ''); + out.push(nextStr); - if (!!this._globalOptions.ignoreErrors.test && (this._globalOptions.ignoreErrors.test(message) || this._globalOptions.ignoreErrors.test(prefixedMessage))) { - return; - } + len += nextStr.length; + elem = elem.parentNode; + } - var stacktrace; + return out.reverse().join(separator); +} - if (frames && frames.length) { - fileurl = frames[0].filename || fileurl; // Sentry expects frames oldest to newest - // and JS sends them as newest to oldest +/** + * Returns a simple, query-selector representation of a DOM element + * e.g. [HTMLElement] => input#foo.btn[name=baz] + * @param HTMLElement + * @returns {string} + */ +function htmlElementAsString(elem) { + var out = [], + className, + classes, + key, + attr, + i; - frames.reverse(); - stacktrace = { - frames: frames - }; - } else if (fileurl) { - stacktrace = { - frames: [{ - filename: fileurl, - lineno: lineno, - in_app: true - }] - }; - } + if (!elem || !elem.tagName) { + return ''; + } - if (!!this._globalOptions.ignoreUrls.test && this._globalOptions.ignoreUrls.test(fileurl)) { - return; - } + out.push(elem.tagName.toLowerCase()); + if (elem.id) { + out.push('#' + elem.id); + } - if (!!this._globalOptions.whitelistUrls.test && !this._globalOptions.whitelistUrls.test(fileurl)) { - return; + className = elem.className; + if (className && isString(className)) { + classes = className.split(/\s+/); + for (i = 0; i < classes.length; i++) { + out.push('.' + classes[i]); + } + } + var attrWhitelist = ['type', 'name', 'title', 'alt']; + for (i = 0; i < attrWhitelist.length; i++) { + key = attrWhitelist[i]; + attr = elem.getAttribute(key); + if (attr) { + out.push('[' + key + '="' + attr + '"]'); } + } + return out.join(''); +} - var data = objectMerge({ - // sentry.interfaces.Exception - exception: { - values: [{ - type: type, - value: message, - stacktrace: stacktrace - }] - }, - culprit: fileurl - }, options); // Fire away! +/** + * Returns true if either a OR b is truthy, but not both + */ +function isOnlyOneTruthy(a, b) { + return !!(!!a ^ !!b); +} - this._send(data); - }, - _trimPacket: function _trimPacket(data) { - // For now, we only want to truncate the two different messages - // but this could/should be expanded to just trim everything - var max = this._globalOptions.maxMessageLength; +/** + * Returns true if both parameters are undefined + */ +function isBothUndefined(a, b) { + return isUndefined(a) && isUndefined(b); +} - if (data.message) { - data.message = truncate(data.message, max); - } +/** + * Returns true if the two input exception interfaces have the same content + */ +function isSameException(ex1, ex2) { + if (isOnlyOneTruthy(ex1, ex2)) return false; - if (data.exception) { - var exception = data.exception.values[0]; - exception.value = truncate(exception.value, max); - } + ex1 = ex1.values[0]; + ex2 = ex2.values[0]; - var request = data.request; + if (ex1.type !== ex2.type || ex1.value !== ex2.value) return false; - if (request) { - if (request.url) { - request.url = truncate(request.url, this._globalOptions.maxUrlLength); - } + // in case both stacktraces are undefined, we can't decide so default to false + if (isBothUndefined(ex1.stacktrace, ex2.stacktrace)) return false; - if (request.Referer) { - request.Referer = truncate(request.Referer, this._globalOptions.maxUrlLength); - } - } + return isSameStacktrace(ex1.stacktrace, ex2.stacktrace); +} - if (data.breadcrumbs && data.breadcrumbs.values) this._trimBreadcrumbs(data.breadcrumbs); - return data; - }, +/** + * Returns true if the two input stack trace interfaces have the same content + */ +function isSameStacktrace(stack1, stack2) { + if (isOnlyOneTruthy(stack1, stack2)) return false; - /** - * Truncate breadcrumb values (right now just URLs) - */ - _trimBreadcrumbs: function _trimBreadcrumbs(breadcrumbs) { - // known breadcrumb properties with urls - // TODO: also consider arbitrary prop values that start with (https?)?:// - var urlProps = ['to', 'from', 'url'], - urlProp, - crumb, - data; - - for (var i = 0; i < breadcrumbs.values.length; ++i) { - crumb = breadcrumbs.values[i]; - if (!crumb.hasOwnProperty('data') || !isObject(crumb.data) || objectFrozen(crumb.data)) continue; - data = objectMerge({}, crumb.data); - - for (var j = 0; j < urlProps.length; ++j) { - urlProp = urlProps[j]; - - if (data.hasOwnProperty(urlProp) && data[urlProp]) { - data[urlProp] = truncate(data[urlProp], this._globalOptions.maxUrlLength); - } - } - - breadcrumbs.values[i].data = data; - } - }, - _getHttpData: function _getHttpData() { - if (!this._hasNavigator && !this._hasDocument) return; - var httpData = {}; - - if (this._hasNavigator && _navigator.userAgent) { - httpData.headers = { - 'User-Agent': navigator.userAgent - }; - } // Check in `window` instead of `document`, as we may be in ServiceWorker environment - - - if (_window$1.location && _window$1.location.href) { - httpData.url = _window$1.location.href; - } - - if (this._hasDocument && _document.referrer) { - if (!httpData.headers) httpData.headers = {}; - httpData.headers.Referer = _document.referrer; - } - - return httpData; - }, - _resetBackoff: function _resetBackoff() { - this._backoffDuration = 0; - this._backoffStart = null; - }, - _shouldBackoff: function _shouldBackoff() { - return this._backoffDuration && now() - this._backoffStart < this._backoffDuration; - }, + var frames1 = stack1.frames; + var frames2 = stack2.frames; - /** - * Returns true if the in-process data payload matches the signature - * of the previously-sent data - * - * NOTE: This has to be done at this level because TraceKit can generate - * data from window.onerror WITHOUT an exception object (IE8, IE9, - * other old browsers). This can take the form of an "exception" - * data object with a single frame (derived from the onerror args). - */ - _isRepeatData: function _isRepeatData(current) { - var last = this._lastData; - if (!last || current.message !== last.message || // defined for captureMessage - current.culprit !== last.culprit // defined for captureException/onerror - ) return false; // Stacktrace interface (i.e. from captureMessage) + // Exit early if frame count differs + if (frames1.length !== frames2.length) return false; - if (current.stacktrace || last.stacktrace) { - return isSameStacktrace(current.stacktrace, last.stacktrace); - } else if (current.exception || last.exception) { - // Exception interface (i.e. from captureException/onerror) - return isSameException(current.exception, last.exception); - } + // Iterate through every frame; bail out if anything differs + var a, b; + for (var i = 0; i < frames1.length; i++) { + a = frames1[i]; + b = frames2[i]; + if ( + a.filename !== b.filename || + a.lineno !== b.lineno || + a.colno !== b.colno || + a['function'] !== b['function'] + ) + return false; + } + return true; +} - return true; - }, - _setBackoffState: function _setBackoffState(request) { - // If we are already in a backoff state, don't change anything - if (this._shouldBackoff()) { - return; - } +/** + * Polyfill a method + * @param obj object e.g. `document` + * @param name method name present on object e.g. `addEventListener` + * @param replacement replacement function + * @param track {optional} record instrumentation to an array + */ +function fill(obj, name, replacement, track) { + if (obj == null) return; + var orig = obj[name]; + obj[name] = replacement(orig); + obj[name].__raven__ = true; + obj[name].__orig__ = orig; + if (track) { + track.push([obj, name, orig]); + } +} - var status = request.status; // 400 - project_id doesn't exist or some other fatal - // 401 - invalid/revoked dsn - // 429 - too many requests +/** + * Join values in array + * @param input array of values to be joined together + * @param delimiter string to be placed in-between values + * @returns {string} + */ +function safeJoin(input, delimiter) { + if (!isArray(input)) return ''; - if (!(status === 400 || status === 401 || status === 429)) return; - var retry; + var output = []; + for (var i = 0; i < input.length; i++) { try { - // If Retry-After is not in Access-Control-Expose-Headers, most - // browsers will throw an exception trying to access it - if (supportsFetch()) { - retry = request.headers.get('Retry-After'); - } else { - retry = request.getResponseHeader('Retry-After'); - } // Retry-After is returned in seconds - - - retry = parseInt(retry, 10) * 1000; + output.push(String(input[i])); } catch (e) { - /* eslint no-empty:0 */ + output.push('[value cannot be serialized]'); } + } - this._backoffDuration = retry ? // If Sentry server returned a Retry-After value, use it - retry : // Otherwise, double the last backoff duration (starts at 1 sec) - this._backoffDuration * 2 || 1000; - this._backoffStart = now(); - }, - _send: function _send(data) { - var globalOptions = this._globalOptions; - - var baseData = { - project: this._globalProject, - logger: globalOptions.logger, - platform: 'javascript' - }, - httpData = this._getHttpData(); - - if (httpData) { - baseData.request = httpData; - } // HACK: delete `trimHeadFrames` to prevent from appearing in outbound payload + return output.join(delimiter); +} +// Default Node.js REPL depth +var MAX_SERIALIZE_EXCEPTION_DEPTH = 3; +// 50kB, as 100kB is max payload size, so half sounds reasonable +var MAX_SERIALIZE_EXCEPTION_SIZE = 50 * 1024; +var MAX_SERIALIZE_KEYS_LENGTH = 40; - if (data.trimHeadFrames) delete data.trimHeadFrames; - data = objectMerge(baseData, data); // Merge in the tags and extra separately since objectMerge doesn't handle a deep merge +function utf8Length(value) { + return ~-encodeURI(value).split(/%..|./).length; +} - data.tags = objectMerge(objectMerge({}, this._globalContext.tags), data.tags); - data.extra = objectMerge(objectMerge({}, this._globalContext.extra), data.extra); // Send along our own collected metadata with extra +function jsonSize(value) { + return utf8Length(JSON.stringify(value)); +} - data.extra['session:duration'] = now() - this._startTime; +function serializeValue(value) { + if (typeof value === 'string') { + var maxLength = 40; + return truncate(value, maxLength); + } else if ( + typeof value === 'number' || + typeof value === 'boolean' || + typeof value === 'undefined' + ) { + return value; + } - if (this._breadcrumbs && this._breadcrumbs.length > 0) { - // intentionally make shallow copy so that additions - // to breadcrumbs aren't accidentally sent in this request - data.breadcrumbs = { - values: [].slice.call(this._breadcrumbs, 0) - }; - } + var type = Object.prototype.toString.call(value); - if (this._globalContext.user) { - // sentry.interfaces.User - data.user = this._globalContext.user; - } // Include the environment if it's defined in globalOptions + // Node.js REPL notation + if (type === '[object Object]') return '[Object]'; + if (type === '[object Array]') return '[Array]'; + if (type === '[object Function]') + return value.name ? '[Function: ' + value.name + ']' : '[Function]'; + return value; +} - if (globalOptions.environment) data.environment = globalOptions.environment; // Include the release if it's defined in globalOptions +function serializeObject(value, depth) { + if (depth === 0) return serializeValue(value); + + if (isPlainObject(value)) { + return Object.keys(value).reduce(function(acc, key) { + acc[key] = serializeObject(value[key], depth - 1); + return acc; + }, {}); + } else if (Array.isArray(value)) { + return value.map(function(val) { + return serializeObject(val, depth - 1); + }); + } - if (globalOptions.release) data.release = globalOptions.release; // Include server_name if it's defined in globalOptions + return serializeValue(value); +} - if (globalOptions.serverName) data.server_name = globalOptions.serverName; // Cleanup empty properties before sending them to the server +function serializeException(ex, depth, maxSize) { + if (!isPlainObject(ex)) return ex; - Object.keys(data).forEach(function (key) { - if (data[key] == null || data[key] === '' || isEmptyObject(data[key])) { - delete data[key]; - } - }); + depth = typeof depth !== 'number' ? MAX_SERIALIZE_EXCEPTION_DEPTH : depth; + maxSize = typeof depth !== 'number' ? MAX_SERIALIZE_EXCEPTION_SIZE : maxSize; - if (isFunction(globalOptions.dataCallback)) { - data = globalOptions.dataCallback(data) || data; - } // Why?????????? + var serialized = serializeObject(ex, depth); + if (jsonSize(stringify(serialized)) > maxSize) { + return serializeException(ex, depth - 1); + } - if (!data || isEmptyObject(data)) { - return; - } // Check if the request should be filtered or not + return serialized; +} +function serializeKeysForMessage(keys, maxLength) { + if (typeof keys === 'number' || typeof keys === 'string') return keys.toString(); + if (!Array.isArray(keys)) return ''; - if (isFunction(globalOptions.shouldSendCallback) && !globalOptions.shouldSendCallback(data)) { - return; - } // Backoff state: Sentry server previously responded w/ an error (e.g. 429 - too many requests), - // so drop requests until "cool-off" period has elapsed. + keys = keys.filter(function(key) { + return typeof key === 'string'; + }); + if (keys.length === 0) return '[object has no keys]'; + maxLength = typeof maxLength !== 'number' ? MAX_SERIALIZE_KEYS_LENGTH : maxLength; + if (keys[0].length >= maxLength) return keys[0]; - if (this._shouldBackoff()) { - this._logDebug('warn', 'Raven dropped error due to backoff: ', data); + for (var usedKeys = keys.length; usedKeys > 0; usedKeys--) { + var serialized = keys.slice(0, usedKeys).join(', '); + if (serialized.length > maxLength) continue; + if (usedKeys === keys.length) return serialized; + return serialized + '\u2026'; + } - return; - } + return ''; +} - if (typeof globalOptions.sampleRate === 'number') { - if (Math.random() < globalOptions.sampleRate) { - this._sendProcessedPayload(data); - } - } else { - this._sendProcessedPayload(data); - } - }, - _getUuid: function _getUuid() { - return uuid4(); - }, - _sendProcessedPayload: function _sendProcessedPayload(data, callback) { - var self = this; - var globalOptions = this._globalOptions; - if (!this.isSetup()) return; // Try and clean up the packet before sending by truncating long values +function sanitize(input, sanitizeKeys) { + if (!isArray(sanitizeKeys) || (isArray(sanitizeKeys) && sanitizeKeys.length === 0)) + return input; - data = this._trimPacket(data); // ideally duplicate error testing should occur *before* dataCallback/shouldSendCallback, - // but this would require copying an un-truncated copy of the data packet, which can be - // arbitrarily deep (extra_data) -- could be worthwhile? will revisit + var sanitizeRegExp = joinRegExp(sanitizeKeys); + var sanitizeMask = '********'; + var safeInput; - if (!this._globalOptions.allowDuplicates && this._isRepeatData(data)) { - this._logDebug('warn', 'Raven dropped repeat event: ', data); + try { + safeInput = JSON.parse(stringify(input)); + } catch (o_O) { + return input; + } - return; - } // Send along an event_id if not explicitly passed. - // This event_id can be used to reference the error within Sentry itself. - // Set lastEventId after we know the error should actually be sent + function sanitizeWorker(workerInput) { + if (isArray(workerInput)) { + return workerInput.map(function(val) { + return sanitizeWorker(val); + }); + } + if (isPlainObject(workerInput)) { + return Object.keys(workerInput).reduce(function(acc, k) { + if (sanitizeRegExp.test(k)) { + acc[k] = sanitizeMask; + } else { + acc[k] = sanitizeWorker(workerInput[k]); + } + return acc; + }, {}); + } - this._lastEventId = data.event_id || (data.event_id = this._getUuid()); // Store outbound payload after trim + return workerInput; + } - this._lastData = data; + return sanitizeWorker(safeInput); +} - this._logDebug('debug', 'Raven about to send:', data); +module.exports = { + isObject: isObject, + isError: isError, + isErrorEvent: isErrorEvent, + isUndefined: isUndefined, + isFunction: isFunction, + isPlainObject: isPlainObject, + isString: isString, + isArray: isArray, + isEmptyObject: isEmptyObject, + supportsErrorEvent: supportsErrorEvent, + supportsFetch: supportsFetch, + supportsReferrerPolicy: supportsReferrerPolicy, + supportsPromiseRejectionEvent: supportsPromiseRejectionEvent, + wrappedCallback: wrappedCallback, + each: each, + objectMerge: objectMerge, + truncate: truncate, + objectFrozen: objectFrozen, + hasKey: hasKey, + joinRegExp: joinRegExp, + urlencode: urlencode, + uuid4: uuid4, + htmlTreeAsString: htmlTreeAsString, + htmlElementAsString: htmlElementAsString, + isSameException: isSameException, + isSameStacktrace: isSameStacktrace, + parseUrl: parseUrl, + fill: fill, + safeJoin: safeJoin, + serializeException: serializeException, + serializeKeysForMessage: serializeKeysForMessage, + sanitize: sanitize +}; - var auth = { - sentry_version: '7', - sentry_client: 'raven-js/' + this.VERSION, - sentry_key: this._globalKey - }; +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"10":10}],9:[function(_dereq_,module,exports){ +(function (global){ +var utils = _dereq_(8); - if (this._globalSecret) { - auth.sentry_secret = this._globalSecret; - } +/* + TraceKit - Cross brower stack traces - var exception = data.exception && data.exception.values[0]; // only capture 'sentry' breadcrumb is autoBreadcrumbs is truthy + This was originally forked from github.com/occ/TraceKit, but has since been + largely re-written and is now maintained as part of raven-js. Tests for + this are in test/vendor. - if (this._globalOptions.autoBreadcrumbs && this._globalOptions.autoBreadcrumbs.sentry) { - this.captureBreadcrumb({ - category: 'sentry', - message: exception ? (exception.type ? exception.type + ': ' : '') + exception.value : data.message, - event_id: data.event_id, - level: data.level || 'error' // presume error unless specified + MIT license +*/ - }); - } +var TraceKit = { + collectWindowErrors: true, + debug: false +}; - var url = this._globalEndpoint; +// This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) +var _window = + typeof window !== 'undefined' + ? window + : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; - (globalOptions.transport || this._makeRequest).call(this, { - url: url, - auth: auth, - data: data, - options: globalOptions, - onSuccess: function success() { - self._resetBackoff(); +// global reference to slice +var _slice = [].slice; +var UNKNOWN_FUNCTION = '?'; - self._triggerEvent('success', { - data: data, - src: url - }); +// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error#Error_types +var ERROR_TYPES_RE = /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/; - callback && callback(); - }, - onError: function failure(error) { - self._logDebug('error', 'Raven transport failed to send: ', error); +function getLocationHref() { + if (typeof document === 'undefined' || document.location == null) return ''; - if (error.request) { - self._setBackoffState(error.request); - } + return document.location.href; +} - self._triggerEvent('failure', { - data: data, - src: url - }); +/** + * TraceKit.report: cross-browser processing of unhandled exceptions + * + * Syntax: + * TraceKit.report.subscribe(function(stackInfo) { ... }) + * TraceKit.report.unsubscribe(function(stackInfo) { ... }) + * TraceKit.report(exception) + * try { ...code... } catch(ex) { TraceKit.report(ex); } + * + * Supports: + * - Firefox: full stack trace with line numbers, plus column number + * on top frame; column number is not guaranteed + * - Opera: full stack trace with line and column numbers + * - Chrome: full stack trace with line and column numbers + * - Safari: line and column number for the top frame only; some frames + * may be missing, and column number is not guaranteed + * - IE: line and column number for the top frame only; some frames + * may be missing, and column number is not guaranteed + * + * In theory, TraceKit should work on all of the following versions: + * - IE5.5+ (only 8.0 tested) + * - Firefox 0.9+ (only 3.5+ tested) + * - Opera 7+ (only 10.50 tested; versions 9 and earlier may require + * Exceptions Have Stacktrace to be enabled in opera:config) + * - Safari 3+ (only 4+ tested) + * - Chrome 1+ (only 5+ tested) + * - Konqueror 3.5+ (untested) + * + * Requires TraceKit.computeStackTrace. + * + * Tries to catch all unhandled exceptions and report them to the + * subscribed handlers. Please note that TraceKit.report will rethrow the + * exception. This is REQUIRED in order to get a useful stack trace in IE. + * If the exception does not reach the top of the browser, you will only + * get a stack trace from the point where TraceKit.report was called. + * + * Handlers receive a stackInfo object as described in the + * TraceKit.computeStackTrace docs. + */ +TraceKit.report = (function reportModuleWrapper() { + var handlers = [], + lastArgs = null, + lastException = null, + lastExceptionStack = null; - error = error || new Error('Raven send failed (no additional details provided)'); - callback && callback(error); + /** + * Add a crash handler. + * @param {Function} handler + */ + function subscribe(handler) { + installGlobalHandler(); + handlers.push(handler); + } + + /** + * Remove a crash handler. + * @param {Function} handler + */ + function unsubscribe(handler) { + for (var i = handlers.length - 1; i >= 0; --i) { + if (handlers[i] === handler) { + handlers.splice(i, 1); } - }); - }, - _makeRequest: function _makeRequest(opts) { - // Auth is intentionally sent as part of query string (NOT as custom HTTP header) to avoid preflight CORS requests - var url = opts.url + '?' + urlencode(opts.auth); - var evaluatedHeaders = null; - var evaluatedFetchParameters = {}; + } + } - if (opts.options.headers) { - evaluatedHeaders = this._evaluateHash(opts.options.headers); + /** + * Remove all crash handlers. + */ + function unsubscribeAll() { + uninstallGlobalHandler(); + handlers = []; + } + + /** + * Dispatch stack information to all handlers. + * @param {Object.} stack + */ + function notifyHandlers(stack, isWindowError) { + var exception = null; + if (isWindowError && !TraceKit.collectWindowErrors) { + return; + } + for (var i in handlers) { + if (handlers.hasOwnProperty(i)) { + try { + handlers[i].apply(null, [stack].concat(_slice.call(arguments, 2))); + } catch (inner) { + exception = inner; + } + } } - if (opts.options.fetchParameters) { - evaluatedFetchParameters = this._evaluateHash(opts.options.fetchParameters); + if (exception) { + throw exception; } + } - if (supportsFetch()) { - evaluatedFetchParameters.body = stringify_1(opts.data); - var defaultFetchOptions = objectMerge({}, this._fetchDefaults); - var fetchOptions = objectMerge(defaultFetchOptions, evaluatedFetchParameters); + var _oldOnerrorHandler, _onErrorHandlerInstalled; - if (evaluatedHeaders) { - fetchOptions.headers = evaluatedHeaders; + /** + * Ensures all global unhandled exceptions are recorded. + * Supported by Gecko and IE. + * @param {string} msg Error message. + * @param {string} url URL of script that generated the exception. + * @param {(number|string)} lineNo The line number at which the error + * occurred. + * @param {?(number|string)} colNo The column number at which the error + * occurred. + * @param {?Error} ex The actual Error object. + */ + function traceKitWindowOnError(msg, url, lineNo, colNo, ex) { + var stack = null; + // If 'ex' is ErrorEvent, get real Error from inside + var exception = utils.isErrorEvent(ex) ? ex.error : ex; + // If 'msg' is ErrorEvent, get real message from inside + var message = utils.isErrorEvent(msg) ? msg.message : msg; + + if (lastExceptionStack) { + TraceKit.computeStackTrace.augmentStackTraceWithInitialElement( + lastExceptionStack, + url, + lineNo, + message + ); + processLastException(); + } else if (exception && utils.isError(exception)) { + // non-string `exception` arg; attempt to extract stack trace + + // New chrome and blink send along a real error object + // Let's just report that like a normal error. + // See: https://mikewest.org/2013/08/debugging-runtime-errors-with-window-onerror + stack = TraceKit.computeStackTrace(exception); + notifyHandlers(stack, true); + } else { + var location = { + url: url, + line: lineNo, + column: colNo + }; + + var name = undefined; + var groups; + + if ({}.toString.call(message) === '[object String]') { + var groups = message.match(ERROR_TYPES_RE); + if (groups) { + name = groups[1]; + message = groups[2]; + } } - return _window$1.fetch(url, fetchOptions).then(function (response) { - if (response.ok) { - opts.onSuccess && opts.onSuccess(); - } else { - var error = new Error('Sentry error code: ' + response.status); // It's called request only to keep compatibility with XHR interface - // and not add more redundant checks in setBackoffState method + location.func = UNKNOWN_FUNCTION; + + stack = { + name: name, + message: message, + url: getLocationHref(), + stack: [location] + }; + notifyHandlers(stack, true); + } + + if (_oldOnerrorHandler) { + return _oldOnerrorHandler.apply(this, arguments); + } + + return false; + } + + function installGlobalHandler() { + if (_onErrorHandlerInstalled) { + return; + } + _oldOnerrorHandler = _window.onerror; + _window.onerror = traceKitWindowOnError; + _onErrorHandlerInstalled = true; + } + + function uninstallGlobalHandler() { + if (!_onErrorHandlerInstalled) { + return; + } + _window.onerror = _oldOnerrorHandler; + _onErrorHandlerInstalled = false; + _oldOnerrorHandler = undefined; + } + + function processLastException() { + var _lastExceptionStack = lastExceptionStack, + _lastArgs = lastArgs; + lastArgs = null; + lastExceptionStack = null; + lastException = null; + notifyHandlers.apply(null, [_lastExceptionStack, false].concat(_lastArgs)); + } + + /** + * Reports an unhandled Error to TraceKit. + * @param {Error} ex + * @param {?boolean} rethrow If false, do not re-throw the exception. + * Only used for window.onerror to not cause an infinite loop of + * rethrowing. + */ + function report(ex, rethrow) { + var args = _slice.call(arguments, 1); + if (lastExceptionStack) { + if (lastException === ex) { + return; // already caught by an inner catch block, ignore + } else { + processLastException(); + } + } + + var stack = TraceKit.computeStackTrace(ex); + lastExceptionStack = stack; + lastException = ex; + lastArgs = args; + + // If the stack trace is incomplete, wait for 2 seconds for + // slow slow IE to see if onerror occurs or not before reporting + // this exception; otherwise, we will end up with an incomplete + // stack trace + setTimeout(function() { + if (lastException === ex) { + processLastException(); + } + }, stack.incomplete ? 2000 : 0); + + if (rethrow !== false) { + throw ex; // re-throw to propagate to the top level (and cause window.onerror) + } + } - error.request = response; - opts.onError && opts.onError(error); + report.subscribe = subscribe; + report.unsubscribe = unsubscribe; + report.uninstall = unsubscribeAll; + return report; +})(); + +/** + * TraceKit.computeStackTrace: cross-browser stack traces in JavaScript + * + * Syntax: + * s = TraceKit.computeStackTrace(exception) // consider using TraceKit.report instead (see below) + * Returns: + * s.name - exception name + * s.message - exception message + * s.stack[i].url - JavaScript or HTML file URL + * s.stack[i].func - function name, or empty for anonymous functions (if guessing did not work) + * s.stack[i].args - arguments passed to the function, if known + * s.stack[i].line - line number, if known + * s.stack[i].column - column number, if known + * + * Supports: + * - Firefox: full stack trace with line numbers and unreliable column + * number on top frame + * - Opera 10: full stack trace with line and column numbers + * - Opera 9-: full stack trace with line numbers + * - Chrome: full stack trace with line and column numbers + * - Safari: line and column number for the topmost stacktrace element + * only + * - IE: no line numbers whatsoever + * + * Tries to guess names of anonymous functions by looking for assignments + * in the source code. In IE and Safari, we have to guess source file names + * by searching for function bodies inside all page scripts. This will not + * work for scripts that are loaded cross-domain. + * Here be dragons: some function names may be guessed incorrectly, and + * duplicate functions may be mismatched. + * + * TraceKit.computeStackTrace should only be used for tracing purposes. + * Logging of unhandled exceptions should be done with TraceKit.report, + * which builds on top of TraceKit.computeStackTrace and provides better + * IE support by utilizing the window.onerror event to retrieve information + * about the top of the stack. + * + * Note: In IE and Safari, no stack trace is recorded on the Error object, + * so computeStackTrace instead walks its *own* chain of callers. + * This means that: + * * in Safari, some methods may be missing from the stack trace; + * * in IE, the topmost function in the stack trace will always be the + * caller of computeStackTrace. + * + * This is okay for tracing (because you are likely to be calling + * computeStackTrace from the function you want to be the topmost element + * of the stack trace anyway), but not okay for logging unhandled + * exceptions (because your catch block will likely be far away from the + * inner function that actually caused the exception). + * + */ +TraceKit.computeStackTrace = (function computeStackTraceWrapper() { + // Contents of Exception in various browsers. + // + // SAFARI: + // ex.message = Can't find variable: qq + // ex.line = 59 + // ex.sourceId = 580238192 + // ex.sourceURL = http://... + // ex.expressionBeginOffset = 96 + // ex.expressionCaretOffset = 98 + // ex.expressionEndOffset = 98 + // ex.name = ReferenceError + // + // FIREFOX: + // ex.message = qq is not defined + // ex.fileName = http://... + // ex.lineNumber = 59 + // ex.columnNumber = 69 + // ex.stack = ...stack trace... (see the example below) + // ex.name = ReferenceError + // + // CHROME: + // ex.message = qq is not defined + // ex.name = ReferenceError + // ex.type = not_defined + // ex.arguments = ['aa'] + // ex.stack = ...stack trace... + // + // INTERNET EXPLORER: + // ex.message = ... + // ex.name = ReferenceError + // + // OPERA: + // ex.message = ...message... (see the example below) + // ex.name = ReferenceError + // ex.opera#sourceloc = 11 (pretty much useless, duplicates the info in ex.message) + // ex.stacktrace = n/a; see 'opera:config#UserPrefs|Exceptions Have Stacktrace' + + /** + * Computes stack trace information from the stack property. + * Chrome and Gecko use this property. + * @param {Error} ex + * @return {?Object.} Stack trace information. + */ + function computeStackTraceFromStackProp(ex) { + if (typeof ex.stack === 'undefined' || !ex.stack) return; + + var chrome = /^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i; + var winjs = /^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i; + // NOTE: blob urls are now supposed to always have an origin, therefore it's format + // which is `blob:http://url/path/with-some-uuid`, is matched by `blob.*?:\/` as well + var gecko = /^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i; + // Used to additionally parse URL/line/column from eval frames + var geckoEval = /(\S+) line (\d+)(?: > eval line \d+)* > eval/i; + var chromeEval = /\((\S*)(?::(\d+))(?::(\d+))\)/; + var lines = ex.stack.split('\n'); + var stack = []; + var submatch; + var parts; + var element; + var reference = /^(.*) is undefined$/.exec(ex.message); + + for (var i = 0, j = lines.length; i < j; ++i) { + if ((parts = chrome.exec(lines[i]))) { + var isNative = parts[2] && parts[2].indexOf('native') === 0; // start of line + var isEval = parts[2] && parts[2].indexOf('eval') === 0; // start of line + if (isEval && (submatch = chromeEval.exec(parts[2]))) { + // throw out eval line/column and use top-most line/column number + parts[2] = submatch[1]; // url + parts[3] = submatch[2]; // line + parts[4] = submatch[3]; // column } - })['catch'](function () { - opts.onError && opts.onError(new Error('Sentry error code: network unavailable')); - }); + element = { + url: !isNative ? parts[2] : null, + func: parts[1] || UNKNOWN_FUNCTION, + args: isNative ? [parts[2]] : [], + line: parts[3] ? +parts[3] : null, + column: parts[4] ? +parts[4] : null + }; + } else if ((parts = winjs.exec(lines[i]))) { + element = { + url: parts[2], + func: parts[1] || UNKNOWN_FUNCTION, + args: [], + line: +parts[3], + column: parts[4] ? +parts[4] : null + }; + } else if ((parts = gecko.exec(lines[i]))) { + var isEval = parts[3] && parts[3].indexOf(' > eval') > -1; + if (isEval && (submatch = geckoEval.exec(parts[3]))) { + // throw out eval line/column and use top-most line number + parts[3] = submatch[1]; + parts[4] = submatch[2]; + parts[5] = null; // no column when eval + } else if (i === 0 && !parts[5] && typeof ex.columnNumber !== 'undefined') { + // FireFox uses this awesome columnNumber property for its top frame + // Also note, Firefox's column number is 0-based and everything else expects 1-based, + // so adding 1 + // NOTE: this hack doesn't work if top-most frame is eval + stack[0].column = ex.columnNumber + 1; + } + element = { + url: parts[3], + func: parts[1] || UNKNOWN_FUNCTION, + args: parts[2] ? parts[2].split(',') : [], + line: parts[4] ? +parts[4] : null, + column: parts[5] ? +parts[5] : null + }; + } else { + continue; + } + + if (!element.func && element.line) { + element.func = UNKNOWN_FUNCTION; + } + + stack.push(element); } - var request = _window$1.XMLHttpRequest && new _window$1.XMLHttpRequest(); - if (!request) return; // if browser doesn't support CORS (e.g. IE7), we are out of luck + if (!stack.length) { + return null; + } - var hasCORS = 'withCredentials' in request || typeof XDomainRequest !== 'undefined'; - if (!hasCORS) return; + return { + name: ex.name, + message: ex.message, + url: getLocationHref(), + stack: stack + }; + } - if ('withCredentials' in request) { - request.onreadystatechange = function () { - if (request.readyState !== 4) { - return; - } else if (request.status === 200) { - opts.onSuccess && opts.onSuccess(); - } else if (opts.onError) { - var err = new Error('Sentry error code: ' + request.status); - err.request = request; - opts.onError(err); + /** + * Adds information about the first frame to incomplete stack traces. + * Safari and IE require this to get complete data on the first frame. + * @param {Object.} stackInfo Stack trace information from + * one of the compute* methods. + * @param {string} url The URL of the script that caused an error. + * @param {(number|string)} lineNo The line number of the script that + * caused an error. + * @param {string=} message The error generated by the browser, which + * hopefully contains the name of the object that caused the error. + * @return {boolean} Whether or not the stack information was + * augmented. + */ + function augmentStackTraceWithInitialElement(stackInfo, url, lineNo, message) { + var initial = { + url: url, + line: lineNo + }; + + if (initial.url && initial.line) { + stackInfo.incomplete = false; + + if (!initial.func) { + initial.func = UNKNOWN_FUNCTION; + } + + if (stackInfo.stack.length > 0) { + if (stackInfo.stack[0].url === initial.url) { + if (stackInfo.stack[0].line === initial.line) { + return false; // already in stack trace + } else if ( + !stackInfo.stack[0].line && + stackInfo.stack[0].func === initial.func + ) { + stackInfo.stack[0].line = initial.line; + return false; + } } + } + + stackInfo.stack.unshift(initial); + stackInfo.partial = true; + return true; + } else { + stackInfo.incomplete = true; + } + + return false; + } + + /** + * Computes stack trace information by walking the arguments.caller + * chain at the time the exception occurred. This will cause earlier + * frames to be missed but is the only way to get any stack trace in + * Safari and IE. The top frame is restored by + * {@link augmentStackTraceWithInitialElement}. + * @param {Error} ex + * @return {?Object.} Stack trace information. + */ + function computeStackTraceByWalkingCallerChain(ex, depth) { + var functionName = /function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i, + stack = [], + funcs = {}, + recursion = false, + parts, + item, + source; + + for ( + var curr = computeStackTraceByWalkingCallerChain.caller; + curr && !recursion; + curr = curr.caller + ) { + if (curr === computeStackTrace || curr === TraceKit.report) { + // console.log('skipping internal function'); + continue; + } + + item = { + url: null, + func: UNKNOWN_FUNCTION, + line: null, + column: null }; - } else { - request = new XDomainRequest(); // xdomainrequest cannot go http -> https (or vice versa), - // so always use protocol relative - url = url.replace(/^https?:/, ''); // onreadystatechange not supported by XDomainRequest + if (curr.name) { + item.func = curr.name; + } else if ((parts = functionName.exec(curr.toString()))) { + item.func = parts[1]; + } - if (opts.onSuccess) { - request.onload = opts.onSuccess; + if (typeof item.func === 'undefined') { + try { + item.func = parts.input.substring(0, parts.input.indexOf('{')); + } catch (e) {} } - if (opts.onError) { - request.onerror = function () { - var err = new Error('Sentry error code: XDomainRequest'); - err.request = request; - opts.onError(err); - }; + if (funcs['' + curr]) { + recursion = true; + } else { + funcs['' + curr] = true; } - } - request.open('POST', url); + stack.push(item); + } - if (evaluatedHeaders) { - each(evaluatedHeaders, function (key, value) { - request.setRequestHeader(key, value); - }); + if (depth) { + // console.log('depth is ' + depth); + // console.log('stack is ' + stack.length); + stack.splice(0, depth); } - request.send(stringify_1(opts.data)); - }, - _evaluateHash: function _evaluateHash(hash) { - var evaluated = {}; + var result = { + name: ex.name, + message: ex.message, + url: getLocationHref(), + stack: stack + }; + augmentStackTraceWithInitialElement( + result, + ex.sourceURL || ex.fileName, + ex.line || ex.lineNumber, + ex.message || ex.description + ); + return result; + } - for (var key in hash) { - if (hash.hasOwnProperty(key)) { - var value = hash[key]; - evaluated[key] = typeof value === 'function' ? value() : value; + /** + * Computes a stack trace for an exception. + * @param {Error} ex + * @param {(string|number)=} depth + */ + function computeStackTrace(ex, depth) { + var stack = null; + depth = depth == null ? 0 : +depth; + + try { + stack = computeStackTraceFromStackProp(ex); + if (stack) { + return stack; + } + } catch (e) { + if (TraceKit.debug) { + throw e; } } - return evaluated; - }, - _logDebug: function _logDebug(level) { - if (this._originalConsoleMethods[level] && this.debug) { - // In IE<10 console methods do not have their own 'apply' method - Function.prototype.apply.call(this._originalConsoleMethods[level], this._originalConsole, [].slice.call(arguments, 1)); - } - }, - _mergeContext: function _mergeContext(key, context) { - if (isUndefined(context)) { - delete this._globalContext[key]; - } else { - this._globalContext[key] = objectMerge(this._globalContext[key] || {}, context); + try { + stack = computeStackTraceByWalkingCallerChain(ex, depth + 1); + if (stack) { + return stack; + } + } catch (e) { + if (TraceKit.debug) { + throw e; + } } + return { + name: ex.name, + message: ex.message, + url: getLocationHref() + }; } -}; // Deprecations -Raven$1.prototype.setUser = Raven$1.prototype.setUserContext; -Raven$1.prototype.setReleaseContext = Raven$1.prototype.setRelease; -var raven = Raven$1; + computeStackTrace.augmentStackTraceWithInitialElement = augmentStackTraceWithInitialElement; + computeStackTrace.computeStackTraceFromStackProp = computeStackTraceFromStackProp; -/** - * Enforces a single instance of the Raven client, and the - * main entry point for Raven. If you are a consumer of the - * Raven library, you SHOULD load this file (vs raven.js). - **/ -// This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) + return computeStackTrace; +})(); -var _window = typeof window !== 'undefined' ? window : typeof commonjsGlobal !== 'undefined' ? commonjsGlobal : typeof self !== 'undefined' ? self : {}; +module.exports = TraceKit; -var _Raven = _window.Raven; -var Raven = new raven(); +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"8":8}],10:[function(_dereq_,module,exports){ /* - * Allow multiple versions of Raven to be installed. - * Strip Raven from the global context and returns the instance. - * - * @return {Raven} - */ - -Raven.noConflict = function () { - _window.Raven = _Raven; - return Raven; -}; - -Raven.afterLoad(); -var singleton = Raven; + json-stringify-safe + Like JSON.stringify, but doesn't throw on circular references. -/** - * Angular.js plugin - * - * Provides an $exceptionHandler for Angular.js - */ - -var wrappedCallback$1 = utils.wrappedCallback; // See https://github.com/angular/angular.js/blob/v1.4.7/src/minErr.js + Originally forked from https://github.com/isaacs/json-stringify-safe + version 5.0.1 on 3/8/2017 and modified to handle Errors serialization + and IE8 compatibility. Tests for this are in test/vendor. -var angularPattern = /^\[((?:[$a-zA-Z0-9]+:)?(?:[$a-zA-Z0-9]+))\] (.*?)\n?(\S+)$/; -var moduleName = 'ngRaven'; + ISC license: https://github.com/isaacs/json-stringify-safe/blob/master/LICENSE +*/ -function angularPlugin(Raven, angular) { - angular = angular || window.angular; - if (!angular) return; +exports = module.exports = stringify; +exports.getSerialize = serializer; - function RavenProvider() { - this.$get = ['$window', function ($window) { - return Raven; - }]; +function indexOf(haystack, needle) { + for (var i = 0; i < haystack.length; ++i) { + if (haystack[i] === needle) return i; } + return -1; +} - function ExceptionHandlerProvider($provide) { - $provide.decorator('$exceptionHandler', ['Raven', '$delegate', exceptionHandler]); - } +function stringify(obj, replacer, spaces, cycleReplacer) { + return JSON.stringify(obj, serializer(replacer, cycleReplacer), spaces); +} - function exceptionHandler(R, $delegate) { - return function (ex, cause) { - R.captureException(ex, { - extra: { - cause: cause - } - }); - $delegate(ex, cause); - }; +// https://github.com/ftlabs/js-abbreviate/blob/fa709e5f139e7770a71827b1893f22418097fbda/index.js#L95-L106 +function stringifyError(value) { + var err = { + // These properties are implemented as magical getters and don't show up in for in + stack: value.stack, + message: value.message, + name: value.name + }; + + for (var i in value) { + if (Object.prototype.hasOwnProperty.call(value, i)) { + err[i] = value[i]; + } } - angular.module(moduleName, []).provider('Raven', RavenProvider).config(['$provide', ExceptionHandlerProvider]); - Raven.setDataCallback(wrappedCallback$1(function (data) { - return angularPlugin._normalizeData(data); - })); + return err; } -angularPlugin._normalizeData = function (data) { - // We only care about mutating an exception - var exception = data.exception; +function serializer(replacer, cycleReplacer) { + var stack = []; + var keys = []; - if (exception) { - exception = exception.values[0]; - var matches = angularPattern.exec(exception.value); + if (cycleReplacer == null) { + cycleReplacer = function(key, value) { + if (stack[0] === value) { + return '[Circular ~]'; + } + return '[Circular ~.' + keys.slice(0, indexOf(stack, value)).join('.') + ']'; + }; + } - if (matches) { - // This type now becomes something like: $rootScope:inprog - exception.type = matches[1]; - exception.value = matches[2]; - data.message = exception.type + ': ' + exception.value; // auto set a new tag specifically for the angular error url + return function(key, value) { + if (stack.length > 0) { + var thisPos = indexOf(stack, this); + ~thisPos ? stack.splice(thisPos + 1) : stack.push(this); + ~thisPos ? keys.splice(thisPos, Infinity, key) : keys.push(key); - data.extra.angularDocs = matches[3].substr(0, 250); + if (~indexOf(stack, value)) { + value = cycleReplacer.call(this, key, value); + } + } else { + stack.push(value); } - } - - return data; -}; -angularPlugin.moduleName = moduleName; -var angular = angularPlugin; + return replacer == null + ? value instanceof Error ? stringifyError(value) : value + : replacer.call(this, key, value); + }; +} -/** - * console plugin +},{}],11:[function(_dereq_,module,exports){ +/* + * JavaScript MD5 + * https://github.com/blueimp/JavaScript-MD5 * - * Monkey patches console.* calls into Sentry messages with - * their appropriate log levels. (Experimental) + * Copyright 2011, Sebastian Tschan + * https://blueimp.net * - * Options: + * Licensed under the MIT license: + * https://opensource.org/licenses/MIT * - * `levels`: An array of levels (methods on `console`) to report to Sentry. - * Defaults to debug, info, warn, and error. + * Based on + * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message + * Digest Algorithm, as defined in RFC 1321. + * Version 2.2 Copyright (C) Paul Johnston 1999 - 2009 + * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet + * Distributed under the BSD License + * See http://pajhome.org.uk/crypt/md5 for more info. */ -var wrapConsoleMethod$1 = console$1.wrapMethod; - -function consolePlugin(Raven, console, pluginOptions) { - console = console || window.console || {}; - pluginOptions = pluginOptions || {}; - var logLevels = pluginOptions.levels || ['debug', 'info', 'warn', 'error']; - if ('assert' in console) logLevels.push('assert'); +/* +* Add integers, wrapping at 2^32. This uses 16-bit operations internally +* to work around bugs in some JS interpreters. +*/ +function safeAdd(x, y) { + var lsw = (x & 0xffff) + (y & 0xffff); + var msw = (x >> 16) + (y >> 16) + (lsw >> 16); + return (msw << 16) | (lsw & 0xffff); +} - var callback = function callback(msg, data) { - Raven.captureMessage(msg, data); - }; +/* +* Bitwise rotate a 32-bit number to the left. +*/ +function bitRotateLeft(num, cnt) { + return (num << cnt) | (num >>> (32 - cnt)); +} - var level = logLevels.pop(); +/* +* These functions implement the four basic operations the algorithm uses. +*/ +function md5cmn(q, a, b, x, s, t) { + return safeAdd(bitRotateLeft(safeAdd(safeAdd(a, q), safeAdd(x, t)), s), b); +} +function md5ff(a, b, c, d, x, s, t) { + return md5cmn((b & c) | (~b & d), a, b, x, s, t); +} +function md5gg(a, b, c, d, x, s, t) { + return md5cmn((b & d) | (c & ~d), a, b, x, s, t); +} +function md5hh(a, b, c, d, x, s, t) { + return md5cmn(b ^ c ^ d, a, b, x, s, t); +} +function md5ii(a, b, c, d, x, s, t) { + return md5cmn(c ^ (b | ~d), a, b, x, s, t); +} - while (level) { - wrapConsoleMethod$1(console, level, callback); - level = logLevels.pop(); +/* +* Calculate the MD5 of an array of little-endian words, and a bit length. +*/ +function binlMD5(x, len) { + /* append padding */ + x[len >> 5] |= 0x80 << (len % 32); + x[(((len + 64) >>> 9) << 4) + 14] = len; + + var i; + var olda; + var oldb; + var oldc; + var oldd; + var a = 1732584193; + var b = -271733879; + var c = -1732584194; + var d = 271733878; + + for (i = 0; i < x.length; i += 16) { + olda = a; + oldb = b; + oldc = c; + oldd = d; + + a = md5ff(a, b, c, d, x[i], 7, -680876936); + d = md5ff(d, a, b, c, x[i + 1], 12, -389564586); + c = md5ff(c, d, a, b, x[i + 2], 17, 606105819); + b = md5ff(b, c, d, a, x[i + 3], 22, -1044525330); + a = md5ff(a, b, c, d, x[i + 4], 7, -176418897); + d = md5ff(d, a, b, c, x[i + 5], 12, 1200080426); + c = md5ff(c, d, a, b, x[i + 6], 17, -1473231341); + b = md5ff(b, c, d, a, x[i + 7], 22, -45705983); + a = md5ff(a, b, c, d, x[i + 8], 7, 1770035416); + d = md5ff(d, a, b, c, x[i + 9], 12, -1958414417); + c = md5ff(c, d, a, b, x[i + 10], 17, -42063); + b = md5ff(b, c, d, a, x[i + 11], 22, -1990404162); + a = md5ff(a, b, c, d, x[i + 12], 7, 1804603682); + d = md5ff(d, a, b, c, x[i + 13], 12, -40341101); + c = md5ff(c, d, a, b, x[i + 14], 17, -1502002290); + b = md5ff(b, c, d, a, x[i + 15], 22, 1236535329); + + a = md5gg(a, b, c, d, x[i + 1], 5, -165796510); + d = md5gg(d, a, b, c, x[i + 6], 9, -1069501632); + c = md5gg(c, d, a, b, x[i + 11], 14, 643717713); + b = md5gg(b, c, d, a, x[i], 20, -373897302); + a = md5gg(a, b, c, d, x[i + 5], 5, -701558691); + d = md5gg(d, a, b, c, x[i + 10], 9, 38016083); + c = md5gg(c, d, a, b, x[i + 15], 14, -660478335); + b = md5gg(b, c, d, a, x[i + 4], 20, -405537848); + a = md5gg(a, b, c, d, x[i + 9], 5, 568446438); + d = md5gg(d, a, b, c, x[i + 14], 9, -1019803690); + c = md5gg(c, d, a, b, x[i + 3], 14, -187363961); + b = md5gg(b, c, d, a, x[i + 8], 20, 1163531501); + a = md5gg(a, b, c, d, x[i + 13], 5, -1444681467); + d = md5gg(d, a, b, c, x[i + 2], 9, -51403784); + c = md5gg(c, d, a, b, x[i + 7], 14, 1735328473); + b = md5gg(b, c, d, a, x[i + 12], 20, -1926607734); + + a = md5hh(a, b, c, d, x[i + 5], 4, -378558); + d = md5hh(d, a, b, c, x[i + 8], 11, -2022574463); + c = md5hh(c, d, a, b, x[i + 11], 16, 1839030562); + b = md5hh(b, c, d, a, x[i + 14], 23, -35309556); + a = md5hh(a, b, c, d, x[i + 1], 4, -1530992060); + d = md5hh(d, a, b, c, x[i + 4], 11, 1272893353); + c = md5hh(c, d, a, b, x[i + 7], 16, -155497632); + b = md5hh(b, c, d, a, x[i + 10], 23, -1094730640); + a = md5hh(a, b, c, d, x[i + 13], 4, 681279174); + d = md5hh(d, a, b, c, x[i], 11, -358537222); + c = md5hh(c, d, a, b, x[i + 3], 16, -722521979); + b = md5hh(b, c, d, a, x[i + 6], 23, 76029189); + a = md5hh(a, b, c, d, x[i + 9], 4, -640364487); + d = md5hh(d, a, b, c, x[i + 12], 11, -421815835); + c = md5hh(c, d, a, b, x[i + 15], 16, 530742520); + b = md5hh(b, c, d, a, x[i + 2], 23, -995338651); + + a = md5ii(a, b, c, d, x[i], 6, -198630844); + d = md5ii(d, a, b, c, x[i + 7], 10, 1126891415); + c = md5ii(c, d, a, b, x[i + 14], 15, -1416354905); + b = md5ii(b, c, d, a, x[i + 5], 21, -57434055); + a = md5ii(a, b, c, d, x[i + 12], 6, 1700485571); + d = md5ii(d, a, b, c, x[i + 3], 10, -1894986606); + c = md5ii(c, d, a, b, x[i + 10], 15, -1051523); + b = md5ii(b, c, d, a, x[i + 1], 21, -2054922799); + a = md5ii(a, b, c, d, x[i + 8], 6, 1873313359); + d = md5ii(d, a, b, c, x[i + 15], 10, -30611744); + c = md5ii(c, d, a, b, x[i + 6], 15, -1560198380); + b = md5ii(b, c, d, a, x[i + 13], 21, 1309151649); + a = md5ii(a, b, c, d, x[i + 4], 6, -145523070); + d = md5ii(d, a, b, c, x[i + 11], 10, -1120210379); + c = md5ii(c, d, a, b, x[i + 2], 15, 718787259); + b = md5ii(b, c, d, a, x[i + 9], 21, -343485551); + + a = safeAdd(a, olda); + b = safeAdd(b, oldb); + c = safeAdd(c, oldc); + d = safeAdd(d, oldd); } + return [a, b, c, d]; } -var console$3 = consolePlugin; - -/** - * Vue.js 2.0 plugin - * - */ -function formatComponentName(vm) { - if (vm.$root === vm) { - return 'root instance'; +/* +* Convert an array of little-endian words to a string +*/ +function binl2rstr(input) { + var i; + var output = ''; + var length32 = input.length * 32; + for (i = 0; i < length32; i += 8) { + output += String.fromCharCode((input[i >> 5] >>> (i % 32)) & 0xff); } - - var name = vm._isVue ? vm.$options.name || vm.$options._componentTag : vm.name; - return (name ? 'component <' + name + '>' : 'anonymous component') + (vm._isVue && vm.$options.__file ? ' at ' + vm.$options.__file : ''); + return output; } -function vuePlugin(Raven, Vue) { - Vue = Vue || window.Vue; // quit if Vue isn't on the page +/* +* Convert a raw string to an array of little-endian words +* Characters >255 have their high-byte silently ignored. +*/ +function rstr2binl(input) { + var i; + var output = []; + output[(input.length >> 2) - 1] = undefined; + for (i = 0; i < output.length; i += 1) { + output[i] = 0; + } + var length8 = input.length * 8; + for (i = 0; i < length8; i += 8) { + output[i >> 5] |= (input.charCodeAt(i / 8) & 0xff) << (i % 32); + } + return output; +} - if (!Vue || !Vue.config) return; - var _oldOnError = Vue.config.errorHandler; +/* +* Calculate the MD5 of a raw string +*/ +function rstrMD5(s) { + return binl2rstr(binlMD5(rstr2binl(s), s.length * 8)); +} - Vue.config.errorHandler = function VueErrorHandler(error, vm, info) { - var metaData = {}; // vm and lifecycleHook are not always available +/* +* Calculate the HMAC-MD5, of a key and some data (raw strings) +*/ +function rstrHMACMD5(key, data) { + var i; + var bkey = rstr2binl(key); + var ipad = []; + var opad = []; + var hash; + ipad[15] = opad[15] = undefined; + if (bkey.length > 16) { + bkey = binlMD5(bkey, key.length * 8); + } + for (i = 0; i < 16; i += 1) { + ipad[i] = bkey[i] ^ 0x36363636; + opad[i] = bkey[i] ^ 0x5c5c5c5c; + } + hash = binlMD5(ipad.concat(rstr2binl(data)), 512 + data.length * 8); + return binl2rstr(binlMD5(opad.concat(hash), 512 + 128)); +} - if (Object.prototype.toString.call(vm) === '[object Object]') { - metaData.componentName = formatComponentName(vm); - metaData.propsData = vm.$options.propsData; - } +/* +* Convert a raw string to a hex string +*/ +function rstr2hex(input) { + var hexTab = '0123456789abcdef'; + var output = ''; + var x; + var i; + for (i = 0; i < input.length; i += 1) { + x = input.charCodeAt(i); + output += hexTab.charAt((x >>> 4) & 0x0f) + hexTab.charAt(x & 0x0f); + } + return output; +} - if (typeof info !== 'undefined') { - metaData.lifecycleHook = info; - } +/* +* Encode a string as utf-8 +*/ +function str2rstrUTF8(input) { + return unescape(encodeURIComponent(input)); +} - Raven.captureException(error, { - extra: metaData - }); +/* +* Take string arguments and return either raw or hex encoded strings +*/ +function rawMD5(s) { + return rstrMD5(str2rstrUTF8(s)); +} +function hexMD5(s) { + return rstr2hex(rawMD5(s)); +} +function rawHMACMD5(k, d) { + return rstrHMACMD5(str2rstrUTF8(k), str2rstrUTF8(d)); +} +function hexHMACMD5(k, d) { + return rstr2hex(rawHMACMD5(k, d)); +} - if (typeof _oldOnError === 'function') { - _oldOnError.call(this, error, vm, info); +function md5(string, key, raw) { + if (!key) { + if (!raw) { + return hexMD5(string); } - }; + return rawMD5(string); + } + if (!raw) { + return hexHMACMD5(key, string); + } + return rawHMACMD5(key, string); } -var vue = vuePlugin; - -/* This file was generated by './scripts/generate-plugin-combinations.js'! */ - -singleton.addPlugin(angular).addPlugin(console$3).addPlugin(vue); -var angular_console_vue = {}; - -return angular_console_vue; +module.exports = md5; -}))); +},{}]},{},[7,1,2,3])(7) +}); \ No newline at end of file diff --git a/dist/angular,console,vue/raven.min.js b/dist/angular,console,vue/raven.min.js index 67ac32b47c96..f01a363d0c99 100644 --- a/dist/angular,console,vue/raven.min.js +++ b/dist/angular,console,vue/raven.min.js @@ -1,3 +1,4 @@ -/*! Raven.js 3.22.2 (1b6187b) | github.com/getsentry/raven-js */ -!function(a,b){"object"==typeof exports&&"undefined"!=typeof module?module.exports=b():"function"==typeof define&&define.amd?define(b):a.Raven=b()}(this,function(){"use strict";function a(a,b){return b={exports:{}},a(b,b.exports),b.exports}function b(a){return(b="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(a){return typeof a}:function(a){return a&&"function"==typeof Symbol&&a.constructor===Symbol&&a!==Symbol.prototype?"symbol":typeof a})(a)}function c(a){return"object"===b(a)&&null!==a}function d(a){switch({}.toString.call(a)){case"[object Error]":return!0;case"[object Exception]":return!0;case"[object DOMException]":return!0;default:return a instanceof Error}}function e(a){return l()&&"[object ErrorEvent]"==={}.toString.call(a)}function f(a){return void 0===a}function g(a){return"function"==typeof a}function h(a){return"[object Object]"===Object.prototype.toString.call(a)}function i(a){return"[object String]"===Object.prototype.toString.call(a)}function j(a){return"[object Array]"===Object.prototype.toString.call(a)}function k(a){if(!h(a))return!1;for(var b in a)if(a.hasOwnProperty(b))return!1;return!0}function l(){try{return new ErrorEvent(""),!0}catch(a){return!1}}function m(){if(!("fetch"in Q))return!1;try{return new Headers,new Request(""),new Response,!0}catch(a){return!1}}function n(a){function b(b,c){var d=a(b)||b;return c?c(d)||d:d}return b}function o(a,b){var c,d;if(f(a.length))for(c in a)s(a,c)&&b.call(null,c,a[c]);else if(d=a.length)for(c=0;c ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function y(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&i(b))for(c=b.split(/\s+/),f=0;f":"anonymous component")+(a._isVue&&a.$options.__file?" at "+a.$options.__file:"")}function N(a,b){if(b=b||window.Vue,b&&b.config){var c=b.config.errorHandler;b.config.errorHandler=function(b,d,e){var f={};"[object Object]"===Object.prototype.toString.call(d)&&(f.componentName=M(d),f.propsData=d.$options.propsData),"undefined"!=typeof e&&(f.lifecycleHook=e),a.captureException(b,{extra:f}),"function"==typeof c&&c.call(this,b,d,e)}}}var O="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{},P=Object.setPrototypeOf||function(a,b){return a.C=b,a},Q=("object"==typeof Reflect&&Reflect.construct||function(a,b,c){var d,e=[null];return e.push.apply(e,b),d=a.bind.apply(a,e),P(new d,c.prototype)},"undefined"!=typeof window?window:"undefined"!=typeof O?O:"undefined"!=typeof self?self:{}),R={isObject:c,isError:d,isErrorEvent:e,isUndefined:f,isFunction:g,isPlainObject:h,isString:i,isArray:j,isEmptyObject:k,supportsErrorEvent:l,supportsFetch:m,wrappedCallback:n,each:o,objectMerge:p,truncate:r,objectFrozen:q,hasKey:s,joinRegExp:t,urlencode:u,uuid4:w,htmlTreeAsString:x,htmlElementAsString:y,isSameException:B,isSameStacktrace:C,parseUrl:v,fill:D,safeJoin:E},S={collectWindowErrors:!0,debug:!1},T="undefined"!=typeof window?window:"undefined"!=typeof O?O:"undefined"!=typeof self?self:{},U=[].slice,V="?",W=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;S.report=function(){function a(a){f(),l.push(a)}function b(a){for(var b=l.length-1;b>=0;--b)l[b]===a&&l.splice(b,1)}function c(){g(),l=[]}function d(a,b){var c=null;if(!b||S.collectWindowErrors){for(var d in l)if(l.hasOwnProperty(d))try{l[d].apply(null,[a].concat(U.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function e(a,b,c,e,f){var g=null,i=R.isErrorEvent(f)?f.error:f,k=R.isErrorEvent(a)?a.message:a;if(o)S.computeStackTrace.augmentStackTraceWithInitialElement(o,b,c,k),h();else if(i&&R.isError(i))g=S.computeStackTrace(i),d(g,!0);else{var l,m={url:b,line:c,column:e},n=void 0;if("[object String]"==={}.toString.call(k)){var l=k.match(W);l&&(n=l[1],k=l[2])}m.func=V,g={name:n,message:k,url:F(),stack:[m]},d(g,!0)}return!!j&&j.apply(this,arguments)}function f(){k||(j=T.onerror,T.onerror=e,k=!0)}function g(){k&&(T.onerror=j,k=!1,j=void 0)}function h(){var a=o,b=m;m=null,o=null,n=null,d.apply(null,[a,!1].concat(b))}function i(a,b){var c=U.call(arguments,1);if(o){if(n===a)return;h()}var d=S.computeStackTrace(a);if(o=d,n=a,m=c,setTimeout(function(){n===a&&h()},d.incomplete?2e3:0),b!==!1)throw a}var j,k,l=[],m=null,n=null,o=null;return i.subscribe=a,i.unsubscribe=b,i.uninstall=c,i}(),S.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,d,e=/^\s*at (.*?) ?\(((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,f=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|\[native).*?|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,g=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,h=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,i=/\((\S*)(?::(\d+))(?::(\d+))\)/,j=a.stack.split("\n"),k=[],l=(/^(.*) is undefined$/.exec(a.message),0),m=j.length;l eval")>-1;o&&(b=h.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==l||c[5]||"undefined"==typeof a.columnNumber||(k[0].column=a.columnNumber+1),d={url:c[3],func:c[1]||V,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}!d.func&&d.line&&(d.func=V),k.push(d)}return k.length?{name:a.name,message:a.message,url:F(),stack:k}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=V),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,e){for(var f,g,h=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,i=[],j={},k=!1,l=c.caller;l&&!k;l=l.caller)if(l!==d&&l!==S.report){if(g={url:null,func:V,line:null,column:null},l.name?g.func=l.name:(f=h.exec(l.toString()))&&(g.func=f[1]),"undefined"==typeof g.func)try{g.func=f.input.substring(0,f.input.indexOf("{"))}catch(m){}j[""+l]?k=!0:j[""+l]=!0,i.push(g)}e&&i.splice(0,e);var n={name:a.name,message:a.message,url:F(),stack:i};return b(n,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),n}function d(b,d){var e=null;d=null==d?0:+d;try{if(e=a(b))return e}catch(f){if(S.debug)throw f}try{if(e=c(b,d+1))return e}catch(f){if(S.debug)throw f}return{name:b.name,message:b.message,url:F()}}return d.augmentStackTraceWithInitialElement=b,d.computeStackTraceFromStackProp=a,d}();var X=S,Y=a(function(a,b){function c(a,b){for(var c=0;c0){var i=c(d,this);~i?d.splice(i+1):d.push(this),~i?f.splice(i,1/0,g):f.push(g),~c(d,h)&&(h=b.call(this,g,h))}else d.push(h);return null==a?h instanceof Error?e(h):h:a.call(this,g,h)}}b=a.exports=d,b.getSerialize=f});G.prototype=new Error,G.prototype.constructor=G;var Z=G,$=function(a,b,c){var d=a[b],e=a;if(b in a){var f="warn"===b?"warning":b;a[b]=function(){var a=[].slice.call(arguments),g=R.safeJoin(a," "),h={level:f,logger:"console",extra:{arguments:a}};"assert"===b?a[0]===!1&&(g="Assertion failed: "+(R.safeJoin(a.slice(1)," ")||"console.assert"),h.extra.arguments=a.slice(1),c&&c(g,h)):c&&c(g,h),d&&Function.prototype.apply.call(d,e,a)}}},_={wrapMethod:$},aa=R.isError,ba=R.isObject,ca=R.isErrorEvent,da=R.isUndefined,ea=R.isFunction,fa=R.isString,ga=R.isArray,ha=R.isEmptyObject,ia=R.each,ja=R.objectMerge,ka=R.truncate,la=R.objectFrozen,ma=R.hasKey,na=R.joinRegExp,oa=R.urlencode,pa=R.uuid4,qa=R.htmlTreeAsString,ra=R.isSameException,sa=R.isSameStacktrace,ta=R.parseUrl,ua=R.fill,va=R.supportsFetch,wa=_.wrapMethod,xa="source protocol user pass host port path".split(" "),ya=/^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/,za="undefined"!=typeof window?window:"undefined"!=typeof O?O:"undefined"!=typeof self?self:{},Aa=za.document,Ba=za.navigator;J.prototype={VERSION:"3.22.2",debug:!1,TraceKit:X,config:function(a,b){var c=this;if(c.i)return this.D("error","Error: Raven has already been configured"),c;if(!a)return c;var d=c.m;b&&ia(b,function(a,b){"tags"===a||"extra"===a||"user"===a?c.l[a]=b:d[a]=b}),c.setDSN(a),d.ignoreErrors.push(/^Script error\.?$/),d.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/),d.ignoreErrors=na(d.ignoreErrors),d.ignoreUrls=!!d.ignoreUrls.length&&na(d.ignoreUrls),d.whitelistUrls=!!d.whitelistUrls.length&&na(d.whitelistUrls),d.includePaths=na(d.includePaths),d.maxBreadcrumbs=Math.max(0,Math.min(d.maxBreadcrumbs||100,100));var e={xhr:!0,console:!0,dom:!0,location:!0,sentry:!0},f=d.autoBreadcrumbs;"[object Object]"==={}.toString.call(f)?f=ja(e,f):f!==!1&&(f=e),d.autoBreadcrumbs=f;var g={tryCatch:!0},h=d.instrument;return"[object Object]"==={}.toString.call(h)?h=ja(g,h):h!==!1&&(h=g),d.instrument=h,X.collectWindowErrors=!!d.collectWindowErrors,c},install:function(){var a=this;return a.isSetup()&&!a.p&&(X.report.subscribe(function(){a.E.apply(a,arguments)}),a.F(),a.m.instrument&&a.m.instrument.tryCatch&&a.G(),a.m.autoBreadcrumbs&&a.H(),a.I(),a.p=!0),Error.stackTraceLimit=a.m.stackTraceLimit,this},setDSN:function(a){var b=this,c=b.J(a),d=c.path.lastIndexOf("/"),e=c.path.substr(1,d);b.K=a,b.j=c.user,b.L=c.pass&&c.pass.substr(1),b.k=c.path.substr(d+1),b.i=b.M(c),b.N=b.i+"/"+e+"api/"+b.k+"/store/",this.A()},context:function(a,b,c){return ea(a)&&(c=b||[],b=a,a=void 0),this.wrap(a,b).apply(this,c)},wrap:function(a,b,c){function d(){var d=[],f=arguments.length,g=!a||a&&a.deep!==!1;for(c&&ea(c)&&c.apply(this,arguments);f--;)d[f]=g?e.wrap(a,arguments[f]):arguments[f];try{return b.apply(this,d)}catch(h){throw e.O(),e.captureException(h,a),h}}var e=this;if(da(b)&&!ea(a))return a;if(ea(a)&&(b=a,a=void 0),!ea(b))return b;try{if(b.a)return b;if(b.P)return b.P}catch(f){return b}for(var g in b)ma(b,g)&&(d[g]=b[g]);return d.prototype=b.prototype,b.P=d,d.a=!0,d.b=b,d},uninstall:function(){return X.report.uninstall(),this.Q(),this.R(),this.S(),Error.stackTraceLimit=this.q,this.p=!1,this},captureException:function(a,b){b=ja({trimHeadFrames:0},b?b:{});var c=!aa(a),d=!ca(a),e=ca(a)&&!a.error;if(c&&d||e)return this.captureMessage(a,ja(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}));ca(a)&&(a=a.error),this.f=a;try{var f=X.computeStackTrace(a);this.T(f,b)}catch(g){if(a!==g)throw g}return this},captureMessage:function(a,b){if(!this.m.ignoreErrors.test||!this.m.ignoreErrors.test(a)){b=b||{};var c,d=ja({message:a+""},b);try{throw new Error(a)}catch(e){c=e}c.name=null;var f=X.computeStackTrace(c),g=ga(f.stack)&&f.stack[1],h=g&&g.url||"";if((!this.m.ignoreUrls.test||!this.m.ignoreUrls.test(h))&&(!this.m.whitelistUrls.test||this.m.whitelistUrls.test(h))){if(this.m.stacktrace||b&&b.stacktrace){b=ja({fingerprint:a,trimHeadFrames:(b.trimHeadFrames||0)+1},b);var i=this.U(f,b);d.stacktrace={frames:i.reverse()}}return this.V(d),this}}},captureBreadcrumb:function(a){var b=ja({timestamp:H()/1e3},a);if(ea(this.m.breadcrumbCallback)){var c=this.m.breadcrumbCallback(b);if(ba(c)&&!ha(c))b=c;else if(c===!1)return this}return this.w.push(b),this.w.length>this.m.maxBreadcrumbs&&this.w.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.t.push([a,b]),this.p&&this.I(),this},setUserContext:function(a){return this.l.user=a,this},setExtraContext:function(a){return this.W("extra",a),this},setTagsContext:function(a){return this.W("tags",a),this},clearContext:function(){return this.l={},this},getContext:function(){return JSON.parse(Y(this.l))},setEnvironment:function(a){return this.m.environment=a,this},setRelease:function(a){return this.m.release=a,this},setDataCallback:function(a){var b=this.m.dataCallback;return this.m.dataCallback=I(b,a),this},setBreadcrumbCallback:function(a){var b=this.m.breadcrumbCallback;return this.m.breadcrumbCallback=I(b,a),this},setShouldSendCallback:function(a){var b=this.m.shouldSendCallback;return this.m.shouldSendCallback=I(b,a),this},setTransport:function(a){return this.m.transport=a,this},lastException:function(){return this.f},lastEventId:function(){return this.h},isSetup:function(){return!!this.c&&(!!this.i||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.D("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=za.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(Aa){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new Z("Missing eventId");var c=a.dsn||this.K;if(!c)throw new Z("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.l.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.M(this.J(c)),h=Aa.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(Aa.head||Aa.body).appendChild(h)}},O:function(){var a=this;this.o+=1,setTimeout(function(){a.o-=1})},X:function(a,b){var c,d;if(this.d){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),Aa.createEvent?(c=Aa.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=Aa.createEventObject(),c.eventType=a);for(d in b)ma(b,d)&&(c[d]=b[d]);if(Aa.createEvent)Aa.dispatchEvent(c);else try{Aa.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},Y:function(a){var b=this;return function(c){if(b.Z=null,b.x!==c){b.x=c;var d;try{d=qa(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},$:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.Z;g||a.Y("input")(c),clearTimeout(g),a.Z=setTimeout(function(){a.Z=null},b)}}},_:function(a,b){var c=ta(this.y.href),d=ta(b),e=ta(a);this.z=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},F:function(){var a=this;a.aa=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.a?a.aa.apply(this.b,arguments):a.aa.apply(this,arguments)}},Q:function(){this.aa&&(Function.prototype.toString=this.aa)},G:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b._(b.z,c+""),a.apply(this,arguments)}};ua(history,"pushState",j,d),ua(history,"replaceState",j,d)}if(c.console&&"console"in za&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};ia(["debug","info","warn","error","log"],function(a,b){wa(console,b,k)})}},R:function(){for(var a;this.v.length;){a=this.v.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},S:function(){for(var a in this.s)this.r[a]=this.s[a]},I:function(){var a=this;ia(this.t,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},J:function(a){var b=ya.exec(a),c={},d=7;try{for(;d--;)c[xa[d]]=b[d]||""}catch(e){throw new Z("Invalid DSN: "+a)}if(c.pass&&!this.m.allowSecretKey)throw new Z("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},M:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},E:function(){this.o||this.T.apply(this,arguments)},T:function(a,b){var c=this.U(a,b);this.X("handle",{stackInfo:a,options:b}),this.ca(a.name,a.message,a.url,a.lineno,c,b)},U:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(ia(a.stack,function(b,e){var f=c.da(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.w,0)}),this.l.user&&(a.user=this.l.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||ha(a[b]))&&delete a[b]}),ea(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!ha(a)&&(!ea(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.ja()?void this.D("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random()":"anonymous component")+(a._isVue&&a.$options.__file?" at "+a.$options.__file:"")}function e(a,b){if(b=b||window.Vue,b&&b.config){var c=b.config.errorHandler;b.config.errorHandler=function(b,e,f){var g={};"[object Object]"===Object.prototype.toString.call(e)&&(g.componentName=d(e),g.propsData=e.$options.propsData),"undefined"!=typeof f&&(g.lifecycleHook=f),a.captureException(b,{extra:g}),"function"==typeof c&&c.call(this,b,e,f)}}}b.exports=e,a(7).addPlugin(b.exports)},{7:7}],4:[function(a,b,c){function d(a){this.name="RavenConfigError",this.message=a}d.prototype=new Error,d.prototype.constructor=d,b.exports=d},{}],5:[function(a,b,c){var d=a(8),e=function(a,b,c){var e=a[b],f=a;if(b in a){var g="warn"===b?"warning":b;a[b]=function(){var a=[].slice.call(arguments),h=d.safeJoin(a," "),i={level:g,logger:"console",extra:{arguments:a}};"assert"===b?a[0]===!1&&(h="Assertion failed: "+(d.safeJoin(a.slice(1)," ")||"console.assert"),i.extra.arguments=a.slice(1),c&&c(h,i)):c&&c(h,i),e&&Function.prototype.apply.call(e,f,a)}}};b.exports={wrapMethod:e}},{8:8}],6:[function(a,b,c){(function(c){function d(){return+new Date}function e(a,b){return q(b)?function(c){return b(c,a)}:b}function f(){this.b=!("object"!=typeof JSON||!JSON.stringify),this.c=!p(Q),this.d=!p(R),this.e=null,this.f=null,this.g=null,this.h=null,this.i=null,this.j=null,this.k={},this.l={release:P.SENTRY_RELEASE&&P.SENTRY_RELEASE.id,logger:"javascript",ignoreErrors:[],ignoreUrls:[],whitelistUrls:[],includePaths:[],headers:null,collectWindowErrors:!0,captureUnhandledRejections:!0,maxMessageLength:0,maxUrlLength:250,stackTraceLimit:50,autoBreadcrumbs:!0,instrument:!0,sampleRate:1,sanitizeKeys:[]},this.m={method:"POST",keepalive:!0,referrerPolicy:I()?"origin":""},this.n=0,this.o=!1,this.p=Error.stackTraceLimit,this.q=P.console||{},this.r={},this.s=[],this.t=d(),this.u=[],this.v=[],this.w=null,this.x=P.location,this.y=this.x&&this.x.href,this.z();for(var a in this.q)this.r[a]=this.q[a]}var g=a(9),h=a(10),i=a(11),j=a(4),k=a(8),l=k.isError,m=k.isObject,n=k.isPlainObject,o=k.isErrorEvent,p=k.isUndefined,q=k.isFunction,r=k.isString,s=k.isArray,t=k.isEmptyObject,u=k.each,v=k.objectMerge,w=k.truncate,x=k.objectFrozen,y=k.hasKey,z=k.joinRegExp,A=k.urlencode,B=k.uuid4,C=k.htmlTreeAsString,D=k.isSameException,E=k.isSameStacktrace,F=k.parseUrl,G=k.fill,H=k.supportsFetch,I=k.supportsReferrerPolicy,J=k.serializeKeysForMessage,K=k.serializeException,L=k.sanitize,M=a(5).wrapMethod,N="source protocol user pass host port path".split(" "),O=/^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/,P="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},Q=P.document,R=P.navigator;f.prototype={VERSION:"3.24.2",debug:!1,TraceKit:g,config:function(a,b){var c=this;if(c.h)return this.A("error","Error: Raven has already been configured"),c;if(!a)return c;var d=c.l;b&&u(b,function(a,b){"tags"===a||"extra"===a||"user"===a?c.k[a]=b:d[a]=b}),c.setDSN(a),d.ignoreErrors.push(/^Script error\.?$/),d.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/),d.ignoreErrors=z(d.ignoreErrors),d.ignoreUrls=!!d.ignoreUrls.length&&z(d.ignoreUrls),d.whitelistUrls=!!d.whitelistUrls.length&&z(d.whitelistUrls),d.includePaths=z(d.includePaths),d.maxBreadcrumbs=Math.max(0,Math.min(d.maxBreadcrumbs||100,100));var e={xhr:!0,console:!0,dom:!0,location:!0,sentry:!0},f=d.autoBreadcrumbs;"[object Object]"==={}.toString.call(f)?f=v(e,f):f!==!1&&(f=e),d.autoBreadcrumbs=f;var h={tryCatch:!0},i=d.instrument;return"[object Object]"==={}.toString.call(i)?i=v(h,i):i!==!1&&(i=h),d.instrument=i,g.collectWindowErrors=!!d.collectWindowErrors,c},install:function(){var a=this;return a.isSetup()&&!a.o&&(g.report.subscribe(function(){a.B.apply(a,arguments)}),a.l.captureUnhandledRejections&&a.C(),a.D(),a.l.instrument&&a.l.instrument.tryCatch&&a.E(),a.l.autoBreadcrumbs&&a.F(),a.G(),a.o=!0),Error.stackTraceLimit=a.l.stackTraceLimit,this},setDSN:function(a){var b=this,c=b.H(a),d=c.path.lastIndexOf("/"),e=c.path.substr(1,d);b.I=a,b.i=c.user,b.J=c.pass&&c.pass.substr(1),b.j=c.path.substr(d+1),b.h=b.K(c),b.L=b.h+"/"+e+"api/"+b.j+"/store/",this.z()},context:function(a,b,c){return q(a)&&(c=b||[],b=a,a=void 0),this.wrap(a,b).apply(this,c)},wrap:function(a,b,c){function d(){var d=[],f=arguments.length,g=!a||a&&a.deep!==!1;for(c&&q(c)&&c.apply(this,arguments);f--;)d[f]=g?e.wrap(a,arguments[f]):arguments[f];try{return b.apply(this,d)}catch(h){throw e.M(),e.captureException(h,a),h}}var e=this;if(p(b)&&!q(a))return a;if(q(a)&&(b=a,a=void 0),!q(b))return b;try{if(b.N)return b;if(b.O)return b.O}catch(f){return b}for(var g in b)y(b,g)&&(d[g]=b[g]);return d.prototype=b.prototype,b.O=d,d.N=!0,d.P=b,d},uninstall:function(){return g.report.uninstall(),this.Q(),this.R(),this.S(),this.T(),Error.stackTraceLimit=this.p,this.o=!1,this},U:function(a){this.A("debug","Raven caught unhandled promise rejection:",a),this.captureException(a.reason,{extra:{unhandledPromiseRejection:!0}})},C:function(){return this.U=this.U.bind(this),P.addEventListener&&P.addEventListener("unhandledrejection",this.U),this},Q:function(){return P.removeEventListener&&P.removeEventListener("unhandledrejection",this.U),this},captureException:function(a,b){if(b=v({trimHeadFrames:0},b?b:{}),o(a)&&a.error)a=a.error;else if(l(a))a=a;else{if(!n(a))return this.captureMessage(a,v(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}));b=this.V(b,a),a=new Error(b.message)}this.e=a;try{var c=g.computeStackTrace(a);this.W(c,b)}catch(d){if(a!==d)throw d}return this},V:function(a,b){var c=Object.keys(b).sort(),d=v(a,{message:"Non-Error exception captured with keys: "+J(c),fingerprint:[i(c)],extra:a.extra||{}});return d.extra.X=K(b),d},captureMessage:function(a,b){if(!this.l.ignoreErrors.test||!this.l.ignoreErrors.test(a)){b=b||{},a+="";var c,d=v({message:a},b);try{throw new Error(a)}catch(e){c=e}c.name=null;var f=g.computeStackTrace(c),h=s(f.stack)&&f.stack[1];h&&"Raven.captureException"===h.func&&(h=f.stack[2]);var i=h&&h.url||"";if((!this.l.ignoreUrls.test||!this.l.ignoreUrls.test(i))&&(!this.l.whitelistUrls.test||this.l.whitelistUrls.test(i))){if(this.l.stacktrace||b&&b.stacktrace){d.fingerprint=null==d.fingerprint?a:d.fingerprint,b=v({trimHeadFrames:0},b),b.trimHeadFrames+=1;var j=this.Y(f,b);d.stacktrace={frames:j.reverse()}}return d.fingerprint&&(d.fingerprint=s(d.fingerprint)?d.fingerprint:[d.fingerprint]),this.Z(d),this}}},captureBreadcrumb:function(a){var b=v({timestamp:d()/1e3},a);if(q(this.l.breadcrumbCallback)){var c=this.l.breadcrumbCallback(b);if(m(c)&&!t(c))b=c;else if(c===!1)return this}return this.v.push(b),this.v.length>this.l.maxBreadcrumbs&&this.v.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.s.push([a,b]),this.o&&this.G(),this},setUserContext:function(a){return this.k.user=a,this},setExtraContext:function(a){return this.$("extra",a),this},setTagsContext:function(a){return this.$("tags",a),this},clearContext:function(){return this.k={},this},getContext:function(){return JSON.parse(h(this.k))},setEnvironment:function(a){return this.l.environment=a,this},setRelease:function(a){return this.l.release=a,this},setDataCallback:function(a){var b=this.l.dataCallback;return this.l.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.l.breadcrumbCallback;return this.l.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.l.shouldSendCallback;return this.l.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.l.transport=a,this},lastException:function(){return this.e},lastEventId:function(){return this.g},isSetup:function(){return!!this.b&&(!!this.h||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.A("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=P.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(Q){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.I;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.k.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.K(this.H(c)),h=Q.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(Q.head||Q.body).appendChild(h)}},M:function(){var a=this;this.n+=1,setTimeout(function(){a.n-=1})},_:function(a,b){var c,d;if(this.c){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),Q.createEvent?(c=Q.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=Q.createEventObject(),c.eventType=a);for(d in b)y(b,d)&&(c[d]=b[d]);if(Q.createEvent)Q.dispatchEvent(c);else try{Q.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},aa:function(a){var b=this;return function(c){if(b.ba=null,b.w!==c){b.w=c;var d;try{d=C(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ca:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.ba;g||a.aa("input")(c),clearTimeout(g),a.ba=setTimeout(function(){a.ba=null},b)}}},da:function(a,b){var c=F(this.x.href),d=F(b),e=F(a);this.y=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},D:function(){var a=this;a.ea=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.N?a.ea.apply(this.P,arguments):a.ea.apply(this,arguments)}},R:function(){this.ea&&(Function.prototype.toString=this.ea)},E:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.da(b.y,c+""),a.apply(this,arguments)}};G(history,"pushState",j,d),G(history,"replaceState",j,d)}if(c.console&&"console"in P&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};u(["debug","info","warn","error","log"],function(a,b){M(console,b,k)})}},S:function(){for(var a;this.u.length;){a=this.u.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},T:function(){for(var a in this.r)this.q[a]=this.r[a]},G:function(){var a=this;u(this.s,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},H:function(a){var b=O.exec(a),c={},d=7;try{for(;d--;)c[N[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.l.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},K:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},B:function(){this.n||this.W.apply(this,arguments)},W:function(a,b){var c=this.Y(a,b);this._("handle",{stackInfo:a,options:b}),this.ga(a.name,a.message,a.url,a.lineno,c,b)},Y:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(u(a.stack,function(b,e){var f=c.ha(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.v,0)}),this.k.user&&(a.user=this.k.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),a=this.qa(a),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||t(a[b]))&&delete a[b]}),q(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!t(a)&&(!q(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.na()?void this.A("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function B(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&j(b))for(c=b.split(/\s+/),f=0;fc?M(a,b-1):d}function N(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?T:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function O(a,b){function c(a){return k(a)?a.map(function(a){return c(a)}):i(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!k(b)||k(b)&&0===b.length)return a;var d,e=w(b),f="********";try{d=JSON.parse(P(a))}catch(g){return a}return c(d)}var P=a(10),Q="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},R=3,S=51200,T=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isUndefined:g,isFunction:h,isPlainObject:i,isString:j,isArray:k,isEmptyObject:l,supportsErrorEvent:m,supportsFetch:n,supportsReferrerPolicy:o,supportsPromiseRejectionEvent:p,wrappedCallback:q,each:r,objectMerge:s,truncate:u,objectFrozen:t,hasKey:v,joinRegExp:w,urlencode:x,uuid4:z,htmlTreeAsString:A,htmlElementAsString:B,isSameException:E,isSameStacktrace:F,parseUrl:y,fill:G,safeJoin:H,serializeException:M,serializeKeysForMessage:N,sanitize:O}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{10:10}],9:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}var e=a(8),f={collectWindowErrors:!0,debug:!1},g="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},h=[].slice,i="?",j=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;f.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function k(a,b){var c=null;if(!b||f.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(h.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,g,h){var l=null,m=e.isErrorEvent(h)?h.error:h,n=e.isErrorEvent(a)?a.message:a;if(v)f.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&e.isError(m))l=f.computeStackTrace(m),k(l,!0);else{var p,r={url:b,line:c,column:g},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(j);p&&(s=p[1],n=p[2])}r.func=i,l={name:s,message:n,url:d(),stack:[r]},k(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=g.onerror,g.onerror=l,r=!0)}function n(){r&&(g.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,k.apply(null,[a,!1].concat(b))}function p(a,b){var c=h.call(arguments,1);if(v){if(u===a)return;o()}var d=f.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),f.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,e,f=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,g=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,h=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,j=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,k=/\((\S*)(?::(\d+))(?::(\d+))\)/,l=a.stack.split("\n"),m=[],n=(/^(.*) is undefined$/.exec(a.message),0),o=l.length;n eval")>-1;q&&(b=j.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==n||c[5]||"undefined"==typeof a.columnNumber||(m[0].column=a.columnNumber+1),e={url:c[3],func:c[1]||i,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}!e.func&&e.line&&(e.func=i),m.push(e)}return m.length?{name:a.name,message:a.message,url:d(),stack:m}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=i),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,g){for(var h,j,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==e&&o!==f.report){if(j={url:null,func:i,line:null,column:null},o.name?j.func=o.name:(h=k.exec(o.toString()))&&(j.func=h[1]),"undefined"==typeof j.func)try{j.func=h.input.substring(0,h.input.indexOf("{")); +}catch(p){}m[""+o]?n=!0:m[""+o]=!0,l.push(j)}g&&l.splice(0,g);var q={name:a.name,message:a.message,url:d(),stack:l};return b(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),q}function e(b,e){var g=null;e=null==e?0:+e;try{if(g=a(b))return g}catch(h){if(f.debug)throw h}try{if(g=c(b,e+1))return g}catch(h){if(f.debug)throw h}return{name:b.name,message:b.message,url:d()}}return e.augmentStackTraceWithInitialElement=b,e.computeStackTraceFromStackProp=a,e}(),b.exports=f}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{8:8}],10:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}],11:[function(a,b,c){function d(a,b){var c=(65535&a)+(65535&b),d=(a>>16)+(b>>16)+(c>>16);return d<<16|65535&c}function e(a,b){return a<>>32-b}function f(a,b,c,f,g,h){return d(e(d(d(b,a),d(f,h)),g),c)}function g(a,b,c,d,e,g,h){return f(b&c|~b&d,a,b,e,g,h)}function h(a,b,c,d,e,g,h){return f(b&d|c&~d,a,b,e,g,h)}function i(a,b,c,d,e,g,h){return f(b^c^d,a,b,e,g,h)}function j(a,b,c,d,e,g,h){return f(c^(b|~d),a,b,e,g,h)}function k(a,b){a[b>>5]|=128<>>9<<4)+14]=b;var c,e,f,k,l,m=1732584193,n=-271733879,o=-1732584194,p=271733878;for(c=0;c>5]>>>b%32&255);return c}function m(a){var b,c=[];for(c[(a.length>>2)-1]=void 0,b=0;b>5]|=(255&a.charCodeAt(b/8))<16&&(e=k(e,8*a.length)),c=0;c<16;c+=1)f[c]=909522486^e[c],g[c]=1549556828^e[c];return d=k(f.concat(m(b)),512+8*b.length),l(k(g.concat(d),640))}function p(a){var b,c,d="0123456789abcdef",e="";for(c=0;c>>4&15)+d.charAt(15&b);return e}function q(a){return unescape(encodeURIComponent(a))}function r(a){return n(q(a))}function s(a){return p(r(a))}function t(a,b){return o(q(a),q(b))}function u(a,b){return p(t(a,b))}function v(a,b,c){return b?c?t(b,a):u(b,a):c?r(a):s(a)}b.exports=v},{}]},{},[7,1,2,3])(7)}); //# sourceMappingURL=raven.min.js.map \ No newline at end of file diff --git a/dist/angular,console,vue/raven.min.js.map b/dist/angular,console,vue/raven.min.js.map index c2590481b216..aae26caf6d35 100644 --- a/dist/angular,console,vue/raven.min.js.map +++ b/dist/angular,console,vue/raven.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["raven.js"],"names":["global","factory","exports","module","define","amd","Raven","this","createCommonjsModule","fn","_typeof","obj","Symbol","iterator","constructor","prototype","isObject$1","what","isError$1","value","toString","call","Error","isErrorEvent$1","supportsErrorEvent","isUndefined$1","isFunction$1","isPlainObject","Object","isString$1","isArray$1","isEmptyObject$1","_","hasOwnProperty","ErrorEvent","e","supportsFetch$1","_window$3","Headers","Request","Response","wrappedCallback","callback","dataCallback","data","original","normalizedData","each$1","i","j","length","hasKey$1","objectMerge$1","obj1","obj2","key","objectFrozen$1","isFrozen","truncate$1","str","max","substr","object","joinRegExp$1","patterns","pattern","sources","len","push","replace","source","RegExp","join","urlencode$1","o","pairs","encodeURIComponent","parseUrl$1","url","match","query","fragment","protocol","host","path","relative","uuid4$1","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","r","Math","random","htmlTreeAsString$1","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","reverse","className","classes","attr","tagName","toLowerCase","id","split","attrWhitelist","getAttribute","isOnlyOneTruthy","a","b","isBothUndefined","isSameException$1","ex1","ex2","values","type","stacktrace","isSameStacktrace$1","stack1","stack2","frames1","frames","frames2","filename","lineno","colno","fill$1","name","replacement","track","orig","__raven__","__orig__","safeJoin","input","delimiter","output","String","getLocationHref","document","location","href","RavenConfigError","message","now","Date","keepOriginalCallback","isFunction","Raven$1","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window$1","SENTRY_RELEASE","logger","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","_fetchDefaults","method","keepalive","referrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","console","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","_lastHref","_resetBackoff","angularPlugin","angular","RavenProvider","$get","$window","ExceptionHandlerProvider","$provide","decorator","exceptionHandler","R","$delegate","ex","cause","captureException","extra","window","moduleName","provider","config","setDataCallback","wrappedCallback$1","_normalizeData","consolePlugin","pluginOptions","logLevels","levels","msg","captureMessage","level","pop","wrapConsoleMethod$1","formatComponentName","vm","$root","_isVue","$options","_componentTag","__file","vuePlugin","Vue","_oldOnError","errorHandler","error","info","metaData","componentName","propsData","lifecycleHook","commonjsGlobal","self","_sPO","setPrototypeOf","p","__proto__","Reflect","construct","Parent","args","Class","Constructor","apply","bind","utils","isObject","isError","isErrorEvent","isString","isArray","isEmptyObject","supportsFetch","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","TraceKit","debug","_window$2","_slice","slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","report","subscribe","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","stack","isWindowError","exception","concat","arguments","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","computeStackTrace","augmentStackTraceWithInitialElement","processLastException","groups","line","column","undefined","func","_oldOnerrorHandler","_onErrorHandlerInstalled","onerror","_lastExceptionStack","_lastArgs","lastArgs","lastException","rethrow","setTimeout","incomplete","uninstall","computeStackTraceFromStackProp","submatch","parts","element","chrome","gecko","winjs","geckoEval","chromeEval","lines","exec","isNative","indexOf","isEval","columnNumber","stackInfo","initial","unshift","partial","computeStackTraceByWalkingCallerChain","depth","item","functionName","funcs","recursion","curr","caller","substring","result","sourceURL","fileName","lineNumber","description","tracekit","stringify_1","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","err","keys","thisPos","Infinity","getSerialize","configError","wrapMethod","originalConsoleLevel","originalConsole","sentryLevel","Function","console$1","wrapConsoleMethod","dsnKeys","dsnPattern","navigator","VERSION","dsn","options","_logDebug","globalOptions","setDSN","maxBreadcrumbs","min","autoBreadcrumbDefaults","xhr","dom","sentry","instrumentDefaults","tryCatch","install","isSetup","_handleOnErrorStackInfo","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","lastIndexOf","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","context","wrap","_before","wrapped","deep","_ignoreNextOnError","__raven_wrapper__","property","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","trimHeadFrames","isNotError","isNotErrorEvent","isErrorEventWithoutError","_handleStackInfo","test","initialCall","fileurl","fingerprint","_prepareFrames","_send","captureBreadcrumb","crumb","timestamp","breadcrumbCallback","shift","addPlugin","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","O","X","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","Y","evtName","_keypressTimeout","target","category","$","debounceDuration","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","from","to","parsedLoc","parsedTo","parsedFrom","F","_originalFunctionToString","Q","G","wrapTimeFn","t","Array","originalCallback","wrapEventTarget","proto","capture","secure","handleEvent","before","clickHandler","keypressHandler","_keypressEventHandler","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","H","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","onreadystatechange","origFetch","fetchInput","fetchData","then","response","addEventListener","attachEvent","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","builtin","S","I","installer","J","m","allowSecretKey","M","port","E","T","_triggerEvent","_processException","U","frame","_normalizeFrame","in_app","da","stackInfoUrl","normalized","function","ca","prefixedMessage","culprit","ea","request","Referer","breadcrumbs","_trimBreadcrumbs","fa","urlProp","urlProps","ga","httpData","userAgent","User-Agent","referrer","A","_backoffDuration","_backoffStart","ja","ka","current","last","la","_shouldBackoff","retry","get","getResponseHeader","parseInt","V","baseData","project","platform","_getHttpData","serverName","server_name","forEach","_sendProcessedPayload","na","ma","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","oa","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","onload","open","setRequestHeader","send","pa","hash","evaluated","D","W","setUser","setReleaseContext","raven","_window","_Raven","noConflict","singleton","angularPattern","matches","angularDocs","console$3","vue","angular_console_vue"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file +{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","angularPlugin","angular","RavenProvider","$get","$window","ExceptionHandlerProvider","$provide","decorator","exceptionHandler","R","$delegate","ex","cause","captureException","extra","moduleName","provider","config","setDataCallback","wrappedCallback","data","_normalizeData","angularPattern","exception","values","matches","exec","value","type","message","angularDocs","substr","addPlugin","7","8","2","consolePlugin","console","pluginOptions","logLevels","levels","push","callback","msg","captureMessage","level","pop","wrapConsoleMethod","wrapMethod","5","3","formatComponentName","vm","$root","name","_isVue","$options","_componentTag","__file","vuePlugin","Vue","_oldOnError","errorHandler","error","info","metaData","Object","prototype","toString","componentName","propsData","lifecycleHook","4","RavenConfigError","constructor","utils","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","safeJoin","logger","Function","apply","6","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","sanitizeKeys","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isError","isObject","isPlainObject","isErrorEvent","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","sanitize","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","dsn","options","_logDebug","globalOptions","key","setDSN","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","context","func","undefined","wrap","_before","wrapped","deep","_ignoreNextOnError","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","U","event","reason","unhandledPromiseRejection","C","_promiseRejectionHandler","bind","addEventListener","Q","removeEventListener","trimHeadFrames","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","V","currentOptions","exKeys","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","M","setTimeout","_","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","aa","evtName","_keypressTimeout","target","category","ca","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","da","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","D","_originalFunctionToString","E","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","F","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","S","builtin","T","G","installer","concat","H","str","m","allowSecretKey","K","port","B","W","stackInfo","_triggerEvent","_processException","lineno","Y","frame","_normalizeFrame","in_app","ha","stackInfoUrl","normalized","filename","line","colno","column","function","ga","prefixedMessage","culprit","ia","request","Referer","breadcrumbs","_trimBreadcrumbs","ja","urlProp","urlProps","ka","httpData","userAgent","User-Agent","referrer","z","_backoffDuration","_backoffStart","na","oa","current","last","pa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Z","baseData","project","platform","_getHttpData","serverName","server_name","_sanitizeData","forEach","random","_sendProcessedPayload","qa","sa","ra","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","ta","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","onerror","open","setRequestHeader","send","ua","hash","evaluated","A","$","setUser","setReleaseContext","10","11","9","RavenConstructor","_Raven","noConflict","Client","what","supportsErrorEvent","ErrorEvent","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","sanitizeMask","safeInput","o_O","getLocationHref","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","y","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","charAt","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","string","raw"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file diff --git a/dist/angular,console/raven.js b/dist/angular,console/raven.js index 0584cef8af9f..dc6457dd2a14 100644 --- a/dist/angular,console/raven.js +++ b/dist/angular,console/raven.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.22.2 (1b6187b) | github.com/getsentry/raven-js */ +/*! Raven.js 3.24.2 (540f32b) | github.com/getsentry/raven-js */ /* * Includes TraceKit @@ -10,3227 +10,4007 @@ * */ -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : - typeof define === 'function' && define.amd ? define(factory) : - (global.Raven = factory()); -}(this, (function () { 'use strict'; - -var commonjsGlobal = typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; +(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.Raven = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o href parsing trick because React Native and other -// environments where DOM might not be available - - -function parseUrl$1(url) { - if (typeof url !== 'string') return {}; - var match = url.match(/^(([^:\/?#]+):)?(\/\/([^\/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?$/); // coerce to undefined values to empty string so we don't get 'undefined' - - var query = match[6] || ''; - var fragment = match[8] || ''; - return { - protocol: match[2], - host: match[4], - path: match[5], - relative: match[5] + query + fragment // everything minus origin - +// First, check for JSON support +// If there is no JSON, we no-op the core features of Raven +// since JSON is required to encode the payload +function Raven() { + this._hasJSON = !!(typeof JSON === 'object' && JSON.stringify); + // Raven can run in contexts where there's no document (react-native) + this._hasDocument = !isUndefined(_document); + this._hasNavigator = !isUndefined(_navigator); + this._lastCapturedException = null; + this._lastData = null; + this._lastEventId = null; + this._globalServer = null; + this._globalKey = null; + this._globalProject = null; + this._globalContext = {}; + this._globalOptions = { + // SENTRY_RELEASE can be injected by https://github.com/getsentry/sentry-webpack-plugin + release: _window.SENTRY_RELEASE && _window.SENTRY_RELEASE.id, + logger: 'javascript', + ignoreErrors: [], + ignoreUrls: [], + whitelistUrls: [], + includePaths: [], + headers: null, + collectWindowErrors: true, + captureUnhandledRejections: true, + maxMessageLength: 0, + // By default, truncates URL values to 250 chars + maxUrlLength: 250, + stackTraceLimit: 50, + autoBreadcrumbs: true, + instrument: true, + sampleRate: 1, + sanitizeKeys: [] }; -} - -function uuid4$1() { - var crypto = _window$3.crypto || _window$3.msCrypto; - - if (!isUndefined$1(crypto) && crypto.getRandomValues) { - // Use window.crypto API if available - // eslint-disable-next-line no-undef - var arr = new Uint16Array(8); - crypto.getRandomValues(arr); // set 4 in byte 7 - - arr[3] = arr[3] & 0xfff | 0x4000; // set 2 most significant bits of byte 9 to '10' - - arr[4] = arr[4] & 0x3fff | 0x8000; - - var pad = function pad(num) { - var v = num.toString(16); - - while (v.length < 4) { - v = '0' + v; - } - - return v; - }; + this._fetchDefaults = { + method: 'POST', + keepalive: true, + // Despite all stars in the sky saying that Edge supports old draft syntax, aka 'never', 'always', 'origin' and 'default + // https://caniuse.com/#feat=referrer-policy + // It doesn't. And it throw exception instead of ignoring this parameter... + // REF: https://github.com/getsentry/raven-js/issues/1233 + referrerPolicy: supportsReferrerPolicy() ? 'origin' : '' + }; + this._ignoreOnError = 0; + this._isRavenInstalled = false; + this._originalErrorStackTraceLimit = Error.stackTraceLimit; + // capture references to window.console *and* all its methods first + // before the console plugin has a chance to monkey patch + this._originalConsole = _window.console || {}; + this._originalConsoleMethods = {}; + this._plugins = []; + this._startTime = now(); + this._wrappedBuiltIns = []; + this._breadcrumbs = []; + this._lastCapturedEvent = null; + this._keypressTimeout; + this._location = _window.location; + this._lastHref = this._location && this._location.href; + this._resetBackoff(); - return pad(arr[0]) + pad(arr[1]) + pad(arr[2]) + pad(arr[3]) + pad(arr[4]) + pad(arr[5]) + pad(arr[6]) + pad(arr[7]); - } else { - // http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/2117523#2117523 - return 'xxxxxxxxxxxx4xxxyxxxxxxxxxxxxxxx'.replace(/[xy]/g, function (c) { - var r = Math.random() * 16 | 0, - v = c === 'x' ? r : r & 0x3 | 0x8; - return v.toString(16); - }); + // eslint-disable-next-line guard-for-in + for (var method in this._originalConsole) { + this._originalConsoleMethods[method] = this._originalConsole[method]; } } -/** - * Given a child DOM element, returns a query-selector statement describing that - * and its ancestors - * e.g. [HTMLElement] => body > div > input#foo.btn[name=baz] - * @param elem - * @returns {string} - */ +/* + * The core Raven singleton + * + * @this {Raven} + */ -function htmlTreeAsString$1(elem) { - /* eslint no-extra-parens:0*/ - var MAX_TRAVERSE_HEIGHT = 5, - MAX_OUTPUT_LEN = 80, - out = [], - height = 0, - len = 0, - separator = ' > ', - sepLength = separator.length, - nextStr; - - while (elem && height++ < MAX_TRAVERSE_HEIGHT) { - nextStr = htmlElementAsString(elem); // bail out if - // - nextStr is the 'html' element - // - the length of the string that would be created exceeds MAX_OUTPUT_LEN - // (ignore this limit if we are on the first iteration) +Raven.prototype = { + // Hardcode version string so that raven source can be loaded directly via + // webpack (using a build step causes webpack #1617). Grunt verifies that + // this value matches package.json during build. + // See: https://github.com/getsentry/raven-js/issues/465 + VERSION: '3.24.2', - if (nextStr === 'html' || height > 1 && len + out.length * sepLength + nextStr.length >= MAX_OUTPUT_LEN) { - break; - } + debug: false, - out.push(nextStr); - len += nextStr.length; - elem = elem.parentNode; - } + TraceKit: TraceKit, // alias to TraceKit - return out.reverse().join(separator); -} -/** - * Returns a simple, query-selector representation of a DOM element - * e.g. [HTMLElement] => input#foo.btn[name=baz] - * @param HTMLElement - * @returns {string} - */ + /* + * Configure Raven with a DSN and extra options + * + * @param {string} dsn The public Sentry DSN + * @param {object} options Set of global options [optional] + * @return {Raven} + */ + config: function(dsn, options) { + var self = this; + if (self._globalServer) { + this._logDebug('error', 'Error: Raven has already been configured'); + return self; + } + if (!dsn) return self; -function htmlElementAsString(elem) { - var out = [], - className, - classes, - key, - attr, - i; + var globalOptions = self._globalOptions; - if (!elem || !elem.tagName) { - return ''; - } + // merge in options + if (options) { + each(options, function(key, value) { + // tags and extra are special and need to be put into context + if (key === 'tags' || key === 'extra' || key === 'user') { + self._globalContext[key] = value; + } else { + globalOptions[key] = value; + } + }); + } - out.push(elem.tagName.toLowerCase()); + self.setDSN(dsn); - if (elem.id) { - out.push('#' + elem.id); - } + // "Script error." is hard coded into browsers for errors that it can't read. + // this is the result of a script being pulled in from an external domain and CORS. + globalOptions.ignoreErrors.push(/^Script error\.?$/); + globalOptions.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/); - className = elem.className; + // join regexp rules into one big rule + globalOptions.ignoreErrors = joinRegExp(globalOptions.ignoreErrors); + globalOptions.ignoreUrls = globalOptions.ignoreUrls.length + ? joinRegExp(globalOptions.ignoreUrls) + : false; + globalOptions.whitelistUrls = globalOptions.whitelistUrls.length + ? joinRegExp(globalOptions.whitelistUrls) + : false; + globalOptions.includePaths = joinRegExp(globalOptions.includePaths); + globalOptions.maxBreadcrumbs = Math.max( + 0, + Math.min(globalOptions.maxBreadcrumbs || 100, 100) + ); // default and hard limit is 100 - if (className && isString$1(className)) { - classes = className.split(/\s+/); + var autoBreadcrumbDefaults = { + xhr: true, + console: true, + dom: true, + location: true, + sentry: true + }; - for (i = 0; i < classes.length; i++) { - out.push('.' + classes[i]); + var autoBreadcrumbs = globalOptions.autoBreadcrumbs; + if ({}.toString.call(autoBreadcrumbs) === '[object Object]') { + autoBreadcrumbs = objectMerge(autoBreadcrumbDefaults, autoBreadcrumbs); + } else if (autoBreadcrumbs !== false) { + autoBreadcrumbs = autoBreadcrumbDefaults; } - } - - var attrWhitelist = ['type', 'name', 'title', 'alt']; + globalOptions.autoBreadcrumbs = autoBreadcrumbs; - for (i = 0; i < attrWhitelist.length; i++) { - key = attrWhitelist[i]; - attr = elem.getAttribute(key); + var instrumentDefaults = { + tryCatch: true + }; - if (attr) { - out.push('[' + key + '="' + attr + '"]'); + var instrument = globalOptions.instrument; + if ({}.toString.call(instrument) === '[object Object]') { + instrument = objectMerge(instrumentDefaults, instrument); + } else if (instrument !== false) { + instrument = instrumentDefaults; } - } + globalOptions.instrument = instrument; - return out.join(''); -} -/** - * Returns true if either a OR b is truthy, but not both - */ + TraceKit.collectWindowErrors = !!globalOptions.collectWindowErrors; + // return for chaining + return self; + }, -function isOnlyOneTruthy(a, b) { - return !!(!!a ^ !!b); -} -/** - * Returns true if both parameters are undefined - */ + /* + * Installs a global window.onerror error handler + * to capture and report uncaught exceptions. + * At this point, install() is required to be called due + * to the way TraceKit is set up. + * + * @return {Raven} + */ + install: function() { + var self = this; + if (self.isSetup() && !self._isRavenInstalled) { + TraceKit.report.subscribe(function() { + self._handleOnErrorStackInfo.apply(self, arguments); + }); + if (self._globalOptions.captureUnhandledRejections) { + self._attachPromiseRejectionHandler(); + } -function isBothUndefined(a, b) { - return isUndefined$1(a) && isUndefined$1(b); -} -/** - * Returns true if the two input exception interfaces have the same content - */ + self._patchFunctionToString(); + if (self._globalOptions.instrument && self._globalOptions.instrument.tryCatch) { + self._instrumentTryCatch(); + } -function isSameException$1(ex1, ex2) { - if (isOnlyOneTruthy(ex1, ex2)) return false; - ex1 = ex1.values[0]; - ex2 = ex2.values[0]; - if (ex1.type !== ex2.type || ex1.value !== ex2.value) return false; // in case both stacktraces are undefined, we can't decide so default to false + if (self._globalOptions.autoBreadcrumbs) self._instrumentBreadcrumbs(); - if (isBothUndefined(ex1.stacktrace, ex2.stacktrace)) return false; - return isSameStacktrace$1(ex1.stacktrace, ex2.stacktrace); -} -/** - * Returns true if the two input stack trace interfaces have the same content - */ + // Install all of the plugins + self._drainPlugins(); + self._isRavenInstalled = true; + } -function isSameStacktrace$1(stack1, stack2) { - if (isOnlyOneTruthy(stack1, stack2)) return false; - var frames1 = stack1.frames; - var frames2 = stack2.frames; // Exit early if frame count differs + Error.stackTraceLimit = self._globalOptions.stackTraceLimit; + return this; + }, - if (frames1.length !== frames2.length) return false; // Iterate through every frame; bail out if anything differs + /* + * Set the DSN (can be called multiple time unlike config) + * + * @param {string} dsn The public Sentry DSN + */ + setDSN: function(dsn) { + var self = this, + uri = self._parseDSN(dsn), + lastSlash = uri.path.lastIndexOf('/'), + path = uri.path.substr(1, lastSlash); - var a, b; + self._dsn = dsn; + self._globalKey = uri.user; + self._globalSecret = uri.pass && uri.pass.substr(1); + self._globalProject = uri.path.substr(lastSlash + 1); - for (var i = 0; i < frames1.length; i++) { - a = frames1[i]; - b = frames2[i]; - if (a.filename !== b.filename || a.lineno !== b.lineno || a.colno !== b.colno || a['function'] !== b['function']) return false; - } + self._globalServer = self._getGlobalServer(uri); - return true; -} -/** - * Polyfill a method - * @param obj object e.g. `document` - * @param name method name present on object e.g. `addEventListener` - * @param replacement replacement function - * @param track {optional} record instrumentation to an array - */ + self._globalEndpoint = + self._globalServer + '/' + path + 'api/' + self._globalProject + '/store/'; + // Reset backoff state since we may be pointing at a + // new project/server + this._resetBackoff(); + }, -function fill$1(obj, name, replacement, track) { - var orig = obj[name]; - obj[name] = replacement(orig); - obj[name].__raven__ = true; - obj[name].__orig__ = orig; + /* + * Wrap code within a context so Raven can capture errors + * reliably across domains that is executed immediately. + * + * @param {object} options A specific set of options for this context [optional] + * @param {function} func The callback to be immediately executed within the context + * @param {array} args An array of arguments to be called with the callback [optional] + */ + context: function(options, func, args) { + if (isFunction(options)) { + args = func || []; + func = options; + options = undefined; + } - if (track) { - track.push([obj, name, orig]); - } -} -/** - * Join values in array - * @param input array of values to be joined together - * @param delimiter string to be placed in-between values - * @returns {string} - */ + return this.wrap(options, func).apply(this, args); + }, + + /* + * Wrap code within a context and returns back a new function to be executed + * + * @param {object} options A specific set of options for this context [optional] + * @param {function} func The function to be wrapped in a new context + * @param {function} func A function to call before the try/catch wrapper [optional, private] + * @return {function} The newly wrapped functions with a context + */ + wrap: function(options, func, _before) { + var self = this; + // 1 argument has been passed, and it's not a function + // so just return it + if (isUndefined(func) && !isFunction(options)) { + return options; + } + // options is optional + if (isFunction(options)) { + func = options; + options = undefined; + } -function safeJoin(input, delimiter) { - if (!isArray$1(input)) return ''; - var output = []; + // At this point, we've passed along 2 arguments, and the second one + // is not a function either, so we'll just return the second argument. + if (!isFunction(func)) { + return func; + } - for (var i = 0; i < input.length; i++) { + // We don't wanna wrap it twice! try { - output.push(String(input[i])); + if (func.__raven__) { + return func; + } + + // If this has already been wrapped in the past, return that + if (func.__raven_wrapper__) { + return func.__raven_wrapper__; + } } catch (e) { - output.push('[value cannot be serialized]'); + // Just accessing custom props in some Selenium environments + // can cause a "Permission denied" exception (see raven-js#495). + // Bail on wrapping and return the function as-is (defers to window.onerror). + return func; } - } - return output.join(delimiter); -} - -var utils = { - isObject: isObject$1, - isError: isError$1, - isErrorEvent: isErrorEvent$1, - isUndefined: isUndefined$1, - isFunction: isFunction$1, - isPlainObject: isPlainObject, - isString: isString$1, - isArray: isArray$1, - isEmptyObject: isEmptyObject$1, - supportsErrorEvent: supportsErrorEvent, - supportsFetch: supportsFetch$1, - wrappedCallback: wrappedCallback, - each: each$1, - objectMerge: objectMerge$1, - truncate: truncate$1, - objectFrozen: objectFrozen$1, - hasKey: hasKey$1, - joinRegExp: joinRegExp$1, - urlencode: urlencode$1, - uuid4: uuid4$1, - htmlTreeAsString: htmlTreeAsString$1, - htmlElementAsString: htmlElementAsString, - isSameException: isSameException$1, - isSameStacktrace: isSameStacktrace$1, - parseUrl: parseUrl$1, - fill: fill$1, - safeJoin: safeJoin -}; + function wrapped() { + var args = [], + i = arguments.length, + deep = !options || (options && options.deep !== false); -/* - TraceKit - Cross brower stack traces + if (_before && isFunction(_before)) { + _before.apply(this, arguments); + } - This was originally forked from github.com/occ/TraceKit, but has since been - largely re-written and is now maintained as part of raven-js. Tests for - this are in test/vendor. + // Recursively wrap all of a function's arguments that are + // functions themselves. + while (i--) args[i] = deep ? self.wrap(options, arguments[i]) : arguments[i]; - MIT license -*/ + try { + // Attempt to invoke user-land function + // NOTE: If you are a Sentry user, and you are seeing this stack frame, it + // means Raven caught an error invoking your application code. This is + // expected behavior and NOT indicative of a bug with Raven.js. + return func.apply(this, args); + } catch (e) { + self._ignoreNextOnError(); + self.captureException(e, options); + throw e; + } + } -var TraceKit = { - collectWindowErrors: true, - debug: false -}; // This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) + // copy over properties of the old function + for (var property in func) { + if (hasKey(func, property)) { + wrapped[property] = func[property]; + } + } + wrapped.prototype = func.prototype; -var _window$2 = typeof window !== 'undefined' ? window : typeof commonjsGlobal !== 'undefined' ? commonjsGlobal : typeof self !== 'undefined' ? self : {}; // global reference to slice + func.__raven_wrapper__ = wrapped; + // Signal that this function has been wrapped/filled already + // for both debugging and to prevent it to being wrapped/filled twice + wrapped.__raven__ = true; + wrapped.__orig__ = func; + return wrapped; + }, -var _slice = [].slice; -var UNKNOWN_FUNCTION = '?'; // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error#Error_types + /** + * Uninstalls the global error handler. + * + * @return {Raven} + */ + uninstall: function() { + TraceKit.report.uninstall(); -var ERROR_TYPES_RE = /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/; + this._detachPromiseRejectionHandler(); + this._unpatchFunctionToString(); + this._restoreBuiltIns(); + this._restoreConsole(); -function getLocationHref() { - if (typeof document === 'undefined' || document.location == null) return ''; - return document.location.href; -} -/** - * TraceKit.report: cross-browser processing of unhandled exceptions - * - * Syntax: - * TraceKit.report.subscribe(function(stackInfo) { ... }) - * TraceKit.report.unsubscribe(function(stackInfo) { ... }) - * TraceKit.report(exception) - * try { ...code... } catch(ex) { TraceKit.report(ex); } - * - * Supports: - * - Firefox: full stack trace with line numbers, plus column number - * on top frame; column number is not guaranteed - * - Opera: full stack trace with line and column numbers - * - Chrome: full stack trace with line and column numbers - * - Safari: line and column number for the top frame only; some frames - * may be missing, and column number is not guaranteed - * - IE: line and column number for the top frame only; some frames - * may be missing, and column number is not guaranteed - * - * In theory, TraceKit should work on all of the following versions: - * - IE5.5+ (only 8.0 tested) - * - Firefox 0.9+ (only 3.5+ tested) - * - Opera 7+ (only 10.50 tested; versions 9 and earlier may require - * Exceptions Have Stacktrace to be enabled in opera:config) - * - Safari 3+ (only 4+ tested) - * - Chrome 1+ (only 5+ tested) - * - Konqueror 3.5+ (untested) - * - * Requires TraceKit.computeStackTrace. - * - * Tries to catch all unhandled exceptions and report them to the - * subscribed handlers. Please note that TraceKit.report will rethrow the - * exception. This is REQUIRED in order to get a useful stack trace in IE. - * If the exception does not reach the top of the browser, you will only - * get a stack trace from the point where TraceKit.report was called. - * - * Handlers receive a stackInfo object as described in the - * TraceKit.computeStackTrace docs. - */ + Error.stackTraceLimit = this._originalErrorStackTraceLimit; + this._isRavenInstalled = false; + return this; + }, -TraceKit.report = function reportModuleWrapper() { - var handlers = [], - lastArgs = null, - lastException = null, - lastExceptionStack = null; /** - * Add a crash handler. - * @param {Function} handler - */ + * Callback used for `unhandledrejection` event + * + * @param {PromiseRejectionEvent} event An object containing + * promise: the Promise that was rejected + * reason: the value with which the Promise was rejected + * @return void + */ + _promiseRejectionHandler: function(event) { + this._logDebug('debug', 'Raven caught unhandled promise rejection:', event); + this.captureException(event.reason, { + extra: { + unhandledPromiseRejection: true + } + }); + }, - function subscribe(handler) { - installGlobalHandler(); - handlers.push(handler); - } /** - * Remove a crash handler. - * @param {Function} handler - */ + * Installs the global promise rejection handler. + * + * @return {raven} + */ + _attachPromiseRejectionHandler: function() { + this._promiseRejectionHandler = this._promiseRejectionHandler.bind(this); + _window.addEventListener && + _window.addEventListener('unhandledrejection', this._promiseRejectionHandler); + return this; + }, + /** + * Uninstalls the global promise rejection handler. + * + * @return {raven} + */ + _detachPromiseRejectionHandler: function() { + _window.removeEventListener && + _window.removeEventListener('unhandledrejection', this._promiseRejectionHandler); + return this; + }, - function unsubscribe(handler) { - for (var i = handlers.length - 1; i >= 0; --i) { - if (handlers[i] === handler) { - handlers.splice(i, 1); + /** + * Manually capture an exception and send it over to Sentry + * + * @param {error} ex An exception to be logged + * @param {object} options A specific set of options for this error [optional] + * @return {Raven} + */ + captureException: function(ex, options) { + options = objectMerge({trimHeadFrames: 0}, options ? options : {}); + + if (isErrorEvent(ex) && ex.error) { + // If it is an ErrorEvent with `error` property, extract it to get actual Error + ex = ex.error; + } else if (isError(ex)) { + // we have a real Error object + ex = ex; + } else if (isPlainObject(ex)) { + // If it is plain Object, serialize it manually and extract options + // This will allow us to group events based on top-level keys + // which is much better than creating new group when any key/value change + options = this._getCaptureExceptionOptionsFromPlainObject(options, ex); + ex = new Error(options.message); + } else { + // If none of previous checks were valid, then it means that + // it's not a plain Object + // it's not a valid ErrorEvent (one with an error property) + // it's not an Error + // So bail out and capture it as a simple message: + return this.captureMessage( + ex, + objectMerge(options, { + stacktrace: true, // if we fall back to captureMessage, default to attempting a new trace + trimHeadFrames: options.trimHeadFrames + 1 + }) + ); + } + + // Store the raw exception object for potential debugging and introspection + this._lastCapturedException = ex; + + // TraceKit.report will re-raise any exception passed to it, + // which means you have to wrap it in try/catch. Instead, we + // can wrap it here and only re-raise if TraceKit.report + // raises an exception different from the one we asked to + // report on. + try { + var stack = TraceKit.computeStackTrace(ex); + this._handleStackInfo(stack, options); + } catch (ex1) { + if (ex !== ex1) { + throw ex1; } } - } - /** - * Remove all crash handlers. - */ + return this; + }, - function unsubscribeAll() { - uninstallGlobalHandler(); - handlers = []; - } - /** - * Dispatch stack information to all handlers. - * @param {Object.} stack - */ - + _getCaptureExceptionOptionsFromPlainObject: function(currentOptions, ex) { + var exKeys = Object.keys(ex).sort(); + var options = objectMerge(currentOptions, { + message: + 'Non-Error exception captured with keys: ' + serializeKeysForMessage(exKeys), + fingerprint: [md5(exKeys)], + extra: currentOptions.extra || {} + }); + options.extra.__serialized__ = serializeException(ex); - function notifyHandlers(stack, isWindowError) { - var exception = null; + return options; + }, - if (isWindowError && !TraceKit.collectWindowErrors) { + /* + * Manually send a message to Sentry + * + * @param {string} msg A plain message to be captured in Sentry + * @param {object} options A specific set of options for this message [optional] + * @return {Raven} + */ + captureMessage: function(msg, options) { + // config() automagically converts ignoreErrors from a list to a RegExp so we need to test for an + // early call; we'll error on the side of logging anything called before configuration since it's + // probably something you should see: + if ( + !!this._globalOptions.ignoreErrors.test && + this._globalOptions.ignoreErrors.test(msg) + ) { return; } - for (var i in handlers) { - if (handlers.hasOwnProperty(i)) { - try { - handlers[i].apply(null, [stack].concat(_slice.call(arguments, 2))); - } catch (inner) { - exception = inner; - } - } - } + options = options || {}; + msg = msg + ''; // Make sure it's actually a string - if (exception) { - throw exception; + var data = objectMerge( + { + message: msg + }, + options + ); + + var ex; + // Generate a "synthetic" stack trace from this point. + // NOTE: If you are a Sentry user, and you are seeing this stack frame, it is NOT indicative + // of a bug with Raven.js. Sentry generates synthetic traces either by configuration, + // or if it catches a thrown object without a "stack" property. + try { + throw new Error(msg); + } catch (ex1) { + ex = ex1; } - } - var _oldOnerrorHandler, _onErrorHandlerInstalled; - /** - * Ensures all global unhandled exceptions are recorded. - * Supported by Gecko and IE. - * @param {string} msg Error message. - * @param {string} url URL of script that generated the exception. - * @param {(number|string)} lineNo The line number at which the error - * occurred. - * @param {?(number|string)} colNo The column number at which the error - * occurred. - * @param {?Error} ex The actual Error object. - */ - - - function traceKitWindowOnError(msg, url, lineNo, colNo, ex) { - var stack = null; // If 'ex' is ErrorEvent, get real Error from inside - - var exception = utils.isErrorEvent(ex) ? ex.error : ex; // If 'msg' is ErrorEvent, get real message from inside - - var message = utils.isErrorEvent(msg) ? msg.message : msg; + // null exception name so `Error` isn't prefixed to msg + ex.name = null; + var stack = TraceKit.computeStackTrace(ex); - if (lastExceptionStack) { - TraceKit.computeStackTrace.augmentStackTraceWithInitialElement(lastExceptionStack, url, lineNo, message); - processLastException(); - } else if (exception && utils.isError(exception)) { - // non-string `exception` arg; attempt to extract stack trace - // New chrome and blink send along a real error object - // Let's just report that like a normal error. - // See: https://mikewest.org/2013/08/debugging-runtime-errors-with-window-onerror - stack = TraceKit.computeStackTrace(exception); - notifyHandlers(stack, true); - } else { - var location = { - url: url, - line: lineNo, - column: colNo - }; - var name = undefined; - var groups; + // stack[0] is `throw new Error(msg)` call itself, we are interested in the frame that was just before that, stack[1] + var initialCall = isArray(stack.stack) && stack.stack[1]; - if ({}.toString.call(message) === '[object String]') { - var groups = message.match(ERROR_TYPES_RE); + // if stack[1] is `Raven.captureException`, it means that someone passed a string to it and we redirected that call + // to be handled by `captureMessage`, thus `initialCall` is the 3rd one, not 2nd + // initialCall => captureException(string) => captureMessage(string) + if (initialCall && initialCall.func === 'Raven.captureException') { + initialCall = stack.stack[2]; + } - if (groups) { - name = groups[1]; - message = groups[2]; - } - } + var fileurl = (initialCall && initialCall.url) || ''; - location.func = UNKNOWN_FUNCTION; - stack = { - name: name, - message: message, - url: getLocationHref(), - stack: [location] - }; - notifyHandlers(stack, true); + if ( + !!this._globalOptions.ignoreUrls.test && + this._globalOptions.ignoreUrls.test(fileurl) + ) { + return; } - if (_oldOnerrorHandler) { - return _oldOnerrorHandler.apply(this, arguments); + if ( + !!this._globalOptions.whitelistUrls.test && + !this._globalOptions.whitelistUrls.test(fileurl) + ) { + return; } - return false; - } + if (this._globalOptions.stacktrace || (options && options.stacktrace)) { + // fingerprint on msg, not stack trace (legacy behavior, could be revisited) + data.fingerprint = data.fingerprint == null ? msg : data.fingerprint; - function installGlobalHandler() { - if (_onErrorHandlerInstalled) { - return; - } + options = objectMerge( + { + trimHeadFrames: 0 + }, + options + ); + // Since we know this is a synthetic trace, the top frame (this function call) + // MUST be from Raven.js, so mark it for trimming + // We add to the trim counter so that callers can choose to trim extra frames, such + // as utility functions. + options.trimHeadFrames += 1; - _oldOnerrorHandler = _window$2.onerror; - _window$2.onerror = traceKitWindowOnError; - _onErrorHandlerInstalled = true; - } + var frames = this._prepareFrames(stack, options); + data.stacktrace = { + // Sentry expects frames oldest to newest + frames: frames.reverse() + }; + } - function uninstallGlobalHandler() { - if (!_onErrorHandlerInstalled) { - return; + // Make sure that fingerprint is always wrapped in an array + if (data.fingerprint) { + data.fingerprint = isArray(data.fingerprint) + ? data.fingerprint + : [data.fingerprint]; } - _window$2.onerror = _oldOnerrorHandler; - _onErrorHandlerInstalled = false; - _oldOnerrorHandler = undefined; - } + // Fire away! + this._send(data); - function processLastException() { - var _lastExceptionStack = lastExceptionStack, - _lastArgs = lastArgs; - lastArgs = null; - lastExceptionStack = null; - lastException = null; - notifyHandlers.apply(null, [_lastExceptionStack, false].concat(_lastArgs)); - } - /** - * Reports an unhandled Error to TraceKit. - * @param {Error} ex - * @param {?boolean} rethrow If false, do not re-throw the exception. - * Only used for window.onerror to not cause an infinite loop of - * rethrowing. - */ + return this; + }, + captureBreadcrumb: function(obj) { + var crumb = objectMerge( + { + timestamp: now() / 1000 + }, + obj + ); - function report(ex, rethrow) { - var args = _slice.call(arguments, 1); + if (isFunction(this._globalOptions.breadcrumbCallback)) { + var result = this._globalOptions.breadcrumbCallback(crumb); - if (lastExceptionStack) { - if (lastException === ex) { - return; // already caught by an inner catch block, ignore - } else { - processLastException(); + if (isObject(result) && !isEmptyObject(result)) { + crumb = result; + } else if (result === false) { + return this; } } - var stack = TraceKit.computeStackTrace(ex); - lastExceptionStack = stack; - lastException = ex; - lastArgs = args; // If the stack trace is incomplete, wait for 2 seconds for - // slow slow IE to see if onerror occurs or not before reporting - // this exception; otherwise, we will end up with an incomplete - // stack trace + this._breadcrumbs.push(crumb); + if (this._breadcrumbs.length > this._globalOptions.maxBreadcrumbs) { + this._breadcrumbs.shift(); + } + return this; + }, - setTimeout(function () { - if (lastException === ex) { - processLastException(); - } - }, stack.incomplete ? 2000 : 0); + addPlugin: function(plugin /*arg1, arg2, ... argN*/) { + var pluginArgs = [].slice.call(arguments, 1); - if (rethrow !== false) { - throw ex; // re-throw to propagate to the top level (and cause window.onerror) + this._plugins.push([plugin, pluginArgs]); + if (this._isRavenInstalled) { + this._drainPlugins(); } - } - report.subscribe = subscribe; - report.unsubscribe = unsubscribe; - report.uninstall = unsubscribeAll; - return report; -}(); -/** - * TraceKit.computeStackTrace: cross-browser stack traces in JavaScript - * - * Syntax: - * s = TraceKit.computeStackTrace(exception) // consider using TraceKit.report instead (see below) - * Returns: - * s.name - exception name - * s.message - exception message - * s.stack[i].url - JavaScript or HTML file URL - * s.stack[i].func - function name, or empty for anonymous functions (if guessing did not work) - * s.stack[i].args - arguments passed to the function, if known - * s.stack[i].line - line number, if known - * s.stack[i].column - column number, if known - * - * Supports: - * - Firefox: full stack trace with line numbers and unreliable column - * number on top frame - * - Opera 10: full stack trace with line and column numbers - * - Opera 9-: full stack trace with line numbers - * - Chrome: full stack trace with line and column numbers - * - Safari: line and column number for the topmost stacktrace element - * only - * - IE: no line numbers whatsoever - * - * Tries to guess names of anonymous functions by looking for assignments - * in the source code. In IE and Safari, we have to guess source file names - * by searching for function bodies inside all page scripts. This will not - * work for scripts that are loaded cross-domain. - * Here be dragons: some function names may be guessed incorrectly, and - * duplicate functions may be mismatched. - * - * TraceKit.computeStackTrace should only be used for tracing purposes. - * Logging of unhandled exceptions should be done with TraceKit.report, - * which builds on top of TraceKit.computeStackTrace and provides better - * IE support by utilizing the window.onerror event to retrieve information - * about the top of the stack. - * - * Note: In IE and Safari, no stack trace is recorded on the Error object, - * so computeStackTrace instead walks its *own* chain of callers. - * This means that: - * * in Safari, some methods may be missing from the stack trace; - * * in IE, the topmost function in the stack trace will always be the - * caller of computeStackTrace. - * - * This is okay for tracing (because you are likely to be calling - * computeStackTrace from the function you want to be the topmost element - * of the stack trace anyway), but not okay for logging unhandled - * exceptions (because your catch block will likely be far away from the - * inner function that actually caused the exception). - * - */ + return this; + }, + /* + * Set/clear a user to be sent along with the payload. + * + * @param {object} user An object representing user data [optional] + * @return {Raven} + */ + setUserContext: function(user) { + // Intentionally do not merge here since that's an unexpected behavior. + this._globalContext.user = user; -TraceKit.computeStackTrace = function computeStackTraceWrapper() { - // Contents of Exception in various browsers. - // - // SAFARI: - // ex.message = Can't find variable: qq - // ex.line = 59 - // ex.sourceId = 580238192 - // ex.sourceURL = http://... - // ex.expressionBeginOffset = 96 - // ex.expressionCaretOffset = 98 - // ex.expressionEndOffset = 98 - // ex.name = ReferenceError - // - // FIREFOX: - // ex.message = qq is not defined - // ex.fileName = http://... - // ex.lineNumber = 59 - // ex.columnNumber = 69 - // ex.stack = ...stack trace... (see the example below) - // ex.name = ReferenceError - // - // CHROME: - // ex.message = qq is not defined - // ex.name = ReferenceError - // ex.type = not_defined - // ex.arguments = ['aa'] - // ex.stack = ...stack trace... - // - // INTERNET EXPLORER: - // ex.message = ... - // ex.name = ReferenceError - // - // OPERA: - // ex.message = ...message... (see the example below) - // ex.name = ReferenceError - // ex.opera#sourceloc = 11 (pretty much useless, duplicates the info in ex.message) - // ex.stacktrace = n/a; see 'opera:config#UserPrefs|Exceptions Have Stacktrace' + return this; + }, - /** - * Computes stack trace information from the stack property. - * Chrome and Gecko use this property. - * @param {Error} ex - * @return {?Object.} Stack trace information. + /* + * Merge extra attributes to be sent along with the payload. + * + * @param {object} extra An object representing extra data [optional] + * @return {Raven} */ - function computeStackTraceFromStackProp(ex) { - if (typeof ex.stack === 'undefined' || !ex.stack) return; - var chrome = /^\s*at (.*?) ?\(((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i, - gecko = /^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|\[native).*?|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i, - winjs = /^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i, - // Used to additionally parse URL/line/column from eval frames - geckoEval = /(\S+) line (\d+)(?: > eval line \d+)* > eval/i, - chromeEval = /\((\S*)(?::(\d+))(?::(\d+))\)/, - lines = ex.stack.split('\n'), - stack = [], - submatch, - parts, - element, - reference = /^(.*) is undefined$/.exec(ex.message); + setExtraContext: function(extra) { + this._mergeContext('extra', extra); - for (var i = 0, j = lines.length; i < j; ++i) { - if (parts = chrome.exec(lines[i])) { - var isNative = parts[2] && parts[2].indexOf('native') === 0; // start of line + return this; + }, - var isEval = parts[2] && parts[2].indexOf('eval') === 0; // start of line + /* + * Merge tags to be sent along with the payload. + * + * @param {object} tags An object representing tags [optional] + * @return {Raven} + */ + setTagsContext: function(tags) { + this._mergeContext('tags', tags); - if (isEval && (submatch = chromeEval.exec(parts[2]))) { - // throw out eval line/column and use top-most line/column number - parts[2] = submatch[1]; // url + return this; + }, - parts[3] = submatch[2]; // line + /* + * Clear all of the context. + * + * @return {Raven} + */ + clearContext: function() { + this._globalContext = {}; - parts[4] = submatch[3]; // column - } - - element = { - url: !isNative ? parts[2] : null, - func: parts[1] || UNKNOWN_FUNCTION, - args: isNative ? [parts[2]] : [], - line: parts[3] ? +parts[3] : null, - column: parts[4] ? +parts[4] : null - }; - } else if (parts = winjs.exec(lines[i])) { - element = { - url: parts[2], - func: parts[1] || UNKNOWN_FUNCTION, - args: [], - line: +parts[3], - column: parts[4] ? +parts[4] : null - }; - } else if (parts = gecko.exec(lines[i])) { - var isEval = parts[3] && parts[3].indexOf(' > eval') > -1; - - if (isEval && (submatch = geckoEval.exec(parts[3]))) { - // throw out eval line/column and use top-most line number - parts[3] = submatch[1]; - parts[4] = submatch[2]; - parts[5] = null; // no column when eval - } else if (i === 0 && !parts[5] && typeof ex.columnNumber !== 'undefined') { - // FireFox uses this awesome columnNumber property for its top frame - // Also note, Firefox's column number is 0-based and everything else expects 1-based, - // so adding 1 - // NOTE: this hack doesn't work if top-most frame is eval - stack[0].column = ex.columnNumber + 1; - } - - element = { - url: parts[3], - func: parts[1] || UNKNOWN_FUNCTION, - args: parts[2] ? parts[2].split(',') : [], - line: parts[4] ? +parts[4] : null, - column: parts[5] ? +parts[5] : null - }; - } else { - continue; - } + return this; + }, - if (!element.func && element.line) { - element.func = UNKNOWN_FUNCTION; - } + /* + * Get a copy of the current context. This cannot be mutated. + * + * @return {object} copy of context + */ + getContext: function() { + // lol javascript + return JSON.parse(stringify(this._globalContext)); + }, - stack.push(element); - } + /* + * Set environment of application + * + * @param {string} environment Typically something like 'production'. + * @return {Raven} + */ + setEnvironment: function(environment) { + this._globalOptions.environment = environment; - if (!stack.length) { - return null; - } + return this; + }, - return { - name: ex.name, - message: ex.message, - url: getLocationHref(), - stack: stack - }; - } - /** - * Adds information about the first frame to incomplete stack traces. - * Safari and IE require this to get complete data on the first frame. - * @param {Object.} stackInfo Stack trace information from - * one of the compute* methods. - * @param {string} url The URL of the script that caused an error. - * @param {(number|string)} lineNo The line number of the script that - * caused an error. - * @param {string=} message The error generated by the browser, which - * hopefully contains the name of the object that caused the error. - * @return {boolean} Whether or not the stack information was - * augmented. + /* + * Set release version of application + * + * @param {string} release Typically something like a git SHA to identify version + * @return {Raven} */ + setRelease: function(release) { + this._globalOptions.release = release; + return this; + }, - function augmentStackTraceWithInitialElement(stackInfo, url, lineNo, message) { - var initial = { - url: url, - line: lineNo - }; + /* + * Set the dataCallback option + * + * @param {function} callback The callback to run which allows the + * data blob to be mutated before sending + * @return {Raven} + */ + setDataCallback: function(callback) { + var original = this._globalOptions.dataCallback; + this._globalOptions.dataCallback = keepOriginalCallback(original, callback); + return this; + }, - if (initial.url && initial.line) { - stackInfo.incomplete = false; + /* + * Set the breadcrumbCallback option + * + * @param {function} callback The callback to run which allows filtering + * or mutating breadcrumbs + * @return {Raven} + */ + setBreadcrumbCallback: function(callback) { + var original = this._globalOptions.breadcrumbCallback; + this._globalOptions.breadcrumbCallback = keepOriginalCallback(original, callback); + return this; + }, - if (!initial.func) { - initial.func = UNKNOWN_FUNCTION; - } + /* + * Set the shouldSendCallback option + * + * @param {function} callback The callback to run which allows + * introspecting the blob before sending + * @return {Raven} + */ + setShouldSendCallback: function(callback) { + var original = this._globalOptions.shouldSendCallback; + this._globalOptions.shouldSendCallback = keepOriginalCallback(original, callback); + return this; + }, - if (stackInfo.stack.length > 0) { - if (stackInfo.stack[0].url === initial.url) { - if (stackInfo.stack[0].line === initial.line) { - return false; // already in stack trace - } else if (!stackInfo.stack[0].line && stackInfo.stack[0].func === initial.func) { - stackInfo.stack[0].line = initial.line; - return false; - } - } - } + /** + * Override the default HTTP transport mechanism that transmits data + * to the Sentry server. + * + * @param {function} transport Function invoked instead of the default + * `makeRequest` handler. + * + * @return {Raven} + */ + setTransport: function(transport) { + this._globalOptions.transport = transport; - stackInfo.stack.unshift(initial); - stackInfo.partial = true; - return true; - } else { - stackInfo.incomplete = true; - } + return this; + }, - return false; - } - /** - * Computes stack trace information by walking the arguments.caller - * chain at the time the exception occurred. This will cause earlier - * frames to be missed but is the only way to get any stack trace in - * Safari and IE. The top frame is restored by - * {@link augmentStackTraceWithInitialElement}. - * @param {Error} ex - * @return {?Object.} Stack trace information. + /* + * Get the latest raw exception that was captured by Raven. + * + * @return {error} */ + lastException: function() { + return this._lastCapturedException; + }, + /* + * Get the last event id + * + * @return {string} + */ + lastEventId: function() { + return this._lastEventId; + }, - function computeStackTraceByWalkingCallerChain(ex, depth) { - var functionName = /function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i, - stack = [], - funcs = {}, - recursion = false, - parts, - item; - - for (var curr = computeStackTraceByWalkingCallerChain.caller; curr && !recursion; curr = curr.caller) { - if (curr === computeStackTrace || curr === TraceKit.report) { - // console.log('skipping internal function'); - continue; + /* + * Determine if Raven is setup and ready to go. + * + * @return {boolean} + */ + isSetup: function() { + if (!this._hasJSON) return false; // needs JSON support + if (!this._globalServer) { + if (!this.ravenNotConfiguredError) { + this.ravenNotConfiguredError = true; + this._logDebug('error', 'Error: Raven has not been configured.'); } + return false; + } + return true; + }, - item = { - url: null, - func: UNKNOWN_FUNCTION, - line: null, - column: null - }; + afterLoad: function() { + // TODO: remove window dependence? - if (curr.name) { - item.func = curr.name; - } else if (parts = functionName.exec(curr.toString())) { - item.func = parts[1]; - } + // Attempt to initialize Raven on load + var RavenConfig = _window.RavenConfig; + if (RavenConfig) { + this.config(RavenConfig.dsn, RavenConfig.config).install(); + } + }, - if (typeof item.func === 'undefined') { - try { - item.func = parts.input.substring(0, parts.input.indexOf('{')); - } catch (e) {} - } + showReportDialog: function(options) { + if ( + !_document // doesn't work without a document (React native) + ) + return; - if (funcs['' + curr]) { - recursion = true; - } else { - funcs['' + curr] = true; - } + options = options || {}; - stack.push(item); + var lastEventId = options.eventId || this.lastEventId(); + if (!lastEventId) { + throw new RavenConfigError('Missing eventId'); } - if (depth) { - // console.log('depth is ' + depth); - // console.log('stack is ' + stack.length); - stack.splice(0, depth); + var dsn = options.dsn || this._dsn; + if (!dsn) { + throw new RavenConfigError('Missing DSN'); } - var result = { - name: ex.name, - message: ex.message, - url: getLocationHref(), - stack: stack - }; - augmentStackTraceWithInitialElement(result, ex.sourceURL || ex.fileName, ex.line || ex.lineNumber, ex.message || ex.description); - return result; - } - /** - * Computes a stack trace for an exception. - * @param {Error} ex - * @param {(string|number)=} depth - */ + var encode = encodeURIComponent; + var qs = ''; + qs += '?eventId=' + encode(lastEventId); + qs += '&dsn=' + encode(dsn); + var user = options.user || this._globalContext.user; + if (user) { + if (user.name) qs += '&name=' + encode(user.name); + if (user.email) qs += '&email=' + encode(user.email); + } - function computeStackTrace(ex, depth) { - var stack = null; - depth = depth == null ? 0 : +depth; + var globalServer = this._getGlobalServer(this._parseDSN(dsn)); - try { - stack = computeStackTraceFromStackProp(ex); + var script = _document.createElement('script'); + script.async = true; + script.src = globalServer + '/api/embed/error-page/' + qs; + (_document.head || _document.body).appendChild(script); + }, - if (stack) { - return stack; + /**** Private functions ****/ + _ignoreNextOnError: function() { + var self = this; + this._ignoreOnError += 1; + setTimeout(function() { + // onerror should trigger before setTimeout + self._ignoreOnError -= 1; + }); + }, + + _triggerEvent: function(eventType, options) { + // NOTE: `event` is a native browser thing, so let's avoid conflicting wiht it + var evt, key; + + if (!this._hasDocument) return; + + options = options || {}; + + eventType = 'raven' + eventType.substr(0, 1).toUpperCase() + eventType.substr(1); + + if (_document.createEvent) { + evt = _document.createEvent('HTMLEvents'); + evt.initEvent(eventType, true, true); + } else { + evt = _document.createEventObject(); + evt.eventType = eventType; + } + + for (key in options) + if (hasKey(options, key)) { + evt[key] = options[key]; } - } catch (e) { - if (TraceKit.debug) { - throw e; + + if (_document.createEvent) { + // IE9 if standards + _document.dispatchEvent(evt); + } else { + // IE8 regardless of Quirks or Standards + // IE9 if quirks + try { + _document.fireEvent('on' + evt.eventType.toLowerCase(), evt); + } catch (e) { + // Do nothing } } + }, - try { - stack = computeStackTraceByWalkingCallerChain(ex, depth + 1); + /** + * Wraps addEventListener to capture UI breadcrumbs + * @param evtName the event name (e.g. "click") + * @returns {Function} + * @private + */ + _breadcrumbEventHandler: function(evtName) { + var self = this; + return function(evt) { + // reset keypress timeout; e.g. triggering a 'click' after + // a 'keypress' will reset the keypress debounce so that a new + // set of keypresses can be recorded + self._keypressTimeout = null; - if (stack) { - return stack; - } - } catch (e) { - if (TraceKit.debug) { - throw e; + // It's possible this handler might trigger multiple times for the same + // event (e.g. event propagation through node ancestors). Ignore if we've + // already captured the event. + if (self._lastCapturedEvent === evt) return; + + self._lastCapturedEvent = evt; + + // try/catch both: + // - accessing evt.target (see getsentry/raven-js#838, #768) + // - `htmlTreeAsString` because it's complex, and just accessing the DOM incorrectly + // can throw an exception in some circumstances. + var target; + try { + target = htmlTreeAsString(evt.target); + } catch (e) { + target = ''; } - } - return { - name: ex.name, - message: ex.message, - url: getLocationHref() + self.captureBreadcrumb({ + category: 'ui.' + evtName, // e.g. ui.click, ui.input + message: target + }); }; - } + }, - computeStackTrace.augmentStackTraceWithInitialElement = augmentStackTraceWithInitialElement; - computeStackTrace.computeStackTraceFromStackProp = computeStackTraceFromStackProp; - return computeStackTrace; -}(); + /** + * Wraps addEventListener to capture keypress UI events + * @returns {Function} + * @private + */ + _keypressEventHandler: function() { + var self = this, + debounceDuration = 1000; // milliseconds -var tracekit = TraceKit; + // TODO: if somehow user switches keypress target before + // debounce timeout is triggered, we will only capture + // a single breadcrumb from the FIRST target (acceptable?) + return function(evt) { + var target; + try { + target = evt.target; + } catch (e) { + // just accessing event properties can throw an exception in some rare circumstances + // see: https://github.com/getsentry/raven-js/issues/838 + return; + } + var tagName = target && target.tagName; -var stringify_1 = createCommonjsModule(function (module, exports) { - /* - json-stringify-safe - Like JSON.stringify, but doesn't throw on circular references. - - Originally forked from https://github.com/isaacs/json-stringify-safe - version 5.0.1 on 3/8/2017 and modified to handle Errors serialization - and IE8 compatibility. Tests for this are in test/vendor. - - ISC license: https://github.com/isaacs/json-stringify-safe/blob/master/LICENSE - */ - exports = module.exports = stringify; - exports.getSerialize = serializer; - - function indexOf(haystack, needle) { - for (var i = 0; i < haystack.length; ++i) { - if (haystack[i] === needle) return i; - } - - return -1; - } + // only consider keypress events on actual input elements + // this will disregard keypresses targeting body (e.g. tabbing + // through elements, hotkeys, etc) + if ( + !tagName || + (tagName !== 'INPUT' && tagName !== 'TEXTAREA' && !target.isContentEditable) + ) + return; - function stringify(obj, replacer, spaces, cycleReplacer) { - return JSON.stringify(obj, serializer(replacer, cycleReplacer), spaces); - } // https://github.com/ftlabs/js-abbreviate/blob/fa709e5f139e7770a71827b1893f22418097fbda/index.js#L95-L106 + // record first keypress in a series, but ignore subsequent + // keypresses until debounce clears + var timeout = self._keypressTimeout; + if (!timeout) { + self._breadcrumbEventHandler('input')(evt); + } + clearTimeout(timeout); + self._keypressTimeout = setTimeout(function() { + self._keypressTimeout = null; + }, debounceDuration); + }; + }, + /** + * Captures a breadcrumb of type "navigation", normalizing input URLs + * @param to the originating URL + * @param from the target URL + * @private + */ + _captureUrlChange: function(from, to) { + var parsedLoc = parseUrl(this._location.href); + var parsedTo = parseUrl(to); + var parsedFrom = parseUrl(from); - function stringifyError(value) { - var err = { - // These properties are implemented as magical getters and don't show up in for in - stack: value.stack, - message: value.message, - name: value.name - }; + // because onpopstate only tells you the "new" (to) value of location.href, and + // not the previous (from) value, we need to track the value of the current URL + // state ourselves + this._lastHref = to; + + // Use only the path component of the URL if the URL matches the current + // document (almost all the time when using pushState) + if (parsedLoc.protocol === parsedTo.protocol && parsedLoc.host === parsedTo.host) + to = parsedTo.relative; + if (parsedLoc.protocol === parsedFrom.protocol && parsedLoc.host === parsedFrom.host) + from = parsedFrom.relative; + + this.captureBreadcrumb({ + category: 'navigation', + data: { + to: to, + from: from + } + }); + }, - for (var i in value) { - if (Object.prototype.hasOwnProperty.call(value, i)) { - err[i] = value[i]; + _patchFunctionToString: function() { + var self = this; + self._originalFunctionToString = Function.prototype.toString; + // eslint-disable-next-line no-extend-native + Function.prototype.toString = function() { + if (typeof this === 'function' && this.__raven__) { + return self._originalFunctionToString.apply(this.__orig__, arguments); } + return self._originalFunctionToString.apply(this, arguments); + }; + }, + + _unpatchFunctionToString: function() { + if (this._originalFunctionToString) { + // eslint-disable-next-line no-extend-native + Function.prototype.toString = this._originalFunctionToString; } + }, - return err; - } + /** + * Wrap timer functions and event targets to catch errors and provide + * better metadata. + */ + _instrumentTryCatch: function() { + var self = this; - function serializer(replacer, cycleReplacer) { - var stack = []; - var keys = []; + var wrappedBuiltIns = self._wrappedBuiltIns; - if (cycleReplacer == null) { - cycleReplacer = function cycleReplacer(key, value) { - if (stack[0] === value) { - return '[Circular ~]'; + function wrapTimeFn(orig) { + return function(fn, t) { + // preserve arity + // Make a copy of the arguments to prevent deoptimization + // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments + var args = new Array(arguments.length); + for (var i = 0; i < args.length; ++i) { + args[i] = arguments[i]; + } + var originalCallback = args[0]; + if (isFunction(originalCallback)) { + args[0] = self.wrap(originalCallback); } - return '[Circular ~.' + keys.slice(0, indexOf(stack, value)).join('.') + ']'; + // IE < 9 doesn't support .call/.apply on setInterval/setTimeout, but it + // also supports only two arguments and doesn't care what this is, so we + // can just call the original function directly. + if (orig.apply) { + return orig.apply(this, args); + } else { + return orig(args[0], args[1]); + } }; } - return function (key, value) { - if (stack.length > 0) { - var thisPos = indexOf(stack, this); - ~thisPos ? stack.splice(thisPos + 1) : stack.push(this); - ~thisPos ? keys.splice(thisPos, Infinity, key) : keys.push(key); + var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; - if (~indexOf(stack, value)) { - value = cycleReplacer.call(this, key, value); - } - } else { - stack.push(value); + function wrapEventTarget(global) { + var proto = _window[global] && _window[global].prototype; + if (proto && proto.hasOwnProperty && proto.hasOwnProperty('addEventListener')) { + fill( + proto, + 'addEventListener', + function(orig) { + return function(evtName, fn, capture, secure) { + // preserve arity + try { + if (fn && fn.handleEvent) { + fn.handleEvent = self.wrap(fn.handleEvent); + } + } catch (err) { + // can sometimes get 'Permission denied to access property "handle Event' + } + + // More breadcrumb DOM capture ... done here and not in `_instrumentBreadcrumbs` + // so that we don't have more than one wrapper function + var before, clickHandler, keypressHandler; + + if ( + autoBreadcrumbs && + autoBreadcrumbs.dom && + (global === 'EventTarget' || global === 'Node') + ) { + // NOTE: generating multiple handlers per addEventListener invocation, should + // revisit and verify we can just use one (almost certainly) + clickHandler = self._breadcrumbEventHandler('click'); + keypressHandler = self._keypressEventHandler(); + before = function(evt) { + // need to intercept every DOM event in `before` argument, in case that + // same wrapped method is re-used for different events (e.g. mousemove THEN click) + // see #724 + if (!evt) return; + + var eventType; + try { + eventType = evt.type; + } catch (e) { + // just accessing event properties can throw an exception in some rare circumstances + // see: https://github.com/getsentry/raven-js/issues/838 + return; + } + if (eventType === 'click') return clickHandler(evt); + else if (eventType === 'keypress') return keypressHandler(evt); + }; + } + return orig.call( + this, + evtName, + self.wrap(fn, undefined, before), + capture, + secure + ); + }; + }, + wrappedBuiltIns + ); + fill( + proto, + 'removeEventListener', + function(orig) { + return function(evt, fn, capture, secure) { + try { + fn = fn && (fn.__raven_wrapper__ ? fn.__raven_wrapper__ : fn); + } catch (e) { + // ignore, accessing __raven_wrapper__ will throw in some Selenium environments + } + return orig.call(this, evt, fn, capture, secure); + }; + }, + wrappedBuiltIns + ); } + } - return replacer == null ? value instanceof Error ? stringifyError(value) : value : replacer.call(this, key, value); - }; - } -}); -var stringify_2 = stringify_1.getSerialize; + fill(_window, 'setTimeout', wrapTimeFn, wrappedBuiltIns); + fill(_window, 'setInterval', wrapTimeFn, wrappedBuiltIns); + if (_window.requestAnimationFrame) { + fill( + _window, + 'requestAnimationFrame', + function(orig) { + return function(cb) { + return orig(self.wrap(cb)); + }; + }, + wrappedBuiltIns + ); + } -function RavenConfigError(message) { - this.name = 'RavenConfigError'; - this.message = message; -} + // event targets borrowed from bugsnag-js: + // https://github.com/bugsnag/bugsnag-js/blob/master/src/bugsnag.js#L666 + var eventTargets = [ + 'EventTarget', + 'Window', + 'Node', + 'ApplicationCache', + 'AudioTrackList', + 'ChannelMergerNode', + 'CryptoOperation', + 'EventSource', + 'FileReader', + 'HTMLUnknownElement', + 'IDBDatabase', + 'IDBRequest', + 'IDBTransaction', + 'KeyOperation', + 'MediaController', + 'MessagePort', + 'ModalWindow', + 'Notification', + 'SVGElementInstance', + 'Screen', + 'TextTrack', + 'TextTrackCue', + 'TextTrackList', + 'WebSocket', + 'WebSocketWorker', + 'Worker', + 'XMLHttpRequest', + 'XMLHttpRequestEventTarget', + 'XMLHttpRequestUpload' + ]; + for (var i = 0; i < eventTargets.length; i++) { + wrapEventTarget(eventTargets[i]); + } + }, -RavenConfigError.prototype = new Error(); -RavenConfigError.prototype.constructor = RavenConfigError; -var configError = RavenConfigError; + /** + * Instrument browser built-ins w/ breadcrumb capturing + * - XMLHttpRequests + * - DOM interactions (click/typing) + * - window.location changes + * - console + * + * Can be disabled or individually configured via the `autoBreadcrumbs` config option + */ + _instrumentBreadcrumbs: function() { + var self = this; + var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; -var wrapMethod = function wrapMethod(console, level, callback) { - var originalConsoleLevel = console[level]; - var originalConsole = console; + var wrappedBuiltIns = self._wrappedBuiltIns; - if (!(level in console)) { - return; - } + function wrapProp(prop, xhr) { + if (prop in xhr && isFunction(xhr[prop])) { + fill(xhr, prop, function(orig) { + return self.wrap(orig); + }); // intentionally don't track filled methods on XHR instances + } + } - var sentryLevel = level === 'warn' ? 'warning' : level; + if (autoBreadcrumbs.xhr && 'XMLHttpRequest' in _window) { + var xhrproto = _window.XMLHttpRequest && _window.XMLHttpRequest.prototype; + fill( + xhrproto, + 'open', + function(origOpen) { + return function(method, url) { + // preserve arity - console[level] = function () { - var args = [].slice.call(arguments); - var msg = utils.safeJoin(args, ' '); - var data = { - level: sentryLevel, - logger: 'console', - extra: { - arguments: args - } - }; + // if Sentry key appears in URL, don't capture + if (isString(url) && url.indexOf(self._globalKey) === -1) { + this.__raven_xhr = { + method: method, + url: url, + status_code: null + }; + } - if (level === 'assert') { - if (args[0] === false) { - // Default browsers message - msg = 'Assertion failed: ' + (utils.safeJoin(args.slice(1), ' ') || 'console.assert'); - data.extra.arguments = args.slice(1); - callback && callback(msg, data); - } - } else { - callback && callback(msg, data); - } // this fails for some browsers. :( + return origOpen.apply(this, arguments); + }; + }, + wrappedBuiltIns + ); + + fill( + xhrproto, + 'send', + function(origSend) { + return function() { + // preserve arity + var xhr = this; + function onreadystatechangeHandler() { + if (xhr.__raven_xhr && xhr.readyState === 4) { + try { + // touching statusCode in some platforms throws + // an exception + xhr.__raven_xhr.status_code = xhr.status; + } catch (e) { + /* do nothing */ + } - if (originalConsoleLevel) { - // IE9 doesn't allow calling apply on console functions directly - // See: https://stackoverflow.com/questions/5472938/does-ie9-support-console-log-and-is-it-a-real-function#answer-5473193 - Function.prototype.apply.call(originalConsoleLevel, originalConsole, args); - } - }; -}; - -var console$1 = { - wrapMethod: wrapMethod -}; - -/*global XDomainRequest:false */ - -var isError = utils.isError; -var isObject = utils.isObject; -var isErrorEvent = utils.isErrorEvent; -var isUndefined = utils.isUndefined; -var isFunction = utils.isFunction; -var isString = utils.isString; -var isArray = utils.isArray; -var isEmptyObject = utils.isEmptyObject; -var each = utils.each; -var objectMerge = utils.objectMerge; -var truncate = utils.truncate; -var objectFrozen = utils.objectFrozen; -var hasKey = utils.hasKey; -var joinRegExp = utils.joinRegExp; -var urlencode = utils.urlencode; -var uuid4 = utils.uuid4; -var htmlTreeAsString = utils.htmlTreeAsString; -var isSameException = utils.isSameException; -var isSameStacktrace = utils.isSameStacktrace; -var parseUrl = utils.parseUrl; -var fill = utils.fill; -var supportsFetch = utils.supportsFetch; -var wrapConsoleMethod = console$1.wrapMethod; -var dsnKeys = 'source protocol user pass host port path'.split(' '); -var dsnPattern = /^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/; + self.captureBreadcrumb({ + type: 'http', + category: 'xhr', + data: xhr.__raven_xhr + }); + } + } -function now() { - return +new Date(); -} // This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) + var props = ['onload', 'onerror', 'onprogress']; + for (var j = 0; j < props.length; j++) { + wrapProp(props[j], xhr); + } + if ('onreadystatechange' in xhr && isFunction(xhr.onreadystatechange)) { + fill( + xhr, + 'onreadystatechange', + function(orig) { + return self.wrap(orig, undefined, onreadystatechangeHandler); + } /* intentionally don't track this instrumentation */ + ); + } else { + // if onreadystatechange wasn't actually set by the page on this xhr, we + // are free to set our own and capture the breadcrumb + xhr.onreadystatechange = onreadystatechangeHandler; + } -var _window$1 = typeof window !== 'undefined' ? window : typeof commonjsGlobal !== 'undefined' ? commonjsGlobal : typeof self !== 'undefined' ? self : {}; + return origSend.apply(this, arguments); + }; + }, + wrappedBuiltIns + ); + } -var _document = _window$1.document; -var _navigator = _window$1.navigator; + if (autoBreadcrumbs.xhr && supportsFetch()) { + fill( + _window, + 'fetch', + function(origFetch) { + return function() { + // preserve arity + // Make a copy of the arguments to prevent deoptimization + // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments + var args = new Array(arguments.length); + for (var i = 0; i < args.length; ++i) { + args[i] = arguments[i]; + } -function keepOriginalCallback(original, callback) { - return isFunction(callback) ? function (data) { - return callback(data, original); - } : callback; -} // First, check for JSON support -// If there is no JSON, we no-op the core features of Raven -// since JSON is required to encode the payload + var fetchInput = args[0]; + var method = 'GET'; + var url; + if (typeof fetchInput === 'string') { + url = fetchInput; + } else if ('Request' in _window && fetchInput instanceof _window.Request) { + url = fetchInput.url; + if (fetchInput.method) { + method = fetchInput.method; + } + } else { + url = '' + fetchInput; + } -function Raven$1() { - this._hasJSON = !!(_typeof(JSON) === 'object' && JSON.stringify); // Raven can run in contexts where there's no document (react-native) + // if Sentry key appears in URL, don't capture, as it's our own request + if (url.indexOf(self._globalKey) !== -1) { + return origFetch.apply(this, args); + } - this._hasDocument = !isUndefined(_document); - this._hasNavigator = !isUndefined(_navigator); - this._lastCapturedException = null; - this._lastData = null; - this._lastEventId = null; - this._globalServer = null; - this._globalKey = null; - this._globalProject = null; - this._globalContext = {}; - this._globalOptions = { - // SENTRY_RELEASE can be injected by https://github.com/getsentry/sentry-webpack-plugin - release: _window$1.SENTRY_RELEASE && _window$1.SENTRY_RELEASE.id, - logger: 'javascript', - ignoreErrors: [], - ignoreUrls: [], - whitelistUrls: [], - includePaths: [], - headers: null, - collectWindowErrors: true, - maxMessageLength: 0, - // By default, truncates URL values to 250 chars - maxUrlLength: 250, - stackTraceLimit: 50, - autoBreadcrumbs: true, - instrument: true, - sampleRate: 1 - }; - this._fetchDefaults = { - method: 'POST', - keepalive: true, - referrerPolicy: 'origin' - }; - this._ignoreOnError = 0; - this._isRavenInstalled = false; - this._originalErrorStackTraceLimit = Error.stackTraceLimit; // capture references to window.console *and* all its methods first - // before the console plugin has a chance to monkey patch + if (args[1] && args[1].method) { + method = args[1].method; + } - this._originalConsole = _window$1.console || {}; - this._originalConsoleMethods = {}; - this._plugins = []; - this._startTime = now(); - this._wrappedBuiltIns = []; - this._breadcrumbs = []; - this._lastCapturedEvent = null; - this._keypressTimeout; - this._location = _window$1.location; - this._lastHref = this._location && this._location.href; + var fetchData = { + method: method, + url: url, + status_code: null + }; - this._resetBackoff(); // eslint-disable-next-line guard-for-in + return origFetch + .apply(this, args) + .then(function(response) { + fetchData.status_code = response.status; + + self.captureBreadcrumb({ + type: 'http', + category: 'fetch', + data: fetchData + }); + + return response; + }) + ['catch'](function(err) { + // if there is an error performing the request + self.captureBreadcrumb({ + type: 'http', + category: 'fetch', + data: fetchData, + level: 'error' + }); + + throw err; + }); + }; + }, + wrappedBuiltIns + ); + } + // Capture breadcrumbs from any click that is unhandled / bubbled up all the way + // to the document. Do this before we instrument addEventListener. + if (autoBreadcrumbs.dom && this._hasDocument) { + if (_document.addEventListener) { + _document.addEventListener('click', self._breadcrumbEventHandler('click'), false); + _document.addEventListener('keypress', self._keypressEventHandler(), false); + } else if (_document.attachEvent) { + // IE8 Compatibility + _document.attachEvent('onclick', self._breadcrumbEventHandler('click')); + _document.attachEvent('onkeypress', self._keypressEventHandler()); + } + } - for (var method in this._originalConsole) { - this._originalConsoleMethods[method] = this._originalConsole[method]; - } -} -/* - * The core Raven singleton - * - * @this {Raven} - */ + // record navigation (URL) changes + // NOTE: in Chrome App environment, touching history.pushState, *even inside + // a try/catch block*, will cause Chrome to output an error to console.error + // borrowed from: https://github.com/angular/angular.js/pull/13945/files + var chrome = _window.chrome; + var isChromePackagedApp = chrome && chrome.app && chrome.app.runtime; + var hasPushAndReplaceState = + !isChromePackagedApp && + _window.history && + history.pushState && + history.replaceState; + if (autoBreadcrumbs.location && hasPushAndReplaceState) { + // TODO: remove onpopstate handler on uninstall() + var oldOnPopState = _window.onpopstate; + _window.onpopstate = function() { + var currentHref = self._location.href; + self._captureUrlChange(self._lastHref, currentHref); + if (oldOnPopState) { + return oldOnPopState.apply(this, arguments); + } + }; -Raven$1.prototype = { - // Hardcode version string so that raven source can be loaded directly via - // webpack (using a build step causes webpack #1617). Grunt verifies that - // this value matches package.json during build. - // See: https://github.com/getsentry/raven-js/issues/465 - VERSION: '3.22.2', - debug: false, - TraceKit: tracekit, - // alias to TraceKit + var historyReplacementFunction = function(origHistFunction) { + // note history.pushState.length is 0; intentionally not declaring + // params to preserve 0 arity + return function(/* state, title, url */) { + var url = arguments.length > 2 ? arguments[2] : undefined; - /* - * Configure Raven with a DSN and extra options - * - * @param {string} dsn The public Sentry DSN - * @param {object} options Set of global options [optional] - * @return {Raven} - */ - config: function config(dsn, options) { - var self = this; + // url argument is optional + if (url) { + // coerce to string (this is what pushState does) + self._captureUrlChange(self._lastHref, url + ''); + } - if (self._globalServer) { - this._logDebug('error', 'Error: Raven has already been configured'); + return origHistFunction.apply(this, arguments); + }; + }; - return self; + fill(history, 'pushState', historyReplacementFunction, wrappedBuiltIns); + fill(history, 'replaceState', historyReplacementFunction, wrappedBuiltIns); } - if (!dsn) return self; - var globalOptions = self._globalOptions; // merge in options + if (autoBreadcrumbs.console && 'console' in _window && console.log) { + // console + var consoleMethodCallback = function(msg, data) { + self.captureBreadcrumb({ + message: msg, + level: data.level, + category: 'console' + }); + }; - if (options) { - each(options, function (key, value) { - // tags and extra are special and need to be put into context - if (key === 'tags' || key === 'extra' || key === 'user') { - self._globalContext[key] = value; - } else { - globalOptions[key] = value; - } + each(['debug', 'info', 'warn', 'error', 'log'], function(_, level) { + wrapConsoleMethod(console, level, consoleMethodCallback); }); } + }, - self.setDSN(dsn); // "Script error." is hard coded into browsers for errors that it can't read. - // this is the result of a script being pulled in from an external domain and CORS. - - globalOptions.ignoreErrors.push(/^Script error\.?$/); - globalOptions.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/); // join regexp rules into one big rule - - globalOptions.ignoreErrors = joinRegExp(globalOptions.ignoreErrors); - globalOptions.ignoreUrls = globalOptions.ignoreUrls.length ? joinRegExp(globalOptions.ignoreUrls) : false; - globalOptions.whitelistUrls = globalOptions.whitelistUrls.length ? joinRegExp(globalOptions.whitelistUrls) : false; - globalOptions.includePaths = joinRegExp(globalOptions.includePaths); - globalOptions.maxBreadcrumbs = Math.max(0, Math.min(globalOptions.maxBreadcrumbs || 100, 100)); // default and hard limit is 100 + _restoreBuiltIns: function() { + // restore any wrapped builtins + var builtin; + while (this._wrappedBuiltIns.length) { + builtin = this._wrappedBuiltIns.shift(); - var autoBreadcrumbDefaults = { - xhr: true, - console: true, - dom: true, - location: true, - sentry: true - }; - var autoBreadcrumbs = globalOptions.autoBreadcrumbs; + var obj = builtin[0], + name = builtin[1], + orig = builtin[2]; - if ({}.toString.call(autoBreadcrumbs) === '[object Object]') { - autoBreadcrumbs = objectMerge(autoBreadcrumbDefaults, autoBreadcrumbs); - } else if (autoBreadcrumbs !== false) { - autoBreadcrumbs = autoBreadcrumbDefaults; + obj[name] = orig; } + }, - globalOptions.autoBreadcrumbs = autoBreadcrumbs; - var instrumentDefaults = { - tryCatch: true - }; - var instrument = globalOptions.instrument; - - if ({}.toString.call(instrument) === '[object Object]') { - instrument = objectMerge(instrumentDefaults, instrument); - } else if (instrument !== false) { - instrument = instrumentDefaults; + _restoreConsole: function() { + // eslint-disable-next-line guard-for-in + for (var method in this._originalConsoleMethods) { + this._originalConsole[method] = this._originalConsoleMethods[method]; } - - globalOptions.instrument = instrument; - tracekit.collectWindowErrors = !!globalOptions.collectWindowErrors; // return for chaining - - return self; }, - /* - * Installs a global window.onerror error handler - * to capture and report uncaught exceptions. - * At this point, install() is required to be called due - * to the way TraceKit is set up. - * - * @return {Raven} - */ - install: function install() { + _drainPlugins: function() { var self = this; - if (self.isSetup() && !self._isRavenInstalled) { - tracekit.report.subscribe(function () { - self._handleOnErrorStackInfo.apply(self, arguments); - }); - - self._patchFunctionToString(); - - if (self._globalOptions.instrument && self._globalOptions.instrument.tryCatch) { - self._instrumentTryCatch(); - } + // FIX ME TODO + each(this._plugins, function(_, plugin) { + var installer = plugin[0]; + var args = plugin[1]; + installer.apply(self, [self].concat(args)); + }); + }, - if (self._globalOptions.autoBreadcrumbs) self._instrumentBreadcrumbs(); // Install all of the plugins + _parseDSN: function(str) { + var m = dsnPattern.exec(str), + dsn = {}, + i = 7; - self._drainPlugins(); + try { + while (i--) dsn[dsnKeys[i]] = m[i] || ''; + } catch (e) { + throw new RavenConfigError('Invalid DSN: ' + str); + } - self._isRavenInstalled = true; + if (dsn.pass && !this._globalOptions.allowSecretKey) { + throw new RavenConfigError( + 'Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key' + ); } - Error.stackTraceLimit = self._globalOptions.stackTraceLimit; - return this; + return dsn; }, - /* - * Set the DSN (can be called multiple time unlike config) - * - * @param {string} dsn The public Sentry DSN - */ - setDSN: function setDSN(dsn) { - var self = this, - uri = self._parseDSN(dsn), - lastSlash = uri.path.lastIndexOf('/'), - path = uri.path.substr(1, lastSlash); + _getGlobalServer: function(uri) { + // assemble the endpoint from the uri pieces + var globalServer = '//' + uri.host + (uri.port ? ':' + uri.port : ''); - self._dsn = dsn; - self._globalKey = uri.user; - self._globalSecret = uri.pass && uri.pass.substr(1); - self._globalProject = uri.path.substr(lastSlash + 1); - self._globalServer = self._getGlobalServer(uri); - self._globalEndpoint = self._globalServer + '/' + path + 'api/' + self._globalProject + '/store/'; // Reset backoff state since we may be pointing at a - // new project/server - - this._resetBackoff(); + if (uri.protocol) { + globalServer = uri.protocol + ':' + globalServer; + } + return globalServer; }, - /* - * Wrap code within a context so Raven can capture errors - * reliably across domains that is executed immediately. - * - * @param {object} options A specific set of options for this context [optional] - * @param {function} func The callback to be immediately executed within the context - * @param {array} args An array of arguments to be called with the callback [optional] - */ - context: function context(options, func, args) { - if (isFunction(options)) { - args = func || []; - func = options; - options = undefined; + _handleOnErrorStackInfo: function() { + // if we are intentionally ignoring errors via onerror, bail out + if (!this._ignoreOnError) { + this._handleStackInfo.apply(this, arguments); } - - return this.wrap(options, func).apply(this, args); }, - /* - * Wrap code within a context and returns back a new function to be executed - * - * @param {object} options A specific set of options for this context [optional] - * @param {function} func The function to be wrapped in a new context - * @param {function} func A function to call before the try/catch wrapper [optional, private] - * @return {function} The newly wrapped functions with a context - */ - wrap: function wrap(options, func, _before) { - var self = this; // 1 argument has been passed, and it's not a function - // so just return it + _handleStackInfo: function(stackInfo, options) { + var frames = this._prepareFrames(stackInfo, options); - if (isUndefined(func) && !isFunction(options)) { - return options; - } // options is optional + this._triggerEvent('handle', { + stackInfo: stackInfo, + options: options + }); + this._processException( + stackInfo.name, + stackInfo.message, + stackInfo.url, + stackInfo.lineno, + frames, + options + ); + }, - if (isFunction(options)) { - func = options; - options = undefined; - } // At this point, we've passed along 2 arguments, and the second one - // is not a function either, so we'll just return the second argument. + _prepareFrames: function(stackInfo, options) { + var self = this; + var frames = []; + if (stackInfo.stack && stackInfo.stack.length) { + each(stackInfo.stack, function(i, stack) { + var frame = self._normalizeFrame(stack, stackInfo.url); + if (frame) { + frames.push(frame); + } + }); + // e.g. frames captured via captureMessage throw + if (options && options.trimHeadFrames) { + for (var j = 0; j < options.trimHeadFrames && j < frames.length; j++) { + frames[j].in_app = false; + } + } + } + frames = frames.slice(0, this._globalOptions.stackTraceLimit); + return frames; + }, - if (!isFunction(func)) { - return func; - } // We don't wanna wrap it twice! + _normalizeFrame: function(frame, stackInfoUrl) { + // normalize the frames data + var normalized = { + filename: frame.url, + lineno: frame.line, + colno: frame.column, + function: frame.func || '?' + }; + // Case when we don't have any information about the error + // E.g. throwing a string or raw object, instead of an `Error` in Firefox + // Generating synthetic error doesn't add any value here + // + // We should probably somehow let a user know that they should fix their code + if (!frame.url) { + normalized.filename = stackInfoUrl; // fallback to whole stacks url from onerror handler + } - try { - if (func.__raven__) { - return func; - } // If this has already been wrapped in the past, return that + normalized.in_app = !// determine if an exception came from outside of our app + // first we check the global includePaths list. + ( + (!!this._globalOptions.includePaths.test && + !this._globalOptions.includePaths.test(normalized.filename)) || + // Now we check for fun, if the function name is Raven or TraceKit + /(Raven|TraceKit)\./.test(normalized['function']) || + // finally, we do a last ditch effort and check for raven.min.js + /raven\.(min\.)?js$/.test(normalized.filename) + ); + return normalized; + }, - if (func.__raven_wrapper__) { - return func.__raven_wrapper__; - } - } catch (e) { - // Just accessing custom props in some Selenium environments - // can cause a "Permission denied" exception (see raven-js#495). - // Bail on wrapping and return the function as-is (defers to window.onerror). - return func; + _processException: function(type, message, fileurl, lineno, frames, options) { + var prefixedMessage = (type ? type + ': ' : '') + (message || ''); + if ( + !!this._globalOptions.ignoreErrors.test && + (this._globalOptions.ignoreErrors.test(message) || + this._globalOptions.ignoreErrors.test(prefixedMessage)) + ) { + return; } - function wrapped() { - var args = [], - i = arguments.length, - deep = !options || options && options.deep !== false; + var stacktrace; - if (_before && isFunction(_before)) { - _before.apply(this, arguments); - } // Recursively wrap all of a function's arguments that are - // functions themselves. + if (frames && frames.length) { + fileurl = frames[0].filename || fileurl; + // Sentry expects frames oldest to newest + // and JS sends them as newest to oldest + frames.reverse(); + stacktrace = {frames: frames}; + } else if (fileurl) { + stacktrace = { + frames: [ + { + filename: fileurl, + lineno: lineno, + in_app: true + } + ] + }; + } + if ( + !!this._globalOptions.ignoreUrls.test && + this._globalOptions.ignoreUrls.test(fileurl) + ) { + return; + } - while (i--) { - args[i] = deep ? self.wrap(options, arguments[i]) : arguments[i]; - } + if ( + !!this._globalOptions.whitelistUrls.test && + !this._globalOptions.whitelistUrls.test(fileurl) + ) { + return; + } - try { - // Attempt to invoke user-land function - // NOTE: If you are a Sentry user, and you are seeing this stack frame, it - // means Raven caught an error invoking your application code. This is - // expected behavior and NOT indicative of a bug with Raven.js. - return func.apply(this, args); - } catch (e) { - self._ignoreNextOnError(); + var data = objectMerge( + { + // sentry.interfaces.Exception + exception: { + values: [ + { + type: type, + value: message, + stacktrace: stacktrace + } + ] + }, + culprit: fileurl + }, + options + ); - self.captureException(e, options); - throw e; - } - } // copy over properties of the old function + // Fire away! + this._send(data); + }, + _trimPacket: function(data) { + // For now, we only want to truncate the two different messages + // but this could/should be expanded to just trim everything + var max = this._globalOptions.maxMessageLength; + if (data.message) { + data.message = truncate(data.message, max); + } + if (data.exception) { + var exception = data.exception.values[0]; + exception.value = truncate(exception.value, max); + } - for (var property in func) { - if (hasKey(func, property)) { - wrapped[property] = func[property]; + var request = data.request; + if (request) { + if (request.url) { + request.url = truncate(request.url, this._globalOptions.maxUrlLength); + } + if (request.Referer) { + request.Referer = truncate(request.Referer, this._globalOptions.maxUrlLength); } } - wrapped.prototype = func.prototype; - func.__raven_wrapper__ = wrapped; // Signal that this function has been wrapped/filled already - // for both debugging and to prevent it to being wrapped/filled twice + if (data.breadcrumbs && data.breadcrumbs.values) + this._trimBreadcrumbs(data.breadcrumbs); - wrapped.__raven__ = true; - wrapped.__orig__ = func; - return wrapped; + return data; }, - /* - * Uninstalls the global error handler. - * - * @return {Raven} - */ - uninstall: function uninstall() { - tracekit.report.uninstall(); + /** + * Truncate breadcrumb values (right now just URLs) + */ + _trimBreadcrumbs: function(breadcrumbs) { + // known breadcrumb properties with urls + // TODO: also consider arbitrary prop values that start with (https?)?:// + var urlProps = ['to', 'from', 'url'], + urlProp, + crumb, + data; - this._unpatchFunctionToString(); + for (var i = 0; i < breadcrumbs.values.length; ++i) { + crumb = breadcrumbs.values[i]; + if ( + !crumb.hasOwnProperty('data') || + !isObject(crumb.data) || + objectFrozen(crumb.data) + ) + continue; - this._restoreBuiltIns(); + data = objectMerge({}, crumb.data); + for (var j = 0; j < urlProps.length; ++j) { + urlProp = urlProps[j]; + if (data.hasOwnProperty(urlProp) && data[urlProp]) { + data[urlProp] = truncate(data[urlProp], this._globalOptions.maxUrlLength); + } + } + breadcrumbs.values[i].data = data; + } + }, - this._restoreConsole(); + _getHttpData: function() { + if (!this._hasNavigator && !this._hasDocument) return; + var httpData = {}; - Error.stackTraceLimit = this._originalErrorStackTraceLimit; - this._isRavenInstalled = false; - return this; - }, + if (this._hasNavigator && _navigator.userAgent) { + httpData.headers = { + 'User-Agent': navigator.userAgent + }; + } - /* - * Manually capture an exception and send it over to Sentry - * - * @param {error} ex An exception to be logged - * @param {object} options A specific set of options for this error [optional] - * @return {Raven} - */ - captureException: function captureException(ex, options) { - options = objectMerge({ - trimHeadFrames: 0 - }, options ? options : {}); // Cases for sending ex as a message, rather than an exception + // Check in `window` instead of `document`, as we may be in ServiceWorker environment + if (_window.location && _window.location.href) { + httpData.url = _window.location.href; + } - var isNotError = !isError(ex); - var isNotErrorEvent = !isErrorEvent(ex); - var isErrorEventWithoutError = isErrorEvent(ex) && !ex.error; + if (this._hasDocument && _document.referrer) { + if (!httpData.headers) httpData.headers = {}; + httpData.headers.Referer = _document.referrer; + } - if (isNotError && isNotErrorEvent || isErrorEventWithoutError) { - return this.captureMessage(ex, objectMerge(options, { - stacktrace: true, - // if we fall back to captureMessage, default to attempting a new trace - trimHeadFrames: options.trimHeadFrames + 1 - })); - } // Get actual Error from ErrorEvent + return httpData; + }, + _resetBackoff: function() { + this._backoffDuration = 0; + this._backoffStart = null; + }, - if (isErrorEvent(ex)) ex = ex.error; // Store the raw exception object for potential debugging and introspection + _shouldBackoff: function() { + return this._backoffDuration && now() - this._backoffStart < this._backoffDuration; + }, - this._lastCapturedException = ex; // TraceKit.report will re-raise any exception passed to it, - // which means you have to wrap it in try/catch. Instead, we - // can wrap it here and only re-raise if TraceKit.report - // raises an exception different from the one we asked to - // report on. + /** + * Returns true if the in-process data payload matches the signature + * of the previously-sent data + * + * NOTE: This has to be done at this level because TraceKit can generate + * data from window.onerror WITHOUT an exception object (IE8, IE9, + * other old browsers). This can take the form of an "exception" + * data object with a single frame (derived from the onerror args). + */ + _isRepeatData: function(current) { + var last = this._lastData; - try { - var stack = tracekit.computeStackTrace(ex); + if ( + !last || + current.message !== last.message || // defined for captureMessage + current.culprit !== last.culprit // defined for captureException/onerror + ) + return false; - this._handleStackInfo(stack, options); - } catch (ex1) { - if (ex !== ex1) { - throw ex1; - } + // Stacktrace interface (i.e. from captureMessage) + if (current.stacktrace || last.stacktrace) { + return isSameStacktrace(current.stacktrace, last.stacktrace); + } else if (current.exception || last.exception) { + // Exception interface (i.e. from captureException/onerror) + return isSameException(current.exception, last.exception); } - return this; + return true; }, - /* - * Manually send a message to Sentry - * - * @param {string} msg A plain message to be captured in Sentry - * @param {object} options A specific set of options for this message [optional] - * @return {Raven} - */ - captureMessage: function captureMessage(msg, options) { - // config() automagically converts ignoreErrors from a list to a RegExp so we need to test for an - // early call; we'll error on the side of logging anything called before configuration since it's - // probably something you should see: - if (!!this._globalOptions.ignoreErrors.test && this._globalOptions.ignoreErrors.test(msg)) { + _setBackoffState: function(request) { + // If we are already in a backoff state, don't change anything + if (this._shouldBackoff()) { return; } - options = options || {}; - var data = objectMerge({ - message: msg + '' // Make sure it's actually a string - - }, options); - var ex; // Generate a "synthetic" stack trace from this point. - // NOTE: If you are a Sentry user, and you are seeing this stack frame, it is NOT indicative - // of a bug with Raven.js. Sentry generates synthetic traces either by configuration, - // or if it catches a thrown object without a "stack" property. + var status = request.status; - try { - throw new Error(msg); - } catch (ex1) { - ex = ex1; - } // null exception name so `Error` isn't prefixed to msg - - - ex.name = null; - var stack = tracekit.computeStackTrace(ex); // stack[0] is `throw new Error(msg)` call itself, we are interested in the frame that was just before that, stack[1] + // 400 - project_id doesn't exist or some other fatal + // 401 - invalid/revoked dsn + // 429 - too many requests + if (!(status === 400 || status === 401 || status === 429)) return; - var initialCall = isArray(stack.stack) && stack.stack[1]; - var fileurl = initialCall && initialCall.url || ''; + var retry; + try { + // If Retry-After is not in Access-Control-Expose-Headers, most + // browsers will throw an exception trying to access it + if (supportsFetch()) { + retry = request.headers.get('Retry-After'); + } else { + retry = request.getResponseHeader('Retry-After'); + } - if (!!this._globalOptions.ignoreUrls.test && this._globalOptions.ignoreUrls.test(fileurl)) { - return; + // Retry-After is returned in seconds + retry = parseInt(retry, 10) * 1000; + } catch (e) { + /* eslint no-empty:0 */ } - if (!!this._globalOptions.whitelistUrls.test && !this._globalOptions.whitelistUrls.test(fileurl)) { - return; - } + this._backoffDuration = retry + ? // If Sentry server returned a Retry-After value, use it + retry + : // Otherwise, double the last backoff duration (starts at 1 sec) + this._backoffDuration * 2 || 1000; - if (this._globalOptions.stacktrace || options && options.stacktrace) { - options = objectMerge({ - // fingerprint on msg, not stack trace (legacy behavior, could be - // revisited) - fingerprint: msg, - // since we know this is a synthetic trace, the top N-most frames - // MUST be from Raven.js, so mark them as in_app later by setting - // trimHeadFrames - trimHeadFrames: (options.trimHeadFrames || 0) + 1 - }, options); + this._backoffStart = now(); + }, - var frames = this._prepareFrames(stack, options); + _send: function(data) { + var globalOptions = this._globalOptions; - data.stacktrace = { - // Sentry expects frames oldest to newest - frames: frames.reverse() - }; - } // Fire away! + var baseData = { + project: this._globalProject, + logger: globalOptions.logger, + platform: 'javascript' + }, + httpData = this._getHttpData(); + if (httpData) { + baseData.request = httpData; + } - this._send(data); + // HACK: delete `trimHeadFrames` to prevent from appearing in outbound payload + if (data.trimHeadFrames) delete data.trimHeadFrames; - return this; - }, - captureBreadcrumb: function captureBreadcrumb(obj) { - var crumb = objectMerge({ - timestamp: now() / 1000 - }, obj); + data = objectMerge(baseData, data); - if (isFunction(this._globalOptions.breadcrumbCallback)) { - var result = this._globalOptions.breadcrumbCallback(crumb); + // Merge in the tags and extra separately since objectMerge doesn't handle a deep merge + data.tags = objectMerge(objectMerge({}, this._globalContext.tags), data.tags); + data.extra = objectMerge(objectMerge({}, this._globalContext.extra), data.extra); - if (isObject(result) && !isEmptyObject(result)) { - crumb = result; - } else if (result === false) { - return this; - } - } + // Send along our own collected metadata with extra + data.extra['session:duration'] = now() - this._startTime; - this._breadcrumbs.push(crumb); + if (this._breadcrumbs && this._breadcrumbs.length > 0) { + // intentionally make shallow copy so that additions + // to breadcrumbs aren't accidentally sent in this request + data.breadcrumbs = { + values: [].slice.call(this._breadcrumbs, 0) + }; + } - if (this._breadcrumbs.length > this._globalOptions.maxBreadcrumbs) { - this._breadcrumbs.shift(); + if (this._globalContext.user) { + // sentry.interfaces.User + data.user = this._globalContext.user; } - return this; - }, - addPlugin: function addPlugin(plugin - /*arg1, arg2, ... argN*/ - ) { - var pluginArgs = [].slice.call(arguments, 1); + // Include the environment if it's defined in globalOptions + if (globalOptions.environment) data.environment = globalOptions.environment; - this._plugins.push([plugin, pluginArgs]); + // Include the release if it's defined in globalOptions + if (globalOptions.release) data.release = globalOptions.release; - if (this._isRavenInstalled) { - this._drainPlugins(); - } + // Include server_name if it's defined in globalOptions + if (globalOptions.serverName) data.server_name = globalOptions.serverName; - return this; - }, + data = this._sanitizeData(data); - /* - * Set/clear a user to be sent along with the payload. - * - * @param {object} user An object representing user data [optional] - * @return {Raven} - */ - setUserContext: function setUserContext(user) { - // Intentionally do not merge here since that's an unexpected behavior. - this._globalContext.user = user; - return this; - }, + // Cleanup empty properties before sending them to the server + Object.keys(data).forEach(function(key) { + if (data[key] == null || data[key] === '' || isEmptyObject(data[key])) { + delete data[key]; + } + }); - /* - * Merge extra attributes to be sent along with the payload. - * - * @param {object} extra An object representing extra data [optional] - * @return {Raven} - */ - setExtraContext: function setExtraContext(extra) { - this._mergeContext('extra', extra); + if (isFunction(globalOptions.dataCallback)) { + data = globalOptions.dataCallback(data) || data; + } - return this; - }, + // Why?????????? + if (!data || isEmptyObject(data)) { + return; + } - /* - * Merge tags to be sent along with the payload. - * - * @param {object} tags An object representing tags [optional] - * @return {Raven} - */ - setTagsContext: function setTagsContext(tags) { - this._mergeContext('tags', tags); + // Check if the request should be filtered or not + if ( + isFunction(globalOptions.shouldSendCallback) && + !globalOptions.shouldSendCallback(data) + ) { + return; + } - return this; - }, + // Backoff state: Sentry server previously responded w/ an error (e.g. 429 - too many requests), + // so drop requests until "cool-off" period has elapsed. + if (this._shouldBackoff()) { + this._logDebug('warn', 'Raven dropped error due to backoff: ', data); + return; + } - /* - * Clear all of the context. - * - * @return {Raven} - */ - clearContext: function clearContext() { - this._globalContext = {}; - return this; + if (typeof globalOptions.sampleRate === 'number') { + if (Math.random() < globalOptions.sampleRate) { + this._sendProcessedPayload(data); + } + } else { + this._sendProcessedPayload(data); + } }, - /* - * Get a copy of the current context. This cannot be mutated. - * - * @return {object} copy of context - */ - getContext: function getContext() { - // lol javascript - return JSON.parse(stringify_1(this._globalContext)); + _sanitizeData: function(data) { + return sanitize(data, this._globalOptions.sanitizeKeys); }, - /* - * Set environment of application - * - * @param {string} environment Typically something like 'production'. - * @return {Raven} - */ - setEnvironment: function setEnvironment(environment) { - this._globalOptions.environment = environment; - return this; + _getUuid: function() { + return uuid4(); }, - /* - * Set release version of application - * - * @param {string} release Typically something like a git SHA to identify version - * @return {Raven} - */ - setRelease: function setRelease(release) { - this._globalOptions.release = release; - return this; - }, + _sendProcessedPayload: function(data, callback) { + var self = this; + var globalOptions = this._globalOptions; - /* - * Set the dataCallback option - * - * @param {function} callback The callback to run which allows the - * data blob to be mutated before sending - * @return {Raven} - */ - setDataCallback: function setDataCallback(callback) { - var original = this._globalOptions.dataCallback; - this._globalOptions.dataCallback = keepOriginalCallback(original, callback); - return this; - }, + if (!this.isSetup()) return; - /* - * Set the breadcrumbCallback option - * - * @param {function} callback The callback to run which allows filtering - * or mutating breadcrumbs - * @return {Raven} - */ - setBreadcrumbCallback: function setBreadcrumbCallback(callback) { - var original = this._globalOptions.breadcrumbCallback; - this._globalOptions.breadcrumbCallback = keepOriginalCallback(original, callback); - return this; - }, + // Try and clean up the packet before sending by truncating long values + data = this._trimPacket(data); - /* - * Set the shouldSendCallback option - * - * @param {function} callback The callback to run which allows - * introspecting the blob before sending - * @return {Raven} - */ - setShouldSendCallback: function setShouldSendCallback(callback) { - var original = this._globalOptions.shouldSendCallback; - this._globalOptions.shouldSendCallback = keepOriginalCallback(original, callback); - return this; - }, + // ideally duplicate error testing should occur *before* dataCallback/shouldSendCallback, + // but this would require copying an un-truncated copy of the data packet, which can be + // arbitrarily deep (extra_data) -- could be worthwhile? will revisit + if (!this._globalOptions.allowDuplicates && this._isRepeatData(data)) { + this._logDebug('warn', 'Raven dropped repeat event: ', data); + return; + } - /** - * Override the default HTTP transport mechanism that transmits data - * to the Sentry server. - * - * @param {function} transport Function invoked instead of the default - * `makeRequest` handler. - * - * @return {Raven} - */ - setTransport: function setTransport(transport) { - this._globalOptions.transport = transport; - return this; - }, + // Send along an event_id if not explicitly passed. + // This event_id can be used to reference the error within Sentry itself. + // Set lastEventId after we know the error should actually be sent + this._lastEventId = data.event_id || (data.event_id = this._getUuid()); - /* - * Get the latest raw exception that was captured by Raven. - * - * @return {error} - */ - lastException: function lastException() { - return this._lastCapturedException; - }, + // Store outbound payload after trim + this._lastData = data; - /* - * Get the last event id - * - * @return {string} - */ - lastEventId: function lastEventId() { - return this._lastEventId; - }, + this._logDebug('debug', 'Raven about to send:', data); - /* - * Determine if Raven is setup and ready to go. - * - * @return {boolean} - */ - isSetup: function isSetup() { - if (!this._hasJSON) return false; // needs JSON support + var auth = { + sentry_version: '7', + sentry_client: 'raven-js/' + this.VERSION, + sentry_key: this._globalKey + }; - if (!this._globalServer) { - if (!this.ravenNotConfiguredError) { - this.ravenNotConfiguredError = true; + if (this._globalSecret) { + auth.sentry_secret = this._globalSecret; + } - this._logDebug('error', 'Error: Raven has not been configured.'); - } + var exception = data.exception && data.exception.values[0]; - return false; + // only capture 'sentry' breadcrumb is autoBreadcrumbs is truthy + if ( + this._globalOptions.autoBreadcrumbs && + this._globalOptions.autoBreadcrumbs.sentry + ) { + this.captureBreadcrumb({ + category: 'sentry', + message: exception + ? (exception.type ? exception.type + ': ' : '') + exception.value + : data.message, + event_id: data.event_id, + level: data.level || 'error' // presume error unless specified + }); } - return true; - }, - afterLoad: function afterLoad() { - // TODO: remove window dependence? - // Attempt to initialize Raven on load - var RavenConfig = _window$1.RavenConfig; + var url = this._globalEndpoint; + (globalOptions.transport || this._makeRequest).call(this, { + url: url, + auth: auth, + data: data, + options: globalOptions, + onSuccess: function success() { + self._resetBackoff(); - if (RavenConfig) { - this.config(RavenConfig.dsn, RavenConfig.config).install(); - } + self._triggerEvent('success', { + data: data, + src: url + }); + callback && callback(); + }, + onError: function failure(error) { + self._logDebug('error', 'Raven transport failed to send: ', error); + + if (error.request) { + self._setBackoffState(error.request); + } + + self._triggerEvent('failure', { + data: data, + src: url + }); + error = error || new Error('Raven send failed (no additional details provided)'); + callback && callback(error); + } + }); }, - showReportDialog: function showReportDialog(options) { - if (!_document // doesn't work without a document (React native) - ) return; - options = options || {}; - var lastEventId = options.eventId || this.lastEventId(); - if (!lastEventId) { - throw new configError('Missing eventId'); - } + _makeRequest: function(opts) { + // Auth is intentionally sent as part of query string (NOT as custom HTTP header) to avoid preflight CORS requests + var url = opts.url + '?' + urlencode(opts.auth); - var dsn = options.dsn || this._dsn; + var evaluatedHeaders = null; + var evaluatedFetchParameters = {}; - if (!dsn) { - throw new configError('Missing DSN'); + if (opts.options.headers) { + evaluatedHeaders = this._evaluateHash(opts.options.headers); } - var encode = encodeURIComponent; - var qs = ''; - qs += '?eventId=' + encode(lastEventId); - qs += '&dsn=' + encode(dsn); - var user = options.user || this._globalContext.user; - - if (user) { - if (user.name) qs += '&name=' + encode(user.name); - if (user.email) qs += '&email=' + encode(user.email); + if (opts.options.fetchParameters) { + evaluatedFetchParameters = this._evaluateHash(opts.options.fetchParameters); } - var globalServer = this._getGlobalServer(this._parseDSN(dsn)); + if (supportsFetch()) { + evaluatedFetchParameters.body = stringify(opts.data); - var script = _document.createElement('script'); + var defaultFetchOptions = objectMerge({}, this._fetchDefaults); + var fetchOptions = objectMerge(defaultFetchOptions, evaluatedFetchParameters); - script.async = true; - script.src = globalServer + '/api/embed/error-page/' + qs; + if (evaluatedHeaders) { + fetchOptions.headers = evaluatedHeaders; + } - (_document.head || _document.body).appendChild(script); - }, + return _window + .fetch(url, fetchOptions) + .then(function(response) { + if (response.ok) { + opts.onSuccess && opts.onSuccess(); + } else { + var error = new Error('Sentry error code: ' + response.status); + // It's called request only to keep compatibility with XHR interface + // and not add more redundant checks in setBackoffState method + error.request = response; + opts.onError && opts.onError(error); + } + }) + ['catch'](function() { + opts.onError && + opts.onError(new Error('Sentry error code: network unavailable')); + }); + } - /**** Private functions ****/ - _ignoreNextOnError: function _ignoreNextOnError() { - var self = this; - this._ignoreOnError += 1; - setTimeout(function () { - // onerror should trigger before setTimeout - self._ignoreOnError -= 1; - }); - }, - _triggerEvent: function _triggerEvent(eventType, options) { - // NOTE: `event` is a native browser thing, so let's avoid conflicting wiht it - var evt, key; - if (!this._hasDocument) return; - options = options || {}; - eventType = 'raven' + eventType.substr(0, 1).toUpperCase() + eventType.substr(1); + var request = _window.XMLHttpRequest && new _window.XMLHttpRequest(); + if (!request) return; - if (_document.createEvent) { - evt = _document.createEvent('HTMLEvents'); - evt.initEvent(eventType, true, true); - } else { - evt = _document.createEventObject(); - evt.eventType = eventType; - } + // if browser doesn't support CORS (e.g. IE7), we are out of luck + var hasCORS = 'withCredentials' in request || typeof XDomainRequest !== 'undefined'; - for (key in options) { - if (hasKey(options, key)) { - evt[key] = options[key]; - } - } + if (!hasCORS) return; - if (_document.createEvent) { - // IE9 if standards - _document.dispatchEvent(evt); + if ('withCredentials' in request) { + request.onreadystatechange = function() { + if (request.readyState !== 4) { + return; + } else if (request.status === 200) { + opts.onSuccess && opts.onSuccess(); + } else if (opts.onError) { + var err = new Error('Sentry error code: ' + request.status); + err.request = request; + opts.onError(err); + } + }; } else { - // IE8 regardless of Quirks or Standards - // IE9 if quirks - try { - _document.fireEvent('on' + evt.eventType.toLowerCase(), evt); - } catch (e) {// Do nothing + request = new XDomainRequest(); + // xdomainrequest cannot go http -> https (or vice versa), + // so always use protocol relative + url = url.replace(/^https?:/, ''); + + // onreadystatechange not supported by XDomainRequest + if (opts.onSuccess) { + request.onload = opts.onSuccess; + } + if (opts.onError) { + request.onerror = function() { + var err = new Error('Sentry error code: XDomainRequest'); + err.request = request; + opts.onError(err); + }; } } - }, - /** - * Wraps addEventListener to capture UI breadcrumbs - * @param evtName the event name (e.g. "click") - * @returns {Function} - * @private - */ - _breadcrumbEventHandler: function _breadcrumbEventHandler(evtName) { - var self = this; - return function (evt) { - // reset keypress timeout; e.g. triggering a 'click' after - // a 'keypress' will reset the keypress debounce so that a new - // set of keypresses can be recorded - self._keypressTimeout = null; // It's possible this handler might trigger multiple times for the same - // event (e.g. event propagation through node ancestors). Ignore if we've - // already captured the event. + request.open('POST', url); - if (self._lastCapturedEvent === evt) return; - self._lastCapturedEvent = evt; // try/catch both: - // - accessing evt.target (see getsentry/raven-js#838, #768) - // - `htmlTreeAsString` because it's complex, and just accessing the DOM incorrectly - // can throw an exception in some circumstances. + if (evaluatedHeaders) { + each(evaluatedHeaders, function(key, value) { + request.setRequestHeader(key, value); + }); + } - var target; + request.send(stringify(opts.data)); + }, - try { - target = htmlTreeAsString(evt.target); - } catch (e) { - target = ''; + _evaluateHash: function(hash) { + var evaluated = {}; + + for (var key in hash) { + if (hash.hasOwnProperty(key)) { + var value = hash[key]; + evaluated[key] = typeof value === 'function' ? value() : value; } + } - self.captureBreadcrumb({ - category: 'ui.' + evtName, - // e.g. ui.click, ui.input - message: target - }); - }; + return evaluated; }, - /** - * Wraps addEventListener to capture keypress UI events - * @returns {Function} - * @private - */ - _keypressEventHandler: function _keypressEventHandler() { - var self = this, - debounceDuration = 1000; // milliseconds - // TODO: if somehow user switches keypress target before - // debounce timeout is triggered, we will only capture - // a single breadcrumb from the FIRST target (acceptable?) - - return function (evt) { - var target; - - try { - target = evt.target; - } catch (e) { - // just accessing event properties can throw an exception in some rare circumstances - // see: https://github.com/getsentry/raven-js/issues/838 - return; - } + _logDebug: function(level) { + // We allow `Raven.debug` and `Raven.config(DSN, { debug: true })` to not make backward incompatible API change + if ( + this._originalConsoleMethods[level] && + (this.debug || this._globalOptions.debug) + ) { + // In IE<10 console methods do not have their own 'apply' method + Function.prototype.apply.call( + this._originalConsoleMethods[level], + this._originalConsole, + [].slice.call(arguments, 1) + ); + } + }, - var tagName = target && target.tagName; // only consider keypress events on actual input elements - // this will disregard keypresses targeting body (e.g. tabbing - // through elements, hotkeys, etc) + _mergeContext: function(key, context) { + if (isUndefined(context)) { + delete this._globalContext[key]; + } else { + this._globalContext[key] = objectMerge(this._globalContext[key] || {}, context); + } + } +}; - if (!tagName || tagName !== 'INPUT' && tagName !== 'TEXTAREA' && !target.isContentEditable) return; // record first keypress in a series, but ignore subsequent - // keypresses until debounce clears +// Deprecations +Raven.prototype.setUser = Raven.prototype.setUserContext; +Raven.prototype.setReleaseContext = Raven.prototype.setRelease; - var timeout = self._keypressTimeout; +module.exports = Raven; - if (!timeout) { - self._breadcrumbEventHandler('input')(evt); - } +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"10":10,"3":3,"4":4,"7":7,"8":8,"9":9}],6:[function(_dereq_,module,exports){ +(function (global){ +/** + * Enforces a single instance of the Raven client, and the + * main entry point for Raven. If you are a consumer of the + * Raven library, you SHOULD load this file (vs raven.js). + **/ - clearTimeout(timeout); - self._keypressTimeout = setTimeout(function () { - self._keypressTimeout = null; - }, debounceDuration); - }; - }, +var RavenConstructor = _dereq_(5); - /** - * Captures a breadcrumb of type "navigation", normalizing input URLs - * @param to the originating URL - * @param from the target URL - * @private - */ - _captureUrlChange: function _captureUrlChange(from, to) { - var parsedLoc = parseUrl(this._location.href); - var parsedTo = parseUrl(to); - var parsedFrom = parseUrl(from); // because onpopstate only tells you the "new" (to) value of location.href, and - // not the previous (from) value, we need to track the value of the current URL - // state ourselves +// This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) +var _window = + typeof window !== 'undefined' + ? window + : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; +var _Raven = _window.Raven; - this._lastHref = to; // Use only the path component of the URL if the URL matches the current - // document (almost all the time when using pushState) +var Raven = new RavenConstructor(); - if (parsedLoc.protocol === parsedTo.protocol && parsedLoc.host === parsedTo.host) to = parsedTo.relative; - if (parsedLoc.protocol === parsedFrom.protocol && parsedLoc.host === parsedFrom.host) from = parsedFrom.relative; - this.captureBreadcrumb({ - category: 'navigation', - data: { - to: to, - from: from - } - }); - }, - _patchFunctionToString: function _patchFunctionToString() { - var self = this; - self._originalFunctionToString = Function.prototype.toString; // eslint-disable-next-line no-extend-native +/* + * Allow multiple versions of Raven to be installed. + * Strip Raven from the global context and returns the instance. + * + * @return {Raven} + */ +Raven.noConflict = function() { + _window.Raven = _Raven; + return Raven; +}; - Function.prototype.toString = function () { - if (typeof this === 'function' && this.__raven__) { - return self._originalFunctionToString.apply(this.__orig__, arguments); - } +Raven.afterLoad(); - return self._originalFunctionToString.apply(this, arguments); - }; - }, - _unpatchFunctionToString: function _unpatchFunctionToString() { - if (this._originalFunctionToString) { - // eslint-disable-next-line no-extend-native - Function.prototype.toString = this._originalFunctionToString; - } - }, +module.exports = Raven; - /** - * Wrap timer functions and event targets to catch errors and provide - * better metadata. - */ - _instrumentTryCatch: function _instrumentTryCatch() { - var self = this; - var wrappedBuiltIns = self._wrappedBuiltIns; +/** + * DISCLAIMER: + * + * Expose `Client` constructor for cases where user want to track multiple "sub-applications" in one larger app. + * It's not meant to be used by a wide audience, so pleaaase make sure that you know what you're doing before using it. + * Accidentally calling `install` multiple times, may result in an unexpected behavior that's very hard to debug. + * + * It's called `Client' to be in-line with Raven Node implementation. + * + * HOWTO: + * + * import Raven from 'raven-js'; + * + * const someAppReporter = new Raven.Client(); + * const someOtherAppReporter = new Raven.Client(); + * + * someAppReporter.config('__DSN__', { + * ...config goes here + * }); + * + * someOtherAppReporter.config('__OTHER_DSN__', { + * ...config goes here + * }); + * + * someAppReporter.captureMessage(...); + * someAppReporter.captureException(...); + * someAppReporter.captureBreadcrumb(...); + * + * someOtherAppReporter.captureMessage(...); + * someOtherAppReporter.captureException(...); + * someOtherAppReporter.captureBreadcrumb(...); + * + * It should "just work". + */ +module.exports.Client = RavenConstructor; - function wrapTimeFn(orig) { - return function (fn, t) { - // preserve arity - // Make a copy of the arguments to prevent deoptimization - // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments - var args = new Array(arguments.length); +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"5":5}],7:[function(_dereq_,module,exports){ +(function (global){ +var stringify = _dereq_(9); - for (var i = 0; i < args.length; ++i) { - args[i] = arguments[i]; - } +var _window = + typeof window !== 'undefined' + ? window + : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; - var originalCallback = args[0]; +function isObject(what) { + return typeof what === 'object' && what !== null; +} - if (isFunction(originalCallback)) { - args[0] = self.wrap(originalCallback); - } // IE < 9 doesn't support .call/.apply on setInterval/setTimeout, but it - // also supports only two arguments and doesn't care what this is, so we - // can just call the original function directly. +// Yanked from https://git.io/vS8DV re-used under CC0 +// with some tiny modifications +function isError(value) { + switch ({}.toString.call(value)) { + case '[object Error]': + return true; + case '[object Exception]': + return true; + case '[object DOMException]': + return true; + default: + return value instanceof Error; + } +} +function isErrorEvent(value) { + return supportsErrorEvent() && {}.toString.call(value) === '[object ErrorEvent]'; +} - if (orig.apply) { - return orig.apply(this, args); - } else { - return orig(args[0], args[1]); - } - }; - } +function isUndefined(what) { + return what === void 0; +} - var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; +function isFunction(what) { + return typeof what === 'function'; +} - function wrapEventTarget(global) { - var proto = _window$1[global] && _window$1[global].prototype; +function isPlainObject(what) { + return Object.prototype.toString.call(what) === '[object Object]'; +} - if (proto && proto.hasOwnProperty && proto.hasOwnProperty('addEventListener')) { - fill(proto, 'addEventListener', function (orig) { - return function (evtName, fn, capture, secure) { - // preserve arity - try { - if (fn && fn.handleEvent) { - fn.handleEvent = self.wrap(fn.handleEvent); - } - } catch (err) {} // can sometimes get 'Permission denied to access property "handle Event' - // More breadcrumb DOM capture ... done here and not in `_instrumentBreadcrumbs` - // so that we don't have more than one wrapper function +function isString(what) { + return Object.prototype.toString.call(what) === '[object String]'; +} +function isArray(what) { + return Object.prototype.toString.call(what) === '[object Array]'; +} - var before, clickHandler, keypressHandler; +function isEmptyObject(what) { + if (!isPlainObject(what)) return false; - if (autoBreadcrumbs && autoBreadcrumbs.dom && (global === 'EventTarget' || global === 'Node')) { - // NOTE: generating multiple handlers per addEventListener invocation, should - // revisit and verify we can just use one (almost certainly) - clickHandler = self._breadcrumbEventHandler('click'); - keypressHandler = self._keypressEventHandler(); + for (var _ in what) { + if (what.hasOwnProperty(_)) { + return false; + } + } + return true; +} - before = function before(evt) { - // need to intercept every DOM event in `before` argument, in case that - // same wrapped method is re-used for different events (e.g. mousemove THEN click) - // see #724 - if (!evt) return; - var eventType; +function supportsErrorEvent() { + try { + new ErrorEvent(''); // eslint-disable-line no-new + return true; + } catch (e) { + return false; + } +} - try { - eventType = evt.type; - } catch (e) { - // just accessing event properties can throw an exception in some rare circumstances - // see: https://github.com/getsentry/raven-js/issues/838 - return; - } +function supportsFetch() { + if (!('fetch' in _window)) return false; - if (eventType === 'click') return clickHandler(evt);else if (eventType === 'keypress') return keypressHandler(evt); - }; - } + try { + new Headers(); // eslint-disable-line no-new + new Request(''); // eslint-disable-line no-new + new Response(); // eslint-disable-line no-new + return true; + } catch (e) { + return false; + } +} - return orig.call(this, evtName, self.wrap(fn, undefined, before), capture, secure); - }; - }, wrappedBuiltIns); - fill(proto, 'removeEventListener', function (orig) { - return function (evt, fn, capture, secure) { - try { - fn = fn && (fn.__raven_wrapper__ ? fn.__raven_wrapper__ : fn); - } catch (e) {// ignore, accessing __raven_wrapper__ will throw in some Selenium environments - } +// Despite all stars in the sky saying that Edge supports old draft syntax, aka 'never', 'always', 'origin' and 'default +// https://caniuse.com/#feat=referrer-policy +// It doesn't. And it throw exception instead of ignoring this parameter... +// REF: https://github.com/getsentry/raven-js/issues/1233 +function supportsReferrerPolicy() { + if (!supportsFetch()) return false; - return orig.call(this, evt, fn, capture, secure); - }; - }, wrappedBuiltIns); - } - } + try { + // eslint-disable-next-line no-new + new Request('pickleRick', { + referrerPolicy: 'origin' + }); + return true; + } catch (e) { + return false; + } +} - fill(_window$1, 'setTimeout', wrapTimeFn, wrappedBuiltIns); - fill(_window$1, 'setInterval', wrapTimeFn, wrappedBuiltIns); +function supportsPromiseRejectionEvent() { + return typeof PromiseRejectionEvent === 'function'; +} - if (_window$1.requestAnimationFrame) { - fill(_window$1, 'requestAnimationFrame', function (orig) { - return function (cb) { - return orig(self.wrap(cb)); - }; - }, wrappedBuiltIns); - } // event targets borrowed from bugsnag-js: - // https://github.com/bugsnag/bugsnag-js/blob/master/src/bugsnag.js#L666 +function wrappedCallback(callback) { + function dataCallback(data, original) { + var normalizedData = callback(data) || data; + if (original) { + return original(normalizedData) || normalizedData; + } + return normalizedData; + } + return dataCallback; +} - var eventTargets = ['EventTarget', 'Window', 'Node', 'ApplicationCache', 'AudioTrackList', 'ChannelMergerNode', 'CryptoOperation', 'EventSource', 'FileReader', 'HTMLUnknownElement', 'IDBDatabase', 'IDBRequest', 'IDBTransaction', 'KeyOperation', 'MediaController', 'MessagePort', 'ModalWindow', 'Notification', 'SVGElementInstance', 'Screen', 'TextTrack', 'TextTrackCue', 'TextTrackList', 'WebSocket', 'WebSocketWorker', 'Worker', 'XMLHttpRequest', 'XMLHttpRequestEventTarget', 'XMLHttpRequestUpload']; +function each(obj, callback) { + var i, j; - for (var i = 0; i < eventTargets.length; i++) { - wrapEventTarget(eventTargets[i]); + if (isUndefined(obj.length)) { + for (i in obj) { + if (hasKey(obj, i)) { + callback.call(null, i, obj[i]); + } } - }, - - /** - * Instrument browser built-ins w/ breadcrumb capturing - * - XMLHttpRequests - * - DOM interactions (click/typing) - * - window.location changes - * - console - * - * Can be disabled or individually configured via the `autoBreadcrumbs` config option - */ - _instrumentBreadcrumbs: function _instrumentBreadcrumbs() { - var self = this; - var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; - var wrappedBuiltIns = self._wrappedBuiltIns; - - function wrapProp(prop, xhr) { - if (prop in xhr && isFunction(xhr[prop])) { - fill(xhr, prop, function (orig) { - return self.wrap(orig); - }); // intentionally don't track filled methods on XHR instances + } else { + j = obj.length; + if (j) { + for (i = 0; i < j; i++) { + callback.call(null, i, obj[i]); } } + } +} - if (autoBreadcrumbs.xhr && 'XMLHttpRequest' in _window$1) { - var xhrproto = XMLHttpRequest.prototype; - fill(xhrproto, 'open', function (origOpen) { - return function (method, url) { - // preserve arity - // if Sentry key appears in URL, don't capture - if (isString(url) && url.indexOf(self._globalKey) === -1) { - this.__raven_xhr = { - method: method, - url: url, - status_code: null - }; - } - - return origOpen.apply(this, arguments); - }; - }, wrappedBuiltIns); - fill(xhrproto, 'send', function (origSend) { - return function () { - // preserve arity - var xhr = this; - - function onreadystatechangeHandler() { - if (xhr.__raven_xhr && xhr.readyState === 4) { - try { - // touching statusCode in some platforms throws - // an exception - xhr.__raven_xhr.status_code = xhr.status; - } catch (e) { - /* do nothing */ - } +function objectMerge(obj1, obj2) { + if (!obj2) { + return obj1; + } + each(obj2, function(key, value) { + obj1[key] = value; + }); + return obj1; +} - self.captureBreadcrumb({ - type: 'http', - category: 'xhr', - data: xhr.__raven_xhr - }); - } - } +/** + * This function is only used for react-native. + * react-native freezes object that have already been sent over the + * js bridge. We need this function in order to check if the object is frozen. + * So it's ok that objectFrozen returns false if Object.isFrozen is not + * supported because it's not relevant for other "platforms". See related issue: + * https://github.com/getsentry/react-native-sentry/issues/57 + */ +function objectFrozen(obj) { + if (!Object.isFrozen) { + return false; + } + return Object.isFrozen(obj); +} - var props = ['onload', 'onerror', 'onprogress']; +function truncate(str, max) { + if (typeof max !== 'number') { + throw new Error('2nd argument to `truncate` function should be a number'); + } + if (typeof str !== 'string' || max === 0) { + return str; + } + return str.length <= max ? str : str.substr(0, max) + '\u2026'; +} - for (var j = 0; j < props.length; j++) { - wrapProp(props[j], xhr); - } +/** + * hasKey, a better form of hasOwnProperty + * Example: hasKey(MainHostObject, property) === true/false + * + * @param {Object} host object to check property + * @param {string} key to check + */ +function hasKey(object, key) { + return Object.prototype.hasOwnProperty.call(object, key); +} - if ('onreadystatechange' in xhr && isFunction(xhr.onreadystatechange)) { - fill(xhr, 'onreadystatechange', function (orig) { - return self.wrap(orig, undefined, onreadystatechangeHandler); - } - /* intentionally don't track this instrumentation */ - ); - } else { - // if onreadystatechange wasn't actually set by the page on this xhr, we - // are free to set our own and capture the breadcrumb - xhr.onreadystatechange = onreadystatechangeHandler; - } +function joinRegExp(patterns) { + // Combine an array of regular expressions and strings into one large regexp + // Be mad. + var sources = [], + i = 0, + len = patterns.length, + pattern; - return origSend.apply(this, arguments); - }; - }, wrappedBuiltIns); + for (; i < len; i++) { + pattern = patterns[i]; + if (isString(pattern)) { + // If it's a string, we need to escape it + // Taken from: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions + sources.push(pattern.replace(/([.*+?^=!:${}()|\[\]\/\\])/g, '\\$1')); + } else if (pattern && pattern.source) { + // If it's a regexp already, we want to extract the source + sources.push(pattern.source); } + // Intentionally skip other cases + } + return new RegExp(sources.join('|'), 'i'); +} - if (autoBreadcrumbs.xhr && supportsFetch()) { - fill(_window$1, 'fetch', function (origFetch) { - return function () { - // preserve arity - // Make a copy of the arguments to prevent deoptimization - // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments - var args = new Array(arguments.length); - - for (var i = 0; i < args.length; ++i) { - args[i] = arguments[i]; - } - - var fetchInput = args[0]; - var method = 'GET'; - var url; +function urlencode(o) { + var pairs = []; + each(o, function(key, value) { + pairs.push(encodeURIComponent(key) + '=' + encodeURIComponent(value)); + }); + return pairs.join('&'); +} - if (typeof fetchInput === 'string') { - url = fetchInput; - } else if ('Request' in _window$1 && fetchInput instanceof _window$1.Request) { - url = fetchInput.url; +// borrowed from https://tools.ietf.org/html/rfc3986#appendix-B +// intentionally using regex and not href parsing trick because React Native and other +// environments where DOM might not be available +function parseUrl(url) { + if (typeof url !== 'string') return {}; + var match = url.match(/^(([^:\/?#]+):)?(\/\/([^\/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?$/); - if (fetchInput.method) { - method = fetchInput.method; - } - } else { - url = '' + fetchInput; - } // if Sentry key appears in URL, don't capture, as it's our own request + // coerce to undefined values to empty string so we don't get 'undefined' + var query = match[6] || ''; + var fragment = match[8] || ''; + return { + protocol: match[2], + host: match[4], + path: match[5], + relative: match[5] + query + fragment // everything minus origin + }; +} +function uuid4() { + var crypto = _window.crypto || _window.msCrypto; + if (!isUndefined(crypto) && crypto.getRandomValues) { + // Use window.crypto API if available + // eslint-disable-next-line no-undef + var arr = new Uint16Array(8); + crypto.getRandomValues(arr); - if (url.indexOf(self._globalKey) !== -1) { - return origFetch.apply(this, args); - } + // set 4 in byte 7 + arr[3] = (arr[3] & 0xfff) | 0x4000; + // set 2 most significant bits of byte 9 to '10' + arr[4] = (arr[4] & 0x3fff) | 0x8000; - if (args[1] && args[1].method) { - method = args[1].method; - } + var pad = function(num) { + var v = num.toString(16); + while (v.length < 4) { + v = '0' + v; + } + return v; + }; - var fetchData = { - method: method, - url: url, - status_code: null - }; - return origFetch.apply(this, args).then(function (response) { - fetchData.status_code = response.status; - self.captureBreadcrumb({ - type: 'http', - category: 'fetch', - data: fetchData - }); - return response; - }); - }; - }, wrappedBuiltIns); - } // Capture breadcrumbs from any click that is unhandled / bubbled up all the way - // to the document. Do this before we instrument addEventListener. + return ( + pad(arr[0]) + + pad(arr[1]) + + pad(arr[2]) + + pad(arr[3]) + + pad(arr[4]) + + pad(arr[5]) + + pad(arr[6]) + + pad(arr[7]) + ); + } else { + // http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/2117523#2117523 + return 'xxxxxxxxxxxx4xxxyxxxxxxxxxxxxxxx'.replace(/[xy]/g, function(c) { + var r = (Math.random() * 16) | 0, + v = c === 'x' ? r : (r & 0x3) | 0x8; + return v.toString(16); + }); + } +} +/** + * Given a child DOM element, returns a query-selector statement describing that + * and its ancestors + * e.g. [HTMLElement] => body > div > input#foo.btn[name=baz] + * @param elem + * @returns {string} + */ +function htmlTreeAsString(elem) { + /* eslint no-extra-parens:0*/ + var MAX_TRAVERSE_HEIGHT = 5, + MAX_OUTPUT_LEN = 80, + out = [], + height = 0, + len = 0, + separator = ' > ', + sepLength = separator.length, + nextStr; - if (autoBreadcrumbs.dom && this._hasDocument) { - if (_document.addEventListener) { - _document.addEventListener('click', self._breadcrumbEventHandler('click'), false); + while (elem && height++ < MAX_TRAVERSE_HEIGHT) { + nextStr = htmlElementAsString(elem); + // bail out if + // - nextStr is the 'html' element + // - the length of the string that would be created exceeds MAX_OUTPUT_LEN + // (ignore this limit if we are on the first iteration) + if ( + nextStr === 'html' || + (height > 1 && len + out.length * sepLength + nextStr.length >= MAX_OUTPUT_LEN) + ) { + break; + } - _document.addEventListener('keypress', self._keypressEventHandler(), false); - } else { - // IE8 Compatibility - _document.attachEvent('onclick', self._breadcrumbEventHandler('click')); + out.push(nextStr); - _document.attachEvent('onkeypress', self._keypressEventHandler()); - } - } // record navigation (URL) changes - // NOTE: in Chrome App environment, touching history.pushState, *even inside - // a try/catch block*, will cause Chrome to output an error to console.error - // borrowed from: https://github.com/angular/angular.js/pull/13945/files + len += nextStr.length; + elem = elem.parentNode; + } + return out.reverse().join(separator); +} - var chrome = _window$1.chrome; - var isChromePackagedApp = chrome && chrome.app && chrome.app.runtime; - var hasPushAndReplaceState = !isChromePackagedApp && _window$1.history && history.pushState && history.replaceState; +/** + * Returns a simple, query-selector representation of a DOM element + * e.g. [HTMLElement] => input#foo.btn[name=baz] + * @param HTMLElement + * @returns {string} + */ +function htmlElementAsString(elem) { + var out = [], + className, + classes, + key, + attr, + i; - if (autoBreadcrumbs.location && hasPushAndReplaceState) { - // TODO: remove onpopstate handler on uninstall() - var oldOnPopState = _window$1.onpopstate; + if (!elem || !elem.tagName) { + return ''; + } - _window$1.onpopstate = function () { - var currentHref = self._location.href; + out.push(elem.tagName.toLowerCase()); + if (elem.id) { + out.push('#' + elem.id); + } - self._captureUrlChange(self._lastHref, currentHref); + className = elem.className; + if (className && isString(className)) { + classes = className.split(/\s+/); + for (i = 0; i < classes.length; i++) { + out.push('.' + classes[i]); + } + } + var attrWhitelist = ['type', 'name', 'title', 'alt']; + for (i = 0; i < attrWhitelist.length; i++) { + key = attrWhitelist[i]; + attr = elem.getAttribute(key); + if (attr) { + out.push('[' + key + '="' + attr + '"]'); + } + } + return out.join(''); +} - if (oldOnPopState) { - return oldOnPopState.apply(this, arguments); - } - }; +/** + * Returns true if either a OR b is truthy, but not both + */ +function isOnlyOneTruthy(a, b) { + return !!(!!a ^ !!b); +} - var historyReplacementFunction = function historyReplacementFunction(origHistFunction) { - // note history.pushState.length is 0; intentionally not declaring - // params to preserve 0 arity - return function () - /* state, title, url */ - { - var url = arguments.length > 2 ? arguments[2] : undefined; // url argument is optional +/** + * Returns true if both parameters are undefined + */ +function isBothUndefined(a, b) { + return isUndefined(a) && isUndefined(b); +} - if (url) { - // coerce to string (this is what pushState does) - self._captureUrlChange(self._lastHref, url + ''); - } +/** + * Returns true if the two input exception interfaces have the same content + */ +function isSameException(ex1, ex2) { + if (isOnlyOneTruthy(ex1, ex2)) return false; - return origHistFunction.apply(this, arguments); - }; - }; + ex1 = ex1.values[0]; + ex2 = ex2.values[0]; - fill(history, 'pushState', historyReplacementFunction, wrappedBuiltIns); - fill(history, 'replaceState', historyReplacementFunction, wrappedBuiltIns); - } + if (ex1.type !== ex2.type || ex1.value !== ex2.value) return false; - if (autoBreadcrumbs.console && 'console' in _window$1 && console.log) { - // console - var consoleMethodCallback = function consoleMethodCallback(msg, data) { - self.captureBreadcrumb({ - message: msg, - level: data.level, - category: 'console' - }); - }; + // in case both stacktraces are undefined, we can't decide so default to false + if (isBothUndefined(ex1.stacktrace, ex2.stacktrace)) return false; - each(['debug', 'info', 'warn', 'error', 'log'], function (_, level) { - wrapConsoleMethod(console, level, consoleMethodCallback); - }); - } - }, - _restoreBuiltIns: function _restoreBuiltIns() { - // restore any wrapped builtins - var builtin; + return isSameStacktrace(ex1.stacktrace, ex2.stacktrace); +} - while (this._wrappedBuiltIns.length) { - builtin = this._wrappedBuiltIns.shift(); - var obj = builtin[0], - name = builtin[1], - orig = builtin[2]; - obj[name] = orig; - } - }, - _restoreConsole: function _restoreConsole() { - // eslint-disable-next-line guard-for-in - for (var method in this._originalConsoleMethods) { - this._originalConsole[method] = this._originalConsoleMethods[method]; - } - }, - _drainPlugins: function _drainPlugins() { - var self = this; // FIX ME TODO +/** + * Returns true if the two input stack trace interfaces have the same content + */ +function isSameStacktrace(stack1, stack2) { + if (isOnlyOneTruthy(stack1, stack2)) return false; - each(this._plugins, function (_, plugin) { - var installer = plugin[0]; - var args = plugin[1]; - installer.apply(self, [self].concat(args)); - }); - }, - _parseDSN: function _parseDSN(str) { - var m = dsnPattern.exec(str), - dsn = {}, - i = 7; + var frames1 = stack1.frames; + var frames2 = stack2.frames; + + // Exit early if frame count differs + if (frames1.length !== frames2.length) return false; + + // Iterate through every frame; bail out if anything differs + var a, b; + for (var i = 0; i < frames1.length; i++) { + a = frames1[i]; + b = frames2[i]; + if ( + a.filename !== b.filename || + a.lineno !== b.lineno || + a.colno !== b.colno || + a['function'] !== b['function'] + ) + return false; + } + return true; +} + +/** + * Polyfill a method + * @param obj object e.g. `document` + * @param name method name present on object e.g. `addEventListener` + * @param replacement replacement function + * @param track {optional} record instrumentation to an array + */ +function fill(obj, name, replacement, track) { + if (obj == null) return; + var orig = obj[name]; + obj[name] = replacement(orig); + obj[name].__raven__ = true; + obj[name].__orig__ = orig; + if (track) { + track.push([obj, name, orig]); + } +} + +/** + * Join values in array + * @param input array of values to be joined together + * @param delimiter string to be placed in-between values + * @returns {string} + */ +function safeJoin(input, delimiter) { + if (!isArray(input)) return ''; + var output = []; + + for (var i = 0; i < input.length; i++) { try { - while (i--) { - dsn[dsnKeys[i]] = m[i] || ''; - } + output.push(String(input[i])); } catch (e) { - throw new configError('Invalid DSN: ' + str); + output.push('[value cannot be serialized]'); } + } - if (dsn.pass && !this._globalOptions.allowSecretKey) { - throw new configError('Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key'); - } + return output.join(delimiter); +} - return dsn; - }, - _getGlobalServer: function _getGlobalServer(uri) { - // assemble the endpoint from the uri pieces - var globalServer = '//' + uri.host + (uri.port ? ':' + uri.port : ''); +// Default Node.js REPL depth +var MAX_SERIALIZE_EXCEPTION_DEPTH = 3; +// 50kB, as 100kB is max payload size, so half sounds reasonable +var MAX_SERIALIZE_EXCEPTION_SIZE = 50 * 1024; +var MAX_SERIALIZE_KEYS_LENGTH = 40; - if (uri.protocol) { - globalServer = uri.protocol + ':' + globalServer; - } +function utf8Length(value) { + return ~-encodeURI(value).split(/%..|./).length; +} - return globalServer; - }, - _handleOnErrorStackInfo: function _handleOnErrorStackInfo() { - // if we are intentionally ignoring errors via onerror, bail out - if (!this._ignoreOnError) { - this._handleStackInfo.apply(this, arguments); - } - }, - _handleStackInfo: function _handleStackInfo(stackInfo, options) { - var frames = this._prepareFrames(stackInfo, options); +function jsonSize(value) { + return utf8Length(JSON.stringify(value)); +} - this._triggerEvent('handle', { - stackInfo: stackInfo, - options: options - }); +function serializeValue(value) { + if (typeof value === 'string') { + var maxLength = 40; + return truncate(value, maxLength); + } else if ( + typeof value === 'number' || + typeof value === 'boolean' || + typeof value === 'undefined' + ) { + return value; + } - this._processException(stackInfo.name, stackInfo.message, stackInfo.url, stackInfo.lineno, frames, options); - }, - _prepareFrames: function _prepareFrames(stackInfo, options) { - var self = this; - var frames = []; + var type = Object.prototype.toString.call(value); - if (stackInfo.stack && stackInfo.stack.length) { - each(stackInfo.stack, function (i, stack) { - var frame = self._normalizeFrame(stack, stackInfo.url); + // Node.js REPL notation + if (type === '[object Object]') return '[Object]'; + if (type === '[object Array]') return '[Array]'; + if (type === '[object Function]') + return value.name ? '[Function: ' + value.name + ']' : '[Function]'; - if (frame) { - frames.push(frame); - } - }); // e.g. frames captured via captureMessage throw + return value; +} - if (options && options.trimHeadFrames) { - for (var j = 0; j < options.trimHeadFrames && j < frames.length; j++) { - frames[j].in_app = false; - } - } - } +function serializeObject(value, depth) { + if (depth === 0) return serializeValue(value); + + if (isPlainObject(value)) { + return Object.keys(value).reduce(function(acc, key) { + acc[key] = serializeObject(value[key], depth - 1); + return acc; + }, {}); + } else if (Array.isArray(value)) { + return value.map(function(val) { + return serializeObject(val, depth - 1); + }); + } - frames = frames.slice(0, this._globalOptions.stackTraceLimit); - return frames; - }, - _normalizeFrame: function _normalizeFrame(frame, stackInfoUrl) { - // normalize the frames data - var normalized = { - filename: frame.url, - lineno: frame.line, - colno: frame.column, - function: frame.func || '?' - }; // Case when we don't have any information about the error - // E.g. throwing a string or raw object, instead of an `Error` in Firefox - // Generating synthetic error doesn't add any value here - // - // We should probably somehow let a user know that they should fix their code + return serializeValue(value); +} - if (!frame.url) { - normalized.filename = stackInfoUrl; // fallback to whole stacks url from onerror handler - } +function serializeException(ex, depth, maxSize) { + if (!isPlainObject(ex)) return ex; - normalized.in_app = !( // determine if an exception came from outside of our app - // first we check the global includePaths list. - !!this._globalOptions.includePaths.test && !this._globalOptions.includePaths.test(normalized.filename) || // Now we check for fun, if the function name is Raven or TraceKit - /(Raven|TraceKit)\./.test(normalized['function']) || // finally, we do a last ditch effort and check for raven.min.js - /raven\.(min\.)?js$/.test(normalized.filename)); - return normalized; - }, - _processException: function _processException(type, message, fileurl, lineno, frames, options) { - var prefixedMessage = (type ? type + ': ' : '') + (message || ''); + depth = typeof depth !== 'number' ? MAX_SERIALIZE_EXCEPTION_DEPTH : depth; + maxSize = typeof depth !== 'number' ? MAX_SERIALIZE_EXCEPTION_SIZE : maxSize; - if (!!this._globalOptions.ignoreErrors.test && (this._globalOptions.ignoreErrors.test(message) || this._globalOptions.ignoreErrors.test(prefixedMessage))) { - return; - } + var serialized = serializeObject(ex, depth); - var stacktrace; + if (jsonSize(stringify(serialized)) > maxSize) { + return serializeException(ex, depth - 1); + } - if (frames && frames.length) { - fileurl = frames[0].filename || fileurl; // Sentry expects frames oldest to newest - // and JS sends them as newest to oldest + return serialized; +} - frames.reverse(); - stacktrace = { - frames: frames - }; - } else if (fileurl) { - stacktrace = { - frames: [{ - filename: fileurl, - lineno: lineno, - in_app: true - }] - }; - } +function serializeKeysForMessage(keys, maxLength) { + if (typeof keys === 'number' || typeof keys === 'string') return keys.toString(); + if (!Array.isArray(keys)) return ''; - if (!!this._globalOptions.ignoreUrls.test && this._globalOptions.ignoreUrls.test(fileurl)) { - return; - } + keys = keys.filter(function(key) { + return typeof key === 'string'; + }); + if (keys.length === 0) return '[object has no keys]'; - if (!!this._globalOptions.whitelistUrls.test && !this._globalOptions.whitelistUrls.test(fileurl)) { - return; - } + maxLength = typeof maxLength !== 'number' ? MAX_SERIALIZE_KEYS_LENGTH : maxLength; + if (keys[0].length >= maxLength) return keys[0]; - var data = objectMerge({ - // sentry.interfaces.Exception - exception: { - values: [{ - type: type, - value: message, - stacktrace: stacktrace - }] - }, - culprit: fileurl - }, options); // Fire away! + for (var usedKeys = keys.length; usedKeys > 0; usedKeys--) { + var serialized = keys.slice(0, usedKeys).join(', '); + if (serialized.length > maxLength) continue; + if (usedKeys === keys.length) return serialized; + return serialized + '\u2026'; + } - this._send(data); - }, - _trimPacket: function _trimPacket(data) { - // For now, we only want to truncate the two different messages - // but this could/should be expanded to just trim everything - var max = this._globalOptions.maxMessageLength; + return ''; +} - if (data.message) { - data.message = truncate(data.message, max); +function sanitize(input, sanitizeKeys) { + if (!isArray(sanitizeKeys) || (isArray(sanitizeKeys) && sanitizeKeys.length === 0)) + return input; + + var sanitizeRegExp = joinRegExp(sanitizeKeys); + var sanitizeMask = '********'; + var safeInput; + + try { + safeInput = JSON.parse(stringify(input)); + } catch (o_O) { + return input; + } + + function sanitizeWorker(workerInput) { + if (isArray(workerInput)) { + return workerInput.map(function(val) { + return sanitizeWorker(val); + }); } - if (data.exception) { - var exception = data.exception.values[0]; - exception.value = truncate(exception.value, max); + if (isPlainObject(workerInput)) { + return Object.keys(workerInput).reduce(function(acc, k) { + if (sanitizeRegExp.test(k)) { + acc[k] = sanitizeMask; + } else { + acc[k] = sanitizeWorker(workerInput[k]); + } + return acc; + }, {}); } - var request = data.request; + return workerInput; + } - if (request) { - if (request.url) { - request.url = truncate(request.url, this._globalOptions.maxUrlLength); - } + return sanitizeWorker(safeInput); +} - if (request.Referer) { - request.Referer = truncate(request.Referer, this._globalOptions.maxUrlLength); - } - } +module.exports = { + isObject: isObject, + isError: isError, + isErrorEvent: isErrorEvent, + isUndefined: isUndefined, + isFunction: isFunction, + isPlainObject: isPlainObject, + isString: isString, + isArray: isArray, + isEmptyObject: isEmptyObject, + supportsErrorEvent: supportsErrorEvent, + supportsFetch: supportsFetch, + supportsReferrerPolicy: supportsReferrerPolicy, + supportsPromiseRejectionEvent: supportsPromiseRejectionEvent, + wrappedCallback: wrappedCallback, + each: each, + objectMerge: objectMerge, + truncate: truncate, + objectFrozen: objectFrozen, + hasKey: hasKey, + joinRegExp: joinRegExp, + urlencode: urlencode, + uuid4: uuid4, + htmlTreeAsString: htmlTreeAsString, + htmlElementAsString: htmlElementAsString, + isSameException: isSameException, + isSameStacktrace: isSameStacktrace, + parseUrl: parseUrl, + fill: fill, + safeJoin: safeJoin, + serializeException: serializeException, + serializeKeysForMessage: serializeKeysForMessage, + sanitize: sanitize +}; - if (data.breadcrumbs && data.breadcrumbs.values) this._trimBreadcrumbs(data.breadcrumbs); - return data; - }, +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"9":9}],8:[function(_dereq_,module,exports){ +(function (global){ +var utils = _dereq_(7); - /** - * Truncate breadcrumb values (right now just URLs) - */ - _trimBreadcrumbs: function _trimBreadcrumbs(breadcrumbs) { - // known breadcrumb properties with urls - // TODO: also consider arbitrary prop values that start with (https?)?:// - var urlProps = ['to', 'from', 'url'], - urlProp, - crumb, - data; +/* + TraceKit - Cross brower stack traces - for (var i = 0; i < breadcrumbs.values.length; ++i) { - crumb = breadcrumbs.values[i]; - if (!crumb.hasOwnProperty('data') || !isObject(crumb.data) || objectFrozen(crumb.data)) continue; - data = objectMerge({}, crumb.data); + This was originally forked from github.com/occ/TraceKit, but has since been + largely re-written and is now maintained as part of raven-js. Tests for + this are in test/vendor. - for (var j = 0; j < urlProps.length; ++j) { - urlProp = urlProps[j]; + MIT license +*/ - if (data.hasOwnProperty(urlProp) && data[urlProp]) { - data[urlProp] = truncate(data[urlProp], this._globalOptions.maxUrlLength); - } - } +var TraceKit = { + collectWindowErrors: true, + debug: false +}; - breadcrumbs.values[i].data = data; - } - }, - _getHttpData: function _getHttpData() { - if (!this._hasNavigator && !this._hasDocument) return; - var httpData = {}; +// This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) +var _window = + typeof window !== 'undefined' + ? window + : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; - if (this._hasNavigator && _navigator.userAgent) { - httpData.headers = { - 'User-Agent': navigator.userAgent - }; - } // Check in `window` instead of `document`, as we may be in ServiceWorker environment +// global reference to slice +var _slice = [].slice; +var UNKNOWN_FUNCTION = '?'; +// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error#Error_types +var ERROR_TYPES_RE = /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/; - if (_window$1.location && _window$1.location.href) { - httpData.url = _window$1.location.href; - } +function getLocationHref() { + if (typeof document === 'undefined' || document.location == null) return ''; - if (this._hasDocument && _document.referrer) { - if (!httpData.headers) httpData.headers = {}; - httpData.headers.Referer = _document.referrer; - } + return document.location.href; +} - return httpData; - }, - _resetBackoff: function _resetBackoff() { - this._backoffDuration = 0; - this._backoffStart = null; - }, - _shouldBackoff: function _shouldBackoff() { - return this._backoffDuration && now() - this._backoffStart < this._backoffDuration; - }, +/** + * TraceKit.report: cross-browser processing of unhandled exceptions + * + * Syntax: + * TraceKit.report.subscribe(function(stackInfo) { ... }) + * TraceKit.report.unsubscribe(function(stackInfo) { ... }) + * TraceKit.report(exception) + * try { ...code... } catch(ex) { TraceKit.report(ex); } + * + * Supports: + * - Firefox: full stack trace with line numbers, plus column number + * on top frame; column number is not guaranteed + * - Opera: full stack trace with line and column numbers + * - Chrome: full stack trace with line and column numbers + * - Safari: line and column number for the top frame only; some frames + * may be missing, and column number is not guaranteed + * - IE: line and column number for the top frame only; some frames + * may be missing, and column number is not guaranteed + * + * In theory, TraceKit should work on all of the following versions: + * - IE5.5+ (only 8.0 tested) + * - Firefox 0.9+ (only 3.5+ tested) + * - Opera 7+ (only 10.50 tested; versions 9 and earlier may require + * Exceptions Have Stacktrace to be enabled in opera:config) + * - Safari 3+ (only 4+ tested) + * - Chrome 1+ (only 5+ tested) + * - Konqueror 3.5+ (untested) + * + * Requires TraceKit.computeStackTrace. + * + * Tries to catch all unhandled exceptions and report them to the + * subscribed handlers. Please note that TraceKit.report will rethrow the + * exception. This is REQUIRED in order to get a useful stack trace in IE. + * If the exception does not reach the top of the browser, you will only + * get a stack trace from the point where TraceKit.report was called. + * + * Handlers receive a stackInfo object as described in the + * TraceKit.computeStackTrace docs. + */ +TraceKit.report = (function reportModuleWrapper() { + var handlers = [], + lastArgs = null, + lastException = null, + lastExceptionStack = null; /** - * Returns true if the in-process data payload matches the signature - * of the previously-sent data - * - * NOTE: This has to be done at this level because TraceKit can generate - * data from window.onerror WITHOUT an exception object (IE8, IE9, - * other old browsers). This can take the form of an "exception" - * data object with a single frame (derived from the onerror args). + * Add a crash handler. + * @param {Function} handler */ - _isRepeatData: function _isRepeatData(current) { - var last = this._lastData; - if (!last || current.message !== last.message || // defined for captureMessage - current.culprit !== last.culprit // defined for captureException/onerror - ) return false; // Stacktrace interface (i.e. from captureMessage) + function subscribe(handler) { + installGlobalHandler(); + handlers.push(handler); + } - if (current.stacktrace || last.stacktrace) { - return isSameStacktrace(current.stacktrace, last.stacktrace); - } else if (current.exception || last.exception) { - // Exception interface (i.e. from captureException/onerror) - return isSameException(current.exception, last.exception); + /** + * Remove a crash handler. + * @param {Function} handler + */ + function unsubscribe(handler) { + for (var i = handlers.length - 1; i >= 0; --i) { + if (handlers[i] === handler) { + handlers.splice(i, 1); + } } + } - return true; - }, - _setBackoffState: function _setBackoffState(request) { - // If we are already in a backoff state, don't change anything - if (this._shouldBackoff()) { + /** + * Remove all crash handlers. + */ + function unsubscribeAll() { + uninstallGlobalHandler(); + handlers = []; + } + + /** + * Dispatch stack information to all handlers. + * @param {Object.} stack + */ + function notifyHandlers(stack, isWindowError) { + var exception = null; + if (isWindowError && !TraceKit.collectWindowErrors) { return; } + for (var i in handlers) { + if (handlers.hasOwnProperty(i)) { + try { + handlers[i].apply(null, [stack].concat(_slice.call(arguments, 2))); + } catch (inner) { + exception = inner; + } + } + } - var status = request.status; // 400 - project_id doesn't exist or some other fatal - // 401 - invalid/revoked dsn - // 429 - too many requests - - if (!(status === 400 || status === 401 || status === 429)) return; - var retry; + if (exception) { + throw exception; + } + } - try { - // If Retry-After is not in Access-Control-Expose-Headers, most - // browsers will throw an exception trying to access it - if (supportsFetch()) { - retry = request.headers.get('Retry-After'); - } else { - retry = request.getResponseHeader('Retry-After'); - } // Retry-After is returned in seconds + var _oldOnerrorHandler, _onErrorHandlerInstalled; + /** + * Ensures all global unhandled exceptions are recorded. + * Supported by Gecko and IE. + * @param {string} msg Error message. + * @param {string} url URL of script that generated the exception. + * @param {(number|string)} lineNo The line number at which the error + * occurred. + * @param {?(number|string)} colNo The column number at which the error + * occurred. + * @param {?Error} ex The actual Error object. + */ + function traceKitWindowOnError(msg, url, lineNo, colNo, ex) { + var stack = null; + // If 'ex' is ErrorEvent, get real Error from inside + var exception = utils.isErrorEvent(ex) ? ex.error : ex; + // If 'msg' is ErrorEvent, get real message from inside + var message = utils.isErrorEvent(msg) ? msg.message : msg; - retry = parseInt(retry, 10) * 1000; - } catch (e) { - /* eslint no-empty:0 */ - } + if (lastExceptionStack) { + TraceKit.computeStackTrace.augmentStackTraceWithInitialElement( + lastExceptionStack, + url, + lineNo, + message + ); + processLastException(); + } else if (exception && utils.isError(exception)) { + // non-string `exception` arg; attempt to extract stack trace - this._backoffDuration = retry ? // If Sentry server returned a Retry-After value, use it - retry : // Otherwise, double the last backoff duration (starts at 1 sec) - this._backoffDuration * 2 || 1000; - this._backoffStart = now(); - }, - _send: function _send(data) { - var globalOptions = this._globalOptions; + // New chrome and blink send along a real error object + // Let's just report that like a normal error. + // See: https://mikewest.org/2013/08/debugging-runtime-errors-with-window-onerror + stack = TraceKit.computeStackTrace(exception); + notifyHandlers(stack, true); + } else { + var location = { + url: url, + line: lineNo, + column: colNo + }; - var baseData = { - project: this._globalProject, - logger: globalOptions.logger, - platform: 'javascript' - }, - httpData = this._getHttpData(); + var name = undefined; + var groups; - if (httpData) { - baseData.request = httpData; - } // HACK: delete `trimHeadFrames` to prevent from appearing in outbound payload + if ({}.toString.call(message) === '[object String]') { + var groups = message.match(ERROR_TYPES_RE); + if (groups) { + name = groups[1]; + message = groups[2]; + } + } + location.func = UNKNOWN_FUNCTION; - if (data.trimHeadFrames) delete data.trimHeadFrames; - data = objectMerge(baseData, data); // Merge in the tags and extra separately since objectMerge doesn't handle a deep merge - - data.tags = objectMerge(objectMerge({}, this._globalContext.tags), data.tags); - data.extra = objectMerge(objectMerge({}, this._globalContext.extra), data.extra); // Send along our own collected metadata with extra - - data.extra['session:duration'] = now() - this._startTime; - - if (this._breadcrumbs && this._breadcrumbs.length > 0) { - // intentionally make shallow copy so that additions - // to breadcrumbs aren't accidentally sent in this request - data.breadcrumbs = { - values: [].slice.call(this._breadcrumbs, 0) + stack = { + name: name, + message: message, + url: getLocationHref(), + stack: [location] }; + notifyHandlers(stack, true); } - if (this._globalContext.user) { - // sentry.interfaces.User - data.user = this._globalContext.user; - } // Include the environment if it's defined in globalOptions - - - if (globalOptions.environment) data.environment = globalOptions.environment; // Include the release if it's defined in globalOptions - - if (globalOptions.release) data.release = globalOptions.release; // Include server_name if it's defined in globalOptions - - if (globalOptions.serverName) data.server_name = globalOptions.serverName; // Cleanup empty properties before sending them to the server - - Object.keys(data).forEach(function (key) { - if (data[key] == null || data[key] === '' || isEmptyObject(data[key])) { - delete data[key]; - } - }); - - if (isFunction(globalOptions.dataCallback)) { - data = globalOptions.dataCallback(data) || data; - } // Why?????????? - - - if (!data || isEmptyObject(data)) { - return; - } // Check if the request should be filtered or not - - - if (isFunction(globalOptions.shouldSendCallback) && !globalOptions.shouldSendCallback(data)) { - return; - } // Backoff state: Sentry server previously responded w/ an error (e.g. 429 - too many requests), - // so drop requests until "cool-off" period has elapsed. - + if (_oldOnerrorHandler) { + return _oldOnerrorHandler.apply(this, arguments); + } - if (this._shouldBackoff()) { - this._logDebug('warn', 'Raven dropped error due to backoff: ', data); + return false; + } + function installGlobalHandler() { + if (_onErrorHandlerInstalled) { return; } + _oldOnerrorHandler = _window.onerror; + _window.onerror = traceKitWindowOnError; + _onErrorHandlerInstalled = true; + } - if (typeof globalOptions.sampleRate === 'number') { - if (Math.random() < globalOptions.sampleRate) { - this._sendProcessedPayload(data); - } - } else { - this._sendProcessedPayload(data); - } - }, - _getUuid: function _getUuid() { - return uuid4(); - }, - _sendProcessedPayload: function _sendProcessedPayload(data, callback) { - var self = this; - var globalOptions = this._globalOptions; - if (!this.isSetup()) return; // Try and clean up the packet before sending by truncating long values - - data = this._trimPacket(data); // ideally duplicate error testing should occur *before* dataCallback/shouldSendCallback, - // but this would require copying an un-truncated copy of the data packet, which can be - // arbitrarily deep (extra_data) -- could be worthwhile? will revisit - - if (!this._globalOptions.allowDuplicates && this._isRepeatData(data)) { - this._logDebug('warn', 'Raven dropped repeat event: ', data); - + function uninstallGlobalHandler() { + if (!_onErrorHandlerInstalled) { return; - } // Send along an event_id if not explicitly passed. - // This event_id can be used to reference the error within Sentry itself. - // Set lastEventId after we know the error should actually be sent - - - this._lastEventId = data.event_id || (data.event_id = this._getUuid()); // Store outbound payload after trim - - this._lastData = data; - - this._logDebug('debug', 'Raven about to send:', data); + } + _window.onerror = _oldOnerrorHandler; + _onErrorHandlerInstalled = false; + _oldOnerrorHandler = undefined; + } - var auth = { - sentry_version: '7', - sentry_client: 'raven-js/' + this.VERSION, - sentry_key: this._globalKey - }; + function processLastException() { + var _lastExceptionStack = lastExceptionStack, + _lastArgs = lastArgs; + lastArgs = null; + lastExceptionStack = null; + lastException = null; + notifyHandlers.apply(null, [_lastExceptionStack, false].concat(_lastArgs)); + } - if (this._globalSecret) { - auth.sentry_secret = this._globalSecret; + /** + * Reports an unhandled Error to TraceKit. + * @param {Error} ex + * @param {?boolean} rethrow If false, do not re-throw the exception. + * Only used for window.onerror to not cause an infinite loop of + * rethrowing. + */ + function report(ex, rethrow) { + var args = _slice.call(arguments, 1); + if (lastExceptionStack) { + if (lastException === ex) { + return; // already caught by an inner catch block, ignore + } else { + processLastException(); + } } - var exception = data.exception && data.exception.values[0]; // only capture 'sentry' breadcrumb is autoBreadcrumbs is truthy + var stack = TraceKit.computeStackTrace(ex); + lastExceptionStack = stack; + lastException = ex; + lastArgs = args; - if (this._globalOptions.autoBreadcrumbs && this._globalOptions.autoBreadcrumbs.sentry) { - this.captureBreadcrumb({ - category: 'sentry', - message: exception ? (exception.type ? exception.type + ': ' : '') + exception.value : data.message, - event_id: data.event_id, - level: data.level || 'error' // presume error unless specified + // If the stack trace is incomplete, wait for 2 seconds for + // slow slow IE to see if onerror occurs or not before reporting + // this exception; otherwise, we will end up with an incomplete + // stack trace + setTimeout(function() { + if (lastException === ex) { + processLastException(); + } + }, stack.incomplete ? 2000 : 0); - }); + if (rethrow !== false) { + throw ex; // re-throw to propagate to the top level (and cause window.onerror) } + } - var url = this._globalEndpoint; + report.subscribe = subscribe; + report.unsubscribe = unsubscribe; + report.uninstall = unsubscribeAll; + return report; +})(); - (globalOptions.transport || this._makeRequest).call(this, { - url: url, - auth: auth, - data: data, - options: globalOptions, - onSuccess: function success() { - self._resetBackoff(); +/** + * TraceKit.computeStackTrace: cross-browser stack traces in JavaScript + * + * Syntax: + * s = TraceKit.computeStackTrace(exception) // consider using TraceKit.report instead (see below) + * Returns: + * s.name - exception name + * s.message - exception message + * s.stack[i].url - JavaScript or HTML file URL + * s.stack[i].func - function name, or empty for anonymous functions (if guessing did not work) + * s.stack[i].args - arguments passed to the function, if known + * s.stack[i].line - line number, if known + * s.stack[i].column - column number, if known + * + * Supports: + * - Firefox: full stack trace with line numbers and unreliable column + * number on top frame + * - Opera 10: full stack trace with line and column numbers + * - Opera 9-: full stack trace with line numbers + * - Chrome: full stack trace with line and column numbers + * - Safari: line and column number for the topmost stacktrace element + * only + * - IE: no line numbers whatsoever + * + * Tries to guess names of anonymous functions by looking for assignments + * in the source code. In IE and Safari, we have to guess source file names + * by searching for function bodies inside all page scripts. This will not + * work for scripts that are loaded cross-domain. + * Here be dragons: some function names may be guessed incorrectly, and + * duplicate functions may be mismatched. + * + * TraceKit.computeStackTrace should only be used for tracing purposes. + * Logging of unhandled exceptions should be done with TraceKit.report, + * which builds on top of TraceKit.computeStackTrace and provides better + * IE support by utilizing the window.onerror event to retrieve information + * about the top of the stack. + * + * Note: In IE and Safari, no stack trace is recorded on the Error object, + * so computeStackTrace instead walks its *own* chain of callers. + * This means that: + * * in Safari, some methods may be missing from the stack trace; + * * in IE, the topmost function in the stack trace will always be the + * caller of computeStackTrace. + * + * This is okay for tracing (because you are likely to be calling + * computeStackTrace from the function you want to be the topmost element + * of the stack trace anyway), but not okay for logging unhandled + * exceptions (because your catch block will likely be far away from the + * inner function that actually caused the exception). + * + */ +TraceKit.computeStackTrace = (function computeStackTraceWrapper() { + // Contents of Exception in various browsers. + // + // SAFARI: + // ex.message = Can't find variable: qq + // ex.line = 59 + // ex.sourceId = 580238192 + // ex.sourceURL = http://... + // ex.expressionBeginOffset = 96 + // ex.expressionCaretOffset = 98 + // ex.expressionEndOffset = 98 + // ex.name = ReferenceError + // + // FIREFOX: + // ex.message = qq is not defined + // ex.fileName = http://... + // ex.lineNumber = 59 + // ex.columnNumber = 69 + // ex.stack = ...stack trace... (see the example below) + // ex.name = ReferenceError + // + // CHROME: + // ex.message = qq is not defined + // ex.name = ReferenceError + // ex.type = not_defined + // ex.arguments = ['aa'] + // ex.stack = ...stack trace... + // + // INTERNET EXPLORER: + // ex.message = ... + // ex.name = ReferenceError + // + // OPERA: + // ex.message = ...message... (see the example below) + // ex.name = ReferenceError + // ex.opera#sourceloc = 11 (pretty much useless, duplicates the info in ex.message) + // ex.stacktrace = n/a; see 'opera:config#UserPrefs|Exceptions Have Stacktrace' - self._triggerEvent('success', { - data: data, - src: url - }); + /** + * Computes stack trace information from the stack property. + * Chrome and Gecko use this property. + * @param {Error} ex + * @return {?Object.} Stack trace information. + */ + function computeStackTraceFromStackProp(ex) { + if (typeof ex.stack === 'undefined' || !ex.stack) return; - callback && callback(); - }, - onError: function failure(error) { - self._logDebug('error', 'Raven transport failed to send: ', error); + var chrome = /^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i; + var winjs = /^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i; + // NOTE: blob urls are now supposed to always have an origin, therefore it's format + // which is `blob:http://url/path/with-some-uuid`, is matched by `blob.*?:\/` as well + var gecko = /^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i; + // Used to additionally parse URL/line/column from eval frames + var geckoEval = /(\S+) line (\d+)(?: > eval line \d+)* > eval/i; + var chromeEval = /\((\S*)(?::(\d+))(?::(\d+))\)/; + var lines = ex.stack.split('\n'); + var stack = []; + var submatch; + var parts; + var element; + var reference = /^(.*) is undefined$/.exec(ex.message); - if (error.request) { - self._setBackoffState(error.request); + for (var i = 0, j = lines.length; i < j; ++i) { + if ((parts = chrome.exec(lines[i]))) { + var isNative = parts[2] && parts[2].indexOf('native') === 0; // start of line + var isEval = parts[2] && parts[2].indexOf('eval') === 0; // start of line + if (isEval && (submatch = chromeEval.exec(parts[2]))) { + // throw out eval line/column and use top-most line/column number + parts[2] = submatch[1]; // url + parts[3] = submatch[2]; // line + parts[4] = submatch[3]; // column } + element = { + url: !isNative ? parts[2] : null, + func: parts[1] || UNKNOWN_FUNCTION, + args: isNative ? [parts[2]] : [], + line: parts[3] ? +parts[3] : null, + column: parts[4] ? +parts[4] : null + }; + } else if ((parts = winjs.exec(lines[i]))) { + element = { + url: parts[2], + func: parts[1] || UNKNOWN_FUNCTION, + args: [], + line: +parts[3], + column: parts[4] ? +parts[4] : null + }; + } else if ((parts = gecko.exec(lines[i]))) { + var isEval = parts[3] && parts[3].indexOf(' > eval') > -1; + if (isEval && (submatch = geckoEval.exec(parts[3]))) { + // throw out eval line/column and use top-most line number + parts[3] = submatch[1]; + parts[4] = submatch[2]; + parts[5] = null; // no column when eval + } else if (i === 0 && !parts[5] && typeof ex.columnNumber !== 'undefined') { + // FireFox uses this awesome columnNumber property for its top frame + // Also note, Firefox's column number is 0-based and everything else expects 1-based, + // so adding 1 + // NOTE: this hack doesn't work if top-most frame is eval + stack[0].column = ex.columnNumber + 1; + } + element = { + url: parts[3], + func: parts[1] || UNKNOWN_FUNCTION, + args: parts[2] ? parts[2].split(',') : [], + line: parts[4] ? +parts[4] : null, + column: parts[5] ? +parts[5] : null + }; + } else { + continue; + } - self._triggerEvent('failure', { - data: data, - src: url - }); - - error = error || new Error('Raven send failed (no additional details provided)'); - callback && callback(error); + if (!element.func && element.line) { + element.func = UNKNOWN_FUNCTION; } - }); - }, - _makeRequest: function _makeRequest(opts) { - // Auth is intentionally sent as part of query string (NOT as custom HTTP header) to avoid preflight CORS requests - var url = opts.url + '?' + urlencode(opts.auth); - var evaluatedHeaders = null; - var evaluatedFetchParameters = {}; - if (opts.options.headers) { - evaluatedHeaders = this._evaluateHash(opts.options.headers); + stack.push(element); } - if (opts.options.fetchParameters) { - evaluatedFetchParameters = this._evaluateHash(opts.options.fetchParameters); + if (!stack.length) { + return null; } - if (supportsFetch()) { - evaluatedFetchParameters.body = stringify_1(opts.data); - var defaultFetchOptions = objectMerge({}, this._fetchDefaults); - var fetchOptions = objectMerge(defaultFetchOptions, evaluatedFetchParameters); + return { + name: ex.name, + message: ex.message, + url: getLocationHref(), + stack: stack + }; + } - if (evaluatedHeaders) { - fetchOptions.headers = evaluatedHeaders; - } + /** + * Adds information about the first frame to incomplete stack traces. + * Safari and IE require this to get complete data on the first frame. + * @param {Object.} stackInfo Stack trace information from + * one of the compute* methods. + * @param {string} url The URL of the script that caused an error. + * @param {(number|string)} lineNo The line number of the script that + * caused an error. + * @param {string=} message The error generated by the browser, which + * hopefully contains the name of the object that caused the error. + * @return {boolean} Whether or not the stack information was + * augmented. + */ + function augmentStackTraceWithInitialElement(stackInfo, url, lineNo, message) { + var initial = { + url: url, + line: lineNo + }; - return _window$1.fetch(url, fetchOptions).then(function (response) { - if (response.ok) { - opts.onSuccess && opts.onSuccess(); - } else { - var error = new Error('Sentry error code: ' + response.status); // It's called request only to keep compatibility with XHR interface - // and not add more redundant checks in setBackoffState method + if (initial.url && initial.line) { + stackInfo.incomplete = false; - error.request = response; - opts.onError && opts.onError(error); + if (!initial.func) { + initial.func = UNKNOWN_FUNCTION; + } + + if (stackInfo.stack.length > 0) { + if (stackInfo.stack[0].url === initial.url) { + if (stackInfo.stack[0].line === initial.line) { + return false; // already in stack trace + } else if ( + !stackInfo.stack[0].line && + stackInfo.stack[0].func === initial.func + ) { + stackInfo.stack[0].line = initial.line; + return false; + } } - })['catch'](function () { - opts.onError && opts.onError(new Error('Sentry error code: network unavailable')); - }); + } + + stackInfo.stack.unshift(initial); + stackInfo.partial = true; + return true; + } else { + stackInfo.incomplete = true; } - var request = _window$1.XMLHttpRequest && new _window$1.XMLHttpRequest(); - if (!request) return; // if browser doesn't support CORS (e.g. IE7), we are out of luck + return false; + } - var hasCORS = 'withCredentials' in request || typeof XDomainRequest !== 'undefined'; - if (!hasCORS) return; + /** + * Computes stack trace information by walking the arguments.caller + * chain at the time the exception occurred. This will cause earlier + * frames to be missed but is the only way to get any stack trace in + * Safari and IE. The top frame is restored by + * {@link augmentStackTraceWithInitialElement}. + * @param {Error} ex + * @return {?Object.} Stack trace information. + */ + function computeStackTraceByWalkingCallerChain(ex, depth) { + var functionName = /function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i, + stack = [], + funcs = {}, + recursion = false, + parts, + item, + source; + + for ( + var curr = computeStackTraceByWalkingCallerChain.caller; + curr && !recursion; + curr = curr.caller + ) { + if (curr === computeStackTrace || curr === TraceKit.report) { + // console.log('skipping internal function'); + continue; + } - if ('withCredentials' in request) { - request.onreadystatechange = function () { - if (request.readyState !== 4) { - return; - } else if (request.status === 200) { - opts.onSuccess && opts.onSuccess(); - } else if (opts.onError) { - var err = new Error('Sentry error code: ' + request.status); - err.request = request; - opts.onError(err); - } + item = { + url: null, + func: UNKNOWN_FUNCTION, + line: null, + column: null }; - } else { - request = new XDomainRequest(); // xdomainrequest cannot go http -> https (or vice versa), - // so always use protocol relative - url = url.replace(/^https?:/, ''); // onreadystatechange not supported by XDomainRequest + if (curr.name) { + item.func = curr.name; + } else if ((parts = functionName.exec(curr.toString()))) { + item.func = parts[1]; + } - if (opts.onSuccess) { - request.onload = opts.onSuccess; + if (typeof item.func === 'undefined') { + try { + item.func = parts.input.substring(0, parts.input.indexOf('{')); + } catch (e) {} } - if (opts.onError) { - request.onerror = function () { - var err = new Error('Sentry error code: XDomainRequest'); - err.request = request; - opts.onError(err); - }; + if (funcs['' + curr]) { + recursion = true; + } else { + funcs['' + curr] = true; } - } - request.open('POST', url); + stack.push(item); + } - if (evaluatedHeaders) { - each(evaluatedHeaders, function (key, value) { - request.setRequestHeader(key, value); - }); + if (depth) { + // console.log('depth is ' + depth); + // console.log('stack is ' + stack.length); + stack.splice(0, depth); } - request.send(stringify_1(opts.data)); - }, - _evaluateHash: function _evaluateHash(hash) { - var evaluated = {}; + var result = { + name: ex.name, + message: ex.message, + url: getLocationHref(), + stack: stack + }; + augmentStackTraceWithInitialElement( + result, + ex.sourceURL || ex.fileName, + ex.line || ex.lineNumber, + ex.message || ex.description + ); + return result; + } - for (var key in hash) { - if (hash.hasOwnProperty(key)) { - var value = hash[key]; - evaluated[key] = typeof value === 'function' ? value() : value; + /** + * Computes a stack trace for an exception. + * @param {Error} ex + * @param {(string|number)=} depth + */ + function computeStackTrace(ex, depth) { + var stack = null; + depth = depth == null ? 0 : +depth; + + try { + stack = computeStackTraceFromStackProp(ex); + if (stack) { + return stack; + } + } catch (e) { + if (TraceKit.debug) { + throw e; } } - return evaluated; - }, - _logDebug: function _logDebug(level) { - if (this._originalConsoleMethods[level] && this.debug) { - // In IE<10 console methods do not have their own 'apply' method - Function.prototype.apply.call(this._originalConsoleMethods[level], this._originalConsole, [].slice.call(arguments, 1)); - } - }, - _mergeContext: function _mergeContext(key, context) { - if (isUndefined(context)) { - delete this._globalContext[key]; - } else { - this._globalContext[key] = objectMerge(this._globalContext[key] || {}, context); + try { + stack = computeStackTraceByWalkingCallerChain(ex, depth + 1); + if (stack) { + return stack; + } + } catch (e) { + if (TraceKit.debug) { + throw e; + } } + return { + name: ex.name, + message: ex.message, + url: getLocationHref() + }; } -}; // Deprecations -Raven$1.prototype.setUser = Raven$1.prototype.setUserContext; -Raven$1.prototype.setReleaseContext = Raven$1.prototype.setRelease; -var raven = Raven$1; + computeStackTrace.augmentStackTraceWithInitialElement = augmentStackTraceWithInitialElement; + computeStackTrace.computeStackTraceFromStackProp = computeStackTraceFromStackProp; -/** - * Enforces a single instance of the Raven client, and the - * main entry point for Raven. If you are a consumer of the - * Raven library, you SHOULD load this file (vs raven.js). - **/ -// This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) + return computeStackTrace; +})(); -var _window = typeof window !== 'undefined' ? window : typeof commonjsGlobal !== 'undefined' ? commonjsGlobal : typeof self !== 'undefined' ? self : {}; +module.exports = TraceKit; -var _Raven = _window.Raven; -var Raven = new raven(); +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"7":7}],9:[function(_dereq_,module,exports){ /* - * Allow multiple versions of Raven to be installed. - * Strip Raven from the global context and returns the instance. - * - * @return {Raven} - */ - -Raven.noConflict = function () { - _window.Raven = _Raven; - return Raven; -}; - -Raven.afterLoad(); -var singleton = Raven; - -/** - * Angular.js plugin - * - * Provides an $exceptionHandler for Angular.js - */ + json-stringify-safe + Like JSON.stringify, but doesn't throw on circular references. -var wrappedCallback$1 = utils.wrappedCallback; // See https://github.com/angular/angular.js/blob/v1.4.7/src/minErr.js + Originally forked from https://github.com/isaacs/json-stringify-safe + version 5.0.1 on 3/8/2017 and modified to handle Errors serialization + and IE8 compatibility. Tests for this are in test/vendor. -var angularPattern = /^\[((?:[$a-zA-Z0-9]+:)?(?:[$a-zA-Z0-9]+))\] (.*?)\n?(\S+)$/; -var moduleName = 'ngRaven'; + ISC license: https://github.com/isaacs/json-stringify-safe/blob/master/LICENSE +*/ -function angularPlugin(Raven, angular) { - angular = angular || window.angular; - if (!angular) return; +exports = module.exports = stringify; +exports.getSerialize = serializer; - function RavenProvider() { - this.$get = ['$window', function ($window) { - return Raven; - }]; +function indexOf(haystack, needle) { + for (var i = 0; i < haystack.length; ++i) { + if (haystack[i] === needle) return i; } + return -1; +} - function ExceptionHandlerProvider($provide) { - $provide.decorator('$exceptionHandler', ['Raven', '$delegate', exceptionHandler]); - } +function stringify(obj, replacer, spaces, cycleReplacer) { + return JSON.stringify(obj, serializer(replacer, cycleReplacer), spaces); +} - function exceptionHandler(R, $delegate) { - return function (ex, cause) { - R.captureException(ex, { - extra: { - cause: cause - } - }); - $delegate(ex, cause); - }; +// https://github.com/ftlabs/js-abbreviate/blob/fa709e5f139e7770a71827b1893f22418097fbda/index.js#L95-L106 +function stringifyError(value) { + var err = { + // These properties are implemented as magical getters and don't show up in for in + stack: value.stack, + message: value.message, + name: value.name + }; + + for (var i in value) { + if (Object.prototype.hasOwnProperty.call(value, i)) { + err[i] = value[i]; + } } - angular.module(moduleName, []).provider('Raven', RavenProvider).config(['$provide', ExceptionHandlerProvider]); - Raven.setDataCallback(wrappedCallback$1(function (data) { - return angularPlugin._normalizeData(data); - })); + return err; } -angularPlugin._normalizeData = function (data) { - // We only care about mutating an exception - var exception = data.exception; +function serializer(replacer, cycleReplacer) { + var stack = []; + var keys = []; - if (exception) { - exception = exception.values[0]; - var matches = angularPattern.exec(exception.value); + if (cycleReplacer == null) { + cycleReplacer = function(key, value) { + if (stack[0] === value) { + return '[Circular ~]'; + } + return '[Circular ~.' + keys.slice(0, indexOf(stack, value)).join('.') + ']'; + }; + } - if (matches) { - // This type now becomes something like: $rootScope:inprog - exception.type = matches[1]; - exception.value = matches[2]; - data.message = exception.type + ': ' + exception.value; // auto set a new tag specifically for the angular error url + return function(key, value) { + if (stack.length > 0) { + var thisPos = indexOf(stack, this); + ~thisPos ? stack.splice(thisPos + 1) : stack.push(this); + ~thisPos ? keys.splice(thisPos, Infinity, key) : keys.push(key); - data.extra.angularDocs = matches[3].substr(0, 250); + if (~indexOf(stack, value)) { + value = cycleReplacer.call(this, key, value); + } + } else { + stack.push(value); } - } - - return data; -}; -angularPlugin.moduleName = moduleName; -var angular = angularPlugin; + return replacer == null + ? value instanceof Error ? stringifyError(value) : value + : replacer.call(this, key, value); + }; +} -/** - * console plugin +},{}],10:[function(_dereq_,module,exports){ +/* + * JavaScript MD5 + * https://github.com/blueimp/JavaScript-MD5 * - * Monkey patches console.* calls into Sentry messages with - * their appropriate log levels. (Experimental) + * Copyright 2011, Sebastian Tschan + * https://blueimp.net * - * Options: + * Licensed under the MIT license: + * https://opensource.org/licenses/MIT * - * `levels`: An array of levels (methods on `console`) to report to Sentry. - * Defaults to debug, info, warn, and error. + * Based on + * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message + * Digest Algorithm, as defined in RFC 1321. + * Version 2.2 Copyright (C) Paul Johnston 1999 - 2009 + * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet + * Distributed under the BSD License + * See http://pajhome.org.uk/crypt/md5 for more info. */ -var wrapConsoleMethod$1 = console$1.wrapMethod; +/* +* Add integers, wrapping at 2^32. This uses 16-bit operations internally +* to work around bugs in some JS interpreters. +*/ +function safeAdd(x, y) { + var lsw = (x & 0xffff) + (y & 0xffff); + var msw = (x >> 16) + (y >> 16) + (lsw >> 16); + return (msw << 16) | (lsw & 0xffff); +} -function consolePlugin(Raven, console, pluginOptions) { - console = console || window.console || {}; - pluginOptions = pluginOptions || {}; - var logLevels = pluginOptions.levels || ['debug', 'info', 'warn', 'error']; - if ('assert' in console) logLevels.push('assert'); +/* +* Bitwise rotate a 32-bit number to the left. +*/ +function bitRotateLeft(num, cnt) { + return (num << cnt) | (num >>> (32 - cnt)); +} - var callback = function callback(msg, data) { - Raven.captureMessage(msg, data); - }; +/* +* These functions implement the four basic operations the algorithm uses. +*/ +function md5cmn(q, a, b, x, s, t) { + return safeAdd(bitRotateLeft(safeAdd(safeAdd(a, q), safeAdd(x, t)), s), b); +} +function md5ff(a, b, c, d, x, s, t) { + return md5cmn((b & c) | (~b & d), a, b, x, s, t); +} +function md5gg(a, b, c, d, x, s, t) { + return md5cmn((b & d) | (c & ~d), a, b, x, s, t); +} +function md5hh(a, b, c, d, x, s, t) { + return md5cmn(b ^ c ^ d, a, b, x, s, t); +} +function md5ii(a, b, c, d, x, s, t) { + return md5cmn(c ^ (b | ~d), a, b, x, s, t); +} - var level = logLevels.pop(); +/* +* Calculate the MD5 of an array of little-endian words, and a bit length. +*/ +function binlMD5(x, len) { + /* append padding */ + x[len >> 5] |= 0x80 << (len % 32); + x[(((len + 64) >>> 9) << 4) + 14] = len; + + var i; + var olda; + var oldb; + var oldc; + var oldd; + var a = 1732584193; + var b = -271733879; + var c = -1732584194; + var d = 271733878; + + for (i = 0; i < x.length; i += 16) { + olda = a; + oldb = b; + oldc = c; + oldd = d; + + a = md5ff(a, b, c, d, x[i], 7, -680876936); + d = md5ff(d, a, b, c, x[i + 1], 12, -389564586); + c = md5ff(c, d, a, b, x[i + 2], 17, 606105819); + b = md5ff(b, c, d, a, x[i + 3], 22, -1044525330); + a = md5ff(a, b, c, d, x[i + 4], 7, -176418897); + d = md5ff(d, a, b, c, x[i + 5], 12, 1200080426); + c = md5ff(c, d, a, b, x[i + 6], 17, -1473231341); + b = md5ff(b, c, d, a, x[i + 7], 22, -45705983); + a = md5ff(a, b, c, d, x[i + 8], 7, 1770035416); + d = md5ff(d, a, b, c, x[i + 9], 12, -1958414417); + c = md5ff(c, d, a, b, x[i + 10], 17, -42063); + b = md5ff(b, c, d, a, x[i + 11], 22, -1990404162); + a = md5ff(a, b, c, d, x[i + 12], 7, 1804603682); + d = md5ff(d, a, b, c, x[i + 13], 12, -40341101); + c = md5ff(c, d, a, b, x[i + 14], 17, -1502002290); + b = md5ff(b, c, d, a, x[i + 15], 22, 1236535329); + + a = md5gg(a, b, c, d, x[i + 1], 5, -165796510); + d = md5gg(d, a, b, c, x[i + 6], 9, -1069501632); + c = md5gg(c, d, a, b, x[i + 11], 14, 643717713); + b = md5gg(b, c, d, a, x[i], 20, -373897302); + a = md5gg(a, b, c, d, x[i + 5], 5, -701558691); + d = md5gg(d, a, b, c, x[i + 10], 9, 38016083); + c = md5gg(c, d, a, b, x[i + 15], 14, -660478335); + b = md5gg(b, c, d, a, x[i + 4], 20, -405537848); + a = md5gg(a, b, c, d, x[i + 9], 5, 568446438); + d = md5gg(d, a, b, c, x[i + 14], 9, -1019803690); + c = md5gg(c, d, a, b, x[i + 3], 14, -187363961); + b = md5gg(b, c, d, a, x[i + 8], 20, 1163531501); + a = md5gg(a, b, c, d, x[i + 13], 5, -1444681467); + d = md5gg(d, a, b, c, x[i + 2], 9, -51403784); + c = md5gg(c, d, a, b, x[i + 7], 14, 1735328473); + b = md5gg(b, c, d, a, x[i + 12], 20, -1926607734); + + a = md5hh(a, b, c, d, x[i + 5], 4, -378558); + d = md5hh(d, a, b, c, x[i + 8], 11, -2022574463); + c = md5hh(c, d, a, b, x[i + 11], 16, 1839030562); + b = md5hh(b, c, d, a, x[i + 14], 23, -35309556); + a = md5hh(a, b, c, d, x[i + 1], 4, -1530992060); + d = md5hh(d, a, b, c, x[i + 4], 11, 1272893353); + c = md5hh(c, d, a, b, x[i + 7], 16, -155497632); + b = md5hh(b, c, d, a, x[i + 10], 23, -1094730640); + a = md5hh(a, b, c, d, x[i + 13], 4, 681279174); + d = md5hh(d, a, b, c, x[i], 11, -358537222); + c = md5hh(c, d, a, b, x[i + 3], 16, -722521979); + b = md5hh(b, c, d, a, x[i + 6], 23, 76029189); + a = md5hh(a, b, c, d, x[i + 9], 4, -640364487); + d = md5hh(d, a, b, c, x[i + 12], 11, -421815835); + c = md5hh(c, d, a, b, x[i + 15], 16, 530742520); + b = md5hh(b, c, d, a, x[i + 2], 23, -995338651); + + a = md5ii(a, b, c, d, x[i], 6, -198630844); + d = md5ii(d, a, b, c, x[i + 7], 10, 1126891415); + c = md5ii(c, d, a, b, x[i + 14], 15, -1416354905); + b = md5ii(b, c, d, a, x[i + 5], 21, -57434055); + a = md5ii(a, b, c, d, x[i + 12], 6, 1700485571); + d = md5ii(d, a, b, c, x[i + 3], 10, -1894986606); + c = md5ii(c, d, a, b, x[i + 10], 15, -1051523); + b = md5ii(b, c, d, a, x[i + 1], 21, -2054922799); + a = md5ii(a, b, c, d, x[i + 8], 6, 1873313359); + d = md5ii(d, a, b, c, x[i + 15], 10, -30611744); + c = md5ii(c, d, a, b, x[i + 6], 15, -1560198380); + b = md5ii(b, c, d, a, x[i + 13], 21, 1309151649); + a = md5ii(a, b, c, d, x[i + 4], 6, -145523070); + d = md5ii(d, a, b, c, x[i + 11], 10, -1120210379); + c = md5ii(c, d, a, b, x[i + 2], 15, 718787259); + b = md5ii(b, c, d, a, x[i + 9], 21, -343485551); + + a = safeAdd(a, olda); + b = safeAdd(b, oldb); + c = safeAdd(c, oldc); + d = safeAdd(d, oldd); + } + return [a, b, c, d]; +} - while (level) { - wrapConsoleMethod$1(console, level, callback); - level = logLevels.pop(); +/* +* Convert an array of little-endian words to a string +*/ +function binl2rstr(input) { + var i; + var output = ''; + var length32 = input.length * 32; + for (i = 0; i < length32; i += 8) { + output += String.fromCharCode((input[i >> 5] >>> (i % 32)) & 0xff); + } + return output; +} + +/* +* Convert a raw string to an array of little-endian words +* Characters >255 have their high-byte silently ignored. +*/ +function rstr2binl(input) { + var i; + var output = []; + output[(input.length >> 2) - 1] = undefined; + for (i = 0; i < output.length; i += 1) { + output[i] = 0; + } + var length8 = input.length * 8; + for (i = 0; i < length8; i += 8) { + output[i >> 5] |= (input.charCodeAt(i / 8) & 0xff) << (i % 32); + } + return output; +} + +/* +* Calculate the MD5 of a raw string +*/ +function rstrMD5(s) { + return binl2rstr(binlMD5(rstr2binl(s), s.length * 8)); +} + +/* +* Calculate the HMAC-MD5, of a key and some data (raw strings) +*/ +function rstrHMACMD5(key, data) { + var i; + var bkey = rstr2binl(key); + var ipad = []; + var opad = []; + var hash; + ipad[15] = opad[15] = undefined; + if (bkey.length > 16) { + bkey = binlMD5(bkey, key.length * 8); + } + for (i = 0; i < 16; i += 1) { + ipad[i] = bkey[i] ^ 0x36363636; + opad[i] = bkey[i] ^ 0x5c5c5c5c; + } + hash = binlMD5(ipad.concat(rstr2binl(data)), 512 + data.length * 8); + return binl2rstr(binlMD5(opad.concat(hash), 512 + 128)); +} + +/* +* Convert a raw string to a hex string +*/ +function rstr2hex(input) { + var hexTab = '0123456789abcdef'; + var output = ''; + var x; + var i; + for (i = 0; i < input.length; i += 1) { + x = input.charCodeAt(i); + output += hexTab.charAt((x >>> 4) & 0x0f) + hexTab.charAt(x & 0x0f); } + return output; } -var console$3 = consolePlugin; +/* +* Encode a string as utf-8 +*/ +function str2rstrUTF8(input) { + return unescape(encodeURIComponent(input)); +} -/* This file was generated by './scripts/generate-plugin-combinations.js'! */ +/* +* Take string arguments and return either raw or hex encoded strings +*/ +function rawMD5(s) { + return rstrMD5(str2rstrUTF8(s)); +} +function hexMD5(s) { + return rstr2hex(rawMD5(s)); +} +function rawHMACMD5(k, d) { + return rstrHMACMD5(str2rstrUTF8(k), str2rstrUTF8(d)); +} +function hexHMACMD5(k, d) { + return rstr2hex(rawHMACMD5(k, d)); +} -singleton.addPlugin(angular).addPlugin(console$3); -var angular_console = {}; +function md5(string, key, raw) { + if (!key) { + if (!raw) { + return hexMD5(string); + } + return rawMD5(string); + } + if (!raw) { + return hexHMACMD5(key, string); + } + return rawHMACMD5(key, string); +} -return angular_console; +module.exports = md5; -}))); +},{}]},{},[6,1,2])(6) +}); \ No newline at end of file diff --git a/dist/angular,console/raven.min.js b/dist/angular,console/raven.min.js index 08cd7ba5c5e5..cdd978a414a7 100644 --- a/dist/angular,console/raven.min.js +++ b/dist/angular,console/raven.min.js @@ -1,3 +1,4 @@ -/*! Raven.js 3.22.2 (1b6187b) | github.com/getsentry/raven-js */ -!function(a,b){"object"==typeof exports&&"undefined"!=typeof module?module.exports=b():"function"==typeof define&&define.amd?define(b):a.Raven=b()}(this,function(){"use strict";function a(a,b){return b={exports:{}},a(b,b.exports),b.exports}function b(a){return(b="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(a){return typeof a}:function(a){return a&&"function"==typeof Symbol&&a.constructor===Symbol&&a!==Symbol.prototype?"symbol":typeof a})(a)}function c(a){return"object"===b(a)&&null!==a}function d(a){switch({}.toString.call(a)){case"[object Error]":return!0;case"[object Exception]":return!0;case"[object DOMException]":return!0;default:return a instanceof Error}}function e(a){return l()&&"[object ErrorEvent]"==={}.toString.call(a)}function f(a){return void 0===a}function g(a){return"function"==typeof a}function h(a){return"[object Object]"===Object.prototype.toString.call(a)}function i(a){return"[object String]"===Object.prototype.toString.call(a)}function j(a){return"[object Array]"===Object.prototype.toString.call(a)}function k(a){if(!h(a))return!1;for(var b in a)if(a.hasOwnProperty(b))return!1;return!0}function l(){try{return new ErrorEvent(""),!0}catch(a){return!1}}function m(){if(!("fetch"in O))return!1;try{return new Headers,new Request(""),new Response,!0}catch(a){return!1}}function n(a){function b(b,c){var d=a(b)||b;return c?c(d)||d:d}return b}function o(a,b){var c,d;if(f(a.length))for(c in a)s(a,c)&&b.call(null,c,a[c]);else if(d=a.length)for(c=0;c ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function y(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&i(b))for(c=b.split(/\s+/),f=0;f=0;--b)l[b]===a&&l.splice(b,1)}function c(){g(),l=[]}function d(a,b){var c=null;if(!b||Q.collectWindowErrors){for(var d in l)if(l.hasOwnProperty(d))try{l[d].apply(null,[a].concat(S.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function e(a,b,c,e,f){var g=null,i=P.isErrorEvent(f)?f.error:f,k=P.isErrorEvent(a)?a.message:a;if(o)Q.computeStackTrace.augmentStackTraceWithInitialElement(o,b,c,k),h();else if(i&&P.isError(i))g=Q.computeStackTrace(i),d(g,!0);else{var l,m={url:b,line:c,column:e},n=void 0;if("[object String]"==={}.toString.call(k)){var l=k.match(U);l&&(n=l[1],k=l[2])}m.func=T,g={name:n,message:k,url:F(),stack:[m]},d(g,!0)}return!!j&&j.apply(this,arguments)}function f(){k||(j=R.onerror,R.onerror=e,k=!0)}function g(){k&&(R.onerror=j,k=!1,j=void 0)}function h(){var a=o,b=m;m=null,o=null,n=null,d.apply(null,[a,!1].concat(b))}function i(a,b){var c=S.call(arguments,1);if(o){if(n===a)return;h()}var d=Q.computeStackTrace(a);if(o=d,n=a,m=c,setTimeout(function(){n===a&&h()},d.incomplete?2e3:0),b!==!1)throw a}var j,k,l=[],m=null,n=null,o=null;return i.subscribe=a,i.unsubscribe=b,i.uninstall=c,i}(),Q.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,d,e=/^\s*at (.*?) ?\(((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,f=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|\[native).*?|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,g=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,h=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,i=/\((\S*)(?::(\d+))(?::(\d+))\)/,j=a.stack.split("\n"),k=[],l=(/^(.*) is undefined$/.exec(a.message),0),m=j.length;l eval")>-1;o&&(b=h.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==l||c[5]||"undefined"==typeof a.columnNumber||(k[0].column=a.columnNumber+1),d={url:c[3],func:c[1]||T,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}!d.func&&d.line&&(d.func=T),k.push(d)}return k.length?{name:a.name,message:a.message,url:F(),stack:k}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=T),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,e){for(var f,g,h=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,i=[],j={},k=!1,l=c.caller;l&&!k;l=l.caller)if(l!==d&&l!==Q.report){if(g={url:null,func:T,line:null,column:null},l.name?g.func=l.name:(f=h.exec(l.toString()))&&(g.func=f[1]),"undefined"==typeof g.func)try{g.func=f.input.substring(0,f.input.indexOf("{"))}catch(m){}j[""+l]?k=!0:j[""+l]=!0,i.push(g)}e&&i.splice(0,e);var n={name:a.name,message:a.message,url:F(),stack:i};return b(n,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),n}function d(b,d){var e=null;d=null==d?0:+d;try{if(e=a(b))return e}catch(f){if(Q.debug)throw f}try{if(e=c(b,d+1))return e}catch(f){if(Q.debug)throw f}return{name:b.name,message:b.message,url:F()}}return d.augmentStackTraceWithInitialElement=b,d.computeStackTraceFromStackProp=a,d}();var V=Q,W=a(function(a,b){function c(a,b){for(var c=0;c0){var i=c(d,this);~i?d.splice(i+1):d.push(this),~i?f.splice(i,1/0,g):f.push(g),~c(d,h)&&(h=b.call(this,g,h))}else d.push(h);return null==a?h instanceof Error?e(h):h:a.call(this,g,h)}}b=a.exports=d,b.getSerialize=f});G.prototype=new Error,G.prototype.constructor=G;var X=G,Y=function(a,b,c){var d=a[b],e=a;if(b in a){var f="warn"===b?"warning":b;a[b]=function(){var a=[].slice.call(arguments),g=P.safeJoin(a," "),h={level:f,logger:"console",extra:{arguments:a}};"assert"===b?a[0]===!1&&(g="Assertion failed: "+(P.safeJoin(a.slice(1)," ")||"console.assert"),h.extra.arguments=a.slice(1),c&&c(g,h)):c&&c(g,h),d&&Function.prototype.apply.call(d,e,a)}}},Z={wrapMethod:Y},$=P.isError,_=P.isObject,aa=P.isErrorEvent,ba=P.isUndefined,ca=P.isFunction,da=P.isString,ea=P.isArray,fa=P.isEmptyObject,ga=P.each,ha=P.objectMerge,ia=P.truncate,ja=P.objectFrozen,ka=P.hasKey,la=P.joinRegExp,ma=P.urlencode,na=P.uuid4,oa=P.htmlTreeAsString,pa=P.isSameException,qa=P.isSameStacktrace,ra=P.parseUrl,sa=P.fill,ta=P.supportsFetch,ua=Z.wrapMethod,va="source protocol user pass host port path".split(" "),wa=/^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/,xa="undefined"!=typeof window?window:"undefined"!=typeof M?M:"undefined"!=typeof self?self:{},ya=xa.document,za=xa.navigator;J.prototype={VERSION:"3.22.2",debug:!1,TraceKit:V,config:function(a,b){var c=this;if(c.i)return this.D("error","Error: Raven has already been configured"),c;if(!a)return c;var d=c.m;b&&ga(b,function(a,b){"tags"===a||"extra"===a||"user"===a?c.l[a]=b:d[a]=b}),c.setDSN(a),d.ignoreErrors.push(/^Script error\.?$/),d.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/),d.ignoreErrors=la(d.ignoreErrors),d.ignoreUrls=!!d.ignoreUrls.length&&la(d.ignoreUrls),d.whitelistUrls=!!d.whitelistUrls.length&&la(d.whitelistUrls),d.includePaths=la(d.includePaths),d.maxBreadcrumbs=Math.max(0,Math.min(d.maxBreadcrumbs||100,100));var e={xhr:!0,console:!0,dom:!0,location:!0,sentry:!0},f=d.autoBreadcrumbs;"[object Object]"==={}.toString.call(f)?f=ha(e,f):f!==!1&&(f=e),d.autoBreadcrumbs=f;var g={tryCatch:!0},h=d.instrument;return"[object Object]"==={}.toString.call(h)?h=ha(g,h):h!==!1&&(h=g),d.instrument=h,V.collectWindowErrors=!!d.collectWindowErrors,c},install:function(){var a=this;return a.isSetup()&&!a.p&&(V.report.subscribe(function(){a.E.apply(a,arguments)}),a.F(),a.m.instrument&&a.m.instrument.tryCatch&&a.G(),a.m.autoBreadcrumbs&&a.H(),a.I(),a.p=!0),Error.stackTraceLimit=a.m.stackTraceLimit,this},setDSN:function(a){var b=this,c=b.J(a),d=c.path.lastIndexOf("/"),e=c.path.substr(1,d);b.K=a,b.j=c.user,b.L=c.pass&&c.pass.substr(1),b.k=c.path.substr(d+1),b.i=b.M(c),b.N=b.i+"/"+e+"api/"+b.k+"/store/",this.A()},context:function(a,b,c){return ca(a)&&(c=b||[],b=a,a=void 0),this.wrap(a,b).apply(this,c)},wrap:function(a,b,c){function d(){var d=[],f=arguments.length,g=!a||a&&a.deep!==!1;for(c&&ca(c)&&c.apply(this,arguments);f--;)d[f]=g?e.wrap(a,arguments[f]):arguments[f];try{return b.apply(this,d)}catch(h){throw e.O(),e.captureException(h,a),h}}var e=this;if(ba(b)&&!ca(a))return a;if(ca(a)&&(b=a,a=void 0),!ca(b))return b;try{if(b.a)return b;if(b.P)return b.P}catch(f){return b}for(var g in b)ka(b,g)&&(d[g]=b[g]);return d.prototype=b.prototype,b.P=d,d.a=!0,d.b=b,d},uninstall:function(){return V.report.uninstall(),this.Q(),this.R(),this.S(),Error.stackTraceLimit=this.q,this.p=!1,this},captureException:function(a,b){b=ha({trimHeadFrames:0},b?b:{});var c=!$(a),d=!aa(a),e=aa(a)&&!a.error;if(c&&d||e)return this.captureMessage(a,ha(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}));aa(a)&&(a=a.error),this.f=a;try{var f=V.computeStackTrace(a);this.T(f,b)}catch(g){if(a!==g)throw g}return this},captureMessage:function(a,b){if(!this.m.ignoreErrors.test||!this.m.ignoreErrors.test(a)){b=b||{};var c,d=ha({message:a+""},b);try{throw new Error(a)}catch(e){c=e}c.name=null;var f=V.computeStackTrace(c),g=ea(f.stack)&&f.stack[1],h=g&&g.url||"";if((!this.m.ignoreUrls.test||!this.m.ignoreUrls.test(h))&&(!this.m.whitelistUrls.test||this.m.whitelistUrls.test(h))){if(this.m.stacktrace||b&&b.stacktrace){b=ha({fingerprint:a,trimHeadFrames:(b.trimHeadFrames||0)+1},b);var i=this.U(f,b);d.stacktrace={frames:i.reverse()}}return this.V(d),this}}},captureBreadcrumb:function(a){var b=ha({timestamp:H()/1e3},a);if(ca(this.m.breadcrumbCallback)){var c=this.m.breadcrumbCallback(b);if(_(c)&&!fa(c))b=c;else if(c===!1)return this}return this.w.push(b),this.w.length>this.m.maxBreadcrumbs&&this.w.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.t.push([a,b]),this.p&&this.I(),this},setUserContext:function(a){return this.l.user=a,this},setExtraContext:function(a){return this.W("extra",a),this},setTagsContext:function(a){return this.W("tags",a),this},clearContext:function(){return this.l={},this},getContext:function(){return JSON.parse(W(this.l))},setEnvironment:function(a){return this.m.environment=a,this},setRelease:function(a){return this.m.release=a,this},setDataCallback:function(a){var b=this.m.dataCallback;return this.m.dataCallback=I(b,a),this},setBreadcrumbCallback:function(a){var b=this.m.breadcrumbCallback;return this.m.breadcrumbCallback=I(b,a),this},setShouldSendCallback:function(a){var b=this.m.shouldSendCallback;return this.m.shouldSendCallback=I(b,a),this},setTransport:function(a){return this.m.transport=a,this},lastException:function(){return this.f},lastEventId:function(){return this.h},isSetup:function(){return!!this.c&&(!!this.i||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.D("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=xa.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(ya){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new X("Missing eventId");var c=a.dsn||this.K;if(!c)throw new X("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.l.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.M(this.J(c)),h=ya.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(ya.head||ya.body).appendChild(h)}},O:function(){var a=this;this.o+=1,setTimeout(function(){a.o-=1})},X:function(a,b){var c,d;if(this.d){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),ya.createEvent?(c=ya.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=ya.createEventObject(),c.eventType=a);for(d in b)ka(b,d)&&(c[d]=b[d]);if(ya.createEvent)ya.dispatchEvent(c);else try{ya.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},Y:function(a){var b=this;return function(c){if(b.Z=null,b.x!==c){b.x=c;var d;try{d=oa(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},$:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.Z;g||a.Y("input")(c),clearTimeout(g),a.Z=setTimeout(function(){a.Z=null},b)}}},_:function(a,b){var c=ra(this.y.href),d=ra(b),e=ra(a);this.z=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},F:function(){var a=this;a.aa=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.a?a.aa.apply(this.b,arguments):a.aa.apply(this,arguments)}},Q:function(){this.aa&&(Function.prototype.toString=this.aa)},G:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b._(b.z,c+""),a.apply(this,arguments)}};sa(history,"pushState",j,d),sa(history,"replaceState",j,d)}if(c.console&&"console"in xa&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};ga(["debug","info","warn","error","log"],function(a,b){ua(console,b,k)})}},R:function(){for(var a;this.v.length;){a=this.v.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},S:function(){for(var a in this.s)this.r[a]=this.s[a]},I:function(){var a=this;ga(this.t,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},J:function(a){var b=wa.exec(a),c={},d=7;try{for(;d--;)c[va[d]]=b[d]||""}catch(e){throw new X("Invalid DSN: "+a)}if(c.pass&&!this.m.allowSecretKey)throw new X("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},M:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},E:function(){this.o||this.T.apply(this,arguments)},T:function(a,b){var c=this.U(a,b);this.X("handle",{stackInfo:a,options:b}),this.ca(a.name,a.message,a.url,a.lineno,c,b)},U:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(ga(a.stack,function(b,e){var f=c.da(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.w,0)}),this.l.user&&(a.user=this.l.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||fa(a[b]))&&delete a[b]}),ca(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!fa(a)&&(!ca(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.ja()?void this.D("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random()this.l.maxBreadcrumbs&&this.v.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.s.push([a,b]),this.o&&this.G(),this},setUserContext:function(a){return this.k.user=a,this},setExtraContext:function(a){return this.$("extra",a),this},setTagsContext:function(a){return this.$("tags",a),this},clearContext:function(){return this.k={},this},getContext:function(){return JSON.parse(h(this.k))},setEnvironment:function(a){return this.l.environment=a,this},setRelease:function(a){return this.l.release=a,this},setDataCallback:function(a){var b=this.l.dataCallback;return this.l.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.l.breadcrumbCallback;return this.l.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.l.shouldSendCallback;return this.l.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.l.transport=a,this},lastException:function(){return this.e},lastEventId:function(){return this.g},isSetup:function(){return!!this.b&&(!!this.h||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.A("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=P.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(Q){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.I;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.k.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.K(this.H(c)),h=Q.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(Q.head||Q.body).appendChild(h)}},M:function(){var a=this;this.n+=1,setTimeout(function(){a.n-=1})},_:function(a,b){var c,d;if(this.c){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),Q.createEvent?(c=Q.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=Q.createEventObject(),c.eventType=a);for(d in b)y(b,d)&&(c[d]=b[d]);if(Q.createEvent)Q.dispatchEvent(c);else try{Q.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},aa:function(a){var b=this;return function(c){if(b.ba=null,b.w!==c){b.w=c;var d;try{d=C(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ca:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.ba;g||a.aa("input")(c),clearTimeout(g),a.ba=setTimeout(function(){a.ba=null},b)}}},da:function(a,b){var c=F(this.x.href),d=F(b),e=F(a);this.y=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},D:function(){var a=this;a.ea=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.N?a.ea.apply(this.P,arguments):a.ea.apply(this,arguments)}},R:function(){this.ea&&(Function.prototype.toString=this.ea)},E:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.da(b.y,c+""),a.apply(this,arguments)}};G(history,"pushState",j,d),G(history,"replaceState",j,d)}if(c.console&&"console"in P&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};u(["debug","info","warn","error","log"],function(a,b){M(console,b,k)})}},S:function(){for(var a;this.u.length;){a=this.u.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},T:function(){for(var a in this.r)this.q[a]=this.r[a]},G:function(){var a=this;u(this.s,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},H:function(a){var b=O.exec(a),c={},d=7;try{for(;d--;)c[N[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.l.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},K:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},B:function(){this.n||this.W.apply(this,arguments)},W:function(a,b){var c=this.Y(a,b);this._("handle",{stackInfo:a,options:b}),this.ga(a.name,a.message,a.url,a.lineno,c,b)},Y:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(u(a.stack,function(b,e){var f=c.ha(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.v,0)}),this.k.user&&(a.user=this.k.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),a=this.qa(a),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||t(a[b]))&&delete a[b]}),q(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!t(a)&&(!q(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.na()?void this.A("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function B(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&j(b))for(c=b.split(/\s+/),f=0;fc?M(a,b-1):d}function N(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?T:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function O(a,b){function c(a){return k(a)?a.map(function(a){return c(a)}):i(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!k(b)||k(b)&&0===b.length)return a;var d,e=w(b),f="********";try{d=JSON.parse(P(a))}catch(g){return a}return c(d)}var P=a(9),Q="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},R=3,S=51200,T=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isUndefined:g,isFunction:h,isPlainObject:i,isString:j,isArray:k,isEmptyObject:l,supportsErrorEvent:m,supportsFetch:n,supportsReferrerPolicy:o,supportsPromiseRejectionEvent:p,wrappedCallback:q,each:r,objectMerge:s,truncate:u,objectFrozen:t,hasKey:v,joinRegExp:w,urlencode:x,uuid4:z,htmlTreeAsString:A,htmlElementAsString:B,isSameException:E,isSameStacktrace:F,parseUrl:y,fill:G,safeJoin:H,serializeException:M,serializeKeysForMessage:N,sanitize:O}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{9:9}],8:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}var e=a(7),f={collectWindowErrors:!0,debug:!1},g="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},h=[].slice,i="?",j=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;f.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function k(a,b){var c=null;if(!b||f.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(h.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,g,h){var l=null,m=e.isErrorEvent(h)?h.error:h,n=e.isErrorEvent(a)?a.message:a;if(v)f.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&e.isError(m))l=f.computeStackTrace(m),k(l,!0);else{var p,r={url:b,line:c,column:g},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(j);p&&(s=p[1],n=p[2])}r.func=i,l={name:s,message:n,url:d(),stack:[r]},k(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=g.onerror,g.onerror=l,r=!0)}function n(){r&&(g.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,k.apply(null,[a,!1].concat(b))}function p(a,b){var c=h.call(arguments,1);if(v){if(u===a)return;o()}var d=f.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),f.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,e,f=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,g=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,h=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,j=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,k=/\((\S*)(?::(\d+))(?::(\d+))\)/,l=a.stack.split("\n"),m=[],n=(/^(.*) is undefined$/.exec(a.message),0),o=l.length;n eval")>-1;q&&(b=j.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==n||c[5]||"undefined"==typeof a.columnNumber||(m[0].column=a.columnNumber+1),e={url:c[3],func:c[1]||i,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}!e.func&&e.line&&(e.func=i),m.push(e)}return m.length?{name:a.name,message:a.message,url:d(),stack:m}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=i),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,g){for(var h,j,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==e&&o!==f.report){if(j={url:null,func:i,line:null,column:null},o.name?j.func=o.name:(h=k.exec(o.toString()))&&(j.func=h[1]),"undefined"==typeof j.func)try{j.func=h.input.substring(0,h.input.indexOf("{"))}catch(p){}m[""+o]?n=!0:m[""+o]=!0,l.push(j)}g&&l.splice(0,g);var q={name:a.name,message:a.message,url:d(),stack:l};return b(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),q}function e(b,e){var g=null;e=null==e?0:+e;try{if(g=a(b))return g}catch(h){if(f.debug)throw h}try{if(g=c(b,e+1))return g}catch(h){if(f.debug)throw h}return{name:b.name,message:b.message,url:d()}}return e.augmentStackTraceWithInitialElement=b,e.computeStackTraceFromStackProp=a,e}(),b.exports=f}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{7:7}],9:[function(a,b,c){ +function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}],10:[function(a,b,c){function d(a,b){var c=(65535&a)+(65535&b),d=(a>>16)+(b>>16)+(c>>16);return d<<16|65535&c}function e(a,b){return a<>>32-b}function f(a,b,c,f,g,h){return d(e(d(d(b,a),d(f,h)),g),c)}function g(a,b,c,d,e,g,h){return f(b&c|~b&d,a,b,e,g,h)}function h(a,b,c,d,e,g,h){return f(b&d|c&~d,a,b,e,g,h)}function i(a,b,c,d,e,g,h){return f(b^c^d,a,b,e,g,h)}function j(a,b,c,d,e,g,h){return f(c^(b|~d),a,b,e,g,h)}function k(a,b){a[b>>5]|=128<>>9<<4)+14]=b;var c,e,f,k,l,m=1732584193,n=-271733879,o=-1732584194,p=271733878;for(c=0;c>5]>>>b%32&255);return c}function m(a){var b,c=[];for(c[(a.length>>2)-1]=void 0,b=0;b>5]|=(255&a.charCodeAt(b/8))<16&&(e=k(e,8*a.length)),c=0;c<16;c+=1)f[c]=909522486^e[c],g[c]=1549556828^e[c];return d=k(f.concat(m(b)),512+8*b.length),l(k(g.concat(d),640))}function p(a){var b,c,d="0123456789abcdef",e="";for(c=0;c>>4&15)+d.charAt(15&b);return e}function q(a){return unescape(encodeURIComponent(a))}function r(a){return n(q(a))}function s(a){return p(r(a))}function t(a,b){return o(q(a),q(b))}function u(a,b){return p(t(a,b))}function v(a,b,c){return b?c?t(b,a):u(b,a):c?r(a):s(a)}b.exports=v},{}]},{},[6,1,2])(6)}); //# sourceMappingURL=raven.min.js.map \ No newline at end of file diff --git a/dist/angular,console/raven.min.js.map b/dist/angular,console/raven.min.js.map index 89dedb3a0e02..06f5212484de 100644 --- a/dist/angular,console/raven.min.js.map +++ b/dist/angular,console/raven.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["raven.js"],"names":["global","factory","exports","module","define","amd","Raven","this","createCommonjsModule","fn","_typeof","obj","Symbol","iterator","constructor","prototype","isObject$1","what","isError$1","value","toString","call","Error","isErrorEvent$1","supportsErrorEvent","isUndefined$1","isFunction$1","isPlainObject","Object","isString$1","isArray$1","isEmptyObject$1","_","hasOwnProperty","ErrorEvent","e","supportsFetch$1","_window$3","Headers","Request","Response","wrappedCallback","callback","dataCallback","data","original","normalizedData","each$1","i","j","length","hasKey$1","objectMerge$1","obj1","obj2","key","objectFrozen$1","isFrozen","truncate$1","str","max","substr","object","joinRegExp$1","patterns","pattern","sources","len","push","replace","source","RegExp","join","urlencode$1","o","pairs","encodeURIComponent","parseUrl$1","url","match","query","fragment","protocol","host","path","relative","uuid4$1","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","r","Math","random","htmlTreeAsString$1","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","reverse","className","classes","attr","tagName","toLowerCase","id","split","attrWhitelist","getAttribute","isOnlyOneTruthy","a","b","isBothUndefined","isSameException$1","ex1","ex2","values","type","stacktrace","isSameStacktrace$1","stack1","stack2","frames1","frames","frames2","filename","lineno","colno","fill$1","name","replacement","track","orig","__raven__","__orig__","safeJoin","input","delimiter","output","String","getLocationHref","document","location","href","RavenConfigError","message","now","Date","keepOriginalCallback","isFunction","Raven$1","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window$1","SENTRY_RELEASE","logger","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","_fetchDefaults","method","keepalive","referrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","console","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","_lastHref","_resetBackoff","angularPlugin","angular","RavenProvider","$get","$window","ExceptionHandlerProvider","$provide","decorator","exceptionHandler","R","$delegate","ex","cause","captureException","extra","window","moduleName","provider","config","setDataCallback","wrappedCallback$1","_normalizeData","consolePlugin","pluginOptions","logLevels","levels","msg","captureMessage","level","pop","wrapConsoleMethod$1","commonjsGlobal","self","_sPO","setPrototypeOf","p","__proto__","Reflect","construct","Parent","args","Class","Constructor","apply","bind","utils","isObject","isError","isErrorEvent","isString","isArray","isEmptyObject","supportsFetch","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","TraceKit","debug","_window$2","_slice","slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","report","subscribe","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","stack","isWindowError","exception","concat","arguments","inner","traceKitWindowOnError","lineNo","colNo","error","lastExceptionStack","computeStackTrace","augmentStackTraceWithInitialElement","processLastException","groups","line","column","undefined","func","_oldOnerrorHandler","_onErrorHandlerInstalled","onerror","_lastExceptionStack","_lastArgs","lastArgs","lastException","rethrow","setTimeout","incomplete","uninstall","computeStackTraceFromStackProp","submatch","parts","element","chrome","gecko","winjs","geckoEval","chromeEval","lines","exec","isNative","indexOf","isEval","columnNumber","stackInfo","initial","unshift","partial","computeStackTraceByWalkingCallerChain","depth","item","functionName","funcs","recursion","curr","caller","substring","result","sourceURL","fileName","lineNumber","description","tracekit","stringify_1","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","err","keys","thisPos","Infinity","getSerialize","configError","wrapMethod","originalConsoleLevel","originalConsole","sentryLevel","Function","console$1","wrapConsoleMethod","dsnKeys","dsnPattern","navigator","VERSION","dsn","options","_logDebug","globalOptions","setDSN","maxBreadcrumbs","min","autoBreadcrumbDefaults","xhr","dom","sentry","instrumentDefaults","tryCatch","install","isSetup","_handleOnErrorStackInfo","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","lastIndexOf","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","context","wrap","_before","wrapped","deep","_ignoreNextOnError","__raven_wrapper__","property","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","trimHeadFrames","isNotError","isNotErrorEvent","isErrorEventWithoutError","_handleStackInfo","test","initialCall","fileurl","fingerprint","_prepareFrames","_send","captureBreadcrumb","crumb","timestamp","breadcrumbCallback","shift","addPlugin","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","O","X","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","Y","evtName","_keypressTimeout","target","category","$","debounceDuration","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","from","to","parsedLoc","parsedTo","parsedFrom","F","_originalFunctionToString","Q","G","wrapTimeFn","t","Array","originalCallback","wrapEventTarget","proto","capture","secure","handleEvent","before","clickHandler","keypressHandler","_keypressEventHandler","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","H","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","onreadystatechange","origFetch","fetchInput","fetchData","then","response","addEventListener","attachEvent","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","builtin","S","I","installer","J","m","allowSecretKey","M","port","E","T","_triggerEvent","_processException","U","frame","_normalizeFrame","in_app","da","stackInfoUrl","normalized","function","ca","prefixedMessage","culprit","ea","request","Referer","breadcrumbs","_trimBreadcrumbs","fa","urlProp","urlProps","ga","httpData","userAgent","User-Agent","referrer","A","_backoffDuration","_backoffStart","ja","ka","current","last","la","_shouldBackoff","retry","get","getResponseHeader","parseInt","V","baseData","project","platform","_getHttpData","serverName","server_name","forEach","_sendProcessedPayload","na","ma","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","oa","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","onload","open","setRequestHeader","send","pa","hash","evaluated","D","W","setUser","setReleaseContext","raven","_window","_Raven","noConflict","singleton","angularPattern","matches","angularDocs","console$3","angular_console"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file +{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","angularPlugin","angular","RavenProvider","$get","$window","ExceptionHandlerProvider","$provide","decorator","exceptionHandler","R","$delegate","ex","cause","captureException","extra","moduleName","provider","config","setDataCallback","wrappedCallback","data","_normalizeData","angularPattern","exception","values","matches","exec","value","type","message","angularDocs","substr","addPlugin","6","7","2","consolePlugin","console","pluginOptions","logLevels","levels","push","callback","msg","captureMessage","level","pop","wrapConsoleMethod","wrapMethod","4","3","RavenConfigError","name","prototype","constructor","utils","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","safeJoin","logger","Function","apply","5","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","sanitizeKeys","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isError","isObject","isPlainObject","isErrorEvent","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","sanitize","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","dsn","options","_logDebug","globalOptions","key","setDSN","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","toString","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","context","func","undefined","wrap","_before","wrapped","deep","_ignoreNextOnError","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","U","event","reason","unhandledPromiseRejection","C","_promiseRejectionHandler","bind","addEventListener","Q","removeEventListener","trimHeadFrames","error","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","V","currentOptions","exKeys","Object","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","M","setTimeout","_","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","aa","evtName","_keypressTimeout","target","category","ca","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","da","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","D","_originalFunctionToString","E","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","F","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","S","builtin","T","G","installer","concat","H","str","m","allowSecretKey","K","port","B","W","stackInfo","_triggerEvent","_processException","lineno","Y","frame","_normalizeFrame","in_app","ha","stackInfoUrl","normalized","filename","line","colno","column","function","ga","prefixedMessage","culprit","ia","request","Referer","breadcrumbs","_trimBreadcrumbs","ja","urlProp","urlProps","ka","httpData","userAgent","User-Agent","referrer","z","_backoffDuration","_backoffStart","na","oa","current","last","pa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Z","baseData","project","platform","_getHttpData","serverName","server_name","_sanitizeData","forEach","random","_sendProcessedPayload","qa","sa","ra","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","ta","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","onerror","open","setRequestHeader","send","ua","hash","evaluated","A","$","setUser","setReleaseContext","10","8","9","RavenConstructor","_Raven","noConflict","Client","what","supportsErrorEvent","ErrorEvent","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","sanitizeMask","safeInput","o_O","getLocationHref","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","y","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","charAt","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","string","raw"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file diff --git a/dist/angular,ember,require,vue/raven.js b/dist/angular,ember,require,vue/raven.js index a1ccf6483ea1..6d601bdef95e 100644 --- a/dist/angular,ember,require,vue/raven.js +++ b/dist/angular,ember,require,vue/raven.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.22.2 (1b6187b) | github.com/getsentry/raven-js */ +/*! Raven.js 3.24.2 (540f32b) | github.com/getsentry/raven-js */ /* * Includes TraceKit @@ -10,3297 +10,4072 @@ * */ -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : - typeof define === 'function' && define.amd ? define(factory) : - (global.Raven = factory()); -}(this, (function () { 'use strict'; +(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.Raven = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o' : 'anonymous component') + + (vm._isVue && vm.$options.__file ? ' at ' + vm.$options.__file : '') + ); } -function isPlainObject(what) { - return Object.prototype.toString.call(what) === '[object Object]'; -} +function vuePlugin(Raven, Vue) { + Vue = Vue || window.Vue; -function isString$1(what) { - return Object.prototype.toString.call(what) === '[object String]'; -} + // quit if Vue isn't on the page + if (!Vue || !Vue.config) return; -function isArray$1(what) { - return Object.prototype.toString.call(what) === '[object Array]'; -} + var _oldOnError = Vue.config.errorHandler; + Vue.config.errorHandler = function VueErrorHandler(error, vm, info) { + var metaData = {}; -function isEmptyObject$1(what) { - if (!isPlainObject(what)) return false; + // vm and lifecycleHook are not always available + if (Object.prototype.toString.call(vm) === '[object Object]') { + metaData.componentName = formatComponentName(vm); + metaData.propsData = vm.$options.propsData; + } - for (var _ in what) { - if (what.hasOwnProperty(_)) { - return false; + if (typeof info !== 'undefined') { + metaData.lifecycleHook = info; } - } - return true; + Raven.captureException(error, { + extra: metaData + }); + + if (typeof _oldOnError === 'function') { + _oldOnError.call(this, error, vm, info); + } + }; } -function supportsErrorEvent() { - try { - new ErrorEvent(''); // eslint-disable-line no-new +module.exports = vuePlugin; - return true; - } catch (e) { - return false; - } +_dereq_(8).addPlugin(module.exports); +},{"8":8}],5:[function(_dereq_,module,exports){ +function RavenConfigError(message) { + this.name = 'RavenConfigError'; + this.message = message; } +RavenConfigError.prototype = new Error(); +RavenConfigError.prototype.constructor = RavenConfigError; -function supportsFetch$1() { - if (!('fetch' in _window$3)) return false; - - try { - new Headers(); // eslint-disable-line no-new +module.exports = RavenConfigError; - new Request(''); // eslint-disable-line no-new +},{}],6:[function(_dereq_,module,exports){ +var utils = _dereq_(9); - new Response(); // eslint-disable-line no-new +var wrapMethod = function(console, level, callback) { + var originalConsoleLevel = console[level]; + var originalConsole = console; - return true; - } catch (e) { - return false; + if (!(level in console)) { + return; } -} - -function wrappedCallback(callback) { - function dataCallback(data, original) { - var normalizedData = callback(data) || data; - - if (original) { - return original(normalizedData) || normalizedData; - } - return normalizedData; - } + var sentryLevel = level === 'warn' ? 'warning' : level; - return dataCallback; -} + console[level] = function() { + var args = [].slice.call(arguments); -function each$1(obj, callback) { - var i, j; + var msg = utils.safeJoin(args, ' '); + var data = {level: sentryLevel, logger: 'console', extra: {arguments: args}}; - if (isUndefined$1(obj.length)) { - for (i in obj) { - if (hasKey$1(obj, i)) { - callback.call(null, i, obj[i]); + if (level === 'assert') { + if (args[0] === false) { + // Default browsers message + msg = + 'Assertion failed: ' + (utils.safeJoin(args.slice(1), ' ') || 'console.assert'); + data.extra.arguments = args.slice(1); + callback && callback(msg, data); } + } else { + callback && callback(msg, data); } - } else { - j = obj.length; - if (j) { - for (i = 0; i < j; i++) { - callback.call(null, i, obj[i]); - } + // this fails for some browsers. :( + if (originalConsoleLevel) { + // IE9 doesn't allow calling apply on console functions directly + // See: https://stackoverflow.com/questions/5472938/does-ie9-support-console-log-and-is-it-a-real-function#answer-5473193 + Function.prototype.apply.call(originalConsoleLevel, originalConsole, args); } - } -} - -function objectMerge$1(obj1, obj2) { - if (!obj2) { - return obj1; - } + }; +}; - each$1(obj2, function (key, value) { - obj1[key] = value; - }); - return obj1; -} -/** - * This function is only used for react-native. - * react-native freezes object that have already been sent over the - * js bridge. We need this function in order to check if the object is frozen. - * So it's ok that objectFrozen returns false if Object.isFrozen is not - * supported because it's not relevant for other "platforms". See related issue: - * https://github.com/getsentry/react-native-sentry/issues/57 - */ +module.exports = { + wrapMethod: wrapMethod +}; +},{"9":9}],7:[function(_dereq_,module,exports){ +(function (global){ +/*global XDomainRequest:false */ -function objectFrozen$1(obj) { - if (!Object.isFrozen) { - return false; - } +var TraceKit = _dereq_(10); +var stringify = _dereq_(11); +var md5 = _dereq_(12); +var RavenConfigError = _dereq_(5); - return Object.isFrozen(obj); -} +var utils = _dereq_(9); +var isError = utils.isError; +var isObject = utils.isObject; +var isPlainObject = utils.isPlainObject; +var isErrorEvent = utils.isErrorEvent; +var isUndefined = utils.isUndefined; +var isFunction = utils.isFunction; +var isString = utils.isString; +var isArray = utils.isArray; +var isEmptyObject = utils.isEmptyObject; +var each = utils.each; +var objectMerge = utils.objectMerge; +var truncate = utils.truncate; +var objectFrozen = utils.objectFrozen; +var hasKey = utils.hasKey; +var joinRegExp = utils.joinRegExp; +var urlencode = utils.urlencode; +var uuid4 = utils.uuid4; +var htmlTreeAsString = utils.htmlTreeAsString; +var isSameException = utils.isSameException; +var isSameStacktrace = utils.isSameStacktrace; +var parseUrl = utils.parseUrl; +var fill = utils.fill; +var supportsFetch = utils.supportsFetch; +var supportsReferrerPolicy = utils.supportsReferrerPolicy; +var serializeKeysForMessage = utils.serializeKeysForMessage; +var serializeException = utils.serializeException; +var sanitize = utils.sanitize; -function truncate$1(str, max) { - return !max || str.length <= max ? str : str.substr(0, max) + "\u2026"; -} -/** - * hasKey, a better form of hasOwnProperty - * Example: hasKey(MainHostObject, property) === true/false - * - * @param {Object} host object to check property - * @param {string} key to check - */ +var wrapConsoleMethod = _dereq_(6).wrapMethod; +var dsnKeys = 'source protocol user pass host port path'.split(' '), + dsnPattern = /^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/; -function hasKey$1(object, key) { - return Object.prototype.hasOwnProperty.call(object, key); +function now() { + return +new Date(); } -function joinRegExp$1(patterns) { - // Combine an array of regular expressions and strings into one large regexp - // Be mad. - var sources = [], - i = 0, - len = patterns.length, - pattern; +// This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) +var _window = + typeof window !== 'undefined' + ? window + : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; +var _document = _window.document; +var _navigator = _window.navigator; - for (; i < len; i++) { - pattern = patterns[i]; +function keepOriginalCallback(original, callback) { + return isFunction(callback) + ? function(data) { + return callback(data, original); + } + : callback; +} - if (isString$1(pattern)) { - // If it's a string, we need to escape it - // Taken from: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions - sources.push(pattern.replace(/([.*+?^=!:${}()|\[\]\/\\])/g, '\\$1')); - } else if (pattern && pattern.source) { - // If it's a regexp already, we want to extract the source - sources.push(pattern.source); - } // Intentionally skip other cases +// First, check for JSON support +// If there is no JSON, we no-op the core features of Raven +// since JSON is required to encode the payload +function Raven() { + this._hasJSON = !!(typeof JSON === 'object' && JSON.stringify); + // Raven can run in contexts where there's no document (react-native) + this._hasDocument = !isUndefined(_document); + this._hasNavigator = !isUndefined(_navigator); + this._lastCapturedException = null; + this._lastData = null; + this._lastEventId = null; + this._globalServer = null; + this._globalKey = null; + this._globalProject = null; + this._globalContext = {}; + this._globalOptions = { + // SENTRY_RELEASE can be injected by https://github.com/getsentry/sentry-webpack-plugin + release: _window.SENTRY_RELEASE && _window.SENTRY_RELEASE.id, + logger: 'javascript', + ignoreErrors: [], + ignoreUrls: [], + whitelistUrls: [], + includePaths: [], + headers: null, + collectWindowErrors: true, + captureUnhandledRejections: true, + maxMessageLength: 0, + // By default, truncates URL values to 250 chars + maxUrlLength: 250, + stackTraceLimit: 50, + autoBreadcrumbs: true, + instrument: true, + sampleRate: 1, + sanitizeKeys: [] + }; + this._fetchDefaults = { + method: 'POST', + keepalive: true, + // Despite all stars in the sky saying that Edge supports old draft syntax, aka 'never', 'always', 'origin' and 'default + // https://caniuse.com/#feat=referrer-policy + // It doesn't. And it throw exception instead of ignoring this parameter... + // REF: https://github.com/getsentry/raven-js/issues/1233 + referrerPolicy: supportsReferrerPolicy() ? 'origin' : '' + }; + this._ignoreOnError = 0; + this._isRavenInstalled = false; + this._originalErrorStackTraceLimit = Error.stackTraceLimit; + // capture references to window.console *and* all its methods first + // before the console plugin has a chance to monkey patch + this._originalConsole = _window.console || {}; + this._originalConsoleMethods = {}; + this._plugins = []; + this._startTime = now(); + this._wrappedBuiltIns = []; + this._breadcrumbs = []; + this._lastCapturedEvent = null; + this._keypressTimeout; + this._location = _window.location; + this._lastHref = this._location && this._location.href; + this._resetBackoff(); + // eslint-disable-next-line guard-for-in + for (var method in this._originalConsole) { + this._originalConsoleMethods[method] = this._originalConsole[method]; } - - return new RegExp(sources.join('|'), 'i'); } -function urlencode$1(o) { - var pairs = []; - each$1(o, function (key, value) { - pairs.push(encodeURIComponent(key) + '=' + encodeURIComponent(value)); - }); - return pairs.join('&'); -} // borrowed from https://tools.ietf.org/html/rfc3986#appendix-B -// intentionally using regex and not href parsing trick because React Native and other -// environments where DOM might not be available +/* + * The core Raven singleton + * + * @this {Raven} + */ +Raven.prototype = { + // Hardcode version string so that raven source can be loaded directly via + // webpack (using a build step causes webpack #1617). Grunt verifies that + // this value matches package.json during build. + // See: https://github.com/getsentry/raven-js/issues/465 + VERSION: '3.24.2', -function parseUrl$1(url) { - if (typeof url !== 'string') return {}; - var match = url.match(/^(([^:\/?#]+):)?(\/\/([^\/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?$/); // coerce to undefined values to empty string so we don't get 'undefined' + debug: false, - var query = match[6] || ''; - var fragment = match[8] || ''; - return { - protocol: match[2], - host: match[4], - path: match[5], - relative: match[5] + query + fragment // everything minus origin + TraceKit: TraceKit, // alias to TraceKit - }; -} + /* + * Configure Raven with a DSN and extra options + * + * @param {string} dsn The public Sentry DSN + * @param {object} options Set of global options [optional] + * @return {Raven} + */ + config: function(dsn, options) { + var self = this; -function uuid4$1() { - var crypto = _window$3.crypto || _window$3.msCrypto; + if (self._globalServer) { + this._logDebug('error', 'Error: Raven has already been configured'); + return self; + } + if (!dsn) return self; - if (!isUndefined$1(crypto) && crypto.getRandomValues) { - // Use window.crypto API if available - // eslint-disable-next-line no-undef - var arr = new Uint16Array(8); - crypto.getRandomValues(arr); // set 4 in byte 7 + var globalOptions = self._globalOptions; - arr[3] = arr[3] & 0xfff | 0x4000; // set 2 most significant bits of byte 9 to '10' + // merge in options + if (options) { + each(options, function(key, value) { + // tags and extra are special and need to be put into context + if (key === 'tags' || key === 'extra' || key === 'user') { + self._globalContext[key] = value; + } else { + globalOptions[key] = value; + } + }); + } - arr[4] = arr[4] & 0x3fff | 0x8000; + self.setDSN(dsn); - var pad = function pad(num) { - var v = num.toString(16); + // "Script error." is hard coded into browsers for errors that it can't read. + // this is the result of a script being pulled in from an external domain and CORS. + globalOptions.ignoreErrors.push(/^Script error\.?$/); + globalOptions.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/); - while (v.length < 4) { - v = '0' + v; - } + // join regexp rules into one big rule + globalOptions.ignoreErrors = joinRegExp(globalOptions.ignoreErrors); + globalOptions.ignoreUrls = globalOptions.ignoreUrls.length + ? joinRegExp(globalOptions.ignoreUrls) + : false; + globalOptions.whitelistUrls = globalOptions.whitelistUrls.length + ? joinRegExp(globalOptions.whitelistUrls) + : false; + globalOptions.includePaths = joinRegExp(globalOptions.includePaths); + globalOptions.maxBreadcrumbs = Math.max( + 0, + Math.min(globalOptions.maxBreadcrumbs || 100, 100) + ); // default and hard limit is 100 - return v; + var autoBreadcrumbDefaults = { + xhr: true, + console: true, + dom: true, + location: true, + sentry: true }; - return pad(arr[0]) + pad(arr[1]) + pad(arr[2]) + pad(arr[3]) + pad(arr[4]) + pad(arr[5]) + pad(arr[6]) + pad(arr[7]); - } else { - // http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/2117523#2117523 - return 'xxxxxxxxxxxx4xxxyxxxxxxxxxxxxxxx'.replace(/[xy]/g, function (c) { - var r = Math.random() * 16 | 0, - v = c === 'x' ? r : r & 0x3 | 0x8; - return v.toString(16); - }); - } -} -/** - * Given a child DOM element, returns a query-selector statement describing that - * and its ancestors - * e.g. [HTMLElement] => body > div > input#foo.btn[name=baz] - * @param elem - * @returns {string} - */ - - -function htmlTreeAsString$1(elem) { - /* eslint no-extra-parens:0*/ - var MAX_TRAVERSE_HEIGHT = 5, - MAX_OUTPUT_LEN = 80, - out = [], - height = 0, - len = 0, - separator = ' > ', - sepLength = separator.length, - nextStr; + var autoBreadcrumbs = globalOptions.autoBreadcrumbs; + if ({}.toString.call(autoBreadcrumbs) === '[object Object]') { + autoBreadcrumbs = objectMerge(autoBreadcrumbDefaults, autoBreadcrumbs); + } else if (autoBreadcrumbs !== false) { + autoBreadcrumbs = autoBreadcrumbDefaults; + } + globalOptions.autoBreadcrumbs = autoBreadcrumbs; - while (elem && height++ < MAX_TRAVERSE_HEIGHT) { - nextStr = htmlElementAsString(elem); // bail out if - // - nextStr is the 'html' element - // - the length of the string that would be created exceeds MAX_OUTPUT_LEN - // (ignore this limit if we are on the first iteration) + var instrumentDefaults = { + tryCatch: true + }; - if (nextStr === 'html' || height > 1 && len + out.length * sepLength + nextStr.length >= MAX_OUTPUT_LEN) { - break; + var instrument = globalOptions.instrument; + if ({}.toString.call(instrument) === '[object Object]') { + instrument = objectMerge(instrumentDefaults, instrument); + } else if (instrument !== false) { + instrument = instrumentDefaults; } + globalOptions.instrument = instrument; - out.push(nextStr); - len += nextStr.length; - elem = elem.parentNode; - } - - return out.reverse().join(separator); -} -/** - * Returns a simple, query-selector representation of a DOM element - * e.g. [HTMLElement] => input#foo.btn[name=baz] - * @param HTMLElement - * @returns {string} - */ + TraceKit.collectWindowErrors = !!globalOptions.collectWindowErrors; + // return for chaining + return self; + }, -function htmlElementAsString(elem) { - var out = [], - className, - classes, - key, - attr, - i; + /* + * Installs a global window.onerror error handler + * to capture and report uncaught exceptions. + * At this point, install() is required to be called due + * to the way TraceKit is set up. + * + * @return {Raven} + */ + install: function() { + var self = this; + if (self.isSetup() && !self._isRavenInstalled) { + TraceKit.report.subscribe(function() { + self._handleOnErrorStackInfo.apply(self, arguments); + }); - if (!elem || !elem.tagName) { - return ''; - } + if (self._globalOptions.captureUnhandledRejections) { + self._attachPromiseRejectionHandler(); + } - out.push(elem.tagName.toLowerCase()); + self._patchFunctionToString(); - if (elem.id) { - out.push('#' + elem.id); - } + if (self._globalOptions.instrument && self._globalOptions.instrument.tryCatch) { + self._instrumentTryCatch(); + } - className = elem.className; + if (self._globalOptions.autoBreadcrumbs) self._instrumentBreadcrumbs(); - if (className && isString$1(className)) { - classes = className.split(/\s+/); + // Install all of the plugins + self._drainPlugins(); - for (i = 0; i < classes.length; i++) { - out.push('.' + classes[i]); + self._isRavenInstalled = true; } - } - var attrWhitelist = ['type', 'name', 'title', 'alt']; + Error.stackTraceLimit = self._globalOptions.stackTraceLimit; + return this; + }, - for (i = 0; i < attrWhitelist.length; i++) { - key = attrWhitelist[i]; - attr = elem.getAttribute(key); + /* + * Set the DSN (can be called multiple time unlike config) + * + * @param {string} dsn The public Sentry DSN + */ + setDSN: function(dsn) { + var self = this, + uri = self._parseDSN(dsn), + lastSlash = uri.path.lastIndexOf('/'), + path = uri.path.substr(1, lastSlash); - if (attr) { - out.push('[' + key + '="' + attr + '"]'); - } - } + self._dsn = dsn; + self._globalKey = uri.user; + self._globalSecret = uri.pass && uri.pass.substr(1); + self._globalProject = uri.path.substr(lastSlash + 1); - return out.join(''); -} -/** - * Returns true if either a OR b is truthy, but not both - */ + self._globalServer = self._getGlobalServer(uri); + self._globalEndpoint = + self._globalServer + '/' + path + 'api/' + self._globalProject + '/store/'; -function isOnlyOneTruthy(a, b) { - return !!(!!a ^ !!b); -} -/** - * Returns true if both parameters are undefined - */ + // Reset backoff state since we may be pointing at a + // new project/server + this._resetBackoff(); + }, + /* + * Wrap code within a context so Raven can capture errors + * reliably across domains that is executed immediately. + * + * @param {object} options A specific set of options for this context [optional] + * @param {function} func The callback to be immediately executed within the context + * @param {array} args An array of arguments to be called with the callback [optional] + */ + context: function(options, func, args) { + if (isFunction(options)) { + args = func || []; + func = options; + options = undefined; + } -function isBothUndefined(a, b) { - return isUndefined$1(a) && isUndefined$1(b); -} -/** - * Returns true if the two input exception interfaces have the same content - */ - - -function isSameException$1(ex1, ex2) { - if (isOnlyOneTruthy(ex1, ex2)) return false; - ex1 = ex1.values[0]; - ex2 = ex2.values[0]; - if (ex1.type !== ex2.type || ex1.value !== ex2.value) return false; // in case both stacktraces are undefined, we can't decide so default to false - - if (isBothUndefined(ex1.stacktrace, ex2.stacktrace)) return false; - return isSameStacktrace$1(ex1.stacktrace, ex2.stacktrace); -} -/** - * Returns true if the two input stack trace interfaces have the same content - */ - - -function isSameStacktrace$1(stack1, stack2) { - if (isOnlyOneTruthy(stack1, stack2)) return false; - var frames1 = stack1.frames; - var frames2 = stack2.frames; // Exit early if frame count differs - - if (frames1.length !== frames2.length) return false; // Iterate through every frame; bail out if anything differs - - var a, b; - - for (var i = 0; i < frames1.length; i++) { - a = frames1[i]; - b = frames2[i]; - if (a.filename !== b.filename || a.lineno !== b.lineno || a.colno !== b.colno || a['function'] !== b['function']) return false; - } - - return true; -} -/** - * Polyfill a method - * @param obj object e.g. `document` - * @param name method name present on object e.g. `addEventListener` - * @param replacement replacement function - * @param track {optional} record instrumentation to an array - */ - - -function fill$1(obj, name, replacement, track) { - var orig = obj[name]; - obj[name] = replacement(orig); - obj[name].__raven__ = true; - obj[name].__orig__ = orig; + return this.wrap(options, func).apply(this, args); + }, - if (track) { - track.push([obj, name, orig]); - } -} -/** - * Join values in array - * @param input array of values to be joined together - * @param delimiter string to be placed in-between values - * @returns {string} - */ + /* + * Wrap code within a context and returns back a new function to be executed + * + * @param {object} options A specific set of options for this context [optional] + * @param {function} func The function to be wrapped in a new context + * @param {function} func A function to call before the try/catch wrapper [optional, private] + * @return {function} The newly wrapped functions with a context + */ + wrap: function(options, func, _before) { + var self = this; + // 1 argument has been passed, and it's not a function + // so just return it + if (isUndefined(func) && !isFunction(options)) { + return options; + } + // options is optional + if (isFunction(options)) { + func = options; + options = undefined; + } -function safeJoin(input, delimiter) { - if (!isArray$1(input)) return ''; - var output = []; + // At this point, we've passed along 2 arguments, and the second one + // is not a function either, so we'll just return the second argument. + if (!isFunction(func)) { + return func; + } - for (var i = 0; i < input.length; i++) { + // We don't wanna wrap it twice! try { - output.push(String(input[i])); + if (func.__raven__) { + return func; + } + + // If this has already been wrapped in the past, return that + if (func.__raven_wrapper__) { + return func.__raven_wrapper__; + } } catch (e) { - output.push('[value cannot be serialized]'); + // Just accessing custom props in some Selenium environments + // can cause a "Permission denied" exception (see raven-js#495). + // Bail on wrapping and return the function as-is (defers to window.onerror). + return func; } - } - - return output.join(delimiter); -} -var utils = { - isObject: isObject$1, - isError: isError$1, - isErrorEvent: isErrorEvent$1, - isUndefined: isUndefined$1, - isFunction: isFunction$1, - isPlainObject: isPlainObject, - isString: isString$1, - isArray: isArray$1, - isEmptyObject: isEmptyObject$1, - supportsErrorEvent: supportsErrorEvent, - supportsFetch: supportsFetch$1, - wrappedCallback: wrappedCallback, - each: each$1, - objectMerge: objectMerge$1, - truncate: truncate$1, - objectFrozen: objectFrozen$1, - hasKey: hasKey$1, - joinRegExp: joinRegExp$1, - urlencode: urlencode$1, - uuid4: uuid4$1, - htmlTreeAsString: htmlTreeAsString$1, - htmlElementAsString: htmlElementAsString, - isSameException: isSameException$1, - isSameStacktrace: isSameStacktrace$1, - parseUrl: parseUrl$1, - fill: fill$1, - safeJoin: safeJoin -}; + function wrapped() { + var args = [], + i = arguments.length, + deep = !options || (options && options.deep !== false); -/* - TraceKit - Cross brower stack traces + if (_before && isFunction(_before)) { + _before.apply(this, arguments); + } - This was originally forked from github.com/occ/TraceKit, but has since been - largely re-written and is now maintained as part of raven-js. Tests for - this are in test/vendor. + // Recursively wrap all of a function's arguments that are + // functions themselves. + while (i--) args[i] = deep ? self.wrap(options, arguments[i]) : arguments[i]; - MIT license -*/ + try { + // Attempt to invoke user-land function + // NOTE: If you are a Sentry user, and you are seeing this stack frame, it + // means Raven caught an error invoking your application code. This is + // expected behavior and NOT indicative of a bug with Raven.js. + return func.apply(this, args); + } catch (e) { + self._ignoreNextOnError(); + self.captureException(e, options); + throw e; + } + } -var TraceKit = { - collectWindowErrors: true, - debug: false -}; // This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) + // copy over properties of the old function + for (var property in func) { + if (hasKey(func, property)) { + wrapped[property] = func[property]; + } + } + wrapped.prototype = func.prototype; -var _window$2 = typeof window !== 'undefined' ? window : typeof commonjsGlobal !== 'undefined' ? commonjsGlobal : typeof self !== 'undefined' ? self : {}; // global reference to slice + func.__raven_wrapper__ = wrapped; + // Signal that this function has been wrapped/filled already + // for both debugging and to prevent it to being wrapped/filled twice + wrapped.__raven__ = true; + wrapped.__orig__ = func; + return wrapped; + }, -var _slice = [].slice; -var UNKNOWN_FUNCTION = '?'; // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error#Error_types + /** + * Uninstalls the global error handler. + * + * @return {Raven} + */ + uninstall: function() { + TraceKit.report.uninstall(); -var ERROR_TYPES_RE = /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/; + this._detachPromiseRejectionHandler(); + this._unpatchFunctionToString(); + this._restoreBuiltIns(); + this._restoreConsole(); -function getLocationHref() { - if (typeof document === 'undefined' || document.location == null) return ''; - return document.location.href; -} -/** - * TraceKit.report: cross-browser processing of unhandled exceptions - * - * Syntax: - * TraceKit.report.subscribe(function(stackInfo) { ... }) - * TraceKit.report.unsubscribe(function(stackInfo) { ... }) - * TraceKit.report(exception) - * try { ...code... } catch(ex) { TraceKit.report(ex); } - * - * Supports: - * - Firefox: full stack trace with line numbers, plus column number - * on top frame; column number is not guaranteed - * - Opera: full stack trace with line and column numbers - * - Chrome: full stack trace with line and column numbers - * - Safari: line and column number for the top frame only; some frames - * may be missing, and column number is not guaranteed - * - IE: line and column number for the top frame only; some frames - * may be missing, and column number is not guaranteed - * - * In theory, TraceKit should work on all of the following versions: - * - IE5.5+ (only 8.0 tested) - * - Firefox 0.9+ (only 3.5+ tested) - * - Opera 7+ (only 10.50 tested; versions 9 and earlier may require - * Exceptions Have Stacktrace to be enabled in opera:config) - * - Safari 3+ (only 4+ tested) - * - Chrome 1+ (only 5+ tested) - * - Konqueror 3.5+ (untested) - * - * Requires TraceKit.computeStackTrace. - * - * Tries to catch all unhandled exceptions and report them to the - * subscribed handlers. Please note that TraceKit.report will rethrow the - * exception. This is REQUIRED in order to get a useful stack trace in IE. - * If the exception does not reach the top of the browser, you will only - * get a stack trace from the point where TraceKit.report was called. - * - * Handlers receive a stackInfo object as described in the - * TraceKit.computeStackTrace docs. - */ + Error.stackTraceLimit = this._originalErrorStackTraceLimit; + this._isRavenInstalled = false; + return this; + }, -TraceKit.report = function reportModuleWrapper() { - var handlers = [], - lastArgs = null, - lastException = null, - lastExceptionStack = null; /** - * Add a crash handler. - * @param {Function} handler - */ + * Callback used for `unhandledrejection` event + * + * @param {PromiseRejectionEvent} event An object containing + * promise: the Promise that was rejected + * reason: the value with which the Promise was rejected + * @return void + */ + _promiseRejectionHandler: function(event) { + this._logDebug('debug', 'Raven caught unhandled promise rejection:', event); + this.captureException(event.reason, { + extra: { + unhandledPromiseRejection: true + } + }); + }, - function subscribe(handler) { - installGlobalHandler(); - handlers.push(handler); - } /** - * Remove a crash handler. - * @param {Function} handler - */ - + * Installs the global promise rejection handler. + * + * @return {raven} + */ + _attachPromiseRejectionHandler: function() { + this._promiseRejectionHandler = this._promiseRejectionHandler.bind(this); + _window.addEventListener && + _window.addEventListener('unhandledrejection', this._promiseRejectionHandler); + return this; + }, - function unsubscribe(handler) { - for (var i = handlers.length - 1; i >= 0; --i) { - if (handlers[i] === handler) { - handlers.splice(i, 1); - } - } - } /** - * Remove all crash handlers. - */ - + * Uninstalls the global promise rejection handler. + * + * @return {raven} + */ + _detachPromiseRejectionHandler: function() { + _window.removeEventListener && + _window.removeEventListener('unhandledrejection', this._promiseRejectionHandler); + return this; + }, - function unsubscribeAll() { - uninstallGlobalHandler(); - handlers = []; - } /** - * Dispatch stack information to all handlers. - * @param {Object.} stack - */ + * Manually capture an exception and send it over to Sentry + * + * @param {error} ex An exception to be logged + * @param {object} options A specific set of options for this error [optional] + * @return {Raven} + */ + captureException: function(ex, options) { + options = objectMerge({trimHeadFrames: 0}, options ? options : {}); + + if (isErrorEvent(ex) && ex.error) { + // If it is an ErrorEvent with `error` property, extract it to get actual Error + ex = ex.error; + } else if (isError(ex)) { + // we have a real Error object + ex = ex; + } else if (isPlainObject(ex)) { + // If it is plain Object, serialize it manually and extract options + // This will allow us to group events based on top-level keys + // which is much better than creating new group when any key/value change + options = this._getCaptureExceptionOptionsFromPlainObject(options, ex); + ex = new Error(options.message); + } else { + // If none of previous checks were valid, then it means that + // it's not a plain Object + // it's not a valid ErrorEvent (one with an error property) + // it's not an Error + // So bail out and capture it as a simple message: + return this.captureMessage( + ex, + objectMerge(options, { + stacktrace: true, // if we fall back to captureMessage, default to attempting a new trace + trimHeadFrames: options.trimHeadFrames + 1 + }) + ); + } + + // Store the raw exception object for potential debugging and introspection + this._lastCapturedException = ex; + + // TraceKit.report will re-raise any exception passed to it, + // which means you have to wrap it in try/catch. Instead, we + // can wrap it here and only re-raise if TraceKit.report + // raises an exception different from the one we asked to + // report on. + try { + var stack = TraceKit.computeStackTrace(ex); + this._handleStackInfo(stack, options); + } catch (ex1) { + if (ex !== ex1) { + throw ex1; + } + } + return this; + }, - function notifyHandlers(stack, isWindowError) { - var exception = null; + _getCaptureExceptionOptionsFromPlainObject: function(currentOptions, ex) { + var exKeys = Object.keys(ex).sort(); + var options = objectMerge(currentOptions, { + message: + 'Non-Error exception captured with keys: ' + serializeKeysForMessage(exKeys), + fingerprint: [md5(exKeys)], + extra: currentOptions.extra || {} + }); + options.extra.__serialized__ = serializeException(ex); - if (isWindowError && !TraceKit.collectWindowErrors) { - return; - } + return options; + }, - for (var i in handlers) { - if (handlers.hasOwnProperty(i)) { - try { - handlers[i].apply(null, [stack].concat(_slice.call(arguments, 2))); - } catch (inner) { - exception = inner; - } - } + /* + * Manually send a message to Sentry + * + * @param {string} msg A plain message to be captured in Sentry + * @param {object} options A specific set of options for this message [optional] + * @return {Raven} + */ + captureMessage: function(msg, options) { + // config() automagically converts ignoreErrors from a list to a RegExp so we need to test for an + // early call; we'll error on the side of logging anything called before configuration since it's + // probably something you should see: + if ( + !!this._globalOptions.ignoreErrors.test && + this._globalOptions.ignoreErrors.test(msg) + ) { + return; } - if (exception) { - throw exception; + options = options || {}; + msg = msg + ''; // Make sure it's actually a string + + var data = objectMerge( + { + message: msg + }, + options + ); + + var ex; + // Generate a "synthetic" stack trace from this point. + // NOTE: If you are a Sentry user, and you are seeing this stack frame, it is NOT indicative + // of a bug with Raven.js. Sentry generates synthetic traces either by configuration, + // or if it catches a thrown object without a "stack" property. + try { + throw new Error(msg); + } catch (ex1) { + ex = ex1; } - } - var _oldOnerrorHandler, _onErrorHandlerInstalled; - /** - * Ensures all global unhandled exceptions are recorded. - * Supported by Gecko and IE. - * @param {string} msg Error message. - * @param {string} url URL of script that generated the exception. - * @param {(number|string)} lineNo The line number at which the error - * occurred. - * @param {?(number|string)} colNo The column number at which the error - * occurred. - * @param {?Error} ex The actual Error object. - */ + // null exception name so `Error` isn't prefixed to msg + ex.name = null; + var stack = TraceKit.computeStackTrace(ex); + // stack[0] is `throw new Error(msg)` call itself, we are interested in the frame that was just before that, stack[1] + var initialCall = isArray(stack.stack) && stack.stack[1]; - function traceKitWindowOnError(msg, url, lineNo, colNo, ex) { - var stack = null; // If 'ex' is ErrorEvent, get real Error from inside + // if stack[1] is `Raven.captureException`, it means that someone passed a string to it and we redirected that call + // to be handled by `captureMessage`, thus `initialCall` is the 3rd one, not 2nd + // initialCall => captureException(string) => captureMessage(string) + if (initialCall && initialCall.func === 'Raven.captureException') { + initialCall = stack.stack[2]; + } - var exception = utils.isErrorEvent(ex) ? ex.error : ex; // If 'msg' is ErrorEvent, get real message from inside + var fileurl = (initialCall && initialCall.url) || ''; - var message = utils.isErrorEvent(msg) ? msg.message : msg; + if ( + !!this._globalOptions.ignoreUrls.test && + this._globalOptions.ignoreUrls.test(fileurl) + ) { + return; + } - if (lastExceptionStack) { - TraceKit.computeStackTrace.augmentStackTraceWithInitialElement(lastExceptionStack, url, lineNo, message); - processLastException(); - } else if (exception && utils.isError(exception)) { - // non-string `exception` arg; attempt to extract stack trace - // New chrome and blink send along a real error object - // Let's just report that like a normal error. - // See: https://mikewest.org/2013/08/debugging-runtime-errors-with-window-onerror - stack = TraceKit.computeStackTrace(exception); - notifyHandlers(stack, true); - } else { - var location = { - url: url, - line: lineNo, - column: colNo - }; - var name = undefined; - var groups; + if ( + !!this._globalOptions.whitelistUrls.test && + !this._globalOptions.whitelistUrls.test(fileurl) + ) { + return; + } - if ({}.toString.call(message) === '[object String]') { - var groups = message.match(ERROR_TYPES_RE); + if (this._globalOptions.stacktrace || (options && options.stacktrace)) { + // fingerprint on msg, not stack trace (legacy behavior, could be revisited) + data.fingerprint = data.fingerprint == null ? msg : data.fingerprint; - if (groups) { - name = groups[1]; - message = groups[2]; - } - } + options = objectMerge( + { + trimHeadFrames: 0 + }, + options + ); + // Since we know this is a synthetic trace, the top frame (this function call) + // MUST be from Raven.js, so mark it for trimming + // We add to the trim counter so that callers can choose to trim extra frames, such + // as utility functions. + options.trimHeadFrames += 1; - location.func = UNKNOWN_FUNCTION; - stack = { - name: name, - message: message, - url: getLocationHref(), - stack: [location] + var frames = this._prepareFrames(stack, options); + data.stacktrace = { + // Sentry expects frames oldest to newest + frames: frames.reverse() }; - notifyHandlers(stack, true); } - if (_oldOnerrorHandler) { - return _oldOnerrorHandler.apply(this, arguments); + // Make sure that fingerprint is always wrapped in an array + if (data.fingerprint) { + data.fingerprint = isArray(data.fingerprint) + ? data.fingerprint + : [data.fingerprint]; } - return false; - } + // Fire away! + this._send(data); - function installGlobalHandler() { - if (_onErrorHandlerInstalled) { - return; + return this; + }, + + captureBreadcrumb: function(obj) { + var crumb = objectMerge( + { + timestamp: now() / 1000 + }, + obj + ); + + if (isFunction(this._globalOptions.breadcrumbCallback)) { + var result = this._globalOptions.breadcrumbCallback(crumb); + + if (isObject(result) && !isEmptyObject(result)) { + crumb = result; + } else if (result === false) { + return this; + } } - _oldOnerrorHandler = _window$2.onerror; - _window$2.onerror = traceKitWindowOnError; - _onErrorHandlerInstalled = true; - } + this._breadcrumbs.push(crumb); + if (this._breadcrumbs.length > this._globalOptions.maxBreadcrumbs) { + this._breadcrumbs.shift(); + } + return this; + }, - function uninstallGlobalHandler() { - if (!_onErrorHandlerInstalled) { - return; + addPlugin: function(plugin /*arg1, arg2, ... argN*/) { + var pluginArgs = [].slice.call(arguments, 1); + + this._plugins.push([plugin, pluginArgs]); + if (this._isRavenInstalled) { + this._drainPlugins(); } - _window$2.onerror = _oldOnerrorHandler; - _onErrorHandlerInstalled = false; - _oldOnerrorHandler = undefined; - } + return this; + }, - function processLastException() { - var _lastExceptionStack = lastExceptionStack, - _lastArgs = lastArgs; - lastArgs = null; - lastExceptionStack = null; - lastException = null; - notifyHandlers.apply(null, [_lastExceptionStack, false].concat(_lastArgs)); - } - /** - * Reports an unhandled Error to TraceKit. - * @param {Error} ex - * @param {?boolean} rethrow If false, do not re-throw the exception. - * Only used for window.onerror to not cause an infinite loop of - * rethrowing. + /* + * Set/clear a user to be sent along with the payload. + * + * @param {object} user An object representing user data [optional] + * @return {Raven} */ + setUserContext: function(user) { + // Intentionally do not merge here since that's an unexpected behavior. + this._globalContext.user = user; + return this; + }, - function report(ex, rethrow) { - var args = _slice.call(arguments, 1); + /* + * Merge extra attributes to be sent along with the payload. + * + * @param {object} extra An object representing extra data [optional] + * @return {Raven} + */ + setExtraContext: function(extra) { + this._mergeContext('extra', extra); - if (lastExceptionStack) { - if (lastException === ex) { - return; // already caught by an inner catch block, ignore - } else { - processLastException(); - } - } + return this; + }, - var stack = TraceKit.computeStackTrace(ex); - lastExceptionStack = stack; - lastException = ex; - lastArgs = args; // If the stack trace is incomplete, wait for 2 seconds for - // slow slow IE to see if onerror occurs or not before reporting - // this exception; otherwise, we will end up with an incomplete - // stack trace + /* + * Merge tags to be sent along with the payload. + * + * @param {object} tags An object representing tags [optional] + * @return {Raven} + */ + setTagsContext: function(tags) { + this._mergeContext('tags', tags); - setTimeout(function () { - if (lastException === ex) { - processLastException(); - } - }, stack.incomplete ? 2000 : 0); + return this; + }, - if (rethrow !== false) { - throw ex; // re-throw to propagate to the top level (and cause window.onerror) - } - } + /* + * Clear all of the context. + * + * @return {Raven} + */ + clearContext: function() { + this._globalContext = {}; - report.subscribe = subscribe; - report.unsubscribe = unsubscribe; - report.uninstall = unsubscribeAll; - return report; -}(); -/** - * TraceKit.computeStackTrace: cross-browser stack traces in JavaScript - * - * Syntax: - * s = TraceKit.computeStackTrace(exception) // consider using TraceKit.report instead (see below) - * Returns: - * s.name - exception name - * s.message - exception message - * s.stack[i].url - JavaScript or HTML file URL - * s.stack[i].func - function name, or empty for anonymous functions (if guessing did not work) - * s.stack[i].args - arguments passed to the function, if known - * s.stack[i].line - line number, if known - * s.stack[i].column - column number, if known - * - * Supports: - * - Firefox: full stack trace with line numbers and unreliable column - * number on top frame - * - Opera 10: full stack trace with line and column numbers - * - Opera 9-: full stack trace with line numbers - * - Chrome: full stack trace with line and column numbers - * - Safari: line and column number for the topmost stacktrace element - * only - * - IE: no line numbers whatsoever - * - * Tries to guess names of anonymous functions by looking for assignments - * in the source code. In IE and Safari, we have to guess source file names - * by searching for function bodies inside all page scripts. This will not - * work for scripts that are loaded cross-domain. - * Here be dragons: some function names may be guessed incorrectly, and - * duplicate functions may be mismatched. - * - * TraceKit.computeStackTrace should only be used for tracing purposes. - * Logging of unhandled exceptions should be done with TraceKit.report, - * which builds on top of TraceKit.computeStackTrace and provides better - * IE support by utilizing the window.onerror event to retrieve information - * about the top of the stack. - * - * Note: In IE and Safari, no stack trace is recorded on the Error object, - * so computeStackTrace instead walks its *own* chain of callers. - * This means that: - * * in Safari, some methods may be missing from the stack trace; - * * in IE, the topmost function in the stack trace will always be the - * caller of computeStackTrace. - * - * This is okay for tracing (because you are likely to be calling - * computeStackTrace from the function you want to be the topmost element - * of the stack trace anyway), but not okay for logging unhandled - * exceptions (because your catch block will likely be far away from the - * inner function that actually caused the exception). - * - */ + return this; + }, + /* + * Get a copy of the current context. This cannot be mutated. + * + * @return {object} copy of context + */ + getContext: function() { + // lol javascript + return JSON.parse(stringify(this._globalContext)); + }, -TraceKit.computeStackTrace = function computeStackTraceWrapper() { - // Contents of Exception in various browsers. - // - // SAFARI: - // ex.message = Can't find variable: qq - // ex.line = 59 - // ex.sourceId = 580238192 - // ex.sourceURL = http://... - // ex.expressionBeginOffset = 96 - // ex.expressionCaretOffset = 98 - // ex.expressionEndOffset = 98 - // ex.name = ReferenceError - // - // FIREFOX: - // ex.message = qq is not defined - // ex.fileName = http://... - // ex.lineNumber = 59 - // ex.columnNumber = 69 - // ex.stack = ...stack trace... (see the example below) - // ex.name = ReferenceError - // - // CHROME: - // ex.message = qq is not defined - // ex.name = ReferenceError - // ex.type = not_defined - // ex.arguments = ['aa'] - // ex.stack = ...stack trace... - // - // INTERNET EXPLORER: - // ex.message = ... - // ex.name = ReferenceError - // - // OPERA: - // ex.message = ...message... (see the example below) - // ex.name = ReferenceError - // ex.opera#sourceloc = 11 (pretty much useless, duplicates the info in ex.message) - // ex.stacktrace = n/a; see 'opera:config#UserPrefs|Exceptions Have Stacktrace' + /* + * Set environment of application + * + * @param {string} environment Typically something like 'production'. + * @return {Raven} + */ + setEnvironment: function(environment) { + this._globalOptions.environment = environment; - /** - * Computes stack trace information from the stack property. - * Chrome and Gecko use this property. - * @param {Error} ex - * @return {?Object.} Stack trace information. + return this; + }, + + /* + * Set release version of application + * + * @param {string} release Typically something like a git SHA to identify version + * @return {Raven} */ - function computeStackTraceFromStackProp(ex) { - if (typeof ex.stack === 'undefined' || !ex.stack) return; - var chrome = /^\s*at (.*?) ?\(((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i, - gecko = /^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|\[native).*?|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i, - winjs = /^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i, - // Used to additionally parse URL/line/column from eval frames - geckoEval = /(\S+) line (\d+)(?: > eval line \d+)* > eval/i, - chromeEval = /\((\S*)(?::(\d+))(?::(\d+))\)/, - lines = ex.stack.split('\n'), - stack = [], - submatch, - parts, - element, - reference = /^(.*) is undefined$/.exec(ex.message); + setRelease: function(release) { + this._globalOptions.release = release; - for (var i = 0, j = lines.length; i < j; ++i) { - if (parts = chrome.exec(lines[i])) { - var isNative = parts[2] && parts[2].indexOf('native') === 0; // start of line + return this; + }, - var isEval = parts[2] && parts[2].indexOf('eval') === 0; // start of line + /* + * Set the dataCallback option + * + * @param {function} callback The callback to run which allows the + * data blob to be mutated before sending + * @return {Raven} + */ + setDataCallback: function(callback) { + var original = this._globalOptions.dataCallback; + this._globalOptions.dataCallback = keepOriginalCallback(original, callback); + return this; + }, - if (isEval && (submatch = chromeEval.exec(parts[2]))) { - // throw out eval line/column and use top-most line/column number - parts[2] = submatch[1]; // url + /* + * Set the breadcrumbCallback option + * + * @param {function} callback The callback to run which allows filtering + * or mutating breadcrumbs + * @return {Raven} + */ + setBreadcrumbCallback: function(callback) { + var original = this._globalOptions.breadcrumbCallback; + this._globalOptions.breadcrumbCallback = keepOriginalCallback(original, callback); + return this; + }, - parts[3] = submatch[2]; // line + /* + * Set the shouldSendCallback option + * + * @param {function} callback The callback to run which allows + * introspecting the blob before sending + * @return {Raven} + */ + setShouldSendCallback: function(callback) { + var original = this._globalOptions.shouldSendCallback; + this._globalOptions.shouldSendCallback = keepOriginalCallback(original, callback); + return this; + }, - parts[4] = submatch[3]; // column - } + /** + * Override the default HTTP transport mechanism that transmits data + * to the Sentry server. + * + * @param {function} transport Function invoked instead of the default + * `makeRequest` handler. + * + * @return {Raven} + */ + setTransport: function(transport) { + this._globalOptions.transport = transport; - element = { - url: !isNative ? parts[2] : null, - func: parts[1] || UNKNOWN_FUNCTION, - args: isNative ? [parts[2]] : [], - line: parts[3] ? +parts[3] : null, - column: parts[4] ? +parts[4] : null - }; - } else if (parts = winjs.exec(lines[i])) { - element = { - url: parts[2], - func: parts[1] || UNKNOWN_FUNCTION, - args: [], - line: +parts[3], - column: parts[4] ? +parts[4] : null - }; - } else if (parts = gecko.exec(lines[i])) { - var isEval = parts[3] && parts[3].indexOf(' > eval') > -1; + return this; + }, - if (isEval && (submatch = geckoEval.exec(parts[3]))) { - // throw out eval line/column and use top-most line number - parts[3] = submatch[1]; - parts[4] = submatch[2]; - parts[5] = null; // no column when eval - } else if (i === 0 && !parts[5] && typeof ex.columnNumber !== 'undefined') { - // FireFox uses this awesome columnNumber property for its top frame - // Also note, Firefox's column number is 0-based and everything else expects 1-based, - // so adding 1 - // NOTE: this hack doesn't work if top-most frame is eval - stack[0].column = ex.columnNumber + 1; - } + /* + * Get the latest raw exception that was captured by Raven. + * + * @return {error} + */ + lastException: function() { + return this._lastCapturedException; + }, - element = { - url: parts[3], - func: parts[1] || UNKNOWN_FUNCTION, - args: parts[2] ? parts[2].split(',') : [], - line: parts[4] ? +parts[4] : null, - column: parts[5] ? +parts[5] : null - }; - } else { - continue; - } + /* + * Get the last event id + * + * @return {string} + */ + lastEventId: function() { + return this._lastEventId; + }, - if (!element.func && element.line) { - element.func = UNKNOWN_FUNCTION; + /* + * Determine if Raven is setup and ready to go. + * + * @return {boolean} + */ + isSetup: function() { + if (!this._hasJSON) return false; // needs JSON support + if (!this._globalServer) { + if (!this.ravenNotConfiguredError) { + this.ravenNotConfiguredError = true; + this._logDebug('error', 'Error: Raven has not been configured.'); } - - stack.push(element); + return false; } + return true; + }, - if (!stack.length) { - return null; - } + afterLoad: function() { + // TODO: remove window dependence? - return { - name: ex.name, - message: ex.message, - url: getLocationHref(), - stack: stack - }; - } - /** - * Adds information about the first frame to incomplete stack traces. - * Safari and IE require this to get complete data on the first frame. - * @param {Object.} stackInfo Stack trace information from - * one of the compute* methods. - * @param {string} url The URL of the script that caused an error. - * @param {(number|string)} lineNo The line number of the script that - * caused an error. - * @param {string=} message The error generated by the browser, which - * hopefully contains the name of the object that caused the error. - * @return {boolean} Whether or not the stack information was - * augmented. - */ + // Attempt to initialize Raven on load + var RavenConfig = _window.RavenConfig; + if (RavenConfig) { + this.config(RavenConfig.dsn, RavenConfig.config).install(); + } + }, + showReportDialog: function(options) { + if ( + !_document // doesn't work without a document (React native) + ) + return; - function augmentStackTraceWithInitialElement(stackInfo, url, lineNo, message) { - var initial = { - url: url, - line: lineNo - }; + options = options || {}; - if (initial.url && initial.line) { - stackInfo.incomplete = false; + var lastEventId = options.eventId || this.lastEventId(); + if (!lastEventId) { + throw new RavenConfigError('Missing eventId'); + } - if (!initial.func) { - initial.func = UNKNOWN_FUNCTION; - } + var dsn = options.dsn || this._dsn; + if (!dsn) { + throw new RavenConfigError('Missing DSN'); + } - if (stackInfo.stack.length > 0) { - if (stackInfo.stack[0].url === initial.url) { - if (stackInfo.stack[0].line === initial.line) { - return false; // already in stack trace - } else if (!stackInfo.stack[0].line && stackInfo.stack[0].func === initial.func) { - stackInfo.stack[0].line = initial.line; - return false; - } - } - } + var encode = encodeURIComponent; + var qs = ''; + qs += '?eventId=' + encode(lastEventId); + qs += '&dsn=' + encode(dsn); - stackInfo.stack.unshift(initial); - stackInfo.partial = true; - return true; - } else { - stackInfo.incomplete = true; + var user = options.user || this._globalContext.user; + if (user) { + if (user.name) qs += '&name=' + encode(user.name); + if (user.email) qs += '&email=' + encode(user.email); } - return false; - } - /** - * Computes stack trace information by walking the arguments.caller - * chain at the time the exception occurred. This will cause earlier - * frames to be missed but is the only way to get any stack trace in - * Safari and IE. The top frame is restored by - * {@link augmentStackTraceWithInitialElement}. - * @param {Error} ex - * @return {?Object.} Stack trace information. - */ + var globalServer = this._getGlobalServer(this._parseDSN(dsn)); + var script = _document.createElement('script'); + script.async = true; + script.src = globalServer + '/api/embed/error-page/' + qs; + (_document.head || _document.body).appendChild(script); + }, - function computeStackTraceByWalkingCallerChain(ex, depth) { - var functionName = /function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i, - stack = [], - funcs = {}, - recursion = false, - parts, - item; + /**** Private functions ****/ + _ignoreNextOnError: function() { + var self = this; + this._ignoreOnError += 1; + setTimeout(function() { + // onerror should trigger before setTimeout + self._ignoreOnError -= 1; + }); + }, - for (var curr = computeStackTraceByWalkingCallerChain.caller; curr && !recursion; curr = curr.caller) { - if (curr === computeStackTrace || curr === TraceKit.report) { - // console.log('skipping internal function'); - continue; - } + _triggerEvent: function(eventType, options) { + // NOTE: `event` is a native browser thing, so let's avoid conflicting wiht it + var evt, key; - item = { - url: null, - func: UNKNOWN_FUNCTION, - line: null, - column: null - }; - - if (curr.name) { - item.func = curr.name; - } else if (parts = functionName.exec(curr.toString())) { - item.func = parts[1]; - } + if (!this._hasDocument) return; - if (typeof item.func === 'undefined') { - try { - item.func = parts.input.substring(0, parts.input.indexOf('{')); - } catch (e) {} - } + options = options || {}; - if (funcs['' + curr]) { - recursion = true; - } else { - funcs['' + curr] = true; - } + eventType = 'raven' + eventType.substr(0, 1).toUpperCase() + eventType.substr(1); - stack.push(item); + if (_document.createEvent) { + evt = _document.createEvent('HTMLEvents'); + evt.initEvent(eventType, true, true); + } else { + evt = _document.createEventObject(); + evt.eventType = eventType; } - if (depth) { - // console.log('depth is ' + depth); - // console.log('stack is ' + stack.length); - stack.splice(0, depth); + for (key in options) + if (hasKey(options, key)) { + evt[key] = options[key]; + } + + if (_document.createEvent) { + // IE9 if standards + _document.dispatchEvent(evt); + } else { + // IE8 regardless of Quirks or Standards + // IE9 if quirks + try { + _document.fireEvent('on' + evt.eventType.toLowerCase(), evt); + } catch (e) { + // Do nothing + } } + }, - var result = { - name: ex.name, - message: ex.message, - url: getLocationHref(), - stack: stack - }; - augmentStackTraceWithInitialElement(result, ex.sourceURL || ex.fileName, ex.line || ex.lineNumber, ex.message || ex.description); - return result; - } /** - * Computes a stack trace for an exception. - * @param {Error} ex - * @param {(string|number)=} depth - */ - + * Wraps addEventListener to capture UI breadcrumbs + * @param evtName the event name (e.g. "click") + * @returns {Function} + * @private + */ + _breadcrumbEventHandler: function(evtName) { + var self = this; + return function(evt) { + // reset keypress timeout; e.g. triggering a 'click' after + // a 'keypress' will reset the keypress debounce so that a new + // set of keypresses can be recorded + self._keypressTimeout = null; - function computeStackTrace(ex, depth) { - var stack = null; - depth = depth == null ? 0 : +depth; + // It's possible this handler might trigger multiple times for the same + // event (e.g. event propagation through node ancestors). Ignore if we've + // already captured the event. + if (self._lastCapturedEvent === evt) return; - try { - stack = computeStackTraceFromStackProp(ex); + self._lastCapturedEvent = evt; - if (stack) { - return stack; - } - } catch (e) { - if (TraceKit.debug) { - throw e; + // try/catch both: + // - accessing evt.target (see getsentry/raven-js#838, #768) + // - `htmlTreeAsString` because it's complex, and just accessing the DOM incorrectly + // can throw an exception in some circumstances. + var target; + try { + target = htmlTreeAsString(evt.target); + } catch (e) { + target = ''; } - } - try { - stack = computeStackTraceByWalkingCallerChain(ex, depth + 1); + self.captureBreadcrumb({ + category: 'ui.' + evtName, // e.g. ui.click, ui.input + message: target + }); + }; + }, - if (stack) { - return stack; - } - } catch (e) { - if (TraceKit.debug) { - throw e; + /** + * Wraps addEventListener to capture keypress UI events + * @returns {Function} + * @private + */ + _keypressEventHandler: function() { + var self = this, + debounceDuration = 1000; // milliseconds + + // TODO: if somehow user switches keypress target before + // debounce timeout is triggered, we will only capture + // a single breadcrumb from the FIRST target (acceptable?) + return function(evt) { + var target; + try { + target = evt.target; + } catch (e) { + // just accessing event properties can throw an exception in some rare circumstances + // see: https://github.com/getsentry/raven-js/issues/838 + return; } - } + var tagName = target && target.tagName; - return { - name: ex.name, - message: ex.message, - url: getLocationHref() - }; - } + // only consider keypress events on actual input elements + // this will disregard keypresses targeting body (e.g. tabbing + // through elements, hotkeys, etc) + if ( + !tagName || + (tagName !== 'INPUT' && tagName !== 'TEXTAREA' && !target.isContentEditable) + ) + return; - computeStackTrace.augmentStackTraceWithInitialElement = augmentStackTraceWithInitialElement; - computeStackTrace.computeStackTraceFromStackProp = computeStackTraceFromStackProp; - return computeStackTrace; -}(); + // record first keypress in a series, but ignore subsequent + // keypresses until debounce clears + var timeout = self._keypressTimeout; + if (!timeout) { + self._breadcrumbEventHandler('input')(evt); + } + clearTimeout(timeout); + self._keypressTimeout = setTimeout(function() { + self._keypressTimeout = null; + }, debounceDuration); + }; + }, -var tracekit = TraceKit; + /** + * Captures a breadcrumb of type "navigation", normalizing input URLs + * @param to the originating URL + * @param from the target URL + * @private + */ + _captureUrlChange: function(from, to) { + var parsedLoc = parseUrl(this._location.href); + var parsedTo = parseUrl(to); + var parsedFrom = parseUrl(from); -var stringify_1 = createCommonjsModule(function (module, exports) { - /* - json-stringify-safe - Like JSON.stringify, but doesn't throw on circular references. - - Originally forked from https://github.com/isaacs/json-stringify-safe - version 5.0.1 on 3/8/2017 and modified to handle Errors serialization - and IE8 compatibility. Tests for this are in test/vendor. - - ISC license: https://github.com/isaacs/json-stringify-safe/blob/master/LICENSE - */ - exports = module.exports = stringify; - exports.getSerialize = serializer; - - function indexOf(haystack, needle) { - for (var i = 0; i < haystack.length; ++i) { - if (haystack[i] === needle) return i; - } - - return -1; - } + // because onpopstate only tells you the "new" (to) value of location.href, and + // not the previous (from) value, we need to track the value of the current URL + // state ourselves + this._lastHref = to; - function stringify(obj, replacer, spaces, cycleReplacer) { - return JSON.stringify(obj, serializer(replacer, cycleReplacer), spaces); - } // https://github.com/ftlabs/js-abbreviate/blob/fa709e5f139e7770a71827b1893f22418097fbda/index.js#L95-L106 + // Use only the path component of the URL if the URL matches the current + // document (almost all the time when using pushState) + if (parsedLoc.protocol === parsedTo.protocol && parsedLoc.host === parsedTo.host) + to = parsedTo.relative; + if (parsedLoc.protocol === parsedFrom.protocol && parsedLoc.host === parsedFrom.host) + from = parsedFrom.relative; + this.captureBreadcrumb({ + category: 'navigation', + data: { + to: to, + from: from + } + }); + }, - function stringifyError(value) { - var err = { - // These properties are implemented as magical getters and don't show up in for in - stack: value.stack, - message: value.message, - name: value.name + _patchFunctionToString: function() { + var self = this; + self._originalFunctionToString = Function.prototype.toString; + // eslint-disable-next-line no-extend-native + Function.prototype.toString = function() { + if (typeof this === 'function' && this.__raven__) { + return self._originalFunctionToString.apply(this.__orig__, arguments); + } + return self._originalFunctionToString.apply(this, arguments); }; + }, - for (var i in value) { - if (Object.prototype.hasOwnProperty.call(value, i)) { - err[i] = value[i]; - } + _unpatchFunctionToString: function() { + if (this._originalFunctionToString) { + // eslint-disable-next-line no-extend-native + Function.prototype.toString = this._originalFunctionToString; } + }, - return err; - } + /** + * Wrap timer functions and event targets to catch errors and provide + * better metadata. + */ + _instrumentTryCatch: function() { + var self = this; - function serializer(replacer, cycleReplacer) { - var stack = []; - var keys = []; + var wrappedBuiltIns = self._wrappedBuiltIns; - if (cycleReplacer == null) { - cycleReplacer = function cycleReplacer(key, value) { - if (stack[0] === value) { - return '[Circular ~]'; + function wrapTimeFn(orig) { + return function(fn, t) { + // preserve arity + // Make a copy of the arguments to prevent deoptimization + // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments + var args = new Array(arguments.length); + for (var i = 0; i < args.length; ++i) { + args[i] = arguments[i]; + } + var originalCallback = args[0]; + if (isFunction(originalCallback)) { + args[0] = self.wrap(originalCallback); } - return '[Circular ~.' + keys.slice(0, indexOf(stack, value)).join('.') + ']'; + // IE < 9 doesn't support .call/.apply on setInterval/setTimeout, but it + // also supports only two arguments and doesn't care what this is, so we + // can just call the original function directly. + if (orig.apply) { + return orig.apply(this, args); + } else { + return orig(args[0], args[1]); + } }; } - return function (key, value) { - if (stack.length > 0) { - var thisPos = indexOf(stack, this); - ~thisPos ? stack.splice(thisPos + 1) : stack.push(this); - ~thisPos ? keys.splice(thisPos, Infinity, key) : keys.push(key); + var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; - if (~indexOf(stack, value)) { - value = cycleReplacer.call(this, key, value); - } - } else { - stack.push(value); + function wrapEventTarget(global) { + var proto = _window[global] && _window[global].prototype; + if (proto && proto.hasOwnProperty && proto.hasOwnProperty('addEventListener')) { + fill( + proto, + 'addEventListener', + function(orig) { + return function(evtName, fn, capture, secure) { + // preserve arity + try { + if (fn && fn.handleEvent) { + fn.handleEvent = self.wrap(fn.handleEvent); + } + } catch (err) { + // can sometimes get 'Permission denied to access property "handle Event' + } + + // More breadcrumb DOM capture ... done here and not in `_instrumentBreadcrumbs` + // so that we don't have more than one wrapper function + var before, clickHandler, keypressHandler; + + if ( + autoBreadcrumbs && + autoBreadcrumbs.dom && + (global === 'EventTarget' || global === 'Node') + ) { + // NOTE: generating multiple handlers per addEventListener invocation, should + // revisit and verify we can just use one (almost certainly) + clickHandler = self._breadcrumbEventHandler('click'); + keypressHandler = self._keypressEventHandler(); + before = function(evt) { + // need to intercept every DOM event in `before` argument, in case that + // same wrapped method is re-used for different events (e.g. mousemove THEN click) + // see #724 + if (!evt) return; + + var eventType; + try { + eventType = evt.type; + } catch (e) { + // just accessing event properties can throw an exception in some rare circumstances + // see: https://github.com/getsentry/raven-js/issues/838 + return; + } + if (eventType === 'click') return clickHandler(evt); + else if (eventType === 'keypress') return keypressHandler(evt); + }; + } + return orig.call( + this, + evtName, + self.wrap(fn, undefined, before), + capture, + secure + ); + }; + }, + wrappedBuiltIns + ); + fill( + proto, + 'removeEventListener', + function(orig) { + return function(evt, fn, capture, secure) { + try { + fn = fn && (fn.__raven_wrapper__ ? fn.__raven_wrapper__ : fn); + } catch (e) { + // ignore, accessing __raven_wrapper__ will throw in some Selenium environments + } + return orig.call(this, evt, fn, capture, secure); + }; + }, + wrappedBuiltIns + ); } + } - return replacer == null ? value instanceof Error ? stringifyError(value) : value : replacer.call(this, key, value); - }; - } -}); -var stringify_2 = stringify_1.getSerialize; + fill(_window, 'setTimeout', wrapTimeFn, wrappedBuiltIns); + fill(_window, 'setInterval', wrapTimeFn, wrappedBuiltIns); + if (_window.requestAnimationFrame) { + fill( + _window, + 'requestAnimationFrame', + function(orig) { + return function(cb) { + return orig(self.wrap(cb)); + }; + }, + wrappedBuiltIns + ); + } -function RavenConfigError(message) { - this.name = 'RavenConfigError'; - this.message = message; -} + // event targets borrowed from bugsnag-js: + // https://github.com/bugsnag/bugsnag-js/blob/master/src/bugsnag.js#L666 + var eventTargets = [ + 'EventTarget', + 'Window', + 'Node', + 'ApplicationCache', + 'AudioTrackList', + 'ChannelMergerNode', + 'CryptoOperation', + 'EventSource', + 'FileReader', + 'HTMLUnknownElement', + 'IDBDatabase', + 'IDBRequest', + 'IDBTransaction', + 'KeyOperation', + 'MediaController', + 'MessagePort', + 'ModalWindow', + 'Notification', + 'SVGElementInstance', + 'Screen', + 'TextTrack', + 'TextTrackCue', + 'TextTrackList', + 'WebSocket', + 'WebSocketWorker', + 'Worker', + 'XMLHttpRequest', + 'XMLHttpRequestEventTarget', + 'XMLHttpRequestUpload' + ]; + for (var i = 0; i < eventTargets.length; i++) { + wrapEventTarget(eventTargets[i]); + } + }, -RavenConfigError.prototype = new Error(); -RavenConfigError.prototype.constructor = RavenConfigError; -var configError = RavenConfigError; + /** + * Instrument browser built-ins w/ breadcrumb capturing + * - XMLHttpRequests + * - DOM interactions (click/typing) + * - window.location changes + * - console + * + * Can be disabled or individually configured via the `autoBreadcrumbs` config option + */ + _instrumentBreadcrumbs: function() { + var self = this; + var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; -var wrapMethod = function wrapMethod(console, level, callback) { - var originalConsoleLevel = console[level]; - var originalConsole = console; + var wrappedBuiltIns = self._wrappedBuiltIns; - if (!(level in console)) { - return; - } - - var sentryLevel = level === 'warn' ? 'warning' : level; - - console[level] = function () { - var args = [].slice.call(arguments); - var msg = utils.safeJoin(args, ' '); - var data = { - level: sentryLevel, - logger: 'console', - extra: { - arguments: args - } - }; - - if (level === 'assert') { - if (args[0] === false) { - // Default browsers message - msg = 'Assertion failed: ' + (utils.safeJoin(args.slice(1), ' ') || 'console.assert'); - data.extra.arguments = args.slice(1); - callback && callback(msg, data); - } - } else { - callback && callback(msg, data); - } // this fails for some browsers. :( + function wrapProp(prop, xhr) { + if (prop in xhr && isFunction(xhr[prop])) { + fill(xhr, prop, function(orig) { + return self.wrap(orig); + }); // intentionally don't track filled methods on XHR instances + } + } + if (autoBreadcrumbs.xhr && 'XMLHttpRequest' in _window) { + var xhrproto = _window.XMLHttpRequest && _window.XMLHttpRequest.prototype; + fill( + xhrproto, + 'open', + function(origOpen) { + return function(method, url) { + // preserve arity - if (originalConsoleLevel) { - // IE9 doesn't allow calling apply on console functions directly - // See: https://stackoverflow.com/questions/5472938/does-ie9-support-console-log-and-is-it-a-real-function#answer-5473193 - Function.prototype.apply.call(originalConsoleLevel, originalConsole, args); - } - }; -}; + // if Sentry key appears in URL, don't capture + if (isString(url) && url.indexOf(self._globalKey) === -1) { + this.__raven_xhr = { + method: method, + url: url, + status_code: null + }; + } -var console$1 = { - wrapMethod: wrapMethod -}; + return origOpen.apply(this, arguments); + }; + }, + wrappedBuiltIns + ); + + fill( + xhrproto, + 'send', + function(origSend) { + return function() { + // preserve arity + var xhr = this; -/*global XDomainRequest:false */ + function onreadystatechangeHandler() { + if (xhr.__raven_xhr && xhr.readyState === 4) { + try { + // touching statusCode in some platforms throws + // an exception + xhr.__raven_xhr.status_code = xhr.status; + } catch (e) { + /* do nothing */ + } -var isError = utils.isError; -var isObject = utils.isObject; -var isErrorEvent = utils.isErrorEvent; -var isUndefined = utils.isUndefined; -var isFunction = utils.isFunction; -var isString = utils.isString; -var isArray = utils.isArray; -var isEmptyObject = utils.isEmptyObject; -var each = utils.each; -var objectMerge = utils.objectMerge; -var truncate = utils.truncate; -var objectFrozen = utils.objectFrozen; -var hasKey = utils.hasKey; -var joinRegExp = utils.joinRegExp; -var urlencode = utils.urlencode; -var uuid4 = utils.uuid4; -var htmlTreeAsString = utils.htmlTreeAsString; -var isSameException = utils.isSameException; -var isSameStacktrace = utils.isSameStacktrace; -var parseUrl = utils.parseUrl; -var fill = utils.fill; -var supportsFetch = utils.supportsFetch; -var wrapConsoleMethod = console$1.wrapMethod; -var dsnKeys = 'source protocol user pass host port path'.split(' '); -var dsnPattern = /^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/; + self.captureBreadcrumb({ + type: 'http', + category: 'xhr', + data: xhr.__raven_xhr + }); + } + } -function now() { - return +new Date(); -} // This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) + var props = ['onload', 'onerror', 'onprogress']; + for (var j = 0; j < props.length; j++) { + wrapProp(props[j], xhr); + } + if ('onreadystatechange' in xhr && isFunction(xhr.onreadystatechange)) { + fill( + xhr, + 'onreadystatechange', + function(orig) { + return self.wrap(orig, undefined, onreadystatechangeHandler); + } /* intentionally don't track this instrumentation */ + ); + } else { + // if onreadystatechange wasn't actually set by the page on this xhr, we + // are free to set our own and capture the breadcrumb + xhr.onreadystatechange = onreadystatechangeHandler; + } -var _window$1 = typeof window !== 'undefined' ? window : typeof commonjsGlobal !== 'undefined' ? commonjsGlobal : typeof self !== 'undefined' ? self : {}; + return origSend.apply(this, arguments); + }; + }, + wrappedBuiltIns + ); + } -var _document = _window$1.document; -var _navigator = _window$1.navigator; + if (autoBreadcrumbs.xhr && supportsFetch()) { + fill( + _window, + 'fetch', + function(origFetch) { + return function() { + // preserve arity + // Make a copy of the arguments to prevent deoptimization + // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments + var args = new Array(arguments.length); + for (var i = 0; i < args.length; ++i) { + args[i] = arguments[i]; + } -function keepOriginalCallback(original, callback) { - return isFunction(callback) ? function (data) { - return callback(data, original); - } : callback; -} // First, check for JSON support -// If there is no JSON, we no-op the core features of Raven -// since JSON is required to encode the payload + var fetchInput = args[0]; + var method = 'GET'; + var url; + if (typeof fetchInput === 'string') { + url = fetchInput; + } else if ('Request' in _window && fetchInput instanceof _window.Request) { + url = fetchInput.url; + if (fetchInput.method) { + method = fetchInput.method; + } + } else { + url = '' + fetchInput; + } -function Raven$1() { - this._hasJSON = !!(_typeof(JSON) === 'object' && JSON.stringify); // Raven can run in contexts where there's no document (react-native) + // if Sentry key appears in URL, don't capture, as it's our own request + if (url.indexOf(self._globalKey) !== -1) { + return origFetch.apply(this, args); + } - this._hasDocument = !isUndefined(_document); - this._hasNavigator = !isUndefined(_navigator); - this._lastCapturedException = null; - this._lastData = null; - this._lastEventId = null; - this._globalServer = null; - this._globalKey = null; - this._globalProject = null; - this._globalContext = {}; - this._globalOptions = { - // SENTRY_RELEASE can be injected by https://github.com/getsentry/sentry-webpack-plugin - release: _window$1.SENTRY_RELEASE && _window$1.SENTRY_RELEASE.id, - logger: 'javascript', - ignoreErrors: [], - ignoreUrls: [], - whitelistUrls: [], - includePaths: [], - headers: null, - collectWindowErrors: true, - maxMessageLength: 0, - // By default, truncates URL values to 250 chars - maxUrlLength: 250, - stackTraceLimit: 50, - autoBreadcrumbs: true, - instrument: true, - sampleRate: 1 - }; - this._fetchDefaults = { - method: 'POST', - keepalive: true, - referrerPolicy: 'origin' - }; - this._ignoreOnError = 0; - this._isRavenInstalled = false; - this._originalErrorStackTraceLimit = Error.stackTraceLimit; // capture references to window.console *and* all its methods first - // before the console plugin has a chance to monkey patch + if (args[1] && args[1].method) { + method = args[1].method; + } - this._originalConsole = _window$1.console || {}; - this._originalConsoleMethods = {}; - this._plugins = []; - this._startTime = now(); - this._wrappedBuiltIns = []; - this._breadcrumbs = []; - this._lastCapturedEvent = null; - this._keypressTimeout; - this._location = _window$1.location; - this._lastHref = this._location && this._location.href; + var fetchData = { + method: method, + url: url, + status_code: null + }; - this._resetBackoff(); // eslint-disable-next-line guard-for-in + return origFetch + .apply(this, args) + .then(function(response) { + fetchData.status_code = response.status; + + self.captureBreadcrumb({ + type: 'http', + category: 'fetch', + data: fetchData + }); + + return response; + }) + ['catch'](function(err) { + // if there is an error performing the request + self.captureBreadcrumb({ + type: 'http', + category: 'fetch', + data: fetchData, + level: 'error' + }); + + throw err; + }); + }; + }, + wrappedBuiltIns + ); + } + // Capture breadcrumbs from any click that is unhandled / bubbled up all the way + // to the document. Do this before we instrument addEventListener. + if (autoBreadcrumbs.dom && this._hasDocument) { + if (_document.addEventListener) { + _document.addEventListener('click', self._breadcrumbEventHandler('click'), false); + _document.addEventListener('keypress', self._keypressEventHandler(), false); + } else if (_document.attachEvent) { + // IE8 Compatibility + _document.attachEvent('onclick', self._breadcrumbEventHandler('click')); + _document.attachEvent('onkeypress', self._keypressEventHandler()); + } + } - for (var method in this._originalConsole) { - this._originalConsoleMethods[method] = this._originalConsole[method]; - } -} -/* - * The core Raven singleton - * - * @this {Raven} - */ + // record navigation (URL) changes + // NOTE: in Chrome App environment, touching history.pushState, *even inside + // a try/catch block*, will cause Chrome to output an error to console.error + // borrowed from: https://github.com/angular/angular.js/pull/13945/files + var chrome = _window.chrome; + var isChromePackagedApp = chrome && chrome.app && chrome.app.runtime; + var hasPushAndReplaceState = + !isChromePackagedApp && + _window.history && + history.pushState && + history.replaceState; + if (autoBreadcrumbs.location && hasPushAndReplaceState) { + // TODO: remove onpopstate handler on uninstall() + var oldOnPopState = _window.onpopstate; + _window.onpopstate = function() { + var currentHref = self._location.href; + self._captureUrlChange(self._lastHref, currentHref); + if (oldOnPopState) { + return oldOnPopState.apply(this, arguments); + } + }; -Raven$1.prototype = { - // Hardcode version string so that raven source can be loaded directly via - // webpack (using a build step causes webpack #1617). Grunt verifies that - // this value matches package.json during build. - // See: https://github.com/getsentry/raven-js/issues/465 - VERSION: '3.22.2', - debug: false, - TraceKit: tracekit, - // alias to TraceKit + var historyReplacementFunction = function(origHistFunction) { + // note history.pushState.length is 0; intentionally not declaring + // params to preserve 0 arity + return function(/* state, title, url */) { + var url = arguments.length > 2 ? arguments[2] : undefined; - /* - * Configure Raven with a DSN and extra options - * - * @param {string} dsn The public Sentry DSN - * @param {object} options Set of global options [optional] - * @return {Raven} - */ - config: function config(dsn, options) { - var self = this; + // url argument is optional + if (url) { + // coerce to string (this is what pushState does) + self._captureUrlChange(self._lastHref, url + ''); + } - if (self._globalServer) { - this._logDebug('error', 'Error: Raven has already been configured'); + return origHistFunction.apply(this, arguments); + }; + }; - return self; + fill(history, 'pushState', historyReplacementFunction, wrappedBuiltIns); + fill(history, 'replaceState', historyReplacementFunction, wrappedBuiltIns); } - if (!dsn) return self; - var globalOptions = self._globalOptions; // merge in options + if (autoBreadcrumbs.console && 'console' in _window && console.log) { + // console + var consoleMethodCallback = function(msg, data) { + self.captureBreadcrumb({ + message: msg, + level: data.level, + category: 'console' + }); + }; - if (options) { - each(options, function (key, value) { - // tags and extra are special and need to be put into context - if (key === 'tags' || key === 'extra' || key === 'user') { - self._globalContext[key] = value; - } else { - globalOptions[key] = value; - } + each(['debug', 'info', 'warn', 'error', 'log'], function(_, level) { + wrapConsoleMethod(console, level, consoleMethodCallback); }); } + }, - self.setDSN(dsn); // "Script error." is hard coded into browsers for errors that it can't read. - // this is the result of a script being pulled in from an external domain and CORS. - - globalOptions.ignoreErrors.push(/^Script error\.?$/); - globalOptions.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/); // join regexp rules into one big rule + _restoreBuiltIns: function() { + // restore any wrapped builtins + var builtin; + while (this._wrappedBuiltIns.length) { + builtin = this._wrappedBuiltIns.shift(); - globalOptions.ignoreErrors = joinRegExp(globalOptions.ignoreErrors); - globalOptions.ignoreUrls = globalOptions.ignoreUrls.length ? joinRegExp(globalOptions.ignoreUrls) : false; - globalOptions.whitelistUrls = globalOptions.whitelistUrls.length ? joinRegExp(globalOptions.whitelistUrls) : false; - globalOptions.includePaths = joinRegExp(globalOptions.includePaths); - globalOptions.maxBreadcrumbs = Math.max(0, Math.min(globalOptions.maxBreadcrumbs || 100, 100)); // default and hard limit is 100 + var obj = builtin[0], + name = builtin[1], + orig = builtin[2]; - var autoBreadcrumbDefaults = { - xhr: true, - console: true, - dom: true, - location: true, - sentry: true - }; - var autoBreadcrumbs = globalOptions.autoBreadcrumbs; + obj[name] = orig; + } + }, - if ({}.toString.call(autoBreadcrumbs) === '[object Object]') { - autoBreadcrumbs = objectMerge(autoBreadcrumbDefaults, autoBreadcrumbs); - } else if (autoBreadcrumbs !== false) { - autoBreadcrumbs = autoBreadcrumbDefaults; + _restoreConsole: function() { + // eslint-disable-next-line guard-for-in + for (var method in this._originalConsoleMethods) { + this._originalConsole[method] = this._originalConsoleMethods[method]; } + }, - globalOptions.autoBreadcrumbs = autoBreadcrumbs; - var instrumentDefaults = { - tryCatch: true - }; - var instrument = globalOptions.instrument; + _drainPlugins: function() { + var self = this; - if ({}.toString.call(instrument) === '[object Object]') { - instrument = objectMerge(instrumentDefaults, instrument); - } else if (instrument !== false) { - instrument = instrumentDefaults; + // FIX ME TODO + each(this._plugins, function(_, plugin) { + var installer = plugin[0]; + var args = plugin[1]; + installer.apply(self, [self].concat(args)); + }); + }, + + _parseDSN: function(str) { + var m = dsnPattern.exec(str), + dsn = {}, + i = 7; + + try { + while (i--) dsn[dsnKeys[i]] = m[i] || ''; + } catch (e) { + throw new RavenConfigError('Invalid DSN: ' + str); } - globalOptions.instrument = instrument; - tracekit.collectWindowErrors = !!globalOptions.collectWindowErrors; // return for chaining + if (dsn.pass && !this._globalOptions.allowSecretKey) { + throw new RavenConfigError( + 'Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key' + ); + } - return self; + return dsn; }, - /* - * Installs a global window.onerror error handler - * to capture and report uncaught exceptions. - * At this point, install() is required to be called due - * to the way TraceKit is set up. - * - * @return {Raven} - */ - install: function install() { - var self = this; - - if (self.isSetup() && !self._isRavenInstalled) { - tracekit.report.subscribe(function () { - self._handleOnErrorStackInfo.apply(self, arguments); - }); - - self._patchFunctionToString(); - - if (self._globalOptions.instrument && self._globalOptions.instrument.tryCatch) { - self._instrumentTryCatch(); - } - - if (self._globalOptions.autoBreadcrumbs) self._instrumentBreadcrumbs(); // Install all of the plugins - - self._drainPlugins(); + _getGlobalServer: function(uri) { + // assemble the endpoint from the uri pieces + var globalServer = '//' + uri.host + (uri.port ? ':' + uri.port : ''); - self._isRavenInstalled = true; + if (uri.protocol) { + globalServer = uri.protocol + ':' + globalServer; } + return globalServer; + }, - Error.stackTraceLimit = self._globalOptions.stackTraceLimit; - return this; + _handleOnErrorStackInfo: function() { + // if we are intentionally ignoring errors via onerror, bail out + if (!this._ignoreOnError) { + this._handleStackInfo.apply(this, arguments); + } }, - /* - * Set the DSN (can be called multiple time unlike config) - * - * @param {string} dsn The public Sentry DSN - */ - setDSN: function setDSN(dsn) { - var self = this, - uri = self._parseDSN(dsn), - lastSlash = uri.path.lastIndexOf('/'), - path = uri.path.substr(1, lastSlash); + _handleStackInfo: function(stackInfo, options) { + var frames = this._prepareFrames(stackInfo, options); - self._dsn = dsn; - self._globalKey = uri.user; - self._globalSecret = uri.pass && uri.pass.substr(1); - self._globalProject = uri.path.substr(lastSlash + 1); - self._globalServer = self._getGlobalServer(uri); - self._globalEndpoint = self._globalServer + '/' + path + 'api/' + self._globalProject + '/store/'; // Reset backoff state since we may be pointing at a - // new project/server + this._triggerEvent('handle', { + stackInfo: stackInfo, + options: options + }); - this._resetBackoff(); + this._processException( + stackInfo.name, + stackInfo.message, + stackInfo.url, + stackInfo.lineno, + frames, + options + ); }, - /* - * Wrap code within a context so Raven can capture errors - * reliably across domains that is executed immediately. - * - * @param {object} options A specific set of options for this context [optional] - * @param {function} func The callback to be immediately executed within the context - * @param {array} args An array of arguments to be called with the callback [optional] - */ - context: function context(options, func, args) { - if (isFunction(options)) { - args = func || []; - func = options; - options = undefined; - } + _prepareFrames: function(stackInfo, options) { + var self = this; + var frames = []; + if (stackInfo.stack && stackInfo.stack.length) { + each(stackInfo.stack, function(i, stack) { + var frame = self._normalizeFrame(stack, stackInfo.url); + if (frame) { + frames.push(frame); + } + }); - return this.wrap(options, func).apply(this, args); + // e.g. frames captured via captureMessage throw + if (options && options.trimHeadFrames) { + for (var j = 0; j < options.trimHeadFrames && j < frames.length; j++) { + frames[j].in_app = false; + } + } + } + frames = frames.slice(0, this._globalOptions.stackTraceLimit); + return frames; }, - /* - * Wrap code within a context and returns back a new function to be executed - * - * @param {object} options A specific set of options for this context [optional] - * @param {function} func The function to be wrapped in a new context - * @param {function} func A function to call before the try/catch wrapper [optional, private] - * @return {function} The newly wrapped functions with a context - */ - wrap: function wrap(options, func, _before) { - var self = this; // 1 argument has been passed, and it's not a function - // so just return it - - if (isUndefined(func) && !isFunction(options)) { - return options; - } // options is optional + _normalizeFrame: function(frame, stackInfoUrl) { + // normalize the frames data + var normalized = { + filename: frame.url, + lineno: frame.line, + colno: frame.column, + function: frame.func || '?' + }; + // Case when we don't have any information about the error + // E.g. throwing a string or raw object, instead of an `Error` in Firefox + // Generating synthetic error doesn't add any value here + // + // We should probably somehow let a user know that they should fix their code + if (!frame.url) { + normalized.filename = stackInfoUrl; // fallback to whole stacks url from onerror handler + } - if (isFunction(options)) { - func = options; - options = undefined; - } // At this point, we've passed along 2 arguments, and the second one - // is not a function either, so we'll just return the second argument. + normalized.in_app = !// determine if an exception came from outside of our app + // first we check the global includePaths list. + ( + (!!this._globalOptions.includePaths.test && + !this._globalOptions.includePaths.test(normalized.filename)) || + // Now we check for fun, if the function name is Raven or TraceKit + /(Raven|TraceKit)\./.test(normalized['function']) || + // finally, we do a last ditch effort and check for raven.min.js + /raven\.(min\.)?js$/.test(normalized.filename) + ); + return normalized; + }, - if (!isFunction(func)) { - return func; - } // We don't wanna wrap it twice! + _processException: function(type, message, fileurl, lineno, frames, options) { + var prefixedMessage = (type ? type + ': ' : '') + (message || ''); + if ( + !!this._globalOptions.ignoreErrors.test && + (this._globalOptions.ignoreErrors.test(message) || + this._globalOptions.ignoreErrors.test(prefixedMessage)) + ) { + return; + } + var stacktrace; - try { - if (func.__raven__) { - return func; - } // If this has already been wrapped in the past, return that + if (frames && frames.length) { + fileurl = frames[0].filename || fileurl; + // Sentry expects frames oldest to newest + // and JS sends them as newest to oldest + frames.reverse(); + stacktrace = {frames: frames}; + } else if (fileurl) { + stacktrace = { + frames: [ + { + filename: fileurl, + lineno: lineno, + in_app: true + } + ] + }; + } + if ( + !!this._globalOptions.ignoreUrls.test && + this._globalOptions.ignoreUrls.test(fileurl) + ) { + return; + } - if (func.__raven_wrapper__) { - return func.__raven_wrapper__; - } - } catch (e) { - // Just accessing custom props in some Selenium environments - // can cause a "Permission denied" exception (see raven-js#495). - // Bail on wrapping and return the function as-is (defers to window.onerror). - return func; + if ( + !!this._globalOptions.whitelistUrls.test && + !this._globalOptions.whitelistUrls.test(fileurl) + ) { + return; } - function wrapped() { - var args = [], - i = arguments.length, - deep = !options || options && options.deep !== false; + var data = objectMerge( + { + // sentry.interfaces.Exception + exception: { + values: [ + { + type: type, + value: message, + stacktrace: stacktrace + } + ] + }, + culprit: fileurl + }, + options + ); - if (_before && isFunction(_before)) { - _before.apply(this, arguments); - } // Recursively wrap all of a function's arguments that are - // functions themselves. + // Fire away! + this._send(data); + }, + _trimPacket: function(data) { + // For now, we only want to truncate the two different messages + // but this could/should be expanded to just trim everything + var max = this._globalOptions.maxMessageLength; + if (data.message) { + data.message = truncate(data.message, max); + } + if (data.exception) { + var exception = data.exception.values[0]; + exception.value = truncate(exception.value, max); + } - while (i--) { - args[i] = deep ? self.wrap(options, arguments[i]) : arguments[i]; + var request = data.request; + if (request) { + if (request.url) { + request.url = truncate(request.url, this._globalOptions.maxUrlLength); + } + if (request.Referer) { + request.Referer = truncate(request.Referer, this._globalOptions.maxUrlLength); } + } - try { - // Attempt to invoke user-land function - // NOTE: If you are a Sentry user, and you are seeing this stack frame, it - // means Raven caught an error invoking your application code. This is - // expected behavior and NOT indicative of a bug with Raven.js. - return func.apply(this, args); - } catch (e) { - self._ignoreNextOnError(); + if (data.breadcrumbs && data.breadcrumbs.values) + this._trimBreadcrumbs(data.breadcrumbs); - self.captureException(e, options); - throw e; - } - } // copy over properties of the old function + return data; + }, + + /** + * Truncate breadcrumb values (right now just URLs) + */ + _trimBreadcrumbs: function(breadcrumbs) { + // known breadcrumb properties with urls + // TODO: also consider arbitrary prop values that start with (https?)?:// + var urlProps = ['to', 'from', 'url'], + urlProp, + crumb, + data; + for (var i = 0; i < breadcrumbs.values.length; ++i) { + crumb = breadcrumbs.values[i]; + if ( + !crumb.hasOwnProperty('data') || + !isObject(crumb.data) || + objectFrozen(crumb.data) + ) + continue; - for (var property in func) { - if (hasKey(func, property)) { - wrapped[property] = func[property]; + data = objectMerge({}, crumb.data); + for (var j = 0; j < urlProps.length; ++j) { + urlProp = urlProps[j]; + if (data.hasOwnProperty(urlProp) && data[urlProp]) { + data[urlProp] = truncate(data[urlProp], this._globalOptions.maxUrlLength); + } } + breadcrumbs.values[i].data = data; } - - wrapped.prototype = func.prototype; - func.__raven_wrapper__ = wrapped; // Signal that this function has been wrapped/filled already - // for both debugging and to prevent it to being wrapped/filled twice - - wrapped.__raven__ = true; - wrapped.__orig__ = func; - return wrapped; }, - /* - * Uninstalls the global error handler. - * - * @return {Raven} - */ - uninstall: function uninstall() { - tracekit.report.uninstall(); + _getHttpData: function() { + if (!this._hasNavigator && !this._hasDocument) return; + var httpData = {}; - this._unpatchFunctionToString(); + if (this._hasNavigator && _navigator.userAgent) { + httpData.headers = { + 'User-Agent': navigator.userAgent + }; + } - this._restoreBuiltIns(); + // Check in `window` instead of `document`, as we may be in ServiceWorker environment + if (_window.location && _window.location.href) { + httpData.url = _window.location.href; + } - this._restoreConsole(); + if (this._hasDocument && _document.referrer) { + if (!httpData.headers) httpData.headers = {}; + httpData.headers.Referer = _document.referrer; + } - Error.stackTraceLimit = this._originalErrorStackTraceLimit; - this._isRavenInstalled = false; - return this; + return httpData; }, - /* - * Manually capture an exception and send it over to Sentry - * - * @param {error} ex An exception to be logged - * @param {object} options A specific set of options for this error [optional] - * @return {Raven} - */ - captureException: function captureException(ex, options) { - options = objectMerge({ - trimHeadFrames: 0 - }, options ? options : {}); // Cases for sending ex as a message, rather than an exception + _resetBackoff: function() { + this._backoffDuration = 0; + this._backoffStart = null; + }, - var isNotError = !isError(ex); - var isNotErrorEvent = !isErrorEvent(ex); - var isErrorEventWithoutError = isErrorEvent(ex) && !ex.error; + _shouldBackoff: function() { + return this._backoffDuration && now() - this._backoffStart < this._backoffDuration; + }, - if (isNotError && isNotErrorEvent || isErrorEventWithoutError) { - return this.captureMessage(ex, objectMerge(options, { - stacktrace: true, - // if we fall back to captureMessage, default to attempting a new trace - trimHeadFrames: options.trimHeadFrames + 1 - })); - } // Get actual Error from ErrorEvent + /** + * Returns true if the in-process data payload matches the signature + * of the previously-sent data + * + * NOTE: This has to be done at this level because TraceKit can generate + * data from window.onerror WITHOUT an exception object (IE8, IE9, + * other old browsers). This can take the form of an "exception" + * data object with a single frame (derived from the onerror args). + */ + _isRepeatData: function(current) { + var last = this._lastData; + if ( + !last || + current.message !== last.message || // defined for captureMessage + current.culprit !== last.culprit // defined for captureException/onerror + ) + return false; - if (isErrorEvent(ex)) ex = ex.error; // Store the raw exception object for potential debugging and introspection + // Stacktrace interface (i.e. from captureMessage) + if (current.stacktrace || last.stacktrace) { + return isSameStacktrace(current.stacktrace, last.stacktrace); + } else if (current.exception || last.exception) { + // Exception interface (i.e. from captureException/onerror) + return isSameException(current.exception, last.exception); + } - this._lastCapturedException = ex; // TraceKit.report will re-raise any exception passed to it, - // which means you have to wrap it in try/catch. Instead, we - // can wrap it here and only re-raise if TraceKit.report - // raises an exception different from the one we asked to - // report on. - - try { - var stack = tracekit.computeStackTrace(ex); - - this._handleStackInfo(stack, options); - } catch (ex1) { - if (ex !== ex1) { - throw ex1; - } - } - - return this; + return true; }, - /* - * Manually send a message to Sentry - * - * @param {string} msg A plain message to be captured in Sentry - * @param {object} options A specific set of options for this message [optional] - * @return {Raven} - */ - captureMessage: function captureMessage(msg, options) { - // config() automagically converts ignoreErrors from a list to a RegExp so we need to test for an - // early call; we'll error on the side of logging anything called before configuration since it's - // probably something you should see: - if (!!this._globalOptions.ignoreErrors.test && this._globalOptions.ignoreErrors.test(msg)) { + _setBackoffState: function(request) { + // If we are already in a backoff state, don't change anything + if (this._shouldBackoff()) { return; } - options = options || {}; - var data = objectMerge({ - message: msg + '' // Make sure it's actually a string + var status = request.status; - }, options); - var ex; // Generate a "synthetic" stack trace from this point. - // NOTE: If you are a Sentry user, and you are seeing this stack frame, it is NOT indicative - // of a bug with Raven.js. Sentry generates synthetic traces either by configuration, - // or if it catches a thrown object without a "stack" property. + // 400 - project_id doesn't exist or some other fatal + // 401 - invalid/revoked dsn + // 429 - too many requests + if (!(status === 400 || status === 401 || status === 429)) return; + var retry; try { - throw new Error(msg); - } catch (ex1) { - ex = ex1; - } // null exception name so `Error` isn't prefixed to msg + // If Retry-After is not in Access-Control-Expose-Headers, most + // browsers will throw an exception trying to access it + if (supportsFetch()) { + retry = request.headers.get('Retry-After'); + } else { + retry = request.getResponseHeader('Retry-After'); + } + + // Retry-After is returned in seconds + retry = parseInt(retry, 10) * 1000; + } catch (e) { + /* eslint no-empty:0 */ + } + this._backoffDuration = retry + ? // If Sentry server returned a Retry-After value, use it + retry + : // Otherwise, double the last backoff duration (starts at 1 sec) + this._backoffDuration * 2 || 1000; - ex.name = null; - var stack = tracekit.computeStackTrace(ex); // stack[0] is `throw new Error(msg)` call itself, we are interested in the frame that was just before that, stack[1] + this._backoffStart = now(); + }, - var initialCall = isArray(stack.stack) && stack.stack[1]; - var fileurl = initialCall && initialCall.url || ''; + _send: function(data) { + var globalOptions = this._globalOptions; - if (!!this._globalOptions.ignoreUrls.test && this._globalOptions.ignoreUrls.test(fileurl)) { - return; - } + var baseData = { + project: this._globalProject, + logger: globalOptions.logger, + platform: 'javascript' + }, + httpData = this._getHttpData(); - if (!!this._globalOptions.whitelistUrls.test && !this._globalOptions.whitelistUrls.test(fileurl)) { - return; + if (httpData) { + baseData.request = httpData; } - if (this._globalOptions.stacktrace || options && options.stacktrace) { - options = objectMerge({ - // fingerprint on msg, not stack trace (legacy behavior, could be - // revisited) - fingerprint: msg, - // since we know this is a synthetic trace, the top N-most frames - // MUST be from Raven.js, so mark them as in_app later by setting - // trimHeadFrames - trimHeadFrames: (options.trimHeadFrames || 0) + 1 - }, options); + // HACK: delete `trimHeadFrames` to prevent from appearing in outbound payload + if (data.trimHeadFrames) delete data.trimHeadFrames; - var frames = this._prepareFrames(stack, options); + data = objectMerge(baseData, data); - data.stacktrace = { - // Sentry expects frames oldest to newest - frames: frames.reverse() + // Merge in the tags and extra separately since objectMerge doesn't handle a deep merge + data.tags = objectMerge(objectMerge({}, this._globalContext.tags), data.tags); + data.extra = objectMerge(objectMerge({}, this._globalContext.extra), data.extra); + + // Send along our own collected metadata with extra + data.extra['session:duration'] = now() - this._startTime; + + if (this._breadcrumbs && this._breadcrumbs.length > 0) { + // intentionally make shallow copy so that additions + // to breadcrumbs aren't accidentally sent in this request + data.breadcrumbs = { + values: [].slice.call(this._breadcrumbs, 0) }; - } // Fire away! + } + + if (this._globalContext.user) { + // sentry.interfaces.User + data.user = this._globalContext.user; + } + // Include the environment if it's defined in globalOptions + if (globalOptions.environment) data.environment = globalOptions.environment; - this._send(data); + // Include the release if it's defined in globalOptions + if (globalOptions.release) data.release = globalOptions.release; - return this; - }, - captureBreadcrumb: function captureBreadcrumb(obj) { - var crumb = objectMerge({ - timestamp: now() / 1000 - }, obj); + // Include server_name if it's defined in globalOptions + if (globalOptions.serverName) data.server_name = globalOptions.serverName; - if (isFunction(this._globalOptions.breadcrumbCallback)) { - var result = this._globalOptions.breadcrumbCallback(crumb); + data = this._sanitizeData(data); - if (isObject(result) && !isEmptyObject(result)) { - crumb = result; - } else if (result === false) { - return this; + // Cleanup empty properties before sending them to the server + Object.keys(data).forEach(function(key) { + if (data[key] == null || data[key] === '' || isEmptyObject(data[key])) { + delete data[key]; } - } - - this._breadcrumbs.push(crumb); + }); - if (this._breadcrumbs.length > this._globalOptions.maxBreadcrumbs) { - this._breadcrumbs.shift(); + if (isFunction(globalOptions.dataCallback)) { + data = globalOptions.dataCallback(data) || data; } - return this; - }, - addPlugin: function addPlugin(plugin - /*arg1, arg2, ... argN*/ - ) { - var pluginArgs = [].slice.call(arguments, 1); + // Why?????????? + if (!data || isEmptyObject(data)) { + return; + } - this._plugins.push([plugin, pluginArgs]); + // Check if the request should be filtered or not + if ( + isFunction(globalOptions.shouldSendCallback) && + !globalOptions.shouldSendCallback(data) + ) { + return; + } - if (this._isRavenInstalled) { - this._drainPlugins(); + // Backoff state: Sentry server previously responded w/ an error (e.g. 429 - too many requests), + // so drop requests until "cool-off" period has elapsed. + if (this._shouldBackoff()) { + this._logDebug('warn', 'Raven dropped error due to backoff: ', data); + return; } - return this; + if (typeof globalOptions.sampleRate === 'number') { + if (Math.random() < globalOptions.sampleRate) { + this._sendProcessedPayload(data); + } + } else { + this._sendProcessedPayload(data); + } }, - /* - * Set/clear a user to be sent along with the payload. - * - * @param {object} user An object representing user data [optional] - * @return {Raven} - */ - setUserContext: function setUserContext(user) { - // Intentionally do not merge here since that's an unexpected behavior. - this._globalContext.user = user; - return this; + _sanitizeData: function(data) { + return sanitize(data, this._globalOptions.sanitizeKeys); }, - /* - * Merge extra attributes to be sent along with the payload. - * - * @param {object} extra An object representing extra data [optional] - * @return {Raven} - */ - setExtraContext: function setExtraContext(extra) { - this._mergeContext('extra', extra); - - return this; + _getUuid: function() { + return uuid4(); }, - /* - * Merge tags to be sent along with the payload. - * - * @param {object} tags An object representing tags [optional] - * @return {Raven} - */ - setTagsContext: function setTagsContext(tags) { - this._mergeContext('tags', tags); + _sendProcessedPayload: function(data, callback) { + var self = this; + var globalOptions = this._globalOptions; - return this; - }, + if (!this.isSetup()) return; - /* - * Clear all of the context. - * - * @return {Raven} - */ - clearContext: function clearContext() { - this._globalContext = {}; - return this; - }, + // Try and clean up the packet before sending by truncating long values + data = this._trimPacket(data); - /* - * Get a copy of the current context. This cannot be mutated. - * - * @return {object} copy of context - */ - getContext: function getContext() { - // lol javascript - return JSON.parse(stringify_1(this._globalContext)); - }, + // ideally duplicate error testing should occur *before* dataCallback/shouldSendCallback, + // but this would require copying an un-truncated copy of the data packet, which can be + // arbitrarily deep (extra_data) -- could be worthwhile? will revisit + if (!this._globalOptions.allowDuplicates && this._isRepeatData(data)) { + this._logDebug('warn', 'Raven dropped repeat event: ', data); + return; + } - /* - * Set environment of application - * - * @param {string} environment Typically something like 'production'. - * @return {Raven} - */ - setEnvironment: function setEnvironment(environment) { - this._globalOptions.environment = environment; - return this; - }, + // Send along an event_id if not explicitly passed. + // This event_id can be used to reference the error within Sentry itself. + // Set lastEventId after we know the error should actually be sent + this._lastEventId = data.event_id || (data.event_id = this._getUuid()); - /* - * Set release version of application - * - * @param {string} release Typically something like a git SHA to identify version - * @return {Raven} - */ - setRelease: function setRelease(release) { - this._globalOptions.release = release; - return this; - }, + // Store outbound payload after trim + this._lastData = data; - /* - * Set the dataCallback option - * - * @param {function} callback The callback to run which allows the - * data blob to be mutated before sending - * @return {Raven} - */ - setDataCallback: function setDataCallback(callback) { - var original = this._globalOptions.dataCallback; - this._globalOptions.dataCallback = keepOriginalCallback(original, callback); - return this; - }, + this._logDebug('debug', 'Raven about to send:', data); - /* - * Set the breadcrumbCallback option - * - * @param {function} callback The callback to run which allows filtering - * or mutating breadcrumbs - * @return {Raven} - */ - setBreadcrumbCallback: function setBreadcrumbCallback(callback) { - var original = this._globalOptions.breadcrumbCallback; - this._globalOptions.breadcrumbCallback = keepOriginalCallback(original, callback); - return this; - }, + var auth = { + sentry_version: '7', + sentry_client: 'raven-js/' + this.VERSION, + sentry_key: this._globalKey + }; - /* - * Set the shouldSendCallback option - * - * @param {function} callback The callback to run which allows - * introspecting the blob before sending - * @return {Raven} - */ - setShouldSendCallback: function setShouldSendCallback(callback) { - var original = this._globalOptions.shouldSendCallback; - this._globalOptions.shouldSendCallback = keepOriginalCallback(original, callback); - return this; - }, + if (this._globalSecret) { + auth.sentry_secret = this._globalSecret; + } - /** - * Override the default HTTP transport mechanism that transmits data - * to the Sentry server. - * - * @param {function} transport Function invoked instead of the default - * `makeRequest` handler. - * - * @return {Raven} - */ - setTransport: function setTransport(transport) { - this._globalOptions.transport = transport; - return this; - }, + var exception = data.exception && data.exception.values[0]; - /* - * Get the latest raw exception that was captured by Raven. - * - * @return {error} - */ - lastException: function lastException() { - return this._lastCapturedException; - }, + // only capture 'sentry' breadcrumb is autoBreadcrumbs is truthy + if ( + this._globalOptions.autoBreadcrumbs && + this._globalOptions.autoBreadcrumbs.sentry + ) { + this.captureBreadcrumb({ + category: 'sentry', + message: exception + ? (exception.type ? exception.type + ': ' : '') + exception.value + : data.message, + event_id: data.event_id, + level: data.level || 'error' // presume error unless specified + }); + } - /* - * Get the last event id - * - * @return {string} - */ - lastEventId: function lastEventId() { - return this._lastEventId; - }, + var url = this._globalEndpoint; + (globalOptions.transport || this._makeRequest).call(this, { + url: url, + auth: auth, + data: data, + options: globalOptions, + onSuccess: function success() { + self._resetBackoff(); - /* - * Determine if Raven is setup and ready to go. - * - * @return {boolean} - */ - isSetup: function isSetup() { - if (!this._hasJSON) return false; // needs JSON support + self._triggerEvent('success', { + data: data, + src: url + }); + callback && callback(); + }, + onError: function failure(error) { + self._logDebug('error', 'Raven transport failed to send: ', error); - if (!this._globalServer) { - if (!this.ravenNotConfiguredError) { - this.ravenNotConfiguredError = true; + if (error.request) { + self._setBackoffState(error.request); + } - this._logDebug('error', 'Error: Raven has not been configured.'); + self._triggerEvent('failure', { + data: data, + src: url + }); + error = error || new Error('Raven send failed (no additional details provided)'); + callback && callback(error); } + }); + }, - return false; - } + _makeRequest: function(opts) { + // Auth is intentionally sent as part of query string (NOT as custom HTTP header) to avoid preflight CORS requests + var url = opts.url + '?' + urlencode(opts.auth); - return true; - }, - afterLoad: function afterLoad() { - // TODO: remove window dependence? - // Attempt to initialize Raven on load - var RavenConfig = _window$1.RavenConfig; + var evaluatedHeaders = null; + var evaluatedFetchParameters = {}; - if (RavenConfig) { - this.config(RavenConfig.dsn, RavenConfig.config).install(); + if (opts.options.headers) { + evaluatedHeaders = this._evaluateHash(opts.options.headers); } - }, - showReportDialog: function showReportDialog(options) { - if (!_document // doesn't work without a document (React native) - ) return; - options = options || {}; - var lastEventId = options.eventId || this.lastEventId(); - if (!lastEventId) { - throw new configError('Missing eventId'); + if (opts.options.fetchParameters) { + evaluatedFetchParameters = this._evaluateHash(opts.options.fetchParameters); } - var dsn = options.dsn || this._dsn; + if (supportsFetch()) { + evaluatedFetchParameters.body = stringify(opts.data); - if (!dsn) { - throw new configError('Missing DSN'); - } + var defaultFetchOptions = objectMerge({}, this._fetchDefaults); + var fetchOptions = objectMerge(defaultFetchOptions, evaluatedFetchParameters); - var encode = encodeURIComponent; - var qs = ''; - qs += '?eventId=' + encode(lastEventId); - qs += '&dsn=' + encode(dsn); - var user = options.user || this._globalContext.user; + if (evaluatedHeaders) { + fetchOptions.headers = evaluatedHeaders; + } - if (user) { - if (user.name) qs += '&name=' + encode(user.name); - if (user.email) qs += '&email=' + encode(user.email); + return _window + .fetch(url, fetchOptions) + .then(function(response) { + if (response.ok) { + opts.onSuccess && opts.onSuccess(); + } else { + var error = new Error('Sentry error code: ' + response.status); + // It's called request only to keep compatibility with XHR interface + // and not add more redundant checks in setBackoffState method + error.request = response; + opts.onError && opts.onError(error); + } + }) + ['catch'](function() { + opts.onError && + opts.onError(new Error('Sentry error code: network unavailable')); + }); } - var globalServer = this._getGlobalServer(this._parseDSN(dsn)); - - var script = _document.createElement('script'); - - script.async = true; - script.src = globalServer + '/api/embed/error-page/' + qs; + var request = _window.XMLHttpRequest && new _window.XMLHttpRequest(); + if (!request) return; - (_document.head || _document.body).appendChild(script); - }, + // if browser doesn't support CORS (e.g. IE7), we are out of luck + var hasCORS = 'withCredentials' in request || typeof XDomainRequest !== 'undefined'; - /**** Private functions ****/ - _ignoreNextOnError: function _ignoreNextOnError() { - var self = this; - this._ignoreOnError += 1; - setTimeout(function () { - // onerror should trigger before setTimeout - self._ignoreOnError -= 1; - }); - }, - _triggerEvent: function _triggerEvent(eventType, options) { - // NOTE: `event` is a native browser thing, so let's avoid conflicting wiht it - var evt, key; - if (!this._hasDocument) return; - options = options || {}; - eventType = 'raven' + eventType.substr(0, 1).toUpperCase() + eventType.substr(1); + if (!hasCORS) return; - if (_document.createEvent) { - evt = _document.createEvent('HTMLEvents'); - evt.initEvent(eventType, true, true); + if ('withCredentials' in request) { + request.onreadystatechange = function() { + if (request.readyState !== 4) { + return; + } else if (request.status === 200) { + opts.onSuccess && opts.onSuccess(); + } else if (opts.onError) { + var err = new Error('Sentry error code: ' + request.status); + err.request = request; + opts.onError(err); + } + }; } else { - evt = _document.createEventObject(); - evt.eventType = eventType; - } + request = new XDomainRequest(); + // xdomainrequest cannot go http -> https (or vice versa), + // so always use protocol relative + url = url.replace(/^https?:/, ''); - for (key in options) { - if (hasKey(options, key)) { - evt[key] = options[key]; + // onreadystatechange not supported by XDomainRequest + if (opts.onSuccess) { + request.onload = opts.onSuccess; } - } - - if (_document.createEvent) { - // IE9 if standards - _document.dispatchEvent(evt); - } else { - // IE8 regardless of Quirks or Standards - // IE9 if quirks - try { - _document.fireEvent('on' + evt.eventType.toLowerCase(), evt); - } catch (e) {// Do nothing + if (opts.onError) { + request.onerror = function() { + var err = new Error('Sentry error code: XDomainRequest'); + err.request = request; + opts.onError(err); + }; } } - }, - /** - * Wraps addEventListener to capture UI breadcrumbs - * @param evtName the event name (e.g. "click") - * @returns {Function} - * @private - */ - _breadcrumbEventHandler: function _breadcrumbEventHandler(evtName) { - var self = this; - return function (evt) { - // reset keypress timeout; e.g. triggering a 'click' after - // a 'keypress' will reset the keypress debounce so that a new - // set of keypresses can be recorded - self._keypressTimeout = null; // It's possible this handler might trigger multiple times for the same - // event (e.g. event propagation through node ancestors). Ignore if we've - // already captured the event. + request.open('POST', url); - if (self._lastCapturedEvent === evt) return; - self._lastCapturedEvent = evt; // try/catch both: - // - accessing evt.target (see getsentry/raven-js#838, #768) - // - `htmlTreeAsString` because it's complex, and just accessing the DOM incorrectly - // can throw an exception in some circumstances. + if (evaluatedHeaders) { + each(evaluatedHeaders, function(key, value) { + request.setRequestHeader(key, value); + }); + } - var target; + request.send(stringify(opts.data)); + }, - try { - target = htmlTreeAsString(evt.target); - } catch (e) { - target = ''; + _evaluateHash: function(hash) { + var evaluated = {}; + + for (var key in hash) { + if (hash.hasOwnProperty(key)) { + var value = hash[key]; + evaluated[key] = typeof value === 'function' ? value() : value; } + } - self.captureBreadcrumb({ - category: 'ui.' + evtName, - // e.g. ui.click, ui.input - message: target - }); - }; + return evaluated; }, - /** - * Wraps addEventListener to capture keypress UI events - * @returns {Function} - * @private - */ - _keypressEventHandler: function _keypressEventHandler() { - var self = this, - debounceDuration = 1000; // milliseconds - // TODO: if somehow user switches keypress target before - // debounce timeout is triggered, we will only capture - // a single breadcrumb from the FIRST target (acceptable?) + _logDebug: function(level) { + // We allow `Raven.debug` and `Raven.config(DSN, { debug: true })` to not make backward incompatible API change + if ( + this._originalConsoleMethods[level] && + (this.debug || this._globalOptions.debug) + ) { + // In IE<10 console methods do not have their own 'apply' method + Function.prototype.apply.call( + this._originalConsoleMethods[level], + this._originalConsole, + [].slice.call(arguments, 1) + ); + } + }, - return function (evt) { - var target; + _mergeContext: function(key, context) { + if (isUndefined(context)) { + delete this._globalContext[key]; + } else { + this._globalContext[key] = objectMerge(this._globalContext[key] || {}, context); + } + } +}; - try { - target = evt.target; - } catch (e) { - // just accessing event properties can throw an exception in some rare circumstances - // see: https://github.com/getsentry/raven-js/issues/838 - return; - } +// Deprecations +Raven.prototype.setUser = Raven.prototype.setUserContext; +Raven.prototype.setReleaseContext = Raven.prototype.setRelease; - var tagName = target && target.tagName; // only consider keypress events on actual input elements - // this will disregard keypresses targeting body (e.g. tabbing - // through elements, hotkeys, etc) +module.exports = Raven; - if (!tagName || tagName !== 'INPUT' && tagName !== 'TEXTAREA' && !target.isContentEditable) return; // record first keypress in a series, but ignore subsequent - // keypresses until debounce clears +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"10":10,"11":11,"12":12,"5":5,"6":6,"9":9}],8:[function(_dereq_,module,exports){ +(function (global){ +/** + * Enforces a single instance of the Raven client, and the + * main entry point for Raven. If you are a consumer of the + * Raven library, you SHOULD load this file (vs raven.js). + **/ - var timeout = self._keypressTimeout; +var RavenConstructor = _dereq_(7); - if (!timeout) { - self._breadcrumbEventHandler('input')(evt); - } +// This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) +var _window = + typeof window !== 'undefined' + ? window + : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; +var _Raven = _window.Raven; - clearTimeout(timeout); - self._keypressTimeout = setTimeout(function () { - self._keypressTimeout = null; - }, debounceDuration); - }; - }, +var Raven = new RavenConstructor(); - /** - * Captures a breadcrumb of type "navigation", normalizing input URLs - * @param to the originating URL - * @param from the target URL - * @private - */ - _captureUrlChange: function _captureUrlChange(from, to) { - var parsedLoc = parseUrl(this._location.href); - var parsedTo = parseUrl(to); - var parsedFrom = parseUrl(from); // because onpopstate only tells you the "new" (to) value of location.href, and - // not the previous (from) value, we need to track the value of the current URL - // state ourselves +/* + * Allow multiple versions of Raven to be installed. + * Strip Raven from the global context and returns the instance. + * + * @return {Raven} + */ +Raven.noConflict = function() { + _window.Raven = _Raven; + return Raven; +}; - this._lastHref = to; // Use only the path component of the URL if the URL matches the current - // document (almost all the time when using pushState) +Raven.afterLoad(); - if (parsedLoc.protocol === parsedTo.protocol && parsedLoc.host === parsedTo.host) to = parsedTo.relative; - if (parsedLoc.protocol === parsedFrom.protocol && parsedLoc.host === parsedFrom.host) from = parsedFrom.relative; - this.captureBreadcrumb({ - category: 'navigation', - data: { - to: to, - from: from - } - }); - }, - _patchFunctionToString: function _patchFunctionToString() { - var self = this; - self._originalFunctionToString = Function.prototype.toString; // eslint-disable-next-line no-extend-native +module.exports = Raven; - Function.prototype.toString = function () { - if (typeof this === 'function' && this.__raven__) { - return self._originalFunctionToString.apply(this.__orig__, arguments); - } +/** + * DISCLAIMER: + * + * Expose `Client` constructor for cases where user want to track multiple "sub-applications" in one larger app. + * It's not meant to be used by a wide audience, so pleaaase make sure that you know what you're doing before using it. + * Accidentally calling `install` multiple times, may result in an unexpected behavior that's very hard to debug. + * + * It's called `Client' to be in-line with Raven Node implementation. + * + * HOWTO: + * + * import Raven from 'raven-js'; + * + * const someAppReporter = new Raven.Client(); + * const someOtherAppReporter = new Raven.Client(); + * + * someAppReporter.config('__DSN__', { + * ...config goes here + * }); + * + * someOtherAppReporter.config('__OTHER_DSN__', { + * ...config goes here + * }); + * + * someAppReporter.captureMessage(...); + * someAppReporter.captureException(...); + * someAppReporter.captureBreadcrumb(...); + * + * someOtherAppReporter.captureMessage(...); + * someOtherAppReporter.captureException(...); + * someOtherAppReporter.captureBreadcrumb(...); + * + * It should "just work". + */ +module.exports.Client = RavenConstructor; - return self._originalFunctionToString.apply(this, arguments); - }; - }, - _unpatchFunctionToString: function _unpatchFunctionToString() { - if (this._originalFunctionToString) { - // eslint-disable-next-line no-extend-native - Function.prototype.toString = this._originalFunctionToString; - } - }, +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"7":7}],9:[function(_dereq_,module,exports){ +(function (global){ +var stringify = _dereq_(11); - /** - * Wrap timer functions and event targets to catch errors and provide - * better metadata. - */ - _instrumentTryCatch: function _instrumentTryCatch() { - var self = this; - var wrappedBuiltIns = self._wrappedBuiltIns; +var _window = + typeof window !== 'undefined' + ? window + : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; - function wrapTimeFn(orig) { - return function (fn, t) { - // preserve arity - // Make a copy of the arguments to prevent deoptimization - // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments - var args = new Array(arguments.length); +function isObject(what) { + return typeof what === 'object' && what !== null; +} - for (var i = 0; i < args.length; ++i) { - args[i] = arguments[i]; - } +// Yanked from https://git.io/vS8DV re-used under CC0 +// with some tiny modifications +function isError(value) { + switch ({}.toString.call(value)) { + case '[object Error]': + return true; + case '[object Exception]': + return true; + case '[object DOMException]': + return true; + default: + return value instanceof Error; + } +} - var originalCallback = args[0]; +function isErrorEvent(value) { + return supportsErrorEvent() && {}.toString.call(value) === '[object ErrorEvent]'; +} - if (isFunction(originalCallback)) { - args[0] = self.wrap(originalCallback); - } // IE < 9 doesn't support .call/.apply on setInterval/setTimeout, but it - // also supports only two arguments and doesn't care what this is, so we - // can just call the original function directly. +function isUndefined(what) { + return what === void 0; +} +function isFunction(what) { + return typeof what === 'function'; +} - if (orig.apply) { - return orig.apply(this, args); - } else { - return orig(args[0], args[1]); - } - }; - } +function isPlainObject(what) { + return Object.prototype.toString.call(what) === '[object Object]'; +} - var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; +function isString(what) { + return Object.prototype.toString.call(what) === '[object String]'; +} - function wrapEventTarget(global) { - var proto = _window$1[global] && _window$1[global].prototype; +function isArray(what) { + return Object.prototype.toString.call(what) === '[object Array]'; +} - if (proto && proto.hasOwnProperty && proto.hasOwnProperty('addEventListener')) { - fill(proto, 'addEventListener', function (orig) { - return function (evtName, fn, capture, secure) { - // preserve arity - try { - if (fn && fn.handleEvent) { - fn.handleEvent = self.wrap(fn.handleEvent); - } - } catch (err) {} // can sometimes get 'Permission denied to access property "handle Event' - // More breadcrumb DOM capture ... done here and not in `_instrumentBreadcrumbs` - // so that we don't have more than one wrapper function +function isEmptyObject(what) { + if (!isPlainObject(what)) return false; + for (var _ in what) { + if (what.hasOwnProperty(_)) { + return false; + } + } + return true; +} - var before, clickHandler, keypressHandler; +function supportsErrorEvent() { + try { + new ErrorEvent(''); // eslint-disable-line no-new + return true; + } catch (e) { + return false; + } +} - if (autoBreadcrumbs && autoBreadcrumbs.dom && (global === 'EventTarget' || global === 'Node')) { - // NOTE: generating multiple handlers per addEventListener invocation, should - // revisit and verify we can just use one (almost certainly) - clickHandler = self._breadcrumbEventHandler('click'); - keypressHandler = self._keypressEventHandler(); +function supportsFetch() { + if (!('fetch' in _window)) return false; - before = function before(evt) { - // need to intercept every DOM event in `before` argument, in case that - // same wrapped method is re-used for different events (e.g. mousemove THEN click) - // see #724 - if (!evt) return; - var eventType; + try { + new Headers(); // eslint-disable-line no-new + new Request(''); // eslint-disable-line no-new + new Response(); // eslint-disable-line no-new + return true; + } catch (e) { + return false; + } +} - try { - eventType = evt.type; - } catch (e) { - // just accessing event properties can throw an exception in some rare circumstances - // see: https://github.com/getsentry/raven-js/issues/838 - return; - } +// Despite all stars in the sky saying that Edge supports old draft syntax, aka 'never', 'always', 'origin' and 'default +// https://caniuse.com/#feat=referrer-policy +// It doesn't. And it throw exception instead of ignoring this parameter... +// REF: https://github.com/getsentry/raven-js/issues/1233 +function supportsReferrerPolicy() { + if (!supportsFetch()) return false; - if (eventType === 'click') return clickHandler(evt);else if (eventType === 'keypress') return keypressHandler(evt); - }; - } + try { + // eslint-disable-next-line no-new + new Request('pickleRick', { + referrerPolicy: 'origin' + }); + return true; + } catch (e) { + return false; + } +} - return orig.call(this, evtName, self.wrap(fn, undefined, before), capture, secure); - }; - }, wrappedBuiltIns); - fill(proto, 'removeEventListener', function (orig) { - return function (evt, fn, capture, secure) { - try { - fn = fn && (fn.__raven_wrapper__ ? fn.__raven_wrapper__ : fn); - } catch (e) {// ignore, accessing __raven_wrapper__ will throw in some Selenium environments - } +function supportsPromiseRejectionEvent() { + return typeof PromiseRejectionEvent === 'function'; +} - return orig.call(this, evt, fn, capture, secure); - }; - }, wrappedBuiltIns); - } +function wrappedCallback(callback) { + function dataCallback(data, original) { + var normalizedData = callback(data) || data; + if (original) { + return original(normalizedData) || normalizedData; } + return normalizedData; + } - fill(_window$1, 'setTimeout', wrapTimeFn, wrappedBuiltIns); - fill(_window$1, 'setInterval', wrapTimeFn, wrappedBuiltIns); - - if (_window$1.requestAnimationFrame) { - fill(_window$1, 'requestAnimationFrame', function (orig) { - return function (cb) { - return orig(self.wrap(cb)); - }; - }, wrappedBuiltIns); - } // event targets borrowed from bugsnag-js: - // https://github.com/bugsnag/bugsnag-js/blob/master/src/bugsnag.js#L666 - + return dataCallback; +} - var eventTargets = ['EventTarget', 'Window', 'Node', 'ApplicationCache', 'AudioTrackList', 'ChannelMergerNode', 'CryptoOperation', 'EventSource', 'FileReader', 'HTMLUnknownElement', 'IDBDatabase', 'IDBRequest', 'IDBTransaction', 'KeyOperation', 'MediaController', 'MessagePort', 'ModalWindow', 'Notification', 'SVGElementInstance', 'Screen', 'TextTrack', 'TextTrackCue', 'TextTrackList', 'WebSocket', 'WebSocketWorker', 'Worker', 'XMLHttpRequest', 'XMLHttpRequestEventTarget', 'XMLHttpRequestUpload']; +function each(obj, callback) { + var i, j; - for (var i = 0; i < eventTargets.length; i++) { - wrapEventTarget(eventTargets[i]); + if (isUndefined(obj.length)) { + for (i in obj) { + if (hasKey(obj, i)) { + callback.call(null, i, obj[i]); + } } - }, - - /** - * Instrument browser built-ins w/ breadcrumb capturing - * - XMLHttpRequests - * - DOM interactions (click/typing) - * - window.location changes - * - console - * - * Can be disabled or individually configured via the `autoBreadcrumbs` config option - */ - _instrumentBreadcrumbs: function _instrumentBreadcrumbs() { - var self = this; - var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; - var wrappedBuiltIns = self._wrappedBuiltIns; - - function wrapProp(prop, xhr) { - if (prop in xhr && isFunction(xhr[prop])) { - fill(xhr, prop, function (orig) { - return self.wrap(orig); - }); // intentionally don't track filled methods on XHR instances + } else { + j = obj.length; + if (j) { + for (i = 0; i < j; i++) { + callback.call(null, i, obj[i]); } } + } +} - if (autoBreadcrumbs.xhr && 'XMLHttpRequest' in _window$1) { - var xhrproto = XMLHttpRequest.prototype; - fill(xhrproto, 'open', function (origOpen) { - return function (method, url) { - // preserve arity - // if Sentry key appears in URL, don't capture - if (isString(url) && url.indexOf(self._globalKey) === -1) { - this.__raven_xhr = { - method: method, - url: url, - status_code: null - }; - } - - return origOpen.apply(this, arguments); - }; - }, wrappedBuiltIns); - fill(xhrproto, 'send', function (origSend) { - return function () { - // preserve arity - var xhr = this; - - function onreadystatechangeHandler() { - if (xhr.__raven_xhr && xhr.readyState === 4) { - try { - // touching statusCode in some platforms throws - // an exception - xhr.__raven_xhr.status_code = xhr.status; - } catch (e) { - /* do nothing */ - } +function objectMerge(obj1, obj2) { + if (!obj2) { + return obj1; + } + each(obj2, function(key, value) { + obj1[key] = value; + }); + return obj1; +} - self.captureBreadcrumb({ - type: 'http', - category: 'xhr', - data: xhr.__raven_xhr - }); - } - } +/** + * This function is only used for react-native. + * react-native freezes object that have already been sent over the + * js bridge. We need this function in order to check if the object is frozen. + * So it's ok that objectFrozen returns false if Object.isFrozen is not + * supported because it's not relevant for other "platforms". See related issue: + * https://github.com/getsentry/react-native-sentry/issues/57 + */ +function objectFrozen(obj) { + if (!Object.isFrozen) { + return false; + } + return Object.isFrozen(obj); +} - var props = ['onload', 'onerror', 'onprogress']; +function truncate(str, max) { + if (typeof max !== 'number') { + throw new Error('2nd argument to `truncate` function should be a number'); + } + if (typeof str !== 'string' || max === 0) { + return str; + } + return str.length <= max ? str : str.substr(0, max) + '\u2026'; +} - for (var j = 0; j < props.length; j++) { - wrapProp(props[j], xhr); - } +/** + * hasKey, a better form of hasOwnProperty + * Example: hasKey(MainHostObject, property) === true/false + * + * @param {Object} host object to check property + * @param {string} key to check + */ +function hasKey(object, key) { + return Object.prototype.hasOwnProperty.call(object, key); +} - if ('onreadystatechange' in xhr && isFunction(xhr.onreadystatechange)) { - fill(xhr, 'onreadystatechange', function (orig) { - return self.wrap(orig, undefined, onreadystatechangeHandler); - } - /* intentionally don't track this instrumentation */ - ); - } else { - // if onreadystatechange wasn't actually set by the page on this xhr, we - // are free to set our own and capture the breadcrumb - xhr.onreadystatechange = onreadystatechangeHandler; - } +function joinRegExp(patterns) { + // Combine an array of regular expressions and strings into one large regexp + // Be mad. + var sources = [], + i = 0, + len = patterns.length, + pattern; - return origSend.apply(this, arguments); - }; - }, wrappedBuiltIns); + for (; i < len; i++) { + pattern = patterns[i]; + if (isString(pattern)) { + // If it's a string, we need to escape it + // Taken from: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions + sources.push(pattern.replace(/([.*+?^=!:${}()|\[\]\/\\])/g, '\\$1')); + } else if (pattern && pattern.source) { + // If it's a regexp already, we want to extract the source + sources.push(pattern.source); } + // Intentionally skip other cases + } + return new RegExp(sources.join('|'), 'i'); +} - if (autoBreadcrumbs.xhr && supportsFetch()) { - fill(_window$1, 'fetch', function (origFetch) { - return function () { - // preserve arity - // Make a copy of the arguments to prevent deoptimization - // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments - var args = new Array(arguments.length); - - for (var i = 0; i < args.length; ++i) { - args[i] = arguments[i]; - } - - var fetchInput = args[0]; - var method = 'GET'; - var url; - - if (typeof fetchInput === 'string') { - url = fetchInput; - } else if ('Request' in _window$1 && fetchInput instanceof _window$1.Request) { - url = fetchInput.url; +function urlencode(o) { + var pairs = []; + each(o, function(key, value) { + pairs.push(encodeURIComponent(key) + '=' + encodeURIComponent(value)); + }); + return pairs.join('&'); +} - if (fetchInput.method) { - method = fetchInput.method; - } - } else { - url = '' + fetchInput; - } // if Sentry key appears in URL, don't capture, as it's our own request +// borrowed from https://tools.ietf.org/html/rfc3986#appendix-B +// intentionally using regex and not href parsing trick because React Native and other +// environments where DOM might not be available +function parseUrl(url) { + if (typeof url !== 'string') return {}; + var match = url.match(/^(([^:\/?#]+):)?(\/\/([^\/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?$/); + // coerce to undefined values to empty string so we don't get 'undefined' + var query = match[6] || ''; + var fragment = match[8] || ''; + return { + protocol: match[2], + host: match[4], + path: match[5], + relative: match[5] + query + fragment // everything minus origin + }; +} +function uuid4() { + var crypto = _window.crypto || _window.msCrypto; - if (url.indexOf(self._globalKey) !== -1) { - return origFetch.apply(this, args); - } + if (!isUndefined(crypto) && crypto.getRandomValues) { + // Use window.crypto API if available + // eslint-disable-next-line no-undef + var arr = new Uint16Array(8); + crypto.getRandomValues(arr); - if (args[1] && args[1].method) { - method = args[1].method; - } + // set 4 in byte 7 + arr[3] = (arr[3] & 0xfff) | 0x4000; + // set 2 most significant bits of byte 9 to '10' + arr[4] = (arr[4] & 0x3fff) | 0x8000; - var fetchData = { - method: method, - url: url, - status_code: null - }; - return origFetch.apply(this, args).then(function (response) { - fetchData.status_code = response.status; - self.captureBreadcrumb({ - type: 'http', - category: 'fetch', - data: fetchData - }); - return response; - }); - }; - }, wrappedBuiltIns); - } // Capture breadcrumbs from any click that is unhandled / bubbled up all the way - // to the document. Do this before we instrument addEventListener. + var pad = function(num) { + var v = num.toString(16); + while (v.length < 4) { + v = '0' + v; + } + return v; + }; + return ( + pad(arr[0]) + + pad(arr[1]) + + pad(arr[2]) + + pad(arr[3]) + + pad(arr[4]) + + pad(arr[5]) + + pad(arr[6]) + + pad(arr[7]) + ); + } else { + // http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/2117523#2117523 + return 'xxxxxxxxxxxx4xxxyxxxxxxxxxxxxxxx'.replace(/[xy]/g, function(c) { + var r = (Math.random() * 16) | 0, + v = c === 'x' ? r : (r & 0x3) | 0x8; + return v.toString(16); + }); + } +} - if (autoBreadcrumbs.dom && this._hasDocument) { - if (_document.addEventListener) { - _document.addEventListener('click', self._breadcrumbEventHandler('click'), false); +/** + * Given a child DOM element, returns a query-selector statement describing that + * and its ancestors + * e.g. [HTMLElement] => body > div > input#foo.btn[name=baz] + * @param elem + * @returns {string} + */ +function htmlTreeAsString(elem) { + /* eslint no-extra-parens:0*/ + var MAX_TRAVERSE_HEIGHT = 5, + MAX_OUTPUT_LEN = 80, + out = [], + height = 0, + len = 0, + separator = ' > ', + sepLength = separator.length, + nextStr; - _document.addEventListener('keypress', self._keypressEventHandler(), false); - } else { - // IE8 Compatibility - _document.attachEvent('onclick', self._breadcrumbEventHandler('click')); + while (elem && height++ < MAX_TRAVERSE_HEIGHT) { + nextStr = htmlElementAsString(elem); + // bail out if + // - nextStr is the 'html' element + // - the length of the string that would be created exceeds MAX_OUTPUT_LEN + // (ignore this limit if we are on the first iteration) + if ( + nextStr === 'html' || + (height > 1 && len + out.length * sepLength + nextStr.length >= MAX_OUTPUT_LEN) + ) { + break; + } - _document.attachEvent('onkeypress', self._keypressEventHandler()); - } - } // record navigation (URL) changes - // NOTE: in Chrome App environment, touching history.pushState, *even inside - // a try/catch block*, will cause Chrome to output an error to console.error - // borrowed from: https://github.com/angular/angular.js/pull/13945/files + out.push(nextStr); + len += nextStr.length; + elem = elem.parentNode; + } - var chrome = _window$1.chrome; - var isChromePackagedApp = chrome && chrome.app && chrome.app.runtime; - var hasPushAndReplaceState = !isChromePackagedApp && _window$1.history && history.pushState && history.replaceState; + return out.reverse().join(separator); +} - if (autoBreadcrumbs.location && hasPushAndReplaceState) { - // TODO: remove onpopstate handler on uninstall() - var oldOnPopState = _window$1.onpopstate; +/** + * Returns a simple, query-selector representation of a DOM element + * e.g. [HTMLElement] => input#foo.btn[name=baz] + * @param HTMLElement + * @returns {string} + */ +function htmlElementAsString(elem) { + var out = [], + className, + classes, + key, + attr, + i; - _window$1.onpopstate = function () { - var currentHref = self._location.href; + if (!elem || !elem.tagName) { + return ''; + } - self._captureUrlChange(self._lastHref, currentHref); + out.push(elem.tagName.toLowerCase()); + if (elem.id) { + out.push('#' + elem.id); + } - if (oldOnPopState) { - return oldOnPopState.apply(this, arguments); - } - }; + className = elem.className; + if (className && isString(className)) { + classes = className.split(/\s+/); + for (i = 0; i < classes.length; i++) { + out.push('.' + classes[i]); + } + } + var attrWhitelist = ['type', 'name', 'title', 'alt']; + for (i = 0; i < attrWhitelist.length; i++) { + key = attrWhitelist[i]; + attr = elem.getAttribute(key); + if (attr) { + out.push('[' + key + '="' + attr + '"]'); + } + } + return out.join(''); +} - var historyReplacementFunction = function historyReplacementFunction(origHistFunction) { - // note history.pushState.length is 0; intentionally not declaring - // params to preserve 0 arity - return function () - /* state, title, url */ - { - var url = arguments.length > 2 ? arguments[2] : undefined; // url argument is optional +/** + * Returns true if either a OR b is truthy, but not both + */ +function isOnlyOneTruthy(a, b) { + return !!(!!a ^ !!b); +} - if (url) { - // coerce to string (this is what pushState does) - self._captureUrlChange(self._lastHref, url + ''); - } +/** + * Returns true if both parameters are undefined + */ +function isBothUndefined(a, b) { + return isUndefined(a) && isUndefined(b); +} - return origHistFunction.apply(this, arguments); - }; - }; +/** + * Returns true if the two input exception interfaces have the same content + */ +function isSameException(ex1, ex2) { + if (isOnlyOneTruthy(ex1, ex2)) return false; - fill(history, 'pushState', historyReplacementFunction, wrappedBuiltIns); - fill(history, 'replaceState', historyReplacementFunction, wrappedBuiltIns); - } + ex1 = ex1.values[0]; + ex2 = ex2.values[0]; - if (autoBreadcrumbs.console && 'console' in _window$1 && console.log) { - // console - var consoleMethodCallback = function consoleMethodCallback(msg, data) { - self.captureBreadcrumb({ - message: msg, - level: data.level, - category: 'console' - }); - }; + if (ex1.type !== ex2.type || ex1.value !== ex2.value) return false; - each(['debug', 'info', 'warn', 'error', 'log'], function (_, level) { - wrapConsoleMethod(console, level, consoleMethodCallback); - }); - } - }, - _restoreBuiltIns: function _restoreBuiltIns() { - // restore any wrapped builtins - var builtin; + // in case both stacktraces are undefined, we can't decide so default to false + if (isBothUndefined(ex1.stacktrace, ex2.stacktrace)) return false; - while (this._wrappedBuiltIns.length) { - builtin = this._wrappedBuiltIns.shift(); - var obj = builtin[0], - name = builtin[1], - orig = builtin[2]; - obj[name] = orig; - } - }, - _restoreConsole: function _restoreConsole() { - // eslint-disable-next-line guard-for-in - for (var method in this._originalConsoleMethods) { - this._originalConsole[method] = this._originalConsoleMethods[method]; - } - }, - _drainPlugins: function _drainPlugins() { - var self = this; // FIX ME TODO + return isSameStacktrace(ex1.stacktrace, ex2.stacktrace); +} - each(this._plugins, function (_, plugin) { - var installer = plugin[0]; - var args = plugin[1]; - installer.apply(self, [self].concat(args)); - }); - }, - _parseDSN: function _parseDSN(str) { - var m = dsnPattern.exec(str), - dsn = {}, - i = 7; +/** + * Returns true if the two input stack trace interfaces have the same content + */ +function isSameStacktrace(stack1, stack2) { + if (isOnlyOneTruthy(stack1, stack2)) return false; + + var frames1 = stack1.frames; + var frames2 = stack2.frames; + + // Exit early if frame count differs + if (frames1.length !== frames2.length) return false; + + // Iterate through every frame; bail out if anything differs + var a, b; + for (var i = 0; i < frames1.length; i++) { + a = frames1[i]; + b = frames2[i]; + if ( + a.filename !== b.filename || + a.lineno !== b.lineno || + a.colno !== b.colno || + a['function'] !== b['function'] + ) + return false; + } + return true; +} + +/** + * Polyfill a method + * @param obj object e.g. `document` + * @param name method name present on object e.g. `addEventListener` + * @param replacement replacement function + * @param track {optional} record instrumentation to an array + */ +function fill(obj, name, replacement, track) { + if (obj == null) return; + var orig = obj[name]; + obj[name] = replacement(orig); + obj[name].__raven__ = true; + obj[name].__orig__ = orig; + if (track) { + track.push([obj, name, orig]); + } +} + +/** + * Join values in array + * @param input array of values to be joined together + * @param delimiter string to be placed in-between values + * @returns {string} + */ +function safeJoin(input, delimiter) { + if (!isArray(input)) return ''; + var output = []; + + for (var i = 0; i < input.length; i++) { try { - while (i--) { - dsn[dsnKeys[i]] = m[i] || ''; - } + output.push(String(input[i])); } catch (e) { - throw new configError('Invalid DSN: ' + str); + output.push('[value cannot be serialized]'); } + } - if (dsn.pass && !this._globalOptions.allowSecretKey) { - throw new configError('Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key'); - } + return output.join(delimiter); +} - return dsn; - }, - _getGlobalServer: function _getGlobalServer(uri) { - // assemble the endpoint from the uri pieces - var globalServer = '//' + uri.host + (uri.port ? ':' + uri.port : ''); +// Default Node.js REPL depth +var MAX_SERIALIZE_EXCEPTION_DEPTH = 3; +// 50kB, as 100kB is max payload size, so half sounds reasonable +var MAX_SERIALIZE_EXCEPTION_SIZE = 50 * 1024; +var MAX_SERIALIZE_KEYS_LENGTH = 40; - if (uri.protocol) { - globalServer = uri.protocol + ':' + globalServer; - } +function utf8Length(value) { + return ~-encodeURI(value).split(/%..|./).length; +} - return globalServer; - }, - _handleOnErrorStackInfo: function _handleOnErrorStackInfo() { - // if we are intentionally ignoring errors via onerror, bail out - if (!this._ignoreOnError) { - this._handleStackInfo.apply(this, arguments); - } - }, - _handleStackInfo: function _handleStackInfo(stackInfo, options) { - var frames = this._prepareFrames(stackInfo, options); +function jsonSize(value) { + return utf8Length(JSON.stringify(value)); +} - this._triggerEvent('handle', { - stackInfo: stackInfo, - options: options - }); +function serializeValue(value) { + if (typeof value === 'string') { + var maxLength = 40; + return truncate(value, maxLength); + } else if ( + typeof value === 'number' || + typeof value === 'boolean' || + typeof value === 'undefined' + ) { + return value; + } - this._processException(stackInfo.name, stackInfo.message, stackInfo.url, stackInfo.lineno, frames, options); - }, - _prepareFrames: function _prepareFrames(stackInfo, options) { - var self = this; - var frames = []; + var type = Object.prototype.toString.call(value); - if (stackInfo.stack && stackInfo.stack.length) { - each(stackInfo.stack, function (i, stack) { - var frame = self._normalizeFrame(stack, stackInfo.url); + // Node.js REPL notation + if (type === '[object Object]') return '[Object]'; + if (type === '[object Array]') return '[Array]'; + if (type === '[object Function]') + return value.name ? '[Function: ' + value.name + ']' : '[Function]'; - if (frame) { - frames.push(frame); - } - }); // e.g. frames captured via captureMessage throw + return value; +} - if (options && options.trimHeadFrames) { - for (var j = 0; j < options.trimHeadFrames && j < frames.length; j++) { - frames[j].in_app = false; - } - } - } +function serializeObject(value, depth) { + if (depth === 0) return serializeValue(value); + + if (isPlainObject(value)) { + return Object.keys(value).reduce(function(acc, key) { + acc[key] = serializeObject(value[key], depth - 1); + return acc; + }, {}); + } else if (Array.isArray(value)) { + return value.map(function(val) { + return serializeObject(val, depth - 1); + }); + } - frames = frames.slice(0, this._globalOptions.stackTraceLimit); - return frames; - }, - _normalizeFrame: function _normalizeFrame(frame, stackInfoUrl) { - // normalize the frames data - var normalized = { - filename: frame.url, - lineno: frame.line, - colno: frame.column, - function: frame.func || '?' - }; // Case when we don't have any information about the error - // E.g. throwing a string or raw object, instead of an `Error` in Firefox - // Generating synthetic error doesn't add any value here - // - // We should probably somehow let a user know that they should fix their code + return serializeValue(value); +} - if (!frame.url) { - normalized.filename = stackInfoUrl; // fallback to whole stacks url from onerror handler - } +function serializeException(ex, depth, maxSize) { + if (!isPlainObject(ex)) return ex; - normalized.in_app = !( // determine if an exception came from outside of our app - // first we check the global includePaths list. - !!this._globalOptions.includePaths.test && !this._globalOptions.includePaths.test(normalized.filename) || // Now we check for fun, if the function name is Raven or TraceKit - /(Raven|TraceKit)\./.test(normalized['function']) || // finally, we do a last ditch effort and check for raven.min.js - /raven\.(min\.)?js$/.test(normalized.filename)); - return normalized; - }, - _processException: function _processException(type, message, fileurl, lineno, frames, options) { - var prefixedMessage = (type ? type + ': ' : '') + (message || ''); + depth = typeof depth !== 'number' ? MAX_SERIALIZE_EXCEPTION_DEPTH : depth; + maxSize = typeof depth !== 'number' ? MAX_SERIALIZE_EXCEPTION_SIZE : maxSize; - if (!!this._globalOptions.ignoreErrors.test && (this._globalOptions.ignoreErrors.test(message) || this._globalOptions.ignoreErrors.test(prefixedMessage))) { - return; - } + var serialized = serializeObject(ex, depth); - var stacktrace; + if (jsonSize(stringify(serialized)) > maxSize) { + return serializeException(ex, depth - 1); + } - if (frames && frames.length) { - fileurl = frames[0].filename || fileurl; // Sentry expects frames oldest to newest - // and JS sends them as newest to oldest + return serialized; +} - frames.reverse(); - stacktrace = { - frames: frames - }; - } else if (fileurl) { - stacktrace = { - frames: [{ - filename: fileurl, - lineno: lineno, - in_app: true - }] - }; - } +function serializeKeysForMessage(keys, maxLength) { + if (typeof keys === 'number' || typeof keys === 'string') return keys.toString(); + if (!Array.isArray(keys)) return ''; - if (!!this._globalOptions.ignoreUrls.test && this._globalOptions.ignoreUrls.test(fileurl)) { - return; - } + keys = keys.filter(function(key) { + return typeof key === 'string'; + }); + if (keys.length === 0) return '[object has no keys]'; - if (!!this._globalOptions.whitelistUrls.test && !this._globalOptions.whitelistUrls.test(fileurl)) { - return; - } + maxLength = typeof maxLength !== 'number' ? MAX_SERIALIZE_KEYS_LENGTH : maxLength; + if (keys[0].length >= maxLength) return keys[0]; - var data = objectMerge({ - // sentry.interfaces.Exception - exception: { - values: [{ - type: type, - value: message, - stacktrace: stacktrace - }] - }, - culprit: fileurl - }, options); // Fire away! + for (var usedKeys = keys.length; usedKeys > 0; usedKeys--) { + var serialized = keys.slice(0, usedKeys).join(', '); + if (serialized.length > maxLength) continue; + if (usedKeys === keys.length) return serialized; + return serialized + '\u2026'; + } - this._send(data); - }, - _trimPacket: function _trimPacket(data) { - // For now, we only want to truncate the two different messages - // but this could/should be expanded to just trim everything - var max = this._globalOptions.maxMessageLength; + return ''; +} - if (data.message) { - data.message = truncate(data.message, max); +function sanitize(input, sanitizeKeys) { + if (!isArray(sanitizeKeys) || (isArray(sanitizeKeys) && sanitizeKeys.length === 0)) + return input; + + var sanitizeRegExp = joinRegExp(sanitizeKeys); + var sanitizeMask = '********'; + var safeInput; + + try { + safeInput = JSON.parse(stringify(input)); + } catch (o_O) { + return input; + } + + function sanitizeWorker(workerInput) { + if (isArray(workerInput)) { + return workerInput.map(function(val) { + return sanitizeWorker(val); + }); } - if (data.exception) { - var exception = data.exception.values[0]; - exception.value = truncate(exception.value, max); + if (isPlainObject(workerInput)) { + return Object.keys(workerInput).reduce(function(acc, k) { + if (sanitizeRegExp.test(k)) { + acc[k] = sanitizeMask; + } else { + acc[k] = sanitizeWorker(workerInput[k]); + } + return acc; + }, {}); } - var request = data.request; + return workerInput; + } - if (request) { - if (request.url) { - request.url = truncate(request.url, this._globalOptions.maxUrlLength); - } + return sanitizeWorker(safeInput); +} - if (request.Referer) { - request.Referer = truncate(request.Referer, this._globalOptions.maxUrlLength); - } - } +module.exports = { + isObject: isObject, + isError: isError, + isErrorEvent: isErrorEvent, + isUndefined: isUndefined, + isFunction: isFunction, + isPlainObject: isPlainObject, + isString: isString, + isArray: isArray, + isEmptyObject: isEmptyObject, + supportsErrorEvent: supportsErrorEvent, + supportsFetch: supportsFetch, + supportsReferrerPolicy: supportsReferrerPolicy, + supportsPromiseRejectionEvent: supportsPromiseRejectionEvent, + wrappedCallback: wrappedCallback, + each: each, + objectMerge: objectMerge, + truncate: truncate, + objectFrozen: objectFrozen, + hasKey: hasKey, + joinRegExp: joinRegExp, + urlencode: urlencode, + uuid4: uuid4, + htmlTreeAsString: htmlTreeAsString, + htmlElementAsString: htmlElementAsString, + isSameException: isSameException, + isSameStacktrace: isSameStacktrace, + parseUrl: parseUrl, + fill: fill, + safeJoin: safeJoin, + serializeException: serializeException, + serializeKeysForMessage: serializeKeysForMessage, + sanitize: sanitize +}; - if (data.breadcrumbs && data.breadcrumbs.values) this._trimBreadcrumbs(data.breadcrumbs); - return data; - }, +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"11":11}],10:[function(_dereq_,module,exports){ +(function (global){ +var utils = _dereq_(9); - /** - * Truncate breadcrumb values (right now just URLs) - */ - _trimBreadcrumbs: function _trimBreadcrumbs(breadcrumbs) { - // known breadcrumb properties with urls - // TODO: also consider arbitrary prop values that start with (https?)?:// - var urlProps = ['to', 'from', 'url'], - urlProp, - crumb, - data; +/* + TraceKit - Cross brower stack traces - for (var i = 0; i < breadcrumbs.values.length; ++i) { - crumb = breadcrumbs.values[i]; - if (!crumb.hasOwnProperty('data') || !isObject(crumb.data) || objectFrozen(crumb.data)) continue; - data = objectMerge({}, crumb.data); + This was originally forked from github.com/occ/TraceKit, but has since been + largely re-written and is now maintained as part of raven-js. Tests for + this are in test/vendor. - for (var j = 0; j < urlProps.length; ++j) { - urlProp = urlProps[j]; + MIT license +*/ - if (data.hasOwnProperty(urlProp) && data[urlProp]) { - data[urlProp] = truncate(data[urlProp], this._globalOptions.maxUrlLength); - } - } +var TraceKit = { + collectWindowErrors: true, + debug: false +}; - breadcrumbs.values[i].data = data; - } - }, - _getHttpData: function _getHttpData() { - if (!this._hasNavigator && !this._hasDocument) return; - var httpData = {}; +// This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) +var _window = + typeof window !== 'undefined' + ? window + : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; - if (this._hasNavigator && _navigator.userAgent) { - httpData.headers = { - 'User-Agent': navigator.userAgent - }; - } // Check in `window` instead of `document`, as we may be in ServiceWorker environment +// global reference to slice +var _slice = [].slice; +var UNKNOWN_FUNCTION = '?'; +// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error#Error_types +var ERROR_TYPES_RE = /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/; - if (_window$1.location && _window$1.location.href) { - httpData.url = _window$1.location.href; - } +function getLocationHref() { + if (typeof document === 'undefined' || document.location == null) return ''; - if (this._hasDocument && _document.referrer) { - if (!httpData.headers) httpData.headers = {}; - httpData.headers.Referer = _document.referrer; - } + return document.location.href; +} - return httpData; - }, - _resetBackoff: function _resetBackoff() { - this._backoffDuration = 0; - this._backoffStart = null; - }, - _shouldBackoff: function _shouldBackoff() { - return this._backoffDuration && now() - this._backoffStart < this._backoffDuration; - }, +/** + * TraceKit.report: cross-browser processing of unhandled exceptions + * + * Syntax: + * TraceKit.report.subscribe(function(stackInfo) { ... }) + * TraceKit.report.unsubscribe(function(stackInfo) { ... }) + * TraceKit.report(exception) + * try { ...code... } catch(ex) { TraceKit.report(ex); } + * + * Supports: + * - Firefox: full stack trace with line numbers, plus column number + * on top frame; column number is not guaranteed + * - Opera: full stack trace with line and column numbers + * - Chrome: full stack trace with line and column numbers + * - Safari: line and column number for the top frame only; some frames + * may be missing, and column number is not guaranteed + * - IE: line and column number for the top frame only; some frames + * may be missing, and column number is not guaranteed + * + * In theory, TraceKit should work on all of the following versions: + * - IE5.5+ (only 8.0 tested) + * - Firefox 0.9+ (only 3.5+ tested) + * - Opera 7+ (only 10.50 tested; versions 9 and earlier may require + * Exceptions Have Stacktrace to be enabled in opera:config) + * - Safari 3+ (only 4+ tested) + * - Chrome 1+ (only 5+ tested) + * - Konqueror 3.5+ (untested) + * + * Requires TraceKit.computeStackTrace. + * + * Tries to catch all unhandled exceptions and report them to the + * subscribed handlers. Please note that TraceKit.report will rethrow the + * exception. This is REQUIRED in order to get a useful stack trace in IE. + * If the exception does not reach the top of the browser, you will only + * get a stack trace from the point where TraceKit.report was called. + * + * Handlers receive a stackInfo object as described in the + * TraceKit.computeStackTrace docs. + */ +TraceKit.report = (function reportModuleWrapper() { + var handlers = [], + lastArgs = null, + lastException = null, + lastExceptionStack = null; /** - * Returns true if the in-process data payload matches the signature - * of the previously-sent data - * - * NOTE: This has to be done at this level because TraceKit can generate - * data from window.onerror WITHOUT an exception object (IE8, IE9, - * other old browsers). This can take the form of an "exception" - * data object with a single frame (derived from the onerror args). + * Add a crash handler. + * @param {Function} handler */ - _isRepeatData: function _isRepeatData(current) { - var last = this._lastData; - if (!last || current.message !== last.message || // defined for captureMessage - current.culprit !== last.culprit // defined for captureException/onerror - ) return false; // Stacktrace interface (i.e. from captureMessage) + function subscribe(handler) { + installGlobalHandler(); + handlers.push(handler); + } - if (current.stacktrace || last.stacktrace) { - return isSameStacktrace(current.stacktrace, last.stacktrace); - } else if (current.exception || last.exception) { - // Exception interface (i.e. from captureException/onerror) - return isSameException(current.exception, last.exception); + /** + * Remove a crash handler. + * @param {Function} handler + */ + function unsubscribe(handler) { + for (var i = handlers.length - 1; i >= 0; --i) { + if (handlers[i] === handler) { + handlers.splice(i, 1); + } } + } - return true; - }, - _setBackoffState: function _setBackoffState(request) { - // If we are already in a backoff state, don't change anything - if (this._shouldBackoff()) { + /** + * Remove all crash handlers. + */ + function unsubscribeAll() { + uninstallGlobalHandler(); + handlers = []; + } + + /** + * Dispatch stack information to all handlers. + * @param {Object.} stack + */ + function notifyHandlers(stack, isWindowError) { + var exception = null; + if (isWindowError && !TraceKit.collectWindowErrors) { return; } + for (var i in handlers) { + if (handlers.hasOwnProperty(i)) { + try { + handlers[i].apply(null, [stack].concat(_slice.call(arguments, 2))); + } catch (inner) { + exception = inner; + } + } + } - var status = request.status; // 400 - project_id doesn't exist or some other fatal - // 401 - invalid/revoked dsn - // 429 - too many requests - - if (!(status === 400 || status === 401 || status === 429)) return; - var retry; - - try { - // If Retry-After is not in Access-Control-Expose-Headers, most - // browsers will throw an exception trying to access it - if (supportsFetch()) { - retry = request.headers.get('Retry-After'); - } else { - retry = request.getResponseHeader('Retry-After'); - } // Retry-After is returned in seconds - - - retry = parseInt(retry, 10) * 1000; - } catch (e) { - /* eslint no-empty:0 */ + if (exception) { + throw exception; } + } - this._backoffDuration = retry ? // If Sentry server returned a Retry-After value, use it - retry : // Otherwise, double the last backoff duration (starts at 1 sec) - this._backoffDuration * 2 || 1000; - this._backoffStart = now(); - }, - _send: function _send(data) { - var globalOptions = this._globalOptions; + var _oldOnerrorHandler, _onErrorHandlerInstalled; - var baseData = { - project: this._globalProject, - logger: globalOptions.logger, - platform: 'javascript' - }, - httpData = this._getHttpData(); + /** + * Ensures all global unhandled exceptions are recorded. + * Supported by Gecko and IE. + * @param {string} msg Error message. + * @param {string} url URL of script that generated the exception. + * @param {(number|string)} lineNo The line number at which the error + * occurred. + * @param {?(number|string)} colNo The column number at which the error + * occurred. + * @param {?Error} ex The actual Error object. + */ + function traceKitWindowOnError(msg, url, lineNo, colNo, ex) { + var stack = null; + // If 'ex' is ErrorEvent, get real Error from inside + var exception = utils.isErrorEvent(ex) ? ex.error : ex; + // If 'msg' is ErrorEvent, get real message from inside + var message = utils.isErrorEvent(msg) ? msg.message : msg; - if (httpData) { - baseData.request = httpData; - } // HACK: delete `trimHeadFrames` to prevent from appearing in outbound payload - - - if (data.trimHeadFrames) delete data.trimHeadFrames; - data = objectMerge(baseData, data); // Merge in the tags and extra separately since objectMerge doesn't handle a deep merge - - data.tags = objectMerge(objectMerge({}, this._globalContext.tags), data.tags); - data.extra = objectMerge(objectMerge({}, this._globalContext.extra), data.extra); // Send along our own collected metadata with extra - - data.extra['session:duration'] = now() - this._startTime; + if (lastExceptionStack) { + TraceKit.computeStackTrace.augmentStackTraceWithInitialElement( + lastExceptionStack, + url, + lineNo, + message + ); + processLastException(); + } else if (exception && utils.isError(exception)) { + // non-string `exception` arg; attempt to extract stack trace - if (this._breadcrumbs && this._breadcrumbs.length > 0) { - // intentionally make shallow copy so that additions - // to breadcrumbs aren't accidentally sent in this request - data.breadcrumbs = { - values: [].slice.call(this._breadcrumbs, 0) + // New chrome and blink send along a real error object + // Let's just report that like a normal error. + // See: https://mikewest.org/2013/08/debugging-runtime-errors-with-window-onerror + stack = TraceKit.computeStackTrace(exception); + notifyHandlers(stack, true); + } else { + var location = { + url: url, + line: lineNo, + column: colNo }; - } - - if (this._globalContext.user) { - // sentry.interfaces.User - data.user = this._globalContext.user; - } // Include the environment if it's defined in globalOptions - - - if (globalOptions.environment) data.environment = globalOptions.environment; // Include the release if it's defined in globalOptions - if (globalOptions.release) data.release = globalOptions.release; // Include server_name if it's defined in globalOptions - - if (globalOptions.serverName) data.server_name = globalOptions.serverName; // Cleanup empty properties before sending them to the server + var name = undefined; + var groups; - Object.keys(data).forEach(function (key) { - if (data[key] == null || data[key] === '' || isEmptyObject(data[key])) { - delete data[key]; + if ({}.toString.call(message) === '[object String]') { + var groups = message.match(ERROR_TYPES_RE); + if (groups) { + name = groups[1]; + message = groups[2]; + } } - }); - if (isFunction(globalOptions.dataCallback)) { - data = globalOptions.dataCallback(data) || data; - } // Why?????????? + location.func = UNKNOWN_FUNCTION; + stack = { + name: name, + message: message, + url: getLocationHref(), + stack: [location] + }; + notifyHandlers(stack, true); + } - if (!data || isEmptyObject(data)) { - return; - } // Check if the request should be filtered or not + if (_oldOnerrorHandler) { + return _oldOnerrorHandler.apply(this, arguments); + } + return false; + } - if (isFunction(globalOptions.shouldSendCallback) && !globalOptions.shouldSendCallback(data)) { + function installGlobalHandler() { + if (_onErrorHandlerInstalled) { return; - } // Backoff state: Sentry server previously responded w/ an error (e.g. 429 - too many requests), - // so drop requests until "cool-off" period has elapsed. - - - if (this._shouldBackoff()) { - this._logDebug('warn', 'Raven dropped error due to backoff: ', data); + } + _oldOnerrorHandler = _window.onerror; + _window.onerror = traceKitWindowOnError; + _onErrorHandlerInstalled = true; + } + function uninstallGlobalHandler() { + if (!_onErrorHandlerInstalled) { return; } + _window.onerror = _oldOnerrorHandler; + _onErrorHandlerInstalled = false; + _oldOnerrorHandler = undefined; + } - if (typeof globalOptions.sampleRate === 'number') { - if (Math.random() < globalOptions.sampleRate) { - this._sendProcessedPayload(data); + function processLastException() { + var _lastExceptionStack = lastExceptionStack, + _lastArgs = lastArgs; + lastArgs = null; + lastExceptionStack = null; + lastException = null; + notifyHandlers.apply(null, [_lastExceptionStack, false].concat(_lastArgs)); + } + + /** + * Reports an unhandled Error to TraceKit. + * @param {Error} ex + * @param {?boolean} rethrow If false, do not re-throw the exception. + * Only used for window.onerror to not cause an infinite loop of + * rethrowing. + */ + function report(ex, rethrow) { + var args = _slice.call(arguments, 1); + if (lastExceptionStack) { + if (lastException === ex) { + return; // already caught by an inner catch block, ignore + } else { + processLastException(); } - } else { - this._sendProcessedPayload(data); } - }, - _getUuid: function _getUuid() { - return uuid4(); - }, - _sendProcessedPayload: function _sendProcessedPayload(data, callback) { - var self = this; - var globalOptions = this._globalOptions; - if (!this.isSetup()) return; // Try and clean up the packet before sending by truncating long values - data = this._trimPacket(data); // ideally duplicate error testing should occur *before* dataCallback/shouldSendCallback, - // but this would require copying an un-truncated copy of the data packet, which can be - // arbitrarily deep (extra_data) -- could be worthwhile? will revisit - - if (!this._globalOptions.allowDuplicates && this._isRepeatData(data)) { - this._logDebug('warn', 'Raven dropped repeat event: ', data); + var stack = TraceKit.computeStackTrace(ex); + lastExceptionStack = stack; + lastException = ex; + lastArgs = args; - return; - } // Send along an event_id if not explicitly passed. - // This event_id can be used to reference the error within Sentry itself. - // Set lastEventId after we know the error should actually be sent + // If the stack trace is incomplete, wait for 2 seconds for + // slow slow IE to see if onerror occurs or not before reporting + // this exception; otherwise, we will end up with an incomplete + // stack trace + setTimeout(function() { + if (lastException === ex) { + processLastException(); + } + }, stack.incomplete ? 2000 : 0); + if (rethrow !== false) { + throw ex; // re-throw to propagate to the top level (and cause window.onerror) + } + } - this._lastEventId = data.event_id || (data.event_id = this._getUuid()); // Store outbound payload after trim + report.subscribe = subscribe; + report.unsubscribe = unsubscribe; + report.uninstall = unsubscribeAll; + return report; +})(); - this._lastData = data; +/** + * TraceKit.computeStackTrace: cross-browser stack traces in JavaScript + * + * Syntax: + * s = TraceKit.computeStackTrace(exception) // consider using TraceKit.report instead (see below) + * Returns: + * s.name - exception name + * s.message - exception message + * s.stack[i].url - JavaScript or HTML file URL + * s.stack[i].func - function name, or empty for anonymous functions (if guessing did not work) + * s.stack[i].args - arguments passed to the function, if known + * s.stack[i].line - line number, if known + * s.stack[i].column - column number, if known + * + * Supports: + * - Firefox: full stack trace with line numbers and unreliable column + * number on top frame + * - Opera 10: full stack trace with line and column numbers + * - Opera 9-: full stack trace with line numbers + * - Chrome: full stack trace with line and column numbers + * - Safari: line and column number for the topmost stacktrace element + * only + * - IE: no line numbers whatsoever + * + * Tries to guess names of anonymous functions by looking for assignments + * in the source code. In IE and Safari, we have to guess source file names + * by searching for function bodies inside all page scripts. This will not + * work for scripts that are loaded cross-domain. + * Here be dragons: some function names may be guessed incorrectly, and + * duplicate functions may be mismatched. + * + * TraceKit.computeStackTrace should only be used for tracing purposes. + * Logging of unhandled exceptions should be done with TraceKit.report, + * which builds on top of TraceKit.computeStackTrace and provides better + * IE support by utilizing the window.onerror event to retrieve information + * about the top of the stack. + * + * Note: In IE and Safari, no stack trace is recorded on the Error object, + * so computeStackTrace instead walks its *own* chain of callers. + * This means that: + * * in Safari, some methods may be missing from the stack trace; + * * in IE, the topmost function in the stack trace will always be the + * caller of computeStackTrace. + * + * This is okay for tracing (because you are likely to be calling + * computeStackTrace from the function you want to be the topmost element + * of the stack trace anyway), but not okay for logging unhandled + * exceptions (because your catch block will likely be far away from the + * inner function that actually caused the exception). + * + */ +TraceKit.computeStackTrace = (function computeStackTraceWrapper() { + // Contents of Exception in various browsers. + // + // SAFARI: + // ex.message = Can't find variable: qq + // ex.line = 59 + // ex.sourceId = 580238192 + // ex.sourceURL = http://... + // ex.expressionBeginOffset = 96 + // ex.expressionCaretOffset = 98 + // ex.expressionEndOffset = 98 + // ex.name = ReferenceError + // + // FIREFOX: + // ex.message = qq is not defined + // ex.fileName = http://... + // ex.lineNumber = 59 + // ex.columnNumber = 69 + // ex.stack = ...stack trace... (see the example below) + // ex.name = ReferenceError + // + // CHROME: + // ex.message = qq is not defined + // ex.name = ReferenceError + // ex.type = not_defined + // ex.arguments = ['aa'] + // ex.stack = ...stack trace... + // + // INTERNET EXPLORER: + // ex.message = ... + // ex.name = ReferenceError + // + // OPERA: + // ex.message = ...message... (see the example below) + // ex.name = ReferenceError + // ex.opera#sourceloc = 11 (pretty much useless, duplicates the info in ex.message) + // ex.stacktrace = n/a; see 'opera:config#UserPrefs|Exceptions Have Stacktrace' - this._logDebug('debug', 'Raven about to send:', data); + /** + * Computes stack trace information from the stack property. + * Chrome and Gecko use this property. + * @param {Error} ex + * @return {?Object.} Stack trace information. + */ + function computeStackTraceFromStackProp(ex) { + if (typeof ex.stack === 'undefined' || !ex.stack) return; - var auth = { - sentry_version: '7', - sentry_client: 'raven-js/' + this.VERSION, - sentry_key: this._globalKey - }; + var chrome = /^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i; + var winjs = /^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i; + // NOTE: blob urls are now supposed to always have an origin, therefore it's format + // which is `blob:http://url/path/with-some-uuid`, is matched by `blob.*?:\/` as well + var gecko = /^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i; + // Used to additionally parse URL/line/column from eval frames + var geckoEval = /(\S+) line (\d+)(?: > eval line \d+)* > eval/i; + var chromeEval = /\((\S*)(?::(\d+))(?::(\d+))\)/; + var lines = ex.stack.split('\n'); + var stack = []; + var submatch; + var parts; + var element; + var reference = /^(.*) is undefined$/.exec(ex.message); - if (this._globalSecret) { - auth.sentry_secret = this._globalSecret; - } + for (var i = 0, j = lines.length; i < j; ++i) { + if ((parts = chrome.exec(lines[i]))) { + var isNative = parts[2] && parts[2].indexOf('native') === 0; // start of line + var isEval = parts[2] && parts[2].indexOf('eval') === 0; // start of line + if (isEval && (submatch = chromeEval.exec(parts[2]))) { + // throw out eval line/column and use top-most line/column number + parts[2] = submatch[1]; // url + parts[3] = submatch[2]; // line + parts[4] = submatch[3]; // column + } + element = { + url: !isNative ? parts[2] : null, + func: parts[1] || UNKNOWN_FUNCTION, + args: isNative ? [parts[2]] : [], + line: parts[3] ? +parts[3] : null, + column: parts[4] ? +parts[4] : null + }; + } else if ((parts = winjs.exec(lines[i]))) { + element = { + url: parts[2], + func: parts[1] || UNKNOWN_FUNCTION, + args: [], + line: +parts[3], + column: parts[4] ? +parts[4] : null + }; + } else if ((parts = gecko.exec(lines[i]))) { + var isEval = parts[3] && parts[3].indexOf(' > eval') > -1; + if (isEval && (submatch = geckoEval.exec(parts[3]))) { + // throw out eval line/column and use top-most line number + parts[3] = submatch[1]; + parts[4] = submatch[2]; + parts[5] = null; // no column when eval + } else if (i === 0 && !parts[5] && typeof ex.columnNumber !== 'undefined') { + // FireFox uses this awesome columnNumber property for its top frame + // Also note, Firefox's column number is 0-based and everything else expects 1-based, + // so adding 1 + // NOTE: this hack doesn't work if top-most frame is eval + stack[0].column = ex.columnNumber + 1; + } + element = { + url: parts[3], + func: parts[1] || UNKNOWN_FUNCTION, + args: parts[2] ? parts[2].split(',') : [], + line: parts[4] ? +parts[4] : null, + column: parts[5] ? +parts[5] : null + }; + } else { + continue; + } - var exception = data.exception && data.exception.values[0]; // only capture 'sentry' breadcrumb is autoBreadcrumbs is truthy + if (!element.func && element.line) { + element.func = UNKNOWN_FUNCTION; + } - if (this._globalOptions.autoBreadcrumbs && this._globalOptions.autoBreadcrumbs.sentry) { - this.captureBreadcrumb({ - category: 'sentry', - message: exception ? (exception.type ? exception.type + ': ' : '') + exception.value : data.message, - event_id: data.event_id, - level: data.level || 'error' // presume error unless specified + stack.push(element); + } - }); + if (!stack.length) { + return null; } - var url = this._globalEndpoint; + return { + name: ex.name, + message: ex.message, + url: getLocationHref(), + stack: stack + }; + } - (globalOptions.transport || this._makeRequest).call(this, { + /** + * Adds information about the first frame to incomplete stack traces. + * Safari and IE require this to get complete data on the first frame. + * @param {Object.} stackInfo Stack trace information from + * one of the compute* methods. + * @param {string} url The URL of the script that caused an error. + * @param {(number|string)} lineNo The line number of the script that + * caused an error. + * @param {string=} message The error generated by the browser, which + * hopefully contains the name of the object that caused the error. + * @return {boolean} Whether or not the stack information was + * augmented. + */ + function augmentStackTraceWithInitialElement(stackInfo, url, lineNo, message) { + var initial = { url: url, - auth: auth, - data: data, - options: globalOptions, - onSuccess: function success() { - self._resetBackoff(); + line: lineNo + }; - self._triggerEvent('success', { - data: data, - src: url - }); + if (initial.url && initial.line) { + stackInfo.incomplete = false; - callback && callback(); - }, - onError: function failure(error) { - self._logDebug('error', 'Raven transport failed to send: ', error); + if (!initial.func) { + initial.func = UNKNOWN_FUNCTION; + } - if (error.request) { - self._setBackoffState(error.request); + if (stackInfo.stack.length > 0) { + if (stackInfo.stack[0].url === initial.url) { + if (stackInfo.stack[0].line === initial.line) { + return false; // already in stack trace + } else if ( + !stackInfo.stack[0].line && + stackInfo.stack[0].func === initial.func + ) { + stackInfo.stack[0].line = initial.line; + return false; + } } - - self._triggerEvent('failure', { - data: data, - src: url - }); - - error = error || new Error('Raven send failed (no additional details provided)'); - callback && callback(error); } - }); - }, - _makeRequest: function _makeRequest(opts) { - // Auth is intentionally sent as part of query string (NOT as custom HTTP header) to avoid preflight CORS requests - var url = opts.url + '?' + urlencode(opts.auth); - var evaluatedHeaders = null; - var evaluatedFetchParameters = {}; - - if (opts.options.headers) { - evaluatedHeaders = this._evaluateHash(opts.options.headers); - } - if (opts.options.fetchParameters) { - evaluatedFetchParameters = this._evaluateHash(opts.options.fetchParameters); + stackInfo.stack.unshift(initial); + stackInfo.partial = true; + return true; + } else { + stackInfo.incomplete = true; } - if (supportsFetch()) { - evaluatedFetchParameters.body = stringify_1(opts.data); - var defaultFetchOptions = objectMerge({}, this._fetchDefaults); - var fetchOptions = objectMerge(defaultFetchOptions, evaluatedFetchParameters); + return false; + } - if (evaluatedHeaders) { - fetchOptions.headers = evaluatedHeaders; + /** + * Computes stack trace information by walking the arguments.caller + * chain at the time the exception occurred. This will cause earlier + * frames to be missed but is the only way to get any stack trace in + * Safari and IE. The top frame is restored by + * {@link augmentStackTraceWithInitialElement}. + * @param {Error} ex + * @return {?Object.} Stack trace information. + */ + function computeStackTraceByWalkingCallerChain(ex, depth) { + var functionName = /function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i, + stack = [], + funcs = {}, + recursion = false, + parts, + item, + source; + + for ( + var curr = computeStackTraceByWalkingCallerChain.caller; + curr && !recursion; + curr = curr.caller + ) { + if (curr === computeStackTrace || curr === TraceKit.report) { + // console.log('skipping internal function'); + continue; } - return _window$1.fetch(url, fetchOptions).then(function (response) { - if (response.ok) { - opts.onSuccess && opts.onSuccess(); - } else { - var error = new Error('Sentry error code: ' + response.status); // It's called request only to keep compatibility with XHR interface - // and not add more redundant checks in setBackoffState method - - error.request = response; - opts.onError && opts.onError(error); - } - })['catch'](function () { - opts.onError && opts.onError(new Error('Sentry error code: network unavailable')); - }); - } - - var request = _window$1.XMLHttpRequest && new _window$1.XMLHttpRequest(); - if (!request) return; // if browser doesn't support CORS (e.g. IE7), we are out of luck - - var hasCORS = 'withCredentials' in request || typeof XDomainRequest !== 'undefined'; - if (!hasCORS) return; - - if ('withCredentials' in request) { - request.onreadystatechange = function () { - if (request.readyState !== 4) { - return; - } else if (request.status === 200) { - opts.onSuccess && opts.onSuccess(); - } else if (opts.onError) { - var err = new Error('Sentry error code: ' + request.status); - err.request = request; - opts.onError(err); - } + item = { + url: null, + func: UNKNOWN_FUNCTION, + line: null, + column: null }; - } else { - request = new XDomainRequest(); // xdomainrequest cannot go http -> https (or vice versa), - // so always use protocol relative - - url = url.replace(/^https?:/, ''); // onreadystatechange not supported by XDomainRequest - if (opts.onSuccess) { - request.onload = opts.onSuccess; + if (curr.name) { + item.func = curr.name; + } else if ((parts = functionName.exec(curr.toString()))) { + item.func = parts[1]; + } + + if (typeof item.func === 'undefined') { + try { + item.func = parts.input.substring(0, parts.input.indexOf('{')); + } catch (e) {} } - if (opts.onError) { - request.onerror = function () { - var err = new Error('Sentry error code: XDomainRequest'); - err.request = request; - opts.onError(err); - }; + if (funcs['' + curr]) { + recursion = true; + } else { + funcs['' + curr] = true; } - } - request.open('POST', url); + stack.push(item); + } - if (evaluatedHeaders) { - each(evaluatedHeaders, function (key, value) { - request.setRequestHeader(key, value); - }); + if (depth) { + // console.log('depth is ' + depth); + // console.log('stack is ' + stack.length); + stack.splice(0, depth); } - request.send(stringify_1(opts.data)); - }, - _evaluateHash: function _evaluateHash(hash) { - var evaluated = {}; + var result = { + name: ex.name, + message: ex.message, + url: getLocationHref(), + stack: stack + }; + augmentStackTraceWithInitialElement( + result, + ex.sourceURL || ex.fileName, + ex.line || ex.lineNumber, + ex.message || ex.description + ); + return result; + } - for (var key in hash) { - if (hash.hasOwnProperty(key)) { - var value = hash[key]; - evaluated[key] = typeof value === 'function' ? value() : value; + /** + * Computes a stack trace for an exception. + * @param {Error} ex + * @param {(string|number)=} depth + */ + function computeStackTrace(ex, depth) { + var stack = null; + depth = depth == null ? 0 : +depth; + + try { + stack = computeStackTraceFromStackProp(ex); + if (stack) { + return stack; + } + } catch (e) { + if (TraceKit.debug) { + throw e; } } - return evaluated; - }, - _logDebug: function _logDebug(level) { - if (this._originalConsoleMethods[level] && this.debug) { - // In IE<10 console methods do not have their own 'apply' method - Function.prototype.apply.call(this._originalConsoleMethods[level], this._originalConsole, [].slice.call(arguments, 1)); - } - }, - _mergeContext: function _mergeContext(key, context) { - if (isUndefined(context)) { - delete this._globalContext[key]; - } else { - this._globalContext[key] = objectMerge(this._globalContext[key] || {}, context); + try { + stack = computeStackTraceByWalkingCallerChain(ex, depth + 1); + if (stack) { + return stack; + } + } catch (e) { + if (TraceKit.debug) { + throw e; + } } + return { + name: ex.name, + message: ex.message, + url: getLocationHref() + }; } -}; // Deprecations -Raven$1.prototype.setUser = Raven$1.prototype.setUserContext; -Raven$1.prototype.setReleaseContext = Raven$1.prototype.setRelease; -var raven = Raven$1; + computeStackTrace.augmentStackTraceWithInitialElement = augmentStackTraceWithInitialElement; + computeStackTrace.computeStackTraceFromStackProp = computeStackTraceFromStackProp; -/** - * Enforces a single instance of the Raven client, and the - * main entry point for Raven. If you are a consumer of the - * Raven library, you SHOULD load this file (vs raven.js). - **/ -// This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) + return computeStackTrace; +})(); -var _window = typeof window !== 'undefined' ? window : typeof commonjsGlobal !== 'undefined' ? commonjsGlobal : typeof self !== 'undefined' ? self : {}; +module.exports = TraceKit; -var _Raven = _window.Raven; -var Raven = new raven(); +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"9":9}],11:[function(_dereq_,module,exports){ /* - * Allow multiple versions of Raven to be installed. - * Strip Raven from the global context and returns the instance. - * - * @return {Raven} - */ - -Raven.noConflict = function () { - _window.Raven = _Raven; - return Raven; -}; - -Raven.afterLoad(); -var singleton = Raven; - -/** - * Angular.js plugin - * - * Provides an $exceptionHandler for Angular.js - */ - -var wrappedCallback$1 = utils.wrappedCallback; // See https://github.com/angular/angular.js/blob/v1.4.7/src/minErr.js + json-stringify-safe + Like JSON.stringify, but doesn't throw on circular references. -var angularPattern = /^\[((?:[$a-zA-Z0-9]+:)?(?:[$a-zA-Z0-9]+))\] (.*?)\n?(\S+)$/; -var moduleName = 'ngRaven'; - -function angularPlugin(Raven, angular) { - angular = angular || window.angular; - if (!angular) return; + Originally forked from https://github.com/isaacs/json-stringify-safe + version 5.0.1 on 3/8/2017 and modified to handle Errors serialization + and IE8 compatibility. Tests for this are in test/vendor. - function RavenProvider() { - this.$get = ['$window', function ($window) { - return Raven; - }]; - } + ISC license: https://github.com/isaacs/json-stringify-safe/blob/master/LICENSE +*/ - function ExceptionHandlerProvider($provide) { - $provide.decorator('$exceptionHandler', ['Raven', '$delegate', exceptionHandler]); - } +exports = module.exports = stringify; +exports.getSerialize = serializer; - function exceptionHandler(R, $delegate) { - return function (ex, cause) { - R.captureException(ex, { - extra: { - cause: cause - } - }); - $delegate(ex, cause); - }; +function indexOf(haystack, needle) { + for (var i = 0; i < haystack.length; ++i) { + if (haystack[i] === needle) return i; } - - angular.module(moduleName, []).provider('Raven', RavenProvider).config(['$provide', ExceptionHandlerProvider]); - Raven.setDataCallback(wrappedCallback$1(function (data) { - return angularPlugin._normalizeData(data); - })); + return -1; } -angularPlugin._normalizeData = function (data) { - // We only care about mutating an exception - var exception = data.exception; - - if (exception) { - exception = exception.values[0]; - var matches = angularPattern.exec(exception.value); +function stringify(obj, replacer, spaces, cycleReplacer) { + return JSON.stringify(obj, serializer(replacer, cycleReplacer), spaces); +} - if (matches) { - // This type now becomes something like: $rootScope:inprog - exception.type = matches[1]; - exception.value = matches[2]; - data.message = exception.type + ': ' + exception.value; // auto set a new tag specifically for the angular error url +// https://github.com/ftlabs/js-abbreviate/blob/fa709e5f139e7770a71827b1893f22418097fbda/index.js#L95-L106 +function stringifyError(value) { + var err = { + // These properties are implemented as magical getters and don't show up in for in + stack: value.stack, + message: value.message, + name: value.name + }; - data.extra.angularDocs = matches[3].substr(0, 250); + for (var i in value) { + if (Object.prototype.hasOwnProperty.call(value, i)) { + err[i] = value[i]; } } - return data; -}; - -angularPlugin.moduleName = moduleName; -var angular = angularPlugin; - -/** - * Ember.js plugin - * - * Patches event handler callbacks and ajax callbacks. - */ -function emberPlugin(Raven, Ember) { - Ember = Ember || window.Ember; // quit if Ember isn't on the page + return err; +} - if (!Ember) return; - var _oldOnError = Ember.onerror; +function serializer(replacer, cycleReplacer) { + var stack = []; + var keys = []; - Ember.onerror = function EmberOnError(error) { - Raven.captureException(error); + if (cycleReplacer == null) { + cycleReplacer = function(key, value) { + if (stack[0] === value) { + return '[Circular ~]'; + } + return '[Circular ~.' + keys.slice(0, indexOf(stack, value)).join('.') + ']'; + }; + } - if (typeof _oldOnError === 'function') { - _oldOnError.call(this, error); - } - }; + return function(key, value) { + if (stack.length > 0) { + var thisPos = indexOf(stack, this); + ~thisPos ? stack.splice(thisPos + 1) : stack.push(this); + ~thisPos ? keys.splice(thisPos, Infinity, key) : keys.push(key); - Ember.RSVP.on('error', function (reason) { - if (reason instanceof Error) { - Raven.captureException(reason, { - extra: { - context: 'Unhandled Promise error detected' - } - }); + if (~indexOf(stack, value)) { + value = cycleReplacer.call(this, key, value); + } } else { - Raven.captureMessage('Unhandled Promise error detected', { - extra: { - reason: reason - } - }); + stack.push(value); } - }); -} -var ember = emberPlugin; - -/*global define*/ + return replacer == null + ? value instanceof Error ? stringifyError(value) : value + : replacer.call(this, key, value); + }; +} -/** - * require.js plugin +},{}],12:[function(_dereq_,module,exports){ +/* + * JavaScript MD5 + * https://github.com/blueimp/JavaScript-MD5 * - * Automatically wrap define/require callbacks. (Experimental) + * Copyright 2011, Sebastian Tschan + * https://blueimp.net + * + * Licensed under the MIT license: + * https://opensource.org/licenses/MIT + * + * Based on + * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message + * Digest Algorithm, as defined in RFC 1321. + * Version 2.2 Copyright (C) Paul Johnston 1999 - 2009 + * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet + * Distributed under the BSD License + * See http://pajhome.org.uk/crypt/md5 for more info. */ -function requirePlugin(Raven) { - if (typeof undefined === 'function' && undefined.amd) { - window.define = Raven.wrap({ - deep: false - }, undefined); - window.require = Raven.wrap({ - deep: false - }, commonjsRequire); - } +/* +* Add integers, wrapping at 2^32. This uses 16-bit operations internally +* to work around bugs in some JS interpreters. +*/ +function safeAdd(x, y) { + var lsw = (x & 0xffff) + (y & 0xffff); + var msw = (x >> 16) + (y >> 16) + (lsw >> 16); + return (msw << 16) | (lsw & 0xffff); } -var require_1 = requirePlugin; +/* +* Bitwise rotate a 32-bit number to the left. +*/ +function bitRotateLeft(num, cnt) { + return (num << cnt) | (num >>> (32 - cnt)); +} -/** - * Vue.js 2.0 plugin - * - */ -function formatComponentName(vm) { - if (vm.$root === vm) { - return 'root instance'; +/* +* These functions implement the four basic operations the algorithm uses. +*/ +function md5cmn(q, a, b, x, s, t) { + return safeAdd(bitRotateLeft(safeAdd(safeAdd(a, q), safeAdd(x, t)), s), b); +} +function md5ff(a, b, c, d, x, s, t) { + return md5cmn((b & c) | (~b & d), a, b, x, s, t); +} +function md5gg(a, b, c, d, x, s, t) { + return md5cmn((b & d) | (c & ~d), a, b, x, s, t); +} +function md5hh(a, b, c, d, x, s, t) { + return md5cmn(b ^ c ^ d, a, b, x, s, t); +} +function md5ii(a, b, c, d, x, s, t) { + return md5cmn(c ^ (b | ~d), a, b, x, s, t); +} + +/* +* Calculate the MD5 of an array of little-endian words, and a bit length. +*/ +function binlMD5(x, len) { + /* append padding */ + x[len >> 5] |= 0x80 << (len % 32); + x[(((len + 64) >>> 9) << 4) + 14] = len; + + var i; + var olda; + var oldb; + var oldc; + var oldd; + var a = 1732584193; + var b = -271733879; + var c = -1732584194; + var d = 271733878; + + for (i = 0; i < x.length; i += 16) { + olda = a; + oldb = b; + oldc = c; + oldd = d; + + a = md5ff(a, b, c, d, x[i], 7, -680876936); + d = md5ff(d, a, b, c, x[i + 1], 12, -389564586); + c = md5ff(c, d, a, b, x[i + 2], 17, 606105819); + b = md5ff(b, c, d, a, x[i + 3], 22, -1044525330); + a = md5ff(a, b, c, d, x[i + 4], 7, -176418897); + d = md5ff(d, a, b, c, x[i + 5], 12, 1200080426); + c = md5ff(c, d, a, b, x[i + 6], 17, -1473231341); + b = md5ff(b, c, d, a, x[i + 7], 22, -45705983); + a = md5ff(a, b, c, d, x[i + 8], 7, 1770035416); + d = md5ff(d, a, b, c, x[i + 9], 12, -1958414417); + c = md5ff(c, d, a, b, x[i + 10], 17, -42063); + b = md5ff(b, c, d, a, x[i + 11], 22, -1990404162); + a = md5ff(a, b, c, d, x[i + 12], 7, 1804603682); + d = md5ff(d, a, b, c, x[i + 13], 12, -40341101); + c = md5ff(c, d, a, b, x[i + 14], 17, -1502002290); + b = md5ff(b, c, d, a, x[i + 15], 22, 1236535329); + + a = md5gg(a, b, c, d, x[i + 1], 5, -165796510); + d = md5gg(d, a, b, c, x[i + 6], 9, -1069501632); + c = md5gg(c, d, a, b, x[i + 11], 14, 643717713); + b = md5gg(b, c, d, a, x[i], 20, -373897302); + a = md5gg(a, b, c, d, x[i + 5], 5, -701558691); + d = md5gg(d, a, b, c, x[i + 10], 9, 38016083); + c = md5gg(c, d, a, b, x[i + 15], 14, -660478335); + b = md5gg(b, c, d, a, x[i + 4], 20, -405537848); + a = md5gg(a, b, c, d, x[i + 9], 5, 568446438); + d = md5gg(d, a, b, c, x[i + 14], 9, -1019803690); + c = md5gg(c, d, a, b, x[i + 3], 14, -187363961); + b = md5gg(b, c, d, a, x[i + 8], 20, 1163531501); + a = md5gg(a, b, c, d, x[i + 13], 5, -1444681467); + d = md5gg(d, a, b, c, x[i + 2], 9, -51403784); + c = md5gg(c, d, a, b, x[i + 7], 14, 1735328473); + b = md5gg(b, c, d, a, x[i + 12], 20, -1926607734); + + a = md5hh(a, b, c, d, x[i + 5], 4, -378558); + d = md5hh(d, a, b, c, x[i + 8], 11, -2022574463); + c = md5hh(c, d, a, b, x[i + 11], 16, 1839030562); + b = md5hh(b, c, d, a, x[i + 14], 23, -35309556); + a = md5hh(a, b, c, d, x[i + 1], 4, -1530992060); + d = md5hh(d, a, b, c, x[i + 4], 11, 1272893353); + c = md5hh(c, d, a, b, x[i + 7], 16, -155497632); + b = md5hh(b, c, d, a, x[i + 10], 23, -1094730640); + a = md5hh(a, b, c, d, x[i + 13], 4, 681279174); + d = md5hh(d, a, b, c, x[i], 11, -358537222); + c = md5hh(c, d, a, b, x[i + 3], 16, -722521979); + b = md5hh(b, c, d, a, x[i + 6], 23, 76029189); + a = md5hh(a, b, c, d, x[i + 9], 4, -640364487); + d = md5hh(d, a, b, c, x[i + 12], 11, -421815835); + c = md5hh(c, d, a, b, x[i + 15], 16, 530742520); + b = md5hh(b, c, d, a, x[i + 2], 23, -995338651); + + a = md5ii(a, b, c, d, x[i], 6, -198630844); + d = md5ii(d, a, b, c, x[i + 7], 10, 1126891415); + c = md5ii(c, d, a, b, x[i + 14], 15, -1416354905); + b = md5ii(b, c, d, a, x[i + 5], 21, -57434055); + a = md5ii(a, b, c, d, x[i + 12], 6, 1700485571); + d = md5ii(d, a, b, c, x[i + 3], 10, -1894986606); + c = md5ii(c, d, a, b, x[i + 10], 15, -1051523); + b = md5ii(b, c, d, a, x[i + 1], 21, -2054922799); + a = md5ii(a, b, c, d, x[i + 8], 6, 1873313359); + d = md5ii(d, a, b, c, x[i + 15], 10, -30611744); + c = md5ii(c, d, a, b, x[i + 6], 15, -1560198380); + b = md5ii(b, c, d, a, x[i + 13], 21, 1309151649); + a = md5ii(a, b, c, d, x[i + 4], 6, -145523070); + d = md5ii(d, a, b, c, x[i + 11], 10, -1120210379); + c = md5ii(c, d, a, b, x[i + 2], 15, 718787259); + b = md5ii(b, c, d, a, x[i + 9], 21, -343485551); + + a = safeAdd(a, olda); + b = safeAdd(b, oldb); + c = safeAdd(c, oldc); + d = safeAdd(d, oldd); } + return [a, b, c, d]; +} - var name = vm._isVue ? vm.$options.name || vm.$options._componentTag : vm.name; - return (name ? 'component <' + name + '>' : 'anonymous component') + (vm._isVue && vm.$options.__file ? ' at ' + vm.$options.__file : ''); +/* +* Convert an array of little-endian words to a string +*/ +function binl2rstr(input) { + var i; + var output = ''; + var length32 = input.length * 32; + for (i = 0; i < length32; i += 8) { + output += String.fromCharCode((input[i >> 5] >>> (i % 32)) & 0xff); + } + return output; } -function vuePlugin(Raven, Vue) { - Vue = Vue || window.Vue; // quit if Vue isn't on the page +/* +* Convert a raw string to an array of little-endian words +* Characters >255 have their high-byte silently ignored. +*/ +function rstr2binl(input) { + var i; + var output = []; + output[(input.length >> 2) - 1] = undefined; + for (i = 0; i < output.length; i += 1) { + output[i] = 0; + } + var length8 = input.length * 8; + for (i = 0; i < length8; i += 8) { + output[i >> 5] |= (input.charCodeAt(i / 8) & 0xff) << (i % 32); + } + return output; +} - if (!Vue || !Vue.config) return; - var _oldOnError = Vue.config.errorHandler; +/* +* Calculate the MD5 of a raw string +*/ +function rstrMD5(s) { + return binl2rstr(binlMD5(rstr2binl(s), s.length * 8)); +} - Vue.config.errorHandler = function VueErrorHandler(error, vm, info) { - var metaData = {}; // vm and lifecycleHook are not always available +/* +* Calculate the HMAC-MD5, of a key and some data (raw strings) +*/ +function rstrHMACMD5(key, data) { + var i; + var bkey = rstr2binl(key); + var ipad = []; + var opad = []; + var hash; + ipad[15] = opad[15] = undefined; + if (bkey.length > 16) { + bkey = binlMD5(bkey, key.length * 8); + } + for (i = 0; i < 16; i += 1) { + ipad[i] = bkey[i] ^ 0x36363636; + opad[i] = bkey[i] ^ 0x5c5c5c5c; + } + hash = binlMD5(ipad.concat(rstr2binl(data)), 512 + data.length * 8); + return binl2rstr(binlMD5(opad.concat(hash), 512 + 128)); +} - if (Object.prototype.toString.call(vm) === '[object Object]') { - metaData.componentName = formatComponentName(vm); - metaData.propsData = vm.$options.propsData; - } +/* +* Convert a raw string to a hex string +*/ +function rstr2hex(input) { + var hexTab = '0123456789abcdef'; + var output = ''; + var x; + var i; + for (i = 0; i < input.length; i += 1) { + x = input.charCodeAt(i); + output += hexTab.charAt((x >>> 4) & 0x0f) + hexTab.charAt(x & 0x0f); + } + return output; +} - if (typeof info !== 'undefined') { - metaData.lifecycleHook = info; - } +/* +* Encode a string as utf-8 +*/ +function str2rstrUTF8(input) { + return unescape(encodeURIComponent(input)); +} - Raven.captureException(error, { - extra: metaData - }); +/* +* Take string arguments and return either raw or hex encoded strings +*/ +function rawMD5(s) { + return rstrMD5(str2rstrUTF8(s)); +} +function hexMD5(s) { + return rstr2hex(rawMD5(s)); +} +function rawHMACMD5(k, d) { + return rstrHMACMD5(str2rstrUTF8(k), str2rstrUTF8(d)); +} +function hexHMACMD5(k, d) { + return rstr2hex(rawHMACMD5(k, d)); +} - if (typeof _oldOnError === 'function') { - _oldOnError.call(this, error, vm, info); +function md5(string, key, raw) { + if (!key) { + if (!raw) { + return hexMD5(string); } - }; + return rawMD5(string); + } + if (!raw) { + return hexHMACMD5(key, string); + } + return rawHMACMD5(key, string); } -var vue = vuePlugin; - -/* This file was generated by './scripts/generate-plugin-combinations.js'! */ - -singleton.addPlugin(angular).addPlugin(ember).addPlugin(require_1).addPlugin(vue); -var angular_ember_require_vue = {}; - -return angular_ember_require_vue; +module.exports = md5; -}))); +},{}]},{},[8,1,2,3,4])(8) +}); \ No newline at end of file diff --git a/dist/angular,ember,require,vue/raven.min.js b/dist/angular,ember,require,vue/raven.min.js index 93edf9d09340..0c710d3be1b2 100644 --- a/dist/angular,ember,require,vue/raven.min.js +++ b/dist/angular,ember,require,vue/raven.min.js @@ -1,3 +1,4 @@ -/*! Raven.js 3.22.2 (1b6187b) | github.com/getsentry/raven-js */ -!function(a,b){"object"==typeof exports&&"undefined"!=typeof module?module.exports=b():"function"==typeof define&&define.amd?define(b):a.Raven=b()}(this,function(){"use strict";function a(a,b){return b={exports:{}},a(b,b.exports),b.exports}function b(a){return(b="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(a){return typeof a}:function(a){return a&&"function"==typeof Symbol&&a.constructor===Symbol&&a!==Symbol.prototype?"symbol":typeof a})(a)}function c(a){return"object"===b(a)&&null!==a}function d(a){switch({}.toString.call(a)){case"[object Error]":return!0;case"[object Exception]":return!0;case"[object DOMException]":return!0;default:return a instanceof Error}}function e(a){return l()&&"[object ErrorEvent]"==={}.toString.call(a)}function f(a){return void 0===a}function g(a){return"function"==typeof a}function h(a){return"[object Object]"===Object.prototype.toString.call(a)}function i(a){return"[object String]"===Object.prototype.toString.call(a)}function j(a){return"[object Array]"===Object.prototype.toString.call(a)}function k(a){if(!h(a))return!1;for(var b in a)if(a.hasOwnProperty(b))return!1;return!0}function l(){try{return new ErrorEvent(""),!0}catch(a){return!1}}function m(){if(!("fetch"in R))return!1;try{return new Headers,new Request(""),new Response,!0}catch(a){return!1}}function n(a){function b(b,c){var d=a(b)||b;return c?c(d)||d:d}return b}function o(a,b){var c,d;if(f(a.length))for(c in a)s(a,c)&&b.call(null,c,a[c]);else if(d=a.length)for(c=0;c ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function y(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&i(b))for(c=b.split(/\s+/),f=0;f":"anonymous component")+(a._isVue&&a.$options.__file?" at "+a.$options.__file:"")}function O(a,b){if(b=b||window.Vue,b&&b.config){var c=b.config.errorHandler;b.config.errorHandler=function(b,d,e){var f={};"[object Object]"===Object.prototype.toString.call(d)&&(f.componentName=N(d),f.propsData=d.$options.propsData),"undefined"!=typeof e&&(f.lifecycleHook=e),a.captureException(b,{extra:f}),"function"==typeof c&&c.call(this,b,d,e)}}}var P="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{},Q=Object.setPrototypeOf||function(a,b){return a.C=b,a},R=("object"==typeof Reflect&&Reflect.construct||function(a,b,c){var d,e=[null];return e.push.apply(e,b),d=a.bind.apply(a,e),Q(new d,c.prototype)},"undefined"!=typeof window?window:"undefined"!=typeof P?P:"undefined"!=typeof self?self:{}),S={isObject:c,isError:d,isErrorEvent:e,isUndefined:f,isFunction:g,isPlainObject:h,isString:i,isArray:j,isEmptyObject:k,supportsErrorEvent:l,supportsFetch:m,wrappedCallback:n,each:o,objectMerge:p,truncate:r,objectFrozen:q,hasKey:s,joinRegExp:t,urlencode:u,uuid4:w,htmlTreeAsString:x,htmlElementAsString:y,isSameException:B,isSameStacktrace:C,parseUrl:v,fill:D,safeJoin:E},T={collectWindowErrors:!0,debug:!1},U="undefined"!=typeof window?window:"undefined"!=typeof P?P:"undefined"!=typeof self?self:{},V=[].slice,W="?",X=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;T.report=function(){function a(a){f(),l.push(a)}function b(a){for(var b=l.length-1;b>=0;--b)l[b]===a&&l.splice(b,1)}function c(){g(),l=[]}function d(a,b){var c=null;if(!b||T.collectWindowErrors){for(var d in l)if(l.hasOwnProperty(d))try{l[d].apply(null,[a].concat(V.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function e(a,b,c,e,f){var g=null,i=S.isErrorEvent(f)?f.error:f,k=S.isErrorEvent(a)?a.message:a;if(o)T.computeStackTrace.augmentStackTraceWithInitialElement(o,b,c,k),h();else if(i&&S.isError(i))g=T.computeStackTrace(i),d(g,!0);else{var l,m={url:b,line:c,column:e},n=void 0;if("[object String]"==={}.toString.call(k)){var l=k.match(X);l&&(n=l[1],k=l[2])}m.func=W,g={name:n,message:k,url:F(),stack:[m]},d(g,!0)}return!!j&&j.apply(this,arguments)}function f(){k||(j=U.onerror,U.onerror=e,k=!0)}function g(){k&&(U.onerror=j,k=!1,j=void 0)}function h(){var a=o,b=m;m=null,o=null,n=null,d.apply(null,[a,!1].concat(b))}function i(a,b){var c=V.call(arguments,1);if(o){if(n===a)return;h()}var d=T.computeStackTrace(a);if(o=d,n=a,m=c,setTimeout(function(){n===a&&h()},d.incomplete?2e3:0),b!==!1)throw a}var j,k,l=[],m=null,n=null,o=null;return i.subscribe=a,i.unsubscribe=b,i.uninstall=c,i}(),T.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,d,e=/^\s*at (.*?) ?\(((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,f=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|\[native).*?|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,g=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,h=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,i=/\((\S*)(?::(\d+))(?::(\d+))\)/,j=a.stack.split("\n"),k=[],l=(/^(.*) is undefined$/.exec(a.message),0),m=j.length;l eval")>-1;o&&(b=h.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==l||c[5]||"undefined"==typeof a.columnNumber||(k[0].column=a.columnNumber+1),d={url:c[3],func:c[1]||W,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}!d.func&&d.line&&(d.func=W),k.push(d)}return k.length?{name:a.name,message:a.message,url:F(),stack:k}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=W),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,e){for(var f,g,h=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,i=[],j={},k=!1,l=c.caller;l&&!k;l=l.caller)if(l!==d&&l!==T.report){if(g={url:null,func:W,line:null,column:null},l.name?g.func=l.name:(f=h.exec(l.toString()))&&(g.func=f[1]),"undefined"==typeof g.func)try{g.func=f.input.substring(0,f.input.indexOf("{"))}catch(m){}j[""+l]?k=!0:j[""+l]=!0,i.push(g)}e&&i.splice(0,e);var n={name:a.name,message:a.message,url:F(),stack:i};return b(n,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),n}function d(b,d){var e=null;d=null==d?0:+d;try{if(e=a(b))return e}catch(f){if(T.debug)throw f}try{if(e=c(b,d+1))return e}catch(f){if(T.debug)throw f}return{name:b.name,message:b.message,url:F()}}return d.augmentStackTraceWithInitialElement=b,d.computeStackTraceFromStackProp=a,d}();var Y=T,Z=a(function(a,b){function c(a,b){for(var c=0;c0){var i=c(d,this);~i?d.splice(i+1):d.push(this),~i?f.splice(i,1/0,g):f.push(g),~c(d,h)&&(h=b.call(this,g,h))}else d.push(h);return null==a?h instanceof Error?e(h):h:a.call(this,g,h)}}b=a.exports=d,b.getSerialize=f});G.prototype=new Error,G.prototype.constructor=G;var $=G,_=function(a,b,c){var d=a[b],e=a;if(b in a){var f="warn"===b?"warning":b;a[b]=function(){var a=[].slice.call(arguments),g=S.safeJoin(a," "),h={level:f,logger:"console",extra:{arguments:a}};"assert"===b?a[0]===!1&&(g="Assertion failed: "+(S.safeJoin(a.slice(1)," ")||"console.assert"),h.extra.arguments=a.slice(1),c&&c(g,h)):c&&c(g,h),d&&Function.prototype.apply.call(d,e,a)}}},aa={wrapMethod:_},ba=S.isError,ca=S.isObject,da=S.isErrorEvent,ea=S.isUndefined,fa=S.isFunction,ga=S.isString,ha=S.isArray,ia=S.isEmptyObject,ja=S.each,ka=S.objectMerge,la=S.truncate,ma=S.objectFrozen,na=S.hasKey,oa=S.joinRegExp,pa=S.urlencode,qa=S.uuid4,ra=S.htmlTreeAsString,sa=S.isSameException,ta=S.isSameStacktrace,ua=S.parseUrl,va=S.fill,wa=S.supportsFetch,xa=aa.wrapMethod,ya="source protocol user pass host port path".split(" "),za=/^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/,Aa="undefined"!=typeof window?window:"undefined"!=typeof P?P:"undefined"!=typeof self?self:{},Ba=Aa.document,Ca=Aa.navigator;J.prototype={VERSION:"3.22.2",debug:!1,TraceKit:Y,config:function(a,b){var c=this;if(c.i)return this.D("error","Error: Raven has already been configured"),c;if(!a)return c;var d=c.m;b&&ja(b,function(a,b){"tags"===a||"extra"===a||"user"===a?c.l[a]=b:d[a]=b}),c.setDSN(a),d.ignoreErrors.push(/^Script error\.?$/),d.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/),d.ignoreErrors=oa(d.ignoreErrors),d.ignoreUrls=!!d.ignoreUrls.length&&oa(d.ignoreUrls),d.whitelistUrls=!!d.whitelistUrls.length&&oa(d.whitelistUrls),d.includePaths=oa(d.includePaths),d.maxBreadcrumbs=Math.max(0,Math.min(d.maxBreadcrumbs||100,100));var e={xhr:!0,console:!0,dom:!0,location:!0,sentry:!0},f=d.autoBreadcrumbs;"[object Object]"==={}.toString.call(f)?f=ka(e,f):f!==!1&&(f=e),d.autoBreadcrumbs=f;var g={tryCatch:!0},h=d.instrument;return"[object Object]"==={}.toString.call(h)?h=ka(g,h):h!==!1&&(h=g),d.instrument=h,Y.collectWindowErrors=!!d.collectWindowErrors,c},install:function(){var a=this;return a.isSetup()&&!a.p&&(Y.report.subscribe(function(){a.E.apply(a,arguments)}),a.F(),a.m.instrument&&a.m.instrument.tryCatch&&a.G(),a.m.autoBreadcrumbs&&a.H(),a.I(),a.p=!0),Error.stackTraceLimit=a.m.stackTraceLimit,this},setDSN:function(a){var b=this,c=b.J(a),d=c.path.lastIndexOf("/"),e=c.path.substr(1,d);b.K=a,b.j=c.user,b.L=c.pass&&c.pass.substr(1),b.k=c.path.substr(d+1),b.i=b.M(c),b.N=b.i+"/"+e+"api/"+b.k+"/store/",this.A()},context:function(a,b,c){return fa(a)&&(c=b||[],b=a,a=void 0),this.wrap(a,b).apply(this,c)},wrap:function(a,b,c){function d(){var d=[],f=arguments.length,g=!a||a&&a.deep!==!1;for(c&&fa(c)&&c.apply(this,arguments);f--;)d[f]=g?e.wrap(a,arguments[f]):arguments[f];try{return b.apply(this,d)}catch(h){throw e.O(),e.captureException(h,a),h}}var e=this;if(ea(b)&&!fa(a))return a;if(fa(a)&&(b=a,a=void 0),!fa(b))return b;try{if(b.a)return b;if(b.P)return b.P}catch(f){return b}for(var g in b)na(b,g)&&(d[g]=b[g]);return d.prototype=b.prototype,b.P=d,d.a=!0,d.b=b,d},uninstall:function(){return Y.report.uninstall(),this.Q(),this.R(),this.S(),Error.stackTraceLimit=this.q,this.p=!1,this},captureException:function(a,b){b=ka({trimHeadFrames:0},b?b:{});var c=!ba(a),d=!da(a),e=da(a)&&!a.error;if(c&&d||e)return this.captureMessage(a,ka(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}));da(a)&&(a=a.error),this.f=a;try{var f=Y.computeStackTrace(a);this.T(f,b)}catch(g){if(a!==g)throw g}return this},captureMessage:function(a,b){if(!this.m.ignoreErrors.test||!this.m.ignoreErrors.test(a)){b=b||{};var c,d=ka({message:a+""},b);try{throw new Error(a)}catch(e){c=e}c.name=null;var f=Y.computeStackTrace(c),g=ha(f.stack)&&f.stack[1],h=g&&g.url||"";if((!this.m.ignoreUrls.test||!this.m.ignoreUrls.test(h))&&(!this.m.whitelistUrls.test||this.m.whitelistUrls.test(h))){if(this.m.stacktrace||b&&b.stacktrace){b=ka({fingerprint:a,trimHeadFrames:(b.trimHeadFrames||0)+1},b);var i=this.U(f,b);d.stacktrace={frames:i.reverse()}}return this.V(d),this}}},captureBreadcrumb:function(a){var b=ka({timestamp:H()/1e3},a);if(fa(this.m.breadcrumbCallback)){var c=this.m.breadcrumbCallback(b);if(ca(c)&&!ia(c))b=c;else if(c===!1)return this}return this.w.push(b),this.w.length>this.m.maxBreadcrumbs&&this.w.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.t.push([a,b]),this.p&&this.I(),this},setUserContext:function(a){return this.l.user=a,this},setExtraContext:function(a){return this.W("extra",a),this},setTagsContext:function(a){return this.W("tags",a),this},clearContext:function(){return this.l={},this},getContext:function(){return JSON.parse(Z(this.l))},setEnvironment:function(a){return this.m.environment=a,this},setRelease:function(a){return this.m.release=a,this},setDataCallback:function(a){var b=this.m.dataCallback;return this.m.dataCallback=I(b,a),this},setBreadcrumbCallback:function(a){var b=this.m.breadcrumbCallback;return this.m.breadcrumbCallback=I(b,a),this},setShouldSendCallback:function(a){var b=this.m.shouldSendCallback;return this.m.shouldSendCallback=I(b,a),this},setTransport:function(a){return this.m.transport=a,this},lastException:function(){return this.f},lastEventId:function(){return this.h},isSetup:function(){return!!this.c&&(!!this.i||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.D("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=Aa.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(Ba){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new $("Missing eventId");var c=a.dsn||this.K;if(!c)throw new $("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.l.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.M(this.J(c)),h=Ba.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(Ba.head||Ba.body).appendChild(h)}},O:function(){var a=this;this.o+=1,setTimeout(function(){a.o-=1})},X:function(a,b){var c,d;if(this.d){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),Ba.createEvent?(c=Ba.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=Ba.createEventObject(),c.eventType=a);for(d in b)na(b,d)&&(c[d]=b[d]);if(Ba.createEvent)Ba.dispatchEvent(c);else try{Ba.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},Y:function(a){var b=this;return function(c){if(b.Z=null,b.x!==c){b.x=c;var d;try{d=ra(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},$:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.Z;g||a.Y("input")(c),clearTimeout(g),a.Z=setTimeout(function(){a.Z=null},b)}}},_:function(a,b){var c=ua(this.y.href),d=ua(b),e=ua(a);this.z=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},F:function(){var a=this;a.aa=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.a?a.aa.apply(this.b,arguments):a.aa.apply(this,arguments)}},Q:function(){this.aa&&(Function.prototype.toString=this.aa)},G:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b._(b.z,c+""),a.apply(this,arguments)}};va(history,"pushState",j,d),va(history,"replaceState",j,d)}if(c.console&&"console"in Aa&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};ja(["debug","info","warn","error","log"],function(a,b){xa(console,b,k)})}},R:function(){for(var a;this.v.length;){a=this.v.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},S:function(){for(var a in this.s)this.r[a]=this.s[a]},I:function(){var a=this;ja(this.t,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},J:function(a){var b=za.exec(a),c={},d=7;try{for(;d--;)c[ya[d]]=b[d]||""}catch(e){throw new $("Invalid DSN: "+a)}if(c.pass&&!this.m.allowSecretKey)throw new $("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},M:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},E:function(){this.o||this.T.apply(this,arguments)},T:function(a,b){var c=this.U(a,b);this.X("handle",{stackInfo:a,options:b}),this.ca(a.name,a.message,a.url,a.lineno,c,b)},U:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(ja(a.stack,function(b,e){var f=c.da(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.w,0)}),this.l.user&&(a.user=this.l.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||ia(a[b]))&&delete a[b]}),fa(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!ia(a)&&(!fa(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.ja()?void this.D("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random()":"anonymous component")+(a._isVue&&a.$options.__file?" at "+a.$options.__file:"")}function e(a,b){if(b=b||window.Vue,b&&b.config){var c=b.config.errorHandler;b.config.errorHandler=function(b,e,f){var g={};"[object Object]"===Object.prototype.toString.call(e)&&(g.componentName=d(e),g.propsData=e.$options.propsData),"undefined"!=typeof f&&(g.lifecycleHook=f),a.captureException(b,{extra:g}),"function"==typeof c&&c.call(this,b,e,f)}}}b.exports=e,a(8).addPlugin(b.exports)},{8:8}],5:[function(a,b,c){function d(a){this.name="RavenConfigError",this.message=a}d.prototype=new Error,d.prototype.constructor=d,b.exports=d},{}],6:[function(a,b,c){var d=a(9),e=function(a,b,c){var e=a[b],f=a;if(b in a){var g="warn"===b?"warning":b;a[b]=function(){var a=[].slice.call(arguments),h=d.safeJoin(a," "),i={level:g,logger:"console",extra:{arguments:a}};"assert"===b?a[0]===!1&&(h="Assertion failed: "+(d.safeJoin(a.slice(1)," ")||"console.assert"),i.extra.arguments=a.slice(1),c&&c(h,i)):c&&c(h,i),e&&Function.prototype.apply.call(e,f,a)}}};b.exports={wrapMethod:e}},{9:9}],7:[function(a,b,c){(function(c){function d(){return+new Date}function e(a,b){return q(b)?function(c){return b(c,a)}:b}function f(){this.b=!("object"!=typeof JSON||!JSON.stringify),this.c=!p(Q),this.d=!p(R),this.e=null,this.f=null,this.g=null,this.h=null,this.i=null,this.j=null,this.k={},this.l={release:P.SENTRY_RELEASE&&P.SENTRY_RELEASE.id,logger:"javascript",ignoreErrors:[],ignoreUrls:[],whitelistUrls:[],includePaths:[],headers:null,collectWindowErrors:!0,captureUnhandledRejections:!0,maxMessageLength:0,maxUrlLength:250,stackTraceLimit:50,autoBreadcrumbs:!0,instrument:!0,sampleRate:1,sanitizeKeys:[]},this.m={method:"POST",keepalive:!0,referrerPolicy:I()?"origin":""},this.n=0,this.o=!1,this.p=Error.stackTraceLimit,this.q=P.console||{},this.r={},this.s=[],this.t=d(),this.u=[],this.v=[],this.w=null,this.x=P.location,this.y=this.x&&this.x.href,this.z();for(var a in this.q)this.r[a]=this.q[a]}var g=a(10),h=a(11),i=a(12),j=a(5),k=a(9),l=k.isError,m=k.isObject,n=k.isPlainObject,o=k.isErrorEvent,p=k.isUndefined,q=k.isFunction,r=k.isString,s=k.isArray,t=k.isEmptyObject,u=k.each,v=k.objectMerge,w=k.truncate,x=k.objectFrozen,y=k.hasKey,z=k.joinRegExp,A=k.urlencode,B=k.uuid4,C=k.htmlTreeAsString,D=k.isSameException,E=k.isSameStacktrace,F=k.parseUrl,G=k.fill,H=k.supportsFetch,I=k.supportsReferrerPolicy,J=k.serializeKeysForMessage,K=k.serializeException,L=k.sanitize,M=a(6).wrapMethod,N="source protocol user pass host port path".split(" "),O=/^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/,P="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},Q=P.document,R=P.navigator;f.prototype={VERSION:"3.24.2",debug:!1,TraceKit:g,config:function(a,b){var c=this;if(c.h)return this.A("error","Error: Raven has already been configured"),c;if(!a)return c;var d=c.l;b&&u(b,function(a,b){"tags"===a||"extra"===a||"user"===a?c.k[a]=b:d[a]=b}),c.setDSN(a),d.ignoreErrors.push(/^Script error\.?$/),d.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/),d.ignoreErrors=z(d.ignoreErrors),d.ignoreUrls=!!d.ignoreUrls.length&&z(d.ignoreUrls),d.whitelistUrls=!!d.whitelistUrls.length&&z(d.whitelistUrls),d.includePaths=z(d.includePaths),d.maxBreadcrumbs=Math.max(0,Math.min(d.maxBreadcrumbs||100,100));var e={xhr:!0,console:!0,dom:!0,location:!0,sentry:!0},f=d.autoBreadcrumbs;"[object Object]"==={}.toString.call(f)?f=v(e,f):f!==!1&&(f=e),d.autoBreadcrumbs=f;var h={tryCatch:!0},i=d.instrument;return"[object Object]"==={}.toString.call(i)?i=v(h,i):i!==!1&&(i=h),d.instrument=i,g.collectWindowErrors=!!d.collectWindowErrors,c},install:function(){var a=this;return a.isSetup()&&!a.o&&(g.report.subscribe(function(){a.B.apply(a,arguments)}),a.l.captureUnhandledRejections&&a.C(),a.D(),a.l.instrument&&a.l.instrument.tryCatch&&a.E(),a.l.autoBreadcrumbs&&a.F(),a.G(),a.o=!0),Error.stackTraceLimit=a.l.stackTraceLimit,this},setDSN:function(a){var b=this,c=b.H(a),d=c.path.lastIndexOf("/"),e=c.path.substr(1,d);b.I=a,b.i=c.user,b.J=c.pass&&c.pass.substr(1),b.j=c.path.substr(d+1),b.h=b.K(c),b.L=b.h+"/"+e+"api/"+b.j+"/store/",this.z()},context:function(a,b,c){return q(a)&&(c=b||[],b=a,a=void 0),this.wrap(a,b).apply(this,c)},wrap:function(a,b,c){function d(){var d=[],f=arguments.length,g=!a||a&&a.deep!==!1;for(c&&q(c)&&c.apply(this,arguments);f--;)d[f]=g?e.wrap(a,arguments[f]):arguments[f];try{return b.apply(this,d)}catch(h){throw e.M(),e.captureException(h,a),h}}var e=this;if(p(b)&&!q(a))return a;if(q(a)&&(b=a,a=void 0),!q(b))return b;try{if(b.N)return b;if(b.O)return b.O}catch(f){return b}for(var g in b)y(b,g)&&(d[g]=b[g]);return d.prototype=b.prototype,b.O=d,d.N=!0,d.P=b,d},uninstall:function(){return g.report.uninstall(),this.Q(),this.R(),this.S(),this.T(),Error.stackTraceLimit=this.p,this.o=!1,this},U:function(a){this.A("debug","Raven caught unhandled promise rejection:",a),this.captureException(a.reason,{extra:{unhandledPromiseRejection:!0}})},C:function(){return this.U=this.U.bind(this),P.addEventListener&&P.addEventListener("unhandledrejection",this.U),this},Q:function(){return P.removeEventListener&&P.removeEventListener("unhandledrejection",this.U),this},captureException:function(a,b){if(b=v({trimHeadFrames:0},b?b:{}),o(a)&&a.error)a=a.error;else if(l(a))a=a;else{if(!n(a))return this.captureMessage(a,v(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}));b=this.V(b,a),a=new Error(b.message)}this.e=a;try{var c=g.computeStackTrace(a);this.W(c,b)}catch(d){if(a!==d)throw d}return this},V:function(a,b){var c=Object.keys(b).sort(),d=v(a,{message:"Non-Error exception captured with keys: "+J(c),fingerprint:[i(c)],extra:a.extra||{}});return d.extra.X=K(b),d},captureMessage:function(a,b){if(!this.l.ignoreErrors.test||!this.l.ignoreErrors.test(a)){b=b||{},a+="";var c,d=v({message:a},b);try{throw new Error(a)}catch(e){c=e}c.name=null;var f=g.computeStackTrace(c),h=s(f.stack)&&f.stack[1];h&&"Raven.captureException"===h.func&&(h=f.stack[2]);var i=h&&h.url||"";if((!this.l.ignoreUrls.test||!this.l.ignoreUrls.test(i))&&(!this.l.whitelistUrls.test||this.l.whitelistUrls.test(i))){if(this.l.stacktrace||b&&b.stacktrace){d.fingerprint=null==d.fingerprint?a:d.fingerprint,b=v({trimHeadFrames:0},b),b.trimHeadFrames+=1;var j=this.Y(f,b);d.stacktrace={frames:j.reverse()}}return d.fingerprint&&(d.fingerprint=s(d.fingerprint)?d.fingerprint:[d.fingerprint]),this.Z(d),this}}},captureBreadcrumb:function(a){var b=v({timestamp:d()/1e3},a);if(q(this.l.breadcrumbCallback)){var c=this.l.breadcrumbCallback(b);if(m(c)&&!t(c))b=c;else if(c===!1)return this}return this.v.push(b),this.v.length>this.l.maxBreadcrumbs&&this.v.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.s.push([a,b]),this.o&&this.G(),this},setUserContext:function(a){return this.k.user=a,this},setExtraContext:function(a){return this.$("extra",a),this},setTagsContext:function(a){return this.$("tags",a),this},clearContext:function(){return this.k={},this},getContext:function(){return JSON.parse(h(this.k))},setEnvironment:function(a){return this.l.environment=a,this},setRelease:function(a){return this.l.release=a,this},setDataCallback:function(a){var b=this.l.dataCallback;return this.l.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.l.breadcrumbCallback;return this.l.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.l.shouldSendCallback;return this.l.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.l.transport=a,this},lastException:function(){return this.e},lastEventId:function(){return this.g},isSetup:function(){return!!this.b&&(!!this.h||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.A("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=P.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(Q){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.I;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.k.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.K(this.H(c)),h=Q.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(Q.head||Q.body).appendChild(h)}},M:function(){var a=this;this.n+=1,setTimeout(function(){a.n-=1})},_:function(a,b){var c,d;if(this.c){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),Q.createEvent?(c=Q.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=Q.createEventObject(),c.eventType=a);for(d in b)y(b,d)&&(c[d]=b[d]);if(Q.createEvent)Q.dispatchEvent(c);else try{Q.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},aa:function(a){var b=this;return function(c){if(b.ba=null,b.w!==c){b.w=c;var d;try{d=C(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ca:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.ba;g||a.aa("input")(c),clearTimeout(g),a.ba=setTimeout(function(){a.ba=null},b)}}},da:function(a,b){var c=F(this.x.href),d=F(b),e=F(a);this.y=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},D:function(){var a=this;a.ea=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.N?a.ea.apply(this.P,arguments):a.ea.apply(this,arguments)}},R:function(){this.ea&&(Function.prototype.toString=this.ea)},E:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.da(b.y,c+""),a.apply(this,arguments)}};G(history,"pushState",j,d),G(history,"replaceState",j,d)}if(c.console&&"console"in P&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};u(["debug","info","warn","error","log"],function(a,b){M(console,b,k)})}},S:function(){for(var a;this.u.length;){a=this.u.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},T:function(){for(var a in this.r)this.q[a]=this.r[a]},G:function(){var a=this;u(this.s,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},H:function(a){var b=O.exec(a),c={},d=7;try{for(;d--;)c[N[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.l.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},K:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},B:function(){this.n||this.W.apply(this,arguments)},W:function(a,b){var c=this.Y(a,b);this._("handle",{stackInfo:a,options:b}),this.ga(a.name,a.message,a.url,a.lineno,c,b)},Y:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(u(a.stack,function(b,e){var f=c.ha(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.v,0)}),this.k.user&&(a.user=this.k.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),a=this.qa(a),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||t(a[b]))&&delete a[b]}),q(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!t(a)&&(!q(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.na()?void this.A("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function B(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&j(b))for(c=b.split(/\s+/),f=0;fc?M(a,b-1):d}function N(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?T:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function O(a,b){function c(a){return k(a)?a.map(function(a){return c(a)}):i(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!k(b)||k(b)&&0===b.length)return a;var d,e=w(b),f="********";try{d=JSON.parse(P(a))}catch(g){return a}return c(d)}var P=a(11),Q="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},R=3,S=51200,T=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isUndefined:g,isFunction:h,isPlainObject:i,isString:j,isArray:k,isEmptyObject:l,supportsErrorEvent:m,supportsFetch:n,supportsReferrerPolicy:o,supportsPromiseRejectionEvent:p,wrappedCallback:q,each:r,objectMerge:s,truncate:u,objectFrozen:t,hasKey:v,joinRegExp:w,urlencode:x,uuid4:z,htmlTreeAsString:A,htmlElementAsString:B,isSameException:E,isSameStacktrace:F,parseUrl:y,fill:G,safeJoin:H,serializeException:M,serializeKeysForMessage:N,sanitize:O}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{11:11}],10:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}var e=a(9),f={collectWindowErrors:!0,debug:!1},g="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},h=[].slice,i="?",j=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;f.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function k(a,b){var c=null;if(!b||f.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(h.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,g,h){var l=null,m=e.isErrorEvent(h)?h.error:h,n=e.isErrorEvent(a)?a.message:a;if(v)f.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&e.isError(m))l=f.computeStackTrace(m),k(l,!0);else{var p,r={url:b,line:c,column:g},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(j);p&&(s=p[1],n=p[2])}r.func=i,l={name:s,message:n,url:d(),stack:[r]},k(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=g.onerror,g.onerror=l,r=!0)}function n(){r&&(g.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,k.apply(null,[a,!1].concat(b))}function p(a,b){var c=h.call(arguments,1);if(v){if(u===a)return;o()}var d=f.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),f.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,e,f=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,g=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,h=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,j=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,k=/\((\S*)(?::(\d+))(?::(\d+))\)/,l=a.stack.split("\n"),m=[],n=(/^(.*) is undefined$/.exec(a.message),0),o=l.length;n eval")>-1;q&&(b=j.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==n||c[5]||"undefined"==typeof a.columnNumber||(m[0].column=a.columnNumber+1),e={url:c[3],func:c[1]||i,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}!e.func&&e.line&&(e.func=i),m.push(e)}return m.length?{name:a.name,message:a.message,url:d(),stack:m}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=i),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,g){for(var h,j,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==e&&o!==f.report){ +if(j={url:null,func:i,line:null,column:null},o.name?j.func=o.name:(h=k.exec(o.toString()))&&(j.func=h[1]),"undefined"==typeof j.func)try{j.func=h.input.substring(0,h.input.indexOf("{"))}catch(p){}m[""+o]?n=!0:m[""+o]=!0,l.push(j)}g&&l.splice(0,g);var q={name:a.name,message:a.message,url:d(),stack:l};return b(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),q}function e(b,e){var g=null;e=null==e?0:+e;try{if(g=a(b))return g}catch(h){if(f.debug)throw h}try{if(g=c(b,e+1))return g}catch(h){if(f.debug)throw h}return{name:b.name,message:b.message,url:d()}}return e.augmentStackTraceWithInitialElement=b,e.computeStackTraceFromStackProp=a,e}(),b.exports=f}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{9:9}],11:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}],12:[function(a,b,c){function d(a,b){var c=(65535&a)+(65535&b),d=(a>>16)+(b>>16)+(c>>16);return d<<16|65535&c}function e(a,b){return a<>>32-b}function f(a,b,c,f,g,h){return d(e(d(d(b,a),d(f,h)),g),c)}function g(a,b,c,d,e,g,h){return f(b&c|~b&d,a,b,e,g,h)}function h(a,b,c,d,e,g,h){return f(b&d|c&~d,a,b,e,g,h)}function i(a,b,c,d,e,g,h){return f(b^c^d,a,b,e,g,h)}function j(a,b,c,d,e,g,h){return f(c^(b|~d),a,b,e,g,h)}function k(a,b){a[b>>5]|=128<>>9<<4)+14]=b;var c,e,f,k,l,m=1732584193,n=-271733879,o=-1732584194,p=271733878;for(c=0;c>5]>>>b%32&255);return c}function m(a){var b,c=[];for(c[(a.length>>2)-1]=void 0,b=0;b>5]|=(255&a.charCodeAt(b/8))<16&&(e=k(e,8*a.length)),c=0;c<16;c+=1)f[c]=909522486^e[c],g[c]=1549556828^e[c];return d=k(f.concat(m(b)),512+8*b.length),l(k(g.concat(d),640))}function p(a){var b,c,d="0123456789abcdef",e="";for(c=0;c>>4&15)+d.charAt(15&b);return e}function q(a){return unescape(encodeURIComponent(a))}function r(a){return n(q(a))}function s(a){return p(r(a))}function t(a,b){return o(q(a),q(b))}function u(a,b){return p(t(a,b))}function v(a,b,c){return b?c?t(b,a):u(b,a):c?r(a):s(a)}b.exports=v},{}]},{},[8,1,2,3,4])(8)}); //# sourceMappingURL=raven.min.js.map \ No newline at end of file diff --git a/dist/angular,ember,require,vue/raven.min.js.map b/dist/angular,ember,require,vue/raven.min.js.map index 57785e791f48..a06d838ac97f 100644 --- a/dist/angular,ember,require,vue/raven.min.js.map +++ b/dist/angular,ember,require,vue/raven.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["raven.js"],"names":["global","factory","exports","module","define","amd","Raven","this","createCommonjsModule","fn","_typeof","obj","Symbol","iterator","constructor","prototype","isObject$1","what","isError$1","value","toString","call","Error","isErrorEvent$1","supportsErrorEvent","isUndefined$1","isFunction$1","isPlainObject","Object","isString$1","isArray$1","isEmptyObject$1","_","hasOwnProperty","ErrorEvent","e","supportsFetch$1","_window$3","Headers","Request","Response","wrappedCallback","callback","dataCallback","data","original","normalizedData","each$1","i","j","length","hasKey$1","objectMerge$1","obj1","obj2","key","objectFrozen$1","isFrozen","truncate$1","str","max","substr","object","joinRegExp$1","patterns","pattern","sources","len","push","replace","source","RegExp","join","urlencode$1","o","pairs","encodeURIComponent","parseUrl$1","url","match","query","fragment","protocol","host","path","relative","uuid4$1","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","r","Math","random","htmlTreeAsString$1","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","reverse","className","classes","attr","tagName","toLowerCase","id","split","attrWhitelist","getAttribute","isOnlyOneTruthy","a","b","isBothUndefined","isSameException$1","ex1","ex2","values","type","stacktrace","isSameStacktrace$1","stack1","stack2","frames1","frames","frames2","filename","lineno","colno","fill$1","name","replacement","track","orig","__raven__","__orig__","safeJoin","input","delimiter","output","String","getLocationHref","document","location","href","RavenConfigError","message","now","Date","keepOriginalCallback","isFunction","Raven$1","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window$1","SENTRY_RELEASE","logger","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","_fetchDefaults","method","keepalive","referrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","console","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","_lastHref","_resetBackoff","angularPlugin","angular","RavenProvider","$get","$window","ExceptionHandlerProvider","$provide","decorator","exceptionHandler","R","$delegate","ex","cause","captureException","extra","window","moduleName","provider","config","setDataCallback","wrappedCallback$1","_normalizeData","emberPlugin","Ember","_oldOnError","onerror","error","RSVP","on","reason","context","captureMessage","requirePlugin","formatComponentName","vm","$root","_isVue","$options","_componentTag","__file","vuePlugin","Vue","errorHandler","info","metaData","componentName","propsData","lifecycleHook","commonjsGlobal","self","_sPO","setPrototypeOf","p","__proto__","Reflect","construct","Parent","args","Class","Constructor","apply","bind","utils","isObject","isError","isErrorEvent","isString","isArray","isEmptyObject","supportsFetch","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","TraceKit","debug","_window$2","_slice","slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","report","subscribe","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","stack","isWindowError","exception","concat","arguments","inner","traceKitWindowOnError","msg","lineNo","colNo","lastExceptionStack","computeStackTrace","augmentStackTraceWithInitialElement","processLastException","groups","line","column","undefined","func","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","lastException","rethrow","setTimeout","incomplete","uninstall","computeStackTraceFromStackProp","submatch","parts","element","chrome","gecko","winjs","geckoEval","chromeEval","lines","exec","isNative","indexOf","isEval","columnNumber","stackInfo","initial","unshift","partial","computeStackTraceByWalkingCallerChain","depth","item","functionName","funcs","recursion","curr","caller","substring","result","sourceURL","fileName","lineNumber","description","tracekit","stringify_1","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","err","keys","thisPos","Infinity","getSerialize","configError","wrapMethod","level","originalConsoleLevel","originalConsole","sentryLevel","Function","console$1","wrapConsoleMethod","dsnKeys","dsnPattern","navigator","VERSION","dsn","options","_logDebug","globalOptions","setDSN","maxBreadcrumbs","min","autoBreadcrumbDefaults","xhr","dom","sentry","instrumentDefaults","tryCatch","install","isSetup","_handleOnErrorStackInfo","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","lastIndexOf","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","wrap","_before","wrapped","deep","_ignoreNextOnError","__raven_wrapper__","property","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","trimHeadFrames","isNotError","isNotErrorEvent","isErrorEventWithoutError","_handleStackInfo","test","initialCall","fileurl","fingerprint","_prepareFrames","_send","captureBreadcrumb","crumb","timestamp","breadcrumbCallback","shift","addPlugin","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","O","X","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","Y","evtName","_keypressTimeout","target","category","$","debounceDuration","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","from","to","parsedLoc","parsedTo","parsedFrom","F","_originalFunctionToString","Q","G","wrapTimeFn","t","Array","originalCallback","wrapEventTarget","proto","capture","secure","handleEvent","before","clickHandler","keypressHandler","_keypressEventHandler","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","H","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","onreadystatechange","origFetch","fetchInput","fetchData","then","response","addEventListener","attachEvent","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","builtin","S","I","installer","J","m","allowSecretKey","M","port","E","T","_triggerEvent","_processException","U","frame","_normalizeFrame","in_app","da","stackInfoUrl","normalized","function","ca","prefixedMessage","culprit","ea","request","Referer","breadcrumbs","_trimBreadcrumbs","fa","urlProp","urlProps","ga","httpData","userAgent","User-Agent","referrer","A","_backoffDuration","_backoffStart","ja","ka","current","last","la","_shouldBackoff","retry","get","getResponseHeader","parseInt","V","baseData","project","platform","_getHttpData","serverName","server_name","forEach","_sendProcessedPayload","na","ma","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","oa","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","onload","open","setRequestHeader","send","pa","hash","evaluated","D","W","setUser","setReleaseContext","raven","_window","_Raven","noConflict","singleton","angularPattern","matches","angularDocs","ember","require_1","vue","angular_ember_require_vue"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file +{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","angularPlugin","angular","RavenProvider","$get","$window","ExceptionHandlerProvider","$provide","decorator","exceptionHandler","R","$delegate","ex","cause","captureException","extra","moduleName","provider","config","setDataCallback","wrappedCallback","data","_normalizeData","angularPattern","exception","values","matches","exec","value","type","message","angularDocs","substr","addPlugin","8","9","2","emberPlugin","Ember","_oldOnError","onerror","error","RSVP","on","reason","context","captureMessage","3","requirePlugin","wrap","deep","4","formatComponentName","vm","$root","name","_isVue","$options","_componentTag","__file","vuePlugin","Vue","errorHandler","info","metaData","Object","prototype","toString","componentName","propsData","lifecycleHook","5","RavenConfigError","constructor","6","utils","wrapMethod","console","level","callback","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","msg","safeJoin","logger","Function","apply","7","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","sanitizeKeys","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isError","isObject","isPlainObject","isErrorEvent","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","sanitize","wrapConsoleMethod","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","dsn","options","_logDebug","globalOptions","key","setDSN","push","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","func","undefined","_before","wrapped","_ignoreNextOnError","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","U","event","unhandledPromiseRejection","C","_promiseRejectionHandler","bind","addEventListener","Q","removeEventListener","trimHeadFrames","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","V","currentOptions","exKeys","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","M","setTimeout","_","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","aa","evtName","_keypressTimeout","target","category","ca","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","da","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","D","_originalFunctionToString","E","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","F","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","S","builtin","T","G","installer","concat","H","str","m","allowSecretKey","K","port","B","W","stackInfo","_triggerEvent","_processException","lineno","Y","frame","_normalizeFrame","in_app","ha","stackInfoUrl","normalized","filename","line","colno","column","function","ga","prefixedMessage","culprit","ia","request","Referer","breadcrumbs","_trimBreadcrumbs","ja","urlProp","urlProps","ka","httpData","userAgent","User-Agent","referrer","z","_backoffDuration","_backoffStart","na","oa","current","last","pa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Z","baseData","project","platform","_getHttpData","serverName","server_name","_sanitizeData","forEach","random","_sendProcessedPayload","qa","sa","ra","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","ta","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","open","setRequestHeader","send","ua","hash","evaluated","A","$","setUser","setReleaseContext","10","11","12","RavenConstructor","_Raven","noConflict","Client","what","supportsErrorEvent","ErrorEvent","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","sanitizeMask","safeInput","o_O","getLocationHref","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","y","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","charAt","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","string","raw"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file diff --git a/dist/angular,ember,require/raven.js b/dist/angular,ember,require/raven.js index 90eaf8124bde..750cefc7e227 100644 --- a/dist/angular,ember,require/raven.js +++ b/dist/angular,ember,require/raven.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.22.2 (1b6187b) | github.com/getsentry/raven-js */ +/*! Raven.js 3.24.2 (540f32b) | github.com/getsentry/raven-js */ /* * Includes TraceKit @@ -10,3254 +10,4022 @@ * */ -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : - typeof define === 'function' && define.amd ? define(factory) : - (global.Raven = factory()); -}(this, (function () { 'use strict'; +(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.Raven = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o href parsing trick because React Native and other -// environments where DOM might not be available - - -function parseUrl$1(url) { - if (typeof url !== 'string') return {}; - var match = url.match(/^(([^:\/?#]+):)?(\/\/([^\/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?$/); // coerce to undefined values to empty string so we don't get 'undefined' - - var query = match[6] || ''; - var fragment = match[8] || ''; - return { - protocol: match[2], - host: match[4], - path: match[5], - relative: match[5] + query + fragment // everything minus origin - +// First, check for JSON support +// If there is no JSON, we no-op the core features of Raven +// since JSON is required to encode the payload +function Raven() { + this._hasJSON = !!(typeof JSON === 'object' && JSON.stringify); + // Raven can run in contexts where there's no document (react-native) + this._hasDocument = !isUndefined(_document); + this._hasNavigator = !isUndefined(_navigator); + this._lastCapturedException = null; + this._lastData = null; + this._lastEventId = null; + this._globalServer = null; + this._globalKey = null; + this._globalProject = null; + this._globalContext = {}; + this._globalOptions = { + // SENTRY_RELEASE can be injected by https://github.com/getsentry/sentry-webpack-plugin + release: _window.SENTRY_RELEASE && _window.SENTRY_RELEASE.id, + logger: 'javascript', + ignoreErrors: [], + ignoreUrls: [], + whitelistUrls: [], + includePaths: [], + headers: null, + collectWindowErrors: true, + captureUnhandledRejections: true, + maxMessageLength: 0, + // By default, truncates URL values to 250 chars + maxUrlLength: 250, + stackTraceLimit: 50, + autoBreadcrumbs: true, + instrument: true, + sampleRate: 1, + sanitizeKeys: [] }; -} - -function uuid4$1() { - var crypto = _window$3.crypto || _window$3.msCrypto; - - if (!isUndefined$1(crypto) && crypto.getRandomValues) { - // Use window.crypto API if available - // eslint-disable-next-line no-undef - var arr = new Uint16Array(8); - crypto.getRandomValues(arr); // set 4 in byte 7 - - arr[3] = arr[3] & 0xfff | 0x4000; // set 2 most significant bits of byte 9 to '10' - - arr[4] = arr[4] & 0x3fff | 0x8000; - - var pad = function pad(num) { - var v = num.toString(16); - - while (v.length < 4) { - v = '0' + v; - } - - return v; - }; + this._fetchDefaults = { + method: 'POST', + keepalive: true, + // Despite all stars in the sky saying that Edge supports old draft syntax, aka 'never', 'always', 'origin' and 'default + // https://caniuse.com/#feat=referrer-policy + // It doesn't. And it throw exception instead of ignoring this parameter... + // REF: https://github.com/getsentry/raven-js/issues/1233 + referrerPolicy: supportsReferrerPolicy() ? 'origin' : '' + }; + this._ignoreOnError = 0; + this._isRavenInstalled = false; + this._originalErrorStackTraceLimit = Error.stackTraceLimit; + // capture references to window.console *and* all its methods first + // before the console plugin has a chance to monkey patch + this._originalConsole = _window.console || {}; + this._originalConsoleMethods = {}; + this._plugins = []; + this._startTime = now(); + this._wrappedBuiltIns = []; + this._breadcrumbs = []; + this._lastCapturedEvent = null; + this._keypressTimeout; + this._location = _window.location; + this._lastHref = this._location && this._location.href; + this._resetBackoff(); - return pad(arr[0]) + pad(arr[1]) + pad(arr[2]) + pad(arr[3]) + pad(arr[4]) + pad(arr[5]) + pad(arr[6]) + pad(arr[7]); - } else { - // http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/2117523#2117523 - return 'xxxxxxxxxxxx4xxxyxxxxxxxxxxxxxxx'.replace(/[xy]/g, function (c) { - var r = Math.random() * 16 | 0, - v = c === 'x' ? r : r & 0x3 | 0x8; - return v.toString(16); - }); + // eslint-disable-next-line guard-for-in + for (var method in this._originalConsole) { + this._originalConsoleMethods[method] = this._originalConsole[method]; } } -/** - * Given a child DOM element, returns a query-selector statement describing that - * and its ancestors - * e.g. [HTMLElement] => body > div > input#foo.btn[name=baz] - * @param elem - * @returns {string} - */ - -function htmlTreeAsString$1(elem) { - /* eslint no-extra-parens:0*/ - var MAX_TRAVERSE_HEIGHT = 5, - MAX_OUTPUT_LEN = 80, - out = [], - height = 0, - len = 0, - separator = ' > ', - sepLength = separator.length, - nextStr; +/* + * The core Raven singleton + * + * @this {Raven} + */ - while (elem && height++ < MAX_TRAVERSE_HEIGHT) { - nextStr = htmlElementAsString(elem); // bail out if - // - nextStr is the 'html' element - // - the length of the string that would be created exceeds MAX_OUTPUT_LEN - // (ignore this limit if we are on the first iteration) +Raven.prototype = { + // Hardcode version string so that raven source can be loaded directly via + // webpack (using a build step causes webpack #1617). Grunt verifies that + // this value matches package.json during build. + // See: https://github.com/getsentry/raven-js/issues/465 + VERSION: '3.24.2', - if (nextStr === 'html' || height > 1 && len + out.length * sepLength + nextStr.length >= MAX_OUTPUT_LEN) { - break; - } + debug: false, - out.push(nextStr); - len += nextStr.length; - elem = elem.parentNode; - } + TraceKit: TraceKit, // alias to TraceKit - return out.reverse().join(separator); -} -/** - * Returns a simple, query-selector representation of a DOM element - * e.g. [HTMLElement] => input#foo.btn[name=baz] - * @param HTMLElement - * @returns {string} - */ + /* + * Configure Raven with a DSN and extra options + * + * @param {string} dsn The public Sentry DSN + * @param {object} options Set of global options [optional] + * @return {Raven} + */ + config: function(dsn, options) { + var self = this; + if (self._globalServer) { + this._logDebug('error', 'Error: Raven has already been configured'); + return self; + } + if (!dsn) return self; -function htmlElementAsString(elem) { - var out = [], - className, - classes, - key, - attr, - i; + var globalOptions = self._globalOptions; - if (!elem || !elem.tagName) { - return ''; - } + // merge in options + if (options) { + each(options, function(key, value) { + // tags and extra are special and need to be put into context + if (key === 'tags' || key === 'extra' || key === 'user') { + self._globalContext[key] = value; + } else { + globalOptions[key] = value; + } + }); + } - out.push(elem.tagName.toLowerCase()); + self.setDSN(dsn); - if (elem.id) { - out.push('#' + elem.id); - } + // "Script error." is hard coded into browsers for errors that it can't read. + // this is the result of a script being pulled in from an external domain and CORS. + globalOptions.ignoreErrors.push(/^Script error\.?$/); + globalOptions.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/); - className = elem.className; + // join regexp rules into one big rule + globalOptions.ignoreErrors = joinRegExp(globalOptions.ignoreErrors); + globalOptions.ignoreUrls = globalOptions.ignoreUrls.length + ? joinRegExp(globalOptions.ignoreUrls) + : false; + globalOptions.whitelistUrls = globalOptions.whitelistUrls.length + ? joinRegExp(globalOptions.whitelistUrls) + : false; + globalOptions.includePaths = joinRegExp(globalOptions.includePaths); + globalOptions.maxBreadcrumbs = Math.max( + 0, + Math.min(globalOptions.maxBreadcrumbs || 100, 100) + ); // default and hard limit is 100 - if (className && isString$1(className)) { - classes = className.split(/\s+/); + var autoBreadcrumbDefaults = { + xhr: true, + console: true, + dom: true, + location: true, + sentry: true + }; - for (i = 0; i < classes.length; i++) { - out.push('.' + classes[i]); + var autoBreadcrumbs = globalOptions.autoBreadcrumbs; + if ({}.toString.call(autoBreadcrumbs) === '[object Object]') { + autoBreadcrumbs = objectMerge(autoBreadcrumbDefaults, autoBreadcrumbs); + } else if (autoBreadcrumbs !== false) { + autoBreadcrumbs = autoBreadcrumbDefaults; } - } - - var attrWhitelist = ['type', 'name', 'title', 'alt']; + globalOptions.autoBreadcrumbs = autoBreadcrumbs; - for (i = 0; i < attrWhitelist.length; i++) { - key = attrWhitelist[i]; - attr = elem.getAttribute(key); + var instrumentDefaults = { + tryCatch: true + }; - if (attr) { - out.push('[' + key + '="' + attr + '"]'); + var instrument = globalOptions.instrument; + if ({}.toString.call(instrument) === '[object Object]') { + instrument = objectMerge(instrumentDefaults, instrument); + } else if (instrument !== false) { + instrument = instrumentDefaults; } - } - - return out.join(''); -} -/** - * Returns true if either a OR b is truthy, but not both - */ + globalOptions.instrument = instrument; + TraceKit.collectWindowErrors = !!globalOptions.collectWindowErrors; -function isOnlyOneTruthy(a, b) { - return !!(!!a ^ !!b); -} -/** - * Returns true if both parameters are undefined - */ + // return for chaining + return self; + }, + /* + * Installs a global window.onerror error handler + * to capture and report uncaught exceptions. + * At this point, install() is required to be called due + * to the way TraceKit is set up. + * + * @return {Raven} + */ + install: function() { + var self = this; + if (self.isSetup() && !self._isRavenInstalled) { + TraceKit.report.subscribe(function() { + self._handleOnErrorStackInfo.apply(self, arguments); + }); -function isBothUndefined(a, b) { - return isUndefined$1(a) && isUndefined$1(b); -} -/** - * Returns true if the two input exception interfaces have the same content - */ + if (self._globalOptions.captureUnhandledRejections) { + self._attachPromiseRejectionHandler(); + } + self._patchFunctionToString(); -function isSameException$1(ex1, ex2) { - if (isOnlyOneTruthy(ex1, ex2)) return false; - ex1 = ex1.values[0]; - ex2 = ex2.values[0]; - if (ex1.type !== ex2.type || ex1.value !== ex2.value) return false; // in case both stacktraces are undefined, we can't decide so default to false + if (self._globalOptions.instrument && self._globalOptions.instrument.tryCatch) { + self._instrumentTryCatch(); + } - if (isBothUndefined(ex1.stacktrace, ex2.stacktrace)) return false; - return isSameStacktrace$1(ex1.stacktrace, ex2.stacktrace); -} -/** - * Returns true if the two input stack trace interfaces have the same content - */ + if (self._globalOptions.autoBreadcrumbs) self._instrumentBreadcrumbs(); + // Install all of the plugins + self._drainPlugins(); -function isSameStacktrace$1(stack1, stack2) { - if (isOnlyOneTruthy(stack1, stack2)) return false; - var frames1 = stack1.frames; - var frames2 = stack2.frames; // Exit early if frame count differs + self._isRavenInstalled = true; + } - if (frames1.length !== frames2.length) return false; // Iterate through every frame; bail out if anything differs + Error.stackTraceLimit = self._globalOptions.stackTraceLimit; + return this; + }, - var a, b; + /* + * Set the DSN (can be called multiple time unlike config) + * + * @param {string} dsn The public Sentry DSN + */ + setDSN: function(dsn) { + var self = this, + uri = self._parseDSN(dsn), + lastSlash = uri.path.lastIndexOf('/'), + path = uri.path.substr(1, lastSlash); - for (var i = 0; i < frames1.length; i++) { - a = frames1[i]; - b = frames2[i]; - if (a.filename !== b.filename || a.lineno !== b.lineno || a.colno !== b.colno || a['function'] !== b['function']) return false; - } + self._dsn = dsn; + self._globalKey = uri.user; + self._globalSecret = uri.pass && uri.pass.substr(1); + self._globalProject = uri.path.substr(lastSlash + 1); - return true; -} -/** - * Polyfill a method - * @param obj object e.g. `document` - * @param name method name present on object e.g. `addEventListener` - * @param replacement replacement function - * @param track {optional} record instrumentation to an array - */ + self._globalServer = self._getGlobalServer(uri); + self._globalEndpoint = + self._globalServer + '/' + path + 'api/' + self._globalProject + '/store/'; -function fill$1(obj, name, replacement, track) { - var orig = obj[name]; - obj[name] = replacement(orig); - obj[name].__raven__ = true; - obj[name].__orig__ = orig; + // Reset backoff state since we may be pointing at a + // new project/server + this._resetBackoff(); + }, - if (track) { - track.push([obj, name, orig]); - } -} -/** - * Join values in array - * @param input array of values to be joined together - * @param delimiter string to be placed in-between values - * @returns {string} - */ + /* + * Wrap code within a context so Raven can capture errors + * reliably across domains that is executed immediately. + * + * @param {object} options A specific set of options for this context [optional] + * @param {function} func The callback to be immediately executed within the context + * @param {array} args An array of arguments to be called with the callback [optional] + */ + context: function(options, func, args) { + if (isFunction(options)) { + args = func || []; + func = options; + options = undefined; + } + return this.wrap(options, func).apply(this, args); + }, -function safeJoin(input, delimiter) { - if (!isArray$1(input)) return ''; - var output = []; + /* + * Wrap code within a context and returns back a new function to be executed + * + * @param {object} options A specific set of options for this context [optional] + * @param {function} func The function to be wrapped in a new context + * @param {function} func A function to call before the try/catch wrapper [optional, private] + * @return {function} The newly wrapped functions with a context + */ + wrap: function(options, func, _before) { + var self = this; + // 1 argument has been passed, and it's not a function + // so just return it + if (isUndefined(func) && !isFunction(options)) { + return options; + } - for (var i = 0; i < input.length; i++) { + // options is optional + if (isFunction(options)) { + func = options; + options = undefined; + } + + // At this point, we've passed along 2 arguments, and the second one + // is not a function either, so we'll just return the second argument. + if (!isFunction(func)) { + return func; + } + + // We don't wanna wrap it twice! try { - output.push(String(input[i])); + if (func.__raven__) { + return func; + } + + // If this has already been wrapped in the past, return that + if (func.__raven_wrapper__) { + return func.__raven_wrapper__; + } } catch (e) { - output.push('[value cannot be serialized]'); + // Just accessing custom props in some Selenium environments + // can cause a "Permission denied" exception (see raven-js#495). + // Bail on wrapping and return the function as-is (defers to window.onerror). + return func; } - } - - return output.join(delimiter); -} -var utils = { - isObject: isObject$1, - isError: isError$1, - isErrorEvent: isErrorEvent$1, - isUndefined: isUndefined$1, - isFunction: isFunction$1, - isPlainObject: isPlainObject, - isString: isString$1, - isArray: isArray$1, - isEmptyObject: isEmptyObject$1, - supportsErrorEvent: supportsErrorEvent, - supportsFetch: supportsFetch$1, - wrappedCallback: wrappedCallback, - each: each$1, - objectMerge: objectMerge$1, - truncate: truncate$1, - objectFrozen: objectFrozen$1, - hasKey: hasKey$1, - joinRegExp: joinRegExp$1, - urlencode: urlencode$1, - uuid4: uuid4$1, - htmlTreeAsString: htmlTreeAsString$1, - htmlElementAsString: htmlElementAsString, - isSameException: isSameException$1, - isSameStacktrace: isSameStacktrace$1, - parseUrl: parseUrl$1, - fill: fill$1, - safeJoin: safeJoin -}; + function wrapped() { + var args = [], + i = arguments.length, + deep = !options || (options && options.deep !== false); -/* - TraceKit - Cross brower stack traces + if (_before && isFunction(_before)) { + _before.apply(this, arguments); + } - This was originally forked from github.com/occ/TraceKit, but has since been - largely re-written and is now maintained as part of raven-js. Tests for - this are in test/vendor. + // Recursively wrap all of a function's arguments that are + // functions themselves. + while (i--) args[i] = deep ? self.wrap(options, arguments[i]) : arguments[i]; - MIT license -*/ + try { + // Attempt to invoke user-land function + // NOTE: If you are a Sentry user, and you are seeing this stack frame, it + // means Raven caught an error invoking your application code. This is + // expected behavior and NOT indicative of a bug with Raven.js. + return func.apply(this, args); + } catch (e) { + self._ignoreNextOnError(); + self.captureException(e, options); + throw e; + } + } -var TraceKit = { - collectWindowErrors: true, - debug: false -}; // This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) + // copy over properties of the old function + for (var property in func) { + if (hasKey(func, property)) { + wrapped[property] = func[property]; + } + } + wrapped.prototype = func.prototype; -var _window$2 = typeof window !== 'undefined' ? window : typeof commonjsGlobal !== 'undefined' ? commonjsGlobal : typeof self !== 'undefined' ? self : {}; // global reference to slice + func.__raven_wrapper__ = wrapped; + // Signal that this function has been wrapped/filled already + // for both debugging and to prevent it to being wrapped/filled twice + wrapped.__raven__ = true; + wrapped.__orig__ = func; + return wrapped; + }, -var _slice = [].slice; -var UNKNOWN_FUNCTION = '?'; // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error#Error_types + /** + * Uninstalls the global error handler. + * + * @return {Raven} + */ + uninstall: function() { + TraceKit.report.uninstall(); -var ERROR_TYPES_RE = /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/; + this._detachPromiseRejectionHandler(); + this._unpatchFunctionToString(); + this._restoreBuiltIns(); + this._restoreConsole(); -function getLocationHref() { - if (typeof document === 'undefined' || document.location == null) return ''; - return document.location.href; -} -/** - * TraceKit.report: cross-browser processing of unhandled exceptions - * - * Syntax: - * TraceKit.report.subscribe(function(stackInfo) { ... }) - * TraceKit.report.unsubscribe(function(stackInfo) { ... }) - * TraceKit.report(exception) - * try { ...code... } catch(ex) { TraceKit.report(ex); } - * - * Supports: - * - Firefox: full stack trace with line numbers, plus column number - * on top frame; column number is not guaranteed - * - Opera: full stack trace with line and column numbers - * - Chrome: full stack trace with line and column numbers - * - Safari: line and column number for the top frame only; some frames - * may be missing, and column number is not guaranteed - * - IE: line and column number for the top frame only; some frames - * may be missing, and column number is not guaranteed - * - * In theory, TraceKit should work on all of the following versions: - * - IE5.5+ (only 8.0 tested) - * - Firefox 0.9+ (only 3.5+ tested) - * - Opera 7+ (only 10.50 tested; versions 9 and earlier may require - * Exceptions Have Stacktrace to be enabled in opera:config) - * - Safari 3+ (only 4+ tested) - * - Chrome 1+ (only 5+ tested) - * - Konqueror 3.5+ (untested) - * - * Requires TraceKit.computeStackTrace. - * - * Tries to catch all unhandled exceptions and report them to the - * subscribed handlers. Please note that TraceKit.report will rethrow the - * exception. This is REQUIRED in order to get a useful stack trace in IE. - * If the exception does not reach the top of the browser, you will only - * get a stack trace from the point where TraceKit.report was called. - * - * Handlers receive a stackInfo object as described in the - * TraceKit.computeStackTrace docs. - */ + Error.stackTraceLimit = this._originalErrorStackTraceLimit; + this._isRavenInstalled = false; + return this; + }, -TraceKit.report = function reportModuleWrapper() { - var handlers = [], - lastArgs = null, - lastException = null, - lastExceptionStack = null; /** - * Add a crash handler. - * @param {Function} handler - */ + * Callback used for `unhandledrejection` event + * + * @param {PromiseRejectionEvent} event An object containing + * promise: the Promise that was rejected + * reason: the value with which the Promise was rejected + * @return void + */ + _promiseRejectionHandler: function(event) { + this._logDebug('debug', 'Raven caught unhandled promise rejection:', event); + this.captureException(event.reason, { + extra: { + unhandledPromiseRejection: true + } + }); + }, - function subscribe(handler) { - installGlobalHandler(); - handlers.push(handler); - } /** - * Remove a crash handler. - * @param {Function} handler - */ + * Installs the global promise rejection handler. + * + * @return {raven} + */ + _attachPromiseRejectionHandler: function() { + this._promiseRejectionHandler = this._promiseRejectionHandler.bind(this); + _window.addEventListener && + _window.addEventListener('unhandledrejection', this._promiseRejectionHandler); + return this; + }, + /** + * Uninstalls the global promise rejection handler. + * + * @return {raven} + */ + _detachPromiseRejectionHandler: function() { + _window.removeEventListener && + _window.removeEventListener('unhandledrejection', this._promiseRejectionHandler); + return this; + }, - function unsubscribe(handler) { - for (var i = handlers.length - 1; i >= 0; --i) { - if (handlers[i] === handler) { - handlers.splice(i, 1); + /** + * Manually capture an exception and send it over to Sentry + * + * @param {error} ex An exception to be logged + * @param {object} options A specific set of options for this error [optional] + * @return {Raven} + */ + captureException: function(ex, options) { + options = objectMerge({trimHeadFrames: 0}, options ? options : {}); + + if (isErrorEvent(ex) && ex.error) { + // If it is an ErrorEvent with `error` property, extract it to get actual Error + ex = ex.error; + } else if (isError(ex)) { + // we have a real Error object + ex = ex; + } else if (isPlainObject(ex)) { + // If it is plain Object, serialize it manually and extract options + // This will allow us to group events based on top-level keys + // which is much better than creating new group when any key/value change + options = this._getCaptureExceptionOptionsFromPlainObject(options, ex); + ex = new Error(options.message); + } else { + // If none of previous checks were valid, then it means that + // it's not a plain Object + // it's not a valid ErrorEvent (one with an error property) + // it's not an Error + // So bail out and capture it as a simple message: + return this.captureMessage( + ex, + objectMerge(options, { + stacktrace: true, // if we fall back to captureMessage, default to attempting a new trace + trimHeadFrames: options.trimHeadFrames + 1 + }) + ); + } + + // Store the raw exception object for potential debugging and introspection + this._lastCapturedException = ex; + + // TraceKit.report will re-raise any exception passed to it, + // which means you have to wrap it in try/catch. Instead, we + // can wrap it here and only re-raise if TraceKit.report + // raises an exception different from the one we asked to + // report on. + try { + var stack = TraceKit.computeStackTrace(ex); + this._handleStackInfo(stack, options); + } catch (ex1) { + if (ex !== ex1) { + throw ex1; } } - } - /** - * Remove all crash handlers. - */ - - function unsubscribeAll() { - uninstallGlobalHandler(); - handlers = []; - } - /** - * Dispatch stack information to all handlers. - * @param {Object.} stack - */ + return this; + }, + _getCaptureExceptionOptionsFromPlainObject: function(currentOptions, ex) { + var exKeys = Object.keys(ex).sort(); + var options = objectMerge(currentOptions, { + message: + 'Non-Error exception captured with keys: ' + serializeKeysForMessage(exKeys), + fingerprint: [md5(exKeys)], + extra: currentOptions.extra || {} + }); + options.extra.__serialized__ = serializeException(ex); - function notifyHandlers(stack, isWindowError) { - var exception = null; + return options; + }, - if (isWindowError && !TraceKit.collectWindowErrors) { + /* + * Manually send a message to Sentry + * + * @param {string} msg A plain message to be captured in Sentry + * @param {object} options A specific set of options for this message [optional] + * @return {Raven} + */ + captureMessage: function(msg, options) { + // config() automagically converts ignoreErrors from a list to a RegExp so we need to test for an + // early call; we'll error on the side of logging anything called before configuration since it's + // probably something you should see: + if ( + !!this._globalOptions.ignoreErrors.test && + this._globalOptions.ignoreErrors.test(msg) + ) { return; } - for (var i in handlers) { - if (handlers.hasOwnProperty(i)) { - try { - handlers[i].apply(null, [stack].concat(_slice.call(arguments, 2))); - } catch (inner) { - exception = inner; - } - } - } + options = options || {}; + msg = msg + ''; // Make sure it's actually a string - if (exception) { - throw exception; - } - } + var data = objectMerge( + { + message: msg + }, + options + ); - var _oldOnerrorHandler, _onErrorHandlerInstalled; - /** - * Ensures all global unhandled exceptions are recorded. - * Supported by Gecko and IE. - * @param {string} msg Error message. - * @param {string} url URL of script that generated the exception. - * @param {(number|string)} lineNo The line number at which the error - * occurred. - * @param {?(number|string)} colNo The column number at which the error - * occurred. - * @param {?Error} ex The actual Error object. - */ - - - function traceKitWindowOnError(msg, url, lineNo, colNo, ex) { - var stack = null; // If 'ex' is ErrorEvent, get real Error from inside - - var exception = utils.isErrorEvent(ex) ? ex.error : ex; // If 'msg' is ErrorEvent, get real message from inside + var ex; + // Generate a "synthetic" stack trace from this point. + // NOTE: If you are a Sentry user, and you are seeing this stack frame, it is NOT indicative + // of a bug with Raven.js. Sentry generates synthetic traces either by configuration, + // or if it catches a thrown object without a "stack" property. + try { + throw new Error(msg); + } catch (ex1) { + ex = ex1; + } - var message = utils.isErrorEvent(msg) ? msg.message : msg; + // null exception name so `Error` isn't prefixed to msg + ex.name = null; + var stack = TraceKit.computeStackTrace(ex); - if (lastExceptionStack) { - TraceKit.computeStackTrace.augmentStackTraceWithInitialElement(lastExceptionStack, url, lineNo, message); - processLastException(); - } else if (exception && utils.isError(exception)) { - // non-string `exception` arg; attempt to extract stack trace - // New chrome and blink send along a real error object - // Let's just report that like a normal error. - // See: https://mikewest.org/2013/08/debugging-runtime-errors-with-window-onerror - stack = TraceKit.computeStackTrace(exception); - notifyHandlers(stack, true); - } else { - var location = { - url: url, - line: lineNo, - column: colNo - }; - var name = undefined; - var groups; + // stack[0] is `throw new Error(msg)` call itself, we are interested in the frame that was just before that, stack[1] + var initialCall = isArray(stack.stack) && stack.stack[1]; - if ({}.toString.call(message) === '[object String]') { - var groups = message.match(ERROR_TYPES_RE); + // if stack[1] is `Raven.captureException`, it means that someone passed a string to it and we redirected that call + // to be handled by `captureMessage`, thus `initialCall` is the 3rd one, not 2nd + // initialCall => captureException(string) => captureMessage(string) + if (initialCall && initialCall.func === 'Raven.captureException') { + initialCall = stack.stack[2]; + } - if (groups) { - name = groups[1]; - message = groups[2]; - } - } + var fileurl = (initialCall && initialCall.url) || ''; - location.func = UNKNOWN_FUNCTION; - stack = { - name: name, - message: message, - url: getLocationHref(), - stack: [location] - }; - notifyHandlers(stack, true); + if ( + !!this._globalOptions.ignoreUrls.test && + this._globalOptions.ignoreUrls.test(fileurl) + ) { + return; } - if (_oldOnerrorHandler) { - return _oldOnerrorHandler.apply(this, arguments); + if ( + !!this._globalOptions.whitelistUrls.test && + !this._globalOptions.whitelistUrls.test(fileurl) + ) { + return; } - return false; - } + if (this._globalOptions.stacktrace || (options && options.stacktrace)) { + // fingerprint on msg, not stack trace (legacy behavior, could be revisited) + data.fingerprint = data.fingerprint == null ? msg : data.fingerprint; - function installGlobalHandler() { - if (_onErrorHandlerInstalled) { - return; - } + options = objectMerge( + { + trimHeadFrames: 0 + }, + options + ); + // Since we know this is a synthetic trace, the top frame (this function call) + // MUST be from Raven.js, so mark it for trimming + // We add to the trim counter so that callers can choose to trim extra frames, such + // as utility functions. + options.trimHeadFrames += 1; - _oldOnerrorHandler = _window$2.onerror; - _window$2.onerror = traceKitWindowOnError; - _onErrorHandlerInstalled = true; - } + var frames = this._prepareFrames(stack, options); + data.stacktrace = { + // Sentry expects frames oldest to newest + frames: frames.reverse() + }; + } - function uninstallGlobalHandler() { - if (!_onErrorHandlerInstalled) { - return; + // Make sure that fingerprint is always wrapped in an array + if (data.fingerprint) { + data.fingerprint = isArray(data.fingerprint) + ? data.fingerprint + : [data.fingerprint]; } - _window$2.onerror = _oldOnerrorHandler; - _onErrorHandlerInstalled = false; - _oldOnerrorHandler = undefined; - } + // Fire away! + this._send(data); - function processLastException() { - var _lastExceptionStack = lastExceptionStack, - _lastArgs = lastArgs; - lastArgs = null; - lastExceptionStack = null; - lastException = null; - notifyHandlers.apply(null, [_lastExceptionStack, false].concat(_lastArgs)); - } - /** - * Reports an unhandled Error to TraceKit. - * @param {Error} ex - * @param {?boolean} rethrow If false, do not re-throw the exception. - * Only used for window.onerror to not cause an infinite loop of - * rethrowing. - */ + return this; + }, + captureBreadcrumb: function(obj) { + var crumb = objectMerge( + { + timestamp: now() / 1000 + }, + obj + ); - function report(ex, rethrow) { - var args = _slice.call(arguments, 1); + if (isFunction(this._globalOptions.breadcrumbCallback)) { + var result = this._globalOptions.breadcrumbCallback(crumb); - if (lastExceptionStack) { - if (lastException === ex) { - return; // already caught by an inner catch block, ignore - } else { - processLastException(); + if (isObject(result) && !isEmptyObject(result)) { + crumb = result; + } else if (result === false) { + return this; } } - var stack = TraceKit.computeStackTrace(ex); - lastExceptionStack = stack; - lastException = ex; - lastArgs = args; // If the stack trace is incomplete, wait for 2 seconds for - // slow slow IE to see if onerror occurs or not before reporting - // this exception; otherwise, we will end up with an incomplete - // stack trace + this._breadcrumbs.push(crumb); + if (this._breadcrumbs.length > this._globalOptions.maxBreadcrumbs) { + this._breadcrumbs.shift(); + } + return this; + }, - setTimeout(function () { - if (lastException === ex) { - processLastException(); - } - }, stack.incomplete ? 2000 : 0); + addPlugin: function(plugin /*arg1, arg2, ... argN*/) { + var pluginArgs = [].slice.call(arguments, 1); - if (rethrow !== false) { - throw ex; // re-throw to propagate to the top level (and cause window.onerror) + this._plugins.push([plugin, pluginArgs]); + if (this._isRavenInstalled) { + this._drainPlugins(); } - } - report.subscribe = subscribe; - report.unsubscribe = unsubscribe; - report.uninstall = unsubscribeAll; - return report; -}(); -/** - * TraceKit.computeStackTrace: cross-browser stack traces in JavaScript - * - * Syntax: - * s = TraceKit.computeStackTrace(exception) // consider using TraceKit.report instead (see below) - * Returns: - * s.name - exception name - * s.message - exception message - * s.stack[i].url - JavaScript or HTML file URL - * s.stack[i].func - function name, or empty for anonymous functions (if guessing did not work) - * s.stack[i].args - arguments passed to the function, if known - * s.stack[i].line - line number, if known - * s.stack[i].column - column number, if known - * - * Supports: - * - Firefox: full stack trace with line numbers and unreliable column - * number on top frame - * - Opera 10: full stack trace with line and column numbers - * - Opera 9-: full stack trace with line numbers - * - Chrome: full stack trace with line and column numbers - * - Safari: line and column number for the topmost stacktrace element - * only - * - IE: no line numbers whatsoever - * - * Tries to guess names of anonymous functions by looking for assignments - * in the source code. In IE and Safari, we have to guess source file names - * by searching for function bodies inside all page scripts. This will not - * work for scripts that are loaded cross-domain. - * Here be dragons: some function names may be guessed incorrectly, and - * duplicate functions may be mismatched. - * - * TraceKit.computeStackTrace should only be used for tracing purposes. - * Logging of unhandled exceptions should be done with TraceKit.report, - * which builds on top of TraceKit.computeStackTrace and provides better - * IE support by utilizing the window.onerror event to retrieve information - * about the top of the stack. - * - * Note: In IE and Safari, no stack trace is recorded on the Error object, - * so computeStackTrace instead walks its *own* chain of callers. - * This means that: - * * in Safari, some methods may be missing from the stack trace; - * * in IE, the topmost function in the stack trace will always be the - * caller of computeStackTrace. - * - * This is okay for tracing (because you are likely to be calling - * computeStackTrace from the function you want to be the topmost element - * of the stack trace anyway), but not okay for logging unhandled - * exceptions (because your catch block will likely be far away from the - * inner function that actually caused the exception). - * - */ + return this; + }, + /* + * Set/clear a user to be sent along with the payload. + * + * @param {object} user An object representing user data [optional] + * @return {Raven} + */ + setUserContext: function(user) { + // Intentionally do not merge here since that's an unexpected behavior. + this._globalContext.user = user; -TraceKit.computeStackTrace = function computeStackTraceWrapper() { - // Contents of Exception in various browsers. - // - // SAFARI: - // ex.message = Can't find variable: qq - // ex.line = 59 - // ex.sourceId = 580238192 - // ex.sourceURL = http://... - // ex.expressionBeginOffset = 96 - // ex.expressionCaretOffset = 98 - // ex.expressionEndOffset = 98 - // ex.name = ReferenceError - // - // FIREFOX: - // ex.message = qq is not defined - // ex.fileName = http://... - // ex.lineNumber = 59 - // ex.columnNumber = 69 - // ex.stack = ...stack trace... (see the example below) - // ex.name = ReferenceError - // - // CHROME: - // ex.message = qq is not defined - // ex.name = ReferenceError - // ex.type = not_defined - // ex.arguments = ['aa'] - // ex.stack = ...stack trace... - // - // INTERNET EXPLORER: - // ex.message = ... - // ex.name = ReferenceError - // - // OPERA: - // ex.message = ...message... (see the example below) - // ex.name = ReferenceError - // ex.opera#sourceloc = 11 (pretty much useless, duplicates the info in ex.message) - // ex.stacktrace = n/a; see 'opera:config#UserPrefs|Exceptions Have Stacktrace' + return this; + }, - /** - * Computes stack trace information from the stack property. - * Chrome and Gecko use this property. - * @param {Error} ex - * @return {?Object.} Stack trace information. + /* + * Merge extra attributes to be sent along with the payload. + * + * @param {object} extra An object representing extra data [optional] + * @return {Raven} */ - function computeStackTraceFromStackProp(ex) { - if (typeof ex.stack === 'undefined' || !ex.stack) return; - var chrome = /^\s*at (.*?) ?\(((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i, - gecko = /^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|\[native).*?|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i, - winjs = /^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i, - // Used to additionally parse URL/line/column from eval frames - geckoEval = /(\S+) line (\d+)(?: > eval line \d+)* > eval/i, - chromeEval = /\((\S*)(?::(\d+))(?::(\d+))\)/, - lines = ex.stack.split('\n'), - stack = [], - submatch, - parts, - element, - reference = /^(.*) is undefined$/.exec(ex.message); + setExtraContext: function(extra) { + this._mergeContext('extra', extra); - for (var i = 0, j = lines.length; i < j; ++i) { - if (parts = chrome.exec(lines[i])) { - var isNative = parts[2] && parts[2].indexOf('native') === 0; // start of line + return this; + }, - var isEval = parts[2] && parts[2].indexOf('eval') === 0; // start of line + /* + * Merge tags to be sent along with the payload. + * + * @param {object} tags An object representing tags [optional] + * @return {Raven} + */ + setTagsContext: function(tags) { + this._mergeContext('tags', tags); - if (isEval && (submatch = chromeEval.exec(parts[2]))) { - // throw out eval line/column and use top-most line/column number - parts[2] = submatch[1]; // url + return this; + }, - parts[3] = submatch[2]; // line - - parts[4] = submatch[3]; // column - } - - element = { - url: !isNative ? parts[2] : null, - func: parts[1] || UNKNOWN_FUNCTION, - args: isNative ? [parts[2]] : [], - line: parts[3] ? +parts[3] : null, - column: parts[4] ? +parts[4] : null - }; - } else if (parts = winjs.exec(lines[i])) { - element = { - url: parts[2], - func: parts[1] || UNKNOWN_FUNCTION, - args: [], - line: +parts[3], - column: parts[4] ? +parts[4] : null - }; - } else if (parts = gecko.exec(lines[i])) { - var isEval = parts[3] && parts[3].indexOf(' > eval') > -1; - - if (isEval && (submatch = geckoEval.exec(parts[3]))) { - // throw out eval line/column and use top-most line number - parts[3] = submatch[1]; - parts[4] = submatch[2]; - parts[5] = null; // no column when eval - } else if (i === 0 && !parts[5] && typeof ex.columnNumber !== 'undefined') { - // FireFox uses this awesome columnNumber property for its top frame - // Also note, Firefox's column number is 0-based and everything else expects 1-based, - // so adding 1 - // NOTE: this hack doesn't work if top-most frame is eval - stack[0].column = ex.columnNumber + 1; - } + /* + * Clear all of the context. + * + * @return {Raven} + */ + clearContext: function() { + this._globalContext = {}; - element = { - url: parts[3], - func: parts[1] || UNKNOWN_FUNCTION, - args: parts[2] ? parts[2].split(',') : [], - line: parts[4] ? +parts[4] : null, - column: parts[5] ? +parts[5] : null - }; - } else { - continue; - } + return this; + }, - if (!element.func && element.line) { - element.func = UNKNOWN_FUNCTION; - } + /* + * Get a copy of the current context. This cannot be mutated. + * + * @return {object} copy of context + */ + getContext: function() { + // lol javascript + return JSON.parse(stringify(this._globalContext)); + }, - stack.push(element); - } + /* + * Set environment of application + * + * @param {string} environment Typically something like 'production'. + * @return {Raven} + */ + setEnvironment: function(environment) { + this._globalOptions.environment = environment; - if (!stack.length) { - return null; - } + return this; + }, - return { - name: ex.name, - message: ex.message, - url: getLocationHref(), - stack: stack - }; - } - /** - * Adds information about the first frame to incomplete stack traces. - * Safari and IE require this to get complete data on the first frame. - * @param {Object.} stackInfo Stack trace information from - * one of the compute* methods. - * @param {string} url The URL of the script that caused an error. - * @param {(number|string)} lineNo The line number of the script that - * caused an error. - * @param {string=} message The error generated by the browser, which - * hopefully contains the name of the object that caused the error. - * @return {boolean} Whether or not the stack information was - * augmented. + /* + * Set release version of application + * + * @param {string} release Typically something like a git SHA to identify version + * @return {Raven} */ + setRelease: function(release) { + this._globalOptions.release = release; + return this; + }, - function augmentStackTraceWithInitialElement(stackInfo, url, lineNo, message) { - var initial = { - url: url, - line: lineNo - }; + /* + * Set the dataCallback option + * + * @param {function} callback The callback to run which allows the + * data blob to be mutated before sending + * @return {Raven} + */ + setDataCallback: function(callback) { + var original = this._globalOptions.dataCallback; + this._globalOptions.dataCallback = keepOriginalCallback(original, callback); + return this; + }, - if (initial.url && initial.line) { - stackInfo.incomplete = false; + /* + * Set the breadcrumbCallback option + * + * @param {function} callback The callback to run which allows filtering + * or mutating breadcrumbs + * @return {Raven} + */ + setBreadcrumbCallback: function(callback) { + var original = this._globalOptions.breadcrumbCallback; + this._globalOptions.breadcrumbCallback = keepOriginalCallback(original, callback); + return this; + }, - if (!initial.func) { - initial.func = UNKNOWN_FUNCTION; - } + /* + * Set the shouldSendCallback option + * + * @param {function} callback The callback to run which allows + * introspecting the blob before sending + * @return {Raven} + */ + setShouldSendCallback: function(callback) { + var original = this._globalOptions.shouldSendCallback; + this._globalOptions.shouldSendCallback = keepOriginalCallback(original, callback); + return this; + }, - if (stackInfo.stack.length > 0) { - if (stackInfo.stack[0].url === initial.url) { - if (stackInfo.stack[0].line === initial.line) { - return false; // already in stack trace - } else if (!stackInfo.stack[0].line && stackInfo.stack[0].func === initial.func) { - stackInfo.stack[0].line = initial.line; - return false; - } - } - } + /** + * Override the default HTTP transport mechanism that transmits data + * to the Sentry server. + * + * @param {function} transport Function invoked instead of the default + * `makeRequest` handler. + * + * @return {Raven} + */ + setTransport: function(transport) { + this._globalOptions.transport = transport; - stackInfo.stack.unshift(initial); - stackInfo.partial = true; - return true; - } else { - stackInfo.incomplete = true; - } + return this; + }, - return false; - } - /** - * Computes stack trace information by walking the arguments.caller - * chain at the time the exception occurred. This will cause earlier - * frames to be missed but is the only way to get any stack trace in - * Safari and IE. The top frame is restored by - * {@link augmentStackTraceWithInitialElement}. - * @param {Error} ex - * @return {?Object.} Stack trace information. + /* + * Get the latest raw exception that was captured by Raven. + * + * @return {error} */ + lastException: function() { + return this._lastCapturedException; + }, + /* + * Get the last event id + * + * @return {string} + */ + lastEventId: function() { + return this._lastEventId; + }, - function computeStackTraceByWalkingCallerChain(ex, depth) { - var functionName = /function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i, - stack = [], - funcs = {}, - recursion = false, - parts, - item; - - for (var curr = computeStackTraceByWalkingCallerChain.caller; curr && !recursion; curr = curr.caller) { - if (curr === computeStackTrace || curr === TraceKit.report) { - // console.log('skipping internal function'); - continue; + /* + * Determine if Raven is setup and ready to go. + * + * @return {boolean} + */ + isSetup: function() { + if (!this._hasJSON) return false; // needs JSON support + if (!this._globalServer) { + if (!this.ravenNotConfiguredError) { + this.ravenNotConfiguredError = true; + this._logDebug('error', 'Error: Raven has not been configured.'); } + return false; + } + return true; + }, - item = { - url: null, - func: UNKNOWN_FUNCTION, - line: null, - column: null - }; + afterLoad: function() { + // TODO: remove window dependence? - if (curr.name) { - item.func = curr.name; - } else if (parts = functionName.exec(curr.toString())) { - item.func = parts[1]; - } + // Attempt to initialize Raven on load + var RavenConfig = _window.RavenConfig; + if (RavenConfig) { + this.config(RavenConfig.dsn, RavenConfig.config).install(); + } + }, - if (typeof item.func === 'undefined') { - try { - item.func = parts.input.substring(0, parts.input.indexOf('{')); - } catch (e) {} - } + showReportDialog: function(options) { + if ( + !_document // doesn't work without a document (React native) + ) + return; - if (funcs['' + curr]) { - recursion = true; - } else { - funcs['' + curr] = true; - } + options = options || {}; - stack.push(item); + var lastEventId = options.eventId || this.lastEventId(); + if (!lastEventId) { + throw new RavenConfigError('Missing eventId'); } - if (depth) { - // console.log('depth is ' + depth); - // console.log('stack is ' + stack.length); - stack.splice(0, depth); + var dsn = options.dsn || this._dsn; + if (!dsn) { + throw new RavenConfigError('Missing DSN'); } - var result = { - name: ex.name, - message: ex.message, - url: getLocationHref(), - stack: stack - }; - augmentStackTraceWithInitialElement(result, ex.sourceURL || ex.fileName, ex.line || ex.lineNumber, ex.message || ex.description); - return result; - } - /** - * Computes a stack trace for an exception. - * @param {Error} ex - * @param {(string|number)=} depth - */ + var encode = encodeURIComponent; + var qs = ''; + qs += '?eventId=' + encode(lastEventId); + qs += '&dsn=' + encode(dsn); + var user = options.user || this._globalContext.user; + if (user) { + if (user.name) qs += '&name=' + encode(user.name); + if (user.email) qs += '&email=' + encode(user.email); + } - function computeStackTrace(ex, depth) { - var stack = null; - depth = depth == null ? 0 : +depth; + var globalServer = this._getGlobalServer(this._parseDSN(dsn)); - try { - stack = computeStackTraceFromStackProp(ex); + var script = _document.createElement('script'); + script.async = true; + script.src = globalServer + '/api/embed/error-page/' + qs; + (_document.head || _document.body).appendChild(script); + }, - if (stack) { - return stack; + /**** Private functions ****/ + _ignoreNextOnError: function() { + var self = this; + this._ignoreOnError += 1; + setTimeout(function() { + // onerror should trigger before setTimeout + self._ignoreOnError -= 1; + }); + }, + + _triggerEvent: function(eventType, options) { + // NOTE: `event` is a native browser thing, so let's avoid conflicting wiht it + var evt, key; + + if (!this._hasDocument) return; + + options = options || {}; + + eventType = 'raven' + eventType.substr(0, 1).toUpperCase() + eventType.substr(1); + + if (_document.createEvent) { + evt = _document.createEvent('HTMLEvents'); + evt.initEvent(eventType, true, true); + } else { + evt = _document.createEventObject(); + evt.eventType = eventType; + } + + for (key in options) + if (hasKey(options, key)) { + evt[key] = options[key]; } - } catch (e) { - if (TraceKit.debug) { - throw e; + + if (_document.createEvent) { + // IE9 if standards + _document.dispatchEvent(evt); + } else { + // IE8 regardless of Quirks or Standards + // IE9 if quirks + try { + _document.fireEvent('on' + evt.eventType.toLowerCase(), evt); + } catch (e) { + // Do nothing } } + }, - try { - stack = computeStackTraceByWalkingCallerChain(ex, depth + 1); + /** + * Wraps addEventListener to capture UI breadcrumbs + * @param evtName the event name (e.g. "click") + * @returns {Function} + * @private + */ + _breadcrumbEventHandler: function(evtName) { + var self = this; + return function(evt) { + // reset keypress timeout; e.g. triggering a 'click' after + // a 'keypress' will reset the keypress debounce so that a new + // set of keypresses can be recorded + self._keypressTimeout = null; - if (stack) { - return stack; - } - } catch (e) { - if (TraceKit.debug) { - throw e; + // It's possible this handler might trigger multiple times for the same + // event (e.g. event propagation through node ancestors). Ignore if we've + // already captured the event. + if (self._lastCapturedEvent === evt) return; + + self._lastCapturedEvent = evt; + + // try/catch both: + // - accessing evt.target (see getsentry/raven-js#838, #768) + // - `htmlTreeAsString` because it's complex, and just accessing the DOM incorrectly + // can throw an exception in some circumstances. + var target; + try { + target = htmlTreeAsString(evt.target); + } catch (e) { + target = ''; } - } - return { - name: ex.name, - message: ex.message, - url: getLocationHref() + self.captureBreadcrumb({ + category: 'ui.' + evtName, // e.g. ui.click, ui.input + message: target + }); }; - } + }, - computeStackTrace.augmentStackTraceWithInitialElement = augmentStackTraceWithInitialElement; - computeStackTrace.computeStackTraceFromStackProp = computeStackTraceFromStackProp; - return computeStackTrace; -}(); + /** + * Wraps addEventListener to capture keypress UI events + * @returns {Function} + * @private + */ + _keypressEventHandler: function() { + var self = this, + debounceDuration = 1000; // milliseconds -var tracekit = TraceKit; + // TODO: if somehow user switches keypress target before + // debounce timeout is triggered, we will only capture + // a single breadcrumb from the FIRST target (acceptable?) + return function(evt) { + var target; + try { + target = evt.target; + } catch (e) { + // just accessing event properties can throw an exception in some rare circumstances + // see: https://github.com/getsentry/raven-js/issues/838 + return; + } + var tagName = target && target.tagName; -var stringify_1 = createCommonjsModule(function (module, exports) { - /* - json-stringify-safe - Like JSON.stringify, but doesn't throw on circular references. - - Originally forked from https://github.com/isaacs/json-stringify-safe - version 5.0.1 on 3/8/2017 and modified to handle Errors serialization - and IE8 compatibility. Tests for this are in test/vendor. - - ISC license: https://github.com/isaacs/json-stringify-safe/blob/master/LICENSE - */ - exports = module.exports = stringify; - exports.getSerialize = serializer; - - function indexOf(haystack, needle) { - for (var i = 0; i < haystack.length; ++i) { - if (haystack[i] === needle) return i; - } - - return -1; - } + // only consider keypress events on actual input elements + // this will disregard keypresses targeting body (e.g. tabbing + // through elements, hotkeys, etc) + if ( + !tagName || + (tagName !== 'INPUT' && tagName !== 'TEXTAREA' && !target.isContentEditable) + ) + return; + + // record first keypress in a series, but ignore subsequent + // keypresses until debounce clears + var timeout = self._keypressTimeout; + if (!timeout) { + self._breadcrumbEventHandler('input')(evt); + } + clearTimeout(timeout); + self._keypressTimeout = setTimeout(function() { + self._keypressTimeout = null; + }, debounceDuration); + }; + }, + + /** + * Captures a breadcrumb of type "navigation", normalizing input URLs + * @param to the originating URL + * @param from the target URL + * @private + */ + _captureUrlChange: function(from, to) { + var parsedLoc = parseUrl(this._location.href); + var parsedTo = parseUrl(to); + var parsedFrom = parseUrl(from); - function stringify(obj, replacer, spaces, cycleReplacer) { - return JSON.stringify(obj, serializer(replacer, cycleReplacer), spaces); - } // https://github.com/ftlabs/js-abbreviate/blob/fa709e5f139e7770a71827b1893f22418097fbda/index.js#L95-L106 + // because onpopstate only tells you the "new" (to) value of location.href, and + // not the previous (from) value, we need to track the value of the current URL + // state ourselves + this._lastHref = to; + // Use only the path component of the URL if the URL matches the current + // document (almost all the time when using pushState) + if (parsedLoc.protocol === parsedTo.protocol && parsedLoc.host === parsedTo.host) + to = parsedTo.relative; + if (parsedLoc.protocol === parsedFrom.protocol && parsedLoc.host === parsedFrom.host) + from = parsedFrom.relative; - function stringifyError(value) { - var err = { - // These properties are implemented as magical getters and don't show up in for in - stack: value.stack, - message: value.message, - name: value.name - }; + this.captureBreadcrumb({ + category: 'navigation', + data: { + to: to, + from: from + } + }); + }, - for (var i in value) { - if (Object.prototype.hasOwnProperty.call(value, i)) { - err[i] = value[i]; + _patchFunctionToString: function() { + var self = this; + self._originalFunctionToString = Function.prototype.toString; + // eslint-disable-next-line no-extend-native + Function.prototype.toString = function() { + if (typeof this === 'function' && this.__raven__) { + return self._originalFunctionToString.apply(this.__orig__, arguments); } + return self._originalFunctionToString.apply(this, arguments); + }; + }, + + _unpatchFunctionToString: function() { + if (this._originalFunctionToString) { + // eslint-disable-next-line no-extend-native + Function.prototype.toString = this._originalFunctionToString; } + }, - return err; - } + /** + * Wrap timer functions and event targets to catch errors and provide + * better metadata. + */ + _instrumentTryCatch: function() { + var self = this; - function serializer(replacer, cycleReplacer) { - var stack = []; - var keys = []; + var wrappedBuiltIns = self._wrappedBuiltIns; - if (cycleReplacer == null) { - cycleReplacer = function cycleReplacer(key, value) { - if (stack[0] === value) { - return '[Circular ~]'; + function wrapTimeFn(orig) { + return function(fn, t) { + // preserve arity + // Make a copy of the arguments to prevent deoptimization + // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments + var args = new Array(arguments.length); + for (var i = 0; i < args.length; ++i) { + args[i] = arguments[i]; + } + var originalCallback = args[0]; + if (isFunction(originalCallback)) { + args[0] = self.wrap(originalCallback); } - return '[Circular ~.' + keys.slice(0, indexOf(stack, value)).join('.') + ']'; + // IE < 9 doesn't support .call/.apply on setInterval/setTimeout, but it + // also supports only two arguments and doesn't care what this is, so we + // can just call the original function directly. + if (orig.apply) { + return orig.apply(this, args); + } else { + return orig(args[0], args[1]); + } }; } - return function (key, value) { - if (stack.length > 0) { - var thisPos = indexOf(stack, this); - ~thisPos ? stack.splice(thisPos + 1) : stack.push(this); - ~thisPos ? keys.splice(thisPos, Infinity, key) : keys.push(key); - - if (~indexOf(stack, value)) { - value = cycleReplacer.call(this, key, value); - } - } else { - stack.push(value); - } + var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; - return replacer == null ? value instanceof Error ? stringifyError(value) : value : replacer.call(this, key, value); - }; - } -}); -var stringify_2 = stringify_1.getSerialize; + function wrapEventTarget(global) { + var proto = _window[global] && _window[global].prototype; + if (proto && proto.hasOwnProperty && proto.hasOwnProperty('addEventListener')) { + fill( + proto, + 'addEventListener', + function(orig) { + return function(evtName, fn, capture, secure) { + // preserve arity + try { + if (fn && fn.handleEvent) { + fn.handleEvent = self.wrap(fn.handleEvent); + } + } catch (err) { + // can sometimes get 'Permission denied to access property "handle Event' + } -function RavenConfigError(message) { - this.name = 'RavenConfigError'; - this.message = message; -} + // More breadcrumb DOM capture ... done here and not in `_instrumentBreadcrumbs` + // so that we don't have more than one wrapper function + var before, clickHandler, keypressHandler; + + if ( + autoBreadcrumbs && + autoBreadcrumbs.dom && + (global === 'EventTarget' || global === 'Node') + ) { + // NOTE: generating multiple handlers per addEventListener invocation, should + // revisit and verify we can just use one (almost certainly) + clickHandler = self._breadcrumbEventHandler('click'); + keypressHandler = self._keypressEventHandler(); + before = function(evt) { + // need to intercept every DOM event in `before` argument, in case that + // same wrapped method is re-used for different events (e.g. mousemove THEN click) + // see #724 + if (!evt) return; + + var eventType; + try { + eventType = evt.type; + } catch (e) { + // just accessing event properties can throw an exception in some rare circumstances + // see: https://github.com/getsentry/raven-js/issues/838 + return; + } + if (eventType === 'click') return clickHandler(evt); + else if (eventType === 'keypress') return keypressHandler(evt); + }; + } + return orig.call( + this, + evtName, + self.wrap(fn, undefined, before), + capture, + secure + ); + }; + }, + wrappedBuiltIns + ); + fill( + proto, + 'removeEventListener', + function(orig) { + return function(evt, fn, capture, secure) { + try { + fn = fn && (fn.__raven_wrapper__ ? fn.__raven_wrapper__ : fn); + } catch (e) { + // ignore, accessing __raven_wrapper__ will throw in some Selenium environments + } + return orig.call(this, evt, fn, capture, secure); + }; + }, + wrappedBuiltIns + ); + } + } -RavenConfigError.prototype = new Error(); -RavenConfigError.prototype.constructor = RavenConfigError; -var configError = RavenConfigError; + fill(_window, 'setTimeout', wrapTimeFn, wrappedBuiltIns); + fill(_window, 'setInterval', wrapTimeFn, wrappedBuiltIns); + if (_window.requestAnimationFrame) { + fill( + _window, + 'requestAnimationFrame', + function(orig) { + return function(cb) { + return orig(self.wrap(cb)); + }; + }, + wrappedBuiltIns + ); + } -var wrapMethod = function wrapMethod(console, level, callback) { - var originalConsoleLevel = console[level]; - var originalConsole = console; + // event targets borrowed from bugsnag-js: + // https://github.com/bugsnag/bugsnag-js/blob/master/src/bugsnag.js#L666 + var eventTargets = [ + 'EventTarget', + 'Window', + 'Node', + 'ApplicationCache', + 'AudioTrackList', + 'ChannelMergerNode', + 'CryptoOperation', + 'EventSource', + 'FileReader', + 'HTMLUnknownElement', + 'IDBDatabase', + 'IDBRequest', + 'IDBTransaction', + 'KeyOperation', + 'MediaController', + 'MessagePort', + 'ModalWindow', + 'Notification', + 'SVGElementInstance', + 'Screen', + 'TextTrack', + 'TextTrackCue', + 'TextTrackList', + 'WebSocket', + 'WebSocketWorker', + 'Worker', + 'XMLHttpRequest', + 'XMLHttpRequestEventTarget', + 'XMLHttpRequestUpload' + ]; + for (var i = 0; i < eventTargets.length; i++) { + wrapEventTarget(eventTargets[i]); + } + }, - if (!(level in console)) { - return; - } + /** + * Instrument browser built-ins w/ breadcrumb capturing + * - XMLHttpRequests + * - DOM interactions (click/typing) + * - window.location changes + * - console + * + * Can be disabled or individually configured via the `autoBreadcrumbs` config option + */ + _instrumentBreadcrumbs: function() { + var self = this; + var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; - var sentryLevel = level === 'warn' ? 'warning' : level; + var wrappedBuiltIns = self._wrappedBuiltIns; - console[level] = function () { - var args = [].slice.call(arguments); - var msg = utils.safeJoin(args, ' '); - var data = { - level: sentryLevel, - logger: 'console', - extra: { - arguments: args + function wrapProp(prop, xhr) { + if (prop in xhr && isFunction(xhr[prop])) { + fill(xhr, prop, function(orig) { + return self.wrap(orig); + }); // intentionally don't track filled methods on XHR instances } - }; + } - if (level === 'assert') { - if (args[0] === false) { - // Default browsers message - msg = 'Assertion failed: ' + (utils.safeJoin(args.slice(1), ' ') || 'console.assert'); - data.extra.arguments = args.slice(1); - callback && callback(msg, data); - } - } else { - callback && callback(msg, data); - } // this fails for some browsers. :( + if (autoBreadcrumbs.xhr && 'XMLHttpRequest' in _window) { + var xhrproto = _window.XMLHttpRequest && _window.XMLHttpRequest.prototype; + fill( + xhrproto, + 'open', + function(origOpen) { + return function(method, url) { + // preserve arity + // if Sentry key appears in URL, don't capture + if (isString(url) && url.indexOf(self._globalKey) === -1) { + this.__raven_xhr = { + method: method, + url: url, + status_code: null + }; + } - if (originalConsoleLevel) { - // IE9 doesn't allow calling apply on console functions directly - // See: https://stackoverflow.com/questions/5472938/does-ie9-support-console-log-and-is-it-a-real-function#answer-5473193 - Function.prototype.apply.call(originalConsoleLevel, originalConsole, args); - } - }; -}; - -var console$1 = { - wrapMethod: wrapMethod -}; + return origOpen.apply(this, arguments); + }; + }, + wrappedBuiltIns + ); + + fill( + xhrproto, + 'send', + function(origSend) { + return function() { + // preserve arity + var xhr = this; -/*global XDomainRequest:false */ + function onreadystatechangeHandler() { + if (xhr.__raven_xhr && xhr.readyState === 4) { + try { + // touching statusCode in some platforms throws + // an exception + xhr.__raven_xhr.status_code = xhr.status; + } catch (e) { + /* do nothing */ + } -var isError = utils.isError; -var isObject = utils.isObject; -var isErrorEvent = utils.isErrorEvent; -var isUndefined = utils.isUndefined; -var isFunction = utils.isFunction; -var isString = utils.isString; -var isArray = utils.isArray; -var isEmptyObject = utils.isEmptyObject; -var each = utils.each; -var objectMerge = utils.objectMerge; -var truncate = utils.truncate; -var objectFrozen = utils.objectFrozen; -var hasKey = utils.hasKey; -var joinRegExp = utils.joinRegExp; -var urlencode = utils.urlencode; -var uuid4 = utils.uuid4; -var htmlTreeAsString = utils.htmlTreeAsString; -var isSameException = utils.isSameException; -var isSameStacktrace = utils.isSameStacktrace; -var parseUrl = utils.parseUrl; -var fill = utils.fill; -var supportsFetch = utils.supportsFetch; -var wrapConsoleMethod = console$1.wrapMethod; -var dsnKeys = 'source protocol user pass host port path'.split(' '); -var dsnPattern = /^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/; + self.captureBreadcrumb({ + type: 'http', + category: 'xhr', + data: xhr.__raven_xhr + }); + } + } -function now() { - return +new Date(); -} // This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) + var props = ['onload', 'onerror', 'onprogress']; + for (var j = 0; j < props.length; j++) { + wrapProp(props[j], xhr); + } + if ('onreadystatechange' in xhr && isFunction(xhr.onreadystatechange)) { + fill( + xhr, + 'onreadystatechange', + function(orig) { + return self.wrap(orig, undefined, onreadystatechangeHandler); + } /* intentionally don't track this instrumentation */ + ); + } else { + // if onreadystatechange wasn't actually set by the page on this xhr, we + // are free to set our own and capture the breadcrumb + xhr.onreadystatechange = onreadystatechangeHandler; + } -var _window$1 = typeof window !== 'undefined' ? window : typeof commonjsGlobal !== 'undefined' ? commonjsGlobal : typeof self !== 'undefined' ? self : {}; + return origSend.apply(this, arguments); + }; + }, + wrappedBuiltIns + ); + } -var _document = _window$1.document; -var _navigator = _window$1.navigator; + if (autoBreadcrumbs.xhr && supportsFetch()) { + fill( + _window, + 'fetch', + function(origFetch) { + return function() { + // preserve arity + // Make a copy of the arguments to prevent deoptimization + // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments + var args = new Array(arguments.length); + for (var i = 0; i < args.length; ++i) { + args[i] = arguments[i]; + } -function keepOriginalCallback(original, callback) { - return isFunction(callback) ? function (data) { - return callback(data, original); - } : callback; -} // First, check for JSON support -// If there is no JSON, we no-op the core features of Raven -// since JSON is required to encode the payload + var fetchInput = args[0]; + var method = 'GET'; + var url; + if (typeof fetchInput === 'string') { + url = fetchInput; + } else if ('Request' in _window && fetchInput instanceof _window.Request) { + url = fetchInput.url; + if (fetchInput.method) { + method = fetchInput.method; + } + } else { + url = '' + fetchInput; + } -function Raven$1() { - this._hasJSON = !!(_typeof(JSON) === 'object' && JSON.stringify); // Raven can run in contexts where there's no document (react-native) + // if Sentry key appears in URL, don't capture, as it's our own request + if (url.indexOf(self._globalKey) !== -1) { + return origFetch.apply(this, args); + } - this._hasDocument = !isUndefined(_document); - this._hasNavigator = !isUndefined(_navigator); - this._lastCapturedException = null; - this._lastData = null; - this._lastEventId = null; - this._globalServer = null; - this._globalKey = null; - this._globalProject = null; - this._globalContext = {}; - this._globalOptions = { - // SENTRY_RELEASE can be injected by https://github.com/getsentry/sentry-webpack-plugin - release: _window$1.SENTRY_RELEASE && _window$1.SENTRY_RELEASE.id, - logger: 'javascript', - ignoreErrors: [], - ignoreUrls: [], - whitelistUrls: [], - includePaths: [], - headers: null, - collectWindowErrors: true, - maxMessageLength: 0, - // By default, truncates URL values to 250 chars - maxUrlLength: 250, - stackTraceLimit: 50, - autoBreadcrumbs: true, - instrument: true, - sampleRate: 1 - }; - this._fetchDefaults = { - method: 'POST', - keepalive: true, - referrerPolicy: 'origin' - }; - this._ignoreOnError = 0; - this._isRavenInstalled = false; - this._originalErrorStackTraceLimit = Error.stackTraceLimit; // capture references to window.console *and* all its methods first - // before the console plugin has a chance to monkey patch + if (args[1] && args[1].method) { + method = args[1].method; + } - this._originalConsole = _window$1.console || {}; - this._originalConsoleMethods = {}; - this._plugins = []; - this._startTime = now(); - this._wrappedBuiltIns = []; - this._breadcrumbs = []; - this._lastCapturedEvent = null; - this._keypressTimeout; - this._location = _window$1.location; - this._lastHref = this._location && this._location.href; + var fetchData = { + method: method, + url: url, + status_code: null + }; - this._resetBackoff(); // eslint-disable-next-line guard-for-in + return origFetch + .apply(this, args) + .then(function(response) { + fetchData.status_code = response.status; + + self.captureBreadcrumb({ + type: 'http', + category: 'fetch', + data: fetchData + }); + + return response; + }) + ['catch'](function(err) { + // if there is an error performing the request + self.captureBreadcrumb({ + type: 'http', + category: 'fetch', + data: fetchData, + level: 'error' + }); + + throw err; + }); + }; + }, + wrappedBuiltIns + ); + } + // Capture breadcrumbs from any click that is unhandled / bubbled up all the way + // to the document. Do this before we instrument addEventListener. + if (autoBreadcrumbs.dom && this._hasDocument) { + if (_document.addEventListener) { + _document.addEventListener('click', self._breadcrumbEventHandler('click'), false); + _document.addEventListener('keypress', self._keypressEventHandler(), false); + } else if (_document.attachEvent) { + // IE8 Compatibility + _document.attachEvent('onclick', self._breadcrumbEventHandler('click')); + _document.attachEvent('onkeypress', self._keypressEventHandler()); + } + } - for (var method in this._originalConsole) { - this._originalConsoleMethods[method] = this._originalConsole[method]; - } -} -/* - * The core Raven singleton - * - * @this {Raven} - */ + // record navigation (URL) changes + // NOTE: in Chrome App environment, touching history.pushState, *even inside + // a try/catch block*, will cause Chrome to output an error to console.error + // borrowed from: https://github.com/angular/angular.js/pull/13945/files + var chrome = _window.chrome; + var isChromePackagedApp = chrome && chrome.app && chrome.app.runtime; + var hasPushAndReplaceState = + !isChromePackagedApp && + _window.history && + history.pushState && + history.replaceState; + if (autoBreadcrumbs.location && hasPushAndReplaceState) { + // TODO: remove onpopstate handler on uninstall() + var oldOnPopState = _window.onpopstate; + _window.onpopstate = function() { + var currentHref = self._location.href; + self._captureUrlChange(self._lastHref, currentHref); + if (oldOnPopState) { + return oldOnPopState.apply(this, arguments); + } + }; -Raven$1.prototype = { - // Hardcode version string so that raven source can be loaded directly via - // webpack (using a build step causes webpack #1617). Grunt verifies that - // this value matches package.json during build. - // See: https://github.com/getsentry/raven-js/issues/465 - VERSION: '3.22.2', - debug: false, - TraceKit: tracekit, - // alias to TraceKit + var historyReplacementFunction = function(origHistFunction) { + // note history.pushState.length is 0; intentionally not declaring + // params to preserve 0 arity + return function(/* state, title, url */) { + var url = arguments.length > 2 ? arguments[2] : undefined; - /* - * Configure Raven with a DSN and extra options - * - * @param {string} dsn The public Sentry DSN - * @param {object} options Set of global options [optional] - * @return {Raven} - */ - config: function config(dsn, options) { - var self = this; + // url argument is optional + if (url) { + // coerce to string (this is what pushState does) + self._captureUrlChange(self._lastHref, url + ''); + } - if (self._globalServer) { - this._logDebug('error', 'Error: Raven has already been configured'); + return origHistFunction.apply(this, arguments); + }; + }; - return self; + fill(history, 'pushState', historyReplacementFunction, wrappedBuiltIns); + fill(history, 'replaceState', historyReplacementFunction, wrappedBuiltIns); } - if (!dsn) return self; - var globalOptions = self._globalOptions; // merge in options + if (autoBreadcrumbs.console && 'console' in _window && console.log) { + // console + var consoleMethodCallback = function(msg, data) { + self.captureBreadcrumb({ + message: msg, + level: data.level, + category: 'console' + }); + }; - if (options) { - each(options, function (key, value) { - // tags and extra are special and need to be put into context - if (key === 'tags' || key === 'extra' || key === 'user') { - self._globalContext[key] = value; - } else { - globalOptions[key] = value; - } + each(['debug', 'info', 'warn', 'error', 'log'], function(_, level) { + wrapConsoleMethod(console, level, consoleMethodCallback); }); } + }, - self.setDSN(dsn); // "Script error." is hard coded into browsers for errors that it can't read. - // this is the result of a script being pulled in from an external domain and CORS. - - globalOptions.ignoreErrors.push(/^Script error\.?$/); - globalOptions.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/); // join regexp rules into one big rule - - globalOptions.ignoreErrors = joinRegExp(globalOptions.ignoreErrors); - globalOptions.ignoreUrls = globalOptions.ignoreUrls.length ? joinRegExp(globalOptions.ignoreUrls) : false; - globalOptions.whitelistUrls = globalOptions.whitelistUrls.length ? joinRegExp(globalOptions.whitelistUrls) : false; - globalOptions.includePaths = joinRegExp(globalOptions.includePaths); - globalOptions.maxBreadcrumbs = Math.max(0, Math.min(globalOptions.maxBreadcrumbs || 100, 100)); // default and hard limit is 100 + _restoreBuiltIns: function() { + // restore any wrapped builtins + var builtin; + while (this._wrappedBuiltIns.length) { + builtin = this._wrappedBuiltIns.shift(); - var autoBreadcrumbDefaults = { - xhr: true, - console: true, - dom: true, - location: true, - sentry: true - }; - var autoBreadcrumbs = globalOptions.autoBreadcrumbs; + var obj = builtin[0], + name = builtin[1], + orig = builtin[2]; - if ({}.toString.call(autoBreadcrumbs) === '[object Object]') { - autoBreadcrumbs = objectMerge(autoBreadcrumbDefaults, autoBreadcrumbs); - } else if (autoBreadcrumbs !== false) { - autoBreadcrumbs = autoBreadcrumbDefaults; + obj[name] = orig; } + }, - globalOptions.autoBreadcrumbs = autoBreadcrumbs; - var instrumentDefaults = { - tryCatch: true - }; - var instrument = globalOptions.instrument; - - if ({}.toString.call(instrument) === '[object Object]') { - instrument = objectMerge(instrumentDefaults, instrument); - } else if (instrument !== false) { - instrument = instrumentDefaults; + _restoreConsole: function() { + // eslint-disable-next-line guard-for-in + for (var method in this._originalConsoleMethods) { + this._originalConsole[method] = this._originalConsoleMethods[method]; } - - globalOptions.instrument = instrument; - tracekit.collectWindowErrors = !!globalOptions.collectWindowErrors; // return for chaining - - return self; }, - /* - * Installs a global window.onerror error handler - * to capture and report uncaught exceptions. - * At this point, install() is required to be called due - * to the way TraceKit is set up. - * - * @return {Raven} - */ - install: function install() { + _drainPlugins: function() { var self = this; - if (self.isSetup() && !self._isRavenInstalled) { - tracekit.report.subscribe(function () { - self._handleOnErrorStackInfo.apply(self, arguments); - }); - - self._patchFunctionToString(); - - if (self._globalOptions.instrument && self._globalOptions.instrument.tryCatch) { - self._instrumentTryCatch(); - } + // FIX ME TODO + each(this._plugins, function(_, plugin) { + var installer = plugin[0]; + var args = plugin[1]; + installer.apply(self, [self].concat(args)); + }); + }, - if (self._globalOptions.autoBreadcrumbs) self._instrumentBreadcrumbs(); // Install all of the plugins + _parseDSN: function(str) { + var m = dsnPattern.exec(str), + dsn = {}, + i = 7; - self._drainPlugins(); + try { + while (i--) dsn[dsnKeys[i]] = m[i] || ''; + } catch (e) { + throw new RavenConfigError('Invalid DSN: ' + str); + } - self._isRavenInstalled = true; + if (dsn.pass && !this._globalOptions.allowSecretKey) { + throw new RavenConfigError( + 'Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key' + ); } - Error.stackTraceLimit = self._globalOptions.stackTraceLimit; - return this; + return dsn; }, - /* - * Set the DSN (can be called multiple time unlike config) - * - * @param {string} dsn The public Sentry DSN - */ - setDSN: function setDSN(dsn) { - var self = this, - uri = self._parseDSN(dsn), - lastSlash = uri.path.lastIndexOf('/'), - path = uri.path.substr(1, lastSlash); - - self._dsn = dsn; - self._globalKey = uri.user; - self._globalSecret = uri.pass && uri.pass.substr(1); - self._globalProject = uri.path.substr(lastSlash + 1); - self._globalServer = self._getGlobalServer(uri); - self._globalEndpoint = self._globalServer + '/' + path + 'api/' + self._globalProject + '/store/'; // Reset backoff state since we may be pointing at a - // new project/server + _getGlobalServer: function(uri) { + // assemble the endpoint from the uri pieces + var globalServer = '//' + uri.host + (uri.port ? ':' + uri.port : ''); - this._resetBackoff(); + if (uri.protocol) { + globalServer = uri.protocol + ':' + globalServer; + } + return globalServer; }, - /* - * Wrap code within a context so Raven can capture errors - * reliably across domains that is executed immediately. - * - * @param {object} options A specific set of options for this context [optional] - * @param {function} func The callback to be immediately executed within the context - * @param {array} args An array of arguments to be called with the callback [optional] - */ - context: function context(options, func, args) { - if (isFunction(options)) { - args = func || []; - func = options; - options = undefined; + _handleOnErrorStackInfo: function() { + // if we are intentionally ignoring errors via onerror, bail out + if (!this._ignoreOnError) { + this._handleStackInfo.apply(this, arguments); } - - return this.wrap(options, func).apply(this, args); }, - /* - * Wrap code within a context and returns back a new function to be executed - * - * @param {object} options A specific set of options for this context [optional] - * @param {function} func The function to be wrapped in a new context - * @param {function} func A function to call before the try/catch wrapper [optional, private] - * @return {function} The newly wrapped functions with a context - */ - wrap: function wrap(options, func, _before) { - var self = this; // 1 argument has been passed, and it's not a function - // so just return it + _handleStackInfo: function(stackInfo, options) { + var frames = this._prepareFrames(stackInfo, options); - if (isUndefined(func) && !isFunction(options)) { - return options; - } // options is optional + this._triggerEvent('handle', { + stackInfo: stackInfo, + options: options + }); + this._processException( + stackInfo.name, + stackInfo.message, + stackInfo.url, + stackInfo.lineno, + frames, + options + ); + }, - if (isFunction(options)) { - func = options; - options = undefined; - } // At this point, we've passed along 2 arguments, and the second one - // is not a function either, so we'll just return the second argument. + _prepareFrames: function(stackInfo, options) { + var self = this; + var frames = []; + if (stackInfo.stack && stackInfo.stack.length) { + each(stackInfo.stack, function(i, stack) { + var frame = self._normalizeFrame(stack, stackInfo.url); + if (frame) { + frames.push(frame); + } + }); + // e.g. frames captured via captureMessage throw + if (options && options.trimHeadFrames) { + for (var j = 0; j < options.trimHeadFrames && j < frames.length; j++) { + frames[j].in_app = false; + } + } + } + frames = frames.slice(0, this._globalOptions.stackTraceLimit); + return frames; + }, - if (!isFunction(func)) { - return func; - } // We don't wanna wrap it twice! + _normalizeFrame: function(frame, stackInfoUrl) { + // normalize the frames data + var normalized = { + filename: frame.url, + lineno: frame.line, + colno: frame.column, + function: frame.func || '?' + }; + // Case when we don't have any information about the error + // E.g. throwing a string or raw object, instead of an `Error` in Firefox + // Generating synthetic error doesn't add any value here + // + // We should probably somehow let a user know that they should fix their code + if (!frame.url) { + normalized.filename = stackInfoUrl; // fallback to whole stacks url from onerror handler + } - try { - if (func.__raven__) { - return func; - } // If this has already been wrapped in the past, return that + normalized.in_app = !// determine if an exception came from outside of our app + // first we check the global includePaths list. + ( + (!!this._globalOptions.includePaths.test && + !this._globalOptions.includePaths.test(normalized.filename)) || + // Now we check for fun, if the function name is Raven or TraceKit + /(Raven|TraceKit)\./.test(normalized['function']) || + // finally, we do a last ditch effort and check for raven.min.js + /raven\.(min\.)?js$/.test(normalized.filename) + ); + return normalized; + }, - if (func.__raven_wrapper__) { - return func.__raven_wrapper__; - } - } catch (e) { - // Just accessing custom props in some Selenium environments - // can cause a "Permission denied" exception (see raven-js#495). - // Bail on wrapping and return the function as-is (defers to window.onerror). - return func; + _processException: function(type, message, fileurl, lineno, frames, options) { + var prefixedMessage = (type ? type + ': ' : '') + (message || ''); + if ( + !!this._globalOptions.ignoreErrors.test && + (this._globalOptions.ignoreErrors.test(message) || + this._globalOptions.ignoreErrors.test(prefixedMessage)) + ) { + return; } - function wrapped() { - var args = [], - i = arguments.length, - deep = !options || options && options.deep !== false; + var stacktrace; - if (_before && isFunction(_before)) { - _before.apply(this, arguments); - } // Recursively wrap all of a function's arguments that are - // functions themselves. + if (frames && frames.length) { + fileurl = frames[0].filename || fileurl; + // Sentry expects frames oldest to newest + // and JS sends them as newest to oldest + frames.reverse(); + stacktrace = {frames: frames}; + } else if (fileurl) { + stacktrace = { + frames: [ + { + filename: fileurl, + lineno: lineno, + in_app: true + } + ] + }; + } + if ( + !!this._globalOptions.ignoreUrls.test && + this._globalOptions.ignoreUrls.test(fileurl) + ) { + return; + } - while (i--) { - args[i] = deep ? self.wrap(options, arguments[i]) : arguments[i]; - } + if ( + !!this._globalOptions.whitelistUrls.test && + !this._globalOptions.whitelistUrls.test(fileurl) + ) { + return; + } - try { - // Attempt to invoke user-land function - // NOTE: If you are a Sentry user, and you are seeing this stack frame, it - // means Raven caught an error invoking your application code. This is - // expected behavior and NOT indicative of a bug with Raven.js. - return func.apply(this, args); - } catch (e) { - self._ignoreNextOnError(); + var data = objectMerge( + { + // sentry.interfaces.Exception + exception: { + values: [ + { + type: type, + value: message, + stacktrace: stacktrace + } + ] + }, + culprit: fileurl + }, + options + ); - self.captureException(e, options); - throw e; - } - } // copy over properties of the old function + // Fire away! + this._send(data); + }, + _trimPacket: function(data) { + // For now, we only want to truncate the two different messages + // but this could/should be expanded to just trim everything + var max = this._globalOptions.maxMessageLength; + if (data.message) { + data.message = truncate(data.message, max); + } + if (data.exception) { + var exception = data.exception.values[0]; + exception.value = truncate(exception.value, max); + } - for (var property in func) { - if (hasKey(func, property)) { - wrapped[property] = func[property]; + var request = data.request; + if (request) { + if (request.url) { + request.url = truncate(request.url, this._globalOptions.maxUrlLength); + } + if (request.Referer) { + request.Referer = truncate(request.Referer, this._globalOptions.maxUrlLength); } } - wrapped.prototype = func.prototype; - func.__raven_wrapper__ = wrapped; // Signal that this function has been wrapped/filled already - // for both debugging and to prevent it to being wrapped/filled twice + if (data.breadcrumbs && data.breadcrumbs.values) + this._trimBreadcrumbs(data.breadcrumbs); - wrapped.__raven__ = true; - wrapped.__orig__ = func; - return wrapped; + return data; }, - /* - * Uninstalls the global error handler. - * - * @return {Raven} - */ - uninstall: function uninstall() { - tracekit.report.uninstall(); + /** + * Truncate breadcrumb values (right now just URLs) + */ + _trimBreadcrumbs: function(breadcrumbs) { + // known breadcrumb properties with urls + // TODO: also consider arbitrary prop values that start with (https?)?:// + var urlProps = ['to', 'from', 'url'], + urlProp, + crumb, + data; - this._unpatchFunctionToString(); + for (var i = 0; i < breadcrumbs.values.length; ++i) { + crumb = breadcrumbs.values[i]; + if ( + !crumb.hasOwnProperty('data') || + !isObject(crumb.data) || + objectFrozen(crumb.data) + ) + continue; - this._restoreBuiltIns(); + data = objectMerge({}, crumb.data); + for (var j = 0; j < urlProps.length; ++j) { + urlProp = urlProps[j]; + if (data.hasOwnProperty(urlProp) && data[urlProp]) { + data[urlProp] = truncate(data[urlProp], this._globalOptions.maxUrlLength); + } + } + breadcrumbs.values[i].data = data; + } + }, - this._restoreConsole(); + _getHttpData: function() { + if (!this._hasNavigator && !this._hasDocument) return; + var httpData = {}; - Error.stackTraceLimit = this._originalErrorStackTraceLimit; - this._isRavenInstalled = false; - return this; - }, + if (this._hasNavigator && _navigator.userAgent) { + httpData.headers = { + 'User-Agent': navigator.userAgent + }; + } - /* - * Manually capture an exception and send it over to Sentry - * - * @param {error} ex An exception to be logged - * @param {object} options A specific set of options for this error [optional] - * @return {Raven} - */ - captureException: function captureException(ex, options) { - options = objectMerge({ - trimHeadFrames: 0 - }, options ? options : {}); // Cases for sending ex as a message, rather than an exception + // Check in `window` instead of `document`, as we may be in ServiceWorker environment + if (_window.location && _window.location.href) { + httpData.url = _window.location.href; + } - var isNotError = !isError(ex); - var isNotErrorEvent = !isErrorEvent(ex); - var isErrorEventWithoutError = isErrorEvent(ex) && !ex.error; + if (this._hasDocument && _document.referrer) { + if (!httpData.headers) httpData.headers = {}; + httpData.headers.Referer = _document.referrer; + } - if (isNotError && isNotErrorEvent || isErrorEventWithoutError) { - return this.captureMessage(ex, objectMerge(options, { - stacktrace: true, - // if we fall back to captureMessage, default to attempting a new trace - trimHeadFrames: options.trimHeadFrames + 1 - })); - } // Get actual Error from ErrorEvent + return httpData; + }, + _resetBackoff: function() { + this._backoffDuration = 0; + this._backoffStart = null; + }, - if (isErrorEvent(ex)) ex = ex.error; // Store the raw exception object for potential debugging and introspection + _shouldBackoff: function() { + return this._backoffDuration && now() - this._backoffStart < this._backoffDuration; + }, - this._lastCapturedException = ex; // TraceKit.report will re-raise any exception passed to it, - // which means you have to wrap it in try/catch. Instead, we - // can wrap it here and only re-raise if TraceKit.report - // raises an exception different from the one we asked to - // report on. + /** + * Returns true if the in-process data payload matches the signature + * of the previously-sent data + * + * NOTE: This has to be done at this level because TraceKit can generate + * data from window.onerror WITHOUT an exception object (IE8, IE9, + * other old browsers). This can take the form of an "exception" + * data object with a single frame (derived from the onerror args). + */ + _isRepeatData: function(current) { + var last = this._lastData; - try { - var stack = tracekit.computeStackTrace(ex); + if ( + !last || + current.message !== last.message || // defined for captureMessage + current.culprit !== last.culprit // defined for captureException/onerror + ) + return false; - this._handleStackInfo(stack, options); - } catch (ex1) { - if (ex !== ex1) { - throw ex1; - } + // Stacktrace interface (i.e. from captureMessage) + if (current.stacktrace || last.stacktrace) { + return isSameStacktrace(current.stacktrace, last.stacktrace); + } else if (current.exception || last.exception) { + // Exception interface (i.e. from captureException/onerror) + return isSameException(current.exception, last.exception); } - return this; + return true; }, - /* - * Manually send a message to Sentry - * - * @param {string} msg A plain message to be captured in Sentry - * @param {object} options A specific set of options for this message [optional] - * @return {Raven} - */ - captureMessage: function captureMessage(msg, options) { - // config() automagically converts ignoreErrors from a list to a RegExp so we need to test for an - // early call; we'll error on the side of logging anything called before configuration since it's - // probably something you should see: - if (!!this._globalOptions.ignoreErrors.test && this._globalOptions.ignoreErrors.test(msg)) { + _setBackoffState: function(request) { + // If we are already in a backoff state, don't change anything + if (this._shouldBackoff()) { return; } - options = options || {}; - var data = objectMerge({ - message: msg + '' // Make sure it's actually a string + var status = request.status; - }, options); - var ex; // Generate a "synthetic" stack trace from this point. - // NOTE: If you are a Sentry user, and you are seeing this stack frame, it is NOT indicative - // of a bug with Raven.js. Sentry generates synthetic traces either by configuration, - // or if it catches a thrown object without a "stack" property. + // 400 - project_id doesn't exist or some other fatal + // 401 - invalid/revoked dsn + // 429 - too many requests + if (!(status === 400 || status === 401 || status === 429)) return; + var retry; try { - throw new Error(msg); - } catch (ex1) { - ex = ex1; - } // null exception name so `Error` isn't prefixed to msg + // If Retry-After is not in Access-Control-Expose-Headers, most + // browsers will throw an exception trying to access it + if (supportsFetch()) { + retry = request.headers.get('Retry-After'); + } else { + retry = request.getResponseHeader('Retry-After'); + } + // Retry-After is returned in seconds + retry = parseInt(retry, 10) * 1000; + } catch (e) { + /* eslint no-empty:0 */ + } - ex.name = null; - var stack = tracekit.computeStackTrace(ex); // stack[0] is `throw new Error(msg)` call itself, we are interested in the frame that was just before that, stack[1] + this._backoffDuration = retry + ? // If Sentry server returned a Retry-After value, use it + retry + : // Otherwise, double the last backoff duration (starts at 1 sec) + this._backoffDuration * 2 || 1000; - var initialCall = isArray(stack.stack) && stack.stack[1]; - var fileurl = initialCall && initialCall.url || ''; + this._backoffStart = now(); + }, - if (!!this._globalOptions.ignoreUrls.test && this._globalOptions.ignoreUrls.test(fileurl)) { - return; - } + _send: function(data) { + var globalOptions = this._globalOptions; - if (!!this._globalOptions.whitelistUrls.test && !this._globalOptions.whitelistUrls.test(fileurl)) { - return; + var baseData = { + project: this._globalProject, + logger: globalOptions.logger, + platform: 'javascript' + }, + httpData = this._getHttpData(); + + if (httpData) { + baseData.request = httpData; } - if (this._globalOptions.stacktrace || options && options.stacktrace) { - options = objectMerge({ - // fingerprint on msg, not stack trace (legacy behavior, could be - // revisited) - fingerprint: msg, - // since we know this is a synthetic trace, the top N-most frames - // MUST be from Raven.js, so mark them as in_app later by setting - // trimHeadFrames - trimHeadFrames: (options.trimHeadFrames || 0) + 1 - }, options); + // HACK: delete `trimHeadFrames` to prevent from appearing in outbound payload + if (data.trimHeadFrames) delete data.trimHeadFrames; - var frames = this._prepareFrames(stack, options); + data = objectMerge(baseData, data); - data.stacktrace = { - // Sentry expects frames oldest to newest - frames: frames.reverse() + // Merge in the tags and extra separately since objectMerge doesn't handle a deep merge + data.tags = objectMerge(objectMerge({}, this._globalContext.tags), data.tags); + data.extra = objectMerge(objectMerge({}, this._globalContext.extra), data.extra); + + // Send along our own collected metadata with extra + data.extra['session:duration'] = now() - this._startTime; + + if (this._breadcrumbs && this._breadcrumbs.length > 0) { + // intentionally make shallow copy so that additions + // to breadcrumbs aren't accidentally sent in this request + data.breadcrumbs = { + values: [].slice.call(this._breadcrumbs, 0) }; - } // Fire away! + } + if (this._globalContext.user) { + // sentry.interfaces.User + data.user = this._globalContext.user; + } - this._send(data); + // Include the environment if it's defined in globalOptions + if (globalOptions.environment) data.environment = globalOptions.environment; - return this; - }, - captureBreadcrumb: function captureBreadcrumb(obj) { - var crumb = objectMerge({ - timestamp: now() / 1000 - }, obj); + // Include the release if it's defined in globalOptions + if (globalOptions.release) data.release = globalOptions.release; - if (isFunction(this._globalOptions.breadcrumbCallback)) { - var result = this._globalOptions.breadcrumbCallback(crumb); + // Include server_name if it's defined in globalOptions + if (globalOptions.serverName) data.server_name = globalOptions.serverName; - if (isObject(result) && !isEmptyObject(result)) { - crumb = result; - } else if (result === false) { - return this; - } - } + data = this._sanitizeData(data); - this._breadcrumbs.push(crumb); + // Cleanup empty properties before sending them to the server + Object.keys(data).forEach(function(key) { + if (data[key] == null || data[key] === '' || isEmptyObject(data[key])) { + delete data[key]; + } + }); - if (this._breadcrumbs.length > this._globalOptions.maxBreadcrumbs) { - this._breadcrumbs.shift(); + if (isFunction(globalOptions.dataCallback)) { + data = globalOptions.dataCallback(data) || data; } - return this; - }, - addPlugin: function addPlugin(plugin - /*arg1, arg2, ... argN*/ - ) { - var pluginArgs = [].slice.call(arguments, 1); + // Why?????????? + if (!data || isEmptyObject(data)) { + return; + } - this._plugins.push([plugin, pluginArgs]); + // Check if the request should be filtered or not + if ( + isFunction(globalOptions.shouldSendCallback) && + !globalOptions.shouldSendCallback(data) + ) { + return; + } - if (this._isRavenInstalled) { - this._drainPlugins(); + // Backoff state: Sentry server previously responded w/ an error (e.g. 429 - too many requests), + // so drop requests until "cool-off" period has elapsed. + if (this._shouldBackoff()) { + this._logDebug('warn', 'Raven dropped error due to backoff: ', data); + return; } - return this; + if (typeof globalOptions.sampleRate === 'number') { + if (Math.random() < globalOptions.sampleRate) { + this._sendProcessedPayload(data); + } + } else { + this._sendProcessedPayload(data); + } }, - /* - * Set/clear a user to be sent along with the payload. - * - * @param {object} user An object representing user data [optional] - * @return {Raven} - */ - setUserContext: function setUserContext(user) { - // Intentionally do not merge here since that's an unexpected behavior. - this._globalContext.user = user; - return this; + _sanitizeData: function(data) { + return sanitize(data, this._globalOptions.sanitizeKeys); }, - /* - * Merge extra attributes to be sent along with the payload. - * - * @param {object} extra An object representing extra data [optional] - * @return {Raven} - */ - setExtraContext: function setExtraContext(extra) { - this._mergeContext('extra', extra); - - return this; + _getUuid: function() { + return uuid4(); }, - /* - * Merge tags to be sent along with the payload. - * - * @param {object} tags An object representing tags [optional] - * @return {Raven} - */ - setTagsContext: function setTagsContext(tags) { - this._mergeContext('tags', tags); + _sendProcessedPayload: function(data, callback) { + var self = this; + var globalOptions = this._globalOptions; - return this; - }, + if (!this.isSetup()) return; - /* - * Clear all of the context. - * - * @return {Raven} - */ - clearContext: function clearContext() { - this._globalContext = {}; - return this; - }, + // Try and clean up the packet before sending by truncating long values + data = this._trimPacket(data); - /* - * Get a copy of the current context. This cannot be mutated. - * - * @return {object} copy of context - */ - getContext: function getContext() { - // lol javascript - return JSON.parse(stringify_1(this._globalContext)); - }, + // ideally duplicate error testing should occur *before* dataCallback/shouldSendCallback, + // but this would require copying an un-truncated copy of the data packet, which can be + // arbitrarily deep (extra_data) -- could be worthwhile? will revisit + if (!this._globalOptions.allowDuplicates && this._isRepeatData(data)) { + this._logDebug('warn', 'Raven dropped repeat event: ', data); + return; + } - /* - * Set environment of application - * - * @param {string} environment Typically something like 'production'. - * @return {Raven} - */ - setEnvironment: function setEnvironment(environment) { - this._globalOptions.environment = environment; - return this; - }, + // Send along an event_id if not explicitly passed. + // This event_id can be used to reference the error within Sentry itself. + // Set lastEventId after we know the error should actually be sent + this._lastEventId = data.event_id || (data.event_id = this._getUuid()); - /* - * Set release version of application - * - * @param {string} release Typically something like a git SHA to identify version - * @return {Raven} - */ - setRelease: function setRelease(release) { - this._globalOptions.release = release; - return this; - }, + // Store outbound payload after trim + this._lastData = data; - /* - * Set the dataCallback option - * - * @param {function} callback The callback to run which allows the - * data blob to be mutated before sending - * @return {Raven} - */ - setDataCallback: function setDataCallback(callback) { - var original = this._globalOptions.dataCallback; - this._globalOptions.dataCallback = keepOriginalCallback(original, callback); - return this; - }, + this._logDebug('debug', 'Raven about to send:', data); - /* - * Set the breadcrumbCallback option - * - * @param {function} callback The callback to run which allows filtering - * or mutating breadcrumbs - * @return {Raven} - */ - setBreadcrumbCallback: function setBreadcrumbCallback(callback) { - var original = this._globalOptions.breadcrumbCallback; - this._globalOptions.breadcrumbCallback = keepOriginalCallback(original, callback); - return this; - }, + var auth = { + sentry_version: '7', + sentry_client: 'raven-js/' + this.VERSION, + sentry_key: this._globalKey + }; - /* - * Set the shouldSendCallback option - * - * @param {function} callback The callback to run which allows - * introspecting the blob before sending - * @return {Raven} - */ - setShouldSendCallback: function setShouldSendCallback(callback) { - var original = this._globalOptions.shouldSendCallback; - this._globalOptions.shouldSendCallback = keepOriginalCallback(original, callback); - return this; - }, + if (this._globalSecret) { + auth.sentry_secret = this._globalSecret; + } - /** - * Override the default HTTP transport mechanism that transmits data - * to the Sentry server. - * - * @param {function} transport Function invoked instead of the default - * `makeRequest` handler. - * - * @return {Raven} - */ - setTransport: function setTransport(transport) { - this._globalOptions.transport = transport; - return this; - }, + var exception = data.exception && data.exception.values[0]; - /* - * Get the latest raw exception that was captured by Raven. - * - * @return {error} - */ - lastException: function lastException() { - return this._lastCapturedException; - }, + // only capture 'sentry' breadcrumb is autoBreadcrumbs is truthy + if ( + this._globalOptions.autoBreadcrumbs && + this._globalOptions.autoBreadcrumbs.sentry + ) { + this.captureBreadcrumb({ + category: 'sentry', + message: exception + ? (exception.type ? exception.type + ': ' : '') + exception.value + : data.message, + event_id: data.event_id, + level: data.level || 'error' // presume error unless specified + }); + } - /* - * Get the last event id - * - * @return {string} - */ - lastEventId: function lastEventId() { - return this._lastEventId; - }, + var url = this._globalEndpoint; + (globalOptions.transport || this._makeRequest).call(this, { + url: url, + auth: auth, + data: data, + options: globalOptions, + onSuccess: function success() { + self._resetBackoff(); - /* - * Determine if Raven is setup and ready to go. - * - * @return {boolean} - */ - isSetup: function isSetup() { - if (!this._hasJSON) return false; // needs JSON support + self._triggerEvent('success', { + data: data, + src: url + }); + callback && callback(); + }, + onError: function failure(error) { + self._logDebug('error', 'Raven transport failed to send: ', error); - if (!this._globalServer) { - if (!this.ravenNotConfiguredError) { - this.ravenNotConfiguredError = true; + if (error.request) { + self._setBackoffState(error.request); + } - this._logDebug('error', 'Error: Raven has not been configured.'); + self._triggerEvent('failure', { + data: data, + src: url + }); + error = error || new Error('Raven send failed (no additional details provided)'); + callback && callback(error); } + }); + }, - return false; - } + _makeRequest: function(opts) { + // Auth is intentionally sent as part of query string (NOT as custom HTTP header) to avoid preflight CORS requests + var url = opts.url + '?' + urlencode(opts.auth); - return true; - }, - afterLoad: function afterLoad() { - // TODO: remove window dependence? - // Attempt to initialize Raven on load - var RavenConfig = _window$1.RavenConfig; + var evaluatedHeaders = null; + var evaluatedFetchParameters = {}; - if (RavenConfig) { - this.config(RavenConfig.dsn, RavenConfig.config).install(); + if (opts.options.headers) { + evaluatedHeaders = this._evaluateHash(opts.options.headers); } - }, - showReportDialog: function showReportDialog(options) { - if (!_document // doesn't work without a document (React native) - ) return; - options = options || {}; - var lastEventId = options.eventId || this.lastEventId(); - if (!lastEventId) { - throw new configError('Missing eventId'); + if (opts.options.fetchParameters) { + evaluatedFetchParameters = this._evaluateHash(opts.options.fetchParameters); } - var dsn = options.dsn || this._dsn; + if (supportsFetch()) { + evaluatedFetchParameters.body = stringify(opts.data); - if (!dsn) { - throw new configError('Missing DSN'); - } + var defaultFetchOptions = objectMerge({}, this._fetchDefaults); + var fetchOptions = objectMerge(defaultFetchOptions, evaluatedFetchParameters); - var encode = encodeURIComponent; - var qs = ''; - qs += '?eventId=' + encode(lastEventId); - qs += '&dsn=' + encode(dsn); - var user = options.user || this._globalContext.user; + if (evaluatedHeaders) { + fetchOptions.headers = evaluatedHeaders; + } - if (user) { - if (user.name) qs += '&name=' + encode(user.name); - if (user.email) qs += '&email=' + encode(user.email); + return _window + .fetch(url, fetchOptions) + .then(function(response) { + if (response.ok) { + opts.onSuccess && opts.onSuccess(); + } else { + var error = new Error('Sentry error code: ' + response.status); + // It's called request only to keep compatibility with XHR interface + // and not add more redundant checks in setBackoffState method + error.request = response; + opts.onError && opts.onError(error); + } + }) + ['catch'](function() { + opts.onError && + opts.onError(new Error('Sentry error code: network unavailable')); + }); } - var globalServer = this._getGlobalServer(this._parseDSN(dsn)); - - var script = _document.createElement('script'); - - script.async = true; - script.src = globalServer + '/api/embed/error-page/' + qs; + var request = _window.XMLHttpRequest && new _window.XMLHttpRequest(); + if (!request) return; - (_document.head || _document.body).appendChild(script); - }, + // if browser doesn't support CORS (e.g. IE7), we are out of luck + var hasCORS = 'withCredentials' in request || typeof XDomainRequest !== 'undefined'; - /**** Private functions ****/ - _ignoreNextOnError: function _ignoreNextOnError() { - var self = this; - this._ignoreOnError += 1; - setTimeout(function () { - // onerror should trigger before setTimeout - self._ignoreOnError -= 1; - }); - }, - _triggerEvent: function _triggerEvent(eventType, options) { - // NOTE: `event` is a native browser thing, so let's avoid conflicting wiht it - var evt, key; - if (!this._hasDocument) return; - options = options || {}; - eventType = 'raven' + eventType.substr(0, 1).toUpperCase() + eventType.substr(1); + if (!hasCORS) return; - if (_document.createEvent) { - evt = _document.createEvent('HTMLEvents'); - evt.initEvent(eventType, true, true); + if ('withCredentials' in request) { + request.onreadystatechange = function() { + if (request.readyState !== 4) { + return; + } else if (request.status === 200) { + opts.onSuccess && opts.onSuccess(); + } else if (opts.onError) { + var err = new Error('Sentry error code: ' + request.status); + err.request = request; + opts.onError(err); + } + }; } else { - evt = _document.createEventObject(); - evt.eventType = eventType; - } + request = new XDomainRequest(); + // xdomainrequest cannot go http -> https (or vice versa), + // so always use protocol relative + url = url.replace(/^https?:/, ''); - for (key in options) { - if (hasKey(options, key)) { - evt[key] = options[key]; + // onreadystatechange not supported by XDomainRequest + if (opts.onSuccess) { + request.onload = opts.onSuccess; } - } - - if (_document.createEvent) { - // IE9 if standards - _document.dispatchEvent(evt); - } else { - // IE8 regardless of Quirks or Standards - // IE9 if quirks - try { - _document.fireEvent('on' + evt.eventType.toLowerCase(), evt); - } catch (e) {// Do nothing + if (opts.onError) { + request.onerror = function() { + var err = new Error('Sentry error code: XDomainRequest'); + err.request = request; + opts.onError(err); + }; } } - }, - /** - * Wraps addEventListener to capture UI breadcrumbs - * @param evtName the event name (e.g. "click") - * @returns {Function} - * @private - */ - _breadcrumbEventHandler: function _breadcrumbEventHandler(evtName) { - var self = this; - return function (evt) { - // reset keypress timeout; e.g. triggering a 'click' after - // a 'keypress' will reset the keypress debounce so that a new - // set of keypresses can be recorded - self._keypressTimeout = null; // It's possible this handler might trigger multiple times for the same - // event (e.g. event propagation through node ancestors). Ignore if we've - // already captured the event. + request.open('POST', url); - if (self._lastCapturedEvent === evt) return; - self._lastCapturedEvent = evt; // try/catch both: - // - accessing evt.target (see getsentry/raven-js#838, #768) - // - `htmlTreeAsString` because it's complex, and just accessing the DOM incorrectly - // can throw an exception in some circumstances. + if (evaluatedHeaders) { + each(evaluatedHeaders, function(key, value) { + request.setRequestHeader(key, value); + }); + } - var target; + request.send(stringify(opts.data)); + }, - try { - target = htmlTreeAsString(evt.target); - } catch (e) { - target = ''; + _evaluateHash: function(hash) { + var evaluated = {}; + + for (var key in hash) { + if (hash.hasOwnProperty(key)) { + var value = hash[key]; + evaluated[key] = typeof value === 'function' ? value() : value; } + } - self.captureBreadcrumb({ - category: 'ui.' + evtName, - // e.g. ui.click, ui.input - message: target - }); - }; + return evaluated; }, - /** - * Wraps addEventListener to capture keypress UI events - * @returns {Function} - * @private - */ - _keypressEventHandler: function _keypressEventHandler() { - var self = this, - debounceDuration = 1000; // milliseconds - // TODO: if somehow user switches keypress target before - // debounce timeout is triggered, we will only capture - // a single breadcrumb from the FIRST target (acceptable?) + _logDebug: function(level) { + // We allow `Raven.debug` and `Raven.config(DSN, { debug: true })` to not make backward incompatible API change + if ( + this._originalConsoleMethods[level] && + (this.debug || this._globalOptions.debug) + ) { + // In IE<10 console methods do not have their own 'apply' method + Function.prototype.apply.call( + this._originalConsoleMethods[level], + this._originalConsole, + [].slice.call(arguments, 1) + ); + } + }, - return function (evt) { - var target; + _mergeContext: function(key, context) { + if (isUndefined(context)) { + delete this._globalContext[key]; + } else { + this._globalContext[key] = objectMerge(this._globalContext[key] || {}, context); + } + } +}; - try { - target = evt.target; - } catch (e) { - // just accessing event properties can throw an exception in some rare circumstances - // see: https://github.com/getsentry/raven-js/issues/838 - return; - } +// Deprecations +Raven.prototype.setUser = Raven.prototype.setUserContext; +Raven.prototype.setReleaseContext = Raven.prototype.setRelease; - var tagName = target && target.tagName; // only consider keypress events on actual input elements - // this will disregard keypresses targeting body (e.g. tabbing - // through elements, hotkeys, etc) +module.exports = Raven; - if (!tagName || tagName !== 'INPUT' && tagName !== 'TEXTAREA' && !target.isContentEditable) return; // record first keypress in a series, but ignore subsequent - // keypresses until debounce clears +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"10":10,"11":11,"4":4,"5":5,"8":8,"9":9}],7:[function(_dereq_,module,exports){ +(function (global){ +/** + * Enforces a single instance of the Raven client, and the + * main entry point for Raven. If you are a consumer of the + * Raven library, you SHOULD load this file (vs raven.js). + **/ - var timeout = self._keypressTimeout; +var RavenConstructor = _dereq_(6); - if (!timeout) { - self._breadcrumbEventHandler('input')(evt); - } +// This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) +var _window = + typeof window !== 'undefined' + ? window + : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; +var _Raven = _window.Raven; - clearTimeout(timeout); - self._keypressTimeout = setTimeout(function () { - self._keypressTimeout = null; - }, debounceDuration); - }; - }, +var Raven = new RavenConstructor(); - /** - * Captures a breadcrumb of type "navigation", normalizing input URLs - * @param to the originating URL - * @param from the target URL - * @private - */ - _captureUrlChange: function _captureUrlChange(from, to) { - var parsedLoc = parseUrl(this._location.href); - var parsedTo = parseUrl(to); - var parsedFrom = parseUrl(from); // because onpopstate only tells you the "new" (to) value of location.href, and - // not the previous (from) value, we need to track the value of the current URL - // state ourselves +/* + * Allow multiple versions of Raven to be installed. + * Strip Raven from the global context and returns the instance. + * + * @return {Raven} + */ +Raven.noConflict = function() { + _window.Raven = _Raven; + return Raven; +}; - this._lastHref = to; // Use only the path component of the URL if the URL matches the current - // document (almost all the time when using pushState) +Raven.afterLoad(); - if (parsedLoc.protocol === parsedTo.protocol && parsedLoc.host === parsedTo.host) to = parsedTo.relative; - if (parsedLoc.protocol === parsedFrom.protocol && parsedLoc.host === parsedFrom.host) from = parsedFrom.relative; - this.captureBreadcrumb({ - category: 'navigation', - data: { - to: to, - from: from - } - }); - }, - _patchFunctionToString: function _patchFunctionToString() { - var self = this; - self._originalFunctionToString = Function.prototype.toString; // eslint-disable-next-line no-extend-native +module.exports = Raven; - Function.prototype.toString = function () { - if (typeof this === 'function' && this.__raven__) { - return self._originalFunctionToString.apply(this.__orig__, arguments); - } +/** + * DISCLAIMER: + * + * Expose `Client` constructor for cases where user want to track multiple "sub-applications" in one larger app. + * It's not meant to be used by a wide audience, so pleaaase make sure that you know what you're doing before using it. + * Accidentally calling `install` multiple times, may result in an unexpected behavior that's very hard to debug. + * + * It's called `Client' to be in-line with Raven Node implementation. + * + * HOWTO: + * + * import Raven from 'raven-js'; + * + * const someAppReporter = new Raven.Client(); + * const someOtherAppReporter = new Raven.Client(); + * + * someAppReporter.config('__DSN__', { + * ...config goes here + * }); + * + * someOtherAppReporter.config('__OTHER_DSN__', { + * ...config goes here + * }); + * + * someAppReporter.captureMessage(...); + * someAppReporter.captureException(...); + * someAppReporter.captureBreadcrumb(...); + * + * someOtherAppReporter.captureMessage(...); + * someOtherAppReporter.captureException(...); + * someOtherAppReporter.captureBreadcrumb(...); + * + * It should "just work". + */ +module.exports.Client = RavenConstructor; - return self._originalFunctionToString.apply(this, arguments); - }; - }, - _unpatchFunctionToString: function _unpatchFunctionToString() { - if (this._originalFunctionToString) { - // eslint-disable-next-line no-extend-native - Function.prototype.toString = this._originalFunctionToString; - } - }, +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"6":6}],8:[function(_dereq_,module,exports){ +(function (global){ +var stringify = _dereq_(10); - /** - * Wrap timer functions and event targets to catch errors and provide - * better metadata. - */ - _instrumentTryCatch: function _instrumentTryCatch() { - var self = this; - var wrappedBuiltIns = self._wrappedBuiltIns; +var _window = + typeof window !== 'undefined' + ? window + : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; - function wrapTimeFn(orig) { - return function (fn, t) { - // preserve arity - // Make a copy of the arguments to prevent deoptimization - // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments - var args = new Array(arguments.length); +function isObject(what) { + return typeof what === 'object' && what !== null; +} - for (var i = 0; i < args.length; ++i) { - args[i] = arguments[i]; - } +// Yanked from https://git.io/vS8DV re-used under CC0 +// with some tiny modifications +function isError(value) { + switch ({}.toString.call(value)) { + case '[object Error]': + return true; + case '[object Exception]': + return true; + case '[object DOMException]': + return true; + default: + return value instanceof Error; + } +} - var originalCallback = args[0]; +function isErrorEvent(value) { + return supportsErrorEvent() && {}.toString.call(value) === '[object ErrorEvent]'; +} - if (isFunction(originalCallback)) { - args[0] = self.wrap(originalCallback); - } // IE < 9 doesn't support .call/.apply on setInterval/setTimeout, but it - // also supports only two arguments and doesn't care what this is, so we - // can just call the original function directly. +function isUndefined(what) { + return what === void 0; +} +function isFunction(what) { + return typeof what === 'function'; +} - if (orig.apply) { - return orig.apply(this, args); - } else { - return orig(args[0], args[1]); - } - }; - } +function isPlainObject(what) { + return Object.prototype.toString.call(what) === '[object Object]'; +} - var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; +function isString(what) { + return Object.prototype.toString.call(what) === '[object String]'; +} - function wrapEventTarget(global) { - var proto = _window$1[global] && _window$1[global].prototype; +function isArray(what) { + return Object.prototype.toString.call(what) === '[object Array]'; +} - if (proto && proto.hasOwnProperty && proto.hasOwnProperty('addEventListener')) { - fill(proto, 'addEventListener', function (orig) { - return function (evtName, fn, capture, secure) { - // preserve arity - try { - if (fn && fn.handleEvent) { - fn.handleEvent = self.wrap(fn.handleEvent); - } - } catch (err) {} // can sometimes get 'Permission denied to access property "handle Event' - // More breadcrumb DOM capture ... done here and not in `_instrumentBreadcrumbs` - // so that we don't have more than one wrapper function +function isEmptyObject(what) { + if (!isPlainObject(what)) return false; + for (var _ in what) { + if (what.hasOwnProperty(_)) { + return false; + } + } + return true; +} - var before, clickHandler, keypressHandler; +function supportsErrorEvent() { + try { + new ErrorEvent(''); // eslint-disable-line no-new + return true; + } catch (e) { + return false; + } +} - if (autoBreadcrumbs && autoBreadcrumbs.dom && (global === 'EventTarget' || global === 'Node')) { - // NOTE: generating multiple handlers per addEventListener invocation, should - // revisit and verify we can just use one (almost certainly) - clickHandler = self._breadcrumbEventHandler('click'); - keypressHandler = self._keypressEventHandler(); +function supportsFetch() { + if (!('fetch' in _window)) return false; - before = function before(evt) { - // need to intercept every DOM event in `before` argument, in case that - // same wrapped method is re-used for different events (e.g. mousemove THEN click) - // see #724 - if (!evt) return; - var eventType; + try { + new Headers(); // eslint-disable-line no-new + new Request(''); // eslint-disable-line no-new + new Response(); // eslint-disable-line no-new + return true; + } catch (e) { + return false; + } +} - try { - eventType = evt.type; - } catch (e) { - // just accessing event properties can throw an exception in some rare circumstances - // see: https://github.com/getsentry/raven-js/issues/838 - return; - } +// Despite all stars in the sky saying that Edge supports old draft syntax, aka 'never', 'always', 'origin' and 'default +// https://caniuse.com/#feat=referrer-policy +// It doesn't. And it throw exception instead of ignoring this parameter... +// REF: https://github.com/getsentry/raven-js/issues/1233 +function supportsReferrerPolicy() { + if (!supportsFetch()) return false; - if (eventType === 'click') return clickHandler(evt);else if (eventType === 'keypress') return keypressHandler(evt); - }; - } + try { + // eslint-disable-next-line no-new + new Request('pickleRick', { + referrerPolicy: 'origin' + }); + return true; + } catch (e) { + return false; + } +} - return orig.call(this, evtName, self.wrap(fn, undefined, before), capture, secure); - }; - }, wrappedBuiltIns); - fill(proto, 'removeEventListener', function (orig) { - return function (evt, fn, capture, secure) { - try { - fn = fn && (fn.__raven_wrapper__ ? fn.__raven_wrapper__ : fn); - } catch (e) {// ignore, accessing __raven_wrapper__ will throw in some Selenium environments - } +function supportsPromiseRejectionEvent() { + return typeof PromiseRejectionEvent === 'function'; +} - return orig.call(this, evt, fn, capture, secure); - }; - }, wrappedBuiltIns); - } +function wrappedCallback(callback) { + function dataCallback(data, original) { + var normalizedData = callback(data) || data; + if (original) { + return original(normalizedData) || normalizedData; } + return normalizedData; + } - fill(_window$1, 'setTimeout', wrapTimeFn, wrappedBuiltIns); - fill(_window$1, 'setInterval', wrapTimeFn, wrappedBuiltIns); - - if (_window$1.requestAnimationFrame) { - fill(_window$1, 'requestAnimationFrame', function (orig) { - return function (cb) { - return orig(self.wrap(cb)); - }; - }, wrappedBuiltIns); - } // event targets borrowed from bugsnag-js: - // https://github.com/bugsnag/bugsnag-js/blob/master/src/bugsnag.js#L666 - + return dataCallback; +} - var eventTargets = ['EventTarget', 'Window', 'Node', 'ApplicationCache', 'AudioTrackList', 'ChannelMergerNode', 'CryptoOperation', 'EventSource', 'FileReader', 'HTMLUnknownElement', 'IDBDatabase', 'IDBRequest', 'IDBTransaction', 'KeyOperation', 'MediaController', 'MessagePort', 'ModalWindow', 'Notification', 'SVGElementInstance', 'Screen', 'TextTrack', 'TextTrackCue', 'TextTrackList', 'WebSocket', 'WebSocketWorker', 'Worker', 'XMLHttpRequest', 'XMLHttpRequestEventTarget', 'XMLHttpRequestUpload']; +function each(obj, callback) { + var i, j; - for (var i = 0; i < eventTargets.length; i++) { - wrapEventTarget(eventTargets[i]); + if (isUndefined(obj.length)) { + for (i in obj) { + if (hasKey(obj, i)) { + callback.call(null, i, obj[i]); + } } - }, - - /** - * Instrument browser built-ins w/ breadcrumb capturing - * - XMLHttpRequests - * - DOM interactions (click/typing) - * - window.location changes - * - console - * - * Can be disabled or individually configured via the `autoBreadcrumbs` config option - */ - _instrumentBreadcrumbs: function _instrumentBreadcrumbs() { - var self = this; - var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; - var wrappedBuiltIns = self._wrappedBuiltIns; - - function wrapProp(prop, xhr) { - if (prop in xhr && isFunction(xhr[prop])) { - fill(xhr, prop, function (orig) { - return self.wrap(orig); - }); // intentionally don't track filled methods on XHR instances + } else { + j = obj.length; + if (j) { + for (i = 0; i < j; i++) { + callback.call(null, i, obj[i]); } } + } +} - if (autoBreadcrumbs.xhr && 'XMLHttpRequest' in _window$1) { - var xhrproto = XMLHttpRequest.prototype; - fill(xhrproto, 'open', function (origOpen) { - return function (method, url) { - // preserve arity - // if Sentry key appears in URL, don't capture - if (isString(url) && url.indexOf(self._globalKey) === -1) { - this.__raven_xhr = { - method: method, - url: url, - status_code: null - }; - } - - return origOpen.apply(this, arguments); - }; - }, wrappedBuiltIns); - fill(xhrproto, 'send', function (origSend) { - return function () { - // preserve arity - var xhr = this; - - function onreadystatechangeHandler() { - if (xhr.__raven_xhr && xhr.readyState === 4) { - try { - // touching statusCode in some platforms throws - // an exception - xhr.__raven_xhr.status_code = xhr.status; - } catch (e) { - /* do nothing */ - } +function objectMerge(obj1, obj2) { + if (!obj2) { + return obj1; + } + each(obj2, function(key, value) { + obj1[key] = value; + }); + return obj1; +} - self.captureBreadcrumb({ - type: 'http', - category: 'xhr', - data: xhr.__raven_xhr - }); - } - } +/** + * This function is only used for react-native. + * react-native freezes object that have already been sent over the + * js bridge. We need this function in order to check if the object is frozen. + * So it's ok that objectFrozen returns false if Object.isFrozen is not + * supported because it's not relevant for other "platforms". See related issue: + * https://github.com/getsentry/react-native-sentry/issues/57 + */ +function objectFrozen(obj) { + if (!Object.isFrozen) { + return false; + } + return Object.isFrozen(obj); +} - var props = ['onload', 'onerror', 'onprogress']; +function truncate(str, max) { + if (typeof max !== 'number') { + throw new Error('2nd argument to `truncate` function should be a number'); + } + if (typeof str !== 'string' || max === 0) { + return str; + } + return str.length <= max ? str : str.substr(0, max) + '\u2026'; +} - for (var j = 0; j < props.length; j++) { - wrapProp(props[j], xhr); - } +/** + * hasKey, a better form of hasOwnProperty + * Example: hasKey(MainHostObject, property) === true/false + * + * @param {Object} host object to check property + * @param {string} key to check + */ +function hasKey(object, key) { + return Object.prototype.hasOwnProperty.call(object, key); +} - if ('onreadystatechange' in xhr && isFunction(xhr.onreadystatechange)) { - fill(xhr, 'onreadystatechange', function (orig) { - return self.wrap(orig, undefined, onreadystatechangeHandler); - } - /* intentionally don't track this instrumentation */ - ); - } else { - // if onreadystatechange wasn't actually set by the page on this xhr, we - // are free to set our own and capture the breadcrumb - xhr.onreadystatechange = onreadystatechangeHandler; - } +function joinRegExp(patterns) { + // Combine an array of regular expressions and strings into one large regexp + // Be mad. + var sources = [], + i = 0, + len = patterns.length, + pattern; - return origSend.apply(this, arguments); - }; - }, wrappedBuiltIns); + for (; i < len; i++) { + pattern = patterns[i]; + if (isString(pattern)) { + // If it's a string, we need to escape it + // Taken from: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions + sources.push(pattern.replace(/([.*+?^=!:${}()|\[\]\/\\])/g, '\\$1')); + } else if (pattern && pattern.source) { + // If it's a regexp already, we want to extract the source + sources.push(pattern.source); } + // Intentionally skip other cases + } + return new RegExp(sources.join('|'), 'i'); +} - if (autoBreadcrumbs.xhr && supportsFetch()) { - fill(_window$1, 'fetch', function (origFetch) { - return function () { - // preserve arity - // Make a copy of the arguments to prevent deoptimization - // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments - var args = new Array(arguments.length); - - for (var i = 0; i < args.length; ++i) { - args[i] = arguments[i]; - } +function urlencode(o) { + var pairs = []; + each(o, function(key, value) { + pairs.push(encodeURIComponent(key) + '=' + encodeURIComponent(value)); + }); + return pairs.join('&'); +} - var fetchInput = args[0]; - var method = 'GET'; - var url; +// borrowed from https://tools.ietf.org/html/rfc3986#appendix-B +// intentionally using regex and not href parsing trick because React Native and other +// environments where DOM might not be available +function parseUrl(url) { + if (typeof url !== 'string') return {}; + var match = url.match(/^(([^:\/?#]+):)?(\/\/([^\/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?$/); - if (typeof fetchInput === 'string') { - url = fetchInput; - } else if ('Request' in _window$1 && fetchInput instanceof _window$1.Request) { - url = fetchInput.url; + // coerce to undefined values to empty string so we don't get 'undefined' + var query = match[6] || ''; + var fragment = match[8] || ''; + return { + protocol: match[2], + host: match[4], + path: match[5], + relative: match[5] + query + fragment // everything minus origin + }; +} +function uuid4() { + var crypto = _window.crypto || _window.msCrypto; - if (fetchInput.method) { - method = fetchInput.method; - } - } else { - url = '' + fetchInput; - } // if Sentry key appears in URL, don't capture, as it's our own request + if (!isUndefined(crypto) && crypto.getRandomValues) { + // Use window.crypto API if available + // eslint-disable-next-line no-undef + var arr = new Uint16Array(8); + crypto.getRandomValues(arr); + // set 4 in byte 7 + arr[3] = (arr[3] & 0xfff) | 0x4000; + // set 2 most significant bits of byte 9 to '10' + arr[4] = (arr[4] & 0x3fff) | 0x8000; - if (url.indexOf(self._globalKey) !== -1) { - return origFetch.apply(this, args); - } + var pad = function(num) { + var v = num.toString(16); + while (v.length < 4) { + v = '0' + v; + } + return v; + }; - if (args[1] && args[1].method) { - method = args[1].method; - } + return ( + pad(arr[0]) + + pad(arr[1]) + + pad(arr[2]) + + pad(arr[3]) + + pad(arr[4]) + + pad(arr[5]) + + pad(arr[6]) + + pad(arr[7]) + ); + } else { + // http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/2117523#2117523 + return 'xxxxxxxxxxxx4xxxyxxxxxxxxxxxxxxx'.replace(/[xy]/g, function(c) { + var r = (Math.random() * 16) | 0, + v = c === 'x' ? r : (r & 0x3) | 0x8; + return v.toString(16); + }); + } +} - var fetchData = { - method: method, - url: url, - status_code: null - }; - return origFetch.apply(this, args).then(function (response) { - fetchData.status_code = response.status; - self.captureBreadcrumb({ - type: 'http', - category: 'fetch', - data: fetchData - }); - return response; - }); - }; - }, wrappedBuiltIns); - } // Capture breadcrumbs from any click that is unhandled / bubbled up all the way - // to the document. Do this before we instrument addEventListener. +/** + * Given a child DOM element, returns a query-selector statement describing that + * and its ancestors + * e.g. [HTMLElement] => body > div > input#foo.btn[name=baz] + * @param elem + * @returns {string} + */ +function htmlTreeAsString(elem) { + /* eslint no-extra-parens:0*/ + var MAX_TRAVERSE_HEIGHT = 5, + MAX_OUTPUT_LEN = 80, + out = [], + height = 0, + len = 0, + separator = ' > ', + sepLength = separator.length, + nextStr; + while (elem && height++ < MAX_TRAVERSE_HEIGHT) { + nextStr = htmlElementAsString(elem); + // bail out if + // - nextStr is the 'html' element + // - the length of the string that would be created exceeds MAX_OUTPUT_LEN + // (ignore this limit if we are on the first iteration) + if ( + nextStr === 'html' || + (height > 1 && len + out.length * sepLength + nextStr.length >= MAX_OUTPUT_LEN) + ) { + break; + } - if (autoBreadcrumbs.dom && this._hasDocument) { - if (_document.addEventListener) { - _document.addEventListener('click', self._breadcrumbEventHandler('click'), false); + out.push(nextStr); - _document.addEventListener('keypress', self._keypressEventHandler(), false); - } else { - // IE8 Compatibility - _document.attachEvent('onclick', self._breadcrumbEventHandler('click')); + len += nextStr.length; + elem = elem.parentNode; + } - _document.attachEvent('onkeypress', self._keypressEventHandler()); - } - } // record navigation (URL) changes - // NOTE: in Chrome App environment, touching history.pushState, *even inside - // a try/catch block*, will cause Chrome to output an error to console.error - // borrowed from: https://github.com/angular/angular.js/pull/13945/files + return out.reverse().join(separator); +} +/** + * Returns a simple, query-selector representation of a DOM element + * e.g. [HTMLElement] => input#foo.btn[name=baz] + * @param HTMLElement + * @returns {string} + */ +function htmlElementAsString(elem) { + var out = [], + className, + classes, + key, + attr, + i; - var chrome = _window$1.chrome; - var isChromePackagedApp = chrome && chrome.app && chrome.app.runtime; - var hasPushAndReplaceState = !isChromePackagedApp && _window$1.history && history.pushState && history.replaceState; + if (!elem || !elem.tagName) { + return ''; + } - if (autoBreadcrumbs.location && hasPushAndReplaceState) { - // TODO: remove onpopstate handler on uninstall() - var oldOnPopState = _window$1.onpopstate; + out.push(elem.tagName.toLowerCase()); + if (elem.id) { + out.push('#' + elem.id); + } - _window$1.onpopstate = function () { - var currentHref = self._location.href; + className = elem.className; + if (className && isString(className)) { + classes = className.split(/\s+/); + for (i = 0; i < classes.length; i++) { + out.push('.' + classes[i]); + } + } + var attrWhitelist = ['type', 'name', 'title', 'alt']; + for (i = 0; i < attrWhitelist.length; i++) { + key = attrWhitelist[i]; + attr = elem.getAttribute(key); + if (attr) { + out.push('[' + key + '="' + attr + '"]'); + } + } + return out.join(''); +} - self._captureUrlChange(self._lastHref, currentHref); +/** + * Returns true if either a OR b is truthy, but not both + */ +function isOnlyOneTruthy(a, b) { + return !!(!!a ^ !!b); +} - if (oldOnPopState) { - return oldOnPopState.apply(this, arguments); - } - }; +/** + * Returns true if both parameters are undefined + */ +function isBothUndefined(a, b) { + return isUndefined(a) && isUndefined(b); +} - var historyReplacementFunction = function historyReplacementFunction(origHistFunction) { - // note history.pushState.length is 0; intentionally not declaring - // params to preserve 0 arity - return function () - /* state, title, url */ - { - var url = arguments.length > 2 ? arguments[2] : undefined; // url argument is optional +/** + * Returns true if the two input exception interfaces have the same content + */ +function isSameException(ex1, ex2) { + if (isOnlyOneTruthy(ex1, ex2)) return false; - if (url) { - // coerce to string (this is what pushState does) - self._captureUrlChange(self._lastHref, url + ''); - } + ex1 = ex1.values[0]; + ex2 = ex2.values[0]; - return origHistFunction.apply(this, arguments); - }; - }; + if (ex1.type !== ex2.type || ex1.value !== ex2.value) return false; - fill(history, 'pushState', historyReplacementFunction, wrappedBuiltIns); - fill(history, 'replaceState', historyReplacementFunction, wrappedBuiltIns); - } + // in case both stacktraces are undefined, we can't decide so default to false + if (isBothUndefined(ex1.stacktrace, ex2.stacktrace)) return false; - if (autoBreadcrumbs.console && 'console' in _window$1 && console.log) { - // console - var consoleMethodCallback = function consoleMethodCallback(msg, data) { - self.captureBreadcrumb({ - message: msg, - level: data.level, - category: 'console' - }); - }; + return isSameStacktrace(ex1.stacktrace, ex2.stacktrace); +} - each(['debug', 'info', 'warn', 'error', 'log'], function (_, level) { - wrapConsoleMethod(console, level, consoleMethodCallback); - }); - } - }, - _restoreBuiltIns: function _restoreBuiltIns() { - // restore any wrapped builtins - var builtin; +/** + * Returns true if the two input stack trace interfaces have the same content + */ +function isSameStacktrace(stack1, stack2) { + if (isOnlyOneTruthy(stack1, stack2)) return false; - while (this._wrappedBuiltIns.length) { - builtin = this._wrappedBuiltIns.shift(); - var obj = builtin[0], - name = builtin[1], - orig = builtin[2]; - obj[name] = orig; - } - }, - _restoreConsole: function _restoreConsole() { - // eslint-disable-next-line guard-for-in - for (var method in this._originalConsoleMethods) { - this._originalConsole[method] = this._originalConsoleMethods[method]; - } - }, - _drainPlugins: function _drainPlugins() { - var self = this; // FIX ME TODO + var frames1 = stack1.frames; + var frames2 = stack2.frames; - each(this._plugins, function (_, plugin) { - var installer = plugin[0]; - var args = plugin[1]; - installer.apply(self, [self].concat(args)); - }); - }, - _parseDSN: function _parseDSN(str) { - var m = dsnPattern.exec(str), - dsn = {}, - i = 7; + // Exit early if frame count differs + if (frames1.length !== frames2.length) return false; + + // Iterate through every frame; bail out if anything differs + var a, b; + for (var i = 0; i < frames1.length; i++) { + a = frames1[i]; + b = frames2[i]; + if ( + a.filename !== b.filename || + a.lineno !== b.lineno || + a.colno !== b.colno || + a['function'] !== b['function'] + ) + return false; + } + return true; +} + +/** + * Polyfill a method + * @param obj object e.g. `document` + * @param name method name present on object e.g. `addEventListener` + * @param replacement replacement function + * @param track {optional} record instrumentation to an array + */ +function fill(obj, name, replacement, track) { + if (obj == null) return; + var orig = obj[name]; + obj[name] = replacement(orig); + obj[name].__raven__ = true; + obj[name].__orig__ = orig; + if (track) { + track.push([obj, name, orig]); + } +} + +/** + * Join values in array + * @param input array of values to be joined together + * @param delimiter string to be placed in-between values + * @returns {string} + */ +function safeJoin(input, delimiter) { + if (!isArray(input)) return ''; + + var output = []; + for (var i = 0; i < input.length; i++) { try { - while (i--) { - dsn[dsnKeys[i]] = m[i] || ''; - } + output.push(String(input[i])); } catch (e) { - throw new configError('Invalid DSN: ' + str); + output.push('[value cannot be serialized]'); } + } - if (dsn.pass && !this._globalOptions.allowSecretKey) { - throw new configError('Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key'); - } + return output.join(delimiter); +} - return dsn; - }, - _getGlobalServer: function _getGlobalServer(uri) { - // assemble the endpoint from the uri pieces - var globalServer = '//' + uri.host + (uri.port ? ':' + uri.port : ''); +// Default Node.js REPL depth +var MAX_SERIALIZE_EXCEPTION_DEPTH = 3; +// 50kB, as 100kB is max payload size, so half sounds reasonable +var MAX_SERIALIZE_EXCEPTION_SIZE = 50 * 1024; +var MAX_SERIALIZE_KEYS_LENGTH = 40; - if (uri.protocol) { - globalServer = uri.protocol + ':' + globalServer; - } +function utf8Length(value) { + return ~-encodeURI(value).split(/%..|./).length; +} - return globalServer; - }, - _handleOnErrorStackInfo: function _handleOnErrorStackInfo() { - // if we are intentionally ignoring errors via onerror, bail out - if (!this._ignoreOnError) { - this._handleStackInfo.apply(this, arguments); - } - }, - _handleStackInfo: function _handleStackInfo(stackInfo, options) { - var frames = this._prepareFrames(stackInfo, options); +function jsonSize(value) { + return utf8Length(JSON.stringify(value)); +} - this._triggerEvent('handle', { - stackInfo: stackInfo, - options: options +function serializeValue(value) { + if (typeof value === 'string') { + var maxLength = 40; + return truncate(value, maxLength); + } else if ( + typeof value === 'number' || + typeof value === 'boolean' || + typeof value === 'undefined' + ) { + return value; + } + + var type = Object.prototype.toString.call(value); + + // Node.js REPL notation + if (type === '[object Object]') return '[Object]'; + if (type === '[object Array]') return '[Array]'; + if (type === '[object Function]') + return value.name ? '[Function: ' + value.name + ']' : '[Function]'; + + return value; +} + +function serializeObject(value, depth) { + if (depth === 0) return serializeValue(value); + + if (isPlainObject(value)) { + return Object.keys(value).reduce(function(acc, key) { + acc[key] = serializeObject(value[key], depth - 1); + return acc; + }, {}); + } else if (Array.isArray(value)) { + return value.map(function(val) { + return serializeObject(val, depth - 1); }); + } - this._processException(stackInfo.name, stackInfo.message, stackInfo.url, stackInfo.lineno, frames, options); - }, - _prepareFrames: function _prepareFrames(stackInfo, options) { - var self = this; - var frames = []; + return serializeValue(value); +} - if (stackInfo.stack && stackInfo.stack.length) { - each(stackInfo.stack, function (i, stack) { - var frame = self._normalizeFrame(stack, stackInfo.url); +function serializeException(ex, depth, maxSize) { + if (!isPlainObject(ex)) return ex; - if (frame) { - frames.push(frame); - } - }); // e.g. frames captured via captureMessage throw + depth = typeof depth !== 'number' ? MAX_SERIALIZE_EXCEPTION_DEPTH : depth; + maxSize = typeof depth !== 'number' ? MAX_SERIALIZE_EXCEPTION_SIZE : maxSize; - if (options && options.trimHeadFrames) { - for (var j = 0; j < options.trimHeadFrames && j < frames.length; j++) { - frames[j].in_app = false; - } - } - } + var serialized = serializeObject(ex, depth); - frames = frames.slice(0, this._globalOptions.stackTraceLimit); - return frames; - }, - _normalizeFrame: function _normalizeFrame(frame, stackInfoUrl) { - // normalize the frames data - var normalized = { - filename: frame.url, - lineno: frame.line, - colno: frame.column, - function: frame.func || '?' - }; // Case when we don't have any information about the error - // E.g. throwing a string or raw object, instead of an `Error` in Firefox - // Generating synthetic error doesn't add any value here - // - // We should probably somehow let a user know that they should fix their code + if (jsonSize(stringify(serialized)) > maxSize) { + return serializeException(ex, depth - 1); + } - if (!frame.url) { - normalized.filename = stackInfoUrl; // fallback to whole stacks url from onerror handler - } + return serialized; +} - normalized.in_app = !( // determine if an exception came from outside of our app - // first we check the global includePaths list. - !!this._globalOptions.includePaths.test && !this._globalOptions.includePaths.test(normalized.filename) || // Now we check for fun, if the function name is Raven or TraceKit - /(Raven|TraceKit)\./.test(normalized['function']) || // finally, we do a last ditch effort and check for raven.min.js - /raven\.(min\.)?js$/.test(normalized.filename)); - return normalized; - }, - _processException: function _processException(type, message, fileurl, lineno, frames, options) { - var prefixedMessage = (type ? type + ': ' : '') + (message || ''); +function serializeKeysForMessage(keys, maxLength) { + if (typeof keys === 'number' || typeof keys === 'string') return keys.toString(); + if (!Array.isArray(keys)) return ''; - if (!!this._globalOptions.ignoreErrors.test && (this._globalOptions.ignoreErrors.test(message) || this._globalOptions.ignoreErrors.test(prefixedMessage))) { - return; - } + keys = keys.filter(function(key) { + return typeof key === 'string'; + }); + if (keys.length === 0) return '[object has no keys]'; - var stacktrace; + maxLength = typeof maxLength !== 'number' ? MAX_SERIALIZE_KEYS_LENGTH : maxLength; + if (keys[0].length >= maxLength) return keys[0]; - if (frames && frames.length) { - fileurl = frames[0].filename || fileurl; // Sentry expects frames oldest to newest - // and JS sends them as newest to oldest + for (var usedKeys = keys.length; usedKeys > 0; usedKeys--) { + var serialized = keys.slice(0, usedKeys).join(', '); + if (serialized.length > maxLength) continue; + if (usedKeys === keys.length) return serialized; + return serialized + '\u2026'; + } - frames.reverse(); - stacktrace = { - frames: frames - }; - } else if (fileurl) { - stacktrace = { - frames: [{ - filename: fileurl, - lineno: lineno, - in_app: true - }] - }; - } - - if (!!this._globalOptions.ignoreUrls.test && this._globalOptions.ignoreUrls.test(fileurl)) { - return; - } + return ''; +} - if (!!this._globalOptions.whitelistUrls.test && !this._globalOptions.whitelistUrls.test(fileurl)) { - return; - } +function sanitize(input, sanitizeKeys) { + if (!isArray(sanitizeKeys) || (isArray(sanitizeKeys) && sanitizeKeys.length === 0)) + return input; - var data = objectMerge({ - // sentry.interfaces.Exception - exception: { - values: [{ - type: type, - value: message, - stacktrace: stacktrace - }] - }, - culprit: fileurl - }, options); // Fire away! + var sanitizeRegExp = joinRegExp(sanitizeKeys); + var sanitizeMask = '********'; + var safeInput; - this._send(data); - }, - _trimPacket: function _trimPacket(data) { - // For now, we only want to truncate the two different messages - // but this could/should be expanded to just trim everything - var max = this._globalOptions.maxMessageLength; + try { + safeInput = JSON.parse(stringify(input)); + } catch (o_O) { + return input; + } - if (data.message) { - data.message = truncate(data.message, max); + function sanitizeWorker(workerInput) { + if (isArray(workerInput)) { + return workerInput.map(function(val) { + return sanitizeWorker(val); + }); } - if (data.exception) { - var exception = data.exception.values[0]; - exception.value = truncate(exception.value, max); + if (isPlainObject(workerInput)) { + return Object.keys(workerInput).reduce(function(acc, k) { + if (sanitizeRegExp.test(k)) { + acc[k] = sanitizeMask; + } else { + acc[k] = sanitizeWorker(workerInput[k]); + } + return acc; + }, {}); } - var request = data.request; + return workerInput; + } - if (request) { - if (request.url) { - request.url = truncate(request.url, this._globalOptions.maxUrlLength); - } + return sanitizeWorker(safeInput); +} - if (request.Referer) { - request.Referer = truncate(request.Referer, this._globalOptions.maxUrlLength); - } - } +module.exports = { + isObject: isObject, + isError: isError, + isErrorEvent: isErrorEvent, + isUndefined: isUndefined, + isFunction: isFunction, + isPlainObject: isPlainObject, + isString: isString, + isArray: isArray, + isEmptyObject: isEmptyObject, + supportsErrorEvent: supportsErrorEvent, + supportsFetch: supportsFetch, + supportsReferrerPolicy: supportsReferrerPolicy, + supportsPromiseRejectionEvent: supportsPromiseRejectionEvent, + wrappedCallback: wrappedCallback, + each: each, + objectMerge: objectMerge, + truncate: truncate, + objectFrozen: objectFrozen, + hasKey: hasKey, + joinRegExp: joinRegExp, + urlencode: urlencode, + uuid4: uuid4, + htmlTreeAsString: htmlTreeAsString, + htmlElementAsString: htmlElementAsString, + isSameException: isSameException, + isSameStacktrace: isSameStacktrace, + parseUrl: parseUrl, + fill: fill, + safeJoin: safeJoin, + serializeException: serializeException, + serializeKeysForMessage: serializeKeysForMessage, + sanitize: sanitize +}; - if (data.breadcrumbs && data.breadcrumbs.values) this._trimBreadcrumbs(data.breadcrumbs); - return data; - }, +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"10":10}],9:[function(_dereq_,module,exports){ +(function (global){ +var utils = _dereq_(8); - /** - * Truncate breadcrumb values (right now just URLs) - */ - _trimBreadcrumbs: function _trimBreadcrumbs(breadcrumbs) { - // known breadcrumb properties with urls - // TODO: also consider arbitrary prop values that start with (https?)?:// - var urlProps = ['to', 'from', 'url'], - urlProp, - crumb, - data; +/* + TraceKit - Cross brower stack traces - for (var i = 0; i < breadcrumbs.values.length; ++i) { - crumb = breadcrumbs.values[i]; - if (!crumb.hasOwnProperty('data') || !isObject(crumb.data) || objectFrozen(crumb.data)) continue; - data = objectMerge({}, crumb.data); + This was originally forked from github.com/occ/TraceKit, but has since been + largely re-written and is now maintained as part of raven-js. Tests for + this are in test/vendor. - for (var j = 0; j < urlProps.length; ++j) { - urlProp = urlProps[j]; + MIT license +*/ - if (data.hasOwnProperty(urlProp) && data[urlProp]) { - data[urlProp] = truncate(data[urlProp], this._globalOptions.maxUrlLength); - } - } +var TraceKit = { + collectWindowErrors: true, + debug: false +}; - breadcrumbs.values[i].data = data; - } - }, - _getHttpData: function _getHttpData() { - if (!this._hasNavigator && !this._hasDocument) return; - var httpData = {}; +// This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) +var _window = + typeof window !== 'undefined' + ? window + : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; - if (this._hasNavigator && _navigator.userAgent) { - httpData.headers = { - 'User-Agent': navigator.userAgent - }; - } // Check in `window` instead of `document`, as we may be in ServiceWorker environment +// global reference to slice +var _slice = [].slice; +var UNKNOWN_FUNCTION = '?'; +// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error#Error_types +var ERROR_TYPES_RE = /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/; - if (_window$1.location && _window$1.location.href) { - httpData.url = _window$1.location.href; - } +function getLocationHref() { + if (typeof document === 'undefined' || document.location == null) return ''; - if (this._hasDocument && _document.referrer) { - if (!httpData.headers) httpData.headers = {}; - httpData.headers.Referer = _document.referrer; - } + return document.location.href; +} - return httpData; - }, - _resetBackoff: function _resetBackoff() { - this._backoffDuration = 0; - this._backoffStart = null; - }, - _shouldBackoff: function _shouldBackoff() { - return this._backoffDuration && now() - this._backoffStart < this._backoffDuration; - }, +/** + * TraceKit.report: cross-browser processing of unhandled exceptions + * + * Syntax: + * TraceKit.report.subscribe(function(stackInfo) { ... }) + * TraceKit.report.unsubscribe(function(stackInfo) { ... }) + * TraceKit.report(exception) + * try { ...code... } catch(ex) { TraceKit.report(ex); } + * + * Supports: + * - Firefox: full stack trace with line numbers, plus column number + * on top frame; column number is not guaranteed + * - Opera: full stack trace with line and column numbers + * - Chrome: full stack trace with line and column numbers + * - Safari: line and column number for the top frame only; some frames + * may be missing, and column number is not guaranteed + * - IE: line and column number for the top frame only; some frames + * may be missing, and column number is not guaranteed + * + * In theory, TraceKit should work on all of the following versions: + * - IE5.5+ (only 8.0 tested) + * - Firefox 0.9+ (only 3.5+ tested) + * - Opera 7+ (only 10.50 tested; versions 9 and earlier may require + * Exceptions Have Stacktrace to be enabled in opera:config) + * - Safari 3+ (only 4+ tested) + * - Chrome 1+ (only 5+ tested) + * - Konqueror 3.5+ (untested) + * + * Requires TraceKit.computeStackTrace. + * + * Tries to catch all unhandled exceptions and report them to the + * subscribed handlers. Please note that TraceKit.report will rethrow the + * exception. This is REQUIRED in order to get a useful stack trace in IE. + * If the exception does not reach the top of the browser, you will only + * get a stack trace from the point where TraceKit.report was called. + * + * Handlers receive a stackInfo object as described in the + * TraceKit.computeStackTrace docs. + */ +TraceKit.report = (function reportModuleWrapper() { + var handlers = [], + lastArgs = null, + lastException = null, + lastExceptionStack = null; /** - * Returns true if the in-process data payload matches the signature - * of the previously-sent data - * - * NOTE: This has to be done at this level because TraceKit can generate - * data from window.onerror WITHOUT an exception object (IE8, IE9, - * other old browsers). This can take the form of an "exception" - * data object with a single frame (derived from the onerror args). + * Add a crash handler. + * @param {Function} handler */ - _isRepeatData: function _isRepeatData(current) { - var last = this._lastData; - if (!last || current.message !== last.message || // defined for captureMessage - current.culprit !== last.culprit // defined for captureException/onerror - ) return false; // Stacktrace interface (i.e. from captureMessage) + function subscribe(handler) { + installGlobalHandler(); + handlers.push(handler); + } - if (current.stacktrace || last.stacktrace) { - return isSameStacktrace(current.stacktrace, last.stacktrace); - } else if (current.exception || last.exception) { - // Exception interface (i.e. from captureException/onerror) - return isSameException(current.exception, last.exception); + /** + * Remove a crash handler. + * @param {Function} handler + */ + function unsubscribe(handler) { + for (var i = handlers.length - 1; i >= 0; --i) { + if (handlers[i] === handler) { + handlers.splice(i, 1); + } } + } - return true; - }, - _setBackoffState: function _setBackoffState(request) { - // If we are already in a backoff state, don't change anything - if (this._shouldBackoff()) { + /** + * Remove all crash handlers. + */ + function unsubscribeAll() { + uninstallGlobalHandler(); + handlers = []; + } + + /** + * Dispatch stack information to all handlers. + * @param {Object.} stack + */ + function notifyHandlers(stack, isWindowError) { + var exception = null; + if (isWindowError && !TraceKit.collectWindowErrors) { return; } + for (var i in handlers) { + if (handlers.hasOwnProperty(i)) { + try { + handlers[i].apply(null, [stack].concat(_slice.call(arguments, 2))); + } catch (inner) { + exception = inner; + } + } + } - var status = request.status; // 400 - project_id doesn't exist or some other fatal - // 401 - invalid/revoked dsn - // 429 - too many requests - - if (!(status === 400 || status === 401 || status === 429)) return; - var retry; - - try { - // If Retry-After is not in Access-Control-Expose-Headers, most - // browsers will throw an exception trying to access it - if (supportsFetch()) { - retry = request.headers.get('Retry-After'); - } else { - retry = request.getResponseHeader('Retry-After'); - } // Retry-After is returned in seconds - - - retry = parseInt(retry, 10) * 1000; - } catch (e) { - /* eslint no-empty:0 */ + if (exception) { + throw exception; } + } - this._backoffDuration = retry ? // If Sentry server returned a Retry-After value, use it - retry : // Otherwise, double the last backoff duration (starts at 1 sec) - this._backoffDuration * 2 || 1000; - this._backoffStart = now(); - }, - _send: function _send(data) { - var globalOptions = this._globalOptions; + var _oldOnerrorHandler, _onErrorHandlerInstalled; - var baseData = { - project: this._globalProject, - logger: globalOptions.logger, - platform: 'javascript' - }, - httpData = this._getHttpData(); + /** + * Ensures all global unhandled exceptions are recorded. + * Supported by Gecko and IE. + * @param {string} msg Error message. + * @param {string} url URL of script that generated the exception. + * @param {(number|string)} lineNo The line number at which the error + * occurred. + * @param {?(number|string)} colNo The column number at which the error + * occurred. + * @param {?Error} ex The actual Error object. + */ + function traceKitWindowOnError(msg, url, lineNo, colNo, ex) { + var stack = null; + // If 'ex' is ErrorEvent, get real Error from inside + var exception = utils.isErrorEvent(ex) ? ex.error : ex; + // If 'msg' is ErrorEvent, get real message from inside + var message = utils.isErrorEvent(msg) ? msg.message : msg; - if (httpData) { - baseData.request = httpData; - } // HACK: delete `trimHeadFrames` to prevent from appearing in outbound payload + if (lastExceptionStack) { + TraceKit.computeStackTrace.augmentStackTraceWithInitialElement( + lastExceptionStack, + url, + lineNo, + message + ); + processLastException(); + } else if (exception && utils.isError(exception)) { + // non-string `exception` arg; attempt to extract stack trace + // New chrome and blink send along a real error object + // Let's just report that like a normal error. + // See: https://mikewest.org/2013/08/debugging-runtime-errors-with-window-onerror + stack = TraceKit.computeStackTrace(exception); + notifyHandlers(stack, true); + } else { + var location = { + url: url, + line: lineNo, + column: colNo + }; - if (data.trimHeadFrames) delete data.trimHeadFrames; - data = objectMerge(baseData, data); // Merge in the tags and extra separately since objectMerge doesn't handle a deep merge + var name = undefined; + var groups; - data.tags = objectMerge(objectMerge({}, this._globalContext.tags), data.tags); - data.extra = objectMerge(objectMerge({}, this._globalContext.extra), data.extra); // Send along our own collected metadata with extra + if ({}.toString.call(message) === '[object String]') { + var groups = message.match(ERROR_TYPES_RE); + if (groups) { + name = groups[1]; + message = groups[2]; + } + } - data.extra['session:duration'] = now() - this._startTime; + location.func = UNKNOWN_FUNCTION; - if (this._breadcrumbs && this._breadcrumbs.length > 0) { - // intentionally make shallow copy so that additions - // to breadcrumbs aren't accidentally sent in this request - data.breadcrumbs = { - values: [].slice.call(this._breadcrumbs, 0) + stack = { + name: name, + message: message, + url: getLocationHref(), + stack: [location] }; + notifyHandlers(stack, true); } - if (this._globalContext.user) { - // sentry.interfaces.User - data.user = this._globalContext.user; - } // Include the environment if it's defined in globalOptions - - - if (globalOptions.environment) data.environment = globalOptions.environment; // Include the release if it's defined in globalOptions - - if (globalOptions.release) data.release = globalOptions.release; // Include server_name if it's defined in globalOptions - - if (globalOptions.serverName) data.server_name = globalOptions.serverName; // Cleanup empty properties before sending them to the server - - Object.keys(data).forEach(function (key) { - if (data[key] == null || data[key] === '' || isEmptyObject(data[key])) { - delete data[key]; - } - }); - - if (isFunction(globalOptions.dataCallback)) { - data = globalOptions.dataCallback(data) || data; - } // Why?????????? - - - if (!data || isEmptyObject(data)) { - return; - } // Check if the request should be filtered or not - - - if (isFunction(globalOptions.shouldSendCallback) && !globalOptions.shouldSendCallback(data)) { - return; - } // Backoff state: Sentry server previously responded w/ an error (e.g. 429 - too many requests), - // so drop requests until "cool-off" period has elapsed. - + if (_oldOnerrorHandler) { + return _oldOnerrorHandler.apply(this, arguments); + } - if (this._shouldBackoff()) { - this._logDebug('warn', 'Raven dropped error due to backoff: ', data); + return false; + } + function installGlobalHandler() { + if (_onErrorHandlerInstalled) { return; } + _oldOnerrorHandler = _window.onerror; + _window.onerror = traceKitWindowOnError; + _onErrorHandlerInstalled = true; + } - if (typeof globalOptions.sampleRate === 'number') { - if (Math.random() < globalOptions.sampleRate) { - this._sendProcessedPayload(data); - } - } else { - this._sendProcessedPayload(data); - } - }, - _getUuid: function _getUuid() { - return uuid4(); - }, - _sendProcessedPayload: function _sendProcessedPayload(data, callback) { - var self = this; - var globalOptions = this._globalOptions; - if (!this.isSetup()) return; // Try and clean up the packet before sending by truncating long values - - data = this._trimPacket(data); // ideally duplicate error testing should occur *before* dataCallback/shouldSendCallback, - // but this would require copying an un-truncated copy of the data packet, which can be - // arbitrarily deep (extra_data) -- could be worthwhile? will revisit - - if (!this._globalOptions.allowDuplicates && this._isRepeatData(data)) { - this._logDebug('warn', 'Raven dropped repeat event: ', data); - + function uninstallGlobalHandler() { + if (!_onErrorHandlerInstalled) { return; - } // Send along an event_id if not explicitly passed. - // This event_id can be used to reference the error within Sentry itself. - // Set lastEventId after we know the error should actually be sent - - - this._lastEventId = data.event_id || (data.event_id = this._getUuid()); // Store outbound payload after trim - - this._lastData = data; - - this._logDebug('debug', 'Raven about to send:', data); + } + _window.onerror = _oldOnerrorHandler; + _onErrorHandlerInstalled = false; + _oldOnerrorHandler = undefined; + } - var auth = { - sentry_version: '7', - sentry_client: 'raven-js/' + this.VERSION, - sentry_key: this._globalKey - }; + function processLastException() { + var _lastExceptionStack = lastExceptionStack, + _lastArgs = lastArgs; + lastArgs = null; + lastExceptionStack = null; + lastException = null; + notifyHandlers.apply(null, [_lastExceptionStack, false].concat(_lastArgs)); + } - if (this._globalSecret) { - auth.sentry_secret = this._globalSecret; + /** + * Reports an unhandled Error to TraceKit. + * @param {Error} ex + * @param {?boolean} rethrow If false, do not re-throw the exception. + * Only used for window.onerror to not cause an infinite loop of + * rethrowing. + */ + function report(ex, rethrow) { + var args = _slice.call(arguments, 1); + if (lastExceptionStack) { + if (lastException === ex) { + return; // already caught by an inner catch block, ignore + } else { + processLastException(); + } } - var exception = data.exception && data.exception.values[0]; // only capture 'sentry' breadcrumb is autoBreadcrumbs is truthy + var stack = TraceKit.computeStackTrace(ex); + lastExceptionStack = stack; + lastException = ex; + lastArgs = args; - if (this._globalOptions.autoBreadcrumbs && this._globalOptions.autoBreadcrumbs.sentry) { - this.captureBreadcrumb({ - category: 'sentry', - message: exception ? (exception.type ? exception.type + ': ' : '') + exception.value : data.message, - event_id: data.event_id, - level: data.level || 'error' // presume error unless specified + // If the stack trace is incomplete, wait for 2 seconds for + // slow slow IE to see if onerror occurs or not before reporting + // this exception; otherwise, we will end up with an incomplete + // stack trace + setTimeout(function() { + if (lastException === ex) { + processLastException(); + } + }, stack.incomplete ? 2000 : 0); - }); + if (rethrow !== false) { + throw ex; // re-throw to propagate to the top level (and cause window.onerror) } + } - var url = this._globalEndpoint; + report.subscribe = subscribe; + report.unsubscribe = unsubscribe; + report.uninstall = unsubscribeAll; + return report; +})(); - (globalOptions.transport || this._makeRequest).call(this, { - url: url, - auth: auth, - data: data, - options: globalOptions, - onSuccess: function success() { - self._resetBackoff(); +/** + * TraceKit.computeStackTrace: cross-browser stack traces in JavaScript + * + * Syntax: + * s = TraceKit.computeStackTrace(exception) // consider using TraceKit.report instead (see below) + * Returns: + * s.name - exception name + * s.message - exception message + * s.stack[i].url - JavaScript or HTML file URL + * s.stack[i].func - function name, or empty for anonymous functions (if guessing did not work) + * s.stack[i].args - arguments passed to the function, if known + * s.stack[i].line - line number, if known + * s.stack[i].column - column number, if known + * + * Supports: + * - Firefox: full stack trace with line numbers and unreliable column + * number on top frame + * - Opera 10: full stack trace with line and column numbers + * - Opera 9-: full stack trace with line numbers + * - Chrome: full stack trace with line and column numbers + * - Safari: line and column number for the topmost stacktrace element + * only + * - IE: no line numbers whatsoever + * + * Tries to guess names of anonymous functions by looking for assignments + * in the source code. In IE and Safari, we have to guess source file names + * by searching for function bodies inside all page scripts. This will not + * work for scripts that are loaded cross-domain. + * Here be dragons: some function names may be guessed incorrectly, and + * duplicate functions may be mismatched. + * + * TraceKit.computeStackTrace should only be used for tracing purposes. + * Logging of unhandled exceptions should be done with TraceKit.report, + * which builds on top of TraceKit.computeStackTrace and provides better + * IE support by utilizing the window.onerror event to retrieve information + * about the top of the stack. + * + * Note: In IE and Safari, no stack trace is recorded on the Error object, + * so computeStackTrace instead walks its *own* chain of callers. + * This means that: + * * in Safari, some methods may be missing from the stack trace; + * * in IE, the topmost function in the stack trace will always be the + * caller of computeStackTrace. + * + * This is okay for tracing (because you are likely to be calling + * computeStackTrace from the function you want to be the topmost element + * of the stack trace anyway), but not okay for logging unhandled + * exceptions (because your catch block will likely be far away from the + * inner function that actually caused the exception). + * + */ +TraceKit.computeStackTrace = (function computeStackTraceWrapper() { + // Contents of Exception in various browsers. + // + // SAFARI: + // ex.message = Can't find variable: qq + // ex.line = 59 + // ex.sourceId = 580238192 + // ex.sourceURL = http://... + // ex.expressionBeginOffset = 96 + // ex.expressionCaretOffset = 98 + // ex.expressionEndOffset = 98 + // ex.name = ReferenceError + // + // FIREFOX: + // ex.message = qq is not defined + // ex.fileName = http://... + // ex.lineNumber = 59 + // ex.columnNumber = 69 + // ex.stack = ...stack trace... (see the example below) + // ex.name = ReferenceError + // + // CHROME: + // ex.message = qq is not defined + // ex.name = ReferenceError + // ex.type = not_defined + // ex.arguments = ['aa'] + // ex.stack = ...stack trace... + // + // INTERNET EXPLORER: + // ex.message = ... + // ex.name = ReferenceError + // + // OPERA: + // ex.message = ...message... (see the example below) + // ex.name = ReferenceError + // ex.opera#sourceloc = 11 (pretty much useless, duplicates the info in ex.message) + // ex.stacktrace = n/a; see 'opera:config#UserPrefs|Exceptions Have Stacktrace' - self._triggerEvent('success', { - data: data, - src: url - }); + /** + * Computes stack trace information from the stack property. + * Chrome and Gecko use this property. + * @param {Error} ex + * @return {?Object.} Stack trace information. + */ + function computeStackTraceFromStackProp(ex) { + if (typeof ex.stack === 'undefined' || !ex.stack) return; - callback && callback(); - }, - onError: function failure(error) { - self._logDebug('error', 'Raven transport failed to send: ', error); + var chrome = /^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i; + var winjs = /^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i; + // NOTE: blob urls are now supposed to always have an origin, therefore it's format + // which is `blob:http://url/path/with-some-uuid`, is matched by `blob.*?:\/` as well + var gecko = /^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i; + // Used to additionally parse URL/line/column from eval frames + var geckoEval = /(\S+) line (\d+)(?: > eval line \d+)* > eval/i; + var chromeEval = /\((\S*)(?::(\d+))(?::(\d+))\)/; + var lines = ex.stack.split('\n'); + var stack = []; + var submatch; + var parts; + var element; + var reference = /^(.*) is undefined$/.exec(ex.message); - if (error.request) { - self._setBackoffState(error.request); + for (var i = 0, j = lines.length; i < j; ++i) { + if ((parts = chrome.exec(lines[i]))) { + var isNative = parts[2] && parts[2].indexOf('native') === 0; // start of line + var isEval = parts[2] && parts[2].indexOf('eval') === 0; // start of line + if (isEval && (submatch = chromeEval.exec(parts[2]))) { + // throw out eval line/column and use top-most line/column number + parts[2] = submatch[1]; // url + parts[3] = submatch[2]; // line + parts[4] = submatch[3]; // column } + element = { + url: !isNative ? parts[2] : null, + func: parts[1] || UNKNOWN_FUNCTION, + args: isNative ? [parts[2]] : [], + line: parts[3] ? +parts[3] : null, + column: parts[4] ? +parts[4] : null + }; + } else if ((parts = winjs.exec(lines[i]))) { + element = { + url: parts[2], + func: parts[1] || UNKNOWN_FUNCTION, + args: [], + line: +parts[3], + column: parts[4] ? +parts[4] : null + }; + } else if ((parts = gecko.exec(lines[i]))) { + var isEval = parts[3] && parts[3].indexOf(' > eval') > -1; + if (isEval && (submatch = geckoEval.exec(parts[3]))) { + // throw out eval line/column and use top-most line number + parts[3] = submatch[1]; + parts[4] = submatch[2]; + parts[5] = null; // no column when eval + } else if (i === 0 && !parts[5] && typeof ex.columnNumber !== 'undefined') { + // FireFox uses this awesome columnNumber property for its top frame + // Also note, Firefox's column number is 0-based and everything else expects 1-based, + // so adding 1 + // NOTE: this hack doesn't work if top-most frame is eval + stack[0].column = ex.columnNumber + 1; + } + element = { + url: parts[3], + func: parts[1] || UNKNOWN_FUNCTION, + args: parts[2] ? parts[2].split(',') : [], + line: parts[4] ? +parts[4] : null, + column: parts[5] ? +parts[5] : null + }; + } else { + continue; + } - self._triggerEvent('failure', { - data: data, - src: url - }); - - error = error || new Error('Raven send failed (no additional details provided)'); - callback && callback(error); + if (!element.func && element.line) { + element.func = UNKNOWN_FUNCTION; } - }); - }, - _makeRequest: function _makeRequest(opts) { - // Auth is intentionally sent as part of query string (NOT as custom HTTP header) to avoid preflight CORS requests - var url = opts.url + '?' + urlencode(opts.auth); - var evaluatedHeaders = null; - var evaluatedFetchParameters = {}; - if (opts.options.headers) { - evaluatedHeaders = this._evaluateHash(opts.options.headers); + stack.push(element); } - if (opts.options.fetchParameters) { - evaluatedFetchParameters = this._evaluateHash(opts.options.fetchParameters); + if (!stack.length) { + return null; } - if (supportsFetch()) { - evaluatedFetchParameters.body = stringify_1(opts.data); - var defaultFetchOptions = objectMerge({}, this._fetchDefaults); - var fetchOptions = objectMerge(defaultFetchOptions, evaluatedFetchParameters); + return { + name: ex.name, + message: ex.message, + url: getLocationHref(), + stack: stack + }; + } - if (evaluatedHeaders) { - fetchOptions.headers = evaluatedHeaders; - } + /** + * Adds information about the first frame to incomplete stack traces. + * Safari and IE require this to get complete data on the first frame. + * @param {Object.} stackInfo Stack trace information from + * one of the compute* methods. + * @param {string} url The URL of the script that caused an error. + * @param {(number|string)} lineNo The line number of the script that + * caused an error. + * @param {string=} message The error generated by the browser, which + * hopefully contains the name of the object that caused the error. + * @return {boolean} Whether or not the stack information was + * augmented. + */ + function augmentStackTraceWithInitialElement(stackInfo, url, lineNo, message) { + var initial = { + url: url, + line: lineNo + }; - return _window$1.fetch(url, fetchOptions).then(function (response) { - if (response.ok) { - opts.onSuccess && opts.onSuccess(); - } else { - var error = new Error('Sentry error code: ' + response.status); // It's called request only to keep compatibility with XHR interface - // and not add more redundant checks in setBackoffState method + if (initial.url && initial.line) { + stackInfo.incomplete = false; - error.request = response; - opts.onError && opts.onError(error); + if (!initial.func) { + initial.func = UNKNOWN_FUNCTION; + } + + if (stackInfo.stack.length > 0) { + if (stackInfo.stack[0].url === initial.url) { + if (stackInfo.stack[0].line === initial.line) { + return false; // already in stack trace + } else if ( + !stackInfo.stack[0].line && + stackInfo.stack[0].func === initial.func + ) { + stackInfo.stack[0].line = initial.line; + return false; + } } - })['catch'](function () { - opts.onError && opts.onError(new Error('Sentry error code: network unavailable')); - }); + } + + stackInfo.stack.unshift(initial); + stackInfo.partial = true; + return true; + } else { + stackInfo.incomplete = true; } - var request = _window$1.XMLHttpRequest && new _window$1.XMLHttpRequest(); - if (!request) return; // if browser doesn't support CORS (e.g. IE7), we are out of luck + return false; + } - var hasCORS = 'withCredentials' in request || typeof XDomainRequest !== 'undefined'; - if (!hasCORS) return; + /** + * Computes stack trace information by walking the arguments.caller + * chain at the time the exception occurred. This will cause earlier + * frames to be missed but is the only way to get any stack trace in + * Safari and IE. The top frame is restored by + * {@link augmentStackTraceWithInitialElement}. + * @param {Error} ex + * @return {?Object.} Stack trace information. + */ + function computeStackTraceByWalkingCallerChain(ex, depth) { + var functionName = /function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i, + stack = [], + funcs = {}, + recursion = false, + parts, + item, + source; + + for ( + var curr = computeStackTraceByWalkingCallerChain.caller; + curr && !recursion; + curr = curr.caller + ) { + if (curr === computeStackTrace || curr === TraceKit.report) { + // console.log('skipping internal function'); + continue; + } - if ('withCredentials' in request) { - request.onreadystatechange = function () { - if (request.readyState !== 4) { - return; - } else if (request.status === 200) { - opts.onSuccess && opts.onSuccess(); - } else if (opts.onError) { - var err = new Error('Sentry error code: ' + request.status); - err.request = request; - opts.onError(err); - } + item = { + url: null, + func: UNKNOWN_FUNCTION, + line: null, + column: null }; - } else { - request = new XDomainRequest(); // xdomainrequest cannot go http -> https (or vice versa), - // so always use protocol relative - url = url.replace(/^https?:/, ''); // onreadystatechange not supported by XDomainRequest + if (curr.name) { + item.func = curr.name; + } else if ((parts = functionName.exec(curr.toString()))) { + item.func = parts[1]; + } - if (opts.onSuccess) { - request.onload = opts.onSuccess; + if (typeof item.func === 'undefined') { + try { + item.func = parts.input.substring(0, parts.input.indexOf('{')); + } catch (e) {} } - if (opts.onError) { - request.onerror = function () { - var err = new Error('Sentry error code: XDomainRequest'); - err.request = request; - opts.onError(err); - }; + if (funcs['' + curr]) { + recursion = true; + } else { + funcs['' + curr] = true; } - } - request.open('POST', url); + stack.push(item); + } - if (evaluatedHeaders) { - each(evaluatedHeaders, function (key, value) { - request.setRequestHeader(key, value); - }); + if (depth) { + // console.log('depth is ' + depth); + // console.log('stack is ' + stack.length); + stack.splice(0, depth); } - request.send(stringify_1(opts.data)); - }, - _evaluateHash: function _evaluateHash(hash) { - var evaluated = {}; + var result = { + name: ex.name, + message: ex.message, + url: getLocationHref(), + stack: stack + }; + augmentStackTraceWithInitialElement( + result, + ex.sourceURL || ex.fileName, + ex.line || ex.lineNumber, + ex.message || ex.description + ); + return result; + } - for (var key in hash) { - if (hash.hasOwnProperty(key)) { - var value = hash[key]; - evaluated[key] = typeof value === 'function' ? value() : value; + /** + * Computes a stack trace for an exception. + * @param {Error} ex + * @param {(string|number)=} depth + */ + function computeStackTrace(ex, depth) { + var stack = null; + depth = depth == null ? 0 : +depth; + + try { + stack = computeStackTraceFromStackProp(ex); + if (stack) { + return stack; + } + } catch (e) { + if (TraceKit.debug) { + throw e; } } - return evaluated; - }, - _logDebug: function _logDebug(level) { - if (this._originalConsoleMethods[level] && this.debug) { - // In IE<10 console methods do not have their own 'apply' method - Function.prototype.apply.call(this._originalConsoleMethods[level], this._originalConsole, [].slice.call(arguments, 1)); - } - }, - _mergeContext: function _mergeContext(key, context) { - if (isUndefined(context)) { - delete this._globalContext[key]; - } else { - this._globalContext[key] = objectMerge(this._globalContext[key] || {}, context); + try { + stack = computeStackTraceByWalkingCallerChain(ex, depth + 1); + if (stack) { + return stack; + } + } catch (e) { + if (TraceKit.debug) { + throw e; + } } + return { + name: ex.name, + message: ex.message, + url: getLocationHref() + }; } -}; // Deprecations -Raven$1.prototype.setUser = Raven$1.prototype.setUserContext; -Raven$1.prototype.setReleaseContext = Raven$1.prototype.setRelease; -var raven = Raven$1; + computeStackTrace.augmentStackTraceWithInitialElement = augmentStackTraceWithInitialElement; + computeStackTrace.computeStackTraceFromStackProp = computeStackTraceFromStackProp; -/** - * Enforces a single instance of the Raven client, and the - * main entry point for Raven. If you are a consumer of the - * Raven library, you SHOULD load this file (vs raven.js). - **/ -// This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) + return computeStackTrace; +})(); -var _window = typeof window !== 'undefined' ? window : typeof commonjsGlobal !== 'undefined' ? commonjsGlobal : typeof self !== 'undefined' ? self : {}; +module.exports = TraceKit; -var _Raven = _window.Raven; -var Raven = new raven(); +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"8":8}],10:[function(_dereq_,module,exports){ /* - * Allow multiple versions of Raven to be installed. - * Strip Raven from the global context and returns the instance. - * - * @return {Raven} - */ - -Raven.noConflict = function () { - _window.Raven = _Raven; - return Raven; -}; - -Raven.afterLoad(); -var singleton = Raven; - -/** - * Angular.js plugin - * - * Provides an $exceptionHandler for Angular.js - */ + json-stringify-safe + Like JSON.stringify, but doesn't throw on circular references. -var wrappedCallback$1 = utils.wrappedCallback; // See https://github.com/angular/angular.js/blob/v1.4.7/src/minErr.js + Originally forked from https://github.com/isaacs/json-stringify-safe + version 5.0.1 on 3/8/2017 and modified to handle Errors serialization + and IE8 compatibility. Tests for this are in test/vendor. -var angularPattern = /^\[((?:[$a-zA-Z0-9]+:)?(?:[$a-zA-Z0-9]+))\] (.*?)\n?(\S+)$/; -var moduleName = 'ngRaven'; + ISC license: https://github.com/isaacs/json-stringify-safe/blob/master/LICENSE +*/ -function angularPlugin(Raven, angular) { - angular = angular || window.angular; - if (!angular) return; +exports = module.exports = stringify; +exports.getSerialize = serializer; - function RavenProvider() { - this.$get = ['$window', function ($window) { - return Raven; - }]; +function indexOf(haystack, needle) { + for (var i = 0; i < haystack.length; ++i) { + if (haystack[i] === needle) return i; } + return -1; +} - function ExceptionHandlerProvider($provide) { - $provide.decorator('$exceptionHandler', ['Raven', '$delegate', exceptionHandler]); - } +function stringify(obj, replacer, spaces, cycleReplacer) { + return JSON.stringify(obj, serializer(replacer, cycleReplacer), spaces); +} - function exceptionHandler(R, $delegate) { - return function (ex, cause) { - R.captureException(ex, { - extra: { - cause: cause - } - }); - $delegate(ex, cause); - }; +// https://github.com/ftlabs/js-abbreviate/blob/fa709e5f139e7770a71827b1893f22418097fbda/index.js#L95-L106 +function stringifyError(value) { + var err = { + // These properties are implemented as magical getters and don't show up in for in + stack: value.stack, + message: value.message, + name: value.name + }; + + for (var i in value) { + if (Object.prototype.hasOwnProperty.call(value, i)) { + err[i] = value[i]; + } } - angular.module(moduleName, []).provider('Raven', RavenProvider).config(['$provide', ExceptionHandlerProvider]); - Raven.setDataCallback(wrappedCallback$1(function (data) { - return angularPlugin._normalizeData(data); - })); + return err; } -angularPlugin._normalizeData = function (data) { - // We only care about mutating an exception - var exception = data.exception; +function serializer(replacer, cycleReplacer) { + var stack = []; + var keys = []; - if (exception) { - exception = exception.values[0]; - var matches = angularPattern.exec(exception.value); + if (cycleReplacer == null) { + cycleReplacer = function(key, value) { + if (stack[0] === value) { + return '[Circular ~]'; + } + return '[Circular ~.' + keys.slice(0, indexOf(stack, value)).join('.') + ']'; + }; + } - if (matches) { - // This type now becomes something like: $rootScope:inprog - exception.type = matches[1]; - exception.value = matches[2]; - data.message = exception.type + ': ' + exception.value; // auto set a new tag specifically for the angular error url + return function(key, value) { + if (stack.length > 0) { + var thisPos = indexOf(stack, this); + ~thisPos ? stack.splice(thisPos + 1) : stack.push(this); + ~thisPos ? keys.splice(thisPos, Infinity, key) : keys.push(key); - data.extra.angularDocs = matches[3].substr(0, 250); + if (~indexOf(stack, value)) { + value = cycleReplacer.call(this, key, value); + } + } else { + stack.push(value); } - } - - return data; -}; -angularPlugin.moduleName = moduleName; -var angular = angularPlugin; + return replacer == null + ? value instanceof Error ? stringifyError(value) : value + : replacer.call(this, key, value); + }; +} -/** - * Ember.js plugin +},{}],11:[function(_dereq_,module,exports){ +/* + * JavaScript MD5 + * https://github.com/blueimp/JavaScript-MD5 * - * Patches event handler callbacks and ajax callbacks. + * Copyright 2011, Sebastian Tschan + * https://blueimp.net + * + * Licensed under the MIT license: + * https://opensource.org/licenses/MIT + * + * Based on + * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message + * Digest Algorithm, as defined in RFC 1321. + * Version 2.2 Copyright (C) Paul Johnston 1999 - 2009 + * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet + * Distributed under the BSD License + * See http://pajhome.org.uk/crypt/md5 for more info. */ -function emberPlugin(Raven, Ember) { - Ember = Ember || window.Ember; // quit if Ember isn't on the page - if (!Ember) return; - var _oldOnError = Ember.onerror; +/* +* Add integers, wrapping at 2^32. This uses 16-bit operations internally +* to work around bugs in some JS interpreters. +*/ +function safeAdd(x, y) { + var lsw = (x & 0xffff) + (y & 0xffff); + var msw = (x >> 16) + (y >> 16) + (lsw >> 16); + return (msw << 16) | (lsw & 0xffff); +} - Ember.onerror = function EmberOnError(error) { - Raven.captureException(error); +/* +* Bitwise rotate a 32-bit number to the left. +*/ +function bitRotateLeft(num, cnt) { + return (num << cnt) | (num >>> (32 - cnt)); +} - if (typeof _oldOnError === 'function') { - _oldOnError.call(this, error); - } - }; +/* +* These functions implement the four basic operations the algorithm uses. +*/ +function md5cmn(q, a, b, x, s, t) { + return safeAdd(bitRotateLeft(safeAdd(safeAdd(a, q), safeAdd(x, t)), s), b); +} +function md5ff(a, b, c, d, x, s, t) { + return md5cmn((b & c) | (~b & d), a, b, x, s, t); +} +function md5gg(a, b, c, d, x, s, t) { + return md5cmn((b & d) | (c & ~d), a, b, x, s, t); +} +function md5hh(a, b, c, d, x, s, t) { + return md5cmn(b ^ c ^ d, a, b, x, s, t); +} +function md5ii(a, b, c, d, x, s, t) { + return md5cmn(c ^ (b | ~d), a, b, x, s, t); +} - Ember.RSVP.on('error', function (reason) { - if (reason instanceof Error) { - Raven.captureException(reason, { - extra: { - context: 'Unhandled Promise error detected' - } - }); - } else { - Raven.captureMessage('Unhandled Promise error detected', { - extra: { - reason: reason - } - }); - } - }); +/* +* Calculate the MD5 of an array of little-endian words, and a bit length. +*/ +function binlMD5(x, len) { + /* append padding */ + x[len >> 5] |= 0x80 << (len % 32); + x[(((len + 64) >>> 9) << 4) + 14] = len; + + var i; + var olda; + var oldb; + var oldc; + var oldd; + var a = 1732584193; + var b = -271733879; + var c = -1732584194; + var d = 271733878; + + for (i = 0; i < x.length; i += 16) { + olda = a; + oldb = b; + oldc = c; + oldd = d; + + a = md5ff(a, b, c, d, x[i], 7, -680876936); + d = md5ff(d, a, b, c, x[i + 1], 12, -389564586); + c = md5ff(c, d, a, b, x[i + 2], 17, 606105819); + b = md5ff(b, c, d, a, x[i + 3], 22, -1044525330); + a = md5ff(a, b, c, d, x[i + 4], 7, -176418897); + d = md5ff(d, a, b, c, x[i + 5], 12, 1200080426); + c = md5ff(c, d, a, b, x[i + 6], 17, -1473231341); + b = md5ff(b, c, d, a, x[i + 7], 22, -45705983); + a = md5ff(a, b, c, d, x[i + 8], 7, 1770035416); + d = md5ff(d, a, b, c, x[i + 9], 12, -1958414417); + c = md5ff(c, d, a, b, x[i + 10], 17, -42063); + b = md5ff(b, c, d, a, x[i + 11], 22, -1990404162); + a = md5ff(a, b, c, d, x[i + 12], 7, 1804603682); + d = md5ff(d, a, b, c, x[i + 13], 12, -40341101); + c = md5ff(c, d, a, b, x[i + 14], 17, -1502002290); + b = md5ff(b, c, d, a, x[i + 15], 22, 1236535329); + + a = md5gg(a, b, c, d, x[i + 1], 5, -165796510); + d = md5gg(d, a, b, c, x[i + 6], 9, -1069501632); + c = md5gg(c, d, a, b, x[i + 11], 14, 643717713); + b = md5gg(b, c, d, a, x[i], 20, -373897302); + a = md5gg(a, b, c, d, x[i + 5], 5, -701558691); + d = md5gg(d, a, b, c, x[i + 10], 9, 38016083); + c = md5gg(c, d, a, b, x[i + 15], 14, -660478335); + b = md5gg(b, c, d, a, x[i + 4], 20, -405537848); + a = md5gg(a, b, c, d, x[i + 9], 5, 568446438); + d = md5gg(d, a, b, c, x[i + 14], 9, -1019803690); + c = md5gg(c, d, a, b, x[i + 3], 14, -187363961); + b = md5gg(b, c, d, a, x[i + 8], 20, 1163531501); + a = md5gg(a, b, c, d, x[i + 13], 5, -1444681467); + d = md5gg(d, a, b, c, x[i + 2], 9, -51403784); + c = md5gg(c, d, a, b, x[i + 7], 14, 1735328473); + b = md5gg(b, c, d, a, x[i + 12], 20, -1926607734); + + a = md5hh(a, b, c, d, x[i + 5], 4, -378558); + d = md5hh(d, a, b, c, x[i + 8], 11, -2022574463); + c = md5hh(c, d, a, b, x[i + 11], 16, 1839030562); + b = md5hh(b, c, d, a, x[i + 14], 23, -35309556); + a = md5hh(a, b, c, d, x[i + 1], 4, -1530992060); + d = md5hh(d, a, b, c, x[i + 4], 11, 1272893353); + c = md5hh(c, d, a, b, x[i + 7], 16, -155497632); + b = md5hh(b, c, d, a, x[i + 10], 23, -1094730640); + a = md5hh(a, b, c, d, x[i + 13], 4, 681279174); + d = md5hh(d, a, b, c, x[i], 11, -358537222); + c = md5hh(c, d, a, b, x[i + 3], 16, -722521979); + b = md5hh(b, c, d, a, x[i + 6], 23, 76029189); + a = md5hh(a, b, c, d, x[i + 9], 4, -640364487); + d = md5hh(d, a, b, c, x[i + 12], 11, -421815835); + c = md5hh(c, d, a, b, x[i + 15], 16, 530742520); + b = md5hh(b, c, d, a, x[i + 2], 23, -995338651); + + a = md5ii(a, b, c, d, x[i], 6, -198630844); + d = md5ii(d, a, b, c, x[i + 7], 10, 1126891415); + c = md5ii(c, d, a, b, x[i + 14], 15, -1416354905); + b = md5ii(b, c, d, a, x[i + 5], 21, -57434055); + a = md5ii(a, b, c, d, x[i + 12], 6, 1700485571); + d = md5ii(d, a, b, c, x[i + 3], 10, -1894986606); + c = md5ii(c, d, a, b, x[i + 10], 15, -1051523); + b = md5ii(b, c, d, a, x[i + 1], 21, -2054922799); + a = md5ii(a, b, c, d, x[i + 8], 6, 1873313359); + d = md5ii(d, a, b, c, x[i + 15], 10, -30611744); + c = md5ii(c, d, a, b, x[i + 6], 15, -1560198380); + b = md5ii(b, c, d, a, x[i + 13], 21, 1309151649); + a = md5ii(a, b, c, d, x[i + 4], 6, -145523070); + d = md5ii(d, a, b, c, x[i + 11], 10, -1120210379); + c = md5ii(c, d, a, b, x[i + 2], 15, 718787259); + b = md5ii(b, c, d, a, x[i + 9], 21, -343485551); + + a = safeAdd(a, olda); + b = safeAdd(b, oldb); + c = safeAdd(c, oldc); + d = safeAdd(d, oldd); + } + return [a, b, c, d]; } -var ember = emberPlugin; +/* +* Convert an array of little-endian words to a string +*/ +function binl2rstr(input) { + var i; + var output = ''; + var length32 = input.length * 32; + for (i = 0; i < length32; i += 8) { + output += String.fromCharCode((input[i >> 5] >>> (i % 32)) & 0xff); + } + return output; +} -/*global define*/ +/* +* Convert a raw string to an array of little-endian words +* Characters >255 have their high-byte silently ignored. +*/ +function rstr2binl(input) { + var i; + var output = []; + output[(input.length >> 2) - 1] = undefined; + for (i = 0; i < output.length; i += 1) { + output[i] = 0; + } + var length8 = input.length * 8; + for (i = 0; i < length8; i += 8) { + output[i >> 5] |= (input.charCodeAt(i / 8) & 0xff) << (i % 32); + } + return output; +} -/** - * require.js plugin - * - * Automatically wrap define/require callbacks. (Experimental) - */ +/* +* Calculate the MD5 of a raw string +*/ +function rstrMD5(s) { + return binl2rstr(binlMD5(rstr2binl(s), s.length * 8)); +} -function requirePlugin(Raven) { - if (typeof undefined === 'function' && undefined.amd) { - window.define = Raven.wrap({ - deep: false - }, undefined); - window.require = Raven.wrap({ - deep: false - }, commonjsRequire); +/* +* Calculate the HMAC-MD5, of a key and some data (raw strings) +*/ +function rstrHMACMD5(key, data) { + var i; + var bkey = rstr2binl(key); + var ipad = []; + var opad = []; + var hash; + ipad[15] = opad[15] = undefined; + if (bkey.length > 16) { + bkey = binlMD5(bkey, key.length * 8); + } + for (i = 0; i < 16; i += 1) { + ipad[i] = bkey[i] ^ 0x36363636; + opad[i] = bkey[i] ^ 0x5c5c5c5c; + } + hash = binlMD5(ipad.concat(rstr2binl(data)), 512 + data.length * 8); + return binl2rstr(binlMD5(opad.concat(hash), 512 + 128)); +} + +/* +* Convert a raw string to a hex string +*/ +function rstr2hex(input) { + var hexTab = '0123456789abcdef'; + var output = ''; + var x; + var i; + for (i = 0; i < input.length; i += 1) { + x = input.charCodeAt(i); + output += hexTab.charAt((x >>> 4) & 0x0f) + hexTab.charAt(x & 0x0f); } + return output; } -var require_1 = requirePlugin; +/* +* Encode a string as utf-8 +*/ +function str2rstrUTF8(input) { + return unescape(encodeURIComponent(input)); +} -/* This file was generated by './scripts/generate-plugin-combinations.js'! */ +/* +* Take string arguments and return either raw or hex encoded strings +*/ +function rawMD5(s) { + return rstrMD5(str2rstrUTF8(s)); +} +function hexMD5(s) { + return rstr2hex(rawMD5(s)); +} +function rawHMACMD5(k, d) { + return rstrHMACMD5(str2rstrUTF8(k), str2rstrUTF8(d)); +} +function hexHMACMD5(k, d) { + return rstr2hex(rawHMACMD5(k, d)); +} -singleton.addPlugin(angular).addPlugin(ember).addPlugin(require_1); -var angular_ember_require = {}; +function md5(string, key, raw) { + if (!key) { + if (!raw) { + return hexMD5(string); + } + return rawMD5(string); + } + if (!raw) { + return hexHMACMD5(key, string); + } + return rawHMACMD5(key, string); +} -return angular_ember_require; +module.exports = md5; -}))); +},{}]},{},[7,1,2,3])(7) +}); \ No newline at end of file diff --git a/dist/angular,ember,require/raven.min.js b/dist/angular,ember,require/raven.min.js index 2fd86c79cf9b..e464239974e6 100644 --- a/dist/angular,ember,require/raven.min.js +++ b/dist/angular,ember,require/raven.min.js @@ -1,3 +1,4 @@ -/*! Raven.js 3.22.2 (1b6187b) | github.com/getsentry/raven-js */ -!function(a,b){"object"==typeof exports&&"undefined"!=typeof module?module.exports=b():"function"==typeof define&&define.amd?define(b):a.Raven=b()}(this,function(){"use strict";function a(a,b){return b={exports:{}},a(b,b.exports),b.exports}function b(a){return(b="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(a){return typeof a}:function(a){return a&&"function"==typeof Symbol&&a.constructor===Symbol&&a!==Symbol.prototype?"symbol":typeof a})(a)}function c(a){return"object"===b(a)&&null!==a}function d(a){switch({}.toString.call(a)){case"[object Error]":return!0;case"[object Exception]":return!0;case"[object DOMException]":return!0;default:return a instanceof Error}}function e(a){return l()&&"[object ErrorEvent]"==={}.toString.call(a)}function f(a){return void 0===a}function g(a){return"function"==typeof a}function h(a){return"[object Object]"===Object.prototype.toString.call(a)}function i(a){return"[object String]"===Object.prototype.toString.call(a)}function j(a){return"[object Array]"===Object.prototype.toString.call(a)}function k(a){if(!h(a))return!1;for(var b in a)if(a.hasOwnProperty(b))return!1;return!0}function l(){try{return new ErrorEvent(""),!0}catch(a){return!1}}function m(){if(!("fetch"in P))return!1;try{return new Headers,new Request(""),new Response,!0}catch(a){return!1}}function n(a){function b(b,c){var d=a(b)||b;return c?c(d)||d:d}return b}function o(a,b){var c,d;if(f(a.length))for(c in a)s(a,c)&&b.call(null,c,a[c]);else if(d=a.length)for(c=0;c ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function y(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&i(b))for(c=b.split(/\s+/),f=0;f=0;--b)l[b]===a&&l.splice(b,1)}function c(){g(),l=[]}function d(a,b){var c=null;if(!b||R.collectWindowErrors){for(var d in l)if(l.hasOwnProperty(d))try{l[d].apply(null,[a].concat(T.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function e(a,b,c,e,f){var g=null,i=Q.isErrorEvent(f)?f.error:f,k=Q.isErrorEvent(a)?a.message:a;if(o)R.computeStackTrace.augmentStackTraceWithInitialElement(o,b,c,k),h();else if(i&&Q.isError(i))g=R.computeStackTrace(i),d(g,!0);else{var l,m={url:b,line:c,column:e},n=void 0;if("[object String]"==={}.toString.call(k)){var l=k.match(V);l&&(n=l[1],k=l[2])}m.func=U,g={name:n,message:k,url:F(),stack:[m]},d(g,!0)}return!!j&&j.apply(this,arguments)}function f(){k||(j=S.onerror,S.onerror=e,k=!0)}function g(){k&&(S.onerror=j,k=!1,j=void 0)}function h(){var a=o,b=m;m=null,o=null,n=null,d.apply(null,[a,!1].concat(b))}function i(a,b){var c=T.call(arguments,1);if(o){if(n===a)return;h()}var d=R.computeStackTrace(a);if(o=d,n=a,m=c,setTimeout(function(){n===a&&h()},d.incomplete?2e3:0),b!==!1)throw a}var j,k,l=[],m=null,n=null,o=null;return i.subscribe=a,i.unsubscribe=b,i.uninstall=c,i}(),R.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,d,e=/^\s*at (.*?) ?\(((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,f=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|\[native).*?|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,g=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,h=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,i=/\((\S*)(?::(\d+))(?::(\d+))\)/,j=a.stack.split("\n"),k=[],l=(/^(.*) is undefined$/.exec(a.message),0),m=j.length;l eval")>-1;o&&(b=h.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==l||c[5]||"undefined"==typeof a.columnNumber||(k[0].column=a.columnNumber+1),d={url:c[3],func:c[1]||U,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}!d.func&&d.line&&(d.func=U),k.push(d)}return k.length?{name:a.name,message:a.message,url:F(),stack:k}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=U),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,e){for(var f,g,h=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,i=[],j={},k=!1,l=c.caller;l&&!k;l=l.caller)if(l!==d&&l!==R.report){if(g={url:null,func:U,line:null,column:null},l.name?g.func=l.name:(f=h.exec(l.toString()))&&(g.func=f[1]),"undefined"==typeof g.func)try{g.func=f.input.substring(0,f.input.indexOf("{"))}catch(m){}j[""+l]?k=!0:j[""+l]=!0,i.push(g)}e&&i.splice(0,e);var n={name:a.name,message:a.message,url:F(),stack:i};return b(n,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),n}function d(b,d){var e=null;d=null==d?0:+d;try{if(e=a(b))return e}catch(f){if(R.debug)throw f}try{if(e=c(b,d+1))return e}catch(f){if(R.debug)throw f}return{name:b.name,message:b.message,url:F()}}return d.augmentStackTraceWithInitialElement=b,d.computeStackTraceFromStackProp=a,d}();var W=R,X=a(function(a,b){function c(a,b){for(var c=0;c0){var i=c(d,this);~i?d.splice(i+1):d.push(this),~i?f.splice(i,1/0,g):f.push(g),~c(d,h)&&(h=b.call(this,g,h))}else d.push(h);return null==a?h instanceof Error?e(h):h:a.call(this,g,h)}}b=a.exports=d,b.getSerialize=f});G.prototype=new Error,G.prototype.constructor=G;var Y=G,Z=function(a,b,c){var d=a[b],e=a;if(b in a){var f="warn"===b?"warning":b;a[b]=function(){var a=[].slice.call(arguments),g=Q.safeJoin(a," "),h={level:f,logger:"console",extra:{arguments:a}};"assert"===b?a[0]===!1&&(g="Assertion failed: "+(Q.safeJoin(a.slice(1)," ")||"console.assert"),h.extra.arguments=a.slice(1),c&&c(g,h)):c&&c(g,h),d&&Function.prototype.apply.call(d,e,a)}}},$={wrapMethod:Z},_=Q.isError,aa=Q.isObject,ba=Q.isErrorEvent,ca=Q.isUndefined,da=Q.isFunction,ea=Q.isString,fa=Q.isArray,ga=Q.isEmptyObject,ha=Q.each,ia=Q.objectMerge,ja=Q.truncate,ka=Q.objectFrozen,la=Q.hasKey,ma=Q.joinRegExp,na=Q.urlencode,oa=Q.uuid4,pa=Q.htmlTreeAsString,qa=Q.isSameException,ra=Q.isSameStacktrace,sa=Q.parseUrl,ta=Q.fill,ua=Q.supportsFetch,va=$.wrapMethod,wa="source protocol user pass host port path".split(" "),xa=/^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/,ya="undefined"!=typeof window?window:"undefined"!=typeof N?N:"undefined"!=typeof self?self:{},za=ya.document,Aa=ya.navigator;J.prototype={VERSION:"3.22.2",debug:!1,TraceKit:W,config:function(a,b){var c=this;if(c.i)return this.D("error","Error: Raven has already been configured"),c;if(!a)return c;var d=c.m;b&&ha(b,function(a,b){"tags"===a||"extra"===a||"user"===a?c.l[a]=b:d[a]=b}),c.setDSN(a),d.ignoreErrors.push(/^Script error\.?$/),d.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/),d.ignoreErrors=ma(d.ignoreErrors),d.ignoreUrls=!!d.ignoreUrls.length&&ma(d.ignoreUrls),d.whitelistUrls=!!d.whitelistUrls.length&&ma(d.whitelistUrls),d.includePaths=ma(d.includePaths),d.maxBreadcrumbs=Math.max(0,Math.min(d.maxBreadcrumbs||100,100));var e={xhr:!0,console:!0,dom:!0,location:!0,sentry:!0},f=d.autoBreadcrumbs;"[object Object]"==={}.toString.call(f)?f=ia(e,f):f!==!1&&(f=e),d.autoBreadcrumbs=f;var g={tryCatch:!0},h=d.instrument;return"[object Object]"==={}.toString.call(h)?h=ia(g,h):h!==!1&&(h=g),d.instrument=h,W.collectWindowErrors=!!d.collectWindowErrors,c},install:function(){var a=this;return a.isSetup()&&!a.p&&(W.report.subscribe(function(){a.E.apply(a,arguments)}),a.F(),a.m.instrument&&a.m.instrument.tryCatch&&a.G(),a.m.autoBreadcrumbs&&a.H(),a.I(),a.p=!0),Error.stackTraceLimit=a.m.stackTraceLimit,this},setDSN:function(a){var b=this,c=b.J(a),d=c.path.lastIndexOf("/"),e=c.path.substr(1,d);b.K=a,b.j=c.user,b.L=c.pass&&c.pass.substr(1),b.k=c.path.substr(d+1),b.i=b.M(c),b.N=b.i+"/"+e+"api/"+b.k+"/store/",this.A()},context:function(a,b,c){return da(a)&&(c=b||[],b=a,a=void 0),this.wrap(a,b).apply(this,c)},wrap:function(a,b,c){function d(){var d=[],f=arguments.length,g=!a||a&&a.deep!==!1;for(c&&da(c)&&c.apply(this,arguments);f--;)d[f]=g?e.wrap(a,arguments[f]):arguments[f];try{return b.apply(this,d)}catch(h){throw e.O(),e.captureException(h,a),h}}var e=this;if(ca(b)&&!da(a))return a;if(da(a)&&(b=a,a=void 0),!da(b))return b;try{if(b.a)return b;if(b.P)return b.P}catch(f){return b}for(var g in b)la(b,g)&&(d[g]=b[g]);return d.prototype=b.prototype,b.P=d,d.a=!0,d.b=b,d},uninstall:function(){return W.report.uninstall(),this.Q(),this.R(),this.S(),Error.stackTraceLimit=this.q,this.p=!1,this},captureException:function(a,b){b=ia({trimHeadFrames:0},b?b:{});var c=!_(a),d=!ba(a),e=ba(a)&&!a.error;if(c&&d||e)return this.captureMessage(a,ia(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}));ba(a)&&(a=a.error),this.f=a;try{var f=W.computeStackTrace(a);this.T(f,b)}catch(g){if(a!==g)throw g}return this},captureMessage:function(a,b){if(!this.m.ignoreErrors.test||!this.m.ignoreErrors.test(a)){b=b||{};var c,d=ia({message:a+""},b);try{throw new Error(a)}catch(e){c=e}c.name=null;var f=W.computeStackTrace(c),g=fa(f.stack)&&f.stack[1],h=g&&g.url||"";if((!this.m.ignoreUrls.test||!this.m.ignoreUrls.test(h))&&(!this.m.whitelistUrls.test||this.m.whitelistUrls.test(h))){if(this.m.stacktrace||b&&b.stacktrace){b=ia({fingerprint:a,trimHeadFrames:(b.trimHeadFrames||0)+1},b);var i=this.U(f,b);d.stacktrace={frames:i.reverse()}}return this.V(d),this}}},captureBreadcrumb:function(a){var b=ia({timestamp:H()/1e3},a);if(da(this.m.breadcrumbCallback)){var c=this.m.breadcrumbCallback(b);if(aa(c)&&!ga(c))b=c;else if(c===!1)return this}return this.w.push(b),this.w.length>this.m.maxBreadcrumbs&&this.w.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.t.push([a,b]),this.p&&this.I(),this},setUserContext:function(a){return this.l.user=a,this},setExtraContext:function(a){return this.W("extra",a),this},setTagsContext:function(a){return this.W("tags",a),this},clearContext:function(){return this.l={},this},getContext:function(){return JSON.parse(X(this.l))},setEnvironment:function(a){return this.m.environment=a,this},setRelease:function(a){return this.m.release=a,this},setDataCallback:function(a){var b=this.m.dataCallback;return this.m.dataCallback=I(b,a),this},setBreadcrumbCallback:function(a){var b=this.m.breadcrumbCallback;return this.m.breadcrumbCallback=I(b,a),this},setShouldSendCallback:function(a){var b=this.m.shouldSendCallback;return this.m.shouldSendCallback=I(b,a),this},setTransport:function(a){return this.m.transport=a,this},lastException:function(){return this.f},lastEventId:function(){return this.h},isSetup:function(){return!!this.c&&(!!this.i||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.D("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=ya.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(za){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new Y("Missing eventId");var c=a.dsn||this.K;if(!c)throw new Y("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.l.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.M(this.J(c)),h=za.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(za.head||za.body).appendChild(h)}},O:function(){var a=this;this.o+=1,setTimeout(function(){a.o-=1})},X:function(a,b){var c,d;if(this.d){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),za.createEvent?(c=za.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=za.createEventObject(),c.eventType=a);for(d in b)la(b,d)&&(c[d]=b[d]);if(za.createEvent)za.dispatchEvent(c);else try{za.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},Y:function(a){var b=this;return function(c){if(b.Z=null,b.x!==c){b.x=c;var d;try{d=pa(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},$:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.Z;g||a.Y("input")(c),clearTimeout(g),a.Z=setTimeout(function(){a.Z=null},b)}}},_:function(a,b){var c=sa(this.y.href),d=sa(b),e=sa(a);this.z=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},F:function(){var a=this;a.aa=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.a?a.aa.apply(this.b,arguments):a.aa.apply(this,arguments)}},Q:function(){this.aa&&(Function.prototype.toString=this.aa)},G:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b._(b.z,c+""),a.apply(this,arguments)}};ta(history,"pushState",j,d),ta(history,"replaceState",j,d)}if(c.console&&"console"in ya&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};ha(["debug","info","warn","error","log"],function(a,b){va(console,b,k)})}},R:function(){for(var a;this.v.length;){a=this.v.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},S:function(){for(var a in this.s)this.r[a]=this.s[a]},I:function(){var a=this;ha(this.t,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},J:function(a){var b=xa.exec(a),c={},d=7;try{for(;d--;)c[wa[d]]=b[d]||""}catch(e){throw new Y("Invalid DSN: "+a)}if(c.pass&&!this.m.allowSecretKey)throw new Y("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},M:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},E:function(){this.o||this.T.apply(this,arguments)},T:function(a,b){var c=this.U(a,b);this.X("handle",{stackInfo:a,options:b}),this.ca(a.name,a.message,a.url,a.lineno,c,b)},U:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(ha(a.stack,function(b,e){var f=c.da(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.w,0)}),this.l.user&&(a.user=this.l.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||ga(a[b]))&&delete a[b]}),da(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!ga(a)&&(!da(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.ja()?void this.D("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random()this.l.maxBreadcrumbs&&this.v.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.s.push([a,b]),this.o&&this.G(),this},setUserContext:function(a){return this.k.user=a,this},setExtraContext:function(a){return this.$("extra",a),this},setTagsContext:function(a){return this.$("tags",a),this},clearContext:function(){return this.k={},this},getContext:function(){return JSON.parse(h(this.k))},setEnvironment:function(a){return this.l.environment=a,this},setRelease:function(a){return this.l.release=a,this},setDataCallback:function(a){var b=this.l.dataCallback;return this.l.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.l.breadcrumbCallback;return this.l.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.l.shouldSendCallback;return this.l.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.l.transport=a,this},lastException:function(){return this.e},lastEventId:function(){return this.g},isSetup:function(){return!!this.b&&(!!this.h||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.A("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=P.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(Q){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.I;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.k.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.K(this.H(c)),h=Q.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(Q.head||Q.body).appendChild(h)}},M:function(){var a=this;this.n+=1,setTimeout(function(){a.n-=1})},_:function(a,b){var c,d;if(this.c){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),Q.createEvent?(c=Q.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=Q.createEventObject(),c.eventType=a);for(d in b)y(b,d)&&(c[d]=b[d]);if(Q.createEvent)Q.dispatchEvent(c);else try{Q.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},aa:function(a){var b=this;return function(c){if(b.ba=null,b.w!==c){b.w=c;var d;try{d=C(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ca:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.ba;g||a.aa("input")(c),clearTimeout(g),a.ba=setTimeout(function(){a.ba=null},b)}}},da:function(a,b){var c=F(this.x.href),d=F(b),e=F(a);this.y=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},D:function(){var a=this;a.ea=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.N?a.ea.apply(this.P,arguments):a.ea.apply(this,arguments)}},R:function(){this.ea&&(Function.prototype.toString=this.ea)},E:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.da(b.y,c+""),a.apply(this,arguments)}};G(history,"pushState",j,d),G(history,"replaceState",j,d)}if(c.console&&"console"in P&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};u(["debug","info","warn","error","log"],function(a,b){M(console,b,k)})}},S:function(){for(var a;this.u.length;){a=this.u.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},T:function(){for(var a in this.r)this.q[a]=this.r[a]},G:function(){var a=this;u(this.s,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},H:function(a){var b=O.exec(a),c={},d=7;try{for(;d--;)c[N[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.l.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},K:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},B:function(){this.n||this.W.apply(this,arguments)},W:function(a,b){var c=this.Y(a,b);this._("handle",{stackInfo:a,options:b}),this.ga(a.name,a.message,a.url,a.lineno,c,b)},Y:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(u(a.stack,function(b,e){var f=c.ha(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.v,0)}),this.k.user&&(a.user=this.k.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),a=this.qa(a),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||t(a[b]))&&delete a[b]}),q(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!t(a)&&(!q(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.na()?void this.A("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function B(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&j(b))for(c=b.split(/\s+/),f=0;fc?M(a,b-1):d}function N(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?T:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function O(a,b){function c(a){return k(a)?a.map(function(a){return c(a)}):i(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!k(b)||k(b)&&0===b.length)return a;var d,e=w(b),f="********";try{d=JSON.parse(P(a))}catch(g){return a}return c(d)}var P=a(10),Q="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},R=3,S=51200,T=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isUndefined:g,isFunction:h,isPlainObject:i,isString:j,isArray:k,isEmptyObject:l,supportsErrorEvent:m,supportsFetch:n,supportsReferrerPolicy:o,supportsPromiseRejectionEvent:p,wrappedCallback:q,each:r,objectMerge:s,truncate:u,objectFrozen:t,hasKey:v,joinRegExp:w,urlencode:x,uuid4:z,htmlTreeAsString:A,htmlElementAsString:B,isSameException:E,isSameStacktrace:F,parseUrl:y,fill:G,safeJoin:H,serializeException:M,serializeKeysForMessage:N,sanitize:O}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{10:10}],9:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}var e=a(8),f={collectWindowErrors:!0,debug:!1},g="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},h=[].slice,i="?",j=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;f.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function k(a,b){var c=null;if(!b||f.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(h.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,g,h){var l=null,m=e.isErrorEvent(h)?h.error:h,n=e.isErrorEvent(a)?a.message:a;if(v)f.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&e.isError(m))l=f.computeStackTrace(m),k(l,!0);else{var p,r={url:b,line:c,column:g},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(j);p&&(s=p[1],n=p[2])}r.func=i,l={name:s,message:n,url:d(),stack:[r]},k(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=g.onerror,g.onerror=l,r=!0)}function n(){r&&(g.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,k.apply(null,[a,!1].concat(b))}function p(a,b){var c=h.call(arguments,1);if(v){if(u===a)return;o()}var d=f.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),f.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,e,f=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,g=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,h=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,j=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,k=/\((\S*)(?::(\d+))(?::(\d+))\)/,l=a.stack.split("\n"),m=[],n=(/^(.*) is undefined$/.exec(a.message),0),o=l.length;n eval")>-1;q&&(b=j.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==n||c[5]||"undefined"==typeof a.columnNumber||(m[0].column=a.columnNumber+1),e={url:c[3],func:c[1]||i,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}!e.func&&e.line&&(e.func=i),m.push(e)}return m.length?{name:a.name,message:a.message,url:d(),stack:m}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=i),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,g){for(var h,j,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==e&&o!==f.report){if(j={url:null,func:i,line:null,column:null},o.name?j.func=o.name:(h=k.exec(o.toString()))&&(j.func=h[1]),"undefined"==typeof j.func)try{j.func=h.input.substring(0,h.input.indexOf("{"))}catch(p){}m[""+o]?n=!0:m[""+o]=!0,l.push(j)}g&&l.splice(0,g);var q={name:a.name,message:a.message,url:d(),stack:l};return b(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),q}function e(b,e){var g=null;e=null==e?0:+e;try{if(g=a(b))return g}catch(h){if(f.debug)throw h}try{if(g=c(b,e+1))return g}catch(h){if(f.debug)throw h; +}return{name:b.name,message:b.message,url:d()}}return e.augmentStackTraceWithInitialElement=b,e.computeStackTraceFromStackProp=a,e}(),b.exports=f}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{8:8}],10:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}],11:[function(a,b,c){function d(a,b){var c=(65535&a)+(65535&b),d=(a>>16)+(b>>16)+(c>>16);return d<<16|65535&c}function e(a,b){return a<>>32-b}function f(a,b,c,f,g,h){return d(e(d(d(b,a),d(f,h)),g),c)}function g(a,b,c,d,e,g,h){return f(b&c|~b&d,a,b,e,g,h)}function h(a,b,c,d,e,g,h){return f(b&d|c&~d,a,b,e,g,h)}function i(a,b,c,d,e,g,h){return f(b^c^d,a,b,e,g,h)}function j(a,b,c,d,e,g,h){return f(c^(b|~d),a,b,e,g,h)}function k(a,b){a[b>>5]|=128<>>9<<4)+14]=b;var c,e,f,k,l,m=1732584193,n=-271733879,o=-1732584194,p=271733878;for(c=0;c>5]>>>b%32&255);return c}function m(a){var b,c=[];for(c[(a.length>>2)-1]=void 0,b=0;b>5]|=(255&a.charCodeAt(b/8))<16&&(e=k(e,8*a.length)),c=0;c<16;c+=1)f[c]=909522486^e[c],g[c]=1549556828^e[c];return d=k(f.concat(m(b)),512+8*b.length),l(k(g.concat(d),640))}function p(a){var b,c,d="0123456789abcdef",e="";for(c=0;c>>4&15)+d.charAt(15&b);return e}function q(a){return unescape(encodeURIComponent(a))}function r(a){return n(q(a))}function s(a){return p(r(a))}function t(a,b){return o(q(a),q(b))}function u(a,b){return p(t(a,b))}function v(a,b,c){return b?c?t(b,a):u(b,a):c?r(a):s(a)}b.exports=v},{}]},{},[7,1,2,3])(7)}); //# sourceMappingURL=raven.min.js.map \ No newline at end of file diff --git a/dist/angular,ember,require/raven.min.js.map b/dist/angular,ember,require/raven.min.js.map index 8c414d99d6bb..d9f29af51b7e 100644 --- a/dist/angular,ember,require/raven.min.js.map +++ b/dist/angular,ember,require/raven.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["raven.js"],"names":["global","factory","exports","module","define","amd","Raven","this","createCommonjsModule","fn","_typeof","obj","Symbol","iterator","constructor","prototype","isObject$1","what","isError$1","value","toString","call","Error","isErrorEvent$1","supportsErrorEvent","isUndefined$1","isFunction$1","isPlainObject","Object","isString$1","isArray$1","isEmptyObject$1","_","hasOwnProperty","ErrorEvent","e","supportsFetch$1","_window$3","Headers","Request","Response","wrappedCallback","callback","dataCallback","data","original","normalizedData","each$1","i","j","length","hasKey$1","objectMerge$1","obj1","obj2","key","objectFrozen$1","isFrozen","truncate$1","str","max","substr","object","joinRegExp$1","patterns","pattern","sources","len","push","replace","source","RegExp","join","urlencode$1","o","pairs","encodeURIComponent","parseUrl$1","url","match","query","fragment","protocol","host","path","relative","uuid4$1","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","r","Math","random","htmlTreeAsString$1","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","reverse","className","classes","attr","tagName","toLowerCase","id","split","attrWhitelist","getAttribute","isOnlyOneTruthy","a","b","isBothUndefined","isSameException$1","ex1","ex2","values","type","stacktrace","isSameStacktrace$1","stack1","stack2","frames1","frames","frames2","filename","lineno","colno","fill$1","name","replacement","track","orig","__raven__","__orig__","safeJoin","input","delimiter","output","String","getLocationHref","document","location","href","RavenConfigError","message","now","Date","keepOriginalCallback","isFunction","Raven$1","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window$1","SENTRY_RELEASE","logger","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","_fetchDefaults","method","keepalive","referrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","console","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","_lastHref","_resetBackoff","angularPlugin","angular","RavenProvider","$get","$window","ExceptionHandlerProvider","$provide","decorator","exceptionHandler","R","$delegate","ex","cause","captureException","extra","window","moduleName","provider","config","setDataCallback","wrappedCallback$1","_normalizeData","emberPlugin","Ember","_oldOnError","onerror","error","RSVP","on","reason","context","captureMessage","requirePlugin","commonjsGlobal","self","_sPO","setPrototypeOf","p","__proto__","Reflect","construct","Parent","args","Class","Constructor","apply","bind","utils","isObject","isError","isErrorEvent","isString","isArray","isEmptyObject","supportsFetch","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","TraceKit","debug","_window$2","_slice","slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","report","subscribe","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","stack","isWindowError","exception","concat","arguments","inner","traceKitWindowOnError","msg","lineNo","colNo","lastExceptionStack","computeStackTrace","augmentStackTraceWithInitialElement","processLastException","groups","line","column","undefined","func","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","lastException","rethrow","setTimeout","incomplete","uninstall","computeStackTraceFromStackProp","submatch","parts","element","chrome","gecko","winjs","geckoEval","chromeEval","lines","exec","isNative","indexOf","isEval","columnNumber","stackInfo","initial","unshift","partial","computeStackTraceByWalkingCallerChain","depth","item","functionName","funcs","recursion","curr","caller","substring","result","sourceURL","fileName","lineNumber","description","tracekit","stringify_1","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","err","keys","thisPos","Infinity","getSerialize","configError","wrapMethod","level","originalConsoleLevel","originalConsole","sentryLevel","Function","console$1","wrapConsoleMethod","dsnKeys","dsnPattern","navigator","VERSION","dsn","options","_logDebug","globalOptions","setDSN","maxBreadcrumbs","min","autoBreadcrumbDefaults","xhr","dom","sentry","instrumentDefaults","tryCatch","install","isSetup","_handleOnErrorStackInfo","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","lastIndexOf","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","wrap","_before","wrapped","deep","_ignoreNextOnError","__raven_wrapper__","property","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","trimHeadFrames","isNotError","isNotErrorEvent","isErrorEventWithoutError","_handleStackInfo","test","initialCall","fileurl","fingerprint","_prepareFrames","_send","captureBreadcrumb","crumb","timestamp","breadcrumbCallback","shift","addPlugin","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","O","X","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","Y","evtName","_keypressTimeout","target","category","$","debounceDuration","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","from","to","parsedLoc","parsedTo","parsedFrom","F","_originalFunctionToString","Q","G","wrapTimeFn","t","Array","originalCallback","wrapEventTarget","proto","capture","secure","handleEvent","before","clickHandler","keypressHandler","_keypressEventHandler","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","H","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","onreadystatechange","origFetch","fetchInput","fetchData","then","response","addEventListener","attachEvent","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","builtin","S","I","installer","J","m","allowSecretKey","M","port","E","T","_triggerEvent","_processException","U","frame","_normalizeFrame","in_app","da","stackInfoUrl","normalized","function","ca","prefixedMessage","culprit","ea","request","Referer","breadcrumbs","_trimBreadcrumbs","fa","urlProp","urlProps","ga","httpData","userAgent","User-Agent","referrer","A","_backoffDuration","_backoffStart","ja","ka","current","last","la","_shouldBackoff","retry","get","getResponseHeader","parseInt","V","baseData","project","platform","_getHttpData","serverName","server_name","forEach","_sendProcessedPayload","na","ma","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","oa","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","onload","open","setRequestHeader","send","pa","hash","evaluated","D","W","setUser","setReleaseContext","raven","_window","_Raven","noConflict","singleton","angularPattern","matches","angularDocs","ember","require_1","angular_ember_require"],"mappings":";CAYC,SAAUA,EAAQC,GACC,gBAAZC,UAA0C,mBAAXC,QAAyBA,OAAOD,QAAUD,IAC9D,kBAAXG,SAAyBA,OAAOC,IAAMD,OAAOH,GACnDD,EAAOM,MAAQL,KACfM,KAAM,WAAe,YAUvB,SAASC,GAAqBC,EAAIN,GACjC,MAAOA,IAAWD,YAAeO,EAAGN,EAAQA,EAAOD,SAAUC,EAAOD,QAGrE,QAASQ,GAAQC,GAWf,OATED,EADoB,kBAAXE,SAAoD,gBAApBA,QAAOC,SACtC,SAAUF,GAClB,aAAcA,IAGN,SAAUA,GAClB,MAAOA,IAAyB,kBAAXC,SAAyBD,EAAIG,cAAgBF,QAAUD,IAAQC,OAAOG,UAAY,eAAkBJ,KAI9GA,GAkBjB,QAASK,GAAWC,GAClB,MAAyB,WAAlBP,EAAQO,IAA+B,OAATA,EAKvC,QAASC,GAAUC,GACjB,UAAWC,SAASC,KAAKF,IACvB,IAAK,iBACH,OAAO,CAET,KAAK,qBACH,OAAO,CAET,KAAK,wBACH,OAAO,CAET,SACE,MAAOA,aAAiBG,QAI9B,QAASC,GAAeJ,GACtB,MAAOK,MAAoD,2BAAzBJ,SAASC,KAAKF,GAGlD,QAASM,GAAcR,GACrB,MAAgB,UAATA,EAGT,QAASS,GAAaT,GACpB,MAAuB,kBAATA,GAGhB,QAASU,GAAcV,GACrB,MAAgD,oBAAzCW,OAAOb,UAAUK,SAASC,KAAKJ,GAGxC,QAASY,GAAWZ,GAClB,MAAgD,oBAAzCW,OAAOb,UAAUK,SAASC,KAAKJ,GAGxC,QAASa,GAAUb,GACjB,MAAgD,mBAAzCW,OAAOb,UAAUK,SAASC,KAAKJ,GAGxC,QAASc,GAAgBd,GACvB,IAAKU,EAAcV,GAAO,OAAO,CAEjC,KAAK,GAAIe,KAAKf,GACZ,GAAIA,EAAKgB,eAAeD,GACtB,OAAO,CAIX,QAAO,EAGT,QAASR,KACP,IAGE,MAFA,IAAIU,YAAW,KAER,EACP,MAAOC,GACP,OAAO,GAIX,QAASC,KACP,KAAM,SAAWC,IAAY,OAAO,CAEpC,KAOE,MANA,IAAIC,SAEJ,GAAIC,SAAQ,IAEZ,GAAIC,WAEG,EACP,MAAOL,GACP,OAAO,GAIX,QAASM,GAAgBC,GACvB,QAASC,GAAaC,EAAMC,GAC1B,GAAIC,GAAiBJ,EAASE,IAASA,CAEvC,OAAIC,GACKA,EAASC,IAAmBA,EAG9BA,EAGT,MAAOH,GAGT,QAASI,GAAOpC,EAAK+B,GACnB,GAAIM,GAAGC,CAEP,IAAIxB,EAAcd,EAAIuC,QACpB,IAAKF,IAAKrC,GACJwC,EAASxC,EAAKqC,IAChBN,EAASrB,KAAK,KAAM2B,EAAGrC,EAAIqC,QAM/B,IAFAC,EAAItC,EAAIuC,OAGN,IAAKF,EAAI,EAAGA,EAAIC,EAAGD,IACjBN,EAASrB,KAAK,KAAM2B,EAAGrC,EAAIqC,IAMnC,QAASI,GAAcC,EAAMC,GAC3B,MAAKA,IAILP,EAAOO,EAAM,SAAUC,EAAKpC,GAC1BkC,EAAKE,GAAOpC,IAEPkC,GANEA,EAkBX,QAASG,GAAe7C,GACtB,QAAKiB,OAAO6B,UAIL7B,OAAO6B,SAAS9C,GAGzB,QAAS+C,GAAWC,EAAKC,GACvB,OAAQA,GAAOD,EAAIT,QAAUU,EAAMD,EAAMA,EAAIE,OAAO,EAAGD,GAAO,IAWhE,QAAST,GAASW,EAAQP,GACxB,MAAO3B,QAAOb,UAAUkB,eAAeZ,KAAKyC,EAAQP,GAGtD,QAASQ,GAAaC,GAQpB,IALA,GAGIC,GAHAC,KACAlB,EAAI,EACJmB,EAAMH,EAASd,OAGZF,EAAImB,EAAKnB,IACdiB,EAAUD,EAAShB,GAEfnB,EAAWoC,GAGbC,EAAQE,KAAKH,EAAQI,QAAQ,8BAA+B,SACnDJ,GAAWA,EAAQK,QAE5BJ,EAAQE,KAAKH,EAAQK,OAKzB,OAAO,IAAIC,QAAOL,EAAQM,KAAK,KAAM,KAGvC,QAASC,GAAYC,GACnB,GAAIC,KAIJ,OAHA5B,GAAO2B,EAAG,SAAUnB,EAAKpC,GACvBwD,EAAMP,KAAKQ,mBAAmBrB,GAAO,IAAMqB,mBAAmBzD,MAEzDwD,EAAMH,KAAK,KAMpB,QAASK,GAAWC,GAClB,GAAmB,gBAARA,GAAkB,QAC7B,IAAIC,GAAQD,EAAIC,MAAM,kEAElBC,EAAQD,EAAM,IAAM,GACpBE,EAAWF,EAAM,IAAM,EAC3B,QACEG,SAAUH,EAAM,GAChBI,KAAMJ,EAAM,GACZK,KAAML,EAAM,GACZM,SAAUN,EAAM,GAAKC,EAAQC,GAKjC,QAASK,KACP,GAAIC,GAASlD,EAAUkD,QAAUlD,EAAUmD,QAE3C,KAAK/D,EAAc8D,IAAWA,EAAOE,gBAAiB,CAGpD,GAAIC,GAAM,GAAIC,aAAY,EAC1BJ,GAAOE,gBAAgBC,GAEvBA,EAAI,GAAc,KAATA,EAAI,GAAa,MAE1BA,EAAI,GAAc,MAATA,EAAI,GAAc,KAE3B,IAAIE,GAAM,SAAaC,GAGrB,IAFA,GAAIC,GAAID,EAAIzE,SAAS,IAEd0E,EAAE5C,OAAS,GAChB4C,EAAI,IAAMA,CAGZ,OAAOA,GAGT,OAAOF,GAAIF,EAAI,IAAME,EAAIF,EAAI,IAAME,EAAIF,EAAI,IAAME,EAAIF,EAAI,IAAME,EAAIF,EAAI,IAAME,EAAIF,EAAI,IAAME,EAAIF,EAAI,IAAME,EAAIF,EAAI,IAGjH,MAAO,mCAAmCrB,QAAQ,QAAS,SAAU0B,GACnE,GAAIC,GAAoB,GAAhBC,KAAKC,SAAgB,EACzBJ,EAAU,MAANC,EAAYC,EAAQ,EAAJA,EAAU,CAClC,OAAOF,GAAE1E,SAAS,MAaxB,QAAS+E,GAAmBC,GAW1B,IATA,GAOIC,GAPAC,EAAsB,EACtBC,EAAiB,GACjBC,KACAC,EAAS,EACTtC,EAAM,EACNuC,EAAY,MACZC,EAAYD,EAAUxD,OAGnBkD,GAAQK,IAAWH,IACxBD,EAAUO,EAAoBR,KAKd,SAAZC,GAAsBI,EAAS,GAAKtC,EAAMqC,EAAItD,OAASyD,EAAYN,EAAQnD,QAAUqD,KAIzFC,EAAIpC,KAAKiC,GACTlC,GAAOkC,EAAQnD,OACfkD,EAAOA,EAAKS,UAGd,OAAOL,GAAIM,UAAUtC,KAAKkC,GAU5B,QAASE,GAAoBR,GAC3B,GACIW,GACAC,EACAzD,EACA0D,EACAjE,EALAwD,IAOJ,KAAKJ,IAASA,EAAKc,QACjB,MAAO,EAWT,IARAV,EAAIpC,KAAKgC,EAAKc,QAAQC,eAElBf,EAAKgB,IACPZ,EAAIpC,KAAK,IAAMgC,EAAKgB,IAGtBL,EAAYX,EAAKW,UAEbA,GAAalF,EAAWkF,GAG1B,IAFAC,EAAUD,EAAUM,MAAM,OAErBrE,EAAI,EAAGA,EAAIgE,EAAQ9D,OAAQF,IAC9BwD,EAAIpC,KAAK,IAAM4C,EAAQhE,GAI3B,IAAIsE,IAAiB,OAAQ,OAAQ,QAAS,MAE9C,KAAKtE,EAAI,EAAGA,EAAIsE,EAAcpE,OAAQF,IACpCO,EAAM+D,EAActE,GACpBiE,EAAOb,EAAKmB,aAAahE,GAErB0D,GACFT,EAAIpC,KAAK,IAAMb,EAAM,KAAO0D,EAAO,KAIvC,OAAOT,GAAIhC,KAAK,IAOlB,QAASgD,GAAgBC,EAAGC,GAC1B,WAAYD,IAAMC,GAOpB,QAASC,GAAgBF,EAAGC,GAC1B,MAAOjG,GAAcgG,IAAMhG,EAAciG,GAO3C,QAASE,GAAkBC,EAAKC,GAC9B,OAAIN,EAAgBK,EAAKC,KACzBD,EAAMA,EAAIE,OAAO,GACjBD,EAAMA,EAAIC,OAAO,GACbF,EAAIG,OAASF,EAAIE,MAAQH,EAAI1G,QAAU2G,EAAI3G,SAE3CwG,EAAgBE,EAAII,WAAYH,EAAIG,aACjCC,EAAmBL,EAAII,WAAYH,EAAIG,cAOhD,QAASC,GAAmBC,EAAQC,GAClC,GAAIZ,EAAgBW,EAAQC,GAAS,OAAO,CAC5C,IAAIC,GAAUF,EAAOG,OACjBC,EAAUH,EAAOE,MAErB,IAAID,EAAQnF,SAAWqF,EAAQrF,OAAQ,OAAO,CAI9C,KAAK,GAFDuE,GAAGC,EAEE1E,EAAI,EAAGA,EAAIqF,EAAQnF,OAAQF,IAGlC,GAFAyE,EAAIY,EAAQrF,GACZ0E,EAAIa,EAAQvF,GACRyE,EAAEe,WAAad,EAAEc,UAAYf,EAAEgB,SAAWf,EAAEe,QAAUhB,EAAEiB,QAAUhB,EAAEgB,OAASjB,EAAE,cAAgBC,EAAE,YAAa,OAAO,CAG3H,QAAO,EAWT,QAASiB,GAAOhI,EAAKiI,EAAMC,EAAaC,GACtC,GAAIC,GAAOpI,EAAIiI,EACfjI,GAAIiI,GAAQC,EAAYE,GACxBpI,EAAIiI,GAAMI,GAAY,EACtBrI,EAAIiI,GAAMK,EAAWF,EAEjBD,GACFA,EAAM1E,MAAMzD,EAAKiI,EAAMG,IAW3B,QAASG,GAASC,EAAOC,GACvB,IAAKtH,EAAUqH,GAAQ,MAAO,EAG9B,KAAK,GAFDE,MAEKrG,EAAI,EAAGA,EAAImG,EAAMjG,OAAQF,IAChC,IACEqG,EAAOjF,KAAKkF,OAAOH,EAAMnG,KACzB,MAAOb,GACPkH,EAAOjF,KAAK,gCAIhB,MAAOiF,GAAO7E,KAAK4E,GAwDrB,QAASG,KACP,MAAwB,mBAAbC,WAAiD,MAArBA,SAASC,SAAyB,GAClED,SAASC,SAASC,KAkqB3B,QAASC,GAAiBC,GACxBrJ,KAAKqI,KAAO,mBACZrI,KAAKqJ,QAAUA,EAgFjB,QAASC,KACP,OAAQ,GAAIC,MASd,QAASC,GAAqBlH,EAAUH,GACtC,MAAOsH,IAAWtH,GAAY,SAAUE,GACtC,MAAOF,GAASE,EAAMC,IACpBH,EAMN,QAASuH,KACP1J,KAAK2J,IAAgC,WAAlBxJ,EAAQyJ,QAAsBA,KAAKC,WAEtD7J,KAAK8J,GAAgBC,GAAYC,IACjChK,KAAKiK,GAAiBF,GAAYG,IAClClK,KAAKmK,EAAyB,KAC9BnK,KAAKoK,EAAY,KACjBpK,KAAKqK,EAAe,KACpBrK,KAAKsK,EAAgB,KACrBtK,KAAKuK,EAAa,KAClBvK,KAAKwK,EAAiB,KACtBxK,KAAKyK,KACLzK,KAAK0K,GAEHC,QAASC,GAAUC,gBAAkBD,GAAUC,eAAehE,GAC9DiE,OAAQ,aACRC,gBACAC,cACAC,iBACAC,gBACAC,QAAS,KACTC,qBAAqB,EACrBC,iBAAkB,EAElBC,aAAc,IACdC,gBAAiB,GACjBC,iBAAiB,EACjBC,YAAY,EACZC,WAAY,GAEd1L,KAAK2L,GACHC,OAAQ,OACRC,WAAW,EACXC,eAAgB,UAElB9L,KAAK+L,EAAiB,EACtB/L,KAAKgM,GAAoB,EACzBhM,KAAKiM,EAAgClL,MAAMwK,gBAG3CvL,KAAKkM,EAAmBtB,GAAUuB,YAClCnM,KAAKoM,KACLpM,KAAKqM,KACLrM,KAAKsM,EAAahD,IAClBtJ,KAAKuM,KACLvM,KAAKwM,KACLxM,KAAKyM,EAAqB,KAE1BzM,KAAK0M,EAAY9B,GAAU1B,SAC3BlJ,KAAK2M,EAAY3M,KAAK0M,GAAa1M,KAAK0M,EAAUvD,KAElDnJ,KAAK4M,GAGL,KAAK,GAAIhB,KAAU5L,MAAKkM,EACtBlM,KAAKoM,EAAwBR,GAAU5L,KAAKkM,EAAiBN,GA2uDjE,QAASiB,GAAc9M,EAAO+M,GAI5B,QAASC,KACP/M,KAAKgN,MAAQ,UAAW,SAAUC,GAChC,MAAOlN,KAIX,QAASmN,GAAyBC,GAChCA,EAASC,UAAU,qBAAsB,QAAS,YAAaC,IAGjE,QAASA,GAAiBC,EAAGC,GAC3B,MAAO,UAAUC,EAAIC,GACnBH,EAAEI,iBAAiBF,GACjBG,OACEF,MAAOA,KAGXF,EAAUC,EAAIC,IApBlBX,EAAUA,GAAWc,OAAOd,QACvBA,IAuBLA,EAAQlN,OAAOiO,OAAgBC,SAAS,QAASf,GAAegB,QAAQ,WAAYb,IACpFnN,EAAMiO,gBAAgBC,GAAkB,SAAU5L,GAChD,MAAOwK,GAAcqB,EAAe7L,OAiCxC,QAAS8L,GAAYpO,EAAOqO,GAG1B,GAFAA,EAAQA,GAASR,OAAOQ,MAExB,CACA,GAAIC,GAAcD,EAAME,OAExBF,GAAME,QAAU,SAAsBC,GACpCxO,EAAM2N,iBAAiBa,GAEI,kBAAhBF,IACTA,EAAYvN,KAAKd,KAAMuO,IAI3BH,EAAMI,KAAKC,GAAG,QAAS,SAAUC,GAC3BA,YAAkB3N,OACpBhB,EAAM2N,iBAAiBgB,GACrBf,OACEgB,QAAS,sCAIb5O,EAAM6O,eAAe,oCACnBjB,OACEe,OAAQA,QAiBlB,QAASG,GAAc9O,IAxpGvB,GAAI+O,GAAmC,mBAAXlB,QAAyBA,OAA2B,mBAAXnO,QAAyBA,OAAyB,mBAATsP,MAAuBA,QA0BjIC,EAAO3N,OAAO4N,gBAAkB,SAAc9K,EAAG+K,GAEnD,MADA/K,GAAEgL,EAAYD,EACP/K,GAWLrC,GARgC,gBAAZsN,UAAwBA,QAAQC,WAAa,SAAoBC,EAAQC,EAAMC,GACrG,GAAIC,GACAvI,GAAK,KAGT,OAFAA,GAAErD,KAAK6L,MAAMxI,EAAGqI,GAChBE,EAAcH,EAAOK,KAAKD,MAAMJ,EAAQpI,GACjC8H,EAAK,GAAIS,GAAeD,EAAMhP,YAGL,mBAAXoN,QAAyBA,OAAmC,mBAAnBkB,GAAiCA,EAAiC,mBAATC,MAAuBA,SA4a5Ia,GACFC,SAAUpP,EACVqP,QAASnP,EACToP,aAAc/O,EACd+I,YAAa7I,EACbuI,WAAYtI,EACZC,cAAeA,EACf4O,SAAU1O,EACV2O,QAAS1O,EACT2O,cAAe1O,EACfP,mBAAoBA,EACpBkP,cAAetO,EACfK,gBAAiBA,EACjBkO,KAAM5N,EACN6N,YAAaxN,EACbyN,SAAUnN,EACVoN,aAActN,EACduN,OAAQ5N,EACR6N,WAAYjN,EACZkN,UAAWxM,EACXyM,MAAO5L,EACP6L,iBAAkBhL,EAClBS,oBAAqBA,EACrBwK,gBAAiBxJ,EACjByJ,iBAAkBnJ,EAClBoJ,SAAUzM,EACV0M,KAAM5I,EACNO,SAAUA,GAaRsI,GACF7F,qBAAqB,EACrB8F,OAAO,GAGLC,EAA8B,mBAAXvD,QAAyBA,OAAmC,mBAAnBkB,GAAiCA,EAAiC,mBAATC,MAAuBA,QAG5IqC,KAAYC,MACZC,EAAmB,IAEnBC,EAAiB,yGA+CrBN,GAASO,OAAS,WAUhB,QAASC,GAAUC,GACjBC,IACAC,EAAS/N,KAAK6N,GAQhB,QAASG,GAAYH,GACnB,IAAK,GAAIjP,GAAImP,EAASjP,OAAS,EAAGF,GAAK,IAAKA,EACtCmP,EAASnP,KAAOiP,GAClBE,EAASE,OAAOrP,EAAG,GASzB,QAASsP,KACPC,IACAJ,KAQF,QAASK,GAAeC,EAAOC,GAC7B,GAAIC,GAAY,IAEhB,KAAID,GAAkBlB,EAAS7F,oBAA/B,CAIA,IAAK,GAAI3I,KAAKmP,GACZ,GAAIA,EAASlQ,eAAee,GAC1B,IACEmP,EAASnP,GAAGiN,MAAM,MAAOwC,GAAOG,OAAOjB,EAAOtQ,KAAKwR,UAAW,KAC9D,MAAOC,GACPH,EAAYG,EAKlB,GAAIH,EACF,KAAMA,IAkBV,QAASI,GAAsBC,EAAKlO,EAAKmO,EAAQC,EAAOnF,GACtD,GAAI0E,GAAQ,KAERE,EAAYxC,EAAMG,aAAavC,GAAMA,EAAGe,MAAQf,EAEhDnE,EAAUuG,EAAMG,aAAa0C,GAAOA,EAAIpJ,QAAUoJ,CAEtD,IAAIG,EACF3B,EAAS4B,kBAAkBC,oCAAoCF,EAAoBrO,EAAKmO,EAAQrJ,GAChG0J,QACK,IAAIX,GAAaxC,EAAME,QAAQsC,GAKpCF,EAAQjB,EAAS4B,kBAAkBT,GACnCH,EAAeC,GAAO,OACjB,CACL,GAMIc,GANA9J,GACF3E,IAAKA,EACL0O,KAAMP,EACNQ,OAAQP,GAENtK,EAAO8K,MAGX,IAAkC,uBAA3BtS,SAASC,KAAKuI,GAAgC,CACnD,GAAI2J,GAAS3J,EAAQ7E,MAAM+M,EAEvByB,KACF3K,EAAO2K,EAAO,GACd3J,EAAU2J,EAAO,IAIrB9J,EAASkK,KAAO9B,EAChBY,GACE7J,KAAMA,EACNgB,QAASA,EACT9E,IAAKyE,IACLkJ,OAAQhJ,IAEV+I,EAAeC,GAAO,GAGxB,QAAImB,GACKA,EAAmB3D,MAAM1P,KAAMsS,WAM1C,QAASX,KACH2B,IAIJD,EAAqBlC,EAAU7C,QAC/B6C,EAAU7C,QAAUkE,EACpBc,GAA2B,GAG7B,QAAStB,KACFsB,IAILnC,EAAU7C,QAAU+E,EACpBC,GAA2B,EAC3BD,EAAqBF,QAGvB,QAASJ,KACP,GAAIQ,GAAsBX,EACtBY,EAAYC,CAChBA,GAAW,KACXb,EAAqB,KACrBc,EAAgB,KAChBzB,EAAevC,MAAM,MAAO6D,GAAqB,GAAOlB,OAAOmB,IAWjE,QAAShC,GAAOhE,EAAImG,GAClB,GAAIpE,GAAO6B,EAAOtQ,KAAKwR,UAAW,EAElC,IAAIM,EAAoB,CACtB,GAAIc,IAAkBlG,EACpB,MAEAuF,KAIJ,GAAIb,GAAQjB,EAAS4B,kBAAkBrF,EAcvC,IAbAoF,EAAqBV,EACrBwB,EAAgBlG,EAChBiG,EAAWlE,EAKXqE,WAAW,WACLF,IAAkBlG,GACpBuF,KAEDb,EAAM2B,WAAa,IAAO,GAEzBF,KAAY,EACd,KAAMnG,GAhMV,GA+DI6F,GAAoBC,EA/DpB1B,KACA6B,EAAW,KACXC,EAAgB,KAChBd,EAAqB,IAoMzB,OAHApB,GAAOC,UAAYA,EACnBD,EAAOK,YAAcA,EACrBL,EAAOsC,UAAY/B,EACZP,KAuDTP,EAAS4B,kBAAoB,WA4C3B,QAASkB,GAA+BvG,GACtC,GAAwB,mBAAbA,GAAG0E,OAA0B1E,EAAG0E,MAA3C,CAcA,IAAK,GALD8B,GACAC,EACAC,EAVAC,EAAS,qIACTC,EAAQ,kIACRC,EAAQ,wHAEZC,EAAY,gDACRC,EAAa,gCACbC,EAAQhH,EAAG0E,MAAMpL,MAAM,MACvBoL,KAMKzP,GAFO,sBAAsBgS,KAAKjH,EAAGnE,SAEjC,GAAG3G,EAAI8R,EAAM7R,OAAQF,EAAIC,IAAKD,EAAG,CAC5C,GAAIwR,EAAQE,EAAOM,KAAKD,EAAM/R,IAAK,CACjC,GAAIiS,GAAWT,EAAM,IAAqC,IAA/BA,EAAM,GAAGU,QAAQ,UAExCC,EAASX,EAAM,IAAmC,IAA7BA,EAAM,GAAGU,QAAQ,OAEtCC,KAAWZ,EAAWO,EAAWE,KAAKR,EAAM,OAE9CA,EAAM,GAAKD,EAAS,GAEpBC,EAAM,GAAKD,EAAS,GAEpBC,EAAM,GAAKD,EAAS,IAGtBE,GACE3P,IAAMmQ,EAAsB,KAAXT,EAAM,GACvBb,KAAMa,EAAM,IAAM3C,EAClB/B,KAAMmF,GAAYT,EAAM,OACxBhB,KAAMgB,EAAM,IAAMA,EAAM,GAAK,KAC7Bf,OAAQe,EAAM,IAAMA,EAAM,GAAK,UAE5B,IAAIA,EAAQI,EAAMI,KAAKD,EAAM/R,IAClCyR,GACE3P,IAAK0P,EAAM,GACXb,KAAMa,EAAM,IAAM3C,EAClB/B,QACA0D,MAAOgB,EAAM,GACbf,OAAQe,EAAM,IAAMA,EAAM,GAAK,UAE5B,CAAA,KAAIA,EAAQG,EAAMK,KAAKD,EAAM/R,KAwBlC,QAvBA,IAAImS,GAASX,EAAM,IAAMA,EAAM,GAAGU,QAAQ,aAEtCC,KAAWZ,EAAWM,EAAUG,KAAKR,EAAM,MAE7CA,EAAM,GAAKD,EAAS,GACpBC,EAAM,GAAKD,EAAS,GACpBC,EAAM,GAAK,MACI,IAANxR,GAAYwR,EAAM,IAAiC,mBAApBzG,GAAGqH,eAK3C3C,EAAM,GAAGgB,OAAS1F,EAAGqH,aAAe,GAGtCX,GACE3P,IAAK0P,EAAM,GACXb,KAAMa,EAAM,IAAM3C,EAClB/B,KAAM0E,EAAM,GAAKA,EAAM,GAAGnN,MAAM,QAChCmM,KAAMgB,EAAM,IAAMA,EAAM,GAAK,KAC7Bf,OAAQe,EAAM,IAAMA,EAAM,GAAK,OAM9BC,EAAQd,MAAQc,EAAQjB,OAC3BiB,EAAQd,KAAO9B,GAGjBY,EAAMrO,KAAKqQ,GAGb,MAAKhC,GAAMvP,QAKT0F,KAAMmF,EAAGnF,KACTgB,QAASmE,EAAGnE,QACZ9E,IAAKyE,IACLkJ,MAAOA,GAPA,MAyBX,QAASY,GAAoCgC,EAAWvQ,EAAKmO,EAAQrJ,GACnE,GAAI0L,IACFxQ,IAAKA,EACL0O,KAAMP,EAGR,IAAIqC,EAAQxQ,KAAOwQ,EAAQ9B,KAAM,CAO/B,GANA6B,EAAUjB,YAAa,EAElBkB,EAAQ3B,OACX2B,EAAQ3B,KAAO9B,GAGbwD,EAAU5C,MAAMvP,OAAS,GACvBmS,EAAU5C,MAAM,GAAG3N,MAAQwQ,EAAQxQ,IAAK,CAC1C,GAAIuQ,EAAU5C,MAAM,GAAGe,OAAS8B,EAAQ9B,KACtC,OAAO,CACF,KAAK6B,EAAU5C,MAAM,GAAGe,MAAQ6B,EAAU5C,MAAM,GAAGkB,OAAS2B,EAAQ3B,KAEzE,MADA0B,GAAU5C,MAAM,GAAGe,KAAO8B,EAAQ9B,MAC3B,EAOb,MAFA6B,GAAU5C,MAAM8C,QAAQD,GACxBD,EAAUG,SAAU,GACb,EAKT,MAHEH,GAAUjB,YAAa,GAGlB,EAaT,QAASqB,GAAsC1H,EAAI2H,GAQjD,IAAK,GAHDlB,GACAmB,EALAC,EAAe,qEACfnD,KACAoD,KACAC,GAAY,EAIPC,EAAON,EAAsCO,OAAQD,IAASD,EAAWC,EAAOA,EAAKC,OAC5F,GAAID,IAAS3C,GAAqB2C,IAASvE,EAASO,OAApD,CAkBA,GAbA4D,GACE7Q,IAAK,KACL6O,KAAM9B,EACN2B,KAAM,KACNC,OAAQ,MAGNsC,EAAKnN,KACP+M,EAAKhC,KAAOoC,EAAKnN,MACR4L,EAAQoB,EAAaZ,KAAKe,EAAK3U,eACxCuU,EAAKhC,KAAOa,EAAM,IAGK,mBAAdmB,GAAKhC,KACd,IACEgC,EAAKhC,KAAOa,EAAMrL,MAAM8M,UAAU,EAAGzB,EAAMrL,MAAM+L,QAAQ,MACzD,MAAO/S,IAGP0T,EAAM,GAAKE,GACbD,GAAY,EAEZD,EAAM,GAAKE,IAAQ,EAGrBtD,EAAMrO,KAAKuR,GAGTD,GAGFjD,EAAMJ,OAAO,EAAGqD,EAGlB,IAAIQ,IACFtN,KAAMmF,EAAGnF,KACTgB,QAASmE,EAAGnE,QACZ9E,IAAKyE,IACLkJ,MAAOA,EAGT,OADAY,GAAoC6C,EAAQnI,EAAGoI,WAAapI,EAAGqI,SAAUrI,EAAGyF,MAAQzF,EAAGsI,WAAYtI,EAAGnE,SAAWmE,EAAGuI,aAC7GJ,EAST,QAAS9C,GAAkBrF,EAAI2H,GAC7B,GAAIjD,GAAQ,IACZiD,GAAiB,MAATA,EAAgB,GAAKA,CAE7B,KAGE,GAFAjD,EAAQ6B,EAA+BvG,GAGrC,MAAO0E,GAET,MAAOtQ,GACP,GAAIqP,EAASC,MACX,KAAMtP,GAIV,IAGE,GAFAsQ,EAAQgD,EAAsC1H,EAAI2H,EAAQ,GAGxD,MAAOjD,GAET,MAAOtQ,GACP,GAAIqP,EAASC,MACX,KAAMtP,GAIV,OACEyG,KAAMmF,EAAGnF,KACTgB,QAASmE,EAAGnE,QACZ9E,IAAKyE,KAMT,MAFA6J,GAAkBC,oCAAsCA,EACxDD,EAAkBkB,+BAAiCA,EAC5ClB,IAGT,IAAImD,GAAW/E,EAEXgF,EAAchW,EAAqB,SAAUL,EAAQD,GAcvD,QAASgV,GAAQuB,EAAUC,GACzB,IAAK,GAAI1T,GAAI,EAAGA,EAAIyT,EAASvT,SAAUF,EACrC,GAAIyT,EAASzT,KAAO0T,EAAQ,MAAO1T,EAGrC,UAGF,QAASoH,GAAUzJ,EAAKgW,EAAUC,EAAQC,GACxC,MAAO1M,MAAKC,UAAUzJ,EAAKmW,EAAWH,EAAUE,GAAgBD,GAIlE,QAASG,GAAe5V,GACtB,GAAI6V,IAEFvE,MAAOtR,EAAMsR,MACb7I,QAASzI,EAAMyI,QACfhB,KAAMzH,EAAMyH,KAGd,KAAK,GAAI5F,KAAK7B,GACRS,OAAOb,UAAUkB,eAAeZ,KAAKF,EAAO6B,KAC9CgU,EAAIhU,GAAK7B,EAAM6B,GAInB,OAAOgU,GAGT,QAASF,GAAWH,EAAUE,GAC5B,GAAIpE,MACAwE,IAYJ,OAVqB,OAAjBJ,IACFA,EAAgB,SAAuBtT,EAAKpC,GAC1C,MAAIsR,GAAM,KAAOtR,EACR,eAGF,eAAiB8V,EAAKrF,MAAM,EAAGsD,EAAQzC,EAAOtR,IAAQqD,KAAK,KAAO,MAItE,SAAUjB,EAAKpC,GACpB,GAAIsR,EAAMvP,OAAS,EAAG,CACpB,GAAIgU,GAAUhC,EAAQzC,EAAOlS,OAC5B2W,EAAUzE,EAAMJ,OAAO6E,EAAU,GAAKzE,EAAMrO,KAAK7D,OACjD2W,EAAUD,EAAK5E,OAAO6E,EAASC,EAAAA,EAAU5T,GAAO0T,EAAK7S,KAAKb,IAEtD2R,EAAQzC,EAAOtR,KAClBA,EAAQ0V,EAAcxV,KAAKd,KAAMgD,EAAKpC,QAGxCsR,GAAMrO,KAAKjD,EAGb,OAAmB,OAAZwV,EAAmBxV,YAAiBG,OAAQyV,EAAe5V,GAASA,EAAQwV,EAAStV,KAAKd,KAAMgD,EAAKpC,IA5DhHjB,EAAUC,EAAOD,QAAUkK,EAC3BlK,EAAQkX,aAAeN,GAsEzBnN,GAAiB5I,UAAY,GAAIO,OACjCqI,EAAiB5I,UAAUD,YAAc6I,CACzC,IAAI0N,GAAc1N,EAEd2N,EAAa,SAAoB5K,EAAS6K,EAAO7U,GACnD,GAAI8U,GAAuB9K,EAAQ6K,GAC/BE,EAAkB/K,CAEtB,IAAM6K,IAAS7K,GAAf,CAIA,GAAIgL,GAAwB,SAAVH,EAAmB,UAAYA,CAEjD7K,GAAQ6K,GAAS,WACf,GAAIzH,MAAU8B,MAAMvQ,KAAKwR,WACrBG,EAAM7C,EAAMjH,SAAS4G,EAAM,KAC3BlN,GACF2U,MAAOG,EACPrM,OAAQ,UACR6C,OACE2E,UAAW/C,GAID,YAAVyH,EACEzH,EAAK,MAAO,IAEdkD,EAAM,sBAAwB7C,EAAMjH,SAAS4G,EAAK8B,MAAM,GAAI,MAAQ,kBACpEhP,EAAKsL,MAAM2E,UAAY/C,EAAK8B,MAAM,GAClClP,GAAYA,EAASsQ,EAAKpQ,IAG5BF,GAAYA,EAASsQ,EAAKpQ,GAIxB4U,GAGFG,SAAS5W,UAAUkP,MAAM5O,KAAKmW,EAAsBC,EAAiB3H,MAKvE8H,GACFN,WAAYA,GAKVjH,EAAUF,EAAME,QAChBD,GAAWD,EAAMC,SACjBE,GAAeH,EAAMG,aACrBhG,GAAc6F,EAAM7F,YACpBN,GAAamG,EAAMnG,WACnBuG,GAAWJ,EAAMI,SACjBC,GAAUL,EAAMK,QAChBC,GAAgBN,EAAMM,cACtBE,GAAOR,EAAMQ,KACbC,GAAcT,EAAMS,YACpBC,GAAWV,EAAMU,SACjBC,GAAeX,EAAMW,aACrBC,GAASZ,EAAMY,OACfC,GAAab,EAAMa,WACnBC,GAAYd,EAAMc,UAClBC,GAAQf,EAAMe,MACdC,GAAmBhB,EAAMgB,iBACzBC,GAAkBjB,EAAMiB,gBACxBC,GAAmBlB,EAAMkB,iBACzBC,GAAWnB,EAAMmB,SACjBC,GAAOpB,EAAMoB,KACbb,GAAgBP,EAAMO,cACtBmH,GAAoBD,EAAUN,WAC9BQ,GAAU,2CAA2CzQ,MAAM,KAC3D0Q,GAAa,gEAOb5M,GAA8B,mBAAXgD,QAAyBA,OAAmC,mBAAnBkB,GAAiCA,EAAiC,mBAATC,MAAuBA,QAE5I/E,GAAYY,GAAU3B,SACtBiB,GAAaU,GAAU6M,SA4E3B/N,GAAQlJ,WAKNkX,QAAS,SACTxG,OAAO,EACPD,SAAU+E,EAUVjI,OAAQ,SAAgB4J,EAAKC,GAC3B,GAAI7I,GAAO/O,IAEX,IAAI+O,EAAKzE,EAGP,MAFAtK,MAAK6X,EAAU,QAAS,4CAEjB9I,CAGT,KAAK4I,EAAK,MAAO5I,EACjB,IAAI+I,GAAgB/I,EAAKrE,CAErBkN,IACFxH,GAAKwH,EAAS,SAAU5U,EAAKpC,GAEf,SAARoC,GAA0B,UAARA,GAA2B,SAARA,EACvC+L,EAAKtE,EAAezH,GAAOpC,EAE3BkX,EAAc9U,GAAOpC,IAK3BmO,EAAKgJ,OAAOJ,GAGZG,EAAc/M,aAAalH,KAAK,qBAChCiU,EAAc/M,aAAalH,KAAK,iDAEhCiU,EAAc/M,aAAe0F,GAAWqH,EAAc/M,cACtD+M,EAAc9M,aAAa8M,EAAc9M,WAAWrI,QAAS8N,GAAWqH,EAAc9M,YACtF8M,EAAc7M,gBAAgB6M,EAAc7M,cAActI,QAAS8N,GAAWqH,EAAc7M,eAC5F6M,EAAc5M,aAAeuF,GAAWqH,EAAc5M,cACtD4M,EAAcE,eAAiBtS,KAAKrC,IAAI,EAAGqC,KAAKuS,IAAIH,EAAcE,gBAAkB,IAAK,KAEzF,IAAIE,IACFC,KAAK,EACLhM,SAAS,EACTiM,KAAK,EACLlP,UAAU,EACVmP,QAAQ,GAEN7M,EAAkBsM,EAActM,eAEM,wBAAnC3K,SAASC,KAAK0K,GACnBA,EAAkB6E,GAAY6H,EAAwB1M,GAC7CA,KAAoB,IAC7BA,EAAkB0M,GAGpBJ,EAActM,gBAAkBA,CAChC,IAAI8M,IACFC,UAAU,GAER9M,EAAaqM,EAAcrM,UAW/B,OATqC,uBAA9B5K,SAASC,KAAK2K,GACnBA,EAAa4E,GAAYiI,EAAoB7M,GACpCA,KAAe,IACxBA,EAAa6M,GAGfR,EAAcrM,WAAaA,EAC3BuK,EAAS5K,sBAAwB0M,EAAc1M,oBAExC2D,GAWTyJ,QAAS,WACP,GAAIzJ,GAAO/O,IAqBX,OAnBI+O,GAAK0J,YAAc1J,EAAK/C,IAC1BgK,EAASxE,OAAOC,UAAU,WACxB1C,EAAK2J,EAAwBhJ,MAAMX,EAAMuD,aAG3CvD,EAAK4J,IAED5J,EAAKrE,EAAee,YAAcsD,EAAKrE,EAAee,WAAW8M,UACnExJ,EAAK6J,IAGH7J,EAAKrE,EAAec,iBAAiBuD,EAAK8J,IAE9C9J,EAAK+J,IAEL/J,EAAK/C,GAAoB,GAG3BjL,MAAMwK,gBAAkBwD,EAAKrE,EAAea,gBACrCvL,MAQT+X,OAAQ,SAAgBJ,GACtB,GAAI5I,GAAO/O,KACP+Y,EAAMhK,EAAKiK,EAAUrB,GACrBsB,EAAYF,EAAIlU,KAAKqU,YAAY,KACjCrU,EAAOkU,EAAIlU,KAAKvB,OAAO,EAAG2V,EAE9BlK,GAAKoK,EAAOxB,EACZ5I,EAAKxE,EAAawO,EAAIK,KACtBrK,EAAKsK,EAAgBN,EAAIO,MAAQP,EAAIO,KAAKhW,OAAO,GACjDyL,EAAKvE,EAAiBuO,EAAIlU,KAAKvB,OAAO2V,EAAY,GAClDlK,EAAKzE,EAAgByE,EAAKwK,EAAiBR,GAC3ChK,EAAKyK,EAAkBzK,EAAKzE,EAAgB,IAAMzF,EAAO,OAASkK,EAAKvE,EAAiB,UAGxFxK,KAAK4M,KAWP+B,QAAS,SAAiBiJ,EAASxE,EAAM7D,GAOvC,MANI9F,IAAWmO,KACbrI,EAAO6D,MACPA,EAAOwE,EACPA,EAAUzE,QAGLnT,KAAKyZ,KAAK7B,EAASxE,GAAM1D,MAAM1P,KAAMuP,IAW9CkK,KAAM,SAAc7B,EAASxE,EAAMsG,GAqCjC,QAASC,KACP,GAAIpK,MACA9M,EAAI6P,UAAU3P,OACdiX,GAAQhC,GAAWA,GAAWA,EAAQgC,QAAS,CAQnD,KANIF,GAAWjQ,GAAWiQ,IACxBA,EAAQhK,MAAM1P,KAAMsS,WAKf7P,KACL8M,EAAK9M,GAAKmX,EAAO7K,EAAK0K,KAAK7B,EAAStF,UAAU7P,IAAM6P,UAAU7P,EAGhE,KAKE,MAAO2Q,GAAK1D,MAAM1P,KAAMuP,GACxB,MAAO3N,GAIP,KAHAmN,GAAK8K,IAEL9K,EAAKrB,iBAAiB9L,EAAGgW,GACnBhW,GA7DV,GAAImN,GAAO/O,IAGX,IAAI+J,GAAYqJ,KAAU3J,GAAWmO,GACnC,MAAOA,EAWT,IAPInO,GAAWmO,KACbxE,EAAOwE,EACPA,EAAUzE,SAKP1J,GAAW2J,GACd,MAAOA,EAIT,KACE,GAAIA,EAAK3K,EACP,MAAO2K,EAIT,IAAIA,EAAK0G,EACP,MAAO1G,GAAK0G,EAEd,MAAOlY,GAIP,MAAOwR,GAiCT,IAAK,GAAI2G,KAAY3G,GACf5C,GAAO4C,EAAM2G,KACfJ,EAAQI,GAAY3G,EAAK2G,GAU7B,OANAJ,GAAQnZ,UAAY4S,EAAK5S,UACzB4S,EAAK0G,EAAoBH,EAGzBA,EAAQlR,GAAY,EACpBkR,EAAQjR,EAAW0K,EACZuG,GAQT7F,UAAW,WAWT,MAVAkC,GAASxE,OAAOsC,YAEhB9T,KAAKga,IAELha,KAAKia,IAELja,KAAKka,IAELnZ,MAAMwK,gBAAkBvL,KAAKiM,EAC7BjM,KAAKgM,GAAoB,EAClBhM,MAUT0N,iBAAkB,SAA0BF,EAAIoK,GAC9CA,EAAUvH,IACR8J,eAAgB,GACfvC,EAAUA,KAEb,IAAIwC,IAActK,EAAQtC,GACtB6M,GAAmBtK,GAAavC,GAChC8M,EAA2BvK,GAAavC,KAAQA,EAAGe,KAEvD,IAAI6L,GAAcC,GAAmBC,EACnC,MAAOta,MAAK4O,eAAepB,EAAI6C,GAAYuH,GACzClQ,YAAY,EAEZyS,eAAgBvC,EAAQuC,eAAiB,IAKzCpK,IAAavC,KAAKA,EAAKA,EAAGe,OAE9BvO,KAAKmK,EAAyBqD,CAM9B,KACE,GAAI0E,GAAQ8D,EAASnD,kBAAkBrF,EAEvCxN,MAAKua,EAAiBrI,EAAO0F,GAC7B,MAAOtQ,GACP,GAAIkG,IAAOlG,EACT,KAAMA,GAIV,MAAOtH,OAUT4O,eAAgB,SAAwB6D,EAAKmF,GAI3C,IAAM5X,KAAK0K,EAAeK,aAAayP,OAAQxa,KAAK0K,EAAeK,aAAayP,KAAK/H,GAArF,CAIAmF,EAAUA,KACV,IAIIpK,GAJAnL,EAAOgO,IACThH,QAASoJ,EAAM,IAEdmF,EAMH,KACE,KAAM,IAAI7W,OAAM0R,GAChB,MAAOnL,GACPkG,EAAKlG,EAIPkG,EAAGnF,KAAO,IACV,IAAI6J,GAAQ8D,EAASnD,kBAAkBrF,GAEnCiN,EAAcxK,GAAQiC,EAAMA,QAAUA,EAAMA,MAAM,GAClDwI,EAAUD,GAAeA,EAAYlW,KAAO,EAEhD,MAAMvE,KAAK0K,EAAeM,WAAWwP,OAAQxa,KAAK0K,EAAeM,WAAWwP,KAAKE,OAI3E1a,KAAK0K,EAAeO,cAAcuP,MAASxa,KAAK0K,EAAeO,cAAcuP,KAAKE,IAAxF,CAIA,GAAI1a,KAAK0K,EAAehD,YAAckQ,GAAWA,EAAQlQ,WAAY,CACnEkQ,EAAUvH,IAGRsK,YAAalI,EAIb0H,gBAAiBvC,EAAQuC,gBAAkB,GAAK,GAC/CvC,EAEH,IAAI7P,GAAS/H,KAAK4a,EAAe1I,EAAO0F,EAExCvV,GAAKqF,YAEHK,OAAQA,EAAOxB,WAOnB,MAFAvG,MAAK6a,EAAMxY,GAEJrC,QAET8a,kBAAmB,SAA2B1a,GAC5C,GAAI2a,GAAQ1K,IACV2K,UAAW1R,IAAQ,KAClBlJ,EAEH,IAAIqJ,GAAWzJ,KAAK0K,EAAeuQ,oBAAqB,CACtD,GAAItF,GAAS3V,KAAK0K,EAAeuQ,mBAAmBF,EAEpD,IAAIlL,GAAS8F,KAAYzF,GAAcyF,GACrCoF,EAAQpF,MACH,IAAIA,KAAW,EACpB,MAAO3V,MAUX,MANAA,MAAKwM,EAAa3I,KAAKkX,GAEnB/a,KAAKwM,EAAa7J,OAAS3C,KAAK0K,EAAesN,gBACjDhY,KAAKwM,EAAa0O,QAGblb,MAETmb,UAAW,SAAmBC,GAG5B,GAAIC,MAAgBhK,MAAMvQ,KAAKwR,UAAW,EAQ1C,OANAtS,MAAKqM,EAASxI,MAAMuX,EAAQC,IAExBrb,KAAKgM,GACPhM,KAAK8Y,IAGA9Y,MASTsb,eAAgB,SAAwBlC,GAGtC,MADApZ,MAAKyK,EAAe2O,KAAOA,EACpBpZ,MASTub,gBAAiB,SAAyB5N,GAGxC,MAFA3N,MAAKwb,EAAc,QAAS7N,GAErB3N,MASTyb,eAAgB,SAAwBC,GAGtC,MAFA1b,MAAKwb,EAAc,OAAQE,GAEpB1b,MAQT2b,aAAc,WAEZ,MADA3b,MAAKyK,KACEzK,MAQT4b,WAAY,WAEV,MAAOhS,MAAKiS,MAAM5F,EAAYjW,KAAKyK,KASrCqR,eAAgB,SAAwBC,GAEtC,MADA/b,MAAK0K,EAAeqR,YAAcA,EAC3B/b,MASTgc,WAAY,SAAoBrR,GAE9B,MADA3K,MAAK0K,EAAeC,QAAUA,EACvB3K,MAUTgO,gBAAiB,SAAyB7L,GACxC,GAAIG,GAAWtC,KAAK0K,EAAetI,YAEnC,OADApC,MAAK0K,EAAetI,aAAeoH,EAAqBlH,EAAUH,GAC3DnC,MAUTic,sBAAuB,SAA+B9Z,GACpD,GAAIG,GAAWtC,KAAK0K,EAAeuQ,kBAEnC,OADAjb,MAAK0K,EAAeuQ,mBAAqBzR,EAAqBlH,EAAUH,GACjEnC,MAUTkc,sBAAuB,SAA+B/Z,GACpD,GAAIG,GAAWtC,KAAK0K,EAAeyR,kBAEnC,OADAnc,MAAK0K,EAAeyR,mBAAqB3S,EAAqBlH,EAAUH,GACjEnC,MAYToc,aAAc,SAAsBC,GAElC,MADArc,MAAK0K,EAAe2R,UAAYA,EACzBrc,MAQT0T,cAAe,WACb,MAAO1T,MAAKmK,GAQdmS,YAAa,WACX,MAAOtc,MAAKqK,GAQdoO,QAAS,WACP,QAAKzY,KAAK2J,MAEL3J,KAAKsK,IACHtK,KAAKuc,0BACRvc,KAAKuc,yBAA0B,EAE/Bvc,KAAK6X,EAAU,QAAS,2CAGnB,KAKX2E,UAAW,WAGT,GAAIC,GAAc7R,GAAU6R,WAExBA,IACFzc,KAAK+N,OAAO0O,EAAY9E,IAAK8E,EAAY1O,QAAQyK,WAGrDkE,iBAAkB,SAA0B9E,GAC1C,GAAK5N,GAAL,CAEA4N,EAAUA,KACV,IAAI0E,GAAc1E,EAAQ+E,SAAW3c,KAAKsc,aAE1C,KAAKA,EACH,KAAM,IAAIxF,GAAY,kBAGxB,IAAIa,GAAMC,EAAQD,KAAO3X,KAAKmZ,CAE9B,KAAKxB,EACH,KAAM,IAAIb,GAAY,cAGxB,IAAI8F,GAASvY,mBACTwY,EAAK,EACTA,IAAM,YAAcD,EAAON,GAC3BO,GAAM,QAAUD,EAAOjF,EACvB,IAAIyB,GAAOxB,EAAQwB,MAAQpZ,KAAKyK,EAAe2O,IAE3CA,KACEA,EAAK/Q,OAAMwU,GAAM,SAAWD,EAAOxD,EAAK/Q,OACxC+Q,EAAK0D,QAAOD,GAAM,UAAYD,EAAOxD,EAAK0D,QAGhD,IAAIC,GAAe/c,KAAKuZ,EAAiBvZ,KAAKgZ,EAAUrB,IAEpDqF,EAAShT,GAAUiT,cAAc,SAErCD,GAAOE,OAAQ,EACfF,EAAOG,IAAMJ,EAAe,yBAA2BF,GAEtD7S,GAAUoT,MAAQpT,GAAUqT,MAAMC,YAAYN,KAIjDO,EAAoB,WAClB,GAAIxO,GAAO/O,IACXA,MAAK+L,GAAkB,EACvB6H,WAAW,WAET7E,EAAKhD,GAAkB,KAG3ByR,EAAe,SAAuBC,EAAW7F,GAE/C,GAAI8F,GAAK1a,CACT,IAAKhD,KAAK8J,EAAV,CACA8N,EAAUA,MACV6F,EAAY,QAAUA,EAAUna,OAAO,EAAG,GAAGqa,cAAgBF,EAAUna,OAAO,GAE1E0G,GAAU4T,aACZF,EAAM1T,GAAU4T,YAAY,cAC5BF,EAAIG,UAAUJ,GAAW,GAAM,KAE/BC,EAAM1T,GAAU8T,oBAChBJ,EAAID,UAAYA,EAGlB,KAAKza,IAAO4U,GACNpH,GAAOoH,EAAS5U,KAClB0a,EAAI1a,GAAO4U,EAAQ5U,GAIvB,IAAIgH,GAAU4T,YAEZ5T,GAAU+T,cAAcL,OAIxB,KACE1T,GAAUgU,UAAU,KAAON,EAAID,UAAU7W,cAAe8W,GACxD,MAAO9b,OAWbqc,EAAyB,SAAiCC,GACxD,GAAInP,GAAO/O,IACX,OAAO,UAAU0d,GAQf,GAJA3O,EAAKoP,EAAmB,KAIpBpP,EAAKtC,IAAuBiR,EAAhC,CACA3O,EAAKtC,EAAqBiR,CAK1B,IAAIU,EAEJ,KACEA,EAASxN,GAAiB8M,EAAIU,QAC9B,MAAOxc,GACPwc,EAAS,YAGXrP,EAAK+L,mBACHuD,SAAU,MAAQH,EAElB7U,QAAS+U,OAUfE,EAAuB,WACrB,GAAIvP,GAAO/O,KACPue,EAAmB,GAKvB,OAAO,UAAUb,GACf,GAAIU,EAEJ,KACEA,EAASV,EAAIU,OACb,MAAOxc,GAGP,OAGF,GAAI+E,GAAUyX,GAAUA,EAAOzX,OAI/B,IAAKA,IAAuB,UAAZA,GAAmC,aAAZA,GAA2ByX,EAAOI,mBAAzE,CAGA,GAAIC,GAAU1P,EAAKoP,CAEdM,IACH1P,EAAK2P,EAAwB,SAAShB,GAGxCiB,aAAaF,GACb1P,EAAKoP,EAAmBvK,WAAW,WACjC7E,EAAKoP,EAAmB,MACvBI,MAUP9c,EAAmB,SAA2Bmd,EAAMC,GAClD,GAAIC,GAAY/N,GAAS/Q,KAAK0M,EAAUvD,MACpC4V,EAAWhO,GAAS8N,GACpBG,EAAajO,GAAS6N,EAI1B5e,MAAK2M,EAAYkS,EAGbC,EAAUna,WAAaoa,EAASpa,UAAYma,EAAUla,OAASma,EAASna,OAAMia,EAAKE,EAASja,UAC5Fga,EAAUna,WAAaqa,EAAWra,UAAYma,EAAUla,OAASoa,EAAWpa,OAAMga,EAAOI,EAAWla,UACxG9E,KAAK8a,mBACHuD,SAAU,aACVhc,MACEwc,GAAIA,EACJD,KAAMA,MAIZK,EAAwB,WACtB,GAAIlQ,GAAO/O,IACX+O,GAAKmQ,GAA4B9H,SAAS5W,UAAUK,SAEpDuW,SAAS5W,UAAUK,SAAW,WAC5B,MAAoB,kBAATb,OAAuBA,KAAKyI,EAC9BsG,EAAKmQ,GAA0BxP,MAAM1P,KAAK0I,EAAU4J,WAGtDvD,EAAKmQ,GAA0BxP,MAAM1P,KAAMsS,aAGtD6M,EAA0B,WACpBnf,KAAKkf,KAEP9H,SAAS5W,UAAUK,SAAWb,KAAKkf,KAQvCE,EAAqB,WAInB,QAASC,GAAW7W,GAClB,MAAO,UAAUtI,EAAIof,GAMnB,IAAK,GAFD/P,GAAO,GAAIgQ,OAAMjN,UAAU3P,QAEtBF,EAAI,EAAGA,EAAI8M,EAAK5M,SAAUF,EACjC8M,EAAK9M,GAAK6P,UAAU7P,EAGtB,IAAI+c,GAAmBjQ,EAAK,EAS5B,OAPI9F,IAAW+V,KACbjQ,EAAK,GAAKR,EAAK0K,KAAK+F,IAMlBhX,EAAKkH,MACAlH,EAAKkH,MAAM1P,KAAMuP,GAEjB/G,EAAK+G,EAAK,GAAIA,EAAK,KAOhC,QAASkQ,GAAgBhgB,GACvB,GAAIigB,GAAQ9U,GAAUnL,IAAWmL,GAAUnL,GAAQe,SAE/Ckf,IAASA,EAAMhe,gBAAkBge,EAAMhe,eAAe,sBACxDsP,GAAK0O,EAAO,mBAAoB,SAAUlX,GACxC,MAAO,UAAU0V,EAAShe,EAAIyf,EAASC,GAErC,IACM1f,GAAMA,EAAG2f,cACX3f,EAAG2f,YAAc9Q,EAAK0K,KAAKvZ,EAAG2f,cAEhC,MAAOpJ,IAKT,GAAIqJ,GAAQC,EAAcC,CA2B1B,OAzBIxU,IAAmBA,EAAgB4M,MAAmB,gBAAX3Y,GAAuC,SAAXA,KAGzEsgB,EAAehR,EAAK2P,EAAwB,SAC5CsB,EAAkBjR,EAAKkR,IAEvBH,EAAS,SAAgBpC,GAIvB,GAAKA,EAAL,CACA,GAAID,EAEJ,KACEA,EAAYC,EAAIjW,KAChB,MAAO7F,GAGP,OAGF,MAAkB,UAAd6b,EAA8BsC,EAAarC,GAA4B,aAAdD,EAAiCuC,EAAgBtC,GAArD,UAItDlV,EAAK1H,KAAKd,KAAMke,EAASnP,EAAK0K,KAAKvZ,EAAIiT,OAAW2M,GAASH,EAASC,KAE5EM,GACHlP,GAAK0O,EAAO,sBAAuB,SAAUlX,GAC3C,MAAO,UAAUkV,EAAKxd,EAAIyf,EAASC,GACjC,IACE1f,EAAKA,IAAOA,EAAG4Z,EAAoB5Z,EAAG4Z,EAAoB5Z,GAC1D,MAAO0B,IAGT,MAAO4G,GAAK1H,KAAKd,KAAM0d,EAAKxd,EAAIyf,EAASC,KAE1CM,IAxFP,GAAInR,GAAO/O,KACPkgB,EAAkBnR,EAAKxC,EA8BvBf,EAAkBxL,KAAK0K,EAAec,eA6D1CwF,IAAKpG,GAAW,aAAcyU,EAAYa,GAC1ClP,GAAKpG,GAAW,cAAeyU,EAAYa,GAEvCtV,GAAUuV,uBACZnP,GAAKpG,GAAW,wBAAyB,SAAUpC,GACjD,MAAO,UAAU4X,GACf,MAAO5X,GAAKuG,EAAK0K,KAAK2G,MAEvBF,EAOL,KAAK,GAFDG,IAAgB,cAAe,SAAU,OAAQ,mBAAoB,iBAAkB,oBAAqB,kBAAmB,cAAe,aAAc,qBAAsB,cAAe,aAAc,iBAAkB,eAAgB,kBAAmB,cAAe,cAAe,eAAgB,qBAAsB,SAAU,YAAa,eAAgB,gBAAiB,YAAa,kBAAmB,SAAU,iBAAkB,4BAA6B,wBAEpd5d,EAAI,EAAGA,EAAI4d,EAAa1d,OAAQF,IACvCgd,EAAgBY,EAAa5d,KAajC6d,EAAwB,WAKtB,QAASC,GAASC,EAAMrI,GAClBqI,IAAQrI,IAAO1O,GAAW0O,EAAIqI,KAChCxP,GAAKmH,EAAKqI,EAAM,SAAUhY,GACxB,MAAOuG,GAAK0K,KAAKjR,KAPvB,GAAIuG,GAAO/O,KACPwL,EAAkBxL,KAAK0K,EAAec,gBACtC0U,EAAkBnR,EAAKxC,CAU3B,IAAIf,EAAgB2M,KAAO,kBAAoBvN,IAAW,CACxD,GAAI6V,GAAWC,eAAelgB,SAC9BwQ,IAAKyP,EAAU,OAAQ,SAAUE,GAC/B,MAAO,UAAU/U,EAAQrH,GAWvB,MARIyL,IAASzL,IAAQA,EAAIoQ,QAAQ5F,EAAKxE,UACpCvK,KAAK4gB,IACHhV,OAAQA,EACRrH,IAAKA,EACLsc,YAAa,OAIVF,EAASjR,MAAM1P,KAAMsS,aAE7B4N,GACHlP,GAAKyP,EAAU,OAAQ,SAAUK,GAC/B,MAAO,YAIL,QAASC,KACP,GAAI5I,EAAIyI,IAAkC,IAAnBzI,EAAI6I,WAAkB,CAC3C,IAGE7I,EAAIyI,GAAYC,YAAc1I,EAAI8I,OAClC,MAAOrf,IAITmN,EAAK+L,mBACHrT,KAAM,OACN4W,SAAU,MACVhc,KAAM8V,EAAIyI,MAOhB,IAAK,GAtBDzI,GAAMnY,KAoBNkhB,GAAS,SAAU,UAAW,cAEzBxe,EAAI,EAAGA,EAAIwe,EAAMve,OAAQD,IAChC6d,EAASW,EAAMxe,GAAIyV,EAerB,OAZI,sBAAwBA,IAAO1O,GAAW0O,EAAIgJ,oBAChDnQ,GAAKmH,EAAK,qBAAsB,SAAU3P,GACxC,MAAOuG,GAAK0K,KAAKjR,EAAM2K,OAAW4N,KAOpC5I,EAAIgJ,mBAAqBJ,EAGpBD,EAASpR,MAAM1P,KAAMsS,aAE7B4N,GAGD1U,EAAgB2M,KAAOhI,MACzBa,GAAKpG,GAAW,QAAS,SAAUwW,GACjC,MAAO,YAML,IAAK,GAFD7R,GAAO,GAAIgQ,OAAMjN,UAAU3P,QAEtBF,EAAI,EAAGA,EAAI8M,EAAK5M,SAAUF,EACjC8M,EAAK9M,GAAK6P,UAAU7P,EAGtB,IAEI8B,GAFA8c,EAAa9R,EAAK,GAClB3D,EAAS,KAgBb,IAb0B,gBAAfyV,GACT9c,EAAM8c,EACG,WAAazW,KAAayW,YAAsBzW,IAAU5I,SACnEuC,EAAM8c,EAAW9c,IAEb8c,EAAWzV,SACbA,EAASyV,EAAWzV,SAGtBrH,EAAM,GAAK8c,EAIT9c,EAAIoQ,QAAQ5F,EAAKxE,QACnB,MAAO6W,GAAU1R,MAAM1P,KAAMuP,EAG3BA,GAAK,IAAMA,EAAK,GAAG3D,SACrBA,EAAS2D,EAAK,GAAG3D,OAGnB,IAAI0V,IACF1V,OAAQA,EACRrH,IAAKA,EACLsc,YAAa,KAEf,OAAOO,GAAU1R,MAAM1P,KAAMuP,GAAMgS,KAAK,SAAUC,GAOhD,MANAF,GAAUT,YAAcW,EAASP,OACjClS,EAAK+L,mBACHrT,KAAM,OACN4W,SAAU,QACVhc,KAAMif,IAEDE,MAGVtB,GAKD1U,EAAgB4M,KAAOpY,KAAK8J,IAC1BE,GAAUyX,kBACZzX,GAAUyX,iBAAiB,QAAS1S,EAAK2P,EAAwB,UAAU,GAE3E1U,GAAUyX,iBAAiB,WAAY1S,EAAKkR,KAAyB,KAGrEjW,GAAU0X,YAAY,UAAW3S,EAAK2P,EAAwB,UAE9D1U,GAAU0X,YAAY,aAAc3S,EAAKkR,MAQ7C,IAAI9L,GAASvJ,GAAUuJ,OACnBwN,EAAsBxN,GAAUA,EAAOyN,KAAOzN,EAAOyN,IAAIC,QACzDC,GAA0BH,GAAuB/W,GAAUmX,SAAWA,QAAQC,WAAaD,QAAQE,YAEvG,IAAIzW,EAAgBtC,UAAY4Y,EAAwB,CAEtD,GAAII,GAAgBtX,GAAUuX,UAE9BvX,IAAUuX,WAAa,WACrB,GAAIC,GAAcrT,EAAKrC,EAAUvD,IAIjC,IAFA4F,EAAKsT,EAAkBtT,EAAKpC,EAAWyV,GAEnCF,EACF,MAAOA,GAAcxS,MAAM1P,KAAMsS,WAIrC,IAAIgQ,GAA6B,SAAoCC,GAGnE,MAAO,YAGL,GAAIhe,GAAM+N,UAAU3P,OAAS,EAAI2P,UAAU,GAAKa,MAOhD,OALI5O,IAEFwK,EAAKsT,EAAkBtT,EAAKpC,EAAWpI,EAAM,IAGxCge,EAAiB7S,MAAM1P,KAAMsS,YAIxCtB,IAAK+Q,QAAS,YAAaO,EAA4BpC,GACvDlP,GAAK+Q,QAAS,eAAgBO,EAA4BpC,GAG5D,GAAI1U,EAAgBW,SAAW,WAAavB,KAAauB,QAAQqW,IAAK,CAEpE,GAAIC,GAAwB,SAA+BhQ,EAAKpQ,GAC9D0M,EAAK+L,mBACHzR,QAASoJ,EACTuE,MAAO3U,EAAK2U,MACZqH,SAAU,YAIdjO,KAAM,QAAS,OAAQ,OAAQ,QAAS,OAAQ,SAAU3O,EAAGuV,GAC3DM,GAAkBnL,QAAS6K,EAAOyL,OAIxCnV,EAAkB,WAIhB,IAFA,GAAIoV,GAEG1iB,KAAKuM,EAAiB5J,QAAQ,CACnC+f,EAAU1iB,KAAKuM,EAAiB2O,OAChC,IAAI9a,GAAMsiB,EAAQ,GACdra,EAAOqa,EAAQ,GACfla,EAAOka,EAAQ,EACnBtiB,GAAIiI,GAAQG,IAGhBma,EAAiB,WAEf,IAAK,GAAI/W,KAAU5L,MAAKoM,EACtBpM,KAAKkM,EAAiBN,GAAU5L,KAAKoM,EAAwBR,IAGjEgX,EAAe,WACb,GAAI7T,GAAO/O,IAEXoQ,IAAKpQ,KAAKqM,EAAU,SAAU5K,EAAG2Z,GAC/B,GAAIyH,GAAYzH,EAAO,GACnB7L,EAAO6L,EAAO,EAClByH,GAAUnT,MAAMX,GAAOA,GAAMsD,OAAO9C,OAGxCuT,EAAW,SAAmB1f,GAC5B,GAAI2f,GAAIvL,GAAW/C,KAAKrR,GACpBuU,KACAlV,EAAI,CAER,KACE,KAAOA,KACLkV,EAAIJ,GAAQ9U,IAAMsgB,EAAEtgB,IAAM,GAE5B,MAAOb,GACP,KAAM,IAAIkV,GAAY,gBAAkB1T,GAG1C,GAAIuU,EAAI2B,OAAStZ,KAAK0K,EAAesY,eACnC,KAAM,IAAIlM,GAAY,iFAGxB,OAAOa,IAETsL,EAAkB,SAA0BlK,GAE1C,GAAIgE,GAAe,KAAOhE,EAAInU,MAAQmU,EAAImK,KAAO,IAAMnK,EAAImK,KAAO,GAMlE,OAJInK,GAAIpU,WACNoY,EAAehE,EAAIpU,SAAW,IAAMoY,GAG/BA,GAEToG,EAAyB,WAElBnjB,KAAK+L,GACR/L,KAAKua,EAAiB7K,MAAM1P,KAAMsS,YAGtC8Q,EAAkB,SAA0BtO,EAAW8C,GACrD,GAAI7P,GAAS/H,KAAK4a,EAAe9F,EAAW8C,EAE5C5X,MAAKqjB,EAAc,UACjBvO,UAAWA,EACX8C,QAASA,IAGX5X,KAAKsjB,GAAkBxO,EAAUzM,KAAMyM,EAAUzL,QAASyL,EAAUvQ,IAAKuQ,EAAU5M,OAAQH,EAAQ6P,IAErG2L,EAAgB,SAAwBzO,EAAW8C,GACjD,GAAI7I,GAAO/O,KACP+H,IAEJ,IAAI+M,EAAU5C,OAAS4C,EAAU5C,MAAMvP,SACrCyN,GAAK0E,EAAU5C,MAAO,SAAUzP,EAAGyP,GACjC,GAAIsR,GAAQzU,EAAK0U,GAAgBvR,EAAO4C,EAAUvQ,IAE9Cif,IACFzb,EAAOlE,KAAK2f,KAIZ5L,GAAWA,EAAQuC,gBACrB,IAAK,GAAIzX,GAAI,EAAGA,EAAIkV,EAAQuC,gBAAkBzX,EAAIqF,EAAOpF,OAAQD,IAC/DqF,EAAOrF,GAAGghB,QAAS,CAMzB,OADA3b,GAASA,EAAOsJ,MAAM,EAAGrR,KAAK0K,EAAea,kBAG/CoY,GAAiB,SAAyBH,EAAOI,GAE/C,GAAIC,IACF5b,SAAUub,EAAMjf,IAChB2D,OAAQsb,EAAMvQ,KACd9K,MAAOqb,EAAMtQ,OACb4Q,WAAUN,EAAMpQ,MAAQ,IAgB1B,OATKoQ,GAAMjf,MACTsf,EAAW5b,SAAW2b,GAGxBC,EAAWH,SAET1jB,KAAK0K,EAAeQ,aAAasP,OAASxa,KAAK0K,EAAeQ,aAAasP,KAAKqJ,EAAW5b,WAC7F,qBAAqBuS,KAAKqJ,EAAW,cACrC,qBAAqBrJ,KAAKqJ,EAAW5b,WAC9B4b,GAETE,GAAmB,SAA2Btc,EAAM4B,EAASqR,EAASxS,EAAQH,EAAQ6P,GACpF,GAAIoM,IAAmBvc,EAAOA,EAAO,KAAO,KAAO4B,GAAW,GAE9D,KAAMrJ,KAAK0K,EAAeK,aAAayP,OAASxa,KAAK0K,EAAeK,aAAayP,KAAKnR,KAAYrJ,KAAK0K,EAAeK,aAAayP,KAAKwJ,GAAxI,CAIA,GAAItc,EAoBJ,IAlBIK,GAAUA,EAAOpF,QACnB+X,EAAU3S,EAAO,GAAGE,UAAYyS,EAGhC3S,EAAOxB,UACPmB,GACEK,OAAQA,IAED2S,IACThT,GACEK,SACEE,SAAUyS,EACVxS,OAAQA,EACRwb,QAAQ,QAKR1jB,KAAK0K,EAAeM,WAAWwP,OAAQxa,KAAK0K,EAAeM,WAAWwP,KAAKE,OAI3E1a,KAAK0K,EAAeO,cAAcuP,MAASxa,KAAK0K,EAAeO,cAAcuP,KAAKE,IAAxF,CAIA,GAAIrY,GAAOgO,IAET+B,WACE5K,SACEC,KAAMA,EACN7G,MAAOyI,EACP3B,WAAYA,KAGhBuc,QAASvJ,GACR9C,EAEH5X,MAAK6a,EAAMxY,MAEb6hB,GAAa,SAAqB7hB,GAGhC,GAAIgB,GAAMrD,KAAK0K,EAAeW,gBAM9B,IAJIhJ,EAAKgH,UACPhH,EAAKgH,QAAUiH,GAASjO,EAAKgH,QAAShG,IAGpChB,EAAK+P,UAAW,CAClB,GAAIA,GAAY/P,EAAK+P,UAAU5K,OAAO,EACtC4K,GAAUxR,MAAQ0P,GAAS8B,EAAUxR,MAAOyC,GAG9C,GAAI8gB,GAAU9hB,EAAK8hB,OAanB,OAXIA,KACEA,EAAQ5f,MACV4f,EAAQ5f,IAAM+L,GAAS6T,EAAQ5f,IAAKvE,KAAK0K,EAAeY,eAGtD6Y,EAAQC,UACVD,EAAQC,QAAU9T,GAAS6T,EAAQC,QAASpkB,KAAK0K,EAAeY,gBAIhEjJ,EAAKgiB,aAAehiB,EAAKgiB,YAAY7c,QAAQxH,KAAKskB,GAAiBjiB,EAAKgiB,aACrEhiB,GAMTkiB,GAAkB,SAA0BF,GAQ1C,IAAK,GAJDG,GACAzJ,EACA1Y,EAHAoiB,GAAY,KAAM,OAAQ,OAKrBhiB,EAAI,EAAGA,EAAI4hB,EAAY7c,OAAO7E,SAAUF,EAE/C,GADAsY,EAAQsJ,EAAY7c,OAAO/E,GACtBsY,EAAMrZ,eAAe,SAAYmO,GAASkL,EAAM1Y,QAASkO,GAAawK,EAAM1Y,MAAjF,CACAA,EAAOgO,MAAgB0K,EAAM1Y,KAE7B,KAAK,GAAIK,GAAI,EAAGA,EAAI+hB,EAAS9hB,SAAUD,EACrC8hB,EAAUC,EAAS/hB,GAEfL,EAAKX,eAAe8iB,IAAYniB,EAAKmiB,KACvCniB,EAAKmiB,GAAWlU,GAASjO,EAAKmiB,GAAUxkB,KAAK0K,EAAeY,cAIhE+Y,GAAY7c,OAAO/E,GAAGJ,KAAOA,IAGjCqiB,GAAc,WACZ,GAAK1kB,KAAKiK,GAAkBjK,KAAK8J,EAAjC,CACA,GAAI6a,KAkBJ,OAhBI3kB,MAAKiK,GAAiBC,GAAW0a,YACnCD,EAASxZ,SACP0Z,aAAcpN,UAAUmN,YAKxBha,GAAU1B,UAAY0B,GAAU1B,SAASC,OAC3Cwb,EAASpgB,IAAMqG,GAAU1B,SAASC,MAGhCnJ,KAAK8J,GAAgBE,GAAU8a,WAC5BH,EAASxZ,UAASwZ,EAASxZ,YAChCwZ,EAASxZ,QAAQiZ,QAAUpa,GAAU8a,UAGhCH,IAETI,EAAe,WACb/kB,KAAKglB,GAAmB,EACxBhlB,KAAKilB,GAAgB,MAEvBC,GAAgB,WACd,MAAOllB,MAAKglB,IAAoB1b,IAAQtJ,KAAKilB,GAAgBjlB,KAAKglB,IAYpEG,GAAe,SAAuBC,GACpC,GAAIC,GAAOrlB,KAAKoK,CAChB,UAAKib,GAAQD,EAAQ/b,UAAYgc,EAAKhc,SACtC+b,EAAQnB,UAAYoB,EAAKpB,WAGrBmB,EAAQ1d,YAAc2d,EAAK3d,WACtBoJ,GAAiBsU,EAAQ1d,WAAY2d,EAAK3d,aACxC0d,EAAQhT,YAAaiT,EAAKjT,WAE5BvB,GAAgBuU,EAAQhT,UAAWiT,EAAKjT,aAKnDkT,GAAkB,SAA0BnB,GAE1C,IAAInkB,KAAKulB,KAAT,CAIA,GAAItE,GAASkD,EAAQlD,MAIrB,IAAiB,MAAXA,GAA6B,MAAXA,GAA6B,MAAXA,EAA1C,CACA,GAAIuE,EAEJ,KAIIA,EADErV,KACMgU,EAAQhZ,QAAQsa,IAAI,eAEpBtB,EAAQuB,kBAAkB,eAIpCF,EAA8B,IAAtBG,SAASH,EAAO,IACxB,MAAO5jB,IAIT5B,KAAKglB,GAAmBQ,EACxBA,EACwB,EAAxBxlB,KAAKglB,IAAwB,IAC7BhlB,KAAKilB,GAAgB3b,OAEvBsc,EAAO,SAAevjB,GACpB,GAAIyV,GAAgB9X,KAAK0K,EAErBmb,GACFC,QAAS9lB,KAAKwK,EACdM,OAAQgN,EAAchN,OACtBib,SAAU,cAERpB,EAAW3kB,KAAKgmB,IA8CpB,IA5CIrB,IACFkB,EAAS1B,QAAUQ,GAIjBtiB,EAAK8X,sBAAuB9X,GAAK8X,eACrC9X,EAAOgO,GAAYwV,EAAUxjB,GAE7BA,EAAKqZ,KAAOrL,GAAYA,MAAgBrQ,KAAKyK,EAAeiR,MAAOrZ,EAAKqZ,MACxErZ,EAAKsL,MAAQ0C,GAAYA,MAAgBrQ,KAAKyK,EAAekD,OAAQtL,EAAKsL,OAE1EtL,EAAKsL,MAAM,oBAAsBrE,IAAQtJ,KAAKsM,EAE1CtM,KAAKwM,GAAgBxM,KAAKwM,EAAa7J,OAAS,IAGlDN,EAAKgiB,aACH7c,UAAW6J,MAAMvQ,KAAKd,KAAKwM,EAAc,KAIzCxM,KAAKyK,EAAe2O,OAEtB/W,EAAK+W,KAAOpZ,KAAKyK,EAAe2O,MAI9BtB,EAAciE,cAAa1Z,EAAK0Z,YAAcjE,EAAciE,aAE5DjE,EAAcnN,UAAStI,EAAKsI,QAAUmN,EAAcnN,SAEpDmN,EAAcmO,aAAY5jB,EAAK6jB,YAAcpO,EAAcmO,YAE/D5kB,OAAOqV,KAAKrU,GAAM8jB,QAAQ,SAAUnjB,IACjB,MAAbX,EAAKW,IAA8B,KAAdX,EAAKW,IAAekN,GAAc7N,EAAKW,YACvDX,GAAKW,KAIZyG,GAAWqO,EAAc1V,gBAC3BC,EAAOyV,EAAc1V,aAAaC,IAASA,GAIxCA,IAAQ6N,GAAc7N,MAKvBoH,GAAWqO,EAAcqE,qBAAwBrE,EAAcqE,mBAAmB9Z,IAMtF,MAAIrC,MAAKulB,SACPvlB,MAAK6X,EAAU,OAAQ,uCAAwCxV,QAKzB,gBAA7ByV,GAAcpM,WACnBhG,KAAKC,SAAWmS,EAAcpM,YAChC1L,KAAKomB,GAAsB/jB,GAG7BrC,KAAKomB,GAAsB/jB,KAG/BgkB,GAAU,WACR,MAAO1V,OAET2V,GAAuB,SAA+BjkB,EAAMF,GAC1D,GAAI4M,GAAO/O,KACP8X,EAAgB9X,KAAK0K,CACzB,IAAK1K,KAAKyY,UAAV,CAMA,GAJApW,EAAOrC,KAAKumB,GAAYlkB,IAInBrC,KAAK0K,EAAe8b,iBAAmBxmB,KAAKymB,GAAcpkB,GAG7D,WAFArC,MAAK6X,EAAU,OAAQ,+BAAgCxV,EAQzDrC,MAAKqK,EAAehI,EAAKqkB,WAAarkB,EAAKqkB,SAAW1mB,KAAK2mB,MAE3D3mB,KAAKoK,EAAY/H,EAEjBrC,KAAK6X,EAAU,QAAS,uBAAwBxV,EAEhD,IAAIukB,IACFC,eAAgB,IAChBC,cAAe,YAAc9mB,KAAK0X,QAClCqP,WAAY/mB,KAAKuK,EAGfvK,MAAKqZ,IACPuN,EAAKI,cAAgBhnB,KAAKqZ,EAG5B,IAAIjH,GAAY/P,EAAK+P,WAAa/P,EAAK+P,UAAU5K,OAAO,EAEpDxH,MAAK0K,EAAec,iBAAmBxL,KAAK0K,EAAec,gBAAgB6M,QAC7ErY,KAAK8a,mBACHuD,SAAU,SACVhV,QAAS+I,GAAaA,EAAU3K,KAAO2K,EAAU3K,KAAO,KAAO,IAAM2K,EAAUxR,MAAQyB,EAAKgH,QAC5Fqd,SAAUrkB,EAAKqkB,SACf1P,MAAO3U,EAAK2U,OAAS,SAKzB,IAAIzS,GAAMvE,KAAKwZ,GAEd1B,EAAcuE,WAAarc,KAAKinB,IAAcnmB,KAAKd,MAClDuE,IAAKA,EACLqiB,KAAMA,EACNvkB,KAAMA,EACNuV,QAASE,EACToP,UAAW,WACTnY,EAAKnC,IAELmC,EAAKsU,EAAc,WACjBhhB,KAAMA,EACN8a,IAAK5Y,IAGPpC,GAAYA,KAEdglB,QAAS,SAAiB5Y,GACxBQ,EAAK8I,EAAU,QAAS,mCAAoCtJ,GAExDA,EAAM4V,SACRpV,EAAKqY,GAAiB7Y,EAAM4V,SAG9BpV,EAAKsU,EAAc,WACjBhhB,KAAMA,EACN8a,IAAK5Y,IAGPgK,EAAQA,GAAS,GAAIxN,OAAM,sDAC3BoB,GAAYA,EAASoM,QAI3B8Y,GAAc,SAAsBC,GAElC,GAAI/iB,GAAM+iB,EAAK/iB,IAAM,IAAMmM,GAAU4W,EAAKV,MACtCW,EAAmB,KACnBC,IAUJ,IARIF,EAAK1P,QAAQzM,UACfoc,EAAmBvnB,KAAKynB,GAAcH,EAAK1P,QAAQzM,UAGjDmc,EAAK1P,QAAQ8P,kBACfF,EAA2BxnB,KAAKynB,GAAcH,EAAK1P,QAAQ8P,kBAGzDvX,KAAiB,CACnBqX,EAAyBnK,KAAOpH,EAAYqR,EAAKjlB,KACjD,IAAIslB,GAAsBtX,MAAgBrQ,KAAK2L,GAC3Cic,EAAevX,GAAYsX,EAAqBH,EAMpD,OAJID,KACFK,EAAazc,QAAUoc,GAGlB3c,GAAUid,MAAMtjB,EAAKqjB,GAAcrG,KAAK,SAAUC,GACvD,GAAIA,EAASsG,GACXR,EAAKJ,WAAaI,EAAKJ,gBAClB,CACL,GAAI3Y,GAAQ,GAAIxN,OAAM,sBAAwBygB,EAASP,OAGvD1S,GAAM4V,QAAU3C,EAChB8F,EAAKH,SAAWG,EAAKH,QAAQ5Y,MAE9B,SAAS,WACV+Y,EAAKH,SAAWG,EAAKH,QAAQ,GAAIpmB,OAAM,6CAI3C,GAAIojB,GAAUvZ,GAAU8V,gBAAkB,GAAI9V,IAAU8V,cACxD,IAAKyD,EAAL,CAEA,GAAI4D,GAAU,mBAAqB5D,IAAqC,mBAAnB6D,eAChDD,KAED,mBAAqB5D,GACvBA,EAAQhD,mBAAqB,WAC3B,GAA2B,IAAvBgD,EAAQnD,WAEL,GAAuB,MAAnBmD,EAAQlD,OACjBqG,EAAKJ,WAAaI,EAAKJ,gBAClB,IAAII,EAAKH,QAAS,CACvB,GAAI1Q,GAAM,GAAI1V,OAAM,sBAAwBojB,EAAQlD,OACpDxK,GAAI0N,QAAUA,EACdmD,EAAKH,QAAQ1Q,MAIjB0N,EAAU,GAAI6D,gBAGdzjB,EAAMA,EAAIT,QAAQ,WAAY,IAE1BwjB,EAAKJ,YACP/C,EAAQ8D,OAASX,EAAKJ,WAGpBI,EAAKH,UACPhD,EAAQ7V,QAAU,WAChB,GAAImI,GAAM,GAAI1V,OAAM,oCACpB0V,GAAI0N,QAAUA,EACdmD,EAAKH,QAAQ1Q,MAKnB0N,EAAQ+D,KAAK,OAAQ3jB,GAEjBgjB,GACFnX,GAAKmX,EAAkB,SAAUvkB,EAAKpC,GACpCujB,EAAQgE,iBAAiBnlB,EAAKpC,KAIlCujB,EAAQiE,KAAKnS,EAAYqR,EAAKjlB,UAEhCgmB,GAAe,SAAuBC,GACpC,GAAIC,KAEJ,KAAK,GAAIvlB,KAAOslB,GACd,GAAIA,EAAK5mB,eAAesB,GAAM,CAC5B,GAAIpC,GAAQ0nB,EAAKtlB,EACjBulB,GAAUvlB,GAAwB,kBAAVpC,GAAuBA,IAAUA,EAI7D,MAAO2nB,IAETC,EAAW,SAAmBxR,GACxBhX,KAAKoM,EAAwB4K,IAAUhX,KAAKkR,OAE9CkG,SAAS5W,UAAUkP,MAAM5O,KAAKd,KAAKoM,EAAwB4K,GAAQhX,KAAKkM,KAAqBmF,MAAMvQ,KAAKwR,UAAW,KAGvHmW,EAAe,SAAuBzlB,EAAK2L,GACrC5E,GAAY4E,SACP3O,MAAKyK,EAAezH,GAE3BhD,KAAKyK,EAAezH,GAAOqN,GAAYrQ,KAAKyK,EAAezH,OAAY2L,KAK7EjF,EAAQlJ,UAAUkoB,QAAUhf,EAAQlJ,UAAU8a,eAC9C5R,EAAQlJ,UAAUmoB,kBAAoBjf,EAAQlJ,UAAUwb,UACxD,IAAI4M,IAAQlf,EASRmf,GAA4B,mBAAXjb,QAAyBA,OAAmC,mBAAnBkB,GAAiCA,EAAiC,mBAATC,MAAuBA,QAE1I+Z,GAASD,GAAQ9oB,MACjBA,GAAQ,GAAI6oB,GAQhB7oB,IAAMgpB,WAAa,WAEjB,MADAF,IAAQ9oB,MAAQ+oB,GACT/oB,IAGTA,GAAMyc,WACN,IAAIwM,IAAYjpB,GAQZkO,GAAoB2B,EAAM1N,gBAE1B+mB,GAAiB,6DACjBpb,GAAa,SAiCjBhB,GAAcqB,EAAiB,SAAU7L,GAEvC,GAAI+P,GAAY/P,EAAK+P,SAErB,IAAIA,EAAW,CACbA,EAAYA,EAAU5K,OAAO,EAC7B,IAAI0hB,GAAUD,GAAexU,KAAKrC,EAAUxR,MAExCsoB,KAEF9W,EAAU3K,KAAOyhB,EAAQ,GACzB9W,EAAUxR,MAAQsoB,EAAQ,GAC1B7mB,EAAKgH,QAAU+I,EAAU3K,KAAO,KAAO2K,EAAUxR,MAEjDyB,EAAKsL,MAAMwb,YAAcD,EAAQ,GAAG5lB,OAAO,EAAG,MAIlD,MAAOjB,IAGTwK,EAAcgB,WAAaA,EAC3B,IAAIf,IAAUD,EAsCVuc,GAAQjb,EAqBRkb,GAAYxa,CAIhBma,IAAU7N,UAAUrO,IAASqO,UAAUiO,IAAOjO,UAAUkO,GACxD,IAAIC,MAEJ,OAAOA","file":"raven.min.js"} \ No newline at end of file +{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","angularPlugin","angular","RavenProvider","$get","$window","ExceptionHandlerProvider","$provide","decorator","exceptionHandler","R","$delegate","ex","cause","captureException","extra","moduleName","provider","config","setDataCallback","wrappedCallback","data","_normalizeData","angularPattern","exception","values","matches","exec","value","type","message","angularDocs","substr","addPlugin","7","8","2","emberPlugin","Ember","_oldOnError","onerror","error","RSVP","on","reason","context","captureMessage","3","requirePlugin","wrap","deep","4","RavenConfigError","name","prototype","constructor","5","utils","wrapMethod","console","level","callback","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","msg","safeJoin","logger","Function","apply","6","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","sanitizeKeys","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isError","isObject","isPlainObject","isErrorEvent","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","sanitize","wrapConsoleMethod","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","dsn","options","_logDebug","globalOptions","key","setDSN","push","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","toString","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","func","undefined","_before","wrapped","_ignoreNextOnError","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","U","event","unhandledPromiseRejection","C","_promiseRejectionHandler","bind","addEventListener","Q","removeEventListener","trimHeadFrames","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","V","currentOptions","exKeys","Object","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","M","setTimeout","_","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","aa","evtName","_keypressTimeout","target","category","ca","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","da","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","D","_originalFunctionToString","E","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","F","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","S","builtin","T","G","installer","concat","H","str","m","allowSecretKey","K","port","B","W","stackInfo","_triggerEvent","_processException","lineno","Y","frame","_normalizeFrame","in_app","ha","stackInfoUrl","normalized","filename","line","colno","column","function","ga","prefixedMessage","culprit","ia","request","Referer","breadcrumbs","_trimBreadcrumbs","ja","urlProp","urlProps","ka","httpData","userAgent","User-Agent","referrer","z","_backoffDuration","_backoffStart","na","oa","current","last","pa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Z","baseData","project","platform","_getHttpData","serverName","server_name","_sanitizeData","forEach","random","_sendProcessedPayload","qa","sa","ra","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","ta","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","open","setRequestHeader","send","ua","hash","evaluated","A","$","setUser","setReleaseContext","10","11","9","RavenConstructor","_Raven","noConflict","Client","what","supportsErrorEvent","ErrorEvent","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","sanitizeMask","safeInput","o_O","getLocationHref","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","y","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","charAt","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","string","raw"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file diff --git a/dist/angular,ember,vue/raven.js b/dist/angular,ember,vue/raven.js index 8a739f9902a5..06f6173aea7b 100644 --- a/dist/angular,ember,vue/raven.js +++ b/dist/angular,ember,vue/raven.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.22.2 (1b6187b) | github.com/getsentry/raven-js */ +/*! Raven.js 3.24.2 (540f32b) | github.com/getsentry/raven-js */ /* * Includes TraceKit @@ -10,3274 +10,4055 @@ * */ -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : - typeof define === 'function' && define.amd ? define(factory) : - (global.Raven = factory()); -}(this, (function () { 'use strict'; - -var commonjsGlobal = typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; +(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.Raven = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o' : 'anonymous component') + + (vm._isVue && vm.$options.__file ? ' at ' + vm.$options.__file : '') + ); } -function isPlainObject(what) { - return Object.prototype.toString.call(what) === '[object Object]'; -} +function vuePlugin(Raven, Vue) { + Vue = Vue || window.Vue; -function isString$1(what) { - return Object.prototype.toString.call(what) === '[object String]'; -} + // quit if Vue isn't on the page + if (!Vue || !Vue.config) return; -function isArray$1(what) { - return Object.prototype.toString.call(what) === '[object Array]'; -} + var _oldOnError = Vue.config.errorHandler; + Vue.config.errorHandler = function VueErrorHandler(error, vm, info) { + var metaData = {}; -function isEmptyObject$1(what) { - if (!isPlainObject(what)) return false; + // vm and lifecycleHook are not always available + if (Object.prototype.toString.call(vm) === '[object Object]') { + metaData.componentName = formatComponentName(vm); + metaData.propsData = vm.$options.propsData; + } - for (var _ in what) { - if (what.hasOwnProperty(_)) { - return false; + if (typeof info !== 'undefined') { + metaData.lifecycleHook = info; } - } - return true; + Raven.captureException(error, { + extra: metaData + }); + + if (typeof _oldOnError === 'function') { + _oldOnError.call(this, error, vm, info); + } + }; } -function supportsErrorEvent() { - try { - new ErrorEvent(''); // eslint-disable-line no-new +module.exports = vuePlugin; - return true; - } catch (e) { - return false; - } +_dereq_(7).addPlugin(module.exports); +},{"7":7}],4:[function(_dereq_,module,exports){ +function RavenConfigError(message) { + this.name = 'RavenConfigError'; + this.message = message; } +RavenConfigError.prototype = new Error(); +RavenConfigError.prototype.constructor = RavenConfigError; -function supportsFetch$1() { - if (!('fetch' in _window$3)) return false; - - try { - new Headers(); // eslint-disable-line no-new +module.exports = RavenConfigError; - new Request(''); // eslint-disable-line no-new +},{}],5:[function(_dereq_,module,exports){ +var utils = _dereq_(8); - new Response(); // eslint-disable-line no-new +var wrapMethod = function(console, level, callback) { + var originalConsoleLevel = console[level]; + var originalConsole = console; - return true; - } catch (e) { - return false; + if (!(level in console)) { + return; } -} - -function wrappedCallback(callback) { - function dataCallback(data, original) { - var normalizedData = callback(data) || data; - - if (original) { - return original(normalizedData) || normalizedData; - } - return normalizedData; - } + var sentryLevel = level === 'warn' ? 'warning' : level; - return dataCallback; -} + console[level] = function() { + var args = [].slice.call(arguments); -function each$1(obj, callback) { - var i, j; + var msg = utils.safeJoin(args, ' '); + var data = {level: sentryLevel, logger: 'console', extra: {arguments: args}}; - if (isUndefined$1(obj.length)) { - for (i in obj) { - if (hasKey$1(obj, i)) { - callback.call(null, i, obj[i]); + if (level === 'assert') { + if (args[0] === false) { + // Default browsers message + msg = + 'Assertion failed: ' + (utils.safeJoin(args.slice(1), ' ') || 'console.assert'); + data.extra.arguments = args.slice(1); + callback && callback(msg, data); } + } else { + callback && callback(msg, data); } - } else { - j = obj.length; - if (j) { - for (i = 0; i < j; i++) { - callback.call(null, i, obj[i]); - } + // this fails for some browsers. :( + if (originalConsoleLevel) { + // IE9 doesn't allow calling apply on console functions directly + // See: https://stackoverflow.com/questions/5472938/does-ie9-support-console-log-and-is-it-a-real-function#answer-5473193 + Function.prototype.apply.call(originalConsoleLevel, originalConsole, args); } - } -} - -function objectMerge$1(obj1, obj2) { - if (!obj2) { - return obj1; - } + }; +}; - each$1(obj2, function (key, value) { - obj1[key] = value; - }); - return obj1; -} -/** - * This function is only used for react-native. - * react-native freezes object that have already been sent over the - * js bridge. We need this function in order to check if the object is frozen. - * So it's ok that objectFrozen returns false if Object.isFrozen is not - * supported because it's not relevant for other "platforms". See related issue: - * https://github.com/getsentry/react-native-sentry/issues/57 - */ +module.exports = { + wrapMethod: wrapMethod +}; +},{"8":8}],6:[function(_dereq_,module,exports){ +(function (global){ +/*global XDomainRequest:false */ -function objectFrozen$1(obj) { - if (!Object.isFrozen) { - return false; - } +var TraceKit = _dereq_(9); +var stringify = _dereq_(10); +var md5 = _dereq_(11); +var RavenConfigError = _dereq_(4); - return Object.isFrozen(obj); -} +var utils = _dereq_(8); +var isError = utils.isError; +var isObject = utils.isObject; +var isPlainObject = utils.isPlainObject; +var isErrorEvent = utils.isErrorEvent; +var isUndefined = utils.isUndefined; +var isFunction = utils.isFunction; +var isString = utils.isString; +var isArray = utils.isArray; +var isEmptyObject = utils.isEmptyObject; +var each = utils.each; +var objectMerge = utils.objectMerge; +var truncate = utils.truncate; +var objectFrozen = utils.objectFrozen; +var hasKey = utils.hasKey; +var joinRegExp = utils.joinRegExp; +var urlencode = utils.urlencode; +var uuid4 = utils.uuid4; +var htmlTreeAsString = utils.htmlTreeAsString; +var isSameException = utils.isSameException; +var isSameStacktrace = utils.isSameStacktrace; +var parseUrl = utils.parseUrl; +var fill = utils.fill; +var supportsFetch = utils.supportsFetch; +var supportsReferrerPolicy = utils.supportsReferrerPolicy; +var serializeKeysForMessage = utils.serializeKeysForMessage; +var serializeException = utils.serializeException; +var sanitize = utils.sanitize; -function truncate$1(str, max) { - return !max || str.length <= max ? str : str.substr(0, max) + "\u2026"; -} -/** - * hasKey, a better form of hasOwnProperty - * Example: hasKey(MainHostObject, property) === true/false - * - * @param {Object} host object to check property - * @param {string} key to check - */ +var wrapConsoleMethod = _dereq_(5).wrapMethod; +var dsnKeys = 'source protocol user pass host port path'.split(' '), + dsnPattern = /^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/; -function hasKey$1(object, key) { - return Object.prototype.hasOwnProperty.call(object, key); +function now() { + return +new Date(); } -function joinRegExp$1(patterns) { - // Combine an array of regular expressions and strings into one large regexp - // Be mad. - var sources = [], - i = 0, - len = patterns.length, - pattern; - - for (; i < len; i++) { - pattern = patterns[i]; +// This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) +var _window = + typeof window !== 'undefined' + ? window + : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; +var _document = _window.document; +var _navigator = _window.navigator; - if (isString$1(pattern)) { - // If it's a string, we need to escape it - // Taken from: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions - sources.push(pattern.replace(/([.*+?^=!:${}()|\[\]\/\\])/g, '\\$1')); - } else if (pattern && pattern.source) { - // If it's a regexp already, we want to extract the source - sources.push(pattern.source); - } // Intentionally skip other cases +function keepOriginalCallback(original, callback) { + return isFunction(callback) + ? function(data) { + return callback(data, original); + } + : callback; +} - } +// First, check for JSON support +// If there is no JSON, we no-op the core features of Raven +// since JSON is required to encode the payload +function Raven() { + this._hasJSON = !!(typeof JSON === 'object' && JSON.stringify); + // Raven can run in contexts where there's no document (react-native) + this._hasDocument = !isUndefined(_document); + this._hasNavigator = !isUndefined(_navigator); + this._lastCapturedException = null; + this._lastData = null; + this._lastEventId = null; + this._globalServer = null; + this._globalKey = null; + this._globalProject = null; + this._globalContext = {}; + this._globalOptions = { + // SENTRY_RELEASE can be injected by https://github.com/getsentry/sentry-webpack-plugin + release: _window.SENTRY_RELEASE && _window.SENTRY_RELEASE.id, + logger: 'javascript', + ignoreErrors: [], + ignoreUrls: [], + whitelistUrls: [], + includePaths: [], + headers: null, + collectWindowErrors: true, + captureUnhandledRejections: true, + maxMessageLength: 0, + // By default, truncates URL values to 250 chars + maxUrlLength: 250, + stackTraceLimit: 50, + autoBreadcrumbs: true, + instrument: true, + sampleRate: 1, + sanitizeKeys: [] + }; + this._fetchDefaults = { + method: 'POST', + keepalive: true, + // Despite all stars in the sky saying that Edge supports old draft syntax, aka 'never', 'always', 'origin' and 'default + // https://caniuse.com/#feat=referrer-policy + // It doesn't. And it throw exception instead of ignoring this parameter... + // REF: https://github.com/getsentry/raven-js/issues/1233 + referrerPolicy: supportsReferrerPolicy() ? 'origin' : '' + }; + this._ignoreOnError = 0; + this._isRavenInstalled = false; + this._originalErrorStackTraceLimit = Error.stackTraceLimit; + // capture references to window.console *and* all its methods first + // before the console plugin has a chance to monkey patch + this._originalConsole = _window.console || {}; + this._originalConsoleMethods = {}; + this._plugins = []; + this._startTime = now(); + this._wrappedBuiltIns = []; + this._breadcrumbs = []; + this._lastCapturedEvent = null; + this._keypressTimeout; + this._location = _window.location; + this._lastHref = this._location && this._location.href; + this._resetBackoff(); - return new RegExp(sources.join('|'), 'i'); + // eslint-disable-next-line guard-for-in + for (var method in this._originalConsole) { + this._originalConsoleMethods[method] = this._originalConsole[method]; + } } -function urlencode$1(o) { - var pairs = []; - each$1(o, function (key, value) { - pairs.push(encodeURIComponent(key) + '=' + encodeURIComponent(value)); - }); - return pairs.join('&'); -} // borrowed from https://tools.ietf.org/html/rfc3986#appendix-B -// intentionally using regex and not href parsing trick because React Native and other -// environments where DOM might not be available +/* + * The core Raven singleton + * + * @this {Raven} + */ +Raven.prototype = { + // Hardcode version string so that raven source can be loaded directly via + // webpack (using a build step causes webpack #1617). Grunt verifies that + // this value matches package.json during build. + // See: https://github.com/getsentry/raven-js/issues/465 + VERSION: '3.24.2', -function parseUrl$1(url) { - if (typeof url !== 'string') return {}; - var match = url.match(/^(([^:\/?#]+):)?(\/\/([^\/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?$/); // coerce to undefined values to empty string so we don't get 'undefined' + debug: false, - var query = match[6] || ''; - var fragment = match[8] || ''; - return { - protocol: match[2], - host: match[4], - path: match[5], - relative: match[5] + query + fragment // everything minus origin + TraceKit: TraceKit, // alias to TraceKit - }; -} + /* + * Configure Raven with a DSN and extra options + * + * @param {string} dsn The public Sentry DSN + * @param {object} options Set of global options [optional] + * @return {Raven} + */ + config: function(dsn, options) { + var self = this; -function uuid4$1() { - var crypto = _window$3.crypto || _window$3.msCrypto; + if (self._globalServer) { + this._logDebug('error', 'Error: Raven has already been configured'); + return self; + } + if (!dsn) return self; - if (!isUndefined$1(crypto) && crypto.getRandomValues) { - // Use window.crypto API if available - // eslint-disable-next-line no-undef - var arr = new Uint16Array(8); - crypto.getRandomValues(arr); // set 4 in byte 7 + var globalOptions = self._globalOptions; - arr[3] = arr[3] & 0xfff | 0x4000; // set 2 most significant bits of byte 9 to '10' + // merge in options + if (options) { + each(options, function(key, value) { + // tags and extra are special and need to be put into context + if (key === 'tags' || key === 'extra' || key === 'user') { + self._globalContext[key] = value; + } else { + globalOptions[key] = value; + } + }); + } - arr[4] = arr[4] & 0x3fff | 0x8000; + self.setDSN(dsn); - var pad = function pad(num) { - var v = num.toString(16); + // "Script error." is hard coded into browsers for errors that it can't read. + // this is the result of a script being pulled in from an external domain and CORS. + globalOptions.ignoreErrors.push(/^Script error\.?$/); + globalOptions.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/); - while (v.length < 4) { - v = '0' + v; - } + // join regexp rules into one big rule + globalOptions.ignoreErrors = joinRegExp(globalOptions.ignoreErrors); + globalOptions.ignoreUrls = globalOptions.ignoreUrls.length + ? joinRegExp(globalOptions.ignoreUrls) + : false; + globalOptions.whitelistUrls = globalOptions.whitelistUrls.length + ? joinRegExp(globalOptions.whitelistUrls) + : false; + globalOptions.includePaths = joinRegExp(globalOptions.includePaths); + globalOptions.maxBreadcrumbs = Math.max( + 0, + Math.min(globalOptions.maxBreadcrumbs || 100, 100) + ); // default and hard limit is 100 - return v; + var autoBreadcrumbDefaults = { + xhr: true, + console: true, + dom: true, + location: true, + sentry: true }; - return pad(arr[0]) + pad(arr[1]) + pad(arr[2]) + pad(arr[3]) + pad(arr[4]) + pad(arr[5]) + pad(arr[6]) + pad(arr[7]); - } else { - // http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/2117523#2117523 - return 'xxxxxxxxxxxx4xxxyxxxxxxxxxxxxxxx'.replace(/[xy]/g, function (c) { - var r = Math.random() * 16 | 0, - v = c === 'x' ? r : r & 0x3 | 0x8; - return v.toString(16); - }); - } -} -/** - * Given a child DOM element, returns a query-selector statement describing that - * and its ancestors - * e.g. [HTMLElement] => body > div > input#foo.btn[name=baz] - * @param elem - * @returns {string} - */ - - -function htmlTreeAsString$1(elem) { - /* eslint no-extra-parens:0*/ - var MAX_TRAVERSE_HEIGHT = 5, - MAX_OUTPUT_LEN = 80, - out = [], - height = 0, - len = 0, - separator = ' > ', - sepLength = separator.length, - nextStr; + var autoBreadcrumbs = globalOptions.autoBreadcrumbs; + if ({}.toString.call(autoBreadcrumbs) === '[object Object]') { + autoBreadcrumbs = objectMerge(autoBreadcrumbDefaults, autoBreadcrumbs); + } else if (autoBreadcrumbs !== false) { + autoBreadcrumbs = autoBreadcrumbDefaults; + } + globalOptions.autoBreadcrumbs = autoBreadcrumbs; - while (elem && height++ < MAX_TRAVERSE_HEIGHT) { - nextStr = htmlElementAsString(elem); // bail out if - // - nextStr is the 'html' element - // - the length of the string that would be created exceeds MAX_OUTPUT_LEN - // (ignore this limit if we are on the first iteration) + var instrumentDefaults = { + tryCatch: true + }; - if (nextStr === 'html' || height > 1 && len + out.length * sepLength + nextStr.length >= MAX_OUTPUT_LEN) { - break; + var instrument = globalOptions.instrument; + if ({}.toString.call(instrument) === '[object Object]') { + instrument = objectMerge(instrumentDefaults, instrument); + } else if (instrument !== false) { + instrument = instrumentDefaults; } + globalOptions.instrument = instrument; - out.push(nextStr); - len += nextStr.length; - elem = elem.parentNode; - } - - return out.reverse().join(separator); -} -/** - * Returns a simple, query-selector representation of a DOM element - * e.g. [HTMLElement] => input#foo.btn[name=baz] - * @param HTMLElement - * @returns {string} - */ + TraceKit.collectWindowErrors = !!globalOptions.collectWindowErrors; + // return for chaining + return self; + }, -function htmlElementAsString(elem) { - var out = [], - className, - classes, - key, - attr, - i; + /* + * Installs a global window.onerror error handler + * to capture and report uncaught exceptions. + * At this point, install() is required to be called due + * to the way TraceKit is set up. + * + * @return {Raven} + */ + install: function() { + var self = this; + if (self.isSetup() && !self._isRavenInstalled) { + TraceKit.report.subscribe(function() { + self._handleOnErrorStackInfo.apply(self, arguments); + }); - if (!elem || !elem.tagName) { - return ''; - } + if (self._globalOptions.captureUnhandledRejections) { + self._attachPromiseRejectionHandler(); + } - out.push(elem.tagName.toLowerCase()); + self._patchFunctionToString(); - if (elem.id) { - out.push('#' + elem.id); - } + if (self._globalOptions.instrument && self._globalOptions.instrument.tryCatch) { + self._instrumentTryCatch(); + } - className = elem.className; + if (self._globalOptions.autoBreadcrumbs) self._instrumentBreadcrumbs(); - if (className && isString$1(className)) { - classes = className.split(/\s+/); + // Install all of the plugins + self._drainPlugins(); - for (i = 0; i < classes.length; i++) { - out.push('.' + classes[i]); + self._isRavenInstalled = true; } - } - - var attrWhitelist = ['type', 'name', 'title', 'alt']; - for (i = 0; i < attrWhitelist.length; i++) { - key = attrWhitelist[i]; - attr = elem.getAttribute(key); + Error.stackTraceLimit = self._globalOptions.stackTraceLimit; + return this; + }, - if (attr) { - out.push('[' + key + '="' + attr + '"]'); - } - } + /* + * Set the DSN (can be called multiple time unlike config) + * + * @param {string} dsn The public Sentry DSN + */ + setDSN: function(dsn) { + var self = this, + uri = self._parseDSN(dsn), + lastSlash = uri.path.lastIndexOf('/'), + path = uri.path.substr(1, lastSlash); - return out.join(''); -} -/** - * Returns true if either a OR b is truthy, but not both - */ + self._dsn = dsn; + self._globalKey = uri.user; + self._globalSecret = uri.pass && uri.pass.substr(1); + self._globalProject = uri.path.substr(lastSlash + 1); + self._globalServer = self._getGlobalServer(uri); -function isOnlyOneTruthy(a, b) { - return !!(!!a ^ !!b); -} -/** - * Returns true if both parameters are undefined - */ + self._globalEndpoint = + self._globalServer + '/' + path + 'api/' + self._globalProject + '/store/'; + // Reset backoff state since we may be pointing at a + // new project/server + this._resetBackoff(); + }, -function isBothUndefined(a, b) { - return isUndefined$1(a) && isUndefined$1(b); -} -/** - * Returns true if the two input exception interfaces have the same content - */ + /* + * Wrap code within a context so Raven can capture errors + * reliably across domains that is executed immediately. + * + * @param {object} options A specific set of options for this context [optional] + * @param {function} func The callback to be immediately executed within the context + * @param {array} args An array of arguments to be called with the callback [optional] + */ + context: function(options, func, args) { + if (isFunction(options)) { + args = func || []; + func = options; + options = undefined; + } + return this.wrap(options, func).apply(this, args); + }, -function isSameException$1(ex1, ex2) { - if (isOnlyOneTruthy(ex1, ex2)) return false; - ex1 = ex1.values[0]; - ex2 = ex2.values[0]; - if (ex1.type !== ex2.type || ex1.value !== ex2.value) return false; // in case both stacktraces are undefined, we can't decide so default to false - - if (isBothUndefined(ex1.stacktrace, ex2.stacktrace)) return false; - return isSameStacktrace$1(ex1.stacktrace, ex2.stacktrace); -} -/** - * Returns true if the two input stack trace interfaces have the same content - */ - - -function isSameStacktrace$1(stack1, stack2) { - if (isOnlyOneTruthy(stack1, stack2)) return false; - var frames1 = stack1.frames; - var frames2 = stack2.frames; // Exit early if frame count differs - - if (frames1.length !== frames2.length) return false; // Iterate through every frame; bail out if anything differs - - var a, b; - - for (var i = 0; i < frames1.length; i++) { - a = frames1[i]; - b = frames2[i]; - if (a.filename !== b.filename || a.lineno !== b.lineno || a.colno !== b.colno || a['function'] !== b['function']) return false; - } - - return true; -} -/** - * Polyfill a method - * @param obj object e.g. `document` - * @param name method name present on object e.g. `addEventListener` - * @param replacement replacement function - * @param track {optional} record instrumentation to an array - */ - - -function fill$1(obj, name, replacement, track) { - var orig = obj[name]; - obj[name] = replacement(orig); - obj[name].__raven__ = true; - obj[name].__orig__ = orig; - - if (track) { - track.push([obj, name, orig]); - } -} -/** - * Join values in array - * @param input array of values to be joined together - * @param delimiter string to be placed in-between values - * @returns {string} - */ + /* + * Wrap code within a context and returns back a new function to be executed + * + * @param {object} options A specific set of options for this context [optional] + * @param {function} func The function to be wrapped in a new context + * @param {function} func A function to call before the try/catch wrapper [optional, private] + * @return {function} The newly wrapped functions with a context + */ + wrap: function(options, func, _before) { + var self = this; + // 1 argument has been passed, and it's not a function + // so just return it + if (isUndefined(func) && !isFunction(options)) { + return options; + } + // options is optional + if (isFunction(options)) { + func = options; + options = undefined; + } -function safeJoin(input, delimiter) { - if (!isArray$1(input)) return ''; - var output = []; + // At this point, we've passed along 2 arguments, and the second one + // is not a function either, so we'll just return the second argument. + if (!isFunction(func)) { + return func; + } - for (var i = 0; i < input.length; i++) { + // We don't wanna wrap it twice! try { - output.push(String(input[i])); + if (func.__raven__) { + return func; + } + + // If this has already been wrapped in the past, return that + if (func.__raven_wrapper__) { + return func.__raven_wrapper__; + } } catch (e) { - output.push('[value cannot be serialized]'); + // Just accessing custom props in some Selenium environments + // can cause a "Permission denied" exception (see raven-js#495). + // Bail on wrapping and return the function as-is (defers to window.onerror). + return func; } - } - - return output.join(delimiter); -} -var utils = { - isObject: isObject$1, - isError: isError$1, - isErrorEvent: isErrorEvent$1, - isUndefined: isUndefined$1, - isFunction: isFunction$1, - isPlainObject: isPlainObject, - isString: isString$1, - isArray: isArray$1, - isEmptyObject: isEmptyObject$1, - supportsErrorEvent: supportsErrorEvent, - supportsFetch: supportsFetch$1, - wrappedCallback: wrappedCallback, - each: each$1, - objectMerge: objectMerge$1, - truncate: truncate$1, - objectFrozen: objectFrozen$1, - hasKey: hasKey$1, - joinRegExp: joinRegExp$1, - urlencode: urlencode$1, - uuid4: uuid4$1, - htmlTreeAsString: htmlTreeAsString$1, - htmlElementAsString: htmlElementAsString, - isSameException: isSameException$1, - isSameStacktrace: isSameStacktrace$1, - parseUrl: parseUrl$1, - fill: fill$1, - safeJoin: safeJoin -}; + function wrapped() { + var args = [], + i = arguments.length, + deep = !options || (options && options.deep !== false); -/* - TraceKit - Cross brower stack traces + if (_before && isFunction(_before)) { + _before.apply(this, arguments); + } - This was originally forked from github.com/occ/TraceKit, but has since been - largely re-written and is now maintained as part of raven-js. Tests for - this are in test/vendor. + // Recursively wrap all of a function's arguments that are + // functions themselves. + while (i--) args[i] = deep ? self.wrap(options, arguments[i]) : arguments[i]; - MIT license -*/ + try { + // Attempt to invoke user-land function + // NOTE: If you are a Sentry user, and you are seeing this stack frame, it + // means Raven caught an error invoking your application code. This is + // expected behavior and NOT indicative of a bug with Raven.js. + return func.apply(this, args); + } catch (e) { + self._ignoreNextOnError(); + self.captureException(e, options); + throw e; + } + } -var TraceKit = { - collectWindowErrors: true, - debug: false -}; // This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) + // copy over properties of the old function + for (var property in func) { + if (hasKey(func, property)) { + wrapped[property] = func[property]; + } + } + wrapped.prototype = func.prototype; -var _window$2 = typeof window !== 'undefined' ? window : typeof commonjsGlobal !== 'undefined' ? commonjsGlobal : typeof self !== 'undefined' ? self : {}; // global reference to slice + func.__raven_wrapper__ = wrapped; + // Signal that this function has been wrapped/filled already + // for both debugging and to prevent it to being wrapped/filled twice + wrapped.__raven__ = true; + wrapped.__orig__ = func; + return wrapped; + }, -var _slice = [].slice; -var UNKNOWN_FUNCTION = '?'; // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error#Error_types + /** + * Uninstalls the global error handler. + * + * @return {Raven} + */ + uninstall: function() { + TraceKit.report.uninstall(); -var ERROR_TYPES_RE = /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/; + this._detachPromiseRejectionHandler(); + this._unpatchFunctionToString(); + this._restoreBuiltIns(); + this._restoreConsole(); -function getLocationHref() { - if (typeof document === 'undefined' || document.location == null) return ''; - return document.location.href; -} -/** - * TraceKit.report: cross-browser processing of unhandled exceptions - * - * Syntax: - * TraceKit.report.subscribe(function(stackInfo) { ... }) - * TraceKit.report.unsubscribe(function(stackInfo) { ... }) - * TraceKit.report(exception) - * try { ...code... } catch(ex) { TraceKit.report(ex); } - * - * Supports: - * - Firefox: full stack trace with line numbers, plus column number - * on top frame; column number is not guaranteed - * - Opera: full stack trace with line and column numbers - * - Chrome: full stack trace with line and column numbers - * - Safari: line and column number for the top frame only; some frames - * may be missing, and column number is not guaranteed - * - IE: line and column number for the top frame only; some frames - * may be missing, and column number is not guaranteed - * - * In theory, TraceKit should work on all of the following versions: - * - IE5.5+ (only 8.0 tested) - * - Firefox 0.9+ (only 3.5+ tested) - * - Opera 7+ (only 10.50 tested; versions 9 and earlier may require - * Exceptions Have Stacktrace to be enabled in opera:config) - * - Safari 3+ (only 4+ tested) - * - Chrome 1+ (only 5+ tested) - * - Konqueror 3.5+ (untested) - * - * Requires TraceKit.computeStackTrace. - * - * Tries to catch all unhandled exceptions and report them to the - * subscribed handlers. Please note that TraceKit.report will rethrow the - * exception. This is REQUIRED in order to get a useful stack trace in IE. - * If the exception does not reach the top of the browser, you will only - * get a stack trace from the point where TraceKit.report was called. - * - * Handlers receive a stackInfo object as described in the - * TraceKit.computeStackTrace docs. - */ + Error.stackTraceLimit = this._originalErrorStackTraceLimit; + this._isRavenInstalled = false; + return this; + }, -TraceKit.report = function reportModuleWrapper() { - var handlers = [], - lastArgs = null, - lastException = null, - lastExceptionStack = null; /** - * Add a crash handler. - * @param {Function} handler - */ + * Callback used for `unhandledrejection` event + * + * @param {PromiseRejectionEvent} event An object containing + * promise: the Promise that was rejected + * reason: the value with which the Promise was rejected + * @return void + */ + _promiseRejectionHandler: function(event) { + this._logDebug('debug', 'Raven caught unhandled promise rejection:', event); + this.captureException(event.reason, { + extra: { + unhandledPromiseRejection: true + } + }); + }, - function subscribe(handler) { - installGlobalHandler(); - handlers.push(handler); - } /** - * Remove a crash handler. - * @param {Function} handler - */ + * Installs the global promise rejection handler. + * + * @return {raven} + */ + _attachPromiseRejectionHandler: function() { + this._promiseRejectionHandler = this._promiseRejectionHandler.bind(this); + _window.addEventListener && + _window.addEventListener('unhandledrejection', this._promiseRejectionHandler); + return this; + }, + /** + * Uninstalls the global promise rejection handler. + * + * @return {raven} + */ + _detachPromiseRejectionHandler: function() { + _window.removeEventListener && + _window.removeEventListener('unhandledrejection', this._promiseRejectionHandler); + return this; + }, - function unsubscribe(handler) { - for (var i = handlers.length - 1; i >= 0; --i) { - if (handlers[i] === handler) { - handlers.splice(i, 1); + /** + * Manually capture an exception and send it over to Sentry + * + * @param {error} ex An exception to be logged + * @param {object} options A specific set of options for this error [optional] + * @return {Raven} + */ + captureException: function(ex, options) { + options = objectMerge({trimHeadFrames: 0}, options ? options : {}); + + if (isErrorEvent(ex) && ex.error) { + // If it is an ErrorEvent with `error` property, extract it to get actual Error + ex = ex.error; + } else if (isError(ex)) { + // we have a real Error object + ex = ex; + } else if (isPlainObject(ex)) { + // If it is plain Object, serialize it manually and extract options + // This will allow us to group events based on top-level keys + // which is much better than creating new group when any key/value change + options = this._getCaptureExceptionOptionsFromPlainObject(options, ex); + ex = new Error(options.message); + } else { + // If none of previous checks were valid, then it means that + // it's not a plain Object + // it's not a valid ErrorEvent (one with an error property) + // it's not an Error + // So bail out and capture it as a simple message: + return this.captureMessage( + ex, + objectMerge(options, { + stacktrace: true, // if we fall back to captureMessage, default to attempting a new trace + trimHeadFrames: options.trimHeadFrames + 1 + }) + ); + } + + // Store the raw exception object for potential debugging and introspection + this._lastCapturedException = ex; + + // TraceKit.report will re-raise any exception passed to it, + // which means you have to wrap it in try/catch. Instead, we + // can wrap it here and only re-raise if TraceKit.report + // raises an exception different from the one we asked to + // report on. + try { + var stack = TraceKit.computeStackTrace(ex); + this._handleStackInfo(stack, options); + } catch (ex1) { + if (ex !== ex1) { + throw ex1; } } - } - /** - * Remove all crash handlers. - */ - - function unsubscribeAll() { - uninstallGlobalHandler(); - handlers = []; - } - /** - * Dispatch stack information to all handlers. - * @param {Object.} stack - */ + return this; + }, + _getCaptureExceptionOptionsFromPlainObject: function(currentOptions, ex) { + var exKeys = Object.keys(ex).sort(); + var options = objectMerge(currentOptions, { + message: + 'Non-Error exception captured with keys: ' + serializeKeysForMessage(exKeys), + fingerprint: [md5(exKeys)], + extra: currentOptions.extra || {} + }); + options.extra.__serialized__ = serializeException(ex); - function notifyHandlers(stack, isWindowError) { - var exception = null; + return options; + }, - if (isWindowError && !TraceKit.collectWindowErrors) { + /* + * Manually send a message to Sentry + * + * @param {string} msg A plain message to be captured in Sentry + * @param {object} options A specific set of options for this message [optional] + * @return {Raven} + */ + captureMessage: function(msg, options) { + // config() automagically converts ignoreErrors from a list to a RegExp so we need to test for an + // early call; we'll error on the side of logging anything called before configuration since it's + // probably something you should see: + if ( + !!this._globalOptions.ignoreErrors.test && + this._globalOptions.ignoreErrors.test(msg) + ) { return; } - for (var i in handlers) { - if (handlers.hasOwnProperty(i)) { - try { - handlers[i].apply(null, [stack].concat(_slice.call(arguments, 2))); - } catch (inner) { - exception = inner; - } - } - } - - if (exception) { - throw exception; - } - } - - var _oldOnerrorHandler, _onErrorHandlerInstalled; - /** - * Ensures all global unhandled exceptions are recorded. - * Supported by Gecko and IE. - * @param {string} msg Error message. - * @param {string} url URL of script that generated the exception. - * @param {(number|string)} lineNo The line number at which the error - * occurred. - * @param {?(number|string)} colNo The column number at which the error - * occurred. - * @param {?Error} ex The actual Error object. - */ - + options = options || {}; + msg = msg + ''; // Make sure it's actually a string - function traceKitWindowOnError(msg, url, lineNo, colNo, ex) { - var stack = null; // If 'ex' is ErrorEvent, get real Error from inside + var data = objectMerge( + { + message: msg + }, + options + ); - var exception = utils.isErrorEvent(ex) ? ex.error : ex; // If 'msg' is ErrorEvent, get real message from inside + var ex; + // Generate a "synthetic" stack trace from this point. + // NOTE: If you are a Sentry user, and you are seeing this stack frame, it is NOT indicative + // of a bug with Raven.js. Sentry generates synthetic traces either by configuration, + // or if it catches a thrown object without a "stack" property. + try { + throw new Error(msg); + } catch (ex1) { + ex = ex1; + } - var message = utils.isErrorEvent(msg) ? msg.message : msg; + // null exception name so `Error` isn't prefixed to msg + ex.name = null; + var stack = TraceKit.computeStackTrace(ex); - if (lastExceptionStack) { - TraceKit.computeStackTrace.augmentStackTraceWithInitialElement(lastExceptionStack, url, lineNo, message); - processLastException(); - } else if (exception && utils.isError(exception)) { - // non-string `exception` arg; attempt to extract stack trace - // New chrome and blink send along a real error object - // Let's just report that like a normal error. - // See: https://mikewest.org/2013/08/debugging-runtime-errors-with-window-onerror - stack = TraceKit.computeStackTrace(exception); - notifyHandlers(stack, true); - } else { - var location = { - url: url, - line: lineNo, - column: colNo - }; - var name = undefined; - var groups; + // stack[0] is `throw new Error(msg)` call itself, we are interested in the frame that was just before that, stack[1] + var initialCall = isArray(stack.stack) && stack.stack[1]; - if ({}.toString.call(message) === '[object String]') { - var groups = message.match(ERROR_TYPES_RE); + // if stack[1] is `Raven.captureException`, it means that someone passed a string to it and we redirected that call + // to be handled by `captureMessage`, thus `initialCall` is the 3rd one, not 2nd + // initialCall => captureException(string) => captureMessage(string) + if (initialCall && initialCall.func === 'Raven.captureException') { + initialCall = stack.stack[2]; + } - if (groups) { - name = groups[1]; - message = groups[2]; - } - } + var fileurl = (initialCall && initialCall.url) || ''; - location.func = UNKNOWN_FUNCTION; - stack = { - name: name, - message: message, - url: getLocationHref(), - stack: [location] - }; - notifyHandlers(stack, true); + if ( + !!this._globalOptions.ignoreUrls.test && + this._globalOptions.ignoreUrls.test(fileurl) + ) { + return; } - if (_oldOnerrorHandler) { - return _oldOnerrorHandler.apply(this, arguments); + if ( + !!this._globalOptions.whitelistUrls.test && + !this._globalOptions.whitelistUrls.test(fileurl) + ) { + return; } - return false; - } + if (this._globalOptions.stacktrace || (options && options.stacktrace)) { + // fingerprint on msg, not stack trace (legacy behavior, could be revisited) + data.fingerprint = data.fingerprint == null ? msg : data.fingerprint; - function installGlobalHandler() { - if (_onErrorHandlerInstalled) { - return; - } + options = objectMerge( + { + trimHeadFrames: 0 + }, + options + ); + // Since we know this is a synthetic trace, the top frame (this function call) + // MUST be from Raven.js, so mark it for trimming + // We add to the trim counter so that callers can choose to trim extra frames, such + // as utility functions. + options.trimHeadFrames += 1; - _oldOnerrorHandler = _window$2.onerror; - _window$2.onerror = traceKitWindowOnError; - _onErrorHandlerInstalled = true; - } + var frames = this._prepareFrames(stack, options); + data.stacktrace = { + // Sentry expects frames oldest to newest + frames: frames.reverse() + }; + } - function uninstallGlobalHandler() { - if (!_onErrorHandlerInstalled) { - return; + // Make sure that fingerprint is always wrapped in an array + if (data.fingerprint) { + data.fingerprint = isArray(data.fingerprint) + ? data.fingerprint + : [data.fingerprint]; } - _window$2.onerror = _oldOnerrorHandler; - _onErrorHandlerInstalled = false; - _oldOnerrorHandler = undefined; - } + // Fire away! + this._send(data); - function processLastException() { - var _lastExceptionStack = lastExceptionStack, - _lastArgs = lastArgs; - lastArgs = null; - lastExceptionStack = null; - lastException = null; - notifyHandlers.apply(null, [_lastExceptionStack, false].concat(_lastArgs)); - } - /** - * Reports an unhandled Error to TraceKit. - * @param {Error} ex - * @param {?boolean} rethrow If false, do not re-throw the exception. - * Only used for window.onerror to not cause an infinite loop of - * rethrowing. - */ + return this; + }, + captureBreadcrumb: function(obj) { + var crumb = objectMerge( + { + timestamp: now() / 1000 + }, + obj + ); - function report(ex, rethrow) { - var args = _slice.call(arguments, 1); + if (isFunction(this._globalOptions.breadcrumbCallback)) { + var result = this._globalOptions.breadcrumbCallback(crumb); - if (lastExceptionStack) { - if (lastException === ex) { - return; // already caught by an inner catch block, ignore - } else { - processLastException(); + if (isObject(result) && !isEmptyObject(result)) { + crumb = result; + } else if (result === false) { + return this; } } - var stack = TraceKit.computeStackTrace(ex); - lastExceptionStack = stack; - lastException = ex; - lastArgs = args; // If the stack trace is incomplete, wait for 2 seconds for - // slow slow IE to see if onerror occurs or not before reporting - // this exception; otherwise, we will end up with an incomplete - // stack trace + this._breadcrumbs.push(crumb); + if (this._breadcrumbs.length > this._globalOptions.maxBreadcrumbs) { + this._breadcrumbs.shift(); + } + return this; + }, - setTimeout(function () { - if (lastException === ex) { - processLastException(); - } - }, stack.incomplete ? 2000 : 0); + addPlugin: function(plugin /*arg1, arg2, ... argN*/) { + var pluginArgs = [].slice.call(arguments, 1); - if (rethrow !== false) { - throw ex; // re-throw to propagate to the top level (and cause window.onerror) + this._plugins.push([plugin, pluginArgs]); + if (this._isRavenInstalled) { + this._drainPlugins(); } - } - report.subscribe = subscribe; - report.unsubscribe = unsubscribe; - report.uninstall = unsubscribeAll; - return report; -}(); -/** - * TraceKit.computeStackTrace: cross-browser stack traces in JavaScript - * - * Syntax: - * s = TraceKit.computeStackTrace(exception) // consider using TraceKit.report instead (see below) - * Returns: - * s.name - exception name - * s.message - exception message - * s.stack[i].url - JavaScript or HTML file URL - * s.stack[i].func - function name, or empty for anonymous functions (if guessing did not work) - * s.stack[i].args - arguments passed to the function, if known - * s.stack[i].line - line number, if known - * s.stack[i].column - column number, if known - * - * Supports: - * - Firefox: full stack trace with line numbers and unreliable column - * number on top frame - * - Opera 10: full stack trace with line and column numbers - * - Opera 9-: full stack trace with line numbers - * - Chrome: full stack trace with line and column numbers - * - Safari: line and column number for the topmost stacktrace element - * only - * - IE: no line numbers whatsoever - * - * Tries to guess names of anonymous functions by looking for assignments - * in the source code. In IE and Safari, we have to guess source file names - * by searching for function bodies inside all page scripts. This will not - * work for scripts that are loaded cross-domain. - * Here be dragons: some function names may be guessed incorrectly, and - * duplicate functions may be mismatched. - * - * TraceKit.computeStackTrace should only be used for tracing purposes. - * Logging of unhandled exceptions should be done with TraceKit.report, - * which builds on top of TraceKit.computeStackTrace and provides better - * IE support by utilizing the window.onerror event to retrieve information - * about the top of the stack. - * - * Note: In IE and Safari, no stack trace is recorded on the Error object, - * so computeStackTrace instead walks its *own* chain of callers. - * This means that: - * * in Safari, some methods may be missing from the stack trace; - * * in IE, the topmost function in the stack trace will always be the - * caller of computeStackTrace. - * - * This is okay for tracing (because you are likely to be calling - * computeStackTrace from the function you want to be the topmost element - * of the stack trace anyway), but not okay for logging unhandled - * exceptions (because your catch block will likely be far away from the - * inner function that actually caused the exception). - * - */ + return this; + }, + /* + * Set/clear a user to be sent along with the payload. + * + * @param {object} user An object representing user data [optional] + * @return {Raven} + */ + setUserContext: function(user) { + // Intentionally do not merge here since that's an unexpected behavior. + this._globalContext.user = user; -TraceKit.computeStackTrace = function computeStackTraceWrapper() { - // Contents of Exception in various browsers. - // - // SAFARI: - // ex.message = Can't find variable: qq - // ex.line = 59 - // ex.sourceId = 580238192 - // ex.sourceURL = http://... - // ex.expressionBeginOffset = 96 - // ex.expressionCaretOffset = 98 - // ex.expressionEndOffset = 98 - // ex.name = ReferenceError - // - // FIREFOX: - // ex.message = qq is not defined - // ex.fileName = http://... - // ex.lineNumber = 59 - // ex.columnNumber = 69 - // ex.stack = ...stack trace... (see the example below) - // ex.name = ReferenceError - // - // CHROME: - // ex.message = qq is not defined - // ex.name = ReferenceError - // ex.type = not_defined - // ex.arguments = ['aa'] - // ex.stack = ...stack trace... - // - // INTERNET EXPLORER: - // ex.message = ... - // ex.name = ReferenceError - // - // OPERA: - // ex.message = ...message... (see the example below) - // ex.name = ReferenceError - // ex.opera#sourceloc = 11 (pretty much useless, duplicates the info in ex.message) - // ex.stacktrace = n/a; see 'opera:config#UserPrefs|Exceptions Have Stacktrace' + return this; + }, - /** - * Computes stack trace information from the stack property. - * Chrome and Gecko use this property. - * @param {Error} ex - * @return {?Object.} Stack trace information. + /* + * Merge extra attributes to be sent along with the payload. + * + * @param {object} extra An object representing extra data [optional] + * @return {Raven} */ - function computeStackTraceFromStackProp(ex) { - if (typeof ex.stack === 'undefined' || !ex.stack) return; - var chrome = /^\s*at (.*?) ?\(((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i, - gecko = /^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|\[native).*?|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i, - winjs = /^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i, - // Used to additionally parse URL/line/column from eval frames - geckoEval = /(\S+) line (\d+)(?: > eval line \d+)* > eval/i, - chromeEval = /\((\S*)(?::(\d+))(?::(\d+))\)/, - lines = ex.stack.split('\n'), - stack = [], - submatch, - parts, - element, - reference = /^(.*) is undefined$/.exec(ex.message); + setExtraContext: function(extra) { + this._mergeContext('extra', extra); - for (var i = 0, j = lines.length; i < j; ++i) { - if (parts = chrome.exec(lines[i])) { - var isNative = parts[2] && parts[2].indexOf('native') === 0; // start of line + return this; + }, - var isEval = parts[2] && parts[2].indexOf('eval') === 0; // start of line - - if (isEval && (submatch = chromeEval.exec(parts[2]))) { - // throw out eval line/column and use top-most line/column number - parts[2] = submatch[1]; // url - - parts[3] = submatch[2]; // line - - parts[4] = submatch[3]; // column - } + /* + * Merge tags to be sent along with the payload. + * + * @param {object} tags An object representing tags [optional] + * @return {Raven} + */ + setTagsContext: function(tags) { + this._mergeContext('tags', tags); - element = { - url: !isNative ? parts[2] : null, - func: parts[1] || UNKNOWN_FUNCTION, - args: isNative ? [parts[2]] : [], - line: parts[3] ? +parts[3] : null, - column: parts[4] ? +parts[4] : null - }; - } else if (parts = winjs.exec(lines[i])) { - element = { - url: parts[2], - func: parts[1] || UNKNOWN_FUNCTION, - args: [], - line: +parts[3], - column: parts[4] ? +parts[4] : null - }; - } else if (parts = gecko.exec(lines[i])) { - var isEval = parts[3] && parts[3].indexOf(' > eval') > -1; + return this; + }, - if (isEval && (submatch = geckoEval.exec(parts[3]))) { - // throw out eval line/column and use top-most line number - parts[3] = submatch[1]; - parts[4] = submatch[2]; - parts[5] = null; // no column when eval - } else if (i === 0 && !parts[5] && typeof ex.columnNumber !== 'undefined') { - // FireFox uses this awesome columnNumber property for its top frame - // Also note, Firefox's column number is 0-based and everything else expects 1-based, - // so adding 1 - // NOTE: this hack doesn't work if top-most frame is eval - stack[0].column = ex.columnNumber + 1; - } + /* + * Clear all of the context. + * + * @return {Raven} + */ + clearContext: function() { + this._globalContext = {}; - element = { - url: parts[3], - func: parts[1] || UNKNOWN_FUNCTION, - args: parts[2] ? parts[2].split(',') : [], - line: parts[4] ? +parts[4] : null, - column: parts[5] ? +parts[5] : null - }; - } else { - continue; - } + return this; + }, - if (!element.func && element.line) { - element.func = UNKNOWN_FUNCTION; - } + /* + * Get a copy of the current context. This cannot be mutated. + * + * @return {object} copy of context + */ + getContext: function() { + // lol javascript + return JSON.parse(stringify(this._globalContext)); + }, - stack.push(element); - } + /* + * Set environment of application + * + * @param {string} environment Typically something like 'production'. + * @return {Raven} + */ + setEnvironment: function(environment) { + this._globalOptions.environment = environment; - if (!stack.length) { - return null; - } + return this; + }, - return { - name: ex.name, - message: ex.message, - url: getLocationHref(), - stack: stack - }; - } - /** - * Adds information about the first frame to incomplete stack traces. - * Safari and IE require this to get complete data on the first frame. - * @param {Object.} stackInfo Stack trace information from - * one of the compute* methods. - * @param {string} url The URL of the script that caused an error. - * @param {(number|string)} lineNo The line number of the script that - * caused an error. - * @param {string=} message The error generated by the browser, which - * hopefully contains the name of the object that caused the error. - * @return {boolean} Whether or not the stack information was - * augmented. + /* + * Set release version of application + * + * @param {string} release Typically something like a git SHA to identify version + * @return {Raven} */ + setRelease: function(release) { + this._globalOptions.release = release; + return this; + }, - function augmentStackTraceWithInitialElement(stackInfo, url, lineNo, message) { - var initial = { - url: url, - line: lineNo - }; + /* + * Set the dataCallback option + * + * @param {function} callback The callback to run which allows the + * data blob to be mutated before sending + * @return {Raven} + */ + setDataCallback: function(callback) { + var original = this._globalOptions.dataCallback; + this._globalOptions.dataCallback = keepOriginalCallback(original, callback); + return this; + }, - if (initial.url && initial.line) { - stackInfo.incomplete = false; + /* + * Set the breadcrumbCallback option + * + * @param {function} callback The callback to run which allows filtering + * or mutating breadcrumbs + * @return {Raven} + */ + setBreadcrumbCallback: function(callback) { + var original = this._globalOptions.breadcrumbCallback; + this._globalOptions.breadcrumbCallback = keepOriginalCallback(original, callback); + return this; + }, - if (!initial.func) { - initial.func = UNKNOWN_FUNCTION; - } + /* + * Set the shouldSendCallback option + * + * @param {function} callback The callback to run which allows + * introspecting the blob before sending + * @return {Raven} + */ + setShouldSendCallback: function(callback) { + var original = this._globalOptions.shouldSendCallback; + this._globalOptions.shouldSendCallback = keepOriginalCallback(original, callback); + return this; + }, - if (stackInfo.stack.length > 0) { - if (stackInfo.stack[0].url === initial.url) { - if (stackInfo.stack[0].line === initial.line) { - return false; // already in stack trace - } else if (!stackInfo.stack[0].line && stackInfo.stack[0].func === initial.func) { - stackInfo.stack[0].line = initial.line; - return false; - } - } - } + /** + * Override the default HTTP transport mechanism that transmits data + * to the Sentry server. + * + * @param {function} transport Function invoked instead of the default + * `makeRequest` handler. + * + * @return {Raven} + */ + setTransport: function(transport) { + this._globalOptions.transport = transport; - stackInfo.stack.unshift(initial); - stackInfo.partial = true; - return true; - } else { - stackInfo.incomplete = true; - } + return this; + }, - return false; - } - /** - * Computes stack trace information by walking the arguments.caller - * chain at the time the exception occurred. This will cause earlier - * frames to be missed but is the only way to get any stack trace in - * Safari and IE. The top frame is restored by - * {@link augmentStackTraceWithInitialElement}. - * @param {Error} ex - * @return {?Object.} Stack trace information. + /* + * Get the latest raw exception that was captured by Raven. + * + * @return {error} */ + lastException: function() { + return this._lastCapturedException; + }, + /* + * Get the last event id + * + * @return {string} + */ + lastEventId: function() { + return this._lastEventId; + }, - function computeStackTraceByWalkingCallerChain(ex, depth) { - var functionName = /function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i, - stack = [], - funcs = {}, - recursion = false, - parts, - item; - - for (var curr = computeStackTraceByWalkingCallerChain.caller; curr && !recursion; curr = curr.caller) { - if (curr === computeStackTrace || curr === TraceKit.report) { - // console.log('skipping internal function'); - continue; + /* + * Determine if Raven is setup and ready to go. + * + * @return {boolean} + */ + isSetup: function() { + if (!this._hasJSON) return false; // needs JSON support + if (!this._globalServer) { + if (!this.ravenNotConfiguredError) { + this.ravenNotConfiguredError = true; + this._logDebug('error', 'Error: Raven has not been configured.'); } + return false; + } + return true; + }, - item = { - url: null, - func: UNKNOWN_FUNCTION, - line: null, - column: null - }; + afterLoad: function() { + // TODO: remove window dependence? - if (curr.name) { - item.func = curr.name; - } else if (parts = functionName.exec(curr.toString())) { - item.func = parts[1]; - } + // Attempt to initialize Raven on load + var RavenConfig = _window.RavenConfig; + if (RavenConfig) { + this.config(RavenConfig.dsn, RavenConfig.config).install(); + } + }, - if (typeof item.func === 'undefined') { - try { - item.func = parts.input.substring(0, parts.input.indexOf('{')); - } catch (e) {} - } + showReportDialog: function(options) { + if ( + !_document // doesn't work without a document (React native) + ) + return; - if (funcs['' + curr]) { - recursion = true; - } else { - funcs['' + curr] = true; - } + options = options || {}; - stack.push(item); + var lastEventId = options.eventId || this.lastEventId(); + if (!lastEventId) { + throw new RavenConfigError('Missing eventId'); } - if (depth) { - // console.log('depth is ' + depth); - // console.log('stack is ' + stack.length); - stack.splice(0, depth); + var dsn = options.dsn || this._dsn; + if (!dsn) { + throw new RavenConfigError('Missing DSN'); } - var result = { - name: ex.name, - message: ex.message, - url: getLocationHref(), - stack: stack - }; - augmentStackTraceWithInitialElement(result, ex.sourceURL || ex.fileName, ex.line || ex.lineNumber, ex.message || ex.description); - return result; - } - /** - * Computes a stack trace for an exception. - * @param {Error} ex - * @param {(string|number)=} depth - */ + var encode = encodeURIComponent; + var qs = ''; + qs += '?eventId=' + encode(lastEventId); + qs += '&dsn=' + encode(dsn); + var user = options.user || this._globalContext.user; + if (user) { + if (user.name) qs += '&name=' + encode(user.name); + if (user.email) qs += '&email=' + encode(user.email); + } - function computeStackTrace(ex, depth) { - var stack = null; - depth = depth == null ? 0 : +depth; + var globalServer = this._getGlobalServer(this._parseDSN(dsn)); - try { - stack = computeStackTraceFromStackProp(ex); + var script = _document.createElement('script'); + script.async = true; + script.src = globalServer + '/api/embed/error-page/' + qs; + (_document.head || _document.body).appendChild(script); + }, - if (stack) { - return stack; - } - } catch (e) { - if (TraceKit.debug) { - throw e; - } - } + /**** Private functions ****/ + _ignoreNextOnError: function() { + var self = this; + this._ignoreOnError += 1; + setTimeout(function() { + // onerror should trigger before setTimeout + self._ignoreOnError -= 1; + }); + }, - try { - stack = computeStackTraceByWalkingCallerChain(ex, depth + 1); + _triggerEvent: function(eventType, options) { + // NOTE: `event` is a native browser thing, so let's avoid conflicting wiht it + var evt, key; - if (stack) { - return stack; - } - } catch (e) { - if (TraceKit.debug) { - throw e; - } + if (!this._hasDocument) return; + + options = options || {}; + + eventType = 'raven' + eventType.substr(0, 1).toUpperCase() + eventType.substr(1); + + if (_document.createEvent) { + evt = _document.createEvent('HTMLEvents'); + evt.initEvent(eventType, true, true); + } else { + evt = _document.createEventObject(); + evt.eventType = eventType; } - return { - name: ex.name, - message: ex.message, - url: getLocationHref() - }; - } + for (key in options) + if (hasKey(options, key)) { + evt[key] = options[key]; + } - computeStackTrace.augmentStackTraceWithInitialElement = augmentStackTraceWithInitialElement; - computeStackTrace.computeStackTraceFromStackProp = computeStackTraceFromStackProp; - return computeStackTrace; -}(); + if (_document.createEvent) { + // IE9 if standards + _document.dispatchEvent(evt); + } else { + // IE8 regardless of Quirks or Standards + // IE9 if quirks + try { + _document.fireEvent('on' + evt.eventType.toLowerCase(), evt); + } catch (e) { + // Do nothing + } + } + }, -var tracekit = TraceKit; + /** + * Wraps addEventListener to capture UI breadcrumbs + * @param evtName the event name (e.g. "click") + * @returns {Function} + * @private + */ + _breadcrumbEventHandler: function(evtName) { + var self = this; + return function(evt) { + // reset keypress timeout; e.g. triggering a 'click' after + // a 'keypress' will reset the keypress debounce so that a new + // set of keypresses can be recorded + self._keypressTimeout = null; -var stringify_1 = createCommonjsModule(function (module, exports) { - /* - json-stringify-safe - Like JSON.stringify, but doesn't throw on circular references. - - Originally forked from https://github.com/isaacs/json-stringify-safe - version 5.0.1 on 3/8/2017 and modified to handle Errors serialization - and IE8 compatibility. Tests for this are in test/vendor. - - ISC license: https://github.com/isaacs/json-stringify-safe/blob/master/LICENSE - */ - exports = module.exports = stringify; - exports.getSerialize = serializer; - - function indexOf(haystack, needle) { - for (var i = 0; i < haystack.length; ++i) { - if (haystack[i] === needle) return i; - } - - return -1; - } + // It's possible this handler might trigger multiple times for the same + // event (e.g. event propagation through node ancestors). Ignore if we've + // already captured the event. + if (self._lastCapturedEvent === evt) return; - function stringify(obj, replacer, spaces, cycleReplacer) { - return JSON.stringify(obj, serializer(replacer, cycleReplacer), spaces); - } // https://github.com/ftlabs/js-abbreviate/blob/fa709e5f139e7770a71827b1893f22418097fbda/index.js#L95-L106 + self._lastCapturedEvent = evt; + // try/catch both: + // - accessing evt.target (see getsentry/raven-js#838, #768) + // - `htmlTreeAsString` because it's complex, and just accessing the DOM incorrectly + // can throw an exception in some circumstances. + var target; + try { + target = htmlTreeAsString(evt.target); + } catch (e) { + target = ''; + } - function stringifyError(value) { - var err = { - // These properties are implemented as magical getters and don't show up in for in - stack: value.stack, - message: value.message, - name: value.name + self.captureBreadcrumb({ + category: 'ui.' + evtName, // e.g. ui.click, ui.input + message: target + }); }; + }, + + /** + * Wraps addEventListener to capture keypress UI events + * @returns {Function} + * @private + */ + _keypressEventHandler: function() { + var self = this, + debounceDuration = 1000; // milliseconds - for (var i in value) { - if (Object.prototype.hasOwnProperty.call(value, i)) { - err[i] = value[i]; + // TODO: if somehow user switches keypress target before + // debounce timeout is triggered, we will only capture + // a single breadcrumb from the FIRST target (acceptable?) + return function(evt) { + var target; + try { + target = evt.target; + } catch (e) { + // just accessing event properties can throw an exception in some rare circumstances + // see: https://github.com/getsentry/raven-js/issues/838 + return; } - } + var tagName = target && target.tagName; - return err; - } + // only consider keypress events on actual input elements + // this will disregard keypresses targeting body (e.g. tabbing + // through elements, hotkeys, etc) + if ( + !tagName || + (tagName !== 'INPUT' && tagName !== 'TEXTAREA' && !target.isContentEditable) + ) + return; - function serializer(replacer, cycleReplacer) { - var stack = []; - var keys = []; + // record first keypress in a series, but ignore subsequent + // keypresses until debounce clears + var timeout = self._keypressTimeout; + if (!timeout) { + self._breadcrumbEventHandler('input')(evt); + } + clearTimeout(timeout); + self._keypressTimeout = setTimeout(function() { + self._keypressTimeout = null; + }, debounceDuration); + }; + }, - if (cycleReplacer == null) { - cycleReplacer = function cycleReplacer(key, value) { - if (stack[0] === value) { - return '[Circular ~]'; - } + /** + * Captures a breadcrumb of type "navigation", normalizing input URLs + * @param to the originating URL + * @param from the target URL + * @private + */ + _captureUrlChange: function(from, to) { + var parsedLoc = parseUrl(this._location.href); + var parsedTo = parseUrl(to); + var parsedFrom = parseUrl(from); - return '[Circular ~.' + keys.slice(0, indexOf(stack, value)).join('.') + ']'; - }; - } + // because onpopstate only tells you the "new" (to) value of location.href, and + // not the previous (from) value, we need to track the value of the current URL + // state ourselves + this._lastHref = to; - return function (key, value) { - if (stack.length > 0) { - var thisPos = indexOf(stack, this); - ~thisPos ? stack.splice(thisPos + 1) : stack.push(this); - ~thisPos ? keys.splice(thisPos, Infinity, key) : keys.push(key); + // Use only the path component of the URL if the URL matches the current + // document (almost all the time when using pushState) + if (parsedLoc.protocol === parsedTo.protocol && parsedLoc.host === parsedTo.host) + to = parsedTo.relative; + if (parsedLoc.protocol === parsedFrom.protocol && parsedLoc.host === parsedFrom.host) + from = parsedFrom.relative; - if (~indexOf(stack, value)) { - value = cycleReplacer.call(this, key, value); - } - } else { - stack.push(value); + this.captureBreadcrumb({ + category: 'navigation', + data: { + to: to, + from: from } + }); + }, - return replacer == null ? value instanceof Error ? stringifyError(value) : value : replacer.call(this, key, value); + _patchFunctionToString: function() { + var self = this; + self._originalFunctionToString = Function.prototype.toString; + // eslint-disable-next-line no-extend-native + Function.prototype.toString = function() { + if (typeof this === 'function' && this.__raven__) { + return self._originalFunctionToString.apply(this.__orig__, arguments); + } + return self._originalFunctionToString.apply(this, arguments); }; - } -}); -var stringify_2 = stringify_1.getSerialize; + }, -function RavenConfigError(message) { - this.name = 'RavenConfigError'; - this.message = message; -} + _unpatchFunctionToString: function() { + if (this._originalFunctionToString) { + // eslint-disable-next-line no-extend-native + Function.prototype.toString = this._originalFunctionToString; + } + }, -RavenConfigError.prototype = new Error(); -RavenConfigError.prototype.constructor = RavenConfigError; -var configError = RavenConfigError; + /** + * Wrap timer functions and event targets to catch errors and provide + * better metadata. + */ + _instrumentTryCatch: function() { + var self = this; -var wrapMethod = function wrapMethod(console, level, callback) { - var originalConsoleLevel = console[level]; - var originalConsole = console; + var wrappedBuiltIns = self._wrappedBuiltIns; - if (!(level in console)) { - return; - } + function wrapTimeFn(orig) { + return function(fn, t) { + // preserve arity + // Make a copy of the arguments to prevent deoptimization + // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments + var args = new Array(arguments.length); + for (var i = 0; i < args.length; ++i) { + args[i] = arguments[i]; + } + var originalCallback = args[0]; + if (isFunction(originalCallback)) { + args[0] = self.wrap(originalCallback); + } - var sentryLevel = level === 'warn' ? 'warning' : level; + // IE < 9 doesn't support .call/.apply on setInterval/setTimeout, but it + // also supports only two arguments and doesn't care what this is, so we + // can just call the original function directly. + if (orig.apply) { + return orig.apply(this, args); + } else { + return orig(args[0], args[1]); + } + }; + } - console[level] = function () { - var args = [].slice.call(arguments); - var msg = utils.safeJoin(args, ' '); - var data = { - level: sentryLevel, - logger: 'console', - extra: { - arguments: args - } - }; + var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; - if (level === 'assert') { - if (args[0] === false) { - // Default browsers message - msg = 'Assertion failed: ' + (utils.safeJoin(args.slice(1), ' ') || 'console.assert'); - data.extra.arguments = args.slice(1); - callback && callback(msg, data); + function wrapEventTarget(global) { + var proto = _window[global] && _window[global].prototype; + if (proto && proto.hasOwnProperty && proto.hasOwnProperty('addEventListener')) { + fill( + proto, + 'addEventListener', + function(orig) { + return function(evtName, fn, capture, secure) { + // preserve arity + try { + if (fn && fn.handleEvent) { + fn.handleEvent = self.wrap(fn.handleEvent); + } + } catch (err) { + // can sometimes get 'Permission denied to access property "handle Event' + } + + // More breadcrumb DOM capture ... done here and not in `_instrumentBreadcrumbs` + // so that we don't have more than one wrapper function + var before, clickHandler, keypressHandler; + + if ( + autoBreadcrumbs && + autoBreadcrumbs.dom && + (global === 'EventTarget' || global === 'Node') + ) { + // NOTE: generating multiple handlers per addEventListener invocation, should + // revisit and verify we can just use one (almost certainly) + clickHandler = self._breadcrumbEventHandler('click'); + keypressHandler = self._keypressEventHandler(); + before = function(evt) { + // need to intercept every DOM event in `before` argument, in case that + // same wrapped method is re-used for different events (e.g. mousemove THEN click) + // see #724 + if (!evt) return; + + var eventType; + try { + eventType = evt.type; + } catch (e) { + // just accessing event properties can throw an exception in some rare circumstances + // see: https://github.com/getsentry/raven-js/issues/838 + return; + } + if (eventType === 'click') return clickHandler(evt); + else if (eventType === 'keypress') return keypressHandler(evt); + }; + } + return orig.call( + this, + evtName, + self.wrap(fn, undefined, before), + capture, + secure + ); + }; + }, + wrappedBuiltIns + ); + fill( + proto, + 'removeEventListener', + function(orig) { + return function(evt, fn, capture, secure) { + try { + fn = fn && (fn.__raven_wrapper__ ? fn.__raven_wrapper__ : fn); + } catch (e) { + // ignore, accessing __raven_wrapper__ will throw in some Selenium environments + } + return orig.call(this, evt, fn, capture, secure); + }; + }, + wrappedBuiltIns + ); } - } else { - callback && callback(msg, data); - } // this fails for some browsers. :( + } + fill(_window, 'setTimeout', wrapTimeFn, wrappedBuiltIns); + fill(_window, 'setInterval', wrapTimeFn, wrappedBuiltIns); + if (_window.requestAnimationFrame) { + fill( + _window, + 'requestAnimationFrame', + function(orig) { + return function(cb) { + return orig(self.wrap(cb)); + }; + }, + wrappedBuiltIns + ); + } - if (originalConsoleLevel) { - // IE9 doesn't allow calling apply on console functions directly - // See: https://stackoverflow.com/questions/5472938/does-ie9-support-console-log-and-is-it-a-real-function#answer-5473193 - Function.prototype.apply.call(originalConsoleLevel, originalConsole, args); + // event targets borrowed from bugsnag-js: + // https://github.com/bugsnag/bugsnag-js/blob/master/src/bugsnag.js#L666 + var eventTargets = [ + 'EventTarget', + 'Window', + 'Node', + 'ApplicationCache', + 'AudioTrackList', + 'ChannelMergerNode', + 'CryptoOperation', + 'EventSource', + 'FileReader', + 'HTMLUnknownElement', + 'IDBDatabase', + 'IDBRequest', + 'IDBTransaction', + 'KeyOperation', + 'MediaController', + 'MessagePort', + 'ModalWindow', + 'Notification', + 'SVGElementInstance', + 'Screen', + 'TextTrack', + 'TextTrackCue', + 'TextTrackList', + 'WebSocket', + 'WebSocketWorker', + 'Worker', + 'XMLHttpRequest', + 'XMLHttpRequestEventTarget', + 'XMLHttpRequestUpload' + ]; + for (var i = 0; i < eventTargets.length; i++) { + wrapEventTarget(eventTargets[i]); } - }; -}; + }, -var console$1 = { - wrapMethod: wrapMethod -}; - -/*global XDomainRequest:false */ + /** + * Instrument browser built-ins w/ breadcrumb capturing + * - XMLHttpRequests + * - DOM interactions (click/typing) + * - window.location changes + * - console + * + * Can be disabled or individually configured via the `autoBreadcrumbs` config option + */ + _instrumentBreadcrumbs: function() { + var self = this; + var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; -var isError = utils.isError; -var isObject = utils.isObject; -var isErrorEvent = utils.isErrorEvent; -var isUndefined = utils.isUndefined; -var isFunction = utils.isFunction; -var isString = utils.isString; -var isArray = utils.isArray; -var isEmptyObject = utils.isEmptyObject; -var each = utils.each; -var objectMerge = utils.objectMerge; -var truncate = utils.truncate; -var objectFrozen = utils.objectFrozen; -var hasKey = utils.hasKey; -var joinRegExp = utils.joinRegExp; -var urlencode = utils.urlencode; -var uuid4 = utils.uuid4; -var htmlTreeAsString = utils.htmlTreeAsString; -var isSameException = utils.isSameException; -var isSameStacktrace = utils.isSameStacktrace; -var parseUrl = utils.parseUrl; -var fill = utils.fill; -var supportsFetch = utils.supportsFetch; -var wrapConsoleMethod = console$1.wrapMethod; -var dsnKeys = 'source protocol user pass host port path'.split(' '); -var dsnPattern = /^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/; + var wrappedBuiltIns = self._wrappedBuiltIns; -function now() { - return +new Date(); -} // This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) + function wrapProp(prop, xhr) { + if (prop in xhr && isFunction(xhr[prop])) { + fill(xhr, prop, function(orig) { + return self.wrap(orig); + }); // intentionally don't track filled methods on XHR instances + } + } + if (autoBreadcrumbs.xhr && 'XMLHttpRequest' in _window) { + var xhrproto = _window.XMLHttpRequest && _window.XMLHttpRequest.prototype; + fill( + xhrproto, + 'open', + function(origOpen) { + return function(method, url) { + // preserve arity -var _window$1 = typeof window !== 'undefined' ? window : typeof commonjsGlobal !== 'undefined' ? commonjsGlobal : typeof self !== 'undefined' ? self : {}; + // if Sentry key appears in URL, don't capture + if (isString(url) && url.indexOf(self._globalKey) === -1) { + this.__raven_xhr = { + method: method, + url: url, + status_code: null + }; + } -var _document = _window$1.document; -var _navigator = _window$1.navigator; + return origOpen.apply(this, arguments); + }; + }, + wrappedBuiltIns + ); + + fill( + xhrproto, + 'send', + function(origSend) { + return function() { + // preserve arity + var xhr = this; -function keepOriginalCallback(original, callback) { - return isFunction(callback) ? function (data) { - return callback(data, original); - } : callback; -} // First, check for JSON support -// If there is no JSON, we no-op the core features of Raven -// since JSON is required to encode the payload + function onreadystatechangeHandler() { + if (xhr.__raven_xhr && xhr.readyState === 4) { + try { + // touching statusCode in some platforms throws + // an exception + xhr.__raven_xhr.status_code = xhr.status; + } catch (e) { + /* do nothing */ + } + self.captureBreadcrumb({ + type: 'http', + category: 'xhr', + data: xhr.__raven_xhr + }); + } + } -function Raven$1() { - this._hasJSON = !!(_typeof(JSON) === 'object' && JSON.stringify); // Raven can run in contexts where there's no document (react-native) + var props = ['onload', 'onerror', 'onprogress']; + for (var j = 0; j < props.length; j++) { + wrapProp(props[j], xhr); + } - this._hasDocument = !isUndefined(_document); - this._hasNavigator = !isUndefined(_navigator); - this._lastCapturedException = null; - this._lastData = null; - this._lastEventId = null; - this._globalServer = null; - this._globalKey = null; - this._globalProject = null; - this._globalContext = {}; - this._globalOptions = { - // SENTRY_RELEASE can be injected by https://github.com/getsentry/sentry-webpack-plugin - release: _window$1.SENTRY_RELEASE && _window$1.SENTRY_RELEASE.id, - logger: 'javascript', - ignoreErrors: [], - ignoreUrls: [], - whitelistUrls: [], - includePaths: [], - headers: null, - collectWindowErrors: true, - maxMessageLength: 0, - // By default, truncates URL values to 250 chars - maxUrlLength: 250, - stackTraceLimit: 50, - autoBreadcrumbs: true, - instrument: true, - sampleRate: 1 - }; - this._fetchDefaults = { - method: 'POST', - keepalive: true, - referrerPolicy: 'origin' - }; - this._ignoreOnError = 0; - this._isRavenInstalled = false; - this._originalErrorStackTraceLimit = Error.stackTraceLimit; // capture references to window.console *and* all its methods first - // before the console plugin has a chance to monkey patch + if ('onreadystatechange' in xhr && isFunction(xhr.onreadystatechange)) { + fill( + xhr, + 'onreadystatechange', + function(orig) { + return self.wrap(orig, undefined, onreadystatechangeHandler); + } /* intentionally don't track this instrumentation */ + ); + } else { + // if onreadystatechange wasn't actually set by the page on this xhr, we + // are free to set our own and capture the breadcrumb + xhr.onreadystatechange = onreadystatechangeHandler; + } - this._originalConsole = _window$1.console || {}; - this._originalConsoleMethods = {}; - this._plugins = []; - this._startTime = now(); - this._wrappedBuiltIns = []; - this._breadcrumbs = []; - this._lastCapturedEvent = null; - this._keypressTimeout; - this._location = _window$1.location; - this._lastHref = this._location && this._location.href; + return origSend.apply(this, arguments); + }; + }, + wrappedBuiltIns + ); + } - this._resetBackoff(); // eslint-disable-next-line guard-for-in + if (autoBreadcrumbs.xhr && supportsFetch()) { + fill( + _window, + 'fetch', + function(origFetch) { + return function() { + // preserve arity + // Make a copy of the arguments to prevent deoptimization + // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments + var args = new Array(arguments.length); + for (var i = 0; i < args.length; ++i) { + args[i] = arguments[i]; + } + var fetchInput = args[0]; + var method = 'GET'; + var url; - for (var method in this._originalConsole) { - this._originalConsoleMethods[method] = this._originalConsole[method]; - } -} -/* - * The core Raven singleton - * - * @this {Raven} - */ + if (typeof fetchInput === 'string') { + url = fetchInput; + } else if ('Request' in _window && fetchInput instanceof _window.Request) { + url = fetchInput.url; + if (fetchInput.method) { + method = fetchInput.method; + } + } else { + url = '' + fetchInput; + } + // if Sentry key appears in URL, don't capture, as it's our own request + if (url.indexOf(self._globalKey) !== -1) { + return origFetch.apply(this, args); + } -Raven$1.prototype = { - // Hardcode version string so that raven source can be loaded directly via - // webpack (using a build step causes webpack #1617). Grunt verifies that - // this value matches package.json during build. - // See: https://github.com/getsentry/raven-js/issues/465 - VERSION: '3.22.2', - debug: false, - TraceKit: tracekit, - // alias to TraceKit + if (args[1] && args[1].method) { + method = args[1].method; + } - /* - * Configure Raven with a DSN and extra options - * - * @param {string} dsn The public Sentry DSN - * @param {object} options Set of global options [optional] - * @return {Raven} - */ - config: function config(dsn, options) { - var self = this; + var fetchData = { + method: method, + url: url, + status_code: null + }; - if (self._globalServer) { - this._logDebug('error', 'Error: Raven has already been configured'); + return origFetch + .apply(this, args) + .then(function(response) { + fetchData.status_code = response.status; + + self.captureBreadcrumb({ + type: 'http', + category: 'fetch', + data: fetchData + }); + + return response; + }) + ['catch'](function(err) { + // if there is an error performing the request + self.captureBreadcrumb({ + type: 'http', + category: 'fetch', + data: fetchData, + level: 'error' + }); + + throw err; + }); + }; + }, + wrappedBuiltIns + ); + } - return self; + // Capture breadcrumbs from any click that is unhandled / bubbled up all the way + // to the document. Do this before we instrument addEventListener. + if (autoBreadcrumbs.dom && this._hasDocument) { + if (_document.addEventListener) { + _document.addEventListener('click', self._breadcrumbEventHandler('click'), false); + _document.addEventListener('keypress', self._keypressEventHandler(), false); + } else if (_document.attachEvent) { + // IE8 Compatibility + _document.attachEvent('onclick', self._breadcrumbEventHandler('click')); + _document.attachEvent('onkeypress', self._keypressEventHandler()); + } } - if (!dsn) return self; - var globalOptions = self._globalOptions; // merge in options + // record navigation (URL) changes + // NOTE: in Chrome App environment, touching history.pushState, *even inside + // a try/catch block*, will cause Chrome to output an error to console.error + // borrowed from: https://github.com/angular/angular.js/pull/13945/files + var chrome = _window.chrome; + var isChromePackagedApp = chrome && chrome.app && chrome.app.runtime; + var hasPushAndReplaceState = + !isChromePackagedApp && + _window.history && + history.pushState && + history.replaceState; + if (autoBreadcrumbs.location && hasPushAndReplaceState) { + // TODO: remove onpopstate handler on uninstall() + var oldOnPopState = _window.onpopstate; + _window.onpopstate = function() { + var currentHref = self._location.href; + self._captureUrlChange(self._lastHref, currentHref); - if (options) { - each(options, function (key, value) { - // tags and extra are special and need to be put into context - if (key === 'tags' || key === 'extra' || key === 'user') { - self._globalContext[key] = value; - } else { - globalOptions[key] = value; + if (oldOnPopState) { + return oldOnPopState.apply(this, arguments); } - }); - } - - self.setDSN(dsn); // "Script error." is hard coded into browsers for errors that it can't read. - // this is the result of a script being pulled in from an external domain and CORS. + }; - globalOptions.ignoreErrors.push(/^Script error\.?$/); - globalOptions.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/); // join regexp rules into one big rule + var historyReplacementFunction = function(origHistFunction) { + // note history.pushState.length is 0; intentionally not declaring + // params to preserve 0 arity + return function(/* state, title, url */) { + var url = arguments.length > 2 ? arguments[2] : undefined; - globalOptions.ignoreErrors = joinRegExp(globalOptions.ignoreErrors); - globalOptions.ignoreUrls = globalOptions.ignoreUrls.length ? joinRegExp(globalOptions.ignoreUrls) : false; - globalOptions.whitelistUrls = globalOptions.whitelistUrls.length ? joinRegExp(globalOptions.whitelistUrls) : false; - globalOptions.includePaths = joinRegExp(globalOptions.includePaths); - globalOptions.maxBreadcrumbs = Math.max(0, Math.min(globalOptions.maxBreadcrumbs || 100, 100)); // default and hard limit is 100 + // url argument is optional + if (url) { + // coerce to string (this is what pushState does) + self._captureUrlChange(self._lastHref, url + ''); + } - var autoBreadcrumbDefaults = { - xhr: true, - console: true, - dom: true, - location: true, - sentry: true - }; - var autoBreadcrumbs = globalOptions.autoBreadcrumbs; + return origHistFunction.apply(this, arguments); + }; + }; - if ({}.toString.call(autoBreadcrumbs) === '[object Object]') { - autoBreadcrumbs = objectMerge(autoBreadcrumbDefaults, autoBreadcrumbs); - } else if (autoBreadcrumbs !== false) { - autoBreadcrumbs = autoBreadcrumbDefaults; + fill(history, 'pushState', historyReplacementFunction, wrappedBuiltIns); + fill(history, 'replaceState', historyReplacementFunction, wrappedBuiltIns); } - globalOptions.autoBreadcrumbs = autoBreadcrumbs; - var instrumentDefaults = { - tryCatch: true - }; - var instrument = globalOptions.instrument; + if (autoBreadcrumbs.console && 'console' in _window && console.log) { + // console + var consoleMethodCallback = function(msg, data) { + self.captureBreadcrumb({ + message: msg, + level: data.level, + category: 'console' + }); + }; - if ({}.toString.call(instrument) === '[object Object]') { - instrument = objectMerge(instrumentDefaults, instrument); - } else if (instrument !== false) { - instrument = instrumentDefaults; + each(['debug', 'info', 'warn', 'error', 'log'], function(_, level) { + wrapConsoleMethod(console, level, consoleMethodCallback); + }); } - - globalOptions.instrument = instrument; - tracekit.collectWindowErrors = !!globalOptions.collectWindowErrors; // return for chaining - - return self; }, - /* - * Installs a global window.onerror error handler - * to capture and report uncaught exceptions. - * At this point, install() is required to be called due - * to the way TraceKit is set up. - * - * @return {Raven} - */ - install: function install() { - var self = this; - - if (self.isSetup() && !self._isRavenInstalled) { - tracekit.report.subscribe(function () { - self._handleOnErrorStackInfo.apply(self, arguments); - }); - - self._patchFunctionToString(); - - if (self._globalOptions.instrument && self._globalOptions.instrument.tryCatch) { - self._instrumentTryCatch(); - } - - if (self._globalOptions.autoBreadcrumbs) self._instrumentBreadcrumbs(); // Install all of the plugins + _restoreBuiltIns: function() { + // restore any wrapped builtins + var builtin; + while (this._wrappedBuiltIns.length) { + builtin = this._wrappedBuiltIns.shift(); - self._drainPlugins(); + var obj = builtin[0], + name = builtin[1], + orig = builtin[2]; - self._isRavenInstalled = true; + obj[name] = orig; } + }, - Error.stackTraceLimit = self._globalOptions.stackTraceLimit; - return this; + _restoreConsole: function() { + // eslint-disable-next-line guard-for-in + for (var method in this._originalConsoleMethods) { + this._originalConsole[method] = this._originalConsoleMethods[method]; + } }, - /* - * Set the DSN (can be called multiple time unlike config) - * - * @param {string} dsn The public Sentry DSN - */ - setDSN: function setDSN(dsn) { - var self = this, - uri = self._parseDSN(dsn), - lastSlash = uri.path.lastIndexOf('/'), - path = uri.path.substr(1, lastSlash); - - self._dsn = dsn; - self._globalKey = uri.user; - self._globalSecret = uri.pass && uri.pass.substr(1); - self._globalProject = uri.path.substr(lastSlash + 1); - self._globalServer = self._getGlobalServer(uri); - self._globalEndpoint = self._globalServer + '/' + path + 'api/' + self._globalProject + '/store/'; // Reset backoff state since we may be pointing at a - // new project/server - - this._resetBackoff(); - }, - - /* - * Wrap code within a context so Raven can capture errors - * reliably across domains that is executed immediately. - * - * @param {object} options A specific set of options for this context [optional] - * @param {function} func The callback to be immediately executed within the context - * @param {array} args An array of arguments to be called with the callback [optional] - */ - context: function context(options, func, args) { - if (isFunction(options)) { - args = func || []; - func = options; - options = undefined; - } + _drainPlugins: function() { + var self = this; - return this.wrap(options, func).apply(this, args); + // FIX ME TODO + each(this._plugins, function(_, plugin) { + var installer = plugin[0]; + var args = plugin[1]; + installer.apply(self, [self].concat(args)); + }); }, - /* - * Wrap code within a context and returns back a new function to be executed - * - * @param {object} options A specific set of options for this context [optional] - * @param {function} func The function to be wrapped in a new context - * @param {function} func A function to call before the try/catch wrapper [optional, private] - * @return {function} The newly wrapped functions with a context - */ - wrap: function wrap(options, func, _before) { - var self = this; // 1 argument has been passed, and it's not a function - // so just return it - - if (isUndefined(func) && !isFunction(options)) { - return options; - } // options is optional - - - if (isFunction(options)) { - func = options; - options = undefined; - } // At this point, we've passed along 2 arguments, and the second one - // is not a function either, so we'll just return the second argument. - - - if (!isFunction(func)) { - return func; - } // We don't wanna wrap it twice! - + _parseDSN: function(str) { + var m = dsnPattern.exec(str), + dsn = {}, + i = 7; try { - if (func.__raven__) { - return func; - } // If this has already been wrapped in the past, return that - - - if (func.__raven_wrapper__) { - return func.__raven_wrapper__; - } + while (i--) dsn[dsnKeys[i]] = m[i] || ''; } catch (e) { - // Just accessing custom props in some Selenium environments - // can cause a "Permission denied" exception (see raven-js#495). - // Bail on wrapping and return the function as-is (defers to window.onerror). - return func; + throw new RavenConfigError('Invalid DSN: ' + str); } - function wrapped() { - var args = [], - i = arguments.length, - deep = !options || options && options.deep !== false; - - if (_before && isFunction(_before)) { - _before.apply(this, arguments); - } // Recursively wrap all of a function's arguments that are - // functions themselves. - - - while (i--) { - args[i] = deep ? self.wrap(options, arguments[i]) : arguments[i]; - } - - try { - // Attempt to invoke user-land function - // NOTE: If you are a Sentry user, and you are seeing this stack frame, it - // means Raven caught an error invoking your application code. This is - // expected behavior and NOT indicative of a bug with Raven.js. - return func.apply(this, args); - } catch (e) { - self._ignoreNextOnError(); - - self.captureException(e, options); - throw e; - } - } // copy over properties of the old function - - - for (var property in func) { - if (hasKey(func, property)) { - wrapped[property] = func[property]; - } + if (dsn.pass && !this._globalOptions.allowSecretKey) { + throw new RavenConfigError( + 'Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key' + ); } - wrapped.prototype = func.prototype; - func.__raven_wrapper__ = wrapped; // Signal that this function has been wrapped/filled already - // for both debugging and to prevent it to being wrapped/filled twice - - wrapped.__raven__ = true; - wrapped.__orig__ = func; - return wrapped; + return dsn; }, - /* - * Uninstalls the global error handler. - * - * @return {Raven} - */ - uninstall: function uninstall() { - tracekit.report.uninstall(); - - this._unpatchFunctionToString(); - - this._restoreBuiltIns(); - - this._restoreConsole(); + _getGlobalServer: function(uri) { + // assemble the endpoint from the uri pieces + var globalServer = '//' + uri.host + (uri.port ? ':' + uri.port : ''); - Error.stackTraceLimit = this._originalErrorStackTraceLimit; - this._isRavenInstalled = false; - return this; + if (uri.protocol) { + globalServer = uri.protocol + ':' + globalServer; + } + return globalServer; }, - /* - * Manually capture an exception and send it over to Sentry - * - * @param {error} ex An exception to be logged - * @param {object} options A specific set of options for this error [optional] - * @return {Raven} - */ - captureException: function captureException(ex, options) { - options = objectMerge({ - trimHeadFrames: 0 - }, options ? options : {}); // Cases for sending ex as a message, rather than an exception - - var isNotError = !isError(ex); - var isNotErrorEvent = !isErrorEvent(ex); - var isErrorEventWithoutError = isErrorEvent(ex) && !ex.error; - - if (isNotError && isNotErrorEvent || isErrorEventWithoutError) { - return this.captureMessage(ex, objectMerge(options, { - stacktrace: true, - // if we fall back to captureMessage, default to attempting a new trace - trimHeadFrames: options.trimHeadFrames + 1 - })); - } // Get actual Error from ErrorEvent + _handleOnErrorStackInfo: function() { + // if we are intentionally ignoring errors via onerror, bail out + if (!this._ignoreOnError) { + this._handleStackInfo.apply(this, arguments); + } + }, + _handleStackInfo: function(stackInfo, options) { + var frames = this._prepareFrames(stackInfo, options); - if (isErrorEvent(ex)) ex = ex.error; // Store the raw exception object for potential debugging and introspection + this._triggerEvent('handle', { + stackInfo: stackInfo, + options: options + }); - this._lastCapturedException = ex; // TraceKit.report will re-raise any exception passed to it, - // which means you have to wrap it in try/catch. Instead, we - // can wrap it here and only re-raise if TraceKit.report - // raises an exception different from the one we asked to - // report on. + this._processException( + stackInfo.name, + stackInfo.message, + stackInfo.url, + stackInfo.lineno, + frames, + options + ); + }, - try { - var stack = tracekit.computeStackTrace(ex); + _prepareFrames: function(stackInfo, options) { + var self = this; + var frames = []; + if (stackInfo.stack && stackInfo.stack.length) { + each(stackInfo.stack, function(i, stack) { + var frame = self._normalizeFrame(stack, stackInfo.url); + if (frame) { + frames.push(frame); + } + }); - this._handleStackInfo(stack, options); - } catch (ex1) { - if (ex !== ex1) { - throw ex1; + // e.g. frames captured via captureMessage throw + if (options && options.trimHeadFrames) { + for (var j = 0; j < options.trimHeadFrames && j < frames.length; j++) { + frames[j].in_app = false; + } } } - - return this; + frames = frames.slice(0, this._globalOptions.stackTraceLimit); + return frames; }, - /* - * Manually send a message to Sentry - * - * @param {string} msg A plain message to be captured in Sentry - * @param {object} options A specific set of options for this message [optional] - * @return {Raven} - */ - captureMessage: function captureMessage(msg, options) { - // config() automagically converts ignoreErrors from a list to a RegExp so we need to test for an - // early call; we'll error on the side of logging anything called before configuration since it's - // probably something you should see: - if (!!this._globalOptions.ignoreErrors.test && this._globalOptions.ignoreErrors.test(msg)) { - return; - } + _normalizeFrame: function(frame, stackInfoUrl) { + // normalize the frames data + var normalized = { + filename: frame.url, + lineno: frame.line, + colno: frame.column, + function: frame.func || '?' + }; - options = options || {}; - var data = objectMerge({ - message: msg + '' // Make sure it's actually a string + // Case when we don't have any information about the error + // E.g. throwing a string or raw object, instead of an `Error` in Firefox + // Generating synthetic error doesn't add any value here + // + // We should probably somehow let a user know that they should fix their code + if (!frame.url) { + normalized.filename = stackInfoUrl; // fallback to whole stacks url from onerror handler + } - }, options); - var ex; // Generate a "synthetic" stack trace from this point. - // NOTE: If you are a Sentry user, and you are seeing this stack frame, it is NOT indicative - // of a bug with Raven.js. Sentry generates synthetic traces either by configuration, - // or if it catches a thrown object without a "stack" property. + normalized.in_app = !// determine if an exception came from outside of our app + // first we check the global includePaths list. + ( + (!!this._globalOptions.includePaths.test && + !this._globalOptions.includePaths.test(normalized.filename)) || + // Now we check for fun, if the function name is Raven or TraceKit + /(Raven|TraceKit)\./.test(normalized['function']) || + // finally, we do a last ditch effort and check for raven.min.js + /raven\.(min\.)?js$/.test(normalized.filename) + ); - try { - throw new Error(msg); - } catch (ex1) { - ex = ex1; - } // null exception name so `Error` isn't prefixed to msg + return normalized; + }, + _processException: function(type, message, fileurl, lineno, frames, options) { + var prefixedMessage = (type ? type + ': ' : '') + (message || ''); + if ( + !!this._globalOptions.ignoreErrors.test && + (this._globalOptions.ignoreErrors.test(message) || + this._globalOptions.ignoreErrors.test(prefixedMessage)) + ) { + return; + } - ex.name = null; - var stack = tracekit.computeStackTrace(ex); // stack[0] is `throw new Error(msg)` call itself, we are interested in the frame that was just before that, stack[1] + var stacktrace; - var initialCall = isArray(stack.stack) && stack.stack[1]; - var fileurl = initialCall && initialCall.url || ''; + if (frames && frames.length) { + fileurl = frames[0].filename || fileurl; + // Sentry expects frames oldest to newest + // and JS sends them as newest to oldest + frames.reverse(); + stacktrace = {frames: frames}; + } else if (fileurl) { + stacktrace = { + frames: [ + { + filename: fileurl, + lineno: lineno, + in_app: true + } + ] + }; + } - if (!!this._globalOptions.ignoreUrls.test && this._globalOptions.ignoreUrls.test(fileurl)) { + if ( + !!this._globalOptions.ignoreUrls.test && + this._globalOptions.ignoreUrls.test(fileurl) + ) { return; } - if (!!this._globalOptions.whitelistUrls.test && !this._globalOptions.whitelistUrls.test(fileurl)) { + if ( + !!this._globalOptions.whitelistUrls.test && + !this._globalOptions.whitelistUrls.test(fileurl) + ) { return; } - if (this._globalOptions.stacktrace || options && options.stacktrace) { - options = objectMerge({ - // fingerprint on msg, not stack trace (legacy behavior, could be - // revisited) - fingerprint: msg, - // since we know this is a synthetic trace, the top N-most frames - // MUST be from Raven.js, so mark them as in_app later by setting - // trimHeadFrames - trimHeadFrames: (options.trimHeadFrames || 0) + 1 - }, options); - - var frames = this._prepareFrames(stack, options); - - data.stacktrace = { - // Sentry expects frames oldest to newest - frames: frames.reverse() - }; - } // Fire away! - + var data = objectMerge( + { + // sentry.interfaces.Exception + exception: { + values: [ + { + type: type, + value: message, + stacktrace: stacktrace + } + ] + }, + culprit: fileurl + }, + options + ); + // Fire away! this._send(data); - - return this; }, - captureBreadcrumb: function captureBreadcrumb(obj) { - var crumb = objectMerge({ - timestamp: now() / 1000 - }, obj); - if (isFunction(this._globalOptions.breadcrumbCallback)) { - var result = this._globalOptions.breadcrumbCallback(crumb); + _trimPacket: function(data) { + // For now, we only want to truncate the two different messages + // but this could/should be expanded to just trim everything + var max = this._globalOptions.maxMessageLength; + if (data.message) { + data.message = truncate(data.message, max); + } + if (data.exception) { + var exception = data.exception.values[0]; + exception.value = truncate(exception.value, max); + } - if (isObject(result) && !isEmptyObject(result)) { - crumb = result; - } else if (result === false) { - return this; + var request = data.request; + if (request) { + if (request.url) { + request.url = truncate(request.url, this._globalOptions.maxUrlLength); + } + if (request.Referer) { + request.Referer = truncate(request.Referer, this._globalOptions.maxUrlLength); } } - this._breadcrumbs.push(crumb); + if (data.breadcrumbs && data.breadcrumbs.values) + this._trimBreadcrumbs(data.breadcrumbs); - if (this._breadcrumbs.length > this._globalOptions.maxBreadcrumbs) { - this._breadcrumbs.shift(); - } - - return this; - }, - addPlugin: function addPlugin(plugin - /*arg1, arg2, ... argN*/ - ) { - var pluginArgs = [].slice.call(arguments, 1); - - this._plugins.push([plugin, pluginArgs]); - - if (this._isRavenInstalled) { - this._drainPlugins(); - } - - return this; - }, - - /* - * Set/clear a user to be sent along with the payload. - * - * @param {object} user An object representing user data [optional] - * @return {Raven} - */ - setUserContext: function setUserContext(user) { - // Intentionally do not merge here since that's an unexpected behavior. - this._globalContext.user = user; - return this; + return data; }, - /* - * Merge extra attributes to be sent along with the payload. - * - * @param {object} extra An object representing extra data [optional] - * @return {Raven} - */ - setExtraContext: function setExtraContext(extra) { - this._mergeContext('extra', extra); - - return this; - }, + /** + * Truncate breadcrumb values (right now just URLs) + */ + _trimBreadcrumbs: function(breadcrumbs) { + // known breadcrumb properties with urls + // TODO: also consider arbitrary prop values that start with (https?)?:// + var urlProps = ['to', 'from', 'url'], + urlProp, + crumb, + data; - /* - * Merge tags to be sent along with the payload. - * - * @param {object} tags An object representing tags [optional] - * @return {Raven} - */ - setTagsContext: function setTagsContext(tags) { - this._mergeContext('tags', tags); + for (var i = 0; i < breadcrumbs.values.length; ++i) { + crumb = breadcrumbs.values[i]; + if ( + !crumb.hasOwnProperty('data') || + !isObject(crumb.data) || + objectFrozen(crumb.data) + ) + continue; - return this; + data = objectMerge({}, crumb.data); + for (var j = 0; j < urlProps.length; ++j) { + urlProp = urlProps[j]; + if (data.hasOwnProperty(urlProp) && data[urlProp]) { + data[urlProp] = truncate(data[urlProp], this._globalOptions.maxUrlLength); + } + } + breadcrumbs.values[i].data = data; + } }, - /* - * Clear all of the context. - * - * @return {Raven} - */ - clearContext: function clearContext() { - this._globalContext = {}; - return this; - }, + _getHttpData: function() { + if (!this._hasNavigator && !this._hasDocument) return; + var httpData = {}; - /* - * Get a copy of the current context. This cannot be mutated. - * - * @return {object} copy of context - */ - getContext: function getContext() { - // lol javascript - return JSON.parse(stringify_1(this._globalContext)); - }, + if (this._hasNavigator && _navigator.userAgent) { + httpData.headers = { + 'User-Agent': navigator.userAgent + }; + } - /* - * Set environment of application - * - * @param {string} environment Typically something like 'production'. - * @return {Raven} - */ - setEnvironment: function setEnvironment(environment) { - this._globalOptions.environment = environment; - return this; - }, + // Check in `window` instead of `document`, as we may be in ServiceWorker environment + if (_window.location && _window.location.href) { + httpData.url = _window.location.href; + } - /* - * Set release version of application - * - * @param {string} release Typically something like a git SHA to identify version - * @return {Raven} - */ - setRelease: function setRelease(release) { - this._globalOptions.release = release; - return this; - }, + if (this._hasDocument && _document.referrer) { + if (!httpData.headers) httpData.headers = {}; + httpData.headers.Referer = _document.referrer; + } - /* - * Set the dataCallback option - * - * @param {function} callback The callback to run which allows the - * data blob to be mutated before sending - * @return {Raven} - */ - setDataCallback: function setDataCallback(callback) { - var original = this._globalOptions.dataCallback; - this._globalOptions.dataCallback = keepOriginalCallback(original, callback); - return this; + return httpData; }, - /* - * Set the breadcrumbCallback option - * - * @param {function} callback The callback to run which allows filtering - * or mutating breadcrumbs - * @return {Raven} - */ - setBreadcrumbCallback: function setBreadcrumbCallback(callback) { - var original = this._globalOptions.breadcrumbCallback; - this._globalOptions.breadcrumbCallback = keepOriginalCallback(original, callback); - return this; + _resetBackoff: function() { + this._backoffDuration = 0; + this._backoffStart = null; }, - /* - * Set the shouldSendCallback option - * - * @param {function} callback The callback to run which allows - * introspecting the blob before sending - * @return {Raven} - */ - setShouldSendCallback: function setShouldSendCallback(callback) { - var original = this._globalOptions.shouldSendCallback; - this._globalOptions.shouldSendCallback = keepOriginalCallback(original, callback); - return this; + _shouldBackoff: function() { + return this._backoffDuration && now() - this._backoffStart < this._backoffDuration; }, /** - * Override the default HTTP transport mechanism that transmits data - * to the Sentry server. - * - * @param {function} transport Function invoked instead of the default - * `makeRequest` handler. + * Returns true if the in-process data payload matches the signature + * of the previously-sent data * - * @return {Raven} + * NOTE: This has to be done at this level because TraceKit can generate + * data from window.onerror WITHOUT an exception object (IE8, IE9, + * other old browsers). This can take the form of an "exception" + * data object with a single frame (derived from the onerror args). */ - setTransport: function setTransport(transport) { - this._globalOptions.transport = transport; - return this; - }, + _isRepeatData: function(current) { + var last = this._lastData; - /* - * Get the latest raw exception that was captured by Raven. - * - * @return {error} - */ - lastException: function lastException() { - return this._lastCapturedException; - }, + if ( + !last || + current.message !== last.message || // defined for captureMessage + current.culprit !== last.culprit // defined for captureException/onerror + ) + return false; - /* - * Get the last event id - * - * @return {string} - */ - lastEventId: function lastEventId() { - return this._lastEventId; + // Stacktrace interface (i.e. from captureMessage) + if (current.stacktrace || last.stacktrace) { + return isSameStacktrace(current.stacktrace, last.stacktrace); + } else if (current.exception || last.exception) { + // Exception interface (i.e. from captureException/onerror) + return isSameException(current.exception, last.exception); + } + + return true; }, - /* - * Determine if Raven is setup and ready to go. - * - * @return {boolean} - */ - isSetup: function isSetup() { - if (!this._hasJSON) return false; // needs JSON support + _setBackoffState: function(request) { + // If we are already in a backoff state, don't change anything + if (this._shouldBackoff()) { + return; + } - if (!this._globalServer) { - if (!this.ravenNotConfiguredError) { - this.ravenNotConfiguredError = true; + var status = request.status; - this._logDebug('error', 'Error: Raven has not been configured.'); + // 400 - project_id doesn't exist or some other fatal + // 401 - invalid/revoked dsn + // 429 - too many requests + if (!(status === 400 || status === 401 || status === 429)) return; + + var retry; + try { + // If Retry-After is not in Access-Control-Expose-Headers, most + // browsers will throw an exception trying to access it + if (supportsFetch()) { + retry = request.headers.get('Retry-After'); + } else { + retry = request.getResponseHeader('Retry-After'); } - return false; + // Retry-After is returned in seconds + retry = parseInt(retry, 10) * 1000; + } catch (e) { + /* eslint no-empty:0 */ } - return true; - }, - afterLoad: function afterLoad() { - // TODO: remove window dependence? - // Attempt to initialize Raven on load - var RavenConfig = _window$1.RavenConfig; + this._backoffDuration = retry + ? // If Sentry server returned a Retry-After value, use it + retry + : // Otherwise, double the last backoff duration (starts at 1 sec) + this._backoffDuration * 2 || 1000; - if (RavenConfig) { - this.config(RavenConfig.dsn, RavenConfig.config).install(); - } + this._backoffStart = now(); }, - showReportDialog: function showReportDialog(options) { - if (!_document // doesn't work without a document (React native) - ) return; - options = options || {}; - var lastEventId = options.eventId || this.lastEventId(); - if (!lastEventId) { - throw new configError('Missing eventId'); - } + _send: function(data) { + var globalOptions = this._globalOptions; - var dsn = options.dsn || this._dsn; + var baseData = { + project: this._globalProject, + logger: globalOptions.logger, + platform: 'javascript' + }, + httpData = this._getHttpData(); - if (!dsn) { - throw new configError('Missing DSN'); + if (httpData) { + baseData.request = httpData; } - var encode = encodeURIComponent; - var qs = ''; - qs += '?eventId=' + encode(lastEventId); - qs += '&dsn=' + encode(dsn); - var user = options.user || this._globalContext.user; - - if (user) { - if (user.name) qs += '&name=' + encode(user.name); - if (user.email) qs += '&email=' + encode(user.email); - } + // HACK: delete `trimHeadFrames` to prevent from appearing in outbound payload + if (data.trimHeadFrames) delete data.trimHeadFrames; - var globalServer = this._getGlobalServer(this._parseDSN(dsn)); + data = objectMerge(baseData, data); - var script = _document.createElement('script'); + // Merge in the tags and extra separately since objectMerge doesn't handle a deep merge + data.tags = objectMerge(objectMerge({}, this._globalContext.tags), data.tags); + data.extra = objectMerge(objectMerge({}, this._globalContext.extra), data.extra); - script.async = true; - script.src = globalServer + '/api/embed/error-page/' + qs; + // Send along our own collected metadata with extra + data.extra['session:duration'] = now() - this._startTime; - (_document.head || _document.body).appendChild(script); - }, + if (this._breadcrumbs && this._breadcrumbs.length > 0) { + // intentionally make shallow copy so that additions + // to breadcrumbs aren't accidentally sent in this request + data.breadcrumbs = { + values: [].slice.call(this._breadcrumbs, 0) + }; + } - /**** Private functions ****/ - _ignoreNextOnError: function _ignoreNextOnError() { - var self = this; - this._ignoreOnError += 1; - setTimeout(function () { - // onerror should trigger before setTimeout - self._ignoreOnError -= 1; - }); - }, - _triggerEvent: function _triggerEvent(eventType, options) { - // NOTE: `event` is a native browser thing, so let's avoid conflicting wiht it - var evt, key; - if (!this._hasDocument) return; - options = options || {}; - eventType = 'raven' + eventType.substr(0, 1).toUpperCase() + eventType.substr(1); - - if (_document.createEvent) { - evt = _document.createEvent('HTMLEvents'); - evt.initEvent(eventType, true, true); - } else { - evt = _document.createEventObject(); - evt.eventType = eventType; + if (this._globalContext.user) { + // sentry.interfaces.User + data.user = this._globalContext.user; } - for (key in options) { - if (hasKey(options, key)) { - evt[key] = options[key]; - } - } + // Include the environment if it's defined in globalOptions + if (globalOptions.environment) data.environment = globalOptions.environment; - if (_document.createEvent) { - // IE9 if standards - _document.dispatchEvent(evt); - } else { - // IE8 regardless of Quirks or Standards - // IE9 if quirks - try { - _document.fireEvent('on' + evt.eventType.toLowerCase(), evt); - } catch (e) {// Do nothing + // Include the release if it's defined in globalOptions + if (globalOptions.release) data.release = globalOptions.release; + + // Include server_name if it's defined in globalOptions + if (globalOptions.serverName) data.server_name = globalOptions.serverName; + + data = this._sanitizeData(data); + + // Cleanup empty properties before sending them to the server + Object.keys(data).forEach(function(key) { + if (data[key] == null || data[key] === '' || isEmptyObject(data[key])) { + delete data[key]; } + }); + + if (isFunction(globalOptions.dataCallback)) { + data = globalOptions.dataCallback(data) || data; } - }, - /** - * Wraps addEventListener to capture UI breadcrumbs - * @param evtName the event name (e.g. "click") - * @returns {Function} - * @private - */ - _breadcrumbEventHandler: function _breadcrumbEventHandler(evtName) { - var self = this; - return function (evt) { - // reset keypress timeout; e.g. triggering a 'click' after - // a 'keypress' will reset the keypress debounce so that a new - // set of keypresses can be recorded - self._keypressTimeout = null; // It's possible this handler might trigger multiple times for the same - // event (e.g. event propagation through node ancestors). Ignore if we've - // already captured the event. + // Why?????????? + if (!data || isEmptyObject(data)) { + return; + } - if (self._lastCapturedEvent === evt) return; - self._lastCapturedEvent = evt; // try/catch both: - // - accessing evt.target (see getsentry/raven-js#838, #768) - // - `htmlTreeAsString` because it's complex, and just accessing the DOM incorrectly - // can throw an exception in some circumstances. + // Check if the request should be filtered or not + if ( + isFunction(globalOptions.shouldSendCallback) && + !globalOptions.shouldSendCallback(data) + ) { + return; + } - var target; + // Backoff state: Sentry server previously responded w/ an error (e.g. 429 - too many requests), + // so drop requests until "cool-off" period has elapsed. + if (this._shouldBackoff()) { + this._logDebug('warn', 'Raven dropped error due to backoff: ', data); + return; + } - try { - target = htmlTreeAsString(evt.target); - } catch (e) { - target = ''; + if (typeof globalOptions.sampleRate === 'number') { + if (Math.random() < globalOptions.sampleRate) { + this._sendProcessedPayload(data); } - - self.captureBreadcrumb({ - category: 'ui.' + evtName, - // e.g. ui.click, ui.input - message: target - }); - }; + } else { + this._sendProcessedPayload(data); + } }, - /** - * Wraps addEventListener to capture keypress UI events - * @returns {Function} - * @private - */ - _keypressEventHandler: function _keypressEventHandler() { - var self = this, - debounceDuration = 1000; // milliseconds - // TODO: if somehow user switches keypress target before - // debounce timeout is triggered, we will only capture - // a single breadcrumb from the FIRST target (acceptable?) + _sanitizeData: function(data) { + return sanitize(data, this._globalOptions.sanitizeKeys); + }, - return function (evt) { - var target; + _getUuid: function() { + return uuid4(); + }, - try { - target = evt.target; - } catch (e) { - // just accessing event properties can throw an exception in some rare circumstances - // see: https://github.com/getsentry/raven-js/issues/838 - return; - } + _sendProcessedPayload: function(data, callback) { + var self = this; + var globalOptions = this._globalOptions; - var tagName = target && target.tagName; // only consider keypress events on actual input elements - // this will disregard keypresses targeting body (e.g. tabbing - // through elements, hotkeys, etc) + if (!this.isSetup()) return; - if (!tagName || tagName !== 'INPUT' && tagName !== 'TEXTAREA' && !target.isContentEditable) return; // record first keypress in a series, but ignore subsequent - // keypresses until debounce clears + // Try and clean up the packet before sending by truncating long values + data = this._trimPacket(data); - var timeout = self._keypressTimeout; + // ideally duplicate error testing should occur *before* dataCallback/shouldSendCallback, + // but this would require copying an un-truncated copy of the data packet, which can be + // arbitrarily deep (extra_data) -- could be worthwhile? will revisit + if (!this._globalOptions.allowDuplicates && this._isRepeatData(data)) { + this._logDebug('warn', 'Raven dropped repeat event: ', data); + return; + } - if (!timeout) { - self._breadcrumbEventHandler('input')(evt); - } + // Send along an event_id if not explicitly passed. + // This event_id can be used to reference the error within Sentry itself. + // Set lastEventId after we know the error should actually be sent + this._lastEventId = data.event_id || (data.event_id = this._getUuid()); - clearTimeout(timeout); - self._keypressTimeout = setTimeout(function () { - self._keypressTimeout = null; - }, debounceDuration); - }; - }, + // Store outbound payload after trim + this._lastData = data; - /** - * Captures a breadcrumb of type "navigation", normalizing input URLs - * @param to the originating URL - * @param from the target URL - * @private - */ - _captureUrlChange: function _captureUrlChange(from, to) { - var parsedLoc = parseUrl(this._location.href); - var parsedTo = parseUrl(to); - var parsedFrom = parseUrl(from); // because onpopstate only tells you the "new" (to) value of location.href, and - // not the previous (from) value, we need to track the value of the current URL - // state ourselves + this._logDebug('debug', 'Raven about to send:', data); - this._lastHref = to; // Use only the path component of the URL if the URL matches the current - // document (almost all the time when using pushState) + var auth = { + sentry_version: '7', + sentry_client: 'raven-js/' + this.VERSION, + sentry_key: this._globalKey + }; - if (parsedLoc.protocol === parsedTo.protocol && parsedLoc.host === parsedTo.host) to = parsedTo.relative; - if (parsedLoc.protocol === parsedFrom.protocol && parsedLoc.host === parsedFrom.host) from = parsedFrom.relative; - this.captureBreadcrumb({ - category: 'navigation', - data: { - to: to, - from: from - } - }); - }, - _patchFunctionToString: function _patchFunctionToString() { - var self = this; - self._originalFunctionToString = Function.prototype.toString; // eslint-disable-next-line no-extend-native + if (this._globalSecret) { + auth.sentry_secret = this._globalSecret; + } - Function.prototype.toString = function () { - if (typeof this === 'function' && this.__raven__) { - return self._originalFunctionToString.apply(this.__orig__, arguments); - } + var exception = data.exception && data.exception.values[0]; - return self._originalFunctionToString.apply(this, arguments); - }; - }, - _unpatchFunctionToString: function _unpatchFunctionToString() { - if (this._originalFunctionToString) { - // eslint-disable-next-line no-extend-native - Function.prototype.toString = this._originalFunctionToString; + // only capture 'sentry' breadcrumb is autoBreadcrumbs is truthy + if ( + this._globalOptions.autoBreadcrumbs && + this._globalOptions.autoBreadcrumbs.sentry + ) { + this.captureBreadcrumb({ + category: 'sentry', + message: exception + ? (exception.type ? exception.type + ': ' : '') + exception.value + : data.message, + event_id: data.event_id, + level: data.level || 'error' // presume error unless specified + }); } - }, - /** - * Wrap timer functions and event targets to catch errors and provide - * better metadata. - */ - _instrumentTryCatch: function _instrumentTryCatch() { - var self = this; - var wrappedBuiltIns = self._wrappedBuiltIns; + var url = this._globalEndpoint; + (globalOptions.transport || this._makeRequest).call(this, { + url: url, + auth: auth, + data: data, + options: globalOptions, + onSuccess: function success() { + self._resetBackoff(); - function wrapTimeFn(orig) { - return function (fn, t) { - // preserve arity - // Make a copy of the arguments to prevent deoptimization - // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments - var args = new Array(arguments.length); + self._triggerEvent('success', { + data: data, + src: url + }); + callback && callback(); + }, + onError: function failure(error) { + self._logDebug('error', 'Raven transport failed to send: ', error); - for (var i = 0; i < args.length; ++i) { - args[i] = arguments[i]; + if (error.request) { + self._setBackoffState(error.request); } - var originalCallback = args[0]; + self._triggerEvent('failure', { + data: data, + src: url + }); + error = error || new Error('Raven send failed (no additional details provided)'); + callback && callback(error); + } + }); + }, - if (isFunction(originalCallback)) { - args[0] = self.wrap(originalCallback); - } // IE < 9 doesn't support .call/.apply on setInterval/setTimeout, but it - // also supports only two arguments and doesn't care what this is, so we - // can just call the original function directly. + _makeRequest: function(opts) { + // Auth is intentionally sent as part of query string (NOT as custom HTTP header) to avoid preflight CORS requests + var url = opts.url + '?' + urlencode(opts.auth); + var evaluatedHeaders = null; + var evaluatedFetchParameters = {}; - if (orig.apply) { - return orig.apply(this, args); - } else { - return orig(args[0], args[1]); - } - }; + if (opts.options.headers) { + evaluatedHeaders = this._evaluateHash(opts.options.headers); } - var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; - - function wrapEventTarget(global) { - var proto = _window$1[global] && _window$1[global].prototype; + if (opts.options.fetchParameters) { + evaluatedFetchParameters = this._evaluateHash(opts.options.fetchParameters); + } - if (proto && proto.hasOwnProperty && proto.hasOwnProperty('addEventListener')) { - fill(proto, 'addEventListener', function (orig) { - return function (evtName, fn, capture, secure) { - // preserve arity - try { - if (fn && fn.handleEvent) { - fn.handleEvent = self.wrap(fn.handleEvent); - } - } catch (err) {} // can sometimes get 'Permission denied to access property "handle Event' - // More breadcrumb DOM capture ... done here and not in `_instrumentBreadcrumbs` - // so that we don't have more than one wrapper function + if (supportsFetch()) { + evaluatedFetchParameters.body = stringify(opts.data); + var defaultFetchOptions = objectMerge({}, this._fetchDefaults); + var fetchOptions = objectMerge(defaultFetchOptions, evaluatedFetchParameters); - var before, clickHandler, keypressHandler; + if (evaluatedHeaders) { + fetchOptions.headers = evaluatedHeaders; + } - if (autoBreadcrumbs && autoBreadcrumbs.dom && (global === 'EventTarget' || global === 'Node')) { - // NOTE: generating multiple handlers per addEventListener invocation, should - // revisit and verify we can just use one (almost certainly) - clickHandler = self._breadcrumbEventHandler('click'); - keypressHandler = self._keypressEventHandler(); + return _window + .fetch(url, fetchOptions) + .then(function(response) { + if (response.ok) { + opts.onSuccess && opts.onSuccess(); + } else { + var error = new Error('Sentry error code: ' + response.status); + // It's called request only to keep compatibility with XHR interface + // and not add more redundant checks in setBackoffState method + error.request = response; + opts.onError && opts.onError(error); + } + }) + ['catch'](function() { + opts.onError && + opts.onError(new Error('Sentry error code: network unavailable')); + }); + } - before = function before(evt) { - // need to intercept every DOM event in `before` argument, in case that - // same wrapped method is re-used for different events (e.g. mousemove THEN click) - // see #724 - if (!evt) return; - var eventType; + var request = _window.XMLHttpRequest && new _window.XMLHttpRequest(); + if (!request) return; - try { - eventType = evt.type; - } catch (e) { - // just accessing event properties can throw an exception in some rare circumstances - // see: https://github.com/getsentry/raven-js/issues/838 - return; - } + // if browser doesn't support CORS (e.g. IE7), we are out of luck + var hasCORS = 'withCredentials' in request || typeof XDomainRequest !== 'undefined'; - if (eventType === 'click') return clickHandler(evt);else if (eventType === 'keypress') return keypressHandler(evt); - }; - } + if (!hasCORS) return; - return orig.call(this, evtName, self.wrap(fn, undefined, before), capture, secure); - }; - }, wrappedBuiltIns); - fill(proto, 'removeEventListener', function (orig) { - return function (evt, fn, capture, secure) { - try { - fn = fn && (fn.__raven_wrapper__ ? fn.__raven_wrapper__ : fn); - } catch (e) {// ignore, accessing __raven_wrapper__ will throw in some Selenium environments - } + if ('withCredentials' in request) { + request.onreadystatechange = function() { + if (request.readyState !== 4) { + return; + } else if (request.status === 200) { + opts.onSuccess && opts.onSuccess(); + } else if (opts.onError) { + var err = new Error('Sentry error code: ' + request.status); + err.request = request; + opts.onError(err); + } + }; + } else { + request = new XDomainRequest(); + // xdomainrequest cannot go http -> https (or vice versa), + // so always use protocol relative + url = url.replace(/^https?:/, ''); - return orig.call(this, evt, fn, capture, secure); - }; - }, wrappedBuiltIns); + // onreadystatechange not supported by XDomainRequest + if (opts.onSuccess) { + request.onload = opts.onSuccess; + } + if (opts.onError) { + request.onerror = function() { + var err = new Error('Sentry error code: XDomainRequest'); + err.request = request; + opts.onError(err); + }; } } - fill(_window$1, 'setTimeout', wrapTimeFn, wrappedBuiltIns); - fill(_window$1, 'setInterval', wrapTimeFn, wrappedBuiltIns); + request.open('POST', url); - if (_window$1.requestAnimationFrame) { - fill(_window$1, 'requestAnimationFrame', function (orig) { - return function (cb) { - return orig(self.wrap(cb)); - }; - }, wrappedBuiltIns); - } // event targets borrowed from bugsnag-js: - // https://github.com/bugsnag/bugsnag-js/blob/master/src/bugsnag.js#L666 + if (evaluatedHeaders) { + each(evaluatedHeaders, function(key, value) { + request.setRequestHeader(key, value); + }); + } + request.send(stringify(opts.data)); + }, - var eventTargets = ['EventTarget', 'Window', 'Node', 'ApplicationCache', 'AudioTrackList', 'ChannelMergerNode', 'CryptoOperation', 'EventSource', 'FileReader', 'HTMLUnknownElement', 'IDBDatabase', 'IDBRequest', 'IDBTransaction', 'KeyOperation', 'MediaController', 'MessagePort', 'ModalWindow', 'Notification', 'SVGElementInstance', 'Screen', 'TextTrack', 'TextTrackCue', 'TextTrackList', 'WebSocket', 'WebSocketWorker', 'Worker', 'XMLHttpRequest', 'XMLHttpRequestEventTarget', 'XMLHttpRequestUpload']; + _evaluateHash: function(hash) { + var evaluated = {}; - for (var i = 0; i < eventTargets.length; i++) { - wrapEventTarget(eventTargets[i]); + for (var key in hash) { + if (hash.hasOwnProperty(key)) { + var value = hash[key]; + evaluated[key] = typeof value === 'function' ? value() : value; + } } + + return evaluated; }, - /** - * Instrument browser built-ins w/ breadcrumb capturing - * - XMLHttpRequests - * - DOM interactions (click/typing) - * - window.location changes - * - console - * - * Can be disabled or individually configured via the `autoBreadcrumbs` config option - */ - _instrumentBreadcrumbs: function _instrumentBreadcrumbs() { - var self = this; - var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; - var wrappedBuiltIns = self._wrappedBuiltIns; + _logDebug: function(level) { + // We allow `Raven.debug` and `Raven.config(DSN, { debug: true })` to not make backward incompatible API change + if ( + this._originalConsoleMethods[level] && + (this.debug || this._globalOptions.debug) + ) { + // In IE<10 console methods do not have their own 'apply' method + Function.prototype.apply.call( + this._originalConsoleMethods[level], + this._originalConsole, + [].slice.call(arguments, 1) + ); + } + }, - function wrapProp(prop, xhr) { - if (prop in xhr && isFunction(xhr[prop])) { - fill(xhr, prop, function (orig) { - return self.wrap(orig); - }); // intentionally don't track filled methods on XHR instances - } + _mergeContext: function(key, context) { + if (isUndefined(context)) { + delete this._globalContext[key]; + } else { + this._globalContext[key] = objectMerge(this._globalContext[key] || {}, context); } + } +}; - if (autoBreadcrumbs.xhr && 'XMLHttpRequest' in _window$1) { - var xhrproto = XMLHttpRequest.prototype; - fill(xhrproto, 'open', function (origOpen) { - return function (method, url) { - // preserve arity - // if Sentry key appears in URL, don't capture - if (isString(url) && url.indexOf(self._globalKey) === -1) { - this.__raven_xhr = { - method: method, - url: url, - status_code: null - }; - } +// Deprecations +Raven.prototype.setUser = Raven.prototype.setUserContext; +Raven.prototype.setReleaseContext = Raven.prototype.setRelease; - return origOpen.apply(this, arguments); - }; - }, wrappedBuiltIns); - fill(xhrproto, 'send', function (origSend) { - return function () { - // preserve arity - var xhr = this; - - function onreadystatechangeHandler() { - if (xhr.__raven_xhr && xhr.readyState === 4) { - try { - // touching statusCode in some platforms throws - // an exception - xhr.__raven_xhr.status_code = xhr.status; - } catch (e) { - /* do nothing */ - } +module.exports = Raven; - self.captureBreadcrumb({ - type: 'http', - category: 'xhr', - data: xhr.__raven_xhr - }); - } - } +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"10":10,"11":11,"4":4,"5":5,"8":8,"9":9}],7:[function(_dereq_,module,exports){ +(function (global){ +/** + * Enforces a single instance of the Raven client, and the + * main entry point for Raven. If you are a consumer of the + * Raven library, you SHOULD load this file (vs raven.js). + **/ - var props = ['onload', 'onerror', 'onprogress']; +var RavenConstructor = _dereq_(6); - for (var j = 0; j < props.length; j++) { - wrapProp(props[j], xhr); - } +// This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) +var _window = + typeof window !== 'undefined' + ? window + : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; +var _Raven = _window.Raven; - if ('onreadystatechange' in xhr && isFunction(xhr.onreadystatechange)) { - fill(xhr, 'onreadystatechange', function (orig) { - return self.wrap(orig, undefined, onreadystatechangeHandler); - } - /* intentionally don't track this instrumentation */ - ); - } else { - // if onreadystatechange wasn't actually set by the page on this xhr, we - // are free to set our own and capture the breadcrumb - xhr.onreadystatechange = onreadystatechangeHandler; - } +var Raven = new RavenConstructor(); - return origSend.apply(this, arguments); - }; - }, wrappedBuiltIns); - } +/* + * Allow multiple versions of Raven to be installed. + * Strip Raven from the global context and returns the instance. + * + * @return {Raven} + */ +Raven.noConflict = function() { + _window.Raven = _Raven; + return Raven; +}; - if (autoBreadcrumbs.xhr && supportsFetch()) { - fill(_window$1, 'fetch', function (origFetch) { - return function () { - // preserve arity - // Make a copy of the arguments to prevent deoptimization - // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments - var args = new Array(arguments.length); - - for (var i = 0; i < args.length; ++i) { - args[i] = arguments[i]; - } +Raven.afterLoad(); - var fetchInput = args[0]; - var method = 'GET'; - var url; +module.exports = Raven; - if (typeof fetchInput === 'string') { - url = fetchInput; - } else if ('Request' in _window$1 && fetchInput instanceof _window$1.Request) { - url = fetchInput.url; +/** + * DISCLAIMER: + * + * Expose `Client` constructor for cases where user want to track multiple "sub-applications" in one larger app. + * It's not meant to be used by a wide audience, so pleaaase make sure that you know what you're doing before using it. + * Accidentally calling `install` multiple times, may result in an unexpected behavior that's very hard to debug. + * + * It's called `Client' to be in-line with Raven Node implementation. + * + * HOWTO: + * + * import Raven from 'raven-js'; + * + * const someAppReporter = new Raven.Client(); + * const someOtherAppReporter = new Raven.Client(); + * + * someAppReporter.config('__DSN__', { + * ...config goes here + * }); + * + * someOtherAppReporter.config('__OTHER_DSN__', { + * ...config goes here + * }); + * + * someAppReporter.captureMessage(...); + * someAppReporter.captureException(...); + * someAppReporter.captureBreadcrumb(...); + * + * someOtherAppReporter.captureMessage(...); + * someOtherAppReporter.captureException(...); + * someOtherAppReporter.captureBreadcrumb(...); + * + * It should "just work". + */ +module.exports.Client = RavenConstructor; - if (fetchInput.method) { - method = fetchInput.method; - } - } else { - url = '' + fetchInput; - } // if Sentry key appears in URL, don't capture, as it's our own request +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"6":6}],8:[function(_dereq_,module,exports){ +(function (global){ +var stringify = _dereq_(10); +var _window = + typeof window !== 'undefined' + ? window + : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; - if (url.indexOf(self._globalKey) !== -1) { - return origFetch.apply(this, args); - } +function isObject(what) { + return typeof what === 'object' && what !== null; +} - if (args[1] && args[1].method) { - method = args[1].method; - } +// Yanked from https://git.io/vS8DV re-used under CC0 +// with some tiny modifications +function isError(value) { + switch ({}.toString.call(value)) { + case '[object Error]': + return true; + case '[object Exception]': + return true; + case '[object DOMException]': + return true; + default: + return value instanceof Error; + } +} - var fetchData = { - method: method, - url: url, - status_code: null - }; - return origFetch.apply(this, args).then(function (response) { - fetchData.status_code = response.status; - self.captureBreadcrumb({ - type: 'http', - category: 'fetch', - data: fetchData - }); - return response; - }); - }; - }, wrappedBuiltIns); - } // Capture breadcrumbs from any click that is unhandled / bubbled up all the way - // to the document. Do this before we instrument addEventListener. +function isErrorEvent(value) { + return supportsErrorEvent() && {}.toString.call(value) === '[object ErrorEvent]'; +} +function isUndefined(what) { + return what === void 0; +} - if (autoBreadcrumbs.dom && this._hasDocument) { - if (_document.addEventListener) { - _document.addEventListener('click', self._breadcrumbEventHandler('click'), false); +function isFunction(what) { + return typeof what === 'function'; +} - _document.addEventListener('keypress', self._keypressEventHandler(), false); - } else { - // IE8 Compatibility - _document.attachEvent('onclick', self._breadcrumbEventHandler('click')); +function isPlainObject(what) { + return Object.prototype.toString.call(what) === '[object Object]'; +} - _document.attachEvent('onkeypress', self._keypressEventHandler()); - } - } // record navigation (URL) changes - // NOTE: in Chrome App environment, touching history.pushState, *even inside - // a try/catch block*, will cause Chrome to output an error to console.error - // borrowed from: https://github.com/angular/angular.js/pull/13945/files +function isString(what) { + return Object.prototype.toString.call(what) === '[object String]'; +} +function isArray(what) { + return Object.prototype.toString.call(what) === '[object Array]'; +} - var chrome = _window$1.chrome; - var isChromePackagedApp = chrome && chrome.app && chrome.app.runtime; - var hasPushAndReplaceState = !isChromePackagedApp && _window$1.history && history.pushState && history.replaceState; +function isEmptyObject(what) { + if (!isPlainObject(what)) return false; - if (autoBreadcrumbs.location && hasPushAndReplaceState) { - // TODO: remove onpopstate handler on uninstall() - var oldOnPopState = _window$1.onpopstate; + for (var _ in what) { + if (what.hasOwnProperty(_)) { + return false; + } + } + return true; +} - _window$1.onpopstate = function () { - var currentHref = self._location.href; +function supportsErrorEvent() { + try { + new ErrorEvent(''); // eslint-disable-line no-new + return true; + } catch (e) { + return false; + } +} - self._captureUrlChange(self._lastHref, currentHref); +function supportsFetch() { + if (!('fetch' in _window)) return false; - if (oldOnPopState) { - return oldOnPopState.apply(this, arguments); - } - }; + try { + new Headers(); // eslint-disable-line no-new + new Request(''); // eslint-disable-line no-new + new Response(); // eslint-disable-line no-new + return true; + } catch (e) { + return false; + } +} - var historyReplacementFunction = function historyReplacementFunction(origHistFunction) { - // note history.pushState.length is 0; intentionally not declaring - // params to preserve 0 arity - return function () - /* state, title, url */ - { - var url = arguments.length > 2 ? arguments[2] : undefined; // url argument is optional +// Despite all stars in the sky saying that Edge supports old draft syntax, aka 'never', 'always', 'origin' and 'default +// https://caniuse.com/#feat=referrer-policy +// It doesn't. And it throw exception instead of ignoring this parameter... +// REF: https://github.com/getsentry/raven-js/issues/1233 +function supportsReferrerPolicy() { + if (!supportsFetch()) return false; - if (url) { - // coerce to string (this is what pushState does) - self._captureUrlChange(self._lastHref, url + ''); - } + try { + // eslint-disable-next-line no-new + new Request('pickleRick', { + referrerPolicy: 'origin' + }); + return true; + } catch (e) { + return false; + } +} - return origHistFunction.apply(this, arguments); - }; - }; +function supportsPromiseRejectionEvent() { + return typeof PromiseRejectionEvent === 'function'; +} - fill(history, 'pushState', historyReplacementFunction, wrappedBuiltIns); - fill(history, 'replaceState', historyReplacementFunction, wrappedBuiltIns); +function wrappedCallback(callback) { + function dataCallback(data, original) { + var normalizedData = callback(data) || data; + if (original) { + return original(normalizedData) || normalizedData; } + return normalizedData; + } - if (autoBreadcrumbs.console && 'console' in _window$1 && console.log) { - // console - var consoleMethodCallback = function consoleMethodCallback(msg, data) { - self.captureBreadcrumb({ - message: msg, - level: data.level, - category: 'console' - }); - }; + return dataCallback; +} - each(['debug', 'info', 'warn', 'error', 'log'], function (_, level) { - wrapConsoleMethod(console, level, consoleMethodCallback); - }); - } - }, - _restoreBuiltIns: function _restoreBuiltIns() { - // restore any wrapped builtins - var builtin; +function each(obj, callback) { + var i, j; - while (this._wrappedBuiltIns.length) { - builtin = this._wrappedBuiltIns.shift(); - var obj = builtin[0], - name = builtin[1], - orig = builtin[2]; - obj[name] = orig; + if (isUndefined(obj.length)) { + for (i in obj) { + if (hasKey(obj, i)) { + callback.call(null, i, obj[i]); + } } - }, - _restoreConsole: function _restoreConsole() { - // eslint-disable-next-line guard-for-in - for (var method in this._originalConsoleMethods) { - this._originalConsole[method] = this._originalConsoleMethods[method]; + } else { + j = obj.length; + if (j) { + for (i = 0; i < j; i++) { + callback.call(null, i, obj[i]); + } } - }, - _drainPlugins: function _drainPlugins() { - var self = this; // FIX ME TODO + } +} - each(this._plugins, function (_, plugin) { - var installer = plugin[0]; - var args = plugin[1]; - installer.apply(self, [self].concat(args)); - }); - }, - _parseDSN: function _parseDSN(str) { - var m = dsnPattern.exec(str), - dsn = {}, - i = 7; +function objectMerge(obj1, obj2) { + if (!obj2) { + return obj1; + } + each(obj2, function(key, value) { + obj1[key] = value; + }); + return obj1; +} - try { - while (i--) { - dsn[dsnKeys[i]] = m[i] || ''; - } - } catch (e) { - throw new configError('Invalid DSN: ' + str); - } +/** + * This function is only used for react-native. + * react-native freezes object that have already been sent over the + * js bridge. We need this function in order to check if the object is frozen. + * So it's ok that objectFrozen returns false if Object.isFrozen is not + * supported because it's not relevant for other "platforms". See related issue: + * https://github.com/getsentry/react-native-sentry/issues/57 + */ +function objectFrozen(obj) { + if (!Object.isFrozen) { + return false; + } + return Object.isFrozen(obj); +} - if (dsn.pass && !this._globalOptions.allowSecretKey) { - throw new configError('Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key'); - } +function truncate(str, max) { + if (typeof max !== 'number') { + throw new Error('2nd argument to `truncate` function should be a number'); + } + if (typeof str !== 'string' || max === 0) { + return str; + } + return str.length <= max ? str : str.substr(0, max) + '\u2026'; +} - return dsn; - }, - _getGlobalServer: function _getGlobalServer(uri) { - // assemble the endpoint from the uri pieces - var globalServer = '//' + uri.host + (uri.port ? ':' + uri.port : ''); +/** + * hasKey, a better form of hasOwnProperty + * Example: hasKey(MainHostObject, property) === true/false + * + * @param {Object} host object to check property + * @param {string} key to check + */ +function hasKey(object, key) { + return Object.prototype.hasOwnProperty.call(object, key); +} - if (uri.protocol) { - globalServer = uri.protocol + ':' + globalServer; - } +function joinRegExp(patterns) { + // Combine an array of regular expressions and strings into one large regexp + // Be mad. + var sources = [], + i = 0, + len = patterns.length, + pattern; - return globalServer; - }, - _handleOnErrorStackInfo: function _handleOnErrorStackInfo() { - // if we are intentionally ignoring errors via onerror, bail out - if (!this._ignoreOnError) { - this._handleStackInfo.apply(this, arguments); + for (; i < len; i++) { + pattern = patterns[i]; + if (isString(pattern)) { + // If it's a string, we need to escape it + // Taken from: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions + sources.push(pattern.replace(/([.*+?^=!:${}()|\[\]\/\\])/g, '\\$1')); + } else if (pattern && pattern.source) { + // If it's a regexp already, we want to extract the source + sources.push(pattern.source); } - }, - _handleStackInfo: function _handleStackInfo(stackInfo, options) { - var frames = this._prepareFrames(stackInfo, options); + // Intentionally skip other cases + } + return new RegExp(sources.join('|'), 'i'); +} - this._triggerEvent('handle', { - stackInfo: stackInfo, - options: options - }); +function urlencode(o) { + var pairs = []; + each(o, function(key, value) { + pairs.push(encodeURIComponent(key) + '=' + encodeURIComponent(value)); + }); + return pairs.join('&'); +} - this._processException(stackInfo.name, stackInfo.message, stackInfo.url, stackInfo.lineno, frames, options); - }, - _prepareFrames: function _prepareFrames(stackInfo, options) { - var self = this; - var frames = []; +// borrowed from https://tools.ietf.org/html/rfc3986#appendix-B +// intentionally using regex and not href parsing trick because React Native and other +// environments where DOM might not be available +function parseUrl(url) { + if (typeof url !== 'string') return {}; + var match = url.match(/^(([^:\/?#]+):)?(\/\/([^\/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?$/); - if (stackInfo.stack && stackInfo.stack.length) { - each(stackInfo.stack, function (i, stack) { - var frame = self._normalizeFrame(stack, stackInfo.url); + // coerce to undefined values to empty string so we don't get 'undefined' + var query = match[6] || ''; + var fragment = match[8] || ''; + return { + protocol: match[2], + host: match[4], + path: match[5], + relative: match[5] + query + fragment // everything minus origin + }; +} +function uuid4() { + var crypto = _window.crypto || _window.msCrypto; - if (frame) { - frames.push(frame); - } - }); // e.g. frames captured via captureMessage throw + if (!isUndefined(crypto) && crypto.getRandomValues) { + // Use window.crypto API if available + // eslint-disable-next-line no-undef + var arr = new Uint16Array(8); + crypto.getRandomValues(arr); - if (options && options.trimHeadFrames) { - for (var j = 0; j < options.trimHeadFrames && j < frames.length; j++) { - frames[j].in_app = false; - } + // set 4 in byte 7 + arr[3] = (arr[3] & 0xfff) | 0x4000; + // set 2 most significant bits of byte 9 to '10' + arr[4] = (arr[4] & 0x3fff) | 0x8000; + + var pad = function(num) { + var v = num.toString(16); + while (v.length < 4) { + v = '0' + v; } - } + return v; + }; - frames = frames.slice(0, this._globalOptions.stackTraceLimit); - return frames; - }, - _normalizeFrame: function _normalizeFrame(frame, stackInfoUrl) { - // normalize the frames data - var normalized = { - filename: frame.url, - lineno: frame.line, - colno: frame.column, - function: frame.func || '?' - }; // Case when we don't have any information about the error - // E.g. throwing a string or raw object, instead of an `Error` in Firefox - // Generating synthetic error doesn't add any value here - // - // We should probably somehow let a user know that they should fix their code + return ( + pad(arr[0]) + + pad(arr[1]) + + pad(arr[2]) + + pad(arr[3]) + + pad(arr[4]) + + pad(arr[5]) + + pad(arr[6]) + + pad(arr[7]) + ); + } else { + // http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/2117523#2117523 + return 'xxxxxxxxxxxx4xxxyxxxxxxxxxxxxxxx'.replace(/[xy]/g, function(c) { + var r = (Math.random() * 16) | 0, + v = c === 'x' ? r : (r & 0x3) | 0x8; + return v.toString(16); + }); + } +} - if (!frame.url) { - normalized.filename = stackInfoUrl; // fallback to whole stacks url from onerror handler +/** + * Given a child DOM element, returns a query-selector statement describing that + * and its ancestors + * e.g. [HTMLElement] => body > div > input#foo.btn[name=baz] + * @param elem + * @returns {string} + */ +function htmlTreeAsString(elem) { + /* eslint no-extra-parens:0*/ + var MAX_TRAVERSE_HEIGHT = 5, + MAX_OUTPUT_LEN = 80, + out = [], + height = 0, + len = 0, + separator = ' > ', + sepLength = separator.length, + nextStr; + + while (elem && height++ < MAX_TRAVERSE_HEIGHT) { + nextStr = htmlElementAsString(elem); + // bail out if + // - nextStr is the 'html' element + // - the length of the string that would be created exceeds MAX_OUTPUT_LEN + // (ignore this limit if we are on the first iteration) + if ( + nextStr === 'html' || + (height > 1 && len + out.length * sepLength + nextStr.length >= MAX_OUTPUT_LEN) + ) { + break; } - normalized.in_app = !( // determine if an exception came from outside of our app - // first we check the global includePaths list. - !!this._globalOptions.includePaths.test && !this._globalOptions.includePaths.test(normalized.filename) || // Now we check for fun, if the function name is Raven or TraceKit - /(Raven|TraceKit)\./.test(normalized['function']) || // finally, we do a last ditch effort and check for raven.min.js - /raven\.(min\.)?js$/.test(normalized.filename)); - return normalized; - }, - _processException: function _processException(type, message, fileurl, lineno, frames, options) { - var prefixedMessage = (type ? type + ': ' : '') + (message || ''); + out.push(nextStr); - if (!!this._globalOptions.ignoreErrors.test && (this._globalOptions.ignoreErrors.test(message) || this._globalOptions.ignoreErrors.test(prefixedMessage))) { - return; - } + len += nextStr.length; + elem = elem.parentNode; + } - var stacktrace; + return out.reverse().join(separator); +} - if (frames && frames.length) { - fileurl = frames[0].filename || fileurl; // Sentry expects frames oldest to newest - // and JS sends them as newest to oldest +/** + * Returns a simple, query-selector representation of a DOM element + * e.g. [HTMLElement] => input#foo.btn[name=baz] + * @param HTMLElement + * @returns {string} + */ +function htmlElementAsString(elem) { + var out = [], + className, + classes, + key, + attr, + i; - frames.reverse(); - stacktrace = { - frames: frames - }; - } else if (fileurl) { - stacktrace = { - frames: [{ - filename: fileurl, - lineno: lineno, - in_app: true - }] - }; - } + if (!elem || !elem.tagName) { + return ''; + } - if (!!this._globalOptions.ignoreUrls.test && this._globalOptions.ignoreUrls.test(fileurl)) { - return; - } + out.push(elem.tagName.toLowerCase()); + if (elem.id) { + out.push('#' + elem.id); + } - if (!!this._globalOptions.whitelistUrls.test && !this._globalOptions.whitelistUrls.test(fileurl)) { - return; + className = elem.className; + if (className && isString(className)) { + classes = className.split(/\s+/); + for (i = 0; i < classes.length; i++) { + out.push('.' + classes[i]); + } + } + var attrWhitelist = ['type', 'name', 'title', 'alt']; + for (i = 0; i < attrWhitelist.length; i++) { + key = attrWhitelist[i]; + attr = elem.getAttribute(key); + if (attr) { + out.push('[' + key + '="' + attr + '"]'); } + } + return out.join(''); +} - var data = objectMerge({ - // sentry.interfaces.Exception - exception: { - values: [{ - type: type, - value: message, - stacktrace: stacktrace - }] - }, - culprit: fileurl - }, options); // Fire away! +/** + * Returns true if either a OR b is truthy, but not both + */ +function isOnlyOneTruthy(a, b) { + return !!(!!a ^ !!b); +} - this._send(data); - }, - _trimPacket: function _trimPacket(data) { - // For now, we only want to truncate the two different messages - // but this could/should be expanded to just trim everything - var max = this._globalOptions.maxMessageLength; +/** + * Returns true if both parameters are undefined + */ +function isBothUndefined(a, b) { + return isUndefined(a) && isUndefined(b); +} - if (data.message) { - data.message = truncate(data.message, max); - } +/** + * Returns true if the two input exception interfaces have the same content + */ +function isSameException(ex1, ex2) { + if (isOnlyOneTruthy(ex1, ex2)) return false; - if (data.exception) { - var exception = data.exception.values[0]; - exception.value = truncate(exception.value, max); - } + ex1 = ex1.values[0]; + ex2 = ex2.values[0]; - var request = data.request; + if (ex1.type !== ex2.type || ex1.value !== ex2.value) return false; - if (request) { - if (request.url) { - request.url = truncate(request.url, this._globalOptions.maxUrlLength); - } + // in case both stacktraces are undefined, we can't decide so default to false + if (isBothUndefined(ex1.stacktrace, ex2.stacktrace)) return false; - if (request.Referer) { - request.Referer = truncate(request.Referer, this._globalOptions.maxUrlLength); - } - } + return isSameStacktrace(ex1.stacktrace, ex2.stacktrace); +} - if (data.breadcrumbs && data.breadcrumbs.values) this._trimBreadcrumbs(data.breadcrumbs); - return data; - }, +/** + * Returns true if the two input stack trace interfaces have the same content + */ +function isSameStacktrace(stack1, stack2) { + if (isOnlyOneTruthy(stack1, stack2)) return false; - /** - * Truncate breadcrumb values (right now just URLs) - */ - _trimBreadcrumbs: function _trimBreadcrumbs(breadcrumbs) { - // known breadcrumb properties with urls - // TODO: also consider arbitrary prop values that start with (https?)?:// - var urlProps = ['to', 'from', 'url'], - urlProp, - crumb, - data; - - for (var i = 0; i < breadcrumbs.values.length; ++i) { - crumb = breadcrumbs.values[i]; - if (!crumb.hasOwnProperty('data') || !isObject(crumb.data) || objectFrozen(crumb.data)) continue; - data = objectMerge({}, crumb.data); - - for (var j = 0; j < urlProps.length; ++j) { - urlProp = urlProps[j]; - - if (data.hasOwnProperty(urlProp) && data[urlProp]) { - data[urlProp] = truncate(data[urlProp], this._globalOptions.maxUrlLength); - } - } - - breadcrumbs.values[i].data = data; - } - }, - _getHttpData: function _getHttpData() { - if (!this._hasNavigator && !this._hasDocument) return; - var httpData = {}; - - if (this._hasNavigator && _navigator.userAgent) { - httpData.headers = { - 'User-Agent': navigator.userAgent - }; - } // Check in `window` instead of `document`, as we may be in ServiceWorker environment - - - if (_window$1.location && _window$1.location.href) { - httpData.url = _window$1.location.href; - } - - if (this._hasDocument && _document.referrer) { - if (!httpData.headers) httpData.headers = {}; - httpData.headers.Referer = _document.referrer; - } - - return httpData; - }, - _resetBackoff: function _resetBackoff() { - this._backoffDuration = 0; - this._backoffStart = null; - }, - _shouldBackoff: function _shouldBackoff() { - return this._backoffDuration && now() - this._backoffStart < this._backoffDuration; - }, + var frames1 = stack1.frames; + var frames2 = stack2.frames; - /** - * Returns true if the in-process data payload matches the signature - * of the previously-sent data - * - * NOTE: This has to be done at this level because TraceKit can generate - * data from window.onerror WITHOUT an exception object (IE8, IE9, - * other old browsers). This can take the form of an "exception" - * data object with a single frame (derived from the onerror args). - */ - _isRepeatData: function _isRepeatData(current) { - var last = this._lastData; - if (!last || current.message !== last.message || // defined for captureMessage - current.culprit !== last.culprit // defined for captureException/onerror - ) return false; // Stacktrace interface (i.e. from captureMessage) + // Exit early if frame count differs + if (frames1.length !== frames2.length) return false; - if (current.stacktrace || last.stacktrace) { - return isSameStacktrace(current.stacktrace, last.stacktrace); - } else if (current.exception || last.exception) { - // Exception interface (i.e. from captureException/onerror) - return isSameException(current.exception, last.exception); - } + // Iterate through every frame; bail out if anything differs + var a, b; + for (var i = 0; i < frames1.length; i++) { + a = frames1[i]; + b = frames2[i]; + if ( + a.filename !== b.filename || + a.lineno !== b.lineno || + a.colno !== b.colno || + a['function'] !== b['function'] + ) + return false; + } + return true; +} - return true; - }, - _setBackoffState: function _setBackoffState(request) { - // If we are already in a backoff state, don't change anything - if (this._shouldBackoff()) { - return; - } +/** + * Polyfill a method + * @param obj object e.g. `document` + * @param name method name present on object e.g. `addEventListener` + * @param replacement replacement function + * @param track {optional} record instrumentation to an array + */ +function fill(obj, name, replacement, track) { + if (obj == null) return; + var orig = obj[name]; + obj[name] = replacement(orig); + obj[name].__raven__ = true; + obj[name].__orig__ = orig; + if (track) { + track.push([obj, name, orig]); + } +} - var status = request.status; // 400 - project_id doesn't exist or some other fatal - // 401 - invalid/revoked dsn - // 429 - too many requests +/** + * Join values in array + * @param input array of values to be joined together + * @param delimiter string to be placed in-between values + * @returns {string} + */ +function safeJoin(input, delimiter) { + if (!isArray(input)) return ''; - if (!(status === 400 || status === 401 || status === 429)) return; - var retry; + var output = []; + for (var i = 0; i < input.length; i++) { try { - // If Retry-After is not in Access-Control-Expose-Headers, most - // browsers will throw an exception trying to access it - if (supportsFetch()) { - retry = request.headers.get('Retry-After'); - } else { - retry = request.getResponseHeader('Retry-After'); - } // Retry-After is returned in seconds - - - retry = parseInt(retry, 10) * 1000; + output.push(String(input[i])); } catch (e) { - /* eslint no-empty:0 */ + output.push('[value cannot be serialized]'); } + } - this._backoffDuration = retry ? // If Sentry server returned a Retry-After value, use it - retry : // Otherwise, double the last backoff duration (starts at 1 sec) - this._backoffDuration * 2 || 1000; - this._backoffStart = now(); - }, - _send: function _send(data) { - var globalOptions = this._globalOptions; - - var baseData = { - project: this._globalProject, - logger: globalOptions.logger, - platform: 'javascript' - }, - httpData = this._getHttpData(); - - if (httpData) { - baseData.request = httpData; - } // HACK: delete `trimHeadFrames` to prevent from appearing in outbound payload + return output.join(delimiter); +} +// Default Node.js REPL depth +var MAX_SERIALIZE_EXCEPTION_DEPTH = 3; +// 50kB, as 100kB is max payload size, so half sounds reasonable +var MAX_SERIALIZE_EXCEPTION_SIZE = 50 * 1024; +var MAX_SERIALIZE_KEYS_LENGTH = 40; - if (data.trimHeadFrames) delete data.trimHeadFrames; - data = objectMerge(baseData, data); // Merge in the tags and extra separately since objectMerge doesn't handle a deep merge +function utf8Length(value) { + return ~-encodeURI(value).split(/%..|./).length; +} - data.tags = objectMerge(objectMerge({}, this._globalContext.tags), data.tags); - data.extra = objectMerge(objectMerge({}, this._globalContext.extra), data.extra); // Send along our own collected metadata with extra +function jsonSize(value) { + return utf8Length(JSON.stringify(value)); +} - data.extra['session:duration'] = now() - this._startTime; +function serializeValue(value) { + if (typeof value === 'string') { + var maxLength = 40; + return truncate(value, maxLength); + } else if ( + typeof value === 'number' || + typeof value === 'boolean' || + typeof value === 'undefined' + ) { + return value; + } - if (this._breadcrumbs && this._breadcrumbs.length > 0) { - // intentionally make shallow copy so that additions - // to breadcrumbs aren't accidentally sent in this request - data.breadcrumbs = { - values: [].slice.call(this._breadcrumbs, 0) - }; - } + var type = Object.prototype.toString.call(value); - if (this._globalContext.user) { - // sentry.interfaces.User - data.user = this._globalContext.user; - } // Include the environment if it's defined in globalOptions + // Node.js REPL notation + if (type === '[object Object]') return '[Object]'; + if (type === '[object Array]') return '[Array]'; + if (type === '[object Function]') + return value.name ? '[Function: ' + value.name + ']' : '[Function]'; + return value; +} - if (globalOptions.environment) data.environment = globalOptions.environment; // Include the release if it's defined in globalOptions +function serializeObject(value, depth) { + if (depth === 0) return serializeValue(value); + + if (isPlainObject(value)) { + return Object.keys(value).reduce(function(acc, key) { + acc[key] = serializeObject(value[key], depth - 1); + return acc; + }, {}); + } else if (Array.isArray(value)) { + return value.map(function(val) { + return serializeObject(val, depth - 1); + }); + } - if (globalOptions.release) data.release = globalOptions.release; // Include server_name if it's defined in globalOptions + return serializeValue(value); +} - if (globalOptions.serverName) data.server_name = globalOptions.serverName; // Cleanup empty properties before sending them to the server +function serializeException(ex, depth, maxSize) { + if (!isPlainObject(ex)) return ex; - Object.keys(data).forEach(function (key) { - if (data[key] == null || data[key] === '' || isEmptyObject(data[key])) { - delete data[key]; - } - }); + depth = typeof depth !== 'number' ? MAX_SERIALIZE_EXCEPTION_DEPTH : depth; + maxSize = typeof depth !== 'number' ? MAX_SERIALIZE_EXCEPTION_SIZE : maxSize; - if (isFunction(globalOptions.dataCallback)) { - data = globalOptions.dataCallback(data) || data; - } // Why?????????? + var serialized = serializeObject(ex, depth); + if (jsonSize(stringify(serialized)) > maxSize) { + return serializeException(ex, depth - 1); + } - if (!data || isEmptyObject(data)) { - return; - } // Check if the request should be filtered or not + return serialized; +} +function serializeKeysForMessage(keys, maxLength) { + if (typeof keys === 'number' || typeof keys === 'string') return keys.toString(); + if (!Array.isArray(keys)) return ''; - if (isFunction(globalOptions.shouldSendCallback) && !globalOptions.shouldSendCallback(data)) { - return; - } // Backoff state: Sentry server previously responded w/ an error (e.g. 429 - too many requests), - // so drop requests until "cool-off" period has elapsed. + keys = keys.filter(function(key) { + return typeof key === 'string'; + }); + if (keys.length === 0) return '[object has no keys]'; + maxLength = typeof maxLength !== 'number' ? MAX_SERIALIZE_KEYS_LENGTH : maxLength; + if (keys[0].length >= maxLength) return keys[0]; - if (this._shouldBackoff()) { - this._logDebug('warn', 'Raven dropped error due to backoff: ', data); + for (var usedKeys = keys.length; usedKeys > 0; usedKeys--) { + var serialized = keys.slice(0, usedKeys).join(', '); + if (serialized.length > maxLength) continue; + if (usedKeys === keys.length) return serialized; + return serialized + '\u2026'; + } - return; - } + return ''; +} - if (typeof globalOptions.sampleRate === 'number') { - if (Math.random() < globalOptions.sampleRate) { - this._sendProcessedPayload(data); - } - } else { - this._sendProcessedPayload(data); - } - }, - _getUuid: function _getUuid() { - return uuid4(); - }, - _sendProcessedPayload: function _sendProcessedPayload(data, callback) { - var self = this; - var globalOptions = this._globalOptions; - if (!this.isSetup()) return; // Try and clean up the packet before sending by truncating long values +function sanitize(input, sanitizeKeys) { + if (!isArray(sanitizeKeys) || (isArray(sanitizeKeys) && sanitizeKeys.length === 0)) + return input; - data = this._trimPacket(data); // ideally duplicate error testing should occur *before* dataCallback/shouldSendCallback, - // but this would require copying an un-truncated copy of the data packet, which can be - // arbitrarily deep (extra_data) -- could be worthwhile? will revisit + var sanitizeRegExp = joinRegExp(sanitizeKeys); + var sanitizeMask = '********'; + var safeInput; - if (!this._globalOptions.allowDuplicates && this._isRepeatData(data)) { - this._logDebug('warn', 'Raven dropped repeat event: ', data); + try { + safeInput = JSON.parse(stringify(input)); + } catch (o_O) { + return input; + } - return; - } // Send along an event_id if not explicitly passed. - // This event_id can be used to reference the error within Sentry itself. - // Set lastEventId after we know the error should actually be sent + function sanitizeWorker(workerInput) { + if (isArray(workerInput)) { + return workerInput.map(function(val) { + return sanitizeWorker(val); + }); + } + if (isPlainObject(workerInput)) { + return Object.keys(workerInput).reduce(function(acc, k) { + if (sanitizeRegExp.test(k)) { + acc[k] = sanitizeMask; + } else { + acc[k] = sanitizeWorker(workerInput[k]); + } + return acc; + }, {}); + } - this._lastEventId = data.event_id || (data.event_id = this._getUuid()); // Store outbound payload after trim + return workerInput; + } - this._lastData = data; + return sanitizeWorker(safeInput); +} - this._logDebug('debug', 'Raven about to send:', data); +module.exports = { + isObject: isObject, + isError: isError, + isErrorEvent: isErrorEvent, + isUndefined: isUndefined, + isFunction: isFunction, + isPlainObject: isPlainObject, + isString: isString, + isArray: isArray, + isEmptyObject: isEmptyObject, + supportsErrorEvent: supportsErrorEvent, + supportsFetch: supportsFetch, + supportsReferrerPolicy: supportsReferrerPolicy, + supportsPromiseRejectionEvent: supportsPromiseRejectionEvent, + wrappedCallback: wrappedCallback, + each: each, + objectMerge: objectMerge, + truncate: truncate, + objectFrozen: objectFrozen, + hasKey: hasKey, + joinRegExp: joinRegExp, + urlencode: urlencode, + uuid4: uuid4, + htmlTreeAsString: htmlTreeAsString, + htmlElementAsString: htmlElementAsString, + isSameException: isSameException, + isSameStacktrace: isSameStacktrace, + parseUrl: parseUrl, + fill: fill, + safeJoin: safeJoin, + serializeException: serializeException, + serializeKeysForMessage: serializeKeysForMessage, + sanitize: sanitize +}; - var auth = { - sentry_version: '7', - sentry_client: 'raven-js/' + this.VERSION, - sentry_key: this._globalKey - }; +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"10":10}],9:[function(_dereq_,module,exports){ +(function (global){ +var utils = _dereq_(8); - if (this._globalSecret) { - auth.sentry_secret = this._globalSecret; - } +/* + TraceKit - Cross brower stack traces - var exception = data.exception && data.exception.values[0]; // only capture 'sentry' breadcrumb is autoBreadcrumbs is truthy + This was originally forked from github.com/occ/TraceKit, but has since been + largely re-written and is now maintained as part of raven-js. Tests for + this are in test/vendor. - if (this._globalOptions.autoBreadcrumbs && this._globalOptions.autoBreadcrumbs.sentry) { - this.captureBreadcrumb({ - category: 'sentry', - message: exception ? (exception.type ? exception.type + ': ' : '') + exception.value : data.message, - event_id: data.event_id, - level: data.level || 'error' // presume error unless specified + MIT license +*/ - }); - } +var TraceKit = { + collectWindowErrors: true, + debug: false +}; - var url = this._globalEndpoint; +// This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) +var _window = + typeof window !== 'undefined' + ? window + : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; - (globalOptions.transport || this._makeRequest).call(this, { - url: url, - auth: auth, - data: data, - options: globalOptions, - onSuccess: function success() { - self._resetBackoff(); +// global reference to slice +var _slice = [].slice; +var UNKNOWN_FUNCTION = '?'; - self._triggerEvent('success', { - data: data, - src: url - }); +// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error#Error_types +var ERROR_TYPES_RE = /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/; - callback && callback(); - }, - onError: function failure(error) { - self._logDebug('error', 'Raven transport failed to send: ', error); +function getLocationHref() { + if (typeof document === 'undefined' || document.location == null) return ''; - if (error.request) { - self._setBackoffState(error.request); - } + return document.location.href; +} - self._triggerEvent('failure', { - data: data, - src: url - }); +/** + * TraceKit.report: cross-browser processing of unhandled exceptions + * + * Syntax: + * TraceKit.report.subscribe(function(stackInfo) { ... }) + * TraceKit.report.unsubscribe(function(stackInfo) { ... }) + * TraceKit.report(exception) + * try { ...code... } catch(ex) { TraceKit.report(ex); } + * + * Supports: + * - Firefox: full stack trace with line numbers, plus column number + * on top frame; column number is not guaranteed + * - Opera: full stack trace with line and column numbers + * - Chrome: full stack trace with line and column numbers + * - Safari: line and column number for the top frame only; some frames + * may be missing, and column number is not guaranteed + * - IE: line and column number for the top frame only; some frames + * may be missing, and column number is not guaranteed + * + * In theory, TraceKit should work on all of the following versions: + * - IE5.5+ (only 8.0 tested) + * - Firefox 0.9+ (only 3.5+ tested) + * - Opera 7+ (only 10.50 tested; versions 9 and earlier may require + * Exceptions Have Stacktrace to be enabled in opera:config) + * - Safari 3+ (only 4+ tested) + * - Chrome 1+ (only 5+ tested) + * - Konqueror 3.5+ (untested) + * + * Requires TraceKit.computeStackTrace. + * + * Tries to catch all unhandled exceptions and report them to the + * subscribed handlers. Please note that TraceKit.report will rethrow the + * exception. This is REQUIRED in order to get a useful stack trace in IE. + * If the exception does not reach the top of the browser, you will only + * get a stack trace from the point where TraceKit.report was called. + * + * Handlers receive a stackInfo object as described in the + * TraceKit.computeStackTrace docs. + */ +TraceKit.report = (function reportModuleWrapper() { + var handlers = [], + lastArgs = null, + lastException = null, + lastExceptionStack = null; - error = error || new Error('Raven send failed (no additional details provided)'); - callback && callback(error); + /** + * Add a crash handler. + * @param {Function} handler + */ + function subscribe(handler) { + installGlobalHandler(); + handlers.push(handler); + } + + /** + * Remove a crash handler. + * @param {Function} handler + */ + function unsubscribe(handler) { + for (var i = handlers.length - 1; i >= 0; --i) { + if (handlers[i] === handler) { + handlers.splice(i, 1); } - }); - }, - _makeRequest: function _makeRequest(opts) { - // Auth is intentionally sent as part of query string (NOT as custom HTTP header) to avoid preflight CORS requests - var url = opts.url + '?' + urlencode(opts.auth); - var evaluatedHeaders = null; - var evaluatedFetchParameters = {}; + } + } - if (opts.options.headers) { - evaluatedHeaders = this._evaluateHash(opts.options.headers); + /** + * Remove all crash handlers. + */ + function unsubscribeAll() { + uninstallGlobalHandler(); + handlers = []; + } + + /** + * Dispatch stack information to all handlers. + * @param {Object.} stack + */ + function notifyHandlers(stack, isWindowError) { + var exception = null; + if (isWindowError && !TraceKit.collectWindowErrors) { + return; + } + for (var i in handlers) { + if (handlers.hasOwnProperty(i)) { + try { + handlers[i].apply(null, [stack].concat(_slice.call(arguments, 2))); + } catch (inner) { + exception = inner; + } + } } - if (opts.options.fetchParameters) { - evaluatedFetchParameters = this._evaluateHash(opts.options.fetchParameters); + if (exception) { + throw exception; } + } - if (supportsFetch()) { - evaluatedFetchParameters.body = stringify_1(opts.data); - var defaultFetchOptions = objectMerge({}, this._fetchDefaults); - var fetchOptions = objectMerge(defaultFetchOptions, evaluatedFetchParameters); + var _oldOnerrorHandler, _onErrorHandlerInstalled; - if (evaluatedHeaders) { - fetchOptions.headers = evaluatedHeaders; + /** + * Ensures all global unhandled exceptions are recorded. + * Supported by Gecko and IE. + * @param {string} msg Error message. + * @param {string} url URL of script that generated the exception. + * @param {(number|string)} lineNo The line number at which the error + * occurred. + * @param {?(number|string)} colNo The column number at which the error + * occurred. + * @param {?Error} ex The actual Error object. + */ + function traceKitWindowOnError(msg, url, lineNo, colNo, ex) { + var stack = null; + // If 'ex' is ErrorEvent, get real Error from inside + var exception = utils.isErrorEvent(ex) ? ex.error : ex; + // If 'msg' is ErrorEvent, get real message from inside + var message = utils.isErrorEvent(msg) ? msg.message : msg; + + if (lastExceptionStack) { + TraceKit.computeStackTrace.augmentStackTraceWithInitialElement( + lastExceptionStack, + url, + lineNo, + message + ); + processLastException(); + } else if (exception && utils.isError(exception)) { + // non-string `exception` arg; attempt to extract stack trace + + // New chrome and blink send along a real error object + // Let's just report that like a normal error. + // See: https://mikewest.org/2013/08/debugging-runtime-errors-with-window-onerror + stack = TraceKit.computeStackTrace(exception); + notifyHandlers(stack, true); + } else { + var location = { + url: url, + line: lineNo, + column: colNo + }; + + var name = undefined; + var groups; + + if ({}.toString.call(message) === '[object String]') { + var groups = message.match(ERROR_TYPES_RE); + if (groups) { + name = groups[1]; + message = groups[2]; + } } - return _window$1.fetch(url, fetchOptions).then(function (response) { - if (response.ok) { - opts.onSuccess && opts.onSuccess(); - } else { - var error = new Error('Sentry error code: ' + response.status); // It's called request only to keep compatibility with XHR interface - // and not add more redundant checks in setBackoffState method + location.func = UNKNOWN_FUNCTION; + + stack = { + name: name, + message: message, + url: getLocationHref(), + stack: [location] + }; + notifyHandlers(stack, true); + } + + if (_oldOnerrorHandler) { + return _oldOnerrorHandler.apply(this, arguments); + } + + return false; + } - error.request = response; - opts.onError && opts.onError(error); + function installGlobalHandler() { + if (_onErrorHandlerInstalled) { + return; + } + _oldOnerrorHandler = _window.onerror; + _window.onerror = traceKitWindowOnError; + _onErrorHandlerInstalled = true; + } + + function uninstallGlobalHandler() { + if (!_onErrorHandlerInstalled) { + return; + } + _window.onerror = _oldOnerrorHandler; + _onErrorHandlerInstalled = false; + _oldOnerrorHandler = undefined; + } + + function processLastException() { + var _lastExceptionStack = lastExceptionStack, + _lastArgs = lastArgs; + lastArgs = null; + lastExceptionStack = null; + lastException = null; + notifyHandlers.apply(null, [_lastExceptionStack, false].concat(_lastArgs)); + } + + /** + * Reports an unhandled Error to TraceKit. + * @param {Error} ex + * @param {?boolean} rethrow If false, do not re-throw the exception. + * Only used for window.onerror to not cause an infinite loop of + * rethrowing. + */ + function report(ex, rethrow) { + var args = _slice.call(arguments, 1); + if (lastExceptionStack) { + if (lastException === ex) { + return; // already caught by an inner catch block, ignore + } else { + processLastException(); + } + } + + var stack = TraceKit.computeStackTrace(ex); + lastExceptionStack = stack; + lastException = ex; + lastArgs = args; + + // If the stack trace is incomplete, wait for 2 seconds for + // slow slow IE to see if onerror occurs or not before reporting + // this exception; otherwise, we will end up with an incomplete + // stack trace + setTimeout(function() { + if (lastException === ex) { + processLastException(); + } + }, stack.incomplete ? 2000 : 0); + + if (rethrow !== false) { + throw ex; // re-throw to propagate to the top level (and cause window.onerror) + } + } + + report.subscribe = subscribe; + report.unsubscribe = unsubscribe; + report.uninstall = unsubscribeAll; + return report; +})(); + +/** + * TraceKit.computeStackTrace: cross-browser stack traces in JavaScript + * + * Syntax: + * s = TraceKit.computeStackTrace(exception) // consider using TraceKit.report instead (see below) + * Returns: + * s.name - exception name + * s.message - exception message + * s.stack[i].url - JavaScript or HTML file URL + * s.stack[i].func - function name, or empty for anonymous functions (if guessing did not work) + * s.stack[i].args - arguments passed to the function, if known + * s.stack[i].line - line number, if known + * s.stack[i].column - column number, if known + * + * Supports: + * - Firefox: full stack trace with line numbers and unreliable column + * number on top frame + * - Opera 10: full stack trace with line and column numbers + * - Opera 9-: full stack trace with line numbers + * - Chrome: full stack trace with line and column numbers + * - Safari: line and column number for the topmost stacktrace element + * only + * - IE: no line numbers whatsoever + * + * Tries to guess names of anonymous functions by looking for assignments + * in the source code. In IE and Safari, we have to guess source file names + * by searching for function bodies inside all page scripts. This will not + * work for scripts that are loaded cross-domain. + * Here be dragons: some function names may be guessed incorrectly, and + * duplicate functions may be mismatched. + * + * TraceKit.computeStackTrace should only be used for tracing purposes. + * Logging of unhandled exceptions should be done with TraceKit.report, + * which builds on top of TraceKit.computeStackTrace and provides better + * IE support by utilizing the window.onerror event to retrieve information + * about the top of the stack. + * + * Note: In IE and Safari, no stack trace is recorded on the Error object, + * so computeStackTrace instead walks its *own* chain of callers. + * This means that: + * * in Safari, some methods may be missing from the stack trace; + * * in IE, the topmost function in the stack trace will always be the + * caller of computeStackTrace. + * + * This is okay for tracing (because you are likely to be calling + * computeStackTrace from the function you want to be the topmost element + * of the stack trace anyway), but not okay for logging unhandled + * exceptions (because your catch block will likely be far away from the + * inner function that actually caused the exception). + * + */ +TraceKit.computeStackTrace = (function computeStackTraceWrapper() { + // Contents of Exception in various browsers. + // + // SAFARI: + // ex.message = Can't find variable: qq + // ex.line = 59 + // ex.sourceId = 580238192 + // ex.sourceURL = http://... + // ex.expressionBeginOffset = 96 + // ex.expressionCaretOffset = 98 + // ex.expressionEndOffset = 98 + // ex.name = ReferenceError + // + // FIREFOX: + // ex.message = qq is not defined + // ex.fileName = http://... + // ex.lineNumber = 59 + // ex.columnNumber = 69 + // ex.stack = ...stack trace... (see the example below) + // ex.name = ReferenceError + // + // CHROME: + // ex.message = qq is not defined + // ex.name = ReferenceError + // ex.type = not_defined + // ex.arguments = ['aa'] + // ex.stack = ...stack trace... + // + // INTERNET EXPLORER: + // ex.message = ... + // ex.name = ReferenceError + // + // OPERA: + // ex.message = ...message... (see the example below) + // ex.name = ReferenceError + // ex.opera#sourceloc = 11 (pretty much useless, duplicates the info in ex.message) + // ex.stacktrace = n/a; see 'opera:config#UserPrefs|Exceptions Have Stacktrace' + + /** + * Computes stack trace information from the stack property. + * Chrome and Gecko use this property. + * @param {Error} ex + * @return {?Object.} Stack trace information. + */ + function computeStackTraceFromStackProp(ex) { + if (typeof ex.stack === 'undefined' || !ex.stack) return; + + var chrome = /^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i; + var winjs = /^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i; + // NOTE: blob urls are now supposed to always have an origin, therefore it's format + // which is `blob:http://url/path/with-some-uuid`, is matched by `blob.*?:\/` as well + var gecko = /^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i; + // Used to additionally parse URL/line/column from eval frames + var geckoEval = /(\S+) line (\d+)(?: > eval line \d+)* > eval/i; + var chromeEval = /\((\S*)(?::(\d+))(?::(\d+))\)/; + var lines = ex.stack.split('\n'); + var stack = []; + var submatch; + var parts; + var element; + var reference = /^(.*) is undefined$/.exec(ex.message); + + for (var i = 0, j = lines.length; i < j; ++i) { + if ((parts = chrome.exec(lines[i]))) { + var isNative = parts[2] && parts[2].indexOf('native') === 0; // start of line + var isEval = parts[2] && parts[2].indexOf('eval') === 0; // start of line + if (isEval && (submatch = chromeEval.exec(parts[2]))) { + // throw out eval line/column and use top-most line/column number + parts[2] = submatch[1]; // url + parts[3] = submatch[2]; // line + parts[4] = submatch[3]; // column } - })['catch'](function () { - opts.onError && opts.onError(new Error('Sentry error code: network unavailable')); - }); + element = { + url: !isNative ? parts[2] : null, + func: parts[1] || UNKNOWN_FUNCTION, + args: isNative ? [parts[2]] : [], + line: parts[3] ? +parts[3] : null, + column: parts[4] ? +parts[4] : null + }; + } else if ((parts = winjs.exec(lines[i]))) { + element = { + url: parts[2], + func: parts[1] || UNKNOWN_FUNCTION, + args: [], + line: +parts[3], + column: parts[4] ? +parts[4] : null + }; + } else if ((parts = gecko.exec(lines[i]))) { + var isEval = parts[3] && parts[3].indexOf(' > eval') > -1; + if (isEval && (submatch = geckoEval.exec(parts[3]))) { + // throw out eval line/column and use top-most line number + parts[3] = submatch[1]; + parts[4] = submatch[2]; + parts[5] = null; // no column when eval + } else if (i === 0 && !parts[5] && typeof ex.columnNumber !== 'undefined') { + // FireFox uses this awesome columnNumber property for its top frame + // Also note, Firefox's column number is 0-based and everything else expects 1-based, + // so adding 1 + // NOTE: this hack doesn't work if top-most frame is eval + stack[0].column = ex.columnNumber + 1; + } + element = { + url: parts[3], + func: parts[1] || UNKNOWN_FUNCTION, + args: parts[2] ? parts[2].split(',') : [], + line: parts[4] ? +parts[4] : null, + column: parts[5] ? +parts[5] : null + }; + } else { + continue; + } + + if (!element.func && element.line) { + element.func = UNKNOWN_FUNCTION; + } + + stack.push(element); } - var request = _window$1.XMLHttpRequest && new _window$1.XMLHttpRequest(); - if (!request) return; // if browser doesn't support CORS (e.g. IE7), we are out of luck + if (!stack.length) { + return null; + } - var hasCORS = 'withCredentials' in request || typeof XDomainRequest !== 'undefined'; - if (!hasCORS) return; + return { + name: ex.name, + message: ex.message, + url: getLocationHref(), + stack: stack + }; + } - if ('withCredentials' in request) { - request.onreadystatechange = function () { - if (request.readyState !== 4) { - return; - } else if (request.status === 200) { - opts.onSuccess && opts.onSuccess(); - } else if (opts.onError) { - var err = new Error('Sentry error code: ' + request.status); - err.request = request; - opts.onError(err); + /** + * Adds information about the first frame to incomplete stack traces. + * Safari and IE require this to get complete data on the first frame. + * @param {Object.} stackInfo Stack trace information from + * one of the compute* methods. + * @param {string} url The URL of the script that caused an error. + * @param {(number|string)} lineNo The line number of the script that + * caused an error. + * @param {string=} message The error generated by the browser, which + * hopefully contains the name of the object that caused the error. + * @return {boolean} Whether or not the stack information was + * augmented. + */ + function augmentStackTraceWithInitialElement(stackInfo, url, lineNo, message) { + var initial = { + url: url, + line: lineNo + }; + + if (initial.url && initial.line) { + stackInfo.incomplete = false; + + if (!initial.func) { + initial.func = UNKNOWN_FUNCTION; + } + + if (stackInfo.stack.length > 0) { + if (stackInfo.stack[0].url === initial.url) { + if (stackInfo.stack[0].line === initial.line) { + return false; // already in stack trace + } else if ( + !stackInfo.stack[0].line && + stackInfo.stack[0].func === initial.func + ) { + stackInfo.stack[0].line = initial.line; + return false; + } } + } + + stackInfo.stack.unshift(initial); + stackInfo.partial = true; + return true; + } else { + stackInfo.incomplete = true; + } + + return false; + } + + /** + * Computes stack trace information by walking the arguments.caller + * chain at the time the exception occurred. This will cause earlier + * frames to be missed but is the only way to get any stack trace in + * Safari and IE. The top frame is restored by + * {@link augmentStackTraceWithInitialElement}. + * @param {Error} ex + * @return {?Object.} Stack trace information. + */ + function computeStackTraceByWalkingCallerChain(ex, depth) { + var functionName = /function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i, + stack = [], + funcs = {}, + recursion = false, + parts, + item, + source; + + for ( + var curr = computeStackTraceByWalkingCallerChain.caller; + curr && !recursion; + curr = curr.caller + ) { + if (curr === computeStackTrace || curr === TraceKit.report) { + // console.log('skipping internal function'); + continue; + } + + item = { + url: null, + func: UNKNOWN_FUNCTION, + line: null, + column: null }; - } else { - request = new XDomainRequest(); // xdomainrequest cannot go http -> https (or vice versa), - // so always use protocol relative - url = url.replace(/^https?:/, ''); // onreadystatechange not supported by XDomainRequest + if (curr.name) { + item.func = curr.name; + } else if ((parts = functionName.exec(curr.toString()))) { + item.func = parts[1]; + } - if (opts.onSuccess) { - request.onload = opts.onSuccess; + if (typeof item.func === 'undefined') { + try { + item.func = parts.input.substring(0, parts.input.indexOf('{')); + } catch (e) {} } - if (opts.onError) { - request.onerror = function () { - var err = new Error('Sentry error code: XDomainRequest'); - err.request = request; - opts.onError(err); - }; + if (funcs['' + curr]) { + recursion = true; + } else { + funcs['' + curr] = true; } - } - request.open('POST', url); + stack.push(item); + } - if (evaluatedHeaders) { - each(evaluatedHeaders, function (key, value) { - request.setRequestHeader(key, value); - }); + if (depth) { + // console.log('depth is ' + depth); + // console.log('stack is ' + stack.length); + stack.splice(0, depth); } - request.send(stringify_1(opts.data)); - }, - _evaluateHash: function _evaluateHash(hash) { - var evaluated = {}; + var result = { + name: ex.name, + message: ex.message, + url: getLocationHref(), + stack: stack + }; + augmentStackTraceWithInitialElement( + result, + ex.sourceURL || ex.fileName, + ex.line || ex.lineNumber, + ex.message || ex.description + ); + return result; + } - for (var key in hash) { - if (hash.hasOwnProperty(key)) { - var value = hash[key]; - evaluated[key] = typeof value === 'function' ? value() : value; + /** + * Computes a stack trace for an exception. + * @param {Error} ex + * @param {(string|number)=} depth + */ + function computeStackTrace(ex, depth) { + var stack = null; + depth = depth == null ? 0 : +depth; + + try { + stack = computeStackTraceFromStackProp(ex); + if (stack) { + return stack; + } + } catch (e) { + if (TraceKit.debug) { + throw e; } } - return evaluated; - }, - _logDebug: function _logDebug(level) { - if (this._originalConsoleMethods[level] && this.debug) { - // In IE<10 console methods do not have their own 'apply' method - Function.prototype.apply.call(this._originalConsoleMethods[level], this._originalConsole, [].slice.call(arguments, 1)); - } - }, - _mergeContext: function _mergeContext(key, context) { - if (isUndefined(context)) { - delete this._globalContext[key]; - } else { - this._globalContext[key] = objectMerge(this._globalContext[key] || {}, context); + try { + stack = computeStackTraceByWalkingCallerChain(ex, depth + 1); + if (stack) { + return stack; + } + } catch (e) { + if (TraceKit.debug) { + throw e; + } } + return { + name: ex.name, + message: ex.message, + url: getLocationHref() + }; } -}; // Deprecations -Raven$1.prototype.setUser = Raven$1.prototype.setUserContext; -Raven$1.prototype.setReleaseContext = Raven$1.prototype.setRelease; -var raven = Raven$1; + computeStackTrace.augmentStackTraceWithInitialElement = augmentStackTraceWithInitialElement; + computeStackTrace.computeStackTraceFromStackProp = computeStackTraceFromStackProp; -/** - * Enforces a single instance of the Raven client, and the - * main entry point for Raven. If you are a consumer of the - * Raven library, you SHOULD load this file (vs raven.js). - **/ -// This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) + return computeStackTrace; +})(); -var _window = typeof window !== 'undefined' ? window : typeof commonjsGlobal !== 'undefined' ? commonjsGlobal : typeof self !== 'undefined' ? self : {}; +module.exports = TraceKit; -var _Raven = _window.Raven; -var Raven = new raven(); +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"8":8}],10:[function(_dereq_,module,exports){ /* - * Allow multiple versions of Raven to be installed. - * Strip Raven from the global context and returns the instance. - * - * @return {Raven} - */ - -Raven.noConflict = function () { - _window.Raven = _Raven; - return Raven; -}; - -Raven.afterLoad(); -var singleton = Raven; - -/** - * Angular.js plugin - * - * Provides an $exceptionHandler for Angular.js - */ + json-stringify-safe + Like JSON.stringify, but doesn't throw on circular references. -var wrappedCallback$1 = utils.wrappedCallback; // See https://github.com/angular/angular.js/blob/v1.4.7/src/minErr.js + Originally forked from https://github.com/isaacs/json-stringify-safe + version 5.0.1 on 3/8/2017 and modified to handle Errors serialization + and IE8 compatibility. Tests for this are in test/vendor. -var angularPattern = /^\[((?:[$a-zA-Z0-9]+:)?(?:[$a-zA-Z0-9]+))\] (.*?)\n?(\S+)$/; -var moduleName = 'ngRaven'; + ISC license: https://github.com/isaacs/json-stringify-safe/blob/master/LICENSE +*/ -function angularPlugin(Raven, angular) { - angular = angular || window.angular; - if (!angular) return; +exports = module.exports = stringify; +exports.getSerialize = serializer; - function RavenProvider() { - this.$get = ['$window', function ($window) { - return Raven; - }]; +function indexOf(haystack, needle) { + for (var i = 0; i < haystack.length; ++i) { + if (haystack[i] === needle) return i; } + return -1; +} - function ExceptionHandlerProvider($provide) { - $provide.decorator('$exceptionHandler', ['Raven', '$delegate', exceptionHandler]); - } +function stringify(obj, replacer, spaces, cycleReplacer) { + return JSON.stringify(obj, serializer(replacer, cycleReplacer), spaces); +} - function exceptionHandler(R, $delegate) { - return function (ex, cause) { - R.captureException(ex, { - extra: { - cause: cause - } - }); - $delegate(ex, cause); - }; +// https://github.com/ftlabs/js-abbreviate/blob/fa709e5f139e7770a71827b1893f22418097fbda/index.js#L95-L106 +function stringifyError(value) { + var err = { + // These properties are implemented as magical getters and don't show up in for in + stack: value.stack, + message: value.message, + name: value.name + }; + + for (var i in value) { + if (Object.prototype.hasOwnProperty.call(value, i)) { + err[i] = value[i]; + } } - angular.module(moduleName, []).provider('Raven', RavenProvider).config(['$provide', ExceptionHandlerProvider]); - Raven.setDataCallback(wrappedCallback$1(function (data) { - return angularPlugin._normalizeData(data); - })); + return err; } -angularPlugin._normalizeData = function (data) { - // We only care about mutating an exception - var exception = data.exception; +function serializer(replacer, cycleReplacer) { + var stack = []; + var keys = []; - if (exception) { - exception = exception.values[0]; - var matches = angularPattern.exec(exception.value); + if (cycleReplacer == null) { + cycleReplacer = function(key, value) { + if (stack[0] === value) { + return '[Circular ~]'; + } + return '[Circular ~.' + keys.slice(0, indexOf(stack, value)).join('.') + ']'; + }; + } - if (matches) { - // This type now becomes something like: $rootScope:inprog - exception.type = matches[1]; - exception.value = matches[2]; - data.message = exception.type + ': ' + exception.value; // auto set a new tag specifically for the angular error url + return function(key, value) { + if (stack.length > 0) { + var thisPos = indexOf(stack, this); + ~thisPos ? stack.splice(thisPos + 1) : stack.push(this); + ~thisPos ? keys.splice(thisPos, Infinity, key) : keys.push(key); - data.extra.angularDocs = matches[3].substr(0, 250); + if (~indexOf(stack, value)) { + value = cycleReplacer.call(this, key, value); + } + } else { + stack.push(value); } - } - - return data; -}; -angularPlugin.moduleName = moduleName; -var angular = angularPlugin; + return replacer == null + ? value instanceof Error ? stringifyError(value) : value + : replacer.call(this, key, value); + }; +} -/** - * Ember.js plugin +},{}],11:[function(_dereq_,module,exports){ +/* + * JavaScript MD5 + * https://github.com/blueimp/JavaScript-MD5 * - * Patches event handler callbacks and ajax callbacks. + * Copyright 2011, Sebastian Tschan + * https://blueimp.net + * + * Licensed under the MIT license: + * https://opensource.org/licenses/MIT + * + * Based on + * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message + * Digest Algorithm, as defined in RFC 1321. + * Version 2.2 Copyright (C) Paul Johnston 1999 - 2009 + * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet + * Distributed under the BSD License + * See http://pajhome.org.uk/crypt/md5 for more info. */ -function emberPlugin(Raven, Ember) { - Ember = Ember || window.Ember; // quit if Ember isn't on the page - - if (!Ember) return; - var _oldOnError = Ember.onerror; - - Ember.onerror = function EmberOnError(error) { - Raven.captureException(error); - if (typeof _oldOnError === 'function') { - _oldOnError.call(this, error); - } - }; +/* +* Add integers, wrapping at 2^32. This uses 16-bit operations internally +* to work around bugs in some JS interpreters. +*/ +function safeAdd(x, y) { + var lsw = (x & 0xffff) + (y & 0xffff); + var msw = (x >> 16) + (y >> 16) + (lsw >> 16); + return (msw << 16) | (lsw & 0xffff); +} - Ember.RSVP.on('error', function (reason) { - if (reason instanceof Error) { - Raven.captureException(reason, { - extra: { - context: 'Unhandled Promise error detected' - } - }); - } else { - Raven.captureMessage('Unhandled Promise error detected', { - extra: { - reason: reason - } - }); - } - }); +/* +* Bitwise rotate a 32-bit number to the left. +*/ +function bitRotateLeft(num, cnt) { + return (num << cnt) | (num >>> (32 - cnt)); } -var ember = emberPlugin; +/* +* These functions implement the four basic operations the algorithm uses. +*/ +function md5cmn(q, a, b, x, s, t) { + return safeAdd(bitRotateLeft(safeAdd(safeAdd(a, q), safeAdd(x, t)), s), b); +} +function md5ff(a, b, c, d, x, s, t) { + return md5cmn((b & c) | (~b & d), a, b, x, s, t); +} +function md5gg(a, b, c, d, x, s, t) { + return md5cmn((b & d) | (c & ~d), a, b, x, s, t); +} +function md5hh(a, b, c, d, x, s, t) { + return md5cmn(b ^ c ^ d, a, b, x, s, t); +} +function md5ii(a, b, c, d, x, s, t) { + return md5cmn(c ^ (b | ~d), a, b, x, s, t); +} -/** - * Vue.js 2.0 plugin - * - */ -function formatComponentName(vm) { - if (vm.$root === vm) { - return 'root instance'; +/* +* Calculate the MD5 of an array of little-endian words, and a bit length. +*/ +function binlMD5(x, len) { + /* append padding */ + x[len >> 5] |= 0x80 << (len % 32); + x[(((len + 64) >>> 9) << 4) + 14] = len; + + var i; + var olda; + var oldb; + var oldc; + var oldd; + var a = 1732584193; + var b = -271733879; + var c = -1732584194; + var d = 271733878; + + for (i = 0; i < x.length; i += 16) { + olda = a; + oldb = b; + oldc = c; + oldd = d; + + a = md5ff(a, b, c, d, x[i], 7, -680876936); + d = md5ff(d, a, b, c, x[i + 1], 12, -389564586); + c = md5ff(c, d, a, b, x[i + 2], 17, 606105819); + b = md5ff(b, c, d, a, x[i + 3], 22, -1044525330); + a = md5ff(a, b, c, d, x[i + 4], 7, -176418897); + d = md5ff(d, a, b, c, x[i + 5], 12, 1200080426); + c = md5ff(c, d, a, b, x[i + 6], 17, -1473231341); + b = md5ff(b, c, d, a, x[i + 7], 22, -45705983); + a = md5ff(a, b, c, d, x[i + 8], 7, 1770035416); + d = md5ff(d, a, b, c, x[i + 9], 12, -1958414417); + c = md5ff(c, d, a, b, x[i + 10], 17, -42063); + b = md5ff(b, c, d, a, x[i + 11], 22, -1990404162); + a = md5ff(a, b, c, d, x[i + 12], 7, 1804603682); + d = md5ff(d, a, b, c, x[i + 13], 12, -40341101); + c = md5ff(c, d, a, b, x[i + 14], 17, -1502002290); + b = md5ff(b, c, d, a, x[i + 15], 22, 1236535329); + + a = md5gg(a, b, c, d, x[i + 1], 5, -165796510); + d = md5gg(d, a, b, c, x[i + 6], 9, -1069501632); + c = md5gg(c, d, a, b, x[i + 11], 14, 643717713); + b = md5gg(b, c, d, a, x[i], 20, -373897302); + a = md5gg(a, b, c, d, x[i + 5], 5, -701558691); + d = md5gg(d, a, b, c, x[i + 10], 9, 38016083); + c = md5gg(c, d, a, b, x[i + 15], 14, -660478335); + b = md5gg(b, c, d, a, x[i + 4], 20, -405537848); + a = md5gg(a, b, c, d, x[i + 9], 5, 568446438); + d = md5gg(d, a, b, c, x[i + 14], 9, -1019803690); + c = md5gg(c, d, a, b, x[i + 3], 14, -187363961); + b = md5gg(b, c, d, a, x[i + 8], 20, 1163531501); + a = md5gg(a, b, c, d, x[i + 13], 5, -1444681467); + d = md5gg(d, a, b, c, x[i + 2], 9, -51403784); + c = md5gg(c, d, a, b, x[i + 7], 14, 1735328473); + b = md5gg(b, c, d, a, x[i + 12], 20, -1926607734); + + a = md5hh(a, b, c, d, x[i + 5], 4, -378558); + d = md5hh(d, a, b, c, x[i + 8], 11, -2022574463); + c = md5hh(c, d, a, b, x[i + 11], 16, 1839030562); + b = md5hh(b, c, d, a, x[i + 14], 23, -35309556); + a = md5hh(a, b, c, d, x[i + 1], 4, -1530992060); + d = md5hh(d, a, b, c, x[i + 4], 11, 1272893353); + c = md5hh(c, d, a, b, x[i + 7], 16, -155497632); + b = md5hh(b, c, d, a, x[i + 10], 23, -1094730640); + a = md5hh(a, b, c, d, x[i + 13], 4, 681279174); + d = md5hh(d, a, b, c, x[i], 11, -358537222); + c = md5hh(c, d, a, b, x[i + 3], 16, -722521979); + b = md5hh(b, c, d, a, x[i + 6], 23, 76029189); + a = md5hh(a, b, c, d, x[i + 9], 4, -640364487); + d = md5hh(d, a, b, c, x[i + 12], 11, -421815835); + c = md5hh(c, d, a, b, x[i + 15], 16, 530742520); + b = md5hh(b, c, d, a, x[i + 2], 23, -995338651); + + a = md5ii(a, b, c, d, x[i], 6, -198630844); + d = md5ii(d, a, b, c, x[i + 7], 10, 1126891415); + c = md5ii(c, d, a, b, x[i + 14], 15, -1416354905); + b = md5ii(b, c, d, a, x[i + 5], 21, -57434055); + a = md5ii(a, b, c, d, x[i + 12], 6, 1700485571); + d = md5ii(d, a, b, c, x[i + 3], 10, -1894986606); + c = md5ii(c, d, a, b, x[i + 10], 15, -1051523); + b = md5ii(b, c, d, a, x[i + 1], 21, -2054922799); + a = md5ii(a, b, c, d, x[i + 8], 6, 1873313359); + d = md5ii(d, a, b, c, x[i + 15], 10, -30611744); + c = md5ii(c, d, a, b, x[i + 6], 15, -1560198380); + b = md5ii(b, c, d, a, x[i + 13], 21, 1309151649); + a = md5ii(a, b, c, d, x[i + 4], 6, -145523070); + d = md5ii(d, a, b, c, x[i + 11], 10, -1120210379); + c = md5ii(c, d, a, b, x[i + 2], 15, 718787259); + b = md5ii(b, c, d, a, x[i + 9], 21, -343485551); + + a = safeAdd(a, olda); + b = safeAdd(b, oldb); + c = safeAdd(c, oldc); + d = safeAdd(d, oldd); } + return [a, b, c, d]; +} - var name = vm._isVue ? vm.$options.name || vm.$options._componentTag : vm.name; - return (name ? 'component <' + name + '>' : 'anonymous component') + (vm._isVue && vm.$options.__file ? ' at ' + vm.$options.__file : ''); +/* +* Convert an array of little-endian words to a string +*/ +function binl2rstr(input) { + var i; + var output = ''; + var length32 = input.length * 32; + for (i = 0; i < length32; i += 8) { + output += String.fromCharCode((input[i >> 5] >>> (i % 32)) & 0xff); + } + return output; } -function vuePlugin(Raven, Vue) { - Vue = Vue || window.Vue; // quit if Vue isn't on the page +/* +* Convert a raw string to an array of little-endian words +* Characters >255 have their high-byte silently ignored. +*/ +function rstr2binl(input) { + var i; + var output = []; + output[(input.length >> 2) - 1] = undefined; + for (i = 0; i < output.length; i += 1) { + output[i] = 0; + } + var length8 = input.length * 8; + for (i = 0; i < length8; i += 8) { + output[i >> 5] |= (input.charCodeAt(i / 8) & 0xff) << (i % 32); + } + return output; +} - if (!Vue || !Vue.config) return; - var _oldOnError = Vue.config.errorHandler; +/* +* Calculate the MD5 of a raw string +*/ +function rstrMD5(s) { + return binl2rstr(binlMD5(rstr2binl(s), s.length * 8)); +} - Vue.config.errorHandler = function VueErrorHandler(error, vm, info) { - var metaData = {}; // vm and lifecycleHook are not always available +/* +* Calculate the HMAC-MD5, of a key and some data (raw strings) +*/ +function rstrHMACMD5(key, data) { + var i; + var bkey = rstr2binl(key); + var ipad = []; + var opad = []; + var hash; + ipad[15] = opad[15] = undefined; + if (bkey.length > 16) { + bkey = binlMD5(bkey, key.length * 8); + } + for (i = 0; i < 16; i += 1) { + ipad[i] = bkey[i] ^ 0x36363636; + opad[i] = bkey[i] ^ 0x5c5c5c5c; + } + hash = binlMD5(ipad.concat(rstr2binl(data)), 512 + data.length * 8); + return binl2rstr(binlMD5(opad.concat(hash), 512 + 128)); +} - if (Object.prototype.toString.call(vm) === '[object Object]') { - metaData.componentName = formatComponentName(vm); - metaData.propsData = vm.$options.propsData; - } +/* +* Convert a raw string to a hex string +*/ +function rstr2hex(input) { + var hexTab = '0123456789abcdef'; + var output = ''; + var x; + var i; + for (i = 0; i < input.length; i += 1) { + x = input.charCodeAt(i); + output += hexTab.charAt((x >>> 4) & 0x0f) + hexTab.charAt(x & 0x0f); + } + return output; +} - if (typeof info !== 'undefined') { - metaData.lifecycleHook = info; - } +/* +* Encode a string as utf-8 +*/ +function str2rstrUTF8(input) { + return unescape(encodeURIComponent(input)); +} - Raven.captureException(error, { - extra: metaData - }); +/* +* Take string arguments and return either raw or hex encoded strings +*/ +function rawMD5(s) { + return rstrMD5(str2rstrUTF8(s)); +} +function hexMD5(s) { + return rstr2hex(rawMD5(s)); +} +function rawHMACMD5(k, d) { + return rstrHMACMD5(str2rstrUTF8(k), str2rstrUTF8(d)); +} +function hexHMACMD5(k, d) { + return rstr2hex(rawHMACMD5(k, d)); +} - if (typeof _oldOnError === 'function') { - _oldOnError.call(this, error, vm, info); +function md5(string, key, raw) { + if (!key) { + if (!raw) { + return hexMD5(string); } - }; + return rawMD5(string); + } + if (!raw) { + return hexHMACMD5(key, string); + } + return rawHMACMD5(key, string); } -var vue = vuePlugin; - -/* This file was generated by './scripts/generate-plugin-combinations.js'! */ - -singleton.addPlugin(angular).addPlugin(ember).addPlugin(vue); -var angular_ember_vue = {}; - -return angular_ember_vue; +module.exports = md5; -}))); +},{}]},{},[7,1,2,3])(7) +}); \ No newline at end of file diff --git a/dist/angular,ember,vue/raven.min.js b/dist/angular,ember,vue/raven.min.js index 2ec8de56dcda..792f5e729b70 100644 --- a/dist/angular,ember,vue/raven.min.js +++ b/dist/angular,ember,vue/raven.min.js @@ -1,3 +1,4 @@ -/*! Raven.js 3.22.2 (1b6187b) | github.com/getsentry/raven-js */ -!function(a,b){"object"==typeof exports&&"undefined"!=typeof module?module.exports=b():"function"==typeof define&&define.amd?define(b):a.Raven=b()}(this,function(){"use strict";function a(a,b){return b={exports:{}},a(b,b.exports),b.exports}function b(a){return(b="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(a){return typeof a}:function(a){return a&&"function"==typeof Symbol&&a.constructor===Symbol&&a!==Symbol.prototype?"symbol":typeof a})(a)}function c(a){return"object"===b(a)&&null!==a}function d(a){switch({}.toString.call(a)){case"[object Error]":return!0;case"[object Exception]":return!0;case"[object DOMException]":return!0;default:return a instanceof Error}}function e(a){return l()&&"[object ErrorEvent]"==={}.toString.call(a)}function f(a){return void 0===a}function g(a){return"function"==typeof a}function h(a){return"[object Object]"===Object.prototype.toString.call(a)}function i(a){return"[object String]"===Object.prototype.toString.call(a)}function j(a){return"[object Array]"===Object.prototype.toString.call(a)}function k(a){if(!h(a))return!1;for(var b in a)if(a.hasOwnProperty(b))return!1;return!0}function l(){try{return new ErrorEvent(""),!0}catch(a){return!1}}function m(){if(!("fetch"in Q))return!1;try{return new Headers,new Request(""),new Response,!0}catch(a){return!1}}function n(a){function b(b,c){var d=a(b)||b;return c?c(d)||d:d}return b}function o(a,b){var c,d;if(f(a.length))for(c in a)s(a,c)&&b.call(null,c,a[c]);else if(d=a.length)for(c=0;c ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function y(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&i(b))for(c=b.split(/\s+/),f=0;f":"anonymous component")+(a._isVue&&a.$options.__file?" at "+a.$options.__file:"")}function N(a,b){if(b=b||window.Vue,b&&b.config){var c=b.config.errorHandler;b.config.errorHandler=function(b,d,e){var f={};"[object Object]"===Object.prototype.toString.call(d)&&(f.componentName=M(d),f.propsData=d.$options.propsData),"undefined"!=typeof e&&(f.lifecycleHook=e),a.captureException(b,{extra:f}),"function"==typeof c&&c.call(this,b,d,e)}}}var O="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{},P=Object.setPrototypeOf||function(a,b){return a.C=b,a},Q=("object"==typeof Reflect&&Reflect.construct||function(a,b,c){var d,e=[null];return e.push.apply(e,b),d=a.bind.apply(a,e),P(new d,c.prototype)},"undefined"!=typeof window?window:"undefined"!=typeof O?O:"undefined"!=typeof self?self:{}),R={isObject:c,isError:d,isErrorEvent:e,isUndefined:f,isFunction:g,isPlainObject:h,isString:i,isArray:j,isEmptyObject:k,supportsErrorEvent:l,supportsFetch:m,wrappedCallback:n,each:o,objectMerge:p,truncate:r,objectFrozen:q,hasKey:s,joinRegExp:t,urlencode:u,uuid4:w,htmlTreeAsString:x,htmlElementAsString:y,isSameException:B,isSameStacktrace:C,parseUrl:v,fill:D,safeJoin:E},S={collectWindowErrors:!0,debug:!1},T="undefined"!=typeof window?window:"undefined"!=typeof O?O:"undefined"!=typeof self?self:{},U=[].slice,V="?",W=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;S.report=function(){function a(a){f(),l.push(a)}function b(a){for(var b=l.length-1;b>=0;--b)l[b]===a&&l.splice(b,1)}function c(){g(),l=[]}function d(a,b){var c=null;if(!b||S.collectWindowErrors){for(var d in l)if(l.hasOwnProperty(d))try{l[d].apply(null,[a].concat(U.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function e(a,b,c,e,f){var g=null,i=R.isErrorEvent(f)?f.error:f,k=R.isErrorEvent(a)?a.message:a;if(o)S.computeStackTrace.augmentStackTraceWithInitialElement(o,b,c,k),h();else if(i&&R.isError(i))g=S.computeStackTrace(i),d(g,!0);else{var l,m={url:b,line:c,column:e},n=void 0;if("[object String]"==={}.toString.call(k)){var l=k.match(W);l&&(n=l[1],k=l[2])}m.func=V,g={name:n,message:k,url:F(),stack:[m]},d(g,!0)}return!!j&&j.apply(this,arguments)}function f(){k||(j=T.onerror,T.onerror=e,k=!0)}function g(){k&&(T.onerror=j,k=!1,j=void 0)}function h(){var a=o,b=m;m=null,o=null,n=null,d.apply(null,[a,!1].concat(b))}function i(a,b){var c=U.call(arguments,1);if(o){if(n===a)return;h()}var d=S.computeStackTrace(a);if(o=d,n=a,m=c,setTimeout(function(){n===a&&h()},d.incomplete?2e3:0),b!==!1)throw a}var j,k,l=[],m=null,n=null,o=null;return i.subscribe=a,i.unsubscribe=b,i.uninstall=c,i}(),S.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,d,e=/^\s*at (.*?) ?\(((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,f=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|\[native).*?|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,g=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,h=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,i=/\((\S*)(?::(\d+))(?::(\d+))\)/,j=a.stack.split("\n"),k=[],l=(/^(.*) is undefined$/.exec(a.message),0),m=j.length;l eval")>-1;o&&(b=h.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==l||c[5]||"undefined"==typeof a.columnNumber||(k[0].column=a.columnNumber+1),d={url:c[3],func:c[1]||V,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}!d.func&&d.line&&(d.func=V),k.push(d)}return k.length?{name:a.name,message:a.message,url:F(),stack:k}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=V),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,e){for(var f,g,h=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,i=[],j={},k=!1,l=c.caller;l&&!k;l=l.caller)if(l!==d&&l!==S.report){if(g={url:null,func:V,line:null,column:null},l.name?g.func=l.name:(f=h.exec(l.toString()))&&(g.func=f[1]),"undefined"==typeof g.func)try{g.func=f.input.substring(0,f.input.indexOf("{"))}catch(m){}j[""+l]?k=!0:j[""+l]=!0,i.push(g)}e&&i.splice(0,e);var n={name:a.name,message:a.message,url:F(),stack:i};return b(n,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),n}function d(b,d){var e=null;d=null==d?0:+d;try{if(e=a(b))return e}catch(f){if(S.debug)throw f}try{if(e=c(b,d+1))return e}catch(f){if(S.debug)throw f}return{name:b.name,message:b.message,url:F()}}return d.augmentStackTraceWithInitialElement=b,d.computeStackTraceFromStackProp=a,d}();var X=S,Y=a(function(a,b){function c(a,b){for(var c=0;c0){var i=c(d,this);~i?d.splice(i+1):d.push(this),~i?f.splice(i,1/0,g):f.push(g),~c(d,h)&&(h=b.call(this,g,h))}else d.push(h);return null==a?h instanceof Error?e(h):h:a.call(this,g,h)}}b=a.exports=d,b.getSerialize=f});G.prototype=new Error,G.prototype.constructor=G;var Z=G,$=function(a,b,c){var d=a[b],e=a;if(b in a){var f="warn"===b?"warning":b;a[b]=function(){var a=[].slice.call(arguments),g=R.safeJoin(a," "),h={level:f,logger:"console",extra:{arguments:a}};"assert"===b?a[0]===!1&&(g="Assertion failed: "+(R.safeJoin(a.slice(1)," ")||"console.assert"),h.extra.arguments=a.slice(1),c&&c(g,h)):c&&c(g,h),d&&Function.prototype.apply.call(d,e,a)}}},_={wrapMethod:$},aa=R.isError,ba=R.isObject,ca=R.isErrorEvent,da=R.isUndefined,ea=R.isFunction,fa=R.isString,ga=R.isArray,ha=R.isEmptyObject,ia=R.each,ja=R.objectMerge,ka=R.truncate,la=R.objectFrozen,ma=R.hasKey,na=R.joinRegExp,oa=R.urlencode,pa=R.uuid4,qa=R.htmlTreeAsString,ra=R.isSameException,sa=R.isSameStacktrace,ta=R.parseUrl,ua=R.fill,va=R.supportsFetch,wa=_.wrapMethod,xa="source protocol user pass host port path".split(" "),ya=/^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/,za="undefined"!=typeof window?window:"undefined"!=typeof O?O:"undefined"!=typeof self?self:{},Aa=za.document,Ba=za.navigator;J.prototype={VERSION:"3.22.2",debug:!1,TraceKit:X,config:function(a,b){var c=this;if(c.i)return this.D("error","Error: Raven has already been configured"),c;if(!a)return c;var d=c.m;b&&ia(b,function(a,b){"tags"===a||"extra"===a||"user"===a?c.l[a]=b:d[a]=b}),c.setDSN(a),d.ignoreErrors.push(/^Script error\.?$/),d.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/),d.ignoreErrors=na(d.ignoreErrors),d.ignoreUrls=!!d.ignoreUrls.length&&na(d.ignoreUrls),d.whitelistUrls=!!d.whitelistUrls.length&&na(d.whitelistUrls),d.includePaths=na(d.includePaths),d.maxBreadcrumbs=Math.max(0,Math.min(d.maxBreadcrumbs||100,100));var e={xhr:!0,console:!0,dom:!0,location:!0,sentry:!0},f=d.autoBreadcrumbs;"[object Object]"==={}.toString.call(f)?f=ja(e,f):f!==!1&&(f=e),d.autoBreadcrumbs=f;var g={tryCatch:!0},h=d.instrument;return"[object Object]"==={}.toString.call(h)?h=ja(g,h):h!==!1&&(h=g),d.instrument=h,X.collectWindowErrors=!!d.collectWindowErrors,c},install:function(){var a=this;return a.isSetup()&&!a.p&&(X.report.subscribe(function(){a.E.apply(a,arguments)}),a.F(),a.m.instrument&&a.m.instrument.tryCatch&&a.G(),a.m.autoBreadcrumbs&&a.H(),a.I(),a.p=!0),Error.stackTraceLimit=a.m.stackTraceLimit,this},setDSN:function(a){var b=this,c=b.J(a),d=c.path.lastIndexOf("/"),e=c.path.substr(1,d);b.K=a,b.j=c.user,b.L=c.pass&&c.pass.substr(1),b.k=c.path.substr(d+1),b.i=b.M(c),b.N=b.i+"/"+e+"api/"+b.k+"/store/",this.A()},context:function(a,b,c){return ea(a)&&(c=b||[],b=a,a=void 0),this.wrap(a,b).apply(this,c)},wrap:function(a,b,c){function d(){var d=[],f=arguments.length,g=!a||a&&a.deep!==!1;for(c&&ea(c)&&c.apply(this,arguments);f--;)d[f]=g?e.wrap(a,arguments[f]):arguments[f];try{return b.apply(this,d)}catch(h){throw e.O(),e.captureException(h,a),h}}var e=this;if(da(b)&&!ea(a))return a;if(ea(a)&&(b=a,a=void 0),!ea(b))return b;try{if(b.a)return b;if(b.P)return b.P}catch(f){return b}for(var g in b)ma(b,g)&&(d[g]=b[g]);return d.prototype=b.prototype,b.P=d,d.a=!0,d.b=b,d},uninstall:function(){return X.report.uninstall(),this.Q(),this.R(),this.S(),Error.stackTraceLimit=this.q,this.p=!1,this},captureException:function(a,b){b=ja({trimHeadFrames:0},b?b:{});var c=!aa(a),d=!ca(a),e=ca(a)&&!a.error;if(c&&d||e)return this.captureMessage(a,ja(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}));ca(a)&&(a=a.error),this.f=a;try{var f=X.computeStackTrace(a);this.T(f,b)}catch(g){if(a!==g)throw g}return this},captureMessage:function(a,b){if(!this.m.ignoreErrors.test||!this.m.ignoreErrors.test(a)){b=b||{};var c,d=ja({message:a+""},b);try{throw new Error(a)}catch(e){c=e}c.name=null;var f=X.computeStackTrace(c),g=ga(f.stack)&&f.stack[1],h=g&&g.url||"";if((!this.m.ignoreUrls.test||!this.m.ignoreUrls.test(h))&&(!this.m.whitelistUrls.test||this.m.whitelistUrls.test(h))){if(this.m.stacktrace||b&&b.stacktrace){b=ja({fingerprint:a,trimHeadFrames:(b.trimHeadFrames||0)+1},b);var i=this.U(f,b);d.stacktrace={frames:i.reverse()}}return this.V(d),this}}},captureBreadcrumb:function(a){var b=ja({timestamp:H()/1e3},a);if(ea(this.m.breadcrumbCallback)){var c=this.m.breadcrumbCallback(b);if(ba(c)&&!ha(c))b=c;else if(c===!1)return this}return this.w.push(b),this.w.length>this.m.maxBreadcrumbs&&this.w.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.t.push([a,b]),this.p&&this.I(),this},setUserContext:function(a){return this.l.user=a,this},setExtraContext:function(a){return this.W("extra",a),this},setTagsContext:function(a){return this.W("tags",a),this},clearContext:function(){return this.l={},this},getContext:function(){return JSON.parse(Y(this.l))},setEnvironment:function(a){return this.m.environment=a,this},setRelease:function(a){return this.m.release=a,this},setDataCallback:function(a){var b=this.m.dataCallback;return this.m.dataCallback=I(b,a),this},setBreadcrumbCallback:function(a){var b=this.m.breadcrumbCallback;return this.m.breadcrumbCallback=I(b,a),this},setShouldSendCallback:function(a){var b=this.m.shouldSendCallback;return this.m.shouldSendCallback=I(b,a),this},setTransport:function(a){return this.m.transport=a,this},lastException:function(){return this.f},lastEventId:function(){return this.h},isSetup:function(){return!!this.c&&(!!this.i||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.D("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=za.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(Aa){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new Z("Missing eventId");var c=a.dsn||this.K;if(!c)throw new Z("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.l.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.M(this.J(c)),h=Aa.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(Aa.head||Aa.body).appendChild(h)}},O:function(){var a=this;this.o+=1,setTimeout(function(){a.o-=1})},X:function(a,b){var c,d;if(this.d){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),Aa.createEvent?(c=Aa.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=Aa.createEventObject(),c.eventType=a);for(d in b)ma(b,d)&&(c[d]=b[d]);if(Aa.createEvent)Aa.dispatchEvent(c);else try{Aa.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},Y:function(a){var b=this;return function(c){if(b.Z=null,b.x!==c){b.x=c;var d;try{d=qa(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},$:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.Z;g||a.Y("input")(c),clearTimeout(g),a.Z=setTimeout(function(){a.Z=null},b)}}},_:function(a,b){var c=ta(this.y.href),d=ta(b),e=ta(a);this.z=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},F:function(){var a=this;a.aa=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.a?a.aa.apply(this.b,arguments):a.aa.apply(this,arguments)}},Q:function(){this.aa&&(Function.prototype.toString=this.aa)},G:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b._(b.z,c+""),a.apply(this,arguments)}};ua(history,"pushState",j,d),ua(history,"replaceState",j,d)}if(c.console&&"console"in za&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};ia(["debug","info","warn","error","log"],function(a,b){wa(console,b,k)})}},R:function(){for(var a;this.v.length;){a=this.v.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},S:function(){for(var a in this.s)this.r[a]=this.s[a]},I:function(){var a=this;ia(this.t,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},J:function(a){var b=ya.exec(a),c={},d=7;try{for(;d--;)c[xa[d]]=b[d]||""}catch(e){throw new Z("Invalid DSN: "+a)}if(c.pass&&!this.m.allowSecretKey)throw new Z("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},M:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},E:function(){this.o||this.T.apply(this,arguments)},T:function(a,b){var c=this.U(a,b);this.X("handle",{stackInfo:a,options:b}),this.ca(a.name,a.message,a.url,a.lineno,c,b)},U:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(ia(a.stack,function(b,e){var f=c.da(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.w,0)}),this.l.user&&(a.user=this.l.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||ha(a[b]))&&delete a[b]}),ea(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!ha(a)&&(!ea(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.ja()?void this.D("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random()":"anonymous component")+(a._isVue&&a.$options.__file?" at "+a.$options.__file:"")}function e(a,b){if(b=b||window.Vue,b&&b.config){var c=b.config.errorHandler;b.config.errorHandler=function(b,e,f){var g={};"[object Object]"===Object.prototype.toString.call(e)&&(g.componentName=d(e),g.propsData=e.$options.propsData),"undefined"!=typeof f&&(g.lifecycleHook=f),a.captureException(b,{extra:g}),"function"==typeof c&&c.call(this,b,e,f)}}}b.exports=e,a(7).addPlugin(b.exports)},{7:7}],4:[function(a,b,c){function d(a){this.name="RavenConfigError",this.message=a}d.prototype=new Error,d.prototype.constructor=d,b.exports=d},{}],5:[function(a,b,c){var d=a(8),e=function(a,b,c){var e=a[b],f=a;if(b in a){var g="warn"===b?"warning":b;a[b]=function(){var a=[].slice.call(arguments),h=d.safeJoin(a," "),i={level:g,logger:"console",extra:{arguments:a}};"assert"===b?a[0]===!1&&(h="Assertion failed: "+(d.safeJoin(a.slice(1)," ")||"console.assert"),i.extra.arguments=a.slice(1),c&&c(h,i)):c&&c(h,i),e&&Function.prototype.apply.call(e,f,a)}}};b.exports={wrapMethod:e}},{8:8}],6:[function(a,b,c){(function(c){function d(){return+new Date}function e(a,b){return q(b)?function(c){return b(c,a)}:b}function f(){this.b=!("object"!=typeof JSON||!JSON.stringify),this.c=!p(Q),this.d=!p(R),this.e=null,this.f=null,this.g=null,this.h=null,this.i=null,this.j=null,this.k={},this.l={release:P.SENTRY_RELEASE&&P.SENTRY_RELEASE.id,logger:"javascript",ignoreErrors:[],ignoreUrls:[],whitelistUrls:[],includePaths:[],headers:null,collectWindowErrors:!0,captureUnhandledRejections:!0,maxMessageLength:0,maxUrlLength:250,stackTraceLimit:50,autoBreadcrumbs:!0,instrument:!0,sampleRate:1,sanitizeKeys:[]},this.m={method:"POST",keepalive:!0,referrerPolicy:I()?"origin":""},this.n=0,this.o=!1,this.p=Error.stackTraceLimit,this.q=P.console||{},this.r={},this.s=[],this.t=d(),this.u=[],this.v=[],this.w=null,this.x=P.location,this.y=this.x&&this.x.href,this.z();for(var a in this.q)this.r[a]=this.q[a]}var g=a(9),h=a(10),i=a(11),j=a(4),k=a(8),l=k.isError,m=k.isObject,n=k.isPlainObject,o=k.isErrorEvent,p=k.isUndefined,q=k.isFunction,r=k.isString,s=k.isArray,t=k.isEmptyObject,u=k.each,v=k.objectMerge,w=k.truncate,x=k.objectFrozen,y=k.hasKey,z=k.joinRegExp,A=k.urlencode,B=k.uuid4,C=k.htmlTreeAsString,D=k.isSameException,E=k.isSameStacktrace,F=k.parseUrl,G=k.fill,H=k.supportsFetch,I=k.supportsReferrerPolicy,J=k.serializeKeysForMessage,K=k.serializeException,L=k.sanitize,M=a(5).wrapMethod,N="source protocol user pass host port path".split(" "),O=/^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/,P="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},Q=P.document,R=P.navigator;f.prototype={VERSION:"3.24.2",debug:!1,TraceKit:g,config:function(a,b){var c=this;if(c.h)return this.A("error","Error: Raven has already been configured"),c;if(!a)return c;var d=c.l;b&&u(b,function(a,b){"tags"===a||"extra"===a||"user"===a?c.k[a]=b:d[a]=b}),c.setDSN(a),d.ignoreErrors.push(/^Script error\.?$/),d.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/),d.ignoreErrors=z(d.ignoreErrors),d.ignoreUrls=!!d.ignoreUrls.length&&z(d.ignoreUrls),d.whitelistUrls=!!d.whitelistUrls.length&&z(d.whitelistUrls),d.includePaths=z(d.includePaths),d.maxBreadcrumbs=Math.max(0,Math.min(d.maxBreadcrumbs||100,100));var e={xhr:!0,console:!0,dom:!0,location:!0,sentry:!0},f=d.autoBreadcrumbs;"[object Object]"==={}.toString.call(f)?f=v(e,f):f!==!1&&(f=e),d.autoBreadcrumbs=f;var h={tryCatch:!0},i=d.instrument;return"[object Object]"==={}.toString.call(i)?i=v(h,i):i!==!1&&(i=h),d.instrument=i,g.collectWindowErrors=!!d.collectWindowErrors,c},install:function(){var a=this;return a.isSetup()&&!a.o&&(g.report.subscribe(function(){a.B.apply(a,arguments)}),a.l.captureUnhandledRejections&&a.C(),a.D(),a.l.instrument&&a.l.instrument.tryCatch&&a.E(),a.l.autoBreadcrumbs&&a.F(),a.G(),a.o=!0),Error.stackTraceLimit=a.l.stackTraceLimit,this},setDSN:function(a){var b=this,c=b.H(a),d=c.path.lastIndexOf("/"),e=c.path.substr(1,d);b.I=a,b.i=c.user,b.J=c.pass&&c.pass.substr(1),b.j=c.path.substr(d+1),b.h=b.K(c),b.L=b.h+"/"+e+"api/"+b.j+"/store/",this.z()},context:function(a,b,c){return q(a)&&(c=b||[],b=a,a=void 0),this.wrap(a,b).apply(this,c)},wrap:function(a,b,c){function d(){var d=[],f=arguments.length,g=!a||a&&a.deep!==!1;for(c&&q(c)&&c.apply(this,arguments);f--;)d[f]=g?e.wrap(a,arguments[f]):arguments[f];try{return b.apply(this,d)}catch(h){throw e.M(),e.captureException(h,a),h}}var e=this;if(p(b)&&!q(a))return a;if(q(a)&&(b=a,a=void 0),!q(b))return b;try{if(b.N)return b;if(b.O)return b.O}catch(f){return b}for(var g in b)y(b,g)&&(d[g]=b[g]);return d.prototype=b.prototype,b.O=d,d.N=!0,d.P=b,d},uninstall:function(){return g.report.uninstall(),this.Q(),this.R(),this.S(),this.T(),Error.stackTraceLimit=this.p,this.o=!1,this},U:function(a){this.A("debug","Raven caught unhandled promise rejection:",a),this.captureException(a.reason,{extra:{unhandledPromiseRejection:!0}})},C:function(){return this.U=this.U.bind(this),P.addEventListener&&P.addEventListener("unhandledrejection",this.U),this},Q:function(){return P.removeEventListener&&P.removeEventListener("unhandledrejection",this.U),this},captureException:function(a,b){if(b=v({trimHeadFrames:0},b?b:{}),o(a)&&a.error)a=a.error;else if(l(a))a=a;else{if(!n(a))return this.captureMessage(a,v(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}));b=this.V(b,a),a=new Error(b.message)}this.e=a;try{var c=g.computeStackTrace(a);this.W(c,b)}catch(d){if(a!==d)throw d}return this},V:function(a,b){var c=Object.keys(b).sort(),d=v(a,{message:"Non-Error exception captured with keys: "+J(c),fingerprint:[i(c)],extra:a.extra||{}});return d.extra.X=K(b),d},captureMessage:function(a,b){if(!this.l.ignoreErrors.test||!this.l.ignoreErrors.test(a)){b=b||{},a+="";var c,d=v({message:a},b);try{throw new Error(a)}catch(e){c=e}c.name=null;var f=g.computeStackTrace(c),h=s(f.stack)&&f.stack[1];h&&"Raven.captureException"===h.func&&(h=f.stack[2]);var i=h&&h.url||"";if((!this.l.ignoreUrls.test||!this.l.ignoreUrls.test(i))&&(!this.l.whitelistUrls.test||this.l.whitelistUrls.test(i))){if(this.l.stacktrace||b&&b.stacktrace){d.fingerprint=null==d.fingerprint?a:d.fingerprint,b=v({trimHeadFrames:0},b),b.trimHeadFrames+=1;var j=this.Y(f,b);d.stacktrace={frames:j.reverse()}}return d.fingerprint&&(d.fingerprint=s(d.fingerprint)?d.fingerprint:[d.fingerprint]),this.Z(d),this}}},captureBreadcrumb:function(a){var b=v({timestamp:d()/1e3},a);if(q(this.l.breadcrumbCallback)){var c=this.l.breadcrumbCallback(b);if(m(c)&&!t(c))b=c;else if(c===!1)return this}return this.v.push(b),this.v.length>this.l.maxBreadcrumbs&&this.v.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.s.push([a,b]),this.o&&this.G(),this},setUserContext:function(a){return this.k.user=a,this},setExtraContext:function(a){return this.$("extra",a),this},setTagsContext:function(a){return this.$("tags",a),this},clearContext:function(){return this.k={},this},getContext:function(){return JSON.parse(h(this.k))},setEnvironment:function(a){return this.l.environment=a,this},setRelease:function(a){return this.l.release=a,this},setDataCallback:function(a){var b=this.l.dataCallback;return this.l.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.l.breadcrumbCallback;return this.l.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.l.shouldSendCallback;return this.l.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.l.transport=a,this},lastException:function(){return this.e},lastEventId:function(){return this.g},isSetup:function(){return!!this.b&&(!!this.h||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.A("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=P.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(Q){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.I;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.k.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.K(this.H(c)),h=Q.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(Q.head||Q.body).appendChild(h)}},M:function(){var a=this;this.n+=1,setTimeout(function(){a.n-=1})},_:function(a,b){var c,d;if(this.c){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),Q.createEvent?(c=Q.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=Q.createEventObject(),c.eventType=a);for(d in b)y(b,d)&&(c[d]=b[d]);if(Q.createEvent)Q.dispatchEvent(c);else try{Q.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},aa:function(a){var b=this;return function(c){if(b.ba=null,b.w!==c){b.w=c;var d;try{d=C(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ca:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.ba;g||a.aa("input")(c),clearTimeout(g),a.ba=setTimeout(function(){a.ba=null},b)}}},da:function(a,b){var c=F(this.x.href),d=F(b),e=F(a);this.y=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},D:function(){var a=this;a.ea=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.N?a.ea.apply(this.P,arguments):a.ea.apply(this,arguments)}},R:function(){this.ea&&(Function.prototype.toString=this.ea)},E:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.da(b.y,c+""),a.apply(this,arguments)}};G(history,"pushState",j,d),G(history,"replaceState",j,d)}if(c.console&&"console"in P&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};u(["debug","info","warn","error","log"],function(a,b){M(console,b,k)})}},S:function(){for(var a;this.u.length;){a=this.u.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},T:function(){for(var a in this.r)this.q[a]=this.r[a]},G:function(){var a=this;u(this.s,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},H:function(a){var b=O.exec(a),c={},d=7;try{for(;d--;)c[N[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.l.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},K:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},B:function(){this.n||this.W.apply(this,arguments)},W:function(a,b){var c=this.Y(a,b);this._("handle",{stackInfo:a,options:b}),this.ga(a.name,a.message,a.url,a.lineno,c,b)},Y:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(u(a.stack,function(b,e){var f=c.ha(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.v,0)}),this.k.user&&(a.user=this.k.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),a=this.qa(a),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||t(a[b]))&&delete a[b]}),q(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!t(a)&&(!q(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.na()?void this.A("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function B(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&j(b))for(c=b.split(/\s+/),f=0;fc?M(a,b-1):d}function N(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?T:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function O(a,b){function c(a){return k(a)?a.map(function(a){return c(a)}):i(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!k(b)||k(b)&&0===b.length)return a;var d,e=w(b),f="********";try{d=JSON.parse(P(a))}catch(g){return a}return c(d)}var P=a(10),Q="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},R=3,S=51200,T=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isUndefined:g,isFunction:h,isPlainObject:i,isString:j,isArray:k,isEmptyObject:l,supportsErrorEvent:m,supportsFetch:n,supportsReferrerPolicy:o,supportsPromiseRejectionEvent:p,wrappedCallback:q,each:r,objectMerge:s,truncate:u,objectFrozen:t,hasKey:v,joinRegExp:w,urlencode:x,uuid4:z,htmlTreeAsString:A,htmlElementAsString:B,isSameException:E,isSameStacktrace:F,parseUrl:y,fill:G,safeJoin:H,serializeException:M,serializeKeysForMessage:N,sanitize:O}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{10:10}],9:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}var e=a(8),f={collectWindowErrors:!0,debug:!1},g="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},h=[].slice,i="?",j=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;f.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function k(a,b){var c=null;if(!b||f.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(h.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,g,h){var l=null,m=e.isErrorEvent(h)?h.error:h,n=e.isErrorEvent(a)?a.message:a;if(v)f.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&e.isError(m))l=f.computeStackTrace(m),k(l,!0);else{var p,r={url:b,line:c,column:g},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(j);p&&(s=p[1],n=p[2])}r.func=i,l={name:s,message:n,url:d(),stack:[r]},k(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=g.onerror,g.onerror=l,r=!0)}function n(){r&&(g.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,k.apply(null,[a,!1].concat(b))}function p(a,b){var c=h.call(arguments,1);if(v){if(u===a)return;o()}var d=f.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),f.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,e,f=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,g=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,h=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,j=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,k=/\((\S*)(?::(\d+))(?::(\d+))\)/,l=a.stack.split("\n"),m=[],n=(/^(.*) is undefined$/.exec(a.message),0),o=l.length;n eval")>-1;q&&(b=j.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==n||c[5]||"undefined"==typeof a.columnNumber||(m[0].column=a.columnNumber+1),e={url:c[3],func:c[1]||i,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}!e.func&&e.line&&(e.func=i),m.push(e)}return m.length?{name:a.name,message:a.message,url:d(),stack:m}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=i),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,g){for(var h,j,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==e&&o!==f.report){if(j={url:null,func:i,line:null,column:null},o.name?j.func=o.name:(h=k.exec(o.toString()))&&(j.func=h[1]), +"undefined"==typeof j.func)try{j.func=h.input.substring(0,h.input.indexOf("{"))}catch(p){}m[""+o]?n=!0:m[""+o]=!0,l.push(j)}g&&l.splice(0,g);var q={name:a.name,message:a.message,url:d(),stack:l};return b(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),q}function e(b,e){var g=null;e=null==e?0:+e;try{if(g=a(b))return g}catch(h){if(f.debug)throw h}try{if(g=c(b,e+1))return g}catch(h){if(f.debug)throw h}return{name:b.name,message:b.message,url:d()}}return e.augmentStackTraceWithInitialElement=b,e.computeStackTraceFromStackProp=a,e}(),b.exports=f}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{8:8}],10:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}],11:[function(a,b,c){function d(a,b){var c=(65535&a)+(65535&b),d=(a>>16)+(b>>16)+(c>>16);return d<<16|65535&c}function e(a,b){return a<>>32-b}function f(a,b,c,f,g,h){return d(e(d(d(b,a),d(f,h)),g),c)}function g(a,b,c,d,e,g,h){return f(b&c|~b&d,a,b,e,g,h)}function h(a,b,c,d,e,g,h){return f(b&d|c&~d,a,b,e,g,h)}function i(a,b,c,d,e,g,h){return f(b^c^d,a,b,e,g,h)}function j(a,b,c,d,e,g,h){return f(c^(b|~d),a,b,e,g,h)}function k(a,b){a[b>>5]|=128<>>9<<4)+14]=b;var c,e,f,k,l,m=1732584193,n=-271733879,o=-1732584194,p=271733878;for(c=0;c>5]>>>b%32&255);return c}function m(a){var b,c=[];for(c[(a.length>>2)-1]=void 0,b=0;b>5]|=(255&a.charCodeAt(b/8))<16&&(e=k(e,8*a.length)),c=0;c<16;c+=1)f[c]=909522486^e[c],g[c]=1549556828^e[c];return d=k(f.concat(m(b)),512+8*b.length),l(k(g.concat(d),640))}function p(a){var b,c,d="0123456789abcdef",e="";for(c=0;c>>4&15)+d.charAt(15&b);return e}function q(a){return unescape(encodeURIComponent(a))}function r(a){return n(q(a))}function s(a){return p(r(a))}function t(a,b){return o(q(a),q(b))}function u(a,b){return p(t(a,b))}function v(a,b,c){return b?c?t(b,a):u(b,a):c?r(a):s(a)}b.exports=v},{}]},{},[7,1,2,3])(7)}); //# sourceMappingURL=raven.min.js.map \ No newline at end of file diff --git a/dist/angular,ember,vue/raven.min.js.map b/dist/angular,ember,vue/raven.min.js.map index 75a8d1057f28..fa6dab06ef14 100644 --- a/dist/angular,ember,vue/raven.min.js.map +++ b/dist/angular,ember,vue/raven.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["raven.js"],"names":["global","factory","exports","module","define","amd","Raven","this","createCommonjsModule","fn","_typeof","obj","Symbol","iterator","constructor","prototype","isObject$1","what","isError$1","value","toString","call","Error","isErrorEvent$1","supportsErrorEvent","isUndefined$1","isFunction$1","isPlainObject","Object","isString$1","isArray$1","isEmptyObject$1","_","hasOwnProperty","ErrorEvent","e","supportsFetch$1","_window$3","Headers","Request","Response","wrappedCallback","callback","dataCallback","data","original","normalizedData","each$1","i","j","length","hasKey$1","objectMerge$1","obj1","obj2","key","objectFrozen$1","isFrozen","truncate$1","str","max","substr","object","joinRegExp$1","patterns","pattern","sources","len","push","replace","source","RegExp","join","urlencode$1","o","pairs","encodeURIComponent","parseUrl$1","url","match","query","fragment","protocol","host","path","relative","uuid4$1","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","r","Math","random","htmlTreeAsString$1","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","reverse","className","classes","attr","tagName","toLowerCase","id","split","attrWhitelist","getAttribute","isOnlyOneTruthy","a","b","isBothUndefined","isSameException$1","ex1","ex2","values","type","stacktrace","isSameStacktrace$1","stack1","stack2","frames1","frames","frames2","filename","lineno","colno","fill$1","name","replacement","track","orig","__raven__","__orig__","safeJoin","input","delimiter","output","String","getLocationHref","document","location","href","RavenConfigError","message","now","Date","keepOriginalCallback","isFunction","Raven$1","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window$1","SENTRY_RELEASE","logger","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","_fetchDefaults","method","keepalive","referrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","console","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","_lastHref","_resetBackoff","angularPlugin","angular","RavenProvider","$get","$window","ExceptionHandlerProvider","$provide","decorator","exceptionHandler","R","$delegate","ex","cause","captureException","extra","window","moduleName","provider","config","setDataCallback","wrappedCallback$1","_normalizeData","emberPlugin","Ember","_oldOnError","onerror","error","RSVP","on","reason","context","captureMessage","formatComponentName","vm","$root","_isVue","$options","_componentTag","__file","vuePlugin","Vue","errorHandler","info","metaData","componentName","propsData","lifecycleHook","commonjsGlobal","self","_sPO","setPrototypeOf","p","__proto__","Reflect","construct","Parent","args","Class","Constructor","apply","bind","utils","isObject","isError","isErrorEvent","isString","isArray","isEmptyObject","supportsFetch","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","TraceKit","debug","_window$2","_slice","slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","report","subscribe","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","stack","isWindowError","exception","concat","arguments","inner","traceKitWindowOnError","msg","lineNo","colNo","lastExceptionStack","computeStackTrace","augmentStackTraceWithInitialElement","processLastException","groups","line","column","undefined","func","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","lastException","rethrow","setTimeout","incomplete","uninstall","computeStackTraceFromStackProp","submatch","parts","element","chrome","gecko","winjs","geckoEval","chromeEval","lines","exec","isNative","indexOf","isEval","columnNumber","stackInfo","initial","unshift","partial","computeStackTraceByWalkingCallerChain","depth","item","functionName","funcs","recursion","curr","caller","substring","result","sourceURL","fileName","lineNumber","description","tracekit","stringify_1","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","err","keys","thisPos","Infinity","getSerialize","configError","wrapMethod","level","originalConsoleLevel","originalConsole","sentryLevel","Function","console$1","wrapConsoleMethod","dsnKeys","dsnPattern","navigator","VERSION","dsn","options","_logDebug","globalOptions","setDSN","maxBreadcrumbs","min","autoBreadcrumbDefaults","xhr","dom","sentry","instrumentDefaults","tryCatch","install","isSetup","_handleOnErrorStackInfo","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","lastIndexOf","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","wrap","_before","wrapped","deep","_ignoreNextOnError","__raven_wrapper__","property","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","trimHeadFrames","isNotError","isNotErrorEvent","isErrorEventWithoutError","_handleStackInfo","test","initialCall","fileurl","fingerprint","_prepareFrames","_send","captureBreadcrumb","crumb","timestamp","breadcrumbCallback","shift","addPlugin","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","O","X","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","Y","evtName","_keypressTimeout","target","category","$","debounceDuration","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","from","to","parsedLoc","parsedTo","parsedFrom","F","_originalFunctionToString","Q","G","wrapTimeFn","t","Array","originalCallback","wrapEventTarget","proto","capture","secure","handleEvent","before","clickHandler","keypressHandler","_keypressEventHandler","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","H","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","onreadystatechange","origFetch","fetchInput","fetchData","then","response","addEventListener","attachEvent","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","builtin","S","I","installer","J","m","allowSecretKey","M","port","E","T","_triggerEvent","_processException","U","frame","_normalizeFrame","in_app","da","stackInfoUrl","normalized","function","ca","prefixedMessage","culprit","ea","request","Referer","breadcrumbs","_trimBreadcrumbs","fa","urlProp","urlProps","ga","httpData","userAgent","User-Agent","referrer","A","_backoffDuration","_backoffStart","ja","ka","current","last","la","_shouldBackoff","retry","get","getResponseHeader","parseInt","V","baseData","project","platform","_getHttpData","serverName","server_name","forEach","_sendProcessedPayload","na","ma","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","oa","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","onload","open","setRequestHeader","send","pa","hash","evaluated","D","W","setUser","setReleaseContext","raven","_window","_Raven","noConflict","singleton","angularPattern","matches","angularDocs","ember","vue","angular_ember_vue"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file +{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","angularPlugin","angular","RavenProvider","$get","$window","ExceptionHandlerProvider","$provide","decorator","exceptionHandler","R","$delegate","ex","cause","captureException","extra","moduleName","provider","config","setDataCallback","wrappedCallback","data","_normalizeData","angularPattern","exception","values","matches","exec","value","type","message","angularDocs","substr","addPlugin","7","8","2","emberPlugin","Ember","_oldOnError","onerror","error","RSVP","on","reason","context","captureMessage","3","formatComponentName","vm","$root","name","_isVue","$options","_componentTag","__file","vuePlugin","Vue","errorHandler","info","metaData","Object","prototype","toString","componentName","propsData","lifecycleHook","4","RavenConfigError","constructor","5","utils","wrapMethod","console","level","callback","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","msg","safeJoin","logger","Function","apply","6","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","sanitizeKeys","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isError","isObject","isPlainObject","isErrorEvent","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","sanitize","wrapConsoleMethod","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","dsn","options","_logDebug","globalOptions","key","setDSN","push","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","func","undefined","wrap","_before","wrapped","deep","_ignoreNextOnError","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","U","event","unhandledPromiseRejection","C","_promiseRejectionHandler","bind","addEventListener","Q","removeEventListener","trimHeadFrames","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","V","currentOptions","exKeys","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","M","setTimeout","_","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","aa","evtName","_keypressTimeout","target","category","ca","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","da","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","D","_originalFunctionToString","E","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","F","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","S","builtin","T","G","installer","concat","H","str","m","allowSecretKey","K","port","B","W","stackInfo","_triggerEvent","_processException","lineno","Y","frame","_normalizeFrame","in_app","ha","stackInfoUrl","normalized","filename","line","colno","column","function","ga","prefixedMessage","culprit","ia","request","Referer","breadcrumbs","_trimBreadcrumbs","ja","urlProp","urlProps","ka","httpData","userAgent","User-Agent","referrer","z","_backoffDuration","_backoffStart","na","oa","current","last","pa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Z","baseData","project","platform","_getHttpData","serverName","server_name","_sanitizeData","forEach","random","_sendProcessedPayload","qa","sa","ra","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","ta","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","open","setRequestHeader","send","ua","hash","evaluated","A","$","setUser","setReleaseContext","10","11","9","RavenConstructor","_Raven","noConflict","Client","what","supportsErrorEvent","ErrorEvent","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","sanitizeMask","safeInput","o_O","getLocationHref","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","y","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","charAt","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","string","raw"],"mappings":";CAYA,SAAUA,GAAG,GAAoB,gBAAVC,UAAoC,mBAATC,QAAsBA,OAAOD,QAAQD,QAAS,IAAmB,kBAATG,SAAqBA,OAAOC,IAAKD,UAAUH,OAAO,CAAC,GAAIK,EAAkCA,GAAb,mBAATC,QAAwBA,OAA+B,mBAATC,QAAwBA,OAA6B,mBAAPC,MAAsBA,KAAYC,KAAKJ,EAAEK,MAAQV,MAAO,WAAqC,MAAO,SAAUW,GAAEC,EAAEC,EAAEC,GAAG,QAASC,GAAEC,EAAEC,GAAG,IAAIJ,EAAEG,GAAG,CAAC,IAAIJ,EAAEI,GAAG,CAAC,GAAIE,GAAkB,kBAATC,UAAqBA,OAAQ,KAAIF,GAAGC,EAAE,MAAOA,GAAEF,GAAE,EAAI,IAAGI,EAAE,MAAOA,GAAEJ,GAAE,EAAI,IAAIhB,GAAE,GAAIqB,OAAM,uBAAuBL,EAAE,IAAK,MAAMhB,GAAEsB,KAAK,mBAAmBtB,EAAE,GAAIuB,GAAEV,EAAEG,IAAIf,WAAYW,GAAEI,GAAG,GAAGQ,KAAKD,EAAEtB,QAAQ,SAASU,GAAG,GAAIE,GAAED,EAAEI,GAAG,GAAGL,EAAG,OAAOI,GAAEF,EAAEA,EAAEF,IAAIY,EAAEA,EAAEtB,QAAQU,EAAEC,EAAEC,EAAEC,GAAG,MAAOD,GAAEG,GAAGf,QAAkD,IAAI,GAA1CmB,GAAkB,kBAATD,UAAqBA,QAAgBH,EAAE,EAAEA,EAAEF,EAAEW,OAAOT,IAAID,EAAED,EAAEE,GAAI,OAAOD,KAAKW,GAAG,SAASC,EAAQzB,EAAOD,GAYp0B,QAAS2B,GAAclB,EAAOmB,GAK5B,QAASC,KACPrB,KAAKsB,MACH,UACA,SAASC,GACP,MAAOtB,KAKb,QAASuB,GAAyBC,GAChCA,EAASC,UAAU,qBAAsB,QAAS,YAAaC,IAGjE,QAASA,GAAiBC,EAAGC,GAC3B,MAAO,UAASC,EAAIC,GAClBH,EAAEI,iBAAiBF,GACjBG,OAAQF,MAAOA,KAEjBF,EAAUC,EAAIC,IAtBlBX,EAAUA,GAAWvB,OAAOuB,QAEvBA,IAwBLA,EACG3B,OAAOyC,MACPC,SAAS,QAASd,GAClBe,QAAQ,WAAYZ,IAEvBvB,EAAMoC,gBACJC,EAAgB,SAASC,GACvB,MAAOpB,GAAcqB,EAAeD,OAxC1C,GAAID,GAAkBpB,EAAQ,GAAGoB,gBAG7BG,EAAiB,6DACjBP,EAAa,SAyCjBf,GAAcqB,EAAiB,SAASD,GAEtC,GAAIG,GAAYH,EAAKG,SACrB,IAAIA,EAAW,CACbA,EAAYA,EAAUC,OAAO,EAC7B,IAAIC,GAAUH,EAAeI,KAAKH,EAAUI,MAExCF,KAEFF,EAAUK,KAAOH,EAAQ,GACzBF,EAAUI,MAAQF,EAAQ,GAE1BL,EAAKS,QAAUN,EAAUK,KAAO,KAAOL,EAAUI,MAEjDP,EAAKN,MAAMgB,YAAcL,EAAQ,GAAGM,OAAO,EAAG,MAIlD,MAAOX,IAGTpB,EAAce,WAAaA,EAE3BzC,EAAOD,QAAU2B,EAEjBD,EAAQ,GAAGiC,UAAU1D,EAAOD,WACzB4D,EAAI,EAAEC,EAAI,IAAIC,GAAG,SAASpC,EAAQzB,EAAOD,GAM5C,QAAS+D,GAAYtD,EAAOuD,GAI1B,GAHAA,EAAQA,GAAS3D,OAAO2D,MAGxB,CAEA,GAAIC,GAAcD,EAAME,OACxBF,GAAME,QAAU,SAAsBC,GACpC1D,EAAM+B,iBAAiB2B,GACI,kBAAhBF,IACTA,EAAY1C,KAAKf,KAAM2D,IAG3BH,EAAMI,KAAKC,GAAG,QAAS,SAASC,GAC1BA,YAAkBlD,OACpBX,EAAM+B,iBAAiB8B,GACrB7B,OAAQ8B,QAAS,sCAGnB9D,EAAM+D,eAAe,oCAAqC/B,OAAQ6B,OAAQA,QAKhFrE,EAAOD,QAAU+D,EAEjBrC,EAAQ,GAAGiC,UAAU1D,EAAOD,WACzB4D,EAAI,IAAIa,GAAG,SAAS/C,EAAQzB,EAAOD,GAMtC,QAAS0E,GAAoBC,GAC3B,GAAIA,EAAGC,QAAUD,EACf,MAAO,eAET,IAAIE,GAAOF,EAAGG,OAASH,EAAGI,SAASF,MAAQF,EAAGI,SAASC,cAAgBL,EAAGE,IAC1E,QACGA,EAAO,cAAgBA,EAAO,IAAM,wBACpCF,EAAGG,QAAUH,EAAGI,SAASE,OAAS,OAASN,EAAGI,SAASE,OAAS,IAIrE,QAASC,GAAUzE,EAAO0E,GAIxB,GAHAA,EAAMA,GAAO9E,OAAO8E,IAGfA,GAAQA,EAAIvC,OAAjB,CAEA,GAAIqB,GAAckB,EAAIvC,OAAOwC,YAC7BD,GAAIvC,OAAOwC,aAAe,SAAyBjB,EAAOQ,EAAIU,GAC5D,GAAIC,KAGuC,qBAAvCC,OAAOC,UAAUC,SAASlE,KAAKoD,KACjCW,EAASI,cAAgBhB,EAAoBC,GAC7CW,EAASK,UAAYhB,EAAGI,SAASY,WAGf,mBAATN,KACTC,EAASM,cAAgBP,GAG3B5E,EAAM+B,iBAAiB2B,GACrB1B,MAAO6C,IAGkB,kBAAhBrB,IACTA,EAAY1C,KAAKf,KAAM2D,EAAOQ,EAAIU,KAKxCpF,EAAOD,QAAUkF,EAEjBxD,EAAQ,GAAGiC,UAAU1D,EAAOD,WACzB4D,EAAI,IAAIiC,GAAG,SAASnE,EAAQzB,EAAOD,GACtC,QAAS8F,GAAiBtC,GACxBhD,KAAKqE,KAAO,mBACZrE,KAAKgD,QAAUA,EAEjBsC,EAAiBN,UAAY,GAAIpE,OACjC0E,EAAiBN,UAAUO,YAAcD,EAEzC7F,EAAOD,QAAU8F,OAEXE,GAAG,SAAStE,EAAQzB,EAAOD,GACjC,GAAIiG,GAAQvE,EAAQ,GAEhBwE,EAAa,SAASC,EAASC,EAAOC,GACxC,GAAIC,GAAuBH,EAAQC,GAC/BG,EAAkBJ,CAEtB,IAAMC,IAASD,GAAf,CAIA,GAAIK,GAAwB,SAAVJ,EAAmB,UAAYA,CAEjDD,GAAQC,GAAS,WACf,GAAIK,MAAUC,MAAMnF,KAAKoF,WAErBC,EAAMX,EAAMY,SAASJ,EAAM,KAC3B1D,GAAQqD,MAAOI,EAAaM,OAAQ,UAAWrE,OAAQkE,UAAWF,GAExD,YAAVL,EACEK,EAAK,MAAO,IAEdG,EACE,sBAAwBX,EAAMY,SAASJ,EAAKC,MAAM,GAAI,MAAQ,kBAChE3D,EAAKN,MAAMkE,UAAYF,EAAKC,MAAM,GAClCL,GAAYA,EAASO,EAAK7D,IAG5BsD,GAAYA,EAASO,EAAK7D,GAIxBuD,GAGFS,SAASvB,UAAUwB,MAAMzF,KAAK+E,EAAsBC,EAAiBE,KAK3ExG,GAAOD,SACLkG,WAAYA,KAGXrC,EAAI,IAAIoD,GAAG,SAASvF,EAAQzB,EAAOD,IACtC,SAAWM,GA0CX,QAAS4G,KACP,OAAQ,GAAIC,MAWd,QAASC,GAAqBC,EAAUhB,GACtC,MAAOiB,GAAWjB,GACd,SAAStD,GACP,MAAOsD,GAAStD,EAAMsE,IAExBhB,EAMN,QAAS5F,KACPD,KAAK+G,IAA8B,gBAATC,QAAqBA,KAAKC,WAEpDjH,KAAKkH,GAAgBC,EAAYC,GACjCpH,KAAKqH,GAAiBF,EAAYG,GAClCtH,KAAKuH,EAAyB,KAC9BvH,KAAKwH,EAAY,KACjBxH,KAAKyH,EAAe,KACpBzH,KAAK0H,EAAgB,KACrB1H,KAAK2H,EAAa,KAClB3H,KAAK4H,EAAiB,KACtB5H,KAAK6H,KACL7H,KAAK8H,GAEHC,QAASC,EAAQC,gBAAkBD,EAAQC,eAAeC,GAC1D5B,OAAQ,aACR6B,gBACAC,cACAC,iBACAC,gBACAC,QAAS,KACTC,qBAAqB,EACrBC,4BAA4B,EAC5BC,iBAAkB,EAElBC,aAAc,IACdC,gBAAiB,GACjBC,iBAAiB,EACjBC,YAAY,EACZC,WAAY,EACZC,iBAEFhJ,KAAKiJ,GACHC,OAAQ,OACRC,WAAW,EAKXC,eAAgBC,IAA2B,SAAW,IAExDrJ,KAAKsJ,EAAiB,EACtBtJ,KAAKuJ,GAAoB,EACzBvJ,KAAKwJ,EAAgC5I,MAAMgI,gBAG3C5I,KAAKyJ,EAAmBzB,EAAQrC,YAChC3F,KAAK0J,KACL1J,KAAK2J,KACL3J,KAAK4J,EAAalD,IAClB1G,KAAK6J,KACL7J,KAAK8J,KACL9J,KAAK+J,EAAqB,KAE1B/J,KAAKgK,EAAYhC,EAAQiC,SACzBjK,KAAKkK,EAAYlK,KAAKgK,GAAahK,KAAKgK,EAAUG,KAClDnK,KAAKoK,GAGL,KAAK,GAAIlB,KAAUlJ,MAAKyJ,EACtBzJ,KAAK0J,EAAwBR,GAAUlJ,KAAKyJ,EAAiBP,GA1HjE,GAAImB,GAAWnJ,EAAQ,GACnB+F,EAAY/F,EAAQ,IACpBoJ,EAAMpJ,EAAQ,IACdoE,EAAmBpE,EAAQ,GAE3BuE,EAAQvE,EAAQ,GAChBqJ,EAAU9E,EAAM8E,QAChBC,EAAW/E,EAAM+E,SACjBC,EAAgBhF,EAAMgF,cACtBC,EAAejF,EAAMiF,aACrBvD,EAAc1B,EAAM0B,YACpBL,EAAarB,EAAMqB,WACnB6D,EAAWlF,EAAMkF,SACjBC,EAAUnF,EAAMmF,QAChBC,EAAgBpF,EAAMoF,cACtBC,EAAOrF,EAAMqF,KACbC,EAActF,EAAMsF,YACpBC,EAAWvF,EAAMuF,SACjBC,EAAexF,EAAMwF,aACrBC,EAASzF,EAAMyF,OACfC,EAAa1F,EAAM0F,WACnBC,EAAY3F,EAAM2F,UAClBC,EAAQ5F,EAAM4F,MACdC,EAAmB7F,EAAM6F,iBACzBC,EAAkB9F,EAAM8F,gBACxBC,EAAmB/F,EAAM+F,iBACzBC,EAAWhG,EAAMgG,SACjBC,EAAOjG,EAAMiG,KACbC,EAAgBlG,EAAMkG,cACtBtC,EAAyB5D,EAAM4D,uBAC/BuC,EAA0BnG,EAAMmG,wBAChCC,EAAqBpG,EAAMoG,mBAC3BC,EAAWrG,EAAMqG,SAEjBC,EAAoB7K,EAAQ,GAAGwE,WAE/BsG,EAAU,2CAA2CC,MAAM,KAC7DC,EAAa,gEAOXlE,EACgB,mBAAXnI,QACHA,OACkB,mBAAXC,GAAyBA,EAAyB,mBAATC,MAAuBA,QACzEqH,EAAYY,EAAQmE,SACpB7E,EAAaU,EAAQoE,SAmFzBnM,GAAM+E,WAKJqH,QAAS,SAETC,OAAO,EAEPjC,SAAUA,EASVjI,OAAQ,SAASmK,EAAKC,GACpB,GAAIzM,GAAOC,IAEX,IAAID,EAAK2H,EAEP,MADA1H,MAAKyM,EAAU,QAAS,4CACjB1M,CAET,KAAKwM,EAAK,MAAOxM,EAEjB,IAAI2M,GAAgB3M,EAAK+H,CAGrB0E,IACF1B,EAAK0B,EAAS,SAASG,EAAK7J,GAEd,SAAR6J,GAA0B,UAARA,GAA2B,SAARA,EACvC5M,EAAK8H,EAAe8E,GAAO7J,EAE3B4J,EAAcC,GAAO7J,IAK3B/C,EAAK6M,OAAOL,GAIZG,EAAcvE,aAAa0E,KAAK,qBAChCH,EAAcvE,aAAa0E,KAAK,iDAGhCH,EAAcvE,aAAegD,EAAWuB,EAAcvE,cACtDuE,EAActE,aAAasE,EAActE,WAAWpH,QAChDmK,EAAWuB,EAActE,YAE7BsE,EAAcrE,gBAAgBqE,EAAcrE,cAAcrH,QACtDmK,EAAWuB,EAAcrE,eAE7BqE,EAAcpE,aAAe6C,EAAWuB,EAAcpE,cACtDoE,EAAcI,eAAiBC,KAAKC,IAClC,EACAD,KAAKE,IAAIP,EAAcI,gBAAkB,IAAK,KAGhD,IAAII,IACFC,KAAK,EACLxH,SAAS,EACTyH,KAAK,EACLnD,UAAU,EACVoD,QAAQ,GAGNxE,EAAkB6D,EAAc7D,eACM,wBAAnC5D,SAASlE,KAAK8H,GACnBA,EAAkBkC,EAAYmC,EAAwBrE,GAC7CA,KAAoB,IAC7BA,EAAkBqE,GAEpBR,EAAc7D,gBAAkBA,CAEhC,IAAIyE,IACFC,UAAU,GAGRzE,EAAa4D,EAAc5D,UAW/B,OAVqC,uBAA9B7D,SAASlE,KAAK+H,GACnBA,EAAaiC,EAAYuC,EAAoBxE,GACpCA,KAAe,IACxBA,EAAawE,GAEfZ,EAAc5D,WAAaA,EAE3BuB,EAAS7B,sBAAwBkE,EAAclE,oBAGxCzI,GAWTyN,QAAS,WACP,GAAIzN,GAAOC,IAyBX,OAxBID,GAAK0N,YAAc1N,EAAKwJ,IAC1Bc,EAASqD,OAAOC,UAAU,WACxB5N,EAAK6N,EAAwBpH,MAAMzG,EAAMoG,aAGvCpG,EAAK+H,EAAeW,4BACtB1I,EAAK8N,IAGP9N,EAAK+N,IAED/N,EAAK+H,EAAegB,YAAc/I,EAAK+H,EAAegB,WAAWyE,UACnExN,EAAKgO,IAGHhO,EAAK+H,EAAee,iBAAiB9I,EAAKiO,IAG9CjO,EAAKkO,IAELlO,EAAKwJ,GAAoB,GAG3B3I,MAAMgI,gBAAkB7I,EAAK+H,EAAec,gBACrC5I,MAQT4M,OAAQ,SAASL,GACf,GAAIxM,GAAOC,KACTkO,EAAMnO,EAAKoO,EAAU5B,GACrB6B,EAAYF,EAAIG,KAAKC,YAAY,KACjCD,EAAOH,EAAIG,KAAKnL,OAAO,EAAGkL,EAE5BrO,GAAKwO,EAAOhC,EACZxM,EAAK4H,EAAauG,EAAIM,KACtBzO,EAAK0O,EAAgBP,EAAIQ,MAAQR,EAAIQ,KAAKxL,OAAO,GACjDnD,EAAK6H,EAAiBsG,EAAIG,KAAKnL,OAAOkL,EAAY,GAElDrO,EAAK2H,EAAgB3H,EAAK4O,EAAiBT,GAE3CnO,EAAK6O,EACH7O,EAAK2H,EAAgB,IAAM2G,EAAO,OAAStO,EAAK6H,EAAiB,UAInE5H,KAAKoK,KAWPrG,QAAS,SAASyI,EAASqC,EAAM5I,GAO/B,MANIa,GAAW0F,KACbvG,EAAO4I,MACPA,EAAOrC,EACPA,EAAUsC,QAGL9O,KAAK+O,KAAKvC,EAASqC,GAAMrI,MAAMxG,KAAMiG,IAW9C8I,KAAM,SAASvC,EAASqC,EAAMG,GAqC5B,QAASC,KACP,GAAIhJ,MACFtF,EAAIwF,UAAUnF,OACdkO,GAAQ1C,GAAYA,GAAWA,EAAQ0C,QAAS,CAQlD,KANIF,GAAWlI,EAAWkI,IACxBA,EAAQxI,MAAMxG,KAAMmG,WAKfxF,KAAKsF,EAAKtF,GAAKuO,EAAOnP,EAAKgP,KAAKvC,EAASrG,UAAUxF,IAAMwF,UAAUxF,EAE1E,KAKE,MAAOkO,GAAKrI,MAAMxG,KAAMiG,GACxB,MAAO/F,GAGP,KAFAH,GAAKoP,IACLpP,EAAKiC,iBAAiB9B,EAAGsM,GACnBtM,GA1DV,GAAIH,GAAOC,IAGX,IAAImH,EAAY0H,KAAU/H,EAAW0F,GACnC,MAAOA,EAWT,IAPI1F,EAAW0F,KACbqC,EAAOrC,EACPA,EAAUsC,SAKPhI,EAAW+H,GACd,MAAOA,EAIT,KACE,GAAIA,EAAKO,EACP,MAAOP,EAIT,IAAIA,EAAKQ,EACP,MAAOR,GAAKQ,EAEd,MAAOnP,GAIP,MAAO2O,GA8BT,IAAK,GAAIS,KAAYT,GACf3D,EAAO2D,EAAMS,KACfL,EAAQK,GAAYT,EAAKS,GAW7B,OARAL,GAAQjK,UAAY6J,EAAK7J,UAEzB6J,EAAKQ,EAAoBJ,EAGzBA,EAAQG,GAAY,EACpBH,EAAQM,EAAWV,EAEZI,GAQTO,UAAW,WAWT,MAVAnF,GAASqD,OAAO8B,YAEhBxP,KAAKyP,IACLzP,KAAK0P,IACL1P,KAAK2P,IACL3P,KAAK4P,IAELhP,MAAMgI,gBAAkB5I,KAAKwJ,EAC7BxJ,KAAKuJ,GAAoB,EAElBvJ,MAWT6P,EAA0B,SAASC,GACjC9P,KAAKyM,EAAU,QAAS,4CAA6CqD,GACrE9P,KAAKgC,iBAAiB8N,EAAMhM,QAC1B7B,OACE8N,2BAA2B,MAUjCC,EAAgC,WAI9B,MAHAhQ,MAAKiQ,EAA2BjQ,KAAKiQ,EAAyBC,KAAKlQ,MACnEgI,EAAQmI,kBACNnI,EAAQmI,iBAAiB,qBAAsBnQ,KAAKiQ,GAC/CjQ,MAQToQ,EAAgC,WAG9B,MAFApI,GAAQqI,qBACNrI,EAAQqI,oBAAoB,qBAAsBrQ,KAAKiQ,GAClDjQ,MAUTgC,iBAAkB,SAASF,EAAI0K,GAG7B,GAFAA,EAAUzB,GAAauF,eAAgB,GAAI9D,EAAUA,MAEjD9B,EAAa5I,IAAOA,EAAG6B,MAEzB7B,EAAKA,EAAG6B,UACH,IAAI4G,EAAQzI,GAEjBA,EAAKA,MACA,CAAA,IAAI2I,EAAc3I,GAYvB,MAAO9B,MAAKgE,eACVlC,EACAiJ,EAAYyB,GACV+D,YAAY,EACZD,eAAgB9D,EAAQ8D,eAAiB,IAZ7C9D,GAAUxM,KAAKwQ,EAA2ChE,EAAS1K,GACnEA,EAAK,GAAIlB,OAAM4L,EAAQxJ,SAiBzBhD,KAAKuH,EAAyBzF,CAO9B,KACE,GAAI2O,GAAQpG,EAASqG,kBAAkB5O,EACvC9B,MAAK2Q,EAAiBF,EAAOjE,GAC7B,MAAOoE,GACP,GAAI9O,IAAO8O,EACT,KAAMA,GAIV,MAAO5Q,OAGT6Q,EAA4C,SAASC,EAAgBhP,GACnE,GAAIiP,GAAShM,OAAOiM,KAAKlP,GAAImP,OACzBzE,EAAUzB,EAAY+F,GACxB9N,QACE,2CAA6C4I,EAAwBmF,GACvEG,aAAc5G,EAAIyG,IAClB9O,MAAO6O,EAAe7O,WAIxB,OAFAuK,GAAQvK,MAAMkP,EAAiBtF,EAAmB/J,GAE3C0K,GAUTxI,eAAgB,SAASoC,EAAKoG,GAI5B,IACIxM,KAAK8H,EAAeK,aAAaiJ,OACnCpR,KAAK8H,EAAeK,aAAaiJ,KAAKhL,GAFxC,CAOAoG,EAAUA,MACVpG,GAAY,EAEZ,IAOItE,GAPAS,EAAOwI,GAEP/H,QAASoD,GAEXoG,EAQF,KACE,KAAM,IAAI5L,OAAMwF,GAChB,MAAOwK,GACP9O,EAAK8O,EAIP9O,EAAGuC,KAAO,IACV,IAAIoM,GAAQpG,EAASqG,kBAAkB5O,GAGnCuP,EAAczG,EAAQ6F,EAAMA,QAAUA,EAAMA,MAAM,EAKlDY,IAAoC,2BAArBA,EAAYxC,OAC7BwC,EAAcZ,EAAMA,MAAM,GAG5B,IAAIa,GAAWD,GAAeA,EAAYE,KAAQ,EAElD,MACIvR,KAAK8H,EAAeM,WAAWgJ,OACjCpR,KAAK8H,EAAeM,WAAWgJ,KAAKE,OAMlCtR,KAAK8H,EAAeO,cAAc+I,MACnCpR,KAAK8H,EAAeO,cAAc+I,KAAKE,IAF1C,CAOA,GAAItR,KAAK8H,EAAeyI,YAAe/D,GAAWA,EAAQ+D,WAAa,CAErEhO,EAAK2O,YAAkC,MAApB3O,EAAK2O,YAAsB9K,EAAM7D,EAAK2O,YAEzD1E,EAAUzB,GAENuF,eAAgB,GAElB9D,GAMFA,EAAQ8D,gBAAkB,CAE1B,IAAIkB,GAASxR,KAAKyR,EAAehB,EAAOjE,EACxCjK,GAAKgO,YAEHiB,OAAQA,EAAOE,WAcnB,MATInP,GAAK2O,cACP3O,EAAK2O,YAActG,EAAQrI,EAAK2O,aAC5B3O,EAAK2O,aACJ3O,EAAK2O,cAIZlR,KAAK2R,EAAMpP,GAEJvC,QAGT4R,kBAAmB,SAASC,GAC1B,GAAIC,GAAQ/G,GAERgH,UAAWrL,IAAQ,KAErBmL,EAGF,IAAI/K,EAAW9G,KAAK8H,EAAekK,oBAAqB,CACtD,GAAIC,GAASjS,KAAK8H,EAAekK,mBAAmBF,EAEpD,IAAItH,EAASyH,KAAYpH,EAAcoH,GACrCH,EAAQG,MACH,IAAIA,KAAW,EACpB,MAAOjS,MAQX,MAJAA,MAAK8J,EAAa+C,KAAKiF,GACnB9R,KAAK8J,EAAa9I,OAAShB,KAAK8H,EAAegF,gBACjD9M,KAAK8J,EAAaoI,QAEblS,MAGTmD,UAAW,SAASgP,GAClB,GAAIC,MAAgBlM,MAAMnF,KAAKoF,UAAW,EAO1C,OALAnG,MAAK2J,EAASkD,MAAMsF,EAAQC,IACxBpS,KAAKuJ,GACPvJ,KAAKiO,IAGAjO,MASTqS,eAAgB,SAAS7D,GAIvB,MAFAxO,MAAK6H,EAAe2G,KAAOA,EAEpBxO,MASTsS,gBAAiB,SAASrQ,GAGxB,MAFAjC,MAAKuS,EAAc,QAAStQ,GAErBjC,MASTwS,eAAgB,SAASC,GAGvB,MAFAzS,MAAKuS,EAAc,OAAQE,GAEpBzS,MAQT0S,aAAc,WAGZ,MAFA1S,MAAK6H,KAEE7H,MAQT2S,WAAY,WAEV,MAAO3L,MAAK4L,MAAM3L,EAAUjH,KAAK6H,KASnCgL,eAAgB,SAASC,GAGvB,MAFA9S,MAAK8H,EAAegL,YAAcA,EAE3B9S,MAST+S,WAAY,SAAShL,GAGnB,MAFA/H,MAAK8H,EAAeC,QAAUA,EAEvB/H,MAUTqC,gBAAiB,SAASwD,GACxB,GAAIgB,GAAW7G,KAAK8H,EAAekL,YAEnC,OADAhT,MAAK8H,EAAekL,aAAepM,EAAqBC,EAAUhB,GAC3D7F,MAUTiT,sBAAuB,SAASpN,GAC9B,GAAIgB,GAAW7G,KAAK8H,EAAekK,kBAEnC,OADAhS,MAAK8H,EAAekK,mBAAqBpL,EAAqBC,EAAUhB,GACjE7F,MAUTkT,sBAAuB,SAASrN,GAC9B,GAAIgB,GAAW7G,KAAK8H,EAAeqL,kBAEnC,OADAnT,MAAK8H,EAAeqL,mBAAqBvM,EAAqBC,EAAUhB,GACjE7F,MAYToT,aAAc,SAASC,GAGrB,MAFArT,MAAK8H,EAAeuL,UAAYA,EAEzBrT,MAQTsT,cAAe,WACb,MAAOtT,MAAKuH,GAQdgM,YAAa,WACX,MAAOvT,MAAKyH,GAQdgG,QAAS,WACP,QAAKzN,KAAK+G,MACL/G,KAAK0H,IACH1H,KAAKwT,0BACRxT,KAAKwT,yBAA0B,EAC/BxT,KAAKyM,EAAU,QAAS,2CAEnB,KAKXgH,UAAW,WAIT,GAAIC,GAAc1L,EAAQ0L,WACtBA,IACF1T,KAAKoC,OAAOsR,EAAYnH,IAAKmH,EAAYtR,QAAQoL,WAIrDmG,iBAAkB,SAASnH,GACzB,GACGpF,EADH,CAKAoF,EAAUA,KAEV,IAAI+G,GAAc/G,EAAQoH,SAAW5T,KAAKuT,aAC1C,KAAKA,EACH,KAAM,IAAIjO,GAAiB,kBAG7B,IAAIiH,GAAMC,EAAQD,KAAOvM,KAAKuO,CAC9B,KAAKhC,EACH,KAAM,IAAIjH,GAAiB,cAG7B,IAAIuO,GAASC,mBACTC,EAAK,EACTA,IAAM,YAAcF,EAAON,GAC3BQ,GAAM,QAAUF,EAAOtH,EAEvB,IAAIiC,GAAOhC,EAAQgC,MAAQxO,KAAK6H,EAAe2G,IAC3CA,KACEA,EAAKnK,OAAM0P,GAAM,SAAWF,EAAOrF,EAAKnK,OACxCmK,EAAKwF,QAAOD,GAAM,UAAYF,EAAOrF,EAAKwF,QAGhD,IAAIC,GAAejU,KAAK2O,EAAiB3O,KAAKmO,EAAU5B,IAEpD2H,EAAS9M,EAAU+M,cAAc,SACrCD,GAAOE,OAAQ,EACfF,EAAOG,IAAMJ,EAAe,yBAA2BF,GACtD3M,EAAUkN,MAAQlN,EAAUmN,MAAMC,YAAYN,KAIjDO,EAAoB,WAClB,GAAI1U,GAAOC,IACXA,MAAKsJ,GAAkB,EACvBoL,WAAW,WAET3U,EAAKuJ,GAAkB,KAI3BqL,EAAe,SAASC,EAAWpI,GAEjC,GAAIqI,GAAKlI,CAET,IAAK3M,KAAKkH,EAAV,CAEAsF,EAAUA,MAEVoI,EAAY,QAAUA,EAAU1R,OAAO,EAAG,GAAG4R,cAAgBF,EAAU1R,OAAO,GAE1EkE,EAAU2N,aACZF,EAAMzN,EAAU2N,YAAY,cAC5BF,EAAIG,UAAUJ,GAAW,GAAM,KAE/BC,EAAMzN,EAAU6N,oBAChBJ,EAAID,UAAYA,EAGlB,KAAKjI,IAAOH,GACNtB,EAAOsB,EAASG,KAClBkI,EAAIlI,GAAOH,EAAQG,GAGvB,IAAIvF,EAAU2N,YAEZ3N,EAAU8N,cAAcL,OAIxB,KACEzN,EAAU+N,UAAU,KAAON,EAAID,UAAUQ,cAAeP,GACxD,MAAO3U,OAYbmV,GAAyB,SAASC,GAChC,GAAIvV,GAAOC,IACX,OAAO,UAAS6U,GASd,GALA9U,EAAKwV,GAAmB,KAKpBxV,EAAKgK,IAAuB8K,EAAhC,CAEA9U,EAAKgK,EAAqB8K,CAM1B,IAAIW,EACJ,KACEA,EAASlK,EAAiBuJ,EAAIW,QAC9B,MAAOtV,GACPsV,EAAS,YAGXzV,EAAK6R,mBACH6D,SAAU,MAAQH,EAClBtS,QAASwS,OAUfE,GAAuB,WACrB,GAAI3V,GAAOC,KACT2V,EAAmB,GAKrB,OAAO,UAASd,GACd,GAAIW,EACJ,KACEA,EAASX,EAAIW,OACb,MAAOtV,GAGP,OAEF,GAAI0V,GAAUJ,GAAUA,EAAOI,OAK/B,IACGA,IACY,UAAZA,GAAmC,aAAZA,GAA2BJ,EAAOK,mBAF5D,CAQA,GAAIC,GAAU/V,EAAKwV,EACdO,IACH/V,EAAKgW,GAAwB,SAASlB,GAExCmB,aAAaF,GACb/V,EAAKwV,GAAmBb,WAAW,WACjC3U,EAAKwV,GAAmB,MACvBI,MAUPM,GAAmB,SAASC,EAAMC,GAChC,GAAIC,GAAY3K,EAASzL,KAAKgK,EAAUG,MACpCkM,EAAW5K,EAAS0K,GACpBG,EAAa7K,EAASyK,EAK1BlW,MAAKkK,EAAYiM,EAIbC,EAAUG,WAAaF,EAASE,UAAYH,EAAUI,OAASH,EAASG,OAC1EL,EAAKE,EAASI,UACZL,EAAUG,WAAaD,EAAWC,UAAYH,EAAUI,OAASF,EAAWE,OAC9EN,EAAOI,EAAWG,UAEpBzW,KAAK4R,mBACH6D,SAAU,aACVlT,MACE4T,GAAIA,EACJD,KAAMA,MAKZQ,EAAwB,WACtB,GAAI3W,GAAOC,IACXD,GAAK4W,GAA4BpQ,SAASvB,UAAUC,SAEpDsB,SAASvB,UAAUC,SAAW,WAC5B,MAAoB,kBAATjF,OAAuBA,KAAKoP,EAC9BrP,EAAK4W,GAA0BnQ,MAAMxG,KAAKuP,EAAUpJ,WAEtDpG,EAAK4W,GAA0BnQ,MAAMxG,KAAMmG,aAItDvE,EAA0B,WACpB5B,KAAK2W,KAEPpQ,SAASvB,UAAUC,SAAWjF,KAAK2W,KAQvCC,EAAqB,WAKnB,QAASC,GAAWC,GAClB,MAAO,UAASC,EAAI5W,GAKlB,IAAK,GADD8F,GAAO,GAAI+Q,OAAM7Q,UAAUnF,QACtBL,EAAI,EAAGA,EAAIsF,EAAKjF,SAAUL,EACjCsF,EAAKtF,GAAKwF,UAAUxF,EAEtB,IAAIsW,GAAmBhR,EAAK,EAQ5B,OAPIa,GAAWmQ,KACbhR,EAAK,GAAKlG,EAAKgP,KAAKkI,IAMlBH,EAAKtQ,MACAsQ,EAAKtQ,MAAMxG,KAAMiG,GAEjB6Q,EAAK7Q,EAAK,GAAIA,EAAK,KAOhC,QAASiR,GAAgBpX,GACvB,GAAIqX,GAAQnP,EAAQlI,IAAWkI,EAAQlI,GAAQkF,SAC3CmS,IAASA,EAAMC,gBAAkBD,EAAMC,eAAe,sBACxD1L,EACEyL,EACA,mBACA,SAASL,GACP,MAAO,UAASxB,EAASyB,EAAIM,EAASC,GAEpC,IACMP,GAAMA,EAAGQ,cACXR,EAAGQ,YAAcxX,EAAKgP,KAAKgI,EAAGQ,cAEhC,MAAOC,IAMT,GAAIC,GAAQC,EAAcC,CA6B1B,OA1BE9O,IACAA,EAAgBuE,MACJ,gBAAXtN,GAAuC,SAAXA,KAI7B4X,EAAe3X,EAAKgW,GAAwB,SAC5C4B,EAAkB5X,EAAK6X,KACvBH,EAAS,SAAS5C,GAIhB,GAAKA,EAAL,CAEA,GAAID,EACJ,KACEA,EAAYC,EAAI9R,KAChB,MAAO7C,GAGP,OAEF,MAAkB,UAAd0U,EAA8B8C,EAAa7C,GACxB,aAAdD,EAAiC+C,EAAgB9C,GAArD,UAGFiC,EAAK/V,KACVf,KACAsV,EACAvV,EAAKgP,KAAKgI,EAAIjI,OAAW2I,GACzBJ,EACAC,KAINO,GAEFnM,EACEyL,EACA,sBACA,SAASL,GACP,MAAO,UAASjC,EAAKkC,EAAIM,EAASC,GAChC,IACEP,EAAKA,IAAOA,EAAG1H,EAAoB0H,EAAG1H,EAAoB0H,GAC1D,MAAO7W,IAGT,MAAO4W,GAAK/V,KAAKf,KAAM6U,EAAKkC,EAAIM,EAASC,KAG7CO,IAvGN,GAAI9X,GAAOC,KAEP6X,EAAkB9X,EAAK8J,EA2BvBhB,EAAkB7I,KAAK8H,EAAee,eA+E1C6C,GAAK1D,EAAS,aAAc6O,EAAYgB,GACxCnM,EAAK1D,EAAS,cAAe6O,EAAYgB,GACrC7P,EAAQ8P,uBACVpM,EACE1D,EACA,wBACA,SAAS8O,GACP,MAAO,UAASiB,GACd,MAAOjB,GAAK/W,EAAKgP,KAAKgJ,MAG1BF,EAqCJ,KAAK,GA/BDG,IACF,cACA,SACA,OACA,mBACA,iBACA,oBACA,kBACA,cACA,aACA,qBACA,cACA,aACA,iBACA,eACA,kBACA,cACA,cACA,eACA,qBACA,SACA,YACA,eACA,gBACA,YACA,kBACA,SACA,iBACA,4BACA,wBAEOrX,EAAI,EAAGA,EAAIqX,EAAahX,OAAQL,IACvCuW,EAAgBc,EAAarX,KAajCsX,EAAwB,WAMtB,QAASC,GAASC,EAAMhL,GAClBgL,IAAQhL,IAAOrG,EAAWqG,EAAIgL,KAChCzM,EAAKyB,EAAKgL,EAAM,SAASrB,GACvB,MAAO/W,GAAKgP,KAAK+H,KARvB,GAAI/W,GAAOC,KACP6I,EAAkB7I,KAAK8H,EAAee,gBAEtCgP,EAAkB9X,EAAK8J,CAU3B,IAAIhB,EAAgBsE,KAAO,kBAAoBnF,GAAS,CACtD,GAAIoQ,GAAWpQ,EAAQqQ,gBAAkBrQ,EAAQqQ,eAAerT,SAChE0G,GACE0M,EACA,OACA,SAASE,GACP,MAAO,UAASpP,EAAQqI,GAYtB,MARI5G,GAAS4G,IAAQA,EAAIgH,QAAQxY,EAAK4H,UACpC3H,KAAKwY,IACHtP,OAAQA,EACRqI,IAAKA,EACLkH,YAAa,OAIVH,EAAS9R,MAAMxG,KAAMmG,aAGhC0R,GAGFnM,EACE0M,EACA,OACA,SAASM,GACP,MAAO,YAIL,QAASC,KACP,GAAIxL,EAAIqL,IAAkC,IAAnBrL,EAAIyL,WAAkB,CAC3C,IAGEzL,EAAIqL,GAAYC,YAActL,EAAI0L,OAClC,MAAO3Y,IAITH,EAAK6R,mBACH7O,KAAM,OACN0S,SAAU,MACVlT,KAAM4K,EAAIqL,MAMhB,IAAK,GArBDrL,GAAMnN,KAoBN8Y,GAAS,SAAU,UAAW,cACzBC,EAAI,EAAGA,EAAID,EAAM9X,OAAQ+X,IAChCb,EAASY,EAAMC,GAAI5L,EAiBrB,OAdI,sBAAwBA,IAAOrG,EAAWqG,EAAI6L,oBAChDtN,EACEyB,EACA,qBACA,SAAS2J,GACP,MAAO/W,GAAKgP,KAAK+H,EAAMhI,OAAW6J,KAMtCxL,EAAI6L,mBAAqBL,EAGpBD,EAASlS,MAAMxG,KAAMmG,aAGhC0R,GAIAhP,EAAgBsE,KAAOxB,KACzBD,EACE1D,EACA,QACA,SAASiR,GACP,MAAO,YAKL,IAAK,GADDhT,GAAO,GAAI+Q,OAAM7Q,UAAUnF,QACtBL,EAAI,EAAGA,EAAIsF,EAAKjF,SAAUL,EACjCsF,EAAKtF,GAAKwF,UAAUxF,EAGtB,IAEI4Q,GAFA2H,EAAajT,EAAK,GAClBiD,EAAS,KAeb,IAZ0B,gBAAfgQ,GACT3H,EAAM2H,EACG,WAAalR,IAAWkR,YAAsBlR,GAAQmR,SAC/D5H,EAAM2H,EAAW3H,IACb2H,EAAWhQ,SACbA,EAASgQ,EAAWhQ,SAGtBqI,EAAM,GAAK2H,EAIT3H,EAAIgH,QAAQxY,EAAK4H,QACnB,MAAOsR,GAAUzS,MAAMxG,KAAMiG,EAG3BA,GAAK,IAAMA,EAAK,GAAGiD,SACrBA,EAASjD,EAAK,GAAGiD,OAGnB,IAAIkQ,IACFlQ,OAAQA,EACRqI,IAAKA,EACLkH,YAAa,KAGf,OAAOQ,GACJzS,MAAMxG,KAAMiG,GACZoT,KAAK,SAASC,GASb,MARAF,GAAUX,YAAca,EAAST,OAEjC9Y,EAAK6R,mBACH7O,KAAM,OACN0S,SAAU,QACVlT,KAAM6W,IAGDE,IAER,SAAS,SAAS9B,GASjB,KAPAzX,GAAK6R,mBACH7O,KAAM,OACN0S,SAAU,QACVlT,KAAM6W,EACNxT,MAAO,UAGH4R,MAIdK,GAMAhP,EAAgBuE,KAAOpN,KAAKkH,IAC1BE,EAAU+I,kBACZ/I,EAAU+I,iBAAiB,QAASpQ,EAAKgW,GAAwB,UAAU,GAC3E3O,EAAU+I,iBAAiB,WAAYpQ,EAAK6X,MAAyB,IAC5DxQ,EAAUmS,cAEnBnS,EAAUmS,YAAY,UAAWxZ,EAAKgW,GAAwB,UAC9D3O,EAAUmS,YAAY,aAAcxZ,EAAK6X,OAQ7C,IAAI4B,GAASxR,EAAQwR,OACjBC,EAAsBD,GAAUA,EAAOE,KAAOF,EAAOE,IAAIC,QACzDC,GACDH,GACDzR,EAAQ6R,SACRA,QAAQC,WACRD,QAAQE,YACV,IAAIlR,EAAgBoB,UAAY2P,EAAwB,CAEtD,GAAII,GAAgBhS,EAAQiS,UAC5BjS,GAAQiS,WAAa,WACnB,GAAIC,GAAcna,EAAKiK,EAAUG,IAGjC,IAFApK,EAAKoa,GAAkBpa,EAAKmK,EAAWgQ,GAEnCF,EACF,MAAOA,GAAcxT,MAAMxG,KAAMmG,WAIrC,IAAIiU,GAA6B,SAASC,GAGxC,MAAO,YACL,GAAI9I,GAAMpL,UAAUnF,OAAS,EAAImF,UAAU,GAAK2I,MAQhD,OALIyC,IAEFxR,EAAKoa,GAAkBpa,EAAKmK,EAAWqH,EAAM,IAGxC8I,EAAiB7T,MAAMxG,KAAMmG,YAIxCuF,GAAKmO,QAAS,YAAaO,EAA4BvC,GACvDnM,EAAKmO,QAAS,eAAgBO,EAA4BvC,GAG5D,GAAIhP,EAAgBlD,SAAW,WAAaqC,IAAWrC,QAAQ2U,IAAK,CAElE,GAAIC,GAAwB,SAASnU,EAAK7D,GACxCxC,EAAK6R,mBACH5O,QAASoD,EACTR,MAAOrD,EAAKqD,MACZ6P,SAAU,YAId3K,IAAM,QAAS,OAAQ,OAAQ,QAAS,OAAQ,SAAS6J,EAAG/O,GAC1DmG,EAAkBpG,QAASC,EAAO2U,OAKxCC,EAAkB,WAGhB,IADA,GAAIC,GACGza,KAAK6J,EAAiB7I,QAAQ,CACnCyZ,EAAUza,KAAK6J,EAAiBqI,OAEhC,IAAIL,GAAM4I,EAAQ,GAChBpW,EAAOoW,EAAQ,GACf3D,EAAO2D,EAAQ,EAEjB5I,GAAIxN,GAAQyS,IAIhB4D,EAAiB,WAEf,IAAK,GAAIxR,KAAUlJ,MAAK0J,EACtB1J,KAAKyJ,EAAiBP,GAAUlJ,KAAK0J,EAAwBR,IAIjEyR,EAAe,WACb,GAAI5a,GAAOC,IAGX8K,GAAK9K,KAAK2J,EAAU,SAASgL,EAAGxC,GAC9B,GAAIyI,GAAYzI,EAAO,GACnBlM,EAAOkM,EAAO,EAClByI,GAAUpU,MAAMzG,GAAOA,GAAM8a,OAAO5U,OAIxC6U,EAAW,SAASC,GAClB,GAAIC,GAAI9O,EAAWrJ,KAAKkY,GACtBxO,KACA5L,EAAI,CAEN,KACE,KAAOA,KAAK4L,EAAIP,EAAQrL,IAAMqa,EAAEra,IAAM,GACtC,MAAOT,GACP,KAAM,IAAIoF,GAAiB,gBAAkByV,GAG/C,GAAIxO,EAAImC,OAAS1O,KAAK8H,EAAemT,eACnC,KAAM,IAAI3V,GACR,iFAIJ,OAAOiH,IAGT2O,EAAkB,SAAShN,GAEzB,GAAI+F,GAAe,KAAO/F,EAAIsI,MAAQtI,EAAIiN,KAAO,IAAMjN,EAAIiN,KAAO,GAKlE,OAHIjN,GAAIqI,WACNtC,EAAe/F,EAAIqI,SAAW,IAAMtC,GAE/BA,GAGTmH,EAAyB,WAElBpb,KAAKsJ,GACRtJ,KAAK2Q,EAAiBnK,MAAMxG,KAAMmG,YAItCkV,EAAkB,SAASC,EAAW9O,GACpC,GAAIgF,GAASxR,KAAKyR,EAAe6J,EAAW9O,EAE5CxM,MAAKub,EAAc,UACjBD,UAAWA,EACX9O,QAASA,IAGXxM,KAAKwb,GACHF,EAAUjX,KACViX,EAAUtY,QACVsY,EAAU/J,IACV+J,EAAUG,OACVjK,EACAhF,IAIJkP,EAAgB,SAASJ,EAAW9O,GAClC,GAAIzM,GAAOC,KACPwR,IACJ,IAAI8J,EAAU7K,OAAS6K,EAAU7K,MAAMzP,SACrC8J,EAAKwQ,EAAU7K,MAAO,SAAS9P,EAAG8P,GAChC,GAAIkL,GAAQ5b,EAAK6b,GAAgBnL,EAAO6K,EAAU/J,IAC9CoK,IACFnK,EAAO3E,KAAK8O,KAKZnP,GAAWA,EAAQ8D,gBACrB,IAAK,GAAIyI,GAAI,EAAGA,EAAIvM,EAAQ8D,gBAAkByI,EAAIvH,EAAOxQ,OAAQ+X,IAC/DvH,EAAOuH,GAAG8C,QAAS,CAKzB,OADArK,GAASA,EAAOtL,MAAM,EAAGlG,KAAK8H,EAAec,kBAI/CkT,GAAiB,SAASH,EAAOI,GAE/B,GAAIC,IACFC,SAAUN,EAAMpK,IAChBkK,OAAQE,EAAMO,KACdC,MAAOR,EAAMS,OACbC,WAAUV,EAAM9M,MAAQ,IAuB1B,OAfK8M,GAAMpK,MACTyK,EAAWC,SAAWF,GAGxBC,EAAWH,SAGN7b,KAAK8H,EAAeQ,aAAa8I,OACjCpR,KAAK8H,EAAeQ,aAAa8I,KAAK4K,EAAWC,WAEpD,qBAAqB7K,KAAK4K,EAAW,cAErC,qBAAqB5K,KAAK4K,EAAWC,WAGhCD,GAGTM,GAAmB,SAASvZ,EAAMC,EAASsO,EAASmK,EAAQjK,EAAQhF,GAClE,GAAI+P,IAAmBxZ,EAAOA,EAAO,KAAO,KAAOC,GAAW,GAC9D,KACIhD,KAAK8H,EAAeK,aAAaiJ,OAClCpR,KAAK8H,EAAeK,aAAaiJ,KAAKpO,KACrChD,KAAK8H,EAAeK,aAAaiJ,KAAKmL,GAH1C,CAQA,GAAIhM,EAoBJ,IAlBIiB,GAAUA,EAAOxQ,QACnBsQ,EAAUE,EAAO,GAAGyK,UAAY3K,EAGhCE,EAAOE,UACPnB,GAAciB,OAAQA,IACbF,IACTf,GACEiB,SAEIyK,SAAU3K,EACVmK,OAAQA,EACRI,QAAQ,QAOZ7b,KAAK8H,EAAeM,WAAWgJ,OACjCpR,KAAK8H,EAAeM,WAAWgJ,KAAKE,OAMlCtR,KAAK8H,EAAeO,cAAc+I,MACnCpR,KAAK8H,EAAeO,cAAc+I,KAAKE,IAF1C,CAOA,GAAI/O,GAAOwI,GAGPrI,WACEC,SAEII,KAAMA,EACND,MAAOE,EACPuN,WAAYA,KAIlBiM,QAASlL,GAEX9E,EAIFxM,MAAK2R,EAAMpP,MAGbka,GAAa,SAASla,GAGpB,GAAIyK,GAAMhN,KAAK8H,EAAeY,gBAI9B,IAHInG,EAAKS,UACPT,EAAKS,QAAUgI,EAASzI,EAAKS,QAASgK,IAEpCzK,EAAKG,UAAW,CAClB,GAAIA,GAAYH,EAAKG,UAAUC,OAAO,EACtCD,GAAUI,MAAQkI,EAAStI,EAAUI,MAAOkK,GAG9C,GAAI0P,GAAUna,EAAKma,OAanB,OAZIA,KACEA,EAAQnL,MACVmL,EAAQnL,IAAMvG,EAAS0R,EAAQnL,IAAKvR,KAAK8H,EAAea,eAEtD+T,EAAQC,UACVD,EAAQC,QAAU3R,EAAS0R,EAAQC,QAAS3c,KAAK8H,EAAea,gBAIhEpG,EAAKqa,aAAera,EAAKqa,YAAYja,QACvC3C,KAAK6c,GAAiBta,EAAKqa,aAEtBra,GAMTua,GAAkB,SAASF,GAQzB,IAAK,GAJHG,GACAjL,EACAvP,EAHEya,GAAY,KAAM,OAAQ,OAKrBrc,EAAI,EAAGA,EAAIic,EAAYja,OAAO3B,SAAUL,EAE/C,GADAmR,EAAQ8K,EAAYja,OAAOhC,GAExBmR,EAAMsF,eAAe,SACrB5M,EAASsH,EAAMvP,QAChB0I,EAAa6G,EAAMvP,MAHrB,CAOAA,EAAOwI,KAAgB+G,EAAMvP,KAC7B,KAAK,GAAIwW,GAAI,EAAGA,EAAIiE,EAAShc,SAAU+X,EACrCgE,EAAUC,EAASjE,GACfxW,EAAK6U,eAAe2F,IAAYxa,EAAKwa,KACvCxa,EAAKwa,GAAW/R,EAASzI,EAAKwa,GAAU/c,KAAK8H,EAAea,cAGhEiU,GAAYja,OAAOhC,GAAG4B,KAAOA,IAIjC0a,GAAc,WACZ,GAAKjd,KAAKqH,GAAkBrH,KAAKkH,EAAjC,CACA,GAAIgW,KAkBJ,OAhBIld,MAAKqH,GAAiBC,EAAW6V,YACnCD,EAAS3U,SACP6U,aAAchR,UAAU+Q,YAKxBnV,EAAQiC,UAAYjC,EAAQiC,SAASE,OACvC+S,EAAS3L,IAAMvJ,EAAQiC,SAASE,MAG9BnK,KAAKkH,GAAgBE,EAAUiW,WAC5BH,EAAS3U,UAAS2U,EAAS3U,YAChC2U,EAAS3U,QAAQoU,QAAUvV,EAAUiW,UAGhCH,IAGTI,EAAe,WACbtd,KAAKud,GAAmB,EACxBvd,KAAKwd,GAAgB,MAGvBC,GAAgB,WACd,MAAOzd,MAAKud,IAAoB7W,IAAQ1G,KAAKwd,GAAgBxd,KAAKud,IAYpEG,GAAe,SAASC,GACtB,GAAIC,GAAO5d,KAAKwH,CAEhB,UACGoW,GACDD,EAAQ3a,UAAY4a,EAAK5a,SACzB2a,EAAQnB,UAAYoB,EAAKpB,WAKvBmB,EAAQpN,YAAcqN,EAAKrN,WACtB/E,EAAiBmS,EAAQpN,WAAYqN,EAAKrN,aACxCoN,EAAQjb,YAAakb,EAAKlb,WAE5B6I,EAAgBoS,EAAQjb,UAAWkb,EAAKlb,aAMnDmb,GAAkB,SAASnB,GAEzB,IAAI1c,KAAK8d,KAAT,CAIA,GAAIjF,GAAS6D,EAAQ7D,MAKrB,IAAiB,MAAXA,GAA6B,MAAXA,GAA6B,MAAXA,EAA1C,CAEA,GAAIkF,EACJ,KAIIA,EADEpS,IACM+Q,EAAQnU,QAAQyV,IAAI,eAEpBtB,EAAQuB,kBAAkB,eAIpCF,EAA8B,IAAtBG,SAASH,EAAO,IACxB,MAAO7d,IAITF,KAAKud,GAAmBQ,EAEpBA,EAEwB,EAAxB/d,KAAKud,IAAwB,IAEjCvd,KAAKwd,GAAgB9W,OAGvByX,EAAO,SAAS5b,GACd,GAAImK,GAAgB1M,KAAK8H,EAErBsW,GACAC,QAASre,KAAK4H,EACdtB,OAAQoG,EAAcpG,OACtBgY,SAAU,cAEZpB,EAAWld,KAAKue,IAsDlB,IApDIrB,IACFkB,EAAS1B,QAAUQ,GAIjB3a,EAAK+N,sBAAuB/N,GAAK+N,eAErC/N,EAAOwI,EAAYqT,EAAU7b,GAG7BA,EAAKkQ,KAAO1H,EAAYA,KAAgB/K,KAAK6H,EAAe4K,MAAOlQ,EAAKkQ,MACxElQ,EAAKN,MAAQ8I,EAAYA,KAAgB/K,KAAK6H,EAAe5F,OAAQM,EAAKN,OAG1EM,EAAKN,MAAM,oBAAsByE,IAAQ1G,KAAK4J,EAE1C5J,KAAK8J,GAAgB9J,KAAK8J,EAAa9I,OAAS,IAGlDuB,EAAKqa,aACHja,UAAWuD,MAAMnF,KAAKf,KAAK8J,EAAc,KAIzC9J,KAAK6H,EAAe2G,OAEtBjM,EAAKiM,KAAOxO,KAAK6H,EAAe2G,MAI9B9B,EAAcoG,cAAavQ,EAAKuQ,YAAcpG,EAAcoG,aAG5DpG,EAAc3E,UAASxF,EAAKwF,QAAU2E,EAAc3E,SAGpD2E,EAAc8R,aAAYjc,EAAKkc,YAAc/R,EAAc8R,YAE/Djc,EAAOvC,KAAK0e,GAAcnc,GAG1BwC,OAAOiM,KAAKzO,GAAMoc,QAAQ,SAAShS,IAChB,MAAbpK,EAAKoK,IAA8B,KAAdpK,EAAKoK,IAAe9B,EAActI,EAAKoK,YACvDpK,GAAKoK,KAIZ7F,EAAW4F,EAAcsG,gBAC3BzQ,EAAOmK,EAAcsG,aAAazQ,IAASA,GAIxCA,IAAQsI,EAActI,MAMzBuE,EAAW4F,EAAcyG,qBACxBzG,EAAcyG,mBAAmB5Q,IAOpC,MAAIvC,MAAK8d,SACP9d,MAAKyM,EAAU,OAAQ,uCAAwClK,QAIzB,gBAA7BmK,GAAc3D,WACnBgE,KAAK6R,SAAWlS,EAAc3D,YAChC/I,KAAK6e,GAAsBtc,GAG7BvC,KAAK6e,GAAsBtc,KAI/Buc,GAAe,SAASvc,GACtB,MAAOuJ,GAASvJ,EAAMvC,KAAK8H,EAAekB,eAG5C+V,GAAU,WACR,MAAO1T,MAGT2T,GAAuB,SAASzc,EAAMsD,GACpC,GAAI9F,GAAOC,KACP0M,EAAgB1M,KAAK8H,CAEzB,IAAK9H,KAAKyN,UAAV,CAQA,GALAlL,EAAOvC,KAAKif,GAAY1c,IAKnBvC,KAAK8H,EAAeoX,iBAAmBlf,KAAKmf,GAAc5c,GAE7D,WADAvC,MAAKyM,EAAU,OAAQ,+BAAgClK,EAOzDvC,MAAKyH,EAAelF,EAAK6c,WAAa7c,EAAK6c,SAAWpf,KAAKqf,MAG3Drf,KAAKwH,EAAYjF,EAEjBvC,KAAKyM,EAAU,QAAS,uBAAwBlK,EAEhD,IAAI+c,IACFC,eAAgB,IAChBC,cAAe,YAAcxf,KAAKqM,QAClCoT,WAAYzf,KAAK2H,EAGf3H,MAAKyO,IACP6Q,EAAKI,cAAgB1f,KAAKyO,EAG5B,IAAI/L,GAAYH,EAAKG,WAAaH,EAAKG,UAAUC,OAAO,EAItD3C,MAAK8H,EAAee,iBACpB7I,KAAK8H,EAAee,gBAAgBwE,QAEpCrN,KAAK4R,mBACH6D,SAAU,SACVzS,QAASN,GACJA,EAAUK,KAAOL,EAAUK,KAAO,KAAO,IAAML,EAAUI,MAC1DP,EAAKS,QACToc,SAAU7c,EAAK6c,SACfxZ,MAAOrD,EAAKqD,OAAS,SAIzB,IAAI2L,GAAMvR,KAAK4O,GACdlC,EAAc2G,WAAarT,KAAK2f,IAAc5e,KAAKf,MAClDuR,IAAKA,EACL+N,KAAMA,EACN/c,KAAMA,EACNiK,QAASE,EACTkT,UAAW,WACT7f,EAAKqK,IAELrK,EAAKwb,EAAc,WACjBhZ,KAAMA,EACN8R,IAAK9C,IAEP1L,GAAYA,KAEdga,QAAS,SAAiBlc,GACxB5D,EAAK0M,EAAU,QAAS,mCAAoC9I,GAExDA,EAAM+Y,SACR3c,EAAK+f,GAAiBnc,EAAM+Y,SAG9B3c,EAAKwb,EAAc,WACjBhZ,KAAMA,EACN8R,IAAK9C,IAEP5N,EAAQA,GAAS,GAAI/C,OAAM,sDAC3BiF,GAAYA,EAASlC,QAK3Boc,GAAc,SAASC,GAErB,GAAIzO,GAAMyO,EAAKzO,IAAM,IAAMnG,EAAU4U,EAAKV,MAEtCW,EAAmB,KACnBC,IAUJ,IARIF,EAAKxT,QAAQjE,UACf0X,EAAmBjgB,KAAKmgB,GAAcH,EAAKxT,QAAQjE,UAGjDyX,EAAKxT,QAAQ4T,kBACfF,EAA2BlgB,KAAKmgB,GAAcH,EAAKxT,QAAQ4T,kBAGzDzU,IAAiB,CACnBuU,EAAyB3L,KAAOtN,EAAU+Y,EAAKzd,KAE/C,IAAI8d,GAAsBtV,KAAgB/K,KAAKiJ,GAC3CqX,EAAevV,EAAYsV,EAAqBH,EAMpD,OAJID,KACFK,EAAa/X,QAAU0X,GAGlBjY,EACJuY,MAAMhP,EAAK+O,GACXjH,KAAK,SAASC,GACb,GAAIA,EAASkH,GACXR,EAAKJ,WAAaI,EAAKJ,gBAClB,CACL,GAAIjc,GAAQ,GAAI/C,OAAM,sBAAwB0Y,EAAST,OAGvDlV,GAAM+Y,QAAUpD,EAChB0G,EAAKH,SAAWG,EAAKH,QAAQlc,MAGhC,SAAS,WACRqc,EAAKH,SACHG,EAAKH,QAAQ,GAAIjf,OAAM,6CAI/B,GAAI8b,GAAU1U,EAAQqQ,gBAAkB,GAAIrQ,GAAQqQ,cACpD,IAAKqE,EAAL,CAGA,GAAI+D,GAAU,mBAAqB/D,IAAqC,mBAAnBgE,eAEhDD,KAED,mBAAqB/D,GACvBA,EAAQ1D,mBAAqB,WAC3B,GAA2B,IAAvB0D,EAAQ9D,WAEL,GAAuB,MAAnB8D,EAAQ7D,OACjBmH,EAAKJ,WAAaI,EAAKJ,gBAClB,IAAII,EAAKH,QAAS,CACvB,GAAIrI,GAAM,GAAI5W,OAAM,sBAAwB8b,EAAQ7D,OACpDrB,GAAIkF,QAAUA,EACdsD,EAAKH,QAAQrI,MAIjBkF,EAAU,GAAIgE,gBAGdnP,EAAMA,EAAIoP,QAAQ,WAAY,IAG1BX,EAAKJ,YACPlD,EAAQkE,OAASZ,EAAKJ,WAEpBI,EAAKH,UACPnD,EAAQhZ,QAAU,WAChB,GAAI8T,GAAM,GAAI5W,OAAM,oCACpB4W,GAAIkF,QAAUA,EACdsD,EAAKH,QAAQrI,MAKnBkF,EAAQmE,KAAK,OAAQtP,GAEjB0O,GACFnV,EAAKmV,EAAkB,SAAStT,EAAK7J,GACnC4Z,EAAQoE,iBAAiBnU,EAAK7J,KAIlC4Z,EAAQqE,KAAK9Z,EAAU+Y,EAAKzd,UAG9Bye,GAAe,SAASC,GACtB,GAAIC,KAEJ,KAAK,GAAIvU,KAAOsU,GACd,GAAIA,EAAK7J,eAAezK,GAAM,CAC5B,GAAI7J,GAAQme,EAAKtU,EACjBuU,GAAUvU,GAAwB,kBAAV7J,GAAuBA,IAAUA,EAI7D,MAAOoe,IAGTC,EAAW,SAASvb,GAGhB5F,KAAK0J,EAAwB9D,KAC5B5F,KAAKsM,OAAStM,KAAK8H,EAAewE,QAGnC/F,SAASvB,UAAUwB,MAAMzF,KACvBf,KAAK0J,EAAwB9D,GAC7B5F,KAAKyJ,KACFvD,MAAMnF,KAAKoF,UAAW,KAK/Bib,EAAe,SAASzU,EAAK5I,GACvBoD,EAAYpD,SACP/D,MAAK6H,EAAe8E,GAE3B3M,KAAK6H,EAAe8E,GAAO5B,EAAY/K,KAAK6H,EAAe8E,OAAY5I,KAM7E9D,EAAM+E,UAAUqc,QAAUphB,EAAM+E,UAAUqN,eAC1CpS,EAAM+E,UAAUsc,kBAAoBrhB,EAAM+E,UAAU+N,WAEpDtT,EAAOD,QAAUS,IAEdc,KAAKf,KAAuB,mBAAXF,QAAyBA,OAAyB,mBAATC,MAAuBA,KAAyB,mBAAXF,QAAyBA,aACxH0hB,GAAK,GAAGC,GAAK,GAAGnc,EAAI,EAAEG,EAAI,EAAEnC,EAAI,EAAEoe,EAAI,IAAIre,GAAG,SAASlC,EAAQzB,EAAOD,IACxE,SAAWM,GAOX,GAAI4hB,GAAmBxgB,EAAQ,GAG3B8G,EACgB,mBAAXnI,QACHA,OACkB,mBAAXC,GAAyBA,EAAyB,mBAATC,MAAuBA,QACzE4hB,EAAS3Z,EAAQ/H,MAEjBA,EAAQ,GAAIyhB,EAQhBzhB,GAAM2hB,WAAa,WAEjB,MADA5Z,GAAQ/H,MAAQ0hB,EACT1hB,GAGTA,EAAMwT,YAENhU,EAAOD,QAAUS,EAoCjBR,EAAOD,QAAQqiB,OAASH,IAErB3gB,KAAKf,KAAuB,mBAAXF,QAAyBA,OAAyB,mBAATC,MAAuBA,KAAyB,mBAAXF,QAAyBA,aACxH4G,EAAI,IAAIpD,GAAG,SAASnC,EAAQzB,EAAOD,IACtC,SAAWM,GAQX,QAAS0K,GAASsX,GAChB,MAAuB,gBAATA,IAA8B,OAATA,EAKrC,QAASvX,GAAQzH,GACf,UAAWmC,SAASlE,KAAK+B,IACvB,IAAK,iBACH,OAAO,CACT,KAAK,qBACH,OAAO,CACT,KAAK,wBACH,OAAO,CACT,SACE,MAAOA,aAAiBlC,QAI9B,QAAS8J,GAAa5H,GACpB,MAAOif,MAAoD,2BAAzB9c,SAASlE,KAAK+B,GAGlD,QAASqE,GAAY2a,GACnB,MAAgB,UAATA,EAGT,QAAShb,GAAWgb,GAClB,MAAuB,kBAATA,GAGhB,QAASrX,GAAcqX,GACrB,MAAgD,oBAAzC/c,OAAOC,UAAUC,SAASlE,KAAK+gB,GAGxC,QAASnX,GAASmX,GAChB,MAAgD,oBAAzC/c,OAAOC,UAAUC,SAASlE,KAAK+gB,GAGxC,QAASlX,GAAQkX,GACf,MAAgD,mBAAzC/c,OAAOC,UAAUC,SAASlE,KAAK+gB,GAGxC,QAASjX,GAAciX,GACrB,IAAKrX,EAAcqX,GAAO,OAAO,CAEjC,KAAK,GAAInN,KAAKmN,GACZ,GAAIA,EAAK1K,eAAezC,GACtB,OAAO,CAGX,QAAO,EAGT,QAASoN,KACP,IAEE,MADA,IAAIC,YAAW,KACR,EACP,MAAO9hB,GACP,OAAO,GAIX,QAASyL,KACP,KAAM,SAAW3D,IAAU,OAAO,CAElC,KAIE,MAHA,IAAIia,SACJ,GAAI9I,SAAQ,IACZ,GAAI+I,WACG,EACP,MAAOhiB,GACP,OAAO,GAQX,QAASmJ,KACP,IAAKsC,IAAiB,OAAO,CAE7B,KAKE,MAHA,IAAIwN,SAAQ,cACV/P,eAAgB,YAEX,EACP,MAAOlJ,GACP,OAAO,GAIX,QAASiiB,KACP,MAAwC,kBAA1BC,uBAGhB,QAAS9f,GAAgBuD,GACvB,QAASmN,GAAazQ,EAAMsE,GAC1B,GAAIwb,GAAiBxc,EAAStD,IAASA,CACvC,OAAIsE,GACKA,EAASwb,IAAmBA,EAE9BA,EAGT,MAAOrP,GAGT,QAASlI,GAAK+G,EAAKhM,GACjB,GAAIlF,GAAGoY,CAEP,IAAI5R,EAAY0K,EAAI7Q,QAClB,IAAKL,IAAKkR,GACJ3G,EAAO2G,EAAKlR,IACdkF,EAAS9E,KAAK,KAAMJ,EAAGkR,EAAIlR,QAK/B,IADAoY,EAAIlH,EAAI7Q,OAEN,IAAKL,EAAI,EAAGA,EAAIoY,EAAGpY,IACjBkF,EAAS9E,KAAK,KAAMJ,EAAGkR,EAAIlR,IAMnC,QAASoK,GAAYuX,EAAMC,GACzB,MAAKA,IAGLzX,EAAKyX,EAAM,SAAS5V,EAAK7J,GACvBwf,EAAK3V,GAAO7J,IAEPwf,GALEA,EAgBX,QAASrX,GAAa4G,GACpB,QAAK9M,OAAOyd,UAGLzd,OAAOyd,SAAS3Q,GAGzB,QAAS7G,GAAS+P,EAAK/N,GACrB,GAAmB,gBAARA,GACT,KAAM,IAAIpM,OAAM,yDAElB,OAAmB,gBAARma,IAA4B,IAAR/N,EACtB+N,EAEFA,EAAI/Z,QAAUgM,EAAM+N,EAAMA,EAAI7X,OAAO,EAAG8J,GAAO,IAUxD,QAAS9B,GAAOuX,EAAQ9V,GACtB,MAAO5H,QAAOC,UAAUoS,eAAerW,KAAK0hB,EAAQ9V,GAGtD,QAASxB,GAAWuX,GAQlB,IALA,GAGEC,GAHEC,KACFjiB,EAAI,EACJkiB,EAAMH,EAAS1hB,OAGVL,EAAIkiB,EAAKliB,IACdgiB,EAAUD,EAAS/hB,GACfgK,EAASgY,GAGXC,EAAQ/V,KAAK8V,EAAQhC,QAAQ,8BAA+B,SACnDgC,GAAWA,EAAQG,QAE5BF,EAAQ/V,KAAK8V,EAAQG,OAIzB,OAAO,IAAIC,QAAOH,EAAQI,KAAK,KAAM,KAGvC,QAAS5X,GAAU7K,GACjB,GAAI0iB,KAIJ,OAHAnY,GAAKvK,EAAG,SAASoM,EAAK7J,GACpBmgB,EAAMpW,KAAKiH,mBAAmBnH,GAAO,IAAMmH,mBAAmBhR,MAEzDmgB,EAAMD,KAAK,KAMpB,QAASvX,GAAS8F,GAChB,GAAmB,gBAARA,GAAkB,QAC7B,IAAI2R,GAAQ3R,EAAI2R,MAAM,kEAGlBC,EAAQD,EAAM,IAAM,GACpBE,EAAWF,EAAM,IAAM,EAC3B,QACE3M,SAAU2M,EAAM,GAChB1M,KAAM0M,EAAM,GACZ7U,KAAM6U,EAAM,GACZzM,SAAUyM,EAAM,GAAKC,EAAQC,GAGjC,QAAS/X,KACP,GAAIgY,GAASrb,EAAQqb,QAAUrb,EAAQsb,QAEvC,KAAKnc,EAAYkc,IAAWA,EAAOE,gBAAiB,CAGlD,GAAIC,GAAM,GAAIC,aAAY,EAC1BJ,GAAOE,gBAAgBC,GAGvBA,EAAI,GAAe,KAATA,EAAI,GAAc,MAE5BA,EAAI,GAAe,MAATA,EAAI,GAAe,KAE7B,IAAIE,GAAM,SAASC,GAEjB,IADA,GAAIC,GAAID,EAAI1e,SAAS,IACd2e,EAAE5iB,OAAS,GAChB4iB,EAAI,IAAMA,CAEZ,OAAOA,GAGT,OACEF,GAAIF,EAAI,IACRE,EAAIF,EAAI,IACRE,EAAIF,EAAI,IACRE,EAAIF,EAAI,IACRE,EAAIF,EAAI,IACRE,EAAIF,EAAI,IACRE,EAAIF,EAAI,IACRE,EAAIF,EAAI,IAIV,MAAO,mCAAmC7C,QAAQ,QAAS,SAASkD,GAClE,GAAIxjB,GAAqB,GAAhB0M,KAAK6R,SAAiB,EAC7BgF,EAAU,MAANC,EAAYxjB,EAAS,EAAJA,EAAW,CAClC,OAAOujB,GAAE3e,SAAS,MAYxB,QAASqG,GAAiBwY,GAWxB,IATA,GAOEC,GAPEC,EAAsB,EACxBC,EAAiB,GACjBC,KACAC,EAAS,EACTtB,EAAM,EACNuB,EAAY,MACZC,EAAYD,EAAUpjB,OAGjB8iB,GAAQK,IAAWH,IACxBD,EAAUO,EAAoBR,KAMhB,SAAZC,GACCI,EAAS,GAAKtB,EAAMqB,EAAIljB,OAASqjB,EAAYN,EAAQ/iB,QAAUijB,KAKlEC,EAAIrX,KAAKkX,GAETlB,GAAOkB,EAAQ/iB,OACf8iB,EAAOA,EAAKS,UAGd,OAAOL,GAAIxS,UAAUsR,KAAKoB,GAS5B,QAASE,GAAoBR,GAC3B,GACEU,GACAC,EACA9X,EACA+X,EACA/jB,EALEujB,IAOJ,KAAKJ,IAASA,EAAKlO,QACjB,MAAO,EAST,IANAsO,EAAIrX,KAAKiX,EAAKlO,QAAQR,eAClB0O,EAAK5b,IACPgc,EAAIrX,KAAK,IAAMiX,EAAK5b,IAGtBsc,EAAYV,EAAKU,UACbA,GAAa7Z,EAAS6Z,GAExB,IADAC,EAAUD,EAAUvY,MAAM,OACrBtL,EAAI,EAAGA,EAAI8jB,EAAQzjB,OAAQL,IAC9BujB,EAAIrX,KAAK,IAAM4X,EAAQ9jB,GAG3B,IAAIgkB,IAAiB,OAAQ,OAAQ,QAAS,MAC9C,KAAKhkB,EAAI,EAAGA,EAAIgkB,EAAc3jB,OAAQL,IACpCgM,EAAMgY,EAAchkB,GACpB+jB,EAAOZ,EAAKc,aAAajY,GACrB+X,GACFR,EAAIrX,KAAK,IAAMF,EAAM,KAAO+X,EAAO,KAGvC,OAAOR,GAAIlB,KAAK,IAMlB,QAAS6B,GAAgBpkB,EAAGqkB,GAC1B,WAAYrkB,IAAMqkB,GAMpB,QAASC,GAAgBtkB,EAAGqkB,GAC1B,MAAO3d,GAAY1G,IAAM0G,EAAY2d,GAMvC,QAASvZ,GAAgBqF,EAAKoU,GAC5B,OAAIH,EAAgBjU,EAAKoU,KAEzBpU,EAAMA,EAAIjO,OAAO,GACjBqiB,EAAMA,EAAIriB,OAAO,GAEbiO,EAAI7N,OAASiiB,EAAIjiB,MAAQ6N,EAAI9N,QAAUkiB,EAAIliB,SAG3CiiB,EAAgBnU,EAAIL,WAAYyU,EAAIzU,aAEjC/E,EAAiBoF,EAAIL,WAAYyU,EAAIzU,cAM9C,QAAS/E,GAAiByZ,EAAQC,GAChC,GAAIL,EAAgBI,EAAQC,GAAS,OAAO,CAE5C,IAAIC,GAAUF,EAAOzT,OACjB4T,EAAUF,EAAO1T,MAGrB,IAAI2T,EAAQnkB,SAAWokB,EAAQpkB,OAAQ,OAAO,CAI9C,KAAK,GADDP,GAAGqkB,EACEnkB,EAAI,EAAGA,EAAIwkB,EAAQnkB,OAAQL,IAGlC,GAFAF,EAAI0kB,EAAQxkB,GACZmkB,EAAIM,EAAQzkB,GAEVF,EAAEwb,WAAa6I,EAAE7I,UACjBxb,EAAEgb,SAAWqJ,EAAErJ,QACfhb,EAAE0b,QAAU2I,EAAE3I,OACd1b,EAAE,cAAgBqkB,EAAE,YAEpB,OAAO,CAEX,QAAO,EAUT,QAASpZ,GAAKmG,EAAKxN,EAAMghB,EAAaC,GACpC,GAAW,MAAPzT,EAAJ,CACA,GAAIiF,GAAOjF,EAAIxN,EACfwN,GAAIxN,GAAQghB,EAAYvO,GACxBjF,EAAIxN,GAAM+K,GAAY,EACtByC,EAAIxN,GAAMkL,EAAWuH,EACjBwO,GACFA,EAAMzY,MAAMgF,EAAKxN,EAAMyS,KAU3B,QAASzQ,GAASkf,EAAOC,GACvB,IAAK5a,EAAQ2a,GAAQ,MAAO,EAI5B,KAAK,GAFDE,MAEK9kB,EAAI,EAAGA,EAAI4kB,EAAMvkB,OAAQL,IAChC,IACE8kB,EAAO5Y,KAAK6Y,OAAOH,EAAM5kB,KACzB,MAAOT,GACPulB,EAAO5Y,KAAK,gCAIhB,MAAO4Y,GAAOzC,KAAKwC,GASrB,QAASG,GAAW7iB,GAClB,QAAS8iB,UAAU9iB,GAAOmJ,MAAM,SAASjL,OAG3C,QAAS6kB,GAAS/iB,GAChB,MAAO6iB,GAAW3e,KAAKC,UAAUnE,IAGnC,QAASgjB,GAAehjB,GACtB,GAAqB,gBAAVA,GAAoB,CAC7B,GAAIijB,GAAY,EAChB,OAAO/a,GAASlI,EAAOijB,GAClB,GACY,gBAAVjjB,IACU,iBAAVA,IACU,mBAAVA,GAEP,MAAOA,EAGT,IAAIC,GAAOgC,OAAOC,UAAUC,SAASlE,KAAK+B,EAG1C,OAAa,oBAATC,EAAmC,WAC1B,mBAATA,EAAkC,UACzB,sBAATA,EACKD,EAAMuB,KAAO,cAAgBvB,EAAMuB,KAAO,IAAM,aAElDvB,EAGT,QAASkjB,GAAgBljB,EAAOmjB,GAC9B,MAAc,KAAVA,EAAoBH,EAAehjB,GAEnC2H,EAAc3H,GACTiC,OAAOiM,KAAKlO,GAAOojB,OAAO,SAASC,EAAKxZ,GAE7C,MADAwZ,GAAIxZ,GAAOqZ,EAAgBljB,EAAM6J,GAAMsZ,EAAQ,GACxCE,OAEAnP,MAAMpM,QAAQ9H,GAChBA,EAAMsjB,IAAI,SAASC,GACxB,MAAOL,GAAgBK,EAAKJ,EAAQ,KAIjCH,EAAehjB,GAGxB,QAAS+I,GAAmB/J,EAAImkB,EAAOK,GACrC,IAAK7b,EAAc3I,GAAK,MAAOA,EAE/BmkB,GAAyB,gBAAVA,GAAqBM,EAAgCN,EACpEK,EAA2B,gBAAVL,GAAqBO,EAA+BF,CAErE,IAAIG,GAAaT,EAAgBlkB,EAAImkB,EAErC,OAAIJ,GAAS5e,EAAUwf,IAAeH,EAC7Bza,EAAmB/J,EAAImkB,EAAQ,GAGjCQ,EAGT,QAAS7a,GAAwBoF,EAAM+U,GACrC,GAAoB,gBAAT/U,IAAqC,gBAATA,GAAmB,MAAOA,GAAK/L,UACtE,KAAK+R,MAAMpM,QAAQoG,GAAO,MAAO,EAKjC,IAHAA,EAAOA,EAAK0V,OAAO,SAAS/Z,GAC1B,MAAsB,gBAARA,KAEI,IAAhBqE,EAAKhQ,OAAc,MAAO,sBAG9B,IADA+kB,EAAiC,gBAAdA,GAAyBY,EAA4BZ,EACpE/U,EAAK,GAAGhQ,QAAU+kB,EAAW,MAAO/U,GAAK,EAE7C,KAAK,GAAI4V,GAAW5V,EAAKhQ,OAAQ4lB,EAAW,EAAGA,IAAY,CACzD,GAAIH,GAAazV,EAAK9K,MAAM,EAAG0gB,GAAU5D,KAAK,KAC9C,MAAIyD,EAAWzlB,OAAS+kB,GACxB,MAAIa,KAAa5V,EAAKhQ,OAAeylB,EAC9BA,EAAa,IAGtB,MAAO,GAGT,QAAS3a,GAASyZ,EAAOvc,GAcvB,QAAS6d,GAAeC,GACtB,MAAIlc,GAAQkc,GACHA,EAAYV,IAAI,SAASC,GAC9B,MAAOQ,GAAeR,KAItB5b,EAAcqc,GACT/hB,OAAOiM,KAAK8V,GAAaZ,OAAO,SAASC,EAAKY,GAMnD,MAJEZ,GAAIY,GADFC,EAAe5V,KAAK2V,GACbE,EAEAJ,EAAeC,EAAYC,IAE/BZ,OAIJW,EA/BT,IAAKlc,EAAQ5B,IAAkB4B,EAAQ5B,IAAyC,IAAxBA,EAAahI,OACnE,MAAOukB,EAET,IAEI2B,GAFAF,EAAiB7b,EAAWnC,GAC5Bie,EAAe,UAGnB,KACEC,EAAYlgB,KAAK4L,MAAM3L,EAAUse,IACjC,MAAO4B,GACP,MAAO5B,GAwBT,MAAOsB,GAAeK,GAlkBxB,GAAIjgB,GAAY/F,EAAQ,IAEpB8G,EACgB,mBAAXnI,QACHA,OACkB,mBAAXC,GAAyBA,EAAyB,mBAATC,MAAuBA,QAgczEwmB,EAAgC,EAEhCC,EAA+B,MAC/BG,EAA4B,EA6HhClnB,GAAOD,SACLgL,SAAUA,EACVD,QAASA,EACTG,aAAcA,EACdvD,YAAaA,EACbL,WAAYA,EACZ2D,cAAeA,EACfE,SAAUA,EACVC,QAASA,EACTC,cAAeA,EACfkX,mBAAoBA,EACpBpW,cAAeA,EACftC,uBAAwBA,EACxB8Y,8BAA+BA,EAC/B7f,gBAAiBA,EACjBwI,KAAMA,EACNC,YAAaA,EACbC,SAAUA,EACVC,aAAcA,EACdC,OAAQA,EACRC,WAAYA,EACZC,UAAWA,EACXC,MAAOA,EACPC,iBAAkBA,EAClBgZ,oBAAqBA,EACrB/Y,gBAAiBA,EACjBC,iBAAkBA,EAClBC,SAAUA,EACVC,KAAMA,EACNrF,SAAUA,EACVwF,mBAAoBA,EACpBD,wBAAyBA,EACzBE,SAAUA,KAGT/K,KAAKf,KAAuB,mBAAXF,QAAyBA,OAAyB,mBAATC,MAAuBA,KAAyB,mBAAXF,QAAyBA,aACxH0hB,GAAK,KAAKE,GAAG,SAASvgB,EAAQzB,EAAOD,IACxC,SAAWM,GA+BX,QAASsnB,KACP,MAAwB,mBAAbjb,WAAiD,MAArBA,SAASlC,SAAyB,GAElEkC,SAASlC,SAASE,KAjC3B,GAAI1E,GAAQvE,EAAQ,GAYhBmJ,GACF7B,qBAAqB,EACrB8D,OAAO,GAILtE,EACgB,mBAAXnI,QACHA,OACkB,mBAAXC,GAAyBA,EAAyB,mBAATC,MAAuBA,QAGzEsnB,KAAYnhB,MACZohB,EAAmB,IAGnBC,EAAiB,yGA+CrBld,GAASqD,OAAS,WAUhB,QAASC,GAAU6Z,GACjBC,IACAC,EAAS7a,KAAK2a,GAOhB,QAASG,GAAYH,GACnB,IAAK,GAAI7mB,GAAI+mB,EAAS1mB,OAAS,EAAGL,GAAK,IAAKA,EACtC+mB,EAAS/mB,KAAO6mB,GAClBE,EAASE,OAAOjnB,EAAG,GAQzB,QAASknB,KACPC,IACAJ,KAOF,QAASK,GAAetX,EAAOuX,GAC7B,GAAItlB,GAAY,IAChB,KAAIslB,GAAkB3d,EAAS7B,oBAA/B,CAGA,IAAK,GAAI7H,KAAK+mB,GACZ,GAAIA,EAAStQ,eAAezW,GAC1B,IACE+mB,EAAS/mB,GAAG6F,MAAM,MAAOiK,GAAOoK,OAAOwM,EAAOtmB,KAAKoF,UAAW,KAC9D,MAAO8hB,GACPvlB,EAAYulB,EAKlB,GAAIvlB,EACF,KAAMA,IAiBV,QAASwlB,GAAsB9hB,EAAKmL,EAAK4W,EAAQC,EAAOtmB,GACtD,GAAI2O,GAAQ,KAER/N,EAAY+C,EAAMiF,aAAa5I,GAAMA,EAAG6B,MAAQ7B,EAEhDkB,EAAUyC,EAAMiF,aAAatE,GAAOA,EAAIpD,QAAUoD,CAEtD,IAAIiiB,EACFhe,EAASqG,kBAAkB4X,oCACzBD,EACA9W,EACA4W,EACAnlB,GAEFulB,QACK,IAAI7lB,GAAa+C,EAAM8E,QAAQ7H,GAMpC+N,EAAQpG,EAASqG,kBAAkBhO,GACnCqlB,EAAetX,GAAO,OACjB,CACL,GAOI+X,GAPAve,GACFsH,IAAKA,EACL2K,KAAMiM,EACN/L,OAAQgM,GAGN/jB,EAAOyK,MAGX,IAAkC,uBAA3B7J,SAASlE,KAAKiC,GAAgC,CACnD,GAAIwlB,GAASxlB,EAAQkgB,MAAMqE,EACvBiB,KACFnkB,EAAOmkB,EAAO,GACdxlB,EAAUwlB,EAAO,IAIrBve,EAAS4E,KAAOyY,EAEhB7W,GACEpM,KAAMA,EACNrB,QAASA,EACTuO,IAAK6V,IACL3W,OAAQxG,IAEV8d,EAAetX,GAAO,GAGxB,QAAIgY,GACKA,EAAmBjiB,MAAMxG,KAAMmG,WAM1C,QAASshB,KACHiB,IAGJD,EAAqBzgB,EAAQtE,QAC7BsE,EAAQtE,QAAUwkB,EAClBQ,GAA2B,GAG7B,QAASZ,KACFY,IAGL1gB,EAAQtE,QAAU+kB,EAClBC,GAA2B,EAC3BD,EAAqB3Z,QAGvB,QAASyZ,KACP,GAAII,GAAsBN,EACxBO,EAAYC,CACdA,GAAW,KACXR,EAAqB,KACrB/U,EAAgB,KAChByU,EAAevhB,MAAM,MAAOmiB,GAAqB,GAAO9N,OAAO+N,IAUjE,QAASlb,GAAO5L,EAAIgnB,GAClB,GAAI7iB,GAAOohB,EAAOtmB,KAAKoF,UAAW,EAClC,IAAIkiB,EAAoB,CACtB,GAAI/U,IAAkBxR,EACpB,MAEAymB,KAIJ,GAAI9X,GAAQpG,EAASqG,kBAAkB5O,EAevC,IAdAumB,EAAqB5X,EACrB6C,EAAgBxR,EAChB+mB,EAAW5iB,EAMXyO,WAAW,WACLpB,IAAkBxR,GACpBymB,KAED9X,EAAMsY,WAAa,IAAO,GAEzBD,KAAY,EACd,KAAMhnB,GA9LV,GA0DI2mB,GAAoBC,EA1DpBhB,KACFmB,EAAW,KACXvV,EAAgB,KAChB+U,EAAqB,IAkMvB,OAHA3a,GAAOC,UAAYA,EACnBD,EAAOia,YAAcA,EACrBja,EAAO8B,UAAYqY,EACZna,KAsDTrD,EAASqG,kBAAoB,WA4C3B,QAASsY,GAA+BlnB,GACtC,GAAwB,mBAAbA,GAAG2O,OAA0B3O,EAAG2O,MAA3C,CAiBA,IAAK,GALDwY,GACAC,EACAC,EAZA3P,EAAS,0IACT4P,EAAQ,wHAGRC,EAAQ,6JAERC,EAAY,gDACZC,EAAa,gCACbC,EAAQ1nB,EAAG2O,MAAMxE,MAAM,MACvBwE,KAMK9P,GAFO,sBAAsBkC,KAAKf,EAAGkB,SAEjC,GAAG+V,EAAIyQ,EAAMxoB,OAAQL,EAAIoY,IAAKpY,EAAG,CAC5C,GAAKuoB,EAAQ1P,EAAO3W,KAAK2mB,EAAM7oB,IAAM,CACnC,GAAI8oB,GAAWP,EAAM,IAAqC,IAA/BA,EAAM,GAAG3Q,QAAQ,UACxCmR,EAASR,EAAM,IAAmC,IAA7BA,EAAM,GAAG3Q,QAAQ,OACtCmR,KAAWT,EAAWM,EAAW1mB,KAAKqmB,EAAM,OAE9CA,EAAM,GAAKD,EAAS,GACpBC,EAAM,GAAKD,EAAS,GACpBC,EAAM,GAAKD,EAAS,IAEtBE,GACE5X,IAAMkY,EAAsB,KAAXP,EAAM,GACvBra,KAAMqa,EAAM,IAAM5B,EAClBrhB,KAAMwjB,GAAYP,EAAM,OACxBhN,KAAMgN,EAAM,IAAMA,EAAM,GAAK,KAC7B9M,OAAQ8M,EAAM,IAAMA,EAAM,GAAK,UAE5B,IAAKA,EAAQE,EAAMvmB,KAAK2mB,EAAM7oB,IACnCwoB,GACE5X,IAAK2X,EAAM,GACXra,KAAMqa,EAAM,IAAM5B,EAClBrhB,QACAiW,MAAOgN,EAAM,GACb9M,OAAQ8M,EAAM,IAAMA,EAAM,GAAK,UAE5B,CAAA,KAAKA,EAAQG,EAAMxmB,KAAK2mB,EAAM7oB,KAsBnC,QArBA,IAAI+oB,GAASR,EAAM,IAAMA,EAAM,GAAG3Q,QAAQ,aACtCmR,KAAWT,EAAWK,EAAUzmB,KAAKqmB,EAAM,MAE7CA,EAAM,GAAKD,EAAS,GACpBC,EAAM,GAAKD,EAAS,GACpBC,EAAM,GAAK,MACI,IAANvoB,GAAYuoB,EAAM,IAAiC,mBAApBpnB,GAAG6nB,eAK3ClZ,EAAM,GAAG2L,OAASta,EAAG6nB,aAAe,GAEtCR,GACE5X,IAAK2X,EAAM,GACXra,KAAMqa,EAAM,IAAM5B,EAClBrhB,KAAMijB,EAAM,GAAKA,EAAM,GAAGjd,MAAM,QAChCiQ,KAAMgN,EAAM,IAAMA,EAAM,GAAK,KAC7B9M,OAAQ8M,EAAM,IAAMA,EAAM,GAAK,OAM9BC,EAAQta,MAAQsa,EAAQjN,OAC3BiN,EAAQta,KAAOyY,GAGjB7W,EAAM5D,KAAKsc,GAGb,MAAK1Y,GAAMzP,QAKTqD,KAAMvC,EAAGuC,KACTrB,QAASlB,EAAGkB,QACZuO,IAAK6V,IACL3W,MAAOA,GAPA,MAwBX,QAAS6X,GAAoChN,EAAW/J,EAAK4W,EAAQnlB,GACnE,GAAI4mB,IACFrY,IAAKA,EACL2K,KAAMiM,EAGR,IAAIyB,EAAQrY,KAAOqY,EAAQ1N,KAAM,CAO/B,GANAZ,EAAUyN,YAAa,EAElBa,EAAQ/a,OACX+a,EAAQ/a,KAAOyY,GAGbhM,EAAU7K,MAAMzP,OAAS,GACvBsa,EAAU7K,MAAM,GAAGc,MAAQqY,EAAQrY,IAAK,CAC1C,GAAI+J,EAAU7K,MAAM,GAAGyL,OAAS0N,EAAQ1N,KACtC,OAAO,CACF,KACJZ,EAAU7K,MAAM,GAAGyL,MACpBZ,EAAU7K,MAAM,GAAG5B,OAAS+a,EAAQ/a,KAGpC,MADAyM,GAAU7K,MAAM,GAAGyL,KAAO0N,EAAQ1N,MAC3B,EAOb,MAFAZ,GAAU7K,MAAMoZ,QAAQD,GACxBtO,EAAUwO,SAAU,GACb,EAKT,MAHExO,GAAUyN,YAAa,GAGlB,EAYT,QAASgB,GAAsCjoB,EAAImkB,GASjD,IACE,GALAiD,GACAc,EALEC,EAAe,qEACjBxZ,KACAyZ,KACAC,GAAY,EAMRC,EAAOL,EAAsCM,OACjDD,IAASD,EACTC,EAAOA,EAAKC,OAEZ,GAAID,IAAS1Z,GAAqB0Z,IAAS/f,EAASqD,OAApD,CAkBA,GAbAsc,GACEzY,IAAK,KACL1C,KAAMyY,EACNpL,KAAM,KACNE,OAAQ,MAGNgO,EAAK/lB,KACP2lB,EAAKnb,KAAOub,EAAK/lB,MACP6kB,EAAQe,EAAapnB,KAAKunB,EAAKnlB,eACzC+kB,EAAKnb,KAAOqa,EAAM;AAGK,mBAAdc,GAAKnb,KACd,IACEmb,EAAKnb,KAAOqa,EAAM3D,MAAM+E,UAAU,EAAGpB,EAAM3D,MAAMhN,QAAQ,MACzD,MAAOrY,IAGPgqB,EAAM,GAAKE,GACbD,GAAY,EAEZD,EAAM,GAAKE,IAAQ,EAGrB3Z,EAAM5D,KAAKmd,GAGT/D,GAGFxV,EAAMmX,OAAO,EAAG3B,EAGlB,IAAIhU,IACF5N,KAAMvC,EAAGuC,KACTrB,QAASlB,EAAGkB,QACZuO,IAAK6V,IACL3W,MAAOA,EAQT,OANA6X,GACErW,EACAnQ,EAAGyoB,WAAazoB,EAAG0oB,SACnB1oB,EAAGoa,MAAQpa,EAAG2oB,WACd3oB,EAAGkB,SAAWlB,EAAG4oB,aAEZzY,EAQT,QAASvB,GAAkB5O,EAAImkB,GAC7B,GAAIxV,GAAQ,IACZwV,GAAiB,MAATA,EAAgB,GAAKA,CAE7B,KAEE,GADAxV,EAAQuY,EAA+BlnB,GAErC,MAAO2O,GAET,MAAOvQ,GACP,GAAImK,EAASiC,MACX,KAAMpM,GAIV,IAEE,GADAuQ,EAAQsZ,EAAsCjoB,EAAImkB,EAAQ,GAExD,MAAOxV,GAET,MAAOvQ,GACP,GAAImK,EAASiC,MACX,KAAMpM,GAGV,OACEmE,KAAMvC,EAAGuC,KACTrB,QAASlB,EAAGkB,QACZuO,IAAK6V,KAOT,MAHA1W,GAAkB4X,oCAAsCA,EACxD5X,EAAkBsY,+BAAiCA,EAE5CtY,KAGTjR,EAAOD,QAAU6K,IAEdtJ,KAAKf,KAAuB,mBAAXF,QAAyBA,OAAyB,mBAATC,MAAuBA,KAAyB,mBAAXF,QAAyBA,aACxHwD,EAAI,IAAIke,IAAI,SAASrgB,EAAQzB,EAAOD,GAevC,QAAS+Y,GAAQoS,EAAUC,GACzB,IAAK,GAAIjqB,GAAI,EAAGA,EAAIgqB,EAAS3pB,SAAUL,EACrC,GAAIgqB,EAAShqB,KAAOiqB,EAAQ,MAAOjqB,EAErC,UAGF,QAASsG,GAAU4K,EAAKgZ,EAAUC,EAAQC,GACxC,MAAO/jB,MAAKC,UAAU4K,EAAKmZ,EAAWH,EAAUE,GAAgBD,GAIlE,QAASG,GAAenoB,GACtB,GAAI0U,IAEF/G,MAAO3N,EAAM2N,MACbzN,QAASF,EAAME,QACfqB,KAAMvB,EAAMuB,KAGd,KAAK,GAAI1D,KAAKmC,GACRiC,OAAOC,UAAUoS,eAAerW,KAAK+B,EAAOnC,KAC9C6W,EAAI7W,GAAKmC,EAAMnC,GAInB,OAAO6W,GAGT,QAASwT,GAAWH,EAAUE,GAC5B,GAAIta,MACAO,IAWJ,OATqB,OAAjB+Z,IACFA,EAAgB,SAASpe,EAAK7J,GAC5B,MAAI2N,GAAM,KAAO3N,EACR,eAEF,eAAiBkO,EAAK9K,MAAM,EAAGqS,EAAQ9H,EAAO3N,IAAQkgB,KAAK,KAAO,MAItE,SAASrW,EAAK7J,GACnB,GAAI2N,EAAMzP,OAAS,EAAG,CACpB,GAAIkqB,GAAU3S,EAAQ9H,EAAOzQ,OAC5BkrB,EAAUza,EAAMmX,OAAOsD,EAAU,GAAKza,EAAM5D,KAAK7M,OACjDkrB,EAAUla,EAAK4W,OAAOsD,EAASC,EAAAA,EAAUxe,GAAOqE,EAAKnE,KAAKF,IAEtD4L,EAAQ9H,EAAO3N,KAClBA,EAAQioB,EAAchqB,KAAKf,KAAM2M,EAAK7J,QAGxC2N,GAAM5D,KAAK/J,EAGb,OAAmB,OAAZ+nB,EACH/nB,YAAiBlC,OAAQqqB,EAAenoB,GAASA,EACjD+nB,EAAS9pB,KAAKf,KAAM2M,EAAK7J,IA5DjCtD,EAAUC,EAAOD,QAAUyH,EAC3BzH,EAAQ4rB,aAAeJ,OA+DjBxJ,IAAI,SAAStgB,EAAQzB,EAAOD,GAwBlC,QAAS6rB,GAAQC,EAAGC,GAClB,GAAIC,IAAW,MAAJF,IAAmB,MAAJC,GACtBE,GAAOH,GAAK,KAAOC,GAAK,KAAOC,GAAO,GAC1C,OAAQC,IAAO,GAAa,MAAND,EAMxB,QAASE,GAAc/H,EAAKgI,GAC1B,MAAQhI,IAAOgI,EAAQhI,IAAS,GAAKgI,EAMvC,QAASC,GAAOC,EAAGprB,EAAGqkB,EAAGwG,EAAGhrB,EAAGH,GAC7B,MAAOkrB,GAAQK,EAAcL,EAAQA,EAAQ5qB,EAAGorB,GAAIR,EAAQC,EAAGnrB,IAAKG,GAAIwkB,GAE1E,QAASgH,GAAMrrB,EAAGqkB,EAAGjB,EAAGkI,EAAGT,EAAGhrB,EAAGH,GAC/B,MAAOyrB,GAAQ9G,EAAIjB,GAAOiB,EAAIiH,EAAItrB,EAAGqkB,EAAGwG,EAAGhrB,EAAGH,GAEhD,QAAS6rB,GAAMvrB,EAAGqkB,EAAGjB,EAAGkI,EAAGT,EAAGhrB,EAAGH,GAC/B,MAAOyrB,GAAQ9G,EAAIiH,EAAMlI,GAAKkI,EAAItrB,EAAGqkB,EAAGwG,EAAGhrB,EAAGH,GAEhD,QAAS8rB,GAAMxrB,EAAGqkB,EAAGjB,EAAGkI,EAAGT,EAAGhrB,EAAGH,GAC/B,MAAOyrB,GAAO9G,EAAIjB,EAAIkI,EAAGtrB,EAAGqkB,EAAGwG,EAAGhrB,EAAGH,GAEvC,QAAS+rB,GAAMzrB,EAAGqkB,EAAGjB,EAAGkI,EAAGT,EAAGhrB,EAAGH,GAC/B,MAAOyrB,GAAO/H,GAAKiB,GAAKiH,GAAItrB,EAAGqkB,EAAGwG,EAAGhrB,EAAGH,GAM1C,QAASgsB,GAAQb,EAAGzI,GAElByI,EAAEzI,GAAO,IAAM,KAASA,EAAM,GAC9ByI,GAAKzI,EAAM,KAAQ,GAAM,GAAK,IAAMA,CAEpC,IAAIliB,GACAyrB,EACAC,EACAC,EACAC,EACA9rB,EAAI,WACJqkB,aACAjB,cACAkI,EAAI,SAER,KAAKprB,EAAI,EAAGA,EAAI2qB,EAAEtqB,OAAQL,GAAK,GAC7ByrB,EAAO3rB,EACP4rB,EAAOvH,EACPwH,EAAOzI,EACP0I,EAAOR,EAEPtrB,EAAIqrB,EAAMrrB,EAAGqkB,EAAGjB,EAAGkI,EAAGT,EAAE3qB,GAAI,cAC5BorB,EAAID,EAAMC,EAAGtrB,EAAGqkB,EAAGjB,EAAGyH,EAAE3qB,EAAI,GAAI,eAChCkjB,EAAIiI,EAAMjI,EAAGkI,EAAGtrB,EAAGqkB,EAAGwG,EAAE3qB,EAAI,GAAI,GAAI,WACpCmkB,EAAIgH,EAAMhH,EAAGjB,EAAGkI,EAAGtrB,EAAG6qB,EAAE3qB,EAAI,GAAI,gBAChCF,EAAIqrB,EAAMrrB,EAAGqkB,EAAGjB,EAAGkI,EAAGT,EAAE3qB,EAAI,GAAI,cAChCorB,EAAID,EAAMC,EAAGtrB,EAAGqkB,EAAGjB,EAAGyH,EAAE3qB,EAAI,GAAI,GAAI,YACpCkjB,EAAIiI,EAAMjI,EAAGkI,EAAGtrB,EAAGqkB,EAAGwG,EAAE3qB,EAAI,GAAI,gBAChCmkB,EAAIgH,EAAMhH,EAAGjB,EAAGkI,EAAGtrB,EAAG6qB,EAAE3qB,EAAI,GAAI,cAChCF,EAAIqrB,EAAMrrB,EAAGqkB,EAAGjB,EAAGkI,EAAGT,EAAE3qB,EAAI,GAAI,EAAG,YACnCorB,EAAID,EAAMC,EAAGtrB,EAAGqkB,EAAGjB,EAAGyH,EAAE3qB,EAAI,GAAI,gBAChCkjB,EAAIiI,EAAMjI,EAAGkI,EAAGtrB,EAAGqkB,EAAGwG,EAAE3qB,EAAI,IAAK,WACjCmkB,EAAIgH,EAAMhH,EAAGjB,EAAGkI,EAAGtrB,EAAG6qB,EAAE3qB,EAAI,IAAK,gBACjCF,EAAIqrB,EAAMrrB,EAAGqkB,EAAGjB,EAAGkI,EAAGT,EAAE3qB,EAAI,IAAK,EAAG,YACpCorB,EAAID,EAAMC,EAAGtrB,EAAGqkB,EAAGjB,EAAGyH,EAAE3qB,EAAI,IAAK,cACjCkjB,EAAIiI,EAAMjI,EAAGkI,EAAGtrB,EAAGqkB,EAAGwG,EAAE3qB,EAAI,IAAK,gBACjCmkB,EAAIgH,EAAMhH,EAAGjB,EAAGkI,EAAGtrB,EAAG6qB,EAAE3qB,EAAI,IAAK,GAAI,YAErCF,EAAIurB,EAAMvrB,EAAGqkB,EAAGjB,EAAGkI,EAAGT,EAAE3qB,EAAI,GAAI,cAChCorB,EAAIC,EAAMD,EAAGtrB,EAAGqkB,EAAGjB,EAAGyH,EAAE3qB,EAAI,GAAI,eAChCkjB,EAAImI,EAAMnI,EAAGkI,EAAGtrB,EAAGqkB,EAAGwG,EAAE3qB,EAAI,IAAK,GAAI,WACrCmkB,EAAIkH,EAAMlH,EAAGjB,EAAGkI,EAAGtrB,EAAG6qB,EAAE3qB,GAAI,eAC5BF,EAAIurB,EAAMvrB,EAAGqkB,EAAGjB,EAAGkI,EAAGT,EAAE3qB,EAAI,GAAI,cAChCorB,EAAIC,EAAMD,EAAGtrB,EAAGqkB,EAAGjB,EAAGyH,EAAE3qB,EAAI,IAAK,EAAG,UACpCkjB,EAAImI,EAAMnI,EAAGkI,EAAGtrB,EAAGqkB,EAAGwG,EAAE3qB,EAAI,IAAK,eACjCmkB,EAAIkH,EAAMlH,EAAGjB,EAAGkI,EAAGtrB,EAAG6qB,EAAE3qB,EAAI,GAAI,eAChCF,EAAIurB,EAAMvrB,EAAGqkB,EAAGjB,EAAGkI,EAAGT,EAAE3qB,EAAI,GAAI,EAAG,WACnCorB,EAAIC,EAAMD,EAAGtrB,EAAGqkB,EAAGjB,EAAGyH,EAAE3qB,EAAI,IAAK,eACjCkjB,EAAImI,EAAMnI,EAAGkI,EAAGtrB,EAAGqkB,EAAGwG,EAAE3qB,EAAI,GAAI,eAChCmkB,EAAIkH,EAAMlH,EAAGjB,EAAGkI,EAAGtrB,EAAG6qB,EAAE3qB,EAAI,GAAI,GAAI,YACpCF,EAAIurB,EAAMvrB,EAAGqkB,EAAGjB,EAAGkI,EAAGT,EAAE3qB,EAAI,IAAK,eACjCorB,EAAIC,EAAMD,EAAGtrB,EAAGqkB,EAAGjB,EAAGyH,EAAE3qB,EAAI,GAAI,aAChCkjB,EAAImI,EAAMnI,EAAGkI,EAAGtrB,EAAGqkB,EAAGwG,EAAE3qB,EAAI,GAAI,GAAI,YACpCmkB,EAAIkH,EAAMlH,EAAGjB,EAAGkI,EAAGtrB,EAAG6qB,EAAE3qB,EAAI,IAAK,gBAEjCF,EAAIwrB,EAAMxrB,EAAGqkB,EAAGjB,EAAGkI,EAAGT,EAAE3qB,EAAI,GAAI,WAChCorB,EAAIE,EAAMF,EAAGtrB,EAAGqkB,EAAGjB,EAAGyH,EAAE3qB,EAAI,GAAI,gBAChCkjB,EAAIoI,EAAMpI,EAAGkI,EAAGtrB,EAAGqkB,EAAGwG,EAAE3qB,EAAI,IAAK,GAAI,YACrCmkB,EAAImH,EAAMnH,EAAGjB,EAAGkI,EAAGtrB,EAAG6qB,EAAE3qB,EAAI,IAAK,cACjCF,EAAIwrB,EAAMxrB,EAAGqkB,EAAGjB,EAAGkI,EAAGT,EAAE3qB,EAAI,GAAI,eAChCorB,EAAIE,EAAMF,EAAGtrB,EAAGqkB,EAAGjB,EAAGyH,EAAE3qB,EAAI,GAAI,GAAI,YACpCkjB,EAAIoI,EAAMpI,EAAGkI,EAAGtrB,EAAGqkB,EAAGwG,EAAE3qB,EAAI,GAAI,eAChCmkB,EAAImH,EAAMnH,EAAGjB,EAAGkI,EAAGtrB,EAAG6qB,EAAE3qB,EAAI,IAAK,gBACjCF,EAAIwrB,EAAMxrB,EAAGqkB,EAAGjB,EAAGkI,EAAGT,EAAE3qB,EAAI,IAAK,EAAG,WACpCorB,EAAIE,EAAMF,EAAGtrB,EAAGqkB,EAAGjB,EAAGyH,EAAE3qB,GAAI,eAC5BkjB,EAAIoI,EAAMpI,EAAGkI,EAAGtrB,EAAGqkB,EAAGwG,EAAE3qB,EAAI,GAAI,eAChCmkB,EAAImH,EAAMnH,EAAGjB,EAAGkI,EAAGtrB,EAAG6qB,EAAE3qB,EAAI,GAAI,GAAI,UACpCF,EAAIwrB,EAAMxrB,EAAGqkB,EAAGjB,EAAGkI,EAAGT,EAAE3qB,EAAI,GAAI,cAChCorB,EAAIE,EAAMF,EAAGtrB,EAAGqkB,EAAGjB,EAAGyH,EAAE3qB,EAAI,IAAK,eACjCkjB,EAAIoI,EAAMpI,EAAGkI,EAAGtrB,EAAGqkB,EAAGwG,EAAE3qB,EAAI,IAAK,GAAI,WACrCmkB,EAAImH,EAAMnH,EAAGjB,EAAGkI,EAAGtrB,EAAG6qB,EAAE3qB,EAAI,GAAI,eAEhCF,EAAIyrB,EAAMzrB,EAAGqkB,EAAGjB,EAAGkI,EAAGT,EAAE3qB,GAAI,cAC5BorB,EAAIG,EAAMH,EAAGtrB,EAAGqkB,EAAGjB,EAAGyH,EAAE3qB,EAAI,GAAI,GAAI,YACpCkjB,EAAIqI,EAAMrI,EAAGkI,EAAGtrB,EAAGqkB,EAAGwG,EAAE3qB,EAAI,IAAK,gBACjCmkB,EAAIoH,EAAMpH,EAAGjB,EAAGkI,EAAGtrB,EAAG6qB,EAAE3qB,EAAI,GAAI,cAChCF,EAAIyrB,EAAMzrB,EAAGqkB,EAAGjB,EAAGkI,EAAGT,EAAE3qB,EAAI,IAAK,EAAG,YACpCorB,EAAIG,EAAMH,EAAGtrB,EAAGqkB,EAAGjB,EAAGyH,EAAE3qB,EAAI,GAAI,gBAChCkjB,EAAIqI,EAAMrI,EAAGkI,EAAGtrB,EAAGqkB,EAAGwG,EAAE3qB,EAAI,IAAK,aACjCmkB,EAAIoH,EAAMpH,EAAGjB,EAAGkI,EAAGtrB,EAAG6qB,EAAE3qB,EAAI,GAAI,gBAChCF,EAAIyrB,EAAMzrB,EAAGqkB,EAAGjB,EAAGkI,EAAGT,EAAE3qB,EAAI,GAAI,EAAG,YACnCorB,EAAIG,EAAMH,EAAGtrB,EAAGqkB,EAAGjB,EAAGyH,EAAE3qB,EAAI,IAAK,cACjCkjB,EAAIqI,EAAMrI,EAAGkI,EAAGtrB,EAAGqkB,EAAGwG,EAAE3qB,EAAI,GAAI,gBAChCmkB,EAAIoH,EAAMpH,EAAGjB,EAAGkI,EAAGtrB,EAAG6qB,EAAE3qB,EAAI,IAAK,GAAI,YACrCF,EAAIyrB,EAAMzrB,EAAGqkB,EAAGjB,EAAGkI,EAAGT,EAAE3qB,EAAI,GAAI,cAChCorB,EAAIG,EAAMH,EAAGtrB,EAAGqkB,EAAGjB,EAAGyH,EAAE3qB,EAAI,IAAK,gBACjCkjB,EAAIqI,EAAMrI,EAAGkI,EAAGtrB,EAAGqkB,EAAGwG,EAAE3qB,EAAI,GAAI,GAAI,WACpCmkB,EAAIoH,EAAMpH,EAAGjB,EAAGkI,EAAGtrB,EAAG6qB,EAAE3qB,EAAI,GAAI,eAEhCF,EAAI4qB,EAAQ5qB,EAAG2rB,GACftH,EAAIuG,EAAQvG,EAAGuH,GACfxI,EAAIwH,EAAQxH,EAAGyI,GACfP,EAAIV,EAAQU,EAAGQ,EAEjB,QAAQ9rB,EAAGqkB,EAAGjB,EAAGkI,GAMnB,QAASS,GAAUjH,GACjB,GAAI5kB,GACA8kB,EAAS,GACTgH,EAA0B,GAAflH,EAAMvkB,MACrB,KAAKL,EAAI,EAAGA,EAAI8rB,EAAU9rB,GAAK,EAC7B8kB,GAAUC,OAAOgH,aAAcnH,EAAM5kB,GAAK,KAAQA,EAAI,GAAO,IAE/D,OAAO8kB,GAOT,QAASkH,GAAUpH,GACjB,GAAI5kB,GACA8kB,IAEJ,KADAA,GAAQF,EAAMvkB,QAAU,GAAK,GAAK8N,OAC7BnO,EAAI,EAAGA,EAAI8kB,EAAOzkB,OAAQL,GAAK,EAClC8kB,EAAO9kB,GAAK,CAEd,IAAIisB,GAAyB,EAAfrH,EAAMvkB,MACpB,KAAKL,EAAI,EAAGA,EAAIisB,EAASjsB,GAAK,EAC5B8kB,EAAO9kB,GAAK,KAAiC,IAA1B4kB,EAAMsH,WAAWlsB,EAAI,KAAeA,EAAI,EAE7D,OAAO8kB,GAMT,QAASqH,GAAQxsB,GACf,MAAOksB,GAAUL,EAAQQ,EAAUrsB,GAAe,EAAXA,EAAEU,SAM3C,QAAS+rB,GAAYpgB,EAAKpK,GACxB,GAAI5B,GAIAsgB,EAHA+L,EAAOL,EAAUhgB,GACjBsgB,KACAC,IAMJ,KAJAD,EAAK,IAAMC,EAAK,IAAMpe,OAClBke,EAAKhsB,OAAS,KAChBgsB,EAAOb,EAAQa,EAAmB,EAAbrgB,EAAI3L,SAEtBL,EAAI,EAAGA,EAAI,GAAIA,GAAK,EACvBssB,EAAKtsB,GAAe,UAAVqsB,EAAKrsB,GACfusB,EAAKvsB,GAAe,WAAVqsB,EAAKrsB,EAGjB,OADAsgB,GAAOkL,EAAQc,EAAKpS,OAAO8R,EAAUpqB,IAAQ,IAAoB,EAAdA,EAAKvB,QACjDwrB,EAAUL,EAAQe,EAAKrS,OAAOoG,GAAO,MAM9C,QAASkM,GAAS5H,GAChB,GAEI+F,GACA3qB,EAHAysB,EAAS,mBACT3H,EAAS,EAGb,KAAK9kB,EAAI,EAAGA,EAAI4kB,EAAMvkB,OAAQL,GAAK,EACjC2qB,EAAI/F,EAAMsH,WAAWlsB,GACrB8kB,GAAU2H,EAAOC,OAAQ/B,IAAM,EAAK,IAAQ8B,EAAOC,OAAW,GAAJ/B,EAE5D,OAAO7F,GAMT,QAAS6H,GAAa/H,GACpB,MAAOgI,UAASzZ,mBAAmByR,IAMrC,QAASiI,GAAOltB,GACd,MAAOwsB,GAAQQ,EAAahtB,IAE9B,QAASmtB,GAAOntB,GACd,MAAO6sB,GAASK,EAAOltB,IAEzB,QAASotB,GAAW3G,EAAGgF,GACrB,MAAOgB,GAAYO,EAAavG,GAAIuG,EAAavB,IAEnD,QAAS4B,GAAW5G,EAAGgF,GACrB,MAAOoB,GAASO,EAAW3G,EAAGgF,IAGhC,QAASzhB,GAAIsjB,EAAQjhB,EAAKkhB,GACxB,MAAKlhB,GAMAkhB,EAGEH,EAAW/gB,EAAKihB,GAFdD,EAAWhhB,EAAKihB,GANlBC,EAGEL,EAAOI,GAFLH,EAAOG,GAUpBnuB,EAAOD,QAAU8K,YAEN,EAAE,EAAE,EAAE,IAAI","file":"raven.min.js"} \ No newline at end of file diff --git a/dist/angular,ember/raven.js b/dist/angular,ember/raven.js index 7abbfb2e9850..3b96cfd9020b 100644 --- a/dist/angular,ember/raven.js +++ b/dist/angular,ember/raven.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.22.2 (1b6187b) | github.com/getsentry/raven-js */ +/*! Raven.js 3.24.2 (540f32b) | github.com/getsentry/raven-js */ /* * Includes TraceKit @@ -10,3231 +10,4005 @@ * */ -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : - typeof define === 'function' && define.amd ? define(factory) : - (global.Raven = factory()); -}(this, (function () { 'use strict'; - -var commonjsGlobal = typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; +(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.Raven = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o href parsing trick because React Native and other -// environments where DOM might not be available - - -function parseUrl$1(url) { - if (typeof url !== 'string') return {}; - var match = url.match(/^(([^:\/?#]+):)?(\/\/([^\/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?$/); // coerce to undefined values to empty string so we don't get 'undefined' - - var query = match[6] || ''; - var fragment = match[8] || ''; - return { - protocol: match[2], - host: match[4], - path: match[5], - relative: match[5] + query + fragment // everything minus origin - +// First, check for JSON support +// If there is no JSON, we no-op the core features of Raven +// since JSON is required to encode the payload +function Raven() { + this._hasJSON = !!(typeof JSON === 'object' && JSON.stringify); + // Raven can run in contexts where there's no document (react-native) + this._hasDocument = !isUndefined(_document); + this._hasNavigator = !isUndefined(_navigator); + this._lastCapturedException = null; + this._lastData = null; + this._lastEventId = null; + this._globalServer = null; + this._globalKey = null; + this._globalProject = null; + this._globalContext = {}; + this._globalOptions = { + // SENTRY_RELEASE can be injected by https://github.com/getsentry/sentry-webpack-plugin + release: _window.SENTRY_RELEASE && _window.SENTRY_RELEASE.id, + logger: 'javascript', + ignoreErrors: [], + ignoreUrls: [], + whitelistUrls: [], + includePaths: [], + headers: null, + collectWindowErrors: true, + captureUnhandledRejections: true, + maxMessageLength: 0, + // By default, truncates URL values to 250 chars + maxUrlLength: 250, + stackTraceLimit: 50, + autoBreadcrumbs: true, + instrument: true, + sampleRate: 1, + sanitizeKeys: [] }; -} - -function uuid4$1() { - var crypto = _window$3.crypto || _window$3.msCrypto; - - if (!isUndefined$1(crypto) && crypto.getRandomValues) { - // Use window.crypto API if available - // eslint-disable-next-line no-undef - var arr = new Uint16Array(8); - crypto.getRandomValues(arr); // set 4 in byte 7 - - arr[3] = arr[3] & 0xfff | 0x4000; // set 2 most significant bits of byte 9 to '10' - - arr[4] = arr[4] & 0x3fff | 0x8000; - - var pad = function pad(num) { - var v = num.toString(16); - - while (v.length < 4) { - v = '0' + v; - } - - return v; - }; + this._fetchDefaults = { + method: 'POST', + keepalive: true, + // Despite all stars in the sky saying that Edge supports old draft syntax, aka 'never', 'always', 'origin' and 'default + // https://caniuse.com/#feat=referrer-policy + // It doesn't. And it throw exception instead of ignoring this parameter... + // REF: https://github.com/getsentry/raven-js/issues/1233 + referrerPolicy: supportsReferrerPolicy() ? 'origin' : '' + }; + this._ignoreOnError = 0; + this._isRavenInstalled = false; + this._originalErrorStackTraceLimit = Error.stackTraceLimit; + // capture references to window.console *and* all its methods first + // before the console plugin has a chance to monkey patch + this._originalConsole = _window.console || {}; + this._originalConsoleMethods = {}; + this._plugins = []; + this._startTime = now(); + this._wrappedBuiltIns = []; + this._breadcrumbs = []; + this._lastCapturedEvent = null; + this._keypressTimeout; + this._location = _window.location; + this._lastHref = this._location && this._location.href; + this._resetBackoff(); - return pad(arr[0]) + pad(arr[1]) + pad(arr[2]) + pad(arr[3]) + pad(arr[4]) + pad(arr[5]) + pad(arr[6]) + pad(arr[7]); - } else { - // http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/2117523#2117523 - return 'xxxxxxxxxxxx4xxxyxxxxxxxxxxxxxxx'.replace(/[xy]/g, function (c) { - var r = Math.random() * 16 | 0, - v = c === 'x' ? r : r & 0x3 | 0x8; - return v.toString(16); - }); + // eslint-disable-next-line guard-for-in + for (var method in this._originalConsole) { + this._originalConsoleMethods[method] = this._originalConsole[method]; } } -/** - * Given a child DOM element, returns a query-selector statement describing that - * and its ancestors - * e.g. [HTMLElement] => body > div > input#foo.btn[name=baz] - * @param elem - * @returns {string} - */ +/* + * The core Raven singleton + * + * @this {Raven} + */ -function htmlTreeAsString$1(elem) { - /* eslint no-extra-parens:0*/ - var MAX_TRAVERSE_HEIGHT = 5, - MAX_OUTPUT_LEN = 80, - out = [], - height = 0, - len = 0, - separator = ' > ', - sepLength = separator.length, - nextStr; - - while (elem && height++ < MAX_TRAVERSE_HEIGHT) { - nextStr = htmlElementAsString(elem); // bail out if - // - nextStr is the 'html' element - // - the length of the string that would be created exceeds MAX_OUTPUT_LEN - // (ignore this limit if we are on the first iteration) +Raven.prototype = { + // Hardcode version string so that raven source can be loaded directly via + // webpack (using a build step causes webpack #1617). Grunt verifies that + // this value matches package.json during build. + // See: https://github.com/getsentry/raven-js/issues/465 + VERSION: '3.24.2', - if (nextStr === 'html' || height > 1 && len + out.length * sepLength + nextStr.length >= MAX_OUTPUT_LEN) { - break; - } + debug: false, - out.push(nextStr); - len += nextStr.length; - elem = elem.parentNode; - } + TraceKit: TraceKit, // alias to TraceKit - return out.reverse().join(separator); -} -/** - * Returns a simple, query-selector representation of a DOM element - * e.g. [HTMLElement] => input#foo.btn[name=baz] - * @param HTMLElement - * @returns {string} - */ + /* + * Configure Raven with a DSN and extra options + * + * @param {string} dsn The public Sentry DSN + * @param {object} options Set of global options [optional] + * @return {Raven} + */ + config: function(dsn, options) { + var self = this; + if (self._globalServer) { + this._logDebug('error', 'Error: Raven has already been configured'); + return self; + } + if (!dsn) return self; -function htmlElementAsString(elem) { - var out = [], - className, - classes, - key, - attr, - i; + var globalOptions = self._globalOptions; - if (!elem || !elem.tagName) { - return ''; - } + // merge in options + if (options) { + each(options, function(key, value) { + // tags and extra are special and need to be put into context + if (key === 'tags' || key === 'extra' || key === 'user') { + self._globalContext[key] = value; + } else { + globalOptions[key] = value; + } + }); + } - out.push(elem.tagName.toLowerCase()); + self.setDSN(dsn); - if (elem.id) { - out.push('#' + elem.id); - } + // "Script error." is hard coded into browsers for errors that it can't read. + // this is the result of a script being pulled in from an external domain and CORS. + globalOptions.ignoreErrors.push(/^Script error\.?$/); + globalOptions.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/); - className = elem.className; + // join regexp rules into one big rule + globalOptions.ignoreErrors = joinRegExp(globalOptions.ignoreErrors); + globalOptions.ignoreUrls = globalOptions.ignoreUrls.length + ? joinRegExp(globalOptions.ignoreUrls) + : false; + globalOptions.whitelistUrls = globalOptions.whitelistUrls.length + ? joinRegExp(globalOptions.whitelistUrls) + : false; + globalOptions.includePaths = joinRegExp(globalOptions.includePaths); + globalOptions.maxBreadcrumbs = Math.max( + 0, + Math.min(globalOptions.maxBreadcrumbs || 100, 100) + ); // default and hard limit is 100 - if (className && isString$1(className)) { - classes = className.split(/\s+/); + var autoBreadcrumbDefaults = { + xhr: true, + console: true, + dom: true, + location: true, + sentry: true + }; - for (i = 0; i < classes.length; i++) { - out.push('.' + classes[i]); + var autoBreadcrumbs = globalOptions.autoBreadcrumbs; + if ({}.toString.call(autoBreadcrumbs) === '[object Object]') { + autoBreadcrumbs = objectMerge(autoBreadcrumbDefaults, autoBreadcrumbs); + } else if (autoBreadcrumbs !== false) { + autoBreadcrumbs = autoBreadcrumbDefaults; } - } - - var attrWhitelist = ['type', 'name', 'title', 'alt']; + globalOptions.autoBreadcrumbs = autoBreadcrumbs; - for (i = 0; i < attrWhitelist.length; i++) { - key = attrWhitelist[i]; - attr = elem.getAttribute(key); + var instrumentDefaults = { + tryCatch: true + }; - if (attr) { - out.push('[' + key + '="' + attr + '"]'); + var instrument = globalOptions.instrument; + if ({}.toString.call(instrument) === '[object Object]') { + instrument = objectMerge(instrumentDefaults, instrument); + } else if (instrument !== false) { + instrument = instrumentDefaults; } - } + globalOptions.instrument = instrument; - return out.join(''); -} -/** - * Returns true if either a OR b is truthy, but not both - */ + TraceKit.collectWindowErrors = !!globalOptions.collectWindowErrors; + // return for chaining + return self; + }, -function isOnlyOneTruthy(a, b) { - return !!(!!a ^ !!b); -} -/** - * Returns true if both parameters are undefined - */ + /* + * Installs a global window.onerror error handler + * to capture and report uncaught exceptions. + * At this point, install() is required to be called due + * to the way TraceKit is set up. + * + * @return {Raven} + */ + install: function() { + var self = this; + if (self.isSetup() && !self._isRavenInstalled) { + TraceKit.report.subscribe(function() { + self._handleOnErrorStackInfo.apply(self, arguments); + }); + if (self._globalOptions.captureUnhandledRejections) { + self._attachPromiseRejectionHandler(); + } -function isBothUndefined(a, b) { - return isUndefined$1(a) && isUndefined$1(b); -} -/** - * Returns true if the two input exception interfaces have the same content - */ + self._patchFunctionToString(); + if (self._globalOptions.instrument && self._globalOptions.instrument.tryCatch) { + self._instrumentTryCatch(); + } -function isSameException$1(ex1, ex2) { - if (isOnlyOneTruthy(ex1, ex2)) return false; - ex1 = ex1.values[0]; - ex2 = ex2.values[0]; - if (ex1.type !== ex2.type || ex1.value !== ex2.value) return false; // in case both stacktraces are undefined, we can't decide so default to false + if (self._globalOptions.autoBreadcrumbs) self._instrumentBreadcrumbs(); - if (isBothUndefined(ex1.stacktrace, ex2.stacktrace)) return false; - return isSameStacktrace$1(ex1.stacktrace, ex2.stacktrace); -} -/** - * Returns true if the two input stack trace interfaces have the same content - */ + // Install all of the plugins + self._drainPlugins(); + self._isRavenInstalled = true; + } -function isSameStacktrace$1(stack1, stack2) { - if (isOnlyOneTruthy(stack1, stack2)) return false; - var frames1 = stack1.frames; - var frames2 = stack2.frames; // Exit early if frame count differs + Error.stackTraceLimit = self._globalOptions.stackTraceLimit; + return this; + }, - if (frames1.length !== frames2.length) return false; // Iterate through every frame; bail out if anything differs + /* + * Set the DSN (can be called multiple time unlike config) + * + * @param {string} dsn The public Sentry DSN + */ + setDSN: function(dsn) { + var self = this, + uri = self._parseDSN(dsn), + lastSlash = uri.path.lastIndexOf('/'), + path = uri.path.substr(1, lastSlash); - var a, b; + self._dsn = dsn; + self._globalKey = uri.user; + self._globalSecret = uri.pass && uri.pass.substr(1); + self._globalProject = uri.path.substr(lastSlash + 1); - for (var i = 0; i < frames1.length; i++) { - a = frames1[i]; - b = frames2[i]; - if (a.filename !== b.filename || a.lineno !== b.lineno || a.colno !== b.colno || a['function'] !== b['function']) return false; - } + self._globalServer = self._getGlobalServer(uri); - return true; -} -/** - * Polyfill a method - * @param obj object e.g. `document` - * @param name method name present on object e.g. `addEventListener` - * @param replacement replacement function - * @param track {optional} record instrumentation to an array - */ + self._globalEndpoint = + self._globalServer + '/' + path + 'api/' + self._globalProject + '/store/'; + // Reset backoff state since we may be pointing at a + // new project/server + this._resetBackoff(); + }, -function fill$1(obj, name, replacement, track) { - var orig = obj[name]; - obj[name] = replacement(orig); - obj[name].__raven__ = true; - obj[name].__orig__ = orig; + /* + * Wrap code within a context so Raven can capture errors + * reliably across domains that is executed immediately. + * + * @param {object} options A specific set of options for this context [optional] + * @param {function} func The callback to be immediately executed within the context + * @param {array} args An array of arguments to be called with the callback [optional] + */ + context: function(options, func, args) { + if (isFunction(options)) { + args = func || []; + func = options; + options = undefined; + } - if (track) { - track.push([obj, name, orig]); - } -} -/** - * Join values in array - * @param input array of values to be joined together - * @param delimiter string to be placed in-between values - * @returns {string} - */ + return this.wrap(options, func).apply(this, args); + }, + + /* + * Wrap code within a context and returns back a new function to be executed + * + * @param {object} options A specific set of options for this context [optional] + * @param {function} func The function to be wrapped in a new context + * @param {function} func A function to call before the try/catch wrapper [optional, private] + * @return {function} The newly wrapped functions with a context + */ + wrap: function(options, func, _before) { + var self = this; + // 1 argument has been passed, and it's not a function + // so just return it + if (isUndefined(func) && !isFunction(options)) { + return options; + } + // options is optional + if (isFunction(options)) { + func = options; + options = undefined; + } -function safeJoin(input, delimiter) { - if (!isArray$1(input)) return ''; - var output = []; + // At this point, we've passed along 2 arguments, and the second one + // is not a function either, so we'll just return the second argument. + if (!isFunction(func)) { + return func; + } - for (var i = 0; i < input.length; i++) { + // We don't wanna wrap it twice! try { - output.push(String(input[i])); + if (func.__raven__) { + return func; + } + + // If this has already been wrapped in the past, return that + if (func.__raven_wrapper__) { + return func.__raven_wrapper__; + } } catch (e) { - output.push('[value cannot be serialized]'); + // Just accessing custom props in some Selenium environments + // can cause a "Permission denied" exception (see raven-js#495). + // Bail on wrapping and return the function as-is (defers to window.onerror). + return func; } - } - return output.join(delimiter); -} - -var utils = { - isObject: isObject$1, - isError: isError$1, - isErrorEvent: isErrorEvent$1, - isUndefined: isUndefined$1, - isFunction: isFunction$1, - isPlainObject: isPlainObject, - isString: isString$1, - isArray: isArray$1, - isEmptyObject: isEmptyObject$1, - supportsErrorEvent: supportsErrorEvent, - supportsFetch: supportsFetch$1, - wrappedCallback: wrappedCallback, - each: each$1, - objectMerge: objectMerge$1, - truncate: truncate$1, - objectFrozen: objectFrozen$1, - hasKey: hasKey$1, - joinRegExp: joinRegExp$1, - urlencode: urlencode$1, - uuid4: uuid4$1, - htmlTreeAsString: htmlTreeAsString$1, - htmlElementAsString: htmlElementAsString, - isSameException: isSameException$1, - isSameStacktrace: isSameStacktrace$1, - parseUrl: parseUrl$1, - fill: fill$1, - safeJoin: safeJoin -}; + function wrapped() { + var args = [], + i = arguments.length, + deep = !options || (options && options.deep !== false); -/* - TraceKit - Cross brower stack traces + if (_before && isFunction(_before)) { + _before.apply(this, arguments); + } - This was originally forked from github.com/occ/TraceKit, but has since been - largely re-written and is now maintained as part of raven-js. Tests for - this are in test/vendor. + // Recursively wrap all of a function's arguments that are + // functions themselves. + while (i--) args[i] = deep ? self.wrap(options, arguments[i]) : arguments[i]; - MIT license -*/ + try { + // Attempt to invoke user-land function + // NOTE: If you are a Sentry user, and you are seeing this stack frame, it + // means Raven caught an error invoking your application code. This is + // expected behavior and NOT indicative of a bug with Raven.js. + return func.apply(this, args); + } catch (e) { + self._ignoreNextOnError(); + self.captureException(e, options); + throw e; + } + } -var TraceKit = { - collectWindowErrors: true, - debug: false -}; // This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) + // copy over properties of the old function + for (var property in func) { + if (hasKey(func, property)) { + wrapped[property] = func[property]; + } + } + wrapped.prototype = func.prototype; -var _window$2 = typeof window !== 'undefined' ? window : typeof commonjsGlobal !== 'undefined' ? commonjsGlobal : typeof self !== 'undefined' ? self : {}; // global reference to slice + func.__raven_wrapper__ = wrapped; + // Signal that this function has been wrapped/filled already + // for both debugging and to prevent it to being wrapped/filled twice + wrapped.__raven__ = true; + wrapped.__orig__ = func; + return wrapped; + }, -var _slice = [].slice; -var UNKNOWN_FUNCTION = '?'; // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error#Error_types + /** + * Uninstalls the global error handler. + * + * @return {Raven} + */ + uninstall: function() { + TraceKit.report.uninstall(); -var ERROR_TYPES_RE = /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/; + this._detachPromiseRejectionHandler(); + this._unpatchFunctionToString(); + this._restoreBuiltIns(); + this._restoreConsole(); -function getLocationHref() { - if (typeof document === 'undefined' || document.location == null) return ''; - return document.location.href; -} -/** - * TraceKit.report: cross-browser processing of unhandled exceptions - * - * Syntax: - * TraceKit.report.subscribe(function(stackInfo) { ... }) - * TraceKit.report.unsubscribe(function(stackInfo) { ... }) - * TraceKit.report(exception) - * try { ...code... } catch(ex) { TraceKit.report(ex); } - * - * Supports: - * - Firefox: full stack trace with line numbers, plus column number - * on top frame; column number is not guaranteed - * - Opera: full stack trace with line and column numbers - * - Chrome: full stack trace with line and column numbers - * - Safari: line and column number for the top frame only; some frames - * may be missing, and column number is not guaranteed - * - IE: line and column number for the top frame only; some frames - * may be missing, and column number is not guaranteed - * - * In theory, TraceKit should work on all of the following versions: - * - IE5.5+ (only 8.0 tested) - * - Firefox 0.9+ (only 3.5+ tested) - * - Opera 7+ (only 10.50 tested; versions 9 and earlier may require - * Exceptions Have Stacktrace to be enabled in opera:config) - * - Safari 3+ (only 4+ tested) - * - Chrome 1+ (only 5+ tested) - * - Konqueror 3.5+ (untested) - * - * Requires TraceKit.computeStackTrace. - * - * Tries to catch all unhandled exceptions and report them to the - * subscribed handlers. Please note that TraceKit.report will rethrow the - * exception. This is REQUIRED in order to get a useful stack trace in IE. - * If the exception does not reach the top of the browser, you will only - * get a stack trace from the point where TraceKit.report was called. - * - * Handlers receive a stackInfo object as described in the - * TraceKit.computeStackTrace docs. - */ + Error.stackTraceLimit = this._originalErrorStackTraceLimit; + this._isRavenInstalled = false; + return this; + }, -TraceKit.report = function reportModuleWrapper() { - var handlers = [], - lastArgs = null, - lastException = null, - lastExceptionStack = null; /** - * Add a crash handler. - * @param {Function} handler - */ + * Callback used for `unhandledrejection` event + * + * @param {PromiseRejectionEvent} event An object containing + * promise: the Promise that was rejected + * reason: the value with which the Promise was rejected + * @return void + */ + _promiseRejectionHandler: function(event) { + this._logDebug('debug', 'Raven caught unhandled promise rejection:', event); + this.captureException(event.reason, { + extra: { + unhandledPromiseRejection: true + } + }); + }, - function subscribe(handler) { - installGlobalHandler(); - handlers.push(handler); - } /** - * Remove a crash handler. - * @param {Function} handler - */ + * Installs the global promise rejection handler. + * + * @return {raven} + */ + _attachPromiseRejectionHandler: function() { + this._promiseRejectionHandler = this._promiseRejectionHandler.bind(this); + _window.addEventListener && + _window.addEventListener('unhandledrejection', this._promiseRejectionHandler); + return this; + }, + /** + * Uninstalls the global promise rejection handler. + * + * @return {raven} + */ + _detachPromiseRejectionHandler: function() { + _window.removeEventListener && + _window.removeEventListener('unhandledrejection', this._promiseRejectionHandler); + return this; + }, - function unsubscribe(handler) { - for (var i = handlers.length - 1; i >= 0; --i) { - if (handlers[i] === handler) { - handlers.splice(i, 1); + /** + * Manually capture an exception and send it over to Sentry + * + * @param {error} ex An exception to be logged + * @param {object} options A specific set of options for this error [optional] + * @return {Raven} + */ + captureException: function(ex, options) { + options = objectMerge({trimHeadFrames: 0}, options ? options : {}); + + if (isErrorEvent(ex) && ex.error) { + // If it is an ErrorEvent with `error` property, extract it to get actual Error + ex = ex.error; + } else if (isError(ex)) { + // we have a real Error object + ex = ex; + } else if (isPlainObject(ex)) { + // If it is plain Object, serialize it manually and extract options + // This will allow us to group events based on top-level keys + // which is much better than creating new group when any key/value change + options = this._getCaptureExceptionOptionsFromPlainObject(options, ex); + ex = new Error(options.message); + } else { + // If none of previous checks were valid, then it means that + // it's not a plain Object + // it's not a valid ErrorEvent (one with an error property) + // it's not an Error + // So bail out and capture it as a simple message: + return this.captureMessage( + ex, + objectMerge(options, { + stacktrace: true, // if we fall back to captureMessage, default to attempting a new trace + trimHeadFrames: options.trimHeadFrames + 1 + }) + ); + } + + // Store the raw exception object for potential debugging and introspection + this._lastCapturedException = ex; + + // TraceKit.report will re-raise any exception passed to it, + // which means you have to wrap it in try/catch. Instead, we + // can wrap it here and only re-raise if TraceKit.report + // raises an exception different from the one we asked to + // report on. + try { + var stack = TraceKit.computeStackTrace(ex); + this._handleStackInfo(stack, options); + } catch (ex1) { + if (ex !== ex1) { + throw ex1; } } - } - /** - * Remove all crash handlers. - */ + return this; + }, - function unsubscribeAll() { - uninstallGlobalHandler(); - handlers = []; - } - /** - * Dispatch stack information to all handlers. - * @param {Object.} stack - */ - + _getCaptureExceptionOptionsFromPlainObject: function(currentOptions, ex) { + var exKeys = Object.keys(ex).sort(); + var options = objectMerge(currentOptions, { + message: + 'Non-Error exception captured with keys: ' + serializeKeysForMessage(exKeys), + fingerprint: [md5(exKeys)], + extra: currentOptions.extra || {} + }); + options.extra.__serialized__ = serializeException(ex); - function notifyHandlers(stack, isWindowError) { - var exception = null; + return options; + }, - if (isWindowError && !TraceKit.collectWindowErrors) { + /* + * Manually send a message to Sentry + * + * @param {string} msg A plain message to be captured in Sentry + * @param {object} options A specific set of options for this message [optional] + * @return {Raven} + */ + captureMessage: function(msg, options) { + // config() automagically converts ignoreErrors from a list to a RegExp so we need to test for an + // early call; we'll error on the side of logging anything called before configuration since it's + // probably something you should see: + if ( + !!this._globalOptions.ignoreErrors.test && + this._globalOptions.ignoreErrors.test(msg) + ) { return; } - for (var i in handlers) { - if (handlers.hasOwnProperty(i)) { - try { - handlers[i].apply(null, [stack].concat(_slice.call(arguments, 2))); - } catch (inner) { - exception = inner; - } - } - } + options = options || {}; + msg = msg + ''; // Make sure it's actually a string - if (exception) { - throw exception; + var data = objectMerge( + { + message: msg + }, + options + ); + + var ex; + // Generate a "synthetic" stack trace from this point. + // NOTE: If you are a Sentry user, and you are seeing this stack frame, it is NOT indicative + // of a bug with Raven.js. Sentry generates synthetic traces either by configuration, + // or if it catches a thrown object without a "stack" property. + try { + throw new Error(msg); + } catch (ex1) { + ex = ex1; } - } - var _oldOnerrorHandler, _onErrorHandlerInstalled; - /** - * Ensures all global unhandled exceptions are recorded. - * Supported by Gecko and IE. - * @param {string} msg Error message. - * @param {string} url URL of script that generated the exception. - * @param {(number|string)} lineNo The line number at which the error - * occurred. - * @param {?(number|string)} colNo The column number at which the error - * occurred. - * @param {?Error} ex The actual Error object. - */ - - - function traceKitWindowOnError(msg, url, lineNo, colNo, ex) { - var stack = null; // If 'ex' is ErrorEvent, get real Error from inside - - var exception = utils.isErrorEvent(ex) ? ex.error : ex; // If 'msg' is ErrorEvent, get real message from inside - - var message = utils.isErrorEvent(msg) ? msg.message : msg; + // null exception name so `Error` isn't prefixed to msg + ex.name = null; + var stack = TraceKit.computeStackTrace(ex); - if (lastExceptionStack) { - TraceKit.computeStackTrace.augmentStackTraceWithInitialElement(lastExceptionStack, url, lineNo, message); - processLastException(); - } else if (exception && utils.isError(exception)) { - // non-string `exception` arg; attempt to extract stack trace - // New chrome and blink send along a real error object - // Let's just report that like a normal error. - // See: https://mikewest.org/2013/08/debugging-runtime-errors-with-window-onerror - stack = TraceKit.computeStackTrace(exception); - notifyHandlers(stack, true); - } else { - var location = { - url: url, - line: lineNo, - column: colNo - }; - var name = undefined; - var groups; + // stack[0] is `throw new Error(msg)` call itself, we are interested in the frame that was just before that, stack[1] + var initialCall = isArray(stack.stack) && stack.stack[1]; - if ({}.toString.call(message) === '[object String]') { - var groups = message.match(ERROR_TYPES_RE); + // if stack[1] is `Raven.captureException`, it means that someone passed a string to it and we redirected that call + // to be handled by `captureMessage`, thus `initialCall` is the 3rd one, not 2nd + // initialCall => captureException(string) => captureMessage(string) + if (initialCall && initialCall.func === 'Raven.captureException') { + initialCall = stack.stack[2]; + } - if (groups) { - name = groups[1]; - message = groups[2]; - } - } + var fileurl = (initialCall && initialCall.url) || ''; - location.func = UNKNOWN_FUNCTION; - stack = { - name: name, - message: message, - url: getLocationHref(), - stack: [location] - }; - notifyHandlers(stack, true); + if ( + !!this._globalOptions.ignoreUrls.test && + this._globalOptions.ignoreUrls.test(fileurl) + ) { + return; } - if (_oldOnerrorHandler) { - return _oldOnerrorHandler.apply(this, arguments); + if ( + !!this._globalOptions.whitelistUrls.test && + !this._globalOptions.whitelistUrls.test(fileurl) + ) { + return; } - return false; - } + if (this._globalOptions.stacktrace || (options && options.stacktrace)) { + // fingerprint on msg, not stack trace (legacy behavior, could be revisited) + data.fingerprint = data.fingerprint == null ? msg : data.fingerprint; - function installGlobalHandler() { - if (_onErrorHandlerInstalled) { - return; - } + options = objectMerge( + { + trimHeadFrames: 0 + }, + options + ); + // Since we know this is a synthetic trace, the top frame (this function call) + // MUST be from Raven.js, so mark it for trimming + // We add to the trim counter so that callers can choose to trim extra frames, such + // as utility functions. + options.trimHeadFrames += 1; - _oldOnerrorHandler = _window$2.onerror; - _window$2.onerror = traceKitWindowOnError; - _onErrorHandlerInstalled = true; - } + var frames = this._prepareFrames(stack, options); + data.stacktrace = { + // Sentry expects frames oldest to newest + frames: frames.reverse() + }; + } - function uninstallGlobalHandler() { - if (!_onErrorHandlerInstalled) { - return; + // Make sure that fingerprint is always wrapped in an array + if (data.fingerprint) { + data.fingerprint = isArray(data.fingerprint) + ? data.fingerprint + : [data.fingerprint]; } - _window$2.onerror = _oldOnerrorHandler; - _onErrorHandlerInstalled = false; - _oldOnerrorHandler = undefined; - } + // Fire away! + this._send(data); - function processLastException() { - var _lastExceptionStack = lastExceptionStack, - _lastArgs = lastArgs; - lastArgs = null; - lastExceptionStack = null; - lastException = null; - notifyHandlers.apply(null, [_lastExceptionStack, false].concat(_lastArgs)); - } - /** - * Reports an unhandled Error to TraceKit. - * @param {Error} ex - * @param {?boolean} rethrow If false, do not re-throw the exception. - * Only used for window.onerror to not cause an infinite loop of - * rethrowing. - */ + return this; + }, + captureBreadcrumb: function(obj) { + var crumb = objectMerge( + { + timestamp: now() / 1000 + }, + obj + ); - function report(ex, rethrow) { - var args = _slice.call(arguments, 1); + if (isFunction(this._globalOptions.breadcrumbCallback)) { + var result = this._globalOptions.breadcrumbCallback(crumb); - if (lastExceptionStack) { - if (lastException === ex) { - return; // already caught by an inner catch block, ignore - } else { - processLastException(); + if (isObject(result) && !isEmptyObject(result)) { + crumb = result; + } else if (result === false) { + return this; } } - var stack = TraceKit.computeStackTrace(ex); - lastExceptionStack = stack; - lastException = ex; - lastArgs = args; // If the stack trace is incomplete, wait for 2 seconds for - // slow slow IE to see if onerror occurs or not before reporting - // this exception; otherwise, we will end up with an incomplete - // stack trace + this._breadcrumbs.push(crumb); + if (this._breadcrumbs.length > this._globalOptions.maxBreadcrumbs) { + this._breadcrumbs.shift(); + } + return this; + }, - setTimeout(function () { - if (lastException === ex) { - processLastException(); - } - }, stack.incomplete ? 2000 : 0); + addPlugin: function(plugin /*arg1, arg2, ... argN*/) { + var pluginArgs = [].slice.call(arguments, 1); - if (rethrow !== false) { - throw ex; // re-throw to propagate to the top level (and cause window.onerror) + this._plugins.push([plugin, pluginArgs]); + if (this._isRavenInstalled) { + this._drainPlugins(); } - } - report.subscribe = subscribe; - report.unsubscribe = unsubscribe; - report.uninstall = unsubscribeAll; - return report; -}(); -/** - * TraceKit.computeStackTrace: cross-browser stack traces in JavaScript - * - * Syntax: - * s = TraceKit.computeStackTrace(exception) // consider using TraceKit.report instead (see below) - * Returns: - * s.name - exception name - * s.message - exception message - * s.stack[i].url - JavaScript or HTML file URL - * s.stack[i].func - function name, or empty for anonymous functions (if guessing did not work) - * s.stack[i].args - arguments passed to the function, if known - * s.stack[i].line - line number, if known - * s.stack[i].column - column number, if known - * - * Supports: - * - Firefox: full stack trace with line numbers and unreliable column - * number on top frame - * - Opera 10: full stack trace with line and column numbers - * - Opera 9-: full stack trace with line numbers - * - Chrome: full stack trace with line and column numbers - * - Safari: line and column number for the topmost stacktrace element - * only - * - IE: no line numbers whatsoever - * - * Tries to guess names of anonymous functions by looking for assignments - * in the source code. In IE and Safari, we have to guess source file names - * by searching for function bodies inside all page scripts. This will not - * work for scripts that are loaded cross-domain. - * Here be dragons: some function names may be guessed incorrectly, and - * duplicate functions may be mismatched. - * - * TraceKit.computeStackTrace should only be used for tracing purposes. - * Logging of unhandled exceptions should be done with TraceKit.report, - * which builds on top of TraceKit.computeStackTrace and provides better - * IE support by utilizing the window.onerror event to retrieve information - * about the top of the stack. - * - * Note: In IE and Safari, no stack trace is recorded on the Error object, - * so computeStackTrace instead walks its *own* chain of callers. - * This means that: - * * in Safari, some methods may be missing from the stack trace; - * * in IE, the topmost function in the stack trace will always be the - * caller of computeStackTrace. - * - * This is okay for tracing (because you are likely to be calling - * computeStackTrace from the function you want to be the topmost element - * of the stack trace anyway), but not okay for logging unhandled - * exceptions (because your catch block will likely be far away from the - * inner function that actually caused the exception). - * - */ + return this; + }, + /* + * Set/clear a user to be sent along with the payload. + * + * @param {object} user An object representing user data [optional] + * @return {Raven} + */ + setUserContext: function(user) { + // Intentionally do not merge here since that's an unexpected behavior. + this._globalContext.user = user; -TraceKit.computeStackTrace = function computeStackTraceWrapper() { - // Contents of Exception in various browsers. - // - // SAFARI: - // ex.message = Can't find variable: qq - // ex.line = 59 - // ex.sourceId = 580238192 - // ex.sourceURL = http://... - // ex.expressionBeginOffset = 96 - // ex.expressionCaretOffset = 98 - // ex.expressionEndOffset = 98 - // ex.name = ReferenceError - // - // FIREFOX: - // ex.message = qq is not defined - // ex.fileName = http://... - // ex.lineNumber = 59 - // ex.columnNumber = 69 - // ex.stack = ...stack trace... (see the example below) - // ex.name = ReferenceError - // - // CHROME: - // ex.message = qq is not defined - // ex.name = ReferenceError - // ex.type = not_defined - // ex.arguments = ['aa'] - // ex.stack = ...stack trace... - // - // INTERNET EXPLORER: - // ex.message = ... - // ex.name = ReferenceError - // - // OPERA: - // ex.message = ...message... (see the example below) - // ex.name = ReferenceError - // ex.opera#sourceloc = 11 (pretty much useless, duplicates the info in ex.message) - // ex.stacktrace = n/a; see 'opera:config#UserPrefs|Exceptions Have Stacktrace' + return this; + }, - /** - * Computes stack trace information from the stack property. - * Chrome and Gecko use this property. - * @param {Error} ex - * @return {?Object.} Stack trace information. + /* + * Merge extra attributes to be sent along with the payload. + * + * @param {object} extra An object representing extra data [optional] + * @return {Raven} */ - function computeStackTraceFromStackProp(ex) { - if (typeof ex.stack === 'undefined' || !ex.stack) return; - var chrome = /^\s*at (.*?) ?\(((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i, - gecko = /^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|\[native).*?|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i, - winjs = /^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i, - // Used to additionally parse URL/line/column from eval frames - geckoEval = /(\S+) line (\d+)(?: > eval line \d+)* > eval/i, - chromeEval = /\((\S*)(?::(\d+))(?::(\d+))\)/, - lines = ex.stack.split('\n'), - stack = [], - submatch, - parts, - element, - reference = /^(.*) is undefined$/.exec(ex.message); + setExtraContext: function(extra) { + this._mergeContext('extra', extra); - for (var i = 0, j = lines.length; i < j; ++i) { - if (parts = chrome.exec(lines[i])) { - var isNative = parts[2] && parts[2].indexOf('native') === 0; // start of line + return this; + }, - var isEval = parts[2] && parts[2].indexOf('eval') === 0; // start of line + /* + * Merge tags to be sent along with the payload. + * + * @param {object} tags An object representing tags [optional] + * @return {Raven} + */ + setTagsContext: function(tags) { + this._mergeContext('tags', tags); - if (isEval && (submatch = chromeEval.exec(parts[2]))) { - // throw out eval line/column and use top-most line/column number - parts[2] = submatch[1]; // url + return this; + }, - parts[3] = submatch[2]; // line + /* + * Clear all of the context. + * + * @return {Raven} + */ + clearContext: function() { + this._globalContext = {}; - parts[4] = submatch[3]; // column - } - - element = { - url: !isNative ? parts[2] : null, - func: parts[1] || UNKNOWN_FUNCTION, - args: isNative ? [parts[2]] : [], - line: parts[3] ? +parts[3] : null, - column: parts[4] ? +parts[4] : null - }; - } else if (parts = winjs.exec(lines[i])) { - element = { - url: parts[2], - func: parts[1] || UNKNOWN_FUNCTION, - args: [], - line: +parts[3], - column: parts[4] ? +parts[4] : null - }; - } else if (parts = gecko.exec(lines[i])) { - var isEval = parts[3] && parts[3].indexOf(' > eval') > -1; - - if (isEval && (submatch = geckoEval.exec(parts[3]))) { - // throw out eval line/column and use top-most line number - parts[3] = submatch[1]; - parts[4] = submatch[2]; - parts[5] = null; // no column when eval - } else if (i === 0 && !parts[5] && typeof ex.columnNumber !== 'undefined') { - // FireFox uses this awesome columnNumber property for its top frame - // Also note, Firefox's column number is 0-based and everything else expects 1-based, - // so adding 1 - // NOTE: this hack doesn't work if top-most frame is eval - stack[0].column = ex.columnNumber + 1; - } - - element = { - url: parts[3], - func: parts[1] || UNKNOWN_FUNCTION, - args: parts[2] ? parts[2].split(',') : [], - line: parts[4] ? +parts[4] : null, - column: parts[5] ? +parts[5] : null - }; - } else { - continue; - } + return this; + }, - if (!element.func && element.line) { - element.func = UNKNOWN_FUNCTION; - } + /* + * Get a copy of the current context. This cannot be mutated. + * + * @return {object} copy of context + */ + getContext: function() { + // lol javascript + return JSON.parse(stringify(this._globalContext)); + }, - stack.push(element); - } + /* + * Set environment of application + * + * @param {string} environment Typically something like 'production'. + * @return {Raven} + */ + setEnvironment: function(environment) { + this._globalOptions.environment = environment; - if (!stack.length) { - return null; - } + return this; + }, - return { - name: ex.name, - message: ex.message, - url: getLocationHref(), - stack: stack - }; - } - /** - * Adds information about the first frame to incomplete stack traces. - * Safari and IE require this to get complete data on the first frame. - * @param {Object.} stackInfo Stack trace information from - * one of the compute* methods. - * @param {string} url The URL of the script that caused an error. - * @param {(number|string)} lineNo The line number of the script that - * caused an error. - * @param {string=} message The error generated by the browser, which - * hopefully contains the name of the object that caused the error. - * @return {boolean} Whether or not the stack information was - * augmented. + /* + * Set release version of application + * + * @param {string} release Typically something like a git SHA to identify version + * @return {Raven} */ + setRelease: function(release) { + this._globalOptions.release = release; + return this; + }, - function augmentStackTraceWithInitialElement(stackInfo, url, lineNo, message) { - var initial = { - url: url, - line: lineNo - }; + /* + * Set the dataCallback option + * + * @param {function} callback The callback to run which allows the + * data blob to be mutated before sending + * @return {Raven} + */ + setDataCallback: function(callback) { + var original = this._globalOptions.dataCallback; + this._globalOptions.dataCallback = keepOriginalCallback(original, callback); + return this; + }, - if (initial.url && initial.line) { - stackInfo.incomplete = false; + /* + * Set the breadcrumbCallback option + * + * @param {function} callback The callback to run which allows filtering + * or mutating breadcrumbs + * @return {Raven} + */ + setBreadcrumbCallback: function(callback) { + var original = this._globalOptions.breadcrumbCallback; + this._globalOptions.breadcrumbCallback = keepOriginalCallback(original, callback); + return this; + }, - if (!initial.func) { - initial.func = UNKNOWN_FUNCTION; - } + /* + * Set the shouldSendCallback option + * + * @param {function} callback The callback to run which allows + * introspecting the blob before sending + * @return {Raven} + */ + setShouldSendCallback: function(callback) { + var original = this._globalOptions.shouldSendCallback; + this._globalOptions.shouldSendCallback = keepOriginalCallback(original, callback); + return this; + }, - if (stackInfo.stack.length > 0) { - if (stackInfo.stack[0].url === initial.url) { - if (stackInfo.stack[0].line === initial.line) { - return false; // already in stack trace - } else if (!stackInfo.stack[0].line && stackInfo.stack[0].func === initial.func) { - stackInfo.stack[0].line = initial.line; - return false; - } - } - } + /** + * Override the default HTTP transport mechanism that transmits data + * to the Sentry server. + * + * @param {function} transport Function invoked instead of the default + * `makeRequest` handler. + * + * @return {Raven} + */ + setTransport: function(transport) { + this._globalOptions.transport = transport; - stackInfo.stack.unshift(initial); - stackInfo.partial = true; - return true; - } else { - stackInfo.incomplete = true; - } + return this; + }, - return false; - } - /** - * Computes stack trace information by walking the arguments.caller - * chain at the time the exception occurred. This will cause earlier - * frames to be missed but is the only way to get any stack trace in - * Safari and IE. The top frame is restored by - * {@link augmentStackTraceWithInitialElement}. - * @param {Error} ex - * @return {?Object.} Stack trace information. + /* + * Get the latest raw exception that was captured by Raven. + * + * @return {error} */ + lastException: function() { + return this._lastCapturedException; + }, + /* + * Get the last event id + * + * @return {string} + */ + lastEventId: function() { + return this._lastEventId; + }, - function computeStackTraceByWalkingCallerChain(ex, depth) { - var functionName = /function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i, - stack = [], - funcs = {}, - recursion = false, - parts, - item; - - for (var curr = computeStackTraceByWalkingCallerChain.caller; curr && !recursion; curr = curr.caller) { - if (curr === computeStackTrace || curr === TraceKit.report) { - // console.log('skipping internal function'); - continue; + /* + * Determine if Raven is setup and ready to go. + * + * @return {boolean} + */ + isSetup: function() { + if (!this._hasJSON) return false; // needs JSON support + if (!this._globalServer) { + if (!this.ravenNotConfiguredError) { + this.ravenNotConfiguredError = true; + this._logDebug('error', 'Error: Raven has not been configured.'); } + return false; + } + return true; + }, - item = { - url: null, - func: UNKNOWN_FUNCTION, - line: null, - column: null - }; + afterLoad: function() { + // TODO: remove window dependence? - if (curr.name) { - item.func = curr.name; - } else if (parts = functionName.exec(curr.toString())) { - item.func = parts[1]; - } + // Attempt to initialize Raven on load + var RavenConfig = _window.RavenConfig; + if (RavenConfig) { + this.config(RavenConfig.dsn, RavenConfig.config).install(); + } + }, - if (typeof item.func === 'undefined') { - try { - item.func = parts.input.substring(0, parts.input.indexOf('{')); - } catch (e) {} - } + showReportDialog: function(options) { + if ( + !_document // doesn't work without a document (React native) + ) + return; - if (funcs['' + curr]) { - recursion = true; - } else { - funcs['' + curr] = true; - } + options = options || {}; - stack.push(item); + var lastEventId = options.eventId || this.lastEventId(); + if (!lastEventId) { + throw new RavenConfigError('Missing eventId'); } - if (depth) { - // console.log('depth is ' + depth); - // console.log('stack is ' + stack.length); - stack.splice(0, depth); + var dsn = options.dsn || this._dsn; + if (!dsn) { + throw new RavenConfigError('Missing DSN'); } - var result = { - name: ex.name, - message: ex.message, - url: getLocationHref(), - stack: stack - }; - augmentStackTraceWithInitialElement(result, ex.sourceURL || ex.fileName, ex.line || ex.lineNumber, ex.message || ex.description); - return result; - } - /** - * Computes a stack trace for an exception. - * @param {Error} ex - * @param {(string|number)=} depth - */ + var encode = encodeURIComponent; + var qs = ''; + qs += '?eventId=' + encode(lastEventId); + qs += '&dsn=' + encode(dsn); + var user = options.user || this._globalContext.user; + if (user) { + if (user.name) qs += '&name=' + encode(user.name); + if (user.email) qs += '&email=' + encode(user.email); + } - function computeStackTrace(ex, depth) { - var stack = null; - depth = depth == null ? 0 : +depth; + var globalServer = this._getGlobalServer(this._parseDSN(dsn)); - try { - stack = computeStackTraceFromStackProp(ex); + var script = _document.createElement('script'); + script.async = true; + script.src = globalServer + '/api/embed/error-page/' + qs; + (_document.head || _document.body).appendChild(script); + }, - if (stack) { - return stack; + /**** Private functions ****/ + _ignoreNextOnError: function() { + var self = this; + this._ignoreOnError += 1; + setTimeout(function() { + // onerror should trigger before setTimeout + self._ignoreOnError -= 1; + }); + }, + + _triggerEvent: function(eventType, options) { + // NOTE: `event` is a native browser thing, so let's avoid conflicting wiht it + var evt, key; + + if (!this._hasDocument) return; + + options = options || {}; + + eventType = 'raven' + eventType.substr(0, 1).toUpperCase() + eventType.substr(1); + + if (_document.createEvent) { + evt = _document.createEvent('HTMLEvents'); + evt.initEvent(eventType, true, true); + } else { + evt = _document.createEventObject(); + evt.eventType = eventType; + } + + for (key in options) + if (hasKey(options, key)) { + evt[key] = options[key]; } - } catch (e) { - if (TraceKit.debug) { - throw e; + + if (_document.createEvent) { + // IE9 if standards + _document.dispatchEvent(evt); + } else { + // IE8 regardless of Quirks or Standards + // IE9 if quirks + try { + _document.fireEvent('on' + evt.eventType.toLowerCase(), evt); + } catch (e) { + // Do nothing } } + }, - try { - stack = computeStackTraceByWalkingCallerChain(ex, depth + 1); + /** + * Wraps addEventListener to capture UI breadcrumbs + * @param evtName the event name (e.g. "click") + * @returns {Function} + * @private + */ + _breadcrumbEventHandler: function(evtName) { + var self = this; + return function(evt) { + // reset keypress timeout; e.g. triggering a 'click' after + // a 'keypress' will reset the keypress debounce so that a new + // set of keypresses can be recorded + self._keypressTimeout = null; - if (stack) { - return stack; - } - } catch (e) { - if (TraceKit.debug) { - throw e; + // It's possible this handler might trigger multiple times for the same + // event (e.g. event propagation through node ancestors). Ignore if we've + // already captured the event. + if (self._lastCapturedEvent === evt) return; + + self._lastCapturedEvent = evt; + + // try/catch both: + // - accessing evt.target (see getsentry/raven-js#838, #768) + // - `htmlTreeAsString` because it's complex, and just accessing the DOM incorrectly + // can throw an exception in some circumstances. + var target; + try { + target = htmlTreeAsString(evt.target); + } catch (e) { + target = ''; } - } - return { - name: ex.name, - message: ex.message, - url: getLocationHref() + self.captureBreadcrumb({ + category: 'ui.' + evtName, // e.g. ui.click, ui.input + message: target + }); }; - } + }, - computeStackTrace.augmentStackTraceWithInitialElement = augmentStackTraceWithInitialElement; - computeStackTrace.computeStackTraceFromStackProp = computeStackTraceFromStackProp; - return computeStackTrace; -}(); + /** + * Wraps addEventListener to capture keypress UI events + * @returns {Function} + * @private + */ + _keypressEventHandler: function() { + var self = this, + debounceDuration = 1000; // milliseconds -var tracekit = TraceKit; + // TODO: if somehow user switches keypress target before + // debounce timeout is triggered, we will only capture + // a single breadcrumb from the FIRST target (acceptable?) + return function(evt) { + var target; + try { + target = evt.target; + } catch (e) { + // just accessing event properties can throw an exception in some rare circumstances + // see: https://github.com/getsentry/raven-js/issues/838 + return; + } + var tagName = target && target.tagName; -var stringify_1 = createCommonjsModule(function (module, exports) { - /* - json-stringify-safe - Like JSON.stringify, but doesn't throw on circular references. - - Originally forked from https://github.com/isaacs/json-stringify-safe - version 5.0.1 on 3/8/2017 and modified to handle Errors serialization - and IE8 compatibility. Tests for this are in test/vendor. - - ISC license: https://github.com/isaacs/json-stringify-safe/blob/master/LICENSE - */ - exports = module.exports = stringify; - exports.getSerialize = serializer; - - function indexOf(haystack, needle) { - for (var i = 0; i < haystack.length; ++i) { - if (haystack[i] === needle) return i; - } - - return -1; - } + // only consider keypress events on actual input elements + // this will disregard keypresses targeting body (e.g. tabbing + // through elements, hotkeys, etc) + if ( + !tagName || + (tagName !== 'INPUT' && tagName !== 'TEXTAREA' && !target.isContentEditable) + ) + return; - function stringify(obj, replacer, spaces, cycleReplacer) { - return JSON.stringify(obj, serializer(replacer, cycleReplacer), spaces); - } // https://github.com/ftlabs/js-abbreviate/blob/fa709e5f139e7770a71827b1893f22418097fbda/index.js#L95-L106 + // record first keypress in a series, but ignore subsequent + // keypresses until debounce clears + var timeout = self._keypressTimeout; + if (!timeout) { + self._breadcrumbEventHandler('input')(evt); + } + clearTimeout(timeout); + self._keypressTimeout = setTimeout(function() { + self._keypressTimeout = null; + }, debounceDuration); + }; + }, + /** + * Captures a breadcrumb of type "navigation", normalizing input URLs + * @param to the originating URL + * @param from the target URL + * @private + */ + _captureUrlChange: function(from, to) { + var parsedLoc = parseUrl(this._location.href); + var parsedTo = parseUrl(to); + var parsedFrom = parseUrl(from); - function stringifyError(value) { - var err = { - // These properties are implemented as magical getters and don't show up in for in - stack: value.stack, - message: value.message, - name: value.name - }; + // because onpopstate only tells you the "new" (to) value of location.href, and + // not the previous (from) value, we need to track the value of the current URL + // state ourselves + this._lastHref = to; + + // Use only the path component of the URL if the URL matches the current + // document (almost all the time when using pushState) + if (parsedLoc.protocol === parsedTo.protocol && parsedLoc.host === parsedTo.host) + to = parsedTo.relative; + if (parsedLoc.protocol === parsedFrom.protocol && parsedLoc.host === parsedFrom.host) + from = parsedFrom.relative; + + this.captureBreadcrumb({ + category: 'navigation', + data: { + to: to, + from: from + } + }); + }, - for (var i in value) { - if (Object.prototype.hasOwnProperty.call(value, i)) { - err[i] = value[i]; + _patchFunctionToString: function() { + var self = this; + self._originalFunctionToString = Function.prototype.toString; + // eslint-disable-next-line no-extend-native + Function.prototype.toString = function() { + if (typeof this === 'function' && this.__raven__) { + return self._originalFunctionToString.apply(this.__orig__, arguments); } + return self._originalFunctionToString.apply(this, arguments); + }; + }, + + _unpatchFunctionToString: function() { + if (this._originalFunctionToString) { + // eslint-disable-next-line no-extend-native + Function.prototype.toString = this._originalFunctionToString; } + }, - return err; - } + /** + * Wrap timer functions and event targets to catch errors and provide + * better metadata. + */ + _instrumentTryCatch: function() { + var self = this; - function serializer(replacer, cycleReplacer) { - var stack = []; - var keys = []; + var wrappedBuiltIns = self._wrappedBuiltIns; - if (cycleReplacer == null) { - cycleReplacer = function cycleReplacer(key, value) { - if (stack[0] === value) { - return '[Circular ~]'; + function wrapTimeFn(orig) { + return function(fn, t) { + // preserve arity + // Make a copy of the arguments to prevent deoptimization + // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments + var args = new Array(arguments.length); + for (var i = 0; i < args.length; ++i) { + args[i] = arguments[i]; + } + var originalCallback = args[0]; + if (isFunction(originalCallback)) { + args[0] = self.wrap(originalCallback); } - return '[Circular ~.' + keys.slice(0, indexOf(stack, value)).join('.') + ']'; + // IE < 9 doesn't support .call/.apply on setInterval/setTimeout, but it + // also supports only two arguments and doesn't care what this is, so we + // can just call the original function directly. + if (orig.apply) { + return orig.apply(this, args); + } else { + return orig(args[0], args[1]); + } }; } - return function (key, value) { - if (stack.length > 0) { - var thisPos = indexOf(stack, this); - ~thisPos ? stack.splice(thisPos + 1) : stack.push(this); - ~thisPos ? keys.splice(thisPos, Infinity, key) : keys.push(key); + var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; - if (~indexOf(stack, value)) { - value = cycleReplacer.call(this, key, value); - } - } else { - stack.push(value); + function wrapEventTarget(global) { + var proto = _window[global] && _window[global].prototype; + if (proto && proto.hasOwnProperty && proto.hasOwnProperty('addEventListener')) { + fill( + proto, + 'addEventListener', + function(orig) { + return function(evtName, fn, capture, secure) { + // preserve arity + try { + if (fn && fn.handleEvent) { + fn.handleEvent = self.wrap(fn.handleEvent); + } + } catch (err) { + // can sometimes get 'Permission denied to access property "handle Event' + } + + // More breadcrumb DOM capture ... done here and not in `_instrumentBreadcrumbs` + // so that we don't have more than one wrapper function + var before, clickHandler, keypressHandler; + + if ( + autoBreadcrumbs && + autoBreadcrumbs.dom && + (global === 'EventTarget' || global === 'Node') + ) { + // NOTE: generating multiple handlers per addEventListener invocation, should + // revisit and verify we can just use one (almost certainly) + clickHandler = self._breadcrumbEventHandler('click'); + keypressHandler = self._keypressEventHandler(); + before = function(evt) { + // need to intercept every DOM event in `before` argument, in case that + // same wrapped method is re-used for different events (e.g. mousemove THEN click) + // see #724 + if (!evt) return; + + var eventType; + try { + eventType = evt.type; + } catch (e) { + // just accessing event properties can throw an exception in some rare circumstances + // see: https://github.com/getsentry/raven-js/issues/838 + return; + } + if (eventType === 'click') return clickHandler(evt); + else if (eventType === 'keypress') return keypressHandler(evt); + }; + } + return orig.call( + this, + evtName, + self.wrap(fn, undefined, before), + capture, + secure + ); + }; + }, + wrappedBuiltIns + ); + fill( + proto, + 'removeEventListener', + function(orig) { + return function(evt, fn, capture, secure) { + try { + fn = fn && (fn.__raven_wrapper__ ? fn.__raven_wrapper__ : fn); + } catch (e) { + // ignore, accessing __raven_wrapper__ will throw in some Selenium environments + } + return orig.call(this, evt, fn, capture, secure); + }; + }, + wrappedBuiltIns + ); } + } - return replacer == null ? value instanceof Error ? stringifyError(value) : value : replacer.call(this, key, value); - }; - } -}); -var stringify_2 = stringify_1.getSerialize; + fill(_window, 'setTimeout', wrapTimeFn, wrappedBuiltIns); + fill(_window, 'setInterval', wrapTimeFn, wrappedBuiltIns); + if (_window.requestAnimationFrame) { + fill( + _window, + 'requestAnimationFrame', + function(orig) { + return function(cb) { + return orig(self.wrap(cb)); + }; + }, + wrappedBuiltIns + ); + } -function RavenConfigError(message) { - this.name = 'RavenConfigError'; - this.message = message; -} + // event targets borrowed from bugsnag-js: + // https://github.com/bugsnag/bugsnag-js/blob/master/src/bugsnag.js#L666 + var eventTargets = [ + 'EventTarget', + 'Window', + 'Node', + 'ApplicationCache', + 'AudioTrackList', + 'ChannelMergerNode', + 'CryptoOperation', + 'EventSource', + 'FileReader', + 'HTMLUnknownElement', + 'IDBDatabase', + 'IDBRequest', + 'IDBTransaction', + 'KeyOperation', + 'MediaController', + 'MessagePort', + 'ModalWindow', + 'Notification', + 'SVGElementInstance', + 'Screen', + 'TextTrack', + 'TextTrackCue', + 'TextTrackList', + 'WebSocket', + 'WebSocketWorker', + 'Worker', + 'XMLHttpRequest', + 'XMLHttpRequestEventTarget', + 'XMLHttpRequestUpload' + ]; + for (var i = 0; i < eventTargets.length; i++) { + wrapEventTarget(eventTargets[i]); + } + }, -RavenConfigError.prototype = new Error(); -RavenConfigError.prototype.constructor = RavenConfigError; -var configError = RavenConfigError; + /** + * Instrument browser built-ins w/ breadcrumb capturing + * - XMLHttpRequests + * - DOM interactions (click/typing) + * - window.location changes + * - console + * + * Can be disabled or individually configured via the `autoBreadcrumbs` config option + */ + _instrumentBreadcrumbs: function() { + var self = this; + var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; -var wrapMethod = function wrapMethod(console, level, callback) { - var originalConsoleLevel = console[level]; - var originalConsole = console; + var wrappedBuiltIns = self._wrappedBuiltIns; - if (!(level in console)) { - return; - } + function wrapProp(prop, xhr) { + if (prop in xhr && isFunction(xhr[prop])) { + fill(xhr, prop, function(orig) { + return self.wrap(orig); + }); // intentionally don't track filled methods on XHR instances + } + } - var sentryLevel = level === 'warn' ? 'warning' : level; + if (autoBreadcrumbs.xhr && 'XMLHttpRequest' in _window) { + var xhrproto = _window.XMLHttpRequest && _window.XMLHttpRequest.prototype; + fill( + xhrproto, + 'open', + function(origOpen) { + return function(method, url) { + // preserve arity - console[level] = function () { - var args = [].slice.call(arguments); - var msg = utils.safeJoin(args, ' '); - var data = { - level: sentryLevel, - logger: 'console', - extra: { - arguments: args - } - }; + // if Sentry key appears in URL, don't capture + if (isString(url) && url.indexOf(self._globalKey) === -1) { + this.__raven_xhr = { + method: method, + url: url, + status_code: null + }; + } - if (level === 'assert') { - if (args[0] === false) { - // Default browsers message - msg = 'Assertion failed: ' + (utils.safeJoin(args.slice(1), ' ') || 'console.assert'); - data.extra.arguments = args.slice(1); - callback && callback(msg, data); - } - } else { - callback && callback(msg, data); - } // this fails for some browsers. :( + return origOpen.apply(this, arguments); + }; + }, + wrappedBuiltIns + ); + + fill( + xhrproto, + 'send', + function(origSend) { + return function() { + // preserve arity + var xhr = this; + function onreadystatechangeHandler() { + if (xhr.__raven_xhr && xhr.readyState === 4) { + try { + // touching statusCode in some platforms throws + // an exception + xhr.__raven_xhr.status_code = xhr.status; + } catch (e) { + /* do nothing */ + } - if (originalConsoleLevel) { - // IE9 doesn't allow calling apply on console functions directly - // See: https://stackoverflow.com/questions/5472938/does-ie9-support-console-log-and-is-it-a-real-function#answer-5473193 - Function.prototype.apply.call(originalConsoleLevel, originalConsole, args); - } - }; -}; - -var console$1 = { - wrapMethod: wrapMethod -}; - -/*global XDomainRequest:false */ - -var isError = utils.isError; -var isObject = utils.isObject; -var isErrorEvent = utils.isErrorEvent; -var isUndefined = utils.isUndefined; -var isFunction = utils.isFunction; -var isString = utils.isString; -var isArray = utils.isArray; -var isEmptyObject = utils.isEmptyObject; -var each = utils.each; -var objectMerge = utils.objectMerge; -var truncate = utils.truncate; -var objectFrozen = utils.objectFrozen; -var hasKey = utils.hasKey; -var joinRegExp = utils.joinRegExp; -var urlencode = utils.urlencode; -var uuid4 = utils.uuid4; -var htmlTreeAsString = utils.htmlTreeAsString; -var isSameException = utils.isSameException; -var isSameStacktrace = utils.isSameStacktrace; -var parseUrl = utils.parseUrl; -var fill = utils.fill; -var supportsFetch = utils.supportsFetch; -var wrapConsoleMethod = console$1.wrapMethod; -var dsnKeys = 'source protocol user pass host port path'.split(' '); -var dsnPattern = /^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/; + self.captureBreadcrumb({ + type: 'http', + category: 'xhr', + data: xhr.__raven_xhr + }); + } + } -function now() { - return +new Date(); -} // This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) + var props = ['onload', 'onerror', 'onprogress']; + for (var j = 0; j < props.length; j++) { + wrapProp(props[j], xhr); + } + if ('onreadystatechange' in xhr && isFunction(xhr.onreadystatechange)) { + fill( + xhr, + 'onreadystatechange', + function(orig) { + return self.wrap(orig, undefined, onreadystatechangeHandler); + } /* intentionally don't track this instrumentation */ + ); + } else { + // if onreadystatechange wasn't actually set by the page on this xhr, we + // are free to set our own and capture the breadcrumb + xhr.onreadystatechange = onreadystatechangeHandler; + } -var _window$1 = typeof window !== 'undefined' ? window : typeof commonjsGlobal !== 'undefined' ? commonjsGlobal : typeof self !== 'undefined' ? self : {}; + return origSend.apply(this, arguments); + }; + }, + wrappedBuiltIns + ); + } -var _document = _window$1.document; -var _navigator = _window$1.navigator; + if (autoBreadcrumbs.xhr && supportsFetch()) { + fill( + _window, + 'fetch', + function(origFetch) { + return function() { + // preserve arity + // Make a copy of the arguments to prevent deoptimization + // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments + var args = new Array(arguments.length); + for (var i = 0; i < args.length; ++i) { + args[i] = arguments[i]; + } -function keepOriginalCallback(original, callback) { - return isFunction(callback) ? function (data) { - return callback(data, original); - } : callback; -} // First, check for JSON support -// If there is no JSON, we no-op the core features of Raven -// since JSON is required to encode the payload + var fetchInput = args[0]; + var method = 'GET'; + var url; + if (typeof fetchInput === 'string') { + url = fetchInput; + } else if ('Request' in _window && fetchInput instanceof _window.Request) { + url = fetchInput.url; + if (fetchInput.method) { + method = fetchInput.method; + } + } else { + url = '' + fetchInput; + } -function Raven$1() { - this._hasJSON = !!(_typeof(JSON) === 'object' && JSON.stringify); // Raven can run in contexts where there's no document (react-native) + // if Sentry key appears in URL, don't capture, as it's our own request + if (url.indexOf(self._globalKey) !== -1) { + return origFetch.apply(this, args); + } - this._hasDocument = !isUndefined(_document); - this._hasNavigator = !isUndefined(_navigator); - this._lastCapturedException = null; - this._lastData = null; - this._lastEventId = null; - this._globalServer = null; - this._globalKey = null; - this._globalProject = null; - this._globalContext = {}; - this._globalOptions = { - // SENTRY_RELEASE can be injected by https://github.com/getsentry/sentry-webpack-plugin - release: _window$1.SENTRY_RELEASE && _window$1.SENTRY_RELEASE.id, - logger: 'javascript', - ignoreErrors: [], - ignoreUrls: [], - whitelistUrls: [], - includePaths: [], - headers: null, - collectWindowErrors: true, - maxMessageLength: 0, - // By default, truncates URL values to 250 chars - maxUrlLength: 250, - stackTraceLimit: 50, - autoBreadcrumbs: true, - instrument: true, - sampleRate: 1 - }; - this._fetchDefaults = { - method: 'POST', - keepalive: true, - referrerPolicy: 'origin' - }; - this._ignoreOnError = 0; - this._isRavenInstalled = false; - this._originalErrorStackTraceLimit = Error.stackTraceLimit; // capture references to window.console *and* all its methods first - // before the console plugin has a chance to monkey patch + if (args[1] && args[1].method) { + method = args[1].method; + } - this._originalConsole = _window$1.console || {}; - this._originalConsoleMethods = {}; - this._plugins = []; - this._startTime = now(); - this._wrappedBuiltIns = []; - this._breadcrumbs = []; - this._lastCapturedEvent = null; - this._keypressTimeout; - this._location = _window$1.location; - this._lastHref = this._location && this._location.href; + var fetchData = { + method: method, + url: url, + status_code: null + }; - this._resetBackoff(); // eslint-disable-next-line guard-for-in + return origFetch + .apply(this, args) + .then(function(response) { + fetchData.status_code = response.status; + + self.captureBreadcrumb({ + type: 'http', + category: 'fetch', + data: fetchData + }); + + return response; + }) + ['catch'](function(err) { + // if there is an error performing the request + self.captureBreadcrumb({ + type: 'http', + category: 'fetch', + data: fetchData, + level: 'error' + }); + + throw err; + }); + }; + }, + wrappedBuiltIns + ); + } + // Capture breadcrumbs from any click that is unhandled / bubbled up all the way + // to the document. Do this before we instrument addEventListener. + if (autoBreadcrumbs.dom && this._hasDocument) { + if (_document.addEventListener) { + _document.addEventListener('click', self._breadcrumbEventHandler('click'), false); + _document.addEventListener('keypress', self._keypressEventHandler(), false); + } else if (_document.attachEvent) { + // IE8 Compatibility + _document.attachEvent('onclick', self._breadcrumbEventHandler('click')); + _document.attachEvent('onkeypress', self._keypressEventHandler()); + } + } - for (var method in this._originalConsole) { - this._originalConsoleMethods[method] = this._originalConsole[method]; - } -} -/* - * The core Raven singleton - * - * @this {Raven} - */ + // record navigation (URL) changes + // NOTE: in Chrome App environment, touching history.pushState, *even inside + // a try/catch block*, will cause Chrome to output an error to console.error + // borrowed from: https://github.com/angular/angular.js/pull/13945/files + var chrome = _window.chrome; + var isChromePackagedApp = chrome && chrome.app && chrome.app.runtime; + var hasPushAndReplaceState = + !isChromePackagedApp && + _window.history && + history.pushState && + history.replaceState; + if (autoBreadcrumbs.location && hasPushAndReplaceState) { + // TODO: remove onpopstate handler on uninstall() + var oldOnPopState = _window.onpopstate; + _window.onpopstate = function() { + var currentHref = self._location.href; + self._captureUrlChange(self._lastHref, currentHref); + if (oldOnPopState) { + return oldOnPopState.apply(this, arguments); + } + }; -Raven$1.prototype = { - // Hardcode version string so that raven source can be loaded directly via - // webpack (using a build step causes webpack #1617). Grunt verifies that - // this value matches package.json during build. - // See: https://github.com/getsentry/raven-js/issues/465 - VERSION: '3.22.2', - debug: false, - TraceKit: tracekit, - // alias to TraceKit + var historyReplacementFunction = function(origHistFunction) { + // note history.pushState.length is 0; intentionally not declaring + // params to preserve 0 arity + return function(/* state, title, url */) { + var url = arguments.length > 2 ? arguments[2] : undefined; - /* - * Configure Raven with a DSN and extra options - * - * @param {string} dsn The public Sentry DSN - * @param {object} options Set of global options [optional] - * @return {Raven} - */ - config: function config(dsn, options) { - var self = this; + // url argument is optional + if (url) { + // coerce to string (this is what pushState does) + self._captureUrlChange(self._lastHref, url + ''); + } - if (self._globalServer) { - this._logDebug('error', 'Error: Raven has already been configured'); + return origHistFunction.apply(this, arguments); + }; + }; - return self; + fill(history, 'pushState', historyReplacementFunction, wrappedBuiltIns); + fill(history, 'replaceState', historyReplacementFunction, wrappedBuiltIns); } - if (!dsn) return self; - var globalOptions = self._globalOptions; // merge in options + if (autoBreadcrumbs.console && 'console' in _window && console.log) { + // console + var consoleMethodCallback = function(msg, data) { + self.captureBreadcrumb({ + message: msg, + level: data.level, + category: 'console' + }); + }; - if (options) { - each(options, function (key, value) { - // tags and extra are special and need to be put into context - if (key === 'tags' || key === 'extra' || key === 'user') { - self._globalContext[key] = value; - } else { - globalOptions[key] = value; - } + each(['debug', 'info', 'warn', 'error', 'log'], function(_, level) { + wrapConsoleMethod(console, level, consoleMethodCallback); }); } + }, - self.setDSN(dsn); // "Script error." is hard coded into browsers for errors that it can't read. - // this is the result of a script being pulled in from an external domain and CORS. - - globalOptions.ignoreErrors.push(/^Script error\.?$/); - globalOptions.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/); // join regexp rules into one big rule - - globalOptions.ignoreErrors = joinRegExp(globalOptions.ignoreErrors); - globalOptions.ignoreUrls = globalOptions.ignoreUrls.length ? joinRegExp(globalOptions.ignoreUrls) : false; - globalOptions.whitelistUrls = globalOptions.whitelistUrls.length ? joinRegExp(globalOptions.whitelistUrls) : false; - globalOptions.includePaths = joinRegExp(globalOptions.includePaths); - globalOptions.maxBreadcrumbs = Math.max(0, Math.min(globalOptions.maxBreadcrumbs || 100, 100)); // default and hard limit is 100 + _restoreBuiltIns: function() { + // restore any wrapped builtins + var builtin; + while (this._wrappedBuiltIns.length) { + builtin = this._wrappedBuiltIns.shift(); - var autoBreadcrumbDefaults = { - xhr: true, - console: true, - dom: true, - location: true, - sentry: true - }; - var autoBreadcrumbs = globalOptions.autoBreadcrumbs; + var obj = builtin[0], + name = builtin[1], + orig = builtin[2]; - if ({}.toString.call(autoBreadcrumbs) === '[object Object]') { - autoBreadcrumbs = objectMerge(autoBreadcrumbDefaults, autoBreadcrumbs); - } else if (autoBreadcrumbs !== false) { - autoBreadcrumbs = autoBreadcrumbDefaults; + obj[name] = orig; } + }, - globalOptions.autoBreadcrumbs = autoBreadcrumbs; - var instrumentDefaults = { - tryCatch: true - }; - var instrument = globalOptions.instrument; - - if ({}.toString.call(instrument) === '[object Object]') { - instrument = objectMerge(instrumentDefaults, instrument); - } else if (instrument !== false) { - instrument = instrumentDefaults; + _restoreConsole: function() { + // eslint-disable-next-line guard-for-in + for (var method in this._originalConsoleMethods) { + this._originalConsole[method] = this._originalConsoleMethods[method]; } - - globalOptions.instrument = instrument; - tracekit.collectWindowErrors = !!globalOptions.collectWindowErrors; // return for chaining - - return self; }, - /* - * Installs a global window.onerror error handler - * to capture and report uncaught exceptions. - * At this point, install() is required to be called due - * to the way TraceKit is set up. - * - * @return {Raven} - */ - install: function install() { + _drainPlugins: function() { var self = this; - if (self.isSetup() && !self._isRavenInstalled) { - tracekit.report.subscribe(function () { - self._handleOnErrorStackInfo.apply(self, arguments); - }); - - self._patchFunctionToString(); - - if (self._globalOptions.instrument && self._globalOptions.instrument.tryCatch) { - self._instrumentTryCatch(); - } + // FIX ME TODO + each(this._plugins, function(_, plugin) { + var installer = plugin[0]; + var args = plugin[1]; + installer.apply(self, [self].concat(args)); + }); + }, - if (self._globalOptions.autoBreadcrumbs) self._instrumentBreadcrumbs(); // Install all of the plugins + _parseDSN: function(str) { + var m = dsnPattern.exec(str), + dsn = {}, + i = 7; - self._drainPlugins(); + try { + while (i--) dsn[dsnKeys[i]] = m[i] || ''; + } catch (e) { + throw new RavenConfigError('Invalid DSN: ' + str); + } - self._isRavenInstalled = true; + if (dsn.pass && !this._globalOptions.allowSecretKey) { + throw new RavenConfigError( + 'Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key' + ); } - Error.stackTraceLimit = self._globalOptions.stackTraceLimit; - return this; + return dsn; }, - /* - * Set the DSN (can be called multiple time unlike config) - * - * @param {string} dsn The public Sentry DSN - */ - setDSN: function setDSN(dsn) { - var self = this, - uri = self._parseDSN(dsn), - lastSlash = uri.path.lastIndexOf('/'), - path = uri.path.substr(1, lastSlash); + _getGlobalServer: function(uri) { + // assemble the endpoint from the uri pieces + var globalServer = '//' + uri.host + (uri.port ? ':' + uri.port : ''); - self._dsn = dsn; - self._globalKey = uri.user; - self._globalSecret = uri.pass && uri.pass.substr(1); - self._globalProject = uri.path.substr(lastSlash + 1); - self._globalServer = self._getGlobalServer(uri); - self._globalEndpoint = self._globalServer + '/' + path + 'api/' + self._globalProject + '/store/'; // Reset backoff state since we may be pointing at a - // new project/server - - this._resetBackoff(); + if (uri.protocol) { + globalServer = uri.protocol + ':' + globalServer; + } + return globalServer; }, - /* - * Wrap code within a context so Raven can capture errors - * reliably across domains that is executed immediately. - * - * @param {object} options A specific set of options for this context [optional] - * @param {function} func The callback to be immediately executed within the context - * @param {array} args An array of arguments to be called with the callback [optional] - */ - context: function context(options, func, args) { - if (isFunction(options)) { - args = func || []; - func = options; - options = undefined; + _handleOnErrorStackInfo: function() { + // if we are intentionally ignoring errors via onerror, bail out + if (!this._ignoreOnError) { + this._handleStackInfo.apply(this, arguments); } - - return this.wrap(options, func).apply(this, args); }, - /* - * Wrap code within a context and returns back a new function to be executed - * - * @param {object} options A specific set of options for this context [optional] - * @param {function} func The function to be wrapped in a new context - * @param {function} func A function to call before the try/catch wrapper [optional, private] - * @return {function} The newly wrapped functions with a context - */ - wrap: function wrap(options, func, _before) { - var self = this; // 1 argument has been passed, and it's not a function - // so just return it + _handleStackInfo: function(stackInfo, options) { + var frames = this._prepareFrames(stackInfo, options); - if (isUndefined(func) && !isFunction(options)) { - return options; - } // options is optional + this._triggerEvent('handle', { + stackInfo: stackInfo, + options: options + }); + this._processException( + stackInfo.name, + stackInfo.message, + stackInfo.url, + stackInfo.lineno, + frames, + options + ); + }, - if (isFunction(options)) { - func = options; - options = undefined; - } // At this point, we've passed along 2 arguments, and the second one - // is not a function either, so we'll just return the second argument. + _prepareFrames: function(stackInfo, options) { + var self = this; + var frames = []; + if (stackInfo.stack && stackInfo.stack.length) { + each(stackInfo.stack, function(i, stack) { + var frame = self._normalizeFrame(stack, stackInfo.url); + if (frame) { + frames.push(frame); + } + }); + // e.g. frames captured via captureMessage throw + if (options && options.trimHeadFrames) { + for (var j = 0; j < options.trimHeadFrames && j < frames.length; j++) { + frames[j].in_app = false; + } + } + } + frames = frames.slice(0, this._globalOptions.stackTraceLimit); + return frames; + }, - if (!isFunction(func)) { - return func; - } // We don't wanna wrap it twice! + _normalizeFrame: function(frame, stackInfoUrl) { + // normalize the frames data + var normalized = { + filename: frame.url, + lineno: frame.line, + colno: frame.column, + function: frame.func || '?' + }; + // Case when we don't have any information about the error + // E.g. throwing a string or raw object, instead of an `Error` in Firefox + // Generating synthetic error doesn't add any value here + // + // We should probably somehow let a user know that they should fix their code + if (!frame.url) { + normalized.filename = stackInfoUrl; // fallback to whole stacks url from onerror handler + } - try { - if (func.__raven__) { - return func; - } // If this has already been wrapped in the past, return that + normalized.in_app = !// determine if an exception came from outside of our app + // first we check the global includePaths list. + ( + (!!this._globalOptions.includePaths.test && + !this._globalOptions.includePaths.test(normalized.filename)) || + // Now we check for fun, if the function name is Raven or TraceKit + /(Raven|TraceKit)\./.test(normalized['function']) || + // finally, we do a last ditch effort and check for raven.min.js + /raven\.(min\.)?js$/.test(normalized.filename) + ); + return normalized; + }, - if (func.__raven_wrapper__) { - return func.__raven_wrapper__; - } - } catch (e) { - // Just accessing custom props in some Selenium environments - // can cause a "Permission denied" exception (see raven-js#495). - // Bail on wrapping and return the function as-is (defers to window.onerror). - return func; + _processException: function(type, message, fileurl, lineno, frames, options) { + var prefixedMessage = (type ? type + ': ' : '') + (message || ''); + if ( + !!this._globalOptions.ignoreErrors.test && + (this._globalOptions.ignoreErrors.test(message) || + this._globalOptions.ignoreErrors.test(prefixedMessage)) + ) { + return; } - function wrapped() { - var args = [], - i = arguments.length, - deep = !options || options && options.deep !== false; + var stacktrace; - if (_before && isFunction(_before)) { - _before.apply(this, arguments); - } // Recursively wrap all of a function's arguments that are - // functions themselves. + if (frames && frames.length) { + fileurl = frames[0].filename || fileurl; + // Sentry expects frames oldest to newest + // and JS sends them as newest to oldest + frames.reverse(); + stacktrace = {frames: frames}; + } else if (fileurl) { + stacktrace = { + frames: [ + { + filename: fileurl, + lineno: lineno, + in_app: true + } + ] + }; + } + if ( + !!this._globalOptions.ignoreUrls.test && + this._globalOptions.ignoreUrls.test(fileurl) + ) { + return; + } - while (i--) { - args[i] = deep ? self.wrap(options, arguments[i]) : arguments[i]; - } + if ( + !!this._globalOptions.whitelistUrls.test && + !this._globalOptions.whitelistUrls.test(fileurl) + ) { + return; + } - try { - // Attempt to invoke user-land function - // NOTE: If you are a Sentry user, and you are seeing this stack frame, it - // means Raven caught an error invoking your application code. This is - // expected behavior and NOT indicative of a bug with Raven.js. - return func.apply(this, args); - } catch (e) { - self._ignoreNextOnError(); + var data = objectMerge( + { + // sentry.interfaces.Exception + exception: { + values: [ + { + type: type, + value: message, + stacktrace: stacktrace + } + ] + }, + culprit: fileurl + }, + options + ); - self.captureException(e, options); - throw e; - } - } // copy over properties of the old function + // Fire away! + this._send(data); + }, + _trimPacket: function(data) { + // For now, we only want to truncate the two different messages + // but this could/should be expanded to just trim everything + var max = this._globalOptions.maxMessageLength; + if (data.message) { + data.message = truncate(data.message, max); + } + if (data.exception) { + var exception = data.exception.values[0]; + exception.value = truncate(exception.value, max); + } - for (var property in func) { - if (hasKey(func, property)) { - wrapped[property] = func[property]; + var request = data.request; + if (request) { + if (request.url) { + request.url = truncate(request.url, this._globalOptions.maxUrlLength); + } + if (request.Referer) { + request.Referer = truncate(request.Referer, this._globalOptions.maxUrlLength); } } - wrapped.prototype = func.prototype; - func.__raven_wrapper__ = wrapped; // Signal that this function has been wrapped/filled already - // for both debugging and to prevent it to being wrapped/filled twice + if (data.breadcrumbs && data.breadcrumbs.values) + this._trimBreadcrumbs(data.breadcrumbs); - wrapped.__raven__ = true; - wrapped.__orig__ = func; - return wrapped; + return data; }, - /* - * Uninstalls the global error handler. - * - * @return {Raven} - */ - uninstall: function uninstall() { - tracekit.report.uninstall(); + /** + * Truncate breadcrumb values (right now just URLs) + */ + _trimBreadcrumbs: function(breadcrumbs) { + // known breadcrumb properties with urls + // TODO: also consider arbitrary prop values that start with (https?)?:// + var urlProps = ['to', 'from', 'url'], + urlProp, + crumb, + data; - this._unpatchFunctionToString(); + for (var i = 0; i < breadcrumbs.values.length; ++i) { + crumb = breadcrumbs.values[i]; + if ( + !crumb.hasOwnProperty('data') || + !isObject(crumb.data) || + objectFrozen(crumb.data) + ) + continue; - this._restoreBuiltIns(); + data = objectMerge({}, crumb.data); + for (var j = 0; j < urlProps.length; ++j) { + urlProp = urlProps[j]; + if (data.hasOwnProperty(urlProp) && data[urlProp]) { + data[urlProp] = truncate(data[urlProp], this._globalOptions.maxUrlLength); + } + } + breadcrumbs.values[i].data = data; + } + }, - this._restoreConsole(); + _getHttpData: function() { + if (!this._hasNavigator && !this._hasDocument) return; + var httpData = {}; - Error.stackTraceLimit = this._originalErrorStackTraceLimit; - this._isRavenInstalled = false; - return this; - }, + if (this._hasNavigator && _navigator.userAgent) { + httpData.headers = { + 'User-Agent': navigator.userAgent + }; + } - /* - * Manually capture an exception and send it over to Sentry - * - * @param {error} ex An exception to be logged - * @param {object} options A specific set of options for this error [optional] - * @return {Raven} - */ - captureException: function captureException(ex, options) { - options = objectMerge({ - trimHeadFrames: 0 - }, options ? options : {}); // Cases for sending ex as a message, rather than an exception + // Check in `window` instead of `document`, as we may be in ServiceWorker environment + if (_window.location && _window.location.href) { + httpData.url = _window.location.href; + } - var isNotError = !isError(ex); - var isNotErrorEvent = !isErrorEvent(ex); - var isErrorEventWithoutError = isErrorEvent(ex) && !ex.error; + if (this._hasDocument && _document.referrer) { + if (!httpData.headers) httpData.headers = {}; + httpData.headers.Referer = _document.referrer; + } - if (isNotError && isNotErrorEvent || isErrorEventWithoutError) { - return this.captureMessage(ex, objectMerge(options, { - stacktrace: true, - // if we fall back to captureMessage, default to attempting a new trace - trimHeadFrames: options.trimHeadFrames + 1 - })); - } // Get actual Error from ErrorEvent + return httpData; + }, + _resetBackoff: function() { + this._backoffDuration = 0; + this._backoffStart = null; + }, - if (isErrorEvent(ex)) ex = ex.error; // Store the raw exception object for potential debugging and introspection + _shouldBackoff: function() { + return this._backoffDuration && now() - this._backoffStart < this._backoffDuration; + }, - this._lastCapturedException = ex; // TraceKit.report will re-raise any exception passed to it, - // which means you have to wrap it in try/catch. Instead, we - // can wrap it here and only re-raise if TraceKit.report - // raises an exception different from the one we asked to - // report on. + /** + * Returns true if the in-process data payload matches the signature + * of the previously-sent data + * + * NOTE: This has to be done at this level because TraceKit can generate + * data from window.onerror WITHOUT an exception object (IE8, IE9, + * other old browsers). This can take the form of an "exception" + * data object with a single frame (derived from the onerror args). + */ + _isRepeatData: function(current) { + var last = this._lastData; - try { - var stack = tracekit.computeStackTrace(ex); + if ( + !last || + current.message !== last.message || // defined for captureMessage + current.culprit !== last.culprit // defined for captureException/onerror + ) + return false; - this._handleStackInfo(stack, options); - } catch (ex1) { - if (ex !== ex1) { - throw ex1; - } + // Stacktrace interface (i.e. from captureMessage) + if (current.stacktrace || last.stacktrace) { + return isSameStacktrace(current.stacktrace, last.stacktrace); + } else if (current.exception || last.exception) { + // Exception interface (i.e. from captureException/onerror) + return isSameException(current.exception, last.exception); } - return this; + return true; }, - /* - * Manually send a message to Sentry - * - * @param {string} msg A plain message to be captured in Sentry - * @param {object} options A specific set of options for this message [optional] - * @return {Raven} - */ - captureMessage: function captureMessage(msg, options) { - // config() automagically converts ignoreErrors from a list to a RegExp so we need to test for an - // early call; we'll error on the side of logging anything called before configuration since it's - // probably something you should see: - if (!!this._globalOptions.ignoreErrors.test && this._globalOptions.ignoreErrors.test(msg)) { + _setBackoffState: function(request) { + // If we are already in a backoff state, don't change anything + if (this._shouldBackoff()) { return; } - options = options || {}; - var data = objectMerge({ - message: msg + '' // Make sure it's actually a string - - }, options); - var ex; // Generate a "synthetic" stack trace from this point. - // NOTE: If you are a Sentry user, and you are seeing this stack frame, it is NOT indicative - // of a bug with Raven.js. Sentry generates synthetic traces either by configuration, - // or if it catches a thrown object without a "stack" property. + var status = request.status; - try { - throw new Error(msg); - } catch (ex1) { - ex = ex1; - } // null exception name so `Error` isn't prefixed to msg - - - ex.name = null; - var stack = tracekit.computeStackTrace(ex); // stack[0] is `throw new Error(msg)` call itself, we are interested in the frame that was just before that, stack[1] + // 400 - project_id doesn't exist or some other fatal + // 401 - invalid/revoked dsn + // 429 - too many requests + if (!(status === 400 || status === 401 || status === 429)) return; - var initialCall = isArray(stack.stack) && stack.stack[1]; - var fileurl = initialCall && initialCall.url || ''; + var retry; + try { + // If Retry-After is not in Access-Control-Expose-Headers, most + // browsers will throw an exception trying to access it + if (supportsFetch()) { + retry = request.headers.get('Retry-After'); + } else { + retry = request.getResponseHeader('Retry-After'); + } - if (!!this._globalOptions.ignoreUrls.test && this._globalOptions.ignoreUrls.test(fileurl)) { - return; + // Retry-After is returned in seconds + retry = parseInt(retry, 10) * 1000; + } catch (e) { + /* eslint no-empty:0 */ } - if (!!this._globalOptions.whitelistUrls.test && !this._globalOptions.whitelistUrls.test(fileurl)) { - return; - } + this._backoffDuration = retry + ? // If Sentry server returned a Retry-After value, use it + retry + : // Otherwise, double the last backoff duration (starts at 1 sec) + this._backoffDuration * 2 || 1000; - if (this._globalOptions.stacktrace || options && options.stacktrace) { - options = objectMerge({ - // fingerprint on msg, not stack trace (legacy behavior, could be - // revisited) - fingerprint: msg, - // since we know this is a synthetic trace, the top N-most frames - // MUST be from Raven.js, so mark them as in_app later by setting - // trimHeadFrames - trimHeadFrames: (options.trimHeadFrames || 0) + 1 - }, options); + this._backoffStart = now(); + }, - var frames = this._prepareFrames(stack, options); + _send: function(data) { + var globalOptions = this._globalOptions; - data.stacktrace = { - // Sentry expects frames oldest to newest - frames: frames.reverse() - }; - } // Fire away! + var baseData = { + project: this._globalProject, + logger: globalOptions.logger, + platform: 'javascript' + }, + httpData = this._getHttpData(); + if (httpData) { + baseData.request = httpData; + } - this._send(data); + // HACK: delete `trimHeadFrames` to prevent from appearing in outbound payload + if (data.trimHeadFrames) delete data.trimHeadFrames; - return this; - }, - captureBreadcrumb: function captureBreadcrumb(obj) { - var crumb = objectMerge({ - timestamp: now() / 1000 - }, obj); + data = objectMerge(baseData, data); - if (isFunction(this._globalOptions.breadcrumbCallback)) { - var result = this._globalOptions.breadcrumbCallback(crumb); + // Merge in the tags and extra separately since objectMerge doesn't handle a deep merge + data.tags = objectMerge(objectMerge({}, this._globalContext.tags), data.tags); + data.extra = objectMerge(objectMerge({}, this._globalContext.extra), data.extra); - if (isObject(result) && !isEmptyObject(result)) { - crumb = result; - } else if (result === false) { - return this; - } - } + // Send along our own collected metadata with extra + data.extra['session:duration'] = now() - this._startTime; - this._breadcrumbs.push(crumb); + if (this._breadcrumbs && this._breadcrumbs.length > 0) { + // intentionally make shallow copy so that additions + // to breadcrumbs aren't accidentally sent in this request + data.breadcrumbs = { + values: [].slice.call(this._breadcrumbs, 0) + }; + } - if (this._breadcrumbs.length > this._globalOptions.maxBreadcrumbs) { - this._breadcrumbs.shift(); + if (this._globalContext.user) { + // sentry.interfaces.User + data.user = this._globalContext.user; } - return this; - }, - addPlugin: function addPlugin(plugin - /*arg1, arg2, ... argN*/ - ) { - var pluginArgs = [].slice.call(arguments, 1); + // Include the environment if it's defined in globalOptions + if (globalOptions.environment) data.environment = globalOptions.environment; - this._plugins.push([plugin, pluginArgs]); + // Include the release if it's defined in globalOptions + if (globalOptions.release) data.release = globalOptions.release; - if (this._isRavenInstalled) { - this._drainPlugins(); - } + // Include server_name if it's defined in globalOptions + if (globalOptions.serverName) data.server_name = globalOptions.serverName; - return this; - }, + data = this._sanitizeData(data); - /* - * Set/clear a user to be sent along with the payload. - * - * @param {object} user An object representing user data [optional] - * @return {Raven} - */ - setUserContext: function setUserContext(user) { - // Intentionally do not merge here since that's an unexpected behavior. - this._globalContext.user = user; - return this; - }, + // Cleanup empty properties before sending them to the server + Object.keys(data).forEach(function(key) { + if (data[key] == null || data[key] === '' || isEmptyObject(data[key])) { + delete data[key]; + } + }); - /* - * Merge extra attributes to be sent along with the payload. - * - * @param {object} extra An object representing extra data [optional] - * @return {Raven} - */ - setExtraContext: function setExtraContext(extra) { - this._mergeContext('extra', extra); + if (isFunction(globalOptions.dataCallback)) { + data = globalOptions.dataCallback(data) || data; + } - return this; - }, + // Why?????????? + if (!data || isEmptyObject(data)) { + return; + } - /* - * Merge tags to be sent along with the payload. - * - * @param {object} tags An object representing tags [optional] - * @return {Raven} - */ - setTagsContext: function setTagsContext(tags) { - this._mergeContext('tags', tags); + // Check if the request should be filtered or not + if ( + isFunction(globalOptions.shouldSendCallback) && + !globalOptions.shouldSendCallback(data) + ) { + return; + } - return this; - }, + // Backoff state: Sentry server previously responded w/ an error (e.g. 429 - too many requests), + // so drop requests until "cool-off" period has elapsed. + if (this._shouldBackoff()) { + this._logDebug('warn', 'Raven dropped error due to backoff: ', data); + return; + } - /* - * Clear all of the context. - * - * @return {Raven} - */ - clearContext: function clearContext() { - this._globalContext = {}; - return this; + if (typeof globalOptions.sampleRate === 'number') { + if (Math.random() < globalOptions.sampleRate) { + this._sendProcessedPayload(data); + } + } else { + this._sendProcessedPayload(data); + } }, - /* - * Get a copy of the current context. This cannot be mutated. - * - * @return {object} copy of context - */ - getContext: function getContext() { - // lol javascript - return JSON.parse(stringify_1(this._globalContext)); + _sanitizeData: function(data) { + return sanitize(data, this._globalOptions.sanitizeKeys); }, - /* - * Set environment of application - * - * @param {string} environment Typically something like 'production'. - * @return {Raven} - */ - setEnvironment: function setEnvironment(environment) { - this._globalOptions.environment = environment; - return this; + _getUuid: function() { + return uuid4(); }, - /* - * Set release version of application - * - * @param {string} release Typically something like a git SHA to identify version - * @return {Raven} - */ - setRelease: function setRelease(release) { - this._globalOptions.release = release; - return this; - }, + _sendProcessedPayload: function(data, callback) { + var self = this; + var globalOptions = this._globalOptions; - /* - * Set the dataCallback option - * - * @param {function} callback The callback to run which allows the - * data blob to be mutated before sending - * @return {Raven} - */ - setDataCallback: function setDataCallback(callback) { - var original = this._globalOptions.dataCallback; - this._globalOptions.dataCallback = keepOriginalCallback(original, callback); - return this; - }, + if (!this.isSetup()) return; - /* - * Set the breadcrumbCallback option - * - * @param {function} callback The callback to run which allows filtering - * or mutating breadcrumbs - * @return {Raven} - */ - setBreadcrumbCallback: function setBreadcrumbCallback(callback) { - var original = this._globalOptions.breadcrumbCallback; - this._globalOptions.breadcrumbCallback = keepOriginalCallback(original, callback); - return this; - }, + // Try and clean up the packet before sending by truncating long values + data = this._trimPacket(data); - /* - * Set the shouldSendCallback option - * - * @param {function} callback The callback to run which allows - * introspecting the blob before sending - * @return {Raven} - */ - setShouldSendCallback: function setShouldSendCallback(callback) { - var original = this._globalOptions.shouldSendCallback; - this._globalOptions.shouldSendCallback = keepOriginalCallback(original, callback); - return this; - }, + // ideally duplicate error testing should occur *before* dataCallback/shouldSendCallback, + // but this would require copying an un-truncated copy of the data packet, which can be + // arbitrarily deep (extra_data) -- could be worthwhile? will revisit + if (!this._globalOptions.allowDuplicates && this._isRepeatData(data)) { + this._logDebug('warn', 'Raven dropped repeat event: ', data); + return; + } - /** - * Override the default HTTP transport mechanism that transmits data - * to the Sentry server. - * - * @param {function} transport Function invoked instead of the default - * `makeRequest` handler. - * - * @return {Raven} - */ - setTransport: function setTransport(transport) { - this._globalOptions.transport = transport; - return this; - }, + // Send along an event_id if not explicitly passed. + // This event_id can be used to reference the error within Sentry itself. + // Set lastEventId after we know the error should actually be sent + this._lastEventId = data.event_id || (data.event_id = this._getUuid()); - /* - * Get the latest raw exception that was captured by Raven. - * - * @return {error} - */ - lastException: function lastException() { - return this._lastCapturedException; - }, + // Store outbound payload after trim + this._lastData = data; - /* - * Get the last event id - * - * @return {string} - */ - lastEventId: function lastEventId() { - return this._lastEventId; - }, + this._logDebug('debug', 'Raven about to send:', data); - /* - * Determine if Raven is setup and ready to go. - * - * @return {boolean} - */ - isSetup: function isSetup() { - if (!this._hasJSON) return false; // needs JSON support + var auth = { + sentry_version: '7', + sentry_client: 'raven-js/' + this.VERSION, + sentry_key: this._globalKey + }; - if (!this._globalServer) { - if (!this.ravenNotConfiguredError) { - this.ravenNotConfiguredError = true; + if (this._globalSecret) { + auth.sentry_secret = this._globalSecret; + } - this._logDebug('error', 'Error: Raven has not been configured.'); - } + var exception = data.exception && data.exception.values[0]; - return false; + // only capture 'sentry' breadcrumb is autoBreadcrumbs is truthy + if ( + this._globalOptions.autoBreadcrumbs && + this._globalOptions.autoBreadcrumbs.sentry + ) { + this.captureBreadcrumb({ + category: 'sentry', + message: exception + ? (exception.type ? exception.type + ': ' : '') + exception.value + : data.message, + event_id: data.event_id, + level: data.level || 'error' // presume error unless specified + }); } - return true; - }, - afterLoad: function afterLoad() { - // TODO: remove window dependence? - // Attempt to initialize Raven on load - var RavenConfig = _window$1.RavenConfig; + var url = this._globalEndpoint; + (globalOptions.transport || this._makeRequest).call(this, { + url: url, + auth: auth, + data: data, + options: globalOptions, + onSuccess: function success() { + self._resetBackoff(); - if (RavenConfig) { - this.config(RavenConfig.dsn, RavenConfig.config).install(); - } + self._triggerEvent('success', { + data: data, + src: url + }); + callback && callback(); + }, + onError: function failure(error) { + self._logDebug('error', 'Raven transport failed to send: ', error); + + if (error.request) { + self._setBackoffState(error.request); + } + + self._triggerEvent('failure', { + data: data, + src: url + }); + error = error || new Error('Raven send failed (no additional details provided)'); + callback && callback(error); + } + }); }, - showReportDialog: function showReportDialog(options) { - if (!_document // doesn't work without a document (React native) - ) return; - options = options || {}; - var lastEventId = options.eventId || this.lastEventId(); - if (!lastEventId) { - throw new configError('Missing eventId'); - } + _makeRequest: function(opts) { + // Auth is intentionally sent as part of query string (NOT as custom HTTP header) to avoid preflight CORS requests + var url = opts.url + '?' + urlencode(opts.auth); - var dsn = options.dsn || this._dsn; + var evaluatedHeaders = null; + var evaluatedFetchParameters = {}; - if (!dsn) { - throw new configError('Missing DSN'); + if (opts.options.headers) { + evaluatedHeaders = this._evaluateHash(opts.options.headers); } - var encode = encodeURIComponent; - var qs = ''; - qs += '?eventId=' + encode(lastEventId); - qs += '&dsn=' + encode(dsn); - var user = options.user || this._globalContext.user; - - if (user) { - if (user.name) qs += '&name=' + encode(user.name); - if (user.email) qs += '&email=' + encode(user.email); + if (opts.options.fetchParameters) { + evaluatedFetchParameters = this._evaluateHash(opts.options.fetchParameters); } - var globalServer = this._getGlobalServer(this._parseDSN(dsn)); + if (supportsFetch()) { + evaluatedFetchParameters.body = stringify(opts.data); - var script = _document.createElement('script'); + var defaultFetchOptions = objectMerge({}, this._fetchDefaults); + var fetchOptions = objectMerge(defaultFetchOptions, evaluatedFetchParameters); - script.async = true; - script.src = globalServer + '/api/embed/error-page/' + qs; + if (evaluatedHeaders) { + fetchOptions.headers = evaluatedHeaders; + } - (_document.head || _document.body).appendChild(script); - }, + return _window + .fetch(url, fetchOptions) + .then(function(response) { + if (response.ok) { + opts.onSuccess && opts.onSuccess(); + } else { + var error = new Error('Sentry error code: ' + response.status); + // It's called request only to keep compatibility with XHR interface + // and not add more redundant checks in setBackoffState method + error.request = response; + opts.onError && opts.onError(error); + } + }) + ['catch'](function() { + opts.onError && + opts.onError(new Error('Sentry error code: network unavailable')); + }); + } - /**** Private functions ****/ - _ignoreNextOnError: function _ignoreNextOnError() { - var self = this; - this._ignoreOnError += 1; - setTimeout(function () { - // onerror should trigger before setTimeout - self._ignoreOnError -= 1; - }); - }, - _triggerEvent: function _triggerEvent(eventType, options) { - // NOTE: `event` is a native browser thing, so let's avoid conflicting wiht it - var evt, key; - if (!this._hasDocument) return; - options = options || {}; - eventType = 'raven' + eventType.substr(0, 1).toUpperCase() + eventType.substr(1); + var request = _window.XMLHttpRequest && new _window.XMLHttpRequest(); + if (!request) return; - if (_document.createEvent) { - evt = _document.createEvent('HTMLEvents'); - evt.initEvent(eventType, true, true); - } else { - evt = _document.createEventObject(); - evt.eventType = eventType; - } + // if browser doesn't support CORS (e.g. IE7), we are out of luck + var hasCORS = 'withCredentials' in request || typeof XDomainRequest !== 'undefined'; - for (key in options) { - if (hasKey(options, key)) { - evt[key] = options[key]; - } - } + if (!hasCORS) return; - if (_document.createEvent) { - // IE9 if standards - _document.dispatchEvent(evt); + if ('withCredentials' in request) { + request.onreadystatechange = function() { + if (request.readyState !== 4) { + return; + } else if (request.status === 200) { + opts.onSuccess && opts.onSuccess(); + } else if (opts.onError) { + var err = new Error('Sentry error code: ' + request.status); + err.request = request; + opts.onError(err); + } + }; } else { - // IE8 regardless of Quirks or Standards - // IE9 if quirks - try { - _document.fireEvent('on' + evt.eventType.toLowerCase(), evt); - } catch (e) {// Do nothing + request = new XDomainRequest(); + // xdomainrequest cannot go http -> https (or vice versa), + // so always use protocol relative + url = url.replace(/^https?:/, ''); + + // onreadystatechange not supported by XDomainRequest + if (opts.onSuccess) { + request.onload = opts.onSuccess; + } + if (opts.onError) { + request.onerror = function() { + var err = new Error('Sentry error code: XDomainRequest'); + err.request = request; + opts.onError(err); + }; } } - }, - /** - * Wraps addEventListener to capture UI breadcrumbs - * @param evtName the event name (e.g. "click") - * @returns {Function} - * @private - */ - _breadcrumbEventHandler: function _breadcrumbEventHandler(evtName) { - var self = this; - return function (evt) { - // reset keypress timeout; e.g. triggering a 'click' after - // a 'keypress' will reset the keypress debounce so that a new - // set of keypresses can be recorded - self._keypressTimeout = null; // It's possible this handler might trigger multiple times for the same - // event (e.g. event propagation through node ancestors). Ignore if we've - // already captured the event. + request.open('POST', url); - if (self._lastCapturedEvent === evt) return; - self._lastCapturedEvent = evt; // try/catch both: - // - accessing evt.target (see getsentry/raven-js#838, #768) - // - `htmlTreeAsString` because it's complex, and just accessing the DOM incorrectly - // can throw an exception in some circumstances. + if (evaluatedHeaders) { + each(evaluatedHeaders, function(key, value) { + request.setRequestHeader(key, value); + }); + } - var target; + request.send(stringify(opts.data)); + }, - try { - target = htmlTreeAsString(evt.target); - } catch (e) { - target = ''; + _evaluateHash: function(hash) { + var evaluated = {}; + + for (var key in hash) { + if (hash.hasOwnProperty(key)) { + var value = hash[key]; + evaluated[key] = typeof value === 'function' ? value() : value; } + } - self.captureBreadcrumb({ - category: 'ui.' + evtName, - // e.g. ui.click, ui.input - message: target - }); - }; + return evaluated; }, - /** - * Wraps addEventListener to capture keypress UI events - * @returns {Function} - * @private - */ - _keypressEventHandler: function _keypressEventHandler() { - var self = this, - debounceDuration = 1000; // milliseconds - // TODO: if somehow user switches keypress target before - // debounce timeout is triggered, we will only capture - // a single breadcrumb from the FIRST target (acceptable?) - - return function (evt) { - var target; - - try { - target = evt.target; - } catch (e) { - // just accessing event properties can throw an exception in some rare circumstances - // see: https://github.com/getsentry/raven-js/issues/838 - return; - } + _logDebug: function(level) { + // We allow `Raven.debug` and `Raven.config(DSN, { debug: true })` to not make backward incompatible API change + if ( + this._originalConsoleMethods[level] && + (this.debug || this._globalOptions.debug) + ) { + // In IE<10 console methods do not have their own 'apply' method + Function.prototype.apply.call( + this._originalConsoleMethods[level], + this._originalConsole, + [].slice.call(arguments, 1) + ); + } + }, - var tagName = target && target.tagName; // only consider keypress events on actual input elements - // this will disregard keypresses targeting body (e.g. tabbing - // through elements, hotkeys, etc) + _mergeContext: function(key, context) { + if (isUndefined(context)) { + delete this._globalContext[key]; + } else { + this._globalContext[key] = objectMerge(this._globalContext[key] || {}, context); + } + } +}; - if (!tagName || tagName !== 'INPUT' && tagName !== 'TEXTAREA' && !target.isContentEditable) return; // record first keypress in a series, but ignore subsequent - // keypresses until debounce clears +// Deprecations +Raven.prototype.setUser = Raven.prototype.setUserContext; +Raven.prototype.setReleaseContext = Raven.prototype.setRelease; - var timeout = self._keypressTimeout; +module.exports = Raven; - if (!timeout) { - self._breadcrumbEventHandler('input')(evt); - } +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"10":10,"3":3,"4":4,"7":7,"8":8,"9":9}],6:[function(_dereq_,module,exports){ +(function (global){ +/** + * Enforces a single instance of the Raven client, and the + * main entry point for Raven. If you are a consumer of the + * Raven library, you SHOULD load this file (vs raven.js). + **/ - clearTimeout(timeout); - self._keypressTimeout = setTimeout(function () { - self._keypressTimeout = null; - }, debounceDuration); - }; - }, +var RavenConstructor = _dereq_(5); - /** - * Captures a breadcrumb of type "navigation", normalizing input URLs - * @param to the originating URL - * @param from the target URL - * @private - */ - _captureUrlChange: function _captureUrlChange(from, to) { - var parsedLoc = parseUrl(this._location.href); - var parsedTo = parseUrl(to); - var parsedFrom = parseUrl(from); // because onpopstate only tells you the "new" (to) value of location.href, and - // not the previous (from) value, we need to track the value of the current URL - // state ourselves +// This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) +var _window = + typeof window !== 'undefined' + ? window + : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; +var _Raven = _window.Raven; - this._lastHref = to; // Use only the path component of the URL if the URL matches the current - // document (almost all the time when using pushState) +var Raven = new RavenConstructor(); - if (parsedLoc.protocol === parsedTo.protocol && parsedLoc.host === parsedTo.host) to = parsedTo.relative; - if (parsedLoc.protocol === parsedFrom.protocol && parsedLoc.host === parsedFrom.host) from = parsedFrom.relative; - this.captureBreadcrumb({ - category: 'navigation', - data: { - to: to, - from: from - } - }); - }, - _patchFunctionToString: function _patchFunctionToString() { - var self = this; - self._originalFunctionToString = Function.prototype.toString; // eslint-disable-next-line no-extend-native +/* + * Allow multiple versions of Raven to be installed. + * Strip Raven from the global context and returns the instance. + * + * @return {Raven} + */ +Raven.noConflict = function() { + _window.Raven = _Raven; + return Raven; +}; - Function.prototype.toString = function () { - if (typeof this === 'function' && this.__raven__) { - return self._originalFunctionToString.apply(this.__orig__, arguments); - } +Raven.afterLoad(); - return self._originalFunctionToString.apply(this, arguments); - }; - }, - _unpatchFunctionToString: function _unpatchFunctionToString() { - if (this._originalFunctionToString) { - // eslint-disable-next-line no-extend-native - Function.prototype.toString = this._originalFunctionToString; - } - }, +module.exports = Raven; - /** - * Wrap timer functions and event targets to catch errors and provide - * better metadata. - */ - _instrumentTryCatch: function _instrumentTryCatch() { - var self = this; - var wrappedBuiltIns = self._wrappedBuiltIns; +/** + * DISCLAIMER: + * + * Expose `Client` constructor for cases where user want to track multiple "sub-applications" in one larger app. + * It's not meant to be used by a wide audience, so pleaaase make sure that you know what you're doing before using it. + * Accidentally calling `install` multiple times, may result in an unexpected behavior that's very hard to debug. + * + * It's called `Client' to be in-line with Raven Node implementation. + * + * HOWTO: + * + * import Raven from 'raven-js'; + * + * const someAppReporter = new Raven.Client(); + * const someOtherAppReporter = new Raven.Client(); + * + * someAppReporter.config('__DSN__', { + * ...config goes here + * }); + * + * someOtherAppReporter.config('__OTHER_DSN__', { + * ...config goes here + * }); + * + * someAppReporter.captureMessage(...); + * someAppReporter.captureException(...); + * someAppReporter.captureBreadcrumb(...); + * + * someOtherAppReporter.captureMessage(...); + * someOtherAppReporter.captureException(...); + * someOtherAppReporter.captureBreadcrumb(...); + * + * It should "just work". + */ +module.exports.Client = RavenConstructor; - function wrapTimeFn(orig) { - return function (fn, t) { - // preserve arity - // Make a copy of the arguments to prevent deoptimization - // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments - var args = new Array(arguments.length); +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"5":5}],7:[function(_dereq_,module,exports){ +(function (global){ +var stringify = _dereq_(9); - for (var i = 0; i < args.length; ++i) { - args[i] = arguments[i]; - } +var _window = + typeof window !== 'undefined' + ? window + : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; - var originalCallback = args[0]; +function isObject(what) { + return typeof what === 'object' && what !== null; +} - if (isFunction(originalCallback)) { - args[0] = self.wrap(originalCallback); - } // IE < 9 doesn't support .call/.apply on setInterval/setTimeout, but it - // also supports only two arguments and doesn't care what this is, so we - // can just call the original function directly. +// Yanked from https://git.io/vS8DV re-used under CC0 +// with some tiny modifications +function isError(value) { + switch ({}.toString.call(value)) { + case '[object Error]': + return true; + case '[object Exception]': + return true; + case '[object DOMException]': + return true; + default: + return value instanceof Error; + } +} +function isErrorEvent(value) { + return supportsErrorEvent() && {}.toString.call(value) === '[object ErrorEvent]'; +} - if (orig.apply) { - return orig.apply(this, args); - } else { - return orig(args[0], args[1]); - } - }; - } +function isUndefined(what) { + return what === void 0; +} - var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; +function isFunction(what) { + return typeof what === 'function'; +} - function wrapEventTarget(global) { - var proto = _window$1[global] && _window$1[global].prototype; +function isPlainObject(what) { + return Object.prototype.toString.call(what) === '[object Object]'; +} - if (proto && proto.hasOwnProperty && proto.hasOwnProperty('addEventListener')) { - fill(proto, 'addEventListener', function (orig) { - return function (evtName, fn, capture, secure) { - // preserve arity - try { - if (fn && fn.handleEvent) { - fn.handleEvent = self.wrap(fn.handleEvent); - } - } catch (err) {} // can sometimes get 'Permission denied to access property "handle Event' - // More breadcrumb DOM capture ... done here and not in `_instrumentBreadcrumbs` - // so that we don't have more than one wrapper function +function isString(what) { + return Object.prototype.toString.call(what) === '[object String]'; +} +function isArray(what) { + return Object.prototype.toString.call(what) === '[object Array]'; +} - var before, clickHandler, keypressHandler; +function isEmptyObject(what) { + if (!isPlainObject(what)) return false; - if (autoBreadcrumbs && autoBreadcrumbs.dom && (global === 'EventTarget' || global === 'Node')) { - // NOTE: generating multiple handlers per addEventListener invocation, should - // revisit and verify we can just use one (almost certainly) - clickHandler = self._breadcrumbEventHandler('click'); - keypressHandler = self._keypressEventHandler(); + for (var _ in what) { + if (what.hasOwnProperty(_)) { + return false; + } + } + return true; +} - before = function before(evt) { - // need to intercept every DOM event in `before` argument, in case that - // same wrapped method is re-used for different events (e.g. mousemove THEN click) - // see #724 - if (!evt) return; - var eventType; +function supportsErrorEvent() { + try { + new ErrorEvent(''); // eslint-disable-line no-new + return true; + } catch (e) { + return false; + } +} - try { - eventType = evt.type; - } catch (e) { - // just accessing event properties can throw an exception in some rare circumstances - // see: https://github.com/getsentry/raven-js/issues/838 - return; - } +function supportsFetch() { + if (!('fetch' in _window)) return false; - if (eventType === 'click') return clickHandler(evt);else if (eventType === 'keypress') return keypressHandler(evt); - }; - } + try { + new Headers(); // eslint-disable-line no-new + new Request(''); // eslint-disable-line no-new + new Response(); // eslint-disable-line no-new + return true; + } catch (e) { + return false; + } +} - return orig.call(this, evtName, self.wrap(fn, undefined, before), capture, secure); - }; - }, wrappedBuiltIns); - fill(proto, 'removeEventListener', function (orig) { - return function (evt, fn, capture, secure) { - try { - fn = fn && (fn.__raven_wrapper__ ? fn.__raven_wrapper__ : fn); - } catch (e) {// ignore, accessing __raven_wrapper__ will throw in some Selenium environments - } +// Despite all stars in the sky saying that Edge supports old draft syntax, aka 'never', 'always', 'origin' and 'default +// https://caniuse.com/#feat=referrer-policy +// It doesn't. And it throw exception instead of ignoring this parameter... +// REF: https://github.com/getsentry/raven-js/issues/1233 +function supportsReferrerPolicy() { + if (!supportsFetch()) return false; - return orig.call(this, evt, fn, capture, secure); - }; - }, wrappedBuiltIns); - } - } + try { + // eslint-disable-next-line no-new + new Request('pickleRick', { + referrerPolicy: 'origin' + }); + return true; + } catch (e) { + return false; + } +} - fill(_window$1, 'setTimeout', wrapTimeFn, wrappedBuiltIns); - fill(_window$1, 'setInterval', wrapTimeFn, wrappedBuiltIns); +function supportsPromiseRejectionEvent() { + return typeof PromiseRejectionEvent === 'function'; +} - if (_window$1.requestAnimationFrame) { - fill(_window$1, 'requestAnimationFrame', function (orig) { - return function (cb) { - return orig(self.wrap(cb)); - }; - }, wrappedBuiltIns); - } // event targets borrowed from bugsnag-js: - // https://github.com/bugsnag/bugsnag-js/blob/master/src/bugsnag.js#L666 +function wrappedCallback(callback) { + function dataCallback(data, original) { + var normalizedData = callback(data) || data; + if (original) { + return original(normalizedData) || normalizedData; + } + return normalizedData; + } + return dataCallback; +} - var eventTargets = ['EventTarget', 'Window', 'Node', 'ApplicationCache', 'AudioTrackList', 'ChannelMergerNode', 'CryptoOperation', 'EventSource', 'FileReader', 'HTMLUnknownElement', 'IDBDatabase', 'IDBRequest', 'IDBTransaction', 'KeyOperation', 'MediaController', 'MessagePort', 'ModalWindow', 'Notification', 'SVGElementInstance', 'Screen', 'TextTrack', 'TextTrackCue', 'TextTrackList', 'WebSocket', 'WebSocketWorker', 'Worker', 'XMLHttpRequest', 'XMLHttpRequestEventTarget', 'XMLHttpRequestUpload']; +function each(obj, callback) { + var i, j; - for (var i = 0; i < eventTargets.length; i++) { - wrapEventTarget(eventTargets[i]); + if (isUndefined(obj.length)) { + for (i in obj) { + if (hasKey(obj, i)) { + callback.call(null, i, obj[i]); + } } - }, - - /** - * Instrument browser built-ins w/ breadcrumb capturing - * - XMLHttpRequests - * - DOM interactions (click/typing) - * - window.location changes - * - console - * - * Can be disabled or individually configured via the `autoBreadcrumbs` config option - */ - _instrumentBreadcrumbs: function _instrumentBreadcrumbs() { - var self = this; - var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; - var wrappedBuiltIns = self._wrappedBuiltIns; - - function wrapProp(prop, xhr) { - if (prop in xhr && isFunction(xhr[prop])) { - fill(xhr, prop, function (orig) { - return self.wrap(orig); - }); // intentionally don't track filled methods on XHR instances + } else { + j = obj.length; + if (j) { + for (i = 0; i < j; i++) { + callback.call(null, i, obj[i]); } } + } +} - if (autoBreadcrumbs.xhr && 'XMLHttpRequest' in _window$1) { - var xhrproto = XMLHttpRequest.prototype; - fill(xhrproto, 'open', function (origOpen) { - return function (method, url) { - // preserve arity - // if Sentry key appears in URL, don't capture - if (isString(url) && url.indexOf(self._globalKey) === -1) { - this.__raven_xhr = { - method: method, - url: url, - status_code: null - }; - } - - return origOpen.apply(this, arguments); - }; - }, wrappedBuiltIns); - fill(xhrproto, 'send', function (origSend) { - return function () { - // preserve arity - var xhr = this; - - function onreadystatechangeHandler() { - if (xhr.__raven_xhr && xhr.readyState === 4) { - try { - // touching statusCode in some platforms throws - // an exception - xhr.__raven_xhr.status_code = xhr.status; - } catch (e) { - /* do nothing */ - } +function objectMerge(obj1, obj2) { + if (!obj2) { + return obj1; + } + each(obj2, function(key, value) { + obj1[key] = value; + }); + return obj1; +} - self.captureBreadcrumb({ - type: 'http', - category: 'xhr', - data: xhr.__raven_xhr - }); - } - } +/** + * This function is only used for react-native. + * react-native freezes object that have already been sent over the + * js bridge. We need this function in order to check if the object is frozen. + * So it's ok that objectFrozen returns false if Object.isFrozen is not + * supported because it's not relevant for other "platforms". See related issue: + * https://github.com/getsentry/react-native-sentry/issues/57 + */ +function objectFrozen(obj) { + if (!Object.isFrozen) { + return false; + } + return Object.isFrozen(obj); +} - var props = ['onload', 'onerror', 'onprogress']; +function truncate(str, max) { + if (typeof max !== 'number') { + throw new Error('2nd argument to `truncate` function should be a number'); + } + if (typeof str !== 'string' || max === 0) { + return str; + } + return str.length <= max ? str : str.substr(0, max) + '\u2026'; +} - for (var j = 0; j < props.length; j++) { - wrapProp(props[j], xhr); - } +/** + * hasKey, a better form of hasOwnProperty + * Example: hasKey(MainHostObject, property) === true/false + * + * @param {Object} host object to check property + * @param {string} key to check + */ +function hasKey(object, key) { + return Object.prototype.hasOwnProperty.call(object, key); +} - if ('onreadystatechange' in xhr && isFunction(xhr.onreadystatechange)) { - fill(xhr, 'onreadystatechange', function (orig) { - return self.wrap(orig, undefined, onreadystatechangeHandler); - } - /* intentionally don't track this instrumentation */ - ); - } else { - // if onreadystatechange wasn't actually set by the page on this xhr, we - // are free to set our own and capture the breadcrumb - xhr.onreadystatechange = onreadystatechangeHandler; - } +function joinRegExp(patterns) { + // Combine an array of regular expressions and strings into one large regexp + // Be mad. + var sources = [], + i = 0, + len = patterns.length, + pattern; - return origSend.apply(this, arguments); - }; - }, wrappedBuiltIns); + for (; i < len; i++) { + pattern = patterns[i]; + if (isString(pattern)) { + // If it's a string, we need to escape it + // Taken from: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions + sources.push(pattern.replace(/([.*+?^=!:${}()|\[\]\/\\])/g, '\\$1')); + } else if (pattern && pattern.source) { + // If it's a regexp already, we want to extract the source + sources.push(pattern.source); } + // Intentionally skip other cases + } + return new RegExp(sources.join('|'), 'i'); +} - if (autoBreadcrumbs.xhr && supportsFetch()) { - fill(_window$1, 'fetch', function (origFetch) { - return function () { - // preserve arity - // Make a copy of the arguments to prevent deoptimization - // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments - var args = new Array(arguments.length); - - for (var i = 0; i < args.length; ++i) { - args[i] = arguments[i]; - } - - var fetchInput = args[0]; - var method = 'GET'; - var url; +function urlencode(o) { + var pairs = []; + each(o, function(key, value) { + pairs.push(encodeURIComponent(key) + '=' + encodeURIComponent(value)); + }); + return pairs.join('&'); +} - if (typeof fetchInput === 'string') { - url = fetchInput; - } else if ('Request' in _window$1 && fetchInput instanceof _window$1.Request) { - url = fetchInput.url; +// borrowed from https://tools.ietf.org/html/rfc3986#appendix-B +// intentionally using regex and not href parsing trick because React Native and other +// environments where DOM might not be available +function parseUrl(url) { + if (typeof url !== 'string') return {}; + var match = url.match(/^(([^:\/?#]+):)?(\/\/([^\/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?$/); - if (fetchInput.method) { - method = fetchInput.method; - } - } else { - url = '' + fetchInput; - } // if Sentry key appears in URL, don't capture, as it's our own request + // coerce to undefined values to empty string so we don't get 'undefined' + var query = match[6] || ''; + var fragment = match[8] || ''; + return { + protocol: match[2], + host: match[4], + path: match[5], + relative: match[5] + query + fragment // everything minus origin + }; +} +function uuid4() { + var crypto = _window.crypto || _window.msCrypto; + if (!isUndefined(crypto) && crypto.getRandomValues) { + // Use window.crypto API if available + // eslint-disable-next-line no-undef + var arr = new Uint16Array(8); + crypto.getRandomValues(arr); - if (url.indexOf(self._globalKey) !== -1) { - return origFetch.apply(this, args); - } + // set 4 in byte 7 + arr[3] = (arr[3] & 0xfff) | 0x4000; + // set 2 most significant bits of byte 9 to '10' + arr[4] = (arr[4] & 0x3fff) | 0x8000; - if (args[1] && args[1].method) { - method = args[1].method; - } + var pad = function(num) { + var v = num.toString(16); + while (v.length < 4) { + v = '0' + v; + } + return v; + }; - var fetchData = { - method: method, - url: url, - status_code: null - }; - return origFetch.apply(this, args).then(function (response) { - fetchData.status_code = response.status; - self.captureBreadcrumb({ - type: 'http', - category: 'fetch', - data: fetchData - }); - return response; - }); - }; - }, wrappedBuiltIns); - } // Capture breadcrumbs from any click that is unhandled / bubbled up all the way - // to the document. Do this before we instrument addEventListener. + return ( + pad(arr[0]) + + pad(arr[1]) + + pad(arr[2]) + + pad(arr[3]) + + pad(arr[4]) + + pad(arr[5]) + + pad(arr[6]) + + pad(arr[7]) + ); + } else { + // http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/2117523#2117523 + return 'xxxxxxxxxxxx4xxxyxxxxxxxxxxxxxxx'.replace(/[xy]/g, function(c) { + var r = (Math.random() * 16) | 0, + v = c === 'x' ? r : (r & 0x3) | 0x8; + return v.toString(16); + }); + } +} +/** + * Given a child DOM element, returns a query-selector statement describing that + * and its ancestors + * e.g. [HTMLElement] => body > div > input#foo.btn[name=baz] + * @param elem + * @returns {string} + */ +function htmlTreeAsString(elem) { + /* eslint no-extra-parens:0*/ + var MAX_TRAVERSE_HEIGHT = 5, + MAX_OUTPUT_LEN = 80, + out = [], + height = 0, + len = 0, + separator = ' > ', + sepLength = separator.length, + nextStr; - if (autoBreadcrumbs.dom && this._hasDocument) { - if (_document.addEventListener) { - _document.addEventListener('click', self._breadcrumbEventHandler('click'), false); + while (elem && height++ < MAX_TRAVERSE_HEIGHT) { + nextStr = htmlElementAsString(elem); + // bail out if + // - nextStr is the 'html' element + // - the length of the string that would be created exceeds MAX_OUTPUT_LEN + // (ignore this limit if we are on the first iteration) + if ( + nextStr === 'html' || + (height > 1 && len + out.length * sepLength + nextStr.length >= MAX_OUTPUT_LEN) + ) { + break; + } - _document.addEventListener('keypress', self._keypressEventHandler(), false); - } else { - // IE8 Compatibility - _document.attachEvent('onclick', self._breadcrumbEventHandler('click')); + out.push(nextStr); - _document.attachEvent('onkeypress', self._keypressEventHandler()); - } - } // record navigation (URL) changes - // NOTE: in Chrome App environment, touching history.pushState, *even inside - // a try/catch block*, will cause Chrome to output an error to console.error - // borrowed from: https://github.com/angular/angular.js/pull/13945/files + len += nextStr.length; + elem = elem.parentNode; + } + return out.reverse().join(separator); +} - var chrome = _window$1.chrome; - var isChromePackagedApp = chrome && chrome.app && chrome.app.runtime; - var hasPushAndReplaceState = !isChromePackagedApp && _window$1.history && history.pushState && history.replaceState; +/** + * Returns a simple, query-selector representation of a DOM element + * e.g. [HTMLElement] => input#foo.btn[name=baz] + * @param HTMLElement + * @returns {string} + */ +function htmlElementAsString(elem) { + var out = [], + className, + classes, + key, + attr, + i; - if (autoBreadcrumbs.location && hasPushAndReplaceState) { - // TODO: remove onpopstate handler on uninstall() - var oldOnPopState = _window$1.onpopstate; + if (!elem || !elem.tagName) { + return ''; + } - _window$1.onpopstate = function () { - var currentHref = self._location.href; + out.push(elem.tagName.toLowerCase()); + if (elem.id) { + out.push('#' + elem.id); + } - self._captureUrlChange(self._lastHref, currentHref); + className = elem.className; + if (className && isString(className)) { + classes = className.split(/\s+/); + for (i = 0; i < classes.length; i++) { + out.push('.' + classes[i]); + } + } + var attrWhitelist = ['type', 'name', 'title', 'alt']; + for (i = 0; i < attrWhitelist.length; i++) { + key = attrWhitelist[i]; + attr = elem.getAttribute(key); + if (attr) { + out.push('[' + key + '="' + attr + '"]'); + } + } + return out.join(''); +} - if (oldOnPopState) { - return oldOnPopState.apply(this, arguments); - } - }; +/** + * Returns true if either a OR b is truthy, but not both + */ +function isOnlyOneTruthy(a, b) { + return !!(!!a ^ !!b); +} - var historyReplacementFunction = function historyReplacementFunction(origHistFunction) { - // note history.pushState.length is 0; intentionally not declaring - // params to preserve 0 arity - return function () - /* state, title, url */ - { - var url = arguments.length > 2 ? arguments[2] : undefined; // url argument is optional +/** + * Returns true if both parameters are undefined + */ +function isBothUndefined(a, b) { + return isUndefined(a) && isUndefined(b); +} - if (url) { - // coerce to string (this is what pushState does) - self._captureUrlChange(self._lastHref, url + ''); - } +/** + * Returns true if the two input exception interfaces have the same content + */ +function isSameException(ex1, ex2) { + if (isOnlyOneTruthy(ex1, ex2)) return false; - return origHistFunction.apply(this, arguments); - }; - }; + ex1 = ex1.values[0]; + ex2 = ex2.values[0]; - fill(history, 'pushState', historyReplacementFunction, wrappedBuiltIns); - fill(history, 'replaceState', historyReplacementFunction, wrappedBuiltIns); - } + if (ex1.type !== ex2.type || ex1.value !== ex2.value) return false; - if (autoBreadcrumbs.console && 'console' in _window$1 && console.log) { - // console - var consoleMethodCallback = function consoleMethodCallback(msg, data) { - self.captureBreadcrumb({ - message: msg, - level: data.level, - category: 'console' - }); - }; + // in case both stacktraces are undefined, we can't decide so default to false + if (isBothUndefined(ex1.stacktrace, ex2.stacktrace)) return false; - each(['debug', 'info', 'warn', 'error', 'log'], function (_, level) { - wrapConsoleMethod(console, level, consoleMethodCallback); - }); - } - }, - _restoreBuiltIns: function _restoreBuiltIns() { - // restore any wrapped builtins - var builtin; + return isSameStacktrace(ex1.stacktrace, ex2.stacktrace); +} - while (this._wrappedBuiltIns.length) { - builtin = this._wrappedBuiltIns.shift(); - var obj = builtin[0], - name = builtin[1], - orig = builtin[2]; - obj[name] = orig; - } - }, - _restoreConsole: function _restoreConsole() { - // eslint-disable-next-line guard-for-in - for (var method in this._originalConsoleMethods) { - this._originalConsole[method] = this._originalConsoleMethods[method]; - } - }, - _drainPlugins: function _drainPlugins() { - var self = this; // FIX ME TODO +/** + * Returns true if the two input stack trace interfaces have the same content + */ +function isSameStacktrace(stack1, stack2) { + if (isOnlyOneTruthy(stack1, stack2)) return false; - each(this._plugins, function (_, plugin) { - var installer = plugin[0]; - var args = plugin[1]; - installer.apply(self, [self].concat(args)); - }); - }, - _parseDSN: function _parseDSN(str) { - var m = dsnPattern.exec(str), - dsn = {}, - i = 7; + var frames1 = stack1.frames; + var frames2 = stack2.frames; + + // Exit early if frame count differs + if (frames1.length !== frames2.length) return false; + + // Iterate through every frame; bail out if anything differs + var a, b; + for (var i = 0; i < frames1.length; i++) { + a = frames1[i]; + b = frames2[i]; + if ( + a.filename !== b.filename || + a.lineno !== b.lineno || + a.colno !== b.colno || + a['function'] !== b['function'] + ) + return false; + } + return true; +} + +/** + * Polyfill a method + * @param obj object e.g. `document` + * @param name method name present on object e.g. `addEventListener` + * @param replacement replacement function + * @param track {optional} record instrumentation to an array + */ +function fill(obj, name, replacement, track) { + if (obj == null) return; + var orig = obj[name]; + obj[name] = replacement(orig); + obj[name].__raven__ = true; + obj[name].__orig__ = orig; + if (track) { + track.push([obj, name, orig]); + } +} + +/** + * Join values in array + * @param input array of values to be joined together + * @param delimiter string to be placed in-between values + * @returns {string} + */ +function safeJoin(input, delimiter) { + if (!isArray(input)) return ''; + var output = []; + + for (var i = 0; i < input.length; i++) { try { - while (i--) { - dsn[dsnKeys[i]] = m[i] || ''; - } + output.push(String(input[i])); } catch (e) { - throw new configError('Invalid DSN: ' + str); + output.push('[value cannot be serialized]'); } + } - if (dsn.pass && !this._globalOptions.allowSecretKey) { - throw new configError('Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key'); - } + return output.join(delimiter); +} - return dsn; - }, - _getGlobalServer: function _getGlobalServer(uri) { - // assemble the endpoint from the uri pieces - var globalServer = '//' + uri.host + (uri.port ? ':' + uri.port : ''); +// Default Node.js REPL depth +var MAX_SERIALIZE_EXCEPTION_DEPTH = 3; +// 50kB, as 100kB is max payload size, so half sounds reasonable +var MAX_SERIALIZE_EXCEPTION_SIZE = 50 * 1024; +var MAX_SERIALIZE_KEYS_LENGTH = 40; - if (uri.protocol) { - globalServer = uri.protocol + ':' + globalServer; - } +function utf8Length(value) { + return ~-encodeURI(value).split(/%..|./).length; +} - return globalServer; - }, - _handleOnErrorStackInfo: function _handleOnErrorStackInfo() { - // if we are intentionally ignoring errors via onerror, bail out - if (!this._ignoreOnError) { - this._handleStackInfo.apply(this, arguments); - } - }, - _handleStackInfo: function _handleStackInfo(stackInfo, options) { - var frames = this._prepareFrames(stackInfo, options); +function jsonSize(value) { + return utf8Length(JSON.stringify(value)); +} - this._triggerEvent('handle', { - stackInfo: stackInfo, - options: options - }); +function serializeValue(value) { + if (typeof value === 'string') { + var maxLength = 40; + return truncate(value, maxLength); + } else if ( + typeof value === 'number' || + typeof value === 'boolean' || + typeof value === 'undefined' + ) { + return value; + } - this._processException(stackInfo.name, stackInfo.message, stackInfo.url, stackInfo.lineno, frames, options); - }, - _prepareFrames: function _prepareFrames(stackInfo, options) { - var self = this; - var frames = []; + var type = Object.prototype.toString.call(value); - if (stackInfo.stack && stackInfo.stack.length) { - each(stackInfo.stack, function (i, stack) { - var frame = self._normalizeFrame(stack, stackInfo.url); + // Node.js REPL notation + if (type === '[object Object]') return '[Object]'; + if (type === '[object Array]') return '[Array]'; + if (type === '[object Function]') + return value.name ? '[Function: ' + value.name + ']' : '[Function]'; - if (frame) { - frames.push(frame); - } - }); // e.g. frames captured via captureMessage throw + return value; +} - if (options && options.trimHeadFrames) { - for (var j = 0; j < options.trimHeadFrames && j < frames.length; j++) { - frames[j].in_app = false; - } - } - } +function serializeObject(value, depth) { + if (depth === 0) return serializeValue(value); + + if (isPlainObject(value)) { + return Object.keys(value).reduce(function(acc, key) { + acc[key] = serializeObject(value[key], depth - 1); + return acc; + }, {}); + } else if (Array.isArray(value)) { + return value.map(function(val) { + return serializeObject(val, depth - 1); + }); + } - frames = frames.slice(0, this._globalOptions.stackTraceLimit); - return frames; - }, - _normalizeFrame: function _normalizeFrame(frame, stackInfoUrl) { - // normalize the frames data - var normalized = { - filename: frame.url, - lineno: frame.line, - colno: frame.column, - function: frame.func || '?' - }; // Case when we don't have any information about the error - // E.g. throwing a string or raw object, instead of an `Error` in Firefox - // Generating synthetic error doesn't add any value here - // - // We should probably somehow let a user know that they should fix their code + return serializeValue(value); +} - if (!frame.url) { - normalized.filename = stackInfoUrl; // fallback to whole stacks url from onerror handler - } +function serializeException(ex, depth, maxSize) { + if (!isPlainObject(ex)) return ex; - normalized.in_app = !( // determine if an exception came from outside of our app - // first we check the global includePaths list. - !!this._globalOptions.includePaths.test && !this._globalOptions.includePaths.test(normalized.filename) || // Now we check for fun, if the function name is Raven or TraceKit - /(Raven|TraceKit)\./.test(normalized['function']) || // finally, we do a last ditch effort and check for raven.min.js - /raven\.(min\.)?js$/.test(normalized.filename)); - return normalized; - }, - _processException: function _processException(type, message, fileurl, lineno, frames, options) { - var prefixedMessage = (type ? type + ': ' : '') + (message || ''); + depth = typeof depth !== 'number' ? MAX_SERIALIZE_EXCEPTION_DEPTH : depth; + maxSize = typeof depth !== 'number' ? MAX_SERIALIZE_EXCEPTION_SIZE : maxSize; - if (!!this._globalOptions.ignoreErrors.test && (this._globalOptions.ignoreErrors.test(message) || this._globalOptions.ignoreErrors.test(prefixedMessage))) { - return; - } + var serialized = serializeObject(ex, depth); - var stacktrace; + if (jsonSize(stringify(serialized)) > maxSize) { + return serializeException(ex, depth - 1); + } - if (frames && frames.length) { - fileurl = frames[0].filename || fileurl; // Sentry expects frames oldest to newest - // and JS sends them as newest to oldest + return serialized; +} - frames.reverse(); - stacktrace = { - frames: frames - }; - } else if (fileurl) { - stacktrace = { - frames: [{ - filename: fileurl, - lineno: lineno, - in_app: true - }] - }; - } +function serializeKeysForMessage(keys, maxLength) { + if (typeof keys === 'number' || typeof keys === 'string') return keys.toString(); + if (!Array.isArray(keys)) return ''; - if (!!this._globalOptions.ignoreUrls.test && this._globalOptions.ignoreUrls.test(fileurl)) { - return; - } + keys = keys.filter(function(key) { + return typeof key === 'string'; + }); + if (keys.length === 0) return '[object has no keys]'; - if (!!this._globalOptions.whitelistUrls.test && !this._globalOptions.whitelistUrls.test(fileurl)) { - return; - } + maxLength = typeof maxLength !== 'number' ? MAX_SERIALIZE_KEYS_LENGTH : maxLength; + if (keys[0].length >= maxLength) return keys[0]; - var data = objectMerge({ - // sentry.interfaces.Exception - exception: { - values: [{ - type: type, - value: message, - stacktrace: stacktrace - }] - }, - culprit: fileurl - }, options); // Fire away! + for (var usedKeys = keys.length; usedKeys > 0; usedKeys--) { + var serialized = keys.slice(0, usedKeys).join(', '); + if (serialized.length > maxLength) continue; + if (usedKeys === keys.length) return serialized; + return serialized + '\u2026'; + } - this._send(data); - }, - _trimPacket: function _trimPacket(data) { - // For now, we only want to truncate the two different messages - // but this could/should be expanded to just trim everything - var max = this._globalOptions.maxMessageLength; + return ''; +} - if (data.message) { - data.message = truncate(data.message, max); +function sanitize(input, sanitizeKeys) { + if (!isArray(sanitizeKeys) || (isArray(sanitizeKeys) && sanitizeKeys.length === 0)) + return input; + + var sanitizeRegExp = joinRegExp(sanitizeKeys); + var sanitizeMask = '********'; + var safeInput; + + try { + safeInput = JSON.parse(stringify(input)); + } catch (o_O) { + return input; + } + + function sanitizeWorker(workerInput) { + if (isArray(workerInput)) { + return workerInput.map(function(val) { + return sanitizeWorker(val); + }); } - if (data.exception) { - var exception = data.exception.values[0]; - exception.value = truncate(exception.value, max); + if (isPlainObject(workerInput)) { + return Object.keys(workerInput).reduce(function(acc, k) { + if (sanitizeRegExp.test(k)) { + acc[k] = sanitizeMask; + } else { + acc[k] = sanitizeWorker(workerInput[k]); + } + return acc; + }, {}); } - var request = data.request; + return workerInput; + } - if (request) { - if (request.url) { - request.url = truncate(request.url, this._globalOptions.maxUrlLength); - } + return sanitizeWorker(safeInput); +} - if (request.Referer) { - request.Referer = truncate(request.Referer, this._globalOptions.maxUrlLength); - } - } +module.exports = { + isObject: isObject, + isError: isError, + isErrorEvent: isErrorEvent, + isUndefined: isUndefined, + isFunction: isFunction, + isPlainObject: isPlainObject, + isString: isString, + isArray: isArray, + isEmptyObject: isEmptyObject, + supportsErrorEvent: supportsErrorEvent, + supportsFetch: supportsFetch, + supportsReferrerPolicy: supportsReferrerPolicy, + supportsPromiseRejectionEvent: supportsPromiseRejectionEvent, + wrappedCallback: wrappedCallback, + each: each, + objectMerge: objectMerge, + truncate: truncate, + objectFrozen: objectFrozen, + hasKey: hasKey, + joinRegExp: joinRegExp, + urlencode: urlencode, + uuid4: uuid4, + htmlTreeAsString: htmlTreeAsString, + htmlElementAsString: htmlElementAsString, + isSameException: isSameException, + isSameStacktrace: isSameStacktrace, + parseUrl: parseUrl, + fill: fill, + safeJoin: safeJoin, + serializeException: serializeException, + serializeKeysForMessage: serializeKeysForMessage, + sanitize: sanitize +}; - if (data.breadcrumbs && data.breadcrumbs.values) this._trimBreadcrumbs(data.breadcrumbs); - return data; - }, +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"9":9}],8:[function(_dereq_,module,exports){ +(function (global){ +var utils = _dereq_(7); - /** - * Truncate breadcrumb values (right now just URLs) - */ - _trimBreadcrumbs: function _trimBreadcrumbs(breadcrumbs) { - // known breadcrumb properties with urls - // TODO: also consider arbitrary prop values that start with (https?)?:// - var urlProps = ['to', 'from', 'url'], - urlProp, - crumb, - data; +/* + TraceKit - Cross brower stack traces - for (var i = 0; i < breadcrumbs.values.length; ++i) { - crumb = breadcrumbs.values[i]; - if (!crumb.hasOwnProperty('data') || !isObject(crumb.data) || objectFrozen(crumb.data)) continue; - data = objectMerge({}, crumb.data); + This was originally forked from github.com/occ/TraceKit, but has since been + largely re-written and is now maintained as part of raven-js. Tests for + this are in test/vendor. - for (var j = 0; j < urlProps.length; ++j) { - urlProp = urlProps[j]; + MIT license +*/ - if (data.hasOwnProperty(urlProp) && data[urlProp]) { - data[urlProp] = truncate(data[urlProp], this._globalOptions.maxUrlLength); - } - } +var TraceKit = { + collectWindowErrors: true, + debug: false +}; - breadcrumbs.values[i].data = data; - } - }, - _getHttpData: function _getHttpData() { - if (!this._hasNavigator && !this._hasDocument) return; - var httpData = {}; +// This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) +var _window = + typeof window !== 'undefined' + ? window + : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; - if (this._hasNavigator && _navigator.userAgent) { - httpData.headers = { - 'User-Agent': navigator.userAgent - }; - } // Check in `window` instead of `document`, as we may be in ServiceWorker environment +// global reference to slice +var _slice = [].slice; +var UNKNOWN_FUNCTION = '?'; +// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error#Error_types +var ERROR_TYPES_RE = /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/; - if (_window$1.location && _window$1.location.href) { - httpData.url = _window$1.location.href; - } +function getLocationHref() { + if (typeof document === 'undefined' || document.location == null) return ''; - if (this._hasDocument && _document.referrer) { - if (!httpData.headers) httpData.headers = {}; - httpData.headers.Referer = _document.referrer; - } + return document.location.href; +} - return httpData; - }, - _resetBackoff: function _resetBackoff() { - this._backoffDuration = 0; - this._backoffStart = null; - }, - _shouldBackoff: function _shouldBackoff() { - return this._backoffDuration && now() - this._backoffStart < this._backoffDuration; - }, +/** + * TraceKit.report: cross-browser processing of unhandled exceptions + * + * Syntax: + * TraceKit.report.subscribe(function(stackInfo) { ... }) + * TraceKit.report.unsubscribe(function(stackInfo) { ... }) + * TraceKit.report(exception) + * try { ...code... } catch(ex) { TraceKit.report(ex); } + * + * Supports: + * - Firefox: full stack trace with line numbers, plus column number + * on top frame; column number is not guaranteed + * - Opera: full stack trace with line and column numbers + * - Chrome: full stack trace with line and column numbers + * - Safari: line and column number for the top frame only; some frames + * may be missing, and column number is not guaranteed + * - IE: line and column number for the top frame only; some frames + * may be missing, and column number is not guaranteed + * + * In theory, TraceKit should work on all of the following versions: + * - IE5.5+ (only 8.0 tested) + * - Firefox 0.9+ (only 3.5+ tested) + * - Opera 7+ (only 10.50 tested; versions 9 and earlier may require + * Exceptions Have Stacktrace to be enabled in opera:config) + * - Safari 3+ (only 4+ tested) + * - Chrome 1+ (only 5+ tested) + * - Konqueror 3.5+ (untested) + * + * Requires TraceKit.computeStackTrace. + * + * Tries to catch all unhandled exceptions and report them to the + * subscribed handlers. Please note that TraceKit.report will rethrow the + * exception. This is REQUIRED in order to get a useful stack trace in IE. + * If the exception does not reach the top of the browser, you will only + * get a stack trace from the point where TraceKit.report was called. + * + * Handlers receive a stackInfo object as described in the + * TraceKit.computeStackTrace docs. + */ +TraceKit.report = (function reportModuleWrapper() { + var handlers = [], + lastArgs = null, + lastException = null, + lastExceptionStack = null; /** - * Returns true if the in-process data payload matches the signature - * of the previously-sent data - * - * NOTE: This has to be done at this level because TraceKit can generate - * data from window.onerror WITHOUT an exception object (IE8, IE9, - * other old browsers). This can take the form of an "exception" - * data object with a single frame (derived from the onerror args). + * Add a crash handler. + * @param {Function} handler */ - _isRepeatData: function _isRepeatData(current) { - var last = this._lastData; - if (!last || current.message !== last.message || // defined for captureMessage - current.culprit !== last.culprit // defined for captureException/onerror - ) return false; // Stacktrace interface (i.e. from captureMessage) + function subscribe(handler) { + installGlobalHandler(); + handlers.push(handler); + } - if (current.stacktrace || last.stacktrace) { - return isSameStacktrace(current.stacktrace, last.stacktrace); - } else if (current.exception || last.exception) { - // Exception interface (i.e. from captureException/onerror) - return isSameException(current.exception, last.exception); + /** + * Remove a crash handler. + * @param {Function} handler + */ + function unsubscribe(handler) { + for (var i = handlers.length - 1; i >= 0; --i) { + if (handlers[i] === handler) { + handlers.splice(i, 1); + } } + } - return true; - }, - _setBackoffState: function _setBackoffState(request) { - // If we are already in a backoff state, don't change anything - if (this._shouldBackoff()) { + /** + * Remove all crash handlers. + */ + function unsubscribeAll() { + uninstallGlobalHandler(); + handlers = []; + } + + /** + * Dispatch stack information to all handlers. + * @param {Object.} stack + */ + function notifyHandlers(stack, isWindowError) { + var exception = null; + if (isWindowError && !TraceKit.collectWindowErrors) { return; } + for (var i in handlers) { + if (handlers.hasOwnProperty(i)) { + try { + handlers[i].apply(null, [stack].concat(_slice.call(arguments, 2))); + } catch (inner) { + exception = inner; + } + } + } - var status = request.status; // 400 - project_id doesn't exist or some other fatal - // 401 - invalid/revoked dsn - // 429 - too many requests - - if (!(status === 400 || status === 401 || status === 429)) return; - var retry; + if (exception) { + throw exception; + } + } - try { - // If Retry-After is not in Access-Control-Expose-Headers, most - // browsers will throw an exception trying to access it - if (supportsFetch()) { - retry = request.headers.get('Retry-After'); - } else { - retry = request.getResponseHeader('Retry-After'); - } // Retry-After is returned in seconds + var _oldOnerrorHandler, _onErrorHandlerInstalled; + /** + * Ensures all global unhandled exceptions are recorded. + * Supported by Gecko and IE. + * @param {string} msg Error message. + * @param {string} url URL of script that generated the exception. + * @param {(number|string)} lineNo The line number at which the error + * occurred. + * @param {?(number|string)} colNo The column number at which the error + * occurred. + * @param {?Error} ex The actual Error object. + */ + function traceKitWindowOnError(msg, url, lineNo, colNo, ex) { + var stack = null; + // If 'ex' is ErrorEvent, get real Error from inside + var exception = utils.isErrorEvent(ex) ? ex.error : ex; + // If 'msg' is ErrorEvent, get real message from inside + var message = utils.isErrorEvent(msg) ? msg.message : msg; - retry = parseInt(retry, 10) * 1000; - } catch (e) { - /* eslint no-empty:0 */ - } + if (lastExceptionStack) { + TraceKit.computeStackTrace.augmentStackTraceWithInitialElement( + lastExceptionStack, + url, + lineNo, + message + ); + processLastException(); + } else if (exception && utils.isError(exception)) { + // non-string `exception` arg; attempt to extract stack trace - this._backoffDuration = retry ? // If Sentry server returned a Retry-After value, use it - retry : // Otherwise, double the last backoff duration (starts at 1 sec) - this._backoffDuration * 2 || 1000; - this._backoffStart = now(); - }, - _send: function _send(data) { - var globalOptions = this._globalOptions; + // New chrome and blink send along a real error object + // Let's just report that like a normal error. + // See: https://mikewest.org/2013/08/debugging-runtime-errors-with-window-onerror + stack = TraceKit.computeStackTrace(exception); + notifyHandlers(stack, true); + } else { + var location = { + url: url, + line: lineNo, + column: colNo + }; - var baseData = { - project: this._globalProject, - logger: globalOptions.logger, - platform: 'javascript' - }, - httpData = this._getHttpData(); + var name = undefined; + var groups; - if (httpData) { - baseData.request = httpData; - } // HACK: delete `trimHeadFrames` to prevent from appearing in outbound payload + if ({}.toString.call(message) === '[object String]') { + var groups = message.match(ERROR_TYPES_RE); + if (groups) { + name = groups[1]; + message = groups[2]; + } + } + location.func = UNKNOWN_FUNCTION; - if (data.trimHeadFrames) delete data.trimHeadFrames; - data = objectMerge(baseData, data); // Merge in the tags and extra separately since objectMerge doesn't handle a deep merge - - data.tags = objectMerge(objectMerge({}, this._globalContext.tags), data.tags); - data.extra = objectMerge(objectMerge({}, this._globalContext.extra), data.extra); // Send along our own collected metadata with extra - - data.extra['session:duration'] = now() - this._startTime; - - if (this._breadcrumbs && this._breadcrumbs.length > 0) { - // intentionally make shallow copy so that additions - // to breadcrumbs aren't accidentally sent in this request - data.breadcrumbs = { - values: [].slice.call(this._breadcrumbs, 0) + stack = { + name: name, + message: message, + url: getLocationHref(), + stack: [location] }; + notifyHandlers(stack, true); } - if (this._globalContext.user) { - // sentry.interfaces.User - data.user = this._globalContext.user; - } // Include the environment if it's defined in globalOptions - - - if (globalOptions.environment) data.environment = globalOptions.environment; // Include the release if it's defined in globalOptions - - if (globalOptions.release) data.release = globalOptions.release; // Include server_name if it's defined in globalOptions - - if (globalOptions.serverName) data.server_name = globalOptions.serverName; // Cleanup empty properties before sending them to the server - - Object.keys(data).forEach(function (key) { - if (data[key] == null || data[key] === '' || isEmptyObject(data[key])) { - delete data[key]; - } - }); - - if (isFunction(globalOptions.dataCallback)) { - data = globalOptions.dataCallback(data) || data; - } // Why?????????? - - - if (!data || isEmptyObject(data)) { - return; - } // Check if the request should be filtered or not - - - if (isFunction(globalOptions.shouldSendCallback) && !globalOptions.shouldSendCallback(data)) { - return; - } // Backoff state: Sentry server previously responded w/ an error (e.g. 429 - too many requests), - // so drop requests until "cool-off" period has elapsed. - + if (_oldOnerrorHandler) { + return _oldOnerrorHandler.apply(this, arguments); + } - if (this._shouldBackoff()) { - this._logDebug('warn', 'Raven dropped error due to backoff: ', data); + return false; + } + function installGlobalHandler() { + if (_onErrorHandlerInstalled) { return; } + _oldOnerrorHandler = _window.onerror; + _window.onerror = traceKitWindowOnError; + _onErrorHandlerInstalled = true; + } - if (typeof globalOptions.sampleRate === 'number') { - if (Math.random() < globalOptions.sampleRate) { - this._sendProcessedPayload(data); - } - } else { - this._sendProcessedPayload(data); - } - }, - _getUuid: function _getUuid() { - return uuid4(); - }, - _sendProcessedPayload: function _sendProcessedPayload(data, callback) { - var self = this; - var globalOptions = this._globalOptions; - if (!this.isSetup()) return; // Try and clean up the packet before sending by truncating long values - - data = this._trimPacket(data); // ideally duplicate error testing should occur *before* dataCallback/shouldSendCallback, - // but this would require copying an un-truncated copy of the data packet, which can be - // arbitrarily deep (extra_data) -- could be worthwhile? will revisit - - if (!this._globalOptions.allowDuplicates && this._isRepeatData(data)) { - this._logDebug('warn', 'Raven dropped repeat event: ', data); - + function uninstallGlobalHandler() { + if (!_onErrorHandlerInstalled) { return; - } // Send along an event_id if not explicitly passed. - // This event_id can be used to reference the error within Sentry itself. - // Set lastEventId after we know the error should actually be sent - - - this._lastEventId = data.event_id || (data.event_id = this._getUuid()); // Store outbound payload after trim - - this._lastData = data; - - this._logDebug('debug', 'Raven about to send:', data); + } + _window.onerror = _oldOnerrorHandler; + _onErrorHandlerInstalled = false; + _oldOnerrorHandler = undefined; + } - var auth = { - sentry_version: '7', - sentry_client: 'raven-js/' + this.VERSION, - sentry_key: this._globalKey - }; + function processLastException() { + var _lastExceptionStack = lastExceptionStack, + _lastArgs = lastArgs; + lastArgs = null; + lastExceptionStack = null; + lastException = null; + notifyHandlers.apply(null, [_lastExceptionStack, false].concat(_lastArgs)); + } - if (this._globalSecret) { - auth.sentry_secret = this._globalSecret; + /** + * Reports an unhandled Error to TraceKit. + * @param {Error} ex + * @param {?boolean} rethrow If false, do not re-throw the exception. + * Only used for window.onerror to not cause an infinite loop of + * rethrowing. + */ + function report(ex, rethrow) { + var args = _slice.call(arguments, 1); + if (lastExceptionStack) { + if (lastException === ex) { + return; // already caught by an inner catch block, ignore + } else { + processLastException(); + } } - var exception = data.exception && data.exception.values[0]; // only capture 'sentry' breadcrumb is autoBreadcrumbs is truthy + var stack = TraceKit.computeStackTrace(ex); + lastExceptionStack = stack; + lastException = ex; + lastArgs = args; - if (this._globalOptions.autoBreadcrumbs && this._globalOptions.autoBreadcrumbs.sentry) { - this.captureBreadcrumb({ - category: 'sentry', - message: exception ? (exception.type ? exception.type + ': ' : '') + exception.value : data.message, - event_id: data.event_id, - level: data.level || 'error' // presume error unless specified + // If the stack trace is incomplete, wait for 2 seconds for + // slow slow IE to see if onerror occurs or not before reporting + // this exception; otherwise, we will end up with an incomplete + // stack trace + setTimeout(function() { + if (lastException === ex) { + processLastException(); + } + }, stack.incomplete ? 2000 : 0); - }); + if (rethrow !== false) { + throw ex; // re-throw to propagate to the top level (and cause window.onerror) } + } - var url = this._globalEndpoint; + report.subscribe = subscribe; + report.unsubscribe = unsubscribe; + report.uninstall = unsubscribeAll; + return report; +})(); - (globalOptions.transport || this._makeRequest).call(this, { - url: url, - auth: auth, - data: data, - options: globalOptions, - onSuccess: function success() { - self._resetBackoff(); +/** + * TraceKit.computeStackTrace: cross-browser stack traces in JavaScript + * + * Syntax: + * s = TraceKit.computeStackTrace(exception) // consider using TraceKit.report instead (see below) + * Returns: + * s.name - exception name + * s.message - exception message + * s.stack[i].url - JavaScript or HTML file URL + * s.stack[i].func - function name, or empty for anonymous functions (if guessing did not work) + * s.stack[i].args - arguments passed to the function, if known + * s.stack[i].line - line number, if known + * s.stack[i].column - column number, if known + * + * Supports: + * - Firefox: full stack trace with line numbers and unreliable column + * number on top frame + * - Opera 10: full stack trace with line and column numbers + * - Opera 9-: full stack trace with line numbers + * - Chrome: full stack trace with line and column numbers + * - Safari: line and column number for the topmost stacktrace element + * only + * - IE: no line numbers whatsoever + * + * Tries to guess names of anonymous functions by looking for assignments + * in the source code. In IE and Safari, we have to guess source file names + * by searching for function bodies inside all page scripts. This will not + * work for scripts that are loaded cross-domain. + * Here be dragons: some function names may be guessed incorrectly, and + * duplicate functions may be mismatched. + * + * TraceKit.computeStackTrace should only be used for tracing purposes. + * Logging of unhandled exceptions should be done with TraceKit.report, + * which builds on top of TraceKit.computeStackTrace and provides better + * IE support by utilizing the window.onerror event to retrieve information + * about the top of the stack. + * + * Note: In IE and Safari, no stack trace is recorded on the Error object, + * so computeStackTrace instead walks its *own* chain of callers. + * This means that: + * * in Safari, some methods may be missing from the stack trace; + * * in IE, the topmost function in the stack trace will always be the + * caller of computeStackTrace. + * + * This is okay for tracing (because you are likely to be calling + * computeStackTrace from the function you want to be the topmost element + * of the stack trace anyway), but not okay for logging unhandled + * exceptions (because your catch block will likely be far away from the + * inner function that actually caused the exception). + * + */ +TraceKit.computeStackTrace = (function computeStackTraceWrapper() { + // Contents of Exception in various browsers. + // + // SAFARI: + // ex.message = Can't find variable: qq + // ex.line = 59 + // ex.sourceId = 580238192 + // ex.sourceURL = http://... + // ex.expressionBeginOffset = 96 + // ex.expressionCaretOffset = 98 + // ex.expressionEndOffset = 98 + // ex.name = ReferenceError + // + // FIREFOX: + // ex.message = qq is not defined + // ex.fileName = http://... + // ex.lineNumber = 59 + // ex.columnNumber = 69 + // ex.stack = ...stack trace... (see the example below) + // ex.name = ReferenceError + // + // CHROME: + // ex.message = qq is not defined + // ex.name = ReferenceError + // ex.type = not_defined + // ex.arguments = ['aa'] + // ex.stack = ...stack trace... + // + // INTERNET EXPLORER: + // ex.message = ... + // ex.name = ReferenceError + // + // OPERA: + // ex.message = ...message... (see the example below) + // ex.name = ReferenceError + // ex.opera#sourceloc = 11 (pretty much useless, duplicates the info in ex.message) + // ex.stacktrace = n/a; see 'opera:config#UserPrefs|Exceptions Have Stacktrace' - self._triggerEvent('success', { - data: data, - src: url - }); + /** + * Computes stack trace information from the stack property. + * Chrome and Gecko use this property. + * @param {Error} ex + * @return {?Object.} Stack trace information. + */ + function computeStackTraceFromStackProp(ex) { + if (typeof ex.stack === 'undefined' || !ex.stack) return; - callback && callback(); - }, - onError: function failure(error) { - self._logDebug('error', 'Raven transport failed to send: ', error); + var chrome = /^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i; + var winjs = /^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i; + // NOTE: blob urls are now supposed to always have an origin, therefore it's format + // which is `blob:http://url/path/with-some-uuid`, is matched by `blob.*?:\/` as well + var gecko = /^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i; + // Used to additionally parse URL/line/column from eval frames + var geckoEval = /(\S+) line (\d+)(?: > eval line \d+)* > eval/i; + var chromeEval = /\((\S*)(?::(\d+))(?::(\d+))\)/; + var lines = ex.stack.split('\n'); + var stack = []; + var submatch; + var parts; + var element; + var reference = /^(.*) is undefined$/.exec(ex.message); - if (error.request) { - self._setBackoffState(error.request); + for (var i = 0, j = lines.length; i < j; ++i) { + if ((parts = chrome.exec(lines[i]))) { + var isNative = parts[2] && parts[2].indexOf('native') === 0; // start of line + var isEval = parts[2] && parts[2].indexOf('eval') === 0; // start of line + if (isEval && (submatch = chromeEval.exec(parts[2]))) { + // throw out eval line/column and use top-most line/column number + parts[2] = submatch[1]; // url + parts[3] = submatch[2]; // line + parts[4] = submatch[3]; // column } + element = { + url: !isNative ? parts[2] : null, + func: parts[1] || UNKNOWN_FUNCTION, + args: isNative ? [parts[2]] : [], + line: parts[3] ? +parts[3] : null, + column: parts[4] ? +parts[4] : null + }; + } else if ((parts = winjs.exec(lines[i]))) { + element = { + url: parts[2], + func: parts[1] || UNKNOWN_FUNCTION, + args: [], + line: +parts[3], + column: parts[4] ? +parts[4] : null + }; + } else if ((parts = gecko.exec(lines[i]))) { + var isEval = parts[3] && parts[3].indexOf(' > eval') > -1; + if (isEval && (submatch = geckoEval.exec(parts[3]))) { + // throw out eval line/column and use top-most line number + parts[3] = submatch[1]; + parts[4] = submatch[2]; + parts[5] = null; // no column when eval + } else if (i === 0 && !parts[5] && typeof ex.columnNumber !== 'undefined') { + // FireFox uses this awesome columnNumber property for its top frame + // Also note, Firefox's column number is 0-based and everything else expects 1-based, + // so adding 1 + // NOTE: this hack doesn't work if top-most frame is eval + stack[0].column = ex.columnNumber + 1; + } + element = { + url: parts[3], + func: parts[1] || UNKNOWN_FUNCTION, + args: parts[2] ? parts[2].split(',') : [], + line: parts[4] ? +parts[4] : null, + column: parts[5] ? +parts[5] : null + }; + } else { + continue; + } - self._triggerEvent('failure', { - data: data, - src: url - }); - - error = error || new Error('Raven send failed (no additional details provided)'); - callback && callback(error); + if (!element.func && element.line) { + element.func = UNKNOWN_FUNCTION; } - }); - }, - _makeRequest: function _makeRequest(opts) { - // Auth is intentionally sent as part of query string (NOT as custom HTTP header) to avoid preflight CORS requests - var url = opts.url + '?' + urlencode(opts.auth); - var evaluatedHeaders = null; - var evaluatedFetchParameters = {}; - if (opts.options.headers) { - evaluatedHeaders = this._evaluateHash(opts.options.headers); + stack.push(element); } - if (opts.options.fetchParameters) { - evaluatedFetchParameters = this._evaluateHash(opts.options.fetchParameters); + if (!stack.length) { + return null; } - if (supportsFetch()) { - evaluatedFetchParameters.body = stringify_1(opts.data); - var defaultFetchOptions = objectMerge({}, this._fetchDefaults); - var fetchOptions = objectMerge(defaultFetchOptions, evaluatedFetchParameters); + return { + name: ex.name, + message: ex.message, + url: getLocationHref(), + stack: stack + }; + } - if (evaluatedHeaders) { - fetchOptions.headers = evaluatedHeaders; - } + /** + * Adds information about the first frame to incomplete stack traces. + * Safari and IE require this to get complete data on the first frame. + * @param {Object.} stackInfo Stack trace information from + * one of the compute* methods. + * @param {string} url The URL of the script that caused an error. + * @param {(number|string)} lineNo The line number of the script that + * caused an error. + * @param {string=} message The error generated by the browser, which + * hopefully contains the name of the object that caused the error. + * @return {boolean} Whether or not the stack information was + * augmented. + */ + function augmentStackTraceWithInitialElement(stackInfo, url, lineNo, message) { + var initial = { + url: url, + line: lineNo + }; - return _window$1.fetch(url, fetchOptions).then(function (response) { - if (response.ok) { - opts.onSuccess && opts.onSuccess(); - } else { - var error = new Error('Sentry error code: ' + response.status); // It's called request only to keep compatibility with XHR interface - // and not add more redundant checks in setBackoffState method + if (initial.url && initial.line) { + stackInfo.incomplete = false; + + if (!initial.func) { + initial.func = UNKNOWN_FUNCTION; + } - error.request = response; - opts.onError && opts.onError(error); + if (stackInfo.stack.length > 0) { + if (stackInfo.stack[0].url === initial.url) { + if (stackInfo.stack[0].line === initial.line) { + return false; // already in stack trace + } else if ( + !stackInfo.stack[0].line && + stackInfo.stack[0].func === initial.func + ) { + stackInfo.stack[0].line = initial.line; + return false; + } } - })['catch'](function () { - opts.onError && opts.onError(new Error('Sentry error code: network unavailable')); - }); + } + + stackInfo.stack.unshift(initial); + stackInfo.partial = true; + return true; + } else { + stackInfo.incomplete = true; } - var request = _window$1.XMLHttpRequest && new _window$1.XMLHttpRequest(); - if (!request) return; // if browser doesn't support CORS (e.g. IE7), we are out of luck + return false; + } - var hasCORS = 'withCredentials' in request || typeof XDomainRequest !== 'undefined'; - if (!hasCORS) return; + /** + * Computes stack trace information by walking the arguments.caller + * chain at the time the exception occurred. This will cause earlier + * frames to be missed but is the only way to get any stack trace in + * Safari and IE. The top frame is restored by + * {@link augmentStackTraceWithInitialElement}. + * @param {Error} ex + * @return {?Object.} Stack trace information. + */ + function computeStackTraceByWalkingCallerChain(ex, depth) { + var functionName = /function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i, + stack = [], + funcs = {}, + recursion = false, + parts, + item, + source; + + for ( + var curr = computeStackTraceByWalkingCallerChain.caller; + curr && !recursion; + curr = curr.caller + ) { + if (curr === computeStackTrace || curr === TraceKit.report) { + // console.log('skipping internal function'); + continue; + } - if ('withCredentials' in request) { - request.onreadystatechange = function () { - if (request.readyState !== 4) { - return; - } else if (request.status === 200) { - opts.onSuccess && opts.onSuccess(); - } else if (opts.onError) { - var err = new Error('Sentry error code: ' + request.status); - err.request = request; - opts.onError(err); - } + item = { + url: null, + func: UNKNOWN_FUNCTION, + line: null, + column: null }; - } else { - request = new XDomainRequest(); // xdomainrequest cannot go http -> https (or vice versa), - // so always use protocol relative - url = url.replace(/^https?:/, ''); // onreadystatechange not supported by XDomainRequest + if (curr.name) { + item.func = curr.name; + } else if ((parts = functionName.exec(curr.toString()))) { + item.func = parts[1]; + } - if (opts.onSuccess) { - request.onload = opts.onSuccess; + if (typeof item.func === 'undefined') { + try { + item.func = parts.input.substring(0, parts.input.indexOf('{')); + } catch (e) {} } - if (opts.onError) { - request.onerror = function () { - var err = new Error('Sentry error code: XDomainRequest'); - err.request = request; - opts.onError(err); - }; + if (funcs['' + curr]) { + recursion = true; + } else { + funcs['' + curr] = true; } - } - request.open('POST', url); + stack.push(item); + } - if (evaluatedHeaders) { - each(evaluatedHeaders, function (key, value) { - request.setRequestHeader(key, value); - }); + if (depth) { + // console.log('depth is ' + depth); + // console.log('stack is ' + stack.length); + stack.splice(0, depth); } - request.send(stringify_1(opts.data)); - }, - _evaluateHash: function _evaluateHash(hash) { - var evaluated = {}; + var result = { + name: ex.name, + message: ex.message, + url: getLocationHref(), + stack: stack + }; + augmentStackTraceWithInitialElement( + result, + ex.sourceURL || ex.fileName, + ex.line || ex.lineNumber, + ex.message || ex.description + ); + return result; + } - for (var key in hash) { - if (hash.hasOwnProperty(key)) { - var value = hash[key]; - evaluated[key] = typeof value === 'function' ? value() : value; + /** + * Computes a stack trace for an exception. + * @param {Error} ex + * @param {(string|number)=} depth + */ + function computeStackTrace(ex, depth) { + var stack = null; + depth = depth == null ? 0 : +depth; + + try { + stack = computeStackTraceFromStackProp(ex); + if (stack) { + return stack; + } + } catch (e) { + if (TraceKit.debug) { + throw e; } } - return evaluated; - }, - _logDebug: function _logDebug(level) { - if (this._originalConsoleMethods[level] && this.debug) { - // In IE<10 console methods do not have their own 'apply' method - Function.prototype.apply.call(this._originalConsoleMethods[level], this._originalConsole, [].slice.call(arguments, 1)); - } - }, - _mergeContext: function _mergeContext(key, context) { - if (isUndefined(context)) { - delete this._globalContext[key]; - } else { - this._globalContext[key] = objectMerge(this._globalContext[key] || {}, context); + try { + stack = computeStackTraceByWalkingCallerChain(ex, depth + 1); + if (stack) { + return stack; + } + } catch (e) { + if (TraceKit.debug) { + throw e; + } } + return { + name: ex.name, + message: ex.message, + url: getLocationHref() + }; } -}; // Deprecations -Raven$1.prototype.setUser = Raven$1.prototype.setUserContext; -Raven$1.prototype.setReleaseContext = Raven$1.prototype.setRelease; -var raven = Raven$1; + computeStackTrace.augmentStackTraceWithInitialElement = augmentStackTraceWithInitialElement; + computeStackTrace.computeStackTraceFromStackProp = computeStackTraceFromStackProp; -/** - * Enforces a single instance of the Raven client, and the - * main entry point for Raven. If you are a consumer of the - * Raven library, you SHOULD load this file (vs raven.js). - **/ -// This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) + return computeStackTrace; +})(); -var _window = typeof window !== 'undefined' ? window : typeof commonjsGlobal !== 'undefined' ? commonjsGlobal : typeof self !== 'undefined' ? self : {}; +module.exports = TraceKit; -var _Raven = _window.Raven; -var Raven = new raven(); +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"7":7}],9:[function(_dereq_,module,exports){ /* - * Allow multiple versions of Raven to be installed. - * Strip Raven from the global context and returns the instance. - * - * @return {Raven} - */ + json-stringify-safe + Like JSON.stringify, but doesn't throw on circular references. -Raven.noConflict = function () { - _window.Raven = _Raven; - return Raven; -}; + Originally forked from https://github.com/isaacs/json-stringify-safe + version 5.0.1 on 3/8/2017 and modified to handle Errors serialization + and IE8 compatibility. Tests for this are in test/vendor. -Raven.afterLoad(); -var singleton = Raven; + ISC license: https://github.com/isaacs/json-stringify-safe/blob/master/LICENSE +*/ -/** - * Angular.js plugin - * - * Provides an $exceptionHandler for Angular.js - */ +exports = module.exports = stringify; +exports.getSerialize = serializer; -var wrappedCallback$1 = utils.wrappedCallback; // See https://github.com/angular/angular.js/blob/v1.4.7/src/minErr.js +function indexOf(haystack, needle) { + for (var i = 0; i < haystack.length; ++i) { + if (haystack[i] === needle) return i; + } + return -1; +} -var angularPattern = /^\[((?:[$a-zA-Z0-9]+:)?(?:[$a-zA-Z0-9]+))\] (.*?)\n?(\S+)$/; -var moduleName = 'ngRaven'; +function stringify(obj, replacer, spaces, cycleReplacer) { + return JSON.stringify(obj, serializer(replacer, cycleReplacer), spaces); +} -function angularPlugin(Raven, angular) { - angular = angular || window.angular; - if (!angular) return; +// https://github.com/ftlabs/js-abbreviate/blob/fa709e5f139e7770a71827b1893f22418097fbda/index.js#L95-L106 +function stringifyError(value) { + var err = { + // These properties are implemented as magical getters and don't show up in for in + stack: value.stack, + message: value.message, + name: value.name + }; - function RavenProvider() { - this.$get = ['$window', function ($window) { - return Raven; - }]; + for (var i in value) { + if (Object.prototype.hasOwnProperty.call(value, i)) { + err[i] = value[i]; + } } - function ExceptionHandlerProvider($provide) { - $provide.decorator('$exceptionHandler', ['Raven', '$delegate', exceptionHandler]); - } + return err; +} - function exceptionHandler(R, $delegate) { - return function (ex, cause) { - R.captureException(ex, { - extra: { - cause: cause - } - }); - $delegate(ex, cause); +function serializer(replacer, cycleReplacer) { + var stack = []; + var keys = []; + + if (cycleReplacer == null) { + cycleReplacer = function(key, value) { + if (stack[0] === value) { + return '[Circular ~]'; + } + return '[Circular ~.' + keys.slice(0, indexOf(stack, value)).join('.') + ']'; }; } - angular.module(moduleName, []).provider('Raven', RavenProvider).config(['$provide', ExceptionHandlerProvider]); - Raven.setDataCallback(wrappedCallback$1(function (data) { - return angularPlugin._normalizeData(data); - })); -} + return function(key, value) { + if (stack.length > 0) { + var thisPos = indexOf(stack, this); + ~thisPos ? stack.splice(thisPos + 1) : stack.push(this); + ~thisPos ? keys.splice(thisPos, Infinity, key) : keys.push(key); -angularPlugin._normalizeData = function (data) { - // We only care about mutating an exception - var exception = data.exception; + if (~indexOf(stack, value)) { + value = cycleReplacer.call(this, key, value); + } + } else { + stack.push(value); + } - if (exception) { - exception = exception.values[0]; - var matches = angularPattern.exec(exception.value); + return replacer == null + ? value instanceof Error ? stringifyError(value) : value + : replacer.call(this, key, value); + }; +} - if (matches) { - // This type now becomes something like: $rootScope:inprog - exception.type = matches[1]; - exception.value = matches[2]; - data.message = exception.type + ': ' + exception.value; // auto set a new tag specifically for the angular error url +},{}],10:[function(_dereq_,module,exports){ +/* + * JavaScript MD5 + * https://github.com/blueimp/JavaScript-MD5 + * + * Copyright 2011, Sebastian Tschan + * https://blueimp.net + * + * Licensed under the MIT license: + * https://opensource.org/licenses/MIT + * + * Based on + * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message + * Digest Algorithm, as defined in RFC 1321. + * Version 2.2 Copyright (C) Paul Johnston 1999 - 2009 + * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet + * Distributed under the BSD License + * See http://pajhome.org.uk/crypt/md5 for more info. + */ - data.extra.angularDocs = matches[3].substr(0, 250); - } - } +/* +* Add integers, wrapping at 2^32. This uses 16-bit operations internally +* to work around bugs in some JS interpreters. +*/ +function safeAdd(x, y) { + var lsw = (x & 0xffff) + (y & 0xffff); + var msw = (x >> 16) + (y >> 16) + (lsw >> 16); + return (msw << 16) | (lsw & 0xffff); +} - return data; -}; +/* +* Bitwise rotate a 32-bit number to the left. +*/ +function bitRotateLeft(num, cnt) { + return (num << cnt) | (num >>> (32 - cnt)); +} -angularPlugin.moduleName = moduleName; -var angular = angularPlugin; +/* +* These functions implement the four basic operations the algorithm uses. +*/ +function md5cmn(q, a, b, x, s, t) { + return safeAdd(bitRotateLeft(safeAdd(safeAdd(a, q), safeAdd(x, t)), s), b); +} +function md5ff(a, b, c, d, x, s, t) { + return md5cmn((b & c) | (~b & d), a, b, x, s, t); +} +function md5gg(a, b, c, d, x, s, t) { + return md5cmn((b & d) | (c & ~d), a, b, x, s, t); +} +function md5hh(a, b, c, d, x, s, t) { + return md5cmn(b ^ c ^ d, a, b, x, s, t); +} +function md5ii(a, b, c, d, x, s, t) { + return md5cmn(c ^ (b | ~d), a, b, x, s, t); +} -/** - * Ember.js plugin - * - * Patches event handler callbacks and ajax callbacks. - */ -function emberPlugin(Raven, Ember) { - Ember = Ember || window.Ember; // quit if Ember isn't on the page +/* +* Calculate the MD5 of an array of little-endian words, and a bit length. +*/ +function binlMD5(x, len) { + /* append padding */ + x[len >> 5] |= 0x80 << (len % 32); + x[(((len + 64) >>> 9) << 4) + 14] = len; + + var i; + var olda; + var oldb; + var oldc; + var oldd; + var a = 1732584193; + var b = -271733879; + var c = -1732584194; + var d = 271733878; + + for (i = 0; i < x.length; i += 16) { + olda = a; + oldb = b; + oldc = c; + oldd = d; + + a = md5ff(a, b, c, d, x[i], 7, -680876936); + d = md5ff(d, a, b, c, x[i + 1], 12, -389564586); + c = md5ff(c, d, a, b, x[i + 2], 17, 606105819); + b = md5ff(b, c, d, a, x[i + 3], 22, -1044525330); + a = md5ff(a, b, c, d, x[i + 4], 7, -176418897); + d = md5ff(d, a, b, c, x[i + 5], 12, 1200080426); + c = md5ff(c, d, a, b, x[i + 6], 17, -1473231341); + b = md5ff(b, c, d, a, x[i + 7], 22, -45705983); + a = md5ff(a, b, c, d, x[i + 8], 7, 1770035416); + d = md5ff(d, a, b, c, x[i + 9], 12, -1958414417); + c = md5ff(c, d, a, b, x[i + 10], 17, -42063); + b = md5ff(b, c, d, a, x[i + 11], 22, -1990404162); + a = md5ff(a, b, c, d, x[i + 12], 7, 1804603682); + d = md5ff(d, a, b, c, x[i + 13], 12, -40341101); + c = md5ff(c, d, a, b, x[i + 14], 17, -1502002290); + b = md5ff(b, c, d, a, x[i + 15], 22, 1236535329); + + a = md5gg(a, b, c, d, x[i + 1], 5, -165796510); + d = md5gg(d, a, b, c, x[i + 6], 9, -1069501632); + c = md5gg(c, d, a, b, x[i + 11], 14, 643717713); + b = md5gg(b, c, d, a, x[i], 20, -373897302); + a = md5gg(a, b, c, d, x[i + 5], 5, -701558691); + d = md5gg(d, a, b, c, x[i + 10], 9, 38016083); + c = md5gg(c, d, a, b, x[i + 15], 14, -660478335); + b = md5gg(b, c, d, a, x[i + 4], 20, -405537848); + a = md5gg(a, b, c, d, x[i + 9], 5, 568446438); + d = md5gg(d, a, b, c, x[i + 14], 9, -1019803690); + c = md5gg(c, d, a, b, x[i + 3], 14, -187363961); + b = md5gg(b, c, d, a, x[i + 8], 20, 1163531501); + a = md5gg(a, b, c, d, x[i + 13], 5, -1444681467); + d = md5gg(d, a, b, c, x[i + 2], 9, -51403784); + c = md5gg(c, d, a, b, x[i + 7], 14, 1735328473); + b = md5gg(b, c, d, a, x[i + 12], 20, -1926607734); + + a = md5hh(a, b, c, d, x[i + 5], 4, -378558); + d = md5hh(d, a, b, c, x[i + 8], 11, -2022574463); + c = md5hh(c, d, a, b, x[i + 11], 16, 1839030562); + b = md5hh(b, c, d, a, x[i + 14], 23, -35309556); + a = md5hh(a, b, c, d, x[i + 1], 4, -1530992060); + d = md5hh(d, a, b, c, x[i + 4], 11, 1272893353); + c = md5hh(c, d, a, b, x[i + 7], 16, -155497632); + b = md5hh(b, c, d, a, x[i + 10], 23, -1094730640); + a = md5hh(a, b, c, d, x[i + 13], 4, 681279174); + d = md5hh(d, a, b, c, x[i], 11, -358537222); + c = md5hh(c, d, a, b, x[i + 3], 16, -722521979); + b = md5hh(b, c, d, a, x[i + 6], 23, 76029189); + a = md5hh(a, b, c, d, x[i + 9], 4, -640364487); + d = md5hh(d, a, b, c, x[i + 12], 11, -421815835); + c = md5hh(c, d, a, b, x[i + 15], 16, 530742520); + b = md5hh(b, c, d, a, x[i + 2], 23, -995338651); + + a = md5ii(a, b, c, d, x[i], 6, -198630844); + d = md5ii(d, a, b, c, x[i + 7], 10, 1126891415); + c = md5ii(c, d, a, b, x[i + 14], 15, -1416354905); + b = md5ii(b, c, d, a, x[i + 5], 21, -57434055); + a = md5ii(a, b, c, d, x[i + 12], 6, 1700485571); + d = md5ii(d, a, b, c, x[i + 3], 10, -1894986606); + c = md5ii(c, d, a, b, x[i + 10], 15, -1051523); + b = md5ii(b, c, d, a, x[i + 1], 21, -2054922799); + a = md5ii(a, b, c, d, x[i + 8], 6, 1873313359); + d = md5ii(d, a, b, c, x[i + 15], 10, -30611744); + c = md5ii(c, d, a, b, x[i + 6], 15, -1560198380); + b = md5ii(b, c, d, a, x[i + 13], 21, 1309151649); + a = md5ii(a, b, c, d, x[i + 4], 6, -145523070); + d = md5ii(d, a, b, c, x[i + 11], 10, -1120210379); + c = md5ii(c, d, a, b, x[i + 2], 15, 718787259); + b = md5ii(b, c, d, a, x[i + 9], 21, -343485551); + + a = safeAdd(a, olda); + b = safeAdd(b, oldb); + c = safeAdd(c, oldc); + d = safeAdd(d, oldd); + } + return [a, b, c, d]; +} - if (!Ember) return; - var _oldOnError = Ember.onerror; +/* +* Convert an array of little-endian words to a string +*/ +function binl2rstr(input) { + var i; + var output = ''; + var length32 = input.length * 32; + for (i = 0; i < length32; i += 8) { + output += String.fromCharCode((input[i >> 5] >>> (i % 32)) & 0xff); + } + return output; +} - Ember.onerror = function EmberOnError(error) { - Raven.captureException(error); +/* +* Convert a raw string to an array of little-endian words +* Characters >255 have their high-byte silently ignored. +*/ +function rstr2binl(input) { + var i; + var output = []; + output[(input.length >> 2) - 1] = undefined; + for (i = 0; i < output.length; i += 1) { + output[i] = 0; + } + var length8 = input.length * 8; + for (i = 0; i < length8; i += 8) { + output[i >> 5] |= (input.charCodeAt(i / 8) & 0xff) << (i % 32); + } + return output; +} - if (typeof _oldOnError === 'function') { - _oldOnError.call(this, error); - } - }; +/* +* Calculate the MD5 of a raw string +*/ +function rstrMD5(s) { + return binl2rstr(binlMD5(rstr2binl(s), s.length * 8)); +} - Ember.RSVP.on('error', function (reason) { - if (reason instanceof Error) { - Raven.captureException(reason, { - extra: { - context: 'Unhandled Promise error detected' - } - }); - } else { - Raven.captureMessage('Unhandled Promise error detected', { - extra: { - reason: reason - } - }); - } - }); +/* +* Calculate the HMAC-MD5, of a key and some data (raw strings) +*/ +function rstrHMACMD5(key, data) { + var i; + var bkey = rstr2binl(key); + var ipad = []; + var opad = []; + var hash; + ipad[15] = opad[15] = undefined; + if (bkey.length > 16) { + bkey = binlMD5(bkey, key.length * 8); + } + for (i = 0; i < 16; i += 1) { + ipad[i] = bkey[i] ^ 0x36363636; + opad[i] = bkey[i] ^ 0x5c5c5c5c; + } + hash = binlMD5(ipad.concat(rstr2binl(data)), 512 + data.length * 8); + return binl2rstr(binlMD5(opad.concat(hash), 512 + 128)); +} + +/* +* Convert a raw string to a hex string +*/ +function rstr2hex(input) { + var hexTab = '0123456789abcdef'; + var output = ''; + var x; + var i; + for (i = 0; i < input.length; i += 1) { + x = input.charCodeAt(i); + output += hexTab.charAt((x >>> 4) & 0x0f) + hexTab.charAt(x & 0x0f); + } + return output; } -var ember = emberPlugin; +/* +* Encode a string as utf-8 +*/ +function str2rstrUTF8(input) { + return unescape(encodeURIComponent(input)); +} -/* This file was generated by './scripts/generate-plugin-combinations.js'! */ +/* +* Take string arguments and return either raw or hex encoded strings +*/ +function rawMD5(s) { + return rstrMD5(str2rstrUTF8(s)); +} +function hexMD5(s) { + return rstr2hex(rawMD5(s)); +} +function rawHMACMD5(k, d) { + return rstrHMACMD5(str2rstrUTF8(k), str2rstrUTF8(d)); +} +function hexHMACMD5(k, d) { + return rstr2hex(rawHMACMD5(k, d)); +} -singleton.addPlugin(angular).addPlugin(ember); -var angular_ember = {}; +function md5(string, key, raw) { + if (!key) { + if (!raw) { + return hexMD5(string); + } + return rawMD5(string); + } + if (!raw) { + return hexHMACMD5(key, string); + } + return rawHMACMD5(key, string); +} -return angular_ember; +module.exports = md5; -}))); +},{}]},{},[6,1,2])(6) +}); \ No newline at end of file diff --git a/dist/angular,ember/raven.min.js b/dist/angular,ember/raven.min.js index cbf97dd61cbb..fe6d688ad89d 100644 --- a/dist/angular,ember/raven.min.js +++ b/dist/angular,ember/raven.min.js @@ -1,3 +1,4 @@ -/*! Raven.js 3.22.2 (1b6187b) | github.com/getsentry/raven-js */ -!function(a,b){"object"==typeof exports&&"undefined"!=typeof module?module.exports=b():"function"==typeof define&&define.amd?define(b):a.Raven=b()}(this,function(){"use strict";function a(a,b){return b={exports:{}},a(b,b.exports),b.exports}function b(a){return(b="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(a){return typeof a}:function(a){return a&&"function"==typeof Symbol&&a.constructor===Symbol&&a!==Symbol.prototype?"symbol":typeof a})(a)}function c(a){return"object"===b(a)&&null!==a}function d(a){switch({}.toString.call(a)){case"[object Error]":return!0;case"[object Exception]":return!0;case"[object DOMException]":return!0;default:return a instanceof Error}}function e(a){return l()&&"[object ErrorEvent]"==={}.toString.call(a)}function f(a){return void 0===a}function g(a){return"function"==typeof a}function h(a){return"[object Object]"===Object.prototype.toString.call(a)}function i(a){return"[object String]"===Object.prototype.toString.call(a)}function j(a){return"[object Array]"===Object.prototype.toString.call(a)}function k(a){if(!h(a))return!1;for(var b in a)if(a.hasOwnProperty(b))return!1;return!0}function l(){try{return new ErrorEvent(""),!0}catch(a){return!1}}function m(){if(!("fetch"in O))return!1;try{return new Headers,new Request(""),new Response,!0}catch(a){return!1}}function n(a){function b(b,c){var d=a(b)||b;return c?c(d)||d:d}return b}function o(a,b){var c,d;if(f(a.length))for(c in a)s(a,c)&&b.call(null,c,a[c]);else if(d=a.length)for(c=0;c ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function y(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&i(b))for(c=b.split(/\s+/),f=0;f=0;--b)l[b]===a&&l.splice(b,1)}function c(){g(),l=[]}function d(a,b){var c=null;if(!b||Q.collectWindowErrors){for(var d in l)if(l.hasOwnProperty(d))try{l[d].apply(null,[a].concat(S.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function e(a,b,c,e,f){var g=null,i=P.isErrorEvent(f)?f.error:f,k=P.isErrorEvent(a)?a.message:a;if(o)Q.computeStackTrace.augmentStackTraceWithInitialElement(o,b,c,k),h();else if(i&&P.isError(i))g=Q.computeStackTrace(i),d(g,!0);else{var l,m={url:b,line:c,column:e},n=void 0;if("[object String]"==={}.toString.call(k)){var l=k.match(U);l&&(n=l[1],k=l[2])}m.func=T,g={name:n,message:k,url:F(),stack:[m]},d(g,!0)}return!!j&&j.apply(this,arguments)}function f(){k||(j=R.onerror,R.onerror=e,k=!0)}function g(){k&&(R.onerror=j,k=!1,j=void 0)}function h(){var a=o,b=m;m=null,o=null,n=null,d.apply(null,[a,!1].concat(b))}function i(a,b){var c=S.call(arguments,1);if(o){if(n===a)return;h()}var d=Q.computeStackTrace(a);if(o=d,n=a,m=c,setTimeout(function(){n===a&&h()},d.incomplete?2e3:0),b!==!1)throw a}var j,k,l=[],m=null,n=null,o=null;return i.subscribe=a,i.unsubscribe=b,i.uninstall=c,i}(),Q.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,d,e=/^\s*at (.*?) ?\(((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,f=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|\[native).*?|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,g=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,h=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,i=/\((\S*)(?::(\d+))(?::(\d+))\)/,j=a.stack.split("\n"),k=[],l=(/^(.*) is undefined$/.exec(a.message),0),m=j.length;l eval")>-1;o&&(b=h.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==l||c[5]||"undefined"==typeof a.columnNumber||(k[0].column=a.columnNumber+1),d={url:c[3],func:c[1]||T,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}!d.func&&d.line&&(d.func=T),k.push(d)}return k.length?{name:a.name,message:a.message,url:F(),stack:k}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=T),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,e){for(var f,g,h=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,i=[],j={},k=!1,l=c.caller;l&&!k;l=l.caller)if(l!==d&&l!==Q.report){if(g={url:null,func:T,line:null,column:null},l.name?g.func=l.name:(f=h.exec(l.toString()))&&(g.func=f[1]),"undefined"==typeof g.func)try{g.func=f.input.substring(0,f.input.indexOf("{"))}catch(m){}j[""+l]?k=!0:j[""+l]=!0,i.push(g)}e&&i.splice(0,e);var n={name:a.name,message:a.message,url:F(),stack:i};return b(n,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),n}function d(b,d){var e=null;d=null==d?0:+d;try{if(e=a(b))return e}catch(f){if(Q.debug)throw f}try{if(e=c(b,d+1))return e}catch(f){if(Q.debug)throw f}return{name:b.name,message:b.message,url:F()}}return d.augmentStackTraceWithInitialElement=b,d.computeStackTraceFromStackProp=a,d}();var V=Q,W=a(function(a,b){function c(a,b){for(var c=0;c0){var i=c(d,this);~i?d.splice(i+1):d.push(this),~i?f.splice(i,1/0,g):f.push(g),~c(d,h)&&(h=b.call(this,g,h))}else d.push(h);return null==a?h instanceof Error?e(h):h:a.call(this,g,h)}}b=a.exports=d,b.getSerialize=f});G.prototype=new Error,G.prototype.constructor=G;var X=G,Y=function(a,b,c){var d=a[b],e=a;if(b in a){var f="warn"===b?"warning":b;a[b]=function(){var a=[].slice.call(arguments),g=P.safeJoin(a," "),h={level:f,logger:"console",extra:{arguments:a}};"assert"===b?a[0]===!1&&(g="Assertion failed: "+(P.safeJoin(a.slice(1)," ")||"console.assert"),h.extra.arguments=a.slice(1),c&&c(g,h)):c&&c(g,h),d&&Function.prototype.apply.call(d,e,a)}}},Z={wrapMethod:Y},$=P.isError,_=P.isObject,aa=P.isErrorEvent,ba=P.isUndefined,ca=P.isFunction,da=P.isString,ea=P.isArray,fa=P.isEmptyObject,ga=P.each,ha=P.objectMerge,ia=P.truncate,ja=P.objectFrozen,ka=P.hasKey,la=P.joinRegExp,ma=P.urlencode,na=P.uuid4,oa=P.htmlTreeAsString,pa=P.isSameException,qa=P.isSameStacktrace,ra=P.parseUrl,sa=P.fill,ta=P.supportsFetch,ua=Z.wrapMethod,va="source protocol user pass host port path".split(" "),wa=/^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/,xa="undefined"!=typeof window?window:"undefined"!=typeof M?M:"undefined"!=typeof self?self:{},ya=xa.document,za=xa.navigator;J.prototype={VERSION:"3.22.2",debug:!1,TraceKit:V,config:function(a,b){var c=this;if(c.i)return this.D("error","Error: Raven has already been configured"),c;if(!a)return c;var d=c.m;b&&ga(b,function(a,b){"tags"===a||"extra"===a||"user"===a?c.l[a]=b:d[a]=b}),c.setDSN(a),d.ignoreErrors.push(/^Script error\.?$/),d.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/),d.ignoreErrors=la(d.ignoreErrors),d.ignoreUrls=!!d.ignoreUrls.length&&la(d.ignoreUrls),d.whitelistUrls=!!d.whitelistUrls.length&&la(d.whitelistUrls),d.includePaths=la(d.includePaths),d.maxBreadcrumbs=Math.max(0,Math.min(d.maxBreadcrumbs||100,100));var e={xhr:!0,console:!0,dom:!0,location:!0,sentry:!0},f=d.autoBreadcrumbs;"[object Object]"==={}.toString.call(f)?f=ha(e,f):f!==!1&&(f=e),d.autoBreadcrumbs=f;var g={tryCatch:!0},h=d.instrument;return"[object Object]"==={}.toString.call(h)?h=ha(g,h):h!==!1&&(h=g),d.instrument=h,V.collectWindowErrors=!!d.collectWindowErrors,c},install:function(){var a=this;return a.isSetup()&&!a.p&&(V.report.subscribe(function(){a.E.apply(a,arguments)}),a.F(),a.m.instrument&&a.m.instrument.tryCatch&&a.G(),a.m.autoBreadcrumbs&&a.H(),a.I(),a.p=!0),Error.stackTraceLimit=a.m.stackTraceLimit,this},setDSN:function(a){var b=this,c=b.J(a),d=c.path.lastIndexOf("/"),e=c.path.substr(1,d);b.K=a,b.j=c.user,b.L=c.pass&&c.pass.substr(1),b.k=c.path.substr(d+1),b.i=b.M(c),b.N=b.i+"/"+e+"api/"+b.k+"/store/",this.A()},context:function(a,b,c){return ca(a)&&(c=b||[],b=a,a=void 0),this.wrap(a,b).apply(this,c)},wrap:function(a,b,c){function d(){var d=[],f=arguments.length,g=!a||a&&a.deep!==!1;for(c&&ca(c)&&c.apply(this,arguments);f--;)d[f]=g?e.wrap(a,arguments[f]):arguments[f];try{return b.apply(this,d)}catch(h){throw e.O(),e.captureException(h,a),h}}var e=this;if(ba(b)&&!ca(a))return a;if(ca(a)&&(b=a,a=void 0),!ca(b))return b;try{if(b.a)return b;if(b.P)return b.P}catch(f){return b}for(var g in b)ka(b,g)&&(d[g]=b[g]);return d.prototype=b.prototype,b.P=d,d.a=!0,d.b=b,d},uninstall:function(){return V.report.uninstall(),this.Q(),this.R(),this.S(),Error.stackTraceLimit=this.q,this.p=!1,this},captureException:function(a,b){b=ha({trimHeadFrames:0},b?b:{});var c=!$(a),d=!aa(a),e=aa(a)&&!a.error;if(c&&d||e)return this.captureMessage(a,ha(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}));aa(a)&&(a=a.error),this.f=a;try{var f=V.computeStackTrace(a);this.T(f,b)}catch(g){if(a!==g)throw g}return this},captureMessage:function(a,b){if(!this.m.ignoreErrors.test||!this.m.ignoreErrors.test(a)){b=b||{};var c,d=ha({message:a+""},b);try{throw new Error(a)}catch(e){c=e}c.name=null;var f=V.computeStackTrace(c),g=ea(f.stack)&&f.stack[1],h=g&&g.url||"";if((!this.m.ignoreUrls.test||!this.m.ignoreUrls.test(h))&&(!this.m.whitelistUrls.test||this.m.whitelistUrls.test(h))){if(this.m.stacktrace||b&&b.stacktrace){b=ha({fingerprint:a,trimHeadFrames:(b.trimHeadFrames||0)+1},b);var i=this.U(f,b);d.stacktrace={frames:i.reverse()}}return this.V(d),this}}},captureBreadcrumb:function(a){var b=ha({timestamp:H()/1e3},a);if(ca(this.m.breadcrumbCallback)){var c=this.m.breadcrumbCallback(b);if(_(c)&&!fa(c))b=c;else if(c===!1)return this}return this.w.push(b),this.w.length>this.m.maxBreadcrumbs&&this.w.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.t.push([a,b]),this.p&&this.I(),this},setUserContext:function(a){return this.l.user=a,this},setExtraContext:function(a){return this.W("extra",a),this},setTagsContext:function(a){return this.W("tags",a),this},clearContext:function(){return this.l={},this},getContext:function(){return JSON.parse(W(this.l))},setEnvironment:function(a){return this.m.environment=a,this},setRelease:function(a){return this.m.release=a,this},setDataCallback:function(a){var b=this.m.dataCallback;return this.m.dataCallback=I(b,a),this},setBreadcrumbCallback:function(a){var b=this.m.breadcrumbCallback;return this.m.breadcrumbCallback=I(b,a),this},setShouldSendCallback:function(a){var b=this.m.shouldSendCallback;return this.m.shouldSendCallback=I(b,a),this},setTransport:function(a){return this.m.transport=a,this},lastException:function(){return this.f},lastEventId:function(){return this.h},isSetup:function(){return!!this.c&&(!!this.i||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.D("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=xa.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(ya){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new X("Missing eventId");var c=a.dsn||this.K;if(!c)throw new X("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.l.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.M(this.J(c)),h=ya.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(ya.head||ya.body).appendChild(h)}},O:function(){var a=this;this.o+=1,setTimeout(function(){a.o-=1})},X:function(a,b){var c,d;if(this.d){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),ya.createEvent?(c=ya.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=ya.createEventObject(),c.eventType=a);for(d in b)ka(b,d)&&(c[d]=b[d]);if(ya.createEvent)ya.dispatchEvent(c);else try{ya.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},Y:function(a){var b=this;return function(c){if(b.Z=null,b.x!==c){b.x=c;var d;try{d=oa(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},$:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.Z;g||a.Y("input")(c),clearTimeout(g),a.Z=setTimeout(function(){a.Z=null},b)}}},_:function(a,b){var c=ra(this.y.href),d=ra(b),e=ra(a);this.z=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},F:function(){var a=this;a.aa=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.a?a.aa.apply(this.b,arguments):a.aa.apply(this,arguments)}},Q:function(){this.aa&&(Function.prototype.toString=this.aa)},G:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b._(b.z,c+""),a.apply(this,arguments)}};sa(history,"pushState",j,d),sa(history,"replaceState",j,d)}if(c.console&&"console"in xa&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};ga(["debug","info","warn","error","log"],function(a,b){ua(console,b,k)})}},R:function(){for(var a;this.v.length;){a=this.v.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},S:function(){for(var a in this.s)this.r[a]=this.s[a]},I:function(){var a=this;ga(this.t,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},J:function(a){var b=wa.exec(a),c={},d=7;try{for(;d--;)c[va[d]]=b[d]||""}catch(e){throw new X("Invalid DSN: "+a)}if(c.pass&&!this.m.allowSecretKey)throw new X("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},M:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},E:function(){this.o||this.T.apply(this,arguments)},T:function(a,b){var c=this.U(a,b);this.X("handle",{stackInfo:a,options:b}),this.ca(a.name,a.message,a.url,a.lineno,c,b)},U:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(ga(a.stack,function(b,e){var f=c.da(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.w,0)}),this.l.user&&(a.user=this.l.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||fa(a[b]))&&delete a[b]}),ca(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!fa(a)&&(!ca(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.ja()?void this.D("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random()this.l.maxBreadcrumbs&&this.v.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.s.push([a,b]),this.o&&this.G(),this},setUserContext:function(a){return this.k.user=a,this},setExtraContext:function(a){return this.$("extra",a),this},setTagsContext:function(a){return this.$("tags",a),this},clearContext:function(){return this.k={},this},getContext:function(){return JSON.parse(h(this.k))},setEnvironment:function(a){return this.l.environment=a,this},setRelease:function(a){return this.l.release=a,this},setDataCallback:function(a){var b=this.l.dataCallback;return this.l.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.l.breadcrumbCallback;return this.l.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.l.shouldSendCallback;return this.l.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.l.transport=a,this},lastException:function(){return this.e},lastEventId:function(){return this.g},isSetup:function(){return!!this.b&&(!!this.h||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.A("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=P.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(Q){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.I;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.k.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.K(this.H(c)),h=Q.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(Q.head||Q.body).appendChild(h)}},M:function(){var a=this;this.n+=1,setTimeout(function(){a.n-=1})},_:function(a,b){var c,d;if(this.c){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),Q.createEvent?(c=Q.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=Q.createEventObject(),c.eventType=a);for(d in b)y(b,d)&&(c[d]=b[d]);if(Q.createEvent)Q.dispatchEvent(c);else try{Q.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},aa:function(a){var b=this;return function(c){if(b.ba=null,b.w!==c){b.w=c;var d;try{d=C(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ca:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.ba;g||a.aa("input")(c),clearTimeout(g),a.ba=setTimeout(function(){a.ba=null},b)}}},da:function(a,b){var c=F(this.x.href),d=F(b),e=F(a);this.y=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},D:function(){var a=this;a.ea=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.N?a.ea.apply(this.P,arguments):a.ea.apply(this,arguments)}},R:function(){this.ea&&(Function.prototype.toString=this.ea)},E:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.da(b.y,c+""),a.apply(this,arguments)}};G(history,"pushState",j,d),G(history,"replaceState",j,d)}if(c.console&&"console"in P&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};u(["debug","info","warn","error","log"],function(a,b){M(console,b,k)})}},S:function(){for(var a;this.u.length;){a=this.u.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},T:function(){for(var a in this.r)this.q[a]=this.r[a]},G:function(){var a=this;u(this.s,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},H:function(a){var b=O.exec(a),c={},d=7;try{for(;d--;)c[N[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.l.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},K:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},B:function(){this.n||this.W.apply(this,arguments)},W:function(a,b){var c=this.Y(a,b);this._("handle",{stackInfo:a,options:b}),this.ga(a.name,a.message,a.url,a.lineno,c,b)},Y:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(u(a.stack,function(b,e){var f=c.ha(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.v,0)}),this.k.user&&(a.user=this.k.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),a=this.qa(a),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||t(a[b]))&&delete a[b]}),q(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!t(a)&&(!q(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.na()?void this.A("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function B(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&j(b))for(c=b.split(/\s+/),f=0;fc?M(a,b-1):d}function N(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?T:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function O(a,b){function c(a){return k(a)?a.map(function(a){return c(a)}):i(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!k(b)||k(b)&&0===b.length)return a;var d,e=w(b),f="********";try{d=JSON.parse(P(a))}catch(g){return a}return c(d)}var P=a(9),Q="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},R=3,S=51200,T=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isUndefined:g,isFunction:h,isPlainObject:i,isString:j,isArray:k,isEmptyObject:l,supportsErrorEvent:m,supportsFetch:n,supportsReferrerPolicy:o,supportsPromiseRejectionEvent:p,wrappedCallback:q,each:r,objectMerge:s,truncate:u,objectFrozen:t,hasKey:v,joinRegExp:w,urlencode:x,uuid4:z,htmlTreeAsString:A,htmlElementAsString:B,isSameException:E,isSameStacktrace:F,parseUrl:y,fill:G,safeJoin:H,serializeException:M,serializeKeysForMessage:N,sanitize:O}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{9:9}],8:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}var e=a(7),f={collectWindowErrors:!0,debug:!1},g="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},h=[].slice,i="?",j=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;f.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function k(a,b){var c=null;if(!b||f.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(h.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,g,h){var l=null,m=e.isErrorEvent(h)?h.error:h,n=e.isErrorEvent(a)?a.message:a;if(v)f.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&e.isError(m))l=f.computeStackTrace(m),k(l,!0);else{var p,r={url:b,line:c,column:g},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(j);p&&(s=p[1],n=p[2])}r.func=i,l={name:s,message:n,url:d(),stack:[r]},k(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=g.onerror,g.onerror=l,r=!0)}function n(){r&&(g.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,k.apply(null,[a,!1].concat(b))}function p(a,b){var c=h.call(arguments,1);if(v){if(u===a)return;o()}var d=f.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),f.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,e,f=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,g=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,h=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,j=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,k=/\((\S*)(?::(\d+))(?::(\d+))\)/,l=a.stack.split("\n"),m=[],n=(/^(.*) is undefined$/.exec(a.message),0),o=l.length;n eval")>-1;q&&(b=j.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==n||c[5]||"undefined"==typeof a.columnNumber||(m[0].column=a.columnNumber+1),e={url:c[3],func:c[1]||i,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}!e.func&&e.line&&(e.func=i),m.push(e)}return m.length?{name:a.name,message:a.message,url:d(),stack:m}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=i),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,g){for(var h,j,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==e&&o!==f.report){if(j={url:null,func:i,line:null,column:null},o.name?j.func=o.name:(h=k.exec(o.toString()))&&(j.func=h[1]),"undefined"==typeof j.func)try{j.func=h.input.substring(0,h.input.indexOf("{"))}catch(p){}m[""+o]?n=!0:m[""+o]=!0,l.push(j)}g&&l.splice(0,g);var q={name:a.name,message:a.message,url:d(),stack:l};return b(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),q}function e(b,e){var g=null;e=null==e?0:+e;try{if(g=a(b))return g}catch(h){if(f.debug)throw h}try{if(g=c(b,e+1))return g}catch(h){if(f.debug)throw h}return{name:b.name,message:b.message,url:d()}}return e.augmentStackTraceWithInitialElement=b,e.computeStackTraceFromStackProp=a,e}(),b.exports=f}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{}); +},{7:7}],9:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}],10:[function(a,b,c){function d(a,b){var c=(65535&a)+(65535&b),d=(a>>16)+(b>>16)+(c>>16);return d<<16|65535&c}function e(a,b){return a<>>32-b}function f(a,b,c,f,g,h){return d(e(d(d(b,a),d(f,h)),g),c)}function g(a,b,c,d,e,g,h){return f(b&c|~b&d,a,b,e,g,h)}function h(a,b,c,d,e,g,h){return f(b&d|c&~d,a,b,e,g,h)}function i(a,b,c,d,e,g,h){return f(b^c^d,a,b,e,g,h)}function j(a,b,c,d,e,g,h){return f(c^(b|~d),a,b,e,g,h)}function k(a,b){a[b>>5]|=128<>>9<<4)+14]=b;var c,e,f,k,l,m=1732584193,n=-271733879,o=-1732584194,p=271733878;for(c=0;c>5]>>>b%32&255);return c}function m(a){var b,c=[];for(c[(a.length>>2)-1]=void 0,b=0;b>5]|=(255&a.charCodeAt(b/8))<16&&(e=k(e,8*a.length)),c=0;c<16;c+=1)f[c]=909522486^e[c],g[c]=1549556828^e[c];return d=k(f.concat(m(b)),512+8*b.length),l(k(g.concat(d),640))}function p(a){var b,c,d="0123456789abcdef",e="";for(c=0;c>>4&15)+d.charAt(15&b);return e}function q(a){return unescape(encodeURIComponent(a))}function r(a){return n(q(a))}function s(a){return p(r(a))}function t(a,b){return o(q(a),q(b))}function u(a,b){return p(t(a,b))}function v(a,b,c){return b?c?t(b,a):u(b,a):c?r(a):s(a)}b.exports=v},{}]},{},[6,1,2])(6)}); //# sourceMappingURL=raven.min.js.map \ No newline at end of file diff --git a/dist/angular,ember/raven.min.js.map b/dist/angular,ember/raven.min.js.map index 4e9eda724be5..71a7d521e842 100644 --- a/dist/angular,ember/raven.min.js.map +++ b/dist/angular,ember/raven.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["raven.js"],"names":["global","factory","exports","module","define","amd","Raven","this","createCommonjsModule","fn","_typeof","obj","Symbol","iterator","constructor","prototype","isObject$1","what","isError$1","value","toString","call","Error","isErrorEvent$1","supportsErrorEvent","isUndefined$1","isFunction$1","isPlainObject","Object","isString$1","isArray$1","isEmptyObject$1","_","hasOwnProperty","ErrorEvent","e","supportsFetch$1","_window$3","Headers","Request","Response","wrappedCallback","callback","dataCallback","data","original","normalizedData","each$1","i","j","length","hasKey$1","objectMerge$1","obj1","obj2","key","objectFrozen$1","isFrozen","truncate$1","str","max","substr","object","joinRegExp$1","patterns","pattern","sources","len","push","replace","source","RegExp","join","urlencode$1","o","pairs","encodeURIComponent","parseUrl$1","url","match","query","fragment","protocol","host","path","relative","uuid4$1","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","r","Math","random","htmlTreeAsString$1","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","reverse","className","classes","attr","tagName","toLowerCase","id","split","attrWhitelist","getAttribute","isOnlyOneTruthy","a","b","isBothUndefined","isSameException$1","ex1","ex2","values","type","stacktrace","isSameStacktrace$1","stack1","stack2","frames1","frames","frames2","filename","lineno","colno","fill$1","name","replacement","track","orig","__raven__","__orig__","safeJoin","input","delimiter","output","String","getLocationHref","document","location","href","RavenConfigError","message","now","Date","keepOriginalCallback","isFunction","Raven$1","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window$1","SENTRY_RELEASE","logger","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","_fetchDefaults","method","keepalive","referrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","console","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","_lastHref","_resetBackoff","angularPlugin","angular","RavenProvider","$get","$window","ExceptionHandlerProvider","$provide","decorator","exceptionHandler","R","$delegate","ex","cause","captureException","extra","window","moduleName","provider","config","setDataCallback","wrappedCallback$1","_normalizeData","emberPlugin","Ember","_oldOnError","onerror","error","RSVP","on","reason","context","captureMessage","commonjsGlobal","self","_sPO","setPrototypeOf","p","__proto__","Reflect","construct","Parent","args","Class","Constructor","apply","bind","utils","isObject","isError","isErrorEvent","isString","isArray","isEmptyObject","supportsFetch","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","TraceKit","debug","_window$2","_slice","slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","report","subscribe","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","stack","isWindowError","exception","concat","arguments","inner","traceKitWindowOnError","msg","lineNo","colNo","lastExceptionStack","computeStackTrace","augmentStackTraceWithInitialElement","processLastException","groups","line","column","undefined","func","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","lastException","rethrow","setTimeout","incomplete","uninstall","computeStackTraceFromStackProp","submatch","parts","element","chrome","gecko","winjs","geckoEval","chromeEval","lines","exec","isNative","indexOf","isEval","columnNumber","stackInfo","initial","unshift","partial","computeStackTraceByWalkingCallerChain","depth","item","functionName","funcs","recursion","curr","caller","substring","result","sourceURL","fileName","lineNumber","description","tracekit","stringify_1","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","err","keys","thisPos","Infinity","getSerialize","configError","wrapMethod","level","originalConsoleLevel","originalConsole","sentryLevel","Function","console$1","wrapConsoleMethod","dsnKeys","dsnPattern","navigator","VERSION","dsn","options","_logDebug","globalOptions","setDSN","maxBreadcrumbs","min","autoBreadcrumbDefaults","xhr","dom","sentry","instrumentDefaults","tryCatch","install","isSetup","_handleOnErrorStackInfo","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","lastIndexOf","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","wrap","_before","wrapped","deep","_ignoreNextOnError","__raven_wrapper__","property","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","trimHeadFrames","isNotError","isNotErrorEvent","isErrorEventWithoutError","_handleStackInfo","test","initialCall","fileurl","fingerprint","_prepareFrames","_send","captureBreadcrumb","crumb","timestamp","breadcrumbCallback","shift","addPlugin","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","O","X","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","Y","evtName","_keypressTimeout","target","category","$","debounceDuration","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","from","to","parsedLoc","parsedTo","parsedFrom","F","_originalFunctionToString","Q","G","wrapTimeFn","t","Array","originalCallback","wrapEventTarget","proto","capture","secure","handleEvent","before","clickHandler","keypressHandler","_keypressEventHandler","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","H","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","onreadystatechange","origFetch","fetchInput","fetchData","then","response","addEventListener","attachEvent","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","builtin","S","I","installer","J","m","allowSecretKey","M","port","E","T","_triggerEvent","_processException","U","frame","_normalizeFrame","in_app","da","stackInfoUrl","normalized","function","ca","prefixedMessage","culprit","ea","request","Referer","breadcrumbs","_trimBreadcrumbs","fa","urlProp","urlProps","ga","httpData","userAgent","User-Agent","referrer","A","_backoffDuration","_backoffStart","ja","ka","current","last","la","_shouldBackoff","retry","get","getResponseHeader","parseInt","V","baseData","project","platform","_getHttpData","serverName","server_name","forEach","_sendProcessedPayload","na","ma","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","oa","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","onload","open","setRequestHeader","send","pa","hash","evaluated","D","W","setUser","setReleaseContext","raven","_window","_Raven","noConflict","singleton","angularPattern","matches","angularDocs","ember","angular_ember"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file +{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","angularPlugin","angular","RavenProvider","$get","$window","ExceptionHandlerProvider","$provide","decorator","exceptionHandler","R","$delegate","ex","cause","captureException","extra","moduleName","provider","config","setDataCallback","wrappedCallback","data","_normalizeData","angularPattern","exception","values","matches","exec","value","type","message","angularDocs","substr","addPlugin","6","7","2","emberPlugin","Ember","_oldOnError","onerror","error","RSVP","on","reason","context","captureMessage","3","RavenConfigError","name","prototype","constructor","4","utils","wrapMethod","console","level","callback","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","msg","safeJoin","logger","Function","apply","5","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","sanitizeKeys","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isError","isObject","isPlainObject","isErrorEvent","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","sanitize","wrapConsoleMethod","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","dsn","options","_logDebug","globalOptions","key","setDSN","push","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","toString","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","func","undefined","wrap","_before","wrapped","deep","_ignoreNextOnError","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","U","event","unhandledPromiseRejection","C","_promiseRejectionHandler","bind","addEventListener","Q","removeEventListener","trimHeadFrames","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","V","currentOptions","exKeys","Object","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","M","setTimeout","_","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","aa","evtName","_keypressTimeout","target","category","ca","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","da","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","D","_originalFunctionToString","E","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","F","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","S","builtin","T","G","installer","concat","H","str","m","allowSecretKey","K","port","B","W","stackInfo","_triggerEvent","_processException","lineno","Y","frame","_normalizeFrame","in_app","ha","stackInfoUrl","normalized","filename","line","colno","column","function","ga","prefixedMessage","culprit","ia","request","Referer","breadcrumbs","_trimBreadcrumbs","ja","urlProp","urlProps","ka","httpData","userAgent","User-Agent","referrer","z","_backoffDuration","_backoffStart","na","oa","current","last","pa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Z","baseData","project","platform","_getHttpData","serverName","server_name","_sanitizeData","forEach","random","_sendProcessedPayload","qa","sa","ra","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","ta","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","open","setRequestHeader","send","ua","hash","evaluated","A","$","setUser","setReleaseContext","10","8","9","RavenConstructor","_Raven","noConflict","Client","what","supportsErrorEvent","ErrorEvent","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","sanitizeMask","safeInput","o_O","getLocationHref","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","y","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","charAt","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","string","raw"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file diff --git a/dist/angular,require,vue/raven.js b/dist/angular,require,vue/raven.js index 5ccbadc84e96..fcdb9e8997e9 100644 --- a/dist/angular,require,vue/raven.js +++ b/dist/angular,require,vue/raven.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.22.2 (1b6187b) | github.com/getsentry/raven-js */ +/*! Raven.js 3.24.2 (540f32b) | github.com/getsentry/raven-js */ /* * Includes TraceKit @@ -10,3259 +10,4039 @@ * */ -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : - typeof define === 'function' && define.amd ? define(factory) : - (global.Raven = factory()); -}(this, (function () { 'use strict'; +(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.Raven = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o' : 'anonymous component') + + (vm._isVue && vm.$options.__file ? ' at ' + vm.$options.__file : '') + ); } -function isPlainObject(what) { - return Object.prototype.toString.call(what) === '[object Object]'; -} +function vuePlugin(Raven, Vue) { + Vue = Vue || window.Vue; -function isString$1(what) { - return Object.prototype.toString.call(what) === '[object String]'; -} + // quit if Vue isn't on the page + if (!Vue || !Vue.config) return; -function isArray$1(what) { - return Object.prototype.toString.call(what) === '[object Array]'; -} + var _oldOnError = Vue.config.errorHandler; + Vue.config.errorHandler = function VueErrorHandler(error, vm, info) { + var metaData = {}; -function isEmptyObject$1(what) { - if (!isPlainObject(what)) return false; + // vm and lifecycleHook are not always available + if (Object.prototype.toString.call(vm) === '[object Object]') { + metaData.componentName = formatComponentName(vm); + metaData.propsData = vm.$options.propsData; + } - for (var _ in what) { - if (what.hasOwnProperty(_)) { - return false; + if (typeof info !== 'undefined') { + metaData.lifecycleHook = info; } - } - return true; + Raven.captureException(error, { + extra: metaData + }); + + if (typeof _oldOnError === 'function') { + _oldOnError.call(this, error, vm, info); + } + }; } -function supportsErrorEvent() { - try { - new ErrorEvent(''); // eslint-disable-line no-new +module.exports = vuePlugin; - return true; - } catch (e) { - return false; - } +_dereq_(7).addPlugin(module.exports); +},{"7":7}],4:[function(_dereq_,module,exports){ +function RavenConfigError(message) { + this.name = 'RavenConfigError'; + this.message = message; } +RavenConfigError.prototype = new Error(); +RavenConfigError.prototype.constructor = RavenConfigError; -function supportsFetch$1() { - if (!('fetch' in _window$3)) return false; - - try { - new Headers(); // eslint-disable-line no-new +module.exports = RavenConfigError; - new Request(''); // eslint-disable-line no-new +},{}],5:[function(_dereq_,module,exports){ +var utils = _dereq_(8); - new Response(); // eslint-disable-line no-new +var wrapMethod = function(console, level, callback) { + var originalConsoleLevel = console[level]; + var originalConsole = console; - return true; - } catch (e) { - return false; + if (!(level in console)) { + return; } -} - -function wrappedCallback(callback) { - function dataCallback(data, original) { - var normalizedData = callback(data) || data; - - if (original) { - return original(normalizedData) || normalizedData; - } - return normalizedData; - } + var sentryLevel = level === 'warn' ? 'warning' : level; - return dataCallback; -} + console[level] = function() { + var args = [].slice.call(arguments); -function each$1(obj, callback) { - var i, j; + var msg = utils.safeJoin(args, ' '); + var data = {level: sentryLevel, logger: 'console', extra: {arguments: args}}; - if (isUndefined$1(obj.length)) { - for (i in obj) { - if (hasKey$1(obj, i)) { - callback.call(null, i, obj[i]); + if (level === 'assert') { + if (args[0] === false) { + // Default browsers message + msg = + 'Assertion failed: ' + (utils.safeJoin(args.slice(1), ' ') || 'console.assert'); + data.extra.arguments = args.slice(1); + callback && callback(msg, data); } + } else { + callback && callback(msg, data); } - } else { - j = obj.length; - if (j) { - for (i = 0; i < j; i++) { - callback.call(null, i, obj[i]); - } + // this fails for some browsers. :( + if (originalConsoleLevel) { + // IE9 doesn't allow calling apply on console functions directly + // See: https://stackoverflow.com/questions/5472938/does-ie9-support-console-log-and-is-it-a-real-function#answer-5473193 + Function.prototype.apply.call(originalConsoleLevel, originalConsole, args); } - } -} - -function objectMerge$1(obj1, obj2) { - if (!obj2) { - return obj1; - } + }; +}; - each$1(obj2, function (key, value) { - obj1[key] = value; - }); - return obj1; -} -/** - * This function is only used for react-native. - * react-native freezes object that have already been sent over the - * js bridge. We need this function in order to check if the object is frozen. - * So it's ok that objectFrozen returns false if Object.isFrozen is not - * supported because it's not relevant for other "platforms". See related issue: - * https://github.com/getsentry/react-native-sentry/issues/57 - */ +module.exports = { + wrapMethod: wrapMethod +}; +},{"8":8}],6:[function(_dereq_,module,exports){ +(function (global){ +/*global XDomainRequest:false */ -function objectFrozen$1(obj) { - if (!Object.isFrozen) { - return false; - } +var TraceKit = _dereq_(9); +var stringify = _dereq_(10); +var md5 = _dereq_(11); +var RavenConfigError = _dereq_(4); - return Object.isFrozen(obj); -} +var utils = _dereq_(8); +var isError = utils.isError; +var isObject = utils.isObject; +var isPlainObject = utils.isPlainObject; +var isErrorEvent = utils.isErrorEvent; +var isUndefined = utils.isUndefined; +var isFunction = utils.isFunction; +var isString = utils.isString; +var isArray = utils.isArray; +var isEmptyObject = utils.isEmptyObject; +var each = utils.each; +var objectMerge = utils.objectMerge; +var truncate = utils.truncate; +var objectFrozen = utils.objectFrozen; +var hasKey = utils.hasKey; +var joinRegExp = utils.joinRegExp; +var urlencode = utils.urlencode; +var uuid4 = utils.uuid4; +var htmlTreeAsString = utils.htmlTreeAsString; +var isSameException = utils.isSameException; +var isSameStacktrace = utils.isSameStacktrace; +var parseUrl = utils.parseUrl; +var fill = utils.fill; +var supportsFetch = utils.supportsFetch; +var supportsReferrerPolicy = utils.supportsReferrerPolicy; +var serializeKeysForMessage = utils.serializeKeysForMessage; +var serializeException = utils.serializeException; +var sanitize = utils.sanitize; -function truncate$1(str, max) { - return !max || str.length <= max ? str : str.substr(0, max) + "\u2026"; -} -/** - * hasKey, a better form of hasOwnProperty - * Example: hasKey(MainHostObject, property) === true/false - * - * @param {Object} host object to check property - * @param {string} key to check - */ +var wrapConsoleMethod = _dereq_(5).wrapMethod; +var dsnKeys = 'source protocol user pass host port path'.split(' '), + dsnPattern = /^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/; -function hasKey$1(object, key) { - return Object.prototype.hasOwnProperty.call(object, key); +function now() { + return +new Date(); } -function joinRegExp$1(patterns) { - // Combine an array of regular expressions and strings into one large regexp - // Be mad. - var sources = [], - i = 0, - len = patterns.length, - pattern; - - for (; i < len; i++) { - pattern = patterns[i]; - - if (isString$1(pattern)) { - // If it's a string, we need to escape it - // Taken from: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions - sources.push(pattern.replace(/([.*+?^=!:${}()|\[\]\/\\])/g, '\\$1')); - } else if (pattern && pattern.source) { - // If it's a regexp already, we want to extract the source - sources.push(pattern.source); - } // Intentionally skip other cases - - } +// This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) +var _window = + typeof window !== 'undefined' + ? window + : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; +var _document = _window.document; +var _navigator = _window.navigator; - return new RegExp(sources.join('|'), 'i'); +function keepOriginalCallback(original, callback) { + return isFunction(callback) + ? function(data) { + return callback(data, original); + } + : callback; } -function urlencode$1(o) { - var pairs = []; - each$1(o, function (key, value) { - pairs.push(encodeURIComponent(key) + '=' + encodeURIComponent(value)); - }); - return pairs.join('&'); -} // borrowed from https://tools.ietf.org/html/rfc3986#appendix-B -// intentionally using regex and not href parsing trick because React Native and other -// environments where DOM might not be available - - -function parseUrl$1(url) { - if (typeof url !== 'string') return {}; - var match = url.match(/^(([^:\/?#]+):)?(\/\/([^\/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?$/); // coerce to undefined values to empty string so we don't get 'undefined' - - var query = match[6] || ''; - var fragment = match[8] || ''; - return { - protocol: match[2], - host: match[4], - path: match[5], - relative: match[5] + query + fragment // everything minus origin - +// First, check for JSON support +// If there is no JSON, we no-op the core features of Raven +// since JSON is required to encode the payload +function Raven() { + this._hasJSON = !!(typeof JSON === 'object' && JSON.stringify); + // Raven can run in contexts where there's no document (react-native) + this._hasDocument = !isUndefined(_document); + this._hasNavigator = !isUndefined(_navigator); + this._lastCapturedException = null; + this._lastData = null; + this._lastEventId = null; + this._globalServer = null; + this._globalKey = null; + this._globalProject = null; + this._globalContext = {}; + this._globalOptions = { + // SENTRY_RELEASE can be injected by https://github.com/getsentry/sentry-webpack-plugin + release: _window.SENTRY_RELEASE && _window.SENTRY_RELEASE.id, + logger: 'javascript', + ignoreErrors: [], + ignoreUrls: [], + whitelistUrls: [], + includePaths: [], + headers: null, + collectWindowErrors: true, + captureUnhandledRejections: true, + maxMessageLength: 0, + // By default, truncates URL values to 250 chars + maxUrlLength: 250, + stackTraceLimit: 50, + autoBreadcrumbs: true, + instrument: true, + sampleRate: 1, + sanitizeKeys: [] }; -} - -function uuid4$1() { - var crypto = _window$3.crypto || _window$3.msCrypto; - - if (!isUndefined$1(crypto) && crypto.getRandomValues) { - // Use window.crypto API if available - // eslint-disable-next-line no-undef - var arr = new Uint16Array(8); - crypto.getRandomValues(arr); // set 4 in byte 7 - - arr[3] = arr[3] & 0xfff | 0x4000; // set 2 most significant bits of byte 9 to '10' - - arr[4] = arr[4] & 0x3fff | 0x8000; - - var pad = function pad(num) { - var v = num.toString(16); - - while (v.length < 4) { - v = '0' + v; - } - - return v; - }; + this._fetchDefaults = { + method: 'POST', + keepalive: true, + // Despite all stars in the sky saying that Edge supports old draft syntax, aka 'never', 'always', 'origin' and 'default + // https://caniuse.com/#feat=referrer-policy + // It doesn't. And it throw exception instead of ignoring this parameter... + // REF: https://github.com/getsentry/raven-js/issues/1233 + referrerPolicy: supportsReferrerPolicy() ? 'origin' : '' + }; + this._ignoreOnError = 0; + this._isRavenInstalled = false; + this._originalErrorStackTraceLimit = Error.stackTraceLimit; + // capture references to window.console *and* all its methods first + // before the console plugin has a chance to monkey patch + this._originalConsole = _window.console || {}; + this._originalConsoleMethods = {}; + this._plugins = []; + this._startTime = now(); + this._wrappedBuiltIns = []; + this._breadcrumbs = []; + this._lastCapturedEvent = null; + this._keypressTimeout; + this._location = _window.location; + this._lastHref = this._location && this._location.href; + this._resetBackoff(); - return pad(arr[0]) + pad(arr[1]) + pad(arr[2]) + pad(arr[3]) + pad(arr[4]) + pad(arr[5]) + pad(arr[6]) + pad(arr[7]); - } else { - // http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/2117523#2117523 - return 'xxxxxxxxxxxx4xxxyxxxxxxxxxxxxxxx'.replace(/[xy]/g, function (c) { - var r = Math.random() * 16 | 0, - v = c === 'x' ? r : r & 0x3 | 0x8; - return v.toString(16); - }); + // eslint-disable-next-line guard-for-in + for (var method in this._originalConsole) { + this._originalConsoleMethods[method] = this._originalConsole[method]; } } -/** - * Given a child DOM element, returns a query-selector statement describing that - * and its ancestors - * e.g. [HTMLElement] => body > div > input#foo.btn[name=baz] - * @param elem - * @returns {string} - */ - -function htmlTreeAsString$1(elem) { - /* eslint no-extra-parens:0*/ - var MAX_TRAVERSE_HEIGHT = 5, - MAX_OUTPUT_LEN = 80, - out = [], - height = 0, - len = 0, - separator = ' > ', - sepLength = separator.length, - nextStr; +/* + * The core Raven singleton + * + * @this {Raven} + */ - while (elem && height++ < MAX_TRAVERSE_HEIGHT) { - nextStr = htmlElementAsString(elem); // bail out if - // - nextStr is the 'html' element - // - the length of the string that would be created exceeds MAX_OUTPUT_LEN - // (ignore this limit if we are on the first iteration) +Raven.prototype = { + // Hardcode version string so that raven source can be loaded directly via + // webpack (using a build step causes webpack #1617). Grunt verifies that + // this value matches package.json during build. + // See: https://github.com/getsentry/raven-js/issues/465 + VERSION: '3.24.2', - if (nextStr === 'html' || height > 1 && len + out.length * sepLength + nextStr.length >= MAX_OUTPUT_LEN) { - break; - } + debug: false, - out.push(nextStr); - len += nextStr.length; - elem = elem.parentNode; - } + TraceKit: TraceKit, // alias to TraceKit - return out.reverse().join(separator); -} -/** - * Returns a simple, query-selector representation of a DOM element - * e.g. [HTMLElement] => input#foo.btn[name=baz] - * @param HTMLElement - * @returns {string} - */ + /* + * Configure Raven with a DSN and extra options + * + * @param {string} dsn The public Sentry DSN + * @param {object} options Set of global options [optional] + * @return {Raven} + */ + config: function(dsn, options) { + var self = this; + if (self._globalServer) { + this._logDebug('error', 'Error: Raven has already been configured'); + return self; + } + if (!dsn) return self; -function htmlElementAsString(elem) { - var out = [], - className, - classes, - key, - attr, - i; + var globalOptions = self._globalOptions; - if (!elem || !elem.tagName) { - return ''; - } + // merge in options + if (options) { + each(options, function(key, value) { + // tags and extra are special and need to be put into context + if (key === 'tags' || key === 'extra' || key === 'user') { + self._globalContext[key] = value; + } else { + globalOptions[key] = value; + } + }); + } - out.push(elem.tagName.toLowerCase()); + self.setDSN(dsn); - if (elem.id) { - out.push('#' + elem.id); - } + // "Script error." is hard coded into browsers for errors that it can't read. + // this is the result of a script being pulled in from an external domain and CORS. + globalOptions.ignoreErrors.push(/^Script error\.?$/); + globalOptions.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/); - className = elem.className; + // join regexp rules into one big rule + globalOptions.ignoreErrors = joinRegExp(globalOptions.ignoreErrors); + globalOptions.ignoreUrls = globalOptions.ignoreUrls.length + ? joinRegExp(globalOptions.ignoreUrls) + : false; + globalOptions.whitelistUrls = globalOptions.whitelistUrls.length + ? joinRegExp(globalOptions.whitelistUrls) + : false; + globalOptions.includePaths = joinRegExp(globalOptions.includePaths); + globalOptions.maxBreadcrumbs = Math.max( + 0, + Math.min(globalOptions.maxBreadcrumbs || 100, 100) + ); // default and hard limit is 100 - if (className && isString$1(className)) { - classes = className.split(/\s+/); + var autoBreadcrumbDefaults = { + xhr: true, + console: true, + dom: true, + location: true, + sentry: true + }; - for (i = 0; i < classes.length; i++) { - out.push('.' + classes[i]); + var autoBreadcrumbs = globalOptions.autoBreadcrumbs; + if ({}.toString.call(autoBreadcrumbs) === '[object Object]') { + autoBreadcrumbs = objectMerge(autoBreadcrumbDefaults, autoBreadcrumbs); + } else if (autoBreadcrumbs !== false) { + autoBreadcrumbs = autoBreadcrumbDefaults; } - } - - var attrWhitelist = ['type', 'name', 'title', 'alt']; + globalOptions.autoBreadcrumbs = autoBreadcrumbs; - for (i = 0; i < attrWhitelist.length; i++) { - key = attrWhitelist[i]; - attr = elem.getAttribute(key); + var instrumentDefaults = { + tryCatch: true + }; - if (attr) { - out.push('[' + key + '="' + attr + '"]'); + var instrument = globalOptions.instrument; + if ({}.toString.call(instrument) === '[object Object]') { + instrument = objectMerge(instrumentDefaults, instrument); + } else if (instrument !== false) { + instrument = instrumentDefaults; } - } + globalOptions.instrument = instrument; - return out.join(''); -} -/** - * Returns true if either a OR b is truthy, but not both - */ + TraceKit.collectWindowErrors = !!globalOptions.collectWindowErrors; + // return for chaining + return self; + }, -function isOnlyOneTruthy(a, b) { - return !!(!!a ^ !!b); -} -/** - * Returns true if both parameters are undefined - */ + /* + * Installs a global window.onerror error handler + * to capture and report uncaught exceptions. + * At this point, install() is required to be called due + * to the way TraceKit is set up. + * + * @return {Raven} + */ + install: function() { + var self = this; + if (self.isSetup() && !self._isRavenInstalled) { + TraceKit.report.subscribe(function() { + self._handleOnErrorStackInfo.apply(self, arguments); + }); + if (self._globalOptions.captureUnhandledRejections) { + self._attachPromiseRejectionHandler(); + } -function isBothUndefined(a, b) { - return isUndefined$1(a) && isUndefined$1(b); -} -/** - * Returns true if the two input exception interfaces have the same content - */ + self._patchFunctionToString(); + if (self._globalOptions.instrument && self._globalOptions.instrument.tryCatch) { + self._instrumentTryCatch(); + } -function isSameException$1(ex1, ex2) { - if (isOnlyOneTruthy(ex1, ex2)) return false; - ex1 = ex1.values[0]; - ex2 = ex2.values[0]; - if (ex1.type !== ex2.type || ex1.value !== ex2.value) return false; // in case both stacktraces are undefined, we can't decide so default to false + if (self._globalOptions.autoBreadcrumbs) self._instrumentBreadcrumbs(); - if (isBothUndefined(ex1.stacktrace, ex2.stacktrace)) return false; - return isSameStacktrace$1(ex1.stacktrace, ex2.stacktrace); -} -/** - * Returns true if the two input stack trace interfaces have the same content - */ + // Install all of the plugins + self._drainPlugins(); + self._isRavenInstalled = true; + } -function isSameStacktrace$1(stack1, stack2) { - if (isOnlyOneTruthy(stack1, stack2)) return false; - var frames1 = stack1.frames; - var frames2 = stack2.frames; // Exit early if frame count differs + Error.stackTraceLimit = self._globalOptions.stackTraceLimit; + return this; + }, - if (frames1.length !== frames2.length) return false; // Iterate through every frame; bail out if anything differs + /* + * Set the DSN (can be called multiple time unlike config) + * + * @param {string} dsn The public Sentry DSN + */ + setDSN: function(dsn) { + var self = this, + uri = self._parseDSN(dsn), + lastSlash = uri.path.lastIndexOf('/'), + path = uri.path.substr(1, lastSlash); - var a, b; + self._dsn = dsn; + self._globalKey = uri.user; + self._globalSecret = uri.pass && uri.pass.substr(1); + self._globalProject = uri.path.substr(lastSlash + 1); - for (var i = 0; i < frames1.length; i++) { - a = frames1[i]; - b = frames2[i]; - if (a.filename !== b.filename || a.lineno !== b.lineno || a.colno !== b.colno || a['function'] !== b['function']) return false; - } + self._globalServer = self._getGlobalServer(uri); - return true; -} -/** - * Polyfill a method - * @param obj object e.g. `document` - * @param name method name present on object e.g. `addEventListener` - * @param replacement replacement function - * @param track {optional} record instrumentation to an array - */ + self._globalEndpoint = + self._globalServer + '/' + path + 'api/' + self._globalProject + '/store/'; + // Reset backoff state since we may be pointing at a + // new project/server + this._resetBackoff(); + }, -function fill$1(obj, name, replacement, track) { - var orig = obj[name]; - obj[name] = replacement(orig); - obj[name].__raven__ = true; - obj[name].__orig__ = orig; + /* + * Wrap code within a context so Raven can capture errors + * reliably across domains that is executed immediately. + * + * @param {object} options A specific set of options for this context [optional] + * @param {function} func The callback to be immediately executed within the context + * @param {array} args An array of arguments to be called with the callback [optional] + */ + context: function(options, func, args) { + if (isFunction(options)) { + args = func || []; + func = options; + options = undefined; + } - if (track) { - track.push([obj, name, orig]); - } -} -/** - * Join values in array - * @param input array of values to be joined together - * @param delimiter string to be placed in-between values - * @returns {string} - */ + return this.wrap(options, func).apply(this, args); + }, + /* + * Wrap code within a context and returns back a new function to be executed + * + * @param {object} options A specific set of options for this context [optional] + * @param {function} func The function to be wrapped in a new context + * @param {function} func A function to call before the try/catch wrapper [optional, private] + * @return {function} The newly wrapped functions with a context + */ + wrap: function(options, func, _before) { + var self = this; + // 1 argument has been passed, and it's not a function + // so just return it + if (isUndefined(func) && !isFunction(options)) { + return options; + } -function safeJoin(input, delimiter) { - if (!isArray$1(input)) return ''; - var output = []; + // options is optional + if (isFunction(options)) { + func = options; + options = undefined; + } - for (var i = 0; i < input.length; i++) { + // At this point, we've passed along 2 arguments, and the second one + // is not a function either, so we'll just return the second argument. + if (!isFunction(func)) { + return func; + } + + // We don't wanna wrap it twice! try { - output.push(String(input[i])); + if (func.__raven__) { + return func; + } + + // If this has already been wrapped in the past, return that + if (func.__raven_wrapper__) { + return func.__raven_wrapper__; + } } catch (e) { - output.push('[value cannot be serialized]'); + // Just accessing custom props in some Selenium environments + // can cause a "Permission denied" exception (see raven-js#495). + // Bail on wrapping and return the function as-is (defers to window.onerror). + return func; } - } - - return output.join(delimiter); -} -var utils = { - isObject: isObject$1, - isError: isError$1, - isErrorEvent: isErrorEvent$1, - isUndefined: isUndefined$1, - isFunction: isFunction$1, - isPlainObject: isPlainObject, - isString: isString$1, - isArray: isArray$1, - isEmptyObject: isEmptyObject$1, - supportsErrorEvent: supportsErrorEvent, - supportsFetch: supportsFetch$1, - wrappedCallback: wrappedCallback, - each: each$1, - objectMerge: objectMerge$1, - truncate: truncate$1, - objectFrozen: objectFrozen$1, - hasKey: hasKey$1, - joinRegExp: joinRegExp$1, - urlencode: urlencode$1, - uuid4: uuid4$1, - htmlTreeAsString: htmlTreeAsString$1, - htmlElementAsString: htmlElementAsString, - isSameException: isSameException$1, - isSameStacktrace: isSameStacktrace$1, - parseUrl: parseUrl$1, - fill: fill$1, - safeJoin: safeJoin -}; + function wrapped() { + var args = [], + i = arguments.length, + deep = !options || (options && options.deep !== false); -/* - TraceKit - Cross brower stack traces + if (_before && isFunction(_before)) { + _before.apply(this, arguments); + } - This was originally forked from github.com/occ/TraceKit, but has since been - largely re-written and is now maintained as part of raven-js. Tests for - this are in test/vendor. + // Recursively wrap all of a function's arguments that are + // functions themselves. + while (i--) args[i] = deep ? self.wrap(options, arguments[i]) : arguments[i]; - MIT license -*/ + try { + // Attempt to invoke user-land function + // NOTE: If you are a Sentry user, and you are seeing this stack frame, it + // means Raven caught an error invoking your application code. This is + // expected behavior and NOT indicative of a bug with Raven.js. + return func.apply(this, args); + } catch (e) { + self._ignoreNextOnError(); + self.captureException(e, options); + throw e; + } + } -var TraceKit = { - collectWindowErrors: true, - debug: false -}; // This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) + // copy over properties of the old function + for (var property in func) { + if (hasKey(func, property)) { + wrapped[property] = func[property]; + } + } + wrapped.prototype = func.prototype; -var _window$2 = typeof window !== 'undefined' ? window : typeof commonjsGlobal !== 'undefined' ? commonjsGlobal : typeof self !== 'undefined' ? self : {}; // global reference to slice + func.__raven_wrapper__ = wrapped; + // Signal that this function has been wrapped/filled already + // for both debugging and to prevent it to being wrapped/filled twice + wrapped.__raven__ = true; + wrapped.__orig__ = func; + return wrapped; + }, -var _slice = [].slice; -var UNKNOWN_FUNCTION = '?'; // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error#Error_types + /** + * Uninstalls the global error handler. + * + * @return {Raven} + */ + uninstall: function() { + TraceKit.report.uninstall(); -var ERROR_TYPES_RE = /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/; + this._detachPromiseRejectionHandler(); + this._unpatchFunctionToString(); + this._restoreBuiltIns(); + this._restoreConsole(); -function getLocationHref() { - if (typeof document === 'undefined' || document.location == null) return ''; - return document.location.href; -} -/** - * TraceKit.report: cross-browser processing of unhandled exceptions - * - * Syntax: - * TraceKit.report.subscribe(function(stackInfo) { ... }) - * TraceKit.report.unsubscribe(function(stackInfo) { ... }) - * TraceKit.report(exception) - * try { ...code... } catch(ex) { TraceKit.report(ex); } - * - * Supports: - * - Firefox: full stack trace with line numbers, plus column number - * on top frame; column number is not guaranteed - * - Opera: full stack trace with line and column numbers - * - Chrome: full stack trace with line and column numbers - * - Safari: line and column number for the top frame only; some frames - * may be missing, and column number is not guaranteed - * - IE: line and column number for the top frame only; some frames - * may be missing, and column number is not guaranteed - * - * In theory, TraceKit should work on all of the following versions: - * - IE5.5+ (only 8.0 tested) - * - Firefox 0.9+ (only 3.5+ tested) - * - Opera 7+ (only 10.50 tested; versions 9 and earlier may require - * Exceptions Have Stacktrace to be enabled in opera:config) - * - Safari 3+ (only 4+ tested) - * - Chrome 1+ (only 5+ tested) - * - Konqueror 3.5+ (untested) - * - * Requires TraceKit.computeStackTrace. - * - * Tries to catch all unhandled exceptions and report them to the - * subscribed handlers. Please note that TraceKit.report will rethrow the - * exception. This is REQUIRED in order to get a useful stack trace in IE. - * If the exception does not reach the top of the browser, you will only - * get a stack trace from the point where TraceKit.report was called. - * - * Handlers receive a stackInfo object as described in the - * TraceKit.computeStackTrace docs. - */ + Error.stackTraceLimit = this._originalErrorStackTraceLimit; + this._isRavenInstalled = false; + return this; + }, -TraceKit.report = function reportModuleWrapper() { - var handlers = [], - lastArgs = null, - lastException = null, - lastExceptionStack = null; /** - * Add a crash handler. - * @param {Function} handler - */ + * Callback used for `unhandledrejection` event + * + * @param {PromiseRejectionEvent} event An object containing + * promise: the Promise that was rejected + * reason: the value with which the Promise was rejected + * @return void + */ + _promiseRejectionHandler: function(event) { + this._logDebug('debug', 'Raven caught unhandled promise rejection:', event); + this.captureException(event.reason, { + extra: { + unhandledPromiseRejection: true + } + }); + }, - function subscribe(handler) { - installGlobalHandler(); - handlers.push(handler); - } /** - * Remove a crash handler. - * @param {Function} handler - */ + * Installs the global promise rejection handler. + * + * @return {raven} + */ + _attachPromiseRejectionHandler: function() { + this._promiseRejectionHandler = this._promiseRejectionHandler.bind(this); + _window.addEventListener && + _window.addEventListener('unhandledrejection', this._promiseRejectionHandler); + return this; + }, + /** + * Uninstalls the global promise rejection handler. + * + * @return {raven} + */ + _detachPromiseRejectionHandler: function() { + _window.removeEventListener && + _window.removeEventListener('unhandledrejection', this._promiseRejectionHandler); + return this; + }, - function unsubscribe(handler) { - for (var i = handlers.length - 1; i >= 0; --i) { - if (handlers[i] === handler) { - handlers.splice(i, 1); + /** + * Manually capture an exception and send it over to Sentry + * + * @param {error} ex An exception to be logged + * @param {object} options A specific set of options for this error [optional] + * @return {Raven} + */ + captureException: function(ex, options) { + options = objectMerge({trimHeadFrames: 0}, options ? options : {}); + + if (isErrorEvent(ex) && ex.error) { + // If it is an ErrorEvent with `error` property, extract it to get actual Error + ex = ex.error; + } else if (isError(ex)) { + // we have a real Error object + ex = ex; + } else if (isPlainObject(ex)) { + // If it is plain Object, serialize it manually and extract options + // This will allow us to group events based on top-level keys + // which is much better than creating new group when any key/value change + options = this._getCaptureExceptionOptionsFromPlainObject(options, ex); + ex = new Error(options.message); + } else { + // If none of previous checks were valid, then it means that + // it's not a plain Object + // it's not a valid ErrorEvent (one with an error property) + // it's not an Error + // So bail out and capture it as a simple message: + return this.captureMessage( + ex, + objectMerge(options, { + stacktrace: true, // if we fall back to captureMessage, default to attempting a new trace + trimHeadFrames: options.trimHeadFrames + 1 + }) + ); + } + + // Store the raw exception object for potential debugging and introspection + this._lastCapturedException = ex; + + // TraceKit.report will re-raise any exception passed to it, + // which means you have to wrap it in try/catch. Instead, we + // can wrap it here and only re-raise if TraceKit.report + // raises an exception different from the one we asked to + // report on. + try { + var stack = TraceKit.computeStackTrace(ex); + this._handleStackInfo(stack, options); + } catch (ex1) { + if (ex !== ex1) { + throw ex1; } } - } - /** - * Remove all crash handlers. - */ - - function unsubscribeAll() { - uninstallGlobalHandler(); - handlers = []; - } - /** - * Dispatch stack information to all handlers. - * @param {Object.} stack - */ + return this; + }, + _getCaptureExceptionOptionsFromPlainObject: function(currentOptions, ex) { + var exKeys = Object.keys(ex).sort(); + var options = objectMerge(currentOptions, { + message: + 'Non-Error exception captured with keys: ' + serializeKeysForMessage(exKeys), + fingerprint: [md5(exKeys)], + extra: currentOptions.extra || {} + }); + options.extra.__serialized__ = serializeException(ex); - function notifyHandlers(stack, isWindowError) { - var exception = null; + return options; + }, - if (isWindowError && !TraceKit.collectWindowErrors) { + /* + * Manually send a message to Sentry + * + * @param {string} msg A plain message to be captured in Sentry + * @param {object} options A specific set of options for this message [optional] + * @return {Raven} + */ + captureMessage: function(msg, options) { + // config() automagically converts ignoreErrors from a list to a RegExp so we need to test for an + // early call; we'll error on the side of logging anything called before configuration since it's + // probably something you should see: + if ( + !!this._globalOptions.ignoreErrors.test && + this._globalOptions.ignoreErrors.test(msg) + ) { return; } - for (var i in handlers) { - if (handlers.hasOwnProperty(i)) { - try { - handlers[i].apply(null, [stack].concat(_slice.call(arguments, 2))); - } catch (inner) { - exception = inner; - } - } - } + options = options || {}; + msg = msg + ''; // Make sure it's actually a string - if (exception) { - throw exception; - } - } + var data = objectMerge( + { + message: msg + }, + options + ); - var _oldOnerrorHandler, _onErrorHandlerInstalled; - /** - * Ensures all global unhandled exceptions are recorded. - * Supported by Gecko and IE. - * @param {string} msg Error message. - * @param {string} url URL of script that generated the exception. - * @param {(number|string)} lineNo The line number at which the error - * occurred. - * @param {?(number|string)} colNo The column number at which the error - * occurred. - * @param {?Error} ex The actual Error object. - */ - - - function traceKitWindowOnError(msg, url, lineNo, colNo, ex) { - var stack = null; // If 'ex' is ErrorEvent, get real Error from inside - - var exception = utils.isErrorEvent(ex) ? ex.error : ex; // If 'msg' is ErrorEvent, get real message from inside + var ex; + // Generate a "synthetic" stack trace from this point. + // NOTE: If you are a Sentry user, and you are seeing this stack frame, it is NOT indicative + // of a bug with Raven.js. Sentry generates synthetic traces either by configuration, + // or if it catches a thrown object without a "stack" property. + try { + throw new Error(msg); + } catch (ex1) { + ex = ex1; + } - var message = utils.isErrorEvent(msg) ? msg.message : msg; + // null exception name so `Error` isn't prefixed to msg + ex.name = null; + var stack = TraceKit.computeStackTrace(ex); - if (lastExceptionStack) { - TraceKit.computeStackTrace.augmentStackTraceWithInitialElement(lastExceptionStack, url, lineNo, message); - processLastException(); - } else if (exception && utils.isError(exception)) { - // non-string `exception` arg; attempt to extract stack trace - // New chrome and blink send along a real error object - // Let's just report that like a normal error. - // See: https://mikewest.org/2013/08/debugging-runtime-errors-with-window-onerror - stack = TraceKit.computeStackTrace(exception); - notifyHandlers(stack, true); - } else { - var location = { - url: url, - line: lineNo, - column: colNo - }; - var name = undefined; - var groups; + // stack[0] is `throw new Error(msg)` call itself, we are interested in the frame that was just before that, stack[1] + var initialCall = isArray(stack.stack) && stack.stack[1]; - if ({}.toString.call(message) === '[object String]') { - var groups = message.match(ERROR_TYPES_RE); + // if stack[1] is `Raven.captureException`, it means that someone passed a string to it and we redirected that call + // to be handled by `captureMessage`, thus `initialCall` is the 3rd one, not 2nd + // initialCall => captureException(string) => captureMessage(string) + if (initialCall && initialCall.func === 'Raven.captureException') { + initialCall = stack.stack[2]; + } - if (groups) { - name = groups[1]; - message = groups[2]; - } - } + var fileurl = (initialCall && initialCall.url) || ''; - location.func = UNKNOWN_FUNCTION; - stack = { - name: name, - message: message, - url: getLocationHref(), - stack: [location] - }; - notifyHandlers(stack, true); + if ( + !!this._globalOptions.ignoreUrls.test && + this._globalOptions.ignoreUrls.test(fileurl) + ) { + return; } - if (_oldOnerrorHandler) { - return _oldOnerrorHandler.apply(this, arguments); + if ( + !!this._globalOptions.whitelistUrls.test && + !this._globalOptions.whitelistUrls.test(fileurl) + ) { + return; } - return false; - } + if (this._globalOptions.stacktrace || (options && options.stacktrace)) { + // fingerprint on msg, not stack trace (legacy behavior, could be revisited) + data.fingerprint = data.fingerprint == null ? msg : data.fingerprint; - function installGlobalHandler() { - if (_onErrorHandlerInstalled) { - return; - } + options = objectMerge( + { + trimHeadFrames: 0 + }, + options + ); + // Since we know this is a synthetic trace, the top frame (this function call) + // MUST be from Raven.js, so mark it for trimming + // We add to the trim counter so that callers can choose to trim extra frames, such + // as utility functions. + options.trimHeadFrames += 1; - _oldOnerrorHandler = _window$2.onerror; - _window$2.onerror = traceKitWindowOnError; - _onErrorHandlerInstalled = true; - } + var frames = this._prepareFrames(stack, options); + data.stacktrace = { + // Sentry expects frames oldest to newest + frames: frames.reverse() + }; + } - function uninstallGlobalHandler() { - if (!_onErrorHandlerInstalled) { - return; + // Make sure that fingerprint is always wrapped in an array + if (data.fingerprint) { + data.fingerprint = isArray(data.fingerprint) + ? data.fingerprint + : [data.fingerprint]; } - _window$2.onerror = _oldOnerrorHandler; - _onErrorHandlerInstalled = false; - _oldOnerrorHandler = undefined; - } + // Fire away! + this._send(data); - function processLastException() { - var _lastExceptionStack = lastExceptionStack, - _lastArgs = lastArgs; - lastArgs = null; - lastExceptionStack = null; - lastException = null; - notifyHandlers.apply(null, [_lastExceptionStack, false].concat(_lastArgs)); - } - /** - * Reports an unhandled Error to TraceKit. - * @param {Error} ex - * @param {?boolean} rethrow If false, do not re-throw the exception. - * Only used for window.onerror to not cause an infinite loop of - * rethrowing. - */ + return this; + }, + captureBreadcrumb: function(obj) { + var crumb = objectMerge( + { + timestamp: now() / 1000 + }, + obj + ); - function report(ex, rethrow) { - var args = _slice.call(arguments, 1); + if (isFunction(this._globalOptions.breadcrumbCallback)) { + var result = this._globalOptions.breadcrumbCallback(crumb); - if (lastExceptionStack) { - if (lastException === ex) { - return; // already caught by an inner catch block, ignore - } else { - processLastException(); + if (isObject(result) && !isEmptyObject(result)) { + crumb = result; + } else if (result === false) { + return this; } } - var stack = TraceKit.computeStackTrace(ex); - lastExceptionStack = stack; - lastException = ex; - lastArgs = args; // If the stack trace is incomplete, wait for 2 seconds for - // slow slow IE to see if onerror occurs or not before reporting - // this exception; otherwise, we will end up with an incomplete - // stack trace + this._breadcrumbs.push(crumb); + if (this._breadcrumbs.length > this._globalOptions.maxBreadcrumbs) { + this._breadcrumbs.shift(); + } + return this; + }, - setTimeout(function () { - if (lastException === ex) { - processLastException(); - } - }, stack.incomplete ? 2000 : 0); + addPlugin: function(plugin /*arg1, arg2, ... argN*/) { + var pluginArgs = [].slice.call(arguments, 1); - if (rethrow !== false) { - throw ex; // re-throw to propagate to the top level (and cause window.onerror) + this._plugins.push([plugin, pluginArgs]); + if (this._isRavenInstalled) { + this._drainPlugins(); } - } - report.subscribe = subscribe; - report.unsubscribe = unsubscribe; - report.uninstall = unsubscribeAll; - return report; -}(); -/** - * TraceKit.computeStackTrace: cross-browser stack traces in JavaScript - * - * Syntax: - * s = TraceKit.computeStackTrace(exception) // consider using TraceKit.report instead (see below) - * Returns: - * s.name - exception name - * s.message - exception message - * s.stack[i].url - JavaScript or HTML file URL - * s.stack[i].func - function name, or empty for anonymous functions (if guessing did not work) - * s.stack[i].args - arguments passed to the function, if known - * s.stack[i].line - line number, if known - * s.stack[i].column - column number, if known - * - * Supports: - * - Firefox: full stack trace with line numbers and unreliable column - * number on top frame - * - Opera 10: full stack trace with line and column numbers - * - Opera 9-: full stack trace with line numbers - * - Chrome: full stack trace with line and column numbers - * - Safari: line and column number for the topmost stacktrace element - * only - * - IE: no line numbers whatsoever - * - * Tries to guess names of anonymous functions by looking for assignments - * in the source code. In IE and Safari, we have to guess source file names - * by searching for function bodies inside all page scripts. This will not - * work for scripts that are loaded cross-domain. - * Here be dragons: some function names may be guessed incorrectly, and - * duplicate functions may be mismatched. - * - * TraceKit.computeStackTrace should only be used for tracing purposes. - * Logging of unhandled exceptions should be done with TraceKit.report, - * which builds on top of TraceKit.computeStackTrace and provides better - * IE support by utilizing the window.onerror event to retrieve information - * about the top of the stack. - * - * Note: In IE and Safari, no stack trace is recorded on the Error object, - * so computeStackTrace instead walks its *own* chain of callers. - * This means that: - * * in Safari, some methods may be missing from the stack trace; - * * in IE, the topmost function in the stack trace will always be the - * caller of computeStackTrace. - * - * This is okay for tracing (because you are likely to be calling - * computeStackTrace from the function you want to be the topmost element - * of the stack trace anyway), but not okay for logging unhandled - * exceptions (because your catch block will likely be far away from the - * inner function that actually caused the exception). - * - */ + return this; + }, + /* + * Set/clear a user to be sent along with the payload. + * + * @param {object} user An object representing user data [optional] + * @return {Raven} + */ + setUserContext: function(user) { + // Intentionally do not merge here since that's an unexpected behavior. + this._globalContext.user = user; -TraceKit.computeStackTrace = function computeStackTraceWrapper() { - // Contents of Exception in various browsers. - // - // SAFARI: - // ex.message = Can't find variable: qq - // ex.line = 59 - // ex.sourceId = 580238192 - // ex.sourceURL = http://... - // ex.expressionBeginOffset = 96 - // ex.expressionCaretOffset = 98 - // ex.expressionEndOffset = 98 - // ex.name = ReferenceError - // - // FIREFOX: - // ex.message = qq is not defined - // ex.fileName = http://... - // ex.lineNumber = 59 - // ex.columnNumber = 69 - // ex.stack = ...stack trace... (see the example below) - // ex.name = ReferenceError - // - // CHROME: - // ex.message = qq is not defined - // ex.name = ReferenceError - // ex.type = not_defined - // ex.arguments = ['aa'] - // ex.stack = ...stack trace... - // - // INTERNET EXPLORER: - // ex.message = ... - // ex.name = ReferenceError - // - // OPERA: - // ex.message = ...message... (see the example below) - // ex.name = ReferenceError - // ex.opera#sourceloc = 11 (pretty much useless, duplicates the info in ex.message) - // ex.stacktrace = n/a; see 'opera:config#UserPrefs|Exceptions Have Stacktrace' + return this; + }, - /** - * Computes stack trace information from the stack property. - * Chrome and Gecko use this property. - * @param {Error} ex - * @return {?Object.} Stack trace information. + /* + * Merge extra attributes to be sent along with the payload. + * + * @param {object} extra An object representing extra data [optional] + * @return {Raven} */ - function computeStackTraceFromStackProp(ex) { - if (typeof ex.stack === 'undefined' || !ex.stack) return; - var chrome = /^\s*at (.*?) ?\(((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i, - gecko = /^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|\[native).*?|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i, - winjs = /^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i, - // Used to additionally parse URL/line/column from eval frames - geckoEval = /(\S+) line (\d+)(?: > eval line \d+)* > eval/i, - chromeEval = /\((\S*)(?::(\d+))(?::(\d+))\)/, - lines = ex.stack.split('\n'), - stack = [], - submatch, - parts, - element, - reference = /^(.*) is undefined$/.exec(ex.message); + setExtraContext: function(extra) { + this._mergeContext('extra', extra); - for (var i = 0, j = lines.length; i < j; ++i) { - if (parts = chrome.exec(lines[i])) { - var isNative = parts[2] && parts[2].indexOf('native') === 0; // start of line + return this; + }, - var isEval = parts[2] && parts[2].indexOf('eval') === 0; // start of line + /* + * Merge tags to be sent along with the payload. + * + * @param {object} tags An object representing tags [optional] + * @return {Raven} + */ + setTagsContext: function(tags) { + this._mergeContext('tags', tags); - if (isEval && (submatch = chromeEval.exec(parts[2]))) { - // throw out eval line/column and use top-most line/column number - parts[2] = submatch[1]; // url + return this; + }, - parts[3] = submatch[2]; // line - - parts[4] = submatch[3]; // column - } - - element = { - url: !isNative ? parts[2] : null, - func: parts[1] || UNKNOWN_FUNCTION, - args: isNative ? [parts[2]] : [], - line: parts[3] ? +parts[3] : null, - column: parts[4] ? +parts[4] : null - }; - } else if (parts = winjs.exec(lines[i])) { - element = { - url: parts[2], - func: parts[1] || UNKNOWN_FUNCTION, - args: [], - line: +parts[3], - column: parts[4] ? +parts[4] : null - }; - } else if (parts = gecko.exec(lines[i])) { - var isEval = parts[3] && parts[3].indexOf(' > eval') > -1; - - if (isEval && (submatch = geckoEval.exec(parts[3]))) { - // throw out eval line/column and use top-most line number - parts[3] = submatch[1]; - parts[4] = submatch[2]; - parts[5] = null; // no column when eval - } else if (i === 0 && !parts[5] && typeof ex.columnNumber !== 'undefined') { - // FireFox uses this awesome columnNumber property for its top frame - // Also note, Firefox's column number is 0-based and everything else expects 1-based, - // so adding 1 - // NOTE: this hack doesn't work if top-most frame is eval - stack[0].column = ex.columnNumber + 1; - } + /* + * Clear all of the context. + * + * @return {Raven} + */ + clearContext: function() { + this._globalContext = {}; - element = { - url: parts[3], - func: parts[1] || UNKNOWN_FUNCTION, - args: parts[2] ? parts[2].split(',') : [], - line: parts[4] ? +parts[4] : null, - column: parts[5] ? +parts[5] : null - }; - } else { - continue; - } + return this; + }, - if (!element.func && element.line) { - element.func = UNKNOWN_FUNCTION; - } + /* + * Get a copy of the current context. This cannot be mutated. + * + * @return {object} copy of context + */ + getContext: function() { + // lol javascript + return JSON.parse(stringify(this._globalContext)); + }, - stack.push(element); - } + /* + * Set environment of application + * + * @param {string} environment Typically something like 'production'. + * @return {Raven} + */ + setEnvironment: function(environment) { + this._globalOptions.environment = environment; - if (!stack.length) { - return null; - } + return this; + }, - return { - name: ex.name, - message: ex.message, - url: getLocationHref(), - stack: stack - }; - } - /** - * Adds information about the first frame to incomplete stack traces. - * Safari and IE require this to get complete data on the first frame. - * @param {Object.} stackInfo Stack trace information from - * one of the compute* methods. - * @param {string} url The URL of the script that caused an error. - * @param {(number|string)} lineNo The line number of the script that - * caused an error. - * @param {string=} message The error generated by the browser, which - * hopefully contains the name of the object that caused the error. - * @return {boolean} Whether or not the stack information was - * augmented. + /* + * Set release version of application + * + * @param {string} release Typically something like a git SHA to identify version + * @return {Raven} */ + setRelease: function(release) { + this._globalOptions.release = release; + return this; + }, - function augmentStackTraceWithInitialElement(stackInfo, url, lineNo, message) { - var initial = { - url: url, - line: lineNo - }; + /* + * Set the dataCallback option + * + * @param {function} callback The callback to run which allows the + * data blob to be mutated before sending + * @return {Raven} + */ + setDataCallback: function(callback) { + var original = this._globalOptions.dataCallback; + this._globalOptions.dataCallback = keepOriginalCallback(original, callback); + return this; + }, - if (initial.url && initial.line) { - stackInfo.incomplete = false; + /* + * Set the breadcrumbCallback option + * + * @param {function} callback The callback to run which allows filtering + * or mutating breadcrumbs + * @return {Raven} + */ + setBreadcrumbCallback: function(callback) { + var original = this._globalOptions.breadcrumbCallback; + this._globalOptions.breadcrumbCallback = keepOriginalCallback(original, callback); + return this; + }, - if (!initial.func) { - initial.func = UNKNOWN_FUNCTION; - } + /* + * Set the shouldSendCallback option + * + * @param {function} callback The callback to run which allows + * introspecting the blob before sending + * @return {Raven} + */ + setShouldSendCallback: function(callback) { + var original = this._globalOptions.shouldSendCallback; + this._globalOptions.shouldSendCallback = keepOriginalCallback(original, callback); + return this; + }, - if (stackInfo.stack.length > 0) { - if (stackInfo.stack[0].url === initial.url) { - if (stackInfo.stack[0].line === initial.line) { - return false; // already in stack trace - } else if (!stackInfo.stack[0].line && stackInfo.stack[0].func === initial.func) { - stackInfo.stack[0].line = initial.line; - return false; - } - } - } + /** + * Override the default HTTP transport mechanism that transmits data + * to the Sentry server. + * + * @param {function} transport Function invoked instead of the default + * `makeRequest` handler. + * + * @return {Raven} + */ + setTransport: function(transport) { + this._globalOptions.transport = transport; - stackInfo.stack.unshift(initial); - stackInfo.partial = true; - return true; - } else { - stackInfo.incomplete = true; - } + return this; + }, - return false; - } - /** - * Computes stack trace information by walking the arguments.caller - * chain at the time the exception occurred. This will cause earlier - * frames to be missed but is the only way to get any stack trace in - * Safari and IE. The top frame is restored by - * {@link augmentStackTraceWithInitialElement}. - * @param {Error} ex - * @return {?Object.} Stack trace information. + /* + * Get the latest raw exception that was captured by Raven. + * + * @return {error} */ + lastException: function() { + return this._lastCapturedException; + }, + /* + * Get the last event id + * + * @return {string} + */ + lastEventId: function() { + return this._lastEventId; + }, - function computeStackTraceByWalkingCallerChain(ex, depth) { - var functionName = /function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i, - stack = [], - funcs = {}, - recursion = false, - parts, - item; - - for (var curr = computeStackTraceByWalkingCallerChain.caller; curr && !recursion; curr = curr.caller) { - if (curr === computeStackTrace || curr === TraceKit.report) { - // console.log('skipping internal function'); - continue; + /* + * Determine if Raven is setup and ready to go. + * + * @return {boolean} + */ + isSetup: function() { + if (!this._hasJSON) return false; // needs JSON support + if (!this._globalServer) { + if (!this.ravenNotConfiguredError) { + this.ravenNotConfiguredError = true; + this._logDebug('error', 'Error: Raven has not been configured.'); } + return false; + } + return true; + }, - item = { - url: null, - func: UNKNOWN_FUNCTION, - line: null, - column: null - }; + afterLoad: function() { + // TODO: remove window dependence? - if (curr.name) { - item.func = curr.name; - } else if (parts = functionName.exec(curr.toString())) { - item.func = parts[1]; - } + // Attempt to initialize Raven on load + var RavenConfig = _window.RavenConfig; + if (RavenConfig) { + this.config(RavenConfig.dsn, RavenConfig.config).install(); + } + }, - if (typeof item.func === 'undefined') { - try { - item.func = parts.input.substring(0, parts.input.indexOf('{')); - } catch (e) {} - } + showReportDialog: function(options) { + if ( + !_document // doesn't work without a document (React native) + ) + return; - if (funcs['' + curr]) { - recursion = true; - } else { - funcs['' + curr] = true; - } + options = options || {}; - stack.push(item); + var lastEventId = options.eventId || this.lastEventId(); + if (!lastEventId) { + throw new RavenConfigError('Missing eventId'); } - if (depth) { - // console.log('depth is ' + depth); - // console.log('stack is ' + stack.length); - stack.splice(0, depth); + var dsn = options.dsn || this._dsn; + if (!dsn) { + throw new RavenConfigError('Missing DSN'); } - var result = { - name: ex.name, - message: ex.message, - url: getLocationHref(), - stack: stack - }; - augmentStackTraceWithInitialElement(result, ex.sourceURL || ex.fileName, ex.line || ex.lineNumber, ex.message || ex.description); - return result; - } - /** - * Computes a stack trace for an exception. - * @param {Error} ex - * @param {(string|number)=} depth - */ + var encode = encodeURIComponent; + var qs = ''; + qs += '?eventId=' + encode(lastEventId); + qs += '&dsn=' + encode(dsn); + var user = options.user || this._globalContext.user; + if (user) { + if (user.name) qs += '&name=' + encode(user.name); + if (user.email) qs += '&email=' + encode(user.email); + } - function computeStackTrace(ex, depth) { - var stack = null; - depth = depth == null ? 0 : +depth; + var globalServer = this._getGlobalServer(this._parseDSN(dsn)); - try { - stack = computeStackTraceFromStackProp(ex); + var script = _document.createElement('script'); + script.async = true; + script.src = globalServer + '/api/embed/error-page/' + qs; + (_document.head || _document.body).appendChild(script); + }, - if (stack) { - return stack; + /**** Private functions ****/ + _ignoreNextOnError: function() { + var self = this; + this._ignoreOnError += 1; + setTimeout(function() { + // onerror should trigger before setTimeout + self._ignoreOnError -= 1; + }); + }, + + _triggerEvent: function(eventType, options) { + // NOTE: `event` is a native browser thing, so let's avoid conflicting wiht it + var evt, key; + + if (!this._hasDocument) return; + + options = options || {}; + + eventType = 'raven' + eventType.substr(0, 1).toUpperCase() + eventType.substr(1); + + if (_document.createEvent) { + evt = _document.createEvent('HTMLEvents'); + evt.initEvent(eventType, true, true); + } else { + evt = _document.createEventObject(); + evt.eventType = eventType; + } + + for (key in options) + if (hasKey(options, key)) { + evt[key] = options[key]; } - } catch (e) { - if (TraceKit.debug) { - throw e; + + if (_document.createEvent) { + // IE9 if standards + _document.dispatchEvent(evt); + } else { + // IE8 regardless of Quirks or Standards + // IE9 if quirks + try { + _document.fireEvent('on' + evt.eventType.toLowerCase(), evt); + } catch (e) { + // Do nothing } } + }, - try { - stack = computeStackTraceByWalkingCallerChain(ex, depth + 1); + /** + * Wraps addEventListener to capture UI breadcrumbs + * @param evtName the event name (e.g. "click") + * @returns {Function} + * @private + */ + _breadcrumbEventHandler: function(evtName) { + var self = this; + return function(evt) { + // reset keypress timeout; e.g. triggering a 'click' after + // a 'keypress' will reset the keypress debounce so that a new + // set of keypresses can be recorded + self._keypressTimeout = null; - if (stack) { - return stack; - } - } catch (e) { - if (TraceKit.debug) { - throw e; + // It's possible this handler might trigger multiple times for the same + // event (e.g. event propagation through node ancestors). Ignore if we've + // already captured the event. + if (self._lastCapturedEvent === evt) return; + + self._lastCapturedEvent = evt; + + // try/catch both: + // - accessing evt.target (see getsentry/raven-js#838, #768) + // - `htmlTreeAsString` because it's complex, and just accessing the DOM incorrectly + // can throw an exception in some circumstances. + var target; + try { + target = htmlTreeAsString(evt.target); + } catch (e) { + target = ''; } - } - return { - name: ex.name, - message: ex.message, - url: getLocationHref() + self.captureBreadcrumb({ + category: 'ui.' + evtName, // e.g. ui.click, ui.input + message: target + }); }; - } + }, - computeStackTrace.augmentStackTraceWithInitialElement = augmentStackTraceWithInitialElement; - computeStackTrace.computeStackTraceFromStackProp = computeStackTraceFromStackProp; - return computeStackTrace; -}(); + /** + * Wraps addEventListener to capture keypress UI events + * @returns {Function} + * @private + */ + _keypressEventHandler: function() { + var self = this, + debounceDuration = 1000; // milliseconds -var tracekit = TraceKit; + // TODO: if somehow user switches keypress target before + // debounce timeout is triggered, we will only capture + // a single breadcrumb from the FIRST target (acceptable?) + return function(evt) { + var target; + try { + target = evt.target; + } catch (e) { + // just accessing event properties can throw an exception in some rare circumstances + // see: https://github.com/getsentry/raven-js/issues/838 + return; + } + var tagName = target && target.tagName; -var stringify_1 = createCommonjsModule(function (module, exports) { - /* - json-stringify-safe - Like JSON.stringify, but doesn't throw on circular references. - - Originally forked from https://github.com/isaacs/json-stringify-safe - version 5.0.1 on 3/8/2017 and modified to handle Errors serialization - and IE8 compatibility. Tests for this are in test/vendor. - - ISC license: https://github.com/isaacs/json-stringify-safe/blob/master/LICENSE - */ - exports = module.exports = stringify; - exports.getSerialize = serializer; - - function indexOf(haystack, needle) { - for (var i = 0; i < haystack.length; ++i) { - if (haystack[i] === needle) return i; - } - - return -1; - } + // only consider keypress events on actual input elements + // this will disregard keypresses targeting body (e.g. tabbing + // through elements, hotkeys, etc) + if ( + !tagName || + (tagName !== 'INPUT' && tagName !== 'TEXTAREA' && !target.isContentEditable) + ) + return; + + // record first keypress in a series, but ignore subsequent + // keypresses until debounce clears + var timeout = self._keypressTimeout; + if (!timeout) { + self._breadcrumbEventHandler('input')(evt); + } + clearTimeout(timeout); + self._keypressTimeout = setTimeout(function() { + self._keypressTimeout = null; + }, debounceDuration); + }; + }, + + /** + * Captures a breadcrumb of type "navigation", normalizing input URLs + * @param to the originating URL + * @param from the target URL + * @private + */ + _captureUrlChange: function(from, to) { + var parsedLoc = parseUrl(this._location.href); + var parsedTo = parseUrl(to); + var parsedFrom = parseUrl(from); - function stringify(obj, replacer, spaces, cycleReplacer) { - return JSON.stringify(obj, serializer(replacer, cycleReplacer), spaces); - } // https://github.com/ftlabs/js-abbreviate/blob/fa709e5f139e7770a71827b1893f22418097fbda/index.js#L95-L106 + // because onpopstate only tells you the "new" (to) value of location.href, and + // not the previous (from) value, we need to track the value of the current URL + // state ourselves + this._lastHref = to; + // Use only the path component of the URL if the URL matches the current + // document (almost all the time when using pushState) + if (parsedLoc.protocol === parsedTo.protocol && parsedLoc.host === parsedTo.host) + to = parsedTo.relative; + if (parsedLoc.protocol === parsedFrom.protocol && parsedLoc.host === parsedFrom.host) + from = parsedFrom.relative; - function stringifyError(value) { - var err = { - // These properties are implemented as magical getters and don't show up in for in - stack: value.stack, - message: value.message, - name: value.name - }; + this.captureBreadcrumb({ + category: 'navigation', + data: { + to: to, + from: from + } + }); + }, - for (var i in value) { - if (Object.prototype.hasOwnProperty.call(value, i)) { - err[i] = value[i]; + _patchFunctionToString: function() { + var self = this; + self._originalFunctionToString = Function.prototype.toString; + // eslint-disable-next-line no-extend-native + Function.prototype.toString = function() { + if (typeof this === 'function' && this.__raven__) { + return self._originalFunctionToString.apply(this.__orig__, arguments); } + return self._originalFunctionToString.apply(this, arguments); + }; + }, + + _unpatchFunctionToString: function() { + if (this._originalFunctionToString) { + // eslint-disable-next-line no-extend-native + Function.prototype.toString = this._originalFunctionToString; } + }, - return err; - } + /** + * Wrap timer functions and event targets to catch errors and provide + * better metadata. + */ + _instrumentTryCatch: function() { + var self = this; - function serializer(replacer, cycleReplacer) { - var stack = []; - var keys = []; + var wrappedBuiltIns = self._wrappedBuiltIns; - if (cycleReplacer == null) { - cycleReplacer = function cycleReplacer(key, value) { - if (stack[0] === value) { - return '[Circular ~]'; + function wrapTimeFn(orig) { + return function(fn, t) { + // preserve arity + // Make a copy of the arguments to prevent deoptimization + // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments + var args = new Array(arguments.length); + for (var i = 0; i < args.length; ++i) { + args[i] = arguments[i]; + } + var originalCallback = args[0]; + if (isFunction(originalCallback)) { + args[0] = self.wrap(originalCallback); } - return '[Circular ~.' + keys.slice(0, indexOf(stack, value)).join('.') + ']'; + // IE < 9 doesn't support .call/.apply on setInterval/setTimeout, but it + // also supports only two arguments and doesn't care what this is, so we + // can just call the original function directly. + if (orig.apply) { + return orig.apply(this, args); + } else { + return orig(args[0], args[1]); + } }; } - return function (key, value) { - if (stack.length > 0) { - var thisPos = indexOf(stack, this); - ~thisPos ? stack.splice(thisPos + 1) : stack.push(this); - ~thisPos ? keys.splice(thisPos, Infinity, key) : keys.push(key); - - if (~indexOf(stack, value)) { - value = cycleReplacer.call(this, key, value); - } - } else { - stack.push(value); - } + var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; - return replacer == null ? value instanceof Error ? stringifyError(value) : value : replacer.call(this, key, value); - }; - } -}); -var stringify_2 = stringify_1.getSerialize; + function wrapEventTarget(global) { + var proto = _window[global] && _window[global].prototype; + if (proto && proto.hasOwnProperty && proto.hasOwnProperty('addEventListener')) { + fill( + proto, + 'addEventListener', + function(orig) { + return function(evtName, fn, capture, secure) { + // preserve arity + try { + if (fn && fn.handleEvent) { + fn.handleEvent = self.wrap(fn.handleEvent); + } + } catch (err) { + // can sometimes get 'Permission denied to access property "handle Event' + } -function RavenConfigError(message) { - this.name = 'RavenConfigError'; - this.message = message; -} + // More breadcrumb DOM capture ... done here and not in `_instrumentBreadcrumbs` + // so that we don't have more than one wrapper function + var before, clickHandler, keypressHandler; + + if ( + autoBreadcrumbs && + autoBreadcrumbs.dom && + (global === 'EventTarget' || global === 'Node') + ) { + // NOTE: generating multiple handlers per addEventListener invocation, should + // revisit and verify we can just use one (almost certainly) + clickHandler = self._breadcrumbEventHandler('click'); + keypressHandler = self._keypressEventHandler(); + before = function(evt) { + // need to intercept every DOM event in `before` argument, in case that + // same wrapped method is re-used for different events (e.g. mousemove THEN click) + // see #724 + if (!evt) return; + + var eventType; + try { + eventType = evt.type; + } catch (e) { + // just accessing event properties can throw an exception in some rare circumstances + // see: https://github.com/getsentry/raven-js/issues/838 + return; + } + if (eventType === 'click') return clickHandler(evt); + else if (eventType === 'keypress') return keypressHandler(evt); + }; + } + return orig.call( + this, + evtName, + self.wrap(fn, undefined, before), + capture, + secure + ); + }; + }, + wrappedBuiltIns + ); + fill( + proto, + 'removeEventListener', + function(orig) { + return function(evt, fn, capture, secure) { + try { + fn = fn && (fn.__raven_wrapper__ ? fn.__raven_wrapper__ : fn); + } catch (e) { + // ignore, accessing __raven_wrapper__ will throw in some Selenium environments + } + return orig.call(this, evt, fn, capture, secure); + }; + }, + wrappedBuiltIns + ); + } + } -RavenConfigError.prototype = new Error(); -RavenConfigError.prototype.constructor = RavenConfigError; -var configError = RavenConfigError; + fill(_window, 'setTimeout', wrapTimeFn, wrappedBuiltIns); + fill(_window, 'setInterval', wrapTimeFn, wrappedBuiltIns); + if (_window.requestAnimationFrame) { + fill( + _window, + 'requestAnimationFrame', + function(orig) { + return function(cb) { + return orig(self.wrap(cb)); + }; + }, + wrappedBuiltIns + ); + } -var wrapMethod = function wrapMethod(console, level, callback) { - var originalConsoleLevel = console[level]; - var originalConsole = console; + // event targets borrowed from bugsnag-js: + // https://github.com/bugsnag/bugsnag-js/blob/master/src/bugsnag.js#L666 + var eventTargets = [ + 'EventTarget', + 'Window', + 'Node', + 'ApplicationCache', + 'AudioTrackList', + 'ChannelMergerNode', + 'CryptoOperation', + 'EventSource', + 'FileReader', + 'HTMLUnknownElement', + 'IDBDatabase', + 'IDBRequest', + 'IDBTransaction', + 'KeyOperation', + 'MediaController', + 'MessagePort', + 'ModalWindow', + 'Notification', + 'SVGElementInstance', + 'Screen', + 'TextTrack', + 'TextTrackCue', + 'TextTrackList', + 'WebSocket', + 'WebSocketWorker', + 'Worker', + 'XMLHttpRequest', + 'XMLHttpRequestEventTarget', + 'XMLHttpRequestUpload' + ]; + for (var i = 0; i < eventTargets.length; i++) { + wrapEventTarget(eventTargets[i]); + } + }, - if (!(level in console)) { - return; - } + /** + * Instrument browser built-ins w/ breadcrumb capturing + * - XMLHttpRequests + * - DOM interactions (click/typing) + * - window.location changes + * - console + * + * Can be disabled or individually configured via the `autoBreadcrumbs` config option + */ + _instrumentBreadcrumbs: function() { + var self = this; + var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; - var sentryLevel = level === 'warn' ? 'warning' : level; + var wrappedBuiltIns = self._wrappedBuiltIns; - console[level] = function () { - var args = [].slice.call(arguments); - var msg = utils.safeJoin(args, ' '); - var data = { - level: sentryLevel, - logger: 'console', - extra: { - arguments: args + function wrapProp(prop, xhr) { + if (prop in xhr && isFunction(xhr[prop])) { + fill(xhr, prop, function(orig) { + return self.wrap(orig); + }); // intentionally don't track filled methods on XHR instances } - }; + } - if (level === 'assert') { - if (args[0] === false) { - // Default browsers message - msg = 'Assertion failed: ' + (utils.safeJoin(args.slice(1), ' ') || 'console.assert'); - data.extra.arguments = args.slice(1); - callback && callback(msg, data); - } - } else { - callback && callback(msg, data); - } // this fails for some browsers. :( + if (autoBreadcrumbs.xhr && 'XMLHttpRequest' in _window) { + var xhrproto = _window.XMLHttpRequest && _window.XMLHttpRequest.prototype; + fill( + xhrproto, + 'open', + function(origOpen) { + return function(method, url) { + // preserve arity + // if Sentry key appears in URL, don't capture + if (isString(url) && url.indexOf(self._globalKey) === -1) { + this.__raven_xhr = { + method: method, + url: url, + status_code: null + }; + } - if (originalConsoleLevel) { - // IE9 doesn't allow calling apply on console functions directly - // See: https://stackoverflow.com/questions/5472938/does-ie9-support-console-log-and-is-it-a-real-function#answer-5473193 - Function.prototype.apply.call(originalConsoleLevel, originalConsole, args); - } - }; -}; - -var console$1 = { - wrapMethod: wrapMethod -}; + return origOpen.apply(this, arguments); + }; + }, + wrappedBuiltIns + ); + + fill( + xhrproto, + 'send', + function(origSend) { + return function() { + // preserve arity + var xhr = this; -/*global XDomainRequest:false */ + function onreadystatechangeHandler() { + if (xhr.__raven_xhr && xhr.readyState === 4) { + try { + // touching statusCode in some platforms throws + // an exception + xhr.__raven_xhr.status_code = xhr.status; + } catch (e) { + /* do nothing */ + } -var isError = utils.isError; -var isObject = utils.isObject; -var isErrorEvent = utils.isErrorEvent; -var isUndefined = utils.isUndefined; -var isFunction = utils.isFunction; -var isString = utils.isString; -var isArray = utils.isArray; -var isEmptyObject = utils.isEmptyObject; -var each = utils.each; -var objectMerge = utils.objectMerge; -var truncate = utils.truncate; -var objectFrozen = utils.objectFrozen; -var hasKey = utils.hasKey; -var joinRegExp = utils.joinRegExp; -var urlencode = utils.urlencode; -var uuid4 = utils.uuid4; -var htmlTreeAsString = utils.htmlTreeAsString; -var isSameException = utils.isSameException; -var isSameStacktrace = utils.isSameStacktrace; -var parseUrl = utils.parseUrl; -var fill = utils.fill; -var supportsFetch = utils.supportsFetch; -var wrapConsoleMethod = console$1.wrapMethod; -var dsnKeys = 'source protocol user pass host port path'.split(' '); -var dsnPattern = /^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/; + self.captureBreadcrumb({ + type: 'http', + category: 'xhr', + data: xhr.__raven_xhr + }); + } + } -function now() { - return +new Date(); -} // This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) + var props = ['onload', 'onerror', 'onprogress']; + for (var j = 0; j < props.length; j++) { + wrapProp(props[j], xhr); + } + if ('onreadystatechange' in xhr && isFunction(xhr.onreadystatechange)) { + fill( + xhr, + 'onreadystatechange', + function(orig) { + return self.wrap(orig, undefined, onreadystatechangeHandler); + } /* intentionally don't track this instrumentation */ + ); + } else { + // if onreadystatechange wasn't actually set by the page on this xhr, we + // are free to set our own and capture the breadcrumb + xhr.onreadystatechange = onreadystatechangeHandler; + } -var _window$1 = typeof window !== 'undefined' ? window : typeof commonjsGlobal !== 'undefined' ? commonjsGlobal : typeof self !== 'undefined' ? self : {}; + return origSend.apply(this, arguments); + }; + }, + wrappedBuiltIns + ); + } -var _document = _window$1.document; -var _navigator = _window$1.navigator; + if (autoBreadcrumbs.xhr && supportsFetch()) { + fill( + _window, + 'fetch', + function(origFetch) { + return function() { + // preserve arity + // Make a copy of the arguments to prevent deoptimization + // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments + var args = new Array(arguments.length); + for (var i = 0; i < args.length; ++i) { + args[i] = arguments[i]; + } -function keepOriginalCallback(original, callback) { - return isFunction(callback) ? function (data) { - return callback(data, original); - } : callback; -} // First, check for JSON support -// If there is no JSON, we no-op the core features of Raven -// since JSON is required to encode the payload + var fetchInput = args[0]; + var method = 'GET'; + var url; + if (typeof fetchInput === 'string') { + url = fetchInput; + } else if ('Request' in _window && fetchInput instanceof _window.Request) { + url = fetchInput.url; + if (fetchInput.method) { + method = fetchInput.method; + } + } else { + url = '' + fetchInput; + } -function Raven$1() { - this._hasJSON = !!(_typeof(JSON) === 'object' && JSON.stringify); // Raven can run in contexts where there's no document (react-native) + // if Sentry key appears in URL, don't capture, as it's our own request + if (url.indexOf(self._globalKey) !== -1) { + return origFetch.apply(this, args); + } - this._hasDocument = !isUndefined(_document); - this._hasNavigator = !isUndefined(_navigator); - this._lastCapturedException = null; - this._lastData = null; - this._lastEventId = null; - this._globalServer = null; - this._globalKey = null; - this._globalProject = null; - this._globalContext = {}; - this._globalOptions = { - // SENTRY_RELEASE can be injected by https://github.com/getsentry/sentry-webpack-plugin - release: _window$1.SENTRY_RELEASE && _window$1.SENTRY_RELEASE.id, - logger: 'javascript', - ignoreErrors: [], - ignoreUrls: [], - whitelistUrls: [], - includePaths: [], - headers: null, - collectWindowErrors: true, - maxMessageLength: 0, - // By default, truncates URL values to 250 chars - maxUrlLength: 250, - stackTraceLimit: 50, - autoBreadcrumbs: true, - instrument: true, - sampleRate: 1 - }; - this._fetchDefaults = { - method: 'POST', - keepalive: true, - referrerPolicy: 'origin' - }; - this._ignoreOnError = 0; - this._isRavenInstalled = false; - this._originalErrorStackTraceLimit = Error.stackTraceLimit; // capture references to window.console *and* all its methods first - // before the console plugin has a chance to monkey patch + if (args[1] && args[1].method) { + method = args[1].method; + } - this._originalConsole = _window$1.console || {}; - this._originalConsoleMethods = {}; - this._plugins = []; - this._startTime = now(); - this._wrappedBuiltIns = []; - this._breadcrumbs = []; - this._lastCapturedEvent = null; - this._keypressTimeout; - this._location = _window$1.location; - this._lastHref = this._location && this._location.href; + var fetchData = { + method: method, + url: url, + status_code: null + }; - this._resetBackoff(); // eslint-disable-next-line guard-for-in + return origFetch + .apply(this, args) + .then(function(response) { + fetchData.status_code = response.status; + + self.captureBreadcrumb({ + type: 'http', + category: 'fetch', + data: fetchData + }); + + return response; + }) + ['catch'](function(err) { + // if there is an error performing the request + self.captureBreadcrumb({ + type: 'http', + category: 'fetch', + data: fetchData, + level: 'error' + }); + + throw err; + }); + }; + }, + wrappedBuiltIns + ); + } + // Capture breadcrumbs from any click that is unhandled / bubbled up all the way + // to the document. Do this before we instrument addEventListener. + if (autoBreadcrumbs.dom && this._hasDocument) { + if (_document.addEventListener) { + _document.addEventListener('click', self._breadcrumbEventHandler('click'), false); + _document.addEventListener('keypress', self._keypressEventHandler(), false); + } else if (_document.attachEvent) { + // IE8 Compatibility + _document.attachEvent('onclick', self._breadcrumbEventHandler('click')); + _document.attachEvent('onkeypress', self._keypressEventHandler()); + } + } - for (var method in this._originalConsole) { - this._originalConsoleMethods[method] = this._originalConsole[method]; - } -} -/* - * The core Raven singleton - * - * @this {Raven} - */ + // record navigation (URL) changes + // NOTE: in Chrome App environment, touching history.pushState, *even inside + // a try/catch block*, will cause Chrome to output an error to console.error + // borrowed from: https://github.com/angular/angular.js/pull/13945/files + var chrome = _window.chrome; + var isChromePackagedApp = chrome && chrome.app && chrome.app.runtime; + var hasPushAndReplaceState = + !isChromePackagedApp && + _window.history && + history.pushState && + history.replaceState; + if (autoBreadcrumbs.location && hasPushAndReplaceState) { + // TODO: remove onpopstate handler on uninstall() + var oldOnPopState = _window.onpopstate; + _window.onpopstate = function() { + var currentHref = self._location.href; + self._captureUrlChange(self._lastHref, currentHref); + if (oldOnPopState) { + return oldOnPopState.apply(this, arguments); + } + }; -Raven$1.prototype = { - // Hardcode version string so that raven source can be loaded directly via - // webpack (using a build step causes webpack #1617). Grunt verifies that - // this value matches package.json during build. - // See: https://github.com/getsentry/raven-js/issues/465 - VERSION: '3.22.2', - debug: false, - TraceKit: tracekit, - // alias to TraceKit + var historyReplacementFunction = function(origHistFunction) { + // note history.pushState.length is 0; intentionally not declaring + // params to preserve 0 arity + return function(/* state, title, url */) { + var url = arguments.length > 2 ? arguments[2] : undefined; - /* - * Configure Raven with a DSN and extra options - * - * @param {string} dsn The public Sentry DSN - * @param {object} options Set of global options [optional] - * @return {Raven} - */ - config: function config(dsn, options) { - var self = this; + // url argument is optional + if (url) { + // coerce to string (this is what pushState does) + self._captureUrlChange(self._lastHref, url + ''); + } - if (self._globalServer) { - this._logDebug('error', 'Error: Raven has already been configured'); + return origHistFunction.apply(this, arguments); + }; + }; - return self; + fill(history, 'pushState', historyReplacementFunction, wrappedBuiltIns); + fill(history, 'replaceState', historyReplacementFunction, wrappedBuiltIns); } - if (!dsn) return self; - var globalOptions = self._globalOptions; // merge in options + if (autoBreadcrumbs.console && 'console' in _window && console.log) { + // console + var consoleMethodCallback = function(msg, data) { + self.captureBreadcrumb({ + message: msg, + level: data.level, + category: 'console' + }); + }; - if (options) { - each(options, function (key, value) { - // tags and extra are special and need to be put into context - if (key === 'tags' || key === 'extra' || key === 'user') { - self._globalContext[key] = value; - } else { - globalOptions[key] = value; - } + each(['debug', 'info', 'warn', 'error', 'log'], function(_, level) { + wrapConsoleMethod(console, level, consoleMethodCallback); }); } + }, - self.setDSN(dsn); // "Script error." is hard coded into browsers for errors that it can't read. - // this is the result of a script being pulled in from an external domain and CORS. - - globalOptions.ignoreErrors.push(/^Script error\.?$/); - globalOptions.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/); // join regexp rules into one big rule - - globalOptions.ignoreErrors = joinRegExp(globalOptions.ignoreErrors); - globalOptions.ignoreUrls = globalOptions.ignoreUrls.length ? joinRegExp(globalOptions.ignoreUrls) : false; - globalOptions.whitelistUrls = globalOptions.whitelistUrls.length ? joinRegExp(globalOptions.whitelistUrls) : false; - globalOptions.includePaths = joinRegExp(globalOptions.includePaths); - globalOptions.maxBreadcrumbs = Math.max(0, Math.min(globalOptions.maxBreadcrumbs || 100, 100)); // default and hard limit is 100 + _restoreBuiltIns: function() { + // restore any wrapped builtins + var builtin; + while (this._wrappedBuiltIns.length) { + builtin = this._wrappedBuiltIns.shift(); - var autoBreadcrumbDefaults = { - xhr: true, - console: true, - dom: true, - location: true, - sentry: true - }; - var autoBreadcrumbs = globalOptions.autoBreadcrumbs; + var obj = builtin[0], + name = builtin[1], + orig = builtin[2]; - if ({}.toString.call(autoBreadcrumbs) === '[object Object]') { - autoBreadcrumbs = objectMerge(autoBreadcrumbDefaults, autoBreadcrumbs); - } else if (autoBreadcrumbs !== false) { - autoBreadcrumbs = autoBreadcrumbDefaults; + obj[name] = orig; } + }, - globalOptions.autoBreadcrumbs = autoBreadcrumbs; - var instrumentDefaults = { - tryCatch: true - }; - var instrument = globalOptions.instrument; - - if ({}.toString.call(instrument) === '[object Object]') { - instrument = objectMerge(instrumentDefaults, instrument); - } else if (instrument !== false) { - instrument = instrumentDefaults; + _restoreConsole: function() { + // eslint-disable-next-line guard-for-in + for (var method in this._originalConsoleMethods) { + this._originalConsole[method] = this._originalConsoleMethods[method]; } - - globalOptions.instrument = instrument; - tracekit.collectWindowErrors = !!globalOptions.collectWindowErrors; // return for chaining - - return self; }, - /* - * Installs a global window.onerror error handler - * to capture and report uncaught exceptions. - * At this point, install() is required to be called due - * to the way TraceKit is set up. - * - * @return {Raven} - */ - install: function install() { + _drainPlugins: function() { var self = this; - if (self.isSetup() && !self._isRavenInstalled) { - tracekit.report.subscribe(function () { - self._handleOnErrorStackInfo.apply(self, arguments); - }); - - self._patchFunctionToString(); - - if (self._globalOptions.instrument && self._globalOptions.instrument.tryCatch) { - self._instrumentTryCatch(); - } + // FIX ME TODO + each(this._plugins, function(_, plugin) { + var installer = plugin[0]; + var args = plugin[1]; + installer.apply(self, [self].concat(args)); + }); + }, - if (self._globalOptions.autoBreadcrumbs) self._instrumentBreadcrumbs(); // Install all of the plugins + _parseDSN: function(str) { + var m = dsnPattern.exec(str), + dsn = {}, + i = 7; - self._drainPlugins(); + try { + while (i--) dsn[dsnKeys[i]] = m[i] || ''; + } catch (e) { + throw new RavenConfigError('Invalid DSN: ' + str); + } - self._isRavenInstalled = true; + if (dsn.pass && !this._globalOptions.allowSecretKey) { + throw new RavenConfigError( + 'Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key' + ); } - Error.stackTraceLimit = self._globalOptions.stackTraceLimit; - return this; + return dsn; }, - /* - * Set the DSN (can be called multiple time unlike config) - * - * @param {string} dsn The public Sentry DSN - */ - setDSN: function setDSN(dsn) { - var self = this, - uri = self._parseDSN(dsn), - lastSlash = uri.path.lastIndexOf('/'), - path = uri.path.substr(1, lastSlash); - - self._dsn = dsn; - self._globalKey = uri.user; - self._globalSecret = uri.pass && uri.pass.substr(1); - self._globalProject = uri.path.substr(lastSlash + 1); - self._globalServer = self._getGlobalServer(uri); - self._globalEndpoint = self._globalServer + '/' + path + 'api/' + self._globalProject + '/store/'; // Reset backoff state since we may be pointing at a - // new project/server + _getGlobalServer: function(uri) { + // assemble the endpoint from the uri pieces + var globalServer = '//' + uri.host + (uri.port ? ':' + uri.port : ''); - this._resetBackoff(); + if (uri.protocol) { + globalServer = uri.protocol + ':' + globalServer; + } + return globalServer; }, - /* - * Wrap code within a context so Raven can capture errors - * reliably across domains that is executed immediately. - * - * @param {object} options A specific set of options for this context [optional] - * @param {function} func The callback to be immediately executed within the context - * @param {array} args An array of arguments to be called with the callback [optional] - */ - context: function context(options, func, args) { - if (isFunction(options)) { - args = func || []; - func = options; - options = undefined; + _handleOnErrorStackInfo: function() { + // if we are intentionally ignoring errors via onerror, bail out + if (!this._ignoreOnError) { + this._handleStackInfo.apply(this, arguments); } - - return this.wrap(options, func).apply(this, args); }, - /* - * Wrap code within a context and returns back a new function to be executed - * - * @param {object} options A specific set of options for this context [optional] - * @param {function} func The function to be wrapped in a new context - * @param {function} func A function to call before the try/catch wrapper [optional, private] - * @return {function} The newly wrapped functions with a context - */ - wrap: function wrap(options, func, _before) { - var self = this; // 1 argument has been passed, and it's not a function - // so just return it + _handleStackInfo: function(stackInfo, options) { + var frames = this._prepareFrames(stackInfo, options); - if (isUndefined(func) && !isFunction(options)) { - return options; - } // options is optional + this._triggerEvent('handle', { + stackInfo: stackInfo, + options: options + }); + this._processException( + stackInfo.name, + stackInfo.message, + stackInfo.url, + stackInfo.lineno, + frames, + options + ); + }, - if (isFunction(options)) { - func = options; - options = undefined; - } // At this point, we've passed along 2 arguments, and the second one - // is not a function either, so we'll just return the second argument. + _prepareFrames: function(stackInfo, options) { + var self = this; + var frames = []; + if (stackInfo.stack && stackInfo.stack.length) { + each(stackInfo.stack, function(i, stack) { + var frame = self._normalizeFrame(stack, stackInfo.url); + if (frame) { + frames.push(frame); + } + }); + // e.g. frames captured via captureMessage throw + if (options && options.trimHeadFrames) { + for (var j = 0; j < options.trimHeadFrames && j < frames.length; j++) { + frames[j].in_app = false; + } + } + } + frames = frames.slice(0, this._globalOptions.stackTraceLimit); + return frames; + }, - if (!isFunction(func)) { - return func; - } // We don't wanna wrap it twice! + _normalizeFrame: function(frame, stackInfoUrl) { + // normalize the frames data + var normalized = { + filename: frame.url, + lineno: frame.line, + colno: frame.column, + function: frame.func || '?' + }; + // Case when we don't have any information about the error + // E.g. throwing a string or raw object, instead of an `Error` in Firefox + // Generating synthetic error doesn't add any value here + // + // We should probably somehow let a user know that they should fix their code + if (!frame.url) { + normalized.filename = stackInfoUrl; // fallback to whole stacks url from onerror handler + } - try { - if (func.__raven__) { - return func; - } // If this has already been wrapped in the past, return that + normalized.in_app = !// determine if an exception came from outside of our app + // first we check the global includePaths list. + ( + (!!this._globalOptions.includePaths.test && + !this._globalOptions.includePaths.test(normalized.filename)) || + // Now we check for fun, if the function name is Raven or TraceKit + /(Raven|TraceKit)\./.test(normalized['function']) || + // finally, we do a last ditch effort and check for raven.min.js + /raven\.(min\.)?js$/.test(normalized.filename) + ); + return normalized; + }, - if (func.__raven_wrapper__) { - return func.__raven_wrapper__; - } - } catch (e) { - // Just accessing custom props in some Selenium environments - // can cause a "Permission denied" exception (see raven-js#495). - // Bail on wrapping and return the function as-is (defers to window.onerror). - return func; + _processException: function(type, message, fileurl, lineno, frames, options) { + var prefixedMessage = (type ? type + ': ' : '') + (message || ''); + if ( + !!this._globalOptions.ignoreErrors.test && + (this._globalOptions.ignoreErrors.test(message) || + this._globalOptions.ignoreErrors.test(prefixedMessage)) + ) { + return; } - function wrapped() { - var args = [], - i = arguments.length, - deep = !options || options && options.deep !== false; + var stacktrace; - if (_before && isFunction(_before)) { - _before.apply(this, arguments); - } // Recursively wrap all of a function's arguments that are - // functions themselves. + if (frames && frames.length) { + fileurl = frames[0].filename || fileurl; + // Sentry expects frames oldest to newest + // and JS sends them as newest to oldest + frames.reverse(); + stacktrace = {frames: frames}; + } else if (fileurl) { + stacktrace = { + frames: [ + { + filename: fileurl, + lineno: lineno, + in_app: true + } + ] + }; + } + if ( + !!this._globalOptions.ignoreUrls.test && + this._globalOptions.ignoreUrls.test(fileurl) + ) { + return; + } - while (i--) { - args[i] = deep ? self.wrap(options, arguments[i]) : arguments[i]; - } + if ( + !!this._globalOptions.whitelistUrls.test && + !this._globalOptions.whitelistUrls.test(fileurl) + ) { + return; + } - try { - // Attempt to invoke user-land function - // NOTE: If you are a Sentry user, and you are seeing this stack frame, it - // means Raven caught an error invoking your application code. This is - // expected behavior and NOT indicative of a bug with Raven.js. - return func.apply(this, args); - } catch (e) { - self._ignoreNextOnError(); + var data = objectMerge( + { + // sentry.interfaces.Exception + exception: { + values: [ + { + type: type, + value: message, + stacktrace: stacktrace + } + ] + }, + culprit: fileurl + }, + options + ); - self.captureException(e, options); - throw e; - } - } // copy over properties of the old function + // Fire away! + this._send(data); + }, + _trimPacket: function(data) { + // For now, we only want to truncate the two different messages + // but this could/should be expanded to just trim everything + var max = this._globalOptions.maxMessageLength; + if (data.message) { + data.message = truncate(data.message, max); + } + if (data.exception) { + var exception = data.exception.values[0]; + exception.value = truncate(exception.value, max); + } - for (var property in func) { - if (hasKey(func, property)) { - wrapped[property] = func[property]; + var request = data.request; + if (request) { + if (request.url) { + request.url = truncate(request.url, this._globalOptions.maxUrlLength); + } + if (request.Referer) { + request.Referer = truncate(request.Referer, this._globalOptions.maxUrlLength); } } - wrapped.prototype = func.prototype; - func.__raven_wrapper__ = wrapped; // Signal that this function has been wrapped/filled already - // for both debugging and to prevent it to being wrapped/filled twice + if (data.breadcrumbs && data.breadcrumbs.values) + this._trimBreadcrumbs(data.breadcrumbs); - wrapped.__raven__ = true; - wrapped.__orig__ = func; - return wrapped; + return data; }, - /* - * Uninstalls the global error handler. - * - * @return {Raven} - */ - uninstall: function uninstall() { - tracekit.report.uninstall(); + /** + * Truncate breadcrumb values (right now just URLs) + */ + _trimBreadcrumbs: function(breadcrumbs) { + // known breadcrumb properties with urls + // TODO: also consider arbitrary prop values that start with (https?)?:// + var urlProps = ['to', 'from', 'url'], + urlProp, + crumb, + data; - this._unpatchFunctionToString(); + for (var i = 0; i < breadcrumbs.values.length; ++i) { + crumb = breadcrumbs.values[i]; + if ( + !crumb.hasOwnProperty('data') || + !isObject(crumb.data) || + objectFrozen(crumb.data) + ) + continue; - this._restoreBuiltIns(); + data = objectMerge({}, crumb.data); + for (var j = 0; j < urlProps.length; ++j) { + urlProp = urlProps[j]; + if (data.hasOwnProperty(urlProp) && data[urlProp]) { + data[urlProp] = truncate(data[urlProp], this._globalOptions.maxUrlLength); + } + } + breadcrumbs.values[i].data = data; + } + }, - this._restoreConsole(); + _getHttpData: function() { + if (!this._hasNavigator && !this._hasDocument) return; + var httpData = {}; - Error.stackTraceLimit = this._originalErrorStackTraceLimit; - this._isRavenInstalled = false; - return this; - }, + if (this._hasNavigator && _navigator.userAgent) { + httpData.headers = { + 'User-Agent': navigator.userAgent + }; + } - /* - * Manually capture an exception and send it over to Sentry - * - * @param {error} ex An exception to be logged - * @param {object} options A specific set of options for this error [optional] - * @return {Raven} - */ - captureException: function captureException(ex, options) { - options = objectMerge({ - trimHeadFrames: 0 - }, options ? options : {}); // Cases for sending ex as a message, rather than an exception + // Check in `window` instead of `document`, as we may be in ServiceWorker environment + if (_window.location && _window.location.href) { + httpData.url = _window.location.href; + } - var isNotError = !isError(ex); - var isNotErrorEvent = !isErrorEvent(ex); - var isErrorEventWithoutError = isErrorEvent(ex) && !ex.error; + if (this._hasDocument && _document.referrer) { + if (!httpData.headers) httpData.headers = {}; + httpData.headers.Referer = _document.referrer; + } - if (isNotError && isNotErrorEvent || isErrorEventWithoutError) { - return this.captureMessage(ex, objectMerge(options, { - stacktrace: true, - // if we fall back to captureMessage, default to attempting a new trace - trimHeadFrames: options.trimHeadFrames + 1 - })); - } // Get actual Error from ErrorEvent + return httpData; + }, + _resetBackoff: function() { + this._backoffDuration = 0; + this._backoffStart = null; + }, - if (isErrorEvent(ex)) ex = ex.error; // Store the raw exception object for potential debugging and introspection + _shouldBackoff: function() { + return this._backoffDuration && now() - this._backoffStart < this._backoffDuration; + }, - this._lastCapturedException = ex; // TraceKit.report will re-raise any exception passed to it, - // which means you have to wrap it in try/catch. Instead, we - // can wrap it here and only re-raise if TraceKit.report - // raises an exception different from the one we asked to - // report on. + /** + * Returns true if the in-process data payload matches the signature + * of the previously-sent data + * + * NOTE: This has to be done at this level because TraceKit can generate + * data from window.onerror WITHOUT an exception object (IE8, IE9, + * other old browsers). This can take the form of an "exception" + * data object with a single frame (derived from the onerror args). + */ + _isRepeatData: function(current) { + var last = this._lastData; - try { - var stack = tracekit.computeStackTrace(ex); + if ( + !last || + current.message !== last.message || // defined for captureMessage + current.culprit !== last.culprit // defined for captureException/onerror + ) + return false; - this._handleStackInfo(stack, options); - } catch (ex1) { - if (ex !== ex1) { - throw ex1; - } + // Stacktrace interface (i.e. from captureMessage) + if (current.stacktrace || last.stacktrace) { + return isSameStacktrace(current.stacktrace, last.stacktrace); + } else if (current.exception || last.exception) { + // Exception interface (i.e. from captureException/onerror) + return isSameException(current.exception, last.exception); } - return this; + return true; }, - /* - * Manually send a message to Sentry - * - * @param {string} msg A plain message to be captured in Sentry - * @param {object} options A specific set of options for this message [optional] - * @return {Raven} - */ - captureMessage: function captureMessage(msg, options) { - // config() automagically converts ignoreErrors from a list to a RegExp so we need to test for an - // early call; we'll error on the side of logging anything called before configuration since it's - // probably something you should see: - if (!!this._globalOptions.ignoreErrors.test && this._globalOptions.ignoreErrors.test(msg)) { + _setBackoffState: function(request) { + // If we are already in a backoff state, don't change anything + if (this._shouldBackoff()) { return; } - options = options || {}; - var data = objectMerge({ - message: msg + '' // Make sure it's actually a string + var status = request.status; - }, options); - var ex; // Generate a "synthetic" stack trace from this point. - // NOTE: If you are a Sentry user, and you are seeing this stack frame, it is NOT indicative - // of a bug with Raven.js. Sentry generates synthetic traces either by configuration, - // or if it catches a thrown object without a "stack" property. + // 400 - project_id doesn't exist or some other fatal + // 401 - invalid/revoked dsn + // 429 - too many requests + if (!(status === 400 || status === 401 || status === 429)) return; + var retry; try { - throw new Error(msg); - } catch (ex1) { - ex = ex1; - } // null exception name so `Error` isn't prefixed to msg + // If Retry-After is not in Access-Control-Expose-Headers, most + // browsers will throw an exception trying to access it + if (supportsFetch()) { + retry = request.headers.get('Retry-After'); + } else { + retry = request.getResponseHeader('Retry-After'); + } + // Retry-After is returned in seconds + retry = parseInt(retry, 10) * 1000; + } catch (e) { + /* eslint no-empty:0 */ + } - ex.name = null; - var stack = tracekit.computeStackTrace(ex); // stack[0] is `throw new Error(msg)` call itself, we are interested in the frame that was just before that, stack[1] + this._backoffDuration = retry + ? // If Sentry server returned a Retry-After value, use it + retry + : // Otherwise, double the last backoff duration (starts at 1 sec) + this._backoffDuration * 2 || 1000; - var initialCall = isArray(stack.stack) && stack.stack[1]; - var fileurl = initialCall && initialCall.url || ''; + this._backoffStart = now(); + }, - if (!!this._globalOptions.ignoreUrls.test && this._globalOptions.ignoreUrls.test(fileurl)) { - return; - } + _send: function(data) { + var globalOptions = this._globalOptions; - if (!!this._globalOptions.whitelistUrls.test && !this._globalOptions.whitelistUrls.test(fileurl)) { - return; + var baseData = { + project: this._globalProject, + logger: globalOptions.logger, + platform: 'javascript' + }, + httpData = this._getHttpData(); + + if (httpData) { + baseData.request = httpData; } - if (this._globalOptions.stacktrace || options && options.stacktrace) { - options = objectMerge({ - // fingerprint on msg, not stack trace (legacy behavior, could be - // revisited) - fingerprint: msg, - // since we know this is a synthetic trace, the top N-most frames - // MUST be from Raven.js, so mark them as in_app later by setting - // trimHeadFrames - trimHeadFrames: (options.trimHeadFrames || 0) + 1 - }, options); + // HACK: delete `trimHeadFrames` to prevent from appearing in outbound payload + if (data.trimHeadFrames) delete data.trimHeadFrames; - var frames = this._prepareFrames(stack, options); + data = objectMerge(baseData, data); - data.stacktrace = { - // Sentry expects frames oldest to newest - frames: frames.reverse() + // Merge in the tags and extra separately since objectMerge doesn't handle a deep merge + data.tags = objectMerge(objectMerge({}, this._globalContext.tags), data.tags); + data.extra = objectMerge(objectMerge({}, this._globalContext.extra), data.extra); + + // Send along our own collected metadata with extra + data.extra['session:duration'] = now() - this._startTime; + + if (this._breadcrumbs && this._breadcrumbs.length > 0) { + // intentionally make shallow copy so that additions + // to breadcrumbs aren't accidentally sent in this request + data.breadcrumbs = { + values: [].slice.call(this._breadcrumbs, 0) }; - } // Fire away! + } + if (this._globalContext.user) { + // sentry.interfaces.User + data.user = this._globalContext.user; + } - this._send(data); + // Include the environment if it's defined in globalOptions + if (globalOptions.environment) data.environment = globalOptions.environment; - return this; - }, - captureBreadcrumb: function captureBreadcrumb(obj) { - var crumb = objectMerge({ - timestamp: now() / 1000 - }, obj); + // Include the release if it's defined in globalOptions + if (globalOptions.release) data.release = globalOptions.release; - if (isFunction(this._globalOptions.breadcrumbCallback)) { - var result = this._globalOptions.breadcrumbCallback(crumb); + // Include server_name if it's defined in globalOptions + if (globalOptions.serverName) data.server_name = globalOptions.serverName; - if (isObject(result) && !isEmptyObject(result)) { - crumb = result; - } else if (result === false) { - return this; - } - } + data = this._sanitizeData(data); - this._breadcrumbs.push(crumb); + // Cleanup empty properties before sending them to the server + Object.keys(data).forEach(function(key) { + if (data[key] == null || data[key] === '' || isEmptyObject(data[key])) { + delete data[key]; + } + }); - if (this._breadcrumbs.length > this._globalOptions.maxBreadcrumbs) { - this._breadcrumbs.shift(); + if (isFunction(globalOptions.dataCallback)) { + data = globalOptions.dataCallback(data) || data; } - return this; - }, - addPlugin: function addPlugin(plugin - /*arg1, arg2, ... argN*/ - ) { - var pluginArgs = [].slice.call(arguments, 1); + // Why?????????? + if (!data || isEmptyObject(data)) { + return; + } - this._plugins.push([plugin, pluginArgs]); + // Check if the request should be filtered or not + if ( + isFunction(globalOptions.shouldSendCallback) && + !globalOptions.shouldSendCallback(data) + ) { + return; + } - if (this._isRavenInstalled) { - this._drainPlugins(); + // Backoff state: Sentry server previously responded w/ an error (e.g. 429 - too many requests), + // so drop requests until "cool-off" period has elapsed. + if (this._shouldBackoff()) { + this._logDebug('warn', 'Raven dropped error due to backoff: ', data); + return; } - return this; + if (typeof globalOptions.sampleRate === 'number') { + if (Math.random() < globalOptions.sampleRate) { + this._sendProcessedPayload(data); + } + } else { + this._sendProcessedPayload(data); + } }, - /* - * Set/clear a user to be sent along with the payload. - * - * @param {object} user An object representing user data [optional] - * @return {Raven} - */ - setUserContext: function setUserContext(user) { - // Intentionally do not merge here since that's an unexpected behavior. - this._globalContext.user = user; - return this; + _sanitizeData: function(data) { + return sanitize(data, this._globalOptions.sanitizeKeys); }, - /* - * Merge extra attributes to be sent along with the payload. - * - * @param {object} extra An object representing extra data [optional] - * @return {Raven} - */ - setExtraContext: function setExtraContext(extra) { - this._mergeContext('extra', extra); - - return this; + _getUuid: function() { + return uuid4(); }, - /* - * Merge tags to be sent along with the payload. - * - * @param {object} tags An object representing tags [optional] - * @return {Raven} - */ - setTagsContext: function setTagsContext(tags) { - this._mergeContext('tags', tags); + _sendProcessedPayload: function(data, callback) { + var self = this; + var globalOptions = this._globalOptions; - return this; - }, + if (!this.isSetup()) return; - /* - * Clear all of the context. - * - * @return {Raven} - */ - clearContext: function clearContext() { - this._globalContext = {}; - return this; - }, + // Try and clean up the packet before sending by truncating long values + data = this._trimPacket(data); - /* - * Get a copy of the current context. This cannot be mutated. - * - * @return {object} copy of context - */ - getContext: function getContext() { - // lol javascript - return JSON.parse(stringify_1(this._globalContext)); - }, + // ideally duplicate error testing should occur *before* dataCallback/shouldSendCallback, + // but this would require copying an un-truncated copy of the data packet, which can be + // arbitrarily deep (extra_data) -- could be worthwhile? will revisit + if (!this._globalOptions.allowDuplicates && this._isRepeatData(data)) { + this._logDebug('warn', 'Raven dropped repeat event: ', data); + return; + } - /* - * Set environment of application - * - * @param {string} environment Typically something like 'production'. - * @return {Raven} - */ - setEnvironment: function setEnvironment(environment) { - this._globalOptions.environment = environment; - return this; - }, + // Send along an event_id if not explicitly passed. + // This event_id can be used to reference the error within Sentry itself. + // Set lastEventId after we know the error should actually be sent + this._lastEventId = data.event_id || (data.event_id = this._getUuid()); - /* - * Set release version of application - * - * @param {string} release Typically something like a git SHA to identify version - * @return {Raven} - */ - setRelease: function setRelease(release) { - this._globalOptions.release = release; - return this; - }, + // Store outbound payload after trim + this._lastData = data; - /* - * Set the dataCallback option - * - * @param {function} callback The callback to run which allows the - * data blob to be mutated before sending - * @return {Raven} - */ - setDataCallback: function setDataCallback(callback) { - var original = this._globalOptions.dataCallback; - this._globalOptions.dataCallback = keepOriginalCallback(original, callback); - return this; - }, + this._logDebug('debug', 'Raven about to send:', data); - /* - * Set the breadcrumbCallback option - * - * @param {function} callback The callback to run which allows filtering - * or mutating breadcrumbs - * @return {Raven} - */ - setBreadcrumbCallback: function setBreadcrumbCallback(callback) { - var original = this._globalOptions.breadcrumbCallback; - this._globalOptions.breadcrumbCallback = keepOriginalCallback(original, callback); - return this; - }, + var auth = { + sentry_version: '7', + sentry_client: 'raven-js/' + this.VERSION, + sentry_key: this._globalKey + }; - /* - * Set the shouldSendCallback option - * - * @param {function} callback The callback to run which allows - * introspecting the blob before sending - * @return {Raven} - */ - setShouldSendCallback: function setShouldSendCallback(callback) { - var original = this._globalOptions.shouldSendCallback; - this._globalOptions.shouldSendCallback = keepOriginalCallback(original, callback); - return this; - }, + if (this._globalSecret) { + auth.sentry_secret = this._globalSecret; + } - /** - * Override the default HTTP transport mechanism that transmits data - * to the Sentry server. - * - * @param {function} transport Function invoked instead of the default - * `makeRequest` handler. - * - * @return {Raven} - */ - setTransport: function setTransport(transport) { - this._globalOptions.transport = transport; - return this; - }, + var exception = data.exception && data.exception.values[0]; - /* - * Get the latest raw exception that was captured by Raven. - * - * @return {error} - */ - lastException: function lastException() { - return this._lastCapturedException; - }, + // only capture 'sentry' breadcrumb is autoBreadcrumbs is truthy + if ( + this._globalOptions.autoBreadcrumbs && + this._globalOptions.autoBreadcrumbs.sentry + ) { + this.captureBreadcrumb({ + category: 'sentry', + message: exception + ? (exception.type ? exception.type + ': ' : '') + exception.value + : data.message, + event_id: data.event_id, + level: data.level || 'error' // presume error unless specified + }); + } - /* - * Get the last event id - * - * @return {string} - */ - lastEventId: function lastEventId() { - return this._lastEventId; - }, + var url = this._globalEndpoint; + (globalOptions.transport || this._makeRequest).call(this, { + url: url, + auth: auth, + data: data, + options: globalOptions, + onSuccess: function success() { + self._resetBackoff(); - /* - * Determine if Raven is setup and ready to go. - * - * @return {boolean} - */ - isSetup: function isSetup() { - if (!this._hasJSON) return false; // needs JSON support + self._triggerEvent('success', { + data: data, + src: url + }); + callback && callback(); + }, + onError: function failure(error) { + self._logDebug('error', 'Raven transport failed to send: ', error); - if (!this._globalServer) { - if (!this.ravenNotConfiguredError) { - this.ravenNotConfiguredError = true; + if (error.request) { + self._setBackoffState(error.request); + } - this._logDebug('error', 'Error: Raven has not been configured.'); + self._triggerEvent('failure', { + data: data, + src: url + }); + error = error || new Error('Raven send failed (no additional details provided)'); + callback && callback(error); } + }); + }, - return false; - } + _makeRequest: function(opts) { + // Auth is intentionally sent as part of query string (NOT as custom HTTP header) to avoid preflight CORS requests + var url = opts.url + '?' + urlencode(opts.auth); - return true; - }, - afterLoad: function afterLoad() { - // TODO: remove window dependence? - // Attempt to initialize Raven on load - var RavenConfig = _window$1.RavenConfig; + var evaluatedHeaders = null; + var evaluatedFetchParameters = {}; - if (RavenConfig) { - this.config(RavenConfig.dsn, RavenConfig.config).install(); + if (opts.options.headers) { + evaluatedHeaders = this._evaluateHash(opts.options.headers); } - }, - showReportDialog: function showReportDialog(options) { - if (!_document // doesn't work without a document (React native) - ) return; - options = options || {}; - var lastEventId = options.eventId || this.lastEventId(); - if (!lastEventId) { - throw new configError('Missing eventId'); + if (opts.options.fetchParameters) { + evaluatedFetchParameters = this._evaluateHash(opts.options.fetchParameters); } - var dsn = options.dsn || this._dsn; + if (supportsFetch()) { + evaluatedFetchParameters.body = stringify(opts.data); - if (!dsn) { - throw new configError('Missing DSN'); - } + var defaultFetchOptions = objectMerge({}, this._fetchDefaults); + var fetchOptions = objectMerge(defaultFetchOptions, evaluatedFetchParameters); - var encode = encodeURIComponent; - var qs = ''; - qs += '?eventId=' + encode(lastEventId); - qs += '&dsn=' + encode(dsn); - var user = options.user || this._globalContext.user; + if (evaluatedHeaders) { + fetchOptions.headers = evaluatedHeaders; + } - if (user) { - if (user.name) qs += '&name=' + encode(user.name); - if (user.email) qs += '&email=' + encode(user.email); + return _window + .fetch(url, fetchOptions) + .then(function(response) { + if (response.ok) { + opts.onSuccess && opts.onSuccess(); + } else { + var error = new Error('Sentry error code: ' + response.status); + // It's called request only to keep compatibility with XHR interface + // and not add more redundant checks in setBackoffState method + error.request = response; + opts.onError && opts.onError(error); + } + }) + ['catch'](function() { + opts.onError && + opts.onError(new Error('Sentry error code: network unavailable')); + }); } - var globalServer = this._getGlobalServer(this._parseDSN(dsn)); - - var script = _document.createElement('script'); - - script.async = true; - script.src = globalServer + '/api/embed/error-page/' + qs; + var request = _window.XMLHttpRequest && new _window.XMLHttpRequest(); + if (!request) return; - (_document.head || _document.body).appendChild(script); - }, + // if browser doesn't support CORS (e.g. IE7), we are out of luck + var hasCORS = 'withCredentials' in request || typeof XDomainRequest !== 'undefined'; - /**** Private functions ****/ - _ignoreNextOnError: function _ignoreNextOnError() { - var self = this; - this._ignoreOnError += 1; - setTimeout(function () { - // onerror should trigger before setTimeout - self._ignoreOnError -= 1; - }); - }, - _triggerEvent: function _triggerEvent(eventType, options) { - // NOTE: `event` is a native browser thing, so let's avoid conflicting wiht it - var evt, key; - if (!this._hasDocument) return; - options = options || {}; - eventType = 'raven' + eventType.substr(0, 1).toUpperCase() + eventType.substr(1); + if (!hasCORS) return; - if (_document.createEvent) { - evt = _document.createEvent('HTMLEvents'); - evt.initEvent(eventType, true, true); + if ('withCredentials' in request) { + request.onreadystatechange = function() { + if (request.readyState !== 4) { + return; + } else if (request.status === 200) { + opts.onSuccess && opts.onSuccess(); + } else if (opts.onError) { + var err = new Error('Sentry error code: ' + request.status); + err.request = request; + opts.onError(err); + } + }; } else { - evt = _document.createEventObject(); - evt.eventType = eventType; - } + request = new XDomainRequest(); + // xdomainrequest cannot go http -> https (or vice versa), + // so always use protocol relative + url = url.replace(/^https?:/, ''); - for (key in options) { - if (hasKey(options, key)) { - evt[key] = options[key]; + // onreadystatechange not supported by XDomainRequest + if (opts.onSuccess) { + request.onload = opts.onSuccess; } - } - - if (_document.createEvent) { - // IE9 if standards - _document.dispatchEvent(evt); - } else { - // IE8 regardless of Quirks or Standards - // IE9 if quirks - try { - _document.fireEvent('on' + evt.eventType.toLowerCase(), evt); - } catch (e) {// Do nothing + if (opts.onError) { + request.onerror = function() { + var err = new Error('Sentry error code: XDomainRequest'); + err.request = request; + opts.onError(err); + }; } } - }, - /** - * Wraps addEventListener to capture UI breadcrumbs - * @param evtName the event name (e.g. "click") - * @returns {Function} - * @private - */ - _breadcrumbEventHandler: function _breadcrumbEventHandler(evtName) { - var self = this; - return function (evt) { - // reset keypress timeout; e.g. triggering a 'click' after - // a 'keypress' will reset the keypress debounce so that a new - // set of keypresses can be recorded - self._keypressTimeout = null; // It's possible this handler might trigger multiple times for the same - // event (e.g. event propagation through node ancestors). Ignore if we've - // already captured the event. + request.open('POST', url); - if (self._lastCapturedEvent === evt) return; - self._lastCapturedEvent = evt; // try/catch both: - // - accessing evt.target (see getsentry/raven-js#838, #768) - // - `htmlTreeAsString` because it's complex, and just accessing the DOM incorrectly - // can throw an exception in some circumstances. + if (evaluatedHeaders) { + each(evaluatedHeaders, function(key, value) { + request.setRequestHeader(key, value); + }); + } - var target; + request.send(stringify(opts.data)); + }, - try { - target = htmlTreeAsString(evt.target); - } catch (e) { - target = ''; + _evaluateHash: function(hash) { + var evaluated = {}; + + for (var key in hash) { + if (hash.hasOwnProperty(key)) { + var value = hash[key]; + evaluated[key] = typeof value === 'function' ? value() : value; } + } - self.captureBreadcrumb({ - category: 'ui.' + evtName, - // e.g. ui.click, ui.input - message: target - }); - }; + return evaluated; }, - /** - * Wraps addEventListener to capture keypress UI events - * @returns {Function} - * @private - */ - _keypressEventHandler: function _keypressEventHandler() { - var self = this, - debounceDuration = 1000; // milliseconds - // TODO: if somehow user switches keypress target before - // debounce timeout is triggered, we will only capture - // a single breadcrumb from the FIRST target (acceptable?) + _logDebug: function(level) { + // We allow `Raven.debug` and `Raven.config(DSN, { debug: true })` to not make backward incompatible API change + if ( + this._originalConsoleMethods[level] && + (this.debug || this._globalOptions.debug) + ) { + // In IE<10 console methods do not have their own 'apply' method + Function.prototype.apply.call( + this._originalConsoleMethods[level], + this._originalConsole, + [].slice.call(arguments, 1) + ); + } + }, - return function (evt) { - var target; + _mergeContext: function(key, context) { + if (isUndefined(context)) { + delete this._globalContext[key]; + } else { + this._globalContext[key] = objectMerge(this._globalContext[key] || {}, context); + } + } +}; - try { - target = evt.target; - } catch (e) { - // just accessing event properties can throw an exception in some rare circumstances - // see: https://github.com/getsentry/raven-js/issues/838 - return; - } +// Deprecations +Raven.prototype.setUser = Raven.prototype.setUserContext; +Raven.prototype.setReleaseContext = Raven.prototype.setRelease; - var tagName = target && target.tagName; // only consider keypress events on actual input elements - // this will disregard keypresses targeting body (e.g. tabbing - // through elements, hotkeys, etc) +module.exports = Raven; - if (!tagName || tagName !== 'INPUT' && tagName !== 'TEXTAREA' && !target.isContentEditable) return; // record first keypress in a series, but ignore subsequent - // keypresses until debounce clears +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"10":10,"11":11,"4":4,"5":5,"8":8,"9":9}],7:[function(_dereq_,module,exports){ +(function (global){ +/** + * Enforces a single instance of the Raven client, and the + * main entry point for Raven. If you are a consumer of the + * Raven library, you SHOULD load this file (vs raven.js). + **/ - var timeout = self._keypressTimeout; +var RavenConstructor = _dereq_(6); - if (!timeout) { - self._breadcrumbEventHandler('input')(evt); - } +// This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) +var _window = + typeof window !== 'undefined' + ? window + : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; +var _Raven = _window.Raven; - clearTimeout(timeout); - self._keypressTimeout = setTimeout(function () { - self._keypressTimeout = null; - }, debounceDuration); - }; - }, +var Raven = new RavenConstructor(); - /** - * Captures a breadcrumb of type "navigation", normalizing input URLs - * @param to the originating URL - * @param from the target URL - * @private - */ - _captureUrlChange: function _captureUrlChange(from, to) { - var parsedLoc = parseUrl(this._location.href); - var parsedTo = parseUrl(to); - var parsedFrom = parseUrl(from); // because onpopstate only tells you the "new" (to) value of location.href, and - // not the previous (from) value, we need to track the value of the current URL - // state ourselves +/* + * Allow multiple versions of Raven to be installed. + * Strip Raven from the global context and returns the instance. + * + * @return {Raven} + */ +Raven.noConflict = function() { + _window.Raven = _Raven; + return Raven; +}; - this._lastHref = to; // Use only the path component of the URL if the URL matches the current - // document (almost all the time when using pushState) +Raven.afterLoad(); - if (parsedLoc.protocol === parsedTo.protocol && parsedLoc.host === parsedTo.host) to = parsedTo.relative; - if (parsedLoc.protocol === parsedFrom.protocol && parsedLoc.host === parsedFrom.host) from = parsedFrom.relative; - this.captureBreadcrumb({ - category: 'navigation', - data: { - to: to, - from: from - } - }); - }, - _patchFunctionToString: function _patchFunctionToString() { - var self = this; - self._originalFunctionToString = Function.prototype.toString; // eslint-disable-next-line no-extend-native +module.exports = Raven; - Function.prototype.toString = function () { - if (typeof this === 'function' && this.__raven__) { - return self._originalFunctionToString.apply(this.__orig__, arguments); - } +/** + * DISCLAIMER: + * + * Expose `Client` constructor for cases where user want to track multiple "sub-applications" in one larger app. + * It's not meant to be used by a wide audience, so pleaaase make sure that you know what you're doing before using it. + * Accidentally calling `install` multiple times, may result in an unexpected behavior that's very hard to debug. + * + * It's called `Client' to be in-line with Raven Node implementation. + * + * HOWTO: + * + * import Raven from 'raven-js'; + * + * const someAppReporter = new Raven.Client(); + * const someOtherAppReporter = new Raven.Client(); + * + * someAppReporter.config('__DSN__', { + * ...config goes here + * }); + * + * someOtherAppReporter.config('__OTHER_DSN__', { + * ...config goes here + * }); + * + * someAppReporter.captureMessage(...); + * someAppReporter.captureException(...); + * someAppReporter.captureBreadcrumb(...); + * + * someOtherAppReporter.captureMessage(...); + * someOtherAppReporter.captureException(...); + * someOtherAppReporter.captureBreadcrumb(...); + * + * It should "just work". + */ +module.exports.Client = RavenConstructor; - return self._originalFunctionToString.apply(this, arguments); - }; - }, - _unpatchFunctionToString: function _unpatchFunctionToString() { - if (this._originalFunctionToString) { - // eslint-disable-next-line no-extend-native - Function.prototype.toString = this._originalFunctionToString; - } - }, +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"6":6}],8:[function(_dereq_,module,exports){ +(function (global){ +var stringify = _dereq_(10); - /** - * Wrap timer functions and event targets to catch errors and provide - * better metadata. - */ - _instrumentTryCatch: function _instrumentTryCatch() { - var self = this; - var wrappedBuiltIns = self._wrappedBuiltIns; +var _window = + typeof window !== 'undefined' + ? window + : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; - function wrapTimeFn(orig) { - return function (fn, t) { - // preserve arity - // Make a copy of the arguments to prevent deoptimization - // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments - var args = new Array(arguments.length); +function isObject(what) { + return typeof what === 'object' && what !== null; +} - for (var i = 0; i < args.length; ++i) { - args[i] = arguments[i]; - } +// Yanked from https://git.io/vS8DV re-used under CC0 +// with some tiny modifications +function isError(value) { + switch ({}.toString.call(value)) { + case '[object Error]': + return true; + case '[object Exception]': + return true; + case '[object DOMException]': + return true; + default: + return value instanceof Error; + } +} - var originalCallback = args[0]; +function isErrorEvent(value) { + return supportsErrorEvent() && {}.toString.call(value) === '[object ErrorEvent]'; +} - if (isFunction(originalCallback)) { - args[0] = self.wrap(originalCallback); - } // IE < 9 doesn't support .call/.apply on setInterval/setTimeout, but it - // also supports only two arguments and doesn't care what this is, so we - // can just call the original function directly. +function isUndefined(what) { + return what === void 0; +} +function isFunction(what) { + return typeof what === 'function'; +} - if (orig.apply) { - return orig.apply(this, args); - } else { - return orig(args[0], args[1]); - } - }; - } +function isPlainObject(what) { + return Object.prototype.toString.call(what) === '[object Object]'; +} - var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; +function isString(what) { + return Object.prototype.toString.call(what) === '[object String]'; +} - function wrapEventTarget(global) { - var proto = _window$1[global] && _window$1[global].prototype; +function isArray(what) { + return Object.prototype.toString.call(what) === '[object Array]'; +} - if (proto && proto.hasOwnProperty && proto.hasOwnProperty('addEventListener')) { - fill(proto, 'addEventListener', function (orig) { - return function (evtName, fn, capture, secure) { - // preserve arity - try { - if (fn && fn.handleEvent) { - fn.handleEvent = self.wrap(fn.handleEvent); - } - } catch (err) {} // can sometimes get 'Permission denied to access property "handle Event' - // More breadcrumb DOM capture ... done here and not in `_instrumentBreadcrumbs` - // so that we don't have more than one wrapper function +function isEmptyObject(what) { + if (!isPlainObject(what)) return false; + for (var _ in what) { + if (what.hasOwnProperty(_)) { + return false; + } + } + return true; +} - var before, clickHandler, keypressHandler; +function supportsErrorEvent() { + try { + new ErrorEvent(''); // eslint-disable-line no-new + return true; + } catch (e) { + return false; + } +} - if (autoBreadcrumbs && autoBreadcrumbs.dom && (global === 'EventTarget' || global === 'Node')) { - // NOTE: generating multiple handlers per addEventListener invocation, should - // revisit and verify we can just use one (almost certainly) - clickHandler = self._breadcrumbEventHandler('click'); - keypressHandler = self._keypressEventHandler(); +function supportsFetch() { + if (!('fetch' in _window)) return false; - before = function before(evt) { - // need to intercept every DOM event in `before` argument, in case that - // same wrapped method is re-used for different events (e.g. mousemove THEN click) - // see #724 - if (!evt) return; - var eventType; + try { + new Headers(); // eslint-disable-line no-new + new Request(''); // eslint-disable-line no-new + new Response(); // eslint-disable-line no-new + return true; + } catch (e) { + return false; + } +} - try { - eventType = evt.type; - } catch (e) { - // just accessing event properties can throw an exception in some rare circumstances - // see: https://github.com/getsentry/raven-js/issues/838 - return; - } +// Despite all stars in the sky saying that Edge supports old draft syntax, aka 'never', 'always', 'origin' and 'default +// https://caniuse.com/#feat=referrer-policy +// It doesn't. And it throw exception instead of ignoring this parameter... +// REF: https://github.com/getsentry/raven-js/issues/1233 +function supportsReferrerPolicy() { + if (!supportsFetch()) return false; - if (eventType === 'click') return clickHandler(evt);else if (eventType === 'keypress') return keypressHandler(evt); - }; - } + try { + // eslint-disable-next-line no-new + new Request('pickleRick', { + referrerPolicy: 'origin' + }); + return true; + } catch (e) { + return false; + } +} - return orig.call(this, evtName, self.wrap(fn, undefined, before), capture, secure); - }; - }, wrappedBuiltIns); - fill(proto, 'removeEventListener', function (orig) { - return function (evt, fn, capture, secure) { - try { - fn = fn && (fn.__raven_wrapper__ ? fn.__raven_wrapper__ : fn); - } catch (e) {// ignore, accessing __raven_wrapper__ will throw in some Selenium environments - } +function supportsPromiseRejectionEvent() { + return typeof PromiseRejectionEvent === 'function'; +} - return orig.call(this, evt, fn, capture, secure); - }; - }, wrappedBuiltIns); - } +function wrappedCallback(callback) { + function dataCallback(data, original) { + var normalizedData = callback(data) || data; + if (original) { + return original(normalizedData) || normalizedData; } + return normalizedData; + } - fill(_window$1, 'setTimeout', wrapTimeFn, wrappedBuiltIns); - fill(_window$1, 'setInterval', wrapTimeFn, wrappedBuiltIns); - - if (_window$1.requestAnimationFrame) { - fill(_window$1, 'requestAnimationFrame', function (orig) { - return function (cb) { - return orig(self.wrap(cb)); - }; - }, wrappedBuiltIns); - } // event targets borrowed from bugsnag-js: - // https://github.com/bugsnag/bugsnag-js/blob/master/src/bugsnag.js#L666 - + return dataCallback; +} - var eventTargets = ['EventTarget', 'Window', 'Node', 'ApplicationCache', 'AudioTrackList', 'ChannelMergerNode', 'CryptoOperation', 'EventSource', 'FileReader', 'HTMLUnknownElement', 'IDBDatabase', 'IDBRequest', 'IDBTransaction', 'KeyOperation', 'MediaController', 'MessagePort', 'ModalWindow', 'Notification', 'SVGElementInstance', 'Screen', 'TextTrack', 'TextTrackCue', 'TextTrackList', 'WebSocket', 'WebSocketWorker', 'Worker', 'XMLHttpRequest', 'XMLHttpRequestEventTarget', 'XMLHttpRequestUpload']; +function each(obj, callback) { + var i, j; - for (var i = 0; i < eventTargets.length; i++) { - wrapEventTarget(eventTargets[i]); + if (isUndefined(obj.length)) { + for (i in obj) { + if (hasKey(obj, i)) { + callback.call(null, i, obj[i]); + } } - }, - - /** - * Instrument browser built-ins w/ breadcrumb capturing - * - XMLHttpRequests - * - DOM interactions (click/typing) - * - window.location changes - * - console - * - * Can be disabled or individually configured via the `autoBreadcrumbs` config option - */ - _instrumentBreadcrumbs: function _instrumentBreadcrumbs() { - var self = this; - var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; - var wrappedBuiltIns = self._wrappedBuiltIns; - - function wrapProp(prop, xhr) { - if (prop in xhr && isFunction(xhr[prop])) { - fill(xhr, prop, function (orig) { - return self.wrap(orig); - }); // intentionally don't track filled methods on XHR instances + } else { + j = obj.length; + if (j) { + for (i = 0; i < j; i++) { + callback.call(null, i, obj[i]); } } + } +} - if (autoBreadcrumbs.xhr && 'XMLHttpRequest' in _window$1) { - var xhrproto = XMLHttpRequest.prototype; - fill(xhrproto, 'open', function (origOpen) { - return function (method, url) { - // preserve arity - // if Sentry key appears in URL, don't capture - if (isString(url) && url.indexOf(self._globalKey) === -1) { - this.__raven_xhr = { - method: method, - url: url, - status_code: null - }; - } - - return origOpen.apply(this, arguments); - }; - }, wrappedBuiltIns); - fill(xhrproto, 'send', function (origSend) { - return function () { - // preserve arity - var xhr = this; - - function onreadystatechangeHandler() { - if (xhr.__raven_xhr && xhr.readyState === 4) { - try { - // touching statusCode in some platforms throws - // an exception - xhr.__raven_xhr.status_code = xhr.status; - } catch (e) { - /* do nothing */ - } +function objectMerge(obj1, obj2) { + if (!obj2) { + return obj1; + } + each(obj2, function(key, value) { + obj1[key] = value; + }); + return obj1; +} - self.captureBreadcrumb({ - type: 'http', - category: 'xhr', - data: xhr.__raven_xhr - }); - } - } +/** + * This function is only used for react-native. + * react-native freezes object that have already been sent over the + * js bridge. We need this function in order to check if the object is frozen. + * So it's ok that objectFrozen returns false if Object.isFrozen is not + * supported because it's not relevant for other "platforms". See related issue: + * https://github.com/getsentry/react-native-sentry/issues/57 + */ +function objectFrozen(obj) { + if (!Object.isFrozen) { + return false; + } + return Object.isFrozen(obj); +} - var props = ['onload', 'onerror', 'onprogress']; +function truncate(str, max) { + if (typeof max !== 'number') { + throw new Error('2nd argument to `truncate` function should be a number'); + } + if (typeof str !== 'string' || max === 0) { + return str; + } + return str.length <= max ? str : str.substr(0, max) + '\u2026'; +} - for (var j = 0; j < props.length; j++) { - wrapProp(props[j], xhr); - } +/** + * hasKey, a better form of hasOwnProperty + * Example: hasKey(MainHostObject, property) === true/false + * + * @param {Object} host object to check property + * @param {string} key to check + */ +function hasKey(object, key) { + return Object.prototype.hasOwnProperty.call(object, key); +} - if ('onreadystatechange' in xhr && isFunction(xhr.onreadystatechange)) { - fill(xhr, 'onreadystatechange', function (orig) { - return self.wrap(orig, undefined, onreadystatechangeHandler); - } - /* intentionally don't track this instrumentation */ - ); - } else { - // if onreadystatechange wasn't actually set by the page on this xhr, we - // are free to set our own and capture the breadcrumb - xhr.onreadystatechange = onreadystatechangeHandler; - } +function joinRegExp(patterns) { + // Combine an array of regular expressions and strings into one large regexp + // Be mad. + var sources = [], + i = 0, + len = patterns.length, + pattern; - return origSend.apply(this, arguments); - }; - }, wrappedBuiltIns); + for (; i < len; i++) { + pattern = patterns[i]; + if (isString(pattern)) { + // If it's a string, we need to escape it + // Taken from: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions + sources.push(pattern.replace(/([.*+?^=!:${}()|\[\]\/\\])/g, '\\$1')); + } else if (pattern && pattern.source) { + // If it's a regexp already, we want to extract the source + sources.push(pattern.source); } + // Intentionally skip other cases + } + return new RegExp(sources.join('|'), 'i'); +} - if (autoBreadcrumbs.xhr && supportsFetch()) { - fill(_window$1, 'fetch', function (origFetch) { - return function () { - // preserve arity - // Make a copy of the arguments to prevent deoptimization - // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments - var args = new Array(arguments.length); - - for (var i = 0; i < args.length; ++i) { - args[i] = arguments[i]; - } +function urlencode(o) { + var pairs = []; + each(o, function(key, value) { + pairs.push(encodeURIComponent(key) + '=' + encodeURIComponent(value)); + }); + return pairs.join('&'); +} - var fetchInput = args[0]; - var method = 'GET'; - var url; +// borrowed from https://tools.ietf.org/html/rfc3986#appendix-B +// intentionally using regex and not href parsing trick because React Native and other +// environments where DOM might not be available +function parseUrl(url) { + if (typeof url !== 'string') return {}; + var match = url.match(/^(([^:\/?#]+):)?(\/\/([^\/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?$/); - if (typeof fetchInput === 'string') { - url = fetchInput; - } else if ('Request' in _window$1 && fetchInput instanceof _window$1.Request) { - url = fetchInput.url; + // coerce to undefined values to empty string so we don't get 'undefined' + var query = match[6] || ''; + var fragment = match[8] || ''; + return { + protocol: match[2], + host: match[4], + path: match[5], + relative: match[5] + query + fragment // everything minus origin + }; +} +function uuid4() { + var crypto = _window.crypto || _window.msCrypto; - if (fetchInput.method) { - method = fetchInput.method; - } - } else { - url = '' + fetchInput; - } // if Sentry key appears in URL, don't capture, as it's our own request + if (!isUndefined(crypto) && crypto.getRandomValues) { + // Use window.crypto API if available + // eslint-disable-next-line no-undef + var arr = new Uint16Array(8); + crypto.getRandomValues(arr); + // set 4 in byte 7 + arr[3] = (arr[3] & 0xfff) | 0x4000; + // set 2 most significant bits of byte 9 to '10' + arr[4] = (arr[4] & 0x3fff) | 0x8000; - if (url.indexOf(self._globalKey) !== -1) { - return origFetch.apply(this, args); - } + var pad = function(num) { + var v = num.toString(16); + while (v.length < 4) { + v = '0' + v; + } + return v; + }; - if (args[1] && args[1].method) { - method = args[1].method; - } + return ( + pad(arr[0]) + + pad(arr[1]) + + pad(arr[2]) + + pad(arr[3]) + + pad(arr[4]) + + pad(arr[5]) + + pad(arr[6]) + + pad(arr[7]) + ); + } else { + // http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/2117523#2117523 + return 'xxxxxxxxxxxx4xxxyxxxxxxxxxxxxxxx'.replace(/[xy]/g, function(c) { + var r = (Math.random() * 16) | 0, + v = c === 'x' ? r : (r & 0x3) | 0x8; + return v.toString(16); + }); + } +} - var fetchData = { - method: method, - url: url, - status_code: null - }; - return origFetch.apply(this, args).then(function (response) { - fetchData.status_code = response.status; - self.captureBreadcrumb({ - type: 'http', - category: 'fetch', - data: fetchData - }); - return response; - }); - }; - }, wrappedBuiltIns); - } // Capture breadcrumbs from any click that is unhandled / bubbled up all the way - // to the document. Do this before we instrument addEventListener. +/** + * Given a child DOM element, returns a query-selector statement describing that + * and its ancestors + * e.g. [HTMLElement] => body > div > input#foo.btn[name=baz] + * @param elem + * @returns {string} + */ +function htmlTreeAsString(elem) { + /* eslint no-extra-parens:0*/ + var MAX_TRAVERSE_HEIGHT = 5, + MAX_OUTPUT_LEN = 80, + out = [], + height = 0, + len = 0, + separator = ' > ', + sepLength = separator.length, + nextStr; + while (elem && height++ < MAX_TRAVERSE_HEIGHT) { + nextStr = htmlElementAsString(elem); + // bail out if + // - nextStr is the 'html' element + // - the length of the string that would be created exceeds MAX_OUTPUT_LEN + // (ignore this limit if we are on the first iteration) + if ( + nextStr === 'html' || + (height > 1 && len + out.length * sepLength + nextStr.length >= MAX_OUTPUT_LEN) + ) { + break; + } - if (autoBreadcrumbs.dom && this._hasDocument) { - if (_document.addEventListener) { - _document.addEventListener('click', self._breadcrumbEventHandler('click'), false); + out.push(nextStr); - _document.addEventListener('keypress', self._keypressEventHandler(), false); - } else { - // IE8 Compatibility - _document.attachEvent('onclick', self._breadcrumbEventHandler('click')); + len += nextStr.length; + elem = elem.parentNode; + } - _document.attachEvent('onkeypress', self._keypressEventHandler()); - } - } // record navigation (URL) changes - // NOTE: in Chrome App environment, touching history.pushState, *even inside - // a try/catch block*, will cause Chrome to output an error to console.error - // borrowed from: https://github.com/angular/angular.js/pull/13945/files + return out.reverse().join(separator); +} +/** + * Returns a simple, query-selector representation of a DOM element + * e.g. [HTMLElement] => input#foo.btn[name=baz] + * @param HTMLElement + * @returns {string} + */ +function htmlElementAsString(elem) { + var out = [], + className, + classes, + key, + attr, + i; - var chrome = _window$1.chrome; - var isChromePackagedApp = chrome && chrome.app && chrome.app.runtime; - var hasPushAndReplaceState = !isChromePackagedApp && _window$1.history && history.pushState && history.replaceState; + if (!elem || !elem.tagName) { + return ''; + } - if (autoBreadcrumbs.location && hasPushAndReplaceState) { - // TODO: remove onpopstate handler on uninstall() - var oldOnPopState = _window$1.onpopstate; + out.push(elem.tagName.toLowerCase()); + if (elem.id) { + out.push('#' + elem.id); + } - _window$1.onpopstate = function () { - var currentHref = self._location.href; + className = elem.className; + if (className && isString(className)) { + classes = className.split(/\s+/); + for (i = 0; i < classes.length; i++) { + out.push('.' + classes[i]); + } + } + var attrWhitelist = ['type', 'name', 'title', 'alt']; + for (i = 0; i < attrWhitelist.length; i++) { + key = attrWhitelist[i]; + attr = elem.getAttribute(key); + if (attr) { + out.push('[' + key + '="' + attr + '"]'); + } + } + return out.join(''); +} - self._captureUrlChange(self._lastHref, currentHref); +/** + * Returns true if either a OR b is truthy, but not both + */ +function isOnlyOneTruthy(a, b) { + return !!(!!a ^ !!b); +} - if (oldOnPopState) { - return oldOnPopState.apply(this, arguments); - } - }; +/** + * Returns true if both parameters are undefined + */ +function isBothUndefined(a, b) { + return isUndefined(a) && isUndefined(b); +} - var historyReplacementFunction = function historyReplacementFunction(origHistFunction) { - // note history.pushState.length is 0; intentionally not declaring - // params to preserve 0 arity - return function () - /* state, title, url */ - { - var url = arguments.length > 2 ? arguments[2] : undefined; // url argument is optional +/** + * Returns true if the two input exception interfaces have the same content + */ +function isSameException(ex1, ex2) { + if (isOnlyOneTruthy(ex1, ex2)) return false; - if (url) { - // coerce to string (this is what pushState does) - self._captureUrlChange(self._lastHref, url + ''); - } + ex1 = ex1.values[0]; + ex2 = ex2.values[0]; - return origHistFunction.apply(this, arguments); - }; - }; + if (ex1.type !== ex2.type || ex1.value !== ex2.value) return false; - fill(history, 'pushState', historyReplacementFunction, wrappedBuiltIns); - fill(history, 'replaceState', historyReplacementFunction, wrappedBuiltIns); - } + // in case both stacktraces are undefined, we can't decide so default to false + if (isBothUndefined(ex1.stacktrace, ex2.stacktrace)) return false; - if (autoBreadcrumbs.console && 'console' in _window$1 && console.log) { - // console - var consoleMethodCallback = function consoleMethodCallback(msg, data) { - self.captureBreadcrumb({ - message: msg, - level: data.level, - category: 'console' - }); - }; + return isSameStacktrace(ex1.stacktrace, ex2.stacktrace); +} - each(['debug', 'info', 'warn', 'error', 'log'], function (_, level) { - wrapConsoleMethod(console, level, consoleMethodCallback); - }); - } - }, - _restoreBuiltIns: function _restoreBuiltIns() { - // restore any wrapped builtins - var builtin; +/** + * Returns true if the two input stack trace interfaces have the same content + */ +function isSameStacktrace(stack1, stack2) { + if (isOnlyOneTruthy(stack1, stack2)) return false; - while (this._wrappedBuiltIns.length) { - builtin = this._wrappedBuiltIns.shift(); - var obj = builtin[0], - name = builtin[1], - orig = builtin[2]; - obj[name] = orig; - } - }, - _restoreConsole: function _restoreConsole() { - // eslint-disable-next-line guard-for-in - for (var method in this._originalConsoleMethods) { - this._originalConsole[method] = this._originalConsoleMethods[method]; - } - }, - _drainPlugins: function _drainPlugins() { - var self = this; // FIX ME TODO + var frames1 = stack1.frames; + var frames2 = stack2.frames; - each(this._plugins, function (_, plugin) { - var installer = plugin[0]; - var args = plugin[1]; - installer.apply(self, [self].concat(args)); - }); - }, - _parseDSN: function _parseDSN(str) { - var m = dsnPattern.exec(str), - dsn = {}, - i = 7; + // Exit early if frame count differs + if (frames1.length !== frames2.length) return false; + + // Iterate through every frame; bail out if anything differs + var a, b; + for (var i = 0; i < frames1.length; i++) { + a = frames1[i]; + b = frames2[i]; + if ( + a.filename !== b.filename || + a.lineno !== b.lineno || + a.colno !== b.colno || + a['function'] !== b['function'] + ) + return false; + } + return true; +} + +/** + * Polyfill a method + * @param obj object e.g. `document` + * @param name method name present on object e.g. `addEventListener` + * @param replacement replacement function + * @param track {optional} record instrumentation to an array + */ +function fill(obj, name, replacement, track) { + if (obj == null) return; + var orig = obj[name]; + obj[name] = replacement(orig); + obj[name].__raven__ = true; + obj[name].__orig__ = orig; + if (track) { + track.push([obj, name, orig]); + } +} + +/** + * Join values in array + * @param input array of values to be joined together + * @param delimiter string to be placed in-between values + * @returns {string} + */ +function safeJoin(input, delimiter) { + if (!isArray(input)) return ''; + + var output = []; + for (var i = 0; i < input.length; i++) { try { - while (i--) { - dsn[dsnKeys[i]] = m[i] || ''; - } + output.push(String(input[i])); } catch (e) { - throw new configError('Invalid DSN: ' + str); + output.push('[value cannot be serialized]'); } + } - if (dsn.pass && !this._globalOptions.allowSecretKey) { - throw new configError('Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key'); - } + return output.join(delimiter); +} - return dsn; - }, - _getGlobalServer: function _getGlobalServer(uri) { - // assemble the endpoint from the uri pieces - var globalServer = '//' + uri.host + (uri.port ? ':' + uri.port : ''); +// Default Node.js REPL depth +var MAX_SERIALIZE_EXCEPTION_DEPTH = 3; +// 50kB, as 100kB is max payload size, so half sounds reasonable +var MAX_SERIALIZE_EXCEPTION_SIZE = 50 * 1024; +var MAX_SERIALIZE_KEYS_LENGTH = 40; - if (uri.protocol) { - globalServer = uri.protocol + ':' + globalServer; - } +function utf8Length(value) { + return ~-encodeURI(value).split(/%..|./).length; +} - return globalServer; - }, - _handleOnErrorStackInfo: function _handleOnErrorStackInfo() { - // if we are intentionally ignoring errors via onerror, bail out - if (!this._ignoreOnError) { - this._handleStackInfo.apply(this, arguments); - } - }, - _handleStackInfo: function _handleStackInfo(stackInfo, options) { - var frames = this._prepareFrames(stackInfo, options); +function jsonSize(value) { + return utf8Length(JSON.stringify(value)); +} - this._triggerEvent('handle', { - stackInfo: stackInfo, - options: options +function serializeValue(value) { + if (typeof value === 'string') { + var maxLength = 40; + return truncate(value, maxLength); + } else if ( + typeof value === 'number' || + typeof value === 'boolean' || + typeof value === 'undefined' + ) { + return value; + } + + var type = Object.prototype.toString.call(value); + + // Node.js REPL notation + if (type === '[object Object]') return '[Object]'; + if (type === '[object Array]') return '[Array]'; + if (type === '[object Function]') + return value.name ? '[Function: ' + value.name + ']' : '[Function]'; + + return value; +} + +function serializeObject(value, depth) { + if (depth === 0) return serializeValue(value); + + if (isPlainObject(value)) { + return Object.keys(value).reduce(function(acc, key) { + acc[key] = serializeObject(value[key], depth - 1); + return acc; + }, {}); + } else if (Array.isArray(value)) { + return value.map(function(val) { + return serializeObject(val, depth - 1); }); + } - this._processException(stackInfo.name, stackInfo.message, stackInfo.url, stackInfo.lineno, frames, options); - }, - _prepareFrames: function _prepareFrames(stackInfo, options) { - var self = this; - var frames = []; + return serializeValue(value); +} - if (stackInfo.stack && stackInfo.stack.length) { - each(stackInfo.stack, function (i, stack) { - var frame = self._normalizeFrame(stack, stackInfo.url); +function serializeException(ex, depth, maxSize) { + if (!isPlainObject(ex)) return ex; - if (frame) { - frames.push(frame); - } - }); // e.g. frames captured via captureMessage throw + depth = typeof depth !== 'number' ? MAX_SERIALIZE_EXCEPTION_DEPTH : depth; + maxSize = typeof depth !== 'number' ? MAX_SERIALIZE_EXCEPTION_SIZE : maxSize; - if (options && options.trimHeadFrames) { - for (var j = 0; j < options.trimHeadFrames && j < frames.length; j++) { - frames[j].in_app = false; - } - } - } + var serialized = serializeObject(ex, depth); - frames = frames.slice(0, this._globalOptions.stackTraceLimit); - return frames; - }, - _normalizeFrame: function _normalizeFrame(frame, stackInfoUrl) { - // normalize the frames data - var normalized = { - filename: frame.url, - lineno: frame.line, - colno: frame.column, - function: frame.func || '?' - }; // Case when we don't have any information about the error - // E.g. throwing a string or raw object, instead of an `Error` in Firefox - // Generating synthetic error doesn't add any value here - // - // We should probably somehow let a user know that they should fix their code + if (jsonSize(stringify(serialized)) > maxSize) { + return serializeException(ex, depth - 1); + } - if (!frame.url) { - normalized.filename = stackInfoUrl; // fallback to whole stacks url from onerror handler - } + return serialized; +} - normalized.in_app = !( // determine if an exception came from outside of our app - // first we check the global includePaths list. - !!this._globalOptions.includePaths.test && !this._globalOptions.includePaths.test(normalized.filename) || // Now we check for fun, if the function name is Raven or TraceKit - /(Raven|TraceKit)\./.test(normalized['function']) || // finally, we do a last ditch effort and check for raven.min.js - /raven\.(min\.)?js$/.test(normalized.filename)); - return normalized; - }, - _processException: function _processException(type, message, fileurl, lineno, frames, options) { - var prefixedMessage = (type ? type + ': ' : '') + (message || ''); +function serializeKeysForMessage(keys, maxLength) { + if (typeof keys === 'number' || typeof keys === 'string') return keys.toString(); + if (!Array.isArray(keys)) return ''; - if (!!this._globalOptions.ignoreErrors.test && (this._globalOptions.ignoreErrors.test(message) || this._globalOptions.ignoreErrors.test(prefixedMessage))) { - return; - } + keys = keys.filter(function(key) { + return typeof key === 'string'; + }); + if (keys.length === 0) return '[object has no keys]'; - var stacktrace; + maxLength = typeof maxLength !== 'number' ? MAX_SERIALIZE_KEYS_LENGTH : maxLength; + if (keys[0].length >= maxLength) return keys[0]; - if (frames && frames.length) { - fileurl = frames[0].filename || fileurl; // Sentry expects frames oldest to newest - // and JS sends them as newest to oldest + for (var usedKeys = keys.length; usedKeys > 0; usedKeys--) { + var serialized = keys.slice(0, usedKeys).join(', '); + if (serialized.length > maxLength) continue; + if (usedKeys === keys.length) return serialized; + return serialized + '\u2026'; + } - frames.reverse(); - stacktrace = { - frames: frames - }; - } else if (fileurl) { - stacktrace = { - frames: [{ - filename: fileurl, - lineno: lineno, - in_app: true - }] - }; - } - - if (!!this._globalOptions.ignoreUrls.test && this._globalOptions.ignoreUrls.test(fileurl)) { - return; - } + return ''; +} - if (!!this._globalOptions.whitelistUrls.test && !this._globalOptions.whitelistUrls.test(fileurl)) { - return; - } +function sanitize(input, sanitizeKeys) { + if (!isArray(sanitizeKeys) || (isArray(sanitizeKeys) && sanitizeKeys.length === 0)) + return input; - var data = objectMerge({ - // sentry.interfaces.Exception - exception: { - values: [{ - type: type, - value: message, - stacktrace: stacktrace - }] - }, - culprit: fileurl - }, options); // Fire away! + var sanitizeRegExp = joinRegExp(sanitizeKeys); + var sanitizeMask = '********'; + var safeInput; - this._send(data); - }, - _trimPacket: function _trimPacket(data) { - // For now, we only want to truncate the two different messages - // but this could/should be expanded to just trim everything - var max = this._globalOptions.maxMessageLength; + try { + safeInput = JSON.parse(stringify(input)); + } catch (o_O) { + return input; + } - if (data.message) { - data.message = truncate(data.message, max); + function sanitizeWorker(workerInput) { + if (isArray(workerInput)) { + return workerInput.map(function(val) { + return sanitizeWorker(val); + }); } - if (data.exception) { - var exception = data.exception.values[0]; - exception.value = truncate(exception.value, max); + if (isPlainObject(workerInput)) { + return Object.keys(workerInput).reduce(function(acc, k) { + if (sanitizeRegExp.test(k)) { + acc[k] = sanitizeMask; + } else { + acc[k] = sanitizeWorker(workerInput[k]); + } + return acc; + }, {}); } - var request = data.request; + return workerInput; + } - if (request) { - if (request.url) { - request.url = truncate(request.url, this._globalOptions.maxUrlLength); - } + return sanitizeWorker(safeInput); +} - if (request.Referer) { - request.Referer = truncate(request.Referer, this._globalOptions.maxUrlLength); - } - } +module.exports = { + isObject: isObject, + isError: isError, + isErrorEvent: isErrorEvent, + isUndefined: isUndefined, + isFunction: isFunction, + isPlainObject: isPlainObject, + isString: isString, + isArray: isArray, + isEmptyObject: isEmptyObject, + supportsErrorEvent: supportsErrorEvent, + supportsFetch: supportsFetch, + supportsReferrerPolicy: supportsReferrerPolicy, + supportsPromiseRejectionEvent: supportsPromiseRejectionEvent, + wrappedCallback: wrappedCallback, + each: each, + objectMerge: objectMerge, + truncate: truncate, + objectFrozen: objectFrozen, + hasKey: hasKey, + joinRegExp: joinRegExp, + urlencode: urlencode, + uuid4: uuid4, + htmlTreeAsString: htmlTreeAsString, + htmlElementAsString: htmlElementAsString, + isSameException: isSameException, + isSameStacktrace: isSameStacktrace, + parseUrl: parseUrl, + fill: fill, + safeJoin: safeJoin, + serializeException: serializeException, + serializeKeysForMessage: serializeKeysForMessage, + sanitize: sanitize +}; - if (data.breadcrumbs && data.breadcrumbs.values) this._trimBreadcrumbs(data.breadcrumbs); - return data; - }, +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"10":10}],9:[function(_dereq_,module,exports){ +(function (global){ +var utils = _dereq_(8); - /** - * Truncate breadcrumb values (right now just URLs) - */ - _trimBreadcrumbs: function _trimBreadcrumbs(breadcrumbs) { - // known breadcrumb properties with urls - // TODO: also consider arbitrary prop values that start with (https?)?:// - var urlProps = ['to', 'from', 'url'], - urlProp, - crumb, - data; +/* + TraceKit - Cross brower stack traces - for (var i = 0; i < breadcrumbs.values.length; ++i) { - crumb = breadcrumbs.values[i]; - if (!crumb.hasOwnProperty('data') || !isObject(crumb.data) || objectFrozen(crumb.data)) continue; - data = objectMerge({}, crumb.data); + This was originally forked from github.com/occ/TraceKit, but has since been + largely re-written and is now maintained as part of raven-js. Tests for + this are in test/vendor. - for (var j = 0; j < urlProps.length; ++j) { - urlProp = urlProps[j]; + MIT license +*/ - if (data.hasOwnProperty(urlProp) && data[urlProp]) { - data[urlProp] = truncate(data[urlProp], this._globalOptions.maxUrlLength); - } - } +var TraceKit = { + collectWindowErrors: true, + debug: false +}; - breadcrumbs.values[i].data = data; - } - }, - _getHttpData: function _getHttpData() { - if (!this._hasNavigator && !this._hasDocument) return; - var httpData = {}; +// This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) +var _window = + typeof window !== 'undefined' + ? window + : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; - if (this._hasNavigator && _navigator.userAgent) { - httpData.headers = { - 'User-Agent': navigator.userAgent - }; - } // Check in `window` instead of `document`, as we may be in ServiceWorker environment +// global reference to slice +var _slice = [].slice; +var UNKNOWN_FUNCTION = '?'; +// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error#Error_types +var ERROR_TYPES_RE = /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/; - if (_window$1.location && _window$1.location.href) { - httpData.url = _window$1.location.href; - } +function getLocationHref() { + if (typeof document === 'undefined' || document.location == null) return ''; - if (this._hasDocument && _document.referrer) { - if (!httpData.headers) httpData.headers = {}; - httpData.headers.Referer = _document.referrer; - } + return document.location.href; +} - return httpData; - }, - _resetBackoff: function _resetBackoff() { - this._backoffDuration = 0; - this._backoffStart = null; - }, - _shouldBackoff: function _shouldBackoff() { - return this._backoffDuration && now() - this._backoffStart < this._backoffDuration; - }, +/** + * TraceKit.report: cross-browser processing of unhandled exceptions + * + * Syntax: + * TraceKit.report.subscribe(function(stackInfo) { ... }) + * TraceKit.report.unsubscribe(function(stackInfo) { ... }) + * TraceKit.report(exception) + * try { ...code... } catch(ex) { TraceKit.report(ex); } + * + * Supports: + * - Firefox: full stack trace with line numbers, plus column number + * on top frame; column number is not guaranteed + * - Opera: full stack trace with line and column numbers + * - Chrome: full stack trace with line and column numbers + * - Safari: line and column number for the top frame only; some frames + * may be missing, and column number is not guaranteed + * - IE: line and column number for the top frame only; some frames + * may be missing, and column number is not guaranteed + * + * In theory, TraceKit should work on all of the following versions: + * - IE5.5+ (only 8.0 tested) + * - Firefox 0.9+ (only 3.5+ tested) + * - Opera 7+ (only 10.50 tested; versions 9 and earlier may require + * Exceptions Have Stacktrace to be enabled in opera:config) + * - Safari 3+ (only 4+ tested) + * - Chrome 1+ (only 5+ tested) + * - Konqueror 3.5+ (untested) + * + * Requires TraceKit.computeStackTrace. + * + * Tries to catch all unhandled exceptions and report them to the + * subscribed handlers. Please note that TraceKit.report will rethrow the + * exception. This is REQUIRED in order to get a useful stack trace in IE. + * If the exception does not reach the top of the browser, you will only + * get a stack trace from the point where TraceKit.report was called. + * + * Handlers receive a stackInfo object as described in the + * TraceKit.computeStackTrace docs. + */ +TraceKit.report = (function reportModuleWrapper() { + var handlers = [], + lastArgs = null, + lastException = null, + lastExceptionStack = null; /** - * Returns true if the in-process data payload matches the signature - * of the previously-sent data - * - * NOTE: This has to be done at this level because TraceKit can generate - * data from window.onerror WITHOUT an exception object (IE8, IE9, - * other old browsers). This can take the form of an "exception" - * data object with a single frame (derived from the onerror args). + * Add a crash handler. + * @param {Function} handler */ - _isRepeatData: function _isRepeatData(current) { - var last = this._lastData; - if (!last || current.message !== last.message || // defined for captureMessage - current.culprit !== last.culprit // defined for captureException/onerror - ) return false; // Stacktrace interface (i.e. from captureMessage) + function subscribe(handler) { + installGlobalHandler(); + handlers.push(handler); + } - if (current.stacktrace || last.stacktrace) { - return isSameStacktrace(current.stacktrace, last.stacktrace); - } else if (current.exception || last.exception) { - // Exception interface (i.e. from captureException/onerror) - return isSameException(current.exception, last.exception); + /** + * Remove a crash handler. + * @param {Function} handler + */ + function unsubscribe(handler) { + for (var i = handlers.length - 1; i >= 0; --i) { + if (handlers[i] === handler) { + handlers.splice(i, 1); + } } + } - return true; - }, - _setBackoffState: function _setBackoffState(request) { - // If we are already in a backoff state, don't change anything - if (this._shouldBackoff()) { + /** + * Remove all crash handlers. + */ + function unsubscribeAll() { + uninstallGlobalHandler(); + handlers = []; + } + + /** + * Dispatch stack information to all handlers. + * @param {Object.} stack + */ + function notifyHandlers(stack, isWindowError) { + var exception = null; + if (isWindowError && !TraceKit.collectWindowErrors) { return; } + for (var i in handlers) { + if (handlers.hasOwnProperty(i)) { + try { + handlers[i].apply(null, [stack].concat(_slice.call(arguments, 2))); + } catch (inner) { + exception = inner; + } + } + } - var status = request.status; // 400 - project_id doesn't exist or some other fatal - // 401 - invalid/revoked dsn - // 429 - too many requests - - if (!(status === 400 || status === 401 || status === 429)) return; - var retry; - - try { - // If Retry-After is not in Access-Control-Expose-Headers, most - // browsers will throw an exception trying to access it - if (supportsFetch()) { - retry = request.headers.get('Retry-After'); - } else { - retry = request.getResponseHeader('Retry-After'); - } // Retry-After is returned in seconds - - - retry = parseInt(retry, 10) * 1000; - } catch (e) { - /* eslint no-empty:0 */ + if (exception) { + throw exception; } + } - this._backoffDuration = retry ? // If Sentry server returned a Retry-After value, use it - retry : // Otherwise, double the last backoff duration (starts at 1 sec) - this._backoffDuration * 2 || 1000; - this._backoffStart = now(); - }, - _send: function _send(data) { - var globalOptions = this._globalOptions; + var _oldOnerrorHandler, _onErrorHandlerInstalled; - var baseData = { - project: this._globalProject, - logger: globalOptions.logger, - platform: 'javascript' - }, - httpData = this._getHttpData(); + /** + * Ensures all global unhandled exceptions are recorded. + * Supported by Gecko and IE. + * @param {string} msg Error message. + * @param {string} url URL of script that generated the exception. + * @param {(number|string)} lineNo The line number at which the error + * occurred. + * @param {?(number|string)} colNo The column number at which the error + * occurred. + * @param {?Error} ex The actual Error object. + */ + function traceKitWindowOnError(msg, url, lineNo, colNo, ex) { + var stack = null; + // If 'ex' is ErrorEvent, get real Error from inside + var exception = utils.isErrorEvent(ex) ? ex.error : ex; + // If 'msg' is ErrorEvent, get real message from inside + var message = utils.isErrorEvent(msg) ? msg.message : msg; - if (httpData) { - baseData.request = httpData; - } // HACK: delete `trimHeadFrames` to prevent from appearing in outbound payload + if (lastExceptionStack) { + TraceKit.computeStackTrace.augmentStackTraceWithInitialElement( + lastExceptionStack, + url, + lineNo, + message + ); + processLastException(); + } else if (exception && utils.isError(exception)) { + // non-string `exception` arg; attempt to extract stack trace + // New chrome and blink send along a real error object + // Let's just report that like a normal error. + // See: https://mikewest.org/2013/08/debugging-runtime-errors-with-window-onerror + stack = TraceKit.computeStackTrace(exception); + notifyHandlers(stack, true); + } else { + var location = { + url: url, + line: lineNo, + column: colNo + }; - if (data.trimHeadFrames) delete data.trimHeadFrames; - data = objectMerge(baseData, data); // Merge in the tags and extra separately since objectMerge doesn't handle a deep merge + var name = undefined; + var groups; - data.tags = objectMerge(objectMerge({}, this._globalContext.tags), data.tags); - data.extra = objectMerge(objectMerge({}, this._globalContext.extra), data.extra); // Send along our own collected metadata with extra + if ({}.toString.call(message) === '[object String]') { + var groups = message.match(ERROR_TYPES_RE); + if (groups) { + name = groups[1]; + message = groups[2]; + } + } - data.extra['session:duration'] = now() - this._startTime; + location.func = UNKNOWN_FUNCTION; - if (this._breadcrumbs && this._breadcrumbs.length > 0) { - // intentionally make shallow copy so that additions - // to breadcrumbs aren't accidentally sent in this request - data.breadcrumbs = { - values: [].slice.call(this._breadcrumbs, 0) + stack = { + name: name, + message: message, + url: getLocationHref(), + stack: [location] }; + notifyHandlers(stack, true); } - if (this._globalContext.user) { - // sentry.interfaces.User - data.user = this._globalContext.user; - } // Include the environment if it's defined in globalOptions - - - if (globalOptions.environment) data.environment = globalOptions.environment; // Include the release if it's defined in globalOptions - - if (globalOptions.release) data.release = globalOptions.release; // Include server_name if it's defined in globalOptions - - if (globalOptions.serverName) data.server_name = globalOptions.serverName; // Cleanup empty properties before sending them to the server - - Object.keys(data).forEach(function (key) { - if (data[key] == null || data[key] === '' || isEmptyObject(data[key])) { - delete data[key]; - } - }); - - if (isFunction(globalOptions.dataCallback)) { - data = globalOptions.dataCallback(data) || data; - } // Why?????????? - - - if (!data || isEmptyObject(data)) { - return; - } // Check if the request should be filtered or not - - - if (isFunction(globalOptions.shouldSendCallback) && !globalOptions.shouldSendCallback(data)) { - return; - } // Backoff state: Sentry server previously responded w/ an error (e.g. 429 - too many requests), - // so drop requests until "cool-off" period has elapsed. - + if (_oldOnerrorHandler) { + return _oldOnerrorHandler.apply(this, arguments); + } - if (this._shouldBackoff()) { - this._logDebug('warn', 'Raven dropped error due to backoff: ', data); + return false; + } + function installGlobalHandler() { + if (_onErrorHandlerInstalled) { return; } + _oldOnerrorHandler = _window.onerror; + _window.onerror = traceKitWindowOnError; + _onErrorHandlerInstalled = true; + } - if (typeof globalOptions.sampleRate === 'number') { - if (Math.random() < globalOptions.sampleRate) { - this._sendProcessedPayload(data); - } - } else { - this._sendProcessedPayload(data); - } - }, - _getUuid: function _getUuid() { - return uuid4(); - }, - _sendProcessedPayload: function _sendProcessedPayload(data, callback) { - var self = this; - var globalOptions = this._globalOptions; - if (!this.isSetup()) return; // Try and clean up the packet before sending by truncating long values - - data = this._trimPacket(data); // ideally duplicate error testing should occur *before* dataCallback/shouldSendCallback, - // but this would require copying an un-truncated copy of the data packet, which can be - // arbitrarily deep (extra_data) -- could be worthwhile? will revisit - - if (!this._globalOptions.allowDuplicates && this._isRepeatData(data)) { - this._logDebug('warn', 'Raven dropped repeat event: ', data); - + function uninstallGlobalHandler() { + if (!_onErrorHandlerInstalled) { return; - } // Send along an event_id if not explicitly passed. - // This event_id can be used to reference the error within Sentry itself. - // Set lastEventId after we know the error should actually be sent - - - this._lastEventId = data.event_id || (data.event_id = this._getUuid()); // Store outbound payload after trim - - this._lastData = data; - - this._logDebug('debug', 'Raven about to send:', data); + } + _window.onerror = _oldOnerrorHandler; + _onErrorHandlerInstalled = false; + _oldOnerrorHandler = undefined; + } - var auth = { - sentry_version: '7', - sentry_client: 'raven-js/' + this.VERSION, - sentry_key: this._globalKey - }; + function processLastException() { + var _lastExceptionStack = lastExceptionStack, + _lastArgs = lastArgs; + lastArgs = null; + lastExceptionStack = null; + lastException = null; + notifyHandlers.apply(null, [_lastExceptionStack, false].concat(_lastArgs)); + } - if (this._globalSecret) { - auth.sentry_secret = this._globalSecret; + /** + * Reports an unhandled Error to TraceKit. + * @param {Error} ex + * @param {?boolean} rethrow If false, do not re-throw the exception. + * Only used for window.onerror to not cause an infinite loop of + * rethrowing. + */ + function report(ex, rethrow) { + var args = _slice.call(arguments, 1); + if (lastExceptionStack) { + if (lastException === ex) { + return; // already caught by an inner catch block, ignore + } else { + processLastException(); + } } - var exception = data.exception && data.exception.values[0]; // only capture 'sentry' breadcrumb is autoBreadcrumbs is truthy + var stack = TraceKit.computeStackTrace(ex); + lastExceptionStack = stack; + lastException = ex; + lastArgs = args; - if (this._globalOptions.autoBreadcrumbs && this._globalOptions.autoBreadcrumbs.sentry) { - this.captureBreadcrumb({ - category: 'sentry', - message: exception ? (exception.type ? exception.type + ': ' : '') + exception.value : data.message, - event_id: data.event_id, - level: data.level || 'error' // presume error unless specified + // If the stack trace is incomplete, wait for 2 seconds for + // slow slow IE to see if onerror occurs or not before reporting + // this exception; otherwise, we will end up with an incomplete + // stack trace + setTimeout(function() { + if (lastException === ex) { + processLastException(); + } + }, stack.incomplete ? 2000 : 0); - }); + if (rethrow !== false) { + throw ex; // re-throw to propagate to the top level (and cause window.onerror) } + } - var url = this._globalEndpoint; + report.subscribe = subscribe; + report.unsubscribe = unsubscribe; + report.uninstall = unsubscribeAll; + return report; +})(); - (globalOptions.transport || this._makeRequest).call(this, { - url: url, - auth: auth, - data: data, - options: globalOptions, - onSuccess: function success() { - self._resetBackoff(); +/** + * TraceKit.computeStackTrace: cross-browser stack traces in JavaScript + * + * Syntax: + * s = TraceKit.computeStackTrace(exception) // consider using TraceKit.report instead (see below) + * Returns: + * s.name - exception name + * s.message - exception message + * s.stack[i].url - JavaScript or HTML file URL + * s.stack[i].func - function name, or empty for anonymous functions (if guessing did not work) + * s.stack[i].args - arguments passed to the function, if known + * s.stack[i].line - line number, if known + * s.stack[i].column - column number, if known + * + * Supports: + * - Firefox: full stack trace with line numbers and unreliable column + * number on top frame + * - Opera 10: full stack trace with line and column numbers + * - Opera 9-: full stack trace with line numbers + * - Chrome: full stack trace with line and column numbers + * - Safari: line and column number for the topmost stacktrace element + * only + * - IE: no line numbers whatsoever + * + * Tries to guess names of anonymous functions by looking for assignments + * in the source code. In IE and Safari, we have to guess source file names + * by searching for function bodies inside all page scripts. This will not + * work for scripts that are loaded cross-domain. + * Here be dragons: some function names may be guessed incorrectly, and + * duplicate functions may be mismatched. + * + * TraceKit.computeStackTrace should only be used for tracing purposes. + * Logging of unhandled exceptions should be done with TraceKit.report, + * which builds on top of TraceKit.computeStackTrace and provides better + * IE support by utilizing the window.onerror event to retrieve information + * about the top of the stack. + * + * Note: In IE and Safari, no stack trace is recorded on the Error object, + * so computeStackTrace instead walks its *own* chain of callers. + * This means that: + * * in Safari, some methods may be missing from the stack trace; + * * in IE, the topmost function in the stack trace will always be the + * caller of computeStackTrace. + * + * This is okay for tracing (because you are likely to be calling + * computeStackTrace from the function you want to be the topmost element + * of the stack trace anyway), but not okay for logging unhandled + * exceptions (because your catch block will likely be far away from the + * inner function that actually caused the exception). + * + */ +TraceKit.computeStackTrace = (function computeStackTraceWrapper() { + // Contents of Exception in various browsers. + // + // SAFARI: + // ex.message = Can't find variable: qq + // ex.line = 59 + // ex.sourceId = 580238192 + // ex.sourceURL = http://... + // ex.expressionBeginOffset = 96 + // ex.expressionCaretOffset = 98 + // ex.expressionEndOffset = 98 + // ex.name = ReferenceError + // + // FIREFOX: + // ex.message = qq is not defined + // ex.fileName = http://... + // ex.lineNumber = 59 + // ex.columnNumber = 69 + // ex.stack = ...stack trace... (see the example below) + // ex.name = ReferenceError + // + // CHROME: + // ex.message = qq is not defined + // ex.name = ReferenceError + // ex.type = not_defined + // ex.arguments = ['aa'] + // ex.stack = ...stack trace... + // + // INTERNET EXPLORER: + // ex.message = ... + // ex.name = ReferenceError + // + // OPERA: + // ex.message = ...message... (see the example below) + // ex.name = ReferenceError + // ex.opera#sourceloc = 11 (pretty much useless, duplicates the info in ex.message) + // ex.stacktrace = n/a; see 'opera:config#UserPrefs|Exceptions Have Stacktrace' - self._triggerEvent('success', { - data: data, - src: url - }); + /** + * Computes stack trace information from the stack property. + * Chrome and Gecko use this property. + * @param {Error} ex + * @return {?Object.} Stack trace information. + */ + function computeStackTraceFromStackProp(ex) { + if (typeof ex.stack === 'undefined' || !ex.stack) return; - callback && callback(); - }, - onError: function failure(error) { - self._logDebug('error', 'Raven transport failed to send: ', error); + var chrome = /^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i; + var winjs = /^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i; + // NOTE: blob urls are now supposed to always have an origin, therefore it's format + // which is `blob:http://url/path/with-some-uuid`, is matched by `blob.*?:\/` as well + var gecko = /^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i; + // Used to additionally parse URL/line/column from eval frames + var geckoEval = /(\S+) line (\d+)(?: > eval line \d+)* > eval/i; + var chromeEval = /\((\S*)(?::(\d+))(?::(\d+))\)/; + var lines = ex.stack.split('\n'); + var stack = []; + var submatch; + var parts; + var element; + var reference = /^(.*) is undefined$/.exec(ex.message); - if (error.request) { - self._setBackoffState(error.request); + for (var i = 0, j = lines.length; i < j; ++i) { + if ((parts = chrome.exec(lines[i]))) { + var isNative = parts[2] && parts[2].indexOf('native') === 0; // start of line + var isEval = parts[2] && parts[2].indexOf('eval') === 0; // start of line + if (isEval && (submatch = chromeEval.exec(parts[2]))) { + // throw out eval line/column and use top-most line/column number + parts[2] = submatch[1]; // url + parts[3] = submatch[2]; // line + parts[4] = submatch[3]; // column } + element = { + url: !isNative ? parts[2] : null, + func: parts[1] || UNKNOWN_FUNCTION, + args: isNative ? [parts[2]] : [], + line: parts[3] ? +parts[3] : null, + column: parts[4] ? +parts[4] : null + }; + } else if ((parts = winjs.exec(lines[i]))) { + element = { + url: parts[2], + func: parts[1] || UNKNOWN_FUNCTION, + args: [], + line: +parts[3], + column: parts[4] ? +parts[4] : null + }; + } else if ((parts = gecko.exec(lines[i]))) { + var isEval = parts[3] && parts[3].indexOf(' > eval') > -1; + if (isEval && (submatch = geckoEval.exec(parts[3]))) { + // throw out eval line/column and use top-most line number + parts[3] = submatch[1]; + parts[4] = submatch[2]; + parts[5] = null; // no column when eval + } else if (i === 0 && !parts[5] && typeof ex.columnNumber !== 'undefined') { + // FireFox uses this awesome columnNumber property for its top frame + // Also note, Firefox's column number is 0-based and everything else expects 1-based, + // so adding 1 + // NOTE: this hack doesn't work if top-most frame is eval + stack[0].column = ex.columnNumber + 1; + } + element = { + url: parts[3], + func: parts[1] || UNKNOWN_FUNCTION, + args: parts[2] ? parts[2].split(',') : [], + line: parts[4] ? +parts[4] : null, + column: parts[5] ? +parts[5] : null + }; + } else { + continue; + } - self._triggerEvent('failure', { - data: data, - src: url - }); - - error = error || new Error('Raven send failed (no additional details provided)'); - callback && callback(error); + if (!element.func && element.line) { + element.func = UNKNOWN_FUNCTION; } - }); - }, - _makeRequest: function _makeRequest(opts) { - // Auth is intentionally sent as part of query string (NOT as custom HTTP header) to avoid preflight CORS requests - var url = opts.url + '?' + urlencode(opts.auth); - var evaluatedHeaders = null; - var evaluatedFetchParameters = {}; - if (opts.options.headers) { - evaluatedHeaders = this._evaluateHash(opts.options.headers); + stack.push(element); } - if (opts.options.fetchParameters) { - evaluatedFetchParameters = this._evaluateHash(opts.options.fetchParameters); + if (!stack.length) { + return null; } - if (supportsFetch()) { - evaluatedFetchParameters.body = stringify_1(opts.data); - var defaultFetchOptions = objectMerge({}, this._fetchDefaults); - var fetchOptions = objectMerge(defaultFetchOptions, evaluatedFetchParameters); + return { + name: ex.name, + message: ex.message, + url: getLocationHref(), + stack: stack + }; + } - if (evaluatedHeaders) { - fetchOptions.headers = evaluatedHeaders; - } + /** + * Adds information about the first frame to incomplete stack traces. + * Safari and IE require this to get complete data on the first frame. + * @param {Object.} stackInfo Stack trace information from + * one of the compute* methods. + * @param {string} url The URL of the script that caused an error. + * @param {(number|string)} lineNo The line number of the script that + * caused an error. + * @param {string=} message The error generated by the browser, which + * hopefully contains the name of the object that caused the error. + * @return {boolean} Whether or not the stack information was + * augmented. + */ + function augmentStackTraceWithInitialElement(stackInfo, url, lineNo, message) { + var initial = { + url: url, + line: lineNo + }; - return _window$1.fetch(url, fetchOptions).then(function (response) { - if (response.ok) { - opts.onSuccess && opts.onSuccess(); - } else { - var error = new Error('Sentry error code: ' + response.status); // It's called request only to keep compatibility with XHR interface - // and not add more redundant checks in setBackoffState method + if (initial.url && initial.line) { + stackInfo.incomplete = false; - error.request = response; - opts.onError && opts.onError(error); + if (!initial.func) { + initial.func = UNKNOWN_FUNCTION; + } + + if (stackInfo.stack.length > 0) { + if (stackInfo.stack[0].url === initial.url) { + if (stackInfo.stack[0].line === initial.line) { + return false; // already in stack trace + } else if ( + !stackInfo.stack[0].line && + stackInfo.stack[0].func === initial.func + ) { + stackInfo.stack[0].line = initial.line; + return false; + } } - })['catch'](function () { - opts.onError && opts.onError(new Error('Sentry error code: network unavailable')); - }); + } + + stackInfo.stack.unshift(initial); + stackInfo.partial = true; + return true; + } else { + stackInfo.incomplete = true; } - var request = _window$1.XMLHttpRequest && new _window$1.XMLHttpRequest(); - if (!request) return; // if browser doesn't support CORS (e.g. IE7), we are out of luck + return false; + } - var hasCORS = 'withCredentials' in request || typeof XDomainRequest !== 'undefined'; - if (!hasCORS) return; + /** + * Computes stack trace information by walking the arguments.caller + * chain at the time the exception occurred. This will cause earlier + * frames to be missed but is the only way to get any stack trace in + * Safari and IE. The top frame is restored by + * {@link augmentStackTraceWithInitialElement}. + * @param {Error} ex + * @return {?Object.} Stack trace information. + */ + function computeStackTraceByWalkingCallerChain(ex, depth) { + var functionName = /function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i, + stack = [], + funcs = {}, + recursion = false, + parts, + item, + source; + + for ( + var curr = computeStackTraceByWalkingCallerChain.caller; + curr && !recursion; + curr = curr.caller + ) { + if (curr === computeStackTrace || curr === TraceKit.report) { + // console.log('skipping internal function'); + continue; + } - if ('withCredentials' in request) { - request.onreadystatechange = function () { - if (request.readyState !== 4) { - return; - } else if (request.status === 200) { - opts.onSuccess && opts.onSuccess(); - } else if (opts.onError) { - var err = new Error('Sentry error code: ' + request.status); - err.request = request; - opts.onError(err); - } + item = { + url: null, + func: UNKNOWN_FUNCTION, + line: null, + column: null }; - } else { - request = new XDomainRequest(); // xdomainrequest cannot go http -> https (or vice versa), - // so always use protocol relative - url = url.replace(/^https?:/, ''); // onreadystatechange not supported by XDomainRequest + if (curr.name) { + item.func = curr.name; + } else if ((parts = functionName.exec(curr.toString()))) { + item.func = parts[1]; + } - if (opts.onSuccess) { - request.onload = opts.onSuccess; + if (typeof item.func === 'undefined') { + try { + item.func = parts.input.substring(0, parts.input.indexOf('{')); + } catch (e) {} } - if (opts.onError) { - request.onerror = function () { - var err = new Error('Sentry error code: XDomainRequest'); - err.request = request; - opts.onError(err); - }; + if (funcs['' + curr]) { + recursion = true; + } else { + funcs['' + curr] = true; } - } - request.open('POST', url); + stack.push(item); + } - if (evaluatedHeaders) { - each(evaluatedHeaders, function (key, value) { - request.setRequestHeader(key, value); - }); + if (depth) { + // console.log('depth is ' + depth); + // console.log('stack is ' + stack.length); + stack.splice(0, depth); } - request.send(stringify_1(opts.data)); - }, - _evaluateHash: function _evaluateHash(hash) { - var evaluated = {}; + var result = { + name: ex.name, + message: ex.message, + url: getLocationHref(), + stack: stack + }; + augmentStackTraceWithInitialElement( + result, + ex.sourceURL || ex.fileName, + ex.line || ex.lineNumber, + ex.message || ex.description + ); + return result; + } - for (var key in hash) { - if (hash.hasOwnProperty(key)) { - var value = hash[key]; - evaluated[key] = typeof value === 'function' ? value() : value; + /** + * Computes a stack trace for an exception. + * @param {Error} ex + * @param {(string|number)=} depth + */ + function computeStackTrace(ex, depth) { + var stack = null; + depth = depth == null ? 0 : +depth; + + try { + stack = computeStackTraceFromStackProp(ex); + if (stack) { + return stack; + } + } catch (e) { + if (TraceKit.debug) { + throw e; } } - return evaluated; - }, - _logDebug: function _logDebug(level) { - if (this._originalConsoleMethods[level] && this.debug) { - // In IE<10 console methods do not have their own 'apply' method - Function.prototype.apply.call(this._originalConsoleMethods[level], this._originalConsole, [].slice.call(arguments, 1)); - } - }, - _mergeContext: function _mergeContext(key, context) { - if (isUndefined(context)) { - delete this._globalContext[key]; - } else { - this._globalContext[key] = objectMerge(this._globalContext[key] || {}, context); + try { + stack = computeStackTraceByWalkingCallerChain(ex, depth + 1); + if (stack) { + return stack; + } + } catch (e) { + if (TraceKit.debug) { + throw e; + } } + return { + name: ex.name, + message: ex.message, + url: getLocationHref() + }; } -}; // Deprecations -Raven$1.prototype.setUser = Raven$1.prototype.setUserContext; -Raven$1.prototype.setReleaseContext = Raven$1.prototype.setRelease; -var raven = Raven$1; + computeStackTrace.augmentStackTraceWithInitialElement = augmentStackTraceWithInitialElement; + computeStackTrace.computeStackTraceFromStackProp = computeStackTraceFromStackProp; -/** - * Enforces a single instance of the Raven client, and the - * main entry point for Raven. If you are a consumer of the - * Raven library, you SHOULD load this file (vs raven.js). - **/ -// This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) + return computeStackTrace; +})(); -var _window = typeof window !== 'undefined' ? window : typeof commonjsGlobal !== 'undefined' ? commonjsGlobal : typeof self !== 'undefined' ? self : {}; +module.exports = TraceKit; -var _Raven = _window.Raven; -var Raven = new raven(); +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"8":8}],10:[function(_dereq_,module,exports){ /* - * Allow multiple versions of Raven to be installed. - * Strip Raven from the global context and returns the instance. - * - * @return {Raven} - */ - -Raven.noConflict = function () { - _window.Raven = _Raven; - return Raven; -}; - -Raven.afterLoad(); -var singleton = Raven; - -/** - * Angular.js plugin - * - * Provides an $exceptionHandler for Angular.js - */ + json-stringify-safe + Like JSON.stringify, but doesn't throw on circular references. -var wrappedCallback$1 = utils.wrappedCallback; // See https://github.com/angular/angular.js/blob/v1.4.7/src/minErr.js + Originally forked from https://github.com/isaacs/json-stringify-safe + version 5.0.1 on 3/8/2017 and modified to handle Errors serialization + and IE8 compatibility. Tests for this are in test/vendor. -var angularPattern = /^\[((?:[$a-zA-Z0-9]+:)?(?:[$a-zA-Z0-9]+))\] (.*?)\n?(\S+)$/; -var moduleName = 'ngRaven'; + ISC license: https://github.com/isaacs/json-stringify-safe/blob/master/LICENSE +*/ -function angularPlugin(Raven, angular) { - angular = angular || window.angular; - if (!angular) return; +exports = module.exports = stringify; +exports.getSerialize = serializer; - function RavenProvider() { - this.$get = ['$window', function ($window) { - return Raven; - }]; +function indexOf(haystack, needle) { + for (var i = 0; i < haystack.length; ++i) { + if (haystack[i] === needle) return i; } + return -1; +} - function ExceptionHandlerProvider($provide) { - $provide.decorator('$exceptionHandler', ['Raven', '$delegate', exceptionHandler]); - } +function stringify(obj, replacer, spaces, cycleReplacer) { + return JSON.stringify(obj, serializer(replacer, cycleReplacer), spaces); +} - function exceptionHandler(R, $delegate) { - return function (ex, cause) { - R.captureException(ex, { - extra: { - cause: cause - } - }); - $delegate(ex, cause); - }; +// https://github.com/ftlabs/js-abbreviate/blob/fa709e5f139e7770a71827b1893f22418097fbda/index.js#L95-L106 +function stringifyError(value) { + var err = { + // These properties are implemented as magical getters and don't show up in for in + stack: value.stack, + message: value.message, + name: value.name + }; + + for (var i in value) { + if (Object.prototype.hasOwnProperty.call(value, i)) { + err[i] = value[i]; + } } - angular.module(moduleName, []).provider('Raven', RavenProvider).config(['$provide', ExceptionHandlerProvider]); - Raven.setDataCallback(wrappedCallback$1(function (data) { - return angularPlugin._normalizeData(data); - })); + return err; } -angularPlugin._normalizeData = function (data) { - // We only care about mutating an exception - var exception = data.exception; - - if (exception) { - exception = exception.values[0]; - var matches = angularPattern.exec(exception.value); - - if (matches) { - // This type now becomes something like: $rootScope:inprog - exception.type = matches[1]; - exception.value = matches[2]; - data.message = exception.type + ': ' + exception.value; // auto set a new tag specifically for the angular error url +function serializer(replacer, cycleReplacer) { + var stack = []; + var keys = []; - data.extra.angularDocs = matches[3].substr(0, 250); - } + if (cycleReplacer == null) { + cycleReplacer = function(key, value) { + if (stack[0] === value) { + return '[Circular ~]'; + } + return '[Circular ~.' + keys.slice(0, indexOf(stack, value)).join('.') + ']'; + }; } - return data; -}; + return function(key, value) { + if (stack.length > 0) { + var thisPos = indexOf(stack, this); + ~thisPos ? stack.splice(thisPos + 1) : stack.push(this); + ~thisPos ? keys.splice(thisPos, Infinity, key) : keys.push(key); -angularPlugin.moduleName = moduleName; -var angular = angularPlugin; + if (~indexOf(stack, value)) { + value = cycleReplacer.call(this, key, value); + } + } else { + stack.push(value); + } -/*global define*/ + return replacer == null + ? value instanceof Error ? stringifyError(value) : value + : replacer.call(this, key, value); + }; +} -/** - * require.js plugin +},{}],11:[function(_dereq_,module,exports){ +/* + * JavaScript MD5 + * https://github.com/blueimp/JavaScript-MD5 * - * Automatically wrap define/require callbacks. (Experimental) + * Copyright 2011, Sebastian Tschan + * https://blueimp.net + * + * Licensed under the MIT license: + * https://opensource.org/licenses/MIT + * + * Based on + * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message + * Digest Algorithm, as defined in RFC 1321. + * Version 2.2 Copyright (C) Paul Johnston 1999 - 2009 + * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet + * Distributed under the BSD License + * See http://pajhome.org.uk/crypt/md5 for more info. */ -function requirePlugin(Raven) { - if (typeof undefined === 'function' && undefined.amd) { - window.define = Raven.wrap({ - deep: false - }, undefined); - window.require = Raven.wrap({ - deep: false - }, commonjsRequire); - } +/* +* Add integers, wrapping at 2^32. This uses 16-bit operations internally +* to work around bugs in some JS interpreters. +*/ +function safeAdd(x, y) { + var lsw = (x & 0xffff) + (y & 0xffff); + var msw = (x >> 16) + (y >> 16) + (lsw >> 16); + return (msw << 16) | (lsw & 0xffff); } -var require_1 = requirePlugin; +/* +* Bitwise rotate a 32-bit number to the left. +*/ +function bitRotateLeft(num, cnt) { + return (num << cnt) | (num >>> (32 - cnt)); +} -/** - * Vue.js 2.0 plugin - * - */ -function formatComponentName(vm) { - if (vm.$root === vm) { - return 'root instance'; +/* +* These functions implement the four basic operations the algorithm uses. +*/ +function md5cmn(q, a, b, x, s, t) { + return safeAdd(bitRotateLeft(safeAdd(safeAdd(a, q), safeAdd(x, t)), s), b); +} +function md5ff(a, b, c, d, x, s, t) { + return md5cmn((b & c) | (~b & d), a, b, x, s, t); +} +function md5gg(a, b, c, d, x, s, t) { + return md5cmn((b & d) | (c & ~d), a, b, x, s, t); +} +function md5hh(a, b, c, d, x, s, t) { + return md5cmn(b ^ c ^ d, a, b, x, s, t); +} +function md5ii(a, b, c, d, x, s, t) { + return md5cmn(c ^ (b | ~d), a, b, x, s, t); +} + +/* +* Calculate the MD5 of an array of little-endian words, and a bit length. +*/ +function binlMD5(x, len) { + /* append padding */ + x[len >> 5] |= 0x80 << (len % 32); + x[(((len + 64) >>> 9) << 4) + 14] = len; + + var i; + var olda; + var oldb; + var oldc; + var oldd; + var a = 1732584193; + var b = -271733879; + var c = -1732584194; + var d = 271733878; + + for (i = 0; i < x.length; i += 16) { + olda = a; + oldb = b; + oldc = c; + oldd = d; + + a = md5ff(a, b, c, d, x[i], 7, -680876936); + d = md5ff(d, a, b, c, x[i + 1], 12, -389564586); + c = md5ff(c, d, a, b, x[i + 2], 17, 606105819); + b = md5ff(b, c, d, a, x[i + 3], 22, -1044525330); + a = md5ff(a, b, c, d, x[i + 4], 7, -176418897); + d = md5ff(d, a, b, c, x[i + 5], 12, 1200080426); + c = md5ff(c, d, a, b, x[i + 6], 17, -1473231341); + b = md5ff(b, c, d, a, x[i + 7], 22, -45705983); + a = md5ff(a, b, c, d, x[i + 8], 7, 1770035416); + d = md5ff(d, a, b, c, x[i + 9], 12, -1958414417); + c = md5ff(c, d, a, b, x[i + 10], 17, -42063); + b = md5ff(b, c, d, a, x[i + 11], 22, -1990404162); + a = md5ff(a, b, c, d, x[i + 12], 7, 1804603682); + d = md5ff(d, a, b, c, x[i + 13], 12, -40341101); + c = md5ff(c, d, a, b, x[i + 14], 17, -1502002290); + b = md5ff(b, c, d, a, x[i + 15], 22, 1236535329); + + a = md5gg(a, b, c, d, x[i + 1], 5, -165796510); + d = md5gg(d, a, b, c, x[i + 6], 9, -1069501632); + c = md5gg(c, d, a, b, x[i + 11], 14, 643717713); + b = md5gg(b, c, d, a, x[i], 20, -373897302); + a = md5gg(a, b, c, d, x[i + 5], 5, -701558691); + d = md5gg(d, a, b, c, x[i + 10], 9, 38016083); + c = md5gg(c, d, a, b, x[i + 15], 14, -660478335); + b = md5gg(b, c, d, a, x[i + 4], 20, -405537848); + a = md5gg(a, b, c, d, x[i + 9], 5, 568446438); + d = md5gg(d, a, b, c, x[i + 14], 9, -1019803690); + c = md5gg(c, d, a, b, x[i + 3], 14, -187363961); + b = md5gg(b, c, d, a, x[i + 8], 20, 1163531501); + a = md5gg(a, b, c, d, x[i + 13], 5, -1444681467); + d = md5gg(d, a, b, c, x[i + 2], 9, -51403784); + c = md5gg(c, d, a, b, x[i + 7], 14, 1735328473); + b = md5gg(b, c, d, a, x[i + 12], 20, -1926607734); + + a = md5hh(a, b, c, d, x[i + 5], 4, -378558); + d = md5hh(d, a, b, c, x[i + 8], 11, -2022574463); + c = md5hh(c, d, a, b, x[i + 11], 16, 1839030562); + b = md5hh(b, c, d, a, x[i + 14], 23, -35309556); + a = md5hh(a, b, c, d, x[i + 1], 4, -1530992060); + d = md5hh(d, a, b, c, x[i + 4], 11, 1272893353); + c = md5hh(c, d, a, b, x[i + 7], 16, -155497632); + b = md5hh(b, c, d, a, x[i + 10], 23, -1094730640); + a = md5hh(a, b, c, d, x[i + 13], 4, 681279174); + d = md5hh(d, a, b, c, x[i], 11, -358537222); + c = md5hh(c, d, a, b, x[i + 3], 16, -722521979); + b = md5hh(b, c, d, a, x[i + 6], 23, 76029189); + a = md5hh(a, b, c, d, x[i + 9], 4, -640364487); + d = md5hh(d, a, b, c, x[i + 12], 11, -421815835); + c = md5hh(c, d, a, b, x[i + 15], 16, 530742520); + b = md5hh(b, c, d, a, x[i + 2], 23, -995338651); + + a = md5ii(a, b, c, d, x[i], 6, -198630844); + d = md5ii(d, a, b, c, x[i + 7], 10, 1126891415); + c = md5ii(c, d, a, b, x[i + 14], 15, -1416354905); + b = md5ii(b, c, d, a, x[i + 5], 21, -57434055); + a = md5ii(a, b, c, d, x[i + 12], 6, 1700485571); + d = md5ii(d, a, b, c, x[i + 3], 10, -1894986606); + c = md5ii(c, d, a, b, x[i + 10], 15, -1051523); + b = md5ii(b, c, d, a, x[i + 1], 21, -2054922799); + a = md5ii(a, b, c, d, x[i + 8], 6, 1873313359); + d = md5ii(d, a, b, c, x[i + 15], 10, -30611744); + c = md5ii(c, d, a, b, x[i + 6], 15, -1560198380); + b = md5ii(b, c, d, a, x[i + 13], 21, 1309151649); + a = md5ii(a, b, c, d, x[i + 4], 6, -145523070); + d = md5ii(d, a, b, c, x[i + 11], 10, -1120210379); + c = md5ii(c, d, a, b, x[i + 2], 15, 718787259); + b = md5ii(b, c, d, a, x[i + 9], 21, -343485551); + + a = safeAdd(a, olda); + b = safeAdd(b, oldb); + c = safeAdd(c, oldc); + d = safeAdd(d, oldd); } + return [a, b, c, d]; +} - var name = vm._isVue ? vm.$options.name || vm.$options._componentTag : vm.name; - return (name ? 'component <' + name + '>' : 'anonymous component') + (vm._isVue && vm.$options.__file ? ' at ' + vm.$options.__file : ''); +/* +* Convert an array of little-endian words to a string +*/ +function binl2rstr(input) { + var i; + var output = ''; + var length32 = input.length * 32; + for (i = 0; i < length32; i += 8) { + output += String.fromCharCode((input[i >> 5] >>> (i % 32)) & 0xff); + } + return output; } -function vuePlugin(Raven, Vue) { - Vue = Vue || window.Vue; // quit if Vue isn't on the page +/* +* Convert a raw string to an array of little-endian words +* Characters >255 have their high-byte silently ignored. +*/ +function rstr2binl(input) { + var i; + var output = []; + output[(input.length >> 2) - 1] = undefined; + for (i = 0; i < output.length; i += 1) { + output[i] = 0; + } + var length8 = input.length * 8; + for (i = 0; i < length8; i += 8) { + output[i >> 5] |= (input.charCodeAt(i / 8) & 0xff) << (i % 32); + } + return output; +} - if (!Vue || !Vue.config) return; - var _oldOnError = Vue.config.errorHandler; +/* +* Calculate the MD5 of a raw string +*/ +function rstrMD5(s) { + return binl2rstr(binlMD5(rstr2binl(s), s.length * 8)); +} - Vue.config.errorHandler = function VueErrorHandler(error, vm, info) { - var metaData = {}; // vm and lifecycleHook are not always available +/* +* Calculate the HMAC-MD5, of a key and some data (raw strings) +*/ +function rstrHMACMD5(key, data) { + var i; + var bkey = rstr2binl(key); + var ipad = []; + var opad = []; + var hash; + ipad[15] = opad[15] = undefined; + if (bkey.length > 16) { + bkey = binlMD5(bkey, key.length * 8); + } + for (i = 0; i < 16; i += 1) { + ipad[i] = bkey[i] ^ 0x36363636; + opad[i] = bkey[i] ^ 0x5c5c5c5c; + } + hash = binlMD5(ipad.concat(rstr2binl(data)), 512 + data.length * 8); + return binl2rstr(binlMD5(opad.concat(hash), 512 + 128)); +} - if (Object.prototype.toString.call(vm) === '[object Object]') { - metaData.componentName = formatComponentName(vm); - metaData.propsData = vm.$options.propsData; - } +/* +* Convert a raw string to a hex string +*/ +function rstr2hex(input) { + var hexTab = '0123456789abcdef'; + var output = ''; + var x; + var i; + for (i = 0; i < input.length; i += 1) { + x = input.charCodeAt(i); + output += hexTab.charAt((x >>> 4) & 0x0f) + hexTab.charAt(x & 0x0f); + } + return output; +} - if (typeof info !== 'undefined') { - metaData.lifecycleHook = info; - } +/* +* Encode a string as utf-8 +*/ +function str2rstrUTF8(input) { + return unescape(encodeURIComponent(input)); +} - Raven.captureException(error, { - extra: metaData - }); +/* +* Take string arguments and return either raw or hex encoded strings +*/ +function rawMD5(s) { + return rstrMD5(str2rstrUTF8(s)); +} +function hexMD5(s) { + return rstr2hex(rawMD5(s)); +} +function rawHMACMD5(k, d) { + return rstrHMACMD5(str2rstrUTF8(k), str2rstrUTF8(d)); +} +function hexHMACMD5(k, d) { + return rstr2hex(rawHMACMD5(k, d)); +} - if (typeof _oldOnError === 'function') { - _oldOnError.call(this, error, vm, info); +function md5(string, key, raw) { + if (!key) { + if (!raw) { + return hexMD5(string); } - }; + return rawMD5(string); + } + if (!raw) { + return hexHMACMD5(key, string); + } + return rawHMACMD5(key, string); } -var vue = vuePlugin; - -/* This file was generated by './scripts/generate-plugin-combinations.js'! */ - -singleton.addPlugin(angular).addPlugin(require_1).addPlugin(vue); -var angular_require_vue = {}; - -return angular_require_vue; +module.exports = md5; -}))); +},{}]},{},[7,1,2,3])(7) +}); \ No newline at end of file diff --git a/dist/angular,require,vue/raven.min.js b/dist/angular,require,vue/raven.min.js index 79d264aaea5f..5f26fd404523 100644 --- a/dist/angular,require,vue/raven.min.js +++ b/dist/angular,require,vue/raven.min.js @@ -1,3 +1,4 @@ -/*! Raven.js 3.22.2 (1b6187b) | github.com/getsentry/raven-js */ -!function(a,b){"object"==typeof exports&&"undefined"!=typeof module?module.exports=b():"function"==typeof define&&define.amd?define(b):a.Raven=b()}(this,function(){"use strict";function a(a,b){return b={exports:{}},a(b,b.exports),b.exports}function b(a){return(b="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(a){return typeof a}:function(a){return a&&"function"==typeof Symbol&&a.constructor===Symbol&&a!==Symbol.prototype?"symbol":typeof a})(a)}function c(a){return"object"===b(a)&&null!==a}function d(a){switch({}.toString.call(a)){case"[object Error]":return!0;case"[object Exception]":return!0;case"[object DOMException]":return!0;default:return a instanceof Error}}function e(a){return l()&&"[object ErrorEvent]"==={}.toString.call(a)}function f(a){return void 0===a}function g(a){return"function"==typeof a}function h(a){return"[object Object]"===Object.prototype.toString.call(a)}function i(a){return"[object String]"===Object.prototype.toString.call(a)}function j(a){return"[object Array]"===Object.prototype.toString.call(a)}function k(a){if(!h(a))return!1;for(var b in a)if(a.hasOwnProperty(b))return!1;return!0}function l(){try{return new ErrorEvent(""),!0}catch(a){return!1}}function m(){if(!("fetch"in Q))return!1;try{return new Headers,new Request(""),new Response,!0}catch(a){return!1}}function n(a){function b(b,c){var d=a(b)||b;return c?c(d)||d:d}return b}function o(a,b){var c,d;if(f(a.length))for(c in a)s(a,c)&&b.call(null,c,a[c]);else if(d=a.length)for(c=0;c ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function y(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&i(b))for(c=b.split(/\s+/),f=0;f":"anonymous component")+(a._isVue&&a.$options.__file?" at "+a.$options.__file:"")}function N(a,b){if(b=b||window.Vue,b&&b.config){var c=b.config.errorHandler;b.config.errorHandler=function(b,d,e){var f={};"[object Object]"===Object.prototype.toString.call(d)&&(f.componentName=M(d),f.propsData=d.$options.propsData),"undefined"!=typeof e&&(f.lifecycleHook=e),a.captureException(b,{extra:f}),"function"==typeof c&&c.call(this,b,d,e)}}}var O="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{},P=Object.setPrototypeOf||function(a,b){return a.C=b,a},Q=("object"==typeof Reflect&&Reflect.construct||function(a,b,c){var d,e=[null];return e.push.apply(e,b),d=a.bind.apply(a,e),P(new d,c.prototype)},"undefined"!=typeof window?window:"undefined"!=typeof O?O:"undefined"!=typeof self?self:{}),R={isObject:c,isError:d,isErrorEvent:e,isUndefined:f,isFunction:g,isPlainObject:h,isString:i,isArray:j,isEmptyObject:k,supportsErrorEvent:l,supportsFetch:m,wrappedCallback:n,each:o,objectMerge:p,truncate:r,objectFrozen:q,hasKey:s,joinRegExp:t,urlencode:u,uuid4:w,htmlTreeAsString:x,htmlElementAsString:y,isSameException:B,isSameStacktrace:C,parseUrl:v,fill:D,safeJoin:E},S={collectWindowErrors:!0,debug:!1},T="undefined"!=typeof window?window:"undefined"!=typeof O?O:"undefined"!=typeof self?self:{},U=[].slice,V="?",W=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;S.report=function(){function a(a){f(),l.push(a)}function b(a){for(var b=l.length-1;b>=0;--b)l[b]===a&&l.splice(b,1)}function c(){g(),l=[]}function d(a,b){var c=null;if(!b||S.collectWindowErrors){for(var d in l)if(l.hasOwnProperty(d))try{l[d].apply(null,[a].concat(U.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function e(a,b,c,e,f){var g=null,i=R.isErrorEvent(f)?f.error:f,k=R.isErrorEvent(a)?a.message:a;if(o)S.computeStackTrace.augmentStackTraceWithInitialElement(o,b,c,k),h();else if(i&&R.isError(i))g=S.computeStackTrace(i),d(g,!0);else{var l,m={url:b,line:c,column:e},n=void 0;if("[object String]"==={}.toString.call(k)){var l=k.match(W);l&&(n=l[1],k=l[2])}m.func=V,g={name:n,message:k,url:F(),stack:[m]},d(g,!0)}return!!j&&j.apply(this,arguments)}function f(){k||(j=T.onerror,T.onerror=e,k=!0)}function g(){k&&(T.onerror=j,k=!1,j=void 0)}function h(){var a=o,b=m;m=null,o=null,n=null,d.apply(null,[a,!1].concat(b))}function i(a,b){var c=U.call(arguments,1);if(o){if(n===a)return;h()}var d=S.computeStackTrace(a);if(o=d,n=a,m=c,setTimeout(function(){n===a&&h()},d.incomplete?2e3:0),b!==!1)throw a}var j,k,l=[],m=null,n=null,o=null;return i.subscribe=a,i.unsubscribe=b,i.uninstall=c,i}(),S.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,d,e=/^\s*at (.*?) ?\(((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,f=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|\[native).*?|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,g=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,h=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,i=/\((\S*)(?::(\d+))(?::(\d+))\)/,j=a.stack.split("\n"),k=[],l=(/^(.*) is undefined$/.exec(a.message),0),m=j.length;l eval")>-1;o&&(b=h.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==l||c[5]||"undefined"==typeof a.columnNumber||(k[0].column=a.columnNumber+1),d={url:c[3],func:c[1]||V,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}!d.func&&d.line&&(d.func=V),k.push(d)}return k.length?{name:a.name,message:a.message,url:F(),stack:k}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=V),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,e){for(var f,g,h=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,i=[],j={},k=!1,l=c.caller;l&&!k;l=l.caller)if(l!==d&&l!==S.report){if(g={url:null,func:V,line:null,column:null},l.name?g.func=l.name:(f=h.exec(l.toString()))&&(g.func=f[1]),"undefined"==typeof g.func)try{g.func=f.input.substring(0,f.input.indexOf("{"))}catch(m){}j[""+l]?k=!0:j[""+l]=!0,i.push(g)}e&&i.splice(0,e);var n={name:a.name,message:a.message,url:F(),stack:i};return b(n,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),n}function d(b,d){var e=null;d=null==d?0:+d;try{if(e=a(b))return e}catch(f){if(S.debug)throw f}try{if(e=c(b,d+1))return e}catch(f){if(S.debug)throw f}return{name:b.name,message:b.message,url:F()}}return d.augmentStackTraceWithInitialElement=b,d.computeStackTraceFromStackProp=a,d}();var X=S,Y=a(function(a,b){function c(a,b){for(var c=0;c0){var i=c(d,this);~i?d.splice(i+1):d.push(this),~i?f.splice(i,1/0,g):f.push(g),~c(d,h)&&(h=b.call(this,g,h))}else d.push(h);return null==a?h instanceof Error?e(h):h:a.call(this,g,h)}}b=a.exports=d,b.getSerialize=f});G.prototype=new Error,G.prototype.constructor=G;var Z=G,$=function(a,b,c){var d=a[b],e=a;if(b in a){var f="warn"===b?"warning":b;a[b]=function(){var a=[].slice.call(arguments),g=R.safeJoin(a," "),h={level:f,logger:"console",extra:{arguments:a}};"assert"===b?a[0]===!1&&(g="Assertion failed: "+(R.safeJoin(a.slice(1)," ")||"console.assert"),h.extra.arguments=a.slice(1),c&&c(g,h)):c&&c(g,h),d&&Function.prototype.apply.call(d,e,a)}}},_={wrapMethod:$},aa=R.isError,ba=R.isObject,ca=R.isErrorEvent,da=R.isUndefined,ea=R.isFunction,fa=R.isString,ga=R.isArray,ha=R.isEmptyObject,ia=R.each,ja=R.objectMerge,ka=R.truncate,la=R.objectFrozen,ma=R.hasKey,na=R.joinRegExp,oa=R.urlencode,pa=R.uuid4,qa=R.htmlTreeAsString,ra=R.isSameException,sa=R.isSameStacktrace,ta=R.parseUrl,ua=R.fill,va=R.supportsFetch,wa=_.wrapMethod,xa="source protocol user pass host port path".split(" "),ya=/^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/,za="undefined"!=typeof window?window:"undefined"!=typeof O?O:"undefined"!=typeof self?self:{},Aa=za.document,Ba=za.navigator;J.prototype={VERSION:"3.22.2",debug:!1,TraceKit:X,config:function(a,b){var c=this;if(c.i)return this.D("error","Error: Raven has already been configured"),c;if(!a)return c;var d=c.m;b&&ia(b,function(a,b){"tags"===a||"extra"===a||"user"===a?c.l[a]=b:d[a]=b}),c.setDSN(a),d.ignoreErrors.push(/^Script error\.?$/),d.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/),d.ignoreErrors=na(d.ignoreErrors),d.ignoreUrls=!!d.ignoreUrls.length&&na(d.ignoreUrls),d.whitelistUrls=!!d.whitelistUrls.length&&na(d.whitelistUrls),d.includePaths=na(d.includePaths),d.maxBreadcrumbs=Math.max(0,Math.min(d.maxBreadcrumbs||100,100));var e={xhr:!0,console:!0,dom:!0,location:!0,sentry:!0},f=d.autoBreadcrumbs;"[object Object]"==={}.toString.call(f)?f=ja(e,f):f!==!1&&(f=e),d.autoBreadcrumbs=f;var g={tryCatch:!0},h=d.instrument;return"[object Object]"==={}.toString.call(h)?h=ja(g,h):h!==!1&&(h=g),d.instrument=h,X.collectWindowErrors=!!d.collectWindowErrors,c},install:function(){var a=this;return a.isSetup()&&!a.p&&(X.report.subscribe(function(){a.E.apply(a,arguments)}),a.F(),a.m.instrument&&a.m.instrument.tryCatch&&a.G(),a.m.autoBreadcrumbs&&a.H(),a.I(),a.p=!0),Error.stackTraceLimit=a.m.stackTraceLimit,this},setDSN:function(a){var b=this,c=b.J(a),d=c.path.lastIndexOf("/"),e=c.path.substr(1,d);b.K=a,b.j=c.user,b.L=c.pass&&c.pass.substr(1),b.k=c.path.substr(d+1),b.i=b.M(c),b.N=b.i+"/"+e+"api/"+b.k+"/store/",this.A()},context:function(a,b,c){return ea(a)&&(c=b||[],b=a,a=void 0),this.wrap(a,b).apply(this,c)},wrap:function(a,b,c){function d(){var d=[],f=arguments.length,g=!a||a&&a.deep!==!1;for(c&&ea(c)&&c.apply(this,arguments);f--;)d[f]=g?e.wrap(a,arguments[f]):arguments[f];try{return b.apply(this,d)}catch(h){throw e.O(),e.captureException(h,a),h}}var e=this;if(da(b)&&!ea(a))return a;if(ea(a)&&(b=a,a=void 0),!ea(b))return b;try{if(b.a)return b;if(b.P)return b.P}catch(f){return b}for(var g in b)ma(b,g)&&(d[g]=b[g]);return d.prototype=b.prototype,b.P=d,d.a=!0,d.b=b,d},uninstall:function(){return X.report.uninstall(),this.Q(),this.R(),this.S(),Error.stackTraceLimit=this.q,this.p=!1,this},captureException:function(a,b){b=ja({trimHeadFrames:0},b?b:{});var c=!aa(a),d=!ca(a),e=ca(a)&&!a.error;if(c&&d||e)return this.captureMessage(a,ja(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}));ca(a)&&(a=a.error),this.f=a;try{var f=X.computeStackTrace(a);this.T(f,b)}catch(g){if(a!==g)throw g}return this},captureMessage:function(a,b){if(!this.m.ignoreErrors.test||!this.m.ignoreErrors.test(a)){b=b||{};var c,d=ja({message:a+""},b);try{throw new Error(a)}catch(e){c=e}c.name=null;var f=X.computeStackTrace(c),g=ga(f.stack)&&f.stack[1],h=g&&g.url||"";if((!this.m.ignoreUrls.test||!this.m.ignoreUrls.test(h))&&(!this.m.whitelistUrls.test||this.m.whitelistUrls.test(h))){if(this.m.stacktrace||b&&b.stacktrace){b=ja({fingerprint:a,trimHeadFrames:(b.trimHeadFrames||0)+1},b);var i=this.U(f,b);d.stacktrace={frames:i.reverse()}}return this.V(d),this}}},captureBreadcrumb:function(a){var b=ja({timestamp:H()/1e3},a);if(ea(this.m.breadcrumbCallback)){var c=this.m.breadcrumbCallback(b);if(ba(c)&&!ha(c))b=c;else if(c===!1)return this}return this.w.push(b),this.w.length>this.m.maxBreadcrumbs&&this.w.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.t.push([a,b]),this.p&&this.I(),this},setUserContext:function(a){return this.l.user=a,this},setExtraContext:function(a){return this.W("extra",a),this},setTagsContext:function(a){return this.W("tags",a),this},clearContext:function(){return this.l={},this},getContext:function(){return JSON.parse(Y(this.l))},setEnvironment:function(a){return this.m.environment=a,this},setRelease:function(a){return this.m.release=a,this},setDataCallback:function(a){var b=this.m.dataCallback;return this.m.dataCallback=I(b,a),this},setBreadcrumbCallback:function(a){var b=this.m.breadcrumbCallback;return this.m.breadcrumbCallback=I(b,a),this},setShouldSendCallback:function(a){var b=this.m.shouldSendCallback;return this.m.shouldSendCallback=I(b,a),this},setTransport:function(a){return this.m.transport=a,this},lastException:function(){return this.f},lastEventId:function(){return this.h},isSetup:function(){return!!this.c&&(!!this.i||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.D("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=za.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(Aa){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new Z("Missing eventId");var c=a.dsn||this.K;if(!c)throw new Z("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.l.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.M(this.J(c)),h=Aa.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(Aa.head||Aa.body).appendChild(h)}},O:function(){var a=this;this.o+=1,setTimeout(function(){a.o-=1})},X:function(a,b){var c,d;if(this.d){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),Aa.createEvent?(c=Aa.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=Aa.createEventObject(),c.eventType=a);for(d in b)ma(b,d)&&(c[d]=b[d]);if(Aa.createEvent)Aa.dispatchEvent(c);else try{Aa.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},Y:function(a){var b=this;return function(c){if(b.Z=null,b.x!==c){b.x=c;var d;try{d=qa(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},$:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.Z;g||a.Y("input")(c),clearTimeout(g),a.Z=setTimeout(function(){a.Z=null},b)}}},_:function(a,b){var c=ta(this.y.href),d=ta(b),e=ta(a);this.z=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},F:function(){var a=this;a.aa=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.a?a.aa.apply(this.b,arguments):a.aa.apply(this,arguments)}},Q:function(){this.aa&&(Function.prototype.toString=this.aa)},G:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b._(b.z,c+""),a.apply(this,arguments)}};ua(history,"pushState",j,d),ua(history,"replaceState",j,d)}if(c.console&&"console"in za&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};ia(["debug","info","warn","error","log"],function(a,b){wa(console,b,k)})}},R:function(){for(var a;this.v.length;){a=this.v.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},S:function(){for(var a in this.s)this.r[a]=this.s[a]},I:function(){var a=this;ia(this.t,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},J:function(a){var b=ya.exec(a),c={},d=7;try{for(;d--;)c[xa[d]]=b[d]||""}catch(e){throw new Z("Invalid DSN: "+a)}if(c.pass&&!this.m.allowSecretKey)throw new Z("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},M:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},E:function(){this.o||this.T.apply(this,arguments)},T:function(a,b){var c=this.U(a,b);this.X("handle",{stackInfo:a,options:b}),this.ca(a.name,a.message,a.url,a.lineno,c,b)},U:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(ia(a.stack,function(b,e){var f=c.da(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.w,0)}),this.l.user&&(a.user=this.l.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||ha(a[b]))&&delete a[b]}),ea(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!ha(a)&&(!ea(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.ja()?void this.D("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random()":"anonymous component")+(a._isVue&&a.$options.__file?" at "+a.$options.__file:"")}function e(a,b){if(b=b||window.Vue,b&&b.config){var c=b.config.errorHandler;b.config.errorHandler=function(b,e,f){var g={};"[object Object]"===Object.prototype.toString.call(e)&&(g.componentName=d(e),g.propsData=e.$options.propsData),"undefined"!=typeof f&&(g.lifecycleHook=f),a.captureException(b,{extra:g}),"function"==typeof c&&c.call(this,b,e,f)}}}b.exports=e,a(7).addPlugin(b.exports)},{7:7}],4:[function(a,b,c){function d(a){this.name="RavenConfigError",this.message=a}d.prototype=new Error,d.prototype.constructor=d,b.exports=d},{}],5:[function(a,b,c){var d=a(8),e=function(a,b,c){var e=a[b],f=a;if(b in a){var g="warn"===b?"warning":b;a[b]=function(){var a=[].slice.call(arguments),h=d.safeJoin(a," "),i={level:g,logger:"console",extra:{arguments:a}};"assert"===b?a[0]===!1&&(h="Assertion failed: "+(d.safeJoin(a.slice(1)," ")||"console.assert"),i.extra.arguments=a.slice(1),c&&c(h,i)):c&&c(h,i),e&&Function.prototype.apply.call(e,f,a)}}};b.exports={wrapMethod:e}},{8:8}],6:[function(a,b,c){(function(c){function d(){return+new Date}function e(a,b){return q(b)?function(c){return b(c,a)}:b}function f(){this.b=!("object"!=typeof JSON||!JSON.stringify),this.c=!p(Q),this.d=!p(R),this.e=null,this.f=null,this.g=null,this.h=null,this.i=null,this.j=null,this.k={},this.l={release:P.SENTRY_RELEASE&&P.SENTRY_RELEASE.id,logger:"javascript",ignoreErrors:[],ignoreUrls:[],whitelistUrls:[],includePaths:[],headers:null,collectWindowErrors:!0,captureUnhandledRejections:!0,maxMessageLength:0,maxUrlLength:250,stackTraceLimit:50,autoBreadcrumbs:!0,instrument:!0,sampleRate:1,sanitizeKeys:[]},this.m={method:"POST",keepalive:!0,referrerPolicy:I()?"origin":""},this.n=0,this.o=!1,this.p=Error.stackTraceLimit,this.q=P.console||{},this.r={},this.s=[],this.t=d(),this.u=[],this.v=[],this.w=null,this.x=P.location,this.y=this.x&&this.x.href,this.z();for(var a in this.q)this.r[a]=this.q[a]}var g=a(9),h=a(10),i=a(11),j=a(4),k=a(8),l=k.isError,m=k.isObject,n=k.isPlainObject,o=k.isErrorEvent,p=k.isUndefined,q=k.isFunction,r=k.isString,s=k.isArray,t=k.isEmptyObject,u=k.each,v=k.objectMerge,w=k.truncate,x=k.objectFrozen,y=k.hasKey,z=k.joinRegExp,A=k.urlencode,B=k.uuid4,C=k.htmlTreeAsString,D=k.isSameException,E=k.isSameStacktrace,F=k.parseUrl,G=k.fill,H=k.supportsFetch,I=k.supportsReferrerPolicy,J=k.serializeKeysForMessage,K=k.serializeException,L=k.sanitize,M=a(5).wrapMethod,N="source protocol user pass host port path".split(" "),O=/^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/,P="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},Q=P.document,R=P.navigator;f.prototype={VERSION:"3.24.2",debug:!1,TraceKit:g,config:function(a,b){var c=this;if(c.h)return this.A("error","Error: Raven has already been configured"),c;if(!a)return c;var d=c.l;b&&u(b,function(a,b){"tags"===a||"extra"===a||"user"===a?c.k[a]=b:d[a]=b}),c.setDSN(a),d.ignoreErrors.push(/^Script error\.?$/),d.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/),d.ignoreErrors=z(d.ignoreErrors),d.ignoreUrls=!!d.ignoreUrls.length&&z(d.ignoreUrls),d.whitelistUrls=!!d.whitelistUrls.length&&z(d.whitelistUrls),d.includePaths=z(d.includePaths),d.maxBreadcrumbs=Math.max(0,Math.min(d.maxBreadcrumbs||100,100));var e={xhr:!0,console:!0,dom:!0,location:!0,sentry:!0},f=d.autoBreadcrumbs;"[object Object]"==={}.toString.call(f)?f=v(e,f):f!==!1&&(f=e),d.autoBreadcrumbs=f;var h={tryCatch:!0},i=d.instrument;return"[object Object]"==={}.toString.call(i)?i=v(h,i):i!==!1&&(i=h),d.instrument=i,g.collectWindowErrors=!!d.collectWindowErrors,c},install:function(){var a=this;return a.isSetup()&&!a.o&&(g.report.subscribe(function(){a.B.apply(a,arguments)}),a.l.captureUnhandledRejections&&a.C(),a.D(),a.l.instrument&&a.l.instrument.tryCatch&&a.E(),a.l.autoBreadcrumbs&&a.F(),a.G(),a.o=!0),Error.stackTraceLimit=a.l.stackTraceLimit,this},setDSN:function(a){var b=this,c=b.H(a),d=c.path.lastIndexOf("/"),e=c.path.substr(1,d);b.I=a,b.i=c.user,b.J=c.pass&&c.pass.substr(1),b.j=c.path.substr(d+1),b.h=b.K(c),b.L=b.h+"/"+e+"api/"+b.j+"/store/",this.z()},context:function(a,b,c){return q(a)&&(c=b||[],b=a,a=void 0),this.wrap(a,b).apply(this,c)},wrap:function(a,b,c){function d(){var d=[],f=arguments.length,g=!a||a&&a.deep!==!1;for(c&&q(c)&&c.apply(this,arguments);f--;)d[f]=g?e.wrap(a,arguments[f]):arguments[f];try{return b.apply(this,d)}catch(h){throw e.M(),e.captureException(h,a),h}}var e=this;if(p(b)&&!q(a))return a;if(q(a)&&(b=a,a=void 0),!q(b))return b;try{if(b.N)return b;if(b.O)return b.O}catch(f){return b}for(var g in b)y(b,g)&&(d[g]=b[g]);return d.prototype=b.prototype,b.O=d,d.N=!0,d.P=b,d},uninstall:function(){return g.report.uninstall(),this.Q(),this.R(),this.S(),this.T(),Error.stackTraceLimit=this.p,this.o=!1,this},U:function(a){this.A("debug","Raven caught unhandled promise rejection:",a),this.captureException(a.reason,{extra:{unhandledPromiseRejection:!0}})},C:function(){return this.U=this.U.bind(this),P.addEventListener&&P.addEventListener("unhandledrejection",this.U),this},Q:function(){return P.removeEventListener&&P.removeEventListener("unhandledrejection",this.U),this},captureException:function(a,b){if(b=v({trimHeadFrames:0},b?b:{}),o(a)&&a.error)a=a.error;else if(l(a))a=a;else{if(!n(a))return this.captureMessage(a,v(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}));b=this.V(b,a),a=new Error(b.message)}this.e=a;try{var c=g.computeStackTrace(a);this.W(c,b)}catch(d){if(a!==d)throw d}return this},V:function(a,b){var c=Object.keys(b).sort(),d=v(a,{message:"Non-Error exception captured with keys: "+J(c),fingerprint:[i(c)],extra:a.extra||{}});return d.extra.X=K(b),d},captureMessage:function(a,b){if(!this.l.ignoreErrors.test||!this.l.ignoreErrors.test(a)){b=b||{},a+="";var c,d=v({message:a},b);try{throw new Error(a)}catch(e){c=e}c.name=null;var f=g.computeStackTrace(c),h=s(f.stack)&&f.stack[1];h&&"Raven.captureException"===h.func&&(h=f.stack[2]);var i=h&&h.url||"";if((!this.l.ignoreUrls.test||!this.l.ignoreUrls.test(i))&&(!this.l.whitelistUrls.test||this.l.whitelistUrls.test(i))){if(this.l.stacktrace||b&&b.stacktrace){d.fingerprint=null==d.fingerprint?a:d.fingerprint,b=v({trimHeadFrames:0},b),b.trimHeadFrames+=1;var j=this.Y(f,b);d.stacktrace={frames:j.reverse()}}return d.fingerprint&&(d.fingerprint=s(d.fingerprint)?d.fingerprint:[d.fingerprint]),this.Z(d),this}}},captureBreadcrumb:function(a){var b=v({timestamp:d()/1e3},a);if(q(this.l.breadcrumbCallback)){var c=this.l.breadcrumbCallback(b);if(m(c)&&!t(c))b=c;else if(c===!1)return this}return this.v.push(b),this.v.length>this.l.maxBreadcrumbs&&this.v.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.s.push([a,b]),this.o&&this.G(),this},setUserContext:function(a){return this.k.user=a,this},setExtraContext:function(a){return this.$("extra",a),this},setTagsContext:function(a){return this.$("tags",a),this},clearContext:function(){return this.k={},this},getContext:function(){return JSON.parse(h(this.k))},setEnvironment:function(a){return this.l.environment=a,this},setRelease:function(a){return this.l.release=a,this},setDataCallback:function(a){var b=this.l.dataCallback;return this.l.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.l.breadcrumbCallback;return this.l.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.l.shouldSendCallback;return this.l.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.l.transport=a,this},lastException:function(){return this.e},lastEventId:function(){return this.g},isSetup:function(){return!!this.b&&(!!this.h||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.A("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=P.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(Q){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.I;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.k.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.K(this.H(c)),h=Q.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(Q.head||Q.body).appendChild(h)}},M:function(){var a=this;this.n+=1,setTimeout(function(){a.n-=1})},_:function(a,b){var c,d;if(this.c){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),Q.createEvent?(c=Q.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=Q.createEventObject(),c.eventType=a);for(d in b)y(b,d)&&(c[d]=b[d]);if(Q.createEvent)Q.dispatchEvent(c);else try{Q.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},aa:function(a){var b=this;return function(c){if(b.ba=null,b.w!==c){b.w=c;var d;try{d=C(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ca:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.ba;g||a.aa("input")(c),clearTimeout(g),a.ba=setTimeout(function(){a.ba=null},b)}}},da:function(a,b){var c=F(this.x.href),d=F(b),e=F(a);this.y=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},D:function(){var a=this;a.ea=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.N?a.ea.apply(this.P,arguments):a.ea.apply(this,arguments)}},R:function(){this.ea&&(Function.prototype.toString=this.ea)},E:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.da(b.y,c+""),a.apply(this,arguments)}};G(history,"pushState",j,d),G(history,"replaceState",j,d)}if(c.console&&"console"in P&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};u(["debug","info","warn","error","log"],function(a,b){M(console,b,k)})}},S:function(){for(var a;this.u.length;){a=this.u.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},T:function(){for(var a in this.r)this.q[a]=this.r[a]},G:function(){var a=this;u(this.s,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},H:function(a){var b=O.exec(a),c={},d=7;try{for(;d--;)c[N[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.l.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},K:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},B:function(){this.n||this.W.apply(this,arguments)},W:function(a,b){var c=this.Y(a,b);this._("handle",{stackInfo:a,options:b}),this.ga(a.name,a.message,a.url,a.lineno,c,b)},Y:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(u(a.stack,function(b,e){var f=c.ha(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.v,0)}),this.k.user&&(a.user=this.k.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),a=this.qa(a),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||t(a[b]))&&delete a[b]}),q(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!t(a)&&(!q(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.na()?void this.A("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function B(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&j(b))for(c=b.split(/\s+/),f=0;fc?M(a,b-1):d}function N(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?T:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function O(a,b){function c(a){return k(a)?a.map(function(a){return c(a)}):i(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!k(b)||k(b)&&0===b.length)return a;var d,e=w(b),f="********";try{d=JSON.parse(P(a))}catch(g){return a}return c(d)}var P=a(10),Q="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},R=3,S=51200,T=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isUndefined:g,isFunction:h,isPlainObject:i,isString:j,isArray:k,isEmptyObject:l,supportsErrorEvent:m,supportsFetch:n,supportsReferrerPolicy:o,supportsPromiseRejectionEvent:p,wrappedCallback:q,each:r,objectMerge:s,truncate:u,objectFrozen:t,hasKey:v,joinRegExp:w,urlencode:x,uuid4:z,htmlTreeAsString:A,htmlElementAsString:B,isSameException:E,isSameStacktrace:F,parseUrl:y,fill:G,safeJoin:H,serializeException:M,serializeKeysForMessage:N,sanitize:O}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{10:10}],9:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}var e=a(8),f={collectWindowErrors:!0,debug:!1},g="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},h=[].slice,i="?",j=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;f.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function k(a,b){var c=null;if(!b||f.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(h.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,g,h){var l=null,m=e.isErrorEvent(h)?h.error:h,n=e.isErrorEvent(a)?a.message:a;if(v)f.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&e.isError(m))l=f.computeStackTrace(m),k(l,!0);else{var p,r={url:b,line:c,column:g},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(j);p&&(s=p[1],n=p[2])}r.func=i,l={name:s,message:n,url:d(),stack:[r]},k(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=g.onerror,g.onerror=l,r=!0)}function n(){r&&(g.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,k.apply(null,[a,!1].concat(b))}function p(a,b){var c=h.call(arguments,1);if(v){if(u===a)return;o()}var d=f.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),f.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,e,f=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,g=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,h=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,j=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,k=/\((\S*)(?::(\d+))(?::(\d+))\)/,l=a.stack.split("\n"),m=[],n=(/^(.*) is undefined$/.exec(a.message),0),o=l.length;n eval")>-1;q&&(b=j.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==n||c[5]||"undefined"==typeof a.columnNumber||(m[0].column=a.columnNumber+1),e={url:c[3],func:c[1]||i,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}!e.func&&e.line&&(e.func=i),m.push(e)}return m.length?{name:a.name,message:a.message,url:d(),stack:m}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=i),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,g){for(var h,j,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==e&&o!==f.report){if(j={url:null,func:i,line:null,column:null},o.name?j.func=o.name:(h=k.exec(o.toString()))&&(j.func=h[1]),"undefined"==typeof j.func)try{j.func=h.input.substring(0,h.input.indexOf("{"))}catch(p){}m[""+o]?n=!0:m[""+o]=!0,l.push(j)}g&&l.splice(0,g);var q={name:a.name,message:a.message, +url:d(),stack:l};return b(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),q}function e(b,e){var g=null;e=null==e?0:+e;try{if(g=a(b))return g}catch(h){if(f.debug)throw h}try{if(g=c(b,e+1))return g}catch(h){if(f.debug)throw h}return{name:b.name,message:b.message,url:d()}}return e.augmentStackTraceWithInitialElement=b,e.computeStackTraceFromStackProp=a,e}(),b.exports=f}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{8:8}],10:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}],11:[function(a,b,c){function d(a,b){var c=(65535&a)+(65535&b),d=(a>>16)+(b>>16)+(c>>16);return d<<16|65535&c}function e(a,b){return a<>>32-b}function f(a,b,c,f,g,h){return d(e(d(d(b,a),d(f,h)),g),c)}function g(a,b,c,d,e,g,h){return f(b&c|~b&d,a,b,e,g,h)}function h(a,b,c,d,e,g,h){return f(b&d|c&~d,a,b,e,g,h)}function i(a,b,c,d,e,g,h){return f(b^c^d,a,b,e,g,h)}function j(a,b,c,d,e,g,h){return f(c^(b|~d),a,b,e,g,h)}function k(a,b){a[b>>5]|=128<>>9<<4)+14]=b;var c,e,f,k,l,m=1732584193,n=-271733879,o=-1732584194,p=271733878;for(c=0;c>5]>>>b%32&255);return c}function m(a){var b,c=[];for(c[(a.length>>2)-1]=void 0,b=0;b>5]|=(255&a.charCodeAt(b/8))<16&&(e=k(e,8*a.length)),c=0;c<16;c+=1)f[c]=909522486^e[c],g[c]=1549556828^e[c];return d=k(f.concat(m(b)),512+8*b.length),l(k(g.concat(d),640))}function p(a){var b,c,d="0123456789abcdef",e="";for(c=0;c>>4&15)+d.charAt(15&b);return e}function q(a){return unescape(encodeURIComponent(a))}function r(a){return n(q(a))}function s(a){return p(r(a))}function t(a,b){return o(q(a),q(b))}function u(a,b){return p(t(a,b))}function v(a,b,c){return b?c?t(b,a):u(b,a):c?r(a):s(a)}b.exports=v},{}]},{},[7,1,2,3])(7)}); //# sourceMappingURL=raven.min.js.map \ No newline at end of file diff --git a/dist/angular,require,vue/raven.min.js.map b/dist/angular,require,vue/raven.min.js.map index 12e58f43ceaa..b791303a07f0 100644 --- a/dist/angular,require,vue/raven.min.js.map +++ b/dist/angular,require,vue/raven.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["raven.js"],"names":["global","factory","exports","module","define","amd","Raven","this","createCommonjsModule","fn","_typeof","obj","Symbol","iterator","constructor","prototype","isObject$1","what","isError$1","value","toString","call","Error","isErrorEvent$1","supportsErrorEvent","isUndefined$1","isFunction$1","isPlainObject","Object","isString$1","isArray$1","isEmptyObject$1","_","hasOwnProperty","ErrorEvent","e","supportsFetch$1","_window$3","Headers","Request","Response","wrappedCallback","callback","dataCallback","data","original","normalizedData","each$1","i","j","length","hasKey$1","objectMerge$1","obj1","obj2","key","objectFrozen$1","isFrozen","truncate$1","str","max","substr","object","joinRegExp$1","patterns","pattern","sources","len","push","replace","source","RegExp","join","urlencode$1","o","pairs","encodeURIComponent","parseUrl$1","url","match","query","fragment","protocol","host","path","relative","uuid4$1","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","r","Math","random","htmlTreeAsString$1","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","reverse","className","classes","attr","tagName","toLowerCase","id","split","attrWhitelist","getAttribute","isOnlyOneTruthy","a","b","isBothUndefined","isSameException$1","ex1","ex2","values","type","stacktrace","isSameStacktrace$1","stack1","stack2","frames1","frames","frames2","filename","lineno","colno","fill$1","name","replacement","track","orig","__raven__","__orig__","safeJoin","input","delimiter","output","String","getLocationHref","document","location","href","RavenConfigError","message","now","Date","keepOriginalCallback","isFunction","Raven$1","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window$1","SENTRY_RELEASE","logger","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","_fetchDefaults","method","keepalive","referrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","console","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","_lastHref","_resetBackoff","angularPlugin","angular","RavenProvider","$get","$window","ExceptionHandlerProvider","$provide","decorator","exceptionHandler","R","$delegate","ex","cause","captureException","extra","window","moduleName","provider","config","setDataCallback","wrappedCallback$1","_normalizeData","requirePlugin","formatComponentName","vm","$root","_isVue","$options","_componentTag","__file","vuePlugin","Vue","_oldOnError","errorHandler","error","info","metaData","componentName","propsData","lifecycleHook","commonjsGlobal","self","_sPO","setPrototypeOf","p","__proto__","Reflect","construct","Parent","args","Class","Constructor","apply","bind","utils","isObject","isError","isErrorEvent","isString","isArray","isEmptyObject","supportsFetch","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","TraceKit","debug","_window$2","_slice","slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","report","subscribe","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","stack","isWindowError","exception","concat","arguments","inner","traceKitWindowOnError","msg","lineNo","colNo","lastExceptionStack","computeStackTrace","augmentStackTraceWithInitialElement","processLastException","groups","line","column","undefined","func","_oldOnerrorHandler","_onErrorHandlerInstalled","onerror","_lastExceptionStack","_lastArgs","lastArgs","lastException","rethrow","setTimeout","incomplete","uninstall","computeStackTraceFromStackProp","submatch","parts","element","chrome","gecko","winjs","geckoEval","chromeEval","lines","exec","isNative","indexOf","isEval","columnNumber","stackInfo","initial","unshift","partial","computeStackTraceByWalkingCallerChain","depth","item","functionName","funcs","recursion","curr","caller","substring","result","sourceURL","fileName","lineNumber","description","tracekit","stringify_1","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","err","keys","thisPos","Infinity","getSerialize","configError","wrapMethod","level","originalConsoleLevel","originalConsole","sentryLevel","Function","console$1","wrapConsoleMethod","dsnKeys","dsnPattern","navigator","VERSION","dsn","options","_logDebug","globalOptions","setDSN","maxBreadcrumbs","min","autoBreadcrumbDefaults","xhr","dom","sentry","instrumentDefaults","tryCatch","install","isSetup","_handleOnErrorStackInfo","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","lastIndexOf","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","context","wrap","_before","wrapped","deep","_ignoreNextOnError","__raven_wrapper__","property","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","trimHeadFrames","isNotError","isNotErrorEvent","isErrorEventWithoutError","captureMessage","_handleStackInfo","test","initialCall","fileurl","fingerprint","_prepareFrames","_send","captureBreadcrumb","crumb","timestamp","breadcrumbCallback","shift","addPlugin","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","O","X","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","Y","evtName","_keypressTimeout","target","category","$","debounceDuration","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","from","to","parsedLoc","parsedTo","parsedFrom","F","_originalFunctionToString","Q","G","wrapTimeFn","t","Array","originalCallback","wrapEventTarget","proto","capture","secure","handleEvent","before","clickHandler","keypressHandler","_keypressEventHandler","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","H","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","onreadystatechange","origFetch","fetchInput","fetchData","then","response","addEventListener","attachEvent","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","builtin","S","I","installer","J","m","allowSecretKey","M","port","E","T","_triggerEvent","_processException","U","frame","_normalizeFrame","in_app","da","stackInfoUrl","normalized","function","ca","prefixedMessage","culprit","ea","request","Referer","breadcrumbs","_trimBreadcrumbs","fa","urlProp","urlProps","ga","httpData","userAgent","User-Agent","referrer","A","_backoffDuration","_backoffStart","ja","ka","current","last","la","_shouldBackoff","retry","get","getResponseHeader","parseInt","V","baseData","project","platform","_getHttpData","serverName","server_name","forEach","_sendProcessedPayload","na","ma","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","oa","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","onload","open","setRequestHeader","send","pa","hash","evaluated","D","W","setUser","setReleaseContext","raven","_window","_Raven","noConflict","singleton","angularPattern","matches","angularDocs","require_1","vue","angular_require_vue"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file +{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","angularPlugin","angular","RavenProvider","$get","$window","ExceptionHandlerProvider","$provide","decorator","exceptionHandler","R","$delegate","ex","cause","captureException","extra","moduleName","provider","config","setDataCallback","wrappedCallback","data","_normalizeData","angularPattern","exception","values","matches","exec","value","type","message","angularDocs","substr","addPlugin","7","8","2","requirePlugin","wrap","deep","3","formatComponentName","vm","$root","name","_isVue","$options","_componentTag","__file","vuePlugin","Vue","_oldOnError","errorHandler","error","info","metaData","Object","prototype","toString","componentName","propsData","lifecycleHook","4","RavenConfigError","constructor","5","utils","wrapMethod","console","level","callback","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","msg","safeJoin","logger","Function","apply","6","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","sanitizeKeys","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isError","isObject","isPlainObject","isErrorEvent","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","sanitize","wrapConsoleMethod","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","dsn","options","_logDebug","globalOptions","key","setDSN","push","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","context","func","undefined","_before","wrapped","_ignoreNextOnError","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","U","event","reason","unhandledPromiseRejection","C","_promiseRejectionHandler","bind","addEventListener","Q","removeEventListener","trimHeadFrames","captureMessage","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","V","currentOptions","exKeys","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","M","setTimeout","_","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","aa","evtName","_keypressTimeout","target","category","ca","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","da","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","D","_originalFunctionToString","E","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","F","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","S","builtin","T","G","installer","concat","H","str","m","allowSecretKey","K","port","B","W","stackInfo","_triggerEvent","_processException","lineno","Y","frame","_normalizeFrame","in_app","ha","stackInfoUrl","normalized","filename","line","colno","column","function","ga","prefixedMessage","culprit","ia","request","Referer","breadcrumbs","_trimBreadcrumbs","ja","urlProp","urlProps","ka","httpData","userAgent","User-Agent","referrer","z","_backoffDuration","_backoffStart","na","oa","current","last","pa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Z","baseData","project","platform","_getHttpData","serverName","server_name","_sanitizeData","forEach","random","_sendProcessedPayload","qa","sa","ra","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","ta","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","onerror","open","setRequestHeader","send","ua","hash","evaluated","A","$","setUser","setReleaseContext","10","11","9","RavenConstructor","_Raven","noConflict","Client","what","supportsErrorEvent","ErrorEvent","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","sanitizeMask","safeInput","o_O","getLocationHref","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","y","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","charAt","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","string","raw"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file diff --git a/dist/angular,require/raven.js b/dist/angular,require/raven.js index 07529cc77b24..05373c93fa94 100644 --- a/dist/angular,require/raven.js +++ b/dist/angular,require/raven.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.22.2 (1b6187b) | github.com/getsentry/raven-js */ +/*! Raven.js 3.24.2 (540f32b) | github.com/getsentry/raven-js */ /* * Includes TraceKit @@ -10,3216 +10,3989 @@ * */ -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : - typeof define === 'function' && define.amd ? define(factory) : - (global.Raven = factory()); -}(this, (function () { 'use strict'; +(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.Raven = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o href parsing trick because React Native and other -// environments where DOM might not be available + self.setDSN(dsn); + // "Script error." is hard coded into browsers for errors that it can't read. + // this is the result of a script being pulled in from an external domain and CORS. + globalOptions.ignoreErrors.push(/^Script error\.?$/); + globalOptions.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/); -function parseUrl$1(url) { - if (typeof url !== 'string') return {}; - var match = url.match(/^(([^:\/?#]+):)?(\/\/([^\/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?$/); // coerce to undefined values to empty string so we don't get 'undefined' + // join regexp rules into one big rule + globalOptions.ignoreErrors = joinRegExp(globalOptions.ignoreErrors); + globalOptions.ignoreUrls = globalOptions.ignoreUrls.length + ? joinRegExp(globalOptions.ignoreUrls) + : false; + globalOptions.whitelistUrls = globalOptions.whitelistUrls.length + ? joinRegExp(globalOptions.whitelistUrls) + : false; + globalOptions.includePaths = joinRegExp(globalOptions.includePaths); + globalOptions.maxBreadcrumbs = Math.max( + 0, + Math.min(globalOptions.maxBreadcrumbs || 100, 100) + ); // default and hard limit is 100 - var query = match[6] || ''; - var fragment = match[8] || ''; - return { - protocol: match[2], - host: match[4], - path: match[5], - relative: match[5] + query + fragment // everything minus origin + var autoBreadcrumbDefaults = { + xhr: true, + console: true, + dom: true, + location: true, + sentry: true + }; - }; -} + var autoBreadcrumbs = globalOptions.autoBreadcrumbs; + if ({}.toString.call(autoBreadcrumbs) === '[object Object]') { + autoBreadcrumbs = objectMerge(autoBreadcrumbDefaults, autoBreadcrumbs); + } else if (autoBreadcrumbs !== false) { + autoBreadcrumbs = autoBreadcrumbDefaults; + } + globalOptions.autoBreadcrumbs = autoBreadcrumbs; -function uuid4$1() { - var crypto = _window$3.crypto || _window$3.msCrypto; + var instrumentDefaults = { + tryCatch: true + }; - if (!isUndefined$1(crypto) && crypto.getRandomValues) { - // Use window.crypto API if available - // eslint-disable-next-line no-undef - var arr = new Uint16Array(8); - crypto.getRandomValues(arr); // set 4 in byte 7 + var instrument = globalOptions.instrument; + if ({}.toString.call(instrument) === '[object Object]') { + instrument = objectMerge(instrumentDefaults, instrument); + } else if (instrument !== false) { + instrument = instrumentDefaults; + } + globalOptions.instrument = instrument; - arr[3] = arr[3] & 0xfff | 0x4000; // set 2 most significant bits of byte 9 to '10' + TraceKit.collectWindowErrors = !!globalOptions.collectWindowErrors; - arr[4] = arr[4] & 0x3fff | 0x8000; + // return for chaining + return self; + }, - var pad = function pad(num) { - var v = num.toString(16); + /* + * Installs a global window.onerror error handler + * to capture and report uncaught exceptions. + * At this point, install() is required to be called due + * to the way TraceKit is set up. + * + * @return {Raven} + */ + install: function() { + var self = this; + if (self.isSetup() && !self._isRavenInstalled) { + TraceKit.report.subscribe(function() { + self._handleOnErrorStackInfo.apply(self, arguments); + }); - while (v.length < 4) { - v = '0' + v; + if (self._globalOptions.captureUnhandledRejections) { + self._attachPromiseRejectionHandler(); } - return v; - }; - - return pad(arr[0]) + pad(arr[1]) + pad(arr[2]) + pad(arr[3]) + pad(arr[4]) + pad(arr[5]) + pad(arr[6]) + pad(arr[7]); - } else { - // http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/2117523#2117523 - return 'xxxxxxxxxxxx4xxxyxxxxxxxxxxxxxxx'.replace(/[xy]/g, function (c) { - var r = Math.random() * 16 | 0, - v = c === 'x' ? r : r & 0x3 | 0x8; - return v.toString(16); - }); - } -} -/** - * Given a child DOM element, returns a query-selector statement describing that - * and its ancestors - * e.g. [HTMLElement] => body > div > input#foo.btn[name=baz] - * @param elem - * @returns {string} - */ + self._patchFunctionToString(); + if (self._globalOptions.instrument && self._globalOptions.instrument.tryCatch) { + self._instrumentTryCatch(); + } -function htmlTreeAsString$1(elem) { - /* eslint no-extra-parens:0*/ - var MAX_TRAVERSE_HEIGHT = 5, - MAX_OUTPUT_LEN = 80, - out = [], - height = 0, - len = 0, - separator = ' > ', - sepLength = separator.length, - nextStr; + if (self._globalOptions.autoBreadcrumbs) self._instrumentBreadcrumbs(); - while (elem && height++ < MAX_TRAVERSE_HEIGHT) { - nextStr = htmlElementAsString(elem); // bail out if - // - nextStr is the 'html' element - // - the length of the string that would be created exceeds MAX_OUTPUT_LEN - // (ignore this limit if we are on the first iteration) + // Install all of the plugins + self._drainPlugins(); - if (nextStr === 'html' || height > 1 && len + out.length * sepLength + nextStr.length >= MAX_OUTPUT_LEN) { - break; + self._isRavenInstalled = true; } - out.push(nextStr); - len += nextStr.length; - elem = elem.parentNode; - } - - return out.reverse().join(separator); -} -/** - * Returns a simple, query-selector representation of a DOM element - * e.g. [HTMLElement] => input#foo.btn[name=baz] - * @param HTMLElement - * @returns {string} - */ - - -function htmlElementAsString(elem) { - var out = [], - className, - classes, - key, - attr, - i; + Error.stackTraceLimit = self._globalOptions.stackTraceLimit; + return this; + }, - if (!elem || !elem.tagName) { - return ''; - } + /* + * Set the DSN (can be called multiple time unlike config) + * + * @param {string} dsn The public Sentry DSN + */ + setDSN: function(dsn) { + var self = this, + uri = self._parseDSN(dsn), + lastSlash = uri.path.lastIndexOf('/'), + path = uri.path.substr(1, lastSlash); - out.push(elem.tagName.toLowerCase()); + self._dsn = dsn; + self._globalKey = uri.user; + self._globalSecret = uri.pass && uri.pass.substr(1); + self._globalProject = uri.path.substr(lastSlash + 1); - if (elem.id) { - out.push('#' + elem.id); - } + self._globalServer = self._getGlobalServer(uri); - className = elem.className; + self._globalEndpoint = + self._globalServer + '/' + path + 'api/' + self._globalProject + '/store/'; - if (className && isString$1(className)) { - classes = className.split(/\s+/); + // Reset backoff state since we may be pointing at a + // new project/server + this._resetBackoff(); + }, - for (i = 0; i < classes.length; i++) { - out.push('.' + classes[i]); + /* + * Wrap code within a context so Raven can capture errors + * reliably across domains that is executed immediately. + * + * @param {object} options A specific set of options for this context [optional] + * @param {function} func The callback to be immediately executed within the context + * @param {array} args An array of arguments to be called with the callback [optional] + */ + context: function(options, func, args) { + if (isFunction(options)) { + args = func || []; + func = options; + options = undefined; } - } - var attrWhitelist = ['type', 'name', 'title', 'alt']; + return this.wrap(options, func).apply(this, args); + }, - for (i = 0; i < attrWhitelist.length; i++) { - key = attrWhitelist[i]; - attr = elem.getAttribute(key); + /* + * Wrap code within a context and returns back a new function to be executed + * + * @param {object} options A specific set of options for this context [optional] + * @param {function} func The function to be wrapped in a new context + * @param {function} func A function to call before the try/catch wrapper [optional, private] + * @return {function} The newly wrapped functions with a context + */ + wrap: function(options, func, _before) { + var self = this; + // 1 argument has been passed, and it's not a function + // so just return it + if (isUndefined(func) && !isFunction(options)) { + return options; + } - if (attr) { - out.push('[' + key + '="' + attr + '"]'); + // options is optional + if (isFunction(options)) { + func = options; + options = undefined; } - } - return out.join(''); -} -/** - * Returns true if either a OR b is truthy, but not both - */ + // At this point, we've passed along 2 arguments, and the second one + // is not a function either, so we'll just return the second argument. + if (!isFunction(func)) { + return func; + } + // We don't wanna wrap it twice! + try { + if (func.__raven__) { + return func; + } -function isOnlyOneTruthy(a, b) { - return !!(!!a ^ !!b); -} -/** - * Returns true if both parameters are undefined - */ + // If this has already been wrapped in the past, return that + if (func.__raven_wrapper__) { + return func.__raven_wrapper__; + } + } catch (e) { + // Just accessing custom props in some Selenium environments + // can cause a "Permission denied" exception (see raven-js#495). + // Bail on wrapping and return the function as-is (defers to window.onerror). + return func; + } + function wrapped() { + var args = [], + i = arguments.length, + deep = !options || (options && options.deep !== false); -function isBothUndefined(a, b) { - return isUndefined$1(a) && isUndefined$1(b); -} -/** - * Returns true if the two input exception interfaces have the same content - */ + if (_before && isFunction(_before)) { + _before.apply(this, arguments); + } + // Recursively wrap all of a function's arguments that are + // functions themselves. + while (i--) args[i] = deep ? self.wrap(options, arguments[i]) : arguments[i]; -function isSameException$1(ex1, ex2) { - if (isOnlyOneTruthy(ex1, ex2)) return false; - ex1 = ex1.values[0]; - ex2 = ex2.values[0]; - if (ex1.type !== ex2.type || ex1.value !== ex2.value) return false; // in case both stacktraces are undefined, we can't decide so default to false - - if (isBothUndefined(ex1.stacktrace, ex2.stacktrace)) return false; - return isSameStacktrace$1(ex1.stacktrace, ex2.stacktrace); -} -/** - * Returns true if the two input stack trace interfaces have the same content - */ - + try { + // Attempt to invoke user-land function + // NOTE: If you are a Sentry user, and you are seeing this stack frame, it + // means Raven caught an error invoking your application code. This is + // expected behavior and NOT indicative of a bug with Raven.js. + return func.apply(this, args); + } catch (e) { + self._ignoreNextOnError(); + self.captureException(e, options); + throw e; + } + } -function isSameStacktrace$1(stack1, stack2) { - if (isOnlyOneTruthy(stack1, stack2)) return false; - var frames1 = stack1.frames; - var frames2 = stack2.frames; // Exit early if frame count differs + // copy over properties of the old function + for (var property in func) { + if (hasKey(func, property)) { + wrapped[property] = func[property]; + } + } + wrapped.prototype = func.prototype; - if (frames1.length !== frames2.length) return false; // Iterate through every frame; bail out if anything differs + func.__raven_wrapper__ = wrapped; + // Signal that this function has been wrapped/filled already + // for both debugging and to prevent it to being wrapped/filled twice + wrapped.__raven__ = true; + wrapped.__orig__ = func; - var a, b; + return wrapped; + }, - for (var i = 0; i < frames1.length; i++) { - a = frames1[i]; - b = frames2[i]; - if (a.filename !== b.filename || a.lineno !== b.lineno || a.colno !== b.colno || a['function'] !== b['function']) return false; - } + /** + * Uninstalls the global error handler. + * + * @return {Raven} + */ + uninstall: function() { + TraceKit.report.uninstall(); - return true; -} -/** - * Polyfill a method - * @param obj object e.g. `document` - * @param name method name present on object e.g. `addEventListener` - * @param replacement replacement function - * @param track {optional} record instrumentation to an array - */ + this._detachPromiseRejectionHandler(); + this._unpatchFunctionToString(); + this._restoreBuiltIns(); + this._restoreConsole(); + Error.stackTraceLimit = this._originalErrorStackTraceLimit; + this._isRavenInstalled = false; -function fill$1(obj, name, replacement, track) { - var orig = obj[name]; - obj[name] = replacement(orig); - obj[name].__raven__ = true; - obj[name].__orig__ = orig; + return this; + }, - if (track) { - track.push([obj, name, orig]); - } -} -/** - * Join values in array - * @param input array of values to be joined together - * @param delimiter string to be placed in-between values - * @returns {string} - */ + /** + * Callback used for `unhandledrejection` event + * + * @param {PromiseRejectionEvent} event An object containing + * promise: the Promise that was rejected + * reason: the value with which the Promise was rejected + * @return void + */ + _promiseRejectionHandler: function(event) { + this._logDebug('debug', 'Raven caught unhandled promise rejection:', event); + this.captureException(event.reason, { + extra: { + unhandledPromiseRejection: true + } + }); + }, + /** + * Installs the global promise rejection handler. + * + * @return {raven} + */ + _attachPromiseRejectionHandler: function() { + this._promiseRejectionHandler = this._promiseRejectionHandler.bind(this); + _window.addEventListener && + _window.addEventListener('unhandledrejection', this._promiseRejectionHandler); + return this; + }, -function safeJoin(input, delimiter) { - if (!isArray$1(input)) return ''; - var output = []; + /** + * Uninstalls the global promise rejection handler. + * + * @return {raven} + */ + _detachPromiseRejectionHandler: function() { + _window.removeEventListener && + _window.removeEventListener('unhandledrejection', this._promiseRejectionHandler); + return this; + }, - for (var i = 0; i < input.length; i++) { + /** + * Manually capture an exception and send it over to Sentry + * + * @param {error} ex An exception to be logged + * @param {object} options A specific set of options for this error [optional] + * @return {Raven} + */ + captureException: function(ex, options) { + options = objectMerge({trimHeadFrames: 0}, options ? options : {}); + + if (isErrorEvent(ex) && ex.error) { + // If it is an ErrorEvent with `error` property, extract it to get actual Error + ex = ex.error; + } else if (isError(ex)) { + // we have a real Error object + ex = ex; + } else if (isPlainObject(ex)) { + // If it is plain Object, serialize it manually and extract options + // This will allow us to group events based on top-level keys + // which is much better than creating new group when any key/value change + options = this._getCaptureExceptionOptionsFromPlainObject(options, ex); + ex = new Error(options.message); + } else { + // If none of previous checks were valid, then it means that + // it's not a plain Object + // it's not a valid ErrorEvent (one with an error property) + // it's not an Error + // So bail out and capture it as a simple message: + return this.captureMessage( + ex, + objectMerge(options, { + stacktrace: true, // if we fall back to captureMessage, default to attempting a new trace + trimHeadFrames: options.trimHeadFrames + 1 + }) + ); + } + + // Store the raw exception object for potential debugging and introspection + this._lastCapturedException = ex; + + // TraceKit.report will re-raise any exception passed to it, + // which means you have to wrap it in try/catch. Instead, we + // can wrap it here and only re-raise if TraceKit.report + // raises an exception different from the one we asked to + // report on. try { - output.push(String(input[i])); - } catch (e) { - output.push('[value cannot be serialized]'); + var stack = TraceKit.computeStackTrace(ex); + this._handleStackInfo(stack, options); + } catch (ex1) { + if (ex !== ex1) { + throw ex1; + } } - } - return output.join(delimiter); -} + return this; + }, -var utils = { - isObject: isObject$1, - isError: isError$1, - isErrorEvent: isErrorEvent$1, - isUndefined: isUndefined$1, - isFunction: isFunction$1, - isPlainObject: isPlainObject, - isString: isString$1, - isArray: isArray$1, - isEmptyObject: isEmptyObject$1, - supportsErrorEvent: supportsErrorEvent, - supportsFetch: supportsFetch$1, - wrappedCallback: wrappedCallback, - each: each$1, - objectMerge: objectMerge$1, - truncate: truncate$1, - objectFrozen: objectFrozen$1, - hasKey: hasKey$1, - joinRegExp: joinRegExp$1, - urlencode: urlencode$1, - uuid4: uuid4$1, - htmlTreeAsString: htmlTreeAsString$1, - htmlElementAsString: htmlElementAsString, - isSameException: isSameException$1, - isSameStacktrace: isSameStacktrace$1, - parseUrl: parseUrl$1, - fill: fill$1, - safeJoin: safeJoin -}; + _getCaptureExceptionOptionsFromPlainObject: function(currentOptions, ex) { + var exKeys = Object.keys(ex).sort(); + var options = objectMerge(currentOptions, { + message: + 'Non-Error exception captured with keys: ' + serializeKeysForMessage(exKeys), + fingerprint: [md5(exKeys)], + extra: currentOptions.extra || {} + }); + options.extra.__serialized__ = serializeException(ex); -/* - TraceKit - Cross brower stack traces + return options; + }, - This was originally forked from github.com/occ/TraceKit, but has since been - largely re-written and is now maintained as part of raven-js. Tests for - this are in test/vendor. + /* + * Manually send a message to Sentry + * + * @param {string} msg A plain message to be captured in Sentry + * @param {object} options A specific set of options for this message [optional] + * @return {Raven} + */ + captureMessage: function(msg, options) { + // config() automagically converts ignoreErrors from a list to a RegExp so we need to test for an + // early call; we'll error on the side of logging anything called before configuration since it's + // probably something you should see: + if ( + !!this._globalOptions.ignoreErrors.test && + this._globalOptions.ignoreErrors.test(msg) + ) { + return; + } - MIT license -*/ + options = options || {}; + msg = msg + ''; // Make sure it's actually a string -var TraceKit = { - collectWindowErrors: true, - debug: false -}; // This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) + var data = objectMerge( + { + message: msg + }, + options + ); -var _window$2 = typeof window !== 'undefined' ? window : typeof commonjsGlobal !== 'undefined' ? commonjsGlobal : typeof self !== 'undefined' ? self : {}; // global reference to slice + var ex; + // Generate a "synthetic" stack trace from this point. + // NOTE: If you are a Sentry user, and you are seeing this stack frame, it is NOT indicative + // of a bug with Raven.js. Sentry generates synthetic traces either by configuration, + // or if it catches a thrown object without a "stack" property. + try { + throw new Error(msg); + } catch (ex1) { + ex = ex1; + } + // null exception name so `Error` isn't prefixed to msg + ex.name = null; + var stack = TraceKit.computeStackTrace(ex); -var _slice = [].slice; -var UNKNOWN_FUNCTION = '?'; // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error#Error_types + // stack[0] is `throw new Error(msg)` call itself, we are interested in the frame that was just before that, stack[1] + var initialCall = isArray(stack.stack) && stack.stack[1]; -var ERROR_TYPES_RE = /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/; + // if stack[1] is `Raven.captureException`, it means that someone passed a string to it and we redirected that call + // to be handled by `captureMessage`, thus `initialCall` is the 3rd one, not 2nd + // initialCall => captureException(string) => captureMessage(string) + if (initialCall && initialCall.func === 'Raven.captureException') { + initialCall = stack.stack[2]; + } -function getLocationHref() { - if (typeof document === 'undefined' || document.location == null) return ''; - return document.location.href; -} -/** - * TraceKit.report: cross-browser processing of unhandled exceptions - * - * Syntax: - * TraceKit.report.subscribe(function(stackInfo) { ... }) - * TraceKit.report.unsubscribe(function(stackInfo) { ... }) - * TraceKit.report(exception) - * try { ...code... } catch(ex) { TraceKit.report(ex); } - * - * Supports: - * - Firefox: full stack trace with line numbers, plus column number - * on top frame; column number is not guaranteed - * - Opera: full stack trace with line and column numbers - * - Chrome: full stack trace with line and column numbers - * - Safari: line and column number for the top frame only; some frames - * may be missing, and column number is not guaranteed - * - IE: line and column number for the top frame only; some frames - * may be missing, and column number is not guaranteed - * - * In theory, TraceKit should work on all of the following versions: - * - IE5.5+ (only 8.0 tested) - * - Firefox 0.9+ (only 3.5+ tested) - * - Opera 7+ (only 10.50 tested; versions 9 and earlier may require - * Exceptions Have Stacktrace to be enabled in opera:config) - * - Safari 3+ (only 4+ tested) - * - Chrome 1+ (only 5+ tested) - * - Konqueror 3.5+ (untested) - * - * Requires TraceKit.computeStackTrace. - * - * Tries to catch all unhandled exceptions and report them to the - * subscribed handlers. Please note that TraceKit.report will rethrow the - * exception. This is REQUIRED in order to get a useful stack trace in IE. - * If the exception does not reach the top of the browser, you will only - * get a stack trace from the point where TraceKit.report was called. - * - * Handlers receive a stackInfo object as described in the - * TraceKit.computeStackTrace docs. - */ + var fileurl = (initialCall && initialCall.url) || ''; + if ( + !!this._globalOptions.ignoreUrls.test && + this._globalOptions.ignoreUrls.test(fileurl) + ) { + return; + } -TraceKit.report = function reportModuleWrapper() { - var handlers = [], - lastArgs = null, - lastException = null, - lastExceptionStack = null; - /** - * Add a crash handler. - * @param {Function} handler - */ + if ( + !!this._globalOptions.whitelistUrls.test && + !this._globalOptions.whitelistUrls.test(fileurl) + ) { + return; + } - function subscribe(handler) { - installGlobalHandler(); - handlers.push(handler); - } - /** - * Remove a crash handler. - * @param {Function} handler - */ + if (this._globalOptions.stacktrace || (options && options.stacktrace)) { + // fingerprint on msg, not stack trace (legacy behavior, could be revisited) + data.fingerprint = data.fingerprint == null ? msg : data.fingerprint; + options = objectMerge( + { + trimHeadFrames: 0 + }, + options + ); + // Since we know this is a synthetic trace, the top frame (this function call) + // MUST be from Raven.js, so mark it for trimming + // We add to the trim counter so that callers can choose to trim extra frames, such + // as utility functions. + options.trimHeadFrames += 1; - function unsubscribe(handler) { - for (var i = handlers.length - 1; i >= 0; --i) { - if (handlers[i] === handler) { - handlers.splice(i, 1); - } + var frames = this._prepareFrames(stack, options); + data.stacktrace = { + // Sentry expects frames oldest to newest + frames: frames.reverse() + }; } - } - /** - * Remove all crash handlers. - */ + // Make sure that fingerprint is always wrapped in an array + if (data.fingerprint) { + data.fingerprint = isArray(data.fingerprint) + ? data.fingerprint + : [data.fingerprint]; + } - function unsubscribeAll() { - uninstallGlobalHandler(); - handlers = []; - } - /** - * Dispatch stack information to all handlers. - * @param {Object.} stack - */ + // Fire away! + this._send(data); + return this; + }, - function notifyHandlers(stack, isWindowError) { - var exception = null; + captureBreadcrumb: function(obj) { + var crumb = objectMerge( + { + timestamp: now() / 1000 + }, + obj + ); - if (isWindowError && !TraceKit.collectWindowErrors) { - return; + if (isFunction(this._globalOptions.breadcrumbCallback)) { + var result = this._globalOptions.breadcrumbCallback(crumb); + + if (isObject(result) && !isEmptyObject(result)) { + crumb = result; + } else if (result === false) { + return this; + } } - for (var i in handlers) { - if (handlers.hasOwnProperty(i)) { - try { - handlers[i].apply(null, [stack].concat(_slice.call(arguments, 2))); - } catch (inner) { - exception = inner; - } - } + this._breadcrumbs.push(crumb); + if (this._breadcrumbs.length > this._globalOptions.maxBreadcrumbs) { + this._breadcrumbs.shift(); } + return this; + }, - if (exception) { - throw exception; + addPlugin: function(plugin /*arg1, arg2, ... argN*/) { + var pluginArgs = [].slice.call(arguments, 1); + + this._plugins.push([plugin, pluginArgs]); + if (this._isRavenInstalled) { + this._drainPlugins(); } - } - var _oldOnerrorHandler, _onErrorHandlerInstalled; - /** - * Ensures all global unhandled exceptions are recorded. - * Supported by Gecko and IE. - * @param {string} msg Error message. - * @param {string} url URL of script that generated the exception. - * @param {(number|string)} lineNo The line number at which the error - * occurred. - * @param {?(number|string)} colNo The column number at which the error - * occurred. - * @param {?Error} ex The actual Error object. + return this; + }, + + /* + * Set/clear a user to be sent along with the payload. + * + * @param {object} user An object representing user data [optional] + * @return {Raven} */ + setUserContext: function(user) { + // Intentionally do not merge here since that's an unexpected behavior. + this._globalContext.user = user; + return this; + }, - function traceKitWindowOnError(msg, url, lineNo, colNo, ex) { - var stack = null; // If 'ex' is ErrorEvent, get real Error from inside + /* + * Merge extra attributes to be sent along with the payload. + * + * @param {object} extra An object representing extra data [optional] + * @return {Raven} + */ + setExtraContext: function(extra) { + this._mergeContext('extra', extra); - var exception = utils.isErrorEvent(ex) ? ex.error : ex; // If 'msg' is ErrorEvent, get real message from inside + return this; + }, - var message = utils.isErrorEvent(msg) ? msg.message : msg; + /* + * Merge tags to be sent along with the payload. + * + * @param {object} tags An object representing tags [optional] + * @return {Raven} + */ + setTagsContext: function(tags) { + this._mergeContext('tags', tags); - if (lastExceptionStack) { - TraceKit.computeStackTrace.augmentStackTraceWithInitialElement(lastExceptionStack, url, lineNo, message); - processLastException(); - } else if (exception && utils.isError(exception)) { - // non-string `exception` arg; attempt to extract stack trace - // New chrome and blink send along a real error object - // Let's just report that like a normal error. - // See: https://mikewest.org/2013/08/debugging-runtime-errors-with-window-onerror - stack = TraceKit.computeStackTrace(exception); - notifyHandlers(stack, true); - } else { - var location = { - url: url, - line: lineNo, - column: colNo - }; - var name = undefined; - var groups; + return this; + }, - if ({}.toString.call(message) === '[object String]') { - var groups = message.match(ERROR_TYPES_RE); + /* + * Clear all of the context. + * + * @return {Raven} + */ + clearContext: function() { + this._globalContext = {}; - if (groups) { - name = groups[1]; - message = groups[2]; - } - } + return this; + }, - location.func = UNKNOWN_FUNCTION; - stack = { - name: name, - message: message, - url: getLocationHref(), - stack: [location] - }; - notifyHandlers(stack, true); - } + /* + * Get a copy of the current context. This cannot be mutated. + * + * @return {object} copy of context + */ + getContext: function() { + // lol javascript + return JSON.parse(stringify(this._globalContext)); + }, - if (_oldOnerrorHandler) { - return _oldOnerrorHandler.apply(this, arguments); - } + /* + * Set environment of application + * + * @param {string} environment Typically something like 'production'. + * @return {Raven} + */ + setEnvironment: function(environment) { + this._globalOptions.environment = environment; - return false; - } + return this; + }, - function installGlobalHandler() { - if (_onErrorHandlerInstalled) { - return; - } + /* + * Set release version of application + * + * @param {string} release Typically something like a git SHA to identify version + * @return {Raven} + */ + setRelease: function(release) { + this._globalOptions.release = release; - _oldOnerrorHandler = _window$2.onerror; - _window$2.onerror = traceKitWindowOnError; - _onErrorHandlerInstalled = true; - } + return this; + }, - function uninstallGlobalHandler() { - if (!_onErrorHandlerInstalled) { - return; - } + /* + * Set the dataCallback option + * + * @param {function} callback The callback to run which allows the + * data blob to be mutated before sending + * @return {Raven} + */ + setDataCallback: function(callback) { + var original = this._globalOptions.dataCallback; + this._globalOptions.dataCallback = keepOriginalCallback(original, callback); + return this; + }, - _window$2.onerror = _oldOnerrorHandler; - _onErrorHandlerInstalled = false; - _oldOnerrorHandler = undefined; - } + /* + * Set the breadcrumbCallback option + * + * @param {function} callback The callback to run which allows filtering + * or mutating breadcrumbs + * @return {Raven} + */ + setBreadcrumbCallback: function(callback) { + var original = this._globalOptions.breadcrumbCallback; + this._globalOptions.breadcrumbCallback = keepOriginalCallback(original, callback); + return this; + }, - function processLastException() { - var _lastExceptionStack = lastExceptionStack, - _lastArgs = lastArgs; - lastArgs = null; - lastExceptionStack = null; - lastException = null; - notifyHandlers.apply(null, [_lastExceptionStack, false].concat(_lastArgs)); - } - /** - * Reports an unhandled Error to TraceKit. - * @param {Error} ex - * @param {?boolean} rethrow If false, do not re-throw the exception. - * Only used for window.onerror to not cause an infinite loop of - * rethrowing. + /* + * Set the shouldSendCallback option + * + * @param {function} callback The callback to run which allows + * introspecting the blob before sending + * @return {Raven} */ + setShouldSendCallback: function(callback) { + var original = this._globalOptions.shouldSendCallback; + this._globalOptions.shouldSendCallback = keepOriginalCallback(original, callback); + return this; + }, + /** + * Override the default HTTP transport mechanism that transmits data + * to the Sentry server. + * + * @param {function} transport Function invoked instead of the default + * `makeRequest` handler. + * + * @return {Raven} + */ + setTransport: function(transport) { + this._globalOptions.transport = transport; - function report(ex, rethrow) { - var args = _slice.call(arguments, 1); + return this; + }, - if (lastExceptionStack) { - if (lastException === ex) { - return; // already caught by an inner catch block, ignore - } else { - processLastException(); + /* + * Get the latest raw exception that was captured by Raven. + * + * @return {error} + */ + lastException: function() { + return this._lastCapturedException; + }, + + /* + * Get the last event id + * + * @return {string} + */ + lastEventId: function() { + return this._lastEventId; + }, + + /* + * Determine if Raven is setup and ready to go. + * + * @return {boolean} + */ + isSetup: function() { + if (!this._hasJSON) return false; // needs JSON support + if (!this._globalServer) { + if (!this.ravenNotConfiguredError) { + this.ravenNotConfiguredError = true; + this._logDebug('error', 'Error: Raven has not been configured.'); } + return false; } + return true; + }, - var stack = TraceKit.computeStackTrace(ex); - lastExceptionStack = stack; - lastException = ex; - lastArgs = args; // If the stack trace is incomplete, wait for 2 seconds for - // slow slow IE to see if onerror occurs or not before reporting - // this exception; otherwise, we will end up with an incomplete - // stack trace + afterLoad: function() { + // TODO: remove window dependence? - setTimeout(function () { - if (lastException === ex) { - processLastException(); - } - }, stack.incomplete ? 2000 : 0); + // Attempt to initialize Raven on load + var RavenConfig = _window.RavenConfig; + if (RavenConfig) { + this.config(RavenConfig.dsn, RavenConfig.config).install(); + } + }, - if (rethrow !== false) { - throw ex; // re-throw to propagate to the top level (and cause window.onerror) + showReportDialog: function(options) { + if ( + !_document // doesn't work without a document (React native) + ) + return; + + options = options || {}; + + var lastEventId = options.eventId || this.lastEventId(); + if (!lastEventId) { + throw new RavenConfigError('Missing eventId'); } - } - report.subscribe = subscribe; - report.unsubscribe = unsubscribe; - report.uninstall = unsubscribeAll; - return report; -}(); -/** - * TraceKit.computeStackTrace: cross-browser stack traces in JavaScript - * - * Syntax: - * s = TraceKit.computeStackTrace(exception) // consider using TraceKit.report instead (see below) - * Returns: - * s.name - exception name - * s.message - exception message - * s.stack[i].url - JavaScript or HTML file URL - * s.stack[i].func - function name, or empty for anonymous functions (if guessing did not work) - * s.stack[i].args - arguments passed to the function, if known - * s.stack[i].line - line number, if known - * s.stack[i].column - column number, if known - * - * Supports: - * - Firefox: full stack trace with line numbers and unreliable column - * number on top frame - * - Opera 10: full stack trace with line and column numbers - * - Opera 9-: full stack trace with line numbers - * - Chrome: full stack trace with line and column numbers - * - Safari: line and column number for the topmost stacktrace element - * only - * - IE: no line numbers whatsoever - * - * Tries to guess names of anonymous functions by looking for assignments - * in the source code. In IE and Safari, we have to guess source file names - * by searching for function bodies inside all page scripts. This will not - * work for scripts that are loaded cross-domain. - * Here be dragons: some function names may be guessed incorrectly, and - * duplicate functions may be mismatched. - * - * TraceKit.computeStackTrace should only be used for tracing purposes. - * Logging of unhandled exceptions should be done with TraceKit.report, - * which builds on top of TraceKit.computeStackTrace and provides better - * IE support by utilizing the window.onerror event to retrieve information - * about the top of the stack. - * - * Note: In IE and Safari, no stack trace is recorded on the Error object, - * so computeStackTrace instead walks its *own* chain of callers. - * This means that: - * * in Safari, some methods may be missing from the stack trace; - * * in IE, the topmost function in the stack trace will always be the - * caller of computeStackTrace. - * - * This is okay for tracing (because you are likely to be calling - * computeStackTrace from the function you want to be the topmost element - * of the stack trace anyway), but not okay for logging unhandled - * exceptions (because your catch block will likely be far away from the - * inner function that actually caused the exception). - * - */ + var dsn = options.dsn || this._dsn; + if (!dsn) { + throw new RavenConfigError('Missing DSN'); + } + var encode = encodeURIComponent; + var qs = ''; + qs += '?eventId=' + encode(lastEventId); + qs += '&dsn=' + encode(dsn); -TraceKit.computeStackTrace = function computeStackTraceWrapper() { - // Contents of Exception in various browsers. - // - // SAFARI: - // ex.message = Can't find variable: qq - // ex.line = 59 - // ex.sourceId = 580238192 - // ex.sourceURL = http://... - // ex.expressionBeginOffset = 96 - // ex.expressionCaretOffset = 98 - // ex.expressionEndOffset = 98 - // ex.name = ReferenceError - // - // FIREFOX: - // ex.message = qq is not defined - // ex.fileName = http://... - // ex.lineNumber = 59 - // ex.columnNumber = 69 - // ex.stack = ...stack trace... (see the example below) - // ex.name = ReferenceError - // - // CHROME: - // ex.message = qq is not defined - // ex.name = ReferenceError - // ex.type = not_defined - // ex.arguments = ['aa'] - // ex.stack = ...stack trace... - // - // INTERNET EXPLORER: - // ex.message = ... - // ex.name = ReferenceError - // - // OPERA: - // ex.message = ...message... (see the example below) - // ex.name = ReferenceError - // ex.opera#sourceloc = 11 (pretty much useless, duplicates the info in ex.message) - // ex.stacktrace = n/a; see 'opera:config#UserPrefs|Exceptions Have Stacktrace' + var user = options.user || this._globalContext.user; + if (user) { + if (user.name) qs += '&name=' + encode(user.name); + if (user.email) qs += '&email=' + encode(user.email); + } - /** - * Computes stack trace information from the stack property. - * Chrome and Gecko use this property. - * @param {Error} ex - * @return {?Object.} Stack trace information. - */ - function computeStackTraceFromStackProp(ex) { - if (typeof ex.stack === 'undefined' || !ex.stack) return; - var chrome = /^\s*at (.*?) ?\(((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i, - gecko = /^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|\[native).*?|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i, - winjs = /^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i, - // Used to additionally parse URL/line/column from eval frames - geckoEval = /(\S+) line (\d+)(?: > eval line \d+)* > eval/i, - chromeEval = /\((\S*)(?::(\d+))(?::(\d+))\)/, - lines = ex.stack.split('\n'), - stack = [], - submatch, - parts, - element, - reference = /^(.*) is undefined$/.exec(ex.message); + var globalServer = this._getGlobalServer(this._parseDSN(dsn)); - for (var i = 0, j = lines.length; i < j; ++i) { - if (parts = chrome.exec(lines[i])) { - var isNative = parts[2] && parts[2].indexOf('native') === 0; // start of line + var script = _document.createElement('script'); + script.async = true; + script.src = globalServer + '/api/embed/error-page/' + qs; + (_document.head || _document.body).appendChild(script); + }, - var isEval = parts[2] && parts[2].indexOf('eval') === 0; // start of line + /**** Private functions ****/ + _ignoreNextOnError: function() { + var self = this; + this._ignoreOnError += 1; + setTimeout(function() { + // onerror should trigger before setTimeout + self._ignoreOnError -= 1; + }); + }, - if (isEval && (submatch = chromeEval.exec(parts[2]))) { - // throw out eval line/column and use top-most line/column number - parts[2] = submatch[1]; // url + _triggerEvent: function(eventType, options) { + // NOTE: `event` is a native browser thing, so let's avoid conflicting wiht it + var evt, key; - parts[3] = submatch[2]; // line + if (!this._hasDocument) return; - parts[4] = submatch[3]; // column - } + options = options || {}; - element = { - url: !isNative ? parts[2] : null, - func: parts[1] || UNKNOWN_FUNCTION, - args: isNative ? [parts[2]] : [], - line: parts[3] ? +parts[3] : null, - column: parts[4] ? +parts[4] : null - }; - } else if (parts = winjs.exec(lines[i])) { - element = { - url: parts[2], - func: parts[1] || UNKNOWN_FUNCTION, - args: [], - line: +parts[3], - column: parts[4] ? +parts[4] : null - }; - } else if (parts = gecko.exec(lines[i])) { - var isEval = parts[3] && parts[3].indexOf(' > eval') > -1; + eventType = 'raven' + eventType.substr(0, 1).toUpperCase() + eventType.substr(1); - if (isEval && (submatch = geckoEval.exec(parts[3]))) { - // throw out eval line/column and use top-most line number - parts[3] = submatch[1]; - parts[4] = submatch[2]; - parts[5] = null; // no column when eval - } else if (i === 0 && !parts[5] && typeof ex.columnNumber !== 'undefined') { - // FireFox uses this awesome columnNumber property for its top frame - // Also note, Firefox's column number is 0-based and everything else expects 1-based, - // so adding 1 - // NOTE: this hack doesn't work if top-most frame is eval - stack[0].column = ex.columnNumber + 1; - } + if (_document.createEvent) { + evt = _document.createEvent('HTMLEvents'); + evt.initEvent(eventType, true, true); + } else { + evt = _document.createEventObject(); + evt.eventType = eventType; + } - element = { - url: parts[3], - func: parts[1] || UNKNOWN_FUNCTION, - args: parts[2] ? parts[2].split(',') : [], - line: parts[4] ? +parts[4] : null, - column: parts[5] ? +parts[5] : null - }; - } else { - continue; + for (key in options) + if (hasKey(options, key)) { + evt[key] = options[key]; } - if (!element.func && element.line) { - element.func = UNKNOWN_FUNCTION; + if (_document.createEvent) { + // IE9 if standards + _document.dispatchEvent(evt); + } else { + // IE8 regardless of Quirks or Standards + // IE9 if quirks + try { + _document.fireEvent('on' + evt.eventType.toLowerCase(), evt); + } catch (e) { + // Do nothing } - - stack.push(element); - } - - if (!stack.length) { - return null; } + }, - return { - name: ex.name, - message: ex.message, - url: getLocationHref(), - stack: stack - }; - } /** - * Adds information about the first frame to incomplete stack traces. - * Safari and IE require this to get complete data on the first frame. - * @param {Object.} stackInfo Stack trace information from - * one of the compute* methods. - * @param {string} url The URL of the script that caused an error. - * @param {(number|string)} lineNo The line number of the script that - * caused an error. - * @param {string=} message The error generated by the browser, which - * hopefully contains the name of the object that caused the error. - * @return {boolean} Whether or not the stack information was - * augmented. - */ - - - function augmentStackTraceWithInitialElement(stackInfo, url, lineNo, message) { - var initial = { - url: url, - line: lineNo - }; + * Wraps addEventListener to capture UI breadcrumbs + * @param evtName the event name (e.g. "click") + * @returns {Function} + * @private + */ + _breadcrumbEventHandler: function(evtName) { + var self = this; + return function(evt) { + // reset keypress timeout; e.g. triggering a 'click' after + // a 'keypress' will reset the keypress debounce so that a new + // set of keypresses can be recorded + self._keypressTimeout = null; - if (initial.url && initial.line) { - stackInfo.incomplete = false; + // It's possible this handler might trigger multiple times for the same + // event (e.g. event propagation through node ancestors). Ignore if we've + // already captured the event. + if (self._lastCapturedEvent === evt) return; - if (!initial.func) { - initial.func = UNKNOWN_FUNCTION; - } + self._lastCapturedEvent = evt; - if (stackInfo.stack.length > 0) { - if (stackInfo.stack[0].url === initial.url) { - if (stackInfo.stack[0].line === initial.line) { - return false; // already in stack trace - } else if (!stackInfo.stack[0].line && stackInfo.stack[0].func === initial.func) { - stackInfo.stack[0].line = initial.line; - return false; - } - } + // try/catch both: + // - accessing evt.target (see getsentry/raven-js#838, #768) + // - `htmlTreeAsString` because it's complex, and just accessing the DOM incorrectly + // can throw an exception in some circumstances. + var target; + try { + target = htmlTreeAsString(evt.target); + } catch (e) { + target = ''; } - stackInfo.stack.unshift(initial); - stackInfo.partial = true; - return true; - } else { - stackInfo.incomplete = true; - } + self.captureBreadcrumb({ + category: 'ui.' + evtName, // e.g. ui.click, ui.input + message: target + }); + }; + }, - return false; - } /** - * Computes stack trace information by walking the arguments.caller - * chain at the time the exception occurred. This will cause earlier - * frames to be missed but is the only way to get any stack trace in - * Safari and IE. The top frame is restored by - * {@link augmentStackTraceWithInitialElement}. - * @param {Error} ex - * @return {?Object.} Stack trace information. - */ + * Wraps addEventListener to capture keypress UI events + * @returns {Function} + * @private + */ + _keypressEventHandler: function() { + var self = this, + debounceDuration = 1000; // milliseconds + // TODO: if somehow user switches keypress target before + // debounce timeout is triggered, we will only capture + // a single breadcrumb from the FIRST target (acceptable?) + return function(evt) { + var target; + try { + target = evt.target; + } catch (e) { + // just accessing event properties can throw an exception in some rare circumstances + // see: https://github.com/getsentry/raven-js/issues/838 + return; + } + var tagName = target && target.tagName; - function computeStackTraceByWalkingCallerChain(ex, depth) { - var functionName = /function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i, - stack = [], - funcs = {}, - recursion = false, - parts, - item; + // only consider keypress events on actual input elements + // this will disregard keypresses targeting body (e.g. tabbing + // through elements, hotkeys, etc) + if ( + !tagName || + (tagName !== 'INPUT' && tagName !== 'TEXTAREA' && !target.isContentEditable) + ) + return; - for (var curr = computeStackTraceByWalkingCallerChain.caller; curr && !recursion; curr = curr.caller) { - if (curr === computeStackTrace || curr === TraceKit.report) { - // console.log('skipping internal function'); - continue; + // record first keypress in a series, but ignore subsequent + // keypresses until debounce clears + var timeout = self._keypressTimeout; + if (!timeout) { + self._breadcrumbEventHandler('input')(evt); } + clearTimeout(timeout); + self._keypressTimeout = setTimeout(function() { + self._keypressTimeout = null; + }, debounceDuration); + }; + }, - item = { - url: null, - func: UNKNOWN_FUNCTION, - line: null, - column: null - }; + /** + * Captures a breadcrumb of type "navigation", normalizing input URLs + * @param to the originating URL + * @param from the target URL + * @private + */ + _captureUrlChange: function(from, to) { + var parsedLoc = parseUrl(this._location.href); + var parsedTo = parseUrl(to); + var parsedFrom = parseUrl(from); - if (curr.name) { - item.func = curr.name; - } else if (parts = functionName.exec(curr.toString())) { - item.func = parts[1]; - } + // because onpopstate only tells you the "new" (to) value of location.href, and + // not the previous (from) value, we need to track the value of the current URL + // state ourselves + this._lastHref = to; - if (typeof item.func === 'undefined') { - try { - item.func = parts.input.substring(0, parts.input.indexOf('{')); - } catch (e) {} - } + // Use only the path component of the URL if the URL matches the current + // document (almost all the time when using pushState) + if (parsedLoc.protocol === parsedTo.protocol && parsedLoc.host === parsedTo.host) + to = parsedTo.relative; + if (parsedLoc.protocol === parsedFrom.protocol && parsedLoc.host === parsedFrom.host) + from = parsedFrom.relative; - if (funcs['' + curr]) { - recursion = true; - } else { - funcs['' + curr] = true; + this.captureBreadcrumb({ + category: 'navigation', + data: { + to: to, + from: from } + }); + }, - stack.push(item); - } + _patchFunctionToString: function() { + var self = this; + self._originalFunctionToString = Function.prototype.toString; + // eslint-disable-next-line no-extend-native + Function.prototype.toString = function() { + if (typeof this === 'function' && this.__raven__) { + return self._originalFunctionToString.apply(this.__orig__, arguments); + } + return self._originalFunctionToString.apply(this, arguments); + }; + }, - if (depth) { - // console.log('depth is ' + depth); - // console.log('stack is ' + stack.length); - stack.splice(0, depth); + _unpatchFunctionToString: function() { + if (this._originalFunctionToString) { + // eslint-disable-next-line no-extend-native + Function.prototype.toString = this._originalFunctionToString; } + }, - var result = { - name: ex.name, - message: ex.message, - url: getLocationHref(), - stack: stack - }; - augmentStackTraceWithInitialElement(result, ex.sourceURL || ex.fileName, ex.line || ex.lineNumber, ex.message || ex.description); - return result; - } /** - * Computes a stack trace for an exception. - * @param {Error} ex - * @param {(string|number)=} depth - */ - + * Wrap timer functions and event targets to catch errors and provide + * better metadata. + */ + _instrumentTryCatch: function() { + var self = this; - function computeStackTrace(ex, depth) { - var stack = null; - depth = depth == null ? 0 : +depth; + var wrappedBuiltIns = self._wrappedBuiltIns; - try { - stack = computeStackTraceFromStackProp(ex); + function wrapTimeFn(orig) { + return function(fn, t) { + // preserve arity + // Make a copy of the arguments to prevent deoptimization + // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments + var args = new Array(arguments.length); + for (var i = 0; i < args.length; ++i) { + args[i] = arguments[i]; + } + var originalCallback = args[0]; + if (isFunction(originalCallback)) { + args[0] = self.wrap(originalCallback); + } - if (stack) { - return stack; - } - } catch (e) { - if (TraceKit.debug) { - throw e; - } + // IE < 9 doesn't support .call/.apply on setInterval/setTimeout, but it + // also supports only two arguments and doesn't care what this is, so we + // can just call the original function directly. + if (orig.apply) { + return orig.apply(this, args); + } else { + return orig(args[0], args[1]); + } + }; } - try { - stack = computeStackTraceByWalkingCallerChain(ex, depth + 1); + var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; - if (stack) { - return stack; - } - } catch (e) { - if (TraceKit.debug) { - throw e; + function wrapEventTarget(global) { + var proto = _window[global] && _window[global].prototype; + if (proto && proto.hasOwnProperty && proto.hasOwnProperty('addEventListener')) { + fill( + proto, + 'addEventListener', + function(orig) { + return function(evtName, fn, capture, secure) { + // preserve arity + try { + if (fn && fn.handleEvent) { + fn.handleEvent = self.wrap(fn.handleEvent); + } + } catch (err) { + // can sometimes get 'Permission denied to access property "handle Event' + } + + // More breadcrumb DOM capture ... done here and not in `_instrumentBreadcrumbs` + // so that we don't have more than one wrapper function + var before, clickHandler, keypressHandler; + + if ( + autoBreadcrumbs && + autoBreadcrumbs.dom && + (global === 'EventTarget' || global === 'Node') + ) { + // NOTE: generating multiple handlers per addEventListener invocation, should + // revisit and verify we can just use one (almost certainly) + clickHandler = self._breadcrumbEventHandler('click'); + keypressHandler = self._keypressEventHandler(); + before = function(evt) { + // need to intercept every DOM event in `before` argument, in case that + // same wrapped method is re-used for different events (e.g. mousemove THEN click) + // see #724 + if (!evt) return; + + var eventType; + try { + eventType = evt.type; + } catch (e) { + // just accessing event properties can throw an exception in some rare circumstances + // see: https://github.com/getsentry/raven-js/issues/838 + return; + } + if (eventType === 'click') return clickHandler(evt); + else if (eventType === 'keypress') return keypressHandler(evt); + }; + } + return orig.call( + this, + evtName, + self.wrap(fn, undefined, before), + capture, + secure + ); + }; + }, + wrappedBuiltIns + ); + fill( + proto, + 'removeEventListener', + function(orig) { + return function(evt, fn, capture, secure) { + try { + fn = fn && (fn.__raven_wrapper__ ? fn.__raven_wrapper__ : fn); + } catch (e) { + // ignore, accessing __raven_wrapper__ will throw in some Selenium environments + } + return orig.call(this, evt, fn, capture, secure); + }; + }, + wrappedBuiltIns + ); } } - return { - name: ex.name, - message: ex.message, - url: getLocationHref() - }; - } - - computeStackTrace.augmentStackTraceWithInitialElement = augmentStackTraceWithInitialElement; - computeStackTrace.computeStackTraceFromStackProp = computeStackTraceFromStackProp; - return computeStackTrace; -}(); - -var tracekit = TraceKit; - -var stringify_1 = createCommonjsModule(function (module, exports) { - /* - json-stringify-safe - Like JSON.stringify, but doesn't throw on circular references. - - Originally forked from https://github.com/isaacs/json-stringify-safe - version 5.0.1 on 3/8/2017 and modified to handle Errors serialization - and IE8 compatibility. Tests for this are in test/vendor. - - ISC license: https://github.com/isaacs/json-stringify-safe/blob/master/LICENSE - */ - exports = module.exports = stringify; - exports.getSerialize = serializer; - - function indexOf(haystack, needle) { - for (var i = 0; i < haystack.length; ++i) { - if (haystack[i] === needle) return i; - } - - return -1; - } + fill(_window, 'setTimeout', wrapTimeFn, wrappedBuiltIns); + fill(_window, 'setInterval', wrapTimeFn, wrappedBuiltIns); + if (_window.requestAnimationFrame) { + fill( + _window, + 'requestAnimationFrame', + function(orig) { + return function(cb) { + return orig(self.wrap(cb)); + }; + }, + wrappedBuiltIns + ); + } - function stringify(obj, replacer, spaces, cycleReplacer) { - return JSON.stringify(obj, serializer(replacer, cycleReplacer), spaces); - } // https://github.com/ftlabs/js-abbreviate/blob/fa709e5f139e7770a71827b1893f22418097fbda/index.js#L95-L106 + // event targets borrowed from bugsnag-js: + // https://github.com/bugsnag/bugsnag-js/blob/master/src/bugsnag.js#L666 + var eventTargets = [ + 'EventTarget', + 'Window', + 'Node', + 'ApplicationCache', + 'AudioTrackList', + 'ChannelMergerNode', + 'CryptoOperation', + 'EventSource', + 'FileReader', + 'HTMLUnknownElement', + 'IDBDatabase', + 'IDBRequest', + 'IDBTransaction', + 'KeyOperation', + 'MediaController', + 'MessagePort', + 'ModalWindow', + 'Notification', + 'SVGElementInstance', + 'Screen', + 'TextTrack', + 'TextTrackCue', + 'TextTrackList', + 'WebSocket', + 'WebSocketWorker', + 'Worker', + 'XMLHttpRequest', + 'XMLHttpRequestEventTarget', + 'XMLHttpRequestUpload' + ]; + for (var i = 0; i < eventTargets.length; i++) { + wrapEventTarget(eventTargets[i]); + } + }, + /** + * Instrument browser built-ins w/ breadcrumb capturing + * - XMLHttpRequests + * - DOM interactions (click/typing) + * - window.location changes + * - console + * + * Can be disabled or individually configured via the `autoBreadcrumbs` config option + */ + _instrumentBreadcrumbs: function() { + var self = this; + var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; - function stringifyError(value) { - var err = { - // These properties are implemented as magical getters and don't show up in for in - stack: value.stack, - message: value.message, - name: value.name - }; + var wrappedBuiltIns = self._wrappedBuiltIns; - for (var i in value) { - if (Object.prototype.hasOwnProperty.call(value, i)) { - err[i] = value[i]; + function wrapProp(prop, xhr) { + if (prop in xhr && isFunction(xhr[prop])) { + fill(xhr, prop, function(orig) { + return self.wrap(orig); + }); // intentionally don't track filled methods on XHR instances } } - return err; - } - - function serializer(replacer, cycleReplacer) { - var stack = []; - var keys = []; + if (autoBreadcrumbs.xhr && 'XMLHttpRequest' in _window) { + var xhrproto = _window.XMLHttpRequest && _window.XMLHttpRequest.prototype; + fill( + xhrproto, + 'open', + function(origOpen) { + return function(method, url) { + // preserve arity - if (cycleReplacer == null) { - cycleReplacer = function cycleReplacer(key, value) { - if (stack[0] === value) { - return '[Circular ~]'; - } + // if Sentry key appears in URL, don't capture + if (isString(url) && url.indexOf(self._globalKey) === -1) { + this.__raven_xhr = { + method: method, + url: url, + status_code: null + }; + } - return '[Circular ~.' + keys.slice(0, indexOf(stack, value)).join('.') + ']'; - }; - } + return origOpen.apply(this, arguments); + }; + }, + wrappedBuiltIns + ); + + fill( + xhrproto, + 'send', + function(origSend) { + return function() { + // preserve arity + var xhr = this; - return function (key, value) { - if (stack.length > 0) { - var thisPos = indexOf(stack, this); - ~thisPos ? stack.splice(thisPos + 1) : stack.push(this); - ~thisPos ? keys.splice(thisPos, Infinity, key) : keys.push(key); + function onreadystatechangeHandler() { + if (xhr.__raven_xhr && xhr.readyState === 4) { + try { + // touching statusCode in some platforms throws + // an exception + xhr.__raven_xhr.status_code = xhr.status; + } catch (e) { + /* do nothing */ + } - if (~indexOf(stack, value)) { - value = cycleReplacer.call(this, key, value); - } - } else { - stack.push(value); - } + self.captureBreadcrumb({ + type: 'http', + category: 'xhr', + data: xhr.__raven_xhr + }); + } + } - return replacer == null ? value instanceof Error ? stringifyError(value) : value : replacer.call(this, key, value); - }; - } -}); -var stringify_2 = stringify_1.getSerialize; + var props = ['onload', 'onerror', 'onprogress']; + for (var j = 0; j < props.length; j++) { + wrapProp(props[j], xhr); + } -function RavenConfigError(message) { - this.name = 'RavenConfigError'; - this.message = message; -} + if ('onreadystatechange' in xhr && isFunction(xhr.onreadystatechange)) { + fill( + xhr, + 'onreadystatechange', + function(orig) { + return self.wrap(orig, undefined, onreadystatechangeHandler); + } /* intentionally don't track this instrumentation */ + ); + } else { + // if onreadystatechange wasn't actually set by the page on this xhr, we + // are free to set our own and capture the breadcrumb + xhr.onreadystatechange = onreadystatechangeHandler; + } -RavenConfigError.prototype = new Error(); -RavenConfigError.prototype.constructor = RavenConfigError; -var configError = RavenConfigError; + return origSend.apply(this, arguments); + }; + }, + wrappedBuiltIns + ); + } -var wrapMethod = function wrapMethod(console, level, callback) { - var originalConsoleLevel = console[level]; - var originalConsole = console; + if (autoBreadcrumbs.xhr && supportsFetch()) { + fill( + _window, + 'fetch', + function(origFetch) { + return function() { + // preserve arity + // Make a copy of the arguments to prevent deoptimization + // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments + var args = new Array(arguments.length); + for (var i = 0; i < args.length; ++i) { + args[i] = arguments[i]; + } - if (!(level in console)) { - return; - } + var fetchInput = args[0]; + var method = 'GET'; + var url; - var sentryLevel = level === 'warn' ? 'warning' : level; + if (typeof fetchInput === 'string') { + url = fetchInput; + } else if ('Request' in _window && fetchInput instanceof _window.Request) { + url = fetchInput.url; + if (fetchInput.method) { + method = fetchInput.method; + } + } else { + url = '' + fetchInput; + } - console[level] = function () { - var args = [].slice.call(arguments); - var msg = utils.safeJoin(args, ' '); - var data = { - level: sentryLevel, - logger: 'console', - extra: { - arguments: args - } - }; + // if Sentry key appears in URL, don't capture, as it's our own request + if (url.indexOf(self._globalKey) !== -1) { + return origFetch.apply(this, args); + } - if (level === 'assert') { - if (args[0] === false) { - // Default browsers message - msg = 'Assertion failed: ' + (utils.safeJoin(args.slice(1), ' ') || 'console.assert'); - data.extra.arguments = args.slice(1); - callback && callback(msg, data); - } - } else { - callback && callback(msg, data); - } // this fails for some browsers. :( + if (args[1] && args[1].method) { + method = args[1].method; + } + var fetchData = { + method: method, + url: url, + status_code: null + }; - if (originalConsoleLevel) { - // IE9 doesn't allow calling apply on console functions directly - // See: https://stackoverflow.com/questions/5472938/does-ie9-support-console-log-and-is-it-a-real-function#answer-5473193 - Function.prototype.apply.call(originalConsoleLevel, originalConsole, args); + return origFetch + .apply(this, args) + .then(function(response) { + fetchData.status_code = response.status; + + self.captureBreadcrumb({ + type: 'http', + category: 'fetch', + data: fetchData + }); + + return response; + }) + ['catch'](function(err) { + // if there is an error performing the request + self.captureBreadcrumb({ + type: 'http', + category: 'fetch', + data: fetchData, + level: 'error' + }); + + throw err; + }); + }; + }, + wrappedBuiltIns + ); } - }; -}; -var console$1 = { - wrapMethod: wrapMethod -}; + // Capture breadcrumbs from any click that is unhandled / bubbled up all the way + // to the document. Do this before we instrument addEventListener. + if (autoBreadcrumbs.dom && this._hasDocument) { + if (_document.addEventListener) { + _document.addEventListener('click', self._breadcrumbEventHandler('click'), false); + _document.addEventListener('keypress', self._keypressEventHandler(), false); + } else if (_document.attachEvent) { + // IE8 Compatibility + _document.attachEvent('onclick', self._breadcrumbEventHandler('click')); + _document.attachEvent('onkeypress', self._keypressEventHandler()); + } + } -/*global XDomainRequest:false */ + // record navigation (URL) changes + // NOTE: in Chrome App environment, touching history.pushState, *even inside + // a try/catch block*, will cause Chrome to output an error to console.error + // borrowed from: https://github.com/angular/angular.js/pull/13945/files + var chrome = _window.chrome; + var isChromePackagedApp = chrome && chrome.app && chrome.app.runtime; + var hasPushAndReplaceState = + !isChromePackagedApp && + _window.history && + history.pushState && + history.replaceState; + if (autoBreadcrumbs.location && hasPushAndReplaceState) { + // TODO: remove onpopstate handler on uninstall() + var oldOnPopState = _window.onpopstate; + _window.onpopstate = function() { + var currentHref = self._location.href; + self._captureUrlChange(self._lastHref, currentHref); -var isError = utils.isError; -var isObject = utils.isObject; -var isErrorEvent = utils.isErrorEvent; -var isUndefined = utils.isUndefined; -var isFunction = utils.isFunction; -var isString = utils.isString; -var isArray = utils.isArray; -var isEmptyObject = utils.isEmptyObject; -var each = utils.each; -var objectMerge = utils.objectMerge; -var truncate = utils.truncate; -var objectFrozen = utils.objectFrozen; -var hasKey = utils.hasKey; -var joinRegExp = utils.joinRegExp; -var urlencode = utils.urlencode; -var uuid4 = utils.uuid4; -var htmlTreeAsString = utils.htmlTreeAsString; -var isSameException = utils.isSameException; -var isSameStacktrace = utils.isSameStacktrace; -var parseUrl = utils.parseUrl; -var fill = utils.fill; -var supportsFetch = utils.supportsFetch; -var wrapConsoleMethod = console$1.wrapMethod; -var dsnKeys = 'source protocol user pass host port path'.split(' '); -var dsnPattern = /^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/; + if (oldOnPopState) { + return oldOnPopState.apply(this, arguments); + } + }; -function now() { - return +new Date(); -} // This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) + var historyReplacementFunction = function(origHistFunction) { + // note history.pushState.length is 0; intentionally not declaring + // params to preserve 0 arity + return function(/* state, title, url */) { + var url = arguments.length > 2 ? arguments[2] : undefined; + // url argument is optional + if (url) { + // coerce to string (this is what pushState does) + self._captureUrlChange(self._lastHref, url + ''); + } -var _window$1 = typeof window !== 'undefined' ? window : typeof commonjsGlobal !== 'undefined' ? commonjsGlobal : typeof self !== 'undefined' ? self : {}; + return origHistFunction.apply(this, arguments); + }; + }; -var _document = _window$1.document; -var _navigator = _window$1.navigator; + fill(history, 'pushState', historyReplacementFunction, wrappedBuiltIns); + fill(history, 'replaceState', historyReplacementFunction, wrappedBuiltIns); + } -function keepOriginalCallback(original, callback) { - return isFunction(callback) ? function (data) { - return callback(data, original); - } : callback; -} // First, check for JSON support -// If there is no JSON, we no-op the core features of Raven -// since JSON is required to encode the payload + if (autoBreadcrumbs.console && 'console' in _window && console.log) { + // console + var consoleMethodCallback = function(msg, data) { + self.captureBreadcrumb({ + message: msg, + level: data.level, + category: 'console' + }); + }; + each(['debug', 'info', 'warn', 'error', 'log'], function(_, level) { + wrapConsoleMethod(console, level, consoleMethodCallback); + }); + } + }, -function Raven$1() { - this._hasJSON = !!(_typeof(JSON) === 'object' && JSON.stringify); // Raven can run in contexts where there's no document (react-native) + _restoreBuiltIns: function() { + // restore any wrapped builtins + var builtin; + while (this._wrappedBuiltIns.length) { + builtin = this._wrappedBuiltIns.shift(); - this._hasDocument = !isUndefined(_document); - this._hasNavigator = !isUndefined(_navigator); - this._lastCapturedException = null; - this._lastData = null; - this._lastEventId = null; - this._globalServer = null; - this._globalKey = null; - this._globalProject = null; - this._globalContext = {}; - this._globalOptions = { - // SENTRY_RELEASE can be injected by https://github.com/getsentry/sentry-webpack-plugin - release: _window$1.SENTRY_RELEASE && _window$1.SENTRY_RELEASE.id, - logger: 'javascript', - ignoreErrors: [], - ignoreUrls: [], - whitelistUrls: [], - includePaths: [], - headers: null, - collectWindowErrors: true, - maxMessageLength: 0, - // By default, truncates URL values to 250 chars - maxUrlLength: 250, - stackTraceLimit: 50, - autoBreadcrumbs: true, - instrument: true, - sampleRate: 1 - }; - this._fetchDefaults = { - method: 'POST', - keepalive: true, - referrerPolicy: 'origin' - }; - this._ignoreOnError = 0; - this._isRavenInstalled = false; - this._originalErrorStackTraceLimit = Error.stackTraceLimit; // capture references to window.console *and* all its methods first - // before the console plugin has a chance to monkey patch + var obj = builtin[0], + name = builtin[1], + orig = builtin[2]; - this._originalConsole = _window$1.console || {}; - this._originalConsoleMethods = {}; - this._plugins = []; - this._startTime = now(); - this._wrappedBuiltIns = []; - this._breadcrumbs = []; - this._lastCapturedEvent = null; - this._keypressTimeout; - this._location = _window$1.location; - this._lastHref = this._location && this._location.href; + obj[name] = orig; + } + }, + + _restoreConsole: function() { + // eslint-disable-next-line guard-for-in + for (var method in this._originalConsoleMethods) { + this._originalConsole[method] = this._originalConsoleMethods[method]; + } + }, - this._resetBackoff(); // eslint-disable-next-line guard-for-in + _drainPlugins: function() { + var self = this; + // FIX ME TODO + each(this._plugins, function(_, plugin) { + var installer = plugin[0]; + var args = plugin[1]; + installer.apply(self, [self].concat(args)); + }); + }, - for (var method in this._originalConsole) { - this._originalConsoleMethods[method] = this._originalConsole[method]; - } -} -/* - * The core Raven singleton - * - * @this {Raven} - */ + _parseDSN: function(str) { + var m = dsnPattern.exec(str), + dsn = {}, + i = 7; + try { + while (i--) dsn[dsnKeys[i]] = m[i] || ''; + } catch (e) { + throw new RavenConfigError('Invalid DSN: ' + str); + } -Raven$1.prototype = { - // Hardcode version string so that raven source can be loaded directly via - // webpack (using a build step causes webpack #1617). Grunt verifies that - // this value matches package.json during build. - // See: https://github.com/getsentry/raven-js/issues/465 - VERSION: '3.22.2', - debug: false, - TraceKit: tracekit, - // alias to TraceKit + if (dsn.pass && !this._globalOptions.allowSecretKey) { + throw new RavenConfigError( + 'Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key' + ); + } - /* - * Configure Raven with a DSN and extra options - * - * @param {string} dsn The public Sentry DSN - * @param {object} options Set of global options [optional] - * @return {Raven} - */ - config: function config(dsn, options) { - var self = this; + return dsn; + }, - if (self._globalServer) { - this._logDebug('error', 'Error: Raven has already been configured'); + _getGlobalServer: function(uri) { + // assemble the endpoint from the uri pieces + var globalServer = '//' + uri.host + (uri.port ? ':' + uri.port : ''); - return self; + if (uri.protocol) { + globalServer = uri.protocol + ':' + globalServer; } + return globalServer; + }, - if (!dsn) return self; - var globalOptions = self._globalOptions; // merge in options - - if (options) { - each(options, function (key, value) { - // tags and extra are special and need to be put into context - if (key === 'tags' || key === 'extra' || key === 'user') { - self._globalContext[key] = value; - } else { - globalOptions[key] = value; - } - }); + _handleOnErrorStackInfo: function() { + // if we are intentionally ignoring errors via onerror, bail out + if (!this._ignoreOnError) { + this._handleStackInfo.apply(this, arguments); } + }, - self.setDSN(dsn); // "Script error." is hard coded into browsers for errors that it can't read. - // this is the result of a script being pulled in from an external domain and CORS. + _handleStackInfo: function(stackInfo, options) { + var frames = this._prepareFrames(stackInfo, options); - globalOptions.ignoreErrors.push(/^Script error\.?$/); - globalOptions.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/); // join regexp rules into one big rule + this._triggerEvent('handle', { + stackInfo: stackInfo, + options: options + }); - globalOptions.ignoreErrors = joinRegExp(globalOptions.ignoreErrors); - globalOptions.ignoreUrls = globalOptions.ignoreUrls.length ? joinRegExp(globalOptions.ignoreUrls) : false; - globalOptions.whitelistUrls = globalOptions.whitelistUrls.length ? joinRegExp(globalOptions.whitelistUrls) : false; - globalOptions.includePaths = joinRegExp(globalOptions.includePaths); - globalOptions.maxBreadcrumbs = Math.max(0, Math.min(globalOptions.maxBreadcrumbs || 100, 100)); // default and hard limit is 100 + this._processException( + stackInfo.name, + stackInfo.message, + stackInfo.url, + stackInfo.lineno, + frames, + options + ); + }, - var autoBreadcrumbDefaults = { - xhr: true, - console: true, - dom: true, - location: true, - sentry: true - }; - var autoBreadcrumbs = globalOptions.autoBreadcrumbs; + _prepareFrames: function(stackInfo, options) { + var self = this; + var frames = []; + if (stackInfo.stack && stackInfo.stack.length) { + each(stackInfo.stack, function(i, stack) { + var frame = self._normalizeFrame(stack, stackInfo.url); + if (frame) { + frames.push(frame); + } + }); - if ({}.toString.call(autoBreadcrumbs) === '[object Object]') { - autoBreadcrumbs = objectMerge(autoBreadcrumbDefaults, autoBreadcrumbs); - } else if (autoBreadcrumbs !== false) { - autoBreadcrumbs = autoBreadcrumbDefaults; + // e.g. frames captured via captureMessage throw + if (options && options.trimHeadFrames) { + for (var j = 0; j < options.trimHeadFrames && j < frames.length; j++) { + frames[j].in_app = false; + } + } } + frames = frames.slice(0, this._globalOptions.stackTraceLimit); + return frames; + }, - globalOptions.autoBreadcrumbs = autoBreadcrumbs; - var instrumentDefaults = { - tryCatch: true + _normalizeFrame: function(frame, stackInfoUrl) { + // normalize the frames data + var normalized = { + filename: frame.url, + lineno: frame.line, + colno: frame.column, + function: frame.func || '?' }; - var instrument = globalOptions.instrument; - if ({}.toString.call(instrument) === '[object Object]') { - instrument = objectMerge(instrumentDefaults, instrument); - } else if (instrument !== false) { - instrument = instrumentDefaults; + // Case when we don't have any information about the error + // E.g. throwing a string or raw object, instead of an `Error` in Firefox + // Generating synthetic error doesn't add any value here + // + // We should probably somehow let a user know that they should fix their code + if (!frame.url) { + normalized.filename = stackInfoUrl; // fallback to whole stacks url from onerror handler } - globalOptions.instrument = instrument; - tracekit.collectWindowErrors = !!globalOptions.collectWindowErrors; // return for chaining + normalized.in_app = !// determine if an exception came from outside of our app + // first we check the global includePaths list. + ( + (!!this._globalOptions.includePaths.test && + !this._globalOptions.includePaths.test(normalized.filename)) || + // Now we check for fun, if the function name is Raven or TraceKit + /(Raven|TraceKit)\./.test(normalized['function']) || + // finally, we do a last ditch effort and check for raven.min.js + /raven\.(min\.)?js$/.test(normalized.filename) + ); - return self; + return normalized; }, - /* - * Installs a global window.onerror error handler - * to capture and report uncaught exceptions. - * At this point, install() is required to be called due - * to the way TraceKit is set up. - * - * @return {Raven} - */ - install: function install() { - var self = this; - - if (self.isSetup() && !self._isRavenInstalled) { - tracekit.report.subscribe(function () { - self._handleOnErrorStackInfo.apply(self, arguments); - }); - - self._patchFunctionToString(); + _processException: function(type, message, fileurl, lineno, frames, options) { + var prefixedMessage = (type ? type + ': ' : '') + (message || ''); + if ( + !!this._globalOptions.ignoreErrors.test && + (this._globalOptions.ignoreErrors.test(message) || + this._globalOptions.ignoreErrors.test(prefixedMessage)) + ) { + return; + } - if (self._globalOptions.instrument && self._globalOptions.instrument.tryCatch) { - self._instrumentTryCatch(); - } + var stacktrace; - if (self._globalOptions.autoBreadcrumbs) self._instrumentBreadcrumbs(); // Install all of the plugins + if (frames && frames.length) { + fileurl = frames[0].filename || fileurl; + // Sentry expects frames oldest to newest + // and JS sends them as newest to oldest + frames.reverse(); + stacktrace = {frames: frames}; + } else if (fileurl) { + stacktrace = { + frames: [ + { + filename: fileurl, + lineno: lineno, + in_app: true + } + ] + }; + } - self._drainPlugins(); + if ( + !!this._globalOptions.ignoreUrls.test && + this._globalOptions.ignoreUrls.test(fileurl) + ) { + return; + } - self._isRavenInstalled = true; + if ( + !!this._globalOptions.whitelistUrls.test && + !this._globalOptions.whitelistUrls.test(fileurl) + ) { + return; } - Error.stackTraceLimit = self._globalOptions.stackTraceLimit; - return this; + var data = objectMerge( + { + // sentry.interfaces.Exception + exception: { + values: [ + { + type: type, + value: message, + stacktrace: stacktrace + } + ] + }, + culprit: fileurl + }, + options + ); + + // Fire away! + this._send(data); }, - /* - * Set the DSN (can be called multiple time unlike config) - * - * @param {string} dsn The public Sentry DSN - */ - setDSN: function setDSN(dsn) { - var self = this, - uri = self._parseDSN(dsn), - lastSlash = uri.path.lastIndexOf('/'), - path = uri.path.substr(1, lastSlash); + _trimPacket: function(data) { + // For now, we only want to truncate the two different messages + // but this could/should be expanded to just trim everything + var max = this._globalOptions.maxMessageLength; + if (data.message) { + data.message = truncate(data.message, max); + } + if (data.exception) { + var exception = data.exception.values[0]; + exception.value = truncate(exception.value, max); + } - self._dsn = dsn; - self._globalKey = uri.user; - self._globalSecret = uri.pass && uri.pass.substr(1); - self._globalProject = uri.path.substr(lastSlash + 1); - self._globalServer = self._getGlobalServer(uri); - self._globalEndpoint = self._globalServer + '/' + path + 'api/' + self._globalProject + '/store/'; // Reset backoff state since we may be pointing at a - // new project/server + var request = data.request; + if (request) { + if (request.url) { + request.url = truncate(request.url, this._globalOptions.maxUrlLength); + } + if (request.Referer) { + request.Referer = truncate(request.Referer, this._globalOptions.maxUrlLength); + } + } - this._resetBackoff(); + if (data.breadcrumbs && data.breadcrumbs.values) + this._trimBreadcrumbs(data.breadcrumbs); + + return data; }, - /* - * Wrap code within a context so Raven can capture errors - * reliably across domains that is executed immediately. - * - * @param {object} options A specific set of options for this context [optional] - * @param {function} func The callback to be immediately executed within the context - * @param {array} args An array of arguments to be called with the callback [optional] - */ - context: function context(options, func, args) { - if (isFunction(options)) { - args = func || []; - func = options; - options = undefined; - } + /** + * Truncate breadcrumb values (right now just URLs) + */ + _trimBreadcrumbs: function(breadcrumbs) { + // known breadcrumb properties with urls + // TODO: also consider arbitrary prop values that start with (https?)?:// + var urlProps = ['to', 'from', 'url'], + urlProp, + crumb, + data; - return this.wrap(options, func).apply(this, args); + for (var i = 0; i < breadcrumbs.values.length; ++i) { + crumb = breadcrumbs.values[i]; + if ( + !crumb.hasOwnProperty('data') || + !isObject(crumb.data) || + objectFrozen(crumb.data) + ) + continue; + + data = objectMerge({}, crumb.data); + for (var j = 0; j < urlProps.length; ++j) { + urlProp = urlProps[j]; + if (data.hasOwnProperty(urlProp) && data[urlProp]) { + data[urlProp] = truncate(data[urlProp], this._globalOptions.maxUrlLength); + } + } + breadcrumbs.values[i].data = data; + } }, - /* - * Wrap code within a context and returns back a new function to be executed - * - * @param {object} options A specific set of options for this context [optional] - * @param {function} func The function to be wrapped in a new context - * @param {function} func A function to call before the try/catch wrapper [optional, private] - * @return {function} The newly wrapped functions with a context - */ - wrap: function wrap(options, func, _before) { - var self = this; // 1 argument has been passed, and it's not a function - // so just return it + _getHttpData: function() { + if (!this._hasNavigator && !this._hasDocument) return; + var httpData = {}; - if (isUndefined(func) && !isFunction(options)) { - return options; - } // options is optional + if (this._hasNavigator && _navigator.userAgent) { + httpData.headers = { + 'User-Agent': navigator.userAgent + }; + } + // Check in `window` instead of `document`, as we may be in ServiceWorker environment + if (_window.location && _window.location.href) { + httpData.url = _window.location.href; + } - if (isFunction(options)) { - func = options; - options = undefined; - } // At this point, we've passed along 2 arguments, and the second one - // is not a function either, so we'll just return the second argument. + if (this._hasDocument && _document.referrer) { + if (!httpData.headers) httpData.headers = {}; + httpData.headers.Referer = _document.referrer; + } + return httpData; + }, - if (!isFunction(func)) { - return func; - } // We don't wanna wrap it twice! + _resetBackoff: function() { + this._backoffDuration = 0; + this._backoffStart = null; + }, + _shouldBackoff: function() { + return this._backoffDuration && now() - this._backoffStart < this._backoffDuration; + }, - try { - if (func.__raven__) { - return func; - } // If this has already been wrapped in the past, return that + /** + * Returns true if the in-process data payload matches the signature + * of the previously-sent data + * + * NOTE: This has to be done at this level because TraceKit can generate + * data from window.onerror WITHOUT an exception object (IE8, IE9, + * other old browsers). This can take the form of an "exception" + * data object with a single frame (derived from the onerror args). + */ + _isRepeatData: function(current) { + var last = this._lastData; + if ( + !last || + current.message !== last.message || // defined for captureMessage + current.culprit !== last.culprit // defined for captureException/onerror + ) + return false; - if (func.__raven_wrapper__) { - return func.__raven_wrapper__; - } - } catch (e) { - // Just accessing custom props in some Selenium environments - // can cause a "Permission denied" exception (see raven-js#495). - // Bail on wrapping and return the function as-is (defers to window.onerror). - return func; + // Stacktrace interface (i.e. from captureMessage) + if (current.stacktrace || last.stacktrace) { + return isSameStacktrace(current.stacktrace, last.stacktrace); + } else if (current.exception || last.exception) { + // Exception interface (i.e. from captureException/onerror) + return isSameException(current.exception, last.exception); } - function wrapped() { - var args = [], - i = arguments.length, - deep = !options || options && options.deep !== false; - - if (_before && isFunction(_before)) { - _before.apply(this, arguments); - } // Recursively wrap all of a function's arguments that are - // functions themselves. + return true; + }, + _setBackoffState: function(request) { + // If we are already in a backoff state, don't change anything + if (this._shouldBackoff()) { + return; + } - while (i--) { - args[i] = deep ? self.wrap(options, arguments[i]) : arguments[i]; - } + var status = request.status; - try { - // Attempt to invoke user-land function - // NOTE: If you are a Sentry user, and you are seeing this stack frame, it - // means Raven caught an error invoking your application code. This is - // expected behavior and NOT indicative of a bug with Raven.js. - return func.apply(this, args); - } catch (e) { - self._ignoreNextOnError(); + // 400 - project_id doesn't exist or some other fatal + // 401 - invalid/revoked dsn + // 429 - too many requests + if (!(status === 400 || status === 401 || status === 429)) return; - self.captureException(e, options); - throw e; + var retry; + try { + // If Retry-After is not in Access-Control-Expose-Headers, most + // browsers will throw an exception trying to access it + if (supportsFetch()) { + retry = request.headers.get('Retry-After'); + } else { + retry = request.getResponseHeader('Retry-After'); } - } // copy over properties of the old function - - for (var property in func) { - if (hasKey(func, property)) { - wrapped[property] = func[property]; - } + // Retry-After is returned in seconds + retry = parseInt(retry, 10) * 1000; + } catch (e) { + /* eslint no-empty:0 */ } - wrapped.prototype = func.prototype; - func.__raven_wrapper__ = wrapped; // Signal that this function has been wrapped/filled already - // for both debugging and to prevent it to being wrapped/filled twice + this._backoffDuration = retry + ? // If Sentry server returned a Retry-After value, use it + retry + : // Otherwise, double the last backoff duration (starts at 1 sec) + this._backoffDuration * 2 || 1000; - wrapped.__raven__ = true; - wrapped.__orig__ = func; - return wrapped; + this._backoffStart = now(); }, - /* - * Uninstalls the global error handler. - * - * @return {Raven} - */ - uninstall: function uninstall() { - tracekit.report.uninstall(); + _send: function(data) { + var globalOptions = this._globalOptions; - this._unpatchFunctionToString(); + var baseData = { + project: this._globalProject, + logger: globalOptions.logger, + platform: 'javascript' + }, + httpData = this._getHttpData(); - this._restoreBuiltIns(); + if (httpData) { + baseData.request = httpData; + } - this._restoreConsole(); + // HACK: delete `trimHeadFrames` to prevent from appearing in outbound payload + if (data.trimHeadFrames) delete data.trimHeadFrames; - Error.stackTraceLimit = this._originalErrorStackTraceLimit; - this._isRavenInstalled = false; - return this; - }, + data = objectMerge(baseData, data); - /* - * Manually capture an exception and send it over to Sentry - * - * @param {error} ex An exception to be logged - * @param {object} options A specific set of options for this error [optional] - * @return {Raven} - */ - captureException: function captureException(ex, options) { - options = objectMerge({ - trimHeadFrames: 0 - }, options ? options : {}); // Cases for sending ex as a message, rather than an exception + // Merge in the tags and extra separately since objectMerge doesn't handle a deep merge + data.tags = objectMerge(objectMerge({}, this._globalContext.tags), data.tags); + data.extra = objectMerge(objectMerge({}, this._globalContext.extra), data.extra); - var isNotError = !isError(ex); - var isNotErrorEvent = !isErrorEvent(ex); - var isErrorEventWithoutError = isErrorEvent(ex) && !ex.error; + // Send along our own collected metadata with extra + data.extra['session:duration'] = now() - this._startTime; - if (isNotError && isNotErrorEvent || isErrorEventWithoutError) { - return this.captureMessage(ex, objectMerge(options, { - stacktrace: true, - // if we fall back to captureMessage, default to attempting a new trace - trimHeadFrames: options.trimHeadFrames + 1 - })); - } // Get actual Error from ErrorEvent + if (this._breadcrumbs && this._breadcrumbs.length > 0) { + // intentionally make shallow copy so that additions + // to breadcrumbs aren't accidentally sent in this request + data.breadcrumbs = { + values: [].slice.call(this._breadcrumbs, 0) + }; + } + if (this._globalContext.user) { + // sentry.interfaces.User + data.user = this._globalContext.user; + } - if (isErrorEvent(ex)) ex = ex.error; // Store the raw exception object for potential debugging and introspection + // Include the environment if it's defined in globalOptions + if (globalOptions.environment) data.environment = globalOptions.environment; - this._lastCapturedException = ex; // TraceKit.report will re-raise any exception passed to it, - // which means you have to wrap it in try/catch. Instead, we - // can wrap it here and only re-raise if TraceKit.report - // raises an exception different from the one we asked to - // report on. + // Include the release if it's defined in globalOptions + if (globalOptions.release) data.release = globalOptions.release; - try { - var stack = tracekit.computeStackTrace(ex); + // Include server_name if it's defined in globalOptions + if (globalOptions.serverName) data.server_name = globalOptions.serverName; - this._handleStackInfo(stack, options); - } catch (ex1) { - if (ex !== ex1) { - throw ex1; + data = this._sanitizeData(data); + + // Cleanup empty properties before sending them to the server + Object.keys(data).forEach(function(key) { + if (data[key] == null || data[key] === '' || isEmptyObject(data[key])) { + delete data[key]; } + }); + + if (isFunction(globalOptions.dataCallback)) { + data = globalOptions.dataCallback(data) || data; } - return this; - }, + // Why?????????? + if (!data || isEmptyObject(data)) { + return; + } - /* - * Manually send a message to Sentry - * - * @param {string} msg A plain message to be captured in Sentry - * @param {object} options A specific set of options for this message [optional] - * @return {Raven} - */ - captureMessage: function captureMessage(msg, options) { - // config() automagically converts ignoreErrors from a list to a RegExp so we need to test for an - // early call; we'll error on the side of logging anything called before configuration since it's - // probably something you should see: - if (!!this._globalOptions.ignoreErrors.test && this._globalOptions.ignoreErrors.test(msg)) { + // Check if the request should be filtered or not + if ( + isFunction(globalOptions.shouldSendCallback) && + !globalOptions.shouldSendCallback(data) + ) { return; } - options = options || {}; - var data = objectMerge({ - message: msg + '' // Make sure it's actually a string + // Backoff state: Sentry server previously responded w/ an error (e.g. 429 - too many requests), + // so drop requests until "cool-off" period has elapsed. + if (this._shouldBackoff()) { + this._logDebug('warn', 'Raven dropped error due to backoff: ', data); + return; + } - }, options); - var ex; // Generate a "synthetic" stack trace from this point. - // NOTE: If you are a Sentry user, and you are seeing this stack frame, it is NOT indicative - // of a bug with Raven.js. Sentry generates synthetic traces either by configuration, - // or if it catches a thrown object without a "stack" property. + if (typeof globalOptions.sampleRate === 'number') { + if (Math.random() < globalOptions.sampleRate) { + this._sendProcessedPayload(data); + } + } else { + this._sendProcessedPayload(data); + } + }, - try { - throw new Error(msg); - } catch (ex1) { - ex = ex1; - } // null exception name so `Error` isn't prefixed to msg + _sanitizeData: function(data) { + return sanitize(data, this._globalOptions.sanitizeKeys); + }, + + _getUuid: function() { + return uuid4(); + }, + _sendProcessedPayload: function(data, callback) { + var self = this; + var globalOptions = this._globalOptions; - ex.name = null; - var stack = tracekit.computeStackTrace(ex); // stack[0] is `throw new Error(msg)` call itself, we are interested in the frame that was just before that, stack[1] + if (!this.isSetup()) return; - var initialCall = isArray(stack.stack) && stack.stack[1]; - var fileurl = initialCall && initialCall.url || ''; + // Try and clean up the packet before sending by truncating long values + data = this._trimPacket(data); - if (!!this._globalOptions.ignoreUrls.test && this._globalOptions.ignoreUrls.test(fileurl)) { + // ideally duplicate error testing should occur *before* dataCallback/shouldSendCallback, + // but this would require copying an un-truncated copy of the data packet, which can be + // arbitrarily deep (extra_data) -- could be worthwhile? will revisit + if (!this._globalOptions.allowDuplicates && this._isRepeatData(data)) { + this._logDebug('warn', 'Raven dropped repeat event: ', data); return; } - if (!!this._globalOptions.whitelistUrls.test && !this._globalOptions.whitelistUrls.test(fileurl)) { - return; + // Send along an event_id if not explicitly passed. + // This event_id can be used to reference the error within Sentry itself. + // Set lastEventId after we know the error should actually be sent + this._lastEventId = data.event_id || (data.event_id = this._getUuid()); + + // Store outbound payload after trim + this._lastData = data; + + this._logDebug('debug', 'Raven about to send:', data); + + var auth = { + sentry_version: '7', + sentry_client: 'raven-js/' + this.VERSION, + sentry_key: this._globalKey + }; + + if (this._globalSecret) { + auth.sentry_secret = this._globalSecret; } - if (this._globalOptions.stacktrace || options && options.stacktrace) { - options = objectMerge({ - // fingerprint on msg, not stack trace (legacy behavior, could be - // revisited) - fingerprint: msg, - // since we know this is a synthetic trace, the top N-most frames - // MUST be from Raven.js, so mark them as in_app later by setting - // trimHeadFrames - trimHeadFrames: (options.trimHeadFrames || 0) + 1 - }, options); + var exception = data.exception && data.exception.values[0]; - var frames = this._prepareFrames(stack, options); + // only capture 'sentry' breadcrumb is autoBreadcrumbs is truthy + if ( + this._globalOptions.autoBreadcrumbs && + this._globalOptions.autoBreadcrumbs.sentry + ) { + this.captureBreadcrumb({ + category: 'sentry', + message: exception + ? (exception.type ? exception.type + ': ' : '') + exception.value + : data.message, + event_id: data.event_id, + level: data.level || 'error' // presume error unless specified + }); + } - data.stacktrace = { - // Sentry expects frames oldest to newest - frames: frames.reverse() - }; - } // Fire away! + var url = this._globalEndpoint; + (globalOptions.transport || this._makeRequest).call(this, { + url: url, + auth: auth, + data: data, + options: globalOptions, + onSuccess: function success() { + self._resetBackoff(); + self._triggerEvent('success', { + data: data, + src: url + }); + callback && callback(); + }, + onError: function failure(error) { + self._logDebug('error', 'Raven transport failed to send: ', error); - this._send(data); + if (error.request) { + self._setBackoffState(error.request); + } - return this; + self._triggerEvent('failure', { + data: data, + src: url + }); + error = error || new Error('Raven send failed (no additional details provided)'); + callback && callback(error); + } + }); }, - captureBreadcrumb: function captureBreadcrumb(obj) { - var crumb = objectMerge({ - timestamp: now() / 1000 - }, obj); - if (isFunction(this._globalOptions.breadcrumbCallback)) { - var result = this._globalOptions.breadcrumbCallback(crumb); + _makeRequest: function(opts) { + // Auth is intentionally sent as part of query string (NOT as custom HTTP header) to avoid preflight CORS requests + var url = opts.url + '?' + urlencode(opts.auth); - if (isObject(result) && !isEmptyObject(result)) { - crumb = result; - } else if (result === false) { - return this; - } - } + var evaluatedHeaders = null; + var evaluatedFetchParameters = {}; - this._breadcrumbs.push(crumb); + if (opts.options.headers) { + evaluatedHeaders = this._evaluateHash(opts.options.headers); + } - if (this._breadcrumbs.length > this._globalOptions.maxBreadcrumbs) { - this._breadcrumbs.shift(); + if (opts.options.fetchParameters) { + evaluatedFetchParameters = this._evaluateHash(opts.options.fetchParameters); } - return this; - }, - addPlugin: function addPlugin(plugin - /*arg1, arg2, ... argN*/ - ) { - var pluginArgs = [].slice.call(arguments, 1); + if (supportsFetch()) { + evaluatedFetchParameters.body = stringify(opts.data); - this._plugins.push([plugin, pluginArgs]); + var defaultFetchOptions = objectMerge({}, this._fetchDefaults); + var fetchOptions = objectMerge(defaultFetchOptions, evaluatedFetchParameters); - if (this._isRavenInstalled) { - this._drainPlugins(); + if (evaluatedHeaders) { + fetchOptions.headers = evaluatedHeaders; + } + + return _window + .fetch(url, fetchOptions) + .then(function(response) { + if (response.ok) { + opts.onSuccess && opts.onSuccess(); + } else { + var error = new Error('Sentry error code: ' + response.status); + // It's called request only to keep compatibility with XHR interface + // and not add more redundant checks in setBackoffState method + error.request = response; + opts.onError && opts.onError(error); + } + }) + ['catch'](function() { + opts.onError && + opts.onError(new Error('Sentry error code: network unavailable')); + }); } - return this; - }, + var request = _window.XMLHttpRequest && new _window.XMLHttpRequest(); + if (!request) return; - /* - * Set/clear a user to be sent along with the payload. - * - * @param {object} user An object representing user data [optional] - * @return {Raven} - */ - setUserContext: function setUserContext(user) { - // Intentionally do not merge here since that's an unexpected behavior. - this._globalContext.user = user; - return this; - }, + // if browser doesn't support CORS (e.g. IE7), we are out of luck + var hasCORS = 'withCredentials' in request || typeof XDomainRequest !== 'undefined'; - /* - * Merge extra attributes to be sent along with the payload. - * - * @param {object} extra An object representing extra data [optional] - * @return {Raven} - */ - setExtraContext: function setExtraContext(extra) { - this._mergeContext('extra', extra); + if (!hasCORS) return; - return this; - }, + if ('withCredentials' in request) { + request.onreadystatechange = function() { + if (request.readyState !== 4) { + return; + } else if (request.status === 200) { + opts.onSuccess && opts.onSuccess(); + } else if (opts.onError) { + var err = new Error('Sentry error code: ' + request.status); + err.request = request; + opts.onError(err); + } + }; + } else { + request = new XDomainRequest(); + // xdomainrequest cannot go http -> https (or vice versa), + // so always use protocol relative + url = url.replace(/^https?:/, ''); - /* - * Merge tags to be sent along with the payload. - * - * @param {object} tags An object representing tags [optional] - * @return {Raven} - */ - setTagsContext: function setTagsContext(tags) { - this._mergeContext('tags', tags); + // onreadystatechange not supported by XDomainRequest + if (opts.onSuccess) { + request.onload = opts.onSuccess; + } + if (opts.onError) { + request.onerror = function() { + var err = new Error('Sentry error code: XDomainRequest'); + err.request = request; + opts.onError(err); + }; + } + } - return this; - }, + request.open('POST', url); - /* - * Clear all of the context. - * - * @return {Raven} - */ - clearContext: function clearContext() { - this._globalContext = {}; - return this; - }, + if (evaluatedHeaders) { + each(evaluatedHeaders, function(key, value) { + request.setRequestHeader(key, value); + }); + } - /* - * Get a copy of the current context. This cannot be mutated. - * - * @return {object} copy of context - */ - getContext: function getContext() { - // lol javascript - return JSON.parse(stringify_1(this._globalContext)); + request.send(stringify(opts.data)); }, - /* - * Set environment of application - * - * @param {string} environment Typically something like 'production'. - * @return {Raven} - */ - setEnvironment: function setEnvironment(environment) { - this._globalOptions.environment = environment; - return this; + _evaluateHash: function(hash) { + var evaluated = {}; + + for (var key in hash) { + if (hash.hasOwnProperty(key)) { + var value = hash[key]; + evaluated[key] = typeof value === 'function' ? value() : value; + } + } + + return evaluated; }, - /* - * Set release version of application - * - * @param {string} release Typically something like a git SHA to identify version - * @return {Raven} - */ - setRelease: function setRelease(release) { - this._globalOptions.release = release; - return this; + _logDebug: function(level) { + // We allow `Raven.debug` and `Raven.config(DSN, { debug: true })` to not make backward incompatible API change + if ( + this._originalConsoleMethods[level] && + (this.debug || this._globalOptions.debug) + ) { + // In IE<10 console methods do not have their own 'apply' method + Function.prototype.apply.call( + this._originalConsoleMethods[level], + this._originalConsole, + [].slice.call(arguments, 1) + ); + } }, - /* - * Set the dataCallback option - * - * @param {function} callback The callback to run which allows the - * data blob to be mutated before sending - * @return {Raven} - */ - setDataCallback: function setDataCallback(callback) { - var original = this._globalOptions.dataCallback; - this._globalOptions.dataCallback = keepOriginalCallback(original, callback); - return this; - }, + _mergeContext: function(key, context) { + if (isUndefined(context)) { + delete this._globalContext[key]; + } else { + this._globalContext[key] = objectMerge(this._globalContext[key] || {}, context); + } + } +}; - /* - * Set the breadcrumbCallback option - * - * @param {function} callback The callback to run which allows filtering - * or mutating breadcrumbs - * @return {Raven} - */ - setBreadcrumbCallback: function setBreadcrumbCallback(callback) { - var original = this._globalOptions.breadcrumbCallback; - this._globalOptions.breadcrumbCallback = keepOriginalCallback(original, callback); - return this; - }, +// Deprecations +Raven.prototype.setUser = Raven.prototype.setUserContext; +Raven.prototype.setReleaseContext = Raven.prototype.setRelease; - /* - * Set the shouldSendCallback option - * - * @param {function} callback The callback to run which allows - * introspecting the blob before sending - * @return {Raven} - */ - setShouldSendCallback: function setShouldSendCallback(callback) { - var original = this._globalOptions.shouldSendCallback; - this._globalOptions.shouldSendCallback = keepOriginalCallback(original, callback); - return this; - }, +module.exports = Raven; - /** - * Override the default HTTP transport mechanism that transmits data - * to the Sentry server. - * - * @param {function} transport Function invoked instead of the default - * `makeRequest` handler. - * - * @return {Raven} - */ - setTransport: function setTransport(transport) { - this._globalOptions.transport = transport; - return this; - }, +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"10":10,"3":3,"4":4,"7":7,"8":8,"9":9}],6:[function(_dereq_,module,exports){ +(function (global){ +/** + * Enforces a single instance of the Raven client, and the + * main entry point for Raven. If you are a consumer of the + * Raven library, you SHOULD load this file (vs raven.js). + **/ - /* - * Get the latest raw exception that was captured by Raven. - * - * @return {error} - */ - lastException: function lastException() { - return this._lastCapturedException; - }, +var RavenConstructor = _dereq_(5); - /* - * Get the last event id - * - * @return {string} - */ - lastEventId: function lastEventId() { - return this._lastEventId; - }, +// This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) +var _window = + typeof window !== 'undefined' + ? window + : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; +var _Raven = _window.Raven; - /* - * Determine if Raven is setup and ready to go. - * - * @return {boolean} - */ - isSetup: function isSetup() { - if (!this._hasJSON) return false; // needs JSON support +var Raven = new RavenConstructor(); - if (!this._globalServer) { - if (!this.ravenNotConfiguredError) { - this.ravenNotConfiguredError = true; +/* + * Allow multiple versions of Raven to be installed. + * Strip Raven from the global context and returns the instance. + * + * @return {Raven} + */ +Raven.noConflict = function() { + _window.Raven = _Raven; + return Raven; +}; - this._logDebug('error', 'Error: Raven has not been configured.'); - } +Raven.afterLoad(); - return false; - } +module.exports = Raven; - return true; - }, - afterLoad: function afterLoad() { - // TODO: remove window dependence? - // Attempt to initialize Raven on load - var RavenConfig = _window$1.RavenConfig; +/** + * DISCLAIMER: + * + * Expose `Client` constructor for cases where user want to track multiple "sub-applications" in one larger app. + * It's not meant to be used by a wide audience, so pleaaase make sure that you know what you're doing before using it. + * Accidentally calling `install` multiple times, may result in an unexpected behavior that's very hard to debug. + * + * It's called `Client' to be in-line with Raven Node implementation. + * + * HOWTO: + * + * import Raven from 'raven-js'; + * + * const someAppReporter = new Raven.Client(); + * const someOtherAppReporter = new Raven.Client(); + * + * someAppReporter.config('__DSN__', { + * ...config goes here + * }); + * + * someOtherAppReporter.config('__OTHER_DSN__', { + * ...config goes here + * }); + * + * someAppReporter.captureMessage(...); + * someAppReporter.captureException(...); + * someAppReporter.captureBreadcrumb(...); + * + * someOtherAppReporter.captureMessage(...); + * someOtherAppReporter.captureException(...); + * someOtherAppReporter.captureBreadcrumb(...); + * + * It should "just work". + */ +module.exports.Client = RavenConstructor; - if (RavenConfig) { - this.config(RavenConfig.dsn, RavenConfig.config).install(); - } - }, - showReportDialog: function showReportDialog(options) { - if (!_document // doesn't work without a document (React native) - ) return; - options = options || {}; - var lastEventId = options.eventId || this.lastEventId(); +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"5":5}],7:[function(_dereq_,module,exports){ +(function (global){ +var stringify = _dereq_(9); - if (!lastEventId) { - throw new configError('Missing eventId'); - } +var _window = + typeof window !== 'undefined' + ? window + : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; - var dsn = options.dsn || this._dsn; +function isObject(what) { + return typeof what === 'object' && what !== null; +} - if (!dsn) { - throw new configError('Missing DSN'); - } +// Yanked from https://git.io/vS8DV re-used under CC0 +// with some tiny modifications +function isError(value) { + switch ({}.toString.call(value)) { + case '[object Error]': + return true; + case '[object Exception]': + return true; + case '[object DOMException]': + return true; + default: + return value instanceof Error; + } +} - var encode = encodeURIComponent; - var qs = ''; - qs += '?eventId=' + encode(lastEventId); - qs += '&dsn=' + encode(dsn); - var user = options.user || this._globalContext.user; +function isErrorEvent(value) { + return supportsErrorEvent() && {}.toString.call(value) === '[object ErrorEvent]'; +} - if (user) { - if (user.name) qs += '&name=' + encode(user.name); - if (user.email) qs += '&email=' + encode(user.email); +function isUndefined(what) { + return what === void 0; +} + +function isFunction(what) { + return typeof what === 'function'; +} + +function isPlainObject(what) { + return Object.prototype.toString.call(what) === '[object Object]'; +} + +function isString(what) { + return Object.prototype.toString.call(what) === '[object String]'; +} + +function isArray(what) { + return Object.prototype.toString.call(what) === '[object Array]'; +} + +function isEmptyObject(what) { + if (!isPlainObject(what)) return false; + + for (var _ in what) { + if (what.hasOwnProperty(_)) { + return false; } + } + return true; +} - var globalServer = this._getGlobalServer(this._parseDSN(dsn)); +function supportsErrorEvent() { + try { + new ErrorEvent(''); // eslint-disable-line no-new + return true; + } catch (e) { + return false; + } +} - var script = _document.createElement('script'); +function supportsFetch() { + if (!('fetch' in _window)) return false; - script.async = true; - script.src = globalServer + '/api/embed/error-page/' + qs; + try { + new Headers(); // eslint-disable-line no-new + new Request(''); // eslint-disable-line no-new + new Response(); // eslint-disable-line no-new + return true; + } catch (e) { + return false; + } +} - (_document.head || _document.body).appendChild(script); - }, +// Despite all stars in the sky saying that Edge supports old draft syntax, aka 'never', 'always', 'origin' and 'default +// https://caniuse.com/#feat=referrer-policy +// It doesn't. And it throw exception instead of ignoring this parameter... +// REF: https://github.com/getsentry/raven-js/issues/1233 +function supportsReferrerPolicy() { + if (!supportsFetch()) return false; - /**** Private functions ****/ - _ignoreNextOnError: function _ignoreNextOnError() { - var self = this; - this._ignoreOnError += 1; - setTimeout(function () { - // onerror should trigger before setTimeout - self._ignoreOnError -= 1; + try { + // eslint-disable-next-line no-new + new Request('pickleRick', { + referrerPolicy: 'origin' }); - }, - _triggerEvent: function _triggerEvent(eventType, options) { - // NOTE: `event` is a native browser thing, so let's avoid conflicting wiht it - var evt, key; - if (!this._hasDocument) return; - options = options || {}; - eventType = 'raven' + eventType.substr(0, 1).toUpperCase() + eventType.substr(1); + return true; + } catch (e) { + return false; + } +} - if (_document.createEvent) { - evt = _document.createEvent('HTMLEvents'); - evt.initEvent(eventType, true, true); - } else { - evt = _document.createEventObject(); - evt.eventType = eventType; +function supportsPromiseRejectionEvent() { + return typeof PromiseRejectionEvent === 'function'; +} + +function wrappedCallback(callback) { + function dataCallback(data, original) { + var normalizedData = callback(data) || data; + if (original) { + return original(normalizedData) || normalizedData; } + return normalizedData; + } - for (key in options) { - if (hasKey(options, key)) { - evt[key] = options[key]; + return dataCallback; +} + +function each(obj, callback) { + var i, j; + + if (isUndefined(obj.length)) { + for (i in obj) { + if (hasKey(obj, i)) { + callback.call(null, i, obj[i]); } } - - if (_document.createEvent) { - // IE9 if standards - _document.dispatchEvent(evt); - } else { - // IE8 regardless of Quirks or Standards - // IE9 if quirks - try { - _document.fireEvent('on' + evt.eventType.toLowerCase(), evt); - } catch (e) {// Do nothing + } else { + j = obj.length; + if (j) { + for (i = 0; i < j; i++) { + callback.call(null, i, obj[i]); } } - }, + } +} - /** - * Wraps addEventListener to capture UI breadcrumbs - * @param evtName the event name (e.g. "click") - * @returns {Function} - * @private - */ - _breadcrumbEventHandler: function _breadcrumbEventHandler(evtName) { - var self = this; - return function (evt) { - // reset keypress timeout; e.g. triggering a 'click' after - // a 'keypress' will reset the keypress debounce so that a new - // set of keypresses can be recorded - self._keypressTimeout = null; // It's possible this handler might trigger multiple times for the same - // event (e.g. event propagation through node ancestors). Ignore if we've - // already captured the event. +function objectMerge(obj1, obj2) { + if (!obj2) { + return obj1; + } + each(obj2, function(key, value) { + obj1[key] = value; + }); + return obj1; +} - if (self._lastCapturedEvent === evt) return; - self._lastCapturedEvent = evt; // try/catch both: - // - accessing evt.target (see getsentry/raven-js#838, #768) - // - `htmlTreeAsString` because it's complex, and just accessing the DOM incorrectly - // can throw an exception in some circumstances. +/** + * This function is only used for react-native. + * react-native freezes object that have already been sent over the + * js bridge. We need this function in order to check if the object is frozen. + * So it's ok that objectFrozen returns false if Object.isFrozen is not + * supported because it's not relevant for other "platforms". See related issue: + * https://github.com/getsentry/react-native-sentry/issues/57 + */ +function objectFrozen(obj) { + if (!Object.isFrozen) { + return false; + } + return Object.isFrozen(obj); +} - var target; +function truncate(str, max) { + if (typeof max !== 'number') { + throw new Error('2nd argument to `truncate` function should be a number'); + } + if (typeof str !== 'string' || max === 0) { + return str; + } + return str.length <= max ? str : str.substr(0, max) + '\u2026'; +} - try { - target = htmlTreeAsString(evt.target); - } catch (e) { - target = ''; - } +/** + * hasKey, a better form of hasOwnProperty + * Example: hasKey(MainHostObject, property) === true/false + * + * @param {Object} host object to check property + * @param {string} key to check + */ +function hasKey(object, key) { + return Object.prototype.hasOwnProperty.call(object, key); +} - self.captureBreadcrumb({ - category: 'ui.' + evtName, - // e.g. ui.click, ui.input - message: target - }); - }; - }, +function joinRegExp(patterns) { + // Combine an array of regular expressions and strings into one large regexp + // Be mad. + var sources = [], + i = 0, + len = patterns.length, + pattern; - /** - * Wraps addEventListener to capture keypress UI events - * @returns {Function} - * @private - */ - _keypressEventHandler: function _keypressEventHandler() { - var self = this, - debounceDuration = 1000; // milliseconds - // TODO: if somehow user switches keypress target before - // debounce timeout is triggered, we will only capture - // a single breadcrumb from the FIRST target (acceptable?) + for (; i < len; i++) { + pattern = patterns[i]; + if (isString(pattern)) { + // If it's a string, we need to escape it + // Taken from: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions + sources.push(pattern.replace(/([.*+?^=!:${}()|\[\]\/\\])/g, '\\$1')); + } else if (pattern && pattern.source) { + // If it's a regexp already, we want to extract the source + sources.push(pattern.source); + } + // Intentionally skip other cases + } + return new RegExp(sources.join('|'), 'i'); +} - return function (evt) { - var target; +function urlencode(o) { + var pairs = []; + each(o, function(key, value) { + pairs.push(encodeURIComponent(key) + '=' + encodeURIComponent(value)); + }); + return pairs.join('&'); +} - try { - target = evt.target; - } catch (e) { - // just accessing event properties can throw an exception in some rare circumstances - // see: https://github.com/getsentry/raven-js/issues/838 - return; - } +// borrowed from https://tools.ietf.org/html/rfc3986#appendix-B +// intentionally using regex and not href parsing trick because React Native and other +// environments where DOM might not be available +function parseUrl(url) { + if (typeof url !== 'string') return {}; + var match = url.match(/^(([^:\/?#]+):)?(\/\/([^\/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?$/); - var tagName = target && target.tagName; // only consider keypress events on actual input elements - // this will disregard keypresses targeting body (e.g. tabbing - // through elements, hotkeys, etc) + // coerce to undefined values to empty string so we don't get 'undefined' + var query = match[6] || ''; + var fragment = match[8] || ''; + return { + protocol: match[2], + host: match[4], + path: match[5], + relative: match[5] + query + fragment // everything minus origin + }; +} +function uuid4() { + var crypto = _window.crypto || _window.msCrypto; - if (!tagName || tagName !== 'INPUT' && tagName !== 'TEXTAREA' && !target.isContentEditable) return; // record first keypress in a series, but ignore subsequent - // keypresses until debounce clears + if (!isUndefined(crypto) && crypto.getRandomValues) { + // Use window.crypto API if available + // eslint-disable-next-line no-undef + var arr = new Uint16Array(8); + crypto.getRandomValues(arr); - var timeout = self._keypressTimeout; + // set 4 in byte 7 + arr[3] = (arr[3] & 0xfff) | 0x4000; + // set 2 most significant bits of byte 9 to '10' + arr[4] = (arr[4] & 0x3fff) | 0x8000; - if (!timeout) { - self._breadcrumbEventHandler('input')(evt); + var pad = function(num) { + var v = num.toString(16); + while (v.length < 4) { + v = '0' + v; } - - clearTimeout(timeout); - self._keypressTimeout = setTimeout(function () { - self._keypressTimeout = null; - }, debounceDuration); + return v; }; - }, - - /** - * Captures a breadcrumb of type "navigation", normalizing input URLs - * @param to the originating URL - * @param from the target URL - * @private - */ - _captureUrlChange: function _captureUrlChange(from, to) { - var parsedLoc = parseUrl(this._location.href); - var parsedTo = parseUrl(to); - var parsedFrom = parseUrl(from); // because onpopstate only tells you the "new" (to) value of location.href, and - // not the previous (from) value, we need to track the value of the current URL - // state ourselves - this._lastHref = to; // Use only the path component of the URL if the URL matches the current - // document (almost all the time when using pushState) - - if (parsedLoc.protocol === parsedTo.protocol && parsedLoc.host === parsedTo.host) to = parsedTo.relative; - if (parsedLoc.protocol === parsedFrom.protocol && parsedLoc.host === parsedFrom.host) from = parsedFrom.relative; - this.captureBreadcrumb({ - category: 'navigation', - data: { - to: to, - from: from - } + return ( + pad(arr[0]) + + pad(arr[1]) + + pad(arr[2]) + + pad(arr[3]) + + pad(arr[4]) + + pad(arr[5]) + + pad(arr[6]) + + pad(arr[7]) + ); + } else { + // http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/2117523#2117523 + return 'xxxxxxxxxxxx4xxxyxxxxxxxxxxxxxxx'.replace(/[xy]/g, function(c) { + var r = (Math.random() * 16) | 0, + v = c === 'x' ? r : (r & 0x3) | 0x8; + return v.toString(16); }); - }, - _patchFunctionToString: function _patchFunctionToString() { - var self = this; - self._originalFunctionToString = Function.prototype.toString; // eslint-disable-next-line no-extend-native + } +} - Function.prototype.toString = function () { - if (typeof this === 'function' && this.__raven__) { - return self._originalFunctionToString.apply(this.__orig__, arguments); - } +/** + * Given a child DOM element, returns a query-selector statement describing that + * and its ancestors + * e.g. [HTMLElement] => body > div > input#foo.btn[name=baz] + * @param elem + * @returns {string} + */ +function htmlTreeAsString(elem) { + /* eslint no-extra-parens:0*/ + var MAX_TRAVERSE_HEIGHT = 5, + MAX_OUTPUT_LEN = 80, + out = [], + height = 0, + len = 0, + separator = ' > ', + sepLength = separator.length, + nextStr; - return self._originalFunctionToString.apply(this, arguments); - }; - }, - _unpatchFunctionToString: function _unpatchFunctionToString() { - if (this._originalFunctionToString) { - // eslint-disable-next-line no-extend-native - Function.prototype.toString = this._originalFunctionToString; + while (elem && height++ < MAX_TRAVERSE_HEIGHT) { + nextStr = htmlElementAsString(elem); + // bail out if + // - nextStr is the 'html' element + // - the length of the string that would be created exceeds MAX_OUTPUT_LEN + // (ignore this limit if we are on the first iteration) + if ( + nextStr === 'html' || + (height > 1 && len + out.length * sepLength + nextStr.length >= MAX_OUTPUT_LEN) + ) { + break; } - }, - /** - * Wrap timer functions and event targets to catch errors and provide - * better metadata. - */ - _instrumentTryCatch: function _instrumentTryCatch() { - var self = this; - var wrappedBuiltIns = self._wrappedBuiltIns; + out.push(nextStr); - function wrapTimeFn(orig) { - return function (fn, t) { - // preserve arity - // Make a copy of the arguments to prevent deoptimization - // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments - var args = new Array(arguments.length); + len += nextStr.length; + elem = elem.parentNode; + } - for (var i = 0; i < args.length; ++i) { - args[i] = arguments[i]; - } + return out.reverse().join(separator); +} - var originalCallback = args[0]; +/** + * Returns a simple, query-selector representation of a DOM element + * e.g. [HTMLElement] => input#foo.btn[name=baz] + * @param HTMLElement + * @returns {string} + */ +function htmlElementAsString(elem) { + var out = [], + className, + classes, + key, + attr, + i; - if (isFunction(originalCallback)) { - args[0] = self.wrap(originalCallback); - } // IE < 9 doesn't support .call/.apply on setInterval/setTimeout, but it - // also supports only two arguments and doesn't care what this is, so we - // can just call the original function directly. + if (!elem || !elem.tagName) { + return ''; + } + out.push(elem.tagName.toLowerCase()); + if (elem.id) { + out.push('#' + elem.id); + } - if (orig.apply) { - return orig.apply(this, args); - } else { - return orig(args[0], args[1]); - } - }; + className = elem.className; + if (className && isString(className)) { + classes = className.split(/\s+/); + for (i = 0; i < classes.length; i++) { + out.push('.' + classes[i]); } + } + var attrWhitelist = ['type', 'name', 'title', 'alt']; + for (i = 0; i < attrWhitelist.length; i++) { + key = attrWhitelist[i]; + attr = elem.getAttribute(key); + if (attr) { + out.push('[' + key + '="' + attr + '"]'); + } + } + return out.join(''); +} - var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; - - function wrapEventTarget(global) { - var proto = _window$1[global] && _window$1[global].prototype; +/** + * Returns true if either a OR b is truthy, but not both + */ +function isOnlyOneTruthy(a, b) { + return !!(!!a ^ !!b); +} - if (proto && proto.hasOwnProperty && proto.hasOwnProperty('addEventListener')) { - fill(proto, 'addEventListener', function (orig) { - return function (evtName, fn, capture, secure) { - // preserve arity - try { - if (fn && fn.handleEvent) { - fn.handleEvent = self.wrap(fn.handleEvent); - } - } catch (err) {} // can sometimes get 'Permission denied to access property "handle Event' - // More breadcrumb DOM capture ... done here and not in `_instrumentBreadcrumbs` - // so that we don't have more than one wrapper function +/** + * Returns true if both parameters are undefined + */ +function isBothUndefined(a, b) { + return isUndefined(a) && isUndefined(b); +} +/** + * Returns true if the two input exception interfaces have the same content + */ +function isSameException(ex1, ex2) { + if (isOnlyOneTruthy(ex1, ex2)) return false; - var before, clickHandler, keypressHandler; + ex1 = ex1.values[0]; + ex2 = ex2.values[0]; - if (autoBreadcrumbs && autoBreadcrumbs.dom && (global === 'EventTarget' || global === 'Node')) { - // NOTE: generating multiple handlers per addEventListener invocation, should - // revisit and verify we can just use one (almost certainly) - clickHandler = self._breadcrumbEventHandler('click'); - keypressHandler = self._keypressEventHandler(); + if (ex1.type !== ex2.type || ex1.value !== ex2.value) return false; - before = function before(evt) { - // need to intercept every DOM event in `before` argument, in case that - // same wrapped method is re-used for different events (e.g. mousemove THEN click) - // see #724 - if (!evt) return; - var eventType; + // in case both stacktraces are undefined, we can't decide so default to false + if (isBothUndefined(ex1.stacktrace, ex2.stacktrace)) return false; - try { - eventType = evt.type; - } catch (e) { - // just accessing event properties can throw an exception in some rare circumstances - // see: https://github.com/getsentry/raven-js/issues/838 - return; - } + return isSameStacktrace(ex1.stacktrace, ex2.stacktrace); +} - if (eventType === 'click') return clickHandler(evt);else if (eventType === 'keypress') return keypressHandler(evt); - }; - } - - return orig.call(this, evtName, self.wrap(fn, undefined, before), capture, secure); - }; - }, wrappedBuiltIns); - fill(proto, 'removeEventListener', function (orig) { - return function (evt, fn, capture, secure) { - try { - fn = fn && (fn.__raven_wrapper__ ? fn.__raven_wrapper__ : fn); - } catch (e) {// ignore, accessing __raven_wrapper__ will throw in some Selenium environments - } - - return orig.call(this, evt, fn, capture, secure); - }; - }, wrappedBuiltIns); - } - } +/** + * Returns true if the two input stack trace interfaces have the same content + */ +function isSameStacktrace(stack1, stack2) { + if (isOnlyOneTruthy(stack1, stack2)) return false; - fill(_window$1, 'setTimeout', wrapTimeFn, wrappedBuiltIns); - fill(_window$1, 'setInterval', wrapTimeFn, wrappedBuiltIns); + var frames1 = stack1.frames; + var frames2 = stack2.frames; - if (_window$1.requestAnimationFrame) { - fill(_window$1, 'requestAnimationFrame', function (orig) { - return function (cb) { - return orig(self.wrap(cb)); - }; - }, wrappedBuiltIns); - } // event targets borrowed from bugsnag-js: - // https://github.com/bugsnag/bugsnag-js/blob/master/src/bugsnag.js#L666 + // Exit early if frame count differs + if (frames1.length !== frames2.length) return false; + // Iterate through every frame; bail out if anything differs + var a, b; + for (var i = 0; i < frames1.length; i++) { + a = frames1[i]; + b = frames2[i]; + if ( + a.filename !== b.filename || + a.lineno !== b.lineno || + a.colno !== b.colno || + a['function'] !== b['function'] + ) + return false; + } + return true; +} - var eventTargets = ['EventTarget', 'Window', 'Node', 'ApplicationCache', 'AudioTrackList', 'ChannelMergerNode', 'CryptoOperation', 'EventSource', 'FileReader', 'HTMLUnknownElement', 'IDBDatabase', 'IDBRequest', 'IDBTransaction', 'KeyOperation', 'MediaController', 'MessagePort', 'ModalWindow', 'Notification', 'SVGElementInstance', 'Screen', 'TextTrack', 'TextTrackCue', 'TextTrackList', 'WebSocket', 'WebSocketWorker', 'Worker', 'XMLHttpRequest', 'XMLHttpRequestEventTarget', 'XMLHttpRequestUpload']; +/** + * Polyfill a method + * @param obj object e.g. `document` + * @param name method name present on object e.g. `addEventListener` + * @param replacement replacement function + * @param track {optional} record instrumentation to an array + */ +function fill(obj, name, replacement, track) { + if (obj == null) return; + var orig = obj[name]; + obj[name] = replacement(orig); + obj[name].__raven__ = true; + obj[name].__orig__ = orig; + if (track) { + track.push([obj, name, orig]); + } +} - for (var i = 0; i < eventTargets.length; i++) { - wrapEventTarget(eventTargets[i]); - } - }, +/** + * Join values in array + * @param input array of values to be joined together + * @param delimiter string to be placed in-between values + * @returns {string} + */ +function safeJoin(input, delimiter) { + if (!isArray(input)) return ''; - /** - * Instrument browser built-ins w/ breadcrumb capturing - * - XMLHttpRequests - * - DOM interactions (click/typing) - * - window.location changes - * - console - * - * Can be disabled or individually configured via the `autoBreadcrumbs` config option - */ - _instrumentBreadcrumbs: function _instrumentBreadcrumbs() { - var self = this; - var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; - var wrappedBuiltIns = self._wrappedBuiltIns; + var output = []; - function wrapProp(prop, xhr) { - if (prop in xhr && isFunction(xhr[prop])) { - fill(xhr, prop, function (orig) { - return self.wrap(orig); - }); // intentionally don't track filled methods on XHR instances - } + for (var i = 0; i < input.length; i++) { + try { + output.push(String(input[i])); + } catch (e) { + output.push('[value cannot be serialized]'); } + } - if (autoBreadcrumbs.xhr && 'XMLHttpRequest' in _window$1) { - var xhrproto = XMLHttpRequest.prototype; - fill(xhrproto, 'open', function (origOpen) { - return function (method, url) { - // preserve arity - // if Sentry key appears in URL, don't capture - if (isString(url) && url.indexOf(self._globalKey) === -1) { - this.__raven_xhr = { - method: method, - url: url, - status_code: null - }; - } + return output.join(delimiter); +} - return origOpen.apply(this, arguments); - }; - }, wrappedBuiltIns); - fill(xhrproto, 'send', function (origSend) { - return function () { - // preserve arity - var xhr = this; - - function onreadystatechangeHandler() { - if (xhr.__raven_xhr && xhr.readyState === 4) { - try { - // touching statusCode in some platforms throws - // an exception - xhr.__raven_xhr.status_code = xhr.status; - } catch (e) { - /* do nothing */ - } +// Default Node.js REPL depth +var MAX_SERIALIZE_EXCEPTION_DEPTH = 3; +// 50kB, as 100kB is max payload size, so half sounds reasonable +var MAX_SERIALIZE_EXCEPTION_SIZE = 50 * 1024; +var MAX_SERIALIZE_KEYS_LENGTH = 40; - self.captureBreadcrumb({ - type: 'http', - category: 'xhr', - data: xhr.__raven_xhr - }); - } - } +function utf8Length(value) { + return ~-encodeURI(value).split(/%..|./).length; +} - var props = ['onload', 'onerror', 'onprogress']; +function jsonSize(value) { + return utf8Length(JSON.stringify(value)); +} - for (var j = 0; j < props.length; j++) { - wrapProp(props[j], xhr); - } +function serializeValue(value) { + if (typeof value === 'string') { + var maxLength = 40; + return truncate(value, maxLength); + } else if ( + typeof value === 'number' || + typeof value === 'boolean' || + typeof value === 'undefined' + ) { + return value; + } - if ('onreadystatechange' in xhr && isFunction(xhr.onreadystatechange)) { - fill(xhr, 'onreadystatechange', function (orig) { - return self.wrap(orig, undefined, onreadystatechangeHandler); - } - /* intentionally don't track this instrumentation */ - ); - } else { - // if onreadystatechange wasn't actually set by the page on this xhr, we - // are free to set our own and capture the breadcrumb - xhr.onreadystatechange = onreadystatechangeHandler; - } + var type = Object.prototype.toString.call(value); - return origSend.apply(this, arguments); - }; - }, wrappedBuiltIns); - } + // Node.js REPL notation + if (type === '[object Object]') return '[Object]'; + if (type === '[object Array]') return '[Array]'; + if (type === '[object Function]') + return value.name ? '[Function: ' + value.name + ']' : '[Function]'; - if (autoBreadcrumbs.xhr && supportsFetch()) { - fill(_window$1, 'fetch', function (origFetch) { - return function () { - // preserve arity - // Make a copy of the arguments to prevent deoptimization - // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments - var args = new Array(arguments.length); - - for (var i = 0; i < args.length; ++i) { - args[i] = arguments[i]; - } + return value; +} - var fetchInput = args[0]; - var method = 'GET'; - var url; +function serializeObject(value, depth) { + if (depth === 0) return serializeValue(value); + + if (isPlainObject(value)) { + return Object.keys(value).reduce(function(acc, key) { + acc[key] = serializeObject(value[key], depth - 1); + return acc; + }, {}); + } else if (Array.isArray(value)) { + return value.map(function(val) { + return serializeObject(val, depth - 1); + }); + } - if (typeof fetchInput === 'string') { - url = fetchInput; - } else if ('Request' in _window$1 && fetchInput instanceof _window$1.Request) { - url = fetchInput.url; + return serializeValue(value); +} - if (fetchInput.method) { - method = fetchInput.method; - } - } else { - url = '' + fetchInput; - } // if Sentry key appears in URL, don't capture, as it's our own request +function serializeException(ex, depth, maxSize) { + if (!isPlainObject(ex)) return ex; + depth = typeof depth !== 'number' ? MAX_SERIALIZE_EXCEPTION_DEPTH : depth; + maxSize = typeof depth !== 'number' ? MAX_SERIALIZE_EXCEPTION_SIZE : maxSize; - if (url.indexOf(self._globalKey) !== -1) { - return origFetch.apply(this, args); - } + var serialized = serializeObject(ex, depth); - if (args[1] && args[1].method) { - method = args[1].method; - } + if (jsonSize(stringify(serialized)) > maxSize) { + return serializeException(ex, depth - 1); + } - var fetchData = { - method: method, - url: url, - status_code: null - }; - return origFetch.apply(this, args).then(function (response) { - fetchData.status_code = response.status; - self.captureBreadcrumb({ - type: 'http', - category: 'fetch', - data: fetchData - }); - return response; - }); - }; - }, wrappedBuiltIns); - } // Capture breadcrumbs from any click that is unhandled / bubbled up all the way - // to the document. Do this before we instrument addEventListener. + return serialized; +} +function serializeKeysForMessage(keys, maxLength) { + if (typeof keys === 'number' || typeof keys === 'string') return keys.toString(); + if (!Array.isArray(keys)) return ''; - if (autoBreadcrumbs.dom && this._hasDocument) { - if (_document.addEventListener) { - _document.addEventListener('click', self._breadcrumbEventHandler('click'), false); + keys = keys.filter(function(key) { + return typeof key === 'string'; + }); + if (keys.length === 0) return '[object has no keys]'; - _document.addEventListener('keypress', self._keypressEventHandler(), false); - } else { - // IE8 Compatibility - _document.attachEvent('onclick', self._breadcrumbEventHandler('click')); + maxLength = typeof maxLength !== 'number' ? MAX_SERIALIZE_KEYS_LENGTH : maxLength; + if (keys[0].length >= maxLength) return keys[0]; - _document.attachEvent('onkeypress', self._keypressEventHandler()); - } - } // record navigation (URL) changes - // NOTE: in Chrome App environment, touching history.pushState, *even inside - // a try/catch block*, will cause Chrome to output an error to console.error - // borrowed from: https://github.com/angular/angular.js/pull/13945/files + for (var usedKeys = keys.length; usedKeys > 0; usedKeys--) { + var serialized = keys.slice(0, usedKeys).join(', '); + if (serialized.length > maxLength) continue; + if (usedKeys === keys.length) return serialized; + return serialized + '\u2026'; + } + return ''; +} - var chrome = _window$1.chrome; - var isChromePackagedApp = chrome && chrome.app && chrome.app.runtime; - var hasPushAndReplaceState = !isChromePackagedApp && _window$1.history && history.pushState && history.replaceState; +function sanitize(input, sanitizeKeys) { + if (!isArray(sanitizeKeys) || (isArray(sanitizeKeys) && sanitizeKeys.length === 0)) + return input; - if (autoBreadcrumbs.location && hasPushAndReplaceState) { - // TODO: remove onpopstate handler on uninstall() - var oldOnPopState = _window$1.onpopstate; + var sanitizeRegExp = joinRegExp(sanitizeKeys); + var sanitizeMask = '********'; + var safeInput; - _window$1.onpopstate = function () { - var currentHref = self._location.href; + try { + safeInput = JSON.parse(stringify(input)); + } catch (o_O) { + return input; + } - self._captureUrlChange(self._lastHref, currentHref); + function sanitizeWorker(workerInput) { + if (isArray(workerInput)) { + return workerInput.map(function(val) { + return sanitizeWorker(val); + }); + } - if (oldOnPopState) { - return oldOnPopState.apply(this, arguments); + if (isPlainObject(workerInput)) { + return Object.keys(workerInput).reduce(function(acc, k) { + if (sanitizeRegExp.test(k)) { + acc[k] = sanitizeMask; + } else { + acc[k] = sanitizeWorker(workerInput[k]); } - }; - - var historyReplacementFunction = function historyReplacementFunction(origHistFunction) { - // note history.pushState.length is 0; intentionally not declaring - // params to preserve 0 arity - return function () - /* state, title, url */ - { - var url = arguments.length > 2 ? arguments[2] : undefined; // url argument is optional - - if (url) { - // coerce to string (this is what pushState does) - self._captureUrlChange(self._lastHref, url + ''); - } - - return origHistFunction.apply(this, arguments); - }; - }; - - fill(history, 'pushState', historyReplacementFunction, wrappedBuiltIns); - fill(history, 'replaceState', historyReplacementFunction, wrappedBuiltIns); + return acc; + }, {}); } - if (autoBreadcrumbs.console && 'console' in _window$1 && console.log) { - // console - var consoleMethodCallback = function consoleMethodCallback(msg, data) { - self.captureBreadcrumb({ - message: msg, - level: data.level, - category: 'console' - }); - }; - - each(['debug', 'info', 'warn', 'error', 'log'], function (_, level) { - wrapConsoleMethod(console, level, consoleMethodCallback); - }); - } - }, - _restoreBuiltIns: function _restoreBuiltIns() { - // restore any wrapped builtins - var builtin; + return workerInput; + } - while (this._wrappedBuiltIns.length) { - builtin = this._wrappedBuiltIns.shift(); - var obj = builtin[0], - name = builtin[1], - orig = builtin[2]; - obj[name] = orig; - } - }, - _restoreConsole: function _restoreConsole() { - // eslint-disable-next-line guard-for-in - for (var method in this._originalConsoleMethods) { - this._originalConsole[method] = this._originalConsoleMethods[method]; - } - }, - _drainPlugins: function _drainPlugins() { - var self = this; // FIX ME TODO + return sanitizeWorker(safeInput); +} - each(this._plugins, function (_, plugin) { - var installer = plugin[0]; - var args = plugin[1]; - installer.apply(self, [self].concat(args)); - }); - }, - _parseDSN: function _parseDSN(str) { - var m = dsnPattern.exec(str), - dsn = {}, - i = 7; +module.exports = { + isObject: isObject, + isError: isError, + isErrorEvent: isErrorEvent, + isUndefined: isUndefined, + isFunction: isFunction, + isPlainObject: isPlainObject, + isString: isString, + isArray: isArray, + isEmptyObject: isEmptyObject, + supportsErrorEvent: supportsErrorEvent, + supportsFetch: supportsFetch, + supportsReferrerPolicy: supportsReferrerPolicy, + supportsPromiseRejectionEvent: supportsPromiseRejectionEvent, + wrappedCallback: wrappedCallback, + each: each, + objectMerge: objectMerge, + truncate: truncate, + objectFrozen: objectFrozen, + hasKey: hasKey, + joinRegExp: joinRegExp, + urlencode: urlencode, + uuid4: uuid4, + htmlTreeAsString: htmlTreeAsString, + htmlElementAsString: htmlElementAsString, + isSameException: isSameException, + isSameStacktrace: isSameStacktrace, + parseUrl: parseUrl, + fill: fill, + safeJoin: safeJoin, + serializeException: serializeException, + serializeKeysForMessage: serializeKeysForMessage, + sanitize: sanitize +}; - try { - while (i--) { - dsn[dsnKeys[i]] = m[i] || ''; - } - } catch (e) { - throw new configError('Invalid DSN: ' + str); - } +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"9":9}],8:[function(_dereq_,module,exports){ +(function (global){ +var utils = _dereq_(7); - if (dsn.pass && !this._globalOptions.allowSecretKey) { - throw new configError('Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key'); - } +/* + TraceKit - Cross brower stack traces - return dsn; - }, - _getGlobalServer: function _getGlobalServer(uri) { - // assemble the endpoint from the uri pieces - var globalServer = '//' + uri.host + (uri.port ? ':' + uri.port : ''); + This was originally forked from github.com/occ/TraceKit, but has since been + largely re-written and is now maintained as part of raven-js. Tests for + this are in test/vendor. - if (uri.protocol) { - globalServer = uri.protocol + ':' + globalServer; - } + MIT license +*/ - return globalServer; - }, - _handleOnErrorStackInfo: function _handleOnErrorStackInfo() { - // if we are intentionally ignoring errors via onerror, bail out - if (!this._ignoreOnError) { - this._handleStackInfo.apply(this, arguments); - } - }, - _handleStackInfo: function _handleStackInfo(stackInfo, options) { - var frames = this._prepareFrames(stackInfo, options); +var TraceKit = { + collectWindowErrors: true, + debug: false +}; - this._triggerEvent('handle', { - stackInfo: stackInfo, - options: options - }); +// This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) +var _window = + typeof window !== 'undefined' + ? window + : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; - this._processException(stackInfo.name, stackInfo.message, stackInfo.url, stackInfo.lineno, frames, options); - }, - _prepareFrames: function _prepareFrames(stackInfo, options) { - var self = this; - var frames = []; +// global reference to slice +var _slice = [].slice; +var UNKNOWN_FUNCTION = '?'; - if (stackInfo.stack && stackInfo.stack.length) { - each(stackInfo.stack, function (i, stack) { - var frame = self._normalizeFrame(stack, stackInfo.url); +// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error#Error_types +var ERROR_TYPES_RE = /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/; - if (frame) { - frames.push(frame); - } - }); // e.g. frames captured via captureMessage throw +function getLocationHref() { + if (typeof document === 'undefined' || document.location == null) return ''; - if (options && options.trimHeadFrames) { - for (var j = 0; j < options.trimHeadFrames && j < frames.length; j++) { - frames[j].in_app = false; - } - } - } + return document.location.href; +} - frames = frames.slice(0, this._globalOptions.stackTraceLimit); - return frames; - }, - _normalizeFrame: function _normalizeFrame(frame, stackInfoUrl) { - // normalize the frames data - var normalized = { - filename: frame.url, - lineno: frame.line, - colno: frame.column, - function: frame.func || '?' - }; // Case when we don't have any information about the error - // E.g. throwing a string or raw object, instead of an `Error` in Firefox - // Generating synthetic error doesn't add any value here - // - // We should probably somehow let a user know that they should fix their code - - if (!frame.url) { - normalized.filename = stackInfoUrl; // fallback to whole stacks url from onerror handler - } - - normalized.in_app = !( // determine if an exception came from outside of our app - // first we check the global includePaths list. - !!this._globalOptions.includePaths.test && !this._globalOptions.includePaths.test(normalized.filename) || // Now we check for fun, if the function name is Raven or TraceKit - /(Raven|TraceKit)\./.test(normalized['function']) || // finally, we do a last ditch effort and check for raven.min.js - /raven\.(min\.)?js$/.test(normalized.filename)); - return normalized; - }, - _processException: function _processException(type, message, fileurl, lineno, frames, options) { - var prefixedMessage = (type ? type + ': ' : '') + (message || ''); - - if (!!this._globalOptions.ignoreErrors.test && (this._globalOptions.ignoreErrors.test(message) || this._globalOptions.ignoreErrors.test(prefixedMessage))) { - return; - } - - var stacktrace; +/** + * TraceKit.report: cross-browser processing of unhandled exceptions + * + * Syntax: + * TraceKit.report.subscribe(function(stackInfo) { ... }) + * TraceKit.report.unsubscribe(function(stackInfo) { ... }) + * TraceKit.report(exception) + * try { ...code... } catch(ex) { TraceKit.report(ex); } + * + * Supports: + * - Firefox: full stack trace with line numbers, plus column number + * on top frame; column number is not guaranteed + * - Opera: full stack trace with line and column numbers + * - Chrome: full stack trace with line and column numbers + * - Safari: line and column number for the top frame only; some frames + * may be missing, and column number is not guaranteed + * - IE: line and column number for the top frame only; some frames + * may be missing, and column number is not guaranteed + * + * In theory, TraceKit should work on all of the following versions: + * - IE5.5+ (only 8.0 tested) + * - Firefox 0.9+ (only 3.5+ tested) + * - Opera 7+ (only 10.50 tested; versions 9 and earlier may require + * Exceptions Have Stacktrace to be enabled in opera:config) + * - Safari 3+ (only 4+ tested) + * - Chrome 1+ (only 5+ tested) + * - Konqueror 3.5+ (untested) + * + * Requires TraceKit.computeStackTrace. + * + * Tries to catch all unhandled exceptions and report them to the + * subscribed handlers. Please note that TraceKit.report will rethrow the + * exception. This is REQUIRED in order to get a useful stack trace in IE. + * If the exception does not reach the top of the browser, you will only + * get a stack trace from the point where TraceKit.report was called. + * + * Handlers receive a stackInfo object as described in the + * TraceKit.computeStackTrace docs. + */ +TraceKit.report = (function reportModuleWrapper() { + var handlers = [], + lastArgs = null, + lastException = null, + lastExceptionStack = null; - if (frames && frames.length) { - fileurl = frames[0].filename || fileurl; // Sentry expects frames oldest to newest - // and JS sends them as newest to oldest + /** + * Add a crash handler. + * @param {Function} handler + */ + function subscribe(handler) { + installGlobalHandler(); + handlers.push(handler); + } - frames.reverse(); - stacktrace = { - frames: frames - }; - } else if (fileurl) { - stacktrace = { - frames: [{ - filename: fileurl, - lineno: lineno, - in_app: true - }] - }; + /** + * Remove a crash handler. + * @param {Function} handler + */ + function unsubscribe(handler) { + for (var i = handlers.length - 1; i >= 0; --i) { + if (handlers[i] === handler) { + handlers.splice(i, 1); + } } + } - if (!!this._globalOptions.ignoreUrls.test && this._globalOptions.ignoreUrls.test(fileurl)) { - return; - } + /** + * Remove all crash handlers. + */ + function unsubscribeAll() { + uninstallGlobalHandler(); + handlers = []; + } - if (!!this._globalOptions.whitelistUrls.test && !this._globalOptions.whitelistUrls.test(fileurl)) { + /** + * Dispatch stack information to all handlers. + * @param {Object.} stack + */ + function notifyHandlers(stack, isWindowError) { + var exception = null; + if (isWindowError && !TraceKit.collectWindowErrors) { return; } - - var data = objectMerge({ - // sentry.interfaces.Exception - exception: { - values: [{ - type: type, - value: message, - stacktrace: stacktrace - }] - }, - culprit: fileurl - }, options); // Fire away! - - this._send(data); - }, - _trimPacket: function _trimPacket(data) { - // For now, we only want to truncate the two different messages - // but this could/should be expanded to just trim everything - var max = this._globalOptions.maxMessageLength; - - if (data.message) { - data.message = truncate(data.message, max); - } - - if (data.exception) { - var exception = data.exception.values[0]; - exception.value = truncate(exception.value, max); - } - - var request = data.request; - - if (request) { - if (request.url) { - request.url = truncate(request.url, this._globalOptions.maxUrlLength); + for (var i in handlers) { + if (handlers.hasOwnProperty(i)) { + try { + handlers[i].apply(null, [stack].concat(_slice.call(arguments, 2))); + } catch (inner) { + exception = inner; + } } + } - if (request.Referer) { - request.Referer = truncate(request.Referer, this._globalOptions.maxUrlLength); - } + if (exception) { + throw exception; } + } - if (data.breadcrumbs && data.breadcrumbs.values) this._trimBreadcrumbs(data.breadcrumbs); - return data; - }, + var _oldOnerrorHandler, _onErrorHandlerInstalled; /** - * Truncate breadcrumb values (right now just URLs) + * Ensures all global unhandled exceptions are recorded. + * Supported by Gecko and IE. + * @param {string} msg Error message. + * @param {string} url URL of script that generated the exception. + * @param {(number|string)} lineNo The line number at which the error + * occurred. + * @param {?(number|string)} colNo The column number at which the error + * occurred. + * @param {?Error} ex The actual Error object. */ - _trimBreadcrumbs: function _trimBreadcrumbs(breadcrumbs) { - // known breadcrumb properties with urls - // TODO: also consider arbitrary prop values that start with (https?)?:// - var urlProps = ['to', 'from', 'url'], - urlProp, - crumb, - data; + function traceKitWindowOnError(msg, url, lineNo, colNo, ex) { + var stack = null; + // If 'ex' is ErrorEvent, get real Error from inside + var exception = utils.isErrorEvent(ex) ? ex.error : ex; + // If 'msg' is ErrorEvent, get real message from inside + var message = utils.isErrorEvent(msg) ? msg.message : msg; - for (var i = 0; i < breadcrumbs.values.length; ++i) { - crumb = breadcrumbs.values[i]; - if (!crumb.hasOwnProperty('data') || !isObject(crumb.data) || objectFrozen(crumb.data)) continue; - data = objectMerge({}, crumb.data); + if (lastExceptionStack) { + TraceKit.computeStackTrace.augmentStackTraceWithInitialElement( + lastExceptionStack, + url, + lineNo, + message + ); + processLastException(); + } else if (exception && utils.isError(exception)) { + // non-string `exception` arg; attempt to extract stack trace - for (var j = 0; j < urlProps.length; ++j) { - urlProp = urlProps[j]; + // New chrome and blink send along a real error object + // Let's just report that like a normal error. + // See: https://mikewest.org/2013/08/debugging-runtime-errors-with-window-onerror + stack = TraceKit.computeStackTrace(exception); + notifyHandlers(stack, true); + } else { + var location = { + url: url, + line: lineNo, + column: colNo + }; - if (data.hasOwnProperty(urlProp) && data[urlProp]) { - data[urlProp] = truncate(data[urlProp], this._globalOptions.maxUrlLength); + var name = undefined; + var groups; + + if ({}.toString.call(message) === '[object String]') { + var groups = message.match(ERROR_TYPES_RE); + if (groups) { + name = groups[1]; + message = groups[2]; } } - breadcrumbs.values[i].data = data; - } - }, - _getHttpData: function _getHttpData() { - if (!this._hasNavigator && !this._hasDocument) return; - var httpData = {}; + location.func = UNKNOWN_FUNCTION; - if (this._hasNavigator && _navigator.userAgent) { - httpData.headers = { - 'User-Agent': navigator.userAgent + stack = { + name: name, + message: message, + url: getLocationHref(), + stack: [location] }; - } // Check in `window` instead of `document`, as we may be in ServiceWorker environment - - - if (_window$1.location && _window$1.location.href) { - httpData.url = _window$1.location.href; + notifyHandlers(stack, true); } - if (this._hasDocument && _document.referrer) { - if (!httpData.headers) httpData.headers = {}; - httpData.headers.Referer = _document.referrer; + if (_oldOnerrorHandler) { + return _oldOnerrorHandler.apply(this, arguments); } - return httpData; - }, - _resetBackoff: function _resetBackoff() { - this._backoffDuration = 0; - this._backoffStart = null; - }, - _shouldBackoff: function _shouldBackoff() { - return this._backoffDuration && now() - this._backoffStart < this._backoffDuration; - }, - - /** - * Returns true if the in-process data payload matches the signature - * of the previously-sent data - * - * NOTE: This has to be done at this level because TraceKit can generate - * data from window.onerror WITHOUT an exception object (IE8, IE9, - * other old browsers). This can take the form of an "exception" - * data object with a single frame (derived from the onerror args). - */ - _isRepeatData: function _isRepeatData(current) { - var last = this._lastData; - if (!last || current.message !== last.message || // defined for captureMessage - current.culprit !== last.culprit // defined for captureException/onerror - ) return false; // Stacktrace interface (i.e. from captureMessage) + return false; + } - if (current.stacktrace || last.stacktrace) { - return isSameStacktrace(current.stacktrace, last.stacktrace); - } else if (current.exception || last.exception) { - // Exception interface (i.e. from captureException/onerror) - return isSameException(current.exception, last.exception); + function installGlobalHandler() { + if (_onErrorHandlerInstalled) { + return; } + _oldOnerrorHandler = _window.onerror; + _window.onerror = traceKitWindowOnError; + _onErrorHandlerInstalled = true; + } - return true; - }, - _setBackoffState: function _setBackoffState(request) { - // If we are already in a backoff state, don't change anything - if (this._shouldBackoff()) { + function uninstallGlobalHandler() { + if (!_onErrorHandlerInstalled) { return; } + _window.onerror = _oldOnerrorHandler; + _onErrorHandlerInstalled = false; + _oldOnerrorHandler = undefined; + } - var status = request.status; // 400 - project_id doesn't exist or some other fatal - // 401 - invalid/revoked dsn - // 429 - too many requests - - if (!(status === 400 || status === 401 || status === 429)) return; - var retry; + function processLastException() { + var _lastExceptionStack = lastExceptionStack, + _lastArgs = lastArgs; + lastArgs = null; + lastExceptionStack = null; + lastException = null; + notifyHandlers.apply(null, [_lastExceptionStack, false].concat(_lastArgs)); + } - try { - // If Retry-After is not in Access-Control-Expose-Headers, most - // browsers will throw an exception trying to access it - if (supportsFetch()) { - retry = request.headers.get('Retry-After'); - } else { - retry = request.getResponseHeader('Retry-After'); - } // Retry-After is returned in seconds - - - retry = parseInt(retry, 10) * 1000; - } catch (e) { - /* eslint no-empty:0 */ + /** + * Reports an unhandled Error to TraceKit. + * @param {Error} ex + * @param {?boolean} rethrow If false, do not re-throw the exception. + * Only used for window.onerror to not cause an infinite loop of + * rethrowing. + */ + function report(ex, rethrow) { + var args = _slice.call(arguments, 1); + if (lastExceptionStack) { + if (lastException === ex) { + return; // already caught by an inner catch block, ignore + } else { + processLastException(); + } } - this._backoffDuration = retry ? // If Sentry server returned a Retry-After value, use it - retry : // Otherwise, double the last backoff duration (starts at 1 sec) - this._backoffDuration * 2 || 1000; - this._backoffStart = now(); - }, - _send: function _send(data) { - var globalOptions = this._globalOptions; - - var baseData = { - project: this._globalProject, - logger: globalOptions.logger, - platform: 'javascript' - }, - httpData = this._getHttpData(); - - if (httpData) { - baseData.request = httpData; - } // HACK: delete `trimHeadFrames` to prevent from appearing in outbound payload - - - if (data.trimHeadFrames) delete data.trimHeadFrames; - data = objectMerge(baseData, data); // Merge in the tags and extra separately since objectMerge doesn't handle a deep merge - - data.tags = objectMerge(objectMerge({}, this._globalContext.tags), data.tags); - data.extra = objectMerge(objectMerge({}, this._globalContext.extra), data.extra); // Send along our own collected metadata with extra + var stack = TraceKit.computeStackTrace(ex); + lastExceptionStack = stack; + lastException = ex; + lastArgs = args; - data.extra['session:duration'] = now() - this._startTime; + // If the stack trace is incomplete, wait for 2 seconds for + // slow slow IE to see if onerror occurs or not before reporting + // this exception; otherwise, we will end up with an incomplete + // stack trace + setTimeout(function() { + if (lastException === ex) { + processLastException(); + } + }, stack.incomplete ? 2000 : 0); - if (this._breadcrumbs && this._breadcrumbs.length > 0) { - // intentionally make shallow copy so that additions - // to breadcrumbs aren't accidentally sent in this request - data.breadcrumbs = { - values: [].slice.call(this._breadcrumbs, 0) - }; + if (rethrow !== false) { + throw ex; // re-throw to propagate to the top level (and cause window.onerror) } + } - if (this._globalContext.user) { - // sentry.interfaces.User - data.user = this._globalContext.user; - } // Include the environment if it's defined in globalOptions - + report.subscribe = subscribe; + report.unsubscribe = unsubscribe; + report.uninstall = unsubscribeAll; + return report; +})(); - if (globalOptions.environment) data.environment = globalOptions.environment; // Include the release if it's defined in globalOptions +/** + * TraceKit.computeStackTrace: cross-browser stack traces in JavaScript + * + * Syntax: + * s = TraceKit.computeStackTrace(exception) // consider using TraceKit.report instead (see below) + * Returns: + * s.name - exception name + * s.message - exception message + * s.stack[i].url - JavaScript or HTML file URL + * s.stack[i].func - function name, or empty for anonymous functions (if guessing did not work) + * s.stack[i].args - arguments passed to the function, if known + * s.stack[i].line - line number, if known + * s.stack[i].column - column number, if known + * + * Supports: + * - Firefox: full stack trace with line numbers and unreliable column + * number on top frame + * - Opera 10: full stack trace with line and column numbers + * - Opera 9-: full stack trace with line numbers + * - Chrome: full stack trace with line and column numbers + * - Safari: line and column number for the topmost stacktrace element + * only + * - IE: no line numbers whatsoever + * + * Tries to guess names of anonymous functions by looking for assignments + * in the source code. In IE and Safari, we have to guess source file names + * by searching for function bodies inside all page scripts. This will not + * work for scripts that are loaded cross-domain. + * Here be dragons: some function names may be guessed incorrectly, and + * duplicate functions may be mismatched. + * + * TraceKit.computeStackTrace should only be used for tracing purposes. + * Logging of unhandled exceptions should be done with TraceKit.report, + * which builds on top of TraceKit.computeStackTrace and provides better + * IE support by utilizing the window.onerror event to retrieve information + * about the top of the stack. + * + * Note: In IE and Safari, no stack trace is recorded on the Error object, + * so computeStackTrace instead walks its *own* chain of callers. + * This means that: + * * in Safari, some methods may be missing from the stack trace; + * * in IE, the topmost function in the stack trace will always be the + * caller of computeStackTrace. + * + * This is okay for tracing (because you are likely to be calling + * computeStackTrace from the function you want to be the topmost element + * of the stack trace anyway), but not okay for logging unhandled + * exceptions (because your catch block will likely be far away from the + * inner function that actually caused the exception). + * + */ +TraceKit.computeStackTrace = (function computeStackTraceWrapper() { + // Contents of Exception in various browsers. + // + // SAFARI: + // ex.message = Can't find variable: qq + // ex.line = 59 + // ex.sourceId = 580238192 + // ex.sourceURL = http://... + // ex.expressionBeginOffset = 96 + // ex.expressionCaretOffset = 98 + // ex.expressionEndOffset = 98 + // ex.name = ReferenceError + // + // FIREFOX: + // ex.message = qq is not defined + // ex.fileName = http://... + // ex.lineNumber = 59 + // ex.columnNumber = 69 + // ex.stack = ...stack trace... (see the example below) + // ex.name = ReferenceError + // + // CHROME: + // ex.message = qq is not defined + // ex.name = ReferenceError + // ex.type = not_defined + // ex.arguments = ['aa'] + // ex.stack = ...stack trace... + // + // INTERNET EXPLORER: + // ex.message = ... + // ex.name = ReferenceError + // + // OPERA: + // ex.message = ...message... (see the example below) + // ex.name = ReferenceError + // ex.opera#sourceloc = 11 (pretty much useless, duplicates the info in ex.message) + // ex.stacktrace = n/a; see 'opera:config#UserPrefs|Exceptions Have Stacktrace' - if (globalOptions.release) data.release = globalOptions.release; // Include server_name if it's defined in globalOptions + /** + * Computes stack trace information from the stack property. + * Chrome and Gecko use this property. + * @param {Error} ex + * @return {?Object.} Stack trace information. + */ + function computeStackTraceFromStackProp(ex) { + if (typeof ex.stack === 'undefined' || !ex.stack) return; - if (globalOptions.serverName) data.server_name = globalOptions.serverName; // Cleanup empty properties before sending them to the server + var chrome = /^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i; + var winjs = /^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i; + // NOTE: blob urls are now supposed to always have an origin, therefore it's format + // which is `blob:http://url/path/with-some-uuid`, is matched by `blob.*?:\/` as well + var gecko = /^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i; + // Used to additionally parse URL/line/column from eval frames + var geckoEval = /(\S+) line (\d+)(?: > eval line \d+)* > eval/i; + var chromeEval = /\((\S*)(?::(\d+))(?::(\d+))\)/; + var lines = ex.stack.split('\n'); + var stack = []; + var submatch; + var parts; + var element; + var reference = /^(.*) is undefined$/.exec(ex.message); - Object.keys(data).forEach(function (key) { - if (data[key] == null || data[key] === '' || isEmptyObject(data[key])) { - delete data[key]; + for (var i = 0, j = lines.length; i < j; ++i) { + if ((parts = chrome.exec(lines[i]))) { + var isNative = parts[2] && parts[2].indexOf('native') === 0; // start of line + var isEval = parts[2] && parts[2].indexOf('eval') === 0; // start of line + if (isEval && (submatch = chromeEval.exec(parts[2]))) { + // throw out eval line/column and use top-most line/column number + parts[2] = submatch[1]; // url + parts[3] = submatch[2]; // line + parts[4] = submatch[3]; // column + } + element = { + url: !isNative ? parts[2] : null, + func: parts[1] || UNKNOWN_FUNCTION, + args: isNative ? [parts[2]] : [], + line: parts[3] ? +parts[3] : null, + column: parts[4] ? +parts[4] : null + }; + } else if ((parts = winjs.exec(lines[i]))) { + element = { + url: parts[2], + func: parts[1] || UNKNOWN_FUNCTION, + args: [], + line: +parts[3], + column: parts[4] ? +parts[4] : null + }; + } else if ((parts = gecko.exec(lines[i]))) { + var isEval = parts[3] && parts[3].indexOf(' > eval') > -1; + if (isEval && (submatch = geckoEval.exec(parts[3]))) { + // throw out eval line/column and use top-most line number + parts[3] = submatch[1]; + parts[4] = submatch[2]; + parts[5] = null; // no column when eval + } else if (i === 0 && !parts[5] && typeof ex.columnNumber !== 'undefined') { + // FireFox uses this awesome columnNumber property for its top frame + // Also note, Firefox's column number is 0-based and everything else expects 1-based, + // so adding 1 + // NOTE: this hack doesn't work if top-most frame is eval + stack[0].column = ex.columnNumber + 1; + } + element = { + url: parts[3], + func: parts[1] || UNKNOWN_FUNCTION, + args: parts[2] ? parts[2].split(',') : [], + line: parts[4] ? +parts[4] : null, + column: parts[5] ? +parts[5] : null + }; + } else { + continue; } - }); - - if (isFunction(globalOptions.dataCallback)) { - data = globalOptions.dataCallback(data) || data; - } // Why?????????? - - - if (!data || isEmptyObject(data)) { - return; - } // Check if the request should be filtered or not - - - if (isFunction(globalOptions.shouldSendCallback) && !globalOptions.shouldSendCallback(data)) { - return; - } // Backoff state: Sentry server previously responded w/ an error (e.g. 429 - too many requests), - // so drop requests until "cool-off" period has elapsed. - - if (this._shouldBackoff()) { - this._logDebug('warn', 'Raven dropped error due to backoff: ', data); - - return; - } - - if (typeof globalOptions.sampleRate === 'number') { - if (Math.random() < globalOptions.sampleRate) { - this._sendProcessedPayload(data); + if (!element.func && element.line) { + element.func = UNKNOWN_FUNCTION; } - } else { - this._sendProcessedPayload(data); - } - }, - _getUuid: function _getUuid() { - return uuid4(); - }, - _sendProcessedPayload: function _sendProcessedPayload(data, callback) { - var self = this; - var globalOptions = this._globalOptions; - if (!this.isSetup()) return; // Try and clean up the packet before sending by truncating long values - data = this._trimPacket(data); // ideally duplicate error testing should occur *before* dataCallback/shouldSendCallback, - // but this would require copying an un-truncated copy of the data packet, which can be - // arbitrarily deep (extra_data) -- could be worthwhile? will revisit - - if (!this._globalOptions.allowDuplicates && this._isRepeatData(data)) { - this._logDebug('warn', 'Raven dropped repeat event: ', data); - - return; - } // Send along an event_id if not explicitly passed. - // This event_id can be used to reference the error within Sentry itself. - // Set lastEventId after we know the error should actually be sent - - - this._lastEventId = data.event_id || (data.event_id = this._getUuid()); // Store outbound payload after trim - - this._lastData = data; - - this._logDebug('debug', 'Raven about to send:', data); - - var auth = { - sentry_version: '7', - sentry_client: 'raven-js/' + this.VERSION, - sentry_key: this._globalKey - }; - - if (this._globalSecret) { - auth.sentry_secret = this._globalSecret; + stack.push(element); } - var exception = data.exception && data.exception.values[0]; // only capture 'sentry' breadcrumb is autoBreadcrumbs is truthy - - if (this._globalOptions.autoBreadcrumbs && this._globalOptions.autoBreadcrumbs.sentry) { - this.captureBreadcrumb({ - category: 'sentry', - message: exception ? (exception.type ? exception.type + ': ' : '') + exception.value : data.message, - event_id: data.event_id, - level: data.level || 'error' // presume error unless specified - - }); + if (!stack.length) { + return null; } - var url = this._globalEndpoint; + return { + name: ex.name, + message: ex.message, + url: getLocationHref(), + stack: stack + }; + } - (globalOptions.transport || this._makeRequest).call(this, { + /** + * Adds information about the first frame to incomplete stack traces. + * Safari and IE require this to get complete data on the first frame. + * @param {Object.} stackInfo Stack trace information from + * one of the compute* methods. + * @param {string} url The URL of the script that caused an error. + * @param {(number|string)} lineNo The line number of the script that + * caused an error. + * @param {string=} message The error generated by the browser, which + * hopefully contains the name of the object that caused the error. + * @return {boolean} Whether or not the stack information was + * augmented. + */ + function augmentStackTraceWithInitialElement(stackInfo, url, lineNo, message) { + var initial = { url: url, - auth: auth, - data: data, - options: globalOptions, - onSuccess: function success() { - self._resetBackoff(); - - self._triggerEvent('success', { - data: data, - src: url - }); - - callback && callback(); - }, - onError: function failure(error) { - self._logDebug('error', 'Raven transport failed to send: ', error); - - if (error.request) { - self._setBackoffState(error.request); - } - - self._triggerEvent('failure', { - data: data, - src: url - }); - - error = error || new Error('Raven send failed (no additional details provided)'); - callback && callback(error); - } - }); - }, - _makeRequest: function _makeRequest(opts) { - // Auth is intentionally sent as part of query string (NOT as custom HTTP header) to avoid preflight CORS requests - var url = opts.url + '?' + urlencode(opts.auth); - var evaluatedHeaders = null; - var evaluatedFetchParameters = {}; - - if (opts.options.headers) { - evaluatedHeaders = this._evaluateHash(opts.options.headers); - } - - if (opts.options.fetchParameters) { - evaluatedFetchParameters = this._evaluateHash(opts.options.fetchParameters); - } - - if (supportsFetch()) { - evaluatedFetchParameters.body = stringify_1(opts.data); - var defaultFetchOptions = objectMerge({}, this._fetchDefaults); - var fetchOptions = objectMerge(defaultFetchOptions, evaluatedFetchParameters); + line: lineNo + }; - if (evaluatedHeaders) { - fetchOptions.headers = evaluatedHeaders; - } + if (initial.url && initial.line) { + stackInfo.incomplete = false; - return _window$1.fetch(url, fetchOptions).then(function (response) { - if (response.ok) { - opts.onSuccess && opts.onSuccess(); - } else { - var error = new Error('Sentry error code: ' + response.status); // It's called request only to keep compatibility with XHR interface - // and not add more redundant checks in setBackoffState method + if (!initial.func) { + initial.func = UNKNOWN_FUNCTION; + } - error.request = response; - opts.onError && opts.onError(error); + if (stackInfo.stack.length > 0) { + if (stackInfo.stack[0].url === initial.url) { + if (stackInfo.stack[0].line === initial.line) { + return false; // already in stack trace + } else if ( + !stackInfo.stack[0].line && + stackInfo.stack[0].func === initial.func + ) { + stackInfo.stack[0].line = initial.line; + return false; + } } - })['catch'](function () { - opts.onError && opts.onError(new Error('Sentry error code: network unavailable')); - }); + } + + stackInfo.stack.unshift(initial); + stackInfo.partial = true; + return true; + } else { + stackInfo.incomplete = true; } - var request = _window$1.XMLHttpRequest && new _window$1.XMLHttpRequest(); - if (!request) return; // if browser doesn't support CORS (e.g. IE7), we are out of luck + return false; + } - var hasCORS = 'withCredentials' in request || typeof XDomainRequest !== 'undefined'; - if (!hasCORS) return; + /** + * Computes stack trace information by walking the arguments.caller + * chain at the time the exception occurred. This will cause earlier + * frames to be missed but is the only way to get any stack trace in + * Safari and IE. The top frame is restored by + * {@link augmentStackTraceWithInitialElement}. + * @param {Error} ex + * @return {?Object.} Stack trace information. + */ + function computeStackTraceByWalkingCallerChain(ex, depth) { + var functionName = /function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i, + stack = [], + funcs = {}, + recursion = false, + parts, + item, + source; + + for ( + var curr = computeStackTraceByWalkingCallerChain.caller; + curr && !recursion; + curr = curr.caller + ) { + if (curr === computeStackTrace || curr === TraceKit.report) { + // console.log('skipping internal function'); + continue; + } - if ('withCredentials' in request) { - request.onreadystatechange = function () { - if (request.readyState !== 4) { - return; - } else if (request.status === 200) { - opts.onSuccess && opts.onSuccess(); - } else if (opts.onError) { - var err = new Error('Sentry error code: ' + request.status); - err.request = request; - opts.onError(err); - } + item = { + url: null, + func: UNKNOWN_FUNCTION, + line: null, + column: null }; - } else { - request = new XDomainRequest(); // xdomainrequest cannot go http -> https (or vice versa), - // so always use protocol relative - url = url.replace(/^https?:/, ''); // onreadystatechange not supported by XDomainRequest + if (curr.name) { + item.func = curr.name; + } else if ((parts = functionName.exec(curr.toString()))) { + item.func = parts[1]; + } - if (opts.onSuccess) { - request.onload = opts.onSuccess; + if (typeof item.func === 'undefined') { + try { + item.func = parts.input.substring(0, parts.input.indexOf('{')); + } catch (e) {} } - if (opts.onError) { - request.onerror = function () { - var err = new Error('Sentry error code: XDomainRequest'); - err.request = request; - opts.onError(err); - }; + if (funcs['' + curr]) { + recursion = true; + } else { + funcs['' + curr] = true; } - } - request.open('POST', url); + stack.push(item); + } - if (evaluatedHeaders) { - each(evaluatedHeaders, function (key, value) { - request.setRequestHeader(key, value); - }); + if (depth) { + // console.log('depth is ' + depth); + // console.log('stack is ' + stack.length); + stack.splice(0, depth); } - request.send(stringify_1(opts.data)); - }, - _evaluateHash: function _evaluateHash(hash) { - var evaluated = {}; + var result = { + name: ex.name, + message: ex.message, + url: getLocationHref(), + stack: stack + }; + augmentStackTraceWithInitialElement( + result, + ex.sourceURL || ex.fileName, + ex.line || ex.lineNumber, + ex.message || ex.description + ); + return result; + } - for (var key in hash) { - if (hash.hasOwnProperty(key)) { - var value = hash[key]; - evaluated[key] = typeof value === 'function' ? value() : value; + /** + * Computes a stack trace for an exception. + * @param {Error} ex + * @param {(string|number)=} depth + */ + function computeStackTrace(ex, depth) { + var stack = null; + depth = depth == null ? 0 : +depth; + + try { + stack = computeStackTraceFromStackProp(ex); + if (stack) { + return stack; + } + } catch (e) { + if (TraceKit.debug) { + throw e; } } - return evaluated; - }, - _logDebug: function _logDebug(level) { - if (this._originalConsoleMethods[level] && this.debug) { - // In IE<10 console methods do not have their own 'apply' method - Function.prototype.apply.call(this._originalConsoleMethods[level], this._originalConsole, [].slice.call(arguments, 1)); - } - }, - _mergeContext: function _mergeContext(key, context) { - if (isUndefined(context)) { - delete this._globalContext[key]; - } else { - this._globalContext[key] = objectMerge(this._globalContext[key] || {}, context); + try { + stack = computeStackTraceByWalkingCallerChain(ex, depth + 1); + if (stack) { + return stack; + } + } catch (e) { + if (TraceKit.debug) { + throw e; + } } + return { + name: ex.name, + message: ex.message, + url: getLocationHref() + }; } -}; // Deprecations -Raven$1.prototype.setUser = Raven$1.prototype.setUserContext; -Raven$1.prototype.setReleaseContext = Raven$1.prototype.setRelease; -var raven = Raven$1; + computeStackTrace.augmentStackTraceWithInitialElement = augmentStackTraceWithInitialElement; + computeStackTrace.computeStackTraceFromStackProp = computeStackTraceFromStackProp; -/** - * Enforces a single instance of the Raven client, and the - * main entry point for Raven. If you are a consumer of the - * Raven library, you SHOULD load this file (vs raven.js). - **/ -// This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) + return computeStackTrace; +})(); -var _window = typeof window !== 'undefined' ? window : typeof commonjsGlobal !== 'undefined' ? commonjsGlobal : typeof self !== 'undefined' ? self : {}; +module.exports = TraceKit; -var _Raven = _window.Raven; -var Raven = new raven(); +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"7":7}],9:[function(_dereq_,module,exports){ /* - * Allow multiple versions of Raven to be installed. - * Strip Raven from the global context and returns the instance. - * - * @return {Raven} - */ + json-stringify-safe + Like JSON.stringify, but doesn't throw on circular references. -Raven.noConflict = function () { - _window.Raven = _Raven; - return Raven; -}; + Originally forked from https://github.com/isaacs/json-stringify-safe + version 5.0.1 on 3/8/2017 and modified to handle Errors serialization + and IE8 compatibility. Tests for this are in test/vendor. -Raven.afterLoad(); -var singleton = Raven; + ISC license: https://github.com/isaacs/json-stringify-safe/blob/master/LICENSE +*/ -/** - * Angular.js plugin - * - * Provides an $exceptionHandler for Angular.js - */ +exports = module.exports = stringify; +exports.getSerialize = serializer; -var wrappedCallback$1 = utils.wrappedCallback; // See https://github.com/angular/angular.js/blob/v1.4.7/src/minErr.js +function indexOf(haystack, needle) { + for (var i = 0; i < haystack.length; ++i) { + if (haystack[i] === needle) return i; + } + return -1; +} -var angularPattern = /^\[((?:[$a-zA-Z0-9]+:)?(?:[$a-zA-Z0-9]+))\] (.*?)\n?(\S+)$/; -var moduleName = 'ngRaven'; +function stringify(obj, replacer, spaces, cycleReplacer) { + return JSON.stringify(obj, serializer(replacer, cycleReplacer), spaces); +} -function angularPlugin(Raven, angular) { - angular = angular || window.angular; - if (!angular) return; +// https://github.com/ftlabs/js-abbreviate/blob/fa709e5f139e7770a71827b1893f22418097fbda/index.js#L95-L106 +function stringifyError(value) { + var err = { + // These properties are implemented as magical getters and don't show up in for in + stack: value.stack, + message: value.message, + name: value.name + }; - function RavenProvider() { - this.$get = ['$window', function ($window) { - return Raven; - }]; + for (var i in value) { + if (Object.prototype.hasOwnProperty.call(value, i)) { + err[i] = value[i]; + } } - function ExceptionHandlerProvider($provide) { - $provide.decorator('$exceptionHandler', ['Raven', '$delegate', exceptionHandler]); - } + return err; +} - function exceptionHandler(R, $delegate) { - return function (ex, cause) { - R.captureException(ex, { - extra: { - cause: cause - } - }); - $delegate(ex, cause); +function serializer(replacer, cycleReplacer) { + var stack = []; + var keys = []; + + if (cycleReplacer == null) { + cycleReplacer = function(key, value) { + if (stack[0] === value) { + return '[Circular ~]'; + } + return '[Circular ~.' + keys.slice(0, indexOf(stack, value)).join('.') + ']'; }; } - angular.module(moduleName, []).provider('Raven', RavenProvider).config(['$provide', ExceptionHandlerProvider]); - Raven.setDataCallback(wrappedCallback$1(function (data) { - return angularPlugin._normalizeData(data); - })); + return function(key, value) { + if (stack.length > 0) { + var thisPos = indexOf(stack, this); + ~thisPos ? stack.splice(thisPos + 1) : stack.push(this); + ~thisPos ? keys.splice(thisPos, Infinity, key) : keys.push(key); + + if (~indexOf(stack, value)) { + value = cycleReplacer.call(this, key, value); + } + } else { + stack.push(value); + } + + return replacer == null + ? value instanceof Error ? stringifyError(value) : value + : replacer.call(this, key, value); + }; } -angularPlugin._normalizeData = function (data) { - // We only care about mutating an exception - var exception = data.exception; +},{}],10:[function(_dereq_,module,exports){ +/* + * JavaScript MD5 + * https://github.com/blueimp/JavaScript-MD5 + * + * Copyright 2011, Sebastian Tschan + * https://blueimp.net + * + * Licensed under the MIT license: + * https://opensource.org/licenses/MIT + * + * Based on + * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message + * Digest Algorithm, as defined in RFC 1321. + * Version 2.2 Copyright (C) Paul Johnston 1999 - 2009 + * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet + * Distributed under the BSD License + * See http://pajhome.org.uk/crypt/md5 for more info. + */ - if (exception) { - exception = exception.values[0]; - var matches = angularPattern.exec(exception.value); +/* +* Add integers, wrapping at 2^32. This uses 16-bit operations internally +* to work around bugs in some JS interpreters. +*/ +function safeAdd(x, y) { + var lsw = (x & 0xffff) + (y & 0xffff); + var msw = (x >> 16) + (y >> 16) + (lsw >> 16); + return (msw << 16) | (lsw & 0xffff); +} - if (matches) { - // This type now becomes something like: $rootScope:inprog - exception.type = matches[1]; - exception.value = matches[2]; - data.message = exception.type + ': ' + exception.value; // auto set a new tag specifically for the angular error url +/* +* Bitwise rotate a 32-bit number to the left. +*/ +function bitRotateLeft(num, cnt) { + return (num << cnt) | (num >>> (32 - cnt)); +} - data.extra.angularDocs = matches[3].substr(0, 250); - } +/* +* These functions implement the four basic operations the algorithm uses. +*/ +function md5cmn(q, a, b, x, s, t) { + return safeAdd(bitRotateLeft(safeAdd(safeAdd(a, q), safeAdd(x, t)), s), b); +} +function md5ff(a, b, c, d, x, s, t) { + return md5cmn((b & c) | (~b & d), a, b, x, s, t); +} +function md5gg(a, b, c, d, x, s, t) { + return md5cmn((b & d) | (c & ~d), a, b, x, s, t); +} +function md5hh(a, b, c, d, x, s, t) { + return md5cmn(b ^ c ^ d, a, b, x, s, t); +} +function md5ii(a, b, c, d, x, s, t) { + return md5cmn(c ^ (b | ~d), a, b, x, s, t); +} + +/* +* Calculate the MD5 of an array of little-endian words, and a bit length. +*/ +function binlMD5(x, len) { + /* append padding */ + x[len >> 5] |= 0x80 << (len % 32); + x[(((len + 64) >>> 9) << 4) + 14] = len; + + var i; + var olda; + var oldb; + var oldc; + var oldd; + var a = 1732584193; + var b = -271733879; + var c = -1732584194; + var d = 271733878; + + for (i = 0; i < x.length; i += 16) { + olda = a; + oldb = b; + oldc = c; + oldd = d; + + a = md5ff(a, b, c, d, x[i], 7, -680876936); + d = md5ff(d, a, b, c, x[i + 1], 12, -389564586); + c = md5ff(c, d, a, b, x[i + 2], 17, 606105819); + b = md5ff(b, c, d, a, x[i + 3], 22, -1044525330); + a = md5ff(a, b, c, d, x[i + 4], 7, -176418897); + d = md5ff(d, a, b, c, x[i + 5], 12, 1200080426); + c = md5ff(c, d, a, b, x[i + 6], 17, -1473231341); + b = md5ff(b, c, d, a, x[i + 7], 22, -45705983); + a = md5ff(a, b, c, d, x[i + 8], 7, 1770035416); + d = md5ff(d, a, b, c, x[i + 9], 12, -1958414417); + c = md5ff(c, d, a, b, x[i + 10], 17, -42063); + b = md5ff(b, c, d, a, x[i + 11], 22, -1990404162); + a = md5ff(a, b, c, d, x[i + 12], 7, 1804603682); + d = md5ff(d, a, b, c, x[i + 13], 12, -40341101); + c = md5ff(c, d, a, b, x[i + 14], 17, -1502002290); + b = md5ff(b, c, d, a, x[i + 15], 22, 1236535329); + + a = md5gg(a, b, c, d, x[i + 1], 5, -165796510); + d = md5gg(d, a, b, c, x[i + 6], 9, -1069501632); + c = md5gg(c, d, a, b, x[i + 11], 14, 643717713); + b = md5gg(b, c, d, a, x[i], 20, -373897302); + a = md5gg(a, b, c, d, x[i + 5], 5, -701558691); + d = md5gg(d, a, b, c, x[i + 10], 9, 38016083); + c = md5gg(c, d, a, b, x[i + 15], 14, -660478335); + b = md5gg(b, c, d, a, x[i + 4], 20, -405537848); + a = md5gg(a, b, c, d, x[i + 9], 5, 568446438); + d = md5gg(d, a, b, c, x[i + 14], 9, -1019803690); + c = md5gg(c, d, a, b, x[i + 3], 14, -187363961); + b = md5gg(b, c, d, a, x[i + 8], 20, 1163531501); + a = md5gg(a, b, c, d, x[i + 13], 5, -1444681467); + d = md5gg(d, a, b, c, x[i + 2], 9, -51403784); + c = md5gg(c, d, a, b, x[i + 7], 14, 1735328473); + b = md5gg(b, c, d, a, x[i + 12], 20, -1926607734); + + a = md5hh(a, b, c, d, x[i + 5], 4, -378558); + d = md5hh(d, a, b, c, x[i + 8], 11, -2022574463); + c = md5hh(c, d, a, b, x[i + 11], 16, 1839030562); + b = md5hh(b, c, d, a, x[i + 14], 23, -35309556); + a = md5hh(a, b, c, d, x[i + 1], 4, -1530992060); + d = md5hh(d, a, b, c, x[i + 4], 11, 1272893353); + c = md5hh(c, d, a, b, x[i + 7], 16, -155497632); + b = md5hh(b, c, d, a, x[i + 10], 23, -1094730640); + a = md5hh(a, b, c, d, x[i + 13], 4, 681279174); + d = md5hh(d, a, b, c, x[i], 11, -358537222); + c = md5hh(c, d, a, b, x[i + 3], 16, -722521979); + b = md5hh(b, c, d, a, x[i + 6], 23, 76029189); + a = md5hh(a, b, c, d, x[i + 9], 4, -640364487); + d = md5hh(d, a, b, c, x[i + 12], 11, -421815835); + c = md5hh(c, d, a, b, x[i + 15], 16, 530742520); + b = md5hh(b, c, d, a, x[i + 2], 23, -995338651); + + a = md5ii(a, b, c, d, x[i], 6, -198630844); + d = md5ii(d, a, b, c, x[i + 7], 10, 1126891415); + c = md5ii(c, d, a, b, x[i + 14], 15, -1416354905); + b = md5ii(b, c, d, a, x[i + 5], 21, -57434055); + a = md5ii(a, b, c, d, x[i + 12], 6, 1700485571); + d = md5ii(d, a, b, c, x[i + 3], 10, -1894986606); + c = md5ii(c, d, a, b, x[i + 10], 15, -1051523); + b = md5ii(b, c, d, a, x[i + 1], 21, -2054922799); + a = md5ii(a, b, c, d, x[i + 8], 6, 1873313359); + d = md5ii(d, a, b, c, x[i + 15], 10, -30611744); + c = md5ii(c, d, a, b, x[i + 6], 15, -1560198380); + b = md5ii(b, c, d, a, x[i + 13], 21, 1309151649); + a = md5ii(a, b, c, d, x[i + 4], 6, -145523070); + d = md5ii(d, a, b, c, x[i + 11], 10, -1120210379); + c = md5ii(c, d, a, b, x[i + 2], 15, 718787259); + b = md5ii(b, c, d, a, x[i + 9], 21, -343485551); + + a = safeAdd(a, olda); + b = safeAdd(b, oldb); + c = safeAdd(c, oldc); + d = safeAdd(d, oldd); } + return [a, b, c, d]; +} - return data; -}; +/* +* Convert an array of little-endian words to a string +*/ +function binl2rstr(input) { + var i; + var output = ''; + var length32 = input.length * 32; + for (i = 0; i < length32; i += 8) { + output += String.fromCharCode((input[i >> 5] >>> (i % 32)) & 0xff); + } + return output; +} -angularPlugin.moduleName = moduleName; -var angular = angularPlugin; +/* +* Convert a raw string to an array of little-endian words +* Characters >255 have their high-byte silently ignored. +*/ +function rstr2binl(input) { + var i; + var output = []; + output[(input.length >> 2) - 1] = undefined; + for (i = 0; i < output.length; i += 1) { + output[i] = 0; + } + var length8 = input.length * 8; + for (i = 0; i < length8; i += 8) { + output[i >> 5] |= (input.charCodeAt(i / 8) & 0xff) << (i % 32); + } + return output; +} -/*global define*/ +/* +* Calculate the MD5 of a raw string +*/ +function rstrMD5(s) { + return binl2rstr(binlMD5(rstr2binl(s), s.length * 8)); +} -/** - * require.js plugin - * - * Automatically wrap define/require callbacks. (Experimental) - */ +/* +* Calculate the HMAC-MD5, of a key and some data (raw strings) +*/ +function rstrHMACMD5(key, data) { + var i; + var bkey = rstr2binl(key); + var ipad = []; + var opad = []; + var hash; + ipad[15] = opad[15] = undefined; + if (bkey.length > 16) { + bkey = binlMD5(bkey, key.length * 8); + } + for (i = 0; i < 16; i += 1) { + ipad[i] = bkey[i] ^ 0x36363636; + opad[i] = bkey[i] ^ 0x5c5c5c5c; + } + hash = binlMD5(ipad.concat(rstr2binl(data)), 512 + data.length * 8); + return binl2rstr(binlMD5(opad.concat(hash), 512 + 128)); +} -function requirePlugin(Raven) { - if (typeof undefined === 'function' && undefined.amd) { - window.define = Raven.wrap({ - deep: false - }, undefined); - window.require = Raven.wrap({ - deep: false - }, commonjsRequire); +/* +* Convert a raw string to a hex string +*/ +function rstr2hex(input) { + var hexTab = '0123456789abcdef'; + var output = ''; + var x; + var i; + for (i = 0; i < input.length; i += 1) { + x = input.charCodeAt(i); + output += hexTab.charAt((x >>> 4) & 0x0f) + hexTab.charAt(x & 0x0f); } + return output; } -var require_1 = requirePlugin; +/* +* Encode a string as utf-8 +*/ +function str2rstrUTF8(input) { + return unescape(encodeURIComponent(input)); +} -/* This file was generated by './scripts/generate-plugin-combinations.js'! */ +/* +* Take string arguments and return either raw or hex encoded strings +*/ +function rawMD5(s) { + return rstrMD5(str2rstrUTF8(s)); +} +function hexMD5(s) { + return rstr2hex(rawMD5(s)); +} +function rawHMACMD5(k, d) { + return rstrHMACMD5(str2rstrUTF8(k), str2rstrUTF8(d)); +} +function hexHMACMD5(k, d) { + return rstr2hex(rawHMACMD5(k, d)); +} -singleton.addPlugin(angular).addPlugin(require_1); -var angular_require = {}; +function md5(string, key, raw) { + if (!key) { + if (!raw) { + return hexMD5(string); + } + return rawMD5(string); + } + if (!raw) { + return hexHMACMD5(key, string); + } + return rawHMACMD5(key, string); +} -return angular_require; +module.exports = md5; -}))); +},{}]},{},[6,1,2])(6) +}); \ No newline at end of file diff --git a/dist/angular,require/raven.min.js b/dist/angular,require/raven.min.js index 371cd3627ddf..d98192e8e9d6 100644 --- a/dist/angular,require/raven.min.js +++ b/dist/angular,require/raven.min.js @@ -1,3 +1,4 @@ -/*! Raven.js 3.22.2 (1b6187b) | github.com/getsentry/raven-js */ -!function(a,b){"object"==typeof exports&&"undefined"!=typeof module?module.exports=b():"function"==typeof define&&define.amd?define(b):a.Raven=b()}(this,function(){"use strict";function a(a,b){return b={exports:{}},a(b,b.exports),b.exports}function b(a){return(b="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(a){return typeof a}:function(a){return a&&"function"==typeof Symbol&&a.constructor===Symbol&&a!==Symbol.prototype?"symbol":typeof a})(a)}function c(a){return"object"===b(a)&&null!==a}function d(a){switch({}.toString.call(a)){case"[object Error]":return!0;case"[object Exception]":return!0;case"[object DOMException]":return!0;default:return a instanceof Error}}function e(a){return l()&&"[object ErrorEvent]"==={}.toString.call(a)}function f(a){return void 0===a}function g(a){return"function"==typeof a}function h(a){return"[object Object]"===Object.prototype.toString.call(a)}function i(a){return"[object String]"===Object.prototype.toString.call(a)}function j(a){return"[object Array]"===Object.prototype.toString.call(a)}function k(a){if(!h(a))return!1;for(var b in a)if(a.hasOwnProperty(b))return!1;return!0}function l(){try{return new ErrorEvent(""),!0}catch(a){return!1}}function m(){if(!("fetch"in O))return!1;try{return new Headers,new Request(""),new Response,!0}catch(a){return!1}}function n(a){function b(b,c){var d=a(b)||b;return c?c(d)||d:d}return b}function o(a,b){var c,d;if(f(a.length))for(c in a)s(a,c)&&b.call(null,c,a[c]);else if(d=a.length)for(c=0;c ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function y(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&i(b))for(c=b.split(/\s+/),f=0;f=0;--b)l[b]===a&&l.splice(b,1)}function c(){g(),l=[]}function d(a,b){var c=null;if(!b||Q.collectWindowErrors){for(var d in l)if(l.hasOwnProperty(d))try{l[d].apply(null,[a].concat(S.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function e(a,b,c,e,f){var g=null,i=P.isErrorEvent(f)?f.error:f,k=P.isErrorEvent(a)?a.message:a;if(o)Q.computeStackTrace.augmentStackTraceWithInitialElement(o,b,c,k),h();else if(i&&P.isError(i))g=Q.computeStackTrace(i),d(g,!0);else{var l,m={url:b,line:c,column:e},n=void 0;if("[object String]"==={}.toString.call(k)){var l=k.match(U);l&&(n=l[1],k=l[2])}m.func=T,g={name:n,message:k,url:F(),stack:[m]},d(g,!0)}return!!j&&j.apply(this,arguments)}function f(){k||(j=R.onerror,R.onerror=e,k=!0)}function g(){k&&(R.onerror=j,k=!1,j=void 0)}function h(){var a=o,b=m;m=null,o=null,n=null,d.apply(null,[a,!1].concat(b))}function i(a,b){var c=S.call(arguments,1);if(o){if(n===a)return;h()}var d=Q.computeStackTrace(a);if(o=d,n=a,m=c,setTimeout(function(){n===a&&h()},d.incomplete?2e3:0),b!==!1)throw a}var j,k,l=[],m=null,n=null,o=null;return i.subscribe=a,i.unsubscribe=b,i.uninstall=c,i}(),Q.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,d,e=/^\s*at (.*?) ?\(((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,f=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|\[native).*?|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,g=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,h=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,i=/\((\S*)(?::(\d+))(?::(\d+))\)/,j=a.stack.split("\n"),k=[],l=(/^(.*) is undefined$/.exec(a.message),0),m=j.length;l eval")>-1;o&&(b=h.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==l||c[5]||"undefined"==typeof a.columnNumber||(k[0].column=a.columnNumber+1),d={url:c[3],func:c[1]||T,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}!d.func&&d.line&&(d.func=T),k.push(d)}return k.length?{name:a.name,message:a.message,url:F(),stack:k}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=T),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,e){for(var f,g,h=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,i=[],j={},k=!1,l=c.caller;l&&!k;l=l.caller)if(l!==d&&l!==Q.report){if(g={url:null,func:T,line:null,column:null},l.name?g.func=l.name:(f=h.exec(l.toString()))&&(g.func=f[1]),"undefined"==typeof g.func)try{g.func=f.input.substring(0,f.input.indexOf("{"))}catch(m){}j[""+l]?k=!0:j[""+l]=!0,i.push(g)}e&&i.splice(0,e);var n={name:a.name,message:a.message,url:F(),stack:i};return b(n,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),n}function d(b,d){var e=null;d=null==d?0:+d;try{if(e=a(b))return e}catch(f){if(Q.debug)throw f}try{if(e=c(b,d+1))return e}catch(f){if(Q.debug)throw f}return{name:b.name,message:b.message,url:F()}}return d.augmentStackTraceWithInitialElement=b,d.computeStackTraceFromStackProp=a,d}();var V=Q,W=a(function(a,b){function c(a,b){for(var c=0;c0){var i=c(d,this);~i?d.splice(i+1):d.push(this),~i?f.splice(i,1/0,g):f.push(g),~c(d,h)&&(h=b.call(this,g,h))}else d.push(h);return null==a?h instanceof Error?e(h):h:a.call(this,g,h)}}b=a.exports=d,b.getSerialize=f});G.prototype=new Error,G.prototype.constructor=G;var X=G,Y=function(a,b,c){var d=a[b],e=a;if(b in a){var f="warn"===b?"warning":b;a[b]=function(){var a=[].slice.call(arguments),g=P.safeJoin(a," "),h={level:f,logger:"console",extra:{arguments:a}};"assert"===b?a[0]===!1&&(g="Assertion failed: "+(P.safeJoin(a.slice(1)," ")||"console.assert"),h.extra.arguments=a.slice(1),c&&c(g,h)):c&&c(g,h),d&&Function.prototype.apply.call(d,e,a)}}},Z={wrapMethod:Y},$=P.isError,_=P.isObject,aa=P.isErrorEvent,ba=P.isUndefined,ca=P.isFunction,da=P.isString,ea=P.isArray,fa=P.isEmptyObject,ga=P.each,ha=P.objectMerge,ia=P.truncate,ja=P.objectFrozen,ka=P.hasKey,la=P.joinRegExp,ma=P.urlencode,na=P.uuid4,oa=P.htmlTreeAsString,pa=P.isSameException,qa=P.isSameStacktrace,ra=P.parseUrl,sa=P.fill,ta=P.supportsFetch,ua=Z.wrapMethod,va="source protocol user pass host port path".split(" "),wa=/^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/,xa="undefined"!=typeof window?window:"undefined"!=typeof M?M:"undefined"!=typeof self?self:{},ya=xa.document,za=xa.navigator;J.prototype={VERSION:"3.22.2",debug:!1,TraceKit:V,config:function(a,b){var c=this;if(c.i)return this.D("error","Error: Raven has already been configured"),c;if(!a)return c;var d=c.m;b&&ga(b,function(a,b){"tags"===a||"extra"===a||"user"===a?c.l[a]=b:d[a]=b}),c.setDSN(a),d.ignoreErrors.push(/^Script error\.?$/),d.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/),d.ignoreErrors=la(d.ignoreErrors),d.ignoreUrls=!!d.ignoreUrls.length&&la(d.ignoreUrls),d.whitelistUrls=!!d.whitelistUrls.length&&la(d.whitelistUrls),d.includePaths=la(d.includePaths),d.maxBreadcrumbs=Math.max(0,Math.min(d.maxBreadcrumbs||100,100));var e={xhr:!0,console:!0,dom:!0,location:!0,sentry:!0},f=d.autoBreadcrumbs;"[object Object]"==={}.toString.call(f)?f=ha(e,f):f!==!1&&(f=e),d.autoBreadcrumbs=f;var g={tryCatch:!0},h=d.instrument;return"[object Object]"==={}.toString.call(h)?h=ha(g,h):h!==!1&&(h=g),d.instrument=h,V.collectWindowErrors=!!d.collectWindowErrors,c},install:function(){var a=this;return a.isSetup()&&!a.p&&(V.report.subscribe(function(){a.E.apply(a,arguments)}),a.F(),a.m.instrument&&a.m.instrument.tryCatch&&a.G(),a.m.autoBreadcrumbs&&a.H(),a.I(),a.p=!0),Error.stackTraceLimit=a.m.stackTraceLimit,this},setDSN:function(a){var b=this,c=b.J(a),d=c.path.lastIndexOf("/"),e=c.path.substr(1,d);b.K=a,b.j=c.user,b.L=c.pass&&c.pass.substr(1),b.k=c.path.substr(d+1),b.i=b.M(c),b.N=b.i+"/"+e+"api/"+b.k+"/store/",this.A()},context:function(a,b,c){return ca(a)&&(c=b||[],b=a,a=void 0),this.wrap(a,b).apply(this,c)},wrap:function(a,b,c){function d(){var d=[],f=arguments.length,g=!a||a&&a.deep!==!1;for(c&&ca(c)&&c.apply(this,arguments);f--;)d[f]=g?e.wrap(a,arguments[f]):arguments[f];try{return b.apply(this,d)}catch(h){throw e.O(),e.captureException(h,a),h}}var e=this;if(ba(b)&&!ca(a))return a;if(ca(a)&&(b=a,a=void 0),!ca(b))return b;try{if(b.a)return b;if(b.P)return b.P}catch(f){return b}for(var g in b)ka(b,g)&&(d[g]=b[g]);return d.prototype=b.prototype,b.P=d,d.a=!0,d.b=b,d},uninstall:function(){return V.report.uninstall(),this.Q(),this.R(),this.S(),Error.stackTraceLimit=this.q,this.p=!1,this},captureException:function(a,b){b=ha({trimHeadFrames:0},b?b:{});var c=!$(a),d=!aa(a),e=aa(a)&&!a.error;if(c&&d||e)return this.captureMessage(a,ha(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}));aa(a)&&(a=a.error),this.f=a;try{var f=V.computeStackTrace(a);this.T(f,b)}catch(g){if(a!==g)throw g}return this},captureMessage:function(a,b){if(!this.m.ignoreErrors.test||!this.m.ignoreErrors.test(a)){b=b||{};var c,d=ha({message:a+""},b);try{throw new Error(a)}catch(e){c=e}c.name=null;var f=V.computeStackTrace(c),g=ea(f.stack)&&f.stack[1],h=g&&g.url||"";if((!this.m.ignoreUrls.test||!this.m.ignoreUrls.test(h))&&(!this.m.whitelistUrls.test||this.m.whitelistUrls.test(h))){if(this.m.stacktrace||b&&b.stacktrace){b=ha({fingerprint:a,trimHeadFrames:(b.trimHeadFrames||0)+1},b);var i=this.U(f,b);d.stacktrace={frames:i.reverse()}}return this.V(d),this}}},captureBreadcrumb:function(a){var b=ha({timestamp:H()/1e3},a);if(ca(this.m.breadcrumbCallback)){var c=this.m.breadcrumbCallback(b);if(_(c)&&!fa(c))b=c;else if(c===!1)return this}return this.w.push(b),this.w.length>this.m.maxBreadcrumbs&&this.w.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.t.push([a,b]),this.p&&this.I(),this},setUserContext:function(a){return this.l.user=a,this},setExtraContext:function(a){return this.W("extra",a),this},setTagsContext:function(a){return this.W("tags",a),this},clearContext:function(){return this.l={},this},getContext:function(){return JSON.parse(W(this.l))},setEnvironment:function(a){return this.m.environment=a,this},setRelease:function(a){return this.m.release=a,this},setDataCallback:function(a){var b=this.m.dataCallback;return this.m.dataCallback=I(b,a),this},setBreadcrumbCallback:function(a){var b=this.m.breadcrumbCallback;return this.m.breadcrumbCallback=I(b,a),this},setShouldSendCallback:function(a){var b=this.m.shouldSendCallback;return this.m.shouldSendCallback=I(b,a),this},setTransport:function(a){return this.m.transport=a,this},lastException:function(){return this.f},lastEventId:function(){return this.h},isSetup:function(){return!!this.c&&(!!this.i||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.D("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=xa.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(ya){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new X("Missing eventId");var c=a.dsn||this.K;if(!c)throw new X("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.l.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.M(this.J(c)),h=ya.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(ya.head||ya.body).appendChild(h)}},O:function(){var a=this;this.o+=1,setTimeout(function(){a.o-=1})},X:function(a,b){var c,d;if(this.d){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),ya.createEvent?(c=ya.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=ya.createEventObject(),c.eventType=a);for(d in b)ka(b,d)&&(c[d]=b[d]);if(ya.createEvent)ya.dispatchEvent(c);else try{ya.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},Y:function(a){var b=this;return function(c){if(b.Z=null,b.x!==c){b.x=c;var d;try{d=oa(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},$:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.Z;g||a.Y("input")(c),clearTimeout(g),a.Z=setTimeout(function(){a.Z=null},b)}}},_:function(a,b){var c=ra(this.y.href),d=ra(b),e=ra(a);this.z=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},F:function(){var a=this;a.aa=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.a?a.aa.apply(this.b,arguments):a.aa.apply(this,arguments)}},Q:function(){this.aa&&(Function.prototype.toString=this.aa)},G:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b._(b.z,c+""),a.apply(this,arguments)}};sa(history,"pushState",j,d),sa(history,"replaceState",j,d)}if(c.console&&"console"in xa&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};ga(["debug","info","warn","error","log"],function(a,b){ua(console,b,k)})}},R:function(){for(var a;this.v.length;){a=this.v.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},S:function(){for(var a in this.s)this.r[a]=this.s[a]},I:function(){var a=this;ga(this.t,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},J:function(a){var b=wa.exec(a),c={},d=7;try{for(;d--;)c[va[d]]=b[d]||""}catch(e){throw new X("Invalid DSN: "+a)}if(c.pass&&!this.m.allowSecretKey)throw new X("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},M:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},E:function(){this.o||this.T.apply(this,arguments)},T:function(a,b){var c=this.U(a,b);this.X("handle",{stackInfo:a,options:b}),this.ca(a.name,a.message,a.url,a.lineno,c,b)},U:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(ga(a.stack,function(b,e){var f=c.da(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.w,0)}),this.l.user&&(a.user=this.l.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||fa(a[b]))&&delete a[b]}),ca(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!fa(a)&&(!ca(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.ja()?void this.D("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random()this.l.maxBreadcrumbs&&this.v.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.s.push([a,b]),this.o&&this.G(),this},setUserContext:function(a){return this.k.user=a,this},setExtraContext:function(a){return this.$("extra",a),this},setTagsContext:function(a){return this.$("tags",a),this},clearContext:function(){return this.k={},this},getContext:function(){return JSON.parse(h(this.k))},setEnvironment:function(a){return this.l.environment=a,this},setRelease:function(a){return this.l.release=a,this},setDataCallback:function(a){var b=this.l.dataCallback;return this.l.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.l.breadcrumbCallback;return this.l.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.l.shouldSendCallback;return this.l.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.l.transport=a,this},lastException:function(){return this.e},lastEventId:function(){return this.g},isSetup:function(){return!!this.b&&(!!this.h||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.A("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=P.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(Q){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.I;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.k.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.K(this.H(c)),h=Q.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(Q.head||Q.body).appendChild(h)}},M:function(){var a=this;this.n+=1,setTimeout(function(){a.n-=1})},_:function(a,b){var c,d;if(this.c){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),Q.createEvent?(c=Q.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=Q.createEventObject(),c.eventType=a);for(d in b)y(b,d)&&(c[d]=b[d]);if(Q.createEvent)Q.dispatchEvent(c);else try{Q.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},aa:function(a){var b=this;return function(c){if(b.ba=null,b.w!==c){b.w=c;var d;try{d=C(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ca:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.ba;g||a.aa("input")(c),clearTimeout(g),a.ba=setTimeout(function(){a.ba=null},b)}}},da:function(a,b){var c=F(this.x.href),d=F(b),e=F(a);this.y=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},D:function(){var a=this;a.ea=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.N?a.ea.apply(this.P,arguments):a.ea.apply(this,arguments)}},R:function(){this.ea&&(Function.prototype.toString=this.ea)},E:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.da(b.y,c+""),a.apply(this,arguments)}};G(history,"pushState",j,d),G(history,"replaceState",j,d)}if(c.console&&"console"in P&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};u(["debug","info","warn","error","log"],function(a,b){M(console,b,k)})}},S:function(){for(var a;this.u.length;){a=this.u.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},T:function(){for(var a in this.r)this.q[a]=this.r[a]},G:function(){var a=this;u(this.s,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},H:function(a){var b=O.exec(a),c={},d=7;try{for(;d--;)c[N[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.l.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},K:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},B:function(){this.n||this.W.apply(this,arguments)},W:function(a,b){var c=this.Y(a,b);this._("handle",{stackInfo:a,options:b}),this.ga(a.name,a.message,a.url,a.lineno,c,b)},Y:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(u(a.stack,function(b,e){var f=c.ha(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.v,0)}),this.k.user&&(a.user=this.k.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),a=this.qa(a),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||t(a[b]))&&delete a[b]}),q(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!t(a)&&(!q(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.na()?void this.A("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function B(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&j(b))for(c=b.split(/\s+/),f=0;fc?M(a,b-1):d}function N(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?T:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function O(a,b){function c(a){return k(a)?a.map(function(a){return c(a)}):i(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!k(b)||k(b)&&0===b.length)return a;var d,e=w(b),f="********";try{d=JSON.parse(P(a))}catch(g){return a}return c(d)}var P=a(9),Q="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},R=3,S=51200,T=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isUndefined:g,isFunction:h,isPlainObject:i,isString:j,isArray:k,isEmptyObject:l,supportsErrorEvent:m,supportsFetch:n,supportsReferrerPolicy:o,supportsPromiseRejectionEvent:p,wrappedCallback:q,each:r,objectMerge:s,truncate:u,objectFrozen:t,hasKey:v,joinRegExp:w,urlencode:x,uuid4:z,htmlTreeAsString:A,htmlElementAsString:B,isSameException:E,isSameStacktrace:F,parseUrl:y,fill:G,safeJoin:H,serializeException:M,serializeKeysForMessage:N,sanitize:O}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{9:9}],8:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}var e=a(7),f={collectWindowErrors:!0,debug:!1},g="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},h=[].slice,i="?",j=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;f.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function k(a,b){var c=null;if(!b||f.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(h.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,g,h){var l=null,m=e.isErrorEvent(h)?h.error:h,n=e.isErrorEvent(a)?a.message:a;if(v)f.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&e.isError(m))l=f.computeStackTrace(m),k(l,!0);else{var p,r={url:b,line:c,column:g},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(j);p&&(s=p[1],n=p[2])}r.func=i,l={name:s,message:n,url:d(),stack:[r]},k(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=g.onerror,g.onerror=l,r=!0)}function n(){r&&(g.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,k.apply(null,[a,!1].concat(b))}function p(a,b){var c=h.call(arguments,1);if(v){if(u===a)return;o()}var d=f.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),f.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,e,f=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,g=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,h=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,j=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,k=/\((\S*)(?::(\d+))(?::(\d+))\)/,l=a.stack.split("\n"),m=[],n=(/^(.*) is undefined$/.exec(a.message),0),o=l.length;n eval")>-1;q&&(b=j.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==n||c[5]||"undefined"==typeof a.columnNumber||(m[0].column=a.columnNumber+1),e={url:c[3],func:c[1]||i,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}!e.func&&e.line&&(e.func=i),m.push(e)}return m.length?{name:a.name,message:a.message,url:d(),stack:m}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=i),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,g){for(var h,j,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==e&&o!==f.report){if(j={url:null,func:i,line:null,column:null},o.name?j.func=o.name:(h=k.exec(o.toString()))&&(j.func=h[1]),"undefined"==typeof j.func)try{j.func=h.input.substring(0,h.input.indexOf("{"))}catch(p){}m[""+o]?n=!0:m[""+o]=!0,l.push(j)}g&&l.splice(0,g);var q={name:a.name,message:a.message,url:d(),stack:l};return b(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),q}function e(b,e){var g=null;e=null==e?0:+e;try{if(g=a(b))return g}catch(h){if(f.debug)throw h}try{if(g=c(b,e+1))return g}catch(h){if(f.debug)throw h}return{name:b.name,message:b.message,url:d()}}return e.augmentStackTraceWithInitialElement=b,e.computeStackTraceFromStackProp=a,e}(),b.exports=f}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{7:7}],9:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}],10:[function(a,b,c){function d(a,b){var c=(65535&a)+(65535&b),d=(a>>16)+(b>>16)+(c>>16);return d<<16|65535&c}function e(a,b){return a<>>32-b}function f(a,b,c,f,g,h){return d(e(d(d(b,a),d(f,h)),g),c)}function g(a,b,c,d,e,g,h){return f(b&c|~b&d,a,b,e,g,h)}function h(a,b,c,d,e,g,h){return f(b&d|c&~d,a,b,e,g,h)}function i(a,b,c,d,e,g,h){return f(b^c^d,a,b,e,g,h)}function j(a,b,c,d,e,g,h){return f(c^(b|~d),a,b,e,g,h)}function k(a,b){a[b>>5]|=128<>>9<<4)+14]=b;var c,e,f,k,l,m=1732584193,n=-271733879,o=-1732584194,p=271733878;for(c=0;c>5]>>>b%32&255);return c}function m(a){var b,c=[];for(c[(a.length>>2)-1]=void 0,b=0;b>5]|=(255&a.charCodeAt(b/8))<16&&(e=k(e,8*a.length)),c=0;c<16;c+=1)f[c]=909522486^e[c],g[c]=1549556828^e[c];return d=k(f.concat(m(b)),512+8*b.length),l(k(g.concat(d),640))}function p(a){var b,c,d="0123456789abcdef",e="";for(c=0;c>>4&15)+d.charAt(15&b);return e}function q(a){return unescape(encodeURIComponent(a))}function r(a){return n(q(a))}function s(a){return p(r(a))}function t(a,b){return o(q(a),q(b))}function u(a,b){return p(t(a,b))}function v(a,b,c){return b?c?t(b,a):u(b,a):c?r(a):s(a)}b.exports=v},{}]},{},[6,1,2])(6)}); //# sourceMappingURL=raven.min.js.map \ No newline at end of file diff --git a/dist/angular,require/raven.min.js.map b/dist/angular,require/raven.min.js.map index 4396df56bdce..1e9c2f1d0a4b 100644 --- a/dist/angular,require/raven.min.js.map +++ b/dist/angular,require/raven.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["raven.js"],"names":["global","factory","exports","module","define","amd","Raven","this","createCommonjsModule","fn","_typeof","obj","Symbol","iterator","constructor","prototype","isObject$1","what","isError$1","value","toString","call","Error","isErrorEvent$1","supportsErrorEvent","isUndefined$1","isFunction$1","isPlainObject","Object","isString$1","isArray$1","isEmptyObject$1","_","hasOwnProperty","ErrorEvent","e","supportsFetch$1","_window$3","Headers","Request","Response","wrappedCallback","callback","dataCallback","data","original","normalizedData","each$1","i","j","length","hasKey$1","objectMerge$1","obj1","obj2","key","objectFrozen$1","isFrozen","truncate$1","str","max","substr","object","joinRegExp$1","patterns","pattern","sources","len","push","replace","source","RegExp","join","urlencode$1","o","pairs","encodeURIComponent","parseUrl$1","url","match","query","fragment","protocol","host","path","relative","uuid4$1","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","r","Math","random","htmlTreeAsString$1","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","reverse","className","classes","attr","tagName","toLowerCase","id","split","attrWhitelist","getAttribute","isOnlyOneTruthy","a","b","isBothUndefined","isSameException$1","ex1","ex2","values","type","stacktrace","isSameStacktrace$1","stack1","stack2","frames1","frames","frames2","filename","lineno","colno","fill$1","name","replacement","track","orig","__raven__","__orig__","safeJoin","input","delimiter","output","String","getLocationHref","document","location","href","RavenConfigError","message","now","Date","keepOriginalCallback","isFunction","Raven$1","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window$1","SENTRY_RELEASE","logger","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","_fetchDefaults","method","keepalive","referrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","console","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","_lastHref","_resetBackoff","angularPlugin","angular","RavenProvider","$get","$window","ExceptionHandlerProvider","$provide","decorator","exceptionHandler","R","$delegate","ex","cause","captureException","extra","window","moduleName","provider","config","setDataCallback","wrappedCallback$1","_normalizeData","requirePlugin","commonjsGlobal","self","_sPO","setPrototypeOf","p","__proto__","Reflect","construct","Parent","args","Class","Constructor","apply","bind","utils","isObject","isError","isErrorEvent","isString","isArray","isEmptyObject","supportsFetch","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","TraceKit","debug","_window$2","_slice","slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","report","subscribe","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","stack","isWindowError","exception","concat","arguments","inner","traceKitWindowOnError","msg","lineNo","colNo","error","lastExceptionStack","computeStackTrace","augmentStackTraceWithInitialElement","processLastException","groups","line","column","undefined","func","_oldOnerrorHandler","_onErrorHandlerInstalled","onerror","_lastExceptionStack","_lastArgs","lastArgs","lastException","rethrow","setTimeout","incomplete","uninstall","computeStackTraceFromStackProp","submatch","parts","element","chrome","gecko","winjs","geckoEval","chromeEval","lines","exec","isNative","indexOf","isEval","columnNumber","stackInfo","initial","unshift","partial","computeStackTraceByWalkingCallerChain","depth","item","functionName","funcs","recursion","curr","caller","substring","result","sourceURL","fileName","lineNumber","description","tracekit","stringify_1","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","err","keys","thisPos","Infinity","getSerialize","configError","wrapMethod","level","originalConsoleLevel","originalConsole","sentryLevel","Function","console$1","wrapConsoleMethod","dsnKeys","dsnPattern","navigator","VERSION","dsn","options","_logDebug","globalOptions","setDSN","maxBreadcrumbs","min","autoBreadcrumbDefaults","xhr","dom","sentry","instrumentDefaults","tryCatch","install","isSetup","_handleOnErrorStackInfo","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","lastIndexOf","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","context","wrap","_before","wrapped","deep","_ignoreNextOnError","__raven_wrapper__","property","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","trimHeadFrames","isNotError","isNotErrorEvent","isErrorEventWithoutError","captureMessage","_handleStackInfo","test","initialCall","fileurl","fingerprint","_prepareFrames","_send","captureBreadcrumb","crumb","timestamp","breadcrumbCallback","shift","addPlugin","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","O","X","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","Y","evtName","_keypressTimeout","target","category","$","debounceDuration","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","from","to","parsedLoc","parsedTo","parsedFrom","F","_originalFunctionToString","Q","G","wrapTimeFn","t","Array","originalCallback","wrapEventTarget","proto","capture","secure","handleEvent","before","clickHandler","keypressHandler","_keypressEventHandler","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","H","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","onreadystatechange","origFetch","fetchInput","fetchData","then","response","addEventListener","attachEvent","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","builtin","S","I","installer","J","m","allowSecretKey","M","port","E","T","_triggerEvent","_processException","U","frame","_normalizeFrame","in_app","da","stackInfoUrl","normalized","function","ca","prefixedMessage","culprit","ea","request","Referer","breadcrumbs","_trimBreadcrumbs","fa","urlProp","urlProps","ga","httpData","userAgent","User-Agent","referrer","A","_backoffDuration","_backoffStart","ja","ka","current","last","la","_shouldBackoff","retry","get","getResponseHeader","parseInt","V","baseData","project","platform","_getHttpData","serverName","server_name","forEach","_sendProcessedPayload","na","ma","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","oa","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","onload","open","setRequestHeader","send","pa","hash","evaluated","D","W","setUser","setReleaseContext","raven","_window","_Raven","noConflict","singleton","angularPattern","matches","angularDocs","require_1","angular_require"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file +{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","angularPlugin","angular","RavenProvider","$get","$window","ExceptionHandlerProvider","$provide","decorator","exceptionHandler","R","$delegate","ex","cause","captureException","extra","moduleName","provider","config","setDataCallback","wrappedCallback","data","_normalizeData","angularPattern","exception","values","matches","exec","value","type","message","angularDocs","substr","addPlugin","6","7","2","requirePlugin","wrap","deep","3","RavenConfigError","name","prototype","constructor","4","utils","wrapMethod","console","level","callback","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","msg","safeJoin","logger","Function","apply","5","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","sanitizeKeys","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isError","isObject","isPlainObject","isErrorEvent","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","sanitize","wrapConsoleMethod","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","dsn","options","_logDebug","globalOptions","key","setDSN","push","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","toString","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","context","func","undefined","_before","wrapped","_ignoreNextOnError","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","U","event","reason","unhandledPromiseRejection","C","_promiseRejectionHandler","bind","addEventListener","Q","removeEventListener","trimHeadFrames","error","captureMessage","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","V","currentOptions","exKeys","Object","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","M","setTimeout","_","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","aa","evtName","_keypressTimeout","target","category","ca","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","da","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","D","_originalFunctionToString","E","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","F","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","S","builtin","T","G","installer","concat","H","str","m","allowSecretKey","K","port","B","W","stackInfo","_triggerEvent","_processException","lineno","Y","frame","_normalizeFrame","in_app","ha","stackInfoUrl","normalized","filename","line","colno","column","function","ga","prefixedMessage","culprit","ia","request","Referer","breadcrumbs","_trimBreadcrumbs","ja","urlProp","urlProps","ka","httpData","userAgent","User-Agent","referrer","z","_backoffDuration","_backoffStart","na","oa","current","last","pa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Z","baseData","project","platform","_getHttpData","serverName","server_name","_sanitizeData","forEach","random","_sendProcessedPayload","qa","sa","ra","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","ta","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","onerror","open","setRequestHeader","send","ua","hash","evaluated","A","$","setUser","setReleaseContext","10","8","9","RavenConstructor","_Raven","noConflict","Client","what","supportsErrorEvent","ErrorEvent","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","sanitizeMask","safeInput","o_O","getLocationHref","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","y","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","charAt","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","string","raw"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file diff --git a/dist/angular,vue/raven.js b/dist/angular,vue/raven.js index c33d56bd3d73..98c1951a02a0 100644 --- a/dist/angular,vue/raven.js +++ b/dist/angular,vue/raven.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.22.2 (1b6187b) | github.com/getsentry/raven-js */ +/*! Raven.js 3.24.2 (540f32b) | github.com/getsentry/raven-js */ /* * Includes TraceKit @@ -10,3236 +10,4022 @@ * */ -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : - typeof define === 'function' && define.amd ? define(factory) : - (global.Raven = factory()); -}(this, (function () { 'use strict'; - -var commonjsGlobal = typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; +(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.Raven = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o' : 'anonymous component') + + (vm._isVue && vm.$options.__file ? ' at ' + vm.$options.__file : '') + ); } -function isErrorEvent$1(value) { - return supportsErrorEvent() && {}.toString.call(value) === '[object ErrorEvent]'; -} - -function isUndefined$1(what) { - return what === void 0; -} +function vuePlugin(Raven, Vue) { + Vue = Vue || window.Vue; -function isFunction$1(what) { - return typeof what === 'function'; -} + // quit if Vue isn't on the page + if (!Vue || !Vue.config) return; -function isPlainObject(what) { - return Object.prototype.toString.call(what) === '[object Object]'; -} + var _oldOnError = Vue.config.errorHandler; + Vue.config.errorHandler = function VueErrorHandler(error, vm, info) { + var metaData = {}; -function isString$1(what) { - return Object.prototype.toString.call(what) === '[object String]'; -} + // vm and lifecycleHook are not always available + if (Object.prototype.toString.call(vm) === '[object Object]') { + metaData.componentName = formatComponentName(vm); + metaData.propsData = vm.$options.propsData; + } -function isArray$1(what) { - return Object.prototype.toString.call(what) === '[object Array]'; -} + if (typeof info !== 'undefined') { + metaData.lifecycleHook = info; + } -function isEmptyObject$1(what) { - if (!isPlainObject(what)) return false; + Raven.captureException(error, { + extra: metaData + }); - for (var _ in what) { - if (what.hasOwnProperty(_)) { - return false; + if (typeof _oldOnError === 'function') { + _oldOnError.call(this, error, vm, info); } - } - - return true; + }; } -function supportsErrorEvent() { - try { - new ErrorEvent(''); // eslint-disable-line no-new +module.exports = vuePlugin; - return true; - } catch (e) { - return false; - } +_dereq_(6).addPlugin(module.exports); +},{"6":6}],3:[function(_dereq_,module,exports){ +function RavenConfigError(message) { + this.name = 'RavenConfigError'; + this.message = message; } +RavenConfigError.prototype = new Error(); +RavenConfigError.prototype.constructor = RavenConfigError; -function supportsFetch$1() { - if (!('fetch' in _window$3)) return false; - - try { - new Headers(); // eslint-disable-line no-new +module.exports = RavenConfigError; - new Request(''); // eslint-disable-line no-new +},{}],4:[function(_dereq_,module,exports){ +var utils = _dereq_(7); - new Response(); // eslint-disable-line no-new +var wrapMethod = function(console, level, callback) { + var originalConsoleLevel = console[level]; + var originalConsole = console; - return true; - } catch (e) { - return false; + if (!(level in console)) { + return; } -} - -function wrappedCallback(callback) { - function dataCallback(data, original) { - var normalizedData = callback(data) || data; - if (original) { - return original(normalizedData) || normalizedData; - } - - return normalizedData; - } + var sentryLevel = level === 'warn' ? 'warning' : level; - return dataCallback; -} + console[level] = function() { + var args = [].slice.call(arguments); -function each$1(obj, callback) { - var i, j; + var msg = utils.safeJoin(args, ' '); + var data = {level: sentryLevel, logger: 'console', extra: {arguments: args}}; - if (isUndefined$1(obj.length)) { - for (i in obj) { - if (hasKey$1(obj, i)) { - callback.call(null, i, obj[i]); + if (level === 'assert') { + if (args[0] === false) { + // Default browsers message + msg = + 'Assertion failed: ' + (utils.safeJoin(args.slice(1), ' ') || 'console.assert'); + data.extra.arguments = args.slice(1); + callback && callback(msg, data); } + } else { + callback && callback(msg, data); } - } else { - j = obj.length; - if (j) { - for (i = 0; i < j; i++) { - callback.call(null, i, obj[i]); - } + // this fails for some browsers. :( + if (originalConsoleLevel) { + // IE9 doesn't allow calling apply on console functions directly + // See: https://stackoverflow.com/questions/5472938/does-ie9-support-console-log-and-is-it-a-real-function#answer-5473193 + Function.prototype.apply.call(originalConsoleLevel, originalConsole, args); } - } -} - -function objectMerge$1(obj1, obj2) { - if (!obj2) { - return obj1; - } + }; +}; - each$1(obj2, function (key, value) { - obj1[key] = value; - }); - return obj1; -} -/** - * This function is only used for react-native. - * react-native freezes object that have already been sent over the - * js bridge. We need this function in order to check if the object is frozen. - * So it's ok that objectFrozen returns false if Object.isFrozen is not - * supported because it's not relevant for other "platforms". See related issue: - * https://github.com/getsentry/react-native-sentry/issues/57 - */ +module.exports = { + wrapMethod: wrapMethod +}; +},{"7":7}],5:[function(_dereq_,module,exports){ +(function (global){ +/*global XDomainRequest:false */ -function objectFrozen$1(obj) { - if (!Object.isFrozen) { - return false; - } +var TraceKit = _dereq_(8); +var stringify = _dereq_(9); +var md5 = _dereq_(10); +var RavenConfigError = _dereq_(3); - return Object.isFrozen(obj); -} +var utils = _dereq_(7); +var isError = utils.isError; +var isObject = utils.isObject; +var isPlainObject = utils.isPlainObject; +var isErrorEvent = utils.isErrorEvent; +var isUndefined = utils.isUndefined; +var isFunction = utils.isFunction; +var isString = utils.isString; +var isArray = utils.isArray; +var isEmptyObject = utils.isEmptyObject; +var each = utils.each; +var objectMerge = utils.objectMerge; +var truncate = utils.truncate; +var objectFrozen = utils.objectFrozen; +var hasKey = utils.hasKey; +var joinRegExp = utils.joinRegExp; +var urlencode = utils.urlencode; +var uuid4 = utils.uuid4; +var htmlTreeAsString = utils.htmlTreeAsString; +var isSameException = utils.isSameException; +var isSameStacktrace = utils.isSameStacktrace; +var parseUrl = utils.parseUrl; +var fill = utils.fill; +var supportsFetch = utils.supportsFetch; +var supportsReferrerPolicy = utils.supportsReferrerPolicy; +var serializeKeysForMessage = utils.serializeKeysForMessage; +var serializeException = utils.serializeException; +var sanitize = utils.sanitize; -function truncate$1(str, max) { - return !max || str.length <= max ? str : str.substr(0, max) + "\u2026"; -} -/** - * hasKey, a better form of hasOwnProperty - * Example: hasKey(MainHostObject, property) === true/false - * - * @param {Object} host object to check property - * @param {string} key to check - */ +var wrapConsoleMethod = _dereq_(4).wrapMethod; +var dsnKeys = 'source protocol user pass host port path'.split(' '), + dsnPattern = /^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/; -function hasKey$1(object, key) { - return Object.prototype.hasOwnProperty.call(object, key); +function now() { + return +new Date(); } -function joinRegExp$1(patterns) { - // Combine an array of regular expressions and strings into one large regexp - // Be mad. - var sources = [], - i = 0, - len = patterns.length, - pattern; - - for (; i < len; i++) { - pattern = patterns[i]; - - if (isString$1(pattern)) { - // If it's a string, we need to escape it - // Taken from: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions - sources.push(pattern.replace(/([.*+?^=!:${}()|\[\]\/\\])/g, '\\$1')); - } else if (pattern && pattern.source) { - // If it's a regexp already, we want to extract the source - sources.push(pattern.source); - } // Intentionally skip other cases - - } +// This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) +var _window = + typeof window !== 'undefined' + ? window + : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; +var _document = _window.document; +var _navigator = _window.navigator; - return new RegExp(sources.join('|'), 'i'); +function keepOriginalCallback(original, callback) { + return isFunction(callback) + ? function(data) { + return callback(data, original); + } + : callback; } -function urlencode$1(o) { - var pairs = []; - each$1(o, function (key, value) { - pairs.push(encodeURIComponent(key) + '=' + encodeURIComponent(value)); - }); - return pairs.join('&'); -} // borrowed from https://tools.ietf.org/html/rfc3986#appendix-B -// intentionally using regex and not href parsing trick because React Native and other -// environments where DOM might not be available - - -function parseUrl$1(url) { - if (typeof url !== 'string') return {}; - var match = url.match(/^(([^:\/?#]+):)?(\/\/([^\/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?$/); // coerce to undefined values to empty string so we don't get 'undefined' - - var query = match[6] || ''; - var fragment = match[8] || ''; - return { - protocol: match[2], - host: match[4], - path: match[5], - relative: match[5] + query + fragment // everything minus origin - +// First, check for JSON support +// If there is no JSON, we no-op the core features of Raven +// since JSON is required to encode the payload +function Raven() { + this._hasJSON = !!(typeof JSON === 'object' && JSON.stringify); + // Raven can run in contexts where there's no document (react-native) + this._hasDocument = !isUndefined(_document); + this._hasNavigator = !isUndefined(_navigator); + this._lastCapturedException = null; + this._lastData = null; + this._lastEventId = null; + this._globalServer = null; + this._globalKey = null; + this._globalProject = null; + this._globalContext = {}; + this._globalOptions = { + // SENTRY_RELEASE can be injected by https://github.com/getsentry/sentry-webpack-plugin + release: _window.SENTRY_RELEASE && _window.SENTRY_RELEASE.id, + logger: 'javascript', + ignoreErrors: [], + ignoreUrls: [], + whitelistUrls: [], + includePaths: [], + headers: null, + collectWindowErrors: true, + captureUnhandledRejections: true, + maxMessageLength: 0, + // By default, truncates URL values to 250 chars + maxUrlLength: 250, + stackTraceLimit: 50, + autoBreadcrumbs: true, + instrument: true, + sampleRate: 1, + sanitizeKeys: [] }; -} - -function uuid4$1() { - var crypto = _window$3.crypto || _window$3.msCrypto; - - if (!isUndefined$1(crypto) && crypto.getRandomValues) { - // Use window.crypto API if available - // eslint-disable-next-line no-undef - var arr = new Uint16Array(8); - crypto.getRandomValues(arr); // set 4 in byte 7 - - arr[3] = arr[3] & 0xfff | 0x4000; // set 2 most significant bits of byte 9 to '10' - - arr[4] = arr[4] & 0x3fff | 0x8000; - - var pad = function pad(num) { - var v = num.toString(16); - - while (v.length < 4) { - v = '0' + v; - } - - return v; - }; + this._fetchDefaults = { + method: 'POST', + keepalive: true, + // Despite all stars in the sky saying that Edge supports old draft syntax, aka 'never', 'always', 'origin' and 'default + // https://caniuse.com/#feat=referrer-policy + // It doesn't. And it throw exception instead of ignoring this parameter... + // REF: https://github.com/getsentry/raven-js/issues/1233 + referrerPolicy: supportsReferrerPolicy() ? 'origin' : '' + }; + this._ignoreOnError = 0; + this._isRavenInstalled = false; + this._originalErrorStackTraceLimit = Error.stackTraceLimit; + // capture references to window.console *and* all its methods first + // before the console plugin has a chance to monkey patch + this._originalConsole = _window.console || {}; + this._originalConsoleMethods = {}; + this._plugins = []; + this._startTime = now(); + this._wrappedBuiltIns = []; + this._breadcrumbs = []; + this._lastCapturedEvent = null; + this._keypressTimeout; + this._location = _window.location; + this._lastHref = this._location && this._location.href; + this._resetBackoff(); - return pad(arr[0]) + pad(arr[1]) + pad(arr[2]) + pad(arr[3]) + pad(arr[4]) + pad(arr[5]) + pad(arr[6]) + pad(arr[7]); - } else { - // http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/2117523#2117523 - return 'xxxxxxxxxxxx4xxxyxxxxxxxxxxxxxxx'.replace(/[xy]/g, function (c) { - var r = Math.random() * 16 | 0, - v = c === 'x' ? r : r & 0x3 | 0x8; - return v.toString(16); - }); + // eslint-disable-next-line guard-for-in + for (var method in this._originalConsole) { + this._originalConsoleMethods[method] = this._originalConsole[method]; } } -/** - * Given a child DOM element, returns a query-selector statement describing that - * and its ancestors - * e.g. [HTMLElement] => body > div > input#foo.btn[name=baz] - * @param elem - * @returns {string} - */ +/* + * The core Raven singleton + * + * @this {Raven} + */ -function htmlTreeAsString$1(elem) { - /* eslint no-extra-parens:0*/ - var MAX_TRAVERSE_HEIGHT = 5, - MAX_OUTPUT_LEN = 80, - out = [], - height = 0, - len = 0, - separator = ' > ', - sepLength = separator.length, - nextStr; - - while (elem && height++ < MAX_TRAVERSE_HEIGHT) { - nextStr = htmlElementAsString(elem); // bail out if - // - nextStr is the 'html' element - // - the length of the string that would be created exceeds MAX_OUTPUT_LEN - // (ignore this limit if we are on the first iteration) +Raven.prototype = { + // Hardcode version string so that raven source can be loaded directly via + // webpack (using a build step causes webpack #1617). Grunt verifies that + // this value matches package.json during build. + // See: https://github.com/getsentry/raven-js/issues/465 + VERSION: '3.24.2', - if (nextStr === 'html' || height > 1 && len + out.length * sepLength + nextStr.length >= MAX_OUTPUT_LEN) { - break; - } + debug: false, - out.push(nextStr); - len += nextStr.length; - elem = elem.parentNode; - } + TraceKit: TraceKit, // alias to TraceKit - return out.reverse().join(separator); -} -/** - * Returns a simple, query-selector representation of a DOM element - * e.g. [HTMLElement] => input#foo.btn[name=baz] - * @param HTMLElement - * @returns {string} - */ + /* + * Configure Raven with a DSN and extra options + * + * @param {string} dsn The public Sentry DSN + * @param {object} options Set of global options [optional] + * @return {Raven} + */ + config: function(dsn, options) { + var self = this; + if (self._globalServer) { + this._logDebug('error', 'Error: Raven has already been configured'); + return self; + } + if (!dsn) return self; -function htmlElementAsString(elem) { - var out = [], - className, - classes, - key, - attr, - i; + var globalOptions = self._globalOptions; - if (!elem || !elem.tagName) { - return ''; - } + // merge in options + if (options) { + each(options, function(key, value) { + // tags and extra are special and need to be put into context + if (key === 'tags' || key === 'extra' || key === 'user') { + self._globalContext[key] = value; + } else { + globalOptions[key] = value; + } + }); + } - out.push(elem.tagName.toLowerCase()); + self.setDSN(dsn); - if (elem.id) { - out.push('#' + elem.id); - } + // "Script error." is hard coded into browsers for errors that it can't read. + // this is the result of a script being pulled in from an external domain and CORS. + globalOptions.ignoreErrors.push(/^Script error\.?$/); + globalOptions.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/); - className = elem.className; + // join regexp rules into one big rule + globalOptions.ignoreErrors = joinRegExp(globalOptions.ignoreErrors); + globalOptions.ignoreUrls = globalOptions.ignoreUrls.length + ? joinRegExp(globalOptions.ignoreUrls) + : false; + globalOptions.whitelistUrls = globalOptions.whitelistUrls.length + ? joinRegExp(globalOptions.whitelistUrls) + : false; + globalOptions.includePaths = joinRegExp(globalOptions.includePaths); + globalOptions.maxBreadcrumbs = Math.max( + 0, + Math.min(globalOptions.maxBreadcrumbs || 100, 100) + ); // default and hard limit is 100 - if (className && isString$1(className)) { - classes = className.split(/\s+/); + var autoBreadcrumbDefaults = { + xhr: true, + console: true, + dom: true, + location: true, + sentry: true + }; - for (i = 0; i < classes.length; i++) { - out.push('.' + classes[i]); + var autoBreadcrumbs = globalOptions.autoBreadcrumbs; + if ({}.toString.call(autoBreadcrumbs) === '[object Object]') { + autoBreadcrumbs = objectMerge(autoBreadcrumbDefaults, autoBreadcrumbs); + } else if (autoBreadcrumbs !== false) { + autoBreadcrumbs = autoBreadcrumbDefaults; } - } - - var attrWhitelist = ['type', 'name', 'title', 'alt']; + globalOptions.autoBreadcrumbs = autoBreadcrumbs; - for (i = 0; i < attrWhitelist.length; i++) { - key = attrWhitelist[i]; - attr = elem.getAttribute(key); + var instrumentDefaults = { + tryCatch: true + }; - if (attr) { - out.push('[' + key + '="' + attr + '"]'); + var instrument = globalOptions.instrument; + if ({}.toString.call(instrument) === '[object Object]') { + instrument = objectMerge(instrumentDefaults, instrument); + } else if (instrument !== false) { + instrument = instrumentDefaults; } - } + globalOptions.instrument = instrument; - return out.join(''); -} -/** - * Returns true if either a OR b is truthy, but not both - */ + TraceKit.collectWindowErrors = !!globalOptions.collectWindowErrors; + // return for chaining + return self; + }, -function isOnlyOneTruthy(a, b) { - return !!(!!a ^ !!b); -} -/** - * Returns true if both parameters are undefined - */ + /* + * Installs a global window.onerror error handler + * to capture and report uncaught exceptions. + * At this point, install() is required to be called due + * to the way TraceKit is set up. + * + * @return {Raven} + */ + install: function() { + var self = this; + if (self.isSetup() && !self._isRavenInstalled) { + TraceKit.report.subscribe(function() { + self._handleOnErrorStackInfo.apply(self, arguments); + }); + if (self._globalOptions.captureUnhandledRejections) { + self._attachPromiseRejectionHandler(); + } -function isBothUndefined(a, b) { - return isUndefined$1(a) && isUndefined$1(b); -} -/** - * Returns true if the two input exception interfaces have the same content - */ + self._patchFunctionToString(); + if (self._globalOptions.instrument && self._globalOptions.instrument.tryCatch) { + self._instrumentTryCatch(); + } -function isSameException$1(ex1, ex2) { - if (isOnlyOneTruthy(ex1, ex2)) return false; - ex1 = ex1.values[0]; - ex2 = ex2.values[0]; - if (ex1.type !== ex2.type || ex1.value !== ex2.value) return false; // in case both stacktraces are undefined, we can't decide so default to false + if (self._globalOptions.autoBreadcrumbs) self._instrumentBreadcrumbs(); - if (isBothUndefined(ex1.stacktrace, ex2.stacktrace)) return false; - return isSameStacktrace$1(ex1.stacktrace, ex2.stacktrace); -} -/** - * Returns true if the two input stack trace interfaces have the same content - */ + // Install all of the plugins + self._drainPlugins(); + self._isRavenInstalled = true; + } -function isSameStacktrace$1(stack1, stack2) { - if (isOnlyOneTruthy(stack1, stack2)) return false; - var frames1 = stack1.frames; - var frames2 = stack2.frames; // Exit early if frame count differs + Error.stackTraceLimit = self._globalOptions.stackTraceLimit; + return this; + }, - if (frames1.length !== frames2.length) return false; // Iterate through every frame; bail out if anything differs + /* + * Set the DSN (can be called multiple time unlike config) + * + * @param {string} dsn The public Sentry DSN + */ + setDSN: function(dsn) { + var self = this, + uri = self._parseDSN(dsn), + lastSlash = uri.path.lastIndexOf('/'), + path = uri.path.substr(1, lastSlash); - var a, b; + self._dsn = dsn; + self._globalKey = uri.user; + self._globalSecret = uri.pass && uri.pass.substr(1); + self._globalProject = uri.path.substr(lastSlash + 1); - for (var i = 0; i < frames1.length; i++) { - a = frames1[i]; - b = frames2[i]; - if (a.filename !== b.filename || a.lineno !== b.lineno || a.colno !== b.colno || a['function'] !== b['function']) return false; - } + self._globalServer = self._getGlobalServer(uri); - return true; -} -/** - * Polyfill a method - * @param obj object e.g. `document` - * @param name method name present on object e.g. `addEventListener` - * @param replacement replacement function - * @param track {optional} record instrumentation to an array - */ + self._globalEndpoint = + self._globalServer + '/' + path + 'api/' + self._globalProject + '/store/'; + // Reset backoff state since we may be pointing at a + // new project/server + this._resetBackoff(); + }, -function fill$1(obj, name, replacement, track) { - var orig = obj[name]; - obj[name] = replacement(orig); - obj[name].__raven__ = true; - obj[name].__orig__ = orig; + /* + * Wrap code within a context so Raven can capture errors + * reliably across domains that is executed immediately. + * + * @param {object} options A specific set of options for this context [optional] + * @param {function} func The callback to be immediately executed within the context + * @param {array} args An array of arguments to be called with the callback [optional] + */ + context: function(options, func, args) { + if (isFunction(options)) { + args = func || []; + func = options; + options = undefined; + } - if (track) { - track.push([obj, name, orig]); - } -} -/** - * Join values in array - * @param input array of values to be joined together - * @param delimiter string to be placed in-between values - * @returns {string} - */ + return this.wrap(options, func).apply(this, args); + }, + + /* + * Wrap code within a context and returns back a new function to be executed + * + * @param {object} options A specific set of options for this context [optional] + * @param {function} func The function to be wrapped in a new context + * @param {function} func A function to call before the try/catch wrapper [optional, private] + * @return {function} The newly wrapped functions with a context + */ + wrap: function(options, func, _before) { + var self = this; + // 1 argument has been passed, and it's not a function + // so just return it + if (isUndefined(func) && !isFunction(options)) { + return options; + } + // options is optional + if (isFunction(options)) { + func = options; + options = undefined; + } -function safeJoin(input, delimiter) { - if (!isArray$1(input)) return ''; - var output = []; + // At this point, we've passed along 2 arguments, and the second one + // is not a function either, so we'll just return the second argument. + if (!isFunction(func)) { + return func; + } - for (var i = 0; i < input.length; i++) { + // We don't wanna wrap it twice! try { - output.push(String(input[i])); + if (func.__raven__) { + return func; + } + + // If this has already been wrapped in the past, return that + if (func.__raven_wrapper__) { + return func.__raven_wrapper__; + } } catch (e) { - output.push('[value cannot be serialized]'); + // Just accessing custom props in some Selenium environments + // can cause a "Permission denied" exception (see raven-js#495). + // Bail on wrapping and return the function as-is (defers to window.onerror). + return func; } - } - return output.join(delimiter); -} - -var utils = { - isObject: isObject$1, - isError: isError$1, - isErrorEvent: isErrorEvent$1, - isUndefined: isUndefined$1, - isFunction: isFunction$1, - isPlainObject: isPlainObject, - isString: isString$1, - isArray: isArray$1, - isEmptyObject: isEmptyObject$1, - supportsErrorEvent: supportsErrorEvent, - supportsFetch: supportsFetch$1, - wrappedCallback: wrappedCallback, - each: each$1, - objectMerge: objectMerge$1, - truncate: truncate$1, - objectFrozen: objectFrozen$1, - hasKey: hasKey$1, - joinRegExp: joinRegExp$1, - urlencode: urlencode$1, - uuid4: uuid4$1, - htmlTreeAsString: htmlTreeAsString$1, - htmlElementAsString: htmlElementAsString, - isSameException: isSameException$1, - isSameStacktrace: isSameStacktrace$1, - parseUrl: parseUrl$1, - fill: fill$1, - safeJoin: safeJoin -}; + function wrapped() { + var args = [], + i = arguments.length, + deep = !options || (options && options.deep !== false); -/* - TraceKit - Cross brower stack traces + if (_before && isFunction(_before)) { + _before.apply(this, arguments); + } - This was originally forked from github.com/occ/TraceKit, but has since been - largely re-written and is now maintained as part of raven-js. Tests for - this are in test/vendor. + // Recursively wrap all of a function's arguments that are + // functions themselves. + while (i--) args[i] = deep ? self.wrap(options, arguments[i]) : arguments[i]; - MIT license -*/ + try { + // Attempt to invoke user-land function + // NOTE: If you are a Sentry user, and you are seeing this stack frame, it + // means Raven caught an error invoking your application code. This is + // expected behavior and NOT indicative of a bug with Raven.js. + return func.apply(this, args); + } catch (e) { + self._ignoreNextOnError(); + self.captureException(e, options); + throw e; + } + } -var TraceKit = { - collectWindowErrors: true, - debug: false -}; // This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) + // copy over properties of the old function + for (var property in func) { + if (hasKey(func, property)) { + wrapped[property] = func[property]; + } + } + wrapped.prototype = func.prototype; -var _window$2 = typeof window !== 'undefined' ? window : typeof commonjsGlobal !== 'undefined' ? commonjsGlobal : typeof self !== 'undefined' ? self : {}; // global reference to slice + func.__raven_wrapper__ = wrapped; + // Signal that this function has been wrapped/filled already + // for both debugging and to prevent it to being wrapped/filled twice + wrapped.__raven__ = true; + wrapped.__orig__ = func; + return wrapped; + }, -var _slice = [].slice; -var UNKNOWN_FUNCTION = '?'; // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error#Error_types + /** + * Uninstalls the global error handler. + * + * @return {Raven} + */ + uninstall: function() { + TraceKit.report.uninstall(); -var ERROR_TYPES_RE = /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/; + this._detachPromiseRejectionHandler(); + this._unpatchFunctionToString(); + this._restoreBuiltIns(); + this._restoreConsole(); -function getLocationHref() { - if (typeof document === 'undefined' || document.location == null) return ''; - return document.location.href; -} -/** - * TraceKit.report: cross-browser processing of unhandled exceptions - * - * Syntax: - * TraceKit.report.subscribe(function(stackInfo) { ... }) - * TraceKit.report.unsubscribe(function(stackInfo) { ... }) - * TraceKit.report(exception) - * try { ...code... } catch(ex) { TraceKit.report(ex); } - * - * Supports: - * - Firefox: full stack trace with line numbers, plus column number - * on top frame; column number is not guaranteed - * - Opera: full stack trace with line and column numbers - * - Chrome: full stack trace with line and column numbers - * - Safari: line and column number for the top frame only; some frames - * may be missing, and column number is not guaranteed - * - IE: line and column number for the top frame only; some frames - * may be missing, and column number is not guaranteed - * - * In theory, TraceKit should work on all of the following versions: - * - IE5.5+ (only 8.0 tested) - * - Firefox 0.9+ (only 3.5+ tested) - * - Opera 7+ (only 10.50 tested; versions 9 and earlier may require - * Exceptions Have Stacktrace to be enabled in opera:config) - * - Safari 3+ (only 4+ tested) - * - Chrome 1+ (only 5+ tested) - * - Konqueror 3.5+ (untested) - * - * Requires TraceKit.computeStackTrace. - * - * Tries to catch all unhandled exceptions and report them to the - * subscribed handlers. Please note that TraceKit.report will rethrow the - * exception. This is REQUIRED in order to get a useful stack trace in IE. - * If the exception does not reach the top of the browser, you will only - * get a stack trace from the point where TraceKit.report was called. - * - * Handlers receive a stackInfo object as described in the - * TraceKit.computeStackTrace docs. - */ + Error.stackTraceLimit = this._originalErrorStackTraceLimit; + this._isRavenInstalled = false; + return this; + }, -TraceKit.report = function reportModuleWrapper() { - var handlers = [], - lastArgs = null, - lastException = null, - lastExceptionStack = null; /** - * Add a crash handler. - * @param {Function} handler - */ + * Callback used for `unhandledrejection` event + * + * @param {PromiseRejectionEvent} event An object containing + * promise: the Promise that was rejected + * reason: the value with which the Promise was rejected + * @return void + */ + _promiseRejectionHandler: function(event) { + this._logDebug('debug', 'Raven caught unhandled promise rejection:', event); + this.captureException(event.reason, { + extra: { + unhandledPromiseRejection: true + } + }); + }, - function subscribe(handler) { - installGlobalHandler(); - handlers.push(handler); - } /** - * Remove a crash handler. - * @param {Function} handler - */ + * Installs the global promise rejection handler. + * + * @return {raven} + */ + _attachPromiseRejectionHandler: function() { + this._promiseRejectionHandler = this._promiseRejectionHandler.bind(this); + _window.addEventListener && + _window.addEventListener('unhandledrejection', this._promiseRejectionHandler); + return this; + }, + /** + * Uninstalls the global promise rejection handler. + * + * @return {raven} + */ + _detachPromiseRejectionHandler: function() { + _window.removeEventListener && + _window.removeEventListener('unhandledrejection', this._promiseRejectionHandler); + return this; + }, - function unsubscribe(handler) { - for (var i = handlers.length - 1; i >= 0; --i) { - if (handlers[i] === handler) { - handlers.splice(i, 1); + /** + * Manually capture an exception and send it over to Sentry + * + * @param {error} ex An exception to be logged + * @param {object} options A specific set of options for this error [optional] + * @return {Raven} + */ + captureException: function(ex, options) { + options = objectMerge({trimHeadFrames: 0}, options ? options : {}); + + if (isErrorEvent(ex) && ex.error) { + // If it is an ErrorEvent with `error` property, extract it to get actual Error + ex = ex.error; + } else if (isError(ex)) { + // we have a real Error object + ex = ex; + } else if (isPlainObject(ex)) { + // If it is plain Object, serialize it manually and extract options + // This will allow us to group events based on top-level keys + // which is much better than creating new group when any key/value change + options = this._getCaptureExceptionOptionsFromPlainObject(options, ex); + ex = new Error(options.message); + } else { + // If none of previous checks were valid, then it means that + // it's not a plain Object + // it's not a valid ErrorEvent (one with an error property) + // it's not an Error + // So bail out and capture it as a simple message: + return this.captureMessage( + ex, + objectMerge(options, { + stacktrace: true, // if we fall back to captureMessage, default to attempting a new trace + trimHeadFrames: options.trimHeadFrames + 1 + }) + ); + } + + // Store the raw exception object for potential debugging and introspection + this._lastCapturedException = ex; + + // TraceKit.report will re-raise any exception passed to it, + // which means you have to wrap it in try/catch. Instead, we + // can wrap it here and only re-raise if TraceKit.report + // raises an exception different from the one we asked to + // report on. + try { + var stack = TraceKit.computeStackTrace(ex); + this._handleStackInfo(stack, options); + } catch (ex1) { + if (ex !== ex1) { + throw ex1; } } - } - /** - * Remove all crash handlers. - */ + return this; + }, - function unsubscribeAll() { - uninstallGlobalHandler(); - handlers = []; - } - /** - * Dispatch stack information to all handlers. - * @param {Object.} stack - */ - + _getCaptureExceptionOptionsFromPlainObject: function(currentOptions, ex) { + var exKeys = Object.keys(ex).sort(); + var options = objectMerge(currentOptions, { + message: + 'Non-Error exception captured with keys: ' + serializeKeysForMessage(exKeys), + fingerprint: [md5(exKeys)], + extra: currentOptions.extra || {} + }); + options.extra.__serialized__ = serializeException(ex); - function notifyHandlers(stack, isWindowError) { - var exception = null; + return options; + }, - if (isWindowError && !TraceKit.collectWindowErrors) { + /* + * Manually send a message to Sentry + * + * @param {string} msg A plain message to be captured in Sentry + * @param {object} options A specific set of options for this message [optional] + * @return {Raven} + */ + captureMessage: function(msg, options) { + // config() automagically converts ignoreErrors from a list to a RegExp so we need to test for an + // early call; we'll error on the side of logging anything called before configuration since it's + // probably something you should see: + if ( + !!this._globalOptions.ignoreErrors.test && + this._globalOptions.ignoreErrors.test(msg) + ) { return; } - for (var i in handlers) { - if (handlers.hasOwnProperty(i)) { - try { - handlers[i].apply(null, [stack].concat(_slice.call(arguments, 2))); - } catch (inner) { - exception = inner; - } - } - } + options = options || {}; + msg = msg + ''; // Make sure it's actually a string - if (exception) { - throw exception; + var data = objectMerge( + { + message: msg + }, + options + ); + + var ex; + // Generate a "synthetic" stack trace from this point. + // NOTE: If you are a Sentry user, and you are seeing this stack frame, it is NOT indicative + // of a bug with Raven.js. Sentry generates synthetic traces either by configuration, + // or if it catches a thrown object without a "stack" property. + try { + throw new Error(msg); + } catch (ex1) { + ex = ex1; } - } - var _oldOnerrorHandler, _onErrorHandlerInstalled; - /** - * Ensures all global unhandled exceptions are recorded. - * Supported by Gecko and IE. - * @param {string} msg Error message. - * @param {string} url URL of script that generated the exception. - * @param {(number|string)} lineNo The line number at which the error - * occurred. - * @param {?(number|string)} colNo The column number at which the error - * occurred. - * @param {?Error} ex The actual Error object. - */ - - - function traceKitWindowOnError(msg, url, lineNo, colNo, ex) { - var stack = null; // If 'ex' is ErrorEvent, get real Error from inside - - var exception = utils.isErrorEvent(ex) ? ex.error : ex; // If 'msg' is ErrorEvent, get real message from inside - - var message = utils.isErrorEvent(msg) ? msg.message : msg; + // null exception name so `Error` isn't prefixed to msg + ex.name = null; + var stack = TraceKit.computeStackTrace(ex); - if (lastExceptionStack) { - TraceKit.computeStackTrace.augmentStackTraceWithInitialElement(lastExceptionStack, url, lineNo, message); - processLastException(); - } else if (exception && utils.isError(exception)) { - // non-string `exception` arg; attempt to extract stack trace - // New chrome and blink send along a real error object - // Let's just report that like a normal error. - // See: https://mikewest.org/2013/08/debugging-runtime-errors-with-window-onerror - stack = TraceKit.computeStackTrace(exception); - notifyHandlers(stack, true); - } else { - var location = { - url: url, - line: lineNo, - column: colNo - }; - var name = undefined; - var groups; + // stack[0] is `throw new Error(msg)` call itself, we are interested in the frame that was just before that, stack[1] + var initialCall = isArray(stack.stack) && stack.stack[1]; - if ({}.toString.call(message) === '[object String]') { - var groups = message.match(ERROR_TYPES_RE); + // if stack[1] is `Raven.captureException`, it means that someone passed a string to it and we redirected that call + // to be handled by `captureMessage`, thus `initialCall` is the 3rd one, not 2nd + // initialCall => captureException(string) => captureMessage(string) + if (initialCall && initialCall.func === 'Raven.captureException') { + initialCall = stack.stack[2]; + } - if (groups) { - name = groups[1]; - message = groups[2]; - } - } + var fileurl = (initialCall && initialCall.url) || ''; - location.func = UNKNOWN_FUNCTION; - stack = { - name: name, - message: message, - url: getLocationHref(), - stack: [location] - }; - notifyHandlers(stack, true); + if ( + !!this._globalOptions.ignoreUrls.test && + this._globalOptions.ignoreUrls.test(fileurl) + ) { + return; } - if (_oldOnerrorHandler) { - return _oldOnerrorHandler.apply(this, arguments); + if ( + !!this._globalOptions.whitelistUrls.test && + !this._globalOptions.whitelistUrls.test(fileurl) + ) { + return; } - return false; - } + if (this._globalOptions.stacktrace || (options && options.stacktrace)) { + // fingerprint on msg, not stack trace (legacy behavior, could be revisited) + data.fingerprint = data.fingerprint == null ? msg : data.fingerprint; - function installGlobalHandler() { - if (_onErrorHandlerInstalled) { - return; - } + options = objectMerge( + { + trimHeadFrames: 0 + }, + options + ); + // Since we know this is a synthetic trace, the top frame (this function call) + // MUST be from Raven.js, so mark it for trimming + // We add to the trim counter so that callers can choose to trim extra frames, such + // as utility functions. + options.trimHeadFrames += 1; - _oldOnerrorHandler = _window$2.onerror; - _window$2.onerror = traceKitWindowOnError; - _onErrorHandlerInstalled = true; - } + var frames = this._prepareFrames(stack, options); + data.stacktrace = { + // Sentry expects frames oldest to newest + frames: frames.reverse() + }; + } - function uninstallGlobalHandler() { - if (!_onErrorHandlerInstalled) { - return; + // Make sure that fingerprint is always wrapped in an array + if (data.fingerprint) { + data.fingerprint = isArray(data.fingerprint) + ? data.fingerprint + : [data.fingerprint]; } - _window$2.onerror = _oldOnerrorHandler; - _onErrorHandlerInstalled = false; - _oldOnerrorHandler = undefined; - } + // Fire away! + this._send(data); - function processLastException() { - var _lastExceptionStack = lastExceptionStack, - _lastArgs = lastArgs; - lastArgs = null; - lastExceptionStack = null; - lastException = null; - notifyHandlers.apply(null, [_lastExceptionStack, false].concat(_lastArgs)); - } - /** - * Reports an unhandled Error to TraceKit. - * @param {Error} ex - * @param {?boolean} rethrow If false, do not re-throw the exception. - * Only used for window.onerror to not cause an infinite loop of - * rethrowing. - */ + return this; + }, + captureBreadcrumb: function(obj) { + var crumb = objectMerge( + { + timestamp: now() / 1000 + }, + obj + ); - function report(ex, rethrow) { - var args = _slice.call(arguments, 1); + if (isFunction(this._globalOptions.breadcrumbCallback)) { + var result = this._globalOptions.breadcrumbCallback(crumb); - if (lastExceptionStack) { - if (lastException === ex) { - return; // already caught by an inner catch block, ignore - } else { - processLastException(); + if (isObject(result) && !isEmptyObject(result)) { + crumb = result; + } else if (result === false) { + return this; } } - var stack = TraceKit.computeStackTrace(ex); - lastExceptionStack = stack; - lastException = ex; - lastArgs = args; // If the stack trace is incomplete, wait for 2 seconds for - // slow slow IE to see if onerror occurs or not before reporting - // this exception; otherwise, we will end up with an incomplete - // stack trace + this._breadcrumbs.push(crumb); + if (this._breadcrumbs.length > this._globalOptions.maxBreadcrumbs) { + this._breadcrumbs.shift(); + } + return this; + }, - setTimeout(function () { - if (lastException === ex) { - processLastException(); - } - }, stack.incomplete ? 2000 : 0); + addPlugin: function(plugin /*arg1, arg2, ... argN*/) { + var pluginArgs = [].slice.call(arguments, 1); - if (rethrow !== false) { - throw ex; // re-throw to propagate to the top level (and cause window.onerror) + this._plugins.push([plugin, pluginArgs]); + if (this._isRavenInstalled) { + this._drainPlugins(); } - } - report.subscribe = subscribe; - report.unsubscribe = unsubscribe; - report.uninstall = unsubscribeAll; - return report; -}(); -/** - * TraceKit.computeStackTrace: cross-browser stack traces in JavaScript - * - * Syntax: - * s = TraceKit.computeStackTrace(exception) // consider using TraceKit.report instead (see below) - * Returns: - * s.name - exception name - * s.message - exception message - * s.stack[i].url - JavaScript or HTML file URL - * s.stack[i].func - function name, or empty for anonymous functions (if guessing did not work) - * s.stack[i].args - arguments passed to the function, if known - * s.stack[i].line - line number, if known - * s.stack[i].column - column number, if known - * - * Supports: - * - Firefox: full stack trace with line numbers and unreliable column - * number on top frame - * - Opera 10: full stack trace with line and column numbers - * - Opera 9-: full stack trace with line numbers - * - Chrome: full stack trace with line and column numbers - * - Safari: line and column number for the topmost stacktrace element - * only - * - IE: no line numbers whatsoever - * - * Tries to guess names of anonymous functions by looking for assignments - * in the source code. In IE and Safari, we have to guess source file names - * by searching for function bodies inside all page scripts. This will not - * work for scripts that are loaded cross-domain. - * Here be dragons: some function names may be guessed incorrectly, and - * duplicate functions may be mismatched. - * - * TraceKit.computeStackTrace should only be used for tracing purposes. - * Logging of unhandled exceptions should be done with TraceKit.report, - * which builds on top of TraceKit.computeStackTrace and provides better - * IE support by utilizing the window.onerror event to retrieve information - * about the top of the stack. - * - * Note: In IE and Safari, no stack trace is recorded on the Error object, - * so computeStackTrace instead walks its *own* chain of callers. - * This means that: - * * in Safari, some methods may be missing from the stack trace; - * * in IE, the topmost function in the stack trace will always be the - * caller of computeStackTrace. - * - * This is okay for tracing (because you are likely to be calling - * computeStackTrace from the function you want to be the topmost element - * of the stack trace anyway), but not okay for logging unhandled - * exceptions (because your catch block will likely be far away from the - * inner function that actually caused the exception). - * - */ + return this; + }, + /* + * Set/clear a user to be sent along with the payload. + * + * @param {object} user An object representing user data [optional] + * @return {Raven} + */ + setUserContext: function(user) { + // Intentionally do not merge here since that's an unexpected behavior. + this._globalContext.user = user; -TraceKit.computeStackTrace = function computeStackTraceWrapper() { - // Contents of Exception in various browsers. - // - // SAFARI: - // ex.message = Can't find variable: qq - // ex.line = 59 - // ex.sourceId = 580238192 - // ex.sourceURL = http://... - // ex.expressionBeginOffset = 96 - // ex.expressionCaretOffset = 98 - // ex.expressionEndOffset = 98 - // ex.name = ReferenceError - // - // FIREFOX: - // ex.message = qq is not defined - // ex.fileName = http://... - // ex.lineNumber = 59 - // ex.columnNumber = 69 - // ex.stack = ...stack trace... (see the example below) - // ex.name = ReferenceError - // - // CHROME: - // ex.message = qq is not defined - // ex.name = ReferenceError - // ex.type = not_defined - // ex.arguments = ['aa'] - // ex.stack = ...stack trace... - // - // INTERNET EXPLORER: - // ex.message = ... - // ex.name = ReferenceError - // - // OPERA: - // ex.message = ...message... (see the example below) - // ex.name = ReferenceError - // ex.opera#sourceloc = 11 (pretty much useless, duplicates the info in ex.message) - // ex.stacktrace = n/a; see 'opera:config#UserPrefs|Exceptions Have Stacktrace' + return this; + }, - /** - * Computes stack trace information from the stack property. - * Chrome and Gecko use this property. - * @param {Error} ex - * @return {?Object.} Stack trace information. + /* + * Merge extra attributes to be sent along with the payload. + * + * @param {object} extra An object representing extra data [optional] + * @return {Raven} */ - function computeStackTraceFromStackProp(ex) { - if (typeof ex.stack === 'undefined' || !ex.stack) return; - var chrome = /^\s*at (.*?) ?\(((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i, - gecko = /^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|\[native).*?|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i, - winjs = /^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i, - // Used to additionally parse URL/line/column from eval frames - geckoEval = /(\S+) line (\d+)(?: > eval line \d+)* > eval/i, - chromeEval = /\((\S*)(?::(\d+))(?::(\d+))\)/, - lines = ex.stack.split('\n'), - stack = [], - submatch, - parts, - element, - reference = /^(.*) is undefined$/.exec(ex.message); + setExtraContext: function(extra) { + this._mergeContext('extra', extra); - for (var i = 0, j = lines.length; i < j; ++i) { - if (parts = chrome.exec(lines[i])) { - var isNative = parts[2] && parts[2].indexOf('native') === 0; // start of line + return this; + }, - var isEval = parts[2] && parts[2].indexOf('eval') === 0; // start of line + /* + * Merge tags to be sent along with the payload. + * + * @param {object} tags An object representing tags [optional] + * @return {Raven} + */ + setTagsContext: function(tags) { + this._mergeContext('tags', tags); - if (isEval && (submatch = chromeEval.exec(parts[2]))) { - // throw out eval line/column and use top-most line/column number - parts[2] = submatch[1]; // url + return this; + }, - parts[3] = submatch[2]; // line + /* + * Clear all of the context. + * + * @return {Raven} + */ + clearContext: function() { + this._globalContext = {}; - parts[4] = submatch[3]; // column - } - - element = { - url: !isNative ? parts[2] : null, - func: parts[1] || UNKNOWN_FUNCTION, - args: isNative ? [parts[2]] : [], - line: parts[3] ? +parts[3] : null, - column: parts[4] ? +parts[4] : null - }; - } else if (parts = winjs.exec(lines[i])) { - element = { - url: parts[2], - func: parts[1] || UNKNOWN_FUNCTION, - args: [], - line: +parts[3], - column: parts[4] ? +parts[4] : null - }; - } else if (parts = gecko.exec(lines[i])) { - var isEval = parts[3] && parts[3].indexOf(' > eval') > -1; - - if (isEval && (submatch = geckoEval.exec(parts[3]))) { - // throw out eval line/column and use top-most line number - parts[3] = submatch[1]; - parts[4] = submatch[2]; - parts[5] = null; // no column when eval - } else if (i === 0 && !parts[5] && typeof ex.columnNumber !== 'undefined') { - // FireFox uses this awesome columnNumber property for its top frame - // Also note, Firefox's column number is 0-based and everything else expects 1-based, - // so adding 1 - // NOTE: this hack doesn't work if top-most frame is eval - stack[0].column = ex.columnNumber + 1; - } - - element = { - url: parts[3], - func: parts[1] || UNKNOWN_FUNCTION, - args: parts[2] ? parts[2].split(',') : [], - line: parts[4] ? +parts[4] : null, - column: parts[5] ? +parts[5] : null - }; - } else { - continue; - } + return this; + }, - if (!element.func && element.line) { - element.func = UNKNOWN_FUNCTION; - } + /* + * Get a copy of the current context. This cannot be mutated. + * + * @return {object} copy of context + */ + getContext: function() { + // lol javascript + return JSON.parse(stringify(this._globalContext)); + }, - stack.push(element); - } + /* + * Set environment of application + * + * @param {string} environment Typically something like 'production'. + * @return {Raven} + */ + setEnvironment: function(environment) { + this._globalOptions.environment = environment; - if (!stack.length) { - return null; - } + return this; + }, - return { - name: ex.name, - message: ex.message, - url: getLocationHref(), - stack: stack - }; - } - /** - * Adds information about the first frame to incomplete stack traces. - * Safari and IE require this to get complete data on the first frame. - * @param {Object.} stackInfo Stack trace information from - * one of the compute* methods. - * @param {string} url The URL of the script that caused an error. - * @param {(number|string)} lineNo The line number of the script that - * caused an error. - * @param {string=} message The error generated by the browser, which - * hopefully contains the name of the object that caused the error. - * @return {boolean} Whether or not the stack information was - * augmented. + /* + * Set release version of application + * + * @param {string} release Typically something like a git SHA to identify version + * @return {Raven} */ + setRelease: function(release) { + this._globalOptions.release = release; + return this; + }, - function augmentStackTraceWithInitialElement(stackInfo, url, lineNo, message) { - var initial = { - url: url, - line: lineNo - }; + /* + * Set the dataCallback option + * + * @param {function} callback The callback to run which allows the + * data blob to be mutated before sending + * @return {Raven} + */ + setDataCallback: function(callback) { + var original = this._globalOptions.dataCallback; + this._globalOptions.dataCallback = keepOriginalCallback(original, callback); + return this; + }, - if (initial.url && initial.line) { - stackInfo.incomplete = false; + /* + * Set the breadcrumbCallback option + * + * @param {function} callback The callback to run which allows filtering + * or mutating breadcrumbs + * @return {Raven} + */ + setBreadcrumbCallback: function(callback) { + var original = this._globalOptions.breadcrumbCallback; + this._globalOptions.breadcrumbCallback = keepOriginalCallback(original, callback); + return this; + }, - if (!initial.func) { - initial.func = UNKNOWN_FUNCTION; - } + /* + * Set the shouldSendCallback option + * + * @param {function} callback The callback to run which allows + * introspecting the blob before sending + * @return {Raven} + */ + setShouldSendCallback: function(callback) { + var original = this._globalOptions.shouldSendCallback; + this._globalOptions.shouldSendCallback = keepOriginalCallback(original, callback); + return this; + }, - if (stackInfo.stack.length > 0) { - if (stackInfo.stack[0].url === initial.url) { - if (stackInfo.stack[0].line === initial.line) { - return false; // already in stack trace - } else if (!stackInfo.stack[0].line && stackInfo.stack[0].func === initial.func) { - stackInfo.stack[0].line = initial.line; - return false; - } - } - } + /** + * Override the default HTTP transport mechanism that transmits data + * to the Sentry server. + * + * @param {function} transport Function invoked instead of the default + * `makeRequest` handler. + * + * @return {Raven} + */ + setTransport: function(transport) { + this._globalOptions.transport = transport; - stackInfo.stack.unshift(initial); - stackInfo.partial = true; - return true; - } else { - stackInfo.incomplete = true; - } + return this; + }, - return false; - } - /** - * Computes stack trace information by walking the arguments.caller - * chain at the time the exception occurred. This will cause earlier - * frames to be missed but is the only way to get any stack trace in - * Safari and IE. The top frame is restored by - * {@link augmentStackTraceWithInitialElement}. - * @param {Error} ex - * @return {?Object.} Stack trace information. + /* + * Get the latest raw exception that was captured by Raven. + * + * @return {error} */ + lastException: function() { + return this._lastCapturedException; + }, + /* + * Get the last event id + * + * @return {string} + */ + lastEventId: function() { + return this._lastEventId; + }, - function computeStackTraceByWalkingCallerChain(ex, depth) { - var functionName = /function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i, - stack = [], - funcs = {}, - recursion = false, - parts, - item; - - for (var curr = computeStackTraceByWalkingCallerChain.caller; curr && !recursion; curr = curr.caller) { - if (curr === computeStackTrace || curr === TraceKit.report) { - // console.log('skipping internal function'); - continue; + /* + * Determine if Raven is setup and ready to go. + * + * @return {boolean} + */ + isSetup: function() { + if (!this._hasJSON) return false; // needs JSON support + if (!this._globalServer) { + if (!this.ravenNotConfiguredError) { + this.ravenNotConfiguredError = true; + this._logDebug('error', 'Error: Raven has not been configured.'); } + return false; + } + return true; + }, - item = { - url: null, - func: UNKNOWN_FUNCTION, - line: null, - column: null - }; + afterLoad: function() { + // TODO: remove window dependence? - if (curr.name) { - item.func = curr.name; - } else if (parts = functionName.exec(curr.toString())) { - item.func = parts[1]; - } + // Attempt to initialize Raven on load + var RavenConfig = _window.RavenConfig; + if (RavenConfig) { + this.config(RavenConfig.dsn, RavenConfig.config).install(); + } + }, - if (typeof item.func === 'undefined') { - try { - item.func = parts.input.substring(0, parts.input.indexOf('{')); - } catch (e) {} - } + showReportDialog: function(options) { + if ( + !_document // doesn't work without a document (React native) + ) + return; - if (funcs['' + curr]) { - recursion = true; - } else { - funcs['' + curr] = true; - } + options = options || {}; - stack.push(item); + var lastEventId = options.eventId || this.lastEventId(); + if (!lastEventId) { + throw new RavenConfigError('Missing eventId'); } - if (depth) { - // console.log('depth is ' + depth); - // console.log('stack is ' + stack.length); - stack.splice(0, depth); + var dsn = options.dsn || this._dsn; + if (!dsn) { + throw new RavenConfigError('Missing DSN'); } - var result = { - name: ex.name, - message: ex.message, - url: getLocationHref(), - stack: stack - }; - augmentStackTraceWithInitialElement(result, ex.sourceURL || ex.fileName, ex.line || ex.lineNumber, ex.message || ex.description); - return result; - } - /** - * Computes a stack trace for an exception. - * @param {Error} ex - * @param {(string|number)=} depth - */ + var encode = encodeURIComponent; + var qs = ''; + qs += '?eventId=' + encode(lastEventId); + qs += '&dsn=' + encode(dsn); + var user = options.user || this._globalContext.user; + if (user) { + if (user.name) qs += '&name=' + encode(user.name); + if (user.email) qs += '&email=' + encode(user.email); + } - function computeStackTrace(ex, depth) { - var stack = null; - depth = depth == null ? 0 : +depth; + var globalServer = this._getGlobalServer(this._parseDSN(dsn)); - try { - stack = computeStackTraceFromStackProp(ex); + var script = _document.createElement('script'); + script.async = true; + script.src = globalServer + '/api/embed/error-page/' + qs; + (_document.head || _document.body).appendChild(script); + }, - if (stack) { - return stack; + /**** Private functions ****/ + _ignoreNextOnError: function() { + var self = this; + this._ignoreOnError += 1; + setTimeout(function() { + // onerror should trigger before setTimeout + self._ignoreOnError -= 1; + }); + }, + + _triggerEvent: function(eventType, options) { + // NOTE: `event` is a native browser thing, so let's avoid conflicting wiht it + var evt, key; + + if (!this._hasDocument) return; + + options = options || {}; + + eventType = 'raven' + eventType.substr(0, 1).toUpperCase() + eventType.substr(1); + + if (_document.createEvent) { + evt = _document.createEvent('HTMLEvents'); + evt.initEvent(eventType, true, true); + } else { + evt = _document.createEventObject(); + evt.eventType = eventType; + } + + for (key in options) + if (hasKey(options, key)) { + evt[key] = options[key]; } - } catch (e) { - if (TraceKit.debug) { - throw e; + + if (_document.createEvent) { + // IE9 if standards + _document.dispatchEvent(evt); + } else { + // IE8 regardless of Quirks or Standards + // IE9 if quirks + try { + _document.fireEvent('on' + evt.eventType.toLowerCase(), evt); + } catch (e) { + // Do nothing } } + }, - try { - stack = computeStackTraceByWalkingCallerChain(ex, depth + 1); + /** + * Wraps addEventListener to capture UI breadcrumbs + * @param evtName the event name (e.g. "click") + * @returns {Function} + * @private + */ + _breadcrumbEventHandler: function(evtName) { + var self = this; + return function(evt) { + // reset keypress timeout; e.g. triggering a 'click' after + // a 'keypress' will reset the keypress debounce so that a new + // set of keypresses can be recorded + self._keypressTimeout = null; - if (stack) { - return stack; - } - } catch (e) { - if (TraceKit.debug) { - throw e; + // It's possible this handler might trigger multiple times for the same + // event (e.g. event propagation through node ancestors). Ignore if we've + // already captured the event. + if (self._lastCapturedEvent === evt) return; + + self._lastCapturedEvent = evt; + + // try/catch both: + // - accessing evt.target (see getsentry/raven-js#838, #768) + // - `htmlTreeAsString` because it's complex, and just accessing the DOM incorrectly + // can throw an exception in some circumstances. + var target; + try { + target = htmlTreeAsString(evt.target); + } catch (e) { + target = ''; } - } - return { - name: ex.name, - message: ex.message, - url: getLocationHref() + self.captureBreadcrumb({ + category: 'ui.' + evtName, // e.g. ui.click, ui.input + message: target + }); }; - } + }, - computeStackTrace.augmentStackTraceWithInitialElement = augmentStackTraceWithInitialElement; - computeStackTrace.computeStackTraceFromStackProp = computeStackTraceFromStackProp; - return computeStackTrace; -}(); + /** + * Wraps addEventListener to capture keypress UI events + * @returns {Function} + * @private + */ + _keypressEventHandler: function() { + var self = this, + debounceDuration = 1000; // milliseconds -var tracekit = TraceKit; + // TODO: if somehow user switches keypress target before + // debounce timeout is triggered, we will only capture + // a single breadcrumb from the FIRST target (acceptable?) + return function(evt) { + var target; + try { + target = evt.target; + } catch (e) { + // just accessing event properties can throw an exception in some rare circumstances + // see: https://github.com/getsentry/raven-js/issues/838 + return; + } + var tagName = target && target.tagName; -var stringify_1 = createCommonjsModule(function (module, exports) { - /* - json-stringify-safe - Like JSON.stringify, but doesn't throw on circular references. - - Originally forked from https://github.com/isaacs/json-stringify-safe - version 5.0.1 on 3/8/2017 and modified to handle Errors serialization - and IE8 compatibility. Tests for this are in test/vendor. - - ISC license: https://github.com/isaacs/json-stringify-safe/blob/master/LICENSE - */ - exports = module.exports = stringify; - exports.getSerialize = serializer; - - function indexOf(haystack, needle) { - for (var i = 0; i < haystack.length; ++i) { - if (haystack[i] === needle) return i; - } - - return -1; - } + // only consider keypress events on actual input elements + // this will disregard keypresses targeting body (e.g. tabbing + // through elements, hotkeys, etc) + if ( + !tagName || + (tagName !== 'INPUT' && tagName !== 'TEXTAREA' && !target.isContentEditable) + ) + return; - function stringify(obj, replacer, spaces, cycleReplacer) { - return JSON.stringify(obj, serializer(replacer, cycleReplacer), spaces); - } // https://github.com/ftlabs/js-abbreviate/blob/fa709e5f139e7770a71827b1893f22418097fbda/index.js#L95-L106 + // record first keypress in a series, but ignore subsequent + // keypresses until debounce clears + var timeout = self._keypressTimeout; + if (!timeout) { + self._breadcrumbEventHandler('input')(evt); + } + clearTimeout(timeout); + self._keypressTimeout = setTimeout(function() { + self._keypressTimeout = null; + }, debounceDuration); + }; + }, + /** + * Captures a breadcrumb of type "navigation", normalizing input URLs + * @param to the originating URL + * @param from the target URL + * @private + */ + _captureUrlChange: function(from, to) { + var parsedLoc = parseUrl(this._location.href); + var parsedTo = parseUrl(to); + var parsedFrom = parseUrl(from); - function stringifyError(value) { - var err = { - // These properties are implemented as magical getters and don't show up in for in - stack: value.stack, - message: value.message, - name: value.name - }; + // because onpopstate only tells you the "new" (to) value of location.href, and + // not the previous (from) value, we need to track the value of the current URL + // state ourselves + this._lastHref = to; + + // Use only the path component of the URL if the URL matches the current + // document (almost all the time when using pushState) + if (parsedLoc.protocol === parsedTo.protocol && parsedLoc.host === parsedTo.host) + to = parsedTo.relative; + if (parsedLoc.protocol === parsedFrom.protocol && parsedLoc.host === parsedFrom.host) + from = parsedFrom.relative; + + this.captureBreadcrumb({ + category: 'navigation', + data: { + to: to, + from: from + } + }); + }, - for (var i in value) { - if (Object.prototype.hasOwnProperty.call(value, i)) { - err[i] = value[i]; + _patchFunctionToString: function() { + var self = this; + self._originalFunctionToString = Function.prototype.toString; + // eslint-disable-next-line no-extend-native + Function.prototype.toString = function() { + if (typeof this === 'function' && this.__raven__) { + return self._originalFunctionToString.apply(this.__orig__, arguments); } + return self._originalFunctionToString.apply(this, arguments); + }; + }, + + _unpatchFunctionToString: function() { + if (this._originalFunctionToString) { + // eslint-disable-next-line no-extend-native + Function.prototype.toString = this._originalFunctionToString; } + }, - return err; - } + /** + * Wrap timer functions and event targets to catch errors and provide + * better metadata. + */ + _instrumentTryCatch: function() { + var self = this; - function serializer(replacer, cycleReplacer) { - var stack = []; - var keys = []; + var wrappedBuiltIns = self._wrappedBuiltIns; - if (cycleReplacer == null) { - cycleReplacer = function cycleReplacer(key, value) { - if (stack[0] === value) { - return '[Circular ~]'; + function wrapTimeFn(orig) { + return function(fn, t) { + // preserve arity + // Make a copy of the arguments to prevent deoptimization + // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments + var args = new Array(arguments.length); + for (var i = 0; i < args.length; ++i) { + args[i] = arguments[i]; + } + var originalCallback = args[0]; + if (isFunction(originalCallback)) { + args[0] = self.wrap(originalCallback); } - return '[Circular ~.' + keys.slice(0, indexOf(stack, value)).join('.') + ']'; + // IE < 9 doesn't support .call/.apply on setInterval/setTimeout, but it + // also supports only two arguments and doesn't care what this is, so we + // can just call the original function directly. + if (orig.apply) { + return orig.apply(this, args); + } else { + return orig(args[0], args[1]); + } }; } - return function (key, value) { - if (stack.length > 0) { - var thisPos = indexOf(stack, this); - ~thisPos ? stack.splice(thisPos + 1) : stack.push(this); - ~thisPos ? keys.splice(thisPos, Infinity, key) : keys.push(key); + var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; - if (~indexOf(stack, value)) { - value = cycleReplacer.call(this, key, value); - } - } else { - stack.push(value); + function wrapEventTarget(global) { + var proto = _window[global] && _window[global].prototype; + if (proto && proto.hasOwnProperty && proto.hasOwnProperty('addEventListener')) { + fill( + proto, + 'addEventListener', + function(orig) { + return function(evtName, fn, capture, secure) { + // preserve arity + try { + if (fn && fn.handleEvent) { + fn.handleEvent = self.wrap(fn.handleEvent); + } + } catch (err) { + // can sometimes get 'Permission denied to access property "handle Event' + } + + // More breadcrumb DOM capture ... done here and not in `_instrumentBreadcrumbs` + // so that we don't have more than one wrapper function + var before, clickHandler, keypressHandler; + + if ( + autoBreadcrumbs && + autoBreadcrumbs.dom && + (global === 'EventTarget' || global === 'Node') + ) { + // NOTE: generating multiple handlers per addEventListener invocation, should + // revisit and verify we can just use one (almost certainly) + clickHandler = self._breadcrumbEventHandler('click'); + keypressHandler = self._keypressEventHandler(); + before = function(evt) { + // need to intercept every DOM event in `before` argument, in case that + // same wrapped method is re-used for different events (e.g. mousemove THEN click) + // see #724 + if (!evt) return; + + var eventType; + try { + eventType = evt.type; + } catch (e) { + // just accessing event properties can throw an exception in some rare circumstances + // see: https://github.com/getsentry/raven-js/issues/838 + return; + } + if (eventType === 'click') return clickHandler(evt); + else if (eventType === 'keypress') return keypressHandler(evt); + }; + } + return orig.call( + this, + evtName, + self.wrap(fn, undefined, before), + capture, + secure + ); + }; + }, + wrappedBuiltIns + ); + fill( + proto, + 'removeEventListener', + function(orig) { + return function(evt, fn, capture, secure) { + try { + fn = fn && (fn.__raven_wrapper__ ? fn.__raven_wrapper__ : fn); + } catch (e) { + // ignore, accessing __raven_wrapper__ will throw in some Selenium environments + } + return orig.call(this, evt, fn, capture, secure); + }; + }, + wrappedBuiltIns + ); } + } - return replacer == null ? value instanceof Error ? stringifyError(value) : value : replacer.call(this, key, value); - }; - } -}); -var stringify_2 = stringify_1.getSerialize; + fill(_window, 'setTimeout', wrapTimeFn, wrappedBuiltIns); + fill(_window, 'setInterval', wrapTimeFn, wrappedBuiltIns); + if (_window.requestAnimationFrame) { + fill( + _window, + 'requestAnimationFrame', + function(orig) { + return function(cb) { + return orig(self.wrap(cb)); + }; + }, + wrappedBuiltIns + ); + } -function RavenConfigError(message) { - this.name = 'RavenConfigError'; - this.message = message; -} + // event targets borrowed from bugsnag-js: + // https://github.com/bugsnag/bugsnag-js/blob/master/src/bugsnag.js#L666 + var eventTargets = [ + 'EventTarget', + 'Window', + 'Node', + 'ApplicationCache', + 'AudioTrackList', + 'ChannelMergerNode', + 'CryptoOperation', + 'EventSource', + 'FileReader', + 'HTMLUnknownElement', + 'IDBDatabase', + 'IDBRequest', + 'IDBTransaction', + 'KeyOperation', + 'MediaController', + 'MessagePort', + 'ModalWindow', + 'Notification', + 'SVGElementInstance', + 'Screen', + 'TextTrack', + 'TextTrackCue', + 'TextTrackList', + 'WebSocket', + 'WebSocketWorker', + 'Worker', + 'XMLHttpRequest', + 'XMLHttpRequestEventTarget', + 'XMLHttpRequestUpload' + ]; + for (var i = 0; i < eventTargets.length; i++) { + wrapEventTarget(eventTargets[i]); + } + }, -RavenConfigError.prototype = new Error(); -RavenConfigError.prototype.constructor = RavenConfigError; -var configError = RavenConfigError; + /** + * Instrument browser built-ins w/ breadcrumb capturing + * - XMLHttpRequests + * - DOM interactions (click/typing) + * - window.location changes + * - console + * + * Can be disabled or individually configured via the `autoBreadcrumbs` config option + */ + _instrumentBreadcrumbs: function() { + var self = this; + var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; -var wrapMethod = function wrapMethod(console, level, callback) { - var originalConsoleLevel = console[level]; - var originalConsole = console; + var wrappedBuiltIns = self._wrappedBuiltIns; - if (!(level in console)) { - return; - } + function wrapProp(prop, xhr) { + if (prop in xhr && isFunction(xhr[prop])) { + fill(xhr, prop, function(orig) { + return self.wrap(orig); + }); // intentionally don't track filled methods on XHR instances + } + } - var sentryLevel = level === 'warn' ? 'warning' : level; + if (autoBreadcrumbs.xhr && 'XMLHttpRequest' in _window) { + var xhrproto = _window.XMLHttpRequest && _window.XMLHttpRequest.prototype; + fill( + xhrproto, + 'open', + function(origOpen) { + return function(method, url) { + // preserve arity - console[level] = function () { - var args = [].slice.call(arguments); - var msg = utils.safeJoin(args, ' '); - var data = { - level: sentryLevel, - logger: 'console', - extra: { - arguments: args - } - }; + // if Sentry key appears in URL, don't capture + if (isString(url) && url.indexOf(self._globalKey) === -1) { + this.__raven_xhr = { + method: method, + url: url, + status_code: null + }; + } - if (level === 'assert') { - if (args[0] === false) { - // Default browsers message - msg = 'Assertion failed: ' + (utils.safeJoin(args.slice(1), ' ') || 'console.assert'); - data.extra.arguments = args.slice(1); - callback && callback(msg, data); - } - } else { - callback && callback(msg, data); - } // this fails for some browsers. :( + return origOpen.apply(this, arguments); + }; + }, + wrappedBuiltIns + ); + + fill( + xhrproto, + 'send', + function(origSend) { + return function() { + // preserve arity + var xhr = this; + function onreadystatechangeHandler() { + if (xhr.__raven_xhr && xhr.readyState === 4) { + try { + // touching statusCode in some platforms throws + // an exception + xhr.__raven_xhr.status_code = xhr.status; + } catch (e) { + /* do nothing */ + } - if (originalConsoleLevel) { - // IE9 doesn't allow calling apply on console functions directly - // See: https://stackoverflow.com/questions/5472938/does-ie9-support-console-log-and-is-it-a-real-function#answer-5473193 - Function.prototype.apply.call(originalConsoleLevel, originalConsole, args); - } - }; -}; - -var console$1 = { - wrapMethod: wrapMethod -}; - -/*global XDomainRequest:false */ - -var isError = utils.isError; -var isObject = utils.isObject; -var isErrorEvent = utils.isErrorEvent; -var isUndefined = utils.isUndefined; -var isFunction = utils.isFunction; -var isString = utils.isString; -var isArray = utils.isArray; -var isEmptyObject = utils.isEmptyObject; -var each = utils.each; -var objectMerge = utils.objectMerge; -var truncate = utils.truncate; -var objectFrozen = utils.objectFrozen; -var hasKey = utils.hasKey; -var joinRegExp = utils.joinRegExp; -var urlencode = utils.urlencode; -var uuid4 = utils.uuid4; -var htmlTreeAsString = utils.htmlTreeAsString; -var isSameException = utils.isSameException; -var isSameStacktrace = utils.isSameStacktrace; -var parseUrl = utils.parseUrl; -var fill = utils.fill; -var supportsFetch = utils.supportsFetch; -var wrapConsoleMethod = console$1.wrapMethod; -var dsnKeys = 'source protocol user pass host port path'.split(' '); -var dsnPattern = /^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/; + self.captureBreadcrumb({ + type: 'http', + category: 'xhr', + data: xhr.__raven_xhr + }); + } + } -function now() { - return +new Date(); -} // This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) + var props = ['onload', 'onerror', 'onprogress']; + for (var j = 0; j < props.length; j++) { + wrapProp(props[j], xhr); + } + if ('onreadystatechange' in xhr && isFunction(xhr.onreadystatechange)) { + fill( + xhr, + 'onreadystatechange', + function(orig) { + return self.wrap(orig, undefined, onreadystatechangeHandler); + } /* intentionally don't track this instrumentation */ + ); + } else { + // if onreadystatechange wasn't actually set by the page on this xhr, we + // are free to set our own and capture the breadcrumb + xhr.onreadystatechange = onreadystatechangeHandler; + } -var _window$1 = typeof window !== 'undefined' ? window : typeof commonjsGlobal !== 'undefined' ? commonjsGlobal : typeof self !== 'undefined' ? self : {}; + return origSend.apply(this, arguments); + }; + }, + wrappedBuiltIns + ); + } -var _document = _window$1.document; -var _navigator = _window$1.navigator; + if (autoBreadcrumbs.xhr && supportsFetch()) { + fill( + _window, + 'fetch', + function(origFetch) { + return function() { + // preserve arity + // Make a copy of the arguments to prevent deoptimization + // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments + var args = new Array(arguments.length); + for (var i = 0; i < args.length; ++i) { + args[i] = arguments[i]; + } -function keepOriginalCallback(original, callback) { - return isFunction(callback) ? function (data) { - return callback(data, original); - } : callback; -} // First, check for JSON support -// If there is no JSON, we no-op the core features of Raven -// since JSON is required to encode the payload + var fetchInput = args[0]; + var method = 'GET'; + var url; + if (typeof fetchInput === 'string') { + url = fetchInput; + } else if ('Request' in _window && fetchInput instanceof _window.Request) { + url = fetchInput.url; + if (fetchInput.method) { + method = fetchInput.method; + } + } else { + url = '' + fetchInput; + } -function Raven$1() { - this._hasJSON = !!(_typeof(JSON) === 'object' && JSON.stringify); // Raven can run in contexts where there's no document (react-native) + // if Sentry key appears in URL, don't capture, as it's our own request + if (url.indexOf(self._globalKey) !== -1) { + return origFetch.apply(this, args); + } - this._hasDocument = !isUndefined(_document); - this._hasNavigator = !isUndefined(_navigator); - this._lastCapturedException = null; - this._lastData = null; - this._lastEventId = null; - this._globalServer = null; - this._globalKey = null; - this._globalProject = null; - this._globalContext = {}; - this._globalOptions = { - // SENTRY_RELEASE can be injected by https://github.com/getsentry/sentry-webpack-plugin - release: _window$1.SENTRY_RELEASE && _window$1.SENTRY_RELEASE.id, - logger: 'javascript', - ignoreErrors: [], - ignoreUrls: [], - whitelistUrls: [], - includePaths: [], - headers: null, - collectWindowErrors: true, - maxMessageLength: 0, - // By default, truncates URL values to 250 chars - maxUrlLength: 250, - stackTraceLimit: 50, - autoBreadcrumbs: true, - instrument: true, - sampleRate: 1 - }; - this._fetchDefaults = { - method: 'POST', - keepalive: true, - referrerPolicy: 'origin' - }; - this._ignoreOnError = 0; - this._isRavenInstalled = false; - this._originalErrorStackTraceLimit = Error.stackTraceLimit; // capture references to window.console *and* all its methods first - // before the console plugin has a chance to monkey patch + if (args[1] && args[1].method) { + method = args[1].method; + } - this._originalConsole = _window$1.console || {}; - this._originalConsoleMethods = {}; - this._plugins = []; - this._startTime = now(); - this._wrappedBuiltIns = []; - this._breadcrumbs = []; - this._lastCapturedEvent = null; - this._keypressTimeout; - this._location = _window$1.location; - this._lastHref = this._location && this._location.href; + var fetchData = { + method: method, + url: url, + status_code: null + }; - this._resetBackoff(); // eslint-disable-next-line guard-for-in + return origFetch + .apply(this, args) + .then(function(response) { + fetchData.status_code = response.status; + + self.captureBreadcrumb({ + type: 'http', + category: 'fetch', + data: fetchData + }); + + return response; + }) + ['catch'](function(err) { + // if there is an error performing the request + self.captureBreadcrumb({ + type: 'http', + category: 'fetch', + data: fetchData, + level: 'error' + }); + + throw err; + }); + }; + }, + wrappedBuiltIns + ); + } + // Capture breadcrumbs from any click that is unhandled / bubbled up all the way + // to the document. Do this before we instrument addEventListener. + if (autoBreadcrumbs.dom && this._hasDocument) { + if (_document.addEventListener) { + _document.addEventListener('click', self._breadcrumbEventHandler('click'), false); + _document.addEventListener('keypress', self._keypressEventHandler(), false); + } else if (_document.attachEvent) { + // IE8 Compatibility + _document.attachEvent('onclick', self._breadcrumbEventHandler('click')); + _document.attachEvent('onkeypress', self._keypressEventHandler()); + } + } - for (var method in this._originalConsole) { - this._originalConsoleMethods[method] = this._originalConsole[method]; - } -} -/* - * The core Raven singleton - * - * @this {Raven} - */ + // record navigation (URL) changes + // NOTE: in Chrome App environment, touching history.pushState, *even inside + // a try/catch block*, will cause Chrome to output an error to console.error + // borrowed from: https://github.com/angular/angular.js/pull/13945/files + var chrome = _window.chrome; + var isChromePackagedApp = chrome && chrome.app && chrome.app.runtime; + var hasPushAndReplaceState = + !isChromePackagedApp && + _window.history && + history.pushState && + history.replaceState; + if (autoBreadcrumbs.location && hasPushAndReplaceState) { + // TODO: remove onpopstate handler on uninstall() + var oldOnPopState = _window.onpopstate; + _window.onpopstate = function() { + var currentHref = self._location.href; + self._captureUrlChange(self._lastHref, currentHref); + if (oldOnPopState) { + return oldOnPopState.apply(this, arguments); + } + }; -Raven$1.prototype = { - // Hardcode version string so that raven source can be loaded directly via - // webpack (using a build step causes webpack #1617). Grunt verifies that - // this value matches package.json during build. - // See: https://github.com/getsentry/raven-js/issues/465 - VERSION: '3.22.2', - debug: false, - TraceKit: tracekit, - // alias to TraceKit + var historyReplacementFunction = function(origHistFunction) { + // note history.pushState.length is 0; intentionally not declaring + // params to preserve 0 arity + return function(/* state, title, url */) { + var url = arguments.length > 2 ? arguments[2] : undefined; - /* - * Configure Raven with a DSN and extra options - * - * @param {string} dsn The public Sentry DSN - * @param {object} options Set of global options [optional] - * @return {Raven} - */ - config: function config(dsn, options) { - var self = this; + // url argument is optional + if (url) { + // coerce to string (this is what pushState does) + self._captureUrlChange(self._lastHref, url + ''); + } - if (self._globalServer) { - this._logDebug('error', 'Error: Raven has already been configured'); + return origHistFunction.apply(this, arguments); + }; + }; - return self; + fill(history, 'pushState', historyReplacementFunction, wrappedBuiltIns); + fill(history, 'replaceState', historyReplacementFunction, wrappedBuiltIns); } - if (!dsn) return self; - var globalOptions = self._globalOptions; // merge in options + if (autoBreadcrumbs.console && 'console' in _window && console.log) { + // console + var consoleMethodCallback = function(msg, data) { + self.captureBreadcrumb({ + message: msg, + level: data.level, + category: 'console' + }); + }; - if (options) { - each(options, function (key, value) { - // tags and extra are special and need to be put into context - if (key === 'tags' || key === 'extra' || key === 'user') { - self._globalContext[key] = value; - } else { - globalOptions[key] = value; - } + each(['debug', 'info', 'warn', 'error', 'log'], function(_, level) { + wrapConsoleMethod(console, level, consoleMethodCallback); }); } + }, - self.setDSN(dsn); // "Script error." is hard coded into browsers for errors that it can't read. - // this is the result of a script being pulled in from an external domain and CORS. - - globalOptions.ignoreErrors.push(/^Script error\.?$/); - globalOptions.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/); // join regexp rules into one big rule - - globalOptions.ignoreErrors = joinRegExp(globalOptions.ignoreErrors); - globalOptions.ignoreUrls = globalOptions.ignoreUrls.length ? joinRegExp(globalOptions.ignoreUrls) : false; - globalOptions.whitelistUrls = globalOptions.whitelistUrls.length ? joinRegExp(globalOptions.whitelistUrls) : false; - globalOptions.includePaths = joinRegExp(globalOptions.includePaths); - globalOptions.maxBreadcrumbs = Math.max(0, Math.min(globalOptions.maxBreadcrumbs || 100, 100)); // default and hard limit is 100 + _restoreBuiltIns: function() { + // restore any wrapped builtins + var builtin; + while (this._wrappedBuiltIns.length) { + builtin = this._wrappedBuiltIns.shift(); - var autoBreadcrumbDefaults = { - xhr: true, - console: true, - dom: true, - location: true, - sentry: true - }; - var autoBreadcrumbs = globalOptions.autoBreadcrumbs; + var obj = builtin[0], + name = builtin[1], + orig = builtin[2]; - if ({}.toString.call(autoBreadcrumbs) === '[object Object]') { - autoBreadcrumbs = objectMerge(autoBreadcrumbDefaults, autoBreadcrumbs); - } else if (autoBreadcrumbs !== false) { - autoBreadcrumbs = autoBreadcrumbDefaults; + obj[name] = orig; } + }, - globalOptions.autoBreadcrumbs = autoBreadcrumbs; - var instrumentDefaults = { - tryCatch: true - }; - var instrument = globalOptions.instrument; - - if ({}.toString.call(instrument) === '[object Object]') { - instrument = objectMerge(instrumentDefaults, instrument); - } else if (instrument !== false) { - instrument = instrumentDefaults; + _restoreConsole: function() { + // eslint-disable-next-line guard-for-in + for (var method in this._originalConsoleMethods) { + this._originalConsole[method] = this._originalConsoleMethods[method]; } - - globalOptions.instrument = instrument; - tracekit.collectWindowErrors = !!globalOptions.collectWindowErrors; // return for chaining - - return self; }, - /* - * Installs a global window.onerror error handler - * to capture and report uncaught exceptions. - * At this point, install() is required to be called due - * to the way TraceKit is set up. - * - * @return {Raven} - */ - install: function install() { + _drainPlugins: function() { var self = this; - if (self.isSetup() && !self._isRavenInstalled) { - tracekit.report.subscribe(function () { - self._handleOnErrorStackInfo.apply(self, arguments); - }); - - self._patchFunctionToString(); - - if (self._globalOptions.instrument && self._globalOptions.instrument.tryCatch) { - self._instrumentTryCatch(); - } + // FIX ME TODO + each(this._plugins, function(_, plugin) { + var installer = plugin[0]; + var args = plugin[1]; + installer.apply(self, [self].concat(args)); + }); + }, - if (self._globalOptions.autoBreadcrumbs) self._instrumentBreadcrumbs(); // Install all of the plugins + _parseDSN: function(str) { + var m = dsnPattern.exec(str), + dsn = {}, + i = 7; - self._drainPlugins(); + try { + while (i--) dsn[dsnKeys[i]] = m[i] || ''; + } catch (e) { + throw new RavenConfigError('Invalid DSN: ' + str); + } - self._isRavenInstalled = true; + if (dsn.pass && !this._globalOptions.allowSecretKey) { + throw new RavenConfigError( + 'Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key' + ); } - Error.stackTraceLimit = self._globalOptions.stackTraceLimit; - return this; + return dsn; }, - /* - * Set the DSN (can be called multiple time unlike config) - * - * @param {string} dsn The public Sentry DSN - */ - setDSN: function setDSN(dsn) { - var self = this, - uri = self._parseDSN(dsn), - lastSlash = uri.path.lastIndexOf('/'), - path = uri.path.substr(1, lastSlash); + _getGlobalServer: function(uri) { + // assemble the endpoint from the uri pieces + var globalServer = '//' + uri.host + (uri.port ? ':' + uri.port : ''); - self._dsn = dsn; - self._globalKey = uri.user; - self._globalSecret = uri.pass && uri.pass.substr(1); - self._globalProject = uri.path.substr(lastSlash + 1); - self._globalServer = self._getGlobalServer(uri); - self._globalEndpoint = self._globalServer + '/' + path + 'api/' + self._globalProject + '/store/'; // Reset backoff state since we may be pointing at a - // new project/server - - this._resetBackoff(); + if (uri.protocol) { + globalServer = uri.protocol + ':' + globalServer; + } + return globalServer; }, - /* - * Wrap code within a context so Raven can capture errors - * reliably across domains that is executed immediately. - * - * @param {object} options A specific set of options for this context [optional] - * @param {function} func The callback to be immediately executed within the context - * @param {array} args An array of arguments to be called with the callback [optional] - */ - context: function context(options, func, args) { - if (isFunction(options)) { - args = func || []; - func = options; - options = undefined; + _handleOnErrorStackInfo: function() { + // if we are intentionally ignoring errors via onerror, bail out + if (!this._ignoreOnError) { + this._handleStackInfo.apply(this, arguments); } - - return this.wrap(options, func).apply(this, args); }, - /* - * Wrap code within a context and returns back a new function to be executed - * - * @param {object} options A specific set of options for this context [optional] - * @param {function} func The function to be wrapped in a new context - * @param {function} func A function to call before the try/catch wrapper [optional, private] - * @return {function} The newly wrapped functions with a context - */ - wrap: function wrap(options, func, _before) { - var self = this; // 1 argument has been passed, and it's not a function - // so just return it + _handleStackInfo: function(stackInfo, options) { + var frames = this._prepareFrames(stackInfo, options); - if (isUndefined(func) && !isFunction(options)) { - return options; - } // options is optional + this._triggerEvent('handle', { + stackInfo: stackInfo, + options: options + }); + this._processException( + stackInfo.name, + stackInfo.message, + stackInfo.url, + stackInfo.lineno, + frames, + options + ); + }, - if (isFunction(options)) { - func = options; - options = undefined; - } // At this point, we've passed along 2 arguments, and the second one - // is not a function either, so we'll just return the second argument. + _prepareFrames: function(stackInfo, options) { + var self = this; + var frames = []; + if (stackInfo.stack && stackInfo.stack.length) { + each(stackInfo.stack, function(i, stack) { + var frame = self._normalizeFrame(stack, stackInfo.url); + if (frame) { + frames.push(frame); + } + }); + // e.g. frames captured via captureMessage throw + if (options && options.trimHeadFrames) { + for (var j = 0; j < options.trimHeadFrames && j < frames.length; j++) { + frames[j].in_app = false; + } + } + } + frames = frames.slice(0, this._globalOptions.stackTraceLimit); + return frames; + }, - if (!isFunction(func)) { - return func; - } // We don't wanna wrap it twice! + _normalizeFrame: function(frame, stackInfoUrl) { + // normalize the frames data + var normalized = { + filename: frame.url, + lineno: frame.line, + colno: frame.column, + function: frame.func || '?' + }; + // Case when we don't have any information about the error + // E.g. throwing a string or raw object, instead of an `Error` in Firefox + // Generating synthetic error doesn't add any value here + // + // We should probably somehow let a user know that they should fix their code + if (!frame.url) { + normalized.filename = stackInfoUrl; // fallback to whole stacks url from onerror handler + } - try { - if (func.__raven__) { - return func; - } // If this has already been wrapped in the past, return that + normalized.in_app = !// determine if an exception came from outside of our app + // first we check the global includePaths list. + ( + (!!this._globalOptions.includePaths.test && + !this._globalOptions.includePaths.test(normalized.filename)) || + // Now we check for fun, if the function name is Raven or TraceKit + /(Raven|TraceKit)\./.test(normalized['function']) || + // finally, we do a last ditch effort and check for raven.min.js + /raven\.(min\.)?js$/.test(normalized.filename) + ); + return normalized; + }, - if (func.__raven_wrapper__) { - return func.__raven_wrapper__; - } - } catch (e) { - // Just accessing custom props in some Selenium environments - // can cause a "Permission denied" exception (see raven-js#495). - // Bail on wrapping and return the function as-is (defers to window.onerror). - return func; + _processException: function(type, message, fileurl, lineno, frames, options) { + var prefixedMessage = (type ? type + ': ' : '') + (message || ''); + if ( + !!this._globalOptions.ignoreErrors.test && + (this._globalOptions.ignoreErrors.test(message) || + this._globalOptions.ignoreErrors.test(prefixedMessage)) + ) { + return; } - function wrapped() { - var args = [], - i = arguments.length, - deep = !options || options && options.deep !== false; + var stacktrace; - if (_before && isFunction(_before)) { - _before.apply(this, arguments); - } // Recursively wrap all of a function's arguments that are - // functions themselves. + if (frames && frames.length) { + fileurl = frames[0].filename || fileurl; + // Sentry expects frames oldest to newest + // and JS sends them as newest to oldest + frames.reverse(); + stacktrace = {frames: frames}; + } else if (fileurl) { + stacktrace = { + frames: [ + { + filename: fileurl, + lineno: lineno, + in_app: true + } + ] + }; + } + if ( + !!this._globalOptions.ignoreUrls.test && + this._globalOptions.ignoreUrls.test(fileurl) + ) { + return; + } - while (i--) { - args[i] = deep ? self.wrap(options, arguments[i]) : arguments[i]; - } + if ( + !!this._globalOptions.whitelistUrls.test && + !this._globalOptions.whitelistUrls.test(fileurl) + ) { + return; + } - try { - // Attempt to invoke user-land function - // NOTE: If you are a Sentry user, and you are seeing this stack frame, it - // means Raven caught an error invoking your application code. This is - // expected behavior and NOT indicative of a bug with Raven.js. - return func.apply(this, args); - } catch (e) { - self._ignoreNextOnError(); + var data = objectMerge( + { + // sentry.interfaces.Exception + exception: { + values: [ + { + type: type, + value: message, + stacktrace: stacktrace + } + ] + }, + culprit: fileurl + }, + options + ); - self.captureException(e, options); - throw e; - } - } // copy over properties of the old function + // Fire away! + this._send(data); + }, + _trimPacket: function(data) { + // For now, we only want to truncate the two different messages + // but this could/should be expanded to just trim everything + var max = this._globalOptions.maxMessageLength; + if (data.message) { + data.message = truncate(data.message, max); + } + if (data.exception) { + var exception = data.exception.values[0]; + exception.value = truncate(exception.value, max); + } - for (var property in func) { - if (hasKey(func, property)) { - wrapped[property] = func[property]; + var request = data.request; + if (request) { + if (request.url) { + request.url = truncate(request.url, this._globalOptions.maxUrlLength); + } + if (request.Referer) { + request.Referer = truncate(request.Referer, this._globalOptions.maxUrlLength); } } - wrapped.prototype = func.prototype; - func.__raven_wrapper__ = wrapped; // Signal that this function has been wrapped/filled already - // for both debugging and to prevent it to being wrapped/filled twice + if (data.breadcrumbs && data.breadcrumbs.values) + this._trimBreadcrumbs(data.breadcrumbs); - wrapped.__raven__ = true; - wrapped.__orig__ = func; - return wrapped; + return data; }, - /* - * Uninstalls the global error handler. - * - * @return {Raven} - */ - uninstall: function uninstall() { - tracekit.report.uninstall(); + /** + * Truncate breadcrumb values (right now just URLs) + */ + _trimBreadcrumbs: function(breadcrumbs) { + // known breadcrumb properties with urls + // TODO: also consider arbitrary prop values that start with (https?)?:// + var urlProps = ['to', 'from', 'url'], + urlProp, + crumb, + data; - this._unpatchFunctionToString(); + for (var i = 0; i < breadcrumbs.values.length; ++i) { + crumb = breadcrumbs.values[i]; + if ( + !crumb.hasOwnProperty('data') || + !isObject(crumb.data) || + objectFrozen(crumb.data) + ) + continue; - this._restoreBuiltIns(); + data = objectMerge({}, crumb.data); + for (var j = 0; j < urlProps.length; ++j) { + urlProp = urlProps[j]; + if (data.hasOwnProperty(urlProp) && data[urlProp]) { + data[urlProp] = truncate(data[urlProp], this._globalOptions.maxUrlLength); + } + } + breadcrumbs.values[i].data = data; + } + }, - this._restoreConsole(); + _getHttpData: function() { + if (!this._hasNavigator && !this._hasDocument) return; + var httpData = {}; - Error.stackTraceLimit = this._originalErrorStackTraceLimit; - this._isRavenInstalled = false; - return this; - }, + if (this._hasNavigator && _navigator.userAgent) { + httpData.headers = { + 'User-Agent': navigator.userAgent + }; + } - /* - * Manually capture an exception and send it over to Sentry - * - * @param {error} ex An exception to be logged - * @param {object} options A specific set of options for this error [optional] - * @return {Raven} - */ - captureException: function captureException(ex, options) { - options = objectMerge({ - trimHeadFrames: 0 - }, options ? options : {}); // Cases for sending ex as a message, rather than an exception + // Check in `window` instead of `document`, as we may be in ServiceWorker environment + if (_window.location && _window.location.href) { + httpData.url = _window.location.href; + } - var isNotError = !isError(ex); - var isNotErrorEvent = !isErrorEvent(ex); - var isErrorEventWithoutError = isErrorEvent(ex) && !ex.error; + if (this._hasDocument && _document.referrer) { + if (!httpData.headers) httpData.headers = {}; + httpData.headers.Referer = _document.referrer; + } - if (isNotError && isNotErrorEvent || isErrorEventWithoutError) { - return this.captureMessage(ex, objectMerge(options, { - stacktrace: true, - // if we fall back to captureMessage, default to attempting a new trace - trimHeadFrames: options.trimHeadFrames + 1 - })); - } // Get actual Error from ErrorEvent + return httpData; + }, + _resetBackoff: function() { + this._backoffDuration = 0; + this._backoffStart = null; + }, - if (isErrorEvent(ex)) ex = ex.error; // Store the raw exception object for potential debugging and introspection + _shouldBackoff: function() { + return this._backoffDuration && now() - this._backoffStart < this._backoffDuration; + }, - this._lastCapturedException = ex; // TraceKit.report will re-raise any exception passed to it, - // which means you have to wrap it in try/catch. Instead, we - // can wrap it here and only re-raise if TraceKit.report - // raises an exception different from the one we asked to - // report on. + /** + * Returns true if the in-process data payload matches the signature + * of the previously-sent data + * + * NOTE: This has to be done at this level because TraceKit can generate + * data from window.onerror WITHOUT an exception object (IE8, IE9, + * other old browsers). This can take the form of an "exception" + * data object with a single frame (derived from the onerror args). + */ + _isRepeatData: function(current) { + var last = this._lastData; - try { - var stack = tracekit.computeStackTrace(ex); + if ( + !last || + current.message !== last.message || // defined for captureMessage + current.culprit !== last.culprit // defined for captureException/onerror + ) + return false; - this._handleStackInfo(stack, options); - } catch (ex1) { - if (ex !== ex1) { - throw ex1; - } + // Stacktrace interface (i.e. from captureMessage) + if (current.stacktrace || last.stacktrace) { + return isSameStacktrace(current.stacktrace, last.stacktrace); + } else if (current.exception || last.exception) { + // Exception interface (i.e. from captureException/onerror) + return isSameException(current.exception, last.exception); } - return this; + return true; }, - /* - * Manually send a message to Sentry - * - * @param {string} msg A plain message to be captured in Sentry - * @param {object} options A specific set of options for this message [optional] - * @return {Raven} - */ - captureMessage: function captureMessage(msg, options) { - // config() automagically converts ignoreErrors from a list to a RegExp so we need to test for an - // early call; we'll error on the side of logging anything called before configuration since it's - // probably something you should see: - if (!!this._globalOptions.ignoreErrors.test && this._globalOptions.ignoreErrors.test(msg)) { + _setBackoffState: function(request) { + // If we are already in a backoff state, don't change anything + if (this._shouldBackoff()) { return; } - options = options || {}; - var data = objectMerge({ - message: msg + '' // Make sure it's actually a string - - }, options); - var ex; // Generate a "synthetic" stack trace from this point. - // NOTE: If you are a Sentry user, and you are seeing this stack frame, it is NOT indicative - // of a bug with Raven.js. Sentry generates synthetic traces either by configuration, - // or if it catches a thrown object without a "stack" property. + var status = request.status; - try { - throw new Error(msg); - } catch (ex1) { - ex = ex1; - } // null exception name so `Error` isn't prefixed to msg - - - ex.name = null; - var stack = tracekit.computeStackTrace(ex); // stack[0] is `throw new Error(msg)` call itself, we are interested in the frame that was just before that, stack[1] + // 400 - project_id doesn't exist or some other fatal + // 401 - invalid/revoked dsn + // 429 - too many requests + if (!(status === 400 || status === 401 || status === 429)) return; - var initialCall = isArray(stack.stack) && stack.stack[1]; - var fileurl = initialCall && initialCall.url || ''; + var retry; + try { + // If Retry-After is not in Access-Control-Expose-Headers, most + // browsers will throw an exception trying to access it + if (supportsFetch()) { + retry = request.headers.get('Retry-After'); + } else { + retry = request.getResponseHeader('Retry-After'); + } - if (!!this._globalOptions.ignoreUrls.test && this._globalOptions.ignoreUrls.test(fileurl)) { - return; + // Retry-After is returned in seconds + retry = parseInt(retry, 10) * 1000; + } catch (e) { + /* eslint no-empty:0 */ } - if (!!this._globalOptions.whitelistUrls.test && !this._globalOptions.whitelistUrls.test(fileurl)) { - return; - } + this._backoffDuration = retry + ? // If Sentry server returned a Retry-After value, use it + retry + : // Otherwise, double the last backoff duration (starts at 1 sec) + this._backoffDuration * 2 || 1000; - if (this._globalOptions.stacktrace || options && options.stacktrace) { - options = objectMerge({ - // fingerprint on msg, not stack trace (legacy behavior, could be - // revisited) - fingerprint: msg, - // since we know this is a synthetic trace, the top N-most frames - // MUST be from Raven.js, so mark them as in_app later by setting - // trimHeadFrames - trimHeadFrames: (options.trimHeadFrames || 0) + 1 - }, options); + this._backoffStart = now(); + }, - var frames = this._prepareFrames(stack, options); + _send: function(data) { + var globalOptions = this._globalOptions; - data.stacktrace = { - // Sentry expects frames oldest to newest - frames: frames.reverse() - }; - } // Fire away! + var baseData = { + project: this._globalProject, + logger: globalOptions.logger, + platform: 'javascript' + }, + httpData = this._getHttpData(); + if (httpData) { + baseData.request = httpData; + } - this._send(data); + // HACK: delete `trimHeadFrames` to prevent from appearing in outbound payload + if (data.trimHeadFrames) delete data.trimHeadFrames; - return this; - }, - captureBreadcrumb: function captureBreadcrumb(obj) { - var crumb = objectMerge({ - timestamp: now() / 1000 - }, obj); + data = objectMerge(baseData, data); - if (isFunction(this._globalOptions.breadcrumbCallback)) { - var result = this._globalOptions.breadcrumbCallback(crumb); + // Merge in the tags and extra separately since objectMerge doesn't handle a deep merge + data.tags = objectMerge(objectMerge({}, this._globalContext.tags), data.tags); + data.extra = objectMerge(objectMerge({}, this._globalContext.extra), data.extra); - if (isObject(result) && !isEmptyObject(result)) { - crumb = result; - } else if (result === false) { - return this; - } - } + // Send along our own collected metadata with extra + data.extra['session:duration'] = now() - this._startTime; - this._breadcrumbs.push(crumb); + if (this._breadcrumbs && this._breadcrumbs.length > 0) { + // intentionally make shallow copy so that additions + // to breadcrumbs aren't accidentally sent in this request + data.breadcrumbs = { + values: [].slice.call(this._breadcrumbs, 0) + }; + } - if (this._breadcrumbs.length > this._globalOptions.maxBreadcrumbs) { - this._breadcrumbs.shift(); + if (this._globalContext.user) { + // sentry.interfaces.User + data.user = this._globalContext.user; } - return this; - }, - addPlugin: function addPlugin(plugin - /*arg1, arg2, ... argN*/ - ) { - var pluginArgs = [].slice.call(arguments, 1); + // Include the environment if it's defined in globalOptions + if (globalOptions.environment) data.environment = globalOptions.environment; - this._plugins.push([plugin, pluginArgs]); + // Include the release if it's defined in globalOptions + if (globalOptions.release) data.release = globalOptions.release; - if (this._isRavenInstalled) { - this._drainPlugins(); - } + // Include server_name if it's defined in globalOptions + if (globalOptions.serverName) data.server_name = globalOptions.serverName; - return this; - }, + data = this._sanitizeData(data); - /* - * Set/clear a user to be sent along with the payload. - * - * @param {object} user An object representing user data [optional] - * @return {Raven} - */ - setUserContext: function setUserContext(user) { - // Intentionally do not merge here since that's an unexpected behavior. - this._globalContext.user = user; - return this; - }, + // Cleanup empty properties before sending them to the server + Object.keys(data).forEach(function(key) { + if (data[key] == null || data[key] === '' || isEmptyObject(data[key])) { + delete data[key]; + } + }); - /* - * Merge extra attributes to be sent along with the payload. - * - * @param {object} extra An object representing extra data [optional] - * @return {Raven} - */ - setExtraContext: function setExtraContext(extra) { - this._mergeContext('extra', extra); + if (isFunction(globalOptions.dataCallback)) { + data = globalOptions.dataCallback(data) || data; + } - return this; - }, + // Why?????????? + if (!data || isEmptyObject(data)) { + return; + } - /* - * Merge tags to be sent along with the payload. - * - * @param {object} tags An object representing tags [optional] - * @return {Raven} - */ - setTagsContext: function setTagsContext(tags) { - this._mergeContext('tags', tags); + // Check if the request should be filtered or not + if ( + isFunction(globalOptions.shouldSendCallback) && + !globalOptions.shouldSendCallback(data) + ) { + return; + } - return this; - }, + // Backoff state: Sentry server previously responded w/ an error (e.g. 429 - too many requests), + // so drop requests until "cool-off" period has elapsed. + if (this._shouldBackoff()) { + this._logDebug('warn', 'Raven dropped error due to backoff: ', data); + return; + } - /* - * Clear all of the context. - * - * @return {Raven} - */ - clearContext: function clearContext() { - this._globalContext = {}; - return this; + if (typeof globalOptions.sampleRate === 'number') { + if (Math.random() < globalOptions.sampleRate) { + this._sendProcessedPayload(data); + } + } else { + this._sendProcessedPayload(data); + } }, - /* - * Get a copy of the current context. This cannot be mutated. - * - * @return {object} copy of context - */ - getContext: function getContext() { - // lol javascript - return JSON.parse(stringify_1(this._globalContext)); + _sanitizeData: function(data) { + return sanitize(data, this._globalOptions.sanitizeKeys); }, - /* - * Set environment of application - * - * @param {string} environment Typically something like 'production'. - * @return {Raven} - */ - setEnvironment: function setEnvironment(environment) { - this._globalOptions.environment = environment; - return this; + _getUuid: function() { + return uuid4(); }, - /* - * Set release version of application - * - * @param {string} release Typically something like a git SHA to identify version - * @return {Raven} - */ - setRelease: function setRelease(release) { - this._globalOptions.release = release; - return this; - }, + _sendProcessedPayload: function(data, callback) { + var self = this; + var globalOptions = this._globalOptions; - /* - * Set the dataCallback option - * - * @param {function} callback The callback to run which allows the - * data blob to be mutated before sending - * @return {Raven} - */ - setDataCallback: function setDataCallback(callback) { - var original = this._globalOptions.dataCallback; - this._globalOptions.dataCallback = keepOriginalCallback(original, callback); - return this; - }, + if (!this.isSetup()) return; - /* - * Set the breadcrumbCallback option - * - * @param {function} callback The callback to run which allows filtering - * or mutating breadcrumbs - * @return {Raven} - */ - setBreadcrumbCallback: function setBreadcrumbCallback(callback) { - var original = this._globalOptions.breadcrumbCallback; - this._globalOptions.breadcrumbCallback = keepOriginalCallback(original, callback); - return this; - }, + // Try and clean up the packet before sending by truncating long values + data = this._trimPacket(data); - /* - * Set the shouldSendCallback option - * - * @param {function} callback The callback to run which allows - * introspecting the blob before sending - * @return {Raven} - */ - setShouldSendCallback: function setShouldSendCallback(callback) { - var original = this._globalOptions.shouldSendCallback; - this._globalOptions.shouldSendCallback = keepOriginalCallback(original, callback); - return this; - }, + // ideally duplicate error testing should occur *before* dataCallback/shouldSendCallback, + // but this would require copying an un-truncated copy of the data packet, which can be + // arbitrarily deep (extra_data) -- could be worthwhile? will revisit + if (!this._globalOptions.allowDuplicates && this._isRepeatData(data)) { + this._logDebug('warn', 'Raven dropped repeat event: ', data); + return; + } - /** - * Override the default HTTP transport mechanism that transmits data - * to the Sentry server. - * - * @param {function} transport Function invoked instead of the default - * `makeRequest` handler. - * - * @return {Raven} - */ - setTransport: function setTransport(transport) { - this._globalOptions.transport = transport; - return this; - }, + // Send along an event_id if not explicitly passed. + // This event_id can be used to reference the error within Sentry itself. + // Set lastEventId after we know the error should actually be sent + this._lastEventId = data.event_id || (data.event_id = this._getUuid()); - /* - * Get the latest raw exception that was captured by Raven. - * - * @return {error} - */ - lastException: function lastException() { - return this._lastCapturedException; - }, + // Store outbound payload after trim + this._lastData = data; - /* - * Get the last event id - * - * @return {string} - */ - lastEventId: function lastEventId() { - return this._lastEventId; - }, + this._logDebug('debug', 'Raven about to send:', data); - /* - * Determine if Raven is setup and ready to go. - * - * @return {boolean} - */ - isSetup: function isSetup() { - if (!this._hasJSON) return false; // needs JSON support + var auth = { + sentry_version: '7', + sentry_client: 'raven-js/' + this.VERSION, + sentry_key: this._globalKey + }; - if (!this._globalServer) { - if (!this.ravenNotConfiguredError) { - this.ravenNotConfiguredError = true; + if (this._globalSecret) { + auth.sentry_secret = this._globalSecret; + } - this._logDebug('error', 'Error: Raven has not been configured.'); - } + var exception = data.exception && data.exception.values[0]; - return false; + // only capture 'sentry' breadcrumb is autoBreadcrumbs is truthy + if ( + this._globalOptions.autoBreadcrumbs && + this._globalOptions.autoBreadcrumbs.sentry + ) { + this.captureBreadcrumb({ + category: 'sentry', + message: exception + ? (exception.type ? exception.type + ': ' : '') + exception.value + : data.message, + event_id: data.event_id, + level: data.level || 'error' // presume error unless specified + }); } - return true; - }, - afterLoad: function afterLoad() { - // TODO: remove window dependence? - // Attempt to initialize Raven on load - var RavenConfig = _window$1.RavenConfig; + var url = this._globalEndpoint; + (globalOptions.transport || this._makeRequest).call(this, { + url: url, + auth: auth, + data: data, + options: globalOptions, + onSuccess: function success() { + self._resetBackoff(); - if (RavenConfig) { - this.config(RavenConfig.dsn, RavenConfig.config).install(); - } + self._triggerEvent('success', { + data: data, + src: url + }); + callback && callback(); + }, + onError: function failure(error) { + self._logDebug('error', 'Raven transport failed to send: ', error); + + if (error.request) { + self._setBackoffState(error.request); + } + + self._triggerEvent('failure', { + data: data, + src: url + }); + error = error || new Error('Raven send failed (no additional details provided)'); + callback && callback(error); + } + }); }, - showReportDialog: function showReportDialog(options) { - if (!_document // doesn't work without a document (React native) - ) return; - options = options || {}; - var lastEventId = options.eventId || this.lastEventId(); - if (!lastEventId) { - throw new configError('Missing eventId'); - } + _makeRequest: function(opts) { + // Auth is intentionally sent as part of query string (NOT as custom HTTP header) to avoid preflight CORS requests + var url = opts.url + '?' + urlencode(opts.auth); - var dsn = options.dsn || this._dsn; + var evaluatedHeaders = null; + var evaluatedFetchParameters = {}; - if (!dsn) { - throw new configError('Missing DSN'); + if (opts.options.headers) { + evaluatedHeaders = this._evaluateHash(opts.options.headers); } - var encode = encodeURIComponent; - var qs = ''; - qs += '?eventId=' + encode(lastEventId); - qs += '&dsn=' + encode(dsn); - var user = options.user || this._globalContext.user; - - if (user) { - if (user.name) qs += '&name=' + encode(user.name); - if (user.email) qs += '&email=' + encode(user.email); + if (opts.options.fetchParameters) { + evaluatedFetchParameters = this._evaluateHash(opts.options.fetchParameters); } - var globalServer = this._getGlobalServer(this._parseDSN(dsn)); + if (supportsFetch()) { + evaluatedFetchParameters.body = stringify(opts.data); - var script = _document.createElement('script'); + var defaultFetchOptions = objectMerge({}, this._fetchDefaults); + var fetchOptions = objectMerge(defaultFetchOptions, evaluatedFetchParameters); - script.async = true; - script.src = globalServer + '/api/embed/error-page/' + qs; + if (evaluatedHeaders) { + fetchOptions.headers = evaluatedHeaders; + } - (_document.head || _document.body).appendChild(script); - }, + return _window + .fetch(url, fetchOptions) + .then(function(response) { + if (response.ok) { + opts.onSuccess && opts.onSuccess(); + } else { + var error = new Error('Sentry error code: ' + response.status); + // It's called request only to keep compatibility with XHR interface + // and not add more redundant checks in setBackoffState method + error.request = response; + opts.onError && opts.onError(error); + } + }) + ['catch'](function() { + opts.onError && + opts.onError(new Error('Sentry error code: network unavailable')); + }); + } - /**** Private functions ****/ - _ignoreNextOnError: function _ignoreNextOnError() { - var self = this; - this._ignoreOnError += 1; - setTimeout(function () { - // onerror should trigger before setTimeout - self._ignoreOnError -= 1; - }); - }, - _triggerEvent: function _triggerEvent(eventType, options) { - // NOTE: `event` is a native browser thing, so let's avoid conflicting wiht it - var evt, key; - if (!this._hasDocument) return; - options = options || {}; - eventType = 'raven' + eventType.substr(0, 1).toUpperCase() + eventType.substr(1); + var request = _window.XMLHttpRequest && new _window.XMLHttpRequest(); + if (!request) return; - if (_document.createEvent) { - evt = _document.createEvent('HTMLEvents'); - evt.initEvent(eventType, true, true); - } else { - evt = _document.createEventObject(); - evt.eventType = eventType; - } + // if browser doesn't support CORS (e.g. IE7), we are out of luck + var hasCORS = 'withCredentials' in request || typeof XDomainRequest !== 'undefined'; - for (key in options) { - if (hasKey(options, key)) { - evt[key] = options[key]; - } - } + if (!hasCORS) return; - if (_document.createEvent) { - // IE9 if standards - _document.dispatchEvent(evt); + if ('withCredentials' in request) { + request.onreadystatechange = function() { + if (request.readyState !== 4) { + return; + } else if (request.status === 200) { + opts.onSuccess && opts.onSuccess(); + } else if (opts.onError) { + var err = new Error('Sentry error code: ' + request.status); + err.request = request; + opts.onError(err); + } + }; } else { - // IE8 regardless of Quirks or Standards - // IE9 if quirks - try { - _document.fireEvent('on' + evt.eventType.toLowerCase(), evt); - } catch (e) {// Do nothing + request = new XDomainRequest(); + // xdomainrequest cannot go http -> https (or vice versa), + // so always use protocol relative + url = url.replace(/^https?:/, ''); + + // onreadystatechange not supported by XDomainRequest + if (opts.onSuccess) { + request.onload = opts.onSuccess; + } + if (opts.onError) { + request.onerror = function() { + var err = new Error('Sentry error code: XDomainRequest'); + err.request = request; + opts.onError(err); + }; } } - }, - /** - * Wraps addEventListener to capture UI breadcrumbs - * @param evtName the event name (e.g. "click") - * @returns {Function} - * @private - */ - _breadcrumbEventHandler: function _breadcrumbEventHandler(evtName) { - var self = this; - return function (evt) { - // reset keypress timeout; e.g. triggering a 'click' after - // a 'keypress' will reset the keypress debounce so that a new - // set of keypresses can be recorded - self._keypressTimeout = null; // It's possible this handler might trigger multiple times for the same - // event (e.g. event propagation through node ancestors). Ignore if we've - // already captured the event. + request.open('POST', url); - if (self._lastCapturedEvent === evt) return; - self._lastCapturedEvent = evt; // try/catch both: - // - accessing evt.target (see getsentry/raven-js#838, #768) - // - `htmlTreeAsString` because it's complex, and just accessing the DOM incorrectly - // can throw an exception in some circumstances. + if (evaluatedHeaders) { + each(evaluatedHeaders, function(key, value) { + request.setRequestHeader(key, value); + }); + } - var target; + request.send(stringify(opts.data)); + }, - try { - target = htmlTreeAsString(evt.target); - } catch (e) { - target = ''; + _evaluateHash: function(hash) { + var evaluated = {}; + + for (var key in hash) { + if (hash.hasOwnProperty(key)) { + var value = hash[key]; + evaluated[key] = typeof value === 'function' ? value() : value; } + } - self.captureBreadcrumb({ - category: 'ui.' + evtName, - // e.g. ui.click, ui.input - message: target - }); - }; + return evaluated; }, - /** - * Wraps addEventListener to capture keypress UI events - * @returns {Function} - * @private - */ - _keypressEventHandler: function _keypressEventHandler() { - var self = this, - debounceDuration = 1000; // milliseconds - // TODO: if somehow user switches keypress target before - // debounce timeout is triggered, we will only capture - // a single breadcrumb from the FIRST target (acceptable?) - - return function (evt) { - var target; - - try { - target = evt.target; - } catch (e) { - // just accessing event properties can throw an exception in some rare circumstances - // see: https://github.com/getsentry/raven-js/issues/838 - return; - } + _logDebug: function(level) { + // We allow `Raven.debug` and `Raven.config(DSN, { debug: true })` to not make backward incompatible API change + if ( + this._originalConsoleMethods[level] && + (this.debug || this._globalOptions.debug) + ) { + // In IE<10 console methods do not have their own 'apply' method + Function.prototype.apply.call( + this._originalConsoleMethods[level], + this._originalConsole, + [].slice.call(arguments, 1) + ); + } + }, - var tagName = target && target.tagName; // only consider keypress events on actual input elements - // this will disregard keypresses targeting body (e.g. tabbing - // through elements, hotkeys, etc) + _mergeContext: function(key, context) { + if (isUndefined(context)) { + delete this._globalContext[key]; + } else { + this._globalContext[key] = objectMerge(this._globalContext[key] || {}, context); + } + } +}; - if (!tagName || tagName !== 'INPUT' && tagName !== 'TEXTAREA' && !target.isContentEditable) return; // record first keypress in a series, but ignore subsequent - // keypresses until debounce clears +// Deprecations +Raven.prototype.setUser = Raven.prototype.setUserContext; +Raven.prototype.setReleaseContext = Raven.prototype.setRelease; - var timeout = self._keypressTimeout; +module.exports = Raven; - if (!timeout) { - self._breadcrumbEventHandler('input')(evt); - } +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"10":10,"3":3,"4":4,"7":7,"8":8,"9":9}],6:[function(_dereq_,module,exports){ +(function (global){ +/** + * Enforces a single instance of the Raven client, and the + * main entry point for Raven. If you are a consumer of the + * Raven library, you SHOULD load this file (vs raven.js). + **/ - clearTimeout(timeout); - self._keypressTimeout = setTimeout(function () { - self._keypressTimeout = null; - }, debounceDuration); - }; - }, +var RavenConstructor = _dereq_(5); - /** - * Captures a breadcrumb of type "navigation", normalizing input URLs - * @param to the originating URL - * @param from the target URL - * @private - */ - _captureUrlChange: function _captureUrlChange(from, to) { - var parsedLoc = parseUrl(this._location.href); - var parsedTo = parseUrl(to); - var parsedFrom = parseUrl(from); // because onpopstate only tells you the "new" (to) value of location.href, and - // not the previous (from) value, we need to track the value of the current URL - // state ourselves +// This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) +var _window = + typeof window !== 'undefined' + ? window + : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; +var _Raven = _window.Raven; - this._lastHref = to; // Use only the path component of the URL if the URL matches the current - // document (almost all the time when using pushState) +var Raven = new RavenConstructor(); - if (parsedLoc.protocol === parsedTo.protocol && parsedLoc.host === parsedTo.host) to = parsedTo.relative; - if (parsedLoc.protocol === parsedFrom.protocol && parsedLoc.host === parsedFrom.host) from = parsedFrom.relative; - this.captureBreadcrumb({ - category: 'navigation', - data: { - to: to, - from: from - } - }); - }, - _patchFunctionToString: function _patchFunctionToString() { - var self = this; - self._originalFunctionToString = Function.prototype.toString; // eslint-disable-next-line no-extend-native +/* + * Allow multiple versions of Raven to be installed. + * Strip Raven from the global context and returns the instance. + * + * @return {Raven} + */ +Raven.noConflict = function() { + _window.Raven = _Raven; + return Raven; +}; - Function.prototype.toString = function () { - if (typeof this === 'function' && this.__raven__) { - return self._originalFunctionToString.apply(this.__orig__, arguments); - } +Raven.afterLoad(); - return self._originalFunctionToString.apply(this, arguments); - }; - }, - _unpatchFunctionToString: function _unpatchFunctionToString() { - if (this._originalFunctionToString) { - // eslint-disable-next-line no-extend-native - Function.prototype.toString = this._originalFunctionToString; - } - }, +module.exports = Raven; - /** - * Wrap timer functions and event targets to catch errors and provide - * better metadata. - */ - _instrumentTryCatch: function _instrumentTryCatch() { - var self = this; - var wrappedBuiltIns = self._wrappedBuiltIns; +/** + * DISCLAIMER: + * + * Expose `Client` constructor for cases where user want to track multiple "sub-applications" in one larger app. + * It's not meant to be used by a wide audience, so pleaaase make sure that you know what you're doing before using it. + * Accidentally calling `install` multiple times, may result in an unexpected behavior that's very hard to debug. + * + * It's called `Client' to be in-line with Raven Node implementation. + * + * HOWTO: + * + * import Raven from 'raven-js'; + * + * const someAppReporter = new Raven.Client(); + * const someOtherAppReporter = new Raven.Client(); + * + * someAppReporter.config('__DSN__', { + * ...config goes here + * }); + * + * someOtherAppReporter.config('__OTHER_DSN__', { + * ...config goes here + * }); + * + * someAppReporter.captureMessage(...); + * someAppReporter.captureException(...); + * someAppReporter.captureBreadcrumb(...); + * + * someOtherAppReporter.captureMessage(...); + * someOtherAppReporter.captureException(...); + * someOtherAppReporter.captureBreadcrumb(...); + * + * It should "just work". + */ +module.exports.Client = RavenConstructor; - function wrapTimeFn(orig) { - return function (fn, t) { - // preserve arity - // Make a copy of the arguments to prevent deoptimization - // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments - var args = new Array(arguments.length); +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"5":5}],7:[function(_dereq_,module,exports){ +(function (global){ +var stringify = _dereq_(9); - for (var i = 0; i < args.length; ++i) { - args[i] = arguments[i]; - } +var _window = + typeof window !== 'undefined' + ? window + : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; - var originalCallback = args[0]; +function isObject(what) { + return typeof what === 'object' && what !== null; +} - if (isFunction(originalCallback)) { - args[0] = self.wrap(originalCallback); - } // IE < 9 doesn't support .call/.apply on setInterval/setTimeout, but it - // also supports only two arguments and doesn't care what this is, so we - // can just call the original function directly. +// Yanked from https://git.io/vS8DV re-used under CC0 +// with some tiny modifications +function isError(value) { + switch ({}.toString.call(value)) { + case '[object Error]': + return true; + case '[object Exception]': + return true; + case '[object DOMException]': + return true; + default: + return value instanceof Error; + } +} +function isErrorEvent(value) { + return supportsErrorEvent() && {}.toString.call(value) === '[object ErrorEvent]'; +} - if (orig.apply) { - return orig.apply(this, args); - } else { - return orig(args[0], args[1]); - } - }; - } +function isUndefined(what) { + return what === void 0; +} - var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; +function isFunction(what) { + return typeof what === 'function'; +} - function wrapEventTarget(global) { - var proto = _window$1[global] && _window$1[global].prototype; +function isPlainObject(what) { + return Object.prototype.toString.call(what) === '[object Object]'; +} - if (proto && proto.hasOwnProperty && proto.hasOwnProperty('addEventListener')) { - fill(proto, 'addEventListener', function (orig) { - return function (evtName, fn, capture, secure) { - // preserve arity - try { - if (fn && fn.handleEvent) { - fn.handleEvent = self.wrap(fn.handleEvent); - } - } catch (err) {} // can sometimes get 'Permission denied to access property "handle Event' - // More breadcrumb DOM capture ... done here and not in `_instrumentBreadcrumbs` - // so that we don't have more than one wrapper function +function isString(what) { + return Object.prototype.toString.call(what) === '[object String]'; +} +function isArray(what) { + return Object.prototype.toString.call(what) === '[object Array]'; +} - var before, clickHandler, keypressHandler; +function isEmptyObject(what) { + if (!isPlainObject(what)) return false; - if (autoBreadcrumbs && autoBreadcrumbs.dom && (global === 'EventTarget' || global === 'Node')) { - // NOTE: generating multiple handlers per addEventListener invocation, should - // revisit and verify we can just use one (almost certainly) - clickHandler = self._breadcrumbEventHandler('click'); - keypressHandler = self._keypressEventHandler(); + for (var _ in what) { + if (what.hasOwnProperty(_)) { + return false; + } + } + return true; +} - before = function before(evt) { - // need to intercept every DOM event in `before` argument, in case that - // same wrapped method is re-used for different events (e.g. mousemove THEN click) - // see #724 - if (!evt) return; - var eventType; +function supportsErrorEvent() { + try { + new ErrorEvent(''); // eslint-disable-line no-new + return true; + } catch (e) { + return false; + } +} - try { - eventType = evt.type; - } catch (e) { - // just accessing event properties can throw an exception in some rare circumstances - // see: https://github.com/getsentry/raven-js/issues/838 - return; - } +function supportsFetch() { + if (!('fetch' in _window)) return false; - if (eventType === 'click') return clickHandler(evt);else if (eventType === 'keypress') return keypressHandler(evt); - }; - } + try { + new Headers(); // eslint-disable-line no-new + new Request(''); // eslint-disable-line no-new + new Response(); // eslint-disable-line no-new + return true; + } catch (e) { + return false; + } +} - return orig.call(this, evtName, self.wrap(fn, undefined, before), capture, secure); - }; - }, wrappedBuiltIns); - fill(proto, 'removeEventListener', function (orig) { - return function (evt, fn, capture, secure) { - try { - fn = fn && (fn.__raven_wrapper__ ? fn.__raven_wrapper__ : fn); - } catch (e) {// ignore, accessing __raven_wrapper__ will throw in some Selenium environments - } +// Despite all stars in the sky saying that Edge supports old draft syntax, aka 'never', 'always', 'origin' and 'default +// https://caniuse.com/#feat=referrer-policy +// It doesn't. And it throw exception instead of ignoring this parameter... +// REF: https://github.com/getsentry/raven-js/issues/1233 +function supportsReferrerPolicy() { + if (!supportsFetch()) return false; - return orig.call(this, evt, fn, capture, secure); - }; - }, wrappedBuiltIns); - } - } + try { + // eslint-disable-next-line no-new + new Request('pickleRick', { + referrerPolicy: 'origin' + }); + return true; + } catch (e) { + return false; + } +} - fill(_window$1, 'setTimeout', wrapTimeFn, wrappedBuiltIns); - fill(_window$1, 'setInterval', wrapTimeFn, wrappedBuiltIns); +function supportsPromiseRejectionEvent() { + return typeof PromiseRejectionEvent === 'function'; +} - if (_window$1.requestAnimationFrame) { - fill(_window$1, 'requestAnimationFrame', function (orig) { - return function (cb) { - return orig(self.wrap(cb)); - }; - }, wrappedBuiltIns); - } // event targets borrowed from bugsnag-js: - // https://github.com/bugsnag/bugsnag-js/blob/master/src/bugsnag.js#L666 +function wrappedCallback(callback) { + function dataCallback(data, original) { + var normalizedData = callback(data) || data; + if (original) { + return original(normalizedData) || normalizedData; + } + return normalizedData; + } + return dataCallback; +} - var eventTargets = ['EventTarget', 'Window', 'Node', 'ApplicationCache', 'AudioTrackList', 'ChannelMergerNode', 'CryptoOperation', 'EventSource', 'FileReader', 'HTMLUnknownElement', 'IDBDatabase', 'IDBRequest', 'IDBTransaction', 'KeyOperation', 'MediaController', 'MessagePort', 'ModalWindow', 'Notification', 'SVGElementInstance', 'Screen', 'TextTrack', 'TextTrackCue', 'TextTrackList', 'WebSocket', 'WebSocketWorker', 'Worker', 'XMLHttpRequest', 'XMLHttpRequestEventTarget', 'XMLHttpRequestUpload']; +function each(obj, callback) { + var i, j; - for (var i = 0; i < eventTargets.length; i++) { - wrapEventTarget(eventTargets[i]); + if (isUndefined(obj.length)) { + for (i in obj) { + if (hasKey(obj, i)) { + callback.call(null, i, obj[i]); + } } - }, - - /** - * Instrument browser built-ins w/ breadcrumb capturing - * - XMLHttpRequests - * - DOM interactions (click/typing) - * - window.location changes - * - console - * - * Can be disabled or individually configured via the `autoBreadcrumbs` config option - */ - _instrumentBreadcrumbs: function _instrumentBreadcrumbs() { - var self = this; - var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; - var wrappedBuiltIns = self._wrappedBuiltIns; - - function wrapProp(prop, xhr) { - if (prop in xhr && isFunction(xhr[prop])) { - fill(xhr, prop, function (orig) { - return self.wrap(orig); - }); // intentionally don't track filled methods on XHR instances + } else { + j = obj.length; + if (j) { + for (i = 0; i < j; i++) { + callback.call(null, i, obj[i]); } } + } +} - if (autoBreadcrumbs.xhr && 'XMLHttpRequest' in _window$1) { - var xhrproto = XMLHttpRequest.prototype; - fill(xhrproto, 'open', function (origOpen) { - return function (method, url) { - // preserve arity - // if Sentry key appears in URL, don't capture - if (isString(url) && url.indexOf(self._globalKey) === -1) { - this.__raven_xhr = { - method: method, - url: url, - status_code: null - }; - } - - return origOpen.apply(this, arguments); - }; - }, wrappedBuiltIns); - fill(xhrproto, 'send', function (origSend) { - return function () { - // preserve arity - var xhr = this; - - function onreadystatechangeHandler() { - if (xhr.__raven_xhr && xhr.readyState === 4) { - try { - // touching statusCode in some platforms throws - // an exception - xhr.__raven_xhr.status_code = xhr.status; - } catch (e) { - /* do nothing */ - } +function objectMerge(obj1, obj2) { + if (!obj2) { + return obj1; + } + each(obj2, function(key, value) { + obj1[key] = value; + }); + return obj1; +} - self.captureBreadcrumb({ - type: 'http', - category: 'xhr', - data: xhr.__raven_xhr - }); - } - } +/** + * This function is only used for react-native. + * react-native freezes object that have already been sent over the + * js bridge. We need this function in order to check if the object is frozen. + * So it's ok that objectFrozen returns false if Object.isFrozen is not + * supported because it's not relevant for other "platforms". See related issue: + * https://github.com/getsentry/react-native-sentry/issues/57 + */ +function objectFrozen(obj) { + if (!Object.isFrozen) { + return false; + } + return Object.isFrozen(obj); +} - var props = ['onload', 'onerror', 'onprogress']; +function truncate(str, max) { + if (typeof max !== 'number') { + throw new Error('2nd argument to `truncate` function should be a number'); + } + if (typeof str !== 'string' || max === 0) { + return str; + } + return str.length <= max ? str : str.substr(0, max) + '\u2026'; +} - for (var j = 0; j < props.length; j++) { - wrapProp(props[j], xhr); - } +/** + * hasKey, a better form of hasOwnProperty + * Example: hasKey(MainHostObject, property) === true/false + * + * @param {Object} host object to check property + * @param {string} key to check + */ +function hasKey(object, key) { + return Object.prototype.hasOwnProperty.call(object, key); +} - if ('onreadystatechange' in xhr && isFunction(xhr.onreadystatechange)) { - fill(xhr, 'onreadystatechange', function (orig) { - return self.wrap(orig, undefined, onreadystatechangeHandler); - } - /* intentionally don't track this instrumentation */ - ); - } else { - // if onreadystatechange wasn't actually set by the page on this xhr, we - // are free to set our own and capture the breadcrumb - xhr.onreadystatechange = onreadystatechangeHandler; - } +function joinRegExp(patterns) { + // Combine an array of regular expressions and strings into one large regexp + // Be mad. + var sources = [], + i = 0, + len = patterns.length, + pattern; - return origSend.apply(this, arguments); - }; - }, wrappedBuiltIns); + for (; i < len; i++) { + pattern = patterns[i]; + if (isString(pattern)) { + // If it's a string, we need to escape it + // Taken from: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions + sources.push(pattern.replace(/([.*+?^=!:${}()|\[\]\/\\])/g, '\\$1')); + } else if (pattern && pattern.source) { + // If it's a regexp already, we want to extract the source + sources.push(pattern.source); } + // Intentionally skip other cases + } + return new RegExp(sources.join('|'), 'i'); +} - if (autoBreadcrumbs.xhr && supportsFetch()) { - fill(_window$1, 'fetch', function (origFetch) { - return function () { - // preserve arity - // Make a copy of the arguments to prevent deoptimization - // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments - var args = new Array(arguments.length); - - for (var i = 0; i < args.length; ++i) { - args[i] = arguments[i]; - } - - var fetchInput = args[0]; - var method = 'GET'; - var url; +function urlencode(o) { + var pairs = []; + each(o, function(key, value) { + pairs.push(encodeURIComponent(key) + '=' + encodeURIComponent(value)); + }); + return pairs.join('&'); +} - if (typeof fetchInput === 'string') { - url = fetchInput; - } else if ('Request' in _window$1 && fetchInput instanceof _window$1.Request) { - url = fetchInput.url; +// borrowed from https://tools.ietf.org/html/rfc3986#appendix-B +// intentionally using regex and not href parsing trick because React Native and other +// environments where DOM might not be available +function parseUrl(url) { + if (typeof url !== 'string') return {}; + var match = url.match(/^(([^:\/?#]+):)?(\/\/([^\/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?$/); - if (fetchInput.method) { - method = fetchInput.method; - } - } else { - url = '' + fetchInput; - } // if Sentry key appears in URL, don't capture, as it's our own request + // coerce to undefined values to empty string so we don't get 'undefined' + var query = match[6] || ''; + var fragment = match[8] || ''; + return { + protocol: match[2], + host: match[4], + path: match[5], + relative: match[5] + query + fragment // everything minus origin + }; +} +function uuid4() { + var crypto = _window.crypto || _window.msCrypto; + if (!isUndefined(crypto) && crypto.getRandomValues) { + // Use window.crypto API if available + // eslint-disable-next-line no-undef + var arr = new Uint16Array(8); + crypto.getRandomValues(arr); - if (url.indexOf(self._globalKey) !== -1) { - return origFetch.apply(this, args); - } + // set 4 in byte 7 + arr[3] = (arr[3] & 0xfff) | 0x4000; + // set 2 most significant bits of byte 9 to '10' + arr[4] = (arr[4] & 0x3fff) | 0x8000; - if (args[1] && args[1].method) { - method = args[1].method; - } + var pad = function(num) { + var v = num.toString(16); + while (v.length < 4) { + v = '0' + v; + } + return v; + }; - var fetchData = { - method: method, - url: url, - status_code: null - }; - return origFetch.apply(this, args).then(function (response) { - fetchData.status_code = response.status; - self.captureBreadcrumb({ - type: 'http', - category: 'fetch', - data: fetchData - }); - return response; - }); - }; - }, wrappedBuiltIns); - } // Capture breadcrumbs from any click that is unhandled / bubbled up all the way - // to the document. Do this before we instrument addEventListener. + return ( + pad(arr[0]) + + pad(arr[1]) + + pad(arr[2]) + + pad(arr[3]) + + pad(arr[4]) + + pad(arr[5]) + + pad(arr[6]) + + pad(arr[7]) + ); + } else { + // http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/2117523#2117523 + return 'xxxxxxxxxxxx4xxxyxxxxxxxxxxxxxxx'.replace(/[xy]/g, function(c) { + var r = (Math.random() * 16) | 0, + v = c === 'x' ? r : (r & 0x3) | 0x8; + return v.toString(16); + }); + } +} +/** + * Given a child DOM element, returns a query-selector statement describing that + * and its ancestors + * e.g. [HTMLElement] => body > div > input#foo.btn[name=baz] + * @param elem + * @returns {string} + */ +function htmlTreeAsString(elem) { + /* eslint no-extra-parens:0*/ + var MAX_TRAVERSE_HEIGHT = 5, + MAX_OUTPUT_LEN = 80, + out = [], + height = 0, + len = 0, + separator = ' > ', + sepLength = separator.length, + nextStr; - if (autoBreadcrumbs.dom && this._hasDocument) { - if (_document.addEventListener) { - _document.addEventListener('click', self._breadcrumbEventHandler('click'), false); + while (elem && height++ < MAX_TRAVERSE_HEIGHT) { + nextStr = htmlElementAsString(elem); + // bail out if + // - nextStr is the 'html' element + // - the length of the string that would be created exceeds MAX_OUTPUT_LEN + // (ignore this limit if we are on the first iteration) + if ( + nextStr === 'html' || + (height > 1 && len + out.length * sepLength + nextStr.length >= MAX_OUTPUT_LEN) + ) { + break; + } - _document.addEventListener('keypress', self._keypressEventHandler(), false); - } else { - // IE8 Compatibility - _document.attachEvent('onclick', self._breadcrumbEventHandler('click')); + out.push(nextStr); - _document.attachEvent('onkeypress', self._keypressEventHandler()); - } - } // record navigation (URL) changes - // NOTE: in Chrome App environment, touching history.pushState, *even inside - // a try/catch block*, will cause Chrome to output an error to console.error - // borrowed from: https://github.com/angular/angular.js/pull/13945/files + len += nextStr.length; + elem = elem.parentNode; + } + return out.reverse().join(separator); +} - var chrome = _window$1.chrome; - var isChromePackagedApp = chrome && chrome.app && chrome.app.runtime; - var hasPushAndReplaceState = !isChromePackagedApp && _window$1.history && history.pushState && history.replaceState; +/** + * Returns a simple, query-selector representation of a DOM element + * e.g. [HTMLElement] => input#foo.btn[name=baz] + * @param HTMLElement + * @returns {string} + */ +function htmlElementAsString(elem) { + var out = [], + className, + classes, + key, + attr, + i; - if (autoBreadcrumbs.location && hasPushAndReplaceState) { - // TODO: remove onpopstate handler on uninstall() - var oldOnPopState = _window$1.onpopstate; + if (!elem || !elem.tagName) { + return ''; + } - _window$1.onpopstate = function () { - var currentHref = self._location.href; + out.push(elem.tagName.toLowerCase()); + if (elem.id) { + out.push('#' + elem.id); + } - self._captureUrlChange(self._lastHref, currentHref); + className = elem.className; + if (className && isString(className)) { + classes = className.split(/\s+/); + for (i = 0; i < classes.length; i++) { + out.push('.' + classes[i]); + } + } + var attrWhitelist = ['type', 'name', 'title', 'alt']; + for (i = 0; i < attrWhitelist.length; i++) { + key = attrWhitelist[i]; + attr = elem.getAttribute(key); + if (attr) { + out.push('[' + key + '="' + attr + '"]'); + } + } + return out.join(''); +} - if (oldOnPopState) { - return oldOnPopState.apply(this, arguments); - } - }; +/** + * Returns true if either a OR b is truthy, but not both + */ +function isOnlyOneTruthy(a, b) { + return !!(!!a ^ !!b); +} - var historyReplacementFunction = function historyReplacementFunction(origHistFunction) { - // note history.pushState.length is 0; intentionally not declaring - // params to preserve 0 arity - return function () - /* state, title, url */ - { - var url = arguments.length > 2 ? arguments[2] : undefined; // url argument is optional +/** + * Returns true if both parameters are undefined + */ +function isBothUndefined(a, b) { + return isUndefined(a) && isUndefined(b); +} - if (url) { - // coerce to string (this is what pushState does) - self._captureUrlChange(self._lastHref, url + ''); - } +/** + * Returns true if the two input exception interfaces have the same content + */ +function isSameException(ex1, ex2) { + if (isOnlyOneTruthy(ex1, ex2)) return false; - return origHistFunction.apply(this, arguments); - }; - }; + ex1 = ex1.values[0]; + ex2 = ex2.values[0]; - fill(history, 'pushState', historyReplacementFunction, wrappedBuiltIns); - fill(history, 'replaceState', historyReplacementFunction, wrappedBuiltIns); - } + if (ex1.type !== ex2.type || ex1.value !== ex2.value) return false; - if (autoBreadcrumbs.console && 'console' in _window$1 && console.log) { - // console - var consoleMethodCallback = function consoleMethodCallback(msg, data) { - self.captureBreadcrumb({ - message: msg, - level: data.level, - category: 'console' - }); - }; + // in case both stacktraces are undefined, we can't decide so default to false + if (isBothUndefined(ex1.stacktrace, ex2.stacktrace)) return false; - each(['debug', 'info', 'warn', 'error', 'log'], function (_, level) { - wrapConsoleMethod(console, level, consoleMethodCallback); - }); - } - }, - _restoreBuiltIns: function _restoreBuiltIns() { - // restore any wrapped builtins - var builtin; + return isSameStacktrace(ex1.stacktrace, ex2.stacktrace); +} - while (this._wrappedBuiltIns.length) { - builtin = this._wrappedBuiltIns.shift(); - var obj = builtin[0], - name = builtin[1], - orig = builtin[2]; - obj[name] = orig; - } - }, - _restoreConsole: function _restoreConsole() { - // eslint-disable-next-line guard-for-in - for (var method in this._originalConsoleMethods) { - this._originalConsole[method] = this._originalConsoleMethods[method]; - } - }, - _drainPlugins: function _drainPlugins() { - var self = this; // FIX ME TODO +/** + * Returns true if the two input stack trace interfaces have the same content + */ +function isSameStacktrace(stack1, stack2) { + if (isOnlyOneTruthy(stack1, stack2)) return false; - each(this._plugins, function (_, plugin) { - var installer = plugin[0]; - var args = plugin[1]; - installer.apply(self, [self].concat(args)); - }); - }, - _parseDSN: function _parseDSN(str) { - var m = dsnPattern.exec(str), - dsn = {}, - i = 7; + var frames1 = stack1.frames; + var frames2 = stack2.frames; + + // Exit early if frame count differs + if (frames1.length !== frames2.length) return false; + + // Iterate through every frame; bail out if anything differs + var a, b; + for (var i = 0; i < frames1.length; i++) { + a = frames1[i]; + b = frames2[i]; + if ( + a.filename !== b.filename || + a.lineno !== b.lineno || + a.colno !== b.colno || + a['function'] !== b['function'] + ) + return false; + } + return true; +} + +/** + * Polyfill a method + * @param obj object e.g. `document` + * @param name method name present on object e.g. `addEventListener` + * @param replacement replacement function + * @param track {optional} record instrumentation to an array + */ +function fill(obj, name, replacement, track) { + if (obj == null) return; + var orig = obj[name]; + obj[name] = replacement(orig); + obj[name].__raven__ = true; + obj[name].__orig__ = orig; + if (track) { + track.push([obj, name, orig]); + } +} + +/** + * Join values in array + * @param input array of values to be joined together + * @param delimiter string to be placed in-between values + * @returns {string} + */ +function safeJoin(input, delimiter) { + if (!isArray(input)) return ''; + var output = []; + + for (var i = 0; i < input.length; i++) { try { - while (i--) { - dsn[dsnKeys[i]] = m[i] || ''; - } + output.push(String(input[i])); } catch (e) { - throw new configError('Invalid DSN: ' + str); + output.push('[value cannot be serialized]'); } + } - if (dsn.pass && !this._globalOptions.allowSecretKey) { - throw new configError('Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key'); - } + return output.join(delimiter); +} - return dsn; - }, - _getGlobalServer: function _getGlobalServer(uri) { - // assemble the endpoint from the uri pieces - var globalServer = '//' + uri.host + (uri.port ? ':' + uri.port : ''); +// Default Node.js REPL depth +var MAX_SERIALIZE_EXCEPTION_DEPTH = 3; +// 50kB, as 100kB is max payload size, so half sounds reasonable +var MAX_SERIALIZE_EXCEPTION_SIZE = 50 * 1024; +var MAX_SERIALIZE_KEYS_LENGTH = 40; - if (uri.protocol) { - globalServer = uri.protocol + ':' + globalServer; - } +function utf8Length(value) { + return ~-encodeURI(value).split(/%..|./).length; +} - return globalServer; - }, - _handleOnErrorStackInfo: function _handleOnErrorStackInfo() { - // if we are intentionally ignoring errors via onerror, bail out - if (!this._ignoreOnError) { - this._handleStackInfo.apply(this, arguments); - } - }, - _handleStackInfo: function _handleStackInfo(stackInfo, options) { - var frames = this._prepareFrames(stackInfo, options); +function jsonSize(value) { + return utf8Length(JSON.stringify(value)); +} - this._triggerEvent('handle', { - stackInfo: stackInfo, - options: options - }); +function serializeValue(value) { + if (typeof value === 'string') { + var maxLength = 40; + return truncate(value, maxLength); + } else if ( + typeof value === 'number' || + typeof value === 'boolean' || + typeof value === 'undefined' + ) { + return value; + } - this._processException(stackInfo.name, stackInfo.message, stackInfo.url, stackInfo.lineno, frames, options); - }, - _prepareFrames: function _prepareFrames(stackInfo, options) { - var self = this; - var frames = []; + var type = Object.prototype.toString.call(value); - if (stackInfo.stack && stackInfo.stack.length) { - each(stackInfo.stack, function (i, stack) { - var frame = self._normalizeFrame(stack, stackInfo.url); + // Node.js REPL notation + if (type === '[object Object]') return '[Object]'; + if (type === '[object Array]') return '[Array]'; + if (type === '[object Function]') + return value.name ? '[Function: ' + value.name + ']' : '[Function]'; - if (frame) { - frames.push(frame); - } - }); // e.g. frames captured via captureMessage throw + return value; +} - if (options && options.trimHeadFrames) { - for (var j = 0; j < options.trimHeadFrames && j < frames.length; j++) { - frames[j].in_app = false; - } - } - } +function serializeObject(value, depth) { + if (depth === 0) return serializeValue(value); + + if (isPlainObject(value)) { + return Object.keys(value).reduce(function(acc, key) { + acc[key] = serializeObject(value[key], depth - 1); + return acc; + }, {}); + } else if (Array.isArray(value)) { + return value.map(function(val) { + return serializeObject(val, depth - 1); + }); + } - frames = frames.slice(0, this._globalOptions.stackTraceLimit); - return frames; - }, - _normalizeFrame: function _normalizeFrame(frame, stackInfoUrl) { - // normalize the frames data - var normalized = { - filename: frame.url, - lineno: frame.line, - colno: frame.column, - function: frame.func || '?' - }; // Case when we don't have any information about the error - // E.g. throwing a string or raw object, instead of an `Error` in Firefox - // Generating synthetic error doesn't add any value here - // - // We should probably somehow let a user know that they should fix their code + return serializeValue(value); +} - if (!frame.url) { - normalized.filename = stackInfoUrl; // fallback to whole stacks url from onerror handler - } +function serializeException(ex, depth, maxSize) { + if (!isPlainObject(ex)) return ex; - normalized.in_app = !( // determine if an exception came from outside of our app - // first we check the global includePaths list. - !!this._globalOptions.includePaths.test && !this._globalOptions.includePaths.test(normalized.filename) || // Now we check for fun, if the function name is Raven or TraceKit - /(Raven|TraceKit)\./.test(normalized['function']) || // finally, we do a last ditch effort and check for raven.min.js - /raven\.(min\.)?js$/.test(normalized.filename)); - return normalized; - }, - _processException: function _processException(type, message, fileurl, lineno, frames, options) { - var prefixedMessage = (type ? type + ': ' : '') + (message || ''); + depth = typeof depth !== 'number' ? MAX_SERIALIZE_EXCEPTION_DEPTH : depth; + maxSize = typeof depth !== 'number' ? MAX_SERIALIZE_EXCEPTION_SIZE : maxSize; - if (!!this._globalOptions.ignoreErrors.test && (this._globalOptions.ignoreErrors.test(message) || this._globalOptions.ignoreErrors.test(prefixedMessage))) { - return; - } + var serialized = serializeObject(ex, depth); - var stacktrace; + if (jsonSize(stringify(serialized)) > maxSize) { + return serializeException(ex, depth - 1); + } - if (frames && frames.length) { - fileurl = frames[0].filename || fileurl; // Sentry expects frames oldest to newest - // and JS sends them as newest to oldest + return serialized; +} - frames.reverse(); - stacktrace = { - frames: frames - }; - } else if (fileurl) { - stacktrace = { - frames: [{ - filename: fileurl, - lineno: lineno, - in_app: true - }] - }; - } +function serializeKeysForMessage(keys, maxLength) { + if (typeof keys === 'number' || typeof keys === 'string') return keys.toString(); + if (!Array.isArray(keys)) return ''; - if (!!this._globalOptions.ignoreUrls.test && this._globalOptions.ignoreUrls.test(fileurl)) { - return; - } + keys = keys.filter(function(key) { + return typeof key === 'string'; + }); + if (keys.length === 0) return '[object has no keys]'; - if (!!this._globalOptions.whitelistUrls.test && !this._globalOptions.whitelistUrls.test(fileurl)) { - return; - } + maxLength = typeof maxLength !== 'number' ? MAX_SERIALIZE_KEYS_LENGTH : maxLength; + if (keys[0].length >= maxLength) return keys[0]; - var data = objectMerge({ - // sentry.interfaces.Exception - exception: { - values: [{ - type: type, - value: message, - stacktrace: stacktrace - }] - }, - culprit: fileurl - }, options); // Fire away! + for (var usedKeys = keys.length; usedKeys > 0; usedKeys--) { + var serialized = keys.slice(0, usedKeys).join(', '); + if (serialized.length > maxLength) continue; + if (usedKeys === keys.length) return serialized; + return serialized + '\u2026'; + } - this._send(data); - }, - _trimPacket: function _trimPacket(data) { - // For now, we only want to truncate the two different messages - // but this could/should be expanded to just trim everything - var max = this._globalOptions.maxMessageLength; + return ''; +} - if (data.message) { - data.message = truncate(data.message, max); +function sanitize(input, sanitizeKeys) { + if (!isArray(sanitizeKeys) || (isArray(sanitizeKeys) && sanitizeKeys.length === 0)) + return input; + + var sanitizeRegExp = joinRegExp(sanitizeKeys); + var sanitizeMask = '********'; + var safeInput; + + try { + safeInput = JSON.parse(stringify(input)); + } catch (o_O) { + return input; + } + + function sanitizeWorker(workerInput) { + if (isArray(workerInput)) { + return workerInput.map(function(val) { + return sanitizeWorker(val); + }); } - if (data.exception) { - var exception = data.exception.values[0]; - exception.value = truncate(exception.value, max); + if (isPlainObject(workerInput)) { + return Object.keys(workerInput).reduce(function(acc, k) { + if (sanitizeRegExp.test(k)) { + acc[k] = sanitizeMask; + } else { + acc[k] = sanitizeWorker(workerInput[k]); + } + return acc; + }, {}); } - var request = data.request; + return workerInput; + } - if (request) { - if (request.url) { - request.url = truncate(request.url, this._globalOptions.maxUrlLength); - } + return sanitizeWorker(safeInput); +} - if (request.Referer) { - request.Referer = truncate(request.Referer, this._globalOptions.maxUrlLength); - } - } +module.exports = { + isObject: isObject, + isError: isError, + isErrorEvent: isErrorEvent, + isUndefined: isUndefined, + isFunction: isFunction, + isPlainObject: isPlainObject, + isString: isString, + isArray: isArray, + isEmptyObject: isEmptyObject, + supportsErrorEvent: supportsErrorEvent, + supportsFetch: supportsFetch, + supportsReferrerPolicy: supportsReferrerPolicy, + supportsPromiseRejectionEvent: supportsPromiseRejectionEvent, + wrappedCallback: wrappedCallback, + each: each, + objectMerge: objectMerge, + truncate: truncate, + objectFrozen: objectFrozen, + hasKey: hasKey, + joinRegExp: joinRegExp, + urlencode: urlencode, + uuid4: uuid4, + htmlTreeAsString: htmlTreeAsString, + htmlElementAsString: htmlElementAsString, + isSameException: isSameException, + isSameStacktrace: isSameStacktrace, + parseUrl: parseUrl, + fill: fill, + safeJoin: safeJoin, + serializeException: serializeException, + serializeKeysForMessage: serializeKeysForMessage, + sanitize: sanitize +}; - if (data.breadcrumbs && data.breadcrumbs.values) this._trimBreadcrumbs(data.breadcrumbs); - return data; - }, +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"9":9}],8:[function(_dereq_,module,exports){ +(function (global){ +var utils = _dereq_(7); - /** - * Truncate breadcrumb values (right now just URLs) - */ - _trimBreadcrumbs: function _trimBreadcrumbs(breadcrumbs) { - // known breadcrumb properties with urls - // TODO: also consider arbitrary prop values that start with (https?)?:// - var urlProps = ['to', 'from', 'url'], - urlProp, - crumb, - data; +/* + TraceKit - Cross brower stack traces - for (var i = 0; i < breadcrumbs.values.length; ++i) { - crumb = breadcrumbs.values[i]; - if (!crumb.hasOwnProperty('data') || !isObject(crumb.data) || objectFrozen(crumb.data)) continue; - data = objectMerge({}, crumb.data); + This was originally forked from github.com/occ/TraceKit, but has since been + largely re-written and is now maintained as part of raven-js. Tests for + this are in test/vendor. - for (var j = 0; j < urlProps.length; ++j) { - urlProp = urlProps[j]; + MIT license +*/ - if (data.hasOwnProperty(urlProp) && data[urlProp]) { - data[urlProp] = truncate(data[urlProp], this._globalOptions.maxUrlLength); - } - } +var TraceKit = { + collectWindowErrors: true, + debug: false +}; - breadcrumbs.values[i].data = data; - } - }, - _getHttpData: function _getHttpData() { - if (!this._hasNavigator && !this._hasDocument) return; - var httpData = {}; +// This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) +var _window = + typeof window !== 'undefined' + ? window + : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; - if (this._hasNavigator && _navigator.userAgent) { - httpData.headers = { - 'User-Agent': navigator.userAgent - }; - } // Check in `window` instead of `document`, as we may be in ServiceWorker environment +// global reference to slice +var _slice = [].slice; +var UNKNOWN_FUNCTION = '?'; +// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error#Error_types +var ERROR_TYPES_RE = /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/; - if (_window$1.location && _window$1.location.href) { - httpData.url = _window$1.location.href; - } +function getLocationHref() { + if (typeof document === 'undefined' || document.location == null) return ''; - if (this._hasDocument && _document.referrer) { - if (!httpData.headers) httpData.headers = {}; - httpData.headers.Referer = _document.referrer; - } + return document.location.href; +} - return httpData; - }, - _resetBackoff: function _resetBackoff() { - this._backoffDuration = 0; - this._backoffStart = null; - }, - _shouldBackoff: function _shouldBackoff() { - return this._backoffDuration && now() - this._backoffStart < this._backoffDuration; - }, +/** + * TraceKit.report: cross-browser processing of unhandled exceptions + * + * Syntax: + * TraceKit.report.subscribe(function(stackInfo) { ... }) + * TraceKit.report.unsubscribe(function(stackInfo) { ... }) + * TraceKit.report(exception) + * try { ...code... } catch(ex) { TraceKit.report(ex); } + * + * Supports: + * - Firefox: full stack trace with line numbers, plus column number + * on top frame; column number is not guaranteed + * - Opera: full stack trace with line and column numbers + * - Chrome: full stack trace with line and column numbers + * - Safari: line and column number for the top frame only; some frames + * may be missing, and column number is not guaranteed + * - IE: line and column number for the top frame only; some frames + * may be missing, and column number is not guaranteed + * + * In theory, TraceKit should work on all of the following versions: + * - IE5.5+ (only 8.0 tested) + * - Firefox 0.9+ (only 3.5+ tested) + * - Opera 7+ (only 10.50 tested; versions 9 and earlier may require + * Exceptions Have Stacktrace to be enabled in opera:config) + * - Safari 3+ (only 4+ tested) + * - Chrome 1+ (only 5+ tested) + * - Konqueror 3.5+ (untested) + * + * Requires TraceKit.computeStackTrace. + * + * Tries to catch all unhandled exceptions and report them to the + * subscribed handlers. Please note that TraceKit.report will rethrow the + * exception. This is REQUIRED in order to get a useful stack trace in IE. + * If the exception does not reach the top of the browser, you will only + * get a stack trace from the point where TraceKit.report was called. + * + * Handlers receive a stackInfo object as described in the + * TraceKit.computeStackTrace docs. + */ +TraceKit.report = (function reportModuleWrapper() { + var handlers = [], + lastArgs = null, + lastException = null, + lastExceptionStack = null; /** - * Returns true if the in-process data payload matches the signature - * of the previously-sent data - * - * NOTE: This has to be done at this level because TraceKit can generate - * data from window.onerror WITHOUT an exception object (IE8, IE9, - * other old browsers). This can take the form of an "exception" - * data object with a single frame (derived from the onerror args). + * Add a crash handler. + * @param {Function} handler */ - _isRepeatData: function _isRepeatData(current) { - var last = this._lastData; - if (!last || current.message !== last.message || // defined for captureMessage - current.culprit !== last.culprit // defined for captureException/onerror - ) return false; // Stacktrace interface (i.e. from captureMessage) + function subscribe(handler) { + installGlobalHandler(); + handlers.push(handler); + } - if (current.stacktrace || last.stacktrace) { - return isSameStacktrace(current.stacktrace, last.stacktrace); - } else if (current.exception || last.exception) { - // Exception interface (i.e. from captureException/onerror) - return isSameException(current.exception, last.exception); + /** + * Remove a crash handler. + * @param {Function} handler + */ + function unsubscribe(handler) { + for (var i = handlers.length - 1; i >= 0; --i) { + if (handlers[i] === handler) { + handlers.splice(i, 1); + } } + } - return true; - }, - _setBackoffState: function _setBackoffState(request) { - // If we are already in a backoff state, don't change anything - if (this._shouldBackoff()) { + /** + * Remove all crash handlers. + */ + function unsubscribeAll() { + uninstallGlobalHandler(); + handlers = []; + } + + /** + * Dispatch stack information to all handlers. + * @param {Object.} stack + */ + function notifyHandlers(stack, isWindowError) { + var exception = null; + if (isWindowError && !TraceKit.collectWindowErrors) { return; } + for (var i in handlers) { + if (handlers.hasOwnProperty(i)) { + try { + handlers[i].apply(null, [stack].concat(_slice.call(arguments, 2))); + } catch (inner) { + exception = inner; + } + } + } - var status = request.status; // 400 - project_id doesn't exist or some other fatal - // 401 - invalid/revoked dsn - // 429 - too many requests - - if (!(status === 400 || status === 401 || status === 429)) return; - var retry; + if (exception) { + throw exception; + } + } - try { - // If Retry-After is not in Access-Control-Expose-Headers, most - // browsers will throw an exception trying to access it - if (supportsFetch()) { - retry = request.headers.get('Retry-After'); - } else { - retry = request.getResponseHeader('Retry-After'); - } // Retry-After is returned in seconds + var _oldOnerrorHandler, _onErrorHandlerInstalled; + /** + * Ensures all global unhandled exceptions are recorded. + * Supported by Gecko and IE. + * @param {string} msg Error message. + * @param {string} url URL of script that generated the exception. + * @param {(number|string)} lineNo The line number at which the error + * occurred. + * @param {?(number|string)} colNo The column number at which the error + * occurred. + * @param {?Error} ex The actual Error object. + */ + function traceKitWindowOnError(msg, url, lineNo, colNo, ex) { + var stack = null; + // If 'ex' is ErrorEvent, get real Error from inside + var exception = utils.isErrorEvent(ex) ? ex.error : ex; + // If 'msg' is ErrorEvent, get real message from inside + var message = utils.isErrorEvent(msg) ? msg.message : msg; - retry = parseInt(retry, 10) * 1000; - } catch (e) { - /* eslint no-empty:0 */ - } + if (lastExceptionStack) { + TraceKit.computeStackTrace.augmentStackTraceWithInitialElement( + lastExceptionStack, + url, + lineNo, + message + ); + processLastException(); + } else if (exception && utils.isError(exception)) { + // non-string `exception` arg; attempt to extract stack trace - this._backoffDuration = retry ? // If Sentry server returned a Retry-After value, use it - retry : // Otherwise, double the last backoff duration (starts at 1 sec) - this._backoffDuration * 2 || 1000; - this._backoffStart = now(); - }, - _send: function _send(data) { - var globalOptions = this._globalOptions; + // New chrome and blink send along a real error object + // Let's just report that like a normal error. + // See: https://mikewest.org/2013/08/debugging-runtime-errors-with-window-onerror + stack = TraceKit.computeStackTrace(exception); + notifyHandlers(stack, true); + } else { + var location = { + url: url, + line: lineNo, + column: colNo + }; - var baseData = { - project: this._globalProject, - logger: globalOptions.logger, - platform: 'javascript' - }, - httpData = this._getHttpData(); + var name = undefined; + var groups; - if (httpData) { - baseData.request = httpData; - } // HACK: delete `trimHeadFrames` to prevent from appearing in outbound payload + if ({}.toString.call(message) === '[object String]') { + var groups = message.match(ERROR_TYPES_RE); + if (groups) { + name = groups[1]; + message = groups[2]; + } + } + location.func = UNKNOWN_FUNCTION; - if (data.trimHeadFrames) delete data.trimHeadFrames; - data = objectMerge(baseData, data); // Merge in the tags and extra separately since objectMerge doesn't handle a deep merge - - data.tags = objectMerge(objectMerge({}, this._globalContext.tags), data.tags); - data.extra = objectMerge(objectMerge({}, this._globalContext.extra), data.extra); // Send along our own collected metadata with extra - - data.extra['session:duration'] = now() - this._startTime; - - if (this._breadcrumbs && this._breadcrumbs.length > 0) { - // intentionally make shallow copy so that additions - // to breadcrumbs aren't accidentally sent in this request - data.breadcrumbs = { - values: [].slice.call(this._breadcrumbs, 0) + stack = { + name: name, + message: message, + url: getLocationHref(), + stack: [location] }; + notifyHandlers(stack, true); } - if (this._globalContext.user) { - // sentry.interfaces.User - data.user = this._globalContext.user; - } // Include the environment if it's defined in globalOptions - - - if (globalOptions.environment) data.environment = globalOptions.environment; // Include the release if it's defined in globalOptions - - if (globalOptions.release) data.release = globalOptions.release; // Include server_name if it's defined in globalOptions - - if (globalOptions.serverName) data.server_name = globalOptions.serverName; // Cleanup empty properties before sending them to the server - - Object.keys(data).forEach(function (key) { - if (data[key] == null || data[key] === '' || isEmptyObject(data[key])) { - delete data[key]; - } - }); - - if (isFunction(globalOptions.dataCallback)) { - data = globalOptions.dataCallback(data) || data; - } // Why?????????? - - - if (!data || isEmptyObject(data)) { - return; - } // Check if the request should be filtered or not - - - if (isFunction(globalOptions.shouldSendCallback) && !globalOptions.shouldSendCallback(data)) { - return; - } // Backoff state: Sentry server previously responded w/ an error (e.g. 429 - too many requests), - // so drop requests until "cool-off" period has elapsed. - + if (_oldOnerrorHandler) { + return _oldOnerrorHandler.apply(this, arguments); + } - if (this._shouldBackoff()) { - this._logDebug('warn', 'Raven dropped error due to backoff: ', data); + return false; + } + function installGlobalHandler() { + if (_onErrorHandlerInstalled) { return; } + _oldOnerrorHandler = _window.onerror; + _window.onerror = traceKitWindowOnError; + _onErrorHandlerInstalled = true; + } - if (typeof globalOptions.sampleRate === 'number') { - if (Math.random() < globalOptions.sampleRate) { - this._sendProcessedPayload(data); - } - } else { - this._sendProcessedPayload(data); - } - }, - _getUuid: function _getUuid() { - return uuid4(); - }, - _sendProcessedPayload: function _sendProcessedPayload(data, callback) { - var self = this; - var globalOptions = this._globalOptions; - if (!this.isSetup()) return; // Try and clean up the packet before sending by truncating long values - - data = this._trimPacket(data); // ideally duplicate error testing should occur *before* dataCallback/shouldSendCallback, - // but this would require copying an un-truncated copy of the data packet, which can be - // arbitrarily deep (extra_data) -- could be worthwhile? will revisit - - if (!this._globalOptions.allowDuplicates && this._isRepeatData(data)) { - this._logDebug('warn', 'Raven dropped repeat event: ', data); - + function uninstallGlobalHandler() { + if (!_onErrorHandlerInstalled) { return; - } // Send along an event_id if not explicitly passed. - // This event_id can be used to reference the error within Sentry itself. - // Set lastEventId after we know the error should actually be sent - - - this._lastEventId = data.event_id || (data.event_id = this._getUuid()); // Store outbound payload after trim - - this._lastData = data; - - this._logDebug('debug', 'Raven about to send:', data); + } + _window.onerror = _oldOnerrorHandler; + _onErrorHandlerInstalled = false; + _oldOnerrorHandler = undefined; + } - var auth = { - sentry_version: '7', - sentry_client: 'raven-js/' + this.VERSION, - sentry_key: this._globalKey - }; + function processLastException() { + var _lastExceptionStack = lastExceptionStack, + _lastArgs = lastArgs; + lastArgs = null; + lastExceptionStack = null; + lastException = null; + notifyHandlers.apply(null, [_lastExceptionStack, false].concat(_lastArgs)); + } - if (this._globalSecret) { - auth.sentry_secret = this._globalSecret; + /** + * Reports an unhandled Error to TraceKit. + * @param {Error} ex + * @param {?boolean} rethrow If false, do not re-throw the exception. + * Only used for window.onerror to not cause an infinite loop of + * rethrowing. + */ + function report(ex, rethrow) { + var args = _slice.call(arguments, 1); + if (lastExceptionStack) { + if (lastException === ex) { + return; // already caught by an inner catch block, ignore + } else { + processLastException(); + } } - var exception = data.exception && data.exception.values[0]; // only capture 'sentry' breadcrumb is autoBreadcrumbs is truthy + var stack = TraceKit.computeStackTrace(ex); + lastExceptionStack = stack; + lastException = ex; + lastArgs = args; - if (this._globalOptions.autoBreadcrumbs && this._globalOptions.autoBreadcrumbs.sentry) { - this.captureBreadcrumb({ - category: 'sentry', - message: exception ? (exception.type ? exception.type + ': ' : '') + exception.value : data.message, - event_id: data.event_id, - level: data.level || 'error' // presume error unless specified + // If the stack trace is incomplete, wait for 2 seconds for + // slow slow IE to see if onerror occurs or not before reporting + // this exception; otherwise, we will end up with an incomplete + // stack trace + setTimeout(function() { + if (lastException === ex) { + processLastException(); + } + }, stack.incomplete ? 2000 : 0); - }); + if (rethrow !== false) { + throw ex; // re-throw to propagate to the top level (and cause window.onerror) } + } - var url = this._globalEndpoint; + report.subscribe = subscribe; + report.unsubscribe = unsubscribe; + report.uninstall = unsubscribeAll; + return report; +})(); - (globalOptions.transport || this._makeRequest).call(this, { - url: url, - auth: auth, - data: data, - options: globalOptions, - onSuccess: function success() { - self._resetBackoff(); +/** + * TraceKit.computeStackTrace: cross-browser stack traces in JavaScript + * + * Syntax: + * s = TraceKit.computeStackTrace(exception) // consider using TraceKit.report instead (see below) + * Returns: + * s.name - exception name + * s.message - exception message + * s.stack[i].url - JavaScript or HTML file URL + * s.stack[i].func - function name, or empty for anonymous functions (if guessing did not work) + * s.stack[i].args - arguments passed to the function, if known + * s.stack[i].line - line number, if known + * s.stack[i].column - column number, if known + * + * Supports: + * - Firefox: full stack trace with line numbers and unreliable column + * number on top frame + * - Opera 10: full stack trace with line and column numbers + * - Opera 9-: full stack trace with line numbers + * - Chrome: full stack trace with line and column numbers + * - Safari: line and column number for the topmost stacktrace element + * only + * - IE: no line numbers whatsoever + * + * Tries to guess names of anonymous functions by looking for assignments + * in the source code. In IE and Safari, we have to guess source file names + * by searching for function bodies inside all page scripts. This will not + * work for scripts that are loaded cross-domain. + * Here be dragons: some function names may be guessed incorrectly, and + * duplicate functions may be mismatched. + * + * TraceKit.computeStackTrace should only be used for tracing purposes. + * Logging of unhandled exceptions should be done with TraceKit.report, + * which builds on top of TraceKit.computeStackTrace and provides better + * IE support by utilizing the window.onerror event to retrieve information + * about the top of the stack. + * + * Note: In IE and Safari, no stack trace is recorded on the Error object, + * so computeStackTrace instead walks its *own* chain of callers. + * This means that: + * * in Safari, some methods may be missing from the stack trace; + * * in IE, the topmost function in the stack trace will always be the + * caller of computeStackTrace. + * + * This is okay for tracing (because you are likely to be calling + * computeStackTrace from the function you want to be the topmost element + * of the stack trace anyway), but not okay for logging unhandled + * exceptions (because your catch block will likely be far away from the + * inner function that actually caused the exception). + * + */ +TraceKit.computeStackTrace = (function computeStackTraceWrapper() { + // Contents of Exception in various browsers. + // + // SAFARI: + // ex.message = Can't find variable: qq + // ex.line = 59 + // ex.sourceId = 580238192 + // ex.sourceURL = http://... + // ex.expressionBeginOffset = 96 + // ex.expressionCaretOffset = 98 + // ex.expressionEndOffset = 98 + // ex.name = ReferenceError + // + // FIREFOX: + // ex.message = qq is not defined + // ex.fileName = http://... + // ex.lineNumber = 59 + // ex.columnNumber = 69 + // ex.stack = ...stack trace... (see the example below) + // ex.name = ReferenceError + // + // CHROME: + // ex.message = qq is not defined + // ex.name = ReferenceError + // ex.type = not_defined + // ex.arguments = ['aa'] + // ex.stack = ...stack trace... + // + // INTERNET EXPLORER: + // ex.message = ... + // ex.name = ReferenceError + // + // OPERA: + // ex.message = ...message... (see the example below) + // ex.name = ReferenceError + // ex.opera#sourceloc = 11 (pretty much useless, duplicates the info in ex.message) + // ex.stacktrace = n/a; see 'opera:config#UserPrefs|Exceptions Have Stacktrace' - self._triggerEvent('success', { - data: data, - src: url - }); + /** + * Computes stack trace information from the stack property. + * Chrome and Gecko use this property. + * @param {Error} ex + * @return {?Object.} Stack trace information. + */ + function computeStackTraceFromStackProp(ex) { + if (typeof ex.stack === 'undefined' || !ex.stack) return; - callback && callback(); - }, - onError: function failure(error) { - self._logDebug('error', 'Raven transport failed to send: ', error); + var chrome = /^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i; + var winjs = /^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i; + // NOTE: blob urls are now supposed to always have an origin, therefore it's format + // which is `blob:http://url/path/with-some-uuid`, is matched by `blob.*?:\/` as well + var gecko = /^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i; + // Used to additionally parse URL/line/column from eval frames + var geckoEval = /(\S+) line (\d+)(?: > eval line \d+)* > eval/i; + var chromeEval = /\((\S*)(?::(\d+))(?::(\d+))\)/; + var lines = ex.stack.split('\n'); + var stack = []; + var submatch; + var parts; + var element; + var reference = /^(.*) is undefined$/.exec(ex.message); - if (error.request) { - self._setBackoffState(error.request); + for (var i = 0, j = lines.length; i < j; ++i) { + if ((parts = chrome.exec(lines[i]))) { + var isNative = parts[2] && parts[2].indexOf('native') === 0; // start of line + var isEval = parts[2] && parts[2].indexOf('eval') === 0; // start of line + if (isEval && (submatch = chromeEval.exec(parts[2]))) { + // throw out eval line/column and use top-most line/column number + parts[2] = submatch[1]; // url + parts[3] = submatch[2]; // line + parts[4] = submatch[3]; // column } + element = { + url: !isNative ? parts[2] : null, + func: parts[1] || UNKNOWN_FUNCTION, + args: isNative ? [parts[2]] : [], + line: parts[3] ? +parts[3] : null, + column: parts[4] ? +parts[4] : null + }; + } else if ((parts = winjs.exec(lines[i]))) { + element = { + url: parts[2], + func: parts[1] || UNKNOWN_FUNCTION, + args: [], + line: +parts[3], + column: parts[4] ? +parts[4] : null + }; + } else if ((parts = gecko.exec(lines[i]))) { + var isEval = parts[3] && parts[3].indexOf(' > eval') > -1; + if (isEval && (submatch = geckoEval.exec(parts[3]))) { + // throw out eval line/column and use top-most line number + parts[3] = submatch[1]; + parts[4] = submatch[2]; + parts[5] = null; // no column when eval + } else if (i === 0 && !parts[5] && typeof ex.columnNumber !== 'undefined') { + // FireFox uses this awesome columnNumber property for its top frame + // Also note, Firefox's column number is 0-based and everything else expects 1-based, + // so adding 1 + // NOTE: this hack doesn't work if top-most frame is eval + stack[0].column = ex.columnNumber + 1; + } + element = { + url: parts[3], + func: parts[1] || UNKNOWN_FUNCTION, + args: parts[2] ? parts[2].split(',') : [], + line: parts[4] ? +parts[4] : null, + column: parts[5] ? +parts[5] : null + }; + } else { + continue; + } - self._triggerEvent('failure', { - data: data, - src: url - }); - - error = error || new Error('Raven send failed (no additional details provided)'); - callback && callback(error); + if (!element.func && element.line) { + element.func = UNKNOWN_FUNCTION; } - }); - }, - _makeRequest: function _makeRequest(opts) { - // Auth is intentionally sent as part of query string (NOT as custom HTTP header) to avoid preflight CORS requests - var url = opts.url + '?' + urlencode(opts.auth); - var evaluatedHeaders = null; - var evaluatedFetchParameters = {}; - if (opts.options.headers) { - evaluatedHeaders = this._evaluateHash(opts.options.headers); + stack.push(element); } - if (opts.options.fetchParameters) { - evaluatedFetchParameters = this._evaluateHash(opts.options.fetchParameters); + if (!stack.length) { + return null; } - if (supportsFetch()) { - evaluatedFetchParameters.body = stringify_1(opts.data); - var defaultFetchOptions = objectMerge({}, this._fetchDefaults); - var fetchOptions = objectMerge(defaultFetchOptions, evaluatedFetchParameters); + return { + name: ex.name, + message: ex.message, + url: getLocationHref(), + stack: stack + }; + } - if (evaluatedHeaders) { - fetchOptions.headers = evaluatedHeaders; - } + /** + * Adds information about the first frame to incomplete stack traces. + * Safari and IE require this to get complete data on the first frame. + * @param {Object.} stackInfo Stack trace information from + * one of the compute* methods. + * @param {string} url The URL of the script that caused an error. + * @param {(number|string)} lineNo The line number of the script that + * caused an error. + * @param {string=} message The error generated by the browser, which + * hopefully contains the name of the object that caused the error. + * @return {boolean} Whether or not the stack information was + * augmented. + */ + function augmentStackTraceWithInitialElement(stackInfo, url, lineNo, message) { + var initial = { + url: url, + line: lineNo + }; - return _window$1.fetch(url, fetchOptions).then(function (response) { - if (response.ok) { - opts.onSuccess && opts.onSuccess(); - } else { - var error = new Error('Sentry error code: ' + response.status); // It's called request only to keep compatibility with XHR interface - // and not add more redundant checks in setBackoffState method + if (initial.url && initial.line) { + stackInfo.incomplete = false; + + if (!initial.func) { + initial.func = UNKNOWN_FUNCTION; + } - error.request = response; - opts.onError && opts.onError(error); + if (stackInfo.stack.length > 0) { + if (stackInfo.stack[0].url === initial.url) { + if (stackInfo.stack[0].line === initial.line) { + return false; // already in stack trace + } else if ( + !stackInfo.stack[0].line && + stackInfo.stack[0].func === initial.func + ) { + stackInfo.stack[0].line = initial.line; + return false; + } } - })['catch'](function () { - opts.onError && opts.onError(new Error('Sentry error code: network unavailable')); - }); - } + } - var request = _window$1.XMLHttpRequest && new _window$1.XMLHttpRequest(); - if (!request) return; // if browser doesn't support CORS (e.g. IE7), we are out of luck + stackInfo.stack.unshift(initial); + stackInfo.partial = true; + return true; + } else { + stackInfo.incomplete = true; + } - var hasCORS = 'withCredentials' in request || typeof XDomainRequest !== 'undefined'; - if (!hasCORS) return; + return false; + } - if ('withCredentials' in request) { - request.onreadystatechange = function () { - if (request.readyState !== 4) { - return; - } else if (request.status === 200) { - opts.onSuccess && opts.onSuccess(); - } else if (opts.onError) { - var err = new Error('Sentry error code: ' + request.status); - err.request = request; - opts.onError(err); - } + /** + * Computes stack trace information by walking the arguments.caller + * chain at the time the exception occurred. This will cause earlier + * frames to be missed but is the only way to get any stack trace in + * Safari and IE. The top frame is restored by + * {@link augmentStackTraceWithInitialElement}. + * @param {Error} ex + * @return {?Object.} Stack trace information. + */ + function computeStackTraceByWalkingCallerChain(ex, depth) { + var functionName = /function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i, + stack = [], + funcs = {}, + recursion = false, + parts, + item, + source; + + for ( + var curr = computeStackTraceByWalkingCallerChain.caller; + curr && !recursion; + curr = curr.caller + ) { + if (curr === computeStackTrace || curr === TraceKit.report) { + // console.log('skipping internal function'); + continue; + } + + item = { + url: null, + func: UNKNOWN_FUNCTION, + line: null, + column: null }; - } else { - request = new XDomainRequest(); // xdomainrequest cannot go http -> https (or vice versa), - // so always use protocol relative - url = url.replace(/^https?:/, ''); // onreadystatechange not supported by XDomainRequest + if (curr.name) { + item.func = curr.name; + } else if ((parts = functionName.exec(curr.toString()))) { + item.func = parts[1]; + } - if (opts.onSuccess) { - request.onload = opts.onSuccess; + if (typeof item.func === 'undefined') { + try { + item.func = parts.input.substring(0, parts.input.indexOf('{')); + } catch (e) {} } - if (opts.onError) { - request.onerror = function () { - var err = new Error('Sentry error code: XDomainRequest'); - err.request = request; - opts.onError(err); - }; + if (funcs['' + curr]) { + recursion = true; + } else { + funcs['' + curr] = true; } - } - request.open('POST', url); + stack.push(item); + } - if (evaluatedHeaders) { - each(evaluatedHeaders, function (key, value) { - request.setRequestHeader(key, value); - }); + if (depth) { + // console.log('depth is ' + depth); + // console.log('stack is ' + stack.length); + stack.splice(0, depth); } - request.send(stringify_1(opts.data)); - }, - _evaluateHash: function _evaluateHash(hash) { - var evaluated = {}; + var result = { + name: ex.name, + message: ex.message, + url: getLocationHref(), + stack: stack + }; + augmentStackTraceWithInitialElement( + result, + ex.sourceURL || ex.fileName, + ex.line || ex.lineNumber, + ex.message || ex.description + ); + return result; + } - for (var key in hash) { - if (hash.hasOwnProperty(key)) { - var value = hash[key]; - evaluated[key] = typeof value === 'function' ? value() : value; + /** + * Computes a stack trace for an exception. + * @param {Error} ex + * @param {(string|number)=} depth + */ + function computeStackTrace(ex, depth) { + var stack = null; + depth = depth == null ? 0 : +depth; + + try { + stack = computeStackTraceFromStackProp(ex); + if (stack) { + return stack; + } + } catch (e) { + if (TraceKit.debug) { + throw e; } } - return evaluated; - }, - _logDebug: function _logDebug(level) { - if (this._originalConsoleMethods[level] && this.debug) { - // In IE<10 console methods do not have their own 'apply' method - Function.prototype.apply.call(this._originalConsoleMethods[level], this._originalConsole, [].slice.call(arguments, 1)); - } - }, - _mergeContext: function _mergeContext(key, context) { - if (isUndefined(context)) { - delete this._globalContext[key]; - } else { - this._globalContext[key] = objectMerge(this._globalContext[key] || {}, context); + try { + stack = computeStackTraceByWalkingCallerChain(ex, depth + 1); + if (stack) { + return stack; + } + } catch (e) { + if (TraceKit.debug) { + throw e; + } } + return { + name: ex.name, + message: ex.message, + url: getLocationHref() + }; } -}; // Deprecations -Raven$1.prototype.setUser = Raven$1.prototype.setUserContext; -Raven$1.prototype.setReleaseContext = Raven$1.prototype.setRelease; -var raven = Raven$1; + computeStackTrace.augmentStackTraceWithInitialElement = augmentStackTraceWithInitialElement; + computeStackTrace.computeStackTraceFromStackProp = computeStackTraceFromStackProp; -/** - * Enforces a single instance of the Raven client, and the - * main entry point for Raven. If you are a consumer of the - * Raven library, you SHOULD load this file (vs raven.js). - **/ -// This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) + return computeStackTrace; +})(); -var _window = typeof window !== 'undefined' ? window : typeof commonjsGlobal !== 'undefined' ? commonjsGlobal : typeof self !== 'undefined' ? self : {}; +module.exports = TraceKit; -var _Raven = _window.Raven; -var Raven = new raven(); +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"7":7}],9:[function(_dereq_,module,exports){ /* - * Allow multiple versions of Raven to be installed. - * Strip Raven from the global context and returns the instance. - * - * @return {Raven} - */ - -Raven.noConflict = function () { - _window.Raven = _Raven; - return Raven; -}; - -Raven.afterLoad(); -var singleton = Raven; + json-stringify-safe + Like JSON.stringify, but doesn't throw on circular references. -/** - * Angular.js plugin - * - * Provides an $exceptionHandler for Angular.js - */ - -var wrappedCallback$1 = utils.wrappedCallback; // See https://github.com/angular/angular.js/blob/v1.4.7/src/minErr.js + Originally forked from https://github.com/isaacs/json-stringify-safe + version 5.0.1 on 3/8/2017 and modified to handle Errors serialization + and IE8 compatibility. Tests for this are in test/vendor. -var angularPattern = /^\[((?:[$a-zA-Z0-9]+:)?(?:[$a-zA-Z0-9]+))\] (.*?)\n?(\S+)$/; -var moduleName = 'ngRaven'; + ISC license: https://github.com/isaacs/json-stringify-safe/blob/master/LICENSE +*/ -function angularPlugin(Raven, angular) { - angular = angular || window.angular; - if (!angular) return; +exports = module.exports = stringify; +exports.getSerialize = serializer; - function RavenProvider() { - this.$get = ['$window', function ($window) { - return Raven; - }]; +function indexOf(haystack, needle) { + for (var i = 0; i < haystack.length; ++i) { + if (haystack[i] === needle) return i; } + return -1; +} - function ExceptionHandlerProvider($provide) { - $provide.decorator('$exceptionHandler', ['Raven', '$delegate', exceptionHandler]); - } +function stringify(obj, replacer, spaces, cycleReplacer) { + return JSON.stringify(obj, serializer(replacer, cycleReplacer), spaces); +} - function exceptionHandler(R, $delegate) { - return function (ex, cause) { - R.captureException(ex, { - extra: { - cause: cause - } - }); - $delegate(ex, cause); - }; +// https://github.com/ftlabs/js-abbreviate/blob/fa709e5f139e7770a71827b1893f22418097fbda/index.js#L95-L106 +function stringifyError(value) { + var err = { + // These properties are implemented as magical getters and don't show up in for in + stack: value.stack, + message: value.message, + name: value.name + }; + + for (var i in value) { + if (Object.prototype.hasOwnProperty.call(value, i)) { + err[i] = value[i]; + } } - angular.module(moduleName, []).provider('Raven', RavenProvider).config(['$provide', ExceptionHandlerProvider]); - Raven.setDataCallback(wrappedCallback$1(function (data) { - return angularPlugin._normalizeData(data); - })); + return err; } -angularPlugin._normalizeData = function (data) { - // We only care about mutating an exception - var exception = data.exception; +function serializer(replacer, cycleReplacer) { + var stack = []; + var keys = []; - if (exception) { - exception = exception.values[0]; - var matches = angularPattern.exec(exception.value); + if (cycleReplacer == null) { + cycleReplacer = function(key, value) { + if (stack[0] === value) { + return '[Circular ~]'; + } + return '[Circular ~.' + keys.slice(0, indexOf(stack, value)).join('.') + ']'; + }; + } - if (matches) { - // This type now becomes something like: $rootScope:inprog - exception.type = matches[1]; - exception.value = matches[2]; - data.message = exception.type + ': ' + exception.value; // auto set a new tag specifically for the angular error url + return function(key, value) { + if (stack.length > 0) { + var thisPos = indexOf(stack, this); + ~thisPos ? stack.splice(thisPos + 1) : stack.push(this); + ~thisPos ? keys.splice(thisPos, Infinity, key) : keys.push(key); - data.extra.angularDocs = matches[3].substr(0, 250); + if (~indexOf(stack, value)) { + value = cycleReplacer.call(this, key, value); + } + } else { + stack.push(value); } - } - - return data; -}; -angularPlugin.moduleName = moduleName; -var angular = angularPlugin; + return replacer == null + ? value instanceof Error ? stringifyError(value) : value + : replacer.call(this, key, value); + }; +} -/** - * Vue.js 2.0 plugin +},{}],10:[function(_dereq_,module,exports){ +/* + * JavaScript MD5 + * https://github.com/blueimp/JavaScript-MD5 * + * Copyright 2011, Sebastian Tschan + * https://blueimp.net + * + * Licensed under the MIT license: + * https://opensource.org/licenses/MIT + * + * Based on + * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message + * Digest Algorithm, as defined in RFC 1321. + * Version 2.2 Copyright (C) Paul Johnston 1999 - 2009 + * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet + * Distributed under the BSD License + * See http://pajhome.org.uk/crypt/md5 for more info. */ -function formatComponentName(vm) { - if (vm.$root === vm) { - return 'root instance'; - } - var name = vm._isVue ? vm.$options.name || vm.$options._componentTag : vm.name; - return (name ? 'component <' + name + '>' : 'anonymous component') + (vm._isVue && vm.$options.__file ? ' at ' + vm.$options.__file : ''); +/* +* Add integers, wrapping at 2^32. This uses 16-bit operations internally +* to work around bugs in some JS interpreters. +*/ +function safeAdd(x, y) { + var lsw = (x & 0xffff) + (y & 0xffff); + var msw = (x >> 16) + (y >> 16) + (lsw >> 16); + return (msw << 16) | (lsw & 0xffff); } -function vuePlugin(Raven, Vue) { - Vue = Vue || window.Vue; // quit if Vue isn't on the page +/* +* Bitwise rotate a 32-bit number to the left. +*/ +function bitRotateLeft(num, cnt) { + return (num << cnt) | (num >>> (32 - cnt)); +} - if (!Vue || !Vue.config) return; - var _oldOnError = Vue.config.errorHandler; +/* +* These functions implement the four basic operations the algorithm uses. +*/ +function md5cmn(q, a, b, x, s, t) { + return safeAdd(bitRotateLeft(safeAdd(safeAdd(a, q), safeAdd(x, t)), s), b); +} +function md5ff(a, b, c, d, x, s, t) { + return md5cmn((b & c) | (~b & d), a, b, x, s, t); +} +function md5gg(a, b, c, d, x, s, t) { + return md5cmn((b & d) | (c & ~d), a, b, x, s, t); +} +function md5hh(a, b, c, d, x, s, t) { + return md5cmn(b ^ c ^ d, a, b, x, s, t); +} +function md5ii(a, b, c, d, x, s, t) { + return md5cmn(c ^ (b | ~d), a, b, x, s, t); +} - Vue.config.errorHandler = function VueErrorHandler(error, vm, info) { - var metaData = {}; // vm and lifecycleHook are not always available +/* +* Calculate the MD5 of an array of little-endian words, and a bit length. +*/ +function binlMD5(x, len) { + /* append padding */ + x[len >> 5] |= 0x80 << (len % 32); + x[(((len + 64) >>> 9) << 4) + 14] = len; + + var i; + var olda; + var oldb; + var oldc; + var oldd; + var a = 1732584193; + var b = -271733879; + var c = -1732584194; + var d = 271733878; + + for (i = 0; i < x.length; i += 16) { + olda = a; + oldb = b; + oldc = c; + oldd = d; + + a = md5ff(a, b, c, d, x[i], 7, -680876936); + d = md5ff(d, a, b, c, x[i + 1], 12, -389564586); + c = md5ff(c, d, a, b, x[i + 2], 17, 606105819); + b = md5ff(b, c, d, a, x[i + 3], 22, -1044525330); + a = md5ff(a, b, c, d, x[i + 4], 7, -176418897); + d = md5ff(d, a, b, c, x[i + 5], 12, 1200080426); + c = md5ff(c, d, a, b, x[i + 6], 17, -1473231341); + b = md5ff(b, c, d, a, x[i + 7], 22, -45705983); + a = md5ff(a, b, c, d, x[i + 8], 7, 1770035416); + d = md5ff(d, a, b, c, x[i + 9], 12, -1958414417); + c = md5ff(c, d, a, b, x[i + 10], 17, -42063); + b = md5ff(b, c, d, a, x[i + 11], 22, -1990404162); + a = md5ff(a, b, c, d, x[i + 12], 7, 1804603682); + d = md5ff(d, a, b, c, x[i + 13], 12, -40341101); + c = md5ff(c, d, a, b, x[i + 14], 17, -1502002290); + b = md5ff(b, c, d, a, x[i + 15], 22, 1236535329); + + a = md5gg(a, b, c, d, x[i + 1], 5, -165796510); + d = md5gg(d, a, b, c, x[i + 6], 9, -1069501632); + c = md5gg(c, d, a, b, x[i + 11], 14, 643717713); + b = md5gg(b, c, d, a, x[i], 20, -373897302); + a = md5gg(a, b, c, d, x[i + 5], 5, -701558691); + d = md5gg(d, a, b, c, x[i + 10], 9, 38016083); + c = md5gg(c, d, a, b, x[i + 15], 14, -660478335); + b = md5gg(b, c, d, a, x[i + 4], 20, -405537848); + a = md5gg(a, b, c, d, x[i + 9], 5, 568446438); + d = md5gg(d, a, b, c, x[i + 14], 9, -1019803690); + c = md5gg(c, d, a, b, x[i + 3], 14, -187363961); + b = md5gg(b, c, d, a, x[i + 8], 20, 1163531501); + a = md5gg(a, b, c, d, x[i + 13], 5, -1444681467); + d = md5gg(d, a, b, c, x[i + 2], 9, -51403784); + c = md5gg(c, d, a, b, x[i + 7], 14, 1735328473); + b = md5gg(b, c, d, a, x[i + 12], 20, -1926607734); + + a = md5hh(a, b, c, d, x[i + 5], 4, -378558); + d = md5hh(d, a, b, c, x[i + 8], 11, -2022574463); + c = md5hh(c, d, a, b, x[i + 11], 16, 1839030562); + b = md5hh(b, c, d, a, x[i + 14], 23, -35309556); + a = md5hh(a, b, c, d, x[i + 1], 4, -1530992060); + d = md5hh(d, a, b, c, x[i + 4], 11, 1272893353); + c = md5hh(c, d, a, b, x[i + 7], 16, -155497632); + b = md5hh(b, c, d, a, x[i + 10], 23, -1094730640); + a = md5hh(a, b, c, d, x[i + 13], 4, 681279174); + d = md5hh(d, a, b, c, x[i], 11, -358537222); + c = md5hh(c, d, a, b, x[i + 3], 16, -722521979); + b = md5hh(b, c, d, a, x[i + 6], 23, 76029189); + a = md5hh(a, b, c, d, x[i + 9], 4, -640364487); + d = md5hh(d, a, b, c, x[i + 12], 11, -421815835); + c = md5hh(c, d, a, b, x[i + 15], 16, 530742520); + b = md5hh(b, c, d, a, x[i + 2], 23, -995338651); + + a = md5ii(a, b, c, d, x[i], 6, -198630844); + d = md5ii(d, a, b, c, x[i + 7], 10, 1126891415); + c = md5ii(c, d, a, b, x[i + 14], 15, -1416354905); + b = md5ii(b, c, d, a, x[i + 5], 21, -57434055); + a = md5ii(a, b, c, d, x[i + 12], 6, 1700485571); + d = md5ii(d, a, b, c, x[i + 3], 10, -1894986606); + c = md5ii(c, d, a, b, x[i + 10], 15, -1051523); + b = md5ii(b, c, d, a, x[i + 1], 21, -2054922799); + a = md5ii(a, b, c, d, x[i + 8], 6, 1873313359); + d = md5ii(d, a, b, c, x[i + 15], 10, -30611744); + c = md5ii(c, d, a, b, x[i + 6], 15, -1560198380); + b = md5ii(b, c, d, a, x[i + 13], 21, 1309151649); + a = md5ii(a, b, c, d, x[i + 4], 6, -145523070); + d = md5ii(d, a, b, c, x[i + 11], 10, -1120210379); + c = md5ii(c, d, a, b, x[i + 2], 15, 718787259); + b = md5ii(b, c, d, a, x[i + 9], 21, -343485551); + + a = safeAdd(a, olda); + b = safeAdd(b, oldb); + c = safeAdd(c, oldc); + d = safeAdd(d, oldd); + } + return [a, b, c, d]; +} - if (Object.prototype.toString.call(vm) === '[object Object]') { - metaData.componentName = formatComponentName(vm); - metaData.propsData = vm.$options.propsData; - } +/* +* Convert an array of little-endian words to a string +*/ +function binl2rstr(input) { + var i; + var output = ''; + var length32 = input.length * 32; + for (i = 0; i < length32; i += 8) { + output += String.fromCharCode((input[i >> 5] >>> (i % 32)) & 0xff); + } + return output; +} - if (typeof info !== 'undefined') { - metaData.lifecycleHook = info; - } +/* +* Convert a raw string to an array of little-endian words +* Characters >255 have their high-byte silently ignored. +*/ +function rstr2binl(input) { + var i; + var output = []; + output[(input.length >> 2) - 1] = undefined; + for (i = 0; i < output.length; i += 1) { + output[i] = 0; + } + var length8 = input.length * 8; + for (i = 0; i < length8; i += 8) { + output[i >> 5] |= (input.charCodeAt(i / 8) & 0xff) << (i % 32); + } + return output; +} - Raven.captureException(error, { - extra: metaData - }); +/* +* Calculate the MD5 of a raw string +*/ +function rstrMD5(s) { + return binl2rstr(binlMD5(rstr2binl(s), s.length * 8)); +} - if (typeof _oldOnError === 'function') { - _oldOnError.call(this, error, vm, info); - } - }; +/* +* Calculate the HMAC-MD5, of a key and some data (raw strings) +*/ +function rstrHMACMD5(key, data) { + var i; + var bkey = rstr2binl(key); + var ipad = []; + var opad = []; + var hash; + ipad[15] = opad[15] = undefined; + if (bkey.length > 16) { + bkey = binlMD5(bkey, key.length * 8); + } + for (i = 0; i < 16; i += 1) { + ipad[i] = bkey[i] ^ 0x36363636; + opad[i] = bkey[i] ^ 0x5c5c5c5c; + } + hash = binlMD5(ipad.concat(rstr2binl(data)), 512 + data.length * 8); + return binl2rstr(binlMD5(opad.concat(hash), 512 + 128)); +} + +/* +* Convert a raw string to a hex string +*/ +function rstr2hex(input) { + var hexTab = '0123456789abcdef'; + var output = ''; + var x; + var i; + for (i = 0; i < input.length; i += 1) { + x = input.charCodeAt(i); + output += hexTab.charAt((x >>> 4) & 0x0f) + hexTab.charAt(x & 0x0f); + } + return output; } -var vue = vuePlugin; +/* +* Encode a string as utf-8 +*/ +function str2rstrUTF8(input) { + return unescape(encodeURIComponent(input)); +} -/* This file was generated by './scripts/generate-plugin-combinations.js'! */ +/* +* Take string arguments and return either raw or hex encoded strings +*/ +function rawMD5(s) { + return rstrMD5(str2rstrUTF8(s)); +} +function hexMD5(s) { + return rstr2hex(rawMD5(s)); +} +function rawHMACMD5(k, d) { + return rstrHMACMD5(str2rstrUTF8(k), str2rstrUTF8(d)); +} +function hexHMACMD5(k, d) { + return rstr2hex(rawHMACMD5(k, d)); +} -singleton.addPlugin(angular).addPlugin(vue); -var angular_vue = {}; +function md5(string, key, raw) { + if (!key) { + if (!raw) { + return hexMD5(string); + } + return rawMD5(string); + } + if (!raw) { + return hexHMACMD5(key, string); + } + return rawHMACMD5(key, string); +} -return angular_vue; +module.exports = md5; -}))); +},{}]},{},[6,1,2])(6) +}); \ No newline at end of file diff --git a/dist/angular,vue/raven.min.js b/dist/angular,vue/raven.min.js index 26a0cf25b73c..1e0bdaac276b 100644 --- a/dist/angular,vue/raven.min.js +++ b/dist/angular,vue/raven.min.js @@ -1,3 +1,4 @@ -/*! Raven.js 3.22.2 (1b6187b) | github.com/getsentry/raven-js */ -!function(a,b){"object"==typeof exports&&"undefined"!=typeof module?module.exports=b():"function"==typeof define&&define.amd?define(b):a.Raven=b()}(this,function(){"use strict";function a(a,b){return b={exports:{}},a(b,b.exports),b.exports}function b(a){return(b="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(a){return typeof a}:function(a){return a&&"function"==typeof Symbol&&a.constructor===Symbol&&a!==Symbol.prototype?"symbol":typeof a})(a)}function c(a){return"object"===b(a)&&null!==a}function d(a){switch({}.toString.call(a)){case"[object Error]":return!0;case"[object Exception]":return!0;case"[object DOMException]":return!0;default:return a instanceof Error}}function e(a){return l()&&"[object ErrorEvent]"==={}.toString.call(a)}function f(a){return void 0===a}function g(a){return"function"==typeof a}function h(a){return"[object Object]"===Object.prototype.toString.call(a)}function i(a){return"[object String]"===Object.prototype.toString.call(a)}function j(a){return"[object Array]"===Object.prototype.toString.call(a)}function k(a){if(!h(a))return!1;for(var b in a)if(a.hasOwnProperty(b))return!1;return!0}function l(){try{return new ErrorEvent(""),!0}catch(a){return!1}}function m(){if(!("fetch"in P))return!1;try{return new Headers,new Request(""),new Response,!0}catch(a){return!1}}function n(a){function b(b,c){var d=a(b)||b;return c?c(d)||d:d}return b}function o(a,b){var c,d;if(f(a.length))for(c in a)s(a,c)&&b.call(null,c,a[c]);else if(d=a.length)for(c=0;c ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function y(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&i(b))for(c=b.split(/\s+/),f=0;f":"anonymous component")+(a._isVue&&a.$options.__file?" at "+a.$options.__file:"")}function M(a,b){if(b=b||window.Vue,b&&b.config){var c=b.config.errorHandler;b.config.errorHandler=function(b,d,e){var f={};"[object Object]"===Object.prototype.toString.call(d)&&(f.componentName=L(d),f.propsData=d.$options.propsData),"undefined"!=typeof e&&(f.lifecycleHook=e),a.captureException(b,{extra:f}),"function"==typeof c&&c.call(this,b,d,e)}}}var N="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{},O=Object.setPrototypeOf||function(a,b){return a.C=b,a},P=("object"==typeof Reflect&&Reflect.construct||function(a,b,c){var d,e=[null];return e.push.apply(e,b),d=a.bind.apply(a,e),O(new d,c.prototype)},"undefined"!=typeof window?window:"undefined"!=typeof N?N:"undefined"!=typeof self?self:{}),Q={isObject:c,isError:d,isErrorEvent:e,isUndefined:f,isFunction:g,isPlainObject:h,isString:i,isArray:j,isEmptyObject:k,supportsErrorEvent:l,supportsFetch:m,wrappedCallback:n,each:o,objectMerge:p,truncate:r,objectFrozen:q,hasKey:s,joinRegExp:t,urlencode:u,uuid4:w,htmlTreeAsString:x,htmlElementAsString:y,isSameException:B,isSameStacktrace:C,parseUrl:v,fill:D,safeJoin:E},R={collectWindowErrors:!0,debug:!1},S="undefined"!=typeof window?window:"undefined"!=typeof N?N:"undefined"!=typeof self?self:{},T=[].slice,U="?",V=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;R.report=function(){function a(a){f(),l.push(a)}function b(a){for(var b=l.length-1;b>=0;--b)l[b]===a&&l.splice(b,1)}function c(){g(),l=[]}function d(a,b){var c=null;if(!b||R.collectWindowErrors){for(var d in l)if(l.hasOwnProperty(d))try{l[d].apply(null,[a].concat(T.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function e(a,b,c,e,f){var g=null,i=Q.isErrorEvent(f)?f.error:f,k=Q.isErrorEvent(a)?a.message:a;if(o)R.computeStackTrace.augmentStackTraceWithInitialElement(o,b,c,k),h();else if(i&&Q.isError(i))g=R.computeStackTrace(i),d(g,!0);else{var l,m={url:b,line:c,column:e},n=void 0;if("[object String]"==={}.toString.call(k)){var l=k.match(V);l&&(n=l[1],k=l[2])}m.func=U,g={name:n,message:k,url:F(),stack:[m]},d(g,!0)}return!!j&&j.apply(this,arguments)}function f(){k||(j=S.onerror,S.onerror=e,k=!0)}function g(){k&&(S.onerror=j,k=!1,j=void 0)}function h(){var a=o,b=m;m=null,o=null,n=null,d.apply(null,[a,!1].concat(b))}function i(a,b){var c=T.call(arguments,1);if(o){if(n===a)return;h()}var d=R.computeStackTrace(a);if(o=d,n=a,m=c,setTimeout(function(){n===a&&h()},d.incomplete?2e3:0),b!==!1)throw a}var j,k,l=[],m=null,n=null,o=null;return i.subscribe=a,i.unsubscribe=b,i.uninstall=c,i}(),R.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,d,e=/^\s*at (.*?) ?\(((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,f=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|\[native).*?|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,g=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,h=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,i=/\((\S*)(?::(\d+))(?::(\d+))\)/,j=a.stack.split("\n"),k=[],l=(/^(.*) is undefined$/.exec(a.message),0),m=j.length;l eval")>-1;o&&(b=h.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==l||c[5]||"undefined"==typeof a.columnNumber||(k[0].column=a.columnNumber+1),d={url:c[3],func:c[1]||U,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}!d.func&&d.line&&(d.func=U),k.push(d)}return k.length?{name:a.name,message:a.message,url:F(),stack:k}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=U),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,e){for(var f,g,h=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,i=[],j={},k=!1,l=c.caller;l&&!k;l=l.caller)if(l!==d&&l!==R.report){if(g={url:null,func:U,line:null,column:null},l.name?g.func=l.name:(f=h.exec(l.toString()))&&(g.func=f[1]),"undefined"==typeof g.func)try{g.func=f.input.substring(0,f.input.indexOf("{"))}catch(m){}j[""+l]?k=!0:j[""+l]=!0,i.push(g)}e&&i.splice(0,e);var n={name:a.name,message:a.message,url:F(),stack:i};return b(n,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),n}function d(b,d){var e=null;d=null==d?0:+d;try{if(e=a(b))return e}catch(f){if(R.debug)throw f}try{if(e=c(b,d+1))return e}catch(f){if(R.debug)throw f}return{name:b.name,message:b.message,url:F()}}return d.augmentStackTraceWithInitialElement=b,d.computeStackTraceFromStackProp=a,d}();var W=R,X=a(function(a,b){function c(a,b){for(var c=0;c0){var i=c(d,this);~i?d.splice(i+1):d.push(this),~i?f.splice(i,1/0,g):f.push(g),~c(d,h)&&(h=b.call(this,g,h))}else d.push(h);return null==a?h instanceof Error?e(h):h:a.call(this,g,h)}}b=a.exports=d,b.getSerialize=f});G.prototype=new Error,G.prototype.constructor=G;var Y=G,Z=function(a,b,c){var d=a[b],e=a;if(b in a){var f="warn"===b?"warning":b;a[b]=function(){var a=[].slice.call(arguments),g=Q.safeJoin(a," "),h={level:f,logger:"console",extra:{arguments:a}};"assert"===b?a[0]===!1&&(g="Assertion failed: "+(Q.safeJoin(a.slice(1)," ")||"console.assert"),h.extra.arguments=a.slice(1),c&&c(g,h)):c&&c(g,h),d&&Function.prototype.apply.call(d,e,a)}}},$={wrapMethod:Z},_=Q.isError,aa=Q.isObject,ba=Q.isErrorEvent,ca=Q.isUndefined,da=Q.isFunction,ea=Q.isString,fa=Q.isArray,ga=Q.isEmptyObject,ha=Q.each,ia=Q.objectMerge,ja=Q.truncate,ka=Q.objectFrozen,la=Q.hasKey,ma=Q.joinRegExp,na=Q.urlencode,oa=Q.uuid4,pa=Q.htmlTreeAsString,qa=Q.isSameException,ra=Q.isSameStacktrace,sa=Q.parseUrl,ta=Q.fill,ua=Q.supportsFetch,va=$.wrapMethod,wa="source protocol user pass host port path".split(" "),xa=/^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/,ya="undefined"!=typeof window?window:"undefined"!=typeof N?N:"undefined"!=typeof self?self:{},za=ya.document,Aa=ya.navigator;J.prototype={VERSION:"3.22.2",debug:!1,TraceKit:W,config:function(a,b){var c=this;if(c.i)return this.D("error","Error: Raven has already been configured"),c;if(!a)return c;var d=c.m;b&&ha(b,function(a,b){"tags"===a||"extra"===a||"user"===a?c.l[a]=b:d[a]=b}),c.setDSN(a),d.ignoreErrors.push(/^Script error\.?$/),d.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/),d.ignoreErrors=ma(d.ignoreErrors),d.ignoreUrls=!!d.ignoreUrls.length&&ma(d.ignoreUrls),d.whitelistUrls=!!d.whitelistUrls.length&&ma(d.whitelistUrls),d.includePaths=ma(d.includePaths),d.maxBreadcrumbs=Math.max(0,Math.min(d.maxBreadcrumbs||100,100));var e={xhr:!0,console:!0,dom:!0,location:!0,sentry:!0},f=d.autoBreadcrumbs;"[object Object]"==={}.toString.call(f)?f=ia(e,f):f!==!1&&(f=e),d.autoBreadcrumbs=f;var g={tryCatch:!0},h=d.instrument;return"[object Object]"==={}.toString.call(h)?h=ia(g,h):h!==!1&&(h=g),d.instrument=h,W.collectWindowErrors=!!d.collectWindowErrors,c},install:function(){var a=this;return a.isSetup()&&!a.p&&(W.report.subscribe(function(){a.E.apply(a,arguments)}),a.F(),a.m.instrument&&a.m.instrument.tryCatch&&a.G(),a.m.autoBreadcrumbs&&a.H(),a.I(),a.p=!0),Error.stackTraceLimit=a.m.stackTraceLimit,this},setDSN:function(a){var b=this,c=b.J(a),d=c.path.lastIndexOf("/"),e=c.path.substr(1,d);b.K=a,b.j=c.user,b.L=c.pass&&c.pass.substr(1),b.k=c.path.substr(d+1),b.i=b.M(c),b.N=b.i+"/"+e+"api/"+b.k+"/store/",this.A()},context:function(a,b,c){return da(a)&&(c=b||[],b=a,a=void 0),this.wrap(a,b).apply(this,c)},wrap:function(a,b,c){function d(){var d=[],f=arguments.length,g=!a||a&&a.deep!==!1;for(c&&da(c)&&c.apply(this,arguments);f--;)d[f]=g?e.wrap(a,arguments[f]):arguments[f];try{return b.apply(this,d)}catch(h){throw e.O(),e.captureException(h,a),h}}var e=this;if(ca(b)&&!da(a))return a;if(da(a)&&(b=a,a=void 0),!da(b))return b;try{if(b.a)return b;if(b.P)return b.P}catch(f){return b}for(var g in b)la(b,g)&&(d[g]=b[g]);return d.prototype=b.prototype,b.P=d,d.a=!0,d.b=b,d},uninstall:function(){return W.report.uninstall(),this.Q(),this.R(),this.S(),Error.stackTraceLimit=this.q,this.p=!1,this},captureException:function(a,b){b=ia({trimHeadFrames:0},b?b:{});var c=!_(a),d=!ba(a),e=ba(a)&&!a.error;if(c&&d||e)return this.captureMessage(a,ia(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}));ba(a)&&(a=a.error),this.f=a;try{var f=W.computeStackTrace(a);this.T(f,b)}catch(g){if(a!==g)throw g}return this},captureMessage:function(a,b){if(!this.m.ignoreErrors.test||!this.m.ignoreErrors.test(a)){b=b||{};var c,d=ia({message:a+""},b);try{throw new Error(a)}catch(e){c=e}c.name=null;var f=W.computeStackTrace(c),g=fa(f.stack)&&f.stack[1],h=g&&g.url||"";if((!this.m.ignoreUrls.test||!this.m.ignoreUrls.test(h))&&(!this.m.whitelistUrls.test||this.m.whitelistUrls.test(h))){if(this.m.stacktrace||b&&b.stacktrace){b=ia({fingerprint:a,trimHeadFrames:(b.trimHeadFrames||0)+1},b);var i=this.U(f,b);d.stacktrace={frames:i.reverse()}}return this.V(d),this}}},captureBreadcrumb:function(a){var b=ia({timestamp:H()/1e3},a);if(da(this.m.breadcrumbCallback)){var c=this.m.breadcrumbCallback(b);if(aa(c)&&!ga(c))b=c;else if(c===!1)return this}return this.w.push(b),this.w.length>this.m.maxBreadcrumbs&&this.w.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.t.push([a,b]),this.p&&this.I(),this},setUserContext:function(a){return this.l.user=a,this},setExtraContext:function(a){return this.W("extra",a),this},setTagsContext:function(a){return this.W("tags",a),this},clearContext:function(){return this.l={},this},getContext:function(){return JSON.parse(X(this.l))},setEnvironment:function(a){return this.m.environment=a,this},setRelease:function(a){return this.m.release=a,this},setDataCallback:function(a){var b=this.m.dataCallback;return this.m.dataCallback=I(b,a),this},setBreadcrumbCallback:function(a){var b=this.m.breadcrumbCallback;return this.m.breadcrumbCallback=I(b,a),this},setShouldSendCallback:function(a){var b=this.m.shouldSendCallback;return this.m.shouldSendCallback=I(b,a),this},setTransport:function(a){return this.m.transport=a,this},lastException:function(){return this.f},lastEventId:function(){return this.h},isSetup:function(){return!!this.c&&(!!this.i||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.D("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=ya.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(za){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new Y("Missing eventId");var c=a.dsn||this.K;if(!c)throw new Y("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.l.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.M(this.J(c)),h=za.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(za.head||za.body).appendChild(h)}},O:function(){var a=this;this.o+=1,setTimeout(function(){a.o-=1})},X:function(a,b){var c,d;if(this.d){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),za.createEvent?(c=za.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=za.createEventObject(),c.eventType=a);for(d in b)la(b,d)&&(c[d]=b[d]);if(za.createEvent)za.dispatchEvent(c);else try{za.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},Y:function(a){var b=this;return function(c){if(b.Z=null,b.x!==c){b.x=c;var d;try{d=pa(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},$:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.Z;g||a.Y("input")(c),clearTimeout(g),a.Z=setTimeout(function(){a.Z=null},b)}}},_:function(a,b){var c=sa(this.y.href),d=sa(b),e=sa(a);this.z=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},F:function(){var a=this;a.aa=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.a?a.aa.apply(this.b,arguments):a.aa.apply(this,arguments)}},Q:function(){this.aa&&(Function.prototype.toString=this.aa)},G:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b._(b.z,c+""),a.apply(this,arguments)}};ta(history,"pushState",j,d),ta(history,"replaceState",j,d)}if(c.console&&"console"in ya&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};ha(["debug","info","warn","error","log"],function(a,b){va(console,b,k)})}},R:function(){for(var a;this.v.length;){a=this.v.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},S:function(){for(var a in this.s)this.r[a]=this.s[a]},I:function(){var a=this;ha(this.t,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},J:function(a){var b=xa.exec(a),c={},d=7;try{for(;d--;)c[wa[d]]=b[d]||""}catch(e){throw new Y("Invalid DSN: "+a)}if(c.pass&&!this.m.allowSecretKey)throw new Y("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},M:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},E:function(){this.o||this.T.apply(this,arguments)},T:function(a,b){var c=this.U(a,b);this.X("handle",{stackInfo:a,options:b}),this.ca(a.name,a.message,a.url,a.lineno,c,b)},U:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(ha(a.stack,function(b,e){var f=c.da(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.w,0)}),this.l.user&&(a.user=this.l.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||ga(a[b]))&&delete a[b]}),da(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!ga(a)&&(!da(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.ja()?void this.D("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random()":"anonymous component")+(a._isVue&&a.$options.__file?" at "+a.$options.__file:"")}function e(a,b){if(b=b||window.Vue,b&&b.config){var c=b.config.errorHandler;b.config.errorHandler=function(b,e,f){var g={};"[object Object]"===Object.prototype.toString.call(e)&&(g.componentName=d(e),g.propsData=e.$options.propsData),"undefined"!=typeof f&&(g.lifecycleHook=f),a.captureException(b,{extra:g}),"function"==typeof c&&c.call(this,b,e,f)}}}b.exports=e,a(6).addPlugin(b.exports)},{6:6}],3:[function(a,b,c){function d(a){this.name="RavenConfigError",this.message=a}d.prototype=new Error,d.prototype.constructor=d,b.exports=d},{}],4:[function(a,b,c){var d=a(7),e=function(a,b,c){var e=a[b],f=a;if(b in a){var g="warn"===b?"warning":b;a[b]=function(){var a=[].slice.call(arguments),h=d.safeJoin(a," "),i={level:g,logger:"console",extra:{arguments:a}};"assert"===b?a[0]===!1&&(h="Assertion failed: "+(d.safeJoin(a.slice(1)," ")||"console.assert"),i.extra.arguments=a.slice(1),c&&c(h,i)):c&&c(h,i),e&&Function.prototype.apply.call(e,f,a)}}};b.exports={wrapMethod:e}},{7:7}],5:[function(a,b,c){(function(c){function d(){return+new Date}function e(a,b){return q(b)?function(c){return b(c,a)}:b}function f(){this.b=!("object"!=typeof JSON||!JSON.stringify),this.c=!p(Q),this.d=!p(R),this.e=null,this.f=null,this.g=null,this.h=null,this.i=null,this.j=null,this.k={},this.l={release:P.SENTRY_RELEASE&&P.SENTRY_RELEASE.id,logger:"javascript",ignoreErrors:[],ignoreUrls:[],whitelistUrls:[],includePaths:[],headers:null,collectWindowErrors:!0,captureUnhandledRejections:!0,maxMessageLength:0,maxUrlLength:250,stackTraceLimit:50,autoBreadcrumbs:!0,instrument:!0,sampleRate:1,sanitizeKeys:[]},this.m={method:"POST",keepalive:!0,referrerPolicy:I()?"origin":""},this.n=0,this.o=!1,this.p=Error.stackTraceLimit,this.q=P.console||{},this.r={},this.s=[],this.t=d(),this.u=[],this.v=[],this.w=null,this.x=P.location,this.y=this.x&&this.x.href,this.z();for(var a in this.q)this.r[a]=this.q[a]}var g=a(8),h=a(9),i=a(10),j=a(3),k=a(7),l=k.isError,m=k.isObject,n=k.isPlainObject,o=k.isErrorEvent,p=k.isUndefined,q=k.isFunction,r=k.isString,s=k.isArray,t=k.isEmptyObject,u=k.each,v=k.objectMerge,w=k.truncate,x=k.objectFrozen,y=k.hasKey,z=k.joinRegExp,A=k.urlencode,B=k.uuid4,C=k.htmlTreeAsString,D=k.isSameException,E=k.isSameStacktrace,F=k.parseUrl,G=k.fill,H=k.supportsFetch,I=k.supportsReferrerPolicy,J=k.serializeKeysForMessage,K=k.serializeException,L=k.sanitize,M=a(4).wrapMethod,N="source protocol user pass host port path".split(" "),O=/^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/,P="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},Q=P.document,R=P.navigator;f.prototype={VERSION:"3.24.2",debug:!1,TraceKit:g,config:function(a,b){var c=this;if(c.h)return this.A("error","Error: Raven has already been configured"),c;if(!a)return c;var d=c.l;b&&u(b,function(a,b){"tags"===a||"extra"===a||"user"===a?c.k[a]=b:d[a]=b}),c.setDSN(a),d.ignoreErrors.push(/^Script error\.?$/),d.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/),d.ignoreErrors=z(d.ignoreErrors),d.ignoreUrls=!!d.ignoreUrls.length&&z(d.ignoreUrls),d.whitelistUrls=!!d.whitelistUrls.length&&z(d.whitelistUrls),d.includePaths=z(d.includePaths),d.maxBreadcrumbs=Math.max(0,Math.min(d.maxBreadcrumbs||100,100));var e={xhr:!0,console:!0,dom:!0,location:!0,sentry:!0},f=d.autoBreadcrumbs;"[object Object]"==={}.toString.call(f)?f=v(e,f):f!==!1&&(f=e),d.autoBreadcrumbs=f;var h={tryCatch:!0},i=d.instrument;return"[object Object]"==={}.toString.call(i)?i=v(h,i):i!==!1&&(i=h),d.instrument=i,g.collectWindowErrors=!!d.collectWindowErrors,c},install:function(){var a=this;return a.isSetup()&&!a.o&&(g.report.subscribe(function(){a.B.apply(a,arguments)}),a.l.captureUnhandledRejections&&a.C(),a.D(),a.l.instrument&&a.l.instrument.tryCatch&&a.E(),a.l.autoBreadcrumbs&&a.F(),a.G(),a.o=!0),Error.stackTraceLimit=a.l.stackTraceLimit,this},setDSN:function(a){var b=this,c=b.H(a),d=c.path.lastIndexOf("/"),e=c.path.substr(1,d);b.I=a,b.i=c.user,b.J=c.pass&&c.pass.substr(1),b.j=c.path.substr(d+1),b.h=b.K(c),b.L=b.h+"/"+e+"api/"+b.j+"/store/",this.z()},context:function(a,b,c){return q(a)&&(c=b||[],b=a,a=void 0),this.wrap(a,b).apply(this,c)},wrap:function(a,b,c){function d(){var d=[],f=arguments.length,g=!a||a&&a.deep!==!1;for(c&&q(c)&&c.apply(this,arguments);f--;)d[f]=g?e.wrap(a,arguments[f]):arguments[f];try{return b.apply(this,d)}catch(h){throw e.M(),e.captureException(h,a),h}}var e=this;if(p(b)&&!q(a))return a;if(q(a)&&(b=a,a=void 0),!q(b))return b;try{if(b.N)return b;if(b.O)return b.O}catch(f){return b}for(var g in b)y(b,g)&&(d[g]=b[g]);return d.prototype=b.prototype,b.O=d,d.N=!0,d.P=b,d},uninstall:function(){return g.report.uninstall(),this.Q(),this.R(),this.S(),this.T(),Error.stackTraceLimit=this.p,this.o=!1,this},U:function(a){this.A("debug","Raven caught unhandled promise rejection:",a),this.captureException(a.reason,{extra:{unhandledPromiseRejection:!0}})},C:function(){return this.U=this.U.bind(this),P.addEventListener&&P.addEventListener("unhandledrejection",this.U),this},Q:function(){return P.removeEventListener&&P.removeEventListener("unhandledrejection",this.U),this},captureException:function(a,b){if(b=v({trimHeadFrames:0},b?b:{}),o(a)&&a.error)a=a.error;else if(l(a))a=a;else{if(!n(a))return this.captureMessage(a,v(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}));b=this.V(b,a),a=new Error(b.message)}this.e=a;try{var c=g.computeStackTrace(a);this.W(c,b)}catch(d){if(a!==d)throw d}return this},V:function(a,b){var c=Object.keys(b).sort(),d=v(a,{message:"Non-Error exception captured with keys: "+J(c),fingerprint:[i(c)],extra:a.extra||{}});return d.extra.X=K(b),d},captureMessage:function(a,b){if(!this.l.ignoreErrors.test||!this.l.ignoreErrors.test(a)){b=b||{},a+="";var c,d=v({message:a},b);try{throw new Error(a)}catch(e){c=e}c.name=null;var f=g.computeStackTrace(c),h=s(f.stack)&&f.stack[1];h&&"Raven.captureException"===h.func&&(h=f.stack[2]);var i=h&&h.url||"";if((!this.l.ignoreUrls.test||!this.l.ignoreUrls.test(i))&&(!this.l.whitelistUrls.test||this.l.whitelistUrls.test(i))){if(this.l.stacktrace||b&&b.stacktrace){d.fingerprint=null==d.fingerprint?a:d.fingerprint,b=v({trimHeadFrames:0},b),b.trimHeadFrames+=1;var j=this.Y(f,b);d.stacktrace={frames:j.reverse()}}return d.fingerprint&&(d.fingerprint=s(d.fingerprint)?d.fingerprint:[d.fingerprint]),this.Z(d),this}}},captureBreadcrumb:function(a){var b=v({timestamp:d()/1e3},a);if(q(this.l.breadcrumbCallback)){var c=this.l.breadcrumbCallback(b);if(m(c)&&!t(c))b=c;else if(c===!1)return this}return this.v.push(b),this.v.length>this.l.maxBreadcrumbs&&this.v.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.s.push([a,b]),this.o&&this.G(),this},setUserContext:function(a){return this.k.user=a,this},setExtraContext:function(a){return this.$("extra",a),this},setTagsContext:function(a){return this.$("tags",a),this},clearContext:function(){return this.k={},this},getContext:function(){return JSON.parse(h(this.k))},setEnvironment:function(a){return this.l.environment=a,this},setRelease:function(a){return this.l.release=a,this},setDataCallback:function(a){var b=this.l.dataCallback;return this.l.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.l.breadcrumbCallback;return this.l.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.l.shouldSendCallback;return this.l.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.l.transport=a,this},lastException:function(){return this.e},lastEventId:function(){return this.g},isSetup:function(){return!!this.b&&(!!this.h||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.A("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=P.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(Q){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.I;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.k.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.K(this.H(c)),h=Q.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(Q.head||Q.body).appendChild(h)}},M:function(){var a=this;this.n+=1,setTimeout(function(){a.n-=1})},_:function(a,b){var c,d;if(this.c){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),Q.createEvent?(c=Q.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=Q.createEventObject(),c.eventType=a);for(d in b)y(b,d)&&(c[d]=b[d]);if(Q.createEvent)Q.dispatchEvent(c);else try{Q.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},aa:function(a){var b=this;return function(c){if(b.ba=null,b.w!==c){b.w=c;var d;try{d=C(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ca:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.ba;g||a.aa("input")(c),clearTimeout(g),a.ba=setTimeout(function(){a.ba=null},b)}}},da:function(a,b){var c=F(this.x.href),d=F(b),e=F(a);this.y=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},D:function(){var a=this;a.ea=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.N?a.ea.apply(this.P,arguments):a.ea.apply(this,arguments)}},R:function(){this.ea&&(Function.prototype.toString=this.ea)},E:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.da(b.y,c+""),a.apply(this,arguments)}};G(history,"pushState",j,d),G(history,"replaceState",j,d)}if(c.console&&"console"in P&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};u(["debug","info","warn","error","log"],function(a,b){M(console,b,k)})}},S:function(){for(var a;this.u.length;){a=this.u.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},T:function(){for(var a in this.r)this.q[a]=this.r[a]},G:function(){var a=this;u(this.s,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},H:function(a){var b=O.exec(a),c={},d=7;try{for(;d--;)c[N[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.l.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},K:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},B:function(){this.n||this.W.apply(this,arguments)},W:function(a,b){var c=this.Y(a,b);this._("handle",{stackInfo:a,options:b}),this.ga(a.name,a.message,a.url,a.lineno,c,b)},Y:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(u(a.stack,function(b,e){var f=c.ha(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.v,0)}),this.k.user&&(a.user=this.k.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),a=this.qa(a),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||t(a[b]))&&delete a[b]}),q(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!t(a)&&(!q(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.na()?void this.A("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function B(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&j(b))for(c=b.split(/\s+/),f=0;fc?M(a,b-1):d}function N(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?T:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function O(a,b){function c(a){return k(a)?a.map(function(a){return c(a)}):i(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!k(b)||k(b)&&0===b.length)return a;var d,e=w(b),f="********";try{d=JSON.parse(P(a))}catch(g){return a}return c(d)}var P=a(9),Q="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},R=3,S=51200,T=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isUndefined:g,isFunction:h,isPlainObject:i,isString:j,isArray:k,isEmptyObject:l,supportsErrorEvent:m,supportsFetch:n,supportsReferrerPolicy:o,supportsPromiseRejectionEvent:p,wrappedCallback:q,each:r,objectMerge:s,truncate:u,objectFrozen:t,hasKey:v,joinRegExp:w,urlencode:x,uuid4:z,htmlTreeAsString:A,htmlElementAsString:B,isSameException:E,isSameStacktrace:F,parseUrl:y,fill:G,safeJoin:H,serializeException:M,serializeKeysForMessage:N,sanitize:O}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{9:9}],8:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}var e=a(7),f={collectWindowErrors:!0,debug:!1},g="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},h=[].slice,i="?",j=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;f.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function k(a,b){var c=null;if(!b||f.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(h.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,g,h){var l=null,m=e.isErrorEvent(h)?h.error:h,n=e.isErrorEvent(a)?a.message:a;if(v)f.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&e.isError(m))l=f.computeStackTrace(m),k(l,!0);else{var p,r={url:b,line:c,column:g},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(j);p&&(s=p[1],n=p[2])}r.func=i,l={name:s,message:n,url:d(),stack:[r]},k(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=g.onerror,g.onerror=l,r=!0)}function n(){r&&(g.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,k.apply(null,[a,!1].concat(b))}function p(a,b){var c=h.call(arguments,1);if(v){if(u===a)return;o()}var d=f.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),f.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,e,f=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,g=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,h=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,j=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,k=/\((\S*)(?::(\d+))(?::(\d+))\)/,l=a.stack.split("\n"),m=[],n=(/^(.*) is undefined$/.exec(a.message),0),o=l.length;n eval")>-1;q&&(b=j.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==n||c[5]||"undefined"==typeof a.columnNumber||(m[0].column=a.columnNumber+1),e={url:c[3],func:c[1]||i,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}!e.func&&e.line&&(e.func=i),m.push(e)}return m.length?{name:a.name,message:a.message,url:d(),stack:m}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=i),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,g){for(var h,j,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==e&&o!==f.report){if(j={url:null,func:i,line:null,column:null},o.name?j.func=o.name:(h=k.exec(o.toString()))&&(j.func=h[1]),"undefined"==typeof j.func)try{j.func=h.input.substring(0,h.input.indexOf("{"))}catch(p){}m[""+o]?n=!0:m[""+o]=!0,l.push(j)}g&&l.splice(0,g);var q={name:a.name,message:a.message,url:d(),stack:l};return b(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),q}function e(b,e){var g=null;e=null==e?0:+e;try{if(g=a(b))return g}catch(h){if(f.debug)throw h; +}try{if(g=c(b,e+1))return g}catch(h){if(f.debug)throw h}return{name:b.name,message:b.message,url:d()}}return e.augmentStackTraceWithInitialElement=b,e.computeStackTraceFromStackProp=a,e}(),b.exports=f}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{7:7}],9:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}],10:[function(a,b,c){function d(a,b){var c=(65535&a)+(65535&b),d=(a>>16)+(b>>16)+(c>>16);return d<<16|65535&c}function e(a,b){return a<>>32-b}function f(a,b,c,f,g,h){return d(e(d(d(b,a),d(f,h)),g),c)}function g(a,b,c,d,e,g,h){return f(b&c|~b&d,a,b,e,g,h)}function h(a,b,c,d,e,g,h){return f(b&d|c&~d,a,b,e,g,h)}function i(a,b,c,d,e,g,h){return f(b^c^d,a,b,e,g,h)}function j(a,b,c,d,e,g,h){return f(c^(b|~d),a,b,e,g,h)}function k(a,b){a[b>>5]|=128<>>9<<4)+14]=b;var c,e,f,k,l,m=1732584193,n=-271733879,o=-1732584194,p=271733878;for(c=0;c>5]>>>b%32&255);return c}function m(a){var b,c=[];for(c[(a.length>>2)-1]=void 0,b=0;b>5]|=(255&a.charCodeAt(b/8))<16&&(e=k(e,8*a.length)),c=0;c<16;c+=1)f[c]=909522486^e[c],g[c]=1549556828^e[c];return d=k(f.concat(m(b)),512+8*b.length),l(k(g.concat(d),640))}function p(a){var b,c,d="0123456789abcdef",e="";for(c=0;c>>4&15)+d.charAt(15&b);return e}function q(a){return unescape(encodeURIComponent(a))}function r(a){return n(q(a))}function s(a){return p(r(a))}function t(a,b){return o(q(a),q(b))}function u(a,b){return p(t(a,b))}function v(a,b,c){return b?c?t(b,a):u(b,a):c?r(a):s(a)}b.exports=v},{}]},{},[6,1,2])(6)}); //# sourceMappingURL=raven.min.js.map \ No newline at end of file diff --git a/dist/angular,vue/raven.min.js.map b/dist/angular,vue/raven.min.js.map index f5d496f92bf1..b0cff0fbddac 100644 --- a/dist/angular,vue/raven.min.js.map +++ b/dist/angular,vue/raven.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["raven.js"],"names":["global","factory","exports","module","define","amd","Raven","this","createCommonjsModule","fn","_typeof","obj","Symbol","iterator","constructor","prototype","isObject$1","what","isError$1","value","toString","call","Error","isErrorEvent$1","supportsErrorEvent","isUndefined$1","isFunction$1","isPlainObject","Object","isString$1","isArray$1","isEmptyObject$1","_","hasOwnProperty","ErrorEvent","e","supportsFetch$1","_window$3","Headers","Request","Response","wrappedCallback","callback","dataCallback","data","original","normalizedData","each$1","i","j","length","hasKey$1","objectMerge$1","obj1","obj2","key","objectFrozen$1","isFrozen","truncate$1","str","max","substr","object","joinRegExp$1","patterns","pattern","sources","len","push","replace","source","RegExp","join","urlencode$1","o","pairs","encodeURIComponent","parseUrl$1","url","match","query","fragment","protocol","host","path","relative","uuid4$1","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","r","Math","random","htmlTreeAsString$1","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","reverse","className","classes","attr","tagName","toLowerCase","id","split","attrWhitelist","getAttribute","isOnlyOneTruthy","a","b","isBothUndefined","isSameException$1","ex1","ex2","values","type","stacktrace","isSameStacktrace$1","stack1","stack2","frames1","frames","frames2","filename","lineno","colno","fill$1","name","replacement","track","orig","__raven__","__orig__","safeJoin","input","delimiter","output","String","getLocationHref","document","location","href","RavenConfigError","message","now","Date","keepOriginalCallback","isFunction","Raven$1","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window$1","SENTRY_RELEASE","logger","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","_fetchDefaults","method","keepalive","referrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","console","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","_lastHref","_resetBackoff","angularPlugin","angular","RavenProvider","$get","$window","ExceptionHandlerProvider","$provide","decorator","exceptionHandler","R","$delegate","ex","cause","captureException","extra","window","moduleName","provider","config","setDataCallback","wrappedCallback$1","_normalizeData","formatComponentName","vm","$root","_isVue","$options","_componentTag","__file","vuePlugin","Vue","_oldOnError","errorHandler","error","info","metaData","componentName","propsData","lifecycleHook","commonjsGlobal","self","_sPO","setPrototypeOf","p","__proto__","Reflect","construct","Parent","args","Class","Constructor","apply","bind","utils","isObject","isError","isErrorEvent","isString","isArray","isEmptyObject","supportsFetch","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","TraceKit","debug","_window$2","_slice","slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","report","subscribe","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","stack","isWindowError","exception","concat","arguments","inner","traceKitWindowOnError","msg","lineNo","colNo","lastExceptionStack","computeStackTrace","augmentStackTraceWithInitialElement","processLastException","groups","line","column","undefined","func","_oldOnerrorHandler","_onErrorHandlerInstalled","onerror","_lastExceptionStack","_lastArgs","lastArgs","lastException","rethrow","setTimeout","incomplete","uninstall","computeStackTraceFromStackProp","submatch","parts","element","chrome","gecko","winjs","geckoEval","chromeEval","lines","exec","isNative","indexOf","isEval","columnNumber","stackInfo","initial","unshift","partial","computeStackTraceByWalkingCallerChain","depth","item","functionName","funcs","recursion","curr","caller","substring","result","sourceURL","fileName","lineNumber","description","tracekit","stringify_1","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","err","keys","thisPos","Infinity","getSerialize","configError","wrapMethod","level","originalConsoleLevel","originalConsole","sentryLevel","Function","console$1","wrapConsoleMethod","dsnKeys","dsnPattern","navigator","VERSION","dsn","options","_logDebug","globalOptions","setDSN","maxBreadcrumbs","min","autoBreadcrumbDefaults","xhr","dom","sentry","instrumentDefaults","tryCatch","install","isSetup","_handleOnErrorStackInfo","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","lastIndexOf","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","context","wrap","_before","wrapped","deep","_ignoreNextOnError","__raven_wrapper__","property","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","trimHeadFrames","isNotError","isNotErrorEvent","isErrorEventWithoutError","captureMessage","_handleStackInfo","test","initialCall","fileurl","fingerprint","_prepareFrames","_send","captureBreadcrumb","crumb","timestamp","breadcrumbCallback","shift","addPlugin","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","O","X","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","Y","evtName","_keypressTimeout","target","category","$","debounceDuration","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","from","to","parsedLoc","parsedTo","parsedFrom","F","_originalFunctionToString","Q","G","wrapTimeFn","t","Array","originalCallback","wrapEventTarget","proto","capture","secure","handleEvent","before","clickHandler","keypressHandler","_keypressEventHandler","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","H","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","onreadystatechange","origFetch","fetchInput","fetchData","then","response","addEventListener","attachEvent","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","builtin","S","I","installer","J","m","allowSecretKey","M","port","E","T","_triggerEvent","_processException","U","frame","_normalizeFrame","in_app","da","stackInfoUrl","normalized","function","ca","prefixedMessage","culprit","ea","request","Referer","breadcrumbs","_trimBreadcrumbs","fa","urlProp","urlProps","ga","httpData","userAgent","User-Agent","referrer","A","_backoffDuration","_backoffStart","ja","ka","current","last","la","_shouldBackoff","retry","get","getResponseHeader","parseInt","V","baseData","project","platform","_getHttpData","serverName","server_name","forEach","_sendProcessedPayload","na","ma","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","oa","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","onload","open","setRequestHeader","send","pa","hash","evaluated","D","W","setUser","setReleaseContext","raven","_window","_Raven","noConflict","singleton","angularPattern","matches","angularDocs","vue","angular_vue"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file +{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","angularPlugin","angular","RavenProvider","$get","$window","ExceptionHandlerProvider","$provide","decorator","exceptionHandler","R","$delegate","ex","cause","captureException","extra","moduleName","provider","config","setDataCallback","wrappedCallback","data","_normalizeData","angularPattern","exception","values","matches","exec","value","type","message","angularDocs","substr","addPlugin","6","7","2","formatComponentName","vm","$root","name","_isVue","$options","_componentTag","__file","vuePlugin","Vue","_oldOnError","errorHandler","error","info","metaData","Object","prototype","toString","componentName","propsData","lifecycleHook","3","RavenConfigError","constructor","4","utils","wrapMethod","console","level","callback","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","msg","safeJoin","logger","Function","apply","5","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","sanitizeKeys","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isError","isObject","isPlainObject","isErrorEvent","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","sanitize","wrapConsoleMethod","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","dsn","options","_logDebug","globalOptions","key","setDSN","push","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","context","func","undefined","wrap","_before","wrapped","deep","_ignoreNextOnError","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","U","event","reason","unhandledPromiseRejection","C","_promiseRejectionHandler","bind","addEventListener","Q","removeEventListener","trimHeadFrames","captureMessage","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","V","currentOptions","exKeys","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","M","setTimeout","_","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","aa","evtName","_keypressTimeout","target","category","ca","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","da","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","D","_originalFunctionToString","E","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","F","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","S","builtin","T","G","installer","concat","H","str","m","allowSecretKey","K","port","B","W","stackInfo","_triggerEvent","_processException","lineno","Y","frame","_normalizeFrame","in_app","ha","stackInfoUrl","normalized","filename","line","colno","column","function","ga","prefixedMessage","culprit","ia","request","Referer","breadcrumbs","_trimBreadcrumbs","ja","urlProp","urlProps","ka","httpData","userAgent","User-Agent","referrer","z","_backoffDuration","_backoffStart","na","oa","current","last","pa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Z","baseData","project","platform","_getHttpData","serverName","server_name","_sanitizeData","forEach","random","_sendProcessedPayload","qa","sa","ra","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","ta","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","onerror","open","setRequestHeader","send","ua","hash","evaluated","A","$","setUser","setReleaseContext","10","8","9","RavenConstructor","_Raven","noConflict","Client","what","supportsErrorEvent","ErrorEvent","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","sanitizeMask","safeInput","o_O","getLocationHref","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","y","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","charAt","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","string","raw"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file diff --git a/dist/angular/raven.js b/dist/angular/raven.js index 770f0164b9c0..3e798b336dae 100644 --- a/dist/angular/raven.js +++ b/dist/angular/raven.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.22.2 (1b6187b) | github.com/getsentry/raven-js */ +/*! Raven.js 3.24.2 (540f32b) | github.com/getsentry/raven-js */ /* * Includes TraceKit @@ -10,3193 +10,3972 @@ * */ -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : - typeof define === 'function' && define.amd ? define(factory) : - (global.Raven = factory()); -}(this, (function () { 'use strict'; - -var commonjsGlobal = typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; +(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.Raven = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o href parsing trick because React Native and other -// environments where DOM might not be available + self.setDSN(dsn); + // "Script error." is hard coded into browsers for errors that it can't read. + // this is the result of a script being pulled in from an external domain and CORS. + globalOptions.ignoreErrors.push(/^Script error\.?$/); + globalOptions.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/); -function parseUrl$1(url) { - if (typeof url !== 'string') return {}; - var match = url.match(/^(([^:\/?#]+):)?(\/\/([^\/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?$/); // coerce to undefined values to empty string so we don't get 'undefined' + // join regexp rules into one big rule + globalOptions.ignoreErrors = joinRegExp(globalOptions.ignoreErrors); + globalOptions.ignoreUrls = globalOptions.ignoreUrls.length + ? joinRegExp(globalOptions.ignoreUrls) + : false; + globalOptions.whitelistUrls = globalOptions.whitelistUrls.length + ? joinRegExp(globalOptions.whitelistUrls) + : false; + globalOptions.includePaths = joinRegExp(globalOptions.includePaths); + globalOptions.maxBreadcrumbs = Math.max( + 0, + Math.min(globalOptions.maxBreadcrumbs || 100, 100) + ); // default and hard limit is 100 - var query = match[6] || ''; - var fragment = match[8] || ''; - return { - protocol: match[2], - host: match[4], - path: match[5], - relative: match[5] + query + fragment // everything minus origin + var autoBreadcrumbDefaults = { + xhr: true, + console: true, + dom: true, + location: true, + sentry: true + }; - }; -} + var autoBreadcrumbs = globalOptions.autoBreadcrumbs; + if ({}.toString.call(autoBreadcrumbs) === '[object Object]') { + autoBreadcrumbs = objectMerge(autoBreadcrumbDefaults, autoBreadcrumbs); + } else if (autoBreadcrumbs !== false) { + autoBreadcrumbs = autoBreadcrumbDefaults; + } + globalOptions.autoBreadcrumbs = autoBreadcrumbs; -function uuid4$1() { - var crypto = _window$3.crypto || _window$3.msCrypto; + var instrumentDefaults = { + tryCatch: true + }; - if (!isUndefined$1(crypto) && crypto.getRandomValues) { - // Use window.crypto API if available - // eslint-disable-next-line no-undef - var arr = new Uint16Array(8); - crypto.getRandomValues(arr); // set 4 in byte 7 + var instrument = globalOptions.instrument; + if ({}.toString.call(instrument) === '[object Object]') { + instrument = objectMerge(instrumentDefaults, instrument); + } else if (instrument !== false) { + instrument = instrumentDefaults; + } + globalOptions.instrument = instrument; - arr[3] = arr[3] & 0xfff | 0x4000; // set 2 most significant bits of byte 9 to '10' + TraceKit.collectWindowErrors = !!globalOptions.collectWindowErrors; - arr[4] = arr[4] & 0x3fff | 0x8000; + // return for chaining + return self; + }, - var pad = function pad(num) { - var v = num.toString(16); + /* + * Installs a global window.onerror error handler + * to capture and report uncaught exceptions. + * At this point, install() is required to be called due + * to the way TraceKit is set up. + * + * @return {Raven} + */ + install: function() { + var self = this; + if (self.isSetup() && !self._isRavenInstalled) { + TraceKit.report.subscribe(function() { + self._handleOnErrorStackInfo.apply(self, arguments); + }); - while (v.length < 4) { - v = '0' + v; + if (self._globalOptions.captureUnhandledRejections) { + self._attachPromiseRejectionHandler(); } - return v; - }; - - return pad(arr[0]) + pad(arr[1]) + pad(arr[2]) + pad(arr[3]) + pad(arr[4]) + pad(arr[5]) + pad(arr[6]) + pad(arr[7]); - } else { - // http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/2117523#2117523 - return 'xxxxxxxxxxxx4xxxyxxxxxxxxxxxxxxx'.replace(/[xy]/g, function (c) { - var r = Math.random() * 16 | 0, - v = c === 'x' ? r : r & 0x3 | 0x8; - return v.toString(16); - }); - } -} -/** - * Given a child DOM element, returns a query-selector statement describing that - * and its ancestors - * e.g. [HTMLElement] => body > div > input#foo.btn[name=baz] - * @param elem - * @returns {string} - */ + self._patchFunctionToString(); + if (self._globalOptions.instrument && self._globalOptions.instrument.tryCatch) { + self._instrumentTryCatch(); + } -function htmlTreeAsString$1(elem) { - /* eslint no-extra-parens:0*/ - var MAX_TRAVERSE_HEIGHT = 5, - MAX_OUTPUT_LEN = 80, - out = [], - height = 0, - len = 0, - separator = ' > ', - sepLength = separator.length, - nextStr; + if (self._globalOptions.autoBreadcrumbs) self._instrumentBreadcrumbs(); - while (elem && height++ < MAX_TRAVERSE_HEIGHT) { - nextStr = htmlElementAsString(elem); // bail out if - // - nextStr is the 'html' element - // - the length of the string that would be created exceeds MAX_OUTPUT_LEN - // (ignore this limit if we are on the first iteration) + // Install all of the plugins + self._drainPlugins(); - if (nextStr === 'html' || height > 1 && len + out.length * sepLength + nextStr.length >= MAX_OUTPUT_LEN) { - break; + self._isRavenInstalled = true; } - out.push(nextStr); - len += nextStr.length; - elem = elem.parentNode; - } + Error.stackTraceLimit = self._globalOptions.stackTraceLimit; + return this; + }, - return out.reverse().join(separator); -} -/** - * Returns a simple, query-selector representation of a DOM element - * e.g. [HTMLElement] => input#foo.btn[name=baz] - * @param HTMLElement - * @returns {string} - */ + /* + * Set the DSN (can be called multiple time unlike config) + * + * @param {string} dsn The public Sentry DSN + */ + setDSN: function(dsn) { + var self = this, + uri = self._parseDSN(dsn), + lastSlash = uri.path.lastIndexOf('/'), + path = uri.path.substr(1, lastSlash); + self._dsn = dsn; + self._globalKey = uri.user; + self._globalSecret = uri.pass && uri.pass.substr(1); + self._globalProject = uri.path.substr(lastSlash + 1); -function htmlElementAsString(elem) { - var out = [], - className, - classes, - key, - attr, - i; + self._globalServer = self._getGlobalServer(uri); - if (!elem || !elem.tagName) { - return ''; - } + self._globalEndpoint = + self._globalServer + '/' + path + 'api/' + self._globalProject + '/store/'; - out.push(elem.tagName.toLowerCase()); + // Reset backoff state since we may be pointing at a + // new project/server + this._resetBackoff(); + }, - if (elem.id) { - out.push('#' + elem.id); - } + /* + * Wrap code within a context so Raven can capture errors + * reliably across domains that is executed immediately. + * + * @param {object} options A specific set of options for this context [optional] + * @param {function} func The callback to be immediately executed within the context + * @param {array} args An array of arguments to be called with the callback [optional] + */ + context: function(options, func, args) { + if (isFunction(options)) { + args = func || []; + func = options; + options = undefined; + } - className = elem.className; + return this.wrap(options, func).apply(this, args); + }, - if (className && isString$1(className)) { - classes = className.split(/\s+/); + /* + * Wrap code within a context and returns back a new function to be executed + * + * @param {object} options A specific set of options for this context [optional] + * @param {function} func The function to be wrapped in a new context + * @param {function} func A function to call before the try/catch wrapper [optional, private] + * @return {function} The newly wrapped functions with a context + */ + wrap: function(options, func, _before) { + var self = this; + // 1 argument has been passed, and it's not a function + // so just return it + if (isUndefined(func) && !isFunction(options)) { + return options; + } - for (i = 0; i < classes.length; i++) { - out.push('.' + classes[i]); + // options is optional + if (isFunction(options)) { + func = options; + options = undefined; } - } - var attrWhitelist = ['type', 'name', 'title', 'alt']; + // At this point, we've passed along 2 arguments, and the second one + // is not a function either, so we'll just return the second argument. + if (!isFunction(func)) { + return func; + } - for (i = 0; i < attrWhitelist.length; i++) { - key = attrWhitelist[i]; - attr = elem.getAttribute(key); + // We don't wanna wrap it twice! + try { + if (func.__raven__) { + return func; + } - if (attr) { - out.push('[' + key + '="' + attr + '"]'); + // If this has already been wrapped in the past, return that + if (func.__raven_wrapper__) { + return func.__raven_wrapper__; + } + } catch (e) { + // Just accessing custom props in some Selenium environments + // can cause a "Permission denied" exception (see raven-js#495). + // Bail on wrapping and return the function as-is (defers to window.onerror). + return func; } - } - return out.join(''); -} -/** - * Returns true if either a OR b is truthy, but not both - */ + function wrapped() { + var args = [], + i = arguments.length, + deep = !options || (options && options.deep !== false); + if (_before && isFunction(_before)) { + _before.apply(this, arguments); + } -function isOnlyOneTruthy(a, b) { - return !!(!!a ^ !!b); -} -/** - * Returns true if both parameters are undefined - */ + // Recursively wrap all of a function's arguments that are + // functions themselves. + while (i--) args[i] = deep ? self.wrap(options, arguments[i]) : arguments[i]; + try { + // Attempt to invoke user-land function + // NOTE: If you are a Sentry user, and you are seeing this stack frame, it + // means Raven caught an error invoking your application code. This is + // expected behavior and NOT indicative of a bug with Raven.js. + return func.apply(this, args); + } catch (e) { + self._ignoreNextOnError(); + self.captureException(e, options); + throw e; + } + } -function isBothUndefined(a, b) { - return isUndefined$1(a) && isUndefined$1(b); -} -/** - * Returns true if the two input exception interfaces have the same content - */ + // copy over properties of the old function + for (var property in func) { + if (hasKey(func, property)) { + wrapped[property] = func[property]; + } + } + wrapped.prototype = func.prototype; + func.__raven_wrapper__ = wrapped; + // Signal that this function has been wrapped/filled already + // for both debugging and to prevent it to being wrapped/filled twice + wrapped.__raven__ = true; + wrapped.__orig__ = func; -function isSameException$1(ex1, ex2) { - if (isOnlyOneTruthy(ex1, ex2)) return false; - ex1 = ex1.values[0]; - ex2 = ex2.values[0]; - if (ex1.type !== ex2.type || ex1.value !== ex2.value) return false; // in case both stacktraces are undefined, we can't decide so default to false + return wrapped; + }, - if (isBothUndefined(ex1.stacktrace, ex2.stacktrace)) return false; - return isSameStacktrace$1(ex1.stacktrace, ex2.stacktrace); -} -/** - * Returns true if the two input stack trace interfaces have the same content - */ + /** + * Uninstalls the global error handler. + * + * @return {Raven} + */ + uninstall: function() { + TraceKit.report.uninstall(); + this._detachPromiseRejectionHandler(); + this._unpatchFunctionToString(); + this._restoreBuiltIns(); + this._restoreConsole(); -function isSameStacktrace$1(stack1, stack2) { - if (isOnlyOneTruthy(stack1, stack2)) return false; - var frames1 = stack1.frames; - var frames2 = stack2.frames; // Exit early if frame count differs + Error.stackTraceLimit = this._originalErrorStackTraceLimit; + this._isRavenInstalled = false; - if (frames1.length !== frames2.length) return false; // Iterate through every frame; bail out if anything differs + return this; + }, - var a, b; + /** + * Callback used for `unhandledrejection` event + * + * @param {PromiseRejectionEvent} event An object containing + * promise: the Promise that was rejected + * reason: the value with which the Promise was rejected + * @return void + */ + _promiseRejectionHandler: function(event) { + this._logDebug('debug', 'Raven caught unhandled promise rejection:', event); + this.captureException(event.reason, { + extra: { + unhandledPromiseRejection: true + } + }); + }, - for (var i = 0; i < frames1.length; i++) { - a = frames1[i]; - b = frames2[i]; - if (a.filename !== b.filename || a.lineno !== b.lineno || a.colno !== b.colno || a['function'] !== b['function']) return false; - } + /** + * Installs the global promise rejection handler. + * + * @return {raven} + */ + _attachPromiseRejectionHandler: function() { + this._promiseRejectionHandler = this._promiseRejectionHandler.bind(this); + _window.addEventListener && + _window.addEventListener('unhandledrejection', this._promiseRejectionHandler); + return this; + }, - return true; -} -/** - * Polyfill a method - * @param obj object e.g. `document` - * @param name method name present on object e.g. `addEventListener` - * @param replacement replacement function - * @param track {optional} record instrumentation to an array - */ + /** + * Uninstalls the global promise rejection handler. + * + * @return {raven} + */ + _detachPromiseRejectionHandler: function() { + _window.removeEventListener && + _window.removeEventListener('unhandledrejection', this._promiseRejectionHandler); + return this; + }, + /** + * Manually capture an exception and send it over to Sentry + * + * @param {error} ex An exception to be logged + * @param {object} options A specific set of options for this error [optional] + * @return {Raven} + */ + captureException: function(ex, options) { + options = objectMerge({trimHeadFrames: 0}, options ? options : {}); + + if (isErrorEvent(ex) && ex.error) { + // If it is an ErrorEvent with `error` property, extract it to get actual Error + ex = ex.error; + } else if (isError(ex)) { + // we have a real Error object + ex = ex; + } else if (isPlainObject(ex)) { + // If it is plain Object, serialize it manually and extract options + // This will allow us to group events based on top-level keys + // which is much better than creating new group when any key/value change + options = this._getCaptureExceptionOptionsFromPlainObject(options, ex); + ex = new Error(options.message); + } else { + // If none of previous checks were valid, then it means that + // it's not a plain Object + // it's not a valid ErrorEvent (one with an error property) + // it's not an Error + // So bail out and capture it as a simple message: + return this.captureMessage( + ex, + objectMerge(options, { + stacktrace: true, // if we fall back to captureMessage, default to attempting a new trace + trimHeadFrames: options.trimHeadFrames + 1 + }) + ); + } + + // Store the raw exception object for potential debugging and introspection + this._lastCapturedException = ex; + + // TraceKit.report will re-raise any exception passed to it, + // which means you have to wrap it in try/catch. Instead, we + // can wrap it here and only re-raise if TraceKit.report + // raises an exception different from the one we asked to + // report on. + try { + var stack = TraceKit.computeStackTrace(ex); + this._handleStackInfo(stack, options); + } catch (ex1) { + if (ex !== ex1) { + throw ex1; + } + } -function fill$1(obj, name, replacement, track) { - var orig = obj[name]; - obj[name] = replacement(orig); - obj[name].__raven__ = true; - obj[name].__orig__ = orig; + return this; + }, - if (track) { - track.push([obj, name, orig]); - } -} -/** - * Join values in array - * @param input array of values to be joined together - * @param delimiter string to be placed in-between values - * @returns {string} - */ + _getCaptureExceptionOptionsFromPlainObject: function(currentOptions, ex) { + var exKeys = Object.keys(ex).sort(); + var options = objectMerge(currentOptions, { + message: + 'Non-Error exception captured with keys: ' + serializeKeysForMessage(exKeys), + fingerprint: [md5(exKeys)], + extra: currentOptions.extra || {} + }); + options.extra.__serialized__ = serializeException(ex); + return options; + }, -function safeJoin(input, delimiter) { - if (!isArray$1(input)) return ''; - var output = []; + /* + * Manually send a message to Sentry + * + * @param {string} msg A plain message to be captured in Sentry + * @param {object} options A specific set of options for this message [optional] + * @return {Raven} + */ + captureMessage: function(msg, options) { + // config() automagically converts ignoreErrors from a list to a RegExp so we need to test for an + // early call; we'll error on the side of logging anything called before configuration since it's + // probably something you should see: + if ( + !!this._globalOptions.ignoreErrors.test && + this._globalOptions.ignoreErrors.test(msg) + ) { + return; + } - for (var i = 0; i < input.length; i++) { + options = options || {}; + msg = msg + ''; // Make sure it's actually a string + + var data = objectMerge( + { + message: msg + }, + options + ); + + var ex; + // Generate a "synthetic" stack trace from this point. + // NOTE: If you are a Sentry user, and you are seeing this stack frame, it is NOT indicative + // of a bug with Raven.js. Sentry generates synthetic traces either by configuration, + // or if it catches a thrown object without a "stack" property. try { - output.push(String(input[i])); - } catch (e) { - output.push('[value cannot be serialized]'); + throw new Error(msg); + } catch (ex1) { + ex = ex1; } - } - return output.join(delimiter); -} - -var utils = { - isObject: isObject$1, - isError: isError$1, - isErrorEvent: isErrorEvent$1, - isUndefined: isUndefined$1, - isFunction: isFunction$1, - isPlainObject: isPlainObject, - isString: isString$1, - isArray: isArray$1, - isEmptyObject: isEmptyObject$1, - supportsErrorEvent: supportsErrorEvent, - supportsFetch: supportsFetch$1, - wrappedCallback: wrappedCallback, - each: each$1, - objectMerge: objectMerge$1, - truncate: truncate$1, - objectFrozen: objectFrozen$1, - hasKey: hasKey$1, - joinRegExp: joinRegExp$1, - urlencode: urlencode$1, - uuid4: uuid4$1, - htmlTreeAsString: htmlTreeAsString$1, - htmlElementAsString: htmlElementAsString, - isSameException: isSameException$1, - isSameStacktrace: isSameStacktrace$1, - parseUrl: parseUrl$1, - fill: fill$1, - safeJoin: safeJoin -}; + // null exception name so `Error` isn't prefixed to msg + ex.name = null; + var stack = TraceKit.computeStackTrace(ex); -/* - TraceKit - Cross brower stack traces + // stack[0] is `throw new Error(msg)` call itself, we are interested in the frame that was just before that, stack[1] + var initialCall = isArray(stack.stack) && stack.stack[1]; - This was originally forked from github.com/occ/TraceKit, but has since been - largely re-written and is now maintained as part of raven-js. Tests for - this are in test/vendor. + // if stack[1] is `Raven.captureException`, it means that someone passed a string to it and we redirected that call + // to be handled by `captureMessage`, thus `initialCall` is the 3rd one, not 2nd + // initialCall => captureException(string) => captureMessage(string) + if (initialCall && initialCall.func === 'Raven.captureException') { + initialCall = stack.stack[2]; + } - MIT license -*/ + var fileurl = (initialCall && initialCall.url) || ''; -var TraceKit = { - collectWindowErrors: true, - debug: false -}; // This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) + if ( + !!this._globalOptions.ignoreUrls.test && + this._globalOptions.ignoreUrls.test(fileurl) + ) { + return; + } -var _window$2 = typeof window !== 'undefined' ? window : typeof commonjsGlobal !== 'undefined' ? commonjsGlobal : typeof self !== 'undefined' ? self : {}; // global reference to slice + if ( + !!this._globalOptions.whitelistUrls.test && + !this._globalOptions.whitelistUrls.test(fileurl) + ) { + return; + } + if (this._globalOptions.stacktrace || (options && options.stacktrace)) { + // fingerprint on msg, not stack trace (legacy behavior, could be revisited) + data.fingerprint = data.fingerprint == null ? msg : data.fingerprint; -var _slice = [].slice; -var UNKNOWN_FUNCTION = '?'; // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error#Error_types + options = objectMerge( + { + trimHeadFrames: 0 + }, + options + ); + // Since we know this is a synthetic trace, the top frame (this function call) + // MUST be from Raven.js, so mark it for trimming + // We add to the trim counter so that callers can choose to trim extra frames, such + // as utility functions. + options.trimHeadFrames += 1; -var ERROR_TYPES_RE = /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/; + var frames = this._prepareFrames(stack, options); + data.stacktrace = { + // Sentry expects frames oldest to newest + frames: frames.reverse() + }; + } -function getLocationHref() { - if (typeof document === 'undefined' || document.location == null) return ''; - return document.location.href; -} -/** - * TraceKit.report: cross-browser processing of unhandled exceptions - * - * Syntax: - * TraceKit.report.subscribe(function(stackInfo) { ... }) - * TraceKit.report.unsubscribe(function(stackInfo) { ... }) - * TraceKit.report(exception) - * try { ...code... } catch(ex) { TraceKit.report(ex); } - * - * Supports: - * - Firefox: full stack trace with line numbers, plus column number - * on top frame; column number is not guaranteed - * - Opera: full stack trace with line and column numbers - * - Chrome: full stack trace with line and column numbers - * - Safari: line and column number for the top frame only; some frames - * may be missing, and column number is not guaranteed - * - IE: line and column number for the top frame only; some frames - * may be missing, and column number is not guaranteed - * - * In theory, TraceKit should work on all of the following versions: - * - IE5.5+ (only 8.0 tested) - * - Firefox 0.9+ (only 3.5+ tested) - * - Opera 7+ (only 10.50 tested; versions 9 and earlier may require - * Exceptions Have Stacktrace to be enabled in opera:config) - * - Safari 3+ (only 4+ tested) - * - Chrome 1+ (only 5+ tested) - * - Konqueror 3.5+ (untested) - * - * Requires TraceKit.computeStackTrace. - * - * Tries to catch all unhandled exceptions and report them to the - * subscribed handlers. Please note that TraceKit.report will rethrow the - * exception. This is REQUIRED in order to get a useful stack trace in IE. - * If the exception does not reach the top of the browser, you will only - * get a stack trace from the point where TraceKit.report was called. - * - * Handlers receive a stackInfo object as described in the - * TraceKit.computeStackTrace docs. - */ + // Make sure that fingerprint is always wrapped in an array + if (data.fingerprint) { + data.fingerprint = isArray(data.fingerprint) + ? data.fingerprint + : [data.fingerprint]; + } + // Fire away! + this._send(data); -TraceKit.report = function reportModuleWrapper() { - var handlers = [], - lastArgs = null, - lastException = null, - lastExceptionStack = null; - /** - * Add a crash handler. - * @param {Function} handler - */ + return this; + }, - function subscribe(handler) { - installGlobalHandler(); - handlers.push(handler); - } - /** - * Remove a crash handler. - * @param {Function} handler - */ + captureBreadcrumb: function(obj) { + var crumb = objectMerge( + { + timestamp: now() / 1000 + }, + obj + ); + if (isFunction(this._globalOptions.breadcrumbCallback)) { + var result = this._globalOptions.breadcrumbCallback(crumb); - function unsubscribe(handler) { - for (var i = handlers.length - 1; i >= 0; --i) { - if (handlers[i] === handler) { - handlers.splice(i, 1); + if (isObject(result) && !isEmptyObject(result)) { + crumb = result; + } else if (result === false) { + return this; } } - } - /** - * Remove all crash handlers. - */ - - - function unsubscribeAll() { - uninstallGlobalHandler(); - handlers = []; - } - /** - * Dispatch stack information to all handlers. - * @param {Object.} stack - */ + this._breadcrumbs.push(crumb); + if (this._breadcrumbs.length > this._globalOptions.maxBreadcrumbs) { + this._breadcrumbs.shift(); + } + return this; + }, - function notifyHandlers(stack, isWindowError) { - var exception = null; + addPlugin: function(plugin /*arg1, arg2, ... argN*/) { + var pluginArgs = [].slice.call(arguments, 1); - if (isWindowError && !TraceKit.collectWindowErrors) { - return; + this._plugins.push([plugin, pluginArgs]); + if (this._isRavenInstalled) { + this._drainPlugins(); } - for (var i in handlers) { - if (handlers.hasOwnProperty(i)) { - try { - handlers[i].apply(null, [stack].concat(_slice.call(arguments, 2))); - } catch (inner) { - exception = inner; - } - } - } - - if (exception) { - throw exception; - } - } + return this; + }, - var _oldOnerrorHandler, _onErrorHandlerInstalled; - /** - * Ensures all global unhandled exceptions are recorded. - * Supported by Gecko and IE. - * @param {string} msg Error message. - * @param {string} url URL of script that generated the exception. - * @param {(number|string)} lineNo The line number at which the error - * occurred. - * @param {?(number|string)} colNo The column number at which the error - * occurred. - * @param {?Error} ex The actual Error object. + /* + * Set/clear a user to be sent along with the payload. + * + * @param {object} user An object representing user data [optional] + * @return {Raven} */ + setUserContext: function(user) { + // Intentionally do not merge here since that's an unexpected behavior. + this._globalContext.user = user; + return this; + }, - function traceKitWindowOnError(msg, url, lineNo, colNo, ex) { - var stack = null; // If 'ex' is ErrorEvent, get real Error from inside + /* + * Merge extra attributes to be sent along with the payload. + * + * @param {object} extra An object representing extra data [optional] + * @return {Raven} + */ + setExtraContext: function(extra) { + this._mergeContext('extra', extra); - var exception = utils.isErrorEvent(ex) ? ex.error : ex; // If 'msg' is ErrorEvent, get real message from inside + return this; + }, - var message = utils.isErrorEvent(msg) ? msg.message : msg; + /* + * Merge tags to be sent along with the payload. + * + * @param {object} tags An object representing tags [optional] + * @return {Raven} + */ + setTagsContext: function(tags) { + this._mergeContext('tags', tags); - if (lastExceptionStack) { - TraceKit.computeStackTrace.augmentStackTraceWithInitialElement(lastExceptionStack, url, lineNo, message); - processLastException(); - } else if (exception && utils.isError(exception)) { - // non-string `exception` arg; attempt to extract stack trace - // New chrome and blink send along a real error object - // Let's just report that like a normal error. - // See: https://mikewest.org/2013/08/debugging-runtime-errors-with-window-onerror - stack = TraceKit.computeStackTrace(exception); - notifyHandlers(stack, true); - } else { - var location = { - url: url, - line: lineNo, - column: colNo - }; - var name = undefined; - var groups; + return this; + }, - if ({}.toString.call(message) === '[object String]') { - var groups = message.match(ERROR_TYPES_RE); + /* + * Clear all of the context. + * + * @return {Raven} + */ + clearContext: function() { + this._globalContext = {}; - if (groups) { - name = groups[1]; - message = groups[2]; - } - } + return this; + }, - location.func = UNKNOWN_FUNCTION; - stack = { - name: name, - message: message, - url: getLocationHref(), - stack: [location] - }; - notifyHandlers(stack, true); - } + /* + * Get a copy of the current context. This cannot be mutated. + * + * @return {object} copy of context + */ + getContext: function() { + // lol javascript + return JSON.parse(stringify(this._globalContext)); + }, - if (_oldOnerrorHandler) { - return _oldOnerrorHandler.apply(this, arguments); - } + /* + * Set environment of application + * + * @param {string} environment Typically something like 'production'. + * @return {Raven} + */ + setEnvironment: function(environment) { + this._globalOptions.environment = environment; - return false; - } + return this; + }, - function installGlobalHandler() { - if (_onErrorHandlerInstalled) { - return; - } + /* + * Set release version of application + * + * @param {string} release Typically something like a git SHA to identify version + * @return {Raven} + */ + setRelease: function(release) { + this._globalOptions.release = release; - _oldOnerrorHandler = _window$2.onerror; - _window$2.onerror = traceKitWindowOnError; - _onErrorHandlerInstalled = true; - } + return this; + }, - function uninstallGlobalHandler() { - if (!_onErrorHandlerInstalled) { - return; - } + /* + * Set the dataCallback option + * + * @param {function} callback The callback to run which allows the + * data blob to be mutated before sending + * @return {Raven} + */ + setDataCallback: function(callback) { + var original = this._globalOptions.dataCallback; + this._globalOptions.dataCallback = keepOriginalCallback(original, callback); + return this; + }, - _window$2.onerror = _oldOnerrorHandler; - _onErrorHandlerInstalled = false; - _oldOnerrorHandler = undefined; - } + /* + * Set the breadcrumbCallback option + * + * @param {function} callback The callback to run which allows filtering + * or mutating breadcrumbs + * @return {Raven} + */ + setBreadcrumbCallback: function(callback) { + var original = this._globalOptions.breadcrumbCallback; + this._globalOptions.breadcrumbCallback = keepOriginalCallback(original, callback); + return this; + }, - function processLastException() { - var _lastExceptionStack = lastExceptionStack, - _lastArgs = lastArgs; - lastArgs = null; - lastExceptionStack = null; - lastException = null; - notifyHandlers.apply(null, [_lastExceptionStack, false].concat(_lastArgs)); - } - /** - * Reports an unhandled Error to TraceKit. - * @param {Error} ex - * @param {?boolean} rethrow If false, do not re-throw the exception. - * Only used for window.onerror to not cause an infinite loop of - * rethrowing. + /* + * Set the shouldSendCallback option + * + * @param {function} callback The callback to run which allows + * introspecting the blob before sending + * @return {Raven} */ + setShouldSendCallback: function(callback) { + var original = this._globalOptions.shouldSendCallback; + this._globalOptions.shouldSendCallback = keepOriginalCallback(original, callback); + return this; + }, + /** + * Override the default HTTP transport mechanism that transmits data + * to the Sentry server. + * + * @param {function} transport Function invoked instead of the default + * `makeRequest` handler. + * + * @return {Raven} + */ + setTransport: function(transport) { + this._globalOptions.transport = transport; - function report(ex, rethrow) { - var args = _slice.call(arguments, 1); + return this; + }, - if (lastExceptionStack) { - if (lastException === ex) { - return; // already caught by an inner catch block, ignore - } else { - processLastException(); + /* + * Get the latest raw exception that was captured by Raven. + * + * @return {error} + */ + lastException: function() { + return this._lastCapturedException; + }, + + /* + * Get the last event id + * + * @return {string} + */ + lastEventId: function() { + return this._lastEventId; + }, + + /* + * Determine if Raven is setup and ready to go. + * + * @return {boolean} + */ + isSetup: function() { + if (!this._hasJSON) return false; // needs JSON support + if (!this._globalServer) { + if (!this.ravenNotConfiguredError) { + this.ravenNotConfiguredError = true; + this._logDebug('error', 'Error: Raven has not been configured.'); } + return false; } + return true; + }, - var stack = TraceKit.computeStackTrace(ex); - lastExceptionStack = stack; - lastException = ex; - lastArgs = args; // If the stack trace is incomplete, wait for 2 seconds for - // slow slow IE to see if onerror occurs or not before reporting - // this exception; otherwise, we will end up with an incomplete - // stack trace + afterLoad: function() { + // TODO: remove window dependence? - setTimeout(function () { - if (lastException === ex) { - processLastException(); - } - }, stack.incomplete ? 2000 : 0); + // Attempt to initialize Raven on load + var RavenConfig = _window.RavenConfig; + if (RavenConfig) { + this.config(RavenConfig.dsn, RavenConfig.config).install(); + } + }, - if (rethrow !== false) { - throw ex; // re-throw to propagate to the top level (and cause window.onerror) + showReportDialog: function(options) { + if ( + !_document // doesn't work without a document (React native) + ) + return; + + options = options || {}; + + var lastEventId = options.eventId || this.lastEventId(); + if (!lastEventId) { + throw new RavenConfigError('Missing eventId'); } - } - report.subscribe = subscribe; - report.unsubscribe = unsubscribe; - report.uninstall = unsubscribeAll; - return report; -}(); -/** - * TraceKit.computeStackTrace: cross-browser stack traces in JavaScript - * - * Syntax: - * s = TraceKit.computeStackTrace(exception) // consider using TraceKit.report instead (see below) - * Returns: - * s.name - exception name - * s.message - exception message - * s.stack[i].url - JavaScript or HTML file URL - * s.stack[i].func - function name, or empty for anonymous functions (if guessing did not work) - * s.stack[i].args - arguments passed to the function, if known - * s.stack[i].line - line number, if known - * s.stack[i].column - column number, if known - * - * Supports: - * - Firefox: full stack trace with line numbers and unreliable column - * number on top frame - * - Opera 10: full stack trace with line and column numbers - * - Opera 9-: full stack trace with line numbers - * - Chrome: full stack trace with line and column numbers - * - Safari: line and column number for the topmost stacktrace element - * only - * - IE: no line numbers whatsoever - * - * Tries to guess names of anonymous functions by looking for assignments - * in the source code. In IE and Safari, we have to guess source file names - * by searching for function bodies inside all page scripts. This will not - * work for scripts that are loaded cross-domain. - * Here be dragons: some function names may be guessed incorrectly, and - * duplicate functions may be mismatched. - * - * TraceKit.computeStackTrace should only be used for tracing purposes. - * Logging of unhandled exceptions should be done with TraceKit.report, - * which builds on top of TraceKit.computeStackTrace and provides better - * IE support by utilizing the window.onerror event to retrieve information - * about the top of the stack. - * - * Note: In IE and Safari, no stack trace is recorded on the Error object, - * so computeStackTrace instead walks its *own* chain of callers. - * This means that: - * * in Safari, some methods may be missing from the stack trace; - * * in IE, the topmost function in the stack trace will always be the - * caller of computeStackTrace. - * - * This is okay for tracing (because you are likely to be calling - * computeStackTrace from the function you want to be the topmost element - * of the stack trace anyway), but not okay for logging unhandled - * exceptions (because your catch block will likely be far away from the - * inner function that actually caused the exception). - * - */ + var dsn = options.dsn || this._dsn; + if (!dsn) { + throw new RavenConfigError('Missing DSN'); + } + var encode = encodeURIComponent; + var qs = ''; + qs += '?eventId=' + encode(lastEventId); + qs += '&dsn=' + encode(dsn); -TraceKit.computeStackTrace = function computeStackTraceWrapper() { - // Contents of Exception in various browsers. - // - // SAFARI: - // ex.message = Can't find variable: qq - // ex.line = 59 - // ex.sourceId = 580238192 - // ex.sourceURL = http://... - // ex.expressionBeginOffset = 96 - // ex.expressionCaretOffset = 98 - // ex.expressionEndOffset = 98 - // ex.name = ReferenceError - // - // FIREFOX: - // ex.message = qq is not defined - // ex.fileName = http://... - // ex.lineNumber = 59 - // ex.columnNumber = 69 - // ex.stack = ...stack trace... (see the example below) - // ex.name = ReferenceError - // - // CHROME: - // ex.message = qq is not defined - // ex.name = ReferenceError - // ex.type = not_defined - // ex.arguments = ['aa'] - // ex.stack = ...stack trace... - // - // INTERNET EXPLORER: - // ex.message = ... - // ex.name = ReferenceError - // - // OPERA: - // ex.message = ...message... (see the example below) - // ex.name = ReferenceError - // ex.opera#sourceloc = 11 (pretty much useless, duplicates the info in ex.message) - // ex.stacktrace = n/a; see 'opera:config#UserPrefs|Exceptions Have Stacktrace' + var user = options.user || this._globalContext.user; + if (user) { + if (user.name) qs += '&name=' + encode(user.name); + if (user.email) qs += '&email=' + encode(user.email); + } - /** - * Computes stack trace information from the stack property. - * Chrome and Gecko use this property. - * @param {Error} ex - * @return {?Object.} Stack trace information. - */ - function computeStackTraceFromStackProp(ex) { - if (typeof ex.stack === 'undefined' || !ex.stack) return; - var chrome = /^\s*at (.*?) ?\(((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i, - gecko = /^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|\[native).*?|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i, - winjs = /^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i, - // Used to additionally parse URL/line/column from eval frames - geckoEval = /(\S+) line (\d+)(?: > eval line \d+)* > eval/i, - chromeEval = /\((\S*)(?::(\d+))(?::(\d+))\)/, - lines = ex.stack.split('\n'), - stack = [], - submatch, - parts, - element, - reference = /^(.*) is undefined$/.exec(ex.message); + var globalServer = this._getGlobalServer(this._parseDSN(dsn)); - for (var i = 0, j = lines.length; i < j; ++i) { - if (parts = chrome.exec(lines[i])) { - var isNative = parts[2] && parts[2].indexOf('native') === 0; // start of line + var script = _document.createElement('script'); + script.async = true; + script.src = globalServer + '/api/embed/error-page/' + qs; + (_document.head || _document.body).appendChild(script); + }, - var isEval = parts[2] && parts[2].indexOf('eval') === 0; // start of line + /**** Private functions ****/ + _ignoreNextOnError: function() { + var self = this; + this._ignoreOnError += 1; + setTimeout(function() { + // onerror should trigger before setTimeout + self._ignoreOnError -= 1; + }); + }, - if (isEval && (submatch = chromeEval.exec(parts[2]))) { - // throw out eval line/column and use top-most line/column number - parts[2] = submatch[1]; // url + _triggerEvent: function(eventType, options) { + // NOTE: `event` is a native browser thing, so let's avoid conflicting wiht it + var evt, key; - parts[3] = submatch[2]; // line + if (!this._hasDocument) return; - parts[4] = submatch[3]; // column - } + options = options || {}; - element = { - url: !isNative ? parts[2] : null, - func: parts[1] || UNKNOWN_FUNCTION, - args: isNative ? [parts[2]] : [], - line: parts[3] ? +parts[3] : null, - column: parts[4] ? +parts[4] : null - }; - } else if (parts = winjs.exec(lines[i])) { - element = { - url: parts[2], - func: parts[1] || UNKNOWN_FUNCTION, - args: [], - line: +parts[3], - column: parts[4] ? +parts[4] : null - }; - } else if (parts = gecko.exec(lines[i])) { - var isEval = parts[3] && parts[3].indexOf(' > eval') > -1; + eventType = 'raven' + eventType.substr(0, 1).toUpperCase() + eventType.substr(1); - if (isEval && (submatch = geckoEval.exec(parts[3]))) { - // throw out eval line/column and use top-most line number - parts[3] = submatch[1]; - parts[4] = submatch[2]; - parts[5] = null; // no column when eval - } else if (i === 0 && !parts[5] && typeof ex.columnNumber !== 'undefined') { - // FireFox uses this awesome columnNumber property for its top frame - // Also note, Firefox's column number is 0-based and everything else expects 1-based, - // so adding 1 - // NOTE: this hack doesn't work if top-most frame is eval - stack[0].column = ex.columnNumber + 1; - } + if (_document.createEvent) { + evt = _document.createEvent('HTMLEvents'); + evt.initEvent(eventType, true, true); + } else { + evt = _document.createEventObject(); + evt.eventType = eventType; + } - element = { - url: parts[3], - func: parts[1] || UNKNOWN_FUNCTION, - args: parts[2] ? parts[2].split(',') : [], - line: parts[4] ? +parts[4] : null, - column: parts[5] ? +parts[5] : null - }; - } else { - continue; + for (key in options) + if (hasKey(options, key)) { + evt[key] = options[key]; } - if (!element.func && element.line) { - element.func = UNKNOWN_FUNCTION; + if (_document.createEvent) { + // IE9 if standards + _document.dispatchEvent(evt); + } else { + // IE8 regardless of Quirks or Standards + // IE9 if quirks + try { + _document.fireEvent('on' + evt.eventType.toLowerCase(), evt); + } catch (e) { + // Do nothing } - - stack.push(element); - } - - if (!stack.length) { - return null; } + }, - return { - name: ex.name, - message: ex.message, - url: getLocationHref(), - stack: stack - }; - } /** - * Adds information about the first frame to incomplete stack traces. - * Safari and IE require this to get complete data on the first frame. - * @param {Object.} stackInfo Stack trace information from - * one of the compute* methods. - * @param {string} url The URL of the script that caused an error. - * @param {(number|string)} lineNo The line number of the script that - * caused an error. - * @param {string=} message The error generated by the browser, which - * hopefully contains the name of the object that caused the error. - * @return {boolean} Whether or not the stack information was - * augmented. - */ - - - function augmentStackTraceWithInitialElement(stackInfo, url, lineNo, message) { - var initial = { - url: url, - line: lineNo - }; + * Wraps addEventListener to capture UI breadcrumbs + * @param evtName the event name (e.g. "click") + * @returns {Function} + * @private + */ + _breadcrumbEventHandler: function(evtName) { + var self = this; + return function(evt) { + // reset keypress timeout; e.g. triggering a 'click' after + // a 'keypress' will reset the keypress debounce so that a new + // set of keypresses can be recorded + self._keypressTimeout = null; - if (initial.url && initial.line) { - stackInfo.incomplete = false; + // It's possible this handler might trigger multiple times for the same + // event (e.g. event propagation through node ancestors). Ignore if we've + // already captured the event. + if (self._lastCapturedEvent === evt) return; - if (!initial.func) { - initial.func = UNKNOWN_FUNCTION; - } + self._lastCapturedEvent = evt; - if (stackInfo.stack.length > 0) { - if (stackInfo.stack[0].url === initial.url) { - if (stackInfo.stack[0].line === initial.line) { - return false; // already in stack trace - } else if (!stackInfo.stack[0].line && stackInfo.stack[0].func === initial.func) { - stackInfo.stack[0].line = initial.line; - return false; - } - } + // try/catch both: + // - accessing evt.target (see getsentry/raven-js#838, #768) + // - `htmlTreeAsString` because it's complex, and just accessing the DOM incorrectly + // can throw an exception in some circumstances. + var target; + try { + target = htmlTreeAsString(evt.target); + } catch (e) { + target = ''; } - stackInfo.stack.unshift(initial); - stackInfo.partial = true; - return true; - } else { - stackInfo.incomplete = true; - } + self.captureBreadcrumb({ + category: 'ui.' + evtName, // e.g. ui.click, ui.input + message: target + }); + }; + }, - return false; - } /** - * Computes stack trace information by walking the arguments.caller - * chain at the time the exception occurred. This will cause earlier - * frames to be missed but is the only way to get any stack trace in - * Safari and IE. The top frame is restored by - * {@link augmentStackTraceWithInitialElement}. - * @param {Error} ex - * @return {?Object.} Stack trace information. - */ - - - function computeStackTraceByWalkingCallerChain(ex, depth) { - var functionName = /function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i, - stack = [], - funcs = {}, - recursion = false, - parts, - item; + * Wraps addEventListener to capture keypress UI events + * @returns {Function} + * @private + */ + _keypressEventHandler: function() { + var self = this, + debounceDuration = 1000; // milliseconds - for (var curr = computeStackTraceByWalkingCallerChain.caller; curr && !recursion; curr = curr.caller) { - if (curr === computeStackTrace || curr === TraceKit.report) { - // console.log('skipping internal function'); - continue; + // TODO: if somehow user switches keypress target before + // debounce timeout is triggered, we will only capture + // a single breadcrumb from the FIRST target (acceptable?) + return function(evt) { + var target; + try { + target = evt.target; + } catch (e) { + // just accessing event properties can throw an exception in some rare circumstances + // see: https://github.com/getsentry/raven-js/issues/838 + return; } + var tagName = target && target.tagName; - item = { - url: null, - func: UNKNOWN_FUNCTION, - line: null, - column: null - }; + // only consider keypress events on actual input elements + // this will disregard keypresses targeting body (e.g. tabbing + // through elements, hotkeys, etc) + if ( + !tagName || + (tagName !== 'INPUT' && tagName !== 'TEXTAREA' && !target.isContentEditable) + ) + return; - if (curr.name) { - item.func = curr.name; - } else if (parts = functionName.exec(curr.toString())) { - item.func = parts[1]; + // record first keypress in a series, but ignore subsequent + // keypresses until debounce clears + var timeout = self._keypressTimeout; + if (!timeout) { + self._breadcrumbEventHandler('input')(evt); } + clearTimeout(timeout); + self._keypressTimeout = setTimeout(function() { + self._keypressTimeout = null; + }, debounceDuration); + }; + }, - if (typeof item.func === 'undefined') { - try { - item.func = parts.input.substring(0, parts.input.indexOf('{')); - } catch (e) {} - } + /** + * Captures a breadcrumb of type "navigation", normalizing input URLs + * @param to the originating URL + * @param from the target URL + * @private + */ + _captureUrlChange: function(from, to) { + var parsedLoc = parseUrl(this._location.href); + var parsedTo = parseUrl(to); + var parsedFrom = parseUrl(from); - if (funcs['' + curr]) { - recursion = true; - } else { - funcs['' + curr] = true; + // because onpopstate only tells you the "new" (to) value of location.href, and + // not the previous (from) value, we need to track the value of the current URL + // state ourselves + this._lastHref = to; + + // Use only the path component of the URL if the URL matches the current + // document (almost all the time when using pushState) + if (parsedLoc.protocol === parsedTo.protocol && parsedLoc.host === parsedTo.host) + to = parsedTo.relative; + if (parsedLoc.protocol === parsedFrom.protocol && parsedLoc.host === parsedFrom.host) + from = parsedFrom.relative; + + this.captureBreadcrumb({ + category: 'navigation', + data: { + to: to, + from: from } + }); + }, - stack.push(item); - } + _patchFunctionToString: function() { + var self = this; + self._originalFunctionToString = Function.prototype.toString; + // eslint-disable-next-line no-extend-native + Function.prototype.toString = function() { + if (typeof this === 'function' && this.__raven__) { + return self._originalFunctionToString.apply(this.__orig__, arguments); + } + return self._originalFunctionToString.apply(this, arguments); + }; + }, - if (depth) { - // console.log('depth is ' + depth); - // console.log('stack is ' + stack.length); - stack.splice(0, depth); + _unpatchFunctionToString: function() { + if (this._originalFunctionToString) { + // eslint-disable-next-line no-extend-native + Function.prototype.toString = this._originalFunctionToString; } + }, - var result = { - name: ex.name, - message: ex.message, - url: getLocationHref(), - stack: stack - }; - augmentStackTraceWithInitialElement(result, ex.sourceURL || ex.fileName, ex.line || ex.lineNumber, ex.message || ex.description); - return result; - } /** - * Computes a stack trace for an exception. - * @param {Error} ex - * @param {(string|number)=} depth - */ - + * Wrap timer functions and event targets to catch errors and provide + * better metadata. + */ + _instrumentTryCatch: function() { + var self = this; - function computeStackTrace(ex, depth) { - var stack = null; - depth = depth == null ? 0 : +depth; + var wrappedBuiltIns = self._wrappedBuiltIns; - try { - stack = computeStackTraceFromStackProp(ex); + function wrapTimeFn(orig) { + return function(fn, t) { + // preserve arity + // Make a copy of the arguments to prevent deoptimization + // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments + var args = new Array(arguments.length); + for (var i = 0; i < args.length; ++i) { + args[i] = arguments[i]; + } + var originalCallback = args[0]; + if (isFunction(originalCallback)) { + args[0] = self.wrap(originalCallback); + } - if (stack) { - return stack; - } - } catch (e) { - if (TraceKit.debug) { - throw e; - } + // IE < 9 doesn't support .call/.apply on setInterval/setTimeout, but it + // also supports only two arguments and doesn't care what this is, so we + // can just call the original function directly. + if (orig.apply) { + return orig.apply(this, args); + } else { + return orig(args[0], args[1]); + } + }; } - try { - stack = computeStackTraceByWalkingCallerChain(ex, depth + 1); + var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; - if (stack) { - return stack; - } - } catch (e) { - if (TraceKit.debug) { - throw e; + function wrapEventTarget(global) { + var proto = _window[global] && _window[global].prototype; + if (proto && proto.hasOwnProperty && proto.hasOwnProperty('addEventListener')) { + fill( + proto, + 'addEventListener', + function(orig) { + return function(evtName, fn, capture, secure) { + // preserve arity + try { + if (fn && fn.handleEvent) { + fn.handleEvent = self.wrap(fn.handleEvent); + } + } catch (err) { + // can sometimes get 'Permission denied to access property "handle Event' + } + + // More breadcrumb DOM capture ... done here and not in `_instrumentBreadcrumbs` + // so that we don't have more than one wrapper function + var before, clickHandler, keypressHandler; + + if ( + autoBreadcrumbs && + autoBreadcrumbs.dom && + (global === 'EventTarget' || global === 'Node') + ) { + // NOTE: generating multiple handlers per addEventListener invocation, should + // revisit and verify we can just use one (almost certainly) + clickHandler = self._breadcrumbEventHandler('click'); + keypressHandler = self._keypressEventHandler(); + before = function(evt) { + // need to intercept every DOM event in `before` argument, in case that + // same wrapped method is re-used for different events (e.g. mousemove THEN click) + // see #724 + if (!evt) return; + + var eventType; + try { + eventType = evt.type; + } catch (e) { + // just accessing event properties can throw an exception in some rare circumstances + // see: https://github.com/getsentry/raven-js/issues/838 + return; + } + if (eventType === 'click') return clickHandler(evt); + else if (eventType === 'keypress') return keypressHandler(evt); + }; + } + return orig.call( + this, + evtName, + self.wrap(fn, undefined, before), + capture, + secure + ); + }; + }, + wrappedBuiltIns + ); + fill( + proto, + 'removeEventListener', + function(orig) { + return function(evt, fn, capture, secure) { + try { + fn = fn && (fn.__raven_wrapper__ ? fn.__raven_wrapper__ : fn); + } catch (e) { + // ignore, accessing __raven_wrapper__ will throw in some Selenium environments + } + return orig.call(this, evt, fn, capture, secure); + }; + }, + wrappedBuiltIns + ); } } - return { - name: ex.name, - message: ex.message, - url: getLocationHref() - }; - } - - computeStackTrace.augmentStackTraceWithInitialElement = augmentStackTraceWithInitialElement; - computeStackTrace.computeStackTraceFromStackProp = computeStackTraceFromStackProp; - return computeStackTrace; -}(); - -var tracekit = TraceKit; - -var stringify_1 = createCommonjsModule(function (module, exports) { - /* - json-stringify-safe - Like JSON.stringify, but doesn't throw on circular references. - - Originally forked from https://github.com/isaacs/json-stringify-safe - version 5.0.1 on 3/8/2017 and modified to handle Errors serialization - and IE8 compatibility. Tests for this are in test/vendor. - - ISC license: https://github.com/isaacs/json-stringify-safe/blob/master/LICENSE - */ - exports = module.exports = stringify; - exports.getSerialize = serializer; - - function indexOf(haystack, needle) { - for (var i = 0; i < haystack.length; ++i) { - if (haystack[i] === needle) return i; - } - - return -1; - } + fill(_window, 'setTimeout', wrapTimeFn, wrappedBuiltIns); + fill(_window, 'setInterval', wrapTimeFn, wrappedBuiltIns); + if (_window.requestAnimationFrame) { + fill( + _window, + 'requestAnimationFrame', + function(orig) { + return function(cb) { + return orig(self.wrap(cb)); + }; + }, + wrappedBuiltIns + ); + } - function stringify(obj, replacer, spaces, cycleReplacer) { - return JSON.stringify(obj, serializer(replacer, cycleReplacer), spaces); - } // https://github.com/ftlabs/js-abbreviate/blob/fa709e5f139e7770a71827b1893f22418097fbda/index.js#L95-L106 + // event targets borrowed from bugsnag-js: + // https://github.com/bugsnag/bugsnag-js/blob/master/src/bugsnag.js#L666 + var eventTargets = [ + 'EventTarget', + 'Window', + 'Node', + 'ApplicationCache', + 'AudioTrackList', + 'ChannelMergerNode', + 'CryptoOperation', + 'EventSource', + 'FileReader', + 'HTMLUnknownElement', + 'IDBDatabase', + 'IDBRequest', + 'IDBTransaction', + 'KeyOperation', + 'MediaController', + 'MessagePort', + 'ModalWindow', + 'Notification', + 'SVGElementInstance', + 'Screen', + 'TextTrack', + 'TextTrackCue', + 'TextTrackList', + 'WebSocket', + 'WebSocketWorker', + 'Worker', + 'XMLHttpRequest', + 'XMLHttpRequestEventTarget', + 'XMLHttpRequestUpload' + ]; + for (var i = 0; i < eventTargets.length; i++) { + wrapEventTarget(eventTargets[i]); + } + }, + /** + * Instrument browser built-ins w/ breadcrumb capturing + * - XMLHttpRequests + * - DOM interactions (click/typing) + * - window.location changes + * - console + * + * Can be disabled or individually configured via the `autoBreadcrumbs` config option + */ + _instrumentBreadcrumbs: function() { + var self = this; + var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; - function stringifyError(value) { - var err = { - // These properties are implemented as magical getters and don't show up in for in - stack: value.stack, - message: value.message, - name: value.name - }; + var wrappedBuiltIns = self._wrappedBuiltIns; - for (var i in value) { - if (Object.prototype.hasOwnProperty.call(value, i)) { - err[i] = value[i]; + function wrapProp(prop, xhr) { + if (prop in xhr && isFunction(xhr[prop])) { + fill(xhr, prop, function(orig) { + return self.wrap(orig); + }); // intentionally don't track filled methods on XHR instances } } - return err; - } - - function serializer(replacer, cycleReplacer) { - var stack = []; - var keys = []; + if (autoBreadcrumbs.xhr && 'XMLHttpRequest' in _window) { + var xhrproto = _window.XMLHttpRequest && _window.XMLHttpRequest.prototype; + fill( + xhrproto, + 'open', + function(origOpen) { + return function(method, url) { + // preserve arity - if (cycleReplacer == null) { - cycleReplacer = function cycleReplacer(key, value) { - if (stack[0] === value) { - return '[Circular ~]'; - } + // if Sentry key appears in URL, don't capture + if (isString(url) && url.indexOf(self._globalKey) === -1) { + this.__raven_xhr = { + method: method, + url: url, + status_code: null + }; + } - return '[Circular ~.' + keys.slice(0, indexOf(stack, value)).join('.') + ']'; - }; - } + return origOpen.apply(this, arguments); + }; + }, + wrappedBuiltIns + ); + + fill( + xhrproto, + 'send', + function(origSend) { + return function() { + // preserve arity + var xhr = this; - return function (key, value) { - if (stack.length > 0) { - var thisPos = indexOf(stack, this); - ~thisPos ? stack.splice(thisPos + 1) : stack.push(this); - ~thisPos ? keys.splice(thisPos, Infinity, key) : keys.push(key); + function onreadystatechangeHandler() { + if (xhr.__raven_xhr && xhr.readyState === 4) { + try { + // touching statusCode in some platforms throws + // an exception + xhr.__raven_xhr.status_code = xhr.status; + } catch (e) { + /* do nothing */ + } - if (~indexOf(stack, value)) { - value = cycleReplacer.call(this, key, value); - } - } else { - stack.push(value); - } + self.captureBreadcrumb({ + type: 'http', + category: 'xhr', + data: xhr.__raven_xhr + }); + } + } - return replacer == null ? value instanceof Error ? stringifyError(value) : value : replacer.call(this, key, value); - }; - } -}); -var stringify_2 = stringify_1.getSerialize; + var props = ['onload', 'onerror', 'onprogress']; + for (var j = 0; j < props.length; j++) { + wrapProp(props[j], xhr); + } -function RavenConfigError(message) { - this.name = 'RavenConfigError'; - this.message = message; -} + if ('onreadystatechange' in xhr && isFunction(xhr.onreadystatechange)) { + fill( + xhr, + 'onreadystatechange', + function(orig) { + return self.wrap(orig, undefined, onreadystatechangeHandler); + } /* intentionally don't track this instrumentation */ + ); + } else { + // if onreadystatechange wasn't actually set by the page on this xhr, we + // are free to set our own and capture the breadcrumb + xhr.onreadystatechange = onreadystatechangeHandler; + } -RavenConfigError.prototype = new Error(); -RavenConfigError.prototype.constructor = RavenConfigError; -var configError = RavenConfigError; + return origSend.apply(this, arguments); + }; + }, + wrappedBuiltIns + ); + } -var wrapMethod = function wrapMethod(console, level, callback) { - var originalConsoleLevel = console[level]; - var originalConsole = console; + if (autoBreadcrumbs.xhr && supportsFetch()) { + fill( + _window, + 'fetch', + function(origFetch) { + return function() { + // preserve arity + // Make a copy of the arguments to prevent deoptimization + // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments + var args = new Array(arguments.length); + for (var i = 0; i < args.length; ++i) { + args[i] = arguments[i]; + } - if (!(level in console)) { - return; - } + var fetchInput = args[0]; + var method = 'GET'; + var url; - var sentryLevel = level === 'warn' ? 'warning' : level; + if (typeof fetchInput === 'string') { + url = fetchInput; + } else if ('Request' in _window && fetchInput instanceof _window.Request) { + url = fetchInput.url; + if (fetchInput.method) { + method = fetchInput.method; + } + } else { + url = '' + fetchInput; + } - console[level] = function () { - var args = [].slice.call(arguments); - var msg = utils.safeJoin(args, ' '); - var data = { - level: sentryLevel, - logger: 'console', - extra: { - arguments: args - } - }; + // if Sentry key appears in URL, don't capture, as it's our own request + if (url.indexOf(self._globalKey) !== -1) { + return origFetch.apply(this, args); + } - if (level === 'assert') { - if (args[0] === false) { - // Default browsers message - msg = 'Assertion failed: ' + (utils.safeJoin(args.slice(1), ' ') || 'console.assert'); - data.extra.arguments = args.slice(1); - callback && callback(msg, data); - } - } else { - callback && callback(msg, data); - } // this fails for some browsers. :( + if (args[1] && args[1].method) { + method = args[1].method; + } + var fetchData = { + method: method, + url: url, + status_code: null + }; - if (originalConsoleLevel) { - // IE9 doesn't allow calling apply on console functions directly - // See: https://stackoverflow.com/questions/5472938/does-ie9-support-console-log-and-is-it-a-real-function#answer-5473193 - Function.prototype.apply.call(originalConsoleLevel, originalConsole, args); + return origFetch + .apply(this, args) + .then(function(response) { + fetchData.status_code = response.status; + + self.captureBreadcrumb({ + type: 'http', + category: 'fetch', + data: fetchData + }); + + return response; + }) + ['catch'](function(err) { + // if there is an error performing the request + self.captureBreadcrumb({ + type: 'http', + category: 'fetch', + data: fetchData, + level: 'error' + }); + + throw err; + }); + }; + }, + wrappedBuiltIns + ); } - }; -}; -var console$1 = { - wrapMethod: wrapMethod -}; + // Capture breadcrumbs from any click that is unhandled / bubbled up all the way + // to the document. Do this before we instrument addEventListener. + if (autoBreadcrumbs.dom && this._hasDocument) { + if (_document.addEventListener) { + _document.addEventListener('click', self._breadcrumbEventHandler('click'), false); + _document.addEventListener('keypress', self._keypressEventHandler(), false); + } else if (_document.attachEvent) { + // IE8 Compatibility + _document.attachEvent('onclick', self._breadcrumbEventHandler('click')); + _document.attachEvent('onkeypress', self._keypressEventHandler()); + } + } -/*global XDomainRequest:false */ + // record navigation (URL) changes + // NOTE: in Chrome App environment, touching history.pushState, *even inside + // a try/catch block*, will cause Chrome to output an error to console.error + // borrowed from: https://github.com/angular/angular.js/pull/13945/files + var chrome = _window.chrome; + var isChromePackagedApp = chrome && chrome.app && chrome.app.runtime; + var hasPushAndReplaceState = + !isChromePackagedApp && + _window.history && + history.pushState && + history.replaceState; + if (autoBreadcrumbs.location && hasPushAndReplaceState) { + // TODO: remove onpopstate handler on uninstall() + var oldOnPopState = _window.onpopstate; + _window.onpopstate = function() { + var currentHref = self._location.href; + self._captureUrlChange(self._lastHref, currentHref); -var isError = utils.isError; -var isObject = utils.isObject; -var isErrorEvent = utils.isErrorEvent; -var isUndefined = utils.isUndefined; -var isFunction = utils.isFunction; -var isString = utils.isString; -var isArray = utils.isArray; -var isEmptyObject = utils.isEmptyObject; -var each = utils.each; -var objectMerge = utils.objectMerge; -var truncate = utils.truncate; -var objectFrozen = utils.objectFrozen; -var hasKey = utils.hasKey; -var joinRegExp = utils.joinRegExp; -var urlencode = utils.urlencode; -var uuid4 = utils.uuid4; -var htmlTreeAsString = utils.htmlTreeAsString; -var isSameException = utils.isSameException; -var isSameStacktrace = utils.isSameStacktrace; -var parseUrl = utils.parseUrl; -var fill = utils.fill; -var supportsFetch = utils.supportsFetch; -var wrapConsoleMethod = console$1.wrapMethod; -var dsnKeys = 'source protocol user pass host port path'.split(' '); -var dsnPattern = /^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/; + if (oldOnPopState) { + return oldOnPopState.apply(this, arguments); + } + }; -function now() { - return +new Date(); -} // This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) + var historyReplacementFunction = function(origHistFunction) { + // note history.pushState.length is 0; intentionally not declaring + // params to preserve 0 arity + return function(/* state, title, url */) { + var url = arguments.length > 2 ? arguments[2] : undefined; + // url argument is optional + if (url) { + // coerce to string (this is what pushState does) + self._captureUrlChange(self._lastHref, url + ''); + } -var _window$1 = typeof window !== 'undefined' ? window : typeof commonjsGlobal !== 'undefined' ? commonjsGlobal : typeof self !== 'undefined' ? self : {}; + return origHistFunction.apply(this, arguments); + }; + }; -var _document = _window$1.document; -var _navigator = _window$1.navigator; + fill(history, 'pushState', historyReplacementFunction, wrappedBuiltIns); + fill(history, 'replaceState', historyReplacementFunction, wrappedBuiltIns); + } -function keepOriginalCallback(original, callback) { - return isFunction(callback) ? function (data) { - return callback(data, original); - } : callback; -} // First, check for JSON support -// If there is no JSON, we no-op the core features of Raven -// since JSON is required to encode the payload + if (autoBreadcrumbs.console && 'console' in _window && console.log) { + // console + var consoleMethodCallback = function(msg, data) { + self.captureBreadcrumb({ + message: msg, + level: data.level, + category: 'console' + }); + }; + each(['debug', 'info', 'warn', 'error', 'log'], function(_, level) { + wrapConsoleMethod(console, level, consoleMethodCallback); + }); + } + }, -function Raven$1() { - this._hasJSON = !!(_typeof(JSON) === 'object' && JSON.stringify); // Raven can run in contexts where there's no document (react-native) + _restoreBuiltIns: function() { + // restore any wrapped builtins + var builtin; + while (this._wrappedBuiltIns.length) { + builtin = this._wrappedBuiltIns.shift(); - this._hasDocument = !isUndefined(_document); - this._hasNavigator = !isUndefined(_navigator); - this._lastCapturedException = null; - this._lastData = null; - this._lastEventId = null; - this._globalServer = null; - this._globalKey = null; - this._globalProject = null; - this._globalContext = {}; - this._globalOptions = { - // SENTRY_RELEASE can be injected by https://github.com/getsentry/sentry-webpack-plugin - release: _window$1.SENTRY_RELEASE && _window$1.SENTRY_RELEASE.id, - logger: 'javascript', - ignoreErrors: [], - ignoreUrls: [], - whitelistUrls: [], - includePaths: [], - headers: null, - collectWindowErrors: true, - maxMessageLength: 0, - // By default, truncates URL values to 250 chars - maxUrlLength: 250, - stackTraceLimit: 50, - autoBreadcrumbs: true, - instrument: true, - sampleRate: 1 - }; - this._fetchDefaults = { - method: 'POST', - keepalive: true, - referrerPolicy: 'origin' - }; - this._ignoreOnError = 0; - this._isRavenInstalled = false; - this._originalErrorStackTraceLimit = Error.stackTraceLimit; // capture references to window.console *and* all its methods first - // before the console plugin has a chance to monkey patch + var obj = builtin[0], + name = builtin[1], + orig = builtin[2]; - this._originalConsole = _window$1.console || {}; - this._originalConsoleMethods = {}; - this._plugins = []; - this._startTime = now(); - this._wrappedBuiltIns = []; - this._breadcrumbs = []; - this._lastCapturedEvent = null; - this._keypressTimeout; - this._location = _window$1.location; - this._lastHref = this._location && this._location.href; + obj[name] = orig; + } + }, - this._resetBackoff(); // eslint-disable-next-line guard-for-in + _restoreConsole: function() { + // eslint-disable-next-line guard-for-in + for (var method in this._originalConsoleMethods) { + this._originalConsole[method] = this._originalConsoleMethods[method]; + } + }, + _drainPlugins: function() { + var self = this; - for (var method in this._originalConsole) { - this._originalConsoleMethods[method] = this._originalConsole[method]; - } -} -/* - * The core Raven singleton - * - * @this {Raven} - */ + // FIX ME TODO + each(this._plugins, function(_, plugin) { + var installer = plugin[0]; + var args = plugin[1]; + installer.apply(self, [self].concat(args)); + }); + }, + _parseDSN: function(str) { + var m = dsnPattern.exec(str), + dsn = {}, + i = 7; -Raven$1.prototype = { - // Hardcode version string so that raven source can be loaded directly via - // webpack (using a build step causes webpack #1617). Grunt verifies that - // this value matches package.json during build. - // See: https://github.com/getsentry/raven-js/issues/465 - VERSION: '3.22.2', - debug: false, - TraceKit: tracekit, - // alias to TraceKit + try { + while (i--) dsn[dsnKeys[i]] = m[i] || ''; + } catch (e) { + throw new RavenConfigError('Invalid DSN: ' + str); + } - /* - * Configure Raven with a DSN and extra options - * - * @param {string} dsn The public Sentry DSN - * @param {object} options Set of global options [optional] - * @return {Raven} - */ - config: function config(dsn, options) { - var self = this; + if (dsn.pass && !this._globalOptions.allowSecretKey) { + throw new RavenConfigError( + 'Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key' + ); + } - if (self._globalServer) { - this._logDebug('error', 'Error: Raven has already been configured'); + return dsn; + }, - return self; - } + _getGlobalServer: function(uri) { + // assemble the endpoint from the uri pieces + var globalServer = '//' + uri.host + (uri.port ? ':' + uri.port : ''); - if (!dsn) return self; - var globalOptions = self._globalOptions; // merge in options + if (uri.protocol) { + globalServer = uri.protocol + ':' + globalServer; + } + return globalServer; + }, - if (options) { - each(options, function (key, value) { - // tags and extra are special and need to be put into context - if (key === 'tags' || key === 'extra' || key === 'user') { - self._globalContext[key] = value; - } else { - globalOptions[key] = value; - } - }); + _handleOnErrorStackInfo: function() { + // if we are intentionally ignoring errors via onerror, bail out + if (!this._ignoreOnError) { + this._handleStackInfo.apply(this, arguments); } + }, - self.setDSN(dsn); // "Script error." is hard coded into browsers for errors that it can't read. - // this is the result of a script being pulled in from an external domain and CORS. + _handleStackInfo: function(stackInfo, options) { + var frames = this._prepareFrames(stackInfo, options); - globalOptions.ignoreErrors.push(/^Script error\.?$/); - globalOptions.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/); // join regexp rules into one big rule + this._triggerEvent('handle', { + stackInfo: stackInfo, + options: options + }); - globalOptions.ignoreErrors = joinRegExp(globalOptions.ignoreErrors); - globalOptions.ignoreUrls = globalOptions.ignoreUrls.length ? joinRegExp(globalOptions.ignoreUrls) : false; - globalOptions.whitelistUrls = globalOptions.whitelistUrls.length ? joinRegExp(globalOptions.whitelistUrls) : false; - globalOptions.includePaths = joinRegExp(globalOptions.includePaths); - globalOptions.maxBreadcrumbs = Math.max(0, Math.min(globalOptions.maxBreadcrumbs || 100, 100)); // default and hard limit is 100 + this._processException( + stackInfo.name, + stackInfo.message, + stackInfo.url, + stackInfo.lineno, + frames, + options + ); + }, - var autoBreadcrumbDefaults = { - xhr: true, - console: true, - dom: true, - location: true, - sentry: true - }; - var autoBreadcrumbs = globalOptions.autoBreadcrumbs; + _prepareFrames: function(stackInfo, options) { + var self = this; + var frames = []; + if (stackInfo.stack && stackInfo.stack.length) { + each(stackInfo.stack, function(i, stack) { + var frame = self._normalizeFrame(stack, stackInfo.url); + if (frame) { + frames.push(frame); + } + }); - if ({}.toString.call(autoBreadcrumbs) === '[object Object]') { - autoBreadcrumbs = objectMerge(autoBreadcrumbDefaults, autoBreadcrumbs); - } else if (autoBreadcrumbs !== false) { - autoBreadcrumbs = autoBreadcrumbDefaults; + // e.g. frames captured via captureMessage throw + if (options && options.trimHeadFrames) { + for (var j = 0; j < options.trimHeadFrames && j < frames.length; j++) { + frames[j].in_app = false; + } + } } + frames = frames.slice(0, this._globalOptions.stackTraceLimit); + return frames; + }, - globalOptions.autoBreadcrumbs = autoBreadcrumbs; - var instrumentDefaults = { - tryCatch: true + _normalizeFrame: function(frame, stackInfoUrl) { + // normalize the frames data + var normalized = { + filename: frame.url, + lineno: frame.line, + colno: frame.column, + function: frame.func || '?' }; - var instrument = globalOptions.instrument; - if ({}.toString.call(instrument) === '[object Object]') { - instrument = objectMerge(instrumentDefaults, instrument); - } else if (instrument !== false) { - instrument = instrumentDefaults; + // Case when we don't have any information about the error + // E.g. throwing a string or raw object, instead of an `Error` in Firefox + // Generating synthetic error doesn't add any value here + // + // We should probably somehow let a user know that they should fix their code + if (!frame.url) { + normalized.filename = stackInfoUrl; // fallback to whole stacks url from onerror handler } - globalOptions.instrument = instrument; - tracekit.collectWindowErrors = !!globalOptions.collectWindowErrors; // return for chaining + normalized.in_app = !// determine if an exception came from outside of our app + // first we check the global includePaths list. + ( + (!!this._globalOptions.includePaths.test && + !this._globalOptions.includePaths.test(normalized.filename)) || + // Now we check for fun, if the function name is Raven or TraceKit + /(Raven|TraceKit)\./.test(normalized['function']) || + // finally, we do a last ditch effort and check for raven.min.js + /raven\.(min\.)?js$/.test(normalized.filename) + ); - return self; + return normalized; }, - /* - * Installs a global window.onerror error handler - * to capture and report uncaught exceptions. - * At this point, install() is required to be called due - * to the way TraceKit is set up. - * - * @return {Raven} - */ - install: function install() { - var self = this; - - if (self.isSetup() && !self._isRavenInstalled) { - tracekit.report.subscribe(function () { - self._handleOnErrorStackInfo.apply(self, arguments); - }); - - self._patchFunctionToString(); + _processException: function(type, message, fileurl, lineno, frames, options) { + var prefixedMessage = (type ? type + ': ' : '') + (message || ''); + if ( + !!this._globalOptions.ignoreErrors.test && + (this._globalOptions.ignoreErrors.test(message) || + this._globalOptions.ignoreErrors.test(prefixedMessage)) + ) { + return; + } - if (self._globalOptions.instrument && self._globalOptions.instrument.tryCatch) { - self._instrumentTryCatch(); - } + var stacktrace; - if (self._globalOptions.autoBreadcrumbs) self._instrumentBreadcrumbs(); // Install all of the plugins + if (frames && frames.length) { + fileurl = frames[0].filename || fileurl; + // Sentry expects frames oldest to newest + // and JS sends them as newest to oldest + frames.reverse(); + stacktrace = {frames: frames}; + } else if (fileurl) { + stacktrace = { + frames: [ + { + filename: fileurl, + lineno: lineno, + in_app: true + } + ] + }; + } - self._drainPlugins(); + if ( + !!this._globalOptions.ignoreUrls.test && + this._globalOptions.ignoreUrls.test(fileurl) + ) { + return; + } - self._isRavenInstalled = true; + if ( + !!this._globalOptions.whitelistUrls.test && + !this._globalOptions.whitelistUrls.test(fileurl) + ) { + return; } - Error.stackTraceLimit = self._globalOptions.stackTraceLimit; - return this; + var data = objectMerge( + { + // sentry.interfaces.Exception + exception: { + values: [ + { + type: type, + value: message, + stacktrace: stacktrace + } + ] + }, + culprit: fileurl + }, + options + ); + + // Fire away! + this._send(data); }, - /* - * Set the DSN (can be called multiple time unlike config) - * - * @param {string} dsn The public Sentry DSN - */ - setDSN: function setDSN(dsn) { - var self = this, - uri = self._parseDSN(dsn), - lastSlash = uri.path.lastIndexOf('/'), - path = uri.path.substr(1, lastSlash); + _trimPacket: function(data) { + // For now, we only want to truncate the two different messages + // but this could/should be expanded to just trim everything + var max = this._globalOptions.maxMessageLength; + if (data.message) { + data.message = truncate(data.message, max); + } + if (data.exception) { + var exception = data.exception.values[0]; + exception.value = truncate(exception.value, max); + } - self._dsn = dsn; - self._globalKey = uri.user; - self._globalSecret = uri.pass && uri.pass.substr(1); - self._globalProject = uri.path.substr(lastSlash + 1); - self._globalServer = self._getGlobalServer(uri); - self._globalEndpoint = self._globalServer + '/' + path + 'api/' + self._globalProject + '/store/'; // Reset backoff state since we may be pointing at a - // new project/server + var request = data.request; + if (request) { + if (request.url) { + request.url = truncate(request.url, this._globalOptions.maxUrlLength); + } + if (request.Referer) { + request.Referer = truncate(request.Referer, this._globalOptions.maxUrlLength); + } + } - this._resetBackoff(); + if (data.breadcrumbs && data.breadcrumbs.values) + this._trimBreadcrumbs(data.breadcrumbs); + + return data; }, - /* - * Wrap code within a context so Raven can capture errors - * reliably across domains that is executed immediately. - * - * @param {object} options A specific set of options for this context [optional] - * @param {function} func The callback to be immediately executed within the context - * @param {array} args An array of arguments to be called with the callback [optional] - */ - context: function context(options, func, args) { - if (isFunction(options)) { - args = func || []; - func = options; - options = undefined; - } + /** + * Truncate breadcrumb values (right now just URLs) + */ + _trimBreadcrumbs: function(breadcrumbs) { + // known breadcrumb properties with urls + // TODO: also consider arbitrary prop values that start with (https?)?:// + var urlProps = ['to', 'from', 'url'], + urlProp, + crumb, + data; - return this.wrap(options, func).apply(this, args); + for (var i = 0; i < breadcrumbs.values.length; ++i) { + crumb = breadcrumbs.values[i]; + if ( + !crumb.hasOwnProperty('data') || + !isObject(crumb.data) || + objectFrozen(crumb.data) + ) + continue; + + data = objectMerge({}, crumb.data); + for (var j = 0; j < urlProps.length; ++j) { + urlProp = urlProps[j]; + if (data.hasOwnProperty(urlProp) && data[urlProp]) { + data[urlProp] = truncate(data[urlProp], this._globalOptions.maxUrlLength); + } + } + breadcrumbs.values[i].data = data; + } }, - /* - * Wrap code within a context and returns back a new function to be executed - * - * @param {object} options A specific set of options for this context [optional] - * @param {function} func The function to be wrapped in a new context - * @param {function} func A function to call before the try/catch wrapper [optional, private] - * @return {function} The newly wrapped functions with a context - */ - wrap: function wrap(options, func, _before) { - var self = this; // 1 argument has been passed, and it's not a function - // so just return it + _getHttpData: function() { + if (!this._hasNavigator && !this._hasDocument) return; + var httpData = {}; - if (isUndefined(func) && !isFunction(options)) { - return options; - } // options is optional + if (this._hasNavigator && _navigator.userAgent) { + httpData.headers = { + 'User-Agent': navigator.userAgent + }; + } + // Check in `window` instead of `document`, as we may be in ServiceWorker environment + if (_window.location && _window.location.href) { + httpData.url = _window.location.href; + } - if (isFunction(options)) { - func = options; - options = undefined; - } // At this point, we've passed along 2 arguments, and the second one - // is not a function either, so we'll just return the second argument. + if (this._hasDocument && _document.referrer) { + if (!httpData.headers) httpData.headers = {}; + httpData.headers.Referer = _document.referrer; + } + return httpData; + }, - if (!isFunction(func)) { - return func; - } // We don't wanna wrap it twice! + _resetBackoff: function() { + this._backoffDuration = 0; + this._backoffStart = null; + }, + _shouldBackoff: function() { + return this._backoffDuration && now() - this._backoffStart < this._backoffDuration; + }, - try { - if (func.__raven__) { - return func; - } // If this has already been wrapped in the past, return that + /** + * Returns true if the in-process data payload matches the signature + * of the previously-sent data + * + * NOTE: This has to be done at this level because TraceKit can generate + * data from window.onerror WITHOUT an exception object (IE8, IE9, + * other old browsers). This can take the form of an "exception" + * data object with a single frame (derived from the onerror args). + */ + _isRepeatData: function(current) { + var last = this._lastData; + if ( + !last || + current.message !== last.message || // defined for captureMessage + current.culprit !== last.culprit // defined for captureException/onerror + ) + return false; - if (func.__raven_wrapper__) { - return func.__raven_wrapper__; - } - } catch (e) { - // Just accessing custom props in some Selenium environments - // can cause a "Permission denied" exception (see raven-js#495). - // Bail on wrapping and return the function as-is (defers to window.onerror). - return func; + // Stacktrace interface (i.e. from captureMessage) + if (current.stacktrace || last.stacktrace) { + return isSameStacktrace(current.stacktrace, last.stacktrace); + } else if (current.exception || last.exception) { + // Exception interface (i.e. from captureException/onerror) + return isSameException(current.exception, last.exception); } - function wrapped() { - var args = [], - i = arguments.length, - deep = !options || options && options.deep !== false; - - if (_before && isFunction(_before)) { - _before.apply(this, arguments); - } // Recursively wrap all of a function's arguments that are - // functions themselves. + return true; + }, + _setBackoffState: function(request) { + // If we are already in a backoff state, don't change anything + if (this._shouldBackoff()) { + return; + } - while (i--) { - args[i] = deep ? self.wrap(options, arguments[i]) : arguments[i]; - } + var status = request.status; - try { - // Attempt to invoke user-land function - // NOTE: If you are a Sentry user, and you are seeing this stack frame, it - // means Raven caught an error invoking your application code. This is - // expected behavior and NOT indicative of a bug with Raven.js. - return func.apply(this, args); - } catch (e) { - self._ignoreNextOnError(); + // 400 - project_id doesn't exist or some other fatal + // 401 - invalid/revoked dsn + // 429 - too many requests + if (!(status === 400 || status === 401 || status === 429)) return; - self.captureException(e, options); - throw e; + var retry; + try { + // If Retry-After is not in Access-Control-Expose-Headers, most + // browsers will throw an exception trying to access it + if (supportsFetch()) { + retry = request.headers.get('Retry-After'); + } else { + retry = request.getResponseHeader('Retry-After'); } - } // copy over properties of the old function - - for (var property in func) { - if (hasKey(func, property)) { - wrapped[property] = func[property]; - } + // Retry-After is returned in seconds + retry = parseInt(retry, 10) * 1000; + } catch (e) { + /* eslint no-empty:0 */ } - wrapped.prototype = func.prototype; - func.__raven_wrapper__ = wrapped; // Signal that this function has been wrapped/filled already - // for both debugging and to prevent it to being wrapped/filled twice + this._backoffDuration = retry + ? // If Sentry server returned a Retry-After value, use it + retry + : // Otherwise, double the last backoff duration (starts at 1 sec) + this._backoffDuration * 2 || 1000; - wrapped.__raven__ = true; - wrapped.__orig__ = func; - return wrapped; + this._backoffStart = now(); }, - /* - * Uninstalls the global error handler. - * - * @return {Raven} - */ - uninstall: function uninstall() { - tracekit.report.uninstall(); + _send: function(data) { + var globalOptions = this._globalOptions; - this._unpatchFunctionToString(); + var baseData = { + project: this._globalProject, + logger: globalOptions.logger, + platform: 'javascript' + }, + httpData = this._getHttpData(); - this._restoreBuiltIns(); + if (httpData) { + baseData.request = httpData; + } - this._restoreConsole(); + // HACK: delete `trimHeadFrames` to prevent from appearing in outbound payload + if (data.trimHeadFrames) delete data.trimHeadFrames; - Error.stackTraceLimit = this._originalErrorStackTraceLimit; - this._isRavenInstalled = false; - return this; - }, + data = objectMerge(baseData, data); - /* - * Manually capture an exception and send it over to Sentry - * - * @param {error} ex An exception to be logged - * @param {object} options A specific set of options for this error [optional] - * @return {Raven} - */ - captureException: function captureException(ex, options) { - options = objectMerge({ - trimHeadFrames: 0 - }, options ? options : {}); // Cases for sending ex as a message, rather than an exception + // Merge in the tags and extra separately since objectMerge doesn't handle a deep merge + data.tags = objectMerge(objectMerge({}, this._globalContext.tags), data.tags); + data.extra = objectMerge(objectMerge({}, this._globalContext.extra), data.extra); - var isNotError = !isError(ex); - var isNotErrorEvent = !isErrorEvent(ex); - var isErrorEventWithoutError = isErrorEvent(ex) && !ex.error; + // Send along our own collected metadata with extra + data.extra['session:duration'] = now() - this._startTime; - if (isNotError && isNotErrorEvent || isErrorEventWithoutError) { - return this.captureMessage(ex, objectMerge(options, { - stacktrace: true, - // if we fall back to captureMessage, default to attempting a new trace - trimHeadFrames: options.trimHeadFrames + 1 - })); - } // Get actual Error from ErrorEvent + if (this._breadcrumbs && this._breadcrumbs.length > 0) { + // intentionally make shallow copy so that additions + // to breadcrumbs aren't accidentally sent in this request + data.breadcrumbs = { + values: [].slice.call(this._breadcrumbs, 0) + }; + } + if (this._globalContext.user) { + // sentry.interfaces.User + data.user = this._globalContext.user; + } - if (isErrorEvent(ex)) ex = ex.error; // Store the raw exception object for potential debugging and introspection + // Include the environment if it's defined in globalOptions + if (globalOptions.environment) data.environment = globalOptions.environment; - this._lastCapturedException = ex; // TraceKit.report will re-raise any exception passed to it, - // which means you have to wrap it in try/catch. Instead, we - // can wrap it here and only re-raise if TraceKit.report - // raises an exception different from the one we asked to - // report on. + // Include the release if it's defined in globalOptions + if (globalOptions.release) data.release = globalOptions.release; - try { - var stack = tracekit.computeStackTrace(ex); + // Include server_name if it's defined in globalOptions + if (globalOptions.serverName) data.server_name = globalOptions.serverName; - this._handleStackInfo(stack, options); - } catch (ex1) { - if (ex !== ex1) { - throw ex1; - } + data = this._sanitizeData(data); + + // Cleanup empty properties before sending them to the server + Object.keys(data).forEach(function(key) { + if (data[key] == null || data[key] === '' || isEmptyObject(data[key])) { + delete data[key]; + } + }); + + if (isFunction(globalOptions.dataCallback)) { + data = globalOptions.dataCallback(data) || data; } - return this; - }, + // Why?????????? + if (!data || isEmptyObject(data)) { + return; + } - /* - * Manually send a message to Sentry - * - * @param {string} msg A plain message to be captured in Sentry - * @param {object} options A specific set of options for this message [optional] - * @return {Raven} - */ - captureMessage: function captureMessage(msg, options) { - // config() automagically converts ignoreErrors from a list to a RegExp so we need to test for an - // early call; we'll error on the side of logging anything called before configuration since it's - // probably something you should see: - if (!!this._globalOptions.ignoreErrors.test && this._globalOptions.ignoreErrors.test(msg)) { + // Check if the request should be filtered or not + if ( + isFunction(globalOptions.shouldSendCallback) && + !globalOptions.shouldSendCallback(data) + ) { return; } - options = options || {}; - var data = objectMerge({ - message: msg + '' // Make sure it's actually a string + // Backoff state: Sentry server previously responded w/ an error (e.g. 429 - too many requests), + // so drop requests until "cool-off" period has elapsed. + if (this._shouldBackoff()) { + this._logDebug('warn', 'Raven dropped error due to backoff: ', data); + return; + } - }, options); - var ex; // Generate a "synthetic" stack trace from this point. - // NOTE: If you are a Sentry user, and you are seeing this stack frame, it is NOT indicative - // of a bug with Raven.js. Sentry generates synthetic traces either by configuration, - // or if it catches a thrown object without a "stack" property. + if (typeof globalOptions.sampleRate === 'number') { + if (Math.random() < globalOptions.sampleRate) { + this._sendProcessedPayload(data); + } + } else { + this._sendProcessedPayload(data); + } + }, - try { - throw new Error(msg); - } catch (ex1) { - ex = ex1; - } // null exception name so `Error` isn't prefixed to msg + _sanitizeData: function(data) { + return sanitize(data, this._globalOptions.sanitizeKeys); + }, + _getUuid: function() { + return uuid4(); + }, - ex.name = null; - var stack = tracekit.computeStackTrace(ex); // stack[0] is `throw new Error(msg)` call itself, we are interested in the frame that was just before that, stack[1] + _sendProcessedPayload: function(data, callback) { + var self = this; + var globalOptions = this._globalOptions; - var initialCall = isArray(stack.stack) && stack.stack[1]; - var fileurl = initialCall && initialCall.url || ''; + if (!this.isSetup()) return; + + // Try and clean up the packet before sending by truncating long values + data = this._trimPacket(data); - if (!!this._globalOptions.ignoreUrls.test && this._globalOptions.ignoreUrls.test(fileurl)) { + // ideally duplicate error testing should occur *before* dataCallback/shouldSendCallback, + // but this would require copying an un-truncated copy of the data packet, which can be + // arbitrarily deep (extra_data) -- could be worthwhile? will revisit + if (!this._globalOptions.allowDuplicates && this._isRepeatData(data)) { + this._logDebug('warn', 'Raven dropped repeat event: ', data); return; } - if (!!this._globalOptions.whitelistUrls.test && !this._globalOptions.whitelistUrls.test(fileurl)) { - return; + // Send along an event_id if not explicitly passed. + // This event_id can be used to reference the error within Sentry itself. + // Set lastEventId after we know the error should actually be sent + this._lastEventId = data.event_id || (data.event_id = this._getUuid()); + + // Store outbound payload after trim + this._lastData = data; + + this._logDebug('debug', 'Raven about to send:', data); + + var auth = { + sentry_version: '7', + sentry_client: 'raven-js/' + this.VERSION, + sentry_key: this._globalKey + }; + + if (this._globalSecret) { + auth.sentry_secret = this._globalSecret; } - if (this._globalOptions.stacktrace || options && options.stacktrace) { - options = objectMerge({ - // fingerprint on msg, not stack trace (legacy behavior, could be - // revisited) - fingerprint: msg, - // since we know this is a synthetic trace, the top N-most frames - // MUST be from Raven.js, so mark them as in_app later by setting - // trimHeadFrames - trimHeadFrames: (options.trimHeadFrames || 0) + 1 - }, options); + var exception = data.exception && data.exception.values[0]; - var frames = this._prepareFrames(stack, options); + // only capture 'sentry' breadcrumb is autoBreadcrumbs is truthy + if ( + this._globalOptions.autoBreadcrumbs && + this._globalOptions.autoBreadcrumbs.sentry + ) { + this.captureBreadcrumb({ + category: 'sentry', + message: exception + ? (exception.type ? exception.type + ': ' : '') + exception.value + : data.message, + event_id: data.event_id, + level: data.level || 'error' // presume error unless specified + }); + } - data.stacktrace = { - // Sentry expects frames oldest to newest - frames: frames.reverse() - }; - } // Fire away! + var url = this._globalEndpoint; + (globalOptions.transport || this._makeRequest).call(this, { + url: url, + auth: auth, + data: data, + options: globalOptions, + onSuccess: function success() { + self._resetBackoff(); + self._triggerEvent('success', { + data: data, + src: url + }); + callback && callback(); + }, + onError: function failure(error) { + self._logDebug('error', 'Raven transport failed to send: ', error); - this._send(data); + if (error.request) { + self._setBackoffState(error.request); + } - return this; + self._triggerEvent('failure', { + data: data, + src: url + }); + error = error || new Error('Raven send failed (no additional details provided)'); + callback && callback(error); + } + }); }, - captureBreadcrumb: function captureBreadcrumb(obj) { - var crumb = objectMerge({ - timestamp: now() / 1000 - }, obj); - if (isFunction(this._globalOptions.breadcrumbCallback)) { - var result = this._globalOptions.breadcrumbCallback(crumb); + _makeRequest: function(opts) { + // Auth is intentionally sent as part of query string (NOT as custom HTTP header) to avoid preflight CORS requests + var url = opts.url + '?' + urlencode(opts.auth); - if (isObject(result) && !isEmptyObject(result)) { - crumb = result; - } else if (result === false) { - return this; - } - } + var evaluatedHeaders = null; + var evaluatedFetchParameters = {}; - this._breadcrumbs.push(crumb); + if (opts.options.headers) { + evaluatedHeaders = this._evaluateHash(opts.options.headers); + } - if (this._breadcrumbs.length > this._globalOptions.maxBreadcrumbs) { - this._breadcrumbs.shift(); + if (opts.options.fetchParameters) { + evaluatedFetchParameters = this._evaluateHash(opts.options.fetchParameters); } - return this; - }, - addPlugin: function addPlugin(plugin - /*arg1, arg2, ... argN*/ - ) { - var pluginArgs = [].slice.call(arguments, 1); + if (supportsFetch()) { + evaluatedFetchParameters.body = stringify(opts.data); - this._plugins.push([plugin, pluginArgs]); + var defaultFetchOptions = objectMerge({}, this._fetchDefaults); + var fetchOptions = objectMerge(defaultFetchOptions, evaluatedFetchParameters); - if (this._isRavenInstalled) { - this._drainPlugins(); + if (evaluatedHeaders) { + fetchOptions.headers = evaluatedHeaders; + } + + return _window + .fetch(url, fetchOptions) + .then(function(response) { + if (response.ok) { + opts.onSuccess && opts.onSuccess(); + } else { + var error = new Error('Sentry error code: ' + response.status); + // It's called request only to keep compatibility with XHR interface + // and not add more redundant checks in setBackoffState method + error.request = response; + opts.onError && opts.onError(error); + } + }) + ['catch'](function() { + opts.onError && + opts.onError(new Error('Sentry error code: network unavailable')); + }); } - return this; - }, + var request = _window.XMLHttpRequest && new _window.XMLHttpRequest(); + if (!request) return; - /* - * Set/clear a user to be sent along with the payload. - * - * @param {object} user An object representing user data [optional] - * @return {Raven} - */ - setUserContext: function setUserContext(user) { - // Intentionally do not merge here since that's an unexpected behavior. - this._globalContext.user = user; - return this; - }, + // if browser doesn't support CORS (e.g. IE7), we are out of luck + var hasCORS = 'withCredentials' in request || typeof XDomainRequest !== 'undefined'; - /* - * Merge extra attributes to be sent along with the payload. - * - * @param {object} extra An object representing extra data [optional] - * @return {Raven} - */ - setExtraContext: function setExtraContext(extra) { - this._mergeContext('extra', extra); + if (!hasCORS) return; - return this; - }, + if ('withCredentials' in request) { + request.onreadystatechange = function() { + if (request.readyState !== 4) { + return; + } else if (request.status === 200) { + opts.onSuccess && opts.onSuccess(); + } else if (opts.onError) { + var err = new Error('Sentry error code: ' + request.status); + err.request = request; + opts.onError(err); + } + }; + } else { + request = new XDomainRequest(); + // xdomainrequest cannot go http -> https (or vice versa), + // so always use protocol relative + url = url.replace(/^https?:/, ''); - /* - * Merge tags to be sent along with the payload. - * - * @param {object} tags An object representing tags [optional] - * @return {Raven} - */ - setTagsContext: function setTagsContext(tags) { - this._mergeContext('tags', tags); + // onreadystatechange not supported by XDomainRequest + if (opts.onSuccess) { + request.onload = opts.onSuccess; + } + if (opts.onError) { + request.onerror = function() { + var err = new Error('Sentry error code: XDomainRequest'); + err.request = request; + opts.onError(err); + }; + } + } - return this; - }, + request.open('POST', url); - /* - * Clear all of the context. - * - * @return {Raven} - */ - clearContext: function clearContext() { - this._globalContext = {}; - return this; - }, + if (evaluatedHeaders) { + each(evaluatedHeaders, function(key, value) { + request.setRequestHeader(key, value); + }); + } - /* - * Get a copy of the current context. This cannot be mutated. - * - * @return {object} copy of context - */ - getContext: function getContext() { - // lol javascript - return JSON.parse(stringify_1(this._globalContext)); + request.send(stringify(opts.data)); }, - /* - * Set environment of application - * - * @param {string} environment Typically something like 'production'. - * @return {Raven} - */ - setEnvironment: function setEnvironment(environment) { - this._globalOptions.environment = environment; - return this; + _evaluateHash: function(hash) { + var evaluated = {}; + + for (var key in hash) { + if (hash.hasOwnProperty(key)) { + var value = hash[key]; + evaluated[key] = typeof value === 'function' ? value() : value; + } + } + + return evaluated; }, - /* - * Set release version of application - * - * @param {string} release Typically something like a git SHA to identify version - * @return {Raven} - */ - setRelease: function setRelease(release) { - this._globalOptions.release = release; - return this; + _logDebug: function(level) { + // We allow `Raven.debug` and `Raven.config(DSN, { debug: true })` to not make backward incompatible API change + if ( + this._originalConsoleMethods[level] && + (this.debug || this._globalOptions.debug) + ) { + // In IE<10 console methods do not have their own 'apply' method + Function.prototype.apply.call( + this._originalConsoleMethods[level], + this._originalConsole, + [].slice.call(arguments, 1) + ); + } }, - /* - * Set the dataCallback option - * - * @param {function} callback The callback to run which allows the - * data blob to be mutated before sending - * @return {Raven} - */ - setDataCallback: function setDataCallback(callback) { - var original = this._globalOptions.dataCallback; - this._globalOptions.dataCallback = keepOriginalCallback(original, callback); - return this; - }, + _mergeContext: function(key, context) { + if (isUndefined(context)) { + delete this._globalContext[key]; + } else { + this._globalContext[key] = objectMerge(this._globalContext[key] || {}, context); + } + } +}; - /* - * Set the breadcrumbCallback option - * - * @param {function} callback The callback to run which allows filtering - * or mutating breadcrumbs - * @return {Raven} - */ - setBreadcrumbCallback: function setBreadcrumbCallback(callback) { - var original = this._globalOptions.breadcrumbCallback; - this._globalOptions.breadcrumbCallback = keepOriginalCallback(original, callback); - return this; - }, +// Deprecations +Raven.prototype.setUser = Raven.prototype.setUserContext; +Raven.prototype.setReleaseContext = Raven.prototype.setRelease; - /* - * Set the shouldSendCallback option - * - * @param {function} callback The callback to run which allows - * introspecting the blob before sending - * @return {Raven} - */ - setShouldSendCallback: function setShouldSendCallback(callback) { - var original = this._globalOptions.shouldSendCallback; - this._globalOptions.shouldSendCallback = keepOriginalCallback(original, callback); - return this; - }, +module.exports = Raven; - /** - * Override the default HTTP transport mechanism that transmits data - * to the Sentry server. - * - * @param {function} transport Function invoked instead of the default - * `makeRequest` handler. - * - * @return {Raven} - */ - setTransport: function setTransport(transport) { - this._globalOptions.transport = transport; - return this; - }, +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"2":2,"3":3,"6":6,"7":7,"8":8,"9":9}],5:[function(_dereq_,module,exports){ +(function (global){ +/** + * Enforces a single instance of the Raven client, and the + * main entry point for Raven. If you are a consumer of the + * Raven library, you SHOULD load this file (vs raven.js). + **/ - /* - * Get the latest raw exception that was captured by Raven. - * - * @return {error} - */ - lastException: function lastException() { - return this._lastCapturedException; - }, +var RavenConstructor = _dereq_(4); - /* - * Get the last event id - * - * @return {string} - */ - lastEventId: function lastEventId() { - return this._lastEventId; - }, +// This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) +var _window = + typeof window !== 'undefined' + ? window + : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; +var _Raven = _window.Raven; - /* - * Determine if Raven is setup and ready to go. - * - * @return {boolean} - */ - isSetup: function isSetup() { - if (!this._hasJSON) return false; // needs JSON support +var Raven = new RavenConstructor(); - if (!this._globalServer) { - if (!this.ravenNotConfiguredError) { - this.ravenNotConfiguredError = true; +/* + * Allow multiple versions of Raven to be installed. + * Strip Raven from the global context and returns the instance. + * + * @return {Raven} + */ +Raven.noConflict = function() { + _window.Raven = _Raven; + return Raven; +}; - this._logDebug('error', 'Error: Raven has not been configured.'); - } +Raven.afterLoad(); - return false; - } +module.exports = Raven; - return true; - }, - afterLoad: function afterLoad() { - // TODO: remove window dependence? - // Attempt to initialize Raven on load - var RavenConfig = _window$1.RavenConfig; +/** + * DISCLAIMER: + * + * Expose `Client` constructor for cases where user want to track multiple "sub-applications" in one larger app. + * It's not meant to be used by a wide audience, so pleaaase make sure that you know what you're doing before using it. + * Accidentally calling `install` multiple times, may result in an unexpected behavior that's very hard to debug. + * + * It's called `Client' to be in-line with Raven Node implementation. + * + * HOWTO: + * + * import Raven from 'raven-js'; + * + * const someAppReporter = new Raven.Client(); + * const someOtherAppReporter = new Raven.Client(); + * + * someAppReporter.config('__DSN__', { + * ...config goes here + * }); + * + * someOtherAppReporter.config('__OTHER_DSN__', { + * ...config goes here + * }); + * + * someAppReporter.captureMessage(...); + * someAppReporter.captureException(...); + * someAppReporter.captureBreadcrumb(...); + * + * someOtherAppReporter.captureMessage(...); + * someOtherAppReporter.captureException(...); + * someOtherAppReporter.captureBreadcrumb(...); + * + * It should "just work". + */ +module.exports.Client = RavenConstructor; - if (RavenConfig) { - this.config(RavenConfig.dsn, RavenConfig.config).install(); - } - }, - showReportDialog: function showReportDialog(options) { - if (!_document // doesn't work without a document (React native) - ) return; - options = options || {}; - var lastEventId = options.eventId || this.lastEventId(); +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"4":4}],6:[function(_dereq_,module,exports){ +(function (global){ +var stringify = _dereq_(8); - if (!lastEventId) { - throw new configError('Missing eventId'); - } +var _window = + typeof window !== 'undefined' + ? window + : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; - var dsn = options.dsn || this._dsn; +function isObject(what) { + return typeof what === 'object' && what !== null; +} - if (!dsn) { - throw new configError('Missing DSN'); - } +// Yanked from https://git.io/vS8DV re-used under CC0 +// with some tiny modifications +function isError(value) { + switch ({}.toString.call(value)) { + case '[object Error]': + return true; + case '[object Exception]': + return true; + case '[object DOMException]': + return true; + default: + return value instanceof Error; + } +} - var encode = encodeURIComponent; - var qs = ''; - qs += '?eventId=' + encode(lastEventId); - qs += '&dsn=' + encode(dsn); - var user = options.user || this._globalContext.user; +function isErrorEvent(value) { + return supportsErrorEvent() && {}.toString.call(value) === '[object ErrorEvent]'; +} - if (user) { - if (user.name) qs += '&name=' + encode(user.name); - if (user.email) qs += '&email=' + encode(user.email); +function isUndefined(what) { + return what === void 0; +} + +function isFunction(what) { + return typeof what === 'function'; +} + +function isPlainObject(what) { + return Object.prototype.toString.call(what) === '[object Object]'; +} + +function isString(what) { + return Object.prototype.toString.call(what) === '[object String]'; +} + +function isArray(what) { + return Object.prototype.toString.call(what) === '[object Array]'; +} + +function isEmptyObject(what) { + if (!isPlainObject(what)) return false; + + for (var _ in what) { + if (what.hasOwnProperty(_)) { + return false; } + } + return true; +} - var globalServer = this._getGlobalServer(this._parseDSN(dsn)); +function supportsErrorEvent() { + try { + new ErrorEvent(''); // eslint-disable-line no-new + return true; + } catch (e) { + return false; + } +} - var script = _document.createElement('script'); +function supportsFetch() { + if (!('fetch' in _window)) return false; - script.async = true; - script.src = globalServer + '/api/embed/error-page/' + qs; + try { + new Headers(); // eslint-disable-line no-new + new Request(''); // eslint-disable-line no-new + new Response(); // eslint-disable-line no-new + return true; + } catch (e) { + return false; + } +} - (_document.head || _document.body).appendChild(script); - }, +// Despite all stars in the sky saying that Edge supports old draft syntax, aka 'never', 'always', 'origin' and 'default +// https://caniuse.com/#feat=referrer-policy +// It doesn't. And it throw exception instead of ignoring this parameter... +// REF: https://github.com/getsentry/raven-js/issues/1233 +function supportsReferrerPolicy() { + if (!supportsFetch()) return false; - /**** Private functions ****/ - _ignoreNextOnError: function _ignoreNextOnError() { - var self = this; - this._ignoreOnError += 1; - setTimeout(function () { - // onerror should trigger before setTimeout - self._ignoreOnError -= 1; + try { + // eslint-disable-next-line no-new + new Request('pickleRick', { + referrerPolicy: 'origin' }); - }, - _triggerEvent: function _triggerEvent(eventType, options) { - // NOTE: `event` is a native browser thing, so let's avoid conflicting wiht it - var evt, key; - if (!this._hasDocument) return; - options = options || {}; - eventType = 'raven' + eventType.substr(0, 1).toUpperCase() + eventType.substr(1); + return true; + } catch (e) { + return false; + } +} - if (_document.createEvent) { - evt = _document.createEvent('HTMLEvents'); - evt.initEvent(eventType, true, true); - } else { - evt = _document.createEventObject(); - evt.eventType = eventType; +function supportsPromiseRejectionEvent() { + return typeof PromiseRejectionEvent === 'function'; +} + +function wrappedCallback(callback) { + function dataCallback(data, original) { + var normalizedData = callback(data) || data; + if (original) { + return original(normalizedData) || normalizedData; } + return normalizedData; + } - for (key in options) { - if (hasKey(options, key)) { - evt[key] = options[key]; + return dataCallback; +} + +function each(obj, callback) { + var i, j; + + if (isUndefined(obj.length)) { + for (i in obj) { + if (hasKey(obj, i)) { + callback.call(null, i, obj[i]); } } - - if (_document.createEvent) { - // IE9 if standards - _document.dispatchEvent(evt); - } else { - // IE8 regardless of Quirks or Standards - // IE9 if quirks - try { - _document.fireEvent('on' + evt.eventType.toLowerCase(), evt); - } catch (e) {// Do nothing + } else { + j = obj.length; + if (j) { + for (i = 0; i < j; i++) { + callback.call(null, i, obj[i]); } } - }, + } +} - /** - * Wraps addEventListener to capture UI breadcrumbs - * @param evtName the event name (e.g. "click") - * @returns {Function} - * @private - */ - _breadcrumbEventHandler: function _breadcrumbEventHandler(evtName) { - var self = this; - return function (evt) { - // reset keypress timeout; e.g. triggering a 'click' after - // a 'keypress' will reset the keypress debounce so that a new - // set of keypresses can be recorded - self._keypressTimeout = null; // It's possible this handler might trigger multiple times for the same - // event (e.g. event propagation through node ancestors). Ignore if we've - // already captured the event. +function objectMerge(obj1, obj2) { + if (!obj2) { + return obj1; + } + each(obj2, function(key, value) { + obj1[key] = value; + }); + return obj1; +} - if (self._lastCapturedEvent === evt) return; - self._lastCapturedEvent = evt; // try/catch both: - // - accessing evt.target (see getsentry/raven-js#838, #768) - // - `htmlTreeAsString` because it's complex, and just accessing the DOM incorrectly - // can throw an exception in some circumstances. +/** + * This function is only used for react-native. + * react-native freezes object that have already been sent over the + * js bridge. We need this function in order to check if the object is frozen. + * So it's ok that objectFrozen returns false if Object.isFrozen is not + * supported because it's not relevant for other "platforms". See related issue: + * https://github.com/getsentry/react-native-sentry/issues/57 + */ +function objectFrozen(obj) { + if (!Object.isFrozen) { + return false; + } + return Object.isFrozen(obj); +} - var target; +function truncate(str, max) { + if (typeof max !== 'number') { + throw new Error('2nd argument to `truncate` function should be a number'); + } + if (typeof str !== 'string' || max === 0) { + return str; + } + return str.length <= max ? str : str.substr(0, max) + '\u2026'; +} - try { - target = htmlTreeAsString(evt.target); - } catch (e) { - target = ''; - } +/** + * hasKey, a better form of hasOwnProperty + * Example: hasKey(MainHostObject, property) === true/false + * + * @param {Object} host object to check property + * @param {string} key to check + */ +function hasKey(object, key) { + return Object.prototype.hasOwnProperty.call(object, key); +} - self.captureBreadcrumb({ - category: 'ui.' + evtName, - // e.g. ui.click, ui.input - message: target - }); - }; - }, +function joinRegExp(patterns) { + // Combine an array of regular expressions and strings into one large regexp + // Be mad. + var sources = [], + i = 0, + len = patterns.length, + pattern; - /** - * Wraps addEventListener to capture keypress UI events - * @returns {Function} - * @private - */ - _keypressEventHandler: function _keypressEventHandler() { - var self = this, - debounceDuration = 1000; // milliseconds - // TODO: if somehow user switches keypress target before - // debounce timeout is triggered, we will only capture - // a single breadcrumb from the FIRST target (acceptable?) + for (; i < len; i++) { + pattern = patterns[i]; + if (isString(pattern)) { + // If it's a string, we need to escape it + // Taken from: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions + sources.push(pattern.replace(/([.*+?^=!:${}()|\[\]\/\\])/g, '\\$1')); + } else if (pattern && pattern.source) { + // If it's a regexp already, we want to extract the source + sources.push(pattern.source); + } + // Intentionally skip other cases + } + return new RegExp(sources.join('|'), 'i'); +} - return function (evt) { - var target; +function urlencode(o) { + var pairs = []; + each(o, function(key, value) { + pairs.push(encodeURIComponent(key) + '=' + encodeURIComponent(value)); + }); + return pairs.join('&'); +} - try { - target = evt.target; - } catch (e) { - // just accessing event properties can throw an exception in some rare circumstances - // see: https://github.com/getsentry/raven-js/issues/838 - return; - } +// borrowed from https://tools.ietf.org/html/rfc3986#appendix-B +// intentionally using regex and not href parsing trick because React Native and other +// environments where DOM might not be available +function parseUrl(url) { + if (typeof url !== 'string') return {}; + var match = url.match(/^(([^:\/?#]+):)?(\/\/([^\/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?$/); - var tagName = target && target.tagName; // only consider keypress events on actual input elements - // this will disregard keypresses targeting body (e.g. tabbing - // through elements, hotkeys, etc) + // coerce to undefined values to empty string so we don't get 'undefined' + var query = match[6] || ''; + var fragment = match[8] || ''; + return { + protocol: match[2], + host: match[4], + path: match[5], + relative: match[5] + query + fragment // everything minus origin + }; +} +function uuid4() { + var crypto = _window.crypto || _window.msCrypto; - if (!tagName || tagName !== 'INPUT' && tagName !== 'TEXTAREA' && !target.isContentEditable) return; // record first keypress in a series, but ignore subsequent - // keypresses until debounce clears + if (!isUndefined(crypto) && crypto.getRandomValues) { + // Use window.crypto API if available + // eslint-disable-next-line no-undef + var arr = new Uint16Array(8); + crypto.getRandomValues(arr); - var timeout = self._keypressTimeout; + // set 4 in byte 7 + arr[3] = (arr[3] & 0xfff) | 0x4000; + // set 2 most significant bits of byte 9 to '10' + arr[4] = (arr[4] & 0x3fff) | 0x8000; - if (!timeout) { - self._breadcrumbEventHandler('input')(evt); + var pad = function(num) { + var v = num.toString(16); + while (v.length < 4) { + v = '0' + v; } - - clearTimeout(timeout); - self._keypressTimeout = setTimeout(function () { - self._keypressTimeout = null; - }, debounceDuration); + return v; }; - }, - - /** - * Captures a breadcrumb of type "navigation", normalizing input URLs - * @param to the originating URL - * @param from the target URL - * @private - */ - _captureUrlChange: function _captureUrlChange(from, to) { - var parsedLoc = parseUrl(this._location.href); - var parsedTo = parseUrl(to); - var parsedFrom = parseUrl(from); // because onpopstate only tells you the "new" (to) value of location.href, and - // not the previous (from) value, we need to track the value of the current URL - // state ourselves - - this._lastHref = to; // Use only the path component of the URL if the URL matches the current - // document (almost all the time when using pushState) - if (parsedLoc.protocol === parsedTo.protocol && parsedLoc.host === parsedTo.host) to = parsedTo.relative; - if (parsedLoc.protocol === parsedFrom.protocol && parsedLoc.host === parsedFrom.host) from = parsedFrom.relative; - this.captureBreadcrumb({ - category: 'navigation', - data: { - to: to, - from: from - } + return ( + pad(arr[0]) + + pad(arr[1]) + + pad(arr[2]) + + pad(arr[3]) + + pad(arr[4]) + + pad(arr[5]) + + pad(arr[6]) + + pad(arr[7]) + ); + } else { + // http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/2117523#2117523 + return 'xxxxxxxxxxxx4xxxyxxxxxxxxxxxxxxx'.replace(/[xy]/g, function(c) { + var r = (Math.random() * 16) | 0, + v = c === 'x' ? r : (r & 0x3) | 0x8; + return v.toString(16); }); - }, - _patchFunctionToString: function _patchFunctionToString() { - var self = this; - self._originalFunctionToString = Function.prototype.toString; // eslint-disable-next-line no-extend-native + } +} - Function.prototype.toString = function () { - if (typeof this === 'function' && this.__raven__) { - return self._originalFunctionToString.apply(this.__orig__, arguments); - } +/** + * Given a child DOM element, returns a query-selector statement describing that + * and its ancestors + * e.g. [HTMLElement] => body > div > input#foo.btn[name=baz] + * @param elem + * @returns {string} + */ +function htmlTreeAsString(elem) { + /* eslint no-extra-parens:0*/ + var MAX_TRAVERSE_HEIGHT = 5, + MAX_OUTPUT_LEN = 80, + out = [], + height = 0, + len = 0, + separator = ' > ', + sepLength = separator.length, + nextStr; - return self._originalFunctionToString.apply(this, arguments); - }; - }, - _unpatchFunctionToString: function _unpatchFunctionToString() { - if (this._originalFunctionToString) { - // eslint-disable-next-line no-extend-native - Function.prototype.toString = this._originalFunctionToString; + while (elem && height++ < MAX_TRAVERSE_HEIGHT) { + nextStr = htmlElementAsString(elem); + // bail out if + // - nextStr is the 'html' element + // - the length of the string that would be created exceeds MAX_OUTPUT_LEN + // (ignore this limit if we are on the first iteration) + if ( + nextStr === 'html' || + (height > 1 && len + out.length * sepLength + nextStr.length >= MAX_OUTPUT_LEN) + ) { + break; } - }, - /** - * Wrap timer functions and event targets to catch errors and provide - * better metadata. - */ - _instrumentTryCatch: function _instrumentTryCatch() { - var self = this; - var wrappedBuiltIns = self._wrappedBuiltIns; + out.push(nextStr); - function wrapTimeFn(orig) { - return function (fn, t) { - // preserve arity - // Make a copy of the arguments to prevent deoptimization - // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments - var args = new Array(arguments.length); + len += nextStr.length; + elem = elem.parentNode; + } - for (var i = 0; i < args.length; ++i) { - args[i] = arguments[i]; - } + return out.reverse().join(separator); +} - var originalCallback = args[0]; +/** + * Returns a simple, query-selector representation of a DOM element + * e.g. [HTMLElement] => input#foo.btn[name=baz] + * @param HTMLElement + * @returns {string} + */ +function htmlElementAsString(elem) { + var out = [], + className, + classes, + key, + attr, + i; - if (isFunction(originalCallback)) { - args[0] = self.wrap(originalCallback); - } // IE < 9 doesn't support .call/.apply on setInterval/setTimeout, but it - // also supports only two arguments and doesn't care what this is, so we - // can just call the original function directly. + if (!elem || !elem.tagName) { + return ''; + } + out.push(elem.tagName.toLowerCase()); + if (elem.id) { + out.push('#' + elem.id); + } - if (orig.apply) { - return orig.apply(this, args); - } else { - return orig(args[0], args[1]); - } - }; + className = elem.className; + if (className && isString(className)) { + classes = className.split(/\s+/); + for (i = 0; i < classes.length; i++) { + out.push('.' + classes[i]); } + } + var attrWhitelist = ['type', 'name', 'title', 'alt']; + for (i = 0; i < attrWhitelist.length; i++) { + key = attrWhitelist[i]; + attr = elem.getAttribute(key); + if (attr) { + out.push('[' + key + '="' + attr + '"]'); + } + } + return out.join(''); +} - var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; - - function wrapEventTarget(global) { - var proto = _window$1[global] && _window$1[global].prototype; +/** + * Returns true if either a OR b is truthy, but not both + */ +function isOnlyOneTruthy(a, b) { + return !!(!!a ^ !!b); +} - if (proto && proto.hasOwnProperty && proto.hasOwnProperty('addEventListener')) { - fill(proto, 'addEventListener', function (orig) { - return function (evtName, fn, capture, secure) { - // preserve arity - try { - if (fn && fn.handleEvent) { - fn.handleEvent = self.wrap(fn.handleEvent); - } - } catch (err) {} // can sometimes get 'Permission denied to access property "handle Event' - // More breadcrumb DOM capture ... done here and not in `_instrumentBreadcrumbs` - // so that we don't have more than one wrapper function +/** + * Returns true if both parameters are undefined + */ +function isBothUndefined(a, b) { + return isUndefined(a) && isUndefined(b); +} +/** + * Returns true if the two input exception interfaces have the same content + */ +function isSameException(ex1, ex2) { + if (isOnlyOneTruthy(ex1, ex2)) return false; - var before, clickHandler, keypressHandler; + ex1 = ex1.values[0]; + ex2 = ex2.values[0]; - if (autoBreadcrumbs && autoBreadcrumbs.dom && (global === 'EventTarget' || global === 'Node')) { - // NOTE: generating multiple handlers per addEventListener invocation, should - // revisit and verify we can just use one (almost certainly) - clickHandler = self._breadcrumbEventHandler('click'); - keypressHandler = self._keypressEventHandler(); + if (ex1.type !== ex2.type || ex1.value !== ex2.value) return false; - before = function before(evt) { - // need to intercept every DOM event in `before` argument, in case that - // same wrapped method is re-used for different events (e.g. mousemove THEN click) - // see #724 - if (!evt) return; - var eventType; + // in case both stacktraces are undefined, we can't decide so default to false + if (isBothUndefined(ex1.stacktrace, ex2.stacktrace)) return false; - try { - eventType = evt.type; - } catch (e) { - // just accessing event properties can throw an exception in some rare circumstances - // see: https://github.com/getsentry/raven-js/issues/838 - return; - } + return isSameStacktrace(ex1.stacktrace, ex2.stacktrace); +} - if (eventType === 'click') return clickHandler(evt);else if (eventType === 'keypress') return keypressHandler(evt); - }; - } - - return orig.call(this, evtName, self.wrap(fn, undefined, before), capture, secure); - }; - }, wrappedBuiltIns); - fill(proto, 'removeEventListener', function (orig) { - return function (evt, fn, capture, secure) { - try { - fn = fn && (fn.__raven_wrapper__ ? fn.__raven_wrapper__ : fn); - } catch (e) {// ignore, accessing __raven_wrapper__ will throw in some Selenium environments - } - - return orig.call(this, evt, fn, capture, secure); - }; - }, wrappedBuiltIns); - } - } +/** + * Returns true if the two input stack trace interfaces have the same content + */ +function isSameStacktrace(stack1, stack2) { + if (isOnlyOneTruthy(stack1, stack2)) return false; - fill(_window$1, 'setTimeout', wrapTimeFn, wrappedBuiltIns); - fill(_window$1, 'setInterval', wrapTimeFn, wrappedBuiltIns); + var frames1 = stack1.frames; + var frames2 = stack2.frames; - if (_window$1.requestAnimationFrame) { - fill(_window$1, 'requestAnimationFrame', function (orig) { - return function (cb) { - return orig(self.wrap(cb)); - }; - }, wrappedBuiltIns); - } // event targets borrowed from bugsnag-js: - // https://github.com/bugsnag/bugsnag-js/blob/master/src/bugsnag.js#L666 + // Exit early if frame count differs + if (frames1.length !== frames2.length) return false; + // Iterate through every frame; bail out if anything differs + var a, b; + for (var i = 0; i < frames1.length; i++) { + a = frames1[i]; + b = frames2[i]; + if ( + a.filename !== b.filename || + a.lineno !== b.lineno || + a.colno !== b.colno || + a['function'] !== b['function'] + ) + return false; + } + return true; +} - var eventTargets = ['EventTarget', 'Window', 'Node', 'ApplicationCache', 'AudioTrackList', 'ChannelMergerNode', 'CryptoOperation', 'EventSource', 'FileReader', 'HTMLUnknownElement', 'IDBDatabase', 'IDBRequest', 'IDBTransaction', 'KeyOperation', 'MediaController', 'MessagePort', 'ModalWindow', 'Notification', 'SVGElementInstance', 'Screen', 'TextTrack', 'TextTrackCue', 'TextTrackList', 'WebSocket', 'WebSocketWorker', 'Worker', 'XMLHttpRequest', 'XMLHttpRequestEventTarget', 'XMLHttpRequestUpload']; +/** + * Polyfill a method + * @param obj object e.g. `document` + * @param name method name present on object e.g. `addEventListener` + * @param replacement replacement function + * @param track {optional} record instrumentation to an array + */ +function fill(obj, name, replacement, track) { + if (obj == null) return; + var orig = obj[name]; + obj[name] = replacement(orig); + obj[name].__raven__ = true; + obj[name].__orig__ = orig; + if (track) { + track.push([obj, name, orig]); + } +} - for (var i = 0; i < eventTargets.length; i++) { - wrapEventTarget(eventTargets[i]); - } - }, +/** + * Join values in array + * @param input array of values to be joined together + * @param delimiter string to be placed in-between values + * @returns {string} + */ +function safeJoin(input, delimiter) { + if (!isArray(input)) return ''; - /** - * Instrument browser built-ins w/ breadcrumb capturing - * - XMLHttpRequests - * - DOM interactions (click/typing) - * - window.location changes - * - console - * - * Can be disabled or individually configured via the `autoBreadcrumbs` config option - */ - _instrumentBreadcrumbs: function _instrumentBreadcrumbs() { - var self = this; - var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; - var wrappedBuiltIns = self._wrappedBuiltIns; + var output = []; - function wrapProp(prop, xhr) { - if (prop in xhr && isFunction(xhr[prop])) { - fill(xhr, prop, function (orig) { - return self.wrap(orig); - }); // intentionally don't track filled methods on XHR instances - } + for (var i = 0; i < input.length; i++) { + try { + output.push(String(input[i])); + } catch (e) { + output.push('[value cannot be serialized]'); } + } - if (autoBreadcrumbs.xhr && 'XMLHttpRequest' in _window$1) { - var xhrproto = XMLHttpRequest.prototype; - fill(xhrproto, 'open', function (origOpen) { - return function (method, url) { - // preserve arity - // if Sentry key appears in URL, don't capture - if (isString(url) && url.indexOf(self._globalKey) === -1) { - this.__raven_xhr = { - method: method, - url: url, - status_code: null - }; - } + return output.join(delimiter); +} - return origOpen.apply(this, arguments); - }; - }, wrappedBuiltIns); - fill(xhrproto, 'send', function (origSend) { - return function () { - // preserve arity - var xhr = this; - - function onreadystatechangeHandler() { - if (xhr.__raven_xhr && xhr.readyState === 4) { - try { - // touching statusCode in some platforms throws - // an exception - xhr.__raven_xhr.status_code = xhr.status; - } catch (e) { - /* do nothing */ - } +// Default Node.js REPL depth +var MAX_SERIALIZE_EXCEPTION_DEPTH = 3; +// 50kB, as 100kB is max payload size, so half sounds reasonable +var MAX_SERIALIZE_EXCEPTION_SIZE = 50 * 1024; +var MAX_SERIALIZE_KEYS_LENGTH = 40; - self.captureBreadcrumb({ - type: 'http', - category: 'xhr', - data: xhr.__raven_xhr - }); - } - } +function utf8Length(value) { + return ~-encodeURI(value).split(/%..|./).length; +} - var props = ['onload', 'onerror', 'onprogress']; +function jsonSize(value) { + return utf8Length(JSON.stringify(value)); +} - for (var j = 0; j < props.length; j++) { - wrapProp(props[j], xhr); - } +function serializeValue(value) { + if (typeof value === 'string') { + var maxLength = 40; + return truncate(value, maxLength); + } else if ( + typeof value === 'number' || + typeof value === 'boolean' || + typeof value === 'undefined' + ) { + return value; + } - if ('onreadystatechange' in xhr && isFunction(xhr.onreadystatechange)) { - fill(xhr, 'onreadystatechange', function (orig) { - return self.wrap(orig, undefined, onreadystatechangeHandler); - } - /* intentionally don't track this instrumentation */ - ); - } else { - // if onreadystatechange wasn't actually set by the page on this xhr, we - // are free to set our own and capture the breadcrumb - xhr.onreadystatechange = onreadystatechangeHandler; - } + var type = Object.prototype.toString.call(value); - return origSend.apply(this, arguments); - }; - }, wrappedBuiltIns); - } + // Node.js REPL notation + if (type === '[object Object]') return '[Object]'; + if (type === '[object Array]') return '[Array]'; + if (type === '[object Function]') + return value.name ? '[Function: ' + value.name + ']' : '[Function]'; - if (autoBreadcrumbs.xhr && supportsFetch()) { - fill(_window$1, 'fetch', function (origFetch) { - return function () { - // preserve arity - // Make a copy of the arguments to prevent deoptimization - // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments - var args = new Array(arguments.length); - - for (var i = 0; i < args.length; ++i) { - args[i] = arguments[i]; - } + return value; +} - var fetchInput = args[0]; - var method = 'GET'; - var url; +function serializeObject(value, depth) { + if (depth === 0) return serializeValue(value); + + if (isPlainObject(value)) { + return Object.keys(value).reduce(function(acc, key) { + acc[key] = serializeObject(value[key], depth - 1); + return acc; + }, {}); + } else if (Array.isArray(value)) { + return value.map(function(val) { + return serializeObject(val, depth - 1); + }); + } - if (typeof fetchInput === 'string') { - url = fetchInput; - } else if ('Request' in _window$1 && fetchInput instanceof _window$1.Request) { - url = fetchInput.url; + return serializeValue(value); +} - if (fetchInput.method) { - method = fetchInput.method; - } - } else { - url = '' + fetchInput; - } // if Sentry key appears in URL, don't capture, as it's our own request +function serializeException(ex, depth, maxSize) { + if (!isPlainObject(ex)) return ex; + depth = typeof depth !== 'number' ? MAX_SERIALIZE_EXCEPTION_DEPTH : depth; + maxSize = typeof depth !== 'number' ? MAX_SERIALIZE_EXCEPTION_SIZE : maxSize; - if (url.indexOf(self._globalKey) !== -1) { - return origFetch.apply(this, args); - } + var serialized = serializeObject(ex, depth); - if (args[1] && args[1].method) { - method = args[1].method; - } + if (jsonSize(stringify(serialized)) > maxSize) { + return serializeException(ex, depth - 1); + } - var fetchData = { - method: method, - url: url, - status_code: null - }; - return origFetch.apply(this, args).then(function (response) { - fetchData.status_code = response.status; - self.captureBreadcrumb({ - type: 'http', - category: 'fetch', - data: fetchData - }); - return response; - }); - }; - }, wrappedBuiltIns); - } // Capture breadcrumbs from any click that is unhandled / bubbled up all the way - // to the document. Do this before we instrument addEventListener. + return serialized; +} +function serializeKeysForMessage(keys, maxLength) { + if (typeof keys === 'number' || typeof keys === 'string') return keys.toString(); + if (!Array.isArray(keys)) return ''; - if (autoBreadcrumbs.dom && this._hasDocument) { - if (_document.addEventListener) { - _document.addEventListener('click', self._breadcrumbEventHandler('click'), false); + keys = keys.filter(function(key) { + return typeof key === 'string'; + }); + if (keys.length === 0) return '[object has no keys]'; - _document.addEventListener('keypress', self._keypressEventHandler(), false); - } else { - // IE8 Compatibility - _document.attachEvent('onclick', self._breadcrumbEventHandler('click')); + maxLength = typeof maxLength !== 'number' ? MAX_SERIALIZE_KEYS_LENGTH : maxLength; + if (keys[0].length >= maxLength) return keys[0]; - _document.attachEvent('onkeypress', self._keypressEventHandler()); - } - } // record navigation (URL) changes - // NOTE: in Chrome App environment, touching history.pushState, *even inside - // a try/catch block*, will cause Chrome to output an error to console.error - // borrowed from: https://github.com/angular/angular.js/pull/13945/files + for (var usedKeys = keys.length; usedKeys > 0; usedKeys--) { + var serialized = keys.slice(0, usedKeys).join(', '); + if (serialized.length > maxLength) continue; + if (usedKeys === keys.length) return serialized; + return serialized + '\u2026'; + } + return ''; +} - var chrome = _window$1.chrome; - var isChromePackagedApp = chrome && chrome.app && chrome.app.runtime; - var hasPushAndReplaceState = !isChromePackagedApp && _window$1.history && history.pushState && history.replaceState; +function sanitize(input, sanitizeKeys) { + if (!isArray(sanitizeKeys) || (isArray(sanitizeKeys) && sanitizeKeys.length === 0)) + return input; - if (autoBreadcrumbs.location && hasPushAndReplaceState) { - // TODO: remove onpopstate handler on uninstall() - var oldOnPopState = _window$1.onpopstate; + var sanitizeRegExp = joinRegExp(sanitizeKeys); + var sanitizeMask = '********'; + var safeInput; - _window$1.onpopstate = function () { - var currentHref = self._location.href; + try { + safeInput = JSON.parse(stringify(input)); + } catch (o_O) { + return input; + } - self._captureUrlChange(self._lastHref, currentHref); + function sanitizeWorker(workerInput) { + if (isArray(workerInput)) { + return workerInput.map(function(val) { + return sanitizeWorker(val); + }); + } - if (oldOnPopState) { - return oldOnPopState.apply(this, arguments); + if (isPlainObject(workerInput)) { + return Object.keys(workerInput).reduce(function(acc, k) { + if (sanitizeRegExp.test(k)) { + acc[k] = sanitizeMask; + } else { + acc[k] = sanitizeWorker(workerInput[k]); } - }; - - var historyReplacementFunction = function historyReplacementFunction(origHistFunction) { - // note history.pushState.length is 0; intentionally not declaring - // params to preserve 0 arity - return function () - /* state, title, url */ - { - var url = arguments.length > 2 ? arguments[2] : undefined; // url argument is optional - - if (url) { - // coerce to string (this is what pushState does) - self._captureUrlChange(self._lastHref, url + ''); - } - - return origHistFunction.apply(this, arguments); - }; - }; - - fill(history, 'pushState', historyReplacementFunction, wrappedBuiltIns); - fill(history, 'replaceState', historyReplacementFunction, wrappedBuiltIns); + return acc; + }, {}); } - if (autoBreadcrumbs.console && 'console' in _window$1 && console.log) { - // console - var consoleMethodCallback = function consoleMethodCallback(msg, data) { - self.captureBreadcrumb({ - message: msg, - level: data.level, - category: 'console' - }); - }; - - each(['debug', 'info', 'warn', 'error', 'log'], function (_, level) { - wrapConsoleMethod(console, level, consoleMethodCallback); - }); - } - }, - _restoreBuiltIns: function _restoreBuiltIns() { - // restore any wrapped builtins - var builtin; + return workerInput; + } - while (this._wrappedBuiltIns.length) { - builtin = this._wrappedBuiltIns.shift(); - var obj = builtin[0], - name = builtin[1], - orig = builtin[2]; - obj[name] = orig; - } - }, - _restoreConsole: function _restoreConsole() { - // eslint-disable-next-line guard-for-in - for (var method in this._originalConsoleMethods) { - this._originalConsole[method] = this._originalConsoleMethods[method]; - } - }, - _drainPlugins: function _drainPlugins() { - var self = this; // FIX ME TODO + return sanitizeWorker(safeInput); +} - each(this._plugins, function (_, plugin) { - var installer = plugin[0]; - var args = plugin[1]; - installer.apply(self, [self].concat(args)); - }); - }, - _parseDSN: function _parseDSN(str) { - var m = dsnPattern.exec(str), - dsn = {}, - i = 7; +module.exports = { + isObject: isObject, + isError: isError, + isErrorEvent: isErrorEvent, + isUndefined: isUndefined, + isFunction: isFunction, + isPlainObject: isPlainObject, + isString: isString, + isArray: isArray, + isEmptyObject: isEmptyObject, + supportsErrorEvent: supportsErrorEvent, + supportsFetch: supportsFetch, + supportsReferrerPolicy: supportsReferrerPolicy, + supportsPromiseRejectionEvent: supportsPromiseRejectionEvent, + wrappedCallback: wrappedCallback, + each: each, + objectMerge: objectMerge, + truncate: truncate, + objectFrozen: objectFrozen, + hasKey: hasKey, + joinRegExp: joinRegExp, + urlencode: urlencode, + uuid4: uuid4, + htmlTreeAsString: htmlTreeAsString, + htmlElementAsString: htmlElementAsString, + isSameException: isSameException, + isSameStacktrace: isSameStacktrace, + parseUrl: parseUrl, + fill: fill, + safeJoin: safeJoin, + serializeException: serializeException, + serializeKeysForMessage: serializeKeysForMessage, + sanitize: sanitize +}; - try { - while (i--) { - dsn[dsnKeys[i]] = m[i] || ''; - } - } catch (e) { - throw new configError('Invalid DSN: ' + str); - } +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"8":8}],7:[function(_dereq_,module,exports){ +(function (global){ +var utils = _dereq_(6); - if (dsn.pass && !this._globalOptions.allowSecretKey) { - throw new configError('Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key'); - } +/* + TraceKit - Cross brower stack traces - return dsn; - }, - _getGlobalServer: function _getGlobalServer(uri) { - // assemble the endpoint from the uri pieces - var globalServer = '//' + uri.host + (uri.port ? ':' + uri.port : ''); + This was originally forked from github.com/occ/TraceKit, but has since been + largely re-written and is now maintained as part of raven-js. Tests for + this are in test/vendor. - if (uri.protocol) { - globalServer = uri.protocol + ':' + globalServer; - } + MIT license +*/ - return globalServer; - }, - _handleOnErrorStackInfo: function _handleOnErrorStackInfo() { - // if we are intentionally ignoring errors via onerror, bail out - if (!this._ignoreOnError) { - this._handleStackInfo.apply(this, arguments); - } - }, - _handleStackInfo: function _handleStackInfo(stackInfo, options) { - var frames = this._prepareFrames(stackInfo, options); +var TraceKit = { + collectWindowErrors: true, + debug: false +}; - this._triggerEvent('handle', { - stackInfo: stackInfo, - options: options - }); +// This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) +var _window = + typeof window !== 'undefined' + ? window + : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; - this._processException(stackInfo.name, stackInfo.message, stackInfo.url, stackInfo.lineno, frames, options); - }, - _prepareFrames: function _prepareFrames(stackInfo, options) { - var self = this; - var frames = []; +// global reference to slice +var _slice = [].slice; +var UNKNOWN_FUNCTION = '?'; - if (stackInfo.stack && stackInfo.stack.length) { - each(stackInfo.stack, function (i, stack) { - var frame = self._normalizeFrame(stack, stackInfo.url); +// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error#Error_types +var ERROR_TYPES_RE = /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/; - if (frame) { - frames.push(frame); - } - }); // e.g. frames captured via captureMessage throw +function getLocationHref() { + if (typeof document === 'undefined' || document.location == null) return ''; - if (options && options.trimHeadFrames) { - for (var j = 0; j < options.trimHeadFrames && j < frames.length; j++) { - frames[j].in_app = false; - } - } - } + return document.location.href; +} - frames = frames.slice(0, this._globalOptions.stackTraceLimit); - return frames; - }, - _normalizeFrame: function _normalizeFrame(frame, stackInfoUrl) { - // normalize the frames data - var normalized = { - filename: frame.url, - lineno: frame.line, - colno: frame.column, - function: frame.func || '?' - }; // Case when we don't have any information about the error - // E.g. throwing a string or raw object, instead of an `Error` in Firefox - // Generating synthetic error doesn't add any value here - // - // We should probably somehow let a user know that they should fix their code - - if (!frame.url) { - normalized.filename = stackInfoUrl; // fallback to whole stacks url from onerror handler - } - - normalized.in_app = !( // determine if an exception came from outside of our app - // first we check the global includePaths list. - !!this._globalOptions.includePaths.test && !this._globalOptions.includePaths.test(normalized.filename) || // Now we check for fun, if the function name is Raven or TraceKit - /(Raven|TraceKit)\./.test(normalized['function']) || // finally, we do a last ditch effort and check for raven.min.js - /raven\.(min\.)?js$/.test(normalized.filename)); - return normalized; - }, - _processException: function _processException(type, message, fileurl, lineno, frames, options) { - var prefixedMessage = (type ? type + ': ' : '') + (message || ''); - - if (!!this._globalOptions.ignoreErrors.test && (this._globalOptions.ignoreErrors.test(message) || this._globalOptions.ignoreErrors.test(prefixedMessage))) { - return; - } - - var stacktrace; +/** + * TraceKit.report: cross-browser processing of unhandled exceptions + * + * Syntax: + * TraceKit.report.subscribe(function(stackInfo) { ... }) + * TraceKit.report.unsubscribe(function(stackInfo) { ... }) + * TraceKit.report(exception) + * try { ...code... } catch(ex) { TraceKit.report(ex); } + * + * Supports: + * - Firefox: full stack trace with line numbers, plus column number + * on top frame; column number is not guaranteed + * - Opera: full stack trace with line and column numbers + * - Chrome: full stack trace with line and column numbers + * - Safari: line and column number for the top frame only; some frames + * may be missing, and column number is not guaranteed + * - IE: line and column number for the top frame only; some frames + * may be missing, and column number is not guaranteed + * + * In theory, TraceKit should work on all of the following versions: + * - IE5.5+ (only 8.0 tested) + * - Firefox 0.9+ (only 3.5+ tested) + * - Opera 7+ (only 10.50 tested; versions 9 and earlier may require + * Exceptions Have Stacktrace to be enabled in opera:config) + * - Safari 3+ (only 4+ tested) + * - Chrome 1+ (only 5+ tested) + * - Konqueror 3.5+ (untested) + * + * Requires TraceKit.computeStackTrace. + * + * Tries to catch all unhandled exceptions and report them to the + * subscribed handlers. Please note that TraceKit.report will rethrow the + * exception. This is REQUIRED in order to get a useful stack trace in IE. + * If the exception does not reach the top of the browser, you will only + * get a stack trace from the point where TraceKit.report was called. + * + * Handlers receive a stackInfo object as described in the + * TraceKit.computeStackTrace docs. + */ +TraceKit.report = (function reportModuleWrapper() { + var handlers = [], + lastArgs = null, + lastException = null, + lastExceptionStack = null; - if (frames && frames.length) { - fileurl = frames[0].filename || fileurl; // Sentry expects frames oldest to newest - // and JS sends them as newest to oldest + /** + * Add a crash handler. + * @param {Function} handler + */ + function subscribe(handler) { + installGlobalHandler(); + handlers.push(handler); + } - frames.reverse(); - stacktrace = { - frames: frames - }; - } else if (fileurl) { - stacktrace = { - frames: [{ - filename: fileurl, - lineno: lineno, - in_app: true - }] - }; + /** + * Remove a crash handler. + * @param {Function} handler + */ + function unsubscribe(handler) { + for (var i = handlers.length - 1; i >= 0; --i) { + if (handlers[i] === handler) { + handlers.splice(i, 1); + } } + } - if (!!this._globalOptions.ignoreUrls.test && this._globalOptions.ignoreUrls.test(fileurl)) { - return; - } + /** + * Remove all crash handlers. + */ + function unsubscribeAll() { + uninstallGlobalHandler(); + handlers = []; + } - if (!!this._globalOptions.whitelistUrls.test && !this._globalOptions.whitelistUrls.test(fileurl)) { + /** + * Dispatch stack information to all handlers. + * @param {Object.} stack + */ + function notifyHandlers(stack, isWindowError) { + var exception = null; + if (isWindowError && !TraceKit.collectWindowErrors) { return; } - - var data = objectMerge({ - // sentry.interfaces.Exception - exception: { - values: [{ - type: type, - value: message, - stacktrace: stacktrace - }] - }, - culprit: fileurl - }, options); // Fire away! - - this._send(data); - }, - _trimPacket: function _trimPacket(data) { - // For now, we only want to truncate the two different messages - // but this could/should be expanded to just trim everything - var max = this._globalOptions.maxMessageLength; - - if (data.message) { - data.message = truncate(data.message, max); - } - - if (data.exception) { - var exception = data.exception.values[0]; - exception.value = truncate(exception.value, max); - } - - var request = data.request; - - if (request) { - if (request.url) { - request.url = truncate(request.url, this._globalOptions.maxUrlLength); + for (var i in handlers) { + if (handlers.hasOwnProperty(i)) { + try { + handlers[i].apply(null, [stack].concat(_slice.call(arguments, 2))); + } catch (inner) { + exception = inner; + } } + } - if (request.Referer) { - request.Referer = truncate(request.Referer, this._globalOptions.maxUrlLength); - } + if (exception) { + throw exception; } + } - if (data.breadcrumbs && data.breadcrumbs.values) this._trimBreadcrumbs(data.breadcrumbs); - return data; - }, + var _oldOnerrorHandler, _onErrorHandlerInstalled; /** - * Truncate breadcrumb values (right now just URLs) + * Ensures all global unhandled exceptions are recorded. + * Supported by Gecko and IE. + * @param {string} msg Error message. + * @param {string} url URL of script that generated the exception. + * @param {(number|string)} lineNo The line number at which the error + * occurred. + * @param {?(number|string)} colNo The column number at which the error + * occurred. + * @param {?Error} ex The actual Error object. */ - _trimBreadcrumbs: function _trimBreadcrumbs(breadcrumbs) { - // known breadcrumb properties with urls - // TODO: also consider arbitrary prop values that start with (https?)?:// - var urlProps = ['to', 'from', 'url'], - urlProp, - crumb, - data; + function traceKitWindowOnError(msg, url, lineNo, colNo, ex) { + var stack = null; + // If 'ex' is ErrorEvent, get real Error from inside + var exception = utils.isErrorEvent(ex) ? ex.error : ex; + // If 'msg' is ErrorEvent, get real message from inside + var message = utils.isErrorEvent(msg) ? msg.message : msg; - for (var i = 0; i < breadcrumbs.values.length; ++i) { - crumb = breadcrumbs.values[i]; - if (!crumb.hasOwnProperty('data') || !isObject(crumb.data) || objectFrozen(crumb.data)) continue; - data = objectMerge({}, crumb.data); + if (lastExceptionStack) { + TraceKit.computeStackTrace.augmentStackTraceWithInitialElement( + lastExceptionStack, + url, + lineNo, + message + ); + processLastException(); + } else if (exception && utils.isError(exception)) { + // non-string `exception` arg; attempt to extract stack trace - for (var j = 0; j < urlProps.length; ++j) { - urlProp = urlProps[j]; + // New chrome and blink send along a real error object + // Let's just report that like a normal error. + // See: https://mikewest.org/2013/08/debugging-runtime-errors-with-window-onerror + stack = TraceKit.computeStackTrace(exception); + notifyHandlers(stack, true); + } else { + var location = { + url: url, + line: lineNo, + column: colNo + }; - if (data.hasOwnProperty(urlProp) && data[urlProp]) { - data[urlProp] = truncate(data[urlProp], this._globalOptions.maxUrlLength); + var name = undefined; + var groups; + + if ({}.toString.call(message) === '[object String]') { + var groups = message.match(ERROR_TYPES_RE); + if (groups) { + name = groups[1]; + message = groups[2]; } } - breadcrumbs.values[i].data = data; - } - }, - _getHttpData: function _getHttpData() { - if (!this._hasNavigator && !this._hasDocument) return; - var httpData = {}; + location.func = UNKNOWN_FUNCTION; - if (this._hasNavigator && _navigator.userAgent) { - httpData.headers = { - 'User-Agent': navigator.userAgent + stack = { + name: name, + message: message, + url: getLocationHref(), + stack: [location] }; - } // Check in `window` instead of `document`, as we may be in ServiceWorker environment + notifyHandlers(stack, true); + } + + if (_oldOnerrorHandler) { + return _oldOnerrorHandler.apply(this, arguments); + } + return false; + } - if (_window$1.location && _window$1.location.href) { - httpData.url = _window$1.location.href; + function installGlobalHandler() { + if (_onErrorHandlerInstalled) { + return; } + _oldOnerrorHandler = _window.onerror; + _window.onerror = traceKitWindowOnError; + _onErrorHandlerInstalled = true; + } - if (this._hasDocument && _document.referrer) { - if (!httpData.headers) httpData.headers = {}; - httpData.headers.Referer = _document.referrer; + function uninstallGlobalHandler() { + if (!_onErrorHandlerInstalled) { + return; } + _window.onerror = _oldOnerrorHandler; + _onErrorHandlerInstalled = false; + _oldOnerrorHandler = undefined; + } - return httpData; - }, - _resetBackoff: function _resetBackoff() { - this._backoffDuration = 0; - this._backoffStart = null; - }, - _shouldBackoff: function _shouldBackoff() { - return this._backoffDuration && now() - this._backoffStart < this._backoffDuration; - }, + function processLastException() { + var _lastExceptionStack = lastExceptionStack, + _lastArgs = lastArgs; + lastArgs = null; + lastExceptionStack = null; + lastException = null; + notifyHandlers.apply(null, [_lastExceptionStack, false].concat(_lastArgs)); + } /** - * Returns true if the in-process data payload matches the signature - * of the previously-sent data - * - * NOTE: This has to be done at this level because TraceKit can generate - * data from window.onerror WITHOUT an exception object (IE8, IE9, - * other old browsers). This can take the form of an "exception" - * data object with a single frame (derived from the onerror args). + * Reports an unhandled Error to TraceKit. + * @param {Error} ex + * @param {?boolean} rethrow If false, do not re-throw the exception. + * Only used for window.onerror to not cause an infinite loop of + * rethrowing. */ - _isRepeatData: function _isRepeatData(current) { - var last = this._lastData; - if (!last || current.message !== last.message || // defined for captureMessage - current.culprit !== last.culprit // defined for captureException/onerror - ) return false; // Stacktrace interface (i.e. from captureMessage) - - if (current.stacktrace || last.stacktrace) { - return isSameStacktrace(current.stacktrace, last.stacktrace); - } else if (current.exception || last.exception) { - // Exception interface (i.e. from captureException/onerror) - return isSameException(current.exception, last.exception); + function report(ex, rethrow) { + var args = _slice.call(arguments, 1); + if (lastExceptionStack) { + if (lastException === ex) { + return; // already caught by an inner catch block, ignore + } else { + processLastException(); + } } - return true; - }, - _setBackoffState: function _setBackoffState(request) { - // If we are already in a backoff state, don't change anything - if (this._shouldBackoff()) { - return; - } + var stack = TraceKit.computeStackTrace(ex); + lastExceptionStack = stack; + lastException = ex; + lastArgs = args; - var status = request.status; // 400 - project_id doesn't exist or some other fatal - // 401 - invalid/revoked dsn - // 429 - too many requests - - if (!(status === 400 || status === 401 || status === 429)) return; - var retry; - - try { - // If Retry-After is not in Access-Control-Expose-Headers, most - // browsers will throw an exception trying to access it - if (supportsFetch()) { - retry = request.headers.get('Retry-After'); - } else { - retry = request.getResponseHeader('Retry-After'); - } // Retry-After is returned in seconds - - - retry = parseInt(retry, 10) * 1000; - } catch (e) { - /* eslint no-empty:0 */ - } - - this._backoffDuration = retry ? // If Sentry server returned a Retry-After value, use it - retry : // Otherwise, double the last backoff duration (starts at 1 sec) - this._backoffDuration * 2 || 1000; - this._backoffStart = now(); - }, - _send: function _send(data) { - var globalOptions = this._globalOptions; - - var baseData = { - project: this._globalProject, - logger: globalOptions.logger, - platform: 'javascript' - }, - httpData = this._getHttpData(); - - if (httpData) { - baseData.request = httpData; - } // HACK: delete `trimHeadFrames` to prevent from appearing in outbound payload - - - if (data.trimHeadFrames) delete data.trimHeadFrames; - data = objectMerge(baseData, data); // Merge in the tags and extra separately since objectMerge doesn't handle a deep merge - - data.tags = objectMerge(objectMerge({}, this._globalContext.tags), data.tags); - data.extra = objectMerge(objectMerge({}, this._globalContext.extra), data.extra); // Send along our own collected metadata with extra - - data.extra['session:duration'] = now() - this._startTime; + // If the stack trace is incomplete, wait for 2 seconds for + // slow slow IE to see if onerror occurs or not before reporting + // this exception; otherwise, we will end up with an incomplete + // stack trace + setTimeout(function() { + if (lastException === ex) { + processLastException(); + } + }, stack.incomplete ? 2000 : 0); - if (this._breadcrumbs && this._breadcrumbs.length > 0) { - // intentionally make shallow copy so that additions - // to breadcrumbs aren't accidentally sent in this request - data.breadcrumbs = { - values: [].slice.call(this._breadcrumbs, 0) - }; + if (rethrow !== false) { + throw ex; // re-throw to propagate to the top level (and cause window.onerror) } + } - if (this._globalContext.user) { - // sentry.interfaces.User - data.user = this._globalContext.user; - } // Include the environment if it's defined in globalOptions - + report.subscribe = subscribe; + report.unsubscribe = unsubscribe; + report.uninstall = unsubscribeAll; + return report; +})(); - if (globalOptions.environment) data.environment = globalOptions.environment; // Include the release if it's defined in globalOptions +/** + * TraceKit.computeStackTrace: cross-browser stack traces in JavaScript + * + * Syntax: + * s = TraceKit.computeStackTrace(exception) // consider using TraceKit.report instead (see below) + * Returns: + * s.name - exception name + * s.message - exception message + * s.stack[i].url - JavaScript or HTML file URL + * s.stack[i].func - function name, or empty for anonymous functions (if guessing did not work) + * s.stack[i].args - arguments passed to the function, if known + * s.stack[i].line - line number, if known + * s.stack[i].column - column number, if known + * + * Supports: + * - Firefox: full stack trace with line numbers and unreliable column + * number on top frame + * - Opera 10: full stack trace with line and column numbers + * - Opera 9-: full stack trace with line numbers + * - Chrome: full stack trace with line and column numbers + * - Safari: line and column number for the topmost stacktrace element + * only + * - IE: no line numbers whatsoever + * + * Tries to guess names of anonymous functions by looking for assignments + * in the source code. In IE and Safari, we have to guess source file names + * by searching for function bodies inside all page scripts. This will not + * work for scripts that are loaded cross-domain. + * Here be dragons: some function names may be guessed incorrectly, and + * duplicate functions may be mismatched. + * + * TraceKit.computeStackTrace should only be used for tracing purposes. + * Logging of unhandled exceptions should be done with TraceKit.report, + * which builds on top of TraceKit.computeStackTrace and provides better + * IE support by utilizing the window.onerror event to retrieve information + * about the top of the stack. + * + * Note: In IE and Safari, no stack trace is recorded on the Error object, + * so computeStackTrace instead walks its *own* chain of callers. + * This means that: + * * in Safari, some methods may be missing from the stack trace; + * * in IE, the topmost function in the stack trace will always be the + * caller of computeStackTrace. + * + * This is okay for tracing (because you are likely to be calling + * computeStackTrace from the function you want to be the topmost element + * of the stack trace anyway), but not okay for logging unhandled + * exceptions (because your catch block will likely be far away from the + * inner function that actually caused the exception). + * + */ +TraceKit.computeStackTrace = (function computeStackTraceWrapper() { + // Contents of Exception in various browsers. + // + // SAFARI: + // ex.message = Can't find variable: qq + // ex.line = 59 + // ex.sourceId = 580238192 + // ex.sourceURL = http://... + // ex.expressionBeginOffset = 96 + // ex.expressionCaretOffset = 98 + // ex.expressionEndOffset = 98 + // ex.name = ReferenceError + // + // FIREFOX: + // ex.message = qq is not defined + // ex.fileName = http://... + // ex.lineNumber = 59 + // ex.columnNumber = 69 + // ex.stack = ...stack trace... (see the example below) + // ex.name = ReferenceError + // + // CHROME: + // ex.message = qq is not defined + // ex.name = ReferenceError + // ex.type = not_defined + // ex.arguments = ['aa'] + // ex.stack = ...stack trace... + // + // INTERNET EXPLORER: + // ex.message = ... + // ex.name = ReferenceError + // + // OPERA: + // ex.message = ...message... (see the example below) + // ex.name = ReferenceError + // ex.opera#sourceloc = 11 (pretty much useless, duplicates the info in ex.message) + // ex.stacktrace = n/a; see 'opera:config#UserPrefs|Exceptions Have Stacktrace' - if (globalOptions.release) data.release = globalOptions.release; // Include server_name if it's defined in globalOptions + /** + * Computes stack trace information from the stack property. + * Chrome and Gecko use this property. + * @param {Error} ex + * @return {?Object.} Stack trace information. + */ + function computeStackTraceFromStackProp(ex) { + if (typeof ex.stack === 'undefined' || !ex.stack) return; - if (globalOptions.serverName) data.server_name = globalOptions.serverName; // Cleanup empty properties before sending them to the server + var chrome = /^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i; + var winjs = /^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i; + // NOTE: blob urls are now supposed to always have an origin, therefore it's format + // which is `blob:http://url/path/with-some-uuid`, is matched by `blob.*?:\/` as well + var gecko = /^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i; + // Used to additionally parse URL/line/column from eval frames + var geckoEval = /(\S+) line (\d+)(?: > eval line \d+)* > eval/i; + var chromeEval = /\((\S*)(?::(\d+))(?::(\d+))\)/; + var lines = ex.stack.split('\n'); + var stack = []; + var submatch; + var parts; + var element; + var reference = /^(.*) is undefined$/.exec(ex.message); - Object.keys(data).forEach(function (key) { - if (data[key] == null || data[key] === '' || isEmptyObject(data[key])) { - delete data[key]; + for (var i = 0, j = lines.length; i < j; ++i) { + if ((parts = chrome.exec(lines[i]))) { + var isNative = parts[2] && parts[2].indexOf('native') === 0; // start of line + var isEval = parts[2] && parts[2].indexOf('eval') === 0; // start of line + if (isEval && (submatch = chromeEval.exec(parts[2]))) { + // throw out eval line/column and use top-most line/column number + parts[2] = submatch[1]; // url + parts[3] = submatch[2]; // line + parts[4] = submatch[3]; // column + } + element = { + url: !isNative ? parts[2] : null, + func: parts[1] || UNKNOWN_FUNCTION, + args: isNative ? [parts[2]] : [], + line: parts[3] ? +parts[3] : null, + column: parts[4] ? +parts[4] : null + }; + } else if ((parts = winjs.exec(lines[i]))) { + element = { + url: parts[2], + func: parts[1] || UNKNOWN_FUNCTION, + args: [], + line: +parts[3], + column: parts[4] ? +parts[4] : null + }; + } else if ((parts = gecko.exec(lines[i]))) { + var isEval = parts[3] && parts[3].indexOf(' > eval') > -1; + if (isEval && (submatch = geckoEval.exec(parts[3]))) { + // throw out eval line/column and use top-most line number + parts[3] = submatch[1]; + parts[4] = submatch[2]; + parts[5] = null; // no column when eval + } else if (i === 0 && !parts[5] && typeof ex.columnNumber !== 'undefined') { + // FireFox uses this awesome columnNumber property for its top frame + // Also note, Firefox's column number is 0-based and everything else expects 1-based, + // so adding 1 + // NOTE: this hack doesn't work if top-most frame is eval + stack[0].column = ex.columnNumber + 1; + } + element = { + url: parts[3], + func: parts[1] || UNKNOWN_FUNCTION, + args: parts[2] ? parts[2].split(',') : [], + line: parts[4] ? +parts[4] : null, + column: parts[5] ? +parts[5] : null + }; + } else { + continue; } - }); - if (isFunction(globalOptions.dataCallback)) { - data = globalOptions.dataCallback(data) || data; - } // Why?????????? - - - if (!data || isEmptyObject(data)) { - return; - } // Check if the request should be filtered or not - - - if (isFunction(globalOptions.shouldSendCallback) && !globalOptions.shouldSendCallback(data)) { - return; - } // Backoff state: Sentry server previously responded w/ an error (e.g. 429 - too many requests), - // so drop requests until "cool-off" period has elapsed. - - - if (this._shouldBackoff()) { - this._logDebug('warn', 'Raven dropped error due to backoff: ', data); + if (!element.func && element.line) { + element.func = UNKNOWN_FUNCTION; + } - return; + stack.push(element); } - if (typeof globalOptions.sampleRate === 'number') { - if (Math.random() < globalOptions.sampleRate) { - this._sendProcessedPayload(data); - } - } else { - this._sendProcessedPayload(data); + if (!stack.length) { + return null; } - }, - _getUuid: function _getUuid() { - return uuid4(); - }, - _sendProcessedPayload: function _sendProcessedPayload(data, callback) { - var self = this; - var globalOptions = this._globalOptions; - if (!this.isSetup()) return; // Try and clean up the packet before sending by truncating long values - - data = this._trimPacket(data); // ideally duplicate error testing should occur *before* dataCallback/shouldSendCallback, - // but this would require copying an un-truncated copy of the data packet, which can be - // arbitrarily deep (extra_data) -- could be worthwhile? will revisit - if (!this._globalOptions.allowDuplicates && this._isRepeatData(data)) { - this._logDebug('warn', 'Raven dropped repeat event: ', data); - - return; - } // Send along an event_id if not explicitly passed. - // This event_id can be used to reference the error within Sentry itself. - // Set lastEventId after we know the error should actually be sent - - - this._lastEventId = data.event_id || (data.event_id = this._getUuid()); // Store outbound payload after trim - - this._lastData = data; - - this._logDebug('debug', 'Raven about to send:', data); + return { + name: ex.name, + message: ex.message, + url: getLocationHref(), + stack: stack + }; + } - var auth = { - sentry_version: '7', - sentry_client: 'raven-js/' + this.VERSION, - sentry_key: this._globalKey + /** + * Adds information about the first frame to incomplete stack traces. + * Safari and IE require this to get complete data on the first frame. + * @param {Object.} stackInfo Stack trace information from + * one of the compute* methods. + * @param {string} url The URL of the script that caused an error. + * @param {(number|string)} lineNo The line number of the script that + * caused an error. + * @param {string=} message The error generated by the browser, which + * hopefully contains the name of the object that caused the error. + * @return {boolean} Whether or not the stack information was + * augmented. + */ + function augmentStackTraceWithInitialElement(stackInfo, url, lineNo, message) { + var initial = { + url: url, + line: lineNo }; - if (this._globalSecret) { - auth.sentry_secret = this._globalSecret; - } + if (initial.url && initial.line) { + stackInfo.incomplete = false; - var exception = data.exception && data.exception.values[0]; // only capture 'sentry' breadcrumb is autoBreadcrumbs is truthy + if (!initial.func) { + initial.func = UNKNOWN_FUNCTION; + } - if (this._globalOptions.autoBreadcrumbs && this._globalOptions.autoBreadcrumbs.sentry) { - this.captureBreadcrumb({ - category: 'sentry', - message: exception ? (exception.type ? exception.type + ': ' : '') + exception.value : data.message, - event_id: data.event_id, - level: data.level || 'error' // presume error unless specified + if (stackInfo.stack.length > 0) { + if (stackInfo.stack[0].url === initial.url) { + if (stackInfo.stack[0].line === initial.line) { + return false; // already in stack trace + } else if ( + !stackInfo.stack[0].line && + stackInfo.stack[0].func === initial.func + ) { + stackInfo.stack[0].line = initial.line; + return false; + } + } + } - }); + stackInfo.stack.unshift(initial); + stackInfo.partial = true; + return true; + } else { + stackInfo.incomplete = true; } - var url = this._globalEndpoint; - - (globalOptions.transport || this._makeRequest).call(this, { - url: url, - auth: auth, - data: data, - options: globalOptions, - onSuccess: function success() { - self._resetBackoff(); + return false; + } - self._triggerEvent('success', { - data: data, - src: url - }); + /** + * Computes stack trace information by walking the arguments.caller + * chain at the time the exception occurred. This will cause earlier + * frames to be missed but is the only way to get any stack trace in + * Safari and IE. The top frame is restored by + * {@link augmentStackTraceWithInitialElement}. + * @param {Error} ex + * @return {?Object.} Stack trace information. + */ + function computeStackTraceByWalkingCallerChain(ex, depth) { + var functionName = /function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i, + stack = [], + funcs = {}, + recursion = false, + parts, + item, + source; + + for ( + var curr = computeStackTraceByWalkingCallerChain.caller; + curr && !recursion; + curr = curr.caller + ) { + if (curr === computeStackTrace || curr === TraceKit.report) { + // console.log('skipping internal function'); + continue; + } - callback && callback(); - }, - onError: function failure(error) { - self._logDebug('error', 'Raven transport failed to send: ', error); + item = { + url: null, + func: UNKNOWN_FUNCTION, + line: null, + column: null + }; - if (error.request) { - self._setBackoffState(error.request); - } + if (curr.name) { + item.func = curr.name; + } else if ((parts = functionName.exec(curr.toString()))) { + item.func = parts[1]; + } - self._triggerEvent('failure', { - data: data, - src: url - }); + if (typeof item.func === 'undefined') { + try { + item.func = parts.input.substring(0, parts.input.indexOf('{')); + } catch (e) {} + } - error = error || new Error('Raven send failed (no additional details provided)'); - callback && callback(error); + if (funcs['' + curr]) { + recursion = true; + } else { + funcs['' + curr] = true; } - }); - }, - _makeRequest: function _makeRequest(opts) { - // Auth is intentionally sent as part of query string (NOT as custom HTTP header) to avoid preflight CORS requests - var url = opts.url + '?' + urlencode(opts.auth); - var evaluatedHeaders = null; - var evaluatedFetchParameters = {}; - if (opts.options.headers) { - evaluatedHeaders = this._evaluateHash(opts.options.headers); + stack.push(item); } - if (opts.options.fetchParameters) { - evaluatedFetchParameters = this._evaluateHash(opts.options.fetchParameters); + if (depth) { + // console.log('depth is ' + depth); + // console.log('stack is ' + stack.length); + stack.splice(0, depth); } - if (supportsFetch()) { - evaluatedFetchParameters.body = stringify_1(opts.data); - var defaultFetchOptions = objectMerge({}, this._fetchDefaults); - var fetchOptions = objectMerge(defaultFetchOptions, evaluatedFetchParameters); + var result = { + name: ex.name, + message: ex.message, + url: getLocationHref(), + stack: stack + }; + augmentStackTraceWithInitialElement( + result, + ex.sourceURL || ex.fileName, + ex.line || ex.lineNumber, + ex.message || ex.description + ); + return result; + } - if (evaluatedHeaders) { - fetchOptions.headers = evaluatedHeaders; - } + /** + * Computes a stack trace for an exception. + * @param {Error} ex + * @param {(string|number)=} depth + */ + function computeStackTrace(ex, depth) { + var stack = null; + depth = depth == null ? 0 : +depth; - return _window$1.fetch(url, fetchOptions).then(function (response) { - if (response.ok) { - opts.onSuccess && opts.onSuccess(); - } else { - var error = new Error('Sentry error code: ' + response.status); // It's called request only to keep compatibility with XHR interface - // and not add more redundant checks in setBackoffState method + try { + stack = computeStackTraceFromStackProp(ex); + if (stack) { + return stack; + } + } catch (e) { + if (TraceKit.debug) { + throw e; + } + } - error.request = response; - opts.onError && opts.onError(error); - } - })['catch'](function () { - opts.onError && opts.onError(new Error('Sentry error code: network unavailable')); - }); + try { + stack = computeStackTraceByWalkingCallerChain(ex, depth + 1); + if (stack) { + return stack; + } + } catch (e) { + if (TraceKit.debug) { + throw e; + } } + return { + name: ex.name, + message: ex.message, + url: getLocationHref() + }; + } - var request = _window$1.XMLHttpRequest && new _window$1.XMLHttpRequest(); - if (!request) return; // if browser doesn't support CORS (e.g. IE7), we are out of luck + computeStackTrace.augmentStackTraceWithInitialElement = augmentStackTraceWithInitialElement; + computeStackTrace.computeStackTraceFromStackProp = computeStackTraceFromStackProp; - var hasCORS = 'withCredentials' in request || typeof XDomainRequest !== 'undefined'; - if (!hasCORS) return; + return computeStackTrace; +})(); - if ('withCredentials' in request) { - request.onreadystatechange = function () { - if (request.readyState !== 4) { - return; - } else if (request.status === 200) { - opts.onSuccess && opts.onSuccess(); - } else if (opts.onError) { - var err = new Error('Sentry error code: ' + request.status); - err.request = request; - opts.onError(err); - } - }; - } else { - request = new XDomainRequest(); // xdomainrequest cannot go http -> https (or vice versa), - // so always use protocol relative +module.exports = TraceKit; - url = url.replace(/^https?:/, ''); // onreadystatechange not supported by XDomainRequest +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"6":6}],8:[function(_dereq_,module,exports){ +/* + json-stringify-safe + Like JSON.stringify, but doesn't throw on circular references. - if (opts.onSuccess) { - request.onload = opts.onSuccess; - } + Originally forked from https://github.com/isaacs/json-stringify-safe + version 5.0.1 on 3/8/2017 and modified to handle Errors serialization + and IE8 compatibility. Tests for this are in test/vendor. - if (opts.onError) { - request.onerror = function () { - var err = new Error('Sentry error code: XDomainRequest'); - err.request = request; - opts.onError(err); - }; - } - } + ISC license: https://github.com/isaacs/json-stringify-safe/blob/master/LICENSE +*/ - request.open('POST', url); +exports = module.exports = stringify; +exports.getSerialize = serializer; - if (evaluatedHeaders) { - each(evaluatedHeaders, function (key, value) { - request.setRequestHeader(key, value); - }); - } +function indexOf(haystack, needle) { + for (var i = 0; i < haystack.length; ++i) { + if (haystack[i] === needle) return i; + } + return -1; +} - request.send(stringify_1(opts.data)); - }, - _evaluateHash: function _evaluateHash(hash) { - var evaluated = {}; +function stringify(obj, replacer, spaces, cycleReplacer) { + return JSON.stringify(obj, serializer(replacer, cycleReplacer), spaces); +} - for (var key in hash) { - if (hash.hasOwnProperty(key)) { - var value = hash[key]; - evaluated[key] = typeof value === 'function' ? value() : value; - } - } +// https://github.com/ftlabs/js-abbreviate/blob/fa709e5f139e7770a71827b1893f22418097fbda/index.js#L95-L106 +function stringifyError(value) { + var err = { + // These properties are implemented as magical getters and don't show up in for in + stack: value.stack, + message: value.message, + name: value.name + }; - return evaluated; - }, - _logDebug: function _logDebug(level) { - if (this._originalConsoleMethods[level] && this.debug) { - // In IE<10 console methods do not have their own 'apply' method - Function.prototype.apply.call(this._originalConsoleMethods[level], this._originalConsole, [].slice.call(arguments, 1)); - } - }, - _mergeContext: function _mergeContext(key, context) { - if (isUndefined(context)) { - delete this._globalContext[key]; - } else { - this._globalContext[key] = objectMerge(this._globalContext[key] || {}, context); + for (var i in value) { + if (Object.prototype.hasOwnProperty.call(value, i)) { + err[i] = value[i]; } } -}; // Deprecations -Raven$1.prototype.setUser = Raven$1.prototype.setUserContext; -Raven$1.prototype.setReleaseContext = Raven$1.prototype.setRelease; -var raven = Raven$1; + return err; +} -/** - * Enforces a single instance of the Raven client, and the - * main entry point for Raven. If you are a consumer of the - * Raven library, you SHOULD load this file (vs raven.js). - **/ -// This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) +function serializer(replacer, cycleReplacer) { + var stack = []; + var keys = []; -var _window = typeof window !== 'undefined' ? window : typeof commonjsGlobal !== 'undefined' ? commonjsGlobal : typeof self !== 'undefined' ? self : {}; + if (cycleReplacer == null) { + cycleReplacer = function(key, value) { + if (stack[0] === value) { + return '[Circular ~]'; + } + return '[Circular ~.' + keys.slice(0, indexOf(stack, value)).join('.') + ']'; + }; + } -var _Raven = _window.Raven; -var Raven = new raven(); -/* - * Allow multiple versions of Raven to be installed. - * Strip Raven from the global context and returns the instance. - * - * @return {Raven} - */ + return function(key, value) { + if (stack.length > 0) { + var thisPos = indexOf(stack, this); + ~thisPos ? stack.splice(thisPos + 1) : stack.push(this); + ~thisPos ? keys.splice(thisPos, Infinity, key) : keys.push(key); -Raven.noConflict = function () { - _window.Raven = _Raven; - return Raven; -}; + if (~indexOf(stack, value)) { + value = cycleReplacer.call(this, key, value); + } + } else { + stack.push(value); + } -Raven.afterLoad(); -var singleton = Raven; + return replacer == null + ? value instanceof Error ? stringifyError(value) : value + : replacer.call(this, key, value); + }; +} -/** - * Angular.js plugin +},{}],9:[function(_dereq_,module,exports){ +/* + * JavaScript MD5 + * https://github.com/blueimp/JavaScript-MD5 * - * Provides an $exceptionHandler for Angular.js + * Copyright 2011, Sebastian Tschan + * https://blueimp.net + * + * Licensed under the MIT license: + * https://opensource.org/licenses/MIT + * + * Based on + * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message + * Digest Algorithm, as defined in RFC 1321. + * Version 2.2 Copyright (C) Paul Johnston 1999 - 2009 + * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet + * Distributed under the BSD License + * See http://pajhome.org.uk/crypt/md5 for more info. */ -var wrappedCallback$1 = utils.wrappedCallback; // See https://github.com/angular/angular.js/blob/v1.4.7/src/minErr.js +/* +* Add integers, wrapping at 2^32. This uses 16-bit operations internally +* to work around bugs in some JS interpreters. +*/ +function safeAdd(x, y) { + var lsw = (x & 0xffff) + (y & 0xffff); + var msw = (x >> 16) + (y >> 16) + (lsw >> 16); + return (msw << 16) | (lsw & 0xffff); +} -var angularPattern = /^\[((?:[$a-zA-Z0-9]+:)?(?:[$a-zA-Z0-9]+))\] (.*?)\n?(\S+)$/; -var moduleName = 'ngRaven'; +/* +* Bitwise rotate a 32-bit number to the left. +*/ +function bitRotateLeft(num, cnt) { + return (num << cnt) | (num >>> (32 - cnt)); +} -function angularPlugin(Raven, angular) { - angular = angular || window.angular; - if (!angular) return; +/* +* These functions implement the four basic operations the algorithm uses. +*/ +function md5cmn(q, a, b, x, s, t) { + return safeAdd(bitRotateLeft(safeAdd(safeAdd(a, q), safeAdd(x, t)), s), b); +} +function md5ff(a, b, c, d, x, s, t) { + return md5cmn((b & c) | (~b & d), a, b, x, s, t); +} +function md5gg(a, b, c, d, x, s, t) { + return md5cmn((b & d) | (c & ~d), a, b, x, s, t); +} +function md5hh(a, b, c, d, x, s, t) { + return md5cmn(b ^ c ^ d, a, b, x, s, t); +} +function md5ii(a, b, c, d, x, s, t) { + return md5cmn(c ^ (b | ~d), a, b, x, s, t); +} - function RavenProvider() { - this.$get = ['$window', function ($window) { - return Raven; - }]; +/* +* Calculate the MD5 of an array of little-endian words, and a bit length. +*/ +function binlMD5(x, len) { + /* append padding */ + x[len >> 5] |= 0x80 << (len % 32); + x[(((len + 64) >>> 9) << 4) + 14] = len; + + var i; + var olda; + var oldb; + var oldc; + var oldd; + var a = 1732584193; + var b = -271733879; + var c = -1732584194; + var d = 271733878; + + for (i = 0; i < x.length; i += 16) { + olda = a; + oldb = b; + oldc = c; + oldd = d; + + a = md5ff(a, b, c, d, x[i], 7, -680876936); + d = md5ff(d, a, b, c, x[i + 1], 12, -389564586); + c = md5ff(c, d, a, b, x[i + 2], 17, 606105819); + b = md5ff(b, c, d, a, x[i + 3], 22, -1044525330); + a = md5ff(a, b, c, d, x[i + 4], 7, -176418897); + d = md5ff(d, a, b, c, x[i + 5], 12, 1200080426); + c = md5ff(c, d, a, b, x[i + 6], 17, -1473231341); + b = md5ff(b, c, d, a, x[i + 7], 22, -45705983); + a = md5ff(a, b, c, d, x[i + 8], 7, 1770035416); + d = md5ff(d, a, b, c, x[i + 9], 12, -1958414417); + c = md5ff(c, d, a, b, x[i + 10], 17, -42063); + b = md5ff(b, c, d, a, x[i + 11], 22, -1990404162); + a = md5ff(a, b, c, d, x[i + 12], 7, 1804603682); + d = md5ff(d, a, b, c, x[i + 13], 12, -40341101); + c = md5ff(c, d, a, b, x[i + 14], 17, -1502002290); + b = md5ff(b, c, d, a, x[i + 15], 22, 1236535329); + + a = md5gg(a, b, c, d, x[i + 1], 5, -165796510); + d = md5gg(d, a, b, c, x[i + 6], 9, -1069501632); + c = md5gg(c, d, a, b, x[i + 11], 14, 643717713); + b = md5gg(b, c, d, a, x[i], 20, -373897302); + a = md5gg(a, b, c, d, x[i + 5], 5, -701558691); + d = md5gg(d, a, b, c, x[i + 10], 9, 38016083); + c = md5gg(c, d, a, b, x[i + 15], 14, -660478335); + b = md5gg(b, c, d, a, x[i + 4], 20, -405537848); + a = md5gg(a, b, c, d, x[i + 9], 5, 568446438); + d = md5gg(d, a, b, c, x[i + 14], 9, -1019803690); + c = md5gg(c, d, a, b, x[i + 3], 14, -187363961); + b = md5gg(b, c, d, a, x[i + 8], 20, 1163531501); + a = md5gg(a, b, c, d, x[i + 13], 5, -1444681467); + d = md5gg(d, a, b, c, x[i + 2], 9, -51403784); + c = md5gg(c, d, a, b, x[i + 7], 14, 1735328473); + b = md5gg(b, c, d, a, x[i + 12], 20, -1926607734); + + a = md5hh(a, b, c, d, x[i + 5], 4, -378558); + d = md5hh(d, a, b, c, x[i + 8], 11, -2022574463); + c = md5hh(c, d, a, b, x[i + 11], 16, 1839030562); + b = md5hh(b, c, d, a, x[i + 14], 23, -35309556); + a = md5hh(a, b, c, d, x[i + 1], 4, -1530992060); + d = md5hh(d, a, b, c, x[i + 4], 11, 1272893353); + c = md5hh(c, d, a, b, x[i + 7], 16, -155497632); + b = md5hh(b, c, d, a, x[i + 10], 23, -1094730640); + a = md5hh(a, b, c, d, x[i + 13], 4, 681279174); + d = md5hh(d, a, b, c, x[i], 11, -358537222); + c = md5hh(c, d, a, b, x[i + 3], 16, -722521979); + b = md5hh(b, c, d, a, x[i + 6], 23, 76029189); + a = md5hh(a, b, c, d, x[i + 9], 4, -640364487); + d = md5hh(d, a, b, c, x[i + 12], 11, -421815835); + c = md5hh(c, d, a, b, x[i + 15], 16, 530742520); + b = md5hh(b, c, d, a, x[i + 2], 23, -995338651); + + a = md5ii(a, b, c, d, x[i], 6, -198630844); + d = md5ii(d, a, b, c, x[i + 7], 10, 1126891415); + c = md5ii(c, d, a, b, x[i + 14], 15, -1416354905); + b = md5ii(b, c, d, a, x[i + 5], 21, -57434055); + a = md5ii(a, b, c, d, x[i + 12], 6, 1700485571); + d = md5ii(d, a, b, c, x[i + 3], 10, -1894986606); + c = md5ii(c, d, a, b, x[i + 10], 15, -1051523); + b = md5ii(b, c, d, a, x[i + 1], 21, -2054922799); + a = md5ii(a, b, c, d, x[i + 8], 6, 1873313359); + d = md5ii(d, a, b, c, x[i + 15], 10, -30611744); + c = md5ii(c, d, a, b, x[i + 6], 15, -1560198380); + b = md5ii(b, c, d, a, x[i + 13], 21, 1309151649); + a = md5ii(a, b, c, d, x[i + 4], 6, -145523070); + d = md5ii(d, a, b, c, x[i + 11], 10, -1120210379); + c = md5ii(c, d, a, b, x[i + 2], 15, 718787259); + b = md5ii(b, c, d, a, x[i + 9], 21, -343485551); + + a = safeAdd(a, olda); + b = safeAdd(b, oldb); + c = safeAdd(c, oldc); + d = safeAdd(d, oldd); } + return [a, b, c, d]; +} - function ExceptionHandlerProvider($provide) { - $provide.decorator('$exceptionHandler', ['Raven', '$delegate', exceptionHandler]); +/* +* Convert an array of little-endian words to a string +*/ +function binl2rstr(input) { + var i; + var output = ''; + var length32 = input.length * 32; + for (i = 0; i < length32; i += 8) { + output += String.fromCharCode((input[i >> 5] >>> (i % 32)) & 0xff); } + return output; +} - function exceptionHandler(R, $delegate) { - return function (ex, cause) { - R.captureException(ex, { - extra: { - cause: cause - } - }); - $delegate(ex, cause); - }; +/* +* Convert a raw string to an array of little-endian words +* Characters >255 have their high-byte silently ignored. +*/ +function rstr2binl(input) { + var i; + var output = []; + output[(input.length >> 2) - 1] = undefined; + for (i = 0; i < output.length; i += 1) { + output[i] = 0; } - - angular.module(moduleName, []).provider('Raven', RavenProvider).config(['$provide', ExceptionHandlerProvider]); - Raven.setDataCallback(wrappedCallback$1(function (data) { - return angularPlugin._normalizeData(data); - })); + var length8 = input.length * 8; + for (i = 0; i < length8; i += 8) { + output[i >> 5] |= (input.charCodeAt(i / 8) & 0xff) << (i % 32); + } + return output; } -angularPlugin._normalizeData = function (data) { - // We only care about mutating an exception - var exception = data.exception; - - if (exception) { - exception = exception.values[0]; - var matches = angularPattern.exec(exception.value); - - if (matches) { - // This type now becomes something like: $rootScope:inprog - exception.type = matches[1]; - exception.value = matches[2]; - data.message = exception.type + ': ' + exception.value; // auto set a new tag specifically for the angular error url +/* +* Calculate the MD5 of a raw string +*/ +function rstrMD5(s) { + return binl2rstr(binlMD5(rstr2binl(s), s.length * 8)); +} - data.extra.angularDocs = matches[3].substr(0, 250); - } +/* +* Calculate the HMAC-MD5, of a key and some data (raw strings) +*/ +function rstrHMACMD5(key, data) { + var i; + var bkey = rstr2binl(key); + var ipad = []; + var opad = []; + var hash; + ipad[15] = opad[15] = undefined; + if (bkey.length > 16) { + bkey = binlMD5(bkey, key.length * 8); } + for (i = 0; i < 16; i += 1) { + ipad[i] = bkey[i] ^ 0x36363636; + opad[i] = bkey[i] ^ 0x5c5c5c5c; + } + hash = binlMD5(ipad.concat(rstr2binl(data)), 512 + data.length * 8); + return binl2rstr(binlMD5(opad.concat(hash), 512 + 128)); +} - return data; -}; +/* +* Convert a raw string to a hex string +*/ +function rstr2hex(input) { + var hexTab = '0123456789abcdef'; + var output = ''; + var x; + var i; + for (i = 0; i < input.length; i += 1) { + x = input.charCodeAt(i); + output += hexTab.charAt((x >>> 4) & 0x0f) + hexTab.charAt(x & 0x0f); + } + return output; +} -angularPlugin.moduleName = moduleName; -var angular$2 = angularPlugin; +/* +* Encode a string as utf-8 +*/ +function str2rstrUTF8(input) { + return unescape(encodeURIComponent(input)); +} -/* This file was generated by './scripts/generate-plugin-combinations.js'! */ +/* +* Take string arguments and return either raw or hex encoded strings +*/ +function rawMD5(s) { + return rstrMD5(str2rstrUTF8(s)); +} +function hexMD5(s) { + return rstr2hex(rawMD5(s)); +} +function rawHMACMD5(k, d) { + return rstrHMACMD5(str2rstrUTF8(k), str2rstrUTF8(d)); +} +function hexHMACMD5(k, d) { + return rstr2hex(rawHMACMD5(k, d)); +} -singleton.addPlugin(angular$2); -var angular = {}; +function md5(string, key, raw) { + if (!key) { + if (!raw) { + return hexMD5(string); + } + return rawMD5(string); + } + if (!raw) { + return hexHMACMD5(key, string); + } + return rawHMACMD5(key, string); +} -return angular; +module.exports = md5; -}))); +},{}]},{},[5,1])(5) +}); \ No newline at end of file diff --git a/dist/angular/raven.min.js b/dist/angular/raven.min.js index e908d53c734a..95bcd555de13 100644 --- a/dist/angular/raven.min.js +++ b/dist/angular/raven.min.js @@ -1,3 +1,4 @@ -/*! Raven.js 3.22.2 (1b6187b) | github.com/getsentry/raven-js */ -!function(a,b){"object"==typeof exports&&"undefined"!=typeof module?module.exports=b():"function"==typeof define&&define.amd?define(b):a.Raven=b()}(this,function(){"use strict";function a(a,b){return b={exports:{}},a(b,b.exports),b.exports}function b(a){return(b="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(a){return typeof a}:function(a){return a&&"function"==typeof Symbol&&a.constructor===Symbol&&a!==Symbol.prototype?"symbol":typeof a})(a)}function c(a){return"object"===b(a)&&null!==a}function d(a){switch({}.toString.call(a)){case"[object Error]":return!0;case"[object Exception]":return!0;case"[object DOMException]":return!0;default:return a instanceof Error}}function e(a){return l()&&"[object ErrorEvent]"==={}.toString.call(a)}function f(a){return void 0===a}function g(a){return"function"==typeof a}function h(a){return"[object Object]"===Object.prototype.toString.call(a)}function i(a){return"[object String]"===Object.prototype.toString.call(a)}function j(a){return"[object Array]"===Object.prototype.toString.call(a)}function k(a){if(!h(a))return!1;for(var b in a)if(a.hasOwnProperty(b))return!1;return!0}function l(){try{return new ErrorEvent(""),!0}catch(a){return!1}}function m(){if(!("fetch"in N))return!1;try{return new Headers,new Request(""),new Response,!0}catch(a){return!1}}function n(a){function b(b,c){var d=a(b)||b;return c?c(d)||d:d}return b}function o(a,b){var c,d;if(f(a.length))for(c in a)s(a,c)&&b.call(null,c,a[c]);else if(d=a.length)for(c=0;c ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function y(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&i(b))for(c=b.split(/\s+/),f=0;f=0;--b)l[b]===a&&l.splice(b,1)}function c(){g(),l=[]}function d(a,b){var c=null;if(!b||P.collectWindowErrors){for(var d in l)if(l.hasOwnProperty(d))try{l[d].apply(null,[a].concat(R.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function e(a,b,c,e,f){var g=null,i=O.isErrorEvent(f)?f.error:f,k=O.isErrorEvent(a)?a.message:a;if(o)P.computeStackTrace.augmentStackTraceWithInitialElement(o,b,c,k),h();else if(i&&O.isError(i))g=P.computeStackTrace(i),d(g,!0);else{var l,m={url:b,line:c,column:e},n=void 0;if("[object String]"==={}.toString.call(k)){var l=k.match(T);l&&(n=l[1],k=l[2])}m.func=S,g={name:n,message:k,url:F(),stack:[m]},d(g,!0)}return!!j&&j.apply(this,arguments)}function f(){k||(j=Q.onerror,Q.onerror=e,k=!0)}function g(){k&&(Q.onerror=j,k=!1,j=void 0)}function h(){var a=o,b=m;m=null,o=null,n=null,d.apply(null,[a,!1].concat(b))}function i(a,b){var c=R.call(arguments,1);if(o){if(n===a)return;h()}var d=P.computeStackTrace(a);if(o=d,n=a,m=c,setTimeout(function(){n===a&&h()},d.incomplete?2e3:0),b!==!1)throw a}var j,k,l=[],m=null,n=null,o=null;return i.subscribe=a,i.unsubscribe=b,i.uninstall=c,i}(),P.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,d,e=/^\s*at (.*?) ?\(((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,f=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|\[native).*?|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,g=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,h=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,i=/\((\S*)(?::(\d+))(?::(\d+))\)/,j=a.stack.split("\n"),k=[],l=(/^(.*) is undefined$/.exec(a.message),0),m=j.length;l eval")>-1;o&&(b=h.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==l||c[5]||"undefined"==typeof a.columnNumber||(k[0].column=a.columnNumber+1),d={url:c[3],func:c[1]||S,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}!d.func&&d.line&&(d.func=S),k.push(d)}return k.length?{name:a.name,message:a.message,url:F(),stack:k}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=S),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,e){for(var f,g,h=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,i=[],j={},k=!1,l=c.caller;l&&!k;l=l.caller)if(l!==d&&l!==P.report){if(g={url:null,func:S,line:null,column:null},l.name?g.func=l.name:(f=h.exec(l.toString()))&&(g.func=f[1]),"undefined"==typeof g.func)try{g.func=f.input.substring(0,f.input.indexOf("{"))}catch(m){}j[""+l]?k=!0:j[""+l]=!0,i.push(g)}e&&i.splice(0,e);var n={name:a.name,message:a.message,url:F(),stack:i};return b(n,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),n}function d(b,d){var e=null;d=null==d?0:+d;try{if(e=a(b))return e}catch(f){if(P.debug)throw f}try{if(e=c(b,d+1))return e}catch(f){if(P.debug)throw f}return{name:b.name,message:b.message,url:F()}}return d.augmentStackTraceWithInitialElement=b,d.computeStackTraceFromStackProp=a,d}();var U=P,V=a(function(a,b){function c(a,b){for(var c=0;c0){var i=c(d,this);~i?d.splice(i+1):d.push(this),~i?f.splice(i,1/0,g):f.push(g),~c(d,h)&&(h=b.call(this,g,h))}else d.push(h);return null==a?h instanceof Error?e(h):h:a.call(this,g,h)}}b=a.exports=d,b.getSerialize=f});G.prototype=new Error,G.prototype.constructor=G;var W=G,X=function(a,b,c){var d=a[b],e=a;if(b in a){var f="warn"===b?"warning":b;a[b]=function(){var a=[].slice.call(arguments),g=O.safeJoin(a," "),h={level:f,logger:"console",extra:{arguments:a}};"assert"===b?a[0]===!1&&(g="Assertion failed: "+(O.safeJoin(a.slice(1)," ")||"console.assert"),h.extra.arguments=a.slice(1),c&&c(g,h)):c&&c(g,h),d&&Function.prototype.apply.call(d,e,a)}}},Y={wrapMethod:X},Z=O.isError,$=O.isObject,_=O.isErrorEvent,aa=O.isUndefined,ba=O.isFunction,ca=O.isString,da=O.isArray,ea=O.isEmptyObject,fa=O.each,ga=O.objectMerge,ha=O.truncate,ia=O.objectFrozen,ja=O.hasKey,ka=O.joinRegExp,la=O.urlencode,ma=O.uuid4,na=O.htmlTreeAsString,oa=O.isSameException,pa=O.isSameStacktrace,qa=O.parseUrl,ra=O.fill,sa=O.supportsFetch,ta=Y.wrapMethod,ua="source protocol user pass host port path".split(" "),va=/^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/,wa="undefined"!=typeof window?window:"undefined"!=typeof L?L:"undefined"!=typeof self?self:{},xa=wa.document,ya=wa.navigator;J.prototype={VERSION:"3.22.2",debug:!1,TraceKit:U,config:function(a,b){var c=this;if(c.i)return this.D("error","Error: Raven has already been configured"),c;if(!a)return c;var d=c.m;b&&fa(b,function(a,b){"tags"===a||"extra"===a||"user"===a?c.l[a]=b:d[a]=b}),c.setDSN(a),d.ignoreErrors.push(/^Script error\.?$/),d.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/),d.ignoreErrors=ka(d.ignoreErrors),d.ignoreUrls=!!d.ignoreUrls.length&&ka(d.ignoreUrls),d.whitelistUrls=!!d.whitelistUrls.length&&ka(d.whitelistUrls),d.includePaths=ka(d.includePaths),d.maxBreadcrumbs=Math.max(0,Math.min(d.maxBreadcrumbs||100,100));var e={xhr:!0,console:!0,dom:!0,location:!0,sentry:!0},f=d.autoBreadcrumbs;"[object Object]"==={}.toString.call(f)?f=ga(e,f):f!==!1&&(f=e),d.autoBreadcrumbs=f;var g={tryCatch:!0},h=d.instrument;return"[object Object]"==={}.toString.call(h)?h=ga(g,h):h!==!1&&(h=g),d.instrument=h,U.collectWindowErrors=!!d.collectWindowErrors,c},install:function(){var a=this;return a.isSetup()&&!a.p&&(U.report.subscribe(function(){a.E.apply(a,arguments)}),a.F(),a.m.instrument&&a.m.instrument.tryCatch&&a.G(),a.m.autoBreadcrumbs&&a.H(),a.I(),a.p=!0),Error.stackTraceLimit=a.m.stackTraceLimit,this},setDSN:function(a){var b=this,c=b.J(a),d=c.path.lastIndexOf("/"),e=c.path.substr(1,d);b.K=a,b.j=c.user,b.L=c.pass&&c.pass.substr(1),b.k=c.path.substr(d+1),b.i=b.M(c),b.N=b.i+"/"+e+"api/"+b.k+"/store/",this.A()},context:function(a,b,c){return ba(a)&&(c=b||[],b=a,a=void 0),this.wrap(a,b).apply(this,c)},wrap:function(a,b,c){function d(){var d=[],f=arguments.length,g=!a||a&&a.deep!==!1;for(c&&ba(c)&&c.apply(this,arguments);f--;)d[f]=g?e.wrap(a,arguments[f]):arguments[f];try{return b.apply(this,d)}catch(h){throw e.O(),e.captureException(h,a),h}}var e=this;if(aa(b)&&!ba(a))return a;if(ba(a)&&(b=a,a=void 0),!ba(b))return b;try{if(b.a)return b;if(b.P)return b.P}catch(f){return b}for(var g in b)ja(b,g)&&(d[g]=b[g]);return d.prototype=b.prototype,b.P=d,d.a=!0,d.b=b,d},uninstall:function(){return U.report.uninstall(),this.Q(),this.R(),this.S(),Error.stackTraceLimit=this.q,this.p=!1,this},captureException:function(a,b){b=ga({trimHeadFrames:0},b?b:{});var c=!Z(a),d=!_(a),e=_(a)&&!a.error;if(c&&d||e)return this.captureMessage(a,ga(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}));_(a)&&(a=a.error),this.f=a;try{var f=U.computeStackTrace(a);this.T(f,b)}catch(g){if(a!==g)throw g}return this},captureMessage:function(a,b){if(!this.m.ignoreErrors.test||!this.m.ignoreErrors.test(a)){b=b||{};var c,d=ga({message:a+""},b);try{throw new Error(a)}catch(e){c=e}c.name=null;var f=U.computeStackTrace(c),g=da(f.stack)&&f.stack[1],h=g&&g.url||"";if((!this.m.ignoreUrls.test||!this.m.ignoreUrls.test(h))&&(!this.m.whitelistUrls.test||this.m.whitelistUrls.test(h))){if(this.m.stacktrace||b&&b.stacktrace){b=ga({fingerprint:a,trimHeadFrames:(b.trimHeadFrames||0)+1},b);var i=this.U(f,b);d.stacktrace={frames:i.reverse()}}return this.V(d),this}}},captureBreadcrumb:function(a){var b=ga({timestamp:H()/1e3},a);if(ba(this.m.breadcrumbCallback)){var c=this.m.breadcrumbCallback(b);if($(c)&&!ea(c))b=c;else if(c===!1)return this}return this.w.push(b),this.w.length>this.m.maxBreadcrumbs&&this.w.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.t.push([a,b]),this.p&&this.I(),this},setUserContext:function(a){return this.l.user=a,this},setExtraContext:function(a){return this.W("extra",a),this},setTagsContext:function(a){return this.W("tags",a),this},clearContext:function(){return this.l={},this},getContext:function(){return JSON.parse(V(this.l))},setEnvironment:function(a){return this.m.environment=a,this},setRelease:function(a){return this.m.release=a,this},setDataCallback:function(a){var b=this.m.dataCallback;return this.m.dataCallback=I(b,a),this},setBreadcrumbCallback:function(a){var b=this.m.breadcrumbCallback;return this.m.breadcrumbCallback=I(b,a),this},setShouldSendCallback:function(a){var b=this.m.shouldSendCallback;return this.m.shouldSendCallback=I(b,a),this},setTransport:function(a){return this.m.transport=a,this},lastException:function(){return this.f},lastEventId:function(){return this.h},isSetup:function(){return!!this.c&&(!!this.i||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.D("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=wa.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(xa){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new W("Missing eventId");var c=a.dsn||this.K;if(!c)throw new W("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.l.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.M(this.J(c)),h=xa.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(xa.head||xa.body).appendChild(h)}},O:function(){var a=this;this.o+=1,setTimeout(function(){a.o-=1})},X:function(a,b){var c,d;if(this.d){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),xa.createEvent?(c=xa.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=xa.createEventObject(),c.eventType=a);for(d in b)ja(b,d)&&(c[d]=b[d]);if(xa.createEvent)xa.dispatchEvent(c);else try{xa.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},Y:function(a){var b=this;return function(c){if(b.Z=null,b.x!==c){b.x=c;var d;try{d=na(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},$:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.Z;g||a.Y("input")(c),clearTimeout(g),a.Z=setTimeout(function(){a.Z=null},b)}}},_:function(a,b){var c=qa(this.y.href),d=qa(b),e=qa(a);this.z=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},F:function(){var a=this;a.aa=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.a?a.aa.apply(this.b,arguments):a.aa.apply(this,arguments)}},Q:function(){this.aa&&(Function.prototype.toString=this.aa)},G:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b._(b.z,c+""),a.apply(this,arguments)}};ra(history,"pushState",j,d),ra(history,"replaceState",j,d)}if(c.console&&"console"in wa&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};fa(["debug","info","warn","error","log"],function(a,b){ta(console,b,k)})}},R:function(){for(var a;this.v.length;){a=this.v.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},S:function(){for(var a in this.s)this.r[a]=this.s[a]},I:function(){var a=this;fa(this.t,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},J:function(a){var b=va.exec(a),c={},d=7;try{for(;d--;)c[ua[d]]=b[d]||""}catch(e){throw new W("Invalid DSN: "+a)}if(c.pass&&!this.m.allowSecretKey)throw new W("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},M:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},E:function(){this.o||this.T.apply(this,arguments)},T:function(a,b){var c=this.U(a,b);this.X("handle",{stackInfo:a,options:b}),this.ca(a.name,a.message,a.url,a.lineno,c,b)},U:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(fa(a.stack,function(b,e){var f=c.da(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.w,0)}),this.l.user&&(a.user=this.l.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||ea(a[b]))&&delete a[b]}),ba(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!ea(a)&&(!ba(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.ja()?void this.D("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random()this.l.maxBreadcrumbs&&this.v.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.s.push([a,b]),this.o&&this.G(),this},setUserContext:function(a){return this.k.user=a,this},setExtraContext:function(a){return this.$("extra",a),this},setTagsContext:function(a){return this.$("tags",a),this},clearContext:function(){return this.k={},this},getContext:function(){return JSON.parse(h(this.k))},setEnvironment:function(a){return this.l.environment=a,this},setRelease:function(a){return this.l.release=a,this},setDataCallback:function(a){var b=this.l.dataCallback;return this.l.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.l.breadcrumbCallback;return this.l.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.l.shouldSendCallback;return this.l.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.l.transport=a,this},lastException:function(){return this.e},lastEventId:function(){return this.g},isSetup:function(){return!!this.b&&(!!this.h||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.A("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=P.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(Q){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.I;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.k.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.K(this.H(c)),h=Q.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(Q.head||Q.body).appendChild(h)}},M:function(){var a=this;this.n+=1,setTimeout(function(){a.n-=1})},_:function(a,b){var c,d;if(this.c){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),Q.createEvent?(c=Q.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=Q.createEventObject(),c.eventType=a);for(d in b)y(b,d)&&(c[d]=b[d]);if(Q.createEvent)Q.dispatchEvent(c);else try{Q.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},aa:function(a){var b=this;return function(c){if(b.ba=null,b.w!==c){b.w=c;var d;try{d=C(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ca:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.ba;g||a.aa("input")(c),clearTimeout(g),a.ba=setTimeout(function(){a.ba=null},b)}}},da:function(a,b){var c=F(this.x.href),d=F(b),e=F(a);this.y=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},D:function(){var a=this;a.ea=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.N?a.ea.apply(this.P,arguments):a.ea.apply(this,arguments)}},R:function(){this.ea&&(Function.prototype.toString=this.ea)},E:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.da(b.y,c+""),a.apply(this,arguments)}};G(history,"pushState",j,d),G(history,"replaceState",j,d)}if(c.console&&"console"in P&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};u(["debug","info","warn","error","log"],function(a,b){M(console,b,k)})}},S:function(){for(var a;this.u.length;){a=this.u.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},T:function(){for(var a in this.r)this.q[a]=this.r[a]},G:function(){var a=this;u(this.s,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},H:function(a){var b=O.exec(a),c={},d=7;try{for(;d--;)c[N[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.l.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},K:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},B:function(){this.n||this.W.apply(this,arguments)},W:function(a,b){var c=this.Y(a,b);this._("handle",{stackInfo:a,options:b}),this.ga(a.name,a.message,a.url,a.lineno,c,b)},Y:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(u(a.stack,function(b,e){var f=c.ha(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.v,0)}),this.k.user&&(a.user=this.k.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),a=this.qa(a),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||t(a[b]))&&delete a[b]}),q(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!t(a)&&(!q(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.na()?void this.A("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function B(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&j(b))for(c=b.split(/\s+/),f=0;fc?M(a,b-1):d}function N(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?T:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function O(a,b){function c(a){return k(a)?a.map(function(a){return c(a)}):i(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!k(b)||k(b)&&0===b.length)return a;var d,e=w(b),f="********";try{d=JSON.parse(P(a))}catch(g){return a}return c(d)}var P=a(8),Q="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},R=3,S=51200,T=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isUndefined:g,isFunction:h,isPlainObject:i,isString:j,isArray:k,isEmptyObject:l,supportsErrorEvent:m,supportsFetch:n,supportsReferrerPolicy:o,supportsPromiseRejectionEvent:p,wrappedCallback:q,each:r,objectMerge:s,truncate:u,objectFrozen:t,hasKey:v,joinRegExp:w,urlencode:x,uuid4:z,htmlTreeAsString:A,htmlElementAsString:B,isSameException:E,isSameStacktrace:F,parseUrl:y,fill:G,safeJoin:H,serializeException:M,serializeKeysForMessage:N,sanitize:O}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{8:8}],7:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}var e=a(6),f={collectWindowErrors:!0,debug:!1},g="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},h=[].slice,i="?",j=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;f.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function k(a,b){var c=null;if(!b||f.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(h.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,g,h){var l=null,m=e.isErrorEvent(h)?h.error:h,n=e.isErrorEvent(a)?a.message:a;if(v)f.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&e.isError(m))l=f.computeStackTrace(m),k(l,!0);else{var p,r={url:b,line:c,column:g},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(j);p&&(s=p[1],n=p[2])}r.func=i,l={name:s,message:n,url:d(),stack:[r]},k(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=g.onerror,g.onerror=l,r=!0)}function n(){r&&(g.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,k.apply(null,[a,!1].concat(b))}function p(a,b){var c=h.call(arguments,1);if(v){if(u===a)return;o()}var d=f.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),f.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,e,f=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,g=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,h=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,j=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,k=/\((\S*)(?::(\d+))(?::(\d+))\)/,l=a.stack.split("\n"),m=[],n=(/^(.*) is undefined$/.exec(a.message),0),o=l.length;n eval")>-1;q&&(b=j.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==n||c[5]||"undefined"==typeof a.columnNumber||(m[0].column=a.columnNumber+1),e={url:c[3],func:c[1]||i,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}!e.func&&e.line&&(e.func=i),m.push(e)}return m.length?{name:a.name,message:a.message,url:d(),stack:m}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=i),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,g){for(var h,j,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==e&&o!==f.report){if(j={url:null,func:i,line:null,column:null},o.name?j.func=o.name:(h=k.exec(o.toString()))&&(j.func=h[1]),"undefined"==typeof j.func)try{j.func=h.input.substring(0,h.input.indexOf("{"))}catch(p){}m[""+o]?n=!0:m[""+o]=!0,l.push(j)}g&&l.splice(0,g);var q={name:a.name,message:a.message,url:d(),stack:l};return b(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),q}function e(b,e){var g=null;e=null==e?0:+e;try{if(g=a(b))return g}catch(h){if(f.debug)throw h}try{if(g=c(b,e+1))return g}catch(h){if(f.debug)throw h}return{name:b.name,message:b.message,url:d()}}return e.augmentStackTraceWithInitialElement=b,e.computeStackTraceFromStackProp=a,e}(),b.exports=f}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{6:6}],8:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}],9:[function(a,b,c){function d(a,b){var c=(65535&a)+(65535&b),d=(a>>16)+(b>>16)+(c>>16);return d<<16|65535&c}function e(a,b){return a<>>32-b}function f(a,b,c,f,g,h){return d(e(d(d(b,a),d(f,h)),g),c)}function g(a,b,c,d,e,g,h){return f(b&c|~b&d,a,b,e,g,h)}function h(a,b,c,d,e,g,h){return f(b&d|c&~d,a,b,e,g,h)}function i(a,b,c,d,e,g,h){return f(b^c^d,a,b,e,g,h)}function j(a,b,c,d,e,g,h){return f(c^(b|~d),a,b,e,g,h)}function k(a,b){a[b>>5]|=128<>>9<<4)+14]=b;var c,e,f,k,l,m=1732584193,n=-271733879,o=-1732584194,p=271733878;for(c=0;c>5]>>>b%32&255);return c}function m(a){var b,c=[];for(c[(a.length>>2)-1]=void 0,b=0;b>5]|=(255&a.charCodeAt(b/8))<16&&(e=k(e,8*a.length)),c=0;c<16;c+=1)f[c]=909522486^e[c],g[c]=1549556828^e[c];return d=k(f.concat(m(b)),512+8*b.length),l(k(g.concat(d),640))}function p(a){var b,c,d="0123456789abcdef",e="";for(c=0;c>>4&15)+d.charAt(15&b);return e}function q(a){return unescape(encodeURIComponent(a))}function r(a){return n(q(a))}function s(a){return p(r(a))}function t(a,b){return o(q(a),q(b))}function u(a,b){return p(t(a,b))}function v(a,b,c){return b?c?t(b,a):u(b,a):c?r(a):s(a)}b.exports=v},{}]},{},[5,1])(5)}); //# sourceMappingURL=raven.min.js.map \ No newline at end of file diff --git a/dist/angular/raven.min.js.map b/dist/angular/raven.min.js.map index d8f04a86ec6a..cb648a0f5533 100644 --- a/dist/angular/raven.min.js.map +++ b/dist/angular/raven.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["raven.js"],"names":["global","factory","exports","module","define","amd","Raven","this","createCommonjsModule","fn","_typeof","obj","Symbol","iterator","constructor","prototype","isObject$1","what","isError$1","value","toString","call","Error","isErrorEvent$1","supportsErrorEvent","isUndefined$1","isFunction$1","isPlainObject","Object","isString$1","isArray$1","isEmptyObject$1","_","hasOwnProperty","ErrorEvent","e","supportsFetch$1","_window$3","Headers","Request","Response","wrappedCallback","callback","dataCallback","data","original","normalizedData","each$1","i","j","length","hasKey$1","objectMerge$1","obj1","obj2","key","objectFrozen$1","isFrozen","truncate$1","str","max","substr","object","joinRegExp$1","patterns","pattern","sources","len","push","replace","source","RegExp","join","urlencode$1","o","pairs","encodeURIComponent","parseUrl$1","url","match","query","fragment","protocol","host","path","relative","uuid4$1","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","r","Math","random","htmlTreeAsString$1","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","reverse","className","classes","attr","tagName","toLowerCase","id","split","attrWhitelist","getAttribute","isOnlyOneTruthy","a","b","isBothUndefined","isSameException$1","ex1","ex2","values","type","stacktrace","isSameStacktrace$1","stack1","stack2","frames1","frames","frames2","filename","lineno","colno","fill$1","name","replacement","track","orig","__raven__","__orig__","safeJoin","input","delimiter","output","String","getLocationHref","document","location","href","RavenConfigError","message","now","Date","keepOriginalCallback","isFunction","Raven$1","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window$1","SENTRY_RELEASE","logger","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","_fetchDefaults","method","keepalive","referrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","console","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","_lastHref","_resetBackoff","angularPlugin","angular","RavenProvider","$get","$window","ExceptionHandlerProvider","$provide","decorator","exceptionHandler","R","$delegate","ex","cause","captureException","extra","window","moduleName","provider","config","setDataCallback","wrappedCallback$1","_normalizeData","commonjsGlobal","self","_sPO","setPrototypeOf","p","__proto__","Reflect","construct","Parent","args","Class","Constructor","apply","bind","utils","isObject","isError","isErrorEvent","isString","isArray","isEmptyObject","supportsFetch","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","TraceKit","debug","_window$2","_slice","slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","report","subscribe","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","stack","isWindowError","exception","concat","arguments","inner","traceKitWindowOnError","msg","lineNo","colNo","error","lastExceptionStack","computeStackTrace","augmentStackTraceWithInitialElement","processLastException","groups","line","column","undefined","func","_oldOnerrorHandler","_onErrorHandlerInstalled","onerror","_lastExceptionStack","_lastArgs","lastArgs","lastException","rethrow","setTimeout","incomplete","uninstall","computeStackTraceFromStackProp","submatch","parts","element","chrome","gecko","winjs","geckoEval","chromeEval","lines","exec","isNative","indexOf","isEval","columnNumber","stackInfo","initial","unshift","partial","computeStackTraceByWalkingCallerChain","depth","item","functionName","funcs","recursion","curr","caller","substring","result","sourceURL","fileName","lineNumber","description","tracekit","stringify_1","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","err","keys","thisPos","Infinity","getSerialize","configError","wrapMethod","level","originalConsoleLevel","originalConsole","sentryLevel","Function","console$1","wrapConsoleMethod","dsnKeys","dsnPattern","navigator","VERSION","dsn","options","_logDebug","globalOptions","setDSN","maxBreadcrumbs","min","autoBreadcrumbDefaults","xhr","dom","sentry","instrumentDefaults","tryCatch","install","isSetup","_handleOnErrorStackInfo","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","lastIndexOf","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","context","wrap","_before","wrapped","deep","_ignoreNextOnError","__raven_wrapper__","property","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","trimHeadFrames","isNotError","isNotErrorEvent","isErrorEventWithoutError","captureMessage","_handleStackInfo","test","initialCall","fileurl","fingerprint","_prepareFrames","_send","captureBreadcrumb","crumb","timestamp","breadcrumbCallback","shift","addPlugin","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","O","X","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","Y","evtName","_keypressTimeout","target","category","$","debounceDuration","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","from","to","parsedLoc","parsedTo","parsedFrom","F","_originalFunctionToString","Q","G","wrapTimeFn","t","Array","originalCallback","wrapEventTarget","proto","capture","secure","handleEvent","before","clickHandler","keypressHandler","_keypressEventHandler","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","H","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","onreadystatechange","origFetch","fetchInput","fetchData","then","response","addEventListener","attachEvent","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","builtin","S","I","installer","J","m","allowSecretKey","M","port","E","T","_triggerEvent","_processException","U","frame","_normalizeFrame","in_app","da","stackInfoUrl","normalized","function","ca","prefixedMessage","culprit","ea","request","Referer","breadcrumbs","_trimBreadcrumbs","fa","urlProp","urlProps","ga","httpData","userAgent","User-Agent","referrer","A","_backoffDuration","_backoffStart","ja","ka","current","last","la","_shouldBackoff","retry","get","getResponseHeader","parseInt","V","baseData","project","platform","_getHttpData","serverName","server_name","forEach","_sendProcessedPayload","na","ma","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","oa","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","onload","open","setRequestHeader","send","pa","hash","evaluated","D","W","setUser","setReleaseContext","raven","_window","_Raven","noConflict","singleton","angularPattern","matches","angularDocs","angular$2"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file +{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","angularPlugin","angular","RavenProvider","$get","$window","ExceptionHandlerProvider","$provide","decorator","exceptionHandler","R","$delegate","ex","cause","captureException","extra","moduleName","provider","config","setDataCallback","wrappedCallback","data","_normalizeData","angularPattern","exception","values","matches","exec","value","type","message","angularDocs","substr","addPlugin","5","6","2","RavenConfigError","name","prototype","constructor","3","utils","wrapMethod","console","level","callback","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","msg","safeJoin","logger","Function","apply","4","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","sanitizeKeys","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isError","isObject","isPlainObject","isErrorEvent","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","sanitize","wrapConsoleMethod","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","dsn","options","_logDebug","globalOptions","key","setDSN","push","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","toString","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","context","func","undefined","wrap","_before","wrapped","deep","_ignoreNextOnError","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","U","event","reason","unhandledPromiseRejection","C","_promiseRejectionHandler","bind","addEventListener","Q","removeEventListener","trimHeadFrames","error","captureMessage","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","V","currentOptions","exKeys","Object","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","M","setTimeout","_","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","aa","evtName","_keypressTimeout","target","category","ca","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","da","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","D","_originalFunctionToString","E","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","F","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","S","builtin","T","G","installer","concat","H","str","m","allowSecretKey","K","port","B","W","stackInfo","_triggerEvent","_processException","lineno","Y","frame","_normalizeFrame","in_app","ha","stackInfoUrl","normalized","filename","line","colno","column","function","ga","prefixedMessage","culprit","ia","request","Referer","breadcrumbs","_trimBreadcrumbs","ja","urlProp","urlProps","ka","httpData","userAgent","User-Agent","referrer","z","_backoffDuration","_backoffStart","na","oa","current","last","pa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Z","baseData","project","platform","_getHttpData","serverName","server_name","_sanitizeData","forEach","random","_sendProcessedPayload","qa","sa","ra","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","ta","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","onerror","open","setRequestHeader","send","ua","hash","evaluated","A","$","setUser","setReleaseContext","7","8","9","RavenConstructor","_Raven","noConflict","Client","what","supportsErrorEvent","ErrorEvent","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","sanitizeMask","safeInput","o_O","getLocationHref","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","y","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","charAt","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","string","raw"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file diff --git a/dist/console,ember,require,vue/raven.js b/dist/console,ember,require,vue/raven.js index 00d0ddf3cbc6..4d72762fcc7f 100644 --- a/dist/console,ember,require,vue/raven.js +++ b/dist/console,ember,require,vue/raven.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.22.2 (1b6187b) | github.com/getsentry/raven-js */ +/*! Raven.js 3.24.2 (540f32b) | github.com/getsentry/raven-js */ /* * Includes TraceKit @@ -10,3265 +10,4030 @@ * */ -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : - typeof define === 'function' && define.amd ? define(factory) : - (global.Raven = factory()); -}(this, (function () { 'use strict'; - -var commonjsGlobal = typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; - -function commonjsRequire () { - throw new Error('Dynamic requires are not currently supported by rollup-plugin-commonjs'); -} +(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.Raven = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o' : 'anonymous component') + + (vm._isVue && vm.$options.__file ? ' at ' + vm.$options.__file : '') + ); } -function isPlainObject(what) { - return Object.prototype.toString.call(what) === '[object Object]'; -} +function vuePlugin(Raven, Vue) { + Vue = Vue || window.Vue; -function isString$1(what) { - return Object.prototype.toString.call(what) === '[object String]'; -} + // quit if Vue isn't on the page + if (!Vue || !Vue.config) return; -function isArray$1(what) { - return Object.prototype.toString.call(what) === '[object Array]'; -} + var _oldOnError = Vue.config.errorHandler; + Vue.config.errorHandler = function VueErrorHandler(error, vm, info) { + var metaData = {}; -function isEmptyObject$1(what) { - if (!isPlainObject(what)) return false; + // vm and lifecycleHook are not always available + if (Object.prototype.toString.call(vm) === '[object Object]') { + metaData.componentName = formatComponentName(vm); + metaData.propsData = vm.$options.propsData; + } - for (var _ in what) { - if (what.hasOwnProperty(_)) { - return false; + if (typeof info !== 'undefined') { + metaData.lifecycleHook = info; } - } - return true; + Raven.captureException(error, { + extra: metaData + }); + + if (typeof _oldOnError === 'function') { + _oldOnError.call(this, error, vm, info); + } + }; } -function supportsErrorEvent() { - try { - new ErrorEvent(''); // eslint-disable-line no-new +module.exports = vuePlugin; - return true; - } catch (e) { - return false; - } +_dereq_(8).addPlugin(module.exports); +},{"8":8}],5:[function(_dereq_,module,exports){ +function RavenConfigError(message) { + this.name = 'RavenConfigError'; + this.message = message; } +RavenConfigError.prototype = new Error(); +RavenConfigError.prototype.constructor = RavenConfigError; -function supportsFetch$1() { - if (!('fetch' in _window$3)) return false; - - try { - new Headers(); // eslint-disable-line no-new +module.exports = RavenConfigError; - new Request(''); // eslint-disable-line no-new +},{}],6:[function(_dereq_,module,exports){ +var utils = _dereq_(9); - new Response(); // eslint-disable-line no-new +var wrapMethod = function(console, level, callback) { + var originalConsoleLevel = console[level]; + var originalConsole = console; - return true; - } catch (e) { - return false; + if (!(level in console)) { + return; } -} - -function wrappedCallback(callback) { - function dataCallback(data, original) { - var normalizedData = callback(data) || data; - - if (original) { - return original(normalizedData) || normalizedData; - } - return normalizedData; - } + var sentryLevel = level === 'warn' ? 'warning' : level; - return dataCallback; -} + console[level] = function() { + var args = [].slice.call(arguments); -function each$1(obj, callback) { - var i, j; + var msg = utils.safeJoin(args, ' '); + var data = {level: sentryLevel, logger: 'console', extra: {arguments: args}}; - if (isUndefined$1(obj.length)) { - for (i in obj) { - if (hasKey$1(obj, i)) { - callback.call(null, i, obj[i]); + if (level === 'assert') { + if (args[0] === false) { + // Default browsers message + msg = + 'Assertion failed: ' + (utils.safeJoin(args.slice(1), ' ') || 'console.assert'); + data.extra.arguments = args.slice(1); + callback && callback(msg, data); } + } else { + callback && callback(msg, data); } - } else { - j = obj.length; - if (j) { - for (i = 0; i < j; i++) { - callback.call(null, i, obj[i]); - } + // this fails for some browsers. :( + if (originalConsoleLevel) { + // IE9 doesn't allow calling apply on console functions directly + // See: https://stackoverflow.com/questions/5472938/does-ie9-support-console-log-and-is-it-a-real-function#answer-5473193 + Function.prototype.apply.call(originalConsoleLevel, originalConsole, args); } - } -} - -function objectMerge$1(obj1, obj2) { - if (!obj2) { - return obj1; - } + }; +}; - each$1(obj2, function (key, value) { - obj1[key] = value; - }); - return obj1; -} -/** - * This function is only used for react-native. - * react-native freezes object that have already been sent over the - * js bridge. We need this function in order to check if the object is frozen. - * So it's ok that objectFrozen returns false if Object.isFrozen is not - * supported because it's not relevant for other "platforms". See related issue: - * https://github.com/getsentry/react-native-sentry/issues/57 - */ +module.exports = { + wrapMethod: wrapMethod +}; +},{"9":9}],7:[function(_dereq_,module,exports){ +(function (global){ +/*global XDomainRequest:false */ -function objectFrozen$1(obj) { - if (!Object.isFrozen) { - return false; - } +var TraceKit = _dereq_(10); +var stringify = _dereq_(11); +var md5 = _dereq_(12); +var RavenConfigError = _dereq_(5); - return Object.isFrozen(obj); -} +var utils = _dereq_(9); +var isError = utils.isError; +var isObject = utils.isObject; +var isPlainObject = utils.isPlainObject; +var isErrorEvent = utils.isErrorEvent; +var isUndefined = utils.isUndefined; +var isFunction = utils.isFunction; +var isString = utils.isString; +var isArray = utils.isArray; +var isEmptyObject = utils.isEmptyObject; +var each = utils.each; +var objectMerge = utils.objectMerge; +var truncate = utils.truncate; +var objectFrozen = utils.objectFrozen; +var hasKey = utils.hasKey; +var joinRegExp = utils.joinRegExp; +var urlencode = utils.urlencode; +var uuid4 = utils.uuid4; +var htmlTreeAsString = utils.htmlTreeAsString; +var isSameException = utils.isSameException; +var isSameStacktrace = utils.isSameStacktrace; +var parseUrl = utils.parseUrl; +var fill = utils.fill; +var supportsFetch = utils.supportsFetch; +var supportsReferrerPolicy = utils.supportsReferrerPolicy; +var serializeKeysForMessage = utils.serializeKeysForMessage; +var serializeException = utils.serializeException; +var sanitize = utils.sanitize; -function truncate$1(str, max) { - return !max || str.length <= max ? str : str.substr(0, max) + "\u2026"; -} -/** - * hasKey, a better form of hasOwnProperty - * Example: hasKey(MainHostObject, property) === true/false - * - * @param {Object} host object to check property - * @param {string} key to check - */ +var wrapConsoleMethod = _dereq_(6).wrapMethod; +var dsnKeys = 'source protocol user pass host port path'.split(' '), + dsnPattern = /^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/; -function hasKey$1(object, key) { - return Object.prototype.hasOwnProperty.call(object, key); +function now() { + return +new Date(); } -function joinRegExp$1(patterns) { - // Combine an array of regular expressions and strings into one large regexp - // Be mad. - var sources = [], - i = 0, - len = patterns.length, - pattern; - - for (; i < len; i++) { - pattern = patterns[i]; - - if (isString$1(pattern)) { - // If it's a string, we need to escape it - // Taken from: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions - sources.push(pattern.replace(/([.*+?^=!:${}()|\[\]\/\\])/g, '\\$1')); - } else if (pattern && pattern.source) { - // If it's a regexp already, we want to extract the source - sources.push(pattern.source); - } // Intentionally skip other cases +// This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) +var _window = + typeof window !== 'undefined' + ? window + : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; +var _document = _window.document; +var _navigator = _window.navigator; - } +function keepOriginalCallback(original, callback) { + return isFunction(callback) + ? function(data) { + return callback(data, original); + } + : callback; +} - return new RegExp(sources.join('|'), 'i'); +// First, check for JSON support +// If there is no JSON, we no-op the core features of Raven +// since JSON is required to encode the payload +function Raven() { + this._hasJSON = !!(typeof JSON === 'object' && JSON.stringify); + // Raven can run in contexts where there's no document (react-native) + this._hasDocument = !isUndefined(_document); + this._hasNavigator = !isUndefined(_navigator); + this._lastCapturedException = null; + this._lastData = null; + this._lastEventId = null; + this._globalServer = null; + this._globalKey = null; + this._globalProject = null; + this._globalContext = {}; + this._globalOptions = { + // SENTRY_RELEASE can be injected by https://github.com/getsentry/sentry-webpack-plugin + release: _window.SENTRY_RELEASE && _window.SENTRY_RELEASE.id, + logger: 'javascript', + ignoreErrors: [], + ignoreUrls: [], + whitelistUrls: [], + includePaths: [], + headers: null, + collectWindowErrors: true, + captureUnhandledRejections: true, + maxMessageLength: 0, + // By default, truncates URL values to 250 chars + maxUrlLength: 250, + stackTraceLimit: 50, + autoBreadcrumbs: true, + instrument: true, + sampleRate: 1, + sanitizeKeys: [] + }; + this._fetchDefaults = { + method: 'POST', + keepalive: true, + // Despite all stars in the sky saying that Edge supports old draft syntax, aka 'never', 'always', 'origin' and 'default + // https://caniuse.com/#feat=referrer-policy + // It doesn't. And it throw exception instead of ignoring this parameter... + // REF: https://github.com/getsentry/raven-js/issues/1233 + referrerPolicy: supportsReferrerPolicy() ? 'origin' : '' + }; + this._ignoreOnError = 0; + this._isRavenInstalled = false; + this._originalErrorStackTraceLimit = Error.stackTraceLimit; + // capture references to window.console *and* all its methods first + // before the console plugin has a chance to monkey patch + this._originalConsole = _window.console || {}; + this._originalConsoleMethods = {}; + this._plugins = []; + this._startTime = now(); + this._wrappedBuiltIns = []; + this._breadcrumbs = []; + this._lastCapturedEvent = null; + this._keypressTimeout; + this._location = _window.location; + this._lastHref = this._location && this._location.href; + this._resetBackoff(); + + // eslint-disable-next-line guard-for-in + for (var method in this._originalConsole) { + this._originalConsoleMethods[method] = this._originalConsole[method]; + } } -function urlencode$1(o) { - var pairs = []; - each$1(o, function (key, value) { - pairs.push(encodeURIComponent(key) + '=' + encodeURIComponent(value)); - }); - return pairs.join('&'); -} // borrowed from https://tools.ietf.org/html/rfc3986#appendix-B -// intentionally using regex and not href parsing trick because React Native and other -// environments where DOM might not be available +/* + * The core Raven singleton + * + * @this {Raven} + */ +Raven.prototype = { + // Hardcode version string so that raven source can be loaded directly via + // webpack (using a build step causes webpack #1617). Grunt verifies that + // this value matches package.json during build. + // See: https://github.com/getsentry/raven-js/issues/465 + VERSION: '3.24.2', -function parseUrl$1(url) { - if (typeof url !== 'string') return {}; - var match = url.match(/^(([^:\/?#]+):)?(\/\/([^\/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?$/); // coerce to undefined values to empty string so we don't get 'undefined' + debug: false, - var query = match[6] || ''; - var fragment = match[8] || ''; - return { - protocol: match[2], - host: match[4], - path: match[5], - relative: match[5] + query + fragment // everything minus origin + TraceKit: TraceKit, // alias to TraceKit - }; -} + /* + * Configure Raven with a DSN and extra options + * + * @param {string} dsn The public Sentry DSN + * @param {object} options Set of global options [optional] + * @return {Raven} + */ + config: function(dsn, options) { + var self = this; -function uuid4$1() { - var crypto = _window$3.crypto || _window$3.msCrypto; + if (self._globalServer) { + this._logDebug('error', 'Error: Raven has already been configured'); + return self; + } + if (!dsn) return self; - if (!isUndefined$1(crypto) && crypto.getRandomValues) { - // Use window.crypto API if available - // eslint-disable-next-line no-undef - var arr = new Uint16Array(8); - crypto.getRandomValues(arr); // set 4 in byte 7 + var globalOptions = self._globalOptions; - arr[3] = arr[3] & 0xfff | 0x4000; // set 2 most significant bits of byte 9 to '10' + // merge in options + if (options) { + each(options, function(key, value) { + // tags and extra are special and need to be put into context + if (key === 'tags' || key === 'extra' || key === 'user') { + self._globalContext[key] = value; + } else { + globalOptions[key] = value; + } + }); + } - arr[4] = arr[4] & 0x3fff | 0x8000; + self.setDSN(dsn); - var pad = function pad(num) { - var v = num.toString(16); + // "Script error." is hard coded into browsers for errors that it can't read. + // this is the result of a script being pulled in from an external domain and CORS. + globalOptions.ignoreErrors.push(/^Script error\.?$/); + globalOptions.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/); - while (v.length < 4) { - v = '0' + v; - } + // join regexp rules into one big rule + globalOptions.ignoreErrors = joinRegExp(globalOptions.ignoreErrors); + globalOptions.ignoreUrls = globalOptions.ignoreUrls.length + ? joinRegExp(globalOptions.ignoreUrls) + : false; + globalOptions.whitelistUrls = globalOptions.whitelistUrls.length + ? joinRegExp(globalOptions.whitelistUrls) + : false; + globalOptions.includePaths = joinRegExp(globalOptions.includePaths); + globalOptions.maxBreadcrumbs = Math.max( + 0, + Math.min(globalOptions.maxBreadcrumbs || 100, 100) + ); // default and hard limit is 100 - return v; + var autoBreadcrumbDefaults = { + xhr: true, + console: true, + dom: true, + location: true, + sentry: true }; - return pad(arr[0]) + pad(arr[1]) + pad(arr[2]) + pad(arr[3]) + pad(arr[4]) + pad(arr[5]) + pad(arr[6]) + pad(arr[7]); - } else { - // http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/2117523#2117523 - return 'xxxxxxxxxxxx4xxxyxxxxxxxxxxxxxxx'.replace(/[xy]/g, function (c) { - var r = Math.random() * 16 | 0, - v = c === 'x' ? r : r & 0x3 | 0x8; - return v.toString(16); - }); - } -} -/** - * Given a child DOM element, returns a query-selector statement describing that - * and its ancestors - * e.g. [HTMLElement] => body > div > input#foo.btn[name=baz] - * @param elem - * @returns {string} - */ - - -function htmlTreeAsString$1(elem) { - /* eslint no-extra-parens:0*/ - var MAX_TRAVERSE_HEIGHT = 5, - MAX_OUTPUT_LEN = 80, - out = [], - height = 0, - len = 0, - separator = ' > ', - sepLength = separator.length, - nextStr; + var autoBreadcrumbs = globalOptions.autoBreadcrumbs; + if ({}.toString.call(autoBreadcrumbs) === '[object Object]') { + autoBreadcrumbs = objectMerge(autoBreadcrumbDefaults, autoBreadcrumbs); + } else if (autoBreadcrumbs !== false) { + autoBreadcrumbs = autoBreadcrumbDefaults; + } + globalOptions.autoBreadcrumbs = autoBreadcrumbs; - while (elem && height++ < MAX_TRAVERSE_HEIGHT) { - nextStr = htmlElementAsString(elem); // bail out if - // - nextStr is the 'html' element - // - the length of the string that would be created exceeds MAX_OUTPUT_LEN - // (ignore this limit if we are on the first iteration) + var instrumentDefaults = { + tryCatch: true + }; - if (nextStr === 'html' || height > 1 && len + out.length * sepLength + nextStr.length >= MAX_OUTPUT_LEN) { - break; + var instrument = globalOptions.instrument; + if ({}.toString.call(instrument) === '[object Object]') { + instrument = objectMerge(instrumentDefaults, instrument); + } else if (instrument !== false) { + instrument = instrumentDefaults; } + globalOptions.instrument = instrument; - out.push(nextStr); - len += nextStr.length; - elem = elem.parentNode; - } - - return out.reverse().join(separator); -} -/** - * Returns a simple, query-selector representation of a DOM element - * e.g. [HTMLElement] => input#foo.btn[name=baz] - * @param HTMLElement - * @returns {string} - */ + TraceKit.collectWindowErrors = !!globalOptions.collectWindowErrors; + // return for chaining + return self; + }, -function htmlElementAsString(elem) { - var out = [], - className, - classes, - key, - attr, - i; + /* + * Installs a global window.onerror error handler + * to capture and report uncaught exceptions. + * At this point, install() is required to be called due + * to the way TraceKit is set up. + * + * @return {Raven} + */ + install: function() { + var self = this; + if (self.isSetup() && !self._isRavenInstalled) { + TraceKit.report.subscribe(function() { + self._handleOnErrorStackInfo.apply(self, arguments); + }); - if (!elem || !elem.tagName) { - return ''; - } + if (self._globalOptions.captureUnhandledRejections) { + self._attachPromiseRejectionHandler(); + } - out.push(elem.tagName.toLowerCase()); + self._patchFunctionToString(); - if (elem.id) { - out.push('#' + elem.id); - } + if (self._globalOptions.instrument && self._globalOptions.instrument.tryCatch) { + self._instrumentTryCatch(); + } - className = elem.className; + if (self._globalOptions.autoBreadcrumbs) self._instrumentBreadcrumbs(); - if (className && isString$1(className)) { - classes = className.split(/\s+/); + // Install all of the plugins + self._drainPlugins(); - for (i = 0; i < classes.length; i++) { - out.push('.' + classes[i]); + self._isRavenInstalled = true; } - } - - var attrWhitelist = ['type', 'name', 'title', 'alt']; - for (i = 0; i < attrWhitelist.length; i++) { - key = attrWhitelist[i]; - attr = elem.getAttribute(key); + Error.stackTraceLimit = self._globalOptions.stackTraceLimit; + return this; + }, - if (attr) { - out.push('[' + key + '="' + attr + '"]'); - } - } + /* + * Set the DSN (can be called multiple time unlike config) + * + * @param {string} dsn The public Sentry DSN + */ + setDSN: function(dsn) { + var self = this, + uri = self._parseDSN(dsn), + lastSlash = uri.path.lastIndexOf('/'), + path = uri.path.substr(1, lastSlash); - return out.join(''); -} -/** - * Returns true if either a OR b is truthy, but not both - */ + self._dsn = dsn; + self._globalKey = uri.user; + self._globalSecret = uri.pass && uri.pass.substr(1); + self._globalProject = uri.path.substr(lastSlash + 1); + self._globalServer = self._getGlobalServer(uri); -function isOnlyOneTruthy(a, b) { - return !!(!!a ^ !!b); -} -/** - * Returns true if both parameters are undefined - */ + self._globalEndpoint = + self._globalServer + '/' + path + 'api/' + self._globalProject + '/store/'; + // Reset backoff state since we may be pointing at a + // new project/server + this._resetBackoff(); + }, -function isBothUndefined(a, b) { - return isUndefined$1(a) && isUndefined$1(b); -} -/** - * Returns true if the two input exception interfaces have the same content - */ + /* + * Wrap code within a context so Raven can capture errors + * reliably across domains that is executed immediately. + * + * @param {object} options A specific set of options for this context [optional] + * @param {function} func The callback to be immediately executed within the context + * @param {array} args An array of arguments to be called with the callback [optional] + */ + context: function(options, func, args) { + if (isFunction(options)) { + args = func || []; + func = options; + options = undefined; + } + return this.wrap(options, func).apply(this, args); + }, -function isSameException$1(ex1, ex2) { - if (isOnlyOneTruthy(ex1, ex2)) return false; - ex1 = ex1.values[0]; - ex2 = ex2.values[0]; - if (ex1.type !== ex2.type || ex1.value !== ex2.value) return false; // in case both stacktraces are undefined, we can't decide so default to false - - if (isBothUndefined(ex1.stacktrace, ex2.stacktrace)) return false; - return isSameStacktrace$1(ex1.stacktrace, ex2.stacktrace); -} -/** - * Returns true if the two input stack trace interfaces have the same content - */ - - -function isSameStacktrace$1(stack1, stack2) { - if (isOnlyOneTruthy(stack1, stack2)) return false; - var frames1 = stack1.frames; - var frames2 = stack2.frames; // Exit early if frame count differs - - if (frames1.length !== frames2.length) return false; // Iterate through every frame; bail out if anything differs - - var a, b; - - for (var i = 0; i < frames1.length; i++) { - a = frames1[i]; - b = frames2[i]; - if (a.filename !== b.filename || a.lineno !== b.lineno || a.colno !== b.colno || a['function'] !== b['function']) return false; - } - - return true; -} -/** - * Polyfill a method - * @param obj object e.g. `document` - * @param name method name present on object e.g. `addEventListener` - * @param replacement replacement function - * @param track {optional} record instrumentation to an array - */ - - -function fill$1(obj, name, replacement, track) { - var orig = obj[name]; - obj[name] = replacement(orig); - obj[name].__raven__ = true; - obj[name].__orig__ = orig; - - if (track) { - track.push([obj, name, orig]); - } -} -/** - * Join values in array - * @param input array of values to be joined together - * @param delimiter string to be placed in-between values - * @returns {string} - */ + /* + * Wrap code within a context and returns back a new function to be executed + * + * @param {object} options A specific set of options for this context [optional] + * @param {function} func The function to be wrapped in a new context + * @param {function} func A function to call before the try/catch wrapper [optional, private] + * @return {function} The newly wrapped functions with a context + */ + wrap: function(options, func, _before) { + var self = this; + // 1 argument has been passed, and it's not a function + // so just return it + if (isUndefined(func) && !isFunction(options)) { + return options; + } + // options is optional + if (isFunction(options)) { + func = options; + options = undefined; + } -function safeJoin(input, delimiter) { - if (!isArray$1(input)) return ''; - var output = []; + // At this point, we've passed along 2 arguments, and the second one + // is not a function either, so we'll just return the second argument. + if (!isFunction(func)) { + return func; + } - for (var i = 0; i < input.length; i++) { + // We don't wanna wrap it twice! try { - output.push(String(input[i])); + if (func.__raven__) { + return func; + } + + // If this has already been wrapped in the past, return that + if (func.__raven_wrapper__) { + return func.__raven_wrapper__; + } } catch (e) { - output.push('[value cannot be serialized]'); + // Just accessing custom props in some Selenium environments + // can cause a "Permission denied" exception (see raven-js#495). + // Bail on wrapping and return the function as-is (defers to window.onerror). + return func; } - } - - return output.join(delimiter); -} -var utils = { - isObject: isObject$1, - isError: isError$1, - isErrorEvent: isErrorEvent$1, - isUndefined: isUndefined$1, - isFunction: isFunction$1, - isPlainObject: isPlainObject, - isString: isString$1, - isArray: isArray$1, - isEmptyObject: isEmptyObject$1, - supportsErrorEvent: supportsErrorEvent, - supportsFetch: supportsFetch$1, - wrappedCallback: wrappedCallback, - each: each$1, - objectMerge: objectMerge$1, - truncate: truncate$1, - objectFrozen: objectFrozen$1, - hasKey: hasKey$1, - joinRegExp: joinRegExp$1, - urlencode: urlencode$1, - uuid4: uuid4$1, - htmlTreeAsString: htmlTreeAsString$1, - htmlElementAsString: htmlElementAsString, - isSameException: isSameException$1, - isSameStacktrace: isSameStacktrace$1, - parseUrl: parseUrl$1, - fill: fill$1, - safeJoin: safeJoin -}; + function wrapped() { + var args = [], + i = arguments.length, + deep = !options || (options && options.deep !== false); -/* - TraceKit - Cross brower stack traces + if (_before && isFunction(_before)) { + _before.apply(this, arguments); + } - This was originally forked from github.com/occ/TraceKit, but has since been - largely re-written and is now maintained as part of raven-js. Tests for - this are in test/vendor. + // Recursively wrap all of a function's arguments that are + // functions themselves. + while (i--) args[i] = deep ? self.wrap(options, arguments[i]) : arguments[i]; - MIT license -*/ + try { + // Attempt to invoke user-land function + // NOTE: If you are a Sentry user, and you are seeing this stack frame, it + // means Raven caught an error invoking your application code. This is + // expected behavior and NOT indicative of a bug with Raven.js. + return func.apply(this, args); + } catch (e) { + self._ignoreNextOnError(); + self.captureException(e, options); + throw e; + } + } -var TraceKit = { - collectWindowErrors: true, - debug: false -}; // This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) + // copy over properties of the old function + for (var property in func) { + if (hasKey(func, property)) { + wrapped[property] = func[property]; + } + } + wrapped.prototype = func.prototype; -var _window$2 = typeof window !== 'undefined' ? window : typeof commonjsGlobal !== 'undefined' ? commonjsGlobal : typeof self !== 'undefined' ? self : {}; // global reference to slice + func.__raven_wrapper__ = wrapped; + // Signal that this function has been wrapped/filled already + // for both debugging and to prevent it to being wrapped/filled twice + wrapped.__raven__ = true; + wrapped.__orig__ = func; + return wrapped; + }, -var _slice = [].slice; -var UNKNOWN_FUNCTION = '?'; // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error#Error_types + /** + * Uninstalls the global error handler. + * + * @return {Raven} + */ + uninstall: function() { + TraceKit.report.uninstall(); -var ERROR_TYPES_RE = /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/; + this._detachPromiseRejectionHandler(); + this._unpatchFunctionToString(); + this._restoreBuiltIns(); + this._restoreConsole(); -function getLocationHref() { - if (typeof document === 'undefined' || document.location == null) return ''; - return document.location.href; -} -/** - * TraceKit.report: cross-browser processing of unhandled exceptions - * - * Syntax: - * TraceKit.report.subscribe(function(stackInfo) { ... }) - * TraceKit.report.unsubscribe(function(stackInfo) { ... }) - * TraceKit.report(exception) - * try { ...code... } catch(ex) { TraceKit.report(ex); } - * - * Supports: - * - Firefox: full stack trace with line numbers, plus column number - * on top frame; column number is not guaranteed - * - Opera: full stack trace with line and column numbers - * - Chrome: full stack trace with line and column numbers - * - Safari: line and column number for the top frame only; some frames - * may be missing, and column number is not guaranteed - * - IE: line and column number for the top frame only; some frames - * may be missing, and column number is not guaranteed - * - * In theory, TraceKit should work on all of the following versions: - * - IE5.5+ (only 8.0 tested) - * - Firefox 0.9+ (only 3.5+ tested) - * - Opera 7+ (only 10.50 tested; versions 9 and earlier may require - * Exceptions Have Stacktrace to be enabled in opera:config) - * - Safari 3+ (only 4+ tested) - * - Chrome 1+ (only 5+ tested) - * - Konqueror 3.5+ (untested) - * - * Requires TraceKit.computeStackTrace. - * - * Tries to catch all unhandled exceptions and report them to the - * subscribed handlers. Please note that TraceKit.report will rethrow the - * exception. This is REQUIRED in order to get a useful stack trace in IE. - * If the exception does not reach the top of the browser, you will only - * get a stack trace from the point where TraceKit.report was called. - * - * Handlers receive a stackInfo object as described in the - * TraceKit.computeStackTrace docs. - */ + Error.stackTraceLimit = this._originalErrorStackTraceLimit; + this._isRavenInstalled = false; + return this; + }, -TraceKit.report = function reportModuleWrapper() { - var handlers = [], - lastArgs = null, - lastException = null, - lastExceptionStack = null; /** - * Add a crash handler. - * @param {Function} handler - */ + * Callback used for `unhandledrejection` event + * + * @param {PromiseRejectionEvent} event An object containing + * promise: the Promise that was rejected + * reason: the value with which the Promise was rejected + * @return void + */ + _promiseRejectionHandler: function(event) { + this._logDebug('debug', 'Raven caught unhandled promise rejection:', event); + this.captureException(event.reason, { + extra: { + unhandledPromiseRejection: true + } + }); + }, - function subscribe(handler) { - installGlobalHandler(); - handlers.push(handler); - } /** - * Remove a crash handler. - * @param {Function} handler - */ + * Installs the global promise rejection handler. + * + * @return {raven} + */ + _attachPromiseRejectionHandler: function() { + this._promiseRejectionHandler = this._promiseRejectionHandler.bind(this); + _window.addEventListener && + _window.addEventListener('unhandledrejection', this._promiseRejectionHandler); + return this; + }, + /** + * Uninstalls the global promise rejection handler. + * + * @return {raven} + */ + _detachPromiseRejectionHandler: function() { + _window.removeEventListener && + _window.removeEventListener('unhandledrejection', this._promiseRejectionHandler); + return this; + }, - function unsubscribe(handler) { - for (var i = handlers.length - 1; i >= 0; --i) { - if (handlers[i] === handler) { - handlers.splice(i, 1); + /** + * Manually capture an exception and send it over to Sentry + * + * @param {error} ex An exception to be logged + * @param {object} options A specific set of options for this error [optional] + * @return {Raven} + */ + captureException: function(ex, options) { + options = objectMerge({trimHeadFrames: 0}, options ? options : {}); + + if (isErrorEvent(ex) && ex.error) { + // If it is an ErrorEvent with `error` property, extract it to get actual Error + ex = ex.error; + } else if (isError(ex)) { + // we have a real Error object + ex = ex; + } else if (isPlainObject(ex)) { + // If it is plain Object, serialize it manually and extract options + // This will allow us to group events based on top-level keys + // which is much better than creating new group when any key/value change + options = this._getCaptureExceptionOptionsFromPlainObject(options, ex); + ex = new Error(options.message); + } else { + // If none of previous checks were valid, then it means that + // it's not a plain Object + // it's not a valid ErrorEvent (one with an error property) + // it's not an Error + // So bail out and capture it as a simple message: + return this.captureMessage( + ex, + objectMerge(options, { + stacktrace: true, // if we fall back to captureMessage, default to attempting a new trace + trimHeadFrames: options.trimHeadFrames + 1 + }) + ); + } + + // Store the raw exception object for potential debugging and introspection + this._lastCapturedException = ex; + + // TraceKit.report will re-raise any exception passed to it, + // which means you have to wrap it in try/catch. Instead, we + // can wrap it here and only re-raise if TraceKit.report + // raises an exception different from the one we asked to + // report on. + try { + var stack = TraceKit.computeStackTrace(ex); + this._handleStackInfo(stack, options); + } catch (ex1) { + if (ex !== ex1) { + throw ex1; } } - } - /** - * Remove all crash handlers. - */ + return this; + }, - function unsubscribeAll() { - uninstallGlobalHandler(); - handlers = []; - } - /** - * Dispatch stack information to all handlers. - * @param {Object.} stack - */ - + _getCaptureExceptionOptionsFromPlainObject: function(currentOptions, ex) { + var exKeys = Object.keys(ex).sort(); + var options = objectMerge(currentOptions, { + message: + 'Non-Error exception captured with keys: ' + serializeKeysForMessage(exKeys), + fingerprint: [md5(exKeys)], + extra: currentOptions.extra || {} + }); + options.extra.__serialized__ = serializeException(ex); - function notifyHandlers(stack, isWindowError) { - var exception = null; + return options; + }, - if (isWindowError && !TraceKit.collectWindowErrors) { + /* + * Manually send a message to Sentry + * + * @param {string} msg A plain message to be captured in Sentry + * @param {object} options A specific set of options for this message [optional] + * @return {Raven} + */ + captureMessage: function(msg, options) { + // config() automagically converts ignoreErrors from a list to a RegExp so we need to test for an + // early call; we'll error on the side of logging anything called before configuration since it's + // probably something you should see: + if ( + !!this._globalOptions.ignoreErrors.test && + this._globalOptions.ignoreErrors.test(msg) + ) { return; } - for (var i in handlers) { - if (handlers.hasOwnProperty(i)) { - try { - handlers[i].apply(null, [stack].concat(_slice.call(arguments, 2))); - } catch (inner) { - exception = inner; - } - } - } + options = options || {}; + msg = msg + ''; // Make sure it's actually a string - if (exception) { - throw exception; + var data = objectMerge( + { + message: msg + }, + options + ); + + var ex; + // Generate a "synthetic" stack trace from this point. + // NOTE: If you are a Sentry user, and you are seeing this stack frame, it is NOT indicative + // of a bug with Raven.js. Sentry generates synthetic traces either by configuration, + // or if it catches a thrown object without a "stack" property. + try { + throw new Error(msg); + } catch (ex1) { + ex = ex1; } - } - var _oldOnerrorHandler, _onErrorHandlerInstalled; - /** - * Ensures all global unhandled exceptions are recorded. - * Supported by Gecko and IE. - * @param {string} msg Error message. - * @param {string} url URL of script that generated the exception. - * @param {(number|string)} lineNo The line number at which the error - * occurred. - * @param {?(number|string)} colNo The column number at which the error - * occurred. - * @param {?Error} ex The actual Error object. - */ + // null exception name so `Error` isn't prefixed to msg + ex.name = null; + var stack = TraceKit.computeStackTrace(ex); + // stack[0] is `throw new Error(msg)` call itself, we are interested in the frame that was just before that, stack[1] + var initialCall = isArray(stack.stack) && stack.stack[1]; - function traceKitWindowOnError(msg, url, lineNo, colNo, ex) { - var stack = null; // If 'ex' is ErrorEvent, get real Error from inside + // if stack[1] is `Raven.captureException`, it means that someone passed a string to it and we redirected that call + // to be handled by `captureMessage`, thus `initialCall` is the 3rd one, not 2nd + // initialCall => captureException(string) => captureMessage(string) + if (initialCall && initialCall.func === 'Raven.captureException') { + initialCall = stack.stack[2]; + } - var exception = utils.isErrorEvent(ex) ? ex.error : ex; // If 'msg' is ErrorEvent, get real message from inside + var fileurl = (initialCall && initialCall.url) || ''; - var message = utils.isErrorEvent(msg) ? msg.message : msg; + if ( + !!this._globalOptions.ignoreUrls.test && + this._globalOptions.ignoreUrls.test(fileurl) + ) { + return; + } - if (lastExceptionStack) { - TraceKit.computeStackTrace.augmentStackTraceWithInitialElement(lastExceptionStack, url, lineNo, message); - processLastException(); - } else if (exception && utils.isError(exception)) { - // non-string `exception` arg; attempt to extract stack trace - // New chrome and blink send along a real error object - // Let's just report that like a normal error. - // See: https://mikewest.org/2013/08/debugging-runtime-errors-with-window-onerror - stack = TraceKit.computeStackTrace(exception); - notifyHandlers(stack, true); - } else { - var location = { - url: url, - line: lineNo, - column: colNo - }; - var name = undefined; - var groups; + if ( + !!this._globalOptions.whitelistUrls.test && + !this._globalOptions.whitelistUrls.test(fileurl) + ) { + return; + } - if ({}.toString.call(message) === '[object String]') { - var groups = message.match(ERROR_TYPES_RE); + if (this._globalOptions.stacktrace || (options && options.stacktrace)) { + // fingerprint on msg, not stack trace (legacy behavior, could be revisited) + data.fingerprint = data.fingerprint == null ? msg : data.fingerprint; - if (groups) { - name = groups[1]; - message = groups[2]; - } - } + options = objectMerge( + { + trimHeadFrames: 0 + }, + options + ); + // Since we know this is a synthetic trace, the top frame (this function call) + // MUST be from Raven.js, so mark it for trimming + // We add to the trim counter so that callers can choose to trim extra frames, such + // as utility functions. + options.trimHeadFrames += 1; - location.func = UNKNOWN_FUNCTION; - stack = { - name: name, - message: message, - url: getLocationHref(), - stack: [location] + var frames = this._prepareFrames(stack, options); + data.stacktrace = { + // Sentry expects frames oldest to newest + frames: frames.reverse() }; - notifyHandlers(stack, true); } - if (_oldOnerrorHandler) { - return _oldOnerrorHandler.apply(this, arguments); + // Make sure that fingerprint is always wrapped in an array + if (data.fingerprint) { + data.fingerprint = isArray(data.fingerprint) + ? data.fingerprint + : [data.fingerprint]; } - return false; - } + // Fire away! + this._send(data); - function installGlobalHandler() { - if (_onErrorHandlerInstalled) { - return; + return this; + }, + + captureBreadcrumb: function(obj) { + var crumb = objectMerge( + { + timestamp: now() / 1000 + }, + obj + ); + + if (isFunction(this._globalOptions.breadcrumbCallback)) { + var result = this._globalOptions.breadcrumbCallback(crumb); + + if (isObject(result) && !isEmptyObject(result)) { + crumb = result; + } else if (result === false) { + return this; + } } - _oldOnerrorHandler = _window$2.onerror; - _window$2.onerror = traceKitWindowOnError; - _onErrorHandlerInstalled = true; - } + this._breadcrumbs.push(crumb); + if (this._breadcrumbs.length > this._globalOptions.maxBreadcrumbs) { + this._breadcrumbs.shift(); + } + return this; + }, - function uninstallGlobalHandler() { - if (!_onErrorHandlerInstalled) { - return; + addPlugin: function(plugin /*arg1, arg2, ... argN*/) { + var pluginArgs = [].slice.call(arguments, 1); + + this._plugins.push([plugin, pluginArgs]); + if (this._isRavenInstalled) { + this._drainPlugins(); } - _window$2.onerror = _oldOnerrorHandler; - _onErrorHandlerInstalled = false; - _oldOnerrorHandler = undefined; - } + return this; + }, - function processLastException() { - var _lastExceptionStack = lastExceptionStack, - _lastArgs = lastArgs; - lastArgs = null; - lastExceptionStack = null; - lastException = null; - notifyHandlers.apply(null, [_lastExceptionStack, false].concat(_lastArgs)); - } - /** - * Reports an unhandled Error to TraceKit. - * @param {Error} ex - * @param {?boolean} rethrow If false, do not re-throw the exception. - * Only used for window.onerror to not cause an infinite loop of - * rethrowing. + /* + * Set/clear a user to be sent along with the payload. + * + * @param {object} user An object representing user data [optional] + * @return {Raven} */ + setUserContext: function(user) { + // Intentionally do not merge here since that's an unexpected behavior. + this._globalContext.user = user; + return this; + }, - function report(ex, rethrow) { - var args = _slice.call(arguments, 1); + /* + * Merge extra attributes to be sent along with the payload. + * + * @param {object} extra An object representing extra data [optional] + * @return {Raven} + */ + setExtraContext: function(extra) { + this._mergeContext('extra', extra); - if (lastExceptionStack) { - if (lastException === ex) { - return; // already caught by an inner catch block, ignore - } else { - processLastException(); - } - } + return this; + }, - var stack = TraceKit.computeStackTrace(ex); - lastExceptionStack = stack; - lastException = ex; - lastArgs = args; // If the stack trace is incomplete, wait for 2 seconds for - // slow slow IE to see if onerror occurs or not before reporting - // this exception; otherwise, we will end up with an incomplete - // stack trace + /* + * Merge tags to be sent along with the payload. + * + * @param {object} tags An object representing tags [optional] + * @return {Raven} + */ + setTagsContext: function(tags) { + this._mergeContext('tags', tags); - setTimeout(function () { - if (lastException === ex) { - processLastException(); - } - }, stack.incomplete ? 2000 : 0); + return this; + }, - if (rethrow !== false) { - throw ex; // re-throw to propagate to the top level (and cause window.onerror) - } - } + /* + * Clear all of the context. + * + * @return {Raven} + */ + clearContext: function() { + this._globalContext = {}; - report.subscribe = subscribe; - report.unsubscribe = unsubscribe; - report.uninstall = unsubscribeAll; - return report; -}(); -/** - * TraceKit.computeStackTrace: cross-browser stack traces in JavaScript - * - * Syntax: - * s = TraceKit.computeStackTrace(exception) // consider using TraceKit.report instead (see below) - * Returns: - * s.name - exception name - * s.message - exception message - * s.stack[i].url - JavaScript or HTML file URL - * s.stack[i].func - function name, or empty for anonymous functions (if guessing did not work) - * s.stack[i].args - arguments passed to the function, if known - * s.stack[i].line - line number, if known - * s.stack[i].column - column number, if known - * - * Supports: - * - Firefox: full stack trace with line numbers and unreliable column - * number on top frame - * - Opera 10: full stack trace with line and column numbers - * - Opera 9-: full stack trace with line numbers - * - Chrome: full stack trace with line and column numbers - * - Safari: line and column number for the topmost stacktrace element - * only - * - IE: no line numbers whatsoever - * - * Tries to guess names of anonymous functions by looking for assignments - * in the source code. In IE and Safari, we have to guess source file names - * by searching for function bodies inside all page scripts. This will not - * work for scripts that are loaded cross-domain. - * Here be dragons: some function names may be guessed incorrectly, and - * duplicate functions may be mismatched. - * - * TraceKit.computeStackTrace should only be used for tracing purposes. - * Logging of unhandled exceptions should be done with TraceKit.report, - * which builds on top of TraceKit.computeStackTrace and provides better - * IE support by utilizing the window.onerror event to retrieve information - * about the top of the stack. - * - * Note: In IE and Safari, no stack trace is recorded on the Error object, - * so computeStackTrace instead walks its *own* chain of callers. - * This means that: - * * in Safari, some methods may be missing from the stack trace; - * * in IE, the topmost function in the stack trace will always be the - * caller of computeStackTrace. - * - * This is okay for tracing (because you are likely to be calling - * computeStackTrace from the function you want to be the topmost element - * of the stack trace anyway), but not okay for logging unhandled - * exceptions (because your catch block will likely be far away from the - * inner function that actually caused the exception). - * - */ + return this; + }, + /* + * Get a copy of the current context. This cannot be mutated. + * + * @return {object} copy of context + */ + getContext: function() { + // lol javascript + return JSON.parse(stringify(this._globalContext)); + }, -TraceKit.computeStackTrace = function computeStackTraceWrapper() { - // Contents of Exception in various browsers. - // - // SAFARI: - // ex.message = Can't find variable: qq - // ex.line = 59 - // ex.sourceId = 580238192 - // ex.sourceURL = http://... - // ex.expressionBeginOffset = 96 - // ex.expressionCaretOffset = 98 - // ex.expressionEndOffset = 98 - // ex.name = ReferenceError - // - // FIREFOX: - // ex.message = qq is not defined - // ex.fileName = http://... - // ex.lineNumber = 59 - // ex.columnNumber = 69 - // ex.stack = ...stack trace... (see the example below) - // ex.name = ReferenceError - // - // CHROME: - // ex.message = qq is not defined - // ex.name = ReferenceError - // ex.type = not_defined - // ex.arguments = ['aa'] - // ex.stack = ...stack trace... - // - // INTERNET EXPLORER: - // ex.message = ... - // ex.name = ReferenceError - // - // OPERA: - // ex.message = ...message... (see the example below) - // ex.name = ReferenceError - // ex.opera#sourceloc = 11 (pretty much useless, duplicates the info in ex.message) - // ex.stacktrace = n/a; see 'opera:config#UserPrefs|Exceptions Have Stacktrace' + /* + * Set environment of application + * + * @param {string} environment Typically something like 'production'. + * @return {Raven} + */ + setEnvironment: function(environment) { + this._globalOptions.environment = environment; - /** - * Computes stack trace information from the stack property. - * Chrome and Gecko use this property. - * @param {Error} ex - * @return {?Object.} Stack trace information. + return this; + }, + + /* + * Set release version of application + * + * @param {string} release Typically something like a git SHA to identify version + * @return {Raven} */ - function computeStackTraceFromStackProp(ex) { - if (typeof ex.stack === 'undefined' || !ex.stack) return; - var chrome = /^\s*at (.*?) ?\(((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i, - gecko = /^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|\[native).*?|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i, - winjs = /^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i, - // Used to additionally parse URL/line/column from eval frames - geckoEval = /(\S+) line (\d+)(?: > eval line \d+)* > eval/i, - chromeEval = /\((\S*)(?::(\d+))(?::(\d+))\)/, - lines = ex.stack.split('\n'), - stack = [], - submatch, - parts, - element, - reference = /^(.*) is undefined$/.exec(ex.message); + setRelease: function(release) { + this._globalOptions.release = release; - for (var i = 0, j = lines.length; i < j; ++i) { - if (parts = chrome.exec(lines[i])) { - var isNative = parts[2] && parts[2].indexOf('native') === 0; // start of line + return this; + }, - var isEval = parts[2] && parts[2].indexOf('eval') === 0; // start of line + /* + * Set the dataCallback option + * + * @param {function} callback The callback to run which allows the + * data blob to be mutated before sending + * @return {Raven} + */ + setDataCallback: function(callback) { + var original = this._globalOptions.dataCallback; + this._globalOptions.dataCallback = keepOriginalCallback(original, callback); + return this; + }, - if (isEval && (submatch = chromeEval.exec(parts[2]))) { - // throw out eval line/column and use top-most line/column number - parts[2] = submatch[1]; // url + /* + * Set the breadcrumbCallback option + * + * @param {function} callback The callback to run which allows filtering + * or mutating breadcrumbs + * @return {Raven} + */ + setBreadcrumbCallback: function(callback) { + var original = this._globalOptions.breadcrumbCallback; + this._globalOptions.breadcrumbCallback = keepOriginalCallback(original, callback); + return this; + }, - parts[3] = submatch[2]; // line + /* + * Set the shouldSendCallback option + * + * @param {function} callback The callback to run which allows + * introspecting the blob before sending + * @return {Raven} + */ + setShouldSendCallback: function(callback) { + var original = this._globalOptions.shouldSendCallback; + this._globalOptions.shouldSendCallback = keepOriginalCallback(original, callback); + return this; + }, - parts[4] = submatch[3]; // column - } + /** + * Override the default HTTP transport mechanism that transmits data + * to the Sentry server. + * + * @param {function} transport Function invoked instead of the default + * `makeRequest` handler. + * + * @return {Raven} + */ + setTransport: function(transport) { + this._globalOptions.transport = transport; - element = { - url: !isNative ? parts[2] : null, - func: parts[1] || UNKNOWN_FUNCTION, - args: isNative ? [parts[2]] : [], - line: parts[3] ? +parts[3] : null, - column: parts[4] ? +parts[4] : null - }; - } else if (parts = winjs.exec(lines[i])) { - element = { - url: parts[2], - func: parts[1] || UNKNOWN_FUNCTION, - args: [], - line: +parts[3], - column: parts[4] ? +parts[4] : null - }; - } else if (parts = gecko.exec(lines[i])) { - var isEval = parts[3] && parts[3].indexOf(' > eval') > -1; + return this; + }, - if (isEval && (submatch = geckoEval.exec(parts[3]))) { - // throw out eval line/column and use top-most line number - parts[3] = submatch[1]; - parts[4] = submatch[2]; - parts[5] = null; // no column when eval - } else if (i === 0 && !parts[5] && typeof ex.columnNumber !== 'undefined') { - // FireFox uses this awesome columnNumber property for its top frame - // Also note, Firefox's column number is 0-based and everything else expects 1-based, - // so adding 1 - // NOTE: this hack doesn't work if top-most frame is eval - stack[0].column = ex.columnNumber + 1; - } + /* + * Get the latest raw exception that was captured by Raven. + * + * @return {error} + */ + lastException: function() { + return this._lastCapturedException; + }, - element = { - url: parts[3], - func: parts[1] || UNKNOWN_FUNCTION, - args: parts[2] ? parts[2].split(',') : [], - line: parts[4] ? +parts[4] : null, - column: parts[5] ? +parts[5] : null - }; - } else { - continue; - } + /* + * Get the last event id + * + * @return {string} + */ + lastEventId: function() { + return this._lastEventId; + }, - if (!element.func && element.line) { - element.func = UNKNOWN_FUNCTION; + /* + * Determine if Raven is setup and ready to go. + * + * @return {boolean} + */ + isSetup: function() { + if (!this._hasJSON) return false; // needs JSON support + if (!this._globalServer) { + if (!this.ravenNotConfiguredError) { + this.ravenNotConfiguredError = true; + this._logDebug('error', 'Error: Raven has not been configured.'); } - - stack.push(element); + return false; } + return true; + }, - if (!stack.length) { - return null; - } + afterLoad: function() { + // TODO: remove window dependence? - return { - name: ex.name, - message: ex.message, - url: getLocationHref(), - stack: stack - }; - } - /** - * Adds information about the first frame to incomplete stack traces. - * Safari and IE require this to get complete data on the first frame. - * @param {Object.} stackInfo Stack trace information from - * one of the compute* methods. - * @param {string} url The URL of the script that caused an error. - * @param {(number|string)} lineNo The line number of the script that - * caused an error. - * @param {string=} message The error generated by the browser, which - * hopefully contains the name of the object that caused the error. - * @return {boolean} Whether or not the stack information was - * augmented. - */ + // Attempt to initialize Raven on load + var RavenConfig = _window.RavenConfig; + if (RavenConfig) { + this.config(RavenConfig.dsn, RavenConfig.config).install(); + } + }, + showReportDialog: function(options) { + if ( + !_document // doesn't work without a document (React native) + ) + return; - function augmentStackTraceWithInitialElement(stackInfo, url, lineNo, message) { - var initial = { - url: url, - line: lineNo - }; + options = options || {}; - if (initial.url && initial.line) { - stackInfo.incomplete = false; + var lastEventId = options.eventId || this.lastEventId(); + if (!lastEventId) { + throw new RavenConfigError('Missing eventId'); + } - if (!initial.func) { - initial.func = UNKNOWN_FUNCTION; - } + var dsn = options.dsn || this._dsn; + if (!dsn) { + throw new RavenConfigError('Missing DSN'); + } - if (stackInfo.stack.length > 0) { - if (stackInfo.stack[0].url === initial.url) { - if (stackInfo.stack[0].line === initial.line) { - return false; // already in stack trace - } else if (!stackInfo.stack[0].line && stackInfo.stack[0].func === initial.func) { - stackInfo.stack[0].line = initial.line; - return false; - } - } - } + var encode = encodeURIComponent; + var qs = ''; + qs += '?eventId=' + encode(lastEventId); + qs += '&dsn=' + encode(dsn); - stackInfo.stack.unshift(initial); - stackInfo.partial = true; - return true; - } else { - stackInfo.incomplete = true; + var user = options.user || this._globalContext.user; + if (user) { + if (user.name) qs += '&name=' + encode(user.name); + if (user.email) qs += '&email=' + encode(user.email); } - return false; - } - /** - * Computes stack trace information by walking the arguments.caller - * chain at the time the exception occurred. This will cause earlier - * frames to be missed but is the only way to get any stack trace in - * Safari and IE. The top frame is restored by - * {@link augmentStackTraceWithInitialElement}. - * @param {Error} ex - * @return {?Object.} Stack trace information. - */ + var globalServer = this._getGlobalServer(this._parseDSN(dsn)); + var script = _document.createElement('script'); + script.async = true; + script.src = globalServer + '/api/embed/error-page/' + qs; + (_document.head || _document.body).appendChild(script); + }, - function computeStackTraceByWalkingCallerChain(ex, depth) { - var functionName = /function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i, - stack = [], - funcs = {}, - recursion = false, - parts, - item; + /**** Private functions ****/ + _ignoreNextOnError: function() { + var self = this; + this._ignoreOnError += 1; + setTimeout(function() { + // onerror should trigger before setTimeout + self._ignoreOnError -= 1; + }); + }, - for (var curr = computeStackTraceByWalkingCallerChain.caller; curr && !recursion; curr = curr.caller) { - if (curr === computeStackTrace || curr === TraceKit.report) { - // console.log('skipping internal function'); - continue; - } + _triggerEvent: function(eventType, options) { + // NOTE: `event` is a native browser thing, so let's avoid conflicting wiht it + var evt, key; - item = { - url: null, - func: UNKNOWN_FUNCTION, - line: null, - column: null - }; + if (!this._hasDocument) return; - if (curr.name) { - item.func = curr.name; - } else if (parts = functionName.exec(curr.toString())) { - item.func = parts[1]; - } - - if (typeof item.func === 'undefined') { - try { - item.func = parts.input.substring(0, parts.input.indexOf('{')); - } catch (e) {} - } + options = options || {}; - if (funcs['' + curr]) { - recursion = true; - } else { - funcs['' + curr] = true; - } + eventType = 'raven' + eventType.substr(0, 1).toUpperCase() + eventType.substr(1); - stack.push(item); + if (_document.createEvent) { + evt = _document.createEvent('HTMLEvents'); + evt.initEvent(eventType, true, true); + } else { + evt = _document.createEventObject(); + evt.eventType = eventType; } - if (depth) { - // console.log('depth is ' + depth); - // console.log('stack is ' + stack.length); - stack.splice(0, depth); + for (key in options) + if (hasKey(options, key)) { + evt[key] = options[key]; + } + + if (_document.createEvent) { + // IE9 if standards + _document.dispatchEvent(evt); + } else { + // IE8 regardless of Quirks or Standards + // IE9 if quirks + try { + _document.fireEvent('on' + evt.eventType.toLowerCase(), evt); + } catch (e) { + // Do nothing + } } + }, - var result = { - name: ex.name, - message: ex.message, - url: getLocationHref(), - stack: stack - }; - augmentStackTraceWithInitialElement(result, ex.sourceURL || ex.fileName, ex.line || ex.lineNumber, ex.message || ex.description); - return result; - } /** - * Computes a stack trace for an exception. - * @param {Error} ex - * @param {(string|number)=} depth - */ - + * Wraps addEventListener to capture UI breadcrumbs + * @param evtName the event name (e.g. "click") + * @returns {Function} + * @private + */ + _breadcrumbEventHandler: function(evtName) { + var self = this; + return function(evt) { + // reset keypress timeout; e.g. triggering a 'click' after + // a 'keypress' will reset the keypress debounce so that a new + // set of keypresses can be recorded + self._keypressTimeout = null; - function computeStackTrace(ex, depth) { - var stack = null; - depth = depth == null ? 0 : +depth; + // It's possible this handler might trigger multiple times for the same + // event (e.g. event propagation through node ancestors). Ignore if we've + // already captured the event. + if (self._lastCapturedEvent === evt) return; - try { - stack = computeStackTraceFromStackProp(ex); + self._lastCapturedEvent = evt; - if (stack) { - return stack; - } - } catch (e) { - if (TraceKit.debug) { - throw e; + // try/catch both: + // - accessing evt.target (see getsentry/raven-js#838, #768) + // - `htmlTreeAsString` because it's complex, and just accessing the DOM incorrectly + // can throw an exception in some circumstances. + var target; + try { + target = htmlTreeAsString(evt.target); + } catch (e) { + target = ''; } - } - try { - stack = computeStackTraceByWalkingCallerChain(ex, depth + 1); + self.captureBreadcrumb({ + category: 'ui.' + evtName, // e.g. ui.click, ui.input + message: target + }); + }; + }, - if (stack) { - return stack; - } - } catch (e) { - if (TraceKit.debug) { - throw e; + /** + * Wraps addEventListener to capture keypress UI events + * @returns {Function} + * @private + */ + _keypressEventHandler: function() { + var self = this, + debounceDuration = 1000; // milliseconds + + // TODO: if somehow user switches keypress target before + // debounce timeout is triggered, we will only capture + // a single breadcrumb from the FIRST target (acceptable?) + return function(evt) { + var target; + try { + target = evt.target; + } catch (e) { + // just accessing event properties can throw an exception in some rare circumstances + // see: https://github.com/getsentry/raven-js/issues/838 + return; } - } + var tagName = target && target.tagName; - return { - name: ex.name, - message: ex.message, - url: getLocationHref() - }; - } + // only consider keypress events on actual input elements + // this will disregard keypresses targeting body (e.g. tabbing + // through elements, hotkeys, etc) + if ( + !tagName || + (tagName !== 'INPUT' && tagName !== 'TEXTAREA' && !target.isContentEditable) + ) + return; - computeStackTrace.augmentStackTraceWithInitialElement = augmentStackTraceWithInitialElement; - computeStackTrace.computeStackTraceFromStackProp = computeStackTraceFromStackProp; - return computeStackTrace; -}(); + // record first keypress in a series, but ignore subsequent + // keypresses until debounce clears + var timeout = self._keypressTimeout; + if (!timeout) { + self._breadcrumbEventHandler('input')(evt); + } + clearTimeout(timeout); + self._keypressTimeout = setTimeout(function() { + self._keypressTimeout = null; + }, debounceDuration); + }; + }, -var tracekit = TraceKit; + /** + * Captures a breadcrumb of type "navigation", normalizing input URLs + * @param to the originating URL + * @param from the target URL + * @private + */ + _captureUrlChange: function(from, to) { + var parsedLoc = parseUrl(this._location.href); + var parsedTo = parseUrl(to); + var parsedFrom = parseUrl(from); -var stringify_1 = createCommonjsModule(function (module, exports) { - /* - json-stringify-safe - Like JSON.stringify, but doesn't throw on circular references. - - Originally forked from https://github.com/isaacs/json-stringify-safe - version 5.0.1 on 3/8/2017 and modified to handle Errors serialization - and IE8 compatibility. Tests for this are in test/vendor. - - ISC license: https://github.com/isaacs/json-stringify-safe/blob/master/LICENSE - */ - exports = module.exports = stringify; - exports.getSerialize = serializer; - - function indexOf(haystack, needle) { - for (var i = 0; i < haystack.length; ++i) { - if (haystack[i] === needle) return i; - } - - return -1; - } + // because onpopstate only tells you the "new" (to) value of location.href, and + // not the previous (from) value, we need to track the value of the current URL + // state ourselves + this._lastHref = to; - function stringify(obj, replacer, spaces, cycleReplacer) { - return JSON.stringify(obj, serializer(replacer, cycleReplacer), spaces); - } // https://github.com/ftlabs/js-abbreviate/blob/fa709e5f139e7770a71827b1893f22418097fbda/index.js#L95-L106 + // Use only the path component of the URL if the URL matches the current + // document (almost all the time when using pushState) + if (parsedLoc.protocol === parsedTo.protocol && parsedLoc.host === parsedTo.host) + to = parsedTo.relative; + if (parsedLoc.protocol === parsedFrom.protocol && parsedLoc.host === parsedFrom.host) + from = parsedFrom.relative; + this.captureBreadcrumb({ + category: 'navigation', + data: { + to: to, + from: from + } + }); + }, - function stringifyError(value) { - var err = { - // These properties are implemented as magical getters and don't show up in for in - stack: value.stack, - message: value.message, - name: value.name + _patchFunctionToString: function() { + var self = this; + self._originalFunctionToString = Function.prototype.toString; + // eslint-disable-next-line no-extend-native + Function.prototype.toString = function() { + if (typeof this === 'function' && this.__raven__) { + return self._originalFunctionToString.apply(this.__orig__, arguments); + } + return self._originalFunctionToString.apply(this, arguments); }; + }, - for (var i in value) { - if (Object.prototype.hasOwnProperty.call(value, i)) { - err[i] = value[i]; - } + _unpatchFunctionToString: function() { + if (this._originalFunctionToString) { + // eslint-disable-next-line no-extend-native + Function.prototype.toString = this._originalFunctionToString; } + }, - return err; - } + /** + * Wrap timer functions and event targets to catch errors and provide + * better metadata. + */ + _instrumentTryCatch: function() { + var self = this; - function serializer(replacer, cycleReplacer) { - var stack = []; - var keys = []; + var wrappedBuiltIns = self._wrappedBuiltIns; - if (cycleReplacer == null) { - cycleReplacer = function cycleReplacer(key, value) { - if (stack[0] === value) { - return '[Circular ~]'; + function wrapTimeFn(orig) { + return function(fn, t) { + // preserve arity + // Make a copy of the arguments to prevent deoptimization + // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments + var args = new Array(arguments.length); + for (var i = 0; i < args.length; ++i) { + args[i] = arguments[i]; + } + var originalCallback = args[0]; + if (isFunction(originalCallback)) { + args[0] = self.wrap(originalCallback); } - return '[Circular ~.' + keys.slice(0, indexOf(stack, value)).join('.') + ']'; + // IE < 9 doesn't support .call/.apply on setInterval/setTimeout, but it + // also supports only two arguments and doesn't care what this is, so we + // can just call the original function directly. + if (orig.apply) { + return orig.apply(this, args); + } else { + return orig(args[0], args[1]); + } }; } - return function (key, value) { - if (stack.length > 0) { - var thisPos = indexOf(stack, this); - ~thisPos ? stack.splice(thisPos + 1) : stack.push(this); - ~thisPos ? keys.splice(thisPos, Infinity, key) : keys.push(key); - - if (~indexOf(stack, value)) { - value = cycleReplacer.call(this, key, value); - } - } else { - stack.push(value); - } + var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; - return replacer == null ? value instanceof Error ? stringifyError(value) : value : replacer.call(this, key, value); - }; - } -}); -var stringify_2 = stringify_1.getSerialize; + function wrapEventTarget(global) { + var proto = _window[global] && _window[global].prototype; + if (proto && proto.hasOwnProperty && proto.hasOwnProperty('addEventListener')) { + fill( + proto, + 'addEventListener', + function(orig) { + return function(evtName, fn, capture, secure) { + // preserve arity + try { + if (fn && fn.handleEvent) { + fn.handleEvent = self.wrap(fn.handleEvent); + } + } catch (err) { + // can sometimes get 'Permission denied to access property "handle Event' + } -function RavenConfigError(message) { - this.name = 'RavenConfigError'; - this.message = message; -} + // More breadcrumb DOM capture ... done here and not in `_instrumentBreadcrumbs` + // so that we don't have more than one wrapper function + var before, clickHandler, keypressHandler; + + if ( + autoBreadcrumbs && + autoBreadcrumbs.dom && + (global === 'EventTarget' || global === 'Node') + ) { + // NOTE: generating multiple handlers per addEventListener invocation, should + // revisit and verify we can just use one (almost certainly) + clickHandler = self._breadcrumbEventHandler('click'); + keypressHandler = self._keypressEventHandler(); + before = function(evt) { + // need to intercept every DOM event in `before` argument, in case that + // same wrapped method is re-used for different events (e.g. mousemove THEN click) + // see #724 + if (!evt) return; + + var eventType; + try { + eventType = evt.type; + } catch (e) { + // just accessing event properties can throw an exception in some rare circumstances + // see: https://github.com/getsentry/raven-js/issues/838 + return; + } + if (eventType === 'click') return clickHandler(evt); + else if (eventType === 'keypress') return keypressHandler(evt); + }; + } + return orig.call( + this, + evtName, + self.wrap(fn, undefined, before), + capture, + secure + ); + }; + }, + wrappedBuiltIns + ); + fill( + proto, + 'removeEventListener', + function(orig) { + return function(evt, fn, capture, secure) { + try { + fn = fn && (fn.__raven_wrapper__ ? fn.__raven_wrapper__ : fn); + } catch (e) { + // ignore, accessing __raven_wrapper__ will throw in some Selenium environments + } + return orig.call(this, evt, fn, capture, secure); + }; + }, + wrappedBuiltIns + ); + } + } -RavenConfigError.prototype = new Error(); -RavenConfigError.prototype.constructor = RavenConfigError; -var configError = RavenConfigError; + fill(_window, 'setTimeout', wrapTimeFn, wrappedBuiltIns); + fill(_window, 'setInterval', wrapTimeFn, wrappedBuiltIns); + if (_window.requestAnimationFrame) { + fill( + _window, + 'requestAnimationFrame', + function(orig) { + return function(cb) { + return orig(self.wrap(cb)); + }; + }, + wrappedBuiltIns + ); + } -var wrapMethod = function wrapMethod(console, level, callback) { - var originalConsoleLevel = console[level]; - var originalConsole = console; + // event targets borrowed from bugsnag-js: + // https://github.com/bugsnag/bugsnag-js/blob/master/src/bugsnag.js#L666 + var eventTargets = [ + 'EventTarget', + 'Window', + 'Node', + 'ApplicationCache', + 'AudioTrackList', + 'ChannelMergerNode', + 'CryptoOperation', + 'EventSource', + 'FileReader', + 'HTMLUnknownElement', + 'IDBDatabase', + 'IDBRequest', + 'IDBTransaction', + 'KeyOperation', + 'MediaController', + 'MessagePort', + 'ModalWindow', + 'Notification', + 'SVGElementInstance', + 'Screen', + 'TextTrack', + 'TextTrackCue', + 'TextTrackList', + 'WebSocket', + 'WebSocketWorker', + 'Worker', + 'XMLHttpRequest', + 'XMLHttpRequestEventTarget', + 'XMLHttpRequestUpload' + ]; + for (var i = 0; i < eventTargets.length; i++) { + wrapEventTarget(eventTargets[i]); + } + }, - if (!(level in console)) { - return; - } + /** + * Instrument browser built-ins w/ breadcrumb capturing + * - XMLHttpRequests + * - DOM interactions (click/typing) + * - window.location changes + * - console + * + * Can be disabled or individually configured via the `autoBreadcrumbs` config option + */ + _instrumentBreadcrumbs: function() { + var self = this; + var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; - var sentryLevel = level === 'warn' ? 'warning' : level; + var wrappedBuiltIns = self._wrappedBuiltIns; - console[level] = function () { - var args = [].slice.call(arguments); - var msg = utils.safeJoin(args, ' '); - var data = { - level: sentryLevel, - logger: 'console', - extra: { - arguments: args + function wrapProp(prop, xhr) { + if (prop in xhr && isFunction(xhr[prop])) { + fill(xhr, prop, function(orig) { + return self.wrap(orig); + }); // intentionally don't track filled methods on XHR instances } - }; - - if (level === 'assert') { - if (args[0] === false) { - // Default browsers message - msg = 'Assertion failed: ' + (utils.safeJoin(args.slice(1), ' ') || 'console.assert'); - data.extra.arguments = args.slice(1); - callback && callback(msg, data); - } - } else { - callback && callback(msg, data); - } // this fails for some browsers. :( + } + if (autoBreadcrumbs.xhr && 'XMLHttpRequest' in _window) { + var xhrproto = _window.XMLHttpRequest && _window.XMLHttpRequest.prototype; + fill( + xhrproto, + 'open', + function(origOpen) { + return function(method, url) { + // preserve arity - if (originalConsoleLevel) { - // IE9 doesn't allow calling apply on console functions directly - // See: https://stackoverflow.com/questions/5472938/does-ie9-support-console-log-and-is-it-a-real-function#answer-5473193 - Function.prototype.apply.call(originalConsoleLevel, originalConsole, args); - } - }; -}; + // if Sentry key appears in URL, don't capture + if (isString(url) && url.indexOf(self._globalKey) === -1) { + this.__raven_xhr = { + method: method, + url: url, + status_code: null + }; + } -var console$1 = { - wrapMethod: wrapMethod -}; + return origOpen.apply(this, arguments); + }; + }, + wrappedBuiltIns + ); + + fill( + xhrproto, + 'send', + function(origSend) { + return function() { + // preserve arity + var xhr = this; -/*global XDomainRequest:false */ + function onreadystatechangeHandler() { + if (xhr.__raven_xhr && xhr.readyState === 4) { + try { + // touching statusCode in some platforms throws + // an exception + xhr.__raven_xhr.status_code = xhr.status; + } catch (e) { + /* do nothing */ + } -var isError = utils.isError; -var isObject = utils.isObject; -var isErrorEvent = utils.isErrorEvent; -var isUndefined = utils.isUndefined; -var isFunction = utils.isFunction; -var isString = utils.isString; -var isArray = utils.isArray; -var isEmptyObject = utils.isEmptyObject; -var each = utils.each; -var objectMerge = utils.objectMerge; -var truncate = utils.truncate; -var objectFrozen = utils.objectFrozen; -var hasKey = utils.hasKey; -var joinRegExp = utils.joinRegExp; -var urlencode = utils.urlencode; -var uuid4 = utils.uuid4; -var htmlTreeAsString = utils.htmlTreeAsString; -var isSameException = utils.isSameException; -var isSameStacktrace = utils.isSameStacktrace; -var parseUrl = utils.parseUrl; -var fill = utils.fill; -var supportsFetch = utils.supportsFetch; -var wrapConsoleMethod = console$1.wrapMethod; -var dsnKeys = 'source protocol user pass host port path'.split(' '); -var dsnPattern = /^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/; + self.captureBreadcrumb({ + type: 'http', + category: 'xhr', + data: xhr.__raven_xhr + }); + } + } -function now() { - return +new Date(); -} // This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) + var props = ['onload', 'onerror', 'onprogress']; + for (var j = 0; j < props.length; j++) { + wrapProp(props[j], xhr); + } + if ('onreadystatechange' in xhr && isFunction(xhr.onreadystatechange)) { + fill( + xhr, + 'onreadystatechange', + function(orig) { + return self.wrap(orig, undefined, onreadystatechangeHandler); + } /* intentionally don't track this instrumentation */ + ); + } else { + // if onreadystatechange wasn't actually set by the page on this xhr, we + // are free to set our own and capture the breadcrumb + xhr.onreadystatechange = onreadystatechangeHandler; + } -var _window$1 = typeof window !== 'undefined' ? window : typeof commonjsGlobal !== 'undefined' ? commonjsGlobal : typeof self !== 'undefined' ? self : {}; + return origSend.apply(this, arguments); + }; + }, + wrappedBuiltIns + ); + } -var _document = _window$1.document; -var _navigator = _window$1.navigator; + if (autoBreadcrumbs.xhr && supportsFetch()) { + fill( + _window, + 'fetch', + function(origFetch) { + return function() { + // preserve arity + // Make a copy of the arguments to prevent deoptimization + // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments + var args = new Array(arguments.length); + for (var i = 0; i < args.length; ++i) { + args[i] = arguments[i]; + } -function keepOriginalCallback(original, callback) { - return isFunction(callback) ? function (data) { - return callback(data, original); - } : callback; -} // First, check for JSON support -// If there is no JSON, we no-op the core features of Raven -// since JSON is required to encode the payload + var fetchInput = args[0]; + var method = 'GET'; + var url; + if (typeof fetchInput === 'string') { + url = fetchInput; + } else if ('Request' in _window && fetchInput instanceof _window.Request) { + url = fetchInput.url; + if (fetchInput.method) { + method = fetchInput.method; + } + } else { + url = '' + fetchInput; + } -function Raven$1() { - this._hasJSON = !!(_typeof(JSON) === 'object' && JSON.stringify); // Raven can run in contexts where there's no document (react-native) + // if Sentry key appears in URL, don't capture, as it's our own request + if (url.indexOf(self._globalKey) !== -1) { + return origFetch.apply(this, args); + } - this._hasDocument = !isUndefined(_document); - this._hasNavigator = !isUndefined(_navigator); - this._lastCapturedException = null; - this._lastData = null; - this._lastEventId = null; - this._globalServer = null; - this._globalKey = null; - this._globalProject = null; - this._globalContext = {}; - this._globalOptions = { - // SENTRY_RELEASE can be injected by https://github.com/getsentry/sentry-webpack-plugin - release: _window$1.SENTRY_RELEASE && _window$1.SENTRY_RELEASE.id, - logger: 'javascript', - ignoreErrors: [], - ignoreUrls: [], - whitelistUrls: [], - includePaths: [], - headers: null, - collectWindowErrors: true, - maxMessageLength: 0, - // By default, truncates URL values to 250 chars - maxUrlLength: 250, - stackTraceLimit: 50, - autoBreadcrumbs: true, - instrument: true, - sampleRate: 1 - }; - this._fetchDefaults = { - method: 'POST', - keepalive: true, - referrerPolicy: 'origin' - }; - this._ignoreOnError = 0; - this._isRavenInstalled = false; - this._originalErrorStackTraceLimit = Error.stackTraceLimit; // capture references to window.console *and* all its methods first - // before the console plugin has a chance to monkey patch + if (args[1] && args[1].method) { + method = args[1].method; + } - this._originalConsole = _window$1.console || {}; - this._originalConsoleMethods = {}; - this._plugins = []; - this._startTime = now(); - this._wrappedBuiltIns = []; - this._breadcrumbs = []; - this._lastCapturedEvent = null; - this._keypressTimeout; - this._location = _window$1.location; - this._lastHref = this._location && this._location.href; + var fetchData = { + method: method, + url: url, + status_code: null + }; - this._resetBackoff(); // eslint-disable-next-line guard-for-in + return origFetch + .apply(this, args) + .then(function(response) { + fetchData.status_code = response.status; + + self.captureBreadcrumb({ + type: 'http', + category: 'fetch', + data: fetchData + }); + + return response; + }) + ['catch'](function(err) { + // if there is an error performing the request + self.captureBreadcrumb({ + type: 'http', + category: 'fetch', + data: fetchData, + level: 'error' + }); + + throw err; + }); + }; + }, + wrappedBuiltIns + ); + } + // Capture breadcrumbs from any click that is unhandled / bubbled up all the way + // to the document. Do this before we instrument addEventListener. + if (autoBreadcrumbs.dom && this._hasDocument) { + if (_document.addEventListener) { + _document.addEventListener('click', self._breadcrumbEventHandler('click'), false); + _document.addEventListener('keypress', self._keypressEventHandler(), false); + } else if (_document.attachEvent) { + // IE8 Compatibility + _document.attachEvent('onclick', self._breadcrumbEventHandler('click')); + _document.attachEvent('onkeypress', self._keypressEventHandler()); + } + } - for (var method in this._originalConsole) { - this._originalConsoleMethods[method] = this._originalConsole[method]; - } -} -/* - * The core Raven singleton - * - * @this {Raven} - */ + // record navigation (URL) changes + // NOTE: in Chrome App environment, touching history.pushState, *even inside + // a try/catch block*, will cause Chrome to output an error to console.error + // borrowed from: https://github.com/angular/angular.js/pull/13945/files + var chrome = _window.chrome; + var isChromePackagedApp = chrome && chrome.app && chrome.app.runtime; + var hasPushAndReplaceState = + !isChromePackagedApp && + _window.history && + history.pushState && + history.replaceState; + if (autoBreadcrumbs.location && hasPushAndReplaceState) { + // TODO: remove onpopstate handler on uninstall() + var oldOnPopState = _window.onpopstate; + _window.onpopstate = function() { + var currentHref = self._location.href; + self._captureUrlChange(self._lastHref, currentHref); + if (oldOnPopState) { + return oldOnPopState.apply(this, arguments); + } + }; -Raven$1.prototype = { - // Hardcode version string so that raven source can be loaded directly via - // webpack (using a build step causes webpack #1617). Grunt verifies that - // this value matches package.json during build. - // See: https://github.com/getsentry/raven-js/issues/465 - VERSION: '3.22.2', - debug: false, - TraceKit: tracekit, - // alias to TraceKit + var historyReplacementFunction = function(origHistFunction) { + // note history.pushState.length is 0; intentionally not declaring + // params to preserve 0 arity + return function(/* state, title, url */) { + var url = arguments.length > 2 ? arguments[2] : undefined; - /* - * Configure Raven with a DSN and extra options - * - * @param {string} dsn The public Sentry DSN - * @param {object} options Set of global options [optional] - * @return {Raven} - */ - config: function config(dsn, options) { - var self = this; + // url argument is optional + if (url) { + // coerce to string (this is what pushState does) + self._captureUrlChange(self._lastHref, url + ''); + } - if (self._globalServer) { - this._logDebug('error', 'Error: Raven has already been configured'); + return origHistFunction.apply(this, arguments); + }; + }; - return self; + fill(history, 'pushState', historyReplacementFunction, wrappedBuiltIns); + fill(history, 'replaceState', historyReplacementFunction, wrappedBuiltIns); } - if (!dsn) return self; - var globalOptions = self._globalOptions; // merge in options + if (autoBreadcrumbs.console && 'console' in _window && console.log) { + // console + var consoleMethodCallback = function(msg, data) { + self.captureBreadcrumb({ + message: msg, + level: data.level, + category: 'console' + }); + }; - if (options) { - each(options, function (key, value) { - // tags and extra are special and need to be put into context - if (key === 'tags' || key === 'extra' || key === 'user') { - self._globalContext[key] = value; - } else { - globalOptions[key] = value; - } + each(['debug', 'info', 'warn', 'error', 'log'], function(_, level) { + wrapConsoleMethod(console, level, consoleMethodCallback); }); } + }, - self.setDSN(dsn); // "Script error." is hard coded into browsers for errors that it can't read. - // this is the result of a script being pulled in from an external domain and CORS. - - globalOptions.ignoreErrors.push(/^Script error\.?$/); - globalOptions.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/); // join regexp rules into one big rule - - globalOptions.ignoreErrors = joinRegExp(globalOptions.ignoreErrors); - globalOptions.ignoreUrls = globalOptions.ignoreUrls.length ? joinRegExp(globalOptions.ignoreUrls) : false; - globalOptions.whitelistUrls = globalOptions.whitelistUrls.length ? joinRegExp(globalOptions.whitelistUrls) : false; - globalOptions.includePaths = joinRegExp(globalOptions.includePaths); - globalOptions.maxBreadcrumbs = Math.max(0, Math.min(globalOptions.maxBreadcrumbs || 100, 100)); // default and hard limit is 100 + _restoreBuiltIns: function() { + // restore any wrapped builtins + var builtin; + while (this._wrappedBuiltIns.length) { + builtin = this._wrappedBuiltIns.shift(); - var autoBreadcrumbDefaults = { - xhr: true, - console: true, - dom: true, - location: true, - sentry: true - }; - var autoBreadcrumbs = globalOptions.autoBreadcrumbs; + var obj = builtin[0], + name = builtin[1], + orig = builtin[2]; - if ({}.toString.call(autoBreadcrumbs) === '[object Object]') { - autoBreadcrumbs = objectMerge(autoBreadcrumbDefaults, autoBreadcrumbs); - } else if (autoBreadcrumbs !== false) { - autoBreadcrumbs = autoBreadcrumbDefaults; + obj[name] = orig; } + }, - globalOptions.autoBreadcrumbs = autoBreadcrumbs; - var instrumentDefaults = { - tryCatch: true - }; - var instrument = globalOptions.instrument; - - if ({}.toString.call(instrument) === '[object Object]') { - instrument = objectMerge(instrumentDefaults, instrument); - } else if (instrument !== false) { - instrument = instrumentDefaults; + _restoreConsole: function() { + // eslint-disable-next-line guard-for-in + for (var method in this._originalConsoleMethods) { + this._originalConsole[method] = this._originalConsoleMethods[method]; } - - globalOptions.instrument = instrument; - tracekit.collectWindowErrors = !!globalOptions.collectWindowErrors; // return for chaining - - return self; }, - /* - * Installs a global window.onerror error handler - * to capture and report uncaught exceptions. - * At this point, install() is required to be called due - * to the way TraceKit is set up. - * - * @return {Raven} - */ - install: function install() { + _drainPlugins: function() { var self = this; - if (self.isSetup() && !self._isRavenInstalled) { - tracekit.report.subscribe(function () { - self._handleOnErrorStackInfo.apply(self, arguments); - }); + // FIX ME TODO + each(this._plugins, function(_, plugin) { + var installer = plugin[0]; + var args = plugin[1]; + installer.apply(self, [self].concat(args)); + }); + }, - self._patchFunctionToString(); + _parseDSN: function(str) { + var m = dsnPattern.exec(str), + dsn = {}, + i = 7; - if (self._globalOptions.instrument && self._globalOptions.instrument.tryCatch) { - self._instrumentTryCatch(); - } + try { + while (i--) dsn[dsnKeys[i]] = m[i] || ''; + } catch (e) { + throw new RavenConfigError('Invalid DSN: ' + str); + } - if (self._globalOptions.autoBreadcrumbs) self._instrumentBreadcrumbs(); // Install all of the plugins + if (dsn.pass && !this._globalOptions.allowSecretKey) { + throw new RavenConfigError( + 'Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key' + ); + } - self._drainPlugins(); - - self._isRavenInstalled = true; - } - - Error.stackTraceLimit = self._globalOptions.stackTraceLimit; - return this; + return dsn; }, - /* - * Set the DSN (can be called multiple time unlike config) - * - * @param {string} dsn The public Sentry DSN - */ - setDSN: function setDSN(dsn) { - var self = this, - uri = self._parseDSN(dsn), - lastSlash = uri.path.lastIndexOf('/'), - path = uri.path.substr(1, lastSlash); - - self._dsn = dsn; - self._globalKey = uri.user; - self._globalSecret = uri.pass && uri.pass.substr(1); - self._globalProject = uri.path.substr(lastSlash + 1); - self._globalServer = self._getGlobalServer(uri); - self._globalEndpoint = self._globalServer + '/' + path + 'api/' + self._globalProject + '/store/'; // Reset backoff state since we may be pointing at a - // new project/server + _getGlobalServer: function(uri) { + // assemble the endpoint from the uri pieces + var globalServer = '//' + uri.host + (uri.port ? ':' + uri.port : ''); - this._resetBackoff(); + if (uri.protocol) { + globalServer = uri.protocol + ':' + globalServer; + } + return globalServer; }, - /* - * Wrap code within a context so Raven can capture errors - * reliably across domains that is executed immediately. - * - * @param {object} options A specific set of options for this context [optional] - * @param {function} func The callback to be immediately executed within the context - * @param {array} args An array of arguments to be called with the callback [optional] - */ - context: function context(options, func, args) { - if (isFunction(options)) { - args = func || []; - func = options; - options = undefined; + _handleOnErrorStackInfo: function() { + // if we are intentionally ignoring errors via onerror, bail out + if (!this._ignoreOnError) { + this._handleStackInfo.apply(this, arguments); } - - return this.wrap(options, func).apply(this, args); }, - /* - * Wrap code within a context and returns back a new function to be executed - * - * @param {object} options A specific set of options for this context [optional] - * @param {function} func The function to be wrapped in a new context - * @param {function} func A function to call before the try/catch wrapper [optional, private] - * @return {function} The newly wrapped functions with a context - */ - wrap: function wrap(options, func, _before) { - var self = this; // 1 argument has been passed, and it's not a function - // so just return it + _handleStackInfo: function(stackInfo, options) { + var frames = this._prepareFrames(stackInfo, options); - if (isUndefined(func) && !isFunction(options)) { - return options; - } // options is optional + this._triggerEvent('handle', { + stackInfo: stackInfo, + options: options + }); + this._processException( + stackInfo.name, + stackInfo.message, + stackInfo.url, + stackInfo.lineno, + frames, + options + ); + }, - if (isFunction(options)) { - func = options; - options = undefined; - } // At this point, we've passed along 2 arguments, and the second one - // is not a function either, so we'll just return the second argument. + _prepareFrames: function(stackInfo, options) { + var self = this; + var frames = []; + if (stackInfo.stack && stackInfo.stack.length) { + each(stackInfo.stack, function(i, stack) { + var frame = self._normalizeFrame(stack, stackInfo.url); + if (frame) { + frames.push(frame); + } + }); + // e.g. frames captured via captureMessage throw + if (options && options.trimHeadFrames) { + for (var j = 0; j < options.trimHeadFrames && j < frames.length; j++) { + frames[j].in_app = false; + } + } + } + frames = frames.slice(0, this._globalOptions.stackTraceLimit); + return frames; + }, - if (!isFunction(func)) { - return func; - } // We don't wanna wrap it twice! + _normalizeFrame: function(frame, stackInfoUrl) { + // normalize the frames data + var normalized = { + filename: frame.url, + lineno: frame.line, + colno: frame.column, + function: frame.func || '?' + }; + // Case when we don't have any information about the error + // E.g. throwing a string or raw object, instead of an `Error` in Firefox + // Generating synthetic error doesn't add any value here + // + // We should probably somehow let a user know that they should fix their code + if (!frame.url) { + normalized.filename = stackInfoUrl; // fallback to whole stacks url from onerror handler + } - try { - if (func.__raven__) { - return func; - } // If this has already been wrapped in the past, return that + normalized.in_app = !// determine if an exception came from outside of our app + // first we check the global includePaths list. + ( + (!!this._globalOptions.includePaths.test && + !this._globalOptions.includePaths.test(normalized.filename)) || + // Now we check for fun, if the function name is Raven or TraceKit + /(Raven|TraceKit)\./.test(normalized['function']) || + // finally, we do a last ditch effort and check for raven.min.js + /raven\.(min\.)?js$/.test(normalized.filename) + ); + return normalized; + }, - if (func.__raven_wrapper__) { - return func.__raven_wrapper__; - } - } catch (e) { - // Just accessing custom props in some Selenium environments - // can cause a "Permission denied" exception (see raven-js#495). - // Bail on wrapping and return the function as-is (defers to window.onerror). - return func; + _processException: function(type, message, fileurl, lineno, frames, options) { + var prefixedMessage = (type ? type + ': ' : '') + (message || ''); + if ( + !!this._globalOptions.ignoreErrors.test && + (this._globalOptions.ignoreErrors.test(message) || + this._globalOptions.ignoreErrors.test(prefixedMessage)) + ) { + return; } - function wrapped() { - var args = [], - i = arguments.length, - deep = !options || options && options.deep !== false; + var stacktrace; - if (_before && isFunction(_before)) { - _before.apply(this, arguments); - } // Recursively wrap all of a function's arguments that are - // functions themselves. + if (frames && frames.length) { + fileurl = frames[0].filename || fileurl; + // Sentry expects frames oldest to newest + // and JS sends them as newest to oldest + frames.reverse(); + stacktrace = {frames: frames}; + } else if (fileurl) { + stacktrace = { + frames: [ + { + filename: fileurl, + lineno: lineno, + in_app: true + } + ] + }; + } + if ( + !!this._globalOptions.ignoreUrls.test && + this._globalOptions.ignoreUrls.test(fileurl) + ) { + return; + } - while (i--) { - args[i] = deep ? self.wrap(options, arguments[i]) : arguments[i]; - } + if ( + !!this._globalOptions.whitelistUrls.test && + !this._globalOptions.whitelistUrls.test(fileurl) + ) { + return; + } - try { - // Attempt to invoke user-land function - // NOTE: If you are a Sentry user, and you are seeing this stack frame, it - // means Raven caught an error invoking your application code. This is - // expected behavior and NOT indicative of a bug with Raven.js. - return func.apply(this, args); - } catch (e) { - self._ignoreNextOnError(); + var data = objectMerge( + { + // sentry.interfaces.Exception + exception: { + values: [ + { + type: type, + value: message, + stacktrace: stacktrace + } + ] + }, + culprit: fileurl + }, + options + ); - self.captureException(e, options); - throw e; - } - } // copy over properties of the old function + // Fire away! + this._send(data); + }, + _trimPacket: function(data) { + // For now, we only want to truncate the two different messages + // but this could/should be expanded to just trim everything + var max = this._globalOptions.maxMessageLength; + if (data.message) { + data.message = truncate(data.message, max); + } + if (data.exception) { + var exception = data.exception.values[0]; + exception.value = truncate(exception.value, max); + } - for (var property in func) { - if (hasKey(func, property)) { - wrapped[property] = func[property]; + var request = data.request; + if (request) { + if (request.url) { + request.url = truncate(request.url, this._globalOptions.maxUrlLength); + } + if (request.Referer) { + request.Referer = truncate(request.Referer, this._globalOptions.maxUrlLength); } } - wrapped.prototype = func.prototype; - func.__raven_wrapper__ = wrapped; // Signal that this function has been wrapped/filled already - // for both debugging and to prevent it to being wrapped/filled twice + if (data.breadcrumbs && data.breadcrumbs.values) + this._trimBreadcrumbs(data.breadcrumbs); - wrapped.__raven__ = true; - wrapped.__orig__ = func; - return wrapped; + return data; }, - /* - * Uninstalls the global error handler. - * - * @return {Raven} - */ - uninstall: function uninstall() { - tracekit.report.uninstall(); + /** + * Truncate breadcrumb values (right now just URLs) + */ + _trimBreadcrumbs: function(breadcrumbs) { + // known breadcrumb properties with urls + // TODO: also consider arbitrary prop values that start with (https?)?:// + var urlProps = ['to', 'from', 'url'], + urlProp, + crumb, + data; - this._unpatchFunctionToString(); + for (var i = 0; i < breadcrumbs.values.length; ++i) { + crumb = breadcrumbs.values[i]; + if ( + !crumb.hasOwnProperty('data') || + !isObject(crumb.data) || + objectFrozen(crumb.data) + ) + continue; - this._restoreBuiltIns(); + data = objectMerge({}, crumb.data); + for (var j = 0; j < urlProps.length; ++j) { + urlProp = urlProps[j]; + if (data.hasOwnProperty(urlProp) && data[urlProp]) { + data[urlProp] = truncate(data[urlProp], this._globalOptions.maxUrlLength); + } + } + breadcrumbs.values[i].data = data; + } + }, - this._restoreConsole(); + _getHttpData: function() { + if (!this._hasNavigator && !this._hasDocument) return; + var httpData = {}; - Error.stackTraceLimit = this._originalErrorStackTraceLimit; - this._isRavenInstalled = false; - return this; - }, + if (this._hasNavigator && _navigator.userAgent) { + httpData.headers = { + 'User-Agent': navigator.userAgent + }; + } - /* - * Manually capture an exception and send it over to Sentry - * - * @param {error} ex An exception to be logged - * @param {object} options A specific set of options for this error [optional] - * @return {Raven} - */ - captureException: function captureException(ex, options) { - options = objectMerge({ - trimHeadFrames: 0 - }, options ? options : {}); // Cases for sending ex as a message, rather than an exception + // Check in `window` instead of `document`, as we may be in ServiceWorker environment + if (_window.location && _window.location.href) { + httpData.url = _window.location.href; + } - var isNotError = !isError(ex); - var isNotErrorEvent = !isErrorEvent(ex); - var isErrorEventWithoutError = isErrorEvent(ex) && !ex.error; + if (this._hasDocument && _document.referrer) { + if (!httpData.headers) httpData.headers = {}; + httpData.headers.Referer = _document.referrer; + } - if (isNotError && isNotErrorEvent || isErrorEventWithoutError) { - return this.captureMessage(ex, objectMerge(options, { - stacktrace: true, - // if we fall back to captureMessage, default to attempting a new trace - trimHeadFrames: options.trimHeadFrames + 1 - })); - } // Get actual Error from ErrorEvent + return httpData; + }, + _resetBackoff: function() { + this._backoffDuration = 0; + this._backoffStart = null; + }, - if (isErrorEvent(ex)) ex = ex.error; // Store the raw exception object for potential debugging and introspection + _shouldBackoff: function() { + return this._backoffDuration && now() - this._backoffStart < this._backoffDuration; + }, - this._lastCapturedException = ex; // TraceKit.report will re-raise any exception passed to it, - // which means you have to wrap it in try/catch. Instead, we - // can wrap it here and only re-raise if TraceKit.report - // raises an exception different from the one we asked to - // report on. + /** + * Returns true if the in-process data payload matches the signature + * of the previously-sent data + * + * NOTE: This has to be done at this level because TraceKit can generate + * data from window.onerror WITHOUT an exception object (IE8, IE9, + * other old browsers). This can take the form of an "exception" + * data object with a single frame (derived from the onerror args). + */ + _isRepeatData: function(current) { + var last = this._lastData; - try { - var stack = tracekit.computeStackTrace(ex); + if ( + !last || + current.message !== last.message || // defined for captureMessage + current.culprit !== last.culprit // defined for captureException/onerror + ) + return false; - this._handleStackInfo(stack, options); - } catch (ex1) { - if (ex !== ex1) { - throw ex1; - } + // Stacktrace interface (i.e. from captureMessage) + if (current.stacktrace || last.stacktrace) { + return isSameStacktrace(current.stacktrace, last.stacktrace); + } else if (current.exception || last.exception) { + // Exception interface (i.e. from captureException/onerror) + return isSameException(current.exception, last.exception); } - return this; + return true; }, - /* - * Manually send a message to Sentry - * - * @param {string} msg A plain message to be captured in Sentry - * @param {object} options A specific set of options for this message [optional] - * @return {Raven} - */ - captureMessage: function captureMessage(msg, options) { - // config() automagically converts ignoreErrors from a list to a RegExp so we need to test for an - // early call; we'll error on the side of logging anything called before configuration since it's - // probably something you should see: - if (!!this._globalOptions.ignoreErrors.test && this._globalOptions.ignoreErrors.test(msg)) { + _setBackoffState: function(request) { + // If we are already in a backoff state, don't change anything + if (this._shouldBackoff()) { return; } - options = options || {}; - var data = objectMerge({ - message: msg + '' // Make sure it's actually a string + var status = request.status; - }, options); - var ex; // Generate a "synthetic" stack trace from this point. - // NOTE: If you are a Sentry user, and you are seeing this stack frame, it is NOT indicative - // of a bug with Raven.js. Sentry generates synthetic traces either by configuration, - // or if it catches a thrown object without a "stack" property. + // 400 - project_id doesn't exist or some other fatal + // 401 - invalid/revoked dsn + // 429 - too many requests + if (!(status === 400 || status === 401 || status === 429)) return; + var retry; try { - throw new Error(msg); - } catch (ex1) { - ex = ex1; - } // null exception name so `Error` isn't prefixed to msg + // If Retry-After is not in Access-Control-Expose-Headers, most + // browsers will throw an exception trying to access it + if (supportsFetch()) { + retry = request.headers.get('Retry-After'); + } else { + retry = request.getResponseHeader('Retry-After'); + } + + // Retry-After is returned in seconds + retry = parseInt(retry, 10) * 1000; + } catch (e) { + /* eslint no-empty:0 */ + } + this._backoffDuration = retry + ? // If Sentry server returned a Retry-After value, use it + retry + : // Otherwise, double the last backoff duration (starts at 1 sec) + this._backoffDuration * 2 || 1000; - ex.name = null; - var stack = tracekit.computeStackTrace(ex); // stack[0] is `throw new Error(msg)` call itself, we are interested in the frame that was just before that, stack[1] + this._backoffStart = now(); + }, - var initialCall = isArray(stack.stack) && stack.stack[1]; - var fileurl = initialCall && initialCall.url || ''; + _send: function(data) { + var globalOptions = this._globalOptions; - if (!!this._globalOptions.ignoreUrls.test && this._globalOptions.ignoreUrls.test(fileurl)) { - return; - } + var baseData = { + project: this._globalProject, + logger: globalOptions.logger, + platform: 'javascript' + }, + httpData = this._getHttpData(); - if (!!this._globalOptions.whitelistUrls.test && !this._globalOptions.whitelistUrls.test(fileurl)) { - return; + if (httpData) { + baseData.request = httpData; } - if (this._globalOptions.stacktrace || options && options.stacktrace) { - options = objectMerge({ - // fingerprint on msg, not stack trace (legacy behavior, could be - // revisited) - fingerprint: msg, - // since we know this is a synthetic trace, the top N-most frames - // MUST be from Raven.js, so mark them as in_app later by setting - // trimHeadFrames - trimHeadFrames: (options.trimHeadFrames || 0) + 1 - }, options); + // HACK: delete `trimHeadFrames` to prevent from appearing in outbound payload + if (data.trimHeadFrames) delete data.trimHeadFrames; - var frames = this._prepareFrames(stack, options); + data = objectMerge(baseData, data); - data.stacktrace = { - // Sentry expects frames oldest to newest - frames: frames.reverse() + // Merge in the tags and extra separately since objectMerge doesn't handle a deep merge + data.tags = objectMerge(objectMerge({}, this._globalContext.tags), data.tags); + data.extra = objectMerge(objectMerge({}, this._globalContext.extra), data.extra); + + // Send along our own collected metadata with extra + data.extra['session:duration'] = now() - this._startTime; + + if (this._breadcrumbs && this._breadcrumbs.length > 0) { + // intentionally make shallow copy so that additions + // to breadcrumbs aren't accidentally sent in this request + data.breadcrumbs = { + values: [].slice.call(this._breadcrumbs, 0) }; - } // Fire away! + } + + if (this._globalContext.user) { + // sentry.interfaces.User + data.user = this._globalContext.user; + } + // Include the environment if it's defined in globalOptions + if (globalOptions.environment) data.environment = globalOptions.environment; - this._send(data); + // Include the release if it's defined in globalOptions + if (globalOptions.release) data.release = globalOptions.release; - return this; - }, - captureBreadcrumb: function captureBreadcrumb(obj) { - var crumb = objectMerge({ - timestamp: now() / 1000 - }, obj); + // Include server_name if it's defined in globalOptions + if (globalOptions.serverName) data.server_name = globalOptions.serverName; - if (isFunction(this._globalOptions.breadcrumbCallback)) { - var result = this._globalOptions.breadcrumbCallback(crumb); + data = this._sanitizeData(data); - if (isObject(result) && !isEmptyObject(result)) { - crumb = result; - } else if (result === false) { - return this; + // Cleanup empty properties before sending them to the server + Object.keys(data).forEach(function(key) { + if (data[key] == null || data[key] === '' || isEmptyObject(data[key])) { + delete data[key]; } - } - - this._breadcrumbs.push(crumb); + }); - if (this._breadcrumbs.length > this._globalOptions.maxBreadcrumbs) { - this._breadcrumbs.shift(); + if (isFunction(globalOptions.dataCallback)) { + data = globalOptions.dataCallback(data) || data; } - return this; - }, - addPlugin: function addPlugin(plugin - /*arg1, arg2, ... argN*/ - ) { - var pluginArgs = [].slice.call(arguments, 1); + // Why?????????? + if (!data || isEmptyObject(data)) { + return; + } - this._plugins.push([plugin, pluginArgs]); + // Check if the request should be filtered or not + if ( + isFunction(globalOptions.shouldSendCallback) && + !globalOptions.shouldSendCallback(data) + ) { + return; + } - if (this._isRavenInstalled) { - this._drainPlugins(); + // Backoff state: Sentry server previously responded w/ an error (e.g. 429 - too many requests), + // so drop requests until "cool-off" period has elapsed. + if (this._shouldBackoff()) { + this._logDebug('warn', 'Raven dropped error due to backoff: ', data); + return; } - return this; + if (typeof globalOptions.sampleRate === 'number') { + if (Math.random() < globalOptions.sampleRate) { + this._sendProcessedPayload(data); + } + } else { + this._sendProcessedPayload(data); + } }, - /* - * Set/clear a user to be sent along with the payload. - * - * @param {object} user An object representing user data [optional] - * @return {Raven} - */ - setUserContext: function setUserContext(user) { - // Intentionally do not merge here since that's an unexpected behavior. - this._globalContext.user = user; - return this; + _sanitizeData: function(data) { + return sanitize(data, this._globalOptions.sanitizeKeys); }, - /* - * Merge extra attributes to be sent along with the payload. - * - * @param {object} extra An object representing extra data [optional] - * @return {Raven} - */ - setExtraContext: function setExtraContext(extra) { - this._mergeContext('extra', extra); - - return this; + _getUuid: function() { + return uuid4(); }, - /* - * Merge tags to be sent along with the payload. - * - * @param {object} tags An object representing tags [optional] - * @return {Raven} - */ - setTagsContext: function setTagsContext(tags) { - this._mergeContext('tags', tags); - - return this; - }, + _sendProcessedPayload: function(data, callback) { + var self = this; + var globalOptions = this._globalOptions; - /* - * Clear all of the context. - * - * @return {Raven} - */ - clearContext: function clearContext() { - this._globalContext = {}; - return this; - }, + if (!this.isSetup()) return; - /* - * Get a copy of the current context. This cannot be mutated. - * - * @return {object} copy of context - */ - getContext: function getContext() { - // lol javascript - return JSON.parse(stringify_1(this._globalContext)); - }, + // Try and clean up the packet before sending by truncating long values + data = this._trimPacket(data); - /* - * Set environment of application - * - * @param {string} environment Typically something like 'production'. - * @return {Raven} - */ - setEnvironment: function setEnvironment(environment) { - this._globalOptions.environment = environment; - return this; - }, + // ideally duplicate error testing should occur *before* dataCallback/shouldSendCallback, + // but this would require copying an un-truncated copy of the data packet, which can be + // arbitrarily deep (extra_data) -- could be worthwhile? will revisit + if (!this._globalOptions.allowDuplicates && this._isRepeatData(data)) { + this._logDebug('warn', 'Raven dropped repeat event: ', data); + return; + } - /* - * Set release version of application - * - * @param {string} release Typically something like a git SHA to identify version - * @return {Raven} - */ - setRelease: function setRelease(release) { - this._globalOptions.release = release; - return this; - }, + // Send along an event_id if not explicitly passed. + // This event_id can be used to reference the error within Sentry itself. + // Set lastEventId after we know the error should actually be sent + this._lastEventId = data.event_id || (data.event_id = this._getUuid()); - /* - * Set the dataCallback option - * - * @param {function} callback The callback to run which allows the - * data blob to be mutated before sending - * @return {Raven} - */ - setDataCallback: function setDataCallback(callback) { - var original = this._globalOptions.dataCallback; - this._globalOptions.dataCallback = keepOriginalCallback(original, callback); - return this; - }, + // Store outbound payload after trim + this._lastData = data; - /* - * Set the breadcrumbCallback option - * - * @param {function} callback The callback to run which allows filtering - * or mutating breadcrumbs - * @return {Raven} - */ - setBreadcrumbCallback: function setBreadcrumbCallback(callback) { - var original = this._globalOptions.breadcrumbCallback; - this._globalOptions.breadcrumbCallback = keepOriginalCallback(original, callback); - return this; - }, + this._logDebug('debug', 'Raven about to send:', data); - /* - * Set the shouldSendCallback option - * - * @param {function} callback The callback to run which allows - * introspecting the blob before sending - * @return {Raven} - */ - setShouldSendCallback: function setShouldSendCallback(callback) { - var original = this._globalOptions.shouldSendCallback; - this._globalOptions.shouldSendCallback = keepOriginalCallback(original, callback); - return this; - }, + var auth = { + sentry_version: '7', + sentry_client: 'raven-js/' + this.VERSION, + sentry_key: this._globalKey + }; - /** - * Override the default HTTP transport mechanism that transmits data - * to the Sentry server. - * - * @param {function} transport Function invoked instead of the default - * `makeRequest` handler. - * - * @return {Raven} - */ - setTransport: function setTransport(transport) { - this._globalOptions.transport = transport; - return this; - }, + if (this._globalSecret) { + auth.sentry_secret = this._globalSecret; + } - /* - * Get the latest raw exception that was captured by Raven. - * - * @return {error} - */ - lastException: function lastException() { - return this._lastCapturedException; - }, + var exception = data.exception && data.exception.values[0]; - /* - * Get the last event id - * - * @return {string} - */ - lastEventId: function lastEventId() { - return this._lastEventId; - }, + // only capture 'sentry' breadcrumb is autoBreadcrumbs is truthy + if ( + this._globalOptions.autoBreadcrumbs && + this._globalOptions.autoBreadcrumbs.sentry + ) { + this.captureBreadcrumb({ + category: 'sentry', + message: exception + ? (exception.type ? exception.type + ': ' : '') + exception.value + : data.message, + event_id: data.event_id, + level: data.level || 'error' // presume error unless specified + }); + } - /* - * Determine if Raven is setup and ready to go. - * - * @return {boolean} - */ - isSetup: function isSetup() { - if (!this._hasJSON) return false; // needs JSON support + var url = this._globalEndpoint; + (globalOptions.transport || this._makeRequest).call(this, { + url: url, + auth: auth, + data: data, + options: globalOptions, + onSuccess: function success() { + self._resetBackoff(); - if (!this._globalServer) { - if (!this.ravenNotConfiguredError) { - this.ravenNotConfiguredError = true; + self._triggerEvent('success', { + data: data, + src: url + }); + callback && callback(); + }, + onError: function failure(error) { + self._logDebug('error', 'Raven transport failed to send: ', error); - this._logDebug('error', 'Error: Raven has not been configured.'); + if (error.request) { + self._setBackoffState(error.request); + } + + self._triggerEvent('failure', { + data: data, + src: url + }); + error = error || new Error('Raven send failed (no additional details provided)'); + callback && callback(error); } + }); + }, - return false; - } + _makeRequest: function(opts) { + // Auth is intentionally sent as part of query string (NOT as custom HTTP header) to avoid preflight CORS requests + var url = opts.url + '?' + urlencode(opts.auth); - return true; - }, - afterLoad: function afterLoad() { - // TODO: remove window dependence? - // Attempt to initialize Raven on load - var RavenConfig = _window$1.RavenConfig; + var evaluatedHeaders = null; + var evaluatedFetchParameters = {}; - if (RavenConfig) { - this.config(RavenConfig.dsn, RavenConfig.config).install(); + if (opts.options.headers) { + evaluatedHeaders = this._evaluateHash(opts.options.headers); } - }, - showReportDialog: function showReportDialog(options) { - if (!_document // doesn't work without a document (React native) - ) return; - options = options || {}; - var lastEventId = options.eventId || this.lastEventId(); - if (!lastEventId) { - throw new configError('Missing eventId'); + if (opts.options.fetchParameters) { + evaluatedFetchParameters = this._evaluateHash(opts.options.fetchParameters); } - var dsn = options.dsn || this._dsn; + if (supportsFetch()) { + evaluatedFetchParameters.body = stringify(opts.data); - if (!dsn) { - throw new configError('Missing DSN'); - } + var defaultFetchOptions = objectMerge({}, this._fetchDefaults); + var fetchOptions = objectMerge(defaultFetchOptions, evaluatedFetchParameters); - var encode = encodeURIComponent; - var qs = ''; - qs += '?eventId=' + encode(lastEventId); - qs += '&dsn=' + encode(dsn); - var user = options.user || this._globalContext.user; + if (evaluatedHeaders) { + fetchOptions.headers = evaluatedHeaders; + } - if (user) { - if (user.name) qs += '&name=' + encode(user.name); - if (user.email) qs += '&email=' + encode(user.email); + return _window + .fetch(url, fetchOptions) + .then(function(response) { + if (response.ok) { + opts.onSuccess && opts.onSuccess(); + } else { + var error = new Error('Sentry error code: ' + response.status); + // It's called request only to keep compatibility with XHR interface + // and not add more redundant checks in setBackoffState method + error.request = response; + opts.onError && opts.onError(error); + } + }) + ['catch'](function() { + opts.onError && + opts.onError(new Error('Sentry error code: network unavailable')); + }); } - var globalServer = this._getGlobalServer(this._parseDSN(dsn)); - - var script = _document.createElement('script'); - - script.async = true; - script.src = globalServer + '/api/embed/error-page/' + qs; + var request = _window.XMLHttpRequest && new _window.XMLHttpRequest(); + if (!request) return; - (_document.head || _document.body).appendChild(script); - }, + // if browser doesn't support CORS (e.g. IE7), we are out of luck + var hasCORS = 'withCredentials' in request || typeof XDomainRequest !== 'undefined'; - /**** Private functions ****/ - _ignoreNextOnError: function _ignoreNextOnError() { - var self = this; - this._ignoreOnError += 1; - setTimeout(function () { - // onerror should trigger before setTimeout - self._ignoreOnError -= 1; - }); - }, - _triggerEvent: function _triggerEvent(eventType, options) { - // NOTE: `event` is a native browser thing, so let's avoid conflicting wiht it - var evt, key; - if (!this._hasDocument) return; - options = options || {}; - eventType = 'raven' + eventType.substr(0, 1).toUpperCase() + eventType.substr(1); + if (!hasCORS) return; - if (_document.createEvent) { - evt = _document.createEvent('HTMLEvents'); - evt.initEvent(eventType, true, true); + if ('withCredentials' in request) { + request.onreadystatechange = function() { + if (request.readyState !== 4) { + return; + } else if (request.status === 200) { + opts.onSuccess && opts.onSuccess(); + } else if (opts.onError) { + var err = new Error('Sentry error code: ' + request.status); + err.request = request; + opts.onError(err); + } + }; } else { - evt = _document.createEventObject(); - evt.eventType = eventType; - } + request = new XDomainRequest(); + // xdomainrequest cannot go http -> https (or vice versa), + // so always use protocol relative + url = url.replace(/^https?:/, ''); - for (key in options) { - if (hasKey(options, key)) { - evt[key] = options[key]; + // onreadystatechange not supported by XDomainRequest + if (opts.onSuccess) { + request.onload = opts.onSuccess; } - } - - if (_document.createEvent) { - // IE9 if standards - _document.dispatchEvent(evt); - } else { - // IE8 regardless of Quirks or Standards - // IE9 if quirks - try { - _document.fireEvent('on' + evt.eventType.toLowerCase(), evt); - } catch (e) {// Do nothing + if (opts.onError) { + request.onerror = function() { + var err = new Error('Sentry error code: XDomainRequest'); + err.request = request; + opts.onError(err); + }; } } - }, - /** - * Wraps addEventListener to capture UI breadcrumbs - * @param evtName the event name (e.g. "click") - * @returns {Function} - * @private - */ - _breadcrumbEventHandler: function _breadcrumbEventHandler(evtName) { - var self = this; - return function (evt) { - // reset keypress timeout; e.g. triggering a 'click' after - // a 'keypress' will reset the keypress debounce so that a new - // set of keypresses can be recorded - self._keypressTimeout = null; // It's possible this handler might trigger multiple times for the same - // event (e.g. event propagation through node ancestors). Ignore if we've - // already captured the event. + request.open('POST', url); - if (self._lastCapturedEvent === evt) return; - self._lastCapturedEvent = evt; // try/catch both: - // - accessing evt.target (see getsentry/raven-js#838, #768) - // - `htmlTreeAsString` because it's complex, and just accessing the DOM incorrectly - // can throw an exception in some circumstances. + if (evaluatedHeaders) { + each(evaluatedHeaders, function(key, value) { + request.setRequestHeader(key, value); + }); + } - var target; + request.send(stringify(opts.data)); + }, - try { - target = htmlTreeAsString(evt.target); - } catch (e) { - target = ''; + _evaluateHash: function(hash) { + var evaluated = {}; + + for (var key in hash) { + if (hash.hasOwnProperty(key)) { + var value = hash[key]; + evaluated[key] = typeof value === 'function' ? value() : value; } + } - self.captureBreadcrumb({ - category: 'ui.' + evtName, - // e.g. ui.click, ui.input - message: target - }); - }; + return evaluated; }, - /** - * Wraps addEventListener to capture keypress UI events - * @returns {Function} - * @private - */ - _keypressEventHandler: function _keypressEventHandler() { - var self = this, - debounceDuration = 1000; // milliseconds - // TODO: if somehow user switches keypress target before - // debounce timeout is triggered, we will only capture - // a single breadcrumb from the FIRST target (acceptable?) + _logDebug: function(level) { + // We allow `Raven.debug` and `Raven.config(DSN, { debug: true })` to not make backward incompatible API change + if ( + this._originalConsoleMethods[level] && + (this.debug || this._globalOptions.debug) + ) { + // In IE<10 console methods do not have their own 'apply' method + Function.prototype.apply.call( + this._originalConsoleMethods[level], + this._originalConsole, + [].slice.call(arguments, 1) + ); + } + }, - return function (evt) { - var target; + _mergeContext: function(key, context) { + if (isUndefined(context)) { + delete this._globalContext[key]; + } else { + this._globalContext[key] = objectMerge(this._globalContext[key] || {}, context); + } + } +}; - try { - target = evt.target; - } catch (e) { - // just accessing event properties can throw an exception in some rare circumstances - // see: https://github.com/getsentry/raven-js/issues/838 - return; - } +// Deprecations +Raven.prototype.setUser = Raven.prototype.setUserContext; +Raven.prototype.setReleaseContext = Raven.prototype.setRelease; - var tagName = target && target.tagName; // only consider keypress events on actual input elements - // this will disregard keypresses targeting body (e.g. tabbing - // through elements, hotkeys, etc) +module.exports = Raven; - if (!tagName || tagName !== 'INPUT' && tagName !== 'TEXTAREA' && !target.isContentEditable) return; // record first keypress in a series, but ignore subsequent - // keypresses until debounce clears +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"10":10,"11":11,"12":12,"5":5,"6":6,"9":9}],8:[function(_dereq_,module,exports){ +(function (global){ +/** + * Enforces a single instance of the Raven client, and the + * main entry point for Raven. If you are a consumer of the + * Raven library, you SHOULD load this file (vs raven.js). + **/ - var timeout = self._keypressTimeout; +var RavenConstructor = _dereq_(7); - if (!timeout) { - self._breadcrumbEventHandler('input')(evt); - } +// This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) +var _window = + typeof window !== 'undefined' + ? window + : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; +var _Raven = _window.Raven; - clearTimeout(timeout); - self._keypressTimeout = setTimeout(function () { - self._keypressTimeout = null; - }, debounceDuration); - }; - }, +var Raven = new RavenConstructor(); - /** - * Captures a breadcrumb of type "navigation", normalizing input URLs - * @param to the originating URL - * @param from the target URL - * @private - */ - _captureUrlChange: function _captureUrlChange(from, to) { - var parsedLoc = parseUrl(this._location.href); - var parsedTo = parseUrl(to); - var parsedFrom = parseUrl(from); // because onpopstate only tells you the "new" (to) value of location.href, and - // not the previous (from) value, we need to track the value of the current URL - // state ourselves +/* + * Allow multiple versions of Raven to be installed. + * Strip Raven from the global context and returns the instance. + * + * @return {Raven} + */ +Raven.noConflict = function() { + _window.Raven = _Raven; + return Raven; +}; - this._lastHref = to; // Use only the path component of the URL if the URL matches the current - // document (almost all the time when using pushState) +Raven.afterLoad(); - if (parsedLoc.protocol === parsedTo.protocol && parsedLoc.host === parsedTo.host) to = parsedTo.relative; - if (parsedLoc.protocol === parsedFrom.protocol && parsedLoc.host === parsedFrom.host) from = parsedFrom.relative; - this.captureBreadcrumb({ - category: 'navigation', - data: { - to: to, - from: from - } - }); - }, - _patchFunctionToString: function _patchFunctionToString() { - var self = this; - self._originalFunctionToString = Function.prototype.toString; // eslint-disable-next-line no-extend-native +module.exports = Raven; - Function.prototype.toString = function () { - if (typeof this === 'function' && this.__raven__) { - return self._originalFunctionToString.apply(this.__orig__, arguments); - } +/** + * DISCLAIMER: + * + * Expose `Client` constructor for cases where user want to track multiple "sub-applications" in one larger app. + * It's not meant to be used by a wide audience, so pleaaase make sure that you know what you're doing before using it. + * Accidentally calling `install` multiple times, may result in an unexpected behavior that's very hard to debug. + * + * It's called `Client' to be in-line with Raven Node implementation. + * + * HOWTO: + * + * import Raven from 'raven-js'; + * + * const someAppReporter = new Raven.Client(); + * const someOtherAppReporter = new Raven.Client(); + * + * someAppReporter.config('__DSN__', { + * ...config goes here + * }); + * + * someOtherAppReporter.config('__OTHER_DSN__', { + * ...config goes here + * }); + * + * someAppReporter.captureMessage(...); + * someAppReporter.captureException(...); + * someAppReporter.captureBreadcrumb(...); + * + * someOtherAppReporter.captureMessage(...); + * someOtherAppReporter.captureException(...); + * someOtherAppReporter.captureBreadcrumb(...); + * + * It should "just work". + */ +module.exports.Client = RavenConstructor; - return self._originalFunctionToString.apply(this, arguments); - }; - }, - _unpatchFunctionToString: function _unpatchFunctionToString() { - if (this._originalFunctionToString) { - // eslint-disable-next-line no-extend-native - Function.prototype.toString = this._originalFunctionToString; - } - }, +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"7":7}],9:[function(_dereq_,module,exports){ +(function (global){ +var stringify = _dereq_(11); - /** - * Wrap timer functions and event targets to catch errors and provide - * better metadata. - */ - _instrumentTryCatch: function _instrumentTryCatch() { - var self = this; - var wrappedBuiltIns = self._wrappedBuiltIns; +var _window = + typeof window !== 'undefined' + ? window + : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; - function wrapTimeFn(orig) { - return function (fn, t) { - // preserve arity - // Make a copy of the arguments to prevent deoptimization - // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments - var args = new Array(arguments.length); +function isObject(what) { + return typeof what === 'object' && what !== null; +} - for (var i = 0; i < args.length; ++i) { - args[i] = arguments[i]; - } +// Yanked from https://git.io/vS8DV re-used under CC0 +// with some tiny modifications +function isError(value) { + switch ({}.toString.call(value)) { + case '[object Error]': + return true; + case '[object Exception]': + return true; + case '[object DOMException]': + return true; + default: + return value instanceof Error; + } +} - var originalCallback = args[0]; +function isErrorEvent(value) { + return supportsErrorEvent() && {}.toString.call(value) === '[object ErrorEvent]'; +} - if (isFunction(originalCallback)) { - args[0] = self.wrap(originalCallback); - } // IE < 9 doesn't support .call/.apply on setInterval/setTimeout, but it - // also supports only two arguments and doesn't care what this is, so we - // can just call the original function directly. +function isUndefined(what) { + return what === void 0; +} +function isFunction(what) { + return typeof what === 'function'; +} - if (orig.apply) { - return orig.apply(this, args); - } else { - return orig(args[0], args[1]); - } - }; - } +function isPlainObject(what) { + return Object.prototype.toString.call(what) === '[object Object]'; +} - var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; +function isString(what) { + return Object.prototype.toString.call(what) === '[object String]'; +} - function wrapEventTarget(global) { - var proto = _window$1[global] && _window$1[global].prototype; +function isArray(what) { + return Object.prototype.toString.call(what) === '[object Array]'; +} - if (proto && proto.hasOwnProperty && proto.hasOwnProperty('addEventListener')) { - fill(proto, 'addEventListener', function (orig) { - return function (evtName, fn, capture, secure) { - // preserve arity - try { - if (fn && fn.handleEvent) { - fn.handleEvent = self.wrap(fn.handleEvent); - } - } catch (err) {} // can sometimes get 'Permission denied to access property "handle Event' - // More breadcrumb DOM capture ... done here and not in `_instrumentBreadcrumbs` - // so that we don't have more than one wrapper function +function isEmptyObject(what) { + if (!isPlainObject(what)) return false; + for (var _ in what) { + if (what.hasOwnProperty(_)) { + return false; + } + } + return true; +} - var before, clickHandler, keypressHandler; +function supportsErrorEvent() { + try { + new ErrorEvent(''); // eslint-disable-line no-new + return true; + } catch (e) { + return false; + } +} - if (autoBreadcrumbs && autoBreadcrumbs.dom && (global === 'EventTarget' || global === 'Node')) { - // NOTE: generating multiple handlers per addEventListener invocation, should - // revisit and verify we can just use one (almost certainly) - clickHandler = self._breadcrumbEventHandler('click'); - keypressHandler = self._keypressEventHandler(); +function supportsFetch() { + if (!('fetch' in _window)) return false; - before = function before(evt) { - // need to intercept every DOM event in `before` argument, in case that - // same wrapped method is re-used for different events (e.g. mousemove THEN click) - // see #724 - if (!evt) return; - var eventType; + try { + new Headers(); // eslint-disable-line no-new + new Request(''); // eslint-disable-line no-new + new Response(); // eslint-disable-line no-new + return true; + } catch (e) { + return false; + } +} - try { - eventType = evt.type; - } catch (e) { - // just accessing event properties can throw an exception in some rare circumstances - // see: https://github.com/getsentry/raven-js/issues/838 - return; - } +// Despite all stars in the sky saying that Edge supports old draft syntax, aka 'never', 'always', 'origin' and 'default +// https://caniuse.com/#feat=referrer-policy +// It doesn't. And it throw exception instead of ignoring this parameter... +// REF: https://github.com/getsentry/raven-js/issues/1233 +function supportsReferrerPolicy() { + if (!supportsFetch()) return false; - if (eventType === 'click') return clickHandler(evt);else if (eventType === 'keypress') return keypressHandler(evt); - }; - } + try { + // eslint-disable-next-line no-new + new Request('pickleRick', { + referrerPolicy: 'origin' + }); + return true; + } catch (e) { + return false; + } +} - return orig.call(this, evtName, self.wrap(fn, undefined, before), capture, secure); - }; - }, wrappedBuiltIns); - fill(proto, 'removeEventListener', function (orig) { - return function (evt, fn, capture, secure) { - try { - fn = fn && (fn.__raven_wrapper__ ? fn.__raven_wrapper__ : fn); - } catch (e) {// ignore, accessing __raven_wrapper__ will throw in some Selenium environments - } +function supportsPromiseRejectionEvent() { + return typeof PromiseRejectionEvent === 'function'; +} - return orig.call(this, evt, fn, capture, secure); - }; - }, wrappedBuiltIns); - } +function wrappedCallback(callback) { + function dataCallback(data, original) { + var normalizedData = callback(data) || data; + if (original) { + return original(normalizedData) || normalizedData; } + return normalizedData; + } - fill(_window$1, 'setTimeout', wrapTimeFn, wrappedBuiltIns); - fill(_window$1, 'setInterval', wrapTimeFn, wrappedBuiltIns); - - if (_window$1.requestAnimationFrame) { - fill(_window$1, 'requestAnimationFrame', function (orig) { - return function (cb) { - return orig(self.wrap(cb)); - }; - }, wrappedBuiltIns); - } // event targets borrowed from bugsnag-js: - // https://github.com/bugsnag/bugsnag-js/blob/master/src/bugsnag.js#L666 - + return dataCallback; +} - var eventTargets = ['EventTarget', 'Window', 'Node', 'ApplicationCache', 'AudioTrackList', 'ChannelMergerNode', 'CryptoOperation', 'EventSource', 'FileReader', 'HTMLUnknownElement', 'IDBDatabase', 'IDBRequest', 'IDBTransaction', 'KeyOperation', 'MediaController', 'MessagePort', 'ModalWindow', 'Notification', 'SVGElementInstance', 'Screen', 'TextTrack', 'TextTrackCue', 'TextTrackList', 'WebSocket', 'WebSocketWorker', 'Worker', 'XMLHttpRequest', 'XMLHttpRequestEventTarget', 'XMLHttpRequestUpload']; +function each(obj, callback) { + var i, j; - for (var i = 0; i < eventTargets.length; i++) { - wrapEventTarget(eventTargets[i]); + if (isUndefined(obj.length)) { + for (i in obj) { + if (hasKey(obj, i)) { + callback.call(null, i, obj[i]); + } } - }, - - /** - * Instrument browser built-ins w/ breadcrumb capturing - * - XMLHttpRequests - * - DOM interactions (click/typing) - * - window.location changes - * - console - * - * Can be disabled or individually configured via the `autoBreadcrumbs` config option - */ - _instrumentBreadcrumbs: function _instrumentBreadcrumbs() { - var self = this; - var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; - var wrappedBuiltIns = self._wrappedBuiltIns; - - function wrapProp(prop, xhr) { - if (prop in xhr && isFunction(xhr[prop])) { - fill(xhr, prop, function (orig) { - return self.wrap(orig); - }); // intentionally don't track filled methods on XHR instances + } else { + j = obj.length; + if (j) { + for (i = 0; i < j; i++) { + callback.call(null, i, obj[i]); } } + } +} - if (autoBreadcrumbs.xhr && 'XMLHttpRequest' in _window$1) { - var xhrproto = XMLHttpRequest.prototype; - fill(xhrproto, 'open', function (origOpen) { - return function (method, url) { - // preserve arity - // if Sentry key appears in URL, don't capture - if (isString(url) && url.indexOf(self._globalKey) === -1) { - this.__raven_xhr = { - method: method, - url: url, - status_code: null - }; - } - - return origOpen.apply(this, arguments); - }; - }, wrappedBuiltIns); - fill(xhrproto, 'send', function (origSend) { - return function () { - // preserve arity - var xhr = this; - - function onreadystatechangeHandler() { - if (xhr.__raven_xhr && xhr.readyState === 4) { - try { - // touching statusCode in some platforms throws - // an exception - xhr.__raven_xhr.status_code = xhr.status; - } catch (e) { - /* do nothing */ - } +function objectMerge(obj1, obj2) { + if (!obj2) { + return obj1; + } + each(obj2, function(key, value) { + obj1[key] = value; + }); + return obj1; +} - self.captureBreadcrumb({ - type: 'http', - category: 'xhr', - data: xhr.__raven_xhr - }); - } - } +/** + * This function is only used for react-native. + * react-native freezes object that have already been sent over the + * js bridge. We need this function in order to check if the object is frozen. + * So it's ok that objectFrozen returns false if Object.isFrozen is not + * supported because it's not relevant for other "platforms". See related issue: + * https://github.com/getsentry/react-native-sentry/issues/57 + */ +function objectFrozen(obj) { + if (!Object.isFrozen) { + return false; + } + return Object.isFrozen(obj); +} - var props = ['onload', 'onerror', 'onprogress']; +function truncate(str, max) { + if (typeof max !== 'number') { + throw new Error('2nd argument to `truncate` function should be a number'); + } + if (typeof str !== 'string' || max === 0) { + return str; + } + return str.length <= max ? str : str.substr(0, max) + '\u2026'; +} - for (var j = 0; j < props.length; j++) { - wrapProp(props[j], xhr); - } +/** + * hasKey, a better form of hasOwnProperty + * Example: hasKey(MainHostObject, property) === true/false + * + * @param {Object} host object to check property + * @param {string} key to check + */ +function hasKey(object, key) { + return Object.prototype.hasOwnProperty.call(object, key); +} - if ('onreadystatechange' in xhr && isFunction(xhr.onreadystatechange)) { - fill(xhr, 'onreadystatechange', function (orig) { - return self.wrap(orig, undefined, onreadystatechangeHandler); - } - /* intentionally don't track this instrumentation */ - ); - } else { - // if onreadystatechange wasn't actually set by the page on this xhr, we - // are free to set our own and capture the breadcrumb - xhr.onreadystatechange = onreadystatechangeHandler; - } +function joinRegExp(patterns) { + // Combine an array of regular expressions and strings into one large regexp + // Be mad. + var sources = [], + i = 0, + len = patterns.length, + pattern; - return origSend.apply(this, arguments); - }; - }, wrappedBuiltIns); + for (; i < len; i++) { + pattern = patterns[i]; + if (isString(pattern)) { + // If it's a string, we need to escape it + // Taken from: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions + sources.push(pattern.replace(/([.*+?^=!:${}()|\[\]\/\\])/g, '\\$1')); + } else if (pattern && pattern.source) { + // If it's a regexp already, we want to extract the source + sources.push(pattern.source); } + // Intentionally skip other cases + } + return new RegExp(sources.join('|'), 'i'); +} - if (autoBreadcrumbs.xhr && supportsFetch()) { - fill(_window$1, 'fetch', function (origFetch) { - return function () { - // preserve arity - // Make a copy of the arguments to prevent deoptimization - // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments - var args = new Array(arguments.length); - - for (var i = 0; i < args.length; ++i) { - args[i] = arguments[i]; - } - - var fetchInput = args[0]; - var method = 'GET'; - var url; - - if (typeof fetchInput === 'string') { - url = fetchInput; - } else if ('Request' in _window$1 && fetchInput instanceof _window$1.Request) { - url = fetchInput.url; +function urlencode(o) { + var pairs = []; + each(o, function(key, value) { + pairs.push(encodeURIComponent(key) + '=' + encodeURIComponent(value)); + }); + return pairs.join('&'); +} - if (fetchInput.method) { - method = fetchInput.method; - } - } else { - url = '' + fetchInput; - } // if Sentry key appears in URL, don't capture, as it's our own request +// borrowed from https://tools.ietf.org/html/rfc3986#appendix-B +// intentionally using regex and not href parsing trick because React Native and other +// environments where DOM might not be available +function parseUrl(url) { + if (typeof url !== 'string') return {}; + var match = url.match(/^(([^:\/?#]+):)?(\/\/([^\/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?$/); + // coerce to undefined values to empty string so we don't get 'undefined' + var query = match[6] || ''; + var fragment = match[8] || ''; + return { + protocol: match[2], + host: match[4], + path: match[5], + relative: match[5] + query + fragment // everything minus origin + }; +} +function uuid4() { + var crypto = _window.crypto || _window.msCrypto; - if (url.indexOf(self._globalKey) !== -1) { - return origFetch.apply(this, args); - } + if (!isUndefined(crypto) && crypto.getRandomValues) { + // Use window.crypto API if available + // eslint-disable-next-line no-undef + var arr = new Uint16Array(8); + crypto.getRandomValues(arr); - if (args[1] && args[1].method) { - method = args[1].method; - } + // set 4 in byte 7 + arr[3] = (arr[3] & 0xfff) | 0x4000; + // set 2 most significant bits of byte 9 to '10' + arr[4] = (arr[4] & 0x3fff) | 0x8000; - var fetchData = { - method: method, - url: url, - status_code: null - }; - return origFetch.apply(this, args).then(function (response) { - fetchData.status_code = response.status; - self.captureBreadcrumb({ - type: 'http', - category: 'fetch', - data: fetchData - }); - return response; - }); - }; - }, wrappedBuiltIns); - } // Capture breadcrumbs from any click that is unhandled / bubbled up all the way - // to the document. Do this before we instrument addEventListener. + var pad = function(num) { + var v = num.toString(16); + while (v.length < 4) { + v = '0' + v; + } + return v; + }; + return ( + pad(arr[0]) + + pad(arr[1]) + + pad(arr[2]) + + pad(arr[3]) + + pad(arr[4]) + + pad(arr[5]) + + pad(arr[6]) + + pad(arr[7]) + ); + } else { + // http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/2117523#2117523 + return 'xxxxxxxxxxxx4xxxyxxxxxxxxxxxxxxx'.replace(/[xy]/g, function(c) { + var r = (Math.random() * 16) | 0, + v = c === 'x' ? r : (r & 0x3) | 0x8; + return v.toString(16); + }); + } +} - if (autoBreadcrumbs.dom && this._hasDocument) { - if (_document.addEventListener) { - _document.addEventListener('click', self._breadcrumbEventHandler('click'), false); +/** + * Given a child DOM element, returns a query-selector statement describing that + * and its ancestors + * e.g. [HTMLElement] => body > div > input#foo.btn[name=baz] + * @param elem + * @returns {string} + */ +function htmlTreeAsString(elem) { + /* eslint no-extra-parens:0*/ + var MAX_TRAVERSE_HEIGHT = 5, + MAX_OUTPUT_LEN = 80, + out = [], + height = 0, + len = 0, + separator = ' > ', + sepLength = separator.length, + nextStr; - _document.addEventListener('keypress', self._keypressEventHandler(), false); - } else { - // IE8 Compatibility - _document.attachEvent('onclick', self._breadcrumbEventHandler('click')); + while (elem && height++ < MAX_TRAVERSE_HEIGHT) { + nextStr = htmlElementAsString(elem); + // bail out if + // - nextStr is the 'html' element + // - the length of the string that would be created exceeds MAX_OUTPUT_LEN + // (ignore this limit if we are on the first iteration) + if ( + nextStr === 'html' || + (height > 1 && len + out.length * sepLength + nextStr.length >= MAX_OUTPUT_LEN) + ) { + break; + } - _document.attachEvent('onkeypress', self._keypressEventHandler()); - } - } // record navigation (URL) changes - // NOTE: in Chrome App environment, touching history.pushState, *even inside - // a try/catch block*, will cause Chrome to output an error to console.error - // borrowed from: https://github.com/angular/angular.js/pull/13945/files + out.push(nextStr); + len += nextStr.length; + elem = elem.parentNode; + } - var chrome = _window$1.chrome; - var isChromePackagedApp = chrome && chrome.app && chrome.app.runtime; - var hasPushAndReplaceState = !isChromePackagedApp && _window$1.history && history.pushState && history.replaceState; + return out.reverse().join(separator); +} - if (autoBreadcrumbs.location && hasPushAndReplaceState) { - // TODO: remove onpopstate handler on uninstall() - var oldOnPopState = _window$1.onpopstate; +/** + * Returns a simple, query-selector representation of a DOM element + * e.g. [HTMLElement] => input#foo.btn[name=baz] + * @param HTMLElement + * @returns {string} + */ +function htmlElementAsString(elem) { + var out = [], + className, + classes, + key, + attr, + i; - _window$1.onpopstate = function () { - var currentHref = self._location.href; + if (!elem || !elem.tagName) { + return ''; + } - self._captureUrlChange(self._lastHref, currentHref); + out.push(elem.tagName.toLowerCase()); + if (elem.id) { + out.push('#' + elem.id); + } - if (oldOnPopState) { - return oldOnPopState.apply(this, arguments); - } - }; + className = elem.className; + if (className && isString(className)) { + classes = className.split(/\s+/); + for (i = 0; i < classes.length; i++) { + out.push('.' + classes[i]); + } + } + var attrWhitelist = ['type', 'name', 'title', 'alt']; + for (i = 0; i < attrWhitelist.length; i++) { + key = attrWhitelist[i]; + attr = elem.getAttribute(key); + if (attr) { + out.push('[' + key + '="' + attr + '"]'); + } + } + return out.join(''); +} - var historyReplacementFunction = function historyReplacementFunction(origHistFunction) { - // note history.pushState.length is 0; intentionally not declaring - // params to preserve 0 arity - return function () - /* state, title, url */ - { - var url = arguments.length > 2 ? arguments[2] : undefined; // url argument is optional +/** + * Returns true if either a OR b is truthy, but not both + */ +function isOnlyOneTruthy(a, b) { + return !!(!!a ^ !!b); +} - if (url) { - // coerce to string (this is what pushState does) - self._captureUrlChange(self._lastHref, url + ''); - } +/** + * Returns true if both parameters are undefined + */ +function isBothUndefined(a, b) { + return isUndefined(a) && isUndefined(b); +} - return origHistFunction.apply(this, arguments); - }; - }; +/** + * Returns true if the two input exception interfaces have the same content + */ +function isSameException(ex1, ex2) { + if (isOnlyOneTruthy(ex1, ex2)) return false; - fill(history, 'pushState', historyReplacementFunction, wrappedBuiltIns); - fill(history, 'replaceState', historyReplacementFunction, wrappedBuiltIns); - } + ex1 = ex1.values[0]; + ex2 = ex2.values[0]; - if (autoBreadcrumbs.console && 'console' in _window$1 && console.log) { - // console - var consoleMethodCallback = function consoleMethodCallback(msg, data) { - self.captureBreadcrumb({ - message: msg, - level: data.level, - category: 'console' - }); - }; + if (ex1.type !== ex2.type || ex1.value !== ex2.value) return false; - each(['debug', 'info', 'warn', 'error', 'log'], function (_, level) { - wrapConsoleMethod(console, level, consoleMethodCallback); - }); - } - }, - _restoreBuiltIns: function _restoreBuiltIns() { - // restore any wrapped builtins - var builtin; + // in case both stacktraces are undefined, we can't decide so default to false + if (isBothUndefined(ex1.stacktrace, ex2.stacktrace)) return false; - while (this._wrappedBuiltIns.length) { - builtin = this._wrappedBuiltIns.shift(); - var obj = builtin[0], - name = builtin[1], - orig = builtin[2]; - obj[name] = orig; - } - }, - _restoreConsole: function _restoreConsole() { - // eslint-disable-next-line guard-for-in - for (var method in this._originalConsoleMethods) { - this._originalConsole[method] = this._originalConsoleMethods[method]; - } - }, - _drainPlugins: function _drainPlugins() { - var self = this; // FIX ME TODO + return isSameStacktrace(ex1.stacktrace, ex2.stacktrace); +} - each(this._plugins, function (_, plugin) { - var installer = plugin[0]; - var args = plugin[1]; - installer.apply(self, [self].concat(args)); - }); - }, - _parseDSN: function _parseDSN(str) { - var m = dsnPattern.exec(str), - dsn = {}, - i = 7; +/** + * Returns true if the two input stack trace interfaces have the same content + */ +function isSameStacktrace(stack1, stack2) { + if (isOnlyOneTruthy(stack1, stack2)) return false; + + var frames1 = stack1.frames; + var frames2 = stack2.frames; + + // Exit early if frame count differs + if (frames1.length !== frames2.length) return false; + + // Iterate through every frame; bail out if anything differs + var a, b; + for (var i = 0; i < frames1.length; i++) { + a = frames1[i]; + b = frames2[i]; + if ( + a.filename !== b.filename || + a.lineno !== b.lineno || + a.colno !== b.colno || + a['function'] !== b['function'] + ) + return false; + } + return true; +} + +/** + * Polyfill a method + * @param obj object e.g. `document` + * @param name method name present on object e.g. `addEventListener` + * @param replacement replacement function + * @param track {optional} record instrumentation to an array + */ +function fill(obj, name, replacement, track) { + if (obj == null) return; + var orig = obj[name]; + obj[name] = replacement(orig); + obj[name].__raven__ = true; + obj[name].__orig__ = orig; + if (track) { + track.push([obj, name, orig]); + } +} + +/** + * Join values in array + * @param input array of values to be joined together + * @param delimiter string to be placed in-between values + * @returns {string} + */ +function safeJoin(input, delimiter) { + if (!isArray(input)) return ''; + + var output = []; + for (var i = 0; i < input.length; i++) { try { - while (i--) { - dsn[dsnKeys[i]] = m[i] || ''; - } + output.push(String(input[i])); } catch (e) { - throw new configError('Invalid DSN: ' + str); + output.push('[value cannot be serialized]'); } + } - if (dsn.pass && !this._globalOptions.allowSecretKey) { - throw new configError('Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key'); - } + return output.join(delimiter); +} - return dsn; - }, - _getGlobalServer: function _getGlobalServer(uri) { - // assemble the endpoint from the uri pieces - var globalServer = '//' + uri.host + (uri.port ? ':' + uri.port : ''); +// Default Node.js REPL depth +var MAX_SERIALIZE_EXCEPTION_DEPTH = 3; +// 50kB, as 100kB is max payload size, so half sounds reasonable +var MAX_SERIALIZE_EXCEPTION_SIZE = 50 * 1024; +var MAX_SERIALIZE_KEYS_LENGTH = 40; - if (uri.protocol) { - globalServer = uri.protocol + ':' + globalServer; - } +function utf8Length(value) { + return ~-encodeURI(value).split(/%..|./).length; +} - return globalServer; - }, - _handleOnErrorStackInfo: function _handleOnErrorStackInfo() { - // if we are intentionally ignoring errors via onerror, bail out - if (!this._ignoreOnError) { - this._handleStackInfo.apply(this, arguments); - } - }, - _handleStackInfo: function _handleStackInfo(stackInfo, options) { - var frames = this._prepareFrames(stackInfo, options); +function jsonSize(value) { + return utf8Length(JSON.stringify(value)); +} - this._triggerEvent('handle', { - stackInfo: stackInfo, - options: options - }); +function serializeValue(value) { + if (typeof value === 'string') { + var maxLength = 40; + return truncate(value, maxLength); + } else if ( + typeof value === 'number' || + typeof value === 'boolean' || + typeof value === 'undefined' + ) { + return value; + } - this._processException(stackInfo.name, stackInfo.message, stackInfo.url, stackInfo.lineno, frames, options); - }, - _prepareFrames: function _prepareFrames(stackInfo, options) { - var self = this; - var frames = []; + var type = Object.prototype.toString.call(value); - if (stackInfo.stack && stackInfo.stack.length) { - each(stackInfo.stack, function (i, stack) { - var frame = self._normalizeFrame(stack, stackInfo.url); + // Node.js REPL notation + if (type === '[object Object]') return '[Object]'; + if (type === '[object Array]') return '[Array]'; + if (type === '[object Function]') + return value.name ? '[Function: ' + value.name + ']' : '[Function]'; - if (frame) { - frames.push(frame); - } - }); // e.g. frames captured via captureMessage throw + return value; +} - if (options && options.trimHeadFrames) { - for (var j = 0; j < options.trimHeadFrames && j < frames.length; j++) { - frames[j].in_app = false; - } - } - } +function serializeObject(value, depth) { + if (depth === 0) return serializeValue(value); + + if (isPlainObject(value)) { + return Object.keys(value).reduce(function(acc, key) { + acc[key] = serializeObject(value[key], depth - 1); + return acc; + }, {}); + } else if (Array.isArray(value)) { + return value.map(function(val) { + return serializeObject(val, depth - 1); + }); + } - frames = frames.slice(0, this._globalOptions.stackTraceLimit); - return frames; - }, - _normalizeFrame: function _normalizeFrame(frame, stackInfoUrl) { - // normalize the frames data - var normalized = { - filename: frame.url, - lineno: frame.line, - colno: frame.column, - function: frame.func || '?' - }; // Case when we don't have any information about the error - // E.g. throwing a string or raw object, instead of an `Error` in Firefox - // Generating synthetic error doesn't add any value here - // - // We should probably somehow let a user know that they should fix their code + return serializeValue(value); +} - if (!frame.url) { - normalized.filename = stackInfoUrl; // fallback to whole stacks url from onerror handler - } +function serializeException(ex, depth, maxSize) { + if (!isPlainObject(ex)) return ex; - normalized.in_app = !( // determine if an exception came from outside of our app - // first we check the global includePaths list. - !!this._globalOptions.includePaths.test && !this._globalOptions.includePaths.test(normalized.filename) || // Now we check for fun, if the function name is Raven or TraceKit - /(Raven|TraceKit)\./.test(normalized['function']) || // finally, we do a last ditch effort and check for raven.min.js - /raven\.(min\.)?js$/.test(normalized.filename)); - return normalized; - }, - _processException: function _processException(type, message, fileurl, lineno, frames, options) { - var prefixedMessage = (type ? type + ': ' : '') + (message || ''); + depth = typeof depth !== 'number' ? MAX_SERIALIZE_EXCEPTION_DEPTH : depth; + maxSize = typeof depth !== 'number' ? MAX_SERIALIZE_EXCEPTION_SIZE : maxSize; - if (!!this._globalOptions.ignoreErrors.test && (this._globalOptions.ignoreErrors.test(message) || this._globalOptions.ignoreErrors.test(prefixedMessage))) { - return; - } + var serialized = serializeObject(ex, depth); - var stacktrace; + if (jsonSize(stringify(serialized)) > maxSize) { + return serializeException(ex, depth - 1); + } - if (frames && frames.length) { - fileurl = frames[0].filename || fileurl; // Sentry expects frames oldest to newest - // and JS sends them as newest to oldest + return serialized; +} - frames.reverse(); - stacktrace = { - frames: frames - }; - } else if (fileurl) { - stacktrace = { - frames: [{ - filename: fileurl, - lineno: lineno, - in_app: true - }] - }; - } +function serializeKeysForMessage(keys, maxLength) { + if (typeof keys === 'number' || typeof keys === 'string') return keys.toString(); + if (!Array.isArray(keys)) return ''; - if (!!this._globalOptions.ignoreUrls.test && this._globalOptions.ignoreUrls.test(fileurl)) { - return; - } + keys = keys.filter(function(key) { + return typeof key === 'string'; + }); + if (keys.length === 0) return '[object has no keys]'; - if (!!this._globalOptions.whitelistUrls.test && !this._globalOptions.whitelistUrls.test(fileurl)) { - return; - } + maxLength = typeof maxLength !== 'number' ? MAX_SERIALIZE_KEYS_LENGTH : maxLength; + if (keys[0].length >= maxLength) return keys[0]; - var data = objectMerge({ - // sentry.interfaces.Exception - exception: { - values: [{ - type: type, - value: message, - stacktrace: stacktrace - }] - }, - culprit: fileurl - }, options); // Fire away! + for (var usedKeys = keys.length; usedKeys > 0; usedKeys--) { + var serialized = keys.slice(0, usedKeys).join(', '); + if (serialized.length > maxLength) continue; + if (usedKeys === keys.length) return serialized; + return serialized + '\u2026'; + } - this._send(data); - }, - _trimPacket: function _trimPacket(data) { - // For now, we only want to truncate the two different messages - // but this could/should be expanded to just trim everything - var max = this._globalOptions.maxMessageLength; + return ''; +} - if (data.message) { - data.message = truncate(data.message, max); +function sanitize(input, sanitizeKeys) { + if (!isArray(sanitizeKeys) || (isArray(sanitizeKeys) && sanitizeKeys.length === 0)) + return input; + + var sanitizeRegExp = joinRegExp(sanitizeKeys); + var sanitizeMask = '********'; + var safeInput; + + try { + safeInput = JSON.parse(stringify(input)); + } catch (o_O) { + return input; + } + + function sanitizeWorker(workerInput) { + if (isArray(workerInput)) { + return workerInput.map(function(val) { + return sanitizeWorker(val); + }); } - if (data.exception) { - var exception = data.exception.values[0]; - exception.value = truncate(exception.value, max); + if (isPlainObject(workerInput)) { + return Object.keys(workerInput).reduce(function(acc, k) { + if (sanitizeRegExp.test(k)) { + acc[k] = sanitizeMask; + } else { + acc[k] = sanitizeWorker(workerInput[k]); + } + return acc; + }, {}); } - var request = data.request; + return workerInput; + } - if (request) { - if (request.url) { - request.url = truncate(request.url, this._globalOptions.maxUrlLength); - } + return sanitizeWorker(safeInput); +} - if (request.Referer) { - request.Referer = truncate(request.Referer, this._globalOptions.maxUrlLength); - } - } +module.exports = { + isObject: isObject, + isError: isError, + isErrorEvent: isErrorEvent, + isUndefined: isUndefined, + isFunction: isFunction, + isPlainObject: isPlainObject, + isString: isString, + isArray: isArray, + isEmptyObject: isEmptyObject, + supportsErrorEvent: supportsErrorEvent, + supportsFetch: supportsFetch, + supportsReferrerPolicy: supportsReferrerPolicy, + supportsPromiseRejectionEvent: supportsPromiseRejectionEvent, + wrappedCallback: wrappedCallback, + each: each, + objectMerge: objectMerge, + truncate: truncate, + objectFrozen: objectFrozen, + hasKey: hasKey, + joinRegExp: joinRegExp, + urlencode: urlencode, + uuid4: uuid4, + htmlTreeAsString: htmlTreeAsString, + htmlElementAsString: htmlElementAsString, + isSameException: isSameException, + isSameStacktrace: isSameStacktrace, + parseUrl: parseUrl, + fill: fill, + safeJoin: safeJoin, + serializeException: serializeException, + serializeKeysForMessage: serializeKeysForMessage, + sanitize: sanitize +}; - if (data.breadcrumbs && data.breadcrumbs.values) this._trimBreadcrumbs(data.breadcrumbs); - return data; - }, +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"11":11}],10:[function(_dereq_,module,exports){ +(function (global){ +var utils = _dereq_(9); - /** - * Truncate breadcrumb values (right now just URLs) - */ - _trimBreadcrumbs: function _trimBreadcrumbs(breadcrumbs) { - // known breadcrumb properties with urls - // TODO: also consider arbitrary prop values that start with (https?)?:// - var urlProps = ['to', 'from', 'url'], - urlProp, - crumb, - data; +/* + TraceKit - Cross brower stack traces - for (var i = 0; i < breadcrumbs.values.length; ++i) { - crumb = breadcrumbs.values[i]; - if (!crumb.hasOwnProperty('data') || !isObject(crumb.data) || objectFrozen(crumb.data)) continue; - data = objectMerge({}, crumb.data); + This was originally forked from github.com/occ/TraceKit, but has since been + largely re-written and is now maintained as part of raven-js. Tests for + this are in test/vendor. - for (var j = 0; j < urlProps.length; ++j) { - urlProp = urlProps[j]; + MIT license +*/ - if (data.hasOwnProperty(urlProp) && data[urlProp]) { - data[urlProp] = truncate(data[urlProp], this._globalOptions.maxUrlLength); - } - } +var TraceKit = { + collectWindowErrors: true, + debug: false +}; - breadcrumbs.values[i].data = data; - } - }, - _getHttpData: function _getHttpData() { - if (!this._hasNavigator && !this._hasDocument) return; - var httpData = {}; +// This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) +var _window = + typeof window !== 'undefined' + ? window + : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; - if (this._hasNavigator && _navigator.userAgent) { - httpData.headers = { - 'User-Agent': navigator.userAgent - }; - } // Check in `window` instead of `document`, as we may be in ServiceWorker environment +// global reference to slice +var _slice = [].slice; +var UNKNOWN_FUNCTION = '?'; +// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error#Error_types +var ERROR_TYPES_RE = /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/; - if (_window$1.location && _window$1.location.href) { - httpData.url = _window$1.location.href; - } +function getLocationHref() { + if (typeof document === 'undefined' || document.location == null) return ''; - if (this._hasDocument && _document.referrer) { - if (!httpData.headers) httpData.headers = {}; - httpData.headers.Referer = _document.referrer; - } + return document.location.href; +} - return httpData; - }, - _resetBackoff: function _resetBackoff() { - this._backoffDuration = 0; - this._backoffStart = null; - }, - _shouldBackoff: function _shouldBackoff() { - return this._backoffDuration && now() - this._backoffStart < this._backoffDuration; - }, +/** + * TraceKit.report: cross-browser processing of unhandled exceptions + * + * Syntax: + * TraceKit.report.subscribe(function(stackInfo) { ... }) + * TraceKit.report.unsubscribe(function(stackInfo) { ... }) + * TraceKit.report(exception) + * try { ...code... } catch(ex) { TraceKit.report(ex); } + * + * Supports: + * - Firefox: full stack trace with line numbers, plus column number + * on top frame; column number is not guaranteed + * - Opera: full stack trace with line and column numbers + * - Chrome: full stack trace with line and column numbers + * - Safari: line and column number for the top frame only; some frames + * may be missing, and column number is not guaranteed + * - IE: line and column number for the top frame only; some frames + * may be missing, and column number is not guaranteed + * + * In theory, TraceKit should work on all of the following versions: + * - IE5.5+ (only 8.0 tested) + * - Firefox 0.9+ (only 3.5+ tested) + * - Opera 7+ (only 10.50 tested; versions 9 and earlier may require + * Exceptions Have Stacktrace to be enabled in opera:config) + * - Safari 3+ (only 4+ tested) + * - Chrome 1+ (only 5+ tested) + * - Konqueror 3.5+ (untested) + * + * Requires TraceKit.computeStackTrace. + * + * Tries to catch all unhandled exceptions and report them to the + * subscribed handlers. Please note that TraceKit.report will rethrow the + * exception. This is REQUIRED in order to get a useful stack trace in IE. + * If the exception does not reach the top of the browser, you will only + * get a stack trace from the point where TraceKit.report was called. + * + * Handlers receive a stackInfo object as described in the + * TraceKit.computeStackTrace docs. + */ +TraceKit.report = (function reportModuleWrapper() { + var handlers = [], + lastArgs = null, + lastException = null, + lastExceptionStack = null; /** - * Returns true if the in-process data payload matches the signature - * of the previously-sent data - * - * NOTE: This has to be done at this level because TraceKit can generate - * data from window.onerror WITHOUT an exception object (IE8, IE9, - * other old browsers). This can take the form of an "exception" - * data object with a single frame (derived from the onerror args). + * Add a crash handler. + * @param {Function} handler */ - _isRepeatData: function _isRepeatData(current) { - var last = this._lastData; - if (!last || current.message !== last.message || // defined for captureMessage - current.culprit !== last.culprit // defined for captureException/onerror - ) return false; // Stacktrace interface (i.e. from captureMessage) + function subscribe(handler) { + installGlobalHandler(); + handlers.push(handler); + } - if (current.stacktrace || last.stacktrace) { - return isSameStacktrace(current.stacktrace, last.stacktrace); - } else if (current.exception || last.exception) { - // Exception interface (i.e. from captureException/onerror) - return isSameException(current.exception, last.exception); + /** + * Remove a crash handler. + * @param {Function} handler + */ + function unsubscribe(handler) { + for (var i = handlers.length - 1; i >= 0; --i) { + if (handlers[i] === handler) { + handlers.splice(i, 1); + } } + } - return true; - }, - _setBackoffState: function _setBackoffState(request) { - // If we are already in a backoff state, don't change anything - if (this._shouldBackoff()) { + /** + * Remove all crash handlers. + */ + function unsubscribeAll() { + uninstallGlobalHandler(); + handlers = []; + } + + /** + * Dispatch stack information to all handlers. + * @param {Object.} stack + */ + function notifyHandlers(stack, isWindowError) { + var exception = null; + if (isWindowError && !TraceKit.collectWindowErrors) { return; } + for (var i in handlers) { + if (handlers.hasOwnProperty(i)) { + try { + handlers[i].apply(null, [stack].concat(_slice.call(arguments, 2))); + } catch (inner) { + exception = inner; + } + } + } - var status = request.status; // 400 - project_id doesn't exist or some other fatal - // 401 - invalid/revoked dsn - // 429 - too many requests - - if (!(status === 400 || status === 401 || status === 429)) return; - var retry; + if (exception) { + throw exception; + } + } - try { - // If Retry-After is not in Access-Control-Expose-Headers, most - // browsers will throw an exception trying to access it - if (supportsFetch()) { - retry = request.headers.get('Retry-After'); - } else { - retry = request.getResponseHeader('Retry-After'); - } // Retry-After is returned in seconds + var _oldOnerrorHandler, _onErrorHandlerInstalled; + /** + * Ensures all global unhandled exceptions are recorded. + * Supported by Gecko and IE. + * @param {string} msg Error message. + * @param {string} url URL of script that generated the exception. + * @param {(number|string)} lineNo The line number at which the error + * occurred. + * @param {?(number|string)} colNo The column number at which the error + * occurred. + * @param {?Error} ex The actual Error object. + */ + function traceKitWindowOnError(msg, url, lineNo, colNo, ex) { + var stack = null; + // If 'ex' is ErrorEvent, get real Error from inside + var exception = utils.isErrorEvent(ex) ? ex.error : ex; + // If 'msg' is ErrorEvent, get real message from inside + var message = utils.isErrorEvent(msg) ? msg.message : msg; - retry = parseInt(retry, 10) * 1000; - } catch (e) { - /* eslint no-empty:0 */ - } + if (lastExceptionStack) { + TraceKit.computeStackTrace.augmentStackTraceWithInitialElement( + lastExceptionStack, + url, + lineNo, + message + ); + processLastException(); + } else if (exception && utils.isError(exception)) { + // non-string `exception` arg; attempt to extract stack trace - this._backoffDuration = retry ? // If Sentry server returned a Retry-After value, use it - retry : // Otherwise, double the last backoff duration (starts at 1 sec) - this._backoffDuration * 2 || 1000; - this._backoffStart = now(); - }, - _send: function _send(data) { - var globalOptions = this._globalOptions; + // New chrome and blink send along a real error object + // Let's just report that like a normal error. + // See: https://mikewest.org/2013/08/debugging-runtime-errors-with-window-onerror + stack = TraceKit.computeStackTrace(exception); + notifyHandlers(stack, true); + } else { + var location = { + url: url, + line: lineNo, + column: colNo + }; - var baseData = { - project: this._globalProject, - logger: globalOptions.logger, - platform: 'javascript' - }, - httpData = this._getHttpData(); + var name = undefined; + var groups; - if (httpData) { - baseData.request = httpData; - } // HACK: delete `trimHeadFrames` to prevent from appearing in outbound payload - - - if (data.trimHeadFrames) delete data.trimHeadFrames; - data = objectMerge(baseData, data); // Merge in the tags and extra separately since objectMerge doesn't handle a deep merge - - data.tags = objectMerge(objectMerge({}, this._globalContext.tags), data.tags); - data.extra = objectMerge(objectMerge({}, this._globalContext.extra), data.extra); // Send along our own collected metadata with extra + if ({}.toString.call(message) === '[object String]') { + var groups = message.match(ERROR_TYPES_RE); + if (groups) { + name = groups[1]; + message = groups[2]; + } + } - data.extra['session:duration'] = now() - this._startTime; + location.func = UNKNOWN_FUNCTION; - if (this._breadcrumbs && this._breadcrumbs.length > 0) { - // intentionally make shallow copy so that additions - // to breadcrumbs aren't accidentally sent in this request - data.breadcrumbs = { - values: [].slice.call(this._breadcrumbs, 0) + stack = { + name: name, + message: message, + url: getLocationHref(), + stack: [location] }; + notifyHandlers(stack, true); } - if (this._globalContext.user) { - // sentry.interfaces.User - data.user = this._globalContext.user; - } // Include the environment if it's defined in globalOptions - - - if (globalOptions.environment) data.environment = globalOptions.environment; // Include the release if it's defined in globalOptions - - if (globalOptions.release) data.release = globalOptions.release; // Include server_name if it's defined in globalOptions - - if (globalOptions.serverName) data.server_name = globalOptions.serverName; // Cleanup empty properties before sending them to the server - - Object.keys(data).forEach(function (key) { - if (data[key] == null || data[key] === '' || isEmptyObject(data[key])) { - delete data[key]; - } - }); - - if (isFunction(globalOptions.dataCallback)) { - data = globalOptions.dataCallback(data) || data; - } // Why?????????? - - - if (!data || isEmptyObject(data)) { - return; - } // Check if the request should be filtered or not - - - if (isFunction(globalOptions.shouldSendCallback) && !globalOptions.shouldSendCallback(data)) { - return; - } // Backoff state: Sentry server previously responded w/ an error (e.g. 429 - too many requests), - // so drop requests until "cool-off" period has elapsed. - + if (_oldOnerrorHandler) { + return _oldOnerrorHandler.apply(this, arguments); + } - if (this._shouldBackoff()) { - this._logDebug('warn', 'Raven dropped error due to backoff: ', data); + return false; + } + function installGlobalHandler() { + if (_onErrorHandlerInstalled) { return; } + _oldOnerrorHandler = _window.onerror; + _window.onerror = traceKitWindowOnError; + _onErrorHandlerInstalled = true; + } - if (typeof globalOptions.sampleRate === 'number') { - if (Math.random() < globalOptions.sampleRate) { - this._sendProcessedPayload(data); - } - } else { - this._sendProcessedPayload(data); - } - }, - _getUuid: function _getUuid() { - return uuid4(); - }, - _sendProcessedPayload: function _sendProcessedPayload(data, callback) { - var self = this; - var globalOptions = this._globalOptions; - if (!this.isSetup()) return; // Try and clean up the packet before sending by truncating long values - - data = this._trimPacket(data); // ideally duplicate error testing should occur *before* dataCallback/shouldSendCallback, - // but this would require copying an un-truncated copy of the data packet, which can be - // arbitrarily deep (extra_data) -- could be worthwhile? will revisit - - if (!this._globalOptions.allowDuplicates && this._isRepeatData(data)) { - this._logDebug('warn', 'Raven dropped repeat event: ', data); - + function uninstallGlobalHandler() { + if (!_onErrorHandlerInstalled) { return; - } // Send along an event_id if not explicitly passed. - // This event_id can be used to reference the error within Sentry itself. - // Set lastEventId after we know the error should actually be sent - - - this._lastEventId = data.event_id || (data.event_id = this._getUuid()); // Store outbound payload after trim - - this._lastData = data; - - this._logDebug('debug', 'Raven about to send:', data); + } + _window.onerror = _oldOnerrorHandler; + _onErrorHandlerInstalled = false; + _oldOnerrorHandler = undefined; + } - var auth = { - sentry_version: '7', - sentry_client: 'raven-js/' + this.VERSION, - sentry_key: this._globalKey - }; + function processLastException() { + var _lastExceptionStack = lastExceptionStack, + _lastArgs = lastArgs; + lastArgs = null; + lastExceptionStack = null; + lastException = null; + notifyHandlers.apply(null, [_lastExceptionStack, false].concat(_lastArgs)); + } - if (this._globalSecret) { - auth.sentry_secret = this._globalSecret; + /** + * Reports an unhandled Error to TraceKit. + * @param {Error} ex + * @param {?boolean} rethrow If false, do not re-throw the exception. + * Only used for window.onerror to not cause an infinite loop of + * rethrowing. + */ + function report(ex, rethrow) { + var args = _slice.call(arguments, 1); + if (lastExceptionStack) { + if (lastException === ex) { + return; // already caught by an inner catch block, ignore + } else { + processLastException(); + } } - var exception = data.exception && data.exception.values[0]; // only capture 'sentry' breadcrumb is autoBreadcrumbs is truthy + var stack = TraceKit.computeStackTrace(ex); + lastExceptionStack = stack; + lastException = ex; + lastArgs = args; - if (this._globalOptions.autoBreadcrumbs && this._globalOptions.autoBreadcrumbs.sentry) { - this.captureBreadcrumb({ - category: 'sentry', - message: exception ? (exception.type ? exception.type + ': ' : '') + exception.value : data.message, - event_id: data.event_id, - level: data.level || 'error' // presume error unless specified + // If the stack trace is incomplete, wait for 2 seconds for + // slow slow IE to see if onerror occurs or not before reporting + // this exception; otherwise, we will end up with an incomplete + // stack trace + setTimeout(function() { + if (lastException === ex) { + processLastException(); + } + }, stack.incomplete ? 2000 : 0); - }); + if (rethrow !== false) { + throw ex; // re-throw to propagate to the top level (and cause window.onerror) } + } - var url = this._globalEndpoint; + report.subscribe = subscribe; + report.unsubscribe = unsubscribe; + report.uninstall = unsubscribeAll; + return report; +})(); - (globalOptions.transport || this._makeRequest).call(this, { - url: url, - auth: auth, - data: data, - options: globalOptions, - onSuccess: function success() { - self._resetBackoff(); +/** + * TraceKit.computeStackTrace: cross-browser stack traces in JavaScript + * + * Syntax: + * s = TraceKit.computeStackTrace(exception) // consider using TraceKit.report instead (see below) + * Returns: + * s.name - exception name + * s.message - exception message + * s.stack[i].url - JavaScript or HTML file URL + * s.stack[i].func - function name, or empty for anonymous functions (if guessing did not work) + * s.stack[i].args - arguments passed to the function, if known + * s.stack[i].line - line number, if known + * s.stack[i].column - column number, if known + * + * Supports: + * - Firefox: full stack trace with line numbers and unreliable column + * number on top frame + * - Opera 10: full stack trace with line and column numbers + * - Opera 9-: full stack trace with line numbers + * - Chrome: full stack trace with line and column numbers + * - Safari: line and column number for the topmost stacktrace element + * only + * - IE: no line numbers whatsoever + * + * Tries to guess names of anonymous functions by looking for assignments + * in the source code. In IE and Safari, we have to guess source file names + * by searching for function bodies inside all page scripts. This will not + * work for scripts that are loaded cross-domain. + * Here be dragons: some function names may be guessed incorrectly, and + * duplicate functions may be mismatched. + * + * TraceKit.computeStackTrace should only be used for tracing purposes. + * Logging of unhandled exceptions should be done with TraceKit.report, + * which builds on top of TraceKit.computeStackTrace and provides better + * IE support by utilizing the window.onerror event to retrieve information + * about the top of the stack. + * + * Note: In IE and Safari, no stack trace is recorded on the Error object, + * so computeStackTrace instead walks its *own* chain of callers. + * This means that: + * * in Safari, some methods may be missing from the stack trace; + * * in IE, the topmost function in the stack trace will always be the + * caller of computeStackTrace. + * + * This is okay for tracing (because you are likely to be calling + * computeStackTrace from the function you want to be the topmost element + * of the stack trace anyway), but not okay for logging unhandled + * exceptions (because your catch block will likely be far away from the + * inner function that actually caused the exception). + * + */ +TraceKit.computeStackTrace = (function computeStackTraceWrapper() { + // Contents of Exception in various browsers. + // + // SAFARI: + // ex.message = Can't find variable: qq + // ex.line = 59 + // ex.sourceId = 580238192 + // ex.sourceURL = http://... + // ex.expressionBeginOffset = 96 + // ex.expressionCaretOffset = 98 + // ex.expressionEndOffset = 98 + // ex.name = ReferenceError + // + // FIREFOX: + // ex.message = qq is not defined + // ex.fileName = http://... + // ex.lineNumber = 59 + // ex.columnNumber = 69 + // ex.stack = ...stack trace... (see the example below) + // ex.name = ReferenceError + // + // CHROME: + // ex.message = qq is not defined + // ex.name = ReferenceError + // ex.type = not_defined + // ex.arguments = ['aa'] + // ex.stack = ...stack trace... + // + // INTERNET EXPLORER: + // ex.message = ... + // ex.name = ReferenceError + // + // OPERA: + // ex.message = ...message... (see the example below) + // ex.name = ReferenceError + // ex.opera#sourceloc = 11 (pretty much useless, duplicates the info in ex.message) + // ex.stacktrace = n/a; see 'opera:config#UserPrefs|Exceptions Have Stacktrace' - self._triggerEvent('success', { - data: data, - src: url - }); + /** + * Computes stack trace information from the stack property. + * Chrome and Gecko use this property. + * @param {Error} ex + * @return {?Object.} Stack trace information. + */ + function computeStackTraceFromStackProp(ex) { + if (typeof ex.stack === 'undefined' || !ex.stack) return; - callback && callback(); - }, - onError: function failure(error) { - self._logDebug('error', 'Raven transport failed to send: ', error); + var chrome = /^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i; + var winjs = /^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i; + // NOTE: blob urls are now supposed to always have an origin, therefore it's format + // which is `blob:http://url/path/with-some-uuid`, is matched by `blob.*?:\/` as well + var gecko = /^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i; + // Used to additionally parse URL/line/column from eval frames + var geckoEval = /(\S+) line (\d+)(?: > eval line \d+)* > eval/i; + var chromeEval = /\((\S*)(?::(\d+))(?::(\d+))\)/; + var lines = ex.stack.split('\n'); + var stack = []; + var submatch; + var parts; + var element; + var reference = /^(.*) is undefined$/.exec(ex.message); - if (error.request) { - self._setBackoffState(error.request); + for (var i = 0, j = lines.length; i < j; ++i) { + if ((parts = chrome.exec(lines[i]))) { + var isNative = parts[2] && parts[2].indexOf('native') === 0; // start of line + var isEval = parts[2] && parts[2].indexOf('eval') === 0; // start of line + if (isEval && (submatch = chromeEval.exec(parts[2]))) { + // throw out eval line/column and use top-most line/column number + parts[2] = submatch[1]; // url + parts[3] = submatch[2]; // line + parts[4] = submatch[3]; // column } + element = { + url: !isNative ? parts[2] : null, + func: parts[1] || UNKNOWN_FUNCTION, + args: isNative ? [parts[2]] : [], + line: parts[3] ? +parts[3] : null, + column: parts[4] ? +parts[4] : null + }; + } else if ((parts = winjs.exec(lines[i]))) { + element = { + url: parts[2], + func: parts[1] || UNKNOWN_FUNCTION, + args: [], + line: +parts[3], + column: parts[4] ? +parts[4] : null + }; + } else if ((parts = gecko.exec(lines[i]))) { + var isEval = parts[3] && parts[3].indexOf(' > eval') > -1; + if (isEval && (submatch = geckoEval.exec(parts[3]))) { + // throw out eval line/column and use top-most line number + parts[3] = submatch[1]; + parts[4] = submatch[2]; + parts[5] = null; // no column when eval + } else if (i === 0 && !parts[5] && typeof ex.columnNumber !== 'undefined') { + // FireFox uses this awesome columnNumber property for its top frame + // Also note, Firefox's column number is 0-based and everything else expects 1-based, + // so adding 1 + // NOTE: this hack doesn't work if top-most frame is eval + stack[0].column = ex.columnNumber + 1; + } + element = { + url: parts[3], + func: parts[1] || UNKNOWN_FUNCTION, + args: parts[2] ? parts[2].split(',') : [], + line: parts[4] ? +parts[4] : null, + column: parts[5] ? +parts[5] : null + }; + } else { + continue; + } - self._triggerEvent('failure', { - data: data, - src: url - }); - - error = error || new Error('Raven send failed (no additional details provided)'); - callback && callback(error); + if (!element.func && element.line) { + element.func = UNKNOWN_FUNCTION; } - }); - }, - _makeRequest: function _makeRequest(opts) { - // Auth is intentionally sent as part of query string (NOT as custom HTTP header) to avoid preflight CORS requests - var url = opts.url + '?' + urlencode(opts.auth); - var evaluatedHeaders = null; - var evaluatedFetchParameters = {}; - if (opts.options.headers) { - evaluatedHeaders = this._evaluateHash(opts.options.headers); + stack.push(element); } - if (opts.options.fetchParameters) { - evaluatedFetchParameters = this._evaluateHash(opts.options.fetchParameters); + if (!stack.length) { + return null; } - if (supportsFetch()) { - evaluatedFetchParameters.body = stringify_1(opts.data); - var defaultFetchOptions = objectMerge({}, this._fetchDefaults); - var fetchOptions = objectMerge(defaultFetchOptions, evaluatedFetchParameters); + return { + name: ex.name, + message: ex.message, + url: getLocationHref(), + stack: stack + }; + } - if (evaluatedHeaders) { - fetchOptions.headers = evaluatedHeaders; - } + /** + * Adds information about the first frame to incomplete stack traces. + * Safari and IE require this to get complete data on the first frame. + * @param {Object.} stackInfo Stack trace information from + * one of the compute* methods. + * @param {string} url The URL of the script that caused an error. + * @param {(number|string)} lineNo The line number of the script that + * caused an error. + * @param {string=} message The error generated by the browser, which + * hopefully contains the name of the object that caused the error. + * @return {boolean} Whether or not the stack information was + * augmented. + */ + function augmentStackTraceWithInitialElement(stackInfo, url, lineNo, message) { + var initial = { + url: url, + line: lineNo + }; - return _window$1.fetch(url, fetchOptions).then(function (response) { - if (response.ok) { - opts.onSuccess && opts.onSuccess(); - } else { - var error = new Error('Sentry error code: ' + response.status); // It's called request only to keep compatibility with XHR interface - // and not add more redundant checks in setBackoffState method + if (initial.url && initial.line) { + stackInfo.incomplete = false; + + if (!initial.func) { + initial.func = UNKNOWN_FUNCTION; + } - error.request = response; - opts.onError && opts.onError(error); + if (stackInfo.stack.length > 0) { + if (stackInfo.stack[0].url === initial.url) { + if (stackInfo.stack[0].line === initial.line) { + return false; // already in stack trace + } else if ( + !stackInfo.stack[0].line && + stackInfo.stack[0].func === initial.func + ) { + stackInfo.stack[0].line = initial.line; + return false; + } } - })['catch'](function () { - opts.onError && opts.onError(new Error('Sentry error code: network unavailable')); - }); - } + } - var request = _window$1.XMLHttpRequest && new _window$1.XMLHttpRequest(); - if (!request) return; // if browser doesn't support CORS (e.g. IE7), we are out of luck + stackInfo.stack.unshift(initial); + stackInfo.partial = true; + return true; + } else { + stackInfo.incomplete = true; + } - var hasCORS = 'withCredentials' in request || typeof XDomainRequest !== 'undefined'; - if (!hasCORS) return; + return false; + } - if ('withCredentials' in request) { - request.onreadystatechange = function () { - if (request.readyState !== 4) { - return; - } else if (request.status === 200) { - opts.onSuccess && opts.onSuccess(); - } else if (opts.onError) { - var err = new Error('Sentry error code: ' + request.status); - err.request = request; - opts.onError(err); - } + /** + * Computes stack trace information by walking the arguments.caller + * chain at the time the exception occurred. This will cause earlier + * frames to be missed but is the only way to get any stack trace in + * Safari and IE. The top frame is restored by + * {@link augmentStackTraceWithInitialElement}. + * @param {Error} ex + * @return {?Object.} Stack trace information. + */ + function computeStackTraceByWalkingCallerChain(ex, depth) { + var functionName = /function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i, + stack = [], + funcs = {}, + recursion = false, + parts, + item, + source; + + for ( + var curr = computeStackTraceByWalkingCallerChain.caller; + curr && !recursion; + curr = curr.caller + ) { + if (curr === computeStackTrace || curr === TraceKit.report) { + // console.log('skipping internal function'); + continue; + } + + item = { + url: null, + func: UNKNOWN_FUNCTION, + line: null, + column: null }; - } else { - request = new XDomainRequest(); // xdomainrequest cannot go http -> https (or vice versa), - // so always use protocol relative - url = url.replace(/^https?:/, ''); // onreadystatechange not supported by XDomainRequest + if (curr.name) { + item.func = curr.name; + } else if ((parts = functionName.exec(curr.toString()))) { + item.func = parts[1]; + } - if (opts.onSuccess) { - request.onload = opts.onSuccess; + if (typeof item.func === 'undefined') { + try { + item.func = parts.input.substring(0, parts.input.indexOf('{')); + } catch (e) {} } - if (opts.onError) { - request.onerror = function () { - var err = new Error('Sentry error code: XDomainRequest'); - err.request = request; - opts.onError(err); - }; + if (funcs['' + curr]) { + recursion = true; + } else { + funcs['' + curr] = true; } - } - request.open('POST', url); + stack.push(item); + } - if (evaluatedHeaders) { - each(evaluatedHeaders, function (key, value) { - request.setRequestHeader(key, value); - }); + if (depth) { + // console.log('depth is ' + depth); + // console.log('stack is ' + stack.length); + stack.splice(0, depth); } - request.send(stringify_1(opts.data)); - }, - _evaluateHash: function _evaluateHash(hash) { - var evaluated = {}; + var result = { + name: ex.name, + message: ex.message, + url: getLocationHref(), + stack: stack + }; + augmentStackTraceWithInitialElement( + result, + ex.sourceURL || ex.fileName, + ex.line || ex.lineNumber, + ex.message || ex.description + ); + return result; + } - for (var key in hash) { - if (hash.hasOwnProperty(key)) { - var value = hash[key]; - evaluated[key] = typeof value === 'function' ? value() : value; + /** + * Computes a stack trace for an exception. + * @param {Error} ex + * @param {(string|number)=} depth + */ + function computeStackTrace(ex, depth) { + var stack = null; + depth = depth == null ? 0 : +depth; + + try { + stack = computeStackTraceFromStackProp(ex); + if (stack) { + return stack; + } + } catch (e) { + if (TraceKit.debug) { + throw e; } } - return evaluated; - }, - _logDebug: function _logDebug(level) { - if (this._originalConsoleMethods[level] && this.debug) { - // In IE<10 console methods do not have their own 'apply' method - Function.prototype.apply.call(this._originalConsoleMethods[level], this._originalConsole, [].slice.call(arguments, 1)); - } - }, - _mergeContext: function _mergeContext(key, context) { - if (isUndefined(context)) { - delete this._globalContext[key]; - } else { - this._globalContext[key] = objectMerge(this._globalContext[key] || {}, context); + try { + stack = computeStackTraceByWalkingCallerChain(ex, depth + 1); + if (stack) { + return stack; + } + } catch (e) { + if (TraceKit.debug) { + throw e; + } } + return { + name: ex.name, + message: ex.message, + url: getLocationHref() + }; } -}; // Deprecations -Raven$1.prototype.setUser = Raven$1.prototype.setUserContext; -Raven$1.prototype.setReleaseContext = Raven$1.prototype.setRelease; -var raven = Raven$1; + computeStackTrace.augmentStackTraceWithInitialElement = augmentStackTraceWithInitialElement; + computeStackTrace.computeStackTraceFromStackProp = computeStackTraceFromStackProp; -/** - * Enforces a single instance of the Raven client, and the - * main entry point for Raven. If you are a consumer of the - * Raven library, you SHOULD load this file (vs raven.js). - **/ -// This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) + return computeStackTrace; +})(); -var _window = typeof window !== 'undefined' ? window : typeof commonjsGlobal !== 'undefined' ? commonjsGlobal : typeof self !== 'undefined' ? self : {}; +module.exports = TraceKit; -var _Raven = _window.Raven; -var Raven = new raven(); +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"9":9}],11:[function(_dereq_,module,exports){ /* - * Allow multiple versions of Raven to be installed. - * Strip Raven from the global context and returns the instance. - * - * @return {Raven} - */ + json-stringify-safe + Like JSON.stringify, but doesn't throw on circular references. -Raven.noConflict = function () { - _window.Raven = _Raven; - return Raven; -}; + Originally forked from https://github.com/isaacs/json-stringify-safe + version 5.0.1 on 3/8/2017 and modified to handle Errors serialization + and IE8 compatibility. Tests for this are in test/vendor. -Raven.afterLoad(); -var singleton = Raven; + ISC license: https://github.com/isaacs/json-stringify-safe/blob/master/LICENSE +*/ -/** - * console plugin - * - * Monkey patches console.* calls into Sentry messages with - * their appropriate log levels. (Experimental) - * - * Options: - * - * `levels`: An array of levels (methods on `console`) to report to Sentry. - * Defaults to debug, info, warn, and error. - */ +exports = module.exports = stringify; +exports.getSerialize = serializer; -var wrapConsoleMethod$1 = console$1.wrapMethod; +function indexOf(haystack, needle) { + for (var i = 0; i < haystack.length; ++i) { + if (haystack[i] === needle) return i; + } + return -1; +} -function consolePlugin(Raven, console, pluginOptions) { - console = console || window.console || {}; - pluginOptions = pluginOptions || {}; - var logLevels = pluginOptions.levels || ['debug', 'info', 'warn', 'error']; - if ('assert' in console) logLevels.push('assert'); +function stringify(obj, replacer, spaces, cycleReplacer) { + return JSON.stringify(obj, serializer(replacer, cycleReplacer), spaces); +} - var callback = function callback(msg, data) { - Raven.captureMessage(msg, data); +// https://github.com/ftlabs/js-abbreviate/blob/fa709e5f139e7770a71827b1893f22418097fbda/index.js#L95-L106 +function stringifyError(value) { + var err = { + // These properties are implemented as magical getters and don't show up in for in + stack: value.stack, + message: value.message, + name: value.name }; - var level = logLevels.pop(); - - while (level) { - wrapConsoleMethod$1(console, level, callback); - level = logLevels.pop(); + for (var i in value) { + if (Object.prototype.hasOwnProperty.call(value, i)) { + err[i] = value[i]; + } } -} -var console$3 = consolePlugin; - -/** - * Ember.js plugin - * - * Patches event handler callbacks and ajax callbacks. - */ -function emberPlugin(Raven, Ember) { - Ember = Ember || window.Ember; // quit if Ember isn't on the page + return err; +} - if (!Ember) return; - var _oldOnError = Ember.onerror; +function serializer(replacer, cycleReplacer) { + var stack = []; + var keys = []; - Ember.onerror = function EmberOnError(error) { - Raven.captureException(error); + if (cycleReplacer == null) { + cycleReplacer = function(key, value) { + if (stack[0] === value) { + return '[Circular ~]'; + } + return '[Circular ~.' + keys.slice(0, indexOf(stack, value)).join('.') + ']'; + }; + } - if (typeof _oldOnError === 'function') { - _oldOnError.call(this, error); - } - }; + return function(key, value) { + if (stack.length > 0) { + var thisPos = indexOf(stack, this); + ~thisPos ? stack.splice(thisPos + 1) : stack.push(this); + ~thisPos ? keys.splice(thisPos, Infinity, key) : keys.push(key); - Ember.RSVP.on('error', function (reason) { - if (reason instanceof Error) { - Raven.captureException(reason, { - extra: { - context: 'Unhandled Promise error detected' - } - }); + if (~indexOf(stack, value)) { + value = cycleReplacer.call(this, key, value); + } } else { - Raven.captureMessage('Unhandled Promise error detected', { - extra: { - reason: reason - } - }); + stack.push(value); } - }); -} -var ember = emberPlugin; - -/*global define*/ + return replacer == null + ? value instanceof Error ? stringifyError(value) : value + : replacer.call(this, key, value); + }; +} -/** - * require.js plugin +},{}],12:[function(_dereq_,module,exports){ +/* + * JavaScript MD5 + * https://github.com/blueimp/JavaScript-MD5 * - * Automatically wrap define/require callbacks. (Experimental) + * Copyright 2011, Sebastian Tschan + * https://blueimp.net + * + * Licensed under the MIT license: + * https://opensource.org/licenses/MIT + * + * Based on + * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message + * Digest Algorithm, as defined in RFC 1321. + * Version 2.2 Copyright (C) Paul Johnston 1999 - 2009 + * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet + * Distributed under the BSD License + * See http://pajhome.org.uk/crypt/md5 for more info. */ -function requirePlugin(Raven) { - if (typeof undefined === 'function' && undefined.amd) { - window.define = Raven.wrap({ - deep: false - }, undefined); - window.require = Raven.wrap({ - deep: false - }, commonjsRequire); - } +/* +* Add integers, wrapping at 2^32. This uses 16-bit operations internally +* to work around bugs in some JS interpreters. +*/ +function safeAdd(x, y) { + var lsw = (x & 0xffff) + (y & 0xffff); + var msw = (x >> 16) + (y >> 16) + (lsw >> 16); + return (msw << 16) | (lsw & 0xffff); } -var require_1 = requirePlugin; +/* +* Bitwise rotate a 32-bit number to the left. +*/ +function bitRotateLeft(num, cnt) { + return (num << cnt) | (num >>> (32 - cnt)); +} -/** - * Vue.js 2.0 plugin - * - */ -function formatComponentName(vm) { - if (vm.$root === vm) { - return 'root instance'; +/* +* These functions implement the four basic operations the algorithm uses. +*/ +function md5cmn(q, a, b, x, s, t) { + return safeAdd(bitRotateLeft(safeAdd(safeAdd(a, q), safeAdd(x, t)), s), b); +} +function md5ff(a, b, c, d, x, s, t) { + return md5cmn((b & c) | (~b & d), a, b, x, s, t); +} +function md5gg(a, b, c, d, x, s, t) { + return md5cmn((b & d) | (c & ~d), a, b, x, s, t); +} +function md5hh(a, b, c, d, x, s, t) { + return md5cmn(b ^ c ^ d, a, b, x, s, t); +} +function md5ii(a, b, c, d, x, s, t) { + return md5cmn(c ^ (b | ~d), a, b, x, s, t); +} + +/* +* Calculate the MD5 of an array of little-endian words, and a bit length. +*/ +function binlMD5(x, len) { + /* append padding */ + x[len >> 5] |= 0x80 << (len % 32); + x[(((len + 64) >>> 9) << 4) + 14] = len; + + var i; + var olda; + var oldb; + var oldc; + var oldd; + var a = 1732584193; + var b = -271733879; + var c = -1732584194; + var d = 271733878; + + for (i = 0; i < x.length; i += 16) { + olda = a; + oldb = b; + oldc = c; + oldd = d; + + a = md5ff(a, b, c, d, x[i], 7, -680876936); + d = md5ff(d, a, b, c, x[i + 1], 12, -389564586); + c = md5ff(c, d, a, b, x[i + 2], 17, 606105819); + b = md5ff(b, c, d, a, x[i + 3], 22, -1044525330); + a = md5ff(a, b, c, d, x[i + 4], 7, -176418897); + d = md5ff(d, a, b, c, x[i + 5], 12, 1200080426); + c = md5ff(c, d, a, b, x[i + 6], 17, -1473231341); + b = md5ff(b, c, d, a, x[i + 7], 22, -45705983); + a = md5ff(a, b, c, d, x[i + 8], 7, 1770035416); + d = md5ff(d, a, b, c, x[i + 9], 12, -1958414417); + c = md5ff(c, d, a, b, x[i + 10], 17, -42063); + b = md5ff(b, c, d, a, x[i + 11], 22, -1990404162); + a = md5ff(a, b, c, d, x[i + 12], 7, 1804603682); + d = md5ff(d, a, b, c, x[i + 13], 12, -40341101); + c = md5ff(c, d, a, b, x[i + 14], 17, -1502002290); + b = md5ff(b, c, d, a, x[i + 15], 22, 1236535329); + + a = md5gg(a, b, c, d, x[i + 1], 5, -165796510); + d = md5gg(d, a, b, c, x[i + 6], 9, -1069501632); + c = md5gg(c, d, a, b, x[i + 11], 14, 643717713); + b = md5gg(b, c, d, a, x[i], 20, -373897302); + a = md5gg(a, b, c, d, x[i + 5], 5, -701558691); + d = md5gg(d, a, b, c, x[i + 10], 9, 38016083); + c = md5gg(c, d, a, b, x[i + 15], 14, -660478335); + b = md5gg(b, c, d, a, x[i + 4], 20, -405537848); + a = md5gg(a, b, c, d, x[i + 9], 5, 568446438); + d = md5gg(d, a, b, c, x[i + 14], 9, -1019803690); + c = md5gg(c, d, a, b, x[i + 3], 14, -187363961); + b = md5gg(b, c, d, a, x[i + 8], 20, 1163531501); + a = md5gg(a, b, c, d, x[i + 13], 5, -1444681467); + d = md5gg(d, a, b, c, x[i + 2], 9, -51403784); + c = md5gg(c, d, a, b, x[i + 7], 14, 1735328473); + b = md5gg(b, c, d, a, x[i + 12], 20, -1926607734); + + a = md5hh(a, b, c, d, x[i + 5], 4, -378558); + d = md5hh(d, a, b, c, x[i + 8], 11, -2022574463); + c = md5hh(c, d, a, b, x[i + 11], 16, 1839030562); + b = md5hh(b, c, d, a, x[i + 14], 23, -35309556); + a = md5hh(a, b, c, d, x[i + 1], 4, -1530992060); + d = md5hh(d, a, b, c, x[i + 4], 11, 1272893353); + c = md5hh(c, d, a, b, x[i + 7], 16, -155497632); + b = md5hh(b, c, d, a, x[i + 10], 23, -1094730640); + a = md5hh(a, b, c, d, x[i + 13], 4, 681279174); + d = md5hh(d, a, b, c, x[i], 11, -358537222); + c = md5hh(c, d, a, b, x[i + 3], 16, -722521979); + b = md5hh(b, c, d, a, x[i + 6], 23, 76029189); + a = md5hh(a, b, c, d, x[i + 9], 4, -640364487); + d = md5hh(d, a, b, c, x[i + 12], 11, -421815835); + c = md5hh(c, d, a, b, x[i + 15], 16, 530742520); + b = md5hh(b, c, d, a, x[i + 2], 23, -995338651); + + a = md5ii(a, b, c, d, x[i], 6, -198630844); + d = md5ii(d, a, b, c, x[i + 7], 10, 1126891415); + c = md5ii(c, d, a, b, x[i + 14], 15, -1416354905); + b = md5ii(b, c, d, a, x[i + 5], 21, -57434055); + a = md5ii(a, b, c, d, x[i + 12], 6, 1700485571); + d = md5ii(d, a, b, c, x[i + 3], 10, -1894986606); + c = md5ii(c, d, a, b, x[i + 10], 15, -1051523); + b = md5ii(b, c, d, a, x[i + 1], 21, -2054922799); + a = md5ii(a, b, c, d, x[i + 8], 6, 1873313359); + d = md5ii(d, a, b, c, x[i + 15], 10, -30611744); + c = md5ii(c, d, a, b, x[i + 6], 15, -1560198380); + b = md5ii(b, c, d, a, x[i + 13], 21, 1309151649); + a = md5ii(a, b, c, d, x[i + 4], 6, -145523070); + d = md5ii(d, a, b, c, x[i + 11], 10, -1120210379); + c = md5ii(c, d, a, b, x[i + 2], 15, 718787259); + b = md5ii(b, c, d, a, x[i + 9], 21, -343485551); + + a = safeAdd(a, olda); + b = safeAdd(b, oldb); + c = safeAdd(c, oldc); + d = safeAdd(d, oldd); } + return [a, b, c, d]; +} - var name = vm._isVue ? vm.$options.name || vm.$options._componentTag : vm.name; - return (name ? 'component <' + name + '>' : 'anonymous component') + (vm._isVue && vm.$options.__file ? ' at ' + vm.$options.__file : ''); +/* +* Convert an array of little-endian words to a string +*/ +function binl2rstr(input) { + var i; + var output = ''; + var length32 = input.length * 32; + for (i = 0; i < length32; i += 8) { + output += String.fromCharCode((input[i >> 5] >>> (i % 32)) & 0xff); + } + return output; } -function vuePlugin(Raven, Vue) { - Vue = Vue || window.Vue; // quit if Vue isn't on the page +/* +* Convert a raw string to an array of little-endian words +* Characters >255 have their high-byte silently ignored. +*/ +function rstr2binl(input) { + var i; + var output = []; + output[(input.length >> 2) - 1] = undefined; + for (i = 0; i < output.length; i += 1) { + output[i] = 0; + } + var length8 = input.length * 8; + for (i = 0; i < length8; i += 8) { + output[i >> 5] |= (input.charCodeAt(i / 8) & 0xff) << (i % 32); + } + return output; +} - if (!Vue || !Vue.config) return; - var _oldOnError = Vue.config.errorHandler; +/* +* Calculate the MD5 of a raw string +*/ +function rstrMD5(s) { + return binl2rstr(binlMD5(rstr2binl(s), s.length * 8)); +} - Vue.config.errorHandler = function VueErrorHandler(error, vm, info) { - var metaData = {}; // vm and lifecycleHook are not always available +/* +* Calculate the HMAC-MD5, of a key and some data (raw strings) +*/ +function rstrHMACMD5(key, data) { + var i; + var bkey = rstr2binl(key); + var ipad = []; + var opad = []; + var hash; + ipad[15] = opad[15] = undefined; + if (bkey.length > 16) { + bkey = binlMD5(bkey, key.length * 8); + } + for (i = 0; i < 16; i += 1) { + ipad[i] = bkey[i] ^ 0x36363636; + opad[i] = bkey[i] ^ 0x5c5c5c5c; + } + hash = binlMD5(ipad.concat(rstr2binl(data)), 512 + data.length * 8); + return binl2rstr(binlMD5(opad.concat(hash), 512 + 128)); +} - if (Object.prototype.toString.call(vm) === '[object Object]') { - metaData.componentName = formatComponentName(vm); - metaData.propsData = vm.$options.propsData; - } +/* +* Convert a raw string to a hex string +*/ +function rstr2hex(input) { + var hexTab = '0123456789abcdef'; + var output = ''; + var x; + var i; + for (i = 0; i < input.length; i += 1) { + x = input.charCodeAt(i); + output += hexTab.charAt((x >>> 4) & 0x0f) + hexTab.charAt(x & 0x0f); + } + return output; +} - if (typeof info !== 'undefined') { - metaData.lifecycleHook = info; - } +/* +* Encode a string as utf-8 +*/ +function str2rstrUTF8(input) { + return unescape(encodeURIComponent(input)); +} - Raven.captureException(error, { - extra: metaData - }); +/* +* Take string arguments and return either raw or hex encoded strings +*/ +function rawMD5(s) { + return rstrMD5(str2rstrUTF8(s)); +} +function hexMD5(s) { + return rstr2hex(rawMD5(s)); +} +function rawHMACMD5(k, d) { + return rstrHMACMD5(str2rstrUTF8(k), str2rstrUTF8(d)); +} +function hexHMACMD5(k, d) { + return rstr2hex(rawHMACMD5(k, d)); +} - if (typeof _oldOnError === 'function') { - _oldOnError.call(this, error, vm, info); +function md5(string, key, raw) { + if (!key) { + if (!raw) { + return hexMD5(string); } - }; + return rawMD5(string); + } + if (!raw) { + return hexHMACMD5(key, string); + } + return rawHMACMD5(key, string); } -var vue = vuePlugin; - -/* This file was generated by './scripts/generate-plugin-combinations.js'! */ - -singleton.addPlugin(console$3).addPlugin(ember).addPlugin(require_1).addPlugin(vue); -var console_ember_require_vue = {}; - -return console_ember_require_vue; +module.exports = md5; -}))); +},{}]},{},[8,1,2,3,4])(8) +}); \ No newline at end of file diff --git a/dist/console,ember,require,vue/raven.min.js b/dist/console,ember,require,vue/raven.min.js index f562c23af398..ffeedbdf37ca 100644 --- a/dist/console,ember,require,vue/raven.min.js +++ b/dist/console,ember,require,vue/raven.min.js @@ -1,3 +1,4 @@ -/*! Raven.js 3.22.2 (1b6187b) | github.com/getsentry/raven-js */ -!function(a,b){"object"==typeof exports&&"undefined"!=typeof module?module.exports=b():"function"==typeof define&&define.amd?define(b):a.Raven=b()}(this,function(){"use strict";function a(a,b){return b={exports:{}},a(b,b.exports),b.exports}function b(a){return(b="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(a){return typeof a}:function(a){return a&&"function"==typeof Symbol&&a.constructor===Symbol&&a!==Symbol.prototype?"symbol":typeof a})(a)}function c(a){return"object"===b(a)&&null!==a}function d(a){switch({}.toString.call(a)){case"[object Error]":return!0;case"[object Exception]":return!0;case"[object DOMException]":return!0;default:return a instanceof Error}}function e(a){return l()&&"[object ErrorEvent]"==={}.toString.call(a)}function f(a){return void 0===a}function g(a){return"function"==typeof a}function h(a){return"[object Object]"===Object.prototype.toString.call(a)}function i(a){return"[object String]"===Object.prototype.toString.call(a)}function j(a){return"[object Array]"===Object.prototype.toString.call(a)}function k(a){if(!h(a))return!1;for(var b in a)if(a.hasOwnProperty(b))return!1;return!0}function l(){try{return new ErrorEvent(""),!0}catch(a){return!1}}function m(){if(!("fetch"in R))return!1;try{return new Headers,new Request(""),new Response,!0}catch(a){return!1}}function n(a){function b(b,c){var d=a(b)||b;return c?c(d)||d:d}return b}function o(a,b){var c,d;if(f(a.length))for(c in a)s(a,c)&&b.call(null,c,a[c]);else if(d=a.length)for(c=0;c ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function y(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&i(b))for(c=b.split(/\s+/),f=0;f":"anonymous component")+(a._isVue&&a.$options.__file?" at "+a.$options.__file:"")}function O(a,b){if(b=b||window.Vue,b&&b.config){var c=b.config.errorHandler;b.config.errorHandler=function(b,d,e){var f={};"[object Object]"===Object.prototype.toString.call(d)&&(f.componentName=N(d),f.propsData=d.$options.propsData),"undefined"!=typeof e&&(f.lifecycleHook=e),a.captureException(b,{extra:f}),"function"==typeof c&&c.call(this,b,d,e)}}}var P="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{},Q=Object.setPrototypeOf||function(a,b){return a.B=b,a},R=("object"==typeof Reflect&&Reflect.construct||function(a,b,c){var d,e=[null];return e.push.apply(e,b),d=a.bind.apply(a,e),Q(new d,c.prototype)},"undefined"!=typeof window?window:"undefined"!=typeof P?P:"undefined"!=typeof self?self:{}),S={isObject:c,isError:d,isErrorEvent:e,isUndefined:f,isFunction:g,isPlainObject:h,isString:i,isArray:j,isEmptyObject:k,supportsErrorEvent:l,supportsFetch:m,wrappedCallback:n,each:o,objectMerge:p,truncate:r,objectFrozen:q,hasKey:s,joinRegExp:t,urlencode:u,uuid4:w,htmlTreeAsString:x,htmlElementAsString:y,isSameException:B,isSameStacktrace:C,parseUrl:v,fill:D,safeJoin:E},T={collectWindowErrors:!0,debug:!1},U="undefined"!=typeof window?window:"undefined"!=typeof P?P:"undefined"!=typeof self?self:{},V=[].slice,W="?",X=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;T.report=function(){function a(a){f(),l.push(a)}function b(a){for(var b=l.length-1;b>=0;--b)l[b]===a&&l.splice(b,1)}function c(){g(),l=[]}function d(a,b){var c=null;if(!b||T.collectWindowErrors){for(var d in l)if(l.hasOwnProperty(d))try{l[d].apply(null,[a].concat(V.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function e(a,b,c,e,f){var g=null,i=S.isErrorEvent(f)?f.error:f,k=S.isErrorEvent(a)?a.message:a;if(o)T.computeStackTrace.augmentStackTraceWithInitialElement(o,b,c,k),h();else if(i&&S.isError(i))g=T.computeStackTrace(i),d(g,!0);else{var l,m={url:b,line:c,column:e},n=void 0;if("[object String]"==={}.toString.call(k)){var l=k.match(X);l&&(n=l[1],k=l[2])}m.func=W,g={name:n,message:k,url:F(),stack:[m]},d(g,!0)}return!!j&&j.apply(this,arguments)}function f(){k||(j=U.onerror,U.onerror=e,k=!0)}function g(){k&&(U.onerror=j,k=!1,j=void 0)}function h(){var a=o,b=m;m=null,o=null,n=null,d.apply(null,[a,!1].concat(b))}function i(a,b){var c=V.call(arguments,1);if(o){if(n===a)return;h()}var d=T.computeStackTrace(a);if(o=d,n=a,m=c,setTimeout(function(){n===a&&h()},d.incomplete?2e3:0),b!==!1)throw a}var j,k,l=[],m=null,n=null,o=null;return i.subscribe=a,i.unsubscribe=b,i.uninstall=c,i}(),T.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,d,e=/^\s*at (.*?) ?\(((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,f=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|\[native).*?|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,g=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,h=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,i=/\((\S*)(?::(\d+))(?::(\d+))\)/,j=a.stack.split("\n"),k=[],l=(/^(.*) is undefined$/.exec(a.message),0),m=j.length;l eval")>-1;o&&(b=h.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==l||c[5]||"undefined"==typeof a.columnNumber||(k[0].column=a.columnNumber+1),d={url:c[3],func:c[1]||W,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}!d.func&&d.line&&(d.func=W),k.push(d)}return k.length?{name:a.name,message:a.message,url:F(),stack:k}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=W),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,e){for(var f,g,h=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,i=[],j={},k=!1,l=c.caller;l&&!k;l=l.caller)if(l!==d&&l!==T.report){if(g={url:null,func:W,line:null,column:null},l.name?g.func=l.name:(f=h.exec(l.toString()))&&(g.func=f[1]),"undefined"==typeof g.func)try{g.func=f.input.substring(0,f.input.indexOf("{"))}catch(m){}j[""+l]?k=!0:j[""+l]=!0,i.push(g)}e&&i.splice(0,e);var n={name:a.name,message:a.message,url:F(),stack:i};return b(n,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),n}function d(b,d){var e=null;d=null==d?0:+d;try{if(e=a(b))return e}catch(f){if(T.debug)throw f}try{if(e=c(b,d+1))return e}catch(f){if(T.debug)throw f}return{name:b.name,message:b.message,url:F()}}return d.augmentStackTraceWithInitialElement=b,d.computeStackTraceFromStackProp=a,d}();var Y=T,Z=a(function(a,b){function c(a,b){for(var c=0;c0){var i=c(d,this);~i?d.splice(i+1):d.push(this),~i?f.splice(i,1/0,g):f.push(g),~c(d,h)&&(h=b.call(this,g,h))}else d.push(h);return null==a?h instanceof Error?e(h):h:a.call(this,g,h)}}b=a.exports=d,b.getSerialize=f});G.prototype=new Error,G.prototype.constructor=G;var $=G,_=function(a,b,c){var d=a[b],e=a;if(b in a){var f="warn"===b?"warning":b;a[b]=function(){var a=[].slice.call(arguments),g=S.safeJoin(a," "),h={level:f,logger:"console",extra:{arguments:a}};"assert"===b?a[0]===!1&&(g="Assertion failed: "+(S.safeJoin(a.slice(1)," ")||"console.assert"),h.extra.arguments=a.slice(1),c&&c(g,h)):c&&c(g,h),d&&Function.prototype.apply.call(d,e,a)}}},aa={wrapMethod:_},ba=S.isError,ca=S.isObject,da=S.isErrorEvent,ea=S.isUndefined,fa=S.isFunction,ga=S.isString,ha=S.isArray,ia=S.isEmptyObject,ja=S.each,ka=S.objectMerge,la=S.truncate,ma=S.objectFrozen,na=S.hasKey,oa=S.joinRegExp,pa=S.urlencode,qa=S.uuid4,ra=S.htmlTreeAsString,sa=S.isSameException,ta=S.isSameStacktrace,ua=S.parseUrl,va=S.fill,wa=S.supportsFetch,xa=aa.wrapMethod,ya="source protocol user pass host port path".split(" "),za=/^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/,Aa="undefined"!=typeof window?window:"undefined"!=typeof P?P:"undefined"!=typeof self?self:{},Ba=Aa.document,Ca=Aa.navigator;J.prototype={VERSION:"3.22.2",debug:!1,TraceKit:Y,config:function(a,b){var c=this;if(c.i)return this.C("error","Error: Raven has already been configured"),c;if(!a)return c;var d=c.m;b&&ja(b,function(a,b){"tags"===a||"extra"===a||"user"===a?c.l[a]=b:d[a]=b}),c.setDSN(a),d.ignoreErrors.push(/^Script error\.?$/),d.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/),d.ignoreErrors=oa(d.ignoreErrors),d.ignoreUrls=!!d.ignoreUrls.length&&oa(d.ignoreUrls),d.whitelistUrls=!!d.whitelistUrls.length&&oa(d.whitelistUrls),d.includePaths=oa(d.includePaths),d.maxBreadcrumbs=Math.max(0,Math.min(d.maxBreadcrumbs||100,100));var e={xhr:!0,console:!0,dom:!0,location:!0,sentry:!0},f=d.autoBreadcrumbs;"[object Object]"==={}.toString.call(f)?f=ka(e,f):f!==!1&&(f=e),d.autoBreadcrumbs=f;var g={tryCatch:!0},h=d.instrument;return"[object Object]"==={}.toString.call(h)?h=ka(g,h):h!==!1&&(h=g),d.instrument=h,Y.collectWindowErrors=!!d.collectWindowErrors,c},install:function(){var a=this;return a.isSetup()&&!a.p&&(Y.report.subscribe(function(){a.D.apply(a,arguments)}),a.E(),a.m.instrument&&a.m.instrument.tryCatch&&a.F(),a.m.autoBreadcrumbs&&a.G(),a.H(),a.p=!0),Error.stackTraceLimit=a.m.stackTraceLimit,this},setDSN:function(a){var b=this,c=b.I(a),d=c.path.lastIndexOf("/"),e=c.path.substr(1,d);b.J=a,b.j=c.user,b.K=c.pass&&c.pass.substr(1),b.k=c.path.substr(d+1),b.i=b.L(c),b.M=b.i+"/"+e+"api/"+b.k+"/store/",this.A()},context:function(a,b,c){return fa(a)&&(c=b||[],b=a,a=void 0),this.wrap(a,b).apply(this,c)},wrap:function(a,b,c){function d(){var d=[],f=arguments.length,g=!a||a&&a.deep!==!1;for(c&&fa(c)&&c.apply(this,arguments);f--;)d[f]=g?e.wrap(a,arguments[f]):arguments[f];try{return b.apply(this,d)}catch(h){throw e.N(),e.captureException(h,a),h}}var e=this;if(ea(b)&&!fa(a))return a;if(fa(a)&&(b=a,a=void 0),!fa(b))return b;try{if(b.a)return b;if(b.O)return b.O}catch(f){return b}for(var g in b)na(b,g)&&(d[g]=b[g]);return d.prototype=b.prototype,b.O=d,d.a=!0,d.b=b,d},uninstall:function(){return Y.report.uninstall(),this.P(),this.Q(),this.R(),Error.stackTraceLimit=this.q,this.p=!1,this},captureException:function(a,b){b=ka({trimHeadFrames:0},b?b:{});var c=!ba(a),d=!da(a),e=da(a)&&!a.error;if(c&&d||e)return this.captureMessage(a,ka(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}));da(a)&&(a=a.error),this.f=a;try{var f=Y.computeStackTrace(a);this.S(f,b)}catch(g){if(a!==g)throw g}return this},captureMessage:function(a,b){if(!this.m.ignoreErrors.test||!this.m.ignoreErrors.test(a)){b=b||{};var c,d=ka({message:a+""},b);try{throw new Error(a)}catch(e){c=e}c.name=null;var f=Y.computeStackTrace(c),g=ha(f.stack)&&f.stack[1],h=g&&g.url||"";if((!this.m.ignoreUrls.test||!this.m.ignoreUrls.test(h))&&(!this.m.whitelistUrls.test||this.m.whitelistUrls.test(h))){if(this.m.stacktrace||b&&b.stacktrace){b=ka({fingerprint:a,trimHeadFrames:(b.trimHeadFrames||0)+1},b);var i=this.T(f,b);d.stacktrace={frames:i.reverse()}}return this.U(d),this}}},captureBreadcrumb:function(a){var b=ka({timestamp:H()/1e3},a);if(fa(this.m.breadcrumbCallback)){var c=this.m.breadcrumbCallback(b);if(ca(c)&&!ia(c))b=c;else if(c===!1)return this}return this.w.push(b),this.w.length>this.m.maxBreadcrumbs&&this.w.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.t.push([a,b]),this.p&&this.H(),this},setUserContext:function(a){return this.l.user=a,this},setExtraContext:function(a){return this.V("extra",a),this},setTagsContext:function(a){return this.V("tags",a),this},clearContext:function(){return this.l={},this},getContext:function(){return JSON.parse(Z(this.l))},setEnvironment:function(a){return this.m.environment=a,this},setRelease:function(a){return this.m.release=a,this},setDataCallback:function(a){var b=this.m.dataCallback;return this.m.dataCallback=I(b,a),this},setBreadcrumbCallback:function(a){var b=this.m.breadcrumbCallback;return this.m.breadcrumbCallback=I(b,a),this},setShouldSendCallback:function(a){var b=this.m.shouldSendCallback;return this.m.shouldSendCallback=I(b,a),this},setTransport:function(a){return this.m.transport=a,this},lastException:function(){return this.f},lastEventId:function(){return this.h},isSetup:function(){return!!this.c&&(!!this.i||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.C("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=Aa.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(Ba){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new $("Missing eventId");var c=a.dsn||this.J;if(!c)throw new $("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.l.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.L(this.I(c)),h=Ba.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(Ba.head||Ba.body).appendChild(h)}},N:function(){var a=this;this.o+=1,setTimeout(function(){a.o-=1})},W:function(a,b){var c,d;if(this.d){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),Ba.createEvent?(c=Ba.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=Ba.createEventObject(),c.eventType=a);for(d in b)na(b,d)&&(c[d]=b[d]);if(Ba.createEvent)Ba.dispatchEvent(c);else try{Ba.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},X:function(a){var b=this;return function(c){if(b.Y=null,b.x!==c){b.x=c;var d;try{d=ra(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},Z:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.Y;g||a.X("input")(c),clearTimeout(g),a.Y=setTimeout(function(){a.Y=null},b)}}},$:function(a,b){var c=ua(this.y.href),d=ua(b),e=ua(a);this.z=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},E:function(){var a=this;a._=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.a?a._.apply(this.b,arguments):a._.apply(this,arguments)}},P:function(){this._&&(Function.prototype.toString=this._)},F:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.$(b.z,c+""),a.apply(this,arguments)}};va(history,"pushState",j,d),va(history,"replaceState",j,d)}if(c.console&&"console"in Aa&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};ja(["debug","info","warn","error","log"],function(a,b){xa(console,b,k)})}},Q:function(){for(var a;this.v.length;){a=this.v.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},R:function(){for(var a in this.s)this.r[a]=this.s[a]},H:function(){var a=this;ja(this.t,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},I:function(a){var b=za.exec(a),c={},d=7;try{for(;d--;)c[ya[d]]=b[d]||""}catch(e){throw new $("Invalid DSN: "+a)}if(c.pass&&!this.m.allowSecretKey)throw new $("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},L:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},D:function(){this.o||this.S.apply(this,arguments)},S:function(a,b){var c=this.T(a,b);this.W("handle",{stackInfo:a,options:b}),this.ba(a.name,a.message,a.url,a.lineno,c,b)},T:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(ja(a.stack,function(b,e){var f=c.ca(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.w,0)}),this.l.user&&(a.user=this.l.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||ia(a[b]))&&delete a[b]}),fa(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!ia(a)&&(!fa(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.ia()?void this.C("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random()":"anonymous component")+(a._isVue&&a.$options.__file?" at "+a.$options.__file:"")}function e(a,b){if(b=b||window.Vue,b&&b.config){var c=b.config.errorHandler;b.config.errorHandler=function(b,e,f){var g={};"[object Object]"===Object.prototype.toString.call(e)&&(g.componentName=d(e),g.propsData=e.$options.propsData),"undefined"!=typeof f&&(g.lifecycleHook=f),a.captureException(b,{extra:g}),"function"==typeof c&&c.call(this,b,e,f)}}}b.exports=e,a(8).addPlugin(b.exports)},{8:8}],5:[function(a,b,c){function d(a){this.name="RavenConfigError",this.message=a}d.prototype=new Error,d.prototype.constructor=d,b.exports=d},{}],6:[function(a,b,c){var d=a(9),e=function(a,b,c){var e=a[b],f=a;if(b in a){var g="warn"===b?"warning":b;a[b]=function(){var a=[].slice.call(arguments),h=d.safeJoin(a," "),i={level:g,logger:"console",extra:{arguments:a}};"assert"===b?a[0]===!1&&(h="Assertion failed: "+(d.safeJoin(a.slice(1)," ")||"console.assert"),i.extra.arguments=a.slice(1),c&&c(h,i)):c&&c(h,i),e&&Function.prototype.apply.call(e,f,a)}}};b.exports={wrapMethod:e}},{9:9}],7:[function(a,b,c){(function(c){function d(){return+new Date}function e(a,b){return q(b)?function(c){return b(c,a)}:b}function f(){this.a=!("object"!=typeof JSON||!JSON.stringify),this.b=!p(Q),this.c=!p(R),this.d=null,this.e=null,this.f=null,this.g=null,this.h=null,this.i=null,this.j={},this.k={release:P.SENTRY_RELEASE&&P.SENTRY_RELEASE.id,logger:"javascript",ignoreErrors:[],ignoreUrls:[],whitelistUrls:[],includePaths:[],headers:null,collectWindowErrors:!0,captureUnhandledRejections:!0,maxMessageLength:0,maxUrlLength:250,stackTraceLimit:50,autoBreadcrumbs:!0,instrument:!0,sampleRate:1,sanitizeKeys:[]},this.l={method:"POST",keepalive:!0,referrerPolicy:I()?"origin":""},this.m=0,this.n=!1,this.o=Error.stackTraceLimit,this.p=P.console||{},this.q={},this.r=[],this.s=d(),this.t=[],this.u=[],this.v=null,this.w=P.location,this.x=this.w&&this.w.href,this.y();for(var a in this.p)this.q[a]=this.p[a]}var g=a(10),h=a(11),i=a(12),j=a(5),k=a(9),l=k.isError,m=k.isObject,n=k.isPlainObject,o=k.isErrorEvent,p=k.isUndefined,q=k.isFunction,r=k.isString,s=k.isArray,t=k.isEmptyObject,u=k.each,v=k.objectMerge,w=k.truncate,x=k.objectFrozen,y=k.hasKey,z=k.joinRegExp,A=k.urlencode,B=k.uuid4,C=k.htmlTreeAsString,D=k.isSameException,E=k.isSameStacktrace,F=k.parseUrl,G=k.fill,H=k.supportsFetch,I=k.supportsReferrerPolicy,J=k.serializeKeysForMessage,K=k.serializeException,L=k.sanitize,M=a(6).wrapMethod,N="source protocol user pass host port path".split(" "),O=/^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/,P="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},Q=P.document,R=P.navigator;f.prototype={VERSION:"3.24.2",debug:!1,TraceKit:g,config:function(a,b){var c=this;if(c.g)return this.z("error","Error: Raven has already been configured"),c;if(!a)return c;var d=c.k;b&&u(b,function(a,b){"tags"===a||"extra"===a||"user"===a?c.j[a]=b:d[a]=b}),c.setDSN(a),d.ignoreErrors.push(/^Script error\.?$/),d.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/),d.ignoreErrors=z(d.ignoreErrors),d.ignoreUrls=!!d.ignoreUrls.length&&z(d.ignoreUrls),d.whitelistUrls=!!d.whitelistUrls.length&&z(d.whitelistUrls),d.includePaths=z(d.includePaths),d.maxBreadcrumbs=Math.max(0,Math.min(d.maxBreadcrumbs||100,100));var e={xhr:!0,console:!0,dom:!0,location:!0,sentry:!0},f=d.autoBreadcrumbs;"[object Object]"==={}.toString.call(f)?f=v(e,f):f!==!1&&(f=e),d.autoBreadcrumbs=f;var h={tryCatch:!0},i=d.instrument;return"[object Object]"==={}.toString.call(i)?i=v(h,i):i!==!1&&(i=h),d.instrument=i,g.collectWindowErrors=!!d.collectWindowErrors,c},install:function(){var a=this;return a.isSetup()&&!a.n&&(g.report.subscribe(function(){a.A.apply(a,arguments)}),a.k.captureUnhandledRejections&&a.B(),a.C(),a.k.instrument&&a.k.instrument.tryCatch&&a.D(),a.k.autoBreadcrumbs&&a.E(),a.F(),a.n=!0),Error.stackTraceLimit=a.k.stackTraceLimit,this},setDSN:function(a){var b=this,c=b.G(a),d=c.path.lastIndexOf("/"),e=c.path.substr(1,d);b.H=a,b.h=c.user,b.I=c.pass&&c.pass.substr(1),b.i=c.path.substr(d+1),b.g=b.J(c),b.K=b.g+"/"+e+"api/"+b.i+"/store/",this.y()},context:function(a,b,c){return q(a)&&(c=b||[],b=a,a=void 0),this.wrap(a,b).apply(this,c)},wrap:function(a,b,c){function d(){var d=[],f=arguments.length,g=!a||a&&a.deep!==!1;for(c&&q(c)&&c.apply(this,arguments);f--;)d[f]=g?e.wrap(a,arguments[f]):arguments[f];try{return b.apply(this,d)}catch(h){throw e.L(),e.captureException(h,a),h}}var e=this;if(p(b)&&!q(a))return a;if(q(a)&&(b=a,a=void 0),!q(b))return b;try{if(b.M)return b;if(b.N)return b.N}catch(f){return b}for(var g in b)y(b,g)&&(d[g]=b[g]);return d.prototype=b.prototype,b.N=d,d.M=!0,d.O=b,d},uninstall:function(){return g.report.uninstall(),this.P(),this.Q(),this.R(),this.S(),Error.stackTraceLimit=this.o,this.n=!1,this},T:function(a){this.z("debug","Raven caught unhandled promise rejection:",a),this.captureException(a.reason,{extra:{unhandledPromiseRejection:!0}})},B:function(){return this.T=this.T.bind(this),P.addEventListener&&P.addEventListener("unhandledrejection",this.T),this},P:function(){return P.removeEventListener&&P.removeEventListener("unhandledrejection",this.T),this},captureException:function(a,b){if(b=v({trimHeadFrames:0},b?b:{}),o(a)&&a.error)a=a.error;else if(l(a))a=a;else{if(!n(a))return this.captureMessage(a,v(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}));b=this.U(b,a),a=new Error(b.message)}this.d=a;try{var c=g.computeStackTrace(a);this.V(c,b)}catch(d){if(a!==d)throw d}return this},U:function(a,b){var c=Object.keys(b).sort(),d=v(a,{message:"Non-Error exception captured with keys: "+J(c),fingerprint:[i(c)],extra:a.extra||{}});return d.extra.W=K(b),d},captureMessage:function(a,b){if(!this.k.ignoreErrors.test||!this.k.ignoreErrors.test(a)){b=b||{},a+="";var c,d=v({message:a},b);try{throw new Error(a)}catch(e){c=e}c.name=null;var f=g.computeStackTrace(c),h=s(f.stack)&&f.stack[1];h&&"Raven.captureException"===h.func&&(h=f.stack[2]);var i=h&&h.url||"";if((!this.k.ignoreUrls.test||!this.k.ignoreUrls.test(i))&&(!this.k.whitelistUrls.test||this.k.whitelistUrls.test(i))){if(this.k.stacktrace||b&&b.stacktrace){d.fingerprint=null==d.fingerprint?a:d.fingerprint,b=v({trimHeadFrames:0},b),b.trimHeadFrames+=1;var j=this.X(f,b);d.stacktrace={frames:j.reverse()}}return d.fingerprint&&(d.fingerprint=s(d.fingerprint)?d.fingerprint:[d.fingerprint]),this.Y(d),this}}},captureBreadcrumb:function(a){var b=v({timestamp:d()/1e3},a);if(q(this.k.breadcrumbCallback)){var c=this.k.breadcrumbCallback(b);if(m(c)&&!t(c))b=c;else if(c===!1)return this}return this.u.push(b),this.u.length>this.k.maxBreadcrumbs&&this.u.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.r.push([a,b]),this.n&&this.F(),this},setUserContext:function(a){return this.j.user=a,this},setExtraContext:function(a){return this.Z("extra",a),this},setTagsContext:function(a){return this.Z("tags",a),this},clearContext:function(){return this.j={},this},getContext:function(){return JSON.parse(h(this.j))},setEnvironment:function(a){return this.k.environment=a,this},setRelease:function(a){return this.k.release=a,this},setDataCallback:function(a){var b=this.k.dataCallback;return this.k.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.k.breadcrumbCallback;return this.k.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.k.shouldSendCallback;return this.k.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.k.transport=a,this},lastException:function(){return this.d},lastEventId:function(){return this.f},isSetup:function(){return!!this.a&&(!!this.g||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.z("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=P.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(Q){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.H;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.j.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.J(this.G(c)),h=Q.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(Q.head||Q.body).appendChild(h)}},L:function(){var a=this;this.m+=1,setTimeout(function(){a.m-=1})},$:function(a,b){var c,d;if(this.b){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),Q.createEvent?(c=Q.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=Q.createEventObject(),c.eventType=a);for(d in b)y(b,d)&&(c[d]=b[d]);if(Q.createEvent)Q.dispatchEvent(c);else try{Q.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},_:function(a){var b=this;return function(c){if(b.aa=null,b.v!==c){b.v=c;var d;try{d=C(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ba:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.aa;g||a._("input")(c),clearTimeout(g),a.aa=setTimeout(function(){a.aa=null},b)}}},ca:function(a,b){var c=F(this.w.href),d=F(b),e=F(a);this.x=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},C:function(){var a=this;a.da=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.M?a.da.apply(this.O,arguments):a.da.apply(this,arguments)}},Q:function(){this.da&&(Function.prototype.toString=this.da)},D:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.ca(b.x,c+""),a.apply(this,arguments)}};G(history,"pushState",j,d),G(history,"replaceState",j,d)}if(c.console&&"console"in P&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};u(["debug","info","warn","error","log"],function(a,b){M(console,b,k)})}},R:function(){for(var a;this.t.length;){a=this.t.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},S:function(){for(var a in this.q)this.p[a]=this.q[a]},F:function(){var a=this;u(this.r,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},G:function(a){var b=O.exec(a),c={},d=7;try{for(;d--;)c[N[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.k.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},J:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},A:function(){this.m||this.V.apply(this,arguments)},V:function(a,b){var c=this.X(a,b);this.$("handle",{stackInfo:a,options:b}),this.fa(a.name,a.message,a.url,a.lineno,c,b)},X:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(u(a.stack,function(b,e){var f=c.ga(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.u,0)}),this.j.user&&(a.user=this.j.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),a=this.pa(a),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||t(a[b]))&&delete a[b]}),q(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!t(a)&&(!q(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.ma()?void this.z("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function B(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&j(b))for(c=b.split(/\s+/),f=0;fc?M(a,b-1):d}function N(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?T:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function O(a,b){function c(a){return k(a)?a.map(function(a){return c(a)}):i(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!k(b)||k(b)&&0===b.length)return a;var d,e=w(b),f="********";try{d=JSON.parse(P(a))}catch(g){return a}return c(d)}var P=a(11),Q="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},R=3,S=51200,T=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isUndefined:g,isFunction:h,isPlainObject:i,isString:j,isArray:k,isEmptyObject:l,supportsErrorEvent:m,supportsFetch:n,supportsReferrerPolicy:o,supportsPromiseRejectionEvent:p,wrappedCallback:q,each:r,objectMerge:s,truncate:u,objectFrozen:t,hasKey:v,joinRegExp:w,urlencode:x,uuid4:z,htmlTreeAsString:A,htmlElementAsString:B,isSameException:E,isSameStacktrace:F,parseUrl:y,fill:G,safeJoin:H,serializeException:M,serializeKeysForMessage:N,sanitize:O}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{11:11}],10:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}var e=a(9),f={collectWindowErrors:!0,debug:!1},g="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},h=[].slice,i="?",j=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;f.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function k(a,b){var c=null;if(!b||f.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(h.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,g,h){var l=null,m=e.isErrorEvent(h)?h.error:h,n=e.isErrorEvent(a)?a.message:a;if(v)f.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&e.isError(m))l=f.computeStackTrace(m),k(l,!0);else{var p,r={url:b,line:c,column:g},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(j);p&&(s=p[1],n=p[2])}r.func=i,l={name:s,message:n,url:d(),stack:[r]},k(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=g.onerror,g.onerror=l,r=!0)}function n(){r&&(g.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,k.apply(null,[a,!1].concat(b))}function p(a,b){var c=h.call(arguments,1);if(v){if(u===a)return;o()}var d=f.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),f.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,e,f=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,g=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,h=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,j=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,k=/\((\S*)(?::(\d+))(?::(\d+))\)/,l=a.stack.split("\n"),m=[],n=(/^(.*) is undefined$/.exec(a.message),0),o=l.length;n eval")>-1;q&&(b=j.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==n||c[5]||"undefined"==typeof a.columnNumber||(m[0].column=a.columnNumber+1),e={url:c[3],func:c[1]||i,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}!e.func&&e.line&&(e.func=i),m.push(e)}return m.length?{name:a.name,message:a.message,url:d(),stack:m}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=i),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,g){for(var h,j,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==e&&o!==f.report){if(j={url:null,func:i,line:null,column:null},o.name?j.func=o.name:(h=k.exec(o.toString()))&&(j.func=h[1]),"undefined"==typeof j.func)try{j.func=h.input.substring(0,h.input.indexOf("{"))}catch(p){}m[""+o]?n=!0:m[""+o]=!0,l.push(j)}g&&l.splice(0,g);var q={name:a.name,message:a.message,url:d(),stack:l};return b(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description), +q}function e(b,e){var g=null;e=null==e?0:+e;try{if(g=a(b))return g}catch(h){if(f.debug)throw h}try{if(g=c(b,e+1))return g}catch(h){if(f.debug)throw h}return{name:b.name,message:b.message,url:d()}}return e.augmentStackTraceWithInitialElement=b,e.computeStackTraceFromStackProp=a,e}(),b.exports=f}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{9:9}],11:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}],12:[function(a,b,c){function d(a,b){var c=(65535&a)+(65535&b),d=(a>>16)+(b>>16)+(c>>16);return d<<16|65535&c}function e(a,b){return a<>>32-b}function f(a,b,c,f,g,h){return d(e(d(d(b,a),d(f,h)),g),c)}function g(a,b,c,d,e,g,h){return f(b&c|~b&d,a,b,e,g,h)}function h(a,b,c,d,e,g,h){return f(b&d|c&~d,a,b,e,g,h)}function i(a,b,c,d,e,g,h){return f(b^c^d,a,b,e,g,h)}function j(a,b,c,d,e,g,h){return f(c^(b|~d),a,b,e,g,h)}function k(a,b){a[b>>5]|=128<>>9<<4)+14]=b;var c,e,f,k,l,m=1732584193,n=-271733879,o=-1732584194,p=271733878;for(c=0;c>5]>>>b%32&255);return c}function m(a){var b,c=[];for(c[(a.length>>2)-1]=void 0,b=0;b>5]|=(255&a.charCodeAt(b/8))<16&&(e=k(e,8*a.length)),c=0;c<16;c+=1)f[c]=909522486^e[c],g[c]=1549556828^e[c];return d=k(f.concat(m(b)),512+8*b.length),l(k(g.concat(d),640))}function p(a){var b,c,d="0123456789abcdef",e="";for(c=0;c>>4&15)+d.charAt(15&b);return e}function q(a){return unescape(encodeURIComponent(a))}function r(a){return n(q(a))}function s(a){return p(r(a))}function t(a,b){return o(q(a),q(b))}function u(a,b){return p(t(a,b))}function v(a,b,c){return b?c?t(b,a):u(b,a):c?r(a):s(a)}b.exports=v},{}]},{},[8,1,2,3,4])(8)}); //# sourceMappingURL=raven.min.js.map \ No newline at end of file diff --git a/dist/console,ember,require,vue/raven.min.js.map b/dist/console,ember,require,vue/raven.min.js.map index edaf620e87a5..ddb791b3857d 100644 --- a/dist/console,ember,require,vue/raven.min.js.map +++ b/dist/console,ember,require,vue/raven.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["raven.js"],"names":["global","factory","exports","module","define","amd","Raven","this","createCommonjsModule","fn","_typeof","obj","Symbol","iterator","constructor","prototype","isObject$1","what","isError$1","value","toString","call","Error","isErrorEvent$1","supportsErrorEvent","isUndefined$1","isFunction$1","isPlainObject","Object","isString$1","isArray$1","isEmptyObject$1","_","hasOwnProperty","ErrorEvent","e","supportsFetch$1","_window$3","Headers","Request","Response","wrappedCallback","callback","dataCallback","data","original","normalizedData","each$1","i","j","length","hasKey$1","objectMerge$1","obj1","obj2","key","objectFrozen$1","isFrozen","truncate$1","str","max","substr","object","joinRegExp$1","patterns","pattern","sources","len","push","replace","source","RegExp","join","urlencode$1","o","pairs","encodeURIComponent","parseUrl$1","url","match","query","fragment","protocol","host","path","relative","uuid4$1","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","r","Math","random","htmlTreeAsString$1","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","reverse","className","classes","attr","tagName","toLowerCase","id","split","attrWhitelist","getAttribute","isOnlyOneTruthy","a","b","isBothUndefined","isSameException$1","ex1","ex2","values","type","stacktrace","isSameStacktrace$1","stack1","stack2","frames1","frames","frames2","filename","lineno","colno","fill$1","name","replacement","track","orig","__raven__","__orig__","safeJoin","input","delimiter","output","String","getLocationHref","document","location","href","RavenConfigError","message","now","Date","keepOriginalCallback","isFunction","Raven$1","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window$1","SENTRY_RELEASE","logger","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","_fetchDefaults","method","keepalive","referrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","console","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","_lastHref","_resetBackoff","consolePlugin","pluginOptions","window","logLevels","levels","msg","captureMessage","level","pop","wrapConsoleMethod$1","emberPlugin","Ember","_oldOnError","onerror","error","captureException","RSVP","on","reason","extra","context","requirePlugin","formatComponentName","vm","$root","_isVue","$options","_componentTag","__file","vuePlugin","Vue","config","errorHandler","info","metaData","componentName","propsData","lifecycleHook","commonjsGlobal","self","_sPO","setPrototypeOf","p","__proto__","Reflect","construct","Parent","args","Class","Constructor","apply","bind","utils","isObject","isError","isErrorEvent","isString","isArray","isEmptyObject","supportsFetch","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","TraceKit","debug","_window$2","_slice","slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","report","subscribe","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","stack","isWindowError","exception","concat","arguments","inner","traceKitWindowOnError","lineNo","colNo","ex","lastExceptionStack","computeStackTrace","augmentStackTraceWithInitialElement","processLastException","groups","line","column","undefined","func","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","lastException","rethrow","setTimeout","incomplete","uninstall","computeStackTraceFromStackProp","submatch","parts","element","chrome","gecko","winjs","geckoEval","chromeEval","lines","exec","isNative","indexOf","isEval","columnNumber","stackInfo","initial","unshift","partial","computeStackTraceByWalkingCallerChain","depth","item","functionName","funcs","recursion","curr","caller","substring","result","sourceURL","fileName","lineNumber","description","tracekit","stringify_1","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","err","keys","thisPos","Infinity","getSerialize","configError","wrapMethod","originalConsoleLevel","originalConsole","sentryLevel","Function","console$1","wrapConsoleMethod","dsnKeys","dsnPattern","navigator","VERSION","dsn","options","_logDebug","globalOptions","setDSN","maxBreadcrumbs","min","autoBreadcrumbDefaults","xhr","dom","sentry","instrumentDefaults","tryCatch","install","isSetup","_handleOnErrorStackInfo","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","lastIndexOf","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","wrap","_before","wrapped","deep","_ignoreNextOnError","__raven_wrapper__","property","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","trimHeadFrames","isNotError","isNotErrorEvent","isErrorEventWithoutError","_handleStackInfo","test","initialCall","fileurl","fingerprint","_prepareFrames","_send","captureBreadcrumb","crumb","timestamp","breadcrumbCallback","shift","addPlugin","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","setDataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","N","W","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","X","evtName","_keypressTimeout","target","category","Z","debounceDuration","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","$","from","to","parsedLoc","parsedTo","parsedFrom","E","_originalFunctionToString","P","F","wrapTimeFn","t","Array","originalCallback","wrapEventTarget","proto","capture","secure","handleEvent","before","clickHandler","keypressHandler","_keypressEventHandler","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","G","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","onreadystatechange","origFetch","fetchInput","fetchData","then","response","addEventListener","attachEvent","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","Q","builtin","R","H","installer","I","m","allowSecretKey","L","port","D","S","_triggerEvent","_processException","T","frame","_normalizeFrame","in_app","ca","stackInfoUrl","normalized","function","ba","prefixedMessage","culprit","da","request","Referer","breadcrumbs","_trimBreadcrumbs","ea","urlProp","urlProps","fa","httpData","userAgent","User-Agent","referrer","A","_backoffDuration","_backoffStart","ia","ja","current","last","ka","_shouldBackoff","retry","get","getResponseHeader","parseInt","U","baseData","project","platform","_getHttpData","serverName","server_name","forEach","_sendProcessedPayload","ma","la","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","na","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","onload","open","setRequestHeader","send","oa","hash","evaluated","C","V","setUser","setReleaseContext","raven","_window","_Raven","noConflict","singleton","console$3","ember","require_1","vue","console_ember_require_vue"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file +{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","consolePlugin","console","pluginOptions","logLevels","levels","push","callback","msg","data","captureMessage","level","pop","wrapConsoleMethod","wrapMethod","addPlugin","6","8","2","emberPlugin","Ember","_oldOnError","onerror","error","captureException","RSVP","on","reason","extra","context","3","requirePlugin","wrap","deep","4","formatComponentName","vm","$root","name","_isVue","$options","_componentTag","__file","vuePlugin","Vue","config","errorHandler","info","metaData","Object","prototype","toString","componentName","propsData","lifecycleHook","5","RavenConfigError","message","constructor","utils","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","safeJoin","logger","Function","apply","9","7","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","sanitizeKeys","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isError","isObject","isPlainObject","isErrorEvent","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","sanitize","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","dsn","options","_logDebug","globalOptions","key","value","setDSN","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","substr","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","func","undefined","_before","wrapped","_ignoreNextOnError","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","T","event","unhandledPromiseRejection","B","_promiseRejectionHandler","bind","addEventListener","P","removeEventListener","ex","trimHeadFrames","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","U","currentOptions","exKeys","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","setDataCallback","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","L","setTimeout","$","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","_","evtName","_keypressTimeout","target","category","ba","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","ca","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","C","_originalFunctionToString","Q","D","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","type","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","E","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","R","builtin","S","F","installer","concat","G","str","m","exec","allowSecretKey","J","port","A","V","stackInfo","_triggerEvent","_processException","lineno","X","frame","_normalizeFrame","in_app","ga","stackInfoUrl","normalized","filename","line","colno","column","function","fa","prefixedMessage","exception","values","culprit","ha","request","Referer","breadcrumbs","_trimBreadcrumbs","ia","urlProp","urlProps","ja","httpData","userAgent","User-Agent","referrer","y","_backoffDuration","_backoffStart","ma","na","current","last","oa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Y","baseData","project","platform","_getHttpData","serverName","server_name","_sanitizeData","forEach","random","_sendProcessedPayload","pa","ra","qa","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","sa","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","open","setRequestHeader","send","ta","hash","evaluated","z","Z","setUser","setReleaseContext","10","11","12","RavenConstructor","_Raven","noConflict","Client","what","supportsErrorEvent","ErrorEvent","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","wrappedCallback","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","sanitizeMask","safeInput","o_O","getLocationHref","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","charAt","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","string","raw"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file diff --git a/dist/console,ember,require/raven.js b/dist/console,ember,require/raven.js index d20bb23b278a..bd0ad39d3df4 100644 --- a/dist/console,ember,require/raven.js +++ b/dist/console,ember,require/raven.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.22.2 (1b6187b) | github.com/getsentry/raven-js */ +/*! Raven.js 3.24.2 (540f32b) | github.com/getsentry/raven-js */ /* * Includes TraceKit @@ -10,3222 +10,3980 @@ * */ -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : - typeof define === 'function' && define.amd ? define(factory) : - (global.Raven = factory()); -}(this, (function () { 'use strict'; - -var commonjsGlobal = typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; - -function commonjsRequire () { - throw new Error('Dynamic requires are not currently supported by rollup-plugin-commonjs'); -} +(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.Raven = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o href parsing trick because React Native and other -// environments where DOM might not be available + self.setDSN(dsn); + // "Script error." is hard coded into browsers for errors that it can't read. + // this is the result of a script being pulled in from an external domain and CORS. + globalOptions.ignoreErrors.push(/^Script error\.?$/); + globalOptions.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/); -function parseUrl$1(url) { - if (typeof url !== 'string') return {}; - var match = url.match(/^(([^:\/?#]+):)?(\/\/([^\/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?$/); // coerce to undefined values to empty string so we don't get 'undefined' + // join regexp rules into one big rule + globalOptions.ignoreErrors = joinRegExp(globalOptions.ignoreErrors); + globalOptions.ignoreUrls = globalOptions.ignoreUrls.length + ? joinRegExp(globalOptions.ignoreUrls) + : false; + globalOptions.whitelistUrls = globalOptions.whitelistUrls.length + ? joinRegExp(globalOptions.whitelistUrls) + : false; + globalOptions.includePaths = joinRegExp(globalOptions.includePaths); + globalOptions.maxBreadcrumbs = Math.max( + 0, + Math.min(globalOptions.maxBreadcrumbs || 100, 100) + ); // default and hard limit is 100 - var query = match[6] || ''; - var fragment = match[8] || ''; - return { - protocol: match[2], - host: match[4], - path: match[5], - relative: match[5] + query + fragment // everything minus origin + var autoBreadcrumbDefaults = { + xhr: true, + console: true, + dom: true, + location: true, + sentry: true + }; - }; -} + var autoBreadcrumbs = globalOptions.autoBreadcrumbs; + if ({}.toString.call(autoBreadcrumbs) === '[object Object]') { + autoBreadcrumbs = objectMerge(autoBreadcrumbDefaults, autoBreadcrumbs); + } else if (autoBreadcrumbs !== false) { + autoBreadcrumbs = autoBreadcrumbDefaults; + } + globalOptions.autoBreadcrumbs = autoBreadcrumbs; -function uuid4$1() { - var crypto = _window$3.crypto || _window$3.msCrypto; + var instrumentDefaults = { + tryCatch: true + }; - if (!isUndefined$1(crypto) && crypto.getRandomValues) { - // Use window.crypto API if available - // eslint-disable-next-line no-undef - var arr = new Uint16Array(8); - crypto.getRandomValues(arr); // set 4 in byte 7 + var instrument = globalOptions.instrument; + if ({}.toString.call(instrument) === '[object Object]') { + instrument = objectMerge(instrumentDefaults, instrument); + } else if (instrument !== false) { + instrument = instrumentDefaults; + } + globalOptions.instrument = instrument; - arr[3] = arr[3] & 0xfff | 0x4000; // set 2 most significant bits of byte 9 to '10' + TraceKit.collectWindowErrors = !!globalOptions.collectWindowErrors; - arr[4] = arr[4] & 0x3fff | 0x8000; + // return for chaining + return self; + }, - var pad = function pad(num) { - var v = num.toString(16); + /* + * Installs a global window.onerror error handler + * to capture and report uncaught exceptions. + * At this point, install() is required to be called due + * to the way TraceKit is set up. + * + * @return {Raven} + */ + install: function() { + var self = this; + if (self.isSetup() && !self._isRavenInstalled) { + TraceKit.report.subscribe(function() { + self._handleOnErrorStackInfo.apply(self, arguments); + }); - while (v.length < 4) { - v = '0' + v; + if (self._globalOptions.captureUnhandledRejections) { + self._attachPromiseRejectionHandler(); } - return v; - }; - - return pad(arr[0]) + pad(arr[1]) + pad(arr[2]) + pad(arr[3]) + pad(arr[4]) + pad(arr[5]) + pad(arr[6]) + pad(arr[7]); - } else { - // http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/2117523#2117523 - return 'xxxxxxxxxxxx4xxxyxxxxxxxxxxxxxxx'.replace(/[xy]/g, function (c) { - var r = Math.random() * 16 | 0, - v = c === 'x' ? r : r & 0x3 | 0x8; - return v.toString(16); - }); - } -} -/** - * Given a child DOM element, returns a query-selector statement describing that - * and its ancestors - * e.g. [HTMLElement] => body > div > input#foo.btn[name=baz] - * @param elem - * @returns {string} - */ + self._patchFunctionToString(); + if (self._globalOptions.instrument && self._globalOptions.instrument.tryCatch) { + self._instrumentTryCatch(); + } -function htmlTreeAsString$1(elem) { - /* eslint no-extra-parens:0*/ - var MAX_TRAVERSE_HEIGHT = 5, - MAX_OUTPUT_LEN = 80, - out = [], - height = 0, - len = 0, - separator = ' > ', - sepLength = separator.length, - nextStr; + if (self._globalOptions.autoBreadcrumbs) self._instrumentBreadcrumbs(); - while (elem && height++ < MAX_TRAVERSE_HEIGHT) { - nextStr = htmlElementAsString(elem); // bail out if - // - nextStr is the 'html' element - // - the length of the string that would be created exceeds MAX_OUTPUT_LEN - // (ignore this limit if we are on the first iteration) + // Install all of the plugins + self._drainPlugins(); - if (nextStr === 'html' || height > 1 && len + out.length * sepLength + nextStr.length >= MAX_OUTPUT_LEN) { - break; + self._isRavenInstalled = true; } - out.push(nextStr); - len += nextStr.length; - elem = elem.parentNode; - } + Error.stackTraceLimit = self._globalOptions.stackTraceLimit; + return this; + }, - return out.reverse().join(separator); -} -/** - * Returns a simple, query-selector representation of a DOM element - * e.g. [HTMLElement] => input#foo.btn[name=baz] - * @param HTMLElement - * @returns {string} - */ + /* + * Set the DSN (can be called multiple time unlike config) + * + * @param {string} dsn The public Sentry DSN + */ + setDSN: function(dsn) { + var self = this, + uri = self._parseDSN(dsn), + lastSlash = uri.path.lastIndexOf('/'), + path = uri.path.substr(1, lastSlash); + self._dsn = dsn; + self._globalKey = uri.user; + self._globalSecret = uri.pass && uri.pass.substr(1); + self._globalProject = uri.path.substr(lastSlash + 1); -function htmlElementAsString(elem) { - var out = [], - className, - classes, - key, - attr, - i; + self._globalServer = self._getGlobalServer(uri); - if (!elem || !elem.tagName) { - return ''; - } + self._globalEndpoint = + self._globalServer + '/' + path + 'api/' + self._globalProject + '/store/'; - out.push(elem.tagName.toLowerCase()); + // Reset backoff state since we may be pointing at a + // new project/server + this._resetBackoff(); + }, - if (elem.id) { - out.push('#' + elem.id); - } + /* + * Wrap code within a context so Raven can capture errors + * reliably across domains that is executed immediately. + * + * @param {object} options A specific set of options for this context [optional] + * @param {function} func The callback to be immediately executed within the context + * @param {array} args An array of arguments to be called with the callback [optional] + */ + context: function(options, func, args) { + if (isFunction(options)) { + args = func || []; + func = options; + options = undefined; + } - className = elem.className; + return this.wrap(options, func).apply(this, args); + }, - if (className && isString$1(className)) { - classes = className.split(/\s+/); + /* + * Wrap code within a context and returns back a new function to be executed + * + * @param {object} options A specific set of options for this context [optional] + * @param {function} func The function to be wrapped in a new context + * @param {function} func A function to call before the try/catch wrapper [optional, private] + * @return {function} The newly wrapped functions with a context + */ + wrap: function(options, func, _before) { + var self = this; + // 1 argument has been passed, and it's not a function + // so just return it + if (isUndefined(func) && !isFunction(options)) { + return options; + } - for (i = 0; i < classes.length; i++) { - out.push('.' + classes[i]); + // options is optional + if (isFunction(options)) { + func = options; + options = undefined; } - } - var attrWhitelist = ['type', 'name', 'title', 'alt']; + // At this point, we've passed along 2 arguments, and the second one + // is not a function either, so we'll just return the second argument. + if (!isFunction(func)) { + return func; + } - for (i = 0; i < attrWhitelist.length; i++) { - key = attrWhitelist[i]; - attr = elem.getAttribute(key); + // We don't wanna wrap it twice! + try { + if (func.__raven__) { + return func; + } - if (attr) { - out.push('[' + key + '="' + attr + '"]'); + // If this has already been wrapped in the past, return that + if (func.__raven_wrapper__) { + return func.__raven_wrapper__; + } + } catch (e) { + // Just accessing custom props in some Selenium environments + // can cause a "Permission denied" exception (see raven-js#495). + // Bail on wrapping and return the function as-is (defers to window.onerror). + return func; } - } - return out.join(''); -} -/** - * Returns true if either a OR b is truthy, but not both - */ + function wrapped() { + var args = [], + i = arguments.length, + deep = !options || (options && options.deep !== false); + if (_before && isFunction(_before)) { + _before.apply(this, arguments); + } -function isOnlyOneTruthy(a, b) { - return !!(!!a ^ !!b); -} -/** - * Returns true if both parameters are undefined - */ + // Recursively wrap all of a function's arguments that are + // functions themselves. + while (i--) args[i] = deep ? self.wrap(options, arguments[i]) : arguments[i]; + try { + // Attempt to invoke user-land function + // NOTE: If you are a Sentry user, and you are seeing this stack frame, it + // means Raven caught an error invoking your application code. This is + // expected behavior and NOT indicative of a bug with Raven.js. + return func.apply(this, args); + } catch (e) { + self._ignoreNextOnError(); + self.captureException(e, options); + throw e; + } + } -function isBothUndefined(a, b) { - return isUndefined$1(a) && isUndefined$1(b); -} -/** - * Returns true if the two input exception interfaces have the same content - */ + // copy over properties of the old function + for (var property in func) { + if (hasKey(func, property)) { + wrapped[property] = func[property]; + } + } + wrapped.prototype = func.prototype; + func.__raven_wrapper__ = wrapped; + // Signal that this function has been wrapped/filled already + // for both debugging and to prevent it to being wrapped/filled twice + wrapped.__raven__ = true; + wrapped.__orig__ = func; -function isSameException$1(ex1, ex2) { - if (isOnlyOneTruthy(ex1, ex2)) return false; - ex1 = ex1.values[0]; - ex2 = ex2.values[0]; - if (ex1.type !== ex2.type || ex1.value !== ex2.value) return false; // in case both stacktraces are undefined, we can't decide so default to false + return wrapped; + }, - if (isBothUndefined(ex1.stacktrace, ex2.stacktrace)) return false; - return isSameStacktrace$1(ex1.stacktrace, ex2.stacktrace); -} -/** - * Returns true if the two input stack trace interfaces have the same content - */ + /** + * Uninstalls the global error handler. + * + * @return {Raven} + */ + uninstall: function() { + TraceKit.report.uninstall(); + this._detachPromiseRejectionHandler(); + this._unpatchFunctionToString(); + this._restoreBuiltIns(); + this._restoreConsole(); -function isSameStacktrace$1(stack1, stack2) { - if (isOnlyOneTruthy(stack1, stack2)) return false; - var frames1 = stack1.frames; - var frames2 = stack2.frames; // Exit early if frame count differs + Error.stackTraceLimit = this._originalErrorStackTraceLimit; + this._isRavenInstalled = false; - if (frames1.length !== frames2.length) return false; // Iterate through every frame; bail out if anything differs + return this; + }, - var a, b; + /** + * Callback used for `unhandledrejection` event + * + * @param {PromiseRejectionEvent} event An object containing + * promise: the Promise that was rejected + * reason: the value with which the Promise was rejected + * @return void + */ + _promiseRejectionHandler: function(event) { + this._logDebug('debug', 'Raven caught unhandled promise rejection:', event); + this.captureException(event.reason, { + extra: { + unhandledPromiseRejection: true + } + }); + }, - for (var i = 0; i < frames1.length; i++) { - a = frames1[i]; - b = frames2[i]; - if (a.filename !== b.filename || a.lineno !== b.lineno || a.colno !== b.colno || a['function'] !== b['function']) return false; - } + /** + * Installs the global promise rejection handler. + * + * @return {raven} + */ + _attachPromiseRejectionHandler: function() { + this._promiseRejectionHandler = this._promiseRejectionHandler.bind(this); + _window.addEventListener && + _window.addEventListener('unhandledrejection', this._promiseRejectionHandler); + return this; + }, - return true; -} -/** - * Polyfill a method - * @param obj object e.g. `document` - * @param name method name present on object e.g. `addEventListener` - * @param replacement replacement function - * @param track {optional} record instrumentation to an array - */ + /** + * Uninstalls the global promise rejection handler. + * + * @return {raven} + */ + _detachPromiseRejectionHandler: function() { + _window.removeEventListener && + _window.removeEventListener('unhandledrejection', this._promiseRejectionHandler); + return this; + }, + /** + * Manually capture an exception and send it over to Sentry + * + * @param {error} ex An exception to be logged + * @param {object} options A specific set of options for this error [optional] + * @return {Raven} + */ + captureException: function(ex, options) { + options = objectMerge({trimHeadFrames: 0}, options ? options : {}); + + if (isErrorEvent(ex) && ex.error) { + // If it is an ErrorEvent with `error` property, extract it to get actual Error + ex = ex.error; + } else if (isError(ex)) { + // we have a real Error object + ex = ex; + } else if (isPlainObject(ex)) { + // If it is plain Object, serialize it manually and extract options + // This will allow us to group events based on top-level keys + // which is much better than creating new group when any key/value change + options = this._getCaptureExceptionOptionsFromPlainObject(options, ex); + ex = new Error(options.message); + } else { + // If none of previous checks were valid, then it means that + // it's not a plain Object + // it's not a valid ErrorEvent (one with an error property) + // it's not an Error + // So bail out and capture it as a simple message: + return this.captureMessage( + ex, + objectMerge(options, { + stacktrace: true, // if we fall back to captureMessage, default to attempting a new trace + trimHeadFrames: options.trimHeadFrames + 1 + }) + ); + } + + // Store the raw exception object for potential debugging and introspection + this._lastCapturedException = ex; + + // TraceKit.report will re-raise any exception passed to it, + // which means you have to wrap it in try/catch. Instead, we + // can wrap it here and only re-raise if TraceKit.report + // raises an exception different from the one we asked to + // report on. + try { + var stack = TraceKit.computeStackTrace(ex); + this._handleStackInfo(stack, options); + } catch (ex1) { + if (ex !== ex1) { + throw ex1; + } + } -function fill$1(obj, name, replacement, track) { - var orig = obj[name]; - obj[name] = replacement(orig); - obj[name].__raven__ = true; - obj[name].__orig__ = orig; + return this; + }, - if (track) { - track.push([obj, name, orig]); - } -} -/** - * Join values in array - * @param input array of values to be joined together - * @param delimiter string to be placed in-between values - * @returns {string} - */ + _getCaptureExceptionOptionsFromPlainObject: function(currentOptions, ex) { + var exKeys = Object.keys(ex).sort(); + var options = objectMerge(currentOptions, { + message: + 'Non-Error exception captured with keys: ' + serializeKeysForMessage(exKeys), + fingerprint: [md5(exKeys)], + extra: currentOptions.extra || {} + }); + options.extra.__serialized__ = serializeException(ex); + return options; + }, -function safeJoin(input, delimiter) { - if (!isArray$1(input)) return ''; - var output = []; + /* + * Manually send a message to Sentry + * + * @param {string} msg A plain message to be captured in Sentry + * @param {object} options A specific set of options for this message [optional] + * @return {Raven} + */ + captureMessage: function(msg, options) { + // config() automagically converts ignoreErrors from a list to a RegExp so we need to test for an + // early call; we'll error on the side of logging anything called before configuration since it's + // probably something you should see: + if ( + !!this._globalOptions.ignoreErrors.test && + this._globalOptions.ignoreErrors.test(msg) + ) { + return; + } - for (var i = 0; i < input.length; i++) { + options = options || {}; + msg = msg + ''; // Make sure it's actually a string + + var data = objectMerge( + { + message: msg + }, + options + ); + + var ex; + // Generate a "synthetic" stack trace from this point. + // NOTE: If you are a Sentry user, and you are seeing this stack frame, it is NOT indicative + // of a bug with Raven.js. Sentry generates synthetic traces either by configuration, + // or if it catches a thrown object without a "stack" property. try { - output.push(String(input[i])); - } catch (e) { - output.push('[value cannot be serialized]'); + throw new Error(msg); + } catch (ex1) { + ex = ex1; } - } - - return output.join(delimiter); -} -var utils = { - isObject: isObject$1, - isError: isError$1, - isErrorEvent: isErrorEvent$1, - isUndefined: isUndefined$1, - isFunction: isFunction$1, - isPlainObject: isPlainObject, - isString: isString$1, - isArray: isArray$1, - isEmptyObject: isEmptyObject$1, - supportsErrorEvent: supportsErrorEvent, - supportsFetch: supportsFetch$1, - wrappedCallback: wrappedCallback, - each: each$1, - objectMerge: objectMerge$1, - truncate: truncate$1, - objectFrozen: objectFrozen$1, - hasKey: hasKey$1, - joinRegExp: joinRegExp$1, - urlencode: urlencode$1, - uuid4: uuid4$1, - htmlTreeAsString: htmlTreeAsString$1, - htmlElementAsString: htmlElementAsString, - isSameException: isSameException$1, - isSameStacktrace: isSameStacktrace$1, - parseUrl: parseUrl$1, - fill: fill$1, - safeJoin: safeJoin -}; + // null exception name so `Error` isn't prefixed to msg + ex.name = null; + var stack = TraceKit.computeStackTrace(ex); -/* - TraceKit - Cross brower stack traces + // stack[0] is `throw new Error(msg)` call itself, we are interested in the frame that was just before that, stack[1] + var initialCall = isArray(stack.stack) && stack.stack[1]; - This was originally forked from github.com/occ/TraceKit, but has since been - largely re-written and is now maintained as part of raven-js. Tests for - this are in test/vendor. + // if stack[1] is `Raven.captureException`, it means that someone passed a string to it and we redirected that call + // to be handled by `captureMessage`, thus `initialCall` is the 3rd one, not 2nd + // initialCall => captureException(string) => captureMessage(string) + if (initialCall && initialCall.func === 'Raven.captureException') { + initialCall = stack.stack[2]; + } - MIT license -*/ + var fileurl = (initialCall && initialCall.url) || ''; -var TraceKit = { - collectWindowErrors: true, - debug: false -}; // This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) + if ( + !!this._globalOptions.ignoreUrls.test && + this._globalOptions.ignoreUrls.test(fileurl) + ) { + return; + } -var _window$2 = typeof window !== 'undefined' ? window : typeof commonjsGlobal !== 'undefined' ? commonjsGlobal : typeof self !== 'undefined' ? self : {}; // global reference to slice + if ( + !!this._globalOptions.whitelistUrls.test && + !this._globalOptions.whitelistUrls.test(fileurl) + ) { + return; + } + if (this._globalOptions.stacktrace || (options && options.stacktrace)) { + // fingerprint on msg, not stack trace (legacy behavior, could be revisited) + data.fingerprint = data.fingerprint == null ? msg : data.fingerprint; -var _slice = [].slice; -var UNKNOWN_FUNCTION = '?'; // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error#Error_types + options = objectMerge( + { + trimHeadFrames: 0 + }, + options + ); + // Since we know this is a synthetic trace, the top frame (this function call) + // MUST be from Raven.js, so mark it for trimming + // We add to the trim counter so that callers can choose to trim extra frames, such + // as utility functions. + options.trimHeadFrames += 1; -var ERROR_TYPES_RE = /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/; + var frames = this._prepareFrames(stack, options); + data.stacktrace = { + // Sentry expects frames oldest to newest + frames: frames.reverse() + }; + } -function getLocationHref() { - if (typeof document === 'undefined' || document.location == null) return ''; - return document.location.href; -} -/** - * TraceKit.report: cross-browser processing of unhandled exceptions - * - * Syntax: - * TraceKit.report.subscribe(function(stackInfo) { ... }) - * TraceKit.report.unsubscribe(function(stackInfo) { ... }) - * TraceKit.report(exception) - * try { ...code... } catch(ex) { TraceKit.report(ex); } - * - * Supports: - * - Firefox: full stack trace with line numbers, plus column number - * on top frame; column number is not guaranteed - * - Opera: full stack trace with line and column numbers - * - Chrome: full stack trace with line and column numbers - * - Safari: line and column number for the top frame only; some frames - * may be missing, and column number is not guaranteed - * - IE: line and column number for the top frame only; some frames - * may be missing, and column number is not guaranteed - * - * In theory, TraceKit should work on all of the following versions: - * - IE5.5+ (only 8.0 tested) - * - Firefox 0.9+ (only 3.5+ tested) - * - Opera 7+ (only 10.50 tested; versions 9 and earlier may require - * Exceptions Have Stacktrace to be enabled in opera:config) - * - Safari 3+ (only 4+ tested) - * - Chrome 1+ (only 5+ tested) - * - Konqueror 3.5+ (untested) - * - * Requires TraceKit.computeStackTrace. - * - * Tries to catch all unhandled exceptions and report them to the - * subscribed handlers. Please note that TraceKit.report will rethrow the - * exception. This is REQUIRED in order to get a useful stack trace in IE. - * If the exception does not reach the top of the browser, you will only - * get a stack trace from the point where TraceKit.report was called. - * - * Handlers receive a stackInfo object as described in the - * TraceKit.computeStackTrace docs. - */ + // Make sure that fingerprint is always wrapped in an array + if (data.fingerprint) { + data.fingerprint = isArray(data.fingerprint) + ? data.fingerprint + : [data.fingerprint]; + } + // Fire away! + this._send(data); -TraceKit.report = function reportModuleWrapper() { - var handlers = [], - lastArgs = null, - lastException = null, - lastExceptionStack = null; - /** - * Add a crash handler. - * @param {Function} handler - */ + return this; + }, - function subscribe(handler) { - installGlobalHandler(); - handlers.push(handler); - } - /** - * Remove a crash handler. - * @param {Function} handler - */ + captureBreadcrumb: function(obj) { + var crumb = objectMerge( + { + timestamp: now() / 1000 + }, + obj + ); + if (isFunction(this._globalOptions.breadcrumbCallback)) { + var result = this._globalOptions.breadcrumbCallback(crumb); - function unsubscribe(handler) { - for (var i = handlers.length - 1; i >= 0; --i) { - if (handlers[i] === handler) { - handlers.splice(i, 1); + if (isObject(result) && !isEmptyObject(result)) { + crumb = result; + } else if (result === false) { + return this; } } - } - /** - * Remove all crash handlers. - */ - - function unsubscribeAll() { - uninstallGlobalHandler(); - handlers = []; - } - /** - * Dispatch stack information to all handlers. - * @param {Object.} stack - */ - - - function notifyHandlers(stack, isWindowError) { - var exception = null; - - if (isWindowError && !TraceKit.collectWindowErrors) { - return; + this._breadcrumbs.push(crumb); + if (this._breadcrumbs.length > this._globalOptions.maxBreadcrumbs) { + this._breadcrumbs.shift(); } + return this; + }, - for (var i in handlers) { - if (handlers.hasOwnProperty(i)) { - try { - handlers[i].apply(null, [stack].concat(_slice.call(arguments, 2))); - } catch (inner) { - exception = inner; - } - } - } + addPlugin: function(plugin /*arg1, arg2, ... argN*/) { + var pluginArgs = [].slice.call(arguments, 1); - if (exception) { - throw exception; + this._plugins.push([plugin, pluginArgs]); + if (this._isRavenInstalled) { + this._drainPlugins(); } - } - var _oldOnerrorHandler, _onErrorHandlerInstalled; - /** - * Ensures all global unhandled exceptions are recorded. - * Supported by Gecko and IE. - * @param {string} msg Error message. - * @param {string} url URL of script that generated the exception. - * @param {(number|string)} lineNo The line number at which the error - * occurred. - * @param {?(number|string)} colNo The column number at which the error - * occurred. - * @param {?Error} ex The actual Error object. + return this; + }, + + /* + * Set/clear a user to be sent along with the payload. + * + * @param {object} user An object representing user data [optional] + * @return {Raven} */ + setUserContext: function(user) { + // Intentionally do not merge here since that's an unexpected behavior. + this._globalContext.user = user; + return this; + }, - function traceKitWindowOnError(msg, url, lineNo, colNo, ex) { - var stack = null; // If 'ex' is ErrorEvent, get real Error from inside + /* + * Merge extra attributes to be sent along with the payload. + * + * @param {object} extra An object representing extra data [optional] + * @return {Raven} + */ + setExtraContext: function(extra) { + this._mergeContext('extra', extra); - var exception = utils.isErrorEvent(ex) ? ex.error : ex; // If 'msg' is ErrorEvent, get real message from inside + return this; + }, - var message = utils.isErrorEvent(msg) ? msg.message : msg; + /* + * Merge tags to be sent along with the payload. + * + * @param {object} tags An object representing tags [optional] + * @return {Raven} + */ + setTagsContext: function(tags) { + this._mergeContext('tags', tags); - if (lastExceptionStack) { - TraceKit.computeStackTrace.augmentStackTraceWithInitialElement(lastExceptionStack, url, lineNo, message); - processLastException(); - } else if (exception && utils.isError(exception)) { - // non-string `exception` arg; attempt to extract stack trace - // New chrome and blink send along a real error object - // Let's just report that like a normal error. - // See: https://mikewest.org/2013/08/debugging-runtime-errors-with-window-onerror - stack = TraceKit.computeStackTrace(exception); - notifyHandlers(stack, true); - } else { - var location = { - url: url, - line: lineNo, - column: colNo - }; - var name = undefined; - var groups; + return this; + }, - if ({}.toString.call(message) === '[object String]') { - var groups = message.match(ERROR_TYPES_RE); + /* + * Clear all of the context. + * + * @return {Raven} + */ + clearContext: function() { + this._globalContext = {}; - if (groups) { - name = groups[1]; - message = groups[2]; - } - } + return this; + }, - location.func = UNKNOWN_FUNCTION; - stack = { - name: name, - message: message, - url: getLocationHref(), - stack: [location] - }; - notifyHandlers(stack, true); - } + /* + * Get a copy of the current context. This cannot be mutated. + * + * @return {object} copy of context + */ + getContext: function() { + // lol javascript + return JSON.parse(stringify(this._globalContext)); + }, - if (_oldOnerrorHandler) { - return _oldOnerrorHandler.apply(this, arguments); - } + /* + * Set environment of application + * + * @param {string} environment Typically something like 'production'. + * @return {Raven} + */ + setEnvironment: function(environment) { + this._globalOptions.environment = environment; - return false; - } + return this; + }, - function installGlobalHandler() { - if (_onErrorHandlerInstalled) { - return; - } + /* + * Set release version of application + * + * @param {string} release Typically something like a git SHA to identify version + * @return {Raven} + */ + setRelease: function(release) { + this._globalOptions.release = release; - _oldOnerrorHandler = _window$2.onerror; - _window$2.onerror = traceKitWindowOnError; - _onErrorHandlerInstalled = true; - } + return this; + }, - function uninstallGlobalHandler() { - if (!_onErrorHandlerInstalled) { - return; - } + /* + * Set the dataCallback option + * + * @param {function} callback The callback to run which allows the + * data blob to be mutated before sending + * @return {Raven} + */ + setDataCallback: function(callback) { + var original = this._globalOptions.dataCallback; + this._globalOptions.dataCallback = keepOriginalCallback(original, callback); + return this; + }, - _window$2.onerror = _oldOnerrorHandler; - _onErrorHandlerInstalled = false; - _oldOnerrorHandler = undefined; - } + /* + * Set the breadcrumbCallback option + * + * @param {function} callback The callback to run which allows filtering + * or mutating breadcrumbs + * @return {Raven} + */ + setBreadcrumbCallback: function(callback) { + var original = this._globalOptions.breadcrumbCallback; + this._globalOptions.breadcrumbCallback = keepOriginalCallback(original, callback); + return this; + }, - function processLastException() { - var _lastExceptionStack = lastExceptionStack, - _lastArgs = lastArgs; - lastArgs = null; - lastExceptionStack = null; - lastException = null; - notifyHandlers.apply(null, [_lastExceptionStack, false].concat(_lastArgs)); - } - /** - * Reports an unhandled Error to TraceKit. - * @param {Error} ex - * @param {?boolean} rethrow If false, do not re-throw the exception. - * Only used for window.onerror to not cause an infinite loop of - * rethrowing. + /* + * Set the shouldSendCallback option + * + * @param {function} callback The callback to run which allows + * introspecting the blob before sending + * @return {Raven} */ + setShouldSendCallback: function(callback) { + var original = this._globalOptions.shouldSendCallback; + this._globalOptions.shouldSendCallback = keepOriginalCallback(original, callback); + return this; + }, + /** + * Override the default HTTP transport mechanism that transmits data + * to the Sentry server. + * + * @param {function} transport Function invoked instead of the default + * `makeRequest` handler. + * + * @return {Raven} + */ + setTransport: function(transport) { + this._globalOptions.transport = transport; - function report(ex, rethrow) { - var args = _slice.call(arguments, 1); + return this; + }, - if (lastExceptionStack) { - if (lastException === ex) { - return; // already caught by an inner catch block, ignore - } else { - processLastException(); - } - } + /* + * Get the latest raw exception that was captured by Raven. + * + * @return {error} + */ + lastException: function() { + return this._lastCapturedException; + }, - var stack = TraceKit.computeStackTrace(ex); - lastExceptionStack = stack; - lastException = ex; - lastArgs = args; // If the stack trace is incomplete, wait for 2 seconds for - // slow slow IE to see if onerror occurs or not before reporting - // this exception; otherwise, we will end up with an incomplete - // stack trace + /* + * Get the last event id + * + * @return {string} + */ + lastEventId: function() { + return this._lastEventId; + }, - setTimeout(function () { - if (lastException === ex) { - processLastException(); + /* + * Determine if Raven is setup and ready to go. + * + * @return {boolean} + */ + isSetup: function() { + if (!this._hasJSON) return false; // needs JSON support + if (!this._globalServer) { + if (!this.ravenNotConfiguredError) { + this.ravenNotConfiguredError = true; + this._logDebug('error', 'Error: Raven has not been configured.'); } - }, stack.incomplete ? 2000 : 0); - - if (rethrow !== false) { - throw ex; // re-throw to propagate to the top level (and cause window.onerror) + return false; } - } + return true; + }, - report.subscribe = subscribe; - report.unsubscribe = unsubscribe; - report.uninstall = unsubscribeAll; - return report; -}(); -/** - * TraceKit.computeStackTrace: cross-browser stack traces in JavaScript - * - * Syntax: - * s = TraceKit.computeStackTrace(exception) // consider using TraceKit.report instead (see below) - * Returns: - * s.name - exception name - * s.message - exception message - * s.stack[i].url - JavaScript or HTML file URL - * s.stack[i].func - function name, or empty for anonymous functions (if guessing did not work) - * s.stack[i].args - arguments passed to the function, if known - * s.stack[i].line - line number, if known - * s.stack[i].column - column number, if known - * - * Supports: - * - Firefox: full stack trace with line numbers and unreliable column - * number on top frame - * - Opera 10: full stack trace with line and column numbers - * - Opera 9-: full stack trace with line numbers - * - Chrome: full stack trace with line and column numbers - * - Safari: line and column number for the topmost stacktrace element - * only - * - IE: no line numbers whatsoever - * - * Tries to guess names of anonymous functions by looking for assignments - * in the source code. In IE and Safari, we have to guess source file names - * by searching for function bodies inside all page scripts. This will not - * work for scripts that are loaded cross-domain. - * Here be dragons: some function names may be guessed incorrectly, and - * duplicate functions may be mismatched. - * - * TraceKit.computeStackTrace should only be used for tracing purposes. - * Logging of unhandled exceptions should be done with TraceKit.report, - * which builds on top of TraceKit.computeStackTrace and provides better - * IE support by utilizing the window.onerror event to retrieve information - * about the top of the stack. - * - * Note: In IE and Safari, no stack trace is recorded on the Error object, - * so computeStackTrace instead walks its *own* chain of callers. - * This means that: - * * in Safari, some methods may be missing from the stack trace; - * * in IE, the topmost function in the stack trace will always be the - * caller of computeStackTrace. - * - * This is okay for tracing (because you are likely to be calling - * computeStackTrace from the function you want to be the topmost element - * of the stack trace anyway), but not okay for logging unhandled - * exceptions (because your catch block will likely be far away from the - * inner function that actually caused the exception). - * - */ - - -TraceKit.computeStackTrace = function computeStackTraceWrapper() { - // Contents of Exception in various browsers. - // - // SAFARI: - // ex.message = Can't find variable: qq - // ex.line = 59 - // ex.sourceId = 580238192 - // ex.sourceURL = http://... - // ex.expressionBeginOffset = 96 - // ex.expressionCaretOffset = 98 - // ex.expressionEndOffset = 98 - // ex.name = ReferenceError - // - // FIREFOX: - // ex.message = qq is not defined - // ex.fileName = http://... - // ex.lineNumber = 59 - // ex.columnNumber = 69 - // ex.stack = ...stack trace... (see the example below) - // ex.name = ReferenceError - // - // CHROME: - // ex.message = qq is not defined - // ex.name = ReferenceError - // ex.type = not_defined - // ex.arguments = ['aa'] - // ex.stack = ...stack trace... - // - // INTERNET EXPLORER: - // ex.message = ... - // ex.name = ReferenceError - // - // OPERA: - // ex.message = ...message... (see the example below) - // ex.name = ReferenceError - // ex.opera#sourceloc = 11 (pretty much useless, duplicates the info in ex.message) - // ex.stacktrace = n/a; see 'opera:config#UserPrefs|Exceptions Have Stacktrace' - - /** - * Computes stack trace information from the stack property. - * Chrome and Gecko use this property. - * @param {Error} ex - * @return {?Object.} Stack trace information. - */ - function computeStackTraceFromStackProp(ex) { - if (typeof ex.stack === 'undefined' || !ex.stack) return; - var chrome = /^\s*at (.*?) ?\(((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i, - gecko = /^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|\[native).*?|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i, - winjs = /^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i, - // Used to additionally parse URL/line/column from eval frames - geckoEval = /(\S+) line (\d+)(?: > eval line \d+)* > eval/i, - chromeEval = /\((\S*)(?::(\d+))(?::(\d+))\)/, - lines = ex.stack.split('\n'), - stack = [], - submatch, - parts, - element, - reference = /^(.*) is undefined$/.exec(ex.message); - - for (var i = 0, j = lines.length; i < j; ++i) { - if (parts = chrome.exec(lines[i])) { - var isNative = parts[2] && parts[2].indexOf('native') === 0; // start of line + afterLoad: function() { + // TODO: remove window dependence? - var isEval = parts[2] && parts[2].indexOf('eval') === 0; // start of line + // Attempt to initialize Raven on load + var RavenConfig = _window.RavenConfig; + if (RavenConfig) { + this.config(RavenConfig.dsn, RavenConfig.config).install(); + } + }, - if (isEval && (submatch = chromeEval.exec(parts[2]))) { - // throw out eval line/column and use top-most line/column number - parts[2] = submatch[1]; // url + showReportDialog: function(options) { + if ( + !_document // doesn't work without a document (React native) + ) + return; - parts[3] = submatch[2]; // line + options = options || {}; - parts[4] = submatch[3]; // column - } + var lastEventId = options.eventId || this.lastEventId(); + if (!lastEventId) { + throw new RavenConfigError('Missing eventId'); + } - element = { - url: !isNative ? parts[2] : null, - func: parts[1] || UNKNOWN_FUNCTION, - args: isNative ? [parts[2]] : [], - line: parts[3] ? +parts[3] : null, - column: parts[4] ? +parts[4] : null - }; - } else if (parts = winjs.exec(lines[i])) { - element = { - url: parts[2], - func: parts[1] || UNKNOWN_FUNCTION, - args: [], - line: +parts[3], - column: parts[4] ? +parts[4] : null - }; - } else if (parts = gecko.exec(lines[i])) { - var isEval = parts[3] && parts[3].indexOf(' > eval') > -1; + var dsn = options.dsn || this._dsn; + if (!dsn) { + throw new RavenConfigError('Missing DSN'); + } - if (isEval && (submatch = geckoEval.exec(parts[3]))) { - // throw out eval line/column and use top-most line number - parts[3] = submatch[1]; - parts[4] = submatch[2]; - parts[5] = null; // no column when eval - } else if (i === 0 && !parts[5] && typeof ex.columnNumber !== 'undefined') { - // FireFox uses this awesome columnNumber property for its top frame - // Also note, Firefox's column number is 0-based and everything else expects 1-based, - // so adding 1 - // NOTE: this hack doesn't work if top-most frame is eval - stack[0].column = ex.columnNumber + 1; - } + var encode = encodeURIComponent; + var qs = ''; + qs += '?eventId=' + encode(lastEventId); + qs += '&dsn=' + encode(dsn); - element = { - url: parts[3], - func: parts[1] || UNKNOWN_FUNCTION, - args: parts[2] ? parts[2].split(',') : [], - line: parts[4] ? +parts[4] : null, - column: parts[5] ? +parts[5] : null - }; - } else { - continue; - } + var user = options.user || this._globalContext.user; + if (user) { + if (user.name) qs += '&name=' + encode(user.name); + if (user.email) qs += '&email=' + encode(user.email); + } - if (!element.func && element.line) { - element.func = UNKNOWN_FUNCTION; - } + var globalServer = this._getGlobalServer(this._parseDSN(dsn)); - stack.push(element); - } + var script = _document.createElement('script'); + script.async = true; + script.src = globalServer + '/api/embed/error-page/' + qs; + (_document.head || _document.body).appendChild(script); + }, - if (!stack.length) { - return null; - } + /**** Private functions ****/ + _ignoreNextOnError: function() { + var self = this; + this._ignoreOnError += 1; + setTimeout(function() { + // onerror should trigger before setTimeout + self._ignoreOnError -= 1; + }); + }, - return { - name: ex.name, - message: ex.message, - url: getLocationHref(), - stack: stack - }; - } - /** - * Adds information about the first frame to incomplete stack traces. - * Safari and IE require this to get complete data on the first frame. - * @param {Object.} stackInfo Stack trace information from - * one of the compute* methods. - * @param {string} url The URL of the script that caused an error. - * @param {(number|string)} lineNo The line number of the script that - * caused an error. - * @param {string=} message The error generated by the browser, which - * hopefully contains the name of the object that caused the error. - * @return {boolean} Whether or not the stack information was - * augmented. - */ + _triggerEvent: function(eventType, options) { + // NOTE: `event` is a native browser thing, so let's avoid conflicting wiht it + var evt, key; + if (!this._hasDocument) return; - function augmentStackTraceWithInitialElement(stackInfo, url, lineNo, message) { - var initial = { - url: url, - line: lineNo - }; + options = options || {}; - if (initial.url && initial.line) { - stackInfo.incomplete = false; + eventType = 'raven' + eventType.substr(0, 1).toUpperCase() + eventType.substr(1); - if (!initial.func) { - initial.func = UNKNOWN_FUNCTION; - } + if (_document.createEvent) { + evt = _document.createEvent('HTMLEvents'); + evt.initEvent(eventType, true, true); + } else { + evt = _document.createEventObject(); + evt.eventType = eventType; + } - if (stackInfo.stack.length > 0) { - if (stackInfo.stack[0].url === initial.url) { - if (stackInfo.stack[0].line === initial.line) { - return false; // already in stack trace - } else if (!stackInfo.stack[0].line && stackInfo.stack[0].func === initial.func) { - stackInfo.stack[0].line = initial.line; - return false; - } - } + for (key in options) + if (hasKey(options, key)) { + evt[key] = options[key]; } - stackInfo.stack.unshift(initial); - stackInfo.partial = true; - return true; + if (_document.createEvent) { + // IE9 if standards + _document.dispatchEvent(evt); } else { - stackInfo.incomplete = true; + // IE8 regardless of Quirks or Standards + // IE9 if quirks + try { + _document.fireEvent('on' + evt.eventType.toLowerCase(), evt); + } catch (e) { + // Do nothing + } } + }, - return false; - } /** - * Computes stack trace information by walking the arguments.caller - * chain at the time the exception occurred. This will cause earlier - * frames to be missed but is the only way to get any stack trace in - * Safari and IE. The top frame is restored by - * {@link augmentStackTraceWithInitialElement}. - * @param {Error} ex - * @return {?Object.} Stack trace information. - */ + * Wraps addEventListener to capture UI breadcrumbs + * @param evtName the event name (e.g. "click") + * @returns {Function} + * @private + */ + _breadcrumbEventHandler: function(evtName) { + var self = this; + return function(evt) { + // reset keypress timeout; e.g. triggering a 'click' after + // a 'keypress' will reset the keypress debounce so that a new + // set of keypresses can be recorded + self._keypressTimeout = null; + // It's possible this handler might trigger multiple times for the same + // event (e.g. event propagation through node ancestors). Ignore if we've + // already captured the event. + if (self._lastCapturedEvent === evt) return; - function computeStackTraceByWalkingCallerChain(ex, depth) { - var functionName = /function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i, - stack = [], - funcs = {}, - recursion = false, - parts, - item; + self._lastCapturedEvent = evt; - for (var curr = computeStackTraceByWalkingCallerChain.caller; curr && !recursion; curr = curr.caller) { - if (curr === computeStackTrace || curr === TraceKit.report) { - // console.log('skipping internal function'); - continue; + // try/catch both: + // - accessing evt.target (see getsentry/raven-js#838, #768) + // - `htmlTreeAsString` because it's complex, and just accessing the DOM incorrectly + // can throw an exception in some circumstances. + var target; + try { + target = htmlTreeAsString(evt.target); + } catch (e) { + target = ''; } - item = { - url: null, - func: UNKNOWN_FUNCTION, - line: null, - column: null - }; - - if (curr.name) { - item.func = curr.name; - } else if (parts = functionName.exec(curr.toString())) { - item.func = parts[1]; - } + self.captureBreadcrumb({ + category: 'ui.' + evtName, // e.g. ui.click, ui.input + message: target + }); + }; + }, - if (typeof item.func === 'undefined') { - try { - item.func = parts.input.substring(0, parts.input.indexOf('{')); - } catch (e) {} - } + /** + * Wraps addEventListener to capture keypress UI events + * @returns {Function} + * @private + */ + _keypressEventHandler: function() { + var self = this, + debounceDuration = 1000; // milliseconds - if (funcs['' + curr]) { - recursion = true; - } else { - funcs['' + curr] = true; + // TODO: if somehow user switches keypress target before + // debounce timeout is triggered, we will only capture + // a single breadcrumb from the FIRST target (acceptable?) + return function(evt) { + var target; + try { + target = evt.target; + } catch (e) { + // just accessing event properties can throw an exception in some rare circumstances + // see: https://github.com/getsentry/raven-js/issues/838 + return; } + var tagName = target && target.tagName; - stack.push(item); - } - - if (depth) { - // console.log('depth is ' + depth); - // console.log('stack is ' + stack.length); - stack.splice(0, depth); - } + // only consider keypress events on actual input elements + // this will disregard keypresses targeting body (e.g. tabbing + // through elements, hotkeys, etc) + if ( + !tagName || + (tagName !== 'INPUT' && tagName !== 'TEXTAREA' && !target.isContentEditable) + ) + return; - var result = { - name: ex.name, - message: ex.message, - url: getLocationHref(), - stack: stack + // record first keypress in a series, but ignore subsequent + // keypresses until debounce clears + var timeout = self._keypressTimeout; + if (!timeout) { + self._breadcrumbEventHandler('input')(evt); + } + clearTimeout(timeout); + self._keypressTimeout = setTimeout(function() { + self._keypressTimeout = null; + }, debounceDuration); }; - augmentStackTraceWithInitialElement(result, ex.sourceURL || ex.fileName, ex.line || ex.lineNumber, ex.message || ex.description); - return result; - } - /** - * Computes a stack trace for an exception. - * @param {Error} ex - * @param {(string|number)=} depth - */ + }, + /** + * Captures a breadcrumb of type "navigation", normalizing input URLs + * @param to the originating URL + * @param from the target URL + * @private + */ + _captureUrlChange: function(from, to) { + var parsedLoc = parseUrl(this._location.href); + var parsedTo = parseUrl(to); + var parsedFrom = parseUrl(from); - function computeStackTrace(ex, depth) { - var stack = null; - depth = depth == null ? 0 : +depth; + // because onpopstate only tells you the "new" (to) value of location.href, and + // not the previous (from) value, we need to track the value of the current URL + // state ourselves + this._lastHref = to; - try { - stack = computeStackTraceFromStackProp(ex); + // Use only the path component of the URL if the URL matches the current + // document (almost all the time when using pushState) + if (parsedLoc.protocol === parsedTo.protocol && parsedLoc.host === parsedTo.host) + to = parsedTo.relative; + if (parsedLoc.protocol === parsedFrom.protocol && parsedLoc.host === parsedFrom.host) + from = parsedFrom.relative; - if (stack) { - return stack; + this.captureBreadcrumb({ + category: 'navigation', + data: { + to: to, + from: from } - } catch (e) { - if (TraceKit.debug) { - throw e; + }); + }, + + _patchFunctionToString: function() { + var self = this; + self._originalFunctionToString = Function.prototype.toString; + // eslint-disable-next-line no-extend-native + Function.prototype.toString = function() { + if (typeof this === 'function' && this.__raven__) { + return self._originalFunctionToString.apply(this.__orig__, arguments); } + return self._originalFunctionToString.apply(this, arguments); + }; + }, + + _unpatchFunctionToString: function() { + if (this._originalFunctionToString) { + // eslint-disable-next-line no-extend-native + Function.prototype.toString = this._originalFunctionToString; } + }, - try { - stack = computeStackTraceByWalkingCallerChain(ex, depth + 1); + /** + * Wrap timer functions and event targets to catch errors and provide + * better metadata. + */ + _instrumentTryCatch: function() { + var self = this; - if (stack) { - return stack; - } - } catch (e) { - if (TraceKit.debug) { - throw e; - } + var wrappedBuiltIns = self._wrappedBuiltIns; + + function wrapTimeFn(orig) { + return function(fn, t) { + // preserve arity + // Make a copy of the arguments to prevent deoptimization + // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments + var args = new Array(arguments.length); + for (var i = 0; i < args.length; ++i) { + args[i] = arguments[i]; + } + var originalCallback = args[0]; + if (isFunction(originalCallback)) { + args[0] = self.wrap(originalCallback); + } + + // IE < 9 doesn't support .call/.apply on setInterval/setTimeout, but it + // also supports only two arguments and doesn't care what this is, so we + // can just call the original function directly. + if (orig.apply) { + return orig.apply(this, args); + } else { + return orig(args[0], args[1]); + } + }; } - return { - name: ex.name, - message: ex.message, - url: getLocationHref() - }; - } + var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; - computeStackTrace.augmentStackTraceWithInitialElement = augmentStackTraceWithInitialElement; - computeStackTrace.computeStackTraceFromStackProp = computeStackTraceFromStackProp; - return computeStackTrace; -}(); + function wrapEventTarget(global) { + var proto = _window[global] && _window[global].prototype; + if (proto && proto.hasOwnProperty && proto.hasOwnProperty('addEventListener')) { + fill( + proto, + 'addEventListener', + function(orig) { + return function(evtName, fn, capture, secure) { + // preserve arity + try { + if (fn && fn.handleEvent) { + fn.handleEvent = self.wrap(fn.handleEvent); + } + } catch (err) { + // can sometimes get 'Permission denied to access property "handle Event' + } -var tracekit = TraceKit; + // More breadcrumb DOM capture ... done here and not in `_instrumentBreadcrumbs` + // so that we don't have more than one wrapper function + var before, clickHandler, keypressHandler; + + if ( + autoBreadcrumbs && + autoBreadcrumbs.dom && + (global === 'EventTarget' || global === 'Node') + ) { + // NOTE: generating multiple handlers per addEventListener invocation, should + // revisit and verify we can just use one (almost certainly) + clickHandler = self._breadcrumbEventHandler('click'); + keypressHandler = self._keypressEventHandler(); + before = function(evt) { + // need to intercept every DOM event in `before` argument, in case that + // same wrapped method is re-used for different events (e.g. mousemove THEN click) + // see #724 + if (!evt) return; + + var eventType; + try { + eventType = evt.type; + } catch (e) { + // just accessing event properties can throw an exception in some rare circumstances + // see: https://github.com/getsentry/raven-js/issues/838 + return; + } + if (eventType === 'click') return clickHandler(evt); + else if (eventType === 'keypress') return keypressHandler(evt); + }; + } + return orig.call( + this, + evtName, + self.wrap(fn, undefined, before), + capture, + secure + ); + }; + }, + wrappedBuiltIns + ); + fill( + proto, + 'removeEventListener', + function(orig) { + return function(evt, fn, capture, secure) { + try { + fn = fn && (fn.__raven_wrapper__ ? fn.__raven_wrapper__ : fn); + } catch (e) { + // ignore, accessing __raven_wrapper__ will throw in some Selenium environments + } + return orig.call(this, evt, fn, capture, secure); + }; + }, + wrappedBuiltIns + ); + } + } -var stringify_1 = createCommonjsModule(function (module, exports) { - /* - json-stringify-safe - Like JSON.stringify, but doesn't throw on circular references. - - Originally forked from https://github.com/isaacs/json-stringify-safe - version 5.0.1 on 3/8/2017 and modified to handle Errors serialization - and IE8 compatibility. Tests for this are in test/vendor. - - ISC license: https://github.com/isaacs/json-stringify-safe/blob/master/LICENSE - */ - exports = module.exports = stringify; - exports.getSerialize = serializer; - - function indexOf(haystack, needle) { - for (var i = 0; i < haystack.length; ++i) { - if (haystack[i] === needle) return i; - } - - return -1; - } + fill(_window, 'setTimeout', wrapTimeFn, wrappedBuiltIns); + fill(_window, 'setInterval', wrapTimeFn, wrappedBuiltIns); + if (_window.requestAnimationFrame) { + fill( + _window, + 'requestAnimationFrame', + function(orig) { + return function(cb) { + return orig(self.wrap(cb)); + }; + }, + wrappedBuiltIns + ); + } - function stringify(obj, replacer, spaces, cycleReplacer) { - return JSON.stringify(obj, serializer(replacer, cycleReplacer), spaces); - } // https://github.com/ftlabs/js-abbreviate/blob/fa709e5f139e7770a71827b1893f22418097fbda/index.js#L95-L106 + // event targets borrowed from bugsnag-js: + // https://github.com/bugsnag/bugsnag-js/blob/master/src/bugsnag.js#L666 + var eventTargets = [ + 'EventTarget', + 'Window', + 'Node', + 'ApplicationCache', + 'AudioTrackList', + 'ChannelMergerNode', + 'CryptoOperation', + 'EventSource', + 'FileReader', + 'HTMLUnknownElement', + 'IDBDatabase', + 'IDBRequest', + 'IDBTransaction', + 'KeyOperation', + 'MediaController', + 'MessagePort', + 'ModalWindow', + 'Notification', + 'SVGElementInstance', + 'Screen', + 'TextTrack', + 'TextTrackCue', + 'TextTrackList', + 'WebSocket', + 'WebSocketWorker', + 'Worker', + 'XMLHttpRequest', + 'XMLHttpRequestEventTarget', + 'XMLHttpRequestUpload' + ]; + for (var i = 0; i < eventTargets.length; i++) { + wrapEventTarget(eventTargets[i]); + } + }, + /** + * Instrument browser built-ins w/ breadcrumb capturing + * - XMLHttpRequests + * - DOM interactions (click/typing) + * - window.location changes + * - console + * + * Can be disabled or individually configured via the `autoBreadcrumbs` config option + */ + _instrumentBreadcrumbs: function() { + var self = this; + var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; - function stringifyError(value) { - var err = { - // These properties are implemented as magical getters and don't show up in for in - stack: value.stack, - message: value.message, - name: value.name - }; + var wrappedBuiltIns = self._wrappedBuiltIns; - for (var i in value) { - if (Object.prototype.hasOwnProperty.call(value, i)) { - err[i] = value[i]; + function wrapProp(prop, xhr) { + if (prop in xhr && isFunction(xhr[prop])) { + fill(xhr, prop, function(orig) { + return self.wrap(orig); + }); // intentionally don't track filled methods on XHR instances } } - return err; - } + if (autoBreadcrumbs.xhr && 'XMLHttpRequest' in _window) { + var xhrproto = _window.XMLHttpRequest && _window.XMLHttpRequest.prototype; + fill( + xhrproto, + 'open', + function(origOpen) { + return function(method, url) { + // preserve arity - function serializer(replacer, cycleReplacer) { - var stack = []; - var keys = []; + // if Sentry key appears in URL, don't capture + if (isString(url) && url.indexOf(self._globalKey) === -1) { + this.__raven_xhr = { + method: method, + url: url, + status_code: null + }; + } - if (cycleReplacer == null) { - cycleReplacer = function cycleReplacer(key, value) { - if (stack[0] === value) { - return '[Circular ~]'; - } + return origOpen.apply(this, arguments); + }; + }, + wrappedBuiltIns + ); + + fill( + xhrproto, + 'send', + function(origSend) { + return function() { + // preserve arity + var xhr = this; - return '[Circular ~.' + keys.slice(0, indexOf(stack, value)).join('.') + ']'; - }; - } + function onreadystatechangeHandler() { + if (xhr.__raven_xhr && xhr.readyState === 4) { + try { + // touching statusCode in some platforms throws + // an exception + xhr.__raven_xhr.status_code = xhr.status; + } catch (e) { + /* do nothing */ + } - return function (key, value) { - if (stack.length > 0) { - var thisPos = indexOf(stack, this); - ~thisPos ? stack.splice(thisPos + 1) : stack.push(this); - ~thisPos ? keys.splice(thisPos, Infinity, key) : keys.push(key); + self.captureBreadcrumb({ + type: 'http', + category: 'xhr', + data: xhr.__raven_xhr + }); + } + } - if (~indexOf(stack, value)) { - value = cycleReplacer.call(this, key, value); - } - } else { - stack.push(value); - } + var props = ['onload', 'onerror', 'onprogress']; + for (var j = 0; j < props.length; j++) { + wrapProp(props[j], xhr); + } - return replacer == null ? value instanceof Error ? stringifyError(value) : value : replacer.call(this, key, value); - }; - } -}); -var stringify_2 = stringify_1.getSerialize; + if ('onreadystatechange' in xhr && isFunction(xhr.onreadystatechange)) { + fill( + xhr, + 'onreadystatechange', + function(orig) { + return self.wrap(orig, undefined, onreadystatechangeHandler); + } /* intentionally don't track this instrumentation */ + ); + } else { + // if onreadystatechange wasn't actually set by the page on this xhr, we + // are free to set our own and capture the breadcrumb + xhr.onreadystatechange = onreadystatechangeHandler; + } -function RavenConfigError(message) { - this.name = 'RavenConfigError'; - this.message = message; -} + return origSend.apply(this, arguments); + }; + }, + wrappedBuiltIns + ); + } -RavenConfigError.prototype = new Error(); -RavenConfigError.prototype.constructor = RavenConfigError; -var configError = RavenConfigError; + if (autoBreadcrumbs.xhr && supportsFetch()) { + fill( + _window, + 'fetch', + function(origFetch) { + return function() { + // preserve arity + // Make a copy of the arguments to prevent deoptimization + // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments + var args = new Array(arguments.length); + for (var i = 0; i < args.length; ++i) { + args[i] = arguments[i]; + } -var wrapMethod = function wrapMethod(console, level, callback) { - var originalConsoleLevel = console[level]; - var originalConsole = console; + var fetchInput = args[0]; + var method = 'GET'; + var url; - if (!(level in console)) { - return; - } + if (typeof fetchInput === 'string') { + url = fetchInput; + } else if ('Request' in _window && fetchInput instanceof _window.Request) { + url = fetchInput.url; + if (fetchInput.method) { + method = fetchInput.method; + } + } else { + url = '' + fetchInput; + } - var sentryLevel = level === 'warn' ? 'warning' : level; + // if Sentry key appears in URL, don't capture, as it's our own request + if (url.indexOf(self._globalKey) !== -1) { + return origFetch.apply(this, args); + } - console[level] = function () { - var args = [].slice.call(arguments); - var msg = utils.safeJoin(args, ' '); - var data = { - level: sentryLevel, - logger: 'console', - extra: { - arguments: args - } - }; + if (args[1] && args[1].method) { + method = args[1].method; + } - if (level === 'assert') { - if (args[0] === false) { - // Default browsers message - msg = 'Assertion failed: ' + (utils.safeJoin(args.slice(1), ' ') || 'console.assert'); - data.extra.arguments = args.slice(1); - callback && callback(msg, data); - } - } else { - callback && callback(msg, data); - } // this fails for some browsers. :( + var fetchData = { + method: method, + url: url, + status_code: null + }; + return origFetch + .apply(this, args) + .then(function(response) { + fetchData.status_code = response.status; + + self.captureBreadcrumb({ + type: 'http', + category: 'fetch', + data: fetchData + }); + + return response; + }) + ['catch'](function(err) { + // if there is an error performing the request + self.captureBreadcrumb({ + type: 'http', + category: 'fetch', + data: fetchData, + level: 'error' + }); + + throw err; + }); + }; + }, + wrappedBuiltIns + ); + } - if (originalConsoleLevel) { - // IE9 doesn't allow calling apply on console functions directly - // See: https://stackoverflow.com/questions/5472938/does-ie9-support-console-log-and-is-it-a-real-function#answer-5473193 - Function.prototype.apply.call(originalConsoleLevel, originalConsole, args); + // Capture breadcrumbs from any click that is unhandled / bubbled up all the way + // to the document. Do this before we instrument addEventListener. + if (autoBreadcrumbs.dom && this._hasDocument) { + if (_document.addEventListener) { + _document.addEventListener('click', self._breadcrumbEventHandler('click'), false); + _document.addEventListener('keypress', self._keypressEventHandler(), false); + } else if (_document.attachEvent) { + // IE8 Compatibility + _document.attachEvent('onclick', self._breadcrumbEventHandler('click')); + _document.attachEvent('onkeypress', self._keypressEventHandler()); + } } - }; -}; -var console$1 = { - wrapMethod: wrapMethod -}; + // record navigation (URL) changes + // NOTE: in Chrome App environment, touching history.pushState, *even inside + // a try/catch block*, will cause Chrome to output an error to console.error + // borrowed from: https://github.com/angular/angular.js/pull/13945/files + var chrome = _window.chrome; + var isChromePackagedApp = chrome && chrome.app && chrome.app.runtime; + var hasPushAndReplaceState = + !isChromePackagedApp && + _window.history && + history.pushState && + history.replaceState; + if (autoBreadcrumbs.location && hasPushAndReplaceState) { + // TODO: remove onpopstate handler on uninstall() + var oldOnPopState = _window.onpopstate; + _window.onpopstate = function() { + var currentHref = self._location.href; + self._captureUrlChange(self._lastHref, currentHref); -/*global XDomainRequest:false */ + if (oldOnPopState) { + return oldOnPopState.apply(this, arguments); + } + }; -var isError = utils.isError; -var isObject = utils.isObject; -var isErrorEvent = utils.isErrorEvent; -var isUndefined = utils.isUndefined; -var isFunction = utils.isFunction; -var isString = utils.isString; -var isArray = utils.isArray; -var isEmptyObject = utils.isEmptyObject; -var each = utils.each; -var objectMerge = utils.objectMerge; -var truncate = utils.truncate; -var objectFrozen = utils.objectFrozen; -var hasKey = utils.hasKey; -var joinRegExp = utils.joinRegExp; -var urlencode = utils.urlencode; -var uuid4 = utils.uuid4; -var htmlTreeAsString = utils.htmlTreeAsString; -var isSameException = utils.isSameException; -var isSameStacktrace = utils.isSameStacktrace; -var parseUrl = utils.parseUrl; -var fill = utils.fill; -var supportsFetch = utils.supportsFetch; -var wrapConsoleMethod = console$1.wrapMethod; -var dsnKeys = 'source protocol user pass host port path'.split(' '); -var dsnPattern = /^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/; + var historyReplacementFunction = function(origHistFunction) { + // note history.pushState.length is 0; intentionally not declaring + // params to preserve 0 arity + return function(/* state, title, url */) { + var url = arguments.length > 2 ? arguments[2] : undefined; -function now() { - return +new Date(); -} // This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) + // url argument is optional + if (url) { + // coerce to string (this is what pushState does) + self._captureUrlChange(self._lastHref, url + ''); + } + return origHistFunction.apply(this, arguments); + }; + }; -var _window$1 = typeof window !== 'undefined' ? window : typeof commonjsGlobal !== 'undefined' ? commonjsGlobal : typeof self !== 'undefined' ? self : {}; + fill(history, 'pushState', historyReplacementFunction, wrappedBuiltIns); + fill(history, 'replaceState', historyReplacementFunction, wrappedBuiltIns); + } -var _document = _window$1.document; -var _navigator = _window$1.navigator; + if (autoBreadcrumbs.console && 'console' in _window && console.log) { + // console + var consoleMethodCallback = function(msg, data) { + self.captureBreadcrumb({ + message: msg, + level: data.level, + category: 'console' + }); + }; -function keepOriginalCallback(original, callback) { - return isFunction(callback) ? function (data) { - return callback(data, original); - } : callback; -} // First, check for JSON support -// If there is no JSON, we no-op the core features of Raven -// since JSON is required to encode the payload + each(['debug', 'info', 'warn', 'error', 'log'], function(_, level) { + wrapConsoleMethod(console, level, consoleMethodCallback); + }); + } + }, + _restoreBuiltIns: function() { + // restore any wrapped builtins + var builtin; + while (this._wrappedBuiltIns.length) { + builtin = this._wrappedBuiltIns.shift(); -function Raven$1() { - this._hasJSON = !!(_typeof(JSON) === 'object' && JSON.stringify); // Raven can run in contexts where there's no document (react-native) + var obj = builtin[0], + name = builtin[1], + orig = builtin[2]; - this._hasDocument = !isUndefined(_document); - this._hasNavigator = !isUndefined(_navigator); - this._lastCapturedException = null; - this._lastData = null; - this._lastEventId = null; - this._globalServer = null; - this._globalKey = null; - this._globalProject = null; - this._globalContext = {}; - this._globalOptions = { - // SENTRY_RELEASE can be injected by https://github.com/getsentry/sentry-webpack-plugin - release: _window$1.SENTRY_RELEASE && _window$1.SENTRY_RELEASE.id, - logger: 'javascript', - ignoreErrors: [], - ignoreUrls: [], - whitelistUrls: [], - includePaths: [], - headers: null, - collectWindowErrors: true, - maxMessageLength: 0, - // By default, truncates URL values to 250 chars - maxUrlLength: 250, - stackTraceLimit: 50, - autoBreadcrumbs: true, - instrument: true, - sampleRate: 1 - }; - this._fetchDefaults = { - method: 'POST', - keepalive: true, - referrerPolicy: 'origin' - }; - this._ignoreOnError = 0; - this._isRavenInstalled = false; - this._originalErrorStackTraceLimit = Error.stackTraceLimit; // capture references to window.console *and* all its methods first - // before the console plugin has a chance to monkey patch + obj[name] = orig; + } + }, - this._originalConsole = _window$1.console || {}; - this._originalConsoleMethods = {}; - this._plugins = []; - this._startTime = now(); - this._wrappedBuiltIns = []; - this._breadcrumbs = []; - this._lastCapturedEvent = null; - this._keypressTimeout; - this._location = _window$1.location; - this._lastHref = this._location && this._location.href; + _restoreConsole: function() { + // eslint-disable-next-line guard-for-in + for (var method in this._originalConsoleMethods) { + this._originalConsole[method] = this._originalConsoleMethods[method]; + } + }, - this._resetBackoff(); // eslint-disable-next-line guard-for-in + _drainPlugins: function() { + var self = this; + // FIX ME TODO + each(this._plugins, function(_, plugin) { + var installer = plugin[0]; + var args = plugin[1]; + installer.apply(self, [self].concat(args)); + }); + }, - for (var method in this._originalConsole) { - this._originalConsoleMethods[method] = this._originalConsole[method]; - } -} -/* - * The core Raven singleton - * - * @this {Raven} - */ + _parseDSN: function(str) { + var m = dsnPattern.exec(str), + dsn = {}, + i = 7; + try { + while (i--) dsn[dsnKeys[i]] = m[i] || ''; + } catch (e) { + throw new RavenConfigError('Invalid DSN: ' + str); + } -Raven$1.prototype = { - // Hardcode version string so that raven source can be loaded directly via - // webpack (using a build step causes webpack #1617). Grunt verifies that - // this value matches package.json during build. - // See: https://github.com/getsentry/raven-js/issues/465 - VERSION: '3.22.2', - debug: false, - TraceKit: tracekit, - // alias to TraceKit + if (dsn.pass && !this._globalOptions.allowSecretKey) { + throw new RavenConfigError( + 'Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key' + ); + } - /* - * Configure Raven with a DSN and extra options - * - * @param {string} dsn The public Sentry DSN - * @param {object} options Set of global options [optional] - * @return {Raven} - */ - config: function config(dsn, options) { - var self = this; + return dsn; + }, - if (self._globalServer) { - this._logDebug('error', 'Error: Raven has already been configured'); + _getGlobalServer: function(uri) { + // assemble the endpoint from the uri pieces + var globalServer = '//' + uri.host + (uri.port ? ':' + uri.port : ''); - return self; + if (uri.protocol) { + globalServer = uri.protocol + ':' + globalServer; } + return globalServer; + }, - if (!dsn) return self; - var globalOptions = self._globalOptions; // merge in options - - if (options) { - each(options, function (key, value) { - // tags and extra are special and need to be put into context - if (key === 'tags' || key === 'extra' || key === 'user') { - self._globalContext[key] = value; - } else { - globalOptions[key] = value; - } - }); + _handleOnErrorStackInfo: function() { + // if we are intentionally ignoring errors via onerror, bail out + if (!this._ignoreOnError) { + this._handleStackInfo.apply(this, arguments); } + }, - self.setDSN(dsn); // "Script error." is hard coded into browsers for errors that it can't read. - // this is the result of a script being pulled in from an external domain and CORS. + _handleStackInfo: function(stackInfo, options) { + var frames = this._prepareFrames(stackInfo, options); - globalOptions.ignoreErrors.push(/^Script error\.?$/); - globalOptions.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/); // join regexp rules into one big rule + this._triggerEvent('handle', { + stackInfo: stackInfo, + options: options + }); - globalOptions.ignoreErrors = joinRegExp(globalOptions.ignoreErrors); - globalOptions.ignoreUrls = globalOptions.ignoreUrls.length ? joinRegExp(globalOptions.ignoreUrls) : false; - globalOptions.whitelistUrls = globalOptions.whitelistUrls.length ? joinRegExp(globalOptions.whitelistUrls) : false; - globalOptions.includePaths = joinRegExp(globalOptions.includePaths); - globalOptions.maxBreadcrumbs = Math.max(0, Math.min(globalOptions.maxBreadcrumbs || 100, 100)); // default and hard limit is 100 + this._processException( + stackInfo.name, + stackInfo.message, + stackInfo.url, + stackInfo.lineno, + frames, + options + ); + }, - var autoBreadcrumbDefaults = { - xhr: true, - console: true, - dom: true, - location: true, - sentry: true - }; - var autoBreadcrumbs = globalOptions.autoBreadcrumbs; + _prepareFrames: function(stackInfo, options) { + var self = this; + var frames = []; + if (stackInfo.stack && stackInfo.stack.length) { + each(stackInfo.stack, function(i, stack) { + var frame = self._normalizeFrame(stack, stackInfo.url); + if (frame) { + frames.push(frame); + } + }); - if ({}.toString.call(autoBreadcrumbs) === '[object Object]') { - autoBreadcrumbs = objectMerge(autoBreadcrumbDefaults, autoBreadcrumbs); - } else if (autoBreadcrumbs !== false) { - autoBreadcrumbs = autoBreadcrumbDefaults; + // e.g. frames captured via captureMessage throw + if (options && options.trimHeadFrames) { + for (var j = 0; j < options.trimHeadFrames && j < frames.length; j++) { + frames[j].in_app = false; + } + } } + frames = frames.slice(0, this._globalOptions.stackTraceLimit); + return frames; + }, - globalOptions.autoBreadcrumbs = autoBreadcrumbs; - var instrumentDefaults = { - tryCatch: true + _normalizeFrame: function(frame, stackInfoUrl) { + // normalize the frames data + var normalized = { + filename: frame.url, + lineno: frame.line, + colno: frame.column, + function: frame.func || '?' }; - var instrument = globalOptions.instrument; - if ({}.toString.call(instrument) === '[object Object]') { - instrument = objectMerge(instrumentDefaults, instrument); - } else if (instrument !== false) { - instrument = instrumentDefaults; + // Case when we don't have any information about the error + // E.g. throwing a string or raw object, instead of an `Error` in Firefox + // Generating synthetic error doesn't add any value here + // + // We should probably somehow let a user know that they should fix their code + if (!frame.url) { + normalized.filename = stackInfoUrl; // fallback to whole stacks url from onerror handler } - globalOptions.instrument = instrument; - tracekit.collectWindowErrors = !!globalOptions.collectWindowErrors; // return for chaining + normalized.in_app = !// determine if an exception came from outside of our app + // first we check the global includePaths list. + ( + (!!this._globalOptions.includePaths.test && + !this._globalOptions.includePaths.test(normalized.filename)) || + // Now we check for fun, if the function name is Raven or TraceKit + /(Raven|TraceKit)\./.test(normalized['function']) || + // finally, we do a last ditch effort and check for raven.min.js + /raven\.(min\.)?js$/.test(normalized.filename) + ); - return self; + return normalized; }, - /* - * Installs a global window.onerror error handler - * to capture and report uncaught exceptions. - * At this point, install() is required to be called due - * to the way TraceKit is set up. - * - * @return {Raven} - */ - install: function install() { - var self = this; - - if (self.isSetup() && !self._isRavenInstalled) { - tracekit.report.subscribe(function () { - self._handleOnErrorStackInfo.apply(self, arguments); - }); - - self._patchFunctionToString(); + _processException: function(type, message, fileurl, lineno, frames, options) { + var prefixedMessage = (type ? type + ': ' : '') + (message || ''); + if ( + !!this._globalOptions.ignoreErrors.test && + (this._globalOptions.ignoreErrors.test(message) || + this._globalOptions.ignoreErrors.test(prefixedMessage)) + ) { + return; + } - if (self._globalOptions.instrument && self._globalOptions.instrument.tryCatch) { - self._instrumentTryCatch(); - } + var stacktrace; - if (self._globalOptions.autoBreadcrumbs) self._instrumentBreadcrumbs(); // Install all of the plugins + if (frames && frames.length) { + fileurl = frames[0].filename || fileurl; + // Sentry expects frames oldest to newest + // and JS sends them as newest to oldest + frames.reverse(); + stacktrace = {frames: frames}; + } else if (fileurl) { + stacktrace = { + frames: [ + { + filename: fileurl, + lineno: lineno, + in_app: true + } + ] + }; + } - self._drainPlugins(); + if ( + !!this._globalOptions.ignoreUrls.test && + this._globalOptions.ignoreUrls.test(fileurl) + ) { + return; + } - self._isRavenInstalled = true; + if ( + !!this._globalOptions.whitelistUrls.test && + !this._globalOptions.whitelistUrls.test(fileurl) + ) { + return; } - Error.stackTraceLimit = self._globalOptions.stackTraceLimit; - return this; + var data = objectMerge( + { + // sentry.interfaces.Exception + exception: { + values: [ + { + type: type, + value: message, + stacktrace: stacktrace + } + ] + }, + culprit: fileurl + }, + options + ); + + // Fire away! + this._send(data); }, - /* - * Set the DSN (can be called multiple time unlike config) - * - * @param {string} dsn The public Sentry DSN - */ - setDSN: function setDSN(dsn) { - var self = this, - uri = self._parseDSN(dsn), - lastSlash = uri.path.lastIndexOf('/'), - path = uri.path.substr(1, lastSlash); + _trimPacket: function(data) { + // For now, we only want to truncate the two different messages + // but this could/should be expanded to just trim everything + var max = this._globalOptions.maxMessageLength; + if (data.message) { + data.message = truncate(data.message, max); + } + if (data.exception) { + var exception = data.exception.values[0]; + exception.value = truncate(exception.value, max); + } - self._dsn = dsn; - self._globalKey = uri.user; - self._globalSecret = uri.pass && uri.pass.substr(1); - self._globalProject = uri.path.substr(lastSlash + 1); - self._globalServer = self._getGlobalServer(uri); - self._globalEndpoint = self._globalServer + '/' + path + 'api/' + self._globalProject + '/store/'; // Reset backoff state since we may be pointing at a - // new project/server + var request = data.request; + if (request) { + if (request.url) { + request.url = truncate(request.url, this._globalOptions.maxUrlLength); + } + if (request.Referer) { + request.Referer = truncate(request.Referer, this._globalOptions.maxUrlLength); + } + } - this._resetBackoff(); + if (data.breadcrumbs && data.breadcrumbs.values) + this._trimBreadcrumbs(data.breadcrumbs); + + return data; }, - /* - * Wrap code within a context so Raven can capture errors - * reliably across domains that is executed immediately. - * - * @param {object} options A specific set of options for this context [optional] - * @param {function} func The callback to be immediately executed within the context - * @param {array} args An array of arguments to be called with the callback [optional] - */ - context: function context(options, func, args) { - if (isFunction(options)) { - args = func || []; - func = options; - options = undefined; - } + /** + * Truncate breadcrumb values (right now just URLs) + */ + _trimBreadcrumbs: function(breadcrumbs) { + // known breadcrumb properties with urls + // TODO: also consider arbitrary prop values that start with (https?)?:// + var urlProps = ['to', 'from', 'url'], + urlProp, + crumb, + data; - return this.wrap(options, func).apply(this, args); + for (var i = 0; i < breadcrumbs.values.length; ++i) { + crumb = breadcrumbs.values[i]; + if ( + !crumb.hasOwnProperty('data') || + !isObject(crumb.data) || + objectFrozen(crumb.data) + ) + continue; + + data = objectMerge({}, crumb.data); + for (var j = 0; j < urlProps.length; ++j) { + urlProp = urlProps[j]; + if (data.hasOwnProperty(urlProp) && data[urlProp]) { + data[urlProp] = truncate(data[urlProp], this._globalOptions.maxUrlLength); + } + } + breadcrumbs.values[i].data = data; + } }, - /* - * Wrap code within a context and returns back a new function to be executed - * - * @param {object} options A specific set of options for this context [optional] - * @param {function} func The function to be wrapped in a new context - * @param {function} func A function to call before the try/catch wrapper [optional, private] - * @return {function} The newly wrapped functions with a context - */ - wrap: function wrap(options, func, _before) { - var self = this; // 1 argument has been passed, and it's not a function - // so just return it + _getHttpData: function() { + if (!this._hasNavigator && !this._hasDocument) return; + var httpData = {}; - if (isUndefined(func) && !isFunction(options)) { - return options; - } // options is optional + if (this._hasNavigator && _navigator.userAgent) { + httpData.headers = { + 'User-Agent': navigator.userAgent + }; + } + // Check in `window` instead of `document`, as we may be in ServiceWorker environment + if (_window.location && _window.location.href) { + httpData.url = _window.location.href; + } - if (isFunction(options)) { - func = options; - options = undefined; - } // At this point, we've passed along 2 arguments, and the second one - // is not a function either, so we'll just return the second argument. + if (this._hasDocument && _document.referrer) { + if (!httpData.headers) httpData.headers = {}; + httpData.headers.Referer = _document.referrer; + } + return httpData; + }, - if (!isFunction(func)) { - return func; - } // We don't wanna wrap it twice! + _resetBackoff: function() { + this._backoffDuration = 0; + this._backoffStart = null; + }, + _shouldBackoff: function() { + return this._backoffDuration && now() - this._backoffStart < this._backoffDuration; + }, - try { - if (func.__raven__) { - return func; - } // If this has already been wrapped in the past, return that + /** + * Returns true if the in-process data payload matches the signature + * of the previously-sent data + * + * NOTE: This has to be done at this level because TraceKit can generate + * data from window.onerror WITHOUT an exception object (IE8, IE9, + * other old browsers). This can take the form of an "exception" + * data object with a single frame (derived from the onerror args). + */ + _isRepeatData: function(current) { + var last = this._lastData; + if ( + !last || + current.message !== last.message || // defined for captureMessage + current.culprit !== last.culprit // defined for captureException/onerror + ) + return false; - if (func.__raven_wrapper__) { - return func.__raven_wrapper__; - } - } catch (e) { - // Just accessing custom props in some Selenium environments - // can cause a "Permission denied" exception (see raven-js#495). - // Bail on wrapping and return the function as-is (defers to window.onerror). - return func; + // Stacktrace interface (i.e. from captureMessage) + if (current.stacktrace || last.stacktrace) { + return isSameStacktrace(current.stacktrace, last.stacktrace); + } else if (current.exception || last.exception) { + // Exception interface (i.e. from captureException/onerror) + return isSameException(current.exception, last.exception); } - function wrapped() { - var args = [], - i = arguments.length, - deep = !options || options && options.deep !== false; - - if (_before && isFunction(_before)) { - _before.apply(this, arguments); - } // Recursively wrap all of a function's arguments that are - // functions themselves. + return true; + }, + _setBackoffState: function(request) { + // If we are already in a backoff state, don't change anything + if (this._shouldBackoff()) { + return; + } - while (i--) { - args[i] = deep ? self.wrap(options, arguments[i]) : arguments[i]; - } + var status = request.status; - try { - // Attempt to invoke user-land function - // NOTE: If you are a Sentry user, and you are seeing this stack frame, it - // means Raven caught an error invoking your application code. This is - // expected behavior and NOT indicative of a bug with Raven.js. - return func.apply(this, args); - } catch (e) { - self._ignoreNextOnError(); + // 400 - project_id doesn't exist or some other fatal + // 401 - invalid/revoked dsn + // 429 - too many requests + if (!(status === 400 || status === 401 || status === 429)) return; - self.captureException(e, options); - throw e; + var retry; + try { + // If Retry-After is not in Access-Control-Expose-Headers, most + // browsers will throw an exception trying to access it + if (supportsFetch()) { + retry = request.headers.get('Retry-After'); + } else { + retry = request.getResponseHeader('Retry-After'); } - } // copy over properties of the old function - - for (var property in func) { - if (hasKey(func, property)) { - wrapped[property] = func[property]; - } + // Retry-After is returned in seconds + retry = parseInt(retry, 10) * 1000; + } catch (e) { + /* eslint no-empty:0 */ } - wrapped.prototype = func.prototype; - func.__raven_wrapper__ = wrapped; // Signal that this function has been wrapped/filled already - // for both debugging and to prevent it to being wrapped/filled twice + this._backoffDuration = retry + ? // If Sentry server returned a Retry-After value, use it + retry + : // Otherwise, double the last backoff duration (starts at 1 sec) + this._backoffDuration * 2 || 1000; - wrapped.__raven__ = true; - wrapped.__orig__ = func; - return wrapped; + this._backoffStart = now(); }, - /* - * Uninstalls the global error handler. - * - * @return {Raven} - */ - uninstall: function uninstall() { - tracekit.report.uninstall(); + _send: function(data) { + var globalOptions = this._globalOptions; - this._unpatchFunctionToString(); + var baseData = { + project: this._globalProject, + logger: globalOptions.logger, + platform: 'javascript' + }, + httpData = this._getHttpData(); - this._restoreBuiltIns(); + if (httpData) { + baseData.request = httpData; + } - this._restoreConsole(); + // HACK: delete `trimHeadFrames` to prevent from appearing in outbound payload + if (data.trimHeadFrames) delete data.trimHeadFrames; - Error.stackTraceLimit = this._originalErrorStackTraceLimit; - this._isRavenInstalled = false; - return this; - }, + data = objectMerge(baseData, data); - /* - * Manually capture an exception and send it over to Sentry - * - * @param {error} ex An exception to be logged - * @param {object} options A specific set of options for this error [optional] - * @return {Raven} - */ - captureException: function captureException(ex, options) { - options = objectMerge({ - trimHeadFrames: 0 - }, options ? options : {}); // Cases for sending ex as a message, rather than an exception + // Merge in the tags and extra separately since objectMerge doesn't handle a deep merge + data.tags = objectMerge(objectMerge({}, this._globalContext.tags), data.tags); + data.extra = objectMerge(objectMerge({}, this._globalContext.extra), data.extra); - var isNotError = !isError(ex); - var isNotErrorEvent = !isErrorEvent(ex); - var isErrorEventWithoutError = isErrorEvent(ex) && !ex.error; + // Send along our own collected metadata with extra + data.extra['session:duration'] = now() - this._startTime; - if (isNotError && isNotErrorEvent || isErrorEventWithoutError) { - return this.captureMessage(ex, objectMerge(options, { - stacktrace: true, - // if we fall back to captureMessage, default to attempting a new trace - trimHeadFrames: options.trimHeadFrames + 1 - })); - } // Get actual Error from ErrorEvent + if (this._breadcrumbs && this._breadcrumbs.length > 0) { + // intentionally make shallow copy so that additions + // to breadcrumbs aren't accidentally sent in this request + data.breadcrumbs = { + values: [].slice.call(this._breadcrumbs, 0) + }; + } + if (this._globalContext.user) { + // sentry.interfaces.User + data.user = this._globalContext.user; + } - if (isErrorEvent(ex)) ex = ex.error; // Store the raw exception object for potential debugging and introspection + // Include the environment if it's defined in globalOptions + if (globalOptions.environment) data.environment = globalOptions.environment; - this._lastCapturedException = ex; // TraceKit.report will re-raise any exception passed to it, - // which means you have to wrap it in try/catch. Instead, we - // can wrap it here and only re-raise if TraceKit.report - // raises an exception different from the one we asked to - // report on. + // Include the release if it's defined in globalOptions + if (globalOptions.release) data.release = globalOptions.release; - try { - var stack = tracekit.computeStackTrace(ex); + // Include server_name if it's defined in globalOptions + if (globalOptions.serverName) data.server_name = globalOptions.serverName; - this._handleStackInfo(stack, options); - } catch (ex1) { - if (ex !== ex1) { - throw ex1; + data = this._sanitizeData(data); + + // Cleanup empty properties before sending them to the server + Object.keys(data).forEach(function(key) { + if (data[key] == null || data[key] === '' || isEmptyObject(data[key])) { + delete data[key]; } + }); + + if (isFunction(globalOptions.dataCallback)) { + data = globalOptions.dataCallback(data) || data; } - return this; - }, + // Why?????????? + if (!data || isEmptyObject(data)) { + return; + } - /* - * Manually send a message to Sentry - * - * @param {string} msg A plain message to be captured in Sentry - * @param {object} options A specific set of options for this message [optional] - * @return {Raven} - */ - captureMessage: function captureMessage(msg, options) { - // config() automagically converts ignoreErrors from a list to a RegExp so we need to test for an - // early call; we'll error on the side of logging anything called before configuration since it's - // probably something you should see: - if (!!this._globalOptions.ignoreErrors.test && this._globalOptions.ignoreErrors.test(msg)) { + // Check if the request should be filtered or not + if ( + isFunction(globalOptions.shouldSendCallback) && + !globalOptions.shouldSendCallback(data) + ) { return; } - options = options || {}; - var data = objectMerge({ - message: msg + '' // Make sure it's actually a string + // Backoff state: Sentry server previously responded w/ an error (e.g. 429 - too many requests), + // so drop requests until "cool-off" period has elapsed. + if (this._shouldBackoff()) { + this._logDebug('warn', 'Raven dropped error due to backoff: ', data); + return; + } - }, options); - var ex; // Generate a "synthetic" stack trace from this point. - // NOTE: If you are a Sentry user, and you are seeing this stack frame, it is NOT indicative - // of a bug with Raven.js. Sentry generates synthetic traces either by configuration, - // or if it catches a thrown object without a "stack" property. + if (typeof globalOptions.sampleRate === 'number') { + if (Math.random() < globalOptions.sampleRate) { + this._sendProcessedPayload(data); + } + } else { + this._sendProcessedPayload(data); + } + }, - try { - throw new Error(msg); - } catch (ex1) { - ex = ex1; - } // null exception name so `Error` isn't prefixed to msg + _sanitizeData: function(data) { + return sanitize(data, this._globalOptions.sanitizeKeys); + }, + _getUuid: function() { + return uuid4(); + }, - ex.name = null; - var stack = tracekit.computeStackTrace(ex); // stack[0] is `throw new Error(msg)` call itself, we are interested in the frame that was just before that, stack[1] + _sendProcessedPayload: function(data, callback) { + var self = this; + var globalOptions = this._globalOptions; - var initialCall = isArray(stack.stack) && stack.stack[1]; - var fileurl = initialCall && initialCall.url || ''; + if (!this.isSetup()) return; + + // Try and clean up the packet before sending by truncating long values + data = this._trimPacket(data); - if (!!this._globalOptions.ignoreUrls.test && this._globalOptions.ignoreUrls.test(fileurl)) { + // ideally duplicate error testing should occur *before* dataCallback/shouldSendCallback, + // but this would require copying an un-truncated copy of the data packet, which can be + // arbitrarily deep (extra_data) -- could be worthwhile? will revisit + if (!this._globalOptions.allowDuplicates && this._isRepeatData(data)) { + this._logDebug('warn', 'Raven dropped repeat event: ', data); return; } - if (!!this._globalOptions.whitelistUrls.test && !this._globalOptions.whitelistUrls.test(fileurl)) { - return; + // Send along an event_id if not explicitly passed. + // This event_id can be used to reference the error within Sentry itself. + // Set lastEventId after we know the error should actually be sent + this._lastEventId = data.event_id || (data.event_id = this._getUuid()); + + // Store outbound payload after trim + this._lastData = data; + + this._logDebug('debug', 'Raven about to send:', data); + + var auth = { + sentry_version: '7', + sentry_client: 'raven-js/' + this.VERSION, + sentry_key: this._globalKey + }; + + if (this._globalSecret) { + auth.sentry_secret = this._globalSecret; } - if (this._globalOptions.stacktrace || options && options.stacktrace) { - options = objectMerge({ - // fingerprint on msg, not stack trace (legacy behavior, could be - // revisited) - fingerprint: msg, - // since we know this is a synthetic trace, the top N-most frames - // MUST be from Raven.js, so mark them as in_app later by setting - // trimHeadFrames - trimHeadFrames: (options.trimHeadFrames || 0) + 1 - }, options); + var exception = data.exception && data.exception.values[0]; - var frames = this._prepareFrames(stack, options); + // only capture 'sentry' breadcrumb is autoBreadcrumbs is truthy + if ( + this._globalOptions.autoBreadcrumbs && + this._globalOptions.autoBreadcrumbs.sentry + ) { + this.captureBreadcrumb({ + category: 'sentry', + message: exception + ? (exception.type ? exception.type + ': ' : '') + exception.value + : data.message, + event_id: data.event_id, + level: data.level || 'error' // presume error unless specified + }); + } - data.stacktrace = { - // Sentry expects frames oldest to newest - frames: frames.reverse() - }; - } // Fire away! + var url = this._globalEndpoint; + (globalOptions.transport || this._makeRequest).call(this, { + url: url, + auth: auth, + data: data, + options: globalOptions, + onSuccess: function success() { + self._resetBackoff(); + self._triggerEvent('success', { + data: data, + src: url + }); + callback && callback(); + }, + onError: function failure(error) { + self._logDebug('error', 'Raven transport failed to send: ', error); - this._send(data); + if (error.request) { + self._setBackoffState(error.request); + } - return this; + self._triggerEvent('failure', { + data: data, + src: url + }); + error = error || new Error('Raven send failed (no additional details provided)'); + callback && callback(error); + } + }); }, - captureBreadcrumb: function captureBreadcrumb(obj) { - var crumb = objectMerge({ - timestamp: now() / 1000 - }, obj); - if (isFunction(this._globalOptions.breadcrumbCallback)) { - var result = this._globalOptions.breadcrumbCallback(crumb); + _makeRequest: function(opts) { + // Auth is intentionally sent as part of query string (NOT as custom HTTP header) to avoid preflight CORS requests + var url = opts.url + '?' + urlencode(opts.auth); - if (isObject(result) && !isEmptyObject(result)) { - crumb = result; - } else if (result === false) { - return this; - } - } + var evaluatedHeaders = null; + var evaluatedFetchParameters = {}; - this._breadcrumbs.push(crumb); + if (opts.options.headers) { + evaluatedHeaders = this._evaluateHash(opts.options.headers); + } - if (this._breadcrumbs.length > this._globalOptions.maxBreadcrumbs) { - this._breadcrumbs.shift(); + if (opts.options.fetchParameters) { + evaluatedFetchParameters = this._evaluateHash(opts.options.fetchParameters); } - return this; - }, - addPlugin: function addPlugin(plugin - /*arg1, arg2, ... argN*/ - ) { - var pluginArgs = [].slice.call(arguments, 1); + if (supportsFetch()) { + evaluatedFetchParameters.body = stringify(opts.data); - this._plugins.push([plugin, pluginArgs]); + var defaultFetchOptions = objectMerge({}, this._fetchDefaults); + var fetchOptions = objectMerge(defaultFetchOptions, evaluatedFetchParameters); - if (this._isRavenInstalled) { - this._drainPlugins(); + if (evaluatedHeaders) { + fetchOptions.headers = evaluatedHeaders; + } + + return _window + .fetch(url, fetchOptions) + .then(function(response) { + if (response.ok) { + opts.onSuccess && opts.onSuccess(); + } else { + var error = new Error('Sentry error code: ' + response.status); + // It's called request only to keep compatibility with XHR interface + // and not add more redundant checks in setBackoffState method + error.request = response; + opts.onError && opts.onError(error); + } + }) + ['catch'](function() { + opts.onError && + opts.onError(new Error('Sentry error code: network unavailable')); + }); } - return this; - }, + var request = _window.XMLHttpRequest && new _window.XMLHttpRequest(); + if (!request) return; - /* - * Set/clear a user to be sent along with the payload. - * - * @param {object} user An object representing user data [optional] - * @return {Raven} - */ - setUserContext: function setUserContext(user) { - // Intentionally do not merge here since that's an unexpected behavior. - this._globalContext.user = user; - return this; - }, + // if browser doesn't support CORS (e.g. IE7), we are out of luck + var hasCORS = 'withCredentials' in request || typeof XDomainRequest !== 'undefined'; - /* - * Merge extra attributes to be sent along with the payload. - * - * @param {object} extra An object representing extra data [optional] - * @return {Raven} - */ - setExtraContext: function setExtraContext(extra) { - this._mergeContext('extra', extra); + if (!hasCORS) return; - return this; - }, + if ('withCredentials' in request) { + request.onreadystatechange = function() { + if (request.readyState !== 4) { + return; + } else if (request.status === 200) { + opts.onSuccess && opts.onSuccess(); + } else if (opts.onError) { + var err = new Error('Sentry error code: ' + request.status); + err.request = request; + opts.onError(err); + } + }; + } else { + request = new XDomainRequest(); + // xdomainrequest cannot go http -> https (or vice versa), + // so always use protocol relative + url = url.replace(/^https?:/, ''); - /* - * Merge tags to be sent along with the payload. - * - * @param {object} tags An object representing tags [optional] - * @return {Raven} - */ - setTagsContext: function setTagsContext(tags) { - this._mergeContext('tags', tags); + // onreadystatechange not supported by XDomainRequest + if (opts.onSuccess) { + request.onload = opts.onSuccess; + } + if (opts.onError) { + request.onerror = function() { + var err = new Error('Sentry error code: XDomainRequest'); + err.request = request; + opts.onError(err); + }; + } + } - return this; + request.open('POST', url); + + if (evaluatedHeaders) { + each(evaluatedHeaders, function(key, value) { + request.setRequestHeader(key, value); + }); + } + + request.send(stringify(opts.data)); }, - /* - * Clear all of the context. - * - * @return {Raven} - */ - clearContext: function clearContext() { - this._globalContext = {}; - return this; + _evaluateHash: function(hash) { + var evaluated = {}; + + for (var key in hash) { + if (hash.hasOwnProperty(key)) { + var value = hash[key]; + evaluated[key] = typeof value === 'function' ? value() : value; + } + } + + return evaluated; }, - /* - * Get a copy of the current context. This cannot be mutated. - * - * @return {object} copy of context - */ - getContext: function getContext() { - // lol javascript - return JSON.parse(stringify_1(this._globalContext)); + _logDebug: function(level) { + // We allow `Raven.debug` and `Raven.config(DSN, { debug: true })` to not make backward incompatible API change + if ( + this._originalConsoleMethods[level] && + (this.debug || this._globalOptions.debug) + ) { + // In IE<10 console methods do not have their own 'apply' method + Function.prototype.apply.call( + this._originalConsoleMethods[level], + this._originalConsole, + [].slice.call(arguments, 1) + ); + } }, - /* - * Set environment of application - * - * @param {string} environment Typically something like 'production'. - * @return {Raven} - */ - setEnvironment: function setEnvironment(environment) { - this._globalOptions.environment = environment; - return this; - }, + _mergeContext: function(key, context) { + if (isUndefined(context)) { + delete this._globalContext[key]; + } else { + this._globalContext[key] = objectMerge(this._globalContext[key] || {}, context); + } + } +}; - /* - * Set release version of application - * - * @param {string} release Typically something like a git SHA to identify version - * @return {Raven} - */ - setRelease: function setRelease(release) { - this._globalOptions.release = release; - return this; - }, +// Deprecations +Raven.prototype.setUser = Raven.prototype.setUserContext; +Raven.prototype.setReleaseContext = Raven.prototype.setRelease; - /* - * Set the dataCallback option - * - * @param {function} callback The callback to run which allows the - * data blob to be mutated before sending - * @return {Raven} - */ - setDataCallback: function setDataCallback(callback) { - var original = this._globalOptions.dataCallback; - this._globalOptions.dataCallback = keepOriginalCallback(original, callback); - return this; - }, +module.exports = Raven; - /* - * Set the breadcrumbCallback option - * - * @param {function} callback The callback to run which allows filtering - * or mutating breadcrumbs - * @return {Raven} - */ - setBreadcrumbCallback: function setBreadcrumbCallback(callback) { - var original = this._globalOptions.breadcrumbCallback; - this._globalOptions.breadcrumbCallback = keepOriginalCallback(original, callback); - return this; - }, +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"10":10,"11":11,"4":4,"5":5,"8":8,"9":9}],7:[function(_dereq_,module,exports){ +(function (global){ +/** + * Enforces a single instance of the Raven client, and the + * main entry point for Raven. If you are a consumer of the + * Raven library, you SHOULD load this file (vs raven.js). + **/ - /* - * Set the shouldSendCallback option - * - * @param {function} callback The callback to run which allows - * introspecting the blob before sending - * @return {Raven} - */ - setShouldSendCallback: function setShouldSendCallback(callback) { - var original = this._globalOptions.shouldSendCallback; - this._globalOptions.shouldSendCallback = keepOriginalCallback(original, callback); - return this; - }, +var RavenConstructor = _dereq_(6); - /** - * Override the default HTTP transport mechanism that transmits data - * to the Sentry server. - * - * @param {function} transport Function invoked instead of the default - * `makeRequest` handler. - * - * @return {Raven} - */ - setTransport: function setTransport(transport) { - this._globalOptions.transport = transport; - return this; - }, +// This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) +var _window = + typeof window !== 'undefined' + ? window + : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; +var _Raven = _window.Raven; - /* - * Get the latest raw exception that was captured by Raven. - * - * @return {error} - */ - lastException: function lastException() { - return this._lastCapturedException; - }, +var Raven = new RavenConstructor(); - /* - * Get the last event id - * - * @return {string} - */ - lastEventId: function lastEventId() { - return this._lastEventId; - }, +/* + * Allow multiple versions of Raven to be installed. + * Strip Raven from the global context and returns the instance. + * + * @return {Raven} + */ +Raven.noConflict = function() { + _window.Raven = _Raven; + return Raven; +}; - /* - * Determine if Raven is setup and ready to go. - * - * @return {boolean} - */ - isSetup: function isSetup() { - if (!this._hasJSON) return false; // needs JSON support +Raven.afterLoad(); - if (!this._globalServer) { - if (!this.ravenNotConfiguredError) { - this.ravenNotConfiguredError = true; +module.exports = Raven; - this._logDebug('error', 'Error: Raven has not been configured.'); - } +/** + * DISCLAIMER: + * + * Expose `Client` constructor for cases where user want to track multiple "sub-applications" in one larger app. + * It's not meant to be used by a wide audience, so pleaaase make sure that you know what you're doing before using it. + * Accidentally calling `install` multiple times, may result in an unexpected behavior that's very hard to debug. + * + * It's called `Client' to be in-line with Raven Node implementation. + * + * HOWTO: + * + * import Raven from 'raven-js'; + * + * const someAppReporter = new Raven.Client(); + * const someOtherAppReporter = new Raven.Client(); + * + * someAppReporter.config('__DSN__', { + * ...config goes here + * }); + * + * someOtherAppReporter.config('__OTHER_DSN__', { + * ...config goes here + * }); + * + * someAppReporter.captureMessage(...); + * someAppReporter.captureException(...); + * someAppReporter.captureBreadcrumb(...); + * + * someOtherAppReporter.captureMessage(...); + * someOtherAppReporter.captureException(...); + * someOtherAppReporter.captureBreadcrumb(...); + * + * It should "just work". + */ +module.exports.Client = RavenConstructor; - return false; - } +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"6":6}],8:[function(_dereq_,module,exports){ +(function (global){ +var stringify = _dereq_(10); - return true; - }, - afterLoad: function afterLoad() { - // TODO: remove window dependence? - // Attempt to initialize Raven on load - var RavenConfig = _window$1.RavenConfig; +var _window = + typeof window !== 'undefined' + ? window + : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; - if (RavenConfig) { - this.config(RavenConfig.dsn, RavenConfig.config).install(); - } - }, - showReportDialog: function showReportDialog(options) { - if (!_document // doesn't work without a document (React native) - ) return; - options = options || {}; - var lastEventId = options.eventId || this.lastEventId(); +function isObject(what) { + return typeof what === 'object' && what !== null; +} - if (!lastEventId) { - throw new configError('Missing eventId'); - } +// Yanked from https://git.io/vS8DV re-used under CC0 +// with some tiny modifications +function isError(value) { + switch ({}.toString.call(value)) { + case '[object Error]': + return true; + case '[object Exception]': + return true; + case '[object DOMException]': + return true; + default: + return value instanceof Error; + } +} - var dsn = options.dsn || this._dsn; +function isErrorEvent(value) { + return supportsErrorEvent() && {}.toString.call(value) === '[object ErrorEvent]'; +} - if (!dsn) { - throw new configError('Missing DSN'); - } +function isUndefined(what) { + return what === void 0; +} - var encode = encodeURIComponent; - var qs = ''; - qs += '?eventId=' + encode(lastEventId); - qs += '&dsn=' + encode(dsn); - var user = options.user || this._globalContext.user; +function isFunction(what) { + return typeof what === 'function'; +} - if (user) { - if (user.name) qs += '&name=' + encode(user.name); - if (user.email) qs += '&email=' + encode(user.email); +function isPlainObject(what) { + return Object.prototype.toString.call(what) === '[object Object]'; +} + +function isString(what) { + return Object.prototype.toString.call(what) === '[object String]'; +} + +function isArray(what) { + return Object.prototype.toString.call(what) === '[object Array]'; +} + +function isEmptyObject(what) { + if (!isPlainObject(what)) return false; + + for (var _ in what) { + if (what.hasOwnProperty(_)) { + return false; } + } + return true; +} - var globalServer = this._getGlobalServer(this._parseDSN(dsn)); +function supportsErrorEvent() { + try { + new ErrorEvent(''); // eslint-disable-line no-new + return true; + } catch (e) { + return false; + } +} - var script = _document.createElement('script'); +function supportsFetch() { + if (!('fetch' in _window)) return false; - script.async = true; - script.src = globalServer + '/api/embed/error-page/' + qs; + try { + new Headers(); // eslint-disable-line no-new + new Request(''); // eslint-disable-line no-new + new Response(); // eslint-disable-line no-new + return true; + } catch (e) { + return false; + } +} - (_document.head || _document.body).appendChild(script); - }, +// Despite all stars in the sky saying that Edge supports old draft syntax, aka 'never', 'always', 'origin' and 'default +// https://caniuse.com/#feat=referrer-policy +// It doesn't. And it throw exception instead of ignoring this parameter... +// REF: https://github.com/getsentry/raven-js/issues/1233 +function supportsReferrerPolicy() { + if (!supportsFetch()) return false; - /**** Private functions ****/ - _ignoreNextOnError: function _ignoreNextOnError() { - var self = this; - this._ignoreOnError += 1; - setTimeout(function () { - // onerror should trigger before setTimeout - self._ignoreOnError -= 1; + try { + // eslint-disable-next-line no-new + new Request('pickleRick', { + referrerPolicy: 'origin' }); - }, - _triggerEvent: function _triggerEvent(eventType, options) { - // NOTE: `event` is a native browser thing, so let's avoid conflicting wiht it - var evt, key; - if (!this._hasDocument) return; - options = options || {}; - eventType = 'raven' + eventType.substr(0, 1).toUpperCase() + eventType.substr(1); + return true; + } catch (e) { + return false; + } +} - if (_document.createEvent) { - evt = _document.createEvent('HTMLEvents'); - evt.initEvent(eventType, true, true); - } else { - evt = _document.createEventObject(); - evt.eventType = eventType; - } +function supportsPromiseRejectionEvent() { + return typeof PromiseRejectionEvent === 'function'; +} - for (key in options) { - if (hasKey(options, key)) { - evt[key] = options[key]; - } +function wrappedCallback(callback) { + function dataCallback(data, original) { + var normalizedData = callback(data) || data; + if (original) { + return original(normalizedData) || normalizedData; } + return normalizedData; + } - if (_document.createEvent) { - // IE9 if standards - _document.dispatchEvent(evt); - } else { - // IE8 regardless of Quirks or Standards - // IE9 if quirks - try { - _document.fireEvent('on' + evt.eventType.toLowerCase(), evt); - } catch (e) {// Do nothing - } - } - }, + return dataCallback; +} - /** - * Wraps addEventListener to capture UI breadcrumbs - * @param evtName the event name (e.g. "click") - * @returns {Function} - * @private - */ - _breadcrumbEventHandler: function _breadcrumbEventHandler(evtName) { - var self = this; - return function (evt) { - // reset keypress timeout; e.g. triggering a 'click' after - // a 'keypress' will reset the keypress debounce so that a new - // set of keypresses can be recorded - self._keypressTimeout = null; // It's possible this handler might trigger multiple times for the same - // event (e.g. event propagation through node ancestors). Ignore if we've - // already captured the event. - - if (self._lastCapturedEvent === evt) return; - self._lastCapturedEvent = evt; // try/catch both: - // - accessing evt.target (see getsentry/raven-js#838, #768) - // - `htmlTreeAsString` because it's complex, and just accessing the DOM incorrectly - // can throw an exception in some circumstances. - - var target; +function each(obj, callback) { + var i, j; - try { - target = htmlTreeAsString(evt.target); - } catch (e) { - target = ''; + if (isUndefined(obj.length)) { + for (i in obj) { + if (hasKey(obj, i)) { + callback.call(null, i, obj[i]); + } + } + } else { + j = obj.length; + if (j) { + for (i = 0; i < j; i++) { + callback.call(null, i, obj[i]); } + } + } +} - self.captureBreadcrumb({ - category: 'ui.' + evtName, - // e.g. ui.click, ui.input - message: target - }); - }; - }, +function objectMerge(obj1, obj2) { + if (!obj2) { + return obj1; + } + each(obj2, function(key, value) { + obj1[key] = value; + }); + return obj1; +} - /** - * Wraps addEventListener to capture keypress UI events - * @returns {Function} - * @private - */ - _keypressEventHandler: function _keypressEventHandler() { - var self = this, - debounceDuration = 1000; // milliseconds - // TODO: if somehow user switches keypress target before - // debounce timeout is triggered, we will only capture - // a single breadcrumb from the FIRST target (acceptable?) +/** + * This function is only used for react-native. + * react-native freezes object that have already been sent over the + * js bridge. We need this function in order to check if the object is frozen. + * So it's ok that objectFrozen returns false if Object.isFrozen is not + * supported because it's not relevant for other "platforms". See related issue: + * https://github.com/getsentry/react-native-sentry/issues/57 + */ +function objectFrozen(obj) { + if (!Object.isFrozen) { + return false; + } + return Object.isFrozen(obj); +} - return function (evt) { - var target; +function truncate(str, max) { + if (typeof max !== 'number') { + throw new Error('2nd argument to `truncate` function should be a number'); + } + if (typeof str !== 'string' || max === 0) { + return str; + } + return str.length <= max ? str : str.substr(0, max) + '\u2026'; +} - try { - target = evt.target; - } catch (e) { - // just accessing event properties can throw an exception in some rare circumstances - // see: https://github.com/getsentry/raven-js/issues/838 - return; - } +/** + * hasKey, a better form of hasOwnProperty + * Example: hasKey(MainHostObject, property) === true/false + * + * @param {Object} host object to check property + * @param {string} key to check + */ +function hasKey(object, key) { + return Object.prototype.hasOwnProperty.call(object, key); +} - var tagName = target && target.tagName; // only consider keypress events on actual input elements - // this will disregard keypresses targeting body (e.g. tabbing - // through elements, hotkeys, etc) +function joinRegExp(patterns) { + // Combine an array of regular expressions and strings into one large regexp + // Be mad. + var sources = [], + i = 0, + len = patterns.length, + pattern; - if (!tagName || tagName !== 'INPUT' && tagName !== 'TEXTAREA' && !target.isContentEditable) return; // record first keypress in a series, but ignore subsequent - // keypresses until debounce clears + for (; i < len; i++) { + pattern = patterns[i]; + if (isString(pattern)) { + // If it's a string, we need to escape it + // Taken from: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions + sources.push(pattern.replace(/([.*+?^=!:${}()|\[\]\/\\])/g, '\\$1')); + } else if (pattern && pattern.source) { + // If it's a regexp already, we want to extract the source + sources.push(pattern.source); + } + // Intentionally skip other cases + } + return new RegExp(sources.join('|'), 'i'); +} - var timeout = self._keypressTimeout; +function urlencode(o) { + var pairs = []; + each(o, function(key, value) { + pairs.push(encodeURIComponent(key) + '=' + encodeURIComponent(value)); + }); + return pairs.join('&'); +} - if (!timeout) { - self._breadcrumbEventHandler('input')(evt); - } +// borrowed from https://tools.ietf.org/html/rfc3986#appendix-B +// intentionally using regex and not href parsing trick because React Native and other +// environments where DOM might not be available +function parseUrl(url) { + if (typeof url !== 'string') return {}; + var match = url.match(/^(([^:\/?#]+):)?(\/\/([^\/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?$/); - clearTimeout(timeout); - self._keypressTimeout = setTimeout(function () { - self._keypressTimeout = null; - }, debounceDuration); - }; - }, + // coerce to undefined values to empty string so we don't get 'undefined' + var query = match[6] || ''; + var fragment = match[8] || ''; + return { + protocol: match[2], + host: match[4], + path: match[5], + relative: match[5] + query + fragment // everything minus origin + }; +} +function uuid4() { + var crypto = _window.crypto || _window.msCrypto; - /** - * Captures a breadcrumb of type "navigation", normalizing input URLs - * @param to the originating URL - * @param from the target URL - * @private - */ - _captureUrlChange: function _captureUrlChange(from, to) { - var parsedLoc = parseUrl(this._location.href); - var parsedTo = parseUrl(to); - var parsedFrom = parseUrl(from); // because onpopstate only tells you the "new" (to) value of location.href, and - // not the previous (from) value, we need to track the value of the current URL - // state ourselves + if (!isUndefined(crypto) && crypto.getRandomValues) { + // Use window.crypto API if available + // eslint-disable-next-line no-undef + var arr = new Uint16Array(8); + crypto.getRandomValues(arr); - this._lastHref = to; // Use only the path component of the URL if the URL matches the current - // document (almost all the time when using pushState) + // set 4 in byte 7 + arr[3] = (arr[3] & 0xfff) | 0x4000; + // set 2 most significant bits of byte 9 to '10' + arr[4] = (arr[4] & 0x3fff) | 0x8000; - if (parsedLoc.protocol === parsedTo.protocol && parsedLoc.host === parsedTo.host) to = parsedTo.relative; - if (parsedLoc.protocol === parsedFrom.protocol && parsedLoc.host === parsedFrom.host) from = parsedFrom.relative; - this.captureBreadcrumb({ - category: 'navigation', - data: { - to: to, - from: from + var pad = function(num) { + var v = num.toString(16); + while (v.length < 4) { + v = '0' + v; } + return v; + }; + + return ( + pad(arr[0]) + + pad(arr[1]) + + pad(arr[2]) + + pad(arr[3]) + + pad(arr[4]) + + pad(arr[5]) + + pad(arr[6]) + + pad(arr[7]) + ); + } else { + // http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/2117523#2117523 + return 'xxxxxxxxxxxx4xxxyxxxxxxxxxxxxxxx'.replace(/[xy]/g, function(c) { + var r = (Math.random() * 16) | 0, + v = c === 'x' ? r : (r & 0x3) | 0x8; + return v.toString(16); }); - }, - _patchFunctionToString: function _patchFunctionToString() { - var self = this; - self._originalFunctionToString = Function.prototype.toString; // eslint-disable-next-line no-extend-native + } +} - Function.prototype.toString = function () { - if (typeof this === 'function' && this.__raven__) { - return self._originalFunctionToString.apply(this.__orig__, arguments); - } +/** + * Given a child DOM element, returns a query-selector statement describing that + * and its ancestors + * e.g. [HTMLElement] => body > div > input#foo.btn[name=baz] + * @param elem + * @returns {string} + */ +function htmlTreeAsString(elem) { + /* eslint no-extra-parens:0*/ + var MAX_TRAVERSE_HEIGHT = 5, + MAX_OUTPUT_LEN = 80, + out = [], + height = 0, + len = 0, + separator = ' > ', + sepLength = separator.length, + nextStr; - return self._originalFunctionToString.apply(this, arguments); - }; - }, - _unpatchFunctionToString: function _unpatchFunctionToString() { - if (this._originalFunctionToString) { - // eslint-disable-next-line no-extend-native - Function.prototype.toString = this._originalFunctionToString; + while (elem && height++ < MAX_TRAVERSE_HEIGHT) { + nextStr = htmlElementAsString(elem); + // bail out if + // - nextStr is the 'html' element + // - the length of the string that would be created exceeds MAX_OUTPUT_LEN + // (ignore this limit if we are on the first iteration) + if ( + nextStr === 'html' || + (height > 1 && len + out.length * sepLength + nextStr.length >= MAX_OUTPUT_LEN) + ) { + break; } - }, - /** - * Wrap timer functions and event targets to catch errors and provide - * better metadata. - */ - _instrumentTryCatch: function _instrumentTryCatch() { - var self = this; - var wrappedBuiltIns = self._wrappedBuiltIns; + out.push(nextStr); - function wrapTimeFn(orig) { - return function (fn, t) { - // preserve arity - // Make a copy of the arguments to prevent deoptimization - // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments - var args = new Array(arguments.length); + len += nextStr.length; + elem = elem.parentNode; + } - for (var i = 0; i < args.length; ++i) { - args[i] = arguments[i]; - } + return out.reverse().join(separator); +} - var originalCallback = args[0]; +/** + * Returns a simple, query-selector representation of a DOM element + * e.g. [HTMLElement] => input#foo.btn[name=baz] + * @param HTMLElement + * @returns {string} + */ +function htmlElementAsString(elem) { + var out = [], + className, + classes, + key, + attr, + i; - if (isFunction(originalCallback)) { - args[0] = self.wrap(originalCallback); - } // IE < 9 doesn't support .call/.apply on setInterval/setTimeout, but it - // also supports only two arguments and doesn't care what this is, so we - // can just call the original function directly. + if (!elem || !elem.tagName) { + return ''; + } + out.push(elem.tagName.toLowerCase()); + if (elem.id) { + out.push('#' + elem.id); + } - if (orig.apply) { - return orig.apply(this, args); - } else { - return orig(args[0], args[1]); - } - }; + className = elem.className; + if (className && isString(className)) { + classes = className.split(/\s+/); + for (i = 0; i < classes.length; i++) { + out.push('.' + classes[i]); } + } + var attrWhitelist = ['type', 'name', 'title', 'alt']; + for (i = 0; i < attrWhitelist.length; i++) { + key = attrWhitelist[i]; + attr = elem.getAttribute(key); + if (attr) { + out.push('[' + key + '="' + attr + '"]'); + } + } + return out.join(''); +} - var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; - - function wrapEventTarget(global) { - var proto = _window$1[global] && _window$1[global].prototype; - - if (proto && proto.hasOwnProperty && proto.hasOwnProperty('addEventListener')) { - fill(proto, 'addEventListener', function (orig) { - return function (evtName, fn, capture, secure) { - // preserve arity - try { - if (fn && fn.handleEvent) { - fn.handleEvent = self.wrap(fn.handleEvent); - } - } catch (err) {} // can sometimes get 'Permission denied to access property "handle Event' - // More breadcrumb DOM capture ... done here and not in `_instrumentBreadcrumbs` - // so that we don't have more than one wrapper function - +/** + * Returns true if either a OR b is truthy, but not both + */ +function isOnlyOneTruthy(a, b) { + return !!(!!a ^ !!b); +} - var before, clickHandler, keypressHandler; +/** + * Returns true if both parameters are undefined + */ +function isBothUndefined(a, b) { + return isUndefined(a) && isUndefined(b); +} - if (autoBreadcrumbs && autoBreadcrumbs.dom && (global === 'EventTarget' || global === 'Node')) { - // NOTE: generating multiple handlers per addEventListener invocation, should - // revisit and verify we can just use one (almost certainly) - clickHandler = self._breadcrumbEventHandler('click'); - keypressHandler = self._keypressEventHandler(); +/** + * Returns true if the two input exception interfaces have the same content + */ +function isSameException(ex1, ex2) { + if (isOnlyOneTruthy(ex1, ex2)) return false; - before = function before(evt) { - // need to intercept every DOM event in `before` argument, in case that - // same wrapped method is re-used for different events (e.g. mousemove THEN click) - // see #724 - if (!evt) return; - var eventType; + ex1 = ex1.values[0]; + ex2 = ex2.values[0]; - try { - eventType = evt.type; - } catch (e) { - // just accessing event properties can throw an exception in some rare circumstances - // see: https://github.com/getsentry/raven-js/issues/838 - return; - } + if (ex1.type !== ex2.type || ex1.value !== ex2.value) return false; - if (eventType === 'click') return clickHandler(evt);else if (eventType === 'keypress') return keypressHandler(evt); - }; - } + // in case both stacktraces are undefined, we can't decide so default to false + if (isBothUndefined(ex1.stacktrace, ex2.stacktrace)) return false; - return orig.call(this, evtName, self.wrap(fn, undefined, before), capture, secure); - }; - }, wrappedBuiltIns); - fill(proto, 'removeEventListener', function (orig) { - return function (evt, fn, capture, secure) { - try { - fn = fn && (fn.__raven_wrapper__ ? fn.__raven_wrapper__ : fn); - } catch (e) {// ignore, accessing __raven_wrapper__ will throw in some Selenium environments - } + return isSameStacktrace(ex1.stacktrace, ex2.stacktrace); +} - return orig.call(this, evt, fn, capture, secure); - }; - }, wrappedBuiltIns); - } - } +/** + * Returns true if the two input stack trace interfaces have the same content + */ +function isSameStacktrace(stack1, stack2) { + if (isOnlyOneTruthy(stack1, stack2)) return false; - fill(_window$1, 'setTimeout', wrapTimeFn, wrappedBuiltIns); - fill(_window$1, 'setInterval', wrapTimeFn, wrappedBuiltIns); + var frames1 = stack1.frames; + var frames2 = stack2.frames; - if (_window$1.requestAnimationFrame) { - fill(_window$1, 'requestAnimationFrame', function (orig) { - return function (cb) { - return orig(self.wrap(cb)); - }; - }, wrappedBuiltIns); - } // event targets borrowed from bugsnag-js: - // https://github.com/bugsnag/bugsnag-js/blob/master/src/bugsnag.js#L666 + // Exit early if frame count differs + if (frames1.length !== frames2.length) return false; + // Iterate through every frame; bail out if anything differs + var a, b; + for (var i = 0; i < frames1.length; i++) { + a = frames1[i]; + b = frames2[i]; + if ( + a.filename !== b.filename || + a.lineno !== b.lineno || + a.colno !== b.colno || + a['function'] !== b['function'] + ) + return false; + } + return true; +} - var eventTargets = ['EventTarget', 'Window', 'Node', 'ApplicationCache', 'AudioTrackList', 'ChannelMergerNode', 'CryptoOperation', 'EventSource', 'FileReader', 'HTMLUnknownElement', 'IDBDatabase', 'IDBRequest', 'IDBTransaction', 'KeyOperation', 'MediaController', 'MessagePort', 'ModalWindow', 'Notification', 'SVGElementInstance', 'Screen', 'TextTrack', 'TextTrackCue', 'TextTrackList', 'WebSocket', 'WebSocketWorker', 'Worker', 'XMLHttpRequest', 'XMLHttpRequestEventTarget', 'XMLHttpRequestUpload']; +/** + * Polyfill a method + * @param obj object e.g. `document` + * @param name method name present on object e.g. `addEventListener` + * @param replacement replacement function + * @param track {optional} record instrumentation to an array + */ +function fill(obj, name, replacement, track) { + if (obj == null) return; + var orig = obj[name]; + obj[name] = replacement(orig); + obj[name].__raven__ = true; + obj[name].__orig__ = orig; + if (track) { + track.push([obj, name, orig]); + } +} - for (var i = 0; i < eventTargets.length; i++) { - wrapEventTarget(eventTargets[i]); - } - }, +/** + * Join values in array + * @param input array of values to be joined together + * @param delimiter string to be placed in-between values + * @returns {string} + */ +function safeJoin(input, delimiter) { + if (!isArray(input)) return ''; - /** - * Instrument browser built-ins w/ breadcrumb capturing - * - XMLHttpRequests - * - DOM interactions (click/typing) - * - window.location changes - * - console - * - * Can be disabled or individually configured via the `autoBreadcrumbs` config option - */ - _instrumentBreadcrumbs: function _instrumentBreadcrumbs() { - var self = this; - var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; - var wrappedBuiltIns = self._wrappedBuiltIns; + var output = []; - function wrapProp(prop, xhr) { - if (prop in xhr && isFunction(xhr[prop])) { - fill(xhr, prop, function (orig) { - return self.wrap(orig); - }); // intentionally don't track filled methods on XHR instances - } + for (var i = 0; i < input.length; i++) { + try { + output.push(String(input[i])); + } catch (e) { + output.push('[value cannot be serialized]'); } + } - if (autoBreadcrumbs.xhr && 'XMLHttpRequest' in _window$1) { - var xhrproto = XMLHttpRequest.prototype; - fill(xhrproto, 'open', function (origOpen) { - return function (method, url) { - // preserve arity - // if Sentry key appears in URL, don't capture - if (isString(url) && url.indexOf(self._globalKey) === -1) { - this.__raven_xhr = { - method: method, - url: url, - status_code: null - }; - } + return output.join(delimiter); +} - return origOpen.apply(this, arguments); - }; - }, wrappedBuiltIns); - fill(xhrproto, 'send', function (origSend) { - return function () { - // preserve arity - var xhr = this; - - function onreadystatechangeHandler() { - if (xhr.__raven_xhr && xhr.readyState === 4) { - try { - // touching statusCode in some platforms throws - // an exception - xhr.__raven_xhr.status_code = xhr.status; - } catch (e) { - /* do nothing */ - } +// Default Node.js REPL depth +var MAX_SERIALIZE_EXCEPTION_DEPTH = 3; +// 50kB, as 100kB is max payload size, so half sounds reasonable +var MAX_SERIALIZE_EXCEPTION_SIZE = 50 * 1024; +var MAX_SERIALIZE_KEYS_LENGTH = 40; - self.captureBreadcrumb({ - type: 'http', - category: 'xhr', - data: xhr.__raven_xhr - }); - } - } +function utf8Length(value) { + return ~-encodeURI(value).split(/%..|./).length; +} - var props = ['onload', 'onerror', 'onprogress']; +function jsonSize(value) { + return utf8Length(JSON.stringify(value)); +} - for (var j = 0; j < props.length; j++) { - wrapProp(props[j], xhr); - } +function serializeValue(value) { + if (typeof value === 'string') { + var maxLength = 40; + return truncate(value, maxLength); + } else if ( + typeof value === 'number' || + typeof value === 'boolean' || + typeof value === 'undefined' + ) { + return value; + } - if ('onreadystatechange' in xhr && isFunction(xhr.onreadystatechange)) { - fill(xhr, 'onreadystatechange', function (orig) { - return self.wrap(orig, undefined, onreadystatechangeHandler); - } - /* intentionally don't track this instrumentation */ - ); - } else { - // if onreadystatechange wasn't actually set by the page on this xhr, we - // are free to set our own and capture the breadcrumb - xhr.onreadystatechange = onreadystatechangeHandler; - } + var type = Object.prototype.toString.call(value); - return origSend.apply(this, arguments); - }; - }, wrappedBuiltIns); - } + // Node.js REPL notation + if (type === '[object Object]') return '[Object]'; + if (type === '[object Array]') return '[Array]'; + if (type === '[object Function]') + return value.name ? '[Function: ' + value.name + ']' : '[Function]'; - if (autoBreadcrumbs.xhr && supportsFetch()) { - fill(_window$1, 'fetch', function (origFetch) { - return function () { - // preserve arity - // Make a copy of the arguments to prevent deoptimization - // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments - var args = new Array(arguments.length); - - for (var i = 0; i < args.length; ++i) { - args[i] = arguments[i]; - } + return value; +} - var fetchInput = args[0]; - var method = 'GET'; - var url; +function serializeObject(value, depth) { + if (depth === 0) return serializeValue(value); + + if (isPlainObject(value)) { + return Object.keys(value).reduce(function(acc, key) { + acc[key] = serializeObject(value[key], depth - 1); + return acc; + }, {}); + } else if (Array.isArray(value)) { + return value.map(function(val) { + return serializeObject(val, depth - 1); + }); + } - if (typeof fetchInput === 'string') { - url = fetchInput; - } else if ('Request' in _window$1 && fetchInput instanceof _window$1.Request) { - url = fetchInput.url; + return serializeValue(value); +} - if (fetchInput.method) { - method = fetchInput.method; - } - } else { - url = '' + fetchInput; - } // if Sentry key appears in URL, don't capture, as it's our own request +function serializeException(ex, depth, maxSize) { + if (!isPlainObject(ex)) return ex; + depth = typeof depth !== 'number' ? MAX_SERIALIZE_EXCEPTION_DEPTH : depth; + maxSize = typeof depth !== 'number' ? MAX_SERIALIZE_EXCEPTION_SIZE : maxSize; - if (url.indexOf(self._globalKey) !== -1) { - return origFetch.apply(this, args); - } + var serialized = serializeObject(ex, depth); - if (args[1] && args[1].method) { - method = args[1].method; - } + if (jsonSize(stringify(serialized)) > maxSize) { + return serializeException(ex, depth - 1); + } - var fetchData = { - method: method, - url: url, - status_code: null - }; - return origFetch.apply(this, args).then(function (response) { - fetchData.status_code = response.status; - self.captureBreadcrumb({ - type: 'http', - category: 'fetch', - data: fetchData - }); - return response; - }); - }; - }, wrappedBuiltIns); - } // Capture breadcrumbs from any click that is unhandled / bubbled up all the way - // to the document. Do this before we instrument addEventListener. + return serialized; +} +function serializeKeysForMessage(keys, maxLength) { + if (typeof keys === 'number' || typeof keys === 'string') return keys.toString(); + if (!Array.isArray(keys)) return ''; - if (autoBreadcrumbs.dom && this._hasDocument) { - if (_document.addEventListener) { - _document.addEventListener('click', self._breadcrumbEventHandler('click'), false); + keys = keys.filter(function(key) { + return typeof key === 'string'; + }); + if (keys.length === 0) return '[object has no keys]'; - _document.addEventListener('keypress', self._keypressEventHandler(), false); - } else { - // IE8 Compatibility - _document.attachEvent('onclick', self._breadcrumbEventHandler('click')); + maxLength = typeof maxLength !== 'number' ? MAX_SERIALIZE_KEYS_LENGTH : maxLength; + if (keys[0].length >= maxLength) return keys[0]; - _document.attachEvent('onkeypress', self._keypressEventHandler()); - } - } // record navigation (URL) changes - // NOTE: in Chrome App environment, touching history.pushState, *even inside - // a try/catch block*, will cause Chrome to output an error to console.error - // borrowed from: https://github.com/angular/angular.js/pull/13945/files + for (var usedKeys = keys.length; usedKeys > 0; usedKeys--) { + var serialized = keys.slice(0, usedKeys).join(', '); + if (serialized.length > maxLength) continue; + if (usedKeys === keys.length) return serialized; + return serialized + '\u2026'; + } + return ''; +} - var chrome = _window$1.chrome; - var isChromePackagedApp = chrome && chrome.app && chrome.app.runtime; - var hasPushAndReplaceState = !isChromePackagedApp && _window$1.history && history.pushState && history.replaceState; +function sanitize(input, sanitizeKeys) { + if (!isArray(sanitizeKeys) || (isArray(sanitizeKeys) && sanitizeKeys.length === 0)) + return input; - if (autoBreadcrumbs.location && hasPushAndReplaceState) { - // TODO: remove onpopstate handler on uninstall() - var oldOnPopState = _window$1.onpopstate; + var sanitizeRegExp = joinRegExp(sanitizeKeys); + var sanitizeMask = '********'; + var safeInput; - _window$1.onpopstate = function () { - var currentHref = self._location.href; + try { + safeInput = JSON.parse(stringify(input)); + } catch (o_O) { + return input; + } - self._captureUrlChange(self._lastHref, currentHref); + function sanitizeWorker(workerInput) { + if (isArray(workerInput)) { + return workerInput.map(function(val) { + return sanitizeWorker(val); + }); + } - if (oldOnPopState) { - return oldOnPopState.apply(this, arguments); + if (isPlainObject(workerInput)) { + return Object.keys(workerInput).reduce(function(acc, k) { + if (sanitizeRegExp.test(k)) { + acc[k] = sanitizeMask; + } else { + acc[k] = sanitizeWorker(workerInput[k]); } - }; + return acc; + }, {}); + } - var historyReplacementFunction = function historyReplacementFunction(origHistFunction) { - // note history.pushState.length is 0; intentionally not declaring - // params to preserve 0 arity - return function () - /* state, title, url */ - { - var url = arguments.length > 2 ? arguments[2] : undefined; // url argument is optional + return workerInput; + } - if (url) { - // coerce to string (this is what pushState does) - self._captureUrlChange(self._lastHref, url + ''); - } + return sanitizeWorker(safeInput); +} - return origHistFunction.apply(this, arguments); - }; - }; +module.exports = { + isObject: isObject, + isError: isError, + isErrorEvent: isErrorEvent, + isUndefined: isUndefined, + isFunction: isFunction, + isPlainObject: isPlainObject, + isString: isString, + isArray: isArray, + isEmptyObject: isEmptyObject, + supportsErrorEvent: supportsErrorEvent, + supportsFetch: supportsFetch, + supportsReferrerPolicy: supportsReferrerPolicy, + supportsPromiseRejectionEvent: supportsPromiseRejectionEvent, + wrappedCallback: wrappedCallback, + each: each, + objectMerge: objectMerge, + truncate: truncate, + objectFrozen: objectFrozen, + hasKey: hasKey, + joinRegExp: joinRegExp, + urlencode: urlencode, + uuid4: uuid4, + htmlTreeAsString: htmlTreeAsString, + htmlElementAsString: htmlElementAsString, + isSameException: isSameException, + isSameStacktrace: isSameStacktrace, + parseUrl: parseUrl, + fill: fill, + safeJoin: safeJoin, + serializeException: serializeException, + serializeKeysForMessage: serializeKeysForMessage, + sanitize: sanitize +}; - fill(history, 'pushState', historyReplacementFunction, wrappedBuiltIns); - fill(history, 'replaceState', historyReplacementFunction, wrappedBuiltIns); - } +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"10":10}],9:[function(_dereq_,module,exports){ +(function (global){ +var utils = _dereq_(8); - if (autoBreadcrumbs.console && 'console' in _window$1 && console.log) { - // console - var consoleMethodCallback = function consoleMethodCallback(msg, data) { - self.captureBreadcrumb({ - message: msg, - level: data.level, - category: 'console' - }); - }; +/* + TraceKit - Cross brower stack traces - each(['debug', 'info', 'warn', 'error', 'log'], function (_, level) { - wrapConsoleMethod(console, level, consoleMethodCallback); - }); - } - }, - _restoreBuiltIns: function _restoreBuiltIns() { - // restore any wrapped builtins - var builtin; + This was originally forked from github.com/occ/TraceKit, but has since been + largely re-written and is now maintained as part of raven-js. Tests for + this are in test/vendor. - while (this._wrappedBuiltIns.length) { - builtin = this._wrappedBuiltIns.shift(); - var obj = builtin[0], - name = builtin[1], - orig = builtin[2]; - obj[name] = orig; - } - }, - _restoreConsole: function _restoreConsole() { - // eslint-disable-next-line guard-for-in - for (var method in this._originalConsoleMethods) { - this._originalConsole[method] = this._originalConsoleMethods[method]; - } - }, - _drainPlugins: function _drainPlugins() { - var self = this; // FIX ME TODO + MIT license +*/ - each(this._plugins, function (_, plugin) { - var installer = plugin[0]; - var args = plugin[1]; - installer.apply(self, [self].concat(args)); - }); - }, - _parseDSN: function _parseDSN(str) { - var m = dsnPattern.exec(str), - dsn = {}, - i = 7; +var TraceKit = { + collectWindowErrors: true, + debug: false +}; - try { - while (i--) { - dsn[dsnKeys[i]] = m[i] || ''; - } - } catch (e) { - throw new configError('Invalid DSN: ' + str); - } +// This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) +var _window = + typeof window !== 'undefined' + ? window + : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; - if (dsn.pass && !this._globalOptions.allowSecretKey) { - throw new configError('Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key'); - } +// global reference to slice +var _slice = [].slice; +var UNKNOWN_FUNCTION = '?'; - return dsn; - }, - _getGlobalServer: function _getGlobalServer(uri) { - // assemble the endpoint from the uri pieces - var globalServer = '//' + uri.host + (uri.port ? ':' + uri.port : ''); +// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error#Error_types +var ERROR_TYPES_RE = /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/; - if (uri.protocol) { - globalServer = uri.protocol + ':' + globalServer; - } +function getLocationHref() { + if (typeof document === 'undefined' || document.location == null) return ''; - return globalServer; - }, - _handleOnErrorStackInfo: function _handleOnErrorStackInfo() { - // if we are intentionally ignoring errors via onerror, bail out - if (!this._ignoreOnError) { - this._handleStackInfo.apply(this, arguments); - } - }, - _handleStackInfo: function _handleStackInfo(stackInfo, options) { - var frames = this._prepareFrames(stackInfo, options); + return document.location.href; +} - this._triggerEvent('handle', { - stackInfo: stackInfo, - options: options - }); +/** + * TraceKit.report: cross-browser processing of unhandled exceptions + * + * Syntax: + * TraceKit.report.subscribe(function(stackInfo) { ... }) + * TraceKit.report.unsubscribe(function(stackInfo) { ... }) + * TraceKit.report(exception) + * try { ...code... } catch(ex) { TraceKit.report(ex); } + * + * Supports: + * - Firefox: full stack trace with line numbers, plus column number + * on top frame; column number is not guaranteed + * - Opera: full stack trace with line and column numbers + * - Chrome: full stack trace with line and column numbers + * - Safari: line and column number for the top frame only; some frames + * may be missing, and column number is not guaranteed + * - IE: line and column number for the top frame only; some frames + * may be missing, and column number is not guaranteed + * + * In theory, TraceKit should work on all of the following versions: + * - IE5.5+ (only 8.0 tested) + * - Firefox 0.9+ (only 3.5+ tested) + * - Opera 7+ (only 10.50 tested; versions 9 and earlier may require + * Exceptions Have Stacktrace to be enabled in opera:config) + * - Safari 3+ (only 4+ tested) + * - Chrome 1+ (only 5+ tested) + * - Konqueror 3.5+ (untested) + * + * Requires TraceKit.computeStackTrace. + * + * Tries to catch all unhandled exceptions and report them to the + * subscribed handlers. Please note that TraceKit.report will rethrow the + * exception. This is REQUIRED in order to get a useful stack trace in IE. + * If the exception does not reach the top of the browser, you will only + * get a stack trace from the point where TraceKit.report was called. + * + * Handlers receive a stackInfo object as described in the + * TraceKit.computeStackTrace docs. + */ +TraceKit.report = (function reportModuleWrapper() { + var handlers = [], + lastArgs = null, + lastException = null, + lastExceptionStack = null; - this._processException(stackInfo.name, stackInfo.message, stackInfo.url, stackInfo.lineno, frames, options); - }, - _prepareFrames: function _prepareFrames(stackInfo, options) { - var self = this; - var frames = []; + /** + * Add a crash handler. + * @param {Function} handler + */ + function subscribe(handler) { + installGlobalHandler(); + handlers.push(handler); + } - if (stackInfo.stack && stackInfo.stack.length) { - each(stackInfo.stack, function (i, stack) { - var frame = self._normalizeFrame(stack, stackInfo.url); + /** + * Remove a crash handler. + * @param {Function} handler + */ + function unsubscribe(handler) { + for (var i = handlers.length - 1; i >= 0; --i) { + if (handlers[i] === handler) { + handlers.splice(i, 1); + } + } + } - if (frame) { - frames.push(frame); - } - }); // e.g. frames captured via captureMessage throw + /** + * Remove all crash handlers. + */ + function unsubscribeAll() { + uninstallGlobalHandler(); + handlers = []; + } - if (options && options.trimHeadFrames) { - for (var j = 0; j < options.trimHeadFrames && j < frames.length; j++) { - frames[j].in_app = false; + /** + * Dispatch stack information to all handlers. + * @param {Object.} stack + */ + function notifyHandlers(stack, isWindowError) { + var exception = null; + if (isWindowError && !TraceKit.collectWindowErrors) { + return; + } + for (var i in handlers) { + if (handlers.hasOwnProperty(i)) { + try { + handlers[i].apply(null, [stack].concat(_slice.call(arguments, 2))); + } catch (inner) { + exception = inner; } } } - frames = frames.slice(0, this._globalOptions.stackTraceLimit); - return frames; - }, - _normalizeFrame: function _normalizeFrame(frame, stackInfoUrl) { - // normalize the frames data - var normalized = { - filename: frame.url, - lineno: frame.line, - colno: frame.column, - function: frame.func || '?' - }; // Case when we don't have any information about the error - // E.g. throwing a string or raw object, instead of an `Error` in Firefox - // Generating synthetic error doesn't add any value here - // - // We should probably somehow let a user know that they should fix their code - - if (!frame.url) { - normalized.filename = stackInfoUrl; // fallback to whole stacks url from onerror handler + if (exception) { + throw exception; } + } - normalized.in_app = !( // determine if an exception came from outside of our app - // first we check the global includePaths list. - !!this._globalOptions.includePaths.test && !this._globalOptions.includePaths.test(normalized.filename) || // Now we check for fun, if the function name is Raven or TraceKit - /(Raven|TraceKit)\./.test(normalized['function']) || // finally, we do a last ditch effort and check for raven.min.js - /raven\.(min\.)?js$/.test(normalized.filename)); - return normalized; - }, - _processException: function _processException(type, message, fileurl, lineno, frames, options) { - var prefixedMessage = (type ? type + ': ' : '') + (message || ''); - - if (!!this._globalOptions.ignoreErrors.test && (this._globalOptions.ignoreErrors.test(message) || this._globalOptions.ignoreErrors.test(prefixedMessage))) { - return; - } + var _oldOnerrorHandler, _onErrorHandlerInstalled; - var stacktrace; + /** + * Ensures all global unhandled exceptions are recorded. + * Supported by Gecko and IE. + * @param {string} msg Error message. + * @param {string} url URL of script that generated the exception. + * @param {(number|string)} lineNo The line number at which the error + * occurred. + * @param {?(number|string)} colNo The column number at which the error + * occurred. + * @param {?Error} ex The actual Error object. + */ + function traceKitWindowOnError(msg, url, lineNo, colNo, ex) { + var stack = null; + // If 'ex' is ErrorEvent, get real Error from inside + var exception = utils.isErrorEvent(ex) ? ex.error : ex; + // If 'msg' is ErrorEvent, get real message from inside + var message = utils.isErrorEvent(msg) ? msg.message : msg; - if (frames && frames.length) { - fileurl = frames[0].filename || fileurl; // Sentry expects frames oldest to newest - // and JS sends them as newest to oldest + if (lastExceptionStack) { + TraceKit.computeStackTrace.augmentStackTraceWithInitialElement( + lastExceptionStack, + url, + lineNo, + message + ); + processLastException(); + } else if (exception && utils.isError(exception)) { + // non-string `exception` arg; attempt to extract stack trace - frames.reverse(); - stacktrace = { - frames: frames - }; - } else if (fileurl) { - stacktrace = { - frames: [{ - filename: fileurl, - lineno: lineno, - in_app: true - }] + // New chrome and blink send along a real error object + // Let's just report that like a normal error. + // See: https://mikewest.org/2013/08/debugging-runtime-errors-with-window-onerror + stack = TraceKit.computeStackTrace(exception); + notifyHandlers(stack, true); + } else { + var location = { + url: url, + line: lineNo, + column: colNo }; - } - - if (!!this._globalOptions.ignoreUrls.test && this._globalOptions.ignoreUrls.test(fileurl)) { - return; - } - if (!!this._globalOptions.whitelistUrls.test && !this._globalOptions.whitelistUrls.test(fileurl)) { - return; - } + var name = undefined; + var groups; - var data = objectMerge({ - // sentry.interfaces.Exception - exception: { - values: [{ - type: type, - value: message, - stacktrace: stacktrace - }] - }, - culprit: fileurl - }, options); // Fire away! + if ({}.toString.call(message) === '[object String]') { + var groups = message.match(ERROR_TYPES_RE); + if (groups) { + name = groups[1]; + message = groups[2]; + } + } - this._send(data); - }, - _trimPacket: function _trimPacket(data) { - // For now, we only want to truncate the two different messages - // but this could/should be expanded to just trim everything - var max = this._globalOptions.maxMessageLength; + location.func = UNKNOWN_FUNCTION; - if (data.message) { - data.message = truncate(data.message, max); + stack = { + name: name, + message: message, + url: getLocationHref(), + stack: [location] + }; + notifyHandlers(stack, true); } - if (data.exception) { - var exception = data.exception.values[0]; - exception.value = truncate(exception.value, max); + if (_oldOnerrorHandler) { + return _oldOnerrorHandler.apply(this, arguments); } - var request = data.request; + return false; + } - if (request) { - if (request.url) { - request.url = truncate(request.url, this._globalOptions.maxUrlLength); - } + function installGlobalHandler() { + if (_onErrorHandlerInstalled) { + return; + } + _oldOnerrorHandler = _window.onerror; + _window.onerror = traceKitWindowOnError; + _onErrorHandlerInstalled = true; + } - if (request.Referer) { - request.Referer = truncate(request.Referer, this._globalOptions.maxUrlLength); - } + function uninstallGlobalHandler() { + if (!_onErrorHandlerInstalled) { + return; } + _window.onerror = _oldOnerrorHandler; + _onErrorHandlerInstalled = false; + _oldOnerrorHandler = undefined; + } - if (data.breadcrumbs && data.breadcrumbs.values) this._trimBreadcrumbs(data.breadcrumbs); - return data; - }, + function processLastException() { + var _lastExceptionStack = lastExceptionStack, + _lastArgs = lastArgs; + lastArgs = null; + lastExceptionStack = null; + lastException = null; + notifyHandlers.apply(null, [_lastExceptionStack, false].concat(_lastArgs)); + } /** - * Truncate breadcrumb values (right now just URLs) + * Reports an unhandled Error to TraceKit. + * @param {Error} ex + * @param {?boolean} rethrow If false, do not re-throw the exception. + * Only used for window.onerror to not cause an infinite loop of + * rethrowing. */ - _trimBreadcrumbs: function _trimBreadcrumbs(breadcrumbs) { - // known breadcrumb properties with urls - // TODO: also consider arbitrary prop values that start with (https?)?:// - var urlProps = ['to', 'from', 'url'], - urlProp, - crumb, - data; - - for (var i = 0; i < breadcrumbs.values.length; ++i) { - crumb = breadcrumbs.values[i]; - if (!crumb.hasOwnProperty('data') || !isObject(crumb.data) || objectFrozen(crumb.data)) continue; - data = objectMerge({}, crumb.data); - - for (var j = 0; j < urlProps.length; ++j) { - urlProp = urlProps[j]; - - if (data.hasOwnProperty(urlProp) && data[urlProp]) { - data[urlProp] = truncate(data[urlProp], this._globalOptions.maxUrlLength); - } + function report(ex, rethrow) { + var args = _slice.call(arguments, 1); + if (lastExceptionStack) { + if (lastException === ex) { + return; // already caught by an inner catch block, ignore + } else { + processLastException(); } - - breadcrumbs.values[i].data = data; } - }, - _getHttpData: function _getHttpData() { - if (!this._hasNavigator && !this._hasDocument) return; - var httpData = {}; - if (this._hasNavigator && _navigator.userAgent) { - httpData.headers = { - 'User-Agent': navigator.userAgent - }; - } // Check in `window` instead of `document`, as we may be in ServiceWorker environment + var stack = TraceKit.computeStackTrace(ex); + lastExceptionStack = stack; + lastException = ex; + lastArgs = args; + // If the stack trace is incomplete, wait for 2 seconds for + // slow slow IE to see if onerror occurs or not before reporting + // this exception; otherwise, we will end up with an incomplete + // stack trace + setTimeout(function() { + if (lastException === ex) { + processLastException(); + } + }, stack.incomplete ? 2000 : 0); - if (_window$1.location && _window$1.location.href) { - httpData.url = _window$1.location.href; + if (rethrow !== false) { + throw ex; // re-throw to propagate to the top level (and cause window.onerror) } + } - if (this._hasDocument && _document.referrer) { - if (!httpData.headers) httpData.headers = {}; - httpData.headers.Referer = _document.referrer; - } + report.subscribe = subscribe; + report.unsubscribe = unsubscribe; + report.uninstall = unsubscribeAll; + return report; +})(); - return httpData; - }, - _resetBackoff: function _resetBackoff() { - this._backoffDuration = 0; - this._backoffStart = null; - }, - _shouldBackoff: function _shouldBackoff() { - return this._backoffDuration && now() - this._backoffStart < this._backoffDuration; - }, +/** + * TraceKit.computeStackTrace: cross-browser stack traces in JavaScript + * + * Syntax: + * s = TraceKit.computeStackTrace(exception) // consider using TraceKit.report instead (see below) + * Returns: + * s.name - exception name + * s.message - exception message + * s.stack[i].url - JavaScript or HTML file URL + * s.stack[i].func - function name, or empty for anonymous functions (if guessing did not work) + * s.stack[i].args - arguments passed to the function, if known + * s.stack[i].line - line number, if known + * s.stack[i].column - column number, if known + * + * Supports: + * - Firefox: full stack trace with line numbers and unreliable column + * number on top frame + * - Opera 10: full stack trace with line and column numbers + * - Opera 9-: full stack trace with line numbers + * - Chrome: full stack trace with line and column numbers + * - Safari: line and column number for the topmost stacktrace element + * only + * - IE: no line numbers whatsoever + * + * Tries to guess names of anonymous functions by looking for assignments + * in the source code. In IE and Safari, we have to guess source file names + * by searching for function bodies inside all page scripts. This will not + * work for scripts that are loaded cross-domain. + * Here be dragons: some function names may be guessed incorrectly, and + * duplicate functions may be mismatched. + * + * TraceKit.computeStackTrace should only be used for tracing purposes. + * Logging of unhandled exceptions should be done with TraceKit.report, + * which builds on top of TraceKit.computeStackTrace and provides better + * IE support by utilizing the window.onerror event to retrieve information + * about the top of the stack. + * + * Note: In IE and Safari, no stack trace is recorded on the Error object, + * so computeStackTrace instead walks its *own* chain of callers. + * This means that: + * * in Safari, some methods may be missing from the stack trace; + * * in IE, the topmost function in the stack trace will always be the + * caller of computeStackTrace. + * + * This is okay for tracing (because you are likely to be calling + * computeStackTrace from the function you want to be the topmost element + * of the stack trace anyway), but not okay for logging unhandled + * exceptions (because your catch block will likely be far away from the + * inner function that actually caused the exception). + * + */ +TraceKit.computeStackTrace = (function computeStackTraceWrapper() { + // Contents of Exception in various browsers. + // + // SAFARI: + // ex.message = Can't find variable: qq + // ex.line = 59 + // ex.sourceId = 580238192 + // ex.sourceURL = http://... + // ex.expressionBeginOffset = 96 + // ex.expressionCaretOffset = 98 + // ex.expressionEndOffset = 98 + // ex.name = ReferenceError + // + // FIREFOX: + // ex.message = qq is not defined + // ex.fileName = http://... + // ex.lineNumber = 59 + // ex.columnNumber = 69 + // ex.stack = ...stack trace... (see the example below) + // ex.name = ReferenceError + // + // CHROME: + // ex.message = qq is not defined + // ex.name = ReferenceError + // ex.type = not_defined + // ex.arguments = ['aa'] + // ex.stack = ...stack trace... + // + // INTERNET EXPLORER: + // ex.message = ... + // ex.name = ReferenceError + // + // OPERA: + // ex.message = ...message... (see the example below) + // ex.name = ReferenceError + // ex.opera#sourceloc = 11 (pretty much useless, duplicates the info in ex.message) + // ex.stacktrace = n/a; see 'opera:config#UserPrefs|Exceptions Have Stacktrace' /** - * Returns true if the in-process data payload matches the signature - * of the previously-sent data - * - * NOTE: This has to be done at this level because TraceKit can generate - * data from window.onerror WITHOUT an exception object (IE8, IE9, - * other old browsers). This can take the form of an "exception" - * data object with a single frame (derived from the onerror args). + * Computes stack trace information from the stack property. + * Chrome and Gecko use this property. + * @param {Error} ex + * @return {?Object.} Stack trace information. */ - _isRepeatData: function _isRepeatData(current) { - var last = this._lastData; - if (!last || current.message !== last.message || // defined for captureMessage - current.culprit !== last.culprit // defined for captureException/onerror - ) return false; // Stacktrace interface (i.e. from captureMessage) - - if (current.stacktrace || last.stacktrace) { - return isSameStacktrace(current.stacktrace, last.stacktrace); - } else if (current.exception || last.exception) { - // Exception interface (i.e. from captureException/onerror) - return isSameException(current.exception, last.exception); - } - - return true; - }, - _setBackoffState: function _setBackoffState(request) { - // If we are already in a backoff state, don't change anything - if (this._shouldBackoff()) { - return; - } - - var status = request.status; // 400 - project_id doesn't exist or some other fatal - // 401 - invalid/revoked dsn - // 429 - too many requests + function computeStackTraceFromStackProp(ex) { + if (typeof ex.stack === 'undefined' || !ex.stack) return; - if (!(status === 400 || status === 401 || status === 429)) return; - var retry; + var chrome = /^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i; + var winjs = /^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i; + // NOTE: blob urls are now supposed to always have an origin, therefore it's format + // which is `blob:http://url/path/with-some-uuid`, is matched by `blob.*?:\/` as well + var gecko = /^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i; + // Used to additionally parse URL/line/column from eval frames + var geckoEval = /(\S+) line (\d+)(?: > eval line \d+)* > eval/i; + var chromeEval = /\((\S*)(?::(\d+))(?::(\d+))\)/; + var lines = ex.stack.split('\n'); + var stack = []; + var submatch; + var parts; + var element; + var reference = /^(.*) is undefined$/.exec(ex.message); - try { - // If Retry-After is not in Access-Control-Expose-Headers, most - // browsers will throw an exception trying to access it - if (supportsFetch()) { - retry = request.headers.get('Retry-After'); + for (var i = 0, j = lines.length; i < j; ++i) { + if ((parts = chrome.exec(lines[i]))) { + var isNative = parts[2] && parts[2].indexOf('native') === 0; // start of line + var isEval = parts[2] && parts[2].indexOf('eval') === 0; // start of line + if (isEval && (submatch = chromeEval.exec(parts[2]))) { + // throw out eval line/column and use top-most line/column number + parts[2] = submatch[1]; // url + parts[3] = submatch[2]; // line + parts[4] = submatch[3]; // column + } + element = { + url: !isNative ? parts[2] : null, + func: parts[1] || UNKNOWN_FUNCTION, + args: isNative ? [parts[2]] : [], + line: parts[3] ? +parts[3] : null, + column: parts[4] ? +parts[4] : null + }; + } else if ((parts = winjs.exec(lines[i]))) { + element = { + url: parts[2], + func: parts[1] || UNKNOWN_FUNCTION, + args: [], + line: +parts[3], + column: parts[4] ? +parts[4] : null + }; + } else if ((parts = gecko.exec(lines[i]))) { + var isEval = parts[3] && parts[3].indexOf(' > eval') > -1; + if (isEval && (submatch = geckoEval.exec(parts[3]))) { + // throw out eval line/column and use top-most line number + parts[3] = submatch[1]; + parts[4] = submatch[2]; + parts[5] = null; // no column when eval + } else if (i === 0 && !parts[5] && typeof ex.columnNumber !== 'undefined') { + // FireFox uses this awesome columnNumber property for its top frame + // Also note, Firefox's column number is 0-based and everything else expects 1-based, + // so adding 1 + // NOTE: this hack doesn't work if top-most frame is eval + stack[0].column = ex.columnNumber + 1; + } + element = { + url: parts[3], + func: parts[1] || UNKNOWN_FUNCTION, + args: parts[2] ? parts[2].split(',') : [], + line: parts[4] ? +parts[4] : null, + column: parts[5] ? +parts[5] : null + }; } else { - retry = request.getResponseHeader('Retry-After'); - } // Retry-After is returned in seconds - - - retry = parseInt(retry, 10) * 1000; - } catch (e) { - /* eslint no-empty:0 */ - } - - this._backoffDuration = retry ? // If Sentry server returned a Retry-After value, use it - retry : // Otherwise, double the last backoff duration (starts at 1 sec) - this._backoffDuration * 2 || 1000; - this._backoffStart = now(); - }, - _send: function _send(data) { - var globalOptions = this._globalOptions; - - var baseData = { - project: this._globalProject, - logger: globalOptions.logger, - platform: 'javascript' - }, - httpData = this._getHttpData(); - - if (httpData) { - baseData.request = httpData; - } // HACK: delete `trimHeadFrames` to prevent from appearing in outbound payload - - - if (data.trimHeadFrames) delete data.trimHeadFrames; - data = objectMerge(baseData, data); // Merge in the tags and extra separately since objectMerge doesn't handle a deep merge - - data.tags = objectMerge(objectMerge({}, this._globalContext.tags), data.tags); - data.extra = objectMerge(objectMerge({}, this._globalContext.extra), data.extra); // Send along our own collected metadata with extra - - data.extra['session:duration'] = now() - this._startTime; - - if (this._breadcrumbs && this._breadcrumbs.length > 0) { - // intentionally make shallow copy so that additions - // to breadcrumbs aren't accidentally sent in this request - data.breadcrumbs = { - values: [].slice.call(this._breadcrumbs, 0) - }; - } - - if (this._globalContext.user) { - // sentry.interfaces.User - data.user = this._globalContext.user; - } // Include the environment if it's defined in globalOptions - - - if (globalOptions.environment) data.environment = globalOptions.environment; // Include the release if it's defined in globalOptions - - if (globalOptions.release) data.release = globalOptions.release; // Include server_name if it's defined in globalOptions - - if (globalOptions.serverName) data.server_name = globalOptions.serverName; // Cleanup empty properties before sending them to the server - - Object.keys(data).forEach(function (key) { - if (data[key] == null || data[key] === '' || isEmptyObject(data[key])) { - delete data[key]; + continue; } - }); - - if (isFunction(globalOptions.dataCallback)) { - data = globalOptions.dataCallback(data) || data; - } // Why?????????? - - - if (!data || isEmptyObject(data)) { - return; - } // Check if the request should be filtered or not - - - if (isFunction(globalOptions.shouldSendCallback) && !globalOptions.shouldSendCallback(data)) { - return; - } // Backoff state: Sentry server previously responded w/ an error (e.g. 429 - too many requests), - // so drop requests until "cool-off" period has elapsed. - - if (this._shouldBackoff()) { - this._logDebug('warn', 'Raven dropped error due to backoff: ', data); - - return; - } - - if (typeof globalOptions.sampleRate === 'number') { - if (Math.random() < globalOptions.sampleRate) { - this._sendProcessedPayload(data); + if (!element.func && element.line) { + element.func = UNKNOWN_FUNCTION; } - } else { - this._sendProcessedPayload(data); - } - }, - _getUuid: function _getUuid() { - return uuid4(); - }, - _sendProcessedPayload: function _sendProcessedPayload(data, callback) { - var self = this; - var globalOptions = this._globalOptions; - if (!this.isSetup()) return; // Try and clean up the packet before sending by truncating long values - - data = this._trimPacket(data); // ideally duplicate error testing should occur *before* dataCallback/shouldSendCallback, - // but this would require copying an un-truncated copy of the data packet, which can be - // arbitrarily deep (extra_data) -- could be worthwhile? will revisit - - if (!this._globalOptions.allowDuplicates && this._isRepeatData(data)) { - this._logDebug('warn', 'Raven dropped repeat event: ', data); - - return; - } // Send along an event_id if not explicitly passed. - // This event_id can be used to reference the error within Sentry itself. - // Set lastEventId after we know the error should actually be sent - - - this._lastEventId = data.event_id || (data.event_id = this._getUuid()); // Store outbound payload after trim - - this._lastData = data; - - this._logDebug('debug', 'Raven about to send:', data); - - var auth = { - sentry_version: '7', - sentry_client: 'raven-js/' + this.VERSION, - sentry_key: this._globalKey - }; - if (this._globalSecret) { - auth.sentry_secret = this._globalSecret; + stack.push(element); } - var exception = data.exception && data.exception.values[0]; // only capture 'sentry' breadcrumb is autoBreadcrumbs is truthy - - if (this._globalOptions.autoBreadcrumbs && this._globalOptions.autoBreadcrumbs.sentry) { - this.captureBreadcrumb({ - category: 'sentry', - message: exception ? (exception.type ? exception.type + ': ' : '') + exception.value : data.message, - event_id: data.event_id, - level: data.level || 'error' // presume error unless specified - - }); + if (!stack.length) { + return null; } - var url = this._globalEndpoint; + return { + name: ex.name, + message: ex.message, + url: getLocationHref(), + stack: stack + }; + } - (globalOptions.transport || this._makeRequest).call(this, { + /** + * Adds information about the first frame to incomplete stack traces. + * Safari and IE require this to get complete data on the first frame. + * @param {Object.} stackInfo Stack trace information from + * one of the compute* methods. + * @param {string} url The URL of the script that caused an error. + * @param {(number|string)} lineNo The line number of the script that + * caused an error. + * @param {string=} message The error generated by the browser, which + * hopefully contains the name of the object that caused the error. + * @return {boolean} Whether or not the stack information was + * augmented. + */ + function augmentStackTraceWithInitialElement(stackInfo, url, lineNo, message) { + var initial = { url: url, - auth: auth, - data: data, - options: globalOptions, - onSuccess: function success() { - self._resetBackoff(); - - self._triggerEvent('success', { - data: data, - src: url - }); - - callback && callback(); - }, - onError: function failure(error) { - self._logDebug('error', 'Raven transport failed to send: ', error); - - if (error.request) { - self._setBackoffState(error.request); - } + line: lineNo + }; - self._triggerEvent('failure', { - data: data, - src: url - }); + if (initial.url && initial.line) { + stackInfo.incomplete = false; - error = error || new Error('Raven send failed (no additional details provided)'); - callback && callback(error); + if (!initial.func) { + initial.func = UNKNOWN_FUNCTION; } - }); - }, - _makeRequest: function _makeRequest(opts) { - // Auth is intentionally sent as part of query string (NOT as custom HTTP header) to avoid preflight CORS requests - var url = opts.url + '?' + urlencode(opts.auth); - var evaluatedHeaders = null; - var evaluatedFetchParameters = {}; - if (opts.options.headers) { - evaluatedHeaders = this._evaluateHash(opts.options.headers); - } - - if (opts.options.fetchParameters) { - evaluatedFetchParameters = this._evaluateHash(opts.options.fetchParameters); - } - - if (supportsFetch()) { - evaluatedFetchParameters.body = stringify_1(opts.data); - var defaultFetchOptions = objectMerge({}, this._fetchDefaults); - var fetchOptions = objectMerge(defaultFetchOptions, evaluatedFetchParameters); - - if (evaluatedHeaders) { - fetchOptions.headers = evaluatedHeaders; + if (stackInfo.stack.length > 0) { + if (stackInfo.stack[0].url === initial.url) { + if (stackInfo.stack[0].line === initial.line) { + return false; // already in stack trace + } else if ( + !stackInfo.stack[0].line && + stackInfo.stack[0].func === initial.func + ) { + stackInfo.stack[0].line = initial.line; + return false; + } + } } - return _window$1.fetch(url, fetchOptions).then(function (response) { - if (response.ok) { - opts.onSuccess && opts.onSuccess(); - } else { - var error = new Error('Sentry error code: ' + response.status); // It's called request only to keep compatibility with XHR interface - // and not add more redundant checks in setBackoffState method - - error.request = response; - opts.onError && opts.onError(error); - } - })['catch'](function () { - opts.onError && opts.onError(new Error('Sentry error code: network unavailable')); - }); + stackInfo.stack.unshift(initial); + stackInfo.partial = true; + return true; + } else { + stackInfo.incomplete = true; } - var request = _window$1.XMLHttpRequest && new _window$1.XMLHttpRequest(); - if (!request) return; // if browser doesn't support CORS (e.g. IE7), we are out of luck + return false; + } - var hasCORS = 'withCredentials' in request || typeof XDomainRequest !== 'undefined'; - if (!hasCORS) return; + /** + * Computes stack trace information by walking the arguments.caller + * chain at the time the exception occurred. This will cause earlier + * frames to be missed but is the only way to get any stack trace in + * Safari and IE. The top frame is restored by + * {@link augmentStackTraceWithInitialElement}. + * @param {Error} ex + * @return {?Object.} Stack trace information. + */ + function computeStackTraceByWalkingCallerChain(ex, depth) { + var functionName = /function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i, + stack = [], + funcs = {}, + recursion = false, + parts, + item, + source; + + for ( + var curr = computeStackTraceByWalkingCallerChain.caller; + curr && !recursion; + curr = curr.caller + ) { + if (curr === computeStackTrace || curr === TraceKit.report) { + // console.log('skipping internal function'); + continue; + } - if ('withCredentials' in request) { - request.onreadystatechange = function () { - if (request.readyState !== 4) { - return; - } else if (request.status === 200) { - opts.onSuccess && opts.onSuccess(); - } else if (opts.onError) { - var err = new Error('Sentry error code: ' + request.status); - err.request = request; - opts.onError(err); - } + item = { + url: null, + func: UNKNOWN_FUNCTION, + line: null, + column: null }; - } else { - request = new XDomainRequest(); // xdomainrequest cannot go http -> https (or vice versa), - // so always use protocol relative - url = url.replace(/^https?:/, ''); // onreadystatechange not supported by XDomainRequest + if (curr.name) { + item.func = curr.name; + } else if ((parts = functionName.exec(curr.toString()))) { + item.func = parts[1]; + } - if (opts.onSuccess) { - request.onload = opts.onSuccess; + if (typeof item.func === 'undefined') { + try { + item.func = parts.input.substring(0, parts.input.indexOf('{')); + } catch (e) {} } - if (opts.onError) { - request.onerror = function () { - var err = new Error('Sentry error code: XDomainRequest'); - err.request = request; - opts.onError(err); - }; + if (funcs['' + curr]) { + recursion = true; + } else { + funcs['' + curr] = true; } - } - request.open('POST', url); + stack.push(item); + } - if (evaluatedHeaders) { - each(evaluatedHeaders, function (key, value) { - request.setRequestHeader(key, value); - }); + if (depth) { + // console.log('depth is ' + depth); + // console.log('stack is ' + stack.length); + stack.splice(0, depth); } - request.send(stringify_1(opts.data)); - }, - _evaluateHash: function _evaluateHash(hash) { - var evaluated = {}; + var result = { + name: ex.name, + message: ex.message, + url: getLocationHref(), + stack: stack + }; + augmentStackTraceWithInitialElement( + result, + ex.sourceURL || ex.fileName, + ex.line || ex.lineNumber, + ex.message || ex.description + ); + return result; + } - for (var key in hash) { - if (hash.hasOwnProperty(key)) { - var value = hash[key]; - evaluated[key] = typeof value === 'function' ? value() : value; + /** + * Computes a stack trace for an exception. + * @param {Error} ex + * @param {(string|number)=} depth + */ + function computeStackTrace(ex, depth) { + var stack = null; + depth = depth == null ? 0 : +depth; + + try { + stack = computeStackTraceFromStackProp(ex); + if (stack) { + return stack; + } + } catch (e) { + if (TraceKit.debug) { + throw e; } } - return evaluated; - }, - _logDebug: function _logDebug(level) { - if (this._originalConsoleMethods[level] && this.debug) { - // In IE<10 console methods do not have their own 'apply' method - Function.prototype.apply.call(this._originalConsoleMethods[level], this._originalConsole, [].slice.call(arguments, 1)); - } - }, - _mergeContext: function _mergeContext(key, context) { - if (isUndefined(context)) { - delete this._globalContext[key]; - } else { - this._globalContext[key] = objectMerge(this._globalContext[key] || {}, context); + try { + stack = computeStackTraceByWalkingCallerChain(ex, depth + 1); + if (stack) { + return stack; + } + } catch (e) { + if (TraceKit.debug) { + throw e; + } } + return { + name: ex.name, + message: ex.message, + url: getLocationHref() + }; } -}; // Deprecations -Raven$1.prototype.setUser = Raven$1.prototype.setUserContext; -Raven$1.prototype.setReleaseContext = Raven$1.prototype.setRelease; -var raven = Raven$1; + computeStackTrace.augmentStackTraceWithInitialElement = augmentStackTraceWithInitialElement; + computeStackTrace.computeStackTraceFromStackProp = computeStackTraceFromStackProp; -/** - * Enforces a single instance of the Raven client, and the - * main entry point for Raven. If you are a consumer of the - * Raven library, you SHOULD load this file (vs raven.js). - **/ -// This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) + return computeStackTrace; +})(); -var _window = typeof window !== 'undefined' ? window : typeof commonjsGlobal !== 'undefined' ? commonjsGlobal : typeof self !== 'undefined' ? self : {}; +module.exports = TraceKit; -var _Raven = _window.Raven; -var Raven = new raven(); +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"8":8}],10:[function(_dereq_,module,exports){ /* - * Allow multiple versions of Raven to be installed. - * Strip Raven from the global context and returns the instance. - * - * @return {Raven} - */ + json-stringify-safe + Like JSON.stringify, but doesn't throw on circular references. -Raven.noConflict = function () { - _window.Raven = _Raven; - return Raven; -}; + Originally forked from https://github.com/isaacs/json-stringify-safe + version 5.0.1 on 3/8/2017 and modified to handle Errors serialization + and IE8 compatibility. Tests for this are in test/vendor. -Raven.afterLoad(); -var singleton = Raven; + ISC license: https://github.com/isaacs/json-stringify-safe/blob/master/LICENSE +*/ -/** - * console plugin - * - * Monkey patches console.* calls into Sentry messages with - * their appropriate log levels. (Experimental) - * - * Options: - * - * `levels`: An array of levels (methods on `console`) to report to Sentry. - * Defaults to debug, info, warn, and error. - */ +exports = module.exports = stringify; +exports.getSerialize = serializer; -var wrapConsoleMethod$1 = console$1.wrapMethod; +function indexOf(haystack, needle) { + for (var i = 0; i < haystack.length; ++i) { + if (haystack[i] === needle) return i; + } + return -1; +} -function consolePlugin(Raven, console, pluginOptions) { - console = console || window.console || {}; - pluginOptions = pluginOptions || {}; - var logLevels = pluginOptions.levels || ['debug', 'info', 'warn', 'error']; - if ('assert' in console) logLevels.push('assert'); +function stringify(obj, replacer, spaces, cycleReplacer) { + return JSON.stringify(obj, serializer(replacer, cycleReplacer), spaces); +} - var callback = function callback(msg, data) { - Raven.captureMessage(msg, data); +// https://github.com/ftlabs/js-abbreviate/blob/fa709e5f139e7770a71827b1893f22418097fbda/index.js#L95-L106 +function stringifyError(value) { + var err = { + // These properties are implemented as magical getters and don't show up in for in + stack: value.stack, + message: value.message, + name: value.name }; - var level = logLevels.pop(); - - while (level) { - wrapConsoleMethod$1(console, level, callback); - level = logLevels.pop(); + for (var i in value) { + if (Object.prototype.hasOwnProperty.call(value, i)) { + err[i] = value[i]; + } } + + return err; } -var console$3 = consolePlugin; +function serializer(replacer, cycleReplacer) { + var stack = []; + var keys = []; -/** - * Ember.js plugin + if (cycleReplacer == null) { + cycleReplacer = function(key, value) { + if (stack[0] === value) { + return '[Circular ~]'; + } + return '[Circular ~.' + keys.slice(0, indexOf(stack, value)).join('.') + ']'; + }; + } + + return function(key, value) { + if (stack.length > 0) { + var thisPos = indexOf(stack, this); + ~thisPos ? stack.splice(thisPos + 1) : stack.push(this); + ~thisPos ? keys.splice(thisPos, Infinity, key) : keys.push(key); + + if (~indexOf(stack, value)) { + value = cycleReplacer.call(this, key, value); + } + } else { + stack.push(value); + } + + return replacer == null + ? value instanceof Error ? stringifyError(value) : value + : replacer.call(this, key, value); + }; +} + +},{}],11:[function(_dereq_,module,exports){ +/* + * JavaScript MD5 + * https://github.com/blueimp/JavaScript-MD5 * - * Patches event handler callbacks and ajax callbacks. + * Copyright 2011, Sebastian Tschan + * https://blueimp.net + * + * Licensed under the MIT license: + * https://opensource.org/licenses/MIT + * + * Based on + * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message + * Digest Algorithm, as defined in RFC 1321. + * Version 2.2 Copyright (C) Paul Johnston 1999 - 2009 + * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet + * Distributed under the BSD License + * See http://pajhome.org.uk/crypt/md5 for more info. */ -function emberPlugin(Raven, Ember) { - Ember = Ember || window.Ember; // quit if Ember isn't on the page - if (!Ember) return; - var _oldOnError = Ember.onerror; +/* +* Add integers, wrapping at 2^32. This uses 16-bit operations internally +* to work around bugs in some JS interpreters. +*/ +function safeAdd(x, y) { + var lsw = (x & 0xffff) + (y & 0xffff); + var msw = (x >> 16) + (y >> 16) + (lsw >> 16); + return (msw << 16) | (lsw & 0xffff); +} - Ember.onerror = function EmberOnError(error) { - Raven.captureException(error); +/* +* Bitwise rotate a 32-bit number to the left. +*/ +function bitRotateLeft(num, cnt) { + return (num << cnt) | (num >>> (32 - cnt)); +} - if (typeof _oldOnError === 'function') { - _oldOnError.call(this, error); - } - }; +/* +* These functions implement the four basic operations the algorithm uses. +*/ +function md5cmn(q, a, b, x, s, t) { + return safeAdd(bitRotateLeft(safeAdd(safeAdd(a, q), safeAdd(x, t)), s), b); +} +function md5ff(a, b, c, d, x, s, t) { + return md5cmn((b & c) | (~b & d), a, b, x, s, t); +} +function md5gg(a, b, c, d, x, s, t) { + return md5cmn((b & d) | (c & ~d), a, b, x, s, t); +} +function md5hh(a, b, c, d, x, s, t) { + return md5cmn(b ^ c ^ d, a, b, x, s, t); +} +function md5ii(a, b, c, d, x, s, t) { + return md5cmn(c ^ (b | ~d), a, b, x, s, t); +} - Ember.RSVP.on('error', function (reason) { - if (reason instanceof Error) { - Raven.captureException(reason, { - extra: { - context: 'Unhandled Promise error detected' - } - }); - } else { - Raven.captureMessage('Unhandled Promise error detected', { - extra: { - reason: reason - } - }); - } - }); +/* +* Calculate the MD5 of an array of little-endian words, and a bit length. +*/ +function binlMD5(x, len) { + /* append padding */ + x[len >> 5] |= 0x80 << (len % 32); + x[(((len + 64) >>> 9) << 4) + 14] = len; + + var i; + var olda; + var oldb; + var oldc; + var oldd; + var a = 1732584193; + var b = -271733879; + var c = -1732584194; + var d = 271733878; + + for (i = 0; i < x.length; i += 16) { + olda = a; + oldb = b; + oldc = c; + oldd = d; + + a = md5ff(a, b, c, d, x[i], 7, -680876936); + d = md5ff(d, a, b, c, x[i + 1], 12, -389564586); + c = md5ff(c, d, a, b, x[i + 2], 17, 606105819); + b = md5ff(b, c, d, a, x[i + 3], 22, -1044525330); + a = md5ff(a, b, c, d, x[i + 4], 7, -176418897); + d = md5ff(d, a, b, c, x[i + 5], 12, 1200080426); + c = md5ff(c, d, a, b, x[i + 6], 17, -1473231341); + b = md5ff(b, c, d, a, x[i + 7], 22, -45705983); + a = md5ff(a, b, c, d, x[i + 8], 7, 1770035416); + d = md5ff(d, a, b, c, x[i + 9], 12, -1958414417); + c = md5ff(c, d, a, b, x[i + 10], 17, -42063); + b = md5ff(b, c, d, a, x[i + 11], 22, -1990404162); + a = md5ff(a, b, c, d, x[i + 12], 7, 1804603682); + d = md5ff(d, a, b, c, x[i + 13], 12, -40341101); + c = md5ff(c, d, a, b, x[i + 14], 17, -1502002290); + b = md5ff(b, c, d, a, x[i + 15], 22, 1236535329); + + a = md5gg(a, b, c, d, x[i + 1], 5, -165796510); + d = md5gg(d, a, b, c, x[i + 6], 9, -1069501632); + c = md5gg(c, d, a, b, x[i + 11], 14, 643717713); + b = md5gg(b, c, d, a, x[i], 20, -373897302); + a = md5gg(a, b, c, d, x[i + 5], 5, -701558691); + d = md5gg(d, a, b, c, x[i + 10], 9, 38016083); + c = md5gg(c, d, a, b, x[i + 15], 14, -660478335); + b = md5gg(b, c, d, a, x[i + 4], 20, -405537848); + a = md5gg(a, b, c, d, x[i + 9], 5, 568446438); + d = md5gg(d, a, b, c, x[i + 14], 9, -1019803690); + c = md5gg(c, d, a, b, x[i + 3], 14, -187363961); + b = md5gg(b, c, d, a, x[i + 8], 20, 1163531501); + a = md5gg(a, b, c, d, x[i + 13], 5, -1444681467); + d = md5gg(d, a, b, c, x[i + 2], 9, -51403784); + c = md5gg(c, d, a, b, x[i + 7], 14, 1735328473); + b = md5gg(b, c, d, a, x[i + 12], 20, -1926607734); + + a = md5hh(a, b, c, d, x[i + 5], 4, -378558); + d = md5hh(d, a, b, c, x[i + 8], 11, -2022574463); + c = md5hh(c, d, a, b, x[i + 11], 16, 1839030562); + b = md5hh(b, c, d, a, x[i + 14], 23, -35309556); + a = md5hh(a, b, c, d, x[i + 1], 4, -1530992060); + d = md5hh(d, a, b, c, x[i + 4], 11, 1272893353); + c = md5hh(c, d, a, b, x[i + 7], 16, -155497632); + b = md5hh(b, c, d, a, x[i + 10], 23, -1094730640); + a = md5hh(a, b, c, d, x[i + 13], 4, 681279174); + d = md5hh(d, a, b, c, x[i], 11, -358537222); + c = md5hh(c, d, a, b, x[i + 3], 16, -722521979); + b = md5hh(b, c, d, a, x[i + 6], 23, 76029189); + a = md5hh(a, b, c, d, x[i + 9], 4, -640364487); + d = md5hh(d, a, b, c, x[i + 12], 11, -421815835); + c = md5hh(c, d, a, b, x[i + 15], 16, 530742520); + b = md5hh(b, c, d, a, x[i + 2], 23, -995338651); + + a = md5ii(a, b, c, d, x[i], 6, -198630844); + d = md5ii(d, a, b, c, x[i + 7], 10, 1126891415); + c = md5ii(c, d, a, b, x[i + 14], 15, -1416354905); + b = md5ii(b, c, d, a, x[i + 5], 21, -57434055); + a = md5ii(a, b, c, d, x[i + 12], 6, 1700485571); + d = md5ii(d, a, b, c, x[i + 3], 10, -1894986606); + c = md5ii(c, d, a, b, x[i + 10], 15, -1051523); + b = md5ii(b, c, d, a, x[i + 1], 21, -2054922799); + a = md5ii(a, b, c, d, x[i + 8], 6, 1873313359); + d = md5ii(d, a, b, c, x[i + 15], 10, -30611744); + c = md5ii(c, d, a, b, x[i + 6], 15, -1560198380); + b = md5ii(b, c, d, a, x[i + 13], 21, 1309151649); + a = md5ii(a, b, c, d, x[i + 4], 6, -145523070); + d = md5ii(d, a, b, c, x[i + 11], 10, -1120210379); + c = md5ii(c, d, a, b, x[i + 2], 15, 718787259); + b = md5ii(b, c, d, a, x[i + 9], 21, -343485551); + + a = safeAdd(a, olda); + b = safeAdd(b, oldb); + c = safeAdd(c, oldc); + d = safeAdd(d, oldd); + } + return [a, b, c, d]; } -var ember = emberPlugin; +/* +* Convert an array of little-endian words to a string +*/ +function binl2rstr(input) { + var i; + var output = ''; + var length32 = input.length * 32; + for (i = 0; i < length32; i += 8) { + output += String.fromCharCode((input[i >> 5] >>> (i % 32)) & 0xff); + } + return output; +} -/*global define*/ +/* +* Convert a raw string to an array of little-endian words +* Characters >255 have their high-byte silently ignored. +*/ +function rstr2binl(input) { + var i; + var output = []; + output[(input.length >> 2) - 1] = undefined; + for (i = 0; i < output.length; i += 1) { + output[i] = 0; + } + var length8 = input.length * 8; + for (i = 0; i < length8; i += 8) { + output[i >> 5] |= (input.charCodeAt(i / 8) & 0xff) << (i % 32); + } + return output; +} -/** - * require.js plugin - * - * Automatically wrap define/require callbacks. (Experimental) - */ +/* +* Calculate the MD5 of a raw string +*/ +function rstrMD5(s) { + return binl2rstr(binlMD5(rstr2binl(s), s.length * 8)); +} -function requirePlugin(Raven) { - if (typeof undefined === 'function' && undefined.amd) { - window.define = Raven.wrap({ - deep: false - }, undefined); - window.require = Raven.wrap({ - deep: false - }, commonjsRequire); +/* +* Calculate the HMAC-MD5, of a key and some data (raw strings) +*/ +function rstrHMACMD5(key, data) { + var i; + var bkey = rstr2binl(key); + var ipad = []; + var opad = []; + var hash; + ipad[15] = opad[15] = undefined; + if (bkey.length > 16) { + bkey = binlMD5(bkey, key.length * 8); + } + for (i = 0; i < 16; i += 1) { + ipad[i] = bkey[i] ^ 0x36363636; + opad[i] = bkey[i] ^ 0x5c5c5c5c; + } + hash = binlMD5(ipad.concat(rstr2binl(data)), 512 + data.length * 8); + return binl2rstr(binlMD5(opad.concat(hash), 512 + 128)); +} + +/* +* Convert a raw string to a hex string +*/ +function rstr2hex(input) { + var hexTab = '0123456789abcdef'; + var output = ''; + var x; + var i; + for (i = 0; i < input.length; i += 1) { + x = input.charCodeAt(i); + output += hexTab.charAt((x >>> 4) & 0x0f) + hexTab.charAt(x & 0x0f); } + return output; } -var require_1 = requirePlugin; +/* +* Encode a string as utf-8 +*/ +function str2rstrUTF8(input) { + return unescape(encodeURIComponent(input)); +} -/* This file was generated by './scripts/generate-plugin-combinations.js'! */ +/* +* Take string arguments and return either raw or hex encoded strings +*/ +function rawMD5(s) { + return rstrMD5(str2rstrUTF8(s)); +} +function hexMD5(s) { + return rstr2hex(rawMD5(s)); +} +function rawHMACMD5(k, d) { + return rstrHMACMD5(str2rstrUTF8(k), str2rstrUTF8(d)); +} +function hexHMACMD5(k, d) { + return rstr2hex(rawHMACMD5(k, d)); +} -singleton.addPlugin(console$3).addPlugin(ember).addPlugin(require_1); -var console_ember_require = {}; +function md5(string, key, raw) { + if (!key) { + if (!raw) { + return hexMD5(string); + } + return rawMD5(string); + } + if (!raw) { + return hexHMACMD5(key, string); + } + return rawHMACMD5(key, string); +} -return console_ember_require; +module.exports = md5; -}))); +},{}]},{},[7,1,2,3])(7) +}); \ No newline at end of file diff --git a/dist/console,ember,require/raven.min.js b/dist/console,ember,require/raven.min.js index 622834cf74b0..e8ca648761f9 100644 --- a/dist/console,ember,require/raven.min.js +++ b/dist/console,ember,require/raven.min.js @@ -1,3 +1,4 @@ -/*! Raven.js 3.22.2 (1b6187b) | github.com/getsentry/raven-js */ -!function(a,b){"object"==typeof exports&&"undefined"!=typeof module?module.exports=b():"function"==typeof define&&define.amd?define(b):a.Raven=b()}(this,function(){"use strict";function a(a,b){return b={exports:{}},a(b,b.exports),b.exports}function b(a){return(b="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(a){return typeof a}:function(a){return a&&"function"==typeof Symbol&&a.constructor===Symbol&&a!==Symbol.prototype?"symbol":typeof a})(a)}function c(a){return"object"===b(a)&&null!==a}function d(a){switch({}.toString.call(a)){case"[object Error]":return!0;case"[object Exception]":return!0;case"[object DOMException]":return!0;default:return a instanceof Error}}function e(a){return l()&&"[object ErrorEvent]"==={}.toString.call(a)}function f(a){return void 0===a}function g(a){return"function"==typeof a}function h(a){return"[object Object]"===Object.prototype.toString.call(a)}function i(a){return"[object String]"===Object.prototype.toString.call(a)}function j(a){return"[object Array]"===Object.prototype.toString.call(a)}function k(a){if(!h(a))return!1;for(var b in a)if(a.hasOwnProperty(b))return!1;return!0}function l(){try{return new ErrorEvent(""),!0}catch(a){return!1}}function m(){if(!("fetch"in P))return!1;try{return new Headers,new Request(""),new Response,!0}catch(a){return!1}}function n(a){function b(b,c){var d=a(b)||b;return c?c(d)||d:d}return b}function o(a,b){var c,d;if(f(a.length))for(c in a)s(a,c)&&b.call(null,c,a[c]);else if(d=a.length)for(c=0;c ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function y(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&i(b))for(c=b.split(/\s+/),f=0;f=0;--b)l[b]===a&&l.splice(b,1)}function c(){g(),l=[]}function d(a,b){var c=null;if(!b||R.collectWindowErrors){for(var d in l)if(l.hasOwnProperty(d))try{l[d].apply(null,[a].concat(T.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function e(a,b,c,e,f){var g=null,i=Q.isErrorEvent(f)?f.error:f,k=Q.isErrorEvent(a)?a.message:a;if(o)R.computeStackTrace.augmentStackTraceWithInitialElement(o,b,c,k),h();else if(i&&Q.isError(i))g=R.computeStackTrace(i),d(g,!0);else{var l,m={url:b,line:c,column:e},n=void 0;if("[object String]"==={}.toString.call(k)){var l=k.match(V);l&&(n=l[1],k=l[2])}m.func=U,g={name:n,message:k,url:F(),stack:[m]},d(g,!0)}return!!j&&j.apply(this,arguments)}function f(){k||(j=S.onerror,S.onerror=e,k=!0)}function g(){k&&(S.onerror=j,k=!1,j=void 0)}function h(){var a=o,b=m;m=null,o=null,n=null,d.apply(null,[a,!1].concat(b))}function i(a,b){var c=T.call(arguments,1);if(o){if(n===a)return;h()}var d=R.computeStackTrace(a);if(o=d,n=a,m=c,setTimeout(function(){n===a&&h()},d.incomplete?2e3:0),b!==!1)throw a}var j,k,l=[],m=null,n=null,o=null;return i.subscribe=a,i.unsubscribe=b,i.uninstall=c,i}(),R.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,d,e=/^\s*at (.*?) ?\(((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,f=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|\[native).*?|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,g=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,h=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,i=/\((\S*)(?::(\d+))(?::(\d+))\)/,j=a.stack.split("\n"),k=[],l=(/^(.*) is undefined$/.exec(a.message),0),m=j.length;l eval")>-1;o&&(b=h.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==l||c[5]||"undefined"==typeof a.columnNumber||(k[0].column=a.columnNumber+1),d={url:c[3],func:c[1]||U,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}!d.func&&d.line&&(d.func=U),k.push(d)}return k.length?{name:a.name,message:a.message,url:F(),stack:k}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=U),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,e){for(var f,g,h=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,i=[],j={},k=!1,l=c.caller;l&&!k;l=l.caller)if(l!==d&&l!==R.report){if(g={url:null,func:U,line:null,column:null},l.name?g.func=l.name:(f=h.exec(l.toString()))&&(g.func=f[1]),"undefined"==typeof g.func)try{g.func=f.input.substring(0,f.input.indexOf("{"))}catch(m){}j[""+l]?k=!0:j[""+l]=!0,i.push(g)}e&&i.splice(0,e);var n={name:a.name,message:a.message,url:F(),stack:i};return b(n,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),n}function d(b,d){var e=null;d=null==d?0:+d;try{if(e=a(b))return e}catch(f){if(R.debug)throw f}try{if(e=c(b,d+1))return e}catch(f){if(R.debug)throw f}return{name:b.name,message:b.message,url:F()}}return d.augmentStackTraceWithInitialElement=b,d.computeStackTraceFromStackProp=a,d}();var W=R,X=a(function(a,b){function c(a,b){for(var c=0;c0){var i=c(d,this);~i?d.splice(i+1):d.push(this),~i?f.splice(i,1/0,g):f.push(g),~c(d,h)&&(h=b.call(this,g,h))}else d.push(h);return null==a?h instanceof Error?e(h):h:a.call(this,g,h)}}b=a.exports=d,b.getSerialize=f});G.prototype=new Error,G.prototype.constructor=G;var Y=G,Z=function(a,b,c){var d=a[b],e=a;if(b in a){var f="warn"===b?"warning":b;a[b]=function(){var a=[].slice.call(arguments),g=Q.safeJoin(a," "),h={level:f,logger:"console",extra:{arguments:a}};"assert"===b?a[0]===!1&&(g="Assertion failed: "+(Q.safeJoin(a.slice(1)," ")||"console.assert"),h.extra.arguments=a.slice(1),c&&c(g,h)):c&&c(g,h),d&&Function.prototype.apply.call(d,e,a)}}},$={wrapMethod:Z},_=Q.isError,aa=Q.isObject,ba=Q.isErrorEvent,ca=Q.isUndefined,da=Q.isFunction,ea=Q.isString,fa=Q.isArray,ga=Q.isEmptyObject,ha=Q.each,ia=Q.objectMerge,ja=Q.truncate,ka=Q.objectFrozen,la=Q.hasKey,ma=Q.joinRegExp,na=Q.urlencode,oa=Q.uuid4,pa=Q.htmlTreeAsString,qa=Q.isSameException,ra=Q.isSameStacktrace,sa=Q.parseUrl,ta=Q.fill,ua=Q.supportsFetch,va=$.wrapMethod,wa="source protocol user pass host port path".split(" "),xa=/^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/,ya="undefined"!=typeof window?window:"undefined"!=typeof N?N:"undefined"!=typeof self?self:{},za=ya.document,Aa=ya.navigator;J.prototype={VERSION:"3.22.2",debug:!1,TraceKit:W,config:function(a,b){var c=this;if(c.i)return this.C("error","Error: Raven has already been configured"),c;if(!a)return c;var d=c.m;b&&ha(b,function(a,b){"tags"===a||"extra"===a||"user"===a?c.l[a]=b:d[a]=b}),c.setDSN(a),d.ignoreErrors.push(/^Script error\.?$/),d.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/),d.ignoreErrors=ma(d.ignoreErrors),d.ignoreUrls=!!d.ignoreUrls.length&&ma(d.ignoreUrls),d.whitelistUrls=!!d.whitelistUrls.length&&ma(d.whitelistUrls),d.includePaths=ma(d.includePaths),d.maxBreadcrumbs=Math.max(0,Math.min(d.maxBreadcrumbs||100,100));var e={xhr:!0,console:!0,dom:!0,location:!0,sentry:!0},f=d.autoBreadcrumbs;"[object Object]"==={}.toString.call(f)?f=ia(e,f):f!==!1&&(f=e),d.autoBreadcrumbs=f;var g={tryCatch:!0},h=d.instrument;return"[object Object]"==={}.toString.call(h)?h=ia(g,h):h!==!1&&(h=g),d.instrument=h,W.collectWindowErrors=!!d.collectWindowErrors,c},install:function(){var a=this;return a.isSetup()&&!a.p&&(W.report.subscribe(function(){a.D.apply(a,arguments)}),a.E(),a.m.instrument&&a.m.instrument.tryCatch&&a.F(),a.m.autoBreadcrumbs&&a.G(),a.H(),a.p=!0),Error.stackTraceLimit=a.m.stackTraceLimit,this},setDSN:function(a){var b=this,c=b.I(a),d=c.path.lastIndexOf("/"),e=c.path.substr(1,d);b.J=a,b.j=c.user,b.K=c.pass&&c.pass.substr(1),b.k=c.path.substr(d+1),b.i=b.L(c),b.M=b.i+"/"+e+"api/"+b.k+"/store/",this.A()},context:function(a,b,c){return da(a)&&(c=b||[],b=a,a=void 0),this.wrap(a,b).apply(this,c)},wrap:function(a,b,c){function d(){var d=[],f=arguments.length,g=!a||a&&a.deep!==!1;for(c&&da(c)&&c.apply(this,arguments);f--;)d[f]=g?e.wrap(a,arguments[f]):arguments[f];try{return b.apply(this,d)}catch(h){throw e.N(),e.captureException(h,a),h}}var e=this;if(ca(b)&&!da(a))return a;if(da(a)&&(b=a,a=void 0),!da(b))return b;try{if(b.a)return b;if(b.O)return b.O}catch(f){return b}for(var g in b)la(b,g)&&(d[g]=b[g]);return d.prototype=b.prototype,b.O=d,d.a=!0,d.b=b,d},uninstall:function(){return W.report.uninstall(),this.P(),this.Q(),this.R(),Error.stackTraceLimit=this.q,this.p=!1,this},captureException:function(a,b){b=ia({trimHeadFrames:0},b?b:{});var c=!_(a),d=!ba(a),e=ba(a)&&!a.error;if(c&&d||e)return this.captureMessage(a,ia(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}));ba(a)&&(a=a.error),this.f=a;try{var f=W.computeStackTrace(a);this.S(f,b)}catch(g){if(a!==g)throw g}return this},captureMessage:function(a,b){if(!this.m.ignoreErrors.test||!this.m.ignoreErrors.test(a)){b=b||{};var c,d=ia({message:a+""},b);try{throw new Error(a)}catch(e){c=e}c.name=null;var f=W.computeStackTrace(c),g=fa(f.stack)&&f.stack[1],h=g&&g.url||"";if((!this.m.ignoreUrls.test||!this.m.ignoreUrls.test(h))&&(!this.m.whitelistUrls.test||this.m.whitelistUrls.test(h))){if(this.m.stacktrace||b&&b.stacktrace){b=ia({fingerprint:a,trimHeadFrames:(b.trimHeadFrames||0)+1},b);var i=this.T(f,b);d.stacktrace={frames:i.reverse()}}return this.U(d),this}}},captureBreadcrumb:function(a){var b=ia({timestamp:H()/1e3},a);if(da(this.m.breadcrumbCallback)){var c=this.m.breadcrumbCallback(b);if(aa(c)&&!ga(c))b=c;else if(c===!1)return this}return this.w.push(b),this.w.length>this.m.maxBreadcrumbs&&this.w.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.t.push([a,b]),this.p&&this.H(),this},setUserContext:function(a){return this.l.user=a,this},setExtraContext:function(a){return this.V("extra",a),this},setTagsContext:function(a){return this.V("tags",a),this},clearContext:function(){return this.l={},this},getContext:function(){return JSON.parse(X(this.l))},setEnvironment:function(a){return this.m.environment=a,this},setRelease:function(a){return this.m.release=a,this},setDataCallback:function(a){var b=this.m.dataCallback;return this.m.dataCallback=I(b,a),this},setBreadcrumbCallback:function(a){var b=this.m.breadcrumbCallback;return this.m.breadcrumbCallback=I(b,a),this},setShouldSendCallback:function(a){var b=this.m.shouldSendCallback;return this.m.shouldSendCallback=I(b,a),this},setTransport:function(a){return this.m.transport=a,this},lastException:function(){return this.f},lastEventId:function(){return this.h},isSetup:function(){return!!this.c&&(!!this.i||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.C("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=ya.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(za){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new Y("Missing eventId");var c=a.dsn||this.J;if(!c)throw new Y("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.l.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.L(this.I(c)),h=za.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(za.head||za.body).appendChild(h)}},N:function(){var a=this;this.o+=1,setTimeout(function(){a.o-=1})},W:function(a,b){var c,d;if(this.d){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),za.createEvent?(c=za.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=za.createEventObject(),c.eventType=a);for(d in b)la(b,d)&&(c[d]=b[d]);if(za.createEvent)za.dispatchEvent(c);else try{za.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},X:function(a){var b=this;return function(c){if(b.Y=null,b.x!==c){b.x=c;var d;try{d=pa(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},Z:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.Y;g||a.X("input")(c),clearTimeout(g),a.Y=setTimeout(function(){a.Y=null},b)}}},$:function(a,b){var c=sa(this.y.href),d=sa(b),e=sa(a);this.z=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},E:function(){var a=this;a._=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.a?a._.apply(this.b,arguments):a._.apply(this,arguments)}},P:function(){this._&&(Function.prototype.toString=this._)},F:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.$(b.z,c+""),a.apply(this,arguments)}};ta(history,"pushState",j,d),ta(history,"replaceState",j,d)}if(c.console&&"console"in ya&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};ha(["debug","info","warn","error","log"],function(a,b){va(console,b,k)})}},Q:function(){for(var a;this.v.length;){a=this.v.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},R:function(){for(var a in this.s)this.r[a]=this.s[a]},H:function(){var a=this;ha(this.t,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},I:function(a){var b=xa.exec(a),c={},d=7;try{for(;d--;)c[wa[d]]=b[d]||""}catch(e){throw new Y("Invalid DSN: "+a)}if(c.pass&&!this.m.allowSecretKey)throw new Y("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},L:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},D:function(){this.o||this.S.apply(this,arguments)},S:function(a,b){var c=this.T(a,b);this.W("handle",{stackInfo:a,options:b}),this.ba(a.name,a.message,a.url,a.lineno,c,b)},T:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(ha(a.stack,function(b,e){var f=c.ca(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.w,0)}),this.l.user&&(a.user=this.l.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||ga(a[b]))&&delete a[b]}),da(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!ga(a)&&(!da(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.ia()?void this.C("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random()this.k.maxBreadcrumbs&&this.u.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.r.push([a,b]),this.n&&this.F(),this},setUserContext:function(a){return this.j.user=a,this},setExtraContext:function(a){return this.Z("extra",a),this},setTagsContext:function(a){return this.Z("tags",a),this},clearContext:function(){return this.j={},this},getContext:function(){return JSON.parse(h(this.j))},setEnvironment:function(a){return this.k.environment=a,this},setRelease:function(a){return this.k.release=a,this},setDataCallback:function(a){var b=this.k.dataCallback;return this.k.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.k.breadcrumbCallback;return this.k.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.k.shouldSendCallback;return this.k.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.k.transport=a,this},lastException:function(){return this.d},lastEventId:function(){return this.f},isSetup:function(){return!!this.a&&(!!this.g||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.z("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=P.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(Q){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.H;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.j.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.J(this.G(c)),h=Q.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(Q.head||Q.body).appendChild(h)}},L:function(){var a=this;this.m+=1,setTimeout(function(){a.m-=1})},$:function(a,b){var c,d;if(this.b){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),Q.createEvent?(c=Q.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=Q.createEventObject(),c.eventType=a);for(d in b)y(b,d)&&(c[d]=b[d]);if(Q.createEvent)Q.dispatchEvent(c);else try{Q.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},_:function(a){var b=this;return function(c){if(b.aa=null,b.v!==c){b.v=c;var d;try{d=C(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ba:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.aa;g||a._("input")(c),clearTimeout(g),a.aa=setTimeout(function(){a.aa=null},b)}}},ca:function(a,b){var c=F(this.w.href),d=F(b),e=F(a);this.x=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},C:function(){var a=this;a.da=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.M?a.da.apply(this.O,arguments):a.da.apply(this,arguments)}},Q:function(){this.da&&(Function.prototype.toString=this.da)},D:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.ca(b.x,c+""),a.apply(this,arguments)}};G(history,"pushState",j,d),G(history,"replaceState",j,d)}if(c.console&&"console"in P&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};u(["debug","info","warn","error","log"],function(a,b){M(console,b,k)})}},R:function(){for(var a;this.t.length;){a=this.t.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},S:function(){for(var a in this.q)this.p[a]=this.q[a]},F:function(){var a=this;u(this.r,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},G:function(a){var b=O.exec(a),c={},d=7;try{for(;d--;)c[N[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.k.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},J:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},A:function(){this.m||this.V.apply(this,arguments)},V:function(a,b){var c=this.X(a,b);this.$("handle",{stackInfo:a,options:b}),this.fa(a.name,a.message,a.url,a.lineno,c,b)},X:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(u(a.stack,function(b,e){var f=c.ga(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.u,0)}),this.j.user&&(a.user=this.j.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),a=this.pa(a),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||t(a[b]))&&delete a[b]}),q(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!t(a)&&(!q(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.ma()?void this.z("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function B(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&j(b))for(c=b.split(/\s+/),f=0;fc?M(a,b-1):d}function N(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?T:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function O(a,b){function c(a){return k(a)?a.map(function(a){return c(a)}):i(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!k(b)||k(b)&&0===b.length)return a;var d,e=w(b),f="********";try{d=JSON.parse(P(a))}catch(g){return a}return c(d)}var P=a(10),Q="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},R=3,S=51200,T=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isUndefined:g,isFunction:h,isPlainObject:i,isString:j,isArray:k,isEmptyObject:l,supportsErrorEvent:m,supportsFetch:n,supportsReferrerPolicy:o,supportsPromiseRejectionEvent:p,wrappedCallback:q,each:r,objectMerge:s,truncate:u,objectFrozen:t,hasKey:v,joinRegExp:w,urlencode:x,uuid4:z,htmlTreeAsString:A,htmlElementAsString:B,isSameException:E,isSameStacktrace:F,parseUrl:y,fill:G,safeJoin:H,serializeException:M,serializeKeysForMessage:N,sanitize:O}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{10:10}],9:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}var e=a(8),f={collectWindowErrors:!0,debug:!1},g="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},h=[].slice,i="?",j=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;f.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function k(a,b){var c=null;if(!b||f.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(h.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,g,h){var l=null,m=e.isErrorEvent(h)?h.error:h,n=e.isErrorEvent(a)?a.message:a;if(v)f.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&e.isError(m))l=f.computeStackTrace(m),k(l,!0);else{var p,r={url:b,line:c,column:g},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(j);p&&(s=p[1],n=p[2])}r.func=i,l={name:s,message:n,url:d(),stack:[r]},k(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=g.onerror,g.onerror=l,r=!0)}function n(){r&&(g.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,k.apply(null,[a,!1].concat(b))}function p(a,b){var c=h.call(arguments,1);if(v){if(u===a)return;o()}var d=f.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),f.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,e,f=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,g=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,h=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,j=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,k=/\((\S*)(?::(\d+))(?::(\d+))\)/,l=a.stack.split("\n"),m=[],n=(/^(.*) is undefined$/.exec(a.message),0),o=l.length;n eval")>-1;q&&(b=j.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==n||c[5]||"undefined"==typeof a.columnNumber||(m[0].column=a.columnNumber+1),e={url:c[3],func:c[1]||i,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}!e.func&&e.line&&(e.func=i),m.push(e)}return m.length?{name:a.name,message:a.message,url:d(),stack:m}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=i),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,g){for(var h,j,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==e&&o!==f.report){if(j={url:null,func:i,line:null,column:null},o.name?j.func=o.name:(h=k.exec(o.toString()))&&(j.func=h[1]),"undefined"==typeof j.func)try{j.func=h.input.substring(0,h.input.indexOf("{"))}catch(p){}m[""+o]?n=!0:m[""+o]=!0,l.push(j)}g&&l.splice(0,g);var q={name:a.name,message:a.message,url:d(),stack:l};return b(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),q}function e(b,e){var g=null;e=null==e?0:+e;try{if(g=a(b))return g}catch(h){if(f.debug)throw h}try{if(g=c(b,e+1))return g}catch(h){if(f.debug)throw h}return{name:b.name,message:b.message,url:d()}}return e.augmentStackTraceWithInitialElement=b,e.computeStackTraceFromStackProp=a,e}(),b.exports=f}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{8:8}],10:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}],11:[function(a,b,c){function d(a,b){var c=(65535&a)+(65535&b),d=(a>>16)+(b>>16)+(c>>16);return d<<16|65535&c}function e(a,b){return a<>>32-b}function f(a,b,c,f,g,h){return d(e(d(d(b,a),d(f,h)),g),c)}function g(a,b,c,d,e,g,h){return f(b&c|~b&d,a,b,e,g,h)}function h(a,b,c,d,e,g,h){return f(b&d|c&~d,a,b,e,g,h)}function i(a,b,c,d,e,g,h){return f(b^c^d,a,b,e,g,h)}function j(a,b,c,d,e,g,h){return f(c^(b|~d),a,b,e,g,h)}function k(a,b){a[b>>5]|=128<>>9<<4)+14]=b;var c,e,f,k,l,m=1732584193,n=-271733879,o=-1732584194,p=271733878;for(c=0;c>5]>>>b%32&255);return c}function m(a){var b,c=[];for(c[(a.length>>2)-1]=void 0,b=0;b>5]|=(255&a.charCodeAt(b/8))<16&&(e=k(e,8*a.length)),c=0;c<16;c+=1)f[c]=909522486^e[c],g[c]=1549556828^e[c];return d=k(f.concat(m(b)),512+8*b.length),l(k(g.concat(d),640))}function p(a){var b,c,d="0123456789abcdef",e="";for(c=0;c>>4&15)+d.charAt(15&b);return e}function q(a){return unescape(encodeURIComponent(a))}function r(a){return n(q(a))}function s(a){return p(r(a))}function t(a,b){return o(q(a),q(b))}function u(a,b){return p(t(a,b))}function v(a,b,c){return b?c?t(b,a):u(b,a):c?r(a):s(a)}b.exports=v},{}]},{},[7,1,2,3])(7)}); //# sourceMappingURL=raven.min.js.map \ No newline at end of file diff --git a/dist/console,ember,require/raven.min.js.map b/dist/console,ember,require/raven.min.js.map index c7d486968b77..62bd25464f90 100644 --- a/dist/console,ember,require/raven.min.js.map +++ b/dist/console,ember,require/raven.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["raven.js"],"names":["global","factory","exports","module","define","amd","Raven","this","createCommonjsModule","fn","_typeof","obj","Symbol","iterator","constructor","prototype","isObject$1","what","isError$1","value","toString","call","Error","isErrorEvent$1","supportsErrorEvent","isUndefined$1","isFunction$1","isPlainObject","Object","isString$1","isArray$1","isEmptyObject$1","_","hasOwnProperty","ErrorEvent","e","supportsFetch$1","_window$3","Headers","Request","Response","wrappedCallback","callback","dataCallback","data","original","normalizedData","each$1","i","j","length","hasKey$1","objectMerge$1","obj1","obj2","key","objectFrozen$1","isFrozen","truncate$1","str","max","substr","object","joinRegExp$1","patterns","pattern","sources","len","push","replace","source","RegExp","join","urlencode$1","o","pairs","encodeURIComponent","parseUrl$1","url","match","query","fragment","protocol","host","path","relative","uuid4$1","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","r","Math","random","htmlTreeAsString$1","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","reverse","className","classes","attr","tagName","toLowerCase","id","split","attrWhitelist","getAttribute","isOnlyOneTruthy","a","b","isBothUndefined","isSameException$1","ex1","ex2","values","type","stacktrace","isSameStacktrace$1","stack1","stack2","frames1","frames","frames2","filename","lineno","colno","fill$1","name","replacement","track","orig","__raven__","__orig__","safeJoin","input","delimiter","output","String","getLocationHref","document","location","href","RavenConfigError","message","now","Date","keepOriginalCallback","isFunction","Raven$1","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window$1","SENTRY_RELEASE","logger","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","_fetchDefaults","method","keepalive","referrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","console","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","_lastHref","_resetBackoff","consolePlugin","pluginOptions","window","logLevels","levels","msg","captureMessage","level","pop","wrapConsoleMethod$1","emberPlugin","Ember","_oldOnError","onerror","error","captureException","RSVP","on","reason","extra","context","requirePlugin","commonjsGlobal","self","_sPO","setPrototypeOf","p","__proto__","Reflect","construct","Parent","args","Class","Constructor","apply","bind","utils","isObject","isError","isErrorEvent","isString","isArray","isEmptyObject","supportsFetch","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","TraceKit","debug","_window$2","_slice","slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","report","subscribe","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","stack","isWindowError","exception","concat","arguments","inner","traceKitWindowOnError","lineNo","colNo","ex","lastExceptionStack","computeStackTrace","augmentStackTraceWithInitialElement","processLastException","groups","line","column","undefined","func","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","lastException","rethrow","setTimeout","incomplete","uninstall","computeStackTraceFromStackProp","submatch","parts","element","chrome","gecko","winjs","geckoEval","chromeEval","lines","exec","isNative","indexOf","isEval","columnNumber","stackInfo","initial","unshift","partial","computeStackTraceByWalkingCallerChain","depth","item","functionName","funcs","recursion","curr","caller","substring","result","sourceURL","fileName","lineNumber","description","tracekit","stringify_1","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","err","keys","thisPos","Infinity","getSerialize","configError","wrapMethod","originalConsoleLevel","originalConsole","sentryLevel","Function","console$1","wrapConsoleMethod","dsnKeys","dsnPattern","navigator","VERSION","config","dsn","options","_logDebug","globalOptions","setDSN","maxBreadcrumbs","min","autoBreadcrumbDefaults","xhr","dom","sentry","instrumentDefaults","tryCatch","install","isSetup","_handleOnErrorStackInfo","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","lastIndexOf","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","wrap","_before","wrapped","deep","_ignoreNextOnError","__raven_wrapper__","property","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","trimHeadFrames","isNotError","isNotErrorEvent","isErrorEventWithoutError","_handleStackInfo","test","initialCall","fileurl","fingerprint","_prepareFrames","_send","captureBreadcrumb","crumb","timestamp","breadcrumbCallback","shift","addPlugin","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","setDataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","N","W","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","X","evtName","_keypressTimeout","target","category","Z","debounceDuration","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","$","from","to","parsedLoc","parsedTo","parsedFrom","E","_originalFunctionToString","P","F","wrapTimeFn","t","Array","originalCallback","wrapEventTarget","proto","capture","secure","handleEvent","before","clickHandler","keypressHandler","_keypressEventHandler","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","G","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","onreadystatechange","origFetch","fetchInput","fetchData","then","response","addEventListener","attachEvent","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","Q","builtin","R","H","installer","I","m","allowSecretKey","L","port","D","S","_triggerEvent","_processException","T","frame","_normalizeFrame","in_app","ca","stackInfoUrl","normalized","function","ba","prefixedMessage","culprit","da","request","Referer","breadcrumbs","_trimBreadcrumbs","ea","urlProp","urlProps","fa","httpData","userAgent","User-Agent","referrer","A","_backoffDuration","_backoffStart","ia","ja","current","last","ka","_shouldBackoff","retry","get","getResponseHeader","parseInt","U","baseData","project","platform","_getHttpData","serverName","server_name","forEach","_sendProcessedPayload","ma","la","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","na","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","onload","open","setRequestHeader","send","oa","hash","evaluated","C","V","setUser","setReleaseContext","raven","_window","_Raven","noConflict","singleton","console$3","ember","require_1","console_ember_require"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file +{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","consolePlugin","console","pluginOptions","logLevels","levels","push","callback","msg","data","captureMessage","level","pop","wrapConsoleMethod","wrapMethod","addPlugin","5","7","2","emberPlugin","Ember","_oldOnError","onerror","error","captureException","RSVP","on","reason","extra","context","3","requirePlugin","wrap","deep","4","RavenConfigError","message","name","prototype","constructor","utils","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","safeJoin","logger","Function","apply","8","6","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","sanitizeKeys","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isError","isObject","isPlainObject","isErrorEvent","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","sanitize","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","config","dsn","options","_logDebug","globalOptions","key","value","setDSN","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","toString","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","substr","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","func","undefined","_before","wrapped","_ignoreNextOnError","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","T","event","unhandledPromiseRejection","B","_promiseRejectionHandler","bind","addEventListener","P","removeEventListener","ex","trimHeadFrames","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","U","currentOptions","exKeys","Object","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","setDataCallback","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","L","setTimeout","$","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","_","evtName","_keypressTimeout","target","category","ba","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","ca","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","C","_originalFunctionToString","Q","D","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","type","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","E","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","R","builtin","S","F","installer","concat","G","str","m","exec","allowSecretKey","J","port","A","V","stackInfo","_triggerEvent","_processException","lineno","X","frame","_normalizeFrame","in_app","ga","stackInfoUrl","normalized","filename","line","colno","column","function","fa","prefixedMessage","exception","values","culprit","ha","request","Referer","breadcrumbs","_trimBreadcrumbs","ia","urlProp","urlProps","ja","httpData","userAgent","User-Agent","referrer","y","_backoffDuration","_backoffStart","ma","na","current","last","oa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Y","baseData","project","platform","_getHttpData","serverName","server_name","_sanitizeData","forEach","random","_sendProcessedPayload","pa","ra","qa","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","sa","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","open","setRequestHeader","send","ta","hash","evaluated","z","Z","setUser","setReleaseContext","10","11","9","RavenConstructor","_Raven","noConflict","Client","what","supportsErrorEvent","ErrorEvent","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","wrappedCallback","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","sanitizeMask","safeInput","o_O","getLocationHref","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","charAt","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","string","raw"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file diff --git a/dist/console,ember,vue/raven.js b/dist/console,ember,vue/raven.js index 3d4a7ebe5af4..b804dcf0e843 100644 --- a/dist/console,ember,vue/raven.js +++ b/dist/console,ember,vue/raven.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.22.2 (1b6187b) | github.com/getsentry/raven-js */ +/*! Raven.js 3.24.2 (540f32b) | github.com/getsentry/raven-js */ /* * Includes TraceKit @@ -10,3242 +10,4013 @@ * */ -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : - typeof define === 'function' && define.amd ? define(factory) : - (global.Raven = factory()); -}(this, (function () { 'use strict'; - -var commonjsGlobal = typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; - - +(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.Raven = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o' : 'anonymous component') + + (vm._isVue && vm.$options.__file ? ' at ' + vm.$options.__file : '') + ); } -function isErrorEvent$1(value) { - return supportsErrorEvent() && {}.toString.call(value) === '[object ErrorEvent]'; -} - -function isUndefined$1(what) { - return what === void 0; -} +function vuePlugin(Raven, Vue) { + Vue = Vue || window.Vue; -function isFunction$1(what) { - return typeof what === 'function'; -} + // quit if Vue isn't on the page + if (!Vue || !Vue.config) return; -function isPlainObject(what) { - return Object.prototype.toString.call(what) === '[object Object]'; -} + var _oldOnError = Vue.config.errorHandler; + Vue.config.errorHandler = function VueErrorHandler(error, vm, info) { + var metaData = {}; -function isString$1(what) { - return Object.prototype.toString.call(what) === '[object String]'; -} + // vm and lifecycleHook are not always available + if (Object.prototype.toString.call(vm) === '[object Object]') { + metaData.componentName = formatComponentName(vm); + metaData.propsData = vm.$options.propsData; + } -function isArray$1(what) { - return Object.prototype.toString.call(what) === '[object Array]'; -} + if (typeof info !== 'undefined') { + metaData.lifecycleHook = info; + } -function isEmptyObject$1(what) { - if (!isPlainObject(what)) return false; + Raven.captureException(error, { + extra: metaData + }); - for (var _ in what) { - if (what.hasOwnProperty(_)) { - return false; + if (typeof _oldOnError === 'function') { + _oldOnError.call(this, error, vm, info); } - } - - return true; + }; } -function supportsErrorEvent() { - try { - new ErrorEvent(''); // eslint-disable-line no-new +module.exports = vuePlugin; - return true; - } catch (e) { - return false; - } +_dereq_(7).addPlugin(module.exports); +},{"7":7}],4:[function(_dereq_,module,exports){ +function RavenConfigError(message) { + this.name = 'RavenConfigError'; + this.message = message; } +RavenConfigError.prototype = new Error(); +RavenConfigError.prototype.constructor = RavenConfigError; -function supportsFetch$1() { - if (!('fetch' in _window$3)) return false; - - try { - new Headers(); // eslint-disable-line no-new +module.exports = RavenConfigError; - new Request(''); // eslint-disable-line no-new +},{}],5:[function(_dereq_,module,exports){ +var utils = _dereq_(8); - new Response(); // eslint-disable-line no-new +var wrapMethod = function(console, level, callback) { + var originalConsoleLevel = console[level]; + var originalConsole = console; - return true; - } catch (e) { - return false; + if (!(level in console)) { + return; } -} - -function wrappedCallback(callback) { - function dataCallback(data, original) { - var normalizedData = callback(data) || data; - - if (original) { - return original(normalizedData) || normalizedData; - } - return normalizedData; - } + var sentryLevel = level === 'warn' ? 'warning' : level; - return dataCallback; -} + console[level] = function() { + var args = [].slice.call(arguments); -function each$1(obj, callback) { - var i, j; + var msg = utils.safeJoin(args, ' '); + var data = {level: sentryLevel, logger: 'console', extra: {arguments: args}}; - if (isUndefined$1(obj.length)) { - for (i in obj) { - if (hasKey$1(obj, i)) { - callback.call(null, i, obj[i]); + if (level === 'assert') { + if (args[0] === false) { + // Default browsers message + msg = + 'Assertion failed: ' + (utils.safeJoin(args.slice(1), ' ') || 'console.assert'); + data.extra.arguments = args.slice(1); + callback && callback(msg, data); } + } else { + callback && callback(msg, data); } - } else { - j = obj.length; - if (j) { - for (i = 0; i < j; i++) { - callback.call(null, i, obj[i]); - } + // this fails for some browsers. :( + if (originalConsoleLevel) { + // IE9 doesn't allow calling apply on console functions directly + // See: https://stackoverflow.com/questions/5472938/does-ie9-support-console-log-and-is-it-a-real-function#answer-5473193 + Function.prototype.apply.call(originalConsoleLevel, originalConsole, args); } - } -} - -function objectMerge$1(obj1, obj2) { - if (!obj2) { - return obj1; - } + }; +}; - each$1(obj2, function (key, value) { - obj1[key] = value; - }); - return obj1; -} -/** - * This function is only used for react-native. - * react-native freezes object that have already been sent over the - * js bridge. We need this function in order to check if the object is frozen. - * So it's ok that objectFrozen returns false if Object.isFrozen is not - * supported because it's not relevant for other "platforms". See related issue: - * https://github.com/getsentry/react-native-sentry/issues/57 - */ +module.exports = { + wrapMethod: wrapMethod +}; +},{"8":8}],6:[function(_dereq_,module,exports){ +(function (global){ +/*global XDomainRequest:false */ -function objectFrozen$1(obj) { - if (!Object.isFrozen) { - return false; - } +var TraceKit = _dereq_(9); +var stringify = _dereq_(10); +var md5 = _dereq_(11); +var RavenConfigError = _dereq_(4); - return Object.isFrozen(obj); -} +var utils = _dereq_(8); +var isError = utils.isError; +var isObject = utils.isObject; +var isPlainObject = utils.isPlainObject; +var isErrorEvent = utils.isErrorEvent; +var isUndefined = utils.isUndefined; +var isFunction = utils.isFunction; +var isString = utils.isString; +var isArray = utils.isArray; +var isEmptyObject = utils.isEmptyObject; +var each = utils.each; +var objectMerge = utils.objectMerge; +var truncate = utils.truncate; +var objectFrozen = utils.objectFrozen; +var hasKey = utils.hasKey; +var joinRegExp = utils.joinRegExp; +var urlencode = utils.urlencode; +var uuid4 = utils.uuid4; +var htmlTreeAsString = utils.htmlTreeAsString; +var isSameException = utils.isSameException; +var isSameStacktrace = utils.isSameStacktrace; +var parseUrl = utils.parseUrl; +var fill = utils.fill; +var supportsFetch = utils.supportsFetch; +var supportsReferrerPolicy = utils.supportsReferrerPolicy; +var serializeKeysForMessage = utils.serializeKeysForMessage; +var serializeException = utils.serializeException; +var sanitize = utils.sanitize; -function truncate$1(str, max) { - return !max || str.length <= max ? str : str.substr(0, max) + "\u2026"; -} -/** - * hasKey, a better form of hasOwnProperty - * Example: hasKey(MainHostObject, property) === true/false - * - * @param {Object} host object to check property - * @param {string} key to check - */ +var wrapConsoleMethod = _dereq_(5).wrapMethod; +var dsnKeys = 'source protocol user pass host port path'.split(' '), + dsnPattern = /^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/; -function hasKey$1(object, key) { - return Object.prototype.hasOwnProperty.call(object, key); +function now() { + return +new Date(); } -function joinRegExp$1(patterns) { - // Combine an array of regular expressions and strings into one large regexp - // Be mad. - var sources = [], - i = 0, - len = patterns.length, - pattern; - - for (; i < len; i++) { - pattern = patterns[i]; - - if (isString$1(pattern)) { - // If it's a string, we need to escape it - // Taken from: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions - sources.push(pattern.replace(/([.*+?^=!:${}()|\[\]\/\\])/g, '\\$1')); - } else if (pattern && pattern.source) { - // If it's a regexp already, we want to extract the source - sources.push(pattern.source); - } // Intentionally skip other cases - - } +// This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) +var _window = + typeof window !== 'undefined' + ? window + : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; +var _document = _window.document; +var _navigator = _window.navigator; - return new RegExp(sources.join('|'), 'i'); +function keepOriginalCallback(original, callback) { + return isFunction(callback) + ? function(data) { + return callback(data, original); + } + : callback; } -function urlencode$1(o) { - var pairs = []; - each$1(o, function (key, value) { - pairs.push(encodeURIComponent(key) + '=' + encodeURIComponent(value)); - }); - return pairs.join('&'); -} // borrowed from https://tools.ietf.org/html/rfc3986#appendix-B -// intentionally using regex and not href parsing trick because React Native and other -// environments where DOM might not be available - - -function parseUrl$1(url) { - if (typeof url !== 'string') return {}; - var match = url.match(/^(([^:\/?#]+):)?(\/\/([^\/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?$/); // coerce to undefined values to empty string so we don't get 'undefined' - - var query = match[6] || ''; - var fragment = match[8] || ''; - return { - protocol: match[2], - host: match[4], - path: match[5], - relative: match[5] + query + fragment // everything minus origin - +// First, check for JSON support +// If there is no JSON, we no-op the core features of Raven +// since JSON is required to encode the payload +function Raven() { + this._hasJSON = !!(typeof JSON === 'object' && JSON.stringify); + // Raven can run in contexts where there's no document (react-native) + this._hasDocument = !isUndefined(_document); + this._hasNavigator = !isUndefined(_navigator); + this._lastCapturedException = null; + this._lastData = null; + this._lastEventId = null; + this._globalServer = null; + this._globalKey = null; + this._globalProject = null; + this._globalContext = {}; + this._globalOptions = { + // SENTRY_RELEASE can be injected by https://github.com/getsentry/sentry-webpack-plugin + release: _window.SENTRY_RELEASE && _window.SENTRY_RELEASE.id, + logger: 'javascript', + ignoreErrors: [], + ignoreUrls: [], + whitelistUrls: [], + includePaths: [], + headers: null, + collectWindowErrors: true, + captureUnhandledRejections: true, + maxMessageLength: 0, + // By default, truncates URL values to 250 chars + maxUrlLength: 250, + stackTraceLimit: 50, + autoBreadcrumbs: true, + instrument: true, + sampleRate: 1, + sanitizeKeys: [] }; -} - -function uuid4$1() { - var crypto = _window$3.crypto || _window$3.msCrypto; - - if (!isUndefined$1(crypto) && crypto.getRandomValues) { - // Use window.crypto API if available - // eslint-disable-next-line no-undef - var arr = new Uint16Array(8); - crypto.getRandomValues(arr); // set 4 in byte 7 - - arr[3] = arr[3] & 0xfff | 0x4000; // set 2 most significant bits of byte 9 to '10' - - arr[4] = arr[4] & 0x3fff | 0x8000; - - var pad = function pad(num) { - var v = num.toString(16); - - while (v.length < 4) { - v = '0' + v; - } - - return v; - }; + this._fetchDefaults = { + method: 'POST', + keepalive: true, + // Despite all stars in the sky saying that Edge supports old draft syntax, aka 'never', 'always', 'origin' and 'default + // https://caniuse.com/#feat=referrer-policy + // It doesn't. And it throw exception instead of ignoring this parameter... + // REF: https://github.com/getsentry/raven-js/issues/1233 + referrerPolicy: supportsReferrerPolicy() ? 'origin' : '' + }; + this._ignoreOnError = 0; + this._isRavenInstalled = false; + this._originalErrorStackTraceLimit = Error.stackTraceLimit; + // capture references to window.console *and* all its methods first + // before the console plugin has a chance to monkey patch + this._originalConsole = _window.console || {}; + this._originalConsoleMethods = {}; + this._plugins = []; + this._startTime = now(); + this._wrappedBuiltIns = []; + this._breadcrumbs = []; + this._lastCapturedEvent = null; + this._keypressTimeout; + this._location = _window.location; + this._lastHref = this._location && this._location.href; + this._resetBackoff(); - return pad(arr[0]) + pad(arr[1]) + pad(arr[2]) + pad(arr[3]) + pad(arr[4]) + pad(arr[5]) + pad(arr[6]) + pad(arr[7]); - } else { - // http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/2117523#2117523 - return 'xxxxxxxxxxxx4xxxyxxxxxxxxxxxxxxx'.replace(/[xy]/g, function (c) { - var r = Math.random() * 16 | 0, - v = c === 'x' ? r : r & 0x3 | 0x8; - return v.toString(16); - }); + // eslint-disable-next-line guard-for-in + for (var method in this._originalConsole) { + this._originalConsoleMethods[method] = this._originalConsole[method]; } } -/** - * Given a child DOM element, returns a query-selector statement describing that - * and its ancestors - * e.g. [HTMLElement] => body > div > input#foo.btn[name=baz] - * @param elem - * @returns {string} + +/* + * The core Raven singleton + * + * @this {Raven} */ +Raven.prototype = { + // Hardcode version string so that raven source can be loaded directly via + // webpack (using a build step causes webpack #1617). Grunt verifies that + // this value matches package.json during build. + // See: https://github.com/getsentry/raven-js/issues/465 + VERSION: '3.24.2', -function htmlTreeAsString$1(elem) { - /* eslint no-extra-parens:0*/ - var MAX_TRAVERSE_HEIGHT = 5, - MAX_OUTPUT_LEN = 80, - out = [], - height = 0, - len = 0, - separator = ' > ', - sepLength = separator.length, - nextStr; + debug: false, - while (elem && height++ < MAX_TRAVERSE_HEIGHT) { - nextStr = htmlElementAsString(elem); // bail out if - // - nextStr is the 'html' element - // - the length of the string that would be created exceeds MAX_OUTPUT_LEN - // (ignore this limit if we are on the first iteration) + TraceKit: TraceKit, // alias to TraceKit - if (nextStr === 'html' || height > 1 && len + out.length * sepLength + nextStr.length >= MAX_OUTPUT_LEN) { - break; - } + /* + * Configure Raven with a DSN and extra options + * + * @param {string} dsn The public Sentry DSN + * @param {object} options Set of global options [optional] + * @return {Raven} + */ + config: function(dsn, options) { + var self = this; - out.push(nextStr); - len += nextStr.length; - elem = elem.parentNode; - } + if (self._globalServer) { + this._logDebug('error', 'Error: Raven has already been configured'); + return self; + } + if (!dsn) return self; - return out.reverse().join(separator); -} -/** - * Returns a simple, query-selector representation of a DOM element - * e.g. [HTMLElement] => input#foo.btn[name=baz] - * @param HTMLElement - * @returns {string} - */ + var globalOptions = self._globalOptions; + // merge in options + if (options) { + each(options, function(key, value) { + // tags and extra are special and need to be put into context + if (key === 'tags' || key === 'extra' || key === 'user') { + self._globalContext[key] = value; + } else { + globalOptions[key] = value; + } + }); + } -function htmlElementAsString(elem) { - var out = [], - className, - classes, - key, - attr, - i; + self.setDSN(dsn); - if (!elem || !elem.tagName) { - return ''; - } + // "Script error." is hard coded into browsers for errors that it can't read. + // this is the result of a script being pulled in from an external domain and CORS. + globalOptions.ignoreErrors.push(/^Script error\.?$/); + globalOptions.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/); - out.push(elem.tagName.toLowerCase()); + // join regexp rules into one big rule + globalOptions.ignoreErrors = joinRegExp(globalOptions.ignoreErrors); + globalOptions.ignoreUrls = globalOptions.ignoreUrls.length + ? joinRegExp(globalOptions.ignoreUrls) + : false; + globalOptions.whitelistUrls = globalOptions.whitelistUrls.length + ? joinRegExp(globalOptions.whitelistUrls) + : false; + globalOptions.includePaths = joinRegExp(globalOptions.includePaths); + globalOptions.maxBreadcrumbs = Math.max( + 0, + Math.min(globalOptions.maxBreadcrumbs || 100, 100) + ); // default and hard limit is 100 - if (elem.id) { - out.push('#' + elem.id); - } + var autoBreadcrumbDefaults = { + xhr: true, + console: true, + dom: true, + location: true, + sentry: true + }; - className = elem.className; + var autoBreadcrumbs = globalOptions.autoBreadcrumbs; + if ({}.toString.call(autoBreadcrumbs) === '[object Object]') { + autoBreadcrumbs = objectMerge(autoBreadcrumbDefaults, autoBreadcrumbs); + } else if (autoBreadcrumbs !== false) { + autoBreadcrumbs = autoBreadcrumbDefaults; + } + globalOptions.autoBreadcrumbs = autoBreadcrumbs; - if (className && isString$1(className)) { - classes = className.split(/\s+/); + var instrumentDefaults = { + tryCatch: true + }; - for (i = 0; i < classes.length; i++) { - out.push('.' + classes[i]); + var instrument = globalOptions.instrument; + if ({}.toString.call(instrument) === '[object Object]') { + instrument = objectMerge(instrumentDefaults, instrument); + } else if (instrument !== false) { + instrument = instrumentDefaults; } - } - - var attrWhitelist = ['type', 'name', 'title', 'alt']; + globalOptions.instrument = instrument; - for (i = 0; i < attrWhitelist.length; i++) { - key = attrWhitelist[i]; - attr = elem.getAttribute(key); + TraceKit.collectWindowErrors = !!globalOptions.collectWindowErrors; - if (attr) { - out.push('[' + key + '="' + attr + '"]'); - } - } + // return for chaining + return self; + }, - return out.join(''); -} -/** - * Returns true if either a OR b is truthy, but not both - */ + /* + * Installs a global window.onerror error handler + * to capture and report uncaught exceptions. + * At this point, install() is required to be called due + * to the way TraceKit is set up. + * + * @return {Raven} + */ + install: function() { + var self = this; + if (self.isSetup() && !self._isRavenInstalled) { + TraceKit.report.subscribe(function() { + self._handleOnErrorStackInfo.apply(self, arguments); + }); + if (self._globalOptions.captureUnhandledRejections) { + self._attachPromiseRejectionHandler(); + } -function isOnlyOneTruthy(a, b) { - return !!(!!a ^ !!b); -} -/** - * Returns true if both parameters are undefined - */ + self._patchFunctionToString(); + if (self._globalOptions.instrument && self._globalOptions.instrument.tryCatch) { + self._instrumentTryCatch(); + } -function isBothUndefined(a, b) { - return isUndefined$1(a) && isUndefined$1(b); -} -/** - * Returns true if the two input exception interfaces have the same content - */ + if (self._globalOptions.autoBreadcrumbs) self._instrumentBreadcrumbs(); + // Install all of the plugins + self._drainPlugins(); -function isSameException$1(ex1, ex2) { - if (isOnlyOneTruthy(ex1, ex2)) return false; - ex1 = ex1.values[0]; - ex2 = ex2.values[0]; - if (ex1.type !== ex2.type || ex1.value !== ex2.value) return false; // in case both stacktraces are undefined, we can't decide so default to false + self._isRavenInstalled = true; + } - if (isBothUndefined(ex1.stacktrace, ex2.stacktrace)) return false; - return isSameStacktrace$1(ex1.stacktrace, ex2.stacktrace); -} -/** - * Returns true if the two input stack trace interfaces have the same content - */ + Error.stackTraceLimit = self._globalOptions.stackTraceLimit; + return this; + }, + /* + * Set the DSN (can be called multiple time unlike config) + * + * @param {string} dsn The public Sentry DSN + */ + setDSN: function(dsn) { + var self = this, + uri = self._parseDSN(dsn), + lastSlash = uri.path.lastIndexOf('/'), + path = uri.path.substr(1, lastSlash); -function isSameStacktrace$1(stack1, stack2) { - if (isOnlyOneTruthy(stack1, stack2)) return false; - var frames1 = stack1.frames; - var frames2 = stack2.frames; // Exit early if frame count differs + self._dsn = dsn; + self._globalKey = uri.user; + self._globalSecret = uri.pass && uri.pass.substr(1); + self._globalProject = uri.path.substr(lastSlash + 1); - if (frames1.length !== frames2.length) return false; // Iterate through every frame; bail out if anything differs + self._globalServer = self._getGlobalServer(uri); - var a, b; + self._globalEndpoint = + self._globalServer + '/' + path + 'api/' + self._globalProject + '/store/'; - for (var i = 0; i < frames1.length; i++) { - a = frames1[i]; - b = frames2[i]; - if (a.filename !== b.filename || a.lineno !== b.lineno || a.colno !== b.colno || a['function'] !== b['function']) return false; - } - - return true; -} -/** - * Polyfill a method - * @param obj object e.g. `document` - * @param name method name present on object e.g. `addEventListener` - * @param replacement replacement function - * @param track {optional} record instrumentation to an array - */ + // Reset backoff state since we may be pointing at a + // new project/server + this._resetBackoff(); + }, + /* + * Wrap code within a context so Raven can capture errors + * reliably across domains that is executed immediately. + * + * @param {object} options A specific set of options for this context [optional] + * @param {function} func The callback to be immediately executed within the context + * @param {array} args An array of arguments to be called with the callback [optional] + */ + context: function(options, func, args) { + if (isFunction(options)) { + args = func || []; + func = options; + options = undefined; + } -function fill$1(obj, name, replacement, track) { - var orig = obj[name]; - obj[name] = replacement(orig); - obj[name].__raven__ = true; - obj[name].__orig__ = orig; + return this.wrap(options, func).apply(this, args); + }, - if (track) { - track.push([obj, name, orig]); - } -} -/** - * Join values in array - * @param input array of values to be joined together - * @param delimiter string to be placed in-between values - * @returns {string} - */ + /* + * Wrap code within a context and returns back a new function to be executed + * + * @param {object} options A specific set of options for this context [optional] + * @param {function} func The function to be wrapped in a new context + * @param {function} func A function to call before the try/catch wrapper [optional, private] + * @return {function} The newly wrapped functions with a context + */ + wrap: function(options, func, _before) { + var self = this; + // 1 argument has been passed, and it's not a function + // so just return it + if (isUndefined(func) && !isFunction(options)) { + return options; + } + // options is optional + if (isFunction(options)) { + func = options; + options = undefined; + } -function safeJoin(input, delimiter) { - if (!isArray$1(input)) return ''; - var output = []; + // At this point, we've passed along 2 arguments, and the second one + // is not a function either, so we'll just return the second argument. + if (!isFunction(func)) { + return func; + } - for (var i = 0; i < input.length; i++) { + // We don't wanna wrap it twice! try { - output.push(String(input[i])); + if (func.__raven__) { + return func; + } + + // If this has already been wrapped in the past, return that + if (func.__raven_wrapper__) { + return func.__raven_wrapper__; + } } catch (e) { - output.push('[value cannot be serialized]'); + // Just accessing custom props in some Selenium environments + // can cause a "Permission denied" exception (see raven-js#495). + // Bail on wrapping and return the function as-is (defers to window.onerror). + return func; } - } - - return output.join(delimiter); -} -var utils = { - isObject: isObject$1, - isError: isError$1, - isErrorEvent: isErrorEvent$1, - isUndefined: isUndefined$1, - isFunction: isFunction$1, - isPlainObject: isPlainObject, - isString: isString$1, - isArray: isArray$1, - isEmptyObject: isEmptyObject$1, - supportsErrorEvent: supportsErrorEvent, - supportsFetch: supportsFetch$1, - wrappedCallback: wrappedCallback, - each: each$1, - objectMerge: objectMerge$1, - truncate: truncate$1, - objectFrozen: objectFrozen$1, - hasKey: hasKey$1, - joinRegExp: joinRegExp$1, - urlencode: urlencode$1, - uuid4: uuid4$1, - htmlTreeAsString: htmlTreeAsString$1, - htmlElementAsString: htmlElementAsString, - isSameException: isSameException$1, - isSameStacktrace: isSameStacktrace$1, - parseUrl: parseUrl$1, - fill: fill$1, - safeJoin: safeJoin -}; + function wrapped() { + var args = [], + i = arguments.length, + deep = !options || (options && options.deep !== false); -/* - TraceKit - Cross brower stack traces + if (_before && isFunction(_before)) { + _before.apply(this, arguments); + } - This was originally forked from github.com/occ/TraceKit, but has since been - largely re-written and is now maintained as part of raven-js. Tests for - this are in test/vendor. + // Recursively wrap all of a function's arguments that are + // functions themselves. + while (i--) args[i] = deep ? self.wrap(options, arguments[i]) : arguments[i]; - MIT license -*/ + try { + // Attempt to invoke user-land function + // NOTE: If you are a Sentry user, and you are seeing this stack frame, it + // means Raven caught an error invoking your application code. This is + // expected behavior and NOT indicative of a bug with Raven.js. + return func.apply(this, args); + } catch (e) { + self._ignoreNextOnError(); + self.captureException(e, options); + throw e; + } + } -var TraceKit = { - collectWindowErrors: true, - debug: false -}; // This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) + // copy over properties of the old function + for (var property in func) { + if (hasKey(func, property)) { + wrapped[property] = func[property]; + } + } + wrapped.prototype = func.prototype; -var _window$2 = typeof window !== 'undefined' ? window : typeof commonjsGlobal !== 'undefined' ? commonjsGlobal : typeof self !== 'undefined' ? self : {}; // global reference to slice + func.__raven_wrapper__ = wrapped; + // Signal that this function has been wrapped/filled already + // for both debugging and to prevent it to being wrapped/filled twice + wrapped.__raven__ = true; + wrapped.__orig__ = func; + return wrapped; + }, -var _slice = [].slice; -var UNKNOWN_FUNCTION = '?'; // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error#Error_types + /** + * Uninstalls the global error handler. + * + * @return {Raven} + */ + uninstall: function() { + TraceKit.report.uninstall(); -var ERROR_TYPES_RE = /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/; + this._detachPromiseRejectionHandler(); + this._unpatchFunctionToString(); + this._restoreBuiltIns(); + this._restoreConsole(); -function getLocationHref() { - if (typeof document === 'undefined' || document.location == null) return ''; - return document.location.href; -} -/** - * TraceKit.report: cross-browser processing of unhandled exceptions - * - * Syntax: - * TraceKit.report.subscribe(function(stackInfo) { ... }) - * TraceKit.report.unsubscribe(function(stackInfo) { ... }) - * TraceKit.report(exception) - * try { ...code... } catch(ex) { TraceKit.report(ex); } - * - * Supports: - * - Firefox: full stack trace with line numbers, plus column number - * on top frame; column number is not guaranteed - * - Opera: full stack trace with line and column numbers - * - Chrome: full stack trace with line and column numbers - * - Safari: line and column number for the top frame only; some frames - * may be missing, and column number is not guaranteed - * - IE: line and column number for the top frame only; some frames - * may be missing, and column number is not guaranteed - * - * In theory, TraceKit should work on all of the following versions: - * - IE5.5+ (only 8.0 tested) - * - Firefox 0.9+ (only 3.5+ tested) - * - Opera 7+ (only 10.50 tested; versions 9 and earlier may require - * Exceptions Have Stacktrace to be enabled in opera:config) - * - Safari 3+ (only 4+ tested) - * - Chrome 1+ (only 5+ tested) - * - Konqueror 3.5+ (untested) - * - * Requires TraceKit.computeStackTrace. - * - * Tries to catch all unhandled exceptions and report them to the - * subscribed handlers. Please note that TraceKit.report will rethrow the - * exception. This is REQUIRED in order to get a useful stack trace in IE. - * If the exception does not reach the top of the browser, you will only - * get a stack trace from the point where TraceKit.report was called. - * - * Handlers receive a stackInfo object as described in the - * TraceKit.computeStackTrace docs. - */ + Error.stackTraceLimit = this._originalErrorStackTraceLimit; + this._isRavenInstalled = false; + return this; + }, -TraceKit.report = function reportModuleWrapper() { - var handlers = [], - lastArgs = null, - lastException = null, - lastExceptionStack = null; /** - * Add a crash handler. - * @param {Function} handler - */ + * Callback used for `unhandledrejection` event + * + * @param {PromiseRejectionEvent} event An object containing + * promise: the Promise that was rejected + * reason: the value with which the Promise was rejected + * @return void + */ + _promiseRejectionHandler: function(event) { + this._logDebug('debug', 'Raven caught unhandled promise rejection:', event); + this.captureException(event.reason, { + extra: { + unhandledPromiseRejection: true + } + }); + }, - function subscribe(handler) { - installGlobalHandler(); - handlers.push(handler); - } /** - * Remove a crash handler. - * @param {Function} handler - */ + * Installs the global promise rejection handler. + * + * @return {raven} + */ + _attachPromiseRejectionHandler: function() { + this._promiseRejectionHandler = this._promiseRejectionHandler.bind(this); + _window.addEventListener && + _window.addEventListener('unhandledrejection', this._promiseRejectionHandler); + return this; + }, + /** + * Uninstalls the global promise rejection handler. + * + * @return {raven} + */ + _detachPromiseRejectionHandler: function() { + _window.removeEventListener && + _window.removeEventListener('unhandledrejection', this._promiseRejectionHandler); + return this; + }, - function unsubscribe(handler) { - for (var i = handlers.length - 1; i >= 0; --i) { - if (handlers[i] === handler) { - handlers.splice(i, 1); + /** + * Manually capture an exception and send it over to Sentry + * + * @param {error} ex An exception to be logged + * @param {object} options A specific set of options for this error [optional] + * @return {Raven} + */ + captureException: function(ex, options) { + options = objectMerge({trimHeadFrames: 0}, options ? options : {}); + + if (isErrorEvent(ex) && ex.error) { + // If it is an ErrorEvent with `error` property, extract it to get actual Error + ex = ex.error; + } else if (isError(ex)) { + // we have a real Error object + ex = ex; + } else if (isPlainObject(ex)) { + // If it is plain Object, serialize it manually and extract options + // This will allow us to group events based on top-level keys + // which is much better than creating new group when any key/value change + options = this._getCaptureExceptionOptionsFromPlainObject(options, ex); + ex = new Error(options.message); + } else { + // If none of previous checks were valid, then it means that + // it's not a plain Object + // it's not a valid ErrorEvent (one with an error property) + // it's not an Error + // So bail out and capture it as a simple message: + return this.captureMessage( + ex, + objectMerge(options, { + stacktrace: true, // if we fall back to captureMessage, default to attempting a new trace + trimHeadFrames: options.trimHeadFrames + 1 + }) + ); + } + + // Store the raw exception object for potential debugging and introspection + this._lastCapturedException = ex; + + // TraceKit.report will re-raise any exception passed to it, + // which means you have to wrap it in try/catch. Instead, we + // can wrap it here and only re-raise if TraceKit.report + // raises an exception different from the one we asked to + // report on. + try { + var stack = TraceKit.computeStackTrace(ex); + this._handleStackInfo(stack, options); + } catch (ex1) { + if (ex !== ex1) { + throw ex1; } } - } - /** - * Remove all crash handlers. - */ - - function unsubscribeAll() { - uninstallGlobalHandler(); - handlers = []; - } - /** - * Dispatch stack information to all handlers. - * @param {Object.} stack - */ + return this; + }, + _getCaptureExceptionOptionsFromPlainObject: function(currentOptions, ex) { + var exKeys = Object.keys(ex).sort(); + var options = objectMerge(currentOptions, { + message: + 'Non-Error exception captured with keys: ' + serializeKeysForMessage(exKeys), + fingerprint: [md5(exKeys)], + extra: currentOptions.extra || {} + }); + options.extra.__serialized__ = serializeException(ex); - function notifyHandlers(stack, isWindowError) { - var exception = null; + return options; + }, - if (isWindowError && !TraceKit.collectWindowErrors) { + /* + * Manually send a message to Sentry + * + * @param {string} msg A plain message to be captured in Sentry + * @param {object} options A specific set of options for this message [optional] + * @return {Raven} + */ + captureMessage: function(msg, options) { + // config() automagically converts ignoreErrors from a list to a RegExp so we need to test for an + // early call; we'll error on the side of logging anything called before configuration since it's + // probably something you should see: + if ( + !!this._globalOptions.ignoreErrors.test && + this._globalOptions.ignoreErrors.test(msg) + ) { return; } - for (var i in handlers) { - if (handlers.hasOwnProperty(i)) { - try { - handlers[i].apply(null, [stack].concat(_slice.call(arguments, 2))); - } catch (inner) { - exception = inner; - } - } - } + options = options || {}; + msg = msg + ''; // Make sure it's actually a string - if (exception) { - throw exception; - } - } - - var _oldOnerrorHandler, _onErrorHandlerInstalled; - /** - * Ensures all global unhandled exceptions are recorded. - * Supported by Gecko and IE. - * @param {string} msg Error message. - * @param {string} url URL of script that generated the exception. - * @param {(number|string)} lineNo The line number at which the error - * occurred. - * @param {?(number|string)} colNo The column number at which the error - * occurred. - * @param {?Error} ex The actual Error object. - */ - - - function traceKitWindowOnError(msg, url, lineNo, colNo, ex) { - var stack = null; // If 'ex' is ErrorEvent, get real Error from inside + var data = objectMerge( + { + message: msg + }, + options + ); - var exception = utils.isErrorEvent(ex) ? ex.error : ex; // If 'msg' is ErrorEvent, get real message from inside + var ex; + // Generate a "synthetic" stack trace from this point. + // NOTE: If you are a Sentry user, and you are seeing this stack frame, it is NOT indicative + // of a bug with Raven.js. Sentry generates synthetic traces either by configuration, + // or if it catches a thrown object without a "stack" property. + try { + throw new Error(msg); + } catch (ex1) { + ex = ex1; + } - var message = utils.isErrorEvent(msg) ? msg.message : msg; + // null exception name so `Error` isn't prefixed to msg + ex.name = null; + var stack = TraceKit.computeStackTrace(ex); - if (lastExceptionStack) { - TraceKit.computeStackTrace.augmentStackTraceWithInitialElement(lastExceptionStack, url, lineNo, message); - processLastException(); - } else if (exception && utils.isError(exception)) { - // non-string `exception` arg; attempt to extract stack trace - // New chrome and blink send along a real error object - // Let's just report that like a normal error. - // See: https://mikewest.org/2013/08/debugging-runtime-errors-with-window-onerror - stack = TraceKit.computeStackTrace(exception); - notifyHandlers(stack, true); - } else { - var location = { - url: url, - line: lineNo, - column: colNo - }; - var name = undefined; - var groups; + // stack[0] is `throw new Error(msg)` call itself, we are interested in the frame that was just before that, stack[1] + var initialCall = isArray(stack.stack) && stack.stack[1]; - if ({}.toString.call(message) === '[object String]') { - var groups = message.match(ERROR_TYPES_RE); + // if stack[1] is `Raven.captureException`, it means that someone passed a string to it and we redirected that call + // to be handled by `captureMessage`, thus `initialCall` is the 3rd one, not 2nd + // initialCall => captureException(string) => captureMessage(string) + if (initialCall && initialCall.func === 'Raven.captureException') { + initialCall = stack.stack[2]; + } - if (groups) { - name = groups[1]; - message = groups[2]; - } - } + var fileurl = (initialCall && initialCall.url) || ''; - location.func = UNKNOWN_FUNCTION; - stack = { - name: name, - message: message, - url: getLocationHref(), - stack: [location] - }; - notifyHandlers(stack, true); + if ( + !!this._globalOptions.ignoreUrls.test && + this._globalOptions.ignoreUrls.test(fileurl) + ) { + return; } - if (_oldOnerrorHandler) { - return _oldOnerrorHandler.apply(this, arguments); + if ( + !!this._globalOptions.whitelistUrls.test && + !this._globalOptions.whitelistUrls.test(fileurl) + ) { + return; } - return false; - } + if (this._globalOptions.stacktrace || (options && options.stacktrace)) { + // fingerprint on msg, not stack trace (legacy behavior, could be revisited) + data.fingerprint = data.fingerprint == null ? msg : data.fingerprint; - function installGlobalHandler() { - if (_onErrorHandlerInstalled) { - return; - } + options = objectMerge( + { + trimHeadFrames: 0 + }, + options + ); + // Since we know this is a synthetic trace, the top frame (this function call) + // MUST be from Raven.js, so mark it for trimming + // We add to the trim counter so that callers can choose to trim extra frames, such + // as utility functions. + options.trimHeadFrames += 1; - _oldOnerrorHandler = _window$2.onerror; - _window$2.onerror = traceKitWindowOnError; - _onErrorHandlerInstalled = true; - } + var frames = this._prepareFrames(stack, options); + data.stacktrace = { + // Sentry expects frames oldest to newest + frames: frames.reverse() + }; + } - function uninstallGlobalHandler() { - if (!_onErrorHandlerInstalled) { - return; + // Make sure that fingerprint is always wrapped in an array + if (data.fingerprint) { + data.fingerprint = isArray(data.fingerprint) + ? data.fingerprint + : [data.fingerprint]; } - _window$2.onerror = _oldOnerrorHandler; - _onErrorHandlerInstalled = false; - _oldOnerrorHandler = undefined; - } + // Fire away! + this._send(data); - function processLastException() { - var _lastExceptionStack = lastExceptionStack, - _lastArgs = lastArgs; - lastArgs = null; - lastExceptionStack = null; - lastException = null; - notifyHandlers.apply(null, [_lastExceptionStack, false].concat(_lastArgs)); - } - /** - * Reports an unhandled Error to TraceKit. - * @param {Error} ex - * @param {?boolean} rethrow If false, do not re-throw the exception. - * Only used for window.onerror to not cause an infinite loop of - * rethrowing. - */ + return this; + }, + captureBreadcrumb: function(obj) { + var crumb = objectMerge( + { + timestamp: now() / 1000 + }, + obj + ); - function report(ex, rethrow) { - var args = _slice.call(arguments, 1); + if (isFunction(this._globalOptions.breadcrumbCallback)) { + var result = this._globalOptions.breadcrumbCallback(crumb); - if (lastExceptionStack) { - if (lastException === ex) { - return; // already caught by an inner catch block, ignore - } else { - processLastException(); + if (isObject(result) && !isEmptyObject(result)) { + crumb = result; + } else if (result === false) { + return this; } } - var stack = TraceKit.computeStackTrace(ex); - lastExceptionStack = stack; - lastException = ex; - lastArgs = args; // If the stack trace is incomplete, wait for 2 seconds for - // slow slow IE to see if onerror occurs or not before reporting - // this exception; otherwise, we will end up with an incomplete - // stack trace + this._breadcrumbs.push(crumb); + if (this._breadcrumbs.length > this._globalOptions.maxBreadcrumbs) { + this._breadcrumbs.shift(); + } + return this; + }, - setTimeout(function () { - if (lastException === ex) { - processLastException(); - } - }, stack.incomplete ? 2000 : 0); + addPlugin: function(plugin /*arg1, arg2, ... argN*/) { + var pluginArgs = [].slice.call(arguments, 1); - if (rethrow !== false) { - throw ex; // re-throw to propagate to the top level (and cause window.onerror) + this._plugins.push([plugin, pluginArgs]); + if (this._isRavenInstalled) { + this._drainPlugins(); } - } - report.subscribe = subscribe; - report.unsubscribe = unsubscribe; - report.uninstall = unsubscribeAll; - return report; -}(); -/** - * TraceKit.computeStackTrace: cross-browser stack traces in JavaScript - * - * Syntax: - * s = TraceKit.computeStackTrace(exception) // consider using TraceKit.report instead (see below) - * Returns: - * s.name - exception name - * s.message - exception message - * s.stack[i].url - JavaScript or HTML file URL - * s.stack[i].func - function name, or empty for anonymous functions (if guessing did not work) - * s.stack[i].args - arguments passed to the function, if known - * s.stack[i].line - line number, if known - * s.stack[i].column - column number, if known - * - * Supports: - * - Firefox: full stack trace with line numbers and unreliable column - * number on top frame - * - Opera 10: full stack trace with line and column numbers - * - Opera 9-: full stack trace with line numbers - * - Chrome: full stack trace with line and column numbers - * - Safari: line and column number for the topmost stacktrace element - * only - * - IE: no line numbers whatsoever - * - * Tries to guess names of anonymous functions by looking for assignments - * in the source code. In IE and Safari, we have to guess source file names - * by searching for function bodies inside all page scripts. This will not - * work for scripts that are loaded cross-domain. - * Here be dragons: some function names may be guessed incorrectly, and - * duplicate functions may be mismatched. - * - * TraceKit.computeStackTrace should only be used for tracing purposes. - * Logging of unhandled exceptions should be done with TraceKit.report, - * which builds on top of TraceKit.computeStackTrace and provides better - * IE support by utilizing the window.onerror event to retrieve information - * about the top of the stack. - * - * Note: In IE and Safari, no stack trace is recorded on the Error object, - * so computeStackTrace instead walks its *own* chain of callers. - * This means that: - * * in Safari, some methods may be missing from the stack trace; - * * in IE, the topmost function in the stack trace will always be the - * caller of computeStackTrace. - * - * This is okay for tracing (because you are likely to be calling - * computeStackTrace from the function you want to be the topmost element - * of the stack trace anyway), but not okay for logging unhandled - * exceptions (because your catch block will likely be far away from the - * inner function that actually caused the exception). - * - */ + return this; + }, + /* + * Set/clear a user to be sent along with the payload. + * + * @param {object} user An object representing user data [optional] + * @return {Raven} + */ + setUserContext: function(user) { + // Intentionally do not merge here since that's an unexpected behavior. + this._globalContext.user = user; -TraceKit.computeStackTrace = function computeStackTraceWrapper() { - // Contents of Exception in various browsers. - // - // SAFARI: - // ex.message = Can't find variable: qq - // ex.line = 59 - // ex.sourceId = 580238192 - // ex.sourceURL = http://... - // ex.expressionBeginOffset = 96 - // ex.expressionCaretOffset = 98 - // ex.expressionEndOffset = 98 - // ex.name = ReferenceError - // - // FIREFOX: - // ex.message = qq is not defined - // ex.fileName = http://... - // ex.lineNumber = 59 - // ex.columnNumber = 69 - // ex.stack = ...stack trace... (see the example below) - // ex.name = ReferenceError - // - // CHROME: - // ex.message = qq is not defined - // ex.name = ReferenceError - // ex.type = not_defined - // ex.arguments = ['aa'] - // ex.stack = ...stack trace... - // - // INTERNET EXPLORER: - // ex.message = ... - // ex.name = ReferenceError - // - // OPERA: - // ex.message = ...message... (see the example below) - // ex.name = ReferenceError - // ex.opera#sourceloc = 11 (pretty much useless, duplicates the info in ex.message) - // ex.stacktrace = n/a; see 'opera:config#UserPrefs|Exceptions Have Stacktrace' + return this; + }, - /** - * Computes stack trace information from the stack property. - * Chrome and Gecko use this property. - * @param {Error} ex - * @return {?Object.} Stack trace information. + /* + * Merge extra attributes to be sent along with the payload. + * + * @param {object} extra An object representing extra data [optional] + * @return {Raven} */ - function computeStackTraceFromStackProp(ex) { - if (typeof ex.stack === 'undefined' || !ex.stack) return; - var chrome = /^\s*at (.*?) ?\(((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i, - gecko = /^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|\[native).*?|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i, - winjs = /^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i, - // Used to additionally parse URL/line/column from eval frames - geckoEval = /(\S+) line (\d+)(?: > eval line \d+)* > eval/i, - chromeEval = /\((\S*)(?::(\d+))(?::(\d+))\)/, - lines = ex.stack.split('\n'), - stack = [], - submatch, - parts, - element, - reference = /^(.*) is undefined$/.exec(ex.message); + setExtraContext: function(extra) { + this._mergeContext('extra', extra); - for (var i = 0, j = lines.length; i < j; ++i) { - if (parts = chrome.exec(lines[i])) { - var isNative = parts[2] && parts[2].indexOf('native') === 0; // start of line + return this; + }, - var isEval = parts[2] && parts[2].indexOf('eval') === 0; // start of line + /* + * Merge tags to be sent along with the payload. + * + * @param {object} tags An object representing tags [optional] + * @return {Raven} + */ + setTagsContext: function(tags) { + this._mergeContext('tags', tags); - if (isEval && (submatch = chromeEval.exec(parts[2]))) { - // throw out eval line/column and use top-most line/column number - parts[2] = submatch[1]; // url - - parts[3] = submatch[2]; // line - - parts[4] = submatch[3]; // column - } - - element = { - url: !isNative ? parts[2] : null, - func: parts[1] || UNKNOWN_FUNCTION, - args: isNative ? [parts[2]] : [], - line: parts[3] ? +parts[3] : null, - column: parts[4] ? +parts[4] : null - }; - } else if (parts = winjs.exec(lines[i])) { - element = { - url: parts[2], - func: parts[1] || UNKNOWN_FUNCTION, - args: [], - line: +parts[3], - column: parts[4] ? +parts[4] : null - }; - } else if (parts = gecko.exec(lines[i])) { - var isEval = parts[3] && parts[3].indexOf(' > eval') > -1; + return this; + }, - if (isEval && (submatch = geckoEval.exec(parts[3]))) { - // throw out eval line/column and use top-most line number - parts[3] = submatch[1]; - parts[4] = submatch[2]; - parts[5] = null; // no column when eval - } else if (i === 0 && !parts[5] && typeof ex.columnNumber !== 'undefined') { - // FireFox uses this awesome columnNumber property for its top frame - // Also note, Firefox's column number is 0-based and everything else expects 1-based, - // so adding 1 - // NOTE: this hack doesn't work if top-most frame is eval - stack[0].column = ex.columnNumber + 1; - } + /* + * Clear all of the context. + * + * @return {Raven} + */ + clearContext: function() { + this._globalContext = {}; - element = { - url: parts[3], - func: parts[1] || UNKNOWN_FUNCTION, - args: parts[2] ? parts[2].split(',') : [], - line: parts[4] ? +parts[4] : null, - column: parts[5] ? +parts[5] : null - }; - } else { - continue; - } + return this; + }, - if (!element.func && element.line) { - element.func = UNKNOWN_FUNCTION; - } + /* + * Get a copy of the current context. This cannot be mutated. + * + * @return {object} copy of context + */ + getContext: function() { + // lol javascript + return JSON.parse(stringify(this._globalContext)); + }, - stack.push(element); - } + /* + * Set environment of application + * + * @param {string} environment Typically something like 'production'. + * @return {Raven} + */ + setEnvironment: function(environment) { + this._globalOptions.environment = environment; - if (!stack.length) { - return null; - } + return this; + }, - return { - name: ex.name, - message: ex.message, - url: getLocationHref(), - stack: stack - }; - } - /** - * Adds information about the first frame to incomplete stack traces. - * Safari and IE require this to get complete data on the first frame. - * @param {Object.} stackInfo Stack trace information from - * one of the compute* methods. - * @param {string} url The URL of the script that caused an error. - * @param {(number|string)} lineNo The line number of the script that - * caused an error. - * @param {string=} message The error generated by the browser, which - * hopefully contains the name of the object that caused the error. - * @return {boolean} Whether or not the stack information was - * augmented. + /* + * Set release version of application + * + * @param {string} release Typically something like a git SHA to identify version + * @return {Raven} */ + setRelease: function(release) { + this._globalOptions.release = release; + return this; + }, - function augmentStackTraceWithInitialElement(stackInfo, url, lineNo, message) { - var initial = { - url: url, - line: lineNo - }; + /* + * Set the dataCallback option + * + * @param {function} callback The callback to run which allows the + * data blob to be mutated before sending + * @return {Raven} + */ + setDataCallback: function(callback) { + var original = this._globalOptions.dataCallback; + this._globalOptions.dataCallback = keepOriginalCallback(original, callback); + return this; + }, - if (initial.url && initial.line) { - stackInfo.incomplete = false; + /* + * Set the breadcrumbCallback option + * + * @param {function} callback The callback to run which allows filtering + * or mutating breadcrumbs + * @return {Raven} + */ + setBreadcrumbCallback: function(callback) { + var original = this._globalOptions.breadcrumbCallback; + this._globalOptions.breadcrumbCallback = keepOriginalCallback(original, callback); + return this; + }, - if (!initial.func) { - initial.func = UNKNOWN_FUNCTION; - } + /* + * Set the shouldSendCallback option + * + * @param {function} callback The callback to run which allows + * introspecting the blob before sending + * @return {Raven} + */ + setShouldSendCallback: function(callback) { + var original = this._globalOptions.shouldSendCallback; + this._globalOptions.shouldSendCallback = keepOriginalCallback(original, callback); + return this; + }, - if (stackInfo.stack.length > 0) { - if (stackInfo.stack[0].url === initial.url) { - if (stackInfo.stack[0].line === initial.line) { - return false; // already in stack trace - } else if (!stackInfo.stack[0].line && stackInfo.stack[0].func === initial.func) { - stackInfo.stack[0].line = initial.line; - return false; - } - } - } + /** + * Override the default HTTP transport mechanism that transmits data + * to the Sentry server. + * + * @param {function} transport Function invoked instead of the default + * `makeRequest` handler. + * + * @return {Raven} + */ + setTransport: function(transport) { + this._globalOptions.transport = transport; - stackInfo.stack.unshift(initial); - stackInfo.partial = true; - return true; - } else { - stackInfo.incomplete = true; - } + return this; + }, - return false; - } - /** - * Computes stack trace information by walking the arguments.caller - * chain at the time the exception occurred. This will cause earlier - * frames to be missed but is the only way to get any stack trace in - * Safari and IE. The top frame is restored by - * {@link augmentStackTraceWithInitialElement}. - * @param {Error} ex - * @return {?Object.} Stack trace information. + /* + * Get the latest raw exception that was captured by Raven. + * + * @return {error} */ + lastException: function() { + return this._lastCapturedException; + }, + /* + * Get the last event id + * + * @return {string} + */ + lastEventId: function() { + return this._lastEventId; + }, - function computeStackTraceByWalkingCallerChain(ex, depth) { - var functionName = /function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i, - stack = [], - funcs = {}, - recursion = false, - parts, - item; - - for (var curr = computeStackTraceByWalkingCallerChain.caller; curr && !recursion; curr = curr.caller) { - if (curr === computeStackTrace || curr === TraceKit.report) { - // console.log('skipping internal function'); - continue; + /* + * Determine if Raven is setup and ready to go. + * + * @return {boolean} + */ + isSetup: function() { + if (!this._hasJSON) return false; // needs JSON support + if (!this._globalServer) { + if (!this.ravenNotConfiguredError) { + this.ravenNotConfiguredError = true; + this._logDebug('error', 'Error: Raven has not been configured.'); } + return false; + } + return true; + }, - item = { - url: null, - func: UNKNOWN_FUNCTION, - line: null, - column: null - }; + afterLoad: function() { + // TODO: remove window dependence? - if (curr.name) { - item.func = curr.name; - } else if (parts = functionName.exec(curr.toString())) { - item.func = parts[1]; - } + // Attempt to initialize Raven on load + var RavenConfig = _window.RavenConfig; + if (RavenConfig) { + this.config(RavenConfig.dsn, RavenConfig.config).install(); + } + }, - if (typeof item.func === 'undefined') { - try { - item.func = parts.input.substring(0, parts.input.indexOf('{')); - } catch (e) {} - } + showReportDialog: function(options) { + if ( + !_document // doesn't work without a document (React native) + ) + return; - if (funcs['' + curr]) { - recursion = true; - } else { - funcs['' + curr] = true; - } + options = options || {}; - stack.push(item); + var lastEventId = options.eventId || this.lastEventId(); + if (!lastEventId) { + throw new RavenConfigError('Missing eventId'); } - if (depth) { - // console.log('depth is ' + depth); - // console.log('stack is ' + stack.length); - stack.splice(0, depth); + var dsn = options.dsn || this._dsn; + if (!dsn) { + throw new RavenConfigError('Missing DSN'); } - var result = { - name: ex.name, - message: ex.message, - url: getLocationHref(), - stack: stack - }; - augmentStackTraceWithInitialElement(result, ex.sourceURL || ex.fileName, ex.line || ex.lineNumber, ex.message || ex.description); - return result; - } - /** - * Computes a stack trace for an exception. - * @param {Error} ex - * @param {(string|number)=} depth - */ + var encode = encodeURIComponent; + var qs = ''; + qs += '?eventId=' + encode(lastEventId); + qs += '&dsn=' + encode(dsn); + var user = options.user || this._globalContext.user; + if (user) { + if (user.name) qs += '&name=' + encode(user.name); + if (user.email) qs += '&email=' + encode(user.email); + } - function computeStackTrace(ex, depth) { - var stack = null; - depth = depth == null ? 0 : +depth; + var globalServer = this._getGlobalServer(this._parseDSN(dsn)); - try { - stack = computeStackTraceFromStackProp(ex); + var script = _document.createElement('script'); + script.async = true; + script.src = globalServer + '/api/embed/error-page/' + qs; + (_document.head || _document.body).appendChild(script); + }, - if (stack) { - return stack; + /**** Private functions ****/ + _ignoreNextOnError: function() { + var self = this; + this._ignoreOnError += 1; + setTimeout(function() { + // onerror should trigger before setTimeout + self._ignoreOnError -= 1; + }); + }, + + _triggerEvent: function(eventType, options) { + // NOTE: `event` is a native browser thing, so let's avoid conflicting wiht it + var evt, key; + + if (!this._hasDocument) return; + + options = options || {}; + + eventType = 'raven' + eventType.substr(0, 1).toUpperCase() + eventType.substr(1); + + if (_document.createEvent) { + evt = _document.createEvent('HTMLEvents'); + evt.initEvent(eventType, true, true); + } else { + evt = _document.createEventObject(); + evt.eventType = eventType; + } + + for (key in options) + if (hasKey(options, key)) { + evt[key] = options[key]; } - } catch (e) { - if (TraceKit.debug) { - throw e; + + if (_document.createEvent) { + // IE9 if standards + _document.dispatchEvent(evt); + } else { + // IE8 regardless of Quirks or Standards + // IE9 if quirks + try { + _document.fireEvent('on' + evt.eventType.toLowerCase(), evt); + } catch (e) { + // Do nothing } } + }, - try { - stack = computeStackTraceByWalkingCallerChain(ex, depth + 1); + /** + * Wraps addEventListener to capture UI breadcrumbs + * @param evtName the event name (e.g. "click") + * @returns {Function} + * @private + */ + _breadcrumbEventHandler: function(evtName) { + var self = this; + return function(evt) { + // reset keypress timeout; e.g. triggering a 'click' after + // a 'keypress' will reset the keypress debounce so that a new + // set of keypresses can be recorded + self._keypressTimeout = null; - if (stack) { - return stack; - } - } catch (e) { - if (TraceKit.debug) { - throw e; + // It's possible this handler might trigger multiple times for the same + // event (e.g. event propagation through node ancestors). Ignore if we've + // already captured the event. + if (self._lastCapturedEvent === evt) return; + + self._lastCapturedEvent = evt; + + // try/catch both: + // - accessing evt.target (see getsentry/raven-js#838, #768) + // - `htmlTreeAsString` because it's complex, and just accessing the DOM incorrectly + // can throw an exception in some circumstances. + var target; + try { + target = htmlTreeAsString(evt.target); + } catch (e) { + target = ''; } - } - return { - name: ex.name, - message: ex.message, - url: getLocationHref() + self.captureBreadcrumb({ + category: 'ui.' + evtName, // e.g. ui.click, ui.input + message: target + }); }; - } + }, - computeStackTrace.augmentStackTraceWithInitialElement = augmentStackTraceWithInitialElement; - computeStackTrace.computeStackTraceFromStackProp = computeStackTraceFromStackProp; - return computeStackTrace; -}(); + /** + * Wraps addEventListener to capture keypress UI events + * @returns {Function} + * @private + */ + _keypressEventHandler: function() { + var self = this, + debounceDuration = 1000; // milliseconds + + // TODO: if somehow user switches keypress target before + // debounce timeout is triggered, we will only capture + // a single breadcrumb from the FIRST target (acceptable?) + return function(evt) { + var target; + try { + target = evt.target; + } catch (e) { + // just accessing event properties can throw an exception in some rare circumstances + // see: https://github.com/getsentry/raven-js/issues/838 + return; + } + var tagName = target && target.tagName; -var tracekit = TraceKit; + // only consider keypress events on actual input elements + // this will disregard keypresses targeting body (e.g. tabbing + // through elements, hotkeys, etc) + if ( + !tagName || + (tagName !== 'INPUT' && tagName !== 'TEXTAREA' && !target.isContentEditable) + ) + return; -var stringify_1 = createCommonjsModule(function (module, exports) { - /* - json-stringify-safe - Like JSON.stringify, but doesn't throw on circular references. - - Originally forked from https://github.com/isaacs/json-stringify-safe - version 5.0.1 on 3/8/2017 and modified to handle Errors serialization - and IE8 compatibility. Tests for this are in test/vendor. - - ISC license: https://github.com/isaacs/json-stringify-safe/blob/master/LICENSE - */ - exports = module.exports = stringify; - exports.getSerialize = serializer; - - function indexOf(haystack, needle) { - for (var i = 0; i < haystack.length; ++i) { - if (haystack[i] === needle) return i; - } - - return -1; - } + // record first keypress in a series, but ignore subsequent + // keypresses until debounce clears + var timeout = self._keypressTimeout; + if (!timeout) { + self._breadcrumbEventHandler('input')(evt); + } + clearTimeout(timeout); + self._keypressTimeout = setTimeout(function() { + self._keypressTimeout = null; + }, debounceDuration); + }; + }, + + /** + * Captures a breadcrumb of type "navigation", normalizing input URLs + * @param to the originating URL + * @param from the target URL + * @private + */ + _captureUrlChange: function(from, to) { + var parsedLoc = parseUrl(this._location.href); + var parsedTo = parseUrl(to); + var parsedFrom = parseUrl(from); - function stringify(obj, replacer, spaces, cycleReplacer) { - return JSON.stringify(obj, serializer(replacer, cycleReplacer), spaces); - } // https://github.com/ftlabs/js-abbreviate/blob/fa709e5f139e7770a71827b1893f22418097fbda/index.js#L95-L106 + // because onpopstate only tells you the "new" (to) value of location.href, and + // not the previous (from) value, we need to track the value of the current URL + // state ourselves + this._lastHref = to; + // Use only the path component of the URL if the URL matches the current + // document (almost all the time when using pushState) + if (parsedLoc.protocol === parsedTo.protocol && parsedLoc.host === parsedTo.host) + to = parsedTo.relative; + if (parsedLoc.protocol === parsedFrom.protocol && parsedLoc.host === parsedFrom.host) + from = parsedFrom.relative; - function stringifyError(value) { - var err = { - // These properties are implemented as magical getters and don't show up in for in - stack: value.stack, - message: value.message, - name: value.name - }; + this.captureBreadcrumb({ + category: 'navigation', + data: { + to: to, + from: from + } + }); + }, - for (var i in value) { - if (Object.prototype.hasOwnProperty.call(value, i)) { - err[i] = value[i]; + _patchFunctionToString: function() { + var self = this; + self._originalFunctionToString = Function.prototype.toString; + // eslint-disable-next-line no-extend-native + Function.prototype.toString = function() { + if (typeof this === 'function' && this.__raven__) { + return self._originalFunctionToString.apply(this.__orig__, arguments); } + return self._originalFunctionToString.apply(this, arguments); + }; + }, + + _unpatchFunctionToString: function() { + if (this._originalFunctionToString) { + // eslint-disable-next-line no-extend-native + Function.prototype.toString = this._originalFunctionToString; } + }, - return err; - } + /** + * Wrap timer functions and event targets to catch errors and provide + * better metadata. + */ + _instrumentTryCatch: function() { + var self = this; - function serializer(replacer, cycleReplacer) { - var stack = []; - var keys = []; + var wrappedBuiltIns = self._wrappedBuiltIns; - if (cycleReplacer == null) { - cycleReplacer = function cycleReplacer(key, value) { - if (stack[0] === value) { - return '[Circular ~]'; + function wrapTimeFn(orig) { + return function(fn, t) { + // preserve arity + // Make a copy of the arguments to prevent deoptimization + // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments + var args = new Array(arguments.length); + for (var i = 0; i < args.length; ++i) { + args[i] = arguments[i]; + } + var originalCallback = args[0]; + if (isFunction(originalCallback)) { + args[0] = self.wrap(originalCallback); } - return '[Circular ~.' + keys.slice(0, indexOf(stack, value)).join('.') + ']'; + // IE < 9 doesn't support .call/.apply on setInterval/setTimeout, but it + // also supports only two arguments and doesn't care what this is, so we + // can just call the original function directly. + if (orig.apply) { + return orig.apply(this, args); + } else { + return orig(args[0], args[1]); + } }; } - return function (key, value) { - if (stack.length > 0) { - var thisPos = indexOf(stack, this); - ~thisPos ? stack.splice(thisPos + 1) : stack.push(this); - ~thisPos ? keys.splice(thisPos, Infinity, key) : keys.push(key); + var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; - if (~indexOf(stack, value)) { - value = cycleReplacer.call(this, key, value); - } - } else { - stack.push(value); + function wrapEventTarget(global) { + var proto = _window[global] && _window[global].prototype; + if (proto && proto.hasOwnProperty && proto.hasOwnProperty('addEventListener')) { + fill( + proto, + 'addEventListener', + function(orig) { + return function(evtName, fn, capture, secure) { + // preserve arity + try { + if (fn && fn.handleEvent) { + fn.handleEvent = self.wrap(fn.handleEvent); + } + } catch (err) { + // can sometimes get 'Permission denied to access property "handle Event' + } + + // More breadcrumb DOM capture ... done here and not in `_instrumentBreadcrumbs` + // so that we don't have more than one wrapper function + var before, clickHandler, keypressHandler; + + if ( + autoBreadcrumbs && + autoBreadcrumbs.dom && + (global === 'EventTarget' || global === 'Node') + ) { + // NOTE: generating multiple handlers per addEventListener invocation, should + // revisit and verify we can just use one (almost certainly) + clickHandler = self._breadcrumbEventHandler('click'); + keypressHandler = self._keypressEventHandler(); + before = function(evt) { + // need to intercept every DOM event in `before` argument, in case that + // same wrapped method is re-used for different events (e.g. mousemove THEN click) + // see #724 + if (!evt) return; + + var eventType; + try { + eventType = evt.type; + } catch (e) { + // just accessing event properties can throw an exception in some rare circumstances + // see: https://github.com/getsentry/raven-js/issues/838 + return; + } + if (eventType === 'click') return clickHandler(evt); + else if (eventType === 'keypress') return keypressHandler(evt); + }; + } + return orig.call( + this, + evtName, + self.wrap(fn, undefined, before), + capture, + secure + ); + }; + }, + wrappedBuiltIns + ); + fill( + proto, + 'removeEventListener', + function(orig) { + return function(evt, fn, capture, secure) { + try { + fn = fn && (fn.__raven_wrapper__ ? fn.__raven_wrapper__ : fn); + } catch (e) { + // ignore, accessing __raven_wrapper__ will throw in some Selenium environments + } + return orig.call(this, evt, fn, capture, secure); + }; + }, + wrappedBuiltIns + ); } + } - return replacer == null ? value instanceof Error ? stringifyError(value) : value : replacer.call(this, key, value); - }; - } -}); -var stringify_2 = stringify_1.getSerialize; + fill(_window, 'setTimeout', wrapTimeFn, wrappedBuiltIns); + fill(_window, 'setInterval', wrapTimeFn, wrappedBuiltIns); + if (_window.requestAnimationFrame) { + fill( + _window, + 'requestAnimationFrame', + function(orig) { + return function(cb) { + return orig(self.wrap(cb)); + }; + }, + wrappedBuiltIns + ); + } -function RavenConfigError(message) { - this.name = 'RavenConfigError'; - this.message = message; -} + // event targets borrowed from bugsnag-js: + // https://github.com/bugsnag/bugsnag-js/blob/master/src/bugsnag.js#L666 + var eventTargets = [ + 'EventTarget', + 'Window', + 'Node', + 'ApplicationCache', + 'AudioTrackList', + 'ChannelMergerNode', + 'CryptoOperation', + 'EventSource', + 'FileReader', + 'HTMLUnknownElement', + 'IDBDatabase', + 'IDBRequest', + 'IDBTransaction', + 'KeyOperation', + 'MediaController', + 'MessagePort', + 'ModalWindow', + 'Notification', + 'SVGElementInstance', + 'Screen', + 'TextTrack', + 'TextTrackCue', + 'TextTrackList', + 'WebSocket', + 'WebSocketWorker', + 'Worker', + 'XMLHttpRequest', + 'XMLHttpRequestEventTarget', + 'XMLHttpRequestUpload' + ]; + for (var i = 0; i < eventTargets.length; i++) { + wrapEventTarget(eventTargets[i]); + } + }, -RavenConfigError.prototype = new Error(); -RavenConfigError.prototype.constructor = RavenConfigError; -var configError = RavenConfigError; + /** + * Instrument browser built-ins w/ breadcrumb capturing + * - XMLHttpRequests + * - DOM interactions (click/typing) + * - window.location changes + * - console + * + * Can be disabled or individually configured via the `autoBreadcrumbs` config option + */ + _instrumentBreadcrumbs: function() { + var self = this; + var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; -var wrapMethod = function wrapMethod(console, level, callback) { - var originalConsoleLevel = console[level]; - var originalConsole = console; + var wrappedBuiltIns = self._wrappedBuiltIns; - if (!(level in console)) { - return; - } + function wrapProp(prop, xhr) { + if (prop in xhr && isFunction(xhr[prop])) { + fill(xhr, prop, function(orig) { + return self.wrap(orig); + }); // intentionally don't track filled methods on XHR instances + } + } - var sentryLevel = level === 'warn' ? 'warning' : level; + if (autoBreadcrumbs.xhr && 'XMLHttpRequest' in _window) { + var xhrproto = _window.XMLHttpRequest && _window.XMLHttpRequest.prototype; + fill( + xhrproto, + 'open', + function(origOpen) { + return function(method, url) { + // preserve arity - console[level] = function () { - var args = [].slice.call(arguments); - var msg = utils.safeJoin(args, ' '); - var data = { - level: sentryLevel, - logger: 'console', - extra: { - arguments: args - } - }; + // if Sentry key appears in URL, don't capture + if (isString(url) && url.indexOf(self._globalKey) === -1) { + this.__raven_xhr = { + method: method, + url: url, + status_code: null + }; + } - if (level === 'assert') { - if (args[0] === false) { - // Default browsers message - msg = 'Assertion failed: ' + (utils.safeJoin(args.slice(1), ' ') || 'console.assert'); - data.extra.arguments = args.slice(1); - callback && callback(msg, data); - } - } else { - callback && callback(msg, data); - } // this fails for some browsers. :( - - - if (originalConsoleLevel) { - // IE9 doesn't allow calling apply on console functions directly - // See: https://stackoverflow.com/questions/5472938/does-ie9-support-console-log-and-is-it-a-real-function#answer-5473193 - Function.prototype.apply.call(originalConsoleLevel, originalConsole, args); - } - }; -}; - -var console$1 = { - wrapMethod: wrapMethod -}; + return origOpen.apply(this, arguments); + }; + }, + wrappedBuiltIns + ); + + fill( + xhrproto, + 'send', + function(origSend) { + return function() { + // preserve arity + var xhr = this; -/*global XDomainRequest:false */ + function onreadystatechangeHandler() { + if (xhr.__raven_xhr && xhr.readyState === 4) { + try { + // touching statusCode in some platforms throws + // an exception + xhr.__raven_xhr.status_code = xhr.status; + } catch (e) { + /* do nothing */ + } -var isError = utils.isError; -var isObject = utils.isObject; -var isErrorEvent = utils.isErrorEvent; -var isUndefined = utils.isUndefined; -var isFunction = utils.isFunction; -var isString = utils.isString; -var isArray = utils.isArray; -var isEmptyObject = utils.isEmptyObject; -var each = utils.each; -var objectMerge = utils.objectMerge; -var truncate = utils.truncate; -var objectFrozen = utils.objectFrozen; -var hasKey = utils.hasKey; -var joinRegExp = utils.joinRegExp; -var urlencode = utils.urlencode; -var uuid4 = utils.uuid4; -var htmlTreeAsString = utils.htmlTreeAsString; -var isSameException = utils.isSameException; -var isSameStacktrace = utils.isSameStacktrace; -var parseUrl = utils.parseUrl; -var fill = utils.fill; -var supportsFetch = utils.supportsFetch; -var wrapConsoleMethod = console$1.wrapMethod; -var dsnKeys = 'source protocol user pass host port path'.split(' '); -var dsnPattern = /^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/; + self.captureBreadcrumb({ + type: 'http', + category: 'xhr', + data: xhr.__raven_xhr + }); + } + } -function now() { - return +new Date(); -} // This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) + var props = ['onload', 'onerror', 'onprogress']; + for (var j = 0; j < props.length; j++) { + wrapProp(props[j], xhr); + } + if ('onreadystatechange' in xhr && isFunction(xhr.onreadystatechange)) { + fill( + xhr, + 'onreadystatechange', + function(orig) { + return self.wrap(orig, undefined, onreadystatechangeHandler); + } /* intentionally don't track this instrumentation */ + ); + } else { + // if onreadystatechange wasn't actually set by the page on this xhr, we + // are free to set our own and capture the breadcrumb + xhr.onreadystatechange = onreadystatechangeHandler; + } -var _window$1 = typeof window !== 'undefined' ? window : typeof commonjsGlobal !== 'undefined' ? commonjsGlobal : typeof self !== 'undefined' ? self : {}; + return origSend.apply(this, arguments); + }; + }, + wrappedBuiltIns + ); + } -var _document = _window$1.document; -var _navigator = _window$1.navigator; + if (autoBreadcrumbs.xhr && supportsFetch()) { + fill( + _window, + 'fetch', + function(origFetch) { + return function() { + // preserve arity + // Make a copy of the arguments to prevent deoptimization + // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments + var args = new Array(arguments.length); + for (var i = 0; i < args.length; ++i) { + args[i] = arguments[i]; + } -function keepOriginalCallback(original, callback) { - return isFunction(callback) ? function (data) { - return callback(data, original); - } : callback; -} // First, check for JSON support -// If there is no JSON, we no-op the core features of Raven -// since JSON is required to encode the payload + var fetchInput = args[0]; + var method = 'GET'; + var url; + if (typeof fetchInput === 'string') { + url = fetchInput; + } else if ('Request' in _window && fetchInput instanceof _window.Request) { + url = fetchInput.url; + if (fetchInput.method) { + method = fetchInput.method; + } + } else { + url = '' + fetchInput; + } -function Raven$1() { - this._hasJSON = !!(_typeof(JSON) === 'object' && JSON.stringify); // Raven can run in contexts where there's no document (react-native) + // if Sentry key appears in URL, don't capture, as it's our own request + if (url.indexOf(self._globalKey) !== -1) { + return origFetch.apply(this, args); + } - this._hasDocument = !isUndefined(_document); - this._hasNavigator = !isUndefined(_navigator); - this._lastCapturedException = null; - this._lastData = null; - this._lastEventId = null; - this._globalServer = null; - this._globalKey = null; - this._globalProject = null; - this._globalContext = {}; - this._globalOptions = { - // SENTRY_RELEASE can be injected by https://github.com/getsentry/sentry-webpack-plugin - release: _window$1.SENTRY_RELEASE && _window$1.SENTRY_RELEASE.id, - logger: 'javascript', - ignoreErrors: [], - ignoreUrls: [], - whitelistUrls: [], - includePaths: [], - headers: null, - collectWindowErrors: true, - maxMessageLength: 0, - // By default, truncates URL values to 250 chars - maxUrlLength: 250, - stackTraceLimit: 50, - autoBreadcrumbs: true, - instrument: true, - sampleRate: 1 - }; - this._fetchDefaults = { - method: 'POST', - keepalive: true, - referrerPolicy: 'origin' - }; - this._ignoreOnError = 0; - this._isRavenInstalled = false; - this._originalErrorStackTraceLimit = Error.stackTraceLimit; // capture references to window.console *and* all its methods first - // before the console plugin has a chance to monkey patch + if (args[1] && args[1].method) { + method = args[1].method; + } - this._originalConsole = _window$1.console || {}; - this._originalConsoleMethods = {}; - this._plugins = []; - this._startTime = now(); - this._wrappedBuiltIns = []; - this._breadcrumbs = []; - this._lastCapturedEvent = null; - this._keypressTimeout; - this._location = _window$1.location; - this._lastHref = this._location && this._location.href; + var fetchData = { + method: method, + url: url, + status_code: null + }; - this._resetBackoff(); // eslint-disable-next-line guard-for-in + return origFetch + .apply(this, args) + .then(function(response) { + fetchData.status_code = response.status; + + self.captureBreadcrumb({ + type: 'http', + category: 'fetch', + data: fetchData + }); + + return response; + }) + ['catch'](function(err) { + // if there is an error performing the request + self.captureBreadcrumb({ + type: 'http', + category: 'fetch', + data: fetchData, + level: 'error' + }); + + throw err; + }); + }; + }, + wrappedBuiltIns + ); + } + // Capture breadcrumbs from any click that is unhandled / bubbled up all the way + // to the document. Do this before we instrument addEventListener. + if (autoBreadcrumbs.dom && this._hasDocument) { + if (_document.addEventListener) { + _document.addEventListener('click', self._breadcrumbEventHandler('click'), false); + _document.addEventListener('keypress', self._keypressEventHandler(), false); + } else if (_document.attachEvent) { + // IE8 Compatibility + _document.attachEvent('onclick', self._breadcrumbEventHandler('click')); + _document.attachEvent('onkeypress', self._keypressEventHandler()); + } + } - for (var method in this._originalConsole) { - this._originalConsoleMethods[method] = this._originalConsole[method]; - } -} -/* - * The core Raven singleton - * - * @this {Raven} - */ + // record navigation (URL) changes + // NOTE: in Chrome App environment, touching history.pushState, *even inside + // a try/catch block*, will cause Chrome to output an error to console.error + // borrowed from: https://github.com/angular/angular.js/pull/13945/files + var chrome = _window.chrome; + var isChromePackagedApp = chrome && chrome.app && chrome.app.runtime; + var hasPushAndReplaceState = + !isChromePackagedApp && + _window.history && + history.pushState && + history.replaceState; + if (autoBreadcrumbs.location && hasPushAndReplaceState) { + // TODO: remove onpopstate handler on uninstall() + var oldOnPopState = _window.onpopstate; + _window.onpopstate = function() { + var currentHref = self._location.href; + self._captureUrlChange(self._lastHref, currentHref); + if (oldOnPopState) { + return oldOnPopState.apply(this, arguments); + } + }; -Raven$1.prototype = { - // Hardcode version string so that raven source can be loaded directly via - // webpack (using a build step causes webpack #1617). Grunt verifies that - // this value matches package.json during build. - // See: https://github.com/getsentry/raven-js/issues/465 - VERSION: '3.22.2', - debug: false, - TraceKit: tracekit, - // alias to TraceKit + var historyReplacementFunction = function(origHistFunction) { + // note history.pushState.length is 0; intentionally not declaring + // params to preserve 0 arity + return function(/* state, title, url */) { + var url = arguments.length > 2 ? arguments[2] : undefined; - /* - * Configure Raven with a DSN and extra options - * - * @param {string} dsn The public Sentry DSN - * @param {object} options Set of global options [optional] - * @return {Raven} - */ - config: function config(dsn, options) { - var self = this; + // url argument is optional + if (url) { + // coerce to string (this is what pushState does) + self._captureUrlChange(self._lastHref, url + ''); + } - if (self._globalServer) { - this._logDebug('error', 'Error: Raven has already been configured'); + return origHistFunction.apply(this, arguments); + }; + }; - return self; + fill(history, 'pushState', historyReplacementFunction, wrappedBuiltIns); + fill(history, 'replaceState', historyReplacementFunction, wrappedBuiltIns); } - if (!dsn) return self; - var globalOptions = self._globalOptions; // merge in options + if (autoBreadcrumbs.console && 'console' in _window && console.log) { + // console + var consoleMethodCallback = function(msg, data) { + self.captureBreadcrumb({ + message: msg, + level: data.level, + category: 'console' + }); + }; - if (options) { - each(options, function (key, value) { - // tags and extra are special and need to be put into context - if (key === 'tags' || key === 'extra' || key === 'user') { - self._globalContext[key] = value; - } else { - globalOptions[key] = value; - } + each(['debug', 'info', 'warn', 'error', 'log'], function(_, level) { + wrapConsoleMethod(console, level, consoleMethodCallback); }); } + }, - self.setDSN(dsn); // "Script error." is hard coded into browsers for errors that it can't read. - // this is the result of a script being pulled in from an external domain and CORS. - - globalOptions.ignoreErrors.push(/^Script error\.?$/); - globalOptions.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/); // join regexp rules into one big rule - - globalOptions.ignoreErrors = joinRegExp(globalOptions.ignoreErrors); - globalOptions.ignoreUrls = globalOptions.ignoreUrls.length ? joinRegExp(globalOptions.ignoreUrls) : false; - globalOptions.whitelistUrls = globalOptions.whitelistUrls.length ? joinRegExp(globalOptions.whitelistUrls) : false; - globalOptions.includePaths = joinRegExp(globalOptions.includePaths); - globalOptions.maxBreadcrumbs = Math.max(0, Math.min(globalOptions.maxBreadcrumbs || 100, 100)); // default and hard limit is 100 + _restoreBuiltIns: function() { + // restore any wrapped builtins + var builtin; + while (this._wrappedBuiltIns.length) { + builtin = this._wrappedBuiltIns.shift(); - var autoBreadcrumbDefaults = { - xhr: true, - console: true, - dom: true, - location: true, - sentry: true - }; - var autoBreadcrumbs = globalOptions.autoBreadcrumbs; + var obj = builtin[0], + name = builtin[1], + orig = builtin[2]; - if ({}.toString.call(autoBreadcrumbs) === '[object Object]') { - autoBreadcrumbs = objectMerge(autoBreadcrumbDefaults, autoBreadcrumbs); - } else if (autoBreadcrumbs !== false) { - autoBreadcrumbs = autoBreadcrumbDefaults; + obj[name] = orig; } + }, - globalOptions.autoBreadcrumbs = autoBreadcrumbs; - var instrumentDefaults = { - tryCatch: true - }; - var instrument = globalOptions.instrument; - - if ({}.toString.call(instrument) === '[object Object]') { - instrument = objectMerge(instrumentDefaults, instrument); - } else if (instrument !== false) { - instrument = instrumentDefaults; + _restoreConsole: function() { + // eslint-disable-next-line guard-for-in + for (var method in this._originalConsoleMethods) { + this._originalConsole[method] = this._originalConsoleMethods[method]; } - - globalOptions.instrument = instrument; - tracekit.collectWindowErrors = !!globalOptions.collectWindowErrors; // return for chaining - - return self; }, - /* - * Installs a global window.onerror error handler - * to capture and report uncaught exceptions. - * At this point, install() is required to be called due - * to the way TraceKit is set up. - * - * @return {Raven} - */ - install: function install() { + _drainPlugins: function() { var self = this; - if (self.isSetup() && !self._isRavenInstalled) { - tracekit.report.subscribe(function () { - self._handleOnErrorStackInfo.apply(self, arguments); - }); - - self._patchFunctionToString(); - - if (self._globalOptions.instrument && self._globalOptions.instrument.tryCatch) { - self._instrumentTryCatch(); - } + // FIX ME TODO + each(this._plugins, function(_, plugin) { + var installer = plugin[0]; + var args = plugin[1]; + installer.apply(self, [self].concat(args)); + }); + }, - if (self._globalOptions.autoBreadcrumbs) self._instrumentBreadcrumbs(); // Install all of the plugins + _parseDSN: function(str) { + var m = dsnPattern.exec(str), + dsn = {}, + i = 7; - self._drainPlugins(); + try { + while (i--) dsn[dsnKeys[i]] = m[i] || ''; + } catch (e) { + throw new RavenConfigError('Invalid DSN: ' + str); + } - self._isRavenInstalled = true; + if (dsn.pass && !this._globalOptions.allowSecretKey) { + throw new RavenConfigError( + 'Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key' + ); } - Error.stackTraceLimit = self._globalOptions.stackTraceLimit; - return this; + return dsn; }, - /* - * Set the DSN (can be called multiple time unlike config) - * - * @param {string} dsn The public Sentry DSN - */ - setDSN: function setDSN(dsn) { - var self = this, - uri = self._parseDSN(dsn), - lastSlash = uri.path.lastIndexOf('/'), - path = uri.path.substr(1, lastSlash); - - self._dsn = dsn; - self._globalKey = uri.user; - self._globalSecret = uri.pass && uri.pass.substr(1); - self._globalProject = uri.path.substr(lastSlash + 1); - self._globalServer = self._getGlobalServer(uri); - self._globalEndpoint = self._globalServer + '/' + path + 'api/' + self._globalProject + '/store/'; // Reset backoff state since we may be pointing at a - // new project/server + _getGlobalServer: function(uri) { + // assemble the endpoint from the uri pieces + var globalServer = '//' + uri.host + (uri.port ? ':' + uri.port : ''); - this._resetBackoff(); + if (uri.protocol) { + globalServer = uri.protocol + ':' + globalServer; + } + return globalServer; }, - /* - * Wrap code within a context so Raven can capture errors - * reliably across domains that is executed immediately. - * - * @param {object} options A specific set of options for this context [optional] - * @param {function} func The callback to be immediately executed within the context - * @param {array} args An array of arguments to be called with the callback [optional] - */ - context: function context(options, func, args) { - if (isFunction(options)) { - args = func || []; - func = options; - options = undefined; + _handleOnErrorStackInfo: function() { + // if we are intentionally ignoring errors via onerror, bail out + if (!this._ignoreOnError) { + this._handleStackInfo.apply(this, arguments); } - - return this.wrap(options, func).apply(this, args); }, - /* - * Wrap code within a context and returns back a new function to be executed - * - * @param {object} options A specific set of options for this context [optional] - * @param {function} func The function to be wrapped in a new context - * @param {function} func A function to call before the try/catch wrapper [optional, private] - * @return {function} The newly wrapped functions with a context - */ - wrap: function wrap(options, func, _before) { - var self = this; // 1 argument has been passed, and it's not a function - // so just return it + _handleStackInfo: function(stackInfo, options) { + var frames = this._prepareFrames(stackInfo, options); - if (isUndefined(func) && !isFunction(options)) { - return options; - } // options is optional + this._triggerEvent('handle', { + stackInfo: stackInfo, + options: options + }); + this._processException( + stackInfo.name, + stackInfo.message, + stackInfo.url, + stackInfo.lineno, + frames, + options + ); + }, - if (isFunction(options)) { - func = options; - options = undefined; - } // At this point, we've passed along 2 arguments, and the second one - // is not a function either, so we'll just return the second argument. + _prepareFrames: function(stackInfo, options) { + var self = this; + var frames = []; + if (stackInfo.stack && stackInfo.stack.length) { + each(stackInfo.stack, function(i, stack) { + var frame = self._normalizeFrame(stack, stackInfo.url); + if (frame) { + frames.push(frame); + } + }); + // e.g. frames captured via captureMessage throw + if (options && options.trimHeadFrames) { + for (var j = 0; j < options.trimHeadFrames && j < frames.length; j++) { + frames[j].in_app = false; + } + } + } + frames = frames.slice(0, this._globalOptions.stackTraceLimit); + return frames; + }, - if (!isFunction(func)) { - return func; - } // We don't wanna wrap it twice! + _normalizeFrame: function(frame, stackInfoUrl) { + // normalize the frames data + var normalized = { + filename: frame.url, + lineno: frame.line, + colno: frame.column, + function: frame.func || '?' + }; + // Case when we don't have any information about the error + // E.g. throwing a string or raw object, instead of an `Error` in Firefox + // Generating synthetic error doesn't add any value here + // + // We should probably somehow let a user know that they should fix their code + if (!frame.url) { + normalized.filename = stackInfoUrl; // fallback to whole stacks url from onerror handler + } - try { - if (func.__raven__) { - return func; - } // If this has already been wrapped in the past, return that + normalized.in_app = !// determine if an exception came from outside of our app + // first we check the global includePaths list. + ( + (!!this._globalOptions.includePaths.test && + !this._globalOptions.includePaths.test(normalized.filename)) || + // Now we check for fun, if the function name is Raven or TraceKit + /(Raven|TraceKit)\./.test(normalized['function']) || + // finally, we do a last ditch effort and check for raven.min.js + /raven\.(min\.)?js$/.test(normalized.filename) + ); + return normalized; + }, - if (func.__raven_wrapper__) { - return func.__raven_wrapper__; - } - } catch (e) { - // Just accessing custom props in some Selenium environments - // can cause a "Permission denied" exception (see raven-js#495). - // Bail on wrapping and return the function as-is (defers to window.onerror). - return func; + _processException: function(type, message, fileurl, lineno, frames, options) { + var prefixedMessage = (type ? type + ': ' : '') + (message || ''); + if ( + !!this._globalOptions.ignoreErrors.test && + (this._globalOptions.ignoreErrors.test(message) || + this._globalOptions.ignoreErrors.test(prefixedMessage)) + ) { + return; } - function wrapped() { - var args = [], - i = arguments.length, - deep = !options || options && options.deep !== false; + var stacktrace; - if (_before && isFunction(_before)) { - _before.apply(this, arguments); - } // Recursively wrap all of a function's arguments that are - // functions themselves. + if (frames && frames.length) { + fileurl = frames[0].filename || fileurl; + // Sentry expects frames oldest to newest + // and JS sends them as newest to oldest + frames.reverse(); + stacktrace = {frames: frames}; + } else if (fileurl) { + stacktrace = { + frames: [ + { + filename: fileurl, + lineno: lineno, + in_app: true + } + ] + }; + } + if ( + !!this._globalOptions.ignoreUrls.test && + this._globalOptions.ignoreUrls.test(fileurl) + ) { + return; + } - while (i--) { - args[i] = deep ? self.wrap(options, arguments[i]) : arguments[i]; - } + if ( + !!this._globalOptions.whitelistUrls.test && + !this._globalOptions.whitelistUrls.test(fileurl) + ) { + return; + } - try { - // Attempt to invoke user-land function - // NOTE: If you are a Sentry user, and you are seeing this stack frame, it - // means Raven caught an error invoking your application code. This is - // expected behavior and NOT indicative of a bug with Raven.js. - return func.apply(this, args); - } catch (e) { - self._ignoreNextOnError(); + var data = objectMerge( + { + // sentry.interfaces.Exception + exception: { + values: [ + { + type: type, + value: message, + stacktrace: stacktrace + } + ] + }, + culprit: fileurl + }, + options + ); - self.captureException(e, options); - throw e; - } - } // copy over properties of the old function + // Fire away! + this._send(data); + }, + _trimPacket: function(data) { + // For now, we only want to truncate the two different messages + // but this could/should be expanded to just trim everything + var max = this._globalOptions.maxMessageLength; + if (data.message) { + data.message = truncate(data.message, max); + } + if (data.exception) { + var exception = data.exception.values[0]; + exception.value = truncate(exception.value, max); + } - for (var property in func) { - if (hasKey(func, property)) { - wrapped[property] = func[property]; + var request = data.request; + if (request) { + if (request.url) { + request.url = truncate(request.url, this._globalOptions.maxUrlLength); + } + if (request.Referer) { + request.Referer = truncate(request.Referer, this._globalOptions.maxUrlLength); } } - wrapped.prototype = func.prototype; - func.__raven_wrapper__ = wrapped; // Signal that this function has been wrapped/filled already - // for both debugging and to prevent it to being wrapped/filled twice + if (data.breadcrumbs && data.breadcrumbs.values) + this._trimBreadcrumbs(data.breadcrumbs); - wrapped.__raven__ = true; - wrapped.__orig__ = func; - return wrapped; + return data; }, - /* - * Uninstalls the global error handler. - * - * @return {Raven} - */ - uninstall: function uninstall() { - tracekit.report.uninstall(); + /** + * Truncate breadcrumb values (right now just URLs) + */ + _trimBreadcrumbs: function(breadcrumbs) { + // known breadcrumb properties with urls + // TODO: also consider arbitrary prop values that start with (https?)?:// + var urlProps = ['to', 'from', 'url'], + urlProp, + crumb, + data; - this._unpatchFunctionToString(); + for (var i = 0; i < breadcrumbs.values.length; ++i) { + crumb = breadcrumbs.values[i]; + if ( + !crumb.hasOwnProperty('data') || + !isObject(crumb.data) || + objectFrozen(crumb.data) + ) + continue; - this._restoreBuiltIns(); + data = objectMerge({}, crumb.data); + for (var j = 0; j < urlProps.length; ++j) { + urlProp = urlProps[j]; + if (data.hasOwnProperty(urlProp) && data[urlProp]) { + data[urlProp] = truncate(data[urlProp], this._globalOptions.maxUrlLength); + } + } + breadcrumbs.values[i].data = data; + } + }, - this._restoreConsole(); + _getHttpData: function() { + if (!this._hasNavigator && !this._hasDocument) return; + var httpData = {}; - Error.stackTraceLimit = this._originalErrorStackTraceLimit; - this._isRavenInstalled = false; - return this; - }, + if (this._hasNavigator && _navigator.userAgent) { + httpData.headers = { + 'User-Agent': navigator.userAgent + }; + } - /* - * Manually capture an exception and send it over to Sentry - * - * @param {error} ex An exception to be logged - * @param {object} options A specific set of options for this error [optional] - * @return {Raven} - */ - captureException: function captureException(ex, options) { - options = objectMerge({ - trimHeadFrames: 0 - }, options ? options : {}); // Cases for sending ex as a message, rather than an exception + // Check in `window` instead of `document`, as we may be in ServiceWorker environment + if (_window.location && _window.location.href) { + httpData.url = _window.location.href; + } - var isNotError = !isError(ex); - var isNotErrorEvent = !isErrorEvent(ex); - var isErrorEventWithoutError = isErrorEvent(ex) && !ex.error; + if (this._hasDocument && _document.referrer) { + if (!httpData.headers) httpData.headers = {}; + httpData.headers.Referer = _document.referrer; + } - if (isNotError && isNotErrorEvent || isErrorEventWithoutError) { - return this.captureMessage(ex, objectMerge(options, { - stacktrace: true, - // if we fall back to captureMessage, default to attempting a new trace - trimHeadFrames: options.trimHeadFrames + 1 - })); - } // Get actual Error from ErrorEvent + return httpData; + }, + _resetBackoff: function() { + this._backoffDuration = 0; + this._backoffStart = null; + }, - if (isErrorEvent(ex)) ex = ex.error; // Store the raw exception object for potential debugging and introspection + _shouldBackoff: function() { + return this._backoffDuration && now() - this._backoffStart < this._backoffDuration; + }, - this._lastCapturedException = ex; // TraceKit.report will re-raise any exception passed to it, - // which means you have to wrap it in try/catch. Instead, we - // can wrap it here and only re-raise if TraceKit.report - // raises an exception different from the one we asked to - // report on. + /** + * Returns true if the in-process data payload matches the signature + * of the previously-sent data + * + * NOTE: This has to be done at this level because TraceKit can generate + * data from window.onerror WITHOUT an exception object (IE8, IE9, + * other old browsers). This can take the form of an "exception" + * data object with a single frame (derived from the onerror args). + */ + _isRepeatData: function(current) { + var last = this._lastData; - try { - var stack = tracekit.computeStackTrace(ex); + if ( + !last || + current.message !== last.message || // defined for captureMessage + current.culprit !== last.culprit // defined for captureException/onerror + ) + return false; - this._handleStackInfo(stack, options); - } catch (ex1) { - if (ex !== ex1) { - throw ex1; - } + // Stacktrace interface (i.e. from captureMessage) + if (current.stacktrace || last.stacktrace) { + return isSameStacktrace(current.stacktrace, last.stacktrace); + } else if (current.exception || last.exception) { + // Exception interface (i.e. from captureException/onerror) + return isSameException(current.exception, last.exception); } - return this; + return true; }, - /* - * Manually send a message to Sentry - * - * @param {string} msg A plain message to be captured in Sentry - * @param {object} options A specific set of options for this message [optional] - * @return {Raven} - */ - captureMessage: function captureMessage(msg, options) { - // config() automagically converts ignoreErrors from a list to a RegExp so we need to test for an - // early call; we'll error on the side of logging anything called before configuration since it's - // probably something you should see: - if (!!this._globalOptions.ignoreErrors.test && this._globalOptions.ignoreErrors.test(msg)) { + _setBackoffState: function(request) { + // If we are already in a backoff state, don't change anything + if (this._shouldBackoff()) { return; } - options = options || {}; - var data = objectMerge({ - message: msg + '' // Make sure it's actually a string + var status = request.status; - }, options); - var ex; // Generate a "synthetic" stack trace from this point. - // NOTE: If you are a Sentry user, and you are seeing this stack frame, it is NOT indicative - // of a bug with Raven.js. Sentry generates synthetic traces either by configuration, - // or if it catches a thrown object without a "stack" property. + // 400 - project_id doesn't exist or some other fatal + // 401 - invalid/revoked dsn + // 429 - too many requests + if (!(status === 400 || status === 401 || status === 429)) return; + var retry; try { - throw new Error(msg); - } catch (ex1) { - ex = ex1; - } // null exception name so `Error` isn't prefixed to msg + // If Retry-After is not in Access-Control-Expose-Headers, most + // browsers will throw an exception trying to access it + if (supportsFetch()) { + retry = request.headers.get('Retry-After'); + } else { + retry = request.getResponseHeader('Retry-After'); + } + // Retry-After is returned in seconds + retry = parseInt(retry, 10) * 1000; + } catch (e) { + /* eslint no-empty:0 */ + } - ex.name = null; - var stack = tracekit.computeStackTrace(ex); // stack[0] is `throw new Error(msg)` call itself, we are interested in the frame that was just before that, stack[1] + this._backoffDuration = retry + ? // If Sentry server returned a Retry-After value, use it + retry + : // Otherwise, double the last backoff duration (starts at 1 sec) + this._backoffDuration * 2 || 1000; - var initialCall = isArray(stack.stack) && stack.stack[1]; - var fileurl = initialCall && initialCall.url || ''; + this._backoffStart = now(); + }, - if (!!this._globalOptions.ignoreUrls.test && this._globalOptions.ignoreUrls.test(fileurl)) { - return; - } + _send: function(data) { + var globalOptions = this._globalOptions; - if (!!this._globalOptions.whitelistUrls.test && !this._globalOptions.whitelistUrls.test(fileurl)) { - return; + var baseData = { + project: this._globalProject, + logger: globalOptions.logger, + platform: 'javascript' + }, + httpData = this._getHttpData(); + + if (httpData) { + baseData.request = httpData; } - if (this._globalOptions.stacktrace || options && options.stacktrace) { - options = objectMerge({ - // fingerprint on msg, not stack trace (legacy behavior, could be - // revisited) - fingerprint: msg, - // since we know this is a synthetic trace, the top N-most frames - // MUST be from Raven.js, so mark them as in_app later by setting - // trimHeadFrames - trimHeadFrames: (options.trimHeadFrames || 0) + 1 - }, options); + // HACK: delete `trimHeadFrames` to prevent from appearing in outbound payload + if (data.trimHeadFrames) delete data.trimHeadFrames; - var frames = this._prepareFrames(stack, options); + data = objectMerge(baseData, data); - data.stacktrace = { - // Sentry expects frames oldest to newest - frames: frames.reverse() + // Merge in the tags and extra separately since objectMerge doesn't handle a deep merge + data.tags = objectMerge(objectMerge({}, this._globalContext.tags), data.tags); + data.extra = objectMerge(objectMerge({}, this._globalContext.extra), data.extra); + + // Send along our own collected metadata with extra + data.extra['session:duration'] = now() - this._startTime; + + if (this._breadcrumbs && this._breadcrumbs.length > 0) { + // intentionally make shallow copy so that additions + // to breadcrumbs aren't accidentally sent in this request + data.breadcrumbs = { + values: [].slice.call(this._breadcrumbs, 0) }; - } // Fire away! + } + if (this._globalContext.user) { + // sentry.interfaces.User + data.user = this._globalContext.user; + } - this._send(data); + // Include the environment if it's defined in globalOptions + if (globalOptions.environment) data.environment = globalOptions.environment; - return this; - }, - captureBreadcrumb: function captureBreadcrumb(obj) { - var crumb = objectMerge({ - timestamp: now() / 1000 - }, obj); + // Include the release if it's defined in globalOptions + if (globalOptions.release) data.release = globalOptions.release; - if (isFunction(this._globalOptions.breadcrumbCallback)) { - var result = this._globalOptions.breadcrumbCallback(crumb); + // Include server_name if it's defined in globalOptions + if (globalOptions.serverName) data.server_name = globalOptions.serverName; - if (isObject(result) && !isEmptyObject(result)) { - crumb = result; - } else if (result === false) { - return this; - } - } + data = this._sanitizeData(data); - this._breadcrumbs.push(crumb); + // Cleanup empty properties before sending them to the server + Object.keys(data).forEach(function(key) { + if (data[key] == null || data[key] === '' || isEmptyObject(data[key])) { + delete data[key]; + } + }); - if (this._breadcrumbs.length > this._globalOptions.maxBreadcrumbs) { - this._breadcrumbs.shift(); + if (isFunction(globalOptions.dataCallback)) { + data = globalOptions.dataCallback(data) || data; } - return this; - }, - addPlugin: function addPlugin(plugin - /*arg1, arg2, ... argN*/ - ) { - var pluginArgs = [].slice.call(arguments, 1); + // Why?????????? + if (!data || isEmptyObject(data)) { + return; + } - this._plugins.push([plugin, pluginArgs]); + // Check if the request should be filtered or not + if ( + isFunction(globalOptions.shouldSendCallback) && + !globalOptions.shouldSendCallback(data) + ) { + return; + } - if (this._isRavenInstalled) { - this._drainPlugins(); + // Backoff state: Sentry server previously responded w/ an error (e.g. 429 - too many requests), + // so drop requests until "cool-off" period has elapsed. + if (this._shouldBackoff()) { + this._logDebug('warn', 'Raven dropped error due to backoff: ', data); + return; } - return this; + if (typeof globalOptions.sampleRate === 'number') { + if (Math.random() < globalOptions.sampleRate) { + this._sendProcessedPayload(data); + } + } else { + this._sendProcessedPayload(data); + } }, - /* - * Set/clear a user to be sent along with the payload. - * - * @param {object} user An object representing user data [optional] - * @return {Raven} - */ - setUserContext: function setUserContext(user) { - // Intentionally do not merge here since that's an unexpected behavior. - this._globalContext.user = user; - return this; + _sanitizeData: function(data) { + return sanitize(data, this._globalOptions.sanitizeKeys); }, - /* - * Merge extra attributes to be sent along with the payload. - * - * @param {object} extra An object representing extra data [optional] - * @return {Raven} - */ - setExtraContext: function setExtraContext(extra) { - this._mergeContext('extra', extra); - - return this; + _getUuid: function() { + return uuid4(); }, - /* - * Merge tags to be sent along with the payload. - * - * @param {object} tags An object representing tags [optional] - * @return {Raven} - */ - setTagsContext: function setTagsContext(tags) { - this._mergeContext('tags', tags); - - return this; - }, + _sendProcessedPayload: function(data, callback) { + var self = this; + var globalOptions = this._globalOptions; - /* - * Clear all of the context. - * - * @return {Raven} - */ - clearContext: function clearContext() { - this._globalContext = {}; - return this; - }, + if (!this.isSetup()) return; - /* - * Get a copy of the current context. This cannot be mutated. - * - * @return {object} copy of context - */ - getContext: function getContext() { - // lol javascript - return JSON.parse(stringify_1(this._globalContext)); - }, + // Try and clean up the packet before sending by truncating long values + data = this._trimPacket(data); - /* - * Set environment of application - * - * @param {string} environment Typically something like 'production'. - * @return {Raven} - */ - setEnvironment: function setEnvironment(environment) { - this._globalOptions.environment = environment; - return this; - }, + // ideally duplicate error testing should occur *before* dataCallback/shouldSendCallback, + // but this would require copying an un-truncated copy of the data packet, which can be + // arbitrarily deep (extra_data) -- could be worthwhile? will revisit + if (!this._globalOptions.allowDuplicates && this._isRepeatData(data)) { + this._logDebug('warn', 'Raven dropped repeat event: ', data); + return; + } - /* - * Set release version of application - * - * @param {string} release Typically something like a git SHA to identify version - * @return {Raven} - */ - setRelease: function setRelease(release) { - this._globalOptions.release = release; - return this; - }, + // Send along an event_id if not explicitly passed. + // This event_id can be used to reference the error within Sentry itself. + // Set lastEventId after we know the error should actually be sent + this._lastEventId = data.event_id || (data.event_id = this._getUuid()); - /* - * Set the dataCallback option - * - * @param {function} callback The callback to run which allows the - * data blob to be mutated before sending - * @return {Raven} - */ - setDataCallback: function setDataCallback(callback) { - var original = this._globalOptions.dataCallback; - this._globalOptions.dataCallback = keepOriginalCallback(original, callback); - return this; - }, + // Store outbound payload after trim + this._lastData = data; - /* - * Set the breadcrumbCallback option - * - * @param {function} callback The callback to run which allows filtering - * or mutating breadcrumbs - * @return {Raven} - */ - setBreadcrumbCallback: function setBreadcrumbCallback(callback) { - var original = this._globalOptions.breadcrumbCallback; - this._globalOptions.breadcrumbCallback = keepOriginalCallback(original, callback); - return this; - }, + this._logDebug('debug', 'Raven about to send:', data); - /* - * Set the shouldSendCallback option - * - * @param {function} callback The callback to run which allows - * introspecting the blob before sending - * @return {Raven} - */ - setShouldSendCallback: function setShouldSendCallback(callback) { - var original = this._globalOptions.shouldSendCallback; - this._globalOptions.shouldSendCallback = keepOriginalCallback(original, callback); - return this; - }, + var auth = { + sentry_version: '7', + sentry_client: 'raven-js/' + this.VERSION, + sentry_key: this._globalKey + }; - /** - * Override the default HTTP transport mechanism that transmits data - * to the Sentry server. - * - * @param {function} transport Function invoked instead of the default - * `makeRequest` handler. - * - * @return {Raven} - */ - setTransport: function setTransport(transport) { - this._globalOptions.transport = transport; - return this; - }, + if (this._globalSecret) { + auth.sentry_secret = this._globalSecret; + } - /* - * Get the latest raw exception that was captured by Raven. - * - * @return {error} - */ - lastException: function lastException() { - return this._lastCapturedException; - }, + var exception = data.exception && data.exception.values[0]; - /* - * Get the last event id - * - * @return {string} - */ - lastEventId: function lastEventId() { - return this._lastEventId; - }, + // only capture 'sentry' breadcrumb is autoBreadcrumbs is truthy + if ( + this._globalOptions.autoBreadcrumbs && + this._globalOptions.autoBreadcrumbs.sentry + ) { + this.captureBreadcrumb({ + category: 'sentry', + message: exception + ? (exception.type ? exception.type + ': ' : '') + exception.value + : data.message, + event_id: data.event_id, + level: data.level || 'error' // presume error unless specified + }); + } - /* - * Determine if Raven is setup and ready to go. - * - * @return {boolean} - */ - isSetup: function isSetup() { - if (!this._hasJSON) return false; // needs JSON support + var url = this._globalEndpoint; + (globalOptions.transport || this._makeRequest).call(this, { + url: url, + auth: auth, + data: data, + options: globalOptions, + onSuccess: function success() { + self._resetBackoff(); - if (!this._globalServer) { - if (!this.ravenNotConfiguredError) { - this.ravenNotConfiguredError = true; + self._triggerEvent('success', { + data: data, + src: url + }); + callback && callback(); + }, + onError: function failure(error) { + self._logDebug('error', 'Raven transport failed to send: ', error); - this._logDebug('error', 'Error: Raven has not been configured.'); + if (error.request) { + self._setBackoffState(error.request); + } + + self._triggerEvent('failure', { + data: data, + src: url + }); + error = error || new Error('Raven send failed (no additional details provided)'); + callback && callback(error); } + }); + }, - return false; - } + _makeRequest: function(opts) { + // Auth is intentionally sent as part of query string (NOT as custom HTTP header) to avoid preflight CORS requests + var url = opts.url + '?' + urlencode(opts.auth); - return true; - }, - afterLoad: function afterLoad() { - // TODO: remove window dependence? - // Attempt to initialize Raven on load - var RavenConfig = _window$1.RavenConfig; + var evaluatedHeaders = null; + var evaluatedFetchParameters = {}; - if (RavenConfig) { - this.config(RavenConfig.dsn, RavenConfig.config).install(); + if (opts.options.headers) { + evaluatedHeaders = this._evaluateHash(opts.options.headers); } - }, - showReportDialog: function showReportDialog(options) { - if (!_document // doesn't work without a document (React native) - ) return; - options = options || {}; - var lastEventId = options.eventId || this.lastEventId(); - if (!lastEventId) { - throw new configError('Missing eventId'); + if (opts.options.fetchParameters) { + evaluatedFetchParameters = this._evaluateHash(opts.options.fetchParameters); } - var dsn = options.dsn || this._dsn; + if (supportsFetch()) { + evaluatedFetchParameters.body = stringify(opts.data); - if (!dsn) { - throw new configError('Missing DSN'); - } + var defaultFetchOptions = objectMerge({}, this._fetchDefaults); + var fetchOptions = objectMerge(defaultFetchOptions, evaluatedFetchParameters); - var encode = encodeURIComponent; - var qs = ''; - qs += '?eventId=' + encode(lastEventId); - qs += '&dsn=' + encode(dsn); - var user = options.user || this._globalContext.user; + if (evaluatedHeaders) { + fetchOptions.headers = evaluatedHeaders; + } - if (user) { - if (user.name) qs += '&name=' + encode(user.name); - if (user.email) qs += '&email=' + encode(user.email); + return _window + .fetch(url, fetchOptions) + .then(function(response) { + if (response.ok) { + opts.onSuccess && opts.onSuccess(); + } else { + var error = new Error('Sentry error code: ' + response.status); + // It's called request only to keep compatibility with XHR interface + // and not add more redundant checks in setBackoffState method + error.request = response; + opts.onError && opts.onError(error); + } + }) + ['catch'](function() { + opts.onError && + opts.onError(new Error('Sentry error code: network unavailable')); + }); } - var globalServer = this._getGlobalServer(this._parseDSN(dsn)); - - var script = _document.createElement('script'); - - script.async = true; - script.src = globalServer + '/api/embed/error-page/' + qs; + var request = _window.XMLHttpRequest && new _window.XMLHttpRequest(); + if (!request) return; - (_document.head || _document.body).appendChild(script); - }, + // if browser doesn't support CORS (e.g. IE7), we are out of luck + var hasCORS = 'withCredentials' in request || typeof XDomainRequest !== 'undefined'; - /**** Private functions ****/ - _ignoreNextOnError: function _ignoreNextOnError() { - var self = this; - this._ignoreOnError += 1; - setTimeout(function () { - // onerror should trigger before setTimeout - self._ignoreOnError -= 1; - }); - }, - _triggerEvent: function _triggerEvent(eventType, options) { - // NOTE: `event` is a native browser thing, so let's avoid conflicting wiht it - var evt, key; - if (!this._hasDocument) return; - options = options || {}; - eventType = 'raven' + eventType.substr(0, 1).toUpperCase() + eventType.substr(1); + if (!hasCORS) return; - if (_document.createEvent) { - evt = _document.createEvent('HTMLEvents'); - evt.initEvent(eventType, true, true); + if ('withCredentials' in request) { + request.onreadystatechange = function() { + if (request.readyState !== 4) { + return; + } else if (request.status === 200) { + opts.onSuccess && opts.onSuccess(); + } else if (opts.onError) { + var err = new Error('Sentry error code: ' + request.status); + err.request = request; + opts.onError(err); + } + }; } else { - evt = _document.createEventObject(); - evt.eventType = eventType; - } + request = new XDomainRequest(); + // xdomainrequest cannot go http -> https (or vice versa), + // so always use protocol relative + url = url.replace(/^https?:/, ''); - for (key in options) { - if (hasKey(options, key)) { - evt[key] = options[key]; + // onreadystatechange not supported by XDomainRequest + if (opts.onSuccess) { + request.onload = opts.onSuccess; } - } - - if (_document.createEvent) { - // IE9 if standards - _document.dispatchEvent(evt); - } else { - // IE8 regardless of Quirks or Standards - // IE9 if quirks - try { - _document.fireEvent('on' + evt.eventType.toLowerCase(), evt); - } catch (e) {// Do nothing + if (opts.onError) { + request.onerror = function() { + var err = new Error('Sentry error code: XDomainRequest'); + err.request = request; + opts.onError(err); + }; } } - }, - /** - * Wraps addEventListener to capture UI breadcrumbs - * @param evtName the event name (e.g. "click") - * @returns {Function} - * @private - */ - _breadcrumbEventHandler: function _breadcrumbEventHandler(evtName) { - var self = this; - return function (evt) { - // reset keypress timeout; e.g. triggering a 'click' after - // a 'keypress' will reset the keypress debounce so that a new - // set of keypresses can be recorded - self._keypressTimeout = null; // It's possible this handler might trigger multiple times for the same - // event (e.g. event propagation through node ancestors). Ignore if we've - // already captured the event. + request.open('POST', url); - if (self._lastCapturedEvent === evt) return; - self._lastCapturedEvent = evt; // try/catch both: - // - accessing evt.target (see getsentry/raven-js#838, #768) - // - `htmlTreeAsString` because it's complex, and just accessing the DOM incorrectly - // can throw an exception in some circumstances. + if (evaluatedHeaders) { + each(evaluatedHeaders, function(key, value) { + request.setRequestHeader(key, value); + }); + } - var target; + request.send(stringify(opts.data)); + }, - try { - target = htmlTreeAsString(evt.target); - } catch (e) { - target = ''; + _evaluateHash: function(hash) { + var evaluated = {}; + + for (var key in hash) { + if (hash.hasOwnProperty(key)) { + var value = hash[key]; + evaluated[key] = typeof value === 'function' ? value() : value; } + } - self.captureBreadcrumb({ - category: 'ui.' + evtName, - // e.g. ui.click, ui.input - message: target - }); - }; + return evaluated; }, - /** - * Wraps addEventListener to capture keypress UI events - * @returns {Function} - * @private - */ - _keypressEventHandler: function _keypressEventHandler() { - var self = this, - debounceDuration = 1000; // milliseconds - // TODO: if somehow user switches keypress target before - // debounce timeout is triggered, we will only capture - // a single breadcrumb from the FIRST target (acceptable?) - - return function (evt) { - var target; + _logDebug: function(level) { + // We allow `Raven.debug` and `Raven.config(DSN, { debug: true })` to not make backward incompatible API change + if ( + this._originalConsoleMethods[level] && + (this.debug || this._globalOptions.debug) + ) { + // In IE<10 console methods do not have their own 'apply' method + Function.prototype.apply.call( + this._originalConsoleMethods[level], + this._originalConsole, + [].slice.call(arguments, 1) + ); + } + }, - try { - target = evt.target; - } catch (e) { - // just accessing event properties can throw an exception in some rare circumstances - // see: https://github.com/getsentry/raven-js/issues/838 - return; - } + _mergeContext: function(key, context) { + if (isUndefined(context)) { + delete this._globalContext[key]; + } else { + this._globalContext[key] = objectMerge(this._globalContext[key] || {}, context); + } + } +}; - var tagName = target && target.tagName; // only consider keypress events on actual input elements - // this will disregard keypresses targeting body (e.g. tabbing - // through elements, hotkeys, etc) +// Deprecations +Raven.prototype.setUser = Raven.prototype.setUserContext; +Raven.prototype.setReleaseContext = Raven.prototype.setRelease; - if (!tagName || tagName !== 'INPUT' && tagName !== 'TEXTAREA' && !target.isContentEditable) return; // record first keypress in a series, but ignore subsequent - // keypresses until debounce clears +module.exports = Raven; - var timeout = self._keypressTimeout; +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"10":10,"11":11,"4":4,"5":5,"8":8,"9":9}],7:[function(_dereq_,module,exports){ +(function (global){ +/** + * Enforces a single instance of the Raven client, and the + * main entry point for Raven. If you are a consumer of the + * Raven library, you SHOULD load this file (vs raven.js). + **/ - if (!timeout) { - self._breadcrumbEventHandler('input')(evt); - } +var RavenConstructor = _dereq_(6); - clearTimeout(timeout); - self._keypressTimeout = setTimeout(function () { - self._keypressTimeout = null; - }, debounceDuration); - }; - }, +// This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) +var _window = + typeof window !== 'undefined' + ? window + : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; +var _Raven = _window.Raven; - /** - * Captures a breadcrumb of type "navigation", normalizing input URLs - * @param to the originating URL - * @param from the target URL - * @private - */ - _captureUrlChange: function _captureUrlChange(from, to) { - var parsedLoc = parseUrl(this._location.href); - var parsedTo = parseUrl(to); - var parsedFrom = parseUrl(from); // because onpopstate only tells you the "new" (to) value of location.href, and - // not the previous (from) value, we need to track the value of the current URL - // state ourselves +var Raven = new RavenConstructor(); - this._lastHref = to; // Use only the path component of the URL if the URL matches the current - // document (almost all the time when using pushState) +/* + * Allow multiple versions of Raven to be installed. + * Strip Raven from the global context and returns the instance. + * + * @return {Raven} + */ +Raven.noConflict = function() { + _window.Raven = _Raven; + return Raven; +}; - if (parsedLoc.protocol === parsedTo.protocol && parsedLoc.host === parsedTo.host) to = parsedTo.relative; - if (parsedLoc.protocol === parsedFrom.protocol && parsedLoc.host === parsedFrom.host) from = parsedFrom.relative; - this.captureBreadcrumb({ - category: 'navigation', - data: { - to: to, - from: from - } - }); - }, - _patchFunctionToString: function _patchFunctionToString() { - var self = this; - self._originalFunctionToString = Function.prototype.toString; // eslint-disable-next-line no-extend-native +Raven.afterLoad(); - Function.prototype.toString = function () { - if (typeof this === 'function' && this.__raven__) { - return self._originalFunctionToString.apply(this.__orig__, arguments); - } +module.exports = Raven; - return self._originalFunctionToString.apply(this, arguments); - }; - }, - _unpatchFunctionToString: function _unpatchFunctionToString() { - if (this._originalFunctionToString) { - // eslint-disable-next-line no-extend-native - Function.prototype.toString = this._originalFunctionToString; - } - }, - - /** - * Wrap timer functions and event targets to catch errors and provide - * better metadata. - */ - _instrumentTryCatch: function _instrumentTryCatch() { - var self = this; - var wrappedBuiltIns = self._wrappedBuiltIns; +/** + * DISCLAIMER: + * + * Expose `Client` constructor for cases where user want to track multiple "sub-applications" in one larger app. + * It's not meant to be used by a wide audience, so pleaaase make sure that you know what you're doing before using it. + * Accidentally calling `install` multiple times, may result in an unexpected behavior that's very hard to debug. + * + * It's called `Client' to be in-line with Raven Node implementation. + * + * HOWTO: + * + * import Raven from 'raven-js'; + * + * const someAppReporter = new Raven.Client(); + * const someOtherAppReporter = new Raven.Client(); + * + * someAppReporter.config('__DSN__', { + * ...config goes here + * }); + * + * someOtherAppReporter.config('__OTHER_DSN__', { + * ...config goes here + * }); + * + * someAppReporter.captureMessage(...); + * someAppReporter.captureException(...); + * someAppReporter.captureBreadcrumb(...); + * + * someOtherAppReporter.captureMessage(...); + * someOtherAppReporter.captureException(...); + * someOtherAppReporter.captureBreadcrumb(...); + * + * It should "just work". + */ +module.exports.Client = RavenConstructor; - function wrapTimeFn(orig) { - return function (fn, t) { - // preserve arity - // Make a copy of the arguments to prevent deoptimization - // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments - var args = new Array(arguments.length); +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"6":6}],8:[function(_dereq_,module,exports){ +(function (global){ +var stringify = _dereq_(10); - for (var i = 0; i < args.length; ++i) { - args[i] = arguments[i]; - } +var _window = + typeof window !== 'undefined' + ? window + : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; - var originalCallback = args[0]; +function isObject(what) { + return typeof what === 'object' && what !== null; +} - if (isFunction(originalCallback)) { - args[0] = self.wrap(originalCallback); - } // IE < 9 doesn't support .call/.apply on setInterval/setTimeout, but it - // also supports only two arguments and doesn't care what this is, so we - // can just call the original function directly. +// Yanked from https://git.io/vS8DV re-used under CC0 +// with some tiny modifications +function isError(value) { + switch ({}.toString.call(value)) { + case '[object Error]': + return true; + case '[object Exception]': + return true; + case '[object DOMException]': + return true; + default: + return value instanceof Error; + } +} +function isErrorEvent(value) { + return supportsErrorEvent() && {}.toString.call(value) === '[object ErrorEvent]'; +} - if (orig.apply) { - return orig.apply(this, args); - } else { - return orig(args[0], args[1]); - } - }; - } +function isUndefined(what) { + return what === void 0; +} - var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; +function isFunction(what) { + return typeof what === 'function'; +} - function wrapEventTarget(global) { - var proto = _window$1[global] && _window$1[global].prototype; +function isPlainObject(what) { + return Object.prototype.toString.call(what) === '[object Object]'; +} - if (proto && proto.hasOwnProperty && proto.hasOwnProperty('addEventListener')) { - fill(proto, 'addEventListener', function (orig) { - return function (evtName, fn, capture, secure) { - // preserve arity - try { - if (fn && fn.handleEvent) { - fn.handleEvent = self.wrap(fn.handleEvent); - } - } catch (err) {} // can sometimes get 'Permission denied to access property "handle Event' - // More breadcrumb DOM capture ... done here and not in `_instrumentBreadcrumbs` - // so that we don't have more than one wrapper function +function isString(what) { + return Object.prototype.toString.call(what) === '[object String]'; +} +function isArray(what) { + return Object.prototype.toString.call(what) === '[object Array]'; +} - var before, clickHandler, keypressHandler; +function isEmptyObject(what) { + if (!isPlainObject(what)) return false; - if (autoBreadcrumbs && autoBreadcrumbs.dom && (global === 'EventTarget' || global === 'Node')) { - // NOTE: generating multiple handlers per addEventListener invocation, should - // revisit and verify we can just use one (almost certainly) - clickHandler = self._breadcrumbEventHandler('click'); - keypressHandler = self._keypressEventHandler(); + for (var _ in what) { + if (what.hasOwnProperty(_)) { + return false; + } + } + return true; +} - before = function before(evt) { - // need to intercept every DOM event in `before` argument, in case that - // same wrapped method is re-used for different events (e.g. mousemove THEN click) - // see #724 - if (!evt) return; - var eventType; +function supportsErrorEvent() { + try { + new ErrorEvent(''); // eslint-disable-line no-new + return true; + } catch (e) { + return false; + } +} - try { - eventType = evt.type; - } catch (e) { - // just accessing event properties can throw an exception in some rare circumstances - // see: https://github.com/getsentry/raven-js/issues/838 - return; - } +function supportsFetch() { + if (!('fetch' in _window)) return false; - if (eventType === 'click') return clickHandler(evt);else if (eventType === 'keypress') return keypressHandler(evt); - }; - } + try { + new Headers(); // eslint-disable-line no-new + new Request(''); // eslint-disable-line no-new + new Response(); // eslint-disable-line no-new + return true; + } catch (e) { + return false; + } +} - return orig.call(this, evtName, self.wrap(fn, undefined, before), capture, secure); - }; - }, wrappedBuiltIns); - fill(proto, 'removeEventListener', function (orig) { - return function (evt, fn, capture, secure) { - try { - fn = fn && (fn.__raven_wrapper__ ? fn.__raven_wrapper__ : fn); - } catch (e) {// ignore, accessing __raven_wrapper__ will throw in some Selenium environments - } +// Despite all stars in the sky saying that Edge supports old draft syntax, aka 'never', 'always', 'origin' and 'default +// https://caniuse.com/#feat=referrer-policy +// It doesn't. And it throw exception instead of ignoring this parameter... +// REF: https://github.com/getsentry/raven-js/issues/1233 +function supportsReferrerPolicy() { + if (!supportsFetch()) return false; - return orig.call(this, evt, fn, capture, secure); - }; - }, wrappedBuiltIns); - } - } + try { + // eslint-disable-next-line no-new + new Request('pickleRick', { + referrerPolicy: 'origin' + }); + return true; + } catch (e) { + return false; + } +} - fill(_window$1, 'setTimeout', wrapTimeFn, wrappedBuiltIns); - fill(_window$1, 'setInterval', wrapTimeFn, wrappedBuiltIns); +function supportsPromiseRejectionEvent() { + return typeof PromiseRejectionEvent === 'function'; +} - if (_window$1.requestAnimationFrame) { - fill(_window$1, 'requestAnimationFrame', function (orig) { - return function (cb) { - return orig(self.wrap(cb)); - }; - }, wrappedBuiltIns); - } // event targets borrowed from bugsnag-js: - // https://github.com/bugsnag/bugsnag-js/blob/master/src/bugsnag.js#L666 +function wrappedCallback(callback) { + function dataCallback(data, original) { + var normalizedData = callback(data) || data; + if (original) { + return original(normalizedData) || normalizedData; + } + return normalizedData; + } + return dataCallback; +} - var eventTargets = ['EventTarget', 'Window', 'Node', 'ApplicationCache', 'AudioTrackList', 'ChannelMergerNode', 'CryptoOperation', 'EventSource', 'FileReader', 'HTMLUnknownElement', 'IDBDatabase', 'IDBRequest', 'IDBTransaction', 'KeyOperation', 'MediaController', 'MessagePort', 'ModalWindow', 'Notification', 'SVGElementInstance', 'Screen', 'TextTrack', 'TextTrackCue', 'TextTrackList', 'WebSocket', 'WebSocketWorker', 'Worker', 'XMLHttpRequest', 'XMLHttpRequestEventTarget', 'XMLHttpRequestUpload']; +function each(obj, callback) { + var i, j; - for (var i = 0; i < eventTargets.length; i++) { - wrapEventTarget(eventTargets[i]); + if (isUndefined(obj.length)) { + for (i in obj) { + if (hasKey(obj, i)) { + callback.call(null, i, obj[i]); + } } - }, - - /** - * Instrument browser built-ins w/ breadcrumb capturing - * - XMLHttpRequests - * - DOM interactions (click/typing) - * - window.location changes - * - console - * - * Can be disabled or individually configured via the `autoBreadcrumbs` config option - */ - _instrumentBreadcrumbs: function _instrumentBreadcrumbs() { - var self = this; - var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; - var wrappedBuiltIns = self._wrappedBuiltIns; - - function wrapProp(prop, xhr) { - if (prop in xhr && isFunction(xhr[prop])) { - fill(xhr, prop, function (orig) { - return self.wrap(orig); - }); // intentionally don't track filled methods on XHR instances + } else { + j = obj.length; + if (j) { + for (i = 0; i < j; i++) { + callback.call(null, i, obj[i]); } } + } +} - if (autoBreadcrumbs.xhr && 'XMLHttpRequest' in _window$1) { - var xhrproto = XMLHttpRequest.prototype; - fill(xhrproto, 'open', function (origOpen) { - return function (method, url) { - // preserve arity - // if Sentry key appears in URL, don't capture - if (isString(url) && url.indexOf(self._globalKey) === -1) { - this.__raven_xhr = { - method: method, - url: url, - status_code: null - }; - } - - return origOpen.apply(this, arguments); - }; - }, wrappedBuiltIns); - fill(xhrproto, 'send', function (origSend) { - return function () { - // preserve arity - var xhr = this; - - function onreadystatechangeHandler() { - if (xhr.__raven_xhr && xhr.readyState === 4) { - try { - // touching statusCode in some platforms throws - // an exception - xhr.__raven_xhr.status_code = xhr.status; - } catch (e) { - /* do nothing */ - } +function objectMerge(obj1, obj2) { + if (!obj2) { + return obj1; + } + each(obj2, function(key, value) { + obj1[key] = value; + }); + return obj1; +} - self.captureBreadcrumb({ - type: 'http', - category: 'xhr', - data: xhr.__raven_xhr - }); - } - } +/** + * This function is only used for react-native. + * react-native freezes object that have already been sent over the + * js bridge. We need this function in order to check if the object is frozen. + * So it's ok that objectFrozen returns false if Object.isFrozen is not + * supported because it's not relevant for other "platforms". See related issue: + * https://github.com/getsentry/react-native-sentry/issues/57 + */ +function objectFrozen(obj) { + if (!Object.isFrozen) { + return false; + } + return Object.isFrozen(obj); +} - var props = ['onload', 'onerror', 'onprogress']; +function truncate(str, max) { + if (typeof max !== 'number') { + throw new Error('2nd argument to `truncate` function should be a number'); + } + if (typeof str !== 'string' || max === 0) { + return str; + } + return str.length <= max ? str : str.substr(0, max) + '\u2026'; +} - for (var j = 0; j < props.length; j++) { - wrapProp(props[j], xhr); - } +/** + * hasKey, a better form of hasOwnProperty + * Example: hasKey(MainHostObject, property) === true/false + * + * @param {Object} host object to check property + * @param {string} key to check + */ +function hasKey(object, key) { + return Object.prototype.hasOwnProperty.call(object, key); +} - if ('onreadystatechange' in xhr && isFunction(xhr.onreadystatechange)) { - fill(xhr, 'onreadystatechange', function (orig) { - return self.wrap(orig, undefined, onreadystatechangeHandler); - } - /* intentionally don't track this instrumentation */ - ); - } else { - // if onreadystatechange wasn't actually set by the page on this xhr, we - // are free to set our own and capture the breadcrumb - xhr.onreadystatechange = onreadystatechangeHandler; - } +function joinRegExp(patterns) { + // Combine an array of regular expressions and strings into one large regexp + // Be mad. + var sources = [], + i = 0, + len = patterns.length, + pattern; - return origSend.apply(this, arguments); - }; - }, wrappedBuiltIns); + for (; i < len; i++) { + pattern = patterns[i]; + if (isString(pattern)) { + // If it's a string, we need to escape it + // Taken from: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions + sources.push(pattern.replace(/([.*+?^=!:${}()|\[\]\/\\])/g, '\\$1')); + } else if (pattern && pattern.source) { + // If it's a regexp already, we want to extract the source + sources.push(pattern.source); } + // Intentionally skip other cases + } + return new RegExp(sources.join('|'), 'i'); +} - if (autoBreadcrumbs.xhr && supportsFetch()) { - fill(_window$1, 'fetch', function (origFetch) { - return function () { - // preserve arity - // Make a copy of the arguments to prevent deoptimization - // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments - var args = new Array(arguments.length); - - for (var i = 0; i < args.length; ++i) { - args[i] = arguments[i]; - } +function urlencode(o) { + var pairs = []; + each(o, function(key, value) { + pairs.push(encodeURIComponent(key) + '=' + encodeURIComponent(value)); + }); + return pairs.join('&'); +} - var fetchInput = args[0]; - var method = 'GET'; - var url; +// borrowed from https://tools.ietf.org/html/rfc3986#appendix-B +// intentionally using regex and not href parsing trick because React Native and other +// environments where DOM might not be available +function parseUrl(url) { + if (typeof url !== 'string') return {}; + var match = url.match(/^(([^:\/?#]+):)?(\/\/([^\/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?$/); - if (typeof fetchInput === 'string') { - url = fetchInput; - } else if ('Request' in _window$1 && fetchInput instanceof _window$1.Request) { - url = fetchInput.url; + // coerce to undefined values to empty string so we don't get 'undefined' + var query = match[6] || ''; + var fragment = match[8] || ''; + return { + protocol: match[2], + host: match[4], + path: match[5], + relative: match[5] + query + fragment // everything minus origin + }; +} +function uuid4() { + var crypto = _window.crypto || _window.msCrypto; - if (fetchInput.method) { - method = fetchInput.method; - } - } else { - url = '' + fetchInput; - } // if Sentry key appears in URL, don't capture, as it's our own request + if (!isUndefined(crypto) && crypto.getRandomValues) { + // Use window.crypto API if available + // eslint-disable-next-line no-undef + var arr = new Uint16Array(8); + crypto.getRandomValues(arr); + // set 4 in byte 7 + arr[3] = (arr[3] & 0xfff) | 0x4000; + // set 2 most significant bits of byte 9 to '10' + arr[4] = (arr[4] & 0x3fff) | 0x8000; - if (url.indexOf(self._globalKey) !== -1) { - return origFetch.apply(this, args); - } + var pad = function(num) { + var v = num.toString(16); + while (v.length < 4) { + v = '0' + v; + } + return v; + }; - if (args[1] && args[1].method) { - method = args[1].method; - } + return ( + pad(arr[0]) + + pad(arr[1]) + + pad(arr[2]) + + pad(arr[3]) + + pad(arr[4]) + + pad(arr[5]) + + pad(arr[6]) + + pad(arr[7]) + ); + } else { + // http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/2117523#2117523 + return 'xxxxxxxxxxxx4xxxyxxxxxxxxxxxxxxx'.replace(/[xy]/g, function(c) { + var r = (Math.random() * 16) | 0, + v = c === 'x' ? r : (r & 0x3) | 0x8; + return v.toString(16); + }); + } +} - var fetchData = { - method: method, - url: url, - status_code: null - }; - return origFetch.apply(this, args).then(function (response) { - fetchData.status_code = response.status; - self.captureBreadcrumb({ - type: 'http', - category: 'fetch', - data: fetchData - }); - return response; - }); - }; - }, wrappedBuiltIns); - } // Capture breadcrumbs from any click that is unhandled / bubbled up all the way - // to the document. Do this before we instrument addEventListener. +/** + * Given a child DOM element, returns a query-selector statement describing that + * and its ancestors + * e.g. [HTMLElement] => body > div > input#foo.btn[name=baz] + * @param elem + * @returns {string} + */ +function htmlTreeAsString(elem) { + /* eslint no-extra-parens:0*/ + var MAX_TRAVERSE_HEIGHT = 5, + MAX_OUTPUT_LEN = 80, + out = [], + height = 0, + len = 0, + separator = ' > ', + sepLength = separator.length, + nextStr; + while (elem && height++ < MAX_TRAVERSE_HEIGHT) { + nextStr = htmlElementAsString(elem); + // bail out if + // - nextStr is the 'html' element + // - the length of the string that would be created exceeds MAX_OUTPUT_LEN + // (ignore this limit if we are on the first iteration) + if ( + nextStr === 'html' || + (height > 1 && len + out.length * sepLength + nextStr.length >= MAX_OUTPUT_LEN) + ) { + break; + } - if (autoBreadcrumbs.dom && this._hasDocument) { - if (_document.addEventListener) { - _document.addEventListener('click', self._breadcrumbEventHandler('click'), false); + out.push(nextStr); - _document.addEventListener('keypress', self._keypressEventHandler(), false); - } else { - // IE8 Compatibility - _document.attachEvent('onclick', self._breadcrumbEventHandler('click')); + len += nextStr.length; + elem = elem.parentNode; + } - _document.attachEvent('onkeypress', self._keypressEventHandler()); - } - } // record navigation (URL) changes - // NOTE: in Chrome App environment, touching history.pushState, *even inside - // a try/catch block*, will cause Chrome to output an error to console.error - // borrowed from: https://github.com/angular/angular.js/pull/13945/files + return out.reverse().join(separator); +} +/** + * Returns a simple, query-selector representation of a DOM element + * e.g. [HTMLElement] => input#foo.btn[name=baz] + * @param HTMLElement + * @returns {string} + */ +function htmlElementAsString(elem) { + var out = [], + className, + classes, + key, + attr, + i; - var chrome = _window$1.chrome; - var isChromePackagedApp = chrome && chrome.app && chrome.app.runtime; - var hasPushAndReplaceState = !isChromePackagedApp && _window$1.history && history.pushState && history.replaceState; + if (!elem || !elem.tagName) { + return ''; + } - if (autoBreadcrumbs.location && hasPushAndReplaceState) { - // TODO: remove onpopstate handler on uninstall() - var oldOnPopState = _window$1.onpopstate; + out.push(elem.tagName.toLowerCase()); + if (elem.id) { + out.push('#' + elem.id); + } - _window$1.onpopstate = function () { - var currentHref = self._location.href; + className = elem.className; + if (className && isString(className)) { + classes = className.split(/\s+/); + for (i = 0; i < classes.length; i++) { + out.push('.' + classes[i]); + } + } + var attrWhitelist = ['type', 'name', 'title', 'alt']; + for (i = 0; i < attrWhitelist.length; i++) { + key = attrWhitelist[i]; + attr = elem.getAttribute(key); + if (attr) { + out.push('[' + key + '="' + attr + '"]'); + } + } + return out.join(''); +} - self._captureUrlChange(self._lastHref, currentHref); +/** + * Returns true if either a OR b is truthy, but not both + */ +function isOnlyOneTruthy(a, b) { + return !!(!!a ^ !!b); +} - if (oldOnPopState) { - return oldOnPopState.apply(this, arguments); - } - }; +/** + * Returns true if both parameters are undefined + */ +function isBothUndefined(a, b) { + return isUndefined(a) && isUndefined(b); +} - var historyReplacementFunction = function historyReplacementFunction(origHistFunction) { - // note history.pushState.length is 0; intentionally not declaring - // params to preserve 0 arity - return function () - /* state, title, url */ - { - var url = arguments.length > 2 ? arguments[2] : undefined; // url argument is optional +/** + * Returns true if the two input exception interfaces have the same content + */ +function isSameException(ex1, ex2) { + if (isOnlyOneTruthy(ex1, ex2)) return false; - if (url) { - // coerce to string (this is what pushState does) - self._captureUrlChange(self._lastHref, url + ''); - } + ex1 = ex1.values[0]; + ex2 = ex2.values[0]; - return origHistFunction.apply(this, arguments); - }; - }; + if (ex1.type !== ex2.type || ex1.value !== ex2.value) return false; - fill(history, 'pushState', historyReplacementFunction, wrappedBuiltIns); - fill(history, 'replaceState', historyReplacementFunction, wrappedBuiltIns); - } + // in case both stacktraces are undefined, we can't decide so default to false + if (isBothUndefined(ex1.stacktrace, ex2.stacktrace)) return false; - if (autoBreadcrumbs.console && 'console' in _window$1 && console.log) { - // console - var consoleMethodCallback = function consoleMethodCallback(msg, data) { - self.captureBreadcrumb({ - message: msg, - level: data.level, - category: 'console' - }); - }; + return isSameStacktrace(ex1.stacktrace, ex2.stacktrace); +} - each(['debug', 'info', 'warn', 'error', 'log'], function (_, level) { - wrapConsoleMethod(console, level, consoleMethodCallback); - }); - } - }, - _restoreBuiltIns: function _restoreBuiltIns() { - // restore any wrapped builtins - var builtin; +/** + * Returns true if the two input stack trace interfaces have the same content + */ +function isSameStacktrace(stack1, stack2) { + if (isOnlyOneTruthy(stack1, stack2)) return false; - while (this._wrappedBuiltIns.length) { - builtin = this._wrappedBuiltIns.shift(); - var obj = builtin[0], - name = builtin[1], - orig = builtin[2]; - obj[name] = orig; - } - }, - _restoreConsole: function _restoreConsole() { - // eslint-disable-next-line guard-for-in - for (var method in this._originalConsoleMethods) { - this._originalConsole[method] = this._originalConsoleMethods[method]; - } - }, - _drainPlugins: function _drainPlugins() { - var self = this; // FIX ME TODO + var frames1 = stack1.frames; + var frames2 = stack2.frames; - each(this._plugins, function (_, plugin) { - var installer = plugin[0]; - var args = plugin[1]; - installer.apply(self, [self].concat(args)); - }); - }, - _parseDSN: function _parseDSN(str) { - var m = dsnPattern.exec(str), - dsn = {}, - i = 7; + // Exit early if frame count differs + if (frames1.length !== frames2.length) return false; + + // Iterate through every frame; bail out if anything differs + var a, b; + for (var i = 0; i < frames1.length; i++) { + a = frames1[i]; + b = frames2[i]; + if ( + a.filename !== b.filename || + a.lineno !== b.lineno || + a.colno !== b.colno || + a['function'] !== b['function'] + ) + return false; + } + return true; +} + +/** + * Polyfill a method + * @param obj object e.g. `document` + * @param name method name present on object e.g. `addEventListener` + * @param replacement replacement function + * @param track {optional} record instrumentation to an array + */ +function fill(obj, name, replacement, track) { + if (obj == null) return; + var orig = obj[name]; + obj[name] = replacement(orig); + obj[name].__raven__ = true; + obj[name].__orig__ = orig; + if (track) { + track.push([obj, name, orig]); + } +} + +/** + * Join values in array + * @param input array of values to be joined together + * @param delimiter string to be placed in-between values + * @returns {string} + */ +function safeJoin(input, delimiter) { + if (!isArray(input)) return ''; + + var output = []; + for (var i = 0; i < input.length; i++) { try { - while (i--) { - dsn[dsnKeys[i]] = m[i] || ''; - } + output.push(String(input[i])); } catch (e) { - throw new configError('Invalid DSN: ' + str); + output.push('[value cannot be serialized]'); } + } - if (dsn.pass && !this._globalOptions.allowSecretKey) { - throw new configError('Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key'); - } + return output.join(delimiter); +} - return dsn; - }, - _getGlobalServer: function _getGlobalServer(uri) { - // assemble the endpoint from the uri pieces - var globalServer = '//' + uri.host + (uri.port ? ':' + uri.port : ''); +// Default Node.js REPL depth +var MAX_SERIALIZE_EXCEPTION_DEPTH = 3; +// 50kB, as 100kB is max payload size, so half sounds reasonable +var MAX_SERIALIZE_EXCEPTION_SIZE = 50 * 1024; +var MAX_SERIALIZE_KEYS_LENGTH = 40; - if (uri.protocol) { - globalServer = uri.protocol + ':' + globalServer; - } +function utf8Length(value) { + return ~-encodeURI(value).split(/%..|./).length; +} - return globalServer; - }, - _handleOnErrorStackInfo: function _handleOnErrorStackInfo() { - // if we are intentionally ignoring errors via onerror, bail out - if (!this._ignoreOnError) { - this._handleStackInfo.apply(this, arguments); - } - }, - _handleStackInfo: function _handleStackInfo(stackInfo, options) { - var frames = this._prepareFrames(stackInfo, options); +function jsonSize(value) { + return utf8Length(JSON.stringify(value)); +} - this._triggerEvent('handle', { - stackInfo: stackInfo, - options: options - }); +function serializeValue(value) { + if (typeof value === 'string') { + var maxLength = 40; + return truncate(value, maxLength); + } else if ( + typeof value === 'number' || + typeof value === 'boolean' || + typeof value === 'undefined' + ) { + return value; + } - this._processException(stackInfo.name, stackInfo.message, stackInfo.url, stackInfo.lineno, frames, options); - }, - _prepareFrames: function _prepareFrames(stackInfo, options) { - var self = this; - var frames = []; + var type = Object.prototype.toString.call(value); - if (stackInfo.stack && stackInfo.stack.length) { - each(stackInfo.stack, function (i, stack) { - var frame = self._normalizeFrame(stack, stackInfo.url); + // Node.js REPL notation + if (type === '[object Object]') return '[Object]'; + if (type === '[object Array]') return '[Array]'; + if (type === '[object Function]') + return value.name ? '[Function: ' + value.name + ']' : '[Function]'; - if (frame) { - frames.push(frame); - } - }); // e.g. frames captured via captureMessage throw + return value; +} - if (options && options.trimHeadFrames) { - for (var j = 0; j < options.trimHeadFrames && j < frames.length; j++) { - frames[j].in_app = false; - } - } - } +function serializeObject(value, depth) { + if (depth === 0) return serializeValue(value); + + if (isPlainObject(value)) { + return Object.keys(value).reduce(function(acc, key) { + acc[key] = serializeObject(value[key], depth - 1); + return acc; + }, {}); + } else if (Array.isArray(value)) { + return value.map(function(val) { + return serializeObject(val, depth - 1); + }); + } - frames = frames.slice(0, this._globalOptions.stackTraceLimit); - return frames; - }, - _normalizeFrame: function _normalizeFrame(frame, stackInfoUrl) { - // normalize the frames data - var normalized = { - filename: frame.url, - lineno: frame.line, - colno: frame.column, - function: frame.func || '?' - }; // Case when we don't have any information about the error - // E.g. throwing a string or raw object, instead of an `Error` in Firefox - // Generating synthetic error doesn't add any value here - // - // We should probably somehow let a user know that they should fix their code + return serializeValue(value); +} - if (!frame.url) { - normalized.filename = stackInfoUrl; // fallback to whole stacks url from onerror handler - } +function serializeException(ex, depth, maxSize) { + if (!isPlainObject(ex)) return ex; - normalized.in_app = !( // determine if an exception came from outside of our app - // first we check the global includePaths list. - !!this._globalOptions.includePaths.test && !this._globalOptions.includePaths.test(normalized.filename) || // Now we check for fun, if the function name is Raven or TraceKit - /(Raven|TraceKit)\./.test(normalized['function']) || // finally, we do a last ditch effort and check for raven.min.js - /raven\.(min\.)?js$/.test(normalized.filename)); - return normalized; - }, - _processException: function _processException(type, message, fileurl, lineno, frames, options) { - var prefixedMessage = (type ? type + ': ' : '') + (message || ''); + depth = typeof depth !== 'number' ? MAX_SERIALIZE_EXCEPTION_DEPTH : depth; + maxSize = typeof depth !== 'number' ? MAX_SERIALIZE_EXCEPTION_SIZE : maxSize; - if (!!this._globalOptions.ignoreErrors.test && (this._globalOptions.ignoreErrors.test(message) || this._globalOptions.ignoreErrors.test(prefixedMessage))) { - return; - } + var serialized = serializeObject(ex, depth); - var stacktrace; + if (jsonSize(stringify(serialized)) > maxSize) { + return serializeException(ex, depth - 1); + } - if (frames && frames.length) { - fileurl = frames[0].filename || fileurl; // Sentry expects frames oldest to newest - // and JS sends them as newest to oldest + return serialized; +} - frames.reverse(); - stacktrace = { - frames: frames - }; - } else if (fileurl) { - stacktrace = { - frames: [{ - filename: fileurl, - lineno: lineno, - in_app: true - }] - }; - } +function serializeKeysForMessage(keys, maxLength) { + if (typeof keys === 'number' || typeof keys === 'string') return keys.toString(); + if (!Array.isArray(keys)) return ''; - if (!!this._globalOptions.ignoreUrls.test && this._globalOptions.ignoreUrls.test(fileurl)) { - return; - } + keys = keys.filter(function(key) { + return typeof key === 'string'; + }); + if (keys.length === 0) return '[object has no keys]'; - if (!!this._globalOptions.whitelistUrls.test && !this._globalOptions.whitelistUrls.test(fileurl)) { - return; - } + maxLength = typeof maxLength !== 'number' ? MAX_SERIALIZE_KEYS_LENGTH : maxLength; + if (keys[0].length >= maxLength) return keys[0]; - var data = objectMerge({ - // sentry.interfaces.Exception - exception: { - values: [{ - type: type, - value: message, - stacktrace: stacktrace - }] - }, - culprit: fileurl - }, options); // Fire away! + for (var usedKeys = keys.length; usedKeys > 0; usedKeys--) { + var serialized = keys.slice(0, usedKeys).join(', '); + if (serialized.length > maxLength) continue; + if (usedKeys === keys.length) return serialized; + return serialized + '\u2026'; + } - this._send(data); - }, - _trimPacket: function _trimPacket(data) { - // For now, we only want to truncate the two different messages - // but this could/should be expanded to just trim everything - var max = this._globalOptions.maxMessageLength; + return ''; +} - if (data.message) { - data.message = truncate(data.message, max); +function sanitize(input, sanitizeKeys) { + if (!isArray(sanitizeKeys) || (isArray(sanitizeKeys) && sanitizeKeys.length === 0)) + return input; + + var sanitizeRegExp = joinRegExp(sanitizeKeys); + var sanitizeMask = '********'; + var safeInput; + + try { + safeInput = JSON.parse(stringify(input)); + } catch (o_O) { + return input; + } + + function sanitizeWorker(workerInput) { + if (isArray(workerInput)) { + return workerInput.map(function(val) { + return sanitizeWorker(val); + }); } - if (data.exception) { - var exception = data.exception.values[0]; - exception.value = truncate(exception.value, max); + if (isPlainObject(workerInput)) { + return Object.keys(workerInput).reduce(function(acc, k) { + if (sanitizeRegExp.test(k)) { + acc[k] = sanitizeMask; + } else { + acc[k] = sanitizeWorker(workerInput[k]); + } + return acc; + }, {}); } - var request = data.request; + return workerInput; + } - if (request) { - if (request.url) { - request.url = truncate(request.url, this._globalOptions.maxUrlLength); - } + return sanitizeWorker(safeInput); +} - if (request.Referer) { - request.Referer = truncate(request.Referer, this._globalOptions.maxUrlLength); - } - } +module.exports = { + isObject: isObject, + isError: isError, + isErrorEvent: isErrorEvent, + isUndefined: isUndefined, + isFunction: isFunction, + isPlainObject: isPlainObject, + isString: isString, + isArray: isArray, + isEmptyObject: isEmptyObject, + supportsErrorEvent: supportsErrorEvent, + supportsFetch: supportsFetch, + supportsReferrerPolicy: supportsReferrerPolicy, + supportsPromiseRejectionEvent: supportsPromiseRejectionEvent, + wrappedCallback: wrappedCallback, + each: each, + objectMerge: objectMerge, + truncate: truncate, + objectFrozen: objectFrozen, + hasKey: hasKey, + joinRegExp: joinRegExp, + urlencode: urlencode, + uuid4: uuid4, + htmlTreeAsString: htmlTreeAsString, + htmlElementAsString: htmlElementAsString, + isSameException: isSameException, + isSameStacktrace: isSameStacktrace, + parseUrl: parseUrl, + fill: fill, + safeJoin: safeJoin, + serializeException: serializeException, + serializeKeysForMessage: serializeKeysForMessage, + sanitize: sanitize +}; - if (data.breadcrumbs && data.breadcrumbs.values) this._trimBreadcrumbs(data.breadcrumbs); - return data; - }, +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"10":10}],9:[function(_dereq_,module,exports){ +(function (global){ +var utils = _dereq_(8); - /** - * Truncate breadcrumb values (right now just URLs) - */ - _trimBreadcrumbs: function _trimBreadcrumbs(breadcrumbs) { - // known breadcrumb properties with urls - // TODO: also consider arbitrary prop values that start with (https?)?:// - var urlProps = ['to', 'from', 'url'], - urlProp, - crumb, - data; +/* + TraceKit - Cross brower stack traces - for (var i = 0; i < breadcrumbs.values.length; ++i) { - crumb = breadcrumbs.values[i]; - if (!crumb.hasOwnProperty('data') || !isObject(crumb.data) || objectFrozen(crumb.data)) continue; - data = objectMerge({}, crumb.data); + This was originally forked from github.com/occ/TraceKit, but has since been + largely re-written and is now maintained as part of raven-js. Tests for + this are in test/vendor. - for (var j = 0; j < urlProps.length; ++j) { - urlProp = urlProps[j]; + MIT license +*/ - if (data.hasOwnProperty(urlProp) && data[urlProp]) { - data[urlProp] = truncate(data[urlProp], this._globalOptions.maxUrlLength); - } - } +var TraceKit = { + collectWindowErrors: true, + debug: false +}; - breadcrumbs.values[i].data = data; - } - }, - _getHttpData: function _getHttpData() { - if (!this._hasNavigator && !this._hasDocument) return; - var httpData = {}; +// This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) +var _window = + typeof window !== 'undefined' + ? window + : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; - if (this._hasNavigator && _navigator.userAgent) { - httpData.headers = { - 'User-Agent': navigator.userAgent - }; - } // Check in `window` instead of `document`, as we may be in ServiceWorker environment +// global reference to slice +var _slice = [].slice; +var UNKNOWN_FUNCTION = '?'; +// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error#Error_types +var ERROR_TYPES_RE = /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/; - if (_window$1.location && _window$1.location.href) { - httpData.url = _window$1.location.href; - } +function getLocationHref() { + if (typeof document === 'undefined' || document.location == null) return ''; - if (this._hasDocument && _document.referrer) { - if (!httpData.headers) httpData.headers = {}; - httpData.headers.Referer = _document.referrer; - } + return document.location.href; +} - return httpData; - }, - _resetBackoff: function _resetBackoff() { - this._backoffDuration = 0; - this._backoffStart = null; - }, - _shouldBackoff: function _shouldBackoff() { - return this._backoffDuration && now() - this._backoffStart < this._backoffDuration; - }, +/** + * TraceKit.report: cross-browser processing of unhandled exceptions + * + * Syntax: + * TraceKit.report.subscribe(function(stackInfo) { ... }) + * TraceKit.report.unsubscribe(function(stackInfo) { ... }) + * TraceKit.report(exception) + * try { ...code... } catch(ex) { TraceKit.report(ex); } + * + * Supports: + * - Firefox: full stack trace with line numbers, plus column number + * on top frame; column number is not guaranteed + * - Opera: full stack trace with line and column numbers + * - Chrome: full stack trace with line and column numbers + * - Safari: line and column number for the top frame only; some frames + * may be missing, and column number is not guaranteed + * - IE: line and column number for the top frame only; some frames + * may be missing, and column number is not guaranteed + * + * In theory, TraceKit should work on all of the following versions: + * - IE5.5+ (only 8.0 tested) + * - Firefox 0.9+ (only 3.5+ tested) + * - Opera 7+ (only 10.50 tested; versions 9 and earlier may require + * Exceptions Have Stacktrace to be enabled in opera:config) + * - Safari 3+ (only 4+ tested) + * - Chrome 1+ (only 5+ tested) + * - Konqueror 3.5+ (untested) + * + * Requires TraceKit.computeStackTrace. + * + * Tries to catch all unhandled exceptions and report them to the + * subscribed handlers. Please note that TraceKit.report will rethrow the + * exception. This is REQUIRED in order to get a useful stack trace in IE. + * If the exception does not reach the top of the browser, you will only + * get a stack trace from the point where TraceKit.report was called. + * + * Handlers receive a stackInfo object as described in the + * TraceKit.computeStackTrace docs. + */ +TraceKit.report = (function reportModuleWrapper() { + var handlers = [], + lastArgs = null, + lastException = null, + lastExceptionStack = null; /** - * Returns true if the in-process data payload matches the signature - * of the previously-sent data - * - * NOTE: This has to be done at this level because TraceKit can generate - * data from window.onerror WITHOUT an exception object (IE8, IE9, - * other old browsers). This can take the form of an "exception" - * data object with a single frame (derived from the onerror args). + * Add a crash handler. + * @param {Function} handler */ - _isRepeatData: function _isRepeatData(current) { - var last = this._lastData; - if (!last || current.message !== last.message || // defined for captureMessage - current.culprit !== last.culprit // defined for captureException/onerror - ) return false; // Stacktrace interface (i.e. from captureMessage) + function subscribe(handler) { + installGlobalHandler(); + handlers.push(handler); + } - if (current.stacktrace || last.stacktrace) { - return isSameStacktrace(current.stacktrace, last.stacktrace); - } else if (current.exception || last.exception) { - // Exception interface (i.e. from captureException/onerror) - return isSameException(current.exception, last.exception); + /** + * Remove a crash handler. + * @param {Function} handler + */ + function unsubscribe(handler) { + for (var i = handlers.length - 1; i >= 0; --i) { + if (handlers[i] === handler) { + handlers.splice(i, 1); + } } + } - return true; - }, - _setBackoffState: function _setBackoffState(request) { - // If we are already in a backoff state, don't change anything - if (this._shouldBackoff()) { + /** + * Remove all crash handlers. + */ + function unsubscribeAll() { + uninstallGlobalHandler(); + handlers = []; + } + + /** + * Dispatch stack information to all handlers. + * @param {Object.} stack + */ + function notifyHandlers(stack, isWindowError) { + var exception = null; + if (isWindowError && !TraceKit.collectWindowErrors) { return; } - - var status = request.status; // 400 - project_id doesn't exist or some other fatal - // 401 - invalid/revoked dsn - // 429 - too many requests - - if (!(status === 400 || status === 401 || status === 429)) return; - var retry; - - try { - // If Retry-After is not in Access-Control-Expose-Headers, most - // browsers will throw an exception trying to access it - if (supportsFetch()) { - retry = request.headers.get('Retry-After'); - } else { - retry = request.getResponseHeader('Retry-After'); - } // Retry-After is returned in seconds - - - retry = parseInt(retry, 10) * 1000; - } catch (e) { - /* eslint no-empty:0 */ + for (var i in handlers) { + if (handlers.hasOwnProperty(i)) { + try { + handlers[i].apply(null, [stack].concat(_slice.call(arguments, 2))); + } catch (inner) { + exception = inner; + } + } } - this._backoffDuration = retry ? // If Sentry server returned a Retry-After value, use it - retry : // Otherwise, double the last backoff duration (starts at 1 sec) - this._backoffDuration * 2 || 1000; - this._backoffStart = now(); - }, - _send: function _send(data) { - var globalOptions = this._globalOptions; + if (exception) { + throw exception; + } + } - var baseData = { - project: this._globalProject, - logger: globalOptions.logger, - platform: 'javascript' - }, - httpData = this._getHttpData(); + var _oldOnerrorHandler, _onErrorHandlerInstalled; - if (httpData) { - baseData.request = httpData; - } // HACK: delete `trimHeadFrames` to prevent from appearing in outbound payload + /** + * Ensures all global unhandled exceptions are recorded. + * Supported by Gecko and IE. + * @param {string} msg Error message. + * @param {string} url URL of script that generated the exception. + * @param {(number|string)} lineNo The line number at which the error + * occurred. + * @param {?(number|string)} colNo The column number at which the error + * occurred. + * @param {?Error} ex The actual Error object. + */ + function traceKitWindowOnError(msg, url, lineNo, colNo, ex) { + var stack = null; + // If 'ex' is ErrorEvent, get real Error from inside + var exception = utils.isErrorEvent(ex) ? ex.error : ex; + // If 'msg' is ErrorEvent, get real message from inside + var message = utils.isErrorEvent(msg) ? msg.message : msg; + if (lastExceptionStack) { + TraceKit.computeStackTrace.augmentStackTraceWithInitialElement( + lastExceptionStack, + url, + lineNo, + message + ); + processLastException(); + } else if (exception && utils.isError(exception)) { + // non-string `exception` arg; attempt to extract stack trace - if (data.trimHeadFrames) delete data.trimHeadFrames; - data = objectMerge(baseData, data); // Merge in the tags and extra separately since objectMerge doesn't handle a deep merge + // New chrome and blink send along a real error object + // Let's just report that like a normal error. + // See: https://mikewest.org/2013/08/debugging-runtime-errors-with-window-onerror + stack = TraceKit.computeStackTrace(exception); + notifyHandlers(stack, true); + } else { + var location = { + url: url, + line: lineNo, + column: colNo + }; - data.tags = objectMerge(objectMerge({}, this._globalContext.tags), data.tags); - data.extra = objectMerge(objectMerge({}, this._globalContext.extra), data.extra); // Send along our own collected metadata with extra + var name = undefined; + var groups; - data.extra['session:duration'] = now() - this._startTime; - - if (this._breadcrumbs && this._breadcrumbs.length > 0) { - // intentionally make shallow copy so that additions - // to breadcrumbs aren't accidentally sent in this request - data.breadcrumbs = { - values: [].slice.call(this._breadcrumbs, 0) - }; - } - - if (this._globalContext.user) { - // sentry.interfaces.User - data.user = this._globalContext.user; - } // Include the environment if it's defined in globalOptions - - - if (globalOptions.environment) data.environment = globalOptions.environment; // Include the release if it's defined in globalOptions - - if (globalOptions.release) data.release = globalOptions.release; // Include server_name if it's defined in globalOptions - - if (globalOptions.serverName) data.server_name = globalOptions.serverName; // Cleanup empty properties before sending them to the server - - Object.keys(data).forEach(function (key) { - if (data[key] == null || data[key] === '' || isEmptyObject(data[key])) { - delete data[key]; + if ({}.toString.call(message) === '[object String]') { + var groups = message.match(ERROR_TYPES_RE); + if (groups) { + name = groups[1]; + message = groups[2]; + } } - }); - - if (isFunction(globalOptions.dataCallback)) { - data = globalOptions.dataCallback(data) || data; - } // Why?????????? + location.func = UNKNOWN_FUNCTION; - if (!data || isEmptyObject(data)) { - return; - } // Check if the request should be filtered or not - - - if (isFunction(globalOptions.shouldSendCallback) && !globalOptions.shouldSendCallback(data)) { - return; - } // Backoff state: Sentry server previously responded w/ an error (e.g. 429 - too many requests), - // so drop requests until "cool-off" period has elapsed. - - - if (this._shouldBackoff()) { - this._logDebug('warn', 'Raven dropped error due to backoff: ', data); - - return; + stack = { + name: name, + message: message, + url: getLocationHref(), + stack: [location] + }; + notifyHandlers(stack, true); } - if (typeof globalOptions.sampleRate === 'number') { - if (Math.random() < globalOptions.sampleRate) { - this._sendProcessedPayload(data); - } - } else { - this._sendProcessedPayload(data); + if (_oldOnerrorHandler) { + return _oldOnerrorHandler.apply(this, arguments); } - }, - _getUuid: function _getUuid() { - return uuid4(); - }, - _sendProcessedPayload: function _sendProcessedPayload(data, callback) { - var self = this; - var globalOptions = this._globalOptions; - if (!this.isSetup()) return; // Try and clean up the packet before sending by truncating long values - data = this._trimPacket(data); // ideally duplicate error testing should occur *before* dataCallback/shouldSendCallback, - // but this would require copying an un-truncated copy of the data packet, which can be - // arbitrarily deep (extra_data) -- could be worthwhile? will revisit - - if (!this._globalOptions.allowDuplicates && this._isRepeatData(data)) { - this._logDebug('warn', 'Raven dropped repeat event: ', data); + return false; + } + function installGlobalHandler() { + if (_onErrorHandlerInstalled) { return; - } // Send along an event_id if not explicitly passed. - // This event_id can be used to reference the error within Sentry itself. - // Set lastEventId after we know the error should actually be sent - - - this._lastEventId = data.event_id || (data.event_id = this._getUuid()); // Store outbound payload after trim - - this._lastData = data; + } + _oldOnerrorHandler = _window.onerror; + _window.onerror = traceKitWindowOnError; + _onErrorHandlerInstalled = true; + } - this._logDebug('debug', 'Raven about to send:', data); + function uninstallGlobalHandler() { + if (!_onErrorHandlerInstalled) { + return; + } + _window.onerror = _oldOnerrorHandler; + _onErrorHandlerInstalled = false; + _oldOnerrorHandler = undefined; + } - var auth = { - sentry_version: '7', - sentry_client: 'raven-js/' + this.VERSION, - sentry_key: this._globalKey - }; + function processLastException() { + var _lastExceptionStack = lastExceptionStack, + _lastArgs = lastArgs; + lastArgs = null; + lastExceptionStack = null; + lastException = null; + notifyHandlers.apply(null, [_lastExceptionStack, false].concat(_lastArgs)); + } - if (this._globalSecret) { - auth.sentry_secret = this._globalSecret; + /** + * Reports an unhandled Error to TraceKit. + * @param {Error} ex + * @param {?boolean} rethrow If false, do not re-throw the exception. + * Only used for window.onerror to not cause an infinite loop of + * rethrowing. + */ + function report(ex, rethrow) { + var args = _slice.call(arguments, 1); + if (lastExceptionStack) { + if (lastException === ex) { + return; // already caught by an inner catch block, ignore + } else { + processLastException(); + } } - var exception = data.exception && data.exception.values[0]; // only capture 'sentry' breadcrumb is autoBreadcrumbs is truthy + var stack = TraceKit.computeStackTrace(ex); + lastExceptionStack = stack; + lastException = ex; + lastArgs = args; - if (this._globalOptions.autoBreadcrumbs && this._globalOptions.autoBreadcrumbs.sentry) { - this.captureBreadcrumb({ - category: 'sentry', - message: exception ? (exception.type ? exception.type + ': ' : '') + exception.value : data.message, - event_id: data.event_id, - level: data.level || 'error' // presume error unless specified + // If the stack trace is incomplete, wait for 2 seconds for + // slow slow IE to see if onerror occurs or not before reporting + // this exception; otherwise, we will end up with an incomplete + // stack trace + setTimeout(function() { + if (lastException === ex) { + processLastException(); + } + }, stack.incomplete ? 2000 : 0); - }); + if (rethrow !== false) { + throw ex; // re-throw to propagate to the top level (and cause window.onerror) } + } - var url = this._globalEndpoint; + report.subscribe = subscribe; + report.unsubscribe = unsubscribe; + report.uninstall = unsubscribeAll; + return report; +})(); - (globalOptions.transport || this._makeRequest).call(this, { - url: url, - auth: auth, - data: data, - options: globalOptions, - onSuccess: function success() { - self._resetBackoff(); +/** + * TraceKit.computeStackTrace: cross-browser stack traces in JavaScript + * + * Syntax: + * s = TraceKit.computeStackTrace(exception) // consider using TraceKit.report instead (see below) + * Returns: + * s.name - exception name + * s.message - exception message + * s.stack[i].url - JavaScript or HTML file URL + * s.stack[i].func - function name, or empty for anonymous functions (if guessing did not work) + * s.stack[i].args - arguments passed to the function, if known + * s.stack[i].line - line number, if known + * s.stack[i].column - column number, if known + * + * Supports: + * - Firefox: full stack trace with line numbers and unreliable column + * number on top frame + * - Opera 10: full stack trace with line and column numbers + * - Opera 9-: full stack trace with line numbers + * - Chrome: full stack trace with line and column numbers + * - Safari: line and column number for the topmost stacktrace element + * only + * - IE: no line numbers whatsoever + * + * Tries to guess names of anonymous functions by looking for assignments + * in the source code. In IE and Safari, we have to guess source file names + * by searching for function bodies inside all page scripts. This will not + * work for scripts that are loaded cross-domain. + * Here be dragons: some function names may be guessed incorrectly, and + * duplicate functions may be mismatched. + * + * TraceKit.computeStackTrace should only be used for tracing purposes. + * Logging of unhandled exceptions should be done with TraceKit.report, + * which builds on top of TraceKit.computeStackTrace and provides better + * IE support by utilizing the window.onerror event to retrieve information + * about the top of the stack. + * + * Note: In IE and Safari, no stack trace is recorded on the Error object, + * so computeStackTrace instead walks its *own* chain of callers. + * This means that: + * * in Safari, some methods may be missing from the stack trace; + * * in IE, the topmost function in the stack trace will always be the + * caller of computeStackTrace. + * + * This is okay for tracing (because you are likely to be calling + * computeStackTrace from the function you want to be the topmost element + * of the stack trace anyway), but not okay for logging unhandled + * exceptions (because your catch block will likely be far away from the + * inner function that actually caused the exception). + * + */ +TraceKit.computeStackTrace = (function computeStackTraceWrapper() { + // Contents of Exception in various browsers. + // + // SAFARI: + // ex.message = Can't find variable: qq + // ex.line = 59 + // ex.sourceId = 580238192 + // ex.sourceURL = http://... + // ex.expressionBeginOffset = 96 + // ex.expressionCaretOffset = 98 + // ex.expressionEndOffset = 98 + // ex.name = ReferenceError + // + // FIREFOX: + // ex.message = qq is not defined + // ex.fileName = http://... + // ex.lineNumber = 59 + // ex.columnNumber = 69 + // ex.stack = ...stack trace... (see the example below) + // ex.name = ReferenceError + // + // CHROME: + // ex.message = qq is not defined + // ex.name = ReferenceError + // ex.type = not_defined + // ex.arguments = ['aa'] + // ex.stack = ...stack trace... + // + // INTERNET EXPLORER: + // ex.message = ... + // ex.name = ReferenceError + // + // OPERA: + // ex.message = ...message... (see the example below) + // ex.name = ReferenceError + // ex.opera#sourceloc = 11 (pretty much useless, duplicates the info in ex.message) + // ex.stacktrace = n/a; see 'opera:config#UserPrefs|Exceptions Have Stacktrace' - self._triggerEvent('success', { - data: data, - src: url - }); + /** + * Computes stack trace information from the stack property. + * Chrome and Gecko use this property. + * @param {Error} ex + * @return {?Object.} Stack trace information. + */ + function computeStackTraceFromStackProp(ex) { + if (typeof ex.stack === 'undefined' || !ex.stack) return; - callback && callback(); - }, - onError: function failure(error) { - self._logDebug('error', 'Raven transport failed to send: ', error); + var chrome = /^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i; + var winjs = /^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i; + // NOTE: blob urls are now supposed to always have an origin, therefore it's format + // which is `blob:http://url/path/with-some-uuid`, is matched by `blob.*?:\/` as well + var gecko = /^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i; + // Used to additionally parse URL/line/column from eval frames + var geckoEval = /(\S+) line (\d+)(?: > eval line \d+)* > eval/i; + var chromeEval = /\((\S*)(?::(\d+))(?::(\d+))\)/; + var lines = ex.stack.split('\n'); + var stack = []; + var submatch; + var parts; + var element; + var reference = /^(.*) is undefined$/.exec(ex.message); - if (error.request) { - self._setBackoffState(error.request); + for (var i = 0, j = lines.length; i < j; ++i) { + if ((parts = chrome.exec(lines[i]))) { + var isNative = parts[2] && parts[2].indexOf('native') === 0; // start of line + var isEval = parts[2] && parts[2].indexOf('eval') === 0; // start of line + if (isEval && (submatch = chromeEval.exec(parts[2]))) { + // throw out eval line/column and use top-most line/column number + parts[2] = submatch[1]; // url + parts[3] = submatch[2]; // line + parts[4] = submatch[3]; // column } + element = { + url: !isNative ? parts[2] : null, + func: parts[1] || UNKNOWN_FUNCTION, + args: isNative ? [parts[2]] : [], + line: parts[3] ? +parts[3] : null, + column: parts[4] ? +parts[4] : null + }; + } else if ((parts = winjs.exec(lines[i]))) { + element = { + url: parts[2], + func: parts[1] || UNKNOWN_FUNCTION, + args: [], + line: +parts[3], + column: parts[4] ? +parts[4] : null + }; + } else if ((parts = gecko.exec(lines[i]))) { + var isEval = parts[3] && parts[3].indexOf(' > eval') > -1; + if (isEval && (submatch = geckoEval.exec(parts[3]))) { + // throw out eval line/column and use top-most line number + parts[3] = submatch[1]; + parts[4] = submatch[2]; + parts[5] = null; // no column when eval + } else if (i === 0 && !parts[5] && typeof ex.columnNumber !== 'undefined') { + // FireFox uses this awesome columnNumber property for its top frame + // Also note, Firefox's column number is 0-based and everything else expects 1-based, + // so adding 1 + // NOTE: this hack doesn't work if top-most frame is eval + stack[0].column = ex.columnNumber + 1; + } + element = { + url: parts[3], + func: parts[1] || UNKNOWN_FUNCTION, + args: parts[2] ? parts[2].split(',') : [], + line: parts[4] ? +parts[4] : null, + column: parts[5] ? +parts[5] : null + }; + } else { + continue; + } - self._triggerEvent('failure', { - data: data, - src: url - }); - - error = error || new Error('Raven send failed (no additional details provided)'); - callback && callback(error); + if (!element.func && element.line) { + element.func = UNKNOWN_FUNCTION; } - }); - }, - _makeRequest: function _makeRequest(opts) { - // Auth is intentionally sent as part of query string (NOT as custom HTTP header) to avoid preflight CORS requests - var url = opts.url + '?' + urlencode(opts.auth); - var evaluatedHeaders = null; - var evaluatedFetchParameters = {}; - if (opts.options.headers) { - evaluatedHeaders = this._evaluateHash(opts.options.headers); + stack.push(element); } - if (opts.options.fetchParameters) { - evaluatedFetchParameters = this._evaluateHash(opts.options.fetchParameters); + if (!stack.length) { + return null; } - if (supportsFetch()) { - evaluatedFetchParameters.body = stringify_1(opts.data); - var defaultFetchOptions = objectMerge({}, this._fetchDefaults); - var fetchOptions = objectMerge(defaultFetchOptions, evaluatedFetchParameters); + return { + name: ex.name, + message: ex.message, + url: getLocationHref(), + stack: stack + }; + } - if (evaluatedHeaders) { - fetchOptions.headers = evaluatedHeaders; - } + /** + * Adds information about the first frame to incomplete stack traces. + * Safari and IE require this to get complete data on the first frame. + * @param {Object.} stackInfo Stack trace information from + * one of the compute* methods. + * @param {string} url The URL of the script that caused an error. + * @param {(number|string)} lineNo The line number of the script that + * caused an error. + * @param {string=} message The error generated by the browser, which + * hopefully contains the name of the object that caused the error. + * @return {boolean} Whether or not the stack information was + * augmented. + */ + function augmentStackTraceWithInitialElement(stackInfo, url, lineNo, message) { + var initial = { + url: url, + line: lineNo + }; - return _window$1.fetch(url, fetchOptions).then(function (response) { - if (response.ok) { - opts.onSuccess && opts.onSuccess(); - } else { - var error = new Error('Sentry error code: ' + response.status); // It's called request only to keep compatibility with XHR interface - // and not add more redundant checks in setBackoffState method + if (initial.url && initial.line) { + stackInfo.incomplete = false; - error.request = response; - opts.onError && opts.onError(error); + if (!initial.func) { + initial.func = UNKNOWN_FUNCTION; + } + + if (stackInfo.stack.length > 0) { + if (stackInfo.stack[0].url === initial.url) { + if (stackInfo.stack[0].line === initial.line) { + return false; // already in stack trace + } else if ( + !stackInfo.stack[0].line && + stackInfo.stack[0].func === initial.func + ) { + stackInfo.stack[0].line = initial.line; + return false; + } } - })['catch'](function () { - opts.onError && opts.onError(new Error('Sentry error code: network unavailable')); - }); + } + + stackInfo.stack.unshift(initial); + stackInfo.partial = true; + return true; + } else { + stackInfo.incomplete = true; } - var request = _window$1.XMLHttpRequest && new _window$1.XMLHttpRequest(); - if (!request) return; // if browser doesn't support CORS (e.g. IE7), we are out of luck + return false; + } - var hasCORS = 'withCredentials' in request || typeof XDomainRequest !== 'undefined'; - if (!hasCORS) return; + /** + * Computes stack trace information by walking the arguments.caller + * chain at the time the exception occurred. This will cause earlier + * frames to be missed but is the only way to get any stack trace in + * Safari and IE. The top frame is restored by + * {@link augmentStackTraceWithInitialElement}. + * @param {Error} ex + * @return {?Object.} Stack trace information. + */ + function computeStackTraceByWalkingCallerChain(ex, depth) { + var functionName = /function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i, + stack = [], + funcs = {}, + recursion = false, + parts, + item, + source; + + for ( + var curr = computeStackTraceByWalkingCallerChain.caller; + curr && !recursion; + curr = curr.caller + ) { + if (curr === computeStackTrace || curr === TraceKit.report) { + // console.log('skipping internal function'); + continue; + } - if ('withCredentials' in request) { - request.onreadystatechange = function () { - if (request.readyState !== 4) { - return; - } else if (request.status === 200) { - opts.onSuccess && opts.onSuccess(); - } else if (opts.onError) { - var err = new Error('Sentry error code: ' + request.status); - err.request = request; - opts.onError(err); - } + item = { + url: null, + func: UNKNOWN_FUNCTION, + line: null, + column: null }; - } else { - request = new XDomainRequest(); // xdomainrequest cannot go http -> https (or vice versa), - // so always use protocol relative - url = url.replace(/^https?:/, ''); // onreadystatechange not supported by XDomainRequest + if (curr.name) { + item.func = curr.name; + } else if ((parts = functionName.exec(curr.toString()))) { + item.func = parts[1]; + } - if (opts.onSuccess) { - request.onload = opts.onSuccess; + if (typeof item.func === 'undefined') { + try { + item.func = parts.input.substring(0, parts.input.indexOf('{')); + } catch (e) {} } - if (opts.onError) { - request.onerror = function () { - var err = new Error('Sentry error code: XDomainRequest'); - err.request = request; - opts.onError(err); - }; + if (funcs['' + curr]) { + recursion = true; + } else { + funcs['' + curr] = true; } - } - request.open('POST', url); + stack.push(item); + } - if (evaluatedHeaders) { - each(evaluatedHeaders, function (key, value) { - request.setRequestHeader(key, value); - }); + if (depth) { + // console.log('depth is ' + depth); + // console.log('stack is ' + stack.length); + stack.splice(0, depth); } - request.send(stringify_1(opts.data)); - }, - _evaluateHash: function _evaluateHash(hash) { - var evaluated = {}; + var result = { + name: ex.name, + message: ex.message, + url: getLocationHref(), + stack: stack + }; + augmentStackTraceWithInitialElement( + result, + ex.sourceURL || ex.fileName, + ex.line || ex.lineNumber, + ex.message || ex.description + ); + return result; + } - for (var key in hash) { - if (hash.hasOwnProperty(key)) { - var value = hash[key]; - evaluated[key] = typeof value === 'function' ? value() : value; + /** + * Computes a stack trace for an exception. + * @param {Error} ex + * @param {(string|number)=} depth + */ + function computeStackTrace(ex, depth) { + var stack = null; + depth = depth == null ? 0 : +depth; + + try { + stack = computeStackTraceFromStackProp(ex); + if (stack) { + return stack; + } + } catch (e) { + if (TraceKit.debug) { + throw e; } } - return evaluated; - }, - _logDebug: function _logDebug(level) { - if (this._originalConsoleMethods[level] && this.debug) { - // In IE<10 console methods do not have their own 'apply' method - Function.prototype.apply.call(this._originalConsoleMethods[level], this._originalConsole, [].slice.call(arguments, 1)); - } - }, - _mergeContext: function _mergeContext(key, context) { - if (isUndefined(context)) { - delete this._globalContext[key]; - } else { - this._globalContext[key] = objectMerge(this._globalContext[key] || {}, context); + try { + stack = computeStackTraceByWalkingCallerChain(ex, depth + 1); + if (stack) { + return stack; + } + } catch (e) { + if (TraceKit.debug) { + throw e; + } } + return { + name: ex.name, + message: ex.message, + url: getLocationHref() + }; } -}; // Deprecations -Raven$1.prototype.setUser = Raven$1.prototype.setUserContext; -Raven$1.prototype.setReleaseContext = Raven$1.prototype.setRelease; -var raven = Raven$1; + computeStackTrace.augmentStackTraceWithInitialElement = augmentStackTraceWithInitialElement; + computeStackTrace.computeStackTraceFromStackProp = computeStackTraceFromStackProp; -/** - * Enforces a single instance of the Raven client, and the - * main entry point for Raven. If you are a consumer of the - * Raven library, you SHOULD load this file (vs raven.js). - **/ -// This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) + return computeStackTrace; +})(); -var _window = typeof window !== 'undefined' ? window : typeof commonjsGlobal !== 'undefined' ? commonjsGlobal : typeof self !== 'undefined' ? self : {}; +module.exports = TraceKit; -var _Raven = _window.Raven; -var Raven = new raven(); +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"8":8}],10:[function(_dereq_,module,exports){ /* - * Allow multiple versions of Raven to be installed. - * Strip Raven from the global context and returns the instance. - * - * @return {Raven} - */ + json-stringify-safe + Like JSON.stringify, but doesn't throw on circular references. -Raven.noConflict = function () { - _window.Raven = _Raven; - return Raven; -}; + Originally forked from https://github.com/isaacs/json-stringify-safe + version 5.0.1 on 3/8/2017 and modified to handle Errors serialization + and IE8 compatibility. Tests for this are in test/vendor. -Raven.afterLoad(); -var singleton = Raven; + ISC license: https://github.com/isaacs/json-stringify-safe/blob/master/LICENSE +*/ -/** - * console plugin - * - * Monkey patches console.* calls into Sentry messages with - * their appropriate log levels. (Experimental) - * - * Options: - * - * `levels`: An array of levels (methods on `console`) to report to Sentry. - * Defaults to debug, info, warn, and error. - */ +exports = module.exports = stringify; +exports.getSerialize = serializer; -var wrapConsoleMethod$1 = console$1.wrapMethod; +function indexOf(haystack, needle) { + for (var i = 0; i < haystack.length; ++i) { + if (haystack[i] === needle) return i; + } + return -1; +} -function consolePlugin(Raven, console, pluginOptions) { - console = console || window.console || {}; - pluginOptions = pluginOptions || {}; - var logLevels = pluginOptions.levels || ['debug', 'info', 'warn', 'error']; - if ('assert' in console) logLevels.push('assert'); +function stringify(obj, replacer, spaces, cycleReplacer) { + return JSON.stringify(obj, serializer(replacer, cycleReplacer), spaces); +} - var callback = function callback(msg, data) { - Raven.captureMessage(msg, data); +// https://github.com/ftlabs/js-abbreviate/blob/fa709e5f139e7770a71827b1893f22418097fbda/index.js#L95-L106 +function stringifyError(value) { + var err = { + // These properties are implemented as magical getters and don't show up in for in + stack: value.stack, + message: value.message, + name: value.name }; - var level = logLevels.pop(); - - while (level) { - wrapConsoleMethod$1(console, level, callback); - level = logLevels.pop(); + for (var i in value) { + if (Object.prototype.hasOwnProperty.call(value, i)) { + err[i] = value[i]; + } } -} - -var console$3 = consolePlugin; -/** - * Ember.js plugin - * - * Patches event handler callbacks and ajax callbacks. - */ -function emberPlugin(Raven, Ember) { - Ember = Ember || window.Ember; // quit if Ember isn't on the page + return err; +} - if (!Ember) return; - var _oldOnError = Ember.onerror; +function serializer(replacer, cycleReplacer) { + var stack = []; + var keys = []; - Ember.onerror = function EmberOnError(error) { - Raven.captureException(error); + if (cycleReplacer == null) { + cycleReplacer = function(key, value) { + if (stack[0] === value) { + return '[Circular ~]'; + } + return '[Circular ~.' + keys.slice(0, indexOf(stack, value)).join('.') + ']'; + }; + } - if (typeof _oldOnError === 'function') { - _oldOnError.call(this, error); - } - }; + return function(key, value) { + if (stack.length > 0) { + var thisPos = indexOf(stack, this); + ~thisPos ? stack.splice(thisPos + 1) : stack.push(this); + ~thisPos ? keys.splice(thisPos, Infinity, key) : keys.push(key); - Ember.RSVP.on('error', function (reason) { - if (reason instanceof Error) { - Raven.captureException(reason, { - extra: { - context: 'Unhandled Promise error detected' - } - }); + if (~indexOf(stack, value)) { + value = cycleReplacer.call(this, key, value); + } } else { - Raven.captureMessage('Unhandled Promise error detected', { - extra: { - reason: reason - } - }); + stack.push(value); } - }); -} -var ember = emberPlugin; + return replacer == null + ? value instanceof Error ? stringifyError(value) : value + : replacer.call(this, key, value); + }; +} -/** - * Vue.js 2.0 plugin +},{}],11:[function(_dereq_,module,exports){ +/* + * JavaScript MD5 + * https://github.com/blueimp/JavaScript-MD5 * + * Copyright 2011, Sebastian Tschan + * https://blueimp.net + * + * Licensed under the MIT license: + * https://opensource.org/licenses/MIT + * + * Based on + * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message + * Digest Algorithm, as defined in RFC 1321. + * Version 2.2 Copyright (C) Paul Johnston 1999 - 2009 + * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet + * Distributed under the BSD License + * See http://pajhome.org.uk/crypt/md5 for more info. */ -function formatComponentName(vm) { - if (vm.$root === vm) { - return 'root instance'; - } - var name = vm._isVue ? vm.$options.name || vm.$options._componentTag : vm.name; - return (name ? 'component <' + name + '>' : 'anonymous component') + (vm._isVue && vm.$options.__file ? ' at ' + vm.$options.__file : ''); +/* +* Add integers, wrapping at 2^32. This uses 16-bit operations internally +* to work around bugs in some JS interpreters. +*/ +function safeAdd(x, y) { + var lsw = (x & 0xffff) + (y & 0xffff); + var msw = (x >> 16) + (y >> 16) + (lsw >> 16); + return (msw << 16) | (lsw & 0xffff); } -function vuePlugin(Raven, Vue) { - Vue = Vue || window.Vue; // quit if Vue isn't on the page +/* +* Bitwise rotate a 32-bit number to the left. +*/ +function bitRotateLeft(num, cnt) { + return (num << cnt) | (num >>> (32 - cnt)); +} - if (!Vue || !Vue.config) return; - var _oldOnError = Vue.config.errorHandler; +/* +* These functions implement the four basic operations the algorithm uses. +*/ +function md5cmn(q, a, b, x, s, t) { + return safeAdd(bitRotateLeft(safeAdd(safeAdd(a, q), safeAdd(x, t)), s), b); +} +function md5ff(a, b, c, d, x, s, t) { + return md5cmn((b & c) | (~b & d), a, b, x, s, t); +} +function md5gg(a, b, c, d, x, s, t) { + return md5cmn((b & d) | (c & ~d), a, b, x, s, t); +} +function md5hh(a, b, c, d, x, s, t) { + return md5cmn(b ^ c ^ d, a, b, x, s, t); +} +function md5ii(a, b, c, d, x, s, t) { + return md5cmn(c ^ (b | ~d), a, b, x, s, t); +} - Vue.config.errorHandler = function VueErrorHandler(error, vm, info) { - var metaData = {}; // vm and lifecycleHook are not always available +/* +* Calculate the MD5 of an array of little-endian words, and a bit length. +*/ +function binlMD5(x, len) { + /* append padding */ + x[len >> 5] |= 0x80 << (len % 32); + x[(((len + 64) >>> 9) << 4) + 14] = len; + + var i; + var olda; + var oldb; + var oldc; + var oldd; + var a = 1732584193; + var b = -271733879; + var c = -1732584194; + var d = 271733878; + + for (i = 0; i < x.length; i += 16) { + olda = a; + oldb = b; + oldc = c; + oldd = d; + + a = md5ff(a, b, c, d, x[i], 7, -680876936); + d = md5ff(d, a, b, c, x[i + 1], 12, -389564586); + c = md5ff(c, d, a, b, x[i + 2], 17, 606105819); + b = md5ff(b, c, d, a, x[i + 3], 22, -1044525330); + a = md5ff(a, b, c, d, x[i + 4], 7, -176418897); + d = md5ff(d, a, b, c, x[i + 5], 12, 1200080426); + c = md5ff(c, d, a, b, x[i + 6], 17, -1473231341); + b = md5ff(b, c, d, a, x[i + 7], 22, -45705983); + a = md5ff(a, b, c, d, x[i + 8], 7, 1770035416); + d = md5ff(d, a, b, c, x[i + 9], 12, -1958414417); + c = md5ff(c, d, a, b, x[i + 10], 17, -42063); + b = md5ff(b, c, d, a, x[i + 11], 22, -1990404162); + a = md5ff(a, b, c, d, x[i + 12], 7, 1804603682); + d = md5ff(d, a, b, c, x[i + 13], 12, -40341101); + c = md5ff(c, d, a, b, x[i + 14], 17, -1502002290); + b = md5ff(b, c, d, a, x[i + 15], 22, 1236535329); + + a = md5gg(a, b, c, d, x[i + 1], 5, -165796510); + d = md5gg(d, a, b, c, x[i + 6], 9, -1069501632); + c = md5gg(c, d, a, b, x[i + 11], 14, 643717713); + b = md5gg(b, c, d, a, x[i], 20, -373897302); + a = md5gg(a, b, c, d, x[i + 5], 5, -701558691); + d = md5gg(d, a, b, c, x[i + 10], 9, 38016083); + c = md5gg(c, d, a, b, x[i + 15], 14, -660478335); + b = md5gg(b, c, d, a, x[i + 4], 20, -405537848); + a = md5gg(a, b, c, d, x[i + 9], 5, 568446438); + d = md5gg(d, a, b, c, x[i + 14], 9, -1019803690); + c = md5gg(c, d, a, b, x[i + 3], 14, -187363961); + b = md5gg(b, c, d, a, x[i + 8], 20, 1163531501); + a = md5gg(a, b, c, d, x[i + 13], 5, -1444681467); + d = md5gg(d, a, b, c, x[i + 2], 9, -51403784); + c = md5gg(c, d, a, b, x[i + 7], 14, 1735328473); + b = md5gg(b, c, d, a, x[i + 12], 20, -1926607734); + + a = md5hh(a, b, c, d, x[i + 5], 4, -378558); + d = md5hh(d, a, b, c, x[i + 8], 11, -2022574463); + c = md5hh(c, d, a, b, x[i + 11], 16, 1839030562); + b = md5hh(b, c, d, a, x[i + 14], 23, -35309556); + a = md5hh(a, b, c, d, x[i + 1], 4, -1530992060); + d = md5hh(d, a, b, c, x[i + 4], 11, 1272893353); + c = md5hh(c, d, a, b, x[i + 7], 16, -155497632); + b = md5hh(b, c, d, a, x[i + 10], 23, -1094730640); + a = md5hh(a, b, c, d, x[i + 13], 4, 681279174); + d = md5hh(d, a, b, c, x[i], 11, -358537222); + c = md5hh(c, d, a, b, x[i + 3], 16, -722521979); + b = md5hh(b, c, d, a, x[i + 6], 23, 76029189); + a = md5hh(a, b, c, d, x[i + 9], 4, -640364487); + d = md5hh(d, a, b, c, x[i + 12], 11, -421815835); + c = md5hh(c, d, a, b, x[i + 15], 16, 530742520); + b = md5hh(b, c, d, a, x[i + 2], 23, -995338651); + + a = md5ii(a, b, c, d, x[i], 6, -198630844); + d = md5ii(d, a, b, c, x[i + 7], 10, 1126891415); + c = md5ii(c, d, a, b, x[i + 14], 15, -1416354905); + b = md5ii(b, c, d, a, x[i + 5], 21, -57434055); + a = md5ii(a, b, c, d, x[i + 12], 6, 1700485571); + d = md5ii(d, a, b, c, x[i + 3], 10, -1894986606); + c = md5ii(c, d, a, b, x[i + 10], 15, -1051523); + b = md5ii(b, c, d, a, x[i + 1], 21, -2054922799); + a = md5ii(a, b, c, d, x[i + 8], 6, 1873313359); + d = md5ii(d, a, b, c, x[i + 15], 10, -30611744); + c = md5ii(c, d, a, b, x[i + 6], 15, -1560198380); + b = md5ii(b, c, d, a, x[i + 13], 21, 1309151649); + a = md5ii(a, b, c, d, x[i + 4], 6, -145523070); + d = md5ii(d, a, b, c, x[i + 11], 10, -1120210379); + c = md5ii(c, d, a, b, x[i + 2], 15, 718787259); + b = md5ii(b, c, d, a, x[i + 9], 21, -343485551); + + a = safeAdd(a, olda); + b = safeAdd(b, oldb); + c = safeAdd(c, oldc); + d = safeAdd(d, oldd); + } + return [a, b, c, d]; +} - if (Object.prototype.toString.call(vm) === '[object Object]') { - metaData.componentName = formatComponentName(vm); - metaData.propsData = vm.$options.propsData; - } +/* +* Convert an array of little-endian words to a string +*/ +function binl2rstr(input) { + var i; + var output = ''; + var length32 = input.length * 32; + for (i = 0; i < length32; i += 8) { + output += String.fromCharCode((input[i >> 5] >>> (i % 32)) & 0xff); + } + return output; +} - if (typeof info !== 'undefined') { - metaData.lifecycleHook = info; - } +/* +* Convert a raw string to an array of little-endian words +* Characters >255 have their high-byte silently ignored. +*/ +function rstr2binl(input) { + var i; + var output = []; + output[(input.length >> 2) - 1] = undefined; + for (i = 0; i < output.length; i += 1) { + output[i] = 0; + } + var length8 = input.length * 8; + for (i = 0; i < length8; i += 8) { + output[i >> 5] |= (input.charCodeAt(i / 8) & 0xff) << (i % 32); + } + return output; +} - Raven.captureException(error, { - extra: metaData - }); +/* +* Calculate the MD5 of a raw string +*/ +function rstrMD5(s) { + return binl2rstr(binlMD5(rstr2binl(s), s.length * 8)); +} - if (typeof _oldOnError === 'function') { - _oldOnError.call(this, error, vm, info); - } - }; +/* +* Calculate the HMAC-MD5, of a key and some data (raw strings) +*/ +function rstrHMACMD5(key, data) { + var i; + var bkey = rstr2binl(key); + var ipad = []; + var opad = []; + var hash; + ipad[15] = opad[15] = undefined; + if (bkey.length > 16) { + bkey = binlMD5(bkey, key.length * 8); + } + for (i = 0; i < 16; i += 1) { + ipad[i] = bkey[i] ^ 0x36363636; + opad[i] = bkey[i] ^ 0x5c5c5c5c; + } + hash = binlMD5(ipad.concat(rstr2binl(data)), 512 + data.length * 8); + return binl2rstr(binlMD5(opad.concat(hash), 512 + 128)); +} + +/* +* Convert a raw string to a hex string +*/ +function rstr2hex(input) { + var hexTab = '0123456789abcdef'; + var output = ''; + var x; + var i; + for (i = 0; i < input.length; i += 1) { + x = input.charCodeAt(i); + output += hexTab.charAt((x >>> 4) & 0x0f) + hexTab.charAt(x & 0x0f); + } + return output; } -var vue = vuePlugin; +/* +* Encode a string as utf-8 +*/ +function str2rstrUTF8(input) { + return unescape(encodeURIComponent(input)); +} -/* This file was generated by './scripts/generate-plugin-combinations.js'! */ +/* +* Take string arguments and return either raw or hex encoded strings +*/ +function rawMD5(s) { + return rstrMD5(str2rstrUTF8(s)); +} +function hexMD5(s) { + return rstr2hex(rawMD5(s)); +} +function rawHMACMD5(k, d) { + return rstrHMACMD5(str2rstrUTF8(k), str2rstrUTF8(d)); +} +function hexHMACMD5(k, d) { + return rstr2hex(rawHMACMD5(k, d)); +} -singleton.addPlugin(console$3).addPlugin(ember).addPlugin(vue); -var console_ember_vue = {}; +function md5(string, key, raw) { + if (!key) { + if (!raw) { + return hexMD5(string); + } + return rawMD5(string); + } + if (!raw) { + return hexHMACMD5(key, string); + } + return rawHMACMD5(key, string); +} -return console_ember_vue; +module.exports = md5; -}))); +},{}]},{},[7,1,2,3])(7) +}); \ No newline at end of file diff --git a/dist/console,ember,vue/raven.min.js b/dist/console,ember,vue/raven.min.js index 7b2da3ba3064..7994ad63e0db 100644 --- a/dist/console,ember,vue/raven.min.js +++ b/dist/console,ember,vue/raven.min.js @@ -1,3 +1,4 @@ -/*! Raven.js 3.22.2 (1b6187b) | github.com/getsentry/raven-js */ -!function(a,b){"object"==typeof exports&&"undefined"!=typeof module?module.exports=b():"function"==typeof define&&define.amd?define(b):a.Raven=b()}(this,function(){"use strict";function a(a,b){return b={exports:{}},a(b,b.exports),b.exports}function b(a){return(b="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(a){return typeof a}:function(a){return a&&"function"==typeof Symbol&&a.constructor===Symbol&&a!==Symbol.prototype?"symbol":typeof a})(a)}function c(a){return"object"===b(a)&&null!==a}function d(a){switch({}.toString.call(a)){case"[object Error]":return!0;case"[object Exception]":return!0;case"[object DOMException]":return!0;default:return a instanceof Error}}function e(a){return l()&&"[object ErrorEvent]"==={}.toString.call(a)}function f(a){return void 0===a}function g(a){return"function"==typeof a}function h(a){return"[object Object]"===Object.prototype.toString.call(a)}function i(a){return"[object String]"===Object.prototype.toString.call(a)}function j(a){return"[object Array]"===Object.prototype.toString.call(a)}function k(a){if(!h(a))return!1;for(var b in a)if(a.hasOwnProperty(b))return!1;return!0}function l(){try{return new ErrorEvent(""),!0}catch(a){return!1}}function m(){if(!("fetch"in Q))return!1;try{return new Headers,new Request(""),new Response,!0}catch(a){return!1}}function n(a){function b(b,c){var d=a(b)||b;return c?c(d)||d:d}return b}function o(a,b){var c,d;if(f(a.length))for(c in a)s(a,c)&&b.call(null,c,a[c]);else if(d=a.length)for(c=0;c ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function y(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&i(b))for(c=b.split(/\s+/),f=0;f":"anonymous component")+(a._isVue&&a.$options.__file?" at "+a.$options.__file:"")}function N(a,b){if(b=b||window.Vue,b&&b.config){var c=b.config.errorHandler;b.config.errorHandler=function(b,d,e){var f={};"[object Object]"===Object.prototype.toString.call(d)&&(f.componentName=M(d),f.propsData=d.$options.propsData),"undefined"!=typeof e&&(f.lifecycleHook=e),a.captureException(b,{extra:f}),"function"==typeof c&&c.call(this,b,d,e)}}}var O="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{},P=Object.setPrototypeOf||function(a,b){return a.B=b,a},Q=("object"==typeof Reflect&&Reflect.construct||function(a,b,c){var d,e=[null];return e.push.apply(e,b),d=a.bind.apply(a,e),P(new d,c.prototype)},"undefined"!=typeof window?window:"undefined"!=typeof O?O:"undefined"!=typeof self?self:{}),R={isObject:c,isError:d,isErrorEvent:e,isUndefined:f,isFunction:g,isPlainObject:h,isString:i,isArray:j,isEmptyObject:k,supportsErrorEvent:l,supportsFetch:m,wrappedCallback:n,each:o,objectMerge:p,truncate:r,objectFrozen:q,hasKey:s,joinRegExp:t,urlencode:u,uuid4:w,htmlTreeAsString:x,htmlElementAsString:y,isSameException:B,isSameStacktrace:C,parseUrl:v,fill:D,safeJoin:E},S={collectWindowErrors:!0,debug:!1},T="undefined"!=typeof window?window:"undefined"!=typeof O?O:"undefined"!=typeof self?self:{},U=[].slice,V="?",W=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;S.report=function(){function a(a){f(),l.push(a)}function b(a){for(var b=l.length-1;b>=0;--b)l[b]===a&&l.splice(b,1)}function c(){g(),l=[]}function d(a,b){var c=null;if(!b||S.collectWindowErrors){for(var d in l)if(l.hasOwnProperty(d))try{l[d].apply(null,[a].concat(U.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function e(a,b,c,e,f){var g=null,i=R.isErrorEvent(f)?f.error:f,k=R.isErrorEvent(a)?a.message:a;if(o)S.computeStackTrace.augmentStackTraceWithInitialElement(o,b,c,k),h();else if(i&&R.isError(i))g=S.computeStackTrace(i),d(g,!0);else{var l,m={url:b,line:c,column:e},n=void 0;if("[object String]"==={}.toString.call(k)){var l=k.match(W);l&&(n=l[1],k=l[2])}m.func=V,g={name:n,message:k,url:F(),stack:[m]},d(g,!0)}return!!j&&j.apply(this,arguments)}function f(){k||(j=T.onerror,T.onerror=e,k=!0)}function g(){k&&(T.onerror=j,k=!1,j=void 0)}function h(){var a=o,b=m;m=null,o=null,n=null,d.apply(null,[a,!1].concat(b))}function i(a,b){var c=U.call(arguments,1);if(o){if(n===a)return;h()}var d=S.computeStackTrace(a);if(o=d,n=a,m=c,setTimeout(function(){n===a&&h()},d.incomplete?2e3:0),b!==!1)throw a}var j,k,l=[],m=null,n=null,o=null;return i.subscribe=a,i.unsubscribe=b,i.uninstall=c,i}(),S.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,d,e=/^\s*at (.*?) ?\(((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,f=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|\[native).*?|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,g=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,h=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,i=/\((\S*)(?::(\d+))(?::(\d+))\)/,j=a.stack.split("\n"),k=[],l=(/^(.*) is undefined$/.exec(a.message),0),m=j.length;l eval")>-1;o&&(b=h.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==l||c[5]||"undefined"==typeof a.columnNumber||(k[0].column=a.columnNumber+1),d={url:c[3],func:c[1]||V,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}!d.func&&d.line&&(d.func=V),k.push(d)}return k.length?{name:a.name,message:a.message,url:F(),stack:k}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=V),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,e){for(var f,g,h=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,i=[],j={},k=!1,l=c.caller;l&&!k;l=l.caller)if(l!==d&&l!==S.report){if(g={url:null,func:V,line:null,column:null},l.name?g.func=l.name:(f=h.exec(l.toString()))&&(g.func=f[1]),"undefined"==typeof g.func)try{g.func=f.input.substring(0,f.input.indexOf("{"))}catch(m){}j[""+l]?k=!0:j[""+l]=!0,i.push(g)}e&&i.splice(0,e);var n={name:a.name,message:a.message,url:F(),stack:i};return b(n,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),n}function d(b,d){var e=null;d=null==d?0:+d;try{if(e=a(b))return e}catch(f){if(S.debug)throw f}try{if(e=c(b,d+1))return e}catch(f){if(S.debug)throw f}return{name:b.name,message:b.message,url:F()}}return d.augmentStackTraceWithInitialElement=b,d.computeStackTraceFromStackProp=a,d}();var X=S,Y=a(function(a,b){function c(a,b){for(var c=0;c0){var i=c(d,this);~i?d.splice(i+1):d.push(this),~i?f.splice(i,1/0,g):f.push(g),~c(d,h)&&(h=b.call(this,g,h))}else d.push(h);return null==a?h instanceof Error?e(h):h:a.call(this,g,h)}}b=a.exports=d,b.getSerialize=f});G.prototype=new Error,G.prototype.constructor=G;var Z=G,$=function(a,b,c){var d=a[b],e=a;if(b in a){var f="warn"===b?"warning":b;a[b]=function(){var a=[].slice.call(arguments),g=R.safeJoin(a," "),h={level:f,logger:"console",extra:{arguments:a}};"assert"===b?a[0]===!1&&(g="Assertion failed: "+(R.safeJoin(a.slice(1)," ")||"console.assert"),h.extra.arguments=a.slice(1),c&&c(g,h)):c&&c(g,h),d&&Function.prototype.apply.call(d,e,a)}}},_={wrapMethod:$},aa=R.isError,ba=R.isObject,ca=R.isErrorEvent,da=R.isUndefined,ea=R.isFunction,fa=R.isString,ga=R.isArray,ha=R.isEmptyObject,ia=R.each,ja=R.objectMerge,ka=R.truncate,la=R.objectFrozen,ma=R.hasKey,na=R.joinRegExp,oa=R.urlencode,pa=R.uuid4,qa=R.htmlTreeAsString,ra=R.isSameException,sa=R.isSameStacktrace,ta=R.parseUrl,ua=R.fill,va=R.supportsFetch,wa=_.wrapMethod,xa="source protocol user pass host port path".split(" "),ya=/^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/,za="undefined"!=typeof window?window:"undefined"!=typeof O?O:"undefined"!=typeof self?self:{},Aa=za.document,Ba=za.navigator;J.prototype={VERSION:"3.22.2",debug:!1,TraceKit:X,config:function(a,b){var c=this;if(c.i)return this.C("error","Error: Raven has already been configured"),c;if(!a)return c;var d=c.m;b&&ia(b,function(a,b){"tags"===a||"extra"===a||"user"===a?c.l[a]=b:d[a]=b}),c.setDSN(a),d.ignoreErrors.push(/^Script error\.?$/),d.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/),d.ignoreErrors=na(d.ignoreErrors),d.ignoreUrls=!!d.ignoreUrls.length&&na(d.ignoreUrls),d.whitelistUrls=!!d.whitelistUrls.length&&na(d.whitelistUrls),d.includePaths=na(d.includePaths),d.maxBreadcrumbs=Math.max(0,Math.min(d.maxBreadcrumbs||100,100));var e={xhr:!0,console:!0,dom:!0,location:!0,sentry:!0},f=d.autoBreadcrumbs;"[object Object]"==={}.toString.call(f)?f=ja(e,f):f!==!1&&(f=e),d.autoBreadcrumbs=f;var g={tryCatch:!0},h=d.instrument;return"[object Object]"==={}.toString.call(h)?h=ja(g,h):h!==!1&&(h=g),d.instrument=h,X.collectWindowErrors=!!d.collectWindowErrors,c},install:function(){var a=this;return a.isSetup()&&!a.p&&(X.report.subscribe(function(){a.D.apply(a,arguments)}),a.E(),a.m.instrument&&a.m.instrument.tryCatch&&a.F(),a.m.autoBreadcrumbs&&a.G(),a.H(),a.p=!0),Error.stackTraceLimit=a.m.stackTraceLimit,this},setDSN:function(a){var b=this,c=b.I(a),d=c.path.lastIndexOf("/"),e=c.path.substr(1,d);b.J=a,b.j=c.user,b.K=c.pass&&c.pass.substr(1),b.k=c.path.substr(d+1),b.i=b.L(c),b.M=b.i+"/"+e+"api/"+b.k+"/store/",this.A()},context:function(a,b,c){return ea(a)&&(c=b||[],b=a,a=void 0),this.wrap(a,b).apply(this,c)},wrap:function(a,b,c){function d(){var d=[],f=arguments.length,g=!a||a&&a.deep!==!1;for(c&&ea(c)&&c.apply(this,arguments);f--;)d[f]=g?e.wrap(a,arguments[f]):arguments[f];try{return b.apply(this,d)}catch(h){throw e.N(),e.captureException(h,a),h}}var e=this;if(da(b)&&!ea(a))return a;if(ea(a)&&(b=a,a=void 0),!ea(b))return b;try{if(b.a)return b;if(b.O)return b.O}catch(f){return b}for(var g in b)ma(b,g)&&(d[g]=b[g]);return d.prototype=b.prototype,b.O=d,d.a=!0,d.b=b,d},uninstall:function(){return X.report.uninstall(),this.P(),this.Q(),this.R(),Error.stackTraceLimit=this.q,this.p=!1,this},captureException:function(a,b){b=ja({trimHeadFrames:0},b?b:{});var c=!aa(a),d=!ca(a),e=ca(a)&&!a.error;if(c&&d||e)return this.captureMessage(a,ja(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}));ca(a)&&(a=a.error),this.f=a;try{var f=X.computeStackTrace(a);this.S(f,b)}catch(g){if(a!==g)throw g}return this},captureMessage:function(a,b){if(!this.m.ignoreErrors.test||!this.m.ignoreErrors.test(a)){b=b||{};var c,d=ja({message:a+""},b);try{throw new Error(a)}catch(e){c=e}c.name=null;var f=X.computeStackTrace(c),g=ga(f.stack)&&f.stack[1],h=g&&g.url||"";if((!this.m.ignoreUrls.test||!this.m.ignoreUrls.test(h))&&(!this.m.whitelistUrls.test||this.m.whitelistUrls.test(h))){if(this.m.stacktrace||b&&b.stacktrace){b=ja({fingerprint:a,trimHeadFrames:(b.trimHeadFrames||0)+1},b);var i=this.T(f,b);d.stacktrace={frames:i.reverse()}}return this.U(d),this}}},captureBreadcrumb:function(a){var b=ja({timestamp:H()/1e3},a);if(ea(this.m.breadcrumbCallback)){var c=this.m.breadcrumbCallback(b);if(ba(c)&&!ha(c))b=c;else if(c===!1)return this}return this.w.push(b),this.w.length>this.m.maxBreadcrumbs&&this.w.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.t.push([a,b]),this.p&&this.H(),this},setUserContext:function(a){return this.l.user=a,this},setExtraContext:function(a){return this.V("extra",a),this},setTagsContext:function(a){return this.V("tags",a),this},clearContext:function(){return this.l={},this},getContext:function(){return JSON.parse(Y(this.l))},setEnvironment:function(a){return this.m.environment=a,this},setRelease:function(a){return this.m.release=a,this},setDataCallback:function(a){var b=this.m.dataCallback;return this.m.dataCallback=I(b,a),this},setBreadcrumbCallback:function(a){var b=this.m.breadcrumbCallback;return this.m.breadcrumbCallback=I(b,a),this},setShouldSendCallback:function(a){var b=this.m.shouldSendCallback;return this.m.shouldSendCallback=I(b,a),this},setTransport:function(a){return this.m.transport=a,this},lastException:function(){return this.f},lastEventId:function(){return this.h},isSetup:function(){return!!this.c&&(!!this.i||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.C("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=za.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(Aa){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new Z("Missing eventId");var c=a.dsn||this.J;if(!c)throw new Z("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.l.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.L(this.I(c)),h=Aa.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(Aa.head||Aa.body).appendChild(h)}},N:function(){var a=this;this.o+=1,setTimeout(function(){a.o-=1})},W:function(a,b){var c,d;if(this.d){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),Aa.createEvent?(c=Aa.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=Aa.createEventObject(),c.eventType=a);for(d in b)ma(b,d)&&(c[d]=b[d]);if(Aa.createEvent)Aa.dispatchEvent(c);else try{Aa.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},X:function(a){var b=this;return function(c){if(b.Y=null,b.x!==c){b.x=c;var d;try{d=qa(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},Z:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.Y;g||a.X("input")(c),clearTimeout(g),a.Y=setTimeout(function(){a.Y=null},b)}}},$:function(a,b){var c=ta(this.y.href),d=ta(b),e=ta(a);this.z=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},E:function(){var a=this;a._=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.a?a._.apply(this.b,arguments):a._.apply(this,arguments)}},P:function(){this._&&(Function.prototype.toString=this._)},F:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.$(b.z,c+""),a.apply(this,arguments)}};ua(history,"pushState",j,d),ua(history,"replaceState",j,d)}if(c.console&&"console"in za&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};ia(["debug","info","warn","error","log"],function(a,b){wa(console,b,k)})}},Q:function(){for(var a;this.v.length;){a=this.v.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},R:function(){for(var a in this.s)this.r[a]=this.s[a]},H:function(){var a=this;ia(this.t,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},I:function(a){var b=ya.exec(a),c={},d=7;try{for(;d--;)c[xa[d]]=b[d]||""}catch(e){throw new Z("Invalid DSN: "+a)}if(c.pass&&!this.m.allowSecretKey)throw new Z("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},L:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},D:function(){this.o||this.S.apply(this,arguments)},S:function(a,b){var c=this.T(a,b);this.W("handle",{stackInfo:a,options:b}),this.ba(a.name,a.message,a.url,a.lineno,c,b)},T:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(ia(a.stack,function(b,e){var f=c.ca(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.w,0)}),this.l.user&&(a.user=this.l.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||ha(a[b]))&&delete a[b]}),ea(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!ha(a)&&(!ea(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.ia()?void this.C("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random()":"anonymous component")+(a._isVue&&a.$options.__file?" at "+a.$options.__file:"")}function e(a,b){if(b=b||window.Vue,b&&b.config){var c=b.config.errorHandler;b.config.errorHandler=function(b,e,f){var g={};"[object Object]"===Object.prototype.toString.call(e)&&(g.componentName=d(e),g.propsData=e.$options.propsData),"undefined"!=typeof f&&(g.lifecycleHook=f),a.captureException(b,{extra:g}),"function"==typeof c&&c.call(this,b,e,f)}}}b.exports=e,a(7).addPlugin(b.exports)},{7:7}],4:[function(a,b,c){function d(a){this.name="RavenConfigError",this.message=a}d.prototype=new Error,d.prototype.constructor=d,b.exports=d},{}],5:[function(a,b,c){var d=a(8),e=function(a,b,c){var e=a[b],f=a;if(b in a){var g="warn"===b?"warning":b;a[b]=function(){var a=[].slice.call(arguments),h=d.safeJoin(a," "),i={level:g,logger:"console",extra:{arguments:a}};"assert"===b?a[0]===!1&&(h="Assertion failed: "+(d.safeJoin(a.slice(1)," ")||"console.assert"),i.extra.arguments=a.slice(1),c&&c(h,i)):c&&c(h,i),e&&Function.prototype.apply.call(e,f,a)}}};b.exports={wrapMethod:e}},{8:8}],6:[function(a,b,c){(function(c){function d(){return+new Date}function e(a,b){return q(b)?function(c){return b(c,a)}:b}function f(){this.a=!("object"!=typeof JSON||!JSON.stringify),this.b=!p(Q),this.c=!p(R),this.d=null,this.e=null,this.f=null,this.g=null,this.h=null,this.i=null,this.j={},this.k={release:P.SENTRY_RELEASE&&P.SENTRY_RELEASE.id,logger:"javascript",ignoreErrors:[],ignoreUrls:[],whitelistUrls:[],includePaths:[],headers:null,collectWindowErrors:!0,captureUnhandledRejections:!0,maxMessageLength:0,maxUrlLength:250,stackTraceLimit:50,autoBreadcrumbs:!0,instrument:!0,sampleRate:1,sanitizeKeys:[]},this.l={method:"POST",keepalive:!0,referrerPolicy:I()?"origin":""},this.m=0,this.n=!1,this.o=Error.stackTraceLimit,this.p=P.console||{},this.q={},this.r=[],this.s=d(),this.t=[],this.u=[],this.v=null,this.w=P.location,this.x=this.w&&this.w.href,this.y();for(var a in this.p)this.q[a]=this.p[a]}var g=a(9),h=a(10),i=a(11),j=a(4),k=a(8),l=k.isError,m=k.isObject,n=k.isPlainObject,o=k.isErrorEvent,p=k.isUndefined,q=k.isFunction,r=k.isString,s=k.isArray,t=k.isEmptyObject,u=k.each,v=k.objectMerge,w=k.truncate,x=k.objectFrozen,y=k.hasKey,z=k.joinRegExp,A=k.urlencode,B=k.uuid4,C=k.htmlTreeAsString,D=k.isSameException,E=k.isSameStacktrace,F=k.parseUrl,G=k.fill,H=k.supportsFetch,I=k.supportsReferrerPolicy,J=k.serializeKeysForMessage,K=k.serializeException,L=k.sanitize,M=a(5).wrapMethod,N="source protocol user pass host port path".split(" "),O=/^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/,P="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},Q=P.document,R=P.navigator;f.prototype={VERSION:"3.24.2",debug:!1,TraceKit:g,config:function(a,b){var c=this;if(c.g)return this.z("error","Error: Raven has already been configured"),c;if(!a)return c;var d=c.k;b&&u(b,function(a,b){"tags"===a||"extra"===a||"user"===a?c.j[a]=b:d[a]=b}),c.setDSN(a),d.ignoreErrors.push(/^Script error\.?$/),d.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/),d.ignoreErrors=z(d.ignoreErrors),d.ignoreUrls=!!d.ignoreUrls.length&&z(d.ignoreUrls),d.whitelistUrls=!!d.whitelistUrls.length&&z(d.whitelistUrls),d.includePaths=z(d.includePaths),d.maxBreadcrumbs=Math.max(0,Math.min(d.maxBreadcrumbs||100,100));var e={xhr:!0,console:!0,dom:!0,location:!0,sentry:!0},f=d.autoBreadcrumbs;"[object Object]"==={}.toString.call(f)?f=v(e,f):f!==!1&&(f=e),d.autoBreadcrumbs=f;var h={tryCatch:!0},i=d.instrument;return"[object Object]"==={}.toString.call(i)?i=v(h,i):i!==!1&&(i=h),d.instrument=i,g.collectWindowErrors=!!d.collectWindowErrors,c},install:function(){var a=this;return a.isSetup()&&!a.n&&(g.report.subscribe(function(){a.A.apply(a,arguments)}),a.k.captureUnhandledRejections&&a.B(),a.C(),a.k.instrument&&a.k.instrument.tryCatch&&a.D(),a.k.autoBreadcrumbs&&a.E(),a.F(),a.n=!0),Error.stackTraceLimit=a.k.stackTraceLimit,this},setDSN:function(a){var b=this,c=b.G(a),d=c.path.lastIndexOf("/"),e=c.path.substr(1,d);b.H=a,b.h=c.user,b.I=c.pass&&c.pass.substr(1),b.i=c.path.substr(d+1),b.g=b.J(c),b.K=b.g+"/"+e+"api/"+b.i+"/store/",this.y()},context:function(a,b,c){return q(a)&&(c=b||[],b=a,a=void 0),this.wrap(a,b).apply(this,c)},wrap:function(a,b,c){function d(){var d=[],f=arguments.length,g=!a||a&&a.deep!==!1;for(c&&q(c)&&c.apply(this,arguments);f--;)d[f]=g?e.wrap(a,arguments[f]):arguments[f];try{return b.apply(this,d)}catch(h){throw e.L(),e.captureException(h,a),h}}var e=this;if(p(b)&&!q(a))return a;if(q(a)&&(b=a,a=void 0),!q(b))return b;try{if(b.M)return b;if(b.N)return b.N}catch(f){return b}for(var g in b)y(b,g)&&(d[g]=b[g]);return d.prototype=b.prototype,b.N=d,d.M=!0,d.O=b,d},uninstall:function(){return g.report.uninstall(),this.P(),this.Q(),this.R(),this.S(),Error.stackTraceLimit=this.o,this.n=!1,this},T:function(a){this.z("debug","Raven caught unhandled promise rejection:",a),this.captureException(a.reason,{extra:{unhandledPromiseRejection:!0}})},B:function(){return this.T=this.T.bind(this),P.addEventListener&&P.addEventListener("unhandledrejection",this.T),this},P:function(){return P.removeEventListener&&P.removeEventListener("unhandledrejection",this.T),this},captureException:function(a,b){if(b=v({trimHeadFrames:0},b?b:{}),o(a)&&a.error)a=a.error;else if(l(a))a=a;else{if(!n(a))return this.captureMessage(a,v(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}));b=this.U(b,a),a=new Error(b.message)}this.d=a;try{var c=g.computeStackTrace(a);this.V(c,b)}catch(d){if(a!==d)throw d}return this},U:function(a,b){var c=Object.keys(b).sort(),d=v(a,{message:"Non-Error exception captured with keys: "+J(c),fingerprint:[i(c)],extra:a.extra||{}});return d.extra.W=K(b),d},captureMessage:function(a,b){if(!this.k.ignoreErrors.test||!this.k.ignoreErrors.test(a)){b=b||{},a+="";var c,d=v({message:a},b);try{throw new Error(a)}catch(e){c=e}c.name=null;var f=g.computeStackTrace(c),h=s(f.stack)&&f.stack[1];h&&"Raven.captureException"===h.func&&(h=f.stack[2]);var i=h&&h.url||"";if((!this.k.ignoreUrls.test||!this.k.ignoreUrls.test(i))&&(!this.k.whitelistUrls.test||this.k.whitelistUrls.test(i))){if(this.k.stacktrace||b&&b.stacktrace){d.fingerprint=null==d.fingerprint?a:d.fingerprint,b=v({trimHeadFrames:0},b),b.trimHeadFrames+=1;var j=this.X(f,b);d.stacktrace={frames:j.reverse()}}return d.fingerprint&&(d.fingerprint=s(d.fingerprint)?d.fingerprint:[d.fingerprint]),this.Y(d),this}}},captureBreadcrumb:function(a){var b=v({timestamp:d()/1e3},a);if(q(this.k.breadcrumbCallback)){var c=this.k.breadcrumbCallback(b);if(m(c)&&!t(c))b=c;else if(c===!1)return this}return this.u.push(b),this.u.length>this.k.maxBreadcrumbs&&this.u.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.r.push([a,b]),this.n&&this.F(),this},setUserContext:function(a){return this.j.user=a,this},setExtraContext:function(a){return this.Z("extra",a),this},setTagsContext:function(a){return this.Z("tags",a),this},clearContext:function(){return this.j={},this},getContext:function(){return JSON.parse(h(this.j))},setEnvironment:function(a){return this.k.environment=a,this},setRelease:function(a){return this.k.release=a,this},setDataCallback:function(a){var b=this.k.dataCallback;return this.k.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.k.breadcrumbCallback;return this.k.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.k.shouldSendCallback;return this.k.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.k.transport=a,this},lastException:function(){return this.d},lastEventId:function(){return this.f},isSetup:function(){return!!this.a&&(!!this.g||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.z("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=P.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(Q){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.H;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.j.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.J(this.G(c)),h=Q.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(Q.head||Q.body).appendChild(h)}},L:function(){var a=this;this.m+=1,setTimeout(function(){a.m-=1})},$:function(a,b){var c,d;if(this.b){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),Q.createEvent?(c=Q.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=Q.createEventObject(),c.eventType=a);for(d in b)y(b,d)&&(c[d]=b[d]);if(Q.createEvent)Q.dispatchEvent(c);else try{Q.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},_:function(a){var b=this;return function(c){if(b.aa=null,b.v!==c){b.v=c;var d;try{d=C(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ba:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.aa;g||a._("input")(c),clearTimeout(g),a.aa=setTimeout(function(){a.aa=null},b)}}},ca:function(a,b){var c=F(this.w.href),d=F(b),e=F(a);this.x=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},C:function(){var a=this;a.da=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.M?a.da.apply(this.O,arguments):a.da.apply(this,arguments)}},Q:function(){this.da&&(Function.prototype.toString=this.da)},D:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.ca(b.x,c+""),a.apply(this,arguments)}};G(history,"pushState",j,d),G(history,"replaceState",j,d)}if(c.console&&"console"in P&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};u(["debug","info","warn","error","log"],function(a,b){M(console,b,k)})}},R:function(){for(var a;this.t.length;){a=this.t.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},S:function(){for(var a in this.q)this.p[a]=this.q[a]},F:function(){var a=this;u(this.r,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},G:function(a){var b=O.exec(a),c={},d=7;try{for(;d--;)c[N[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.k.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},J:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},A:function(){this.m||this.V.apply(this,arguments)},V:function(a,b){var c=this.X(a,b);this.$("handle",{stackInfo:a,options:b}),this.fa(a.name,a.message,a.url,a.lineno,c,b)},X:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(u(a.stack,function(b,e){var f=c.ga(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.u,0)}),this.j.user&&(a.user=this.j.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),a=this.pa(a),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||t(a[b]))&&delete a[b]}),q(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!t(a)&&(!q(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.ma()?void this.z("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function B(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&j(b))for(c=b.split(/\s+/),f=0;fc?M(a,b-1):d}function N(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?T:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function O(a,b){function c(a){return k(a)?a.map(function(a){return c(a)}):i(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!k(b)||k(b)&&0===b.length)return a;var d,e=w(b),f="********";try{d=JSON.parse(P(a))}catch(g){return a}return c(d)}var P=a(10),Q="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},R=3,S=51200,T=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isUndefined:g,isFunction:h,isPlainObject:i,isString:j,isArray:k,isEmptyObject:l,supportsErrorEvent:m,supportsFetch:n,supportsReferrerPolicy:o,supportsPromiseRejectionEvent:p,wrappedCallback:q,each:r,objectMerge:s,truncate:u,objectFrozen:t,hasKey:v,joinRegExp:w,urlencode:x,uuid4:z,htmlTreeAsString:A,htmlElementAsString:B,isSameException:E,isSameStacktrace:F,parseUrl:y,fill:G,safeJoin:H,serializeException:M,serializeKeysForMessage:N,sanitize:O}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{10:10}],9:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}var e=a(8),f={collectWindowErrors:!0,debug:!1},g="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},h=[].slice,i="?",j=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;f.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function k(a,b){var c=null;if(!b||f.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(h.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,g,h){var l=null,m=e.isErrorEvent(h)?h.error:h,n=e.isErrorEvent(a)?a.message:a;if(v)f.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&e.isError(m))l=f.computeStackTrace(m),k(l,!0);else{var p,r={url:b,line:c,column:g},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(j);p&&(s=p[1],n=p[2])}r.func=i,l={name:s,message:n,url:d(),stack:[r]},k(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=g.onerror,g.onerror=l,r=!0)}function n(){r&&(g.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,k.apply(null,[a,!1].concat(b))}function p(a,b){var c=h.call(arguments,1);if(v){if(u===a)return;o()}var d=f.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),f.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,e,f=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,g=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,h=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,j=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,k=/\((\S*)(?::(\d+))(?::(\d+))\)/,l=a.stack.split("\n"),m=[],n=(/^(.*) is undefined$/.exec(a.message),0),o=l.length;n eval")>-1;q&&(b=j.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==n||c[5]||"undefined"==typeof a.columnNumber||(m[0].column=a.columnNumber+1),e={url:c[3],func:c[1]||i,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}!e.func&&e.line&&(e.func=i),m.push(e)}return m.length?{name:a.name,message:a.message,url:d(),stack:m}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=i),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,g){for(var h,j,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==e&&o!==f.report){if(j={url:null,func:i,line:null,column:null},o.name?j.func=o.name:(h=k.exec(o.toString()))&&(j.func=h[1]),"undefined"==typeof j.func)try{j.func=h.input.substring(0,h.input.indexOf("{"))}catch(p){}m[""+o]?n=!0:m[""+o]=!0,l.push(j)}g&&l.splice(0,g);var q={name:a.name,message:a.message,url:d(),stack:l};return b(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),q}function e(b,e){var g=null;e=null==e?0:+e;try{if(g=a(b))return g}catch(h){if(f.debug)throw h}try{if(g=c(b,e+1))return g}catch(h){ +if(f.debug)throw h}return{name:b.name,message:b.message,url:d()}}return e.augmentStackTraceWithInitialElement=b,e.computeStackTraceFromStackProp=a,e}(),b.exports=f}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{8:8}],10:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}],11:[function(a,b,c){function d(a,b){var c=(65535&a)+(65535&b),d=(a>>16)+(b>>16)+(c>>16);return d<<16|65535&c}function e(a,b){return a<>>32-b}function f(a,b,c,f,g,h){return d(e(d(d(b,a),d(f,h)),g),c)}function g(a,b,c,d,e,g,h){return f(b&c|~b&d,a,b,e,g,h)}function h(a,b,c,d,e,g,h){return f(b&d|c&~d,a,b,e,g,h)}function i(a,b,c,d,e,g,h){return f(b^c^d,a,b,e,g,h)}function j(a,b,c,d,e,g,h){return f(c^(b|~d),a,b,e,g,h)}function k(a,b){a[b>>5]|=128<>>9<<4)+14]=b;var c,e,f,k,l,m=1732584193,n=-271733879,o=-1732584194,p=271733878;for(c=0;c>5]>>>b%32&255);return c}function m(a){var b,c=[];for(c[(a.length>>2)-1]=void 0,b=0;b>5]|=(255&a.charCodeAt(b/8))<16&&(e=k(e,8*a.length)),c=0;c<16;c+=1)f[c]=909522486^e[c],g[c]=1549556828^e[c];return d=k(f.concat(m(b)),512+8*b.length),l(k(g.concat(d),640))}function p(a){var b,c,d="0123456789abcdef",e="";for(c=0;c>>4&15)+d.charAt(15&b);return e}function q(a){return unescape(encodeURIComponent(a))}function r(a){return n(q(a))}function s(a){return p(r(a))}function t(a,b){return o(q(a),q(b))}function u(a,b){return p(t(a,b))}function v(a,b,c){return b?c?t(b,a):u(b,a):c?r(a):s(a)}b.exports=v},{}]},{},[7,1,2,3])(7)}); //# sourceMappingURL=raven.min.js.map \ No newline at end of file diff --git a/dist/console,ember,vue/raven.min.js.map b/dist/console,ember,vue/raven.min.js.map index bee5452eb4c7..a799600a7ca8 100644 --- a/dist/console,ember,vue/raven.min.js.map +++ b/dist/console,ember,vue/raven.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["raven.js"],"names":["global","factory","exports","module","define","amd","Raven","this","createCommonjsModule","fn","_typeof","obj","Symbol","iterator","constructor","prototype","isObject$1","what","isError$1","value","toString","call","Error","isErrorEvent$1","supportsErrorEvent","isUndefined$1","isFunction$1","isPlainObject","Object","isString$1","isArray$1","isEmptyObject$1","_","hasOwnProperty","ErrorEvent","e","supportsFetch$1","_window$3","Headers","Request","Response","wrappedCallback","callback","dataCallback","data","original","normalizedData","each$1","i","j","length","hasKey$1","objectMerge$1","obj1","obj2","key","objectFrozen$1","isFrozen","truncate$1","str","max","substr","object","joinRegExp$1","patterns","pattern","sources","len","push","replace","source","RegExp","join","urlencode$1","o","pairs","encodeURIComponent","parseUrl$1","url","match","query","fragment","protocol","host","path","relative","uuid4$1","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","r","Math","random","htmlTreeAsString$1","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","reverse","className","classes","attr","tagName","toLowerCase","id","split","attrWhitelist","getAttribute","isOnlyOneTruthy","a","b","isBothUndefined","isSameException$1","ex1","ex2","values","type","stacktrace","isSameStacktrace$1","stack1","stack2","frames1","frames","frames2","filename","lineno","colno","fill$1","name","replacement","track","orig","__raven__","__orig__","safeJoin","input","delimiter","output","String","getLocationHref","document","location","href","RavenConfigError","message","now","Date","keepOriginalCallback","isFunction","Raven$1","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window$1","SENTRY_RELEASE","logger","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","_fetchDefaults","method","keepalive","referrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","console","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","_lastHref","_resetBackoff","consolePlugin","pluginOptions","window","logLevels","levels","msg","captureMessage","level","pop","wrapConsoleMethod$1","emberPlugin","Ember","_oldOnError","onerror","error","captureException","RSVP","on","reason","extra","context","formatComponentName","vm","$root","_isVue","$options","_componentTag","__file","vuePlugin","Vue","config","errorHandler","info","metaData","componentName","propsData","lifecycleHook","commonjsGlobal","self","_sPO","setPrototypeOf","p","__proto__","Reflect","construct","Parent","args","Class","Constructor","apply","bind","utils","isObject","isError","isErrorEvent","isString","isArray","isEmptyObject","supportsFetch","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","TraceKit","debug","_window$2","_slice","slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","report","subscribe","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","stack","isWindowError","exception","concat","arguments","inner","traceKitWindowOnError","lineNo","colNo","ex","lastExceptionStack","computeStackTrace","augmentStackTraceWithInitialElement","processLastException","groups","line","column","undefined","func","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","lastException","rethrow","setTimeout","incomplete","uninstall","computeStackTraceFromStackProp","submatch","parts","element","chrome","gecko","winjs","geckoEval","chromeEval","lines","exec","isNative","indexOf","isEval","columnNumber","stackInfo","initial","unshift","partial","computeStackTraceByWalkingCallerChain","depth","item","functionName","funcs","recursion","curr","caller","substring","result","sourceURL","fileName","lineNumber","description","tracekit","stringify_1","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","err","keys","thisPos","Infinity","getSerialize","configError","wrapMethod","originalConsoleLevel","originalConsole","sentryLevel","Function","console$1","wrapConsoleMethod","dsnKeys","dsnPattern","navigator","VERSION","dsn","options","_logDebug","globalOptions","setDSN","maxBreadcrumbs","min","autoBreadcrumbDefaults","xhr","dom","sentry","instrumentDefaults","tryCatch","install","isSetup","_handleOnErrorStackInfo","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","lastIndexOf","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","wrap","_before","wrapped","deep","_ignoreNextOnError","__raven_wrapper__","property","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","trimHeadFrames","isNotError","isNotErrorEvent","isErrorEventWithoutError","_handleStackInfo","test","initialCall","fileurl","fingerprint","_prepareFrames","_send","captureBreadcrumb","crumb","timestamp","breadcrumbCallback","shift","addPlugin","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","setDataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","N","W","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","X","evtName","_keypressTimeout","target","category","Z","debounceDuration","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","$","from","to","parsedLoc","parsedTo","parsedFrom","E","_originalFunctionToString","P","F","wrapTimeFn","t","Array","originalCallback","wrapEventTarget","proto","capture","secure","handleEvent","before","clickHandler","keypressHandler","_keypressEventHandler","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","G","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","onreadystatechange","origFetch","fetchInput","fetchData","then","response","addEventListener","attachEvent","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","Q","builtin","R","H","installer","I","m","allowSecretKey","L","port","D","S","_triggerEvent","_processException","T","frame","_normalizeFrame","in_app","ca","stackInfoUrl","normalized","function","ba","prefixedMessage","culprit","da","request","Referer","breadcrumbs","_trimBreadcrumbs","ea","urlProp","urlProps","fa","httpData","userAgent","User-Agent","referrer","A","_backoffDuration","_backoffStart","ia","ja","current","last","ka","_shouldBackoff","retry","get","getResponseHeader","parseInt","U","baseData","project","platform","_getHttpData","serverName","server_name","forEach","_sendProcessedPayload","ma","la","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","na","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","onload","open","setRequestHeader","send","oa","hash","evaluated","C","V","setUser","setReleaseContext","raven","_window","_Raven","noConflict","singleton","console$3","ember","vue","console_ember_vue"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file +{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","consolePlugin","console","pluginOptions","logLevels","levels","push","callback","msg","data","captureMessage","level","pop","wrapConsoleMethod","wrapMethod","addPlugin","5","7","2","emberPlugin","Ember","_oldOnError","onerror","error","captureException","RSVP","on","reason","extra","context","3","formatComponentName","vm","$root","name","_isVue","$options","_componentTag","__file","vuePlugin","Vue","config","errorHandler","info","metaData","Object","prototype","toString","componentName","propsData","lifecycleHook","4","RavenConfigError","message","constructor","utils","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","safeJoin","logger","Function","apply","8","6","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","sanitizeKeys","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isError","isObject","isPlainObject","isErrorEvent","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","sanitize","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","dsn","options","_logDebug","globalOptions","key","value","setDSN","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","substr","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","func","undefined","wrap","_before","wrapped","deep","_ignoreNextOnError","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","T","event","unhandledPromiseRejection","B","_promiseRejectionHandler","bind","addEventListener","P","removeEventListener","ex","trimHeadFrames","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","U","currentOptions","exKeys","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","setDataCallback","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","L","setTimeout","$","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","_","evtName","_keypressTimeout","target","category","ba","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","ca","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","C","_originalFunctionToString","Q","D","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","type","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","E","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","R","builtin","S","F","installer","concat","G","str","m","exec","allowSecretKey","J","port","A","V","stackInfo","_triggerEvent","_processException","lineno","X","frame","_normalizeFrame","in_app","ga","stackInfoUrl","normalized","filename","line","colno","column","function","fa","prefixedMessage","exception","values","culprit","ha","request","Referer","breadcrumbs","_trimBreadcrumbs","ia","urlProp","urlProps","ja","httpData","userAgent","User-Agent","referrer","y","_backoffDuration","_backoffStart","ma","na","current","last","oa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Y","baseData","project","platform","_getHttpData","serverName","server_name","_sanitizeData","forEach","random","_sendProcessedPayload","pa","ra","qa","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","sa","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","open","setRequestHeader","send","ta","hash","evaluated","z","Z","setUser","setReleaseContext","10","11","9","RavenConstructor","_Raven","noConflict","Client","what","supportsErrorEvent","ErrorEvent","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","wrappedCallback","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","sanitizeMask","safeInput","o_O","getLocationHref","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","charAt","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","string","raw"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file diff --git a/dist/console,ember/raven.js b/dist/console,ember/raven.js index 016a0d111ba3..525da2cff541 100644 --- a/dist/console,ember/raven.js +++ b/dist/console,ember/raven.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.22.2 (1b6187b) | github.com/getsentry/raven-js */ +/*! Raven.js 3.24.2 (540f32b) | github.com/getsentry/raven-js */ /* * Includes TraceKit @@ -10,3199 +10,3963 @@ * */ -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : - typeof define === 'function' && define.amd ? define(factory) : - (global.Raven = factory()); -}(this, (function () { 'use strict'; +(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.Raven = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o href parsing trick because React Native and other -// environments where DOM might not be available + if (self._globalOptions.instrument && self._globalOptions.instrument.tryCatch) { + self._instrumentTryCatch(); + } + if (self._globalOptions.autoBreadcrumbs) self._instrumentBreadcrumbs(); -function parseUrl$1(url) { - if (typeof url !== 'string') return {}; - var match = url.match(/^(([^:\/?#]+):)?(\/\/([^\/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?$/); // coerce to undefined values to empty string so we don't get 'undefined' + // Install all of the plugins + self._drainPlugins(); - var query = match[6] || ''; - var fragment = match[8] || ''; - return { - protocol: match[2], - host: match[4], - path: match[5], - relative: match[5] + query + fragment // everything minus origin + self._isRavenInstalled = true; + } - }; -} + Error.stackTraceLimit = self._globalOptions.stackTraceLimit; + return this; + }, -function uuid4$1() { - var crypto = _window$3.crypto || _window$3.msCrypto; + /* + * Set the DSN (can be called multiple time unlike config) + * + * @param {string} dsn The public Sentry DSN + */ + setDSN: function(dsn) { + var self = this, + uri = self._parseDSN(dsn), + lastSlash = uri.path.lastIndexOf('/'), + path = uri.path.substr(1, lastSlash); - if (!isUndefined$1(crypto) && crypto.getRandomValues) { - // Use window.crypto API if available - // eslint-disable-next-line no-undef - var arr = new Uint16Array(8); - crypto.getRandomValues(arr); // set 4 in byte 7 + self._dsn = dsn; + self._globalKey = uri.user; + self._globalSecret = uri.pass && uri.pass.substr(1); + self._globalProject = uri.path.substr(lastSlash + 1); - arr[3] = arr[3] & 0xfff | 0x4000; // set 2 most significant bits of byte 9 to '10' + self._globalServer = self._getGlobalServer(uri); - arr[4] = arr[4] & 0x3fff | 0x8000; + self._globalEndpoint = + self._globalServer + '/' + path + 'api/' + self._globalProject + '/store/'; - var pad = function pad(num) { - var v = num.toString(16); + // Reset backoff state since we may be pointing at a + // new project/server + this._resetBackoff(); + }, - while (v.length < 4) { - v = '0' + v; - } + /* + * Wrap code within a context so Raven can capture errors + * reliably across domains that is executed immediately. + * + * @param {object} options A specific set of options for this context [optional] + * @param {function} func The callback to be immediately executed within the context + * @param {array} args An array of arguments to be called with the callback [optional] + */ + context: function(options, func, args) { + if (isFunction(options)) { + args = func || []; + func = options; + options = undefined; + } - return v; - }; + return this.wrap(options, func).apply(this, args); + }, - return pad(arr[0]) + pad(arr[1]) + pad(arr[2]) + pad(arr[3]) + pad(arr[4]) + pad(arr[5]) + pad(arr[6]) + pad(arr[7]); - } else { - // http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/2117523#2117523 - return 'xxxxxxxxxxxx4xxxyxxxxxxxxxxxxxxx'.replace(/[xy]/g, function (c) { - var r = Math.random() * 16 | 0, - v = c === 'x' ? r : r & 0x3 | 0x8; - return v.toString(16); - }); - } -} -/** - * Given a child DOM element, returns a query-selector statement describing that - * and its ancestors - * e.g. [HTMLElement] => body > div > input#foo.btn[name=baz] - * @param elem - * @returns {string} - */ + /* + * Wrap code within a context and returns back a new function to be executed + * + * @param {object} options A specific set of options for this context [optional] + * @param {function} func The function to be wrapped in a new context + * @param {function} func A function to call before the try/catch wrapper [optional, private] + * @return {function} The newly wrapped functions with a context + */ + wrap: function(options, func, _before) { + var self = this; + // 1 argument has been passed, and it's not a function + // so just return it + if (isUndefined(func) && !isFunction(options)) { + return options; + } + // options is optional + if (isFunction(options)) { + func = options; + options = undefined; + } -function htmlTreeAsString$1(elem) { - /* eslint no-extra-parens:0*/ - var MAX_TRAVERSE_HEIGHT = 5, - MAX_OUTPUT_LEN = 80, - out = [], - height = 0, - len = 0, - separator = ' > ', - sepLength = separator.length, - nextStr; + // At this point, we've passed along 2 arguments, and the second one + // is not a function either, so we'll just return the second argument. + if (!isFunction(func)) { + return func; + } - while (elem && height++ < MAX_TRAVERSE_HEIGHT) { - nextStr = htmlElementAsString(elem); // bail out if - // - nextStr is the 'html' element - // - the length of the string that would be created exceeds MAX_OUTPUT_LEN - // (ignore this limit if we are on the first iteration) + // We don't wanna wrap it twice! + try { + if (func.__raven__) { + return func; + } - if (nextStr === 'html' || height > 1 && len + out.length * sepLength + nextStr.length >= MAX_OUTPUT_LEN) { - break; + // If this has already been wrapped in the past, return that + if (func.__raven_wrapper__) { + return func.__raven_wrapper__; + } + } catch (e) { + // Just accessing custom props in some Selenium environments + // can cause a "Permission denied" exception (see raven-js#495). + // Bail on wrapping and return the function as-is (defers to window.onerror). + return func; } - out.push(nextStr); - len += nextStr.length; - elem = elem.parentNode; - } + function wrapped() { + var args = [], + i = arguments.length, + deep = !options || (options && options.deep !== false); - return out.reverse().join(separator); -} -/** - * Returns a simple, query-selector representation of a DOM element - * e.g. [HTMLElement] => input#foo.btn[name=baz] - * @param HTMLElement - * @returns {string} - */ + if (_before && isFunction(_before)) { + _before.apply(this, arguments); + } + // Recursively wrap all of a function's arguments that are + // functions themselves. + while (i--) args[i] = deep ? self.wrap(options, arguments[i]) : arguments[i]; -function htmlElementAsString(elem) { - var out = [], - className, - classes, - key, - attr, - i; + try { + // Attempt to invoke user-land function + // NOTE: If you are a Sentry user, and you are seeing this stack frame, it + // means Raven caught an error invoking your application code. This is + // expected behavior and NOT indicative of a bug with Raven.js. + return func.apply(this, args); + } catch (e) { + self._ignoreNextOnError(); + self.captureException(e, options); + throw e; + } + } - if (!elem || !elem.tagName) { - return ''; - } + // copy over properties of the old function + for (var property in func) { + if (hasKey(func, property)) { + wrapped[property] = func[property]; + } + } + wrapped.prototype = func.prototype; - out.push(elem.tagName.toLowerCase()); + func.__raven_wrapper__ = wrapped; + // Signal that this function has been wrapped/filled already + // for both debugging and to prevent it to being wrapped/filled twice + wrapped.__raven__ = true; + wrapped.__orig__ = func; - if (elem.id) { - out.push('#' + elem.id); - } + return wrapped; + }, - className = elem.className; + /** + * Uninstalls the global error handler. + * + * @return {Raven} + */ + uninstall: function() { + TraceKit.report.uninstall(); - if (className && isString$1(className)) { - classes = className.split(/\s+/); + this._detachPromiseRejectionHandler(); + this._unpatchFunctionToString(); + this._restoreBuiltIns(); + this._restoreConsole(); - for (i = 0; i < classes.length; i++) { - out.push('.' + classes[i]); + Error.stackTraceLimit = this._originalErrorStackTraceLimit; + this._isRavenInstalled = false; + + return this; + }, + + /** + * Callback used for `unhandledrejection` event + * + * @param {PromiseRejectionEvent} event An object containing + * promise: the Promise that was rejected + * reason: the value with which the Promise was rejected + * @return void + */ + _promiseRejectionHandler: function(event) { + this._logDebug('debug', 'Raven caught unhandled promise rejection:', event); + this.captureException(event.reason, { + extra: { + unhandledPromiseRejection: true + } + }); + }, + + /** + * Installs the global promise rejection handler. + * + * @return {raven} + */ + _attachPromiseRejectionHandler: function() { + this._promiseRejectionHandler = this._promiseRejectionHandler.bind(this); + _window.addEventListener && + _window.addEventListener('unhandledrejection', this._promiseRejectionHandler); + return this; + }, + + /** + * Uninstalls the global promise rejection handler. + * + * @return {raven} + */ + _detachPromiseRejectionHandler: function() { + _window.removeEventListener && + _window.removeEventListener('unhandledrejection', this._promiseRejectionHandler); + return this; + }, + + /** + * Manually capture an exception and send it over to Sentry + * + * @param {error} ex An exception to be logged + * @param {object} options A specific set of options for this error [optional] + * @return {Raven} + */ + captureException: function(ex, options) { + options = objectMerge({trimHeadFrames: 0}, options ? options : {}); + + if (isErrorEvent(ex) && ex.error) { + // If it is an ErrorEvent with `error` property, extract it to get actual Error + ex = ex.error; + } else if (isError(ex)) { + // we have a real Error object + ex = ex; + } else if (isPlainObject(ex)) { + // If it is plain Object, serialize it manually and extract options + // This will allow us to group events based on top-level keys + // which is much better than creating new group when any key/value change + options = this._getCaptureExceptionOptionsFromPlainObject(options, ex); + ex = new Error(options.message); + } else { + // If none of previous checks were valid, then it means that + // it's not a plain Object + // it's not a valid ErrorEvent (one with an error property) + // it's not an Error + // So bail out and capture it as a simple message: + return this.captureMessage( + ex, + objectMerge(options, { + stacktrace: true, // if we fall back to captureMessage, default to attempting a new trace + trimHeadFrames: options.trimHeadFrames + 1 + }) + ); + } + + // Store the raw exception object for potential debugging and introspection + this._lastCapturedException = ex; + + // TraceKit.report will re-raise any exception passed to it, + // which means you have to wrap it in try/catch. Instead, we + // can wrap it here and only re-raise if TraceKit.report + // raises an exception different from the one we asked to + // report on. + try { + var stack = TraceKit.computeStackTrace(ex); + this._handleStackInfo(stack, options); + } catch (ex1) { + if (ex !== ex1) { + throw ex1; + } } - } - var attrWhitelist = ['type', 'name', 'title', 'alt']; + return this; + }, - for (i = 0; i < attrWhitelist.length; i++) { - key = attrWhitelist[i]; - attr = elem.getAttribute(key); + _getCaptureExceptionOptionsFromPlainObject: function(currentOptions, ex) { + var exKeys = Object.keys(ex).sort(); + var options = objectMerge(currentOptions, { + message: + 'Non-Error exception captured with keys: ' + serializeKeysForMessage(exKeys), + fingerprint: [md5(exKeys)], + extra: currentOptions.extra || {} + }); + options.extra.__serialized__ = serializeException(ex); - if (attr) { - out.push('[' + key + '="' + attr + '"]'); + return options; + }, + + /* + * Manually send a message to Sentry + * + * @param {string} msg A plain message to be captured in Sentry + * @param {object} options A specific set of options for this message [optional] + * @return {Raven} + */ + captureMessage: function(msg, options) { + // config() automagically converts ignoreErrors from a list to a RegExp so we need to test for an + // early call; we'll error on the side of logging anything called before configuration since it's + // probably something you should see: + if ( + !!this._globalOptions.ignoreErrors.test && + this._globalOptions.ignoreErrors.test(msg) + ) { + return; } - } - return out.join(''); -} -/** - * Returns true if either a OR b is truthy, but not both - */ + options = options || {}; + msg = msg + ''; // Make sure it's actually a string + var data = objectMerge( + { + message: msg + }, + options + ); -function isOnlyOneTruthy(a, b) { - return !!(!!a ^ !!b); -} -/** - * Returns true if both parameters are undefined - */ + var ex; + // Generate a "synthetic" stack trace from this point. + // NOTE: If you are a Sentry user, and you are seeing this stack frame, it is NOT indicative + // of a bug with Raven.js. Sentry generates synthetic traces either by configuration, + // or if it catches a thrown object without a "stack" property. + try { + throw new Error(msg); + } catch (ex1) { + ex = ex1; + } + // null exception name so `Error` isn't prefixed to msg + ex.name = null; + var stack = TraceKit.computeStackTrace(ex); -function isBothUndefined(a, b) { - return isUndefined$1(a) && isUndefined$1(b); -} -/** - * Returns true if the two input exception interfaces have the same content - */ + // stack[0] is `throw new Error(msg)` call itself, we are interested in the frame that was just before that, stack[1] + var initialCall = isArray(stack.stack) && stack.stack[1]; + // if stack[1] is `Raven.captureException`, it means that someone passed a string to it and we redirected that call + // to be handled by `captureMessage`, thus `initialCall` is the 3rd one, not 2nd + // initialCall => captureException(string) => captureMessage(string) + if (initialCall && initialCall.func === 'Raven.captureException') { + initialCall = stack.stack[2]; + } -function isSameException$1(ex1, ex2) { - if (isOnlyOneTruthy(ex1, ex2)) return false; - ex1 = ex1.values[0]; - ex2 = ex2.values[0]; - if (ex1.type !== ex2.type || ex1.value !== ex2.value) return false; // in case both stacktraces are undefined, we can't decide so default to false + var fileurl = (initialCall && initialCall.url) || ''; - if (isBothUndefined(ex1.stacktrace, ex2.stacktrace)) return false; - return isSameStacktrace$1(ex1.stacktrace, ex2.stacktrace); -} -/** - * Returns true if the two input stack trace interfaces have the same content - */ + if ( + !!this._globalOptions.ignoreUrls.test && + this._globalOptions.ignoreUrls.test(fileurl) + ) { + return; + } + if ( + !!this._globalOptions.whitelistUrls.test && + !this._globalOptions.whitelistUrls.test(fileurl) + ) { + return; + } -function isSameStacktrace$1(stack1, stack2) { - if (isOnlyOneTruthy(stack1, stack2)) return false; - var frames1 = stack1.frames; - var frames2 = stack2.frames; // Exit early if frame count differs + if (this._globalOptions.stacktrace || (options && options.stacktrace)) { + // fingerprint on msg, not stack trace (legacy behavior, could be revisited) + data.fingerprint = data.fingerprint == null ? msg : data.fingerprint; - if (frames1.length !== frames2.length) return false; // Iterate through every frame; bail out if anything differs + options = objectMerge( + { + trimHeadFrames: 0 + }, + options + ); + // Since we know this is a synthetic trace, the top frame (this function call) + // MUST be from Raven.js, so mark it for trimming + // We add to the trim counter so that callers can choose to trim extra frames, such + // as utility functions. + options.trimHeadFrames += 1; - var a, b; + var frames = this._prepareFrames(stack, options); + data.stacktrace = { + // Sentry expects frames oldest to newest + frames: frames.reverse() + }; + } - for (var i = 0; i < frames1.length; i++) { - a = frames1[i]; - b = frames2[i]; - if (a.filename !== b.filename || a.lineno !== b.lineno || a.colno !== b.colno || a['function'] !== b['function']) return false; - } + // Make sure that fingerprint is always wrapped in an array + if (data.fingerprint) { + data.fingerprint = isArray(data.fingerprint) + ? data.fingerprint + : [data.fingerprint]; + } - return true; -} -/** - * Polyfill a method - * @param obj object e.g. `document` - * @param name method name present on object e.g. `addEventListener` - * @param replacement replacement function - * @param track {optional} record instrumentation to an array - */ + // Fire away! + this._send(data); + return this; + }, -function fill$1(obj, name, replacement, track) { - var orig = obj[name]; - obj[name] = replacement(orig); - obj[name].__raven__ = true; - obj[name].__orig__ = orig; + captureBreadcrumb: function(obj) { + var crumb = objectMerge( + { + timestamp: now() / 1000 + }, + obj + ); - if (track) { - track.push([obj, name, orig]); - } -} -/** - * Join values in array - * @param input array of values to be joined together - * @param delimiter string to be placed in-between values - * @returns {string} - */ + if (isFunction(this._globalOptions.breadcrumbCallback)) { + var result = this._globalOptions.breadcrumbCallback(crumb); + if (isObject(result) && !isEmptyObject(result)) { + crumb = result; + } else if (result === false) { + return this; + } + } -function safeJoin(input, delimiter) { - if (!isArray$1(input)) return ''; - var output = []; + this._breadcrumbs.push(crumb); + if (this._breadcrumbs.length > this._globalOptions.maxBreadcrumbs) { + this._breadcrumbs.shift(); + } + return this; + }, - for (var i = 0; i < input.length; i++) { - try { - output.push(String(input[i])); - } catch (e) { - output.push('[value cannot be serialized]'); + addPlugin: function(plugin /*arg1, arg2, ... argN*/) { + var pluginArgs = [].slice.call(arguments, 1); + + this._plugins.push([plugin, pluginArgs]); + if (this._isRavenInstalled) { + this._drainPlugins(); } - } - return output.join(delimiter); -} + return this; + }, -var utils = { - isObject: isObject$1, - isError: isError$1, - isErrorEvent: isErrorEvent$1, - isUndefined: isUndefined$1, - isFunction: isFunction$1, - isPlainObject: isPlainObject, - isString: isString$1, - isArray: isArray$1, - isEmptyObject: isEmptyObject$1, - supportsErrorEvent: supportsErrorEvent, - supportsFetch: supportsFetch$1, - wrappedCallback: wrappedCallback, - each: each$1, - objectMerge: objectMerge$1, - truncate: truncate$1, - objectFrozen: objectFrozen$1, - hasKey: hasKey$1, - joinRegExp: joinRegExp$1, - urlencode: urlencode$1, - uuid4: uuid4$1, - htmlTreeAsString: htmlTreeAsString$1, - htmlElementAsString: htmlElementAsString, - isSameException: isSameException$1, - isSameStacktrace: isSameStacktrace$1, - parseUrl: parseUrl$1, - fill: fill$1, - safeJoin: safeJoin -}; + /* + * Set/clear a user to be sent along with the payload. + * + * @param {object} user An object representing user data [optional] + * @return {Raven} + */ + setUserContext: function(user) { + // Intentionally do not merge here since that's an unexpected behavior. + this._globalContext.user = user; -/* - TraceKit - Cross brower stack traces + return this; + }, - This was originally forked from github.com/occ/TraceKit, but has since been - largely re-written and is now maintained as part of raven-js. Tests for - this are in test/vendor. + /* + * Merge extra attributes to be sent along with the payload. + * + * @param {object} extra An object representing extra data [optional] + * @return {Raven} + */ + setExtraContext: function(extra) { + this._mergeContext('extra', extra); - MIT license -*/ + return this; + }, -var TraceKit = { - collectWindowErrors: true, - debug: false -}; // This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) + /* + * Merge tags to be sent along with the payload. + * + * @param {object} tags An object representing tags [optional] + * @return {Raven} + */ + setTagsContext: function(tags) { + this._mergeContext('tags', tags); -var _window$2 = typeof window !== 'undefined' ? window : typeof commonjsGlobal !== 'undefined' ? commonjsGlobal : typeof self !== 'undefined' ? self : {}; // global reference to slice + return this; + }, + /* + * Clear all of the context. + * + * @return {Raven} + */ + clearContext: function() { + this._globalContext = {}; -var _slice = [].slice; -var UNKNOWN_FUNCTION = '?'; // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error#Error_types + return this; + }, -var ERROR_TYPES_RE = /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/; + /* + * Get a copy of the current context. This cannot be mutated. + * + * @return {object} copy of context + */ + getContext: function() { + // lol javascript + return JSON.parse(stringify(this._globalContext)); + }, -function getLocationHref() { - if (typeof document === 'undefined' || document.location == null) return ''; - return document.location.href; -} -/** - * TraceKit.report: cross-browser processing of unhandled exceptions - * - * Syntax: - * TraceKit.report.subscribe(function(stackInfo) { ... }) - * TraceKit.report.unsubscribe(function(stackInfo) { ... }) - * TraceKit.report(exception) - * try { ...code... } catch(ex) { TraceKit.report(ex); } - * - * Supports: - * - Firefox: full stack trace with line numbers, plus column number - * on top frame; column number is not guaranteed - * - Opera: full stack trace with line and column numbers - * - Chrome: full stack trace with line and column numbers - * - Safari: line and column number for the top frame only; some frames - * may be missing, and column number is not guaranteed - * - IE: line and column number for the top frame only; some frames - * may be missing, and column number is not guaranteed - * - * In theory, TraceKit should work on all of the following versions: - * - IE5.5+ (only 8.0 tested) - * - Firefox 0.9+ (only 3.5+ tested) - * - Opera 7+ (only 10.50 tested; versions 9 and earlier may require - * Exceptions Have Stacktrace to be enabled in opera:config) - * - Safari 3+ (only 4+ tested) - * - Chrome 1+ (only 5+ tested) - * - Konqueror 3.5+ (untested) - * - * Requires TraceKit.computeStackTrace. - * - * Tries to catch all unhandled exceptions and report them to the - * subscribed handlers. Please note that TraceKit.report will rethrow the - * exception. This is REQUIRED in order to get a useful stack trace in IE. - * If the exception does not reach the top of the browser, you will only - * get a stack trace from the point where TraceKit.report was called. - * - * Handlers receive a stackInfo object as described in the - * TraceKit.computeStackTrace docs. - */ + /* + * Set environment of application + * + * @param {string} environment Typically something like 'production'. + * @return {Raven} + */ + setEnvironment: function(environment) { + this._globalOptions.environment = environment; + return this; + }, -TraceKit.report = function reportModuleWrapper() { - var handlers = [], - lastArgs = null, - lastException = null, - lastExceptionStack = null; - /** - * Add a crash handler. - * @param {Function} handler + /* + * Set release version of application + * + * @param {string} release Typically something like a git SHA to identify version + * @return {Raven} */ + setRelease: function(release) { + this._globalOptions.release = release; - function subscribe(handler) { - installGlobalHandler(); - handlers.push(handler); - } - /** - * Remove a crash handler. - * @param {Function} handler + return this; + }, + + /* + * Set the dataCallback option + * + * @param {function} callback The callback to run which allows the + * data blob to be mutated before sending + * @return {Raven} */ + setDataCallback: function(callback) { + var original = this._globalOptions.dataCallback; + this._globalOptions.dataCallback = keepOriginalCallback(original, callback); + return this; + }, + /* + * Set the breadcrumbCallback option + * + * @param {function} callback The callback to run which allows filtering + * or mutating breadcrumbs + * @return {Raven} + */ + setBreadcrumbCallback: function(callback) { + var original = this._globalOptions.breadcrumbCallback; + this._globalOptions.breadcrumbCallback = keepOriginalCallback(original, callback); + return this; + }, + + /* + * Set the shouldSendCallback option + * + * @param {function} callback The callback to run which allows + * introspecting the blob before sending + * @return {Raven} + */ + setShouldSendCallback: function(callback) { + var original = this._globalOptions.shouldSendCallback; + this._globalOptions.shouldSendCallback = keepOriginalCallback(original, callback); + return this; + }, - function unsubscribe(handler) { - for (var i = handlers.length - 1; i >= 0; --i) { - if (handlers[i] === handler) { - handlers.splice(i, 1); - } - } - } /** - * Remove all crash handlers. + * Override the default HTTP transport mechanism that transmits data + * to the Sentry server. + * + * @param {function} transport Function invoked instead of the default + * `makeRequest` handler. + * + * @return {Raven} + */ + setTransport: function(transport) { + this._globalOptions.transport = transport; + + return this; + }, + + /* + * Get the latest raw exception that was captured by Raven. + * + * @return {error} */ + lastException: function() { + return this._lastCapturedException; + }, + /* + * Get the last event id + * + * @return {string} + */ + lastEventId: function() { + return this._lastEventId; + }, - function unsubscribeAll() { - uninstallGlobalHandler(); - handlers = []; - } - /** - * Dispatch stack information to all handlers. - * @param {Object.} stack + /* + * Determine if Raven is setup and ready to go. + * + * @return {boolean} */ + isSetup: function() { + if (!this._hasJSON) return false; // needs JSON support + if (!this._globalServer) { + if (!this.ravenNotConfiguredError) { + this.ravenNotConfiguredError = true; + this._logDebug('error', 'Error: Raven has not been configured.'); + } + return false; + } + return true; + }, + afterLoad: function() { + // TODO: remove window dependence? - function notifyHandlers(stack, isWindowError) { - var exception = null; + // Attempt to initialize Raven on load + var RavenConfig = _window.RavenConfig; + if (RavenConfig) { + this.config(RavenConfig.dsn, RavenConfig.config).install(); + } + }, - if (isWindowError && !TraceKit.collectWindowErrors) { + showReportDialog: function(options) { + if ( + !_document // doesn't work without a document (React native) + ) return; - } - for (var i in handlers) { - if (handlers.hasOwnProperty(i)) { - try { - handlers[i].apply(null, [stack].concat(_slice.call(arguments, 2))); - } catch (inner) { - exception = inner; - } - } + options = options || {}; + + var lastEventId = options.eventId || this.lastEventId(); + if (!lastEventId) { + throw new RavenConfigError('Missing eventId'); } - if (exception) { - throw exception; + var dsn = options.dsn || this._dsn; + if (!dsn) { + throw new RavenConfigError('Missing DSN'); } - } - var _oldOnerrorHandler, _onErrorHandlerInstalled; - /** - * Ensures all global unhandled exceptions are recorded. - * Supported by Gecko and IE. - * @param {string} msg Error message. - * @param {string} url URL of script that generated the exception. - * @param {(number|string)} lineNo The line number at which the error - * occurred. - * @param {?(number|string)} colNo The column number at which the error - * occurred. - * @param {?Error} ex The actual Error object. - */ + var encode = encodeURIComponent; + var qs = ''; + qs += '?eventId=' + encode(lastEventId); + qs += '&dsn=' + encode(dsn); + var user = options.user || this._globalContext.user; + if (user) { + if (user.name) qs += '&name=' + encode(user.name); + if (user.email) qs += '&email=' + encode(user.email); + } - function traceKitWindowOnError(msg, url, lineNo, colNo, ex) { - var stack = null; // If 'ex' is ErrorEvent, get real Error from inside + var globalServer = this._getGlobalServer(this._parseDSN(dsn)); - var exception = utils.isErrorEvent(ex) ? ex.error : ex; // If 'msg' is ErrorEvent, get real message from inside + var script = _document.createElement('script'); + script.async = true; + script.src = globalServer + '/api/embed/error-page/' + qs; + (_document.head || _document.body).appendChild(script); + }, - var message = utils.isErrorEvent(msg) ? msg.message : msg; + /**** Private functions ****/ + _ignoreNextOnError: function() { + var self = this; + this._ignoreOnError += 1; + setTimeout(function() { + // onerror should trigger before setTimeout + self._ignoreOnError -= 1; + }); + }, - if (lastExceptionStack) { - TraceKit.computeStackTrace.augmentStackTraceWithInitialElement(lastExceptionStack, url, lineNo, message); - processLastException(); - } else if (exception && utils.isError(exception)) { - // non-string `exception` arg; attempt to extract stack trace - // New chrome and blink send along a real error object - // Let's just report that like a normal error. - // See: https://mikewest.org/2013/08/debugging-runtime-errors-with-window-onerror - stack = TraceKit.computeStackTrace(exception); - notifyHandlers(stack, true); - } else { - var location = { - url: url, - line: lineNo, - column: colNo - }; - var name = undefined; - var groups; + _triggerEvent: function(eventType, options) { + // NOTE: `event` is a native browser thing, so let's avoid conflicting wiht it + var evt, key; - if ({}.toString.call(message) === '[object String]') { - var groups = message.match(ERROR_TYPES_RE); + if (!this._hasDocument) return; - if (groups) { - name = groups[1]; - message = groups[2]; - } - } + options = options || {}; - location.func = UNKNOWN_FUNCTION; - stack = { - name: name, - message: message, - url: getLocationHref(), - stack: [location] - }; - notifyHandlers(stack, true); - } + eventType = 'raven' + eventType.substr(0, 1).toUpperCase() + eventType.substr(1); - if (_oldOnerrorHandler) { - return _oldOnerrorHandler.apply(this, arguments); + if (_document.createEvent) { + evt = _document.createEvent('HTMLEvents'); + evt.initEvent(eventType, true, true); + } else { + evt = _document.createEventObject(); + evt.eventType = eventType; } - return false; - } + for (key in options) + if (hasKey(options, key)) { + evt[key] = options[key]; + } - function installGlobalHandler() { - if (_onErrorHandlerInstalled) { - return; - } - - _oldOnerrorHandler = _window$2.onerror; - _window$2.onerror = traceKitWindowOnError; - _onErrorHandlerInstalled = true; - } - - function uninstallGlobalHandler() { - if (!_onErrorHandlerInstalled) { - return; + if (_document.createEvent) { + // IE9 if standards + _document.dispatchEvent(evt); + } else { + // IE8 regardless of Quirks or Standards + // IE9 if quirks + try { + _document.fireEvent('on' + evt.eventType.toLowerCase(), evt); + } catch (e) { + // Do nothing + } } + }, - _window$2.onerror = _oldOnerrorHandler; - _onErrorHandlerInstalled = false; - _oldOnerrorHandler = undefined; - } - - function processLastException() { - var _lastExceptionStack = lastExceptionStack, - _lastArgs = lastArgs; - lastArgs = null; - lastExceptionStack = null; - lastException = null; - notifyHandlers.apply(null, [_lastExceptionStack, false].concat(_lastArgs)); - } /** - * Reports an unhandled Error to TraceKit. - * @param {Error} ex - * @param {?boolean} rethrow If false, do not re-throw the exception. - * Only used for window.onerror to not cause an infinite loop of - * rethrowing. - */ - - - function report(ex, rethrow) { - var args = _slice.call(arguments, 1); + * Wraps addEventListener to capture UI breadcrumbs + * @param evtName the event name (e.g. "click") + * @returns {Function} + * @private + */ + _breadcrumbEventHandler: function(evtName) { + var self = this; + return function(evt) { + // reset keypress timeout; e.g. triggering a 'click' after + // a 'keypress' will reset the keypress debounce so that a new + // set of keypresses can be recorded + self._keypressTimeout = null; - if (lastExceptionStack) { - if (lastException === ex) { - return; // already caught by an inner catch block, ignore - } else { - processLastException(); - } - } + // It's possible this handler might trigger multiple times for the same + // event (e.g. event propagation through node ancestors). Ignore if we've + // already captured the event. + if (self._lastCapturedEvent === evt) return; - var stack = TraceKit.computeStackTrace(ex); - lastExceptionStack = stack; - lastException = ex; - lastArgs = args; // If the stack trace is incomplete, wait for 2 seconds for - // slow slow IE to see if onerror occurs or not before reporting - // this exception; otherwise, we will end up with an incomplete - // stack trace + self._lastCapturedEvent = evt; - setTimeout(function () { - if (lastException === ex) { - processLastException(); + // try/catch both: + // - accessing evt.target (see getsentry/raven-js#838, #768) + // - `htmlTreeAsString` because it's complex, and just accessing the DOM incorrectly + // can throw an exception in some circumstances. + var target; + try { + target = htmlTreeAsString(evt.target); + } catch (e) { + target = ''; } - }, stack.incomplete ? 2000 : 0); - if (rethrow !== false) { - throw ex; // re-throw to propagate to the top level (and cause window.onerror) - } - } - - report.subscribe = subscribe; - report.unsubscribe = unsubscribe; - report.uninstall = unsubscribeAll; - return report; -}(); -/** - * TraceKit.computeStackTrace: cross-browser stack traces in JavaScript - * - * Syntax: - * s = TraceKit.computeStackTrace(exception) // consider using TraceKit.report instead (see below) - * Returns: - * s.name - exception name - * s.message - exception message - * s.stack[i].url - JavaScript or HTML file URL - * s.stack[i].func - function name, or empty for anonymous functions (if guessing did not work) - * s.stack[i].args - arguments passed to the function, if known - * s.stack[i].line - line number, if known - * s.stack[i].column - column number, if known - * - * Supports: - * - Firefox: full stack trace with line numbers and unreliable column - * number on top frame - * - Opera 10: full stack trace with line and column numbers - * - Opera 9-: full stack trace with line numbers - * - Chrome: full stack trace with line and column numbers - * - Safari: line and column number for the topmost stacktrace element - * only - * - IE: no line numbers whatsoever - * - * Tries to guess names of anonymous functions by looking for assignments - * in the source code. In IE and Safari, we have to guess source file names - * by searching for function bodies inside all page scripts. This will not - * work for scripts that are loaded cross-domain. - * Here be dragons: some function names may be guessed incorrectly, and - * duplicate functions may be mismatched. - * - * TraceKit.computeStackTrace should only be used for tracing purposes. - * Logging of unhandled exceptions should be done with TraceKit.report, - * which builds on top of TraceKit.computeStackTrace and provides better - * IE support by utilizing the window.onerror event to retrieve information - * about the top of the stack. - * - * Note: In IE and Safari, no stack trace is recorded on the Error object, - * so computeStackTrace instead walks its *own* chain of callers. - * This means that: - * * in Safari, some methods may be missing from the stack trace; - * * in IE, the topmost function in the stack trace will always be the - * caller of computeStackTrace. - * - * This is okay for tracing (because you are likely to be calling - * computeStackTrace from the function you want to be the topmost element - * of the stack trace anyway), but not okay for logging unhandled - * exceptions (because your catch block will likely be far away from the - * inner function that actually caused the exception). - * - */ - - -TraceKit.computeStackTrace = function computeStackTraceWrapper() { - // Contents of Exception in various browsers. - // - // SAFARI: - // ex.message = Can't find variable: qq - // ex.line = 59 - // ex.sourceId = 580238192 - // ex.sourceURL = http://... - // ex.expressionBeginOffset = 96 - // ex.expressionCaretOffset = 98 - // ex.expressionEndOffset = 98 - // ex.name = ReferenceError - // - // FIREFOX: - // ex.message = qq is not defined - // ex.fileName = http://... - // ex.lineNumber = 59 - // ex.columnNumber = 69 - // ex.stack = ...stack trace... (see the example below) - // ex.name = ReferenceError - // - // CHROME: - // ex.message = qq is not defined - // ex.name = ReferenceError - // ex.type = not_defined - // ex.arguments = ['aa'] - // ex.stack = ...stack trace... - // - // INTERNET EXPLORER: - // ex.message = ... - // ex.name = ReferenceError - // - // OPERA: - // ex.message = ...message... (see the example below) - // ex.name = ReferenceError - // ex.opera#sourceloc = 11 (pretty much useless, duplicates the info in ex.message) - // ex.stacktrace = n/a; see 'opera:config#UserPrefs|Exceptions Have Stacktrace' + self.captureBreadcrumb({ + category: 'ui.' + evtName, // e.g. ui.click, ui.input + message: target + }); + }; + }, /** - * Computes stack trace information from the stack property. - * Chrome and Gecko use this property. - * @param {Error} ex - * @return {?Object.} Stack trace information. - */ - function computeStackTraceFromStackProp(ex) { - if (typeof ex.stack === 'undefined' || !ex.stack) return; - var chrome = /^\s*at (.*?) ?\(((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i, - gecko = /^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|\[native).*?|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i, - winjs = /^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i, - // Used to additionally parse URL/line/column from eval frames - geckoEval = /(\S+) line (\d+)(?: > eval line \d+)* > eval/i, - chromeEval = /\((\S*)(?::(\d+))(?::(\d+))\)/, - lines = ex.stack.split('\n'), - stack = [], - submatch, - parts, - element, - reference = /^(.*) is undefined$/.exec(ex.message); - - for (var i = 0, j = lines.length; i < j; ++i) { - if (parts = chrome.exec(lines[i])) { - var isNative = parts[2] && parts[2].indexOf('native') === 0; // start of line - - var isEval = parts[2] && parts[2].indexOf('eval') === 0; // start of line - - if (isEval && (submatch = chromeEval.exec(parts[2]))) { - // throw out eval line/column and use top-most line/column number - parts[2] = submatch[1]; // url - - parts[3] = submatch[2]; // line - - parts[4] = submatch[3]; // column - } - - element = { - url: !isNative ? parts[2] : null, - func: parts[1] || UNKNOWN_FUNCTION, - args: isNative ? [parts[2]] : [], - line: parts[3] ? +parts[3] : null, - column: parts[4] ? +parts[4] : null - }; - } else if (parts = winjs.exec(lines[i])) { - element = { - url: parts[2], - func: parts[1] || UNKNOWN_FUNCTION, - args: [], - line: +parts[3], - column: parts[4] ? +parts[4] : null - }; - } else if (parts = gecko.exec(lines[i])) { - var isEval = parts[3] && parts[3].indexOf(' > eval') > -1; - - if (isEval && (submatch = geckoEval.exec(parts[3]))) { - // throw out eval line/column and use top-most line number - parts[3] = submatch[1]; - parts[4] = submatch[2]; - parts[5] = null; // no column when eval - } else if (i === 0 && !parts[5] && typeof ex.columnNumber !== 'undefined') { - // FireFox uses this awesome columnNumber property for its top frame - // Also note, Firefox's column number is 0-based and everything else expects 1-based, - // so adding 1 - // NOTE: this hack doesn't work if top-most frame is eval - stack[0].column = ex.columnNumber + 1; - } - - element = { - url: parts[3], - func: parts[1] || UNKNOWN_FUNCTION, - args: parts[2] ? parts[2].split(',') : [], - line: parts[4] ? +parts[4] : null, - column: parts[5] ? +parts[5] : null - }; - } else { - continue; - } + * Wraps addEventListener to capture keypress UI events + * @returns {Function} + * @private + */ + _keypressEventHandler: function() { + var self = this, + debounceDuration = 1000; // milliseconds - if (!element.func && element.line) { - element.func = UNKNOWN_FUNCTION; + // TODO: if somehow user switches keypress target before + // debounce timeout is triggered, we will only capture + // a single breadcrumb from the FIRST target (acceptable?) + return function(evt) { + var target; + try { + target = evt.target; + } catch (e) { + // just accessing event properties can throw an exception in some rare circumstances + // see: https://github.com/getsentry/raven-js/issues/838 + return; } + var tagName = target && target.tagName; - stack.push(element); - } - - if (!stack.length) { - return null; - } + // only consider keypress events on actual input elements + // this will disregard keypresses targeting body (e.g. tabbing + // through elements, hotkeys, etc) + if ( + !tagName || + (tagName !== 'INPUT' && tagName !== 'TEXTAREA' && !target.isContentEditable) + ) + return; - return { - name: ex.name, - message: ex.message, - url: getLocationHref(), - stack: stack + // record first keypress in a series, but ignore subsequent + // keypresses until debounce clears + var timeout = self._keypressTimeout; + if (!timeout) { + self._breadcrumbEventHandler('input')(evt); + } + clearTimeout(timeout); + self._keypressTimeout = setTimeout(function() { + self._keypressTimeout = null; + }, debounceDuration); }; - } - /** - * Adds information about the first frame to incomplete stack traces. - * Safari and IE require this to get complete data on the first frame. - * @param {Object.} stackInfo Stack trace information from - * one of the compute* methods. - * @param {string} url The URL of the script that caused an error. - * @param {(number|string)} lineNo The line number of the script that - * caused an error. - * @param {string=} message The error generated by the browser, which - * hopefully contains the name of the object that caused the error. - * @return {boolean} Whether or not the stack information was - * augmented. - */ + }, + /** + * Captures a breadcrumb of type "navigation", normalizing input URLs + * @param to the originating URL + * @param from the target URL + * @private + */ + _captureUrlChange: function(from, to) { + var parsedLoc = parseUrl(this._location.href); + var parsedTo = parseUrl(to); + var parsedFrom = parseUrl(from); - function augmentStackTraceWithInitialElement(stackInfo, url, lineNo, message) { - var initial = { - url: url, - line: lineNo - }; + // because onpopstate only tells you the "new" (to) value of location.href, and + // not the previous (from) value, we need to track the value of the current URL + // state ourselves + this._lastHref = to; - if (initial.url && initial.line) { - stackInfo.incomplete = false; + // Use only the path component of the URL if the URL matches the current + // document (almost all the time when using pushState) + if (parsedLoc.protocol === parsedTo.protocol && parsedLoc.host === parsedTo.host) + to = parsedTo.relative; + if (parsedLoc.protocol === parsedFrom.protocol && parsedLoc.host === parsedFrom.host) + from = parsedFrom.relative; - if (!initial.func) { - initial.func = UNKNOWN_FUNCTION; + this.captureBreadcrumb({ + category: 'navigation', + data: { + to: to, + from: from } + }); + }, - if (stackInfo.stack.length > 0) { - if (stackInfo.stack[0].url === initial.url) { - if (stackInfo.stack[0].line === initial.line) { - return false; // already in stack trace - } else if (!stackInfo.stack[0].line && stackInfo.stack[0].func === initial.func) { - stackInfo.stack[0].line = initial.line; - return false; - } - } + _patchFunctionToString: function() { + var self = this; + self._originalFunctionToString = Function.prototype.toString; + // eslint-disable-next-line no-extend-native + Function.prototype.toString = function() { + if (typeof this === 'function' && this.__raven__) { + return self._originalFunctionToString.apply(this.__orig__, arguments); } + return self._originalFunctionToString.apply(this, arguments); + }; + }, - stackInfo.stack.unshift(initial); - stackInfo.partial = true; - return true; - } else { - stackInfo.incomplete = true; + _unpatchFunctionToString: function() { + if (this._originalFunctionToString) { + // eslint-disable-next-line no-extend-native + Function.prototype.toString = this._originalFunctionToString; } + }, - return false; - } /** - * Computes stack trace information by walking the arguments.caller - * chain at the time the exception occurred. This will cause earlier - * frames to be missed but is the only way to get any stack trace in - * Safari and IE. The top frame is restored by - * {@link augmentStackTraceWithInitialElement}. - * @param {Error} ex - * @return {?Object.} Stack trace information. - */ - - - function computeStackTraceByWalkingCallerChain(ex, depth) { - var functionName = /function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i, - stack = [], - funcs = {}, - recursion = false, - parts, - item; + * Wrap timer functions and event targets to catch errors and provide + * better metadata. + */ + _instrumentTryCatch: function() { + var self = this; - for (var curr = computeStackTraceByWalkingCallerChain.caller; curr && !recursion; curr = curr.caller) { - if (curr === computeStackTrace || curr === TraceKit.report) { - // console.log('skipping internal function'); - continue; - } + var wrappedBuiltIns = self._wrappedBuiltIns; - item = { - url: null, - func: UNKNOWN_FUNCTION, - line: null, - column: null + function wrapTimeFn(orig) { + return function(fn, t) { + // preserve arity + // Make a copy of the arguments to prevent deoptimization + // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments + var args = new Array(arguments.length); + for (var i = 0; i < args.length; ++i) { + args[i] = arguments[i]; + } + var originalCallback = args[0]; + if (isFunction(originalCallback)) { + args[0] = self.wrap(originalCallback); + } + + // IE < 9 doesn't support .call/.apply on setInterval/setTimeout, but it + // also supports only two arguments and doesn't care what this is, so we + // can just call the original function directly. + if (orig.apply) { + return orig.apply(this, args); + } else { + return orig(args[0], args[1]); + } }; + } - if (curr.name) { - item.func = curr.name; - } else if (parts = functionName.exec(curr.toString())) { - item.func = parts[1]; - } + var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; - if (typeof item.func === 'undefined') { - try { - item.func = parts.input.substring(0, parts.input.indexOf('{')); - } catch (e) {} - } + function wrapEventTarget(global) { + var proto = _window[global] && _window[global].prototype; + if (proto && proto.hasOwnProperty && proto.hasOwnProperty('addEventListener')) { + fill( + proto, + 'addEventListener', + function(orig) { + return function(evtName, fn, capture, secure) { + // preserve arity + try { + if (fn && fn.handleEvent) { + fn.handleEvent = self.wrap(fn.handleEvent); + } + } catch (err) { + // can sometimes get 'Permission denied to access property "handle Event' + } - if (funcs['' + curr]) { - recursion = true; - } else { - funcs['' + curr] = true; + // More breadcrumb DOM capture ... done here and not in `_instrumentBreadcrumbs` + // so that we don't have more than one wrapper function + var before, clickHandler, keypressHandler; + + if ( + autoBreadcrumbs && + autoBreadcrumbs.dom && + (global === 'EventTarget' || global === 'Node') + ) { + // NOTE: generating multiple handlers per addEventListener invocation, should + // revisit and verify we can just use one (almost certainly) + clickHandler = self._breadcrumbEventHandler('click'); + keypressHandler = self._keypressEventHandler(); + before = function(evt) { + // need to intercept every DOM event in `before` argument, in case that + // same wrapped method is re-used for different events (e.g. mousemove THEN click) + // see #724 + if (!evt) return; + + var eventType; + try { + eventType = evt.type; + } catch (e) { + // just accessing event properties can throw an exception in some rare circumstances + // see: https://github.com/getsentry/raven-js/issues/838 + return; + } + if (eventType === 'click') return clickHandler(evt); + else if (eventType === 'keypress') return keypressHandler(evt); + }; + } + return orig.call( + this, + evtName, + self.wrap(fn, undefined, before), + capture, + secure + ); + }; + }, + wrappedBuiltIns + ); + fill( + proto, + 'removeEventListener', + function(orig) { + return function(evt, fn, capture, secure) { + try { + fn = fn && (fn.__raven_wrapper__ ? fn.__raven_wrapper__ : fn); + } catch (e) { + // ignore, accessing __raven_wrapper__ will throw in some Selenium environments + } + return orig.call(this, evt, fn, capture, secure); + }; + }, + wrappedBuiltIns + ); } + } - stack.push(item); + fill(_window, 'setTimeout', wrapTimeFn, wrappedBuiltIns); + fill(_window, 'setInterval', wrapTimeFn, wrappedBuiltIns); + if (_window.requestAnimationFrame) { + fill( + _window, + 'requestAnimationFrame', + function(orig) { + return function(cb) { + return orig(self.wrap(cb)); + }; + }, + wrappedBuiltIns + ); } - if (depth) { - // console.log('depth is ' + depth); - // console.log('stack is ' + stack.length); - stack.splice(0, depth); + // event targets borrowed from bugsnag-js: + // https://github.com/bugsnag/bugsnag-js/blob/master/src/bugsnag.js#L666 + var eventTargets = [ + 'EventTarget', + 'Window', + 'Node', + 'ApplicationCache', + 'AudioTrackList', + 'ChannelMergerNode', + 'CryptoOperation', + 'EventSource', + 'FileReader', + 'HTMLUnknownElement', + 'IDBDatabase', + 'IDBRequest', + 'IDBTransaction', + 'KeyOperation', + 'MediaController', + 'MessagePort', + 'ModalWindow', + 'Notification', + 'SVGElementInstance', + 'Screen', + 'TextTrack', + 'TextTrackCue', + 'TextTrackList', + 'WebSocket', + 'WebSocketWorker', + 'Worker', + 'XMLHttpRequest', + 'XMLHttpRequestEventTarget', + 'XMLHttpRequestUpload' + ]; + for (var i = 0; i < eventTargets.length; i++) { + wrapEventTarget(eventTargets[i]); } + }, - var result = { - name: ex.name, - message: ex.message, - url: getLocationHref(), - stack: stack - }; - augmentStackTraceWithInitialElement(result, ex.sourceURL || ex.fileName, ex.line || ex.lineNumber, ex.message || ex.description); - return result; - } /** - * Computes a stack trace for an exception. - * @param {Error} ex - * @param {(string|number)=} depth - */ - - - function computeStackTrace(ex, depth) { - var stack = null; - depth = depth == null ? 0 : +depth; - - try { - stack = computeStackTraceFromStackProp(ex); - - if (stack) { - return stack; - } - } catch (e) { - if (TraceKit.debug) { - throw e; - } - } + * Instrument browser built-ins w/ breadcrumb capturing + * - XMLHttpRequests + * - DOM interactions (click/typing) + * - window.location changes + * - console + * + * Can be disabled or individually configured via the `autoBreadcrumbs` config option + */ + _instrumentBreadcrumbs: function() { + var self = this; + var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; - try { - stack = computeStackTraceByWalkingCallerChain(ex, depth + 1); + var wrappedBuiltIns = self._wrappedBuiltIns; - if (stack) { - return stack; - } - } catch (e) { - if (TraceKit.debug) { - throw e; + function wrapProp(prop, xhr) { + if (prop in xhr && isFunction(xhr[prop])) { + fill(xhr, prop, function(orig) { + return self.wrap(orig); + }); // intentionally don't track filled methods on XHR instances } } - return { - name: ex.name, - message: ex.message, - url: getLocationHref() - }; - } + if (autoBreadcrumbs.xhr && 'XMLHttpRequest' in _window) { + var xhrproto = _window.XMLHttpRequest && _window.XMLHttpRequest.prototype; + fill( + xhrproto, + 'open', + function(origOpen) { + return function(method, url) { + // preserve arity - computeStackTrace.augmentStackTraceWithInitialElement = augmentStackTraceWithInitialElement; - computeStackTrace.computeStackTraceFromStackProp = computeStackTraceFromStackProp; - return computeStackTrace; -}(); + // if Sentry key appears in URL, don't capture + if (isString(url) && url.indexOf(self._globalKey) === -1) { + this.__raven_xhr = { + method: method, + url: url, + status_code: null + }; + } -var tracekit = TraceKit; + return origOpen.apply(this, arguments); + }; + }, + wrappedBuiltIns + ); + + fill( + xhrproto, + 'send', + function(origSend) { + return function() { + // preserve arity + var xhr = this; -var stringify_1 = createCommonjsModule(function (module, exports) { - /* - json-stringify-safe - Like JSON.stringify, but doesn't throw on circular references. - - Originally forked from https://github.com/isaacs/json-stringify-safe - version 5.0.1 on 3/8/2017 and modified to handle Errors serialization - and IE8 compatibility. Tests for this are in test/vendor. - - ISC license: https://github.com/isaacs/json-stringify-safe/blob/master/LICENSE - */ - exports = module.exports = stringify; - exports.getSerialize = serializer; - - function indexOf(haystack, needle) { - for (var i = 0; i < haystack.length; ++i) { - if (haystack[i] === needle) return i; - } - - return -1; - } + function onreadystatechangeHandler() { + if (xhr.__raven_xhr && xhr.readyState === 4) { + try { + // touching statusCode in some platforms throws + // an exception + xhr.__raven_xhr.status_code = xhr.status; + } catch (e) { + /* do nothing */ + } - function stringify(obj, replacer, spaces, cycleReplacer) { - return JSON.stringify(obj, serializer(replacer, cycleReplacer), spaces); - } // https://github.com/ftlabs/js-abbreviate/blob/fa709e5f139e7770a71827b1893f22418097fbda/index.js#L95-L106 + self.captureBreadcrumb({ + type: 'http', + category: 'xhr', + data: xhr.__raven_xhr + }); + } + } + var props = ['onload', 'onerror', 'onprogress']; + for (var j = 0; j < props.length; j++) { + wrapProp(props[j], xhr); + } - function stringifyError(value) { - var err = { - // These properties are implemented as magical getters and don't show up in for in - stack: value.stack, - message: value.message, - name: value.name - }; + if ('onreadystatechange' in xhr && isFunction(xhr.onreadystatechange)) { + fill( + xhr, + 'onreadystatechange', + function(orig) { + return self.wrap(orig, undefined, onreadystatechangeHandler); + } /* intentionally don't track this instrumentation */ + ); + } else { + // if onreadystatechange wasn't actually set by the page on this xhr, we + // are free to set our own and capture the breadcrumb + xhr.onreadystatechange = onreadystatechangeHandler; + } - for (var i in value) { - if (Object.prototype.hasOwnProperty.call(value, i)) { - err[i] = value[i]; - } + return origSend.apply(this, arguments); + }; + }, + wrappedBuiltIns + ); } - return err; - } + if (autoBreadcrumbs.xhr && supportsFetch()) { + fill( + _window, + 'fetch', + function(origFetch) { + return function() { + // preserve arity + // Make a copy of the arguments to prevent deoptimization + // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments + var args = new Array(arguments.length); + for (var i = 0; i < args.length; ++i) { + args[i] = arguments[i]; + } - function serializer(replacer, cycleReplacer) { - var stack = []; - var keys = []; + var fetchInput = args[0]; + var method = 'GET'; + var url; - if (cycleReplacer == null) { - cycleReplacer = function cycleReplacer(key, value) { - if (stack[0] === value) { - return '[Circular ~]'; - } + if (typeof fetchInput === 'string') { + url = fetchInput; + } else if ('Request' in _window && fetchInput instanceof _window.Request) { + url = fetchInput.url; + if (fetchInput.method) { + method = fetchInput.method; + } + } else { + url = '' + fetchInput; + } - return '[Circular ~.' + keys.slice(0, indexOf(stack, value)).join('.') + ']'; - }; - } + // if Sentry key appears in URL, don't capture, as it's our own request + if (url.indexOf(self._globalKey) !== -1) { + return origFetch.apply(this, args); + } - return function (key, value) { - if (stack.length > 0) { - var thisPos = indexOf(stack, this); - ~thisPos ? stack.splice(thisPos + 1) : stack.push(this); - ~thisPos ? keys.splice(thisPos, Infinity, key) : keys.push(key); + if (args[1] && args[1].method) { + method = args[1].method; + } - if (~indexOf(stack, value)) { - value = cycleReplacer.call(this, key, value); - } - } else { - stack.push(value); - } + var fetchData = { + method: method, + url: url, + status_code: null + }; - return replacer == null ? value instanceof Error ? stringifyError(value) : value : replacer.call(this, key, value); - }; - } -}); -var stringify_2 = stringify_1.getSerialize; + return origFetch + .apply(this, args) + .then(function(response) { + fetchData.status_code = response.status; + + self.captureBreadcrumb({ + type: 'http', + category: 'fetch', + data: fetchData + }); + + return response; + }) + ['catch'](function(err) { + // if there is an error performing the request + self.captureBreadcrumb({ + type: 'http', + category: 'fetch', + data: fetchData, + level: 'error' + }); + + throw err; + }); + }; + }, + wrappedBuiltIns + ); + } -function RavenConfigError(message) { - this.name = 'RavenConfigError'; - this.message = message; -} + // Capture breadcrumbs from any click that is unhandled / bubbled up all the way + // to the document. Do this before we instrument addEventListener. + if (autoBreadcrumbs.dom && this._hasDocument) { + if (_document.addEventListener) { + _document.addEventListener('click', self._breadcrumbEventHandler('click'), false); + _document.addEventListener('keypress', self._keypressEventHandler(), false); + } else if (_document.attachEvent) { + // IE8 Compatibility + _document.attachEvent('onclick', self._breadcrumbEventHandler('click')); + _document.attachEvent('onkeypress', self._keypressEventHandler()); + } + } -RavenConfigError.prototype = new Error(); -RavenConfigError.prototype.constructor = RavenConfigError; -var configError = RavenConfigError; + // record navigation (URL) changes + // NOTE: in Chrome App environment, touching history.pushState, *even inside + // a try/catch block*, will cause Chrome to output an error to console.error + // borrowed from: https://github.com/angular/angular.js/pull/13945/files + var chrome = _window.chrome; + var isChromePackagedApp = chrome && chrome.app && chrome.app.runtime; + var hasPushAndReplaceState = + !isChromePackagedApp && + _window.history && + history.pushState && + history.replaceState; + if (autoBreadcrumbs.location && hasPushAndReplaceState) { + // TODO: remove onpopstate handler on uninstall() + var oldOnPopState = _window.onpopstate; + _window.onpopstate = function() { + var currentHref = self._location.href; + self._captureUrlChange(self._lastHref, currentHref); -var wrapMethod = function wrapMethod(console, level, callback) { - var originalConsoleLevel = console[level]; - var originalConsole = console; + if (oldOnPopState) { + return oldOnPopState.apply(this, arguments); + } + }; - if (!(level in console)) { - return; - } + var historyReplacementFunction = function(origHistFunction) { + // note history.pushState.length is 0; intentionally not declaring + // params to preserve 0 arity + return function(/* state, title, url */) { + var url = arguments.length > 2 ? arguments[2] : undefined; - var sentryLevel = level === 'warn' ? 'warning' : level; + // url argument is optional + if (url) { + // coerce to string (this is what pushState does) + self._captureUrlChange(self._lastHref, url + ''); + } - console[level] = function () { - var args = [].slice.call(arguments); - var msg = utils.safeJoin(args, ' '); - var data = { - level: sentryLevel, - logger: 'console', - extra: { - arguments: args - } - }; + return origHistFunction.apply(this, arguments); + }; + }; - if (level === 'assert') { - if (args[0] === false) { - // Default browsers message - msg = 'Assertion failed: ' + (utils.safeJoin(args.slice(1), ' ') || 'console.assert'); - data.extra.arguments = args.slice(1); - callback && callback(msg, data); - } - } else { - callback && callback(msg, data); - } // this fails for some browsers. :( + fill(history, 'pushState', historyReplacementFunction, wrappedBuiltIns); + fill(history, 'replaceState', historyReplacementFunction, wrappedBuiltIns); + } + if (autoBreadcrumbs.console && 'console' in _window && console.log) { + // console + var consoleMethodCallback = function(msg, data) { + self.captureBreadcrumb({ + message: msg, + level: data.level, + category: 'console' + }); + }; - if (originalConsoleLevel) { - // IE9 doesn't allow calling apply on console functions directly - // See: https://stackoverflow.com/questions/5472938/does-ie9-support-console-log-and-is-it-a-real-function#answer-5473193 - Function.prototype.apply.call(originalConsoleLevel, originalConsole, args); + each(['debug', 'info', 'warn', 'error', 'log'], function(_, level) { + wrapConsoleMethod(console, level, consoleMethodCallback); + }); } - }; -}; - -var console$1 = { - wrapMethod: wrapMethod -}; + }, -/*global XDomainRequest:false */ + _restoreBuiltIns: function() { + // restore any wrapped builtins + var builtin; + while (this._wrappedBuiltIns.length) { + builtin = this._wrappedBuiltIns.shift(); -var isError = utils.isError; -var isObject = utils.isObject; -var isErrorEvent = utils.isErrorEvent; -var isUndefined = utils.isUndefined; -var isFunction = utils.isFunction; -var isString = utils.isString; -var isArray = utils.isArray; -var isEmptyObject = utils.isEmptyObject; -var each = utils.each; -var objectMerge = utils.objectMerge; -var truncate = utils.truncate; -var objectFrozen = utils.objectFrozen; -var hasKey = utils.hasKey; -var joinRegExp = utils.joinRegExp; -var urlencode = utils.urlencode; -var uuid4 = utils.uuid4; -var htmlTreeAsString = utils.htmlTreeAsString; -var isSameException = utils.isSameException; -var isSameStacktrace = utils.isSameStacktrace; -var parseUrl = utils.parseUrl; -var fill = utils.fill; -var supportsFetch = utils.supportsFetch; -var wrapConsoleMethod = console$1.wrapMethod; -var dsnKeys = 'source protocol user pass host port path'.split(' '); -var dsnPattern = /^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/; + var obj = builtin[0], + name = builtin[1], + orig = builtin[2]; -function now() { - return +new Date(); -} // This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) + obj[name] = orig; + } + }, + _restoreConsole: function() { + // eslint-disable-next-line guard-for-in + for (var method in this._originalConsoleMethods) { + this._originalConsole[method] = this._originalConsoleMethods[method]; + } + }, -var _window$1 = typeof window !== 'undefined' ? window : typeof commonjsGlobal !== 'undefined' ? commonjsGlobal : typeof self !== 'undefined' ? self : {}; + _drainPlugins: function() { + var self = this; -var _document = _window$1.document; -var _navigator = _window$1.navigator; + // FIX ME TODO + each(this._plugins, function(_, plugin) { + var installer = plugin[0]; + var args = plugin[1]; + installer.apply(self, [self].concat(args)); + }); + }, -function keepOriginalCallback(original, callback) { - return isFunction(callback) ? function (data) { - return callback(data, original); - } : callback; -} // First, check for JSON support -// If there is no JSON, we no-op the core features of Raven -// since JSON is required to encode the payload + _parseDSN: function(str) { + var m = dsnPattern.exec(str), + dsn = {}, + i = 7; + try { + while (i--) dsn[dsnKeys[i]] = m[i] || ''; + } catch (e) { + throw new RavenConfigError('Invalid DSN: ' + str); + } -function Raven$1() { - this._hasJSON = !!(_typeof(JSON) === 'object' && JSON.stringify); // Raven can run in contexts where there's no document (react-native) + if (dsn.pass && !this._globalOptions.allowSecretKey) { + throw new RavenConfigError( + 'Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key' + ); + } - this._hasDocument = !isUndefined(_document); - this._hasNavigator = !isUndefined(_navigator); - this._lastCapturedException = null; - this._lastData = null; - this._lastEventId = null; - this._globalServer = null; - this._globalKey = null; - this._globalProject = null; - this._globalContext = {}; - this._globalOptions = { - // SENTRY_RELEASE can be injected by https://github.com/getsentry/sentry-webpack-plugin - release: _window$1.SENTRY_RELEASE && _window$1.SENTRY_RELEASE.id, - logger: 'javascript', - ignoreErrors: [], - ignoreUrls: [], - whitelistUrls: [], - includePaths: [], - headers: null, - collectWindowErrors: true, - maxMessageLength: 0, - // By default, truncates URL values to 250 chars - maxUrlLength: 250, - stackTraceLimit: 50, - autoBreadcrumbs: true, - instrument: true, - sampleRate: 1 - }; - this._fetchDefaults = { - method: 'POST', - keepalive: true, - referrerPolicy: 'origin' - }; - this._ignoreOnError = 0; - this._isRavenInstalled = false; - this._originalErrorStackTraceLimit = Error.stackTraceLimit; // capture references to window.console *and* all its methods first - // before the console plugin has a chance to monkey patch + return dsn; + }, - this._originalConsole = _window$1.console || {}; - this._originalConsoleMethods = {}; - this._plugins = []; - this._startTime = now(); - this._wrappedBuiltIns = []; - this._breadcrumbs = []; - this._lastCapturedEvent = null; - this._keypressTimeout; - this._location = _window$1.location; - this._lastHref = this._location && this._location.href; + _getGlobalServer: function(uri) { + // assemble the endpoint from the uri pieces + var globalServer = '//' + uri.host + (uri.port ? ':' + uri.port : ''); - this._resetBackoff(); // eslint-disable-next-line guard-for-in + if (uri.protocol) { + globalServer = uri.protocol + ':' + globalServer; + } + return globalServer; + }, + _handleOnErrorStackInfo: function() { + // if we are intentionally ignoring errors via onerror, bail out + if (!this._ignoreOnError) { + this._handleStackInfo.apply(this, arguments); + } + }, - for (var method in this._originalConsole) { - this._originalConsoleMethods[method] = this._originalConsole[method]; - } -} -/* - * The core Raven singleton - * - * @this {Raven} - */ + _handleStackInfo: function(stackInfo, options) { + var frames = this._prepareFrames(stackInfo, options); + this._triggerEvent('handle', { + stackInfo: stackInfo, + options: options + }); -Raven$1.prototype = { - // Hardcode version string so that raven source can be loaded directly via - // webpack (using a build step causes webpack #1617). Grunt verifies that - // this value matches package.json during build. - // See: https://github.com/getsentry/raven-js/issues/465 - VERSION: '3.22.2', - debug: false, - TraceKit: tracekit, - // alias to TraceKit + this._processException( + stackInfo.name, + stackInfo.message, + stackInfo.url, + stackInfo.lineno, + frames, + options + ); + }, - /* - * Configure Raven with a DSN and extra options - * - * @param {string} dsn The public Sentry DSN - * @param {object} options Set of global options [optional] - * @return {Raven} - */ - config: function config(dsn, options) { + _prepareFrames: function(stackInfo, options) { var self = this; + var frames = []; + if (stackInfo.stack && stackInfo.stack.length) { + each(stackInfo.stack, function(i, stack) { + var frame = self._normalizeFrame(stack, stackInfo.url); + if (frame) { + frames.push(frame); + } + }); - if (self._globalServer) { - this._logDebug('error', 'Error: Raven has already been configured'); - - return self; + // e.g. frames captured via captureMessage throw + if (options && options.trimHeadFrames) { + for (var j = 0; j < options.trimHeadFrames && j < frames.length; j++) { + frames[j].in_app = false; + } + } } + frames = frames.slice(0, this._globalOptions.stackTraceLimit); + return frames; + }, - if (!dsn) return self; - var globalOptions = self._globalOptions; // merge in options + _normalizeFrame: function(frame, stackInfoUrl) { + // normalize the frames data + var normalized = { + filename: frame.url, + lineno: frame.line, + colno: frame.column, + function: frame.func || '?' + }; - if (options) { - each(options, function (key, value) { - // tags and extra are special and need to be put into context - if (key === 'tags' || key === 'extra' || key === 'user') { - self._globalContext[key] = value; - } else { - globalOptions[key] = value; - } - }); + // Case when we don't have any information about the error + // E.g. throwing a string or raw object, instead of an `Error` in Firefox + // Generating synthetic error doesn't add any value here + // + // We should probably somehow let a user know that they should fix their code + if (!frame.url) { + normalized.filename = stackInfoUrl; // fallback to whole stacks url from onerror handler } - self.setDSN(dsn); // "Script error." is hard coded into browsers for errors that it can't read. - // this is the result of a script being pulled in from an external domain and CORS. + normalized.in_app = !// determine if an exception came from outside of our app + // first we check the global includePaths list. + ( + (!!this._globalOptions.includePaths.test && + !this._globalOptions.includePaths.test(normalized.filename)) || + // Now we check for fun, if the function name is Raven or TraceKit + /(Raven|TraceKit)\./.test(normalized['function']) || + // finally, we do a last ditch effort and check for raven.min.js + /raven\.(min\.)?js$/.test(normalized.filename) + ); - globalOptions.ignoreErrors.push(/^Script error\.?$/); - globalOptions.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/); // join regexp rules into one big rule + return normalized; + }, - globalOptions.ignoreErrors = joinRegExp(globalOptions.ignoreErrors); - globalOptions.ignoreUrls = globalOptions.ignoreUrls.length ? joinRegExp(globalOptions.ignoreUrls) : false; - globalOptions.whitelistUrls = globalOptions.whitelistUrls.length ? joinRegExp(globalOptions.whitelistUrls) : false; - globalOptions.includePaths = joinRegExp(globalOptions.includePaths); - globalOptions.maxBreadcrumbs = Math.max(0, Math.min(globalOptions.maxBreadcrumbs || 100, 100)); // default and hard limit is 100 + _processException: function(type, message, fileurl, lineno, frames, options) { + var prefixedMessage = (type ? type + ': ' : '') + (message || ''); + if ( + !!this._globalOptions.ignoreErrors.test && + (this._globalOptions.ignoreErrors.test(message) || + this._globalOptions.ignoreErrors.test(prefixedMessage)) + ) { + return; + } - var autoBreadcrumbDefaults = { - xhr: true, - console: true, - dom: true, - location: true, - sentry: true - }; - var autoBreadcrumbs = globalOptions.autoBreadcrumbs; + var stacktrace; - if ({}.toString.call(autoBreadcrumbs) === '[object Object]') { - autoBreadcrumbs = objectMerge(autoBreadcrumbDefaults, autoBreadcrumbs); - } else if (autoBreadcrumbs !== false) { - autoBreadcrumbs = autoBreadcrumbDefaults; + if (frames && frames.length) { + fileurl = frames[0].filename || fileurl; + // Sentry expects frames oldest to newest + // and JS sends them as newest to oldest + frames.reverse(); + stacktrace = {frames: frames}; + } else if (fileurl) { + stacktrace = { + frames: [ + { + filename: fileurl, + lineno: lineno, + in_app: true + } + ] + }; } - globalOptions.autoBreadcrumbs = autoBreadcrumbs; - var instrumentDefaults = { - tryCatch: true - }; - var instrument = globalOptions.instrument; + if ( + !!this._globalOptions.ignoreUrls.test && + this._globalOptions.ignoreUrls.test(fileurl) + ) { + return; + } - if ({}.toString.call(instrument) === '[object Object]') { - instrument = objectMerge(instrumentDefaults, instrument); - } else if (instrument !== false) { - instrument = instrumentDefaults; + if ( + !!this._globalOptions.whitelistUrls.test && + !this._globalOptions.whitelistUrls.test(fileurl) + ) { + return; } - globalOptions.instrument = instrument; - tracekit.collectWindowErrors = !!globalOptions.collectWindowErrors; // return for chaining + var data = objectMerge( + { + // sentry.interfaces.Exception + exception: { + values: [ + { + type: type, + value: message, + stacktrace: stacktrace + } + ] + }, + culprit: fileurl + }, + options + ); - return self; + // Fire away! + this._send(data); }, - /* - * Installs a global window.onerror error handler - * to capture and report uncaught exceptions. - * At this point, install() is required to be called due - * to the way TraceKit is set up. - * - * @return {Raven} - */ - install: function install() { - var self = this; + _trimPacket: function(data) { + // For now, we only want to truncate the two different messages + // but this could/should be expanded to just trim everything + var max = this._globalOptions.maxMessageLength; + if (data.message) { + data.message = truncate(data.message, max); + } + if (data.exception) { + var exception = data.exception.values[0]; + exception.value = truncate(exception.value, max); + } - if (self.isSetup() && !self._isRavenInstalled) { - tracekit.report.subscribe(function () { - self._handleOnErrorStackInfo.apply(self, arguments); - }); + var request = data.request; + if (request) { + if (request.url) { + request.url = truncate(request.url, this._globalOptions.maxUrlLength); + } + if (request.Referer) { + request.Referer = truncate(request.Referer, this._globalOptions.maxUrlLength); + } + } - self._patchFunctionToString(); + if (data.breadcrumbs && data.breadcrumbs.values) + this._trimBreadcrumbs(data.breadcrumbs); - if (self._globalOptions.instrument && self._globalOptions.instrument.tryCatch) { - self._instrumentTryCatch(); + return data; + }, + + /** + * Truncate breadcrumb values (right now just URLs) + */ + _trimBreadcrumbs: function(breadcrumbs) { + // known breadcrumb properties with urls + // TODO: also consider arbitrary prop values that start with (https?)?:// + var urlProps = ['to', 'from', 'url'], + urlProp, + crumb, + data; + + for (var i = 0; i < breadcrumbs.values.length; ++i) { + crumb = breadcrumbs.values[i]; + if ( + !crumb.hasOwnProperty('data') || + !isObject(crumb.data) || + objectFrozen(crumb.data) + ) + continue; + + data = objectMerge({}, crumb.data); + for (var j = 0; j < urlProps.length; ++j) { + urlProp = urlProps[j]; + if (data.hasOwnProperty(urlProp) && data[urlProp]) { + data[urlProp] = truncate(data[urlProp], this._globalOptions.maxUrlLength); + } } + breadcrumbs.values[i].data = data; + } + }, - if (self._globalOptions.autoBreadcrumbs) self._instrumentBreadcrumbs(); // Install all of the plugins + _getHttpData: function() { + if (!this._hasNavigator && !this._hasDocument) return; + var httpData = {}; + + if (this._hasNavigator && _navigator.userAgent) { + httpData.headers = { + 'User-Agent': navigator.userAgent + }; + } - self._drainPlugins(); + // Check in `window` instead of `document`, as we may be in ServiceWorker environment + if (_window.location && _window.location.href) { + httpData.url = _window.location.href; + } - self._isRavenInstalled = true; + if (this._hasDocument && _document.referrer) { + if (!httpData.headers) httpData.headers = {}; + httpData.headers.Referer = _document.referrer; } - Error.stackTraceLimit = self._globalOptions.stackTraceLimit; - return this; + return httpData; }, - /* - * Set the DSN (can be called multiple time unlike config) - * - * @param {string} dsn The public Sentry DSN - */ - setDSN: function setDSN(dsn) { - var self = this, - uri = self._parseDSN(dsn), - lastSlash = uri.path.lastIndexOf('/'), - path = uri.path.substr(1, lastSlash); - - self._dsn = dsn; - self._globalKey = uri.user; - self._globalSecret = uri.pass && uri.pass.substr(1); - self._globalProject = uri.path.substr(lastSlash + 1); - self._globalServer = self._getGlobalServer(uri); - self._globalEndpoint = self._globalServer + '/' + path + 'api/' + self._globalProject + '/store/'; // Reset backoff state since we may be pointing at a - // new project/server - - this._resetBackoff(); + _resetBackoff: function() { + this._backoffDuration = 0; + this._backoffStart = null; }, - /* - * Wrap code within a context so Raven can capture errors - * reliably across domains that is executed immediately. - * - * @param {object} options A specific set of options for this context [optional] - * @param {function} func The callback to be immediately executed within the context - * @param {array} args An array of arguments to be called with the callback [optional] - */ - context: function context(options, func, args) { - if (isFunction(options)) { - args = func || []; - func = options; - options = undefined; - } - - return this.wrap(options, func).apply(this, args); + _shouldBackoff: function() { + return this._backoffDuration && now() - this._backoffStart < this._backoffDuration; }, - /* - * Wrap code within a context and returns back a new function to be executed - * - * @param {object} options A specific set of options for this context [optional] - * @param {function} func The function to be wrapped in a new context - * @param {function} func A function to call before the try/catch wrapper [optional, private] - * @return {function} The newly wrapped functions with a context - */ - wrap: function wrap(options, func, _before) { - var self = this; // 1 argument has been passed, and it's not a function - // so just return it + /** + * Returns true if the in-process data payload matches the signature + * of the previously-sent data + * + * NOTE: This has to be done at this level because TraceKit can generate + * data from window.onerror WITHOUT an exception object (IE8, IE9, + * other old browsers). This can take the form of an "exception" + * data object with a single frame (derived from the onerror args). + */ + _isRepeatData: function(current) { + var last = this._lastData; - if (isUndefined(func) && !isFunction(options)) { - return options; - } // options is optional + if ( + !last || + current.message !== last.message || // defined for captureMessage + current.culprit !== last.culprit // defined for captureException/onerror + ) + return false; + // Stacktrace interface (i.e. from captureMessage) + if (current.stacktrace || last.stacktrace) { + return isSameStacktrace(current.stacktrace, last.stacktrace); + } else if (current.exception || last.exception) { + // Exception interface (i.e. from captureException/onerror) + return isSameException(current.exception, last.exception); + } - if (isFunction(options)) { - func = options; - options = undefined; - } // At this point, we've passed along 2 arguments, and the second one - // is not a function either, so we'll just return the second argument. + return true; + }, + _setBackoffState: function(request) { + // If we are already in a backoff state, don't change anything + if (this._shouldBackoff()) { + return; + } - if (!isFunction(func)) { - return func; - } // We don't wanna wrap it twice! + var status = request.status; + // 400 - project_id doesn't exist or some other fatal + // 401 - invalid/revoked dsn + // 429 - too many requests + if (!(status === 400 || status === 401 || status === 429)) return; + var retry; try { - if (func.__raven__) { - return func; - } // If this has already been wrapped in the past, return that - - - if (func.__raven_wrapper__) { - return func.__raven_wrapper__; + // If Retry-After is not in Access-Control-Expose-Headers, most + // browsers will throw an exception trying to access it + if (supportsFetch()) { + retry = request.headers.get('Retry-After'); + } else { + retry = request.getResponseHeader('Retry-After'); } + + // Retry-After is returned in seconds + retry = parseInt(retry, 10) * 1000; } catch (e) { - // Just accessing custom props in some Selenium environments - // can cause a "Permission denied" exception (see raven-js#495). - // Bail on wrapping and return the function as-is (defers to window.onerror). - return func; + /* eslint no-empty:0 */ } - function wrapped() { - var args = [], - i = arguments.length, - deep = !options || options && options.deep !== false; - - if (_before && isFunction(_before)) { - _before.apply(this, arguments); - } // Recursively wrap all of a function's arguments that are - // functions themselves. - + this._backoffDuration = retry + ? // If Sentry server returned a Retry-After value, use it + retry + : // Otherwise, double the last backoff duration (starts at 1 sec) + this._backoffDuration * 2 || 1000; - while (i--) { - args[i] = deep ? self.wrap(options, arguments[i]) : arguments[i]; - } - - try { - // Attempt to invoke user-land function - // NOTE: If you are a Sentry user, and you are seeing this stack frame, it - // means Raven caught an error invoking your application code. This is - // expected behavior and NOT indicative of a bug with Raven.js. - return func.apply(this, args); - } catch (e) { - self._ignoreNextOnError(); + this._backoffStart = now(); + }, - self.captureException(e, options); - throw e; - } - } // copy over properties of the old function + _send: function(data) { + var globalOptions = this._globalOptions; + var baseData = { + project: this._globalProject, + logger: globalOptions.logger, + platform: 'javascript' + }, + httpData = this._getHttpData(); - for (var property in func) { - if (hasKey(func, property)) { - wrapped[property] = func[property]; - } + if (httpData) { + baseData.request = httpData; } - wrapped.prototype = func.prototype; - func.__raven_wrapper__ = wrapped; // Signal that this function has been wrapped/filled already - // for both debugging and to prevent it to being wrapped/filled twice + // HACK: delete `trimHeadFrames` to prevent from appearing in outbound payload + if (data.trimHeadFrames) delete data.trimHeadFrames; - wrapped.__raven__ = true; - wrapped.__orig__ = func; - return wrapped; - }, + data = objectMerge(baseData, data); - /* - * Uninstalls the global error handler. - * - * @return {Raven} - */ - uninstall: function uninstall() { - tracekit.report.uninstall(); + // Merge in the tags and extra separately since objectMerge doesn't handle a deep merge + data.tags = objectMerge(objectMerge({}, this._globalContext.tags), data.tags); + data.extra = objectMerge(objectMerge({}, this._globalContext.extra), data.extra); - this._unpatchFunctionToString(); + // Send along our own collected metadata with extra + data.extra['session:duration'] = now() - this._startTime; - this._restoreBuiltIns(); + if (this._breadcrumbs && this._breadcrumbs.length > 0) { + // intentionally make shallow copy so that additions + // to breadcrumbs aren't accidentally sent in this request + data.breadcrumbs = { + values: [].slice.call(this._breadcrumbs, 0) + }; + } - this._restoreConsole(); + if (this._globalContext.user) { + // sentry.interfaces.User + data.user = this._globalContext.user; + } - Error.stackTraceLimit = this._originalErrorStackTraceLimit; - this._isRavenInstalled = false; - return this; - }, + // Include the environment if it's defined in globalOptions + if (globalOptions.environment) data.environment = globalOptions.environment; - /* - * Manually capture an exception and send it over to Sentry - * - * @param {error} ex An exception to be logged - * @param {object} options A specific set of options for this error [optional] - * @return {Raven} - */ - captureException: function captureException(ex, options) { - options = objectMerge({ - trimHeadFrames: 0 - }, options ? options : {}); // Cases for sending ex as a message, rather than an exception + // Include the release if it's defined in globalOptions + if (globalOptions.release) data.release = globalOptions.release; - var isNotError = !isError(ex); - var isNotErrorEvent = !isErrorEvent(ex); - var isErrorEventWithoutError = isErrorEvent(ex) && !ex.error; + // Include server_name if it's defined in globalOptions + if (globalOptions.serverName) data.server_name = globalOptions.serverName; - if (isNotError && isNotErrorEvent || isErrorEventWithoutError) { - return this.captureMessage(ex, objectMerge(options, { - stacktrace: true, - // if we fall back to captureMessage, default to attempting a new trace - trimHeadFrames: options.trimHeadFrames + 1 - })); - } // Get actual Error from ErrorEvent + data = this._sanitizeData(data); + // Cleanup empty properties before sending them to the server + Object.keys(data).forEach(function(key) { + if (data[key] == null || data[key] === '' || isEmptyObject(data[key])) { + delete data[key]; + } + }); - if (isErrorEvent(ex)) ex = ex.error; // Store the raw exception object for potential debugging and introspection + if (isFunction(globalOptions.dataCallback)) { + data = globalOptions.dataCallback(data) || data; + } - this._lastCapturedException = ex; // TraceKit.report will re-raise any exception passed to it, - // which means you have to wrap it in try/catch. Instead, we - // can wrap it here and only re-raise if TraceKit.report - // raises an exception different from the one we asked to - // report on. + // Why?????????? + if (!data || isEmptyObject(data)) { + return; + } - try { - var stack = tracekit.computeStackTrace(ex); + // Check if the request should be filtered or not + if ( + isFunction(globalOptions.shouldSendCallback) && + !globalOptions.shouldSendCallback(data) + ) { + return; + } - this._handleStackInfo(stack, options); - } catch (ex1) { - if (ex !== ex1) { - throw ex1; + // Backoff state: Sentry server previously responded w/ an error (e.g. 429 - too many requests), + // so drop requests until "cool-off" period has elapsed. + if (this._shouldBackoff()) { + this._logDebug('warn', 'Raven dropped error due to backoff: ', data); + return; + } + + if (typeof globalOptions.sampleRate === 'number') { + if (Math.random() < globalOptions.sampleRate) { + this._sendProcessedPayload(data); } + } else { + this._sendProcessedPayload(data); } + }, - return this; + _sanitizeData: function(data) { + return sanitize(data, this._globalOptions.sanitizeKeys); }, - /* - * Manually send a message to Sentry - * - * @param {string} msg A plain message to be captured in Sentry - * @param {object} options A specific set of options for this message [optional] - * @return {Raven} - */ - captureMessage: function captureMessage(msg, options) { - // config() automagically converts ignoreErrors from a list to a RegExp so we need to test for an - // early call; we'll error on the side of logging anything called before configuration since it's - // probably something you should see: - if (!!this._globalOptions.ignoreErrors.test && this._globalOptions.ignoreErrors.test(msg)) { - return; - } + _getUuid: function() { + return uuid4(); + }, - options = options || {}; - var data = objectMerge({ - message: msg + '' // Make sure it's actually a string + _sendProcessedPayload: function(data, callback) { + var self = this; + var globalOptions = this._globalOptions; - }, options); - var ex; // Generate a "synthetic" stack trace from this point. - // NOTE: If you are a Sentry user, and you are seeing this stack frame, it is NOT indicative - // of a bug with Raven.js. Sentry generates synthetic traces either by configuration, - // or if it catches a thrown object without a "stack" property. + if (!this.isSetup()) return; - try { - throw new Error(msg); - } catch (ex1) { - ex = ex1; - } // null exception name so `Error` isn't prefixed to msg + // Try and clean up the packet before sending by truncating long values + data = this._trimPacket(data); + // ideally duplicate error testing should occur *before* dataCallback/shouldSendCallback, + // but this would require copying an un-truncated copy of the data packet, which can be + // arbitrarily deep (extra_data) -- could be worthwhile? will revisit + if (!this._globalOptions.allowDuplicates && this._isRepeatData(data)) { + this._logDebug('warn', 'Raven dropped repeat event: ', data); + return; + } - ex.name = null; - var stack = tracekit.computeStackTrace(ex); // stack[0] is `throw new Error(msg)` call itself, we are interested in the frame that was just before that, stack[1] + // Send along an event_id if not explicitly passed. + // This event_id can be used to reference the error within Sentry itself. + // Set lastEventId after we know the error should actually be sent + this._lastEventId = data.event_id || (data.event_id = this._getUuid()); - var initialCall = isArray(stack.stack) && stack.stack[1]; - var fileurl = initialCall && initialCall.url || ''; + // Store outbound payload after trim + this._lastData = data; - if (!!this._globalOptions.ignoreUrls.test && this._globalOptions.ignoreUrls.test(fileurl)) { - return; + this._logDebug('debug', 'Raven about to send:', data); + + var auth = { + sentry_version: '7', + sentry_client: 'raven-js/' + this.VERSION, + sentry_key: this._globalKey + }; + + if (this._globalSecret) { + auth.sentry_secret = this._globalSecret; } - if (!!this._globalOptions.whitelistUrls.test && !this._globalOptions.whitelistUrls.test(fileurl)) { - return; + var exception = data.exception && data.exception.values[0]; + + // only capture 'sentry' breadcrumb is autoBreadcrumbs is truthy + if ( + this._globalOptions.autoBreadcrumbs && + this._globalOptions.autoBreadcrumbs.sentry + ) { + this.captureBreadcrumb({ + category: 'sentry', + message: exception + ? (exception.type ? exception.type + ': ' : '') + exception.value + : data.message, + event_id: data.event_id, + level: data.level || 'error' // presume error unless specified + }); } - if (this._globalOptions.stacktrace || options && options.stacktrace) { - options = objectMerge({ - // fingerprint on msg, not stack trace (legacy behavior, could be - // revisited) - fingerprint: msg, - // since we know this is a synthetic trace, the top N-most frames - // MUST be from Raven.js, so mark them as in_app later by setting - // trimHeadFrames - trimHeadFrames: (options.trimHeadFrames || 0) + 1 - }, options); - - var frames = this._prepareFrames(stack, options); - - data.stacktrace = { - // Sentry expects frames oldest to newest - frames: frames.reverse() - }; - } // Fire away! + var url = this._globalEndpoint; + (globalOptions.transport || this._makeRequest).call(this, { + url: url, + auth: auth, + data: data, + options: globalOptions, + onSuccess: function success() { + self._resetBackoff(); + self._triggerEvent('success', { + data: data, + src: url + }); + callback && callback(); + }, + onError: function failure(error) { + self._logDebug('error', 'Raven transport failed to send: ', error); - this._send(data); + if (error.request) { + self._setBackoffState(error.request); + } - return this; + self._triggerEvent('failure', { + data: data, + src: url + }); + error = error || new Error('Raven send failed (no additional details provided)'); + callback && callback(error); + } + }); }, - captureBreadcrumb: function captureBreadcrumb(obj) { - var crumb = objectMerge({ - timestamp: now() / 1000 - }, obj); - - if (isFunction(this._globalOptions.breadcrumbCallback)) { - var result = this._globalOptions.breadcrumbCallback(crumb); - if (isObject(result) && !isEmptyObject(result)) { - crumb = result; - } else if (result === false) { - return this; - } - } + _makeRequest: function(opts) { + // Auth is intentionally sent as part of query string (NOT as custom HTTP header) to avoid preflight CORS requests + var url = opts.url + '?' + urlencode(opts.auth); - this._breadcrumbs.push(crumb); + var evaluatedHeaders = null; + var evaluatedFetchParameters = {}; - if (this._breadcrumbs.length > this._globalOptions.maxBreadcrumbs) { - this._breadcrumbs.shift(); + if (opts.options.headers) { + evaluatedHeaders = this._evaluateHash(opts.options.headers); } - return this; - }, - addPlugin: function addPlugin(plugin - /*arg1, arg2, ... argN*/ - ) { - var pluginArgs = [].slice.call(arguments, 1); + if (opts.options.fetchParameters) { + evaluatedFetchParameters = this._evaluateHash(opts.options.fetchParameters); + } - this._plugins.push([plugin, pluginArgs]); + if (supportsFetch()) { + evaluatedFetchParameters.body = stringify(opts.data); - if (this._isRavenInstalled) { - this._drainPlugins(); - } + var defaultFetchOptions = objectMerge({}, this._fetchDefaults); + var fetchOptions = objectMerge(defaultFetchOptions, evaluatedFetchParameters); - return this; - }, + if (evaluatedHeaders) { + fetchOptions.headers = evaluatedHeaders; + } - /* - * Set/clear a user to be sent along with the payload. - * - * @param {object} user An object representing user data [optional] - * @return {Raven} - */ - setUserContext: function setUserContext(user) { - // Intentionally do not merge here since that's an unexpected behavior. - this._globalContext.user = user; - return this; - }, + return _window + .fetch(url, fetchOptions) + .then(function(response) { + if (response.ok) { + opts.onSuccess && opts.onSuccess(); + } else { + var error = new Error('Sentry error code: ' + response.status); + // It's called request only to keep compatibility with XHR interface + // and not add more redundant checks in setBackoffState method + error.request = response; + opts.onError && opts.onError(error); + } + }) + ['catch'](function() { + opts.onError && + opts.onError(new Error('Sentry error code: network unavailable')); + }); + } - /* - * Merge extra attributes to be sent along with the payload. - * - * @param {object} extra An object representing extra data [optional] - * @return {Raven} - */ - setExtraContext: function setExtraContext(extra) { - this._mergeContext('extra', extra); + var request = _window.XMLHttpRequest && new _window.XMLHttpRequest(); + if (!request) return; - return this; - }, + // if browser doesn't support CORS (e.g. IE7), we are out of luck + var hasCORS = 'withCredentials' in request || typeof XDomainRequest !== 'undefined'; - /* - * Merge tags to be sent along with the payload. - * - * @param {object} tags An object representing tags [optional] - * @return {Raven} - */ - setTagsContext: function setTagsContext(tags) { - this._mergeContext('tags', tags); + if (!hasCORS) return; - return this; - }, + if ('withCredentials' in request) { + request.onreadystatechange = function() { + if (request.readyState !== 4) { + return; + } else if (request.status === 200) { + opts.onSuccess && opts.onSuccess(); + } else if (opts.onError) { + var err = new Error('Sentry error code: ' + request.status); + err.request = request; + opts.onError(err); + } + }; + } else { + request = new XDomainRequest(); + // xdomainrequest cannot go http -> https (or vice versa), + // so always use protocol relative + url = url.replace(/^https?:/, ''); - /* - * Clear all of the context. - * - * @return {Raven} - */ - clearContext: function clearContext() { - this._globalContext = {}; - return this; - }, + // onreadystatechange not supported by XDomainRequest + if (opts.onSuccess) { + request.onload = opts.onSuccess; + } + if (opts.onError) { + request.onerror = function() { + var err = new Error('Sentry error code: XDomainRequest'); + err.request = request; + opts.onError(err); + }; + } + } - /* - * Get a copy of the current context. This cannot be mutated. - * - * @return {object} copy of context - */ - getContext: function getContext() { - // lol javascript - return JSON.parse(stringify_1(this._globalContext)); - }, + request.open('POST', url); - /* - * Set environment of application - * - * @param {string} environment Typically something like 'production'. - * @return {Raven} - */ - setEnvironment: function setEnvironment(environment) { - this._globalOptions.environment = environment; - return this; - }, + if (evaluatedHeaders) { + each(evaluatedHeaders, function(key, value) { + request.setRequestHeader(key, value); + }); + } - /* - * Set release version of application - * - * @param {string} release Typically something like a git SHA to identify version - * @return {Raven} - */ - setRelease: function setRelease(release) { - this._globalOptions.release = release; - return this; + request.send(stringify(opts.data)); }, - /* - * Set the dataCallback option - * - * @param {function} callback The callback to run which allows the - * data blob to be mutated before sending - * @return {Raven} - */ - setDataCallback: function setDataCallback(callback) { - var original = this._globalOptions.dataCallback; - this._globalOptions.dataCallback = keepOriginalCallback(original, callback); - return this; - }, + _evaluateHash: function(hash) { + var evaluated = {}; - /* - * Set the breadcrumbCallback option - * - * @param {function} callback The callback to run which allows filtering - * or mutating breadcrumbs - * @return {Raven} - */ - setBreadcrumbCallback: function setBreadcrumbCallback(callback) { - var original = this._globalOptions.breadcrumbCallback; - this._globalOptions.breadcrumbCallback = keepOriginalCallback(original, callback); - return this; - }, + for (var key in hash) { + if (hash.hasOwnProperty(key)) { + var value = hash[key]; + evaluated[key] = typeof value === 'function' ? value() : value; + } + } - /* - * Set the shouldSendCallback option - * - * @param {function} callback The callback to run which allows - * introspecting the blob before sending - * @return {Raven} - */ - setShouldSendCallback: function setShouldSendCallback(callback) { - var original = this._globalOptions.shouldSendCallback; - this._globalOptions.shouldSendCallback = keepOriginalCallback(original, callback); - return this; + return evaluated; }, - /** - * Override the default HTTP transport mechanism that transmits data - * to the Sentry server. - * - * @param {function} transport Function invoked instead of the default - * `makeRequest` handler. - * - * @return {Raven} - */ - setTransport: function setTransport(transport) { - this._globalOptions.transport = transport; - return this; + _logDebug: function(level) { + // We allow `Raven.debug` and `Raven.config(DSN, { debug: true })` to not make backward incompatible API change + if ( + this._originalConsoleMethods[level] && + (this.debug || this._globalOptions.debug) + ) { + // In IE<10 console methods do not have their own 'apply' method + Function.prototype.apply.call( + this._originalConsoleMethods[level], + this._originalConsole, + [].slice.call(arguments, 1) + ); + } }, - /* - * Get the latest raw exception that was captured by Raven. - * - * @return {error} - */ - lastException: function lastException() { - return this._lastCapturedException; - }, + _mergeContext: function(key, context) { + if (isUndefined(context)) { + delete this._globalContext[key]; + } else { + this._globalContext[key] = objectMerge(this._globalContext[key] || {}, context); + } + } +}; - /* - * Get the last event id - * - * @return {string} - */ - lastEventId: function lastEventId() { - return this._lastEventId; - }, +// Deprecations +Raven.prototype.setUser = Raven.prototype.setUserContext; +Raven.prototype.setReleaseContext = Raven.prototype.setRelease; - /* - * Determine if Raven is setup and ready to go. - * - * @return {boolean} - */ - isSetup: function isSetup() { - if (!this._hasJSON) return false; // needs JSON support +module.exports = Raven; - if (!this._globalServer) { - if (!this.ravenNotConfiguredError) { - this.ravenNotConfiguredError = true; +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"10":10,"3":3,"4":4,"7":7,"8":8,"9":9}],6:[function(_dereq_,module,exports){ +(function (global){ +/** + * Enforces a single instance of the Raven client, and the + * main entry point for Raven. If you are a consumer of the + * Raven library, you SHOULD load this file (vs raven.js). + **/ - this._logDebug('error', 'Error: Raven has not been configured.'); - } +var RavenConstructor = _dereq_(5); - return false; - } +// This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) +var _window = + typeof window !== 'undefined' + ? window + : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; +var _Raven = _window.Raven; - return true; - }, - afterLoad: function afterLoad() { - // TODO: remove window dependence? - // Attempt to initialize Raven on load - var RavenConfig = _window$1.RavenConfig; +var Raven = new RavenConstructor(); - if (RavenConfig) { - this.config(RavenConfig.dsn, RavenConfig.config).install(); - } - }, - showReportDialog: function showReportDialog(options) { - if (!_document // doesn't work without a document (React native) - ) return; - options = options || {}; - var lastEventId = options.eventId || this.lastEventId(); +/* + * Allow multiple versions of Raven to be installed. + * Strip Raven from the global context and returns the instance. + * + * @return {Raven} + */ +Raven.noConflict = function() { + _window.Raven = _Raven; + return Raven; +}; - if (!lastEventId) { - throw new configError('Missing eventId'); - } +Raven.afterLoad(); - var dsn = options.dsn || this._dsn; +module.exports = Raven; - if (!dsn) { - throw new configError('Missing DSN'); - } +/** + * DISCLAIMER: + * + * Expose `Client` constructor for cases where user want to track multiple "sub-applications" in one larger app. + * It's not meant to be used by a wide audience, so pleaaase make sure that you know what you're doing before using it. + * Accidentally calling `install` multiple times, may result in an unexpected behavior that's very hard to debug. + * + * It's called `Client' to be in-line with Raven Node implementation. + * + * HOWTO: + * + * import Raven from 'raven-js'; + * + * const someAppReporter = new Raven.Client(); + * const someOtherAppReporter = new Raven.Client(); + * + * someAppReporter.config('__DSN__', { + * ...config goes here + * }); + * + * someOtherAppReporter.config('__OTHER_DSN__', { + * ...config goes here + * }); + * + * someAppReporter.captureMessage(...); + * someAppReporter.captureException(...); + * someAppReporter.captureBreadcrumb(...); + * + * someOtherAppReporter.captureMessage(...); + * someOtherAppReporter.captureException(...); + * someOtherAppReporter.captureBreadcrumb(...); + * + * It should "just work". + */ +module.exports.Client = RavenConstructor; - var encode = encodeURIComponent; - var qs = ''; - qs += '?eventId=' + encode(lastEventId); - qs += '&dsn=' + encode(dsn); - var user = options.user || this._globalContext.user; +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"5":5}],7:[function(_dereq_,module,exports){ +(function (global){ +var stringify = _dereq_(9); - if (user) { - if (user.name) qs += '&name=' + encode(user.name); - if (user.email) qs += '&email=' + encode(user.email); - } +var _window = + typeof window !== 'undefined' + ? window + : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; - var globalServer = this._getGlobalServer(this._parseDSN(dsn)); +function isObject(what) { + return typeof what === 'object' && what !== null; +} - var script = _document.createElement('script'); +// Yanked from https://git.io/vS8DV re-used under CC0 +// with some tiny modifications +function isError(value) { + switch ({}.toString.call(value)) { + case '[object Error]': + return true; + case '[object Exception]': + return true; + case '[object DOMException]': + return true; + default: + return value instanceof Error; + } +} - script.async = true; - script.src = globalServer + '/api/embed/error-page/' + qs; +function isErrorEvent(value) { + return supportsErrorEvent() && {}.toString.call(value) === '[object ErrorEvent]'; +} - (_document.head || _document.body).appendChild(script); - }, +function isUndefined(what) { + return what === void 0; +} - /**** Private functions ****/ - _ignoreNextOnError: function _ignoreNextOnError() { - var self = this; - this._ignoreOnError += 1; - setTimeout(function () { - // onerror should trigger before setTimeout - self._ignoreOnError -= 1; - }); - }, - _triggerEvent: function _triggerEvent(eventType, options) { - // NOTE: `event` is a native browser thing, so let's avoid conflicting wiht it - var evt, key; - if (!this._hasDocument) return; - options = options || {}; - eventType = 'raven' + eventType.substr(0, 1).toUpperCase() + eventType.substr(1); +function isFunction(what) { + return typeof what === 'function'; +} - if (_document.createEvent) { - evt = _document.createEvent('HTMLEvents'); - evt.initEvent(eventType, true, true); - } else { - evt = _document.createEventObject(); - evt.eventType = eventType; - } +function isPlainObject(what) { + return Object.prototype.toString.call(what) === '[object Object]'; +} - for (key in options) { - if (hasKey(options, key)) { - evt[key] = options[key]; - } - } +function isString(what) { + return Object.prototype.toString.call(what) === '[object String]'; +} - if (_document.createEvent) { - // IE9 if standards - _document.dispatchEvent(evt); - } else { - // IE8 regardless of Quirks or Standards - // IE9 if quirks - try { - _document.fireEvent('on' + evt.eventType.toLowerCase(), evt); - } catch (e) {// Do nothing - } - } - }, +function isArray(what) { + return Object.prototype.toString.call(what) === '[object Array]'; +} - /** - * Wraps addEventListener to capture UI breadcrumbs - * @param evtName the event name (e.g. "click") - * @returns {Function} - * @private - */ - _breadcrumbEventHandler: function _breadcrumbEventHandler(evtName) { - var self = this; - return function (evt) { - // reset keypress timeout; e.g. triggering a 'click' after - // a 'keypress' will reset the keypress debounce so that a new - // set of keypresses can be recorded - self._keypressTimeout = null; // It's possible this handler might trigger multiple times for the same - // event (e.g. event propagation through node ancestors). Ignore if we've - // already captured the event. +function isEmptyObject(what) { + if (!isPlainObject(what)) return false; - if (self._lastCapturedEvent === evt) return; - self._lastCapturedEvent = evt; // try/catch both: - // - accessing evt.target (see getsentry/raven-js#838, #768) - // - `htmlTreeAsString` because it's complex, and just accessing the DOM incorrectly - // can throw an exception in some circumstances. + for (var _ in what) { + if (what.hasOwnProperty(_)) { + return false; + } + } + return true; +} - var target; +function supportsErrorEvent() { + try { + new ErrorEvent(''); // eslint-disable-line no-new + return true; + } catch (e) { + return false; + } +} - try { - target = htmlTreeAsString(evt.target); - } catch (e) { - target = ''; - } +function supportsFetch() { + if (!('fetch' in _window)) return false; - self.captureBreadcrumb({ - category: 'ui.' + evtName, - // e.g. ui.click, ui.input - message: target - }); - }; - }, + try { + new Headers(); // eslint-disable-line no-new + new Request(''); // eslint-disable-line no-new + new Response(); // eslint-disable-line no-new + return true; + } catch (e) { + return false; + } +} - /** - * Wraps addEventListener to capture keypress UI events - * @returns {Function} - * @private - */ - _keypressEventHandler: function _keypressEventHandler() { - var self = this, - debounceDuration = 1000; // milliseconds - // TODO: if somehow user switches keypress target before - // debounce timeout is triggered, we will only capture - // a single breadcrumb from the FIRST target (acceptable?) +// Despite all stars in the sky saying that Edge supports old draft syntax, aka 'never', 'always', 'origin' and 'default +// https://caniuse.com/#feat=referrer-policy +// It doesn't. And it throw exception instead of ignoring this parameter... +// REF: https://github.com/getsentry/raven-js/issues/1233 +function supportsReferrerPolicy() { + if (!supportsFetch()) return false; - return function (evt) { - var target; + try { + // eslint-disable-next-line no-new + new Request('pickleRick', { + referrerPolicy: 'origin' + }); + return true; + } catch (e) { + return false; + } +} - try { - target = evt.target; - } catch (e) { - // just accessing event properties can throw an exception in some rare circumstances - // see: https://github.com/getsentry/raven-js/issues/838 - return; - } +function supportsPromiseRejectionEvent() { + return typeof PromiseRejectionEvent === 'function'; +} - var tagName = target && target.tagName; // only consider keypress events on actual input elements - // this will disregard keypresses targeting body (e.g. tabbing - // through elements, hotkeys, etc) +function wrappedCallback(callback) { + function dataCallback(data, original) { + var normalizedData = callback(data) || data; + if (original) { + return original(normalizedData) || normalizedData; + } + return normalizedData; + } - if (!tagName || tagName !== 'INPUT' && tagName !== 'TEXTAREA' && !target.isContentEditable) return; // record first keypress in a series, but ignore subsequent - // keypresses until debounce clears + return dataCallback; +} - var timeout = self._keypressTimeout; +function each(obj, callback) { + var i, j; - if (!timeout) { - self._breadcrumbEventHandler('input')(evt); + if (isUndefined(obj.length)) { + for (i in obj) { + if (hasKey(obj, i)) { + callback.call(null, i, obj[i]); + } + } + } else { + j = obj.length; + if (j) { + for (i = 0; i < j; i++) { + callback.call(null, i, obj[i]); } + } + } +} - clearTimeout(timeout); - self._keypressTimeout = setTimeout(function () { - self._keypressTimeout = null; - }, debounceDuration); - }; - }, +function objectMerge(obj1, obj2) { + if (!obj2) { + return obj1; + } + each(obj2, function(key, value) { + obj1[key] = value; + }); + return obj1; +} - /** - * Captures a breadcrumb of type "navigation", normalizing input URLs - * @param to the originating URL - * @param from the target URL - * @private - */ - _captureUrlChange: function _captureUrlChange(from, to) { - var parsedLoc = parseUrl(this._location.href); - var parsedTo = parseUrl(to); - var parsedFrom = parseUrl(from); // because onpopstate only tells you the "new" (to) value of location.href, and - // not the previous (from) value, we need to track the value of the current URL - // state ourselves +/** + * This function is only used for react-native. + * react-native freezes object that have already been sent over the + * js bridge. We need this function in order to check if the object is frozen. + * So it's ok that objectFrozen returns false if Object.isFrozen is not + * supported because it's not relevant for other "platforms". See related issue: + * https://github.com/getsentry/react-native-sentry/issues/57 + */ +function objectFrozen(obj) { + if (!Object.isFrozen) { + return false; + } + return Object.isFrozen(obj); +} - this._lastHref = to; // Use only the path component of the URL if the URL matches the current - // document (almost all the time when using pushState) +function truncate(str, max) { + if (typeof max !== 'number') { + throw new Error('2nd argument to `truncate` function should be a number'); + } + if (typeof str !== 'string' || max === 0) { + return str; + } + return str.length <= max ? str : str.substr(0, max) + '\u2026'; +} - if (parsedLoc.protocol === parsedTo.protocol && parsedLoc.host === parsedTo.host) to = parsedTo.relative; - if (parsedLoc.protocol === parsedFrom.protocol && parsedLoc.host === parsedFrom.host) from = parsedFrom.relative; - this.captureBreadcrumb({ - category: 'navigation', - data: { - to: to, - from: from - } - }); - }, - _patchFunctionToString: function _patchFunctionToString() { - var self = this; - self._originalFunctionToString = Function.prototype.toString; // eslint-disable-next-line no-extend-native +/** + * hasKey, a better form of hasOwnProperty + * Example: hasKey(MainHostObject, property) === true/false + * + * @param {Object} host object to check property + * @param {string} key to check + */ +function hasKey(object, key) { + return Object.prototype.hasOwnProperty.call(object, key); +} - Function.prototype.toString = function () { - if (typeof this === 'function' && this.__raven__) { - return self._originalFunctionToString.apply(this.__orig__, arguments); - } +function joinRegExp(patterns) { + // Combine an array of regular expressions and strings into one large regexp + // Be mad. + var sources = [], + i = 0, + len = patterns.length, + pattern; - return self._originalFunctionToString.apply(this, arguments); - }; - }, - _unpatchFunctionToString: function _unpatchFunctionToString() { - if (this._originalFunctionToString) { - // eslint-disable-next-line no-extend-native - Function.prototype.toString = this._originalFunctionToString; + for (; i < len; i++) { + pattern = patterns[i]; + if (isString(pattern)) { + // If it's a string, we need to escape it + // Taken from: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions + sources.push(pattern.replace(/([.*+?^=!:${}()|\[\]\/\\])/g, '\\$1')); + } else if (pattern && pattern.source) { + // If it's a regexp already, we want to extract the source + sources.push(pattern.source); } - }, - - /** - * Wrap timer functions and event targets to catch errors and provide - * better metadata. - */ - _instrumentTryCatch: function _instrumentTryCatch() { - var self = this; - var wrappedBuiltIns = self._wrappedBuiltIns; - - function wrapTimeFn(orig) { - return function (fn, t) { - // preserve arity - // Make a copy of the arguments to prevent deoptimization - // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments - var args = new Array(arguments.length); + // Intentionally skip other cases + } + return new RegExp(sources.join('|'), 'i'); +} - for (var i = 0; i < args.length; ++i) { - args[i] = arguments[i]; - } +function urlencode(o) { + var pairs = []; + each(o, function(key, value) { + pairs.push(encodeURIComponent(key) + '=' + encodeURIComponent(value)); + }); + return pairs.join('&'); +} - var originalCallback = args[0]; +// borrowed from https://tools.ietf.org/html/rfc3986#appendix-B +// intentionally using regex and not href parsing trick because React Native and other +// environments where DOM might not be available +function parseUrl(url) { + if (typeof url !== 'string') return {}; + var match = url.match(/^(([^:\/?#]+):)?(\/\/([^\/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?$/); - if (isFunction(originalCallback)) { - args[0] = self.wrap(originalCallback); - } // IE < 9 doesn't support .call/.apply on setInterval/setTimeout, but it - // also supports only two arguments and doesn't care what this is, so we - // can just call the original function directly. + // coerce to undefined values to empty string so we don't get 'undefined' + var query = match[6] || ''; + var fragment = match[8] || ''; + return { + protocol: match[2], + host: match[4], + path: match[5], + relative: match[5] + query + fragment // everything minus origin + }; +} +function uuid4() { + var crypto = _window.crypto || _window.msCrypto; + if (!isUndefined(crypto) && crypto.getRandomValues) { + // Use window.crypto API if available + // eslint-disable-next-line no-undef + var arr = new Uint16Array(8); + crypto.getRandomValues(arr); - if (orig.apply) { - return orig.apply(this, args); - } else { - return orig(args[0], args[1]); - } - }; - } + // set 4 in byte 7 + arr[3] = (arr[3] & 0xfff) | 0x4000; + // set 2 most significant bits of byte 9 to '10' + arr[4] = (arr[4] & 0x3fff) | 0x8000; - var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; + var pad = function(num) { + var v = num.toString(16); + while (v.length < 4) { + v = '0' + v; + } + return v; + }; - function wrapEventTarget(global) { - var proto = _window$1[global] && _window$1[global].prototype; + return ( + pad(arr[0]) + + pad(arr[1]) + + pad(arr[2]) + + pad(arr[3]) + + pad(arr[4]) + + pad(arr[5]) + + pad(arr[6]) + + pad(arr[7]) + ); + } else { + // http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/2117523#2117523 + return 'xxxxxxxxxxxx4xxxyxxxxxxxxxxxxxxx'.replace(/[xy]/g, function(c) { + var r = (Math.random() * 16) | 0, + v = c === 'x' ? r : (r & 0x3) | 0x8; + return v.toString(16); + }); + } +} - if (proto && proto.hasOwnProperty && proto.hasOwnProperty('addEventListener')) { - fill(proto, 'addEventListener', function (orig) { - return function (evtName, fn, capture, secure) { - // preserve arity - try { - if (fn && fn.handleEvent) { - fn.handleEvent = self.wrap(fn.handleEvent); - } - } catch (err) {} // can sometimes get 'Permission denied to access property "handle Event' - // More breadcrumb DOM capture ... done here and not in `_instrumentBreadcrumbs` - // so that we don't have more than one wrapper function +/** + * Given a child DOM element, returns a query-selector statement describing that + * and its ancestors + * e.g. [HTMLElement] => body > div > input#foo.btn[name=baz] + * @param elem + * @returns {string} + */ +function htmlTreeAsString(elem) { + /* eslint no-extra-parens:0*/ + var MAX_TRAVERSE_HEIGHT = 5, + MAX_OUTPUT_LEN = 80, + out = [], + height = 0, + len = 0, + separator = ' > ', + sepLength = separator.length, + nextStr; + while (elem && height++ < MAX_TRAVERSE_HEIGHT) { + nextStr = htmlElementAsString(elem); + // bail out if + // - nextStr is the 'html' element + // - the length of the string that would be created exceeds MAX_OUTPUT_LEN + // (ignore this limit if we are on the first iteration) + if ( + nextStr === 'html' || + (height > 1 && len + out.length * sepLength + nextStr.length >= MAX_OUTPUT_LEN) + ) { + break; + } - var before, clickHandler, keypressHandler; + out.push(nextStr); - if (autoBreadcrumbs && autoBreadcrumbs.dom && (global === 'EventTarget' || global === 'Node')) { - // NOTE: generating multiple handlers per addEventListener invocation, should - // revisit and verify we can just use one (almost certainly) - clickHandler = self._breadcrumbEventHandler('click'); - keypressHandler = self._keypressEventHandler(); + len += nextStr.length; + elem = elem.parentNode; + } - before = function before(evt) { - // need to intercept every DOM event in `before` argument, in case that - // same wrapped method is re-used for different events (e.g. mousemove THEN click) - // see #724 - if (!evt) return; - var eventType; + return out.reverse().join(separator); +} - try { - eventType = evt.type; - } catch (e) { - // just accessing event properties can throw an exception in some rare circumstances - // see: https://github.com/getsentry/raven-js/issues/838 - return; - } +/** + * Returns a simple, query-selector representation of a DOM element + * e.g. [HTMLElement] => input#foo.btn[name=baz] + * @param HTMLElement + * @returns {string} + */ +function htmlElementAsString(elem) { + var out = [], + className, + classes, + key, + attr, + i; - if (eventType === 'click') return clickHandler(evt);else if (eventType === 'keypress') return keypressHandler(evt); - }; - } + if (!elem || !elem.tagName) { + return ''; + } - return orig.call(this, evtName, self.wrap(fn, undefined, before), capture, secure); - }; - }, wrappedBuiltIns); - fill(proto, 'removeEventListener', function (orig) { - return function (evt, fn, capture, secure) { - try { - fn = fn && (fn.__raven_wrapper__ ? fn.__raven_wrapper__ : fn); - } catch (e) {// ignore, accessing __raven_wrapper__ will throw in some Selenium environments - } + out.push(elem.tagName.toLowerCase()); + if (elem.id) { + out.push('#' + elem.id); + } - return orig.call(this, evt, fn, capture, secure); - }; - }, wrappedBuiltIns); - } + className = elem.className; + if (className && isString(className)) { + classes = className.split(/\s+/); + for (i = 0; i < classes.length; i++) { + out.push('.' + classes[i]); + } + } + var attrWhitelist = ['type', 'name', 'title', 'alt']; + for (i = 0; i < attrWhitelist.length; i++) { + key = attrWhitelist[i]; + attr = elem.getAttribute(key); + if (attr) { + out.push('[' + key + '="' + attr + '"]'); } + } + return out.join(''); +} + +/** + * Returns true if either a OR b is truthy, but not both + */ +function isOnlyOneTruthy(a, b) { + return !!(!!a ^ !!b); +} - fill(_window$1, 'setTimeout', wrapTimeFn, wrappedBuiltIns); - fill(_window$1, 'setInterval', wrapTimeFn, wrappedBuiltIns); +/** + * Returns true if both parameters are undefined + */ +function isBothUndefined(a, b) { + return isUndefined(a) && isUndefined(b); +} - if (_window$1.requestAnimationFrame) { - fill(_window$1, 'requestAnimationFrame', function (orig) { - return function (cb) { - return orig(self.wrap(cb)); - }; - }, wrappedBuiltIns); - } // event targets borrowed from bugsnag-js: - // https://github.com/bugsnag/bugsnag-js/blob/master/src/bugsnag.js#L666 +/** + * Returns true if the two input exception interfaces have the same content + */ +function isSameException(ex1, ex2) { + if (isOnlyOneTruthy(ex1, ex2)) return false; + ex1 = ex1.values[0]; + ex2 = ex2.values[0]; - var eventTargets = ['EventTarget', 'Window', 'Node', 'ApplicationCache', 'AudioTrackList', 'ChannelMergerNode', 'CryptoOperation', 'EventSource', 'FileReader', 'HTMLUnknownElement', 'IDBDatabase', 'IDBRequest', 'IDBTransaction', 'KeyOperation', 'MediaController', 'MessagePort', 'ModalWindow', 'Notification', 'SVGElementInstance', 'Screen', 'TextTrack', 'TextTrackCue', 'TextTrackList', 'WebSocket', 'WebSocketWorker', 'Worker', 'XMLHttpRequest', 'XMLHttpRequestEventTarget', 'XMLHttpRequestUpload']; + if (ex1.type !== ex2.type || ex1.value !== ex2.value) return false; - for (var i = 0; i < eventTargets.length; i++) { - wrapEventTarget(eventTargets[i]); - } - }, + // in case both stacktraces are undefined, we can't decide so default to false + if (isBothUndefined(ex1.stacktrace, ex2.stacktrace)) return false; - /** - * Instrument browser built-ins w/ breadcrumb capturing - * - XMLHttpRequests - * - DOM interactions (click/typing) - * - window.location changes - * - console - * - * Can be disabled or individually configured via the `autoBreadcrumbs` config option - */ - _instrumentBreadcrumbs: function _instrumentBreadcrumbs() { - var self = this; - var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; - var wrappedBuiltIns = self._wrappedBuiltIns; + return isSameStacktrace(ex1.stacktrace, ex2.stacktrace); +} - function wrapProp(prop, xhr) { - if (prop in xhr && isFunction(xhr[prop])) { - fill(xhr, prop, function (orig) { - return self.wrap(orig); - }); // intentionally don't track filled methods on XHR instances - } - } +/** + * Returns true if the two input stack trace interfaces have the same content + */ +function isSameStacktrace(stack1, stack2) { + if (isOnlyOneTruthy(stack1, stack2)) return false; - if (autoBreadcrumbs.xhr && 'XMLHttpRequest' in _window$1) { - var xhrproto = XMLHttpRequest.prototype; - fill(xhrproto, 'open', function (origOpen) { - return function (method, url) { - // preserve arity - // if Sentry key appears in URL, don't capture - if (isString(url) && url.indexOf(self._globalKey) === -1) { - this.__raven_xhr = { - method: method, - url: url, - status_code: null - }; - } + var frames1 = stack1.frames; + var frames2 = stack2.frames; - return origOpen.apply(this, arguments); - }; - }, wrappedBuiltIns); - fill(xhrproto, 'send', function (origSend) { - return function () { - // preserve arity - var xhr = this; - - function onreadystatechangeHandler() { - if (xhr.__raven_xhr && xhr.readyState === 4) { - try { - // touching statusCode in some platforms throws - // an exception - xhr.__raven_xhr.status_code = xhr.status; - } catch (e) { - /* do nothing */ - } + // Exit early if frame count differs + if (frames1.length !== frames2.length) return false; - self.captureBreadcrumb({ - type: 'http', - category: 'xhr', - data: xhr.__raven_xhr - }); - } - } + // Iterate through every frame; bail out if anything differs + var a, b; + for (var i = 0; i < frames1.length; i++) { + a = frames1[i]; + b = frames2[i]; + if ( + a.filename !== b.filename || + a.lineno !== b.lineno || + a.colno !== b.colno || + a['function'] !== b['function'] + ) + return false; + } + return true; +} - var props = ['onload', 'onerror', 'onprogress']; +/** + * Polyfill a method + * @param obj object e.g. `document` + * @param name method name present on object e.g. `addEventListener` + * @param replacement replacement function + * @param track {optional} record instrumentation to an array + */ +function fill(obj, name, replacement, track) { + if (obj == null) return; + var orig = obj[name]; + obj[name] = replacement(orig); + obj[name].__raven__ = true; + obj[name].__orig__ = orig; + if (track) { + track.push([obj, name, orig]); + } +} - for (var j = 0; j < props.length; j++) { - wrapProp(props[j], xhr); - } +/** + * Join values in array + * @param input array of values to be joined together + * @param delimiter string to be placed in-between values + * @returns {string} + */ +function safeJoin(input, delimiter) { + if (!isArray(input)) return ''; - if ('onreadystatechange' in xhr && isFunction(xhr.onreadystatechange)) { - fill(xhr, 'onreadystatechange', function (orig) { - return self.wrap(orig, undefined, onreadystatechangeHandler); - } - /* intentionally don't track this instrumentation */ - ); - } else { - // if onreadystatechange wasn't actually set by the page on this xhr, we - // are free to set our own and capture the breadcrumb - xhr.onreadystatechange = onreadystatechangeHandler; - } + var output = []; - return origSend.apply(this, arguments); - }; - }, wrappedBuiltIns); + for (var i = 0; i < input.length; i++) { + try { + output.push(String(input[i])); + } catch (e) { + output.push('[value cannot be serialized]'); } + } - if (autoBreadcrumbs.xhr && supportsFetch()) { - fill(_window$1, 'fetch', function (origFetch) { - return function () { - // preserve arity - // Make a copy of the arguments to prevent deoptimization - // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments - var args = new Array(arguments.length); - - for (var i = 0; i < args.length; ++i) { - args[i] = arguments[i]; - } + return output.join(delimiter); +} - var fetchInput = args[0]; - var method = 'GET'; - var url; +// Default Node.js REPL depth +var MAX_SERIALIZE_EXCEPTION_DEPTH = 3; +// 50kB, as 100kB is max payload size, so half sounds reasonable +var MAX_SERIALIZE_EXCEPTION_SIZE = 50 * 1024; +var MAX_SERIALIZE_KEYS_LENGTH = 40; - if (typeof fetchInput === 'string') { - url = fetchInput; - } else if ('Request' in _window$1 && fetchInput instanceof _window$1.Request) { - url = fetchInput.url; +function utf8Length(value) { + return ~-encodeURI(value).split(/%..|./).length; +} - if (fetchInput.method) { - method = fetchInput.method; - } - } else { - url = '' + fetchInput; - } // if Sentry key appears in URL, don't capture, as it's our own request +function jsonSize(value) { + return utf8Length(JSON.stringify(value)); +} +function serializeValue(value) { + if (typeof value === 'string') { + var maxLength = 40; + return truncate(value, maxLength); + } else if ( + typeof value === 'number' || + typeof value === 'boolean' || + typeof value === 'undefined' + ) { + return value; + } - if (url.indexOf(self._globalKey) !== -1) { - return origFetch.apply(this, args); - } + var type = Object.prototype.toString.call(value); - if (args[1] && args[1].method) { - method = args[1].method; - } + // Node.js REPL notation + if (type === '[object Object]') return '[Object]'; + if (type === '[object Array]') return '[Array]'; + if (type === '[object Function]') + return value.name ? '[Function: ' + value.name + ']' : '[Function]'; - var fetchData = { - method: method, - url: url, - status_code: null - }; - return origFetch.apply(this, args).then(function (response) { - fetchData.status_code = response.status; - self.captureBreadcrumb({ - type: 'http', - category: 'fetch', - data: fetchData - }); - return response; - }); - }; - }, wrappedBuiltIns); - } // Capture breadcrumbs from any click that is unhandled / bubbled up all the way - // to the document. Do this before we instrument addEventListener. + return value; +} +function serializeObject(value, depth) { + if (depth === 0) return serializeValue(value); + + if (isPlainObject(value)) { + return Object.keys(value).reduce(function(acc, key) { + acc[key] = serializeObject(value[key], depth - 1); + return acc; + }, {}); + } else if (Array.isArray(value)) { + return value.map(function(val) { + return serializeObject(val, depth - 1); + }); + } - if (autoBreadcrumbs.dom && this._hasDocument) { - if (_document.addEventListener) { - _document.addEventListener('click', self._breadcrumbEventHandler('click'), false); + return serializeValue(value); +} - _document.addEventListener('keypress', self._keypressEventHandler(), false); - } else { - // IE8 Compatibility - _document.attachEvent('onclick', self._breadcrumbEventHandler('click')); +function serializeException(ex, depth, maxSize) { + if (!isPlainObject(ex)) return ex; - _document.attachEvent('onkeypress', self._keypressEventHandler()); - } - } // record navigation (URL) changes - // NOTE: in Chrome App environment, touching history.pushState, *even inside - // a try/catch block*, will cause Chrome to output an error to console.error - // borrowed from: https://github.com/angular/angular.js/pull/13945/files + depth = typeof depth !== 'number' ? MAX_SERIALIZE_EXCEPTION_DEPTH : depth; + maxSize = typeof depth !== 'number' ? MAX_SERIALIZE_EXCEPTION_SIZE : maxSize; + var serialized = serializeObject(ex, depth); - var chrome = _window$1.chrome; - var isChromePackagedApp = chrome && chrome.app && chrome.app.runtime; - var hasPushAndReplaceState = !isChromePackagedApp && _window$1.history && history.pushState && history.replaceState; + if (jsonSize(stringify(serialized)) > maxSize) { + return serializeException(ex, depth - 1); + } - if (autoBreadcrumbs.location && hasPushAndReplaceState) { - // TODO: remove onpopstate handler on uninstall() - var oldOnPopState = _window$1.onpopstate; + return serialized; +} - _window$1.onpopstate = function () { - var currentHref = self._location.href; +function serializeKeysForMessage(keys, maxLength) { + if (typeof keys === 'number' || typeof keys === 'string') return keys.toString(); + if (!Array.isArray(keys)) return ''; - self._captureUrlChange(self._lastHref, currentHref); + keys = keys.filter(function(key) { + return typeof key === 'string'; + }); + if (keys.length === 0) return '[object has no keys]'; - if (oldOnPopState) { - return oldOnPopState.apply(this, arguments); - } - }; + maxLength = typeof maxLength !== 'number' ? MAX_SERIALIZE_KEYS_LENGTH : maxLength; + if (keys[0].length >= maxLength) return keys[0]; - var historyReplacementFunction = function historyReplacementFunction(origHistFunction) { - // note history.pushState.length is 0; intentionally not declaring - // params to preserve 0 arity - return function () - /* state, title, url */ - { - var url = arguments.length > 2 ? arguments[2] : undefined; // url argument is optional + for (var usedKeys = keys.length; usedKeys > 0; usedKeys--) { + var serialized = keys.slice(0, usedKeys).join(', '); + if (serialized.length > maxLength) continue; + if (usedKeys === keys.length) return serialized; + return serialized + '\u2026'; + } - if (url) { - // coerce to string (this is what pushState does) - self._captureUrlChange(self._lastHref, url + ''); - } + return ''; +} - return origHistFunction.apply(this, arguments); - }; - }; +function sanitize(input, sanitizeKeys) { + if (!isArray(sanitizeKeys) || (isArray(sanitizeKeys) && sanitizeKeys.length === 0)) + return input; - fill(history, 'pushState', historyReplacementFunction, wrappedBuiltIns); - fill(history, 'replaceState', historyReplacementFunction, wrappedBuiltIns); - } + var sanitizeRegExp = joinRegExp(sanitizeKeys); + var sanitizeMask = '********'; + var safeInput; - if (autoBreadcrumbs.console && 'console' in _window$1 && console.log) { - // console - var consoleMethodCallback = function consoleMethodCallback(msg, data) { - self.captureBreadcrumb({ - message: msg, - level: data.level, - category: 'console' - }); - }; + try { + safeInput = JSON.parse(stringify(input)); + } catch (o_O) { + return input; + } - each(['debug', 'info', 'warn', 'error', 'log'], function (_, level) { - wrapConsoleMethod(console, level, consoleMethodCallback); + function sanitizeWorker(workerInput) { + if (isArray(workerInput)) { + return workerInput.map(function(val) { + return sanitizeWorker(val); }); } - }, - _restoreBuiltIns: function _restoreBuiltIns() { - // restore any wrapped builtins - var builtin; - while (this._wrappedBuiltIns.length) { - builtin = this._wrappedBuiltIns.shift(); - var obj = builtin[0], - name = builtin[1], - orig = builtin[2]; - obj[name] = orig; - } - }, - _restoreConsole: function _restoreConsole() { - // eslint-disable-next-line guard-for-in - for (var method in this._originalConsoleMethods) { - this._originalConsole[method] = this._originalConsoleMethods[method]; + if (isPlainObject(workerInput)) { + return Object.keys(workerInput).reduce(function(acc, k) { + if (sanitizeRegExp.test(k)) { + acc[k] = sanitizeMask; + } else { + acc[k] = sanitizeWorker(workerInput[k]); + } + return acc; + }, {}); } - }, - _drainPlugins: function _drainPlugins() { - var self = this; // FIX ME TODO - each(this._plugins, function (_, plugin) { - var installer = plugin[0]; - var args = plugin[1]; - installer.apply(self, [self].concat(args)); - }); - }, - _parseDSN: function _parseDSN(str) { - var m = dsnPattern.exec(str), - dsn = {}, - i = 7; + return workerInput; + } - try { - while (i--) { - dsn[dsnKeys[i]] = m[i] || ''; - } - } catch (e) { - throw new configError('Invalid DSN: ' + str); - } + return sanitizeWorker(safeInput); +} - if (dsn.pass && !this._globalOptions.allowSecretKey) { - throw new configError('Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key'); - } +module.exports = { + isObject: isObject, + isError: isError, + isErrorEvent: isErrorEvent, + isUndefined: isUndefined, + isFunction: isFunction, + isPlainObject: isPlainObject, + isString: isString, + isArray: isArray, + isEmptyObject: isEmptyObject, + supportsErrorEvent: supportsErrorEvent, + supportsFetch: supportsFetch, + supportsReferrerPolicy: supportsReferrerPolicy, + supportsPromiseRejectionEvent: supportsPromiseRejectionEvent, + wrappedCallback: wrappedCallback, + each: each, + objectMerge: objectMerge, + truncate: truncate, + objectFrozen: objectFrozen, + hasKey: hasKey, + joinRegExp: joinRegExp, + urlencode: urlencode, + uuid4: uuid4, + htmlTreeAsString: htmlTreeAsString, + htmlElementAsString: htmlElementAsString, + isSameException: isSameException, + isSameStacktrace: isSameStacktrace, + parseUrl: parseUrl, + fill: fill, + safeJoin: safeJoin, + serializeException: serializeException, + serializeKeysForMessage: serializeKeysForMessage, + sanitize: sanitize +}; - return dsn; - }, - _getGlobalServer: function _getGlobalServer(uri) { - // assemble the endpoint from the uri pieces - var globalServer = '//' + uri.host + (uri.port ? ':' + uri.port : ''); +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"9":9}],8:[function(_dereq_,module,exports){ +(function (global){ +var utils = _dereq_(7); - if (uri.protocol) { - globalServer = uri.protocol + ':' + globalServer; - } +/* + TraceKit - Cross brower stack traces - return globalServer; - }, - _handleOnErrorStackInfo: function _handleOnErrorStackInfo() { - // if we are intentionally ignoring errors via onerror, bail out - if (!this._ignoreOnError) { - this._handleStackInfo.apply(this, arguments); - } - }, - _handleStackInfo: function _handleStackInfo(stackInfo, options) { - var frames = this._prepareFrames(stackInfo, options); + This was originally forked from github.com/occ/TraceKit, but has since been + largely re-written and is now maintained as part of raven-js. Tests for + this are in test/vendor. - this._triggerEvent('handle', { - stackInfo: stackInfo, - options: options - }); + MIT license +*/ - this._processException(stackInfo.name, stackInfo.message, stackInfo.url, stackInfo.lineno, frames, options); - }, - _prepareFrames: function _prepareFrames(stackInfo, options) { - var self = this; - var frames = []; +var TraceKit = { + collectWindowErrors: true, + debug: false +}; - if (stackInfo.stack && stackInfo.stack.length) { - each(stackInfo.stack, function (i, stack) { - var frame = self._normalizeFrame(stack, stackInfo.url); +// This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) +var _window = + typeof window !== 'undefined' + ? window + : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; - if (frame) { - frames.push(frame); - } - }); // e.g. frames captured via captureMessage throw +// global reference to slice +var _slice = [].slice; +var UNKNOWN_FUNCTION = '?'; - if (options && options.trimHeadFrames) { - for (var j = 0; j < options.trimHeadFrames && j < frames.length; j++) { - frames[j].in_app = false; - } - } - } +// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error#Error_types +var ERROR_TYPES_RE = /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/; - frames = frames.slice(0, this._globalOptions.stackTraceLimit); - return frames; - }, - _normalizeFrame: function _normalizeFrame(frame, stackInfoUrl) { - // normalize the frames data - var normalized = { - filename: frame.url, - lineno: frame.line, - colno: frame.column, - function: frame.func || '?' - }; // Case when we don't have any information about the error - // E.g. throwing a string or raw object, instead of an `Error` in Firefox - // Generating synthetic error doesn't add any value here - // - // We should probably somehow let a user know that they should fix their code +function getLocationHref() { + if (typeof document === 'undefined' || document.location == null) return ''; - if (!frame.url) { - normalized.filename = stackInfoUrl; // fallback to whole stacks url from onerror handler + return document.location.href; +} + +/** + * TraceKit.report: cross-browser processing of unhandled exceptions + * + * Syntax: + * TraceKit.report.subscribe(function(stackInfo) { ... }) + * TraceKit.report.unsubscribe(function(stackInfo) { ... }) + * TraceKit.report(exception) + * try { ...code... } catch(ex) { TraceKit.report(ex); } + * + * Supports: + * - Firefox: full stack trace with line numbers, plus column number + * on top frame; column number is not guaranteed + * - Opera: full stack trace with line and column numbers + * - Chrome: full stack trace with line and column numbers + * - Safari: line and column number for the top frame only; some frames + * may be missing, and column number is not guaranteed + * - IE: line and column number for the top frame only; some frames + * may be missing, and column number is not guaranteed + * + * In theory, TraceKit should work on all of the following versions: + * - IE5.5+ (only 8.0 tested) + * - Firefox 0.9+ (only 3.5+ tested) + * - Opera 7+ (only 10.50 tested; versions 9 and earlier may require + * Exceptions Have Stacktrace to be enabled in opera:config) + * - Safari 3+ (only 4+ tested) + * - Chrome 1+ (only 5+ tested) + * - Konqueror 3.5+ (untested) + * + * Requires TraceKit.computeStackTrace. + * + * Tries to catch all unhandled exceptions and report them to the + * subscribed handlers. Please note that TraceKit.report will rethrow the + * exception. This is REQUIRED in order to get a useful stack trace in IE. + * If the exception does not reach the top of the browser, you will only + * get a stack trace from the point where TraceKit.report was called. + * + * Handlers receive a stackInfo object as described in the + * TraceKit.computeStackTrace docs. + */ +TraceKit.report = (function reportModuleWrapper() { + var handlers = [], + lastArgs = null, + lastException = null, + lastExceptionStack = null; + + /** + * Add a crash handler. + * @param {Function} handler + */ + function subscribe(handler) { + installGlobalHandler(); + handlers.push(handler); + } + + /** + * Remove a crash handler. + * @param {Function} handler + */ + function unsubscribe(handler) { + for (var i = handlers.length - 1; i >= 0; --i) { + if (handlers[i] === handler) { + handlers.splice(i, 1); + } } + } - normalized.in_app = !( // determine if an exception came from outside of our app - // first we check the global includePaths list. - !!this._globalOptions.includePaths.test && !this._globalOptions.includePaths.test(normalized.filename) || // Now we check for fun, if the function name is Raven or TraceKit - /(Raven|TraceKit)\./.test(normalized['function']) || // finally, we do a last ditch effort and check for raven.min.js - /raven\.(min\.)?js$/.test(normalized.filename)); - return normalized; - }, - _processException: function _processException(type, message, fileurl, lineno, frames, options) { - var prefixedMessage = (type ? type + ': ' : '') + (message || ''); + /** + * Remove all crash handlers. + */ + function unsubscribeAll() { + uninstallGlobalHandler(); + handlers = []; + } - if (!!this._globalOptions.ignoreErrors.test && (this._globalOptions.ignoreErrors.test(message) || this._globalOptions.ignoreErrors.test(prefixedMessage))) { + /** + * Dispatch stack information to all handlers. + * @param {Object.} stack + */ + function notifyHandlers(stack, isWindowError) { + var exception = null; + if (isWindowError && !TraceKit.collectWindowErrors) { return; } + for (var i in handlers) { + if (handlers.hasOwnProperty(i)) { + try { + handlers[i].apply(null, [stack].concat(_slice.call(arguments, 2))); + } catch (inner) { + exception = inner; + } + } + } - var stacktrace; + if (exception) { + throw exception; + } + } - if (frames && frames.length) { - fileurl = frames[0].filename || fileurl; // Sentry expects frames oldest to newest - // and JS sends them as newest to oldest + var _oldOnerrorHandler, _onErrorHandlerInstalled; - frames.reverse(); - stacktrace = { - frames: frames - }; - } else if (fileurl) { - stacktrace = { - frames: [{ - filename: fileurl, - lineno: lineno, - in_app: true - }] - }; - } + /** + * Ensures all global unhandled exceptions are recorded. + * Supported by Gecko and IE. + * @param {string} msg Error message. + * @param {string} url URL of script that generated the exception. + * @param {(number|string)} lineNo The line number at which the error + * occurred. + * @param {?(number|string)} colNo The column number at which the error + * occurred. + * @param {?Error} ex The actual Error object. + */ + function traceKitWindowOnError(msg, url, lineNo, colNo, ex) { + var stack = null; + // If 'ex' is ErrorEvent, get real Error from inside + var exception = utils.isErrorEvent(ex) ? ex.error : ex; + // If 'msg' is ErrorEvent, get real message from inside + var message = utils.isErrorEvent(msg) ? msg.message : msg; - if (!!this._globalOptions.ignoreUrls.test && this._globalOptions.ignoreUrls.test(fileurl)) { - return; - } + if (lastExceptionStack) { + TraceKit.computeStackTrace.augmentStackTraceWithInitialElement( + lastExceptionStack, + url, + lineNo, + message + ); + processLastException(); + } else if (exception && utils.isError(exception)) { + // non-string `exception` arg; attempt to extract stack trace - if (!!this._globalOptions.whitelistUrls.test && !this._globalOptions.whitelistUrls.test(fileurl)) { - return; - } + // New chrome and blink send along a real error object + // Let's just report that like a normal error. + // See: https://mikewest.org/2013/08/debugging-runtime-errors-with-window-onerror + stack = TraceKit.computeStackTrace(exception); + notifyHandlers(stack, true); + } else { + var location = { + url: url, + line: lineNo, + column: colNo + }; - var data = objectMerge({ - // sentry.interfaces.Exception - exception: { - values: [{ - type: type, - value: message, - stacktrace: stacktrace - }] - }, - culprit: fileurl - }, options); // Fire away! + var name = undefined; + var groups; - this._send(data); - }, - _trimPacket: function _trimPacket(data) { - // For now, we only want to truncate the two different messages - // but this could/should be expanded to just trim everything - var max = this._globalOptions.maxMessageLength; + if ({}.toString.call(message) === '[object String]') { + var groups = message.match(ERROR_TYPES_RE); + if (groups) { + name = groups[1]; + message = groups[2]; + } + } - if (data.message) { - data.message = truncate(data.message, max); + location.func = UNKNOWN_FUNCTION; + + stack = { + name: name, + message: message, + url: getLocationHref(), + stack: [location] + }; + notifyHandlers(stack, true); } - if (data.exception) { - var exception = data.exception.values[0]; - exception.value = truncate(exception.value, max); + if (_oldOnerrorHandler) { + return _oldOnerrorHandler.apply(this, arguments); } - var request = data.request; + return false; + } - if (request) { - if (request.url) { - request.url = truncate(request.url, this._globalOptions.maxUrlLength); - } + function installGlobalHandler() { + if (_onErrorHandlerInstalled) { + return; + } + _oldOnerrorHandler = _window.onerror; + _window.onerror = traceKitWindowOnError; + _onErrorHandlerInstalled = true; + } - if (request.Referer) { - request.Referer = truncate(request.Referer, this._globalOptions.maxUrlLength); - } + function uninstallGlobalHandler() { + if (!_onErrorHandlerInstalled) { + return; } + _window.onerror = _oldOnerrorHandler; + _onErrorHandlerInstalled = false; + _oldOnerrorHandler = undefined; + } - if (data.breadcrumbs && data.breadcrumbs.values) this._trimBreadcrumbs(data.breadcrumbs); - return data; - }, + function processLastException() { + var _lastExceptionStack = lastExceptionStack, + _lastArgs = lastArgs; + lastArgs = null; + lastExceptionStack = null; + lastException = null; + notifyHandlers.apply(null, [_lastExceptionStack, false].concat(_lastArgs)); + } /** - * Truncate breadcrumb values (right now just URLs) + * Reports an unhandled Error to TraceKit. + * @param {Error} ex + * @param {?boolean} rethrow If false, do not re-throw the exception. + * Only used for window.onerror to not cause an infinite loop of + * rethrowing. */ - _trimBreadcrumbs: function _trimBreadcrumbs(breadcrumbs) { - // known breadcrumb properties with urls - // TODO: also consider arbitrary prop values that start with (https?)?:// - var urlProps = ['to', 'from', 'url'], - urlProp, - crumb, - data; - - for (var i = 0; i < breadcrumbs.values.length; ++i) { - crumb = breadcrumbs.values[i]; - if (!crumb.hasOwnProperty('data') || !isObject(crumb.data) || objectFrozen(crumb.data)) continue; - data = objectMerge({}, crumb.data); - - for (var j = 0; j < urlProps.length; ++j) { - urlProp = urlProps[j]; - - if (data.hasOwnProperty(urlProp) && data[urlProp]) { - data[urlProp] = truncate(data[urlProp], this._globalOptions.maxUrlLength); - } + function report(ex, rethrow) { + var args = _slice.call(arguments, 1); + if (lastExceptionStack) { + if (lastException === ex) { + return; // already caught by an inner catch block, ignore + } else { + processLastException(); } - - breadcrumbs.values[i].data = data; } - }, - _getHttpData: function _getHttpData() { - if (!this._hasNavigator && !this._hasDocument) return; - var httpData = {}; - if (this._hasNavigator && _navigator.userAgent) { - httpData.headers = { - 'User-Agent': navigator.userAgent - }; - } // Check in `window` instead of `document`, as we may be in ServiceWorker environment + var stack = TraceKit.computeStackTrace(ex); + lastExceptionStack = stack; + lastException = ex; + lastArgs = args; + // If the stack trace is incomplete, wait for 2 seconds for + // slow slow IE to see if onerror occurs or not before reporting + // this exception; otherwise, we will end up with an incomplete + // stack trace + setTimeout(function() { + if (lastException === ex) { + processLastException(); + } + }, stack.incomplete ? 2000 : 0); - if (_window$1.location && _window$1.location.href) { - httpData.url = _window$1.location.href; + if (rethrow !== false) { + throw ex; // re-throw to propagate to the top level (and cause window.onerror) } + } - if (this._hasDocument && _document.referrer) { - if (!httpData.headers) httpData.headers = {}; - httpData.headers.Referer = _document.referrer; - } + report.subscribe = subscribe; + report.unsubscribe = unsubscribe; + report.uninstall = unsubscribeAll; + return report; +})(); - return httpData; - }, - _resetBackoff: function _resetBackoff() { - this._backoffDuration = 0; - this._backoffStart = null; - }, - _shouldBackoff: function _shouldBackoff() { - return this._backoffDuration && now() - this._backoffStart < this._backoffDuration; - }, +/** + * TraceKit.computeStackTrace: cross-browser stack traces in JavaScript + * + * Syntax: + * s = TraceKit.computeStackTrace(exception) // consider using TraceKit.report instead (see below) + * Returns: + * s.name - exception name + * s.message - exception message + * s.stack[i].url - JavaScript or HTML file URL + * s.stack[i].func - function name, or empty for anonymous functions (if guessing did not work) + * s.stack[i].args - arguments passed to the function, if known + * s.stack[i].line - line number, if known + * s.stack[i].column - column number, if known + * + * Supports: + * - Firefox: full stack trace with line numbers and unreliable column + * number on top frame + * - Opera 10: full stack trace with line and column numbers + * - Opera 9-: full stack trace with line numbers + * - Chrome: full stack trace with line and column numbers + * - Safari: line and column number for the topmost stacktrace element + * only + * - IE: no line numbers whatsoever + * + * Tries to guess names of anonymous functions by looking for assignments + * in the source code. In IE and Safari, we have to guess source file names + * by searching for function bodies inside all page scripts. This will not + * work for scripts that are loaded cross-domain. + * Here be dragons: some function names may be guessed incorrectly, and + * duplicate functions may be mismatched. + * + * TraceKit.computeStackTrace should only be used for tracing purposes. + * Logging of unhandled exceptions should be done with TraceKit.report, + * which builds on top of TraceKit.computeStackTrace and provides better + * IE support by utilizing the window.onerror event to retrieve information + * about the top of the stack. + * + * Note: In IE and Safari, no stack trace is recorded on the Error object, + * so computeStackTrace instead walks its *own* chain of callers. + * This means that: + * * in Safari, some methods may be missing from the stack trace; + * * in IE, the topmost function in the stack trace will always be the + * caller of computeStackTrace. + * + * This is okay for tracing (because you are likely to be calling + * computeStackTrace from the function you want to be the topmost element + * of the stack trace anyway), but not okay for logging unhandled + * exceptions (because your catch block will likely be far away from the + * inner function that actually caused the exception). + * + */ +TraceKit.computeStackTrace = (function computeStackTraceWrapper() { + // Contents of Exception in various browsers. + // + // SAFARI: + // ex.message = Can't find variable: qq + // ex.line = 59 + // ex.sourceId = 580238192 + // ex.sourceURL = http://... + // ex.expressionBeginOffset = 96 + // ex.expressionCaretOffset = 98 + // ex.expressionEndOffset = 98 + // ex.name = ReferenceError + // + // FIREFOX: + // ex.message = qq is not defined + // ex.fileName = http://... + // ex.lineNumber = 59 + // ex.columnNumber = 69 + // ex.stack = ...stack trace... (see the example below) + // ex.name = ReferenceError + // + // CHROME: + // ex.message = qq is not defined + // ex.name = ReferenceError + // ex.type = not_defined + // ex.arguments = ['aa'] + // ex.stack = ...stack trace... + // + // INTERNET EXPLORER: + // ex.message = ... + // ex.name = ReferenceError + // + // OPERA: + // ex.message = ...message... (see the example below) + // ex.name = ReferenceError + // ex.opera#sourceloc = 11 (pretty much useless, duplicates the info in ex.message) + // ex.stacktrace = n/a; see 'opera:config#UserPrefs|Exceptions Have Stacktrace' /** - * Returns true if the in-process data payload matches the signature - * of the previously-sent data - * - * NOTE: This has to be done at this level because TraceKit can generate - * data from window.onerror WITHOUT an exception object (IE8, IE9, - * other old browsers). This can take the form of an "exception" - * data object with a single frame (derived from the onerror args). + * Computes stack trace information from the stack property. + * Chrome and Gecko use this property. + * @param {Error} ex + * @return {?Object.} Stack trace information. */ - _isRepeatData: function _isRepeatData(current) { - var last = this._lastData; - if (!last || current.message !== last.message || // defined for captureMessage - current.culprit !== last.culprit // defined for captureException/onerror - ) return false; // Stacktrace interface (i.e. from captureMessage) - - if (current.stacktrace || last.stacktrace) { - return isSameStacktrace(current.stacktrace, last.stacktrace); - } else if (current.exception || last.exception) { - // Exception interface (i.e. from captureException/onerror) - return isSameException(current.exception, last.exception); - } - - return true; - }, - _setBackoffState: function _setBackoffState(request) { - // If we are already in a backoff state, don't change anything - if (this._shouldBackoff()) { - return; - } - - var status = request.status; // 400 - project_id doesn't exist or some other fatal - // 401 - invalid/revoked dsn - // 429 - too many requests + function computeStackTraceFromStackProp(ex) { + if (typeof ex.stack === 'undefined' || !ex.stack) return; - if (!(status === 400 || status === 401 || status === 429)) return; - var retry; + var chrome = /^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i; + var winjs = /^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i; + // NOTE: blob urls are now supposed to always have an origin, therefore it's format + // which is `blob:http://url/path/with-some-uuid`, is matched by `blob.*?:\/` as well + var gecko = /^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i; + // Used to additionally parse URL/line/column from eval frames + var geckoEval = /(\S+) line (\d+)(?: > eval line \d+)* > eval/i; + var chromeEval = /\((\S*)(?::(\d+))(?::(\d+))\)/; + var lines = ex.stack.split('\n'); + var stack = []; + var submatch; + var parts; + var element; + var reference = /^(.*) is undefined$/.exec(ex.message); - try { - // If Retry-After is not in Access-Control-Expose-Headers, most - // browsers will throw an exception trying to access it - if (supportsFetch()) { - retry = request.headers.get('Retry-After'); + for (var i = 0, j = lines.length; i < j; ++i) { + if ((parts = chrome.exec(lines[i]))) { + var isNative = parts[2] && parts[2].indexOf('native') === 0; // start of line + var isEval = parts[2] && parts[2].indexOf('eval') === 0; // start of line + if (isEval && (submatch = chromeEval.exec(parts[2]))) { + // throw out eval line/column and use top-most line/column number + parts[2] = submatch[1]; // url + parts[3] = submatch[2]; // line + parts[4] = submatch[3]; // column + } + element = { + url: !isNative ? parts[2] : null, + func: parts[1] || UNKNOWN_FUNCTION, + args: isNative ? [parts[2]] : [], + line: parts[3] ? +parts[3] : null, + column: parts[4] ? +parts[4] : null + }; + } else if ((parts = winjs.exec(lines[i]))) { + element = { + url: parts[2], + func: parts[1] || UNKNOWN_FUNCTION, + args: [], + line: +parts[3], + column: parts[4] ? +parts[4] : null + }; + } else if ((parts = gecko.exec(lines[i]))) { + var isEval = parts[3] && parts[3].indexOf(' > eval') > -1; + if (isEval && (submatch = geckoEval.exec(parts[3]))) { + // throw out eval line/column and use top-most line number + parts[3] = submatch[1]; + parts[4] = submatch[2]; + parts[5] = null; // no column when eval + } else if (i === 0 && !parts[5] && typeof ex.columnNumber !== 'undefined') { + // FireFox uses this awesome columnNumber property for its top frame + // Also note, Firefox's column number is 0-based and everything else expects 1-based, + // so adding 1 + // NOTE: this hack doesn't work if top-most frame is eval + stack[0].column = ex.columnNumber + 1; + } + element = { + url: parts[3], + func: parts[1] || UNKNOWN_FUNCTION, + args: parts[2] ? parts[2].split(',') : [], + line: parts[4] ? +parts[4] : null, + column: parts[5] ? +parts[5] : null + }; } else { - retry = request.getResponseHeader('Retry-After'); - } // Retry-After is returned in seconds - - - retry = parseInt(retry, 10) * 1000; - } catch (e) { - /* eslint no-empty:0 */ - } - - this._backoffDuration = retry ? // If Sentry server returned a Retry-After value, use it - retry : // Otherwise, double the last backoff duration (starts at 1 sec) - this._backoffDuration * 2 || 1000; - this._backoffStart = now(); - }, - _send: function _send(data) { - var globalOptions = this._globalOptions; - - var baseData = { - project: this._globalProject, - logger: globalOptions.logger, - platform: 'javascript' - }, - httpData = this._getHttpData(); - - if (httpData) { - baseData.request = httpData; - } // HACK: delete `trimHeadFrames` to prevent from appearing in outbound payload - - - if (data.trimHeadFrames) delete data.trimHeadFrames; - data = objectMerge(baseData, data); // Merge in the tags and extra separately since objectMerge doesn't handle a deep merge - - data.tags = objectMerge(objectMerge({}, this._globalContext.tags), data.tags); - data.extra = objectMerge(objectMerge({}, this._globalContext.extra), data.extra); // Send along our own collected metadata with extra - - data.extra['session:duration'] = now() - this._startTime; - - if (this._breadcrumbs && this._breadcrumbs.length > 0) { - // intentionally make shallow copy so that additions - // to breadcrumbs aren't accidentally sent in this request - data.breadcrumbs = { - values: [].slice.call(this._breadcrumbs, 0) - }; - } - - if (this._globalContext.user) { - // sentry.interfaces.User - data.user = this._globalContext.user; - } // Include the environment if it's defined in globalOptions - - - if (globalOptions.environment) data.environment = globalOptions.environment; // Include the release if it's defined in globalOptions - - if (globalOptions.release) data.release = globalOptions.release; // Include server_name if it's defined in globalOptions - - if (globalOptions.serverName) data.server_name = globalOptions.serverName; // Cleanup empty properties before sending them to the server - - Object.keys(data).forEach(function (key) { - if (data[key] == null || data[key] === '' || isEmptyObject(data[key])) { - delete data[key]; + continue; } - }); - - if (isFunction(globalOptions.dataCallback)) { - data = globalOptions.dataCallback(data) || data; - } // Why?????????? - - - if (!data || isEmptyObject(data)) { - return; - } // Check if the request should be filtered or not + if (!element.func && element.line) { + element.func = UNKNOWN_FUNCTION; + } - if (isFunction(globalOptions.shouldSendCallback) && !globalOptions.shouldSendCallback(data)) { - return; - } // Backoff state: Sentry server previously responded w/ an error (e.g. 429 - too many requests), - // so drop requests until "cool-off" period has elapsed. - - - if (this._shouldBackoff()) { - this._logDebug('warn', 'Raven dropped error due to backoff: ', data); - - return; + stack.push(element); } - if (typeof globalOptions.sampleRate === 'number') { - if (Math.random() < globalOptions.sampleRate) { - this._sendProcessedPayload(data); - } - } else { - this._sendProcessedPayload(data); + if (!stack.length) { + return null; } - }, - _getUuid: function _getUuid() { - return uuid4(); - }, - _sendProcessedPayload: function _sendProcessedPayload(data, callback) { - var self = this; - var globalOptions = this._globalOptions; - if (!this.isSetup()) return; // Try and clean up the packet before sending by truncating long values - - data = this._trimPacket(data); // ideally duplicate error testing should occur *before* dataCallback/shouldSendCallback, - // but this would require copying an un-truncated copy of the data packet, which can be - // arbitrarily deep (extra_data) -- could be worthwhile? will revisit - - if (!this._globalOptions.allowDuplicates && this._isRepeatData(data)) { - this._logDebug('warn', 'Raven dropped repeat event: ', data); - - return; - } // Send along an event_id if not explicitly passed. - // This event_id can be used to reference the error within Sentry itself. - // Set lastEventId after we know the error should actually be sent - - this._lastEventId = data.event_id || (data.event_id = this._getUuid()); // Store outbound payload after trim - - this._lastData = data; - - this._logDebug('debug', 'Raven about to send:', data); + return { + name: ex.name, + message: ex.message, + url: getLocationHref(), + stack: stack + }; + } - var auth = { - sentry_version: '7', - sentry_client: 'raven-js/' + this.VERSION, - sentry_key: this._globalKey + /** + * Adds information about the first frame to incomplete stack traces. + * Safari and IE require this to get complete data on the first frame. + * @param {Object.} stackInfo Stack trace information from + * one of the compute* methods. + * @param {string} url The URL of the script that caused an error. + * @param {(number|string)} lineNo The line number of the script that + * caused an error. + * @param {string=} message The error generated by the browser, which + * hopefully contains the name of the object that caused the error. + * @return {boolean} Whether or not the stack information was + * augmented. + */ + function augmentStackTraceWithInitialElement(stackInfo, url, lineNo, message) { + var initial = { + url: url, + line: lineNo }; - if (this._globalSecret) { - auth.sentry_secret = this._globalSecret; - } + if (initial.url && initial.line) { + stackInfo.incomplete = false; - var exception = data.exception && data.exception.values[0]; // only capture 'sentry' breadcrumb is autoBreadcrumbs is truthy + if (!initial.func) { + initial.func = UNKNOWN_FUNCTION; + } - if (this._globalOptions.autoBreadcrumbs && this._globalOptions.autoBreadcrumbs.sentry) { - this.captureBreadcrumb({ - category: 'sentry', - message: exception ? (exception.type ? exception.type + ': ' : '') + exception.value : data.message, - event_id: data.event_id, - level: data.level || 'error' // presume error unless specified + if (stackInfo.stack.length > 0) { + if (stackInfo.stack[0].url === initial.url) { + if (stackInfo.stack[0].line === initial.line) { + return false; // already in stack trace + } else if ( + !stackInfo.stack[0].line && + stackInfo.stack[0].func === initial.func + ) { + stackInfo.stack[0].line = initial.line; + return false; + } + } + } - }); + stackInfo.stack.unshift(initial); + stackInfo.partial = true; + return true; + } else { + stackInfo.incomplete = true; } - var url = this._globalEndpoint; - - (globalOptions.transport || this._makeRequest).call(this, { - url: url, - auth: auth, - data: data, - options: globalOptions, - onSuccess: function success() { - self._resetBackoff(); + return false; + } - self._triggerEvent('success', { - data: data, - src: url - }); + /** + * Computes stack trace information by walking the arguments.caller + * chain at the time the exception occurred. This will cause earlier + * frames to be missed but is the only way to get any stack trace in + * Safari and IE. The top frame is restored by + * {@link augmentStackTraceWithInitialElement}. + * @param {Error} ex + * @return {?Object.} Stack trace information. + */ + function computeStackTraceByWalkingCallerChain(ex, depth) { + var functionName = /function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i, + stack = [], + funcs = {}, + recursion = false, + parts, + item, + source; + + for ( + var curr = computeStackTraceByWalkingCallerChain.caller; + curr && !recursion; + curr = curr.caller + ) { + if (curr === computeStackTrace || curr === TraceKit.report) { + // console.log('skipping internal function'); + continue; + } - callback && callback(); - }, - onError: function failure(error) { - self._logDebug('error', 'Raven transport failed to send: ', error); + item = { + url: null, + func: UNKNOWN_FUNCTION, + line: null, + column: null + }; - if (error.request) { - self._setBackoffState(error.request); - } + if (curr.name) { + item.func = curr.name; + } else if ((parts = functionName.exec(curr.toString()))) { + item.func = parts[1]; + } - self._triggerEvent('failure', { - data: data, - src: url - }); + if (typeof item.func === 'undefined') { + try { + item.func = parts.input.substring(0, parts.input.indexOf('{')); + } catch (e) {} + } - error = error || new Error('Raven send failed (no additional details provided)'); - callback && callback(error); + if (funcs['' + curr]) { + recursion = true; + } else { + funcs['' + curr] = true; } - }); - }, - _makeRequest: function _makeRequest(opts) { - // Auth is intentionally sent as part of query string (NOT as custom HTTP header) to avoid preflight CORS requests - var url = opts.url + '?' + urlencode(opts.auth); - var evaluatedHeaders = null; - var evaluatedFetchParameters = {}; - if (opts.options.headers) { - evaluatedHeaders = this._evaluateHash(opts.options.headers); + stack.push(item); } - if (opts.options.fetchParameters) { - evaluatedFetchParameters = this._evaluateHash(opts.options.fetchParameters); + if (depth) { + // console.log('depth is ' + depth); + // console.log('stack is ' + stack.length); + stack.splice(0, depth); } - if (supportsFetch()) { - evaluatedFetchParameters.body = stringify_1(opts.data); - var defaultFetchOptions = objectMerge({}, this._fetchDefaults); - var fetchOptions = objectMerge(defaultFetchOptions, evaluatedFetchParameters); + var result = { + name: ex.name, + message: ex.message, + url: getLocationHref(), + stack: stack + }; + augmentStackTraceWithInitialElement( + result, + ex.sourceURL || ex.fileName, + ex.line || ex.lineNumber, + ex.message || ex.description + ); + return result; + } - if (evaluatedHeaders) { - fetchOptions.headers = evaluatedHeaders; - } + /** + * Computes a stack trace for an exception. + * @param {Error} ex + * @param {(string|number)=} depth + */ + function computeStackTrace(ex, depth) { + var stack = null; + depth = depth == null ? 0 : +depth; - return _window$1.fetch(url, fetchOptions).then(function (response) { - if (response.ok) { - opts.onSuccess && opts.onSuccess(); - } else { - var error = new Error('Sentry error code: ' + response.status); // It's called request only to keep compatibility with XHR interface - // and not add more redundant checks in setBackoffState method + try { + stack = computeStackTraceFromStackProp(ex); + if (stack) { + return stack; + } + } catch (e) { + if (TraceKit.debug) { + throw e; + } + } - error.request = response; - opts.onError && opts.onError(error); - } - })['catch'](function () { - opts.onError && opts.onError(new Error('Sentry error code: network unavailable')); - }); + try { + stack = computeStackTraceByWalkingCallerChain(ex, depth + 1); + if (stack) { + return stack; + } + } catch (e) { + if (TraceKit.debug) { + throw e; + } } + return { + name: ex.name, + message: ex.message, + url: getLocationHref() + }; + } - var request = _window$1.XMLHttpRequest && new _window$1.XMLHttpRequest(); - if (!request) return; // if browser doesn't support CORS (e.g. IE7), we are out of luck + computeStackTrace.augmentStackTraceWithInitialElement = augmentStackTraceWithInitialElement; + computeStackTrace.computeStackTraceFromStackProp = computeStackTraceFromStackProp; - var hasCORS = 'withCredentials' in request || typeof XDomainRequest !== 'undefined'; - if (!hasCORS) return; + return computeStackTrace; +})(); - if ('withCredentials' in request) { - request.onreadystatechange = function () { - if (request.readyState !== 4) { - return; - } else if (request.status === 200) { - opts.onSuccess && opts.onSuccess(); - } else if (opts.onError) { - var err = new Error('Sentry error code: ' + request.status); - err.request = request; - opts.onError(err); - } - }; - } else { - request = new XDomainRequest(); // xdomainrequest cannot go http -> https (or vice versa), - // so always use protocol relative +module.exports = TraceKit; - url = url.replace(/^https?:/, ''); // onreadystatechange not supported by XDomainRequest +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"7":7}],9:[function(_dereq_,module,exports){ +/* + json-stringify-safe + Like JSON.stringify, but doesn't throw on circular references. - if (opts.onSuccess) { - request.onload = opts.onSuccess; - } + Originally forked from https://github.com/isaacs/json-stringify-safe + version 5.0.1 on 3/8/2017 and modified to handle Errors serialization + and IE8 compatibility. Tests for this are in test/vendor. - if (opts.onError) { - request.onerror = function () { - var err = new Error('Sentry error code: XDomainRequest'); - err.request = request; - opts.onError(err); - }; - } - } + ISC license: https://github.com/isaacs/json-stringify-safe/blob/master/LICENSE +*/ - request.open('POST', url); +exports = module.exports = stringify; +exports.getSerialize = serializer; - if (evaluatedHeaders) { - each(evaluatedHeaders, function (key, value) { - request.setRequestHeader(key, value); - }); - } +function indexOf(haystack, needle) { + for (var i = 0; i < haystack.length; ++i) { + if (haystack[i] === needle) return i; + } + return -1; +} - request.send(stringify_1(opts.data)); - }, - _evaluateHash: function _evaluateHash(hash) { - var evaluated = {}; +function stringify(obj, replacer, spaces, cycleReplacer) { + return JSON.stringify(obj, serializer(replacer, cycleReplacer), spaces); +} - for (var key in hash) { - if (hash.hasOwnProperty(key)) { - var value = hash[key]; - evaluated[key] = typeof value === 'function' ? value() : value; - } - } +// https://github.com/ftlabs/js-abbreviate/blob/fa709e5f139e7770a71827b1893f22418097fbda/index.js#L95-L106 +function stringifyError(value) { + var err = { + // These properties are implemented as magical getters and don't show up in for in + stack: value.stack, + message: value.message, + name: value.name + }; - return evaluated; - }, - _logDebug: function _logDebug(level) { - if (this._originalConsoleMethods[level] && this.debug) { - // In IE<10 console methods do not have their own 'apply' method - Function.prototype.apply.call(this._originalConsoleMethods[level], this._originalConsole, [].slice.call(arguments, 1)); - } - }, - _mergeContext: function _mergeContext(key, context) { - if (isUndefined(context)) { - delete this._globalContext[key]; - } else { - this._globalContext[key] = objectMerge(this._globalContext[key] || {}, context); + for (var i in value) { + if (Object.prototype.hasOwnProperty.call(value, i)) { + err[i] = value[i]; } } -}; // Deprecations -Raven$1.prototype.setUser = Raven$1.prototype.setUserContext; -Raven$1.prototype.setReleaseContext = Raven$1.prototype.setRelease; -var raven = Raven$1; + return err; +} -/** - * Enforces a single instance of the Raven client, and the - * main entry point for Raven. If you are a consumer of the - * Raven library, you SHOULD load this file (vs raven.js). - **/ -// This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) +function serializer(replacer, cycleReplacer) { + var stack = []; + var keys = []; -var _window = typeof window !== 'undefined' ? window : typeof commonjsGlobal !== 'undefined' ? commonjsGlobal : typeof self !== 'undefined' ? self : {}; + if (cycleReplacer == null) { + cycleReplacer = function(key, value) { + if (stack[0] === value) { + return '[Circular ~]'; + } + return '[Circular ~.' + keys.slice(0, indexOf(stack, value)).join('.') + ']'; + }; + } -var _Raven = _window.Raven; -var Raven = new raven(); -/* - * Allow multiple versions of Raven to be installed. - * Strip Raven from the global context and returns the instance. - * - * @return {Raven} - */ + return function(key, value) { + if (stack.length > 0) { + var thisPos = indexOf(stack, this); + ~thisPos ? stack.splice(thisPos + 1) : stack.push(this); + ~thisPos ? keys.splice(thisPos, Infinity, key) : keys.push(key); -Raven.noConflict = function () { - _window.Raven = _Raven; - return Raven; -}; + if (~indexOf(stack, value)) { + value = cycleReplacer.call(this, key, value); + } + } else { + stack.push(value); + } -Raven.afterLoad(); -var singleton = Raven; + return replacer == null + ? value instanceof Error ? stringifyError(value) : value + : replacer.call(this, key, value); + }; +} -/** - * console plugin +},{}],10:[function(_dereq_,module,exports){ +/* + * JavaScript MD5 + * https://github.com/blueimp/JavaScript-MD5 * - * Monkey patches console.* calls into Sentry messages with - * their appropriate log levels. (Experimental) + * Copyright 2011, Sebastian Tschan + * https://blueimp.net * - * Options: + * Licensed under the MIT license: + * https://opensource.org/licenses/MIT * - * `levels`: An array of levels (methods on `console`) to report to Sentry. - * Defaults to debug, info, warn, and error. + * Based on + * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message + * Digest Algorithm, as defined in RFC 1321. + * Version 2.2 Copyright (C) Paul Johnston 1999 - 2009 + * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet + * Distributed under the BSD License + * See http://pajhome.org.uk/crypt/md5 for more info. */ -var wrapConsoleMethod$1 = console$1.wrapMethod; - -function consolePlugin(Raven, console, pluginOptions) { - console = console || window.console || {}; - pluginOptions = pluginOptions || {}; - var logLevels = pluginOptions.levels || ['debug', 'info', 'warn', 'error']; - if ('assert' in console) logLevels.push('assert'); +/* +* Add integers, wrapping at 2^32. This uses 16-bit operations internally +* to work around bugs in some JS interpreters. +*/ +function safeAdd(x, y) { + var lsw = (x & 0xffff) + (y & 0xffff); + var msw = (x >> 16) + (y >> 16) + (lsw >> 16); + return (msw << 16) | (lsw & 0xffff); +} - var callback = function callback(msg, data) { - Raven.captureMessage(msg, data); - }; +/* +* Bitwise rotate a 32-bit number to the left. +*/ +function bitRotateLeft(num, cnt) { + return (num << cnt) | (num >>> (32 - cnt)); +} - var level = logLevels.pop(); +/* +* These functions implement the four basic operations the algorithm uses. +*/ +function md5cmn(q, a, b, x, s, t) { + return safeAdd(bitRotateLeft(safeAdd(safeAdd(a, q), safeAdd(x, t)), s), b); +} +function md5ff(a, b, c, d, x, s, t) { + return md5cmn((b & c) | (~b & d), a, b, x, s, t); +} +function md5gg(a, b, c, d, x, s, t) { + return md5cmn((b & d) | (c & ~d), a, b, x, s, t); +} +function md5hh(a, b, c, d, x, s, t) { + return md5cmn(b ^ c ^ d, a, b, x, s, t); +} +function md5ii(a, b, c, d, x, s, t) { + return md5cmn(c ^ (b | ~d), a, b, x, s, t); +} - while (level) { - wrapConsoleMethod$1(console, level, callback); - level = logLevels.pop(); +/* +* Calculate the MD5 of an array of little-endian words, and a bit length. +*/ +function binlMD5(x, len) { + /* append padding */ + x[len >> 5] |= 0x80 << (len % 32); + x[(((len + 64) >>> 9) << 4) + 14] = len; + + var i; + var olda; + var oldb; + var oldc; + var oldd; + var a = 1732584193; + var b = -271733879; + var c = -1732584194; + var d = 271733878; + + for (i = 0; i < x.length; i += 16) { + olda = a; + oldb = b; + oldc = c; + oldd = d; + + a = md5ff(a, b, c, d, x[i], 7, -680876936); + d = md5ff(d, a, b, c, x[i + 1], 12, -389564586); + c = md5ff(c, d, a, b, x[i + 2], 17, 606105819); + b = md5ff(b, c, d, a, x[i + 3], 22, -1044525330); + a = md5ff(a, b, c, d, x[i + 4], 7, -176418897); + d = md5ff(d, a, b, c, x[i + 5], 12, 1200080426); + c = md5ff(c, d, a, b, x[i + 6], 17, -1473231341); + b = md5ff(b, c, d, a, x[i + 7], 22, -45705983); + a = md5ff(a, b, c, d, x[i + 8], 7, 1770035416); + d = md5ff(d, a, b, c, x[i + 9], 12, -1958414417); + c = md5ff(c, d, a, b, x[i + 10], 17, -42063); + b = md5ff(b, c, d, a, x[i + 11], 22, -1990404162); + a = md5ff(a, b, c, d, x[i + 12], 7, 1804603682); + d = md5ff(d, a, b, c, x[i + 13], 12, -40341101); + c = md5ff(c, d, a, b, x[i + 14], 17, -1502002290); + b = md5ff(b, c, d, a, x[i + 15], 22, 1236535329); + + a = md5gg(a, b, c, d, x[i + 1], 5, -165796510); + d = md5gg(d, a, b, c, x[i + 6], 9, -1069501632); + c = md5gg(c, d, a, b, x[i + 11], 14, 643717713); + b = md5gg(b, c, d, a, x[i], 20, -373897302); + a = md5gg(a, b, c, d, x[i + 5], 5, -701558691); + d = md5gg(d, a, b, c, x[i + 10], 9, 38016083); + c = md5gg(c, d, a, b, x[i + 15], 14, -660478335); + b = md5gg(b, c, d, a, x[i + 4], 20, -405537848); + a = md5gg(a, b, c, d, x[i + 9], 5, 568446438); + d = md5gg(d, a, b, c, x[i + 14], 9, -1019803690); + c = md5gg(c, d, a, b, x[i + 3], 14, -187363961); + b = md5gg(b, c, d, a, x[i + 8], 20, 1163531501); + a = md5gg(a, b, c, d, x[i + 13], 5, -1444681467); + d = md5gg(d, a, b, c, x[i + 2], 9, -51403784); + c = md5gg(c, d, a, b, x[i + 7], 14, 1735328473); + b = md5gg(b, c, d, a, x[i + 12], 20, -1926607734); + + a = md5hh(a, b, c, d, x[i + 5], 4, -378558); + d = md5hh(d, a, b, c, x[i + 8], 11, -2022574463); + c = md5hh(c, d, a, b, x[i + 11], 16, 1839030562); + b = md5hh(b, c, d, a, x[i + 14], 23, -35309556); + a = md5hh(a, b, c, d, x[i + 1], 4, -1530992060); + d = md5hh(d, a, b, c, x[i + 4], 11, 1272893353); + c = md5hh(c, d, a, b, x[i + 7], 16, -155497632); + b = md5hh(b, c, d, a, x[i + 10], 23, -1094730640); + a = md5hh(a, b, c, d, x[i + 13], 4, 681279174); + d = md5hh(d, a, b, c, x[i], 11, -358537222); + c = md5hh(c, d, a, b, x[i + 3], 16, -722521979); + b = md5hh(b, c, d, a, x[i + 6], 23, 76029189); + a = md5hh(a, b, c, d, x[i + 9], 4, -640364487); + d = md5hh(d, a, b, c, x[i + 12], 11, -421815835); + c = md5hh(c, d, a, b, x[i + 15], 16, 530742520); + b = md5hh(b, c, d, a, x[i + 2], 23, -995338651); + + a = md5ii(a, b, c, d, x[i], 6, -198630844); + d = md5ii(d, a, b, c, x[i + 7], 10, 1126891415); + c = md5ii(c, d, a, b, x[i + 14], 15, -1416354905); + b = md5ii(b, c, d, a, x[i + 5], 21, -57434055); + a = md5ii(a, b, c, d, x[i + 12], 6, 1700485571); + d = md5ii(d, a, b, c, x[i + 3], 10, -1894986606); + c = md5ii(c, d, a, b, x[i + 10], 15, -1051523); + b = md5ii(b, c, d, a, x[i + 1], 21, -2054922799); + a = md5ii(a, b, c, d, x[i + 8], 6, 1873313359); + d = md5ii(d, a, b, c, x[i + 15], 10, -30611744); + c = md5ii(c, d, a, b, x[i + 6], 15, -1560198380); + b = md5ii(b, c, d, a, x[i + 13], 21, 1309151649); + a = md5ii(a, b, c, d, x[i + 4], 6, -145523070); + d = md5ii(d, a, b, c, x[i + 11], 10, -1120210379); + c = md5ii(c, d, a, b, x[i + 2], 15, 718787259); + b = md5ii(b, c, d, a, x[i + 9], 21, -343485551); + + a = safeAdd(a, olda); + b = safeAdd(b, oldb); + c = safeAdd(c, oldc); + d = safeAdd(d, oldd); } + return [a, b, c, d]; } -var console$3 = consolePlugin; - -/** - * Ember.js plugin - * - * Patches event handler callbacks and ajax callbacks. - */ -function emberPlugin(Raven, Ember) { - Ember = Ember || window.Ember; // quit if Ember isn't on the page +/* +* Convert an array of little-endian words to a string +*/ +function binl2rstr(input) { + var i; + var output = ''; + var length32 = input.length * 32; + for (i = 0; i < length32; i += 8) { + output += String.fromCharCode((input[i >> 5] >>> (i % 32)) & 0xff); + } + return output; +} - if (!Ember) return; - var _oldOnError = Ember.onerror; +/* +* Convert a raw string to an array of little-endian words +* Characters >255 have their high-byte silently ignored. +*/ +function rstr2binl(input) { + var i; + var output = []; + output[(input.length >> 2) - 1] = undefined; + for (i = 0; i < output.length; i += 1) { + output[i] = 0; + } + var length8 = input.length * 8; + for (i = 0; i < length8; i += 8) { + output[i >> 5] |= (input.charCodeAt(i / 8) & 0xff) << (i % 32); + } + return output; +} - Ember.onerror = function EmberOnError(error) { - Raven.captureException(error); +/* +* Calculate the MD5 of a raw string +*/ +function rstrMD5(s) { + return binl2rstr(binlMD5(rstr2binl(s), s.length * 8)); +} - if (typeof _oldOnError === 'function') { - _oldOnError.call(this, error); - } - }; +/* +* Calculate the HMAC-MD5, of a key and some data (raw strings) +*/ +function rstrHMACMD5(key, data) { + var i; + var bkey = rstr2binl(key); + var ipad = []; + var opad = []; + var hash; + ipad[15] = opad[15] = undefined; + if (bkey.length > 16) { + bkey = binlMD5(bkey, key.length * 8); + } + for (i = 0; i < 16; i += 1) { + ipad[i] = bkey[i] ^ 0x36363636; + opad[i] = bkey[i] ^ 0x5c5c5c5c; + } + hash = binlMD5(ipad.concat(rstr2binl(data)), 512 + data.length * 8); + return binl2rstr(binlMD5(opad.concat(hash), 512 + 128)); +} - Ember.RSVP.on('error', function (reason) { - if (reason instanceof Error) { - Raven.captureException(reason, { - extra: { - context: 'Unhandled Promise error detected' - } - }); - } else { - Raven.captureMessage('Unhandled Promise error detected', { - extra: { - reason: reason - } - }); - } - }); +/* +* Convert a raw string to a hex string +*/ +function rstr2hex(input) { + var hexTab = '0123456789abcdef'; + var output = ''; + var x; + var i; + for (i = 0; i < input.length; i += 1) { + x = input.charCodeAt(i); + output += hexTab.charAt((x >>> 4) & 0x0f) + hexTab.charAt(x & 0x0f); + } + return output; } -var ember = emberPlugin; +/* +* Encode a string as utf-8 +*/ +function str2rstrUTF8(input) { + return unescape(encodeURIComponent(input)); +} -/* This file was generated by './scripts/generate-plugin-combinations.js'! */ +/* +* Take string arguments and return either raw or hex encoded strings +*/ +function rawMD5(s) { + return rstrMD5(str2rstrUTF8(s)); +} +function hexMD5(s) { + return rstr2hex(rawMD5(s)); +} +function rawHMACMD5(k, d) { + return rstrHMACMD5(str2rstrUTF8(k), str2rstrUTF8(d)); +} +function hexHMACMD5(k, d) { + return rstr2hex(rawHMACMD5(k, d)); +} -singleton.addPlugin(console$3).addPlugin(ember); -var console_ember = {}; +function md5(string, key, raw) { + if (!key) { + if (!raw) { + return hexMD5(string); + } + return rawMD5(string); + } + if (!raw) { + return hexHMACMD5(key, string); + } + return rawHMACMD5(key, string); +} -return console_ember; +module.exports = md5; -}))); +},{}]},{},[6,1,2])(6) +}); \ No newline at end of file diff --git a/dist/console,ember/raven.min.js b/dist/console,ember/raven.min.js index 9aba4ea3b787..a75a4a9c62e6 100644 --- a/dist/console,ember/raven.min.js +++ b/dist/console,ember/raven.min.js @@ -1,3 +1,4 @@ -/*! Raven.js 3.22.2 (1b6187b) | github.com/getsentry/raven-js */ -!function(a,b){"object"==typeof exports&&"undefined"!=typeof module?module.exports=b():"function"==typeof define&&define.amd?define(b):a.Raven=b()}(this,function(){"use strict";function a(a,b){return b={exports:{}},a(b,b.exports),b.exports}function b(a){return(b="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(a){return typeof a}:function(a){return a&&"function"==typeof Symbol&&a.constructor===Symbol&&a!==Symbol.prototype?"symbol":typeof a})(a)}function c(a){return"object"===b(a)&&null!==a}function d(a){switch({}.toString.call(a)){case"[object Error]":return!0;case"[object Exception]":return!0;case"[object DOMException]":return!0;default:return a instanceof Error}}function e(a){return l()&&"[object ErrorEvent]"==={}.toString.call(a)}function f(a){return void 0===a}function g(a){return"function"==typeof a}function h(a){return"[object Object]"===Object.prototype.toString.call(a)}function i(a){return"[object String]"===Object.prototype.toString.call(a)}function j(a){return"[object Array]"===Object.prototype.toString.call(a)}function k(a){if(!h(a))return!1;for(var b in a)if(a.hasOwnProperty(b))return!1;return!0}function l(){try{return new ErrorEvent(""),!0}catch(a){return!1}}function m(){if(!("fetch"in O))return!1;try{return new Headers,new Request(""),new Response,!0}catch(a){return!1}}function n(a){function b(b,c){var d=a(b)||b;return c?c(d)||d:d}return b}function o(a,b){var c,d;if(f(a.length))for(c in a)s(a,c)&&b.call(null,c,a[c]);else if(d=a.length)for(c=0;c ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function y(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&i(b))for(c=b.split(/\s+/),f=0;f=0;--b)l[b]===a&&l.splice(b,1)}function c(){g(),l=[]}function d(a,b){var c=null;if(!b||Q.collectWindowErrors){for(var d in l)if(l.hasOwnProperty(d))try{l[d].apply(null,[a].concat(S.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function e(a,b,c,e,f){var g=null,i=P.isErrorEvent(f)?f.error:f,k=P.isErrorEvent(a)?a.message:a;if(o)Q.computeStackTrace.augmentStackTraceWithInitialElement(o,b,c,k),h();else if(i&&P.isError(i))g=Q.computeStackTrace(i),d(g,!0);else{var l,m={url:b,line:c,column:e},n=void 0;if("[object String]"==={}.toString.call(k)){var l=k.match(U);l&&(n=l[1],k=l[2])}m.func=T,g={name:n,message:k,url:F(),stack:[m]},d(g,!0)}return!!j&&j.apply(this,arguments)}function f(){k||(j=R.onerror,R.onerror=e,k=!0)}function g(){k&&(R.onerror=j,k=!1,j=void 0)}function h(){var a=o,b=m;m=null,o=null,n=null,d.apply(null,[a,!1].concat(b))}function i(a,b){var c=S.call(arguments,1);if(o){if(n===a)return;h()}var d=Q.computeStackTrace(a);if(o=d,n=a,m=c,setTimeout(function(){n===a&&h()},d.incomplete?2e3:0),b!==!1)throw a}var j,k,l=[],m=null,n=null,o=null;return i.subscribe=a,i.unsubscribe=b,i.uninstall=c,i}(),Q.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,d,e=/^\s*at (.*?) ?\(((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,f=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|\[native).*?|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,g=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,h=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,i=/\((\S*)(?::(\d+))(?::(\d+))\)/,j=a.stack.split("\n"),k=[],l=(/^(.*) is undefined$/.exec(a.message),0),m=j.length;l eval")>-1;o&&(b=h.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==l||c[5]||"undefined"==typeof a.columnNumber||(k[0].column=a.columnNumber+1),d={url:c[3],func:c[1]||T,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}!d.func&&d.line&&(d.func=T),k.push(d)}return k.length?{name:a.name,message:a.message,url:F(),stack:k}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=T),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,e){for(var f,g,h=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,i=[],j={},k=!1,l=c.caller;l&&!k;l=l.caller)if(l!==d&&l!==Q.report){if(g={url:null,func:T,line:null,column:null},l.name?g.func=l.name:(f=h.exec(l.toString()))&&(g.func=f[1]),"undefined"==typeof g.func)try{g.func=f.input.substring(0,f.input.indexOf("{"))}catch(m){}j[""+l]?k=!0:j[""+l]=!0,i.push(g)}e&&i.splice(0,e);var n={name:a.name,message:a.message,url:F(),stack:i};return b(n,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),n}function d(b,d){var e=null;d=null==d?0:+d;try{if(e=a(b))return e}catch(f){if(Q.debug)throw f}try{if(e=c(b,d+1))return e}catch(f){if(Q.debug)throw f}return{name:b.name,message:b.message,url:F()}}return d.augmentStackTraceWithInitialElement=b,d.computeStackTraceFromStackProp=a,d}();var V=Q,W=a(function(a,b){function c(a,b){for(var c=0;c0){var i=c(d,this);~i?d.splice(i+1):d.push(this),~i?f.splice(i,1/0,g):f.push(g),~c(d,h)&&(h=b.call(this,g,h))}else d.push(h);return null==a?h instanceof Error?e(h):h:a.call(this,g,h)}}b=a.exports=d,b.getSerialize=f});G.prototype=new Error,G.prototype.constructor=G;var X=G,Y=function(a,b,c){var d=a[b],e=a;if(b in a){var f="warn"===b?"warning":b;a[b]=function(){var a=[].slice.call(arguments),g=P.safeJoin(a," "),h={level:f,logger:"console",extra:{arguments:a}};"assert"===b?a[0]===!1&&(g="Assertion failed: "+(P.safeJoin(a.slice(1)," ")||"console.assert"),h.extra.arguments=a.slice(1),c&&c(g,h)):c&&c(g,h),d&&Function.prototype.apply.call(d,e,a)}}},Z={wrapMethod:Y},$=P.isError,_=P.isObject,aa=P.isErrorEvent,ba=P.isUndefined,ca=P.isFunction,da=P.isString,ea=P.isArray,fa=P.isEmptyObject,ga=P.each,ha=P.objectMerge,ia=P.truncate,ja=P.objectFrozen,ka=P.hasKey,la=P.joinRegExp,ma=P.urlencode,na=P.uuid4,oa=P.htmlTreeAsString,pa=P.isSameException,qa=P.isSameStacktrace,ra=P.parseUrl,sa=P.fill,ta=P.supportsFetch,ua=Z.wrapMethod,va="source protocol user pass host port path".split(" "),wa=/^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/,xa="undefined"!=typeof window?window:"undefined"!=typeof M?M:"undefined"!=typeof self?self:{},ya=xa.document,za=xa.navigator;J.prototype={VERSION:"3.22.2",debug:!1,TraceKit:V,config:function(a,b){var c=this;if(c.i)return this.C("error","Error: Raven has already been configured"),c;if(!a)return c;var d=c.m;b&&ga(b,function(a,b){"tags"===a||"extra"===a||"user"===a?c.l[a]=b:d[a]=b}),c.setDSN(a),d.ignoreErrors.push(/^Script error\.?$/),d.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/),d.ignoreErrors=la(d.ignoreErrors),d.ignoreUrls=!!d.ignoreUrls.length&&la(d.ignoreUrls),d.whitelistUrls=!!d.whitelistUrls.length&&la(d.whitelistUrls),d.includePaths=la(d.includePaths),d.maxBreadcrumbs=Math.max(0,Math.min(d.maxBreadcrumbs||100,100));var e={xhr:!0,console:!0,dom:!0,location:!0,sentry:!0},f=d.autoBreadcrumbs;"[object Object]"==={}.toString.call(f)?f=ha(e,f):f!==!1&&(f=e),d.autoBreadcrumbs=f;var g={tryCatch:!0},h=d.instrument;return"[object Object]"==={}.toString.call(h)?h=ha(g,h):h!==!1&&(h=g),d.instrument=h,V.collectWindowErrors=!!d.collectWindowErrors,c},install:function(){var a=this;return a.isSetup()&&!a.p&&(V.report.subscribe(function(){a.D.apply(a,arguments)}),a.E(),a.m.instrument&&a.m.instrument.tryCatch&&a.F(),a.m.autoBreadcrumbs&&a.G(),a.H(),a.p=!0),Error.stackTraceLimit=a.m.stackTraceLimit,this},setDSN:function(a){var b=this,c=b.I(a),d=c.path.lastIndexOf("/"),e=c.path.substr(1,d);b.J=a,b.j=c.user,b.K=c.pass&&c.pass.substr(1),b.k=c.path.substr(d+1),b.i=b.L(c),b.M=b.i+"/"+e+"api/"+b.k+"/store/",this.A()},context:function(a,b,c){return ca(a)&&(c=b||[],b=a,a=void 0),this.wrap(a,b).apply(this,c)},wrap:function(a,b,c){function d(){var d=[],f=arguments.length,g=!a||a&&a.deep!==!1;for(c&&ca(c)&&c.apply(this,arguments);f--;)d[f]=g?e.wrap(a,arguments[f]):arguments[f];try{return b.apply(this,d)}catch(h){throw e.N(),e.captureException(h,a),h}}var e=this;if(ba(b)&&!ca(a))return a;if(ca(a)&&(b=a,a=void 0),!ca(b))return b;try{if(b.a)return b;if(b.O)return b.O}catch(f){return b}for(var g in b)ka(b,g)&&(d[g]=b[g]);return d.prototype=b.prototype,b.O=d,d.a=!0,d.b=b,d},uninstall:function(){return V.report.uninstall(),this.P(),this.Q(),this.R(),Error.stackTraceLimit=this.q,this.p=!1,this},captureException:function(a,b){b=ha({trimHeadFrames:0},b?b:{});var c=!$(a),d=!aa(a),e=aa(a)&&!a.error;if(c&&d||e)return this.captureMessage(a,ha(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}));aa(a)&&(a=a.error),this.f=a;try{var f=V.computeStackTrace(a);this.S(f,b)}catch(g){if(a!==g)throw g}return this},captureMessage:function(a,b){if(!this.m.ignoreErrors.test||!this.m.ignoreErrors.test(a)){b=b||{};var c,d=ha({message:a+""},b);try{throw new Error(a)}catch(e){c=e}c.name=null;var f=V.computeStackTrace(c),g=ea(f.stack)&&f.stack[1],h=g&&g.url||"";if((!this.m.ignoreUrls.test||!this.m.ignoreUrls.test(h))&&(!this.m.whitelistUrls.test||this.m.whitelistUrls.test(h))){if(this.m.stacktrace||b&&b.stacktrace){b=ha({fingerprint:a,trimHeadFrames:(b.trimHeadFrames||0)+1},b);var i=this.T(f,b);d.stacktrace={frames:i.reverse()}}return this.U(d),this}}},captureBreadcrumb:function(a){var b=ha({timestamp:H()/1e3},a);if(ca(this.m.breadcrumbCallback)){var c=this.m.breadcrumbCallback(b);if(_(c)&&!fa(c))b=c;else if(c===!1)return this}return this.w.push(b),this.w.length>this.m.maxBreadcrumbs&&this.w.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.t.push([a,b]),this.p&&this.H(),this},setUserContext:function(a){return this.l.user=a,this},setExtraContext:function(a){return this.V("extra",a),this},setTagsContext:function(a){return this.V("tags",a),this},clearContext:function(){return this.l={},this},getContext:function(){return JSON.parse(W(this.l))},setEnvironment:function(a){return this.m.environment=a,this},setRelease:function(a){return this.m.release=a,this},setDataCallback:function(a){var b=this.m.dataCallback;return this.m.dataCallback=I(b,a),this},setBreadcrumbCallback:function(a){var b=this.m.breadcrumbCallback;return this.m.breadcrumbCallback=I(b,a),this},setShouldSendCallback:function(a){var b=this.m.shouldSendCallback;return this.m.shouldSendCallback=I(b,a),this},setTransport:function(a){return this.m.transport=a,this},lastException:function(){return this.f},lastEventId:function(){return this.h},isSetup:function(){return!!this.c&&(!!this.i||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.C("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=xa.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(ya){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new X("Missing eventId");var c=a.dsn||this.J;if(!c)throw new X("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.l.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.L(this.I(c)),h=ya.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(ya.head||ya.body).appendChild(h)}},N:function(){var a=this;this.o+=1,setTimeout(function(){a.o-=1})},W:function(a,b){var c,d;if(this.d){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),ya.createEvent?(c=ya.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=ya.createEventObject(),c.eventType=a);for(d in b)ka(b,d)&&(c[d]=b[d]);if(ya.createEvent)ya.dispatchEvent(c);else try{ya.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},X:function(a){var b=this;return function(c){if(b.Y=null,b.x!==c){b.x=c;var d;try{d=oa(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},Z:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.Y;g||a.X("input")(c),clearTimeout(g),a.Y=setTimeout(function(){a.Y=null},b)}}},$:function(a,b){var c=ra(this.y.href),d=ra(b),e=ra(a);this.z=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},E:function(){var a=this;a._=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.a?a._.apply(this.b,arguments):a._.apply(this,arguments)}},P:function(){this._&&(Function.prototype.toString=this._)},F:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.$(b.z,c+""),a.apply(this,arguments)}};sa(history,"pushState",j,d),sa(history,"replaceState",j,d)}if(c.console&&"console"in xa&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};ga(["debug","info","warn","error","log"],function(a,b){ua(console,b,k)})}},Q:function(){for(var a;this.v.length;){a=this.v.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},R:function(){for(var a in this.s)this.r[a]=this.s[a]},H:function(){var a=this;ga(this.t,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},I:function(a){var b=wa.exec(a),c={},d=7;try{for(;d--;)c[va[d]]=b[d]||""}catch(e){throw new X("Invalid DSN: "+a)}if(c.pass&&!this.m.allowSecretKey)throw new X("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},L:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},D:function(){this.o||this.S.apply(this,arguments)},S:function(a,b){var c=this.T(a,b);this.W("handle",{stackInfo:a,options:b}),this.ba(a.name,a.message,a.url,a.lineno,c,b)},T:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(ga(a.stack,function(b,e){var f=c.ca(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.w,0)}),this.l.user&&(a.user=this.l.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||fa(a[b]))&&delete a[b]}),ca(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!fa(a)&&(!ca(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.ia()?void this.C("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random()this.k.maxBreadcrumbs&&this.u.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.r.push([a,b]),this.n&&this.F(),this},setUserContext:function(a){return this.j.user=a,this},setExtraContext:function(a){return this.Z("extra",a),this},setTagsContext:function(a){return this.Z("tags",a),this},clearContext:function(){return this.j={},this},getContext:function(){return JSON.parse(h(this.j))},setEnvironment:function(a){return this.k.environment=a,this},setRelease:function(a){return this.k.release=a,this},setDataCallback:function(a){var b=this.k.dataCallback;return this.k.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.k.breadcrumbCallback;return this.k.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.k.shouldSendCallback;return this.k.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.k.transport=a,this},lastException:function(){return this.d},lastEventId:function(){return this.f},isSetup:function(){return!!this.a&&(!!this.g||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.z("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=P.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(Q){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.H;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.j.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.J(this.G(c)),h=Q.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(Q.head||Q.body).appendChild(h)}},L:function(){var a=this;this.m+=1,setTimeout(function(){a.m-=1})},$:function(a,b){var c,d;if(this.b){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),Q.createEvent?(c=Q.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=Q.createEventObject(),c.eventType=a);for(d in b)y(b,d)&&(c[d]=b[d]);if(Q.createEvent)Q.dispatchEvent(c);else try{Q.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},_:function(a){var b=this;return function(c){if(b.aa=null,b.v!==c){b.v=c;var d;try{d=C(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ba:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.aa;g||a._("input")(c),clearTimeout(g),a.aa=setTimeout(function(){a.aa=null},b)}}},ca:function(a,b){var c=F(this.w.href),d=F(b),e=F(a);this.x=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},C:function(){var a=this;a.da=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.M?a.da.apply(this.O,arguments):a.da.apply(this,arguments)}},Q:function(){this.da&&(Function.prototype.toString=this.da)},D:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.ca(b.x,c+""),a.apply(this,arguments)}};G(history,"pushState",j,d),G(history,"replaceState",j,d)}if(c.console&&"console"in P&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};u(["debug","info","warn","error","log"],function(a,b){M(console,b,k)})}},R:function(){for(var a;this.t.length;){a=this.t.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},S:function(){for(var a in this.q)this.p[a]=this.q[a]},F:function(){var a=this;u(this.r,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},G:function(a){var b=O.exec(a),c={},d=7;try{for(;d--;)c[N[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.k.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},J:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},A:function(){this.m||this.V.apply(this,arguments)},V:function(a,b){var c=this.X(a,b);this.$("handle",{stackInfo:a,options:b}),this.fa(a.name,a.message,a.url,a.lineno,c,b)},X:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(u(a.stack,function(b,e){var f=c.ga(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.u,0)}),this.j.user&&(a.user=this.j.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),a=this.pa(a),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||t(a[b]))&&delete a[b]}),q(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!t(a)&&(!q(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.ma()?void this.z("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function B(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&j(b))for(c=b.split(/\s+/),f=0;fc?M(a,b-1):d}function N(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?T:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function O(a,b){function c(a){return k(a)?a.map(function(a){return c(a)}):i(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!k(b)||k(b)&&0===b.length)return a;var d,e=w(b),f="********";try{d=JSON.parse(P(a))}catch(g){return a}return c(d)}var P=a(9),Q="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},R=3,S=51200,T=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isUndefined:g,isFunction:h,isPlainObject:i,isString:j,isArray:k,isEmptyObject:l,supportsErrorEvent:m,supportsFetch:n,supportsReferrerPolicy:o,supportsPromiseRejectionEvent:p,wrappedCallback:q,each:r,objectMerge:s,truncate:u,objectFrozen:t,hasKey:v,joinRegExp:w,urlencode:x,uuid4:z,htmlTreeAsString:A,htmlElementAsString:B,isSameException:E,isSameStacktrace:F,parseUrl:y,fill:G,safeJoin:H,serializeException:M,serializeKeysForMessage:N,sanitize:O}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{9:9}],8:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}var e=a(7),f={collectWindowErrors:!0,debug:!1},g="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},h=[].slice,i="?",j=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;f.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function k(a,b){var c=null;if(!b||f.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(h.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,g,h){var l=null,m=e.isErrorEvent(h)?h.error:h,n=e.isErrorEvent(a)?a.message:a;if(v)f.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&e.isError(m))l=f.computeStackTrace(m),k(l,!0);else{var p,r={url:b,line:c,column:g},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(j);p&&(s=p[1],n=p[2])}r.func=i,l={name:s,message:n,url:d(),stack:[r]},k(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=g.onerror,g.onerror=l,r=!0)}function n(){r&&(g.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,k.apply(null,[a,!1].concat(b))}function p(a,b){var c=h.call(arguments,1);if(v){if(u===a)return;o()}var d=f.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),f.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,e,f=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,g=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,h=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,j=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,k=/\((\S*)(?::(\d+))(?::(\d+))\)/,l=a.stack.split("\n"),m=[],n=(/^(.*) is undefined$/.exec(a.message),0),o=l.length;n eval")>-1;q&&(b=j.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==n||c[5]||"undefined"==typeof a.columnNumber||(m[0].column=a.columnNumber+1),e={url:c[3],func:c[1]||i,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}!e.func&&e.line&&(e.func=i),m.push(e)}return m.length?{name:a.name,message:a.message,url:d(),stack:m}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=i),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,g){for(var h,j,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==e&&o!==f.report){if(j={url:null,func:i,line:null,column:null},o.name?j.func=o.name:(h=k.exec(o.toString()))&&(j.func=h[1]),"undefined"==typeof j.func)try{j.func=h.input.substring(0,h.input.indexOf("{"))}catch(p){}m[""+o]?n=!0:m[""+o]=!0,l.push(j)}g&&l.splice(0,g);var q={name:a.name,message:a.message,url:d(),stack:l};return b(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),q}function e(b,e){var g=null;e=null==e?0:+e;try{if(g=a(b))return g}catch(h){if(f.debug)throw h}try{if(g=c(b,e+1))return g}catch(h){if(f.debug)throw h}return{name:b.name,message:b.message,url:d()}}return e.augmentStackTraceWithInitialElement=b,e.computeStackTraceFromStackProp=a,e}(),b.exports=f}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{7:7}],9:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}],10:[function(a,b,c){function d(a,b){var c=(65535&a)+(65535&b),d=(a>>16)+(b>>16)+(c>>16);return d<<16|65535&c}function e(a,b){return a<>>32-b}function f(a,b,c,f,g,h){return d(e(d(d(b,a),d(f,h)),g),c)}function g(a,b,c,d,e,g,h){return f(b&c|~b&d,a,b,e,g,h)}function h(a,b,c,d,e,g,h){return f(b&d|c&~d,a,b,e,g,h)}function i(a,b,c,d,e,g,h){return f(b^c^d,a,b,e,g,h)}function j(a,b,c,d,e,g,h){return f(c^(b|~d),a,b,e,g,h)}function k(a,b){a[b>>5]|=128<>>9<<4)+14]=b;var c,e,f,k,l,m=1732584193,n=-271733879,o=-1732584194,p=271733878;for(c=0;c>5]>>>b%32&255);return c}function m(a){var b,c=[];for(c[(a.length>>2)-1]=void 0,b=0;b>5]|=(255&a.charCodeAt(b/8))<16&&(e=k(e,8*a.length)),c=0;c<16;c+=1)f[c]=909522486^e[c],g[c]=1549556828^e[c];return d=k(f.concat(m(b)),512+8*b.length),l(k(g.concat(d),640))}function p(a){var b,c,d="0123456789abcdef",e="";for(c=0;c>>4&15)+d.charAt(15&b);return e}function q(a){return unescape(encodeURIComponent(a))}function r(a){return n(q(a))}function s(a){return p(r(a))}function t(a,b){return o(q(a),q(b))}function u(a,b){return p(t(a,b))}function v(a,b,c){return b?c?t(b,a):u(b,a):c?r(a):s(a)}b.exports=v},{}]},{},[6,1,2])(6)}); //# sourceMappingURL=raven.min.js.map \ No newline at end of file diff --git a/dist/console,ember/raven.min.js.map b/dist/console,ember/raven.min.js.map index ac80e4cd88f3..6e7752ea7df2 100644 --- a/dist/console,ember/raven.min.js.map +++ b/dist/console,ember/raven.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["raven.js"],"names":["global","factory","exports","module","define","amd","Raven","this","createCommonjsModule","fn","_typeof","obj","Symbol","iterator","constructor","prototype","isObject$1","what","isError$1","value","toString","call","Error","isErrorEvent$1","supportsErrorEvent","isUndefined$1","isFunction$1","isPlainObject","Object","isString$1","isArray$1","isEmptyObject$1","_","hasOwnProperty","ErrorEvent","e","supportsFetch$1","_window$3","Headers","Request","Response","wrappedCallback","callback","dataCallback","data","original","normalizedData","each$1","i","j","length","hasKey$1","objectMerge$1","obj1","obj2","key","objectFrozen$1","isFrozen","truncate$1","str","max","substr","object","joinRegExp$1","patterns","pattern","sources","len","push","replace","source","RegExp","join","urlencode$1","o","pairs","encodeURIComponent","parseUrl$1","url","match","query","fragment","protocol","host","path","relative","uuid4$1","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","r","Math","random","htmlTreeAsString$1","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","reverse","className","classes","attr","tagName","toLowerCase","id","split","attrWhitelist","getAttribute","isOnlyOneTruthy","a","b","isBothUndefined","isSameException$1","ex1","ex2","values","type","stacktrace","isSameStacktrace$1","stack1","stack2","frames1","frames","frames2","filename","lineno","colno","fill$1","name","replacement","track","orig","__raven__","__orig__","safeJoin","input","delimiter","output","String","getLocationHref","document","location","href","RavenConfigError","message","now","Date","keepOriginalCallback","isFunction","Raven$1","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window$1","SENTRY_RELEASE","logger","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","_fetchDefaults","method","keepalive","referrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","console","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","_lastHref","_resetBackoff","consolePlugin","pluginOptions","window","logLevels","levels","msg","captureMessage","level","pop","wrapConsoleMethod$1","emberPlugin","Ember","_oldOnError","onerror","error","captureException","RSVP","on","reason","extra","context","commonjsGlobal","self","_sPO","setPrototypeOf","p","__proto__","Reflect","construct","Parent","args","Class","Constructor","apply","bind","utils","isObject","isError","isErrorEvent","isString","isArray","isEmptyObject","supportsFetch","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","TraceKit","debug","_window$2","_slice","slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","report","subscribe","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","stack","isWindowError","exception","concat","arguments","inner","traceKitWindowOnError","lineNo","colNo","ex","lastExceptionStack","computeStackTrace","augmentStackTraceWithInitialElement","processLastException","groups","line","column","undefined","func","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","lastException","rethrow","setTimeout","incomplete","uninstall","computeStackTraceFromStackProp","submatch","parts","element","chrome","gecko","winjs","geckoEval","chromeEval","lines","exec","isNative","indexOf","isEval","columnNumber","stackInfo","initial","unshift","partial","computeStackTraceByWalkingCallerChain","depth","item","functionName","funcs","recursion","curr","caller","substring","result","sourceURL","fileName","lineNumber","description","tracekit","stringify_1","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","err","keys","thisPos","Infinity","getSerialize","configError","wrapMethod","originalConsoleLevel","originalConsole","sentryLevel","Function","console$1","wrapConsoleMethod","dsnKeys","dsnPattern","navigator","VERSION","config","dsn","options","_logDebug","globalOptions","setDSN","maxBreadcrumbs","min","autoBreadcrumbDefaults","xhr","dom","sentry","instrumentDefaults","tryCatch","install","isSetup","_handleOnErrorStackInfo","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","lastIndexOf","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","wrap","_before","wrapped","deep","_ignoreNextOnError","__raven_wrapper__","property","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","trimHeadFrames","isNotError","isNotErrorEvent","isErrorEventWithoutError","_handleStackInfo","test","initialCall","fileurl","fingerprint","_prepareFrames","_send","captureBreadcrumb","crumb","timestamp","breadcrumbCallback","shift","addPlugin","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","setDataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","N","W","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","X","evtName","_keypressTimeout","target","category","Z","debounceDuration","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","$","from","to","parsedLoc","parsedTo","parsedFrom","E","_originalFunctionToString","P","F","wrapTimeFn","t","Array","originalCallback","wrapEventTarget","proto","capture","secure","handleEvent","before","clickHandler","keypressHandler","_keypressEventHandler","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","G","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","onreadystatechange","origFetch","fetchInput","fetchData","then","response","addEventListener","attachEvent","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","Q","builtin","R","H","installer","I","m","allowSecretKey","L","port","D","S","_triggerEvent","_processException","T","frame","_normalizeFrame","in_app","ca","stackInfoUrl","normalized","function","ba","prefixedMessage","culprit","da","request","Referer","breadcrumbs","_trimBreadcrumbs","ea","urlProp","urlProps","fa","httpData","userAgent","User-Agent","referrer","A","_backoffDuration","_backoffStart","ia","ja","current","last","ka","_shouldBackoff","retry","get","getResponseHeader","parseInt","U","baseData","project","platform","_getHttpData","serverName","server_name","forEach","_sendProcessedPayload","ma","la","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","na","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","onload","open","setRequestHeader","send","oa","hash","evaluated","C","V","setUser","setReleaseContext","raven","_window","_Raven","noConflict","singleton","console$3","ember","console_ember"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file +{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","consolePlugin","console","pluginOptions","logLevels","levels","push","callback","msg","data","captureMessage","level","pop","wrapConsoleMethod","wrapMethod","addPlugin","4","6","2","emberPlugin","Ember","_oldOnError","onerror","error","captureException","RSVP","on","reason","extra","context","3","RavenConfigError","message","name","prototype","constructor","utils","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","safeJoin","logger","Function","apply","7","5","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","sanitizeKeys","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isError","isObject","isPlainObject","isErrorEvent","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","sanitize","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","config","dsn","options","_logDebug","globalOptions","key","value","setDSN","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","toString","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","substr","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","func","undefined","wrap","_before","wrapped","deep","_ignoreNextOnError","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","T","event","unhandledPromiseRejection","B","_promiseRejectionHandler","bind","addEventListener","P","removeEventListener","ex","trimHeadFrames","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","U","currentOptions","exKeys","Object","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","setDataCallback","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","L","setTimeout","$","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","_","evtName","_keypressTimeout","target","category","ba","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","ca","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","C","_originalFunctionToString","Q","D","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","type","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","E","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","R","builtin","S","F","installer","concat","G","str","m","exec","allowSecretKey","J","port","A","V","stackInfo","_triggerEvent","_processException","lineno","X","frame","_normalizeFrame","in_app","ga","stackInfoUrl","normalized","filename","line","colno","column","function","fa","prefixedMessage","exception","values","culprit","ha","request","Referer","breadcrumbs","_trimBreadcrumbs","ia","urlProp","urlProps","ja","httpData","userAgent","User-Agent","referrer","y","_backoffDuration","_backoffStart","ma","na","current","last","oa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Y","baseData","project","platform","_getHttpData","serverName","server_name","_sanitizeData","forEach","random","_sendProcessedPayload","pa","ra","qa","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","sa","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","open","setRequestHeader","send","ta","hash","evaluated","z","Z","setUser","setReleaseContext","10","8","9","RavenConstructor","_Raven","noConflict","Client","what","supportsErrorEvent","ErrorEvent","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","wrappedCallback","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","sanitizeMask","safeInput","o_O","getLocationHref","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","charAt","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","string","raw"],"mappings":";CAYA,SAAUA,GAAG,GAAoB,gBAAVC,UAAoC,mBAATC,QAAsBA,OAAOD,QAAQD,QAAS,IAAmB,kBAATG,SAAqBA,OAAOC,IAAKD,UAAUH,OAAO,CAAC,GAAIK,EAAkCA,GAAb,mBAATC,QAAwBA,OAA+B,mBAATC,QAAwBA,OAA6B,mBAAPC,MAAsBA,KAAYC,KAAKJ,EAAEK,MAAQV,MAAO,WAAqC,MAAO,SAAUW,GAAEC,EAAEC,EAAEC,GAAG,QAASC,GAAEC,EAAEC,GAAG,IAAIJ,EAAEG,GAAG,CAAC,IAAIJ,EAAEI,GAAG,CAAC,GAAIE,GAAkB,kBAATC,UAAqBA,OAAQ,KAAIF,GAAGC,EAAE,MAAOA,GAAEF,GAAE,EAAI,IAAGI,EAAE,MAAOA,GAAEJ,GAAE,EAAI,IAAIhB,GAAE,GAAIqB,OAAM,uBAAuBL,EAAE,IAAK,MAAMhB,GAAEsB,KAAK,mBAAmBtB,EAAE,GAAIuB,GAAEV,EAAEG,IAAIf,WAAYW,GAAEI,GAAG,GAAGQ,KAAKD,EAAEtB,QAAQ,SAASU,GAAG,GAAIE,GAAED,EAAEI,GAAG,GAAGL,EAAG,OAAOI,GAAEF,EAAEA,EAAEF,IAAIY,EAAEA,EAAEtB,QAAQU,EAAEC,EAAEC,EAAEC,GAAG,MAAOD,GAAEG,GAAGf,QAAkD,IAAI,GAA1CmB,GAAkB,kBAATD,UAAqBA,QAAgBH,EAAE,EAAEA,EAAEF,EAAEW,OAAOT,IAAID,EAAED,EAAEE,GAAI,OAAOD,KAAKW,GAAG,SAASC,EAAQzB,EAAOD,GAcp0B,QAAS2B,GAAclB,EAAOmB,EAASC,GACrCD,EAAUA,GAAWvB,OAAOuB,YAC5BC,EAAgBA,KAEhB,IAAIC,GAAYD,EAAcE,SAAW,QAAS,OAAQ,OAAQ,QAC9D,WAAYH,IAASE,EAAUE,KAAK,SAOxC,KALA,GAAIC,GAAW,SAASC,EAAKC,GAC3B1B,EAAM2B,eAAeF,EAAKC,IAGxBE,EAAQP,EAAUQ,MACfD,GACLE,EAAkBX,EAASS,EAAOJ,GAClCI,EAAQP,EAAUQ,MAhBtB,GAAIC,GAAoBb,EAAQ,GAAGc,UAoBnCvC,GAAOD,QAAU2B,EAEjBD,EAAQ,GAAGe,UAAUxC,EAAOD,WACzB0C,EAAI,EAAEC,EAAI,IAAIC,GAAG,SAASlB,EAAQzB,EAAOD,GAM5C,QAAS6C,GAAYpC,EAAOqC,GAI1B,GAHAA,EAAQA,GAASzC,OAAOyC,MAGxB,CAEA,GAAIC,GAAcD,EAAME,OACxBF,GAAME,QAAU,SAAsBC,GACpCxC,EAAMyC,iBAAiBD,GACI,kBAAhBF,IACTA,EAAYxB,KAAKf,KAAMyC,IAG3BH,EAAMK,KAAKC,GAAG,QAAS,SAASC,GAC1BA,YAAkBjC,OACpBX,EAAMyC,iBAAiBG,GACrBC,OAAQC,QAAS,sCAGnB9C,EAAM2B,eAAe,oCAAqCkB,OAAQD,OAAQA,QAKhFpD,EAAOD,QAAU6C,EAEjBnB,EAAQ,GAAGe,UAAUxC,EAAOD,WACzB2C,EAAI,IAAIa,GAAG,SAAS9B,EAAQzB,EAAOD,GACtC,QAASyD,GAAiBC,GACxBlD,KAAKmD,KAAO,mBACZnD,KAAKkD,QAAUA,EAEjBD,EAAiBG,UAAY,GAAIxC,OACjCqC,EAAiBG,UAAUC,YAAcJ,EAEzCxD,EAAOD,QAAUyD,OAEXf,GAAG,SAAShB,EAAQzB,EAAOD,GACjC,GAAI8D,GAAQpC,EAAQ,GAEhBc,EAAa,SAASZ,EAASS,EAAOJ,GACxC,GAAI8B,GAAuBnC,EAAQS,GAC/B2B,EAAkBpC,CAEtB,IAAMS,IAAST,GAAf,CAIA,GAAIqC,GAAwB,SAAV5B,EAAmB,UAAYA,CAEjDT,GAAQS,GAAS,WACf,GAAI6B,MAAUC,MAAM5C,KAAK6C,WAErBlC,EAAM4B,EAAMO,SAASH,EAAM,KAC3B/B,GAAQE,MAAO4B,EAAaK,OAAQ,UAAWhB,OAAQc,UAAWF,GAExD,YAAV7B,EACE6B,EAAK,MAAO,IAEdhC,EACE,sBAAwB4B,EAAMO,SAASH,EAAKC,MAAM,GAAI,MAAQ,kBAChEhC,EAAKmB,MAAMc,UAAYF,EAAKC,MAAM,GAClClC,GAAYA,EAASC,EAAKC,IAG5BF,GAAYA,EAASC,EAAKC,GAIxB4B,GAGFQ,SAASX,UAAUY,MAAMjD,KAAKwC,EAAsBC,EAAiBE,KAK3EjE,GAAOD,SACLwC,WAAYA,KAGXiC,EAAI,IAAIC,GAAG,SAAShD,EAAQzB,EAAOD,IACtC,SAAWM,GA0CX,QAASqE,KACP,OAAQ,GAAIC,MAWd,QAASC,GAAqBC,EAAU7C,GACtC,MAAO8C,GAAW9C,GACd,SAASE,GACP,MAAOF,GAASE,EAAM2C,IAExB7C,EAMN,QAASxB,KACPD,KAAKwE,IAA8B,gBAATC,QAAqBA,KAAKC,WAEpD1E,KAAK2E,GAAgBC,EAAYC,GACjC7E,KAAK8E,GAAiBF,EAAYG,GAClC/E,KAAKgF,EAAyB,KAC9BhF,KAAKiF,EAAY,KACjBjF,KAAKkF,EAAe,KACpBlF,KAAKmF,EAAgB,KACrBnF,KAAKoF,EAAa,KAClBpF,KAAKqF,EAAiB,KACtBrF,KAAKsF,KACLtF,KAAKuF,GAEHC,QAASC,EAAQC,gBAAkBD,EAAQC,eAAeC,GAC1D7B,OAAQ,aACR8B,gBACAC,cACAC,iBACAC,gBACAC,QAAS,KACTC,qBAAqB,EACrBC,4BAA4B,EAC5BC,iBAAkB,EAElBC,aAAc,IACdC,gBAAiB,GACjBC,iBAAiB,EACjBC,YAAY,EACZC,WAAY,EACZC,iBAEFzG,KAAK0G,GACHC,OAAQ,OACRC,WAAW,EAKXC,eAAgBC,IAA2B,SAAW,IAExD9G,KAAK+G,EAAiB,EACtB/G,KAAKgH,GAAoB,EACzBhH,KAAKiH,EAAgCrG,MAAMyF,gBAG3CrG,KAAKkH,EAAmBzB,EAAQrE,YAChCpB,KAAKmH,KACLnH,KAAKoH,KACLpH,KAAKqH,EAAalD,IAClBnE,KAAKsH,KACLtH,KAAKuH,KACLvH,KAAKwH,EAAqB,KAE1BxH,KAAKyH,EAAYhC,EAAQiC,SACzB1H,KAAK2H,EAAY3H,KAAKyH,GAAazH,KAAKyH,EAAUG,KAClD5H,KAAK6H,GAGL,KAAK,GAAIlB,KAAU3G,MAAKkH,EACtBlH,KAAKmH,EAAwBR,GAAU3G,KAAKkH,EAAiBP,GA1HjE,GAAImB,GAAW5G,EAAQ,GACnBwD,EAAYxD,EAAQ,GACpB6G,EAAM7G,EAAQ,IACd+B,EAAmB/B,EAAQ,GAE3BoC,EAAQpC,EAAQ,GAChB8G,EAAU1E,EAAM0E,QAChBC,EAAW3E,EAAM2E,SACjBC,EAAgB5E,EAAM4E,cACtBC,EAAe7E,EAAM6E,aACrBvD,EAActB,EAAMsB,YACpBL,EAAajB,EAAMiB,WACnB6D,EAAW9E,EAAM8E,SACjBC,EAAU/E,EAAM+E,QAChBC,EAAgBhF,EAAMgF,cACtBC,EAAOjF,EAAMiF,KACbC,EAAclF,EAAMkF,YACpBC,EAAWnF,EAAMmF,SACjBC,EAAepF,EAAMoF,aACrBC,EAASrF,EAAMqF,OACfC,EAAatF,EAAMsF,WACnBC,EAAYvF,EAAMuF,UAClBC,EAAQxF,EAAMwF,MACdC,EAAmBzF,EAAMyF,iBACzBC,EAAkB1F,EAAM0F,gBACxBC,EAAmB3F,EAAM2F,iBACzBC,EAAW5F,EAAM4F,SACjBC,EAAO7F,EAAM6F,KACbC,EAAgB9F,EAAM8F,cACtBtC,EAAyBxD,EAAMwD,uBAC/BuC,EAA0B/F,EAAM+F,wBAChCC,EAAqBhG,EAAMgG,mBAC3BC,EAAWjG,EAAMiG,SAEjBxH,EAAoBb,EAAQ,GAAGc,WAE/BwH,EAAU,2CAA2CC,MAAM,KAC7DC,EAAa,gEAOXjE,EACgB,mBAAX5F,QACHA,OACkB,mBAAXC,GAAyBA,EAAyB,mBAATC,MAAuBA,QACzE8E,EAAYY,EAAQkE,SACpB5E,EAAaU,EAAQmE,SAmFzB3J,GAAMmD,WAKJyG,QAAS,SAETC,OAAO,EAEPhC,SAAUA,EASViC,OAAQ,SAASC,EAAKC,GACpB,GAAIlK,GAAOC,IAEX,IAAID,EAAKoF,EAEP,MADAnF,MAAKkK,EAAU,QAAS,4CACjBnK,CAET,KAAKiK,EAAK,MAAOjK,EAEjB,IAAIoK,GAAgBpK,EAAKwF,CAGrB0E,IACF1B,EAAK0B,EAAS,SAASG,EAAKC,GAEd,SAARD,GAA0B,UAARA,GAA2B,SAARA,EACvCrK,EAAKuF,EAAe8E,GAAOC,EAE3BF,EAAcC,GAAOC,IAK3BtK,EAAKuK,OAAON,GAIZG,EAAcvE,aAAapE,KAAK,qBAChC2I,EAAcvE,aAAapE,KAAK,iDAGhC2I,EAAcvE,aAAegD,EAAWuB,EAAcvE,cACtDuE,EAActE,aAAasE,EAActE,WAAW7E,QAChD4H,EAAWuB,EAActE,YAE7BsE,EAAcrE,gBAAgBqE,EAAcrE,cAAc9E,QACtD4H,EAAWuB,EAAcrE,eAE7BqE,EAAcpE,aAAe6C,EAAWuB,EAAcpE,cACtDoE,EAAcI,eAAiBC,KAAKC,IAClC,EACAD,KAAKE,IAAIP,EAAcI,gBAAkB,IAAK,KAGhD,IAAII,IACFC,KAAK,EACLxJ,SAAS,EACTyJ,KAAK,EACLnD,UAAU,EACVoD,QAAQ,GAGNxE,EAAkB6D,EAAc7D,eACM,wBAAnCyE,SAAShK,KAAKuF,GACnBA,EAAkBkC,EAAYmC,EAAwBrE,GAC7CA,KAAoB,IAC7BA,EAAkBqE,GAEpBR,EAAc7D,gBAAkBA,CAEhC,IAAI0E,IACFC,UAAU,GAGR1E,EAAa4D,EAAc5D,UAW/B,OAVqC,uBAA9BwE,SAAShK,KAAKwF,GACnBA,EAAaiC,EAAYwC,EAAoBzE,GACpCA,KAAe,IACxBA,EAAayE,GAEfb,EAAc5D,WAAaA,EAE3BuB,EAAS7B,sBAAwBkE,EAAclE,oBAGxClG,GAWTmL,QAAS,WACP,GAAInL,GAAOC,IAyBX,OAxBID,GAAKoL,YAAcpL,EAAKiH,IAC1Bc,EAASsD,OAAOC,UAAU,WACxBtL,EAAKuL,EAAwBtH,MAAMjE,EAAM6D,aAGvC7D,EAAKwF,EAAeW,4BACtBnG,EAAKwL,IAGPxL,EAAKyL,IAEDzL,EAAKwF,EAAegB,YAAcxG,EAAKwF,EAAegB,WAAW0E,UACnElL,EAAK0L,IAGH1L,EAAKwF,EAAee,iBAAiBvG,EAAK2L,IAG9C3L,EAAK4L,IAEL5L,EAAKiH,GAAoB,GAG3BpG,MAAMyF,gBAAkBtG,EAAKwF,EAAec,gBACrCrG,MAQTsK,OAAQ,SAASN,GACf,GAAIjK,GAAOC,KACT4L,EAAM7L,EAAK8L,EAAU7B,GACrB8B,EAAYF,EAAIG,KAAKC,YAAY,KACjCD,EAAOH,EAAIG,KAAKE,OAAO,EAAGH,EAE5B/L,GAAKmM,EAAOlC,EACZjK,EAAKqF,EAAawG,EAAIO,KACtBpM,EAAKqM,EAAgBR,EAAIS,MAAQT,EAAIS,KAAKJ,OAAO,GACjDlM,EAAKsF,EAAiBuG,EAAIG,KAAKE,OAAOH,EAAY,GAElD/L,EAAKoF,EAAgBpF,EAAKuM,EAAiBV,GAE3C7L,EAAKwM,EACHxM,EAAKoF,EAAgB,IAAM4G,EAAO,OAAShM,EAAKsF,EAAiB,UAInErF,KAAK6H,KAWP9E,QAAS,SAASkH,EAASuC,EAAM9I,GAO/B,MANIa,GAAW0F,KACbvG,EAAO8I,MACPA,EAAOvC,EACPA,EAAUwC,QAGLzM,KAAK0M,KAAKzC,EAASuC,GAAMxI,MAAMhE,KAAM0D,IAW9CgJ,KAAM,SAASzC,EAASuC,EAAMG,GAqC5B,QAASC,KACP,GAAIlJ,MACF/C,EAAIiD,UAAU5C,OACd6L,GAAQ5C,GAAYA,GAAWA,EAAQ4C,QAAS,CAQlD,KANIF,GAAWpI,EAAWoI,IACxBA,EAAQ3I,MAAMhE,KAAM4D,WAKfjD,KAAK+C,EAAK/C,GAAKkM,EAAO9M,EAAK2M,KAAKzC,EAASrG,UAAUjD,IAAMiD,UAAUjD,EAE1E,KAKE,MAAO6L,GAAKxI,MAAMhE,KAAM0D,GACxB,MAAOxD,GAGP,KAFAH,GAAK+M,IACL/M,EAAK2C,iBAAiBxC,EAAG+J,GACnB/J,GA1DV,GAAIH,GAAOC,IAGX,IAAI4E,EAAY4H,KAAUjI,EAAW0F,GACnC,MAAOA,EAWT,IAPI1F,EAAW0F,KACbuC,EAAOvC,EACPA,EAAUwC,SAKPlI,EAAWiI,GACd,MAAOA,EAIT,KACE,GAAIA,EAAKO,EACP,MAAOP,EAIT,IAAIA,EAAKQ,EACP,MAAOR,GAAKQ,EAEd,MAAO9M,GAIP,MAAOsM,GA8BT,IAAK,GAAIS,KAAYT,GACf7D,EAAO6D,EAAMS,KACfL,EAAQK,GAAYT,EAAKS,GAW7B,OARAL,GAAQxJ,UAAYoJ,EAAKpJ,UAEzBoJ,EAAKQ,EAAoBJ,EAGzBA,EAAQG,GAAY,EACpBH,EAAQM,EAAWV,EAEZI,GAQTO,UAAW,WAWT,MAVArF,GAASsD,OAAO+B,YAEhBnN,KAAKoN,IACLpN,KAAKqN,IACLrN,KAAKsN,IACLtN,KAAKuN,IAEL3M,MAAMyF,gBAAkBrG,KAAKiH,EAC7BjH,KAAKgH,GAAoB,EAElBhH,MAWTwN,EAA0B,SAASC,GACjCzN,KAAKkK,EAAU,QAAS,4CAA6CuD,GACrEzN,KAAK0C,iBAAiB+K,EAAM5K,QAC1BC,OACE4K,2BAA2B,MAUjCC,EAAgC,WAI9B,MAHA3N,MAAK4N,EAA2B5N,KAAK4N,EAAyBC,KAAK7N,MACnEyF,EAAQqI,kBACNrI,EAAQqI,iBAAiB,qBAAsB9N,KAAK4N,GAC/C5N,MAQT+N,EAAgC,WAG9B,MAFAtI,GAAQuI,qBACNvI,EAAQuI,oBAAoB,qBAAsBhO,KAAK4N,GAClD5N,MAUT0C,iBAAkB,SAASuL,EAAIhE,GAG7B,GAFAA,EAAUzB,GAAa0F,eAAgB,GAAIjE,EAAUA,MAEjD9B,EAAa8F,IAAOA,EAAGxL,MAEzBwL,EAAKA,EAAGxL,UACH,IAAIuF,EAAQiG,GAEjBA,EAAKA,MACA,CAAA,IAAI/F,EAAc+F,GAYvB,MAAOjO,MAAK4B,eACVqM,EACAzF,EAAYyB,GACVkE,YAAY,EACZD,eAAgBjE,EAAQiE,eAAiB,IAZ7CjE,GAAUjK,KAAKoO,EAA2CnE,EAASgE,GACnEA,EAAK,GAAIrN,OAAMqJ,EAAQ/G,SAiBzBlD,KAAKgF,EAAyBiJ,CAO9B,KACE,GAAII,GAAQvG,EAASwG,kBAAkBL,EACvCjO,MAAKuO,EAAiBF,EAAOpE,GAC7B,MAAOuE,GACP,GAAIP,IAAOO,EACT,KAAMA,GAIV,MAAOxO,OAGTyO,EAA4C,SAASC,EAAgBT,GACnE,GAAIU,GAASC,OAAOC,KAAKZ,GAAIa,OACzB7E,EAAUzB,EAAYkG,GACxBxL,QACE,2CAA6CmG,EAAwBsF,GACvEI,aAAchH,EAAI4G,IAClB7L,MAAO4L,EAAe5L,WAIxB,OAFAmH,GAAQnH,MAAMkM,EAAiB1F,EAAmB2E,GAE3ChE,GAUTrI,eAAgB,SAASF,EAAKuI,GAI5B,IACIjK,KAAKuF,EAAeK,aAAaqJ,OACnCjP,KAAKuF,EAAeK,aAAaqJ,KAAKvN,GAFxC,CAOAuI,EAAUA,MACVvI,GAAY,EAEZ,IAOIuM,GAPAtM,EAAO6G,GAEPtF,QAASxB,GAEXuI,EAQF,KACE,KAAM,IAAIrJ,OAAMc,GAChB,MAAO8M,GACPP,EAAKO,EAIPP,EAAG9K,KAAO,IACV,IAAIkL,GAAQvG,EAASwG,kBAAkBL,GAGnCiB,EAAc7G,EAAQgG,EAAMA,QAAUA,EAAMA,MAAM,EAKlDa,IAAoC,2BAArBA,EAAY1C,OAC7B0C,EAAcb,EAAMA,MAAM,GAG5B,IAAIc,GAAWD,GAAeA,EAAYE,KAAQ,EAElD,MACIpP,KAAKuF,EAAeM,WAAWoJ,OACjCjP,KAAKuF,EAAeM,WAAWoJ,KAAKE,OAMlCnP,KAAKuF,EAAeO,cAAcmJ,MACnCjP,KAAKuF,EAAeO,cAAcmJ,KAAKE,IAF1C,CAOA,GAAInP,KAAKuF,EAAe4I,YAAelE,GAAWA,EAAQkE,WAAa,CAErExM,EAAKoN,YAAkC,MAApBpN,EAAKoN,YAAsBrN,EAAMC,EAAKoN,YAEzD9E,EAAUzB,GAEN0F,eAAgB,GAElBjE,GAMFA,EAAQiE,gBAAkB,CAE1B,IAAImB,GAASrP,KAAKsP,EAAejB,EAAOpE,EACxCtI,GAAKwM,YAEHkB,OAAQA,EAAOE,WAcnB,MATI5N,GAAKoN,cACPpN,EAAKoN,YAAc1G,EAAQ1G,EAAKoN,aAC5BpN,EAAKoN,aACJpN,EAAKoN,cAIZ/O,KAAKwP,EAAM7N,GAEJ3B,QAGTyP,kBAAmB,SAASC,GAC1B,GAAIC,GAAQnH,GAERoH,UAAWzL,IAAQ,KAErBuL,EAGF,IAAInL,EAAWvE,KAAKuF,EAAesK,oBAAqB,CACtD,GAAIC,GAAS9P,KAAKuF,EAAesK,mBAAmBF,EAEpD,IAAI1H,EAAS6H,KAAYxH,EAAcwH,GACrCH,EAAQG,MACH,IAAIA,KAAW,EACpB,MAAO9P,MAQX,MAJAA,MAAKuH,EAAa/F,KAAKmO,GACnB3P,KAAKuH,EAAavG,OAAShB,KAAKuF,EAAegF,gBACjDvK,KAAKuH,EAAawI,QAEb/P,MAGTiC,UAAW,SAAS+N,GAClB,GAAIC,MAAgBtM,MAAM5C,KAAK6C,UAAW,EAO1C,OALA5D,MAAKoH,EAAS5F,MAAMwO,EAAQC,IACxBjQ,KAAKgH,GACPhH,KAAK2L,IAGA3L,MASTkQ,eAAgB,SAAS/D,GAIvB,MAFAnM,MAAKsF,EAAe6G,KAAOA,EAEpBnM,MASTmQ,gBAAiB,SAASrN,GAGxB,MAFA9C,MAAKoQ,EAAc,QAAStN,GAErB9C,MASTqQ,eAAgB,SAASC,GAGvB,MAFAtQ,MAAKoQ,EAAc,OAAQE,GAEpBtQ,MAQTuQ,aAAc,WAGZ,MAFAvQ,MAAKsF,KAEEtF,MAQTwQ,WAAY,WAEV,MAAO/L,MAAKgM,MAAM/L,EAAU1E,KAAKsF,KASnCoL,eAAgB,SAASC,GAGvB,MAFA3Q,MAAKuF,EAAeoL,YAAcA,EAE3B3Q,MAST4Q,WAAY,SAASpL,GAGnB,MAFAxF,MAAKuF,EAAeC,QAAUA,EAEvBxF,MAUT6Q,gBAAiB,SAASpP,GACxB,GAAI6C,GAAWtE,KAAKuF,EAAeuL,YAEnC,OADA9Q,MAAKuF,EAAeuL,aAAezM,EAAqBC,EAAU7C,GAC3DzB,MAUT+Q,sBAAuB,SAAStP,GAC9B,GAAI6C,GAAWtE,KAAKuF,EAAesK,kBAEnC,OADA7P,MAAKuF,EAAesK,mBAAqBxL,EAAqBC,EAAU7C,GACjEzB,MAUTgR,sBAAuB,SAASvP,GAC9B,GAAI6C,GAAWtE,KAAKuF,EAAe0L,kBAEnC,OADAjR,MAAKuF,EAAe0L,mBAAqB5M,EAAqBC,EAAU7C,GACjEzB,MAYTkR,aAAc,SAASC,GAGrB,MAFAnR,MAAKuF,EAAe4L,UAAYA,EAEzBnR,MAQToR,cAAe,WACb,MAAOpR,MAAKgF,GAQdqM,YAAa,WACX,MAAOrR,MAAKkF,GAQdiG,QAAS,WACP,QAAKnL,KAAKwE,MACLxE,KAAKmF,IACHnF,KAAKsR,0BACRtR,KAAKsR,yBAA0B,EAC/BtR,KAAKkK,EAAU,QAAS,2CAEnB,KAKXqH,UAAW,WAIT,GAAIC,GAAc/L,EAAQ+L,WACtBA,IACFxR,KAAK+J,OAAOyH,EAAYxH,IAAKwH,EAAYzH,QAAQmB,WAIrDuG,iBAAkB,SAASxH,GACzB,GACGpF,EADH,CAKAoF,EAAUA,KAEV,IAAIoH,GAAcpH,EAAQyH,SAAW1R,KAAKqR,aAC1C,KAAKA,EACH,KAAM,IAAIpO,GAAiB,kBAG7B,IAAI+G,GAAMC,EAAQD,KAAOhK,KAAKkM,CAC9B,KAAKlC,EACH,KAAM,IAAI/G,GAAiB,cAG7B,IAAI0O,GAASC,mBACTC,EAAK,EACTA,IAAM,YAAcF,EAAON,GAC3BQ,GAAM,QAAUF,EAAO3H,EAEvB,IAAImC,GAAOlC,EAAQkC,MAAQnM,KAAKsF,EAAe6G,IAC3CA,KACEA,EAAKhJ,OAAM0O,GAAM,SAAWF,EAAOxF,EAAKhJ,OACxCgJ,EAAK2F,QAAOD,GAAM,UAAYF,EAAOxF,EAAK2F,QAGhD,IAAIC,GAAe/R,KAAKsM,EAAiBtM,KAAK6L,EAAU7B,IAEpDgI,EAASnN,EAAUoN,cAAc,SACrCD,GAAOE,OAAQ,EACfF,EAAOG,IAAMJ,EAAe,yBAA2BF,GACtDhN,EAAUuN,MAAQvN,EAAUwN,MAAMC,YAAYN,KAIjDO,EAAoB,WAClB,GAAIxS,GAAOC,IACXA,MAAK+G,GAAkB,EACvByL,WAAW,WAETzS,EAAKgH,GAAkB,KAI3B0L,EAAe,SAASC,EAAWzI,GAEjC,GAAI0I,GAAKvI,CAET,IAAKpK,KAAK2E,EAAV,CAEAsF,EAAUA,MAEVyI,EAAY,QAAUA,EAAUzG,OAAO,EAAG,GAAG2G,cAAgBF,EAAUzG,OAAO,GAE1EpH,EAAUgO,aACZF,EAAM9N,EAAUgO,YAAY,cAC5BF,EAAIG,UAAUJ,GAAW,GAAM,KAE/BC,EAAM9N,EAAUkO,oBAChBJ,EAAID,UAAYA,EAGlB,KAAKtI,IAAOH,GACNtB,EAAOsB,EAASG,KAClBuI,EAAIvI,GAAOH,EAAQG,GAGvB,IAAIvF,EAAUgO,YAEZhO,EAAUmO,cAAcL,OAIxB,KACE9N,EAAUoO,UAAU,KAAON,EAAID,UAAUQ,cAAeP,GACxD,MAAOzS,OAYbiT,EAAyB,SAASC,GAChC,GAAIrT,GAAOC,IACX,OAAO,UAAS2S,GASd,GALA5S,EAAKsT,GAAmB,KAKpBtT,EAAKyH,IAAuBmL,EAAhC,CAEA5S,EAAKyH,EAAqBmL,CAM1B,IAAIW,EACJ,KACEA,EAASvK,EAAiB4J,EAAIW,QAC9B,MAAOpT,GACPoT,EAAS,YAGXvT,EAAK0P,mBACH8D,SAAU,MAAQH,EAClBlQ,QAASoQ,OAUfE,GAAuB,WACrB,GAAIzT,GAAOC,KACTyT,EAAmB,GAKrB,OAAO,UAASd,GACd,GAAIW,EACJ,KACEA,EAASX,EAAIW,OACb,MAAOpT,GAGP,OAEF,GAAIwT,GAAUJ,GAAUA,EAAOI,OAK/B,IACGA,IACY,UAAZA,GAAmC,aAAZA,GAA2BJ,EAAOK,mBAF5D,CAQA,GAAIC,GAAU7T,EAAKsT,EACdO,IACH7T,EAAK8T,EAAwB,SAASlB,GAExCmB,aAAaF,GACb7T,EAAKsT,GAAmBb,WAAW,WACjCzS,EAAKsT,GAAmB,MACvBI,MAUPM,GAAmB,SAASC,EAAMC,GAChC,GAAIC,GAAYhL,EAASlJ,KAAKyH,EAAUG,MACpCuM,EAAWjL,EAAS+K,GACpBG,EAAalL,EAAS8K,EAK1BhU,MAAK2H,EAAYsM,EAIbC,EAAUG,WAAaF,EAASE,UAAYH,EAAUI,OAASH,EAASG,OAC1EL,EAAKE,EAASI,UACZL,EAAUG,WAAaD,EAAWC,UAAYH,EAAUI,OAASF,EAAWE,OAC9EN,EAAOI,EAAWG,UAEpBvU,KAAKyP,mBACH8D,SAAU,aACV5R,MACEsS,GAAIA,EACJD,KAAMA,MAKZQ,EAAwB,WACtB,GAAIzU,GAAOC,IACXD,GAAK0U,GAA4B1Q,SAASX,UAAU2H,SAEpDhH,SAASX,UAAU2H,SAAW,WAC5B,MAAoB,kBAAT/K,OAAuBA,KAAK+M,EAC9BhN,EAAK0U,GAA0BzQ,MAAMhE,KAAKkN,EAAUtJ,WAEtD7D,EAAK0U,GAA0BzQ,MAAMhE,KAAM4D,aAItD8Q,EAA0B,WACpB1U,KAAKyU,KAEP1Q,SAASX,UAAU2H,SAAW/K,KAAKyU,KAQvCE,EAAqB,WAKnB,QAASC,GAAWC,GAClB,MAAO,UAASC,EAAI3U,GAKlB,IAAK,GADDuD,GAAO,GAAIqR,OAAMnR,UAAU5C,QACtBL,EAAI,EAAGA,EAAI+C,EAAK1C,SAAUL,EACjC+C,EAAK/C,GAAKiD,UAAUjD,EAEtB,IAAIqU,GAAmBtR,EAAK,EAQ5B,OAPIa,GAAWyQ,KACbtR,EAAK,GAAK3D,EAAK2M,KAAKsI,IAMlBH,EAAK7Q,MACA6Q,EAAK7Q,MAAMhE,KAAM0D,GAEjBmR,EAAKnR,EAAK,GAAIA,EAAK,KAOhC,QAASuR,GAAgBnV,GACvB,GAAIoV,GAAQzP,EAAQ3F,IAAW2F,EAAQ3F,GAAQsD,SAC3C8R,IAASA,EAAMC,gBAAkBD,EAAMC,eAAe,sBACxDhM,EACE+L,EACA,mBACA,SAASL,GACP,MAAO,UAASzB,EAAS0B,EAAIM,EAASC,GAEpC,IACMP,GAAMA,EAAGQ,cACXR,EAAGQ,YAAcvV,EAAK2M,KAAKoI,EAAGQ,cAEhC,MAAOC,IAMT,GAAIC,GAAQC,EAAcC,CA6B1B,OA1BEpP,IACAA,EAAgBuE,MACJ,gBAAX/K,GAAuC,SAAXA,KAI7B2V,EAAe1V,EAAK8T,EAAwB,SAC5C6B,EAAkB3V,EAAK4V,KACvBH,EAAS,SAAS7C,GAIhB,GAAKA,EAAL,CAEA,GAAID,EACJ,KACEA,EAAYC,EAAIiD,KAChB,MAAO1V,GAGP,OAEF,MAAkB,UAAdwS,EAA8B+C,EAAa9C,GACxB,aAAdD,EAAiCgD,EAAgB/C,GAArD,UAGFkC,EAAK9T,KACVf,KACAoT,EACArT,EAAK2M,KAAKoI,EAAIrI,OAAW+I,GACzBJ,EACAC,KAINQ,GAEF1M,EACE+L,EACA,sBACA,SAASL,GACP,MAAO,UAASlC,EAAKmC,EAAIM,EAASC,GAChC,IACEP,EAAKA,IAAOA,EAAG9H,EAAoB8H,EAAG9H,EAAoB8H,GAC1D,MAAO5U,IAGT,MAAO2U,GAAK9T,KAAKf,KAAM2S,EAAKmC,EAAIM,EAASC,KAG7CQ,IAvGN,GAAI9V,GAAOC,KAEP6V,EAAkB9V,EAAKuH,EA2BvBhB,EAAkBtG,KAAKuF,EAAee,eA+E1C6C,GAAK1D,EAAS,aAAcmP,EAAYiB,GACxC1M,EAAK1D,EAAS,cAAemP,EAAYiB,GACrCpQ,EAAQqQ,uBACV3M,EACE1D,EACA,wBACA,SAASoP,GACP,MAAO,UAASkB,GACd,MAAOlB,GAAK9U,EAAK2M,KAAKqJ,MAG1BF,EAqCJ,KAAK,GA/BDG,IACF,cACA,SACA,OACA,mBACA,iBACA,oBACA,kBACA,cACA,aACA,qBACA,cACA,aACA,iBACA,eACA,kBACA,cACA,cACA,eACA,qBACA,SACA,YACA,eACA,gBACA,YACA,kBACA,SACA,iBACA,4BACA,wBAEOrV,EAAI,EAAGA,EAAIqV,EAAahV,OAAQL,IACvCsU,EAAgBe,EAAarV,KAajCsV,EAAwB,WAMtB,QAASC,GAASC,EAAMvL,GAClBuL,IAAQvL,IAAOrG,EAAWqG,EAAIuL,KAChChN,EAAKyB,EAAKuL,EAAM,SAAStB,GACvB,MAAO9U,GAAK2M,KAAKmI,KARvB,GAAI9U,GAAOC,KACPsG,EAAkBtG,KAAKuF,EAAee,gBAEtCuP,EAAkB9V,EAAKuH,CAU3B,IAAIhB,EAAgBsE,KAAO,kBAAoBnF,GAAS,CACtD,GAAI2Q,GAAW3Q,EAAQ4Q,gBAAkB5Q,EAAQ4Q,eAAejT,SAChE+F,GACEiN,EACA,OACA,SAASE,GACP,MAAO,UAAS3P,EAAQyI,GAYtB,MARIhH,GAASgH,IAAQA,EAAImH,QAAQxW,EAAKqF,UACpCpF,KAAKwW,IACH7P,OAAQA,EACRyI,IAAKA,EACLqH,YAAa,OAIVH,EAAStS,MAAMhE,KAAM4D,aAGhCiS,GAGF1M,EACEiN,EACA,OACA,SAASM,GACP,MAAO,YAIL,QAASC,KACP,GAAI/L,EAAI4L,IAAkC,IAAnB5L,EAAIgM,WAAkB,CAC3C,IAGEhM,EAAI4L,GAAYC,YAAc7L,EAAIiM,OAClC,MAAO3W,IAITH,EAAK0P,mBACHmG,KAAM,OACNrC,SAAU,MACV5R,KAAMiJ,EAAI4L,MAMhB,IAAK,GArBD5L,GAAM5K,KAoBN8W,GAAS,SAAU,UAAW,cACzBC,EAAI,EAAGA,EAAID,EAAM9V,OAAQ+V,IAChCb,EAASY,EAAMC,GAAInM,EAiBrB,OAdI,sBAAwBA,IAAOrG,EAAWqG,EAAIoM,oBAChD7N,EACEyB,EACA,qBACA,SAASiK,GACP,MAAO9U,GAAK2M,KAAKmI,EAAMpI,OAAWkK,KAMtC/L,EAAIoM,mBAAqBL,EAGpBD,EAAS1S,MAAMhE,KAAM4D,aAGhCiS,GAIAvP,EAAgBsE,KAAOxB,KACzBD,EACE1D,EACA,QACA,SAASwR,GACP,MAAO,YAKL,IAAK,GADDvT,GAAO,GAAIqR,OAAMnR,UAAU5C,QACtBL,EAAI,EAAGA,EAAI+C,EAAK1C,SAAUL,EACjC+C,EAAK/C,GAAKiD,UAAUjD,EAGtB,IAEIyO,GAFA8H,EAAaxT,EAAK,GAClBiD,EAAS,KAeb,IAZ0B,gBAAfuQ,GACT9H,EAAM8H,EACG,WAAazR,IAAWyR,YAAsBzR,GAAQ0R,SAC/D/H,EAAM8H,EAAW9H,IACb8H,EAAWvQ,SACbA,EAASuQ,EAAWvQ,SAGtByI,EAAM,GAAK8H,EAIT9H,EAAImH,QAAQxW,EAAKqF,QACnB,MAAO6R,GAAUjT,MAAMhE,KAAM0D,EAG3BA,GAAK,IAAMA,EAAK,GAAGiD,SACrBA,EAASjD,EAAK,GAAGiD,OAGnB,IAAIyQ,IACFzQ,OAAQA,EACRyI,IAAKA,EACLqH,YAAa,KAGf,OAAOQ,GACJjT,MAAMhE,KAAM0D,GACZ2T,KAAK,SAASC,GASb,MARAF,GAAUX,YAAca,EAAST,OAEjC9W,EAAK0P,mBACHmG,KAAM,OACNrC,SAAU,QACV5R,KAAMyV,IAGDE,IAER,SAAS,SAAS/B,GASjB,KAPAxV,GAAK0P,mBACHmG,KAAM,OACNrC,SAAU,QACV5R,KAAMyV,EACNvV,MAAO,UAGH0T,MAIdM,GAMAvP,EAAgBuE,KAAO7K,KAAK2E,IAC1BE,EAAUiJ,kBACZjJ,EAAUiJ,iBAAiB,QAAS/N,EAAK8T,EAAwB,UAAU,GAC3EhP,EAAUiJ,iBAAiB,WAAY/N,EAAK4V,MAAyB,IAC5D9Q,EAAU0S,cAEnB1S,EAAU0S,YAAY,UAAWxX,EAAK8T,EAAwB,UAC9DhP,EAAU0S,YAAY,aAAcxX,EAAK4V,OAQ7C,IAAI6B,GAAS/R,EAAQ+R,OACjBC,EAAsBD,GAAUA,EAAOE,KAAOF,EAAOE,IAAIC,QACzDC,GACDH,GACDhS,EAAQoS,SACRA,QAAQC,WACRD,QAAQE,YACV,IAAIzR,EAAgBoB,UAAYkQ,EAAwB,CAEtD,GAAII,GAAgBvS,EAAQwS,UAC5BxS,GAAQwS,WAAa,WACnB,GAAIC,GAAcnY,EAAK0H,EAAUG,IAGjC,IAFA7H,EAAKoY,GAAkBpY,EAAK4H,EAAWuQ,GAEnCF,EACF,MAAOA,GAAchU,MAAMhE,KAAM4D,WAIrC,IAAIwU,GAA6B,SAASC,GAGxC,MAAO,YACL,GAAIjJ,GAAMxL,UAAU5C,OAAS,EAAI4C,UAAU,GAAK6I,MAQhD,OALI2C,IAEFrP,EAAKoY,GAAkBpY,EAAK4H,EAAWyH,EAAM,IAGxCiJ,EAAiBrU,MAAMhE,KAAM4D,YAIxCuF,GAAK0O,QAAS,YAAaO,EAA4BvC,GACvD1M,EAAK0O,QAAS,eAAgBO,EAA4BvC,GAG5D,GAAIvP,EAAgBlF,SAAW,WAAaqE,IAAWrE,QAAQkX,IAAK,CAElE,GAAIC,GAAwB,SAAS7W,EAAKC,GACxC5B,EAAK0P,mBACHvM,QAASxB,EACTG,MAAOF,EAAKE,MACZ0R,SAAU,YAIdhL,IAAM,QAAS,OAAQ,OAAQ,QAAS,OAAQ,SAAS4K,EAAGtR,GAC1DE,EAAkBX,QAASS,EAAO0W,OAKxCC,EAAkB,WAGhB,IADA,GAAIC,GACGzY,KAAKsH,EAAiBtG,QAAQ,CACnCyX,EAAUzY,KAAKsH,EAAiByI,OAEhC,IAAIL,GAAM+I,EAAQ,GAChBtV,EAAOsV,EAAQ,GACf5D,EAAO4D,EAAQ,EAEjB/I,GAAIvM,GAAQ0R,IAIhB6D,EAAiB,WAEf,IAAK,GAAI/R,KAAU3G,MAAKmH,EACtBnH,KAAKkH,EAAiBP,GAAU3G,KAAKmH,EAAwBR,IAIjEgS,EAAe,WACb,GAAI5Y,GAAOC,IAGXuI,GAAKvI,KAAKoH,EAAU,SAAS+L,EAAGnD,GAC9B,GAAI4I,GAAY5I,EAAO,GACnBtM,EAAOsM,EAAO,EAClB4I,GAAU5U,MAAMjE,GAAOA,GAAM8Y,OAAOnV,OAIxCoV,EAAW,SAASC,GAClB,GAAIC,GAAItP,EAAWuP,KAAKF,GACtB/O,KACArJ,EAAI,CAEN,KACE,KAAOA,KAAKqJ,EAAIR,EAAQ7I,IAAMqY,EAAErY,IAAM,GACtC,MAAOT,GACP,KAAM,IAAI+C,GAAiB,gBAAkB8V,GAG/C,GAAI/O,EAAIqC,OAASrM,KAAKuF,EAAe2T,eACnC,KAAM,IAAIjW,GACR,iFAIJ,OAAO+G,IAGTmP,EAAkB,SAASvN,GAEzB,GAAImG,GAAe,KAAOnG,EAAI0I,MAAQ1I,EAAIwN,KAAO,IAAMxN,EAAIwN,KAAO,GAKlE,OAHIxN,GAAIyI,WACNtC,EAAenG,EAAIyI,SAAW,IAAMtC,GAE/BA,GAGTsH,EAAyB,WAElBrZ,KAAK+G,GACR/G,KAAKuO,EAAiBvK,MAAMhE,KAAM4D,YAItC0V,EAAkB,SAASC,EAAWtP,GACpC,GAAIoF,GAASrP,KAAKsP,EAAeiK,EAAWtP,EAE5CjK,MAAKwZ,EAAc,UACjBD,UAAWA,EACXtP,QAASA,IAGXjK,KAAKyZ,GACHF,EAAUpW,KACVoW,EAAUrW,QACVqW,EAAUnK,IACVmK,EAAUG,OACVrK,EACApF,IAIJ0P,EAAgB,SAASJ,EAAWtP,GAClC,GAAIlK,GAAOC,KACPqP,IACJ,IAAIkK,EAAUlL,OAASkL,EAAUlL,MAAMrN,SACrCuH,EAAKgR,EAAUlL,MAAO,SAAS1N,EAAG0N,GAChC,GAAIuL,GAAQ7Z,EAAK8Z,GAAgBxL,EAAOkL,EAAUnK,IAC9CwK,IACFvK,EAAO7N,KAAKoY,KAKZ3P,GAAWA,EAAQiE,gBACrB,IAAK,GAAI6I,GAAI,EAAGA,EAAI9M,EAAQiE,gBAAkB6I,EAAI1H,EAAOrO,OAAQ+V,IAC/D1H,EAAO0H,GAAG+C,QAAS,CAKzB,OADAzK,GAASA,EAAO1L,MAAM,EAAG3D,KAAKuF,EAAec,kBAI/C0T,GAAiB,SAASH,EAAOI,GAE/B,GAAIC,IACFC,SAAUN,EAAMxK,IAChBsK,OAAQE,EAAMO,KACdC,MAAOR,EAAMS,OACbC,WAAUV,EAAMpN,MAAQ,IAuB1B,OAfKoN,GAAMxK,MACT6K,EAAWC,SAAWF,GAGxBC,EAAWH,SAGN9Z,KAAKuF,EAAeQ,aAAakJ,OACjCjP,KAAKuF,EAAeQ,aAAakJ,KAAKgL,EAAWC,WAEpD,qBAAqBjL,KAAKgL,EAAW,cAErC,qBAAqBhL,KAAKgL,EAAWC,WAGhCD,GAGTM,GAAmB,SAAS3E,EAAM1S,EAASiM,EAASuK,EAAQrK,EAAQpF,GAClE,GAAIuQ,IAAmB5E,EAAOA,EAAO,KAAO,KAAO1S,GAAW,GAC9D,KACIlD,KAAKuF,EAAeK,aAAaqJ,OAClCjP,KAAKuF,EAAeK,aAAaqJ,KAAK/L,KACrClD,KAAKuF,EAAeK,aAAaqJ,KAAKuL,GAH1C,CAQA,GAAIrM,EAoBJ,IAlBIkB,GAAUA,EAAOrO,QACnBmO,EAAUE,EAAO,GAAG6K,UAAY/K,EAGhCE,EAAOE,UACPpB,GAAckB,OAAQA,IACbF,IACThB,GACEkB,SAEI6K,SAAU/K,EACVuK,OAAQA,EACRI,QAAQ,QAOZ9Z,KAAKuF,EAAeM,WAAWoJ,OACjCjP,KAAKuF,EAAeM,WAAWoJ,KAAKE,OAMlCnP,KAAKuF,EAAeO,cAAcmJ,MACnCjP,KAAKuF,EAAeO,cAAcmJ,KAAKE,IAF1C,CAOA,GAAIxN,GAAO6G,GAGPiS,WACEC,SAEI9E,KAAMA,EACNvL,MAAOnH,EACPiL,WAAYA,KAIlBwM,QAASxL,GAEXlF,EAIFjK,MAAKwP,EAAM7N,MAGbiZ,GAAa,SAASjZ,GAGpB,GAAI8I,GAAMzK,KAAKuF,EAAeY,gBAI9B,IAHIxE,EAAKuB,UACPvB,EAAKuB,QAAUuF,EAAS9G,EAAKuB,QAASuH,IAEpC9I,EAAK8Y,UAAW,CAClB,GAAIA,GAAY9Y,EAAK8Y,UAAUC,OAAO,EACtCD,GAAUpQ,MAAQ5B,EAASgS,EAAUpQ,MAAOI,GAG9C,GAAIoQ,GAAUlZ,EAAKkZ,OAanB,OAZIA,KACEA,EAAQzL,MACVyL,EAAQzL,IAAM3G,EAASoS,EAAQzL,IAAKpP,KAAKuF,EAAea,eAEtDyU,EAAQC,UACVD,EAAQC,QAAUrS,EAASoS,EAAQC,QAAS9a,KAAKuF,EAAea,gBAIhEzE,EAAKoZ,aAAepZ,EAAKoZ,YAAYL,QACvC1a,KAAKgb,GAAiBrZ,EAAKoZ,aAEtBpZ,GAMTsZ,GAAkB,SAASF,GAQzB,IAAK,GAJHG,GACAvL,EACAhO,EAHEwZ,GAAY,KAAM,OAAQ,OAKrBxa,EAAI,EAAGA,EAAIoa,EAAYL,OAAO1Z,SAAUL,EAE/C,GADAgP,EAAQoL,EAAYL,OAAO/Z,GAExBgP,EAAMwF,eAAe,SACrBlN,EAAS0H,EAAMhO,QAChB+G,EAAaiH,EAAMhO,MAHrB,CAOAA,EAAO6G,KAAgBmH,EAAMhO,KAC7B,KAAK,GAAIoV,GAAI,EAAGA,EAAIoE,EAASna,SAAU+V,EACrCmE,EAAUC,EAASpE,GACfpV,EAAKwT,eAAe+F,IAAYvZ,EAAKuZ,KACvCvZ,EAAKuZ,GAAWzS,EAAS9G,EAAKuZ,GAAUlb,KAAKuF,EAAea,cAGhE2U,GAAYL,OAAO/Z,GAAGgB,KAAOA,IAIjCyZ,GAAc,WACZ,GAAKpb,KAAK8E,GAAkB9E,KAAK2E,EAAjC,CACA,GAAI0W,KAkBJ,OAhBIrb,MAAK8E,GAAiBC,EAAWuW,YACnCD,EAASrV,SACPuV,aAAc3R,UAAU0R,YAKxB7V,EAAQiC,UAAYjC,EAAQiC,SAASE,OACvCyT,EAASjM,IAAM3J,EAAQiC,SAASE,MAG9B5H,KAAK2E,GAAgBE,EAAU2W,WAC5BH,EAASrV,UAASqV,EAASrV,YAChCqV,EAASrV,QAAQ8U,QAAUjW,EAAU2W,UAGhCH,IAGTI,EAAe,WACbzb,KAAK0b,GAAmB,EACxB1b,KAAK2b,GAAgB,MAGvBC,GAAgB,WACd,MAAO5b,MAAK0b,IAAoBvX,IAAQnE,KAAK2b,GAAgB3b,KAAK0b,IAYpEG,GAAe,SAASC,GACtB,GAAIC,GAAO/b,KAAKiF,CAEhB,UACG8W,GACDD,EAAQ5Y,UAAY6Y,EAAK7Y,SACzB4Y,EAAQnB,UAAYoB,EAAKpB,WAKvBmB,EAAQ3N,YAAc4N,EAAK5N,WACtBlF,EAAiB6S,EAAQ3N,WAAY4N,EAAK5N,aACxC2N,EAAQrB,YAAasB,EAAKtB,WAE5BzR,EAAgB8S,EAAQrB,UAAWsB,EAAKtB,aAMnDuB,GAAkB,SAASnB,GAEzB,IAAI7a,KAAKic,KAAT,CAIA,GAAIpF,GAASgE,EAAQhE,MAKrB,IAAiB,MAAXA,GAA6B,MAAXA,GAA6B,MAAXA,EAA1C,CAEA,GAAIqF,EACJ,KAIIA,EADE9S,IACMyR,EAAQ7U,QAAQmW,IAAI,eAEpBtB,EAAQuB,kBAAkB,eAIpCF,EAA8B,IAAtBG,SAASH,EAAO,IACxB,MAAOhc,IAITF,KAAK0b,GAAmBQ,EAEpBA,EAEwB,EAAxBlc,KAAK0b,IAAwB,IAEjC1b,KAAK2b,GAAgBxX,OAGvBmY,EAAO,SAAS3a,GACd,GAAIwI,GAAgBnK,KAAKuF,EAErBgX,GACAC,QAASxc,KAAKqF,EACdvB,OAAQqG,EAAcrG,OACtB2Y,SAAU,cAEZpB,EAAWrb,KAAK0c,IAsDlB,IApDIrB,IACFkB,EAAS1B,QAAUQ,GAIjB1Z,EAAKuM,sBAAuBvM,GAAKuM,eAErCvM,EAAO6G,EAAY+T,EAAU5a,GAG7BA,EAAK2O,KAAO9H,EAAYA,KAAgBxI,KAAKsF,EAAegL,MAAO3O,EAAK2O,MACxE3O,EAAKmB,MAAQ0F,EAAYA,KAAgBxI,KAAKsF,EAAexC,OAAQnB,EAAKmB,OAG1EnB,EAAKmB,MAAM,oBAAsBqB,IAAQnE,KAAKqH,EAE1CrH,KAAKuH,GAAgBvH,KAAKuH,EAAavG,OAAS,IAGlDW,EAAKoZ,aACHL,UAAW/W,MAAM5C,KAAKf,KAAKuH,EAAc,KAIzCvH,KAAKsF,EAAe6G,OAEtBxK,EAAKwK,KAAOnM,KAAKsF,EAAe6G,MAI9BhC,EAAcwG,cAAahP,EAAKgP,YAAcxG,EAAcwG,aAG5DxG,EAAc3E,UAAS7D,EAAK6D,QAAU2E,EAAc3E,SAGpD2E,EAAcwS,aAAYhb,EAAKib,YAAczS,EAAcwS,YAE/Dhb,EAAO3B,KAAK6c,GAAclb,GAG1BiN,OAAOC,KAAKlN,GAAMmb,QAAQ,SAAS1S,IAChB,MAAbzI,EAAKyI,IAA8B,KAAdzI,EAAKyI,IAAe9B,EAAc3G,EAAKyI,YACvDzI,GAAKyI,KAIZ7F,EAAW4F,EAAc2G,gBAC3BnP,EAAOwI,EAAc2G,aAAanP,IAASA,GAIxCA,IAAQ2G,EAAc3G,MAMzB4C,EAAW4F,EAAc8G,qBACxB9G,EAAc8G,mBAAmBtP,IAOpC,MAAI3B,MAAKic,SACPjc,MAAKkK,EAAU,OAAQ,uCAAwCvI,QAIzB,gBAA7BwI,GAAc3D,WACnBgE,KAAKuS,SAAW5S,EAAc3D,YAChCxG,KAAKgd,GAAsBrb,GAG7B3B,KAAKgd,GAAsBrb,KAI/Bsb,GAAe,SAAStb,GACtB,MAAO4H,GAAS5H,EAAM3B,KAAKuF,EAAekB,eAG5CyW,GAAU,WACR,MAAOpU,MAGTqU,GAAuB,SAASxb,EAAMF,GACpC,GAAI1B,GAAOC,KACPmK,EAAgBnK,KAAKuF,CAEzB,IAAKvF,KAAKmL,UAAV,CAQA,GALAxJ,EAAO3B,KAAKod,GAAYzb,IAKnB3B,KAAKuF,EAAe8X,iBAAmBrd,KAAKsd,GAAc3b,GAE7D,WADA3B,MAAKkK,EAAU,OAAQ,+BAAgCvI,EAOzD3B,MAAKkF,EAAevD,EAAK4b,WAAa5b,EAAK4b,SAAWvd,KAAKwd,MAG3Dxd,KAAKiF,EAAYtD,EAEjB3B,KAAKkK,EAAU,QAAS,uBAAwBvI,EAEhD,IAAI8b,IACFC,eAAgB,IAChBC,cAAe,YAAc3d,KAAK6J,QAClC+T,WAAY5d,KAAKoF,EAGfpF,MAAKoM,IACPqR,EAAKI,cAAgB7d,KAAKoM,EAG5B,IAAIqO,GAAY9Y,EAAK8Y,WAAa9Y,EAAK8Y,UAAUC,OAAO,EAItD1a,MAAKuF,EAAee,iBACpBtG,KAAKuF,EAAee,gBAAgBwE,QAEpC9K,KAAKyP,mBACH8D,SAAU,SACVrQ,QAASuX,GACJA,EAAU7E,KAAO6E,EAAU7E,KAAO,KAAO,IAAM6E,EAAUpQ,MAC1D1I,EAAKuB,QACTqa,SAAU5b,EAAK4b,SACf1b,MAAOF,EAAKE,OAAS,SAIzB,IAAIuN,GAAMpP,KAAKuM,GACdpC,EAAcgH,WAAanR,KAAK8d,IAAc/c,KAAKf,MAClDoP,IAAKA,EACLqO,KAAMA,EACN9b,KAAMA,EACNsI,QAASE,EACT4T,UAAW,WACThe,EAAK8H,IAEL9H,EAAKyZ,EAAc,WACjB7X,KAAMA,EACNwQ,IAAK/C,IAEP3N,GAAYA,KAEduc,QAAS,SAAiBvb,GACxB1C,EAAKmK,EAAU,QAAS,mCAAoCzH,GAExDA,EAAMoY,SACR9a,EAAKke,GAAiBxb,EAAMoY,SAG9B9a,EAAKyZ,EAAc,WACjB7X,KAAMA,EACNwQ,IAAK/C,IAEP3M,EAAQA,GAAS,GAAI7B,OAAM,sDAC3Ba,GAAYA,EAASgB,QAK3Byb,GAAc,SAASC,GAErB,GAAI/O,GAAM+O,EAAK/O,IAAM,IAAMvG,EAAUsV,EAAKV,MAEtCW,EAAmB,KACnBC,IAUJ,IARIF,EAAKlU,QAAQjE,UACfoY,EAAmBpe,KAAKse,GAAcH,EAAKlU,QAAQjE,UAGjDmY,EAAKlU,QAAQsU,kBACfF,EAA2Bre,KAAKse,GAAcH,EAAKlU,QAAQsU,kBAGzDnV,IAAiB,CACnBiV,EAAyBhM,KAAO3N,EAAUyZ,EAAKxc,KAE/C,IAAI6c,GAAsBhW,KAAgBxI,KAAK0G,GAC3C+X,EAAejW,EAAYgW,EAAqBH,EAMpD,OAJID,KACFK,EAAazY,QAAUoY,GAGlB3Y,EACJiZ,MAAMtP,EAAKqP,GACXpH,KAAK,SAASC,GACb,GAAIA,EAASqH,GACXR,EAAKJ,WAAaI,EAAKJ,gBAClB,CACL,GAAItb,GAAQ,GAAI7B,OAAM,sBAAwB0W,EAAST,OAGvDpU,GAAMoY,QAAUvD,EAChB6G,EAAKH,SAAWG,EAAKH,QAAQvb,MAGhC,SAAS,WACR0b,EAAKH,SACHG,EAAKH,QAAQ,GAAIpd,OAAM,6CAI/B,GAAIia,GAAUpV,EAAQ4Q,gBAAkB,GAAI5Q,GAAQ4Q,cACpD,IAAKwE,EAAL,CAGA,GAAI+D,GAAU,mBAAqB/D,IAAqC,mBAAnBgE,eAEhDD,KAED,mBAAqB/D,GACvBA,EAAQ7D,mBAAqB,WAC3B,GAA2B,IAAvB6D,EAAQjE,WAEL,GAAuB,MAAnBiE,EAAQhE,OACjBsH,EAAKJ,WAAaI,EAAKJ,gBAClB,IAAII,EAAKH,QAAS,CACvB,GAAIzI,GAAM,GAAI3U,OAAM,sBAAwBia,EAAQhE,OACpDtB,GAAIsF,QAAUA,EACdsD,EAAKH,QAAQzI,MAIjBsF,EAAU,GAAIgE,gBAGdzP,EAAMA,EAAI0P,QAAQ,WAAY,IAG1BX,EAAKJ,YACPlD,EAAQkE,OAASZ,EAAKJ,WAEpBI,EAAKH,UACPnD,EAAQrY,QAAU,WAChB,GAAI+S,GAAM,GAAI3U,OAAM,oCACpB2U,GAAIsF,QAAUA,EACdsD,EAAKH,QAAQzI,MAKnBsF,EAAQmE,KAAK,OAAQ5P,GAEjBgP,GACF7V,EAAK6V,EAAkB,SAAShU,EAAKC,GACnCwQ,EAAQoE,iBAAiB7U,EAAKC,KAIlCwQ,EAAQqE,KAAKxa,EAAUyZ,EAAKxc,UAG9Bwd,GAAe,SAASC,GACtB,GAAIC,KAEJ,KAAK,GAAIjV,KAAOgV,GACd,GAAIA,EAAKjK,eAAe/K,GAAM,CAC5B,GAAIC,GAAQ+U,EAAKhV,EACjBiV,GAAUjV,GAAwB,kBAAVC,GAAuBA,IAAUA,EAI7D,MAAOgV,IAGTC,EAAW,SAASzd,GAGhB7B,KAAKmH,EAAwBtF,KAC5B7B,KAAK8J,OAAS9J,KAAKuF,EAAeuE,QAGnC/F,SAASX,UAAUY,MAAMjD,KACvBf,KAAKmH,EAAwBtF,GAC7B7B,KAAKkH,KACFvD,MAAM5C,KAAK6C,UAAW,KAK/B2b,EAAe,SAASnV,EAAKrH,GACvB6B,EAAY7B,SACP/C,MAAKsF,EAAe8E,GAE3BpK,KAAKsF,EAAe8E,GAAO5B,EAAYxI,KAAKsF,EAAe8E,OAAYrH,KAM7E9C,EAAMmD,UAAUoc,QAAUvf,EAAMmD,UAAU8M,eAC1CjQ,EAAMmD,UAAUqc,kBAAoBxf,EAAMmD,UAAUwN,WAEpDnR,EAAOD,QAAUS,IAEdc,KAAKf,KAAuB,mBAAXF,QAAyBA,OAAyB,mBAATC,MAAuBA,KAAyB,mBAAXF,QAAyBA,aACxH6f,GAAK,GAAG1c,EAAI,EAAEd,EAAI,EAAE+B,EAAI,EAAE0b,EAAI,EAAEC,EAAI,IAAIzd,GAAG,SAASjB,EAAQzB,EAAOD,IACtE,SAAWM,GAOX,GAAI+f,GAAmB3e,EAAQ,GAG3BuE,EACgB,mBAAX5F,QACHA,OACkB,mBAAXC,GAAyBA,EAAyB,mBAATC,MAAuBA,QACzE+f,EAASra,EAAQxF,MAEjBA,EAAQ,GAAI4f,EAQhB5f,GAAM8f,WAAa,WAEjB,MADAta,GAAQxF,MAAQ6f,EACT7f,GAGTA,EAAMsR,YAEN9R,EAAOD,QAAUS,EAoCjBR,EAAOD,QAAQwgB,OAASH,IAErB9e,KAAKf,KAAuB,mBAAXF,QAAyBA,OAAyB,mBAATC,MAAuBA,KAAyB,mBAAXF,QAAyBA,aACxHqE,EAAI,IAAID,GAAG,SAAS/C,EAAQzB,EAAOD,IACtC,SAAWM,GAQX,QAASmI,GAASgY,GAChB,MAAuB,gBAATA,IAA8B,OAATA,EAKrC,QAASjY,GAAQqC,GACf,UAAWU,SAAShK,KAAKsJ,IACvB,IAAK,iBACH,OAAO,CACT,KAAK,qBACH,OAAO,CACT,KAAK,wBACH,OAAO,CACT,SACE,MAAOA,aAAiBzJ,QAI9B,QAASuH,GAAakC,GACpB,MAAO6V,MAAoD,2BAAzBnV,SAAShK,KAAKsJ,GAGlD,QAASzF,GAAYqb,GACnB,MAAgB,UAATA,EAGT,QAAS1b,GAAW0b,GAClB,MAAuB,kBAATA,GAGhB,QAAS/X,GAAc+X,GACrB,MAAgD,oBAAzCrR,OAAOxL,UAAU2H,SAAShK,KAAKkf,GAGxC,QAAS7X,GAAS6X,GAChB,MAAgD,oBAAzCrR,OAAOxL,UAAU2H,SAAShK,KAAKkf,GAGxC,QAAS5X,GAAQ4X,GACf,MAAgD,mBAAzCrR,OAAOxL,UAAU2H,SAAShK,KAAKkf,GAGxC,QAAS3X,GAAc2X,GACrB,IAAK/X,EAAc+X,GAAO,OAAO,CAEjC,KAAK,GAAI9M,KAAK8M,GACZ,GAAIA,EAAK9K,eAAehC,GACtB,OAAO,CAGX,QAAO,EAGT,QAAS+M,KACP,IAEE,MADA,IAAIC,YAAW,KACR,EACP,MAAOjgB,GACP,OAAO,GAIX,QAASkJ,KACP,KAAM,SAAW3D,IAAU,OAAO,CAElC,KAIE,MAHA,IAAI2a,SACJ,GAAIjJ,SAAQ,IACZ,GAAIkJ,WACG,EACP,MAAOngB,GACP,OAAO,GAQX,QAAS4G,KACP,IAAKsC,IAAiB,OAAO,CAE7B,KAKE,MAHA,IAAI+N,SAAQ,cACVtQ,eAAgB,YAEX,EACP,MAAO3G,GACP,OAAO,GAIX,QAASogB,KACP,MAAwC,kBAA1BC,uBAGhB,QAASC,GAAgB/e,GACvB,QAASqP,GAAanP,EAAM2C,GAC1B,GAAImc,GAAiBhf,EAASE,IAASA,CACvC,OAAI2C,GACKA,EAASmc,IAAmBA,EAE9BA,EAGT,MAAO3P,GAGT,QAASvI,GAAKmH,EAAKjO,GACjB,GAAId,GAAGoW,CAEP,IAAInS,EAAY8K,EAAI1O,QAClB,IAAKL,IAAK+O,GACJ/G,EAAO+G,EAAK/O,IACdc,EAASV,KAAK,KAAMJ,EAAG+O,EAAI/O,QAK/B,IADAoW,EAAIrH,EAAI1O,OAEN,IAAKL,EAAI,EAAGA,EAAIoW,EAAGpW,IACjBc,EAASV,KAAK,KAAMJ,EAAG+O,EAAI/O,IAMnC,QAAS6H,GAAYkY,EAAMC,GACzB,MAAKA,IAGLpY,EAAKoY,EAAM,SAASvW,EAAKC,GACvBqW,EAAKtW,GAAOC,IAEPqW,GALEA,EAgBX,QAAShY,GAAagH,GACpB,QAAKd,OAAOgS,UAGLhS,OAAOgS,SAASlR,GAGzB,QAASjH,GAASsQ,EAAKtO,GACrB,GAAmB,gBAARA,GACT,KAAM,IAAI7J,OAAM,yDAElB,OAAmB,gBAARmY,IAA4B,IAARtO,EACtBsO,EAEFA,EAAI/X,QAAUyJ,EAAMsO,EAAMA,EAAI9M,OAAO,EAAGxB,GAAO,IAUxD,QAAS9B,GAAOkY,EAAQzW,GACtB,MAAOwE,QAAOxL,UAAU+R,eAAepU,KAAK8f,EAAQzW,GAGtD,QAASxB,GAAWkY,GAQlB,IALA,GAGEC,GAHEC,KACFrgB,EAAI,EACJsgB,EAAMH,EAAS9f,OAGVL,EAAIsgB,EAAKtgB,IACdogB,EAAUD,EAASngB,GACfyH,EAAS2Y,GAGXC,EAAQxf,KAAKuf,EAAQjC,QAAQ,8BAA+B,SACnDiC,GAAWA,EAAQG,QAE5BF,EAAQxf,KAAKuf,EAAQG,OAIzB,OAAO,IAAIC,QAAOH,EAAQI,KAAK,KAAM,KAGvC,QAASvY,GAAUtI,GACjB,GAAI8gB,KAIJ,OAHA9Y,GAAKhI,EAAG,SAAS6J,EAAKC,GACpBgX,EAAM7f,KAAKoQ,mBAAmBxH,GAAO,IAAMwH,mBAAmBvH,MAEzDgX,EAAMD,KAAK,KAMpB,QAASlY,GAASkG,GAChB,GAAmB,gBAARA,GAAkB,QAC7B,IAAIkS,GAAQlS,EAAIkS,MAAM,kEAGlBC,EAAQD,EAAM,IAAM,GACpBE,EAAWF,EAAM,IAAM,EAC3B,QACEjN,SAAUiN,EAAM,GAChBhN,KAAMgN,EAAM,GACZvV,KAAMuV,EAAM,GACZ/M,SAAU+M,EAAM,GAAKC,EAAQC,GAGjC,QAAS1Y,KACP,GAAI2Y,GAAShc,EAAQgc,QAAUhc,EAAQic,QAEvC,KAAK9c,EAAY6c,IAAWA,EAAOE,gBAAiB,CAGlD,GAAIC,GAAM,GAAIC,aAAY,EAC1BJ,GAAOE,gBAAgBC,GAGvBA,EAAI,GAAe,KAATA,EAAI,GAAc,MAE5BA,EAAI,GAAe,MAATA,EAAI,GAAe,KAE7B,IAAIE,GAAM,SAASC,GAEjB,IADA,GAAIC,GAAID,EAAIhX,SAAS,IACdiX,EAAEhhB,OAAS,GAChBghB,EAAI,IAAMA,CAEZ,OAAOA,GAGT,OACEF,GAAIF,EAAI,IACRE,EAAIF,EAAI,IACRE,EAAIF,EAAI,IACRE,EAAIF,EAAI,IACRE,EAAIF,EAAI,IACRE,EAAIF,EAAI,IACRE,EAAIF,EAAI,IACRE,EAAIF,EAAI,IAIV,MAAO,mCAAmC9C,QAAQ,QAAS,SAASmD,GAClE,GAAI5hB,GAAqB,GAAhBmK,KAAKuS,SAAiB,EAC7BiF,EAAU,MAANC,EAAY5hB,EAAS,EAAJA,EAAW,CAClC,OAAO2hB,GAAEjX,SAAS,MAYxB,QAAShC,GAAiBmZ,GAWxB,IATA,GAOEC,GAPEC,EAAsB,EACxBC,EAAiB,GACjBC,KACAC,EAAS,EACTtB,EAAM,EACNuB,EAAY,MACZC,EAAYD,EAAUxhB,OAGjBkhB,GAAQK,IAAWH,IACxBD,EAAUO,EAAoBR,KAMhB,SAAZC,GACCI,EAAS,GAAKtB,EAAMqB,EAAIthB,OAASyhB,EAAYN,EAAQnhB,QAAUqhB,KAKlEC,EAAI9gB,KAAK2gB,GAETlB,GAAOkB,EAAQnhB,OACfkhB,EAAOA,EAAKS,UAGd,OAAOL,GAAI/S,UAAU6R,KAAKoB,GAS5B,QAASE,GAAoBR,GAC3B,GACEU,GACAC,EACAzY,EACA0Y,EACAniB,EALE2hB,IAOJ,KAAKJ,IAASA,EAAKxO,QACjB,MAAO,EAST,IANA4O,EAAI9gB,KAAK0gB,EAAKxO,QAAQR,eAClBgP,EAAKvc,IACP2c,EAAI9gB,KAAK,IAAM0gB,EAAKvc,IAGtBid,EAAYV,EAAKU,UACbA,GAAaxa,EAASwa,GAExB,IADAC,EAAUD,EAAUnZ,MAAM,OACrB9I,EAAI,EAAGA,EAAIkiB,EAAQ7hB,OAAQL,IAC9B2hB,EAAI9gB,KAAK,IAAMqhB,EAAQliB,GAG3B,IAAIoiB,IAAiB,OAAQ,OAAQ,QAAS,MAC9C,KAAKpiB,EAAI,EAAGA,EAAIoiB,EAAc/hB,OAAQL,IACpCyJ,EAAM2Y,EAAcpiB,GACpBmiB,EAAOZ,EAAKc,aAAa5Y,GACrB0Y,GACFR,EAAI9gB,KAAK,IAAM4I,EAAM,KAAO0Y,EAAO,KAGvC,OAAOR,GAAIlB,KAAK,IAMlB,QAAS6B,GAAgBxiB,EAAGyiB,GAC1B,WAAYziB,IAAMyiB,GAMpB,QAASC,GAAgB1iB,EAAGyiB,GAC1B,MAAOte,GAAYnE,IAAMmE,EAAYse,GAMvC,QAASla,GAAgBwF,EAAK4U,GAC5B,OAAIH,EAAgBzU,EAAK4U,KAEzB5U,EAAMA,EAAIkM,OAAO,GACjB0I,EAAMA,EAAI1I,OAAO,GAEblM,EAAIoH,OAASwN,EAAIxN,MAAQpH,EAAInE,QAAU+Y,EAAI/Y,SAG3C8Y,EAAgB3U,EAAIL,WAAYiV,EAAIjV,aAEjClF,EAAiBuF,EAAIL,WAAYiV,EAAIjV,cAM9C,QAASlF,GAAiBoa,EAAQC,GAChC,GAAIL,EAAgBI,EAAQC,GAAS,OAAO,CAE5C,IAAIC,GAAUF,EAAOhU,OACjBmU,EAAUF,EAAOjU,MAGrB,IAAIkU,EAAQviB,SAAWwiB,EAAQxiB,OAAQ,OAAO,CAI9C,KAAK,GADDP,GAAGyiB,EACEviB,EAAI,EAAGA,EAAI4iB,EAAQviB,OAAQL,IAGlC,GAFAF,EAAI8iB,EAAQ5iB,GACZuiB,EAAIM,EAAQ7iB,GAEVF,EAAEyZ,WAAagJ,EAAEhJ,UACjBzZ,EAAEiZ,SAAWwJ,EAAExJ,QACfjZ,EAAE2Z,QAAU8I,EAAE9I,OACd3Z,EAAE,cAAgByiB,EAAE,YAEpB,OAAO,CAEX,QAAO,EAUT,QAAS/Z,GAAKuG,EAAKvM,EAAMsgB,EAAaC,GACpC,GAAW,MAAPhU,EAAJ,CACA,GAAImF,GAAOnF,EAAIvM,EACfuM,GAAIvM,GAAQsgB,EAAY5O,GACxBnF,EAAIvM,GAAM4J,GAAY,EACtB2C,EAAIvM,GAAM+J,EAAW2H,EACjB6O,GACFA,EAAMliB,MAAMkO,EAAKvM,EAAM0R,KAU3B,QAAShR,GAAS8f,EAAOC,GACvB,IAAKvb,EAAQsb,GAAQ,MAAO,EAI5B,KAAK,GAFDE,MAEKljB,EAAI,EAAGA,EAAIgjB,EAAM3iB,OAAQL,IAChC,IACEkjB,EAAOriB,KAAKsiB,OAAOH,EAAMhjB,KACzB,MAAOT,GACP2jB,EAAOriB,KAAK,gCAIhB,MAAOqiB,GAAOzC,KAAKwC,GASrB,QAASG,GAAW1Z,GAClB,QAAS2Z,UAAU3Z,GAAOZ,MAAM,SAASzI,OAG3C,QAASijB,GAAS5Z,GAChB,MAAO0Z,GAAWtf,KAAKC,UAAU2F,IAGnC,QAAS6Z,GAAe7Z,GACtB,GAAqB,gBAAVA,GAAoB,CAC7B,GAAI8Z,GAAY,EAChB,OAAO1b,GAAS4B,EAAO8Z,GAClB,GACY,gBAAV9Z,IACU,iBAAVA,IACU,mBAAVA,GAEP,MAAOA,EAGT,IAAIuL,GAAOhH,OAAOxL,UAAU2H,SAAShK,KAAKsJ,EAG1C,OAAa,oBAATuL,EAAmC,WAC1B,mBAATA,EAAkC,UACzB,sBAATA,EACKvL,EAAMlH,KAAO,cAAgBkH,EAAMlH,KAAO,IAAM,aAElDkH,EAGT,QAAS+Z,GAAgB/Z,EAAOga,GAC9B,MAAc,KAAVA,EAAoBH,EAAe7Z,GAEnCnC,EAAcmC,GACTuE,OAAOC,KAAKxE,GAAOia,OAAO,SAASC,EAAKna,GAE7C,MADAma,GAAIna,GAAOga,EAAgB/Z,EAAMD,GAAMia,EAAQ,GACxCE,OAEAxP,MAAM1M,QAAQgC,GAChBA,EAAMma,IAAI,SAASC,GACxB,MAAOL,GAAgBK,EAAKJ,EAAQ,KAIjCH,EAAe7Z,GAGxB,QAASf,GAAmB2E,EAAIoW,EAAOK,GACrC,IAAKxc,EAAc+F,GAAK,MAAOA,EAE/BoW,GAAyB,gBAAVA,GAAqBM,EAAgCN,EACpEK,EAA2B,gBAAVL,GAAqBO,EAA+BF,CAErE,IAAIG,GAAaT,EAAgBnW,EAAIoW,EAErC,OAAIJ,GAASvf,EAAUmgB,IAAeH,EAC7Bpb,EAAmB2E,EAAIoW,EAAQ,GAGjCQ,EAGT,QAASxb,GAAwBwF,EAAMsV,GACrC,GAAoB,gBAATtV,IAAqC,gBAATA,GAAmB,MAAOA,GAAK9D,UACtE,KAAKgK,MAAM1M,QAAQwG,GAAO,MAAO,EAKjC,IAHAA,EAAOA,EAAKiW,OAAO,SAAS1a,GAC1B,MAAsB,gBAARA,KAEI,IAAhByE,EAAK7N,OAAc,MAAO,sBAG9B,IADAmjB,EAAiC,gBAAdA,GAAyBY,EAA4BZ,EACpEtV,EAAK,GAAG7N,QAAUmjB,EAAW,MAAOtV,GAAK,EAE7C,KAAK,GAAImW,GAAWnW,EAAK7N,OAAQgkB,EAAW,EAAGA,IAAY,CACzD,GAAIH,GAAahW,EAAKlL,MAAM,EAAGqhB,GAAU5D,KAAK,KAC9C,MAAIyD,EAAW7jB,OAASmjB,GACxB,MAAIa,KAAanW,EAAK7N,OAAe6jB,EAC9BA,EAAa,IAGtB,MAAO,GAGT,QAAStb,GAASoa,EAAOld,GAcvB,QAASwe,GAAeC,GACtB,MAAI7c,GAAQ6c,GACHA,EAAYV,IAAI,SAASC,GAC9B,MAAOQ,GAAeR,KAItBvc,EAAcgd,GACTtW,OAAOC,KAAKqW,GAAaZ,OAAO,SAASC,EAAKY,GAMnD,MAJEZ,GAAIY,GADFC,EAAenW,KAAKkW,GACbE,EAEAJ,EAAeC,EAAYC,IAE/BZ,OAIJW,EA/BT,IAAK7c,EAAQ5B,IAAkB4B,EAAQ5B,IAAyC,IAAxBA,EAAazF,OACnE,MAAO2iB,EAET,IAEI2B,GAFAF,EAAiBxc,EAAWnC,GAC5B4e,EAAe,UAGnB,KACEC,EAAY7gB,KAAKgM,MAAM/L,EAAUif,IACjC,MAAO4B,GACP,MAAO5B,GAwBT,MAAOsB,GAAeK,GAlkBxB,GAAI5gB,GAAYxD,EAAQ,GAEpBuE,EACgB,mBAAX5F,QACHA,OACkB,mBAAXC,GAAyBA,EAAyB,mBAATC,MAAuBA,QAgczE4kB,EAAgC,EAEhCC,EAA+B,MAC/BG,EAA4B,EA6HhCtlB,GAAOD,SACLyI,SAAUA,EACVD,QAASA,EACTG,aAAcA,EACdvD,YAAaA,EACbL,WAAYA,EACZ2D,cAAeA,EACfE,SAAUA,EACVC,QAASA,EACTC,cAAeA,EACf4X,mBAAoBA,EACpB9W,cAAeA,EACftC,uBAAwBA,EACxBwZ,8BAA+BA,EAC/BE,gBAAiBA,EACjBjY,KAAMA,EACNC,YAAaA,EACbC,SAAUA,EACVC,aAAcA,EACdC,OAAQA,EACRC,WAAYA,EACZC,UAAWA,EACXC,MAAOA,EACPC,iBAAkBA,EAClB2Z,oBAAqBA,EACrB1Z,gBAAiBA,EACjBC,iBAAkBA,EAClBC,SAAUA,EACVC,KAAMA,EACNtF,SAAUA,EACVyF,mBAAoBA,EACpBD,wBAAyBA,EACzBE,SAAUA,KAGTxI,KAAKf,KAAuB,mBAAXF,QAAyBA,OAAyB,mBAATC,MAAuBA,KAAyB,mBAAXF,QAAyBA,aACxH+f,EAAI,IAAID,GAAG,SAASze,EAAQzB,EAAOD,IACtC,SAAWM,GA+BX,QAAS0lB,KACP,MAAwB,mBAAb7b,WAAiD,MAArBA,SAASjC,SAAyB,GAElEiC,SAASjC,SAASE,KAjC3B,GAAItE,GAAQpC,EAAQ,GAYhB4G,GACF7B,qBAAqB,EACrB6D,OAAO,GAILrE,EACgB,mBAAX5F,QACHA,OACkB,mBAAXC,GAAyBA,EAAyB,mBAATC,MAAuBA,QAGzE0lB,KAAY9hB,MACZ+hB,EAAmB,IAGnBC,EAAiB,yGA+CrB7d,GAASsD,OAAS,WAUhB,QAASC,GAAUua,GACjBC,IACAC,EAAStkB,KAAKokB,GAOhB,QAASG,GAAYH,GACnB,IAAK,GAAIjlB,GAAImlB,EAAS9kB,OAAS,EAAGL,GAAK,IAAKA,EACtCmlB,EAASnlB,KAAOilB,GAClBE,EAASE,OAAOrlB,EAAG,GAQzB,QAASslB,KACPC,IACAJ,KAOF,QAASK,GAAe9X,EAAO+X,GAC7B,GAAI3L,GAAY,IAChB,KAAI2L,GAAkBte,EAAS7B,oBAA/B,CAGA,IAAK,GAAItF,KAAKmlB,GACZ,GAAIA,EAAS3Q,eAAexU,GAC1B,IACEmlB,EAASnlB,GAAGqD,MAAM,MAAOqK,GAAOwK,OAAO4M,EAAO1kB,KAAK6C,UAAW,KAC9D,MAAOyiB,GACP5L,EAAY4L,EAKlB,GAAI5L,EACF,KAAMA,IAiBV,QAAS6L,GAAsB5kB,EAAK0N,EAAKmX,EAAQC,EAAOvY,GACtD,GAAII,GAAQ,KAERoM,EAAYnX,EAAM6E,aAAa8F,GAAMA,EAAGxL,MAAQwL,EAEhD/K,EAAUI,EAAM6E,aAAazG,GAAOA,EAAIwB,QAAUxB,CAEtD,IAAI+kB,EACF3e,EAASwG,kBAAkBoY,oCACzBD,EACArX,EACAmX,EACArjB,GAEFyjB,QACK,IAAIlM,GAAanX,EAAM0E,QAAQyS,GAMpCpM,EAAQvG,EAASwG,kBAAkBmM,GACnC0L,EAAe9X,GAAO,OACjB,CACL,GAOIuY,GAPAlf,GACF0H,IAAKA,EACL+K,KAAMoM,EACNlM,OAAQmM,GAGNrjB,EAAOsJ,MAGX,IAAkC,uBAA3B1B,SAAShK,KAAKmC,GAAgC,CACnD,GAAI0jB,GAAS1jB,EAAQoe,MAAMqE,EACvBiB,KACFzjB,EAAOyjB,EAAO,GACd1jB,EAAU0jB,EAAO,IAIrBlf,EAAS8E,KAAOkZ,EAEhBrX,GACElL,KAAMA,EACND,QAASA,EACTkM,IAAKoW,IACLnX,OAAQ3G,IAEVye,EAAe9X,GAAO,GAGxB,QAAIwY,GACKA,EAAmB7iB,MAAMhE,KAAM4D,WAM1C,QAASiiB,KACHiB,IAGJD,EAAqBphB,EAAQjD,QAC7BiD,EAAQjD,QAAU8jB,EAClBQ,GAA2B,GAG7B,QAASZ,KACFY,IAGLrhB,EAAQjD,QAAUqkB,EAClBC,GAA2B,EAC3BD,EAAqBpa,QAGvB,QAASka,KACP,GAAII,GAAsBN,EACxBO,EAAYC,CACdA,GAAW,KACXR,EAAqB,KACrBrV,EAAgB,KAChB+U,EAAeniB,MAAM,MAAO+iB,GAAqB,GAAOlO,OAAOmO,IAUjE,QAAS5b,GAAO6C,EAAIiZ,GAClB,GAAIxjB,GAAO+hB,EAAO1kB,KAAK6C,UAAW,EAClC,IAAI6iB,EAAoB,CACtB,GAAIrV,IAAkBnD,EACpB,MAEA0Y,KAIJ,GAAItY,GAAQvG,EAASwG,kBAAkBL,EAevC,IAdAwY,EAAqBpY,EACrB+C,EAAgBnD,EAChBgZ,EAAWvjB,EAMX8O,WAAW,WACLpB,IAAkBnD,GACpB0Y,KAEDtY,EAAM8Y,WAAa,IAAO,GAEzBD,KAAY,EACd,KAAMjZ,GA9LV,GA0DI4Y,GAAoBC,EA1DpBhB,KACFmB,EAAW,KACX7V,EAAgB,KAChBqV,EAAqB,IAkMvB,OAHArb,GAAOC,UAAYA,EACnBD,EAAO2a,YAAcA,EACrB3a,EAAO+B,UAAY8Y,EACZ7a,KAsDTtD,EAASwG,kBAAoB,WA4C3B,QAAS8Y,GAA+BnZ,GACtC,GAAwB,mBAAbA,GAAGI,OAA0BJ,EAAGI,MAA3C,CAiBA,IAAK,GALDgZ,GACAC,EACAC,EAZA/P,EAAS,0IACTgQ,EAAQ,wHAGRC,EAAQ,6JAERC,EAAY,gDACZC,EAAa,gCACbC,EAAQ3Z,EAAGI,MAAM5E,MAAM,MACvB4E,KAMK1N,GAFO,sBAAsBsY,KAAKhL,EAAG/K,SAEjC,GAAG6T,EAAI6Q,EAAM5mB,OAAQL,EAAIoW,IAAKpW,EAAG,CAC5C,GAAK2mB,EAAQ9P,EAAOyB,KAAK2O,EAAMjnB,IAAM,CACnC,GAAIknB,GAAWP,EAAM,IAAqC,IAA/BA,EAAM,GAAG/Q,QAAQ,UACxCuR,EAASR,EAAM,IAAmC,IAA7BA,EAAM,GAAG/Q,QAAQ,OACtCuR,KAAWT,EAAWM,EAAW1O,KAAKqO,EAAM,OAE9CA,EAAM,GAAKD,EAAS,GACpBC,EAAM,GAAKD,EAAS,GACpBC,EAAM,GAAKD,EAAS,IAEtBE,GACEnY,IAAMyY,EAAsB,KAAXP,EAAM,GACvB9a,KAAM8a,EAAM,IAAM5B,EAClBhiB,KAAMmkB,GAAYP,EAAM,OACxBnN,KAAMmN,EAAM,IAAMA,EAAM,GAAK,KAC7BjN,OAAQiN,EAAM,IAAMA,EAAM,GAAK,UAE5B,IAAKA,EAAQE,EAAMvO,KAAK2O,EAAMjnB,IACnC4mB,GACEnY,IAAKkY,EAAM,GACX9a,KAAM8a,EAAM,IAAM5B,EAClBhiB,QACAyW,MAAOmN,EAAM,GACbjN,OAAQiN,EAAM,IAAMA,EAAM,GAAK,UAE5B,CAAA,KAAKA,EAAQG,EAAMxO,KAAK2O,EAAMjnB,KAsBnC,QArBA,IAAImnB,GAASR,EAAM,IAAMA,EAAM,GAAG/Q,QAAQ,aACtCuR,KAAWT,EAAWK,EAAUzO,KAAKqO,EAAM,MAE7CA,EAAM,GAAKD,EAAS,GACpBC,EAAM,GAAKD,EAAS,GACpBC,EAAM,GAAK,MACI,IAAN3mB,GAAY2mB,EAAM,IAAiC,mBAApBrZ,GAAG8Z,eAK3C1Z,EAAM,GAAGgM,OAASpM,EAAG8Z,aAAe,GAEtCR,GACEnY,IAAKkY,EAAM,GACX9a,KAAM8a,EAAM,IAAM5B,EAClBhiB,KAAM4jB,EAAM,GAAKA,EAAM,GAAG7d,MAAM,QAChC0Q,KAAMmN,EAAM,IAAMA,EAAM,GAAK,KAC7BjN,OAAQiN,EAAM,IAAMA,EAAM,GAAK,OAM9BC,EAAQ/a,MAAQ+a,EAAQpN,OAC3BoN,EAAQ/a,KAAOkZ,GAGjBrX,EAAM7M,KAAK+lB,GAGb,MAAKlZ,GAAMrN,QAKTmC,KAAM8K,EAAG9K,KACTD,QAAS+K,EAAG/K,QACZkM,IAAKoW,IACLnX,MAAOA,GAPA,MAwBX,QAASqY,GAAoCnN,EAAWnK,EAAKmX,EAAQrjB,GACnE,GAAI8kB,IACF5Y,IAAKA,EACL+K,KAAMoM,EAGR,IAAIyB,EAAQ5Y,KAAO4Y,EAAQ7N,KAAM,CAO/B,GANAZ,EAAU4N,YAAa,EAElBa,EAAQxb,OACXwb,EAAQxb,KAAOkZ,GAGbnM,EAAUlL,MAAMrN,OAAS,GACvBuY,EAAUlL,MAAM,GAAGe,MAAQ4Y,EAAQ5Y,IAAK,CAC1C,GAAImK,EAAUlL,MAAM,GAAG8L,OAAS6N,EAAQ7N,KACtC,OAAO,CACF,KACJZ,EAAUlL,MAAM,GAAG8L,MACpBZ,EAAUlL,MAAM,GAAG7B,OAASwb,EAAQxb,KAGpC,MADA+M,GAAUlL,MAAM,GAAG8L,KAAO6N,EAAQ7N,MAC3B,EAOb,MAFAZ,GAAUlL,MAAM4Z,QAAQD,GACxBzO,EAAU2O,SAAU,GACb,EAKT,MAHE3O,GAAU4N,YAAa,GAGlB,EAYT,QAASgB,GAAsCla,EAAIoW,GASjD,IACE,GALAiD,GACAc,EALEC,EAAe,qEACjBha,KACAia,KACAC,GAAY,EAMRC,EAAOL,EAAsCM,OACjDD,IAASD,EACTC,EAAOA,EAAKC,OAEZ,GAAID,IAASla,GAAqBka,IAAS1gB,EAASsD,OAApD,CAkBA,GAbAgd,GACEhZ,IAAK,KACL5C,KAAMkZ,EACNvL,KAAM,KACNE,OAAQ,MAGNmO,EAAKrlB,KACPilB,EAAK5b,KAAOgc,EAAKrlB,MACPmkB,EAAQe,EAAapP,KAAKuP,EAAKzd,eACzCqd,EAAK5b,KAAO8a,EAAM,IAGK,mBAAdc,GAAK5b,KACd,IACE4b,EAAK5b,KAAO8a,EAAM3D,MAAM+E,UAAU,EAAGpB,EAAM3D,MAAMpN,QAAQ,MACzD,MAAOrW,IAGPooB,EAAM,GAAKE,GACbD,GAAY,EAEZD,EAAM,GAAKE,IAAQ,EAGrBna,EAAM7M,KAAK4mB,GAGT/D,GAGFhW,EAAM2X,OAAO,EAAG3B,EAGlB,IAAIvU,IACF3M,KAAM8K,EAAG9K,KACTD,QAAS+K,EAAG/K,QACZkM,IAAKoW,IACLnX,MAAOA,EAQT,OANAqY,GACE5W,EACA7B,EAAG0a,WAAa1a,EAAG2a,SACnB3a,EAAGkM,MAAQlM,EAAG4a,WACd5a,EAAG/K,SAAW+K,EAAG6a,aAEZhZ,EAQT,QAASxB,GAAkBL,EAAIoW,GAC7B,GAAIhW,GAAQ,IACZgW,GAAiB,MAATA,EAAgB,GAAKA,CAE7B,KAEE,GADAhW,EAAQ+Y,EAA+BnZ,GAErC,MAAOI,GAET,MAAOnO,GACP,GAAI4H,EAASgC,MACX,KAAM5J,GAIV,IAEE,GADAmO,EAAQ8Z,EAAsCla,EAAIoW,EAAQ,GAExD,MAAOhW,GAET,MAAOnO,GACP,GAAI4H,EAASgC,MACX,KAAM5J,GAGV,OACEiD,KAAM8K,EAAG9K,KACTD,QAAS+K,EAAG/K,QACZkM,IAAKoW,KAOT,MAHAlX,GAAkBoY,oCAAsCA,EACxDpY,EAAkB8Y,+BAAiCA,EAE5C9Y,KAGT7O,EAAOD,QAAUsI,IAEd/G,KAAKf,KAAuB,mBAAXF,QAAyBA,OAAyB,mBAATC,MAAuBA,KAAyB,mBAAXF,QAAyBA,aACxHoE,EAAI,IAAI2b,GAAG,SAAS1e,EAAQzB,EAAOD,GAetC,QAAS+W,GAAQwS,EAAUC,GACzB,IAAK,GAAIroB,GAAI,EAAGA,EAAIooB,EAAS/nB,SAAUL,EACrC,GAAIooB,EAASpoB,KAAOqoB,EAAQ,MAAOroB,EAErC,UAGF,QAAS+D,GAAUgL,EAAKuZ,EAAUC,EAAQC,GACxC,MAAO1kB,MAAKC,UAAUgL,EAAK0Z,EAAWH,EAAUE,GAAgBD,GAIlE,QAASG,GAAehf,GACtB,GAAIkL,IAEFlH,MAAOhE,EAAMgE,MACbnL,QAASmH,EAAMnH,QACfC,KAAMkH,EAAMlH,KAGd,KAAK,GAAIxC,KAAK0J,GACRuE,OAAOxL,UAAU+R,eAAepU,KAAKsJ,EAAO1J,KAC9C4U,EAAI5U,GAAK0J,EAAM1J,GAInB,OAAO4U,GAGT,QAAS6T,GAAWH,EAAUE,GAC5B,GAAI9a,MACAQ,IAWJ,OATqB,OAAjBsa,IACFA,EAAgB,SAAS/e,EAAKC,GAC5B,MAAIgE,GAAM,KAAOhE,EACR,eAEF,eAAiBwE,EAAKlL,MAAM,EAAG4S,EAAQlI,EAAOhE,IAAQ+W,KAAK,KAAO;GAItE,SAAShX,EAAKC,GACnB,GAAIgE,EAAMrN,OAAS,EAAG,CACpB,GAAIsoB,GAAU/S,EAAQlI,EAAOrO,OAC5BspB,EAAUjb,EAAM2X,OAAOsD,EAAU,GAAKjb,EAAM7M,KAAKxB,OACjDspB,EAAUza,EAAKmX,OAAOsD,EAASC,EAAAA,EAAUnf,GAAOyE,EAAKrN,KAAK4I,IAEtDmM,EAAQlI,EAAOhE,KAClBA,EAAQ8e,EAAcpoB,KAAKf,KAAMoK,EAAKC,QAGxCgE,GAAM7M,KAAK6I,EAGb,OAAmB,OAAZ4e,EACH5e,YAAiBzJ,OAAQyoB,EAAehf,GAASA,EACjD4e,EAASloB,KAAKf,KAAMoK,EAAKC,IA5DjC7K,EAAUC,EAAOD,QAAUkF,EAC3BlF,EAAQgqB,aAAeJ,OA+DjB1J,IAAI,SAASxe,EAAQzB,EAAOD,GAwBlC,QAASiqB,GAAQC,EAAGjO,GAClB,GAAIkO,IAAW,MAAJD,IAAmB,MAAJjO,GACtBmO,GAAOF,GAAK,KAAOjO,GAAK,KAAOkO,GAAO,GAC1C,OAAQC,IAAO,GAAa,MAAND,EAMxB,QAASE,GAAc9H,EAAK+H,GAC1B,MAAQ/H,IAAO+H,EAAQ/H,IAAS,GAAK+H,EAMvC,QAASC,GAAOC,EAAGvpB,EAAGyiB,EAAGwG,EAAGppB,EAAGH,GAC7B,MAAOspB,GAAQI,EAAcJ,EAAQA,EAAQhpB,EAAGupB,GAAIP,EAAQC,EAAGvpB,IAAKG,GAAI4iB,GAE1E,QAAS+G,GAAMxpB,EAAGyiB,EAAGjB,EAAGiI,EAAGR,EAAGppB,EAAGH,GAC/B,MAAO4pB,GAAQ7G,EAAIjB,GAAOiB,EAAIgH,EAAIzpB,EAAGyiB,EAAGwG,EAAGppB,EAAGH,GAEhD,QAASgqB,GAAM1pB,EAAGyiB,EAAGjB,EAAGiI,EAAGR,EAAGppB,EAAGH,GAC/B,MAAO4pB,GAAQ7G,EAAIgH,EAAMjI,GAAKiI,EAAIzpB,EAAGyiB,EAAGwG,EAAGppB,EAAGH,GAEhD,QAASiqB,GAAM3pB,EAAGyiB,EAAGjB,EAAGiI,EAAGR,EAAGppB,EAAGH,GAC/B,MAAO4pB,GAAO7G,EAAIjB,EAAIiI,EAAGzpB,EAAGyiB,EAAGwG,EAAGppB,EAAGH,GAEvC,QAASkqB,GAAM5pB,EAAGyiB,EAAGjB,EAAGiI,EAAGR,EAAGppB,EAAGH,GAC/B,MAAO4pB,GAAO9H,GAAKiB,GAAKgH,GAAIzpB,EAAGyiB,EAAGwG,EAAGppB,EAAGH,GAM1C,QAASmqB,GAAQZ,EAAGzI,GAElByI,EAAEzI,GAAO,IAAM,KAASA,EAAM,GAC9ByI,GAAKzI,EAAM,KAAQ,GAAM,GAAK,IAAMA,CAEpC,IAAItgB,GACA4pB,EACAC,EACAC,EACAC,EACAjqB,EAAI,WACJyiB,aACAjB,cACAiI,EAAI,SAER,KAAKvpB,EAAI,EAAGA,EAAI+oB,EAAE1oB,OAAQL,GAAK,GAC7B4pB,EAAO9pB,EACP+pB,EAAOtH,EACPuH,EAAOxI,EACPyI,EAAOR,EAEPzpB,EAAIwpB,EAAMxpB,EAAGyiB,EAAGjB,EAAGiI,EAAGR,EAAE/oB,GAAI,cAC5BupB,EAAID,EAAMC,EAAGzpB,EAAGyiB,EAAGjB,EAAGyH,EAAE/oB,EAAI,GAAI,eAChCshB,EAAIgI,EAAMhI,EAAGiI,EAAGzpB,EAAGyiB,EAAGwG,EAAE/oB,EAAI,GAAI,GAAI,WACpCuiB,EAAI+G,EAAM/G,EAAGjB,EAAGiI,EAAGzpB,EAAGipB,EAAE/oB,EAAI,GAAI,gBAChCF,EAAIwpB,EAAMxpB,EAAGyiB,EAAGjB,EAAGiI,EAAGR,EAAE/oB,EAAI,GAAI,cAChCupB,EAAID,EAAMC,EAAGzpB,EAAGyiB,EAAGjB,EAAGyH,EAAE/oB,EAAI,GAAI,GAAI,YACpCshB,EAAIgI,EAAMhI,EAAGiI,EAAGzpB,EAAGyiB,EAAGwG,EAAE/oB,EAAI,GAAI,gBAChCuiB,EAAI+G,EAAM/G,EAAGjB,EAAGiI,EAAGzpB,EAAGipB,EAAE/oB,EAAI,GAAI,cAChCF,EAAIwpB,EAAMxpB,EAAGyiB,EAAGjB,EAAGiI,EAAGR,EAAE/oB,EAAI,GAAI,EAAG,YACnCupB,EAAID,EAAMC,EAAGzpB,EAAGyiB,EAAGjB,EAAGyH,EAAE/oB,EAAI,GAAI,gBAChCshB,EAAIgI,EAAMhI,EAAGiI,EAAGzpB,EAAGyiB,EAAGwG,EAAE/oB,EAAI,IAAK,WACjCuiB,EAAI+G,EAAM/G,EAAGjB,EAAGiI,EAAGzpB,EAAGipB,EAAE/oB,EAAI,IAAK,gBACjCF,EAAIwpB,EAAMxpB,EAAGyiB,EAAGjB,EAAGiI,EAAGR,EAAE/oB,EAAI,IAAK,EAAG,YACpCupB,EAAID,EAAMC,EAAGzpB,EAAGyiB,EAAGjB,EAAGyH,EAAE/oB,EAAI,IAAK,cACjCshB,EAAIgI,EAAMhI,EAAGiI,EAAGzpB,EAAGyiB,EAAGwG,EAAE/oB,EAAI,IAAK,gBACjCuiB,EAAI+G,EAAM/G,EAAGjB,EAAGiI,EAAGzpB,EAAGipB,EAAE/oB,EAAI,IAAK,GAAI,YAErCF,EAAI0pB,EAAM1pB,EAAGyiB,EAAGjB,EAAGiI,EAAGR,EAAE/oB,EAAI,GAAI,cAChCupB,EAAIC,EAAMD,EAAGzpB,EAAGyiB,EAAGjB,EAAGyH,EAAE/oB,EAAI,GAAI,eAChCshB,EAAIkI,EAAMlI,EAAGiI,EAAGzpB,EAAGyiB,EAAGwG,EAAE/oB,EAAI,IAAK,GAAI,WACrCuiB,EAAIiH,EAAMjH,EAAGjB,EAAGiI,EAAGzpB,EAAGipB,EAAE/oB,GAAI,eAC5BF,EAAI0pB,EAAM1pB,EAAGyiB,EAAGjB,EAAGiI,EAAGR,EAAE/oB,EAAI,GAAI,cAChCupB,EAAIC,EAAMD,EAAGzpB,EAAGyiB,EAAGjB,EAAGyH,EAAE/oB,EAAI,IAAK,EAAG,UACpCshB,EAAIkI,EAAMlI,EAAGiI,EAAGzpB,EAAGyiB,EAAGwG,EAAE/oB,EAAI,IAAK,eACjCuiB,EAAIiH,EAAMjH,EAAGjB,EAAGiI,EAAGzpB,EAAGipB,EAAE/oB,EAAI,GAAI,eAChCF,EAAI0pB,EAAM1pB,EAAGyiB,EAAGjB,EAAGiI,EAAGR,EAAE/oB,EAAI,GAAI,EAAG,WACnCupB,EAAIC,EAAMD,EAAGzpB,EAAGyiB,EAAGjB,EAAGyH,EAAE/oB,EAAI,IAAK,eACjCshB,EAAIkI,EAAMlI,EAAGiI,EAAGzpB,EAAGyiB,EAAGwG,EAAE/oB,EAAI,GAAI,eAChCuiB,EAAIiH,EAAMjH,EAAGjB,EAAGiI,EAAGzpB,EAAGipB,EAAE/oB,EAAI,GAAI,GAAI,YACpCF,EAAI0pB,EAAM1pB,EAAGyiB,EAAGjB,EAAGiI,EAAGR,EAAE/oB,EAAI,IAAK,eACjCupB,EAAIC,EAAMD,EAAGzpB,EAAGyiB,EAAGjB,EAAGyH,EAAE/oB,EAAI,GAAI,aAChCshB,EAAIkI,EAAMlI,EAAGiI,EAAGzpB,EAAGyiB,EAAGwG,EAAE/oB,EAAI,GAAI,GAAI,YACpCuiB,EAAIiH,EAAMjH,EAAGjB,EAAGiI,EAAGzpB,EAAGipB,EAAE/oB,EAAI,IAAK,gBAEjCF,EAAI2pB,EAAM3pB,EAAGyiB,EAAGjB,EAAGiI,EAAGR,EAAE/oB,EAAI,GAAI,WAChCupB,EAAIE,EAAMF,EAAGzpB,EAAGyiB,EAAGjB,EAAGyH,EAAE/oB,EAAI,GAAI,gBAChCshB,EAAImI,EAAMnI,EAAGiI,EAAGzpB,EAAGyiB,EAAGwG,EAAE/oB,EAAI,IAAK,GAAI,YACrCuiB,EAAIkH,EAAMlH,EAAGjB,EAAGiI,EAAGzpB,EAAGipB,EAAE/oB,EAAI,IAAK,cACjCF,EAAI2pB,EAAM3pB,EAAGyiB,EAAGjB,EAAGiI,EAAGR,EAAE/oB,EAAI,GAAI,eAChCupB,EAAIE,EAAMF,EAAGzpB,EAAGyiB,EAAGjB,EAAGyH,EAAE/oB,EAAI,GAAI,GAAI,YACpCshB,EAAImI,EAAMnI,EAAGiI,EAAGzpB,EAAGyiB,EAAGwG,EAAE/oB,EAAI,GAAI,eAChCuiB,EAAIkH,EAAMlH,EAAGjB,EAAGiI,EAAGzpB,EAAGipB,EAAE/oB,EAAI,IAAK,gBACjCF,EAAI2pB,EAAM3pB,EAAGyiB,EAAGjB,EAAGiI,EAAGR,EAAE/oB,EAAI,IAAK,EAAG,WACpCupB,EAAIE,EAAMF,EAAGzpB,EAAGyiB,EAAGjB,EAAGyH,EAAE/oB,GAAI,eAC5BshB,EAAImI,EAAMnI,EAAGiI,EAAGzpB,EAAGyiB,EAAGwG,EAAE/oB,EAAI,GAAI,eAChCuiB,EAAIkH,EAAMlH,EAAGjB,EAAGiI,EAAGzpB,EAAGipB,EAAE/oB,EAAI,GAAI,GAAI,UACpCF,EAAI2pB,EAAM3pB,EAAGyiB,EAAGjB,EAAGiI,EAAGR,EAAE/oB,EAAI,GAAI,cAChCupB,EAAIE,EAAMF,EAAGzpB,EAAGyiB,EAAGjB,EAAGyH,EAAE/oB,EAAI,IAAK,eACjCshB,EAAImI,EAAMnI,EAAGiI,EAAGzpB,EAAGyiB,EAAGwG,EAAE/oB,EAAI,IAAK,GAAI,WACrCuiB,EAAIkH,EAAMlH,EAAGjB,EAAGiI,EAAGzpB,EAAGipB,EAAE/oB,EAAI,GAAI,eAEhCF,EAAI4pB,EAAM5pB,EAAGyiB,EAAGjB,EAAGiI,EAAGR,EAAE/oB,GAAI,cAC5BupB,EAAIG,EAAMH,EAAGzpB,EAAGyiB,EAAGjB,EAAGyH,EAAE/oB,EAAI,GAAI,GAAI,YACpCshB,EAAIoI,EAAMpI,EAAGiI,EAAGzpB,EAAGyiB,EAAGwG,EAAE/oB,EAAI,IAAK,gBACjCuiB,EAAImH,EAAMnH,EAAGjB,EAAGiI,EAAGzpB,EAAGipB,EAAE/oB,EAAI,GAAI,cAChCF,EAAI4pB,EAAM5pB,EAAGyiB,EAAGjB,EAAGiI,EAAGR,EAAE/oB,EAAI,IAAK,EAAG,YACpCupB,EAAIG,EAAMH,EAAGzpB,EAAGyiB,EAAGjB,EAAGyH,EAAE/oB,EAAI,GAAI,gBAChCshB,EAAIoI,EAAMpI,EAAGiI,EAAGzpB,EAAGyiB,EAAGwG,EAAE/oB,EAAI,IAAK,aACjCuiB,EAAImH,EAAMnH,EAAGjB,EAAGiI,EAAGzpB,EAAGipB,EAAE/oB,EAAI,GAAI,gBAChCF,EAAI4pB,EAAM5pB,EAAGyiB,EAAGjB,EAAGiI,EAAGR,EAAE/oB,EAAI,GAAI,EAAG,YACnCupB,EAAIG,EAAMH,EAAGzpB,EAAGyiB,EAAGjB,EAAGyH,EAAE/oB,EAAI,IAAK,cACjCshB,EAAIoI,EAAMpI,EAAGiI,EAAGzpB,EAAGyiB,EAAGwG,EAAE/oB,EAAI,GAAI,gBAChCuiB,EAAImH,EAAMnH,EAAGjB,EAAGiI,EAAGzpB,EAAGipB,EAAE/oB,EAAI,IAAK,GAAI,YACrCF,EAAI4pB,EAAM5pB,EAAGyiB,EAAGjB,EAAGiI,EAAGR,EAAE/oB,EAAI,GAAI,cAChCupB,EAAIG,EAAMH,EAAGzpB,EAAGyiB,EAAGjB,EAAGyH,EAAE/oB,EAAI,IAAK,gBACjCshB,EAAIoI,EAAMpI,EAAGiI,EAAGzpB,EAAGyiB,EAAGwG,EAAE/oB,EAAI,GAAI,GAAI,WACpCuiB,EAAImH,EAAMnH,EAAGjB,EAAGiI,EAAGzpB,EAAGipB,EAAE/oB,EAAI,GAAI,eAEhCF,EAAIgpB,EAAQhpB,EAAG8pB,GACfrH,EAAIuG,EAAQvG,EAAGsH,GACfvI,EAAIwH,EAAQxH,EAAGwI,GACfP,EAAIT,EAAQS,EAAGQ,EAEjB,QAAQjqB,EAAGyiB,EAAGjB,EAAGiI,GAMnB,QAASS,GAAUhH,GACjB,GAAIhjB,GACAkjB,EAAS,GACT+G,EAA0B,GAAfjH,EAAM3iB,MACrB,KAAKL,EAAI,EAAGA,EAAIiqB,EAAUjqB,GAAK,EAC7BkjB,GAAUC,OAAO+G,aAAclH,EAAMhjB,GAAK,KAAQA,EAAI,GAAO,IAE/D,OAAOkjB,GAOT,QAASiH,GAAUnH,GACjB,GAAIhjB,GACAkjB,IAEJ,KADAA,GAAQF,EAAM3iB,QAAU,GAAK,GAAKyL,OAC7B9L,EAAI,EAAGA,EAAIkjB,EAAO7iB,OAAQL,GAAK,EAClCkjB,EAAOljB,GAAK,CAEd,IAAIoqB,GAAyB,EAAfpH,EAAM3iB,MACpB,KAAKL,EAAI,EAAGA,EAAIoqB,EAASpqB,GAAK,EAC5BkjB,EAAOljB,GAAK,KAAiC,IAA1BgjB,EAAMqH,WAAWrqB,EAAI,KAAeA,EAAI,EAE7D,OAAOkjB,GAMT,QAASoH,GAAQ3qB,GACf,MAAOqqB,GAAUL,EAAQQ,EAAUxqB,GAAe,EAAXA,EAAEU,SAM3C,QAASkqB,GAAY9gB,EAAKzI,GACxB,GAAIhB,GAIAye,EAHA+L,EAAOL,EAAU1gB,GACjBghB,KACAC,IAMJ,KAJAD,EAAK,IAAMC,EAAK,IAAM5e,OAClB0e,EAAKnqB,OAAS,KAChBmqB,EAAOb,EAAQa,EAAmB,EAAb/gB,EAAIpJ,SAEtBL,EAAI,EAAGA,EAAI,GAAIA,GAAK,EACvByqB,EAAKzqB,GAAe,UAAVwqB,EAAKxqB,GACf0qB,EAAK1qB,GAAe,WAAVwqB,EAAKxqB,EAGjB,OADAye,GAAOkL,EAAQc,EAAKvS,OAAOiS,EAAUnpB,IAAQ,IAAoB,EAAdA,EAAKX,QACjD2pB,EAAUL,EAAQe,EAAKxS,OAAOuG,GAAO,MAM9C,QAASkM,GAAS3H,GAChB,GAEI+F,GACA/oB,EAHA4qB,EAAS,mBACT1H,EAAS,EAGb,KAAKljB,EAAI,EAAGA,EAAIgjB,EAAM3iB,OAAQL,GAAK,EACjC+oB,EAAI/F,EAAMqH,WAAWrqB,GACrBkjB,GAAU0H,EAAOC,OAAQ9B,IAAM,EAAK,IAAQ6B,EAAOC,OAAW,GAAJ9B,EAE5D,OAAO7F,GAMT,QAAS4H,GAAa9H,GACpB,MAAO+H,UAAS9Z,mBAAmB+R,IAMrC,QAASgI,GAAOrrB,GACd,MAAO2qB,GAAQQ,EAAanrB,IAE9B,QAASsrB,GAAOtrB,GACd,MAAOgrB,GAASK,EAAOrrB,IAEzB,QAASurB,GAAW1G,EAAG+E,GACrB,MAAOgB,GAAYO,EAAatG,GAAIsG,EAAavB,IAEnD,QAAS4B,GAAW3G,EAAG+E,GACrB,MAAOoB,GAASO,EAAW1G,EAAG+E,IAGhC,QAASniB,GAAIgkB,EAAQ3hB,EAAK4hB,GACxB,MAAK5hB,GAMA4hB,EAGEH,EAAWzhB,EAAK2hB,GAFdD,EAAW1hB,EAAK2hB,GANlBC,EAGEL,EAAOI,GAFLH,EAAOG,GAUpBtsB,EAAOD,QAAUuI,YAEN,EAAE,EAAE,IAAI","file":"raven.min.js"} \ No newline at end of file diff --git a/dist/console,require,vue/raven.js b/dist/console,require,vue/raven.js index f822c1e66b25..a0a88322365b 100644 --- a/dist/console,require,vue/raven.js +++ b/dist/console,require,vue/raven.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.22.2 (1b6187b) | github.com/getsentry/raven-js */ +/*! Raven.js 3.24.2 (540f32b) | github.com/getsentry/raven-js */ /* * Includes TraceKit @@ -10,3227 +10,3997 @@ * */ -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : - typeof define === 'function' && define.amd ? define(factory) : - (global.Raven = factory()); -}(this, (function () { 'use strict'; - -var commonjsGlobal = typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; - -function commonjsRequire () { - throw new Error('Dynamic requires are not currently supported by rollup-plugin-commonjs'); -} +(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.Raven = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o' : 'anonymous component') + + (vm._isVue && vm.$options.__file ? ' at ' + vm.$options.__file : '') + ); } -function isPlainObject(what) { - return Object.prototype.toString.call(what) === '[object Object]'; -} +function vuePlugin(Raven, Vue) { + Vue = Vue || window.Vue; -function isString$1(what) { - return Object.prototype.toString.call(what) === '[object String]'; -} + // quit if Vue isn't on the page + if (!Vue || !Vue.config) return; -function isArray$1(what) { - return Object.prototype.toString.call(what) === '[object Array]'; -} + var _oldOnError = Vue.config.errorHandler; + Vue.config.errorHandler = function VueErrorHandler(error, vm, info) { + var metaData = {}; -function isEmptyObject$1(what) { - if (!isPlainObject(what)) return false; + // vm and lifecycleHook are not always available + if (Object.prototype.toString.call(vm) === '[object Object]') { + metaData.componentName = formatComponentName(vm); + metaData.propsData = vm.$options.propsData; + } - for (var _ in what) { - if (what.hasOwnProperty(_)) { - return false; + if (typeof info !== 'undefined') { + metaData.lifecycleHook = info; } - } - return true; + Raven.captureException(error, { + extra: metaData + }); + + if (typeof _oldOnError === 'function') { + _oldOnError.call(this, error, vm, info); + } + }; } -function supportsErrorEvent() { - try { - new ErrorEvent(''); // eslint-disable-line no-new +module.exports = vuePlugin; - return true; - } catch (e) { - return false; - } +_dereq_(7).addPlugin(module.exports); +},{"7":7}],4:[function(_dereq_,module,exports){ +function RavenConfigError(message) { + this.name = 'RavenConfigError'; + this.message = message; } +RavenConfigError.prototype = new Error(); +RavenConfigError.prototype.constructor = RavenConfigError; -function supportsFetch$1() { - if (!('fetch' in _window$3)) return false; - - try { - new Headers(); // eslint-disable-line no-new +module.exports = RavenConfigError; - new Request(''); // eslint-disable-line no-new +},{}],5:[function(_dereq_,module,exports){ +var utils = _dereq_(8); - new Response(); // eslint-disable-line no-new +var wrapMethod = function(console, level, callback) { + var originalConsoleLevel = console[level]; + var originalConsole = console; - return true; - } catch (e) { - return false; + if (!(level in console)) { + return; } -} - -function wrappedCallback(callback) { - function dataCallback(data, original) { - var normalizedData = callback(data) || data; - - if (original) { - return original(normalizedData) || normalizedData; - } - return normalizedData; - } + var sentryLevel = level === 'warn' ? 'warning' : level; - return dataCallback; -} + console[level] = function() { + var args = [].slice.call(arguments); -function each$1(obj, callback) { - var i, j; + var msg = utils.safeJoin(args, ' '); + var data = {level: sentryLevel, logger: 'console', extra: {arguments: args}}; - if (isUndefined$1(obj.length)) { - for (i in obj) { - if (hasKey$1(obj, i)) { - callback.call(null, i, obj[i]); + if (level === 'assert') { + if (args[0] === false) { + // Default browsers message + msg = + 'Assertion failed: ' + (utils.safeJoin(args.slice(1), ' ') || 'console.assert'); + data.extra.arguments = args.slice(1); + callback && callback(msg, data); } + } else { + callback && callback(msg, data); } - } else { - j = obj.length; - if (j) { - for (i = 0; i < j; i++) { - callback.call(null, i, obj[i]); - } + // this fails for some browsers. :( + if (originalConsoleLevel) { + // IE9 doesn't allow calling apply on console functions directly + // See: https://stackoverflow.com/questions/5472938/does-ie9-support-console-log-and-is-it-a-real-function#answer-5473193 + Function.prototype.apply.call(originalConsoleLevel, originalConsole, args); } - } -} - -function objectMerge$1(obj1, obj2) { - if (!obj2) { - return obj1; - } + }; +}; - each$1(obj2, function (key, value) { - obj1[key] = value; - }); - return obj1; -} -/** - * This function is only used for react-native. - * react-native freezes object that have already been sent over the - * js bridge. We need this function in order to check if the object is frozen. - * So it's ok that objectFrozen returns false if Object.isFrozen is not - * supported because it's not relevant for other "platforms". See related issue: - * https://github.com/getsentry/react-native-sentry/issues/57 - */ +module.exports = { + wrapMethod: wrapMethod +}; +},{"8":8}],6:[function(_dereq_,module,exports){ +(function (global){ +/*global XDomainRequest:false */ -function objectFrozen$1(obj) { - if (!Object.isFrozen) { - return false; - } +var TraceKit = _dereq_(9); +var stringify = _dereq_(10); +var md5 = _dereq_(11); +var RavenConfigError = _dereq_(4); - return Object.isFrozen(obj); -} +var utils = _dereq_(8); +var isError = utils.isError; +var isObject = utils.isObject; +var isPlainObject = utils.isPlainObject; +var isErrorEvent = utils.isErrorEvent; +var isUndefined = utils.isUndefined; +var isFunction = utils.isFunction; +var isString = utils.isString; +var isArray = utils.isArray; +var isEmptyObject = utils.isEmptyObject; +var each = utils.each; +var objectMerge = utils.objectMerge; +var truncate = utils.truncate; +var objectFrozen = utils.objectFrozen; +var hasKey = utils.hasKey; +var joinRegExp = utils.joinRegExp; +var urlencode = utils.urlencode; +var uuid4 = utils.uuid4; +var htmlTreeAsString = utils.htmlTreeAsString; +var isSameException = utils.isSameException; +var isSameStacktrace = utils.isSameStacktrace; +var parseUrl = utils.parseUrl; +var fill = utils.fill; +var supportsFetch = utils.supportsFetch; +var supportsReferrerPolicy = utils.supportsReferrerPolicy; +var serializeKeysForMessage = utils.serializeKeysForMessage; +var serializeException = utils.serializeException; +var sanitize = utils.sanitize; -function truncate$1(str, max) { - return !max || str.length <= max ? str : str.substr(0, max) + "\u2026"; -} -/** - * hasKey, a better form of hasOwnProperty - * Example: hasKey(MainHostObject, property) === true/false - * - * @param {Object} host object to check property - * @param {string} key to check - */ +var wrapConsoleMethod = _dereq_(5).wrapMethod; +var dsnKeys = 'source protocol user pass host port path'.split(' '), + dsnPattern = /^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/; -function hasKey$1(object, key) { - return Object.prototype.hasOwnProperty.call(object, key); +function now() { + return +new Date(); } -function joinRegExp$1(patterns) { - // Combine an array of regular expressions and strings into one large regexp - // Be mad. - var sources = [], - i = 0, - len = patterns.length, - pattern; - - for (; i < len; i++) { - pattern = patterns[i]; - - if (isString$1(pattern)) { - // If it's a string, we need to escape it - // Taken from: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions - sources.push(pattern.replace(/([.*+?^=!:${}()|\[\]\/\\])/g, '\\$1')); - } else if (pattern && pattern.source) { - // If it's a regexp already, we want to extract the source - sources.push(pattern.source); - } // Intentionally skip other cases - - } +// This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) +var _window = + typeof window !== 'undefined' + ? window + : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; +var _document = _window.document; +var _navigator = _window.navigator; - return new RegExp(sources.join('|'), 'i'); +function keepOriginalCallback(original, callback) { + return isFunction(callback) + ? function(data) { + return callback(data, original); + } + : callback; } -function urlencode$1(o) { - var pairs = []; - each$1(o, function (key, value) { - pairs.push(encodeURIComponent(key) + '=' + encodeURIComponent(value)); - }); - return pairs.join('&'); -} // borrowed from https://tools.ietf.org/html/rfc3986#appendix-B -// intentionally using regex and not href parsing trick because React Native and other -// environments where DOM might not be available - - -function parseUrl$1(url) { - if (typeof url !== 'string') return {}; - var match = url.match(/^(([^:\/?#]+):)?(\/\/([^\/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?$/); // coerce to undefined values to empty string so we don't get 'undefined' - - var query = match[6] || ''; - var fragment = match[8] || ''; - return { - protocol: match[2], - host: match[4], - path: match[5], - relative: match[5] + query + fragment // everything minus origin - +// First, check for JSON support +// If there is no JSON, we no-op the core features of Raven +// since JSON is required to encode the payload +function Raven() { + this._hasJSON = !!(typeof JSON === 'object' && JSON.stringify); + // Raven can run in contexts where there's no document (react-native) + this._hasDocument = !isUndefined(_document); + this._hasNavigator = !isUndefined(_navigator); + this._lastCapturedException = null; + this._lastData = null; + this._lastEventId = null; + this._globalServer = null; + this._globalKey = null; + this._globalProject = null; + this._globalContext = {}; + this._globalOptions = { + // SENTRY_RELEASE can be injected by https://github.com/getsentry/sentry-webpack-plugin + release: _window.SENTRY_RELEASE && _window.SENTRY_RELEASE.id, + logger: 'javascript', + ignoreErrors: [], + ignoreUrls: [], + whitelistUrls: [], + includePaths: [], + headers: null, + collectWindowErrors: true, + captureUnhandledRejections: true, + maxMessageLength: 0, + // By default, truncates URL values to 250 chars + maxUrlLength: 250, + stackTraceLimit: 50, + autoBreadcrumbs: true, + instrument: true, + sampleRate: 1, + sanitizeKeys: [] }; -} - -function uuid4$1() { - var crypto = _window$3.crypto || _window$3.msCrypto; - - if (!isUndefined$1(crypto) && crypto.getRandomValues) { - // Use window.crypto API if available - // eslint-disable-next-line no-undef - var arr = new Uint16Array(8); - crypto.getRandomValues(arr); // set 4 in byte 7 - - arr[3] = arr[3] & 0xfff | 0x4000; // set 2 most significant bits of byte 9 to '10' - - arr[4] = arr[4] & 0x3fff | 0x8000; - - var pad = function pad(num) { - var v = num.toString(16); - - while (v.length < 4) { - v = '0' + v; - } - - return v; - }; + this._fetchDefaults = { + method: 'POST', + keepalive: true, + // Despite all stars in the sky saying that Edge supports old draft syntax, aka 'never', 'always', 'origin' and 'default + // https://caniuse.com/#feat=referrer-policy + // It doesn't. And it throw exception instead of ignoring this parameter... + // REF: https://github.com/getsentry/raven-js/issues/1233 + referrerPolicy: supportsReferrerPolicy() ? 'origin' : '' + }; + this._ignoreOnError = 0; + this._isRavenInstalled = false; + this._originalErrorStackTraceLimit = Error.stackTraceLimit; + // capture references to window.console *and* all its methods first + // before the console plugin has a chance to monkey patch + this._originalConsole = _window.console || {}; + this._originalConsoleMethods = {}; + this._plugins = []; + this._startTime = now(); + this._wrappedBuiltIns = []; + this._breadcrumbs = []; + this._lastCapturedEvent = null; + this._keypressTimeout; + this._location = _window.location; + this._lastHref = this._location && this._location.href; + this._resetBackoff(); - return pad(arr[0]) + pad(arr[1]) + pad(arr[2]) + pad(arr[3]) + pad(arr[4]) + pad(arr[5]) + pad(arr[6]) + pad(arr[7]); - } else { - // http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/2117523#2117523 - return 'xxxxxxxxxxxx4xxxyxxxxxxxxxxxxxxx'.replace(/[xy]/g, function (c) { - var r = Math.random() * 16 | 0, - v = c === 'x' ? r : r & 0x3 | 0x8; - return v.toString(16); - }); + // eslint-disable-next-line guard-for-in + for (var method in this._originalConsole) { + this._originalConsoleMethods[method] = this._originalConsole[method]; } } -/** - * Given a child DOM element, returns a query-selector statement describing that - * and its ancestors - * e.g. [HTMLElement] => body > div > input#foo.btn[name=baz] - * @param elem - * @returns {string} - */ - -function htmlTreeAsString$1(elem) { - /* eslint no-extra-parens:0*/ - var MAX_TRAVERSE_HEIGHT = 5, - MAX_OUTPUT_LEN = 80, - out = [], - height = 0, - len = 0, - separator = ' > ', - sepLength = separator.length, - nextStr; +/* + * The core Raven singleton + * + * @this {Raven} + */ - while (elem && height++ < MAX_TRAVERSE_HEIGHT) { - nextStr = htmlElementAsString(elem); // bail out if - // - nextStr is the 'html' element - // - the length of the string that would be created exceeds MAX_OUTPUT_LEN - // (ignore this limit if we are on the first iteration) +Raven.prototype = { + // Hardcode version string so that raven source can be loaded directly via + // webpack (using a build step causes webpack #1617). Grunt verifies that + // this value matches package.json during build. + // See: https://github.com/getsentry/raven-js/issues/465 + VERSION: '3.24.2', - if (nextStr === 'html' || height > 1 && len + out.length * sepLength + nextStr.length >= MAX_OUTPUT_LEN) { - break; - } + debug: false, - out.push(nextStr); - len += nextStr.length; - elem = elem.parentNode; - } + TraceKit: TraceKit, // alias to TraceKit - return out.reverse().join(separator); -} -/** - * Returns a simple, query-selector representation of a DOM element - * e.g. [HTMLElement] => input#foo.btn[name=baz] - * @param HTMLElement - * @returns {string} - */ + /* + * Configure Raven with a DSN and extra options + * + * @param {string} dsn The public Sentry DSN + * @param {object} options Set of global options [optional] + * @return {Raven} + */ + config: function(dsn, options) { + var self = this; + if (self._globalServer) { + this._logDebug('error', 'Error: Raven has already been configured'); + return self; + } + if (!dsn) return self; -function htmlElementAsString(elem) { - var out = [], - className, - classes, - key, - attr, - i; + var globalOptions = self._globalOptions; - if (!elem || !elem.tagName) { - return ''; - } + // merge in options + if (options) { + each(options, function(key, value) { + // tags and extra are special and need to be put into context + if (key === 'tags' || key === 'extra' || key === 'user') { + self._globalContext[key] = value; + } else { + globalOptions[key] = value; + } + }); + } - out.push(elem.tagName.toLowerCase()); + self.setDSN(dsn); - if (elem.id) { - out.push('#' + elem.id); - } + // "Script error." is hard coded into browsers for errors that it can't read. + // this is the result of a script being pulled in from an external domain and CORS. + globalOptions.ignoreErrors.push(/^Script error\.?$/); + globalOptions.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/); - className = elem.className; + // join regexp rules into one big rule + globalOptions.ignoreErrors = joinRegExp(globalOptions.ignoreErrors); + globalOptions.ignoreUrls = globalOptions.ignoreUrls.length + ? joinRegExp(globalOptions.ignoreUrls) + : false; + globalOptions.whitelistUrls = globalOptions.whitelistUrls.length + ? joinRegExp(globalOptions.whitelistUrls) + : false; + globalOptions.includePaths = joinRegExp(globalOptions.includePaths); + globalOptions.maxBreadcrumbs = Math.max( + 0, + Math.min(globalOptions.maxBreadcrumbs || 100, 100) + ); // default and hard limit is 100 - if (className && isString$1(className)) { - classes = className.split(/\s+/); + var autoBreadcrumbDefaults = { + xhr: true, + console: true, + dom: true, + location: true, + sentry: true + }; - for (i = 0; i < classes.length; i++) { - out.push('.' + classes[i]); + var autoBreadcrumbs = globalOptions.autoBreadcrumbs; + if ({}.toString.call(autoBreadcrumbs) === '[object Object]') { + autoBreadcrumbs = objectMerge(autoBreadcrumbDefaults, autoBreadcrumbs); + } else if (autoBreadcrumbs !== false) { + autoBreadcrumbs = autoBreadcrumbDefaults; } - } - - var attrWhitelist = ['type', 'name', 'title', 'alt']; + globalOptions.autoBreadcrumbs = autoBreadcrumbs; - for (i = 0; i < attrWhitelist.length; i++) { - key = attrWhitelist[i]; - attr = elem.getAttribute(key); + var instrumentDefaults = { + tryCatch: true + }; - if (attr) { - out.push('[' + key + '="' + attr + '"]'); + var instrument = globalOptions.instrument; + if ({}.toString.call(instrument) === '[object Object]') { + instrument = objectMerge(instrumentDefaults, instrument); + } else if (instrument !== false) { + instrument = instrumentDefaults; } - } + globalOptions.instrument = instrument; - return out.join(''); -} -/** - * Returns true if either a OR b is truthy, but not both - */ + TraceKit.collectWindowErrors = !!globalOptions.collectWindowErrors; + // return for chaining + return self; + }, -function isOnlyOneTruthy(a, b) { - return !!(!!a ^ !!b); -} -/** - * Returns true if both parameters are undefined - */ + /* + * Installs a global window.onerror error handler + * to capture and report uncaught exceptions. + * At this point, install() is required to be called due + * to the way TraceKit is set up. + * + * @return {Raven} + */ + install: function() { + var self = this; + if (self.isSetup() && !self._isRavenInstalled) { + TraceKit.report.subscribe(function() { + self._handleOnErrorStackInfo.apply(self, arguments); + }); + if (self._globalOptions.captureUnhandledRejections) { + self._attachPromiseRejectionHandler(); + } -function isBothUndefined(a, b) { - return isUndefined$1(a) && isUndefined$1(b); -} -/** - * Returns true if the two input exception interfaces have the same content - */ + self._patchFunctionToString(); + if (self._globalOptions.instrument && self._globalOptions.instrument.tryCatch) { + self._instrumentTryCatch(); + } -function isSameException$1(ex1, ex2) { - if (isOnlyOneTruthy(ex1, ex2)) return false; - ex1 = ex1.values[0]; - ex2 = ex2.values[0]; - if (ex1.type !== ex2.type || ex1.value !== ex2.value) return false; // in case both stacktraces are undefined, we can't decide so default to false + if (self._globalOptions.autoBreadcrumbs) self._instrumentBreadcrumbs(); - if (isBothUndefined(ex1.stacktrace, ex2.stacktrace)) return false; - return isSameStacktrace$1(ex1.stacktrace, ex2.stacktrace); -} -/** - * Returns true if the two input stack trace interfaces have the same content - */ + // Install all of the plugins + self._drainPlugins(); + self._isRavenInstalled = true; + } -function isSameStacktrace$1(stack1, stack2) { - if (isOnlyOneTruthy(stack1, stack2)) return false; - var frames1 = stack1.frames; - var frames2 = stack2.frames; // Exit early if frame count differs + Error.stackTraceLimit = self._globalOptions.stackTraceLimit; + return this; + }, - if (frames1.length !== frames2.length) return false; // Iterate through every frame; bail out if anything differs + /* + * Set the DSN (can be called multiple time unlike config) + * + * @param {string} dsn The public Sentry DSN + */ + setDSN: function(dsn) { + var self = this, + uri = self._parseDSN(dsn), + lastSlash = uri.path.lastIndexOf('/'), + path = uri.path.substr(1, lastSlash); - var a, b; + self._dsn = dsn; + self._globalKey = uri.user; + self._globalSecret = uri.pass && uri.pass.substr(1); + self._globalProject = uri.path.substr(lastSlash + 1); - for (var i = 0; i < frames1.length; i++) { - a = frames1[i]; - b = frames2[i]; - if (a.filename !== b.filename || a.lineno !== b.lineno || a.colno !== b.colno || a['function'] !== b['function']) return false; - } + self._globalServer = self._getGlobalServer(uri); - return true; -} -/** - * Polyfill a method - * @param obj object e.g. `document` - * @param name method name present on object e.g. `addEventListener` - * @param replacement replacement function - * @param track {optional} record instrumentation to an array - */ + self._globalEndpoint = + self._globalServer + '/' + path + 'api/' + self._globalProject + '/store/'; + // Reset backoff state since we may be pointing at a + // new project/server + this._resetBackoff(); + }, -function fill$1(obj, name, replacement, track) { - var orig = obj[name]; - obj[name] = replacement(orig); - obj[name].__raven__ = true; - obj[name].__orig__ = orig; + /* + * Wrap code within a context so Raven can capture errors + * reliably across domains that is executed immediately. + * + * @param {object} options A specific set of options for this context [optional] + * @param {function} func The callback to be immediately executed within the context + * @param {array} args An array of arguments to be called with the callback [optional] + */ + context: function(options, func, args) { + if (isFunction(options)) { + args = func || []; + func = options; + options = undefined; + } - if (track) { - track.push([obj, name, orig]); - } -} -/** - * Join values in array - * @param input array of values to be joined together - * @param delimiter string to be placed in-between values - * @returns {string} - */ + return this.wrap(options, func).apply(this, args); + }, + + /* + * Wrap code within a context and returns back a new function to be executed + * + * @param {object} options A specific set of options for this context [optional] + * @param {function} func The function to be wrapped in a new context + * @param {function} func A function to call before the try/catch wrapper [optional, private] + * @return {function} The newly wrapped functions with a context + */ + wrap: function(options, func, _before) { + var self = this; + // 1 argument has been passed, and it's not a function + // so just return it + if (isUndefined(func) && !isFunction(options)) { + return options; + } + // options is optional + if (isFunction(options)) { + func = options; + options = undefined; + } -function safeJoin(input, delimiter) { - if (!isArray$1(input)) return ''; - var output = []; + // At this point, we've passed along 2 arguments, and the second one + // is not a function either, so we'll just return the second argument. + if (!isFunction(func)) { + return func; + } - for (var i = 0; i < input.length; i++) { + // We don't wanna wrap it twice! try { - output.push(String(input[i])); + if (func.__raven__) { + return func; + } + + // If this has already been wrapped in the past, return that + if (func.__raven_wrapper__) { + return func.__raven_wrapper__; + } } catch (e) { - output.push('[value cannot be serialized]'); + // Just accessing custom props in some Selenium environments + // can cause a "Permission denied" exception (see raven-js#495). + // Bail on wrapping and return the function as-is (defers to window.onerror). + return func; } - } - - return output.join(delimiter); -} -var utils = { - isObject: isObject$1, - isError: isError$1, - isErrorEvent: isErrorEvent$1, - isUndefined: isUndefined$1, - isFunction: isFunction$1, - isPlainObject: isPlainObject, - isString: isString$1, - isArray: isArray$1, - isEmptyObject: isEmptyObject$1, - supportsErrorEvent: supportsErrorEvent, - supportsFetch: supportsFetch$1, - wrappedCallback: wrappedCallback, - each: each$1, - objectMerge: objectMerge$1, - truncate: truncate$1, - objectFrozen: objectFrozen$1, - hasKey: hasKey$1, - joinRegExp: joinRegExp$1, - urlencode: urlencode$1, - uuid4: uuid4$1, - htmlTreeAsString: htmlTreeAsString$1, - htmlElementAsString: htmlElementAsString, - isSameException: isSameException$1, - isSameStacktrace: isSameStacktrace$1, - parseUrl: parseUrl$1, - fill: fill$1, - safeJoin: safeJoin -}; + function wrapped() { + var args = [], + i = arguments.length, + deep = !options || (options && options.deep !== false); -/* - TraceKit - Cross brower stack traces + if (_before && isFunction(_before)) { + _before.apply(this, arguments); + } - This was originally forked from github.com/occ/TraceKit, but has since been - largely re-written and is now maintained as part of raven-js. Tests for - this are in test/vendor. + // Recursively wrap all of a function's arguments that are + // functions themselves. + while (i--) args[i] = deep ? self.wrap(options, arguments[i]) : arguments[i]; - MIT license -*/ + try { + // Attempt to invoke user-land function + // NOTE: If you are a Sentry user, and you are seeing this stack frame, it + // means Raven caught an error invoking your application code. This is + // expected behavior and NOT indicative of a bug with Raven.js. + return func.apply(this, args); + } catch (e) { + self._ignoreNextOnError(); + self.captureException(e, options); + throw e; + } + } -var TraceKit = { - collectWindowErrors: true, - debug: false -}; // This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) + // copy over properties of the old function + for (var property in func) { + if (hasKey(func, property)) { + wrapped[property] = func[property]; + } + } + wrapped.prototype = func.prototype; -var _window$2 = typeof window !== 'undefined' ? window : typeof commonjsGlobal !== 'undefined' ? commonjsGlobal : typeof self !== 'undefined' ? self : {}; // global reference to slice + func.__raven_wrapper__ = wrapped; + // Signal that this function has been wrapped/filled already + // for both debugging and to prevent it to being wrapped/filled twice + wrapped.__raven__ = true; + wrapped.__orig__ = func; + return wrapped; + }, -var _slice = [].slice; -var UNKNOWN_FUNCTION = '?'; // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error#Error_types + /** + * Uninstalls the global error handler. + * + * @return {Raven} + */ + uninstall: function() { + TraceKit.report.uninstall(); -var ERROR_TYPES_RE = /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/; + this._detachPromiseRejectionHandler(); + this._unpatchFunctionToString(); + this._restoreBuiltIns(); + this._restoreConsole(); -function getLocationHref() { - if (typeof document === 'undefined' || document.location == null) return ''; - return document.location.href; -} -/** - * TraceKit.report: cross-browser processing of unhandled exceptions - * - * Syntax: - * TraceKit.report.subscribe(function(stackInfo) { ... }) - * TraceKit.report.unsubscribe(function(stackInfo) { ... }) - * TraceKit.report(exception) - * try { ...code... } catch(ex) { TraceKit.report(ex); } - * - * Supports: - * - Firefox: full stack trace with line numbers, plus column number - * on top frame; column number is not guaranteed - * - Opera: full stack trace with line and column numbers - * - Chrome: full stack trace with line and column numbers - * - Safari: line and column number for the top frame only; some frames - * may be missing, and column number is not guaranteed - * - IE: line and column number for the top frame only; some frames - * may be missing, and column number is not guaranteed - * - * In theory, TraceKit should work on all of the following versions: - * - IE5.5+ (only 8.0 tested) - * - Firefox 0.9+ (only 3.5+ tested) - * - Opera 7+ (only 10.50 tested; versions 9 and earlier may require - * Exceptions Have Stacktrace to be enabled in opera:config) - * - Safari 3+ (only 4+ tested) - * - Chrome 1+ (only 5+ tested) - * - Konqueror 3.5+ (untested) - * - * Requires TraceKit.computeStackTrace. - * - * Tries to catch all unhandled exceptions and report them to the - * subscribed handlers. Please note that TraceKit.report will rethrow the - * exception. This is REQUIRED in order to get a useful stack trace in IE. - * If the exception does not reach the top of the browser, you will only - * get a stack trace from the point where TraceKit.report was called. - * - * Handlers receive a stackInfo object as described in the - * TraceKit.computeStackTrace docs. - */ + Error.stackTraceLimit = this._originalErrorStackTraceLimit; + this._isRavenInstalled = false; + return this; + }, -TraceKit.report = function reportModuleWrapper() { - var handlers = [], - lastArgs = null, - lastException = null, - lastExceptionStack = null; /** - * Add a crash handler. - * @param {Function} handler - */ + * Callback used for `unhandledrejection` event + * + * @param {PromiseRejectionEvent} event An object containing + * promise: the Promise that was rejected + * reason: the value with which the Promise was rejected + * @return void + */ + _promiseRejectionHandler: function(event) { + this._logDebug('debug', 'Raven caught unhandled promise rejection:', event); + this.captureException(event.reason, { + extra: { + unhandledPromiseRejection: true + } + }); + }, - function subscribe(handler) { - installGlobalHandler(); - handlers.push(handler); - } /** - * Remove a crash handler. - * @param {Function} handler - */ + * Installs the global promise rejection handler. + * + * @return {raven} + */ + _attachPromiseRejectionHandler: function() { + this._promiseRejectionHandler = this._promiseRejectionHandler.bind(this); + _window.addEventListener && + _window.addEventListener('unhandledrejection', this._promiseRejectionHandler); + return this; + }, + /** + * Uninstalls the global promise rejection handler. + * + * @return {raven} + */ + _detachPromiseRejectionHandler: function() { + _window.removeEventListener && + _window.removeEventListener('unhandledrejection', this._promiseRejectionHandler); + return this; + }, - function unsubscribe(handler) { - for (var i = handlers.length - 1; i >= 0; --i) { - if (handlers[i] === handler) { - handlers.splice(i, 1); + /** + * Manually capture an exception and send it over to Sentry + * + * @param {error} ex An exception to be logged + * @param {object} options A specific set of options for this error [optional] + * @return {Raven} + */ + captureException: function(ex, options) { + options = objectMerge({trimHeadFrames: 0}, options ? options : {}); + + if (isErrorEvent(ex) && ex.error) { + // If it is an ErrorEvent with `error` property, extract it to get actual Error + ex = ex.error; + } else if (isError(ex)) { + // we have a real Error object + ex = ex; + } else if (isPlainObject(ex)) { + // If it is plain Object, serialize it manually and extract options + // This will allow us to group events based on top-level keys + // which is much better than creating new group when any key/value change + options = this._getCaptureExceptionOptionsFromPlainObject(options, ex); + ex = new Error(options.message); + } else { + // If none of previous checks were valid, then it means that + // it's not a plain Object + // it's not a valid ErrorEvent (one with an error property) + // it's not an Error + // So bail out and capture it as a simple message: + return this.captureMessage( + ex, + objectMerge(options, { + stacktrace: true, // if we fall back to captureMessage, default to attempting a new trace + trimHeadFrames: options.trimHeadFrames + 1 + }) + ); + } + + // Store the raw exception object for potential debugging and introspection + this._lastCapturedException = ex; + + // TraceKit.report will re-raise any exception passed to it, + // which means you have to wrap it in try/catch. Instead, we + // can wrap it here and only re-raise if TraceKit.report + // raises an exception different from the one we asked to + // report on. + try { + var stack = TraceKit.computeStackTrace(ex); + this._handleStackInfo(stack, options); + } catch (ex1) { + if (ex !== ex1) { + throw ex1; } } - } - /** - * Remove all crash handlers. - */ - - function unsubscribeAll() { - uninstallGlobalHandler(); - handlers = []; - } - /** - * Dispatch stack information to all handlers. - * @param {Object.} stack - */ + return this; + }, + _getCaptureExceptionOptionsFromPlainObject: function(currentOptions, ex) { + var exKeys = Object.keys(ex).sort(); + var options = objectMerge(currentOptions, { + message: + 'Non-Error exception captured with keys: ' + serializeKeysForMessage(exKeys), + fingerprint: [md5(exKeys)], + extra: currentOptions.extra || {} + }); + options.extra.__serialized__ = serializeException(ex); - function notifyHandlers(stack, isWindowError) { - var exception = null; + return options; + }, - if (isWindowError && !TraceKit.collectWindowErrors) { + /* + * Manually send a message to Sentry + * + * @param {string} msg A plain message to be captured in Sentry + * @param {object} options A specific set of options for this message [optional] + * @return {Raven} + */ + captureMessage: function(msg, options) { + // config() automagically converts ignoreErrors from a list to a RegExp so we need to test for an + // early call; we'll error on the side of logging anything called before configuration since it's + // probably something you should see: + if ( + !!this._globalOptions.ignoreErrors.test && + this._globalOptions.ignoreErrors.test(msg) + ) { return; } - for (var i in handlers) { - if (handlers.hasOwnProperty(i)) { - try { - handlers[i].apply(null, [stack].concat(_slice.call(arguments, 2))); - } catch (inner) { - exception = inner; - } - } - } - - if (exception) { - throw exception; - } - } - - var _oldOnerrorHandler, _onErrorHandlerInstalled; - /** - * Ensures all global unhandled exceptions are recorded. - * Supported by Gecko and IE. - * @param {string} msg Error message. - * @param {string} url URL of script that generated the exception. - * @param {(number|string)} lineNo The line number at which the error - * occurred. - * @param {?(number|string)} colNo The column number at which the error - * occurred. - * @param {?Error} ex The actual Error object. - */ + options = options || {}; + msg = msg + ''; // Make sure it's actually a string + var data = objectMerge( + { + message: msg + }, + options + ); - function traceKitWindowOnError(msg, url, lineNo, colNo, ex) { - var stack = null; // If 'ex' is ErrorEvent, get real Error from inside - - var exception = utils.isErrorEvent(ex) ? ex.error : ex; // If 'msg' is ErrorEvent, get real message from inside + var ex; + // Generate a "synthetic" stack trace from this point. + // NOTE: If you are a Sentry user, and you are seeing this stack frame, it is NOT indicative + // of a bug with Raven.js. Sentry generates synthetic traces either by configuration, + // or if it catches a thrown object without a "stack" property. + try { + throw new Error(msg); + } catch (ex1) { + ex = ex1; + } - var message = utils.isErrorEvent(msg) ? msg.message : msg; + // null exception name so `Error` isn't prefixed to msg + ex.name = null; + var stack = TraceKit.computeStackTrace(ex); - if (lastExceptionStack) { - TraceKit.computeStackTrace.augmentStackTraceWithInitialElement(lastExceptionStack, url, lineNo, message); - processLastException(); - } else if (exception && utils.isError(exception)) { - // non-string `exception` arg; attempt to extract stack trace - // New chrome and blink send along a real error object - // Let's just report that like a normal error. - // See: https://mikewest.org/2013/08/debugging-runtime-errors-with-window-onerror - stack = TraceKit.computeStackTrace(exception); - notifyHandlers(stack, true); - } else { - var location = { - url: url, - line: lineNo, - column: colNo - }; - var name = undefined; - var groups; + // stack[0] is `throw new Error(msg)` call itself, we are interested in the frame that was just before that, stack[1] + var initialCall = isArray(stack.stack) && stack.stack[1]; - if ({}.toString.call(message) === '[object String]') { - var groups = message.match(ERROR_TYPES_RE); + // if stack[1] is `Raven.captureException`, it means that someone passed a string to it and we redirected that call + // to be handled by `captureMessage`, thus `initialCall` is the 3rd one, not 2nd + // initialCall => captureException(string) => captureMessage(string) + if (initialCall && initialCall.func === 'Raven.captureException') { + initialCall = stack.stack[2]; + } - if (groups) { - name = groups[1]; - message = groups[2]; - } - } + var fileurl = (initialCall && initialCall.url) || ''; - location.func = UNKNOWN_FUNCTION; - stack = { - name: name, - message: message, - url: getLocationHref(), - stack: [location] - }; - notifyHandlers(stack, true); + if ( + !!this._globalOptions.ignoreUrls.test && + this._globalOptions.ignoreUrls.test(fileurl) + ) { + return; } - if (_oldOnerrorHandler) { - return _oldOnerrorHandler.apply(this, arguments); + if ( + !!this._globalOptions.whitelistUrls.test && + !this._globalOptions.whitelistUrls.test(fileurl) + ) { + return; } - return false; - } + if (this._globalOptions.stacktrace || (options && options.stacktrace)) { + // fingerprint on msg, not stack trace (legacy behavior, could be revisited) + data.fingerprint = data.fingerprint == null ? msg : data.fingerprint; - function installGlobalHandler() { - if (_onErrorHandlerInstalled) { - return; - } + options = objectMerge( + { + trimHeadFrames: 0 + }, + options + ); + // Since we know this is a synthetic trace, the top frame (this function call) + // MUST be from Raven.js, so mark it for trimming + // We add to the trim counter so that callers can choose to trim extra frames, such + // as utility functions. + options.trimHeadFrames += 1; - _oldOnerrorHandler = _window$2.onerror; - _window$2.onerror = traceKitWindowOnError; - _onErrorHandlerInstalled = true; - } + var frames = this._prepareFrames(stack, options); + data.stacktrace = { + // Sentry expects frames oldest to newest + frames: frames.reverse() + }; + } - function uninstallGlobalHandler() { - if (!_onErrorHandlerInstalled) { - return; + // Make sure that fingerprint is always wrapped in an array + if (data.fingerprint) { + data.fingerprint = isArray(data.fingerprint) + ? data.fingerprint + : [data.fingerprint]; } - _window$2.onerror = _oldOnerrorHandler; - _onErrorHandlerInstalled = false; - _oldOnerrorHandler = undefined; - } + // Fire away! + this._send(data); - function processLastException() { - var _lastExceptionStack = lastExceptionStack, - _lastArgs = lastArgs; - lastArgs = null; - lastExceptionStack = null; - lastException = null; - notifyHandlers.apply(null, [_lastExceptionStack, false].concat(_lastArgs)); - } - /** - * Reports an unhandled Error to TraceKit. - * @param {Error} ex - * @param {?boolean} rethrow If false, do not re-throw the exception. - * Only used for window.onerror to not cause an infinite loop of - * rethrowing. - */ + return this; + }, + captureBreadcrumb: function(obj) { + var crumb = objectMerge( + { + timestamp: now() / 1000 + }, + obj + ); - function report(ex, rethrow) { - var args = _slice.call(arguments, 1); + if (isFunction(this._globalOptions.breadcrumbCallback)) { + var result = this._globalOptions.breadcrumbCallback(crumb); - if (lastExceptionStack) { - if (lastException === ex) { - return; // already caught by an inner catch block, ignore - } else { - processLastException(); + if (isObject(result) && !isEmptyObject(result)) { + crumb = result; + } else if (result === false) { + return this; } } - var stack = TraceKit.computeStackTrace(ex); - lastExceptionStack = stack; - lastException = ex; - lastArgs = args; // If the stack trace is incomplete, wait for 2 seconds for - // slow slow IE to see if onerror occurs or not before reporting - // this exception; otherwise, we will end up with an incomplete - // stack trace + this._breadcrumbs.push(crumb); + if (this._breadcrumbs.length > this._globalOptions.maxBreadcrumbs) { + this._breadcrumbs.shift(); + } + return this; + }, - setTimeout(function () { - if (lastException === ex) { - processLastException(); - } - }, stack.incomplete ? 2000 : 0); + addPlugin: function(plugin /*arg1, arg2, ... argN*/) { + var pluginArgs = [].slice.call(arguments, 1); - if (rethrow !== false) { - throw ex; // re-throw to propagate to the top level (and cause window.onerror) + this._plugins.push([plugin, pluginArgs]); + if (this._isRavenInstalled) { + this._drainPlugins(); } - } - report.subscribe = subscribe; - report.unsubscribe = unsubscribe; - report.uninstall = unsubscribeAll; - return report; -}(); -/** - * TraceKit.computeStackTrace: cross-browser stack traces in JavaScript - * - * Syntax: - * s = TraceKit.computeStackTrace(exception) // consider using TraceKit.report instead (see below) - * Returns: - * s.name - exception name - * s.message - exception message - * s.stack[i].url - JavaScript or HTML file URL - * s.stack[i].func - function name, or empty for anonymous functions (if guessing did not work) - * s.stack[i].args - arguments passed to the function, if known - * s.stack[i].line - line number, if known - * s.stack[i].column - column number, if known - * - * Supports: - * - Firefox: full stack trace with line numbers and unreliable column - * number on top frame - * - Opera 10: full stack trace with line and column numbers - * - Opera 9-: full stack trace with line numbers - * - Chrome: full stack trace with line and column numbers - * - Safari: line and column number for the topmost stacktrace element - * only - * - IE: no line numbers whatsoever - * - * Tries to guess names of anonymous functions by looking for assignments - * in the source code. In IE and Safari, we have to guess source file names - * by searching for function bodies inside all page scripts. This will not - * work for scripts that are loaded cross-domain. - * Here be dragons: some function names may be guessed incorrectly, and - * duplicate functions may be mismatched. - * - * TraceKit.computeStackTrace should only be used for tracing purposes. - * Logging of unhandled exceptions should be done with TraceKit.report, - * which builds on top of TraceKit.computeStackTrace and provides better - * IE support by utilizing the window.onerror event to retrieve information - * about the top of the stack. - * - * Note: In IE and Safari, no stack trace is recorded on the Error object, - * so computeStackTrace instead walks its *own* chain of callers. - * This means that: - * * in Safari, some methods may be missing from the stack trace; - * * in IE, the topmost function in the stack trace will always be the - * caller of computeStackTrace. - * - * This is okay for tracing (because you are likely to be calling - * computeStackTrace from the function you want to be the topmost element - * of the stack trace anyway), but not okay for logging unhandled - * exceptions (because your catch block will likely be far away from the - * inner function that actually caused the exception). - * - */ + return this; + }, + /* + * Set/clear a user to be sent along with the payload. + * + * @param {object} user An object representing user data [optional] + * @return {Raven} + */ + setUserContext: function(user) { + // Intentionally do not merge here since that's an unexpected behavior. + this._globalContext.user = user; -TraceKit.computeStackTrace = function computeStackTraceWrapper() { - // Contents of Exception in various browsers. - // - // SAFARI: - // ex.message = Can't find variable: qq - // ex.line = 59 - // ex.sourceId = 580238192 - // ex.sourceURL = http://... - // ex.expressionBeginOffset = 96 - // ex.expressionCaretOffset = 98 - // ex.expressionEndOffset = 98 - // ex.name = ReferenceError - // - // FIREFOX: - // ex.message = qq is not defined - // ex.fileName = http://... - // ex.lineNumber = 59 - // ex.columnNumber = 69 - // ex.stack = ...stack trace... (see the example below) - // ex.name = ReferenceError - // - // CHROME: - // ex.message = qq is not defined - // ex.name = ReferenceError - // ex.type = not_defined - // ex.arguments = ['aa'] - // ex.stack = ...stack trace... - // - // INTERNET EXPLORER: - // ex.message = ... - // ex.name = ReferenceError - // - // OPERA: - // ex.message = ...message... (see the example below) - // ex.name = ReferenceError - // ex.opera#sourceloc = 11 (pretty much useless, duplicates the info in ex.message) - // ex.stacktrace = n/a; see 'opera:config#UserPrefs|Exceptions Have Stacktrace' + return this; + }, - /** - * Computes stack trace information from the stack property. - * Chrome and Gecko use this property. - * @param {Error} ex - * @return {?Object.} Stack trace information. + /* + * Merge extra attributes to be sent along with the payload. + * + * @param {object} extra An object representing extra data [optional] + * @return {Raven} */ - function computeStackTraceFromStackProp(ex) { - if (typeof ex.stack === 'undefined' || !ex.stack) return; - var chrome = /^\s*at (.*?) ?\(((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i, - gecko = /^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|\[native).*?|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i, - winjs = /^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i, - // Used to additionally parse URL/line/column from eval frames - geckoEval = /(\S+) line (\d+)(?: > eval line \d+)* > eval/i, - chromeEval = /\((\S*)(?::(\d+))(?::(\d+))\)/, - lines = ex.stack.split('\n'), - stack = [], - submatch, - parts, - element, - reference = /^(.*) is undefined$/.exec(ex.message); + setExtraContext: function(extra) { + this._mergeContext('extra', extra); - for (var i = 0, j = lines.length; i < j; ++i) { - if (parts = chrome.exec(lines[i])) { - var isNative = parts[2] && parts[2].indexOf('native') === 0; // start of line + return this; + }, - var isEval = parts[2] && parts[2].indexOf('eval') === 0; // start of line + /* + * Merge tags to be sent along with the payload. + * + * @param {object} tags An object representing tags [optional] + * @return {Raven} + */ + setTagsContext: function(tags) { + this._mergeContext('tags', tags); - if (isEval && (submatch = chromeEval.exec(parts[2]))) { - // throw out eval line/column and use top-most line/column number - parts[2] = submatch[1]; // url + return this; + }, - parts[3] = submatch[2]; // line + /* + * Clear all of the context. + * + * @return {Raven} + */ + clearContext: function() { + this._globalContext = {}; - parts[4] = submatch[3]; // column - } - - element = { - url: !isNative ? parts[2] : null, - func: parts[1] || UNKNOWN_FUNCTION, - args: isNative ? [parts[2]] : [], - line: parts[3] ? +parts[3] : null, - column: parts[4] ? +parts[4] : null - }; - } else if (parts = winjs.exec(lines[i])) { - element = { - url: parts[2], - func: parts[1] || UNKNOWN_FUNCTION, - args: [], - line: +parts[3], - column: parts[4] ? +parts[4] : null - }; - } else if (parts = gecko.exec(lines[i])) { - var isEval = parts[3] && parts[3].indexOf(' > eval') > -1; - - if (isEval && (submatch = geckoEval.exec(parts[3]))) { - // throw out eval line/column and use top-most line number - parts[3] = submatch[1]; - parts[4] = submatch[2]; - parts[5] = null; // no column when eval - } else if (i === 0 && !parts[5] && typeof ex.columnNumber !== 'undefined') { - // FireFox uses this awesome columnNumber property for its top frame - // Also note, Firefox's column number is 0-based and everything else expects 1-based, - // so adding 1 - // NOTE: this hack doesn't work if top-most frame is eval - stack[0].column = ex.columnNumber + 1; - } - - element = { - url: parts[3], - func: parts[1] || UNKNOWN_FUNCTION, - args: parts[2] ? parts[2].split(',') : [], - line: parts[4] ? +parts[4] : null, - column: parts[5] ? +parts[5] : null - }; - } else { - continue; - } + return this; + }, - if (!element.func && element.line) { - element.func = UNKNOWN_FUNCTION; - } + /* + * Get a copy of the current context. This cannot be mutated. + * + * @return {object} copy of context + */ + getContext: function() { + // lol javascript + return JSON.parse(stringify(this._globalContext)); + }, - stack.push(element); - } + /* + * Set environment of application + * + * @param {string} environment Typically something like 'production'. + * @return {Raven} + */ + setEnvironment: function(environment) { + this._globalOptions.environment = environment; - if (!stack.length) { - return null; - } + return this; + }, - return { - name: ex.name, - message: ex.message, - url: getLocationHref(), - stack: stack - }; - } - /** - * Adds information about the first frame to incomplete stack traces. - * Safari and IE require this to get complete data on the first frame. - * @param {Object.} stackInfo Stack trace information from - * one of the compute* methods. - * @param {string} url The URL of the script that caused an error. - * @param {(number|string)} lineNo The line number of the script that - * caused an error. - * @param {string=} message The error generated by the browser, which - * hopefully contains the name of the object that caused the error. - * @return {boolean} Whether or not the stack information was - * augmented. + /* + * Set release version of application + * + * @param {string} release Typically something like a git SHA to identify version + * @return {Raven} */ + setRelease: function(release) { + this._globalOptions.release = release; + return this; + }, - function augmentStackTraceWithInitialElement(stackInfo, url, lineNo, message) { - var initial = { - url: url, - line: lineNo - }; + /* + * Set the dataCallback option + * + * @param {function} callback The callback to run which allows the + * data blob to be mutated before sending + * @return {Raven} + */ + setDataCallback: function(callback) { + var original = this._globalOptions.dataCallback; + this._globalOptions.dataCallback = keepOriginalCallback(original, callback); + return this; + }, - if (initial.url && initial.line) { - stackInfo.incomplete = false; + /* + * Set the breadcrumbCallback option + * + * @param {function} callback The callback to run which allows filtering + * or mutating breadcrumbs + * @return {Raven} + */ + setBreadcrumbCallback: function(callback) { + var original = this._globalOptions.breadcrumbCallback; + this._globalOptions.breadcrumbCallback = keepOriginalCallback(original, callback); + return this; + }, - if (!initial.func) { - initial.func = UNKNOWN_FUNCTION; - } + /* + * Set the shouldSendCallback option + * + * @param {function} callback The callback to run which allows + * introspecting the blob before sending + * @return {Raven} + */ + setShouldSendCallback: function(callback) { + var original = this._globalOptions.shouldSendCallback; + this._globalOptions.shouldSendCallback = keepOriginalCallback(original, callback); + return this; + }, - if (stackInfo.stack.length > 0) { - if (stackInfo.stack[0].url === initial.url) { - if (stackInfo.stack[0].line === initial.line) { - return false; // already in stack trace - } else if (!stackInfo.stack[0].line && stackInfo.stack[0].func === initial.func) { - stackInfo.stack[0].line = initial.line; - return false; - } - } - } + /** + * Override the default HTTP transport mechanism that transmits data + * to the Sentry server. + * + * @param {function} transport Function invoked instead of the default + * `makeRequest` handler. + * + * @return {Raven} + */ + setTransport: function(transport) { + this._globalOptions.transport = transport; - stackInfo.stack.unshift(initial); - stackInfo.partial = true; - return true; - } else { - stackInfo.incomplete = true; - } + return this; + }, - return false; - } - /** - * Computes stack trace information by walking the arguments.caller - * chain at the time the exception occurred. This will cause earlier - * frames to be missed but is the only way to get any stack trace in - * Safari and IE. The top frame is restored by - * {@link augmentStackTraceWithInitialElement}. - * @param {Error} ex - * @return {?Object.} Stack trace information. + /* + * Get the latest raw exception that was captured by Raven. + * + * @return {error} */ + lastException: function() { + return this._lastCapturedException; + }, + /* + * Get the last event id + * + * @return {string} + */ + lastEventId: function() { + return this._lastEventId; + }, - function computeStackTraceByWalkingCallerChain(ex, depth) { - var functionName = /function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i, - stack = [], - funcs = {}, - recursion = false, - parts, - item; - - for (var curr = computeStackTraceByWalkingCallerChain.caller; curr && !recursion; curr = curr.caller) { - if (curr === computeStackTrace || curr === TraceKit.report) { - // console.log('skipping internal function'); - continue; + /* + * Determine if Raven is setup and ready to go. + * + * @return {boolean} + */ + isSetup: function() { + if (!this._hasJSON) return false; // needs JSON support + if (!this._globalServer) { + if (!this.ravenNotConfiguredError) { + this.ravenNotConfiguredError = true; + this._logDebug('error', 'Error: Raven has not been configured.'); } + return false; + } + return true; + }, - item = { - url: null, - func: UNKNOWN_FUNCTION, - line: null, - column: null - }; + afterLoad: function() { + // TODO: remove window dependence? - if (curr.name) { - item.func = curr.name; - } else if (parts = functionName.exec(curr.toString())) { - item.func = parts[1]; - } + // Attempt to initialize Raven on load + var RavenConfig = _window.RavenConfig; + if (RavenConfig) { + this.config(RavenConfig.dsn, RavenConfig.config).install(); + } + }, - if (typeof item.func === 'undefined') { - try { - item.func = parts.input.substring(0, parts.input.indexOf('{')); - } catch (e) {} - } + showReportDialog: function(options) { + if ( + !_document // doesn't work without a document (React native) + ) + return; - if (funcs['' + curr]) { - recursion = true; - } else { - funcs['' + curr] = true; - } + options = options || {}; - stack.push(item); + var lastEventId = options.eventId || this.lastEventId(); + if (!lastEventId) { + throw new RavenConfigError('Missing eventId'); } - if (depth) { - // console.log('depth is ' + depth); - // console.log('stack is ' + stack.length); - stack.splice(0, depth); + var dsn = options.dsn || this._dsn; + if (!dsn) { + throw new RavenConfigError('Missing DSN'); } - var result = { - name: ex.name, - message: ex.message, - url: getLocationHref(), - stack: stack - }; - augmentStackTraceWithInitialElement(result, ex.sourceURL || ex.fileName, ex.line || ex.lineNumber, ex.message || ex.description); - return result; - } - /** - * Computes a stack trace for an exception. - * @param {Error} ex - * @param {(string|number)=} depth - */ - + var encode = encodeURIComponent; + var qs = ''; + qs += '?eventId=' + encode(lastEventId); + qs += '&dsn=' + encode(dsn); - function computeStackTrace(ex, depth) { - var stack = null; - depth = depth == null ? 0 : +depth; + var user = options.user || this._globalContext.user; + if (user) { + if (user.name) qs += '&name=' + encode(user.name); + if (user.email) qs += '&email=' + encode(user.email); + } - try { - stack = computeStackTraceFromStackProp(ex); + var globalServer = this._getGlobalServer(this._parseDSN(dsn)); - if (stack) { - return stack; - } - } catch (e) { - if (TraceKit.debug) { - throw e; - } - } - - try { - stack = computeStackTraceByWalkingCallerChain(ex, depth + 1); - - if (stack) { - return stack; - } - } catch (e) { - if (TraceKit.debug) { - throw e; - } - } + var script = _document.createElement('script'); + script.async = true; + script.src = globalServer + '/api/embed/error-page/' + qs; + (_document.head || _document.body).appendChild(script); + }, - return { - name: ex.name, - message: ex.message, - url: getLocationHref() - }; - } + /**** Private functions ****/ + _ignoreNextOnError: function() { + var self = this; + this._ignoreOnError += 1; + setTimeout(function() { + // onerror should trigger before setTimeout + self._ignoreOnError -= 1; + }); + }, - computeStackTrace.augmentStackTraceWithInitialElement = augmentStackTraceWithInitialElement; - computeStackTrace.computeStackTraceFromStackProp = computeStackTraceFromStackProp; - return computeStackTrace; -}(); + _triggerEvent: function(eventType, options) { + // NOTE: `event` is a native browser thing, so let's avoid conflicting wiht it + var evt, key; -var tracekit = TraceKit; + if (!this._hasDocument) return; -var stringify_1 = createCommonjsModule(function (module, exports) { - /* - json-stringify-safe - Like JSON.stringify, but doesn't throw on circular references. - - Originally forked from https://github.com/isaacs/json-stringify-safe - version 5.0.1 on 3/8/2017 and modified to handle Errors serialization - and IE8 compatibility. Tests for this are in test/vendor. - - ISC license: https://github.com/isaacs/json-stringify-safe/blob/master/LICENSE - */ - exports = module.exports = stringify; - exports.getSerialize = serializer; - - function indexOf(haystack, needle) { - for (var i = 0; i < haystack.length; ++i) { - if (haystack[i] === needle) return i; - } - - return -1; - } + options = options || {}; - function stringify(obj, replacer, spaces, cycleReplacer) { - return JSON.stringify(obj, serializer(replacer, cycleReplacer), spaces); - } // https://github.com/ftlabs/js-abbreviate/blob/fa709e5f139e7770a71827b1893f22418097fbda/index.js#L95-L106 + eventType = 'raven' + eventType.substr(0, 1).toUpperCase() + eventType.substr(1); + if (_document.createEvent) { + evt = _document.createEvent('HTMLEvents'); + evt.initEvent(eventType, true, true); + } else { + evt = _document.createEventObject(); + evt.eventType = eventType; + } - function stringifyError(value) { - var err = { - // These properties are implemented as magical getters and don't show up in for in - stack: value.stack, - message: value.message, - name: value.name - }; + for (key in options) + if (hasKey(options, key)) { + evt[key] = options[key]; + } - for (var i in value) { - if (Object.prototype.hasOwnProperty.call(value, i)) { - err[i] = value[i]; + if (_document.createEvent) { + // IE9 if standards + _document.dispatchEvent(evt); + } else { + // IE8 regardless of Quirks or Standards + // IE9 if quirks + try { + _document.fireEvent('on' + evt.eventType.toLowerCase(), evt); + } catch (e) { + // Do nothing } } + }, - return err; - } - - function serializer(replacer, cycleReplacer) { - var stack = []; - var keys = []; - - if (cycleReplacer == null) { - cycleReplacer = function cycleReplacer(key, value) { - if (stack[0] === value) { - return '[Circular ~]'; - } + /** + * Wraps addEventListener to capture UI breadcrumbs + * @param evtName the event name (e.g. "click") + * @returns {Function} + * @private + */ + _breadcrumbEventHandler: function(evtName) { + var self = this; + return function(evt) { + // reset keypress timeout; e.g. triggering a 'click' after + // a 'keypress' will reset the keypress debounce so that a new + // set of keypresses can be recorded + self._keypressTimeout = null; - return '[Circular ~.' + keys.slice(0, indexOf(stack, value)).join('.') + ']'; - }; - } + // It's possible this handler might trigger multiple times for the same + // event (e.g. event propagation through node ancestors). Ignore if we've + // already captured the event. + if (self._lastCapturedEvent === evt) return; - return function (key, value) { - if (stack.length > 0) { - var thisPos = indexOf(stack, this); - ~thisPos ? stack.splice(thisPos + 1) : stack.push(this); - ~thisPos ? keys.splice(thisPos, Infinity, key) : keys.push(key); + self._lastCapturedEvent = evt; - if (~indexOf(stack, value)) { - value = cycleReplacer.call(this, key, value); - } - } else { - stack.push(value); + // try/catch both: + // - accessing evt.target (see getsentry/raven-js#838, #768) + // - `htmlTreeAsString` because it's complex, and just accessing the DOM incorrectly + // can throw an exception in some circumstances. + var target; + try { + target = htmlTreeAsString(evt.target); + } catch (e) { + target = ''; } - return replacer == null ? value instanceof Error ? stringifyError(value) : value : replacer.call(this, key, value); + self.captureBreadcrumb({ + category: 'ui.' + evtName, // e.g. ui.click, ui.input + message: target + }); }; - } -}); -var stringify_2 = stringify_1.getSerialize; - -function RavenConfigError(message) { - this.name = 'RavenConfigError'; - this.message = message; -} - -RavenConfigError.prototype = new Error(); -RavenConfigError.prototype.constructor = RavenConfigError; -var configError = RavenConfigError; + }, -var wrapMethod = function wrapMethod(console, level, callback) { - var originalConsoleLevel = console[level]; - var originalConsole = console; + /** + * Wraps addEventListener to capture keypress UI events + * @returns {Function} + * @private + */ + _keypressEventHandler: function() { + var self = this, + debounceDuration = 1000; // milliseconds - if (!(level in console)) { - return; - } + // TODO: if somehow user switches keypress target before + // debounce timeout is triggered, we will only capture + // a single breadcrumb from the FIRST target (acceptable?) + return function(evt) { + var target; + try { + target = evt.target; + } catch (e) { + // just accessing event properties can throw an exception in some rare circumstances + // see: https://github.com/getsentry/raven-js/issues/838 + return; + } + var tagName = target && target.tagName; - var sentryLevel = level === 'warn' ? 'warning' : level; + // only consider keypress events on actual input elements + // this will disregard keypresses targeting body (e.g. tabbing + // through elements, hotkeys, etc) + if ( + !tagName || + (tagName !== 'INPUT' && tagName !== 'TEXTAREA' && !target.isContentEditable) + ) + return; - console[level] = function () { - var args = [].slice.call(arguments); - var msg = utils.safeJoin(args, ' '); - var data = { - level: sentryLevel, - logger: 'console', - extra: { - arguments: args + // record first keypress in a series, but ignore subsequent + // keypresses until debounce clears + var timeout = self._keypressTimeout; + if (!timeout) { + self._breadcrumbEventHandler('input')(evt); } + clearTimeout(timeout); + self._keypressTimeout = setTimeout(function() { + self._keypressTimeout = null; + }, debounceDuration); }; + }, - if (level === 'assert') { - if (args[0] === false) { - // Default browsers message - msg = 'Assertion failed: ' + (utils.safeJoin(args.slice(1), ' ') || 'console.assert'); - data.extra.arguments = args.slice(1); - callback && callback(msg, data); - } - } else { - callback && callback(msg, data); - } // this fails for some browsers. :( - + /** + * Captures a breadcrumb of type "navigation", normalizing input URLs + * @param to the originating URL + * @param from the target URL + * @private + */ + _captureUrlChange: function(from, to) { + var parsedLoc = parseUrl(this._location.href); + var parsedTo = parseUrl(to); + var parsedFrom = parseUrl(from); - if (originalConsoleLevel) { - // IE9 doesn't allow calling apply on console functions directly - // See: https://stackoverflow.com/questions/5472938/does-ie9-support-console-log-and-is-it-a-real-function#answer-5473193 - Function.prototype.apply.call(originalConsoleLevel, originalConsole, args); - } - }; -}; + // because onpopstate only tells you the "new" (to) value of location.href, and + // not the previous (from) value, we need to track the value of the current URL + // state ourselves + this._lastHref = to; -var console$1 = { - wrapMethod: wrapMethod -}; + // Use only the path component of the URL if the URL matches the current + // document (almost all the time when using pushState) + if (parsedLoc.protocol === parsedTo.protocol && parsedLoc.host === parsedTo.host) + to = parsedTo.relative; + if (parsedLoc.protocol === parsedFrom.protocol && parsedLoc.host === parsedFrom.host) + from = parsedFrom.relative; -/*global XDomainRequest:false */ + this.captureBreadcrumb({ + category: 'navigation', + data: { + to: to, + from: from + } + }); + }, -var isError = utils.isError; -var isObject = utils.isObject; -var isErrorEvent = utils.isErrorEvent; -var isUndefined = utils.isUndefined; -var isFunction = utils.isFunction; -var isString = utils.isString; -var isArray = utils.isArray; -var isEmptyObject = utils.isEmptyObject; -var each = utils.each; -var objectMerge = utils.objectMerge; -var truncate = utils.truncate; -var objectFrozen = utils.objectFrozen; -var hasKey = utils.hasKey; -var joinRegExp = utils.joinRegExp; -var urlencode = utils.urlencode; -var uuid4 = utils.uuid4; -var htmlTreeAsString = utils.htmlTreeAsString; -var isSameException = utils.isSameException; -var isSameStacktrace = utils.isSameStacktrace; -var parseUrl = utils.parseUrl; -var fill = utils.fill; -var supportsFetch = utils.supportsFetch; -var wrapConsoleMethod = console$1.wrapMethod; -var dsnKeys = 'source protocol user pass host port path'.split(' '); -var dsnPattern = /^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/; + _patchFunctionToString: function() { + var self = this; + self._originalFunctionToString = Function.prototype.toString; + // eslint-disable-next-line no-extend-native + Function.prototype.toString = function() { + if (typeof this === 'function' && this.__raven__) { + return self._originalFunctionToString.apply(this.__orig__, arguments); + } + return self._originalFunctionToString.apply(this, arguments); + }; + }, -function now() { - return +new Date(); -} // This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) + _unpatchFunctionToString: function() { + if (this._originalFunctionToString) { + // eslint-disable-next-line no-extend-native + Function.prototype.toString = this._originalFunctionToString; + } + }, + /** + * Wrap timer functions and event targets to catch errors and provide + * better metadata. + */ + _instrumentTryCatch: function() { + var self = this; -var _window$1 = typeof window !== 'undefined' ? window : typeof commonjsGlobal !== 'undefined' ? commonjsGlobal : typeof self !== 'undefined' ? self : {}; + var wrappedBuiltIns = self._wrappedBuiltIns; -var _document = _window$1.document; -var _navigator = _window$1.navigator; + function wrapTimeFn(orig) { + return function(fn, t) { + // preserve arity + // Make a copy of the arguments to prevent deoptimization + // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments + var args = new Array(arguments.length); + for (var i = 0; i < args.length; ++i) { + args[i] = arguments[i]; + } + var originalCallback = args[0]; + if (isFunction(originalCallback)) { + args[0] = self.wrap(originalCallback); + } -function keepOriginalCallback(original, callback) { - return isFunction(callback) ? function (data) { - return callback(data, original); - } : callback; -} // First, check for JSON support -// If there is no JSON, we no-op the core features of Raven -// since JSON is required to encode the payload + // IE < 9 doesn't support .call/.apply on setInterval/setTimeout, but it + // also supports only two arguments and doesn't care what this is, so we + // can just call the original function directly. + if (orig.apply) { + return orig.apply(this, args); + } else { + return orig(args[0], args[1]); + } + }; + } + var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; -function Raven$1() { - this._hasJSON = !!(_typeof(JSON) === 'object' && JSON.stringify); // Raven can run in contexts where there's no document (react-native) + function wrapEventTarget(global) { + var proto = _window[global] && _window[global].prototype; + if (proto && proto.hasOwnProperty && proto.hasOwnProperty('addEventListener')) { + fill( + proto, + 'addEventListener', + function(orig) { + return function(evtName, fn, capture, secure) { + // preserve arity + try { + if (fn && fn.handleEvent) { + fn.handleEvent = self.wrap(fn.handleEvent); + } + } catch (err) { + // can sometimes get 'Permission denied to access property "handle Event' + } - this._hasDocument = !isUndefined(_document); - this._hasNavigator = !isUndefined(_navigator); - this._lastCapturedException = null; - this._lastData = null; - this._lastEventId = null; - this._globalServer = null; - this._globalKey = null; - this._globalProject = null; - this._globalContext = {}; - this._globalOptions = { - // SENTRY_RELEASE can be injected by https://github.com/getsentry/sentry-webpack-plugin - release: _window$1.SENTRY_RELEASE && _window$1.SENTRY_RELEASE.id, - logger: 'javascript', - ignoreErrors: [], - ignoreUrls: [], - whitelistUrls: [], - includePaths: [], - headers: null, - collectWindowErrors: true, - maxMessageLength: 0, - // By default, truncates URL values to 250 chars - maxUrlLength: 250, - stackTraceLimit: 50, - autoBreadcrumbs: true, - instrument: true, - sampleRate: 1 - }; - this._fetchDefaults = { - method: 'POST', - keepalive: true, - referrerPolicy: 'origin' - }; - this._ignoreOnError = 0; - this._isRavenInstalled = false; - this._originalErrorStackTraceLimit = Error.stackTraceLimit; // capture references to window.console *and* all its methods first - // before the console plugin has a chance to monkey patch + // More breadcrumb DOM capture ... done here and not in `_instrumentBreadcrumbs` + // so that we don't have more than one wrapper function + var before, clickHandler, keypressHandler; + + if ( + autoBreadcrumbs && + autoBreadcrumbs.dom && + (global === 'EventTarget' || global === 'Node') + ) { + // NOTE: generating multiple handlers per addEventListener invocation, should + // revisit and verify we can just use one (almost certainly) + clickHandler = self._breadcrumbEventHandler('click'); + keypressHandler = self._keypressEventHandler(); + before = function(evt) { + // need to intercept every DOM event in `before` argument, in case that + // same wrapped method is re-used for different events (e.g. mousemove THEN click) + // see #724 + if (!evt) return; + + var eventType; + try { + eventType = evt.type; + } catch (e) { + // just accessing event properties can throw an exception in some rare circumstances + // see: https://github.com/getsentry/raven-js/issues/838 + return; + } + if (eventType === 'click') return clickHandler(evt); + else if (eventType === 'keypress') return keypressHandler(evt); + }; + } + return orig.call( + this, + evtName, + self.wrap(fn, undefined, before), + capture, + secure + ); + }; + }, + wrappedBuiltIns + ); + fill( + proto, + 'removeEventListener', + function(orig) { + return function(evt, fn, capture, secure) { + try { + fn = fn && (fn.__raven_wrapper__ ? fn.__raven_wrapper__ : fn); + } catch (e) { + // ignore, accessing __raven_wrapper__ will throw in some Selenium environments + } + return orig.call(this, evt, fn, capture, secure); + }; + }, + wrappedBuiltIns + ); + } + } - this._originalConsole = _window$1.console || {}; - this._originalConsoleMethods = {}; - this._plugins = []; - this._startTime = now(); - this._wrappedBuiltIns = []; - this._breadcrumbs = []; - this._lastCapturedEvent = null; - this._keypressTimeout; - this._location = _window$1.location; - this._lastHref = this._location && this._location.href; + fill(_window, 'setTimeout', wrapTimeFn, wrappedBuiltIns); + fill(_window, 'setInterval', wrapTimeFn, wrappedBuiltIns); + if (_window.requestAnimationFrame) { + fill( + _window, + 'requestAnimationFrame', + function(orig) { + return function(cb) { + return orig(self.wrap(cb)); + }; + }, + wrappedBuiltIns + ); + } + + // event targets borrowed from bugsnag-js: + // https://github.com/bugsnag/bugsnag-js/blob/master/src/bugsnag.js#L666 + var eventTargets = [ + 'EventTarget', + 'Window', + 'Node', + 'ApplicationCache', + 'AudioTrackList', + 'ChannelMergerNode', + 'CryptoOperation', + 'EventSource', + 'FileReader', + 'HTMLUnknownElement', + 'IDBDatabase', + 'IDBRequest', + 'IDBTransaction', + 'KeyOperation', + 'MediaController', + 'MessagePort', + 'ModalWindow', + 'Notification', + 'SVGElementInstance', + 'Screen', + 'TextTrack', + 'TextTrackCue', + 'TextTrackList', + 'WebSocket', + 'WebSocketWorker', + 'Worker', + 'XMLHttpRequest', + 'XMLHttpRequestEventTarget', + 'XMLHttpRequestUpload' + ]; + for (var i = 0; i < eventTargets.length; i++) { + wrapEventTarget(eventTargets[i]); + } + }, + + /** + * Instrument browser built-ins w/ breadcrumb capturing + * - XMLHttpRequests + * - DOM interactions (click/typing) + * - window.location changes + * - console + * + * Can be disabled or individually configured via the `autoBreadcrumbs` config option + */ + _instrumentBreadcrumbs: function() { + var self = this; + var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; - this._resetBackoff(); // eslint-disable-next-line guard-for-in + var wrappedBuiltIns = self._wrappedBuiltIns; + function wrapProp(prop, xhr) { + if (prop in xhr && isFunction(xhr[prop])) { + fill(xhr, prop, function(orig) { + return self.wrap(orig); + }); // intentionally don't track filled methods on XHR instances + } + } - for (var method in this._originalConsole) { - this._originalConsoleMethods[method] = this._originalConsole[method]; - } -} -/* - * The core Raven singleton - * - * @this {Raven} - */ + if (autoBreadcrumbs.xhr && 'XMLHttpRequest' in _window) { + var xhrproto = _window.XMLHttpRequest && _window.XMLHttpRequest.prototype; + fill( + xhrproto, + 'open', + function(origOpen) { + return function(method, url) { + // preserve arity + // if Sentry key appears in URL, don't capture + if (isString(url) && url.indexOf(self._globalKey) === -1) { + this.__raven_xhr = { + method: method, + url: url, + status_code: null + }; + } -Raven$1.prototype = { - // Hardcode version string so that raven source can be loaded directly via - // webpack (using a build step causes webpack #1617). Grunt verifies that - // this value matches package.json during build. - // See: https://github.com/getsentry/raven-js/issues/465 - VERSION: '3.22.2', - debug: false, - TraceKit: tracekit, - // alias to TraceKit + return origOpen.apply(this, arguments); + }; + }, + wrappedBuiltIns + ); + + fill( + xhrproto, + 'send', + function(origSend) { + return function() { + // preserve arity + var xhr = this; - /* - * Configure Raven with a DSN and extra options - * - * @param {string} dsn The public Sentry DSN - * @param {object} options Set of global options [optional] - * @return {Raven} - */ - config: function config(dsn, options) { - var self = this; + function onreadystatechangeHandler() { + if (xhr.__raven_xhr && xhr.readyState === 4) { + try { + // touching statusCode in some platforms throws + // an exception + xhr.__raven_xhr.status_code = xhr.status; + } catch (e) { + /* do nothing */ + } - if (self._globalServer) { - this._logDebug('error', 'Error: Raven has already been configured'); + self.captureBreadcrumb({ + type: 'http', + category: 'xhr', + data: xhr.__raven_xhr + }); + } + } - return self; - } + var props = ['onload', 'onerror', 'onprogress']; + for (var j = 0; j < props.length; j++) { + wrapProp(props[j], xhr); + } - if (!dsn) return self; - var globalOptions = self._globalOptions; // merge in options + if ('onreadystatechange' in xhr && isFunction(xhr.onreadystatechange)) { + fill( + xhr, + 'onreadystatechange', + function(orig) { + return self.wrap(orig, undefined, onreadystatechangeHandler); + } /* intentionally don't track this instrumentation */ + ); + } else { + // if onreadystatechange wasn't actually set by the page on this xhr, we + // are free to set our own and capture the breadcrumb + xhr.onreadystatechange = onreadystatechangeHandler; + } - if (options) { - each(options, function (key, value) { - // tags and extra are special and need to be put into context - if (key === 'tags' || key === 'extra' || key === 'user') { - self._globalContext[key] = value; - } else { - globalOptions[key] = value; - } - }); + return origSend.apply(this, arguments); + }; + }, + wrappedBuiltIns + ); } - self.setDSN(dsn); // "Script error." is hard coded into browsers for errors that it can't read. - // this is the result of a script being pulled in from an external domain and CORS. + if (autoBreadcrumbs.xhr && supportsFetch()) { + fill( + _window, + 'fetch', + function(origFetch) { + return function() { + // preserve arity + // Make a copy of the arguments to prevent deoptimization + // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments + var args = new Array(arguments.length); + for (var i = 0; i < args.length; ++i) { + args[i] = arguments[i]; + } - globalOptions.ignoreErrors.push(/^Script error\.?$/); - globalOptions.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/); // join regexp rules into one big rule + var fetchInput = args[0]; + var method = 'GET'; + var url; - globalOptions.ignoreErrors = joinRegExp(globalOptions.ignoreErrors); - globalOptions.ignoreUrls = globalOptions.ignoreUrls.length ? joinRegExp(globalOptions.ignoreUrls) : false; - globalOptions.whitelistUrls = globalOptions.whitelistUrls.length ? joinRegExp(globalOptions.whitelistUrls) : false; - globalOptions.includePaths = joinRegExp(globalOptions.includePaths); - globalOptions.maxBreadcrumbs = Math.max(0, Math.min(globalOptions.maxBreadcrumbs || 100, 100)); // default and hard limit is 100 + if (typeof fetchInput === 'string') { + url = fetchInput; + } else if ('Request' in _window && fetchInput instanceof _window.Request) { + url = fetchInput.url; + if (fetchInput.method) { + method = fetchInput.method; + } + } else { + url = '' + fetchInput; + } - var autoBreadcrumbDefaults = { - xhr: true, - console: true, - dom: true, - location: true, - sentry: true - }; - var autoBreadcrumbs = globalOptions.autoBreadcrumbs; + // if Sentry key appears in URL, don't capture, as it's our own request + if (url.indexOf(self._globalKey) !== -1) { + return origFetch.apply(this, args); + } - if ({}.toString.call(autoBreadcrumbs) === '[object Object]') { - autoBreadcrumbs = objectMerge(autoBreadcrumbDefaults, autoBreadcrumbs); - } else if (autoBreadcrumbs !== false) { - autoBreadcrumbs = autoBreadcrumbDefaults; - } + if (args[1] && args[1].method) { + method = args[1].method; + } - globalOptions.autoBreadcrumbs = autoBreadcrumbs; - var instrumentDefaults = { - tryCatch: true - }; - var instrument = globalOptions.instrument; + var fetchData = { + method: method, + url: url, + status_code: null + }; - if ({}.toString.call(instrument) === '[object Object]') { - instrument = objectMerge(instrumentDefaults, instrument); - } else if (instrument !== false) { - instrument = instrumentDefaults; + return origFetch + .apply(this, args) + .then(function(response) { + fetchData.status_code = response.status; + + self.captureBreadcrumb({ + type: 'http', + category: 'fetch', + data: fetchData + }); + + return response; + }) + ['catch'](function(err) { + // if there is an error performing the request + self.captureBreadcrumb({ + type: 'http', + category: 'fetch', + data: fetchData, + level: 'error' + }); + + throw err; + }); + }; + }, + wrappedBuiltIns + ); } - globalOptions.instrument = instrument; - tracekit.collectWindowErrors = !!globalOptions.collectWindowErrors; // return for chaining + // Capture breadcrumbs from any click that is unhandled / bubbled up all the way + // to the document. Do this before we instrument addEventListener. + if (autoBreadcrumbs.dom && this._hasDocument) { + if (_document.addEventListener) { + _document.addEventListener('click', self._breadcrumbEventHandler('click'), false); + _document.addEventListener('keypress', self._keypressEventHandler(), false); + } else if (_document.attachEvent) { + // IE8 Compatibility + _document.attachEvent('onclick', self._breadcrumbEventHandler('click')); + _document.attachEvent('onkeypress', self._keypressEventHandler()); + } + } - return self; - }, + // record navigation (URL) changes + // NOTE: in Chrome App environment, touching history.pushState, *even inside + // a try/catch block*, will cause Chrome to output an error to console.error + // borrowed from: https://github.com/angular/angular.js/pull/13945/files + var chrome = _window.chrome; + var isChromePackagedApp = chrome && chrome.app && chrome.app.runtime; + var hasPushAndReplaceState = + !isChromePackagedApp && + _window.history && + history.pushState && + history.replaceState; + if (autoBreadcrumbs.location && hasPushAndReplaceState) { + // TODO: remove onpopstate handler on uninstall() + var oldOnPopState = _window.onpopstate; + _window.onpopstate = function() { + var currentHref = self._location.href; + self._captureUrlChange(self._lastHref, currentHref); - /* - * Installs a global window.onerror error handler - * to capture and report uncaught exceptions. - * At this point, install() is required to be called due - * to the way TraceKit is set up. - * - * @return {Raven} - */ - install: function install() { - var self = this; + if (oldOnPopState) { + return oldOnPopState.apply(this, arguments); + } + }; - if (self.isSetup() && !self._isRavenInstalled) { - tracekit.report.subscribe(function () { - self._handleOnErrorStackInfo.apply(self, arguments); - }); + var historyReplacementFunction = function(origHistFunction) { + // note history.pushState.length is 0; intentionally not declaring + // params to preserve 0 arity + return function(/* state, title, url */) { + var url = arguments.length > 2 ? arguments[2] : undefined; - self._patchFunctionToString(); + // url argument is optional + if (url) { + // coerce to string (this is what pushState does) + self._captureUrlChange(self._lastHref, url + ''); + } - if (self._globalOptions.instrument && self._globalOptions.instrument.tryCatch) { - self._instrumentTryCatch(); - } + return origHistFunction.apply(this, arguments); + }; + }; - if (self._globalOptions.autoBreadcrumbs) self._instrumentBreadcrumbs(); // Install all of the plugins + fill(history, 'pushState', historyReplacementFunction, wrappedBuiltIns); + fill(history, 'replaceState', historyReplacementFunction, wrappedBuiltIns); + } - self._drainPlugins(); + if (autoBreadcrumbs.console && 'console' in _window && console.log) { + // console + var consoleMethodCallback = function(msg, data) { + self.captureBreadcrumb({ + message: msg, + level: data.level, + category: 'console' + }); + }; - self._isRavenInstalled = true; + each(['debug', 'info', 'warn', 'error', 'log'], function(_, level) { + wrapConsoleMethod(console, level, consoleMethodCallback); + }); } - - Error.stackTraceLimit = self._globalOptions.stackTraceLimit; - return this; }, - /* - * Set the DSN (can be called multiple time unlike config) - * - * @param {string} dsn The public Sentry DSN - */ - setDSN: function setDSN(dsn) { - var self = this, - uri = self._parseDSN(dsn), - lastSlash = uri.path.lastIndexOf('/'), - path = uri.path.substr(1, lastSlash); + _restoreBuiltIns: function() { + // restore any wrapped builtins + var builtin; + while (this._wrappedBuiltIns.length) { + builtin = this._wrappedBuiltIns.shift(); - self._dsn = dsn; - self._globalKey = uri.user; - self._globalSecret = uri.pass && uri.pass.substr(1); - self._globalProject = uri.path.substr(lastSlash + 1); - self._globalServer = self._getGlobalServer(uri); - self._globalEndpoint = self._globalServer + '/' + path + 'api/' + self._globalProject + '/store/'; // Reset backoff state since we may be pointing at a - // new project/server + var obj = builtin[0], + name = builtin[1], + orig = builtin[2]; - this._resetBackoff(); + obj[name] = orig; + } }, - /* - * Wrap code within a context so Raven can capture errors - * reliably across domains that is executed immediately. - * - * @param {object} options A specific set of options for this context [optional] - * @param {function} func The callback to be immediately executed within the context - * @param {array} args An array of arguments to be called with the callback [optional] - */ - context: function context(options, func, args) { - if (isFunction(options)) { - args = func || []; - func = options; - options = undefined; + _restoreConsole: function() { + // eslint-disable-next-line guard-for-in + for (var method in this._originalConsoleMethods) { + this._originalConsole[method] = this._originalConsoleMethods[method]; } - - return this.wrap(options, func).apply(this, args); }, - /* - * Wrap code within a context and returns back a new function to be executed - * - * @param {object} options A specific set of options for this context [optional] - * @param {function} func The function to be wrapped in a new context - * @param {function} func A function to call before the try/catch wrapper [optional, private] - * @return {function} The newly wrapped functions with a context - */ - wrap: function wrap(options, func, _before) { - var self = this; // 1 argument has been passed, and it's not a function - // so just return it - - if (isUndefined(func) && !isFunction(options)) { - return options; - } // options is optional - - - if (isFunction(options)) { - func = options; - options = undefined; - } // At this point, we've passed along 2 arguments, and the second one - // is not a function either, so we'll just return the second argument. - + _drainPlugins: function() { + var self = this; - if (!isFunction(func)) { - return func; - } // We don't wanna wrap it twice! + // FIX ME TODO + each(this._plugins, function(_, plugin) { + var installer = plugin[0]; + var args = plugin[1]; + installer.apply(self, [self].concat(args)); + }); + }, + _parseDSN: function(str) { + var m = dsnPattern.exec(str), + dsn = {}, + i = 7; try { - if (func.__raven__) { - return func; - } // If this has already been wrapped in the past, return that - - - if (func.__raven_wrapper__) { - return func.__raven_wrapper__; - } + while (i--) dsn[dsnKeys[i]] = m[i] || ''; } catch (e) { - // Just accessing custom props in some Selenium environments - // can cause a "Permission denied" exception (see raven-js#495). - // Bail on wrapping and return the function as-is (defers to window.onerror). - return func; + throw new RavenConfigError('Invalid DSN: ' + str); } - function wrapped() { - var args = [], - i = arguments.length, - deep = !options || options && options.deep !== false; - - if (_before && isFunction(_before)) { - _before.apply(this, arguments); - } // Recursively wrap all of a function's arguments that are - // functions themselves. - - - while (i--) { - args[i] = deep ? self.wrap(options, arguments[i]) : arguments[i]; - } - - try { - // Attempt to invoke user-land function - // NOTE: If you are a Sentry user, and you are seeing this stack frame, it - // means Raven caught an error invoking your application code. This is - // expected behavior and NOT indicative of a bug with Raven.js. - return func.apply(this, args); - } catch (e) { - self._ignoreNextOnError(); - - self.captureException(e, options); - throw e; - } - } // copy over properties of the old function - - - for (var property in func) { - if (hasKey(func, property)) { - wrapped[property] = func[property]; - } + if (dsn.pass && !this._globalOptions.allowSecretKey) { + throw new RavenConfigError( + 'Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key' + ); } - wrapped.prototype = func.prototype; - func.__raven_wrapper__ = wrapped; // Signal that this function has been wrapped/filled already - // for both debugging and to prevent it to being wrapped/filled twice - - wrapped.__raven__ = true; - wrapped.__orig__ = func; - return wrapped; + return dsn; }, - /* - * Uninstalls the global error handler. - * - * @return {Raven} - */ - uninstall: function uninstall() { - tracekit.report.uninstall(); - - this._unpatchFunctionToString(); - - this._restoreBuiltIns(); - - this._restoreConsole(); + _getGlobalServer: function(uri) { + // assemble the endpoint from the uri pieces + var globalServer = '//' + uri.host + (uri.port ? ':' + uri.port : ''); - Error.stackTraceLimit = this._originalErrorStackTraceLimit; - this._isRavenInstalled = false; - return this; + if (uri.protocol) { + globalServer = uri.protocol + ':' + globalServer; + } + return globalServer; }, - /* - * Manually capture an exception and send it over to Sentry - * - * @param {error} ex An exception to be logged - * @param {object} options A specific set of options for this error [optional] - * @return {Raven} - */ - captureException: function captureException(ex, options) { - options = objectMerge({ - trimHeadFrames: 0 - }, options ? options : {}); // Cases for sending ex as a message, rather than an exception - - var isNotError = !isError(ex); - var isNotErrorEvent = !isErrorEvent(ex); - var isErrorEventWithoutError = isErrorEvent(ex) && !ex.error; - - if (isNotError && isNotErrorEvent || isErrorEventWithoutError) { - return this.captureMessage(ex, objectMerge(options, { - stacktrace: true, - // if we fall back to captureMessage, default to attempting a new trace - trimHeadFrames: options.trimHeadFrames + 1 - })); - } // Get actual Error from ErrorEvent + _handleOnErrorStackInfo: function() { + // if we are intentionally ignoring errors via onerror, bail out + if (!this._ignoreOnError) { + this._handleStackInfo.apply(this, arguments); + } + }, + _handleStackInfo: function(stackInfo, options) { + var frames = this._prepareFrames(stackInfo, options); - if (isErrorEvent(ex)) ex = ex.error; // Store the raw exception object for potential debugging and introspection + this._triggerEvent('handle', { + stackInfo: stackInfo, + options: options + }); - this._lastCapturedException = ex; // TraceKit.report will re-raise any exception passed to it, - // which means you have to wrap it in try/catch. Instead, we - // can wrap it here and only re-raise if TraceKit.report - // raises an exception different from the one we asked to - // report on. + this._processException( + stackInfo.name, + stackInfo.message, + stackInfo.url, + stackInfo.lineno, + frames, + options + ); + }, - try { - var stack = tracekit.computeStackTrace(ex); + _prepareFrames: function(stackInfo, options) { + var self = this; + var frames = []; + if (stackInfo.stack && stackInfo.stack.length) { + each(stackInfo.stack, function(i, stack) { + var frame = self._normalizeFrame(stack, stackInfo.url); + if (frame) { + frames.push(frame); + } + }); - this._handleStackInfo(stack, options); - } catch (ex1) { - if (ex !== ex1) { - throw ex1; + // e.g. frames captured via captureMessage throw + if (options && options.trimHeadFrames) { + for (var j = 0; j < options.trimHeadFrames && j < frames.length; j++) { + frames[j].in_app = false; + } } } - - return this; + frames = frames.slice(0, this._globalOptions.stackTraceLimit); + return frames; }, - /* - * Manually send a message to Sentry - * - * @param {string} msg A plain message to be captured in Sentry - * @param {object} options A specific set of options for this message [optional] - * @return {Raven} - */ - captureMessage: function captureMessage(msg, options) { - // config() automagically converts ignoreErrors from a list to a RegExp so we need to test for an - // early call; we'll error on the side of logging anything called before configuration since it's - // probably something you should see: - if (!!this._globalOptions.ignoreErrors.test && this._globalOptions.ignoreErrors.test(msg)) { - return; - } + _normalizeFrame: function(frame, stackInfoUrl) { + // normalize the frames data + var normalized = { + filename: frame.url, + lineno: frame.line, + colno: frame.column, + function: frame.func || '?' + }; - options = options || {}; - var data = objectMerge({ - message: msg + '' // Make sure it's actually a string + // Case when we don't have any information about the error + // E.g. throwing a string or raw object, instead of an `Error` in Firefox + // Generating synthetic error doesn't add any value here + // + // We should probably somehow let a user know that they should fix their code + if (!frame.url) { + normalized.filename = stackInfoUrl; // fallback to whole stacks url from onerror handler + } - }, options); - var ex; // Generate a "synthetic" stack trace from this point. - // NOTE: If you are a Sentry user, and you are seeing this stack frame, it is NOT indicative - // of a bug with Raven.js. Sentry generates synthetic traces either by configuration, - // or if it catches a thrown object without a "stack" property. + normalized.in_app = !// determine if an exception came from outside of our app + // first we check the global includePaths list. + ( + (!!this._globalOptions.includePaths.test && + !this._globalOptions.includePaths.test(normalized.filename)) || + // Now we check for fun, if the function name is Raven or TraceKit + /(Raven|TraceKit)\./.test(normalized['function']) || + // finally, we do a last ditch effort and check for raven.min.js + /raven\.(min\.)?js$/.test(normalized.filename) + ); - try { - throw new Error(msg); - } catch (ex1) { - ex = ex1; - } // null exception name so `Error` isn't prefixed to msg + return normalized; + }, + _processException: function(type, message, fileurl, lineno, frames, options) { + var prefixedMessage = (type ? type + ': ' : '') + (message || ''); + if ( + !!this._globalOptions.ignoreErrors.test && + (this._globalOptions.ignoreErrors.test(message) || + this._globalOptions.ignoreErrors.test(prefixedMessage)) + ) { + return; + } - ex.name = null; - var stack = tracekit.computeStackTrace(ex); // stack[0] is `throw new Error(msg)` call itself, we are interested in the frame that was just before that, stack[1] + var stacktrace; - var initialCall = isArray(stack.stack) && stack.stack[1]; - var fileurl = initialCall && initialCall.url || ''; + if (frames && frames.length) { + fileurl = frames[0].filename || fileurl; + // Sentry expects frames oldest to newest + // and JS sends them as newest to oldest + frames.reverse(); + stacktrace = {frames: frames}; + } else if (fileurl) { + stacktrace = { + frames: [ + { + filename: fileurl, + lineno: lineno, + in_app: true + } + ] + }; + } - if (!!this._globalOptions.ignoreUrls.test && this._globalOptions.ignoreUrls.test(fileurl)) { + if ( + !!this._globalOptions.ignoreUrls.test && + this._globalOptions.ignoreUrls.test(fileurl) + ) { return; } - if (!!this._globalOptions.whitelistUrls.test && !this._globalOptions.whitelistUrls.test(fileurl)) { + if ( + !!this._globalOptions.whitelistUrls.test && + !this._globalOptions.whitelistUrls.test(fileurl) + ) { return; } - if (this._globalOptions.stacktrace || options && options.stacktrace) { - options = objectMerge({ - // fingerprint on msg, not stack trace (legacy behavior, could be - // revisited) - fingerprint: msg, - // since we know this is a synthetic trace, the top N-most frames - // MUST be from Raven.js, so mark them as in_app later by setting - // trimHeadFrames - trimHeadFrames: (options.trimHeadFrames || 0) + 1 - }, options); - - var frames = this._prepareFrames(stack, options); - - data.stacktrace = { - // Sentry expects frames oldest to newest - frames: frames.reverse() - }; - } // Fire away! - + var data = objectMerge( + { + // sentry.interfaces.Exception + exception: { + values: [ + { + type: type, + value: message, + stacktrace: stacktrace + } + ] + }, + culprit: fileurl + }, + options + ); + // Fire away! this._send(data); - - return this; }, - captureBreadcrumb: function captureBreadcrumb(obj) { - var crumb = objectMerge({ - timestamp: now() / 1000 - }, obj); - if (isFunction(this._globalOptions.breadcrumbCallback)) { - var result = this._globalOptions.breadcrumbCallback(crumb); + _trimPacket: function(data) { + // For now, we only want to truncate the two different messages + // but this could/should be expanded to just trim everything + var max = this._globalOptions.maxMessageLength; + if (data.message) { + data.message = truncate(data.message, max); + } + if (data.exception) { + var exception = data.exception.values[0]; + exception.value = truncate(exception.value, max); + } - if (isObject(result) && !isEmptyObject(result)) { - crumb = result; - } else if (result === false) { - return this; + var request = data.request; + if (request) { + if (request.url) { + request.url = truncate(request.url, this._globalOptions.maxUrlLength); + } + if (request.Referer) { + request.Referer = truncate(request.Referer, this._globalOptions.maxUrlLength); } } - this._breadcrumbs.push(crumb); - - if (this._breadcrumbs.length > this._globalOptions.maxBreadcrumbs) { - this._breadcrumbs.shift(); - } + if (data.breadcrumbs && data.breadcrumbs.values) + this._trimBreadcrumbs(data.breadcrumbs); - return this; + return data; }, - addPlugin: function addPlugin(plugin - /*arg1, arg2, ... argN*/ - ) { - var pluginArgs = [].slice.call(arguments, 1); - this._plugins.push([plugin, pluginArgs]); + /** + * Truncate breadcrumb values (right now just URLs) + */ + _trimBreadcrumbs: function(breadcrumbs) { + // known breadcrumb properties with urls + // TODO: also consider arbitrary prop values that start with (https?)?:// + var urlProps = ['to', 'from', 'url'], + urlProp, + crumb, + data; - if (this._isRavenInstalled) { - this._drainPlugins(); - } + for (var i = 0; i < breadcrumbs.values.length; ++i) { + crumb = breadcrumbs.values[i]; + if ( + !crumb.hasOwnProperty('data') || + !isObject(crumb.data) || + objectFrozen(crumb.data) + ) + continue; - return this; - }, - - /* - * Set/clear a user to be sent along with the payload. - * - * @param {object} user An object representing user data [optional] - * @return {Raven} - */ - setUserContext: function setUserContext(user) { - // Intentionally do not merge here since that's an unexpected behavior. - this._globalContext.user = user; - return this; - }, - - /* - * Merge extra attributes to be sent along with the payload. - * - * @param {object} extra An object representing extra data [optional] - * @return {Raven} - */ - setExtraContext: function setExtraContext(extra) { - this._mergeContext('extra', extra); - - return this; - }, - - /* - * Merge tags to be sent along with the payload. - * - * @param {object} tags An object representing tags [optional] - * @return {Raven} - */ - setTagsContext: function setTagsContext(tags) { - this._mergeContext('tags', tags); - - return this; + data = objectMerge({}, crumb.data); + for (var j = 0; j < urlProps.length; ++j) { + urlProp = urlProps[j]; + if (data.hasOwnProperty(urlProp) && data[urlProp]) { + data[urlProp] = truncate(data[urlProp], this._globalOptions.maxUrlLength); + } + } + breadcrumbs.values[i].data = data; + } }, - /* - * Clear all of the context. - * - * @return {Raven} - */ - clearContext: function clearContext() { - this._globalContext = {}; - return this; - }, + _getHttpData: function() { + if (!this._hasNavigator && !this._hasDocument) return; + var httpData = {}; - /* - * Get a copy of the current context. This cannot be mutated. - * - * @return {object} copy of context - */ - getContext: function getContext() { - // lol javascript - return JSON.parse(stringify_1(this._globalContext)); - }, + if (this._hasNavigator && _navigator.userAgent) { + httpData.headers = { + 'User-Agent': navigator.userAgent + }; + } - /* - * Set environment of application - * - * @param {string} environment Typically something like 'production'. - * @return {Raven} - */ - setEnvironment: function setEnvironment(environment) { - this._globalOptions.environment = environment; - return this; - }, + // Check in `window` instead of `document`, as we may be in ServiceWorker environment + if (_window.location && _window.location.href) { + httpData.url = _window.location.href; + } - /* - * Set release version of application - * - * @param {string} release Typically something like a git SHA to identify version - * @return {Raven} - */ - setRelease: function setRelease(release) { - this._globalOptions.release = release; - return this; - }, + if (this._hasDocument && _document.referrer) { + if (!httpData.headers) httpData.headers = {}; + httpData.headers.Referer = _document.referrer; + } - /* - * Set the dataCallback option - * - * @param {function} callback The callback to run which allows the - * data blob to be mutated before sending - * @return {Raven} - */ - setDataCallback: function setDataCallback(callback) { - var original = this._globalOptions.dataCallback; - this._globalOptions.dataCallback = keepOriginalCallback(original, callback); - return this; + return httpData; }, - /* - * Set the breadcrumbCallback option - * - * @param {function} callback The callback to run which allows filtering - * or mutating breadcrumbs - * @return {Raven} - */ - setBreadcrumbCallback: function setBreadcrumbCallback(callback) { - var original = this._globalOptions.breadcrumbCallback; - this._globalOptions.breadcrumbCallback = keepOriginalCallback(original, callback); - return this; + _resetBackoff: function() { + this._backoffDuration = 0; + this._backoffStart = null; }, - /* - * Set the shouldSendCallback option - * - * @param {function} callback The callback to run which allows - * introspecting the blob before sending - * @return {Raven} - */ - setShouldSendCallback: function setShouldSendCallback(callback) { - var original = this._globalOptions.shouldSendCallback; - this._globalOptions.shouldSendCallback = keepOriginalCallback(original, callback); - return this; + _shouldBackoff: function() { + return this._backoffDuration && now() - this._backoffStart < this._backoffDuration; }, /** - * Override the default HTTP transport mechanism that transmits data - * to the Sentry server. - * - * @param {function} transport Function invoked instead of the default - * `makeRequest` handler. + * Returns true if the in-process data payload matches the signature + * of the previously-sent data * - * @return {Raven} + * NOTE: This has to be done at this level because TraceKit can generate + * data from window.onerror WITHOUT an exception object (IE8, IE9, + * other old browsers). This can take the form of an "exception" + * data object with a single frame (derived from the onerror args). */ - setTransport: function setTransport(transport) { - this._globalOptions.transport = transport; - return this; - }, + _isRepeatData: function(current) { + var last = this._lastData; - /* - * Get the latest raw exception that was captured by Raven. - * - * @return {error} - */ - lastException: function lastException() { - return this._lastCapturedException; - }, + if ( + !last || + current.message !== last.message || // defined for captureMessage + current.culprit !== last.culprit // defined for captureException/onerror + ) + return false; - /* - * Get the last event id - * - * @return {string} - */ - lastEventId: function lastEventId() { - return this._lastEventId; + // Stacktrace interface (i.e. from captureMessage) + if (current.stacktrace || last.stacktrace) { + return isSameStacktrace(current.stacktrace, last.stacktrace); + } else if (current.exception || last.exception) { + // Exception interface (i.e. from captureException/onerror) + return isSameException(current.exception, last.exception); + } + + return true; }, - /* - * Determine if Raven is setup and ready to go. - * - * @return {boolean} - */ - isSetup: function isSetup() { - if (!this._hasJSON) return false; // needs JSON support + _setBackoffState: function(request) { + // If we are already in a backoff state, don't change anything + if (this._shouldBackoff()) { + return; + } - if (!this._globalServer) { - if (!this.ravenNotConfiguredError) { - this.ravenNotConfiguredError = true; + var status = request.status; - this._logDebug('error', 'Error: Raven has not been configured.'); + // 400 - project_id doesn't exist or some other fatal + // 401 - invalid/revoked dsn + // 429 - too many requests + if (!(status === 400 || status === 401 || status === 429)) return; + + var retry; + try { + // If Retry-After is not in Access-Control-Expose-Headers, most + // browsers will throw an exception trying to access it + if (supportsFetch()) { + retry = request.headers.get('Retry-After'); + } else { + retry = request.getResponseHeader('Retry-After'); } - return false; + // Retry-After is returned in seconds + retry = parseInt(retry, 10) * 1000; + } catch (e) { + /* eslint no-empty:0 */ } - return true; - }, - afterLoad: function afterLoad() { - // TODO: remove window dependence? - // Attempt to initialize Raven on load - var RavenConfig = _window$1.RavenConfig; + this._backoffDuration = retry + ? // If Sentry server returned a Retry-After value, use it + retry + : // Otherwise, double the last backoff duration (starts at 1 sec) + this._backoffDuration * 2 || 1000; - if (RavenConfig) { - this.config(RavenConfig.dsn, RavenConfig.config).install(); - } + this._backoffStart = now(); }, - showReportDialog: function showReportDialog(options) { - if (!_document // doesn't work without a document (React native) - ) return; - options = options || {}; - var lastEventId = options.eventId || this.lastEventId(); - if (!lastEventId) { - throw new configError('Missing eventId'); - } + _send: function(data) { + var globalOptions = this._globalOptions; - var dsn = options.dsn || this._dsn; + var baseData = { + project: this._globalProject, + logger: globalOptions.logger, + platform: 'javascript' + }, + httpData = this._getHttpData(); - if (!dsn) { - throw new configError('Missing DSN'); + if (httpData) { + baseData.request = httpData; } - var encode = encodeURIComponent; - var qs = ''; - qs += '?eventId=' + encode(lastEventId); - qs += '&dsn=' + encode(dsn); - var user = options.user || this._globalContext.user; + // HACK: delete `trimHeadFrames` to prevent from appearing in outbound payload + if (data.trimHeadFrames) delete data.trimHeadFrames; - if (user) { - if (user.name) qs += '&name=' + encode(user.name); - if (user.email) qs += '&email=' + encode(user.email); + data = objectMerge(baseData, data); + + // Merge in the tags and extra separately since objectMerge doesn't handle a deep merge + data.tags = objectMerge(objectMerge({}, this._globalContext.tags), data.tags); + data.extra = objectMerge(objectMerge({}, this._globalContext.extra), data.extra); + + // Send along our own collected metadata with extra + data.extra['session:duration'] = now() - this._startTime; + + if (this._breadcrumbs && this._breadcrumbs.length > 0) { + // intentionally make shallow copy so that additions + // to breadcrumbs aren't accidentally sent in this request + data.breadcrumbs = { + values: [].slice.call(this._breadcrumbs, 0) + }; } - var globalServer = this._getGlobalServer(this._parseDSN(dsn)); + if (this._globalContext.user) { + // sentry.interfaces.User + data.user = this._globalContext.user; + } - var script = _document.createElement('script'); + // Include the environment if it's defined in globalOptions + if (globalOptions.environment) data.environment = globalOptions.environment; - script.async = true; - script.src = globalServer + '/api/embed/error-page/' + qs; + // Include the release if it's defined in globalOptions + if (globalOptions.release) data.release = globalOptions.release; - (_document.head || _document.body).appendChild(script); - }, + // Include server_name if it's defined in globalOptions + if (globalOptions.serverName) data.server_name = globalOptions.serverName; - /**** Private functions ****/ - _ignoreNextOnError: function _ignoreNextOnError() { - var self = this; - this._ignoreOnError += 1; - setTimeout(function () { - // onerror should trigger before setTimeout - self._ignoreOnError -= 1; + data = this._sanitizeData(data); + + // Cleanup empty properties before sending them to the server + Object.keys(data).forEach(function(key) { + if (data[key] == null || data[key] === '' || isEmptyObject(data[key])) { + delete data[key]; + } }); - }, - _triggerEvent: function _triggerEvent(eventType, options) { - // NOTE: `event` is a native browser thing, so let's avoid conflicting wiht it - var evt, key; - if (!this._hasDocument) return; - options = options || {}; - eventType = 'raven' + eventType.substr(0, 1).toUpperCase() + eventType.substr(1); - if (_document.createEvent) { - evt = _document.createEvent('HTMLEvents'); - evt.initEvent(eventType, true, true); - } else { - evt = _document.createEventObject(); - evt.eventType = eventType; + if (isFunction(globalOptions.dataCallback)) { + data = globalOptions.dataCallback(data) || data; } - for (key in options) { - if (hasKey(options, key)) { - evt[key] = options[key]; - } + // Why?????????? + if (!data || isEmptyObject(data)) { + return; } - if (_document.createEvent) { - // IE9 if standards - _document.dispatchEvent(evt); - } else { - // IE8 regardless of Quirks or Standards - // IE9 if quirks - try { - _document.fireEvent('on' + evt.eventType.toLowerCase(), evt); - } catch (e) {// Do nothing - } + // Check if the request should be filtered or not + if ( + isFunction(globalOptions.shouldSendCallback) && + !globalOptions.shouldSendCallback(data) + ) { + return; } - }, - - /** - * Wraps addEventListener to capture UI breadcrumbs - * @param evtName the event name (e.g. "click") - * @returns {Function} - * @private - */ - _breadcrumbEventHandler: function _breadcrumbEventHandler(evtName) { - var self = this; - return function (evt) { - // reset keypress timeout; e.g. triggering a 'click' after - // a 'keypress' will reset the keypress debounce so that a new - // set of keypresses can be recorded - self._keypressTimeout = null; // It's possible this handler might trigger multiple times for the same - // event (e.g. event propagation through node ancestors). Ignore if we've - // already captured the event. - - if (self._lastCapturedEvent === evt) return; - self._lastCapturedEvent = evt; // try/catch both: - // - accessing evt.target (see getsentry/raven-js#838, #768) - // - `htmlTreeAsString` because it's complex, and just accessing the DOM incorrectly - // can throw an exception in some circumstances. - var target; + // Backoff state: Sentry server previously responded w/ an error (e.g. 429 - too many requests), + // so drop requests until "cool-off" period has elapsed. + if (this._shouldBackoff()) { + this._logDebug('warn', 'Raven dropped error due to backoff: ', data); + return; + } - try { - target = htmlTreeAsString(evt.target); - } catch (e) { - target = ''; + if (typeof globalOptions.sampleRate === 'number') { + if (Math.random() < globalOptions.sampleRate) { + this._sendProcessedPayload(data); } - - self.captureBreadcrumb({ - category: 'ui.' + evtName, - // e.g. ui.click, ui.input - message: target - }); - }; + } else { + this._sendProcessedPayload(data); + } }, - /** - * Wraps addEventListener to capture keypress UI events - * @returns {Function} - * @private - */ - _keypressEventHandler: function _keypressEventHandler() { - var self = this, - debounceDuration = 1000; // milliseconds - // TODO: if somehow user switches keypress target before - // debounce timeout is triggered, we will only capture - // a single breadcrumb from the FIRST target (acceptable?) + _sanitizeData: function(data) { + return sanitize(data, this._globalOptions.sanitizeKeys); + }, - return function (evt) { - var target; + _getUuid: function() { + return uuid4(); + }, - try { - target = evt.target; - } catch (e) { - // just accessing event properties can throw an exception in some rare circumstances - // see: https://github.com/getsentry/raven-js/issues/838 - return; - } + _sendProcessedPayload: function(data, callback) { + var self = this; + var globalOptions = this._globalOptions; - var tagName = target && target.tagName; // only consider keypress events on actual input elements - // this will disregard keypresses targeting body (e.g. tabbing - // through elements, hotkeys, etc) + if (!this.isSetup()) return; - if (!tagName || tagName !== 'INPUT' && tagName !== 'TEXTAREA' && !target.isContentEditable) return; // record first keypress in a series, but ignore subsequent - // keypresses until debounce clears + // Try and clean up the packet before sending by truncating long values + data = this._trimPacket(data); - var timeout = self._keypressTimeout; + // ideally duplicate error testing should occur *before* dataCallback/shouldSendCallback, + // but this would require copying an un-truncated copy of the data packet, which can be + // arbitrarily deep (extra_data) -- could be worthwhile? will revisit + if (!this._globalOptions.allowDuplicates && this._isRepeatData(data)) { + this._logDebug('warn', 'Raven dropped repeat event: ', data); + return; + } - if (!timeout) { - self._breadcrumbEventHandler('input')(evt); - } + // Send along an event_id if not explicitly passed. + // This event_id can be used to reference the error within Sentry itself. + // Set lastEventId after we know the error should actually be sent + this._lastEventId = data.event_id || (data.event_id = this._getUuid()); - clearTimeout(timeout); - self._keypressTimeout = setTimeout(function () { - self._keypressTimeout = null; - }, debounceDuration); - }; - }, + // Store outbound payload after trim + this._lastData = data; - /** - * Captures a breadcrumb of type "navigation", normalizing input URLs - * @param to the originating URL - * @param from the target URL - * @private - */ - _captureUrlChange: function _captureUrlChange(from, to) { - var parsedLoc = parseUrl(this._location.href); - var parsedTo = parseUrl(to); - var parsedFrom = parseUrl(from); // because onpopstate only tells you the "new" (to) value of location.href, and - // not the previous (from) value, we need to track the value of the current URL - // state ourselves + this._logDebug('debug', 'Raven about to send:', data); - this._lastHref = to; // Use only the path component of the URL if the URL matches the current - // document (almost all the time when using pushState) + var auth = { + sentry_version: '7', + sentry_client: 'raven-js/' + this.VERSION, + sentry_key: this._globalKey + }; - if (parsedLoc.protocol === parsedTo.protocol && parsedLoc.host === parsedTo.host) to = parsedTo.relative; - if (parsedLoc.protocol === parsedFrom.protocol && parsedLoc.host === parsedFrom.host) from = parsedFrom.relative; - this.captureBreadcrumb({ - category: 'navigation', - data: { - to: to, - from: from - } - }); - }, - _patchFunctionToString: function _patchFunctionToString() { - var self = this; - self._originalFunctionToString = Function.prototype.toString; // eslint-disable-next-line no-extend-native + if (this._globalSecret) { + auth.sentry_secret = this._globalSecret; + } - Function.prototype.toString = function () { - if (typeof this === 'function' && this.__raven__) { - return self._originalFunctionToString.apply(this.__orig__, arguments); - } + var exception = data.exception && data.exception.values[0]; - return self._originalFunctionToString.apply(this, arguments); - }; - }, - _unpatchFunctionToString: function _unpatchFunctionToString() { - if (this._originalFunctionToString) { - // eslint-disable-next-line no-extend-native - Function.prototype.toString = this._originalFunctionToString; + // only capture 'sentry' breadcrumb is autoBreadcrumbs is truthy + if ( + this._globalOptions.autoBreadcrumbs && + this._globalOptions.autoBreadcrumbs.sentry + ) { + this.captureBreadcrumb({ + category: 'sentry', + message: exception + ? (exception.type ? exception.type + ': ' : '') + exception.value + : data.message, + event_id: data.event_id, + level: data.level || 'error' // presume error unless specified + }); } - }, - /** - * Wrap timer functions and event targets to catch errors and provide - * better metadata. - */ - _instrumentTryCatch: function _instrumentTryCatch() { - var self = this; - var wrappedBuiltIns = self._wrappedBuiltIns; + var url = this._globalEndpoint; + (globalOptions.transport || this._makeRequest).call(this, { + url: url, + auth: auth, + data: data, + options: globalOptions, + onSuccess: function success() { + self._resetBackoff(); - function wrapTimeFn(orig) { - return function (fn, t) { - // preserve arity - // Make a copy of the arguments to prevent deoptimization - // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments - var args = new Array(arguments.length); + self._triggerEvent('success', { + data: data, + src: url + }); + callback && callback(); + }, + onError: function failure(error) { + self._logDebug('error', 'Raven transport failed to send: ', error); - for (var i = 0; i < args.length; ++i) { - args[i] = arguments[i]; + if (error.request) { + self._setBackoffState(error.request); } - var originalCallback = args[0]; + self._triggerEvent('failure', { + data: data, + src: url + }); + error = error || new Error('Raven send failed (no additional details provided)'); + callback && callback(error); + } + }); + }, - if (isFunction(originalCallback)) { - args[0] = self.wrap(originalCallback); - } // IE < 9 doesn't support .call/.apply on setInterval/setTimeout, but it - // also supports only two arguments and doesn't care what this is, so we - // can just call the original function directly. + _makeRequest: function(opts) { + // Auth is intentionally sent as part of query string (NOT as custom HTTP header) to avoid preflight CORS requests + var url = opts.url + '?' + urlencode(opts.auth); + var evaluatedHeaders = null; + var evaluatedFetchParameters = {}; - if (orig.apply) { - return orig.apply(this, args); - } else { - return orig(args[0], args[1]); - } - }; + if (opts.options.headers) { + evaluatedHeaders = this._evaluateHash(opts.options.headers); } - var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; - - function wrapEventTarget(global) { - var proto = _window$1[global] && _window$1[global].prototype; + if (opts.options.fetchParameters) { + evaluatedFetchParameters = this._evaluateHash(opts.options.fetchParameters); + } - if (proto && proto.hasOwnProperty && proto.hasOwnProperty('addEventListener')) { - fill(proto, 'addEventListener', function (orig) { - return function (evtName, fn, capture, secure) { - // preserve arity - try { - if (fn && fn.handleEvent) { - fn.handleEvent = self.wrap(fn.handleEvent); - } - } catch (err) {} // can sometimes get 'Permission denied to access property "handle Event' - // More breadcrumb DOM capture ... done here and not in `_instrumentBreadcrumbs` - // so that we don't have more than one wrapper function + if (supportsFetch()) { + evaluatedFetchParameters.body = stringify(opts.data); + var defaultFetchOptions = objectMerge({}, this._fetchDefaults); + var fetchOptions = objectMerge(defaultFetchOptions, evaluatedFetchParameters); - var before, clickHandler, keypressHandler; + if (evaluatedHeaders) { + fetchOptions.headers = evaluatedHeaders; + } - if (autoBreadcrumbs && autoBreadcrumbs.dom && (global === 'EventTarget' || global === 'Node')) { - // NOTE: generating multiple handlers per addEventListener invocation, should - // revisit and verify we can just use one (almost certainly) - clickHandler = self._breadcrumbEventHandler('click'); - keypressHandler = self._keypressEventHandler(); + return _window + .fetch(url, fetchOptions) + .then(function(response) { + if (response.ok) { + opts.onSuccess && opts.onSuccess(); + } else { + var error = new Error('Sentry error code: ' + response.status); + // It's called request only to keep compatibility with XHR interface + // and not add more redundant checks in setBackoffState method + error.request = response; + opts.onError && opts.onError(error); + } + }) + ['catch'](function() { + opts.onError && + opts.onError(new Error('Sentry error code: network unavailable')); + }); + } - before = function before(evt) { - // need to intercept every DOM event in `before` argument, in case that - // same wrapped method is re-used for different events (e.g. mousemove THEN click) - // see #724 - if (!evt) return; - var eventType; + var request = _window.XMLHttpRequest && new _window.XMLHttpRequest(); + if (!request) return; - try { - eventType = evt.type; - } catch (e) { - // just accessing event properties can throw an exception in some rare circumstances - // see: https://github.com/getsentry/raven-js/issues/838 - return; - } + // if browser doesn't support CORS (e.g. IE7), we are out of luck + var hasCORS = 'withCredentials' in request || typeof XDomainRequest !== 'undefined'; - if (eventType === 'click') return clickHandler(evt);else if (eventType === 'keypress') return keypressHandler(evt); - }; - } + if (!hasCORS) return; - return orig.call(this, evtName, self.wrap(fn, undefined, before), capture, secure); - }; - }, wrappedBuiltIns); - fill(proto, 'removeEventListener', function (orig) { - return function (evt, fn, capture, secure) { - try { - fn = fn && (fn.__raven_wrapper__ ? fn.__raven_wrapper__ : fn); - } catch (e) {// ignore, accessing __raven_wrapper__ will throw in some Selenium environments - } + if ('withCredentials' in request) { + request.onreadystatechange = function() { + if (request.readyState !== 4) { + return; + } else if (request.status === 200) { + opts.onSuccess && opts.onSuccess(); + } else if (opts.onError) { + var err = new Error('Sentry error code: ' + request.status); + err.request = request; + opts.onError(err); + } + }; + } else { + request = new XDomainRequest(); + // xdomainrequest cannot go http -> https (or vice versa), + // so always use protocol relative + url = url.replace(/^https?:/, ''); - return orig.call(this, evt, fn, capture, secure); - }; - }, wrappedBuiltIns); + // onreadystatechange not supported by XDomainRequest + if (opts.onSuccess) { + request.onload = opts.onSuccess; + } + if (opts.onError) { + request.onerror = function() { + var err = new Error('Sentry error code: XDomainRequest'); + err.request = request; + opts.onError(err); + }; } } - fill(_window$1, 'setTimeout', wrapTimeFn, wrappedBuiltIns); - fill(_window$1, 'setInterval', wrapTimeFn, wrappedBuiltIns); + request.open('POST', url); - if (_window$1.requestAnimationFrame) { - fill(_window$1, 'requestAnimationFrame', function (orig) { - return function (cb) { - return orig(self.wrap(cb)); - }; - }, wrappedBuiltIns); - } // event targets borrowed from bugsnag-js: - // https://github.com/bugsnag/bugsnag-js/blob/master/src/bugsnag.js#L666 - - - var eventTargets = ['EventTarget', 'Window', 'Node', 'ApplicationCache', 'AudioTrackList', 'ChannelMergerNode', 'CryptoOperation', 'EventSource', 'FileReader', 'HTMLUnknownElement', 'IDBDatabase', 'IDBRequest', 'IDBTransaction', 'KeyOperation', 'MediaController', 'MessagePort', 'ModalWindow', 'Notification', 'SVGElementInstance', 'Screen', 'TextTrack', 'TextTrackCue', 'TextTrackList', 'WebSocket', 'WebSocketWorker', 'Worker', 'XMLHttpRequest', 'XMLHttpRequestEventTarget', 'XMLHttpRequestUpload']; - - for (var i = 0; i < eventTargets.length; i++) { - wrapEventTarget(eventTargets[i]); + if (evaluatedHeaders) { + each(evaluatedHeaders, function(key, value) { + request.setRequestHeader(key, value); + }); } + + request.send(stringify(opts.data)); }, - /** - * Instrument browser built-ins w/ breadcrumb capturing - * - XMLHttpRequests - * - DOM interactions (click/typing) - * - window.location changes - * - console - * - * Can be disabled or individually configured via the `autoBreadcrumbs` config option - */ - _instrumentBreadcrumbs: function _instrumentBreadcrumbs() { - var self = this; - var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; - var wrappedBuiltIns = self._wrappedBuiltIns; + _evaluateHash: function(hash) { + var evaluated = {}; - function wrapProp(prop, xhr) { - if (prop in xhr && isFunction(xhr[prop])) { - fill(xhr, prop, function (orig) { - return self.wrap(orig); - }); // intentionally don't track filled methods on XHR instances + for (var key in hash) { + if (hash.hasOwnProperty(key)) { + var value = hash[key]; + evaluated[key] = typeof value === 'function' ? value() : value; } } - if (autoBreadcrumbs.xhr && 'XMLHttpRequest' in _window$1) { - var xhrproto = XMLHttpRequest.prototype; - fill(xhrproto, 'open', function (origOpen) { - return function (method, url) { - // preserve arity - // if Sentry key appears in URL, don't capture - if (isString(url) && url.indexOf(self._globalKey) === -1) { - this.__raven_xhr = { - method: method, - url: url, - status_code: null - }; - } + return evaluated; + }, - return origOpen.apply(this, arguments); - }; - }, wrappedBuiltIns); - fill(xhrproto, 'send', function (origSend) { - return function () { - // preserve arity - var xhr = this; - - function onreadystatechangeHandler() { - if (xhr.__raven_xhr && xhr.readyState === 4) { - try { - // touching statusCode in some platforms throws - // an exception - xhr.__raven_xhr.status_code = xhr.status; - } catch (e) { - /* do nothing */ - } + _logDebug: function(level) { + // We allow `Raven.debug` and `Raven.config(DSN, { debug: true })` to not make backward incompatible API change + if ( + this._originalConsoleMethods[level] && + (this.debug || this._globalOptions.debug) + ) { + // In IE<10 console methods do not have their own 'apply' method + Function.prototype.apply.call( + this._originalConsoleMethods[level], + this._originalConsole, + [].slice.call(arguments, 1) + ); + } + }, - self.captureBreadcrumb({ - type: 'http', - category: 'xhr', - data: xhr.__raven_xhr - }); - } - } + _mergeContext: function(key, context) { + if (isUndefined(context)) { + delete this._globalContext[key]; + } else { + this._globalContext[key] = objectMerge(this._globalContext[key] || {}, context); + } + } +}; - var props = ['onload', 'onerror', 'onprogress']; +// Deprecations +Raven.prototype.setUser = Raven.prototype.setUserContext; +Raven.prototype.setReleaseContext = Raven.prototype.setRelease; - for (var j = 0; j < props.length; j++) { - wrapProp(props[j], xhr); - } +module.exports = Raven; - if ('onreadystatechange' in xhr && isFunction(xhr.onreadystatechange)) { - fill(xhr, 'onreadystatechange', function (orig) { - return self.wrap(orig, undefined, onreadystatechangeHandler); - } - /* intentionally don't track this instrumentation */ - ); - } else { - // if onreadystatechange wasn't actually set by the page on this xhr, we - // are free to set our own and capture the breadcrumb - xhr.onreadystatechange = onreadystatechangeHandler; - } +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"10":10,"11":11,"4":4,"5":5,"8":8,"9":9}],7:[function(_dereq_,module,exports){ +(function (global){ +/** + * Enforces a single instance of the Raven client, and the + * main entry point for Raven. If you are a consumer of the + * Raven library, you SHOULD load this file (vs raven.js). + **/ - return origSend.apply(this, arguments); - }; - }, wrappedBuiltIns); - } +var RavenConstructor = _dereq_(6); - if (autoBreadcrumbs.xhr && supportsFetch()) { - fill(_window$1, 'fetch', function (origFetch) { - return function () { - // preserve arity - // Make a copy of the arguments to prevent deoptimization - // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments - var args = new Array(arguments.length); - - for (var i = 0; i < args.length; ++i) { - args[i] = arguments[i]; - } +// This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) +var _window = + typeof window !== 'undefined' + ? window + : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; +var _Raven = _window.Raven; - var fetchInput = args[0]; - var method = 'GET'; - var url; +var Raven = new RavenConstructor(); - if (typeof fetchInput === 'string') { - url = fetchInput; - } else if ('Request' in _window$1 && fetchInput instanceof _window$1.Request) { - url = fetchInput.url; +/* + * Allow multiple versions of Raven to be installed. + * Strip Raven from the global context and returns the instance. + * + * @return {Raven} + */ +Raven.noConflict = function() { + _window.Raven = _Raven; + return Raven; +}; - if (fetchInput.method) { - method = fetchInput.method; - } - } else { - url = '' + fetchInput; - } // if Sentry key appears in URL, don't capture, as it's our own request +Raven.afterLoad(); +module.exports = Raven; - if (url.indexOf(self._globalKey) !== -1) { - return origFetch.apply(this, args); - } +/** + * DISCLAIMER: + * + * Expose `Client` constructor for cases where user want to track multiple "sub-applications" in one larger app. + * It's not meant to be used by a wide audience, so pleaaase make sure that you know what you're doing before using it. + * Accidentally calling `install` multiple times, may result in an unexpected behavior that's very hard to debug. + * + * It's called `Client' to be in-line with Raven Node implementation. + * + * HOWTO: + * + * import Raven from 'raven-js'; + * + * const someAppReporter = new Raven.Client(); + * const someOtherAppReporter = new Raven.Client(); + * + * someAppReporter.config('__DSN__', { + * ...config goes here + * }); + * + * someOtherAppReporter.config('__OTHER_DSN__', { + * ...config goes here + * }); + * + * someAppReporter.captureMessage(...); + * someAppReporter.captureException(...); + * someAppReporter.captureBreadcrumb(...); + * + * someOtherAppReporter.captureMessage(...); + * someOtherAppReporter.captureException(...); + * someOtherAppReporter.captureBreadcrumb(...); + * + * It should "just work". + */ +module.exports.Client = RavenConstructor; - if (args[1] && args[1].method) { - method = args[1].method; - } +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"6":6}],8:[function(_dereq_,module,exports){ +(function (global){ +var stringify = _dereq_(10); - var fetchData = { - method: method, - url: url, - status_code: null - }; - return origFetch.apply(this, args).then(function (response) { - fetchData.status_code = response.status; - self.captureBreadcrumb({ - type: 'http', - category: 'fetch', - data: fetchData - }); - return response; - }); - }; - }, wrappedBuiltIns); - } // Capture breadcrumbs from any click that is unhandled / bubbled up all the way - // to the document. Do this before we instrument addEventListener. +var _window = + typeof window !== 'undefined' + ? window + : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; +function isObject(what) { + return typeof what === 'object' && what !== null; +} - if (autoBreadcrumbs.dom && this._hasDocument) { - if (_document.addEventListener) { - _document.addEventListener('click', self._breadcrumbEventHandler('click'), false); +// Yanked from https://git.io/vS8DV re-used under CC0 +// with some tiny modifications +function isError(value) { + switch ({}.toString.call(value)) { + case '[object Error]': + return true; + case '[object Exception]': + return true; + case '[object DOMException]': + return true; + default: + return value instanceof Error; + } +} - _document.addEventListener('keypress', self._keypressEventHandler(), false); - } else { - // IE8 Compatibility - _document.attachEvent('onclick', self._breadcrumbEventHandler('click')); +function isErrorEvent(value) { + return supportsErrorEvent() && {}.toString.call(value) === '[object ErrorEvent]'; +} - _document.attachEvent('onkeypress', self._keypressEventHandler()); - } - } // record navigation (URL) changes - // NOTE: in Chrome App environment, touching history.pushState, *even inside - // a try/catch block*, will cause Chrome to output an error to console.error - // borrowed from: https://github.com/angular/angular.js/pull/13945/files +function isUndefined(what) { + return what === void 0; +} + +function isFunction(what) { + return typeof what === 'function'; +} +function isPlainObject(what) { + return Object.prototype.toString.call(what) === '[object Object]'; +} - var chrome = _window$1.chrome; - var isChromePackagedApp = chrome && chrome.app && chrome.app.runtime; - var hasPushAndReplaceState = !isChromePackagedApp && _window$1.history && history.pushState && history.replaceState; +function isString(what) { + return Object.prototype.toString.call(what) === '[object String]'; +} - if (autoBreadcrumbs.location && hasPushAndReplaceState) { - // TODO: remove onpopstate handler on uninstall() - var oldOnPopState = _window$1.onpopstate; +function isArray(what) { + return Object.prototype.toString.call(what) === '[object Array]'; +} - _window$1.onpopstate = function () { - var currentHref = self._location.href; +function isEmptyObject(what) { + if (!isPlainObject(what)) return false; - self._captureUrlChange(self._lastHref, currentHref); + for (var _ in what) { + if (what.hasOwnProperty(_)) { + return false; + } + } + return true; +} - if (oldOnPopState) { - return oldOnPopState.apply(this, arguments); - } - }; +function supportsErrorEvent() { + try { + new ErrorEvent(''); // eslint-disable-line no-new + return true; + } catch (e) { + return false; + } +} - var historyReplacementFunction = function historyReplacementFunction(origHistFunction) { - // note history.pushState.length is 0; intentionally not declaring - // params to preserve 0 arity - return function () - /* state, title, url */ - { - var url = arguments.length > 2 ? arguments[2] : undefined; // url argument is optional +function supportsFetch() { + if (!('fetch' in _window)) return false; - if (url) { - // coerce to string (this is what pushState does) - self._captureUrlChange(self._lastHref, url + ''); - } + try { + new Headers(); // eslint-disable-line no-new + new Request(''); // eslint-disable-line no-new + new Response(); // eslint-disable-line no-new + return true; + } catch (e) { + return false; + } +} - return origHistFunction.apply(this, arguments); - }; - }; +// Despite all stars in the sky saying that Edge supports old draft syntax, aka 'never', 'always', 'origin' and 'default +// https://caniuse.com/#feat=referrer-policy +// It doesn't. And it throw exception instead of ignoring this parameter... +// REF: https://github.com/getsentry/raven-js/issues/1233 +function supportsReferrerPolicy() { + if (!supportsFetch()) return false; - fill(history, 'pushState', historyReplacementFunction, wrappedBuiltIns); - fill(history, 'replaceState', historyReplacementFunction, wrappedBuiltIns); - } + try { + // eslint-disable-next-line no-new + new Request('pickleRick', { + referrerPolicy: 'origin' + }); + return true; + } catch (e) { + return false; + } +} - if (autoBreadcrumbs.console && 'console' in _window$1 && console.log) { - // console - var consoleMethodCallback = function consoleMethodCallback(msg, data) { - self.captureBreadcrumb({ - message: msg, - level: data.level, - category: 'console' - }); - }; +function supportsPromiseRejectionEvent() { + return typeof PromiseRejectionEvent === 'function'; +} - each(['debug', 'info', 'warn', 'error', 'log'], function (_, level) { - wrapConsoleMethod(console, level, consoleMethodCallback); - }); +function wrappedCallback(callback) { + function dataCallback(data, original) { + var normalizedData = callback(data) || data; + if (original) { + return original(normalizedData) || normalizedData; } - }, - _restoreBuiltIns: function _restoreBuiltIns() { - // restore any wrapped builtins - var builtin; + return normalizedData; + } - while (this._wrappedBuiltIns.length) { - builtin = this._wrappedBuiltIns.shift(); - var obj = builtin[0], - name = builtin[1], - orig = builtin[2]; - obj[name] = orig; - } - }, - _restoreConsole: function _restoreConsole() { - // eslint-disable-next-line guard-for-in - for (var method in this._originalConsoleMethods) { - this._originalConsole[method] = this._originalConsoleMethods[method]; - } - }, - _drainPlugins: function _drainPlugins() { - var self = this; // FIX ME TODO + return dataCallback; +} - each(this._plugins, function (_, plugin) { - var installer = plugin[0]; - var args = plugin[1]; - installer.apply(self, [self].concat(args)); - }); - }, - _parseDSN: function _parseDSN(str) { - var m = dsnPattern.exec(str), - dsn = {}, - i = 7; +function each(obj, callback) { + var i, j; - try { - while (i--) { - dsn[dsnKeys[i]] = m[i] || ''; + if (isUndefined(obj.length)) { + for (i in obj) { + if (hasKey(obj, i)) { + callback.call(null, i, obj[i]); } - } catch (e) { - throw new configError('Invalid DSN: ' + str); } - - if (dsn.pass && !this._globalOptions.allowSecretKey) { - throw new configError('Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key'); + } else { + j = obj.length; + if (j) { + for (i = 0; i < j; i++) { + callback.call(null, i, obj[i]); + } } + } +} - return dsn; - }, - _getGlobalServer: function _getGlobalServer(uri) { - // assemble the endpoint from the uri pieces - var globalServer = '//' + uri.host + (uri.port ? ':' + uri.port : ''); +function objectMerge(obj1, obj2) { + if (!obj2) { + return obj1; + } + each(obj2, function(key, value) { + obj1[key] = value; + }); + return obj1; +} - if (uri.protocol) { - globalServer = uri.protocol + ':' + globalServer; - } - - return globalServer; - }, - _handleOnErrorStackInfo: function _handleOnErrorStackInfo() { - // if we are intentionally ignoring errors via onerror, bail out - if (!this._ignoreOnError) { - this._handleStackInfo.apply(this, arguments); - } - }, - _handleStackInfo: function _handleStackInfo(stackInfo, options) { - var frames = this._prepareFrames(stackInfo, options); - - this._triggerEvent('handle', { - stackInfo: stackInfo, - options: options - }); +/** + * This function is only used for react-native. + * react-native freezes object that have already been sent over the + * js bridge. We need this function in order to check if the object is frozen. + * So it's ok that objectFrozen returns false if Object.isFrozen is not + * supported because it's not relevant for other "platforms". See related issue: + * https://github.com/getsentry/react-native-sentry/issues/57 + */ +function objectFrozen(obj) { + if (!Object.isFrozen) { + return false; + } + return Object.isFrozen(obj); +} - this._processException(stackInfo.name, stackInfo.message, stackInfo.url, stackInfo.lineno, frames, options); - }, - _prepareFrames: function _prepareFrames(stackInfo, options) { - var self = this; - var frames = []; +function truncate(str, max) { + if (typeof max !== 'number') { + throw new Error('2nd argument to `truncate` function should be a number'); + } + if (typeof str !== 'string' || max === 0) { + return str; + } + return str.length <= max ? str : str.substr(0, max) + '\u2026'; +} - if (stackInfo.stack && stackInfo.stack.length) { - each(stackInfo.stack, function (i, stack) { - var frame = self._normalizeFrame(stack, stackInfo.url); +/** + * hasKey, a better form of hasOwnProperty + * Example: hasKey(MainHostObject, property) === true/false + * + * @param {Object} host object to check property + * @param {string} key to check + */ +function hasKey(object, key) { + return Object.prototype.hasOwnProperty.call(object, key); +} - if (frame) { - frames.push(frame); - } - }); // e.g. frames captured via captureMessage throw +function joinRegExp(patterns) { + // Combine an array of regular expressions and strings into one large regexp + // Be mad. + var sources = [], + i = 0, + len = patterns.length, + pattern; - if (options && options.trimHeadFrames) { - for (var j = 0; j < options.trimHeadFrames && j < frames.length; j++) { - frames[j].in_app = false; - } - } + for (; i < len; i++) { + pattern = patterns[i]; + if (isString(pattern)) { + // If it's a string, we need to escape it + // Taken from: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions + sources.push(pattern.replace(/([.*+?^=!:${}()|\[\]\/\\])/g, '\\$1')); + } else if (pattern && pattern.source) { + // If it's a regexp already, we want to extract the source + sources.push(pattern.source); } + // Intentionally skip other cases + } + return new RegExp(sources.join('|'), 'i'); +} - frames = frames.slice(0, this._globalOptions.stackTraceLimit); - return frames; - }, - _normalizeFrame: function _normalizeFrame(frame, stackInfoUrl) { - // normalize the frames data - var normalized = { - filename: frame.url, - lineno: frame.line, - colno: frame.column, - function: frame.func || '?' - }; // Case when we don't have any information about the error - // E.g. throwing a string or raw object, instead of an `Error` in Firefox - // Generating synthetic error doesn't add any value here - // - // We should probably somehow let a user know that they should fix their code +function urlencode(o) { + var pairs = []; + each(o, function(key, value) { + pairs.push(encodeURIComponent(key) + '=' + encodeURIComponent(value)); + }); + return pairs.join('&'); +} - if (!frame.url) { - normalized.filename = stackInfoUrl; // fallback to whole stacks url from onerror handler - } +// borrowed from https://tools.ietf.org/html/rfc3986#appendix-B +// intentionally using regex and not href parsing trick because React Native and other +// environments where DOM might not be available +function parseUrl(url) { + if (typeof url !== 'string') return {}; + var match = url.match(/^(([^:\/?#]+):)?(\/\/([^\/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?$/); - normalized.in_app = !( // determine if an exception came from outside of our app - // first we check the global includePaths list. - !!this._globalOptions.includePaths.test && !this._globalOptions.includePaths.test(normalized.filename) || // Now we check for fun, if the function name is Raven or TraceKit - /(Raven|TraceKit)\./.test(normalized['function']) || // finally, we do a last ditch effort and check for raven.min.js - /raven\.(min\.)?js$/.test(normalized.filename)); - return normalized; - }, - _processException: function _processException(type, message, fileurl, lineno, frames, options) { - var prefixedMessage = (type ? type + ': ' : '') + (message || ''); + // coerce to undefined values to empty string so we don't get 'undefined' + var query = match[6] || ''; + var fragment = match[8] || ''; + return { + protocol: match[2], + host: match[4], + path: match[5], + relative: match[5] + query + fragment // everything minus origin + }; +} +function uuid4() { + var crypto = _window.crypto || _window.msCrypto; - if (!!this._globalOptions.ignoreErrors.test && (this._globalOptions.ignoreErrors.test(message) || this._globalOptions.ignoreErrors.test(prefixedMessage))) { - return; - } + if (!isUndefined(crypto) && crypto.getRandomValues) { + // Use window.crypto API if available + // eslint-disable-next-line no-undef + var arr = new Uint16Array(8); + crypto.getRandomValues(arr); - var stacktrace; + // set 4 in byte 7 + arr[3] = (arr[3] & 0xfff) | 0x4000; + // set 2 most significant bits of byte 9 to '10' + arr[4] = (arr[4] & 0x3fff) | 0x8000; - if (frames && frames.length) { - fileurl = frames[0].filename || fileurl; // Sentry expects frames oldest to newest - // and JS sends them as newest to oldest + var pad = function(num) { + var v = num.toString(16); + while (v.length < 4) { + v = '0' + v; + } + return v; + }; - frames.reverse(); - stacktrace = { - frames: frames - }; - } else if (fileurl) { - stacktrace = { - frames: [{ - filename: fileurl, - lineno: lineno, - in_app: true - }] - }; - } + return ( + pad(arr[0]) + + pad(arr[1]) + + pad(arr[2]) + + pad(arr[3]) + + pad(arr[4]) + + pad(arr[5]) + + pad(arr[6]) + + pad(arr[7]) + ); + } else { + // http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/2117523#2117523 + return 'xxxxxxxxxxxx4xxxyxxxxxxxxxxxxxxx'.replace(/[xy]/g, function(c) { + var r = (Math.random() * 16) | 0, + v = c === 'x' ? r : (r & 0x3) | 0x8; + return v.toString(16); + }); + } +} - if (!!this._globalOptions.ignoreUrls.test && this._globalOptions.ignoreUrls.test(fileurl)) { - return; - } +/** + * Given a child DOM element, returns a query-selector statement describing that + * and its ancestors + * e.g. [HTMLElement] => body > div > input#foo.btn[name=baz] + * @param elem + * @returns {string} + */ +function htmlTreeAsString(elem) { + /* eslint no-extra-parens:0*/ + var MAX_TRAVERSE_HEIGHT = 5, + MAX_OUTPUT_LEN = 80, + out = [], + height = 0, + len = 0, + separator = ' > ', + sepLength = separator.length, + nextStr; - if (!!this._globalOptions.whitelistUrls.test && !this._globalOptions.whitelistUrls.test(fileurl)) { - return; + while (elem && height++ < MAX_TRAVERSE_HEIGHT) { + nextStr = htmlElementAsString(elem); + // bail out if + // - nextStr is the 'html' element + // - the length of the string that would be created exceeds MAX_OUTPUT_LEN + // (ignore this limit if we are on the first iteration) + if ( + nextStr === 'html' || + (height > 1 && len + out.length * sepLength + nextStr.length >= MAX_OUTPUT_LEN) + ) { + break; } - var data = objectMerge({ - // sentry.interfaces.Exception - exception: { - values: [{ - type: type, - value: message, - stacktrace: stacktrace - }] - }, - culprit: fileurl - }, options); // Fire away! + out.push(nextStr); - this._send(data); - }, - _trimPacket: function _trimPacket(data) { - // For now, we only want to truncate the two different messages - // but this could/should be expanded to just trim everything - var max = this._globalOptions.maxMessageLength; + len += nextStr.length; + elem = elem.parentNode; + } - if (data.message) { - data.message = truncate(data.message, max); - } + return out.reverse().join(separator); +} - if (data.exception) { - var exception = data.exception.values[0]; - exception.value = truncate(exception.value, max); - } +/** + * Returns a simple, query-selector representation of a DOM element + * e.g. [HTMLElement] => input#foo.btn[name=baz] + * @param HTMLElement + * @returns {string} + */ +function htmlElementAsString(elem) { + var out = [], + className, + classes, + key, + attr, + i; - var request = data.request; + if (!elem || !elem.tagName) { + return ''; + } - if (request) { - if (request.url) { - request.url = truncate(request.url, this._globalOptions.maxUrlLength); - } + out.push(elem.tagName.toLowerCase()); + if (elem.id) { + out.push('#' + elem.id); + } - if (request.Referer) { - request.Referer = truncate(request.Referer, this._globalOptions.maxUrlLength); - } + className = elem.className; + if (className && isString(className)) { + classes = className.split(/\s+/); + for (i = 0; i < classes.length; i++) { + out.push('.' + classes[i]); + } + } + var attrWhitelist = ['type', 'name', 'title', 'alt']; + for (i = 0; i < attrWhitelist.length; i++) { + key = attrWhitelist[i]; + attr = elem.getAttribute(key); + if (attr) { + out.push('[' + key + '="' + attr + '"]'); } + } + return out.join(''); +} - if (data.breadcrumbs && data.breadcrumbs.values) this._trimBreadcrumbs(data.breadcrumbs); - return data; - }, +/** + * Returns true if either a OR b is truthy, but not both + */ +function isOnlyOneTruthy(a, b) { + return !!(!!a ^ !!b); +} - /** - * Truncate breadcrumb values (right now just URLs) - */ - _trimBreadcrumbs: function _trimBreadcrumbs(breadcrumbs) { - // known breadcrumb properties with urls - // TODO: also consider arbitrary prop values that start with (https?)?:// - var urlProps = ['to', 'from', 'url'], - urlProp, - crumb, - data; +/** + * Returns true if both parameters are undefined + */ +function isBothUndefined(a, b) { + return isUndefined(a) && isUndefined(b); +} - for (var i = 0; i < breadcrumbs.values.length; ++i) { - crumb = breadcrumbs.values[i]; - if (!crumb.hasOwnProperty('data') || !isObject(crumb.data) || objectFrozen(crumb.data)) continue; - data = objectMerge({}, crumb.data); +/** + * Returns true if the two input exception interfaces have the same content + */ +function isSameException(ex1, ex2) { + if (isOnlyOneTruthy(ex1, ex2)) return false; - for (var j = 0; j < urlProps.length; ++j) { - urlProp = urlProps[j]; + ex1 = ex1.values[0]; + ex2 = ex2.values[0]; - if (data.hasOwnProperty(urlProp) && data[urlProp]) { - data[urlProp] = truncate(data[urlProp], this._globalOptions.maxUrlLength); - } - } + if (ex1.type !== ex2.type || ex1.value !== ex2.value) return false; - breadcrumbs.values[i].data = data; - } - }, - _getHttpData: function _getHttpData() { - if (!this._hasNavigator && !this._hasDocument) return; - var httpData = {}; + // in case both stacktraces are undefined, we can't decide so default to false + if (isBothUndefined(ex1.stacktrace, ex2.stacktrace)) return false; - if (this._hasNavigator && _navigator.userAgent) { - httpData.headers = { - 'User-Agent': navigator.userAgent - }; - } // Check in `window` instead of `document`, as we may be in ServiceWorker environment + return isSameStacktrace(ex1.stacktrace, ex2.stacktrace); +} +/** + * Returns true if the two input stack trace interfaces have the same content + */ +function isSameStacktrace(stack1, stack2) { + if (isOnlyOneTruthy(stack1, stack2)) return false; - if (_window$1.location && _window$1.location.href) { - httpData.url = _window$1.location.href; - } - - if (this._hasDocument && _document.referrer) { - if (!httpData.headers) httpData.headers = {}; - httpData.headers.Referer = _document.referrer; - } - - return httpData; - }, - _resetBackoff: function _resetBackoff() { - this._backoffDuration = 0; - this._backoffStart = null; - }, - _shouldBackoff: function _shouldBackoff() { - return this._backoffDuration && now() - this._backoffStart < this._backoffDuration; - }, + var frames1 = stack1.frames; + var frames2 = stack2.frames; - /** - * Returns true if the in-process data payload matches the signature - * of the previously-sent data - * - * NOTE: This has to be done at this level because TraceKit can generate - * data from window.onerror WITHOUT an exception object (IE8, IE9, - * other old browsers). This can take the form of an "exception" - * data object with a single frame (derived from the onerror args). - */ - _isRepeatData: function _isRepeatData(current) { - var last = this._lastData; - if (!last || current.message !== last.message || // defined for captureMessage - current.culprit !== last.culprit // defined for captureException/onerror - ) return false; // Stacktrace interface (i.e. from captureMessage) + // Exit early if frame count differs + if (frames1.length !== frames2.length) return false; - if (current.stacktrace || last.stacktrace) { - return isSameStacktrace(current.stacktrace, last.stacktrace); - } else if (current.exception || last.exception) { - // Exception interface (i.e. from captureException/onerror) - return isSameException(current.exception, last.exception); - } + // Iterate through every frame; bail out if anything differs + var a, b; + for (var i = 0; i < frames1.length; i++) { + a = frames1[i]; + b = frames2[i]; + if ( + a.filename !== b.filename || + a.lineno !== b.lineno || + a.colno !== b.colno || + a['function'] !== b['function'] + ) + return false; + } + return true; +} - return true; - }, - _setBackoffState: function _setBackoffState(request) { - // If we are already in a backoff state, don't change anything - if (this._shouldBackoff()) { - return; - } +/** + * Polyfill a method + * @param obj object e.g. `document` + * @param name method name present on object e.g. `addEventListener` + * @param replacement replacement function + * @param track {optional} record instrumentation to an array + */ +function fill(obj, name, replacement, track) { + if (obj == null) return; + var orig = obj[name]; + obj[name] = replacement(orig); + obj[name].__raven__ = true; + obj[name].__orig__ = orig; + if (track) { + track.push([obj, name, orig]); + } +} - var status = request.status; // 400 - project_id doesn't exist or some other fatal - // 401 - invalid/revoked dsn - // 429 - too many requests +/** + * Join values in array + * @param input array of values to be joined together + * @param delimiter string to be placed in-between values + * @returns {string} + */ +function safeJoin(input, delimiter) { + if (!isArray(input)) return ''; - if (!(status === 400 || status === 401 || status === 429)) return; - var retry; + var output = []; + for (var i = 0; i < input.length; i++) { try { - // If Retry-After is not in Access-Control-Expose-Headers, most - // browsers will throw an exception trying to access it - if (supportsFetch()) { - retry = request.headers.get('Retry-After'); - } else { - retry = request.getResponseHeader('Retry-After'); - } // Retry-After is returned in seconds - - - retry = parseInt(retry, 10) * 1000; + output.push(String(input[i])); } catch (e) { - /* eslint no-empty:0 */ + output.push('[value cannot be serialized]'); } + } - this._backoffDuration = retry ? // If Sentry server returned a Retry-After value, use it - retry : // Otherwise, double the last backoff duration (starts at 1 sec) - this._backoffDuration * 2 || 1000; - this._backoffStart = now(); - }, - _send: function _send(data) { - var globalOptions = this._globalOptions; - - var baseData = { - project: this._globalProject, - logger: globalOptions.logger, - platform: 'javascript' - }, - httpData = this._getHttpData(); - - if (httpData) { - baseData.request = httpData; - } // HACK: delete `trimHeadFrames` to prevent from appearing in outbound payload - - - if (data.trimHeadFrames) delete data.trimHeadFrames; - data = objectMerge(baseData, data); // Merge in the tags and extra separately since objectMerge doesn't handle a deep merge - - data.tags = objectMerge(objectMerge({}, this._globalContext.tags), data.tags); - data.extra = objectMerge(objectMerge({}, this._globalContext.extra), data.extra); // Send along our own collected metadata with extra + return output.join(delimiter); +} - data.extra['session:duration'] = now() - this._startTime; +// Default Node.js REPL depth +var MAX_SERIALIZE_EXCEPTION_DEPTH = 3; +// 50kB, as 100kB is max payload size, so half sounds reasonable +var MAX_SERIALIZE_EXCEPTION_SIZE = 50 * 1024; +var MAX_SERIALIZE_KEYS_LENGTH = 40; - if (this._breadcrumbs && this._breadcrumbs.length > 0) { - // intentionally make shallow copy so that additions - // to breadcrumbs aren't accidentally sent in this request - data.breadcrumbs = { - values: [].slice.call(this._breadcrumbs, 0) - }; - } +function utf8Length(value) { + return ~-encodeURI(value).split(/%..|./).length; +} - if (this._globalContext.user) { - // sentry.interfaces.User - data.user = this._globalContext.user; - } // Include the environment if it's defined in globalOptions +function jsonSize(value) { + return utf8Length(JSON.stringify(value)); +} +function serializeValue(value) { + if (typeof value === 'string') { + var maxLength = 40; + return truncate(value, maxLength); + } else if ( + typeof value === 'number' || + typeof value === 'boolean' || + typeof value === 'undefined' + ) { + return value; + } - if (globalOptions.environment) data.environment = globalOptions.environment; // Include the release if it's defined in globalOptions + var type = Object.prototype.toString.call(value); - if (globalOptions.release) data.release = globalOptions.release; // Include server_name if it's defined in globalOptions + // Node.js REPL notation + if (type === '[object Object]') return '[Object]'; + if (type === '[object Array]') return '[Array]'; + if (type === '[object Function]') + return value.name ? '[Function: ' + value.name + ']' : '[Function]'; - if (globalOptions.serverName) data.server_name = globalOptions.serverName; // Cleanup empty properties before sending them to the server + return value; +} - Object.keys(data).forEach(function (key) { - if (data[key] == null || data[key] === '' || isEmptyObject(data[key])) { - delete data[key]; - } +function serializeObject(value, depth) { + if (depth === 0) return serializeValue(value); + + if (isPlainObject(value)) { + return Object.keys(value).reduce(function(acc, key) { + acc[key] = serializeObject(value[key], depth - 1); + return acc; + }, {}); + } else if (Array.isArray(value)) { + return value.map(function(val) { + return serializeObject(val, depth - 1); }); + } - if (isFunction(globalOptions.dataCallback)) { - data = globalOptions.dataCallback(data) || data; - } // Why?????????? - - - if (!data || isEmptyObject(data)) { - return; - } // Check if the request should be filtered or not - + return serializeValue(value); +} - if (isFunction(globalOptions.shouldSendCallback) && !globalOptions.shouldSendCallback(data)) { - return; - } // Backoff state: Sentry server previously responded w/ an error (e.g. 429 - too many requests), - // so drop requests until "cool-off" period has elapsed. +function serializeException(ex, depth, maxSize) { + if (!isPlainObject(ex)) return ex; + depth = typeof depth !== 'number' ? MAX_SERIALIZE_EXCEPTION_DEPTH : depth; + maxSize = typeof depth !== 'number' ? MAX_SERIALIZE_EXCEPTION_SIZE : maxSize; - if (this._shouldBackoff()) { - this._logDebug('warn', 'Raven dropped error due to backoff: ', data); + var serialized = serializeObject(ex, depth); - return; - } + if (jsonSize(stringify(serialized)) > maxSize) { + return serializeException(ex, depth - 1); + } - if (typeof globalOptions.sampleRate === 'number') { - if (Math.random() < globalOptions.sampleRate) { - this._sendProcessedPayload(data); - } - } else { - this._sendProcessedPayload(data); - } - }, - _getUuid: function _getUuid() { - return uuid4(); - }, - _sendProcessedPayload: function _sendProcessedPayload(data, callback) { - var self = this; - var globalOptions = this._globalOptions; - if (!this.isSetup()) return; // Try and clean up the packet before sending by truncating long values + return serialized; +} - data = this._trimPacket(data); // ideally duplicate error testing should occur *before* dataCallback/shouldSendCallback, - // but this would require copying an un-truncated copy of the data packet, which can be - // arbitrarily deep (extra_data) -- could be worthwhile? will revisit +function serializeKeysForMessage(keys, maxLength) { + if (typeof keys === 'number' || typeof keys === 'string') return keys.toString(); + if (!Array.isArray(keys)) return ''; - if (!this._globalOptions.allowDuplicates && this._isRepeatData(data)) { - this._logDebug('warn', 'Raven dropped repeat event: ', data); + keys = keys.filter(function(key) { + return typeof key === 'string'; + }); + if (keys.length === 0) return '[object has no keys]'; - return; - } // Send along an event_id if not explicitly passed. - // This event_id can be used to reference the error within Sentry itself. - // Set lastEventId after we know the error should actually be sent + maxLength = typeof maxLength !== 'number' ? MAX_SERIALIZE_KEYS_LENGTH : maxLength; + if (keys[0].length >= maxLength) return keys[0]; + for (var usedKeys = keys.length; usedKeys > 0; usedKeys--) { + var serialized = keys.slice(0, usedKeys).join(', '); + if (serialized.length > maxLength) continue; + if (usedKeys === keys.length) return serialized; + return serialized + '\u2026'; + } - this._lastEventId = data.event_id || (data.event_id = this._getUuid()); // Store outbound payload after trim + return ''; +} - this._lastData = data; +function sanitize(input, sanitizeKeys) { + if (!isArray(sanitizeKeys) || (isArray(sanitizeKeys) && sanitizeKeys.length === 0)) + return input; - this._logDebug('debug', 'Raven about to send:', data); + var sanitizeRegExp = joinRegExp(sanitizeKeys); + var sanitizeMask = '********'; + var safeInput; - var auth = { - sentry_version: '7', - sentry_client: 'raven-js/' + this.VERSION, - sentry_key: this._globalKey - }; + try { + safeInput = JSON.parse(stringify(input)); + } catch (o_O) { + return input; + } - if (this._globalSecret) { - auth.sentry_secret = this._globalSecret; + function sanitizeWorker(workerInput) { + if (isArray(workerInput)) { + return workerInput.map(function(val) { + return sanitizeWorker(val); + }); } - var exception = data.exception && data.exception.values[0]; // only capture 'sentry' breadcrumb is autoBreadcrumbs is truthy - - if (this._globalOptions.autoBreadcrumbs && this._globalOptions.autoBreadcrumbs.sentry) { - this.captureBreadcrumb({ - category: 'sentry', - message: exception ? (exception.type ? exception.type + ': ' : '') + exception.value : data.message, - event_id: data.event_id, - level: data.level || 'error' // presume error unless specified - - }); + if (isPlainObject(workerInput)) { + return Object.keys(workerInput).reduce(function(acc, k) { + if (sanitizeRegExp.test(k)) { + acc[k] = sanitizeMask; + } else { + acc[k] = sanitizeWorker(workerInput[k]); + } + return acc; + }, {}); } - var url = this._globalEndpoint; + return workerInput; + } - (globalOptions.transport || this._makeRequest).call(this, { - url: url, - auth: auth, - data: data, - options: globalOptions, - onSuccess: function success() { - self._resetBackoff(); + return sanitizeWorker(safeInput); +} - self._triggerEvent('success', { - data: data, - src: url - }); +module.exports = { + isObject: isObject, + isError: isError, + isErrorEvent: isErrorEvent, + isUndefined: isUndefined, + isFunction: isFunction, + isPlainObject: isPlainObject, + isString: isString, + isArray: isArray, + isEmptyObject: isEmptyObject, + supportsErrorEvent: supportsErrorEvent, + supportsFetch: supportsFetch, + supportsReferrerPolicy: supportsReferrerPolicy, + supportsPromiseRejectionEvent: supportsPromiseRejectionEvent, + wrappedCallback: wrappedCallback, + each: each, + objectMerge: objectMerge, + truncate: truncate, + objectFrozen: objectFrozen, + hasKey: hasKey, + joinRegExp: joinRegExp, + urlencode: urlencode, + uuid4: uuid4, + htmlTreeAsString: htmlTreeAsString, + htmlElementAsString: htmlElementAsString, + isSameException: isSameException, + isSameStacktrace: isSameStacktrace, + parseUrl: parseUrl, + fill: fill, + safeJoin: safeJoin, + serializeException: serializeException, + serializeKeysForMessage: serializeKeysForMessage, + sanitize: sanitize +}; - callback && callback(); - }, - onError: function failure(error) { - self._logDebug('error', 'Raven transport failed to send: ', error); +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"10":10}],9:[function(_dereq_,module,exports){ +(function (global){ +var utils = _dereq_(8); - if (error.request) { - self._setBackoffState(error.request); - } +/* + TraceKit - Cross brower stack traces - self._triggerEvent('failure', { - data: data, - src: url - }); + This was originally forked from github.com/occ/TraceKit, but has since been + largely re-written and is now maintained as part of raven-js. Tests for + this are in test/vendor. - error = error || new Error('Raven send failed (no additional details provided)'); - callback && callback(error); - } - }); - }, - _makeRequest: function _makeRequest(opts) { - // Auth is intentionally sent as part of query string (NOT as custom HTTP header) to avoid preflight CORS requests - var url = opts.url + '?' + urlencode(opts.auth); - var evaluatedHeaders = null; - var evaluatedFetchParameters = {}; + MIT license +*/ - if (opts.options.headers) { - evaluatedHeaders = this._evaluateHash(opts.options.headers); - } +var TraceKit = { + collectWindowErrors: true, + debug: false +}; - if (opts.options.fetchParameters) { - evaluatedFetchParameters = this._evaluateHash(opts.options.fetchParameters); - } +// This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) +var _window = + typeof window !== 'undefined' + ? window + : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; - if (supportsFetch()) { - evaluatedFetchParameters.body = stringify_1(opts.data); - var defaultFetchOptions = objectMerge({}, this._fetchDefaults); - var fetchOptions = objectMerge(defaultFetchOptions, evaluatedFetchParameters); +// global reference to slice +var _slice = [].slice; +var UNKNOWN_FUNCTION = '?'; - if (evaluatedHeaders) { - fetchOptions.headers = evaluatedHeaders; - } +// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error#Error_types +var ERROR_TYPES_RE = /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/; - return _window$1.fetch(url, fetchOptions).then(function (response) { - if (response.ok) { - opts.onSuccess && opts.onSuccess(); - } else { - var error = new Error('Sentry error code: ' + response.status); // It's called request only to keep compatibility with XHR interface - // and not add more redundant checks in setBackoffState method +function getLocationHref() { + if (typeof document === 'undefined' || document.location == null) return ''; - error.request = response; - opts.onError && opts.onError(error); - } - })['catch'](function () { - opts.onError && opts.onError(new Error('Sentry error code: network unavailable')); - }); + return document.location.href; +} + +/** + * TraceKit.report: cross-browser processing of unhandled exceptions + * + * Syntax: + * TraceKit.report.subscribe(function(stackInfo) { ... }) + * TraceKit.report.unsubscribe(function(stackInfo) { ... }) + * TraceKit.report(exception) + * try { ...code... } catch(ex) { TraceKit.report(ex); } + * + * Supports: + * - Firefox: full stack trace with line numbers, plus column number + * on top frame; column number is not guaranteed + * - Opera: full stack trace with line and column numbers + * - Chrome: full stack trace with line and column numbers + * - Safari: line and column number for the top frame only; some frames + * may be missing, and column number is not guaranteed + * - IE: line and column number for the top frame only; some frames + * may be missing, and column number is not guaranteed + * + * In theory, TraceKit should work on all of the following versions: + * - IE5.5+ (only 8.0 tested) + * - Firefox 0.9+ (only 3.5+ tested) + * - Opera 7+ (only 10.50 tested; versions 9 and earlier may require + * Exceptions Have Stacktrace to be enabled in opera:config) + * - Safari 3+ (only 4+ tested) + * - Chrome 1+ (only 5+ tested) + * - Konqueror 3.5+ (untested) + * + * Requires TraceKit.computeStackTrace. + * + * Tries to catch all unhandled exceptions and report them to the + * subscribed handlers. Please note that TraceKit.report will rethrow the + * exception. This is REQUIRED in order to get a useful stack trace in IE. + * If the exception does not reach the top of the browser, you will only + * get a stack trace from the point where TraceKit.report was called. + * + * Handlers receive a stackInfo object as described in the + * TraceKit.computeStackTrace docs. + */ +TraceKit.report = (function reportModuleWrapper() { + var handlers = [], + lastArgs = null, + lastException = null, + lastExceptionStack = null; + + /** + * Add a crash handler. + * @param {Function} handler + */ + function subscribe(handler) { + installGlobalHandler(); + handlers.push(handler); + } + + /** + * Remove a crash handler. + * @param {Function} handler + */ + function unsubscribe(handler) { + for (var i = handlers.length - 1; i >= 0; --i) { + if (handlers[i] === handler) { + handlers.splice(i, 1); + } + } + } + + /** + * Remove all crash handlers. + */ + function unsubscribeAll() { + uninstallGlobalHandler(); + handlers = []; + } + + /** + * Dispatch stack information to all handlers. + * @param {Object.} stack + */ + function notifyHandlers(stack, isWindowError) { + var exception = null; + if (isWindowError && !TraceKit.collectWindowErrors) { + return; + } + for (var i in handlers) { + if (handlers.hasOwnProperty(i)) { + try { + handlers[i].apply(null, [stack].concat(_slice.call(arguments, 2))); + } catch (inner) { + exception = inner; + } + } + } + + if (exception) { + throw exception; + } + } + + var _oldOnerrorHandler, _onErrorHandlerInstalled; + + /** + * Ensures all global unhandled exceptions are recorded. + * Supported by Gecko and IE. + * @param {string} msg Error message. + * @param {string} url URL of script that generated the exception. + * @param {(number|string)} lineNo The line number at which the error + * occurred. + * @param {?(number|string)} colNo The column number at which the error + * occurred. + * @param {?Error} ex The actual Error object. + */ + function traceKitWindowOnError(msg, url, lineNo, colNo, ex) { + var stack = null; + // If 'ex' is ErrorEvent, get real Error from inside + var exception = utils.isErrorEvent(ex) ? ex.error : ex; + // If 'msg' is ErrorEvent, get real message from inside + var message = utils.isErrorEvent(msg) ? msg.message : msg; + + if (lastExceptionStack) { + TraceKit.computeStackTrace.augmentStackTraceWithInitialElement( + lastExceptionStack, + url, + lineNo, + message + ); + processLastException(); + } else if (exception && utils.isError(exception)) { + // non-string `exception` arg; attempt to extract stack trace + + // New chrome and blink send along a real error object + // Let's just report that like a normal error. + // See: https://mikewest.org/2013/08/debugging-runtime-errors-with-window-onerror + stack = TraceKit.computeStackTrace(exception); + notifyHandlers(stack, true); + } else { + var location = { + url: url, + line: lineNo, + column: colNo + }; + + var name = undefined; + var groups; + + if ({}.toString.call(message) === '[object String]') { + var groups = message.match(ERROR_TYPES_RE); + if (groups) { + name = groups[1]; + message = groups[2]; + } + } + + location.func = UNKNOWN_FUNCTION; + + stack = { + name: name, + message: message, + url: getLocationHref(), + stack: [location] + }; + notifyHandlers(stack, true); + } + + if (_oldOnerrorHandler) { + return _oldOnerrorHandler.apply(this, arguments); + } + + return false; + } + + function installGlobalHandler() { + if (_onErrorHandlerInstalled) { + return; + } + _oldOnerrorHandler = _window.onerror; + _window.onerror = traceKitWindowOnError; + _onErrorHandlerInstalled = true; + } + + function uninstallGlobalHandler() { + if (!_onErrorHandlerInstalled) { + return; + } + _window.onerror = _oldOnerrorHandler; + _onErrorHandlerInstalled = false; + _oldOnerrorHandler = undefined; + } + + function processLastException() { + var _lastExceptionStack = lastExceptionStack, + _lastArgs = lastArgs; + lastArgs = null; + lastExceptionStack = null; + lastException = null; + notifyHandlers.apply(null, [_lastExceptionStack, false].concat(_lastArgs)); + } + + /** + * Reports an unhandled Error to TraceKit. + * @param {Error} ex + * @param {?boolean} rethrow If false, do not re-throw the exception. + * Only used for window.onerror to not cause an infinite loop of + * rethrowing. + */ + function report(ex, rethrow) { + var args = _slice.call(arguments, 1); + if (lastExceptionStack) { + if (lastException === ex) { + return; // already caught by an inner catch block, ignore + } else { + processLastException(); + } + } + + var stack = TraceKit.computeStackTrace(ex); + lastExceptionStack = stack; + lastException = ex; + lastArgs = args; + + // If the stack trace is incomplete, wait for 2 seconds for + // slow slow IE to see if onerror occurs or not before reporting + // this exception; otherwise, we will end up with an incomplete + // stack trace + setTimeout(function() { + if (lastException === ex) { + processLastException(); + } + }, stack.incomplete ? 2000 : 0); + + if (rethrow !== false) { + throw ex; // re-throw to propagate to the top level (and cause window.onerror) + } + } + + report.subscribe = subscribe; + report.unsubscribe = unsubscribe; + report.uninstall = unsubscribeAll; + return report; +})(); + +/** + * TraceKit.computeStackTrace: cross-browser stack traces in JavaScript + * + * Syntax: + * s = TraceKit.computeStackTrace(exception) // consider using TraceKit.report instead (see below) + * Returns: + * s.name - exception name + * s.message - exception message + * s.stack[i].url - JavaScript or HTML file URL + * s.stack[i].func - function name, or empty for anonymous functions (if guessing did not work) + * s.stack[i].args - arguments passed to the function, if known + * s.stack[i].line - line number, if known + * s.stack[i].column - column number, if known + * + * Supports: + * - Firefox: full stack trace with line numbers and unreliable column + * number on top frame + * - Opera 10: full stack trace with line and column numbers + * - Opera 9-: full stack trace with line numbers + * - Chrome: full stack trace with line and column numbers + * - Safari: line and column number for the topmost stacktrace element + * only + * - IE: no line numbers whatsoever + * + * Tries to guess names of anonymous functions by looking for assignments + * in the source code. In IE and Safari, we have to guess source file names + * by searching for function bodies inside all page scripts. This will not + * work for scripts that are loaded cross-domain. + * Here be dragons: some function names may be guessed incorrectly, and + * duplicate functions may be mismatched. + * + * TraceKit.computeStackTrace should only be used for tracing purposes. + * Logging of unhandled exceptions should be done with TraceKit.report, + * which builds on top of TraceKit.computeStackTrace and provides better + * IE support by utilizing the window.onerror event to retrieve information + * about the top of the stack. + * + * Note: In IE and Safari, no stack trace is recorded on the Error object, + * so computeStackTrace instead walks its *own* chain of callers. + * This means that: + * * in Safari, some methods may be missing from the stack trace; + * * in IE, the topmost function in the stack trace will always be the + * caller of computeStackTrace. + * + * This is okay for tracing (because you are likely to be calling + * computeStackTrace from the function you want to be the topmost element + * of the stack trace anyway), but not okay for logging unhandled + * exceptions (because your catch block will likely be far away from the + * inner function that actually caused the exception). + * + */ +TraceKit.computeStackTrace = (function computeStackTraceWrapper() { + // Contents of Exception in various browsers. + // + // SAFARI: + // ex.message = Can't find variable: qq + // ex.line = 59 + // ex.sourceId = 580238192 + // ex.sourceURL = http://... + // ex.expressionBeginOffset = 96 + // ex.expressionCaretOffset = 98 + // ex.expressionEndOffset = 98 + // ex.name = ReferenceError + // + // FIREFOX: + // ex.message = qq is not defined + // ex.fileName = http://... + // ex.lineNumber = 59 + // ex.columnNumber = 69 + // ex.stack = ...stack trace... (see the example below) + // ex.name = ReferenceError + // + // CHROME: + // ex.message = qq is not defined + // ex.name = ReferenceError + // ex.type = not_defined + // ex.arguments = ['aa'] + // ex.stack = ...stack trace... + // + // INTERNET EXPLORER: + // ex.message = ... + // ex.name = ReferenceError + // + // OPERA: + // ex.message = ...message... (see the example below) + // ex.name = ReferenceError + // ex.opera#sourceloc = 11 (pretty much useless, duplicates the info in ex.message) + // ex.stacktrace = n/a; see 'opera:config#UserPrefs|Exceptions Have Stacktrace' + + /** + * Computes stack trace information from the stack property. + * Chrome and Gecko use this property. + * @param {Error} ex + * @return {?Object.} Stack trace information. + */ + function computeStackTraceFromStackProp(ex) { + if (typeof ex.stack === 'undefined' || !ex.stack) return; + + var chrome = /^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i; + var winjs = /^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i; + // NOTE: blob urls are now supposed to always have an origin, therefore it's format + // which is `blob:http://url/path/with-some-uuid`, is matched by `blob.*?:\/` as well + var gecko = /^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i; + // Used to additionally parse URL/line/column from eval frames + var geckoEval = /(\S+) line (\d+)(?: > eval line \d+)* > eval/i; + var chromeEval = /\((\S*)(?::(\d+))(?::(\d+))\)/; + var lines = ex.stack.split('\n'); + var stack = []; + var submatch; + var parts; + var element; + var reference = /^(.*) is undefined$/.exec(ex.message); + + for (var i = 0, j = lines.length; i < j; ++i) { + if ((parts = chrome.exec(lines[i]))) { + var isNative = parts[2] && parts[2].indexOf('native') === 0; // start of line + var isEval = parts[2] && parts[2].indexOf('eval') === 0; // start of line + if (isEval && (submatch = chromeEval.exec(parts[2]))) { + // throw out eval line/column and use top-most line/column number + parts[2] = submatch[1]; // url + parts[3] = submatch[2]; // line + parts[4] = submatch[3]; // column + } + element = { + url: !isNative ? parts[2] : null, + func: parts[1] || UNKNOWN_FUNCTION, + args: isNative ? [parts[2]] : [], + line: parts[3] ? +parts[3] : null, + column: parts[4] ? +parts[4] : null + }; + } else if ((parts = winjs.exec(lines[i]))) { + element = { + url: parts[2], + func: parts[1] || UNKNOWN_FUNCTION, + args: [], + line: +parts[3], + column: parts[4] ? +parts[4] : null + }; + } else if ((parts = gecko.exec(lines[i]))) { + var isEval = parts[3] && parts[3].indexOf(' > eval') > -1; + if (isEval && (submatch = geckoEval.exec(parts[3]))) { + // throw out eval line/column and use top-most line number + parts[3] = submatch[1]; + parts[4] = submatch[2]; + parts[5] = null; // no column when eval + } else if (i === 0 && !parts[5] && typeof ex.columnNumber !== 'undefined') { + // FireFox uses this awesome columnNumber property for its top frame + // Also note, Firefox's column number is 0-based and everything else expects 1-based, + // so adding 1 + // NOTE: this hack doesn't work if top-most frame is eval + stack[0].column = ex.columnNumber + 1; + } + element = { + url: parts[3], + func: parts[1] || UNKNOWN_FUNCTION, + args: parts[2] ? parts[2].split(',') : [], + line: parts[4] ? +parts[4] : null, + column: parts[5] ? +parts[5] : null + }; + } else { + continue; + } + + if (!element.func && element.line) { + element.func = UNKNOWN_FUNCTION; + } + + stack.push(element); + } + + if (!stack.length) { + return null; + } + + return { + name: ex.name, + message: ex.message, + url: getLocationHref(), + stack: stack + }; + } + + /** + * Adds information about the first frame to incomplete stack traces. + * Safari and IE require this to get complete data on the first frame. + * @param {Object.} stackInfo Stack trace information from + * one of the compute* methods. + * @param {string} url The URL of the script that caused an error. + * @param {(number|string)} lineNo The line number of the script that + * caused an error. + * @param {string=} message The error generated by the browser, which + * hopefully contains the name of the object that caused the error. + * @return {boolean} Whether or not the stack information was + * augmented. + */ + function augmentStackTraceWithInitialElement(stackInfo, url, lineNo, message) { + var initial = { + url: url, + line: lineNo + }; + + if (initial.url && initial.line) { + stackInfo.incomplete = false; + + if (!initial.func) { + initial.func = UNKNOWN_FUNCTION; + } + + if (stackInfo.stack.length > 0) { + if (stackInfo.stack[0].url === initial.url) { + if (stackInfo.stack[0].line === initial.line) { + return false; // already in stack trace + } else if ( + !stackInfo.stack[0].line && + stackInfo.stack[0].func === initial.func + ) { + stackInfo.stack[0].line = initial.line; + return false; + } + } + } + + stackInfo.stack.unshift(initial); + stackInfo.partial = true; + return true; + } else { + stackInfo.incomplete = true; } - var request = _window$1.XMLHttpRequest && new _window$1.XMLHttpRequest(); - if (!request) return; // if browser doesn't support CORS (e.g. IE7), we are out of luck + return false; + } - var hasCORS = 'withCredentials' in request || typeof XDomainRequest !== 'undefined'; - if (!hasCORS) return; + /** + * Computes stack trace information by walking the arguments.caller + * chain at the time the exception occurred. This will cause earlier + * frames to be missed but is the only way to get any stack trace in + * Safari and IE. The top frame is restored by + * {@link augmentStackTraceWithInitialElement}. + * @param {Error} ex + * @return {?Object.} Stack trace information. + */ + function computeStackTraceByWalkingCallerChain(ex, depth) { + var functionName = /function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i, + stack = [], + funcs = {}, + recursion = false, + parts, + item, + source; + + for ( + var curr = computeStackTraceByWalkingCallerChain.caller; + curr && !recursion; + curr = curr.caller + ) { + if (curr === computeStackTrace || curr === TraceKit.report) { + // console.log('skipping internal function'); + continue; + } - if ('withCredentials' in request) { - request.onreadystatechange = function () { - if (request.readyState !== 4) { - return; - } else if (request.status === 200) { - opts.onSuccess && opts.onSuccess(); - } else if (opts.onError) { - var err = new Error('Sentry error code: ' + request.status); - err.request = request; - opts.onError(err); - } + item = { + url: null, + func: UNKNOWN_FUNCTION, + line: null, + column: null }; - } else { - request = new XDomainRequest(); // xdomainrequest cannot go http -> https (or vice versa), - // so always use protocol relative - url = url.replace(/^https?:/, ''); // onreadystatechange not supported by XDomainRequest + if (curr.name) { + item.func = curr.name; + } else if ((parts = functionName.exec(curr.toString()))) { + item.func = parts[1]; + } - if (opts.onSuccess) { - request.onload = opts.onSuccess; + if (typeof item.func === 'undefined') { + try { + item.func = parts.input.substring(0, parts.input.indexOf('{')); + } catch (e) {} } - if (opts.onError) { - request.onerror = function () { - var err = new Error('Sentry error code: XDomainRequest'); - err.request = request; - opts.onError(err); - }; + if (funcs['' + curr]) { + recursion = true; + } else { + funcs['' + curr] = true; } - } - request.open('POST', url); + stack.push(item); + } - if (evaluatedHeaders) { - each(evaluatedHeaders, function (key, value) { - request.setRequestHeader(key, value); - }); + if (depth) { + // console.log('depth is ' + depth); + // console.log('stack is ' + stack.length); + stack.splice(0, depth); } - request.send(stringify_1(opts.data)); - }, - _evaluateHash: function _evaluateHash(hash) { - var evaluated = {}; + var result = { + name: ex.name, + message: ex.message, + url: getLocationHref(), + stack: stack + }; + augmentStackTraceWithInitialElement( + result, + ex.sourceURL || ex.fileName, + ex.line || ex.lineNumber, + ex.message || ex.description + ); + return result; + } - for (var key in hash) { - if (hash.hasOwnProperty(key)) { - var value = hash[key]; - evaluated[key] = typeof value === 'function' ? value() : value; + /** + * Computes a stack trace for an exception. + * @param {Error} ex + * @param {(string|number)=} depth + */ + function computeStackTrace(ex, depth) { + var stack = null; + depth = depth == null ? 0 : +depth; + + try { + stack = computeStackTraceFromStackProp(ex); + if (stack) { + return stack; + } + } catch (e) { + if (TraceKit.debug) { + throw e; } } - return evaluated; - }, - _logDebug: function _logDebug(level) { - if (this._originalConsoleMethods[level] && this.debug) { - // In IE<10 console methods do not have their own 'apply' method - Function.prototype.apply.call(this._originalConsoleMethods[level], this._originalConsole, [].slice.call(arguments, 1)); - } - }, - _mergeContext: function _mergeContext(key, context) { - if (isUndefined(context)) { - delete this._globalContext[key]; - } else { - this._globalContext[key] = objectMerge(this._globalContext[key] || {}, context); + try { + stack = computeStackTraceByWalkingCallerChain(ex, depth + 1); + if (stack) { + return stack; + } + } catch (e) { + if (TraceKit.debug) { + throw e; + } } + return { + name: ex.name, + message: ex.message, + url: getLocationHref() + }; } -}; // Deprecations -Raven$1.prototype.setUser = Raven$1.prototype.setUserContext; -Raven$1.prototype.setReleaseContext = Raven$1.prototype.setRelease; -var raven = Raven$1; + computeStackTrace.augmentStackTraceWithInitialElement = augmentStackTraceWithInitialElement; + computeStackTrace.computeStackTraceFromStackProp = computeStackTraceFromStackProp; -/** - * Enforces a single instance of the Raven client, and the - * main entry point for Raven. If you are a consumer of the - * Raven library, you SHOULD load this file (vs raven.js). - **/ -// This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) + return computeStackTrace; +})(); -var _window = typeof window !== 'undefined' ? window : typeof commonjsGlobal !== 'undefined' ? commonjsGlobal : typeof self !== 'undefined' ? self : {}; +module.exports = TraceKit; -var _Raven = _window.Raven; -var Raven = new raven(); +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"8":8}],10:[function(_dereq_,module,exports){ /* - * Allow multiple versions of Raven to be installed. - * Strip Raven from the global context and returns the instance. - * - * @return {Raven} - */ + json-stringify-safe + Like JSON.stringify, but doesn't throw on circular references. -Raven.noConflict = function () { - _window.Raven = _Raven; - return Raven; -}; + Originally forked from https://github.com/isaacs/json-stringify-safe + version 5.0.1 on 3/8/2017 and modified to handle Errors serialization + and IE8 compatibility. Tests for this are in test/vendor. -Raven.afterLoad(); -var singleton = Raven; + ISC license: https://github.com/isaacs/json-stringify-safe/blob/master/LICENSE +*/ -/** - * console plugin - * - * Monkey patches console.* calls into Sentry messages with - * their appropriate log levels. (Experimental) - * - * Options: - * - * `levels`: An array of levels (methods on `console`) to report to Sentry. - * Defaults to debug, info, warn, and error. - */ +exports = module.exports = stringify; +exports.getSerialize = serializer; -var wrapConsoleMethod$1 = console$1.wrapMethod; +function indexOf(haystack, needle) { + for (var i = 0; i < haystack.length; ++i) { + if (haystack[i] === needle) return i; + } + return -1; +} -function consolePlugin(Raven, console, pluginOptions) { - console = console || window.console || {}; - pluginOptions = pluginOptions || {}; - var logLevels = pluginOptions.levels || ['debug', 'info', 'warn', 'error']; - if ('assert' in console) logLevels.push('assert'); +function stringify(obj, replacer, spaces, cycleReplacer) { + return JSON.stringify(obj, serializer(replacer, cycleReplacer), spaces); +} - var callback = function callback(msg, data) { - Raven.captureMessage(msg, data); +// https://github.com/ftlabs/js-abbreviate/blob/fa709e5f139e7770a71827b1893f22418097fbda/index.js#L95-L106 +function stringifyError(value) { + var err = { + // These properties are implemented as magical getters and don't show up in for in + stack: value.stack, + message: value.message, + name: value.name }; - var level = logLevels.pop(); - - while (level) { - wrapConsoleMethod$1(console, level, callback); - level = logLevels.pop(); + for (var i in value) { + if (Object.prototype.hasOwnProperty.call(value, i)) { + err[i] = value[i]; + } } + + return err; } -var console$3 = consolePlugin; +function serializer(replacer, cycleReplacer) { + var stack = []; + var keys = []; -/*global define*/ + if (cycleReplacer == null) { + cycleReplacer = function(key, value) { + if (stack[0] === value) { + return '[Circular ~]'; + } + return '[Circular ~.' + keys.slice(0, indexOf(stack, value)).join('.') + ']'; + }; + } -/** - * require.js plugin - * - * Automatically wrap define/require callbacks. (Experimental) - */ + return function(key, value) { + if (stack.length > 0) { + var thisPos = indexOf(stack, this); + ~thisPos ? stack.splice(thisPos + 1) : stack.push(this); + ~thisPos ? keys.splice(thisPos, Infinity, key) : keys.push(key); -function requirePlugin(Raven) { - if (typeof undefined === 'function' && undefined.amd) { - window.define = Raven.wrap({ - deep: false - }, undefined); - window.require = Raven.wrap({ - deep: false - }, commonjsRequire); - } -} + if (~indexOf(stack, value)) { + value = cycleReplacer.call(this, key, value); + } + } else { + stack.push(value); + } -var require_1 = requirePlugin; + return replacer == null + ? value instanceof Error ? stringifyError(value) : value + : replacer.call(this, key, value); + }; +} -/** - * Vue.js 2.0 plugin +},{}],11:[function(_dereq_,module,exports){ +/* + * JavaScript MD5 + * https://github.com/blueimp/JavaScript-MD5 * + * Copyright 2011, Sebastian Tschan + * https://blueimp.net + * + * Licensed under the MIT license: + * https://opensource.org/licenses/MIT + * + * Based on + * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message + * Digest Algorithm, as defined in RFC 1321. + * Version 2.2 Copyright (C) Paul Johnston 1999 - 2009 + * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet + * Distributed under the BSD License + * See http://pajhome.org.uk/crypt/md5 for more info. */ -function formatComponentName(vm) { - if (vm.$root === vm) { - return 'root instance'; - } - var name = vm._isVue ? vm.$options.name || vm.$options._componentTag : vm.name; - return (name ? 'component <' + name + '>' : 'anonymous component') + (vm._isVue && vm.$options.__file ? ' at ' + vm.$options.__file : ''); +/* +* Add integers, wrapping at 2^32. This uses 16-bit operations internally +* to work around bugs in some JS interpreters. +*/ +function safeAdd(x, y) { + var lsw = (x & 0xffff) + (y & 0xffff); + var msw = (x >> 16) + (y >> 16) + (lsw >> 16); + return (msw << 16) | (lsw & 0xffff); } -function vuePlugin(Raven, Vue) { - Vue = Vue || window.Vue; // quit if Vue isn't on the page +/* +* Bitwise rotate a 32-bit number to the left. +*/ +function bitRotateLeft(num, cnt) { + return (num << cnt) | (num >>> (32 - cnt)); +} - if (!Vue || !Vue.config) return; - var _oldOnError = Vue.config.errorHandler; +/* +* These functions implement the four basic operations the algorithm uses. +*/ +function md5cmn(q, a, b, x, s, t) { + return safeAdd(bitRotateLeft(safeAdd(safeAdd(a, q), safeAdd(x, t)), s), b); +} +function md5ff(a, b, c, d, x, s, t) { + return md5cmn((b & c) | (~b & d), a, b, x, s, t); +} +function md5gg(a, b, c, d, x, s, t) { + return md5cmn((b & d) | (c & ~d), a, b, x, s, t); +} +function md5hh(a, b, c, d, x, s, t) { + return md5cmn(b ^ c ^ d, a, b, x, s, t); +} +function md5ii(a, b, c, d, x, s, t) { + return md5cmn(c ^ (b | ~d), a, b, x, s, t); +} - Vue.config.errorHandler = function VueErrorHandler(error, vm, info) { - var metaData = {}; // vm and lifecycleHook are not always available +/* +* Calculate the MD5 of an array of little-endian words, and a bit length. +*/ +function binlMD5(x, len) { + /* append padding */ + x[len >> 5] |= 0x80 << (len % 32); + x[(((len + 64) >>> 9) << 4) + 14] = len; + + var i; + var olda; + var oldb; + var oldc; + var oldd; + var a = 1732584193; + var b = -271733879; + var c = -1732584194; + var d = 271733878; + + for (i = 0; i < x.length; i += 16) { + olda = a; + oldb = b; + oldc = c; + oldd = d; + + a = md5ff(a, b, c, d, x[i], 7, -680876936); + d = md5ff(d, a, b, c, x[i + 1], 12, -389564586); + c = md5ff(c, d, a, b, x[i + 2], 17, 606105819); + b = md5ff(b, c, d, a, x[i + 3], 22, -1044525330); + a = md5ff(a, b, c, d, x[i + 4], 7, -176418897); + d = md5ff(d, a, b, c, x[i + 5], 12, 1200080426); + c = md5ff(c, d, a, b, x[i + 6], 17, -1473231341); + b = md5ff(b, c, d, a, x[i + 7], 22, -45705983); + a = md5ff(a, b, c, d, x[i + 8], 7, 1770035416); + d = md5ff(d, a, b, c, x[i + 9], 12, -1958414417); + c = md5ff(c, d, a, b, x[i + 10], 17, -42063); + b = md5ff(b, c, d, a, x[i + 11], 22, -1990404162); + a = md5ff(a, b, c, d, x[i + 12], 7, 1804603682); + d = md5ff(d, a, b, c, x[i + 13], 12, -40341101); + c = md5ff(c, d, a, b, x[i + 14], 17, -1502002290); + b = md5ff(b, c, d, a, x[i + 15], 22, 1236535329); + + a = md5gg(a, b, c, d, x[i + 1], 5, -165796510); + d = md5gg(d, a, b, c, x[i + 6], 9, -1069501632); + c = md5gg(c, d, a, b, x[i + 11], 14, 643717713); + b = md5gg(b, c, d, a, x[i], 20, -373897302); + a = md5gg(a, b, c, d, x[i + 5], 5, -701558691); + d = md5gg(d, a, b, c, x[i + 10], 9, 38016083); + c = md5gg(c, d, a, b, x[i + 15], 14, -660478335); + b = md5gg(b, c, d, a, x[i + 4], 20, -405537848); + a = md5gg(a, b, c, d, x[i + 9], 5, 568446438); + d = md5gg(d, a, b, c, x[i + 14], 9, -1019803690); + c = md5gg(c, d, a, b, x[i + 3], 14, -187363961); + b = md5gg(b, c, d, a, x[i + 8], 20, 1163531501); + a = md5gg(a, b, c, d, x[i + 13], 5, -1444681467); + d = md5gg(d, a, b, c, x[i + 2], 9, -51403784); + c = md5gg(c, d, a, b, x[i + 7], 14, 1735328473); + b = md5gg(b, c, d, a, x[i + 12], 20, -1926607734); + + a = md5hh(a, b, c, d, x[i + 5], 4, -378558); + d = md5hh(d, a, b, c, x[i + 8], 11, -2022574463); + c = md5hh(c, d, a, b, x[i + 11], 16, 1839030562); + b = md5hh(b, c, d, a, x[i + 14], 23, -35309556); + a = md5hh(a, b, c, d, x[i + 1], 4, -1530992060); + d = md5hh(d, a, b, c, x[i + 4], 11, 1272893353); + c = md5hh(c, d, a, b, x[i + 7], 16, -155497632); + b = md5hh(b, c, d, a, x[i + 10], 23, -1094730640); + a = md5hh(a, b, c, d, x[i + 13], 4, 681279174); + d = md5hh(d, a, b, c, x[i], 11, -358537222); + c = md5hh(c, d, a, b, x[i + 3], 16, -722521979); + b = md5hh(b, c, d, a, x[i + 6], 23, 76029189); + a = md5hh(a, b, c, d, x[i + 9], 4, -640364487); + d = md5hh(d, a, b, c, x[i + 12], 11, -421815835); + c = md5hh(c, d, a, b, x[i + 15], 16, 530742520); + b = md5hh(b, c, d, a, x[i + 2], 23, -995338651); + + a = md5ii(a, b, c, d, x[i], 6, -198630844); + d = md5ii(d, a, b, c, x[i + 7], 10, 1126891415); + c = md5ii(c, d, a, b, x[i + 14], 15, -1416354905); + b = md5ii(b, c, d, a, x[i + 5], 21, -57434055); + a = md5ii(a, b, c, d, x[i + 12], 6, 1700485571); + d = md5ii(d, a, b, c, x[i + 3], 10, -1894986606); + c = md5ii(c, d, a, b, x[i + 10], 15, -1051523); + b = md5ii(b, c, d, a, x[i + 1], 21, -2054922799); + a = md5ii(a, b, c, d, x[i + 8], 6, 1873313359); + d = md5ii(d, a, b, c, x[i + 15], 10, -30611744); + c = md5ii(c, d, a, b, x[i + 6], 15, -1560198380); + b = md5ii(b, c, d, a, x[i + 13], 21, 1309151649); + a = md5ii(a, b, c, d, x[i + 4], 6, -145523070); + d = md5ii(d, a, b, c, x[i + 11], 10, -1120210379); + c = md5ii(c, d, a, b, x[i + 2], 15, 718787259); + b = md5ii(b, c, d, a, x[i + 9], 21, -343485551); + + a = safeAdd(a, olda); + b = safeAdd(b, oldb); + c = safeAdd(c, oldc); + d = safeAdd(d, oldd); + } + return [a, b, c, d]; +} - if (Object.prototype.toString.call(vm) === '[object Object]') { - metaData.componentName = formatComponentName(vm); - metaData.propsData = vm.$options.propsData; - } +/* +* Convert an array of little-endian words to a string +*/ +function binl2rstr(input) { + var i; + var output = ''; + var length32 = input.length * 32; + for (i = 0; i < length32; i += 8) { + output += String.fromCharCode((input[i >> 5] >>> (i % 32)) & 0xff); + } + return output; +} - if (typeof info !== 'undefined') { - metaData.lifecycleHook = info; - } +/* +* Convert a raw string to an array of little-endian words +* Characters >255 have their high-byte silently ignored. +*/ +function rstr2binl(input) { + var i; + var output = []; + output[(input.length >> 2) - 1] = undefined; + for (i = 0; i < output.length; i += 1) { + output[i] = 0; + } + var length8 = input.length * 8; + for (i = 0; i < length8; i += 8) { + output[i >> 5] |= (input.charCodeAt(i / 8) & 0xff) << (i % 32); + } + return output; +} - Raven.captureException(error, { - extra: metaData - }); +/* +* Calculate the MD5 of a raw string +*/ +function rstrMD5(s) { + return binl2rstr(binlMD5(rstr2binl(s), s.length * 8)); +} - if (typeof _oldOnError === 'function') { - _oldOnError.call(this, error, vm, info); - } - }; +/* +* Calculate the HMAC-MD5, of a key and some data (raw strings) +*/ +function rstrHMACMD5(key, data) { + var i; + var bkey = rstr2binl(key); + var ipad = []; + var opad = []; + var hash; + ipad[15] = opad[15] = undefined; + if (bkey.length > 16) { + bkey = binlMD5(bkey, key.length * 8); + } + for (i = 0; i < 16; i += 1) { + ipad[i] = bkey[i] ^ 0x36363636; + opad[i] = bkey[i] ^ 0x5c5c5c5c; + } + hash = binlMD5(ipad.concat(rstr2binl(data)), 512 + data.length * 8); + return binl2rstr(binlMD5(opad.concat(hash), 512 + 128)); +} + +/* +* Convert a raw string to a hex string +*/ +function rstr2hex(input) { + var hexTab = '0123456789abcdef'; + var output = ''; + var x; + var i; + for (i = 0; i < input.length; i += 1) { + x = input.charCodeAt(i); + output += hexTab.charAt((x >>> 4) & 0x0f) + hexTab.charAt(x & 0x0f); + } + return output; } -var vue = vuePlugin; +/* +* Encode a string as utf-8 +*/ +function str2rstrUTF8(input) { + return unescape(encodeURIComponent(input)); +} -/* This file was generated by './scripts/generate-plugin-combinations.js'! */ +/* +* Take string arguments and return either raw or hex encoded strings +*/ +function rawMD5(s) { + return rstrMD5(str2rstrUTF8(s)); +} +function hexMD5(s) { + return rstr2hex(rawMD5(s)); +} +function rawHMACMD5(k, d) { + return rstrHMACMD5(str2rstrUTF8(k), str2rstrUTF8(d)); +} +function hexHMACMD5(k, d) { + return rstr2hex(rawHMACMD5(k, d)); +} -singleton.addPlugin(console$3).addPlugin(require_1).addPlugin(vue); -var console_require_vue = {}; +function md5(string, key, raw) { + if (!key) { + if (!raw) { + return hexMD5(string); + } + return rawMD5(string); + } + if (!raw) { + return hexHMACMD5(key, string); + } + return rawHMACMD5(key, string); +} -return console_require_vue; +module.exports = md5; -}))); +},{}]},{},[7,1,2,3])(7) +}); \ No newline at end of file diff --git a/dist/console,require,vue/raven.min.js b/dist/console,require,vue/raven.min.js index 35133048330b..988850d6ea32 100644 --- a/dist/console,require,vue/raven.min.js +++ b/dist/console,require,vue/raven.min.js @@ -1,3 +1,4 @@ -/*! Raven.js 3.22.2 (1b6187b) | github.com/getsentry/raven-js */ -!function(a,b){"object"==typeof exports&&"undefined"!=typeof module?module.exports=b():"function"==typeof define&&define.amd?define(b):a.Raven=b()}(this,function(){"use strict";function a(a,b){return b={exports:{}},a(b,b.exports),b.exports}function b(a){return(b="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(a){return typeof a}:function(a){return a&&"function"==typeof Symbol&&a.constructor===Symbol&&a!==Symbol.prototype?"symbol":typeof a})(a)}function c(a){return"object"===b(a)&&null!==a}function d(a){switch({}.toString.call(a)){case"[object Error]":return!0;case"[object Exception]":return!0;case"[object DOMException]":return!0;default:return a instanceof Error}}function e(a){return l()&&"[object ErrorEvent]"==={}.toString.call(a)}function f(a){return void 0===a}function g(a){return"function"==typeof a}function h(a){return"[object Object]"===Object.prototype.toString.call(a)}function i(a){return"[object String]"===Object.prototype.toString.call(a)}function j(a){return"[object Array]"===Object.prototype.toString.call(a)}function k(a){if(!h(a))return!1;for(var b in a)if(a.hasOwnProperty(b))return!1;return!0}function l(){try{return new ErrorEvent(""),!0}catch(a){return!1}}function m(){if(!("fetch"in Q))return!1;try{return new Headers,new Request(""),new Response,!0}catch(a){return!1}}function n(a){function b(b,c){var d=a(b)||b;return c?c(d)||d:d}return b}function o(a,b){var c,d;if(f(a.length))for(c in a)s(a,c)&&b.call(null,c,a[c]);else if(d=a.length)for(c=0;c ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function y(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&i(b))for(c=b.split(/\s+/),f=0;f":"anonymous component")+(a._isVue&&a.$options.__file?" at "+a.$options.__file:"")}function N(a,b){if(b=b||window.Vue,b&&b.config){var c=b.config.errorHandler;b.config.errorHandler=function(b,d,e){var f={};"[object Object]"===Object.prototype.toString.call(d)&&(f.componentName=M(d),f.propsData=d.$options.propsData),"undefined"!=typeof e&&(f.lifecycleHook=e),a.captureException(b,{extra:f}),"function"==typeof c&&c.call(this,b,d,e)}}}var O="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{},P=Object.setPrototypeOf||function(a,b){return a.B=b,a},Q=("object"==typeof Reflect&&Reflect.construct||function(a,b,c){var d,e=[null];return e.push.apply(e,b),d=a.bind.apply(a,e),P(new d,c.prototype)},"undefined"!=typeof window?window:"undefined"!=typeof O?O:"undefined"!=typeof self?self:{}),R={isObject:c,isError:d,isErrorEvent:e,isUndefined:f,isFunction:g,isPlainObject:h,isString:i,isArray:j,isEmptyObject:k,supportsErrorEvent:l,supportsFetch:m,wrappedCallback:n,each:o,objectMerge:p,truncate:r,objectFrozen:q,hasKey:s,joinRegExp:t,urlencode:u,uuid4:w,htmlTreeAsString:x,htmlElementAsString:y,isSameException:B,isSameStacktrace:C,parseUrl:v,fill:D,safeJoin:E},S={collectWindowErrors:!0,debug:!1},T="undefined"!=typeof window?window:"undefined"!=typeof O?O:"undefined"!=typeof self?self:{},U=[].slice,V="?",W=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;S.report=function(){function a(a){f(),l.push(a)}function b(a){for(var b=l.length-1;b>=0;--b)l[b]===a&&l.splice(b,1)}function c(){g(),l=[]}function d(a,b){var c=null;if(!b||S.collectWindowErrors){for(var d in l)if(l.hasOwnProperty(d))try{l[d].apply(null,[a].concat(U.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function e(a,b,c,e,f){var g=null,i=R.isErrorEvent(f)?f.error:f,k=R.isErrorEvent(a)?a.message:a;if(o)S.computeStackTrace.augmentStackTraceWithInitialElement(o,b,c,k),h();else if(i&&R.isError(i))g=S.computeStackTrace(i),d(g,!0);else{var l,m={url:b,line:c,column:e},n=void 0;if("[object String]"==={}.toString.call(k)){var l=k.match(W);l&&(n=l[1],k=l[2])}m.func=V,g={name:n,message:k,url:F(),stack:[m]},d(g,!0)}return!!j&&j.apply(this,arguments)}function f(){k||(j=T.onerror,T.onerror=e,k=!0)}function g(){k&&(T.onerror=j,k=!1,j=void 0)}function h(){var a=o,b=m;m=null,o=null,n=null,d.apply(null,[a,!1].concat(b))}function i(a,b){var c=U.call(arguments,1);if(o){if(n===a)return;h()}var d=S.computeStackTrace(a);if(o=d,n=a,m=c,setTimeout(function(){n===a&&h()},d.incomplete?2e3:0),b!==!1)throw a}var j,k,l=[],m=null,n=null,o=null;return i.subscribe=a,i.unsubscribe=b,i.uninstall=c,i}(),S.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,d,e=/^\s*at (.*?) ?\(((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,f=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|\[native).*?|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,g=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,h=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,i=/\((\S*)(?::(\d+))(?::(\d+))\)/,j=a.stack.split("\n"),k=[],l=(/^(.*) is undefined$/.exec(a.message),0),m=j.length;l eval")>-1;o&&(b=h.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==l||c[5]||"undefined"==typeof a.columnNumber||(k[0].column=a.columnNumber+1),d={url:c[3],func:c[1]||V,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}!d.func&&d.line&&(d.func=V),k.push(d)}return k.length?{name:a.name,message:a.message,url:F(),stack:k}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=V),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,e){for(var f,g,h=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,i=[],j={},k=!1,l=c.caller;l&&!k;l=l.caller)if(l!==d&&l!==S.report){if(g={url:null,func:V,line:null,column:null},l.name?g.func=l.name:(f=h.exec(l.toString()))&&(g.func=f[1]),"undefined"==typeof g.func)try{g.func=f.input.substring(0,f.input.indexOf("{"))}catch(m){}j[""+l]?k=!0:j[""+l]=!0,i.push(g)}e&&i.splice(0,e);var n={name:a.name,message:a.message,url:F(),stack:i};return b(n,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),n}function d(b,d){var e=null;d=null==d?0:+d;try{if(e=a(b))return e}catch(f){if(S.debug)throw f}try{if(e=c(b,d+1))return e}catch(f){if(S.debug)throw f}return{name:b.name,message:b.message,url:F()}}return d.augmentStackTraceWithInitialElement=b,d.computeStackTraceFromStackProp=a,d}();var X=S,Y=a(function(a,b){function c(a,b){for(var c=0;c0){var i=c(d,this);~i?d.splice(i+1):d.push(this),~i?f.splice(i,1/0,g):f.push(g),~c(d,h)&&(h=b.call(this,g,h))}else d.push(h);return null==a?h instanceof Error?e(h):h:a.call(this,g,h)}}b=a.exports=d,b.getSerialize=f});G.prototype=new Error,G.prototype.constructor=G;var Z=G,$=function(a,b,c){var d=a[b],e=a;if(b in a){var f="warn"===b?"warning":b;a[b]=function(){var a=[].slice.call(arguments),g=R.safeJoin(a," "),h={level:f,logger:"console",extra:{arguments:a}};"assert"===b?a[0]===!1&&(g="Assertion failed: "+(R.safeJoin(a.slice(1)," ")||"console.assert"),h.extra.arguments=a.slice(1),c&&c(g,h)):c&&c(g,h),d&&Function.prototype.apply.call(d,e,a)}}},_={wrapMethod:$},aa=R.isError,ba=R.isObject,ca=R.isErrorEvent,da=R.isUndefined,ea=R.isFunction,fa=R.isString,ga=R.isArray,ha=R.isEmptyObject,ia=R.each,ja=R.objectMerge,ka=R.truncate,la=R.objectFrozen,ma=R.hasKey,na=R.joinRegExp,oa=R.urlencode,pa=R.uuid4,qa=R.htmlTreeAsString,ra=R.isSameException,sa=R.isSameStacktrace,ta=R.parseUrl,ua=R.fill,va=R.supportsFetch,wa=_.wrapMethod,xa="source protocol user pass host port path".split(" "),ya=/^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/,za="undefined"!=typeof window?window:"undefined"!=typeof O?O:"undefined"!=typeof self?self:{},Aa=za.document,Ba=za.navigator;J.prototype={VERSION:"3.22.2",debug:!1,TraceKit:X,config:function(a,b){var c=this;if(c.i)return this.C("error","Error: Raven has already been configured"),c;if(!a)return c;var d=c.m;b&&ia(b,function(a,b){"tags"===a||"extra"===a||"user"===a?c.l[a]=b:d[a]=b}),c.setDSN(a),d.ignoreErrors.push(/^Script error\.?$/),d.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/),d.ignoreErrors=na(d.ignoreErrors),d.ignoreUrls=!!d.ignoreUrls.length&&na(d.ignoreUrls),d.whitelistUrls=!!d.whitelistUrls.length&&na(d.whitelistUrls),d.includePaths=na(d.includePaths),d.maxBreadcrumbs=Math.max(0,Math.min(d.maxBreadcrumbs||100,100));var e={xhr:!0,console:!0,dom:!0,location:!0,sentry:!0},f=d.autoBreadcrumbs;"[object Object]"==={}.toString.call(f)?f=ja(e,f):f!==!1&&(f=e),d.autoBreadcrumbs=f;var g={tryCatch:!0},h=d.instrument;return"[object Object]"==={}.toString.call(h)?h=ja(g,h):h!==!1&&(h=g),d.instrument=h,X.collectWindowErrors=!!d.collectWindowErrors,c},install:function(){var a=this;return a.isSetup()&&!a.p&&(X.report.subscribe(function(){a.D.apply(a,arguments)}),a.E(),a.m.instrument&&a.m.instrument.tryCatch&&a.F(),a.m.autoBreadcrumbs&&a.G(),a.H(),a.p=!0),Error.stackTraceLimit=a.m.stackTraceLimit,this},setDSN:function(a){var b=this,c=b.I(a),d=c.path.lastIndexOf("/"),e=c.path.substr(1,d);b.J=a,b.j=c.user,b.K=c.pass&&c.pass.substr(1),b.k=c.path.substr(d+1),b.i=b.L(c),b.M=b.i+"/"+e+"api/"+b.k+"/store/",this.A()},context:function(a,b,c){return ea(a)&&(c=b||[],b=a,a=void 0),this.wrap(a,b).apply(this,c)},wrap:function(a,b,c){function d(){var d=[],f=arguments.length,g=!a||a&&a.deep!==!1;for(c&&ea(c)&&c.apply(this,arguments);f--;)d[f]=g?e.wrap(a,arguments[f]):arguments[f];try{return b.apply(this,d)}catch(h){throw e.N(),e.captureException(h,a),h}}var e=this;if(da(b)&&!ea(a))return a;if(ea(a)&&(b=a,a=void 0),!ea(b))return b;try{if(b.a)return b;if(b.O)return b.O}catch(f){return b}for(var g in b)ma(b,g)&&(d[g]=b[g]);return d.prototype=b.prototype,b.O=d,d.a=!0,d.b=b,d},uninstall:function(){return X.report.uninstall(),this.P(),this.Q(),this.R(),Error.stackTraceLimit=this.q,this.p=!1,this},captureException:function(a,b){b=ja({trimHeadFrames:0},b?b:{});var c=!aa(a),d=!ca(a),e=ca(a)&&!a.error;if(c&&d||e)return this.captureMessage(a,ja(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}));ca(a)&&(a=a.error),this.f=a;try{var f=X.computeStackTrace(a);this.S(f,b)}catch(g){if(a!==g)throw g}return this},captureMessage:function(a,b){if(!this.m.ignoreErrors.test||!this.m.ignoreErrors.test(a)){b=b||{};var c,d=ja({message:a+""},b);try{throw new Error(a)}catch(e){c=e}c.name=null;var f=X.computeStackTrace(c),g=ga(f.stack)&&f.stack[1],h=g&&g.url||"";if((!this.m.ignoreUrls.test||!this.m.ignoreUrls.test(h))&&(!this.m.whitelistUrls.test||this.m.whitelistUrls.test(h))){if(this.m.stacktrace||b&&b.stacktrace){b=ja({fingerprint:a,trimHeadFrames:(b.trimHeadFrames||0)+1},b);var i=this.T(f,b);d.stacktrace={frames:i.reverse()}}return this.U(d),this}}},captureBreadcrumb:function(a){var b=ja({timestamp:H()/1e3},a);if(ea(this.m.breadcrumbCallback)){var c=this.m.breadcrumbCallback(b);if(ba(c)&&!ha(c))b=c;else if(c===!1)return this}return this.w.push(b),this.w.length>this.m.maxBreadcrumbs&&this.w.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.t.push([a,b]),this.p&&this.H(),this},setUserContext:function(a){return this.l.user=a,this},setExtraContext:function(a){return this.V("extra",a),this},setTagsContext:function(a){return this.V("tags",a),this},clearContext:function(){return this.l={},this},getContext:function(){return JSON.parse(Y(this.l))},setEnvironment:function(a){return this.m.environment=a,this},setRelease:function(a){return this.m.release=a,this},setDataCallback:function(a){var b=this.m.dataCallback;return this.m.dataCallback=I(b,a),this},setBreadcrumbCallback:function(a){var b=this.m.breadcrumbCallback;return this.m.breadcrumbCallback=I(b,a),this},setShouldSendCallback:function(a){var b=this.m.shouldSendCallback;return this.m.shouldSendCallback=I(b,a),this},setTransport:function(a){return this.m.transport=a,this},lastException:function(){return this.f},lastEventId:function(){return this.h},isSetup:function(){return!!this.c&&(!!this.i||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.C("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=za.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(Aa){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new Z("Missing eventId");var c=a.dsn||this.J;if(!c)throw new Z("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.l.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.L(this.I(c)),h=Aa.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(Aa.head||Aa.body).appendChild(h)}},N:function(){var a=this;this.o+=1,setTimeout(function(){a.o-=1})},W:function(a,b){var c,d;if(this.d){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),Aa.createEvent?(c=Aa.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=Aa.createEventObject(),c.eventType=a);for(d in b)ma(b,d)&&(c[d]=b[d]);if(Aa.createEvent)Aa.dispatchEvent(c);else try{Aa.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},X:function(a){var b=this;return function(c){if(b.Y=null,b.x!==c){b.x=c;var d;try{d=qa(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},Z:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.Y;g||a.X("input")(c),clearTimeout(g),a.Y=setTimeout(function(){a.Y=null},b)}}},$:function(a,b){var c=ta(this.y.href),d=ta(b),e=ta(a);this.z=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},E:function(){var a=this;a._=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.a?a._.apply(this.b,arguments):a._.apply(this,arguments)}},P:function(){this._&&(Function.prototype.toString=this._)},F:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.$(b.z,c+""),a.apply(this,arguments)}};ua(history,"pushState",j,d),ua(history,"replaceState",j,d)}if(c.console&&"console"in za&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};ia(["debug","info","warn","error","log"],function(a,b){wa(console,b,k)})}},Q:function(){for(var a;this.v.length;){a=this.v.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},R:function(){for(var a in this.s)this.r[a]=this.s[a]},H:function(){var a=this;ia(this.t,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},I:function(a){var b=ya.exec(a),c={},d=7;try{for(;d--;)c[xa[d]]=b[d]||""}catch(e){throw new Z("Invalid DSN: "+a)}if(c.pass&&!this.m.allowSecretKey)throw new Z("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},L:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},D:function(){this.o||this.S.apply(this,arguments)},S:function(a,b){var c=this.T(a,b);this.W("handle",{stackInfo:a,options:b}),this.ba(a.name,a.message,a.url,a.lineno,c,b)},T:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(ia(a.stack,function(b,e){var f=c.ca(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.w,0)}),this.l.user&&(a.user=this.l.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||ha(a[b]))&&delete a[b]}),ea(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!ha(a)&&(!ea(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.ia()?void this.C("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random()":"anonymous component")+(a._isVue&&a.$options.__file?" at "+a.$options.__file:"")}function e(a,b){if(b=b||window.Vue,b&&b.config){var c=b.config.errorHandler;b.config.errorHandler=function(b,e,f){var g={};"[object Object]"===Object.prototype.toString.call(e)&&(g.componentName=d(e),g.propsData=e.$options.propsData),"undefined"!=typeof f&&(g.lifecycleHook=f),a.captureException(b,{extra:g}),"function"==typeof c&&c.call(this,b,e,f)}}}b.exports=e,a(7).addPlugin(b.exports)},{7:7}],4:[function(a,b,c){function d(a){this.name="RavenConfigError",this.message=a}d.prototype=new Error,d.prototype.constructor=d,b.exports=d},{}],5:[function(a,b,c){var d=a(8),e=function(a,b,c){var e=a[b],f=a;if(b in a){var g="warn"===b?"warning":b;a[b]=function(){var a=[].slice.call(arguments),h=d.safeJoin(a," "),i={level:g,logger:"console",extra:{arguments:a}};"assert"===b?a[0]===!1&&(h="Assertion failed: "+(d.safeJoin(a.slice(1)," ")||"console.assert"),i.extra.arguments=a.slice(1),c&&c(h,i)):c&&c(h,i),e&&Function.prototype.apply.call(e,f,a)}}};b.exports={wrapMethod:e}},{8:8}],6:[function(a,b,c){(function(c){function d(){return+new Date}function e(a,b){return q(b)?function(c){return b(c,a)}:b}function f(){this.a=!("object"!=typeof JSON||!JSON.stringify),this.b=!p(Q),this.c=!p(R),this.d=null,this.e=null,this.f=null,this.g=null,this.h=null,this.i=null,this.j={},this.k={release:P.SENTRY_RELEASE&&P.SENTRY_RELEASE.id,logger:"javascript",ignoreErrors:[],ignoreUrls:[],whitelistUrls:[],includePaths:[],headers:null,collectWindowErrors:!0,captureUnhandledRejections:!0,maxMessageLength:0,maxUrlLength:250,stackTraceLimit:50,autoBreadcrumbs:!0,instrument:!0,sampleRate:1,sanitizeKeys:[]},this.l={method:"POST",keepalive:!0,referrerPolicy:I()?"origin":""},this.m=0,this.n=!1,this.o=Error.stackTraceLimit,this.p=P.console||{},this.q={},this.r=[],this.s=d(),this.t=[],this.u=[],this.v=null,this.w=P.location,this.x=this.w&&this.w.href,this.y();for(var a in this.p)this.q[a]=this.p[a]}var g=a(9),h=a(10),i=a(11),j=a(4),k=a(8),l=k.isError,m=k.isObject,n=k.isPlainObject,o=k.isErrorEvent,p=k.isUndefined,q=k.isFunction,r=k.isString,s=k.isArray,t=k.isEmptyObject,u=k.each,v=k.objectMerge,w=k.truncate,x=k.objectFrozen,y=k.hasKey,z=k.joinRegExp,A=k.urlencode,B=k.uuid4,C=k.htmlTreeAsString,D=k.isSameException,E=k.isSameStacktrace,F=k.parseUrl,G=k.fill,H=k.supportsFetch,I=k.supportsReferrerPolicy,J=k.serializeKeysForMessage,K=k.serializeException,L=k.sanitize,M=a(5).wrapMethod,N="source protocol user pass host port path".split(" "),O=/^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/,P="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},Q=P.document,R=P.navigator;f.prototype={VERSION:"3.24.2",debug:!1,TraceKit:g,config:function(a,b){var c=this;if(c.g)return this.z("error","Error: Raven has already been configured"),c;if(!a)return c;var d=c.k;b&&u(b,function(a,b){"tags"===a||"extra"===a||"user"===a?c.j[a]=b:d[a]=b}),c.setDSN(a),d.ignoreErrors.push(/^Script error\.?$/),d.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/),d.ignoreErrors=z(d.ignoreErrors),d.ignoreUrls=!!d.ignoreUrls.length&&z(d.ignoreUrls),d.whitelistUrls=!!d.whitelistUrls.length&&z(d.whitelistUrls),d.includePaths=z(d.includePaths),d.maxBreadcrumbs=Math.max(0,Math.min(d.maxBreadcrumbs||100,100));var e={xhr:!0,console:!0,dom:!0,location:!0,sentry:!0},f=d.autoBreadcrumbs;"[object Object]"==={}.toString.call(f)?f=v(e,f):f!==!1&&(f=e),d.autoBreadcrumbs=f;var h={tryCatch:!0},i=d.instrument;return"[object Object]"==={}.toString.call(i)?i=v(h,i):i!==!1&&(i=h),d.instrument=i,g.collectWindowErrors=!!d.collectWindowErrors,c},install:function(){var a=this;return a.isSetup()&&!a.n&&(g.report.subscribe(function(){a.A.apply(a,arguments)}),a.k.captureUnhandledRejections&&a.B(),a.C(),a.k.instrument&&a.k.instrument.tryCatch&&a.D(),a.k.autoBreadcrumbs&&a.E(),a.F(),a.n=!0),Error.stackTraceLimit=a.k.stackTraceLimit,this},setDSN:function(a){var b=this,c=b.G(a),d=c.path.lastIndexOf("/"),e=c.path.substr(1,d);b.H=a,b.h=c.user,b.I=c.pass&&c.pass.substr(1),b.i=c.path.substr(d+1),b.g=b.J(c),b.K=b.g+"/"+e+"api/"+b.i+"/store/",this.y()},context:function(a,b,c){return q(a)&&(c=b||[],b=a,a=void 0),this.wrap(a,b).apply(this,c)},wrap:function(a,b,c){function d(){var d=[],f=arguments.length,g=!a||a&&a.deep!==!1;for(c&&q(c)&&c.apply(this,arguments);f--;)d[f]=g?e.wrap(a,arguments[f]):arguments[f];try{return b.apply(this,d)}catch(h){throw e.L(),e.captureException(h,a),h}}var e=this;if(p(b)&&!q(a))return a;if(q(a)&&(b=a,a=void 0),!q(b))return b;try{if(b.M)return b;if(b.N)return b.N}catch(f){return b}for(var g in b)y(b,g)&&(d[g]=b[g]);return d.prototype=b.prototype,b.N=d,d.M=!0,d.O=b,d},uninstall:function(){return g.report.uninstall(),this.P(),this.Q(),this.R(),this.S(),Error.stackTraceLimit=this.o,this.n=!1,this},T:function(a){this.z("debug","Raven caught unhandled promise rejection:",a),this.captureException(a.reason,{extra:{unhandledPromiseRejection:!0}})},B:function(){return this.T=this.T.bind(this),P.addEventListener&&P.addEventListener("unhandledrejection",this.T),this},P:function(){return P.removeEventListener&&P.removeEventListener("unhandledrejection",this.T),this},captureException:function(a,b){if(b=v({trimHeadFrames:0},b?b:{}),o(a)&&a.error)a=a.error;else if(l(a))a=a;else{if(!n(a))return this.captureMessage(a,v(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}));b=this.U(b,a),a=new Error(b.message)}this.d=a;try{var c=g.computeStackTrace(a);this.V(c,b)}catch(d){if(a!==d)throw d}return this},U:function(a,b){var c=Object.keys(b).sort(),d=v(a,{message:"Non-Error exception captured with keys: "+J(c),fingerprint:[i(c)],extra:a.extra||{}});return d.extra.W=K(b),d},captureMessage:function(a,b){if(!this.k.ignoreErrors.test||!this.k.ignoreErrors.test(a)){b=b||{},a+="";var c,d=v({message:a},b);try{throw new Error(a)}catch(e){c=e}c.name=null;var f=g.computeStackTrace(c),h=s(f.stack)&&f.stack[1];h&&"Raven.captureException"===h.func&&(h=f.stack[2]);var i=h&&h.url||"";if((!this.k.ignoreUrls.test||!this.k.ignoreUrls.test(i))&&(!this.k.whitelistUrls.test||this.k.whitelistUrls.test(i))){if(this.k.stacktrace||b&&b.stacktrace){d.fingerprint=null==d.fingerprint?a:d.fingerprint,b=v({trimHeadFrames:0},b),b.trimHeadFrames+=1;var j=this.X(f,b);d.stacktrace={frames:j.reverse()}}return d.fingerprint&&(d.fingerprint=s(d.fingerprint)?d.fingerprint:[d.fingerprint]),this.Y(d),this}}},captureBreadcrumb:function(a){var b=v({timestamp:d()/1e3},a);if(q(this.k.breadcrumbCallback)){var c=this.k.breadcrumbCallback(b);if(m(c)&&!t(c))b=c;else if(c===!1)return this}return this.u.push(b),this.u.length>this.k.maxBreadcrumbs&&this.u.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.r.push([a,b]),this.n&&this.F(),this},setUserContext:function(a){return this.j.user=a,this},setExtraContext:function(a){return this.Z("extra",a),this},setTagsContext:function(a){return this.Z("tags",a),this},clearContext:function(){return this.j={},this},getContext:function(){return JSON.parse(h(this.j))},setEnvironment:function(a){return this.k.environment=a,this},setRelease:function(a){return this.k.release=a,this},setDataCallback:function(a){var b=this.k.dataCallback;return this.k.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.k.breadcrumbCallback;return this.k.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.k.shouldSendCallback;return this.k.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.k.transport=a,this},lastException:function(){return this.d},lastEventId:function(){return this.f},isSetup:function(){return!!this.a&&(!!this.g||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.z("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=P.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(Q){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.H;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.j.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.J(this.G(c)),h=Q.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(Q.head||Q.body).appendChild(h)}},L:function(){var a=this;this.m+=1,setTimeout(function(){a.m-=1})},$:function(a,b){var c,d;if(this.b){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),Q.createEvent?(c=Q.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=Q.createEventObject(),c.eventType=a);for(d in b)y(b,d)&&(c[d]=b[d]);if(Q.createEvent)Q.dispatchEvent(c);else try{Q.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},_:function(a){var b=this;return function(c){if(b.aa=null,b.v!==c){b.v=c;var d;try{d=C(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ba:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.aa;g||a._("input")(c),clearTimeout(g),a.aa=setTimeout(function(){a.aa=null},b)}}},ca:function(a,b){var c=F(this.w.href),d=F(b),e=F(a);this.x=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},C:function(){var a=this;a.da=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.M?a.da.apply(this.O,arguments):a.da.apply(this,arguments)}},Q:function(){this.da&&(Function.prototype.toString=this.da)},D:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.ca(b.x,c+""),a.apply(this,arguments)}};G(history,"pushState",j,d),G(history,"replaceState",j,d)}if(c.console&&"console"in P&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};u(["debug","info","warn","error","log"],function(a,b){M(console,b,k)})}},R:function(){for(var a;this.t.length;){a=this.t.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},S:function(){for(var a in this.q)this.p[a]=this.q[a]},F:function(){var a=this;u(this.r,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},G:function(a){var b=O.exec(a),c={},d=7;try{for(;d--;)c[N[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.k.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},J:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},A:function(){this.m||this.V.apply(this,arguments)},V:function(a,b){var c=this.X(a,b);this.$("handle",{stackInfo:a,options:b}),this.fa(a.name,a.message,a.url,a.lineno,c,b)},X:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(u(a.stack,function(b,e){var f=c.ga(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.u,0)}),this.j.user&&(a.user=this.j.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),a=this.pa(a),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||t(a[b]))&&delete a[b]}),q(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!t(a)&&(!q(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.ma()?void this.z("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function B(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&j(b))for(c=b.split(/\s+/),f=0;fc?M(a,b-1):d}function N(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?T:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function O(a,b){function c(a){return k(a)?a.map(function(a){return c(a)}):i(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!k(b)||k(b)&&0===b.length)return a;var d,e=w(b),f="********";try{d=JSON.parse(P(a))}catch(g){return a}return c(d)}var P=a(10),Q="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},R=3,S=51200,T=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isUndefined:g,isFunction:h,isPlainObject:i,isString:j,isArray:k,isEmptyObject:l,supportsErrorEvent:m,supportsFetch:n,supportsReferrerPolicy:o,supportsPromiseRejectionEvent:p,wrappedCallback:q,each:r,objectMerge:s,truncate:u,objectFrozen:t,hasKey:v,joinRegExp:w,urlencode:x,uuid4:z,htmlTreeAsString:A,htmlElementAsString:B,isSameException:E,isSameStacktrace:F,parseUrl:y,fill:G,safeJoin:H,serializeException:M,serializeKeysForMessage:N,sanitize:O}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{10:10}],9:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}var e=a(8),f={collectWindowErrors:!0,debug:!1},g="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},h=[].slice,i="?",j=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;f.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function k(a,b){var c=null;if(!b||f.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(h.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,g,h){var l=null,m=e.isErrorEvent(h)?h.error:h,n=e.isErrorEvent(a)?a.message:a;if(v)f.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&e.isError(m))l=f.computeStackTrace(m),k(l,!0);else{var p,r={url:b,line:c,column:g},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(j);p&&(s=p[1],n=p[2])}r.func=i,l={name:s,message:n,url:d(),stack:[r]},k(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=g.onerror,g.onerror=l,r=!0)}function n(){r&&(g.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,k.apply(null,[a,!1].concat(b))}function p(a,b){var c=h.call(arguments,1);if(v){if(u===a)return;o()}var d=f.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),f.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,e,f=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,g=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,h=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,j=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,k=/\((\S*)(?::(\d+))(?::(\d+))\)/,l=a.stack.split("\n"),m=[],n=(/^(.*) is undefined$/.exec(a.message),0),o=l.length;n eval")>-1;q&&(b=j.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==n||c[5]||"undefined"==typeof a.columnNumber||(m[0].column=a.columnNumber+1),e={url:c[3],func:c[1]||i,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}!e.func&&e.line&&(e.func=i),m.push(e)}return m.length?{name:a.name,message:a.message,url:d(),stack:m}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=i),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,g){for(var h,j,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==e&&o!==f.report){if(j={url:null,func:i,line:null,column:null},o.name?j.func=o.name:(h=k.exec(o.toString()))&&(j.func=h[1]),"undefined"==typeof j.func)try{j.func=h.input.substring(0,h.input.indexOf("{"))}catch(p){}m[""+o]?n=!0:m[""+o]=!0,l.push(j)}g&&l.splice(0,g);var q={name:a.name,message:a.message,url:d(),stack:l};return b(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),q}function e(b,e){var g=null;e=null==e?0:+e;try{if(g=a(b))return g}catch(h){if(f.debug)throw h}try{if(g=c(b,e+1))return g}catch(h){if(f.debug)throw h}return{name:b.name,message:b.message,url:d()}}return e.augmentStackTraceWithInitialElement=b,e.computeStackTraceFromStackProp=a,e}(),b.exports=f}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{}); +},{8:8}],10:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}],11:[function(a,b,c){function d(a,b){var c=(65535&a)+(65535&b),d=(a>>16)+(b>>16)+(c>>16);return d<<16|65535&c}function e(a,b){return a<>>32-b}function f(a,b,c,f,g,h){return d(e(d(d(b,a),d(f,h)),g),c)}function g(a,b,c,d,e,g,h){return f(b&c|~b&d,a,b,e,g,h)}function h(a,b,c,d,e,g,h){return f(b&d|c&~d,a,b,e,g,h)}function i(a,b,c,d,e,g,h){return f(b^c^d,a,b,e,g,h)}function j(a,b,c,d,e,g,h){return f(c^(b|~d),a,b,e,g,h)}function k(a,b){a[b>>5]|=128<>>9<<4)+14]=b;var c,e,f,k,l,m=1732584193,n=-271733879,o=-1732584194,p=271733878;for(c=0;c>5]>>>b%32&255);return c}function m(a){var b,c=[];for(c[(a.length>>2)-1]=void 0,b=0;b>5]|=(255&a.charCodeAt(b/8))<16&&(e=k(e,8*a.length)),c=0;c<16;c+=1)f[c]=909522486^e[c],g[c]=1549556828^e[c];return d=k(f.concat(m(b)),512+8*b.length),l(k(g.concat(d),640))}function p(a){var b,c,d="0123456789abcdef",e="";for(c=0;c>>4&15)+d.charAt(15&b);return e}function q(a){return unescape(encodeURIComponent(a))}function r(a){return n(q(a))}function s(a){return p(r(a))}function t(a,b){return o(q(a),q(b))}function u(a,b){return p(t(a,b))}function v(a,b,c){return b?c?t(b,a):u(b,a):c?r(a):s(a)}b.exports=v},{}]},{},[7,1,2,3])(7)}); //# sourceMappingURL=raven.min.js.map \ No newline at end of file diff --git a/dist/console,require,vue/raven.min.js.map b/dist/console,require,vue/raven.min.js.map index 908a94f433a5..92b3054fe3c9 100644 --- a/dist/console,require,vue/raven.min.js.map +++ b/dist/console,require,vue/raven.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["raven.js"],"names":["global","factory","exports","module","define","amd","Raven","this","createCommonjsModule","fn","_typeof","obj","Symbol","iterator","constructor","prototype","isObject$1","what","isError$1","value","toString","call","Error","isErrorEvent$1","supportsErrorEvent","isUndefined$1","isFunction$1","isPlainObject","Object","isString$1","isArray$1","isEmptyObject$1","_","hasOwnProperty","ErrorEvent","e","supportsFetch$1","_window$3","Headers","Request","Response","wrappedCallback","callback","dataCallback","data","original","normalizedData","each$1","i","j","length","hasKey$1","objectMerge$1","obj1","obj2","key","objectFrozen$1","isFrozen","truncate$1","str","max","substr","object","joinRegExp$1","patterns","pattern","sources","len","push","replace","source","RegExp","join","urlencode$1","o","pairs","encodeURIComponent","parseUrl$1","url","match","query","fragment","protocol","host","path","relative","uuid4$1","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","r","Math","random","htmlTreeAsString$1","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","reverse","className","classes","attr","tagName","toLowerCase","id","split","attrWhitelist","getAttribute","isOnlyOneTruthy","a","b","isBothUndefined","isSameException$1","ex1","ex2","values","type","stacktrace","isSameStacktrace$1","stack1","stack2","frames1","frames","frames2","filename","lineno","colno","fill$1","name","replacement","track","orig","__raven__","__orig__","safeJoin","input","delimiter","output","String","getLocationHref","document","location","href","RavenConfigError","message","now","Date","keepOriginalCallback","isFunction","Raven$1","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window$1","SENTRY_RELEASE","logger","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","_fetchDefaults","method","keepalive","referrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","console","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","_lastHref","_resetBackoff","consolePlugin","pluginOptions","window","logLevels","levels","msg","captureMessage","level","pop","wrapConsoleMethod$1","requirePlugin","formatComponentName","vm","$root","_isVue","$options","_componentTag","__file","vuePlugin","Vue","config","_oldOnError","errorHandler","error","info","metaData","componentName","propsData","lifecycleHook","captureException","extra","commonjsGlobal","self","_sPO","setPrototypeOf","p","__proto__","Reflect","construct","Parent","args","Class","Constructor","apply","bind","utils","isObject","isError","isErrorEvent","isString","isArray","isEmptyObject","supportsFetch","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","TraceKit","debug","_window$2","_slice","slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","report","subscribe","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","stack","isWindowError","exception","concat","arguments","inner","traceKitWindowOnError","lineNo","colNo","ex","lastExceptionStack","computeStackTrace","augmentStackTraceWithInitialElement","processLastException","groups","line","column","undefined","func","_oldOnerrorHandler","_onErrorHandlerInstalled","onerror","_lastExceptionStack","_lastArgs","lastArgs","lastException","rethrow","setTimeout","incomplete","uninstall","computeStackTraceFromStackProp","submatch","parts","element","chrome","gecko","winjs","geckoEval","chromeEval","lines","exec","isNative","indexOf","isEval","columnNumber","stackInfo","initial","unshift","partial","computeStackTraceByWalkingCallerChain","depth","item","functionName","funcs","recursion","curr","caller","substring","result","sourceURL","fileName","lineNumber","description","tracekit","stringify_1","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","err","keys","thisPos","Infinity","getSerialize","configError","wrapMethod","originalConsoleLevel","originalConsole","sentryLevel","Function","console$1","wrapConsoleMethod","dsnKeys","dsnPattern","navigator","VERSION","dsn","options","_logDebug","globalOptions","setDSN","maxBreadcrumbs","min","autoBreadcrumbDefaults","xhr","dom","sentry","instrumentDefaults","tryCatch","install","isSetup","_handleOnErrorStackInfo","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","lastIndexOf","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","context","wrap","_before","wrapped","deep","_ignoreNextOnError","__raven_wrapper__","property","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","trimHeadFrames","isNotError","isNotErrorEvent","isErrorEventWithoutError","_handleStackInfo","test","initialCall","fileurl","fingerprint","_prepareFrames","_send","captureBreadcrumb","crumb","timestamp","breadcrumbCallback","shift","addPlugin","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","setDataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","N","W","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","X","evtName","_keypressTimeout","target","category","Z","debounceDuration","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","$","from","to","parsedLoc","parsedTo","parsedFrom","E","_originalFunctionToString","P","F","wrapTimeFn","t","Array","originalCallback","wrapEventTarget","proto","capture","secure","handleEvent","before","clickHandler","keypressHandler","_keypressEventHandler","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","G","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","onreadystatechange","origFetch","fetchInput","fetchData","then","response","addEventListener","attachEvent","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","Q","builtin","R","H","installer","I","m","allowSecretKey","L","port","D","S","_triggerEvent","_processException","T","frame","_normalizeFrame","in_app","ca","stackInfoUrl","normalized","function","ba","prefixedMessage","culprit","da","request","Referer","breadcrumbs","_trimBreadcrumbs","ea","urlProp","urlProps","fa","httpData","userAgent","User-Agent","referrer","A","_backoffDuration","_backoffStart","ia","ja","current","last","ka","_shouldBackoff","retry","get","getResponseHeader","parseInt","U","baseData","project","platform","_getHttpData","serverName","server_name","forEach","_sendProcessedPayload","ma","la","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","na","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","onload","open","setRequestHeader","send","oa","hash","evaluated","C","V","setUser","setReleaseContext","raven","_window","_Raven","noConflict","singleton","console$3","require_1","vue","console_require_vue"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file +{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","consolePlugin","console","pluginOptions","logLevels","levels","push","callback","msg","data","captureMessage","level","pop","wrapConsoleMethod","wrapMethod","addPlugin","5","7","2","requirePlugin","wrap","deep","3","formatComponentName","vm","$root","name","_isVue","$options","_componentTag","__file","vuePlugin","Vue","config","_oldOnError","errorHandler","error","info","metaData","Object","prototype","toString","componentName","propsData","lifecycleHook","captureException","extra","4","RavenConfigError","message","constructor","utils","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","safeJoin","logger","Function","apply","8","6","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","sanitizeKeys","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isError","isObject","isPlainObject","isErrorEvent","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","sanitize","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","dsn","options","_logDebug","globalOptions","key","value","setDSN","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","substr","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","context","func","undefined","_before","wrapped","_ignoreNextOnError","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","T","event","reason","unhandledPromiseRejection","B","_promiseRejectionHandler","bind","addEventListener","P","removeEventListener","ex","trimHeadFrames","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","U","currentOptions","exKeys","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","setDataCallback","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","L","setTimeout","$","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","_","evtName","_keypressTimeout","target","category","ba","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","ca","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","C","_originalFunctionToString","Q","D","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","type","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","E","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","R","builtin","S","F","installer","concat","G","str","m","exec","allowSecretKey","J","port","A","V","stackInfo","_triggerEvent","_processException","lineno","X","frame","_normalizeFrame","in_app","ga","stackInfoUrl","normalized","filename","line","colno","column","function","fa","prefixedMessage","exception","values","culprit","ha","request","Referer","breadcrumbs","_trimBreadcrumbs","ia","urlProp","urlProps","ja","httpData","userAgent","User-Agent","referrer","y","_backoffDuration","_backoffStart","ma","na","current","last","oa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Y","baseData","project","platform","_getHttpData","serverName","server_name","_sanitizeData","forEach","random","_sendProcessedPayload","pa","ra","qa","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","sa","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","onerror","open","setRequestHeader","send","ta","hash","evaluated","z","Z","setUser","setReleaseContext","10","11","9","RavenConstructor","_Raven","noConflict","Client","what","supportsErrorEvent","ErrorEvent","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","wrappedCallback","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","sanitizeMask","safeInput","o_O","getLocationHref","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","charAt","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","string","raw"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file diff --git a/dist/console,require/raven.js b/dist/console,require/raven.js index a6e594ff56cf..20c588fdc42f 100644 --- a/dist/console,require/raven.js +++ b/dist/console,require/raven.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.22.2 (1b6187b) | github.com/getsentry/raven-js */ +/*! Raven.js 3.24.2 (540f32b) | github.com/getsentry/raven-js */ /* * Includes TraceKit @@ -10,3184 +10,3947 @@ * */ -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : - typeof define === 'function' && define.amd ? define(factory) : - (global.Raven = factory()); -}(this, (function () { 'use strict'; - -var commonjsGlobal = typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; - -function commonjsRequire () { - throw new Error('Dynamic requires are not currently supported by rollup-plugin-commonjs'); -} +(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.Raven = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o href parsing trick because React Native and other -// environments where DOM might not be available + self.setDSN(dsn); + // "Script error." is hard coded into browsers for errors that it can't read. + // this is the result of a script being pulled in from an external domain and CORS. + globalOptions.ignoreErrors.push(/^Script error\.?$/); + globalOptions.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/); -function parseUrl$1(url) { - if (typeof url !== 'string') return {}; - var match = url.match(/^(([^:\/?#]+):)?(\/\/([^\/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?$/); // coerce to undefined values to empty string so we don't get 'undefined' + // join regexp rules into one big rule + globalOptions.ignoreErrors = joinRegExp(globalOptions.ignoreErrors); + globalOptions.ignoreUrls = globalOptions.ignoreUrls.length + ? joinRegExp(globalOptions.ignoreUrls) + : false; + globalOptions.whitelistUrls = globalOptions.whitelistUrls.length + ? joinRegExp(globalOptions.whitelistUrls) + : false; + globalOptions.includePaths = joinRegExp(globalOptions.includePaths); + globalOptions.maxBreadcrumbs = Math.max( + 0, + Math.min(globalOptions.maxBreadcrumbs || 100, 100) + ); // default and hard limit is 100 - var query = match[6] || ''; - var fragment = match[8] || ''; - return { - protocol: match[2], - host: match[4], - path: match[5], - relative: match[5] + query + fragment // everything minus origin + var autoBreadcrumbDefaults = { + xhr: true, + console: true, + dom: true, + location: true, + sentry: true + }; - }; -} + var autoBreadcrumbs = globalOptions.autoBreadcrumbs; + if ({}.toString.call(autoBreadcrumbs) === '[object Object]') { + autoBreadcrumbs = objectMerge(autoBreadcrumbDefaults, autoBreadcrumbs); + } else if (autoBreadcrumbs !== false) { + autoBreadcrumbs = autoBreadcrumbDefaults; + } + globalOptions.autoBreadcrumbs = autoBreadcrumbs; -function uuid4$1() { - var crypto = _window$3.crypto || _window$3.msCrypto; + var instrumentDefaults = { + tryCatch: true + }; - if (!isUndefined$1(crypto) && crypto.getRandomValues) { - // Use window.crypto API if available - // eslint-disable-next-line no-undef - var arr = new Uint16Array(8); - crypto.getRandomValues(arr); // set 4 in byte 7 + var instrument = globalOptions.instrument; + if ({}.toString.call(instrument) === '[object Object]') { + instrument = objectMerge(instrumentDefaults, instrument); + } else if (instrument !== false) { + instrument = instrumentDefaults; + } + globalOptions.instrument = instrument; - arr[3] = arr[3] & 0xfff | 0x4000; // set 2 most significant bits of byte 9 to '10' + TraceKit.collectWindowErrors = !!globalOptions.collectWindowErrors; - arr[4] = arr[4] & 0x3fff | 0x8000; + // return for chaining + return self; + }, - var pad = function pad(num) { - var v = num.toString(16); + /* + * Installs a global window.onerror error handler + * to capture and report uncaught exceptions. + * At this point, install() is required to be called due + * to the way TraceKit is set up. + * + * @return {Raven} + */ + install: function() { + var self = this; + if (self.isSetup() && !self._isRavenInstalled) { + TraceKit.report.subscribe(function() { + self._handleOnErrorStackInfo.apply(self, arguments); + }); - while (v.length < 4) { - v = '0' + v; + if (self._globalOptions.captureUnhandledRejections) { + self._attachPromiseRejectionHandler(); } - return v; - }; - - return pad(arr[0]) + pad(arr[1]) + pad(arr[2]) + pad(arr[3]) + pad(arr[4]) + pad(arr[5]) + pad(arr[6]) + pad(arr[7]); - } else { - // http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/2117523#2117523 - return 'xxxxxxxxxxxx4xxxyxxxxxxxxxxxxxxx'.replace(/[xy]/g, function (c) { - var r = Math.random() * 16 | 0, - v = c === 'x' ? r : r & 0x3 | 0x8; - return v.toString(16); - }); - } -} -/** - * Given a child DOM element, returns a query-selector statement describing that - * and its ancestors - * e.g. [HTMLElement] => body > div > input#foo.btn[name=baz] - * @param elem - * @returns {string} - */ + self._patchFunctionToString(); + if (self._globalOptions.instrument && self._globalOptions.instrument.tryCatch) { + self._instrumentTryCatch(); + } -function htmlTreeAsString$1(elem) { - /* eslint no-extra-parens:0*/ - var MAX_TRAVERSE_HEIGHT = 5, - MAX_OUTPUT_LEN = 80, - out = [], - height = 0, - len = 0, - separator = ' > ', - sepLength = separator.length, - nextStr; + if (self._globalOptions.autoBreadcrumbs) self._instrumentBreadcrumbs(); - while (elem && height++ < MAX_TRAVERSE_HEIGHT) { - nextStr = htmlElementAsString(elem); // bail out if - // - nextStr is the 'html' element - // - the length of the string that would be created exceeds MAX_OUTPUT_LEN - // (ignore this limit if we are on the first iteration) + // Install all of the plugins + self._drainPlugins(); - if (nextStr === 'html' || height > 1 && len + out.length * sepLength + nextStr.length >= MAX_OUTPUT_LEN) { - break; + self._isRavenInstalled = true; } - out.push(nextStr); - len += nextStr.length; - elem = elem.parentNode; - } + Error.stackTraceLimit = self._globalOptions.stackTraceLimit; + return this; + }, - return out.reverse().join(separator); -} -/** - * Returns a simple, query-selector representation of a DOM element - * e.g. [HTMLElement] => input#foo.btn[name=baz] - * @param HTMLElement - * @returns {string} - */ + /* + * Set the DSN (can be called multiple time unlike config) + * + * @param {string} dsn The public Sentry DSN + */ + setDSN: function(dsn) { + var self = this, + uri = self._parseDSN(dsn), + lastSlash = uri.path.lastIndexOf('/'), + path = uri.path.substr(1, lastSlash); + self._dsn = dsn; + self._globalKey = uri.user; + self._globalSecret = uri.pass && uri.pass.substr(1); + self._globalProject = uri.path.substr(lastSlash + 1); -function htmlElementAsString(elem) { - var out = [], - className, - classes, - key, - attr, - i; + self._globalServer = self._getGlobalServer(uri); - if (!elem || !elem.tagName) { - return ''; - } + self._globalEndpoint = + self._globalServer + '/' + path + 'api/' + self._globalProject + '/store/'; - out.push(elem.tagName.toLowerCase()); + // Reset backoff state since we may be pointing at a + // new project/server + this._resetBackoff(); + }, - if (elem.id) { - out.push('#' + elem.id); - } + /* + * Wrap code within a context so Raven can capture errors + * reliably across domains that is executed immediately. + * + * @param {object} options A specific set of options for this context [optional] + * @param {function} func The callback to be immediately executed within the context + * @param {array} args An array of arguments to be called with the callback [optional] + */ + context: function(options, func, args) { + if (isFunction(options)) { + args = func || []; + func = options; + options = undefined; + } - className = elem.className; + return this.wrap(options, func).apply(this, args); + }, - if (className && isString$1(className)) { - classes = className.split(/\s+/); + /* + * Wrap code within a context and returns back a new function to be executed + * + * @param {object} options A specific set of options for this context [optional] + * @param {function} func The function to be wrapped in a new context + * @param {function} func A function to call before the try/catch wrapper [optional, private] + * @return {function} The newly wrapped functions with a context + */ + wrap: function(options, func, _before) { + var self = this; + // 1 argument has been passed, and it's not a function + // so just return it + if (isUndefined(func) && !isFunction(options)) { + return options; + } - for (i = 0; i < classes.length; i++) { - out.push('.' + classes[i]); + // options is optional + if (isFunction(options)) { + func = options; + options = undefined; } - } - var attrWhitelist = ['type', 'name', 'title', 'alt']; + // At this point, we've passed along 2 arguments, and the second one + // is not a function either, so we'll just return the second argument. + if (!isFunction(func)) { + return func; + } - for (i = 0; i < attrWhitelist.length; i++) { - key = attrWhitelist[i]; - attr = elem.getAttribute(key); + // We don't wanna wrap it twice! + try { + if (func.__raven__) { + return func; + } - if (attr) { - out.push('[' + key + '="' + attr + '"]'); + // If this has already been wrapped in the past, return that + if (func.__raven_wrapper__) { + return func.__raven_wrapper__; + } + } catch (e) { + // Just accessing custom props in some Selenium environments + // can cause a "Permission denied" exception (see raven-js#495). + // Bail on wrapping and return the function as-is (defers to window.onerror). + return func; } - } - return out.join(''); -} -/** - * Returns true if either a OR b is truthy, but not both - */ + function wrapped() { + var args = [], + i = arguments.length, + deep = !options || (options && options.deep !== false); + if (_before && isFunction(_before)) { + _before.apply(this, arguments); + } -function isOnlyOneTruthy(a, b) { - return !!(!!a ^ !!b); -} -/** - * Returns true if both parameters are undefined - */ + // Recursively wrap all of a function's arguments that are + // functions themselves. + while (i--) args[i] = deep ? self.wrap(options, arguments[i]) : arguments[i]; + try { + // Attempt to invoke user-land function + // NOTE: If you are a Sentry user, and you are seeing this stack frame, it + // means Raven caught an error invoking your application code. This is + // expected behavior and NOT indicative of a bug with Raven.js. + return func.apply(this, args); + } catch (e) { + self._ignoreNextOnError(); + self.captureException(e, options); + throw e; + } + } -function isBothUndefined(a, b) { - return isUndefined$1(a) && isUndefined$1(b); -} -/** - * Returns true if the two input exception interfaces have the same content - */ + // copy over properties of the old function + for (var property in func) { + if (hasKey(func, property)) { + wrapped[property] = func[property]; + } + } + wrapped.prototype = func.prototype; + func.__raven_wrapper__ = wrapped; + // Signal that this function has been wrapped/filled already + // for both debugging and to prevent it to being wrapped/filled twice + wrapped.__raven__ = true; + wrapped.__orig__ = func; -function isSameException$1(ex1, ex2) { - if (isOnlyOneTruthy(ex1, ex2)) return false; - ex1 = ex1.values[0]; - ex2 = ex2.values[0]; - if (ex1.type !== ex2.type || ex1.value !== ex2.value) return false; // in case both stacktraces are undefined, we can't decide so default to false + return wrapped; + }, - if (isBothUndefined(ex1.stacktrace, ex2.stacktrace)) return false; - return isSameStacktrace$1(ex1.stacktrace, ex2.stacktrace); -} -/** - * Returns true if the two input stack trace interfaces have the same content - */ + /** + * Uninstalls the global error handler. + * + * @return {Raven} + */ + uninstall: function() { + TraceKit.report.uninstall(); + this._detachPromiseRejectionHandler(); + this._unpatchFunctionToString(); + this._restoreBuiltIns(); + this._restoreConsole(); -function isSameStacktrace$1(stack1, stack2) { - if (isOnlyOneTruthy(stack1, stack2)) return false; - var frames1 = stack1.frames; - var frames2 = stack2.frames; // Exit early if frame count differs + Error.stackTraceLimit = this._originalErrorStackTraceLimit; + this._isRavenInstalled = false; - if (frames1.length !== frames2.length) return false; // Iterate through every frame; bail out if anything differs + return this; + }, - var a, b; + /** + * Callback used for `unhandledrejection` event + * + * @param {PromiseRejectionEvent} event An object containing + * promise: the Promise that was rejected + * reason: the value with which the Promise was rejected + * @return void + */ + _promiseRejectionHandler: function(event) { + this._logDebug('debug', 'Raven caught unhandled promise rejection:', event); + this.captureException(event.reason, { + extra: { + unhandledPromiseRejection: true + } + }); + }, - for (var i = 0; i < frames1.length; i++) { - a = frames1[i]; - b = frames2[i]; - if (a.filename !== b.filename || a.lineno !== b.lineno || a.colno !== b.colno || a['function'] !== b['function']) return false; - } + /** + * Installs the global promise rejection handler. + * + * @return {raven} + */ + _attachPromiseRejectionHandler: function() { + this._promiseRejectionHandler = this._promiseRejectionHandler.bind(this); + _window.addEventListener && + _window.addEventListener('unhandledrejection', this._promiseRejectionHandler); + return this; + }, - return true; -} -/** - * Polyfill a method - * @param obj object e.g. `document` - * @param name method name present on object e.g. `addEventListener` - * @param replacement replacement function - * @param track {optional} record instrumentation to an array - */ + /** + * Uninstalls the global promise rejection handler. + * + * @return {raven} + */ + _detachPromiseRejectionHandler: function() { + _window.removeEventListener && + _window.removeEventListener('unhandledrejection', this._promiseRejectionHandler); + return this; + }, + /** + * Manually capture an exception and send it over to Sentry + * + * @param {error} ex An exception to be logged + * @param {object} options A specific set of options for this error [optional] + * @return {Raven} + */ + captureException: function(ex, options) { + options = objectMerge({trimHeadFrames: 0}, options ? options : {}); + + if (isErrorEvent(ex) && ex.error) { + // If it is an ErrorEvent with `error` property, extract it to get actual Error + ex = ex.error; + } else if (isError(ex)) { + // we have a real Error object + ex = ex; + } else if (isPlainObject(ex)) { + // If it is plain Object, serialize it manually and extract options + // This will allow us to group events based on top-level keys + // which is much better than creating new group when any key/value change + options = this._getCaptureExceptionOptionsFromPlainObject(options, ex); + ex = new Error(options.message); + } else { + // If none of previous checks were valid, then it means that + // it's not a plain Object + // it's not a valid ErrorEvent (one with an error property) + // it's not an Error + // So bail out and capture it as a simple message: + return this.captureMessage( + ex, + objectMerge(options, { + stacktrace: true, // if we fall back to captureMessage, default to attempting a new trace + trimHeadFrames: options.trimHeadFrames + 1 + }) + ); + } + + // Store the raw exception object for potential debugging and introspection + this._lastCapturedException = ex; + + // TraceKit.report will re-raise any exception passed to it, + // which means you have to wrap it in try/catch. Instead, we + // can wrap it here and only re-raise if TraceKit.report + // raises an exception different from the one we asked to + // report on. + try { + var stack = TraceKit.computeStackTrace(ex); + this._handleStackInfo(stack, options); + } catch (ex1) { + if (ex !== ex1) { + throw ex1; + } + } -function fill$1(obj, name, replacement, track) { - var orig = obj[name]; - obj[name] = replacement(orig); - obj[name].__raven__ = true; - obj[name].__orig__ = orig; + return this; + }, - if (track) { - track.push([obj, name, orig]); - } -} -/** - * Join values in array - * @param input array of values to be joined together - * @param delimiter string to be placed in-between values - * @returns {string} - */ + _getCaptureExceptionOptionsFromPlainObject: function(currentOptions, ex) { + var exKeys = Object.keys(ex).sort(); + var options = objectMerge(currentOptions, { + message: + 'Non-Error exception captured with keys: ' + serializeKeysForMessage(exKeys), + fingerprint: [md5(exKeys)], + extra: currentOptions.extra || {} + }); + options.extra.__serialized__ = serializeException(ex); + return options; + }, -function safeJoin(input, delimiter) { - if (!isArray$1(input)) return ''; - var output = []; + /* + * Manually send a message to Sentry + * + * @param {string} msg A plain message to be captured in Sentry + * @param {object} options A specific set of options for this message [optional] + * @return {Raven} + */ + captureMessage: function(msg, options) { + // config() automagically converts ignoreErrors from a list to a RegExp so we need to test for an + // early call; we'll error on the side of logging anything called before configuration since it's + // probably something you should see: + if ( + !!this._globalOptions.ignoreErrors.test && + this._globalOptions.ignoreErrors.test(msg) + ) { + return; + } - for (var i = 0; i < input.length; i++) { + options = options || {}; + msg = msg + ''; // Make sure it's actually a string + + var data = objectMerge( + { + message: msg + }, + options + ); + + var ex; + // Generate a "synthetic" stack trace from this point. + // NOTE: If you are a Sentry user, and you are seeing this stack frame, it is NOT indicative + // of a bug with Raven.js. Sentry generates synthetic traces either by configuration, + // or if it catches a thrown object without a "stack" property. try { - output.push(String(input[i])); - } catch (e) { - output.push('[value cannot be serialized]'); + throw new Error(msg); + } catch (ex1) { + ex = ex1; } - } - - return output.join(delimiter); -} -var utils = { - isObject: isObject$1, - isError: isError$1, - isErrorEvent: isErrorEvent$1, - isUndefined: isUndefined$1, - isFunction: isFunction$1, - isPlainObject: isPlainObject, - isString: isString$1, - isArray: isArray$1, - isEmptyObject: isEmptyObject$1, - supportsErrorEvent: supportsErrorEvent, - supportsFetch: supportsFetch$1, - wrappedCallback: wrappedCallback, - each: each$1, - objectMerge: objectMerge$1, - truncate: truncate$1, - objectFrozen: objectFrozen$1, - hasKey: hasKey$1, - joinRegExp: joinRegExp$1, - urlencode: urlencode$1, - uuid4: uuid4$1, - htmlTreeAsString: htmlTreeAsString$1, - htmlElementAsString: htmlElementAsString, - isSameException: isSameException$1, - isSameStacktrace: isSameStacktrace$1, - parseUrl: parseUrl$1, - fill: fill$1, - safeJoin: safeJoin -}; + // null exception name so `Error` isn't prefixed to msg + ex.name = null; + var stack = TraceKit.computeStackTrace(ex); -/* - TraceKit - Cross brower stack traces + // stack[0] is `throw new Error(msg)` call itself, we are interested in the frame that was just before that, stack[1] + var initialCall = isArray(stack.stack) && stack.stack[1]; - This was originally forked from github.com/occ/TraceKit, but has since been - largely re-written and is now maintained as part of raven-js. Tests for - this are in test/vendor. + // if stack[1] is `Raven.captureException`, it means that someone passed a string to it and we redirected that call + // to be handled by `captureMessage`, thus `initialCall` is the 3rd one, not 2nd + // initialCall => captureException(string) => captureMessage(string) + if (initialCall && initialCall.func === 'Raven.captureException') { + initialCall = stack.stack[2]; + } - MIT license -*/ + var fileurl = (initialCall && initialCall.url) || ''; -var TraceKit = { - collectWindowErrors: true, - debug: false -}; // This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) + if ( + !!this._globalOptions.ignoreUrls.test && + this._globalOptions.ignoreUrls.test(fileurl) + ) { + return; + } -var _window$2 = typeof window !== 'undefined' ? window : typeof commonjsGlobal !== 'undefined' ? commonjsGlobal : typeof self !== 'undefined' ? self : {}; // global reference to slice + if ( + !!this._globalOptions.whitelistUrls.test && + !this._globalOptions.whitelistUrls.test(fileurl) + ) { + return; + } + if (this._globalOptions.stacktrace || (options && options.stacktrace)) { + // fingerprint on msg, not stack trace (legacy behavior, could be revisited) + data.fingerprint = data.fingerprint == null ? msg : data.fingerprint; -var _slice = [].slice; -var UNKNOWN_FUNCTION = '?'; // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error#Error_types + options = objectMerge( + { + trimHeadFrames: 0 + }, + options + ); + // Since we know this is a synthetic trace, the top frame (this function call) + // MUST be from Raven.js, so mark it for trimming + // We add to the trim counter so that callers can choose to trim extra frames, such + // as utility functions. + options.trimHeadFrames += 1; -var ERROR_TYPES_RE = /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/; + var frames = this._prepareFrames(stack, options); + data.stacktrace = { + // Sentry expects frames oldest to newest + frames: frames.reverse() + }; + } -function getLocationHref() { - if (typeof document === 'undefined' || document.location == null) return ''; - return document.location.href; -} -/** - * TraceKit.report: cross-browser processing of unhandled exceptions - * - * Syntax: - * TraceKit.report.subscribe(function(stackInfo) { ... }) - * TraceKit.report.unsubscribe(function(stackInfo) { ... }) - * TraceKit.report(exception) - * try { ...code... } catch(ex) { TraceKit.report(ex); } - * - * Supports: - * - Firefox: full stack trace with line numbers, plus column number - * on top frame; column number is not guaranteed - * - Opera: full stack trace with line and column numbers - * - Chrome: full stack trace with line and column numbers - * - Safari: line and column number for the top frame only; some frames - * may be missing, and column number is not guaranteed - * - IE: line and column number for the top frame only; some frames - * may be missing, and column number is not guaranteed - * - * In theory, TraceKit should work on all of the following versions: - * - IE5.5+ (only 8.0 tested) - * - Firefox 0.9+ (only 3.5+ tested) - * - Opera 7+ (only 10.50 tested; versions 9 and earlier may require - * Exceptions Have Stacktrace to be enabled in opera:config) - * - Safari 3+ (only 4+ tested) - * - Chrome 1+ (only 5+ tested) - * - Konqueror 3.5+ (untested) - * - * Requires TraceKit.computeStackTrace. - * - * Tries to catch all unhandled exceptions and report them to the - * subscribed handlers. Please note that TraceKit.report will rethrow the - * exception. This is REQUIRED in order to get a useful stack trace in IE. - * If the exception does not reach the top of the browser, you will only - * get a stack trace from the point where TraceKit.report was called. - * - * Handlers receive a stackInfo object as described in the - * TraceKit.computeStackTrace docs. - */ + // Make sure that fingerprint is always wrapped in an array + if (data.fingerprint) { + data.fingerprint = isArray(data.fingerprint) + ? data.fingerprint + : [data.fingerprint]; + } + // Fire away! + this._send(data); -TraceKit.report = function reportModuleWrapper() { - var handlers = [], - lastArgs = null, - lastException = null, - lastExceptionStack = null; - /** - * Add a crash handler. - * @param {Function} handler - */ + return this; + }, - function subscribe(handler) { - installGlobalHandler(); - handlers.push(handler); - } - /** - * Remove a crash handler. - * @param {Function} handler - */ + captureBreadcrumb: function(obj) { + var crumb = objectMerge( + { + timestamp: now() / 1000 + }, + obj + ); + if (isFunction(this._globalOptions.breadcrumbCallback)) { + var result = this._globalOptions.breadcrumbCallback(crumb); - function unsubscribe(handler) { - for (var i = handlers.length - 1; i >= 0; --i) { - if (handlers[i] === handler) { - handlers.splice(i, 1); + if (isObject(result) && !isEmptyObject(result)) { + crumb = result; + } else if (result === false) { + return this; } } - } - /** - * Remove all crash handlers. - */ - - - function unsubscribeAll() { - uninstallGlobalHandler(); - handlers = []; - } - /** - * Dispatch stack information to all handlers. - * @param {Object.} stack - */ + this._breadcrumbs.push(crumb); + if (this._breadcrumbs.length > this._globalOptions.maxBreadcrumbs) { + this._breadcrumbs.shift(); + } + return this; + }, - function notifyHandlers(stack, isWindowError) { - var exception = null; + addPlugin: function(plugin /*arg1, arg2, ... argN*/) { + var pluginArgs = [].slice.call(arguments, 1); - if (isWindowError && !TraceKit.collectWindowErrors) { - return; + this._plugins.push([plugin, pluginArgs]); + if (this._isRavenInstalled) { + this._drainPlugins(); } - for (var i in handlers) { - if (handlers.hasOwnProperty(i)) { - try { - handlers[i].apply(null, [stack].concat(_slice.call(arguments, 2))); - } catch (inner) { - exception = inner; - } - } - } - - if (exception) { - throw exception; - } - } + return this; + }, - var _oldOnerrorHandler, _onErrorHandlerInstalled; - /** - * Ensures all global unhandled exceptions are recorded. - * Supported by Gecko and IE. - * @param {string} msg Error message. - * @param {string} url URL of script that generated the exception. - * @param {(number|string)} lineNo The line number at which the error - * occurred. - * @param {?(number|string)} colNo The column number at which the error - * occurred. - * @param {?Error} ex The actual Error object. + /* + * Set/clear a user to be sent along with the payload. + * + * @param {object} user An object representing user data [optional] + * @return {Raven} */ + setUserContext: function(user) { + // Intentionally do not merge here since that's an unexpected behavior. + this._globalContext.user = user; + return this; + }, - function traceKitWindowOnError(msg, url, lineNo, colNo, ex) { - var stack = null; // If 'ex' is ErrorEvent, get real Error from inside + /* + * Merge extra attributes to be sent along with the payload. + * + * @param {object} extra An object representing extra data [optional] + * @return {Raven} + */ + setExtraContext: function(extra) { + this._mergeContext('extra', extra); - var exception = utils.isErrorEvent(ex) ? ex.error : ex; // If 'msg' is ErrorEvent, get real message from inside + return this; + }, - var message = utils.isErrorEvent(msg) ? msg.message : msg; + /* + * Merge tags to be sent along with the payload. + * + * @param {object} tags An object representing tags [optional] + * @return {Raven} + */ + setTagsContext: function(tags) { + this._mergeContext('tags', tags); - if (lastExceptionStack) { - TraceKit.computeStackTrace.augmentStackTraceWithInitialElement(lastExceptionStack, url, lineNo, message); - processLastException(); - } else if (exception && utils.isError(exception)) { - // non-string `exception` arg; attempt to extract stack trace - // New chrome and blink send along a real error object - // Let's just report that like a normal error. - // See: https://mikewest.org/2013/08/debugging-runtime-errors-with-window-onerror - stack = TraceKit.computeStackTrace(exception); - notifyHandlers(stack, true); - } else { - var location = { - url: url, - line: lineNo, - column: colNo - }; - var name = undefined; - var groups; + return this; + }, - if ({}.toString.call(message) === '[object String]') { - var groups = message.match(ERROR_TYPES_RE); + /* + * Clear all of the context. + * + * @return {Raven} + */ + clearContext: function() { + this._globalContext = {}; - if (groups) { - name = groups[1]; - message = groups[2]; - } - } + return this; + }, - location.func = UNKNOWN_FUNCTION; - stack = { - name: name, - message: message, - url: getLocationHref(), - stack: [location] - }; - notifyHandlers(stack, true); - } + /* + * Get a copy of the current context. This cannot be mutated. + * + * @return {object} copy of context + */ + getContext: function() { + // lol javascript + return JSON.parse(stringify(this._globalContext)); + }, - if (_oldOnerrorHandler) { - return _oldOnerrorHandler.apply(this, arguments); - } + /* + * Set environment of application + * + * @param {string} environment Typically something like 'production'. + * @return {Raven} + */ + setEnvironment: function(environment) { + this._globalOptions.environment = environment; - return false; - } + return this; + }, - function installGlobalHandler() { - if (_onErrorHandlerInstalled) { - return; - } + /* + * Set release version of application + * + * @param {string} release Typically something like a git SHA to identify version + * @return {Raven} + */ + setRelease: function(release) { + this._globalOptions.release = release; - _oldOnerrorHandler = _window$2.onerror; - _window$2.onerror = traceKitWindowOnError; - _onErrorHandlerInstalled = true; - } + return this; + }, - function uninstallGlobalHandler() { - if (!_onErrorHandlerInstalled) { - return; - } + /* + * Set the dataCallback option + * + * @param {function} callback The callback to run which allows the + * data blob to be mutated before sending + * @return {Raven} + */ + setDataCallback: function(callback) { + var original = this._globalOptions.dataCallback; + this._globalOptions.dataCallback = keepOriginalCallback(original, callback); + return this; + }, - _window$2.onerror = _oldOnerrorHandler; - _onErrorHandlerInstalled = false; - _oldOnerrorHandler = undefined; - } + /* + * Set the breadcrumbCallback option + * + * @param {function} callback The callback to run which allows filtering + * or mutating breadcrumbs + * @return {Raven} + */ + setBreadcrumbCallback: function(callback) { + var original = this._globalOptions.breadcrumbCallback; + this._globalOptions.breadcrumbCallback = keepOriginalCallback(original, callback); + return this; + }, - function processLastException() { - var _lastExceptionStack = lastExceptionStack, - _lastArgs = lastArgs; - lastArgs = null; - lastExceptionStack = null; - lastException = null; - notifyHandlers.apply(null, [_lastExceptionStack, false].concat(_lastArgs)); - } - /** - * Reports an unhandled Error to TraceKit. - * @param {Error} ex - * @param {?boolean} rethrow If false, do not re-throw the exception. - * Only used for window.onerror to not cause an infinite loop of - * rethrowing. + /* + * Set the shouldSendCallback option + * + * @param {function} callback The callback to run which allows + * introspecting the blob before sending + * @return {Raven} */ + setShouldSendCallback: function(callback) { + var original = this._globalOptions.shouldSendCallback; + this._globalOptions.shouldSendCallback = keepOriginalCallback(original, callback); + return this; + }, + /** + * Override the default HTTP transport mechanism that transmits data + * to the Sentry server. + * + * @param {function} transport Function invoked instead of the default + * `makeRequest` handler. + * + * @return {Raven} + */ + setTransport: function(transport) { + this._globalOptions.transport = transport; - function report(ex, rethrow) { - var args = _slice.call(arguments, 1); + return this; + }, - if (lastExceptionStack) { - if (lastException === ex) { - return; // already caught by an inner catch block, ignore - } else { - processLastException(); + /* + * Get the latest raw exception that was captured by Raven. + * + * @return {error} + */ + lastException: function() { + return this._lastCapturedException; + }, + + /* + * Get the last event id + * + * @return {string} + */ + lastEventId: function() { + return this._lastEventId; + }, + + /* + * Determine if Raven is setup and ready to go. + * + * @return {boolean} + */ + isSetup: function() { + if (!this._hasJSON) return false; // needs JSON support + if (!this._globalServer) { + if (!this.ravenNotConfiguredError) { + this.ravenNotConfiguredError = true; + this._logDebug('error', 'Error: Raven has not been configured.'); } + return false; } + return true; + }, - var stack = TraceKit.computeStackTrace(ex); - lastExceptionStack = stack; - lastException = ex; - lastArgs = args; // If the stack trace is incomplete, wait for 2 seconds for - // slow slow IE to see if onerror occurs or not before reporting - // this exception; otherwise, we will end up with an incomplete - // stack trace + afterLoad: function() { + // TODO: remove window dependence? - setTimeout(function () { - if (lastException === ex) { - processLastException(); - } - }, stack.incomplete ? 2000 : 0); + // Attempt to initialize Raven on load + var RavenConfig = _window.RavenConfig; + if (RavenConfig) { + this.config(RavenConfig.dsn, RavenConfig.config).install(); + } + }, - if (rethrow !== false) { - throw ex; // re-throw to propagate to the top level (and cause window.onerror) + showReportDialog: function(options) { + if ( + !_document // doesn't work without a document (React native) + ) + return; + + options = options || {}; + + var lastEventId = options.eventId || this.lastEventId(); + if (!lastEventId) { + throw new RavenConfigError('Missing eventId'); } - } - report.subscribe = subscribe; - report.unsubscribe = unsubscribe; - report.uninstall = unsubscribeAll; - return report; -}(); -/** - * TraceKit.computeStackTrace: cross-browser stack traces in JavaScript - * - * Syntax: - * s = TraceKit.computeStackTrace(exception) // consider using TraceKit.report instead (see below) - * Returns: - * s.name - exception name - * s.message - exception message - * s.stack[i].url - JavaScript or HTML file URL - * s.stack[i].func - function name, or empty for anonymous functions (if guessing did not work) - * s.stack[i].args - arguments passed to the function, if known - * s.stack[i].line - line number, if known - * s.stack[i].column - column number, if known - * - * Supports: - * - Firefox: full stack trace with line numbers and unreliable column - * number on top frame - * - Opera 10: full stack trace with line and column numbers - * - Opera 9-: full stack trace with line numbers - * - Chrome: full stack trace with line and column numbers - * - Safari: line and column number for the topmost stacktrace element - * only - * - IE: no line numbers whatsoever - * - * Tries to guess names of anonymous functions by looking for assignments - * in the source code. In IE and Safari, we have to guess source file names - * by searching for function bodies inside all page scripts. This will not - * work for scripts that are loaded cross-domain. - * Here be dragons: some function names may be guessed incorrectly, and - * duplicate functions may be mismatched. - * - * TraceKit.computeStackTrace should only be used for tracing purposes. - * Logging of unhandled exceptions should be done with TraceKit.report, - * which builds on top of TraceKit.computeStackTrace and provides better - * IE support by utilizing the window.onerror event to retrieve information - * about the top of the stack. - * - * Note: In IE and Safari, no stack trace is recorded on the Error object, - * so computeStackTrace instead walks its *own* chain of callers. - * This means that: - * * in Safari, some methods may be missing from the stack trace; - * * in IE, the topmost function in the stack trace will always be the - * caller of computeStackTrace. - * - * This is okay for tracing (because you are likely to be calling - * computeStackTrace from the function you want to be the topmost element - * of the stack trace anyway), but not okay for logging unhandled - * exceptions (because your catch block will likely be far away from the - * inner function that actually caused the exception). - * - */ + var dsn = options.dsn || this._dsn; + if (!dsn) { + throw new RavenConfigError('Missing DSN'); + } + var encode = encodeURIComponent; + var qs = ''; + qs += '?eventId=' + encode(lastEventId); + qs += '&dsn=' + encode(dsn); -TraceKit.computeStackTrace = function computeStackTraceWrapper() { - // Contents of Exception in various browsers. - // - // SAFARI: - // ex.message = Can't find variable: qq - // ex.line = 59 - // ex.sourceId = 580238192 - // ex.sourceURL = http://... - // ex.expressionBeginOffset = 96 - // ex.expressionCaretOffset = 98 - // ex.expressionEndOffset = 98 - // ex.name = ReferenceError - // - // FIREFOX: - // ex.message = qq is not defined - // ex.fileName = http://... - // ex.lineNumber = 59 - // ex.columnNumber = 69 - // ex.stack = ...stack trace... (see the example below) - // ex.name = ReferenceError - // - // CHROME: - // ex.message = qq is not defined - // ex.name = ReferenceError - // ex.type = not_defined - // ex.arguments = ['aa'] - // ex.stack = ...stack trace... - // - // INTERNET EXPLORER: - // ex.message = ... - // ex.name = ReferenceError - // - // OPERA: - // ex.message = ...message... (see the example below) - // ex.name = ReferenceError - // ex.opera#sourceloc = 11 (pretty much useless, duplicates the info in ex.message) - // ex.stacktrace = n/a; see 'opera:config#UserPrefs|Exceptions Have Stacktrace' + var user = options.user || this._globalContext.user; + if (user) { + if (user.name) qs += '&name=' + encode(user.name); + if (user.email) qs += '&email=' + encode(user.email); + } - /** - * Computes stack trace information from the stack property. - * Chrome and Gecko use this property. - * @param {Error} ex - * @return {?Object.} Stack trace information. - */ - function computeStackTraceFromStackProp(ex) { - if (typeof ex.stack === 'undefined' || !ex.stack) return; - var chrome = /^\s*at (.*?) ?\(((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i, - gecko = /^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|\[native).*?|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i, - winjs = /^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i, - // Used to additionally parse URL/line/column from eval frames - geckoEval = /(\S+) line (\d+)(?: > eval line \d+)* > eval/i, - chromeEval = /\((\S*)(?::(\d+))(?::(\d+))\)/, - lines = ex.stack.split('\n'), - stack = [], - submatch, - parts, - element, - reference = /^(.*) is undefined$/.exec(ex.message); + var globalServer = this._getGlobalServer(this._parseDSN(dsn)); - for (var i = 0, j = lines.length; i < j; ++i) { - if (parts = chrome.exec(lines[i])) { - var isNative = parts[2] && parts[2].indexOf('native') === 0; // start of line + var script = _document.createElement('script'); + script.async = true; + script.src = globalServer + '/api/embed/error-page/' + qs; + (_document.head || _document.body).appendChild(script); + }, - var isEval = parts[2] && parts[2].indexOf('eval') === 0; // start of line + /**** Private functions ****/ + _ignoreNextOnError: function() { + var self = this; + this._ignoreOnError += 1; + setTimeout(function() { + // onerror should trigger before setTimeout + self._ignoreOnError -= 1; + }); + }, - if (isEval && (submatch = chromeEval.exec(parts[2]))) { - // throw out eval line/column and use top-most line/column number - parts[2] = submatch[1]; // url + _triggerEvent: function(eventType, options) { + // NOTE: `event` is a native browser thing, so let's avoid conflicting wiht it + var evt, key; - parts[3] = submatch[2]; // line + if (!this._hasDocument) return; - parts[4] = submatch[3]; // column - } + options = options || {}; - element = { - url: !isNative ? parts[2] : null, - func: parts[1] || UNKNOWN_FUNCTION, - args: isNative ? [parts[2]] : [], - line: parts[3] ? +parts[3] : null, - column: parts[4] ? +parts[4] : null - }; - } else if (parts = winjs.exec(lines[i])) { - element = { - url: parts[2], - func: parts[1] || UNKNOWN_FUNCTION, - args: [], - line: +parts[3], - column: parts[4] ? +parts[4] : null - }; - } else if (parts = gecko.exec(lines[i])) { - var isEval = parts[3] && parts[3].indexOf(' > eval') > -1; + eventType = 'raven' + eventType.substr(0, 1).toUpperCase() + eventType.substr(1); - if (isEval && (submatch = geckoEval.exec(parts[3]))) { - // throw out eval line/column and use top-most line number - parts[3] = submatch[1]; - parts[4] = submatch[2]; - parts[5] = null; // no column when eval - } else if (i === 0 && !parts[5] && typeof ex.columnNumber !== 'undefined') { - // FireFox uses this awesome columnNumber property for its top frame - // Also note, Firefox's column number is 0-based and everything else expects 1-based, - // so adding 1 - // NOTE: this hack doesn't work if top-most frame is eval - stack[0].column = ex.columnNumber + 1; - } + if (_document.createEvent) { + evt = _document.createEvent('HTMLEvents'); + evt.initEvent(eventType, true, true); + } else { + evt = _document.createEventObject(); + evt.eventType = eventType; + } - element = { - url: parts[3], - func: parts[1] || UNKNOWN_FUNCTION, - args: parts[2] ? parts[2].split(',') : [], - line: parts[4] ? +parts[4] : null, - column: parts[5] ? +parts[5] : null - }; - } else { - continue; + for (key in options) + if (hasKey(options, key)) { + evt[key] = options[key]; } - if (!element.func && element.line) { - element.func = UNKNOWN_FUNCTION; + if (_document.createEvent) { + // IE9 if standards + _document.dispatchEvent(evt); + } else { + // IE8 regardless of Quirks or Standards + // IE9 if quirks + try { + _document.fireEvent('on' + evt.eventType.toLowerCase(), evt); + } catch (e) { + // Do nothing } - - stack.push(element); - } - - if (!stack.length) { - return null; } + }, - return { - name: ex.name, - message: ex.message, - url: getLocationHref(), - stack: stack - }; - } /** - * Adds information about the first frame to incomplete stack traces. - * Safari and IE require this to get complete data on the first frame. - * @param {Object.} stackInfo Stack trace information from - * one of the compute* methods. - * @param {string} url The URL of the script that caused an error. - * @param {(number|string)} lineNo The line number of the script that - * caused an error. - * @param {string=} message The error generated by the browser, which - * hopefully contains the name of the object that caused the error. - * @return {boolean} Whether or not the stack information was - * augmented. - */ - - - function augmentStackTraceWithInitialElement(stackInfo, url, lineNo, message) { - var initial = { - url: url, - line: lineNo - }; + * Wraps addEventListener to capture UI breadcrumbs + * @param evtName the event name (e.g. "click") + * @returns {Function} + * @private + */ + _breadcrumbEventHandler: function(evtName) { + var self = this; + return function(evt) { + // reset keypress timeout; e.g. triggering a 'click' after + // a 'keypress' will reset the keypress debounce so that a new + // set of keypresses can be recorded + self._keypressTimeout = null; - if (initial.url && initial.line) { - stackInfo.incomplete = false; + // It's possible this handler might trigger multiple times for the same + // event (e.g. event propagation through node ancestors). Ignore if we've + // already captured the event. + if (self._lastCapturedEvent === evt) return; - if (!initial.func) { - initial.func = UNKNOWN_FUNCTION; - } + self._lastCapturedEvent = evt; - if (stackInfo.stack.length > 0) { - if (stackInfo.stack[0].url === initial.url) { - if (stackInfo.stack[0].line === initial.line) { - return false; // already in stack trace - } else if (!stackInfo.stack[0].line && stackInfo.stack[0].func === initial.func) { - stackInfo.stack[0].line = initial.line; - return false; - } - } + // try/catch both: + // - accessing evt.target (see getsentry/raven-js#838, #768) + // - `htmlTreeAsString` because it's complex, and just accessing the DOM incorrectly + // can throw an exception in some circumstances. + var target; + try { + target = htmlTreeAsString(evt.target); + } catch (e) { + target = ''; } - stackInfo.stack.unshift(initial); - stackInfo.partial = true; - return true; - } else { - stackInfo.incomplete = true; - } + self.captureBreadcrumb({ + category: 'ui.' + evtName, // e.g. ui.click, ui.input + message: target + }); + }; + }, - return false; - } /** - * Computes stack trace information by walking the arguments.caller - * chain at the time the exception occurred. This will cause earlier - * frames to be missed but is the only way to get any stack trace in - * Safari and IE. The top frame is restored by - * {@link augmentStackTraceWithInitialElement}. - * @param {Error} ex - * @return {?Object.} Stack trace information. - */ - - - function computeStackTraceByWalkingCallerChain(ex, depth) { - var functionName = /function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i, - stack = [], - funcs = {}, - recursion = false, - parts, - item; + * Wraps addEventListener to capture keypress UI events + * @returns {Function} + * @private + */ + _keypressEventHandler: function() { + var self = this, + debounceDuration = 1000; // milliseconds - for (var curr = computeStackTraceByWalkingCallerChain.caller; curr && !recursion; curr = curr.caller) { - if (curr === computeStackTrace || curr === TraceKit.report) { - // console.log('skipping internal function'); - continue; + // TODO: if somehow user switches keypress target before + // debounce timeout is triggered, we will only capture + // a single breadcrumb from the FIRST target (acceptable?) + return function(evt) { + var target; + try { + target = evt.target; + } catch (e) { + // just accessing event properties can throw an exception in some rare circumstances + // see: https://github.com/getsentry/raven-js/issues/838 + return; } + var tagName = target && target.tagName; - item = { - url: null, - func: UNKNOWN_FUNCTION, - line: null, - column: null - }; + // only consider keypress events on actual input elements + // this will disregard keypresses targeting body (e.g. tabbing + // through elements, hotkeys, etc) + if ( + !tagName || + (tagName !== 'INPUT' && tagName !== 'TEXTAREA' && !target.isContentEditable) + ) + return; - if (curr.name) { - item.func = curr.name; - } else if (parts = functionName.exec(curr.toString())) { - item.func = parts[1]; + // record first keypress in a series, but ignore subsequent + // keypresses until debounce clears + var timeout = self._keypressTimeout; + if (!timeout) { + self._breadcrumbEventHandler('input')(evt); } + clearTimeout(timeout); + self._keypressTimeout = setTimeout(function() { + self._keypressTimeout = null; + }, debounceDuration); + }; + }, - if (typeof item.func === 'undefined') { - try { - item.func = parts.input.substring(0, parts.input.indexOf('{')); - } catch (e) {} - } + /** + * Captures a breadcrumb of type "navigation", normalizing input URLs + * @param to the originating URL + * @param from the target URL + * @private + */ + _captureUrlChange: function(from, to) { + var parsedLoc = parseUrl(this._location.href); + var parsedTo = parseUrl(to); + var parsedFrom = parseUrl(from); - if (funcs['' + curr]) { - recursion = true; - } else { - funcs['' + curr] = true; + // because onpopstate only tells you the "new" (to) value of location.href, and + // not the previous (from) value, we need to track the value of the current URL + // state ourselves + this._lastHref = to; + + // Use only the path component of the URL if the URL matches the current + // document (almost all the time when using pushState) + if (parsedLoc.protocol === parsedTo.protocol && parsedLoc.host === parsedTo.host) + to = parsedTo.relative; + if (parsedLoc.protocol === parsedFrom.protocol && parsedLoc.host === parsedFrom.host) + from = parsedFrom.relative; + + this.captureBreadcrumb({ + category: 'navigation', + data: { + to: to, + from: from } + }); + }, - stack.push(item); - } + _patchFunctionToString: function() { + var self = this; + self._originalFunctionToString = Function.prototype.toString; + // eslint-disable-next-line no-extend-native + Function.prototype.toString = function() { + if (typeof this === 'function' && this.__raven__) { + return self._originalFunctionToString.apply(this.__orig__, arguments); + } + return self._originalFunctionToString.apply(this, arguments); + }; + }, - if (depth) { - // console.log('depth is ' + depth); - // console.log('stack is ' + stack.length); - stack.splice(0, depth); + _unpatchFunctionToString: function() { + if (this._originalFunctionToString) { + // eslint-disable-next-line no-extend-native + Function.prototype.toString = this._originalFunctionToString; } + }, - var result = { - name: ex.name, - message: ex.message, - url: getLocationHref(), - stack: stack - }; - augmentStackTraceWithInitialElement(result, ex.sourceURL || ex.fileName, ex.line || ex.lineNumber, ex.message || ex.description); - return result; - } /** - * Computes a stack trace for an exception. - * @param {Error} ex - * @param {(string|number)=} depth - */ - + * Wrap timer functions and event targets to catch errors and provide + * better metadata. + */ + _instrumentTryCatch: function() { + var self = this; - function computeStackTrace(ex, depth) { - var stack = null; - depth = depth == null ? 0 : +depth; + var wrappedBuiltIns = self._wrappedBuiltIns; - try { - stack = computeStackTraceFromStackProp(ex); + function wrapTimeFn(orig) { + return function(fn, t) { + // preserve arity + // Make a copy of the arguments to prevent deoptimization + // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments + var args = new Array(arguments.length); + for (var i = 0; i < args.length; ++i) { + args[i] = arguments[i]; + } + var originalCallback = args[0]; + if (isFunction(originalCallback)) { + args[0] = self.wrap(originalCallback); + } - if (stack) { - return stack; - } - } catch (e) { - if (TraceKit.debug) { - throw e; - } + // IE < 9 doesn't support .call/.apply on setInterval/setTimeout, but it + // also supports only two arguments and doesn't care what this is, so we + // can just call the original function directly. + if (orig.apply) { + return orig.apply(this, args); + } else { + return orig(args[0], args[1]); + } + }; } - try { - stack = computeStackTraceByWalkingCallerChain(ex, depth + 1); + var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; - if (stack) { - return stack; - } - } catch (e) { - if (TraceKit.debug) { - throw e; + function wrapEventTarget(global) { + var proto = _window[global] && _window[global].prototype; + if (proto && proto.hasOwnProperty && proto.hasOwnProperty('addEventListener')) { + fill( + proto, + 'addEventListener', + function(orig) { + return function(evtName, fn, capture, secure) { + // preserve arity + try { + if (fn && fn.handleEvent) { + fn.handleEvent = self.wrap(fn.handleEvent); + } + } catch (err) { + // can sometimes get 'Permission denied to access property "handle Event' + } + + // More breadcrumb DOM capture ... done here and not in `_instrumentBreadcrumbs` + // so that we don't have more than one wrapper function + var before, clickHandler, keypressHandler; + + if ( + autoBreadcrumbs && + autoBreadcrumbs.dom && + (global === 'EventTarget' || global === 'Node') + ) { + // NOTE: generating multiple handlers per addEventListener invocation, should + // revisit and verify we can just use one (almost certainly) + clickHandler = self._breadcrumbEventHandler('click'); + keypressHandler = self._keypressEventHandler(); + before = function(evt) { + // need to intercept every DOM event in `before` argument, in case that + // same wrapped method is re-used for different events (e.g. mousemove THEN click) + // see #724 + if (!evt) return; + + var eventType; + try { + eventType = evt.type; + } catch (e) { + // just accessing event properties can throw an exception in some rare circumstances + // see: https://github.com/getsentry/raven-js/issues/838 + return; + } + if (eventType === 'click') return clickHandler(evt); + else if (eventType === 'keypress') return keypressHandler(evt); + }; + } + return orig.call( + this, + evtName, + self.wrap(fn, undefined, before), + capture, + secure + ); + }; + }, + wrappedBuiltIns + ); + fill( + proto, + 'removeEventListener', + function(orig) { + return function(evt, fn, capture, secure) { + try { + fn = fn && (fn.__raven_wrapper__ ? fn.__raven_wrapper__ : fn); + } catch (e) { + // ignore, accessing __raven_wrapper__ will throw in some Selenium environments + } + return orig.call(this, evt, fn, capture, secure); + }; + }, + wrappedBuiltIns + ); } } - return { - name: ex.name, - message: ex.message, - url: getLocationHref() - }; - } - - computeStackTrace.augmentStackTraceWithInitialElement = augmentStackTraceWithInitialElement; - computeStackTrace.computeStackTraceFromStackProp = computeStackTraceFromStackProp; - return computeStackTrace; -}(); - -var tracekit = TraceKit; - -var stringify_1 = createCommonjsModule(function (module, exports) { - /* - json-stringify-safe - Like JSON.stringify, but doesn't throw on circular references. - - Originally forked from https://github.com/isaacs/json-stringify-safe - version 5.0.1 on 3/8/2017 and modified to handle Errors serialization - and IE8 compatibility. Tests for this are in test/vendor. - - ISC license: https://github.com/isaacs/json-stringify-safe/blob/master/LICENSE - */ - exports = module.exports = stringify; - exports.getSerialize = serializer; - - function indexOf(haystack, needle) { - for (var i = 0; i < haystack.length; ++i) { - if (haystack[i] === needle) return i; - } - - return -1; - } + fill(_window, 'setTimeout', wrapTimeFn, wrappedBuiltIns); + fill(_window, 'setInterval', wrapTimeFn, wrappedBuiltIns); + if (_window.requestAnimationFrame) { + fill( + _window, + 'requestAnimationFrame', + function(orig) { + return function(cb) { + return orig(self.wrap(cb)); + }; + }, + wrappedBuiltIns + ); + } - function stringify(obj, replacer, spaces, cycleReplacer) { - return JSON.stringify(obj, serializer(replacer, cycleReplacer), spaces); - } // https://github.com/ftlabs/js-abbreviate/blob/fa709e5f139e7770a71827b1893f22418097fbda/index.js#L95-L106 + // event targets borrowed from bugsnag-js: + // https://github.com/bugsnag/bugsnag-js/blob/master/src/bugsnag.js#L666 + var eventTargets = [ + 'EventTarget', + 'Window', + 'Node', + 'ApplicationCache', + 'AudioTrackList', + 'ChannelMergerNode', + 'CryptoOperation', + 'EventSource', + 'FileReader', + 'HTMLUnknownElement', + 'IDBDatabase', + 'IDBRequest', + 'IDBTransaction', + 'KeyOperation', + 'MediaController', + 'MessagePort', + 'ModalWindow', + 'Notification', + 'SVGElementInstance', + 'Screen', + 'TextTrack', + 'TextTrackCue', + 'TextTrackList', + 'WebSocket', + 'WebSocketWorker', + 'Worker', + 'XMLHttpRequest', + 'XMLHttpRequestEventTarget', + 'XMLHttpRequestUpload' + ]; + for (var i = 0; i < eventTargets.length; i++) { + wrapEventTarget(eventTargets[i]); + } + }, + /** + * Instrument browser built-ins w/ breadcrumb capturing + * - XMLHttpRequests + * - DOM interactions (click/typing) + * - window.location changes + * - console + * + * Can be disabled or individually configured via the `autoBreadcrumbs` config option + */ + _instrumentBreadcrumbs: function() { + var self = this; + var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; - function stringifyError(value) { - var err = { - // These properties are implemented as magical getters and don't show up in for in - stack: value.stack, - message: value.message, - name: value.name - }; + var wrappedBuiltIns = self._wrappedBuiltIns; - for (var i in value) { - if (Object.prototype.hasOwnProperty.call(value, i)) { - err[i] = value[i]; + function wrapProp(prop, xhr) { + if (prop in xhr && isFunction(xhr[prop])) { + fill(xhr, prop, function(orig) { + return self.wrap(orig); + }); // intentionally don't track filled methods on XHR instances } } - return err; - } - - function serializer(replacer, cycleReplacer) { - var stack = []; - var keys = []; + if (autoBreadcrumbs.xhr && 'XMLHttpRequest' in _window) { + var xhrproto = _window.XMLHttpRequest && _window.XMLHttpRequest.prototype; + fill( + xhrproto, + 'open', + function(origOpen) { + return function(method, url) { + // preserve arity - if (cycleReplacer == null) { - cycleReplacer = function cycleReplacer(key, value) { - if (stack[0] === value) { - return '[Circular ~]'; - } + // if Sentry key appears in URL, don't capture + if (isString(url) && url.indexOf(self._globalKey) === -1) { + this.__raven_xhr = { + method: method, + url: url, + status_code: null + }; + } - return '[Circular ~.' + keys.slice(0, indexOf(stack, value)).join('.') + ']'; - }; - } + return origOpen.apply(this, arguments); + }; + }, + wrappedBuiltIns + ); + + fill( + xhrproto, + 'send', + function(origSend) { + return function() { + // preserve arity + var xhr = this; - return function (key, value) { - if (stack.length > 0) { - var thisPos = indexOf(stack, this); - ~thisPos ? stack.splice(thisPos + 1) : stack.push(this); - ~thisPos ? keys.splice(thisPos, Infinity, key) : keys.push(key); + function onreadystatechangeHandler() { + if (xhr.__raven_xhr && xhr.readyState === 4) { + try { + // touching statusCode in some platforms throws + // an exception + xhr.__raven_xhr.status_code = xhr.status; + } catch (e) { + /* do nothing */ + } - if (~indexOf(stack, value)) { - value = cycleReplacer.call(this, key, value); - } - } else { - stack.push(value); - } + self.captureBreadcrumb({ + type: 'http', + category: 'xhr', + data: xhr.__raven_xhr + }); + } + } - return replacer == null ? value instanceof Error ? stringifyError(value) : value : replacer.call(this, key, value); - }; - } -}); -var stringify_2 = stringify_1.getSerialize; + var props = ['onload', 'onerror', 'onprogress']; + for (var j = 0; j < props.length; j++) { + wrapProp(props[j], xhr); + } -function RavenConfigError(message) { - this.name = 'RavenConfigError'; - this.message = message; -} + if ('onreadystatechange' in xhr && isFunction(xhr.onreadystatechange)) { + fill( + xhr, + 'onreadystatechange', + function(orig) { + return self.wrap(orig, undefined, onreadystatechangeHandler); + } /* intentionally don't track this instrumentation */ + ); + } else { + // if onreadystatechange wasn't actually set by the page on this xhr, we + // are free to set our own and capture the breadcrumb + xhr.onreadystatechange = onreadystatechangeHandler; + } -RavenConfigError.prototype = new Error(); -RavenConfigError.prototype.constructor = RavenConfigError; -var configError = RavenConfigError; + return origSend.apply(this, arguments); + }; + }, + wrappedBuiltIns + ); + } -var wrapMethod = function wrapMethod(console, level, callback) { - var originalConsoleLevel = console[level]; - var originalConsole = console; + if (autoBreadcrumbs.xhr && supportsFetch()) { + fill( + _window, + 'fetch', + function(origFetch) { + return function() { + // preserve arity + // Make a copy of the arguments to prevent deoptimization + // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments + var args = new Array(arguments.length); + for (var i = 0; i < args.length; ++i) { + args[i] = arguments[i]; + } - if (!(level in console)) { - return; - } + var fetchInput = args[0]; + var method = 'GET'; + var url; - var sentryLevel = level === 'warn' ? 'warning' : level; + if (typeof fetchInput === 'string') { + url = fetchInput; + } else if ('Request' in _window && fetchInput instanceof _window.Request) { + url = fetchInput.url; + if (fetchInput.method) { + method = fetchInput.method; + } + } else { + url = '' + fetchInput; + } - console[level] = function () { - var args = [].slice.call(arguments); - var msg = utils.safeJoin(args, ' '); - var data = { - level: sentryLevel, - logger: 'console', - extra: { - arguments: args - } - }; + // if Sentry key appears in URL, don't capture, as it's our own request + if (url.indexOf(self._globalKey) !== -1) { + return origFetch.apply(this, args); + } - if (level === 'assert') { - if (args[0] === false) { - // Default browsers message - msg = 'Assertion failed: ' + (utils.safeJoin(args.slice(1), ' ') || 'console.assert'); - data.extra.arguments = args.slice(1); - callback && callback(msg, data); - } - } else { - callback && callback(msg, data); - } // this fails for some browsers. :( + if (args[1] && args[1].method) { + method = args[1].method; + } + var fetchData = { + method: method, + url: url, + status_code: null + }; - if (originalConsoleLevel) { - // IE9 doesn't allow calling apply on console functions directly - // See: https://stackoverflow.com/questions/5472938/does-ie9-support-console-log-and-is-it-a-real-function#answer-5473193 - Function.prototype.apply.call(originalConsoleLevel, originalConsole, args); + return origFetch + .apply(this, args) + .then(function(response) { + fetchData.status_code = response.status; + + self.captureBreadcrumb({ + type: 'http', + category: 'fetch', + data: fetchData + }); + + return response; + }) + ['catch'](function(err) { + // if there is an error performing the request + self.captureBreadcrumb({ + type: 'http', + category: 'fetch', + data: fetchData, + level: 'error' + }); + + throw err; + }); + }; + }, + wrappedBuiltIns + ); } - }; -}; - -var console$1 = { - wrapMethod: wrapMethod -}; - -/*global XDomainRequest:false */ - -var isError = utils.isError; -var isObject = utils.isObject; -var isErrorEvent = utils.isErrorEvent; -var isUndefined = utils.isUndefined; -var isFunction = utils.isFunction; -var isString = utils.isString; -var isArray = utils.isArray; -var isEmptyObject = utils.isEmptyObject; -var each = utils.each; -var objectMerge = utils.objectMerge; -var truncate = utils.truncate; -var objectFrozen = utils.objectFrozen; -var hasKey = utils.hasKey; -var joinRegExp = utils.joinRegExp; -var urlencode = utils.urlencode; -var uuid4 = utils.uuid4; -var htmlTreeAsString = utils.htmlTreeAsString; -var isSameException = utils.isSameException; -var isSameStacktrace = utils.isSameStacktrace; -var parseUrl = utils.parseUrl; -var fill = utils.fill; -var supportsFetch = utils.supportsFetch; -var wrapConsoleMethod = console$1.wrapMethod; -var dsnKeys = 'source protocol user pass host port path'.split(' '); -var dsnPattern = /^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/; - -function now() { - return +new Date(); -} // This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) + // Capture breadcrumbs from any click that is unhandled / bubbled up all the way + // to the document. Do this before we instrument addEventListener. + if (autoBreadcrumbs.dom && this._hasDocument) { + if (_document.addEventListener) { + _document.addEventListener('click', self._breadcrumbEventHandler('click'), false); + _document.addEventListener('keypress', self._keypressEventHandler(), false); + } else if (_document.attachEvent) { + // IE8 Compatibility + _document.attachEvent('onclick', self._breadcrumbEventHandler('click')); + _document.attachEvent('onkeypress', self._keypressEventHandler()); + } + } -var _window$1 = typeof window !== 'undefined' ? window : typeof commonjsGlobal !== 'undefined' ? commonjsGlobal : typeof self !== 'undefined' ? self : {}; + // record navigation (URL) changes + // NOTE: in Chrome App environment, touching history.pushState, *even inside + // a try/catch block*, will cause Chrome to output an error to console.error + // borrowed from: https://github.com/angular/angular.js/pull/13945/files + var chrome = _window.chrome; + var isChromePackagedApp = chrome && chrome.app && chrome.app.runtime; + var hasPushAndReplaceState = + !isChromePackagedApp && + _window.history && + history.pushState && + history.replaceState; + if (autoBreadcrumbs.location && hasPushAndReplaceState) { + // TODO: remove onpopstate handler on uninstall() + var oldOnPopState = _window.onpopstate; + _window.onpopstate = function() { + var currentHref = self._location.href; + self._captureUrlChange(self._lastHref, currentHref); -var _document = _window$1.document; -var _navigator = _window$1.navigator; + if (oldOnPopState) { + return oldOnPopState.apply(this, arguments); + } + }; -function keepOriginalCallback(original, callback) { - return isFunction(callback) ? function (data) { - return callback(data, original); - } : callback; -} // First, check for JSON support -// If there is no JSON, we no-op the core features of Raven -// since JSON is required to encode the payload + var historyReplacementFunction = function(origHistFunction) { + // note history.pushState.length is 0; intentionally not declaring + // params to preserve 0 arity + return function(/* state, title, url */) { + var url = arguments.length > 2 ? arguments[2] : undefined; + // url argument is optional + if (url) { + // coerce to string (this is what pushState does) + self._captureUrlChange(self._lastHref, url + ''); + } -function Raven$1() { - this._hasJSON = !!(_typeof(JSON) === 'object' && JSON.stringify); // Raven can run in contexts where there's no document (react-native) + return origHistFunction.apply(this, arguments); + }; + }; - this._hasDocument = !isUndefined(_document); - this._hasNavigator = !isUndefined(_navigator); - this._lastCapturedException = null; - this._lastData = null; - this._lastEventId = null; - this._globalServer = null; - this._globalKey = null; - this._globalProject = null; - this._globalContext = {}; - this._globalOptions = { - // SENTRY_RELEASE can be injected by https://github.com/getsentry/sentry-webpack-plugin - release: _window$1.SENTRY_RELEASE && _window$1.SENTRY_RELEASE.id, - logger: 'javascript', - ignoreErrors: [], - ignoreUrls: [], - whitelistUrls: [], - includePaths: [], - headers: null, - collectWindowErrors: true, - maxMessageLength: 0, - // By default, truncates URL values to 250 chars - maxUrlLength: 250, - stackTraceLimit: 50, - autoBreadcrumbs: true, - instrument: true, - sampleRate: 1 - }; - this._fetchDefaults = { - method: 'POST', - keepalive: true, - referrerPolicy: 'origin' - }; - this._ignoreOnError = 0; - this._isRavenInstalled = false; - this._originalErrorStackTraceLimit = Error.stackTraceLimit; // capture references to window.console *and* all its methods first - // before the console plugin has a chance to monkey patch + fill(history, 'pushState', historyReplacementFunction, wrappedBuiltIns); + fill(history, 'replaceState', historyReplacementFunction, wrappedBuiltIns); + } - this._originalConsole = _window$1.console || {}; - this._originalConsoleMethods = {}; - this._plugins = []; - this._startTime = now(); - this._wrappedBuiltIns = []; - this._breadcrumbs = []; - this._lastCapturedEvent = null; - this._keypressTimeout; - this._location = _window$1.location; - this._lastHref = this._location && this._location.href; + if (autoBreadcrumbs.console && 'console' in _window && console.log) { + // console + var consoleMethodCallback = function(msg, data) { + self.captureBreadcrumb({ + message: msg, + level: data.level, + category: 'console' + }); + }; - this._resetBackoff(); // eslint-disable-next-line guard-for-in + each(['debug', 'info', 'warn', 'error', 'log'], function(_, level) { + wrapConsoleMethod(console, level, consoleMethodCallback); + }); + } + }, + _restoreBuiltIns: function() { + // restore any wrapped builtins + var builtin; + while (this._wrappedBuiltIns.length) { + builtin = this._wrappedBuiltIns.shift(); - for (var method in this._originalConsole) { - this._originalConsoleMethods[method] = this._originalConsole[method]; - } -} -/* - * The core Raven singleton - * - * @this {Raven} - */ + var obj = builtin[0], + name = builtin[1], + orig = builtin[2]; + obj[name] = orig; + } + }, -Raven$1.prototype = { - // Hardcode version string so that raven source can be loaded directly via - // webpack (using a build step causes webpack #1617). Grunt verifies that - // this value matches package.json during build. - // See: https://github.com/getsentry/raven-js/issues/465 - VERSION: '3.22.2', - debug: false, - TraceKit: tracekit, - // alias to TraceKit + _restoreConsole: function() { + // eslint-disable-next-line guard-for-in + for (var method in this._originalConsoleMethods) { + this._originalConsole[method] = this._originalConsoleMethods[method]; + } + }, - /* - * Configure Raven with a DSN and extra options - * - * @param {string} dsn The public Sentry DSN - * @param {object} options Set of global options [optional] - * @return {Raven} - */ - config: function config(dsn, options) { + _drainPlugins: function() { var self = this; - if (self._globalServer) { - this._logDebug('error', 'Error: Raven has already been configured'); - - return self; - } + // FIX ME TODO + each(this._plugins, function(_, plugin) { + var installer = plugin[0]; + var args = plugin[1]; + installer.apply(self, [self].concat(args)); + }); + }, - if (!dsn) return self; - var globalOptions = self._globalOptions; // merge in options + _parseDSN: function(str) { + var m = dsnPattern.exec(str), + dsn = {}, + i = 7; - if (options) { - each(options, function (key, value) { - // tags and extra are special and need to be put into context - if (key === 'tags' || key === 'extra' || key === 'user') { - self._globalContext[key] = value; - } else { - globalOptions[key] = value; - } - }); + try { + while (i--) dsn[dsnKeys[i]] = m[i] || ''; + } catch (e) { + throw new RavenConfigError('Invalid DSN: ' + str); } - self.setDSN(dsn); // "Script error." is hard coded into browsers for errors that it can't read. - // this is the result of a script being pulled in from an external domain and CORS. - - globalOptions.ignoreErrors.push(/^Script error\.?$/); - globalOptions.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/); // join regexp rules into one big rule + if (dsn.pass && !this._globalOptions.allowSecretKey) { + throw new RavenConfigError( + 'Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key' + ); + } - globalOptions.ignoreErrors = joinRegExp(globalOptions.ignoreErrors); - globalOptions.ignoreUrls = globalOptions.ignoreUrls.length ? joinRegExp(globalOptions.ignoreUrls) : false; - globalOptions.whitelistUrls = globalOptions.whitelistUrls.length ? joinRegExp(globalOptions.whitelistUrls) : false; - globalOptions.includePaths = joinRegExp(globalOptions.includePaths); - globalOptions.maxBreadcrumbs = Math.max(0, Math.min(globalOptions.maxBreadcrumbs || 100, 100)); // default and hard limit is 100 + return dsn; + }, - var autoBreadcrumbDefaults = { - xhr: true, - console: true, - dom: true, - location: true, - sentry: true - }; - var autoBreadcrumbs = globalOptions.autoBreadcrumbs; + _getGlobalServer: function(uri) { + // assemble the endpoint from the uri pieces + var globalServer = '//' + uri.host + (uri.port ? ':' + uri.port : ''); - if ({}.toString.call(autoBreadcrumbs) === '[object Object]') { - autoBreadcrumbs = objectMerge(autoBreadcrumbDefaults, autoBreadcrumbs); - } else if (autoBreadcrumbs !== false) { - autoBreadcrumbs = autoBreadcrumbDefaults; + if (uri.protocol) { + globalServer = uri.protocol + ':' + globalServer; } + return globalServer; + }, - globalOptions.autoBreadcrumbs = autoBreadcrumbs; - var instrumentDefaults = { - tryCatch: true - }; - var instrument = globalOptions.instrument; - - if ({}.toString.call(instrument) === '[object Object]') { - instrument = objectMerge(instrumentDefaults, instrument); - } else if (instrument !== false) { - instrument = instrumentDefaults; + _handleOnErrorStackInfo: function() { + // if we are intentionally ignoring errors via onerror, bail out + if (!this._ignoreOnError) { + this._handleStackInfo.apply(this, arguments); } + }, - globalOptions.instrument = instrument; - tracekit.collectWindowErrors = !!globalOptions.collectWindowErrors; // return for chaining + _handleStackInfo: function(stackInfo, options) { + var frames = this._prepareFrames(stackInfo, options); - return self; + this._triggerEvent('handle', { + stackInfo: stackInfo, + options: options + }); + + this._processException( + stackInfo.name, + stackInfo.message, + stackInfo.url, + stackInfo.lineno, + frames, + options + ); }, - /* - * Installs a global window.onerror error handler - * to capture and report uncaught exceptions. - * At this point, install() is required to be called due - * to the way TraceKit is set up. - * - * @return {Raven} - */ - install: function install() { + _prepareFrames: function(stackInfo, options) { var self = this; - - if (self.isSetup() && !self._isRavenInstalled) { - tracekit.report.subscribe(function () { - self._handleOnErrorStackInfo.apply(self, arguments); + var frames = []; + if (stackInfo.stack && stackInfo.stack.length) { + each(stackInfo.stack, function(i, stack) { + var frame = self._normalizeFrame(stack, stackInfo.url); + if (frame) { + frames.push(frame); + } }); - self._patchFunctionToString(); - - if (self._globalOptions.instrument && self._globalOptions.instrument.tryCatch) { - self._instrumentTryCatch(); + // e.g. frames captured via captureMessage throw + if (options && options.trimHeadFrames) { + for (var j = 0; j < options.trimHeadFrames && j < frames.length; j++) { + frames[j].in_app = false; + } } - - if (self._globalOptions.autoBreadcrumbs) self._instrumentBreadcrumbs(); // Install all of the plugins - - self._drainPlugins(); - - self._isRavenInstalled = true; } - - Error.stackTraceLimit = self._globalOptions.stackTraceLimit; - return this; + frames = frames.slice(0, this._globalOptions.stackTraceLimit); + return frames; }, - /* - * Set the DSN (can be called multiple time unlike config) - * - * @param {string} dsn The public Sentry DSN - */ - setDSN: function setDSN(dsn) { - var self = this, - uri = self._parseDSN(dsn), - lastSlash = uri.path.lastIndexOf('/'), - path = uri.path.substr(1, lastSlash); - - self._dsn = dsn; - self._globalKey = uri.user; - self._globalSecret = uri.pass && uri.pass.substr(1); - self._globalProject = uri.path.substr(lastSlash + 1); - self._globalServer = self._getGlobalServer(uri); - self._globalEndpoint = self._globalServer + '/' + path + 'api/' + self._globalProject + '/store/'; // Reset backoff state since we may be pointing at a - // new project/server - - this._resetBackoff(); - }, + _normalizeFrame: function(frame, stackInfoUrl) { + // normalize the frames data + var normalized = { + filename: frame.url, + lineno: frame.line, + colno: frame.column, + function: frame.func || '?' + }; - /* - * Wrap code within a context so Raven can capture errors - * reliably across domains that is executed immediately. - * - * @param {object} options A specific set of options for this context [optional] - * @param {function} func The callback to be immediately executed within the context - * @param {array} args An array of arguments to be called with the callback [optional] - */ - context: function context(options, func, args) { - if (isFunction(options)) { - args = func || []; - func = options; - options = undefined; + // Case when we don't have any information about the error + // E.g. throwing a string or raw object, instead of an `Error` in Firefox + // Generating synthetic error doesn't add any value here + // + // We should probably somehow let a user know that they should fix their code + if (!frame.url) { + normalized.filename = stackInfoUrl; // fallback to whole stacks url from onerror handler } - return this.wrap(options, func).apply(this, args); - }, + normalized.in_app = !// determine if an exception came from outside of our app + // first we check the global includePaths list. + ( + (!!this._globalOptions.includePaths.test && + !this._globalOptions.includePaths.test(normalized.filename)) || + // Now we check for fun, if the function name is Raven or TraceKit + /(Raven|TraceKit)\./.test(normalized['function']) || + // finally, we do a last ditch effort and check for raven.min.js + /raven\.(min\.)?js$/.test(normalized.filename) + ); - /* - * Wrap code within a context and returns back a new function to be executed - * - * @param {object} options A specific set of options for this context [optional] - * @param {function} func The function to be wrapped in a new context - * @param {function} func A function to call before the try/catch wrapper [optional, private] - * @return {function} The newly wrapped functions with a context - */ - wrap: function wrap(options, func, _before) { - var self = this; // 1 argument has been passed, and it's not a function - // so just return it + return normalized; + }, - if (isUndefined(func) && !isFunction(options)) { - return options; - } // options is optional + _processException: function(type, message, fileurl, lineno, frames, options) { + var prefixedMessage = (type ? type + ': ' : '') + (message || ''); + if ( + !!this._globalOptions.ignoreErrors.test && + (this._globalOptions.ignoreErrors.test(message) || + this._globalOptions.ignoreErrors.test(prefixedMessage)) + ) { + return; + } + var stacktrace; - if (isFunction(options)) { - func = options; - options = undefined; - } // At this point, we've passed along 2 arguments, and the second one - // is not a function either, so we'll just return the second argument. + if (frames && frames.length) { + fileurl = frames[0].filename || fileurl; + // Sentry expects frames oldest to newest + // and JS sends them as newest to oldest + frames.reverse(); + stacktrace = {frames: frames}; + } else if (fileurl) { + stacktrace = { + frames: [ + { + filename: fileurl, + lineno: lineno, + in_app: true + } + ] + }; + } + if ( + !!this._globalOptions.ignoreUrls.test && + this._globalOptions.ignoreUrls.test(fileurl) + ) { + return; + } - if (!isFunction(func)) { - return func; - } // We don't wanna wrap it twice! + if ( + !!this._globalOptions.whitelistUrls.test && + !this._globalOptions.whitelistUrls.test(fileurl) + ) { + return; + } + var data = objectMerge( + { + // sentry.interfaces.Exception + exception: { + values: [ + { + type: type, + value: message, + stacktrace: stacktrace + } + ] + }, + culprit: fileurl + }, + options + ); - try { - if (func.__raven__) { - return func; - } // If this has already been wrapped in the past, return that + // Fire away! + this._send(data); + }, + _trimPacket: function(data) { + // For now, we only want to truncate the two different messages + // but this could/should be expanded to just trim everything + var max = this._globalOptions.maxMessageLength; + if (data.message) { + data.message = truncate(data.message, max); + } + if (data.exception) { + var exception = data.exception.values[0]; + exception.value = truncate(exception.value, max); + } - if (func.__raven_wrapper__) { - return func.__raven_wrapper__; + var request = data.request; + if (request) { + if (request.url) { + request.url = truncate(request.url, this._globalOptions.maxUrlLength); + } + if (request.Referer) { + request.Referer = truncate(request.Referer, this._globalOptions.maxUrlLength); } - } catch (e) { - // Just accessing custom props in some Selenium environments - // can cause a "Permission denied" exception (see raven-js#495). - // Bail on wrapping and return the function as-is (defers to window.onerror). - return func; } - function wrapped() { - var args = [], - i = arguments.length, - deep = !options || options && options.deep !== false; - - if (_before && isFunction(_before)) { - _before.apply(this, arguments); - } // Recursively wrap all of a function's arguments that are - // functions themselves. - - - while (i--) { - args[i] = deep ? self.wrap(options, arguments[i]) : arguments[i]; - } + if (data.breadcrumbs && data.breadcrumbs.values) + this._trimBreadcrumbs(data.breadcrumbs); - try { - // Attempt to invoke user-land function - // NOTE: If you are a Sentry user, and you are seeing this stack frame, it - // means Raven caught an error invoking your application code. This is - // expected behavior and NOT indicative of a bug with Raven.js. - return func.apply(this, args); - } catch (e) { - self._ignoreNextOnError(); + return data; + }, - self.captureException(e, options); - throw e; - } - } // copy over properties of the old function + /** + * Truncate breadcrumb values (right now just URLs) + */ + _trimBreadcrumbs: function(breadcrumbs) { + // known breadcrumb properties with urls + // TODO: also consider arbitrary prop values that start with (https?)?:// + var urlProps = ['to', 'from', 'url'], + urlProp, + crumb, + data; + for (var i = 0; i < breadcrumbs.values.length; ++i) { + crumb = breadcrumbs.values[i]; + if ( + !crumb.hasOwnProperty('data') || + !isObject(crumb.data) || + objectFrozen(crumb.data) + ) + continue; - for (var property in func) { - if (hasKey(func, property)) { - wrapped[property] = func[property]; + data = objectMerge({}, crumb.data); + for (var j = 0; j < urlProps.length; ++j) { + urlProp = urlProps[j]; + if (data.hasOwnProperty(urlProp) && data[urlProp]) { + data[urlProp] = truncate(data[urlProp], this._globalOptions.maxUrlLength); + } } + breadcrumbs.values[i].data = data; } - - wrapped.prototype = func.prototype; - func.__raven_wrapper__ = wrapped; // Signal that this function has been wrapped/filled already - // for both debugging and to prevent it to being wrapped/filled twice - - wrapped.__raven__ = true; - wrapped.__orig__ = func; - return wrapped; }, - /* - * Uninstalls the global error handler. - * - * @return {Raven} - */ - uninstall: function uninstall() { - tracekit.report.uninstall(); + _getHttpData: function() { + if (!this._hasNavigator && !this._hasDocument) return; + var httpData = {}; - this._unpatchFunctionToString(); + if (this._hasNavigator && _navigator.userAgent) { + httpData.headers = { + 'User-Agent': navigator.userAgent + }; + } - this._restoreBuiltIns(); + // Check in `window` instead of `document`, as we may be in ServiceWorker environment + if (_window.location && _window.location.href) { + httpData.url = _window.location.href; + } - this._restoreConsole(); + if (this._hasDocument && _document.referrer) { + if (!httpData.headers) httpData.headers = {}; + httpData.headers.Referer = _document.referrer; + } - Error.stackTraceLimit = this._originalErrorStackTraceLimit; - this._isRavenInstalled = false; - return this; + return httpData; }, - /* - * Manually capture an exception and send it over to Sentry - * - * @param {error} ex An exception to be logged - * @param {object} options A specific set of options for this error [optional] - * @return {Raven} - */ - captureException: function captureException(ex, options) { - options = objectMerge({ - trimHeadFrames: 0 - }, options ? options : {}); // Cases for sending ex as a message, rather than an exception - - var isNotError = !isError(ex); - var isNotErrorEvent = !isErrorEvent(ex); - var isErrorEventWithoutError = isErrorEvent(ex) && !ex.error; - - if (isNotError && isNotErrorEvent || isErrorEventWithoutError) { - return this.captureMessage(ex, objectMerge(options, { - stacktrace: true, - // if we fall back to captureMessage, default to attempting a new trace - trimHeadFrames: options.trimHeadFrames + 1 - })); - } // Get actual Error from ErrorEvent - + _resetBackoff: function() { + this._backoffDuration = 0; + this._backoffStart = null; + }, - if (isErrorEvent(ex)) ex = ex.error; // Store the raw exception object for potential debugging and introspection + _shouldBackoff: function() { + return this._backoffDuration && now() - this._backoffStart < this._backoffDuration; + }, - this._lastCapturedException = ex; // TraceKit.report will re-raise any exception passed to it, - // which means you have to wrap it in try/catch. Instead, we - // can wrap it here and only re-raise if TraceKit.report - // raises an exception different from the one we asked to - // report on. + /** + * Returns true if the in-process data payload matches the signature + * of the previously-sent data + * + * NOTE: This has to be done at this level because TraceKit can generate + * data from window.onerror WITHOUT an exception object (IE8, IE9, + * other old browsers). This can take the form of an "exception" + * data object with a single frame (derived from the onerror args). + */ + _isRepeatData: function(current) { + var last = this._lastData; - try { - var stack = tracekit.computeStackTrace(ex); + if ( + !last || + current.message !== last.message || // defined for captureMessage + current.culprit !== last.culprit // defined for captureException/onerror + ) + return false; - this._handleStackInfo(stack, options); - } catch (ex1) { - if (ex !== ex1) { - throw ex1; - } + // Stacktrace interface (i.e. from captureMessage) + if (current.stacktrace || last.stacktrace) { + return isSameStacktrace(current.stacktrace, last.stacktrace); + } else if (current.exception || last.exception) { + // Exception interface (i.e. from captureException/onerror) + return isSameException(current.exception, last.exception); } - return this; + return true; }, - /* - * Manually send a message to Sentry - * - * @param {string} msg A plain message to be captured in Sentry - * @param {object} options A specific set of options for this message [optional] - * @return {Raven} - */ - captureMessage: function captureMessage(msg, options) { - // config() automagically converts ignoreErrors from a list to a RegExp so we need to test for an - // early call; we'll error on the side of logging anything called before configuration since it's - // probably something you should see: - if (!!this._globalOptions.ignoreErrors.test && this._globalOptions.ignoreErrors.test(msg)) { + _setBackoffState: function(request) { + // If we are already in a backoff state, don't change anything + if (this._shouldBackoff()) { return; } - options = options || {}; - var data = objectMerge({ - message: msg + '' // Make sure it's actually a string + var status = request.status; - }, options); - var ex; // Generate a "synthetic" stack trace from this point. - // NOTE: If you are a Sentry user, and you are seeing this stack frame, it is NOT indicative - // of a bug with Raven.js. Sentry generates synthetic traces either by configuration, - // or if it catches a thrown object without a "stack" property. + // 400 - project_id doesn't exist or some other fatal + // 401 - invalid/revoked dsn + // 429 - too many requests + if (!(status === 400 || status === 401 || status === 429)) return; + var retry; try { - throw new Error(msg); - } catch (ex1) { - ex = ex1; - } // null exception name so `Error` isn't prefixed to msg + // If Retry-After is not in Access-Control-Expose-Headers, most + // browsers will throw an exception trying to access it + if (supportsFetch()) { + retry = request.headers.get('Retry-After'); + } else { + retry = request.getResponseHeader('Retry-After'); + } + // Retry-After is returned in seconds + retry = parseInt(retry, 10) * 1000; + } catch (e) { + /* eslint no-empty:0 */ + } - ex.name = null; - var stack = tracekit.computeStackTrace(ex); // stack[0] is `throw new Error(msg)` call itself, we are interested in the frame that was just before that, stack[1] + this._backoffDuration = retry + ? // If Sentry server returned a Retry-After value, use it + retry + : // Otherwise, double the last backoff duration (starts at 1 sec) + this._backoffDuration * 2 || 1000; - var initialCall = isArray(stack.stack) && stack.stack[1]; - var fileurl = initialCall && initialCall.url || ''; - - if (!!this._globalOptions.ignoreUrls.test && this._globalOptions.ignoreUrls.test(fileurl)) { - return; - } - - if (!!this._globalOptions.whitelistUrls.test && !this._globalOptions.whitelistUrls.test(fileurl)) { - return; - } + this._backoffStart = now(); + }, - if (this._globalOptions.stacktrace || options && options.stacktrace) { - options = objectMerge({ - // fingerprint on msg, not stack trace (legacy behavior, could be - // revisited) - fingerprint: msg, - // since we know this is a synthetic trace, the top N-most frames - // MUST be from Raven.js, so mark them as in_app later by setting - // trimHeadFrames - trimHeadFrames: (options.trimHeadFrames || 0) + 1 - }, options); + _send: function(data) { + var globalOptions = this._globalOptions; - var frames = this._prepareFrames(stack, options); + var baseData = { + project: this._globalProject, + logger: globalOptions.logger, + platform: 'javascript' + }, + httpData = this._getHttpData(); - data.stacktrace = { - // Sentry expects frames oldest to newest - frames: frames.reverse() - }; - } // Fire away! + if (httpData) { + baseData.request = httpData; + } + // HACK: delete `trimHeadFrames` to prevent from appearing in outbound payload + if (data.trimHeadFrames) delete data.trimHeadFrames; - this._send(data); + data = objectMerge(baseData, data); - return this; - }, - captureBreadcrumb: function captureBreadcrumb(obj) { - var crumb = objectMerge({ - timestamp: now() / 1000 - }, obj); + // Merge in the tags and extra separately since objectMerge doesn't handle a deep merge + data.tags = objectMerge(objectMerge({}, this._globalContext.tags), data.tags); + data.extra = objectMerge(objectMerge({}, this._globalContext.extra), data.extra); - if (isFunction(this._globalOptions.breadcrumbCallback)) { - var result = this._globalOptions.breadcrumbCallback(crumb); + // Send along our own collected metadata with extra + data.extra['session:duration'] = now() - this._startTime; - if (isObject(result) && !isEmptyObject(result)) { - crumb = result; - } else if (result === false) { - return this; - } + if (this._breadcrumbs && this._breadcrumbs.length > 0) { + // intentionally make shallow copy so that additions + // to breadcrumbs aren't accidentally sent in this request + data.breadcrumbs = { + values: [].slice.call(this._breadcrumbs, 0) + }; } - this._breadcrumbs.push(crumb); - - if (this._breadcrumbs.length > this._globalOptions.maxBreadcrumbs) { - this._breadcrumbs.shift(); + if (this._globalContext.user) { + // sentry.interfaces.User + data.user = this._globalContext.user; } - return this; - }, - addPlugin: function addPlugin(plugin - /*arg1, arg2, ... argN*/ - ) { - var pluginArgs = [].slice.call(arguments, 1); - - this._plugins.push([plugin, pluginArgs]); - - if (this._isRavenInstalled) { - this._drainPlugins(); - } + // Include the environment if it's defined in globalOptions + if (globalOptions.environment) data.environment = globalOptions.environment; - return this; - }, + // Include the release if it's defined in globalOptions + if (globalOptions.release) data.release = globalOptions.release; - /* - * Set/clear a user to be sent along with the payload. - * - * @param {object} user An object representing user data [optional] - * @return {Raven} - */ - setUserContext: function setUserContext(user) { - // Intentionally do not merge here since that's an unexpected behavior. - this._globalContext.user = user; - return this; - }, + // Include server_name if it's defined in globalOptions + if (globalOptions.serverName) data.server_name = globalOptions.serverName; - /* - * Merge extra attributes to be sent along with the payload. - * - * @param {object} extra An object representing extra data [optional] - * @return {Raven} - */ - setExtraContext: function setExtraContext(extra) { - this._mergeContext('extra', extra); + data = this._sanitizeData(data); - return this; - }, + // Cleanup empty properties before sending them to the server + Object.keys(data).forEach(function(key) { + if (data[key] == null || data[key] === '' || isEmptyObject(data[key])) { + delete data[key]; + } + }); - /* - * Merge tags to be sent along with the payload. - * - * @param {object} tags An object representing tags [optional] - * @return {Raven} - */ - setTagsContext: function setTagsContext(tags) { - this._mergeContext('tags', tags); + if (isFunction(globalOptions.dataCallback)) { + data = globalOptions.dataCallback(data) || data; + } - return this; - }, + // Why?????????? + if (!data || isEmptyObject(data)) { + return; + } - /* - * Clear all of the context. - * - * @return {Raven} - */ - clearContext: function clearContext() { - this._globalContext = {}; - return this; - }, + // Check if the request should be filtered or not + if ( + isFunction(globalOptions.shouldSendCallback) && + !globalOptions.shouldSendCallback(data) + ) { + return; + } - /* - * Get a copy of the current context. This cannot be mutated. - * - * @return {object} copy of context - */ - getContext: function getContext() { - // lol javascript - return JSON.parse(stringify_1(this._globalContext)); - }, + // Backoff state: Sentry server previously responded w/ an error (e.g. 429 - too many requests), + // so drop requests until "cool-off" period has elapsed. + if (this._shouldBackoff()) { + this._logDebug('warn', 'Raven dropped error due to backoff: ', data); + return; + } - /* - * Set environment of application - * - * @param {string} environment Typically something like 'production'. - * @return {Raven} - */ - setEnvironment: function setEnvironment(environment) { - this._globalOptions.environment = environment; - return this; + if (typeof globalOptions.sampleRate === 'number') { + if (Math.random() < globalOptions.sampleRate) { + this._sendProcessedPayload(data); + } + } else { + this._sendProcessedPayload(data); + } }, - /* - * Set release version of application - * - * @param {string} release Typically something like a git SHA to identify version - * @return {Raven} - */ - setRelease: function setRelease(release) { - this._globalOptions.release = release; - return this; + _sanitizeData: function(data) { + return sanitize(data, this._globalOptions.sanitizeKeys); }, - /* - * Set the dataCallback option - * - * @param {function} callback The callback to run which allows the - * data blob to be mutated before sending - * @return {Raven} - */ - setDataCallback: function setDataCallback(callback) { - var original = this._globalOptions.dataCallback; - this._globalOptions.dataCallback = keepOriginalCallback(original, callback); - return this; + _getUuid: function() { + return uuid4(); }, - /* - * Set the breadcrumbCallback option - * - * @param {function} callback The callback to run which allows filtering - * or mutating breadcrumbs - * @return {Raven} - */ - setBreadcrumbCallback: function setBreadcrumbCallback(callback) { - var original = this._globalOptions.breadcrumbCallback; - this._globalOptions.breadcrumbCallback = keepOriginalCallback(original, callback); - return this; - }, + _sendProcessedPayload: function(data, callback) { + var self = this; + var globalOptions = this._globalOptions; - /* - * Set the shouldSendCallback option - * - * @param {function} callback The callback to run which allows - * introspecting the blob before sending - * @return {Raven} - */ - setShouldSendCallback: function setShouldSendCallback(callback) { - var original = this._globalOptions.shouldSendCallback; - this._globalOptions.shouldSendCallback = keepOriginalCallback(original, callback); - return this; - }, + if (!this.isSetup()) return; - /** - * Override the default HTTP transport mechanism that transmits data - * to the Sentry server. - * - * @param {function} transport Function invoked instead of the default - * `makeRequest` handler. - * - * @return {Raven} - */ - setTransport: function setTransport(transport) { - this._globalOptions.transport = transport; - return this; - }, + // Try and clean up the packet before sending by truncating long values + data = this._trimPacket(data); - /* - * Get the latest raw exception that was captured by Raven. - * - * @return {error} - */ - lastException: function lastException() { - return this._lastCapturedException; - }, + // ideally duplicate error testing should occur *before* dataCallback/shouldSendCallback, + // but this would require copying an un-truncated copy of the data packet, which can be + // arbitrarily deep (extra_data) -- could be worthwhile? will revisit + if (!this._globalOptions.allowDuplicates && this._isRepeatData(data)) { + this._logDebug('warn', 'Raven dropped repeat event: ', data); + return; + } - /* - * Get the last event id - * - * @return {string} - */ - lastEventId: function lastEventId() { - return this._lastEventId; - }, + // Send along an event_id if not explicitly passed. + // This event_id can be used to reference the error within Sentry itself. + // Set lastEventId after we know the error should actually be sent + this._lastEventId = data.event_id || (data.event_id = this._getUuid()); - /* - * Determine if Raven is setup and ready to go. - * - * @return {boolean} - */ - isSetup: function isSetup() { - if (!this._hasJSON) return false; // needs JSON support + // Store outbound payload after trim + this._lastData = data; - if (!this._globalServer) { - if (!this.ravenNotConfiguredError) { - this.ravenNotConfiguredError = true; + this._logDebug('debug', 'Raven about to send:', data); - this._logDebug('error', 'Error: Raven has not been configured.'); - } + var auth = { + sentry_version: '7', + sentry_client: 'raven-js/' + this.VERSION, + sentry_key: this._globalKey + }; - return false; + if (this._globalSecret) { + auth.sentry_secret = this._globalSecret; } - return true; - }, - afterLoad: function afterLoad() { - // TODO: remove window dependence? - // Attempt to initialize Raven on load - var RavenConfig = _window$1.RavenConfig; + var exception = data.exception && data.exception.values[0]; - if (RavenConfig) { - this.config(RavenConfig.dsn, RavenConfig.config).install(); + // only capture 'sentry' breadcrumb is autoBreadcrumbs is truthy + if ( + this._globalOptions.autoBreadcrumbs && + this._globalOptions.autoBreadcrumbs.sentry + ) { + this.captureBreadcrumb({ + category: 'sentry', + message: exception + ? (exception.type ? exception.type + ': ' : '') + exception.value + : data.message, + event_id: data.event_id, + level: data.level || 'error' // presume error unless specified + }); } - }, - showReportDialog: function showReportDialog(options) { - if (!_document // doesn't work without a document (React native) - ) return; - options = options || {}; - var lastEventId = options.eventId || this.lastEventId(); - if (!lastEventId) { - throw new configError('Missing eventId'); - } + var url = this._globalEndpoint; + (globalOptions.transport || this._makeRequest).call(this, { + url: url, + auth: auth, + data: data, + options: globalOptions, + onSuccess: function success() { + self._resetBackoff(); - var dsn = options.dsn || this._dsn; - - if (!dsn) { - throw new configError('Missing DSN'); - } - - var encode = encodeURIComponent; - var qs = ''; - qs += '?eventId=' + encode(lastEventId); - qs += '&dsn=' + encode(dsn); - var user = options.user || this._globalContext.user; - - if (user) { - if (user.name) qs += '&name=' + encode(user.name); - if (user.email) qs += '&email=' + encode(user.email); - } - - var globalServer = this._getGlobalServer(this._parseDSN(dsn)); - - var script = _document.createElement('script'); - - script.async = true; - script.src = globalServer + '/api/embed/error-page/' + qs; + self._triggerEvent('success', { + data: data, + src: url + }); + callback && callback(); + }, + onError: function failure(error) { + self._logDebug('error', 'Raven transport failed to send: ', error); - (_document.head || _document.body).appendChild(script); - }, + if (error.request) { + self._setBackoffState(error.request); + } - /**** Private functions ****/ - _ignoreNextOnError: function _ignoreNextOnError() { - var self = this; - this._ignoreOnError += 1; - setTimeout(function () { - // onerror should trigger before setTimeout - self._ignoreOnError -= 1; + self._triggerEvent('failure', { + data: data, + src: url + }); + error = error || new Error('Raven send failed (no additional details provided)'); + callback && callback(error); + } }); }, - _triggerEvent: function _triggerEvent(eventType, options) { - // NOTE: `event` is a native browser thing, so let's avoid conflicting wiht it - var evt, key; - if (!this._hasDocument) return; - options = options || {}; - eventType = 'raven' + eventType.substr(0, 1).toUpperCase() + eventType.substr(1); - if (_document.createEvent) { - evt = _document.createEvent('HTMLEvents'); - evt.initEvent(eventType, true, true); - } else { - evt = _document.createEventObject(); - evt.eventType = eventType; - } + _makeRequest: function(opts) { + // Auth is intentionally sent as part of query string (NOT as custom HTTP header) to avoid preflight CORS requests + var url = opts.url + '?' + urlencode(opts.auth); - for (key in options) { - if (hasKey(options, key)) { - evt[key] = options[key]; - } - } + var evaluatedHeaders = null; + var evaluatedFetchParameters = {}; - if (_document.createEvent) { - // IE9 if standards - _document.dispatchEvent(evt); - } else { - // IE8 regardless of Quirks or Standards - // IE9 if quirks - try { - _document.fireEvent('on' + evt.eventType.toLowerCase(), evt); - } catch (e) {// Do nothing - } + if (opts.options.headers) { + evaluatedHeaders = this._evaluateHash(opts.options.headers); } - }, - /** - * Wraps addEventListener to capture UI breadcrumbs - * @param evtName the event name (e.g. "click") - * @returns {Function} - * @private - */ - _breadcrumbEventHandler: function _breadcrumbEventHandler(evtName) { - var self = this; - return function (evt) { - // reset keypress timeout; e.g. triggering a 'click' after - // a 'keypress' will reset the keypress debounce so that a new - // set of keypresses can be recorded - self._keypressTimeout = null; // It's possible this handler might trigger multiple times for the same - // event (e.g. event propagation through node ancestors). Ignore if we've - // already captured the event. + if (opts.options.fetchParameters) { + evaluatedFetchParameters = this._evaluateHash(opts.options.fetchParameters); + } - if (self._lastCapturedEvent === evt) return; - self._lastCapturedEvent = evt; // try/catch both: - // - accessing evt.target (see getsentry/raven-js#838, #768) - // - `htmlTreeAsString` because it's complex, and just accessing the DOM incorrectly - // can throw an exception in some circumstances. + if (supportsFetch()) { + evaluatedFetchParameters.body = stringify(opts.data); - var target; + var defaultFetchOptions = objectMerge({}, this._fetchDefaults); + var fetchOptions = objectMerge(defaultFetchOptions, evaluatedFetchParameters); - try { - target = htmlTreeAsString(evt.target); - } catch (e) { - target = ''; + if (evaluatedHeaders) { + fetchOptions.headers = evaluatedHeaders; } - self.captureBreadcrumb({ - category: 'ui.' + evtName, - // e.g. ui.click, ui.input - message: target - }); - }; - }, - - /** - * Wraps addEventListener to capture keypress UI events - * @returns {Function} - * @private - */ - _keypressEventHandler: function _keypressEventHandler() { - var self = this, - debounceDuration = 1000; // milliseconds - // TODO: if somehow user switches keypress target before - // debounce timeout is triggered, we will only capture - // a single breadcrumb from the FIRST target (acceptable?) - - return function (evt) { - var target; + return _window + .fetch(url, fetchOptions) + .then(function(response) { + if (response.ok) { + opts.onSuccess && opts.onSuccess(); + } else { + var error = new Error('Sentry error code: ' + response.status); + // It's called request only to keep compatibility with XHR interface + // and not add more redundant checks in setBackoffState method + error.request = response; + opts.onError && opts.onError(error); + } + }) + ['catch'](function() { + opts.onError && + opts.onError(new Error('Sentry error code: network unavailable')); + }); + } - try { - target = evt.target; - } catch (e) { - // just accessing event properties can throw an exception in some rare circumstances - // see: https://github.com/getsentry/raven-js/issues/838 - return; - } + var request = _window.XMLHttpRequest && new _window.XMLHttpRequest(); + if (!request) return; - var tagName = target && target.tagName; // only consider keypress events on actual input elements - // this will disregard keypresses targeting body (e.g. tabbing - // through elements, hotkeys, etc) + // if browser doesn't support CORS (e.g. IE7), we are out of luck + var hasCORS = 'withCredentials' in request || typeof XDomainRequest !== 'undefined'; - if (!tagName || tagName !== 'INPUT' && tagName !== 'TEXTAREA' && !target.isContentEditable) return; // record first keypress in a series, but ignore subsequent - // keypresses until debounce clears + if (!hasCORS) return; - var timeout = self._keypressTimeout; + if ('withCredentials' in request) { + request.onreadystatechange = function() { + if (request.readyState !== 4) { + return; + } else if (request.status === 200) { + opts.onSuccess && opts.onSuccess(); + } else if (opts.onError) { + var err = new Error('Sentry error code: ' + request.status); + err.request = request; + opts.onError(err); + } + }; + } else { + request = new XDomainRequest(); + // xdomainrequest cannot go http -> https (or vice versa), + // so always use protocol relative + url = url.replace(/^https?:/, ''); - if (!timeout) { - self._breadcrumbEventHandler('input')(evt); + // onreadystatechange not supported by XDomainRequest + if (opts.onSuccess) { + request.onload = opts.onSuccess; } + if (opts.onError) { + request.onerror = function() { + var err = new Error('Sentry error code: XDomainRequest'); + err.request = request; + opts.onError(err); + }; + } + } - clearTimeout(timeout); - self._keypressTimeout = setTimeout(function () { - self._keypressTimeout = null; - }, debounceDuration); - }; - }, - - /** - * Captures a breadcrumb of type "navigation", normalizing input URLs - * @param to the originating URL - * @param from the target URL - * @private - */ - _captureUrlChange: function _captureUrlChange(from, to) { - var parsedLoc = parseUrl(this._location.href); - var parsedTo = parseUrl(to); - var parsedFrom = parseUrl(from); // because onpopstate only tells you the "new" (to) value of location.href, and - // not the previous (from) value, we need to track the value of the current URL - // state ourselves + request.open('POST', url); - this._lastHref = to; // Use only the path component of the URL if the URL matches the current - // document (almost all the time when using pushState) + if (evaluatedHeaders) { + each(evaluatedHeaders, function(key, value) { + request.setRequestHeader(key, value); + }); + } - if (parsedLoc.protocol === parsedTo.protocol && parsedLoc.host === parsedTo.host) to = parsedTo.relative; - if (parsedLoc.protocol === parsedFrom.protocol && parsedLoc.host === parsedFrom.host) from = parsedFrom.relative; - this.captureBreadcrumb({ - category: 'navigation', - data: { - to: to, - from: from - } - }); + request.send(stringify(opts.data)); }, - _patchFunctionToString: function _patchFunctionToString() { - var self = this; - self._originalFunctionToString = Function.prototype.toString; // eslint-disable-next-line no-extend-native - Function.prototype.toString = function () { - if (typeof this === 'function' && this.__raven__) { - return self._originalFunctionToString.apply(this.__orig__, arguments); + _evaluateHash: function(hash) { + var evaluated = {}; + + for (var key in hash) { + if (hash.hasOwnProperty(key)) { + var value = hash[key]; + evaluated[key] = typeof value === 'function' ? value() : value; } + } - return self._originalFunctionToString.apply(this, arguments); - }; + return evaluated; }, - _unpatchFunctionToString: function _unpatchFunctionToString() { - if (this._originalFunctionToString) { - // eslint-disable-next-line no-extend-native - Function.prototype.toString = this._originalFunctionToString; + + _logDebug: function(level) { + // We allow `Raven.debug` and `Raven.config(DSN, { debug: true })` to not make backward incompatible API change + if ( + this._originalConsoleMethods[level] && + (this.debug || this._globalOptions.debug) + ) { + // In IE<10 console methods do not have their own 'apply' method + Function.prototype.apply.call( + this._originalConsoleMethods[level], + this._originalConsole, + [].slice.call(arguments, 1) + ); } }, - /** - * Wrap timer functions and event targets to catch errors and provide - * better metadata. - */ - _instrumentTryCatch: function _instrumentTryCatch() { - var self = this; - var wrappedBuiltIns = self._wrappedBuiltIns; - - function wrapTimeFn(orig) { - return function (fn, t) { - // preserve arity - // Make a copy of the arguments to prevent deoptimization - // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments - var args = new Array(arguments.length); - - for (var i = 0; i < args.length; ++i) { - args[i] = arguments[i]; - } + _mergeContext: function(key, context) { + if (isUndefined(context)) { + delete this._globalContext[key]; + } else { + this._globalContext[key] = objectMerge(this._globalContext[key] || {}, context); + } + } +}; - var originalCallback = args[0]; +// Deprecations +Raven.prototype.setUser = Raven.prototype.setUserContext; +Raven.prototype.setReleaseContext = Raven.prototype.setRelease; - if (isFunction(originalCallback)) { - args[0] = self.wrap(originalCallback); - } // IE < 9 doesn't support .call/.apply on setInterval/setTimeout, but it - // also supports only two arguments and doesn't care what this is, so we - // can just call the original function directly. +module.exports = Raven; +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"10":10,"3":3,"4":4,"7":7,"8":8,"9":9}],6:[function(_dereq_,module,exports){ +(function (global){ +/** + * Enforces a single instance of the Raven client, and the + * main entry point for Raven. If you are a consumer of the + * Raven library, you SHOULD load this file (vs raven.js). + **/ - if (orig.apply) { - return orig.apply(this, args); - } else { - return orig(args[0], args[1]); - } - }; - } +var RavenConstructor = _dereq_(5); - var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; +// This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) +var _window = + typeof window !== 'undefined' + ? window + : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; +var _Raven = _window.Raven; - function wrapEventTarget(global) { - var proto = _window$1[global] && _window$1[global].prototype; +var Raven = new RavenConstructor(); - if (proto && proto.hasOwnProperty && proto.hasOwnProperty('addEventListener')) { - fill(proto, 'addEventListener', function (orig) { - return function (evtName, fn, capture, secure) { - // preserve arity - try { - if (fn && fn.handleEvent) { - fn.handleEvent = self.wrap(fn.handleEvent); - } - } catch (err) {} // can sometimes get 'Permission denied to access property "handle Event' - // More breadcrumb DOM capture ... done here and not in `_instrumentBreadcrumbs` - // so that we don't have more than one wrapper function +/* + * Allow multiple versions of Raven to be installed. + * Strip Raven from the global context and returns the instance. + * + * @return {Raven} + */ +Raven.noConflict = function() { + _window.Raven = _Raven; + return Raven; +}; +Raven.afterLoad(); - var before, clickHandler, keypressHandler; +module.exports = Raven; - if (autoBreadcrumbs && autoBreadcrumbs.dom && (global === 'EventTarget' || global === 'Node')) { - // NOTE: generating multiple handlers per addEventListener invocation, should - // revisit and verify we can just use one (almost certainly) - clickHandler = self._breadcrumbEventHandler('click'); - keypressHandler = self._keypressEventHandler(); +/** + * DISCLAIMER: + * + * Expose `Client` constructor for cases where user want to track multiple "sub-applications" in one larger app. + * It's not meant to be used by a wide audience, so pleaaase make sure that you know what you're doing before using it. + * Accidentally calling `install` multiple times, may result in an unexpected behavior that's very hard to debug. + * + * It's called `Client' to be in-line with Raven Node implementation. + * + * HOWTO: + * + * import Raven from 'raven-js'; + * + * const someAppReporter = new Raven.Client(); + * const someOtherAppReporter = new Raven.Client(); + * + * someAppReporter.config('__DSN__', { + * ...config goes here + * }); + * + * someOtherAppReporter.config('__OTHER_DSN__', { + * ...config goes here + * }); + * + * someAppReporter.captureMessage(...); + * someAppReporter.captureException(...); + * someAppReporter.captureBreadcrumb(...); + * + * someOtherAppReporter.captureMessage(...); + * someOtherAppReporter.captureException(...); + * someOtherAppReporter.captureBreadcrumb(...); + * + * It should "just work". + */ +module.exports.Client = RavenConstructor; - before = function before(evt) { - // need to intercept every DOM event in `before` argument, in case that - // same wrapped method is re-used for different events (e.g. mousemove THEN click) - // see #724 - if (!evt) return; - var eventType; +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"5":5}],7:[function(_dereq_,module,exports){ +(function (global){ +var stringify = _dereq_(9); - try { - eventType = evt.type; - } catch (e) { - // just accessing event properties can throw an exception in some rare circumstances - // see: https://github.com/getsentry/raven-js/issues/838 - return; - } +var _window = + typeof window !== 'undefined' + ? window + : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; - if (eventType === 'click') return clickHandler(evt);else if (eventType === 'keypress') return keypressHandler(evt); - }; - } +function isObject(what) { + return typeof what === 'object' && what !== null; +} - return orig.call(this, evtName, self.wrap(fn, undefined, before), capture, secure); - }; - }, wrappedBuiltIns); - fill(proto, 'removeEventListener', function (orig) { - return function (evt, fn, capture, secure) { - try { - fn = fn && (fn.__raven_wrapper__ ? fn.__raven_wrapper__ : fn); - } catch (e) {// ignore, accessing __raven_wrapper__ will throw in some Selenium environments - } +// Yanked from https://git.io/vS8DV re-used under CC0 +// with some tiny modifications +function isError(value) { + switch ({}.toString.call(value)) { + case '[object Error]': + return true; + case '[object Exception]': + return true; + case '[object DOMException]': + return true; + default: + return value instanceof Error; + } +} - return orig.call(this, evt, fn, capture, secure); - }; - }, wrappedBuiltIns); - } - } +function isErrorEvent(value) { + return supportsErrorEvent() && {}.toString.call(value) === '[object ErrorEvent]'; +} - fill(_window$1, 'setTimeout', wrapTimeFn, wrappedBuiltIns); - fill(_window$1, 'setInterval', wrapTimeFn, wrappedBuiltIns); +function isUndefined(what) { + return what === void 0; +} - if (_window$1.requestAnimationFrame) { - fill(_window$1, 'requestAnimationFrame', function (orig) { - return function (cb) { - return orig(self.wrap(cb)); - }; - }, wrappedBuiltIns); - } // event targets borrowed from bugsnag-js: - // https://github.com/bugsnag/bugsnag-js/blob/master/src/bugsnag.js#L666 +function isFunction(what) { + return typeof what === 'function'; +} +function isPlainObject(what) { + return Object.prototype.toString.call(what) === '[object Object]'; +} - var eventTargets = ['EventTarget', 'Window', 'Node', 'ApplicationCache', 'AudioTrackList', 'ChannelMergerNode', 'CryptoOperation', 'EventSource', 'FileReader', 'HTMLUnknownElement', 'IDBDatabase', 'IDBRequest', 'IDBTransaction', 'KeyOperation', 'MediaController', 'MessagePort', 'ModalWindow', 'Notification', 'SVGElementInstance', 'Screen', 'TextTrack', 'TextTrackCue', 'TextTrackList', 'WebSocket', 'WebSocketWorker', 'Worker', 'XMLHttpRequest', 'XMLHttpRequestEventTarget', 'XMLHttpRequestUpload']; +function isString(what) { + return Object.prototype.toString.call(what) === '[object String]'; +} - for (var i = 0; i < eventTargets.length; i++) { - wrapEventTarget(eventTargets[i]); - } - }, +function isArray(what) { + return Object.prototype.toString.call(what) === '[object Array]'; +} - /** - * Instrument browser built-ins w/ breadcrumb capturing - * - XMLHttpRequests - * - DOM interactions (click/typing) - * - window.location changes - * - console - * - * Can be disabled or individually configured via the `autoBreadcrumbs` config option - */ - _instrumentBreadcrumbs: function _instrumentBreadcrumbs() { - var self = this; - var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; - var wrappedBuiltIns = self._wrappedBuiltIns; +function isEmptyObject(what) { + if (!isPlainObject(what)) return false; - function wrapProp(prop, xhr) { - if (prop in xhr && isFunction(xhr[prop])) { - fill(xhr, prop, function (orig) { - return self.wrap(orig); - }); // intentionally don't track filled methods on XHR instances - } + for (var _ in what) { + if (what.hasOwnProperty(_)) { + return false; } + } + return true; +} - if (autoBreadcrumbs.xhr && 'XMLHttpRequest' in _window$1) { - var xhrproto = XMLHttpRequest.prototype; - fill(xhrproto, 'open', function (origOpen) { - return function (method, url) { - // preserve arity - // if Sentry key appears in URL, don't capture - if (isString(url) && url.indexOf(self._globalKey) === -1) { - this.__raven_xhr = { - method: method, - url: url, - status_code: null - }; - } +function supportsErrorEvent() { + try { + new ErrorEvent(''); // eslint-disable-line no-new + return true; + } catch (e) { + return false; + } +} - return origOpen.apply(this, arguments); - }; - }, wrappedBuiltIns); - fill(xhrproto, 'send', function (origSend) { - return function () { - // preserve arity - var xhr = this; - - function onreadystatechangeHandler() { - if (xhr.__raven_xhr && xhr.readyState === 4) { - try { - // touching statusCode in some platforms throws - // an exception - xhr.__raven_xhr.status_code = xhr.status; - } catch (e) { - /* do nothing */ - } +function supportsFetch() { + if (!('fetch' in _window)) return false; - self.captureBreadcrumb({ - type: 'http', - category: 'xhr', - data: xhr.__raven_xhr - }); - } - } + try { + new Headers(); // eslint-disable-line no-new + new Request(''); // eslint-disable-line no-new + new Response(); // eslint-disable-line no-new + return true; + } catch (e) { + return false; + } +} - var props = ['onload', 'onerror', 'onprogress']; +// Despite all stars in the sky saying that Edge supports old draft syntax, aka 'never', 'always', 'origin' and 'default +// https://caniuse.com/#feat=referrer-policy +// It doesn't. And it throw exception instead of ignoring this parameter... +// REF: https://github.com/getsentry/raven-js/issues/1233 +function supportsReferrerPolicy() { + if (!supportsFetch()) return false; - for (var j = 0; j < props.length; j++) { - wrapProp(props[j], xhr); - } + try { + // eslint-disable-next-line no-new + new Request('pickleRick', { + referrerPolicy: 'origin' + }); + return true; + } catch (e) { + return false; + } +} - if ('onreadystatechange' in xhr && isFunction(xhr.onreadystatechange)) { - fill(xhr, 'onreadystatechange', function (orig) { - return self.wrap(orig, undefined, onreadystatechangeHandler); - } - /* intentionally don't track this instrumentation */ - ); - } else { - // if onreadystatechange wasn't actually set by the page on this xhr, we - // are free to set our own and capture the breadcrumb - xhr.onreadystatechange = onreadystatechangeHandler; - } +function supportsPromiseRejectionEvent() { + return typeof PromiseRejectionEvent === 'function'; +} - return origSend.apply(this, arguments); - }; - }, wrappedBuiltIns); +function wrappedCallback(callback) { + function dataCallback(data, original) { + var normalizedData = callback(data) || data; + if (original) { + return original(normalizedData) || normalizedData; } + return normalizedData; + } - if (autoBreadcrumbs.xhr && supportsFetch()) { - fill(_window$1, 'fetch', function (origFetch) { - return function () { - // preserve arity - // Make a copy of the arguments to prevent deoptimization - // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments - var args = new Array(arguments.length); - - for (var i = 0; i < args.length; ++i) { - args[i] = arguments[i]; - } - - var fetchInput = args[0]; - var method = 'GET'; - var url; + return dataCallback; +} - if (typeof fetchInput === 'string') { - url = fetchInput; - } else if ('Request' in _window$1 && fetchInput instanceof _window$1.Request) { - url = fetchInput.url; +function each(obj, callback) { + var i, j; - if (fetchInput.method) { - method = fetchInput.method; - } - } else { - url = '' + fetchInput; - } // if Sentry key appears in URL, don't capture, as it's our own request + if (isUndefined(obj.length)) { + for (i in obj) { + if (hasKey(obj, i)) { + callback.call(null, i, obj[i]); + } + } + } else { + j = obj.length; + if (j) { + for (i = 0; i < j; i++) { + callback.call(null, i, obj[i]); + } + } + } +} +function objectMerge(obj1, obj2) { + if (!obj2) { + return obj1; + } + each(obj2, function(key, value) { + obj1[key] = value; + }); + return obj1; +} - if (url.indexOf(self._globalKey) !== -1) { - return origFetch.apply(this, args); - } +/** + * This function is only used for react-native. + * react-native freezes object that have already been sent over the + * js bridge. We need this function in order to check if the object is frozen. + * So it's ok that objectFrozen returns false if Object.isFrozen is not + * supported because it's not relevant for other "platforms". See related issue: + * https://github.com/getsentry/react-native-sentry/issues/57 + */ +function objectFrozen(obj) { + if (!Object.isFrozen) { + return false; + } + return Object.isFrozen(obj); +} - if (args[1] && args[1].method) { - method = args[1].method; - } +function truncate(str, max) { + if (typeof max !== 'number') { + throw new Error('2nd argument to `truncate` function should be a number'); + } + if (typeof str !== 'string' || max === 0) { + return str; + } + return str.length <= max ? str : str.substr(0, max) + '\u2026'; +} - var fetchData = { - method: method, - url: url, - status_code: null - }; - return origFetch.apply(this, args).then(function (response) { - fetchData.status_code = response.status; - self.captureBreadcrumb({ - type: 'http', - category: 'fetch', - data: fetchData - }); - return response; - }); - }; - }, wrappedBuiltIns); - } // Capture breadcrumbs from any click that is unhandled / bubbled up all the way - // to the document. Do this before we instrument addEventListener. +/** + * hasKey, a better form of hasOwnProperty + * Example: hasKey(MainHostObject, property) === true/false + * + * @param {Object} host object to check property + * @param {string} key to check + */ +function hasKey(object, key) { + return Object.prototype.hasOwnProperty.call(object, key); +} +function joinRegExp(patterns) { + // Combine an array of regular expressions and strings into one large regexp + // Be mad. + var sources = [], + i = 0, + len = patterns.length, + pattern; - if (autoBreadcrumbs.dom && this._hasDocument) { - if (_document.addEventListener) { - _document.addEventListener('click', self._breadcrumbEventHandler('click'), false); + for (; i < len; i++) { + pattern = patterns[i]; + if (isString(pattern)) { + // If it's a string, we need to escape it + // Taken from: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions + sources.push(pattern.replace(/([.*+?^=!:${}()|\[\]\/\\])/g, '\\$1')); + } else if (pattern && pattern.source) { + // If it's a regexp already, we want to extract the source + sources.push(pattern.source); + } + // Intentionally skip other cases + } + return new RegExp(sources.join('|'), 'i'); +} - _document.addEventListener('keypress', self._keypressEventHandler(), false); - } else { - // IE8 Compatibility - _document.attachEvent('onclick', self._breadcrumbEventHandler('click')); +function urlencode(o) { + var pairs = []; + each(o, function(key, value) { + pairs.push(encodeURIComponent(key) + '=' + encodeURIComponent(value)); + }); + return pairs.join('&'); +} - _document.attachEvent('onkeypress', self._keypressEventHandler()); - } - } // record navigation (URL) changes - // NOTE: in Chrome App environment, touching history.pushState, *even inside - // a try/catch block*, will cause Chrome to output an error to console.error - // borrowed from: https://github.com/angular/angular.js/pull/13945/files +// borrowed from https://tools.ietf.org/html/rfc3986#appendix-B +// intentionally using regex and not href parsing trick because React Native and other +// environments where DOM might not be available +function parseUrl(url) { + if (typeof url !== 'string') return {}; + var match = url.match(/^(([^:\/?#]+):)?(\/\/([^\/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?$/); + // coerce to undefined values to empty string so we don't get 'undefined' + var query = match[6] || ''; + var fragment = match[8] || ''; + return { + protocol: match[2], + host: match[4], + path: match[5], + relative: match[5] + query + fragment // everything minus origin + }; +} +function uuid4() { + var crypto = _window.crypto || _window.msCrypto; - var chrome = _window$1.chrome; - var isChromePackagedApp = chrome && chrome.app && chrome.app.runtime; - var hasPushAndReplaceState = !isChromePackagedApp && _window$1.history && history.pushState && history.replaceState; + if (!isUndefined(crypto) && crypto.getRandomValues) { + // Use window.crypto API if available + // eslint-disable-next-line no-undef + var arr = new Uint16Array(8); + crypto.getRandomValues(arr); - if (autoBreadcrumbs.location && hasPushAndReplaceState) { - // TODO: remove onpopstate handler on uninstall() - var oldOnPopState = _window$1.onpopstate; + // set 4 in byte 7 + arr[3] = (arr[3] & 0xfff) | 0x4000; + // set 2 most significant bits of byte 9 to '10' + arr[4] = (arr[4] & 0x3fff) | 0x8000; - _window$1.onpopstate = function () { - var currentHref = self._location.href; + var pad = function(num) { + var v = num.toString(16); + while (v.length < 4) { + v = '0' + v; + } + return v; + }; - self._captureUrlChange(self._lastHref, currentHref); + return ( + pad(arr[0]) + + pad(arr[1]) + + pad(arr[2]) + + pad(arr[3]) + + pad(arr[4]) + + pad(arr[5]) + + pad(arr[6]) + + pad(arr[7]) + ); + } else { + // http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/2117523#2117523 + return 'xxxxxxxxxxxx4xxxyxxxxxxxxxxxxxxx'.replace(/[xy]/g, function(c) { + var r = (Math.random() * 16) | 0, + v = c === 'x' ? r : (r & 0x3) | 0x8; + return v.toString(16); + }); + } +} - if (oldOnPopState) { - return oldOnPopState.apply(this, arguments); - } - }; +/** + * Given a child DOM element, returns a query-selector statement describing that + * and its ancestors + * e.g. [HTMLElement] => body > div > input#foo.btn[name=baz] + * @param elem + * @returns {string} + */ +function htmlTreeAsString(elem) { + /* eslint no-extra-parens:0*/ + var MAX_TRAVERSE_HEIGHT = 5, + MAX_OUTPUT_LEN = 80, + out = [], + height = 0, + len = 0, + separator = ' > ', + sepLength = separator.length, + nextStr; - var historyReplacementFunction = function historyReplacementFunction(origHistFunction) { - // note history.pushState.length is 0; intentionally not declaring - // params to preserve 0 arity - return function () - /* state, title, url */ - { - var url = arguments.length > 2 ? arguments[2] : undefined; // url argument is optional + while (elem && height++ < MAX_TRAVERSE_HEIGHT) { + nextStr = htmlElementAsString(elem); + // bail out if + // - nextStr is the 'html' element + // - the length of the string that would be created exceeds MAX_OUTPUT_LEN + // (ignore this limit if we are on the first iteration) + if ( + nextStr === 'html' || + (height > 1 && len + out.length * sepLength + nextStr.length >= MAX_OUTPUT_LEN) + ) { + break; + } - if (url) { - // coerce to string (this is what pushState does) - self._captureUrlChange(self._lastHref, url + ''); - } + out.push(nextStr); - return origHistFunction.apply(this, arguments); - }; - }; + len += nextStr.length; + elem = elem.parentNode; + } - fill(history, 'pushState', historyReplacementFunction, wrappedBuiltIns); - fill(history, 'replaceState', historyReplacementFunction, wrappedBuiltIns); - } + return out.reverse().join(separator); +} - if (autoBreadcrumbs.console && 'console' in _window$1 && console.log) { - // console - var consoleMethodCallback = function consoleMethodCallback(msg, data) { - self.captureBreadcrumb({ - message: msg, - level: data.level, - category: 'console' - }); - }; +/** + * Returns a simple, query-selector representation of a DOM element + * e.g. [HTMLElement] => input#foo.btn[name=baz] + * @param HTMLElement + * @returns {string} + */ +function htmlElementAsString(elem) { + var out = [], + className, + classes, + key, + attr, + i; - each(['debug', 'info', 'warn', 'error', 'log'], function (_, level) { - wrapConsoleMethod(console, level, consoleMethodCallback); - }); - } - }, - _restoreBuiltIns: function _restoreBuiltIns() { - // restore any wrapped builtins - var builtin; + if (!elem || !elem.tagName) { + return ''; + } - while (this._wrappedBuiltIns.length) { - builtin = this._wrappedBuiltIns.shift(); - var obj = builtin[0], - name = builtin[1], - orig = builtin[2]; - obj[name] = orig; + out.push(elem.tagName.toLowerCase()); + if (elem.id) { + out.push('#' + elem.id); + } + + className = elem.className; + if (className && isString(className)) { + classes = className.split(/\s+/); + for (i = 0; i < classes.length; i++) { + out.push('.' + classes[i]); } - }, - _restoreConsole: function _restoreConsole() { - // eslint-disable-next-line guard-for-in - for (var method in this._originalConsoleMethods) { - this._originalConsole[method] = this._originalConsoleMethods[method]; + } + var attrWhitelist = ['type', 'name', 'title', 'alt']; + for (i = 0; i < attrWhitelist.length; i++) { + key = attrWhitelist[i]; + attr = elem.getAttribute(key); + if (attr) { + out.push('[' + key + '="' + attr + '"]'); } - }, - _drainPlugins: function _drainPlugins() { - var self = this; // FIX ME TODO + } + return out.join(''); +} - each(this._plugins, function (_, plugin) { - var installer = plugin[0]; - var args = plugin[1]; - installer.apply(self, [self].concat(args)); - }); - }, - _parseDSN: function _parseDSN(str) { - var m = dsnPattern.exec(str), - dsn = {}, - i = 7; +/** + * Returns true if either a OR b is truthy, but not both + */ +function isOnlyOneTruthy(a, b) { + return !!(!!a ^ !!b); +} - try { - while (i--) { - dsn[dsnKeys[i]] = m[i] || ''; - } - } catch (e) { - throw new configError('Invalid DSN: ' + str); - } +/** + * Returns true if both parameters are undefined + */ +function isBothUndefined(a, b) { + return isUndefined(a) && isUndefined(b); +} - if (dsn.pass && !this._globalOptions.allowSecretKey) { - throw new configError('Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key'); - } +/** + * Returns true if the two input exception interfaces have the same content + */ +function isSameException(ex1, ex2) { + if (isOnlyOneTruthy(ex1, ex2)) return false; - return dsn; - }, - _getGlobalServer: function _getGlobalServer(uri) { - // assemble the endpoint from the uri pieces - var globalServer = '//' + uri.host + (uri.port ? ':' + uri.port : ''); + ex1 = ex1.values[0]; + ex2 = ex2.values[0]; - if (uri.protocol) { - globalServer = uri.protocol + ':' + globalServer; - } + if (ex1.type !== ex2.type || ex1.value !== ex2.value) return false; - return globalServer; - }, - _handleOnErrorStackInfo: function _handleOnErrorStackInfo() { - // if we are intentionally ignoring errors via onerror, bail out - if (!this._ignoreOnError) { - this._handleStackInfo.apply(this, arguments); - } - }, - _handleStackInfo: function _handleStackInfo(stackInfo, options) { - var frames = this._prepareFrames(stackInfo, options); + // in case both stacktraces are undefined, we can't decide so default to false + if (isBothUndefined(ex1.stacktrace, ex2.stacktrace)) return false; - this._triggerEvent('handle', { - stackInfo: stackInfo, - options: options - }); + return isSameStacktrace(ex1.stacktrace, ex2.stacktrace); +} - this._processException(stackInfo.name, stackInfo.message, stackInfo.url, stackInfo.lineno, frames, options); - }, - _prepareFrames: function _prepareFrames(stackInfo, options) { - var self = this; - var frames = []; +/** + * Returns true if the two input stack trace interfaces have the same content + */ +function isSameStacktrace(stack1, stack2) { + if (isOnlyOneTruthy(stack1, stack2)) return false; - if (stackInfo.stack && stackInfo.stack.length) { - each(stackInfo.stack, function (i, stack) { - var frame = self._normalizeFrame(stack, stackInfo.url); + var frames1 = stack1.frames; + var frames2 = stack2.frames; - if (frame) { - frames.push(frame); - } - }); // e.g. frames captured via captureMessage throw + // Exit early if frame count differs + if (frames1.length !== frames2.length) return false; - if (options && options.trimHeadFrames) { - for (var j = 0; j < options.trimHeadFrames && j < frames.length; j++) { - frames[j].in_app = false; - } - } - } + // Iterate through every frame; bail out if anything differs + var a, b; + for (var i = 0; i < frames1.length; i++) { + a = frames1[i]; + b = frames2[i]; + if ( + a.filename !== b.filename || + a.lineno !== b.lineno || + a.colno !== b.colno || + a['function'] !== b['function'] + ) + return false; + } + return true; +} - frames = frames.slice(0, this._globalOptions.stackTraceLimit); - return frames; - }, - _normalizeFrame: function _normalizeFrame(frame, stackInfoUrl) { - // normalize the frames data - var normalized = { - filename: frame.url, - lineno: frame.line, - colno: frame.column, - function: frame.func || '?' - }; // Case when we don't have any information about the error - // E.g. throwing a string or raw object, instead of an `Error` in Firefox - // Generating synthetic error doesn't add any value here - // - // We should probably somehow let a user know that they should fix their code +/** + * Polyfill a method + * @param obj object e.g. `document` + * @param name method name present on object e.g. `addEventListener` + * @param replacement replacement function + * @param track {optional} record instrumentation to an array + */ +function fill(obj, name, replacement, track) { + if (obj == null) return; + var orig = obj[name]; + obj[name] = replacement(orig); + obj[name].__raven__ = true; + obj[name].__orig__ = orig; + if (track) { + track.push([obj, name, orig]); + } +} - if (!frame.url) { - normalized.filename = stackInfoUrl; // fallback to whole stacks url from onerror handler - } +/** + * Join values in array + * @param input array of values to be joined together + * @param delimiter string to be placed in-between values + * @returns {string} + */ +function safeJoin(input, delimiter) { + if (!isArray(input)) return ''; - normalized.in_app = !( // determine if an exception came from outside of our app - // first we check the global includePaths list. - !!this._globalOptions.includePaths.test && !this._globalOptions.includePaths.test(normalized.filename) || // Now we check for fun, if the function name is Raven or TraceKit - /(Raven|TraceKit)\./.test(normalized['function']) || // finally, we do a last ditch effort and check for raven.min.js - /raven\.(min\.)?js$/.test(normalized.filename)); - return normalized; - }, - _processException: function _processException(type, message, fileurl, lineno, frames, options) { - var prefixedMessage = (type ? type + ': ' : '') + (message || ''); + var output = []; - if (!!this._globalOptions.ignoreErrors.test && (this._globalOptions.ignoreErrors.test(message) || this._globalOptions.ignoreErrors.test(prefixedMessage))) { - return; + for (var i = 0; i < input.length; i++) { + try { + output.push(String(input[i])); + } catch (e) { + output.push('[value cannot be serialized]'); } + } - var stacktrace; + return output.join(delimiter); +} - if (frames && frames.length) { - fileurl = frames[0].filename || fileurl; // Sentry expects frames oldest to newest - // and JS sends them as newest to oldest +// Default Node.js REPL depth +var MAX_SERIALIZE_EXCEPTION_DEPTH = 3; +// 50kB, as 100kB is max payload size, so half sounds reasonable +var MAX_SERIALIZE_EXCEPTION_SIZE = 50 * 1024; +var MAX_SERIALIZE_KEYS_LENGTH = 40; - frames.reverse(); - stacktrace = { - frames: frames - }; - } else if (fileurl) { - stacktrace = { - frames: [{ - filename: fileurl, - lineno: lineno, - in_app: true - }] - }; - } +function utf8Length(value) { + return ~-encodeURI(value).split(/%..|./).length; +} - if (!!this._globalOptions.ignoreUrls.test && this._globalOptions.ignoreUrls.test(fileurl)) { - return; - } +function jsonSize(value) { + return utf8Length(JSON.stringify(value)); +} - if (!!this._globalOptions.whitelistUrls.test && !this._globalOptions.whitelistUrls.test(fileurl)) { - return; - } +function serializeValue(value) { + if (typeof value === 'string') { + var maxLength = 40; + return truncate(value, maxLength); + } else if ( + typeof value === 'number' || + typeof value === 'boolean' || + typeof value === 'undefined' + ) { + return value; + } - var data = objectMerge({ - // sentry.interfaces.Exception - exception: { - values: [{ - type: type, - value: message, - stacktrace: stacktrace - }] - }, - culprit: fileurl - }, options); // Fire away! + var type = Object.prototype.toString.call(value); - this._send(data); - }, - _trimPacket: function _trimPacket(data) { - // For now, we only want to truncate the two different messages - // but this could/should be expanded to just trim everything - var max = this._globalOptions.maxMessageLength; + // Node.js REPL notation + if (type === '[object Object]') return '[Object]'; + if (type === '[object Array]') return '[Array]'; + if (type === '[object Function]') + return value.name ? '[Function: ' + value.name + ']' : '[Function]'; - if (data.message) { - data.message = truncate(data.message, max); - } + return value; +} - if (data.exception) { - var exception = data.exception.values[0]; - exception.value = truncate(exception.value, max); - } - - var request = data.request; +function serializeObject(value, depth) { + if (depth === 0) return serializeValue(value); + + if (isPlainObject(value)) { + return Object.keys(value).reduce(function(acc, key) { + acc[key] = serializeObject(value[key], depth - 1); + return acc; + }, {}); + } else if (Array.isArray(value)) { + return value.map(function(val) { + return serializeObject(val, depth - 1); + }); + } - if (request) { - if (request.url) { - request.url = truncate(request.url, this._globalOptions.maxUrlLength); - } + return serializeValue(value); +} - if (request.Referer) { - request.Referer = truncate(request.Referer, this._globalOptions.maxUrlLength); - } - } +function serializeException(ex, depth, maxSize) { + if (!isPlainObject(ex)) return ex; - if (data.breadcrumbs && data.breadcrumbs.values) this._trimBreadcrumbs(data.breadcrumbs); - return data; - }, + depth = typeof depth !== 'number' ? MAX_SERIALIZE_EXCEPTION_DEPTH : depth; + maxSize = typeof depth !== 'number' ? MAX_SERIALIZE_EXCEPTION_SIZE : maxSize; - /** - * Truncate breadcrumb values (right now just URLs) - */ - _trimBreadcrumbs: function _trimBreadcrumbs(breadcrumbs) { - // known breadcrumb properties with urls - // TODO: also consider arbitrary prop values that start with (https?)?:// - var urlProps = ['to', 'from', 'url'], - urlProp, - crumb, - data; + var serialized = serializeObject(ex, depth); - for (var i = 0; i < breadcrumbs.values.length; ++i) { - crumb = breadcrumbs.values[i]; - if (!crumb.hasOwnProperty('data') || !isObject(crumb.data) || objectFrozen(crumb.data)) continue; - data = objectMerge({}, crumb.data); + if (jsonSize(stringify(serialized)) > maxSize) { + return serializeException(ex, depth - 1); + } - for (var j = 0; j < urlProps.length; ++j) { - urlProp = urlProps[j]; + return serialized; +} - if (data.hasOwnProperty(urlProp) && data[urlProp]) { - data[urlProp] = truncate(data[urlProp], this._globalOptions.maxUrlLength); - } - } +function serializeKeysForMessage(keys, maxLength) { + if (typeof keys === 'number' || typeof keys === 'string') return keys.toString(); + if (!Array.isArray(keys)) return ''; - breadcrumbs.values[i].data = data; - } - }, - _getHttpData: function _getHttpData() { - if (!this._hasNavigator && !this._hasDocument) return; - var httpData = {}; + keys = keys.filter(function(key) { + return typeof key === 'string'; + }); + if (keys.length === 0) return '[object has no keys]'; - if (this._hasNavigator && _navigator.userAgent) { - httpData.headers = { - 'User-Agent': navigator.userAgent - }; - } // Check in `window` instead of `document`, as we may be in ServiceWorker environment + maxLength = typeof maxLength !== 'number' ? MAX_SERIALIZE_KEYS_LENGTH : maxLength; + if (keys[0].length >= maxLength) return keys[0]; + for (var usedKeys = keys.length; usedKeys > 0; usedKeys--) { + var serialized = keys.slice(0, usedKeys).join(', '); + if (serialized.length > maxLength) continue; + if (usedKeys === keys.length) return serialized; + return serialized + '\u2026'; + } - if (_window$1.location && _window$1.location.href) { - httpData.url = _window$1.location.href; - } + return ''; +} - if (this._hasDocument && _document.referrer) { - if (!httpData.headers) httpData.headers = {}; - httpData.headers.Referer = _document.referrer; - } +function sanitize(input, sanitizeKeys) { + if (!isArray(sanitizeKeys) || (isArray(sanitizeKeys) && sanitizeKeys.length === 0)) + return input; - return httpData; - }, - _resetBackoff: function _resetBackoff() { - this._backoffDuration = 0; - this._backoffStart = null; - }, - _shouldBackoff: function _shouldBackoff() { - return this._backoffDuration && now() - this._backoffStart < this._backoffDuration; - }, + var sanitizeRegExp = joinRegExp(sanitizeKeys); + var sanitizeMask = '********'; + var safeInput; - /** - * Returns true if the in-process data payload matches the signature - * of the previously-sent data - * - * NOTE: This has to be done at this level because TraceKit can generate - * data from window.onerror WITHOUT an exception object (IE8, IE9, - * other old browsers). This can take the form of an "exception" - * data object with a single frame (derived from the onerror args). - */ - _isRepeatData: function _isRepeatData(current) { - var last = this._lastData; - if (!last || current.message !== last.message || // defined for captureMessage - current.culprit !== last.culprit // defined for captureException/onerror - ) return false; // Stacktrace interface (i.e. from captureMessage) + try { + safeInput = JSON.parse(stringify(input)); + } catch (o_O) { + return input; + } - if (current.stacktrace || last.stacktrace) { - return isSameStacktrace(current.stacktrace, last.stacktrace); - } else if (current.exception || last.exception) { - // Exception interface (i.e. from captureException/onerror) - return isSameException(current.exception, last.exception); + function sanitizeWorker(workerInput) { + if (isArray(workerInput)) { + return workerInput.map(function(val) { + return sanitizeWorker(val); + }); } - return true; - }, - _setBackoffState: function _setBackoffState(request) { - // If we are already in a backoff state, don't change anything - if (this._shouldBackoff()) { - return; + if (isPlainObject(workerInput)) { + return Object.keys(workerInput).reduce(function(acc, k) { + if (sanitizeRegExp.test(k)) { + acc[k] = sanitizeMask; + } else { + acc[k] = sanitizeWorker(workerInput[k]); + } + return acc; + }, {}); } - var status = request.status; // 400 - project_id doesn't exist or some other fatal - // 401 - invalid/revoked dsn - // 429 - too many requests - - if (!(status === 400 || status === 401 || status === 429)) return; - var retry; - - try { - // If Retry-After is not in Access-Control-Expose-Headers, most - // browsers will throw an exception trying to access it - if (supportsFetch()) { - retry = request.headers.get('Retry-After'); - } else { - retry = request.getResponseHeader('Retry-After'); - } // Retry-After is returned in seconds - + return workerInput; + } - retry = parseInt(retry, 10) * 1000; - } catch (e) { - /* eslint no-empty:0 */ - } + return sanitizeWorker(safeInput); +} - this._backoffDuration = retry ? // If Sentry server returned a Retry-After value, use it - retry : // Otherwise, double the last backoff duration (starts at 1 sec) - this._backoffDuration * 2 || 1000; - this._backoffStart = now(); - }, - _send: function _send(data) { - var globalOptions = this._globalOptions; +module.exports = { + isObject: isObject, + isError: isError, + isErrorEvent: isErrorEvent, + isUndefined: isUndefined, + isFunction: isFunction, + isPlainObject: isPlainObject, + isString: isString, + isArray: isArray, + isEmptyObject: isEmptyObject, + supportsErrorEvent: supportsErrorEvent, + supportsFetch: supportsFetch, + supportsReferrerPolicy: supportsReferrerPolicy, + supportsPromiseRejectionEvent: supportsPromiseRejectionEvent, + wrappedCallback: wrappedCallback, + each: each, + objectMerge: objectMerge, + truncate: truncate, + objectFrozen: objectFrozen, + hasKey: hasKey, + joinRegExp: joinRegExp, + urlencode: urlencode, + uuid4: uuid4, + htmlTreeAsString: htmlTreeAsString, + htmlElementAsString: htmlElementAsString, + isSameException: isSameException, + isSameStacktrace: isSameStacktrace, + parseUrl: parseUrl, + fill: fill, + safeJoin: safeJoin, + serializeException: serializeException, + serializeKeysForMessage: serializeKeysForMessage, + sanitize: sanitize +}; - var baseData = { - project: this._globalProject, - logger: globalOptions.logger, - platform: 'javascript' - }, - httpData = this._getHttpData(); +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"9":9}],8:[function(_dereq_,module,exports){ +(function (global){ +var utils = _dereq_(7); - if (httpData) { - baseData.request = httpData; - } // HACK: delete `trimHeadFrames` to prevent from appearing in outbound payload +/* + TraceKit - Cross brower stack traces + This was originally forked from github.com/occ/TraceKit, but has since been + largely re-written and is now maintained as part of raven-js. Tests for + this are in test/vendor. - if (data.trimHeadFrames) delete data.trimHeadFrames; - data = objectMerge(baseData, data); // Merge in the tags and extra separately since objectMerge doesn't handle a deep merge + MIT license +*/ - data.tags = objectMerge(objectMerge({}, this._globalContext.tags), data.tags); - data.extra = objectMerge(objectMerge({}, this._globalContext.extra), data.extra); // Send along our own collected metadata with extra +var TraceKit = { + collectWindowErrors: true, + debug: false +}; - data.extra['session:duration'] = now() - this._startTime; +// This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) +var _window = + typeof window !== 'undefined' + ? window + : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; - if (this._breadcrumbs && this._breadcrumbs.length > 0) { - // intentionally make shallow copy so that additions - // to breadcrumbs aren't accidentally sent in this request - data.breadcrumbs = { - values: [].slice.call(this._breadcrumbs, 0) - }; - } +// global reference to slice +var _slice = [].slice; +var UNKNOWN_FUNCTION = '?'; - if (this._globalContext.user) { - // sentry.interfaces.User - data.user = this._globalContext.user; - } // Include the environment if it's defined in globalOptions +// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error#Error_types +var ERROR_TYPES_RE = /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/; +function getLocationHref() { + if (typeof document === 'undefined' || document.location == null) return ''; - if (globalOptions.environment) data.environment = globalOptions.environment; // Include the release if it's defined in globalOptions + return document.location.href; +} - if (globalOptions.release) data.release = globalOptions.release; // Include server_name if it's defined in globalOptions +/** + * TraceKit.report: cross-browser processing of unhandled exceptions + * + * Syntax: + * TraceKit.report.subscribe(function(stackInfo) { ... }) + * TraceKit.report.unsubscribe(function(stackInfo) { ... }) + * TraceKit.report(exception) + * try { ...code... } catch(ex) { TraceKit.report(ex); } + * + * Supports: + * - Firefox: full stack trace with line numbers, plus column number + * on top frame; column number is not guaranteed + * - Opera: full stack trace with line and column numbers + * - Chrome: full stack trace with line and column numbers + * - Safari: line and column number for the top frame only; some frames + * may be missing, and column number is not guaranteed + * - IE: line and column number for the top frame only; some frames + * may be missing, and column number is not guaranteed + * + * In theory, TraceKit should work on all of the following versions: + * - IE5.5+ (only 8.0 tested) + * - Firefox 0.9+ (only 3.5+ tested) + * - Opera 7+ (only 10.50 tested; versions 9 and earlier may require + * Exceptions Have Stacktrace to be enabled in opera:config) + * - Safari 3+ (only 4+ tested) + * - Chrome 1+ (only 5+ tested) + * - Konqueror 3.5+ (untested) + * + * Requires TraceKit.computeStackTrace. + * + * Tries to catch all unhandled exceptions and report them to the + * subscribed handlers. Please note that TraceKit.report will rethrow the + * exception. This is REQUIRED in order to get a useful stack trace in IE. + * If the exception does not reach the top of the browser, you will only + * get a stack trace from the point where TraceKit.report was called. + * + * Handlers receive a stackInfo object as described in the + * TraceKit.computeStackTrace docs. + */ +TraceKit.report = (function reportModuleWrapper() { + var handlers = [], + lastArgs = null, + lastException = null, + lastExceptionStack = null; - if (globalOptions.serverName) data.server_name = globalOptions.serverName; // Cleanup empty properties before sending them to the server + /** + * Add a crash handler. + * @param {Function} handler + */ + function subscribe(handler) { + installGlobalHandler(); + handlers.push(handler); + } - Object.keys(data).forEach(function (key) { - if (data[key] == null || data[key] === '' || isEmptyObject(data[key])) { - delete data[key]; + /** + * Remove a crash handler. + * @param {Function} handler + */ + function unsubscribe(handler) { + for (var i = handlers.length - 1; i >= 0; --i) { + if (handlers[i] === handler) { + handlers.splice(i, 1); } - }); - - if (isFunction(globalOptions.dataCallback)) { - data = globalOptions.dataCallback(data) || data; - } // Why?????????? - - - if (!data || isEmptyObject(data)) { - return; - } // Check if the request should be filtered or not - - - if (isFunction(globalOptions.shouldSendCallback) && !globalOptions.shouldSendCallback(data)) { - return; - } // Backoff state: Sentry server previously responded w/ an error (e.g. 429 - too many requests), - // so drop requests until "cool-off" period has elapsed. - + } + } - if (this._shouldBackoff()) { - this._logDebug('warn', 'Raven dropped error due to backoff: ', data); + /** + * Remove all crash handlers. + */ + function unsubscribeAll() { + uninstallGlobalHandler(); + handlers = []; + } + /** + * Dispatch stack information to all handlers. + * @param {Object.} stack + */ + function notifyHandlers(stack, isWindowError) { + var exception = null; + if (isWindowError && !TraceKit.collectWindowErrors) { return; } - - if (typeof globalOptions.sampleRate === 'number') { - if (Math.random() < globalOptions.sampleRate) { - this._sendProcessedPayload(data); + for (var i in handlers) { + if (handlers.hasOwnProperty(i)) { + try { + handlers[i].apply(null, [stack].concat(_slice.call(arguments, 2))); + } catch (inner) { + exception = inner; + } } - } else { - this._sendProcessedPayload(data); } - }, - _getUuid: function _getUuid() { - return uuid4(); - }, - _sendProcessedPayload: function _sendProcessedPayload(data, callback) { - var self = this; - var globalOptions = this._globalOptions; - if (!this.isSetup()) return; // Try and clean up the packet before sending by truncating long values - data = this._trimPacket(data); // ideally duplicate error testing should occur *before* dataCallback/shouldSendCallback, - // but this would require copying an un-truncated copy of the data packet, which can be - // arbitrarily deep (extra_data) -- could be worthwhile? will revisit + if (exception) { + throw exception; + } + } - if (!this._globalOptions.allowDuplicates && this._isRepeatData(data)) { - this._logDebug('warn', 'Raven dropped repeat event: ', data); + var _oldOnerrorHandler, _onErrorHandlerInstalled; - return; - } // Send along an event_id if not explicitly passed. - // This event_id can be used to reference the error within Sentry itself. - // Set lastEventId after we know the error should actually be sent + /** + * Ensures all global unhandled exceptions are recorded. + * Supported by Gecko and IE. + * @param {string} msg Error message. + * @param {string} url URL of script that generated the exception. + * @param {(number|string)} lineNo The line number at which the error + * occurred. + * @param {?(number|string)} colNo The column number at which the error + * occurred. + * @param {?Error} ex The actual Error object. + */ + function traceKitWindowOnError(msg, url, lineNo, colNo, ex) { + var stack = null; + // If 'ex' is ErrorEvent, get real Error from inside + var exception = utils.isErrorEvent(ex) ? ex.error : ex; + // If 'msg' is ErrorEvent, get real message from inside + var message = utils.isErrorEvent(msg) ? msg.message : msg; + if (lastExceptionStack) { + TraceKit.computeStackTrace.augmentStackTraceWithInitialElement( + lastExceptionStack, + url, + lineNo, + message + ); + processLastException(); + } else if (exception && utils.isError(exception)) { + // non-string `exception` arg; attempt to extract stack trace - this._lastEventId = data.event_id || (data.event_id = this._getUuid()); // Store outbound payload after trim + // New chrome and blink send along a real error object + // Let's just report that like a normal error. + // See: https://mikewest.org/2013/08/debugging-runtime-errors-with-window-onerror + stack = TraceKit.computeStackTrace(exception); + notifyHandlers(stack, true); + } else { + var location = { + url: url, + line: lineNo, + column: colNo + }; - this._lastData = data; + var name = undefined; + var groups; - this._logDebug('debug', 'Raven about to send:', data); + if ({}.toString.call(message) === '[object String]') { + var groups = message.match(ERROR_TYPES_RE); + if (groups) { + name = groups[1]; + message = groups[2]; + } + } - var auth = { - sentry_version: '7', - sentry_client: 'raven-js/' + this.VERSION, - sentry_key: this._globalKey - }; + location.func = UNKNOWN_FUNCTION; - if (this._globalSecret) { - auth.sentry_secret = this._globalSecret; + stack = { + name: name, + message: message, + url: getLocationHref(), + stack: [location] + }; + notifyHandlers(stack, true); } - var exception = data.exception && data.exception.values[0]; // only capture 'sentry' breadcrumb is autoBreadcrumbs is truthy + if (_oldOnerrorHandler) { + return _oldOnerrorHandler.apply(this, arguments); + } - if (this._globalOptions.autoBreadcrumbs && this._globalOptions.autoBreadcrumbs.sentry) { - this.captureBreadcrumb({ - category: 'sentry', - message: exception ? (exception.type ? exception.type + ': ' : '') + exception.value : data.message, - event_id: data.event_id, - level: data.level || 'error' // presume error unless specified + return false; + } - }); + function installGlobalHandler() { + if (_onErrorHandlerInstalled) { + return; } + _oldOnerrorHandler = _window.onerror; + _window.onerror = traceKitWindowOnError; + _onErrorHandlerInstalled = true; + } - var url = this._globalEndpoint; + function uninstallGlobalHandler() { + if (!_onErrorHandlerInstalled) { + return; + } + _window.onerror = _oldOnerrorHandler; + _onErrorHandlerInstalled = false; + _oldOnerrorHandler = undefined; + } - (globalOptions.transport || this._makeRequest).call(this, { + function processLastException() { + var _lastExceptionStack = lastExceptionStack, + _lastArgs = lastArgs; + lastArgs = null; + lastExceptionStack = null; + lastException = null; + notifyHandlers.apply(null, [_lastExceptionStack, false].concat(_lastArgs)); + } + + /** + * Reports an unhandled Error to TraceKit. + * @param {Error} ex + * @param {?boolean} rethrow If false, do not re-throw the exception. + * Only used for window.onerror to not cause an infinite loop of + * rethrowing. + */ + function report(ex, rethrow) { + var args = _slice.call(arguments, 1); + if (lastExceptionStack) { + if (lastException === ex) { + return; // already caught by an inner catch block, ignore + } else { + processLastException(); + } + } + + var stack = TraceKit.computeStackTrace(ex); + lastExceptionStack = stack; + lastException = ex; + lastArgs = args; + + // If the stack trace is incomplete, wait for 2 seconds for + // slow slow IE to see if onerror occurs or not before reporting + // this exception; otherwise, we will end up with an incomplete + // stack trace + setTimeout(function() { + if (lastException === ex) { + processLastException(); + } + }, stack.incomplete ? 2000 : 0); + + if (rethrow !== false) { + throw ex; // re-throw to propagate to the top level (and cause window.onerror) + } + } + + report.subscribe = subscribe; + report.unsubscribe = unsubscribe; + report.uninstall = unsubscribeAll; + return report; +})(); + +/** + * TraceKit.computeStackTrace: cross-browser stack traces in JavaScript + * + * Syntax: + * s = TraceKit.computeStackTrace(exception) // consider using TraceKit.report instead (see below) + * Returns: + * s.name - exception name + * s.message - exception message + * s.stack[i].url - JavaScript or HTML file URL + * s.stack[i].func - function name, or empty for anonymous functions (if guessing did not work) + * s.stack[i].args - arguments passed to the function, if known + * s.stack[i].line - line number, if known + * s.stack[i].column - column number, if known + * + * Supports: + * - Firefox: full stack trace with line numbers and unreliable column + * number on top frame + * - Opera 10: full stack trace with line and column numbers + * - Opera 9-: full stack trace with line numbers + * - Chrome: full stack trace with line and column numbers + * - Safari: line and column number for the topmost stacktrace element + * only + * - IE: no line numbers whatsoever + * + * Tries to guess names of anonymous functions by looking for assignments + * in the source code. In IE and Safari, we have to guess source file names + * by searching for function bodies inside all page scripts. This will not + * work for scripts that are loaded cross-domain. + * Here be dragons: some function names may be guessed incorrectly, and + * duplicate functions may be mismatched. + * + * TraceKit.computeStackTrace should only be used for tracing purposes. + * Logging of unhandled exceptions should be done with TraceKit.report, + * which builds on top of TraceKit.computeStackTrace and provides better + * IE support by utilizing the window.onerror event to retrieve information + * about the top of the stack. + * + * Note: In IE and Safari, no stack trace is recorded on the Error object, + * so computeStackTrace instead walks its *own* chain of callers. + * This means that: + * * in Safari, some methods may be missing from the stack trace; + * * in IE, the topmost function in the stack trace will always be the + * caller of computeStackTrace. + * + * This is okay for tracing (because you are likely to be calling + * computeStackTrace from the function you want to be the topmost element + * of the stack trace anyway), but not okay for logging unhandled + * exceptions (because your catch block will likely be far away from the + * inner function that actually caused the exception). + * + */ +TraceKit.computeStackTrace = (function computeStackTraceWrapper() { + // Contents of Exception in various browsers. + // + // SAFARI: + // ex.message = Can't find variable: qq + // ex.line = 59 + // ex.sourceId = 580238192 + // ex.sourceURL = http://... + // ex.expressionBeginOffset = 96 + // ex.expressionCaretOffset = 98 + // ex.expressionEndOffset = 98 + // ex.name = ReferenceError + // + // FIREFOX: + // ex.message = qq is not defined + // ex.fileName = http://... + // ex.lineNumber = 59 + // ex.columnNumber = 69 + // ex.stack = ...stack trace... (see the example below) + // ex.name = ReferenceError + // + // CHROME: + // ex.message = qq is not defined + // ex.name = ReferenceError + // ex.type = not_defined + // ex.arguments = ['aa'] + // ex.stack = ...stack trace... + // + // INTERNET EXPLORER: + // ex.message = ... + // ex.name = ReferenceError + // + // OPERA: + // ex.message = ...message... (see the example below) + // ex.name = ReferenceError + // ex.opera#sourceloc = 11 (pretty much useless, duplicates the info in ex.message) + // ex.stacktrace = n/a; see 'opera:config#UserPrefs|Exceptions Have Stacktrace' + + /** + * Computes stack trace information from the stack property. + * Chrome and Gecko use this property. + * @param {Error} ex + * @return {?Object.} Stack trace information. + */ + function computeStackTraceFromStackProp(ex) { + if (typeof ex.stack === 'undefined' || !ex.stack) return; + + var chrome = /^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i; + var winjs = /^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i; + // NOTE: blob urls are now supposed to always have an origin, therefore it's format + // which is `blob:http://url/path/with-some-uuid`, is matched by `blob.*?:\/` as well + var gecko = /^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i; + // Used to additionally parse URL/line/column from eval frames + var geckoEval = /(\S+) line (\d+)(?: > eval line \d+)* > eval/i; + var chromeEval = /\((\S*)(?::(\d+))(?::(\d+))\)/; + var lines = ex.stack.split('\n'); + var stack = []; + var submatch; + var parts; + var element; + var reference = /^(.*) is undefined$/.exec(ex.message); + + for (var i = 0, j = lines.length; i < j; ++i) { + if ((parts = chrome.exec(lines[i]))) { + var isNative = parts[2] && parts[2].indexOf('native') === 0; // start of line + var isEval = parts[2] && parts[2].indexOf('eval') === 0; // start of line + if (isEval && (submatch = chromeEval.exec(parts[2]))) { + // throw out eval line/column and use top-most line/column number + parts[2] = submatch[1]; // url + parts[3] = submatch[2]; // line + parts[4] = submatch[3]; // column + } + element = { + url: !isNative ? parts[2] : null, + func: parts[1] || UNKNOWN_FUNCTION, + args: isNative ? [parts[2]] : [], + line: parts[3] ? +parts[3] : null, + column: parts[4] ? +parts[4] : null + }; + } else if ((parts = winjs.exec(lines[i]))) { + element = { + url: parts[2], + func: parts[1] || UNKNOWN_FUNCTION, + args: [], + line: +parts[3], + column: parts[4] ? +parts[4] : null + }; + } else if ((parts = gecko.exec(lines[i]))) { + var isEval = parts[3] && parts[3].indexOf(' > eval') > -1; + if (isEval && (submatch = geckoEval.exec(parts[3]))) { + // throw out eval line/column and use top-most line number + parts[3] = submatch[1]; + parts[4] = submatch[2]; + parts[5] = null; // no column when eval + } else if (i === 0 && !parts[5] && typeof ex.columnNumber !== 'undefined') { + // FireFox uses this awesome columnNumber property for its top frame + // Also note, Firefox's column number is 0-based and everything else expects 1-based, + // so adding 1 + // NOTE: this hack doesn't work if top-most frame is eval + stack[0].column = ex.columnNumber + 1; + } + element = { + url: parts[3], + func: parts[1] || UNKNOWN_FUNCTION, + args: parts[2] ? parts[2].split(',') : [], + line: parts[4] ? +parts[4] : null, + column: parts[5] ? +parts[5] : null + }; + } else { + continue; + } + + if (!element.func && element.line) { + element.func = UNKNOWN_FUNCTION; + } + + stack.push(element); + } + + if (!stack.length) { + return null; + } + + return { + name: ex.name, + message: ex.message, + url: getLocationHref(), + stack: stack + }; + } + + /** + * Adds information about the first frame to incomplete stack traces. + * Safari and IE require this to get complete data on the first frame. + * @param {Object.} stackInfo Stack trace information from + * one of the compute* methods. + * @param {string} url The URL of the script that caused an error. + * @param {(number|string)} lineNo The line number of the script that + * caused an error. + * @param {string=} message The error generated by the browser, which + * hopefully contains the name of the object that caused the error. + * @return {boolean} Whether or not the stack information was + * augmented. + */ + function augmentStackTraceWithInitialElement(stackInfo, url, lineNo, message) { + var initial = { url: url, - auth: auth, - data: data, - options: globalOptions, - onSuccess: function success() { - self._resetBackoff(); + line: lineNo + }; - self._triggerEvent('success', { - data: data, - src: url - }); + if (initial.url && initial.line) { + stackInfo.incomplete = false; + + if (!initial.func) { + initial.func = UNKNOWN_FUNCTION; + } + + if (stackInfo.stack.length > 0) { + if (stackInfo.stack[0].url === initial.url) { + if (stackInfo.stack[0].line === initial.line) { + return false; // already in stack trace + } else if ( + !stackInfo.stack[0].line && + stackInfo.stack[0].func === initial.func + ) { + stackInfo.stack[0].line = initial.line; + return false; + } + } + } + + stackInfo.stack.unshift(initial); + stackInfo.partial = true; + return true; + } else { + stackInfo.incomplete = true; + } + + return false; + } + + /** + * Computes stack trace information by walking the arguments.caller + * chain at the time the exception occurred. This will cause earlier + * frames to be missed but is the only way to get any stack trace in + * Safari and IE. The top frame is restored by + * {@link augmentStackTraceWithInitialElement}. + * @param {Error} ex + * @return {?Object.} Stack trace information. + */ + function computeStackTraceByWalkingCallerChain(ex, depth) { + var functionName = /function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i, + stack = [], + funcs = {}, + recursion = false, + parts, + item, + source; + + for ( + var curr = computeStackTraceByWalkingCallerChain.caller; + curr && !recursion; + curr = curr.caller + ) { + if (curr === computeStackTrace || curr === TraceKit.report) { + // console.log('skipping internal function'); + continue; + } - callback && callback(); - }, - onError: function failure(error) { - self._logDebug('error', 'Raven transport failed to send: ', error); + item = { + url: null, + func: UNKNOWN_FUNCTION, + line: null, + column: null + }; - if (error.request) { - self._setBackoffState(error.request); - } + if (curr.name) { + item.func = curr.name; + } else if ((parts = functionName.exec(curr.toString()))) { + item.func = parts[1]; + } - self._triggerEvent('failure', { - data: data, - src: url - }); + if (typeof item.func === 'undefined') { + try { + item.func = parts.input.substring(0, parts.input.indexOf('{')); + } catch (e) {} + } - error = error || new Error('Raven send failed (no additional details provided)'); - callback && callback(error); + if (funcs['' + curr]) { + recursion = true; + } else { + funcs['' + curr] = true; } - }); - }, - _makeRequest: function _makeRequest(opts) { - // Auth is intentionally sent as part of query string (NOT as custom HTTP header) to avoid preflight CORS requests - var url = opts.url + '?' + urlencode(opts.auth); - var evaluatedHeaders = null; - var evaluatedFetchParameters = {}; - if (opts.options.headers) { - evaluatedHeaders = this._evaluateHash(opts.options.headers); + stack.push(item); } - if (opts.options.fetchParameters) { - evaluatedFetchParameters = this._evaluateHash(opts.options.fetchParameters); + if (depth) { + // console.log('depth is ' + depth); + // console.log('stack is ' + stack.length); + stack.splice(0, depth); } - if (supportsFetch()) { - evaluatedFetchParameters.body = stringify_1(opts.data); - var defaultFetchOptions = objectMerge({}, this._fetchDefaults); - var fetchOptions = objectMerge(defaultFetchOptions, evaluatedFetchParameters); + var result = { + name: ex.name, + message: ex.message, + url: getLocationHref(), + stack: stack + }; + augmentStackTraceWithInitialElement( + result, + ex.sourceURL || ex.fileName, + ex.line || ex.lineNumber, + ex.message || ex.description + ); + return result; + } - if (evaluatedHeaders) { - fetchOptions.headers = evaluatedHeaders; - } + /** + * Computes a stack trace for an exception. + * @param {Error} ex + * @param {(string|number)=} depth + */ + function computeStackTrace(ex, depth) { + var stack = null; + depth = depth == null ? 0 : +depth; - return _window$1.fetch(url, fetchOptions).then(function (response) { - if (response.ok) { - opts.onSuccess && opts.onSuccess(); - } else { - var error = new Error('Sentry error code: ' + response.status); // It's called request only to keep compatibility with XHR interface - // and not add more redundant checks in setBackoffState method + try { + stack = computeStackTraceFromStackProp(ex); + if (stack) { + return stack; + } + } catch (e) { + if (TraceKit.debug) { + throw e; + } + } - error.request = response; - opts.onError && opts.onError(error); - } - })['catch'](function () { - opts.onError && opts.onError(new Error('Sentry error code: network unavailable')); - }); + try { + stack = computeStackTraceByWalkingCallerChain(ex, depth + 1); + if (stack) { + return stack; + } + } catch (e) { + if (TraceKit.debug) { + throw e; + } } + return { + name: ex.name, + message: ex.message, + url: getLocationHref() + }; + } - var request = _window$1.XMLHttpRequest && new _window$1.XMLHttpRequest(); - if (!request) return; // if browser doesn't support CORS (e.g. IE7), we are out of luck + computeStackTrace.augmentStackTraceWithInitialElement = augmentStackTraceWithInitialElement; + computeStackTrace.computeStackTraceFromStackProp = computeStackTraceFromStackProp; - var hasCORS = 'withCredentials' in request || typeof XDomainRequest !== 'undefined'; - if (!hasCORS) return; + return computeStackTrace; +})(); - if ('withCredentials' in request) { - request.onreadystatechange = function () { - if (request.readyState !== 4) { - return; - } else if (request.status === 200) { - opts.onSuccess && opts.onSuccess(); - } else if (opts.onError) { - var err = new Error('Sentry error code: ' + request.status); - err.request = request; - opts.onError(err); - } - }; - } else { - request = new XDomainRequest(); // xdomainrequest cannot go http -> https (or vice versa), - // so always use protocol relative +module.exports = TraceKit; - url = url.replace(/^https?:/, ''); // onreadystatechange not supported by XDomainRequest +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"7":7}],9:[function(_dereq_,module,exports){ +/* + json-stringify-safe + Like JSON.stringify, but doesn't throw on circular references. - if (opts.onSuccess) { - request.onload = opts.onSuccess; - } + Originally forked from https://github.com/isaacs/json-stringify-safe + version 5.0.1 on 3/8/2017 and modified to handle Errors serialization + and IE8 compatibility. Tests for this are in test/vendor. - if (opts.onError) { - request.onerror = function () { - var err = new Error('Sentry error code: XDomainRequest'); - err.request = request; - opts.onError(err); - }; - } - } + ISC license: https://github.com/isaacs/json-stringify-safe/blob/master/LICENSE +*/ - request.open('POST', url); +exports = module.exports = stringify; +exports.getSerialize = serializer; - if (evaluatedHeaders) { - each(evaluatedHeaders, function (key, value) { - request.setRequestHeader(key, value); - }); - } +function indexOf(haystack, needle) { + for (var i = 0; i < haystack.length; ++i) { + if (haystack[i] === needle) return i; + } + return -1; +} - request.send(stringify_1(opts.data)); - }, - _evaluateHash: function _evaluateHash(hash) { - var evaluated = {}; +function stringify(obj, replacer, spaces, cycleReplacer) { + return JSON.stringify(obj, serializer(replacer, cycleReplacer), spaces); +} - for (var key in hash) { - if (hash.hasOwnProperty(key)) { - var value = hash[key]; - evaluated[key] = typeof value === 'function' ? value() : value; - } - } +// https://github.com/ftlabs/js-abbreviate/blob/fa709e5f139e7770a71827b1893f22418097fbda/index.js#L95-L106 +function stringifyError(value) { + var err = { + // These properties are implemented as magical getters and don't show up in for in + stack: value.stack, + message: value.message, + name: value.name + }; - return evaluated; - }, - _logDebug: function _logDebug(level) { - if (this._originalConsoleMethods[level] && this.debug) { - // In IE<10 console methods do not have their own 'apply' method - Function.prototype.apply.call(this._originalConsoleMethods[level], this._originalConsole, [].slice.call(arguments, 1)); - } - }, - _mergeContext: function _mergeContext(key, context) { - if (isUndefined(context)) { - delete this._globalContext[key]; - } else { - this._globalContext[key] = objectMerge(this._globalContext[key] || {}, context); + for (var i in value) { + if (Object.prototype.hasOwnProperty.call(value, i)) { + err[i] = value[i]; } } -}; // Deprecations -Raven$1.prototype.setUser = Raven$1.prototype.setUserContext; -Raven$1.prototype.setReleaseContext = Raven$1.prototype.setRelease; -var raven = Raven$1; + return err; +} -/** - * Enforces a single instance of the Raven client, and the - * main entry point for Raven. If you are a consumer of the - * Raven library, you SHOULD load this file (vs raven.js). - **/ -// This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) +function serializer(replacer, cycleReplacer) { + var stack = []; + var keys = []; -var _window = typeof window !== 'undefined' ? window : typeof commonjsGlobal !== 'undefined' ? commonjsGlobal : typeof self !== 'undefined' ? self : {}; + if (cycleReplacer == null) { + cycleReplacer = function(key, value) { + if (stack[0] === value) { + return '[Circular ~]'; + } + return '[Circular ~.' + keys.slice(0, indexOf(stack, value)).join('.') + ']'; + }; + } -var _Raven = _window.Raven; -var Raven = new raven(); -/* - * Allow multiple versions of Raven to be installed. - * Strip Raven from the global context and returns the instance. - * - * @return {Raven} - */ + return function(key, value) { + if (stack.length > 0) { + var thisPos = indexOf(stack, this); + ~thisPos ? stack.splice(thisPos + 1) : stack.push(this); + ~thisPos ? keys.splice(thisPos, Infinity, key) : keys.push(key); -Raven.noConflict = function () { - _window.Raven = _Raven; - return Raven; -}; + if (~indexOf(stack, value)) { + value = cycleReplacer.call(this, key, value); + } + } else { + stack.push(value); + } -Raven.afterLoad(); -var singleton = Raven; + return replacer == null + ? value instanceof Error ? stringifyError(value) : value + : replacer.call(this, key, value); + }; +} -/** - * console plugin +},{}],10:[function(_dereq_,module,exports){ +/* + * JavaScript MD5 + * https://github.com/blueimp/JavaScript-MD5 * - * Monkey patches console.* calls into Sentry messages with - * their appropriate log levels. (Experimental) + * Copyright 2011, Sebastian Tschan + * https://blueimp.net * - * Options: + * Licensed under the MIT license: + * https://opensource.org/licenses/MIT * - * `levels`: An array of levels (methods on `console`) to report to Sentry. - * Defaults to debug, info, warn, and error. + * Based on + * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message + * Digest Algorithm, as defined in RFC 1321. + * Version 2.2 Copyright (C) Paul Johnston 1999 - 2009 + * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet + * Distributed under the BSD License + * See http://pajhome.org.uk/crypt/md5 for more info. */ -var wrapConsoleMethod$1 = console$1.wrapMethod; +/* +* Add integers, wrapping at 2^32. This uses 16-bit operations internally +* to work around bugs in some JS interpreters. +*/ +function safeAdd(x, y) { + var lsw = (x & 0xffff) + (y & 0xffff); + var msw = (x >> 16) + (y >> 16) + (lsw >> 16); + return (msw << 16) | (lsw & 0xffff); +} -function consolePlugin(Raven, console, pluginOptions) { - console = console || window.console || {}; - pluginOptions = pluginOptions || {}; - var logLevels = pluginOptions.levels || ['debug', 'info', 'warn', 'error']; - if ('assert' in console) logLevels.push('assert'); +/* +* Bitwise rotate a 32-bit number to the left. +*/ +function bitRotateLeft(num, cnt) { + return (num << cnt) | (num >>> (32 - cnt)); +} - var callback = function callback(msg, data) { - Raven.captureMessage(msg, data); - }; +/* +* These functions implement the four basic operations the algorithm uses. +*/ +function md5cmn(q, a, b, x, s, t) { + return safeAdd(bitRotateLeft(safeAdd(safeAdd(a, q), safeAdd(x, t)), s), b); +} +function md5ff(a, b, c, d, x, s, t) { + return md5cmn((b & c) | (~b & d), a, b, x, s, t); +} +function md5gg(a, b, c, d, x, s, t) { + return md5cmn((b & d) | (c & ~d), a, b, x, s, t); +} +function md5hh(a, b, c, d, x, s, t) { + return md5cmn(b ^ c ^ d, a, b, x, s, t); +} +function md5ii(a, b, c, d, x, s, t) { + return md5cmn(c ^ (b | ~d), a, b, x, s, t); +} - var level = logLevels.pop(); +/* +* Calculate the MD5 of an array of little-endian words, and a bit length. +*/ +function binlMD5(x, len) { + /* append padding */ + x[len >> 5] |= 0x80 << (len % 32); + x[(((len + 64) >>> 9) << 4) + 14] = len; + + var i; + var olda; + var oldb; + var oldc; + var oldd; + var a = 1732584193; + var b = -271733879; + var c = -1732584194; + var d = 271733878; + + for (i = 0; i < x.length; i += 16) { + olda = a; + oldb = b; + oldc = c; + oldd = d; + + a = md5ff(a, b, c, d, x[i], 7, -680876936); + d = md5ff(d, a, b, c, x[i + 1], 12, -389564586); + c = md5ff(c, d, a, b, x[i + 2], 17, 606105819); + b = md5ff(b, c, d, a, x[i + 3], 22, -1044525330); + a = md5ff(a, b, c, d, x[i + 4], 7, -176418897); + d = md5ff(d, a, b, c, x[i + 5], 12, 1200080426); + c = md5ff(c, d, a, b, x[i + 6], 17, -1473231341); + b = md5ff(b, c, d, a, x[i + 7], 22, -45705983); + a = md5ff(a, b, c, d, x[i + 8], 7, 1770035416); + d = md5ff(d, a, b, c, x[i + 9], 12, -1958414417); + c = md5ff(c, d, a, b, x[i + 10], 17, -42063); + b = md5ff(b, c, d, a, x[i + 11], 22, -1990404162); + a = md5ff(a, b, c, d, x[i + 12], 7, 1804603682); + d = md5ff(d, a, b, c, x[i + 13], 12, -40341101); + c = md5ff(c, d, a, b, x[i + 14], 17, -1502002290); + b = md5ff(b, c, d, a, x[i + 15], 22, 1236535329); + + a = md5gg(a, b, c, d, x[i + 1], 5, -165796510); + d = md5gg(d, a, b, c, x[i + 6], 9, -1069501632); + c = md5gg(c, d, a, b, x[i + 11], 14, 643717713); + b = md5gg(b, c, d, a, x[i], 20, -373897302); + a = md5gg(a, b, c, d, x[i + 5], 5, -701558691); + d = md5gg(d, a, b, c, x[i + 10], 9, 38016083); + c = md5gg(c, d, a, b, x[i + 15], 14, -660478335); + b = md5gg(b, c, d, a, x[i + 4], 20, -405537848); + a = md5gg(a, b, c, d, x[i + 9], 5, 568446438); + d = md5gg(d, a, b, c, x[i + 14], 9, -1019803690); + c = md5gg(c, d, a, b, x[i + 3], 14, -187363961); + b = md5gg(b, c, d, a, x[i + 8], 20, 1163531501); + a = md5gg(a, b, c, d, x[i + 13], 5, -1444681467); + d = md5gg(d, a, b, c, x[i + 2], 9, -51403784); + c = md5gg(c, d, a, b, x[i + 7], 14, 1735328473); + b = md5gg(b, c, d, a, x[i + 12], 20, -1926607734); + + a = md5hh(a, b, c, d, x[i + 5], 4, -378558); + d = md5hh(d, a, b, c, x[i + 8], 11, -2022574463); + c = md5hh(c, d, a, b, x[i + 11], 16, 1839030562); + b = md5hh(b, c, d, a, x[i + 14], 23, -35309556); + a = md5hh(a, b, c, d, x[i + 1], 4, -1530992060); + d = md5hh(d, a, b, c, x[i + 4], 11, 1272893353); + c = md5hh(c, d, a, b, x[i + 7], 16, -155497632); + b = md5hh(b, c, d, a, x[i + 10], 23, -1094730640); + a = md5hh(a, b, c, d, x[i + 13], 4, 681279174); + d = md5hh(d, a, b, c, x[i], 11, -358537222); + c = md5hh(c, d, a, b, x[i + 3], 16, -722521979); + b = md5hh(b, c, d, a, x[i + 6], 23, 76029189); + a = md5hh(a, b, c, d, x[i + 9], 4, -640364487); + d = md5hh(d, a, b, c, x[i + 12], 11, -421815835); + c = md5hh(c, d, a, b, x[i + 15], 16, 530742520); + b = md5hh(b, c, d, a, x[i + 2], 23, -995338651); + + a = md5ii(a, b, c, d, x[i], 6, -198630844); + d = md5ii(d, a, b, c, x[i + 7], 10, 1126891415); + c = md5ii(c, d, a, b, x[i + 14], 15, -1416354905); + b = md5ii(b, c, d, a, x[i + 5], 21, -57434055); + a = md5ii(a, b, c, d, x[i + 12], 6, 1700485571); + d = md5ii(d, a, b, c, x[i + 3], 10, -1894986606); + c = md5ii(c, d, a, b, x[i + 10], 15, -1051523); + b = md5ii(b, c, d, a, x[i + 1], 21, -2054922799); + a = md5ii(a, b, c, d, x[i + 8], 6, 1873313359); + d = md5ii(d, a, b, c, x[i + 15], 10, -30611744); + c = md5ii(c, d, a, b, x[i + 6], 15, -1560198380); + b = md5ii(b, c, d, a, x[i + 13], 21, 1309151649); + a = md5ii(a, b, c, d, x[i + 4], 6, -145523070); + d = md5ii(d, a, b, c, x[i + 11], 10, -1120210379); + c = md5ii(c, d, a, b, x[i + 2], 15, 718787259); + b = md5ii(b, c, d, a, x[i + 9], 21, -343485551); + + a = safeAdd(a, olda); + b = safeAdd(b, oldb); + c = safeAdd(c, oldc); + d = safeAdd(d, oldd); + } + return [a, b, c, d]; +} - while (level) { - wrapConsoleMethod$1(console, level, callback); - level = logLevels.pop(); +/* +* Convert an array of little-endian words to a string +*/ +function binl2rstr(input) { + var i; + var output = ''; + var length32 = input.length * 32; + for (i = 0; i < length32; i += 8) { + output += String.fromCharCode((input[i >> 5] >>> (i % 32)) & 0xff); } + return output; } -var console$3 = consolePlugin; +/* +* Convert a raw string to an array of little-endian words +* Characters >255 have their high-byte silently ignored. +*/ +function rstr2binl(input) { + var i; + var output = []; + output[(input.length >> 2) - 1] = undefined; + for (i = 0; i < output.length; i += 1) { + output[i] = 0; + } + var length8 = input.length * 8; + for (i = 0; i < length8; i += 8) { + output[i >> 5] |= (input.charCodeAt(i / 8) & 0xff) << (i % 32); + } + return output; +} -/*global define*/ +/* +* Calculate the MD5 of a raw string +*/ +function rstrMD5(s) { + return binl2rstr(binlMD5(rstr2binl(s), s.length * 8)); +} -/** - * require.js plugin - * - * Automatically wrap define/require callbacks. (Experimental) - */ +/* +* Calculate the HMAC-MD5, of a key and some data (raw strings) +*/ +function rstrHMACMD5(key, data) { + var i; + var bkey = rstr2binl(key); + var ipad = []; + var opad = []; + var hash; + ipad[15] = opad[15] = undefined; + if (bkey.length > 16) { + bkey = binlMD5(bkey, key.length * 8); + } + for (i = 0; i < 16; i += 1) { + ipad[i] = bkey[i] ^ 0x36363636; + opad[i] = bkey[i] ^ 0x5c5c5c5c; + } + hash = binlMD5(ipad.concat(rstr2binl(data)), 512 + data.length * 8); + return binl2rstr(binlMD5(opad.concat(hash), 512 + 128)); +} -function requirePlugin(Raven) { - if (typeof undefined === 'function' && undefined.amd) { - window.define = Raven.wrap({ - deep: false - }, undefined); - window.require = Raven.wrap({ - deep: false - }, commonjsRequire); +/* +* Convert a raw string to a hex string +*/ +function rstr2hex(input) { + var hexTab = '0123456789abcdef'; + var output = ''; + var x; + var i; + for (i = 0; i < input.length; i += 1) { + x = input.charCodeAt(i); + output += hexTab.charAt((x >>> 4) & 0x0f) + hexTab.charAt(x & 0x0f); } + return output; } -var require_1 = requirePlugin; +/* +* Encode a string as utf-8 +*/ +function str2rstrUTF8(input) { + return unescape(encodeURIComponent(input)); +} -/* This file was generated by './scripts/generate-plugin-combinations.js'! */ +/* +* Take string arguments and return either raw or hex encoded strings +*/ +function rawMD5(s) { + return rstrMD5(str2rstrUTF8(s)); +} +function hexMD5(s) { + return rstr2hex(rawMD5(s)); +} +function rawHMACMD5(k, d) { + return rstrHMACMD5(str2rstrUTF8(k), str2rstrUTF8(d)); +} +function hexHMACMD5(k, d) { + return rstr2hex(rawHMACMD5(k, d)); +} -singleton.addPlugin(console$3).addPlugin(require_1); -var console_require = {}; +function md5(string, key, raw) { + if (!key) { + if (!raw) { + return hexMD5(string); + } + return rawMD5(string); + } + if (!raw) { + return hexHMACMD5(key, string); + } + return rawHMACMD5(key, string); +} -return console_require; +module.exports = md5; -}))); +},{}]},{},[6,1,2])(6) +}); \ No newline at end of file diff --git a/dist/console,require/raven.min.js b/dist/console,require/raven.min.js index b66584bbf452..c80b5efd7a0c 100644 --- a/dist/console,require/raven.min.js +++ b/dist/console,require/raven.min.js @@ -1,3 +1,4 @@ -/*! Raven.js 3.22.2 (1b6187b) | github.com/getsentry/raven-js */ -!function(a,b){"object"==typeof exports&&"undefined"!=typeof module?module.exports=b():"function"==typeof define&&define.amd?define(b):a.Raven=b()}(this,function(){"use strict";function a(a,b){return b={exports:{}},a(b,b.exports),b.exports}function b(a){return(b="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(a){return typeof a}:function(a){return a&&"function"==typeof Symbol&&a.constructor===Symbol&&a!==Symbol.prototype?"symbol":typeof a})(a)}function c(a){return"object"===b(a)&&null!==a}function d(a){switch({}.toString.call(a)){case"[object Error]":return!0;case"[object Exception]":return!0;case"[object DOMException]":return!0;default:return a instanceof Error}}function e(a){return l()&&"[object ErrorEvent]"==={}.toString.call(a)}function f(a){return void 0===a}function g(a){return"function"==typeof a}function h(a){return"[object Object]"===Object.prototype.toString.call(a)}function i(a){return"[object String]"===Object.prototype.toString.call(a)}function j(a){return"[object Array]"===Object.prototype.toString.call(a)}function k(a){if(!h(a))return!1;for(var b in a)if(a.hasOwnProperty(b))return!1;return!0}function l(){try{return new ErrorEvent(""),!0}catch(a){return!1}}function m(){if(!("fetch"in O))return!1;try{return new Headers,new Request(""),new Response,!0}catch(a){return!1}}function n(a){function b(b,c){var d=a(b)||b;return c?c(d)||d:d}return b}function o(a,b){var c,d;if(f(a.length))for(c in a)s(a,c)&&b.call(null,c,a[c]);else if(d=a.length)for(c=0;c ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function y(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&i(b))for(c=b.split(/\s+/),f=0;f=0;--b)l[b]===a&&l.splice(b,1)}function c(){g(),l=[]}function d(a,b){var c=null;if(!b||Q.collectWindowErrors){for(var d in l)if(l.hasOwnProperty(d))try{l[d].apply(null,[a].concat(S.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function e(a,b,c,e,f){var g=null,i=P.isErrorEvent(f)?f.error:f,k=P.isErrorEvent(a)?a.message:a;if(o)Q.computeStackTrace.augmentStackTraceWithInitialElement(o,b,c,k),h();else if(i&&P.isError(i))g=Q.computeStackTrace(i),d(g,!0);else{var l,m={url:b,line:c,column:e},n=void 0;if("[object String]"==={}.toString.call(k)){var l=k.match(U);l&&(n=l[1],k=l[2])}m.func=T,g={name:n,message:k,url:F(),stack:[m]},d(g,!0)}return!!j&&j.apply(this,arguments)}function f(){k||(j=R.onerror,R.onerror=e,k=!0)}function g(){k&&(R.onerror=j,k=!1,j=void 0)}function h(){var a=o,b=m;m=null,o=null,n=null,d.apply(null,[a,!1].concat(b))}function i(a,b){var c=S.call(arguments,1);if(o){if(n===a)return;h()}var d=Q.computeStackTrace(a);if(o=d,n=a,m=c,setTimeout(function(){n===a&&h()},d.incomplete?2e3:0),b!==!1)throw a}var j,k,l=[],m=null,n=null,o=null;return i.subscribe=a,i.unsubscribe=b,i.uninstall=c,i}(),Q.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,d,e=/^\s*at (.*?) ?\(((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,f=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|\[native).*?|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,g=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,h=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,i=/\((\S*)(?::(\d+))(?::(\d+))\)/,j=a.stack.split("\n"),k=[],l=(/^(.*) is undefined$/.exec(a.message),0),m=j.length;l eval")>-1;o&&(b=h.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==l||c[5]||"undefined"==typeof a.columnNumber||(k[0].column=a.columnNumber+1),d={url:c[3],func:c[1]||T,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}!d.func&&d.line&&(d.func=T),k.push(d)}return k.length?{name:a.name,message:a.message,url:F(),stack:k}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=T),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,e){for(var f,g,h=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,i=[],j={},k=!1,l=c.caller;l&&!k;l=l.caller)if(l!==d&&l!==Q.report){if(g={url:null,func:T,line:null,column:null},l.name?g.func=l.name:(f=h.exec(l.toString()))&&(g.func=f[1]),"undefined"==typeof g.func)try{g.func=f.input.substring(0,f.input.indexOf("{"))}catch(m){}j[""+l]?k=!0:j[""+l]=!0,i.push(g)}e&&i.splice(0,e);var n={name:a.name,message:a.message,url:F(),stack:i};return b(n,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),n}function d(b,d){var e=null;d=null==d?0:+d;try{if(e=a(b))return e}catch(f){if(Q.debug)throw f}try{if(e=c(b,d+1))return e}catch(f){if(Q.debug)throw f}return{name:b.name,message:b.message,url:F()}}return d.augmentStackTraceWithInitialElement=b,d.computeStackTraceFromStackProp=a,d}();var V=Q,W=a(function(a,b){function c(a,b){for(var c=0;c0){var i=c(d,this);~i?d.splice(i+1):d.push(this),~i?f.splice(i,1/0,g):f.push(g),~c(d,h)&&(h=b.call(this,g,h))}else d.push(h);return null==a?h instanceof Error?e(h):h:a.call(this,g,h)}}b=a.exports=d,b.getSerialize=f});G.prototype=new Error,G.prototype.constructor=G;var X=G,Y=function(a,b,c){var d=a[b],e=a;if(b in a){var f="warn"===b?"warning":b;a[b]=function(){var a=[].slice.call(arguments),g=P.safeJoin(a," "),h={level:f,logger:"console",extra:{arguments:a}};"assert"===b?a[0]===!1&&(g="Assertion failed: "+(P.safeJoin(a.slice(1)," ")||"console.assert"),h.extra.arguments=a.slice(1),c&&c(g,h)):c&&c(g,h),d&&Function.prototype.apply.call(d,e,a)}}},Z={wrapMethod:Y},$=P.isError,_=P.isObject,aa=P.isErrorEvent,ba=P.isUndefined,ca=P.isFunction,da=P.isString,ea=P.isArray,fa=P.isEmptyObject,ga=P.each,ha=P.objectMerge,ia=P.truncate,ja=P.objectFrozen,ka=P.hasKey,la=P.joinRegExp,ma=P.urlencode,na=P.uuid4,oa=P.htmlTreeAsString,pa=P.isSameException,qa=P.isSameStacktrace,ra=P.parseUrl,sa=P.fill,ta=P.supportsFetch,ua=Z.wrapMethod,va="source protocol user pass host port path".split(" "),wa=/^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/,xa="undefined"!=typeof window?window:"undefined"!=typeof M?M:"undefined"!=typeof self?self:{},ya=xa.document,za=xa.navigator;J.prototype={VERSION:"3.22.2",debug:!1,TraceKit:V,config:function(a,b){var c=this;if(c.i)return this.C("error","Error: Raven has already been configured"),c;if(!a)return c;var d=c.m;b&&ga(b,function(a,b){"tags"===a||"extra"===a||"user"===a?c.l[a]=b:d[a]=b}),c.setDSN(a),d.ignoreErrors.push(/^Script error\.?$/),d.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/),d.ignoreErrors=la(d.ignoreErrors),d.ignoreUrls=!!d.ignoreUrls.length&&la(d.ignoreUrls),d.whitelistUrls=!!d.whitelistUrls.length&&la(d.whitelistUrls),d.includePaths=la(d.includePaths),d.maxBreadcrumbs=Math.max(0,Math.min(d.maxBreadcrumbs||100,100));var e={xhr:!0,console:!0,dom:!0,location:!0,sentry:!0},f=d.autoBreadcrumbs;"[object Object]"==={}.toString.call(f)?f=ha(e,f):f!==!1&&(f=e),d.autoBreadcrumbs=f;var g={tryCatch:!0},h=d.instrument;return"[object Object]"==={}.toString.call(h)?h=ha(g,h):h!==!1&&(h=g),d.instrument=h,V.collectWindowErrors=!!d.collectWindowErrors,c},install:function(){var a=this;return a.isSetup()&&!a.p&&(V.report.subscribe(function(){a.D.apply(a,arguments)}),a.E(),a.m.instrument&&a.m.instrument.tryCatch&&a.F(),a.m.autoBreadcrumbs&&a.G(),a.H(),a.p=!0),Error.stackTraceLimit=a.m.stackTraceLimit,this},setDSN:function(a){var b=this,c=b.I(a),d=c.path.lastIndexOf("/"),e=c.path.substr(1,d);b.J=a,b.j=c.user,b.K=c.pass&&c.pass.substr(1),b.k=c.path.substr(d+1),b.i=b.L(c),b.M=b.i+"/"+e+"api/"+b.k+"/store/",this.A()},context:function(a,b,c){return ca(a)&&(c=b||[],b=a,a=void 0),this.wrap(a,b).apply(this,c)},wrap:function(a,b,c){function d(){var d=[],f=arguments.length,g=!a||a&&a.deep!==!1;for(c&&ca(c)&&c.apply(this,arguments);f--;)d[f]=g?e.wrap(a,arguments[f]):arguments[f];try{return b.apply(this,d)}catch(h){throw e.N(),e.captureException(h,a),h}}var e=this;if(ba(b)&&!ca(a))return a;if(ca(a)&&(b=a,a=void 0),!ca(b))return b;try{if(b.a)return b;if(b.O)return b.O}catch(f){return b}for(var g in b)ka(b,g)&&(d[g]=b[g]);return d.prototype=b.prototype,b.O=d,d.a=!0,d.b=b,d},uninstall:function(){return V.report.uninstall(),this.P(),this.Q(),this.R(),Error.stackTraceLimit=this.q,this.p=!1,this},captureException:function(a,b){b=ha({trimHeadFrames:0},b?b:{});var c=!$(a),d=!aa(a),e=aa(a)&&!a.error;if(c&&d||e)return this.captureMessage(a,ha(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}));aa(a)&&(a=a.error),this.f=a;try{var f=V.computeStackTrace(a);this.S(f,b)}catch(g){if(a!==g)throw g}return this},captureMessage:function(a,b){if(!this.m.ignoreErrors.test||!this.m.ignoreErrors.test(a)){b=b||{};var c,d=ha({message:a+""},b);try{throw new Error(a)}catch(e){c=e}c.name=null;var f=V.computeStackTrace(c),g=ea(f.stack)&&f.stack[1],h=g&&g.url||"";if((!this.m.ignoreUrls.test||!this.m.ignoreUrls.test(h))&&(!this.m.whitelistUrls.test||this.m.whitelistUrls.test(h))){if(this.m.stacktrace||b&&b.stacktrace){b=ha({fingerprint:a,trimHeadFrames:(b.trimHeadFrames||0)+1},b);var i=this.T(f,b);d.stacktrace={frames:i.reverse()}}return this.U(d),this}}},captureBreadcrumb:function(a){var b=ha({timestamp:H()/1e3},a);if(ca(this.m.breadcrumbCallback)){var c=this.m.breadcrumbCallback(b);if(_(c)&&!fa(c))b=c;else if(c===!1)return this}return this.w.push(b),this.w.length>this.m.maxBreadcrumbs&&this.w.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.t.push([a,b]),this.p&&this.H(),this},setUserContext:function(a){return this.l.user=a,this},setExtraContext:function(a){return this.V("extra",a),this},setTagsContext:function(a){return this.V("tags",a),this},clearContext:function(){return this.l={},this},getContext:function(){return JSON.parse(W(this.l))},setEnvironment:function(a){return this.m.environment=a,this},setRelease:function(a){return this.m.release=a,this},setDataCallback:function(a){var b=this.m.dataCallback;return this.m.dataCallback=I(b,a),this},setBreadcrumbCallback:function(a){var b=this.m.breadcrumbCallback;return this.m.breadcrumbCallback=I(b,a),this},setShouldSendCallback:function(a){var b=this.m.shouldSendCallback;return this.m.shouldSendCallback=I(b,a),this},setTransport:function(a){return this.m.transport=a,this},lastException:function(){return this.f},lastEventId:function(){return this.h},isSetup:function(){return!!this.c&&(!!this.i||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.C("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=xa.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(ya){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new X("Missing eventId");var c=a.dsn||this.J;if(!c)throw new X("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.l.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.L(this.I(c)),h=ya.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(ya.head||ya.body).appendChild(h)}},N:function(){var a=this;this.o+=1,setTimeout(function(){a.o-=1})},W:function(a,b){var c,d;if(this.d){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),ya.createEvent?(c=ya.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=ya.createEventObject(),c.eventType=a);for(d in b)ka(b,d)&&(c[d]=b[d]);if(ya.createEvent)ya.dispatchEvent(c);else try{ya.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},X:function(a){var b=this;return function(c){if(b.Y=null,b.x!==c){b.x=c;var d;try{d=oa(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},Z:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.Y;g||a.X("input")(c),clearTimeout(g),a.Y=setTimeout(function(){a.Y=null},b)}}},$:function(a,b){var c=ra(this.y.href),d=ra(b),e=ra(a);this.z=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},E:function(){var a=this;a._=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.a?a._.apply(this.b,arguments):a._.apply(this,arguments)}},P:function(){this._&&(Function.prototype.toString=this._)},F:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.$(b.z,c+""),a.apply(this,arguments)}};sa(history,"pushState",j,d),sa(history,"replaceState",j,d)}if(c.console&&"console"in xa&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};ga(["debug","info","warn","error","log"],function(a,b){ua(console,b,k)})}},Q:function(){for(var a;this.v.length;){a=this.v.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},R:function(){for(var a in this.s)this.r[a]=this.s[a]},H:function(){var a=this;ga(this.t,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},I:function(a){var b=wa.exec(a),c={},d=7;try{for(;d--;)c[va[d]]=b[d]||""}catch(e){throw new X("Invalid DSN: "+a)}if(c.pass&&!this.m.allowSecretKey)throw new X("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},L:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},D:function(){this.o||this.S.apply(this,arguments)},S:function(a,b){var c=this.T(a,b);this.W("handle",{stackInfo:a,options:b}),this.ba(a.name,a.message,a.url,a.lineno,c,b)},T:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(ga(a.stack,function(b,e){var f=c.ca(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.w,0)}),this.l.user&&(a.user=this.l.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||fa(a[b]))&&delete a[b]}),ca(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!fa(a)&&(!ca(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.ia()?void this.C("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random()this.k.maxBreadcrumbs&&this.u.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.r.push([a,b]),this.n&&this.F(),this},setUserContext:function(a){return this.j.user=a,this},setExtraContext:function(a){return this.Z("extra",a),this},setTagsContext:function(a){return this.Z("tags",a),this},clearContext:function(){return this.j={},this},getContext:function(){return JSON.parse(h(this.j))},setEnvironment:function(a){return this.k.environment=a,this},setRelease:function(a){return this.k.release=a,this},setDataCallback:function(a){var b=this.k.dataCallback;return this.k.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.k.breadcrumbCallback;return this.k.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.k.shouldSendCallback;return this.k.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.k.transport=a,this},lastException:function(){return this.d},lastEventId:function(){return this.f},isSetup:function(){return!!this.a&&(!!this.g||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.z("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=P.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(Q){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.H;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.j.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.J(this.G(c)),h=Q.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(Q.head||Q.body).appendChild(h)}},L:function(){var a=this;this.m+=1,setTimeout(function(){a.m-=1})},$:function(a,b){var c,d;if(this.b){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),Q.createEvent?(c=Q.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=Q.createEventObject(),c.eventType=a);for(d in b)y(b,d)&&(c[d]=b[d]);if(Q.createEvent)Q.dispatchEvent(c);else try{Q.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},_:function(a){var b=this;return function(c){if(b.aa=null,b.v!==c){b.v=c;var d;try{d=C(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ba:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.aa;g||a._("input")(c),clearTimeout(g),a.aa=setTimeout(function(){a.aa=null},b)}}},ca:function(a,b){var c=F(this.w.href),d=F(b),e=F(a);this.x=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},C:function(){var a=this;a.da=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.M?a.da.apply(this.O,arguments):a.da.apply(this,arguments)}},Q:function(){this.da&&(Function.prototype.toString=this.da)},D:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.ca(b.x,c+""),a.apply(this,arguments)}};G(history,"pushState",j,d),G(history,"replaceState",j,d)}if(c.console&&"console"in P&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};u(["debug","info","warn","error","log"],function(a,b){M(console,b,k)})}},R:function(){for(var a;this.t.length;){a=this.t.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},S:function(){for(var a in this.q)this.p[a]=this.q[a]},F:function(){var a=this;u(this.r,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},G:function(a){var b=O.exec(a),c={},d=7;try{for(;d--;)c[N[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.k.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},J:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},A:function(){this.m||this.V.apply(this,arguments)},V:function(a,b){var c=this.X(a,b);this.$("handle",{stackInfo:a,options:b}),this.fa(a.name,a.message,a.url,a.lineno,c,b)},X:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(u(a.stack,function(b,e){var f=c.ga(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.u,0)}),this.j.user&&(a.user=this.j.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),a=this.pa(a),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||t(a[b]))&&delete a[b]}),q(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!t(a)&&(!q(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.ma()?void this.z("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function B(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&j(b))for(c=b.split(/\s+/),f=0;fc?M(a,b-1):d}function N(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?T:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function O(a,b){function c(a){return k(a)?a.map(function(a){return c(a)}):i(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!k(b)||k(b)&&0===b.length)return a;var d,e=w(b),f="********";try{d=JSON.parse(P(a))}catch(g){return a}return c(d)}var P=a(9),Q="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},R=3,S=51200,T=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isUndefined:g,isFunction:h,isPlainObject:i,isString:j,isArray:k,isEmptyObject:l,supportsErrorEvent:m,supportsFetch:n,supportsReferrerPolicy:o,supportsPromiseRejectionEvent:p,wrappedCallback:q,each:r,objectMerge:s,truncate:u,objectFrozen:t,hasKey:v,joinRegExp:w,urlencode:x,uuid4:z,htmlTreeAsString:A,htmlElementAsString:B,isSameException:E,isSameStacktrace:F,parseUrl:y,fill:G,safeJoin:H,serializeException:M,serializeKeysForMessage:N,sanitize:O}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{9:9}],8:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}var e=a(7),f={collectWindowErrors:!0,debug:!1},g="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},h=[].slice,i="?",j=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;f.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function k(a,b){var c=null;if(!b||f.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(h.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,g,h){var l=null,m=e.isErrorEvent(h)?h.error:h,n=e.isErrorEvent(a)?a.message:a;if(v)f.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&e.isError(m))l=f.computeStackTrace(m),k(l,!0);else{var p,r={url:b,line:c,column:g},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(j);p&&(s=p[1],n=p[2])}r.func=i,l={name:s,message:n,url:d(),stack:[r]},k(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=g.onerror,g.onerror=l,r=!0)}function n(){r&&(g.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,k.apply(null,[a,!1].concat(b))}function p(a,b){var c=h.call(arguments,1);if(v){if(u===a)return;o()}var d=f.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),f.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,e,f=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,g=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,h=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,j=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,k=/\((\S*)(?::(\d+))(?::(\d+))\)/,l=a.stack.split("\n"),m=[],n=(/^(.*) is undefined$/.exec(a.message),0),o=l.length;n eval")>-1;q&&(b=j.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==n||c[5]||"undefined"==typeof a.columnNumber||(m[0].column=a.columnNumber+1),e={url:c[3],func:c[1]||i,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}!e.func&&e.line&&(e.func=i),m.push(e)}return m.length?{name:a.name,message:a.message,url:d(),stack:m}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=i),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,g){for(var h,j,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==e&&o!==f.report){if(j={url:null,func:i,line:null,column:null},o.name?j.func=o.name:(h=k.exec(o.toString()))&&(j.func=h[1]),"undefined"==typeof j.func)try{j.func=h.input.substring(0,h.input.indexOf("{"))}catch(p){}m[""+o]?n=!0:m[""+o]=!0,l.push(j)}g&&l.splice(0,g);var q={name:a.name,message:a.message,url:d(),stack:l};return b(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),q}function e(b,e){var g=null;e=null==e?0:+e;try{if(g=a(b))return g}catch(h){if(f.debug)throw h}try{if(g=c(b,e+1))return g}catch(h){if(f.debug)throw h}return{name:b.name,message:b.message,url:d()}}return e.augmentStackTraceWithInitialElement=b,e.computeStackTraceFromStackProp=a,e}(),b.exports=f}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{7:7}],9:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h); +return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}],10:[function(a,b,c){function d(a,b){var c=(65535&a)+(65535&b),d=(a>>16)+(b>>16)+(c>>16);return d<<16|65535&c}function e(a,b){return a<>>32-b}function f(a,b,c,f,g,h){return d(e(d(d(b,a),d(f,h)),g),c)}function g(a,b,c,d,e,g,h){return f(b&c|~b&d,a,b,e,g,h)}function h(a,b,c,d,e,g,h){return f(b&d|c&~d,a,b,e,g,h)}function i(a,b,c,d,e,g,h){return f(b^c^d,a,b,e,g,h)}function j(a,b,c,d,e,g,h){return f(c^(b|~d),a,b,e,g,h)}function k(a,b){a[b>>5]|=128<>>9<<4)+14]=b;var c,e,f,k,l,m=1732584193,n=-271733879,o=-1732584194,p=271733878;for(c=0;c>5]>>>b%32&255);return c}function m(a){var b,c=[];for(c[(a.length>>2)-1]=void 0,b=0;b>5]|=(255&a.charCodeAt(b/8))<16&&(e=k(e,8*a.length)),c=0;c<16;c+=1)f[c]=909522486^e[c],g[c]=1549556828^e[c];return d=k(f.concat(m(b)),512+8*b.length),l(k(g.concat(d),640))}function p(a){var b,c,d="0123456789abcdef",e="";for(c=0;c>>4&15)+d.charAt(15&b);return e}function q(a){return unescape(encodeURIComponent(a))}function r(a){return n(q(a))}function s(a){return p(r(a))}function t(a,b){return o(q(a),q(b))}function u(a,b){return p(t(a,b))}function v(a,b,c){return b?c?t(b,a):u(b,a):c?r(a):s(a)}b.exports=v},{}]},{},[6,1,2])(6)}); //# sourceMappingURL=raven.min.js.map \ No newline at end of file diff --git a/dist/console,require/raven.min.js.map b/dist/console,require/raven.min.js.map index 96fc91312905..adb90e282381 100644 --- a/dist/console,require/raven.min.js.map +++ b/dist/console,require/raven.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["raven.js"],"names":["global","factory","exports","module","define","amd","Raven","this","createCommonjsModule","fn","_typeof","obj","Symbol","iterator","constructor","prototype","isObject$1","what","isError$1","value","toString","call","Error","isErrorEvent$1","supportsErrorEvent","isUndefined$1","isFunction$1","isPlainObject","Object","isString$1","isArray$1","isEmptyObject$1","_","hasOwnProperty","ErrorEvent","e","supportsFetch$1","_window$3","Headers","Request","Response","wrappedCallback","callback","dataCallback","data","original","normalizedData","each$1","i","j","length","hasKey$1","objectMerge$1","obj1","obj2","key","objectFrozen$1","isFrozen","truncate$1","str","max","substr","object","joinRegExp$1","patterns","pattern","sources","len","push","replace","source","RegExp","join","urlencode$1","o","pairs","encodeURIComponent","parseUrl$1","url","match","query","fragment","protocol","host","path","relative","uuid4$1","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","r","Math","random","htmlTreeAsString$1","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","reverse","className","classes","attr","tagName","toLowerCase","id","split","attrWhitelist","getAttribute","isOnlyOneTruthy","a","b","isBothUndefined","isSameException$1","ex1","ex2","values","type","stacktrace","isSameStacktrace$1","stack1","stack2","frames1","frames","frames2","filename","lineno","colno","fill$1","name","replacement","track","orig","__raven__","__orig__","safeJoin","input","delimiter","output","String","getLocationHref","document","location","href","RavenConfigError","message","now","Date","keepOriginalCallback","isFunction","Raven$1","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window$1","SENTRY_RELEASE","logger","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","_fetchDefaults","method","keepalive","referrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","console","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","_lastHref","_resetBackoff","consolePlugin","pluginOptions","window","logLevels","levels","msg","captureMessage","level","pop","wrapConsoleMethod$1","requirePlugin","commonjsGlobal","self","_sPO","setPrototypeOf","p","__proto__","Reflect","construct","Parent","args","Class","Constructor","apply","bind","utils","isObject","isError","isErrorEvent","isString","isArray","isEmptyObject","supportsFetch","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","TraceKit","debug","_window$2","_slice","slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","report","subscribe","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","stack","isWindowError","exception","concat","arguments","inner","traceKitWindowOnError","lineNo","colNo","ex","error","lastExceptionStack","computeStackTrace","augmentStackTraceWithInitialElement","processLastException","groups","line","column","undefined","func","_oldOnerrorHandler","_onErrorHandlerInstalled","onerror","_lastExceptionStack","_lastArgs","lastArgs","lastException","rethrow","setTimeout","incomplete","uninstall","computeStackTraceFromStackProp","submatch","parts","element","chrome","gecko","winjs","geckoEval","chromeEval","lines","exec","isNative","indexOf","isEval","columnNumber","stackInfo","initial","unshift","partial","computeStackTraceByWalkingCallerChain","depth","item","functionName","funcs","recursion","curr","caller","substring","result","sourceURL","fileName","lineNumber","description","tracekit","stringify_1","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","err","keys","thisPos","Infinity","getSerialize","configError","wrapMethod","originalConsoleLevel","originalConsole","sentryLevel","extra","Function","console$1","wrapConsoleMethod","dsnKeys","dsnPattern","navigator","VERSION","config","dsn","options","_logDebug","globalOptions","setDSN","maxBreadcrumbs","min","autoBreadcrumbDefaults","xhr","dom","sentry","instrumentDefaults","tryCatch","install","isSetup","_handleOnErrorStackInfo","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","lastIndexOf","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","context","wrap","_before","wrapped","deep","_ignoreNextOnError","captureException","__raven_wrapper__","property","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","trimHeadFrames","isNotError","isNotErrorEvent","isErrorEventWithoutError","_handleStackInfo","test","initialCall","fileurl","fingerprint","_prepareFrames","_send","captureBreadcrumb","crumb","timestamp","breadcrumbCallback","shift","addPlugin","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","setDataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","N","W","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","X","evtName","_keypressTimeout","target","category","Z","debounceDuration","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","$","from","to","parsedLoc","parsedTo","parsedFrom","E","_originalFunctionToString","P","F","wrapTimeFn","t","Array","originalCallback","wrapEventTarget","proto","capture","secure","handleEvent","before","clickHandler","keypressHandler","_keypressEventHandler","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","G","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","onreadystatechange","origFetch","fetchInput","fetchData","then","response","addEventListener","attachEvent","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","Q","builtin","R","H","installer","I","m","allowSecretKey","L","port","D","S","_triggerEvent","_processException","T","frame","_normalizeFrame","in_app","ca","stackInfoUrl","normalized","function","ba","prefixedMessage","culprit","da","request","Referer","breadcrumbs","_trimBreadcrumbs","ea","urlProp","urlProps","fa","httpData","userAgent","User-Agent","referrer","A","_backoffDuration","_backoffStart","ia","ja","current","last","ka","_shouldBackoff","retry","get","getResponseHeader","parseInt","U","baseData","project","platform","_getHttpData","serverName","server_name","forEach","_sendProcessedPayload","ma","la","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","na","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","onload","open","setRequestHeader","send","oa","hash","evaluated","C","V","setUser","setReleaseContext","raven","_window","_Raven","noConflict","singleton","console$3","require_1","console_require"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file +{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","consolePlugin","console","pluginOptions","logLevels","levels","push","callback","msg","data","captureMessage","level","pop","wrapConsoleMethod","wrapMethod","addPlugin","4","6","2","requirePlugin","wrap","deep","3","RavenConfigError","message","name","prototype","constructor","utils","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","safeJoin","logger","extra","Function","apply","7","5","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","sanitizeKeys","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isError","isObject","isPlainObject","isErrorEvent","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","sanitize","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","config","dsn","options","_logDebug","globalOptions","key","value","setDSN","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","toString","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","substr","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","context","func","undefined","_before","wrapped","_ignoreNextOnError","captureException","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","T","event","reason","unhandledPromiseRejection","B","_promiseRejectionHandler","bind","addEventListener","P","removeEventListener","ex","trimHeadFrames","error","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","U","currentOptions","exKeys","Object","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","setDataCallback","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","L","setTimeout","$","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","_","evtName","_keypressTimeout","target","category","ba","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","ca","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","C","_originalFunctionToString","Q","D","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","type","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","E","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","R","builtin","S","F","installer","concat","G","str","m","exec","allowSecretKey","J","port","A","V","stackInfo","_triggerEvent","_processException","lineno","X","frame","_normalizeFrame","in_app","ga","stackInfoUrl","normalized","filename","line","colno","column","function","fa","prefixedMessage","exception","values","culprit","ha","request","Referer","breadcrumbs","_trimBreadcrumbs","ia","urlProp","urlProps","ja","httpData","userAgent","User-Agent","referrer","y","_backoffDuration","_backoffStart","ma","na","current","last","oa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Y","baseData","project","platform","_getHttpData","serverName","server_name","_sanitizeData","forEach","random","_sendProcessedPayload","pa","ra","qa","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","sa","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","onerror","open","setRequestHeader","send","ta","hash","evaluated","z","Z","setUser","setReleaseContext","10","8","9","RavenConstructor","_Raven","noConflict","Client","what","supportsErrorEvent","ErrorEvent","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","wrappedCallback","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","sanitizeMask","safeInput","o_O","getLocationHref","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","charAt","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","string","raw"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file diff --git a/dist/console,vue/raven.js b/dist/console,vue/raven.js index d86085e568ed..705f75bfd917 100644 --- a/dist/console,vue/raven.js +++ b/dist/console,vue/raven.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.22.2 (1b6187b) | github.com/getsentry/raven-js */ +/*! Raven.js 3.24.2 (540f32b) | github.com/getsentry/raven-js */ /* * Includes TraceKit @@ -10,3204 +10,3980 @@ * */ -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : - typeof define === 'function' && define.amd ? define(factory) : - (global.Raven = factory()); -}(this, (function () { 'use strict'; - -var commonjsGlobal = typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; - - +(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.Raven = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o' : 'anonymous component') + + (vm._isVue && vm.$options.__file ? ' at ' + vm.$options.__file : '') + ); } -function isErrorEvent$1(value) { - return supportsErrorEvent() && {}.toString.call(value) === '[object ErrorEvent]'; -} - -function isUndefined$1(what) { - return what === void 0; -} +function vuePlugin(Raven, Vue) { + Vue = Vue || window.Vue; -function isFunction$1(what) { - return typeof what === 'function'; -} + // quit if Vue isn't on the page + if (!Vue || !Vue.config) return; -function isPlainObject(what) { - return Object.prototype.toString.call(what) === '[object Object]'; -} + var _oldOnError = Vue.config.errorHandler; + Vue.config.errorHandler = function VueErrorHandler(error, vm, info) { + var metaData = {}; -function isString$1(what) { - return Object.prototype.toString.call(what) === '[object String]'; -} + // vm and lifecycleHook are not always available + if (Object.prototype.toString.call(vm) === '[object Object]') { + metaData.componentName = formatComponentName(vm); + metaData.propsData = vm.$options.propsData; + } -function isArray$1(what) { - return Object.prototype.toString.call(what) === '[object Array]'; -} + if (typeof info !== 'undefined') { + metaData.lifecycleHook = info; + } -function isEmptyObject$1(what) { - if (!isPlainObject(what)) return false; + Raven.captureException(error, { + extra: metaData + }); - for (var _ in what) { - if (what.hasOwnProperty(_)) { - return false; + if (typeof _oldOnError === 'function') { + _oldOnError.call(this, error, vm, info); } - } - - return true; + }; } -function supportsErrorEvent() { - try { - new ErrorEvent(''); // eslint-disable-line no-new +module.exports = vuePlugin; - return true; - } catch (e) { - return false; - } +_dereq_(6).addPlugin(module.exports); +},{"6":6}],3:[function(_dereq_,module,exports){ +function RavenConfigError(message) { + this.name = 'RavenConfigError'; + this.message = message; } +RavenConfigError.prototype = new Error(); +RavenConfigError.prototype.constructor = RavenConfigError; -function supportsFetch$1() { - if (!('fetch' in _window$3)) return false; - - try { - new Headers(); // eslint-disable-line no-new +module.exports = RavenConfigError; - new Request(''); // eslint-disable-line no-new +},{}],4:[function(_dereq_,module,exports){ +var utils = _dereq_(7); - new Response(); // eslint-disable-line no-new +var wrapMethod = function(console, level, callback) { + var originalConsoleLevel = console[level]; + var originalConsole = console; - return true; - } catch (e) { - return false; + if (!(level in console)) { + return; } -} - -function wrappedCallback(callback) { - function dataCallback(data, original) { - var normalizedData = callback(data) || data; - - if (original) { - return original(normalizedData) || normalizedData; - } - return normalizedData; - } + var sentryLevel = level === 'warn' ? 'warning' : level; - return dataCallback; -} + console[level] = function() { + var args = [].slice.call(arguments); -function each$1(obj, callback) { - var i, j; + var msg = utils.safeJoin(args, ' '); + var data = {level: sentryLevel, logger: 'console', extra: {arguments: args}}; - if (isUndefined$1(obj.length)) { - for (i in obj) { - if (hasKey$1(obj, i)) { - callback.call(null, i, obj[i]); + if (level === 'assert') { + if (args[0] === false) { + // Default browsers message + msg = + 'Assertion failed: ' + (utils.safeJoin(args.slice(1), ' ') || 'console.assert'); + data.extra.arguments = args.slice(1); + callback && callback(msg, data); } + } else { + callback && callback(msg, data); } - } else { - j = obj.length; - if (j) { - for (i = 0; i < j; i++) { - callback.call(null, i, obj[i]); - } + // this fails for some browsers. :( + if (originalConsoleLevel) { + // IE9 doesn't allow calling apply on console functions directly + // See: https://stackoverflow.com/questions/5472938/does-ie9-support-console-log-and-is-it-a-real-function#answer-5473193 + Function.prototype.apply.call(originalConsoleLevel, originalConsole, args); } - } -} - -function objectMerge$1(obj1, obj2) { - if (!obj2) { - return obj1; - } - - each$1(obj2, function (key, value) { - obj1[key] = value; - }); - return obj1; -} -/** - * This function is only used for react-native. - * react-native freezes object that have already been sent over the - * js bridge. We need this function in order to check if the object is frozen. - * So it's ok that objectFrozen returns false if Object.isFrozen is not - * supported because it's not relevant for other "platforms". See related issue: - * https://github.com/getsentry/react-native-sentry/issues/57 - */ - - -function objectFrozen$1(obj) { - if (!Object.isFrozen) { - return false; - } - - return Object.isFrozen(obj); -} - -function truncate$1(str, max) { - return !max || str.length <= max ? str : str.substr(0, max) + "\u2026"; -} -/** - * hasKey, a better form of hasOwnProperty - * Example: hasKey(MainHostObject, property) === true/false - * - * @param {Object} host object to check property - * @param {string} key to check - */ + }; +}; +module.exports = { + wrapMethod: wrapMethod +}; -function hasKey$1(object, key) { - return Object.prototype.hasOwnProperty.call(object, key); -} +},{"7":7}],5:[function(_dereq_,module,exports){ +(function (global){ +/*global XDomainRequest:false */ -function joinRegExp$1(patterns) { - // Combine an array of regular expressions and strings into one large regexp - // Be mad. - var sources = [], - i = 0, - len = patterns.length, - pattern; +var TraceKit = _dereq_(8); +var stringify = _dereq_(9); +var md5 = _dereq_(10); +var RavenConfigError = _dereq_(3); - for (; i < len; i++) { - pattern = patterns[i]; +var utils = _dereq_(7); +var isError = utils.isError; +var isObject = utils.isObject; +var isPlainObject = utils.isPlainObject; +var isErrorEvent = utils.isErrorEvent; +var isUndefined = utils.isUndefined; +var isFunction = utils.isFunction; +var isString = utils.isString; +var isArray = utils.isArray; +var isEmptyObject = utils.isEmptyObject; +var each = utils.each; +var objectMerge = utils.objectMerge; +var truncate = utils.truncate; +var objectFrozen = utils.objectFrozen; +var hasKey = utils.hasKey; +var joinRegExp = utils.joinRegExp; +var urlencode = utils.urlencode; +var uuid4 = utils.uuid4; +var htmlTreeAsString = utils.htmlTreeAsString; +var isSameException = utils.isSameException; +var isSameStacktrace = utils.isSameStacktrace; +var parseUrl = utils.parseUrl; +var fill = utils.fill; +var supportsFetch = utils.supportsFetch; +var supportsReferrerPolicy = utils.supportsReferrerPolicy; +var serializeKeysForMessage = utils.serializeKeysForMessage; +var serializeException = utils.serializeException; +var sanitize = utils.sanitize; - if (isString$1(pattern)) { - // If it's a string, we need to escape it - // Taken from: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions - sources.push(pattern.replace(/([.*+?^=!:${}()|\[\]\/\\])/g, '\\$1')); - } else if (pattern && pattern.source) { - // If it's a regexp already, we want to extract the source - sources.push(pattern.source); - } // Intentionally skip other cases +var wrapConsoleMethod = _dereq_(4).wrapMethod; - } +var dsnKeys = 'source protocol user pass host port path'.split(' '), + dsnPattern = /^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/; - return new RegExp(sources.join('|'), 'i'); +function now() { + return +new Date(); } -function urlencode$1(o) { - var pairs = []; - each$1(o, function (key, value) { - pairs.push(encodeURIComponent(key) + '=' + encodeURIComponent(value)); - }); - return pairs.join('&'); -} // borrowed from https://tools.ietf.org/html/rfc3986#appendix-B -// intentionally using regex and not href parsing trick because React Native and other -// environments where DOM might not be available - - -function parseUrl$1(url) { - if (typeof url !== 'string') return {}; - var match = url.match(/^(([^:\/?#]+):)?(\/\/([^\/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?$/); // coerce to undefined values to empty string so we don't get 'undefined' - - var query = match[6] || ''; - var fragment = match[8] || ''; - return { - protocol: match[2], - host: match[4], - path: match[5], - relative: match[5] + query + fragment // everything minus origin +// This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) +var _window = + typeof window !== 'undefined' + ? window + : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; +var _document = _window.document; +var _navigator = _window.navigator; - }; +function keepOriginalCallback(original, callback) { + return isFunction(callback) + ? function(data) { + return callback(data, original); + } + : callback; } -function uuid4$1() { - var crypto = _window$3.crypto || _window$3.msCrypto; - - if (!isUndefined$1(crypto) && crypto.getRandomValues) { - // Use window.crypto API if available - // eslint-disable-next-line no-undef - var arr = new Uint16Array(8); - crypto.getRandomValues(arr); // set 4 in byte 7 - - arr[3] = arr[3] & 0xfff | 0x4000; // set 2 most significant bits of byte 9 to '10' - - arr[4] = arr[4] & 0x3fff | 0x8000; - - var pad = function pad(num) { - var v = num.toString(16); - - while (v.length < 4) { - v = '0' + v; - } - - return v; - }; +// First, check for JSON support +// If there is no JSON, we no-op the core features of Raven +// since JSON is required to encode the payload +function Raven() { + this._hasJSON = !!(typeof JSON === 'object' && JSON.stringify); + // Raven can run in contexts where there's no document (react-native) + this._hasDocument = !isUndefined(_document); + this._hasNavigator = !isUndefined(_navigator); + this._lastCapturedException = null; + this._lastData = null; + this._lastEventId = null; + this._globalServer = null; + this._globalKey = null; + this._globalProject = null; + this._globalContext = {}; + this._globalOptions = { + // SENTRY_RELEASE can be injected by https://github.com/getsentry/sentry-webpack-plugin + release: _window.SENTRY_RELEASE && _window.SENTRY_RELEASE.id, + logger: 'javascript', + ignoreErrors: [], + ignoreUrls: [], + whitelistUrls: [], + includePaths: [], + headers: null, + collectWindowErrors: true, + captureUnhandledRejections: true, + maxMessageLength: 0, + // By default, truncates URL values to 250 chars + maxUrlLength: 250, + stackTraceLimit: 50, + autoBreadcrumbs: true, + instrument: true, + sampleRate: 1, + sanitizeKeys: [] + }; + this._fetchDefaults = { + method: 'POST', + keepalive: true, + // Despite all stars in the sky saying that Edge supports old draft syntax, aka 'never', 'always', 'origin' and 'default + // https://caniuse.com/#feat=referrer-policy + // It doesn't. And it throw exception instead of ignoring this parameter... + // REF: https://github.com/getsentry/raven-js/issues/1233 + referrerPolicy: supportsReferrerPolicy() ? 'origin' : '' + }; + this._ignoreOnError = 0; + this._isRavenInstalled = false; + this._originalErrorStackTraceLimit = Error.stackTraceLimit; + // capture references to window.console *and* all its methods first + // before the console plugin has a chance to monkey patch + this._originalConsole = _window.console || {}; + this._originalConsoleMethods = {}; + this._plugins = []; + this._startTime = now(); + this._wrappedBuiltIns = []; + this._breadcrumbs = []; + this._lastCapturedEvent = null; + this._keypressTimeout; + this._location = _window.location; + this._lastHref = this._location && this._location.href; + this._resetBackoff(); - return pad(arr[0]) + pad(arr[1]) + pad(arr[2]) + pad(arr[3]) + pad(arr[4]) + pad(arr[5]) + pad(arr[6]) + pad(arr[7]); - } else { - // http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/2117523#2117523 - return 'xxxxxxxxxxxx4xxxyxxxxxxxxxxxxxxx'.replace(/[xy]/g, function (c) { - var r = Math.random() * 16 | 0, - v = c === 'x' ? r : r & 0x3 | 0x8; - return v.toString(16); - }); + // eslint-disable-next-line guard-for-in + for (var method in this._originalConsole) { + this._originalConsoleMethods[method] = this._originalConsole[method]; } } -/** - * Given a child DOM element, returns a query-selector statement describing that - * and its ancestors - * e.g. [HTMLElement] => body > div > input#foo.btn[name=baz] - * @param elem - * @returns {string} - */ +/* + * The core Raven singleton + * + * @this {Raven} + */ -function htmlTreeAsString$1(elem) { - /* eslint no-extra-parens:0*/ - var MAX_TRAVERSE_HEIGHT = 5, - MAX_OUTPUT_LEN = 80, - out = [], - height = 0, - len = 0, - separator = ' > ', - sepLength = separator.length, - nextStr; - - while (elem && height++ < MAX_TRAVERSE_HEIGHT) { - nextStr = htmlElementAsString(elem); // bail out if - // - nextStr is the 'html' element - // - the length of the string that would be created exceeds MAX_OUTPUT_LEN - // (ignore this limit if we are on the first iteration) +Raven.prototype = { + // Hardcode version string so that raven source can be loaded directly via + // webpack (using a build step causes webpack #1617). Grunt verifies that + // this value matches package.json during build. + // See: https://github.com/getsentry/raven-js/issues/465 + VERSION: '3.24.2', - if (nextStr === 'html' || height > 1 && len + out.length * sepLength + nextStr.length >= MAX_OUTPUT_LEN) { - break; - } + debug: false, - out.push(nextStr); - len += nextStr.length; - elem = elem.parentNode; - } + TraceKit: TraceKit, // alias to TraceKit - return out.reverse().join(separator); -} -/** - * Returns a simple, query-selector representation of a DOM element - * e.g. [HTMLElement] => input#foo.btn[name=baz] - * @param HTMLElement - * @returns {string} - */ + /* + * Configure Raven with a DSN and extra options + * + * @param {string} dsn The public Sentry DSN + * @param {object} options Set of global options [optional] + * @return {Raven} + */ + config: function(dsn, options) { + var self = this; + if (self._globalServer) { + this._logDebug('error', 'Error: Raven has already been configured'); + return self; + } + if (!dsn) return self; -function htmlElementAsString(elem) { - var out = [], - className, - classes, - key, - attr, - i; + var globalOptions = self._globalOptions; - if (!elem || !elem.tagName) { - return ''; - } + // merge in options + if (options) { + each(options, function(key, value) { + // tags and extra are special and need to be put into context + if (key === 'tags' || key === 'extra' || key === 'user') { + self._globalContext[key] = value; + } else { + globalOptions[key] = value; + } + }); + } - out.push(elem.tagName.toLowerCase()); + self.setDSN(dsn); - if (elem.id) { - out.push('#' + elem.id); - } + // "Script error." is hard coded into browsers for errors that it can't read. + // this is the result of a script being pulled in from an external domain and CORS. + globalOptions.ignoreErrors.push(/^Script error\.?$/); + globalOptions.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/); - className = elem.className; + // join regexp rules into one big rule + globalOptions.ignoreErrors = joinRegExp(globalOptions.ignoreErrors); + globalOptions.ignoreUrls = globalOptions.ignoreUrls.length + ? joinRegExp(globalOptions.ignoreUrls) + : false; + globalOptions.whitelistUrls = globalOptions.whitelistUrls.length + ? joinRegExp(globalOptions.whitelistUrls) + : false; + globalOptions.includePaths = joinRegExp(globalOptions.includePaths); + globalOptions.maxBreadcrumbs = Math.max( + 0, + Math.min(globalOptions.maxBreadcrumbs || 100, 100) + ); // default and hard limit is 100 - if (className && isString$1(className)) { - classes = className.split(/\s+/); + var autoBreadcrumbDefaults = { + xhr: true, + console: true, + dom: true, + location: true, + sentry: true + }; - for (i = 0; i < classes.length; i++) { - out.push('.' + classes[i]); + var autoBreadcrumbs = globalOptions.autoBreadcrumbs; + if ({}.toString.call(autoBreadcrumbs) === '[object Object]') { + autoBreadcrumbs = objectMerge(autoBreadcrumbDefaults, autoBreadcrumbs); + } else if (autoBreadcrumbs !== false) { + autoBreadcrumbs = autoBreadcrumbDefaults; } - } - - var attrWhitelist = ['type', 'name', 'title', 'alt']; + globalOptions.autoBreadcrumbs = autoBreadcrumbs; - for (i = 0; i < attrWhitelist.length; i++) { - key = attrWhitelist[i]; - attr = elem.getAttribute(key); + var instrumentDefaults = { + tryCatch: true + }; - if (attr) { - out.push('[' + key + '="' + attr + '"]'); + var instrument = globalOptions.instrument; + if ({}.toString.call(instrument) === '[object Object]') { + instrument = objectMerge(instrumentDefaults, instrument); + } else if (instrument !== false) { + instrument = instrumentDefaults; } - } - - return out.join(''); -} -/** - * Returns true if either a OR b is truthy, but not both - */ + globalOptions.instrument = instrument; + TraceKit.collectWindowErrors = !!globalOptions.collectWindowErrors; -function isOnlyOneTruthy(a, b) { - return !!(!!a ^ !!b); -} -/** - * Returns true if both parameters are undefined - */ + // return for chaining + return self; + }, + /* + * Installs a global window.onerror error handler + * to capture and report uncaught exceptions. + * At this point, install() is required to be called due + * to the way TraceKit is set up. + * + * @return {Raven} + */ + install: function() { + var self = this; + if (self.isSetup() && !self._isRavenInstalled) { + TraceKit.report.subscribe(function() { + self._handleOnErrorStackInfo.apply(self, arguments); + }); -function isBothUndefined(a, b) { - return isUndefined$1(a) && isUndefined$1(b); -} -/** - * Returns true if the two input exception interfaces have the same content - */ + if (self._globalOptions.captureUnhandledRejections) { + self._attachPromiseRejectionHandler(); + } + self._patchFunctionToString(); -function isSameException$1(ex1, ex2) { - if (isOnlyOneTruthy(ex1, ex2)) return false; - ex1 = ex1.values[0]; - ex2 = ex2.values[0]; - if (ex1.type !== ex2.type || ex1.value !== ex2.value) return false; // in case both stacktraces are undefined, we can't decide so default to false + if (self._globalOptions.instrument && self._globalOptions.instrument.tryCatch) { + self._instrumentTryCatch(); + } - if (isBothUndefined(ex1.stacktrace, ex2.stacktrace)) return false; - return isSameStacktrace$1(ex1.stacktrace, ex2.stacktrace); -} -/** - * Returns true if the two input stack trace interfaces have the same content - */ + if (self._globalOptions.autoBreadcrumbs) self._instrumentBreadcrumbs(); + // Install all of the plugins + self._drainPlugins(); -function isSameStacktrace$1(stack1, stack2) { - if (isOnlyOneTruthy(stack1, stack2)) return false; - var frames1 = stack1.frames; - var frames2 = stack2.frames; // Exit early if frame count differs + self._isRavenInstalled = true; + } - if (frames1.length !== frames2.length) return false; // Iterate through every frame; bail out if anything differs + Error.stackTraceLimit = self._globalOptions.stackTraceLimit; + return this; + }, - var a, b; + /* + * Set the DSN (can be called multiple time unlike config) + * + * @param {string} dsn The public Sentry DSN + */ + setDSN: function(dsn) { + var self = this, + uri = self._parseDSN(dsn), + lastSlash = uri.path.lastIndexOf('/'), + path = uri.path.substr(1, lastSlash); - for (var i = 0; i < frames1.length; i++) { - a = frames1[i]; - b = frames2[i]; - if (a.filename !== b.filename || a.lineno !== b.lineno || a.colno !== b.colno || a['function'] !== b['function']) return false; - } + self._dsn = dsn; + self._globalKey = uri.user; + self._globalSecret = uri.pass && uri.pass.substr(1); + self._globalProject = uri.path.substr(lastSlash + 1); - return true; -} -/** - * Polyfill a method - * @param obj object e.g. `document` - * @param name method name present on object e.g. `addEventListener` - * @param replacement replacement function - * @param track {optional} record instrumentation to an array - */ + self._globalServer = self._getGlobalServer(uri); + self._globalEndpoint = + self._globalServer + '/' + path + 'api/' + self._globalProject + '/store/'; -function fill$1(obj, name, replacement, track) { - var orig = obj[name]; - obj[name] = replacement(orig); - obj[name].__raven__ = true; - obj[name].__orig__ = orig; + // Reset backoff state since we may be pointing at a + // new project/server + this._resetBackoff(); + }, - if (track) { - track.push([obj, name, orig]); - } -} -/** - * Join values in array - * @param input array of values to be joined together - * @param delimiter string to be placed in-between values - * @returns {string} - */ + /* + * Wrap code within a context so Raven can capture errors + * reliably across domains that is executed immediately. + * + * @param {object} options A specific set of options for this context [optional] + * @param {function} func The callback to be immediately executed within the context + * @param {array} args An array of arguments to be called with the callback [optional] + */ + context: function(options, func, args) { + if (isFunction(options)) { + args = func || []; + func = options; + options = undefined; + } + return this.wrap(options, func).apply(this, args); + }, -function safeJoin(input, delimiter) { - if (!isArray$1(input)) return ''; - var output = []; + /* + * Wrap code within a context and returns back a new function to be executed + * + * @param {object} options A specific set of options for this context [optional] + * @param {function} func The function to be wrapped in a new context + * @param {function} func A function to call before the try/catch wrapper [optional, private] + * @return {function} The newly wrapped functions with a context + */ + wrap: function(options, func, _before) { + var self = this; + // 1 argument has been passed, and it's not a function + // so just return it + if (isUndefined(func) && !isFunction(options)) { + return options; + } - for (var i = 0; i < input.length; i++) { + // options is optional + if (isFunction(options)) { + func = options; + options = undefined; + } + + // At this point, we've passed along 2 arguments, and the second one + // is not a function either, so we'll just return the second argument. + if (!isFunction(func)) { + return func; + } + + // We don't wanna wrap it twice! try { - output.push(String(input[i])); + if (func.__raven__) { + return func; + } + + // If this has already been wrapped in the past, return that + if (func.__raven_wrapper__) { + return func.__raven_wrapper__; + } } catch (e) { - output.push('[value cannot be serialized]'); + // Just accessing custom props in some Selenium environments + // can cause a "Permission denied" exception (see raven-js#495). + // Bail on wrapping and return the function as-is (defers to window.onerror). + return func; } - } - - return output.join(delimiter); -} -var utils = { - isObject: isObject$1, - isError: isError$1, - isErrorEvent: isErrorEvent$1, - isUndefined: isUndefined$1, - isFunction: isFunction$1, - isPlainObject: isPlainObject, - isString: isString$1, - isArray: isArray$1, - isEmptyObject: isEmptyObject$1, - supportsErrorEvent: supportsErrorEvent, - supportsFetch: supportsFetch$1, - wrappedCallback: wrappedCallback, - each: each$1, - objectMerge: objectMerge$1, - truncate: truncate$1, - objectFrozen: objectFrozen$1, - hasKey: hasKey$1, - joinRegExp: joinRegExp$1, - urlencode: urlencode$1, - uuid4: uuid4$1, - htmlTreeAsString: htmlTreeAsString$1, - htmlElementAsString: htmlElementAsString, - isSameException: isSameException$1, - isSameStacktrace: isSameStacktrace$1, - parseUrl: parseUrl$1, - fill: fill$1, - safeJoin: safeJoin -}; + function wrapped() { + var args = [], + i = arguments.length, + deep = !options || (options && options.deep !== false); -/* - TraceKit - Cross brower stack traces + if (_before && isFunction(_before)) { + _before.apply(this, arguments); + } - This was originally forked from github.com/occ/TraceKit, but has since been - largely re-written and is now maintained as part of raven-js. Tests for - this are in test/vendor. + // Recursively wrap all of a function's arguments that are + // functions themselves. + while (i--) args[i] = deep ? self.wrap(options, arguments[i]) : arguments[i]; - MIT license -*/ + try { + // Attempt to invoke user-land function + // NOTE: If you are a Sentry user, and you are seeing this stack frame, it + // means Raven caught an error invoking your application code. This is + // expected behavior and NOT indicative of a bug with Raven.js. + return func.apply(this, args); + } catch (e) { + self._ignoreNextOnError(); + self.captureException(e, options); + throw e; + } + } -var TraceKit = { - collectWindowErrors: true, - debug: false -}; // This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) + // copy over properties of the old function + for (var property in func) { + if (hasKey(func, property)) { + wrapped[property] = func[property]; + } + } + wrapped.prototype = func.prototype; -var _window$2 = typeof window !== 'undefined' ? window : typeof commonjsGlobal !== 'undefined' ? commonjsGlobal : typeof self !== 'undefined' ? self : {}; // global reference to slice + func.__raven_wrapper__ = wrapped; + // Signal that this function has been wrapped/filled already + // for both debugging and to prevent it to being wrapped/filled twice + wrapped.__raven__ = true; + wrapped.__orig__ = func; + return wrapped; + }, -var _slice = [].slice; -var UNKNOWN_FUNCTION = '?'; // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error#Error_types + /** + * Uninstalls the global error handler. + * + * @return {Raven} + */ + uninstall: function() { + TraceKit.report.uninstall(); -var ERROR_TYPES_RE = /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/; + this._detachPromiseRejectionHandler(); + this._unpatchFunctionToString(); + this._restoreBuiltIns(); + this._restoreConsole(); -function getLocationHref() { - if (typeof document === 'undefined' || document.location == null) return ''; - return document.location.href; -} -/** - * TraceKit.report: cross-browser processing of unhandled exceptions - * - * Syntax: - * TraceKit.report.subscribe(function(stackInfo) { ... }) - * TraceKit.report.unsubscribe(function(stackInfo) { ... }) - * TraceKit.report(exception) - * try { ...code... } catch(ex) { TraceKit.report(ex); } - * - * Supports: - * - Firefox: full stack trace with line numbers, plus column number - * on top frame; column number is not guaranteed - * - Opera: full stack trace with line and column numbers - * - Chrome: full stack trace with line and column numbers - * - Safari: line and column number for the top frame only; some frames - * may be missing, and column number is not guaranteed - * - IE: line and column number for the top frame only; some frames - * may be missing, and column number is not guaranteed - * - * In theory, TraceKit should work on all of the following versions: - * - IE5.5+ (only 8.0 tested) - * - Firefox 0.9+ (only 3.5+ tested) - * - Opera 7+ (only 10.50 tested; versions 9 and earlier may require - * Exceptions Have Stacktrace to be enabled in opera:config) - * - Safari 3+ (only 4+ tested) - * - Chrome 1+ (only 5+ tested) - * - Konqueror 3.5+ (untested) - * - * Requires TraceKit.computeStackTrace. - * - * Tries to catch all unhandled exceptions and report them to the - * subscribed handlers. Please note that TraceKit.report will rethrow the - * exception. This is REQUIRED in order to get a useful stack trace in IE. - * If the exception does not reach the top of the browser, you will only - * get a stack trace from the point where TraceKit.report was called. - * - * Handlers receive a stackInfo object as described in the - * TraceKit.computeStackTrace docs. - */ + Error.stackTraceLimit = this._originalErrorStackTraceLimit; + this._isRavenInstalled = false; + return this; + }, -TraceKit.report = function reportModuleWrapper() { - var handlers = [], - lastArgs = null, - lastException = null, - lastExceptionStack = null; /** - * Add a crash handler. - * @param {Function} handler - */ + * Callback used for `unhandledrejection` event + * + * @param {PromiseRejectionEvent} event An object containing + * promise: the Promise that was rejected + * reason: the value with which the Promise was rejected + * @return void + */ + _promiseRejectionHandler: function(event) { + this._logDebug('debug', 'Raven caught unhandled promise rejection:', event); + this.captureException(event.reason, { + extra: { + unhandledPromiseRejection: true + } + }); + }, - function subscribe(handler) { - installGlobalHandler(); - handlers.push(handler); - } /** - * Remove a crash handler. - * @param {Function} handler - */ + * Installs the global promise rejection handler. + * + * @return {raven} + */ + _attachPromiseRejectionHandler: function() { + this._promiseRejectionHandler = this._promiseRejectionHandler.bind(this); + _window.addEventListener && + _window.addEventListener('unhandledrejection', this._promiseRejectionHandler); + return this; + }, + /** + * Uninstalls the global promise rejection handler. + * + * @return {raven} + */ + _detachPromiseRejectionHandler: function() { + _window.removeEventListener && + _window.removeEventListener('unhandledrejection', this._promiseRejectionHandler); + return this; + }, - function unsubscribe(handler) { - for (var i = handlers.length - 1; i >= 0; --i) { - if (handlers[i] === handler) { - handlers.splice(i, 1); + /** + * Manually capture an exception and send it over to Sentry + * + * @param {error} ex An exception to be logged + * @param {object} options A specific set of options for this error [optional] + * @return {Raven} + */ + captureException: function(ex, options) { + options = objectMerge({trimHeadFrames: 0}, options ? options : {}); + + if (isErrorEvent(ex) && ex.error) { + // If it is an ErrorEvent with `error` property, extract it to get actual Error + ex = ex.error; + } else if (isError(ex)) { + // we have a real Error object + ex = ex; + } else if (isPlainObject(ex)) { + // If it is plain Object, serialize it manually and extract options + // This will allow us to group events based on top-level keys + // which is much better than creating new group when any key/value change + options = this._getCaptureExceptionOptionsFromPlainObject(options, ex); + ex = new Error(options.message); + } else { + // If none of previous checks were valid, then it means that + // it's not a plain Object + // it's not a valid ErrorEvent (one with an error property) + // it's not an Error + // So bail out and capture it as a simple message: + return this.captureMessage( + ex, + objectMerge(options, { + stacktrace: true, // if we fall back to captureMessage, default to attempting a new trace + trimHeadFrames: options.trimHeadFrames + 1 + }) + ); + } + + // Store the raw exception object for potential debugging and introspection + this._lastCapturedException = ex; + + // TraceKit.report will re-raise any exception passed to it, + // which means you have to wrap it in try/catch. Instead, we + // can wrap it here and only re-raise if TraceKit.report + // raises an exception different from the one we asked to + // report on. + try { + var stack = TraceKit.computeStackTrace(ex); + this._handleStackInfo(stack, options); + } catch (ex1) { + if (ex !== ex1) { + throw ex1; } } - } - /** - * Remove all crash handlers. - */ + return this; + }, - function unsubscribeAll() { - uninstallGlobalHandler(); - handlers = []; - } - /** - * Dispatch stack information to all handlers. - * @param {Object.} stack - */ - + _getCaptureExceptionOptionsFromPlainObject: function(currentOptions, ex) { + var exKeys = Object.keys(ex).sort(); + var options = objectMerge(currentOptions, { + message: + 'Non-Error exception captured with keys: ' + serializeKeysForMessage(exKeys), + fingerprint: [md5(exKeys)], + extra: currentOptions.extra || {} + }); + options.extra.__serialized__ = serializeException(ex); - function notifyHandlers(stack, isWindowError) { - var exception = null; + return options; + }, - if (isWindowError && !TraceKit.collectWindowErrors) { + /* + * Manually send a message to Sentry + * + * @param {string} msg A plain message to be captured in Sentry + * @param {object} options A specific set of options for this message [optional] + * @return {Raven} + */ + captureMessage: function(msg, options) { + // config() automagically converts ignoreErrors from a list to a RegExp so we need to test for an + // early call; we'll error on the side of logging anything called before configuration since it's + // probably something you should see: + if ( + !!this._globalOptions.ignoreErrors.test && + this._globalOptions.ignoreErrors.test(msg) + ) { return; } - for (var i in handlers) { - if (handlers.hasOwnProperty(i)) { - try { - handlers[i].apply(null, [stack].concat(_slice.call(arguments, 2))); - } catch (inner) { - exception = inner; - } - } - } + options = options || {}; + msg = msg + ''; // Make sure it's actually a string - if (exception) { - throw exception; + var data = objectMerge( + { + message: msg + }, + options + ); + + var ex; + // Generate a "synthetic" stack trace from this point. + // NOTE: If you are a Sentry user, and you are seeing this stack frame, it is NOT indicative + // of a bug with Raven.js. Sentry generates synthetic traces either by configuration, + // or if it catches a thrown object without a "stack" property. + try { + throw new Error(msg); + } catch (ex1) { + ex = ex1; } - } - var _oldOnerrorHandler, _onErrorHandlerInstalled; - /** - * Ensures all global unhandled exceptions are recorded. - * Supported by Gecko and IE. - * @param {string} msg Error message. - * @param {string} url URL of script that generated the exception. - * @param {(number|string)} lineNo The line number at which the error - * occurred. - * @param {?(number|string)} colNo The column number at which the error - * occurred. - * @param {?Error} ex The actual Error object. - */ - - - function traceKitWindowOnError(msg, url, lineNo, colNo, ex) { - var stack = null; // If 'ex' is ErrorEvent, get real Error from inside - - var exception = utils.isErrorEvent(ex) ? ex.error : ex; // If 'msg' is ErrorEvent, get real message from inside - - var message = utils.isErrorEvent(msg) ? msg.message : msg; + // null exception name so `Error` isn't prefixed to msg + ex.name = null; + var stack = TraceKit.computeStackTrace(ex); - if (lastExceptionStack) { - TraceKit.computeStackTrace.augmentStackTraceWithInitialElement(lastExceptionStack, url, lineNo, message); - processLastException(); - } else if (exception && utils.isError(exception)) { - // non-string `exception` arg; attempt to extract stack trace - // New chrome and blink send along a real error object - // Let's just report that like a normal error. - // See: https://mikewest.org/2013/08/debugging-runtime-errors-with-window-onerror - stack = TraceKit.computeStackTrace(exception); - notifyHandlers(stack, true); - } else { - var location = { - url: url, - line: lineNo, - column: colNo - }; - var name = undefined; - var groups; + // stack[0] is `throw new Error(msg)` call itself, we are interested in the frame that was just before that, stack[1] + var initialCall = isArray(stack.stack) && stack.stack[1]; - if ({}.toString.call(message) === '[object String]') { - var groups = message.match(ERROR_TYPES_RE); + // if stack[1] is `Raven.captureException`, it means that someone passed a string to it and we redirected that call + // to be handled by `captureMessage`, thus `initialCall` is the 3rd one, not 2nd + // initialCall => captureException(string) => captureMessage(string) + if (initialCall && initialCall.func === 'Raven.captureException') { + initialCall = stack.stack[2]; + } - if (groups) { - name = groups[1]; - message = groups[2]; - } - } + var fileurl = (initialCall && initialCall.url) || ''; - location.func = UNKNOWN_FUNCTION; - stack = { - name: name, - message: message, - url: getLocationHref(), - stack: [location] - }; - notifyHandlers(stack, true); + if ( + !!this._globalOptions.ignoreUrls.test && + this._globalOptions.ignoreUrls.test(fileurl) + ) { + return; } - if (_oldOnerrorHandler) { - return _oldOnerrorHandler.apply(this, arguments); + if ( + !!this._globalOptions.whitelistUrls.test && + !this._globalOptions.whitelistUrls.test(fileurl) + ) { + return; } - return false; - } + if (this._globalOptions.stacktrace || (options && options.stacktrace)) { + // fingerprint on msg, not stack trace (legacy behavior, could be revisited) + data.fingerprint = data.fingerprint == null ? msg : data.fingerprint; - function installGlobalHandler() { - if (_onErrorHandlerInstalled) { - return; - } + options = objectMerge( + { + trimHeadFrames: 0 + }, + options + ); + // Since we know this is a synthetic trace, the top frame (this function call) + // MUST be from Raven.js, so mark it for trimming + // We add to the trim counter so that callers can choose to trim extra frames, such + // as utility functions. + options.trimHeadFrames += 1; - _oldOnerrorHandler = _window$2.onerror; - _window$2.onerror = traceKitWindowOnError; - _onErrorHandlerInstalled = true; - } + var frames = this._prepareFrames(stack, options); + data.stacktrace = { + // Sentry expects frames oldest to newest + frames: frames.reverse() + }; + } - function uninstallGlobalHandler() { - if (!_onErrorHandlerInstalled) { - return; + // Make sure that fingerprint is always wrapped in an array + if (data.fingerprint) { + data.fingerprint = isArray(data.fingerprint) + ? data.fingerprint + : [data.fingerprint]; } - _window$2.onerror = _oldOnerrorHandler; - _onErrorHandlerInstalled = false; - _oldOnerrorHandler = undefined; - } + // Fire away! + this._send(data); - function processLastException() { - var _lastExceptionStack = lastExceptionStack, - _lastArgs = lastArgs; - lastArgs = null; - lastExceptionStack = null; - lastException = null; - notifyHandlers.apply(null, [_lastExceptionStack, false].concat(_lastArgs)); - } - /** - * Reports an unhandled Error to TraceKit. - * @param {Error} ex - * @param {?boolean} rethrow If false, do not re-throw the exception. - * Only used for window.onerror to not cause an infinite loop of - * rethrowing. - */ + return this; + }, + captureBreadcrumb: function(obj) { + var crumb = objectMerge( + { + timestamp: now() / 1000 + }, + obj + ); - function report(ex, rethrow) { - var args = _slice.call(arguments, 1); + if (isFunction(this._globalOptions.breadcrumbCallback)) { + var result = this._globalOptions.breadcrumbCallback(crumb); - if (lastExceptionStack) { - if (lastException === ex) { - return; // already caught by an inner catch block, ignore - } else { - processLastException(); + if (isObject(result) && !isEmptyObject(result)) { + crumb = result; + } else if (result === false) { + return this; } } - var stack = TraceKit.computeStackTrace(ex); - lastExceptionStack = stack; - lastException = ex; - lastArgs = args; // If the stack trace is incomplete, wait for 2 seconds for - // slow slow IE to see if onerror occurs or not before reporting - // this exception; otherwise, we will end up with an incomplete - // stack trace + this._breadcrumbs.push(crumb); + if (this._breadcrumbs.length > this._globalOptions.maxBreadcrumbs) { + this._breadcrumbs.shift(); + } + return this; + }, - setTimeout(function () { - if (lastException === ex) { - processLastException(); - } - }, stack.incomplete ? 2000 : 0); + addPlugin: function(plugin /*arg1, arg2, ... argN*/) { + var pluginArgs = [].slice.call(arguments, 1); - if (rethrow !== false) { - throw ex; // re-throw to propagate to the top level (and cause window.onerror) + this._plugins.push([plugin, pluginArgs]); + if (this._isRavenInstalled) { + this._drainPlugins(); } - } - report.subscribe = subscribe; - report.unsubscribe = unsubscribe; - report.uninstall = unsubscribeAll; - return report; -}(); -/** - * TraceKit.computeStackTrace: cross-browser stack traces in JavaScript - * - * Syntax: - * s = TraceKit.computeStackTrace(exception) // consider using TraceKit.report instead (see below) - * Returns: - * s.name - exception name - * s.message - exception message - * s.stack[i].url - JavaScript or HTML file URL - * s.stack[i].func - function name, or empty for anonymous functions (if guessing did not work) - * s.stack[i].args - arguments passed to the function, if known - * s.stack[i].line - line number, if known - * s.stack[i].column - column number, if known - * - * Supports: - * - Firefox: full stack trace with line numbers and unreliable column - * number on top frame - * - Opera 10: full stack trace with line and column numbers - * - Opera 9-: full stack trace with line numbers - * - Chrome: full stack trace with line and column numbers - * - Safari: line and column number for the topmost stacktrace element - * only - * - IE: no line numbers whatsoever - * - * Tries to guess names of anonymous functions by looking for assignments - * in the source code. In IE and Safari, we have to guess source file names - * by searching for function bodies inside all page scripts. This will not - * work for scripts that are loaded cross-domain. - * Here be dragons: some function names may be guessed incorrectly, and - * duplicate functions may be mismatched. - * - * TraceKit.computeStackTrace should only be used for tracing purposes. - * Logging of unhandled exceptions should be done with TraceKit.report, - * which builds on top of TraceKit.computeStackTrace and provides better - * IE support by utilizing the window.onerror event to retrieve information - * about the top of the stack. - * - * Note: In IE and Safari, no stack trace is recorded on the Error object, - * so computeStackTrace instead walks its *own* chain of callers. - * This means that: - * * in Safari, some methods may be missing from the stack trace; - * * in IE, the topmost function in the stack trace will always be the - * caller of computeStackTrace. - * - * This is okay for tracing (because you are likely to be calling - * computeStackTrace from the function you want to be the topmost element - * of the stack trace anyway), but not okay for logging unhandled - * exceptions (because your catch block will likely be far away from the - * inner function that actually caused the exception). - * - */ + return this; + }, + /* + * Set/clear a user to be sent along with the payload. + * + * @param {object} user An object representing user data [optional] + * @return {Raven} + */ + setUserContext: function(user) { + // Intentionally do not merge here since that's an unexpected behavior. + this._globalContext.user = user; -TraceKit.computeStackTrace = function computeStackTraceWrapper() { - // Contents of Exception in various browsers. - // - // SAFARI: - // ex.message = Can't find variable: qq - // ex.line = 59 - // ex.sourceId = 580238192 - // ex.sourceURL = http://... - // ex.expressionBeginOffset = 96 - // ex.expressionCaretOffset = 98 - // ex.expressionEndOffset = 98 - // ex.name = ReferenceError - // - // FIREFOX: - // ex.message = qq is not defined - // ex.fileName = http://... - // ex.lineNumber = 59 - // ex.columnNumber = 69 - // ex.stack = ...stack trace... (see the example below) - // ex.name = ReferenceError - // - // CHROME: - // ex.message = qq is not defined - // ex.name = ReferenceError - // ex.type = not_defined - // ex.arguments = ['aa'] - // ex.stack = ...stack trace... - // - // INTERNET EXPLORER: - // ex.message = ... - // ex.name = ReferenceError - // - // OPERA: - // ex.message = ...message... (see the example below) - // ex.name = ReferenceError - // ex.opera#sourceloc = 11 (pretty much useless, duplicates the info in ex.message) - // ex.stacktrace = n/a; see 'opera:config#UserPrefs|Exceptions Have Stacktrace' + return this; + }, - /** - * Computes stack trace information from the stack property. - * Chrome and Gecko use this property. - * @param {Error} ex - * @return {?Object.} Stack trace information. + /* + * Merge extra attributes to be sent along with the payload. + * + * @param {object} extra An object representing extra data [optional] + * @return {Raven} */ - function computeStackTraceFromStackProp(ex) { - if (typeof ex.stack === 'undefined' || !ex.stack) return; - var chrome = /^\s*at (.*?) ?\(((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i, - gecko = /^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|\[native).*?|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i, - winjs = /^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i, - // Used to additionally parse URL/line/column from eval frames - geckoEval = /(\S+) line (\d+)(?: > eval line \d+)* > eval/i, - chromeEval = /\((\S*)(?::(\d+))(?::(\d+))\)/, - lines = ex.stack.split('\n'), - stack = [], - submatch, - parts, - element, - reference = /^(.*) is undefined$/.exec(ex.message); - - for (var i = 0, j = lines.length; i < j; ++i) { - if (parts = chrome.exec(lines[i])) { - var isNative = parts[2] && parts[2].indexOf('native') === 0; // start of line + setExtraContext: function(extra) { + this._mergeContext('extra', extra); - var isEval = parts[2] && parts[2].indexOf('eval') === 0; // start of line + return this; + }, - if (isEval && (submatch = chromeEval.exec(parts[2]))) { - // throw out eval line/column and use top-most line/column number - parts[2] = submatch[1]; // url + /* + * Merge tags to be sent along with the payload. + * + * @param {object} tags An object representing tags [optional] + * @return {Raven} + */ + setTagsContext: function(tags) { + this._mergeContext('tags', tags); - parts[3] = submatch[2]; // line + return this; + }, - parts[4] = submatch[3]; // column - } + /* + * Clear all of the context. + * + * @return {Raven} + */ + clearContext: function() { + this._globalContext = {}; - element = { - url: !isNative ? parts[2] : null, - func: parts[1] || UNKNOWN_FUNCTION, - args: isNative ? [parts[2]] : [], - line: parts[3] ? +parts[3] : null, - column: parts[4] ? +parts[4] : null - }; - } else if (parts = winjs.exec(lines[i])) { - element = { - url: parts[2], - func: parts[1] || UNKNOWN_FUNCTION, - args: [], - line: +parts[3], - column: parts[4] ? +parts[4] : null - }; - } else if (parts = gecko.exec(lines[i])) { - var isEval = parts[3] && parts[3].indexOf(' > eval') > -1; - - if (isEval && (submatch = geckoEval.exec(parts[3]))) { - // throw out eval line/column and use top-most line number - parts[3] = submatch[1]; - parts[4] = submatch[2]; - parts[5] = null; // no column when eval - } else if (i === 0 && !parts[5] && typeof ex.columnNumber !== 'undefined') { - // FireFox uses this awesome columnNumber property for its top frame - // Also note, Firefox's column number is 0-based and everything else expects 1-based, - // so adding 1 - // NOTE: this hack doesn't work if top-most frame is eval - stack[0].column = ex.columnNumber + 1; - } - - element = { - url: parts[3], - func: parts[1] || UNKNOWN_FUNCTION, - args: parts[2] ? parts[2].split(',') : [], - line: parts[4] ? +parts[4] : null, - column: parts[5] ? +parts[5] : null - }; - } else { - continue; - } + return this; + }, - if (!element.func && element.line) { - element.func = UNKNOWN_FUNCTION; - } + /* + * Get a copy of the current context. This cannot be mutated. + * + * @return {object} copy of context + */ + getContext: function() { + // lol javascript + return JSON.parse(stringify(this._globalContext)); + }, - stack.push(element); - } + /* + * Set environment of application + * + * @param {string} environment Typically something like 'production'. + * @return {Raven} + */ + setEnvironment: function(environment) { + this._globalOptions.environment = environment; - if (!stack.length) { - return null; - } + return this; + }, - return { - name: ex.name, - message: ex.message, - url: getLocationHref(), - stack: stack - }; - } - /** - * Adds information about the first frame to incomplete stack traces. - * Safari and IE require this to get complete data on the first frame. - * @param {Object.} stackInfo Stack trace information from - * one of the compute* methods. - * @param {string} url The URL of the script that caused an error. - * @param {(number|string)} lineNo The line number of the script that - * caused an error. - * @param {string=} message The error generated by the browser, which - * hopefully contains the name of the object that caused the error. - * @return {boolean} Whether or not the stack information was - * augmented. + /* + * Set release version of application + * + * @param {string} release Typically something like a git SHA to identify version + * @return {Raven} */ + setRelease: function(release) { + this._globalOptions.release = release; + return this; + }, - function augmentStackTraceWithInitialElement(stackInfo, url, lineNo, message) { - var initial = { - url: url, - line: lineNo - }; + /* + * Set the dataCallback option + * + * @param {function} callback The callback to run which allows the + * data blob to be mutated before sending + * @return {Raven} + */ + setDataCallback: function(callback) { + var original = this._globalOptions.dataCallback; + this._globalOptions.dataCallback = keepOriginalCallback(original, callback); + return this; + }, - if (initial.url && initial.line) { - stackInfo.incomplete = false; + /* + * Set the breadcrumbCallback option + * + * @param {function} callback The callback to run which allows filtering + * or mutating breadcrumbs + * @return {Raven} + */ + setBreadcrumbCallback: function(callback) { + var original = this._globalOptions.breadcrumbCallback; + this._globalOptions.breadcrumbCallback = keepOriginalCallback(original, callback); + return this; + }, - if (!initial.func) { - initial.func = UNKNOWN_FUNCTION; - } + /* + * Set the shouldSendCallback option + * + * @param {function} callback The callback to run which allows + * introspecting the blob before sending + * @return {Raven} + */ + setShouldSendCallback: function(callback) { + var original = this._globalOptions.shouldSendCallback; + this._globalOptions.shouldSendCallback = keepOriginalCallback(original, callback); + return this; + }, - if (stackInfo.stack.length > 0) { - if (stackInfo.stack[0].url === initial.url) { - if (stackInfo.stack[0].line === initial.line) { - return false; // already in stack trace - } else if (!stackInfo.stack[0].line && stackInfo.stack[0].func === initial.func) { - stackInfo.stack[0].line = initial.line; - return false; - } - } - } + /** + * Override the default HTTP transport mechanism that transmits data + * to the Sentry server. + * + * @param {function} transport Function invoked instead of the default + * `makeRequest` handler. + * + * @return {Raven} + */ + setTransport: function(transport) { + this._globalOptions.transport = transport; - stackInfo.stack.unshift(initial); - stackInfo.partial = true; - return true; - } else { - stackInfo.incomplete = true; - } + return this; + }, - return false; - } - /** - * Computes stack trace information by walking the arguments.caller - * chain at the time the exception occurred. This will cause earlier - * frames to be missed but is the only way to get any stack trace in - * Safari and IE. The top frame is restored by - * {@link augmentStackTraceWithInitialElement}. - * @param {Error} ex - * @return {?Object.} Stack trace information. + /* + * Get the latest raw exception that was captured by Raven. + * + * @return {error} */ + lastException: function() { + return this._lastCapturedException; + }, + /* + * Get the last event id + * + * @return {string} + */ + lastEventId: function() { + return this._lastEventId; + }, - function computeStackTraceByWalkingCallerChain(ex, depth) { - var functionName = /function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i, - stack = [], - funcs = {}, - recursion = false, - parts, - item; - - for (var curr = computeStackTraceByWalkingCallerChain.caller; curr && !recursion; curr = curr.caller) { - if (curr === computeStackTrace || curr === TraceKit.report) { - // console.log('skipping internal function'); - continue; + /* + * Determine if Raven is setup and ready to go. + * + * @return {boolean} + */ + isSetup: function() { + if (!this._hasJSON) return false; // needs JSON support + if (!this._globalServer) { + if (!this.ravenNotConfiguredError) { + this.ravenNotConfiguredError = true; + this._logDebug('error', 'Error: Raven has not been configured.'); } + return false; + } + return true; + }, - item = { - url: null, - func: UNKNOWN_FUNCTION, - line: null, - column: null - }; + afterLoad: function() { + // TODO: remove window dependence? - if (curr.name) { - item.func = curr.name; - } else if (parts = functionName.exec(curr.toString())) { - item.func = parts[1]; - } + // Attempt to initialize Raven on load + var RavenConfig = _window.RavenConfig; + if (RavenConfig) { + this.config(RavenConfig.dsn, RavenConfig.config).install(); + } + }, - if (typeof item.func === 'undefined') { - try { - item.func = parts.input.substring(0, parts.input.indexOf('{')); - } catch (e) {} - } + showReportDialog: function(options) { + if ( + !_document // doesn't work without a document (React native) + ) + return; - if (funcs['' + curr]) { - recursion = true; - } else { - funcs['' + curr] = true; - } + options = options || {}; - stack.push(item); + var lastEventId = options.eventId || this.lastEventId(); + if (!lastEventId) { + throw new RavenConfigError('Missing eventId'); } - if (depth) { - // console.log('depth is ' + depth); - // console.log('stack is ' + stack.length); - stack.splice(0, depth); + var dsn = options.dsn || this._dsn; + if (!dsn) { + throw new RavenConfigError('Missing DSN'); } - var result = { - name: ex.name, - message: ex.message, - url: getLocationHref(), - stack: stack - }; - augmentStackTraceWithInitialElement(result, ex.sourceURL || ex.fileName, ex.line || ex.lineNumber, ex.message || ex.description); - return result; - } - /** - * Computes a stack trace for an exception. - * @param {Error} ex - * @param {(string|number)=} depth - */ + var encode = encodeURIComponent; + var qs = ''; + qs += '?eventId=' + encode(lastEventId); + qs += '&dsn=' + encode(dsn); + var user = options.user || this._globalContext.user; + if (user) { + if (user.name) qs += '&name=' + encode(user.name); + if (user.email) qs += '&email=' + encode(user.email); + } - function computeStackTrace(ex, depth) { - var stack = null; - depth = depth == null ? 0 : +depth; + var globalServer = this._getGlobalServer(this._parseDSN(dsn)); - try { - stack = computeStackTraceFromStackProp(ex); + var script = _document.createElement('script'); + script.async = true; + script.src = globalServer + '/api/embed/error-page/' + qs; + (_document.head || _document.body).appendChild(script); + }, - if (stack) { - return stack; + /**** Private functions ****/ + _ignoreNextOnError: function() { + var self = this; + this._ignoreOnError += 1; + setTimeout(function() { + // onerror should trigger before setTimeout + self._ignoreOnError -= 1; + }); + }, + + _triggerEvent: function(eventType, options) { + // NOTE: `event` is a native browser thing, so let's avoid conflicting wiht it + var evt, key; + + if (!this._hasDocument) return; + + options = options || {}; + + eventType = 'raven' + eventType.substr(0, 1).toUpperCase() + eventType.substr(1); + + if (_document.createEvent) { + evt = _document.createEvent('HTMLEvents'); + evt.initEvent(eventType, true, true); + } else { + evt = _document.createEventObject(); + evt.eventType = eventType; + } + + for (key in options) + if (hasKey(options, key)) { + evt[key] = options[key]; } - } catch (e) { - if (TraceKit.debug) { - throw e; + + if (_document.createEvent) { + // IE9 if standards + _document.dispatchEvent(evt); + } else { + // IE8 regardless of Quirks or Standards + // IE9 if quirks + try { + _document.fireEvent('on' + evt.eventType.toLowerCase(), evt); + } catch (e) { + // Do nothing } } + }, - try { - stack = computeStackTraceByWalkingCallerChain(ex, depth + 1); + /** + * Wraps addEventListener to capture UI breadcrumbs + * @param evtName the event name (e.g. "click") + * @returns {Function} + * @private + */ + _breadcrumbEventHandler: function(evtName) { + var self = this; + return function(evt) { + // reset keypress timeout; e.g. triggering a 'click' after + // a 'keypress' will reset the keypress debounce so that a new + // set of keypresses can be recorded + self._keypressTimeout = null; - if (stack) { - return stack; - } - } catch (e) { - if (TraceKit.debug) { - throw e; + // It's possible this handler might trigger multiple times for the same + // event (e.g. event propagation through node ancestors). Ignore if we've + // already captured the event. + if (self._lastCapturedEvent === evt) return; + + self._lastCapturedEvent = evt; + + // try/catch both: + // - accessing evt.target (see getsentry/raven-js#838, #768) + // - `htmlTreeAsString` because it's complex, and just accessing the DOM incorrectly + // can throw an exception in some circumstances. + var target; + try { + target = htmlTreeAsString(evt.target); + } catch (e) { + target = ''; } - } - return { - name: ex.name, - message: ex.message, - url: getLocationHref() + self.captureBreadcrumb({ + category: 'ui.' + evtName, // e.g. ui.click, ui.input + message: target + }); }; - } + }, - computeStackTrace.augmentStackTraceWithInitialElement = augmentStackTraceWithInitialElement; - computeStackTrace.computeStackTraceFromStackProp = computeStackTraceFromStackProp; - return computeStackTrace; -}(); + /** + * Wraps addEventListener to capture keypress UI events + * @returns {Function} + * @private + */ + _keypressEventHandler: function() { + var self = this, + debounceDuration = 1000; // milliseconds -var tracekit = TraceKit; + // TODO: if somehow user switches keypress target before + // debounce timeout is triggered, we will only capture + // a single breadcrumb from the FIRST target (acceptable?) + return function(evt) { + var target; + try { + target = evt.target; + } catch (e) { + // just accessing event properties can throw an exception in some rare circumstances + // see: https://github.com/getsentry/raven-js/issues/838 + return; + } + var tagName = target && target.tagName; -var stringify_1 = createCommonjsModule(function (module, exports) { - /* - json-stringify-safe - Like JSON.stringify, but doesn't throw on circular references. - - Originally forked from https://github.com/isaacs/json-stringify-safe - version 5.0.1 on 3/8/2017 and modified to handle Errors serialization - and IE8 compatibility. Tests for this are in test/vendor. - - ISC license: https://github.com/isaacs/json-stringify-safe/blob/master/LICENSE - */ - exports = module.exports = stringify; - exports.getSerialize = serializer; - - function indexOf(haystack, needle) { - for (var i = 0; i < haystack.length; ++i) { - if (haystack[i] === needle) return i; - } - - return -1; - } + // only consider keypress events on actual input elements + // this will disregard keypresses targeting body (e.g. tabbing + // through elements, hotkeys, etc) + if ( + !tagName || + (tagName !== 'INPUT' && tagName !== 'TEXTAREA' && !target.isContentEditable) + ) + return; - function stringify(obj, replacer, spaces, cycleReplacer) { - return JSON.stringify(obj, serializer(replacer, cycleReplacer), spaces); - } // https://github.com/ftlabs/js-abbreviate/blob/fa709e5f139e7770a71827b1893f22418097fbda/index.js#L95-L106 + // record first keypress in a series, but ignore subsequent + // keypresses until debounce clears + var timeout = self._keypressTimeout; + if (!timeout) { + self._breadcrumbEventHandler('input')(evt); + } + clearTimeout(timeout); + self._keypressTimeout = setTimeout(function() { + self._keypressTimeout = null; + }, debounceDuration); + }; + }, + /** + * Captures a breadcrumb of type "navigation", normalizing input URLs + * @param to the originating URL + * @param from the target URL + * @private + */ + _captureUrlChange: function(from, to) { + var parsedLoc = parseUrl(this._location.href); + var parsedTo = parseUrl(to); + var parsedFrom = parseUrl(from); - function stringifyError(value) { - var err = { - // These properties are implemented as magical getters and don't show up in for in - stack: value.stack, - message: value.message, - name: value.name - }; + // because onpopstate only tells you the "new" (to) value of location.href, and + // not the previous (from) value, we need to track the value of the current URL + // state ourselves + this._lastHref = to; - for (var i in value) { - if (Object.prototype.hasOwnProperty.call(value, i)) { - err[i] = value[i]; + // Use only the path component of the URL if the URL matches the current + // document (almost all the time when using pushState) + if (parsedLoc.protocol === parsedTo.protocol && parsedLoc.host === parsedTo.host) + to = parsedTo.relative; + if (parsedLoc.protocol === parsedFrom.protocol && parsedLoc.host === parsedFrom.host) + from = parsedFrom.relative; + + this.captureBreadcrumb({ + category: 'navigation', + data: { + to: to, + from: from + } + }); + }, + + _patchFunctionToString: function() { + var self = this; + self._originalFunctionToString = Function.prototype.toString; + // eslint-disable-next-line no-extend-native + Function.prototype.toString = function() { + if (typeof this === 'function' && this.__raven__) { + return self._originalFunctionToString.apply(this.__orig__, arguments); } + return self._originalFunctionToString.apply(this, arguments); + }; + }, + + _unpatchFunctionToString: function() { + if (this._originalFunctionToString) { + // eslint-disable-next-line no-extend-native + Function.prototype.toString = this._originalFunctionToString; } + }, - return err; - } + /** + * Wrap timer functions and event targets to catch errors and provide + * better metadata. + */ + _instrumentTryCatch: function() { + var self = this; - function serializer(replacer, cycleReplacer) { - var stack = []; - var keys = []; + var wrappedBuiltIns = self._wrappedBuiltIns; - if (cycleReplacer == null) { - cycleReplacer = function cycleReplacer(key, value) { - if (stack[0] === value) { - return '[Circular ~]'; + function wrapTimeFn(orig) { + return function(fn, t) { + // preserve arity + // Make a copy of the arguments to prevent deoptimization + // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments + var args = new Array(arguments.length); + for (var i = 0; i < args.length; ++i) { + args[i] = arguments[i]; + } + var originalCallback = args[0]; + if (isFunction(originalCallback)) { + args[0] = self.wrap(originalCallback); } - return '[Circular ~.' + keys.slice(0, indexOf(stack, value)).join('.') + ']'; + // IE < 9 doesn't support .call/.apply on setInterval/setTimeout, but it + // also supports only two arguments and doesn't care what this is, so we + // can just call the original function directly. + if (orig.apply) { + return orig.apply(this, args); + } else { + return orig(args[0], args[1]); + } }; } - return function (key, value) { - if (stack.length > 0) { - var thisPos = indexOf(stack, this); - ~thisPos ? stack.splice(thisPos + 1) : stack.push(this); - ~thisPos ? keys.splice(thisPos, Infinity, key) : keys.push(key); - - if (~indexOf(stack, value)) { - value = cycleReplacer.call(this, key, value); - } - } else { - stack.push(value); - } + var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; - return replacer == null ? value instanceof Error ? stringifyError(value) : value : replacer.call(this, key, value); - }; - } -}); -var stringify_2 = stringify_1.getSerialize; + function wrapEventTarget(global) { + var proto = _window[global] && _window[global].prototype; + if (proto && proto.hasOwnProperty && proto.hasOwnProperty('addEventListener')) { + fill( + proto, + 'addEventListener', + function(orig) { + return function(evtName, fn, capture, secure) { + // preserve arity + try { + if (fn && fn.handleEvent) { + fn.handleEvent = self.wrap(fn.handleEvent); + } + } catch (err) { + // can sometimes get 'Permission denied to access property "handle Event' + } -function RavenConfigError(message) { - this.name = 'RavenConfigError'; - this.message = message; -} + // More breadcrumb DOM capture ... done here and not in `_instrumentBreadcrumbs` + // so that we don't have more than one wrapper function + var before, clickHandler, keypressHandler; + + if ( + autoBreadcrumbs && + autoBreadcrumbs.dom && + (global === 'EventTarget' || global === 'Node') + ) { + // NOTE: generating multiple handlers per addEventListener invocation, should + // revisit and verify we can just use one (almost certainly) + clickHandler = self._breadcrumbEventHandler('click'); + keypressHandler = self._keypressEventHandler(); + before = function(evt) { + // need to intercept every DOM event in `before` argument, in case that + // same wrapped method is re-used for different events (e.g. mousemove THEN click) + // see #724 + if (!evt) return; + + var eventType; + try { + eventType = evt.type; + } catch (e) { + // just accessing event properties can throw an exception in some rare circumstances + // see: https://github.com/getsentry/raven-js/issues/838 + return; + } + if (eventType === 'click') return clickHandler(evt); + else if (eventType === 'keypress') return keypressHandler(evt); + }; + } + return orig.call( + this, + evtName, + self.wrap(fn, undefined, before), + capture, + secure + ); + }; + }, + wrappedBuiltIns + ); + fill( + proto, + 'removeEventListener', + function(orig) { + return function(evt, fn, capture, secure) { + try { + fn = fn && (fn.__raven_wrapper__ ? fn.__raven_wrapper__ : fn); + } catch (e) { + // ignore, accessing __raven_wrapper__ will throw in some Selenium environments + } + return orig.call(this, evt, fn, capture, secure); + }; + }, + wrappedBuiltIns + ); + } + } -RavenConfigError.prototype = new Error(); -RavenConfigError.prototype.constructor = RavenConfigError; -var configError = RavenConfigError; + fill(_window, 'setTimeout', wrapTimeFn, wrappedBuiltIns); + fill(_window, 'setInterval', wrapTimeFn, wrappedBuiltIns); + if (_window.requestAnimationFrame) { + fill( + _window, + 'requestAnimationFrame', + function(orig) { + return function(cb) { + return orig(self.wrap(cb)); + }; + }, + wrappedBuiltIns + ); + } -var wrapMethod = function wrapMethod(console, level, callback) { - var originalConsoleLevel = console[level]; - var originalConsole = console; + // event targets borrowed from bugsnag-js: + // https://github.com/bugsnag/bugsnag-js/blob/master/src/bugsnag.js#L666 + var eventTargets = [ + 'EventTarget', + 'Window', + 'Node', + 'ApplicationCache', + 'AudioTrackList', + 'ChannelMergerNode', + 'CryptoOperation', + 'EventSource', + 'FileReader', + 'HTMLUnknownElement', + 'IDBDatabase', + 'IDBRequest', + 'IDBTransaction', + 'KeyOperation', + 'MediaController', + 'MessagePort', + 'ModalWindow', + 'Notification', + 'SVGElementInstance', + 'Screen', + 'TextTrack', + 'TextTrackCue', + 'TextTrackList', + 'WebSocket', + 'WebSocketWorker', + 'Worker', + 'XMLHttpRequest', + 'XMLHttpRequestEventTarget', + 'XMLHttpRequestUpload' + ]; + for (var i = 0; i < eventTargets.length; i++) { + wrapEventTarget(eventTargets[i]); + } + }, - if (!(level in console)) { - return; - } + /** + * Instrument browser built-ins w/ breadcrumb capturing + * - XMLHttpRequests + * - DOM interactions (click/typing) + * - window.location changes + * - console + * + * Can be disabled or individually configured via the `autoBreadcrumbs` config option + */ + _instrumentBreadcrumbs: function() { + var self = this; + var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; - var sentryLevel = level === 'warn' ? 'warning' : level; + var wrappedBuiltIns = self._wrappedBuiltIns; - console[level] = function () { - var args = [].slice.call(arguments); - var msg = utils.safeJoin(args, ' '); - var data = { - level: sentryLevel, - logger: 'console', - extra: { - arguments: args + function wrapProp(prop, xhr) { + if (prop in xhr && isFunction(xhr[prop])) { + fill(xhr, prop, function(orig) { + return self.wrap(orig); + }); // intentionally don't track filled methods on XHR instances } - }; + } - if (level === 'assert') { - if (args[0] === false) { - // Default browsers message - msg = 'Assertion failed: ' + (utils.safeJoin(args.slice(1), ' ') || 'console.assert'); - data.extra.arguments = args.slice(1); - callback && callback(msg, data); - } - } else { - callback && callback(msg, data); - } // this fails for some browsers. :( + if (autoBreadcrumbs.xhr && 'XMLHttpRequest' in _window) { + var xhrproto = _window.XMLHttpRequest && _window.XMLHttpRequest.prototype; + fill( + xhrproto, + 'open', + function(origOpen) { + return function(method, url) { + // preserve arity + // if Sentry key appears in URL, don't capture + if (isString(url) && url.indexOf(self._globalKey) === -1) { + this.__raven_xhr = { + method: method, + url: url, + status_code: null + }; + } - if (originalConsoleLevel) { - // IE9 doesn't allow calling apply on console functions directly - // See: https://stackoverflow.com/questions/5472938/does-ie9-support-console-log-and-is-it-a-real-function#answer-5473193 - Function.prototype.apply.call(originalConsoleLevel, originalConsole, args); - } - }; -}; + return origOpen.apply(this, arguments); + }; + }, + wrappedBuiltIns + ); + + fill( + xhrproto, + 'send', + function(origSend) { + return function() { + // preserve arity + var xhr = this; -var console$1 = { - wrapMethod: wrapMethod -}; - -/*global XDomainRequest:false */ + function onreadystatechangeHandler() { + if (xhr.__raven_xhr && xhr.readyState === 4) { + try { + // touching statusCode in some platforms throws + // an exception + xhr.__raven_xhr.status_code = xhr.status; + } catch (e) { + /* do nothing */ + } -var isError = utils.isError; -var isObject = utils.isObject; -var isErrorEvent = utils.isErrorEvent; -var isUndefined = utils.isUndefined; -var isFunction = utils.isFunction; -var isString = utils.isString; -var isArray = utils.isArray; -var isEmptyObject = utils.isEmptyObject; -var each = utils.each; -var objectMerge = utils.objectMerge; -var truncate = utils.truncate; -var objectFrozen = utils.objectFrozen; -var hasKey = utils.hasKey; -var joinRegExp = utils.joinRegExp; -var urlencode = utils.urlencode; -var uuid4 = utils.uuid4; -var htmlTreeAsString = utils.htmlTreeAsString; -var isSameException = utils.isSameException; -var isSameStacktrace = utils.isSameStacktrace; -var parseUrl = utils.parseUrl; -var fill = utils.fill; -var supportsFetch = utils.supportsFetch; -var wrapConsoleMethod = console$1.wrapMethod; -var dsnKeys = 'source protocol user pass host port path'.split(' '); -var dsnPattern = /^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/; + self.captureBreadcrumb({ + type: 'http', + category: 'xhr', + data: xhr.__raven_xhr + }); + } + } -function now() { - return +new Date(); -} // This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) + var props = ['onload', 'onerror', 'onprogress']; + for (var j = 0; j < props.length; j++) { + wrapProp(props[j], xhr); + } + if ('onreadystatechange' in xhr && isFunction(xhr.onreadystatechange)) { + fill( + xhr, + 'onreadystatechange', + function(orig) { + return self.wrap(orig, undefined, onreadystatechangeHandler); + } /* intentionally don't track this instrumentation */ + ); + } else { + // if onreadystatechange wasn't actually set by the page on this xhr, we + // are free to set our own and capture the breadcrumb + xhr.onreadystatechange = onreadystatechangeHandler; + } -var _window$1 = typeof window !== 'undefined' ? window : typeof commonjsGlobal !== 'undefined' ? commonjsGlobal : typeof self !== 'undefined' ? self : {}; + return origSend.apply(this, arguments); + }; + }, + wrappedBuiltIns + ); + } -var _document = _window$1.document; -var _navigator = _window$1.navigator; + if (autoBreadcrumbs.xhr && supportsFetch()) { + fill( + _window, + 'fetch', + function(origFetch) { + return function() { + // preserve arity + // Make a copy of the arguments to prevent deoptimization + // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments + var args = new Array(arguments.length); + for (var i = 0; i < args.length; ++i) { + args[i] = arguments[i]; + } -function keepOriginalCallback(original, callback) { - return isFunction(callback) ? function (data) { - return callback(data, original); - } : callback; -} // First, check for JSON support -// If there is no JSON, we no-op the core features of Raven -// since JSON is required to encode the payload + var fetchInput = args[0]; + var method = 'GET'; + var url; + if (typeof fetchInput === 'string') { + url = fetchInput; + } else if ('Request' in _window && fetchInput instanceof _window.Request) { + url = fetchInput.url; + if (fetchInput.method) { + method = fetchInput.method; + } + } else { + url = '' + fetchInput; + } -function Raven$1() { - this._hasJSON = !!(_typeof(JSON) === 'object' && JSON.stringify); // Raven can run in contexts where there's no document (react-native) + // if Sentry key appears in URL, don't capture, as it's our own request + if (url.indexOf(self._globalKey) !== -1) { + return origFetch.apply(this, args); + } - this._hasDocument = !isUndefined(_document); - this._hasNavigator = !isUndefined(_navigator); - this._lastCapturedException = null; - this._lastData = null; - this._lastEventId = null; - this._globalServer = null; - this._globalKey = null; - this._globalProject = null; - this._globalContext = {}; - this._globalOptions = { - // SENTRY_RELEASE can be injected by https://github.com/getsentry/sentry-webpack-plugin - release: _window$1.SENTRY_RELEASE && _window$1.SENTRY_RELEASE.id, - logger: 'javascript', - ignoreErrors: [], - ignoreUrls: [], - whitelistUrls: [], - includePaths: [], - headers: null, - collectWindowErrors: true, - maxMessageLength: 0, - // By default, truncates URL values to 250 chars - maxUrlLength: 250, - stackTraceLimit: 50, - autoBreadcrumbs: true, - instrument: true, - sampleRate: 1 - }; - this._fetchDefaults = { - method: 'POST', - keepalive: true, - referrerPolicy: 'origin' - }; - this._ignoreOnError = 0; - this._isRavenInstalled = false; - this._originalErrorStackTraceLimit = Error.stackTraceLimit; // capture references to window.console *and* all its methods first - // before the console plugin has a chance to monkey patch + if (args[1] && args[1].method) { + method = args[1].method; + } - this._originalConsole = _window$1.console || {}; - this._originalConsoleMethods = {}; - this._plugins = []; - this._startTime = now(); - this._wrappedBuiltIns = []; - this._breadcrumbs = []; - this._lastCapturedEvent = null; - this._keypressTimeout; - this._location = _window$1.location; - this._lastHref = this._location && this._location.href; + var fetchData = { + method: method, + url: url, + status_code: null + }; - this._resetBackoff(); // eslint-disable-next-line guard-for-in + return origFetch + .apply(this, args) + .then(function(response) { + fetchData.status_code = response.status; + + self.captureBreadcrumb({ + type: 'http', + category: 'fetch', + data: fetchData + }); + + return response; + }) + ['catch'](function(err) { + // if there is an error performing the request + self.captureBreadcrumb({ + type: 'http', + category: 'fetch', + data: fetchData, + level: 'error' + }); + + throw err; + }); + }; + }, + wrappedBuiltIns + ); + } + // Capture breadcrumbs from any click that is unhandled / bubbled up all the way + // to the document. Do this before we instrument addEventListener. + if (autoBreadcrumbs.dom && this._hasDocument) { + if (_document.addEventListener) { + _document.addEventListener('click', self._breadcrumbEventHandler('click'), false); + _document.addEventListener('keypress', self._keypressEventHandler(), false); + } else if (_document.attachEvent) { + // IE8 Compatibility + _document.attachEvent('onclick', self._breadcrumbEventHandler('click')); + _document.attachEvent('onkeypress', self._keypressEventHandler()); + } + } - for (var method in this._originalConsole) { - this._originalConsoleMethods[method] = this._originalConsole[method]; - } -} -/* - * The core Raven singleton - * - * @this {Raven} - */ + // record navigation (URL) changes + // NOTE: in Chrome App environment, touching history.pushState, *even inside + // a try/catch block*, will cause Chrome to output an error to console.error + // borrowed from: https://github.com/angular/angular.js/pull/13945/files + var chrome = _window.chrome; + var isChromePackagedApp = chrome && chrome.app && chrome.app.runtime; + var hasPushAndReplaceState = + !isChromePackagedApp && + _window.history && + history.pushState && + history.replaceState; + if (autoBreadcrumbs.location && hasPushAndReplaceState) { + // TODO: remove onpopstate handler on uninstall() + var oldOnPopState = _window.onpopstate; + _window.onpopstate = function() { + var currentHref = self._location.href; + self._captureUrlChange(self._lastHref, currentHref); + if (oldOnPopState) { + return oldOnPopState.apply(this, arguments); + } + }; -Raven$1.prototype = { - // Hardcode version string so that raven source can be loaded directly via - // webpack (using a build step causes webpack #1617). Grunt verifies that - // this value matches package.json during build. - // See: https://github.com/getsentry/raven-js/issues/465 - VERSION: '3.22.2', - debug: false, - TraceKit: tracekit, - // alias to TraceKit + var historyReplacementFunction = function(origHistFunction) { + // note history.pushState.length is 0; intentionally not declaring + // params to preserve 0 arity + return function(/* state, title, url */) { + var url = arguments.length > 2 ? arguments[2] : undefined; - /* - * Configure Raven with a DSN and extra options - * - * @param {string} dsn The public Sentry DSN - * @param {object} options Set of global options [optional] - * @return {Raven} - */ - config: function config(dsn, options) { - var self = this; + // url argument is optional + if (url) { + // coerce to string (this is what pushState does) + self._captureUrlChange(self._lastHref, url + ''); + } - if (self._globalServer) { - this._logDebug('error', 'Error: Raven has already been configured'); + return origHistFunction.apply(this, arguments); + }; + }; - return self; + fill(history, 'pushState', historyReplacementFunction, wrappedBuiltIns); + fill(history, 'replaceState', historyReplacementFunction, wrappedBuiltIns); } - if (!dsn) return self; - var globalOptions = self._globalOptions; // merge in options + if (autoBreadcrumbs.console && 'console' in _window && console.log) { + // console + var consoleMethodCallback = function(msg, data) { + self.captureBreadcrumb({ + message: msg, + level: data.level, + category: 'console' + }); + }; - if (options) { - each(options, function (key, value) { - // tags and extra are special and need to be put into context - if (key === 'tags' || key === 'extra' || key === 'user') { - self._globalContext[key] = value; - } else { - globalOptions[key] = value; - } + each(['debug', 'info', 'warn', 'error', 'log'], function(_, level) { + wrapConsoleMethod(console, level, consoleMethodCallback); }); } + }, - self.setDSN(dsn); // "Script error." is hard coded into browsers for errors that it can't read. - // this is the result of a script being pulled in from an external domain and CORS. - - globalOptions.ignoreErrors.push(/^Script error\.?$/); - globalOptions.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/); // join regexp rules into one big rule - - globalOptions.ignoreErrors = joinRegExp(globalOptions.ignoreErrors); - globalOptions.ignoreUrls = globalOptions.ignoreUrls.length ? joinRegExp(globalOptions.ignoreUrls) : false; - globalOptions.whitelistUrls = globalOptions.whitelistUrls.length ? joinRegExp(globalOptions.whitelistUrls) : false; - globalOptions.includePaths = joinRegExp(globalOptions.includePaths); - globalOptions.maxBreadcrumbs = Math.max(0, Math.min(globalOptions.maxBreadcrumbs || 100, 100)); // default and hard limit is 100 + _restoreBuiltIns: function() { + // restore any wrapped builtins + var builtin; + while (this._wrappedBuiltIns.length) { + builtin = this._wrappedBuiltIns.shift(); - var autoBreadcrumbDefaults = { - xhr: true, - console: true, - dom: true, - location: true, - sentry: true - }; - var autoBreadcrumbs = globalOptions.autoBreadcrumbs; + var obj = builtin[0], + name = builtin[1], + orig = builtin[2]; - if ({}.toString.call(autoBreadcrumbs) === '[object Object]') { - autoBreadcrumbs = objectMerge(autoBreadcrumbDefaults, autoBreadcrumbs); - } else if (autoBreadcrumbs !== false) { - autoBreadcrumbs = autoBreadcrumbDefaults; + obj[name] = orig; } + }, - globalOptions.autoBreadcrumbs = autoBreadcrumbs; - var instrumentDefaults = { - tryCatch: true - }; - var instrument = globalOptions.instrument; - - if ({}.toString.call(instrument) === '[object Object]') { - instrument = objectMerge(instrumentDefaults, instrument); - } else if (instrument !== false) { - instrument = instrumentDefaults; + _restoreConsole: function() { + // eslint-disable-next-line guard-for-in + for (var method in this._originalConsoleMethods) { + this._originalConsole[method] = this._originalConsoleMethods[method]; } - - globalOptions.instrument = instrument; - tracekit.collectWindowErrors = !!globalOptions.collectWindowErrors; // return for chaining - - return self; }, - /* - * Installs a global window.onerror error handler - * to capture and report uncaught exceptions. - * At this point, install() is required to be called due - * to the way TraceKit is set up. - * - * @return {Raven} - */ - install: function install() { + _drainPlugins: function() { var self = this; - if (self.isSetup() && !self._isRavenInstalled) { - tracekit.report.subscribe(function () { - self._handleOnErrorStackInfo.apply(self, arguments); - }); + // FIX ME TODO + each(this._plugins, function(_, plugin) { + var installer = plugin[0]; + var args = plugin[1]; + installer.apply(self, [self].concat(args)); + }); + }, - self._patchFunctionToString(); + _parseDSN: function(str) { + var m = dsnPattern.exec(str), + dsn = {}, + i = 7; - if (self._globalOptions.instrument && self._globalOptions.instrument.tryCatch) { - self._instrumentTryCatch(); - } + try { + while (i--) dsn[dsnKeys[i]] = m[i] || ''; + } catch (e) { + throw new RavenConfigError('Invalid DSN: ' + str); + } - if (self._globalOptions.autoBreadcrumbs) self._instrumentBreadcrumbs(); // Install all of the plugins + if (dsn.pass && !this._globalOptions.allowSecretKey) { + throw new RavenConfigError( + 'Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key' + ); + } - self._drainPlugins(); + return dsn; + }, - self._isRavenInstalled = true; + _getGlobalServer: function(uri) { + // assemble the endpoint from the uri pieces + var globalServer = '//' + uri.host + (uri.port ? ':' + uri.port : ''); + + if (uri.protocol) { + globalServer = uri.protocol + ':' + globalServer; } + return globalServer; + }, - Error.stackTraceLimit = self._globalOptions.stackTraceLimit; - return this; + _handleOnErrorStackInfo: function() { + // if we are intentionally ignoring errors via onerror, bail out + if (!this._ignoreOnError) { + this._handleStackInfo.apply(this, arguments); + } }, - /* - * Set the DSN (can be called multiple time unlike config) - * - * @param {string} dsn The public Sentry DSN - */ - setDSN: function setDSN(dsn) { - var self = this, - uri = self._parseDSN(dsn), - lastSlash = uri.path.lastIndexOf('/'), - path = uri.path.substr(1, lastSlash); + _handleStackInfo: function(stackInfo, options) { + var frames = this._prepareFrames(stackInfo, options); - self._dsn = dsn; - self._globalKey = uri.user; - self._globalSecret = uri.pass && uri.pass.substr(1); - self._globalProject = uri.path.substr(lastSlash + 1); - self._globalServer = self._getGlobalServer(uri); - self._globalEndpoint = self._globalServer + '/' + path + 'api/' + self._globalProject + '/store/'; // Reset backoff state since we may be pointing at a - // new project/server + this._triggerEvent('handle', { + stackInfo: stackInfo, + options: options + }); - this._resetBackoff(); + this._processException( + stackInfo.name, + stackInfo.message, + stackInfo.url, + stackInfo.lineno, + frames, + options + ); }, - /* - * Wrap code within a context so Raven can capture errors - * reliably across domains that is executed immediately. - * - * @param {object} options A specific set of options for this context [optional] - * @param {function} func The callback to be immediately executed within the context - * @param {array} args An array of arguments to be called with the callback [optional] - */ - context: function context(options, func, args) { - if (isFunction(options)) { - args = func || []; - func = options; - options = undefined; - } + _prepareFrames: function(stackInfo, options) { + var self = this; + var frames = []; + if (stackInfo.stack && stackInfo.stack.length) { + each(stackInfo.stack, function(i, stack) { + var frame = self._normalizeFrame(stack, stackInfo.url); + if (frame) { + frames.push(frame); + } + }); - return this.wrap(options, func).apply(this, args); + // e.g. frames captured via captureMessage throw + if (options && options.trimHeadFrames) { + for (var j = 0; j < options.trimHeadFrames && j < frames.length; j++) { + frames[j].in_app = false; + } + } + } + frames = frames.slice(0, this._globalOptions.stackTraceLimit); + return frames; }, - /* - * Wrap code within a context and returns back a new function to be executed - * - * @param {object} options A specific set of options for this context [optional] - * @param {function} func The function to be wrapped in a new context - * @param {function} func A function to call before the try/catch wrapper [optional, private] - * @return {function} The newly wrapped functions with a context - */ - wrap: function wrap(options, func, _before) { - var self = this; // 1 argument has been passed, and it's not a function - // so just return it - - if (isUndefined(func) && !isFunction(options)) { - return options; - } // options is optional - - - if (isFunction(options)) { - func = options; - options = undefined; - } // At this point, we've passed along 2 arguments, and the second one - // is not a function either, so we'll just return the second argument. + _normalizeFrame: function(frame, stackInfoUrl) { + // normalize the frames data + var normalized = { + filename: frame.url, + lineno: frame.line, + colno: frame.column, + function: frame.func || '?' + }; + // Case when we don't have any information about the error + // E.g. throwing a string or raw object, instead of an `Error` in Firefox + // Generating synthetic error doesn't add any value here + // + // We should probably somehow let a user know that they should fix their code + if (!frame.url) { + normalized.filename = stackInfoUrl; // fallback to whole stacks url from onerror handler + } - if (!isFunction(func)) { - return func; - } // We don't wanna wrap it twice! + normalized.in_app = !// determine if an exception came from outside of our app + // first we check the global includePaths list. + ( + (!!this._globalOptions.includePaths.test && + !this._globalOptions.includePaths.test(normalized.filename)) || + // Now we check for fun, if the function name is Raven or TraceKit + /(Raven|TraceKit)\./.test(normalized['function']) || + // finally, we do a last ditch effort and check for raven.min.js + /raven\.(min\.)?js$/.test(normalized.filename) + ); + return normalized; + }, - try { - if (func.__raven__) { - return func; - } // If this has already been wrapped in the past, return that + _processException: function(type, message, fileurl, lineno, frames, options) { + var prefixedMessage = (type ? type + ': ' : '') + (message || ''); + if ( + !!this._globalOptions.ignoreErrors.test && + (this._globalOptions.ignoreErrors.test(message) || + this._globalOptions.ignoreErrors.test(prefixedMessage)) + ) { + return; + } + var stacktrace; - if (func.__raven_wrapper__) { - return func.__raven_wrapper__; - } - } catch (e) { - // Just accessing custom props in some Selenium environments - // can cause a "Permission denied" exception (see raven-js#495). - // Bail on wrapping and return the function as-is (defers to window.onerror). - return func; + if (frames && frames.length) { + fileurl = frames[0].filename || fileurl; + // Sentry expects frames oldest to newest + // and JS sends them as newest to oldest + frames.reverse(); + stacktrace = {frames: frames}; + } else if (fileurl) { + stacktrace = { + frames: [ + { + filename: fileurl, + lineno: lineno, + in_app: true + } + ] + }; } - function wrapped() { - var args = [], - i = arguments.length, - deep = !options || options && options.deep !== false; + if ( + !!this._globalOptions.ignoreUrls.test && + this._globalOptions.ignoreUrls.test(fileurl) + ) { + return; + } - if (_before && isFunction(_before)) { - _before.apply(this, arguments); - } // Recursively wrap all of a function's arguments that are - // functions themselves. + if ( + !!this._globalOptions.whitelistUrls.test && + !this._globalOptions.whitelistUrls.test(fileurl) + ) { + return; + } + var data = objectMerge( + { + // sentry.interfaces.Exception + exception: { + values: [ + { + type: type, + value: message, + stacktrace: stacktrace + } + ] + }, + culprit: fileurl + }, + options + ); - while (i--) { - args[i] = deep ? self.wrap(options, arguments[i]) : arguments[i]; - } + // Fire away! + this._send(data); + }, - try { - // Attempt to invoke user-land function - // NOTE: If you are a Sentry user, and you are seeing this stack frame, it - // means Raven caught an error invoking your application code. This is - // expected behavior and NOT indicative of a bug with Raven.js. - return func.apply(this, args); - } catch (e) { - self._ignoreNextOnError(); + _trimPacket: function(data) { + // For now, we only want to truncate the two different messages + // but this could/should be expanded to just trim everything + var max = this._globalOptions.maxMessageLength; + if (data.message) { + data.message = truncate(data.message, max); + } + if (data.exception) { + var exception = data.exception.values[0]; + exception.value = truncate(exception.value, max); + } - self.captureException(e, options); - throw e; + var request = data.request; + if (request) { + if (request.url) { + request.url = truncate(request.url, this._globalOptions.maxUrlLength); } - } // copy over properties of the old function - - - for (var property in func) { - if (hasKey(func, property)) { - wrapped[property] = func[property]; + if (request.Referer) { + request.Referer = truncate(request.Referer, this._globalOptions.maxUrlLength); } } - wrapped.prototype = func.prototype; - func.__raven_wrapper__ = wrapped; // Signal that this function has been wrapped/filled already - // for both debugging and to prevent it to being wrapped/filled twice + if (data.breadcrumbs && data.breadcrumbs.values) + this._trimBreadcrumbs(data.breadcrumbs); - wrapped.__raven__ = true; - wrapped.__orig__ = func; - return wrapped; + return data; }, - /* - * Uninstalls the global error handler. - * - * @return {Raven} - */ - uninstall: function uninstall() { - tracekit.report.uninstall(); + /** + * Truncate breadcrumb values (right now just URLs) + */ + _trimBreadcrumbs: function(breadcrumbs) { + // known breadcrumb properties with urls + // TODO: also consider arbitrary prop values that start with (https?)?:// + var urlProps = ['to', 'from', 'url'], + urlProp, + crumb, + data; - this._unpatchFunctionToString(); + for (var i = 0; i < breadcrumbs.values.length; ++i) { + crumb = breadcrumbs.values[i]; + if ( + !crumb.hasOwnProperty('data') || + !isObject(crumb.data) || + objectFrozen(crumb.data) + ) + continue; - this._restoreBuiltIns(); + data = objectMerge({}, crumb.data); + for (var j = 0; j < urlProps.length; ++j) { + urlProp = urlProps[j]; + if (data.hasOwnProperty(urlProp) && data[urlProp]) { + data[urlProp] = truncate(data[urlProp], this._globalOptions.maxUrlLength); + } + } + breadcrumbs.values[i].data = data; + } + }, - this._restoreConsole(); + _getHttpData: function() { + if (!this._hasNavigator && !this._hasDocument) return; + var httpData = {}; - Error.stackTraceLimit = this._originalErrorStackTraceLimit; - this._isRavenInstalled = false; - return this; - }, + if (this._hasNavigator && _navigator.userAgent) { + httpData.headers = { + 'User-Agent': navigator.userAgent + }; + } - /* - * Manually capture an exception and send it over to Sentry - * - * @param {error} ex An exception to be logged - * @param {object} options A specific set of options for this error [optional] - * @return {Raven} - */ - captureException: function captureException(ex, options) { - options = objectMerge({ - trimHeadFrames: 0 - }, options ? options : {}); // Cases for sending ex as a message, rather than an exception + // Check in `window` instead of `document`, as we may be in ServiceWorker environment + if (_window.location && _window.location.href) { + httpData.url = _window.location.href; + } - var isNotError = !isError(ex); - var isNotErrorEvent = !isErrorEvent(ex); - var isErrorEventWithoutError = isErrorEvent(ex) && !ex.error; + if (this._hasDocument && _document.referrer) { + if (!httpData.headers) httpData.headers = {}; + httpData.headers.Referer = _document.referrer; + } - if (isNotError && isNotErrorEvent || isErrorEventWithoutError) { - return this.captureMessage(ex, objectMerge(options, { - stacktrace: true, - // if we fall back to captureMessage, default to attempting a new trace - trimHeadFrames: options.trimHeadFrames + 1 - })); - } // Get actual Error from ErrorEvent + return httpData; + }, + _resetBackoff: function() { + this._backoffDuration = 0; + this._backoffStart = null; + }, - if (isErrorEvent(ex)) ex = ex.error; // Store the raw exception object for potential debugging and introspection + _shouldBackoff: function() { + return this._backoffDuration && now() - this._backoffStart < this._backoffDuration; + }, - this._lastCapturedException = ex; // TraceKit.report will re-raise any exception passed to it, - // which means you have to wrap it in try/catch. Instead, we - // can wrap it here and only re-raise if TraceKit.report - // raises an exception different from the one we asked to - // report on. + /** + * Returns true if the in-process data payload matches the signature + * of the previously-sent data + * + * NOTE: This has to be done at this level because TraceKit can generate + * data from window.onerror WITHOUT an exception object (IE8, IE9, + * other old browsers). This can take the form of an "exception" + * data object with a single frame (derived from the onerror args). + */ + _isRepeatData: function(current) { + var last = this._lastData; - try { - var stack = tracekit.computeStackTrace(ex); + if ( + !last || + current.message !== last.message || // defined for captureMessage + current.culprit !== last.culprit // defined for captureException/onerror + ) + return false; - this._handleStackInfo(stack, options); - } catch (ex1) { - if (ex !== ex1) { - throw ex1; - } + // Stacktrace interface (i.e. from captureMessage) + if (current.stacktrace || last.stacktrace) { + return isSameStacktrace(current.stacktrace, last.stacktrace); + } else if (current.exception || last.exception) { + // Exception interface (i.e. from captureException/onerror) + return isSameException(current.exception, last.exception); } - return this; + return true; }, - /* - * Manually send a message to Sentry - * - * @param {string} msg A plain message to be captured in Sentry - * @param {object} options A specific set of options for this message [optional] - * @return {Raven} - */ - captureMessage: function captureMessage(msg, options) { - // config() automagically converts ignoreErrors from a list to a RegExp so we need to test for an - // early call; we'll error on the side of logging anything called before configuration since it's - // probably something you should see: - if (!!this._globalOptions.ignoreErrors.test && this._globalOptions.ignoreErrors.test(msg)) { + _setBackoffState: function(request) { + // If we are already in a backoff state, don't change anything + if (this._shouldBackoff()) { return; } - options = options || {}; - var data = objectMerge({ - message: msg + '' // Make sure it's actually a string + var status = request.status; - }, options); - var ex; // Generate a "synthetic" stack trace from this point. - // NOTE: If you are a Sentry user, and you are seeing this stack frame, it is NOT indicative - // of a bug with Raven.js. Sentry generates synthetic traces either by configuration, - // or if it catches a thrown object without a "stack" property. + // 400 - project_id doesn't exist or some other fatal + // 401 - invalid/revoked dsn + // 429 - too many requests + if (!(status === 400 || status === 401 || status === 429)) return; + var retry; try { - throw new Error(msg); - } catch (ex1) { - ex = ex1; - } // null exception name so `Error` isn't prefixed to msg - - - ex.name = null; - var stack = tracekit.computeStackTrace(ex); // stack[0] is `throw new Error(msg)` call itself, we are interested in the frame that was just before that, stack[1] - - var initialCall = isArray(stack.stack) && stack.stack[1]; - var fileurl = initialCall && initialCall.url || ''; + // If Retry-After is not in Access-Control-Expose-Headers, most + // browsers will throw an exception trying to access it + if (supportsFetch()) { + retry = request.headers.get('Retry-After'); + } else { + retry = request.getResponseHeader('Retry-After'); + } - if (!!this._globalOptions.ignoreUrls.test && this._globalOptions.ignoreUrls.test(fileurl)) { - return; + // Retry-After is returned in seconds + retry = parseInt(retry, 10) * 1000; + } catch (e) { + /* eslint no-empty:0 */ } - if (!!this._globalOptions.whitelistUrls.test && !this._globalOptions.whitelistUrls.test(fileurl)) { - return; - } + this._backoffDuration = retry + ? // If Sentry server returned a Retry-After value, use it + retry + : // Otherwise, double the last backoff duration (starts at 1 sec) + this._backoffDuration * 2 || 1000; - if (this._globalOptions.stacktrace || options && options.stacktrace) { - options = objectMerge({ - // fingerprint on msg, not stack trace (legacy behavior, could be - // revisited) - fingerprint: msg, - // since we know this is a synthetic trace, the top N-most frames - // MUST be from Raven.js, so mark them as in_app later by setting - // trimHeadFrames - trimHeadFrames: (options.trimHeadFrames || 0) + 1 - }, options); + this._backoffStart = now(); + }, - var frames = this._prepareFrames(stack, options); + _send: function(data) { + var globalOptions = this._globalOptions; - data.stacktrace = { - // Sentry expects frames oldest to newest - frames: frames.reverse() - }; - } // Fire away! + var baseData = { + project: this._globalProject, + logger: globalOptions.logger, + platform: 'javascript' + }, + httpData = this._getHttpData(); + if (httpData) { + baseData.request = httpData; + } - this._send(data); + // HACK: delete `trimHeadFrames` to prevent from appearing in outbound payload + if (data.trimHeadFrames) delete data.trimHeadFrames; - return this; - }, - captureBreadcrumb: function captureBreadcrumb(obj) { - var crumb = objectMerge({ - timestamp: now() / 1000 - }, obj); + data = objectMerge(baseData, data); - if (isFunction(this._globalOptions.breadcrumbCallback)) { - var result = this._globalOptions.breadcrumbCallback(crumb); + // Merge in the tags and extra separately since objectMerge doesn't handle a deep merge + data.tags = objectMerge(objectMerge({}, this._globalContext.tags), data.tags); + data.extra = objectMerge(objectMerge({}, this._globalContext.extra), data.extra); - if (isObject(result) && !isEmptyObject(result)) { - crumb = result; - } else if (result === false) { - return this; - } - } + // Send along our own collected metadata with extra + data.extra['session:duration'] = now() - this._startTime; - this._breadcrumbs.push(crumb); + if (this._breadcrumbs && this._breadcrumbs.length > 0) { + // intentionally make shallow copy so that additions + // to breadcrumbs aren't accidentally sent in this request + data.breadcrumbs = { + values: [].slice.call(this._breadcrumbs, 0) + }; + } - if (this._breadcrumbs.length > this._globalOptions.maxBreadcrumbs) { - this._breadcrumbs.shift(); + if (this._globalContext.user) { + // sentry.interfaces.User + data.user = this._globalContext.user; } - return this; - }, - addPlugin: function addPlugin(plugin - /*arg1, arg2, ... argN*/ - ) { - var pluginArgs = [].slice.call(arguments, 1); + // Include the environment if it's defined in globalOptions + if (globalOptions.environment) data.environment = globalOptions.environment; - this._plugins.push([plugin, pluginArgs]); + // Include the release if it's defined in globalOptions + if (globalOptions.release) data.release = globalOptions.release; - if (this._isRavenInstalled) { - this._drainPlugins(); - } + // Include server_name if it's defined in globalOptions + if (globalOptions.serverName) data.server_name = globalOptions.serverName; - return this; - }, + data = this._sanitizeData(data); - /* - * Set/clear a user to be sent along with the payload. - * - * @param {object} user An object representing user data [optional] - * @return {Raven} - */ - setUserContext: function setUserContext(user) { - // Intentionally do not merge here since that's an unexpected behavior. - this._globalContext.user = user; - return this; - }, + // Cleanup empty properties before sending them to the server + Object.keys(data).forEach(function(key) { + if (data[key] == null || data[key] === '' || isEmptyObject(data[key])) { + delete data[key]; + } + }); - /* - * Merge extra attributes to be sent along with the payload. - * - * @param {object} extra An object representing extra data [optional] - * @return {Raven} - */ - setExtraContext: function setExtraContext(extra) { - this._mergeContext('extra', extra); + if (isFunction(globalOptions.dataCallback)) { + data = globalOptions.dataCallback(data) || data; + } - return this; - }, + // Why?????????? + if (!data || isEmptyObject(data)) { + return; + } - /* - * Merge tags to be sent along with the payload. - * - * @param {object} tags An object representing tags [optional] - * @return {Raven} - */ - setTagsContext: function setTagsContext(tags) { - this._mergeContext('tags', tags); + // Check if the request should be filtered or not + if ( + isFunction(globalOptions.shouldSendCallback) && + !globalOptions.shouldSendCallback(data) + ) { + return; + } - return this; - }, + // Backoff state: Sentry server previously responded w/ an error (e.g. 429 - too many requests), + // so drop requests until "cool-off" period has elapsed. + if (this._shouldBackoff()) { + this._logDebug('warn', 'Raven dropped error due to backoff: ', data); + return; + } - /* - * Clear all of the context. - * - * @return {Raven} - */ - clearContext: function clearContext() { - this._globalContext = {}; - return this; + if (typeof globalOptions.sampleRate === 'number') { + if (Math.random() < globalOptions.sampleRate) { + this._sendProcessedPayload(data); + } + } else { + this._sendProcessedPayload(data); + } }, - /* - * Get a copy of the current context. This cannot be mutated. - * - * @return {object} copy of context - */ - getContext: function getContext() { - // lol javascript - return JSON.parse(stringify_1(this._globalContext)); + _sanitizeData: function(data) { + return sanitize(data, this._globalOptions.sanitizeKeys); }, - /* - * Set environment of application - * - * @param {string} environment Typically something like 'production'. - * @return {Raven} - */ - setEnvironment: function setEnvironment(environment) { - this._globalOptions.environment = environment; - return this; + _getUuid: function() { + return uuid4(); }, - /* - * Set release version of application - * - * @param {string} release Typically something like a git SHA to identify version - * @return {Raven} - */ - setRelease: function setRelease(release) { - this._globalOptions.release = release; - return this; - }, + _sendProcessedPayload: function(data, callback) { + var self = this; + var globalOptions = this._globalOptions; - /* - * Set the dataCallback option - * - * @param {function} callback The callback to run which allows the - * data blob to be mutated before sending - * @return {Raven} - */ - setDataCallback: function setDataCallback(callback) { - var original = this._globalOptions.dataCallback; - this._globalOptions.dataCallback = keepOriginalCallback(original, callback); - return this; - }, + if (!this.isSetup()) return; - /* - * Set the breadcrumbCallback option - * - * @param {function} callback The callback to run which allows filtering - * or mutating breadcrumbs - * @return {Raven} - */ - setBreadcrumbCallback: function setBreadcrumbCallback(callback) { - var original = this._globalOptions.breadcrumbCallback; - this._globalOptions.breadcrumbCallback = keepOriginalCallback(original, callback); - return this; - }, + // Try and clean up the packet before sending by truncating long values + data = this._trimPacket(data); - /* - * Set the shouldSendCallback option - * - * @param {function} callback The callback to run which allows - * introspecting the blob before sending - * @return {Raven} - */ - setShouldSendCallback: function setShouldSendCallback(callback) { - var original = this._globalOptions.shouldSendCallback; - this._globalOptions.shouldSendCallback = keepOriginalCallback(original, callback); - return this; - }, + // ideally duplicate error testing should occur *before* dataCallback/shouldSendCallback, + // but this would require copying an un-truncated copy of the data packet, which can be + // arbitrarily deep (extra_data) -- could be worthwhile? will revisit + if (!this._globalOptions.allowDuplicates && this._isRepeatData(data)) { + this._logDebug('warn', 'Raven dropped repeat event: ', data); + return; + } - /** - * Override the default HTTP transport mechanism that transmits data - * to the Sentry server. - * - * @param {function} transport Function invoked instead of the default - * `makeRequest` handler. - * - * @return {Raven} - */ - setTransport: function setTransport(transport) { - this._globalOptions.transport = transport; - return this; - }, + // Send along an event_id if not explicitly passed. + // This event_id can be used to reference the error within Sentry itself. + // Set lastEventId after we know the error should actually be sent + this._lastEventId = data.event_id || (data.event_id = this._getUuid()); - /* - * Get the latest raw exception that was captured by Raven. - * - * @return {error} - */ - lastException: function lastException() { - return this._lastCapturedException; - }, + // Store outbound payload after trim + this._lastData = data; - /* - * Get the last event id - * - * @return {string} - */ - lastEventId: function lastEventId() { - return this._lastEventId; - }, + this._logDebug('debug', 'Raven about to send:', data); - /* - * Determine if Raven is setup and ready to go. - * - * @return {boolean} - */ - isSetup: function isSetup() { - if (!this._hasJSON) return false; // needs JSON support + var auth = { + sentry_version: '7', + sentry_client: 'raven-js/' + this.VERSION, + sentry_key: this._globalKey + }; - if (!this._globalServer) { - if (!this.ravenNotConfiguredError) { - this.ravenNotConfiguredError = true; + if (this._globalSecret) { + auth.sentry_secret = this._globalSecret; + } - this._logDebug('error', 'Error: Raven has not been configured.'); - } + var exception = data.exception && data.exception.values[0]; - return false; + // only capture 'sentry' breadcrumb is autoBreadcrumbs is truthy + if ( + this._globalOptions.autoBreadcrumbs && + this._globalOptions.autoBreadcrumbs.sentry + ) { + this.captureBreadcrumb({ + category: 'sentry', + message: exception + ? (exception.type ? exception.type + ': ' : '') + exception.value + : data.message, + event_id: data.event_id, + level: data.level || 'error' // presume error unless specified + }); } - return true; - }, - afterLoad: function afterLoad() { - // TODO: remove window dependence? - // Attempt to initialize Raven on load - var RavenConfig = _window$1.RavenConfig; - - if (RavenConfig) { - this.config(RavenConfig.dsn, RavenConfig.config).install(); - } + var url = this._globalEndpoint; + (globalOptions.transport || this._makeRequest).call(this, { + url: url, + auth: auth, + data: data, + options: globalOptions, + onSuccess: function success() { + self._resetBackoff(); + + self._triggerEvent('success', { + data: data, + src: url + }); + callback && callback(); + }, + onError: function failure(error) { + self._logDebug('error', 'Raven transport failed to send: ', error); + + if (error.request) { + self._setBackoffState(error.request); + } + + self._triggerEvent('failure', { + data: data, + src: url + }); + error = error || new Error('Raven send failed (no additional details provided)'); + callback && callback(error); + } + }); }, - showReportDialog: function showReportDialog(options) { - if (!_document // doesn't work without a document (React native) - ) return; - options = options || {}; - var lastEventId = options.eventId || this.lastEventId(); - if (!lastEventId) { - throw new configError('Missing eventId'); - } + _makeRequest: function(opts) { + // Auth is intentionally sent as part of query string (NOT as custom HTTP header) to avoid preflight CORS requests + var url = opts.url + '?' + urlencode(opts.auth); - var dsn = options.dsn || this._dsn; + var evaluatedHeaders = null; + var evaluatedFetchParameters = {}; - if (!dsn) { - throw new configError('Missing DSN'); + if (opts.options.headers) { + evaluatedHeaders = this._evaluateHash(opts.options.headers); } - var encode = encodeURIComponent; - var qs = ''; - qs += '?eventId=' + encode(lastEventId); - qs += '&dsn=' + encode(dsn); - var user = options.user || this._globalContext.user; - - if (user) { - if (user.name) qs += '&name=' + encode(user.name); - if (user.email) qs += '&email=' + encode(user.email); + if (opts.options.fetchParameters) { + evaluatedFetchParameters = this._evaluateHash(opts.options.fetchParameters); } - var globalServer = this._getGlobalServer(this._parseDSN(dsn)); + if (supportsFetch()) { + evaluatedFetchParameters.body = stringify(opts.data); - var script = _document.createElement('script'); + var defaultFetchOptions = objectMerge({}, this._fetchDefaults); + var fetchOptions = objectMerge(defaultFetchOptions, evaluatedFetchParameters); - script.async = true; - script.src = globalServer + '/api/embed/error-page/' + qs; + if (evaluatedHeaders) { + fetchOptions.headers = evaluatedHeaders; + } - (_document.head || _document.body).appendChild(script); - }, + return _window + .fetch(url, fetchOptions) + .then(function(response) { + if (response.ok) { + opts.onSuccess && opts.onSuccess(); + } else { + var error = new Error('Sentry error code: ' + response.status); + // It's called request only to keep compatibility with XHR interface + // and not add more redundant checks in setBackoffState method + error.request = response; + opts.onError && opts.onError(error); + } + }) + ['catch'](function() { + opts.onError && + opts.onError(new Error('Sentry error code: network unavailable')); + }); + } - /**** Private functions ****/ - _ignoreNextOnError: function _ignoreNextOnError() { - var self = this; - this._ignoreOnError += 1; - setTimeout(function () { - // onerror should trigger before setTimeout - self._ignoreOnError -= 1; - }); - }, - _triggerEvent: function _triggerEvent(eventType, options) { - // NOTE: `event` is a native browser thing, so let's avoid conflicting wiht it - var evt, key; - if (!this._hasDocument) return; - options = options || {}; - eventType = 'raven' + eventType.substr(0, 1).toUpperCase() + eventType.substr(1); + var request = _window.XMLHttpRequest && new _window.XMLHttpRequest(); + if (!request) return; - if (_document.createEvent) { - evt = _document.createEvent('HTMLEvents'); - evt.initEvent(eventType, true, true); - } else { - evt = _document.createEventObject(); - evt.eventType = eventType; - } + // if browser doesn't support CORS (e.g. IE7), we are out of luck + var hasCORS = 'withCredentials' in request || typeof XDomainRequest !== 'undefined'; - for (key in options) { - if (hasKey(options, key)) { - evt[key] = options[key]; - } - } + if (!hasCORS) return; - if (_document.createEvent) { - // IE9 if standards - _document.dispatchEvent(evt); + if ('withCredentials' in request) { + request.onreadystatechange = function() { + if (request.readyState !== 4) { + return; + } else if (request.status === 200) { + opts.onSuccess && opts.onSuccess(); + } else if (opts.onError) { + var err = new Error('Sentry error code: ' + request.status); + err.request = request; + opts.onError(err); + } + }; } else { - // IE8 regardless of Quirks or Standards - // IE9 if quirks - try { - _document.fireEvent('on' + evt.eventType.toLowerCase(), evt); - } catch (e) {// Do nothing + request = new XDomainRequest(); + // xdomainrequest cannot go http -> https (or vice versa), + // so always use protocol relative + url = url.replace(/^https?:/, ''); + + // onreadystatechange not supported by XDomainRequest + if (opts.onSuccess) { + request.onload = opts.onSuccess; + } + if (opts.onError) { + request.onerror = function() { + var err = new Error('Sentry error code: XDomainRequest'); + err.request = request; + opts.onError(err); + }; } } - }, - /** - * Wraps addEventListener to capture UI breadcrumbs - * @param evtName the event name (e.g. "click") - * @returns {Function} - * @private - */ - _breadcrumbEventHandler: function _breadcrumbEventHandler(evtName) { - var self = this; - return function (evt) { - // reset keypress timeout; e.g. triggering a 'click' after - // a 'keypress' will reset the keypress debounce so that a new - // set of keypresses can be recorded - self._keypressTimeout = null; // It's possible this handler might trigger multiple times for the same - // event (e.g. event propagation through node ancestors). Ignore if we've - // already captured the event. + request.open('POST', url); - if (self._lastCapturedEvent === evt) return; - self._lastCapturedEvent = evt; // try/catch both: - // - accessing evt.target (see getsentry/raven-js#838, #768) - // - `htmlTreeAsString` because it's complex, and just accessing the DOM incorrectly - // can throw an exception in some circumstances. + if (evaluatedHeaders) { + each(evaluatedHeaders, function(key, value) { + request.setRequestHeader(key, value); + }); + } - var target; + request.send(stringify(opts.data)); + }, - try { - target = htmlTreeAsString(evt.target); - } catch (e) { - target = ''; + _evaluateHash: function(hash) { + var evaluated = {}; + + for (var key in hash) { + if (hash.hasOwnProperty(key)) { + var value = hash[key]; + evaluated[key] = typeof value === 'function' ? value() : value; } + } - self.captureBreadcrumb({ - category: 'ui.' + evtName, - // e.g. ui.click, ui.input - message: target - }); - }; + return evaluated; }, - /** - * Wraps addEventListener to capture keypress UI events - * @returns {Function} - * @private - */ - _keypressEventHandler: function _keypressEventHandler() { - var self = this, - debounceDuration = 1000; // milliseconds - // TODO: if somehow user switches keypress target before - // debounce timeout is triggered, we will only capture - // a single breadcrumb from the FIRST target (acceptable?) + _logDebug: function(level) { + // We allow `Raven.debug` and `Raven.config(DSN, { debug: true })` to not make backward incompatible API change + if ( + this._originalConsoleMethods[level] && + (this.debug || this._globalOptions.debug) + ) { + // In IE<10 console methods do not have their own 'apply' method + Function.prototype.apply.call( + this._originalConsoleMethods[level], + this._originalConsole, + [].slice.call(arguments, 1) + ); + } + }, - return function (evt) { - var target; + _mergeContext: function(key, context) { + if (isUndefined(context)) { + delete this._globalContext[key]; + } else { + this._globalContext[key] = objectMerge(this._globalContext[key] || {}, context); + } + } +}; - try { - target = evt.target; - } catch (e) { - // just accessing event properties can throw an exception in some rare circumstances - // see: https://github.com/getsentry/raven-js/issues/838 - return; - } +// Deprecations +Raven.prototype.setUser = Raven.prototype.setUserContext; +Raven.prototype.setReleaseContext = Raven.prototype.setRelease; - var tagName = target && target.tagName; // only consider keypress events on actual input elements - // this will disregard keypresses targeting body (e.g. tabbing - // through elements, hotkeys, etc) +module.exports = Raven; - if (!tagName || tagName !== 'INPUT' && tagName !== 'TEXTAREA' && !target.isContentEditable) return; // record first keypress in a series, but ignore subsequent - // keypresses until debounce clears +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"10":10,"3":3,"4":4,"7":7,"8":8,"9":9}],6:[function(_dereq_,module,exports){ +(function (global){ +/** + * Enforces a single instance of the Raven client, and the + * main entry point for Raven. If you are a consumer of the + * Raven library, you SHOULD load this file (vs raven.js). + **/ - var timeout = self._keypressTimeout; +var RavenConstructor = _dereq_(5); - if (!timeout) { - self._breadcrumbEventHandler('input')(evt); - } +// This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) +var _window = + typeof window !== 'undefined' + ? window + : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; +var _Raven = _window.Raven; - clearTimeout(timeout); - self._keypressTimeout = setTimeout(function () { - self._keypressTimeout = null; - }, debounceDuration); - }; - }, +var Raven = new RavenConstructor(); - /** - * Captures a breadcrumb of type "navigation", normalizing input URLs - * @param to the originating URL - * @param from the target URL - * @private - */ - _captureUrlChange: function _captureUrlChange(from, to) { - var parsedLoc = parseUrl(this._location.href); - var parsedTo = parseUrl(to); - var parsedFrom = parseUrl(from); // because onpopstate only tells you the "new" (to) value of location.href, and - // not the previous (from) value, we need to track the value of the current URL - // state ourselves +/* + * Allow multiple versions of Raven to be installed. + * Strip Raven from the global context and returns the instance. + * + * @return {Raven} + */ +Raven.noConflict = function() { + _window.Raven = _Raven; + return Raven; +}; - this._lastHref = to; // Use only the path component of the URL if the URL matches the current - // document (almost all the time when using pushState) +Raven.afterLoad(); - if (parsedLoc.protocol === parsedTo.protocol && parsedLoc.host === parsedTo.host) to = parsedTo.relative; - if (parsedLoc.protocol === parsedFrom.protocol && parsedLoc.host === parsedFrom.host) from = parsedFrom.relative; - this.captureBreadcrumb({ - category: 'navigation', - data: { - to: to, - from: from - } - }); - }, - _patchFunctionToString: function _patchFunctionToString() { - var self = this; - self._originalFunctionToString = Function.prototype.toString; // eslint-disable-next-line no-extend-native +module.exports = Raven; - Function.prototype.toString = function () { - if (typeof this === 'function' && this.__raven__) { - return self._originalFunctionToString.apply(this.__orig__, arguments); - } +/** + * DISCLAIMER: + * + * Expose `Client` constructor for cases where user want to track multiple "sub-applications" in one larger app. + * It's not meant to be used by a wide audience, so pleaaase make sure that you know what you're doing before using it. + * Accidentally calling `install` multiple times, may result in an unexpected behavior that's very hard to debug. + * + * It's called `Client' to be in-line with Raven Node implementation. + * + * HOWTO: + * + * import Raven from 'raven-js'; + * + * const someAppReporter = new Raven.Client(); + * const someOtherAppReporter = new Raven.Client(); + * + * someAppReporter.config('__DSN__', { + * ...config goes here + * }); + * + * someOtherAppReporter.config('__OTHER_DSN__', { + * ...config goes here + * }); + * + * someAppReporter.captureMessage(...); + * someAppReporter.captureException(...); + * someAppReporter.captureBreadcrumb(...); + * + * someOtherAppReporter.captureMessage(...); + * someOtherAppReporter.captureException(...); + * someOtherAppReporter.captureBreadcrumb(...); + * + * It should "just work". + */ +module.exports.Client = RavenConstructor; - return self._originalFunctionToString.apply(this, arguments); - }; - }, - _unpatchFunctionToString: function _unpatchFunctionToString() { - if (this._originalFunctionToString) { - // eslint-disable-next-line no-extend-native - Function.prototype.toString = this._originalFunctionToString; - } - }, +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"5":5}],7:[function(_dereq_,module,exports){ +(function (global){ +var stringify = _dereq_(9); - /** - * Wrap timer functions and event targets to catch errors and provide - * better metadata. - */ - _instrumentTryCatch: function _instrumentTryCatch() { - var self = this; - var wrappedBuiltIns = self._wrappedBuiltIns; +var _window = + typeof window !== 'undefined' + ? window + : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; - function wrapTimeFn(orig) { - return function (fn, t) { - // preserve arity - // Make a copy of the arguments to prevent deoptimization - // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments - var args = new Array(arguments.length); +function isObject(what) { + return typeof what === 'object' && what !== null; +} - for (var i = 0; i < args.length; ++i) { - args[i] = arguments[i]; - } +// Yanked from https://git.io/vS8DV re-used under CC0 +// with some tiny modifications +function isError(value) { + switch ({}.toString.call(value)) { + case '[object Error]': + return true; + case '[object Exception]': + return true; + case '[object DOMException]': + return true; + default: + return value instanceof Error; + } +} - var originalCallback = args[0]; +function isErrorEvent(value) { + return supportsErrorEvent() && {}.toString.call(value) === '[object ErrorEvent]'; +} - if (isFunction(originalCallback)) { - args[0] = self.wrap(originalCallback); - } // IE < 9 doesn't support .call/.apply on setInterval/setTimeout, but it - // also supports only two arguments and doesn't care what this is, so we - // can just call the original function directly. +function isUndefined(what) { + return what === void 0; +} +function isFunction(what) { + return typeof what === 'function'; +} - if (orig.apply) { - return orig.apply(this, args); - } else { - return orig(args[0], args[1]); - } - }; - } +function isPlainObject(what) { + return Object.prototype.toString.call(what) === '[object Object]'; +} - var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; +function isString(what) { + return Object.prototype.toString.call(what) === '[object String]'; +} - function wrapEventTarget(global) { - var proto = _window$1[global] && _window$1[global].prototype; +function isArray(what) { + return Object.prototype.toString.call(what) === '[object Array]'; +} - if (proto && proto.hasOwnProperty && proto.hasOwnProperty('addEventListener')) { - fill(proto, 'addEventListener', function (orig) { - return function (evtName, fn, capture, secure) { - // preserve arity - try { - if (fn && fn.handleEvent) { - fn.handleEvent = self.wrap(fn.handleEvent); - } - } catch (err) {} // can sometimes get 'Permission denied to access property "handle Event' - // More breadcrumb DOM capture ... done here and not in `_instrumentBreadcrumbs` - // so that we don't have more than one wrapper function +function isEmptyObject(what) { + if (!isPlainObject(what)) return false; + for (var _ in what) { + if (what.hasOwnProperty(_)) { + return false; + } + } + return true; +} - var before, clickHandler, keypressHandler; +function supportsErrorEvent() { + try { + new ErrorEvent(''); // eslint-disable-line no-new + return true; + } catch (e) { + return false; + } +} - if (autoBreadcrumbs && autoBreadcrumbs.dom && (global === 'EventTarget' || global === 'Node')) { - // NOTE: generating multiple handlers per addEventListener invocation, should - // revisit and verify we can just use one (almost certainly) - clickHandler = self._breadcrumbEventHandler('click'); - keypressHandler = self._keypressEventHandler(); +function supportsFetch() { + if (!('fetch' in _window)) return false; - before = function before(evt) { - // need to intercept every DOM event in `before` argument, in case that - // same wrapped method is re-used for different events (e.g. mousemove THEN click) - // see #724 - if (!evt) return; - var eventType; + try { + new Headers(); // eslint-disable-line no-new + new Request(''); // eslint-disable-line no-new + new Response(); // eslint-disable-line no-new + return true; + } catch (e) { + return false; + } +} - try { - eventType = evt.type; - } catch (e) { - // just accessing event properties can throw an exception in some rare circumstances - // see: https://github.com/getsentry/raven-js/issues/838 - return; - } +// Despite all stars in the sky saying that Edge supports old draft syntax, aka 'never', 'always', 'origin' and 'default +// https://caniuse.com/#feat=referrer-policy +// It doesn't. And it throw exception instead of ignoring this parameter... +// REF: https://github.com/getsentry/raven-js/issues/1233 +function supportsReferrerPolicy() { + if (!supportsFetch()) return false; - if (eventType === 'click') return clickHandler(evt);else if (eventType === 'keypress') return keypressHandler(evt); - }; - } + try { + // eslint-disable-next-line no-new + new Request('pickleRick', { + referrerPolicy: 'origin' + }); + return true; + } catch (e) { + return false; + } +} - return orig.call(this, evtName, self.wrap(fn, undefined, before), capture, secure); - }; - }, wrappedBuiltIns); - fill(proto, 'removeEventListener', function (orig) { - return function (evt, fn, capture, secure) { - try { - fn = fn && (fn.__raven_wrapper__ ? fn.__raven_wrapper__ : fn); - } catch (e) {// ignore, accessing __raven_wrapper__ will throw in some Selenium environments - } +function supportsPromiseRejectionEvent() { + return typeof PromiseRejectionEvent === 'function'; +} - return orig.call(this, evt, fn, capture, secure); - }; - }, wrappedBuiltIns); - } +function wrappedCallback(callback) { + function dataCallback(data, original) { + var normalizedData = callback(data) || data; + if (original) { + return original(normalizedData) || normalizedData; } + return normalizedData; + } - fill(_window$1, 'setTimeout', wrapTimeFn, wrappedBuiltIns); - fill(_window$1, 'setInterval', wrapTimeFn, wrappedBuiltIns); - - if (_window$1.requestAnimationFrame) { - fill(_window$1, 'requestAnimationFrame', function (orig) { - return function (cb) { - return orig(self.wrap(cb)); - }; - }, wrappedBuiltIns); - } // event targets borrowed from bugsnag-js: - // https://github.com/bugsnag/bugsnag-js/blob/master/src/bugsnag.js#L666 - + return dataCallback; +} - var eventTargets = ['EventTarget', 'Window', 'Node', 'ApplicationCache', 'AudioTrackList', 'ChannelMergerNode', 'CryptoOperation', 'EventSource', 'FileReader', 'HTMLUnknownElement', 'IDBDatabase', 'IDBRequest', 'IDBTransaction', 'KeyOperation', 'MediaController', 'MessagePort', 'ModalWindow', 'Notification', 'SVGElementInstance', 'Screen', 'TextTrack', 'TextTrackCue', 'TextTrackList', 'WebSocket', 'WebSocketWorker', 'Worker', 'XMLHttpRequest', 'XMLHttpRequestEventTarget', 'XMLHttpRequestUpload']; +function each(obj, callback) { + var i, j; - for (var i = 0; i < eventTargets.length; i++) { - wrapEventTarget(eventTargets[i]); + if (isUndefined(obj.length)) { + for (i in obj) { + if (hasKey(obj, i)) { + callback.call(null, i, obj[i]); + } } - }, - - /** - * Instrument browser built-ins w/ breadcrumb capturing - * - XMLHttpRequests - * - DOM interactions (click/typing) - * - window.location changes - * - console - * - * Can be disabled or individually configured via the `autoBreadcrumbs` config option - */ - _instrumentBreadcrumbs: function _instrumentBreadcrumbs() { - var self = this; - var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; - var wrappedBuiltIns = self._wrappedBuiltIns; - - function wrapProp(prop, xhr) { - if (prop in xhr && isFunction(xhr[prop])) { - fill(xhr, prop, function (orig) { - return self.wrap(orig); - }); // intentionally don't track filled methods on XHR instances + } else { + j = obj.length; + if (j) { + for (i = 0; i < j; i++) { + callback.call(null, i, obj[i]); } } + } +} - if (autoBreadcrumbs.xhr && 'XMLHttpRequest' in _window$1) { - var xhrproto = XMLHttpRequest.prototype; - fill(xhrproto, 'open', function (origOpen) { - return function (method, url) { - // preserve arity - // if Sentry key appears in URL, don't capture - if (isString(url) && url.indexOf(self._globalKey) === -1) { - this.__raven_xhr = { - method: method, - url: url, - status_code: null - }; - } - - return origOpen.apply(this, arguments); - }; - }, wrappedBuiltIns); - fill(xhrproto, 'send', function (origSend) { - return function () { - // preserve arity - var xhr = this; - - function onreadystatechangeHandler() { - if (xhr.__raven_xhr && xhr.readyState === 4) { - try { - // touching statusCode in some platforms throws - // an exception - xhr.__raven_xhr.status_code = xhr.status; - } catch (e) { - /* do nothing */ - } +function objectMerge(obj1, obj2) { + if (!obj2) { + return obj1; + } + each(obj2, function(key, value) { + obj1[key] = value; + }); + return obj1; +} - self.captureBreadcrumb({ - type: 'http', - category: 'xhr', - data: xhr.__raven_xhr - }); - } - } +/** + * This function is only used for react-native. + * react-native freezes object that have already been sent over the + * js bridge. We need this function in order to check if the object is frozen. + * So it's ok that objectFrozen returns false if Object.isFrozen is not + * supported because it's not relevant for other "platforms". See related issue: + * https://github.com/getsentry/react-native-sentry/issues/57 + */ +function objectFrozen(obj) { + if (!Object.isFrozen) { + return false; + } + return Object.isFrozen(obj); +} - var props = ['onload', 'onerror', 'onprogress']; +function truncate(str, max) { + if (typeof max !== 'number') { + throw new Error('2nd argument to `truncate` function should be a number'); + } + if (typeof str !== 'string' || max === 0) { + return str; + } + return str.length <= max ? str : str.substr(0, max) + '\u2026'; +} - for (var j = 0; j < props.length; j++) { - wrapProp(props[j], xhr); - } +/** + * hasKey, a better form of hasOwnProperty + * Example: hasKey(MainHostObject, property) === true/false + * + * @param {Object} host object to check property + * @param {string} key to check + */ +function hasKey(object, key) { + return Object.prototype.hasOwnProperty.call(object, key); +} - if ('onreadystatechange' in xhr && isFunction(xhr.onreadystatechange)) { - fill(xhr, 'onreadystatechange', function (orig) { - return self.wrap(orig, undefined, onreadystatechangeHandler); - } - /* intentionally don't track this instrumentation */ - ); - } else { - // if onreadystatechange wasn't actually set by the page on this xhr, we - // are free to set our own and capture the breadcrumb - xhr.onreadystatechange = onreadystatechangeHandler; - } +function joinRegExp(patterns) { + // Combine an array of regular expressions and strings into one large regexp + // Be mad. + var sources = [], + i = 0, + len = patterns.length, + pattern; - return origSend.apply(this, arguments); - }; - }, wrappedBuiltIns); + for (; i < len; i++) { + pattern = patterns[i]; + if (isString(pattern)) { + // If it's a string, we need to escape it + // Taken from: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions + sources.push(pattern.replace(/([.*+?^=!:${}()|\[\]\/\\])/g, '\\$1')); + } else if (pattern && pattern.source) { + // If it's a regexp already, we want to extract the source + sources.push(pattern.source); } + // Intentionally skip other cases + } + return new RegExp(sources.join('|'), 'i'); +} - if (autoBreadcrumbs.xhr && supportsFetch()) { - fill(_window$1, 'fetch', function (origFetch) { - return function () { - // preserve arity - // Make a copy of the arguments to prevent deoptimization - // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments - var args = new Array(arguments.length); - - for (var i = 0; i < args.length; ++i) { - args[i] = arguments[i]; - } +function urlencode(o) { + var pairs = []; + each(o, function(key, value) { + pairs.push(encodeURIComponent(key) + '=' + encodeURIComponent(value)); + }); + return pairs.join('&'); +} - var fetchInput = args[0]; - var method = 'GET'; - var url; +// borrowed from https://tools.ietf.org/html/rfc3986#appendix-B +// intentionally using regex and not href parsing trick because React Native and other +// environments where DOM might not be available +function parseUrl(url) { + if (typeof url !== 'string') return {}; + var match = url.match(/^(([^:\/?#]+):)?(\/\/([^\/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?$/); - if (typeof fetchInput === 'string') { - url = fetchInput; - } else if ('Request' in _window$1 && fetchInput instanceof _window$1.Request) { - url = fetchInput.url; + // coerce to undefined values to empty string so we don't get 'undefined' + var query = match[6] || ''; + var fragment = match[8] || ''; + return { + protocol: match[2], + host: match[4], + path: match[5], + relative: match[5] + query + fragment // everything minus origin + }; +} +function uuid4() { + var crypto = _window.crypto || _window.msCrypto; - if (fetchInput.method) { - method = fetchInput.method; - } - } else { - url = '' + fetchInput; - } // if Sentry key appears in URL, don't capture, as it's our own request + if (!isUndefined(crypto) && crypto.getRandomValues) { + // Use window.crypto API if available + // eslint-disable-next-line no-undef + var arr = new Uint16Array(8); + crypto.getRandomValues(arr); + // set 4 in byte 7 + arr[3] = (arr[3] & 0xfff) | 0x4000; + // set 2 most significant bits of byte 9 to '10' + arr[4] = (arr[4] & 0x3fff) | 0x8000; - if (url.indexOf(self._globalKey) !== -1) { - return origFetch.apply(this, args); - } + var pad = function(num) { + var v = num.toString(16); + while (v.length < 4) { + v = '0' + v; + } + return v; + }; - if (args[1] && args[1].method) { - method = args[1].method; - } + return ( + pad(arr[0]) + + pad(arr[1]) + + pad(arr[2]) + + pad(arr[3]) + + pad(arr[4]) + + pad(arr[5]) + + pad(arr[6]) + + pad(arr[7]) + ); + } else { + // http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/2117523#2117523 + return 'xxxxxxxxxxxx4xxxyxxxxxxxxxxxxxxx'.replace(/[xy]/g, function(c) { + var r = (Math.random() * 16) | 0, + v = c === 'x' ? r : (r & 0x3) | 0x8; + return v.toString(16); + }); + } +} - var fetchData = { - method: method, - url: url, - status_code: null - }; - return origFetch.apply(this, args).then(function (response) { - fetchData.status_code = response.status; - self.captureBreadcrumb({ - type: 'http', - category: 'fetch', - data: fetchData - }); - return response; - }); - }; - }, wrappedBuiltIns); - } // Capture breadcrumbs from any click that is unhandled / bubbled up all the way - // to the document. Do this before we instrument addEventListener. +/** + * Given a child DOM element, returns a query-selector statement describing that + * and its ancestors + * e.g. [HTMLElement] => body > div > input#foo.btn[name=baz] + * @param elem + * @returns {string} + */ +function htmlTreeAsString(elem) { + /* eslint no-extra-parens:0*/ + var MAX_TRAVERSE_HEIGHT = 5, + MAX_OUTPUT_LEN = 80, + out = [], + height = 0, + len = 0, + separator = ' > ', + sepLength = separator.length, + nextStr; + while (elem && height++ < MAX_TRAVERSE_HEIGHT) { + nextStr = htmlElementAsString(elem); + // bail out if + // - nextStr is the 'html' element + // - the length of the string that would be created exceeds MAX_OUTPUT_LEN + // (ignore this limit if we are on the first iteration) + if ( + nextStr === 'html' || + (height > 1 && len + out.length * sepLength + nextStr.length >= MAX_OUTPUT_LEN) + ) { + break; + } - if (autoBreadcrumbs.dom && this._hasDocument) { - if (_document.addEventListener) { - _document.addEventListener('click', self._breadcrumbEventHandler('click'), false); + out.push(nextStr); - _document.addEventListener('keypress', self._keypressEventHandler(), false); - } else { - // IE8 Compatibility - _document.attachEvent('onclick', self._breadcrumbEventHandler('click')); + len += nextStr.length; + elem = elem.parentNode; + } - _document.attachEvent('onkeypress', self._keypressEventHandler()); - } - } // record navigation (URL) changes - // NOTE: in Chrome App environment, touching history.pushState, *even inside - // a try/catch block*, will cause Chrome to output an error to console.error - // borrowed from: https://github.com/angular/angular.js/pull/13945/files + return out.reverse().join(separator); +} +/** + * Returns a simple, query-selector representation of a DOM element + * e.g. [HTMLElement] => input#foo.btn[name=baz] + * @param HTMLElement + * @returns {string} + */ +function htmlElementAsString(elem) { + var out = [], + className, + classes, + key, + attr, + i; - var chrome = _window$1.chrome; - var isChromePackagedApp = chrome && chrome.app && chrome.app.runtime; - var hasPushAndReplaceState = !isChromePackagedApp && _window$1.history && history.pushState && history.replaceState; + if (!elem || !elem.tagName) { + return ''; + } - if (autoBreadcrumbs.location && hasPushAndReplaceState) { - // TODO: remove onpopstate handler on uninstall() - var oldOnPopState = _window$1.onpopstate; + out.push(elem.tagName.toLowerCase()); + if (elem.id) { + out.push('#' + elem.id); + } - _window$1.onpopstate = function () { - var currentHref = self._location.href; + className = elem.className; + if (className && isString(className)) { + classes = className.split(/\s+/); + for (i = 0; i < classes.length; i++) { + out.push('.' + classes[i]); + } + } + var attrWhitelist = ['type', 'name', 'title', 'alt']; + for (i = 0; i < attrWhitelist.length; i++) { + key = attrWhitelist[i]; + attr = elem.getAttribute(key); + if (attr) { + out.push('[' + key + '="' + attr + '"]'); + } + } + return out.join(''); +} - self._captureUrlChange(self._lastHref, currentHref); +/** + * Returns true if either a OR b is truthy, but not both + */ +function isOnlyOneTruthy(a, b) { + return !!(!!a ^ !!b); +} - if (oldOnPopState) { - return oldOnPopState.apply(this, arguments); - } - }; +/** + * Returns true if both parameters are undefined + */ +function isBothUndefined(a, b) { + return isUndefined(a) && isUndefined(b); +} - var historyReplacementFunction = function historyReplacementFunction(origHistFunction) { - // note history.pushState.length is 0; intentionally not declaring - // params to preserve 0 arity - return function () - /* state, title, url */ - { - var url = arguments.length > 2 ? arguments[2] : undefined; // url argument is optional +/** + * Returns true if the two input exception interfaces have the same content + */ +function isSameException(ex1, ex2) { + if (isOnlyOneTruthy(ex1, ex2)) return false; - if (url) { - // coerce to string (this is what pushState does) - self._captureUrlChange(self._lastHref, url + ''); - } + ex1 = ex1.values[0]; + ex2 = ex2.values[0]; - return origHistFunction.apply(this, arguments); - }; - }; + if (ex1.type !== ex2.type || ex1.value !== ex2.value) return false; - fill(history, 'pushState', historyReplacementFunction, wrappedBuiltIns); - fill(history, 'replaceState', historyReplacementFunction, wrappedBuiltIns); - } + // in case both stacktraces are undefined, we can't decide so default to false + if (isBothUndefined(ex1.stacktrace, ex2.stacktrace)) return false; - if (autoBreadcrumbs.console && 'console' in _window$1 && console.log) { - // console - var consoleMethodCallback = function consoleMethodCallback(msg, data) { - self.captureBreadcrumb({ - message: msg, - level: data.level, - category: 'console' - }); - }; + return isSameStacktrace(ex1.stacktrace, ex2.stacktrace); +} - each(['debug', 'info', 'warn', 'error', 'log'], function (_, level) { - wrapConsoleMethod(console, level, consoleMethodCallback); - }); - } - }, - _restoreBuiltIns: function _restoreBuiltIns() { - // restore any wrapped builtins - var builtin; +/** + * Returns true if the two input stack trace interfaces have the same content + */ +function isSameStacktrace(stack1, stack2) { + if (isOnlyOneTruthy(stack1, stack2)) return false; - while (this._wrappedBuiltIns.length) { - builtin = this._wrappedBuiltIns.shift(); - var obj = builtin[0], - name = builtin[1], - orig = builtin[2]; - obj[name] = orig; - } - }, - _restoreConsole: function _restoreConsole() { - // eslint-disable-next-line guard-for-in - for (var method in this._originalConsoleMethods) { - this._originalConsole[method] = this._originalConsoleMethods[method]; - } - }, - _drainPlugins: function _drainPlugins() { - var self = this; // FIX ME TODO + var frames1 = stack1.frames; + var frames2 = stack2.frames; - each(this._plugins, function (_, plugin) { - var installer = plugin[0]; - var args = plugin[1]; - installer.apply(self, [self].concat(args)); - }); - }, - _parseDSN: function _parseDSN(str) { - var m = dsnPattern.exec(str), - dsn = {}, - i = 7; + // Exit early if frame count differs + if (frames1.length !== frames2.length) return false; + + // Iterate through every frame; bail out if anything differs + var a, b; + for (var i = 0; i < frames1.length; i++) { + a = frames1[i]; + b = frames2[i]; + if ( + a.filename !== b.filename || + a.lineno !== b.lineno || + a.colno !== b.colno || + a['function'] !== b['function'] + ) + return false; + } + return true; +} + +/** + * Polyfill a method + * @param obj object e.g. `document` + * @param name method name present on object e.g. `addEventListener` + * @param replacement replacement function + * @param track {optional} record instrumentation to an array + */ +function fill(obj, name, replacement, track) { + if (obj == null) return; + var orig = obj[name]; + obj[name] = replacement(orig); + obj[name].__raven__ = true; + obj[name].__orig__ = orig; + if (track) { + track.push([obj, name, orig]); + } +} + +/** + * Join values in array + * @param input array of values to be joined together + * @param delimiter string to be placed in-between values + * @returns {string} + */ +function safeJoin(input, delimiter) { + if (!isArray(input)) return ''; + + var output = []; + for (var i = 0; i < input.length; i++) { try { - while (i--) { - dsn[dsnKeys[i]] = m[i] || ''; - } + output.push(String(input[i])); } catch (e) { - throw new configError('Invalid DSN: ' + str); + output.push('[value cannot be serialized]'); } + } - if (dsn.pass && !this._globalOptions.allowSecretKey) { - throw new configError('Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key'); - } + return output.join(delimiter); +} - return dsn; - }, - _getGlobalServer: function _getGlobalServer(uri) { - // assemble the endpoint from the uri pieces - var globalServer = '//' + uri.host + (uri.port ? ':' + uri.port : ''); +// Default Node.js REPL depth +var MAX_SERIALIZE_EXCEPTION_DEPTH = 3; +// 50kB, as 100kB is max payload size, so half sounds reasonable +var MAX_SERIALIZE_EXCEPTION_SIZE = 50 * 1024; +var MAX_SERIALIZE_KEYS_LENGTH = 40; - if (uri.protocol) { - globalServer = uri.protocol + ':' + globalServer; - } +function utf8Length(value) { + return ~-encodeURI(value).split(/%..|./).length; +} - return globalServer; - }, - _handleOnErrorStackInfo: function _handleOnErrorStackInfo() { - // if we are intentionally ignoring errors via onerror, bail out - if (!this._ignoreOnError) { - this._handleStackInfo.apply(this, arguments); - } - }, - _handleStackInfo: function _handleStackInfo(stackInfo, options) { - var frames = this._prepareFrames(stackInfo, options); +function jsonSize(value) { + return utf8Length(JSON.stringify(value)); +} - this._triggerEvent('handle', { - stackInfo: stackInfo, - options: options - }); +function serializeValue(value) { + if (typeof value === 'string') { + var maxLength = 40; + return truncate(value, maxLength); + } else if ( + typeof value === 'number' || + typeof value === 'boolean' || + typeof value === 'undefined' + ) { + return value; + } - this._processException(stackInfo.name, stackInfo.message, stackInfo.url, stackInfo.lineno, frames, options); - }, - _prepareFrames: function _prepareFrames(stackInfo, options) { - var self = this; - var frames = []; + var type = Object.prototype.toString.call(value); - if (stackInfo.stack && stackInfo.stack.length) { - each(stackInfo.stack, function (i, stack) { - var frame = self._normalizeFrame(stack, stackInfo.url); + // Node.js REPL notation + if (type === '[object Object]') return '[Object]'; + if (type === '[object Array]') return '[Array]'; + if (type === '[object Function]') + return value.name ? '[Function: ' + value.name + ']' : '[Function]'; - if (frame) { - frames.push(frame); - } - }); // e.g. frames captured via captureMessage throw + return value; +} - if (options && options.trimHeadFrames) { - for (var j = 0; j < options.trimHeadFrames && j < frames.length; j++) { - frames[j].in_app = false; - } - } - } +function serializeObject(value, depth) { + if (depth === 0) return serializeValue(value); + + if (isPlainObject(value)) { + return Object.keys(value).reduce(function(acc, key) { + acc[key] = serializeObject(value[key], depth - 1); + return acc; + }, {}); + } else if (Array.isArray(value)) { + return value.map(function(val) { + return serializeObject(val, depth - 1); + }); + } - frames = frames.slice(0, this._globalOptions.stackTraceLimit); - return frames; - }, - _normalizeFrame: function _normalizeFrame(frame, stackInfoUrl) { - // normalize the frames data - var normalized = { - filename: frame.url, - lineno: frame.line, - colno: frame.column, - function: frame.func || '?' - }; // Case when we don't have any information about the error - // E.g. throwing a string or raw object, instead of an `Error` in Firefox - // Generating synthetic error doesn't add any value here - // - // We should probably somehow let a user know that they should fix their code + return serializeValue(value); +} - if (!frame.url) { - normalized.filename = stackInfoUrl; // fallback to whole stacks url from onerror handler - } +function serializeException(ex, depth, maxSize) { + if (!isPlainObject(ex)) return ex; - normalized.in_app = !( // determine if an exception came from outside of our app - // first we check the global includePaths list. - !!this._globalOptions.includePaths.test && !this._globalOptions.includePaths.test(normalized.filename) || // Now we check for fun, if the function name is Raven or TraceKit - /(Raven|TraceKit)\./.test(normalized['function']) || // finally, we do a last ditch effort and check for raven.min.js - /raven\.(min\.)?js$/.test(normalized.filename)); - return normalized; - }, - _processException: function _processException(type, message, fileurl, lineno, frames, options) { - var prefixedMessage = (type ? type + ': ' : '') + (message || ''); + depth = typeof depth !== 'number' ? MAX_SERIALIZE_EXCEPTION_DEPTH : depth; + maxSize = typeof depth !== 'number' ? MAX_SERIALIZE_EXCEPTION_SIZE : maxSize; - if (!!this._globalOptions.ignoreErrors.test && (this._globalOptions.ignoreErrors.test(message) || this._globalOptions.ignoreErrors.test(prefixedMessage))) { - return; - } + var serialized = serializeObject(ex, depth); - var stacktrace; + if (jsonSize(stringify(serialized)) > maxSize) { + return serializeException(ex, depth - 1); + } - if (frames && frames.length) { - fileurl = frames[0].filename || fileurl; // Sentry expects frames oldest to newest - // and JS sends them as newest to oldest + return serialized; +} - frames.reverse(); - stacktrace = { - frames: frames - }; - } else if (fileurl) { - stacktrace = { - frames: [{ - filename: fileurl, - lineno: lineno, - in_app: true - }] - }; - } +function serializeKeysForMessage(keys, maxLength) { + if (typeof keys === 'number' || typeof keys === 'string') return keys.toString(); + if (!Array.isArray(keys)) return ''; - if (!!this._globalOptions.ignoreUrls.test && this._globalOptions.ignoreUrls.test(fileurl)) { - return; - } + keys = keys.filter(function(key) { + return typeof key === 'string'; + }); + if (keys.length === 0) return '[object has no keys]'; - if (!!this._globalOptions.whitelistUrls.test && !this._globalOptions.whitelistUrls.test(fileurl)) { - return; - } + maxLength = typeof maxLength !== 'number' ? MAX_SERIALIZE_KEYS_LENGTH : maxLength; + if (keys[0].length >= maxLength) return keys[0]; - var data = objectMerge({ - // sentry.interfaces.Exception - exception: { - values: [{ - type: type, - value: message, - stacktrace: stacktrace - }] - }, - culprit: fileurl - }, options); // Fire away! + for (var usedKeys = keys.length; usedKeys > 0; usedKeys--) { + var serialized = keys.slice(0, usedKeys).join(', '); + if (serialized.length > maxLength) continue; + if (usedKeys === keys.length) return serialized; + return serialized + '\u2026'; + } - this._send(data); - }, - _trimPacket: function _trimPacket(data) { - // For now, we only want to truncate the two different messages - // but this could/should be expanded to just trim everything - var max = this._globalOptions.maxMessageLength; + return ''; +} - if (data.message) { - data.message = truncate(data.message, max); +function sanitize(input, sanitizeKeys) { + if (!isArray(sanitizeKeys) || (isArray(sanitizeKeys) && sanitizeKeys.length === 0)) + return input; + + var sanitizeRegExp = joinRegExp(sanitizeKeys); + var sanitizeMask = '********'; + var safeInput; + + try { + safeInput = JSON.parse(stringify(input)); + } catch (o_O) { + return input; + } + + function sanitizeWorker(workerInput) { + if (isArray(workerInput)) { + return workerInput.map(function(val) { + return sanitizeWorker(val); + }); } - if (data.exception) { - var exception = data.exception.values[0]; - exception.value = truncate(exception.value, max); + if (isPlainObject(workerInput)) { + return Object.keys(workerInput).reduce(function(acc, k) { + if (sanitizeRegExp.test(k)) { + acc[k] = sanitizeMask; + } else { + acc[k] = sanitizeWorker(workerInput[k]); + } + return acc; + }, {}); } - var request = data.request; + return workerInput; + } - if (request) { - if (request.url) { - request.url = truncate(request.url, this._globalOptions.maxUrlLength); - } + return sanitizeWorker(safeInput); +} - if (request.Referer) { - request.Referer = truncate(request.Referer, this._globalOptions.maxUrlLength); - } - } +module.exports = { + isObject: isObject, + isError: isError, + isErrorEvent: isErrorEvent, + isUndefined: isUndefined, + isFunction: isFunction, + isPlainObject: isPlainObject, + isString: isString, + isArray: isArray, + isEmptyObject: isEmptyObject, + supportsErrorEvent: supportsErrorEvent, + supportsFetch: supportsFetch, + supportsReferrerPolicy: supportsReferrerPolicy, + supportsPromiseRejectionEvent: supportsPromiseRejectionEvent, + wrappedCallback: wrappedCallback, + each: each, + objectMerge: objectMerge, + truncate: truncate, + objectFrozen: objectFrozen, + hasKey: hasKey, + joinRegExp: joinRegExp, + urlencode: urlencode, + uuid4: uuid4, + htmlTreeAsString: htmlTreeAsString, + htmlElementAsString: htmlElementAsString, + isSameException: isSameException, + isSameStacktrace: isSameStacktrace, + parseUrl: parseUrl, + fill: fill, + safeJoin: safeJoin, + serializeException: serializeException, + serializeKeysForMessage: serializeKeysForMessage, + sanitize: sanitize +}; - if (data.breadcrumbs && data.breadcrumbs.values) this._trimBreadcrumbs(data.breadcrumbs); - return data; - }, +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"9":9}],8:[function(_dereq_,module,exports){ +(function (global){ +var utils = _dereq_(7); - /** - * Truncate breadcrumb values (right now just URLs) - */ - _trimBreadcrumbs: function _trimBreadcrumbs(breadcrumbs) { - // known breadcrumb properties with urls - // TODO: also consider arbitrary prop values that start with (https?)?:// - var urlProps = ['to', 'from', 'url'], - urlProp, - crumb, - data; +/* + TraceKit - Cross brower stack traces - for (var i = 0; i < breadcrumbs.values.length; ++i) { - crumb = breadcrumbs.values[i]; - if (!crumb.hasOwnProperty('data') || !isObject(crumb.data) || objectFrozen(crumb.data)) continue; - data = objectMerge({}, crumb.data); + This was originally forked from github.com/occ/TraceKit, but has since been + largely re-written and is now maintained as part of raven-js. Tests for + this are in test/vendor. - for (var j = 0; j < urlProps.length; ++j) { - urlProp = urlProps[j]; + MIT license +*/ - if (data.hasOwnProperty(urlProp) && data[urlProp]) { - data[urlProp] = truncate(data[urlProp], this._globalOptions.maxUrlLength); - } - } +var TraceKit = { + collectWindowErrors: true, + debug: false +}; - breadcrumbs.values[i].data = data; - } - }, - _getHttpData: function _getHttpData() { - if (!this._hasNavigator && !this._hasDocument) return; - var httpData = {}; +// This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) +var _window = + typeof window !== 'undefined' + ? window + : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; - if (this._hasNavigator && _navigator.userAgent) { - httpData.headers = { - 'User-Agent': navigator.userAgent - }; - } // Check in `window` instead of `document`, as we may be in ServiceWorker environment +// global reference to slice +var _slice = [].slice; +var UNKNOWN_FUNCTION = '?'; +// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error#Error_types +var ERROR_TYPES_RE = /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/; - if (_window$1.location && _window$1.location.href) { - httpData.url = _window$1.location.href; - } +function getLocationHref() { + if (typeof document === 'undefined' || document.location == null) return ''; - if (this._hasDocument && _document.referrer) { - if (!httpData.headers) httpData.headers = {}; - httpData.headers.Referer = _document.referrer; - } + return document.location.href; +} - return httpData; - }, - _resetBackoff: function _resetBackoff() { - this._backoffDuration = 0; - this._backoffStart = null; - }, - _shouldBackoff: function _shouldBackoff() { - return this._backoffDuration && now() - this._backoffStart < this._backoffDuration; - }, +/** + * TraceKit.report: cross-browser processing of unhandled exceptions + * + * Syntax: + * TraceKit.report.subscribe(function(stackInfo) { ... }) + * TraceKit.report.unsubscribe(function(stackInfo) { ... }) + * TraceKit.report(exception) + * try { ...code... } catch(ex) { TraceKit.report(ex); } + * + * Supports: + * - Firefox: full stack trace with line numbers, plus column number + * on top frame; column number is not guaranteed + * - Opera: full stack trace with line and column numbers + * - Chrome: full stack trace with line and column numbers + * - Safari: line and column number for the top frame only; some frames + * may be missing, and column number is not guaranteed + * - IE: line and column number for the top frame only; some frames + * may be missing, and column number is not guaranteed + * + * In theory, TraceKit should work on all of the following versions: + * - IE5.5+ (only 8.0 tested) + * - Firefox 0.9+ (only 3.5+ tested) + * - Opera 7+ (only 10.50 tested; versions 9 and earlier may require + * Exceptions Have Stacktrace to be enabled in opera:config) + * - Safari 3+ (only 4+ tested) + * - Chrome 1+ (only 5+ tested) + * - Konqueror 3.5+ (untested) + * + * Requires TraceKit.computeStackTrace. + * + * Tries to catch all unhandled exceptions and report them to the + * subscribed handlers. Please note that TraceKit.report will rethrow the + * exception. This is REQUIRED in order to get a useful stack trace in IE. + * If the exception does not reach the top of the browser, you will only + * get a stack trace from the point where TraceKit.report was called. + * + * Handlers receive a stackInfo object as described in the + * TraceKit.computeStackTrace docs. + */ +TraceKit.report = (function reportModuleWrapper() { + var handlers = [], + lastArgs = null, + lastException = null, + lastExceptionStack = null; /** - * Returns true if the in-process data payload matches the signature - * of the previously-sent data - * - * NOTE: This has to be done at this level because TraceKit can generate - * data from window.onerror WITHOUT an exception object (IE8, IE9, - * other old browsers). This can take the form of an "exception" - * data object with a single frame (derived from the onerror args). + * Add a crash handler. + * @param {Function} handler */ - _isRepeatData: function _isRepeatData(current) { - var last = this._lastData; - if (!last || current.message !== last.message || // defined for captureMessage - current.culprit !== last.culprit // defined for captureException/onerror - ) return false; // Stacktrace interface (i.e. from captureMessage) + function subscribe(handler) { + installGlobalHandler(); + handlers.push(handler); + } - if (current.stacktrace || last.stacktrace) { - return isSameStacktrace(current.stacktrace, last.stacktrace); - } else if (current.exception || last.exception) { - // Exception interface (i.e. from captureException/onerror) - return isSameException(current.exception, last.exception); + /** + * Remove a crash handler. + * @param {Function} handler + */ + function unsubscribe(handler) { + for (var i = handlers.length - 1; i >= 0; --i) { + if (handlers[i] === handler) { + handlers.splice(i, 1); + } } + } - return true; - }, - _setBackoffState: function _setBackoffState(request) { - // If we are already in a backoff state, don't change anything - if (this._shouldBackoff()) { + /** + * Remove all crash handlers. + */ + function unsubscribeAll() { + uninstallGlobalHandler(); + handlers = []; + } + + /** + * Dispatch stack information to all handlers. + * @param {Object.} stack + */ + function notifyHandlers(stack, isWindowError) { + var exception = null; + if (isWindowError && !TraceKit.collectWindowErrors) { return; } + for (var i in handlers) { + if (handlers.hasOwnProperty(i)) { + try { + handlers[i].apply(null, [stack].concat(_slice.call(arguments, 2))); + } catch (inner) { + exception = inner; + } + } + } - var status = request.status; // 400 - project_id doesn't exist or some other fatal - // 401 - invalid/revoked dsn - // 429 - too many requests - - if (!(status === 400 || status === 401 || status === 429)) return; - var retry; - - try { - // If Retry-After is not in Access-Control-Expose-Headers, most - // browsers will throw an exception trying to access it - if (supportsFetch()) { - retry = request.headers.get('Retry-After'); - } else { - retry = request.getResponseHeader('Retry-After'); - } // Retry-After is returned in seconds - - - retry = parseInt(retry, 10) * 1000; - } catch (e) { - /* eslint no-empty:0 */ + if (exception) { + throw exception; } + } - this._backoffDuration = retry ? // If Sentry server returned a Retry-After value, use it - retry : // Otherwise, double the last backoff duration (starts at 1 sec) - this._backoffDuration * 2 || 1000; - this._backoffStart = now(); - }, - _send: function _send(data) { - var globalOptions = this._globalOptions; + var _oldOnerrorHandler, _onErrorHandlerInstalled; - var baseData = { - project: this._globalProject, - logger: globalOptions.logger, - platform: 'javascript' - }, - httpData = this._getHttpData(); + /** + * Ensures all global unhandled exceptions are recorded. + * Supported by Gecko and IE. + * @param {string} msg Error message. + * @param {string} url URL of script that generated the exception. + * @param {(number|string)} lineNo The line number at which the error + * occurred. + * @param {?(number|string)} colNo The column number at which the error + * occurred. + * @param {?Error} ex The actual Error object. + */ + function traceKitWindowOnError(msg, url, lineNo, colNo, ex) { + var stack = null; + // If 'ex' is ErrorEvent, get real Error from inside + var exception = utils.isErrorEvent(ex) ? ex.error : ex; + // If 'msg' is ErrorEvent, get real message from inside + var message = utils.isErrorEvent(msg) ? msg.message : msg; - if (httpData) { - baseData.request = httpData; - } // HACK: delete `trimHeadFrames` to prevent from appearing in outbound payload + if (lastExceptionStack) { + TraceKit.computeStackTrace.augmentStackTraceWithInitialElement( + lastExceptionStack, + url, + lineNo, + message + ); + processLastException(); + } else if (exception && utils.isError(exception)) { + // non-string `exception` arg; attempt to extract stack trace + // New chrome and blink send along a real error object + // Let's just report that like a normal error. + // See: https://mikewest.org/2013/08/debugging-runtime-errors-with-window-onerror + stack = TraceKit.computeStackTrace(exception); + notifyHandlers(stack, true); + } else { + var location = { + url: url, + line: lineNo, + column: colNo + }; - if (data.trimHeadFrames) delete data.trimHeadFrames; - data = objectMerge(baseData, data); // Merge in the tags and extra separately since objectMerge doesn't handle a deep merge + var name = undefined; + var groups; - data.tags = objectMerge(objectMerge({}, this._globalContext.tags), data.tags); - data.extra = objectMerge(objectMerge({}, this._globalContext.extra), data.extra); // Send along our own collected metadata with extra + if ({}.toString.call(message) === '[object String]') { + var groups = message.match(ERROR_TYPES_RE); + if (groups) { + name = groups[1]; + message = groups[2]; + } + } - data.extra['session:duration'] = now() - this._startTime; + location.func = UNKNOWN_FUNCTION; - if (this._breadcrumbs && this._breadcrumbs.length > 0) { - // intentionally make shallow copy so that additions - // to breadcrumbs aren't accidentally sent in this request - data.breadcrumbs = { - values: [].slice.call(this._breadcrumbs, 0) + stack = { + name: name, + message: message, + url: getLocationHref(), + stack: [location] }; + notifyHandlers(stack, true); } - if (this._globalContext.user) { - // sentry.interfaces.User - data.user = this._globalContext.user; - } // Include the environment if it's defined in globalOptions + if (_oldOnerrorHandler) { + return _oldOnerrorHandler.apply(this, arguments); + } + return false; + } - if (globalOptions.environment) data.environment = globalOptions.environment; // Include the release if it's defined in globalOptions + function installGlobalHandler() { + if (_onErrorHandlerInstalled) { + return; + } + _oldOnerrorHandler = _window.onerror; + _window.onerror = traceKitWindowOnError; + _onErrorHandlerInstalled = true; + } - if (globalOptions.release) data.release = globalOptions.release; // Include server_name if it's defined in globalOptions + function uninstallGlobalHandler() { + if (!_onErrorHandlerInstalled) { + return; + } + _window.onerror = _oldOnerrorHandler; + _onErrorHandlerInstalled = false; + _oldOnerrorHandler = undefined; + } - if (globalOptions.serverName) data.server_name = globalOptions.serverName; // Cleanup empty properties before sending them to the server + function processLastException() { + var _lastExceptionStack = lastExceptionStack, + _lastArgs = lastArgs; + lastArgs = null; + lastExceptionStack = null; + lastException = null; + notifyHandlers.apply(null, [_lastExceptionStack, false].concat(_lastArgs)); + } - Object.keys(data).forEach(function (key) { - if (data[key] == null || data[key] === '' || isEmptyObject(data[key])) { - delete data[key]; + /** + * Reports an unhandled Error to TraceKit. + * @param {Error} ex + * @param {?boolean} rethrow If false, do not re-throw the exception. + * Only used for window.onerror to not cause an infinite loop of + * rethrowing. + */ + function report(ex, rethrow) { + var args = _slice.call(arguments, 1); + if (lastExceptionStack) { + if (lastException === ex) { + return; // already caught by an inner catch block, ignore + } else { + processLastException(); } - }); - - if (isFunction(globalOptions.dataCallback)) { - data = globalOptions.dataCallback(data) || data; - } // Why?????????? + } + var stack = TraceKit.computeStackTrace(ex); + lastExceptionStack = stack; + lastException = ex; + lastArgs = args; - if (!data || isEmptyObject(data)) { - return; - } // Check if the request should be filtered or not + // If the stack trace is incomplete, wait for 2 seconds for + // slow slow IE to see if onerror occurs or not before reporting + // this exception; otherwise, we will end up with an incomplete + // stack trace + setTimeout(function() { + if (lastException === ex) { + processLastException(); + } + }, stack.incomplete ? 2000 : 0); + if (rethrow !== false) { + throw ex; // re-throw to propagate to the top level (and cause window.onerror) + } + } - if (isFunction(globalOptions.shouldSendCallback) && !globalOptions.shouldSendCallback(data)) { - return; - } // Backoff state: Sentry server previously responded w/ an error (e.g. 429 - too many requests), - // so drop requests until "cool-off" period has elapsed. + report.subscribe = subscribe; + report.unsubscribe = unsubscribe; + report.uninstall = unsubscribeAll; + return report; +})(); +/** + * TraceKit.computeStackTrace: cross-browser stack traces in JavaScript + * + * Syntax: + * s = TraceKit.computeStackTrace(exception) // consider using TraceKit.report instead (see below) + * Returns: + * s.name - exception name + * s.message - exception message + * s.stack[i].url - JavaScript or HTML file URL + * s.stack[i].func - function name, or empty for anonymous functions (if guessing did not work) + * s.stack[i].args - arguments passed to the function, if known + * s.stack[i].line - line number, if known + * s.stack[i].column - column number, if known + * + * Supports: + * - Firefox: full stack trace with line numbers and unreliable column + * number on top frame + * - Opera 10: full stack trace with line and column numbers + * - Opera 9-: full stack trace with line numbers + * - Chrome: full stack trace with line and column numbers + * - Safari: line and column number for the topmost stacktrace element + * only + * - IE: no line numbers whatsoever + * + * Tries to guess names of anonymous functions by looking for assignments + * in the source code. In IE and Safari, we have to guess source file names + * by searching for function bodies inside all page scripts. This will not + * work for scripts that are loaded cross-domain. + * Here be dragons: some function names may be guessed incorrectly, and + * duplicate functions may be mismatched. + * + * TraceKit.computeStackTrace should only be used for tracing purposes. + * Logging of unhandled exceptions should be done with TraceKit.report, + * which builds on top of TraceKit.computeStackTrace and provides better + * IE support by utilizing the window.onerror event to retrieve information + * about the top of the stack. + * + * Note: In IE and Safari, no stack trace is recorded on the Error object, + * so computeStackTrace instead walks its *own* chain of callers. + * This means that: + * * in Safari, some methods may be missing from the stack trace; + * * in IE, the topmost function in the stack trace will always be the + * caller of computeStackTrace. + * + * This is okay for tracing (because you are likely to be calling + * computeStackTrace from the function you want to be the topmost element + * of the stack trace anyway), but not okay for logging unhandled + * exceptions (because your catch block will likely be far away from the + * inner function that actually caused the exception). + * + */ +TraceKit.computeStackTrace = (function computeStackTraceWrapper() { + // Contents of Exception in various browsers. + // + // SAFARI: + // ex.message = Can't find variable: qq + // ex.line = 59 + // ex.sourceId = 580238192 + // ex.sourceURL = http://... + // ex.expressionBeginOffset = 96 + // ex.expressionCaretOffset = 98 + // ex.expressionEndOffset = 98 + // ex.name = ReferenceError + // + // FIREFOX: + // ex.message = qq is not defined + // ex.fileName = http://... + // ex.lineNumber = 59 + // ex.columnNumber = 69 + // ex.stack = ...stack trace... (see the example below) + // ex.name = ReferenceError + // + // CHROME: + // ex.message = qq is not defined + // ex.name = ReferenceError + // ex.type = not_defined + // ex.arguments = ['aa'] + // ex.stack = ...stack trace... + // + // INTERNET EXPLORER: + // ex.message = ... + // ex.name = ReferenceError + // + // OPERA: + // ex.message = ...message... (see the example below) + // ex.name = ReferenceError + // ex.opera#sourceloc = 11 (pretty much useless, duplicates the info in ex.message) + // ex.stacktrace = n/a; see 'opera:config#UserPrefs|Exceptions Have Stacktrace' - if (this._shouldBackoff()) { - this._logDebug('warn', 'Raven dropped error due to backoff: ', data); + /** + * Computes stack trace information from the stack property. + * Chrome and Gecko use this property. + * @param {Error} ex + * @return {?Object.} Stack trace information. + */ + function computeStackTraceFromStackProp(ex) { + if (typeof ex.stack === 'undefined' || !ex.stack) return; - return; - } + var chrome = /^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i; + var winjs = /^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i; + // NOTE: blob urls are now supposed to always have an origin, therefore it's format + // which is `blob:http://url/path/with-some-uuid`, is matched by `blob.*?:\/` as well + var gecko = /^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i; + // Used to additionally parse URL/line/column from eval frames + var geckoEval = /(\S+) line (\d+)(?: > eval line \d+)* > eval/i; + var chromeEval = /\((\S*)(?::(\d+))(?::(\d+))\)/; + var lines = ex.stack.split('\n'); + var stack = []; + var submatch; + var parts; + var element; + var reference = /^(.*) is undefined$/.exec(ex.message); - if (typeof globalOptions.sampleRate === 'number') { - if (Math.random() < globalOptions.sampleRate) { - this._sendProcessedPayload(data); + for (var i = 0, j = lines.length; i < j; ++i) { + if ((parts = chrome.exec(lines[i]))) { + var isNative = parts[2] && parts[2].indexOf('native') === 0; // start of line + var isEval = parts[2] && parts[2].indexOf('eval') === 0; // start of line + if (isEval && (submatch = chromeEval.exec(parts[2]))) { + // throw out eval line/column and use top-most line/column number + parts[2] = submatch[1]; // url + parts[3] = submatch[2]; // line + parts[4] = submatch[3]; // column + } + element = { + url: !isNative ? parts[2] : null, + func: parts[1] || UNKNOWN_FUNCTION, + args: isNative ? [parts[2]] : [], + line: parts[3] ? +parts[3] : null, + column: parts[4] ? +parts[4] : null + }; + } else if ((parts = winjs.exec(lines[i]))) { + element = { + url: parts[2], + func: parts[1] || UNKNOWN_FUNCTION, + args: [], + line: +parts[3], + column: parts[4] ? +parts[4] : null + }; + } else if ((parts = gecko.exec(lines[i]))) { + var isEval = parts[3] && parts[3].indexOf(' > eval') > -1; + if (isEval && (submatch = geckoEval.exec(parts[3]))) { + // throw out eval line/column and use top-most line number + parts[3] = submatch[1]; + parts[4] = submatch[2]; + parts[5] = null; // no column when eval + } else if (i === 0 && !parts[5] && typeof ex.columnNumber !== 'undefined') { + // FireFox uses this awesome columnNumber property for its top frame + // Also note, Firefox's column number is 0-based and everything else expects 1-based, + // so adding 1 + // NOTE: this hack doesn't work if top-most frame is eval + stack[0].column = ex.columnNumber + 1; + } + element = { + url: parts[3], + func: parts[1] || UNKNOWN_FUNCTION, + args: parts[2] ? parts[2].split(',') : [], + line: parts[4] ? +parts[4] : null, + column: parts[5] ? +parts[5] : null + }; + } else { + continue; } - } else { - this._sendProcessedPayload(data); - } - }, - _getUuid: function _getUuid() { - return uuid4(); - }, - _sendProcessedPayload: function _sendProcessedPayload(data, callback) { - var self = this; - var globalOptions = this._globalOptions; - if (!this.isSetup()) return; // Try and clean up the packet before sending by truncating long values - - data = this._trimPacket(data); // ideally duplicate error testing should occur *before* dataCallback/shouldSendCallback, - // but this would require copying an un-truncated copy of the data packet, which can be - // arbitrarily deep (extra_data) -- could be worthwhile? will revisit - - if (!this._globalOptions.allowDuplicates && this._isRepeatData(data)) { - this._logDebug('warn', 'Raven dropped repeat event: ', data); - - return; - } // Send along an event_id if not explicitly passed. - // This event_id can be used to reference the error within Sentry itself. - // Set lastEventId after we know the error should actually be sent + if (!element.func && element.line) { + element.func = UNKNOWN_FUNCTION; + } - this._lastEventId = data.event_id || (data.event_id = this._getUuid()); // Store outbound payload after trim + stack.push(element); + } - this._lastData = data; + if (!stack.length) { + return null; + } - this._logDebug('debug', 'Raven about to send:', data); + return { + name: ex.name, + message: ex.message, + url: getLocationHref(), + stack: stack + }; + } - var auth = { - sentry_version: '7', - sentry_client: 'raven-js/' + this.VERSION, - sentry_key: this._globalKey + /** + * Adds information about the first frame to incomplete stack traces. + * Safari and IE require this to get complete data on the first frame. + * @param {Object.} stackInfo Stack trace information from + * one of the compute* methods. + * @param {string} url The URL of the script that caused an error. + * @param {(number|string)} lineNo The line number of the script that + * caused an error. + * @param {string=} message The error generated by the browser, which + * hopefully contains the name of the object that caused the error. + * @return {boolean} Whether or not the stack information was + * augmented. + */ + function augmentStackTraceWithInitialElement(stackInfo, url, lineNo, message) { + var initial = { + url: url, + line: lineNo }; - if (this._globalSecret) { - auth.sentry_secret = this._globalSecret; - } + if (initial.url && initial.line) { + stackInfo.incomplete = false; - var exception = data.exception && data.exception.values[0]; // only capture 'sentry' breadcrumb is autoBreadcrumbs is truthy + if (!initial.func) { + initial.func = UNKNOWN_FUNCTION; + } - if (this._globalOptions.autoBreadcrumbs && this._globalOptions.autoBreadcrumbs.sentry) { - this.captureBreadcrumb({ - category: 'sentry', - message: exception ? (exception.type ? exception.type + ': ' : '') + exception.value : data.message, - event_id: data.event_id, - level: data.level || 'error' // presume error unless specified + if (stackInfo.stack.length > 0) { + if (stackInfo.stack[0].url === initial.url) { + if (stackInfo.stack[0].line === initial.line) { + return false; // already in stack trace + } else if ( + !stackInfo.stack[0].line && + stackInfo.stack[0].func === initial.func + ) { + stackInfo.stack[0].line = initial.line; + return false; + } + } + } - }); + stackInfo.stack.unshift(initial); + stackInfo.partial = true; + return true; + } else { + stackInfo.incomplete = true; } - var url = this._globalEndpoint; - - (globalOptions.transport || this._makeRequest).call(this, { - url: url, - auth: auth, - data: data, - options: globalOptions, - onSuccess: function success() { - self._resetBackoff(); + return false; + } - self._triggerEvent('success', { - data: data, - src: url - }); + /** + * Computes stack trace information by walking the arguments.caller + * chain at the time the exception occurred. This will cause earlier + * frames to be missed but is the only way to get any stack trace in + * Safari and IE. The top frame is restored by + * {@link augmentStackTraceWithInitialElement}. + * @param {Error} ex + * @return {?Object.} Stack trace information. + */ + function computeStackTraceByWalkingCallerChain(ex, depth) { + var functionName = /function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i, + stack = [], + funcs = {}, + recursion = false, + parts, + item, + source; + + for ( + var curr = computeStackTraceByWalkingCallerChain.caller; + curr && !recursion; + curr = curr.caller + ) { + if (curr === computeStackTrace || curr === TraceKit.report) { + // console.log('skipping internal function'); + continue; + } - callback && callback(); - }, - onError: function failure(error) { - self._logDebug('error', 'Raven transport failed to send: ', error); + item = { + url: null, + func: UNKNOWN_FUNCTION, + line: null, + column: null + }; - if (error.request) { - self._setBackoffState(error.request); - } + if (curr.name) { + item.func = curr.name; + } else if ((parts = functionName.exec(curr.toString()))) { + item.func = parts[1]; + } - self._triggerEvent('failure', { - data: data, - src: url - }); + if (typeof item.func === 'undefined') { + try { + item.func = parts.input.substring(0, parts.input.indexOf('{')); + } catch (e) {} + } - error = error || new Error('Raven send failed (no additional details provided)'); - callback && callback(error); + if (funcs['' + curr]) { + recursion = true; + } else { + funcs['' + curr] = true; } - }); - }, - _makeRequest: function _makeRequest(opts) { - // Auth is intentionally sent as part of query string (NOT as custom HTTP header) to avoid preflight CORS requests - var url = opts.url + '?' + urlencode(opts.auth); - var evaluatedHeaders = null; - var evaluatedFetchParameters = {}; - if (opts.options.headers) { - evaluatedHeaders = this._evaluateHash(opts.options.headers); + stack.push(item); } - if (opts.options.fetchParameters) { - evaluatedFetchParameters = this._evaluateHash(opts.options.fetchParameters); + if (depth) { + // console.log('depth is ' + depth); + // console.log('stack is ' + stack.length); + stack.splice(0, depth); } - if (supportsFetch()) { - evaluatedFetchParameters.body = stringify_1(opts.data); - var defaultFetchOptions = objectMerge({}, this._fetchDefaults); - var fetchOptions = objectMerge(defaultFetchOptions, evaluatedFetchParameters); + var result = { + name: ex.name, + message: ex.message, + url: getLocationHref(), + stack: stack + }; + augmentStackTraceWithInitialElement( + result, + ex.sourceURL || ex.fileName, + ex.line || ex.lineNumber, + ex.message || ex.description + ); + return result; + } - if (evaluatedHeaders) { - fetchOptions.headers = evaluatedHeaders; - } + /** + * Computes a stack trace for an exception. + * @param {Error} ex + * @param {(string|number)=} depth + */ + function computeStackTrace(ex, depth) { + var stack = null; + depth = depth == null ? 0 : +depth; - return _window$1.fetch(url, fetchOptions).then(function (response) { - if (response.ok) { - opts.onSuccess && opts.onSuccess(); - } else { - var error = new Error('Sentry error code: ' + response.status); // It's called request only to keep compatibility with XHR interface - // and not add more redundant checks in setBackoffState method + try { + stack = computeStackTraceFromStackProp(ex); + if (stack) { + return stack; + } + } catch (e) { + if (TraceKit.debug) { + throw e; + } + } - error.request = response; - opts.onError && opts.onError(error); - } - })['catch'](function () { - opts.onError && opts.onError(new Error('Sentry error code: network unavailable')); - }); + try { + stack = computeStackTraceByWalkingCallerChain(ex, depth + 1); + if (stack) { + return stack; + } + } catch (e) { + if (TraceKit.debug) { + throw e; + } } + return { + name: ex.name, + message: ex.message, + url: getLocationHref() + }; + } - var request = _window$1.XMLHttpRequest && new _window$1.XMLHttpRequest(); - if (!request) return; // if browser doesn't support CORS (e.g. IE7), we are out of luck + computeStackTrace.augmentStackTraceWithInitialElement = augmentStackTraceWithInitialElement; + computeStackTrace.computeStackTraceFromStackProp = computeStackTraceFromStackProp; - var hasCORS = 'withCredentials' in request || typeof XDomainRequest !== 'undefined'; - if (!hasCORS) return; + return computeStackTrace; +})(); - if ('withCredentials' in request) { - request.onreadystatechange = function () { - if (request.readyState !== 4) { - return; - } else if (request.status === 200) { - opts.onSuccess && opts.onSuccess(); - } else if (opts.onError) { - var err = new Error('Sentry error code: ' + request.status); - err.request = request; - opts.onError(err); - } - }; - } else { - request = new XDomainRequest(); // xdomainrequest cannot go http -> https (or vice versa), - // so always use protocol relative +module.exports = TraceKit; - url = url.replace(/^https?:/, ''); // onreadystatechange not supported by XDomainRequest +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"7":7}],9:[function(_dereq_,module,exports){ +/* + json-stringify-safe + Like JSON.stringify, but doesn't throw on circular references. - if (opts.onSuccess) { - request.onload = opts.onSuccess; - } + Originally forked from https://github.com/isaacs/json-stringify-safe + version 5.0.1 on 3/8/2017 and modified to handle Errors serialization + and IE8 compatibility. Tests for this are in test/vendor. - if (opts.onError) { - request.onerror = function () { - var err = new Error('Sentry error code: XDomainRequest'); - err.request = request; - opts.onError(err); - }; - } - } + ISC license: https://github.com/isaacs/json-stringify-safe/blob/master/LICENSE +*/ - request.open('POST', url); +exports = module.exports = stringify; +exports.getSerialize = serializer; - if (evaluatedHeaders) { - each(evaluatedHeaders, function (key, value) { - request.setRequestHeader(key, value); - }); - } +function indexOf(haystack, needle) { + for (var i = 0; i < haystack.length; ++i) { + if (haystack[i] === needle) return i; + } + return -1; +} - request.send(stringify_1(opts.data)); - }, - _evaluateHash: function _evaluateHash(hash) { - var evaluated = {}; +function stringify(obj, replacer, spaces, cycleReplacer) { + return JSON.stringify(obj, serializer(replacer, cycleReplacer), spaces); +} - for (var key in hash) { - if (hash.hasOwnProperty(key)) { - var value = hash[key]; - evaluated[key] = typeof value === 'function' ? value() : value; - } - } +// https://github.com/ftlabs/js-abbreviate/blob/fa709e5f139e7770a71827b1893f22418097fbda/index.js#L95-L106 +function stringifyError(value) { + var err = { + // These properties are implemented as magical getters and don't show up in for in + stack: value.stack, + message: value.message, + name: value.name + }; - return evaluated; - }, - _logDebug: function _logDebug(level) { - if (this._originalConsoleMethods[level] && this.debug) { - // In IE<10 console methods do not have their own 'apply' method - Function.prototype.apply.call(this._originalConsoleMethods[level], this._originalConsole, [].slice.call(arguments, 1)); - } - }, - _mergeContext: function _mergeContext(key, context) { - if (isUndefined(context)) { - delete this._globalContext[key]; - } else { - this._globalContext[key] = objectMerge(this._globalContext[key] || {}, context); + for (var i in value) { + if (Object.prototype.hasOwnProperty.call(value, i)) { + err[i] = value[i]; } } -}; // Deprecations -Raven$1.prototype.setUser = Raven$1.prototype.setUserContext; -Raven$1.prototype.setReleaseContext = Raven$1.prototype.setRelease; -var raven = Raven$1; + return err; +} -/** - * Enforces a single instance of the Raven client, and the - * main entry point for Raven. If you are a consumer of the - * Raven library, you SHOULD load this file (vs raven.js). - **/ -// This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) +function serializer(replacer, cycleReplacer) { + var stack = []; + var keys = []; -var _window = typeof window !== 'undefined' ? window : typeof commonjsGlobal !== 'undefined' ? commonjsGlobal : typeof self !== 'undefined' ? self : {}; + if (cycleReplacer == null) { + cycleReplacer = function(key, value) { + if (stack[0] === value) { + return '[Circular ~]'; + } + return '[Circular ~.' + keys.slice(0, indexOf(stack, value)).join('.') + ']'; + }; + } -var _Raven = _window.Raven; -var Raven = new raven(); -/* - * Allow multiple versions of Raven to be installed. - * Strip Raven from the global context and returns the instance. - * - * @return {Raven} - */ + return function(key, value) { + if (stack.length > 0) { + var thisPos = indexOf(stack, this); + ~thisPos ? stack.splice(thisPos + 1) : stack.push(this); + ~thisPos ? keys.splice(thisPos, Infinity, key) : keys.push(key); -Raven.noConflict = function () { - _window.Raven = _Raven; - return Raven; -}; + if (~indexOf(stack, value)) { + value = cycleReplacer.call(this, key, value); + } + } else { + stack.push(value); + } -Raven.afterLoad(); -var singleton = Raven; + return replacer == null + ? value instanceof Error ? stringifyError(value) : value + : replacer.call(this, key, value); + }; +} -/** - * console plugin +},{}],10:[function(_dereq_,module,exports){ +/* + * JavaScript MD5 + * https://github.com/blueimp/JavaScript-MD5 * - * Monkey patches console.* calls into Sentry messages with - * their appropriate log levels. (Experimental) + * Copyright 2011, Sebastian Tschan + * https://blueimp.net * - * Options: + * Licensed under the MIT license: + * https://opensource.org/licenses/MIT * - * `levels`: An array of levels (methods on `console`) to report to Sentry. - * Defaults to debug, info, warn, and error. + * Based on + * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message + * Digest Algorithm, as defined in RFC 1321. + * Version 2.2 Copyright (C) Paul Johnston 1999 - 2009 + * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet + * Distributed under the BSD License + * See http://pajhome.org.uk/crypt/md5 for more info. */ -var wrapConsoleMethod$1 = console$1.wrapMethod; - -function consolePlugin(Raven, console, pluginOptions) { - console = console || window.console || {}; - pluginOptions = pluginOptions || {}; - var logLevels = pluginOptions.levels || ['debug', 'info', 'warn', 'error']; - if ('assert' in console) logLevels.push('assert'); +/* +* Add integers, wrapping at 2^32. This uses 16-bit operations internally +* to work around bugs in some JS interpreters. +*/ +function safeAdd(x, y) { + var lsw = (x & 0xffff) + (y & 0xffff); + var msw = (x >> 16) + (y >> 16) + (lsw >> 16); + return (msw << 16) | (lsw & 0xffff); +} - var callback = function callback(msg, data) { - Raven.captureMessage(msg, data); - }; +/* +* Bitwise rotate a 32-bit number to the left. +*/ +function bitRotateLeft(num, cnt) { + return (num << cnt) | (num >>> (32 - cnt)); +} - var level = logLevels.pop(); +/* +* These functions implement the four basic operations the algorithm uses. +*/ +function md5cmn(q, a, b, x, s, t) { + return safeAdd(bitRotateLeft(safeAdd(safeAdd(a, q), safeAdd(x, t)), s), b); +} +function md5ff(a, b, c, d, x, s, t) { + return md5cmn((b & c) | (~b & d), a, b, x, s, t); +} +function md5gg(a, b, c, d, x, s, t) { + return md5cmn((b & d) | (c & ~d), a, b, x, s, t); +} +function md5hh(a, b, c, d, x, s, t) { + return md5cmn(b ^ c ^ d, a, b, x, s, t); +} +function md5ii(a, b, c, d, x, s, t) { + return md5cmn(c ^ (b | ~d), a, b, x, s, t); +} - while (level) { - wrapConsoleMethod$1(console, level, callback); - level = logLevels.pop(); +/* +* Calculate the MD5 of an array of little-endian words, and a bit length. +*/ +function binlMD5(x, len) { + /* append padding */ + x[len >> 5] |= 0x80 << (len % 32); + x[(((len + 64) >>> 9) << 4) + 14] = len; + + var i; + var olda; + var oldb; + var oldc; + var oldd; + var a = 1732584193; + var b = -271733879; + var c = -1732584194; + var d = 271733878; + + for (i = 0; i < x.length; i += 16) { + olda = a; + oldb = b; + oldc = c; + oldd = d; + + a = md5ff(a, b, c, d, x[i], 7, -680876936); + d = md5ff(d, a, b, c, x[i + 1], 12, -389564586); + c = md5ff(c, d, a, b, x[i + 2], 17, 606105819); + b = md5ff(b, c, d, a, x[i + 3], 22, -1044525330); + a = md5ff(a, b, c, d, x[i + 4], 7, -176418897); + d = md5ff(d, a, b, c, x[i + 5], 12, 1200080426); + c = md5ff(c, d, a, b, x[i + 6], 17, -1473231341); + b = md5ff(b, c, d, a, x[i + 7], 22, -45705983); + a = md5ff(a, b, c, d, x[i + 8], 7, 1770035416); + d = md5ff(d, a, b, c, x[i + 9], 12, -1958414417); + c = md5ff(c, d, a, b, x[i + 10], 17, -42063); + b = md5ff(b, c, d, a, x[i + 11], 22, -1990404162); + a = md5ff(a, b, c, d, x[i + 12], 7, 1804603682); + d = md5ff(d, a, b, c, x[i + 13], 12, -40341101); + c = md5ff(c, d, a, b, x[i + 14], 17, -1502002290); + b = md5ff(b, c, d, a, x[i + 15], 22, 1236535329); + + a = md5gg(a, b, c, d, x[i + 1], 5, -165796510); + d = md5gg(d, a, b, c, x[i + 6], 9, -1069501632); + c = md5gg(c, d, a, b, x[i + 11], 14, 643717713); + b = md5gg(b, c, d, a, x[i], 20, -373897302); + a = md5gg(a, b, c, d, x[i + 5], 5, -701558691); + d = md5gg(d, a, b, c, x[i + 10], 9, 38016083); + c = md5gg(c, d, a, b, x[i + 15], 14, -660478335); + b = md5gg(b, c, d, a, x[i + 4], 20, -405537848); + a = md5gg(a, b, c, d, x[i + 9], 5, 568446438); + d = md5gg(d, a, b, c, x[i + 14], 9, -1019803690); + c = md5gg(c, d, a, b, x[i + 3], 14, -187363961); + b = md5gg(b, c, d, a, x[i + 8], 20, 1163531501); + a = md5gg(a, b, c, d, x[i + 13], 5, -1444681467); + d = md5gg(d, a, b, c, x[i + 2], 9, -51403784); + c = md5gg(c, d, a, b, x[i + 7], 14, 1735328473); + b = md5gg(b, c, d, a, x[i + 12], 20, -1926607734); + + a = md5hh(a, b, c, d, x[i + 5], 4, -378558); + d = md5hh(d, a, b, c, x[i + 8], 11, -2022574463); + c = md5hh(c, d, a, b, x[i + 11], 16, 1839030562); + b = md5hh(b, c, d, a, x[i + 14], 23, -35309556); + a = md5hh(a, b, c, d, x[i + 1], 4, -1530992060); + d = md5hh(d, a, b, c, x[i + 4], 11, 1272893353); + c = md5hh(c, d, a, b, x[i + 7], 16, -155497632); + b = md5hh(b, c, d, a, x[i + 10], 23, -1094730640); + a = md5hh(a, b, c, d, x[i + 13], 4, 681279174); + d = md5hh(d, a, b, c, x[i], 11, -358537222); + c = md5hh(c, d, a, b, x[i + 3], 16, -722521979); + b = md5hh(b, c, d, a, x[i + 6], 23, 76029189); + a = md5hh(a, b, c, d, x[i + 9], 4, -640364487); + d = md5hh(d, a, b, c, x[i + 12], 11, -421815835); + c = md5hh(c, d, a, b, x[i + 15], 16, 530742520); + b = md5hh(b, c, d, a, x[i + 2], 23, -995338651); + + a = md5ii(a, b, c, d, x[i], 6, -198630844); + d = md5ii(d, a, b, c, x[i + 7], 10, 1126891415); + c = md5ii(c, d, a, b, x[i + 14], 15, -1416354905); + b = md5ii(b, c, d, a, x[i + 5], 21, -57434055); + a = md5ii(a, b, c, d, x[i + 12], 6, 1700485571); + d = md5ii(d, a, b, c, x[i + 3], 10, -1894986606); + c = md5ii(c, d, a, b, x[i + 10], 15, -1051523); + b = md5ii(b, c, d, a, x[i + 1], 21, -2054922799); + a = md5ii(a, b, c, d, x[i + 8], 6, 1873313359); + d = md5ii(d, a, b, c, x[i + 15], 10, -30611744); + c = md5ii(c, d, a, b, x[i + 6], 15, -1560198380); + b = md5ii(b, c, d, a, x[i + 13], 21, 1309151649); + a = md5ii(a, b, c, d, x[i + 4], 6, -145523070); + d = md5ii(d, a, b, c, x[i + 11], 10, -1120210379); + c = md5ii(c, d, a, b, x[i + 2], 15, 718787259); + b = md5ii(b, c, d, a, x[i + 9], 21, -343485551); + + a = safeAdd(a, olda); + b = safeAdd(b, oldb); + c = safeAdd(c, oldc); + d = safeAdd(d, oldd); } + return [a, b, c, d]; } -var console$3 = consolePlugin; - -/** - * Vue.js 2.0 plugin - * - */ -function formatComponentName(vm) { - if (vm.$root === vm) { - return 'root instance'; +/* +* Convert an array of little-endian words to a string +*/ +function binl2rstr(input) { + var i; + var output = ''; + var length32 = input.length * 32; + for (i = 0; i < length32; i += 8) { + output += String.fromCharCode((input[i >> 5] >>> (i % 32)) & 0xff); } - - var name = vm._isVue ? vm.$options.name || vm.$options._componentTag : vm.name; - return (name ? 'component <' + name + '>' : 'anonymous component') + (vm._isVue && vm.$options.__file ? ' at ' + vm.$options.__file : ''); + return output; } -function vuePlugin(Raven, Vue) { - Vue = Vue || window.Vue; // quit if Vue isn't on the page +/* +* Convert a raw string to an array of little-endian words +* Characters >255 have their high-byte silently ignored. +*/ +function rstr2binl(input) { + var i; + var output = []; + output[(input.length >> 2) - 1] = undefined; + for (i = 0; i < output.length; i += 1) { + output[i] = 0; + } + var length8 = input.length * 8; + for (i = 0; i < length8; i += 8) { + output[i >> 5] |= (input.charCodeAt(i / 8) & 0xff) << (i % 32); + } + return output; +} - if (!Vue || !Vue.config) return; - var _oldOnError = Vue.config.errorHandler; +/* +* Calculate the MD5 of a raw string +*/ +function rstrMD5(s) { + return binl2rstr(binlMD5(rstr2binl(s), s.length * 8)); +} - Vue.config.errorHandler = function VueErrorHandler(error, vm, info) { - var metaData = {}; // vm and lifecycleHook are not always available +/* +* Calculate the HMAC-MD5, of a key and some data (raw strings) +*/ +function rstrHMACMD5(key, data) { + var i; + var bkey = rstr2binl(key); + var ipad = []; + var opad = []; + var hash; + ipad[15] = opad[15] = undefined; + if (bkey.length > 16) { + bkey = binlMD5(bkey, key.length * 8); + } + for (i = 0; i < 16; i += 1) { + ipad[i] = bkey[i] ^ 0x36363636; + opad[i] = bkey[i] ^ 0x5c5c5c5c; + } + hash = binlMD5(ipad.concat(rstr2binl(data)), 512 + data.length * 8); + return binl2rstr(binlMD5(opad.concat(hash), 512 + 128)); +} - if (Object.prototype.toString.call(vm) === '[object Object]') { - metaData.componentName = formatComponentName(vm); - metaData.propsData = vm.$options.propsData; - } +/* +* Convert a raw string to a hex string +*/ +function rstr2hex(input) { + var hexTab = '0123456789abcdef'; + var output = ''; + var x; + var i; + for (i = 0; i < input.length; i += 1) { + x = input.charCodeAt(i); + output += hexTab.charAt((x >>> 4) & 0x0f) + hexTab.charAt(x & 0x0f); + } + return output; +} - if (typeof info !== 'undefined') { - metaData.lifecycleHook = info; - } +/* +* Encode a string as utf-8 +*/ +function str2rstrUTF8(input) { + return unescape(encodeURIComponent(input)); +} - Raven.captureException(error, { - extra: metaData - }); +/* +* Take string arguments and return either raw or hex encoded strings +*/ +function rawMD5(s) { + return rstrMD5(str2rstrUTF8(s)); +} +function hexMD5(s) { + return rstr2hex(rawMD5(s)); +} +function rawHMACMD5(k, d) { + return rstrHMACMD5(str2rstrUTF8(k), str2rstrUTF8(d)); +} +function hexHMACMD5(k, d) { + return rstr2hex(rawHMACMD5(k, d)); +} - if (typeof _oldOnError === 'function') { - _oldOnError.call(this, error, vm, info); +function md5(string, key, raw) { + if (!key) { + if (!raw) { + return hexMD5(string); } - }; + return rawMD5(string); + } + if (!raw) { + return hexHMACMD5(key, string); + } + return rawHMACMD5(key, string); } -var vue = vuePlugin; - -/* This file was generated by './scripts/generate-plugin-combinations.js'! */ - -singleton.addPlugin(console$3).addPlugin(vue); -var console_vue = {}; - -return console_vue; +module.exports = md5; -}))); +},{}]},{},[6,1,2])(6) +}); \ No newline at end of file diff --git a/dist/console,vue/raven.min.js b/dist/console,vue/raven.min.js index 62b450fa86f6..9ac3b7d796f0 100644 --- a/dist/console,vue/raven.min.js +++ b/dist/console,vue/raven.min.js @@ -1,3 +1,4 @@ -/*! Raven.js 3.22.2 (1b6187b) | github.com/getsentry/raven-js */ -!function(a,b){"object"==typeof exports&&"undefined"!=typeof module?module.exports=b():"function"==typeof define&&define.amd?define(b):a.Raven=b()}(this,function(){"use strict";function a(a,b){return b={exports:{}},a(b,b.exports),b.exports}function b(a){return(b="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(a){return typeof a}:function(a){return a&&"function"==typeof Symbol&&a.constructor===Symbol&&a!==Symbol.prototype?"symbol":typeof a})(a)}function c(a){return"object"===b(a)&&null!==a}function d(a){switch({}.toString.call(a)){case"[object Error]":return!0;case"[object Exception]":return!0;case"[object DOMException]":return!0;default:return a instanceof Error}}function e(a){return l()&&"[object ErrorEvent]"==={}.toString.call(a)}function f(a){return void 0===a}function g(a){return"function"==typeof a}function h(a){return"[object Object]"===Object.prototype.toString.call(a)}function i(a){return"[object String]"===Object.prototype.toString.call(a)}function j(a){return"[object Array]"===Object.prototype.toString.call(a)}function k(a){if(!h(a))return!1;for(var b in a)if(a.hasOwnProperty(b))return!1;return!0}function l(){try{return new ErrorEvent(""),!0}catch(a){return!1}}function m(){if(!("fetch"in P))return!1;try{return new Headers,new Request(""),new Response,!0}catch(a){return!1}}function n(a){function b(b,c){var d=a(b)||b;return c?c(d)||d:d}return b}function o(a,b){var c,d;if(f(a.length))for(c in a)s(a,c)&&b.call(null,c,a[c]);else if(d=a.length)for(c=0;c ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function y(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&i(b))for(c=b.split(/\s+/),f=0;f":"anonymous component")+(a._isVue&&a.$options.__file?" at "+a.$options.__file:"")}function M(a,b){if(b=b||window.Vue,b&&b.config){var c=b.config.errorHandler;b.config.errorHandler=function(b,d,e){var f={};"[object Object]"===Object.prototype.toString.call(d)&&(f.componentName=L(d),f.propsData=d.$options.propsData),"undefined"!=typeof e&&(f.lifecycleHook=e),a.captureException(b,{extra:f}),"function"==typeof c&&c.call(this,b,d,e)}}}var N="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{},O=Object.setPrototypeOf||function(a,b){return a.B=b,a},P=("object"==typeof Reflect&&Reflect.construct||function(a,b,c){var d,e=[null];return e.push.apply(e,b),d=a.bind.apply(a,e),O(new d,c.prototype)},"undefined"!=typeof window?window:"undefined"!=typeof N?N:"undefined"!=typeof self?self:{}),Q={isObject:c,isError:d,isErrorEvent:e,isUndefined:f,isFunction:g,isPlainObject:h,isString:i,isArray:j,isEmptyObject:k,supportsErrorEvent:l,supportsFetch:m,wrappedCallback:n,each:o,objectMerge:p,truncate:r,objectFrozen:q,hasKey:s,joinRegExp:t,urlencode:u,uuid4:w,htmlTreeAsString:x,htmlElementAsString:y,isSameException:B,isSameStacktrace:C,parseUrl:v,fill:D,safeJoin:E},R={collectWindowErrors:!0,debug:!1},S="undefined"!=typeof window?window:"undefined"!=typeof N?N:"undefined"!=typeof self?self:{},T=[].slice,U="?",V=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;R.report=function(){function a(a){f(),l.push(a)}function b(a){for(var b=l.length-1;b>=0;--b)l[b]===a&&l.splice(b,1)}function c(){g(),l=[]}function d(a,b){var c=null;if(!b||R.collectWindowErrors){for(var d in l)if(l.hasOwnProperty(d))try{l[d].apply(null,[a].concat(T.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function e(a,b,c,e,f){var g=null,i=Q.isErrorEvent(f)?f.error:f,k=Q.isErrorEvent(a)?a.message:a;if(o)R.computeStackTrace.augmentStackTraceWithInitialElement(o,b,c,k),h();else if(i&&Q.isError(i))g=R.computeStackTrace(i),d(g,!0);else{var l,m={url:b,line:c,column:e},n=void 0;if("[object String]"==={}.toString.call(k)){var l=k.match(V);l&&(n=l[1],k=l[2])}m.func=U,g={name:n,message:k,url:F(),stack:[m]},d(g,!0)}return!!j&&j.apply(this,arguments)}function f(){k||(j=S.onerror,S.onerror=e,k=!0)}function g(){k&&(S.onerror=j,k=!1,j=void 0)}function h(){var a=o,b=m;m=null,o=null,n=null,d.apply(null,[a,!1].concat(b))}function i(a,b){var c=T.call(arguments,1);if(o){if(n===a)return;h()}var d=R.computeStackTrace(a);if(o=d,n=a,m=c,setTimeout(function(){n===a&&h()},d.incomplete?2e3:0),b!==!1)throw a}var j,k,l=[],m=null,n=null,o=null;return i.subscribe=a,i.unsubscribe=b,i.uninstall=c,i}(),R.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,d,e=/^\s*at (.*?) ?\(((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,f=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|\[native).*?|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,g=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,h=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,i=/\((\S*)(?::(\d+))(?::(\d+))\)/,j=a.stack.split("\n"),k=[],l=(/^(.*) is undefined$/.exec(a.message),0),m=j.length;l eval")>-1;o&&(b=h.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==l||c[5]||"undefined"==typeof a.columnNumber||(k[0].column=a.columnNumber+1),d={url:c[3],func:c[1]||U,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}!d.func&&d.line&&(d.func=U),k.push(d)}return k.length?{name:a.name,message:a.message,url:F(),stack:k}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=U),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,e){for(var f,g,h=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,i=[],j={},k=!1,l=c.caller;l&&!k;l=l.caller)if(l!==d&&l!==R.report){if(g={url:null,func:U,line:null,column:null},l.name?g.func=l.name:(f=h.exec(l.toString()))&&(g.func=f[1]),"undefined"==typeof g.func)try{g.func=f.input.substring(0,f.input.indexOf("{"))}catch(m){}j[""+l]?k=!0:j[""+l]=!0,i.push(g)}e&&i.splice(0,e);var n={name:a.name,message:a.message,url:F(),stack:i};return b(n,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),n}function d(b,d){var e=null;d=null==d?0:+d;try{if(e=a(b))return e}catch(f){if(R.debug)throw f}try{if(e=c(b,d+1))return e}catch(f){if(R.debug)throw f}return{name:b.name,message:b.message,url:F()}}return d.augmentStackTraceWithInitialElement=b,d.computeStackTraceFromStackProp=a,d}();var W=R,X=a(function(a,b){function c(a,b){for(var c=0;c0){var i=c(d,this);~i?d.splice(i+1):d.push(this),~i?f.splice(i,1/0,g):f.push(g),~c(d,h)&&(h=b.call(this,g,h))}else d.push(h);return null==a?h instanceof Error?e(h):h:a.call(this,g,h)}}b=a.exports=d,b.getSerialize=f});G.prototype=new Error,G.prototype.constructor=G;var Y=G,Z=function(a,b,c){var d=a[b],e=a;if(b in a){var f="warn"===b?"warning":b;a[b]=function(){var a=[].slice.call(arguments),g=Q.safeJoin(a," "),h={level:f,logger:"console",extra:{arguments:a}};"assert"===b?a[0]===!1&&(g="Assertion failed: "+(Q.safeJoin(a.slice(1)," ")||"console.assert"),h.extra.arguments=a.slice(1),c&&c(g,h)):c&&c(g,h),d&&Function.prototype.apply.call(d,e,a)}}},$={wrapMethod:Z},_=Q.isError,aa=Q.isObject,ba=Q.isErrorEvent,ca=Q.isUndefined,da=Q.isFunction,ea=Q.isString,fa=Q.isArray,ga=Q.isEmptyObject,ha=Q.each,ia=Q.objectMerge,ja=Q.truncate,ka=Q.objectFrozen,la=Q.hasKey,ma=Q.joinRegExp,na=Q.urlencode,oa=Q.uuid4,pa=Q.htmlTreeAsString,qa=Q.isSameException,ra=Q.isSameStacktrace,sa=Q.parseUrl,ta=Q.fill,ua=Q.supportsFetch,va=$.wrapMethod,wa="source protocol user pass host port path".split(" "),xa=/^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/,ya="undefined"!=typeof window?window:"undefined"!=typeof N?N:"undefined"!=typeof self?self:{},za=ya.document,Aa=ya.navigator;J.prototype={VERSION:"3.22.2",debug:!1,TraceKit:W,config:function(a,b){var c=this;if(c.i)return this.C("error","Error: Raven has already been configured"),c;if(!a)return c;var d=c.m;b&&ha(b,function(a,b){"tags"===a||"extra"===a||"user"===a?c.l[a]=b:d[a]=b}),c.setDSN(a),d.ignoreErrors.push(/^Script error\.?$/),d.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/),d.ignoreErrors=ma(d.ignoreErrors),d.ignoreUrls=!!d.ignoreUrls.length&&ma(d.ignoreUrls),d.whitelistUrls=!!d.whitelistUrls.length&&ma(d.whitelistUrls),d.includePaths=ma(d.includePaths),d.maxBreadcrumbs=Math.max(0,Math.min(d.maxBreadcrumbs||100,100));var e={xhr:!0,console:!0,dom:!0,location:!0,sentry:!0},f=d.autoBreadcrumbs;"[object Object]"==={}.toString.call(f)?f=ia(e,f):f!==!1&&(f=e),d.autoBreadcrumbs=f;var g={tryCatch:!0},h=d.instrument;return"[object Object]"==={}.toString.call(h)?h=ia(g,h):h!==!1&&(h=g),d.instrument=h,W.collectWindowErrors=!!d.collectWindowErrors,c},install:function(){var a=this;return a.isSetup()&&!a.p&&(W.report.subscribe(function(){a.D.apply(a,arguments)}),a.E(),a.m.instrument&&a.m.instrument.tryCatch&&a.F(),a.m.autoBreadcrumbs&&a.G(),a.H(),a.p=!0),Error.stackTraceLimit=a.m.stackTraceLimit,this},setDSN:function(a){var b=this,c=b.I(a),d=c.path.lastIndexOf("/"),e=c.path.substr(1,d);b.J=a,b.j=c.user,b.K=c.pass&&c.pass.substr(1),b.k=c.path.substr(d+1),b.i=b.L(c),b.M=b.i+"/"+e+"api/"+b.k+"/store/",this.A()},context:function(a,b,c){return da(a)&&(c=b||[],b=a,a=void 0),this.wrap(a,b).apply(this,c)},wrap:function(a,b,c){function d(){var d=[],f=arguments.length,g=!a||a&&a.deep!==!1;for(c&&da(c)&&c.apply(this,arguments);f--;)d[f]=g?e.wrap(a,arguments[f]):arguments[f];try{return b.apply(this,d)}catch(h){throw e.N(),e.captureException(h,a),h}}var e=this;if(ca(b)&&!da(a))return a;if(da(a)&&(b=a,a=void 0),!da(b))return b;try{if(b.a)return b;if(b.O)return b.O}catch(f){return b}for(var g in b)la(b,g)&&(d[g]=b[g]);return d.prototype=b.prototype,b.O=d,d.a=!0,d.b=b,d},uninstall:function(){return W.report.uninstall(),this.P(),this.Q(),this.R(),Error.stackTraceLimit=this.q,this.p=!1,this},captureException:function(a,b){b=ia({trimHeadFrames:0},b?b:{});var c=!_(a),d=!ba(a),e=ba(a)&&!a.error;if(c&&d||e)return this.captureMessage(a,ia(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}));ba(a)&&(a=a.error),this.f=a;try{var f=W.computeStackTrace(a);this.S(f,b)}catch(g){if(a!==g)throw g}return this},captureMessage:function(a,b){if(!this.m.ignoreErrors.test||!this.m.ignoreErrors.test(a)){b=b||{};var c,d=ia({message:a+""},b);try{throw new Error(a)}catch(e){c=e}c.name=null;var f=W.computeStackTrace(c),g=fa(f.stack)&&f.stack[1],h=g&&g.url||"";if((!this.m.ignoreUrls.test||!this.m.ignoreUrls.test(h))&&(!this.m.whitelistUrls.test||this.m.whitelistUrls.test(h))){if(this.m.stacktrace||b&&b.stacktrace){b=ia({fingerprint:a,trimHeadFrames:(b.trimHeadFrames||0)+1},b);var i=this.T(f,b);d.stacktrace={frames:i.reverse()}}return this.U(d),this}}},captureBreadcrumb:function(a){var b=ia({timestamp:H()/1e3},a);if(da(this.m.breadcrumbCallback)){var c=this.m.breadcrumbCallback(b);if(aa(c)&&!ga(c))b=c;else if(c===!1)return this}return this.w.push(b),this.w.length>this.m.maxBreadcrumbs&&this.w.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.t.push([a,b]),this.p&&this.H(),this},setUserContext:function(a){return this.l.user=a,this},setExtraContext:function(a){return this.V("extra",a),this},setTagsContext:function(a){return this.V("tags",a),this},clearContext:function(){return this.l={},this},getContext:function(){return JSON.parse(X(this.l))},setEnvironment:function(a){return this.m.environment=a,this},setRelease:function(a){return this.m.release=a,this},setDataCallback:function(a){var b=this.m.dataCallback;return this.m.dataCallback=I(b,a),this},setBreadcrumbCallback:function(a){var b=this.m.breadcrumbCallback;return this.m.breadcrumbCallback=I(b,a),this},setShouldSendCallback:function(a){var b=this.m.shouldSendCallback;return this.m.shouldSendCallback=I(b,a),this},setTransport:function(a){return this.m.transport=a,this},lastException:function(){return this.f},lastEventId:function(){return this.h},isSetup:function(){return!!this.c&&(!!this.i||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.C("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=ya.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(za){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new Y("Missing eventId");var c=a.dsn||this.J;if(!c)throw new Y("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.l.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.L(this.I(c)),h=za.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(za.head||za.body).appendChild(h)}},N:function(){var a=this;this.o+=1,setTimeout(function(){a.o-=1})},W:function(a,b){var c,d;if(this.d){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),za.createEvent?(c=za.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=za.createEventObject(),c.eventType=a);for(d in b)la(b,d)&&(c[d]=b[d]);if(za.createEvent)za.dispatchEvent(c);else try{za.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},X:function(a){var b=this;return function(c){if(b.Y=null,b.x!==c){b.x=c;var d;try{d=pa(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},Z:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.Y;g||a.X("input")(c),clearTimeout(g),a.Y=setTimeout(function(){a.Y=null},b)}}},$:function(a,b){var c=sa(this.y.href),d=sa(b),e=sa(a);this.z=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},E:function(){var a=this;a._=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.a?a._.apply(this.b,arguments):a._.apply(this,arguments)}},P:function(){this._&&(Function.prototype.toString=this._)},F:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.$(b.z,c+""),a.apply(this,arguments)}};ta(history,"pushState",j,d),ta(history,"replaceState",j,d)}if(c.console&&"console"in ya&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};ha(["debug","info","warn","error","log"],function(a,b){va(console,b,k)})}},Q:function(){for(var a;this.v.length;){a=this.v.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},R:function(){for(var a in this.s)this.r[a]=this.s[a]},H:function(){var a=this;ha(this.t,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},I:function(a){var b=xa.exec(a),c={},d=7;try{for(;d--;)c[wa[d]]=b[d]||""}catch(e){throw new Y("Invalid DSN: "+a)}if(c.pass&&!this.m.allowSecretKey)throw new Y("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},L:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},D:function(){this.o||this.S.apply(this,arguments)},S:function(a,b){var c=this.T(a,b);this.W("handle",{stackInfo:a,options:b}),this.ba(a.name,a.message,a.url,a.lineno,c,b)},T:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(ha(a.stack,function(b,e){var f=c.ca(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.w,0)}),this.l.user&&(a.user=this.l.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||ga(a[b]))&&delete a[b]}),da(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!ga(a)&&(!da(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.ia()?void this.C("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random()":"anonymous component")+(a._isVue&&a.$options.__file?" at "+a.$options.__file:"")}function e(a,b){if(b=b||window.Vue,b&&b.config){var c=b.config.errorHandler;b.config.errorHandler=function(b,e,f){var g={};"[object Object]"===Object.prototype.toString.call(e)&&(g.componentName=d(e),g.propsData=e.$options.propsData),"undefined"!=typeof f&&(g.lifecycleHook=f),a.captureException(b,{extra:g}),"function"==typeof c&&c.call(this,b,e,f)}}}b.exports=e,a(6).addPlugin(b.exports)},{6:6}],3:[function(a,b,c){function d(a){this.name="RavenConfigError",this.message=a}d.prototype=new Error,d.prototype.constructor=d,b.exports=d},{}],4:[function(a,b,c){var d=a(7),e=function(a,b,c){var e=a[b],f=a;if(b in a){var g="warn"===b?"warning":b;a[b]=function(){var a=[].slice.call(arguments),h=d.safeJoin(a," "),i={level:g,logger:"console",extra:{arguments:a}};"assert"===b?a[0]===!1&&(h="Assertion failed: "+(d.safeJoin(a.slice(1)," ")||"console.assert"),i.extra.arguments=a.slice(1),c&&c(h,i)):c&&c(h,i),e&&Function.prototype.apply.call(e,f,a)}}};b.exports={wrapMethod:e}},{7:7}],5:[function(a,b,c){(function(c){function d(){return+new Date}function e(a,b){return q(b)?function(c){return b(c,a)}:b}function f(){this.a=!("object"!=typeof JSON||!JSON.stringify),this.b=!p(Q),this.c=!p(R),this.d=null,this.e=null,this.f=null,this.g=null,this.h=null,this.i=null,this.j={},this.k={release:P.SENTRY_RELEASE&&P.SENTRY_RELEASE.id,logger:"javascript",ignoreErrors:[],ignoreUrls:[],whitelistUrls:[],includePaths:[],headers:null,collectWindowErrors:!0,captureUnhandledRejections:!0,maxMessageLength:0,maxUrlLength:250,stackTraceLimit:50,autoBreadcrumbs:!0,instrument:!0,sampleRate:1,sanitizeKeys:[]},this.l={method:"POST",keepalive:!0,referrerPolicy:I()?"origin":""},this.m=0,this.n=!1,this.o=Error.stackTraceLimit,this.p=P.console||{},this.q={},this.r=[],this.s=d(),this.t=[],this.u=[],this.v=null,this.w=P.location,this.x=this.w&&this.w.href,this.y();for(var a in this.p)this.q[a]=this.p[a]}var g=a(8),h=a(9),i=a(10),j=a(3),k=a(7),l=k.isError,m=k.isObject,n=k.isPlainObject,o=k.isErrorEvent,p=k.isUndefined,q=k.isFunction,r=k.isString,s=k.isArray,t=k.isEmptyObject,u=k.each,v=k.objectMerge,w=k.truncate,x=k.objectFrozen,y=k.hasKey,z=k.joinRegExp,A=k.urlencode,B=k.uuid4,C=k.htmlTreeAsString,D=k.isSameException,E=k.isSameStacktrace,F=k.parseUrl,G=k.fill,H=k.supportsFetch,I=k.supportsReferrerPolicy,J=k.serializeKeysForMessage,K=k.serializeException,L=k.sanitize,M=a(4).wrapMethod,N="source protocol user pass host port path".split(" "),O=/^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/,P="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},Q=P.document,R=P.navigator;f.prototype={VERSION:"3.24.2",debug:!1,TraceKit:g,config:function(a,b){var c=this;if(c.g)return this.z("error","Error: Raven has already been configured"),c;if(!a)return c;var d=c.k;b&&u(b,function(a,b){"tags"===a||"extra"===a||"user"===a?c.j[a]=b:d[a]=b}),c.setDSN(a),d.ignoreErrors.push(/^Script error\.?$/),d.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/),d.ignoreErrors=z(d.ignoreErrors),d.ignoreUrls=!!d.ignoreUrls.length&&z(d.ignoreUrls),d.whitelistUrls=!!d.whitelistUrls.length&&z(d.whitelistUrls),d.includePaths=z(d.includePaths),d.maxBreadcrumbs=Math.max(0,Math.min(d.maxBreadcrumbs||100,100));var e={xhr:!0,console:!0,dom:!0,location:!0,sentry:!0},f=d.autoBreadcrumbs;"[object Object]"==={}.toString.call(f)?f=v(e,f):f!==!1&&(f=e),d.autoBreadcrumbs=f;var h={tryCatch:!0},i=d.instrument;return"[object Object]"==={}.toString.call(i)?i=v(h,i):i!==!1&&(i=h),d.instrument=i,g.collectWindowErrors=!!d.collectWindowErrors,c},install:function(){var a=this;return a.isSetup()&&!a.n&&(g.report.subscribe(function(){a.A.apply(a,arguments)}),a.k.captureUnhandledRejections&&a.B(),a.C(),a.k.instrument&&a.k.instrument.tryCatch&&a.D(),a.k.autoBreadcrumbs&&a.E(),a.F(),a.n=!0),Error.stackTraceLimit=a.k.stackTraceLimit,this},setDSN:function(a){var b=this,c=b.G(a),d=c.path.lastIndexOf("/"),e=c.path.substr(1,d);b.H=a,b.h=c.user,b.I=c.pass&&c.pass.substr(1),b.i=c.path.substr(d+1),b.g=b.J(c),b.K=b.g+"/"+e+"api/"+b.i+"/store/",this.y()},context:function(a,b,c){return q(a)&&(c=b||[],b=a,a=void 0),this.wrap(a,b).apply(this,c)},wrap:function(a,b,c){function d(){var d=[],f=arguments.length,g=!a||a&&a.deep!==!1;for(c&&q(c)&&c.apply(this,arguments);f--;)d[f]=g?e.wrap(a,arguments[f]):arguments[f];try{return b.apply(this,d)}catch(h){throw e.L(),e.captureException(h,a),h}}var e=this;if(p(b)&&!q(a))return a;if(q(a)&&(b=a,a=void 0),!q(b))return b;try{if(b.M)return b;if(b.N)return b.N}catch(f){return b}for(var g in b)y(b,g)&&(d[g]=b[g]);return d.prototype=b.prototype,b.N=d,d.M=!0,d.O=b,d},uninstall:function(){return g.report.uninstall(),this.P(),this.Q(),this.R(),this.S(),Error.stackTraceLimit=this.o,this.n=!1,this},T:function(a){this.z("debug","Raven caught unhandled promise rejection:",a),this.captureException(a.reason,{extra:{unhandledPromiseRejection:!0}})},B:function(){return this.T=this.T.bind(this),P.addEventListener&&P.addEventListener("unhandledrejection",this.T),this},P:function(){return P.removeEventListener&&P.removeEventListener("unhandledrejection",this.T),this},captureException:function(a,b){if(b=v({trimHeadFrames:0},b?b:{}),o(a)&&a.error)a=a.error;else if(l(a))a=a;else{if(!n(a))return this.captureMessage(a,v(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}));b=this.U(b,a),a=new Error(b.message)}this.d=a;try{var c=g.computeStackTrace(a);this.V(c,b)}catch(d){if(a!==d)throw d}return this},U:function(a,b){var c=Object.keys(b).sort(),d=v(a,{message:"Non-Error exception captured with keys: "+J(c),fingerprint:[i(c)],extra:a.extra||{}});return d.extra.W=K(b),d},captureMessage:function(a,b){if(!this.k.ignoreErrors.test||!this.k.ignoreErrors.test(a)){b=b||{},a+="";var c,d=v({message:a},b);try{throw new Error(a)}catch(e){c=e}c.name=null;var f=g.computeStackTrace(c),h=s(f.stack)&&f.stack[1];h&&"Raven.captureException"===h.func&&(h=f.stack[2]);var i=h&&h.url||"";if((!this.k.ignoreUrls.test||!this.k.ignoreUrls.test(i))&&(!this.k.whitelistUrls.test||this.k.whitelistUrls.test(i))){if(this.k.stacktrace||b&&b.stacktrace){d.fingerprint=null==d.fingerprint?a:d.fingerprint,b=v({trimHeadFrames:0},b),b.trimHeadFrames+=1;var j=this.X(f,b);d.stacktrace={frames:j.reverse()}}return d.fingerprint&&(d.fingerprint=s(d.fingerprint)?d.fingerprint:[d.fingerprint]),this.Y(d),this}}},captureBreadcrumb:function(a){var b=v({timestamp:d()/1e3},a);if(q(this.k.breadcrumbCallback)){var c=this.k.breadcrumbCallback(b);if(m(c)&&!t(c))b=c;else if(c===!1)return this}return this.u.push(b),this.u.length>this.k.maxBreadcrumbs&&this.u.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.r.push([a,b]),this.n&&this.F(),this},setUserContext:function(a){return this.j.user=a,this},setExtraContext:function(a){return this.Z("extra",a),this},setTagsContext:function(a){return this.Z("tags",a),this},clearContext:function(){return this.j={},this},getContext:function(){return JSON.parse(h(this.j))},setEnvironment:function(a){return this.k.environment=a,this},setRelease:function(a){return this.k.release=a,this},setDataCallback:function(a){var b=this.k.dataCallback;return this.k.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.k.breadcrumbCallback;return this.k.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.k.shouldSendCallback;return this.k.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.k.transport=a,this},lastException:function(){return this.d},lastEventId:function(){return this.f},isSetup:function(){return!!this.a&&(!!this.g||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.z("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=P.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(Q){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.H;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.j.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.J(this.G(c)),h=Q.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(Q.head||Q.body).appendChild(h)}},L:function(){var a=this;this.m+=1,setTimeout(function(){a.m-=1})},$:function(a,b){var c,d;if(this.b){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),Q.createEvent?(c=Q.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=Q.createEventObject(),c.eventType=a);for(d in b)y(b,d)&&(c[d]=b[d]);if(Q.createEvent)Q.dispatchEvent(c);else try{Q.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},_:function(a){var b=this;return function(c){if(b.aa=null,b.v!==c){b.v=c;var d;try{d=C(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ba:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.aa;g||a._("input")(c),clearTimeout(g),a.aa=setTimeout(function(){a.aa=null},b)}}},ca:function(a,b){var c=F(this.w.href),d=F(b),e=F(a);this.x=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},C:function(){var a=this;a.da=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.M?a.da.apply(this.O,arguments):a.da.apply(this,arguments)}},Q:function(){this.da&&(Function.prototype.toString=this.da)},D:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.ca(b.x,c+""),a.apply(this,arguments)}};G(history,"pushState",j,d),G(history,"replaceState",j,d)}if(c.console&&"console"in P&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};u(["debug","info","warn","error","log"],function(a,b){M(console,b,k)})}},R:function(){for(var a;this.t.length;){a=this.t.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},S:function(){for(var a in this.q)this.p[a]=this.q[a]},F:function(){var a=this;u(this.r,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},G:function(a){var b=O.exec(a),c={},d=7;try{for(;d--;)c[N[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.k.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},J:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},A:function(){this.m||this.V.apply(this,arguments)},V:function(a,b){var c=this.X(a,b);this.$("handle",{stackInfo:a,options:b}),this.fa(a.name,a.message,a.url,a.lineno,c,b)},X:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(u(a.stack,function(b,e){var f=c.ga(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.u,0)}),this.j.user&&(a.user=this.j.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),a=this.pa(a),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||t(a[b]))&&delete a[b]}),q(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!t(a)&&(!q(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.ma()?void this.z("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function B(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&j(b))for(c=b.split(/\s+/),f=0;fc?M(a,b-1):d}function N(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?T:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function O(a,b){function c(a){return k(a)?a.map(function(a){return c(a)}):i(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!k(b)||k(b)&&0===b.length)return a;var d,e=w(b),f="********";try{d=JSON.parse(P(a))}catch(g){return a}return c(d)}var P=a(9),Q="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},R=3,S=51200,T=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isUndefined:g,isFunction:h,isPlainObject:i,isString:j,isArray:k,isEmptyObject:l,supportsErrorEvent:m,supportsFetch:n,supportsReferrerPolicy:o,supportsPromiseRejectionEvent:p,wrappedCallback:q,each:r,objectMerge:s,truncate:u,objectFrozen:t,hasKey:v,joinRegExp:w,urlencode:x,uuid4:z,htmlTreeAsString:A,htmlElementAsString:B,isSameException:E,isSameStacktrace:F,parseUrl:y,fill:G,safeJoin:H,serializeException:M,serializeKeysForMessage:N,sanitize:O}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{9:9}],8:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}var e=a(7),f={collectWindowErrors:!0,debug:!1},g="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},h=[].slice,i="?",j=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;f.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function k(a,b){var c=null;if(!b||f.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(h.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,g,h){var l=null,m=e.isErrorEvent(h)?h.error:h,n=e.isErrorEvent(a)?a.message:a;if(v)f.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&e.isError(m))l=f.computeStackTrace(m),k(l,!0);else{var p,r={url:b,line:c,column:g},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(j);p&&(s=p[1],n=p[2])}r.func=i,l={name:s,message:n,url:d(),stack:[r]},k(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=g.onerror,g.onerror=l,r=!0)}function n(){r&&(g.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,k.apply(null,[a,!1].concat(b))}function p(a,b){var c=h.call(arguments,1);if(v){if(u===a)return;o()}var d=f.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),f.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,e,f=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,g=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,h=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,j=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,k=/\((\S*)(?::(\d+))(?::(\d+))\)/,l=a.stack.split("\n"),m=[],n=(/^(.*) is undefined$/.exec(a.message),0),o=l.length;n eval")>-1;q&&(b=j.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==n||c[5]||"undefined"==typeof a.columnNumber||(m[0].column=a.columnNumber+1),e={url:c[3],func:c[1]||i,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}!e.func&&e.line&&(e.func=i),m.push(e)}return m.length?{name:a.name,message:a.message,url:d(),stack:m}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=i),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,g){for(var h,j,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==e&&o!==f.report){if(j={url:null,func:i,line:null,column:null},o.name?j.func=o.name:(h=k.exec(o.toString()))&&(j.func=h[1]),"undefined"==typeof j.func)try{j.func=h.input.substring(0,h.input.indexOf("{"))}catch(p){}m[""+o]?n=!0:m[""+o]=!0,l.push(j)}g&&l.splice(0,g);var q={name:a.name,message:a.message,url:d(),stack:l};return b(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),q}function e(b,e){var g=null;e=null==e?0:+e;try{if(g=a(b))return g}catch(h){if(f.debug)throw h}try{if(g=c(b,e+1))return g}catch(h){if(f.debug)throw h}return{name:b.name,message:b.message,url:d()}}return e.augmentStackTraceWithInitialElement=b,e.computeStackTraceFromStackProp=a,e}(),b.exports=f}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{7:7}],9:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}],10:[function(a,b,c){function d(a,b){var c=(65535&a)+(65535&b),d=(a>>16)+(b>>16)+(c>>16);return d<<16|65535&c}function e(a,b){return a<>>32-b}function f(a,b,c,f,g,h){return d(e(d(d(b,a),d(f,h)),g),c)}function g(a,b,c,d,e,g,h){return f(b&c|~b&d,a,b,e,g,h)}function h(a,b,c,d,e,g,h){return f(b&d|c&~d,a,b,e,g,h)}function i(a,b,c,d,e,g,h){return f(b^c^d,a,b,e,g,h)}function j(a,b,c,d,e,g,h){return f(c^(b|~d),a,b,e,g,h)}function k(a,b){a[b>>5]|=128<>>9<<4)+14]=b;var c,e,f,k,l,m=1732584193,n=-271733879,o=-1732584194,p=271733878;for(c=0;c>5]>>>b%32&255);return c}function m(a){var b,c=[];for(c[(a.length>>2)-1]=void 0,b=0;b>5]|=(255&a.charCodeAt(b/8))<16&&(e=k(e,8*a.length)),c=0;c<16;c+=1)f[c]=909522486^e[c],g[c]=1549556828^e[c];return d=k(f.concat(m(b)),512+8*b.length),l(k(g.concat(d),640))}function p(a){var b,c,d="0123456789abcdef",e="";for(c=0;c>>4&15)+d.charAt(15&b);return e}function q(a){return unescape(encodeURIComponent(a))}function r(a){return n(q(a))}function s(a){return p(r(a))}function t(a,b){return o(q(a),q(b))}function u(a,b){return p(t(a,b))}function v(a,b,c){return b?c?t(b,a):u(b,a):c?r(a):s(a)}b.exports=v},{}]},{},[6,1,2])(6)}); //# sourceMappingURL=raven.min.js.map \ No newline at end of file diff --git a/dist/console,vue/raven.min.js.map b/dist/console,vue/raven.min.js.map index 5413e3eaf97f..ae01f4f862dd 100644 --- a/dist/console,vue/raven.min.js.map +++ b/dist/console,vue/raven.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["raven.js"],"names":["global","factory","exports","module","define","amd","Raven","this","createCommonjsModule","fn","_typeof","obj","Symbol","iterator","constructor","prototype","isObject$1","what","isError$1","value","toString","call","Error","isErrorEvent$1","supportsErrorEvent","isUndefined$1","isFunction$1","isPlainObject","Object","isString$1","isArray$1","isEmptyObject$1","_","hasOwnProperty","ErrorEvent","e","supportsFetch$1","_window$3","Headers","Request","Response","wrappedCallback","callback","dataCallback","data","original","normalizedData","each$1","i","j","length","hasKey$1","objectMerge$1","obj1","obj2","key","objectFrozen$1","isFrozen","truncate$1","str","max","substr","object","joinRegExp$1","patterns","pattern","sources","len","push","replace","source","RegExp","join","urlencode$1","o","pairs","encodeURIComponent","parseUrl$1","url","match","query","fragment","protocol","host","path","relative","uuid4$1","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","r","Math","random","htmlTreeAsString$1","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","reverse","className","classes","attr","tagName","toLowerCase","id","split","attrWhitelist","getAttribute","isOnlyOneTruthy","a","b","isBothUndefined","isSameException$1","ex1","ex2","values","type","stacktrace","isSameStacktrace$1","stack1","stack2","frames1","frames","frames2","filename","lineno","colno","fill$1","name","replacement","track","orig","__raven__","__orig__","safeJoin","input","delimiter","output","String","getLocationHref","document","location","href","RavenConfigError","message","now","Date","keepOriginalCallback","isFunction","Raven$1","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window$1","SENTRY_RELEASE","logger","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","_fetchDefaults","method","keepalive","referrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","console","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","_lastHref","_resetBackoff","consolePlugin","pluginOptions","window","logLevels","levels","msg","captureMessage","level","pop","wrapConsoleMethod$1","formatComponentName","vm","$root","_isVue","$options","_componentTag","__file","vuePlugin","Vue","config","_oldOnError","errorHandler","error","info","metaData","componentName","propsData","lifecycleHook","captureException","extra","commonjsGlobal","self","_sPO","setPrototypeOf","p","__proto__","Reflect","construct","Parent","args","Class","Constructor","apply","bind","utils","isObject","isError","isErrorEvent","isString","isArray","isEmptyObject","supportsFetch","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","TraceKit","debug","_window$2","_slice","slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","report","subscribe","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","stack","isWindowError","exception","concat","arguments","inner","traceKitWindowOnError","lineNo","colNo","ex","lastExceptionStack","computeStackTrace","augmentStackTraceWithInitialElement","processLastException","groups","line","column","undefined","func","_oldOnerrorHandler","_onErrorHandlerInstalled","onerror","_lastExceptionStack","_lastArgs","lastArgs","lastException","rethrow","setTimeout","incomplete","uninstall","computeStackTraceFromStackProp","submatch","parts","element","chrome","gecko","winjs","geckoEval","chromeEval","lines","exec","isNative","indexOf","isEval","columnNumber","stackInfo","initial","unshift","partial","computeStackTraceByWalkingCallerChain","depth","item","functionName","funcs","recursion","curr","caller","substring","result","sourceURL","fileName","lineNumber","description","tracekit","stringify_1","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","err","keys","thisPos","Infinity","getSerialize","configError","wrapMethod","originalConsoleLevel","originalConsole","sentryLevel","Function","console$1","wrapConsoleMethod","dsnKeys","dsnPattern","navigator","VERSION","dsn","options","_logDebug","globalOptions","setDSN","maxBreadcrumbs","min","autoBreadcrumbDefaults","xhr","dom","sentry","instrumentDefaults","tryCatch","install","isSetup","_handleOnErrorStackInfo","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","lastIndexOf","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","context","wrap","_before","wrapped","deep","_ignoreNextOnError","__raven_wrapper__","property","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","trimHeadFrames","isNotError","isNotErrorEvent","isErrorEventWithoutError","_handleStackInfo","test","initialCall","fileurl","fingerprint","_prepareFrames","_send","captureBreadcrumb","crumb","timestamp","breadcrumbCallback","shift","addPlugin","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","setDataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","N","W","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","X","evtName","_keypressTimeout","target","category","Z","debounceDuration","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","$","from","to","parsedLoc","parsedTo","parsedFrom","E","_originalFunctionToString","P","F","wrapTimeFn","t","Array","originalCallback","wrapEventTarget","proto","capture","secure","handleEvent","before","clickHandler","keypressHandler","_keypressEventHandler","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","G","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","onreadystatechange","origFetch","fetchInput","fetchData","then","response","addEventListener","attachEvent","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","Q","builtin","R","H","installer","I","m","allowSecretKey","L","port","D","S","_triggerEvent","_processException","T","frame","_normalizeFrame","in_app","ca","stackInfoUrl","normalized","function","ba","prefixedMessage","culprit","da","request","Referer","breadcrumbs","_trimBreadcrumbs","ea","urlProp","urlProps","fa","httpData","userAgent","User-Agent","referrer","A","_backoffDuration","_backoffStart","ia","ja","current","last","ka","_shouldBackoff","retry","get","getResponseHeader","parseInt","U","baseData","project","platform","_getHttpData","serverName","server_name","forEach","_sendProcessedPayload","ma","la","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","na","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","onload","open","setRequestHeader","send","oa","hash","evaluated","C","V","setUser","setReleaseContext","raven","_window","_Raven","noConflict","singleton","console$3","vue","console_vue"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file +{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","consolePlugin","console","pluginOptions","logLevels","levels","push","callback","msg","data","captureMessage","level","pop","wrapConsoleMethod","wrapMethod","addPlugin","4","6","2","formatComponentName","vm","$root","name","_isVue","$options","_componentTag","__file","vuePlugin","Vue","config","_oldOnError","errorHandler","error","info","metaData","Object","prototype","toString","componentName","propsData","lifecycleHook","captureException","extra","3","RavenConfigError","message","constructor","utils","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","safeJoin","logger","Function","apply","7","5","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","sanitizeKeys","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isError","isObject","isPlainObject","isErrorEvent","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","sanitize","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","dsn","options","_logDebug","globalOptions","key","value","setDSN","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","substr","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","context","func","undefined","wrap","_before","wrapped","deep","_ignoreNextOnError","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","T","event","reason","unhandledPromiseRejection","B","_promiseRejectionHandler","bind","addEventListener","P","removeEventListener","ex","trimHeadFrames","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","U","currentOptions","exKeys","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","setDataCallback","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","L","setTimeout","$","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","_","evtName","_keypressTimeout","target","category","ba","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","ca","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","C","_originalFunctionToString","Q","D","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","type","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","E","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","R","builtin","S","F","installer","concat","G","str","m","exec","allowSecretKey","J","port","A","V","stackInfo","_triggerEvent","_processException","lineno","X","frame","_normalizeFrame","in_app","ga","stackInfoUrl","normalized","filename","line","colno","column","function","fa","prefixedMessage","exception","values","culprit","ha","request","Referer","breadcrumbs","_trimBreadcrumbs","ia","urlProp","urlProps","ja","httpData","userAgent","User-Agent","referrer","y","_backoffDuration","_backoffStart","ma","na","current","last","oa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Y","baseData","project","platform","_getHttpData","serverName","server_name","_sanitizeData","forEach","random","_sendProcessedPayload","pa","ra","qa","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","sa","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","onerror","open","setRequestHeader","send","ta","hash","evaluated","z","Z","setUser","setReleaseContext","10","8","9","RavenConstructor","_Raven","noConflict","Client","what","supportsErrorEvent","ErrorEvent","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","wrappedCallback","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","sanitizeMask","safeInput","o_O","getLocationHref","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","charAt","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","string","raw"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file diff --git a/dist/console/raven.js b/dist/console/raven.js index a5a33fe246be..5773d285b460 100644 --- a/dist/console/raven.js +++ b/dist/console/raven.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.22.2 (1b6187b) | github.com/getsentry/raven-js */ +/*! Raven.js 3.24.2 (540f32b) | github.com/getsentry/raven-js */ /* * Includes TraceKit @@ -10,3161 +10,3930 @@ * */ -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : - typeof define === 'function' && define.amd ? define(factory) : - (global.Raven = factory()); -}(this, (function () { 'use strict'; - -var commonjsGlobal = typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; - +(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.Raven = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o href parsing trick because React Native and other -// environments where DOM might not be available + /* + * Set the DSN (can be called multiple time unlike config) + * + * @param {string} dsn The public Sentry DSN + */ + setDSN: function(dsn) { + var self = this, + uri = self._parseDSN(dsn), + lastSlash = uri.path.lastIndexOf('/'), + path = uri.path.substr(1, lastSlash); + self._dsn = dsn; + self._globalKey = uri.user; + self._globalSecret = uri.pass && uri.pass.substr(1); + self._globalProject = uri.path.substr(lastSlash + 1); -function parseUrl$1(url) { - if (typeof url !== 'string') return {}; - var match = url.match(/^(([^:\/?#]+):)?(\/\/([^\/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?$/); // coerce to undefined values to empty string so we don't get 'undefined' + self._globalServer = self._getGlobalServer(uri); - var query = match[6] || ''; - var fragment = match[8] || ''; - return { - protocol: match[2], - host: match[4], - path: match[5], - relative: match[5] + query + fragment // everything minus origin + self._globalEndpoint = + self._globalServer + '/' + path + 'api/' + self._globalProject + '/store/'; - }; -} + // Reset backoff state since we may be pointing at a + // new project/server + this._resetBackoff(); + }, -function uuid4$1() { - var crypto = _window$3.crypto || _window$3.msCrypto; + /* + * Wrap code within a context so Raven can capture errors + * reliably across domains that is executed immediately. + * + * @param {object} options A specific set of options for this context [optional] + * @param {function} func The callback to be immediately executed within the context + * @param {array} args An array of arguments to be called with the callback [optional] + */ + context: function(options, func, args) { + if (isFunction(options)) { + args = func || []; + func = options; + options = undefined; + } - if (!isUndefined$1(crypto) && crypto.getRandomValues) { - // Use window.crypto API if available - // eslint-disable-next-line no-undef - var arr = new Uint16Array(8); - crypto.getRandomValues(arr); // set 4 in byte 7 + return this.wrap(options, func).apply(this, args); + }, - arr[3] = arr[3] & 0xfff | 0x4000; // set 2 most significant bits of byte 9 to '10' + /* + * Wrap code within a context and returns back a new function to be executed + * + * @param {object} options A specific set of options for this context [optional] + * @param {function} func The function to be wrapped in a new context + * @param {function} func A function to call before the try/catch wrapper [optional, private] + * @return {function} The newly wrapped functions with a context + */ + wrap: function(options, func, _before) { + var self = this; + // 1 argument has been passed, and it's not a function + // so just return it + if (isUndefined(func) && !isFunction(options)) { + return options; + } - arr[4] = arr[4] & 0x3fff | 0x8000; + // options is optional + if (isFunction(options)) { + func = options; + options = undefined; + } - var pad = function pad(num) { - var v = num.toString(16); + // At this point, we've passed along 2 arguments, and the second one + // is not a function either, so we'll just return the second argument. + if (!isFunction(func)) { + return func; + } - while (v.length < 4) { - v = '0' + v; + // We don't wanna wrap it twice! + try { + if (func.__raven__) { + return func; } - return v; - }; + // If this has already been wrapped in the past, return that + if (func.__raven_wrapper__) { + return func.__raven_wrapper__; + } + } catch (e) { + // Just accessing custom props in some Selenium environments + // can cause a "Permission denied" exception (see raven-js#495). + // Bail on wrapping and return the function as-is (defers to window.onerror). + return func; + } - return pad(arr[0]) + pad(arr[1]) + pad(arr[2]) + pad(arr[3]) + pad(arr[4]) + pad(arr[5]) + pad(arr[6]) + pad(arr[7]); - } else { - // http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/2117523#2117523 - return 'xxxxxxxxxxxx4xxxyxxxxxxxxxxxxxxx'.replace(/[xy]/g, function (c) { - var r = Math.random() * 16 | 0, - v = c === 'x' ? r : r & 0x3 | 0x8; - return v.toString(16); - }); - } -} -/** - * Given a child DOM element, returns a query-selector statement describing that - * and its ancestors - * e.g. [HTMLElement] => body > div > input#foo.btn[name=baz] - * @param elem - * @returns {string} - */ + function wrapped() { + var args = [], + i = arguments.length, + deep = !options || (options && options.deep !== false); + if (_before && isFunction(_before)) { + _before.apply(this, arguments); + } -function htmlTreeAsString$1(elem) { - /* eslint no-extra-parens:0*/ - var MAX_TRAVERSE_HEIGHT = 5, - MAX_OUTPUT_LEN = 80, - out = [], - height = 0, - len = 0, - separator = ' > ', - sepLength = separator.length, - nextStr; + // Recursively wrap all of a function's arguments that are + // functions themselves. + while (i--) args[i] = deep ? self.wrap(options, arguments[i]) : arguments[i]; - while (elem && height++ < MAX_TRAVERSE_HEIGHT) { - nextStr = htmlElementAsString(elem); // bail out if - // - nextStr is the 'html' element - // - the length of the string that would be created exceeds MAX_OUTPUT_LEN - // (ignore this limit if we are on the first iteration) + try { + // Attempt to invoke user-land function + // NOTE: If you are a Sentry user, and you are seeing this stack frame, it + // means Raven caught an error invoking your application code. This is + // expected behavior and NOT indicative of a bug with Raven.js. + return func.apply(this, args); + } catch (e) { + self._ignoreNextOnError(); + self.captureException(e, options); + throw e; + } + } - if (nextStr === 'html' || height > 1 && len + out.length * sepLength + nextStr.length >= MAX_OUTPUT_LEN) { - break; + // copy over properties of the old function + for (var property in func) { + if (hasKey(func, property)) { + wrapped[property] = func[property]; + } } + wrapped.prototype = func.prototype; - out.push(nextStr); - len += nextStr.length; - elem = elem.parentNode; - } + func.__raven_wrapper__ = wrapped; + // Signal that this function has been wrapped/filled already + // for both debugging and to prevent it to being wrapped/filled twice + wrapped.__raven__ = true; + wrapped.__orig__ = func; - return out.reverse().join(separator); -} -/** - * Returns a simple, query-selector representation of a DOM element - * e.g. [HTMLElement] => input#foo.btn[name=baz] - * @param HTMLElement - * @returns {string} - */ + return wrapped; + }, + /** + * Uninstalls the global error handler. + * + * @return {Raven} + */ + uninstall: function() { + TraceKit.report.uninstall(); -function htmlElementAsString(elem) { - var out = [], - className, - classes, - key, - attr, - i; + this._detachPromiseRejectionHandler(); + this._unpatchFunctionToString(); + this._restoreBuiltIns(); + this._restoreConsole(); - if (!elem || !elem.tagName) { - return ''; - } + Error.stackTraceLimit = this._originalErrorStackTraceLimit; + this._isRavenInstalled = false; - out.push(elem.tagName.toLowerCase()); + return this; + }, - if (elem.id) { - out.push('#' + elem.id); - } + /** + * Callback used for `unhandledrejection` event + * + * @param {PromiseRejectionEvent} event An object containing + * promise: the Promise that was rejected + * reason: the value with which the Promise was rejected + * @return void + */ + _promiseRejectionHandler: function(event) { + this._logDebug('debug', 'Raven caught unhandled promise rejection:', event); + this.captureException(event.reason, { + extra: { + unhandledPromiseRejection: true + } + }); + }, - className = elem.className; + /** + * Installs the global promise rejection handler. + * + * @return {raven} + */ + _attachPromiseRejectionHandler: function() { + this._promiseRejectionHandler = this._promiseRejectionHandler.bind(this); + _window.addEventListener && + _window.addEventListener('unhandledrejection', this._promiseRejectionHandler); + return this; + }, - if (className && isString$1(className)) { - classes = className.split(/\s+/); + /** + * Uninstalls the global promise rejection handler. + * + * @return {raven} + */ + _detachPromiseRejectionHandler: function() { + _window.removeEventListener && + _window.removeEventListener('unhandledrejection', this._promiseRejectionHandler); + return this; + }, - for (i = 0; i < classes.length; i++) { - out.push('.' + classes[i]); + /** + * Manually capture an exception and send it over to Sentry + * + * @param {error} ex An exception to be logged + * @param {object} options A specific set of options for this error [optional] + * @return {Raven} + */ + captureException: function(ex, options) { + options = objectMerge({trimHeadFrames: 0}, options ? options : {}); + + if (isErrorEvent(ex) && ex.error) { + // If it is an ErrorEvent with `error` property, extract it to get actual Error + ex = ex.error; + } else if (isError(ex)) { + // we have a real Error object + ex = ex; + } else if (isPlainObject(ex)) { + // If it is plain Object, serialize it manually and extract options + // This will allow us to group events based on top-level keys + // which is much better than creating new group when any key/value change + options = this._getCaptureExceptionOptionsFromPlainObject(options, ex); + ex = new Error(options.message); + } else { + // If none of previous checks were valid, then it means that + // it's not a plain Object + // it's not a valid ErrorEvent (one with an error property) + // it's not an Error + // So bail out and capture it as a simple message: + return this.captureMessage( + ex, + objectMerge(options, { + stacktrace: true, // if we fall back to captureMessage, default to attempting a new trace + trimHeadFrames: options.trimHeadFrames + 1 + }) + ); + } + + // Store the raw exception object for potential debugging and introspection + this._lastCapturedException = ex; + + // TraceKit.report will re-raise any exception passed to it, + // which means you have to wrap it in try/catch. Instead, we + // can wrap it here and only re-raise if TraceKit.report + // raises an exception different from the one we asked to + // report on. + try { + var stack = TraceKit.computeStackTrace(ex); + this._handleStackInfo(stack, options); + } catch (ex1) { + if (ex !== ex1) { + throw ex1; + } } - } - var attrWhitelist = ['type', 'name', 'title', 'alt']; + return this; + }, - for (i = 0; i < attrWhitelist.length; i++) { - key = attrWhitelist[i]; - attr = elem.getAttribute(key); + _getCaptureExceptionOptionsFromPlainObject: function(currentOptions, ex) { + var exKeys = Object.keys(ex).sort(); + var options = objectMerge(currentOptions, { + message: + 'Non-Error exception captured with keys: ' + serializeKeysForMessage(exKeys), + fingerprint: [md5(exKeys)], + extra: currentOptions.extra || {} + }); + options.extra.__serialized__ = serializeException(ex); - if (attr) { - out.push('[' + key + '="' + attr + '"]'); + return options; + }, + + /* + * Manually send a message to Sentry + * + * @param {string} msg A plain message to be captured in Sentry + * @param {object} options A specific set of options for this message [optional] + * @return {Raven} + */ + captureMessage: function(msg, options) { + // config() automagically converts ignoreErrors from a list to a RegExp so we need to test for an + // early call; we'll error on the side of logging anything called before configuration since it's + // probably something you should see: + if ( + !!this._globalOptions.ignoreErrors.test && + this._globalOptions.ignoreErrors.test(msg) + ) { + return; } - } - return out.join(''); -} -/** - * Returns true if either a OR b is truthy, but not both - */ + options = options || {}; + msg = msg + ''; // Make sure it's actually a string + var data = objectMerge( + { + message: msg + }, + options + ); -function isOnlyOneTruthy(a, b) { - return !!(!!a ^ !!b); -} -/** - * Returns true if both parameters are undefined - */ + var ex; + // Generate a "synthetic" stack trace from this point. + // NOTE: If you are a Sentry user, and you are seeing this stack frame, it is NOT indicative + // of a bug with Raven.js. Sentry generates synthetic traces either by configuration, + // or if it catches a thrown object without a "stack" property. + try { + throw new Error(msg); + } catch (ex1) { + ex = ex1; + } + // null exception name so `Error` isn't prefixed to msg + ex.name = null; + var stack = TraceKit.computeStackTrace(ex); -function isBothUndefined(a, b) { - return isUndefined$1(a) && isUndefined$1(b); -} -/** - * Returns true if the two input exception interfaces have the same content - */ + // stack[0] is `throw new Error(msg)` call itself, we are interested in the frame that was just before that, stack[1] + var initialCall = isArray(stack.stack) && stack.stack[1]; + // if stack[1] is `Raven.captureException`, it means that someone passed a string to it and we redirected that call + // to be handled by `captureMessage`, thus `initialCall` is the 3rd one, not 2nd + // initialCall => captureException(string) => captureMessage(string) + if (initialCall && initialCall.func === 'Raven.captureException') { + initialCall = stack.stack[2]; + } -function isSameException$1(ex1, ex2) { - if (isOnlyOneTruthy(ex1, ex2)) return false; - ex1 = ex1.values[0]; - ex2 = ex2.values[0]; - if (ex1.type !== ex2.type || ex1.value !== ex2.value) return false; // in case both stacktraces are undefined, we can't decide so default to false + var fileurl = (initialCall && initialCall.url) || ''; - if (isBothUndefined(ex1.stacktrace, ex2.stacktrace)) return false; - return isSameStacktrace$1(ex1.stacktrace, ex2.stacktrace); -} -/** - * Returns true if the two input stack trace interfaces have the same content - */ + if ( + !!this._globalOptions.ignoreUrls.test && + this._globalOptions.ignoreUrls.test(fileurl) + ) { + return; + } + if ( + !!this._globalOptions.whitelistUrls.test && + !this._globalOptions.whitelistUrls.test(fileurl) + ) { + return; + } -function isSameStacktrace$1(stack1, stack2) { - if (isOnlyOneTruthy(stack1, stack2)) return false; - var frames1 = stack1.frames; - var frames2 = stack2.frames; // Exit early if frame count differs + if (this._globalOptions.stacktrace || (options && options.stacktrace)) { + // fingerprint on msg, not stack trace (legacy behavior, could be revisited) + data.fingerprint = data.fingerprint == null ? msg : data.fingerprint; - if (frames1.length !== frames2.length) return false; // Iterate through every frame; bail out if anything differs + options = objectMerge( + { + trimHeadFrames: 0 + }, + options + ); + // Since we know this is a synthetic trace, the top frame (this function call) + // MUST be from Raven.js, so mark it for trimming + // We add to the trim counter so that callers can choose to trim extra frames, such + // as utility functions. + options.trimHeadFrames += 1; - var a, b; + var frames = this._prepareFrames(stack, options); + data.stacktrace = { + // Sentry expects frames oldest to newest + frames: frames.reverse() + }; + } - for (var i = 0; i < frames1.length; i++) { - a = frames1[i]; - b = frames2[i]; - if (a.filename !== b.filename || a.lineno !== b.lineno || a.colno !== b.colno || a['function'] !== b['function']) return false; - } + // Make sure that fingerprint is always wrapped in an array + if (data.fingerprint) { + data.fingerprint = isArray(data.fingerprint) + ? data.fingerprint + : [data.fingerprint]; + } - return true; -} -/** - * Polyfill a method - * @param obj object e.g. `document` - * @param name method name present on object e.g. `addEventListener` - * @param replacement replacement function - * @param track {optional} record instrumentation to an array - */ + // Fire away! + this._send(data); + return this; + }, -function fill$1(obj, name, replacement, track) { - var orig = obj[name]; - obj[name] = replacement(orig); - obj[name].__raven__ = true; - obj[name].__orig__ = orig; + captureBreadcrumb: function(obj) { + var crumb = objectMerge( + { + timestamp: now() / 1000 + }, + obj + ); - if (track) { - track.push([obj, name, orig]); - } -} -/** - * Join values in array - * @param input array of values to be joined together - * @param delimiter string to be placed in-between values - * @returns {string} - */ + if (isFunction(this._globalOptions.breadcrumbCallback)) { + var result = this._globalOptions.breadcrumbCallback(crumb); + if (isObject(result) && !isEmptyObject(result)) { + crumb = result; + } else if (result === false) { + return this; + } + } -function safeJoin(input, delimiter) { - if (!isArray$1(input)) return ''; - var output = []; + this._breadcrumbs.push(crumb); + if (this._breadcrumbs.length > this._globalOptions.maxBreadcrumbs) { + this._breadcrumbs.shift(); + } + return this; + }, - for (var i = 0; i < input.length; i++) { - try { - output.push(String(input[i])); - } catch (e) { - output.push('[value cannot be serialized]'); + addPlugin: function(plugin /*arg1, arg2, ... argN*/) { + var pluginArgs = [].slice.call(arguments, 1); + + this._plugins.push([plugin, pluginArgs]); + if (this._isRavenInstalled) { + this._drainPlugins(); } - } - return output.join(delimiter); -} + return this; + }, -var utils = { - isObject: isObject$1, - isError: isError$1, - isErrorEvent: isErrorEvent$1, - isUndefined: isUndefined$1, - isFunction: isFunction$1, - isPlainObject: isPlainObject, - isString: isString$1, - isArray: isArray$1, - isEmptyObject: isEmptyObject$1, - supportsErrorEvent: supportsErrorEvent, - supportsFetch: supportsFetch$1, - wrappedCallback: wrappedCallback, - each: each$1, - objectMerge: objectMerge$1, - truncate: truncate$1, - objectFrozen: objectFrozen$1, - hasKey: hasKey$1, - joinRegExp: joinRegExp$1, - urlencode: urlencode$1, - uuid4: uuid4$1, - htmlTreeAsString: htmlTreeAsString$1, - htmlElementAsString: htmlElementAsString, - isSameException: isSameException$1, - isSameStacktrace: isSameStacktrace$1, - parseUrl: parseUrl$1, - fill: fill$1, - safeJoin: safeJoin -}; + /* + * Set/clear a user to be sent along with the payload. + * + * @param {object} user An object representing user data [optional] + * @return {Raven} + */ + setUserContext: function(user) { + // Intentionally do not merge here since that's an unexpected behavior. + this._globalContext.user = user; -/* - TraceKit - Cross brower stack traces + return this; + }, - This was originally forked from github.com/occ/TraceKit, but has since been - largely re-written and is now maintained as part of raven-js. Tests for - this are in test/vendor. + /* + * Merge extra attributes to be sent along with the payload. + * + * @param {object} extra An object representing extra data [optional] + * @return {Raven} + */ + setExtraContext: function(extra) { + this._mergeContext('extra', extra); - MIT license -*/ + return this; + }, -var TraceKit = { - collectWindowErrors: true, - debug: false -}; // This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) + /* + * Merge tags to be sent along with the payload. + * + * @param {object} tags An object representing tags [optional] + * @return {Raven} + */ + setTagsContext: function(tags) { + this._mergeContext('tags', tags); -var _window$2 = typeof window !== 'undefined' ? window : typeof commonjsGlobal !== 'undefined' ? commonjsGlobal : typeof self !== 'undefined' ? self : {}; // global reference to slice + return this; + }, + /* + * Clear all of the context. + * + * @return {Raven} + */ + clearContext: function() { + this._globalContext = {}; -var _slice = [].slice; -var UNKNOWN_FUNCTION = '?'; // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error#Error_types + return this; + }, -var ERROR_TYPES_RE = /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/; + /* + * Get a copy of the current context. This cannot be mutated. + * + * @return {object} copy of context + */ + getContext: function() { + // lol javascript + return JSON.parse(stringify(this._globalContext)); + }, -function getLocationHref() { - if (typeof document === 'undefined' || document.location == null) return ''; - return document.location.href; -} -/** - * TraceKit.report: cross-browser processing of unhandled exceptions - * - * Syntax: - * TraceKit.report.subscribe(function(stackInfo) { ... }) - * TraceKit.report.unsubscribe(function(stackInfo) { ... }) - * TraceKit.report(exception) - * try { ...code... } catch(ex) { TraceKit.report(ex); } - * - * Supports: - * - Firefox: full stack trace with line numbers, plus column number - * on top frame; column number is not guaranteed - * - Opera: full stack trace with line and column numbers - * - Chrome: full stack trace with line and column numbers - * - Safari: line and column number for the top frame only; some frames - * may be missing, and column number is not guaranteed - * - IE: line and column number for the top frame only; some frames - * may be missing, and column number is not guaranteed - * - * In theory, TraceKit should work on all of the following versions: - * - IE5.5+ (only 8.0 tested) - * - Firefox 0.9+ (only 3.5+ tested) - * - Opera 7+ (only 10.50 tested; versions 9 and earlier may require - * Exceptions Have Stacktrace to be enabled in opera:config) - * - Safari 3+ (only 4+ tested) - * - Chrome 1+ (only 5+ tested) - * - Konqueror 3.5+ (untested) - * - * Requires TraceKit.computeStackTrace. - * - * Tries to catch all unhandled exceptions and report them to the - * subscribed handlers. Please note that TraceKit.report will rethrow the - * exception. This is REQUIRED in order to get a useful stack trace in IE. - * If the exception does not reach the top of the browser, you will only - * get a stack trace from the point where TraceKit.report was called. - * - * Handlers receive a stackInfo object as described in the - * TraceKit.computeStackTrace docs. - */ + /* + * Set environment of application + * + * @param {string} environment Typically something like 'production'. + * @return {Raven} + */ + setEnvironment: function(environment) { + this._globalOptions.environment = environment; + return this; + }, -TraceKit.report = function reportModuleWrapper() { - var handlers = [], - lastArgs = null, - lastException = null, - lastExceptionStack = null; - /** - * Add a crash handler. - * @param {Function} handler + /* + * Set release version of application + * + * @param {string} release Typically something like a git SHA to identify version + * @return {Raven} */ + setRelease: function(release) { + this._globalOptions.release = release; - function subscribe(handler) { - installGlobalHandler(); - handlers.push(handler); - } - /** - * Remove a crash handler. - * @param {Function} handler + return this; + }, + + /* + * Set the dataCallback option + * + * @param {function} callback The callback to run which allows the + * data blob to be mutated before sending + * @return {Raven} */ + setDataCallback: function(callback) { + var original = this._globalOptions.dataCallback; + this._globalOptions.dataCallback = keepOriginalCallback(original, callback); + return this; + }, + /* + * Set the breadcrumbCallback option + * + * @param {function} callback The callback to run which allows filtering + * or mutating breadcrumbs + * @return {Raven} + */ + setBreadcrumbCallback: function(callback) { + var original = this._globalOptions.breadcrumbCallback; + this._globalOptions.breadcrumbCallback = keepOriginalCallback(original, callback); + return this; + }, + + /* + * Set the shouldSendCallback option + * + * @param {function} callback The callback to run which allows + * introspecting the blob before sending + * @return {Raven} + */ + setShouldSendCallback: function(callback) { + var original = this._globalOptions.shouldSendCallback; + this._globalOptions.shouldSendCallback = keepOriginalCallback(original, callback); + return this; + }, - function unsubscribe(handler) { - for (var i = handlers.length - 1; i >= 0; --i) { - if (handlers[i] === handler) { - handlers.splice(i, 1); - } - } - } /** - * Remove all crash handlers. + * Override the default HTTP transport mechanism that transmits data + * to the Sentry server. + * + * @param {function} transport Function invoked instead of the default + * `makeRequest` handler. + * + * @return {Raven} + */ + setTransport: function(transport) { + this._globalOptions.transport = transport; + + return this; + }, + + /* + * Get the latest raw exception that was captured by Raven. + * + * @return {error} */ + lastException: function() { + return this._lastCapturedException; + }, + /* + * Get the last event id + * + * @return {string} + */ + lastEventId: function() { + return this._lastEventId; + }, - function unsubscribeAll() { - uninstallGlobalHandler(); - handlers = []; - } - /** - * Dispatch stack information to all handlers. - * @param {Object.} stack + /* + * Determine if Raven is setup and ready to go. + * + * @return {boolean} */ + isSetup: function() { + if (!this._hasJSON) return false; // needs JSON support + if (!this._globalServer) { + if (!this.ravenNotConfiguredError) { + this.ravenNotConfiguredError = true; + this._logDebug('error', 'Error: Raven has not been configured.'); + } + return false; + } + return true; + }, + afterLoad: function() { + // TODO: remove window dependence? - function notifyHandlers(stack, isWindowError) { - var exception = null; + // Attempt to initialize Raven on load + var RavenConfig = _window.RavenConfig; + if (RavenConfig) { + this.config(RavenConfig.dsn, RavenConfig.config).install(); + } + }, - if (isWindowError && !TraceKit.collectWindowErrors) { + showReportDialog: function(options) { + if ( + !_document // doesn't work without a document (React native) + ) return; - } - for (var i in handlers) { - if (handlers.hasOwnProperty(i)) { - try { - handlers[i].apply(null, [stack].concat(_slice.call(arguments, 2))); - } catch (inner) { - exception = inner; - } - } + options = options || {}; + + var lastEventId = options.eventId || this.lastEventId(); + if (!lastEventId) { + throw new RavenConfigError('Missing eventId'); } - if (exception) { - throw exception; + var dsn = options.dsn || this._dsn; + if (!dsn) { + throw new RavenConfigError('Missing DSN'); } - } - var _oldOnerrorHandler, _onErrorHandlerInstalled; - /** - * Ensures all global unhandled exceptions are recorded. - * Supported by Gecko and IE. - * @param {string} msg Error message. - * @param {string} url URL of script that generated the exception. - * @param {(number|string)} lineNo The line number at which the error - * occurred. - * @param {?(number|string)} colNo The column number at which the error - * occurred. - * @param {?Error} ex The actual Error object. - */ + var encode = encodeURIComponent; + var qs = ''; + qs += '?eventId=' + encode(lastEventId); + qs += '&dsn=' + encode(dsn); + var user = options.user || this._globalContext.user; + if (user) { + if (user.name) qs += '&name=' + encode(user.name); + if (user.email) qs += '&email=' + encode(user.email); + } - function traceKitWindowOnError(msg, url, lineNo, colNo, ex) { - var stack = null; // If 'ex' is ErrorEvent, get real Error from inside + var globalServer = this._getGlobalServer(this._parseDSN(dsn)); - var exception = utils.isErrorEvent(ex) ? ex.error : ex; // If 'msg' is ErrorEvent, get real message from inside + var script = _document.createElement('script'); + script.async = true; + script.src = globalServer + '/api/embed/error-page/' + qs; + (_document.head || _document.body).appendChild(script); + }, - var message = utils.isErrorEvent(msg) ? msg.message : msg; + /**** Private functions ****/ + _ignoreNextOnError: function() { + var self = this; + this._ignoreOnError += 1; + setTimeout(function() { + // onerror should trigger before setTimeout + self._ignoreOnError -= 1; + }); + }, - if (lastExceptionStack) { - TraceKit.computeStackTrace.augmentStackTraceWithInitialElement(lastExceptionStack, url, lineNo, message); - processLastException(); - } else if (exception && utils.isError(exception)) { - // non-string `exception` arg; attempt to extract stack trace - // New chrome and blink send along a real error object - // Let's just report that like a normal error. - // See: https://mikewest.org/2013/08/debugging-runtime-errors-with-window-onerror - stack = TraceKit.computeStackTrace(exception); - notifyHandlers(stack, true); - } else { - var location = { - url: url, - line: lineNo, - column: colNo - }; - var name = undefined; - var groups; + _triggerEvent: function(eventType, options) { + // NOTE: `event` is a native browser thing, so let's avoid conflicting wiht it + var evt, key; - if ({}.toString.call(message) === '[object String]') { - var groups = message.match(ERROR_TYPES_RE); + if (!this._hasDocument) return; - if (groups) { - name = groups[1]; - message = groups[2]; - } - } + options = options || {}; - location.func = UNKNOWN_FUNCTION; - stack = { - name: name, - message: message, - url: getLocationHref(), - stack: [location] - }; - notifyHandlers(stack, true); - } + eventType = 'raven' + eventType.substr(0, 1).toUpperCase() + eventType.substr(1); - if (_oldOnerrorHandler) { - return _oldOnerrorHandler.apply(this, arguments); + if (_document.createEvent) { + evt = _document.createEvent('HTMLEvents'); + evt.initEvent(eventType, true, true); + } else { + evt = _document.createEventObject(); + evt.eventType = eventType; } - return false; - } + for (key in options) + if (hasKey(options, key)) { + evt[key] = options[key]; + } - function installGlobalHandler() { - if (_onErrorHandlerInstalled) { - return; + if (_document.createEvent) { + // IE9 if standards + _document.dispatchEvent(evt); + } else { + // IE8 regardless of Quirks or Standards + // IE9 if quirks + try { + _document.fireEvent('on' + evt.eventType.toLowerCase(), evt); + } catch (e) { + // Do nothing + } } + }, - _oldOnerrorHandler = _window$2.onerror; - _window$2.onerror = traceKitWindowOnError; - _onErrorHandlerInstalled = true; - } + /** + * Wraps addEventListener to capture UI breadcrumbs + * @param evtName the event name (e.g. "click") + * @returns {Function} + * @private + */ + _breadcrumbEventHandler: function(evtName) { + var self = this; + return function(evt) { + // reset keypress timeout; e.g. triggering a 'click' after + // a 'keypress' will reset the keypress debounce so that a new + // set of keypresses can be recorded + self._keypressTimeout = null; - function uninstallGlobalHandler() { - if (!_onErrorHandlerInstalled) { - return; - } + // It's possible this handler might trigger multiple times for the same + // event (e.g. event propagation through node ancestors). Ignore if we've + // already captured the event. + if (self._lastCapturedEvent === evt) return; - _window$2.onerror = _oldOnerrorHandler; - _onErrorHandlerInstalled = false; - _oldOnerrorHandler = undefined; - } - - function processLastException() { - var _lastExceptionStack = lastExceptionStack, - _lastArgs = lastArgs; - lastArgs = null; - lastExceptionStack = null; - lastException = null; - notifyHandlers.apply(null, [_lastExceptionStack, false].concat(_lastArgs)); - } - /** - * Reports an unhandled Error to TraceKit. - * @param {Error} ex - * @param {?boolean} rethrow If false, do not re-throw the exception. - * Only used for window.onerror to not cause an infinite loop of - * rethrowing. - */ - - - function report(ex, rethrow) { - var args = _slice.call(arguments, 1); - - if (lastExceptionStack) { - if (lastException === ex) { - return; // already caught by an inner catch block, ignore - } else { - processLastException(); - } - } + self._lastCapturedEvent = evt; - var stack = TraceKit.computeStackTrace(ex); - lastExceptionStack = stack; - lastException = ex; - lastArgs = args; // If the stack trace is incomplete, wait for 2 seconds for - // slow slow IE to see if onerror occurs or not before reporting - // this exception; otherwise, we will end up with an incomplete - // stack trace - - setTimeout(function () { - if (lastException === ex) { - processLastException(); + // try/catch both: + // - accessing evt.target (see getsentry/raven-js#838, #768) + // - `htmlTreeAsString` because it's complex, and just accessing the DOM incorrectly + // can throw an exception in some circumstances. + var target; + try { + target = htmlTreeAsString(evt.target); + } catch (e) { + target = ''; } - }, stack.incomplete ? 2000 : 0); - - if (rethrow !== false) { - throw ex; // re-throw to propagate to the top level (and cause window.onerror) - } - } - report.subscribe = subscribe; - report.unsubscribe = unsubscribe; - report.uninstall = unsubscribeAll; - return report; -}(); -/** - * TraceKit.computeStackTrace: cross-browser stack traces in JavaScript - * - * Syntax: - * s = TraceKit.computeStackTrace(exception) // consider using TraceKit.report instead (see below) - * Returns: - * s.name - exception name - * s.message - exception message - * s.stack[i].url - JavaScript or HTML file URL - * s.stack[i].func - function name, or empty for anonymous functions (if guessing did not work) - * s.stack[i].args - arguments passed to the function, if known - * s.stack[i].line - line number, if known - * s.stack[i].column - column number, if known - * - * Supports: - * - Firefox: full stack trace with line numbers and unreliable column - * number on top frame - * - Opera 10: full stack trace with line and column numbers - * - Opera 9-: full stack trace with line numbers - * - Chrome: full stack trace with line and column numbers - * - Safari: line and column number for the topmost stacktrace element - * only - * - IE: no line numbers whatsoever - * - * Tries to guess names of anonymous functions by looking for assignments - * in the source code. In IE and Safari, we have to guess source file names - * by searching for function bodies inside all page scripts. This will not - * work for scripts that are loaded cross-domain. - * Here be dragons: some function names may be guessed incorrectly, and - * duplicate functions may be mismatched. - * - * TraceKit.computeStackTrace should only be used for tracing purposes. - * Logging of unhandled exceptions should be done with TraceKit.report, - * which builds on top of TraceKit.computeStackTrace and provides better - * IE support by utilizing the window.onerror event to retrieve information - * about the top of the stack. - * - * Note: In IE and Safari, no stack trace is recorded on the Error object, - * so computeStackTrace instead walks its *own* chain of callers. - * This means that: - * * in Safari, some methods may be missing from the stack trace; - * * in IE, the topmost function in the stack trace will always be the - * caller of computeStackTrace. - * - * This is okay for tracing (because you are likely to be calling - * computeStackTrace from the function you want to be the topmost element - * of the stack trace anyway), but not okay for logging unhandled - * exceptions (because your catch block will likely be far away from the - * inner function that actually caused the exception). - * - */ - - -TraceKit.computeStackTrace = function computeStackTraceWrapper() { - // Contents of Exception in various browsers. - // - // SAFARI: - // ex.message = Can't find variable: qq - // ex.line = 59 - // ex.sourceId = 580238192 - // ex.sourceURL = http://... - // ex.expressionBeginOffset = 96 - // ex.expressionCaretOffset = 98 - // ex.expressionEndOffset = 98 - // ex.name = ReferenceError - // - // FIREFOX: - // ex.message = qq is not defined - // ex.fileName = http://... - // ex.lineNumber = 59 - // ex.columnNumber = 69 - // ex.stack = ...stack trace... (see the example below) - // ex.name = ReferenceError - // - // CHROME: - // ex.message = qq is not defined - // ex.name = ReferenceError - // ex.type = not_defined - // ex.arguments = ['aa'] - // ex.stack = ...stack trace... - // - // INTERNET EXPLORER: - // ex.message = ... - // ex.name = ReferenceError - // - // OPERA: - // ex.message = ...message... (see the example below) - // ex.name = ReferenceError - // ex.opera#sourceloc = 11 (pretty much useless, duplicates the info in ex.message) - // ex.stacktrace = n/a; see 'opera:config#UserPrefs|Exceptions Have Stacktrace' + self.captureBreadcrumb({ + category: 'ui.' + evtName, // e.g. ui.click, ui.input + message: target + }); + }; + }, /** - * Computes stack trace information from the stack property. - * Chrome and Gecko use this property. - * @param {Error} ex - * @return {?Object.} Stack trace information. - */ - function computeStackTraceFromStackProp(ex) { - if (typeof ex.stack === 'undefined' || !ex.stack) return; - var chrome = /^\s*at (.*?) ?\(((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i, - gecko = /^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|\[native).*?|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i, - winjs = /^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i, - // Used to additionally parse URL/line/column from eval frames - geckoEval = /(\S+) line (\d+)(?: > eval line \d+)* > eval/i, - chromeEval = /\((\S*)(?::(\d+))(?::(\d+))\)/, - lines = ex.stack.split('\n'), - stack = [], - submatch, - parts, - element, - reference = /^(.*) is undefined$/.exec(ex.message); - - for (var i = 0, j = lines.length; i < j; ++i) { - if (parts = chrome.exec(lines[i])) { - var isNative = parts[2] && parts[2].indexOf('native') === 0; // start of line - - var isEval = parts[2] && parts[2].indexOf('eval') === 0; // start of line - - if (isEval && (submatch = chromeEval.exec(parts[2]))) { - // throw out eval line/column and use top-most line/column number - parts[2] = submatch[1]; // url - - parts[3] = submatch[2]; // line - - parts[4] = submatch[3]; // column - } - - element = { - url: !isNative ? parts[2] : null, - func: parts[1] || UNKNOWN_FUNCTION, - args: isNative ? [parts[2]] : [], - line: parts[3] ? +parts[3] : null, - column: parts[4] ? +parts[4] : null - }; - } else if (parts = winjs.exec(lines[i])) { - element = { - url: parts[2], - func: parts[1] || UNKNOWN_FUNCTION, - args: [], - line: +parts[3], - column: parts[4] ? +parts[4] : null - }; - } else if (parts = gecko.exec(lines[i])) { - var isEval = parts[3] && parts[3].indexOf(' > eval') > -1; - - if (isEval && (submatch = geckoEval.exec(parts[3]))) { - // throw out eval line/column and use top-most line number - parts[3] = submatch[1]; - parts[4] = submatch[2]; - parts[5] = null; // no column when eval - } else if (i === 0 && !parts[5] && typeof ex.columnNumber !== 'undefined') { - // FireFox uses this awesome columnNumber property for its top frame - // Also note, Firefox's column number is 0-based and everything else expects 1-based, - // so adding 1 - // NOTE: this hack doesn't work if top-most frame is eval - stack[0].column = ex.columnNumber + 1; - } - - element = { - url: parts[3], - func: parts[1] || UNKNOWN_FUNCTION, - args: parts[2] ? parts[2].split(',') : [], - line: parts[4] ? +parts[4] : null, - column: parts[5] ? +parts[5] : null - }; - } else { - continue; - } + * Wraps addEventListener to capture keypress UI events + * @returns {Function} + * @private + */ + _keypressEventHandler: function() { + var self = this, + debounceDuration = 1000; // milliseconds - if (!element.func && element.line) { - element.func = UNKNOWN_FUNCTION; + // TODO: if somehow user switches keypress target before + // debounce timeout is triggered, we will only capture + // a single breadcrumb from the FIRST target (acceptable?) + return function(evt) { + var target; + try { + target = evt.target; + } catch (e) { + // just accessing event properties can throw an exception in some rare circumstances + // see: https://github.com/getsentry/raven-js/issues/838 + return; } + var tagName = target && target.tagName; - stack.push(element); - } - - if (!stack.length) { - return null; - } - - return { - name: ex.name, - message: ex.message, - url: getLocationHref(), - stack: stack - }; - } - /** - * Adds information about the first frame to incomplete stack traces. - * Safari and IE require this to get complete data on the first frame. - * @param {Object.} stackInfo Stack trace information from - * one of the compute* methods. - * @param {string} url The URL of the script that caused an error. - * @param {(number|string)} lineNo The line number of the script that - * caused an error. - * @param {string=} message The error generated by the browser, which - * hopefully contains the name of the object that caused the error. - * @return {boolean} Whether or not the stack information was - * augmented. - */ - - - function augmentStackTraceWithInitialElement(stackInfo, url, lineNo, message) { - var initial = { - url: url, - line: lineNo - }; - - if (initial.url && initial.line) { - stackInfo.incomplete = false; - - if (!initial.func) { - initial.func = UNKNOWN_FUNCTION; - } + // only consider keypress events on actual input elements + // this will disregard keypresses targeting body (e.g. tabbing + // through elements, hotkeys, etc) + if ( + !tagName || + (tagName !== 'INPUT' && tagName !== 'TEXTAREA' && !target.isContentEditable) + ) + return; - if (stackInfo.stack.length > 0) { - if (stackInfo.stack[0].url === initial.url) { - if (stackInfo.stack[0].line === initial.line) { - return false; // already in stack trace - } else if (!stackInfo.stack[0].line && stackInfo.stack[0].func === initial.func) { - stackInfo.stack[0].line = initial.line; - return false; - } - } + // record first keypress in a series, but ignore subsequent + // keypresses until debounce clears + var timeout = self._keypressTimeout; + if (!timeout) { + self._breadcrumbEventHandler('input')(evt); } + clearTimeout(timeout); + self._keypressTimeout = setTimeout(function() { + self._keypressTimeout = null; + }, debounceDuration); + }; + }, - stackInfo.stack.unshift(initial); - stackInfo.partial = true; - return true; - } else { - stackInfo.incomplete = true; - } - - return false; - } /** - * Computes stack trace information by walking the arguments.caller - * chain at the time the exception occurred. This will cause earlier - * frames to be missed but is the only way to get any stack trace in - * Safari and IE. The top frame is restored by - * {@link augmentStackTraceWithInitialElement}. - * @param {Error} ex - * @return {?Object.} Stack trace information. - */ - - - function computeStackTraceByWalkingCallerChain(ex, depth) { - var functionName = /function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i, - stack = [], - funcs = {}, - recursion = false, - parts, - item; - - for (var curr = computeStackTraceByWalkingCallerChain.caller; curr && !recursion; curr = curr.caller) { - if (curr === computeStackTrace || curr === TraceKit.report) { - // console.log('skipping internal function'); - continue; - } + * Captures a breadcrumb of type "navigation", normalizing input URLs + * @param to the originating URL + * @param from the target URL + * @private + */ + _captureUrlChange: function(from, to) { + var parsedLoc = parseUrl(this._location.href); + var parsedTo = parseUrl(to); + var parsedFrom = parseUrl(from); - item = { - url: null, - func: UNKNOWN_FUNCTION, - line: null, - column: null - }; + // because onpopstate only tells you the "new" (to) value of location.href, and + // not the previous (from) value, we need to track the value of the current URL + // state ourselves + this._lastHref = to; - if (curr.name) { - item.func = curr.name; - } else if (parts = functionName.exec(curr.toString())) { - item.func = parts[1]; - } + // Use only the path component of the URL if the URL matches the current + // document (almost all the time when using pushState) + if (parsedLoc.protocol === parsedTo.protocol && parsedLoc.host === parsedTo.host) + to = parsedTo.relative; + if (parsedLoc.protocol === parsedFrom.protocol && parsedLoc.host === parsedFrom.host) + from = parsedFrom.relative; - if (typeof item.func === 'undefined') { - try { - item.func = parts.input.substring(0, parts.input.indexOf('{')); - } catch (e) {} + this.captureBreadcrumb({ + category: 'navigation', + data: { + to: to, + from: from } + }); + }, - if (funcs['' + curr]) { - recursion = true; - } else { - funcs['' + curr] = true; + _patchFunctionToString: function() { + var self = this; + self._originalFunctionToString = Function.prototype.toString; + // eslint-disable-next-line no-extend-native + Function.prototype.toString = function() { + if (typeof this === 'function' && this.__raven__) { + return self._originalFunctionToString.apply(this.__orig__, arguments); } + return self._originalFunctionToString.apply(this, arguments); + }; + }, - stack.push(item); - } - - if (depth) { - // console.log('depth is ' + depth); - // console.log('stack is ' + stack.length); - stack.splice(0, depth); + _unpatchFunctionToString: function() { + if (this._originalFunctionToString) { + // eslint-disable-next-line no-extend-native + Function.prototype.toString = this._originalFunctionToString; } + }, - var result = { - name: ex.name, - message: ex.message, - url: getLocationHref(), - stack: stack - }; - augmentStackTraceWithInitialElement(result, ex.sourceURL || ex.fileName, ex.line || ex.lineNumber, ex.message || ex.description); - return result; - } /** - * Computes a stack trace for an exception. - * @param {Error} ex - * @param {(string|number)=} depth - */ - + * Wrap timer functions and event targets to catch errors and provide + * better metadata. + */ + _instrumentTryCatch: function() { + var self = this; - function computeStackTrace(ex, depth) { - var stack = null; - depth = depth == null ? 0 : +depth; + var wrappedBuiltIns = self._wrappedBuiltIns; - try { - stack = computeStackTraceFromStackProp(ex); + function wrapTimeFn(orig) { + return function(fn, t) { + // preserve arity + // Make a copy of the arguments to prevent deoptimization + // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments + var args = new Array(arguments.length); + for (var i = 0; i < args.length; ++i) { + args[i] = arguments[i]; + } + var originalCallback = args[0]; + if (isFunction(originalCallback)) { + args[0] = self.wrap(originalCallback); + } - if (stack) { - return stack; - } - } catch (e) { - if (TraceKit.debug) { - throw e; - } + // IE < 9 doesn't support .call/.apply on setInterval/setTimeout, but it + // also supports only two arguments and doesn't care what this is, so we + // can just call the original function directly. + if (orig.apply) { + return orig.apply(this, args); + } else { + return orig(args[0], args[1]); + } + }; } - try { - stack = computeStackTraceByWalkingCallerChain(ex, depth + 1); + var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; - if (stack) { - return stack; - } - } catch (e) { - if (TraceKit.debug) { - throw e; + function wrapEventTarget(global) { + var proto = _window[global] && _window[global].prototype; + if (proto && proto.hasOwnProperty && proto.hasOwnProperty('addEventListener')) { + fill( + proto, + 'addEventListener', + function(orig) { + return function(evtName, fn, capture, secure) { + // preserve arity + try { + if (fn && fn.handleEvent) { + fn.handleEvent = self.wrap(fn.handleEvent); + } + } catch (err) { + // can sometimes get 'Permission denied to access property "handle Event' + } + + // More breadcrumb DOM capture ... done here and not in `_instrumentBreadcrumbs` + // so that we don't have more than one wrapper function + var before, clickHandler, keypressHandler; + + if ( + autoBreadcrumbs && + autoBreadcrumbs.dom && + (global === 'EventTarget' || global === 'Node') + ) { + // NOTE: generating multiple handlers per addEventListener invocation, should + // revisit and verify we can just use one (almost certainly) + clickHandler = self._breadcrumbEventHandler('click'); + keypressHandler = self._keypressEventHandler(); + before = function(evt) { + // need to intercept every DOM event in `before` argument, in case that + // same wrapped method is re-used for different events (e.g. mousemove THEN click) + // see #724 + if (!evt) return; + + var eventType; + try { + eventType = evt.type; + } catch (e) { + // just accessing event properties can throw an exception in some rare circumstances + // see: https://github.com/getsentry/raven-js/issues/838 + return; + } + if (eventType === 'click') return clickHandler(evt); + else if (eventType === 'keypress') return keypressHandler(evt); + }; + } + return orig.call( + this, + evtName, + self.wrap(fn, undefined, before), + capture, + secure + ); + }; + }, + wrappedBuiltIns + ); + fill( + proto, + 'removeEventListener', + function(orig) { + return function(evt, fn, capture, secure) { + try { + fn = fn && (fn.__raven_wrapper__ ? fn.__raven_wrapper__ : fn); + } catch (e) { + // ignore, accessing __raven_wrapper__ will throw in some Selenium environments + } + return orig.call(this, evt, fn, capture, secure); + }; + }, + wrappedBuiltIns + ); } } - return { - name: ex.name, - message: ex.message, - url: getLocationHref() - }; - } - - computeStackTrace.augmentStackTraceWithInitialElement = augmentStackTraceWithInitialElement; - computeStackTrace.computeStackTraceFromStackProp = computeStackTraceFromStackProp; - return computeStackTrace; -}(); - -var tracekit = TraceKit; - -var stringify_1 = createCommonjsModule(function (module, exports) { - /* - json-stringify-safe - Like JSON.stringify, but doesn't throw on circular references. - - Originally forked from https://github.com/isaacs/json-stringify-safe - version 5.0.1 on 3/8/2017 and modified to handle Errors serialization - and IE8 compatibility. Tests for this are in test/vendor. - - ISC license: https://github.com/isaacs/json-stringify-safe/blob/master/LICENSE - */ - exports = module.exports = stringify; - exports.getSerialize = serializer; - - function indexOf(haystack, needle) { - for (var i = 0; i < haystack.length; ++i) { - if (haystack[i] === needle) return i; - } - - return -1; - } + fill(_window, 'setTimeout', wrapTimeFn, wrappedBuiltIns); + fill(_window, 'setInterval', wrapTimeFn, wrappedBuiltIns); + if (_window.requestAnimationFrame) { + fill( + _window, + 'requestAnimationFrame', + function(orig) { + return function(cb) { + return orig(self.wrap(cb)); + }; + }, + wrappedBuiltIns + ); + } - function stringify(obj, replacer, spaces, cycleReplacer) { - return JSON.stringify(obj, serializer(replacer, cycleReplacer), spaces); - } // https://github.com/ftlabs/js-abbreviate/blob/fa709e5f139e7770a71827b1893f22418097fbda/index.js#L95-L106 + // event targets borrowed from bugsnag-js: + // https://github.com/bugsnag/bugsnag-js/blob/master/src/bugsnag.js#L666 + var eventTargets = [ + 'EventTarget', + 'Window', + 'Node', + 'ApplicationCache', + 'AudioTrackList', + 'ChannelMergerNode', + 'CryptoOperation', + 'EventSource', + 'FileReader', + 'HTMLUnknownElement', + 'IDBDatabase', + 'IDBRequest', + 'IDBTransaction', + 'KeyOperation', + 'MediaController', + 'MessagePort', + 'ModalWindow', + 'Notification', + 'SVGElementInstance', + 'Screen', + 'TextTrack', + 'TextTrackCue', + 'TextTrackList', + 'WebSocket', + 'WebSocketWorker', + 'Worker', + 'XMLHttpRequest', + 'XMLHttpRequestEventTarget', + 'XMLHttpRequestUpload' + ]; + for (var i = 0; i < eventTargets.length; i++) { + wrapEventTarget(eventTargets[i]); + } + }, + /** + * Instrument browser built-ins w/ breadcrumb capturing + * - XMLHttpRequests + * - DOM interactions (click/typing) + * - window.location changes + * - console + * + * Can be disabled or individually configured via the `autoBreadcrumbs` config option + */ + _instrumentBreadcrumbs: function() { + var self = this; + var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; - function stringifyError(value) { - var err = { - // These properties are implemented as magical getters and don't show up in for in - stack: value.stack, - message: value.message, - name: value.name - }; + var wrappedBuiltIns = self._wrappedBuiltIns; - for (var i in value) { - if (Object.prototype.hasOwnProperty.call(value, i)) { - err[i] = value[i]; + function wrapProp(prop, xhr) { + if (prop in xhr && isFunction(xhr[prop])) { + fill(xhr, prop, function(orig) { + return self.wrap(orig); + }); // intentionally don't track filled methods on XHR instances } } - return err; - } - - function serializer(replacer, cycleReplacer) { - var stack = []; - var keys = []; + if (autoBreadcrumbs.xhr && 'XMLHttpRequest' in _window) { + var xhrproto = _window.XMLHttpRequest && _window.XMLHttpRequest.prototype; + fill( + xhrproto, + 'open', + function(origOpen) { + return function(method, url) { + // preserve arity - if (cycleReplacer == null) { - cycleReplacer = function cycleReplacer(key, value) { - if (stack[0] === value) { - return '[Circular ~]'; - } + // if Sentry key appears in URL, don't capture + if (isString(url) && url.indexOf(self._globalKey) === -1) { + this.__raven_xhr = { + method: method, + url: url, + status_code: null + }; + } - return '[Circular ~.' + keys.slice(0, indexOf(stack, value)).join('.') + ']'; - }; - } + return origOpen.apply(this, arguments); + }; + }, + wrappedBuiltIns + ); + + fill( + xhrproto, + 'send', + function(origSend) { + return function() { + // preserve arity + var xhr = this; - return function (key, value) { - if (stack.length > 0) { - var thisPos = indexOf(stack, this); - ~thisPos ? stack.splice(thisPos + 1) : stack.push(this); - ~thisPos ? keys.splice(thisPos, Infinity, key) : keys.push(key); + function onreadystatechangeHandler() { + if (xhr.__raven_xhr && xhr.readyState === 4) { + try { + // touching statusCode in some platforms throws + // an exception + xhr.__raven_xhr.status_code = xhr.status; + } catch (e) { + /* do nothing */ + } - if (~indexOf(stack, value)) { - value = cycleReplacer.call(this, key, value); - } - } else { - stack.push(value); - } + self.captureBreadcrumb({ + type: 'http', + category: 'xhr', + data: xhr.__raven_xhr + }); + } + } - return replacer == null ? value instanceof Error ? stringifyError(value) : value : replacer.call(this, key, value); - }; - } -}); -var stringify_2 = stringify_1.getSerialize; + var props = ['onload', 'onerror', 'onprogress']; + for (var j = 0; j < props.length; j++) { + wrapProp(props[j], xhr); + } -function RavenConfigError(message) { - this.name = 'RavenConfigError'; - this.message = message; -} + if ('onreadystatechange' in xhr && isFunction(xhr.onreadystatechange)) { + fill( + xhr, + 'onreadystatechange', + function(orig) { + return self.wrap(orig, undefined, onreadystatechangeHandler); + } /* intentionally don't track this instrumentation */ + ); + } else { + // if onreadystatechange wasn't actually set by the page on this xhr, we + // are free to set our own and capture the breadcrumb + xhr.onreadystatechange = onreadystatechangeHandler; + } -RavenConfigError.prototype = new Error(); -RavenConfigError.prototype.constructor = RavenConfigError; -var configError = RavenConfigError; + return origSend.apply(this, arguments); + }; + }, + wrappedBuiltIns + ); + } -var wrapMethod = function wrapMethod(console, level, callback) { - var originalConsoleLevel = console[level]; - var originalConsole = console; + if (autoBreadcrumbs.xhr && supportsFetch()) { + fill( + _window, + 'fetch', + function(origFetch) { + return function() { + // preserve arity + // Make a copy of the arguments to prevent deoptimization + // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments + var args = new Array(arguments.length); + for (var i = 0; i < args.length; ++i) { + args[i] = arguments[i]; + } - if (!(level in console)) { - return; - } + var fetchInput = args[0]; + var method = 'GET'; + var url; - var sentryLevel = level === 'warn' ? 'warning' : level; + if (typeof fetchInput === 'string') { + url = fetchInput; + } else if ('Request' in _window && fetchInput instanceof _window.Request) { + url = fetchInput.url; + if (fetchInput.method) { + method = fetchInput.method; + } + } else { + url = '' + fetchInput; + } - console[level] = function () { - var args = [].slice.call(arguments); - var msg = utils.safeJoin(args, ' '); - var data = { - level: sentryLevel, - logger: 'console', - extra: { - arguments: args - } - }; + // if Sentry key appears in URL, don't capture, as it's our own request + if (url.indexOf(self._globalKey) !== -1) { + return origFetch.apply(this, args); + } - if (level === 'assert') { - if (args[0] === false) { - // Default browsers message - msg = 'Assertion failed: ' + (utils.safeJoin(args.slice(1), ' ') || 'console.assert'); - data.extra.arguments = args.slice(1); - callback && callback(msg, data); - } - } else { - callback && callback(msg, data); - } // this fails for some browsers. :( + if (args[1] && args[1].method) { + method = args[1].method; + } + var fetchData = { + method: method, + url: url, + status_code: null + }; - if (originalConsoleLevel) { - // IE9 doesn't allow calling apply on console functions directly - // See: https://stackoverflow.com/questions/5472938/does-ie9-support-console-log-and-is-it-a-real-function#answer-5473193 - Function.prototype.apply.call(originalConsoleLevel, originalConsole, args); + return origFetch + .apply(this, args) + .then(function(response) { + fetchData.status_code = response.status; + + self.captureBreadcrumb({ + type: 'http', + category: 'fetch', + data: fetchData + }); + + return response; + }) + ['catch'](function(err) { + // if there is an error performing the request + self.captureBreadcrumb({ + type: 'http', + category: 'fetch', + data: fetchData, + level: 'error' + }); + + throw err; + }); + }; + }, + wrappedBuiltIns + ); } - }; -}; - -var console$3 = { - wrapMethod: wrapMethod -}; - -/*global XDomainRequest:false */ -var isError = utils.isError; -var isObject = utils.isObject; -var isErrorEvent = utils.isErrorEvent; -var isUndefined = utils.isUndefined; -var isFunction = utils.isFunction; -var isString = utils.isString; -var isArray = utils.isArray; -var isEmptyObject = utils.isEmptyObject; -var each = utils.each; -var objectMerge = utils.objectMerge; -var truncate = utils.truncate; -var objectFrozen = utils.objectFrozen; -var hasKey = utils.hasKey; -var joinRegExp = utils.joinRegExp; -var urlencode = utils.urlencode; -var uuid4 = utils.uuid4; -var htmlTreeAsString = utils.htmlTreeAsString; -var isSameException = utils.isSameException; -var isSameStacktrace = utils.isSameStacktrace; -var parseUrl = utils.parseUrl; -var fill = utils.fill; -var supportsFetch = utils.supportsFetch; -var wrapConsoleMethod = console$3.wrapMethod; -var dsnKeys = 'source protocol user pass host port path'.split(' '); -var dsnPattern = /^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/; + // Capture breadcrumbs from any click that is unhandled / bubbled up all the way + // to the document. Do this before we instrument addEventListener. + if (autoBreadcrumbs.dom && this._hasDocument) { + if (_document.addEventListener) { + _document.addEventListener('click', self._breadcrumbEventHandler('click'), false); + _document.addEventListener('keypress', self._keypressEventHandler(), false); + } else if (_document.attachEvent) { + // IE8 Compatibility + _document.attachEvent('onclick', self._breadcrumbEventHandler('click')); + _document.attachEvent('onkeypress', self._keypressEventHandler()); + } + } -function now() { - return +new Date(); -} // This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) + // record navigation (URL) changes + // NOTE: in Chrome App environment, touching history.pushState, *even inside + // a try/catch block*, will cause Chrome to output an error to console.error + // borrowed from: https://github.com/angular/angular.js/pull/13945/files + var chrome = _window.chrome; + var isChromePackagedApp = chrome && chrome.app && chrome.app.runtime; + var hasPushAndReplaceState = + !isChromePackagedApp && + _window.history && + history.pushState && + history.replaceState; + if (autoBreadcrumbs.location && hasPushAndReplaceState) { + // TODO: remove onpopstate handler on uninstall() + var oldOnPopState = _window.onpopstate; + _window.onpopstate = function() { + var currentHref = self._location.href; + self._captureUrlChange(self._lastHref, currentHref); + if (oldOnPopState) { + return oldOnPopState.apply(this, arguments); + } + }; -var _window$1 = typeof window !== 'undefined' ? window : typeof commonjsGlobal !== 'undefined' ? commonjsGlobal : typeof self !== 'undefined' ? self : {}; + var historyReplacementFunction = function(origHistFunction) { + // note history.pushState.length is 0; intentionally not declaring + // params to preserve 0 arity + return function(/* state, title, url */) { + var url = arguments.length > 2 ? arguments[2] : undefined; -var _document = _window$1.document; -var _navigator = _window$1.navigator; + // url argument is optional + if (url) { + // coerce to string (this is what pushState does) + self._captureUrlChange(self._lastHref, url + ''); + } -function keepOriginalCallback(original, callback) { - return isFunction(callback) ? function (data) { - return callback(data, original); - } : callback; -} // First, check for JSON support -// If there is no JSON, we no-op the core features of Raven -// since JSON is required to encode the payload + return origHistFunction.apply(this, arguments); + }; + }; + fill(history, 'pushState', historyReplacementFunction, wrappedBuiltIns); + fill(history, 'replaceState', historyReplacementFunction, wrappedBuiltIns); + } -function Raven$1() { - this._hasJSON = !!(_typeof(JSON) === 'object' && JSON.stringify); // Raven can run in contexts where there's no document (react-native) + if (autoBreadcrumbs.console && 'console' in _window && console.log) { + // console + var consoleMethodCallback = function(msg, data) { + self.captureBreadcrumb({ + message: msg, + level: data.level, + category: 'console' + }); + }; - this._hasDocument = !isUndefined(_document); - this._hasNavigator = !isUndefined(_navigator); - this._lastCapturedException = null; - this._lastData = null; - this._lastEventId = null; - this._globalServer = null; - this._globalKey = null; - this._globalProject = null; - this._globalContext = {}; - this._globalOptions = { - // SENTRY_RELEASE can be injected by https://github.com/getsentry/sentry-webpack-plugin - release: _window$1.SENTRY_RELEASE && _window$1.SENTRY_RELEASE.id, - logger: 'javascript', - ignoreErrors: [], - ignoreUrls: [], - whitelistUrls: [], - includePaths: [], - headers: null, - collectWindowErrors: true, - maxMessageLength: 0, - // By default, truncates URL values to 250 chars - maxUrlLength: 250, - stackTraceLimit: 50, - autoBreadcrumbs: true, - instrument: true, - sampleRate: 1 - }; - this._fetchDefaults = { - method: 'POST', - keepalive: true, - referrerPolicy: 'origin' - }; - this._ignoreOnError = 0; - this._isRavenInstalled = false; - this._originalErrorStackTraceLimit = Error.stackTraceLimit; // capture references to window.console *and* all its methods first - // before the console plugin has a chance to monkey patch + each(['debug', 'info', 'warn', 'error', 'log'], function(_, level) { + wrapConsoleMethod(console, level, consoleMethodCallback); + }); + } + }, - this._originalConsole = _window$1.console || {}; - this._originalConsoleMethods = {}; - this._plugins = []; - this._startTime = now(); - this._wrappedBuiltIns = []; - this._breadcrumbs = []; - this._lastCapturedEvent = null; - this._keypressTimeout; - this._location = _window$1.location; - this._lastHref = this._location && this._location.href; + _restoreBuiltIns: function() { + // restore any wrapped builtins + var builtin; + while (this._wrappedBuiltIns.length) { + builtin = this._wrappedBuiltIns.shift(); - this._resetBackoff(); // eslint-disable-next-line guard-for-in + var obj = builtin[0], + name = builtin[1], + orig = builtin[2]; + obj[name] = orig; + } + }, - for (var method in this._originalConsole) { - this._originalConsoleMethods[method] = this._originalConsole[method]; - } -} -/* - * The core Raven singleton - * - * @this {Raven} - */ + _restoreConsole: function() { + // eslint-disable-next-line guard-for-in + for (var method in this._originalConsoleMethods) { + this._originalConsole[method] = this._originalConsoleMethods[method]; + } + }, + _drainPlugins: function() { + var self = this; -Raven$1.prototype = { - // Hardcode version string so that raven source can be loaded directly via - // webpack (using a build step causes webpack #1617). Grunt verifies that - // this value matches package.json during build. - // See: https://github.com/getsentry/raven-js/issues/465 - VERSION: '3.22.2', - debug: false, - TraceKit: tracekit, - // alias to TraceKit + // FIX ME TODO + each(this._plugins, function(_, plugin) { + var installer = plugin[0]; + var args = plugin[1]; + installer.apply(self, [self].concat(args)); + }); + }, - /* - * Configure Raven with a DSN and extra options - * - * @param {string} dsn The public Sentry DSN - * @param {object} options Set of global options [optional] - * @return {Raven} - */ - config: function config(dsn, options) { - var self = this; + _parseDSN: function(str) { + var m = dsnPattern.exec(str), + dsn = {}, + i = 7; - if (self._globalServer) { - this._logDebug('error', 'Error: Raven has already been configured'); + try { + while (i--) dsn[dsnKeys[i]] = m[i] || ''; + } catch (e) { + throw new RavenConfigError('Invalid DSN: ' + str); + } - return self; + if (dsn.pass && !this._globalOptions.allowSecretKey) { + throw new RavenConfigError( + 'Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key' + ); } - if (!dsn) return self; - var globalOptions = self._globalOptions; // merge in options + return dsn; + }, - if (options) { - each(options, function (key, value) { - // tags and extra are special and need to be put into context - if (key === 'tags' || key === 'extra' || key === 'user') { - self._globalContext[key] = value; - } else { - globalOptions[key] = value; - } - }); + _getGlobalServer: function(uri) { + // assemble the endpoint from the uri pieces + var globalServer = '//' + uri.host + (uri.port ? ':' + uri.port : ''); + + if (uri.protocol) { + globalServer = uri.protocol + ':' + globalServer; } + return globalServer; + }, - self.setDSN(dsn); // "Script error." is hard coded into browsers for errors that it can't read. - // this is the result of a script being pulled in from an external domain and CORS. + _handleOnErrorStackInfo: function() { + // if we are intentionally ignoring errors via onerror, bail out + if (!this._ignoreOnError) { + this._handleStackInfo.apply(this, arguments); + } + }, - globalOptions.ignoreErrors.push(/^Script error\.?$/); - globalOptions.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/); // join regexp rules into one big rule + _handleStackInfo: function(stackInfo, options) { + var frames = this._prepareFrames(stackInfo, options); - globalOptions.ignoreErrors = joinRegExp(globalOptions.ignoreErrors); - globalOptions.ignoreUrls = globalOptions.ignoreUrls.length ? joinRegExp(globalOptions.ignoreUrls) : false; - globalOptions.whitelistUrls = globalOptions.whitelistUrls.length ? joinRegExp(globalOptions.whitelistUrls) : false; - globalOptions.includePaths = joinRegExp(globalOptions.includePaths); - globalOptions.maxBreadcrumbs = Math.max(0, Math.min(globalOptions.maxBreadcrumbs || 100, 100)); // default and hard limit is 100 + this._triggerEvent('handle', { + stackInfo: stackInfo, + options: options + }); - var autoBreadcrumbDefaults = { - xhr: true, - console: true, - dom: true, - location: true, - sentry: true - }; - var autoBreadcrumbs = globalOptions.autoBreadcrumbs; + this._processException( + stackInfo.name, + stackInfo.message, + stackInfo.url, + stackInfo.lineno, + frames, + options + ); + }, - if ({}.toString.call(autoBreadcrumbs) === '[object Object]') { - autoBreadcrumbs = objectMerge(autoBreadcrumbDefaults, autoBreadcrumbs); - } else if (autoBreadcrumbs !== false) { - autoBreadcrumbs = autoBreadcrumbDefaults; + _prepareFrames: function(stackInfo, options) { + var self = this; + var frames = []; + if (stackInfo.stack && stackInfo.stack.length) { + each(stackInfo.stack, function(i, stack) { + var frame = self._normalizeFrame(stack, stackInfo.url); + if (frame) { + frames.push(frame); + } + }); + + // e.g. frames captured via captureMessage throw + if (options && options.trimHeadFrames) { + for (var j = 0; j < options.trimHeadFrames && j < frames.length; j++) { + frames[j].in_app = false; + } + } } + frames = frames.slice(0, this._globalOptions.stackTraceLimit); + return frames; + }, - globalOptions.autoBreadcrumbs = autoBreadcrumbs; - var instrumentDefaults = { - tryCatch: true + _normalizeFrame: function(frame, stackInfoUrl) { + // normalize the frames data + var normalized = { + filename: frame.url, + lineno: frame.line, + colno: frame.column, + function: frame.func || '?' }; - var instrument = globalOptions.instrument; - if ({}.toString.call(instrument) === '[object Object]') { - instrument = objectMerge(instrumentDefaults, instrument); - } else if (instrument !== false) { - instrument = instrumentDefaults; + // Case when we don't have any information about the error + // E.g. throwing a string or raw object, instead of an `Error` in Firefox + // Generating synthetic error doesn't add any value here + // + // We should probably somehow let a user know that they should fix their code + if (!frame.url) { + normalized.filename = stackInfoUrl; // fallback to whole stacks url from onerror handler } - globalOptions.instrument = instrument; - tracekit.collectWindowErrors = !!globalOptions.collectWindowErrors; // return for chaining + normalized.in_app = !// determine if an exception came from outside of our app + // first we check the global includePaths list. + ( + (!!this._globalOptions.includePaths.test && + !this._globalOptions.includePaths.test(normalized.filename)) || + // Now we check for fun, if the function name is Raven or TraceKit + /(Raven|TraceKit)\./.test(normalized['function']) || + // finally, we do a last ditch effort and check for raven.min.js + /raven\.(min\.)?js$/.test(normalized.filename) + ); - return self; + return normalized; }, - /* - * Installs a global window.onerror error handler - * to capture and report uncaught exceptions. - * At this point, install() is required to be called due - * to the way TraceKit is set up. - * - * @return {Raven} - */ - install: function install() { - var self = this; + _processException: function(type, message, fileurl, lineno, frames, options) { + var prefixedMessage = (type ? type + ': ' : '') + (message || ''); + if ( + !!this._globalOptions.ignoreErrors.test && + (this._globalOptions.ignoreErrors.test(message) || + this._globalOptions.ignoreErrors.test(prefixedMessage)) + ) { + return; + } - if (self.isSetup() && !self._isRavenInstalled) { - tracekit.report.subscribe(function () { - self._handleOnErrorStackInfo.apply(self, arguments); - }); + var stacktrace; - self._patchFunctionToString(); + if (frames && frames.length) { + fileurl = frames[0].filename || fileurl; + // Sentry expects frames oldest to newest + // and JS sends them as newest to oldest + frames.reverse(); + stacktrace = {frames: frames}; + } else if (fileurl) { + stacktrace = { + frames: [ + { + filename: fileurl, + lineno: lineno, + in_app: true + } + ] + }; + } - if (self._globalOptions.instrument && self._globalOptions.instrument.tryCatch) { - self._instrumentTryCatch(); - } + if ( + !!this._globalOptions.ignoreUrls.test && + this._globalOptions.ignoreUrls.test(fileurl) + ) { + return; + } - if (self._globalOptions.autoBreadcrumbs) self._instrumentBreadcrumbs(); // Install all of the plugins + if ( + !!this._globalOptions.whitelistUrls.test && + !this._globalOptions.whitelistUrls.test(fileurl) + ) { + return; + } - self._drainPlugins(); + var data = objectMerge( + { + // sentry.interfaces.Exception + exception: { + values: [ + { + type: type, + value: message, + stacktrace: stacktrace + } + ] + }, + culprit: fileurl + }, + options + ); + + // Fire away! + this._send(data); + }, + + _trimPacket: function(data) { + // For now, we only want to truncate the two different messages + // but this could/should be expanded to just trim everything + var max = this._globalOptions.maxMessageLength; + if (data.message) { + data.message = truncate(data.message, max); + } + if (data.exception) { + var exception = data.exception.values[0]; + exception.value = truncate(exception.value, max); + } - self._isRavenInstalled = true; + var request = data.request; + if (request) { + if (request.url) { + request.url = truncate(request.url, this._globalOptions.maxUrlLength); + } + if (request.Referer) { + request.Referer = truncate(request.Referer, this._globalOptions.maxUrlLength); + } } - Error.stackTraceLimit = self._globalOptions.stackTraceLimit; - return this; - }, + if (data.breadcrumbs && data.breadcrumbs.values) + this._trimBreadcrumbs(data.breadcrumbs); - /* - * Set the DSN (can be called multiple time unlike config) - * - * @param {string} dsn The public Sentry DSN - */ - setDSN: function setDSN(dsn) { - var self = this, - uri = self._parseDSN(dsn), - lastSlash = uri.path.lastIndexOf('/'), - path = uri.path.substr(1, lastSlash); + return data; + }, - self._dsn = dsn; - self._globalKey = uri.user; - self._globalSecret = uri.pass && uri.pass.substr(1); - self._globalProject = uri.path.substr(lastSlash + 1); - self._globalServer = self._getGlobalServer(uri); - self._globalEndpoint = self._globalServer + '/' + path + 'api/' + self._globalProject + '/store/'; // Reset backoff state since we may be pointing at a - // new project/server + /** + * Truncate breadcrumb values (right now just URLs) + */ + _trimBreadcrumbs: function(breadcrumbs) { + // known breadcrumb properties with urls + // TODO: also consider arbitrary prop values that start with (https?)?:// + var urlProps = ['to', 'from', 'url'], + urlProp, + crumb, + data; - this._resetBackoff(); - }, + for (var i = 0; i < breadcrumbs.values.length; ++i) { + crumb = breadcrumbs.values[i]; + if ( + !crumb.hasOwnProperty('data') || + !isObject(crumb.data) || + objectFrozen(crumb.data) + ) + continue; - /* - * Wrap code within a context so Raven can capture errors - * reliably across domains that is executed immediately. - * - * @param {object} options A specific set of options for this context [optional] - * @param {function} func The callback to be immediately executed within the context - * @param {array} args An array of arguments to be called with the callback [optional] - */ - context: function context(options, func, args) { - if (isFunction(options)) { - args = func || []; - func = options; - options = undefined; + data = objectMerge({}, crumb.data); + for (var j = 0; j < urlProps.length; ++j) { + urlProp = urlProps[j]; + if (data.hasOwnProperty(urlProp) && data[urlProp]) { + data[urlProp] = truncate(data[urlProp], this._globalOptions.maxUrlLength); + } + } + breadcrumbs.values[i].data = data; } - - return this.wrap(options, func).apply(this, args); }, - /* - * Wrap code within a context and returns back a new function to be executed - * - * @param {object} options A specific set of options for this context [optional] - * @param {function} func The function to be wrapped in a new context - * @param {function} func A function to call before the try/catch wrapper [optional, private] - * @return {function} The newly wrapped functions with a context - */ - wrap: function wrap(options, func, _before) { - var self = this; // 1 argument has been passed, and it's not a function - // so just return it + _getHttpData: function() { + if (!this._hasNavigator && !this._hasDocument) return; + var httpData = {}; - if (isUndefined(func) && !isFunction(options)) { - return options; - } // options is optional + if (this._hasNavigator && _navigator.userAgent) { + httpData.headers = { + 'User-Agent': navigator.userAgent + }; + } + // Check in `window` instead of `document`, as we may be in ServiceWorker environment + if (_window.location && _window.location.href) { + httpData.url = _window.location.href; + } - if (isFunction(options)) { - func = options; - options = undefined; - } // At this point, we've passed along 2 arguments, and the second one - // is not a function either, so we'll just return the second argument. + if (this._hasDocument && _document.referrer) { + if (!httpData.headers) httpData.headers = {}; + httpData.headers.Referer = _document.referrer; + } + return httpData; + }, - if (!isFunction(func)) { - return func; - } // We don't wanna wrap it twice! + _resetBackoff: function() { + this._backoffDuration = 0; + this._backoffStart = null; + }, + _shouldBackoff: function() { + return this._backoffDuration && now() - this._backoffStart < this._backoffDuration; + }, - try { - if (func.__raven__) { - return func; - } // If this has already been wrapped in the past, return that + /** + * Returns true if the in-process data payload matches the signature + * of the previously-sent data + * + * NOTE: This has to be done at this level because TraceKit can generate + * data from window.onerror WITHOUT an exception object (IE8, IE9, + * other old browsers). This can take the form of an "exception" + * data object with a single frame (derived from the onerror args). + */ + _isRepeatData: function(current) { + var last = this._lastData; + if ( + !last || + current.message !== last.message || // defined for captureMessage + current.culprit !== last.culprit // defined for captureException/onerror + ) + return false; - if (func.__raven_wrapper__) { - return func.__raven_wrapper__; - } - } catch (e) { - // Just accessing custom props in some Selenium environments - // can cause a "Permission denied" exception (see raven-js#495). - // Bail on wrapping and return the function as-is (defers to window.onerror). - return func; + // Stacktrace interface (i.e. from captureMessage) + if (current.stacktrace || last.stacktrace) { + return isSameStacktrace(current.stacktrace, last.stacktrace); + } else if (current.exception || last.exception) { + // Exception interface (i.e. from captureException/onerror) + return isSameException(current.exception, last.exception); } - function wrapped() { - var args = [], - i = arguments.length, - deep = !options || options && options.deep !== false; - - if (_before && isFunction(_before)) { - _before.apply(this, arguments); - } // Recursively wrap all of a function's arguments that are - // functions themselves. + return true; + }, + _setBackoffState: function(request) { + // If we are already in a backoff state, don't change anything + if (this._shouldBackoff()) { + return; + } - while (i--) { - args[i] = deep ? self.wrap(options, arguments[i]) : arguments[i]; - } + var status = request.status; - try { - // Attempt to invoke user-land function - // NOTE: If you are a Sentry user, and you are seeing this stack frame, it - // means Raven caught an error invoking your application code. This is - // expected behavior and NOT indicative of a bug with Raven.js. - return func.apply(this, args); - } catch (e) { - self._ignoreNextOnError(); + // 400 - project_id doesn't exist or some other fatal + // 401 - invalid/revoked dsn + // 429 - too many requests + if (!(status === 400 || status === 401 || status === 429)) return; - self.captureException(e, options); - throw e; + var retry; + try { + // If Retry-After is not in Access-Control-Expose-Headers, most + // browsers will throw an exception trying to access it + if (supportsFetch()) { + retry = request.headers.get('Retry-After'); + } else { + retry = request.getResponseHeader('Retry-After'); } - } // copy over properties of the old function - - for (var property in func) { - if (hasKey(func, property)) { - wrapped[property] = func[property]; - } + // Retry-After is returned in seconds + retry = parseInt(retry, 10) * 1000; + } catch (e) { + /* eslint no-empty:0 */ } - wrapped.prototype = func.prototype; - func.__raven_wrapper__ = wrapped; // Signal that this function has been wrapped/filled already - // for both debugging and to prevent it to being wrapped/filled twice + this._backoffDuration = retry + ? // If Sentry server returned a Retry-After value, use it + retry + : // Otherwise, double the last backoff duration (starts at 1 sec) + this._backoffDuration * 2 || 1000; - wrapped.__raven__ = true; - wrapped.__orig__ = func; - return wrapped; + this._backoffStart = now(); }, - /* - * Uninstalls the global error handler. - * - * @return {Raven} - */ - uninstall: function uninstall() { - tracekit.report.uninstall(); + _send: function(data) { + var globalOptions = this._globalOptions; - this._unpatchFunctionToString(); + var baseData = { + project: this._globalProject, + logger: globalOptions.logger, + platform: 'javascript' + }, + httpData = this._getHttpData(); - this._restoreBuiltIns(); + if (httpData) { + baseData.request = httpData; + } - this._restoreConsole(); + // HACK: delete `trimHeadFrames` to prevent from appearing in outbound payload + if (data.trimHeadFrames) delete data.trimHeadFrames; - Error.stackTraceLimit = this._originalErrorStackTraceLimit; - this._isRavenInstalled = false; - return this; - }, + data = objectMerge(baseData, data); - /* - * Manually capture an exception and send it over to Sentry - * - * @param {error} ex An exception to be logged - * @param {object} options A specific set of options for this error [optional] - * @return {Raven} - */ - captureException: function captureException(ex, options) { - options = objectMerge({ - trimHeadFrames: 0 - }, options ? options : {}); // Cases for sending ex as a message, rather than an exception + // Merge in the tags and extra separately since objectMerge doesn't handle a deep merge + data.tags = objectMerge(objectMerge({}, this._globalContext.tags), data.tags); + data.extra = objectMerge(objectMerge({}, this._globalContext.extra), data.extra); - var isNotError = !isError(ex); - var isNotErrorEvent = !isErrorEvent(ex); - var isErrorEventWithoutError = isErrorEvent(ex) && !ex.error; + // Send along our own collected metadata with extra + data.extra['session:duration'] = now() - this._startTime; + + if (this._breadcrumbs && this._breadcrumbs.length > 0) { + // intentionally make shallow copy so that additions + // to breadcrumbs aren't accidentally sent in this request + data.breadcrumbs = { + values: [].slice.call(this._breadcrumbs, 0) + }; + } - if (isNotError && isNotErrorEvent || isErrorEventWithoutError) { - return this.captureMessage(ex, objectMerge(options, { - stacktrace: true, - // if we fall back to captureMessage, default to attempting a new trace - trimHeadFrames: options.trimHeadFrames + 1 - })); - } // Get actual Error from ErrorEvent + if (this._globalContext.user) { + // sentry.interfaces.User + data.user = this._globalContext.user; + } + // Include the environment if it's defined in globalOptions + if (globalOptions.environment) data.environment = globalOptions.environment; - if (isErrorEvent(ex)) ex = ex.error; // Store the raw exception object for potential debugging and introspection + // Include the release if it's defined in globalOptions + if (globalOptions.release) data.release = globalOptions.release; - this._lastCapturedException = ex; // TraceKit.report will re-raise any exception passed to it, - // which means you have to wrap it in try/catch. Instead, we - // can wrap it here and only re-raise if TraceKit.report - // raises an exception different from the one we asked to - // report on. + // Include server_name if it's defined in globalOptions + if (globalOptions.serverName) data.server_name = globalOptions.serverName; - try { - var stack = tracekit.computeStackTrace(ex); + data = this._sanitizeData(data); - this._handleStackInfo(stack, options); - } catch (ex1) { - if (ex !== ex1) { - throw ex1; + // Cleanup empty properties before sending them to the server + Object.keys(data).forEach(function(key) { + if (data[key] == null || data[key] === '' || isEmptyObject(data[key])) { + delete data[key]; } + }); + + if (isFunction(globalOptions.dataCallback)) { + data = globalOptions.dataCallback(data) || data; } - return this; - }, + // Why?????????? + if (!data || isEmptyObject(data)) { + return; + } - /* - * Manually send a message to Sentry - * - * @param {string} msg A plain message to be captured in Sentry - * @param {object} options A specific set of options for this message [optional] - * @return {Raven} - */ - captureMessage: function captureMessage(msg, options) { - // config() automagically converts ignoreErrors from a list to a RegExp so we need to test for an - // early call; we'll error on the side of logging anything called before configuration since it's - // probably something you should see: - if (!!this._globalOptions.ignoreErrors.test && this._globalOptions.ignoreErrors.test(msg)) { + // Check if the request should be filtered or not + if ( + isFunction(globalOptions.shouldSendCallback) && + !globalOptions.shouldSendCallback(data) + ) { return; } - options = options || {}; - var data = objectMerge({ - message: msg + '' // Make sure it's actually a string + // Backoff state: Sentry server previously responded w/ an error (e.g. 429 - too many requests), + // so drop requests until "cool-off" period has elapsed. + if (this._shouldBackoff()) { + this._logDebug('warn', 'Raven dropped error due to backoff: ', data); + return; + } - }, options); - var ex; // Generate a "synthetic" stack trace from this point. - // NOTE: If you are a Sentry user, and you are seeing this stack frame, it is NOT indicative - // of a bug with Raven.js. Sentry generates synthetic traces either by configuration, - // or if it catches a thrown object without a "stack" property. + if (typeof globalOptions.sampleRate === 'number') { + if (Math.random() < globalOptions.sampleRate) { + this._sendProcessedPayload(data); + } + } else { + this._sendProcessedPayload(data); + } + }, - try { - throw new Error(msg); - } catch (ex1) { - ex = ex1; - } // null exception name so `Error` isn't prefixed to msg + _sanitizeData: function(data) { + return sanitize(data, this._globalOptions.sanitizeKeys); + }, + _getUuid: function() { + return uuid4(); + }, - ex.name = null; - var stack = tracekit.computeStackTrace(ex); // stack[0] is `throw new Error(msg)` call itself, we are interested in the frame that was just before that, stack[1] + _sendProcessedPayload: function(data, callback) { + var self = this; + var globalOptions = this._globalOptions; - var initialCall = isArray(stack.stack) && stack.stack[1]; - var fileurl = initialCall && initialCall.url || ''; + if (!this.isSetup()) return; - if (!!this._globalOptions.ignoreUrls.test && this._globalOptions.ignoreUrls.test(fileurl)) { - return; - } + // Try and clean up the packet before sending by truncating long values + data = this._trimPacket(data); - if (!!this._globalOptions.whitelistUrls.test && !this._globalOptions.whitelistUrls.test(fileurl)) { + // ideally duplicate error testing should occur *before* dataCallback/shouldSendCallback, + // but this would require copying an un-truncated copy of the data packet, which can be + // arbitrarily deep (extra_data) -- could be worthwhile? will revisit + if (!this._globalOptions.allowDuplicates && this._isRepeatData(data)) { + this._logDebug('warn', 'Raven dropped repeat event: ', data); return; } - if (this._globalOptions.stacktrace || options && options.stacktrace) { - options = objectMerge({ - // fingerprint on msg, not stack trace (legacy behavior, could be - // revisited) - fingerprint: msg, - // since we know this is a synthetic trace, the top N-most frames - // MUST be from Raven.js, so mark them as in_app later by setting - // trimHeadFrames - trimHeadFrames: (options.trimHeadFrames || 0) + 1 - }, options); - - var frames = this._prepareFrames(stack, options); - - data.stacktrace = { - // Sentry expects frames oldest to newest - frames: frames.reverse() - }; - } // Fire away! - + // Send along an event_id if not explicitly passed. + // This event_id can be used to reference the error within Sentry itself. + // Set lastEventId after we know the error should actually be sent + this._lastEventId = data.event_id || (data.event_id = this._getUuid()); - this._send(data); + // Store outbound payload after trim + this._lastData = data; - return this; - }, - captureBreadcrumb: function captureBreadcrumb(obj) { - var crumb = objectMerge({ - timestamp: now() / 1000 - }, obj); + this._logDebug('debug', 'Raven about to send:', data); - if (isFunction(this._globalOptions.breadcrumbCallback)) { - var result = this._globalOptions.breadcrumbCallback(crumb); + var auth = { + sentry_version: '7', + sentry_client: 'raven-js/' + this.VERSION, + sentry_key: this._globalKey + }; - if (isObject(result) && !isEmptyObject(result)) { - crumb = result; - } else if (result === false) { - return this; - } + if (this._globalSecret) { + auth.sentry_secret = this._globalSecret; } - this._breadcrumbs.push(crumb); + var exception = data.exception && data.exception.values[0]; - if (this._breadcrumbs.length > this._globalOptions.maxBreadcrumbs) { - this._breadcrumbs.shift(); + // only capture 'sentry' breadcrumb is autoBreadcrumbs is truthy + if ( + this._globalOptions.autoBreadcrumbs && + this._globalOptions.autoBreadcrumbs.sentry + ) { + this.captureBreadcrumb({ + category: 'sentry', + message: exception + ? (exception.type ? exception.type + ': ' : '') + exception.value + : data.message, + event_id: data.event_id, + level: data.level || 'error' // presume error unless specified + }); } - return this; - }, - addPlugin: function addPlugin(plugin - /*arg1, arg2, ... argN*/ - ) { - var pluginArgs = [].slice.call(arguments, 1); + var url = this._globalEndpoint; + (globalOptions.transport || this._makeRequest).call(this, { + url: url, + auth: auth, + data: data, + options: globalOptions, + onSuccess: function success() { + self._resetBackoff(); - this._plugins.push([plugin, pluginArgs]); + self._triggerEvent('success', { + data: data, + src: url + }); + callback && callback(); + }, + onError: function failure(error) { + self._logDebug('error', 'Raven transport failed to send: ', error); - if (this._isRavenInstalled) { - this._drainPlugins(); - } + if (error.request) { + self._setBackoffState(error.request); + } - return this; + self._triggerEvent('failure', { + data: data, + src: url + }); + error = error || new Error('Raven send failed (no additional details provided)'); + callback && callback(error); + } + }); }, - /* - * Set/clear a user to be sent along with the payload. - * - * @param {object} user An object representing user data [optional] - * @return {Raven} - */ - setUserContext: function setUserContext(user) { - // Intentionally do not merge here since that's an unexpected behavior. - this._globalContext.user = user; - return this; - }, + _makeRequest: function(opts) { + // Auth is intentionally sent as part of query string (NOT as custom HTTP header) to avoid preflight CORS requests + var url = opts.url + '?' + urlencode(opts.auth); - /* - * Merge extra attributes to be sent along with the payload. - * - * @param {object} extra An object representing extra data [optional] - * @return {Raven} - */ - setExtraContext: function setExtraContext(extra) { - this._mergeContext('extra', extra); + var evaluatedHeaders = null; + var evaluatedFetchParameters = {}; - return this; - }, + if (opts.options.headers) { + evaluatedHeaders = this._evaluateHash(opts.options.headers); + } - /* - * Merge tags to be sent along with the payload. - * - * @param {object} tags An object representing tags [optional] - * @return {Raven} - */ - setTagsContext: function setTagsContext(tags) { - this._mergeContext('tags', tags); + if (opts.options.fetchParameters) { + evaluatedFetchParameters = this._evaluateHash(opts.options.fetchParameters); + } - return this; - }, + if (supportsFetch()) { + evaluatedFetchParameters.body = stringify(opts.data); - /* - * Clear all of the context. - * - * @return {Raven} - */ - clearContext: function clearContext() { - this._globalContext = {}; - return this; - }, + var defaultFetchOptions = objectMerge({}, this._fetchDefaults); + var fetchOptions = objectMerge(defaultFetchOptions, evaluatedFetchParameters); - /* - * Get a copy of the current context. This cannot be mutated. - * - * @return {object} copy of context - */ - getContext: function getContext() { - // lol javascript - return JSON.parse(stringify_1(this._globalContext)); - }, + if (evaluatedHeaders) { + fetchOptions.headers = evaluatedHeaders; + } - /* - * Set environment of application - * - * @param {string} environment Typically something like 'production'. - * @return {Raven} - */ - setEnvironment: function setEnvironment(environment) { - this._globalOptions.environment = environment; - return this; - }, + return _window + .fetch(url, fetchOptions) + .then(function(response) { + if (response.ok) { + opts.onSuccess && opts.onSuccess(); + } else { + var error = new Error('Sentry error code: ' + response.status); + // It's called request only to keep compatibility with XHR interface + // and not add more redundant checks in setBackoffState method + error.request = response; + opts.onError && opts.onError(error); + } + }) + ['catch'](function() { + opts.onError && + opts.onError(new Error('Sentry error code: network unavailable')); + }); + } - /* - * Set release version of application - * - * @param {string} release Typically something like a git SHA to identify version - * @return {Raven} - */ - setRelease: function setRelease(release) { - this._globalOptions.release = release; - return this; - }, + var request = _window.XMLHttpRequest && new _window.XMLHttpRequest(); + if (!request) return; - /* - * Set the dataCallback option - * - * @param {function} callback The callback to run which allows the - * data blob to be mutated before sending - * @return {Raven} - */ - setDataCallback: function setDataCallback(callback) { - var original = this._globalOptions.dataCallback; - this._globalOptions.dataCallback = keepOriginalCallback(original, callback); - return this; - }, + // if browser doesn't support CORS (e.g. IE7), we are out of luck + var hasCORS = 'withCredentials' in request || typeof XDomainRequest !== 'undefined'; - /* - * Set the breadcrumbCallback option - * - * @param {function} callback The callback to run which allows filtering - * or mutating breadcrumbs - * @return {Raven} - */ - setBreadcrumbCallback: function setBreadcrumbCallback(callback) { - var original = this._globalOptions.breadcrumbCallback; - this._globalOptions.breadcrumbCallback = keepOriginalCallback(original, callback); - return this; - }, + if (!hasCORS) return; - /* - * Set the shouldSendCallback option - * - * @param {function} callback The callback to run which allows - * introspecting the blob before sending - * @return {Raven} - */ - setShouldSendCallback: function setShouldSendCallback(callback) { - var original = this._globalOptions.shouldSendCallback; - this._globalOptions.shouldSendCallback = keepOriginalCallback(original, callback); - return this; - }, + if ('withCredentials' in request) { + request.onreadystatechange = function() { + if (request.readyState !== 4) { + return; + } else if (request.status === 200) { + opts.onSuccess && opts.onSuccess(); + } else if (opts.onError) { + var err = new Error('Sentry error code: ' + request.status); + err.request = request; + opts.onError(err); + } + }; + } else { + request = new XDomainRequest(); + // xdomainrequest cannot go http -> https (or vice versa), + // so always use protocol relative + url = url.replace(/^https?:/, ''); - /** - * Override the default HTTP transport mechanism that transmits data - * to the Sentry server. - * - * @param {function} transport Function invoked instead of the default - * `makeRequest` handler. - * - * @return {Raven} - */ - setTransport: function setTransport(transport) { - this._globalOptions.transport = transport; - return this; - }, + // onreadystatechange not supported by XDomainRequest + if (opts.onSuccess) { + request.onload = opts.onSuccess; + } + if (opts.onError) { + request.onerror = function() { + var err = new Error('Sentry error code: XDomainRequest'); + err.request = request; + opts.onError(err); + }; + } + } - /* - * Get the latest raw exception that was captured by Raven. - * - * @return {error} - */ - lastException: function lastException() { - return this._lastCapturedException; - }, + request.open('POST', url); - /* - * Get the last event id - * - * @return {string} - */ - lastEventId: function lastEventId() { - return this._lastEventId; - }, + if (evaluatedHeaders) { + each(evaluatedHeaders, function(key, value) { + request.setRequestHeader(key, value); + }); + } - /* - * Determine if Raven is setup and ready to go. - * - * @return {boolean} - */ - isSetup: function isSetup() { - if (!this._hasJSON) return false; // needs JSON support + request.send(stringify(opts.data)); + }, - if (!this._globalServer) { - if (!this.ravenNotConfiguredError) { - this.ravenNotConfiguredError = true; + _evaluateHash: function(hash) { + var evaluated = {}; - this._logDebug('error', 'Error: Raven has not been configured.'); + for (var key in hash) { + if (hash.hasOwnProperty(key)) { + var value = hash[key]; + evaluated[key] = typeof value === 'function' ? value() : value; } - - return false; } - return true; + return evaluated; }, - afterLoad: function afterLoad() { - // TODO: remove window dependence? - // Attempt to initialize Raven on load - var RavenConfig = _window$1.RavenConfig; - if (RavenConfig) { - this.config(RavenConfig.dsn, RavenConfig.config).install(); + _logDebug: function(level) { + // We allow `Raven.debug` and `Raven.config(DSN, { debug: true })` to not make backward incompatible API change + if ( + this._originalConsoleMethods[level] && + (this.debug || this._globalOptions.debug) + ) { + // In IE<10 console methods do not have their own 'apply' method + Function.prototype.apply.call( + this._originalConsoleMethods[level], + this._originalConsole, + [].slice.call(arguments, 1) + ); } }, - showReportDialog: function showReportDialog(options) { - if (!_document // doesn't work without a document (React native) - ) return; - options = options || {}; - var lastEventId = options.eventId || this.lastEventId(); - if (!lastEventId) { - throw new configError('Missing eventId'); + _mergeContext: function(key, context) { + if (isUndefined(context)) { + delete this._globalContext[key]; + } else { + this._globalContext[key] = objectMerge(this._globalContext[key] || {}, context); } + } +}; - var dsn = options.dsn || this._dsn; +// Deprecations +Raven.prototype.setUser = Raven.prototype.setUserContext; +Raven.prototype.setReleaseContext = Raven.prototype.setRelease; - if (!dsn) { - throw new configError('Missing DSN'); - } +module.exports = Raven; - var encode = encodeURIComponent; - var qs = ''; - qs += '?eventId=' + encode(lastEventId); - qs += '&dsn=' + encode(dsn); - var user = options.user || this._globalContext.user; +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"2":2,"3":3,"6":6,"7":7,"8":8,"9":9}],5:[function(_dereq_,module,exports){ +(function (global){ +/** + * Enforces a single instance of the Raven client, and the + * main entry point for Raven. If you are a consumer of the + * Raven library, you SHOULD load this file (vs raven.js). + **/ - if (user) { - if (user.name) qs += '&name=' + encode(user.name); - if (user.email) qs += '&email=' + encode(user.email); - } +var RavenConstructor = _dereq_(4); - var globalServer = this._getGlobalServer(this._parseDSN(dsn)); +// This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) +var _window = + typeof window !== 'undefined' + ? window + : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; +var _Raven = _window.Raven; - var script = _document.createElement('script'); +var Raven = new RavenConstructor(); - script.async = true; - script.src = globalServer + '/api/embed/error-page/' + qs; +/* + * Allow multiple versions of Raven to be installed. + * Strip Raven from the global context and returns the instance. + * + * @return {Raven} + */ +Raven.noConflict = function() { + _window.Raven = _Raven; + return Raven; +}; - (_document.head || _document.body).appendChild(script); - }, +Raven.afterLoad(); - /**** Private functions ****/ - _ignoreNextOnError: function _ignoreNextOnError() { - var self = this; - this._ignoreOnError += 1; - setTimeout(function () { - // onerror should trigger before setTimeout - self._ignoreOnError -= 1; - }); - }, - _triggerEvent: function _triggerEvent(eventType, options) { - // NOTE: `event` is a native browser thing, so let's avoid conflicting wiht it - var evt, key; - if (!this._hasDocument) return; - options = options || {}; - eventType = 'raven' + eventType.substr(0, 1).toUpperCase() + eventType.substr(1); +module.exports = Raven; - if (_document.createEvent) { - evt = _document.createEvent('HTMLEvents'); - evt.initEvent(eventType, true, true); - } else { - evt = _document.createEventObject(); - evt.eventType = eventType; - } +/** + * DISCLAIMER: + * + * Expose `Client` constructor for cases where user want to track multiple "sub-applications" in one larger app. + * It's not meant to be used by a wide audience, so pleaaase make sure that you know what you're doing before using it. + * Accidentally calling `install` multiple times, may result in an unexpected behavior that's very hard to debug. + * + * It's called `Client' to be in-line with Raven Node implementation. + * + * HOWTO: + * + * import Raven from 'raven-js'; + * + * const someAppReporter = new Raven.Client(); + * const someOtherAppReporter = new Raven.Client(); + * + * someAppReporter.config('__DSN__', { + * ...config goes here + * }); + * + * someOtherAppReporter.config('__OTHER_DSN__', { + * ...config goes here + * }); + * + * someAppReporter.captureMessage(...); + * someAppReporter.captureException(...); + * someAppReporter.captureBreadcrumb(...); + * + * someOtherAppReporter.captureMessage(...); + * someOtherAppReporter.captureException(...); + * someOtherAppReporter.captureBreadcrumb(...); + * + * It should "just work". + */ +module.exports.Client = RavenConstructor; - for (key in options) { - if (hasKey(options, key)) { - evt[key] = options[key]; - } - } +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"4":4}],6:[function(_dereq_,module,exports){ +(function (global){ +var stringify = _dereq_(8); - if (_document.createEvent) { - // IE9 if standards - _document.dispatchEvent(evt); - } else { - // IE8 regardless of Quirks or Standards - // IE9 if quirks - try { - _document.fireEvent('on' + evt.eventType.toLowerCase(), evt); - } catch (e) {// Do nothing - } - } - }, +var _window = + typeof window !== 'undefined' + ? window + : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; - /** - * Wraps addEventListener to capture UI breadcrumbs - * @param evtName the event name (e.g. "click") - * @returns {Function} - * @private - */ - _breadcrumbEventHandler: function _breadcrumbEventHandler(evtName) { - var self = this; - return function (evt) { - // reset keypress timeout; e.g. triggering a 'click' after - // a 'keypress' will reset the keypress debounce so that a new - // set of keypresses can be recorded - self._keypressTimeout = null; // It's possible this handler might trigger multiple times for the same - // event (e.g. event propagation through node ancestors). Ignore if we've - // already captured the event. +function isObject(what) { + return typeof what === 'object' && what !== null; +} - if (self._lastCapturedEvent === evt) return; - self._lastCapturedEvent = evt; // try/catch both: - // - accessing evt.target (see getsentry/raven-js#838, #768) - // - `htmlTreeAsString` because it's complex, and just accessing the DOM incorrectly - // can throw an exception in some circumstances. +// Yanked from https://git.io/vS8DV re-used under CC0 +// with some tiny modifications +function isError(value) { + switch ({}.toString.call(value)) { + case '[object Error]': + return true; + case '[object Exception]': + return true; + case '[object DOMException]': + return true; + default: + return value instanceof Error; + } +} - var target; +function isErrorEvent(value) { + return supportsErrorEvent() && {}.toString.call(value) === '[object ErrorEvent]'; +} - try { - target = htmlTreeAsString(evt.target); - } catch (e) { - target = ''; - } +function isUndefined(what) { + return what === void 0; +} - self.captureBreadcrumb({ - category: 'ui.' + evtName, - // e.g. ui.click, ui.input - message: target - }); - }; - }, +function isFunction(what) { + return typeof what === 'function'; +} - /** - * Wraps addEventListener to capture keypress UI events - * @returns {Function} - * @private - */ - _keypressEventHandler: function _keypressEventHandler() { - var self = this, - debounceDuration = 1000; // milliseconds - // TODO: if somehow user switches keypress target before - // debounce timeout is triggered, we will only capture - // a single breadcrumb from the FIRST target (acceptable?) +function isPlainObject(what) { + return Object.prototype.toString.call(what) === '[object Object]'; +} - return function (evt) { - var target; +function isString(what) { + return Object.prototype.toString.call(what) === '[object String]'; +} - try { - target = evt.target; - } catch (e) { - // just accessing event properties can throw an exception in some rare circumstances - // see: https://github.com/getsentry/raven-js/issues/838 - return; - } +function isArray(what) { + return Object.prototype.toString.call(what) === '[object Array]'; +} - var tagName = target && target.tagName; // only consider keypress events on actual input elements - // this will disregard keypresses targeting body (e.g. tabbing - // through elements, hotkeys, etc) +function isEmptyObject(what) { + if (!isPlainObject(what)) return false; - if (!tagName || tagName !== 'INPUT' && tagName !== 'TEXTAREA' && !target.isContentEditable) return; // record first keypress in a series, but ignore subsequent - // keypresses until debounce clears + for (var _ in what) { + if (what.hasOwnProperty(_)) { + return false; + } + } + return true; +} - var timeout = self._keypressTimeout; +function supportsErrorEvent() { + try { + new ErrorEvent(''); // eslint-disable-line no-new + return true; + } catch (e) { + return false; + } +} - if (!timeout) { - self._breadcrumbEventHandler('input')(evt); - } +function supportsFetch() { + if (!('fetch' in _window)) return false; - clearTimeout(timeout); - self._keypressTimeout = setTimeout(function () { - self._keypressTimeout = null; - }, debounceDuration); - }; - }, + try { + new Headers(); // eslint-disable-line no-new + new Request(''); // eslint-disable-line no-new + new Response(); // eslint-disable-line no-new + return true; + } catch (e) { + return false; + } +} - /** - * Captures a breadcrumb of type "navigation", normalizing input URLs - * @param to the originating URL - * @param from the target URL - * @private - */ - _captureUrlChange: function _captureUrlChange(from, to) { - var parsedLoc = parseUrl(this._location.href); - var parsedTo = parseUrl(to); - var parsedFrom = parseUrl(from); // because onpopstate only tells you the "new" (to) value of location.href, and - // not the previous (from) value, we need to track the value of the current URL - // state ourselves +// Despite all stars in the sky saying that Edge supports old draft syntax, aka 'never', 'always', 'origin' and 'default +// https://caniuse.com/#feat=referrer-policy +// It doesn't. And it throw exception instead of ignoring this parameter... +// REF: https://github.com/getsentry/raven-js/issues/1233 +function supportsReferrerPolicy() { + if (!supportsFetch()) return false; + + try { + // eslint-disable-next-line no-new + new Request('pickleRick', { + referrerPolicy: 'origin' + }); + return true; + } catch (e) { + return false; + } +} + +function supportsPromiseRejectionEvent() { + return typeof PromiseRejectionEvent === 'function'; +} + +function wrappedCallback(callback) { + function dataCallback(data, original) { + var normalizedData = callback(data) || data; + if (original) { + return original(normalizedData) || normalizedData; + } + return normalizedData; + } + + return dataCallback; +} - this._lastHref = to; // Use only the path component of the URL if the URL matches the current - // document (almost all the time when using pushState) +function each(obj, callback) { + var i, j; - if (parsedLoc.protocol === parsedTo.protocol && parsedLoc.host === parsedTo.host) to = parsedTo.relative; - if (parsedLoc.protocol === parsedFrom.protocol && parsedLoc.host === parsedFrom.host) from = parsedFrom.relative; - this.captureBreadcrumb({ - category: 'navigation', - data: { - to: to, - from: from + if (isUndefined(obj.length)) { + for (i in obj) { + if (hasKey(obj, i)) { + callback.call(null, i, obj[i]); } - }); - }, - _patchFunctionToString: function _patchFunctionToString() { - var self = this; - self._originalFunctionToString = Function.prototype.toString; // eslint-disable-next-line no-extend-native - - Function.prototype.toString = function () { - if (typeof this === 'function' && this.__raven__) { - return self._originalFunctionToString.apply(this.__orig__, arguments); + } + } else { + j = obj.length; + if (j) { + for (i = 0; i < j; i++) { + callback.call(null, i, obj[i]); } - - return self._originalFunctionToString.apply(this, arguments); - }; - }, - _unpatchFunctionToString: function _unpatchFunctionToString() { - if (this._originalFunctionToString) { - // eslint-disable-next-line no-extend-native - Function.prototype.toString = this._originalFunctionToString; } - }, - - /** - * Wrap timer functions and event targets to catch errors and provide - * better metadata. - */ - _instrumentTryCatch: function _instrumentTryCatch() { - var self = this; - var wrappedBuiltIns = self._wrappedBuiltIns; + } +} - function wrapTimeFn(orig) { - return function (fn, t) { - // preserve arity - // Make a copy of the arguments to prevent deoptimization - // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments - var args = new Array(arguments.length); +function objectMerge(obj1, obj2) { + if (!obj2) { + return obj1; + } + each(obj2, function(key, value) { + obj1[key] = value; + }); + return obj1; +} - for (var i = 0; i < args.length; ++i) { - args[i] = arguments[i]; - } +/** + * This function is only used for react-native. + * react-native freezes object that have already been sent over the + * js bridge. We need this function in order to check if the object is frozen. + * So it's ok that objectFrozen returns false if Object.isFrozen is not + * supported because it's not relevant for other "platforms". See related issue: + * https://github.com/getsentry/react-native-sentry/issues/57 + */ +function objectFrozen(obj) { + if (!Object.isFrozen) { + return false; + } + return Object.isFrozen(obj); +} - var originalCallback = args[0]; +function truncate(str, max) { + if (typeof max !== 'number') { + throw new Error('2nd argument to `truncate` function should be a number'); + } + if (typeof str !== 'string' || max === 0) { + return str; + } + return str.length <= max ? str : str.substr(0, max) + '\u2026'; +} - if (isFunction(originalCallback)) { - args[0] = self.wrap(originalCallback); - } // IE < 9 doesn't support .call/.apply on setInterval/setTimeout, but it - // also supports only two arguments and doesn't care what this is, so we - // can just call the original function directly. +/** + * hasKey, a better form of hasOwnProperty + * Example: hasKey(MainHostObject, property) === true/false + * + * @param {Object} host object to check property + * @param {string} key to check + */ +function hasKey(object, key) { + return Object.prototype.hasOwnProperty.call(object, key); +} +function joinRegExp(patterns) { + // Combine an array of regular expressions and strings into one large regexp + // Be mad. + var sources = [], + i = 0, + len = patterns.length, + pattern; - if (orig.apply) { - return orig.apply(this, args); - } else { - return orig(args[0], args[1]); - } - }; + for (; i < len; i++) { + pattern = patterns[i]; + if (isString(pattern)) { + // If it's a string, we need to escape it + // Taken from: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions + sources.push(pattern.replace(/([.*+?^=!:${}()|\[\]\/\\])/g, '\\$1')); + } else if (pattern && pattern.source) { + // If it's a regexp already, we want to extract the source + sources.push(pattern.source); } + // Intentionally skip other cases + } + return new RegExp(sources.join('|'), 'i'); +} - var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; +function urlencode(o) { + var pairs = []; + each(o, function(key, value) { + pairs.push(encodeURIComponent(key) + '=' + encodeURIComponent(value)); + }); + return pairs.join('&'); +} - function wrapEventTarget(global) { - var proto = _window$1[global] && _window$1[global].prototype; +// borrowed from https://tools.ietf.org/html/rfc3986#appendix-B +// intentionally using regex and not href parsing trick because React Native and other +// environments where DOM might not be available +function parseUrl(url) { + if (typeof url !== 'string') return {}; + var match = url.match(/^(([^:\/?#]+):)?(\/\/([^\/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?$/); - if (proto && proto.hasOwnProperty && proto.hasOwnProperty('addEventListener')) { - fill(proto, 'addEventListener', function (orig) { - return function (evtName, fn, capture, secure) { - // preserve arity - try { - if (fn && fn.handleEvent) { - fn.handleEvent = self.wrap(fn.handleEvent); - } - } catch (err) {} // can sometimes get 'Permission denied to access property "handle Event' - // More breadcrumb DOM capture ... done here and not in `_instrumentBreadcrumbs` - // so that we don't have more than one wrapper function + // coerce to undefined values to empty string so we don't get 'undefined' + var query = match[6] || ''; + var fragment = match[8] || ''; + return { + protocol: match[2], + host: match[4], + path: match[5], + relative: match[5] + query + fragment // everything minus origin + }; +} +function uuid4() { + var crypto = _window.crypto || _window.msCrypto; + + if (!isUndefined(crypto) && crypto.getRandomValues) { + // Use window.crypto API if available + // eslint-disable-next-line no-undef + var arr = new Uint16Array(8); + crypto.getRandomValues(arr); + // set 4 in byte 7 + arr[3] = (arr[3] & 0xfff) | 0x4000; + // set 2 most significant bits of byte 9 to '10' + arr[4] = (arr[4] & 0x3fff) | 0x8000; - var before, clickHandler, keypressHandler; + var pad = function(num) { + var v = num.toString(16); + while (v.length < 4) { + v = '0' + v; + } + return v; + }; - if (autoBreadcrumbs && autoBreadcrumbs.dom && (global === 'EventTarget' || global === 'Node')) { - // NOTE: generating multiple handlers per addEventListener invocation, should - // revisit and verify we can just use one (almost certainly) - clickHandler = self._breadcrumbEventHandler('click'); - keypressHandler = self._keypressEventHandler(); + return ( + pad(arr[0]) + + pad(arr[1]) + + pad(arr[2]) + + pad(arr[3]) + + pad(arr[4]) + + pad(arr[5]) + + pad(arr[6]) + + pad(arr[7]) + ); + } else { + // http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/2117523#2117523 + return 'xxxxxxxxxxxx4xxxyxxxxxxxxxxxxxxx'.replace(/[xy]/g, function(c) { + var r = (Math.random() * 16) | 0, + v = c === 'x' ? r : (r & 0x3) | 0x8; + return v.toString(16); + }); + } +} - before = function before(evt) { - // need to intercept every DOM event in `before` argument, in case that - // same wrapped method is re-used for different events (e.g. mousemove THEN click) - // see #724 - if (!evt) return; - var eventType; +/** + * Given a child DOM element, returns a query-selector statement describing that + * and its ancestors + * e.g. [HTMLElement] => body > div > input#foo.btn[name=baz] + * @param elem + * @returns {string} + */ +function htmlTreeAsString(elem) { + /* eslint no-extra-parens:0*/ + var MAX_TRAVERSE_HEIGHT = 5, + MAX_OUTPUT_LEN = 80, + out = [], + height = 0, + len = 0, + separator = ' > ', + sepLength = separator.length, + nextStr; - try { - eventType = evt.type; - } catch (e) { - // just accessing event properties can throw an exception in some rare circumstances - // see: https://github.com/getsentry/raven-js/issues/838 - return; - } + while (elem && height++ < MAX_TRAVERSE_HEIGHT) { + nextStr = htmlElementAsString(elem); + // bail out if + // - nextStr is the 'html' element + // - the length of the string that would be created exceeds MAX_OUTPUT_LEN + // (ignore this limit if we are on the first iteration) + if ( + nextStr === 'html' || + (height > 1 && len + out.length * sepLength + nextStr.length >= MAX_OUTPUT_LEN) + ) { + break; + } - if (eventType === 'click') return clickHandler(evt);else if (eventType === 'keypress') return keypressHandler(evt); - }; - } + out.push(nextStr); - return orig.call(this, evtName, self.wrap(fn, undefined, before), capture, secure); - }; - }, wrappedBuiltIns); - fill(proto, 'removeEventListener', function (orig) { - return function (evt, fn, capture, secure) { - try { - fn = fn && (fn.__raven_wrapper__ ? fn.__raven_wrapper__ : fn); - } catch (e) {// ignore, accessing __raven_wrapper__ will throw in some Selenium environments - } + len += nextStr.length; + elem = elem.parentNode; + } - return orig.call(this, evt, fn, capture, secure); - }; - }, wrappedBuiltIns); - } + return out.reverse().join(separator); +} + +/** + * Returns a simple, query-selector representation of a DOM element + * e.g. [HTMLElement] => input#foo.btn[name=baz] + * @param HTMLElement + * @returns {string} + */ +function htmlElementAsString(elem) { + var out = [], + className, + classes, + key, + attr, + i; + + if (!elem || !elem.tagName) { + return ''; + } + + out.push(elem.tagName.toLowerCase()); + if (elem.id) { + out.push('#' + elem.id); + } + + className = elem.className; + if (className && isString(className)) { + classes = className.split(/\s+/); + for (i = 0; i < classes.length; i++) { + out.push('.' + classes[i]); + } + } + var attrWhitelist = ['type', 'name', 'title', 'alt']; + for (i = 0; i < attrWhitelist.length; i++) { + key = attrWhitelist[i]; + attr = elem.getAttribute(key); + if (attr) { + out.push('[' + key + '="' + attr + '"]'); } + } + return out.join(''); +} - fill(_window$1, 'setTimeout', wrapTimeFn, wrappedBuiltIns); - fill(_window$1, 'setInterval', wrapTimeFn, wrappedBuiltIns); +/** + * Returns true if either a OR b is truthy, but not both + */ +function isOnlyOneTruthy(a, b) { + return !!(!!a ^ !!b); +} - if (_window$1.requestAnimationFrame) { - fill(_window$1, 'requestAnimationFrame', function (orig) { - return function (cb) { - return orig(self.wrap(cb)); - }; - }, wrappedBuiltIns); - } // event targets borrowed from bugsnag-js: - // https://github.com/bugsnag/bugsnag-js/blob/master/src/bugsnag.js#L666 +/** + * Returns true if both parameters are undefined + */ +function isBothUndefined(a, b) { + return isUndefined(a) && isUndefined(b); +} +/** + * Returns true if the two input exception interfaces have the same content + */ +function isSameException(ex1, ex2) { + if (isOnlyOneTruthy(ex1, ex2)) return false; - var eventTargets = ['EventTarget', 'Window', 'Node', 'ApplicationCache', 'AudioTrackList', 'ChannelMergerNode', 'CryptoOperation', 'EventSource', 'FileReader', 'HTMLUnknownElement', 'IDBDatabase', 'IDBRequest', 'IDBTransaction', 'KeyOperation', 'MediaController', 'MessagePort', 'ModalWindow', 'Notification', 'SVGElementInstance', 'Screen', 'TextTrack', 'TextTrackCue', 'TextTrackList', 'WebSocket', 'WebSocketWorker', 'Worker', 'XMLHttpRequest', 'XMLHttpRequestEventTarget', 'XMLHttpRequestUpload']; + ex1 = ex1.values[0]; + ex2 = ex2.values[0]; - for (var i = 0; i < eventTargets.length; i++) { - wrapEventTarget(eventTargets[i]); - } - }, + if (ex1.type !== ex2.type || ex1.value !== ex2.value) return false; - /** - * Instrument browser built-ins w/ breadcrumb capturing - * - XMLHttpRequests - * - DOM interactions (click/typing) - * - window.location changes - * - console - * - * Can be disabled or individually configured via the `autoBreadcrumbs` config option - */ - _instrumentBreadcrumbs: function _instrumentBreadcrumbs() { - var self = this; - var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; - var wrappedBuiltIns = self._wrappedBuiltIns; + // in case both stacktraces are undefined, we can't decide so default to false + if (isBothUndefined(ex1.stacktrace, ex2.stacktrace)) return false; - function wrapProp(prop, xhr) { - if (prop in xhr && isFunction(xhr[prop])) { - fill(xhr, prop, function (orig) { - return self.wrap(orig); - }); // intentionally don't track filled methods on XHR instances - } - } + return isSameStacktrace(ex1.stacktrace, ex2.stacktrace); +} - if (autoBreadcrumbs.xhr && 'XMLHttpRequest' in _window$1) { - var xhrproto = XMLHttpRequest.prototype; - fill(xhrproto, 'open', function (origOpen) { - return function (method, url) { - // preserve arity - // if Sentry key appears in URL, don't capture - if (isString(url) && url.indexOf(self._globalKey) === -1) { - this.__raven_xhr = { - method: method, - url: url, - status_code: null - }; - } +/** + * Returns true if the two input stack trace interfaces have the same content + */ +function isSameStacktrace(stack1, stack2) { + if (isOnlyOneTruthy(stack1, stack2)) return false; - return origOpen.apply(this, arguments); - }; - }, wrappedBuiltIns); - fill(xhrproto, 'send', function (origSend) { - return function () { - // preserve arity - var xhr = this; - - function onreadystatechangeHandler() { - if (xhr.__raven_xhr && xhr.readyState === 4) { - try { - // touching statusCode in some platforms throws - // an exception - xhr.__raven_xhr.status_code = xhr.status; - } catch (e) { - /* do nothing */ - } + var frames1 = stack1.frames; + var frames2 = stack2.frames; - self.captureBreadcrumb({ - type: 'http', - category: 'xhr', - data: xhr.__raven_xhr - }); - } - } + // Exit early if frame count differs + if (frames1.length !== frames2.length) return false; - var props = ['onload', 'onerror', 'onprogress']; + // Iterate through every frame; bail out if anything differs + var a, b; + for (var i = 0; i < frames1.length; i++) { + a = frames1[i]; + b = frames2[i]; + if ( + a.filename !== b.filename || + a.lineno !== b.lineno || + a.colno !== b.colno || + a['function'] !== b['function'] + ) + return false; + } + return true; +} - for (var j = 0; j < props.length; j++) { - wrapProp(props[j], xhr); - } +/** + * Polyfill a method + * @param obj object e.g. `document` + * @param name method name present on object e.g. `addEventListener` + * @param replacement replacement function + * @param track {optional} record instrumentation to an array + */ +function fill(obj, name, replacement, track) { + if (obj == null) return; + var orig = obj[name]; + obj[name] = replacement(orig); + obj[name].__raven__ = true; + obj[name].__orig__ = orig; + if (track) { + track.push([obj, name, orig]); + } +} - if ('onreadystatechange' in xhr && isFunction(xhr.onreadystatechange)) { - fill(xhr, 'onreadystatechange', function (orig) { - return self.wrap(orig, undefined, onreadystatechangeHandler); - } - /* intentionally don't track this instrumentation */ - ); - } else { - // if onreadystatechange wasn't actually set by the page on this xhr, we - // are free to set our own and capture the breadcrumb - xhr.onreadystatechange = onreadystatechangeHandler; - } +/** + * Join values in array + * @param input array of values to be joined together + * @param delimiter string to be placed in-between values + * @returns {string} + */ +function safeJoin(input, delimiter) { + if (!isArray(input)) return ''; - return origSend.apply(this, arguments); - }; - }, wrappedBuiltIns); + var output = []; + + for (var i = 0; i < input.length; i++) { + try { + output.push(String(input[i])); + } catch (e) { + output.push('[value cannot be serialized]'); } + } - if (autoBreadcrumbs.xhr && supportsFetch()) { - fill(_window$1, 'fetch', function (origFetch) { - return function () { - // preserve arity - // Make a copy of the arguments to prevent deoptimization - // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments - var args = new Array(arguments.length); - - for (var i = 0; i < args.length; ++i) { - args[i] = arguments[i]; - } + return output.join(delimiter); +} - var fetchInput = args[0]; - var method = 'GET'; - var url; +// Default Node.js REPL depth +var MAX_SERIALIZE_EXCEPTION_DEPTH = 3; +// 50kB, as 100kB is max payload size, so half sounds reasonable +var MAX_SERIALIZE_EXCEPTION_SIZE = 50 * 1024; +var MAX_SERIALIZE_KEYS_LENGTH = 40; - if (typeof fetchInput === 'string') { - url = fetchInput; - } else if ('Request' in _window$1 && fetchInput instanceof _window$1.Request) { - url = fetchInput.url; +function utf8Length(value) { + return ~-encodeURI(value).split(/%..|./).length; +} - if (fetchInput.method) { - method = fetchInput.method; - } - } else { - url = '' + fetchInput; - } // if Sentry key appears in URL, don't capture, as it's our own request +function jsonSize(value) { + return utf8Length(JSON.stringify(value)); +} +function serializeValue(value) { + if (typeof value === 'string') { + var maxLength = 40; + return truncate(value, maxLength); + } else if ( + typeof value === 'number' || + typeof value === 'boolean' || + typeof value === 'undefined' + ) { + return value; + } - if (url.indexOf(self._globalKey) !== -1) { - return origFetch.apply(this, args); - } + var type = Object.prototype.toString.call(value); - if (args[1] && args[1].method) { - method = args[1].method; - } + // Node.js REPL notation + if (type === '[object Object]') return '[Object]'; + if (type === '[object Array]') return '[Array]'; + if (type === '[object Function]') + return value.name ? '[Function: ' + value.name + ']' : '[Function]'; - var fetchData = { - method: method, - url: url, - status_code: null - }; - return origFetch.apply(this, args).then(function (response) { - fetchData.status_code = response.status; - self.captureBreadcrumb({ - type: 'http', - category: 'fetch', - data: fetchData - }); - return response; - }); - }; - }, wrappedBuiltIns); - } // Capture breadcrumbs from any click that is unhandled / bubbled up all the way - // to the document. Do this before we instrument addEventListener. + return value; +} +function serializeObject(value, depth) { + if (depth === 0) return serializeValue(value); + + if (isPlainObject(value)) { + return Object.keys(value).reduce(function(acc, key) { + acc[key] = serializeObject(value[key], depth - 1); + return acc; + }, {}); + } else if (Array.isArray(value)) { + return value.map(function(val) { + return serializeObject(val, depth - 1); + }); + } - if (autoBreadcrumbs.dom && this._hasDocument) { - if (_document.addEventListener) { - _document.addEventListener('click', self._breadcrumbEventHandler('click'), false); + return serializeValue(value); +} - _document.addEventListener('keypress', self._keypressEventHandler(), false); - } else { - // IE8 Compatibility - _document.attachEvent('onclick', self._breadcrumbEventHandler('click')); +function serializeException(ex, depth, maxSize) { + if (!isPlainObject(ex)) return ex; - _document.attachEvent('onkeypress', self._keypressEventHandler()); - } - } // record navigation (URL) changes - // NOTE: in Chrome App environment, touching history.pushState, *even inside - // a try/catch block*, will cause Chrome to output an error to console.error - // borrowed from: https://github.com/angular/angular.js/pull/13945/files + depth = typeof depth !== 'number' ? MAX_SERIALIZE_EXCEPTION_DEPTH : depth; + maxSize = typeof depth !== 'number' ? MAX_SERIALIZE_EXCEPTION_SIZE : maxSize; + var serialized = serializeObject(ex, depth); - var chrome = _window$1.chrome; - var isChromePackagedApp = chrome && chrome.app && chrome.app.runtime; - var hasPushAndReplaceState = !isChromePackagedApp && _window$1.history && history.pushState && history.replaceState; + if (jsonSize(stringify(serialized)) > maxSize) { + return serializeException(ex, depth - 1); + } - if (autoBreadcrumbs.location && hasPushAndReplaceState) { - // TODO: remove onpopstate handler on uninstall() - var oldOnPopState = _window$1.onpopstate; + return serialized; +} - _window$1.onpopstate = function () { - var currentHref = self._location.href; +function serializeKeysForMessage(keys, maxLength) { + if (typeof keys === 'number' || typeof keys === 'string') return keys.toString(); + if (!Array.isArray(keys)) return ''; - self._captureUrlChange(self._lastHref, currentHref); + keys = keys.filter(function(key) { + return typeof key === 'string'; + }); + if (keys.length === 0) return '[object has no keys]'; - if (oldOnPopState) { - return oldOnPopState.apply(this, arguments); - } - }; + maxLength = typeof maxLength !== 'number' ? MAX_SERIALIZE_KEYS_LENGTH : maxLength; + if (keys[0].length >= maxLength) return keys[0]; - var historyReplacementFunction = function historyReplacementFunction(origHistFunction) { - // note history.pushState.length is 0; intentionally not declaring - // params to preserve 0 arity - return function () - /* state, title, url */ - { - var url = arguments.length > 2 ? arguments[2] : undefined; // url argument is optional + for (var usedKeys = keys.length; usedKeys > 0; usedKeys--) { + var serialized = keys.slice(0, usedKeys).join(', '); + if (serialized.length > maxLength) continue; + if (usedKeys === keys.length) return serialized; + return serialized + '\u2026'; + } - if (url) { - // coerce to string (this is what pushState does) - self._captureUrlChange(self._lastHref, url + ''); - } + return ''; +} - return origHistFunction.apply(this, arguments); - }; - }; +function sanitize(input, sanitizeKeys) { + if (!isArray(sanitizeKeys) || (isArray(sanitizeKeys) && sanitizeKeys.length === 0)) + return input; - fill(history, 'pushState', historyReplacementFunction, wrappedBuiltIns); - fill(history, 'replaceState', historyReplacementFunction, wrappedBuiltIns); - } + var sanitizeRegExp = joinRegExp(sanitizeKeys); + var sanitizeMask = '********'; + var safeInput; - if (autoBreadcrumbs.console && 'console' in _window$1 && console.log) { - // console - var consoleMethodCallback = function consoleMethodCallback(msg, data) { - self.captureBreadcrumb({ - message: msg, - level: data.level, - category: 'console' - }); - }; + try { + safeInput = JSON.parse(stringify(input)); + } catch (o_O) { + return input; + } - each(['debug', 'info', 'warn', 'error', 'log'], function (_, level) { - wrapConsoleMethod(console, level, consoleMethodCallback); + function sanitizeWorker(workerInput) { + if (isArray(workerInput)) { + return workerInput.map(function(val) { + return sanitizeWorker(val); }); } - }, - _restoreBuiltIns: function _restoreBuiltIns() { - // restore any wrapped builtins - var builtin; - - while (this._wrappedBuiltIns.length) { - builtin = this._wrappedBuiltIns.shift(); - var obj = builtin[0], - name = builtin[1], - orig = builtin[2]; - obj[name] = orig; - } - }, - _restoreConsole: function _restoreConsole() { - // eslint-disable-next-line guard-for-in - for (var method in this._originalConsoleMethods) { - this._originalConsole[method] = this._originalConsoleMethods[method]; - } - }, - _drainPlugins: function _drainPlugins() { - var self = this; // FIX ME TODO - - each(this._plugins, function (_, plugin) { - var installer = plugin[0]; - var args = plugin[1]; - installer.apply(self, [self].concat(args)); - }); - }, - _parseDSN: function _parseDSN(str) { - var m = dsnPattern.exec(str), - dsn = {}, - i = 7; - try { - while (i--) { - dsn[dsnKeys[i]] = m[i] || ''; - } - } catch (e) { - throw new configError('Invalid DSN: ' + str); + if (isPlainObject(workerInput)) { + return Object.keys(workerInput).reduce(function(acc, k) { + if (sanitizeRegExp.test(k)) { + acc[k] = sanitizeMask; + } else { + acc[k] = sanitizeWorker(workerInput[k]); + } + return acc; + }, {}); } - if (dsn.pass && !this._globalOptions.allowSecretKey) { - throw new configError('Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key'); - } + return workerInput; + } - return dsn; - }, - _getGlobalServer: function _getGlobalServer(uri) { - // assemble the endpoint from the uri pieces - var globalServer = '//' + uri.host + (uri.port ? ':' + uri.port : ''); + return sanitizeWorker(safeInput); +} - if (uri.protocol) { - globalServer = uri.protocol + ':' + globalServer; - } +module.exports = { + isObject: isObject, + isError: isError, + isErrorEvent: isErrorEvent, + isUndefined: isUndefined, + isFunction: isFunction, + isPlainObject: isPlainObject, + isString: isString, + isArray: isArray, + isEmptyObject: isEmptyObject, + supportsErrorEvent: supportsErrorEvent, + supportsFetch: supportsFetch, + supportsReferrerPolicy: supportsReferrerPolicy, + supportsPromiseRejectionEvent: supportsPromiseRejectionEvent, + wrappedCallback: wrappedCallback, + each: each, + objectMerge: objectMerge, + truncate: truncate, + objectFrozen: objectFrozen, + hasKey: hasKey, + joinRegExp: joinRegExp, + urlencode: urlencode, + uuid4: uuid4, + htmlTreeAsString: htmlTreeAsString, + htmlElementAsString: htmlElementAsString, + isSameException: isSameException, + isSameStacktrace: isSameStacktrace, + parseUrl: parseUrl, + fill: fill, + safeJoin: safeJoin, + serializeException: serializeException, + serializeKeysForMessage: serializeKeysForMessage, + sanitize: sanitize +}; - return globalServer; - }, - _handleOnErrorStackInfo: function _handleOnErrorStackInfo() { - // if we are intentionally ignoring errors via onerror, bail out - if (!this._ignoreOnError) { - this._handleStackInfo.apply(this, arguments); - } - }, - _handleStackInfo: function _handleStackInfo(stackInfo, options) { - var frames = this._prepareFrames(stackInfo, options); +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"8":8}],7:[function(_dereq_,module,exports){ +(function (global){ +var utils = _dereq_(6); - this._triggerEvent('handle', { - stackInfo: stackInfo, - options: options - }); +/* + TraceKit - Cross brower stack traces - this._processException(stackInfo.name, stackInfo.message, stackInfo.url, stackInfo.lineno, frames, options); - }, - _prepareFrames: function _prepareFrames(stackInfo, options) { - var self = this; - var frames = []; + This was originally forked from github.com/occ/TraceKit, but has since been + largely re-written and is now maintained as part of raven-js. Tests for + this are in test/vendor. - if (stackInfo.stack && stackInfo.stack.length) { - each(stackInfo.stack, function (i, stack) { - var frame = self._normalizeFrame(stack, stackInfo.url); + MIT license +*/ - if (frame) { - frames.push(frame); - } - }); // e.g. frames captured via captureMessage throw +var TraceKit = { + collectWindowErrors: true, + debug: false +}; - if (options && options.trimHeadFrames) { - for (var j = 0; j < options.trimHeadFrames && j < frames.length; j++) { - frames[j].in_app = false; - } - } - } +// This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) +var _window = + typeof window !== 'undefined' + ? window + : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; - frames = frames.slice(0, this._globalOptions.stackTraceLimit); - return frames; - }, - _normalizeFrame: function _normalizeFrame(frame, stackInfoUrl) { - // normalize the frames data - var normalized = { - filename: frame.url, - lineno: frame.line, - colno: frame.column, - function: frame.func || '?' - }; // Case when we don't have any information about the error - // E.g. throwing a string or raw object, instead of an `Error` in Firefox - // Generating synthetic error doesn't add any value here - // - // We should probably somehow let a user know that they should fix their code +// global reference to slice +var _slice = [].slice; +var UNKNOWN_FUNCTION = '?'; - if (!frame.url) { - normalized.filename = stackInfoUrl; // fallback to whole stacks url from onerror handler - } +// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error#Error_types +var ERROR_TYPES_RE = /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/; - normalized.in_app = !( // determine if an exception came from outside of our app - // first we check the global includePaths list. - !!this._globalOptions.includePaths.test && !this._globalOptions.includePaths.test(normalized.filename) || // Now we check for fun, if the function name is Raven or TraceKit - /(Raven|TraceKit)\./.test(normalized['function']) || // finally, we do a last ditch effort and check for raven.min.js - /raven\.(min\.)?js$/.test(normalized.filename)); - return normalized; - }, - _processException: function _processException(type, message, fileurl, lineno, frames, options) { - var prefixedMessage = (type ? type + ': ' : '') + (message || ''); +function getLocationHref() { + if (typeof document === 'undefined' || document.location == null) return ''; - if (!!this._globalOptions.ignoreErrors.test && (this._globalOptions.ignoreErrors.test(message) || this._globalOptions.ignoreErrors.test(prefixedMessage))) { - return; - } + return document.location.href; +} - var stacktrace; +/** + * TraceKit.report: cross-browser processing of unhandled exceptions + * + * Syntax: + * TraceKit.report.subscribe(function(stackInfo) { ... }) + * TraceKit.report.unsubscribe(function(stackInfo) { ... }) + * TraceKit.report(exception) + * try { ...code... } catch(ex) { TraceKit.report(ex); } + * + * Supports: + * - Firefox: full stack trace with line numbers, plus column number + * on top frame; column number is not guaranteed + * - Opera: full stack trace with line and column numbers + * - Chrome: full stack trace with line and column numbers + * - Safari: line and column number for the top frame only; some frames + * may be missing, and column number is not guaranteed + * - IE: line and column number for the top frame only; some frames + * may be missing, and column number is not guaranteed + * + * In theory, TraceKit should work on all of the following versions: + * - IE5.5+ (only 8.0 tested) + * - Firefox 0.9+ (only 3.5+ tested) + * - Opera 7+ (only 10.50 tested; versions 9 and earlier may require + * Exceptions Have Stacktrace to be enabled in opera:config) + * - Safari 3+ (only 4+ tested) + * - Chrome 1+ (only 5+ tested) + * - Konqueror 3.5+ (untested) + * + * Requires TraceKit.computeStackTrace. + * + * Tries to catch all unhandled exceptions and report them to the + * subscribed handlers. Please note that TraceKit.report will rethrow the + * exception. This is REQUIRED in order to get a useful stack trace in IE. + * If the exception does not reach the top of the browser, you will only + * get a stack trace from the point where TraceKit.report was called. + * + * Handlers receive a stackInfo object as described in the + * TraceKit.computeStackTrace docs. + */ +TraceKit.report = (function reportModuleWrapper() { + var handlers = [], + lastArgs = null, + lastException = null, + lastExceptionStack = null; - if (frames && frames.length) { - fileurl = frames[0].filename || fileurl; // Sentry expects frames oldest to newest - // and JS sends them as newest to oldest + /** + * Add a crash handler. + * @param {Function} handler + */ + function subscribe(handler) { + installGlobalHandler(); + handlers.push(handler); + } - frames.reverse(); - stacktrace = { - frames: frames - }; - } else if (fileurl) { - stacktrace = { - frames: [{ - filename: fileurl, - lineno: lineno, - in_app: true - }] - }; + /** + * Remove a crash handler. + * @param {Function} handler + */ + function unsubscribe(handler) { + for (var i = handlers.length - 1; i >= 0; --i) { + if (handlers[i] === handler) { + handlers.splice(i, 1); + } } + } - if (!!this._globalOptions.ignoreUrls.test && this._globalOptions.ignoreUrls.test(fileurl)) { - return; - } + /** + * Remove all crash handlers. + */ + function unsubscribeAll() { + uninstallGlobalHandler(); + handlers = []; + } - if (!!this._globalOptions.whitelistUrls.test && !this._globalOptions.whitelistUrls.test(fileurl)) { + /** + * Dispatch stack information to all handlers. + * @param {Object.} stack + */ + function notifyHandlers(stack, isWindowError) { + var exception = null; + if (isWindowError && !TraceKit.collectWindowErrors) { return; } - - var data = objectMerge({ - // sentry.interfaces.Exception - exception: { - values: [{ - type: type, - value: message, - stacktrace: stacktrace - }] - }, - culprit: fileurl - }, options); // Fire away! - - this._send(data); - }, - _trimPacket: function _trimPacket(data) { - // For now, we only want to truncate the two different messages - // but this could/should be expanded to just trim everything - var max = this._globalOptions.maxMessageLength; - - if (data.message) { - data.message = truncate(data.message, max); - } - - if (data.exception) { - var exception = data.exception.values[0]; - exception.value = truncate(exception.value, max); - } - - var request = data.request; - - if (request) { - if (request.url) { - request.url = truncate(request.url, this._globalOptions.maxUrlLength); + for (var i in handlers) { + if (handlers.hasOwnProperty(i)) { + try { + handlers[i].apply(null, [stack].concat(_slice.call(arguments, 2))); + } catch (inner) { + exception = inner; + } } + } - if (request.Referer) { - request.Referer = truncate(request.Referer, this._globalOptions.maxUrlLength); - } + if (exception) { + throw exception; } + } - if (data.breadcrumbs && data.breadcrumbs.values) this._trimBreadcrumbs(data.breadcrumbs); - return data; - }, + var _oldOnerrorHandler, _onErrorHandlerInstalled; /** - * Truncate breadcrumb values (right now just URLs) + * Ensures all global unhandled exceptions are recorded. + * Supported by Gecko and IE. + * @param {string} msg Error message. + * @param {string} url URL of script that generated the exception. + * @param {(number|string)} lineNo The line number at which the error + * occurred. + * @param {?(number|string)} colNo The column number at which the error + * occurred. + * @param {?Error} ex The actual Error object. */ - _trimBreadcrumbs: function _trimBreadcrumbs(breadcrumbs) { - // known breadcrumb properties with urls - // TODO: also consider arbitrary prop values that start with (https?)?:// - var urlProps = ['to', 'from', 'url'], - urlProp, - crumb, - data; + function traceKitWindowOnError(msg, url, lineNo, colNo, ex) { + var stack = null; + // If 'ex' is ErrorEvent, get real Error from inside + var exception = utils.isErrorEvent(ex) ? ex.error : ex; + // If 'msg' is ErrorEvent, get real message from inside + var message = utils.isErrorEvent(msg) ? msg.message : msg; - for (var i = 0; i < breadcrumbs.values.length; ++i) { - crumb = breadcrumbs.values[i]; - if (!crumb.hasOwnProperty('data') || !isObject(crumb.data) || objectFrozen(crumb.data)) continue; - data = objectMerge({}, crumb.data); + if (lastExceptionStack) { + TraceKit.computeStackTrace.augmentStackTraceWithInitialElement( + lastExceptionStack, + url, + lineNo, + message + ); + processLastException(); + } else if (exception && utils.isError(exception)) { + // non-string `exception` arg; attempt to extract stack trace - for (var j = 0; j < urlProps.length; ++j) { - urlProp = urlProps[j]; + // New chrome and blink send along a real error object + // Let's just report that like a normal error. + // See: https://mikewest.org/2013/08/debugging-runtime-errors-with-window-onerror + stack = TraceKit.computeStackTrace(exception); + notifyHandlers(stack, true); + } else { + var location = { + url: url, + line: lineNo, + column: colNo + }; - if (data.hasOwnProperty(urlProp) && data[urlProp]) { - data[urlProp] = truncate(data[urlProp], this._globalOptions.maxUrlLength); + var name = undefined; + var groups; + + if ({}.toString.call(message) === '[object String]') { + var groups = message.match(ERROR_TYPES_RE); + if (groups) { + name = groups[1]; + message = groups[2]; } } - breadcrumbs.values[i].data = data; - } - }, - _getHttpData: function _getHttpData() { - if (!this._hasNavigator && !this._hasDocument) return; - var httpData = {}; + location.func = UNKNOWN_FUNCTION; - if (this._hasNavigator && _navigator.userAgent) { - httpData.headers = { - 'User-Agent': navigator.userAgent + stack = { + name: name, + message: message, + url: getLocationHref(), + stack: [location] }; - } // Check in `window` instead of `document`, as we may be in ServiceWorker environment - - - if (_window$1.location && _window$1.location.href) { - httpData.url = _window$1.location.href; + notifyHandlers(stack, true); } - if (this._hasDocument && _document.referrer) { - if (!httpData.headers) httpData.headers = {}; - httpData.headers.Referer = _document.referrer; + if (_oldOnerrorHandler) { + return _oldOnerrorHandler.apply(this, arguments); } - return httpData; - }, - _resetBackoff: function _resetBackoff() { - this._backoffDuration = 0; - this._backoffStart = null; - }, - _shouldBackoff: function _shouldBackoff() { - return this._backoffDuration && now() - this._backoffStart < this._backoffDuration; - }, - - /** - * Returns true if the in-process data payload matches the signature - * of the previously-sent data - * - * NOTE: This has to be done at this level because TraceKit can generate - * data from window.onerror WITHOUT an exception object (IE8, IE9, - * other old browsers). This can take the form of an "exception" - * data object with a single frame (derived from the onerror args). - */ - _isRepeatData: function _isRepeatData(current) { - var last = this._lastData; - if (!last || current.message !== last.message || // defined for captureMessage - current.culprit !== last.culprit // defined for captureException/onerror - ) return false; // Stacktrace interface (i.e. from captureMessage) + return false; + } - if (current.stacktrace || last.stacktrace) { - return isSameStacktrace(current.stacktrace, last.stacktrace); - } else if (current.exception || last.exception) { - // Exception interface (i.e. from captureException/onerror) - return isSameException(current.exception, last.exception); + function installGlobalHandler() { + if (_onErrorHandlerInstalled) { + return; } + _oldOnerrorHandler = _window.onerror; + _window.onerror = traceKitWindowOnError; + _onErrorHandlerInstalled = true; + } - return true; - }, - _setBackoffState: function _setBackoffState(request) { - // If we are already in a backoff state, don't change anything - if (this._shouldBackoff()) { + function uninstallGlobalHandler() { + if (!_onErrorHandlerInstalled) { return; } + _window.onerror = _oldOnerrorHandler; + _onErrorHandlerInstalled = false; + _oldOnerrorHandler = undefined; + } - var status = request.status; // 400 - project_id doesn't exist or some other fatal - // 401 - invalid/revoked dsn - // 429 - too many requests - - if (!(status === 400 || status === 401 || status === 429)) return; - var retry; + function processLastException() { + var _lastExceptionStack = lastExceptionStack, + _lastArgs = lastArgs; + lastArgs = null; + lastExceptionStack = null; + lastException = null; + notifyHandlers.apply(null, [_lastExceptionStack, false].concat(_lastArgs)); + } - try { - // If Retry-After is not in Access-Control-Expose-Headers, most - // browsers will throw an exception trying to access it - if (supportsFetch()) { - retry = request.headers.get('Retry-After'); + /** + * Reports an unhandled Error to TraceKit. + * @param {Error} ex + * @param {?boolean} rethrow If false, do not re-throw the exception. + * Only used for window.onerror to not cause an infinite loop of + * rethrowing. + */ + function report(ex, rethrow) { + var args = _slice.call(arguments, 1); + if (lastExceptionStack) { + if (lastException === ex) { + return; // already caught by an inner catch block, ignore } else { - retry = request.getResponseHeader('Retry-After'); - } // Retry-After is returned in seconds - - - retry = parseInt(retry, 10) * 1000; - } catch (e) { - /* eslint no-empty:0 */ - } - - this._backoffDuration = retry ? // If Sentry server returned a Retry-After value, use it - retry : // Otherwise, double the last backoff duration (starts at 1 sec) - this._backoffDuration * 2 || 1000; - this._backoffStart = now(); - }, - _send: function _send(data) { - var globalOptions = this._globalOptions; - - var baseData = { - project: this._globalProject, - logger: globalOptions.logger, - platform: 'javascript' - }, - httpData = this._getHttpData(); - - if (httpData) { - baseData.request = httpData; - } // HACK: delete `trimHeadFrames` to prevent from appearing in outbound payload - - - if (data.trimHeadFrames) delete data.trimHeadFrames; - data = objectMerge(baseData, data); // Merge in the tags and extra separately since objectMerge doesn't handle a deep merge - - data.tags = objectMerge(objectMerge({}, this._globalContext.tags), data.tags); - data.extra = objectMerge(objectMerge({}, this._globalContext.extra), data.extra); // Send along our own collected metadata with extra - - data.extra['session:duration'] = now() - this._startTime; - - if (this._breadcrumbs && this._breadcrumbs.length > 0) { - // intentionally make shallow copy so that additions - // to breadcrumbs aren't accidentally sent in this request - data.breadcrumbs = { - values: [].slice.call(this._breadcrumbs, 0) - }; + processLastException(); + } } - if (this._globalContext.user) { - // sentry.interfaces.User - data.user = this._globalContext.user; - } // Include the environment if it's defined in globalOptions - - - if (globalOptions.environment) data.environment = globalOptions.environment; // Include the release if it's defined in globalOptions - - if (globalOptions.release) data.release = globalOptions.release; // Include server_name if it's defined in globalOptions - - if (globalOptions.serverName) data.server_name = globalOptions.serverName; // Cleanup empty properties before sending them to the server + var stack = TraceKit.computeStackTrace(ex); + lastExceptionStack = stack; + lastException = ex; + lastArgs = args; - Object.keys(data).forEach(function (key) { - if (data[key] == null || data[key] === '' || isEmptyObject(data[key])) { - delete data[key]; + // If the stack trace is incomplete, wait for 2 seconds for + // slow slow IE to see if onerror occurs or not before reporting + // this exception; otherwise, we will end up with an incomplete + // stack trace + setTimeout(function() { + if (lastException === ex) { + processLastException(); } - }); + }, stack.incomplete ? 2000 : 0); - if (isFunction(globalOptions.dataCallback)) { - data = globalOptions.dataCallback(data) || data; - } // Why?????????? + if (rethrow !== false) { + throw ex; // re-throw to propagate to the top level (and cause window.onerror) + } + } + report.subscribe = subscribe; + report.unsubscribe = unsubscribe; + report.uninstall = unsubscribeAll; + return report; +})(); - if (!data || isEmptyObject(data)) { - return; - } // Check if the request should be filtered or not +/** + * TraceKit.computeStackTrace: cross-browser stack traces in JavaScript + * + * Syntax: + * s = TraceKit.computeStackTrace(exception) // consider using TraceKit.report instead (see below) + * Returns: + * s.name - exception name + * s.message - exception message + * s.stack[i].url - JavaScript or HTML file URL + * s.stack[i].func - function name, or empty for anonymous functions (if guessing did not work) + * s.stack[i].args - arguments passed to the function, if known + * s.stack[i].line - line number, if known + * s.stack[i].column - column number, if known + * + * Supports: + * - Firefox: full stack trace with line numbers and unreliable column + * number on top frame + * - Opera 10: full stack trace with line and column numbers + * - Opera 9-: full stack trace with line numbers + * - Chrome: full stack trace with line and column numbers + * - Safari: line and column number for the topmost stacktrace element + * only + * - IE: no line numbers whatsoever + * + * Tries to guess names of anonymous functions by looking for assignments + * in the source code. In IE and Safari, we have to guess source file names + * by searching for function bodies inside all page scripts. This will not + * work for scripts that are loaded cross-domain. + * Here be dragons: some function names may be guessed incorrectly, and + * duplicate functions may be mismatched. + * + * TraceKit.computeStackTrace should only be used for tracing purposes. + * Logging of unhandled exceptions should be done with TraceKit.report, + * which builds on top of TraceKit.computeStackTrace and provides better + * IE support by utilizing the window.onerror event to retrieve information + * about the top of the stack. + * + * Note: In IE and Safari, no stack trace is recorded on the Error object, + * so computeStackTrace instead walks its *own* chain of callers. + * This means that: + * * in Safari, some methods may be missing from the stack trace; + * * in IE, the topmost function in the stack trace will always be the + * caller of computeStackTrace. + * + * This is okay for tracing (because you are likely to be calling + * computeStackTrace from the function you want to be the topmost element + * of the stack trace anyway), but not okay for logging unhandled + * exceptions (because your catch block will likely be far away from the + * inner function that actually caused the exception). + * + */ +TraceKit.computeStackTrace = (function computeStackTraceWrapper() { + // Contents of Exception in various browsers. + // + // SAFARI: + // ex.message = Can't find variable: qq + // ex.line = 59 + // ex.sourceId = 580238192 + // ex.sourceURL = http://... + // ex.expressionBeginOffset = 96 + // ex.expressionCaretOffset = 98 + // ex.expressionEndOffset = 98 + // ex.name = ReferenceError + // + // FIREFOX: + // ex.message = qq is not defined + // ex.fileName = http://... + // ex.lineNumber = 59 + // ex.columnNumber = 69 + // ex.stack = ...stack trace... (see the example below) + // ex.name = ReferenceError + // + // CHROME: + // ex.message = qq is not defined + // ex.name = ReferenceError + // ex.type = not_defined + // ex.arguments = ['aa'] + // ex.stack = ...stack trace... + // + // INTERNET EXPLORER: + // ex.message = ... + // ex.name = ReferenceError + // + // OPERA: + // ex.message = ...message... (see the example below) + // ex.name = ReferenceError + // ex.opera#sourceloc = 11 (pretty much useless, duplicates the info in ex.message) + // ex.stacktrace = n/a; see 'opera:config#UserPrefs|Exceptions Have Stacktrace' + /** + * Computes stack trace information from the stack property. + * Chrome and Gecko use this property. + * @param {Error} ex + * @return {?Object.} Stack trace information. + */ + function computeStackTraceFromStackProp(ex) { + if (typeof ex.stack === 'undefined' || !ex.stack) return; - if (isFunction(globalOptions.shouldSendCallback) && !globalOptions.shouldSendCallback(data)) { - return; - } // Backoff state: Sentry server previously responded w/ an error (e.g. 429 - too many requests), - // so drop requests until "cool-off" period has elapsed. + var chrome = /^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i; + var winjs = /^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i; + // NOTE: blob urls are now supposed to always have an origin, therefore it's format + // which is `blob:http://url/path/with-some-uuid`, is matched by `blob.*?:\/` as well + var gecko = /^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i; + // Used to additionally parse URL/line/column from eval frames + var geckoEval = /(\S+) line (\d+)(?: > eval line \d+)* > eval/i; + var chromeEval = /\((\S*)(?::(\d+))(?::(\d+))\)/; + var lines = ex.stack.split('\n'); + var stack = []; + var submatch; + var parts; + var element; + var reference = /^(.*) is undefined$/.exec(ex.message); + for (var i = 0, j = lines.length; i < j; ++i) { + if ((parts = chrome.exec(lines[i]))) { + var isNative = parts[2] && parts[2].indexOf('native') === 0; // start of line + var isEval = parts[2] && parts[2].indexOf('eval') === 0; // start of line + if (isEval && (submatch = chromeEval.exec(parts[2]))) { + // throw out eval line/column and use top-most line/column number + parts[2] = submatch[1]; // url + parts[3] = submatch[2]; // line + parts[4] = submatch[3]; // column + } + element = { + url: !isNative ? parts[2] : null, + func: parts[1] || UNKNOWN_FUNCTION, + args: isNative ? [parts[2]] : [], + line: parts[3] ? +parts[3] : null, + column: parts[4] ? +parts[4] : null + }; + } else if ((parts = winjs.exec(lines[i]))) { + element = { + url: parts[2], + func: parts[1] || UNKNOWN_FUNCTION, + args: [], + line: +parts[3], + column: parts[4] ? +parts[4] : null + }; + } else if ((parts = gecko.exec(lines[i]))) { + var isEval = parts[3] && parts[3].indexOf(' > eval') > -1; + if (isEval && (submatch = geckoEval.exec(parts[3]))) { + // throw out eval line/column and use top-most line number + parts[3] = submatch[1]; + parts[4] = submatch[2]; + parts[5] = null; // no column when eval + } else if (i === 0 && !parts[5] && typeof ex.columnNumber !== 'undefined') { + // FireFox uses this awesome columnNumber property for its top frame + // Also note, Firefox's column number is 0-based and everything else expects 1-based, + // so adding 1 + // NOTE: this hack doesn't work if top-most frame is eval + stack[0].column = ex.columnNumber + 1; + } + element = { + url: parts[3], + func: parts[1] || UNKNOWN_FUNCTION, + args: parts[2] ? parts[2].split(',') : [], + line: parts[4] ? +parts[4] : null, + column: parts[5] ? +parts[5] : null + }; + } else { + continue; + } - if (this._shouldBackoff()) { - this._logDebug('warn', 'Raven dropped error due to backoff: ', data); + if (!element.func && element.line) { + element.func = UNKNOWN_FUNCTION; + } - return; + stack.push(element); } - if (typeof globalOptions.sampleRate === 'number') { - if (Math.random() < globalOptions.sampleRate) { - this._sendProcessedPayload(data); - } - } else { - this._sendProcessedPayload(data); + if (!stack.length) { + return null; } - }, - _getUuid: function _getUuid() { - return uuid4(); - }, - _sendProcessedPayload: function _sendProcessedPayload(data, callback) { - var self = this; - var globalOptions = this._globalOptions; - if (!this.isSetup()) return; // Try and clean up the packet before sending by truncating long values - - data = this._trimPacket(data); // ideally duplicate error testing should occur *before* dataCallback/shouldSendCallback, - // but this would require copying an un-truncated copy of the data packet, which can be - // arbitrarily deep (extra_data) -- could be worthwhile? will revisit - - if (!this._globalOptions.allowDuplicates && this._isRepeatData(data)) { - this._logDebug('warn', 'Raven dropped repeat event: ', data); - - return; - } // Send along an event_id if not explicitly passed. - // This event_id can be used to reference the error within Sentry itself. - // Set lastEventId after we know the error should actually be sent - - this._lastEventId = data.event_id || (data.event_id = this._getUuid()); // Store outbound payload after trim - - this._lastData = data; - - this._logDebug('debug', 'Raven about to send:', data); + return { + name: ex.name, + message: ex.message, + url: getLocationHref(), + stack: stack + }; + } - var auth = { - sentry_version: '7', - sentry_client: 'raven-js/' + this.VERSION, - sentry_key: this._globalKey + /** + * Adds information about the first frame to incomplete stack traces. + * Safari and IE require this to get complete data on the first frame. + * @param {Object.} stackInfo Stack trace information from + * one of the compute* methods. + * @param {string} url The URL of the script that caused an error. + * @param {(number|string)} lineNo The line number of the script that + * caused an error. + * @param {string=} message The error generated by the browser, which + * hopefully contains the name of the object that caused the error. + * @return {boolean} Whether or not the stack information was + * augmented. + */ + function augmentStackTraceWithInitialElement(stackInfo, url, lineNo, message) { + var initial = { + url: url, + line: lineNo }; - if (this._globalSecret) { - auth.sentry_secret = this._globalSecret; - } + if (initial.url && initial.line) { + stackInfo.incomplete = false; - var exception = data.exception && data.exception.values[0]; // only capture 'sentry' breadcrumb is autoBreadcrumbs is truthy + if (!initial.func) { + initial.func = UNKNOWN_FUNCTION; + } - if (this._globalOptions.autoBreadcrumbs && this._globalOptions.autoBreadcrumbs.sentry) { - this.captureBreadcrumb({ - category: 'sentry', - message: exception ? (exception.type ? exception.type + ': ' : '') + exception.value : data.message, - event_id: data.event_id, - level: data.level || 'error' // presume error unless specified + if (stackInfo.stack.length > 0) { + if (stackInfo.stack[0].url === initial.url) { + if (stackInfo.stack[0].line === initial.line) { + return false; // already in stack trace + } else if ( + !stackInfo.stack[0].line && + stackInfo.stack[0].func === initial.func + ) { + stackInfo.stack[0].line = initial.line; + return false; + } + } + } - }); + stackInfo.stack.unshift(initial); + stackInfo.partial = true; + return true; + } else { + stackInfo.incomplete = true; } - var url = this._globalEndpoint; - - (globalOptions.transport || this._makeRequest).call(this, { - url: url, - auth: auth, - data: data, - options: globalOptions, - onSuccess: function success() { - self._resetBackoff(); + return false; + } - self._triggerEvent('success', { - data: data, - src: url - }); + /** + * Computes stack trace information by walking the arguments.caller + * chain at the time the exception occurred. This will cause earlier + * frames to be missed but is the only way to get any stack trace in + * Safari and IE. The top frame is restored by + * {@link augmentStackTraceWithInitialElement}. + * @param {Error} ex + * @return {?Object.} Stack trace information. + */ + function computeStackTraceByWalkingCallerChain(ex, depth) { + var functionName = /function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i, + stack = [], + funcs = {}, + recursion = false, + parts, + item, + source; + + for ( + var curr = computeStackTraceByWalkingCallerChain.caller; + curr && !recursion; + curr = curr.caller + ) { + if (curr === computeStackTrace || curr === TraceKit.report) { + // console.log('skipping internal function'); + continue; + } - callback && callback(); - }, - onError: function failure(error) { - self._logDebug('error', 'Raven transport failed to send: ', error); + item = { + url: null, + func: UNKNOWN_FUNCTION, + line: null, + column: null + }; - if (error.request) { - self._setBackoffState(error.request); - } + if (curr.name) { + item.func = curr.name; + } else if ((parts = functionName.exec(curr.toString()))) { + item.func = parts[1]; + } - self._triggerEvent('failure', { - data: data, - src: url - }); + if (typeof item.func === 'undefined') { + try { + item.func = parts.input.substring(0, parts.input.indexOf('{')); + } catch (e) {} + } - error = error || new Error('Raven send failed (no additional details provided)'); - callback && callback(error); + if (funcs['' + curr]) { + recursion = true; + } else { + funcs['' + curr] = true; } - }); - }, - _makeRequest: function _makeRequest(opts) { - // Auth is intentionally sent as part of query string (NOT as custom HTTP header) to avoid preflight CORS requests - var url = opts.url + '?' + urlencode(opts.auth); - var evaluatedHeaders = null; - var evaluatedFetchParameters = {}; - if (opts.options.headers) { - evaluatedHeaders = this._evaluateHash(opts.options.headers); + stack.push(item); } - if (opts.options.fetchParameters) { - evaluatedFetchParameters = this._evaluateHash(opts.options.fetchParameters); + if (depth) { + // console.log('depth is ' + depth); + // console.log('stack is ' + stack.length); + stack.splice(0, depth); } - if (supportsFetch()) { - evaluatedFetchParameters.body = stringify_1(opts.data); - var defaultFetchOptions = objectMerge({}, this._fetchDefaults); - var fetchOptions = objectMerge(defaultFetchOptions, evaluatedFetchParameters); + var result = { + name: ex.name, + message: ex.message, + url: getLocationHref(), + stack: stack + }; + augmentStackTraceWithInitialElement( + result, + ex.sourceURL || ex.fileName, + ex.line || ex.lineNumber, + ex.message || ex.description + ); + return result; + } - if (evaluatedHeaders) { - fetchOptions.headers = evaluatedHeaders; - } + /** + * Computes a stack trace for an exception. + * @param {Error} ex + * @param {(string|number)=} depth + */ + function computeStackTrace(ex, depth) { + var stack = null; + depth = depth == null ? 0 : +depth; - return _window$1.fetch(url, fetchOptions).then(function (response) { - if (response.ok) { - opts.onSuccess && opts.onSuccess(); - } else { - var error = new Error('Sentry error code: ' + response.status); // It's called request only to keep compatibility with XHR interface - // and not add more redundant checks in setBackoffState method + try { + stack = computeStackTraceFromStackProp(ex); + if (stack) { + return stack; + } + } catch (e) { + if (TraceKit.debug) { + throw e; + } + } - error.request = response; - opts.onError && opts.onError(error); - } - })['catch'](function () { - opts.onError && opts.onError(new Error('Sentry error code: network unavailable')); - }); + try { + stack = computeStackTraceByWalkingCallerChain(ex, depth + 1); + if (stack) { + return stack; + } + } catch (e) { + if (TraceKit.debug) { + throw e; + } } + return { + name: ex.name, + message: ex.message, + url: getLocationHref() + }; + } - var request = _window$1.XMLHttpRequest && new _window$1.XMLHttpRequest(); - if (!request) return; // if browser doesn't support CORS (e.g. IE7), we are out of luck + computeStackTrace.augmentStackTraceWithInitialElement = augmentStackTraceWithInitialElement; + computeStackTrace.computeStackTraceFromStackProp = computeStackTraceFromStackProp; - var hasCORS = 'withCredentials' in request || typeof XDomainRequest !== 'undefined'; - if (!hasCORS) return; + return computeStackTrace; +})(); - if ('withCredentials' in request) { - request.onreadystatechange = function () { - if (request.readyState !== 4) { - return; - } else if (request.status === 200) { - opts.onSuccess && opts.onSuccess(); - } else if (opts.onError) { - var err = new Error('Sentry error code: ' + request.status); - err.request = request; - opts.onError(err); - } - }; - } else { - request = new XDomainRequest(); // xdomainrequest cannot go http -> https (or vice versa), - // so always use protocol relative +module.exports = TraceKit; - url = url.replace(/^https?:/, ''); // onreadystatechange not supported by XDomainRequest +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"6":6}],8:[function(_dereq_,module,exports){ +/* + json-stringify-safe + Like JSON.stringify, but doesn't throw on circular references. - if (opts.onSuccess) { - request.onload = opts.onSuccess; - } + Originally forked from https://github.com/isaacs/json-stringify-safe + version 5.0.1 on 3/8/2017 and modified to handle Errors serialization + and IE8 compatibility. Tests for this are in test/vendor. - if (opts.onError) { - request.onerror = function () { - var err = new Error('Sentry error code: XDomainRequest'); - err.request = request; - opts.onError(err); - }; - } - } + ISC license: https://github.com/isaacs/json-stringify-safe/blob/master/LICENSE +*/ - request.open('POST', url); +exports = module.exports = stringify; +exports.getSerialize = serializer; - if (evaluatedHeaders) { - each(evaluatedHeaders, function (key, value) { - request.setRequestHeader(key, value); - }); - } +function indexOf(haystack, needle) { + for (var i = 0; i < haystack.length; ++i) { + if (haystack[i] === needle) return i; + } + return -1; +} - request.send(stringify_1(opts.data)); - }, - _evaluateHash: function _evaluateHash(hash) { - var evaluated = {}; +function stringify(obj, replacer, spaces, cycleReplacer) { + return JSON.stringify(obj, serializer(replacer, cycleReplacer), spaces); +} - for (var key in hash) { - if (hash.hasOwnProperty(key)) { - var value = hash[key]; - evaluated[key] = typeof value === 'function' ? value() : value; - } - } +// https://github.com/ftlabs/js-abbreviate/blob/fa709e5f139e7770a71827b1893f22418097fbda/index.js#L95-L106 +function stringifyError(value) { + var err = { + // These properties are implemented as magical getters and don't show up in for in + stack: value.stack, + message: value.message, + name: value.name + }; - return evaluated; - }, - _logDebug: function _logDebug(level) { - if (this._originalConsoleMethods[level] && this.debug) { - // In IE<10 console methods do not have their own 'apply' method - Function.prototype.apply.call(this._originalConsoleMethods[level], this._originalConsole, [].slice.call(arguments, 1)); - } - }, - _mergeContext: function _mergeContext(key, context) { - if (isUndefined(context)) { - delete this._globalContext[key]; - } else { - this._globalContext[key] = objectMerge(this._globalContext[key] || {}, context); + for (var i in value) { + if (Object.prototype.hasOwnProperty.call(value, i)) { + err[i] = value[i]; } } -}; // Deprecations -Raven$1.prototype.setUser = Raven$1.prototype.setUserContext; -Raven$1.prototype.setReleaseContext = Raven$1.prototype.setRelease; -var raven = Raven$1; + return err; +} -/** - * Enforces a single instance of the Raven client, and the - * main entry point for Raven. If you are a consumer of the - * Raven library, you SHOULD load this file (vs raven.js). - **/ -// This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) +function serializer(replacer, cycleReplacer) { + var stack = []; + var keys = []; -var _window = typeof window !== 'undefined' ? window : typeof commonjsGlobal !== 'undefined' ? commonjsGlobal : typeof self !== 'undefined' ? self : {}; + if (cycleReplacer == null) { + cycleReplacer = function(key, value) { + if (stack[0] === value) { + return '[Circular ~]'; + } + return '[Circular ~.' + keys.slice(0, indexOf(stack, value)).join('.') + ']'; + }; + } -var _Raven = _window.Raven; -var Raven = new raven(); -/* - * Allow multiple versions of Raven to be installed. - * Strip Raven from the global context and returns the instance. - * - * @return {Raven} - */ + return function(key, value) { + if (stack.length > 0) { + var thisPos = indexOf(stack, this); + ~thisPos ? stack.splice(thisPos + 1) : stack.push(this); + ~thisPos ? keys.splice(thisPos, Infinity, key) : keys.push(key); -Raven.noConflict = function () { - _window.Raven = _Raven; - return Raven; -}; + if (~indexOf(stack, value)) { + value = cycleReplacer.call(this, key, value); + } + } else { + stack.push(value); + } -Raven.afterLoad(); -var singleton = Raven; + return replacer == null + ? value instanceof Error ? stringifyError(value) : value + : replacer.call(this, key, value); + }; +} -/** - * console plugin +},{}],9:[function(_dereq_,module,exports){ +/* + * JavaScript MD5 + * https://github.com/blueimp/JavaScript-MD5 * - * Monkey patches console.* calls into Sentry messages with - * their appropriate log levels. (Experimental) + * Copyright 2011, Sebastian Tschan + * https://blueimp.net * - * Options: + * Licensed under the MIT license: + * https://opensource.org/licenses/MIT * - * `levels`: An array of levels (methods on `console`) to report to Sentry. - * Defaults to debug, info, warn, and error. + * Based on + * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message + * Digest Algorithm, as defined in RFC 1321. + * Version 2.2 Copyright (C) Paul Johnston 1999 - 2009 + * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet + * Distributed under the BSD License + * See http://pajhome.org.uk/crypt/md5 for more info. */ -var wrapConsoleMethod$1 = console$3.wrapMethod; +/* +* Add integers, wrapping at 2^32. This uses 16-bit operations internally +* to work around bugs in some JS interpreters. +*/ +function safeAdd(x, y) { + var lsw = (x & 0xffff) + (y & 0xffff); + var msw = (x >> 16) + (y >> 16) + (lsw >> 16); + return (msw << 16) | (lsw & 0xffff); +} -function consolePlugin(Raven, console, pluginOptions) { - console = console || window.console || {}; - pluginOptions = pluginOptions || {}; - var logLevels = pluginOptions.levels || ['debug', 'info', 'warn', 'error']; - if ('assert' in console) logLevels.push('assert'); +/* +* Bitwise rotate a 32-bit number to the left. +*/ +function bitRotateLeft(num, cnt) { + return (num << cnt) | (num >>> (32 - cnt)); +} - var callback = function callback(msg, data) { - Raven.captureMessage(msg, data); - }; +/* +* These functions implement the four basic operations the algorithm uses. +*/ +function md5cmn(q, a, b, x, s, t) { + return safeAdd(bitRotateLeft(safeAdd(safeAdd(a, q), safeAdd(x, t)), s), b); +} +function md5ff(a, b, c, d, x, s, t) { + return md5cmn((b & c) | (~b & d), a, b, x, s, t); +} +function md5gg(a, b, c, d, x, s, t) { + return md5cmn((b & d) | (c & ~d), a, b, x, s, t); +} +function md5hh(a, b, c, d, x, s, t) { + return md5cmn(b ^ c ^ d, a, b, x, s, t); +} +function md5ii(a, b, c, d, x, s, t) { + return md5cmn(c ^ (b | ~d), a, b, x, s, t); +} - var level = logLevels.pop(); +/* +* Calculate the MD5 of an array of little-endian words, and a bit length. +*/ +function binlMD5(x, len) { + /* append padding */ + x[len >> 5] |= 0x80 << (len % 32); + x[(((len + 64) >>> 9) << 4) + 14] = len; + + var i; + var olda; + var oldb; + var oldc; + var oldd; + var a = 1732584193; + var b = -271733879; + var c = -1732584194; + var d = 271733878; + + for (i = 0; i < x.length; i += 16) { + olda = a; + oldb = b; + oldc = c; + oldd = d; + + a = md5ff(a, b, c, d, x[i], 7, -680876936); + d = md5ff(d, a, b, c, x[i + 1], 12, -389564586); + c = md5ff(c, d, a, b, x[i + 2], 17, 606105819); + b = md5ff(b, c, d, a, x[i + 3], 22, -1044525330); + a = md5ff(a, b, c, d, x[i + 4], 7, -176418897); + d = md5ff(d, a, b, c, x[i + 5], 12, 1200080426); + c = md5ff(c, d, a, b, x[i + 6], 17, -1473231341); + b = md5ff(b, c, d, a, x[i + 7], 22, -45705983); + a = md5ff(a, b, c, d, x[i + 8], 7, 1770035416); + d = md5ff(d, a, b, c, x[i + 9], 12, -1958414417); + c = md5ff(c, d, a, b, x[i + 10], 17, -42063); + b = md5ff(b, c, d, a, x[i + 11], 22, -1990404162); + a = md5ff(a, b, c, d, x[i + 12], 7, 1804603682); + d = md5ff(d, a, b, c, x[i + 13], 12, -40341101); + c = md5ff(c, d, a, b, x[i + 14], 17, -1502002290); + b = md5ff(b, c, d, a, x[i + 15], 22, 1236535329); + + a = md5gg(a, b, c, d, x[i + 1], 5, -165796510); + d = md5gg(d, a, b, c, x[i + 6], 9, -1069501632); + c = md5gg(c, d, a, b, x[i + 11], 14, 643717713); + b = md5gg(b, c, d, a, x[i], 20, -373897302); + a = md5gg(a, b, c, d, x[i + 5], 5, -701558691); + d = md5gg(d, a, b, c, x[i + 10], 9, 38016083); + c = md5gg(c, d, a, b, x[i + 15], 14, -660478335); + b = md5gg(b, c, d, a, x[i + 4], 20, -405537848); + a = md5gg(a, b, c, d, x[i + 9], 5, 568446438); + d = md5gg(d, a, b, c, x[i + 14], 9, -1019803690); + c = md5gg(c, d, a, b, x[i + 3], 14, -187363961); + b = md5gg(b, c, d, a, x[i + 8], 20, 1163531501); + a = md5gg(a, b, c, d, x[i + 13], 5, -1444681467); + d = md5gg(d, a, b, c, x[i + 2], 9, -51403784); + c = md5gg(c, d, a, b, x[i + 7], 14, 1735328473); + b = md5gg(b, c, d, a, x[i + 12], 20, -1926607734); + + a = md5hh(a, b, c, d, x[i + 5], 4, -378558); + d = md5hh(d, a, b, c, x[i + 8], 11, -2022574463); + c = md5hh(c, d, a, b, x[i + 11], 16, 1839030562); + b = md5hh(b, c, d, a, x[i + 14], 23, -35309556); + a = md5hh(a, b, c, d, x[i + 1], 4, -1530992060); + d = md5hh(d, a, b, c, x[i + 4], 11, 1272893353); + c = md5hh(c, d, a, b, x[i + 7], 16, -155497632); + b = md5hh(b, c, d, a, x[i + 10], 23, -1094730640); + a = md5hh(a, b, c, d, x[i + 13], 4, 681279174); + d = md5hh(d, a, b, c, x[i], 11, -358537222); + c = md5hh(c, d, a, b, x[i + 3], 16, -722521979); + b = md5hh(b, c, d, a, x[i + 6], 23, 76029189); + a = md5hh(a, b, c, d, x[i + 9], 4, -640364487); + d = md5hh(d, a, b, c, x[i + 12], 11, -421815835); + c = md5hh(c, d, a, b, x[i + 15], 16, 530742520); + b = md5hh(b, c, d, a, x[i + 2], 23, -995338651); + + a = md5ii(a, b, c, d, x[i], 6, -198630844); + d = md5ii(d, a, b, c, x[i + 7], 10, 1126891415); + c = md5ii(c, d, a, b, x[i + 14], 15, -1416354905); + b = md5ii(b, c, d, a, x[i + 5], 21, -57434055); + a = md5ii(a, b, c, d, x[i + 12], 6, 1700485571); + d = md5ii(d, a, b, c, x[i + 3], 10, -1894986606); + c = md5ii(c, d, a, b, x[i + 10], 15, -1051523); + b = md5ii(b, c, d, a, x[i + 1], 21, -2054922799); + a = md5ii(a, b, c, d, x[i + 8], 6, 1873313359); + d = md5ii(d, a, b, c, x[i + 15], 10, -30611744); + c = md5ii(c, d, a, b, x[i + 6], 15, -1560198380); + b = md5ii(b, c, d, a, x[i + 13], 21, 1309151649); + a = md5ii(a, b, c, d, x[i + 4], 6, -145523070); + d = md5ii(d, a, b, c, x[i + 11], 10, -1120210379); + c = md5ii(c, d, a, b, x[i + 2], 15, 718787259); + b = md5ii(b, c, d, a, x[i + 9], 21, -343485551); + + a = safeAdd(a, olda); + b = safeAdd(b, oldb); + c = safeAdd(c, oldc); + d = safeAdd(d, oldd); + } + return [a, b, c, d]; +} - while (level) { - wrapConsoleMethod$1(console, level, callback); - level = logLevels.pop(); +/* +* Convert an array of little-endian words to a string +*/ +function binl2rstr(input) { + var i; + var output = ''; + var length32 = input.length * 32; + for (i = 0; i < length32; i += 8) { + output += String.fromCharCode((input[i >> 5] >>> (i % 32)) & 0xff); + } + return output; +} + +/* +* Convert a raw string to an array of little-endian words +* Characters >255 have their high-byte silently ignored. +*/ +function rstr2binl(input) { + var i; + var output = []; + output[(input.length >> 2) - 1] = undefined; + for (i = 0; i < output.length; i += 1) { + output[i] = 0; + } + var length8 = input.length * 8; + for (i = 0; i < length8; i += 8) { + output[i >> 5] |= (input.charCodeAt(i / 8) & 0xff) << (i % 32); + } + return output; +} + +/* +* Calculate the MD5 of a raw string +*/ +function rstrMD5(s) { + return binl2rstr(binlMD5(rstr2binl(s), s.length * 8)); +} + +/* +* Calculate the HMAC-MD5, of a key and some data (raw strings) +*/ +function rstrHMACMD5(key, data) { + var i; + var bkey = rstr2binl(key); + var ipad = []; + var opad = []; + var hash; + ipad[15] = opad[15] = undefined; + if (bkey.length > 16) { + bkey = binlMD5(bkey, key.length * 8); + } + for (i = 0; i < 16; i += 1) { + ipad[i] = bkey[i] ^ 0x36363636; + opad[i] = bkey[i] ^ 0x5c5c5c5c; + } + hash = binlMD5(ipad.concat(rstr2binl(data)), 512 + data.length * 8); + return binl2rstr(binlMD5(opad.concat(hash), 512 + 128)); +} + +/* +* Convert a raw string to a hex string +*/ +function rstr2hex(input) { + var hexTab = '0123456789abcdef'; + var output = ''; + var x; + var i; + for (i = 0; i < input.length; i += 1) { + x = input.charCodeAt(i); + output += hexTab.charAt((x >>> 4) & 0x0f) + hexTab.charAt(x & 0x0f); } + return output; } -var console$5 = consolePlugin; +/* +* Encode a string as utf-8 +*/ +function str2rstrUTF8(input) { + return unescape(encodeURIComponent(input)); +} -/* This file was generated by './scripts/generate-plugin-combinations.js'! */ +/* +* Take string arguments and return either raw or hex encoded strings +*/ +function rawMD5(s) { + return rstrMD5(str2rstrUTF8(s)); +} +function hexMD5(s) { + return rstr2hex(rawMD5(s)); +} +function rawHMACMD5(k, d) { + return rstrHMACMD5(str2rstrUTF8(k), str2rstrUTF8(d)); +} +function hexHMACMD5(k, d) { + return rstr2hex(rawHMACMD5(k, d)); +} -singleton.addPlugin(console$5); -var console$1 = {}; +function md5(string, key, raw) { + if (!key) { + if (!raw) { + return hexMD5(string); + } + return rawMD5(string); + } + if (!raw) { + return hexHMACMD5(key, string); + } + return rawHMACMD5(key, string); +} -return console$1; +module.exports = md5; -}))); +},{}]},{},[5,1])(5) +}); \ No newline at end of file diff --git a/dist/console/raven.min.js b/dist/console/raven.min.js index 239c9eeb0c21..ce33625974c1 100644 --- a/dist/console/raven.min.js +++ b/dist/console/raven.min.js @@ -1,3 +1,4 @@ -/*! Raven.js 3.22.2 (1b6187b) | github.com/getsentry/raven-js */ -!function(a,b){"object"==typeof exports&&"undefined"!=typeof module?module.exports=b():"function"==typeof define&&define.amd?define(b):a.Raven=b()}(this,function(){"use strict";function a(a,b){return b={exports:{}},a(b,b.exports),b.exports}function b(a){return(b="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(a){return typeof a}:function(a){return a&&"function"==typeof Symbol&&a.constructor===Symbol&&a!==Symbol.prototype?"symbol":typeof a})(a)}function c(a){return"object"===b(a)&&null!==a}function d(a){switch({}.toString.call(a)){case"[object Error]":return!0;case"[object Exception]":return!0;case"[object DOMException]":return!0;default:return a instanceof Error}}function e(a){return l()&&"[object ErrorEvent]"==={}.toString.call(a)}function f(a){return void 0===a}function g(a){return"function"==typeof a}function h(a){return"[object Object]"===Object.prototype.toString.call(a)}function i(a){return"[object String]"===Object.prototype.toString.call(a)}function j(a){return"[object Array]"===Object.prototype.toString.call(a)}function k(a){if(!h(a))return!1;for(var b in a)if(a.hasOwnProperty(b))return!1;return!0}function l(){try{return new ErrorEvent(""),!0}catch(a){return!1}}function m(){if(!("fetch"in N))return!1;try{return new Headers,new Request(""),new Response,!0}catch(a){return!1}}function n(a){function b(b,c){var d=a(b)||b;return c?c(d)||d:d}return b}function o(a,b){var c,d;if(f(a.length))for(c in a)s(a,c)&&b.call(null,c,a[c]);else if(d=a.length)for(c=0;c ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function y(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&i(b))for(c=b.split(/\s+/),f=0;f=0;--b)l[b]===a&&l.splice(b,1)}function c(){g(),l=[]}function d(a,b){var c=null;if(!b||P.collectWindowErrors){for(var d in l)if(l.hasOwnProperty(d))try{l[d].apply(null,[a].concat(R.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function e(a,b,c,e,f){var g=null,i=O.isErrorEvent(f)?f.error:f,k=O.isErrorEvent(a)?a.message:a;if(o)P.computeStackTrace.augmentStackTraceWithInitialElement(o,b,c,k),h();else if(i&&O.isError(i))g=P.computeStackTrace(i),d(g,!0);else{var l,m={url:b,line:c,column:e},n=void 0;if("[object String]"==={}.toString.call(k)){var l=k.match(T);l&&(n=l[1],k=l[2])}m.func=S,g={name:n,message:k,url:F(),stack:[m]},d(g,!0)}return!!j&&j.apply(this,arguments)}function f(){k||(j=Q.onerror,Q.onerror=e,k=!0)}function g(){k&&(Q.onerror=j,k=!1,j=void 0)}function h(){var a=o,b=m;m=null,o=null,n=null,d.apply(null,[a,!1].concat(b))}function i(a,b){var c=R.call(arguments,1);if(o){if(n===a)return;h()}var d=P.computeStackTrace(a);if(o=d,n=a,m=c,setTimeout(function(){n===a&&h()},d.incomplete?2e3:0),b!==!1)throw a}var j,k,l=[],m=null,n=null,o=null;return i.subscribe=a,i.unsubscribe=b,i.uninstall=c,i}(),P.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,d,e=/^\s*at (.*?) ?\(((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,f=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|\[native).*?|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,g=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,h=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,i=/\((\S*)(?::(\d+))(?::(\d+))\)/,j=a.stack.split("\n"),k=[],l=(/^(.*) is undefined$/.exec(a.message),0),m=j.length;l eval")>-1;o&&(b=h.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==l||c[5]||"undefined"==typeof a.columnNumber||(k[0].column=a.columnNumber+1),d={url:c[3],func:c[1]||S,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}!d.func&&d.line&&(d.func=S),k.push(d)}return k.length?{name:a.name,message:a.message,url:F(),stack:k}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=S),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,e){for(var f,g,h=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,i=[],j={},k=!1,l=c.caller;l&&!k;l=l.caller)if(l!==d&&l!==P.report){if(g={url:null,func:S,line:null,column:null},l.name?g.func=l.name:(f=h.exec(l.toString()))&&(g.func=f[1]),"undefined"==typeof g.func)try{g.func=f.input.substring(0,f.input.indexOf("{"))}catch(m){}j[""+l]?k=!0:j[""+l]=!0,i.push(g)}e&&i.splice(0,e);var n={name:a.name,message:a.message,url:F(),stack:i};return b(n,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),n}function d(b,d){var e=null;d=null==d?0:+d;try{if(e=a(b))return e}catch(f){if(P.debug)throw f}try{if(e=c(b,d+1))return e}catch(f){if(P.debug)throw f}return{name:b.name,message:b.message,url:F()}}return d.augmentStackTraceWithInitialElement=b,d.computeStackTraceFromStackProp=a,d}();var U=P,V=a(function(a,b){function c(a,b){for(var c=0;c0){var i=c(d,this);~i?d.splice(i+1):d.push(this),~i?f.splice(i,1/0,g):f.push(g),~c(d,h)&&(h=b.call(this,g,h))}else d.push(h);return null==a?h instanceof Error?e(h):h:a.call(this,g,h)}}b=a.exports=d,b.getSerialize=f});G.prototype=new Error,G.prototype.constructor=G;var W=G,X=function(a,b,c){var d=a[b],e=a;if(b in a){var f="warn"===b?"warning":b;a[b]=function(){var a=[].slice.call(arguments),g=O.safeJoin(a," "),h={level:f,logger:"console",extra:{arguments:a}};"assert"===b?a[0]===!1&&(g="Assertion failed: "+(O.safeJoin(a.slice(1)," ")||"console.assert"),h.extra.arguments=a.slice(1),c&&c(g,h)):c&&c(g,h),d&&Function.prototype.apply.call(d,e,a)}}},Y={wrapMethod:X},Z=O.isError,$=O.isObject,_=O.isErrorEvent,aa=O.isUndefined,ba=O.isFunction,ca=O.isString,da=O.isArray,ea=O.isEmptyObject,fa=O.each,ga=O.objectMerge,ha=O.truncate,ia=O.objectFrozen,ja=O.hasKey,ka=O.joinRegExp,la=O.urlencode,ma=O.uuid4,na=O.htmlTreeAsString,oa=O.isSameException,pa=O.isSameStacktrace,qa=O.parseUrl,ra=O.fill,sa=O.supportsFetch,ta=Y.wrapMethod,ua="source protocol user pass host port path".split(" "),va=/^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/,wa="undefined"!=typeof window?window:"undefined"!=typeof L?L:"undefined"!=typeof self?self:{},xa=wa.document,ya=wa.navigator;J.prototype={VERSION:"3.22.2",debug:!1,TraceKit:U,config:function(a,b){var c=this;if(c.i)return this.C("error","Error: Raven has already been configured"),c;if(!a)return c;var d=c.m;b&&fa(b,function(a,b){"tags"===a||"extra"===a||"user"===a?c.l[a]=b:d[a]=b}),c.setDSN(a),d.ignoreErrors.push(/^Script error\.?$/),d.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/),d.ignoreErrors=ka(d.ignoreErrors),d.ignoreUrls=!!d.ignoreUrls.length&&ka(d.ignoreUrls),d.whitelistUrls=!!d.whitelistUrls.length&&ka(d.whitelistUrls),d.includePaths=ka(d.includePaths),d.maxBreadcrumbs=Math.max(0,Math.min(d.maxBreadcrumbs||100,100));var e={xhr:!0,console:!0,dom:!0,location:!0,sentry:!0},f=d.autoBreadcrumbs;"[object Object]"==={}.toString.call(f)?f=ga(e,f):f!==!1&&(f=e),d.autoBreadcrumbs=f;var g={tryCatch:!0},h=d.instrument;return"[object Object]"==={}.toString.call(h)?h=ga(g,h):h!==!1&&(h=g),d.instrument=h,U.collectWindowErrors=!!d.collectWindowErrors,c},install:function(){var a=this;return a.isSetup()&&!a.p&&(U.report.subscribe(function(){a.D.apply(a,arguments)}),a.E(),a.m.instrument&&a.m.instrument.tryCatch&&a.F(),a.m.autoBreadcrumbs&&a.G(),a.H(),a.p=!0),Error.stackTraceLimit=a.m.stackTraceLimit,this},setDSN:function(a){var b=this,c=b.I(a),d=c.path.lastIndexOf("/"),e=c.path.substr(1,d);b.J=a,b.j=c.user,b.K=c.pass&&c.pass.substr(1),b.k=c.path.substr(d+1),b.i=b.L(c),b.M=b.i+"/"+e+"api/"+b.k+"/store/",this.A()},context:function(a,b,c){return ba(a)&&(c=b||[],b=a,a=void 0),this.wrap(a,b).apply(this,c)},wrap:function(a,b,c){function d(){var d=[],f=arguments.length,g=!a||a&&a.deep!==!1;for(c&&ba(c)&&c.apply(this,arguments);f--;)d[f]=g?e.wrap(a,arguments[f]):arguments[f];try{return b.apply(this,d)}catch(h){throw e.N(),e.captureException(h,a),h}}var e=this;if(aa(b)&&!ba(a))return a;if(ba(a)&&(b=a,a=void 0),!ba(b))return b;try{if(b.a)return b;if(b.O)return b.O}catch(f){return b}for(var g in b)ja(b,g)&&(d[g]=b[g]);return d.prototype=b.prototype,b.O=d,d.a=!0,d.b=b,d},uninstall:function(){return U.report.uninstall(),this.P(),this.Q(),this.R(),Error.stackTraceLimit=this.q,this.p=!1,this},captureException:function(a,b){b=ga({trimHeadFrames:0},b?b:{});var c=!Z(a),d=!_(a),e=_(a)&&!a.error;if(c&&d||e)return this.captureMessage(a,ga(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}));_(a)&&(a=a.error),this.f=a;try{var f=U.computeStackTrace(a);this.S(f,b)}catch(g){if(a!==g)throw g}return this},captureMessage:function(a,b){if(!this.m.ignoreErrors.test||!this.m.ignoreErrors.test(a)){b=b||{};var c,d=ga({message:a+""},b);try{throw new Error(a)}catch(e){c=e}c.name=null;var f=U.computeStackTrace(c),g=da(f.stack)&&f.stack[1],h=g&&g.url||"";if((!this.m.ignoreUrls.test||!this.m.ignoreUrls.test(h))&&(!this.m.whitelistUrls.test||this.m.whitelistUrls.test(h))){if(this.m.stacktrace||b&&b.stacktrace){b=ga({fingerprint:a,trimHeadFrames:(b.trimHeadFrames||0)+1},b);var i=this.T(f,b);d.stacktrace={frames:i.reverse()}}return this.U(d),this}}},captureBreadcrumb:function(a){var b=ga({timestamp:H()/1e3},a);if(ba(this.m.breadcrumbCallback)){var c=this.m.breadcrumbCallback(b);if($(c)&&!ea(c))b=c;else if(c===!1)return this}return this.w.push(b),this.w.length>this.m.maxBreadcrumbs&&this.w.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.t.push([a,b]),this.p&&this.H(),this},setUserContext:function(a){return this.l.user=a,this},setExtraContext:function(a){return this.V("extra",a),this},setTagsContext:function(a){return this.V("tags",a),this},clearContext:function(){return this.l={},this},getContext:function(){return JSON.parse(V(this.l))},setEnvironment:function(a){return this.m.environment=a,this},setRelease:function(a){return this.m.release=a,this},setDataCallback:function(a){var b=this.m.dataCallback;return this.m.dataCallback=I(b,a),this},setBreadcrumbCallback:function(a){var b=this.m.breadcrumbCallback;return this.m.breadcrumbCallback=I(b,a),this},setShouldSendCallback:function(a){var b=this.m.shouldSendCallback;return this.m.shouldSendCallback=I(b,a),this},setTransport:function(a){return this.m.transport=a,this},lastException:function(){return this.f},lastEventId:function(){return this.h},isSetup:function(){return!!this.c&&(!!this.i||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.C("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=wa.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(xa){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new W("Missing eventId");var c=a.dsn||this.J;if(!c)throw new W("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.l.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.L(this.I(c)),h=xa.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(xa.head||xa.body).appendChild(h)}},N:function(){var a=this;this.o+=1,setTimeout(function(){a.o-=1})},W:function(a,b){var c,d;if(this.d){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),xa.createEvent?(c=xa.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=xa.createEventObject(),c.eventType=a);for(d in b)ja(b,d)&&(c[d]=b[d]);if(xa.createEvent)xa.dispatchEvent(c);else try{xa.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},X:function(a){var b=this;return function(c){if(b.Y=null,b.x!==c){b.x=c;var d;try{d=na(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},Z:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.Y;g||a.X("input")(c),clearTimeout(g),a.Y=setTimeout(function(){a.Y=null},b)}}},$:function(a,b){var c=qa(this.y.href),d=qa(b),e=qa(a);this.z=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},E:function(){var a=this;a._=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.a?a._.apply(this.b,arguments):a._.apply(this,arguments)}},P:function(){this._&&(Function.prototype.toString=this._)},F:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.$(b.z,c+""),a.apply(this,arguments)}};ra(history,"pushState",j,d),ra(history,"replaceState",j,d)}if(c.console&&"console"in wa&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};fa(["debug","info","warn","error","log"],function(a,b){ta(console,b,k)})}},Q:function(){for(var a;this.v.length;){a=this.v.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},R:function(){for(var a in this.s)this.r[a]=this.s[a]},H:function(){var a=this;fa(this.t,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},I:function(a){var b=va.exec(a),c={},d=7;try{for(;d--;)c[ua[d]]=b[d]||""}catch(e){throw new W("Invalid DSN: "+a)}if(c.pass&&!this.m.allowSecretKey)throw new W("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},L:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},D:function(){this.o||this.S.apply(this,arguments)},S:function(a,b){var c=this.T(a,b);this.W("handle",{stackInfo:a,options:b}),this.ba(a.name,a.message,a.url,a.lineno,c,b)},T:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(fa(a.stack,function(b,e){var f=c.ca(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.w,0)}),this.l.user&&(a.user=this.l.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||ea(a[b]))&&delete a[b]}),ba(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!ea(a)&&(!ba(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.ia()?void this.C("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random()this.k.maxBreadcrumbs&&this.u.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.r.push([a,b]),this.n&&this.F(),this},setUserContext:function(a){return this.j.user=a,this},setExtraContext:function(a){return this.Z("extra",a),this},setTagsContext:function(a){return this.Z("tags",a),this},clearContext:function(){return this.j={},this},getContext:function(){return JSON.parse(h(this.j))},setEnvironment:function(a){return this.k.environment=a,this},setRelease:function(a){return this.k.release=a,this},setDataCallback:function(a){var b=this.k.dataCallback;return this.k.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.k.breadcrumbCallback;return this.k.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.k.shouldSendCallback;return this.k.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.k.transport=a,this},lastException:function(){return this.d},lastEventId:function(){return this.f},isSetup:function(){return!!this.a&&(!!this.g||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.z("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=P.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(Q){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.H;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.j.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.J(this.G(c)),h=Q.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(Q.head||Q.body).appendChild(h)}},L:function(){var a=this;this.m+=1,setTimeout(function(){a.m-=1})},$:function(a,b){var c,d;if(this.b){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),Q.createEvent?(c=Q.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=Q.createEventObject(),c.eventType=a);for(d in b)y(b,d)&&(c[d]=b[d]);if(Q.createEvent)Q.dispatchEvent(c);else try{Q.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},_:function(a){var b=this;return function(c){if(b.aa=null,b.v!==c){b.v=c;var d;try{d=C(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ba:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.aa;g||a._("input")(c),clearTimeout(g),a.aa=setTimeout(function(){a.aa=null},b)}}},ca:function(a,b){var c=F(this.w.href),d=F(b),e=F(a);this.x=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},C:function(){var a=this;a.da=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.M?a.da.apply(this.O,arguments):a.da.apply(this,arguments)}},Q:function(){this.da&&(Function.prototype.toString=this.da)},D:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.ca(b.x,c+""),a.apply(this,arguments)}};G(history,"pushState",j,d),G(history,"replaceState",j,d)}if(c.console&&"console"in P&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};u(["debug","info","warn","error","log"],function(a,b){M(console,b,k)})}},R:function(){for(var a;this.t.length;){a=this.t.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},S:function(){for(var a in this.q)this.p[a]=this.q[a]},F:function(){var a=this;u(this.r,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},G:function(a){var b=O.exec(a),c={},d=7;try{for(;d--;)c[N[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.k.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},J:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},A:function(){this.m||this.V.apply(this,arguments)},V:function(a,b){var c=this.X(a,b);this.$("handle",{stackInfo:a,options:b}),this.fa(a.name,a.message,a.url,a.lineno,c,b)},X:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(u(a.stack,function(b,e){var f=c.ga(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.u,0)}),this.j.user&&(a.user=this.j.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),a=this.pa(a),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||t(a[b]))&&delete a[b]}),q(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!t(a)&&(!q(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.ma()?void this.z("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function B(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&j(b))for(c=b.split(/\s+/),f=0;fc?M(a,b-1):d}function N(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?T:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function O(a,b){function c(a){return k(a)?a.map(function(a){return c(a)}):i(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!k(b)||k(b)&&0===b.length)return a;var d,e=w(b),f="********";try{d=JSON.parse(P(a))}catch(g){return a}return c(d)}var P=a(8),Q="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},R=3,S=51200,T=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isUndefined:g,isFunction:h,isPlainObject:i,isString:j,isArray:k,isEmptyObject:l,supportsErrorEvent:m,supportsFetch:n,supportsReferrerPolicy:o,supportsPromiseRejectionEvent:p,wrappedCallback:q,each:r,objectMerge:s,truncate:u,objectFrozen:t,hasKey:v,joinRegExp:w,urlencode:x,uuid4:z,htmlTreeAsString:A,htmlElementAsString:B,isSameException:E,isSameStacktrace:F,parseUrl:y,fill:G,safeJoin:H,serializeException:M,serializeKeysForMessage:N,sanitize:O}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{8:8}],7:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}var e=a(6),f={collectWindowErrors:!0,debug:!1},g="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},h=[].slice,i="?",j=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;f.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function k(a,b){var c=null;if(!b||f.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(h.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,g,h){var l=null,m=e.isErrorEvent(h)?h.error:h,n=e.isErrorEvent(a)?a.message:a;if(v)f.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&e.isError(m))l=f.computeStackTrace(m),k(l,!0);else{var p,r={url:b,line:c,column:g},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(j);p&&(s=p[1],n=p[2])}r.func=i,l={name:s,message:n,url:d(),stack:[r]},k(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=g.onerror,g.onerror=l,r=!0)}function n(){r&&(g.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,k.apply(null,[a,!1].concat(b))}function p(a,b){var c=h.call(arguments,1);if(v){if(u===a)return;o()}var d=f.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),f.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,e,f=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,g=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,h=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,j=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,k=/\((\S*)(?::(\d+))(?::(\d+))\)/,l=a.stack.split("\n"),m=[],n=(/^(.*) is undefined$/.exec(a.message),0),o=l.length;n eval")>-1;q&&(b=j.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==n||c[5]||"undefined"==typeof a.columnNumber||(m[0].column=a.columnNumber+1),e={url:c[3],func:c[1]||i,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}!e.func&&e.line&&(e.func=i),m.push(e)}return m.length?{name:a.name,message:a.message,url:d(),stack:m}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=i),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,g){for(var h,j,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==e&&o!==f.report){if(j={url:null,func:i,line:null,column:null},o.name?j.func=o.name:(h=k.exec(o.toString()))&&(j.func=h[1]),"undefined"==typeof j.func)try{j.func=h.input.substring(0,h.input.indexOf("{"))}catch(p){}m[""+o]?n=!0:m[""+o]=!0,l.push(j)}g&&l.splice(0,g);var q={name:a.name,message:a.message,url:d(),stack:l};return b(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),q}function e(b,e){var g=null;e=null==e?0:+e;try{if(g=a(b))return g}catch(h){if(f.debug)throw h}try{if(g=c(b,e+1))return g}catch(h){if(f.debug)throw h}return{name:b.name,message:b.message,url:d()}}return e.augmentStackTraceWithInitialElement=b,e.computeStackTraceFromStackProp=a,e}(),b.exports=f}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{6:6}],8:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}],9:[function(a,b,c){function d(a,b){var c=(65535&a)+(65535&b),d=(a>>16)+(b>>16)+(c>>16); +return d<<16|65535&c}function e(a,b){return a<>>32-b}function f(a,b,c,f,g,h){return d(e(d(d(b,a),d(f,h)),g),c)}function g(a,b,c,d,e,g,h){return f(b&c|~b&d,a,b,e,g,h)}function h(a,b,c,d,e,g,h){return f(b&d|c&~d,a,b,e,g,h)}function i(a,b,c,d,e,g,h){return f(b^c^d,a,b,e,g,h)}function j(a,b,c,d,e,g,h){return f(c^(b|~d),a,b,e,g,h)}function k(a,b){a[b>>5]|=128<>>9<<4)+14]=b;var c,e,f,k,l,m=1732584193,n=-271733879,o=-1732584194,p=271733878;for(c=0;c>5]>>>b%32&255);return c}function m(a){var b,c=[];for(c[(a.length>>2)-1]=void 0,b=0;b>5]|=(255&a.charCodeAt(b/8))<16&&(e=k(e,8*a.length)),c=0;c<16;c+=1)f[c]=909522486^e[c],g[c]=1549556828^e[c];return d=k(f.concat(m(b)),512+8*b.length),l(k(g.concat(d),640))}function p(a){var b,c,d="0123456789abcdef",e="";for(c=0;c>>4&15)+d.charAt(15&b);return e}function q(a){return unescape(encodeURIComponent(a))}function r(a){return n(q(a))}function s(a){return p(r(a))}function t(a,b){return o(q(a),q(b))}function u(a,b){return p(t(a,b))}function v(a,b,c){return b?c?t(b,a):u(b,a):c?r(a):s(a)}b.exports=v},{}]},{},[5,1])(5)}); //# sourceMappingURL=raven.min.js.map \ No newline at end of file diff --git a/dist/console/raven.min.js.map b/dist/console/raven.min.js.map index d4cd7cc1946f..0d45c151bfb7 100644 --- a/dist/console/raven.min.js.map +++ b/dist/console/raven.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["raven.js"],"names":["global","factory","exports","module","define","amd","Raven","this","createCommonjsModule","fn","_typeof","obj","Symbol","iterator","constructor","prototype","isObject$1","what","isError$1","value","toString","call","Error","isErrorEvent$1","supportsErrorEvent","isUndefined$1","isFunction$1","isPlainObject","Object","isString$1","isArray$1","isEmptyObject$1","_","hasOwnProperty","ErrorEvent","e","supportsFetch$1","_window$3","Headers","Request","Response","wrappedCallback","callback","dataCallback","data","original","normalizedData","each$1","i","j","length","hasKey$1","objectMerge$1","obj1","obj2","key","objectFrozen$1","isFrozen","truncate$1","str","max","substr","object","joinRegExp$1","patterns","pattern","sources","len","push","replace","source","RegExp","join","urlencode$1","o","pairs","encodeURIComponent","parseUrl$1","url","match","query","fragment","protocol","host","path","relative","uuid4$1","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","r","Math","random","htmlTreeAsString$1","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","reverse","className","classes","attr","tagName","toLowerCase","id","split","attrWhitelist","getAttribute","isOnlyOneTruthy","a","b","isBothUndefined","isSameException$1","ex1","ex2","values","type","stacktrace","isSameStacktrace$1","stack1","stack2","frames1","frames","frames2","filename","lineno","colno","fill$1","name","replacement","track","orig","__raven__","__orig__","safeJoin","input","delimiter","output","String","getLocationHref","document","location","href","RavenConfigError","message","now","Date","keepOriginalCallback","isFunction","Raven$1","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window$1","SENTRY_RELEASE","logger","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","_fetchDefaults","method","keepalive","referrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","console","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","_lastHref","_resetBackoff","consolePlugin","pluginOptions","window","logLevels","levels","msg","captureMessage","level","pop","wrapConsoleMethod$1","commonjsGlobal","self","_sPO","setPrototypeOf","p","__proto__","Reflect","construct","Parent","args","Class","Constructor","apply","bind","utils","isObject","isError","isErrorEvent","isString","isArray","isEmptyObject","supportsFetch","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","TraceKit","debug","_window$2","_slice","slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","report","subscribe","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","stack","isWindowError","exception","concat","arguments","inner","traceKitWindowOnError","lineNo","colNo","ex","error","lastExceptionStack","computeStackTrace","augmentStackTraceWithInitialElement","processLastException","groups","line","column","undefined","func","_oldOnerrorHandler","_onErrorHandlerInstalled","onerror","_lastExceptionStack","_lastArgs","lastArgs","lastException","rethrow","setTimeout","incomplete","uninstall","computeStackTraceFromStackProp","submatch","parts","element","chrome","gecko","winjs","geckoEval","chromeEval","lines","exec","isNative","indexOf","isEval","columnNumber","stackInfo","initial","unshift","partial","computeStackTraceByWalkingCallerChain","depth","item","functionName","funcs","recursion","curr","caller","substring","result","sourceURL","fileName","lineNumber","description","tracekit","stringify_1","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","err","keys","thisPos","Infinity","getSerialize","configError","wrapMethod","originalConsoleLevel","originalConsole","sentryLevel","extra","Function","console$3","wrapConsoleMethod","dsnKeys","dsnPattern","navigator","VERSION","config","dsn","options","_logDebug","globalOptions","setDSN","maxBreadcrumbs","min","autoBreadcrumbDefaults","xhr","dom","sentry","instrumentDefaults","tryCatch","install","isSetup","_handleOnErrorStackInfo","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","lastIndexOf","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","context","wrap","_before","wrapped","deep","_ignoreNextOnError","captureException","__raven_wrapper__","property","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","trimHeadFrames","isNotError","isNotErrorEvent","isErrorEventWithoutError","_handleStackInfo","test","initialCall","fileurl","fingerprint","_prepareFrames","_send","captureBreadcrumb","crumb","timestamp","breadcrumbCallback","shift","addPlugin","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","setDataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","N","W","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","X","evtName","_keypressTimeout","target","category","Z","debounceDuration","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","$","from","to","parsedLoc","parsedTo","parsedFrom","E","_originalFunctionToString","P","F","wrapTimeFn","t","Array","originalCallback","wrapEventTarget","proto","capture","secure","handleEvent","before","clickHandler","keypressHandler","_keypressEventHandler","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","G","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","onreadystatechange","origFetch","fetchInput","fetchData","then","response","addEventListener","attachEvent","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","Q","builtin","R","H","installer","I","m","allowSecretKey","L","port","D","S","_triggerEvent","_processException","T","frame","_normalizeFrame","in_app","ca","stackInfoUrl","normalized","function","ba","prefixedMessage","culprit","da","request","Referer","breadcrumbs","_trimBreadcrumbs","ea","urlProp","urlProps","fa","httpData","userAgent","User-Agent","referrer","A","_backoffDuration","_backoffStart","ia","ja","current","last","ka","_shouldBackoff","retry","get","getResponseHeader","parseInt","U","baseData","project","platform","_getHttpData","serverName","server_name","forEach","_sendProcessedPayload","ma","la","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","na","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","onload","open","setRequestHeader","send","oa","hash","evaluated","C","V","setUser","setReleaseContext","raven","_window","_Raven","noConflict","singleton","console$5","console$1"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file +{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","consolePlugin","console","pluginOptions","logLevels","levels","push","callback","msg","data","captureMessage","level","pop","wrapConsoleMethod","wrapMethod","addPlugin","3","5","2","RavenConfigError","message","name","prototype","constructor","utils","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","safeJoin","logger","extra","Function","apply","6","4","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","sanitizeKeys","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isError","isObject","isPlainObject","isErrorEvent","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","sanitize","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","config","dsn","options","_logDebug","globalOptions","key","value","setDSN","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","toString","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","substr","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","context","func","undefined","wrap","_before","wrapped","deep","_ignoreNextOnError","captureException","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","T","event","reason","unhandledPromiseRejection","B","_promiseRejectionHandler","bind","addEventListener","P","removeEventListener","ex","trimHeadFrames","error","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","U","currentOptions","exKeys","Object","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","setDataCallback","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","L","setTimeout","$","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","_","evtName","_keypressTimeout","target","category","ba","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","ca","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","C","_originalFunctionToString","Q","D","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","type","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","E","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","R","builtin","S","F","installer","concat","G","str","m","exec","allowSecretKey","J","port","A","V","stackInfo","_triggerEvent","_processException","lineno","X","frame","_normalizeFrame","in_app","ga","stackInfoUrl","normalized","filename","line","colno","column","function","fa","prefixedMessage","exception","values","culprit","ha","request","Referer","breadcrumbs","_trimBreadcrumbs","ia","urlProp","urlProps","ja","httpData","userAgent","User-Agent","referrer","y","_backoffDuration","_backoffStart","ma","na","current","last","oa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Y","baseData","project","platform","_getHttpData","serverName","server_name","_sanitizeData","forEach","random","_sendProcessedPayload","pa","ra","qa","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","sa","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","onerror","open","setRequestHeader","send","ta","hash","evaluated","z","Z","setUser","setReleaseContext","7","8","9","RavenConstructor","_Raven","noConflict","Client","what","supportsErrorEvent","ErrorEvent","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","wrappedCallback","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","sanitizeMask","safeInput","o_O","getLocationHref","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","charAt","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","string","raw"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file diff --git a/dist/ember,require,vue/raven.js b/dist/ember,require,vue/raven.js index db36cd771193..86a53dbd4c2d 100644 --- a/dist/ember,require,vue/raven.js +++ b/dist/ember,require,vue/raven.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.22.2 (1b6187b) | github.com/getsentry/raven-js */ +/*! Raven.js 3.24.2 (540f32b) | github.com/getsentry/raven-js */ /* * Includes TraceKit @@ -10,3231 +10,3995 @@ * */ -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : - typeof define === 'function' && define.amd ? define(factory) : - (global.Raven = factory()); -}(this, (function () { 'use strict'; +(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.Raven = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o' : 'anonymous component') + + (vm._isVue && vm.$options.__file ? ' at ' + vm.$options.__file : '') + ); } -function isErrorEvent$1(value) { - return supportsErrorEvent() && {}.toString.call(value) === '[object ErrorEvent]'; -} - -function isUndefined$1(what) { - return what === void 0; -} +function vuePlugin(Raven, Vue) { + Vue = Vue || window.Vue; -function isFunction$1(what) { - return typeof what === 'function'; -} + // quit if Vue isn't on the page + if (!Vue || !Vue.config) return; -function isPlainObject(what) { - return Object.prototype.toString.call(what) === '[object Object]'; -} + var _oldOnError = Vue.config.errorHandler; + Vue.config.errorHandler = function VueErrorHandler(error, vm, info) { + var metaData = {}; -function isString$1(what) { - return Object.prototype.toString.call(what) === '[object String]'; -} + // vm and lifecycleHook are not always available + if (Object.prototype.toString.call(vm) === '[object Object]') { + metaData.componentName = formatComponentName(vm); + metaData.propsData = vm.$options.propsData; + } -function isArray$1(what) { - return Object.prototype.toString.call(what) === '[object Array]'; -} + if (typeof info !== 'undefined') { + metaData.lifecycleHook = info; + } -function isEmptyObject$1(what) { - if (!isPlainObject(what)) return false; + Raven.captureException(error, { + extra: metaData + }); - for (var _ in what) { - if (what.hasOwnProperty(_)) { - return false; + if (typeof _oldOnError === 'function') { + _oldOnError.call(this, error, vm, info); } - } - - return true; + }; } -function supportsErrorEvent() { - try { - new ErrorEvent(''); // eslint-disable-line no-new +module.exports = vuePlugin; - return true; - } catch (e) { - return false; - } +_dereq_(7).addPlugin(module.exports); +},{"7":7}],4:[function(_dereq_,module,exports){ +function RavenConfigError(message) { + this.name = 'RavenConfigError'; + this.message = message; } +RavenConfigError.prototype = new Error(); +RavenConfigError.prototype.constructor = RavenConfigError; -function supportsFetch$1() { - if (!('fetch' in _window$3)) return false; - - try { - new Headers(); // eslint-disable-line no-new +module.exports = RavenConfigError; - new Request(''); // eslint-disable-line no-new +},{}],5:[function(_dereq_,module,exports){ +var utils = _dereq_(8); - new Response(); // eslint-disable-line no-new +var wrapMethod = function(console, level, callback) { + var originalConsoleLevel = console[level]; + var originalConsole = console; - return true; - } catch (e) { - return false; + if (!(level in console)) { + return; } -} - -function wrappedCallback(callback) { - function dataCallback(data, original) { - var normalizedData = callback(data) || data; - - if (original) { - return original(normalizedData) || normalizedData; - } - return normalizedData; - } + var sentryLevel = level === 'warn' ? 'warning' : level; - return dataCallback; -} + console[level] = function() { + var args = [].slice.call(arguments); -function each$1(obj, callback) { - var i, j; + var msg = utils.safeJoin(args, ' '); + var data = {level: sentryLevel, logger: 'console', extra: {arguments: args}}; - if (isUndefined$1(obj.length)) { - for (i in obj) { - if (hasKey$1(obj, i)) { - callback.call(null, i, obj[i]); + if (level === 'assert') { + if (args[0] === false) { + // Default browsers message + msg = + 'Assertion failed: ' + (utils.safeJoin(args.slice(1), ' ') || 'console.assert'); + data.extra.arguments = args.slice(1); + callback && callback(msg, data); } + } else { + callback && callback(msg, data); } - } else { - j = obj.length; - if (j) { - for (i = 0; i < j; i++) { - callback.call(null, i, obj[i]); - } + // this fails for some browsers. :( + if (originalConsoleLevel) { + // IE9 doesn't allow calling apply on console functions directly + // See: https://stackoverflow.com/questions/5472938/does-ie9-support-console-log-and-is-it-a-real-function#answer-5473193 + Function.prototype.apply.call(originalConsoleLevel, originalConsole, args); } - } -} - -function objectMerge$1(obj1, obj2) { - if (!obj2) { - return obj1; - } + }; +}; - each$1(obj2, function (key, value) { - obj1[key] = value; - }); - return obj1; -} -/** - * This function is only used for react-native. - * react-native freezes object that have already been sent over the - * js bridge. We need this function in order to check if the object is frozen. - * So it's ok that objectFrozen returns false if Object.isFrozen is not - * supported because it's not relevant for other "platforms". See related issue: - * https://github.com/getsentry/react-native-sentry/issues/57 - */ +module.exports = { + wrapMethod: wrapMethod +}; +},{"8":8}],6:[function(_dereq_,module,exports){ +(function (global){ +/*global XDomainRequest:false */ -function objectFrozen$1(obj) { - if (!Object.isFrozen) { - return false; - } +var TraceKit = _dereq_(9); +var stringify = _dereq_(10); +var md5 = _dereq_(11); +var RavenConfigError = _dereq_(4); - return Object.isFrozen(obj); -} +var utils = _dereq_(8); +var isError = utils.isError; +var isObject = utils.isObject; +var isPlainObject = utils.isPlainObject; +var isErrorEvent = utils.isErrorEvent; +var isUndefined = utils.isUndefined; +var isFunction = utils.isFunction; +var isString = utils.isString; +var isArray = utils.isArray; +var isEmptyObject = utils.isEmptyObject; +var each = utils.each; +var objectMerge = utils.objectMerge; +var truncate = utils.truncate; +var objectFrozen = utils.objectFrozen; +var hasKey = utils.hasKey; +var joinRegExp = utils.joinRegExp; +var urlencode = utils.urlencode; +var uuid4 = utils.uuid4; +var htmlTreeAsString = utils.htmlTreeAsString; +var isSameException = utils.isSameException; +var isSameStacktrace = utils.isSameStacktrace; +var parseUrl = utils.parseUrl; +var fill = utils.fill; +var supportsFetch = utils.supportsFetch; +var supportsReferrerPolicy = utils.supportsReferrerPolicy; +var serializeKeysForMessage = utils.serializeKeysForMessage; +var serializeException = utils.serializeException; +var sanitize = utils.sanitize; -function truncate$1(str, max) { - return !max || str.length <= max ? str : str.substr(0, max) + "\u2026"; -} -/** - * hasKey, a better form of hasOwnProperty - * Example: hasKey(MainHostObject, property) === true/false - * - * @param {Object} host object to check property - * @param {string} key to check - */ +var wrapConsoleMethod = _dereq_(5).wrapMethod; +var dsnKeys = 'source protocol user pass host port path'.split(' '), + dsnPattern = /^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/; -function hasKey$1(object, key) { - return Object.prototype.hasOwnProperty.call(object, key); +function now() { + return +new Date(); } -function joinRegExp$1(patterns) { - // Combine an array of regular expressions and strings into one large regexp - // Be mad. - var sources = [], - i = 0, - len = patterns.length, - pattern; - - for (; i < len; i++) { - pattern = patterns[i]; - - if (isString$1(pattern)) { - // If it's a string, we need to escape it - // Taken from: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions - sources.push(pattern.replace(/([.*+?^=!:${}()|\[\]\/\\])/g, '\\$1')); - } else if (pattern && pattern.source) { - // If it's a regexp already, we want to extract the source - sources.push(pattern.source); - } // Intentionally skip other cases - - } +// This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) +var _window = + typeof window !== 'undefined' + ? window + : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; +var _document = _window.document; +var _navigator = _window.navigator; - return new RegExp(sources.join('|'), 'i'); +function keepOriginalCallback(original, callback) { + return isFunction(callback) + ? function(data) { + return callback(data, original); + } + : callback; } -function urlencode$1(o) { - var pairs = []; - each$1(o, function (key, value) { - pairs.push(encodeURIComponent(key) + '=' + encodeURIComponent(value)); - }); - return pairs.join('&'); -} // borrowed from https://tools.ietf.org/html/rfc3986#appendix-B -// intentionally using regex and not href parsing trick because React Native and other -// environments where DOM might not be available - - -function parseUrl$1(url) { - if (typeof url !== 'string') return {}; - var match = url.match(/^(([^:\/?#]+):)?(\/\/([^\/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?$/); // coerce to undefined values to empty string so we don't get 'undefined' - - var query = match[6] || ''; - var fragment = match[8] || ''; - return { - protocol: match[2], - host: match[4], - path: match[5], - relative: match[5] + query + fragment // everything minus origin - +// First, check for JSON support +// If there is no JSON, we no-op the core features of Raven +// since JSON is required to encode the payload +function Raven() { + this._hasJSON = !!(typeof JSON === 'object' && JSON.stringify); + // Raven can run in contexts where there's no document (react-native) + this._hasDocument = !isUndefined(_document); + this._hasNavigator = !isUndefined(_navigator); + this._lastCapturedException = null; + this._lastData = null; + this._lastEventId = null; + this._globalServer = null; + this._globalKey = null; + this._globalProject = null; + this._globalContext = {}; + this._globalOptions = { + // SENTRY_RELEASE can be injected by https://github.com/getsentry/sentry-webpack-plugin + release: _window.SENTRY_RELEASE && _window.SENTRY_RELEASE.id, + logger: 'javascript', + ignoreErrors: [], + ignoreUrls: [], + whitelistUrls: [], + includePaths: [], + headers: null, + collectWindowErrors: true, + captureUnhandledRejections: true, + maxMessageLength: 0, + // By default, truncates URL values to 250 chars + maxUrlLength: 250, + stackTraceLimit: 50, + autoBreadcrumbs: true, + instrument: true, + sampleRate: 1, + sanitizeKeys: [] }; -} - -function uuid4$1() { - var crypto = _window$3.crypto || _window$3.msCrypto; - - if (!isUndefined$1(crypto) && crypto.getRandomValues) { - // Use window.crypto API if available - // eslint-disable-next-line no-undef - var arr = new Uint16Array(8); - crypto.getRandomValues(arr); // set 4 in byte 7 - - arr[3] = arr[3] & 0xfff | 0x4000; // set 2 most significant bits of byte 9 to '10' - - arr[4] = arr[4] & 0x3fff | 0x8000; - - var pad = function pad(num) { - var v = num.toString(16); - - while (v.length < 4) { - v = '0' + v; - } - - return v; - }; + this._fetchDefaults = { + method: 'POST', + keepalive: true, + // Despite all stars in the sky saying that Edge supports old draft syntax, aka 'never', 'always', 'origin' and 'default + // https://caniuse.com/#feat=referrer-policy + // It doesn't. And it throw exception instead of ignoring this parameter... + // REF: https://github.com/getsentry/raven-js/issues/1233 + referrerPolicy: supportsReferrerPolicy() ? 'origin' : '' + }; + this._ignoreOnError = 0; + this._isRavenInstalled = false; + this._originalErrorStackTraceLimit = Error.stackTraceLimit; + // capture references to window.console *and* all its methods first + // before the console plugin has a chance to monkey patch + this._originalConsole = _window.console || {}; + this._originalConsoleMethods = {}; + this._plugins = []; + this._startTime = now(); + this._wrappedBuiltIns = []; + this._breadcrumbs = []; + this._lastCapturedEvent = null; + this._keypressTimeout; + this._location = _window.location; + this._lastHref = this._location && this._location.href; + this._resetBackoff(); - return pad(arr[0]) + pad(arr[1]) + pad(arr[2]) + pad(arr[3]) + pad(arr[4]) + pad(arr[5]) + pad(arr[6]) + pad(arr[7]); - } else { - // http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/2117523#2117523 - return 'xxxxxxxxxxxx4xxxyxxxxxxxxxxxxxxx'.replace(/[xy]/g, function (c) { - var r = Math.random() * 16 | 0, - v = c === 'x' ? r : r & 0x3 | 0x8; - return v.toString(16); - }); + // eslint-disable-next-line guard-for-in + for (var method in this._originalConsole) { + this._originalConsoleMethods[method] = this._originalConsole[method]; } } -/** - * Given a child DOM element, returns a query-selector statement describing that - * and its ancestors - * e.g. [HTMLElement] => body > div > input#foo.btn[name=baz] - * @param elem - * @returns {string} - */ - -function htmlTreeAsString$1(elem) { - /* eslint no-extra-parens:0*/ - var MAX_TRAVERSE_HEIGHT = 5, - MAX_OUTPUT_LEN = 80, - out = [], - height = 0, - len = 0, - separator = ' > ', - sepLength = separator.length, - nextStr; +/* + * The core Raven singleton + * + * @this {Raven} + */ - while (elem && height++ < MAX_TRAVERSE_HEIGHT) { - nextStr = htmlElementAsString(elem); // bail out if - // - nextStr is the 'html' element - // - the length of the string that would be created exceeds MAX_OUTPUT_LEN - // (ignore this limit if we are on the first iteration) +Raven.prototype = { + // Hardcode version string so that raven source can be loaded directly via + // webpack (using a build step causes webpack #1617). Grunt verifies that + // this value matches package.json during build. + // See: https://github.com/getsentry/raven-js/issues/465 + VERSION: '3.24.2', - if (nextStr === 'html' || height > 1 && len + out.length * sepLength + nextStr.length >= MAX_OUTPUT_LEN) { - break; - } + debug: false, - out.push(nextStr); - len += nextStr.length; - elem = elem.parentNode; - } + TraceKit: TraceKit, // alias to TraceKit - return out.reverse().join(separator); -} -/** - * Returns a simple, query-selector representation of a DOM element - * e.g. [HTMLElement] => input#foo.btn[name=baz] - * @param HTMLElement - * @returns {string} - */ + /* + * Configure Raven with a DSN and extra options + * + * @param {string} dsn The public Sentry DSN + * @param {object} options Set of global options [optional] + * @return {Raven} + */ + config: function(dsn, options) { + var self = this; + if (self._globalServer) { + this._logDebug('error', 'Error: Raven has already been configured'); + return self; + } + if (!dsn) return self; -function htmlElementAsString(elem) { - var out = [], - className, - classes, - key, - attr, - i; + var globalOptions = self._globalOptions; - if (!elem || !elem.tagName) { - return ''; - } + // merge in options + if (options) { + each(options, function(key, value) { + // tags and extra are special and need to be put into context + if (key === 'tags' || key === 'extra' || key === 'user') { + self._globalContext[key] = value; + } else { + globalOptions[key] = value; + } + }); + } - out.push(elem.tagName.toLowerCase()); + self.setDSN(dsn); - if (elem.id) { - out.push('#' + elem.id); - } + // "Script error." is hard coded into browsers for errors that it can't read. + // this is the result of a script being pulled in from an external domain and CORS. + globalOptions.ignoreErrors.push(/^Script error\.?$/); + globalOptions.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/); - className = elem.className; + // join regexp rules into one big rule + globalOptions.ignoreErrors = joinRegExp(globalOptions.ignoreErrors); + globalOptions.ignoreUrls = globalOptions.ignoreUrls.length + ? joinRegExp(globalOptions.ignoreUrls) + : false; + globalOptions.whitelistUrls = globalOptions.whitelistUrls.length + ? joinRegExp(globalOptions.whitelistUrls) + : false; + globalOptions.includePaths = joinRegExp(globalOptions.includePaths); + globalOptions.maxBreadcrumbs = Math.max( + 0, + Math.min(globalOptions.maxBreadcrumbs || 100, 100) + ); // default and hard limit is 100 - if (className && isString$1(className)) { - classes = className.split(/\s+/); + var autoBreadcrumbDefaults = { + xhr: true, + console: true, + dom: true, + location: true, + sentry: true + }; - for (i = 0; i < classes.length; i++) { - out.push('.' + classes[i]); + var autoBreadcrumbs = globalOptions.autoBreadcrumbs; + if ({}.toString.call(autoBreadcrumbs) === '[object Object]') { + autoBreadcrumbs = objectMerge(autoBreadcrumbDefaults, autoBreadcrumbs); + } else if (autoBreadcrumbs !== false) { + autoBreadcrumbs = autoBreadcrumbDefaults; } - } - - var attrWhitelist = ['type', 'name', 'title', 'alt']; + globalOptions.autoBreadcrumbs = autoBreadcrumbs; - for (i = 0; i < attrWhitelist.length; i++) { - key = attrWhitelist[i]; - attr = elem.getAttribute(key); + var instrumentDefaults = { + tryCatch: true + }; - if (attr) { - out.push('[' + key + '="' + attr + '"]'); + var instrument = globalOptions.instrument; + if ({}.toString.call(instrument) === '[object Object]') { + instrument = objectMerge(instrumentDefaults, instrument); + } else if (instrument !== false) { + instrument = instrumentDefaults; } - } - - return out.join(''); -} -/** - * Returns true if either a OR b is truthy, but not both - */ + globalOptions.instrument = instrument; + TraceKit.collectWindowErrors = !!globalOptions.collectWindowErrors; -function isOnlyOneTruthy(a, b) { - return !!(!!a ^ !!b); -} -/** - * Returns true if both parameters are undefined - */ + // return for chaining + return self; + }, + /* + * Installs a global window.onerror error handler + * to capture and report uncaught exceptions. + * At this point, install() is required to be called due + * to the way TraceKit is set up. + * + * @return {Raven} + */ + install: function() { + var self = this; + if (self.isSetup() && !self._isRavenInstalled) { + TraceKit.report.subscribe(function() { + self._handleOnErrorStackInfo.apply(self, arguments); + }); -function isBothUndefined(a, b) { - return isUndefined$1(a) && isUndefined$1(b); -} -/** - * Returns true if the two input exception interfaces have the same content - */ + if (self._globalOptions.captureUnhandledRejections) { + self._attachPromiseRejectionHandler(); + } + self._patchFunctionToString(); -function isSameException$1(ex1, ex2) { - if (isOnlyOneTruthy(ex1, ex2)) return false; - ex1 = ex1.values[0]; - ex2 = ex2.values[0]; - if (ex1.type !== ex2.type || ex1.value !== ex2.value) return false; // in case both stacktraces are undefined, we can't decide so default to false + if (self._globalOptions.instrument && self._globalOptions.instrument.tryCatch) { + self._instrumentTryCatch(); + } - if (isBothUndefined(ex1.stacktrace, ex2.stacktrace)) return false; - return isSameStacktrace$1(ex1.stacktrace, ex2.stacktrace); -} -/** - * Returns true if the two input stack trace interfaces have the same content - */ + if (self._globalOptions.autoBreadcrumbs) self._instrumentBreadcrumbs(); + // Install all of the plugins + self._drainPlugins(); -function isSameStacktrace$1(stack1, stack2) { - if (isOnlyOneTruthy(stack1, stack2)) return false; - var frames1 = stack1.frames; - var frames2 = stack2.frames; // Exit early if frame count differs + self._isRavenInstalled = true; + } - if (frames1.length !== frames2.length) return false; // Iterate through every frame; bail out if anything differs + Error.stackTraceLimit = self._globalOptions.stackTraceLimit; + return this; + }, - var a, b; + /* + * Set the DSN (can be called multiple time unlike config) + * + * @param {string} dsn The public Sentry DSN + */ + setDSN: function(dsn) { + var self = this, + uri = self._parseDSN(dsn), + lastSlash = uri.path.lastIndexOf('/'), + path = uri.path.substr(1, lastSlash); - for (var i = 0; i < frames1.length; i++) { - a = frames1[i]; - b = frames2[i]; - if (a.filename !== b.filename || a.lineno !== b.lineno || a.colno !== b.colno || a['function'] !== b['function']) return false; - } + self._dsn = dsn; + self._globalKey = uri.user; + self._globalSecret = uri.pass && uri.pass.substr(1); + self._globalProject = uri.path.substr(lastSlash + 1); - return true; -} -/** - * Polyfill a method - * @param obj object e.g. `document` - * @param name method name present on object e.g. `addEventListener` - * @param replacement replacement function - * @param track {optional} record instrumentation to an array - */ + self._globalServer = self._getGlobalServer(uri); + self._globalEndpoint = + self._globalServer + '/' + path + 'api/' + self._globalProject + '/store/'; -function fill$1(obj, name, replacement, track) { - var orig = obj[name]; - obj[name] = replacement(orig); - obj[name].__raven__ = true; - obj[name].__orig__ = orig; + // Reset backoff state since we may be pointing at a + // new project/server + this._resetBackoff(); + }, - if (track) { - track.push([obj, name, orig]); - } -} -/** - * Join values in array - * @param input array of values to be joined together - * @param delimiter string to be placed in-between values - * @returns {string} - */ + /* + * Wrap code within a context so Raven can capture errors + * reliably across domains that is executed immediately. + * + * @param {object} options A specific set of options for this context [optional] + * @param {function} func The callback to be immediately executed within the context + * @param {array} args An array of arguments to be called with the callback [optional] + */ + context: function(options, func, args) { + if (isFunction(options)) { + args = func || []; + func = options; + options = undefined; + } + return this.wrap(options, func).apply(this, args); + }, -function safeJoin(input, delimiter) { - if (!isArray$1(input)) return ''; - var output = []; + /* + * Wrap code within a context and returns back a new function to be executed + * + * @param {object} options A specific set of options for this context [optional] + * @param {function} func The function to be wrapped in a new context + * @param {function} func A function to call before the try/catch wrapper [optional, private] + * @return {function} The newly wrapped functions with a context + */ + wrap: function(options, func, _before) { + var self = this; + // 1 argument has been passed, and it's not a function + // so just return it + if (isUndefined(func) && !isFunction(options)) { + return options; + } - for (var i = 0; i < input.length; i++) { + // options is optional + if (isFunction(options)) { + func = options; + options = undefined; + } + + // At this point, we've passed along 2 arguments, and the second one + // is not a function either, so we'll just return the second argument. + if (!isFunction(func)) { + return func; + } + + // We don't wanna wrap it twice! try { - output.push(String(input[i])); + if (func.__raven__) { + return func; + } + + // If this has already been wrapped in the past, return that + if (func.__raven_wrapper__) { + return func.__raven_wrapper__; + } } catch (e) { - output.push('[value cannot be serialized]'); + // Just accessing custom props in some Selenium environments + // can cause a "Permission denied" exception (see raven-js#495). + // Bail on wrapping and return the function as-is (defers to window.onerror). + return func; } - } - - return output.join(delimiter); -} -var utils = { - isObject: isObject$1, - isError: isError$1, - isErrorEvent: isErrorEvent$1, - isUndefined: isUndefined$1, - isFunction: isFunction$1, - isPlainObject: isPlainObject, - isString: isString$1, - isArray: isArray$1, - isEmptyObject: isEmptyObject$1, - supportsErrorEvent: supportsErrorEvent, - supportsFetch: supportsFetch$1, - wrappedCallback: wrappedCallback, - each: each$1, - objectMerge: objectMerge$1, - truncate: truncate$1, - objectFrozen: objectFrozen$1, - hasKey: hasKey$1, - joinRegExp: joinRegExp$1, - urlencode: urlencode$1, - uuid4: uuid4$1, - htmlTreeAsString: htmlTreeAsString$1, - htmlElementAsString: htmlElementAsString, - isSameException: isSameException$1, - isSameStacktrace: isSameStacktrace$1, - parseUrl: parseUrl$1, - fill: fill$1, - safeJoin: safeJoin -}; + function wrapped() { + var args = [], + i = arguments.length, + deep = !options || (options && options.deep !== false); -/* - TraceKit - Cross brower stack traces + if (_before && isFunction(_before)) { + _before.apply(this, arguments); + } - This was originally forked from github.com/occ/TraceKit, but has since been - largely re-written and is now maintained as part of raven-js. Tests for - this are in test/vendor. + // Recursively wrap all of a function's arguments that are + // functions themselves. + while (i--) args[i] = deep ? self.wrap(options, arguments[i]) : arguments[i]; - MIT license -*/ + try { + // Attempt to invoke user-land function + // NOTE: If you are a Sentry user, and you are seeing this stack frame, it + // means Raven caught an error invoking your application code. This is + // expected behavior and NOT indicative of a bug with Raven.js. + return func.apply(this, args); + } catch (e) { + self._ignoreNextOnError(); + self.captureException(e, options); + throw e; + } + } -var TraceKit = { - collectWindowErrors: true, - debug: false -}; // This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) + // copy over properties of the old function + for (var property in func) { + if (hasKey(func, property)) { + wrapped[property] = func[property]; + } + } + wrapped.prototype = func.prototype; -var _window$2 = typeof window !== 'undefined' ? window : typeof commonjsGlobal !== 'undefined' ? commonjsGlobal : typeof self !== 'undefined' ? self : {}; // global reference to slice + func.__raven_wrapper__ = wrapped; + // Signal that this function has been wrapped/filled already + // for both debugging and to prevent it to being wrapped/filled twice + wrapped.__raven__ = true; + wrapped.__orig__ = func; + return wrapped; + }, -var _slice = [].slice; -var UNKNOWN_FUNCTION = '?'; // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error#Error_types + /** + * Uninstalls the global error handler. + * + * @return {Raven} + */ + uninstall: function() { + TraceKit.report.uninstall(); -var ERROR_TYPES_RE = /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/; + this._detachPromiseRejectionHandler(); + this._unpatchFunctionToString(); + this._restoreBuiltIns(); + this._restoreConsole(); -function getLocationHref() { - if (typeof document === 'undefined' || document.location == null) return ''; - return document.location.href; -} -/** - * TraceKit.report: cross-browser processing of unhandled exceptions - * - * Syntax: - * TraceKit.report.subscribe(function(stackInfo) { ... }) - * TraceKit.report.unsubscribe(function(stackInfo) { ... }) - * TraceKit.report(exception) - * try { ...code... } catch(ex) { TraceKit.report(ex); } - * - * Supports: - * - Firefox: full stack trace with line numbers, plus column number - * on top frame; column number is not guaranteed - * - Opera: full stack trace with line and column numbers - * - Chrome: full stack trace with line and column numbers - * - Safari: line and column number for the top frame only; some frames - * may be missing, and column number is not guaranteed - * - IE: line and column number for the top frame only; some frames - * may be missing, and column number is not guaranteed - * - * In theory, TraceKit should work on all of the following versions: - * - IE5.5+ (only 8.0 tested) - * - Firefox 0.9+ (only 3.5+ tested) - * - Opera 7+ (only 10.50 tested; versions 9 and earlier may require - * Exceptions Have Stacktrace to be enabled in opera:config) - * - Safari 3+ (only 4+ tested) - * - Chrome 1+ (only 5+ tested) - * - Konqueror 3.5+ (untested) - * - * Requires TraceKit.computeStackTrace. - * - * Tries to catch all unhandled exceptions and report them to the - * subscribed handlers. Please note that TraceKit.report will rethrow the - * exception. This is REQUIRED in order to get a useful stack trace in IE. - * If the exception does not reach the top of the browser, you will only - * get a stack trace from the point where TraceKit.report was called. - * - * Handlers receive a stackInfo object as described in the - * TraceKit.computeStackTrace docs. - */ + Error.stackTraceLimit = this._originalErrorStackTraceLimit; + this._isRavenInstalled = false; + return this; + }, -TraceKit.report = function reportModuleWrapper() { - var handlers = [], - lastArgs = null, - lastException = null, - lastExceptionStack = null; /** - * Add a crash handler. - * @param {Function} handler - */ + * Callback used for `unhandledrejection` event + * + * @param {PromiseRejectionEvent} event An object containing + * promise: the Promise that was rejected + * reason: the value with which the Promise was rejected + * @return void + */ + _promiseRejectionHandler: function(event) { + this._logDebug('debug', 'Raven caught unhandled promise rejection:', event); + this.captureException(event.reason, { + extra: { + unhandledPromiseRejection: true + } + }); + }, - function subscribe(handler) { - installGlobalHandler(); - handlers.push(handler); - } /** - * Remove a crash handler. - * @param {Function} handler - */ + * Installs the global promise rejection handler. + * + * @return {raven} + */ + _attachPromiseRejectionHandler: function() { + this._promiseRejectionHandler = this._promiseRejectionHandler.bind(this); + _window.addEventListener && + _window.addEventListener('unhandledrejection', this._promiseRejectionHandler); + return this; + }, + /** + * Uninstalls the global promise rejection handler. + * + * @return {raven} + */ + _detachPromiseRejectionHandler: function() { + _window.removeEventListener && + _window.removeEventListener('unhandledrejection', this._promiseRejectionHandler); + return this; + }, - function unsubscribe(handler) { - for (var i = handlers.length - 1; i >= 0; --i) { - if (handlers[i] === handler) { - handlers.splice(i, 1); + /** + * Manually capture an exception and send it over to Sentry + * + * @param {error} ex An exception to be logged + * @param {object} options A specific set of options for this error [optional] + * @return {Raven} + */ + captureException: function(ex, options) { + options = objectMerge({trimHeadFrames: 0}, options ? options : {}); + + if (isErrorEvent(ex) && ex.error) { + // If it is an ErrorEvent with `error` property, extract it to get actual Error + ex = ex.error; + } else if (isError(ex)) { + // we have a real Error object + ex = ex; + } else if (isPlainObject(ex)) { + // If it is plain Object, serialize it manually and extract options + // This will allow us to group events based on top-level keys + // which is much better than creating new group when any key/value change + options = this._getCaptureExceptionOptionsFromPlainObject(options, ex); + ex = new Error(options.message); + } else { + // If none of previous checks were valid, then it means that + // it's not a plain Object + // it's not a valid ErrorEvent (one with an error property) + // it's not an Error + // So bail out and capture it as a simple message: + return this.captureMessage( + ex, + objectMerge(options, { + stacktrace: true, // if we fall back to captureMessage, default to attempting a new trace + trimHeadFrames: options.trimHeadFrames + 1 + }) + ); + } + + // Store the raw exception object for potential debugging and introspection + this._lastCapturedException = ex; + + // TraceKit.report will re-raise any exception passed to it, + // which means you have to wrap it in try/catch. Instead, we + // can wrap it here and only re-raise if TraceKit.report + // raises an exception different from the one we asked to + // report on. + try { + var stack = TraceKit.computeStackTrace(ex); + this._handleStackInfo(stack, options); + } catch (ex1) { + if (ex !== ex1) { + throw ex1; } } - } - /** - * Remove all crash handlers. - */ - - function unsubscribeAll() { - uninstallGlobalHandler(); - handlers = []; - } - /** - * Dispatch stack information to all handlers. - * @param {Object.} stack - */ + return this; + }, + _getCaptureExceptionOptionsFromPlainObject: function(currentOptions, ex) { + var exKeys = Object.keys(ex).sort(); + var options = objectMerge(currentOptions, { + message: + 'Non-Error exception captured with keys: ' + serializeKeysForMessage(exKeys), + fingerprint: [md5(exKeys)], + extra: currentOptions.extra || {} + }); + options.extra.__serialized__ = serializeException(ex); - function notifyHandlers(stack, isWindowError) { - var exception = null; + return options; + }, - if (isWindowError && !TraceKit.collectWindowErrors) { + /* + * Manually send a message to Sentry + * + * @param {string} msg A plain message to be captured in Sentry + * @param {object} options A specific set of options for this message [optional] + * @return {Raven} + */ + captureMessage: function(msg, options) { + // config() automagically converts ignoreErrors from a list to a RegExp so we need to test for an + // early call; we'll error on the side of logging anything called before configuration since it's + // probably something you should see: + if ( + !!this._globalOptions.ignoreErrors.test && + this._globalOptions.ignoreErrors.test(msg) + ) { return; } - for (var i in handlers) { - if (handlers.hasOwnProperty(i)) { - try { - handlers[i].apply(null, [stack].concat(_slice.call(arguments, 2))); - } catch (inner) { - exception = inner; - } - } - } - - if (exception) { - throw exception; - } - } - - var _oldOnerrorHandler, _onErrorHandlerInstalled; - /** - * Ensures all global unhandled exceptions are recorded. - * Supported by Gecko and IE. - * @param {string} msg Error message. - * @param {string} url URL of script that generated the exception. - * @param {(number|string)} lineNo The line number at which the error - * occurred. - * @param {?(number|string)} colNo The column number at which the error - * occurred. - * @param {?Error} ex The actual Error object. - */ + options = options || {}; + msg = msg + ''; // Make sure it's actually a string + var data = objectMerge( + { + message: msg + }, + options + ); - function traceKitWindowOnError(msg, url, lineNo, colNo, ex) { - var stack = null; // If 'ex' is ErrorEvent, get real Error from inside - - var exception = utils.isErrorEvent(ex) ? ex.error : ex; // If 'msg' is ErrorEvent, get real message from inside + var ex; + // Generate a "synthetic" stack trace from this point. + // NOTE: If you are a Sentry user, and you are seeing this stack frame, it is NOT indicative + // of a bug with Raven.js. Sentry generates synthetic traces either by configuration, + // or if it catches a thrown object without a "stack" property. + try { + throw new Error(msg); + } catch (ex1) { + ex = ex1; + } - var message = utils.isErrorEvent(msg) ? msg.message : msg; + // null exception name so `Error` isn't prefixed to msg + ex.name = null; + var stack = TraceKit.computeStackTrace(ex); - if (lastExceptionStack) { - TraceKit.computeStackTrace.augmentStackTraceWithInitialElement(lastExceptionStack, url, lineNo, message); - processLastException(); - } else if (exception && utils.isError(exception)) { - // non-string `exception` arg; attempt to extract stack trace - // New chrome and blink send along a real error object - // Let's just report that like a normal error. - // See: https://mikewest.org/2013/08/debugging-runtime-errors-with-window-onerror - stack = TraceKit.computeStackTrace(exception); - notifyHandlers(stack, true); - } else { - var location = { - url: url, - line: lineNo, - column: colNo - }; - var name = undefined; - var groups; + // stack[0] is `throw new Error(msg)` call itself, we are interested in the frame that was just before that, stack[1] + var initialCall = isArray(stack.stack) && stack.stack[1]; - if ({}.toString.call(message) === '[object String]') { - var groups = message.match(ERROR_TYPES_RE); + // if stack[1] is `Raven.captureException`, it means that someone passed a string to it and we redirected that call + // to be handled by `captureMessage`, thus `initialCall` is the 3rd one, not 2nd + // initialCall => captureException(string) => captureMessage(string) + if (initialCall && initialCall.func === 'Raven.captureException') { + initialCall = stack.stack[2]; + } - if (groups) { - name = groups[1]; - message = groups[2]; - } - } + var fileurl = (initialCall && initialCall.url) || ''; - location.func = UNKNOWN_FUNCTION; - stack = { - name: name, - message: message, - url: getLocationHref(), - stack: [location] - }; - notifyHandlers(stack, true); + if ( + !!this._globalOptions.ignoreUrls.test && + this._globalOptions.ignoreUrls.test(fileurl) + ) { + return; } - if (_oldOnerrorHandler) { - return _oldOnerrorHandler.apply(this, arguments); + if ( + !!this._globalOptions.whitelistUrls.test && + !this._globalOptions.whitelistUrls.test(fileurl) + ) { + return; } - return false; - } + if (this._globalOptions.stacktrace || (options && options.stacktrace)) { + // fingerprint on msg, not stack trace (legacy behavior, could be revisited) + data.fingerprint = data.fingerprint == null ? msg : data.fingerprint; - function installGlobalHandler() { - if (_onErrorHandlerInstalled) { - return; - } + options = objectMerge( + { + trimHeadFrames: 0 + }, + options + ); + // Since we know this is a synthetic trace, the top frame (this function call) + // MUST be from Raven.js, so mark it for trimming + // We add to the trim counter so that callers can choose to trim extra frames, such + // as utility functions. + options.trimHeadFrames += 1; - _oldOnerrorHandler = _window$2.onerror; - _window$2.onerror = traceKitWindowOnError; - _onErrorHandlerInstalled = true; - } + var frames = this._prepareFrames(stack, options); + data.stacktrace = { + // Sentry expects frames oldest to newest + frames: frames.reverse() + }; + } - function uninstallGlobalHandler() { - if (!_onErrorHandlerInstalled) { - return; + // Make sure that fingerprint is always wrapped in an array + if (data.fingerprint) { + data.fingerprint = isArray(data.fingerprint) + ? data.fingerprint + : [data.fingerprint]; } - _window$2.onerror = _oldOnerrorHandler; - _onErrorHandlerInstalled = false; - _oldOnerrorHandler = undefined; - } + // Fire away! + this._send(data); - function processLastException() { - var _lastExceptionStack = lastExceptionStack, - _lastArgs = lastArgs; - lastArgs = null; - lastExceptionStack = null; - lastException = null; - notifyHandlers.apply(null, [_lastExceptionStack, false].concat(_lastArgs)); - } - /** - * Reports an unhandled Error to TraceKit. - * @param {Error} ex - * @param {?boolean} rethrow If false, do not re-throw the exception. - * Only used for window.onerror to not cause an infinite loop of - * rethrowing. - */ + return this; + }, + captureBreadcrumb: function(obj) { + var crumb = objectMerge( + { + timestamp: now() / 1000 + }, + obj + ); - function report(ex, rethrow) { - var args = _slice.call(arguments, 1); + if (isFunction(this._globalOptions.breadcrumbCallback)) { + var result = this._globalOptions.breadcrumbCallback(crumb); - if (lastExceptionStack) { - if (lastException === ex) { - return; // already caught by an inner catch block, ignore - } else { - processLastException(); + if (isObject(result) && !isEmptyObject(result)) { + crumb = result; + } else if (result === false) { + return this; } } - var stack = TraceKit.computeStackTrace(ex); - lastExceptionStack = stack; - lastException = ex; - lastArgs = args; // If the stack trace is incomplete, wait for 2 seconds for - // slow slow IE to see if onerror occurs or not before reporting - // this exception; otherwise, we will end up with an incomplete - // stack trace + this._breadcrumbs.push(crumb); + if (this._breadcrumbs.length > this._globalOptions.maxBreadcrumbs) { + this._breadcrumbs.shift(); + } + return this; + }, - setTimeout(function () { - if (lastException === ex) { - processLastException(); - } - }, stack.incomplete ? 2000 : 0); + addPlugin: function(plugin /*arg1, arg2, ... argN*/) { + var pluginArgs = [].slice.call(arguments, 1); - if (rethrow !== false) { - throw ex; // re-throw to propagate to the top level (and cause window.onerror) + this._plugins.push([plugin, pluginArgs]); + if (this._isRavenInstalled) { + this._drainPlugins(); } - } - report.subscribe = subscribe; - report.unsubscribe = unsubscribe; - report.uninstall = unsubscribeAll; - return report; -}(); -/** - * TraceKit.computeStackTrace: cross-browser stack traces in JavaScript - * - * Syntax: - * s = TraceKit.computeStackTrace(exception) // consider using TraceKit.report instead (see below) - * Returns: - * s.name - exception name - * s.message - exception message - * s.stack[i].url - JavaScript or HTML file URL - * s.stack[i].func - function name, or empty for anonymous functions (if guessing did not work) - * s.stack[i].args - arguments passed to the function, if known - * s.stack[i].line - line number, if known - * s.stack[i].column - column number, if known - * - * Supports: - * - Firefox: full stack trace with line numbers and unreliable column - * number on top frame - * - Opera 10: full stack trace with line and column numbers - * - Opera 9-: full stack trace with line numbers - * - Chrome: full stack trace with line and column numbers - * - Safari: line and column number for the topmost stacktrace element - * only - * - IE: no line numbers whatsoever - * - * Tries to guess names of anonymous functions by looking for assignments - * in the source code. In IE and Safari, we have to guess source file names - * by searching for function bodies inside all page scripts. This will not - * work for scripts that are loaded cross-domain. - * Here be dragons: some function names may be guessed incorrectly, and - * duplicate functions may be mismatched. - * - * TraceKit.computeStackTrace should only be used for tracing purposes. - * Logging of unhandled exceptions should be done with TraceKit.report, - * which builds on top of TraceKit.computeStackTrace and provides better - * IE support by utilizing the window.onerror event to retrieve information - * about the top of the stack. - * - * Note: In IE and Safari, no stack trace is recorded on the Error object, - * so computeStackTrace instead walks its *own* chain of callers. - * This means that: - * * in Safari, some methods may be missing from the stack trace; - * * in IE, the topmost function in the stack trace will always be the - * caller of computeStackTrace. - * - * This is okay for tracing (because you are likely to be calling - * computeStackTrace from the function you want to be the topmost element - * of the stack trace anyway), but not okay for logging unhandled - * exceptions (because your catch block will likely be far away from the - * inner function that actually caused the exception). - * - */ + return this; + }, + /* + * Set/clear a user to be sent along with the payload. + * + * @param {object} user An object representing user data [optional] + * @return {Raven} + */ + setUserContext: function(user) { + // Intentionally do not merge here since that's an unexpected behavior. + this._globalContext.user = user; -TraceKit.computeStackTrace = function computeStackTraceWrapper() { - // Contents of Exception in various browsers. - // - // SAFARI: - // ex.message = Can't find variable: qq - // ex.line = 59 - // ex.sourceId = 580238192 - // ex.sourceURL = http://... - // ex.expressionBeginOffset = 96 - // ex.expressionCaretOffset = 98 - // ex.expressionEndOffset = 98 - // ex.name = ReferenceError - // - // FIREFOX: - // ex.message = qq is not defined - // ex.fileName = http://... - // ex.lineNumber = 59 - // ex.columnNumber = 69 - // ex.stack = ...stack trace... (see the example below) - // ex.name = ReferenceError - // - // CHROME: - // ex.message = qq is not defined - // ex.name = ReferenceError - // ex.type = not_defined - // ex.arguments = ['aa'] - // ex.stack = ...stack trace... - // - // INTERNET EXPLORER: - // ex.message = ... - // ex.name = ReferenceError - // - // OPERA: - // ex.message = ...message... (see the example below) - // ex.name = ReferenceError - // ex.opera#sourceloc = 11 (pretty much useless, duplicates the info in ex.message) - // ex.stacktrace = n/a; see 'opera:config#UserPrefs|Exceptions Have Stacktrace' + return this; + }, - /** - * Computes stack trace information from the stack property. - * Chrome and Gecko use this property. - * @param {Error} ex - * @return {?Object.} Stack trace information. + /* + * Merge extra attributes to be sent along with the payload. + * + * @param {object} extra An object representing extra data [optional] + * @return {Raven} */ - function computeStackTraceFromStackProp(ex) { - if (typeof ex.stack === 'undefined' || !ex.stack) return; - var chrome = /^\s*at (.*?) ?\(((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i, - gecko = /^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|\[native).*?|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i, - winjs = /^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i, - // Used to additionally parse URL/line/column from eval frames - geckoEval = /(\S+) line (\d+)(?: > eval line \d+)* > eval/i, - chromeEval = /\((\S*)(?::(\d+))(?::(\d+))\)/, - lines = ex.stack.split('\n'), - stack = [], - submatch, - parts, - element, - reference = /^(.*) is undefined$/.exec(ex.message); + setExtraContext: function(extra) { + this._mergeContext('extra', extra); - for (var i = 0, j = lines.length; i < j; ++i) { - if (parts = chrome.exec(lines[i])) { - var isNative = parts[2] && parts[2].indexOf('native') === 0; // start of line + return this; + }, - var isEval = parts[2] && parts[2].indexOf('eval') === 0; // start of line + /* + * Merge tags to be sent along with the payload. + * + * @param {object} tags An object representing tags [optional] + * @return {Raven} + */ + setTagsContext: function(tags) { + this._mergeContext('tags', tags); - if (isEval && (submatch = chromeEval.exec(parts[2]))) { - // throw out eval line/column and use top-most line/column number - parts[2] = submatch[1]; // url + return this; + }, - parts[3] = submatch[2]; // line + /* + * Clear all of the context. + * + * @return {Raven} + */ + clearContext: function() { + this._globalContext = {}; - parts[4] = submatch[3]; // column - } - - element = { - url: !isNative ? parts[2] : null, - func: parts[1] || UNKNOWN_FUNCTION, - args: isNative ? [parts[2]] : [], - line: parts[3] ? +parts[3] : null, - column: parts[4] ? +parts[4] : null - }; - } else if (parts = winjs.exec(lines[i])) { - element = { - url: parts[2], - func: parts[1] || UNKNOWN_FUNCTION, - args: [], - line: +parts[3], - column: parts[4] ? +parts[4] : null - }; - } else if (parts = gecko.exec(lines[i])) { - var isEval = parts[3] && parts[3].indexOf(' > eval') > -1; - - if (isEval && (submatch = geckoEval.exec(parts[3]))) { - // throw out eval line/column and use top-most line number - parts[3] = submatch[1]; - parts[4] = submatch[2]; - parts[5] = null; // no column when eval - } else if (i === 0 && !parts[5] && typeof ex.columnNumber !== 'undefined') { - // FireFox uses this awesome columnNumber property for its top frame - // Also note, Firefox's column number is 0-based and everything else expects 1-based, - // so adding 1 - // NOTE: this hack doesn't work if top-most frame is eval - stack[0].column = ex.columnNumber + 1; - } - - element = { - url: parts[3], - func: parts[1] || UNKNOWN_FUNCTION, - args: parts[2] ? parts[2].split(',') : [], - line: parts[4] ? +parts[4] : null, - column: parts[5] ? +parts[5] : null - }; - } else { - continue; - } + return this; + }, - if (!element.func && element.line) { - element.func = UNKNOWN_FUNCTION; - } + /* + * Get a copy of the current context. This cannot be mutated. + * + * @return {object} copy of context + */ + getContext: function() { + // lol javascript + return JSON.parse(stringify(this._globalContext)); + }, - stack.push(element); - } + /* + * Set environment of application + * + * @param {string} environment Typically something like 'production'. + * @return {Raven} + */ + setEnvironment: function(environment) { + this._globalOptions.environment = environment; - if (!stack.length) { - return null; - } + return this; + }, - return { - name: ex.name, - message: ex.message, - url: getLocationHref(), - stack: stack - }; - } - /** - * Adds information about the first frame to incomplete stack traces. - * Safari and IE require this to get complete data on the first frame. - * @param {Object.} stackInfo Stack trace information from - * one of the compute* methods. - * @param {string} url The URL of the script that caused an error. - * @param {(number|string)} lineNo The line number of the script that - * caused an error. - * @param {string=} message The error generated by the browser, which - * hopefully contains the name of the object that caused the error. - * @return {boolean} Whether or not the stack information was - * augmented. + /* + * Set release version of application + * + * @param {string} release Typically something like a git SHA to identify version + * @return {Raven} */ + setRelease: function(release) { + this._globalOptions.release = release; + return this; + }, - function augmentStackTraceWithInitialElement(stackInfo, url, lineNo, message) { - var initial = { - url: url, - line: lineNo - }; + /* + * Set the dataCallback option + * + * @param {function} callback The callback to run which allows the + * data blob to be mutated before sending + * @return {Raven} + */ + setDataCallback: function(callback) { + var original = this._globalOptions.dataCallback; + this._globalOptions.dataCallback = keepOriginalCallback(original, callback); + return this; + }, - if (initial.url && initial.line) { - stackInfo.incomplete = false; + /* + * Set the breadcrumbCallback option + * + * @param {function} callback The callback to run which allows filtering + * or mutating breadcrumbs + * @return {Raven} + */ + setBreadcrumbCallback: function(callback) { + var original = this._globalOptions.breadcrumbCallback; + this._globalOptions.breadcrumbCallback = keepOriginalCallback(original, callback); + return this; + }, - if (!initial.func) { - initial.func = UNKNOWN_FUNCTION; - } + /* + * Set the shouldSendCallback option + * + * @param {function} callback The callback to run which allows + * introspecting the blob before sending + * @return {Raven} + */ + setShouldSendCallback: function(callback) { + var original = this._globalOptions.shouldSendCallback; + this._globalOptions.shouldSendCallback = keepOriginalCallback(original, callback); + return this; + }, - if (stackInfo.stack.length > 0) { - if (stackInfo.stack[0].url === initial.url) { - if (stackInfo.stack[0].line === initial.line) { - return false; // already in stack trace - } else if (!stackInfo.stack[0].line && stackInfo.stack[0].func === initial.func) { - stackInfo.stack[0].line = initial.line; - return false; - } - } - } + /** + * Override the default HTTP transport mechanism that transmits data + * to the Sentry server. + * + * @param {function} transport Function invoked instead of the default + * `makeRequest` handler. + * + * @return {Raven} + */ + setTransport: function(transport) { + this._globalOptions.transport = transport; - stackInfo.stack.unshift(initial); - stackInfo.partial = true; - return true; - } else { - stackInfo.incomplete = true; - } + return this; + }, - return false; - } - /** - * Computes stack trace information by walking the arguments.caller - * chain at the time the exception occurred. This will cause earlier - * frames to be missed but is the only way to get any stack trace in - * Safari and IE. The top frame is restored by - * {@link augmentStackTraceWithInitialElement}. - * @param {Error} ex - * @return {?Object.} Stack trace information. + /* + * Get the latest raw exception that was captured by Raven. + * + * @return {error} */ + lastException: function() { + return this._lastCapturedException; + }, + /* + * Get the last event id + * + * @return {string} + */ + lastEventId: function() { + return this._lastEventId; + }, - function computeStackTraceByWalkingCallerChain(ex, depth) { - var functionName = /function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i, - stack = [], - funcs = {}, - recursion = false, - parts, - item; - - for (var curr = computeStackTraceByWalkingCallerChain.caller; curr && !recursion; curr = curr.caller) { - if (curr === computeStackTrace || curr === TraceKit.report) { - // console.log('skipping internal function'); - continue; + /* + * Determine if Raven is setup and ready to go. + * + * @return {boolean} + */ + isSetup: function() { + if (!this._hasJSON) return false; // needs JSON support + if (!this._globalServer) { + if (!this.ravenNotConfiguredError) { + this.ravenNotConfiguredError = true; + this._logDebug('error', 'Error: Raven has not been configured.'); } + return false; + } + return true; + }, - item = { - url: null, - func: UNKNOWN_FUNCTION, - line: null, - column: null - }; + afterLoad: function() { + // TODO: remove window dependence? - if (curr.name) { - item.func = curr.name; - } else if (parts = functionName.exec(curr.toString())) { - item.func = parts[1]; - } + // Attempt to initialize Raven on load + var RavenConfig = _window.RavenConfig; + if (RavenConfig) { + this.config(RavenConfig.dsn, RavenConfig.config).install(); + } + }, - if (typeof item.func === 'undefined') { - try { - item.func = parts.input.substring(0, parts.input.indexOf('{')); - } catch (e) {} - } + showReportDialog: function(options) { + if ( + !_document // doesn't work without a document (React native) + ) + return; - if (funcs['' + curr]) { - recursion = true; - } else { - funcs['' + curr] = true; - } + options = options || {}; - stack.push(item); + var lastEventId = options.eventId || this.lastEventId(); + if (!lastEventId) { + throw new RavenConfigError('Missing eventId'); } - if (depth) { - // console.log('depth is ' + depth); - // console.log('stack is ' + stack.length); - stack.splice(0, depth); + var dsn = options.dsn || this._dsn; + if (!dsn) { + throw new RavenConfigError('Missing DSN'); } - var result = { - name: ex.name, - message: ex.message, - url: getLocationHref(), - stack: stack - }; - augmentStackTraceWithInitialElement(result, ex.sourceURL || ex.fileName, ex.line || ex.lineNumber, ex.message || ex.description); - return result; - } - /** - * Computes a stack trace for an exception. - * @param {Error} ex - * @param {(string|number)=} depth - */ - + var encode = encodeURIComponent; + var qs = ''; + qs += '?eventId=' + encode(lastEventId); + qs += '&dsn=' + encode(dsn); - function computeStackTrace(ex, depth) { - var stack = null; - depth = depth == null ? 0 : +depth; + var user = options.user || this._globalContext.user; + if (user) { + if (user.name) qs += '&name=' + encode(user.name); + if (user.email) qs += '&email=' + encode(user.email); + } - try { - stack = computeStackTraceFromStackProp(ex); + var globalServer = this._getGlobalServer(this._parseDSN(dsn)); - if (stack) { - return stack; - } - } catch (e) { - if (TraceKit.debug) { - throw e; - } - } - - try { - stack = computeStackTraceByWalkingCallerChain(ex, depth + 1); - - if (stack) { - return stack; - } - } catch (e) { - if (TraceKit.debug) { - throw e; - } - } + var script = _document.createElement('script'); + script.async = true; + script.src = globalServer + '/api/embed/error-page/' + qs; + (_document.head || _document.body).appendChild(script); + }, - return { - name: ex.name, - message: ex.message, - url: getLocationHref() - }; - } + /**** Private functions ****/ + _ignoreNextOnError: function() { + var self = this; + this._ignoreOnError += 1; + setTimeout(function() { + // onerror should trigger before setTimeout + self._ignoreOnError -= 1; + }); + }, - computeStackTrace.augmentStackTraceWithInitialElement = augmentStackTraceWithInitialElement; - computeStackTrace.computeStackTraceFromStackProp = computeStackTraceFromStackProp; - return computeStackTrace; -}(); + _triggerEvent: function(eventType, options) { + // NOTE: `event` is a native browser thing, so let's avoid conflicting wiht it + var evt, key; -var tracekit = TraceKit; + if (!this._hasDocument) return; -var stringify_1 = createCommonjsModule(function (module, exports) { - /* - json-stringify-safe - Like JSON.stringify, but doesn't throw on circular references. - - Originally forked from https://github.com/isaacs/json-stringify-safe - version 5.0.1 on 3/8/2017 and modified to handle Errors serialization - and IE8 compatibility. Tests for this are in test/vendor. - - ISC license: https://github.com/isaacs/json-stringify-safe/blob/master/LICENSE - */ - exports = module.exports = stringify; - exports.getSerialize = serializer; - - function indexOf(haystack, needle) { - for (var i = 0; i < haystack.length; ++i) { - if (haystack[i] === needle) return i; - } - - return -1; - } + options = options || {}; - function stringify(obj, replacer, spaces, cycleReplacer) { - return JSON.stringify(obj, serializer(replacer, cycleReplacer), spaces); - } // https://github.com/ftlabs/js-abbreviate/blob/fa709e5f139e7770a71827b1893f22418097fbda/index.js#L95-L106 + eventType = 'raven' + eventType.substr(0, 1).toUpperCase() + eventType.substr(1); + if (_document.createEvent) { + evt = _document.createEvent('HTMLEvents'); + evt.initEvent(eventType, true, true); + } else { + evt = _document.createEventObject(); + evt.eventType = eventType; + } - function stringifyError(value) { - var err = { - // These properties are implemented as magical getters and don't show up in for in - stack: value.stack, - message: value.message, - name: value.name - }; + for (key in options) + if (hasKey(options, key)) { + evt[key] = options[key]; + } - for (var i in value) { - if (Object.prototype.hasOwnProperty.call(value, i)) { - err[i] = value[i]; + if (_document.createEvent) { + // IE9 if standards + _document.dispatchEvent(evt); + } else { + // IE8 regardless of Quirks or Standards + // IE9 if quirks + try { + _document.fireEvent('on' + evt.eventType.toLowerCase(), evt); + } catch (e) { + // Do nothing } } + }, - return err; - } - - function serializer(replacer, cycleReplacer) { - var stack = []; - var keys = []; - - if (cycleReplacer == null) { - cycleReplacer = function cycleReplacer(key, value) { - if (stack[0] === value) { - return '[Circular ~]'; - } + /** + * Wraps addEventListener to capture UI breadcrumbs + * @param evtName the event name (e.g. "click") + * @returns {Function} + * @private + */ + _breadcrumbEventHandler: function(evtName) { + var self = this; + return function(evt) { + // reset keypress timeout; e.g. triggering a 'click' after + // a 'keypress' will reset the keypress debounce so that a new + // set of keypresses can be recorded + self._keypressTimeout = null; - return '[Circular ~.' + keys.slice(0, indexOf(stack, value)).join('.') + ']'; - }; - } + // It's possible this handler might trigger multiple times for the same + // event (e.g. event propagation through node ancestors). Ignore if we've + // already captured the event. + if (self._lastCapturedEvent === evt) return; - return function (key, value) { - if (stack.length > 0) { - var thisPos = indexOf(stack, this); - ~thisPos ? stack.splice(thisPos + 1) : stack.push(this); - ~thisPos ? keys.splice(thisPos, Infinity, key) : keys.push(key); + self._lastCapturedEvent = evt; - if (~indexOf(stack, value)) { - value = cycleReplacer.call(this, key, value); - } - } else { - stack.push(value); + // try/catch both: + // - accessing evt.target (see getsentry/raven-js#838, #768) + // - `htmlTreeAsString` because it's complex, and just accessing the DOM incorrectly + // can throw an exception in some circumstances. + var target; + try { + target = htmlTreeAsString(evt.target); + } catch (e) { + target = ''; } - return replacer == null ? value instanceof Error ? stringifyError(value) : value : replacer.call(this, key, value); + self.captureBreadcrumb({ + category: 'ui.' + evtName, // e.g. ui.click, ui.input + message: target + }); }; - } -}); -var stringify_2 = stringify_1.getSerialize; - -function RavenConfigError(message) { - this.name = 'RavenConfigError'; - this.message = message; -} - -RavenConfigError.prototype = new Error(); -RavenConfigError.prototype.constructor = RavenConfigError; -var configError = RavenConfigError; + }, -var wrapMethod = function wrapMethod(console, level, callback) { - var originalConsoleLevel = console[level]; - var originalConsole = console; + /** + * Wraps addEventListener to capture keypress UI events + * @returns {Function} + * @private + */ + _keypressEventHandler: function() { + var self = this, + debounceDuration = 1000; // milliseconds - if (!(level in console)) { - return; - } + // TODO: if somehow user switches keypress target before + // debounce timeout is triggered, we will only capture + // a single breadcrumb from the FIRST target (acceptable?) + return function(evt) { + var target; + try { + target = evt.target; + } catch (e) { + // just accessing event properties can throw an exception in some rare circumstances + // see: https://github.com/getsentry/raven-js/issues/838 + return; + } + var tagName = target && target.tagName; - var sentryLevel = level === 'warn' ? 'warning' : level; + // only consider keypress events on actual input elements + // this will disregard keypresses targeting body (e.g. tabbing + // through elements, hotkeys, etc) + if ( + !tagName || + (tagName !== 'INPUT' && tagName !== 'TEXTAREA' && !target.isContentEditable) + ) + return; - console[level] = function () { - var args = [].slice.call(arguments); - var msg = utils.safeJoin(args, ' '); - var data = { - level: sentryLevel, - logger: 'console', - extra: { - arguments: args + // record first keypress in a series, but ignore subsequent + // keypresses until debounce clears + var timeout = self._keypressTimeout; + if (!timeout) { + self._breadcrumbEventHandler('input')(evt); } + clearTimeout(timeout); + self._keypressTimeout = setTimeout(function() { + self._keypressTimeout = null; + }, debounceDuration); }; + }, - if (level === 'assert') { - if (args[0] === false) { - // Default browsers message - msg = 'Assertion failed: ' + (utils.safeJoin(args.slice(1), ' ') || 'console.assert'); - data.extra.arguments = args.slice(1); - callback && callback(msg, data); - } - } else { - callback && callback(msg, data); - } // this fails for some browsers. :( - + /** + * Captures a breadcrumb of type "navigation", normalizing input URLs + * @param to the originating URL + * @param from the target URL + * @private + */ + _captureUrlChange: function(from, to) { + var parsedLoc = parseUrl(this._location.href); + var parsedTo = parseUrl(to); + var parsedFrom = parseUrl(from); - if (originalConsoleLevel) { - // IE9 doesn't allow calling apply on console functions directly - // See: https://stackoverflow.com/questions/5472938/does-ie9-support-console-log-and-is-it-a-real-function#answer-5473193 - Function.prototype.apply.call(originalConsoleLevel, originalConsole, args); - } - }; -}; + // because onpopstate only tells you the "new" (to) value of location.href, and + // not the previous (from) value, we need to track the value of the current URL + // state ourselves + this._lastHref = to; -var console$1 = { - wrapMethod: wrapMethod -}; + // Use only the path component of the URL if the URL matches the current + // document (almost all the time when using pushState) + if (parsedLoc.protocol === parsedTo.protocol && parsedLoc.host === parsedTo.host) + to = parsedTo.relative; + if (parsedLoc.protocol === parsedFrom.protocol && parsedLoc.host === parsedFrom.host) + from = parsedFrom.relative; -/*global XDomainRequest:false */ + this.captureBreadcrumb({ + category: 'navigation', + data: { + to: to, + from: from + } + }); + }, -var isError = utils.isError; -var isObject = utils.isObject; -var isErrorEvent = utils.isErrorEvent; -var isUndefined = utils.isUndefined; -var isFunction = utils.isFunction; -var isString = utils.isString; -var isArray = utils.isArray; -var isEmptyObject = utils.isEmptyObject; -var each = utils.each; -var objectMerge = utils.objectMerge; -var truncate = utils.truncate; -var objectFrozen = utils.objectFrozen; -var hasKey = utils.hasKey; -var joinRegExp = utils.joinRegExp; -var urlencode = utils.urlencode; -var uuid4 = utils.uuid4; -var htmlTreeAsString = utils.htmlTreeAsString; -var isSameException = utils.isSameException; -var isSameStacktrace = utils.isSameStacktrace; -var parseUrl = utils.parseUrl; -var fill = utils.fill; -var supportsFetch = utils.supportsFetch; -var wrapConsoleMethod = console$1.wrapMethod; -var dsnKeys = 'source protocol user pass host port path'.split(' '); -var dsnPattern = /^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/; + _patchFunctionToString: function() { + var self = this; + self._originalFunctionToString = Function.prototype.toString; + // eslint-disable-next-line no-extend-native + Function.prototype.toString = function() { + if (typeof this === 'function' && this.__raven__) { + return self._originalFunctionToString.apply(this.__orig__, arguments); + } + return self._originalFunctionToString.apply(this, arguments); + }; + }, -function now() { - return +new Date(); -} // This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) + _unpatchFunctionToString: function() { + if (this._originalFunctionToString) { + // eslint-disable-next-line no-extend-native + Function.prototype.toString = this._originalFunctionToString; + } + }, + /** + * Wrap timer functions and event targets to catch errors and provide + * better metadata. + */ + _instrumentTryCatch: function() { + var self = this; -var _window$1 = typeof window !== 'undefined' ? window : typeof commonjsGlobal !== 'undefined' ? commonjsGlobal : typeof self !== 'undefined' ? self : {}; + var wrappedBuiltIns = self._wrappedBuiltIns; -var _document = _window$1.document; -var _navigator = _window$1.navigator; + function wrapTimeFn(orig) { + return function(fn, t) { + // preserve arity + // Make a copy of the arguments to prevent deoptimization + // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments + var args = new Array(arguments.length); + for (var i = 0; i < args.length; ++i) { + args[i] = arguments[i]; + } + var originalCallback = args[0]; + if (isFunction(originalCallback)) { + args[0] = self.wrap(originalCallback); + } -function keepOriginalCallback(original, callback) { - return isFunction(callback) ? function (data) { - return callback(data, original); - } : callback; -} // First, check for JSON support -// If there is no JSON, we no-op the core features of Raven -// since JSON is required to encode the payload + // IE < 9 doesn't support .call/.apply on setInterval/setTimeout, but it + // also supports only two arguments and doesn't care what this is, so we + // can just call the original function directly. + if (orig.apply) { + return orig.apply(this, args); + } else { + return orig(args[0], args[1]); + } + }; + } + var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; -function Raven$1() { - this._hasJSON = !!(_typeof(JSON) === 'object' && JSON.stringify); // Raven can run in contexts where there's no document (react-native) + function wrapEventTarget(global) { + var proto = _window[global] && _window[global].prototype; + if (proto && proto.hasOwnProperty && proto.hasOwnProperty('addEventListener')) { + fill( + proto, + 'addEventListener', + function(orig) { + return function(evtName, fn, capture, secure) { + // preserve arity + try { + if (fn && fn.handleEvent) { + fn.handleEvent = self.wrap(fn.handleEvent); + } + } catch (err) { + // can sometimes get 'Permission denied to access property "handle Event' + } - this._hasDocument = !isUndefined(_document); - this._hasNavigator = !isUndefined(_navigator); - this._lastCapturedException = null; - this._lastData = null; - this._lastEventId = null; - this._globalServer = null; - this._globalKey = null; - this._globalProject = null; - this._globalContext = {}; - this._globalOptions = { - // SENTRY_RELEASE can be injected by https://github.com/getsentry/sentry-webpack-plugin - release: _window$1.SENTRY_RELEASE && _window$1.SENTRY_RELEASE.id, - logger: 'javascript', - ignoreErrors: [], - ignoreUrls: [], - whitelistUrls: [], - includePaths: [], - headers: null, - collectWindowErrors: true, - maxMessageLength: 0, - // By default, truncates URL values to 250 chars - maxUrlLength: 250, - stackTraceLimit: 50, - autoBreadcrumbs: true, - instrument: true, - sampleRate: 1 - }; - this._fetchDefaults = { - method: 'POST', - keepalive: true, - referrerPolicy: 'origin' - }; - this._ignoreOnError = 0; - this._isRavenInstalled = false; - this._originalErrorStackTraceLimit = Error.stackTraceLimit; // capture references to window.console *and* all its methods first - // before the console plugin has a chance to monkey patch + // More breadcrumb DOM capture ... done here and not in `_instrumentBreadcrumbs` + // so that we don't have more than one wrapper function + var before, clickHandler, keypressHandler; + + if ( + autoBreadcrumbs && + autoBreadcrumbs.dom && + (global === 'EventTarget' || global === 'Node') + ) { + // NOTE: generating multiple handlers per addEventListener invocation, should + // revisit and verify we can just use one (almost certainly) + clickHandler = self._breadcrumbEventHandler('click'); + keypressHandler = self._keypressEventHandler(); + before = function(evt) { + // need to intercept every DOM event in `before` argument, in case that + // same wrapped method is re-used for different events (e.g. mousemove THEN click) + // see #724 + if (!evt) return; + + var eventType; + try { + eventType = evt.type; + } catch (e) { + // just accessing event properties can throw an exception in some rare circumstances + // see: https://github.com/getsentry/raven-js/issues/838 + return; + } + if (eventType === 'click') return clickHandler(evt); + else if (eventType === 'keypress') return keypressHandler(evt); + }; + } + return orig.call( + this, + evtName, + self.wrap(fn, undefined, before), + capture, + secure + ); + }; + }, + wrappedBuiltIns + ); + fill( + proto, + 'removeEventListener', + function(orig) { + return function(evt, fn, capture, secure) { + try { + fn = fn && (fn.__raven_wrapper__ ? fn.__raven_wrapper__ : fn); + } catch (e) { + // ignore, accessing __raven_wrapper__ will throw in some Selenium environments + } + return orig.call(this, evt, fn, capture, secure); + }; + }, + wrappedBuiltIns + ); + } + } - this._originalConsole = _window$1.console || {}; - this._originalConsoleMethods = {}; - this._plugins = []; - this._startTime = now(); - this._wrappedBuiltIns = []; - this._breadcrumbs = []; - this._lastCapturedEvent = null; - this._keypressTimeout; - this._location = _window$1.location; - this._lastHref = this._location && this._location.href; + fill(_window, 'setTimeout', wrapTimeFn, wrappedBuiltIns); + fill(_window, 'setInterval', wrapTimeFn, wrappedBuiltIns); + if (_window.requestAnimationFrame) { + fill( + _window, + 'requestAnimationFrame', + function(orig) { + return function(cb) { + return orig(self.wrap(cb)); + }; + }, + wrappedBuiltIns + ); + } + + // event targets borrowed from bugsnag-js: + // https://github.com/bugsnag/bugsnag-js/blob/master/src/bugsnag.js#L666 + var eventTargets = [ + 'EventTarget', + 'Window', + 'Node', + 'ApplicationCache', + 'AudioTrackList', + 'ChannelMergerNode', + 'CryptoOperation', + 'EventSource', + 'FileReader', + 'HTMLUnknownElement', + 'IDBDatabase', + 'IDBRequest', + 'IDBTransaction', + 'KeyOperation', + 'MediaController', + 'MessagePort', + 'ModalWindow', + 'Notification', + 'SVGElementInstance', + 'Screen', + 'TextTrack', + 'TextTrackCue', + 'TextTrackList', + 'WebSocket', + 'WebSocketWorker', + 'Worker', + 'XMLHttpRequest', + 'XMLHttpRequestEventTarget', + 'XMLHttpRequestUpload' + ]; + for (var i = 0; i < eventTargets.length; i++) { + wrapEventTarget(eventTargets[i]); + } + }, + + /** + * Instrument browser built-ins w/ breadcrumb capturing + * - XMLHttpRequests + * - DOM interactions (click/typing) + * - window.location changes + * - console + * + * Can be disabled or individually configured via the `autoBreadcrumbs` config option + */ + _instrumentBreadcrumbs: function() { + var self = this; + var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; - this._resetBackoff(); // eslint-disable-next-line guard-for-in + var wrappedBuiltIns = self._wrappedBuiltIns; + function wrapProp(prop, xhr) { + if (prop in xhr && isFunction(xhr[prop])) { + fill(xhr, prop, function(orig) { + return self.wrap(orig); + }); // intentionally don't track filled methods on XHR instances + } + } - for (var method in this._originalConsole) { - this._originalConsoleMethods[method] = this._originalConsole[method]; - } -} -/* - * The core Raven singleton - * - * @this {Raven} - */ + if (autoBreadcrumbs.xhr && 'XMLHttpRequest' in _window) { + var xhrproto = _window.XMLHttpRequest && _window.XMLHttpRequest.prototype; + fill( + xhrproto, + 'open', + function(origOpen) { + return function(method, url) { + // preserve arity + // if Sentry key appears in URL, don't capture + if (isString(url) && url.indexOf(self._globalKey) === -1) { + this.__raven_xhr = { + method: method, + url: url, + status_code: null + }; + } -Raven$1.prototype = { - // Hardcode version string so that raven source can be loaded directly via - // webpack (using a build step causes webpack #1617). Grunt verifies that - // this value matches package.json during build. - // See: https://github.com/getsentry/raven-js/issues/465 - VERSION: '3.22.2', - debug: false, - TraceKit: tracekit, - // alias to TraceKit + return origOpen.apply(this, arguments); + }; + }, + wrappedBuiltIns + ); + + fill( + xhrproto, + 'send', + function(origSend) { + return function() { + // preserve arity + var xhr = this; - /* - * Configure Raven with a DSN and extra options - * - * @param {string} dsn The public Sentry DSN - * @param {object} options Set of global options [optional] - * @return {Raven} - */ - config: function config(dsn, options) { - var self = this; + function onreadystatechangeHandler() { + if (xhr.__raven_xhr && xhr.readyState === 4) { + try { + // touching statusCode in some platforms throws + // an exception + xhr.__raven_xhr.status_code = xhr.status; + } catch (e) { + /* do nothing */ + } - if (self._globalServer) { - this._logDebug('error', 'Error: Raven has already been configured'); + self.captureBreadcrumb({ + type: 'http', + category: 'xhr', + data: xhr.__raven_xhr + }); + } + } - return self; - } + var props = ['onload', 'onerror', 'onprogress']; + for (var j = 0; j < props.length; j++) { + wrapProp(props[j], xhr); + } - if (!dsn) return self; - var globalOptions = self._globalOptions; // merge in options + if ('onreadystatechange' in xhr && isFunction(xhr.onreadystatechange)) { + fill( + xhr, + 'onreadystatechange', + function(orig) { + return self.wrap(orig, undefined, onreadystatechangeHandler); + } /* intentionally don't track this instrumentation */ + ); + } else { + // if onreadystatechange wasn't actually set by the page on this xhr, we + // are free to set our own and capture the breadcrumb + xhr.onreadystatechange = onreadystatechangeHandler; + } - if (options) { - each(options, function (key, value) { - // tags and extra are special and need to be put into context - if (key === 'tags' || key === 'extra' || key === 'user') { - self._globalContext[key] = value; - } else { - globalOptions[key] = value; - } - }); + return origSend.apply(this, arguments); + }; + }, + wrappedBuiltIns + ); } - self.setDSN(dsn); // "Script error." is hard coded into browsers for errors that it can't read. - // this is the result of a script being pulled in from an external domain and CORS. + if (autoBreadcrumbs.xhr && supportsFetch()) { + fill( + _window, + 'fetch', + function(origFetch) { + return function() { + // preserve arity + // Make a copy of the arguments to prevent deoptimization + // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments + var args = new Array(arguments.length); + for (var i = 0; i < args.length; ++i) { + args[i] = arguments[i]; + } - globalOptions.ignoreErrors.push(/^Script error\.?$/); - globalOptions.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/); // join regexp rules into one big rule + var fetchInput = args[0]; + var method = 'GET'; + var url; - globalOptions.ignoreErrors = joinRegExp(globalOptions.ignoreErrors); - globalOptions.ignoreUrls = globalOptions.ignoreUrls.length ? joinRegExp(globalOptions.ignoreUrls) : false; - globalOptions.whitelistUrls = globalOptions.whitelistUrls.length ? joinRegExp(globalOptions.whitelistUrls) : false; - globalOptions.includePaths = joinRegExp(globalOptions.includePaths); - globalOptions.maxBreadcrumbs = Math.max(0, Math.min(globalOptions.maxBreadcrumbs || 100, 100)); // default and hard limit is 100 + if (typeof fetchInput === 'string') { + url = fetchInput; + } else if ('Request' in _window && fetchInput instanceof _window.Request) { + url = fetchInput.url; + if (fetchInput.method) { + method = fetchInput.method; + } + } else { + url = '' + fetchInput; + } - var autoBreadcrumbDefaults = { - xhr: true, - console: true, - dom: true, - location: true, - sentry: true - }; - var autoBreadcrumbs = globalOptions.autoBreadcrumbs; + // if Sentry key appears in URL, don't capture, as it's our own request + if (url.indexOf(self._globalKey) !== -1) { + return origFetch.apply(this, args); + } - if ({}.toString.call(autoBreadcrumbs) === '[object Object]') { - autoBreadcrumbs = objectMerge(autoBreadcrumbDefaults, autoBreadcrumbs); - } else if (autoBreadcrumbs !== false) { - autoBreadcrumbs = autoBreadcrumbDefaults; - } + if (args[1] && args[1].method) { + method = args[1].method; + } - globalOptions.autoBreadcrumbs = autoBreadcrumbs; - var instrumentDefaults = { - tryCatch: true - }; - var instrument = globalOptions.instrument; + var fetchData = { + method: method, + url: url, + status_code: null + }; - if ({}.toString.call(instrument) === '[object Object]') { - instrument = objectMerge(instrumentDefaults, instrument); - } else if (instrument !== false) { - instrument = instrumentDefaults; + return origFetch + .apply(this, args) + .then(function(response) { + fetchData.status_code = response.status; + + self.captureBreadcrumb({ + type: 'http', + category: 'fetch', + data: fetchData + }); + + return response; + }) + ['catch'](function(err) { + // if there is an error performing the request + self.captureBreadcrumb({ + type: 'http', + category: 'fetch', + data: fetchData, + level: 'error' + }); + + throw err; + }); + }; + }, + wrappedBuiltIns + ); } - globalOptions.instrument = instrument; - tracekit.collectWindowErrors = !!globalOptions.collectWindowErrors; // return for chaining + // Capture breadcrumbs from any click that is unhandled / bubbled up all the way + // to the document. Do this before we instrument addEventListener. + if (autoBreadcrumbs.dom && this._hasDocument) { + if (_document.addEventListener) { + _document.addEventListener('click', self._breadcrumbEventHandler('click'), false); + _document.addEventListener('keypress', self._keypressEventHandler(), false); + } else if (_document.attachEvent) { + // IE8 Compatibility + _document.attachEvent('onclick', self._breadcrumbEventHandler('click')); + _document.attachEvent('onkeypress', self._keypressEventHandler()); + } + } - return self; - }, + // record navigation (URL) changes + // NOTE: in Chrome App environment, touching history.pushState, *even inside + // a try/catch block*, will cause Chrome to output an error to console.error + // borrowed from: https://github.com/angular/angular.js/pull/13945/files + var chrome = _window.chrome; + var isChromePackagedApp = chrome && chrome.app && chrome.app.runtime; + var hasPushAndReplaceState = + !isChromePackagedApp && + _window.history && + history.pushState && + history.replaceState; + if (autoBreadcrumbs.location && hasPushAndReplaceState) { + // TODO: remove onpopstate handler on uninstall() + var oldOnPopState = _window.onpopstate; + _window.onpopstate = function() { + var currentHref = self._location.href; + self._captureUrlChange(self._lastHref, currentHref); - /* - * Installs a global window.onerror error handler - * to capture and report uncaught exceptions. - * At this point, install() is required to be called due - * to the way TraceKit is set up. - * - * @return {Raven} - */ - install: function install() { - var self = this; + if (oldOnPopState) { + return oldOnPopState.apply(this, arguments); + } + }; - if (self.isSetup() && !self._isRavenInstalled) { - tracekit.report.subscribe(function () { - self._handleOnErrorStackInfo.apply(self, arguments); - }); + var historyReplacementFunction = function(origHistFunction) { + // note history.pushState.length is 0; intentionally not declaring + // params to preserve 0 arity + return function(/* state, title, url */) { + var url = arguments.length > 2 ? arguments[2] : undefined; - self._patchFunctionToString(); + // url argument is optional + if (url) { + // coerce to string (this is what pushState does) + self._captureUrlChange(self._lastHref, url + ''); + } - if (self._globalOptions.instrument && self._globalOptions.instrument.tryCatch) { - self._instrumentTryCatch(); - } + return origHistFunction.apply(this, arguments); + }; + }; - if (self._globalOptions.autoBreadcrumbs) self._instrumentBreadcrumbs(); // Install all of the plugins + fill(history, 'pushState', historyReplacementFunction, wrappedBuiltIns); + fill(history, 'replaceState', historyReplacementFunction, wrappedBuiltIns); + } - self._drainPlugins(); + if (autoBreadcrumbs.console && 'console' in _window && console.log) { + // console + var consoleMethodCallback = function(msg, data) { + self.captureBreadcrumb({ + message: msg, + level: data.level, + category: 'console' + }); + }; - self._isRavenInstalled = true; + each(['debug', 'info', 'warn', 'error', 'log'], function(_, level) { + wrapConsoleMethod(console, level, consoleMethodCallback); + }); } - - Error.stackTraceLimit = self._globalOptions.stackTraceLimit; - return this; }, - /* - * Set the DSN (can be called multiple time unlike config) - * - * @param {string} dsn The public Sentry DSN - */ - setDSN: function setDSN(dsn) { - var self = this, - uri = self._parseDSN(dsn), - lastSlash = uri.path.lastIndexOf('/'), - path = uri.path.substr(1, lastSlash); + _restoreBuiltIns: function() { + // restore any wrapped builtins + var builtin; + while (this._wrappedBuiltIns.length) { + builtin = this._wrappedBuiltIns.shift(); - self._dsn = dsn; - self._globalKey = uri.user; - self._globalSecret = uri.pass && uri.pass.substr(1); - self._globalProject = uri.path.substr(lastSlash + 1); - self._globalServer = self._getGlobalServer(uri); - self._globalEndpoint = self._globalServer + '/' + path + 'api/' + self._globalProject + '/store/'; // Reset backoff state since we may be pointing at a - // new project/server + var obj = builtin[0], + name = builtin[1], + orig = builtin[2]; - this._resetBackoff(); + obj[name] = orig; + } }, - /* - * Wrap code within a context so Raven can capture errors - * reliably across domains that is executed immediately. - * - * @param {object} options A specific set of options for this context [optional] - * @param {function} func The callback to be immediately executed within the context - * @param {array} args An array of arguments to be called with the callback [optional] - */ - context: function context(options, func, args) { - if (isFunction(options)) { - args = func || []; - func = options; - options = undefined; + _restoreConsole: function() { + // eslint-disable-next-line guard-for-in + for (var method in this._originalConsoleMethods) { + this._originalConsole[method] = this._originalConsoleMethods[method]; } - - return this.wrap(options, func).apply(this, args); }, - /* - * Wrap code within a context and returns back a new function to be executed - * - * @param {object} options A specific set of options for this context [optional] - * @param {function} func The function to be wrapped in a new context - * @param {function} func A function to call before the try/catch wrapper [optional, private] - * @return {function} The newly wrapped functions with a context - */ - wrap: function wrap(options, func, _before) { - var self = this; // 1 argument has been passed, and it's not a function - // so just return it - - if (isUndefined(func) && !isFunction(options)) { - return options; - } // options is optional - - - if (isFunction(options)) { - func = options; - options = undefined; - } // At this point, we've passed along 2 arguments, and the second one - // is not a function either, so we'll just return the second argument. - + _drainPlugins: function() { + var self = this; - if (!isFunction(func)) { - return func; - } // We don't wanna wrap it twice! + // FIX ME TODO + each(this._plugins, function(_, plugin) { + var installer = plugin[0]; + var args = plugin[1]; + installer.apply(self, [self].concat(args)); + }); + }, + _parseDSN: function(str) { + var m = dsnPattern.exec(str), + dsn = {}, + i = 7; try { - if (func.__raven__) { - return func; - } // If this has already been wrapped in the past, return that - - - if (func.__raven_wrapper__) { - return func.__raven_wrapper__; - } + while (i--) dsn[dsnKeys[i]] = m[i] || ''; } catch (e) { - // Just accessing custom props in some Selenium environments - // can cause a "Permission denied" exception (see raven-js#495). - // Bail on wrapping and return the function as-is (defers to window.onerror). - return func; + throw new RavenConfigError('Invalid DSN: ' + str); } - function wrapped() { - var args = [], - i = arguments.length, - deep = !options || options && options.deep !== false; - - if (_before && isFunction(_before)) { - _before.apply(this, arguments); - } // Recursively wrap all of a function's arguments that are - // functions themselves. - - - while (i--) { - args[i] = deep ? self.wrap(options, arguments[i]) : arguments[i]; - } - - try { - // Attempt to invoke user-land function - // NOTE: If you are a Sentry user, and you are seeing this stack frame, it - // means Raven caught an error invoking your application code. This is - // expected behavior and NOT indicative of a bug with Raven.js. - return func.apply(this, args); - } catch (e) { - self._ignoreNextOnError(); - - self.captureException(e, options); - throw e; - } - } // copy over properties of the old function - - - for (var property in func) { - if (hasKey(func, property)) { - wrapped[property] = func[property]; - } + if (dsn.pass && !this._globalOptions.allowSecretKey) { + throw new RavenConfigError( + 'Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key' + ); } - wrapped.prototype = func.prototype; - func.__raven_wrapper__ = wrapped; // Signal that this function has been wrapped/filled already - // for both debugging and to prevent it to being wrapped/filled twice - - wrapped.__raven__ = true; - wrapped.__orig__ = func; - return wrapped; + return dsn; }, - /* - * Uninstalls the global error handler. - * - * @return {Raven} - */ - uninstall: function uninstall() { - tracekit.report.uninstall(); - - this._unpatchFunctionToString(); - - this._restoreBuiltIns(); - - this._restoreConsole(); + _getGlobalServer: function(uri) { + // assemble the endpoint from the uri pieces + var globalServer = '//' + uri.host + (uri.port ? ':' + uri.port : ''); - Error.stackTraceLimit = this._originalErrorStackTraceLimit; - this._isRavenInstalled = false; - return this; + if (uri.protocol) { + globalServer = uri.protocol + ':' + globalServer; + } + return globalServer; }, - /* - * Manually capture an exception and send it over to Sentry - * - * @param {error} ex An exception to be logged - * @param {object} options A specific set of options for this error [optional] - * @return {Raven} - */ - captureException: function captureException(ex, options) { - options = objectMerge({ - trimHeadFrames: 0 - }, options ? options : {}); // Cases for sending ex as a message, rather than an exception - - var isNotError = !isError(ex); - var isNotErrorEvent = !isErrorEvent(ex); - var isErrorEventWithoutError = isErrorEvent(ex) && !ex.error; - - if (isNotError && isNotErrorEvent || isErrorEventWithoutError) { - return this.captureMessage(ex, objectMerge(options, { - stacktrace: true, - // if we fall back to captureMessage, default to attempting a new trace - trimHeadFrames: options.trimHeadFrames + 1 - })); - } // Get actual Error from ErrorEvent + _handleOnErrorStackInfo: function() { + // if we are intentionally ignoring errors via onerror, bail out + if (!this._ignoreOnError) { + this._handleStackInfo.apply(this, arguments); + } + }, + _handleStackInfo: function(stackInfo, options) { + var frames = this._prepareFrames(stackInfo, options); - if (isErrorEvent(ex)) ex = ex.error; // Store the raw exception object for potential debugging and introspection + this._triggerEvent('handle', { + stackInfo: stackInfo, + options: options + }); - this._lastCapturedException = ex; // TraceKit.report will re-raise any exception passed to it, - // which means you have to wrap it in try/catch. Instead, we - // can wrap it here and only re-raise if TraceKit.report - // raises an exception different from the one we asked to - // report on. + this._processException( + stackInfo.name, + stackInfo.message, + stackInfo.url, + stackInfo.lineno, + frames, + options + ); + }, - try { - var stack = tracekit.computeStackTrace(ex); + _prepareFrames: function(stackInfo, options) { + var self = this; + var frames = []; + if (stackInfo.stack && stackInfo.stack.length) { + each(stackInfo.stack, function(i, stack) { + var frame = self._normalizeFrame(stack, stackInfo.url); + if (frame) { + frames.push(frame); + } + }); - this._handleStackInfo(stack, options); - } catch (ex1) { - if (ex !== ex1) { - throw ex1; + // e.g. frames captured via captureMessage throw + if (options && options.trimHeadFrames) { + for (var j = 0; j < options.trimHeadFrames && j < frames.length; j++) { + frames[j].in_app = false; + } } } - - return this; + frames = frames.slice(0, this._globalOptions.stackTraceLimit); + return frames; }, - /* - * Manually send a message to Sentry - * - * @param {string} msg A plain message to be captured in Sentry - * @param {object} options A specific set of options for this message [optional] - * @return {Raven} - */ - captureMessage: function captureMessage(msg, options) { - // config() automagically converts ignoreErrors from a list to a RegExp so we need to test for an - // early call; we'll error on the side of logging anything called before configuration since it's - // probably something you should see: - if (!!this._globalOptions.ignoreErrors.test && this._globalOptions.ignoreErrors.test(msg)) { - return; - } + _normalizeFrame: function(frame, stackInfoUrl) { + // normalize the frames data + var normalized = { + filename: frame.url, + lineno: frame.line, + colno: frame.column, + function: frame.func || '?' + }; - options = options || {}; - var data = objectMerge({ - message: msg + '' // Make sure it's actually a string + // Case when we don't have any information about the error + // E.g. throwing a string or raw object, instead of an `Error` in Firefox + // Generating synthetic error doesn't add any value here + // + // We should probably somehow let a user know that they should fix their code + if (!frame.url) { + normalized.filename = stackInfoUrl; // fallback to whole stacks url from onerror handler + } - }, options); - var ex; // Generate a "synthetic" stack trace from this point. - // NOTE: If you are a Sentry user, and you are seeing this stack frame, it is NOT indicative - // of a bug with Raven.js. Sentry generates synthetic traces either by configuration, - // or if it catches a thrown object without a "stack" property. + normalized.in_app = !// determine if an exception came from outside of our app + // first we check the global includePaths list. + ( + (!!this._globalOptions.includePaths.test && + !this._globalOptions.includePaths.test(normalized.filename)) || + // Now we check for fun, if the function name is Raven or TraceKit + /(Raven|TraceKit)\./.test(normalized['function']) || + // finally, we do a last ditch effort and check for raven.min.js + /raven\.(min\.)?js$/.test(normalized.filename) + ); - try { - throw new Error(msg); - } catch (ex1) { - ex = ex1; - } // null exception name so `Error` isn't prefixed to msg + return normalized; + }, + _processException: function(type, message, fileurl, lineno, frames, options) { + var prefixedMessage = (type ? type + ': ' : '') + (message || ''); + if ( + !!this._globalOptions.ignoreErrors.test && + (this._globalOptions.ignoreErrors.test(message) || + this._globalOptions.ignoreErrors.test(prefixedMessage)) + ) { + return; + } - ex.name = null; - var stack = tracekit.computeStackTrace(ex); // stack[0] is `throw new Error(msg)` call itself, we are interested in the frame that was just before that, stack[1] + var stacktrace; - var initialCall = isArray(stack.stack) && stack.stack[1]; - var fileurl = initialCall && initialCall.url || ''; + if (frames && frames.length) { + fileurl = frames[0].filename || fileurl; + // Sentry expects frames oldest to newest + // and JS sends them as newest to oldest + frames.reverse(); + stacktrace = {frames: frames}; + } else if (fileurl) { + stacktrace = { + frames: [ + { + filename: fileurl, + lineno: lineno, + in_app: true + } + ] + }; + } - if (!!this._globalOptions.ignoreUrls.test && this._globalOptions.ignoreUrls.test(fileurl)) { + if ( + !!this._globalOptions.ignoreUrls.test && + this._globalOptions.ignoreUrls.test(fileurl) + ) { return; } - if (!!this._globalOptions.whitelistUrls.test && !this._globalOptions.whitelistUrls.test(fileurl)) { + if ( + !!this._globalOptions.whitelistUrls.test && + !this._globalOptions.whitelistUrls.test(fileurl) + ) { return; } - if (this._globalOptions.stacktrace || options && options.stacktrace) { - options = objectMerge({ - // fingerprint on msg, not stack trace (legacy behavior, could be - // revisited) - fingerprint: msg, - // since we know this is a synthetic trace, the top N-most frames - // MUST be from Raven.js, so mark them as in_app later by setting - // trimHeadFrames - trimHeadFrames: (options.trimHeadFrames || 0) + 1 - }, options); - - var frames = this._prepareFrames(stack, options); - - data.stacktrace = { - // Sentry expects frames oldest to newest - frames: frames.reverse() - }; - } // Fire away! - + var data = objectMerge( + { + // sentry.interfaces.Exception + exception: { + values: [ + { + type: type, + value: message, + stacktrace: stacktrace + } + ] + }, + culprit: fileurl + }, + options + ); + // Fire away! this._send(data); - - return this; }, - captureBreadcrumb: function captureBreadcrumb(obj) { - var crumb = objectMerge({ - timestamp: now() / 1000 - }, obj); - if (isFunction(this._globalOptions.breadcrumbCallback)) { - var result = this._globalOptions.breadcrumbCallback(crumb); + _trimPacket: function(data) { + // For now, we only want to truncate the two different messages + // but this could/should be expanded to just trim everything + var max = this._globalOptions.maxMessageLength; + if (data.message) { + data.message = truncate(data.message, max); + } + if (data.exception) { + var exception = data.exception.values[0]; + exception.value = truncate(exception.value, max); + } - if (isObject(result) && !isEmptyObject(result)) { - crumb = result; - } else if (result === false) { - return this; + var request = data.request; + if (request) { + if (request.url) { + request.url = truncate(request.url, this._globalOptions.maxUrlLength); + } + if (request.Referer) { + request.Referer = truncate(request.Referer, this._globalOptions.maxUrlLength); } } - this._breadcrumbs.push(crumb); - - if (this._breadcrumbs.length > this._globalOptions.maxBreadcrumbs) { - this._breadcrumbs.shift(); - } + if (data.breadcrumbs && data.breadcrumbs.values) + this._trimBreadcrumbs(data.breadcrumbs); - return this; + return data; }, - addPlugin: function addPlugin(plugin - /*arg1, arg2, ... argN*/ - ) { - var pluginArgs = [].slice.call(arguments, 1); - this._plugins.push([plugin, pluginArgs]); + /** + * Truncate breadcrumb values (right now just URLs) + */ + _trimBreadcrumbs: function(breadcrumbs) { + // known breadcrumb properties with urls + // TODO: also consider arbitrary prop values that start with (https?)?:// + var urlProps = ['to', 'from', 'url'], + urlProp, + crumb, + data; - if (this._isRavenInstalled) { - this._drainPlugins(); - } + for (var i = 0; i < breadcrumbs.values.length; ++i) { + crumb = breadcrumbs.values[i]; + if ( + !crumb.hasOwnProperty('data') || + !isObject(crumb.data) || + objectFrozen(crumb.data) + ) + continue; - return this; - }, - - /* - * Set/clear a user to be sent along with the payload. - * - * @param {object} user An object representing user data [optional] - * @return {Raven} - */ - setUserContext: function setUserContext(user) { - // Intentionally do not merge here since that's an unexpected behavior. - this._globalContext.user = user; - return this; - }, - - /* - * Merge extra attributes to be sent along with the payload. - * - * @param {object} extra An object representing extra data [optional] - * @return {Raven} - */ - setExtraContext: function setExtraContext(extra) { - this._mergeContext('extra', extra); - - return this; - }, - - /* - * Merge tags to be sent along with the payload. - * - * @param {object} tags An object representing tags [optional] - * @return {Raven} - */ - setTagsContext: function setTagsContext(tags) { - this._mergeContext('tags', tags); - - return this; + data = objectMerge({}, crumb.data); + for (var j = 0; j < urlProps.length; ++j) { + urlProp = urlProps[j]; + if (data.hasOwnProperty(urlProp) && data[urlProp]) { + data[urlProp] = truncate(data[urlProp], this._globalOptions.maxUrlLength); + } + } + breadcrumbs.values[i].data = data; + } }, - /* - * Clear all of the context. - * - * @return {Raven} - */ - clearContext: function clearContext() { - this._globalContext = {}; - return this; - }, + _getHttpData: function() { + if (!this._hasNavigator && !this._hasDocument) return; + var httpData = {}; - /* - * Get a copy of the current context. This cannot be mutated. - * - * @return {object} copy of context - */ - getContext: function getContext() { - // lol javascript - return JSON.parse(stringify_1(this._globalContext)); - }, + if (this._hasNavigator && _navigator.userAgent) { + httpData.headers = { + 'User-Agent': navigator.userAgent + }; + } - /* - * Set environment of application - * - * @param {string} environment Typically something like 'production'. - * @return {Raven} - */ - setEnvironment: function setEnvironment(environment) { - this._globalOptions.environment = environment; - return this; - }, + // Check in `window` instead of `document`, as we may be in ServiceWorker environment + if (_window.location && _window.location.href) { + httpData.url = _window.location.href; + } - /* - * Set release version of application - * - * @param {string} release Typically something like a git SHA to identify version - * @return {Raven} - */ - setRelease: function setRelease(release) { - this._globalOptions.release = release; - return this; - }, + if (this._hasDocument && _document.referrer) { + if (!httpData.headers) httpData.headers = {}; + httpData.headers.Referer = _document.referrer; + } - /* - * Set the dataCallback option - * - * @param {function} callback The callback to run which allows the - * data blob to be mutated before sending - * @return {Raven} - */ - setDataCallback: function setDataCallback(callback) { - var original = this._globalOptions.dataCallback; - this._globalOptions.dataCallback = keepOriginalCallback(original, callback); - return this; + return httpData; }, - /* - * Set the breadcrumbCallback option - * - * @param {function} callback The callback to run which allows filtering - * or mutating breadcrumbs - * @return {Raven} - */ - setBreadcrumbCallback: function setBreadcrumbCallback(callback) { - var original = this._globalOptions.breadcrumbCallback; - this._globalOptions.breadcrumbCallback = keepOriginalCallback(original, callback); - return this; + _resetBackoff: function() { + this._backoffDuration = 0; + this._backoffStart = null; }, - /* - * Set the shouldSendCallback option - * - * @param {function} callback The callback to run which allows - * introspecting the blob before sending - * @return {Raven} - */ - setShouldSendCallback: function setShouldSendCallback(callback) { - var original = this._globalOptions.shouldSendCallback; - this._globalOptions.shouldSendCallback = keepOriginalCallback(original, callback); - return this; + _shouldBackoff: function() { + return this._backoffDuration && now() - this._backoffStart < this._backoffDuration; }, /** - * Override the default HTTP transport mechanism that transmits data - * to the Sentry server. - * - * @param {function} transport Function invoked instead of the default - * `makeRequest` handler. + * Returns true if the in-process data payload matches the signature + * of the previously-sent data * - * @return {Raven} + * NOTE: This has to be done at this level because TraceKit can generate + * data from window.onerror WITHOUT an exception object (IE8, IE9, + * other old browsers). This can take the form of an "exception" + * data object with a single frame (derived from the onerror args). */ - setTransport: function setTransport(transport) { - this._globalOptions.transport = transport; - return this; - }, + _isRepeatData: function(current) { + var last = this._lastData; - /* - * Get the latest raw exception that was captured by Raven. - * - * @return {error} - */ - lastException: function lastException() { - return this._lastCapturedException; - }, + if ( + !last || + current.message !== last.message || // defined for captureMessage + current.culprit !== last.culprit // defined for captureException/onerror + ) + return false; - /* - * Get the last event id - * - * @return {string} - */ - lastEventId: function lastEventId() { - return this._lastEventId; + // Stacktrace interface (i.e. from captureMessage) + if (current.stacktrace || last.stacktrace) { + return isSameStacktrace(current.stacktrace, last.stacktrace); + } else if (current.exception || last.exception) { + // Exception interface (i.e. from captureException/onerror) + return isSameException(current.exception, last.exception); + } + + return true; }, - /* - * Determine if Raven is setup and ready to go. - * - * @return {boolean} - */ - isSetup: function isSetup() { - if (!this._hasJSON) return false; // needs JSON support + _setBackoffState: function(request) { + // If we are already in a backoff state, don't change anything + if (this._shouldBackoff()) { + return; + } - if (!this._globalServer) { - if (!this.ravenNotConfiguredError) { - this.ravenNotConfiguredError = true; + var status = request.status; - this._logDebug('error', 'Error: Raven has not been configured.'); + // 400 - project_id doesn't exist or some other fatal + // 401 - invalid/revoked dsn + // 429 - too many requests + if (!(status === 400 || status === 401 || status === 429)) return; + + var retry; + try { + // If Retry-After is not in Access-Control-Expose-Headers, most + // browsers will throw an exception trying to access it + if (supportsFetch()) { + retry = request.headers.get('Retry-After'); + } else { + retry = request.getResponseHeader('Retry-After'); } - return false; + // Retry-After is returned in seconds + retry = parseInt(retry, 10) * 1000; + } catch (e) { + /* eslint no-empty:0 */ } - return true; - }, - afterLoad: function afterLoad() { - // TODO: remove window dependence? - // Attempt to initialize Raven on load - var RavenConfig = _window$1.RavenConfig; + this._backoffDuration = retry + ? // If Sentry server returned a Retry-After value, use it + retry + : // Otherwise, double the last backoff duration (starts at 1 sec) + this._backoffDuration * 2 || 1000; - if (RavenConfig) { - this.config(RavenConfig.dsn, RavenConfig.config).install(); - } + this._backoffStart = now(); }, - showReportDialog: function showReportDialog(options) { - if (!_document // doesn't work without a document (React native) - ) return; - options = options || {}; - var lastEventId = options.eventId || this.lastEventId(); - if (!lastEventId) { - throw new configError('Missing eventId'); - } + _send: function(data) { + var globalOptions = this._globalOptions; - var dsn = options.dsn || this._dsn; + var baseData = { + project: this._globalProject, + logger: globalOptions.logger, + platform: 'javascript' + }, + httpData = this._getHttpData(); - if (!dsn) { - throw new configError('Missing DSN'); + if (httpData) { + baseData.request = httpData; } - var encode = encodeURIComponent; - var qs = ''; - qs += '?eventId=' + encode(lastEventId); - qs += '&dsn=' + encode(dsn); - var user = options.user || this._globalContext.user; + // HACK: delete `trimHeadFrames` to prevent from appearing in outbound payload + if (data.trimHeadFrames) delete data.trimHeadFrames; - if (user) { - if (user.name) qs += '&name=' + encode(user.name); - if (user.email) qs += '&email=' + encode(user.email); + data = objectMerge(baseData, data); + + // Merge in the tags and extra separately since objectMerge doesn't handle a deep merge + data.tags = objectMerge(objectMerge({}, this._globalContext.tags), data.tags); + data.extra = objectMerge(objectMerge({}, this._globalContext.extra), data.extra); + + // Send along our own collected metadata with extra + data.extra['session:duration'] = now() - this._startTime; + + if (this._breadcrumbs && this._breadcrumbs.length > 0) { + // intentionally make shallow copy so that additions + // to breadcrumbs aren't accidentally sent in this request + data.breadcrumbs = { + values: [].slice.call(this._breadcrumbs, 0) + }; } - var globalServer = this._getGlobalServer(this._parseDSN(dsn)); + if (this._globalContext.user) { + // sentry.interfaces.User + data.user = this._globalContext.user; + } - var script = _document.createElement('script'); + // Include the environment if it's defined in globalOptions + if (globalOptions.environment) data.environment = globalOptions.environment; - script.async = true; - script.src = globalServer + '/api/embed/error-page/' + qs; + // Include the release if it's defined in globalOptions + if (globalOptions.release) data.release = globalOptions.release; - (_document.head || _document.body).appendChild(script); - }, + // Include server_name if it's defined in globalOptions + if (globalOptions.serverName) data.server_name = globalOptions.serverName; - /**** Private functions ****/ - _ignoreNextOnError: function _ignoreNextOnError() { - var self = this; - this._ignoreOnError += 1; - setTimeout(function () { - // onerror should trigger before setTimeout - self._ignoreOnError -= 1; + data = this._sanitizeData(data); + + // Cleanup empty properties before sending them to the server + Object.keys(data).forEach(function(key) { + if (data[key] == null || data[key] === '' || isEmptyObject(data[key])) { + delete data[key]; + } }); - }, - _triggerEvent: function _triggerEvent(eventType, options) { - // NOTE: `event` is a native browser thing, so let's avoid conflicting wiht it - var evt, key; - if (!this._hasDocument) return; - options = options || {}; - eventType = 'raven' + eventType.substr(0, 1).toUpperCase() + eventType.substr(1); - if (_document.createEvent) { - evt = _document.createEvent('HTMLEvents'); - evt.initEvent(eventType, true, true); - } else { - evt = _document.createEventObject(); - evt.eventType = eventType; + if (isFunction(globalOptions.dataCallback)) { + data = globalOptions.dataCallback(data) || data; } - for (key in options) { - if (hasKey(options, key)) { - evt[key] = options[key]; - } + // Why?????????? + if (!data || isEmptyObject(data)) { + return; } - if (_document.createEvent) { - // IE9 if standards - _document.dispatchEvent(evt); - } else { - // IE8 regardless of Quirks or Standards - // IE9 if quirks - try { - _document.fireEvent('on' + evt.eventType.toLowerCase(), evt); - } catch (e) {// Do nothing - } + // Check if the request should be filtered or not + if ( + isFunction(globalOptions.shouldSendCallback) && + !globalOptions.shouldSendCallback(data) + ) { + return; } - }, - - /** - * Wraps addEventListener to capture UI breadcrumbs - * @param evtName the event name (e.g. "click") - * @returns {Function} - * @private - */ - _breadcrumbEventHandler: function _breadcrumbEventHandler(evtName) { - var self = this; - return function (evt) { - // reset keypress timeout; e.g. triggering a 'click' after - // a 'keypress' will reset the keypress debounce so that a new - // set of keypresses can be recorded - self._keypressTimeout = null; // It's possible this handler might trigger multiple times for the same - // event (e.g. event propagation through node ancestors). Ignore if we've - // already captured the event. - - if (self._lastCapturedEvent === evt) return; - self._lastCapturedEvent = evt; // try/catch both: - // - accessing evt.target (see getsentry/raven-js#838, #768) - // - `htmlTreeAsString` because it's complex, and just accessing the DOM incorrectly - // can throw an exception in some circumstances. - var target; + // Backoff state: Sentry server previously responded w/ an error (e.g. 429 - too many requests), + // so drop requests until "cool-off" period has elapsed. + if (this._shouldBackoff()) { + this._logDebug('warn', 'Raven dropped error due to backoff: ', data); + return; + } - try { - target = htmlTreeAsString(evt.target); - } catch (e) { - target = ''; + if (typeof globalOptions.sampleRate === 'number') { + if (Math.random() < globalOptions.sampleRate) { + this._sendProcessedPayload(data); } - - self.captureBreadcrumb({ - category: 'ui.' + evtName, - // e.g. ui.click, ui.input - message: target - }); - }; + } else { + this._sendProcessedPayload(data); + } }, - /** - * Wraps addEventListener to capture keypress UI events - * @returns {Function} - * @private - */ - _keypressEventHandler: function _keypressEventHandler() { - var self = this, - debounceDuration = 1000; // milliseconds - // TODO: if somehow user switches keypress target before - // debounce timeout is triggered, we will only capture - // a single breadcrumb from the FIRST target (acceptable?) + _sanitizeData: function(data) { + return sanitize(data, this._globalOptions.sanitizeKeys); + }, - return function (evt) { - var target; + _getUuid: function() { + return uuid4(); + }, - try { - target = evt.target; - } catch (e) { - // just accessing event properties can throw an exception in some rare circumstances - // see: https://github.com/getsentry/raven-js/issues/838 - return; - } + _sendProcessedPayload: function(data, callback) { + var self = this; + var globalOptions = this._globalOptions; - var tagName = target && target.tagName; // only consider keypress events on actual input elements - // this will disregard keypresses targeting body (e.g. tabbing - // through elements, hotkeys, etc) + if (!this.isSetup()) return; - if (!tagName || tagName !== 'INPUT' && tagName !== 'TEXTAREA' && !target.isContentEditable) return; // record first keypress in a series, but ignore subsequent - // keypresses until debounce clears + // Try and clean up the packet before sending by truncating long values + data = this._trimPacket(data); - var timeout = self._keypressTimeout; + // ideally duplicate error testing should occur *before* dataCallback/shouldSendCallback, + // but this would require copying an un-truncated copy of the data packet, which can be + // arbitrarily deep (extra_data) -- could be worthwhile? will revisit + if (!this._globalOptions.allowDuplicates && this._isRepeatData(data)) { + this._logDebug('warn', 'Raven dropped repeat event: ', data); + return; + } - if (!timeout) { - self._breadcrumbEventHandler('input')(evt); - } + // Send along an event_id if not explicitly passed. + // This event_id can be used to reference the error within Sentry itself. + // Set lastEventId after we know the error should actually be sent + this._lastEventId = data.event_id || (data.event_id = this._getUuid()); - clearTimeout(timeout); - self._keypressTimeout = setTimeout(function () { - self._keypressTimeout = null; - }, debounceDuration); - }; - }, + // Store outbound payload after trim + this._lastData = data; - /** - * Captures a breadcrumb of type "navigation", normalizing input URLs - * @param to the originating URL - * @param from the target URL - * @private - */ - _captureUrlChange: function _captureUrlChange(from, to) { - var parsedLoc = parseUrl(this._location.href); - var parsedTo = parseUrl(to); - var parsedFrom = parseUrl(from); // because onpopstate only tells you the "new" (to) value of location.href, and - // not the previous (from) value, we need to track the value of the current URL - // state ourselves + this._logDebug('debug', 'Raven about to send:', data); - this._lastHref = to; // Use only the path component of the URL if the URL matches the current - // document (almost all the time when using pushState) + var auth = { + sentry_version: '7', + sentry_client: 'raven-js/' + this.VERSION, + sentry_key: this._globalKey + }; - if (parsedLoc.protocol === parsedTo.protocol && parsedLoc.host === parsedTo.host) to = parsedTo.relative; - if (parsedLoc.protocol === parsedFrom.protocol && parsedLoc.host === parsedFrom.host) from = parsedFrom.relative; - this.captureBreadcrumb({ - category: 'navigation', - data: { - to: to, - from: from - } - }); - }, - _patchFunctionToString: function _patchFunctionToString() { - var self = this; - self._originalFunctionToString = Function.prototype.toString; // eslint-disable-next-line no-extend-native + if (this._globalSecret) { + auth.sentry_secret = this._globalSecret; + } - Function.prototype.toString = function () { - if (typeof this === 'function' && this.__raven__) { - return self._originalFunctionToString.apply(this.__orig__, arguments); - } + var exception = data.exception && data.exception.values[0]; - return self._originalFunctionToString.apply(this, arguments); - }; - }, - _unpatchFunctionToString: function _unpatchFunctionToString() { - if (this._originalFunctionToString) { - // eslint-disable-next-line no-extend-native - Function.prototype.toString = this._originalFunctionToString; + // only capture 'sentry' breadcrumb is autoBreadcrumbs is truthy + if ( + this._globalOptions.autoBreadcrumbs && + this._globalOptions.autoBreadcrumbs.sentry + ) { + this.captureBreadcrumb({ + category: 'sentry', + message: exception + ? (exception.type ? exception.type + ': ' : '') + exception.value + : data.message, + event_id: data.event_id, + level: data.level || 'error' // presume error unless specified + }); } - }, - /** - * Wrap timer functions and event targets to catch errors and provide - * better metadata. - */ - _instrumentTryCatch: function _instrumentTryCatch() { - var self = this; - var wrappedBuiltIns = self._wrappedBuiltIns; + var url = this._globalEndpoint; + (globalOptions.transport || this._makeRequest).call(this, { + url: url, + auth: auth, + data: data, + options: globalOptions, + onSuccess: function success() { + self._resetBackoff(); - function wrapTimeFn(orig) { - return function (fn, t) { - // preserve arity - // Make a copy of the arguments to prevent deoptimization - // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments - var args = new Array(arguments.length); + self._triggerEvent('success', { + data: data, + src: url + }); + callback && callback(); + }, + onError: function failure(error) { + self._logDebug('error', 'Raven transport failed to send: ', error); - for (var i = 0; i < args.length; ++i) { - args[i] = arguments[i]; + if (error.request) { + self._setBackoffState(error.request); } - var originalCallback = args[0]; + self._triggerEvent('failure', { + data: data, + src: url + }); + error = error || new Error('Raven send failed (no additional details provided)'); + callback && callback(error); + } + }); + }, - if (isFunction(originalCallback)) { - args[0] = self.wrap(originalCallback); - } // IE < 9 doesn't support .call/.apply on setInterval/setTimeout, but it - // also supports only two arguments and doesn't care what this is, so we - // can just call the original function directly. + _makeRequest: function(opts) { + // Auth is intentionally sent as part of query string (NOT as custom HTTP header) to avoid preflight CORS requests + var url = opts.url + '?' + urlencode(opts.auth); + var evaluatedHeaders = null; + var evaluatedFetchParameters = {}; - if (orig.apply) { - return orig.apply(this, args); - } else { - return orig(args[0], args[1]); - } - }; + if (opts.options.headers) { + evaluatedHeaders = this._evaluateHash(opts.options.headers); } - var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; - - function wrapEventTarget(global) { - var proto = _window$1[global] && _window$1[global].prototype; + if (opts.options.fetchParameters) { + evaluatedFetchParameters = this._evaluateHash(opts.options.fetchParameters); + } - if (proto && proto.hasOwnProperty && proto.hasOwnProperty('addEventListener')) { - fill(proto, 'addEventListener', function (orig) { - return function (evtName, fn, capture, secure) { - // preserve arity - try { - if (fn && fn.handleEvent) { - fn.handleEvent = self.wrap(fn.handleEvent); - } - } catch (err) {} // can sometimes get 'Permission denied to access property "handle Event' - // More breadcrumb DOM capture ... done here and not in `_instrumentBreadcrumbs` - // so that we don't have more than one wrapper function + if (supportsFetch()) { + evaluatedFetchParameters.body = stringify(opts.data); + var defaultFetchOptions = objectMerge({}, this._fetchDefaults); + var fetchOptions = objectMerge(defaultFetchOptions, evaluatedFetchParameters); - var before, clickHandler, keypressHandler; + if (evaluatedHeaders) { + fetchOptions.headers = evaluatedHeaders; + } - if (autoBreadcrumbs && autoBreadcrumbs.dom && (global === 'EventTarget' || global === 'Node')) { - // NOTE: generating multiple handlers per addEventListener invocation, should - // revisit and verify we can just use one (almost certainly) - clickHandler = self._breadcrumbEventHandler('click'); - keypressHandler = self._keypressEventHandler(); + return _window + .fetch(url, fetchOptions) + .then(function(response) { + if (response.ok) { + opts.onSuccess && opts.onSuccess(); + } else { + var error = new Error('Sentry error code: ' + response.status); + // It's called request only to keep compatibility with XHR interface + // and not add more redundant checks in setBackoffState method + error.request = response; + opts.onError && opts.onError(error); + } + }) + ['catch'](function() { + opts.onError && + opts.onError(new Error('Sentry error code: network unavailable')); + }); + } - before = function before(evt) { - // need to intercept every DOM event in `before` argument, in case that - // same wrapped method is re-used for different events (e.g. mousemove THEN click) - // see #724 - if (!evt) return; - var eventType; + var request = _window.XMLHttpRequest && new _window.XMLHttpRequest(); + if (!request) return; - try { - eventType = evt.type; - } catch (e) { - // just accessing event properties can throw an exception in some rare circumstances - // see: https://github.com/getsentry/raven-js/issues/838 - return; - } + // if browser doesn't support CORS (e.g. IE7), we are out of luck + var hasCORS = 'withCredentials' in request || typeof XDomainRequest !== 'undefined'; - if (eventType === 'click') return clickHandler(evt);else if (eventType === 'keypress') return keypressHandler(evt); - }; - } + if (!hasCORS) return; - return orig.call(this, evtName, self.wrap(fn, undefined, before), capture, secure); - }; - }, wrappedBuiltIns); - fill(proto, 'removeEventListener', function (orig) { - return function (evt, fn, capture, secure) { - try { - fn = fn && (fn.__raven_wrapper__ ? fn.__raven_wrapper__ : fn); - } catch (e) {// ignore, accessing __raven_wrapper__ will throw in some Selenium environments - } + if ('withCredentials' in request) { + request.onreadystatechange = function() { + if (request.readyState !== 4) { + return; + } else if (request.status === 200) { + opts.onSuccess && opts.onSuccess(); + } else if (opts.onError) { + var err = new Error('Sentry error code: ' + request.status); + err.request = request; + opts.onError(err); + } + }; + } else { + request = new XDomainRequest(); + // xdomainrequest cannot go http -> https (or vice versa), + // so always use protocol relative + url = url.replace(/^https?:/, ''); - return orig.call(this, evt, fn, capture, secure); - }; - }, wrappedBuiltIns); + // onreadystatechange not supported by XDomainRequest + if (opts.onSuccess) { + request.onload = opts.onSuccess; + } + if (opts.onError) { + request.onerror = function() { + var err = new Error('Sentry error code: XDomainRequest'); + err.request = request; + opts.onError(err); + }; } } - fill(_window$1, 'setTimeout', wrapTimeFn, wrappedBuiltIns); - fill(_window$1, 'setInterval', wrapTimeFn, wrappedBuiltIns); + request.open('POST', url); - if (_window$1.requestAnimationFrame) { - fill(_window$1, 'requestAnimationFrame', function (orig) { - return function (cb) { - return orig(self.wrap(cb)); - }; - }, wrappedBuiltIns); - } // event targets borrowed from bugsnag-js: - // https://github.com/bugsnag/bugsnag-js/blob/master/src/bugsnag.js#L666 - - - var eventTargets = ['EventTarget', 'Window', 'Node', 'ApplicationCache', 'AudioTrackList', 'ChannelMergerNode', 'CryptoOperation', 'EventSource', 'FileReader', 'HTMLUnknownElement', 'IDBDatabase', 'IDBRequest', 'IDBTransaction', 'KeyOperation', 'MediaController', 'MessagePort', 'ModalWindow', 'Notification', 'SVGElementInstance', 'Screen', 'TextTrack', 'TextTrackCue', 'TextTrackList', 'WebSocket', 'WebSocketWorker', 'Worker', 'XMLHttpRequest', 'XMLHttpRequestEventTarget', 'XMLHttpRequestUpload']; - - for (var i = 0; i < eventTargets.length; i++) { - wrapEventTarget(eventTargets[i]); + if (evaluatedHeaders) { + each(evaluatedHeaders, function(key, value) { + request.setRequestHeader(key, value); + }); } + + request.send(stringify(opts.data)); }, - /** - * Instrument browser built-ins w/ breadcrumb capturing - * - XMLHttpRequests - * - DOM interactions (click/typing) - * - window.location changes - * - console - * - * Can be disabled or individually configured via the `autoBreadcrumbs` config option - */ - _instrumentBreadcrumbs: function _instrumentBreadcrumbs() { - var self = this; - var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; - var wrappedBuiltIns = self._wrappedBuiltIns; + _evaluateHash: function(hash) { + var evaluated = {}; - function wrapProp(prop, xhr) { - if (prop in xhr && isFunction(xhr[prop])) { - fill(xhr, prop, function (orig) { - return self.wrap(orig); - }); // intentionally don't track filled methods on XHR instances + for (var key in hash) { + if (hash.hasOwnProperty(key)) { + var value = hash[key]; + evaluated[key] = typeof value === 'function' ? value() : value; } } - if (autoBreadcrumbs.xhr && 'XMLHttpRequest' in _window$1) { - var xhrproto = XMLHttpRequest.prototype; - fill(xhrproto, 'open', function (origOpen) { - return function (method, url) { - // preserve arity - // if Sentry key appears in URL, don't capture - if (isString(url) && url.indexOf(self._globalKey) === -1) { - this.__raven_xhr = { - method: method, - url: url, - status_code: null - }; - } + return evaluated; + }, - return origOpen.apply(this, arguments); - }; - }, wrappedBuiltIns); - fill(xhrproto, 'send', function (origSend) { - return function () { - // preserve arity - var xhr = this; - - function onreadystatechangeHandler() { - if (xhr.__raven_xhr && xhr.readyState === 4) { - try { - // touching statusCode in some platforms throws - // an exception - xhr.__raven_xhr.status_code = xhr.status; - } catch (e) { - /* do nothing */ - } + _logDebug: function(level) { + // We allow `Raven.debug` and `Raven.config(DSN, { debug: true })` to not make backward incompatible API change + if ( + this._originalConsoleMethods[level] && + (this.debug || this._globalOptions.debug) + ) { + // In IE<10 console methods do not have their own 'apply' method + Function.prototype.apply.call( + this._originalConsoleMethods[level], + this._originalConsole, + [].slice.call(arguments, 1) + ); + } + }, - self.captureBreadcrumb({ - type: 'http', - category: 'xhr', - data: xhr.__raven_xhr - }); - } - } + _mergeContext: function(key, context) { + if (isUndefined(context)) { + delete this._globalContext[key]; + } else { + this._globalContext[key] = objectMerge(this._globalContext[key] || {}, context); + } + } +}; - var props = ['onload', 'onerror', 'onprogress']; +// Deprecations +Raven.prototype.setUser = Raven.prototype.setUserContext; +Raven.prototype.setReleaseContext = Raven.prototype.setRelease; - for (var j = 0; j < props.length; j++) { - wrapProp(props[j], xhr); - } +module.exports = Raven; - if ('onreadystatechange' in xhr && isFunction(xhr.onreadystatechange)) { - fill(xhr, 'onreadystatechange', function (orig) { - return self.wrap(orig, undefined, onreadystatechangeHandler); - } - /* intentionally don't track this instrumentation */ - ); - } else { - // if onreadystatechange wasn't actually set by the page on this xhr, we - // are free to set our own and capture the breadcrumb - xhr.onreadystatechange = onreadystatechangeHandler; - } +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"10":10,"11":11,"4":4,"5":5,"8":8,"9":9}],7:[function(_dereq_,module,exports){ +(function (global){ +/** + * Enforces a single instance of the Raven client, and the + * main entry point for Raven. If you are a consumer of the + * Raven library, you SHOULD load this file (vs raven.js). + **/ - return origSend.apply(this, arguments); - }; - }, wrappedBuiltIns); - } +var RavenConstructor = _dereq_(6); - if (autoBreadcrumbs.xhr && supportsFetch()) { - fill(_window$1, 'fetch', function (origFetch) { - return function () { - // preserve arity - // Make a copy of the arguments to prevent deoptimization - // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments - var args = new Array(arguments.length); - - for (var i = 0; i < args.length; ++i) { - args[i] = arguments[i]; - } +// This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) +var _window = + typeof window !== 'undefined' + ? window + : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; +var _Raven = _window.Raven; - var fetchInput = args[0]; - var method = 'GET'; - var url; +var Raven = new RavenConstructor(); - if (typeof fetchInput === 'string') { - url = fetchInput; - } else if ('Request' in _window$1 && fetchInput instanceof _window$1.Request) { - url = fetchInput.url; +/* + * Allow multiple versions of Raven to be installed. + * Strip Raven from the global context and returns the instance. + * + * @return {Raven} + */ +Raven.noConflict = function() { + _window.Raven = _Raven; + return Raven; +}; - if (fetchInput.method) { - method = fetchInput.method; - } - } else { - url = '' + fetchInput; - } // if Sentry key appears in URL, don't capture, as it's our own request +Raven.afterLoad(); +module.exports = Raven; - if (url.indexOf(self._globalKey) !== -1) { - return origFetch.apply(this, args); - } +/** + * DISCLAIMER: + * + * Expose `Client` constructor for cases where user want to track multiple "sub-applications" in one larger app. + * It's not meant to be used by a wide audience, so pleaaase make sure that you know what you're doing before using it. + * Accidentally calling `install` multiple times, may result in an unexpected behavior that's very hard to debug. + * + * It's called `Client' to be in-line with Raven Node implementation. + * + * HOWTO: + * + * import Raven from 'raven-js'; + * + * const someAppReporter = new Raven.Client(); + * const someOtherAppReporter = new Raven.Client(); + * + * someAppReporter.config('__DSN__', { + * ...config goes here + * }); + * + * someOtherAppReporter.config('__OTHER_DSN__', { + * ...config goes here + * }); + * + * someAppReporter.captureMessage(...); + * someAppReporter.captureException(...); + * someAppReporter.captureBreadcrumb(...); + * + * someOtherAppReporter.captureMessage(...); + * someOtherAppReporter.captureException(...); + * someOtherAppReporter.captureBreadcrumb(...); + * + * It should "just work". + */ +module.exports.Client = RavenConstructor; - if (args[1] && args[1].method) { - method = args[1].method; - } +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"6":6}],8:[function(_dereq_,module,exports){ +(function (global){ +var stringify = _dereq_(10); - var fetchData = { - method: method, - url: url, - status_code: null - }; - return origFetch.apply(this, args).then(function (response) { - fetchData.status_code = response.status; - self.captureBreadcrumb({ - type: 'http', - category: 'fetch', - data: fetchData - }); - return response; - }); - }; - }, wrappedBuiltIns); - } // Capture breadcrumbs from any click that is unhandled / bubbled up all the way - // to the document. Do this before we instrument addEventListener. +var _window = + typeof window !== 'undefined' + ? window + : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; +function isObject(what) { + return typeof what === 'object' && what !== null; +} - if (autoBreadcrumbs.dom && this._hasDocument) { - if (_document.addEventListener) { - _document.addEventListener('click', self._breadcrumbEventHandler('click'), false); +// Yanked from https://git.io/vS8DV re-used under CC0 +// with some tiny modifications +function isError(value) { + switch ({}.toString.call(value)) { + case '[object Error]': + return true; + case '[object Exception]': + return true; + case '[object DOMException]': + return true; + default: + return value instanceof Error; + } +} - _document.addEventListener('keypress', self._keypressEventHandler(), false); - } else { - // IE8 Compatibility - _document.attachEvent('onclick', self._breadcrumbEventHandler('click')); +function isErrorEvent(value) { + return supportsErrorEvent() && {}.toString.call(value) === '[object ErrorEvent]'; +} - _document.attachEvent('onkeypress', self._keypressEventHandler()); - } - } // record navigation (URL) changes - // NOTE: in Chrome App environment, touching history.pushState, *even inside - // a try/catch block*, will cause Chrome to output an error to console.error - // borrowed from: https://github.com/angular/angular.js/pull/13945/files +function isUndefined(what) { + return what === void 0; +} + +function isFunction(what) { + return typeof what === 'function'; +} +function isPlainObject(what) { + return Object.prototype.toString.call(what) === '[object Object]'; +} - var chrome = _window$1.chrome; - var isChromePackagedApp = chrome && chrome.app && chrome.app.runtime; - var hasPushAndReplaceState = !isChromePackagedApp && _window$1.history && history.pushState && history.replaceState; +function isString(what) { + return Object.prototype.toString.call(what) === '[object String]'; +} - if (autoBreadcrumbs.location && hasPushAndReplaceState) { - // TODO: remove onpopstate handler on uninstall() - var oldOnPopState = _window$1.onpopstate; +function isArray(what) { + return Object.prototype.toString.call(what) === '[object Array]'; +} - _window$1.onpopstate = function () { - var currentHref = self._location.href; +function isEmptyObject(what) { + if (!isPlainObject(what)) return false; - self._captureUrlChange(self._lastHref, currentHref); + for (var _ in what) { + if (what.hasOwnProperty(_)) { + return false; + } + } + return true; +} - if (oldOnPopState) { - return oldOnPopState.apply(this, arguments); - } - }; +function supportsErrorEvent() { + try { + new ErrorEvent(''); // eslint-disable-line no-new + return true; + } catch (e) { + return false; + } +} - var historyReplacementFunction = function historyReplacementFunction(origHistFunction) { - // note history.pushState.length is 0; intentionally not declaring - // params to preserve 0 arity - return function () - /* state, title, url */ - { - var url = arguments.length > 2 ? arguments[2] : undefined; // url argument is optional +function supportsFetch() { + if (!('fetch' in _window)) return false; - if (url) { - // coerce to string (this is what pushState does) - self._captureUrlChange(self._lastHref, url + ''); - } + try { + new Headers(); // eslint-disable-line no-new + new Request(''); // eslint-disable-line no-new + new Response(); // eslint-disable-line no-new + return true; + } catch (e) { + return false; + } +} - return origHistFunction.apply(this, arguments); - }; - }; +// Despite all stars in the sky saying that Edge supports old draft syntax, aka 'never', 'always', 'origin' and 'default +// https://caniuse.com/#feat=referrer-policy +// It doesn't. And it throw exception instead of ignoring this parameter... +// REF: https://github.com/getsentry/raven-js/issues/1233 +function supportsReferrerPolicy() { + if (!supportsFetch()) return false; - fill(history, 'pushState', historyReplacementFunction, wrappedBuiltIns); - fill(history, 'replaceState', historyReplacementFunction, wrappedBuiltIns); - } + try { + // eslint-disable-next-line no-new + new Request('pickleRick', { + referrerPolicy: 'origin' + }); + return true; + } catch (e) { + return false; + } +} - if (autoBreadcrumbs.console && 'console' in _window$1 && console.log) { - // console - var consoleMethodCallback = function consoleMethodCallback(msg, data) { - self.captureBreadcrumb({ - message: msg, - level: data.level, - category: 'console' - }); - }; +function supportsPromiseRejectionEvent() { + return typeof PromiseRejectionEvent === 'function'; +} - each(['debug', 'info', 'warn', 'error', 'log'], function (_, level) { - wrapConsoleMethod(console, level, consoleMethodCallback); - }); +function wrappedCallback(callback) { + function dataCallback(data, original) { + var normalizedData = callback(data) || data; + if (original) { + return original(normalizedData) || normalizedData; } - }, - _restoreBuiltIns: function _restoreBuiltIns() { - // restore any wrapped builtins - var builtin; + return normalizedData; + } - while (this._wrappedBuiltIns.length) { - builtin = this._wrappedBuiltIns.shift(); - var obj = builtin[0], - name = builtin[1], - orig = builtin[2]; - obj[name] = orig; - } - }, - _restoreConsole: function _restoreConsole() { - // eslint-disable-next-line guard-for-in - for (var method in this._originalConsoleMethods) { - this._originalConsole[method] = this._originalConsoleMethods[method]; - } - }, - _drainPlugins: function _drainPlugins() { - var self = this; // FIX ME TODO + return dataCallback; +} - each(this._plugins, function (_, plugin) { - var installer = plugin[0]; - var args = plugin[1]; - installer.apply(self, [self].concat(args)); - }); - }, - _parseDSN: function _parseDSN(str) { - var m = dsnPattern.exec(str), - dsn = {}, - i = 7; +function each(obj, callback) { + var i, j; - try { - while (i--) { - dsn[dsnKeys[i]] = m[i] || ''; + if (isUndefined(obj.length)) { + for (i in obj) { + if (hasKey(obj, i)) { + callback.call(null, i, obj[i]); } - } catch (e) { - throw new configError('Invalid DSN: ' + str); } - - if (dsn.pass && !this._globalOptions.allowSecretKey) { - throw new configError('Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key'); + } else { + j = obj.length; + if (j) { + for (i = 0; i < j; i++) { + callback.call(null, i, obj[i]); + } } + } +} - return dsn; - }, - _getGlobalServer: function _getGlobalServer(uri) { - // assemble the endpoint from the uri pieces - var globalServer = '//' + uri.host + (uri.port ? ':' + uri.port : ''); +function objectMerge(obj1, obj2) { + if (!obj2) { + return obj1; + } + each(obj2, function(key, value) { + obj1[key] = value; + }); + return obj1; +} - if (uri.protocol) { - globalServer = uri.protocol + ':' + globalServer; - } - - return globalServer; - }, - _handleOnErrorStackInfo: function _handleOnErrorStackInfo() { - // if we are intentionally ignoring errors via onerror, bail out - if (!this._ignoreOnError) { - this._handleStackInfo.apply(this, arguments); - } - }, - _handleStackInfo: function _handleStackInfo(stackInfo, options) { - var frames = this._prepareFrames(stackInfo, options); - - this._triggerEvent('handle', { - stackInfo: stackInfo, - options: options - }); +/** + * This function is only used for react-native. + * react-native freezes object that have already been sent over the + * js bridge. We need this function in order to check if the object is frozen. + * So it's ok that objectFrozen returns false if Object.isFrozen is not + * supported because it's not relevant for other "platforms". See related issue: + * https://github.com/getsentry/react-native-sentry/issues/57 + */ +function objectFrozen(obj) { + if (!Object.isFrozen) { + return false; + } + return Object.isFrozen(obj); +} - this._processException(stackInfo.name, stackInfo.message, stackInfo.url, stackInfo.lineno, frames, options); - }, - _prepareFrames: function _prepareFrames(stackInfo, options) { - var self = this; - var frames = []; +function truncate(str, max) { + if (typeof max !== 'number') { + throw new Error('2nd argument to `truncate` function should be a number'); + } + if (typeof str !== 'string' || max === 0) { + return str; + } + return str.length <= max ? str : str.substr(0, max) + '\u2026'; +} - if (stackInfo.stack && stackInfo.stack.length) { - each(stackInfo.stack, function (i, stack) { - var frame = self._normalizeFrame(stack, stackInfo.url); +/** + * hasKey, a better form of hasOwnProperty + * Example: hasKey(MainHostObject, property) === true/false + * + * @param {Object} host object to check property + * @param {string} key to check + */ +function hasKey(object, key) { + return Object.prototype.hasOwnProperty.call(object, key); +} - if (frame) { - frames.push(frame); - } - }); // e.g. frames captured via captureMessage throw +function joinRegExp(patterns) { + // Combine an array of regular expressions and strings into one large regexp + // Be mad. + var sources = [], + i = 0, + len = patterns.length, + pattern; - if (options && options.trimHeadFrames) { - for (var j = 0; j < options.trimHeadFrames && j < frames.length; j++) { - frames[j].in_app = false; - } - } + for (; i < len; i++) { + pattern = patterns[i]; + if (isString(pattern)) { + // If it's a string, we need to escape it + // Taken from: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions + sources.push(pattern.replace(/([.*+?^=!:${}()|\[\]\/\\])/g, '\\$1')); + } else if (pattern && pattern.source) { + // If it's a regexp already, we want to extract the source + sources.push(pattern.source); } + // Intentionally skip other cases + } + return new RegExp(sources.join('|'), 'i'); +} - frames = frames.slice(0, this._globalOptions.stackTraceLimit); - return frames; - }, - _normalizeFrame: function _normalizeFrame(frame, stackInfoUrl) { - // normalize the frames data - var normalized = { - filename: frame.url, - lineno: frame.line, - colno: frame.column, - function: frame.func || '?' - }; // Case when we don't have any information about the error - // E.g. throwing a string or raw object, instead of an `Error` in Firefox - // Generating synthetic error doesn't add any value here - // - // We should probably somehow let a user know that they should fix their code +function urlencode(o) { + var pairs = []; + each(o, function(key, value) { + pairs.push(encodeURIComponent(key) + '=' + encodeURIComponent(value)); + }); + return pairs.join('&'); +} - if (!frame.url) { - normalized.filename = stackInfoUrl; // fallback to whole stacks url from onerror handler - } +// borrowed from https://tools.ietf.org/html/rfc3986#appendix-B +// intentionally using regex and not href parsing trick because React Native and other +// environments where DOM might not be available +function parseUrl(url) { + if (typeof url !== 'string') return {}; + var match = url.match(/^(([^:\/?#]+):)?(\/\/([^\/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?$/); - normalized.in_app = !( // determine if an exception came from outside of our app - // first we check the global includePaths list. - !!this._globalOptions.includePaths.test && !this._globalOptions.includePaths.test(normalized.filename) || // Now we check for fun, if the function name is Raven or TraceKit - /(Raven|TraceKit)\./.test(normalized['function']) || // finally, we do a last ditch effort and check for raven.min.js - /raven\.(min\.)?js$/.test(normalized.filename)); - return normalized; - }, - _processException: function _processException(type, message, fileurl, lineno, frames, options) { - var prefixedMessage = (type ? type + ': ' : '') + (message || ''); + // coerce to undefined values to empty string so we don't get 'undefined' + var query = match[6] || ''; + var fragment = match[8] || ''; + return { + protocol: match[2], + host: match[4], + path: match[5], + relative: match[5] + query + fragment // everything minus origin + }; +} +function uuid4() { + var crypto = _window.crypto || _window.msCrypto; - if (!!this._globalOptions.ignoreErrors.test && (this._globalOptions.ignoreErrors.test(message) || this._globalOptions.ignoreErrors.test(prefixedMessage))) { - return; - } + if (!isUndefined(crypto) && crypto.getRandomValues) { + // Use window.crypto API if available + // eslint-disable-next-line no-undef + var arr = new Uint16Array(8); + crypto.getRandomValues(arr); - var stacktrace; + // set 4 in byte 7 + arr[3] = (arr[3] & 0xfff) | 0x4000; + // set 2 most significant bits of byte 9 to '10' + arr[4] = (arr[4] & 0x3fff) | 0x8000; - if (frames && frames.length) { - fileurl = frames[0].filename || fileurl; // Sentry expects frames oldest to newest - // and JS sends them as newest to oldest + var pad = function(num) { + var v = num.toString(16); + while (v.length < 4) { + v = '0' + v; + } + return v; + }; - frames.reverse(); - stacktrace = { - frames: frames - }; - } else if (fileurl) { - stacktrace = { - frames: [{ - filename: fileurl, - lineno: lineno, - in_app: true - }] - }; - } + return ( + pad(arr[0]) + + pad(arr[1]) + + pad(arr[2]) + + pad(arr[3]) + + pad(arr[4]) + + pad(arr[5]) + + pad(arr[6]) + + pad(arr[7]) + ); + } else { + // http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/2117523#2117523 + return 'xxxxxxxxxxxx4xxxyxxxxxxxxxxxxxxx'.replace(/[xy]/g, function(c) { + var r = (Math.random() * 16) | 0, + v = c === 'x' ? r : (r & 0x3) | 0x8; + return v.toString(16); + }); + } +} - if (!!this._globalOptions.ignoreUrls.test && this._globalOptions.ignoreUrls.test(fileurl)) { - return; - } +/** + * Given a child DOM element, returns a query-selector statement describing that + * and its ancestors + * e.g. [HTMLElement] => body > div > input#foo.btn[name=baz] + * @param elem + * @returns {string} + */ +function htmlTreeAsString(elem) { + /* eslint no-extra-parens:0*/ + var MAX_TRAVERSE_HEIGHT = 5, + MAX_OUTPUT_LEN = 80, + out = [], + height = 0, + len = 0, + separator = ' > ', + sepLength = separator.length, + nextStr; - if (!!this._globalOptions.whitelistUrls.test && !this._globalOptions.whitelistUrls.test(fileurl)) { - return; + while (elem && height++ < MAX_TRAVERSE_HEIGHT) { + nextStr = htmlElementAsString(elem); + // bail out if + // - nextStr is the 'html' element + // - the length of the string that would be created exceeds MAX_OUTPUT_LEN + // (ignore this limit if we are on the first iteration) + if ( + nextStr === 'html' || + (height > 1 && len + out.length * sepLength + nextStr.length >= MAX_OUTPUT_LEN) + ) { + break; } - var data = objectMerge({ - // sentry.interfaces.Exception - exception: { - values: [{ - type: type, - value: message, - stacktrace: stacktrace - }] - }, - culprit: fileurl - }, options); // Fire away! + out.push(nextStr); - this._send(data); - }, - _trimPacket: function _trimPacket(data) { - // For now, we only want to truncate the two different messages - // but this could/should be expanded to just trim everything - var max = this._globalOptions.maxMessageLength; + len += nextStr.length; + elem = elem.parentNode; + } - if (data.message) { - data.message = truncate(data.message, max); - } + return out.reverse().join(separator); +} - if (data.exception) { - var exception = data.exception.values[0]; - exception.value = truncate(exception.value, max); - } +/** + * Returns a simple, query-selector representation of a DOM element + * e.g. [HTMLElement] => input#foo.btn[name=baz] + * @param HTMLElement + * @returns {string} + */ +function htmlElementAsString(elem) { + var out = [], + className, + classes, + key, + attr, + i; - var request = data.request; + if (!elem || !elem.tagName) { + return ''; + } - if (request) { - if (request.url) { - request.url = truncate(request.url, this._globalOptions.maxUrlLength); - } + out.push(elem.tagName.toLowerCase()); + if (elem.id) { + out.push('#' + elem.id); + } - if (request.Referer) { - request.Referer = truncate(request.Referer, this._globalOptions.maxUrlLength); - } + className = elem.className; + if (className && isString(className)) { + classes = className.split(/\s+/); + for (i = 0; i < classes.length; i++) { + out.push('.' + classes[i]); + } + } + var attrWhitelist = ['type', 'name', 'title', 'alt']; + for (i = 0; i < attrWhitelist.length; i++) { + key = attrWhitelist[i]; + attr = elem.getAttribute(key); + if (attr) { + out.push('[' + key + '="' + attr + '"]'); } + } + return out.join(''); +} - if (data.breadcrumbs && data.breadcrumbs.values) this._trimBreadcrumbs(data.breadcrumbs); - return data; - }, +/** + * Returns true if either a OR b is truthy, but not both + */ +function isOnlyOneTruthy(a, b) { + return !!(!!a ^ !!b); +} - /** - * Truncate breadcrumb values (right now just URLs) - */ - _trimBreadcrumbs: function _trimBreadcrumbs(breadcrumbs) { - // known breadcrumb properties with urls - // TODO: also consider arbitrary prop values that start with (https?)?:// - var urlProps = ['to', 'from', 'url'], - urlProp, - crumb, - data; +/** + * Returns true if both parameters are undefined + */ +function isBothUndefined(a, b) { + return isUndefined(a) && isUndefined(b); +} - for (var i = 0; i < breadcrumbs.values.length; ++i) { - crumb = breadcrumbs.values[i]; - if (!crumb.hasOwnProperty('data') || !isObject(crumb.data) || objectFrozen(crumb.data)) continue; - data = objectMerge({}, crumb.data); +/** + * Returns true if the two input exception interfaces have the same content + */ +function isSameException(ex1, ex2) { + if (isOnlyOneTruthy(ex1, ex2)) return false; - for (var j = 0; j < urlProps.length; ++j) { - urlProp = urlProps[j]; + ex1 = ex1.values[0]; + ex2 = ex2.values[0]; - if (data.hasOwnProperty(urlProp) && data[urlProp]) { - data[urlProp] = truncate(data[urlProp], this._globalOptions.maxUrlLength); - } - } + if (ex1.type !== ex2.type || ex1.value !== ex2.value) return false; - breadcrumbs.values[i].data = data; - } - }, - _getHttpData: function _getHttpData() { - if (!this._hasNavigator && !this._hasDocument) return; - var httpData = {}; + // in case both stacktraces are undefined, we can't decide so default to false + if (isBothUndefined(ex1.stacktrace, ex2.stacktrace)) return false; - if (this._hasNavigator && _navigator.userAgent) { - httpData.headers = { - 'User-Agent': navigator.userAgent - }; - } // Check in `window` instead of `document`, as we may be in ServiceWorker environment + return isSameStacktrace(ex1.stacktrace, ex2.stacktrace); +} +/** + * Returns true if the two input stack trace interfaces have the same content + */ +function isSameStacktrace(stack1, stack2) { + if (isOnlyOneTruthy(stack1, stack2)) return false; - if (_window$1.location && _window$1.location.href) { - httpData.url = _window$1.location.href; - } - - if (this._hasDocument && _document.referrer) { - if (!httpData.headers) httpData.headers = {}; - httpData.headers.Referer = _document.referrer; - } - - return httpData; - }, - _resetBackoff: function _resetBackoff() { - this._backoffDuration = 0; - this._backoffStart = null; - }, - _shouldBackoff: function _shouldBackoff() { - return this._backoffDuration && now() - this._backoffStart < this._backoffDuration; - }, + var frames1 = stack1.frames; + var frames2 = stack2.frames; - /** - * Returns true if the in-process data payload matches the signature - * of the previously-sent data - * - * NOTE: This has to be done at this level because TraceKit can generate - * data from window.onerror WITHOUT an exception object (IE8, IE9, - * other old browsers). This can take the form of an "exception" - * data object with a single frame (derived from the onerror args). - */ - _isRepeatData: function _isRepeatData(current) { - var last = this._lastData; - if (!last || current.message !== last.message || // defined for captureMessage - current.culprit !== last.culprit // defined for captureException/onerror - ) return false; // Stacktrace interface (i.e. from captureMessage) + // Exit early if frame count differs + if (frames1.length !== frames2.length) return false; - if (current.stacktrace || last.stacktrace) { - return isSameStacktrace(current.stacktrace, last.stacktrace); - } else if (current.exception || last.exception) { - // Exception interface (i.e. from captureException/onerror) - return isSameException(current.exception, last.exception); - } + // Iterate through every frame; bail out if anything differs + var a, b; + for (var i = 0; i < frames1.length; i++) { + a = frames1[i]; + b = frames2[i]; + if ( + a.filename !== b.filename || + a.lineno !== b.lineno || + a.colno !== b.colno || + a['function'] !== b['function'] + ) + return false; + } + return true; +} - return true; - }, - _setBackoffState: function _setBackoffState(request) { - // If we are already in a backoff state, don't change anything - if (this._shouldBackoff()) { - return; - } +/** + * Polyfill a method + * @param obj object e.g. `document` + * @param name method name present on object e.g. `addEventListener` + * @param replacement replacement function + * @param track {optional} record instrumentation to an array + */ +function fill(obj, name, replacement, track) { + if (obj == null) return; + var orig = obj[name]; + obj[name] = replacement(orig); + obj[name].__raven__ = true; + obj[name].__orig__ = orig; + if (track) { + track.push([obj, name, orig]); + } +} - var status = request.status; // 400 - project_id doesn't exist or some other fatal - // 401 - invalid/revoked dsn - // 429 - too many requests +/** + * Join values in array + * @param input array of values to be joined together + * @param delimiter string to be placed in-between values + * @returns {string} + */ +function safeJoin(input, delimiter) { + if (!isArray(input)) return ''; - if (!(status === 400 || status === 401 || status === 429)) return; - var retry; + var output = []; + for (var i = 0; i < input.length; i++) { try { - // If Retry-After is not in Access-Control-Expose-Headers, most - // browsers will throw an exception trying to access it - if (supportsFetch()) { - retry = request.headers.get('Retry-After'); - } else { - retry = request.getResponseHeader('Retry-After'); - } // Retry-After is returned in seconds - - - retry = parseInt(retry, 10) * 1000; + output.push(String(input[i])); } catch (e) { - /* eslint no-empty:0 */ + output.push('[value cannot be serialized]'); } + } - this._backoffDuration = retry ? // If Sentry server returned a Retry-After value, use it - retry : // Otherwise, double the last backoff duration (starts at 1 sec) - this._backoffDuration * 2 || 1000; - this._backoffStart = now(); - }, - _send: function _send(data) { - var globalOptions = this._globalOptions; - - var baseData = { - project: this._globalProject, - logger: globalOptions.logger, - platform: 'javascript' - }, - httpData = this._getHttpData(); - - if (httpData) { - baseData.request = httpData; - } // HACK: delete `trimHeadFrames` to prevent from appearing in outbound payload - - - if (data.trimHeadFrames) delete data.trimHeadFrames; - data = objectMerge(baseData, data); // Merge in the tags and extra separately since objectMerge doesn't handle a deep merge - - data.tags = objectMerge(objectMerge({}, this._globalContext.tags), data.tags); - data.extra = objectMerge(objectMerge({}, this._globalContext.extra), data.extra); // Send along our own collected metadata with extra + return output.join(delimiter); +} - data.extra['session:duration'] = now() - this._startTime; +// Default Node.js REPL depth +var MAX_SERIALIZE_EXCEPTION_DEPTH = 3; +// 50kB, as 100kB is max payload size, so half sounds reasonable +var MAX_SERIALIZE_EXCEPTION_SIZE = 50 * 1024; +var MAX_SERIALIZE_KEYS_LENGTH = 40; - if (this._breadcrumbs && this._breadcrumbs.length > 0) { - // intentionally make shallow copy so that additions - // to breadcrumbs aren't accidentally sent in this request - data.breadcrumbs = { - values: [].slice.call(this._breadcrumbs, 0) - }; - } +function utf8Length(value) { + return ~-encodeURI(value).split(/%..|./).length; +} - if (this._globalContext.user) { - // sentry.interfaces.User - data.user = this._globalContext.user; - } // Include the environment if it's defined in globalOptions +function jsonSize(value) { + return utf8Length(JSON.stringify(value)); +} +function serializeValue(value) { + if (typeof value === 'string') { + var maxLength = 40; + return truncate(value, maxLength); + } else if ( + typeof value === 'number' || + typeof value === 'boolean' || + typeof value === 'undefined' + ) { + return value; + } - if (globalOptions.environment) data.environment = globalOptions.environment; // Include the release if it's defined in globalOptions + var type = Object.prototype.toString.call(value); - if (globalOptions.release) data.release = globalOptions.release; // Include server_name if it's defined in globalOptions + // Node.js REPL notation + if (type === '[object Object]') return '[Object]'; + if (type === '[object Array]') return '[Array]'; + if (type === '[object Function]') + return value.name ? '[Function: ' + value.name + ']' : '[Function]'; - if (globalOptions.serverName) data.server_name = globalOptions.serverName; // Cleanup empty properties before sending them to the server + return value; +} - Object.keys(data).forEach(function (key) { - if (data[key] == null || data[key] === '' || isEmptyObject(data[key])) { - delete data[key]; - } +function serializeObject(value, depth) { + if (depth === 0) return serializeValue(value); + + if (isPlainObject(value)) { + return Object.keys(value).reduce(function(acc, key) { + acc[key] = serializeObject(value[key], depth - 1); + return acc; + }, {}); + } else if (Array.isArray(value)) { + return value.map(function(val) { + return serializeObject(val, depth - 1); }); + } - if (isFunction(globalOptions.dataCallback)) { - data = globalOptions.dataCallback(data) || data; - } // Why?????????? - - - if (!data || isEmptyObject(data)) { - return; - } // Check if the request should be filtered or not - + return serializeValue(value); +} - if (isFunction(globalOptions.shouldSendCallback) && !globalOptions.shouldSendCallback(data)) { - return; - } // Backoff state: Sentry server previously responded w/ an error (e.g. 429 - too many requests), - // so drop requests until "cool-off" period has elapsed. +function serializeException(ex, depth, maxSize) { + if (!isPlainObject(ex)) return ex; + depth = typeof depth !== 'number' ? MAX_SERIALIZE_EXCEPTION_DEPTH : depth; + maxSize = typeof depth !== 'number' ? MAX_SERIALIZE_EXCEPTION_SIZE : maxSize; - if (this._shouldBackoff()) { - this._logDebug('warn', 'Raven dropped error due to backoff: ', data); + var serialized = serializeObject(ex, depth); - return; - } + if (jsonSize(stringify(serialized)) > maxSize) { + return serializeException(ex, depth - 1); + } - if (typeof globalOptions.sampleRate === 'number') { - if (Math.random() < globalOptions.sampleRate) { - this._sendProcessedPayload(data); - } - } else { - this._sendProcessedPayload(data); - } - }, - _getUuid: function _getUuid() { - return uuid4(); - }, - _sendProcessedPayload: function _sendProcessedPayload(data, callback) { - var self = this; - var globalOptions = this._globalOptions; - if (!this.isSetup()) return; // Try and clean up the packet before sending by truncating long values + return serialized; +} - data = this._trimPacket(data); // ideally duplicate error testing should occur *before* dataCallback/shouldSendCallback, - // but this would require copying an un-truncated copy of the data packet, which can be - // arbitrarily deep (extra_data) -- could be worthwhile? will revisit +function serializeKeysForMessage(keys, maxLength) { + if (typeof keys === 'number' || typeof keys === 'string') return keys.toString(); + if (!Array.isArray(keys)) return ''; - if (!this._globalOptions.allowDuplicates && this._isRepeatData(data)) { - this._logDebug('warn', 'Raven dropped repeat event: ', data); + keys = keys.filter(function(key) { + return typeof key === 'string'; + }); + if (keys.length === 0) return '[object has no keys]'; - return; - } // Send along an event_id if not explicitly passed. - // This event_id can be used to reference the error within Sentry itself. - // Set lastEventId after we know the error should actually be sent + maxLength = typeof maxLength !== 'number' ? MAX_SERIALIZE_KEYS_LENGTH : maxLength; + if (keys[0].length >= maxLength) return keys[0]; + for (var usedKeys = keys.length; usedKeys > 0; usedKeys--) { + var serialized = keys.slice(0, usedKeys).join(', '); + if (serialized.length > maxLength) continue; + if (usedKeys === keys.length) return serialized; + return serialized + '\u2026'; + } - this._lastEventId = data.event_id || (data.event_id = this._getUuid()); // Store outbound payload after trim + return ''; +} - this._lastData = data; +function sanitize(input, sanitizeKeys) { + if (!isArray(sanitizeKeys) || (isArray(sanitizeKeys) && sanitizeKeys.length === 0)) + return input; - this._logDebug('debug', 'Raven about to send:', data); + var sanitizeRegExp = joinRegExp(sanitizeKeys); + var sanitizeMask = '********'; + var safeInput; - var auth = { - sentry_version: '7', - sentry_client: 'raven-js/' + this.VERSION, - sentry_key: this._globalKey - }; + try { + safeInput = JSON.parse(stringify(input)); + } catch (o_O) { + return input; + } - if (this._globalSecret) { - auth.sentry_secret = this._globalSecret; + function sanitizeWorker(workerInput) { + if (isArray(workerInput)) { + return workerInput.map(function(val) { + return sanitizeWorker(val); + }); } - var exception = data.exception && data.exception.values[0]; // only capture 'sentry' breadcrumb is autoBreadcrumbs is truthy - - if (this._globalOptions.autoBreadcrumbs && this._globalOptions.autoBreadcrumbs.sentry) { - this.captureBreadcrumb({ - category: 'sentry', - message: exception ? (exception.type ? exception.type + ': ' : '') + exception.value : data.message, - event_id: data.event_id, - level: data.level || 'error' // presume error unless specified - - }); + if (isPlainObject(workerInput)) { + return Object.keys(workerInput).reduce(function(acc, k) { + if (sanitizeRegExp.test(k)) { + acc[k] = sanitizeMask; + } else { + acc[k] = sanitizeWorker(workerInput[k]); + } + return acc; + }, {}); } - var url = this._globalEndpoint; + return workerInput; + } - (globalOptions.transport || this._makeRequest).call(this, { - url: url, - auth: auth, - data: data, - options: globalOptions, - onSuccess: function success() { - self._resetBackoff(); + return sanitizeWorker(safeInput); +} - self._triggerEvent('success', { - data: data, - src: url - }); +module.exports = { + isObject: isObject, + isError: isError, + isErrorEvent: isErrorEvent, + isUndefined: isUndefined, + isFunction: isFunction, + isPlainObject: isPlainObject, + isString: isString, + isArray: isArray, + isEmptyObject: isEmptyObject, + supportsErrorEvent: supportsErrorEvent, + supportsFetch: supportsFetch, + supportsReferrerPolicy: supportsReferrerPolicy, + supportsPromiseRejectionEvent: supportsPromiseRejectionEvent, + wrappedCallback: wrappedCallback, + each: each, + objectMerge: objectMerge, + truncate: truncate, + objectFrozen: objectFrozen, + hasKey: hasKey, + joinRegExp: joinRegExp, + urlencode: urlencode, + uuid4: uuid4, + htmlTreeAsString: htmlTreeAsString, + htmlElementAsString: htmlElementAsString, + isSameException: isSameException, + isSameStacktrace: isSameStacktrace, + parseUrl: parseUrl, + fill: fill, + safeJoin: safeJoin, + serializeException: serializeException, + serializeKeysForMessage: serializeKeysForMessage, + sanitize: sanitize +}; - callback && callback(); - }, - onError: function failure(error) { - self._logDebug('error', 'Raven transport failed to send: ', error); +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"10":10}],9:[function(_dereq_,module,exports){ +(function (global){ +var utils = _dereq_(8); - if (error.request) { - self._setBackoffState(error.request); - } +/* + TraceKit - Cross brower stack traces - self._triggerEvent('failure', { - data: data, - src: url - }); + This was originally forked from github.com/occ/TraceKit, but has since been + largely re-written and is now maintained as part of raven-js. Tests for + this are in test/vendor. - error = error || new Error('Raven send failed (no additional details provided)'); - callback && callback(error); - } - }); - }, - _makeRequest: function _makeRequest(opts) { - // Auth is intentionally sent as part of query string (NOT as custom HTTP header) to avoid preflight CORS requests - var url = opts.url + '?' + urlencode(opts.auth); - var evaluatedHeaders = null; - var evaluatedFetchParameters = {}; + MIT license +*/ - if (opts.options.headers) { - evaluatedHeaders = this._evaluateHash(opts.options.headers); - } +var TraceKit = { + collectWindowErrors: true, + debug: false +}; - if (opts.options.fetchParameters) { - evaluatedFetchParameters = this._evaluateHash(opts.options.fetchParameters); - } +// This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) +var _window = + typeof window !== 'undefined' + ? window + : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; - if (supportsFetch()) { - evaluatedFetchParameters.body = stringify_1(opts.data); - var defaultFetchOptions = objectMerge({}, this._fetchDefaults); - var fetchOptions = objectMerge(defaultFetchOptions, evaluatedFetchParameters); +// global reference to slice +var _slice = [].slice; +var UNKNOWN_FUNCTION = '?'; - if (evaluatedHeaders) { - fetchOptions.headers = evaluatedHeaders; - } +// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error#Error_types +var ERROR_TYPES_RE = /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/; - return _window$1.fetch(url, fetchOptions).then(function (response) { - if (response.ok) { - opts.onSuccess && opts.onSuccess(); - } else { - var error = new Error('Sentry error code: ' + response.status); // It's called request only to keep compatibility with XHR interface - // and not add more redundant checks in setBackoffState method +function getLocationHref() { + if (typeof document === 'undefined' || document.location == null) return ''; - error.request = response; - opts.onError && opts.onError(error); - } - })['catch'](function () { - opts.onError && opts.onError(new Error('Sentry error code: network unavailable')); - }); + return document.location.href; +} + +/** + * TraceKit.report: cross-browser processing of unhandled exceptions + * + * Syntax: + * TraceKit.report.subscribe(function(stackInfo) { ... }) + * TraceKit.report.unsubscribe(function(stackInfo) { ... }) + * TraceKit.report(exception) + * try { ...code... } catch(ex) { TraceKit.report(ex); } + * + * Supports: + * - Firefox: full stack trace with line numbers, plus column number + * on top frame; column number is not guaranteed + * - Opera: full stack trace with line and column numbers + * - Chrome: full stack trace with line and column numbers + * - Safari: line and column number for the top frame only; some frames + * may be missing, and column number is not guaranteed + * - IE: line and column number for the top frame only; some frames + * may be missing, and column number is not guaranteed + * + * In theory, TraceKit should work on all of the following versions: + * - IE5.5+ (only 8.0 tested) + * - Firefox 0.9+ (only 3.5+ tested) + * - Opera 7+ (only 10.50 tested; versions 9 and earlier may require + * Exceptions Have Stacktrace to be enabled in opera:config) + * - Safari 3+ (only 4+ tested) + * - Chrome 1+ (only 5+ tested) + * - Konqueror 3.5+ (untested) + * + * Requires TraceKit.computeStackTrace. + * + * Tries to catch all unhandled exceptions and report them to the + * subscribed handlers. Please note that TraceKit.report will rethrow the + * exception. This is REQUIRED in order to get a useful stack trace in IE. + * If the exception does not reach the top of the browser, you will only + * get a stack trace from the point where TraceKit.report was called. + * + * Handlers receive a stackInfo object as described in the + * TraceKit.computeStackTrace docs. + */ +TraceKit.report = (function reportModuleWrapper() { + var handlers = [], + lastArgs = null, + lastException = null, + lastExceptionStack = null; + + /** + * Add a crash handler. + * @param {Function} handler + */ + function subscribe(handler) { + installGlobalHandler(); + handlers.push(handler); + } + + /** + * Remove a crash handler. + * @param {Function} handler + */ + function unsubscribe(handler) { + for (var i = handlers.length - 1; i >= 0; --i) { + if (handlers[i] === handler) { + handlers.splice(i, 1); + } + } + } + + /** + * Remove all crash handlers. + */ + function unsubscribeAll() { + uninstallGlobalHandler(); + handlers = []; + } + + /** + * Dispatch stack information to all handlers. + * @param {Object.} stack + */ + function notifyHandlers(stack, isWindowError) { + var exception = null; + if (isWindowError && !TraceKit.collectWindowErrors) { + return; + } + for (var i in handlers) { + if (handlers.hasOwnProperty(i)) { + try { + handlers[i].apply(null, [stack].concat(_slice.call(arguments, 2))); + } catch (inner) { + exception = inner; + } + } + } + + if (exception) { + throw exception; + } + } + + var _oldOnerrorHandler, _onErrorHandlerInstalled; + + /** + * Ensures all global unhandled exceptions are recorded. + * Supported by Gecko and IE. + * @param {string} msg Error message. + * @param {string} url URL of script that generated the exception. + * @param {(number|string)} lineNo The line number at which the error + * occurred. + * @param {?(number|string)} colNo The column number at which the error + * occurred. + * @param {?Error} ex The actual Error object. + */ + function traceKitWindowOnError(msg, url, lineNo, colNo, ex) { + var stack = null; + // If 'ex' is ErrorEvent, get real Error from inside + var exception = utils.isErrorEvent(ex) ? ex.error : ex; + // If 'msg' is ErrorEvent, get real message from inside + var message = utils.isErrorEvent(msg) ? msg.message : msg; + + if (lastExceptionStack) { + TraceKit.computeStackTrace.augmentStackTraceWithInitialElement( + lastExceptionStack, + url, + lineNo, + message + ); + processLastException(); + } else if (exception && utils.isError(exception)) { + // non-string `exception` arg; attempt to extract stack trace + + // New chrome and blink send along a real error object + // Let's just report that like a normal error. + // See: https://mikewest.org/2013/08/debugging-runtime-errors-with-window-onerror + stack = TraceKit.computeStackTrace(exception); + notifyHandlers(stack, true); + } else { + var location = { + url: url, + line: lineNo, + column: colNo + }; + + var name = undefined; + var groups; + + if ({}.toString.call(message) === '[object String]') { + var groups = message.match(ERROR_TYPES_RE); + if (groups) { + name = groups[1]; + message = groups[2]; + } + } + + location.func = UNKNOWN_FUNCTION; + + stack = { + name: name, + message: message, + url: getLocationHref(), + stack: [location] + }; + notifyHandlers(stack, true); + } + + if (_oldOnerrorHandler) { + return _oldOnerrorHandler.apply(this, arguments); + } + + return false; + } + + function installGlobalHandler() { + if (_onErrorHandlerInstalled) { + return; + } + _oldOnerrorHandler = _window.onerror; + _window.onerror = traceKitWindowOnError; + _onErrorHandlerInstalled = true; + } + + function uninstallGlobalHandler() { + if (!_onErrorHandlerInstalled) { + return; + } + _window.onerror = _oldOnerrorHandler; + _onErrorHandlerInstalled = false; + _oldOnerrorHandler = undefined; + } + + function processLastException() { + var _lastExceptionStack = lastExceptionStack, + _lastArgs = lastArgs; + lastArgs = null; + lastExceptionStack = null; + lastException = null; + notifyHandlers.apply(null, [_lastExceptionStack, false].concat(_lastArgs)); + } + + /** + * Reports an unhandled Error to TraceKit. + * @param {Error} ex + * @param {?boolean} rethrow If false, do not re-throw the exception. + * Only used for window.onerror to not cause an infinite loop of + * rethrowing. + */ + function report(ex, rethrow) { + var args = _slice.call(arguments, 1); + if (lastExceptionStack) { + if (lastException === ex) { + return; // already caught by an inner catch block, ignore + } else { + processLastException(); + } + } + + var stack = TraceKit.computeStackTrace(ex); + lastExceptionStack = stack; + lastException = ex; + lastArgs = args; + + // If the stack trace is incomplete, wait for 2 seconds for + // slow slow IE to see if onerror occurs or not before reporting + // this exception; otherwise, we will end up with an incomplete + // stack trace + setTimeout(function() { + if (lastException === ex) { + processLastException(); + } + }, stack.incomplete ? 2000 : 0); + + if (rethrow !== false) { + throw ex; // re-throw to propagate to the top level (and cause window.onerror) + } + } + + report.subscribe = subscribe; + report.unsubscribe = unsubscribe; + report.uninstall = unsubscribeAll; + return report; +})(); + +/** + * TraceKit.computeStackTrace: cross-browser stack traces in JavaScript + * + * Syntax: + * s = TraceKit.computeStackTrace(exception) // consider using TraceKit.report instead (see below) + * Returns: + * s.name - exception name + * s.message - exception message + * s.stack[i].url - JavaScript or HTML file URL + * s.stack[i].func - function name, or empty for anonymous functions (if guessing did not work) + * s.stack[i].args - arguments passed to the function, if known + * s.stack[i].line - line number, if known + * s.stack[i].column - column number, if known + * + * Supports: + * - Firefox: full stack trace with line numbers and unreliable column + * number on top frame + * - Opera 10: full stack trace with line and column numbers + * - Opera 9-: full stack trace with line numbers + * - Chrome: full stack trace with line and column numbers + * - Safari: line and column number for the topmost stacktrace element + * only + * - IE: no line numbers whatsoever + * + * Tries to guess names of anonymous functions by looking for assignments + * in the source code. In IE and Safari, we have to guess source file names + * by searching for function bodies inside all page scripts. This will not + * work for scripts that are loaded cross-domain. + * Here be dragons: some function names may be guessed incorrectly, and + * duplicate functions may be mismatched. + * + * TraceKit.computeStackTrace should only be used for tracing purposes. + * Logging of unhandled exceptions should be done with TraceKit.report, + * which builds on top of TraceKit.computeStackTrace and provides better + * IE support by utilizing the window.onerror event to retrieve information + * about the top of the stack. + * + * Note: In IE and Safari, no stack trace is recorded on the Error object, + * so computeStackTrace instead walks its *own* chain of callers. + * This means that: + * * in Safari, some methods may be missing from the stack trace; + * * in IE, the topmost function in the stack trace will always be the + * caller of computeStackTrace. + * + * This is okay for tracing (because you are likely to be calling + * computeStackTrace from the function you want to be the topmost element + * of the stack trace anyway), but not okay for logging unhandled + * exceptions (because your catch block will likely be far away from the + * inner function that actually caused the exception). + * + */ +TraceKit.computeStackTrace = (function computeStackTraceWrapper() { + // Contents of Exception in various browsers. + // + // SAFARI: + // ex.message = Can't find variable: qq + // ex.line = 59 + // ex.sourceId = 580238192 + // ex.sourceURL = http://... + // ex.expressionBeginOffset = 96 + // ex.expressionCaretOffset = 98 + // ex.expressionEndOffset = 98 + // ex.name = ReferenceError + // + // FIREFOX: + // ex.message = qq is not defined + // ex.fileName = http://... + // ex.lineNumber = 59 + // ex.columnNumber = 69 + // ex.stack = ...stack trace... (see the example below) + // ex.name = ReferenceError + // + // CHROME: + // ex.message = qq is not defined + // ex.name = ReferenceError + // ex.type = not_defined + // ex.arguments = ['aa'] + // ex.stack = ...stack trace... + // + // INTERNET EXPLORER: + // ex.message = ... + // ex.name = ReferenceError + // + // OPERA: + // ex.message = ...message... (see the example below) + // ex.name = ReferenceError + // ex.opera#sourceloc = 11 (pretty much useless, duplicates the info in ex.message) + // ex.stacktrace = n/a; see 'opera:config#UserPrefs|Exceptions Have Stacktrace' + + /** + * Computes stack trace information from the stack property. + * Chrome and Gecko use this property. + * @param {Error} ex + * @return {?Object.} Stack trace information. + */ + function computeStackTraceFromStackProp(ex) { + if (typeof ex.stack === 'undefined' || !ex.stack) return; + + var chrome = /^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i; + var winjs = /^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i; + // NOTE: blob urls are now supposed to always have an origin, therefore it's format + // which is `blob:http://url/path/with-some-uuid`, is matched by `blob.*?:\/` as well + var gecko = /^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i; + // Used to additionally parse URL/line/column from eval frames + var geckoEval = /(\S+) line (\d+)(?: > eval line \d+)* > eval/i; + var chromeEval = /\((\S*)(?::(\d+))(?::(\d+))\)/; + var lines = ex.stack.split('\n'); + var stack = []; + var submatch; + var parts; + var element; + var reference = /^(.*) is undefined$/.exec(ex.message); + + for (var i = 0, j = lines.length; i < j; ++i) { + if ((parts = chrome.exec(lines[i]))) { + var isNative = parts[2] && parts[2].indexOf('native') === 0; // start of line + var isEval = parts[2] && parts[2].indexOf('eval') === 0; // start of line + if (isEval && (submatch = chromeEval.exec(parts[2]))) { + // throw out eval line/column and use top-most line/column number + parts[2] = submatch[1]; // url + parts[3] = submatch[2]; // line + parts[4] = submatch[3]; // column + } + element = { + url: !isNative ? parts[2] : null, + func: parts[1] || UNKNOWN_FUNCTION, + args: isNative ? [parts[2]] : [], + line: parts[3] ? +parts[3] : null, + column: parts[4] ? +parts[4] : null + }; + } else if ((parts = winjs.exec(lines[i]))) { + element = { + url: parts[2], + func: parts[1] || UNKNOWN_FUNCTION, + args: [], + line: +parts[3], + column: parts[4] ? +parts[4] : null + }; + } else if ((parts = gecko.exec(lines[i]))) { + var isEval = parts[3] && parts[3].indexOf(' > eval') > -1; + if (isEval && (submatch = geckoEval.exec(parts[3]))) { + // throw out eval line/column and use top-most line number + parts[3] = submatch[1]; + parts[4] = submatch[2]; + parts[5] = null; // no column when eval + } else if (i === 0 && !parts[5] && typeof ex.columnNumber !== 'undefined') { + // FireFox uses this awesome columnNumber property for its top frame + // Also note, Firefox's column number is 0-based and everything else expects 1-based, + // so adding 1 + // NOTE: this hack doesn't work if top-most frame is eval + stack[0].column = ex.columnNumber + 1; + } + element = { + url: parts[3], + func: parts[1] || UNKNOWN_FUNCTION, + args: parts[2] ? parts[2].split(',') : [], + line: parts[4] ? +parts[4] : null, + column: parts[5] ? +parts[5] : null + }; + } else { + continue; + } + + if (!element.func && element.line) { + element.func = UNKNOWN_FUNCTION; + } + + stack.push(element); + } + + if (!stack.length) { + return null; + } + + return { + name: ex.name, + message: ex.message, + url: getLocationHref(), + stack: stack + }; + } + + /** + * Adds information about the first frame to incomplete stack traces. + * Safari and IE require this to get complete data on the first frame. + * @param {Object.} stackInfo Stack trace information from + * one of the compute* methods. + * @param {string} url The URL of the script that caused an error. + * @param {(number|string)} lineNo The line number of the script that + * caused an error. + * @param {string=} message The error generated by the browser, which + * hopefully contains the name of the object that caused the error. + * @return {boolean} Whether or not the stack information was + * augmented. + */ + function augmentStackTraceWithInitialElement(stackInfo, url, lineNo, message) { + var initial = { + url: url, + line: lineNo + }; + + if (initial.url && initial.line) { + stackInfo.incomplete = false; + + if (!initial.func) { + initial.func = UNKNOWN_FUNCTION; + } + + if (stackInfo.stack.length > 0) { + if (stackInfo.stack[0].url === initial.url) { + if (stackInfo.stack[0].line === initial.line) { + return false; // already in stack trace + } else if ( + !stackInfo.stack[0].line && + stackInfo.stack[0].func === initial.func + ) { + stackInfo.stack[0].line = initial.line; + return false; + } + } + } + + stackInfo.stack.unshift(initial); + stackInfo.partial = true; + return true; + } else { + stackInfo.incomplete = true; } - var request = _window$1.XMLHttpRequest && new _window$1.XMLHttpRequest(); - if (!request) return; // if browser doesn't support CORS (e.g. IE7), we are out of luck + return false; + } - var hasCORS = 'withCredentials' in request || typeof XDomainRequest !== 'undefined'; - if (!hasCORS) return; + /** + * Computes stack trace information by walking the arguments.caller + * chain at the time the exception occurred. This will cause earlier + * frames to be missed but is the only way to get any stack trace in + * Safari and IE. The top frame is restored by + * {@link augmentStackTraceWithInitialElement}. + * @param {Error} ex + * @return {?Object.} Stack trace information. + */ + function computeStackTraceByWalkingCallerChain(ex, depth) { + var functionName = /function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i, + stack = [], + funcs = {}, + recursion = false, + parts, + item, + source; + + for ( + var curr = computeStackTraceByWalkingCallerChain.caller; + curr && !recursion; + curr = curr.caller + ) { + if (curr === computeStackTrace || curr === TraceKit.report) { + // console.log('skipping internal function'); + continue; + } - if ('withCredentials' in request) { - request.onreadystatechange = function () { - if (request.readyState !== 4) { - return; - } else if (request.status === 200) { - opts.onSuccess && opts.onSuccess(); - } else if (opts.onError) { - var err = new Error('Sentry error code: ' + request.status); - err.request = request; - opts.onError(err); - } + item = { + url: null, + func: UNKNOWN_FUNCTION, + line: null, + column: null }; - } else { - request = new XDomainRequest(); // xdomainrequest cannot go http -> https (or vice versa), - // so always use protocol relative - url = url.replace(/^https?:/, ''); // onreadystatechange not supported by XDomainRequest + if (curr.name) { + item.func = curr.name; + } else if ((parts = functionName.exec(curr.toString()))) { + item.func = parts[1]; + } - if (opts.onSuccess) { - request.onload = opts.onSuccess; + if (typeof item.func === 'undefined') { + try { + item.func = parts.input.substring(0, parts.input.indexOf('{')); + } catch (e) {} } - if (opts.onError) { - request.onerror = function () { - var err = new Error('Sentry error code: XDomainRequest'); - err.request = request; - opts.onError(err); - }; + if (funcs['' + curr]) { + recursion = true; + } else { + funcs['' + curr] = true; } - } - request.open('POST', url); + stack.push(item); + } - if (evaluatedHeaders) { - each(evaluatedHeaders, function (key, value) { - request.setRequestHeader(key, value); - }); + if (depth) { + // console.log('depth is ' + depth); + // console.log('stack is ' + stack.length); + stack.splice(0, depth); } - request.send(stringify_1(opts.data)); - }, - _evaluateHash: function _evaluateHash(hash) { - var evaluated = {}; + var result = { + name: ex.name, + message: ex.message, + url: getLocationHref(), + stack: stack + }; + augmentStackTraceWithInitialElement( + result, + ex.sourceURL || ex.fileName, + ex.line || ex.lineNumber, + ex.message || ex.description + ); + return result; + } - for (var key in hash) { - if (hash.hasOwnProperty(key)) { - var value = hash[key]; - evaluated[key] = typeof value === 'function' ? value() : value; + /** + * Computes a stack trace for an exception. + * @param {Error} ex + * @param {(string|number)=} depth + */ + function computeStackTrace(ex, depth) { + var stack = null; + depth = depth == null ? 0 : +depth; + + try { + stack = computeStackTraceFromStackProp(ex); + if (stack) { + return stack; + } + } catch (e) { + if (TraceKit.debug) { + throw e; } } - return evaluated; - }, - _logDebug: function _logDebug(level) { - if (this._originalConsoleMethods[level] && this.debug) { - // In IE<10 console methods do not have their own 'apply' method - Function.prototype.apply.call(this._originalConsoleMethods[level], this._originalConsole, [].slice.call(arguments, 1)); - } - }, - _mergeContext: function _mergeContext(key, context) { - if (isUndefined(context)) { - delete this._globalContext[key]; - } else { - this._globalContext[key] = objectMerge(this._globalContext[key] || {}, context); + try { + stack = computeStackTraceByWalkingCallerChain(ex, depth + 1); + if (stack) { + return stack; + } + } catch (e) { + if (TraceKit.debug) { + throw e; + } } + return { + name: ex.name, + message: ex.message, + url: getLocationHref() + }; } -}; // Deprecations -Raven$1.prototype.setUser = Raven$1.prototype.setUserContext; -Raven$1.prototype.setReleaseContext = Raven$1.prototype.setRelease; -var raven = Raven$1; + computeStackTrace.augmentStackTraceWithInitialElement = augmentStackTraceWithInitialElement; + computeStackTrace.computeStackTraceFromStackProp = computeStackTraceFromStackProp; -/** - * Enforces a single instance of the Raven client, and the - * main entry point for Raven. If you are a consumer of the - * Raven library, you SHOULD load this file (vs raven.js). - **/ -// This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) + return computeStackTrace; +})(); -var _window = typeof window !== 'undefined' ? window : typeof commonjsGlobal !== 'undefined' ? commonjsGlobal : typeof self !== 'undefined' ? self : {}; +module.exports = TraceKit; -var _Raven = _window.Raven; -var Raven = new raven(); +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"8":8}],10:[function(_dereq_,module,exports){ /* - * Allow multiple versions of Raven to be installed. - * Strip Raven from the global context and returns the instance. - * - * @return {Raven} - */ + json-stringify-safe + Like JSON.stringify, but doesn't throw on circular references. -Raven.noConflict = function () { - _window.Raven = _Raven; - return Raven; -}; + Originally forked from https://github.com/isaacs/json-stringify-safe + version 5.0.1 on 3/8/2017 and modified to handle Errors serialization + and IE8 compatibility. Tests for this are in test/vendor. -Raven.afterLoad(); -var singleton = Raven; + ISC license: https://github.com/isaacs/json-stringify-safe/blob/master/LICENSE +*/ -/** - * Ember.js plugin - * - * Patches event handler callbacks and ajax callbacks. - */ -function emberPlugin(Raven, Ember) { - Ember = Ember || window.Ember; // quit if Ember isn't on the page +exports = module.exports = stringify; +exports.getSerialize = serializer; - if (!Ember) return; - var _oldOnError = Ember.onerror; +function indexOf(haystack, needle) { + for (var i = 0; i < haystack.length; ++i) { + if (haystack[i] === needle) return i; + } + return -1; +} - Ember.onerror = function EmberOnError(error) { - Raven.captureException(error); +function stringify(obj, replacer, spaces, cycleReplacer) { + return JSON.stringify(obj, serializer(replacer, cycleReplacer), spaces); +} - if (typeof _oldOnError === 'function') { - _oldOnError.call(this, error); - } +// https://github.com/ftlabs/js-abbreviate/blob/fa709e5f139e7770a71827b1893f22418097fbda/index.js#L95-L106 +function stringifyError(value) { + var err = { + // These properties are implemented as magical getters and don't show up in for in + stack: value.stack, + message: value.message, + name: value.name }; - Ember.RSVP.on('error', function (reason) { - if (reason instanceof Error) { - Raven.captureException(reason, { - extra: { - context: 'Unhandled Promise error detected' - } - }); - } else { - Raven.captureMessage('Unhandled Promise error detected', { - extra: { - reason: reason - } - }); + for (var i in value) { + if (Object.prototype.hasOwnProperty.call(value, i)) { + err[i] = value[i]; } - }); + } + + return err; } -var ember = emberPlugin; +function serializer(replacer, cycleReplacer) { + var stack = []; + var keys = []; -/*global define*/ + if (cycleReplacer == null) { + cycleReplacer = function(key, value) { + if (stack[0] === value) { + return '[Circular ~]'; + } + return '[Circular ~.' + keys.slice(0, indexOf(stack, value)).join('.') + ']'; + }; + } -/** - * require.js plugin - * - * Automatically wrap define/require callbacks. (Experimental) - */ + return function(key, value) { + if (stack.length > 0) { + var thisPos = indexOf(stack, this); + ~thisPos ? stack.splice(thisPos + 1) : stack.push(this); + ~thisPos ? keys.splice(thisPos, Infinity, key) : keys.push(key); -function requirePlugin(Raven) { - if (typeof undefined === 'function' && undefined.amd) { - window.define = Raven.wrap({ - deep: false - }, undefined); - window.require = Raven.wrap({ - deep: false - }, commonjsRequire); - } -} + if (~indexOf(stack, value)) { + value = cycleReplacer.call(this, key, value); + } + } else { + stack.push(value); + } -var require_1 = requirePlugin; + return replacer == null + ? value instanceof Error ? stringifyError(value) : value + : replacer.call(this, key, value); + }; +} -/** - * Vue.js 2.0 plugin +},{}],11:[function(_dereq_,module,exports){ +/* + * JavaScript MD5 + * https://github.com/blueimp/JavaScript-MD5 * + * Copyright 2011, Sebastian Tschan + * https://blueimp.net + * + * Licensed under the MIT license: + * https://opensource.org/licenses/MIT + * + * Based on + * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message + * Digest Algorithm, as defined in RFC 1321. + * Version 2.2 Copyright (C) Paul Johnston 1999 - 2009 + * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet + * Distributed under the BSD License + * See http://pajhome.org.uk/crypt/md5 for more info. */ -function formatComponentName(vm) { - if (vm.$root === vm) { - return 'root instance'; - } - var name = vm._isVue ? vm.$options.name || vm.$options._componentTag : vm.name; - return (name ? 'component <' + name + '>' : 'anonymous component') + (vm._isVue && vm.$options.__file ? ' at ' + vm.$options.__file : ''); +/* +* Add integers, wrapping at 2^32. This uses 16-bit operations internally +* to work around bugs in some JS interpreters. +*/ +function safeAdd(x, y) { + var lsw = (x & 0xffff) + (y & 0xffff); + var msw = (x >> 16) + (y >> 16) + (lsw >> 16); + return (msw << 16) | (lsw & 0xffff); } -function vuePlugin(Raven, Vue) { - Vue = Vue || window.Vue; // quit if Vue isn't on the page +/* +* Bitwise rotate a 32-bit number to the left. +*/ +function bitRotateLeft(num, cnt) { + return (num << cnt) | (num >>> (32 - cnt)); +} - if (!Vue || !Vue.config) return; - var _oldOnError = Vue.config.errorHandler; +/* +* These functions implement the four basic operations the algorithm uses. +*/ +function md5cmn(q, a, b, x, s, t) { + return safeAdd(bitRotateLeft(safeAdd(safeAdd(a, q), safeAdd(x, t)), s), b); +} +function md5ff(a, b, c, d, x, s, t) { + return md5cmn((b & c) | (~b & d), a, b, x, s, t); +} +function md5gg(a, b, c, d, x, s, t) { + return md5cmn((b & d) | (c & ~d), a, b, x, s, t); +} +function md5hh(a, b, c, d, x, s, t) { + return md5cmn(b ^ c ^ d, a, b, x, s, t); +} +function md5ii(a, b, c, d, x, s, t) { + return md5cmn(c ^ (b | ~d), a, b, x, s, t); +} - Vue.config.errorHandler = function VueErrorHandler(error, vm, info) { - var metaData = {}; // vm and lifecycleHook are not always available +/* +* Calculate the MD5 of an array of little-endian words, and a bit length. +*/ +function binlMD5(x, len) { + /* append padding */ + x[len >> 5] |= 0x80 << (len % 32); + x[(((len + 64) >>> 9) << 4) + 14] = len; + + var i; + var olda; + var oldb; + var oldc; + var oldd; + var a = 1732584193; + var b = -271733879; + var c = -1732584194; + var d = 271733878; + + for (i = 0; i < x.length; i += 16) { + olda = a; + oldb = b; + oldc = c; + oldd = d; + + a = md5ff(a, b, c, d, x[i], 7, -680876936); + d = md5ff(d, a, b, c, x[i + 1], 12, -389564586); + c = md5ff(c, d, a, b, x[i + 2], 17, 606105819); + b = md5ff(b, c, d, a, x[i + 3], 22, -1044525330); + a = md5ff(a, b, c, d, x[i + 4], 7, -176418897); + d = md5ff(d, a, b, c, x[i + 5], 12, 1200080426); + c = md5ff(c, d, a, b, x[i + 6], 17, -1473231341); + b = md5ff(b, c, d, a, x[i + 7], 22, -45705983); + a = md5ff(a, b, c, d, x[i + 8], 7, 1770035416); + d = md5ff(d, a, b, c, x[i + 9], 12, -1958414417); + c = md5ff(c, d, a, b, x[i + 10], 17, -42063); + b = md5ff(b, c, d, a, x[i + 11], 22, -1990404162); + a = md5ff(a, b, c, d, x[i + 12], 7, 1804603682); + d = md5ff(d, a, b, c, x[i + 13], 12, -40341101); + c = md5ff(c, d, a, b, x[i + 14], 17, -1502002290); + b = md5ff(b, c, d, a, x[i + 15], 22, 1236535329); + + a = md5gg(a, b, c, d, x[i + 1], 5, -165796510); + d = md5gg(d, a, b, c, x[i + 6], 9, -1069501632); + c = md5gg(c, d, a, b, x[i + 11], 14, 643717713); + b = md5gg(b, c, d, a, x[i], 20, -373897302); + a = md5gg(a, b, c, d, x[i + 5], 5, -701558691); + d = md5gg(d, a, b, c, x[i + 10], 9, 38016083); + c = md5gg(c, d, a, b, x[i + 15], 14, -660478335); + b = md5gg(b, c, d, a, x[i + 4], 20, -405537848); + a = md5gg(a, b, c, d, x[i + 9], 5, 568446438); + d = md5gg(d, a, b, c, x[i + 14], 9, -1019803690); + c = md5gg(c, d, a, b, x[i + 3], 14, -187363961); + b = md5gg(b, c, d, a, x[i + 8], 20, 1163531501); + a = md5gg(a, b, c, d, x[i + 13], 5, -1444681467); + d = md5gg(d, a, b, c, x[i + 2], 9, -51403784); + c = md5gg(c, d, a, b, x[i + 7], 14, 1735328473); + b = md5gg(b, c, d, a, x[i + 12], 20, -1926607734); + + a = md5hh(a, b, c, d, x[i + 5], 4, -378558); + d = md5hh(d, a, b, c, x[i + 8], 11, -2022574463); + c = md5hh(c, d, a, b, x[i + 11], 16, 1839030562); + b = md5hh(b, c, d, a, x[i + 14], 23, -35309556); + a = md5hh(a, b, c, d, x[i + 1], 4, -1530992060); + d = md5hh(d, a, b, c, x[i + 4], 11, 1272893353); + c = md5hh(c, d, a, b, x[i + 7], 16, -155497632); + b = md5hh(b, c, d, a, x[i + 10], 23, -1094730640); + a = md5hh(a, b, c, d, x[i + 13], 4, 681279174); + d = md5hh(d, a, b, c, x[i], 11, -358537222); + c = md5hh(c, d, a, b, x[i + 3], 16, -722521979); + b = md5hh(b, c, d, a, x[i + 6], 23, 76029189); + a = md5hh(a, b, c, d, x[i + 9], 4, -640364487); + d = md5hh(d, a, b, c, x[i + 12], 11, -421815835); + c = md5hh(c, d, a, b, x[i + 15], 16, 530742520); + b = md5hh(b, c, d, a, x[i + 2], 23, -995338651); + + a = md5ii(a, b, c, d, x[i], 6, -198630844); + d = md5ii(d, a, b, c, x[i + 7], 10, 1126891415); + c = md5ii(c, d, a, b, x[i + 14], 15, -1416354905); + b = md5ii(b, c, d, a, x[i + 5], 21, -57434055); + a = md5ii(a, b, c, d, x[i + 12], 6, 1700485571); + d = md5ii(d, a, b, c, x[i + 3], 10, -1894986606); + c = md5ii(c, d, a, b, x[i + 10], 15, -1051523); + b = md5ii(b, c, d, a, x[i + 1], 21, -2054922799); + a = md5ii(a, b, c, d, x[i + 8], 6, 1873313359); + d = md5ii(d, a, b, c, x[i + 15], 10, -30611744); + c = md5ii(c, d, a, b, x[i + 6], 15, -1560198380); + b = md5ii(b, c, d, a, x[i + 13], 21, 1309151649); + a = md5ii(a, b, c, d, x[i + 4], 6, -145523070); + d = md5ii(d, a, b, c, x[i + 11], 10, -1120210379); + c = md5ii(c, d, a, b, x[i + 2], 15, 718787259); + b = md5ii(b, c, d, a, x[i + 9], 21, -343485551); + + a = safeAdd(a, olda); + b = safeAdd(b, oldb); + c = safeAdd(c, oldc); + d = safeAdd(d, oldd); + } + return [a, b, c, d]; +} - if (Object.prototype.toString.call(vm) === '[object Object]') { - metaData.componentName = formatComponentName(vm); - metaData.propsData = vm.$options.propsData; - } +/* +* Convert an array of little-endian words to a string +*/ +function binl2rstr(input) { + var i; + var output = ''; + var length32 = input.length * 32; + for (i = 0; i < length32; i += 8) { + output += String.fromCharCode((input[i >> 5] >>> (i % 32)) & 0xff); + } + return output; +} - if (typeof info !== 'undefined') { - metaData.lifecycleHook = info; - } +/* +* Convert a raw string to an array of little-endian words +* Characters >255 have their high-byte silently ignored. +*/ +function rstr2binl(input) { + var i; + var output = []; + output[(input.length >> 2) - 1] = undefined; + for (i = 0; i < output.length; i += 1) { + output[i] = 0; + } + var length8 = input.length * 8; + for (i = 0; i < length8; i += 8) { + output[i >> 5] |= (input.charCodeAt(i / 8) & 0xff) << (i % 32); + } + return output; +} - Raven.captureException(error, { - extra: metaData - }); +/* +* Calculate the MD5 of a raw string +*/ +function rstrMD5(s) { + return binl2rstr(binlMD5(rstr2binl(s), s.length * 8)); +} - if (typeof _oldOnError === 'function') { - _oldOnError.call(this, error, vm, info); - } - }; +/* +* Calculate the HMAC-MD5, of a key and some data (raw strings) +*/ +function rstrHMACMD5(key, data) { + var i; + var bkey = rstr2binl(key); + var ipad = []; + var opad = []; + var hash; + ipad[15] = opad[15] = undefined; + if (bkey.length > 16) { + bkey = binlMD5(bkey, key.length * 8); + } + for (i = 0; i < 16; i += 1) { + ipad[i] = bkey[i] ^ 0x36363636; + opad[i] = bkey[i] ^ 0x5c5c5c5c; + } + hash = binlMD5(ipad.concat(rstr2binl(data)), 512 + data.length * 8); + return binl2rstr(binlMD5(opad.concat(hash), 512 + 128)); +} + +/* +* Convert a raw string to a hex string +*/ +function rstr2hex(input) { + var hexTab = '0123456789abcdef'; + var output = ''; + var x; + var i; + for (i = 0; i < input.length; i += 1) { + x = input.charCodeAt(i); + output += hexTab.charAt((x >>> 4) & 0x0f) + hexTab.charAt(x & 0x0f); + } + return output; } -var vue = vuePlugin; +/* +* Encode a string as utf-8 +*/ +function str2rstrUTF8(input) { + return unescape(encodeURIComponent(input)); +} -/* This file was generated by './scripts/generate-plugin-combinations.js'! */ +/* +* Take string arguments and return either raw or hex encoded strings +*/ +function rawMD5(s) { + return rstrMD5(str2rstrUTF8(s)); +} +function hexMD5(s) { + return rstr2hex(rawMD5(s)); +} +function rawHMACMD5(k, d) { + return rstrHMACMD5(str2rstrUTF8(k), str2rstrUTF8(d)); +} +function hexHMACMD5(k, d) { + return rstr2hex(rawHMACMD5(k, d)); +} -singleton.addPlugin(ember).addPlugin(require_1).addPlugin(vue); -var ember_require_vue = {}; +function md5(string, key, raw) { + if (!key) { + if (!raw) { + return hexMD5(string); + } + return rawMD5(string); + } + if (!raw) { + return hexHMACMD5(key, string); + } + return rawHMACMD5(key, string); +} -return ember_require_vue; +module.exports = md5; -}))); +},{}]},{},[7,1,2,3])(7) +}); \ No newline at end of file diff --git a/dist/ember,require,vue/raven.min.js b/dist/ember,require,vue/raven.min.js index 1cfb941edf96..ff9f670c89e2 100644 --- a/dist/ember,require,vue/raven.min.js +++ b/dist/ember,require,vue/raven.min.js @@ -1,3 +1,4 @@ -/*! Raven.js 3.22.2 (1b6187b) | github.com/getsentry/raven-js */ -!function(a,b){"object"==typeof exports&&"undefined"!=typeof module?module.exports=b():"function"==typeof define&&define.amd?define(b):a.Raven=b()}(this,function(){"use strict";function a(a,b){return b={exports:{}},a(b,b.exports),b.exports}function b(a){return(b="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(a){return typeof a}:function(a){return a&&"function"==typeof Symbol&&a.constructor===Symbol&&a!==Symbol.prototype?"symbol":typeof a})(a)}function c(a){return"object"===b(a)&&null!==a}function d(a){switch({}.toString.call(a)){case"[object Error]":return!0;case"[object Exception]":return!0;case"[object DOMException]":return!0;default:return a instanceof Error}}function e(a){return l()&&"[object ErrorEvent]"==={}.toString.call(a)}function f(a){return void 0===a}function g(a){return"function"==typeof a}function h(a){return"[object Object]"===Object.prototype.toString.call(a)}function i(a){return"[object String]"===Object.prototype.toString.call(a)}function j(a){return"[object Array]"===Object.prototype.toString.call(a)}function k(a){if(!h(a))return!1;for(var b in a)if(a.hasOwnProperty(b))return!1;return!0}function l(){try{return new ErrorEvent(""),!0}catch(a){return!1}}function m(){if(!("fetch"in Q))return!1;try{return new Headers,new Request(""),new Response,!0}catch(a){return!1}}function n(a){function b(b,c){var d=a(b)||b;return c?c(d)||d:d}return b}function o(a,b){var c,d;if(f(a.length))for(c in a)s(a,c)&&b.call(null,c,a[c]);else if(d=a.length)for(c=0;c ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function y(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&i(b))for(c=b.split(/\s+/),f=0;f":"anonymous component")+(a._isVue&&a.$options.__file?" at "+a.$options.__file:"")}function N(a,b){if(b=b||window.Vue,b&&b.config){var c=b.config.errorHandler;b.config.errorHandler=function(b,d,e){var f={};"[object Object]"===Object.prototype.toString.call(d)&&(f.componentName=M(d),f.propsData=d.$options.propsData),"undefined"!=typeof e&&(f.lifecycleHook=e),a.captureException(b,{extra:f}),"function"==typeof c&&c.call(this,b,d,e)}}}var O="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{},P=Object.setPrototypeOf||function(a,b){return a.B=b,a},Q=("object"==typeof Reflect&&Reflect.construct||function(a,b,c){var d,e=[null];return e.push.apply(e,b),d=a.bind.apply(a,e),P(new d,c.prototype)},"undefined"!=typeof window?window:"undefined"!=typeof O?O:"undefined"!=typeof self?self:{}),R={isObject:c,isError:d,isErrorEvent:e,isUndefined:f,isFunction:g,isPlainObject:h,isString:i,isArray:j,isEmptyObject:k,supportsErrorEvent:l,supportsFetch:m,wrappedCallback:n,each:o,objectMerge:p,truncate:r,objectFrozen:q,hasKey:s,joinRegExp:t,urlencode:u,uuid4:w,htmlTreeAsString:x,htmlElementAsString:y,isSameException:B,isSameStacktrace:C,parseUrl:v,fill:D,safeJoin:E},S={collectWindowErrors:!0,debug:!1},T="undefined"!=typeof window?window:"undefined"!=typeof O?O:"undefined"!=typeof self?self:{},U=[].slice,V="?",W=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;S.report=function(){function a(a){f(),l.push(a)}function b(a){for(var b=l.length-1;b>=0;--b)l[b]===a&&l.splice(b,1)}function c(){g(),l=[]}function d(a,b){var c=null;if(!b||S.collectWindowErrors){for(var d in l)if(l.hasOwnProperty(d))try{l[d].apply(null,[a].concat(U.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function e(a,b,c,e,f){var g=null,i=R.isErrorEvent(f)?f.error:f,k=R.isErrorEvent(a)?a.message:a;if(o)S.computeStackTrace.augmentStackTraceWithInitialElement(o,b,c,k),h();else if(i&&R.isError(i))g=S.computeStackTrace(i),d(g,!0);else{var l,m={url:b,line:c,column:e},n=void 0;if("[object String]"==={}.toString.call(k)){var l=k.match(W);l&&(n=l[1],k=l[2])}m.func=V,g={name:n,message:k,url:F(),stack:[m]},d(g,!0)}return!!j&&j.apply(this,arguments)}function f(){k||(j=T.onerror,T.onerror=e,k=!0)}function g(){k&&(T.onerror=j,k=!1,j=void 0)}function h(){var a=o,b=m;m=null,o=null,n=null,d.apply(null,[a,!1].concat(b))}function i(a,b){var c=U.call(arguments,1);if(o){if(n===a)return;h()}var d=S.computeStackTrace(a);if(o=d,n=a,m=c,setTimeout(function(){n===a&&h()},d.incomplete?2e3:0),b!==!1)throw a}var j,k,l=[],m=null,n=null,o=null;return i.subscribe=a,i.unsubscribe=b,i.uninstall=c,i}(),S.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,d,e=/^\s*at (.*?) ?\(((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,f=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|\[native).*?|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,g=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,h=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,i=/\((\S*)(?::(\d+))(?::(\d+))\)/,j=a.stack.split("\n"),k=[],l=(/^(.*) is undefined$/.exec(a.message),0),m=j.length;l eval")>-1;o&&(b=h.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==l||c[5]||"undefined"==typeof a.columnNumber||(k[0].column=a.columnNumber+1),d={url:c[3],func:c[1]||V,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}!d.func&&d.line&&(d.func=V),k.push(d)}return k.length?{name:a.name,message:a.message,url:F(),stack:k}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=V),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,e){for(var f,g,h=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,i=[],j={},k=!1,l=c.caller;l&&!k;l=l.caller)if(l!==d&&l!==S.report){if(g={url:null,func:V,line:null,column:null},l.name?g.func=l.name:(f=h.exec(l.toString()))&&(g.func=f[1]),"undefined"==typeof g.func)try{g.func=f.input.substring(0,f.input.indexOf("{"))}catch(m){}j[""+l]?k=!0:j[""+l]=!0,i.push(g)}e&&i.splice(0,e);var n={name:a.name,message:a.message,url:F(),stack:i};return b(n,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),n}function d(b,d){var e=null;d=null==d?0:+d;try{if(e=a(b))return e}catch(f){if(S.debug)throw f}try{if(e=c(b,d+1))return e}catch(f){if(S.debug)throw f}return{name:b.name,message:b.message,url:F()}}return d.augmentStackTraceWithInitialElement=b,d.computeStackTraceFromStackProp=a,d}();var X=S,Y=a(function(a,b){function c(a,b){for(var c=0;c0){var i=c(d,this);~i?d.splice(i+1):d.push(this),~i?f.splice(i,1/0,g):f.push(g),~c(d,h)&&(h=b.call(this,g,h))}else d.push(h);return null==a?h instanceof Error?e(h):h:a.call(this,g,h)}}b=a.exports=d,b.getSerialize=f});G.prototype=new Error,G.prototype.constructor=G;var Z=G,$=function(a,b,c){var d=a[b],e=a;if(b in a){var f="warn"===b?"warning":b;a[b]=function(){var a=[].slice.call(arguments),g=R.safeJoin(a," "),h={level:f,logger:"console",extra:{arguments:a}};"assert"===b?a[0]===!1&&(g="Assertion failed: "+(R.safeJoin(a.slice(1)," ")||"console.assert"),h.extra.arguments=a.slice(1),c&&c(g,h)):c&&c(g,h),d&&Function.prototype.apply.call(d,e,a)}}},_={wrapMethod:$},aa=R.isError,ba=R.isObject,ca=R.isErrorEvent,da=R.isUndefined,ea=R.isFunction,fa=R.isString,ga=R.isArray,ha=R.isEmptyObject,ia=R.each,ja=R.objectMerge,ka=R.truncate,la=R.objectFrozen,ma=R.hasKey,na=R.joinRegExp,oa=R.urlencode,pa=R.uuid4,qa=R.htmlTreeAsString,ra=R.isSameException,sa=R.isSameStacktrace,ta=R.parseUrl,ua=R.fill,va=R.supportsFetch,wa=_.wrapMethod,xa="source protocol user pass host port path".split(" "),ya=/^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/,za="undefined"!=typeof window?window:"undefined"!=typeof O?O:"undefined"!=typeof self?self:{},Aa=za.document,Ba=za.navigator;J.prototype={VERSION:"3.22.2",debug:!1,TraceKit:X,config:function(a,b){var c=this;if(c.i)return this.C("error","Error: Raven has already been configured"),c;if(!a)return c;var d=c.m;b&&ia(b,function(a,b){"tags"===a||"extra"===a||"user"===a?c.l[a]=b:d[a]=b}),c.setDSN(a),d.ignoreErrors.push(/^Script error\.?$/),d.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/),d.ignoreErrors=na(d.ignoreErrors),d.ignoreUrls=!!d.ignoreUrls.length&&na(d.ignoreUrls),d.whitelistUrls=!!d.whitelistUrls.length&&na(d.whitelistUrls),d.includePaths=na(d.includePaths),d.maxBreadcrumbs=Math.max(0,Math.min(d.maxBreadcrumbs||100,100));var e={xhr:!0,console:!0,dom:!0,location:!0,sentry:!0},f=d.autoBreadcrumbs;"[object Object]"==={}.toString.call(f)?f=ja(e,f):f!==!1&&(f=e),d.autoBreadcrumbs=f;var g={tryCatch:!0},h=d.instrument;return"[object Object]"==={}.toString.call(h)?h=ja(g,h):h!==!1&&(h=g),d.instrument=h,X.collectWindowErrors=!!d.collectWindowErrors,c},install:function(){var a=this;return a.isSetup()&&!a.p&&(X.report.subscribe(function(){a.D.apply(a,arguments)}),a.E(),a.m.instrument&&a.m.instrument.tryCatch&&a.F(),a.m.autoBreadcrumbs&&a.G(),a.H(),a.p=!0),Error.stackTraceLimit=a.m.stackTraceLimit,this},setDSN:function(a){var b=this,c=b.I(a),d=c.path.lastIndexOf("/"),e=c.path.substr(1,d);b.J=a,b.j=c.user,b.K=c.pass&&c.pass.substr(1),b.k=c.path.substr(d+1),b.i=b.L(c),b.M=b.i+"/"+e+"api/"+b.k+"/store/",this.A()},context:function(a,b,c){return ea(a)&&(c=b||[],b=a,a=void 0),this.wrap(a,b).apply(this,c)},wrap:function(a,b,c){function d(){var d=[],f=arguments.length,g=!a||a&&a.deep!==!1;for(c&&ea(c)&&c.apply(this,arguments);f--;)d[f]=g?e.wrap(a,arguments[f]):arguments[f];try{return b.apply(this,d)}catch(h){throw e.N(),e.captureException(h,a),h}}var e=this;if(da(b)&&!ea(a))return a;if(ea(a)&&(b=a,a=void 0),!ea(b))return b;try{if(b.a)return b;if(b.O)return b.O}catch(f){return b}for(var g in b)ma(b,g)&&(d[g]=b[g]);return d.prototype=b.prototype,b.O=d,d.a=!0,d.b=b,d},uninstall:function(){return X.report.uninstall(),this.P(),this.Q(),this.R(),Error.stackTraceLimit=this.q,this.p=!1,this},captureException:function(a,b){b=ja({trimHeadFrames:0},b?b:{});var c=!aa(a),d=!ca(a),e=ca(a)&&!a.error;if(c&&d||e)return this.captureMessage(a,ja(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}));ca(a)&&(a=a.error),this.f=a;try{var f=X.computeStackTrace(a);this.S(f,b)}catch(g){if(a!==g)throw g}return this},captureMessage:function(a,b){if(!this.m.ignoreErrors.test||!this.m.ignoreErrors.test(a)){b=b||{};var c,d=ja({message:a+""},b);try{throw new Error(a)}catch(e){c=e}c.name=null;var f=X.computeStackTrace(c),g=ga(f.stack)&&f.stack[1],h=g&&g.url||"";if((!this.m.ignoreUrls.test||!this.m.ignoreUrls.test(h))&&(!this.m.whitelistUrls.test||this.m.whitelistUrls.test(h))){if(this.m.stacktrace||b&&b.stacktrace){b=ja({fingerprint:a,trimHeadFrames:(b.trimHeadFrames||0)+1},b);var i=this.T(f,b);d.stacktrace={frames:i.reverse()}}return this.U(d),this}}},captureBreadcrumb:function(a){var b=ja({timestamp:H()/1e3},a);if(ea(this.m.breadcrumbCallback)){var c=this.m.breadcrumbCallback(b);if(ba(c)&&!ha(c))b=c;else if(c===!1)return this}return this.w.push(b),this.w.length>this.m.maxBreadcrumbs&&this.w.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.t.push([a,b]),this.p&&this.H(),this},setUserContext:function(a){return this.l.user=a,this},setExtraContext:function(a){return this.V("extra",a),this},setTagsContext:function(a){return this.V("tags",a),this},clearContext:function(){return this.l={},this},getContext:function(){return JSON.parse(Y(this.l))},setEnvironment:function(a){return this.m.environment=a,this},setRelease:function(a){return this.m.release=a,this},setDataCallback:function(a){var b=this.m.dataCallback;return this.m.dataCallback=I(b,a),this},setBreadcrumbCallback:function(a){var b=this.m.breadcrumbCallback;return this.m.breadcrumbCallback=I(b,a),this},setShouldSendCallback:function(a){var b=this.m.shouldSendCallback;return this.m.shouldSendCallback=I(b,a),this},setTransport:function(a){return this.m.transport=a,this},lastException:function(){return this.f},lastEventId:function(){return this.h},isSetup:function(){return!!this.c&&(!!this.i||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.C("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=za.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(Aa){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new Z("Missing eventId");var c=a.dsn||this.J;if(!c)throw new Z("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.l.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.L(this.I(c)),h=Aa.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(Aa.head||Aa.body).appendChild(h)}},N:function(){var a=this;this.o+=1,setTimeout(function(){a.o-=1})},W:function(a,b){var c,d;if(this.d){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),Aa.createEvent?(c=Aa.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=Aa.createEventObject(),c.eventType=a);for(d in b)ma(b,d)&&(c[d]=b[d]);if(Aa.createEvent)Aa.dispatchEvent(c);else try{Aa.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},X:function(a){var b=this;return function(c){if(b.Y=null,b.x!==c){b.x=c;var d;try{d=qa(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},Z:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.Y;g||a.X("input")(c),clearTimeout(g),a.Y=setTimeout(function(){a.Y=null},b)}}},$:function(a,b){var c=ta(this.y.href),d=ta(b),e=ta(a);this.z=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},E:function(){var a=this;a._=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.a?a._.apply(this.b,arguments):a._.apply(this,arguments)}},P:function(){this._&&(Function.prototype.toString=this._)},F:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.$(b.z,c+""),a.apply(this,arguments)}};ua(history,"pushState",j,d),ua(history,"replaceState",j,d)}if(c.console&&"console"in za&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};ia(["debug","info","warn","error","log"],function(a,b){wa(console,b,k)})}},Q:function(){for(var a;this.v.length;){a=this.v.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},R:function(){for(var a in this.s)this.r[a]=this.s[a]},H:function(){var a=this;ia(this.t,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},I:function(a){var b=ya.exec(a),c={},d=7;try{for(;d--;)c[xa[d]]=b[d]||""}catch(e){throw new Z("Invalid DSN: "+a)}if(c.pass&&!this.m.allowSecretKey)throw new Z("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},L:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},D:function(){this.o||this.S.apply(this,arguments)},S:function(a,b){var c=this.T(a,b);this.W("handle",{stackInfo:a,options:b}),this.ba(a.name,a.message,a.url,a.lineno,c,b)},T:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(ia(a.stack,function(b,e){var f=c.ca(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.w,0)}),this.l.user&&(a.user=this.l.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||ha(a[b]))&&delete a[b]}),ea(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!ha(a)&&(!ea(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.ia()?void this.C("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random()":"anonymous component")+(a._isVue&&a.$options.__file?" at "+a.$options.__file:"")}function e(a,b){if(b=b||window.Vue,b&&b.config){var c=b.config.errorHandler;b.config.errorHandler=function(b,e,f){var g={};"[object Object]"===Object.prototype.toString.call(e)&&(g.componentName=d(e),g.propsData=e.$options.propsData),"undefined"!=typeof f&&(g.lifecycleHook=f),a.captureException(b,{extra:g}),"function"==typeof c&&c.call(this,b,e,f)}}}b.exports=e,a(7).addPlugin(b.exports)},{7:7}],4:[function(a,b,c){function d(a){this.name="RavenConfigError",this.message=a}d.prototype=new Error,d.prototype.constructor=d,b.exports=d},{}],5:[function(a,b,c){var d=a(8),e=function(a,b,c){var e=a[b],f=a;if(b in a){var g="warn"===b?"warning":b;a[b]=function(){var a=[].slice.call(arguments),h=d.safeJoin(a," "),i={level:g,logger:"console",extra:{arguments:a}};"assert"===b?a[0]===!1&&(h="Assertion failed: "+(d.safeJoin(a.slice(1)," ")||"console.assert"),i.extra.arguments=a.slice(1),c&&c(h,i)):c&&c(h,i),e&&Function.prototype.apply.call(e,f,a)}}};b.exports={wrapMethod:e}},{8:8}],6:[function(a,b,c){(function(c){function d(){return+new Date}function e(a,b){return q(b)?function(c){return b(c,a)}:b}function f(){this.a=!("object"!=typeof JSON||!JSON.stringify),this.b=!p(Q),this.c=!p(R),this.d=null,this.e=null,this.f=null,this.g=null,this.h=null,this.i=null,this.j={},this.k={release:P.SENTRY_RELEASE&&P.SENTRY_RELEASE.id,logger:"javascript",ignoreErrors:[],ignoreUrls:[],whitelistUrls:[],includePaths:[],headers:null,collectWindowErrors:!0,captureUnhandledRejections:!0,maxMessageLength:0,maxUrlLength:250,stackTraceLimit:50,autoBreadcrumbs:!0,instrument:!0,sampleRate:1,sanitizeKeys:[]},this.l={method:"POST",keepalive:!0,referrerPolicy:I()?"origin":""},this.m=0,this.n=!1,this.o=Error.stackTraceLimit,this.p=P.console||{},this.q={},this.r=[],this.s=d(),this.t=[],this.u=[],this.v=null,this.w=P.location,this.x=this.w&&this.w.href,this.y();for(var a in this.p)this.q[a]=this.p[a]}var g=a(9),h=a(10),i=a(11),j=a(4),k=a(8),l=k.isError,m=k.isObject,n=k.isPlainObject,o=k.isErrorEvent,p=k.isUndefined,q=k.isFunction,r=k.isString,s=k.isArray,t=k.isEmptyObject,u=k.each,v=k.objectMerge,w=k.truncate,x=k.objectFrozen,y=k.hasKey,z=k.joinRegExp,A=k.urlencode,B=k.uuid4,C=k.htmlTreeAsString,D=k.isSameException,E=k.isSameStacktrace,F=k.parseUrl,G=k.fill,H=k.supportsFetch,I=k.supportsReferrerPolicy,J=k.serializeKeysForMessage,K=k.serializeException,L=k.sanitize,M=a(5).wrapMethod,N="source protocol user pass host port path".split(" "),O=/^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/,P="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},Q=P.document,R=P.navigator;f.prototype={VERSION:"3.24.2",debug:!1,TraceKit:g,config:function(a,b){var c=this;if(c.g)return this.z("error","Error: Raven has already been configured"),c;if(!a)return c;var d=c.k;b&&u(b,function(a,b){"tags"===a||"extra"===a||"user"===a?c.j[a]=b:d[a]=b}),c.setDSN(a),d.ignoreErrors.push(/^Script error\.?$/),d.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/),d.ignoreErrors=z(d.ignoreErrors),d.ignoreUrls=!!d.ignoreUrls.length&&z(d.ignoreUrls),d.whitelistUrls=!!d.whitelistUrls.length&&z(d.whitelistUrls),d.includePaths=z(d.includePaths),d.maxBreadcrumbs=Math.max(0,Math.min(d.maxBreadcrumbs||100,100));var e={xhr:!0,console:!0,dom:!0,location:!0,sentry:!0},f=d.autoBreadcrumbs;"[object Object]"==={}.toString.call(f)?f=v(e,f):f!==!1&&(f=e),d.autoBreadcrumbs=f;var h={tryCatch:!0},i=d.instrument;return"[object Object]"==={}.toString.call(i)?i=v(h,i):i!==!1&&(i=h),d.instrument=i,g.collectWindowErrors=!!d.collectWindowErrors,c},install:function(){var a=this;return a.isSetup()&&!a.n&&(g.report.subscribe(function(){a.A.apply(a,arguments)}),a.k.captureUnhandledRejections&&a.B(),a.C(),a.k.instrument&&a.k.instrument.tryCatch&&a.D(),a.k.autoBreadcrumbs&&a.E(),a.F(),a.n=!0),Error.stackTraceLimit=a.k.stackTraceLimit,this},setDSN:function(a){var b=this,c=b.G(a),d=c.path.lastIndexOf("/"),e=c.path.substr(1,d);b.H=a,b.h=c.user,b.I=c.pass&&c.pass.substr(1),b.i=c.path.substr(d+1),b.g=b.J(c),b.K=b.g+"/"+e+"api/"+b.i+"/store/",this.y()},context:function(a,b,c){return q(a)&&(c=b||[],b=a,a=void 0),this.wrap(a,b).apply(this,c)},wrap:function(a,b,c){function d(){var d=[],f=arguments.length,g=!a||a&&a.deep!==!1;for(c&&q(c)&&c.apply(this,arguments);f--;)d[f]=g?e.wrap(a,arguments[f]):arguments[f];try{return b.apply(this,d)}catch(h){throw e.L(),e.captureException(h,a),h}}var e=this;if(p(b)&&!q(a))return a;if(q(a)&&(b=a,a=void 0),!q(b))return b;try{if(b.M)return b;if(b.N)return b.N}catch(f){return b}for(var g in b)y(b,g)&&(d[g]=b[g]);return d.prototype=b.prototype,b.N=d,d.M=!0,d.O=b,d},uninstall:function(){return g.report.uninstall(),this.P(),this.Q(),this.R(),this.S(),Error.stackTraceLimit=this.o,this.n=!1,this},T:function(a){this.z("debug","Raven caught unhandled promise rejection:",a),this.captureException(a.reason,{extra:{unhandledPromiseRejection:!0}})},B:function(){return this.T=this.T.bind(this),P.addEventListener&&P.addEventListener("unhandledrejection",this.T),this},P:function(){return P.removeEventListener&&P.removeEventListener("unhandledrejection",this.T),this},captureException:function(a,b){if(b=v({trimHeadFrames:0},b?b:{}),o(a)&&a.error)a=a.error;else if(l(a))a=a;else{if(!n(a))return this.captureMessage(a,v(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}));b=this.U(b,a),a=new Error(b.message)}this.d=a;try{var c=g.computeStackTrace(a);this.V(c,b)}catch(d){if(a!==d)throw d}return this},U:function(a,b){var c=Object.keys(b).sort(),d=v(a,{message:"Non-Error exception captured with keys: "+J(c),fingerprint:[i(c)],extra:a.extra||{}});return d.extra.W=K(b),d},captureMessage:function(a,b){if(!this.k.ignoreErrors.test||!this.k.ignoreErrors.test(a)){b=b||{},a+="";var c,d=v({message:a},b);try{throw new Error(a)}catch(e){c=e}c.name=null;var f=g.computeStackTrace(c),h=s(f.stack)&&f.stack[1];h&&"Raven.captureException"===h.func&&(h=f.stack[2]);var i=h&&h.url||"";if((!this.k.ignoreUrls.test||!this.k.ignoreUrls.test(i))&&(!this.k.whitelistUrls.test||this.k.whitelistUrls.test(i))){if(this.k.stacktrace||b&&b.stacktrace){d.fingerprint=null==d.fingerprint?a:d.fingerprint,b=v({trimHeadFrames:0},b),b.trimHeadFrames+=1;var j=this.X(f,b);d.stacktrace={frames:j.reverse()}}return d.fingerprint&&(d.fingerprint=s(d.fingerprint)?d.fingerprint:[d.fingerprint]),this.Y(d),this}}},captureBreadcrumb:function(a){var b=v({timestamp:d()/1e3},a);if(q(this.k.breadcrumbCallback)){var c=this.k.breadcrumbCallback(b);if(m(c)&&!t(c))b=c;else if(c===!1)return this}return this.u.push(b),this.u.length>this.k.maxBreadcrumbs&&this.u.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.r.push([a,b]),this.n&&this.F(),this},setUserContext:function(a){return this.j.user=a,this},setExtraContext:function(a){return this.Z("extra",a),this},setTagsContext:function(a){return this.Z("tags",a),this},clearContext:function(){return this.j={},this},getContext:function(){return JSON.parse(h(this.j))},setEnvironment:function(a){return this.k.environment=a,this},setRelease:function(a){return this.k.release=a,this},setDataCallback:function(a){var b=this.k.dataCallback;return this.k.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.k.breadcrumbCallback;return this.k.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.k.shouldSendCallback;return this.k.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.k.transport=a,this},lastException:function(){return this.d},lastEventId:function(){return this.f},isSetup:function(){return!!this.a&&(!!this.g||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.z("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=P.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(Q){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.H;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.j.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.J(this.G(c)),h=Q.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(Q.head||Q.body).appendChild(h)}},L:function(){var a=this;this.m+=1,setTimeout(function(){a.m-=1})},$:function(a,b){var c,d;if(this.b){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),Q.createEvent?(c=Q.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=Q.createEventObject(),c.eventType=a);for(d in b)y(b,d)&&(c[d]=b[d]);if(Q.createEvent)Q.dispatchEvent(c);else try{Q.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},_:function(a){var b=this;return function(c){if(b.aa=null,b.v!==c){b.v=c;var d;try{d=C(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ba:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.aa;g||a._("input")(c),clearTimeout(g),a.aa=setTimeout(function(){a.aa=null},b)}}},ca:function(a,b){var c=F(this.w.href),d=F(b),e=F(a);this.x=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},C:function(){var a=this;a.da=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.M?a.da.apply(this.O,arguments):a.da.apply(this,arguments)}},Q:function(){this.da&&(Function.prototype.toString=this.da)},D:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.ca(b.x,c+""),a.apply(this,arguments)}};G(history,"pushState",j,d),G(history,"replaceState",j,d)}if(c.console&&"console"in P&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};u(["debug","info","warn","error","log"],function(a,b){M(console,b,k)})}},R:function(){for(var a;this.t.length;){a=this.t.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},S:function(){for(var a in this.q)this.p[a]=this.q[a]},F:function(){var a=this;u(this.r,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},G:function(a){var b=O.exec(a),c={},d=7;try{for(;d--;)c[N[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.k.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},J:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},A:function(){this.m||this.V.apply(this,arguments)},V:function(a,b){var c=this.X(a,b);this.$("handle",{stackInfo:a,options:b}),this.fa(a.name,a.message,a.url,a.lineno,c,b)},X:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(u(a.stack,function(b,e){var f=c.ga(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.u,0)}),this.j.user&&(a.user=this.j.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),a=this.pa(a),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||t(a[b]))&&delete a[b]}),q(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!t(a)&&(!q(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.ma()?void this.z("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function B(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&j(b))for(c=b.split(/\s+/),f=0;fc?M(a,b-1):d}function N(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?T:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function O(a,b){function c(a){return k(a)?a.map(function(a){return c(a)}):i(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!k(b)||k(b)&&0===b.length)return a;var d,e=w(b),f="********";try{d=JSON.parse(P(a))}catch(g){return a}return c(d)}var P=a(10),Q="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},R=3,S=51200,T=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isUndefined:g,isFunction:h,isPlainObject:i,isString:j,isArray:k,isEmptyObject:l,supportsErrorEvent:m,supportsFetch:n,supportsReferrerPolicy:o,supportsPromiseRejectionEvent:p,wrappedCallback:q,each:r,objectMerge:s,truncate:u,objectFrozen:t,hasKey:v,joinRegExp:w,urlencode:x,uuid4:z,htmlTreeAsString:A,htmlElementAsString:B,isSameException:E,isSameStacktrace:F,parseUrl:y,fill:G,safeJoin:H,serializeException:M,serializeKeysForMessage:N,sanitize:O}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{10:10}],9:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}var e=a(8),f={collectWindowErrors:!0,debug:!1},g="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},h=[].slice,i="?",j=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;f.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function k(a,b){var c=null;if(!b||f.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(h.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,g,h){var l=null,m=e.isErrorEvent(h)?h.error:h,n=e.isErrorEvent(a)?a.message:a;if(v)f.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&e.isError(m))l=f.computeStackTrace(m),k(l,!0);else{var p,r={url:b,line:c,column:g},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(j);p&&(s=p[1],n=p[2])}r.func=i,l={name:s,message:n,url:d(),stack:[r]},k(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=g.onerror,g.onerror=l,r=!0)}function n(){r&&(g.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,k.apply(null,[a,!1].concat(b))}function p(a,b){var c=h.call(arguments,1);if(v){if(u===a)return;o()}var d=f.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),f.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,e,f=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,g=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,h=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,j=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,k=/\((\S*)(?::(\d+))(?::(\d+))\)/,l=a.stack.split("\n"),m=[],n=(/^(.*) is undefined$/.exec(a.message),0),o=l.length;n eval")>-1;q&&(b=j.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==n||c[5]||"undefined"==typeof a.columnNumber||(m[0].column=a.columnNumber+1),e={url:c[3],func:c[1]||i,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}!e.func&&e.line&&(e.func=i),m.push(e)}return m.length?{name:a.name,message:a.message,url:d(),stack:m}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=i),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,g){for(var h,j,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==e&&o!==f.report){if(j={url:null,func:i,line:null,column:null},o.name?j.func=o.name:(h=k.exec(o.toString()))&&(j.func=h[1]),"undefined"==typeof j.func)try{j.func=h.input.substring(0,h.input.indexOf("{"))}catch(p){}m[""+o]?n=!0:m[""+o]=!0,l.push(j)}g&&l.splice(0,g);var q={name:a.name,message:a.message,url:d(),stack:l};return b(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),q}function e(b,e){var g=null;e=null==e?0:+e;try{if(g=a(b))return g}catch(h){if(f.debug)throw h}try{if(g=c(b,e+1))return g}catch(h){if(f.debug)throw h}return{name:b.name,message:b.message,url:d()}}return e.augmentStackTraceWithInitialElement=b, +e.computeStackTraceFromStackProp=a,e}(),b.exports=f}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{8:8}],10:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}],11:[function(a,b,c){function d(a,b){var c=(65535&a)+(65535&b),d=(a>>16)+(b>>16)+(c>>16);return d<<16|65535&c}function e(a,b){return a<>>32-b}function f(a,b,c,f,g,h){return d(e(d(d(b,a),d(f,h)),g),c)}function g(a,b,c,d,e,g,h){return f(b&c|~b&d,a,b,e,g,h)}function h(a,b,c,d,e,g,h){return f(b&d|c&~d,a,b,e,g,h)}function i(a,b,c,d,e,g,h){return f(b^c^d,a,b,e,g,h)}function j(a,b,c,d,e,g,h){return f(c^(b|~d),a,b,e,g,h)}function k(a,b){a[b>>5]|=128<>>9<<4)+14]=b;var c,e,f,k,l,m=1732584193,n=-271733879,o=-1732584194,p=271733878;for(c=0;c>5]>>>b%32&255);return c}function m(a){var b,c=[];for(c[(a.length>>2)-1]=void 0,b=0;b>5]|=(255&a.charCodeAt(b/8))<16&&(e=k(e,8*a.length)),c=0;c<16;c+=1)f[c]=909522486^e[c],g[c]=1549556828^e[c];return d=k(f.concat(m(b)),512+8*b.length),l(k(g.concat(d),640))}function p(a){var b,c,d="0123456789abcdef",e="";for(c=0;c>>4&15)+d.charAt(15&b);return e}function q(a){return unescape(encodeURIComponent(a))}function r(a){return n(q(a))}function s(a){return p(r(a))}function t(a,b){return o(q(a),q(b))}function u(a,b){return p(t(a,b))}function v(a,b,c){return b?c?t(b,a):u(b,a):c?r(a):s(a)}b.exports=v},{}]},{},[7,1,2,3])(7)}); //# sourceMappingURL=raven.min.js.map \ No newline at end of file diff --git a/dist/ember,require,vue/raven.min.js.map b/dist/ember,require,vue/raven.min.js.map index 269f8b1fec1d..767c20187904 100644 --- a/dist/ember,require,vue/raven.min.js.map +++ b/dist/ember,require,vue/raven.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["raven.js"],"names":["global","factory","exports","module","define","amd","Raven","this","createCommonjsModule","fn","_typeof","obj","Symbol","iterator","constructor","prototype","isObject$1","what","isError$1","value","toString","call","Error","isErrorEvent$1","supportsErrorEvent","isUndefined$1","isFunction$1","isPlainObject","Object","isString$1","isArray$1","isEmptyObject$1","_","hasOwnProperty","ErrorEvent","e","supportsFetch$1","_window$3","Headers","Request","Response","wrappedCallback","callback","dataCallback","data","original","normalizedData","each$1","i","j","length","hasKey$1","objectMerge$1","obj1","obj2","key","objectFrozen$1","isFrozen","truncate$1","str","max","substr","object","joinRegExp$1","patterns","pattern","sources","len","push","replace","source","RegExp","join","urlencode$1","o","pairs","encodeURIComponent","parseUrl$1","url","match","query","fragment","protocol","host","path","relative","uuid4$1","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","r","Math","random","htmlTreeAsString$1","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","reverse","className","classes","attr","tagName","toLowerCase","id","split","attrWhitelist","getAttribute","isOnlyOneTruthy","a","b","isBothUndefined","isSameException$1","ex1","ex2","values","type","stacktrace","isSameStacktrace$1","stack1","stack2","frames1","frames","frames2","filename","lineno","colno","fill$1","name","replacement","track","orig","__raven__","__orig__","safeJoin","input","delimiter","output","String","getLocationHref","document","location","href","RavenConfigError","message","now","Date","keepOriginalCallback","isFunction","Raven$1","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window$1","SENTRY_RELEASE","logger","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","_fetchDefaults","method","keepalive","referrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","console","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","_lastHref","_resetBackoff","emberPlugin","Ember","window","_oldOnError","onerror","error","captureException","RSVP","on","reason","extra","context","captureMessage","requirePlugin","formatComponentName","vm","$root","_isVue","$options","_componentTag","__file","vuePlugin","Vue","config","errorHandler","info","metaData","componentName","propsData","lifecycleHook","commonjsGlobal","self","_sPO","setPrototypeOf","p","__proto__","Reflect","construct","Parent","args","Class","Constructor","apply","bind","utils","isObject","isError","isErrorEvent","isString","isArray","isEmptyObject","supportsFetch","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","TraceKit","debug","_window$2","_slice","slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","report","subscribe","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","stack","isWindowError","exception","concat","arguments","inner","traceKitWindowOnError","msg","lineNo","colNo","ex","lastExceptionStack","computeStackTrace","augmentStackTraceWithInitialElement","processLastException","groups","line","column","undefined","func","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","lastException","rethrow","setTimeout","incomplete","uninstall","computeStackTraceFromStackProp","submatch","parts","element","chrome","gecko","winjs","geckoEval","chromeEval","lines","exec","isNative","indexOf","isEval","columnNumber","stackInfo","initial","unshift","partial","computeStackTraceByWalkingCallerChain","depth","item","functionName","funcs","recursion","curr","caller","substring","result","sourceURL","fileName","lineNumber","description","tracekit","stringify_1","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","err","keys","thisPos","Infinity","getSerialize","configError","wrapMethod","level","originalConsoleLevel","originalConsole","sentryLevel","Function","console$1","wrapConsoleMethod","dsnKeys","dsnPattern","navigator","VERSION","dsn","options","_logDebug","globalOptions","setDSN","maxBreadcrumbs","min","autoBreadcrumbDefaults","xhr","dom","sentry","instrumentDefaults","tryCatch","install","isSetup","_handleOnErrorStackInfo","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","lastIndexOf","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","wrap","_before","wrapped","deep","_ignoreNextOnError","__raven_wrapper__","property","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","trimHeadFrames","isNotError","isNotErrorEvent","isErrorEventWithoutError","_handleStackInfo","test","initialCall","fileurl","fingerprint","_prepareFrames","_send","captureBreadcrumb","crumb","timestamp","breadcrumbCallback","shift","addPlugin","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","setDataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","N","W","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","X","evtName","_keypressTimeout","target","category","Z","debounceDuration","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","$","from","to","parsedLoc","parsedTo","parsedFrom","E","_originalFunctionToString","P","F","wrapTimeFn","t","Array","originalCallback","wrapEventTarget","proto","capture","secure","handleEvent","before","clickHandler","keypressHandler","_keypressEventHandler","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","G","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","onreadystatechange","origFetch","fetchInput","fetchData","then","response","addEventListener","attachEvent","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","Q","builtin","R","H","installer","I","m","allowSecretKey","L","port","D","S","_triggerEvent","_processException","T","frame","_normalizeFrame","in_app","ca","stackInfoUrl","normalized","function","ba","prefixedMessage","culprit","da","request","Referer","breadcrumbs","_trimBreadcrumbs","ea","urlProp","urlProps","fa","httpData","userAgent","User-Agent","referrer","A","_backoffDuration","_backoffStart","ia","ja","current","last","ka","_shouldBackoff","retry","get","getResponseHeader","parseInt","U","baseData","project","platform","_getHttpData","serverName","server_name","forEach","_sendProcessedPayload","ma","la","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","na","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","onload","open","setRequestHeader","send","oa","hash","evaluated","C","V","setUser","setReleaseContext","raven","_window","_Raven","noConflict","singleton","ember","require_1","vue","ember_require_vue"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file +{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","emberPlugin","Ember","_oldOnError","onerror","error","captureException","RSVP","on","reason","extra","context","captureMessage","addPlugin","7","2","requirePlugin","wrap","deep","3","formatComponentName","vm","$root","name","_isVue","$options","_componentTag","__file","vuePlugin","Vue","config","errorHandler","info","metaData","Object","prototype","toString","componentName","propsData","lifecycleHook","4","RavenConfigError","message","constructor","5","utils","wrapMethod","console","level","callback","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","msg","safeJoin","data","logger","Function","apply","8","6","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","sanitizeKeys","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isError","isObject","isPlainObject","isErrorEvent","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","sanitize","wrapConsoleMethod","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","dsn","options","_logDebug","globalOptions","key","value","setDSN","push","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","substr","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","func","undefined","_before","wrapped","_ignoreNextOnError","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","T","event","unhandledPromiseRejection","B","_promiseRejectionHandler","bind","addEventListener","P","removeEventListener","ex","trimHeadFrames","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","U","currentOptions","exKeys","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","setDataCallback","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","L","setTimeout","$","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","_","evtName","_keypressTimeout","target","category","ba","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","ca","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","C","_originalFunctionToString","Q","D","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","type","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","E","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","R","builtin","S","F","installer","concat","G","str","m","exec","allowSecretKey","J","port","A","V","stackInfo","_triggerEvent","_processException","lineno","X","frame","_normalizeFrame","in_app","ga","stackInfoUrl","normalized","filename","line","colno","column","function","fa","prefixedMessage","exception","values","culprit","ha","request","Referer","breadcrumbs","_trimBreadcrumbs","ia","urlProp","urlProps","ja","httpData","userAgent","User-Agent","referrer","y","_backoffDuration","_backoffStart","ma","na","current","last","oa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Y","baseData","project","platform","_getHttpData","serverName","server_name","_sanitizeData","forEach","random","_sendProcessedPayload","pa","ra","qa","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","sa","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","open","setRequestHeader","send","ta","hash","evaluated","z","Z","setUser","setReleaseContext","10","11","9","RavenConstructor","_Raven","noConflict","Client","what","supportsErrorEvent","ErrorEvent","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","wrappedCallback","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","sanitizeMask","safeInput","o_O","getLocationHref","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","charAt","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","string","raw"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file diff --git a/dist/ember,require/raven.js b/dist/ember,require/raven.js index c9fa3ccf577f..8396d99fb049 100644 --- a/dist/ember,require/raven.js +++ b/dist/ember,require/raven.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.22.2 (1b6187b) | github.com/getsentry/raven-js */ +/*! Raven.js 3.24.2 (540f32b) | github.com/getsentry/raven-js */ /* * Includes TraceKit @@ -10,3188 +10,3945 @@ * */ -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : - typeof define === 'function' && define.amd ? define(factory) : - (global.Raven = factory()); -}(this, (function () { 'use strict'; +(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.Raven = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o href parsing trick because React Native and other -// environments where DOM might not be available + Error.stackTraceLimit = self._globalOptions.stackTraceLimit; + return this; + }, + /* + * Set the DSN (can be called multiple time unlike config) + * + * @param {string} dsn The public Sentry DSN + */ + setDSN: function(dsn) { + var self = this, + uri = self._parseDSN(dsn), + lastSlash = uri.path.lastIndexOf('/'), + path = uri.path.substr(1, lastSlash); -function parseUrl$1(url) { - if (typeof url !== 'string') return {}; - var match = url.match(/^(([^:\/?#]+):)?(\/\/([^\/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?$/); // coerce to undefined values to empty string so we don't get 'undefined' + self._dsn = dsn; + self._globalKey = uri.user; + self._globalSecret = uri.pass && uri.pass.substr(1); + self._globalProject = uri.path.substr(lastSlash + 1); - var query = match[6] || ''; - var fragment = match[8] || ''; - return { - protocol: match[2], - host: match[4], - path: match[5], - relative: match[5] + query + fragment // everything minus origin + self._globalServer = self._getGlobalServer(uri); - }; -} + self._globalEndpoint = + self._globalServer + '/' + path + 'api/' + self._globalProject + '/store/'; -function uuid4$1() { - var crypto = _window$3.crypto || _window$3.msCrypto; + // Reset backoff state since we may be pointing at a + // new project/server + this._resetBackoff(); + }, - if (!isUndefined$1(crypto) && crypto.getRandomValues) { - // Use window.crypto API if available - // eslint-disable-next-line no-undef - var arr = new Uint16Array(8); - crypto.getRandomValues(arr); // set 4 in byte 7 + /* + * Wrap code within a context so Raven can capture errors + * reliably across domains that is executed immediately. + * + * @param {object} options A specific set of options for this context [optional] + * @param {function} func The callback to be immediately executed within the context + * @param {array} args An array of arguments to be called with the callback [optional] + */ + context: function(options, func, args) { + if (isFunction(options)) { + args = func || []; + func = options; + options = undefined; + } - arr[3] = arr[3] & 0xfff | 0x4000; // set 2 most significant bits of byte 9 to '10' + return this.wrap(options, func).apply(this, args); + }, - arr[4] = arr[4] & 0x3fff | 0x8000; + /* + * Wrap code within a context and returns back a new function to be executed + * + * @param {object} options A specific set of options for this context [optional] + * @param {function} func The function to be wrapped in a new context + * @param {function} func A function to call before the try/catch wrapper [optional, private] + * @return {function} The newly wrapped functions with a context + */ + wrap: function(options, func, _before) { + var self = this; + // 1 argument has been passed, and it's not a function + // so just return it + if (isUndefined(func) && !isFunction(options)) { + return options; + } - var pad = function pad(num) { - var v = num.toString(16); + // options is optional + if (isFunction(options)) { + func = options; + options = undefined; + } - while (v.length < 4) { - v = '0' + v; + // At this point, we've passed along 2 arguments, and the second one + // is not a function either, so we'll just return the second argument. + if (!isFunction(func)) { + return func; + } + + // We don't wanna wrap it twice! + try { + if (func.__raven__) { + return func; } - return v; - }; + // If this has already been wrapped in the past, return that + if (func.__raven_wrapper__) { + return func.__raven_wrapper__; + } + } catch (e) { + // Just accessing custom props in some Selenium environments + // can cause a "Permission denied" exception (see raven-js#495). + // Bail on wrapping and return the function as-is (defers to window.onerror). + return func; + } - return pad(arr[0]) + pad(arr[1]) + pad(arr[2]) + pad(arr[3]) + pad(arr[4]) + pad(arr[5]) + pad(arr[6]) + pad(arr[7]); - } else { - // http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/2117523#2117523 - return 'xxxxxxxxxxxx4xxxyxxxxxxxxxxxxxxx'.replace(/[xy]/g, function (c) { - var r = Math.random() * 16 | 0, - v = c === 'x' ? r : r & 0x3 | 0x8; - return v.toString(16); - }); - } -} -/** - * Given a child DOM element, returns a query-selector statement describing that - * and its ancestors - * e.g. [HTMLElement] => body > div > input#foo.btn[name=baz] - * @param elem - * @returns {string} - */ + function wrapped() { + var args = [], + i = arguments.length, + deep = !options || (options && options.deep !== false); + if (_before && isFunction(_before)) { + _before.apply(this, arguments); + } -function htmlTreeAsString$1(elem) { - /* eslint no-extra-parens:0*/ - var MAX_TRAVERSE_HEIGHT = 5, - MAX_OUTPUT_LEN = 80, - out = [], - height = 0, - len = 0, - separator = ' > ', - sepLength = separator.length, - nextStr; + // Recursively wrap all of a function's arguments that are + // functions themselves. + while (i--) args[i] = deep ? self.wrap(options, arguments[i]) : arguments[i]; - while (elem && height++ < MAX_TRAVERSE_HEIGHT) { - nextStr = htmlElementAsString(elem); // bail out if - // - nextStr is the 'html' element - // - the length of the string that would be created exceeds MAX_OUTPUT_LEN - // (ignore this limit if we are on the first iteration) + try { + // Attempt to invoke user-land function + // NOTE: If you are a Sentry user, and you are seeing this stack frame, it + // means Raven caught an error invoking your application code. This is + // expected behavior and NOT indicative of a bug with Raven.js. + return func.apply(this, args); + } catch (e) { + self._ignoreNextOnError(); + self.captureException(e, options); + throw e; + } + } - if (nextStr === 'html' || height > 1 && len + out.length * sepLength + nextStr.length >= MAX_OUTPUT_LEN) { - break; + // copy over properties of the old function + for (var property in func) { + if (hasKey(func, property)) { + wrapped[property] = func[property]; + } } + wrapped.prototype = func.prototype; - out.push(nextStr); - len += nextStr.length; - elem = elem.parentNode; - } + func.__raven_wrapper__ = wrapped; + // Signal that this function has been wrapped/filled already + // for both debugging and to prevent it to being wrapped/filled twice + wrapped.__raven__ = true; + wrapped.__orig__ = func; - return out.reverse().join(separator); -} -/** - * Returns a simple, query-selector representation of a DOM element - * e.g. [HTMLElement] => input#foo.btn[name=baz] - * @param HTMLElement - * @returns {string} - */ + return wrapped; + }, + /** + * Uninstalls the global error handler. + * + * @return {Raven} + */ + uninstall: function() { + TraceKit.report.uninstall(); -function htmlElementAsString(elem) { - var out = [], - className, - classes, - key, - attr, - i; + this._detachPromiseRejectionHandler(); + this._unpatchFunctionToString(); + this._restoreBuiltIns(); + this._restoreConsole(); - if (!elem || !elem.tagName) { - return ''; - } + Error.stackTraceLimit = this._originalErrorStackTraceLimit; + this._isRavenInstalled = false; - out.push(elem.tagName.toLowerCase()); + return this; + }, - if (elem.id) { - out.push('#' + elem.id); - } + /** + * Callback used for `unhandledrejection` event + * + * @param {PromiseRejectionEvent} event An object containing + * promise: the Promise that was rejected + * reason: the value with which the Promise was rejected + * @return void + */ + _promiseRejectionHandler: function(event) { + this._logDebug('debug', 'Raven caught unhandled promise rejection:', event); + this.captureException(event.reason, { + extra: { + unhandledPromiseRejection: true + } + }); + }, - className = elem.className; + /** + * Installs the global promise rejection handler. + * + * @return {raven} + */ + _attachPromiseRejectionHandler: function() { + this._promiseRejectionHandler = this._promiseRejectionHandler.bind(this); + _window.addEventListener && + _window.addEventListener('unhandledrejection', this._promiseRejectionHandler); + return this; + }, - if (className && isString$1(className)) { - classes = className.split(/\s+/); + /** + * Uninstalls the global promise rejection handler. + * + * @return {raven} + */ + _detachPromiseRejectionHandler: function() { + _window.removeEventListener && + _window.removeEventListener('unhandledrejection', this._promiseRejectionHandler); + return this; + }, - for (i = 0; i < classes.length; i++) { - out.push('.' + classes[i]); + /** + * Manually capture an exception and send it over to Sentry + * + * @param {error} ex An exception to be logged + * @param {object} options A specific set of options for this error [optional] + * @return {Raven} + */ + captureException: function(ex, options) { + options = objectMerge({trimHeadFrames: 0}, options ? options : {}); + + if (isErrorEvent(ex) && ex.error) { + // If it is an ErrorEvent with `error` property, extract it to get actual Error + ex = ex.error; + } else if (isError(ex)) { + // we have a real Error object + ex = ex; + } else if (isPlainObject(ex)) { + // If it is plain Object, serialize it manually and extract options + // This will allow us to group events based on top-level keys + // which is much better than creating new group when any key/value change + options = this._getCaptureExceptionOptionsFromPlainObject(options, ex); + ex = new Error(options.message); + } else { + // If none of previous checks were valid, then it means that + // it's not a plain Object + // it's not a valid ErrorEvent (one with an error property) + // it's not an Error + // So bail out and capture it as a simple message: + return this.captureMessage( + ex, + objectMerge(options, { + stacktrace: true, // if we fall back to captureMessage, default to attempting a new trace + trimHeadFrames: options.trimHeadFrames + 1 + }) + ); + } + + // Store the raw exception object for potential debugging and introspection + this._lastCapturedException = ex; + + // TraceKit.report will re-raise any exception passed to it, + // which means you have to wrap it in try/catch. Instead, we + // can wrap it here and only re-raise if TraceKit.report + // raises an exception different from the one we asked to + // report on. + try { + var stack = TraceKit.computeStackTrace(ex); + this._handleStackInfo(stack, options); + } catch (ex1) { + if (ex !== ex1) { + throw ex1; + } } - } - var attrWhitelist = ['type', 'name', 'title', 'alt']; + return this; + }, - for (i = 0; i < attrWhitelist.length; i++) { - key = attrWhitelist[i]; - attr = elem.getAttribute(key); + _getCaptureExceptionOptionsFromPlainObject: function(currentOptions, ex) { + var exKeys = Object.keys(ex).sort(); + var options = objectMerge(currentOptions, { + message: + 'Non-Error exception captured with keys: ' + serializeKeysForMessage(exKeys), + fingerprint: [md5(exKeys)], + extra: currentOptions.extra || {} + }); + options.extra.__serialized__ = serializeException(ex); - if (attr) { - out.push('[' + key + '="' + attr + '"]'); + return options; + }, + + /* + * Manually send a message to Sentry + * + * @param {string} msg A plain message to be captured in Sentry + * @param {object} options A specific set of options for this message [optional] + * @return {Raven} + */ + captureMessage: function(msg, options) { + // config() automagically converts ignoreErrors from a list to a RegExp so we need to test for an + // early call; we'll error on the side of logging anything called before configuration since it's + // probably something you should see: + if ( + !!this._globalOptions.ignoreErrors.test && + this._globalOptions.ignoreErrors.test(msg) + ) { + return; } - } - return out.join(''); -} -/** - * Returns true if either a OR b is truthy, but not both - */ + options = options || {}; + msg = msg + ''; // Make sure it's actually a string + var data = objectMerge( + { + message: msg + }, + options + ); -function isOnlyOneTruthy(a, b) { - return !!(!!a ^ !!b); -} -/** - * Returns true if both parameters are undefined - */ + var ex; + // Generate a "synthetic" stack trace from this point. + // NOTE: If you are a Sentry user, and you are seeing this stack frame, it is NOT indicative + // of a bug with Raven.js. Sentry generates synthetic traces either by configuration, + // or if it catches a thrown object without a "stack" property. + try { + throw new Error(msg); + } catch (ex1) { + ex = ex1; + } + // null exception name so `Error` isn't prefixed to msg + ex.name = null; + var stack = TraceKit.computeStackTrace(ex); -function isBothUndefined(a, b) { - return isUndefined$1(a) && isUndefined$1(b); -} -/** - * Returns true if the two input exception interfaces have the same content - */ + // stack[0] is `throw new Error(msg)` call itself, we are interested in the frame that was just before that, stack[1] + var initialCall = isArray(stack.stack) && stack.stack[1]; + // if stack[1] is `Raven.captureException`, it means that someone passed a string to it and we redirected that call + // to be handled by `captureMessage`, thus `initialCall` is the 3rd one, not 2nd + // initialCall => captureException(string) => captureMessage(string) + if (initialCall && initialCall.func === 'Raven.captureException') { + initialCall = stack.stack[2]; + } -function isSameException$1(ex1, ex2) { - if (isOnlyOneTruthy(ex1, ex2)) return false; - ex1 = ex1.values[0]; - ex2 = ex2.values[0]; - if (ex1.type !== ex2.type || ex1.value !== ex2.value) return false; // in case both stacktraces are undefined, we can't decide so default to false + var fileurl = (initialCall && initialCall.url) || ''; - if (isBothUndefined(ex1.stacktrace, ex2.stacktrace)) return false; - return isSameStacktrace$1(ex1.stacktrace, ex2.stacktrace); -} -/** - * Returns true if the two input stack trace interfaces have the same content - */ + if ( + !!this._globalOptions.ignoreUrls.test && + this._globalOptions.ignoreUrls.test(fileurl) + ) { + return; + } + if ( + !!this._globalOptions.whitelistUrls.test && + !this._globalOptions.whitelistUrls.test(fileurl) + ) { + return; + } -function isSameStacktrace$1(stack1, stack2) { - if (isOnlyOneTruthy(stack1, stack2)) return false; - var frames1 = stack1.frames; - var frames2 = stack2.frames; // Exit early if frame count differs + if (this._globalOptions.stacktrace || (options && options.stacktrace)) { + // fingerprint on msg, not stack trace (legacy behavior, could be revisited) + data.fingerprint = data.fingerprint == null ? msg : data.fingerprint; - if (frames1.length !== frames2.length) return false; // Iterate through every frame; bail out if anything differs + options = objectMerge( + { + trimHeadFrames: 0 + }, + options + ); + // Since we know this is a synthetic trace, the top frame (this function call) + // MUST be from Raven.js, so mark it for trimming + // We add to the trim counter so that callers can choose to trim extra frames, such + // as utility functions. + options.trimHeadFrames += 1; - var a, b; + var frames = this._prepareFrames(stack, options); + data.stacktrace = { + // Sentry expects frames oldest to newest + frames: frames.reverse() + }; + } - for (var i = 0; i < frames1.length; i++) { - a = frames1[i]; - b = frames2[i]; - if (a.filename !== b.filename || a.lineno !== b.lineno || a.colno !== b.colno || a['function'] !== b['function']) return false; - } + // Make sure that fingerprint is always wrapped in an array + if (data.fingerprint) { + data.fingerprint = isArray(data.fingerprint) + ? data.fingerprint + : [data.fingerprint]; + } - return true; -} -/** - * Polyfill a method - * @param obj object e.g. `document` - * @param name method name present on object e.g. `addEventListener` - * @param replacement replacement function - * @param track {optional} record instrumentation to an array - */ + // Fire away! + this._send(data); + return this; + }, -function fill$1(obj, name, replacement, track) { - var orig = obj[name]; - obj[name] = replacement(orig); - obj[name].__raven__ = true; - obj[name].__orig__ = orig; + captureBreadcrumb: function(obj) { + var crumb = objectMerge( + { + timestamp: now() / 1000 + }, + obj + ); - if (track) { - track.push([obj, name, orig]); - } -} -/** - * Join values in array - * @param input array of values to be joined together - * @param delimiter string to be placed in-between values - * @returns {string} - */ + if (isFunction(this._globalOptions.breadcrumbCallback)) { + var result = this._globalOptions.breadcrumbCallback(crumb); + + if (isObject(result) && !isEmptyObject(result)) { + crumb = result; + } else if (result === false) { + return this; + } + } + this._breadcrumbs.push(crumb); + if (this._breadcrumbs.length > this._globalOptions.maxBreadcrumbs) { + this._breadcrumbs.shift(); + } + return this; + }, -function safeJoin(input, delimiter) { - if (!isArray$1(input)) return ''; - var output = []; + addPlugin: function(plugin /*arg1, arg2, ... argN*/) { + var pluginArgs = [].slice.call(arguments, 1); - for (var i = 0; i < input.length; i++) { - try { - output.push(String(input[i])); - } catch (e) { - output.push('[value cannot be serialized]'); + this._plugins.push([plugin, pluginArgs]); + if (this._isRavenInstalled) { + this._drainPlugins(); } - } - return output.join(delimiter); -} + return this; + }, -var utils = { - isObject: isObject$1, - isError: isError$1, - isErrorEvent: isErrorEvent$1, - isUndefined: isUndefined$1, - isFunction: isFunction$1, - isPlainObject: isPlainObject, - isString: isString$1, - isArray: isArray$1, - isEmptyObject: isEmptyObject$1, - supportsErrorEvent: supportsErrorEvent, - supportsFetch: supportsFetch$1, - wrappedCallback: wrappedCallback, - each: each$1, - objectMerge: objectMerge$1, - truncate: truncate$1, - objectFrozen: objectFrozen$1, - hasKey: hasKey$1, - joinRegExp: joinRegExp$1, - urlencode: urlencode$1, - uuid4: uuid4$1, - htmlTreeAsString: htmlTreeAsString$1, - htmlElementAsString: htmlElementAsString, - isSameException: isSameException$1, - isSameStacktrace: isSameStacktrace$1, - parseUrl: parseUrl$1, - fill: fill$1, - safeJoin: safeJoin -}; + /* + * Set/clear a user to be sent along with the payload. + * + * @param {object} user An object representing user data [optional] + * @return {Raven} + */ + setUserContext: function(user) { + // Intentionally do not merge here since that's an unexpected behavior. + this._globalContext.user = user; -/* - TraceKit - Cross brower stack traces + return this; + }, - This was originally forked from github.com/occ/TraceKit, but has since been - largely re-written and is now maintained as part of raven-js. Tests for - this are in test/vendor. + /* + * Merge extra attributes to be sent along with the payload. + * + * @param {object} extra An object representing extra data [optional] + * @return {Raven} + */ + setExtraContext: function(extra) { + this._mergeContext('extra', extra); - MIT license -*/ + return this; + }, -var TraceKit = { - collectWindowErrors: true, - debug: false -}; // This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) + /* + * Merge tags to be sent along with the payload. + * + * @param {object} tags An object representing tags [optional] + * @return {Raven} + */ + setTagsContext: function(tags) { + this._mergeContext('tags', tags); -var _window$2 = typeof window !== 'undefined' ? window : typeof commonjsGlobal !== 'undefined' ? commonjsGlobal : typeof self !== 'undefined' ? self : {}; // global reference to slice + return this; + }, + /* + * Clear all of the context. + * + * @return {Raven} + */ + clearContext: function() { + this._globalContext = {}; -var _slice = [].slice; -var UNKNOWN_FUNCTION = '?'; // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error#Error_types + return this; + }, -var ERROR_TYPES_RE = /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/; + /* + * Get a copy of the current context. This cannot be mutated. + * + * @return {object} copy of context + */ + getContext: function() { + // lol javascript + return JSON.parse(stringify(this._globalContext)); + }, -function getLocationHref() { - if (typeof document === 'undefined' || document.location == null) return ''; - return document.location.href; -} -/** - * TraceKit.report: cross-browser processing of unhandled exceptions - * - * Syntax: - * TraceKit.report.subscribe(function(stackInfo) { ... }) - * TraceKit.report.unsubscribe(function(stackInfo) { ... }) - * TraceKit.report(exception) - * try { ...code... } catch(ex) { TraceKit.report(ex); } - * - * Supports: - * - Firefox: full stack trace with line numbers, plus column number - * on top frame; column number is not guaranteed - * - Opera: full stack trace with line and column numbers - * - Chrome: full stack trace with line and column numbers - * - Safari: line and column number for the top frame only; some frames - * may be missing, and column number is not guaranteed - * - IE: line and column number for the top frame only; some frames - * may be missing, and column number is not guaranteed - * - * In theory, TraceKit should work on all of the following versions: - * - IE5.5+ (only 8.0 tested) - * - Firefox 0.9+ (only 3.5+ tested) - * - Opera 7+ (only 10.50 tested; versions 9 and earlier may require - * Exceptions Have Stacktrace to be enabled in opera:config) - * - Safari 3+ (only 4+ tested) - * - Chrome 1+ (only 5+ tested) - * - Konqueror 3.5+ (untested) - * - * Requires TraceKit.computeStackTrace. - * - * Tries to catch all unhandled exceptions and report them to the - * subscribed handlers. Please note that TraceKit.report will rethrow the - * exception. This is REQUIRED in order to get a useful stack trace in IE. - * If the exception does not reach the top of the browser, you will only - * get a stack trace from the point where TraceKit.report was called. - * - * Handlers receive a stackInfo object as described in the - * TraceKit.computeStackTrace docs. - */ + /* + * Set environment of application + * + * @param {string} environment Typically something like 'production'. + * @return {Raven} + */ + setEnvironment: function(environment) { + this._globalOptions.environment = environment; + return this; + }, -TraceKit.report = function reportModuleWrapper() { - var handlers = [], - lastArgs = null, - lastException = null, - lastExceptionStack = null; - /** - * Add a crash handler. - * @param {Function} handler + /* + * Set release version of application + * + * @param {string} release Typically something like a git SHA to identify version + * @return {Raven} */ + setRelease: function(release) { + this._globalOptions.release = release; - function subscribe(handler) { - installGlobalHandler(); - handlers.push(handler); - } - /** - * Remove a crash handler. - * @param {Function} handler + return this; + }, + + /* + * Set the dataCallback option + * + * @param {function} callback The callback to run which allows the + * data blob to be mutated before sending + * @return {Raven} */ + setDataCallback: function(callback) { + var original = this._globalOptions.dataCallback; + this._globalOptions.dataCallback = keepOriginalCallback(original, callback); + return this; + }, + /* + * Set the breadcrumbCallback option + * + * @param {function} callback The callback to run which allows filtering + * or mutating breadcrumbs + * @return {Raven} + */ + setBreadcrumbCallback: function(callback) { + var original = this._globalOptions.breadcrumbCallback; + this._globalOptions.breadcrumbCallback = keepOriginalCallback(original, callback); + return this; + }, + + /* + * Set the shouldSendCallback option + * + * @param {function} callback The callback to run which allows + * introspecting the blob before sending + * @return {Raven} + */ + setShouldSendCallback: function(callback) { + var original = this._globalOptions.shouldSendCallback; + this._globalOptions.shouldSendCallback = keepOriginalCallback(original, callback); + return this; + }, - function unsubscribe(handler) { - for (var i = handlers.length - 1; i >= 0; --i) { - if (handlers[i] === handler) { - handlers.splice(i, 1); - } - } - } /** - * Remove all crash handlers. + * Override the default HTTP transport mechanism that transmits data + * to the Sentry server. + * + * @param {function} transport Function invoked instead of the default + * `makeRequest` handler. + * + * @return {Raven} + */ + setTransport: function(transport) { + this._globalOptions.transport = transport; + + return this; + }, + + /* + * Get the latest raw exception that was captured by Raven. + * + * @return {error} */ + lastException: function() { + return this._lastCapturedException; + }, + /* + * Get the last event id + * + * @return {string} + */ + lastEventId: function() { + return this._lastEventId; + }, - function unsubscribeAll() { - uninstallGlobalHandler(); - handlers = []; - } - /** - * Dispatch stack information to all handlers. - * @param {Object.} stack + /* + * Determine if Raven is setup and ready to go. + * + * @return {boolean} */ + isSetup: function() { + if (!this._hasJSON) return false; // needs JSON support + if (!this._globalServer) { + if (!this.ravenNotConfiguredError) { + this.ravenNotConfiguredError = true; + this._logDebug('error', 'Error: Raven has not been configured.'); + } + return false; + } + return true; + }, + afterLoad: function() { + // TODO: remove window dependence? - function notifyHandlers(stack, isWindowError) { - var exception = null; + // Attempt to initialize Raven on load + var RavenConfig = _window.RavenConfig; + if (RavenConfig) { + this.config(RavenConfig.dsn, RavenConfig.config).install(); + } + }, - if (isWindowError && !TraceKit.collectWindowErrors) { + showReportDialog: function(options) { + if ( + !_document // doesn't work without a document (React native) + ) return; - } - for (var i in handlers) { - if (handlers.hasOwnProperty(i)) { - try { - handlers[i].apply(null, [stack].concat(_slice.call(arguments, 2))); - } catch (inner) { - exception = inner; - } - } + options = options || {}; + + var lastEventId = options.eventId || this.lastEventId(); + if (!lastEventId) { + throw new RavenConfigError('Missing eventId'); } - if (exception) { - throw exception; + var dsn = options.dsn || this._dsn; + if (!dsn) { + throw new RavenConfigError('Missing DSN'); } - } - var _oldOnerrorHandler, _onErrorHandlerInstalled; - /** - * Ensures all global unhandled exceptions are recorded. - * Supported by Gecko and IE. - * @param {string} msg Error message. - * @param {string} url URL of script that generated the exception. - * @param {(number|string)} lineNo The line number at which the error - * occurred. - * @param {?(number|string)} colNo The column number at which the error - * occurred. - * @param {?Error} ex The actual Error object. - */ + var encode = encodeURIComponent; + var qs = ''; + qs += '?eventId=' + encode(lastEventId); + qs += '&dsn=' + encode(dsn); + var user = options.user || this._globalContext.user; + if (user) { + if (user.name) qs += '&name=' + encode(user.name); + if (user.email) qs += '&email=' + encode(user.email); + } - function traceKitWindowOnError(msg, url, lineNo, colNo, ex) { - var stack = null; // If 'ex' is ErrorEvent, get real Error from inside + var globalServer = this._getGlobalServer(this._parseDSN(dsn)); - var exception = utils.isErrorEvent(ex) ? ex.error : ex; // If 'msg' is ErrorEvent, get real message from inside + var script = _document.createElement('script'); + script.async = true; + script.src = globalServer + '/api/embed/error-page/' + qs; + (_document.head || _document.body).appendChild(script); + }, - var message = utils.isErrorEvent(msg) ? msg.message : msg; + /**** Private functions ****/ + _ignoreNextOnError: function() { + var self = this; + this._ignoreOnError += 1; + setTimeout(function() { + // onerror should trigger before setTimeout + self._ignoreOnError -= 1; + }); + }, - if (lastExceptionStack) { - TraceKit.computeStackTrace.augmentStackTraceWithInitialElement(lastExceptionStack, url, lineNo, message); - processLastException(); - } else if (exception && utils.isError(exception)) { - // non-string `exception` arg; attempt to extract stack trace - // New chrome and blink send along a real error object - // Let's just report that like a normal error. - // See: https://mikewest.org/2013/08/debugging-runtime-errors-with-window-onerror - stack = TraceKit.computeStackTrace(exception); - notifyHandlers(stack, true); - } else { - var location = { - url: url, - line: lineNo, - column: colNo - }; - var name = undefined; - var groups; + _triggerEvent: function(eventType, options) { + // NOTE: `event` is a native browser thing, so let's avoid conflicting wiht it + var evt, key; - if ({}.toString.call(message) === '[object String]') { - var groups = message.match(ERROR_TYPES_RE); + if (!this._hasDocument) return; - if (groups) { - name = groups[1]; - message = groups[2]; - } - } + options = options || {}; - location.func = UNKNOWN_FUNCTION; - stack = { - name: name, - message: message, - url: getLocationHref(), - stack: [location] - }; - notifyHandlers(stack, true); - } + eventType = 'raven' + eventType.substr(0, 1).toUpperCase() + eventType.substr(1); - if (_oldOnerrorHandler) { - return _oldOnerrorHandler.apply(this, arguments); + if (_document.createEvent) { + evt = _document.createEvent('HTMLEvents'); + evt.initEvent(eventType, true, true); + } else { + evt = _document.createEventObject(); + evt.eventType = eventType; } - return false; - } + for (key in options) + if (hasKey(options, key)) { + evt[key] = options[key]; + } - function installGlobalHandler() { - if (_onErrorHandlerInstalled) { - return; + if (_document.createEvent) { + // IE9 if standards + _document.dispatchEvent(evt); + } else { + // IE8 regardless of Quirks or Standards + // IE9 if quirks + try { + _document.fireEvent('on' + evt.eventType.toLowerCase(), evt); + } catch (e) { + // Do nothing + } } + }, - _oldOnerrorHandler = _window$2.onerror; - _window$2.onerror = traceKitWindowOnError; - _onErrorHandlerInstalled = true; - } - - function uninstallGlobalHandler() { - if (!_onErrorHandlerInstalled) { - return; - } - - _window$2.onerror = _oldOnerrorHandler; - _onErrorHandlerInstalled = false; - _oldOnerrorHandler = undefined; - } - - function processLastException() { - var _lastExceptionStack = lastExceptionStack, - _lastArgs = lastArgs; - lastArgs = null; - lastExceptionStack = null; - lastException = null; - notifyHandlers.apply(null, [_lastExceptionStack, false].concat(_lastArgs)); - } - /** - * Reports an unhandled Error to TraceKit. - * @param {Error} ex - * @param {?boolean} rethrow If false, do not re-throw the exception. - * Only used for window.onerror to not cause an infinite loop of - * rethrowing. - */ - - - function report(ex, rethrow) { - var args = _slice.call(arguments, 1); - - if (lastExceptionStack) { - if (lastException === ex) { - return; // already caught by an inner catch block, ignore - } else { - processLastException(); - } - } - - var stack = TraceKit.computeStackTrace(ex); - lastExceptionStack = stack; - lastException = ex; - lastArgs = args; // If the stack trace is incomplete, wait for 2 seconds for - // slow slow IE to see if onerror occurs or not before reporting - // this exception; otherwise, we will end up with an incomplete - // stack trace - - setTimeout(function () { - if (lastException === ex) { - processLastException(); - } - }, stack.incomplete ? 2000 : 0); - - if (rethrow !== false) { - throw ex; // re-throw to propagate to the top level (and cause window.onerror) - } - } - - report.subscribe = subscribe; - report.unsubscribe = unsubscribe; - report.uninstall = unsubscribeAll; - return report; -}(); -/** - * TraceKit.computeStackTrace: cross-browser stack traces in JavaScript - * - * Syntax: - * s = TraceKit.computeStackTrace(exception) // consider using TraceKit.report instead (see below) - * Returns: - * s.name - exception name - * s.message - exception message - * s.stack[i].url - JavaScript or HTML file URL - * s.stack[i].func - function name, or empty for anonymous functions (if guessing did not work) - * s.stack[i].args - arguments passed to the function, if known - * s.stack[i].line - line number, if known - * s.stack[i].column - column number, if known - * - * Supports: - * - Firefox: full stack trace with line numbers and unreliable column - * number on top frame - * - Opera 10: full stack trace with line and column numbers - * - Opera 9-: full stack trace with line numbers - * - Chrome: full stack trace with line and column numbers - * - Safari: line and column number for the topmost stacktrace element - * only - * - IE: no line numbers whatsoever - * - * Tries to guess names of anonymous functions by looking for assignments - * in the source code. In IE and Safari, we have to guess source file names - * by searching for function bodies inside all page scripts. This will not - * work for scripts that are loaded cross-domain. - * Here be dragons: some function names may be guessed incorrectly, and - * duplicate functions may be mismatched. - * - * TraceKit.computeStackTrace should only be used for tracing purposes. - * Logging of unhandled exceptions should be done with TraceKit.report, - * which builds on top of TraceKit.computeStackTrace and provides better - * IE support by utilizing the window.onerror event to retrieve information - * about the top of the stack. - * - * Note: In IE and Safari, no stack trace is recorded on the Error object, - * so computeStackTrace instead walks its *own* chain of callers. - * This means that: - * * in Safari, some methods may be missing from the stack trace; - * * in IE, the topmost function in the stack trace will always be the - * caller of computeStackTrace. - * - * This is okay for tracing (because you are likely to be calling - * computeStackTrace from the function you want to be the topmost element - * of the stack trace anyway), but not okay for logging unhandled - * exceptions (because your catch block will likely be far away from the - * inner function that actually caused the exception). - * - */ - - -TraceKit.computeStackTrace = function computeStackTraceWrapper() { - // Contents of Exception in various browsers. - // - // SAFARI: - // ex.message = Can't find variable: qq - // ex.line = 59 - // ex.sourceId = 580238192 - // ex.sourceURL = http://... - // ex.expressionBeginOffset = 96 - // ex.expressionCaretOffset = 98 - // ex.expressionEndOffset = 98 - // ex.name = ReferenceError - // - // FIREFOX: - // ex.message = qq is not defined - // ex.fileName = http://... - // ex.lineNumber = 59 - // ex.columnNumber = 69 - // ex.stack = ...stack trace... (see the example below) - // ex.name = ReferenceError - // - // CHROME: - // ex.message = qq is not defined - // ex.name = ReferenceError - // ex.type = not_defined - // ex.arguments = ['aa'] - // ex.stack = ...stack trace... - // - // INTERNET EXPLORER: - // ex.message = ... - // ex.name = ReferenceError - // - // OPERA: - // ex.message = ...message... (see the example below) - // ex.name = ReferenceError - // ex.opera#sourceloc = 11 (pretty much useless, duplicates the info in ex.message) - // ex.stacktrace = n/a; see 'opera:config#UserPrefs|Exceptions Have Stacktrace' - - /** - * Computes stack trace information from the stack property. - * Chrome and Gecko use this property. - * @param {Error} ex - * @return {?Object.} Stack trace information. - */ - function computeStackTraceFromStackProp(ex) { - if (typeof ex.stack === 'undefined' || !ex.stack) return; - var chrome = /^\s*at (.*?) ?\(((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i, - gecko = /^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|\[native).*?|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i, - winjs = /^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i, - // Used to additionally parse URL/line/column from eval frames - geckoEval = /(\S+) line (\d+)(?: > eval line \d+)* > eval/i, - chromeEval = /\((\S*)(?::(\d+))(?::(\d+))\)/, - lines = ex.stack.split('\n'), - stack = [], - submatch, - parts, - element, - reference = /^(.*) is undefined$/.exec(ex.message); - - for (var i = 0, j = lines.length; i < j; ++i) { - if (parts = chrome.exec(lines[i])) { - var isNative = parts[2] && parts[2].indexOf('native') === 0; // start of line - - var isEval = parts[2] && parts[2].indexOf('eval') === 0; // start of line - - if (isEval && (submatch = chromeEval.exec(parts[2]))) { - // throw out eval line/column and use top-most line/column number - parts[2] = submatch[1]; // url - - parts[3] = submatch[2]; // line - - parts[4] = submatch[3]; // column - } - - element = { - url: !isNative ? parts[2] : null, - func: parts[1] || UNKNOWN_FUNCTION, - args: isNative ? [parts[2]] : [], - line: parts[3] ? +parts[3] : null, - column: parts[4] ? +parts[4] : null - }; - } else if (parts = winjs.exec(lines[i])) { - element = { - url: parts[2], - func: parts[1] || UNKNOWN_FUNCTION, - args: [], - line: +parts[3], - column: parts[4] ? +parts[4] : null - }; - } else if (parts = gecko.exec(lines[i])) { - var isEval = parts[3] && parts[3].indexOf(' > eval') > -1; - - if (isEval && (submatch = geckoEval.exec(parts[3]))) { - // throw out eval line/column and use top-most line number - parts[3] = submatch[1]; - parts[4] = submatch[2]; - parts[5] = null; // no column when eval - } else if (i === 0 && !parts[5] && typeof ex.columnNumber !== 'undefined') { - // FireFox uses this awesome columnNumber property for its top frame - // Also note, Firefox's column number is 0-based and everything else expects 1-based, - // so adding 1 - // NOTE: this hack doesn't work if top-most frame is eval - stack[0].column = ex.columnNumber + 1; - } - - element = { - url: parts[3], - func: parts[1] || UNKNOWN_FUNCTION, - args: parts[2] ? parts[2].split(',') : [], - line: parts[4] ? +parts[4] : null, - column: parts[5] ? +parts[5] : null - }; - } else { - continue; - } - - if (!element.func && element.line) { - element.func = UNKNOWN_FUNCTION; - } - - stack.push(element); - } - - if (!stack.length) { - return null; - } - - return { - name: ex.name, - message: ex.message, - url: getLocationHref(), - stack: stack - }; - } - /** - * Adds information about the first frame to incomplete stack traces. - * Safari and IE require this to get complete data on the first frame. - * @param {Object.} stackInfo Stack trace information from - * one of the compute* methods. - * @param {string} url The URL of the script that caused an error. - * @param {(number|string)} lineNo The line number of the script that - * caused an error. - * @param {string=} message The error generated by the browser, which - * hopefully contains the name of the object that caused the error. - * @return {boolean} Whether or not the stack information was - * augmented. - */ - - - function augmentStackTraceWithInitialElement(stackInfo, url, lineNo, message) { - var initial = { - url: url, - line: lineNo - }; - - if (initial.url && initial.line) { - stackInfo.incomplete = false; - - if (!initial.func) { - initial.func = UNKNOWN_FUNCTION; - } - - if (stackInfo.stack.length > 0) { - if (stackInfo.stack[0].url === initial.url) { - if (stackInfo.stack[0].line === initial.line) { - return false; // already in stack trace - } else if (!stackInfo.stack[0].line && stackInfo.stack[0].func === initial.func) { - stackInfo.stack[0].line = initial.line; - return false; - } - } - } - - stackInfo.stack.unshift(initial); - stackInfo.partial = true; - return true; - } else { - stackInfo.incomplete = true; - } - - return false; - } - /** - * Computes stack trace information by walking the arguments.caller - * chain at the time the exception occurred. This will cause earlier - * frames to be missed but is the only way to get any stack trace in - * Safari and IE. The top frame is restored by - * {@link augmentStackTraceWithInitialElement}. - * @param {Error} ex - * @return {?Object.} Stack trace information. - */ - - - function computeStackTraceByWalkingCallerChain(ex, depth) { - var functionName = /function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i, - stack = [], - funcs = {}, - recursion = false, - parts, - item; - - for (var curr = computeStackTraceByWalkingCallerChain.caller; curr && !recursion; curr = curr.caller) { - if (curr === computeStackTrace || curr === TraceKit.report) { - // console.log('skipping internal function'); - continue; - } - - item = { - url: null, - func: UNKNOWN_FUNCTION, - line: null, - column: null - }; - - if (curr.name) { - item.func = curr.name; - } else if (parts = functionName.exec(curr.toString())) { - item.func = parts[1]; - } - - if (typeof item.func === 'undefined') { - try { - item.func = parts.input.substring(0, parts.input.indexOf('{')); - } catch (e) {} - } - - if (funcs['' + curr]) { - recursion = true; - } else { - funcs['' + curr] = true; - } - - stack.push(item); - } - - if (depth) { - // console.log('depth is ' + depth); - // console.log('stack is ' + stack.length); - stack.splice(0, depth); - } - - var result = { - name: ex.name, - message: ex.message, - url: getLocationHref(), - stack: stack - }; - augmentStackTraceWithInitialElement(result, ex.sourceURL || ex.fileName, ex.line || ex.lineNumber, ex.message || ex.description); - return result; - } - /** - * Computes a stack trace for an exception. - * @param {Error} ex - * @param {(string|number)=} depth - */ - - - function computeStackTrace(ex, depth) { - var stack = null; - depth = depth == null ? 0 : +depth; - - try { - stack = computeStackTraceFromStackProp(ex); - - if (stack) { - return stack; - } - } catch (e) { - if (TraceKit.debug) { - throw e; - } - } - - try { - stack = computeStackTraceByWalkingCallerChain(ex, depth + 1); - - if (stack) { - return stack; - } - } catch (e) { - if (TraceKit.debug) { - throw e; - } - } - - return { - name: ex.name, - message: ex.message, - url: getLocationHref() - }; - } - - computeStackTrace.augmentStackTraceWithInitialElement = augmentStackTraceWithInitialElement; - computeStackTrace.computeStackTraceFromStackProp = computeStackTraceFromStackProp; - return computeStackTrace; -}(); - -var tracekit = TraceKit; - -var stringify_1 = createCommonjsModule(function (module, exports) { - /* - json-stringify-safe - Like JSON.stringify, but doesn't throw on circular references. - - Originally forked from https://github.com/isaacs/json-stringify-safe - version 5.0.1 on 3/8/2017 and modified to handle Errors serialization - and IE8 compatibility. Tests for this are in test/vendor. - - ISC license: https://github.com/isaacs/json-stringify-safe/blob/master/LICENSE - */ - exports = module.exports = stringify; - exports.getSerialize = serializer; - - function indexOf(haystack, needle) { - for (var i = 0; i < haystack.length; ++i) { - if (haystack[i] === needle) return i; - } - - return -1; - } - - function stringify(obj, replacer, spaces, cycleReplacer) { - return JSON.stringify(obj, serializer(replacer, cycleReplacer), spaces); - } // https://github.com/ftlabs/js-abbreviate/blob/fa709e5f139e7770a71827b1893f22418097fbda/index.js#L95-L106 + /** + * Wraps addEventListener to capture UI breadcrumbs + * @param evtName the event name (e.g. "click") + * @returns {Function} + * @private + */ + _breadcrumbEventHandler: function(evtName) { + var self = this; + return function(evt) { + // reset keypress timeout; e.g. triggering a 'click' after + // a 'keypress' will reset the keypress debounce so that a new + // set of keypresses can be recorded + self._keypressTimeout = null; + // It's possible this handler might trigger multiple times for the same + // event (e.g. event propagation through node ancestors). Ignore if we've + // already captured the event. + if (self._lastCapturedEvent === evt) return; - function stringifyError(value) { - var err = { - // These properties are implemented as magical getters and don't show up in for in - stack: value.stack, - message: value.message, - name: value.name - }; + self._lastCapturedEvent = evt; - for (var i in value) { - if (Object.prototype.hasOwnProperty.call(value, i)) { - err[i] = value[i]; + // try/catch both: + // - accessing evt.target (see getsentry/raven-js#838, #768) + // - `htmlTreeAsString` because it's complex, and just accessing the DOM incorrectly + // can throw an exception in some circumstances. + var target; + try { + target = htmlTreeAsString(evt.target); + } catch (e) { + target = ''; } - } - - return err; - } - function serializer(replacer, cycleReplacer) { - var stack = []; - var keys = []; + self.captureBreadcrumb({ + category: 'ui.' + evtName, // e.g. ui.click, ui.input + message: target + }); + }; + }, - if (cycleReplacer == null) { - cycleReplacer = function cycleReplacer(key, value) { - if (stack[0] === value) { - return '[Circular ~]'; - } + /** + * Wraps addEventListener to capture keypress UI events + * @returns {Function} + * @private + */ + _keypressEventHandler: function() { + var self = this, + debounceDuration = 1000; // milliseconds - return '[Circular ~.' + keys.slice(0, indexOf(stack, value)).join('.') + ']'; - }; - } + // TODO: if somehow user switches keypress target before + // debounce timeout is triggered, we will only capture + // a single breadcrumb from the FIRST target (acceptable?) + return function(evt) { + var target; + try { + target = evt.target; + } catch (e) { + // just accessing event properties can throw an exception in some rare circumstances + // see: https://github.com/getsentry/raven-js/issues/838 + return; + } + var tagName = target && target.tagName; - return function (key, value) { - if (stack.length > 0) { - var thisPos = indexOf(stack, this); - ~thisPos ? stack.splice(thisPos + 1) : stack.push(this); - ~thisPos ? keys.splice(thisPos, Infinity, key) : keys.push(key); + // only consider keypress events on actual input elements + // this will disregard keypresses targeting body (e.g. tabbing + // through elements, hotkeys, etc) + if ( + !tagName || + (tagName !== 'INPUT' && tagName !== 'TEXTAREA' && !target.isContentEditable) + ) + return; - if (~indexOf(stack, value)) { - value = cycleReplacer.call(this, key, value); - } - } else { - stack.push(value); + // record first keypress in a series, but ignore subsequent + // keypresses until debounce clears + var timeout = self._keypressTimeout; + if (!timeout) { + self._breadcrumbEventHandler('input')(evt); } - - return replacer == null ? value instanceof Error ? stringifyError(value) : value : replacer.call(this, key, value); + clearTimeout(timeout); + self._keypressTimeout = setTimeout(function() { + self._keypressTimeout = null; + }, debounceDuration); }; - } -}); -var stringify_2 = stringify_1.getSerialize; - -function RavenConfigError(message) { - this.name = 'RavenConfigError'; - this.message = message; -} - -RavenConfigError.prototype = new Error(); -RavenConfigError.prototype.constructor = RavenConfigError; -var configError = RavenConfigError; + }, -var wrapMethod = function wrapMethod(console, level, callback) { - var originalConsoleLevel = console[level]; - var originalConsole = console; + /** + * Captures a breadcrumb of type "navigation", normalizing input URLs + * @param to the originating URL + * @param from the target URL + * @private + */ + _captureUrlChange: function(from, to) { + var parsedLoc = parseUrl(this._location.href); + var parsedTo = parseUrl(to); + var parsedFrom = parseUrl(from); - if (!(level in console)) { - return; - } + // because onpopstate only tells you the "new" (to) value of location.href, and + // not the previous (from) value, we need to track the value of the current URL + // state ourselves + this._lastHref = to; - var sentryLevel = level === 'warn' ? 'warning' : level; + // Use only the path component of the URL if the URL matches the current + // document (almost all the time when using pushState) + if (parsedLoc.protocol === parsedTo.protocol && parsedLoc.host === parsedTo.host) + to = parsedTo.relative; + if (parsedLoc.protocol === parsedFrom.protocol && parsedLoc.host === parsedFrom.host) + from = parsedFrom.relative; - console[level] = function () { - var args = [].slice.call(arguments); - var msg = utils.safeJoin(args, ' '); - var data = { - level: sentryLevel, - logger: 'console', - extra: { - arguments: args + this.captureBreadcrumb({ + category: 'navigation', + data: { + to: to, + from: from } - }; + }); + }, - if (level === 'assert') { - if (args[0] === false) { - // Default browsers message - msg = 'Assertion failed: ' + (utils.safeJoin(args.slice(1), ' ') || 'console.assert'); - data.extra.arguments = args.slice(1); - callback && callback(msg, data); + _patchFunctionToString: function() { + var self = this; + self._originalFunctionToString = Function.prototype.toString; + // eslint-disable-next-line no-extend-native + Function.prototype.toString = function() { + if (typeof this === 'function' && this.__raven__) { + return self._originalFunctionToString.apply(this.__orig__, arguments); } - } else { - callback && callback(msg, data); - } // this fails for some browsers. :( - + return self._originalFunctionToString.apply(this, arguments); + }; + }, - if (originalConsoleLevel) { - // IE9 doesn't allow calling apply on console functions directly - // See: https://stackoverflow.com/questions/5472938/does-ie9-support-console-log-and-is-it-a-real-function#answer-5473193 - Function.prototype.apply.call(originalConsoleLevel, originalConsole, args); + _unpatchFunctionToString: function() { + if (this._originalFunctionToString) { + // eslint-disable-next-line no-extend-native + Function.prototype.toString = this._originalFunctionToString; } - }; -}; - -var console$1 = { - wrapMethod: wrapMethod -}; - -/*global XDomainRequest:false */ - -var isError = utils.isError; -var isObject = utils.isObject; -var isErrorEvent = utils.isErrorEvent; -var isUndefined = utils.isUndefined; -var isFunction = utils.isFunction; -var isString = utils.isString; -var isArray = utils.isArray; -var isEmptyObject = utils.isEmptyObject; -var each = utils.each; -var objectMerge = utils.objectMerge; -var truncate = utils.truncate; -var objectFrozen = utils.objectFrozen; -var hasKey = utils.hasKey; -var joinRegExp = utils.joinRegExp; -var urlencode = utils.urlencode; -var uuid4 = utils.uuid4; -var htmlTreeAsString = utils.htmlTreeAsString; -var isSameException = utils.isSameException; -var isSameStacktrace = utils.isSameStacktrace; -var parseUrl = utils.parseUrl; -var fill = utils.fill; -var supportsFetch = utils.supportsFetch; -var wrapConsoleMethod = console$1.wrapMethod; -var dsnKeys = 'source protocol user pass host port path'.split(' '); -var dsnPattern = /^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/; - -function now() { - return +new Date(); -} // This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) - - -var _window$1 = typeof window !== 'undefined' ? window : typeof commonjsGlobal !== 'undefined' ? commonjsGlobal : typeof self !== 'undefined' ? self : {}; - -var _document = _window$1.document; -var _navigator = _window$1.navigator; - -function keepOriginalCallback(original, callback) { - return isFunction(callback) ? function (data) { - return callback(data, original); - } : callback; -} // First, check for JSON support -// If there is no JSON, we no-op the core features of Raven -// since JSON is required to encode the payload - - -function Raven$1() { - this._hasJSON = !!(_typeof(JSON) === 'object' && JSON.stringify); // Raven can run in contexts where there's no document (react-native) - - this._hasDocument = !isUndefined(_document); - this._hasNavigator = !isUndefined(_navigator); - this._lastCapturedException = null; - this._lastData = null; - this._lastEventId = null; - this._globalServer = null; - this._globalKey = null; - this._globalProject = null; - this._globalContext = {}; - this._globalOptions = { - // SENTRY_RELEASE can be injected by https://github.com/getsentry/sentry-webpack-plugin - release: _window$1.SENTRY_RELEASE && _window$1.SENTRY_RELEASE.id, - logger: 'javascript', - ignoreErrors: [], - ignoreUrls: [], - whitelistUrls: [], - includePaths: [], - headers: null, - collectWindowErrors: true, - maxMessageLength: 0, - // By default, truncates URL values to 250 chars - maxUrlLength: 250, - stackTraceLimit: 50, - autoBreadcrumbs: true, - instrument: true, - sampleRate: 1 - }; - this._fetchDefaults = { - method: 'POST', - keepalive: true, - referrerPolicy: 'origin' - }; - this._ignoreOnError = 0; - this._isRavenInstalled = false; - this._originalErrorStackTraceLimit = Error.stackTraceLimit; // capture references to window.console *and* all its methods first - // before the console plugin has a chance to monkey patch - - this._originalConsole = _window$1.console || {}; - this._originalConsoleMethods = {}; - this._plugins = []; - this._startTime = now(); - this._wrappedBuiltIns = []; - this._breadcrumbs = []; - this._lastCapturedEvent = null; - this._keypressTimeout; - this._location = _window$1.location; - this._lastHref = this._location && this._location.href; - - this._resetBackoff(); // eslint-disable-next-line guard-for-in - - - for (var method in this._originalConsole) { - this._originalConsoleMethods[method] = this._originalConsole[method]; - } -} -/* - * The core Raven singleton - * - * @this {Raven} - */ - - -Raven$1.prototype = { - // Hardcode version string so that raven source can be loaded directly via - // webpack (using a build step causes webpack #1617). Grunt verifies that - // this value matches package.json during build. - // See: https://github.com/getsentry/raven-js/issues/465 - VERSION: '3.22.2', - debug: false, - TraceKit: tracekit, - // alias to TraceKit + }, - /* - * Configure Raven with a DSN and extra options - * - * @param {string} dsn The public Sentry DSN - * @param {object} options Set of global options [optional] - * @return {Raven} - */ - config: function config(dsn, options) { + /** + * Wrap timer functions and event targets to catch errors and provide + * better metadata. + */ + _instrumentTryCatch: function() { var self = this; - if (self._globalServer) { - this._logDebug('error', 'Error: Raven has already been configured'); - - return self; - } + var wrappedBuiltIns = self._wrappedBuiltIns; - if (!dsn) return self; - var globalOptions = self._globalOptions; // merge in options + function wrapTimeFn(orig) { + return function(fn, t) { + // preserve arity + // Make a copy of the arguments to prevent deoptimization + // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments + var args = new Array(arguments.length); + for (var i = 0; i < args.length; ++i) { + args[i] = arguments[i]; + } + var originalCallback = args[0]; + if (isFunction(originalCallback)) { + args[0] = self.wrap(originalCallback); + } - if (options) { - each(options, function (key, value) { - // tags and extra are special and need to be put into context - if (key === 'tags' || key === 'extra' || key === 'user') { - self._globalContext[key] = value; + // IE < 9 doesn't support .call/.apply on setInterval/setTimeout, but it + // also supports only two arguments and doesn't care what this is, so we + // can just call the original function directly. + if (orig.apply) { + return orig.apply(this, args); } else { - globalOptions[key] = value; + return orig(args[0], args[1]); } - }); + }; } - self.setDSN(dsn); // "Script error." is hard coded into browsers for errors that it can't read. - // this is the result of a script being pulled in from an external domain and CORS. - - globalOptions.ignoreErrors.push(/^Script error\.?$/); - globalOptions.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/); // join regexp rules into one big rule - - globalOptions.ignoreErrors = joinRegExp(globalOptions.ignoreErrors); - globalOptions.ignoreUrls = globalOptions.ignoreUrls.length ? joinRegExp(globalOptions.ignoreUrls) : false; - globalOptions.whitelistUrls = globalOptions.whitelistUrls.length ? joinRegExp(globalOptions.whitelistUrls) : false; - globalOptions.includePaths = joinRegExp(globalOptions.includePaths); - globalOptions.maxBreadcrumbs = Math.max(0, Math.min(globalOptions.maxBreadcrumbs || 100, 100)); // default and hard limit is 100 + var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; - var autoBreadcrumbDefaults = { - xhr: true, - console: true, - dom: true, - location: true, - sentry: true - }; - var autoBreadcrumbs = globalOptions.autoBreadcrumbs; + function wrapEventTarget(global) { + var proto = _window[global] && _window[global].prototype; + if (proto && proto.hasOwnProperty && proto.hasOwnProperty('addEventListener')) { + fill( + proto, + 'addEventListener', + function(orig) { + return function(evtName, fn, capture, secure) { + // preserve arity + try { + if (fn && fn.handleEvent) { + fn.handleEvent = self.wrap(fn.handleEvent); + } + } catch (err) { + // can sometimes get 'Permission denied to access property "handle Event' + } - if ({}.toString.call(autoBreadcrumbs) === '[object Object]') { - autoBreadcrumbs = objectMerge(autoBreadcrumbDefaults, autoBreadcrumbs); - } else if (autoBreadcrumbs !== false) { - autoBreadcrumbs = autoBreadcrumbDefaults; + // More breadcrumb DOM capture ... done here and not in `_instrumentBreadcrumbs` + // so that we don't have more than one wrapper function + var before, clickHandler, keypressHandler; + + if ( + autoBreadcrumbs && + autoBreadcrumbs.dom && + (global === 'EventTarget' || global === 'Node') + ) { + // NOTE: generating multiple handlers per addEventListener invocation, should + // revisit and verify we can just use one (almost certainly) + clickHandler = self._breadcrumbEventHandler('click'); + keypressHandler = self._keypressEventHandler(); + before = function(evt) { + // need to intercept every DOM event in `before` argument, in case that + // same wrapped method is re-used for different events (e.g. mousemove THEN click) + // see #724 + if (!evt) return; + + var eventType; + try { + eventType = evt.type; + } catch (e) { + // just accessing event properties can throw an exception in some rare circumstances + // see: https://github.com/getsentry/raven-js/issues/838 + return; + } + if (eventType === 'click') return clickHandler(evt); + else if (eventType === 'keypress') return keypressHandler(evt); + }; + } + return orig.call( + this, + evtName, + self.wrap(fn, undefined, before), + capture, + secure + ); + }; + }, + wrappedBuiltIns + ); + fill( + proto, + 'removeEventListener', + function(orig) { + return function(evt, fn, capture, secure) { + try { + fn = fn && (fn.__raven_wrapper__ ? fn.__raven_wrapper__ : fn); + } catch (e) { + // ignore, accessing __raven_wrapper__ will throw in some Selenium environments + } + return orig.call(this, evt, fn, capture, secure); + }; + }, + wrappedBuiltIns + ); + } } - globalOptions.autoBreadcrumbs = autoBreadcrumbs; - var instrumentDefaults = { - tryCatch: true - }; - var instrument = globalOptions.instrument; - - if ({}.toString.call(instrument) === '[object Object]') { - instrument = objectMerge(instrumentDefaults, instrument); - } else if (instrument !== false) { - instrument = instrumentDefaults; + fill(_window, 'setTimeout', wrapTimeFn, wrappedBuiltIns); + fill(_window, 'setInterval', wrapTimeFn, wrappedBuiltIns); + if (_window.requestAnimationFrame) { + fill( + _window, + 'requestAnimationFrame', + function(orig) { + return function(cb) { + return orig(self.wrap(cb)); + }; + }, + wrappedBuiltIns + ); } - globalOptions.instrument = instrument; - tracekit.collectWindowErrors = !!globalOptions.collectWindowErrors; // return for chaining - - return self; + // event targets borrowed from bugsnag-js: + // https://github.com/bugsnag/bugsnag-js/blob/master/src/bugsnag.js#L666 + var eventTargets = [ + 'EventTarget', + 'Window', + 'Node', + 'ApplicationCache', + 'AudioTrackList', + 'ChannelMergerNode', + 'CryptoOperation', + 'EventSource', + 'FileReader', + 'HTMLUnknownElement', + 'IDBDatabase', + 'IDBRequest', + 'IDBTransaction', + 'KeyOperation', + 'MediaController', + 'MessagePort', + 'ModalWindow', + 'Notification', + 'SVGElementInstance', + 'Screen', + 'TextTrack', + 'TextTrackCue', + 'TextTrackList', + 'WebSocket', + 'WebSocketWorker', + 'Worker', + 'XMLHttpRequest', + 'XMLHttpRequestEventTarget', + 'XMLHttpRequestUpload' + ]; + for (var i = 0; i < eventTargets.length; i++) { + wrapEventTarget(eventTargets[i]); + } }, - /* - * Installs a global window.onerror error handler - * to capture and report uncaught exceptions. - * At this point, install() is required to be called due - * to the way TraceKit is set up. - * - * @return {Raven} - */ - install: function install() { + /** + * Instrument browser built-ins w/ breadcrumb capturing + * - XMLHttpRequests + * - DOM interactions (click/typing) + * - window.location changes + * - console + * + * Can be disabled or individually configured via the `autoBreadcrumbs` config option + */ + _instrumentBreadcrumbs: function() { var self = this; + var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; - if (self.isSetup() && !self._isRavenInstalled) { - tracekit.report.subscribe(function () { - self._handleOnErrorStackInfo.apply(self, arguments); - }); - - self._patchFunctionToString(); + var wrappedBuiltIns = self._wrappedBuiltIns; - if (self._globalOptions.instrument && self._globalOptions.instrument.tryCatch) { - self._instrumentTryCatch(); + function wrapProp(prop, xhr) { + if (prop in xhr && isFunction(xhr[prop])) { + fill(xhr, prop, function(orig) { + return self.wrap(orig); + }); // intentionally don't track filled methods on XHR instances } + } - if (self._globalOptions.autoBreadcrumbs) self._instrumentBreadcrumbs(); // Install all of the plugins + if (autoBreadcrumbs.xhr && 'XMLHttpRequest' in _window) { + var xhrproto = _window.XMLHttpRequest && _window.XMLHttpRequest.prototype; + fill( + xhrproto, + 'open', + function(origOpen) { + return function(method, url) { + // preserve arity - self._drainPlugins(); + // if Sentry key appears in URL, don't capture + if (isString(url) && url.indexOf(self._globalKey) === -1) { + this.__raven_xhr = { + method: method, + url: url, + status_code: null + }; + } - self._isRavenInstalled = true; - } + return origOpen.apply(this, arguments); + }; + }, + wrappedBuiltIns + ); + + fill( + xhrproto, + 'send', + function(origSend) { + return function() { + // preserve arity + var xhr = this; - Error.stackTraceLimit = self._globalOptions.stackTraceLimit; - return this; - }, + function onreadystatechangeHandler() { + if (xhr.__raven_xhr && xhr.readyState === 4) { + try { + // touching statusCode in some platforms throws + // an exception + xhr.__raven_xhr.status_code = xhr.status; + } catch (e) { + /* do nothing */ + } - /* - * Set the DSN (can be called multiple time unlike config) - * - * @param {string} dsn The public Sentry DSN - */ - setDSN: function setDSN(dsn) { - var self = this, - uri = self._parseDSN(dsn), - lastSlash = uri.path.lastIndexOf('/'), - path = uri.path.substr(1, lastSlash); + self.captureBreadcrumb({ + type: 'http', + category: 'xhr', + data: xhr.__raven_xhr + }); + } + } - self._dsn = dsn; - self._globalKey = uri.user; - self._globalSecret = uri.pass && uri.pass.substr(1); - self._globalProject = uri.path.substr(lastSlash + 1); - self._globalServer = self._getGlobalServer(uri); - self._globalEndpoint = self._globalServer + '/' + path + 'api/' + self._globalProject + '/store/'; // Reset backoff state since we may be pointing at a - // new project/server + var props = ['onload', 'onerror', 'onprogress']; + for (var j = 0; j < props.length; j++) { + wrapProp(props[j], xhr); + } - this._resetBackoff(); - }, + if ('onreadystatechange' in xhr && isFunction(xhr.onreadystatechange)) { + fill( + xhr, + 'onreadystatechange', + function(orig) { + return self.wrap(orig, undefined, onreadystatechangeHandler); + } /* intentionally don't track this instrumentation */ + ); + } else { + // if onreadystatechange wasn't actually set by the page on this xhr, we + // are free to set our own and capture the breadcrumb + xhr.onreadystatechange = onreadystatechangeHandler; + } - /* - * Wrap code within a context so Raven can capture errors - * reliably across domains that is executed immediately. - * - * @param {object} options A specific set of options for this context [optional] - * @param {function} func The callback to be immediately executed within the context - * @param {array} args An array of arguments to be called with the callback [optional] - */ - context: function context(options, func, args) { - if (isFunction(options)) { - args = func || []; - func = options; - options = undefined; + return origSend.apply(this, arguments); + }; + }, + wrappedBuiltIns + ); } - return this.wrap(options, func).apply(this, args); - }, + if (autoBreadcrumbs.xhr && supportsFetch()) { + fill( + _window, + 'fetch', + function(origFetch) { + return function() { + // preserve arity + // Make a copy of the arguments to prevent deoptimization + // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments + var args = new Array(arguments.length); + for (var i = 0; i < args.length; ++i) { + args[i] = arguments[i]; + } - /* - * Wrap code within a context and returns back a new function to be executed - * - * @param {object} options A specific set of options for this context [optional] - * @param {function} func The function to be wrapped in a new context - * @param {function} func A function to call before the try/catch wrapper [optional, private] - * @return {function} The newly wrapped functions with a context - */ - wrap: function wrap(options, func, _before) { - var self = this; // 1 argument has been passed, and it's not a function - // so just return it + var fetchInput = args[0]; + var method = 'GET'; + var url; - if (isUndefined(func) && !isFunction(options)) { - return options; - } // options is optional + if (typeof fetchInput === 'string') { + url = fetchInput; + } else if ('Request' in _window && fetchInput instanceof _window.Request) { + url = fetchInput.url; + if (fetchInput.method) { + method = fetchInput.method; + } + } else { + url = '' + fetchInput; + } + // if Sentry key appears in URL, don't capture, as it's our own request + if (url.indexOf(self._globalKey) !== -1) { + return origFetch.apply(this, args); + } - if (isFunction(options)) { - func = options; - options = undefined; - } // At this point, we've passed along 2 arguments, and the second one - // is not a function either, so we'll just return the second argument. + if (args[1] && args[1].method) { + method = args[1].method; + } + var fetchData = { + method: method, + url: url, + status_code: null + }; - if (!isFunction(func)) { - return func; - } // We don't wanna wrap it twice! + return origFetch + .apply(this, args) + .then(function(response) { + fetchData.status_code = response.status; + + self.captureBreadcrumb({ + type: 'http', + category: 'fetch', + data: fetchData + }); + + return response; + }) + ['catch'](function(err) { + // if there is an error performing the request + self.captureBreadcrumb({ + type: 'http', + category: 'fetch', + data: fetchData, + level: 'error' + }); + + throw err; + }); + }; + }, + wrappedBuiltIns + ); + } + // Capture breadcrumbs from any click that is unhandled / bubbled up all the way + // to the document. Do this before we instrument addEventListener. + if (autoBreadcrumbs.dom && this._hasDocument) { + if (_document.addEventListener) { + _document.addEventListener('click', self._breadcrumbEventHandler('click'), false); + _document.addEventListener('keypress', self._keypressEventHandler(), false); + } else if (_document.attachEvent) { + // IE8 Compatibility + _document.attachEvent('onclick', self._breadcrumbEventHandler('click')); + _document.attachEvent('onkeypress', self._keypressEventHandler()); + } + } - try { - if (func.__raven__) { - return func; - } // If this has already been wrapped in the past, return that + // record navigation (URL) changes + // NOTE: in Chrome App environment, touching history.pushState, *even inside + // a try/catch block*, will cause Chrome to output an error to console.error + // borrowed from: https://github.com/angular/angular.js/pull/13945/files + var chrome = _window.chrome; + var isChromePackagedApp = chrome && chrome.app && chrome.app.runtime; + var hasPushAndReplaceState = + !isChromePackagedApp && + _window.history && + history.pushState && + history.replaceState; + if (autoBreadcrumbs.location && hasPushAndReplaceState) { + // TODO: remove onpopstate handler on uninstall() + var oldOnPopState = _window.onpopstate; + _window.onpopstate = function() { + var currentHref = self._location.href; + self._captureUrlChange(self._lastHref, currentHref); + if (oldOnPopState) { + return oldOnPopState.apply(this, arguments); + } + }; - if (func.__raven_wrapper__) { - return func.__raven_wrapper__; - } - } catch (e) { - // Just accessing custom props in some Selenium environments - // can cause a "Permission denied" exception (see raven-js#495). - // Bail on wrapping and return the function as-is (defers to window.onerror). - return func; - } + var historyReplacementFunction = function(origHistFunction) { + // note history.pushState.length is 0; intentionally not declaring + // params to preserve 0 arity + return function(/* state, title, url */) { + var url = arguments.length > 2 ? arguments[2] : undefined; - function wrapped() { - var args = [], - i = arguments.length, - deep = !options || options && options.deep !== false; + // url argument is optional + if (url) { + // coerce to string (this is what pushState does) + self._captureUrlChange(self._lastHref, url + ''); + } - if (_before && isFunction(_before)) { - _before.apply(this, arguments); - } // Recursively wrap all of a function's arguments that are - // functions themselves. + return origHistFunction.apply(this, arguments); + }; + }; + fill(history, 'pushState', historyReplacementFunction, wrappedBuiltIns); + fill(history, 'replaceState', historyReplacementFunction, wrappedBuiltIns); + } - while (i--) { - args[i] = deep ? self.wrap(options, arguments[i]) : arguments[i]; - } + if (autoBreadcrumbs.console && 'console' in _window && console.log) { + // console + var consoleMethodCallback = function(msg, data) { + self.captureBreadcrumb({ + message: msg, + level: data.level, + category: 'console' + }); + }; - try { - // Attempt to invoke user-land function - // NOTE: If you are a Sentry user, and you are seeing this stack frame, it - // means Raven caught an error invoking your application code. This is - // expected behavior and NOT indicative of a bug with Raven.js. - return func.apply(this, args); - } catch (e) { - self._ignoreNextOnError(); + each(['debug', 'info', 'warn', 'error', 'log'], function(_, level) { + wrapConsoleMethod(console, level, consoleMethodCallback); + }); + } + }, - self.captureException(e, options); - throw e; - } - } // copy over properties of the old function + _restoreBuiltIns: function() { + // restore any wrapped builtins + var builtin; + while (this._wrappedBuiltIns.length) { + builtin = this._wrappedBuiltIns.shift(); + var obj = builtin[0], + name = builtin[1], + orig = builtin[2]; - for (var property in func) { - if (hasKey(func, property)) { - wrapped[property] = func[property]; - } + obj[name] = orig; + } + }, + + _restoreConsole: function() { + // eslint-disable-next-line guard-for-in + for (var method in this._originalConsoleMethods) { + this._originalConsole[method] = this._originalConsoleMethods[method]; } + }, - wrapped.prototype = func.prototype; - func.__raven_wrapper__ = wrapped; // Signal that this function has been wrapped/filled already - // for both debugging and to prevent it to being wrapped/filled twice + _drainPlugins: function() { + var self = this; - wrapped.__raven__ = true; - wrapped.__orig__ = func; - return wrapped; + // FIX ME TODO + each(this._plugins, function(_, plugin) { + var installer = plugin[0]; + var args = plugin[1]; + installer.apply(self, [self].concat(args)); + }); }, - /* - * Uninstalls the global error handler. - * - * @return {Raven} - */ - uninstall: function uninstall() { - tracekit.report.uninstall(); - - this._unpatchFunctionToString(); + _parseDSN: function(str) { + var m = dsnPattern.exec(str), + dsn = {}, + i = 7; - this._restoreBuiltIns(); + try { + while (i--) dsn[dsnKeys[i]] = m[i] || ''; + } catch (e) { + throw new RavenConfigError('Invalid DSN: ' + str); + } - this._restoreConsole(); + if (dsn.pass && !this._globalOptions.allowSecretKey) { + throw new RavenConfigError( + 'Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key' + ); + } - Error.stackTraceLimit = this._originalErrorStackTraceLimit; - this._isRavenInstalled = false; - return this; + return dsn; }, - /* - * Manually capture an exception and send it over to Sentry - * - * @param {error} ex An exception to be logged - * @param {object} options A specific set of options for this error [optional] - * @return {Raven} - */ - captureException: function captureException(ex, options) { - options = objectMerge({ - trimHeadFrames: 0 - }, options ? options : {}); // Cases for sending ex as a message, rather than an exception + _getGlobalServer: function(uri) { + // assemble the endpoint from the uri pieces + var globalServer = '//' + uri.host + (uri.port ? ':' + uri.port : ''); - var isNotError = !isError(ex); - var isNotErrorEvent = !isErrorEvent(ex); - var isErrorEventWithoutError = isErrorEvent(ex) && !ex.error; + if (uri.protocol) { + globalServer = uri.protocol + ':' + globalServer; + } + return globalServer; + }, - if (isNotError && isNotErrorEvent || isErrorEventWithoutError) { - return this.captureMessage(ex, objectMerge(options, { - stacktrace: true, - // if we fall back to captureMessage, default to attempting a new trace - trimHeadFrames: options.trimHeadFrames + 1 - })); - } // Get actual Error from ErrorEvent + _handleOnErrorStackInfo: function() { + // if we are intentionally ignoring errors via onerror, bail out + if (!this._ignoreOnError) { + this._handleStackInfo.apply(this, arguments); + } + }, + _handleStackInfo: function(stackInfo, options) { + var frames = this._prepareFrames(stackInfo, options); - if (isErrorEvent(ex)) ex = ex.error; // Store the raw exception object for potential debugging and introspection + this._triggerEvent('handle', { + stackInfo: stackInfo, + options: options + }); - this._lastCapturedException = ex; // TraceKit.report will re-raise any exception passed to it, - // which means you have to wrap it in try/catch. Instead, we - // can wrap it here and only re-raise if TraceKit.report - // raises an exception different from the one we asked to - // report on. + this._processException( + stackInfo.name, + stackInfo.message, + stackInfo.url, + stackInfo.lineno, + frames, + options + ); + }, - try { - var stack = tracekit.computeStackTrace(ex); + _prepareFrames: function(stackInfo, options) { + var self = this; + var frames = []; + if (stackInfo.stack && stackInfo.stack.length) { + each(stackInfo.stack, function(i, stack) { + var frame = self._normalizeFrame(stack, stackInfo.url); + if (frame) { + frames.push(frame); + } + }); - this._handleStackInfo(stack, options); - } catch (ex1) { - if (ex !== ex1) { - throw ex1; + // e.g. frames captured via captureMessage throw + if (options && options.trimHeadFrames) { + for (var j = 0; j < options.trimHeadFrames && j < frames.length; j++) { + frames[j].in_app = false; + } } } - - return this; + frames = frames.slice(0, this._globalOptions.stackTraceLimit); + return frames; }, - /* - * Manually send a message to Sentry - * - * @param {string} msg A plain message to be captured in Sentry - * @param {object} options A specific set of options for this message [optional] - * @return {Raven} - */ - captureMessage: function captureMessage(msg, options) { - // config() automagically converts ignoreErrors from a list to a RegExp so we need to test for an - // early call; we'll error on the side of logging anything called before configuration since it's - // probably something you should see: - if (!!this._globalOptions.ignoreErrors.test && this._globalOptions.ignoreErrors.test(msg)) { - return; - } + _normalizeFrame: function(frame, stackInfoUrl) { + // normalize the frames data + var normalized = { + filename: frame.url, + lineno: frame.line, + colno: frame.column, + function: frame.func || '?' + }; - options = options || {}; - var data = objectMerge({ - message: msg + '' // Make sure it's actually a string + // Case when we don't have any information about the error + // E.g. throwing a string or raw object, instead of an `Error` in Firefox + // Generating synthetic error doesn't add any value here + // + // We should probably somehow let a user know that they should fix their code + if (!frame.url) { + normalized.filename = stackInfoUrl; // fallback to whole stacks url from onerror handler + } - }, options); - var ex; // Generate a "synthetic" stack trace from this point. - // NOTE: If you are a Sentry user, and you are seeing this stack frame, it is NOT indicative - // of a bug with Raven.js. Sentry generates synthetic traces either by configuration, - // or if it catches a thrown object without a "stack" property. + normalized.in_app = !// determine if an exception came from outside of our app + // first we check the global includePaths list. + ( + (!!this._globalOptions.includePaths.test && + !this._globalOptions.includePaths.test(normalized.filename)) || + // Now we check for fun, if the function name is Raven or TraceKit + /(Raven|TraceKit)\./.test(normalized['function']) || + // finally, we do a last ditch effort and check for raven.min.js + /raven\.(min\.)?js$/.test(normalized.filename) + ); - try { - throw new Error(msg); - } catch (ex1) { - ex = ex1; - } // null exception name so `Error` isn't prefixed to msg + return normalized; + }, + _processException: function(type, message, fileurl, lineno, frames, options) { + var prefixedMessage = (type ? type + ': ' : '') + (message || ''); + if ( + !!this._globalOptions.ignoreErrors.test && + (this._globalOptions.ignoreErrors.test(message) || + this._globalOptions.ignoreErrors.test(prefixedMessage)) + ) { + return; + } - ex.name = null; - var stack = tracekit.computeStackTrace(ex); // stack[0] is `throw new Error(msg)` call itself, we are interested in the frame that was just before that, stack[1] + var stacktrace; - var initialCall = isArray(stack.stack) && stack.stack[1]; - var fileurl = initialCall && initialCall.url || ''; + if (frames && frames.length) { + fileurl = frames[0].filename || fileurl; + // Sentry expects frames oldest to newest + // and JS sends them as newest to oldest + frames.reverse(); + stacktrace = {frames: frames}; + } else if (fileurl) { + stacktrace = { + frames: [ + { + filename: fileurl, + lineno: lineno, + in_app: true + } + ] + }; + } - if (!!this._globalOptions.ignoreUrls.test && this._globalOptions.ignoreUrls.test(fileurl)) { + if ( + !!this._globalOptions.ignoreUrls.test && + this._globalOptions.ignoreUrls.test(fileurl) + ) { return; } - if (!!this._globalOptions.whitelistUrls.test && !this._globalOptions.whitelistUrls.test(fileurl)) { + if ( + !!this._globalOptions.whitelistUrls.test && + !this._globalOptions.whitelistUrls.test(fileurl) + ) { return; } - if (this._globalOptions.stacktrace || options && options.stacktrace) { - options = objectMerge({ - // fingerprint on msg, not stack trace (legacy behavior, could be - // revisited) - fingerprint: msg, - // since we know this is a synthetic trace, the top N-most frames - // MUST be from Raven.js, so mark them as in_app later by setting - // trimHeadFrames - trimHeadFrames: (options.trimHeadFrames || 0) + 1 - }, options); - - var frames = this._prepareFrames(stack, options); - - data.stacktrace = { - // Sentry expects frames oldest to newest - frames: frames.reverse() - }; - } // Fire away! - + var data = objectMerge( + { + // sentry.interfaces.Exception + exception: { + values: [ + { + type: type, + value: message, + stacktrace: stacktrace + } + ] + }, + culprit: fileurl + }, + options + ); + // Fire away! this._send(data); - - return this; }, - captureBreadcrumb: function captureBreadcrumb(obj) { - var crumb = objectMerge({ - timestamp: now() / 1000 - }, obj); - - if (isFunction(this._globalOptions.breadcrumbCallback)) { - var result = this._globalOptions.breadcrumbCallback(crumb); - if (isObject(result) && !isEmptyObject(result)) { - crumb = result; - } else if (result === false) { - return this; - } + _trimPacket: function(data) { + // For now, we only want to truncate the two different messages + // but this could/should be expanded to just trim everything + var max = this._globalOptions.maxMessageLength; + if (data.message) { + data.message = truncate(data.message, max); } - - this._breadcrumbs.push(crumb); - - if (this._breadcrumbs.length > this._globalOptions.maxBreadcrumbs) { - this._breadcrumbs.shift(); + if (data.exception) { + var exception = data.exception.values[0]; + exception.value = truncate(exception.value, max); } - return this; - }, - addPlugin: function addPlugin(plugin - /*arg1, arg2, ... argN*/ - ) { - var pluginArgs = [].slice.call(arguments, 1); - - this._plugins.push([plugin, pluginArgs]); - - if (this._isRavenInstalled) { - this._drainPlugins(); + var request = data.request; + if (request) { + if (request.url) { + request.url = truncate(request.url, this._globalOptions.maxUrlLength); + } + if (request.Referer) { + request.Referer = truncate(request.Referer, this._globalOptions.maxUrlLength); + } } - return this; - }, - - /* - * Set/clear a user to be sent along with the payload. - * - * @param {object} user An object representing user data [optional] - * @return {Raven} - */ - setUserContext: function setUserContext(user) { - // Intentionally do not merge here since that's an unexpected behavior. - this._globalContext.user = user; - return this; - }, - - /* - * Merge extra attributes to be sent along with the payload. - * - * @param {object} extra An object representing extra data [optional] - * @return {Raven} - */ - setExtraContext: function setExtraContext(extra) { - this._mergeContext('extra', extra); + if (data.breadcrumbs && data.breadcrumbs.values) + this._trimBreadcrumbs(data.breadcrumbs); - return this; + return data; }, - /* - * Merge tags to be sent along with the payload. - * - * @param {object} tags An object representing tags [optional] - * @return {Raven} - */ - setTagsContext: function setTagsContext(tags) { - this._mergeContext('tags', tags); + /** + * Truncate breadcrumb values (right now just URLs) + */ + _trimBreadcrumbs: function(breadcrumbs) { + // known breadcrumb properties with urls + // TODO: also consider arbitrary prop values that start with (https?)?:// + var urlProps = ['to', 'from', 'url'], + urlProp, + crumb, + data; - return this; - }, + for (var i = 0; i < breadcrumbs.values.length; ++i) { + crumb = breadcrumbs.values[i]; + if ( + !crumb.hasOwnProperty('data') || + !isObject(crumb.data) || + objectFrozen(crumb.data) + ) + continue; - /* - * Clear all of the context. - * - * @return {Raven} - */ - clearContext: function clearContext() { - this._globalContext = {}; - return this; + data = objectMerge({}, crumb.data); + for (var j = 0; j < urlProps.length; ++j) { + urlProp = urlProps[j]; + if (data.hasOwnProperty(urlProp) && data[urlProp]) { + data[urlProp] = truncate(data[urlProp], this._globalOptions.maxUrlLength); + } + } + breadcrumbs.values[i].data = data; + } }, - /* - * Get a copy of the current context. This cannot be mutated. - * - * @return {object} copy of context - */ - getContext: function getContext() { - // lol javascript - return JSON.parse(stringify_1(this._globalContext)); - }, + _getHttpData: function() { + if (!this._hasNavigator && !this._hasDocument) return; + var httpData = {}; - /* - * Set environment of application - * - * @param {string} environment Typically something like 'production'. - * @return {Raven} - */ - setEnvironment: function setEnvironment(environment) { - this._globalOptions.environment = environment; - return this; - }, + if (this._hasNavigator && _navigator.userAgent) { + httpData.headers = { + 'User-Agent': navigator.userAgent + }; + } - /* - * Set release version of application - * - * @param {string} release Typically something like a git SHA to identify version - * @return {Raven} - */ - setRelease: function setRelease(release) { - this._globalOptions.release = release; - return this; - }, + // Check in `window` instead of `document`, as we may be in ServiceWorker environment + if (_window.location && _window.location.href) { + httpData.url = _window.location.href; + } - /* - * Set the dataCallback option - * - * @param {function} callback The callback to run which allows the - * data blob to be mutated before sending - * @return {Raven} - */ - setDataCallback: function setDataCallback(callback) { - var original = this._globalOptions.dataCallback; - this._globalOptions.dataCallback = keepOriginalCallback(original, callback); - return this; + if (this._hasDocument && _document.referrer) { + if (!httpData.headers) httpData.headers = {}; + httpData.headers.Referer = _document.referrer; + } + + return httpData; }, - /* - * Set the breadcrumbCallback option - * - * @param {function} callback The callback to run which allows filtering - * or mutating breadcrumbs - * @return {Raven} - */ - setBreadcrumbCallback: function setBreadcrumbCallback(callback) { - var original = this._globalOptions.breadcrumbCallback; - this._globalOptions.breadcrumbCallback = keepOriginalCallback(original, callback); - return this; + _resetBackoff: function() { + this._backoffDuration = 0; + this._backoffStart = null; }, - /* - * Set the shouldSendCallback option - * - * @param {function} callback The callback to run which allows - * introspecting the blob before sending - * @return {Raven} - */ - setShouldSendCallback: function setShouldSendCallback(callback) { - var original = this._globalOptions.shouldSendCallback; - this._globalOptions.shouldSendCallback = keepOriginalCallback(original, callback); - return this; + _shouldBackoff: function() { + return this._backoffDuration && now() - this._backoffStart < this._backoffDuration; }, /** - * Override the default HTTP transport mechanism that transmits data - * to the Sentry server. - * - * @param {function} transport Function invoked instead of the default - * `makeRequest` handler. + * Returns true if the in-process data payload matches the signature + * of the previously-sent data * - * @return {Raven} + * NOTE: This has to be done at this level because TraceKit can generate + * data from window.onerror WITHOUT an exception object (IE8, IE9, + * other old browsers). This can take the form of an "exception" + * data object with a single frame (derived from the onerror args). */ - setTransport: function setTransport(transport) { - this._globalOptions.transport = transport; - return this; - }, + _isRepeatData: function(current) { + var last = this._lastData; - /* - * Get the latest raw exception that was captured by Raven. - * - * @return {error} - */ - lastException: function lastException() { - return this._lastCapturedException; - }, + if ( + !last || + current.message !== last.message || // defined for captureMessage + current.culprit !== last.culprit // defined for captureException/onerror + ) + return false; - /* - * Get the last event id - * - * @return {string} - */ - lastEventId: function lastEventId() { - return this._lastEventId; + // Stacktrace interface (i.e. from captureMessage) + if (current.stacktrace || last.stacktrace) { + return isSameStacktrace(current.stacktrace, last.stacktrace); + } else if (current.exception || last.exception) { + // Exception interface (i.e. from captureException/onerror) + return isSameException(current.exception, last.exception); + } + + return true; }, - /* - * Determine if Raven is setup and ready to go. - * - * @return {boolean} - */ - isSetup: function isSetup() { - if (!this._hasJSON) return false; // needs JSON support + _setBackoffState: function(request) { + // If we are already in a backoff state, don't change anything + if (this._shouldBackoff()) { + return; + } - if (!this._globalServer) { - if (!this.ravenNotConfiguredError) { - this.ravenNotConfiguredError = true; + var status = request.status; - this._logDebug('error', 'Error: Raven has not been configured.'); + // 400 - project_id doesn't exist or some other fatal + // 401 - invalid/revoked dsn + // 429 - too many requests + if (!(status === 400 || status === 401 || status === 429)) return; + + var retry; + try { + // If Retry-After is not in Access-Control-Expose-Headers, most + // browsers will throw an exception trying to access it + if (supportsFetch()) { + retry = request.headers.get('Retry-After'); + } else { + retry = request.getResponseHeader('Retry-After'); } - return false; + // Retry-After is returned in seconds + retry = parseInt(retry, 10) * 1000; + } catch (e) { + /* eslint no-empty:0 */ } - return true; - }, - afterLoad: function afterLoad() { - // TODO: remove window dependence? - // Attempt to initialize Raven on load - var RavenConfig = _window$1.RavenConfig; + this._backoffDuration = retry + ? // If Sentry server returned a Retry-After value, use it + retry + : // Otherwise, double the last backoff duration (starts at 1 sec) + this._backoffDuration * 2 || 1000; - if (RavenConfig) { - this.config(RavenConfig.dsn, RavenConfig.config).install(); - } + this._backoffStart = now(); }, - showReportDialog: function showReportDialog(options) { - if (!_document // doesn't work without a document (React native) - ) return; - options = options || {}; - var lastEventId = options.eventId || this.lastEventId(); - if (!lastEventId) { - throw new configError('Missing eventId'); - } + _send: function(data) { + var globalOptions = this._globalOptions; - var dsn = options.dsn || this._dsn; + var baseData = { + project: this._globalProject, + logger: globalOptions.logger, + platform: 'javascript' + }, + httpData = this._getHttpData(); - if (!dsn) { - throw new configError('Missing DSN'); + if (httpData) { + baseData.request = httpData; } - var encode = encodeURIComponent; - var qs = ''; - qs += '?eventId=' + encode(lastEventId); - qs += '&dsn=' + encode(dsn); - var user = options.user || this._globalContext.user; + // HACK: delete `trimHeadFrames` to prevent from appearing in outbound payload + if (data.trimHeadFrames) delete data.trimHeadFrames; - if (user) { - if (user.name) qs += '&name=' + encode(user.name); - if (user.email) qs += '&email=' + encode(user.email); + data = objectMerge(baseData, data); + + // Merge in the tags and extra separately since objectMerge doesn't handle a deep merge + data.tags = objectMerge(objectMerge({}, this._globalContext.tags), data.tags); + data.extra = objectMerge(objectMerge({}, this._globalContext.extra), data.extra); + + // Send along our own collected metadata with extra + data.extra['session:duration'] = now() - this._startTime; + + if (this._breadcrumbs && this._breadcrumbs.length > 0) { + // intentionally make shallow copy so that additions + // to breadcrumbs aren't accidentally sent in this request + data.breadcrumbs = { + values: [].slice.call(this._breadcrumbs, 0) + }; } - var globalServer = this._getGlobalServer(this._parseDSN(dsn)); + if (this._globalContext.user) { + // sentry.interfaces.User + data.user = this._globalContext.user; + } - var script = _document.createElement('script'); + // Include the environment if it's defined in globalOptions + if (globalOptions.environment) data.environment = globalOptions.environment; - script.async = true; - script.src = globalServer + '/api/embed/error-page/' + qs; + // Include the release if it's defined in globalOptions + if (globalOptions.release) data.release = globalOptions.release; - (_document.head || _document.body).appendChild(script); - }, + // Include server_name if it's defined in globalOptions + if (globalOptions.serverName) data.server_name = globalOptions.serverName; - /**** Private functions ****/ - _ignoreNextOnError: function _ignoreNextOnError() { - var self = this; - this._ignoreOnError += 1; - setTimeout(function () { - // onerror should trigger before setTimeout - self._ignoreOnError -= 1; + data = this._sanitizeData(data); + + // Cleanup empty properties before sending them to the server + Object.keys(data).forEach(function(key) { + if (data[key] == null || data[key] === '' || isEmptyObject(data[key])) { + delete data[key]; + } }); - }, - _triggerEvent: function _triggerEvent(eventType, options) { - // NOTE: `event` is a native browser thing, so let's avoid conflicting wiht it - var evt, key; - if (!this._hasDocument) return; - options = options || {}; - eventType = 'raven' + eventType.substr(0, 1).toUpperCase() + eventType.substr(1); - if (_document.createEvent) { - evt = _document.createEvent('HTMLEvents'); - evt.initEvent(eventType, true, true); - } else { - evt = _document.createEventObject(); - evt.eventType = eventType; + if (isFunction(globalOptions.dataCallback)) { + data = globalOptions.dataCallback(data) || data; } - for (key in options) { - if (hasKey(options, key)) { - evt[key] = options[key]; - } + // Why?????????? + if (!data || isEmptyObject(data)) { + return; } - if (_document.createEvent) { - // IE9 if standards - _document.dispatchEvent(evt); - } else { - // IE8 regardless of Quirks or Standards - // IE9 if quirks - try { - _document.fireEvent('on' + evt.eventType.toLowerCase(), evt); - } catch (e) {// Do nothing - } + // Check if the request should be filtered or not + if ( + isFunction(globalOptions.shouldSendCallback) && + !globalOptions.shouldSendCallback(data) + ) { + return; } - }, - - /** - * Wraps addEventListener to capture UI breadcrumbs - * @param evtName the event name (e.g. "click") - * @returns {Function} - * @private - */ - _breadcrumbEventHandler: function _breadcrumbEventHandler(evtName) { - var self = this; - return function (evt) { - // reset keypress timeout; e.g. triggering a 'click' after - // a 'keypress' will reset the keypress debounce so that a new - // set of keypresses can be recorded - self._keypressTimeout = null; // It's possible this handler might trigger multiple times for the same - // event (e.g. event propagation through node ancestors). Ignore if we've - // already captured the event. - - if (self._lastCapturedEvent === evt) return; - self._lastCapturedEvent = evt; // try/catch both: - // - accessing evt.target (see getsentry/raven-js#838, #768) - // - `htmlTreeAsString` because it's complex, and just accessing the DOM incorrectly - // can throw an exception in some circumstances. - var target; + // Backoff state: Sentry server previously responded w/ an error (e.g. 429 - too many requests), + // so drop requests until "cool-off" period has elapsed. + if (this._shouldBackoff()) { + this._logDebug('warn', 'Raven dropped error due to backoff: ', data); + return; + } - try { - target = htmlTreeAsString(evt.target); - } catch (e) { - target = ''; + if (typeof globalOptions.sampleRate === 'number') { + if (Math.random() < globalOptions.sampleRate) { + this._sendProcessedPayload(data); } + } else { + this._sendProcessedPayload(data); + } + }, - self.captureBreadcrumb({ - category: 'ui.' + evtName, - // e.g. ui.click, ui.input - message: target - }); - }; + _sanitizeData: function(data) { + return sanitize(data, this._globalOptions.sanitizeKeys); }, - /** - * Wraps addEventListener to capture keypress UI events - * @returns {Function} - * @private - */ - _keypressEventHandler: function _keypressEventHandler() { - var self = this, - debounceDuration = 1000; // milliseconds - // TODO: if somehow user switches keypress target before - // debounce timeout is triggered, we will only capture - // a single breadcrumb from the FIRST target (acceptable?) + _getUuid: function() { + return uuid4(); + }, + + _sendProcessedPayload: function(data, callback) { + var self = this; + var globalOptions = this._globalOptions; - return function (evt) { - var target; + if (!this.isSetup()) return; - try { - target = evt.target; - } catch (e) { - // just accessing event properties can throw an exception in some rare circumstances - // see: https://github.com/getsentry/raven-js/issues/838 - return; - } + // Try and clean up the packet before sending by truncating long values + data = this._trimPacket(data); - var tagName = target && target.tagName; // only consider keypress events on actual input elements - // this will disregard keypresses targeting body (e.g. tabbing - // through elements, hotkeys, etc) + // ideally duplicate error testing should occur *before* dataCallback/shouldSendCallback, + // but this would require copying an un-truncated copy of the data packet, which can be + // arbitrarily deep (extra_data) -- could be worthwhile? will revisit + if (!this._globalOptions.allowDuplicates && this._isRepeatData(data)) { + this._logDebug('warn', 'Raven dropped repeat event: ', data); + return; + } - if (!tagName || tagName !== 'INPUT' && tagName !== 'TEXTAREA' && !target.isContentEditable) return; // record first keypress in a series, but ignore subsequent - // keypresses until debounce clears + // Send along an event_id if not explicitly passed. + // This event_id can be used to reference the error within Sentry itself. + // Set lastEventId after we know the error should actually be sent + this._lastEventId = data.event_id || (data.event_id = this._getUuid()); - var timeout = self._keypressTimeout; + // Store outbound payload after trim + this._lastData = data; - if (!timeout) { - self._breadcrumbEventHandler('input')(evt); - } + this._logDebug('debug', 'Raven about to send:', data); - clearTimeout(timeout); - self._keypressTimeout = setTimeout(function () { - self._keypressTimeout = null; - }, debounceDuration); + var auth = { + sentry_version: '7', + sentry_client: 'raven-js/' + this.VERSION, + sentry_key: this._globalKey }; - }, - /** - * Captures a breadcrumb of type "navigation", normalizing input URLs - * @param to the originating URL - * @param from the target URL - * @private - */ - _captureUrlChange: function _captureUrlChange(from, to) { - var parsedLoc = parseUrl(this._location.href); - var parsedTo = parseUrl(to); - var parsedFrom = parseUrl(from); // because onpopstate only tells you the "new" (to) value of location.href, and - // not the previous (from) value, we need to track the value of the current URL - // state ourselves + if (this._globalSecret) { + auth.sentry_secret = this._globalSecret; + } - this._lastHref = to; // Use only the path component of the URL if the URL matches the current - // document (almost all the time when using pushState) + var exception = data.exception && data.exception.values[0]; - if (parsedLoc.protocol === parsedTo.protocol && parsedLoc.host === parsedTo.host) to = parsedTo.relative; - if (parsedLoc.protocol === parsedFrom.protocol && parsedLoc.host === parsedFrom.host) from = parsedFrom.relative; - this.captureBreadcrumb({ - category: 'navigation', - data: { - to: to, - from: from + // only capture 'sentry' breadcrumb is autoBreadcrumbs is truthy + if ( + this._globalOptions.autoBreadcrumbs && + this._globalOptions.autoBreadcrumbs.sentry + ) { + this.captureBreadcrumb({ + category: 'sentry', + message: exception + ? (exception.type ? exception.type + ': ' : '') + exception.value + : data.message, + event_id: data.event_id, + level: data.level || 'error' // presume error unless specified + }); + } + + var url = this._globalEndpoint; + (globalOptions.transport || this._makeRequest).call(this, { + url: url, + auth: auth, + data: data, + options: globalOptions, + onSuccess: function success() { + self._resetBackoff(); + + self._triggerEvent('success', { + data: data, + src: url + }); + callback && callback(); + }, + onError: function failure(error) { + self._logDebug('error', 'Raven transport failed to send: ', error); + + if (error.request) { + self._setBackoffState(error.request); + } + + self._triggerEvent('failure', { + data: data, + src: url + }); + error = error || new Error('Raven send failed (no additional details provided)'); + callback && callback(error); } }); }, - _patchFunctionToString: function _patchFunctionToString() { - var self = this; - self._originalFunctionToString = Function.prototype.toString; // eslint-disable-next-line no-extend-native - Function.prototype.toString = function () { - if (typeof this === 'function' && this.__raven__) { - return self._originalFunctionToString.apply(this.__orig__, arguments); - } + _makeRequest: function(opts) { + // Auth is intentionally sent as part of query string (NOT as custom HTTP header) to avoid preflight CORS requests + var url = opts.url + '?' + urlencode(opts.auth); - return self._originalFunctionToString.apply(this, arguments); - }; - }, - _unpatchFunctionToString: function _unpatchFunctionToString() { - if (this._originalFunctionToString) { - // eslint-disable-next-line no-extend-native - Function.prototype.toString = this._originalFunctionToString; + var evaluatedHeaders = null; + var evaluatedFetchParameters = {}; + + if (opts.options.headers) { + evaluatedHeaders = this._evaluateHash(opts.options.headers); } - }, - /** - * Wrap timer functions and event targets to catch errors and provide - * better metadata. - */ - _instrumentTryCatch: function _instrumentTryCatch() { - var self = this; - var wrappedBuiltIns = self._wrappedBuiltIns; + if (opts.options.fetchParameters) { + evaluatedFetchParameters = this._evaluateHash(opts.options.fetchParameters); + } - function wrapTimeFn(orig) { - return function (fn, t) { - // preserve arity - // Make a copy of the arguments to prevent deoptimization - // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments - var args = new Array(arguments.length); + if (supportsFetch()) { + evaluatedFetchParameters.body = stringify(opts.data); - for (var i = 0; i < args.length; ++i) { - args[i] = arguments[i]; - } + var defaultFetchOptions = objectMerge({}, this._fetchDefaults); + var fetchOptions = objectMerge(defaultFetchOptions, evaluatedFetchParameters); - var originalCallback = args[0]; + if (evaluatedHeaders) { + fetchOptions.headers = evaluatedHeaders; + } - if (isFunction(originalCallback)) { - args[0] = self.wrap(originalCallback); - } // IE < 9 doesn't support .call/.apply on setInterval/setTimeout, but it - // also supports only two arguments and doesn't care what this is, so we - // can just call the original function directly. + return _window + .fetch(url, fetchOptions) + .then(function(response) { + if (response.ok) { + opts.onSuccess && opts.onSuccess(); + } else { + var error = new Error('Sentry error code: ' + response.status); + // It's called request only to keep compatibility with XHR interface + // and not add more redundant checks in setBackoffState method + error.request = response; + opts.onError && opts.onError(error); + } + }) + ['catch'](function() { + opts.onError && + opts.onError(new Error('Sentry error code: network unavailable')); + }); + } + var request = _window.XMLHttpRequest && new _window.XMLHttpRequest(); + if (!request) return; - if (orig.apply) { - return orig.apply(this, args); - } else { - return orig(args[0], args[1]); + // if browser doesn't support CORS (e.g. IE7), we are out of luck + var hasCORS = 'withCredentials' in request || typeof XDomainRequest !== 'undefined'; + + if (!hasCORS) return; + + if ('withCredentials' in request) { + request.onreadystatechange = function() { + if (request.readyState !== 4) { + return; + } else if (request.status === 200) { + opts.onSuccess && opts.onSuccess(); + } else if (opts.onError) { + var err = new Error('Sentry error code: ' + request.status); + err.request = request; + opts.onError(err); } }; - } + } else { + request = new XDomainRequest(); + // xdomainrequest cannot go http -> https (or vice versa), + // so always use protocol relative + url = url.replace(/^https?:/, ''); - var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; + // onreadystatechange not supported by XDomainRequest + if (opts.onSuccess) { + request.onload = opts.onSuccess; + } + if (opts.onError) { + request.onerror = function() { + var err = new Error('Sentry error code: XDomainRequest'); + err.request = request; + opts.onError(err); + }; + } + } - function wrapEventTarget(global) { - var proto = _window$1[global] && _window$1[global].prototype; + request.open('POST', url); - if (proto && proto.hasOwnProperty && proto.hasOwnProperty('addEventListener')) { - fill(proto, 'addEventListener', function (orig) { - return function (evtName, fn, capture, secure) { - // preserve arity - try { - if (fn && fn.handleEvent) { - fn.handleEvent = self.wrap(fn.handleEvent); - } - } catch (err) {} // can sometimes get 'Permission denied to access property "handle Event' - // More breadcrumb DOM capture ... done here and not in `_instrumentBreadcrumbs` - // so that we don't have more than one wrapper function + if (evaluatedHeaders) { + each(evaluatedHeaders, function(key, value) { + request.setRequestHeader(key, value); + }); + } + request.send(stringify(opts.data)); + }, - var before, clickHandler, keypressHandler; + _evaluateHash: function(hash) { + var evaluated = {}; - if (autoBreadcrumbs && autoBreadcrumbs.dom && (global === 'EventTarget' || global === 'Node')) { - // NOTE: generating multiple handlers per addEventListener invocation, should - // revisit and verify we can just use one (almost certainly) - clickHandler = self._breadcrumbEventHandler('click'); - keypressHandler = self._keypressEventHandler(); + for (var key in hash) { + if (hash.hasOwnProperty(key)) { + var value = hash[key]; + evaluated[key] = typeof value === 'function' ? value() : value; + } + } - before = function before(evt) { - // need to intercept every DOM event in `before` argument, in case that - // same wrapped method is re-used for different events (e.g. mousemove THEN click) - // see #724 - if (!evt) return; - var eventType; + return evaluated; + }, - try { - eventType = evt.type; - } catch (e) { - // just accessing event properties can throw an exception in some rare circumstances - // see: https://github.com/getsentry/raven-js/issues/838 - return; - } + _logDebug: function(level) { + // We allow `Raven.debug` and `Raven.config(DSN, { debug: true })` to not make backward incompatible API change + if ( + this._originalConsoleMethods[level] && + (this.debug || this._globalOptions.debug) + ) { + // In IE<10 console methods do not have their own 'apply' method + Function.prototype.apply.call( + this._originalConsoleMethods[level], + this._originalConsole, + [].slice.call(arguments, 1) + ); + } + }, - if (eventType === 'click') return clickHandler(evt);else if (eventType === 'keypress') return keypressHandler(evt); - }; - } + _mergeContext: function(key, context) { + if (isUndefined(context)) { + delete this._globalContext[key]; + } else { + this._globalContext[key] = objectMerge(this._globalContext[key] || {}, context); + } + } +}; - return orig.call(this, evtName, self.wrap(fn, undefined, before), capture, secure); - }; - }, wrappedBuiltIns); - fill(proto, 'removeEventListener', function (orig) { - return function (evt, fn, capture, secure) { - try { - fn = fn && (fn.__raven_wrapper__ ? fn.__raven_wrapper__ : fn); - } catch (e) {// ignore, accessing __raven_wrapper__ will throw in some Selenium environments - } +// Deprecations +Raven.prototype.setUser = Raven.prototype.setUserContext; +Raven.prototype.setReleaseContext = Raven.prototype.setRelease; - return orig.call(this, evt, fn, capture, secure); - }; - }, wrappedBuiltIns); - } - } +module.exports = Raven; - fill(_window$1, 'setTimeout', wrapTimeFn, wrappedBuiltIns); - fill(_window$1, 'setInterval', wrapTimeFn, wrappedBuiltIns); +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"10":10,"3":3,"4":4,"7":7,"8":8,"9":9}],6:[function(_dereq_,module,exports){ +(function (global){ +/** + * Enforces a single instance of the Raven client, and the + * main entry point for Raven. If you are a consumer of the + * Raven library, you SHOULD load this file (vs raven.js). + **/ - if (_window$1.requestAnimationFrame) { - fill(_window$1, 'requestAnimationFrame', function (orig) { - return function (cb) { - return orig(self.wrap(cb)); - }; - }, wrappedBuiltIns); - } // event targets borrowed from bugsnag-js: - // https://github.com/bugsnag/bugsnag-js/blob/master/src/bugsnag.js#L666 +var RavenConstructor = _dereq_(5); +// This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) +var _window = + typeof window !== 'undefined' + ? window + : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; +var _Raven = _window.Raven; - var eventTargets = ['EventTarget', 'Window', 'Node', 'ApplicationCache', 'AudioTrackList', 'ChannelMergerNode', 'CryptoOperation', 'EventSource', 'FileReader', 'HTMLUnknownElement', 'IDBDatabase', 'IDBRequest', 'IDBTransaction', 'KeyOperation', 'MediaController', 'MessagePort', 'ModalWindow', 'Notification', 'SVGElementInstance', 'Screen', 'TextTrack', 'TextTrackCue', 'TextTrackList', 'WebSocket', 'WebSocketWorker', 'Worker', 'XMLHttpRequest', 'XMLHttpRequestEventTarget', 'XMLHttpRequestUpload']; +var Raven = new RavenConstructor(); - for (var i = 0; i < eventTargets.length; i++) { - wrapEventTarget(eventTargets[i]); - } - }, +/* + * Allow multiple versions of Raven to be installed. + * Strip Raven from the global context and returns the instance. + * + * @return {Raven} + */ +Raven.noConflict = function() { + _window.Raven = _Raven; + return Raven; +}; - /** - * Instrument browser built-ins w/ breadcrumb capturing - * - XMLHttpRequests - * - DOM interactions (click/typing) - * - window.location changes - * - console - * - * Can be disabled or individually configured via the `autoBreadcrumbs` config option - */ - _instrumentBreadcrumbs: function _instrumentBreadcrumbs() { - var self = this; - var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; - var wrappedBuiltIns = self._wrappedBuiltIns; +Raven.afterLoad(); - function wrapProp(prop, xhr) { - if (prop in xhr && isFunction(xhr[prop])) { - fill(xhr, prop, function (orig) { - return self.wrap(orig); - }); // intentionally don't track filled methods on XHR instances - } - } +module.exports = Raven; - if (autoBreadcrumbs.xhr && 'XMLHttpRequest' in _window$1) { - var xhrproto = XMLHttpRequest.prototype; - fill(xhrproto, 'open', function (origOpen) { - return function (method, url) { - // preserve arity - // if Sentry key appears in URL, don't capture - if (isString(url) && url.indexOf(self._globalKey) === -1) { - this.__raven_xhr = { - method: method, - url: url, - status_code: null - }; - } +/** + * DISCLAIMER: + * + * Expose `Client` constructor for cases where user want to track multiple "sub-applications" in one larger app. + * It's not meant to be used by a wide audience, so pleaaase make sure that you know what you're doing before using it. + * Accidentally calling `install` multiple times, may result in an unexpected behavior that's very hard to debug. + * + * It's called `Client' to be in-line with Raven Node implementation. + * + * HOWTO: + * + * import Raven from 'raven-js'; + * + * const someAppReporter = new Raven.Client(); + * const someOtherAppReporter = new Raven.Client(); + * + * someAppReporter.config('__DSN__', { + * ...config goes here + * }); + * + * someOtherAppReporter.config('__OTHER_DSN__', { + * ...config goes here + * }); + * + * someAppReporter.captureMessage(...); + * someAppReporter.captureException(...); + * someAppReporter.captureBreadcrumb(...); + * + * someOtherAppReporter.captureMessage(...); + * someOtherAppReporter.captureException(...); + * someOtherAppReporter.captureBreadcrumb(...); + * + * It should "just work". + */ +module.exports.Client = RavenConstructor; - return origOpen.apply(this, arguments); - }; - }, wrappedBuiltIns); - fill(xhrproto, 'send', function (origSend) { - return function () { - // preserve arity - var xhr = this; - - function onreadystatechangeHandler() { - if (xhr.__raven_xhr && xhr.readyState === 4) { - try { - // touching statusCode in some platforms throws - // an exception - xhr.__raven_xhr.status_code = xhr.status; - } catch (e) { - /* do nothing */ - } +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"5":5}],7:[function(_dereq_,module,exports){ +(function (global){ +var stringify = _dereq_(9); - self.captureBreadcrumb({ - type: 'http', - category: 'xhr', - data: xhr.__raven_xhr - }); - } - } +var _window = + typeof window !== 'undefined' + ? window + : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; - var props = ['onload', 'onerror', 'onprogress']; +function isObject(what) { + return typeof what === 'object' && what !== null; +} - for (var j = 0; j < props.length; j++) { - wrapProp(props[j], xhr); - } +// Yanked from https://git.io/vS8DV re-used under CC0 +// with some tiny modifications +function isError(value) { + switch ({}.toString.call(value)) { + case '[object Error]': + return true; + case '[object Exception]': + return true; + case '[object DOMException]': + return true; + default: + return value instanceof Error; + } +} - if ('onreadystatechange' in xhr && isFunction(xhr.onreadystatechange)) { - fill(xhr, 'onreadystatechange', function (orig) { - return self.wrap(orig, undefined, onreadystatechangeHandler); - } - /* intentionally don't track this instrumentation */ - ); - } else { - // if onreadystatechange wasn't actually set by the page on this xhr, we - // are free to set our own and capture the breadcrumb - xhr.onreadystatechange = onreadystatechangeHandler; - } +function isErrorEvent(value) { + return supportsErrorEvent() && {}.toString.call(value) === '[object ErrorEvent]'; +} - return origSend.apply(this, arguments); - }; - }, wrappedBuiltIns); - } +function isUndefined(what) { + return what === void 0; +} - if (autoBreadcrumbs.xhr && supportsFetch()) { - fill(_window$1, 'fetch', function (origFetch) { - return function () { - // preserve arity - // Make a copy of the arguments to prevent deoptimization - // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments - var args = new Array(arguments.length); - - for (var i = 0; i < args.length; ++i) { - args[i] = arguments[i]; - } +function isFunction(what) { + return typeof what === 'function'; +} - var fetchInput = args[0]; - var method = 'GET'; - var url; +function isPlainObject(what) { + return Object.prototype.toString.call(what) === '[object Object]'; +} - if (typeof fetchInput === 'string') { - url = fetchInput; - } else if ('Request' in _window$1 && fetchInput instanceof _window$1.Request) { - url = fetchInput.url; +function isString(what) { + return Object.prototype.toString.call(what) === '[object String]'; +} - if (fetchInput.method) { - method = fetchInput.method; - } - } else { - url = '' + fetchInput; - } // if Sentry key appears in URL, don't capture, as it's our own request +function isArray(what) { + return Object.prototype.toString.call(what) === '[object Array]'; +} +function isEmptyObject(what) { + if (!isPlainObject(what)) return false; - if (url.indexOf(self._globalKey) !== -1) { - return origFetch.apply(this, args); - } + for (var _ in what) { + if (what.hasOwnProperty(_)) { + return false; + } + } + return true; +} - if (args[1] && args[1].method) { - method = args[1].method; - } +function supportsErrorEvent() { + try { + new ErrorEvent(''); // eslint-disable-line no-new + return true; + } catch (e) { + return false; + } +} - var fetchData = { - method: method, - url: url, - status_code: null - }; - return origFetch.apply(this, args).then(function (response) { - fetchData.status_code = response.status; - self.captureBreadcrumb({ - type: 'http', - category: 'fetch', - data: fetchData - }); - return response; - }); - }; - }, wrappedBuiltIns); - } // Capture breadcrumbs from any click that is unhandled / bubbled up all the way - // to the document. Do this before we instrument addEventListener. +function supportsFetch() { + if (!('fetch' in _window)) return false; + try { + new Headers(); // eslint-disable-line no-new + new Request(''); // eslint-disable-line no-new + new Response(); // eslint-disable-line no-new + return true; + } catch (e) { + return false; + } +} - if (autoBreadcrumbs.dom && this._hasDocument) { - if (_document.addEventListener) { - _document.addEventListener('click', self._breadcrumbEventHandler('click'), false); +// Despite all stars in the sky saying that Edge supports old draft syntax, aka 'never', 'always', 'origin' and 'default +// https://caniuse.com/#feat=referrer-policy +// It doesn't. And it throw exception instead of ignoring this parameter... +// REF: https://github.com/getsentry/raven-js/issues/1233 +function supportsReferrerPolicy() { + if (!supportsFetch()) return false; - _document.addEventListener('keypress', self._keypressEventHandler(), false); - } else { - // IE8 Compatibility - _document.attachEvent('onclick', self._breadcrumbEventHandler('click')); + try { + // eslint-disable-next-line no-new + new Request('pickleRick', { + referrerPolicy: 'origin' + }); + return true; + } catch (e) { + return false; + } +} - _document.attachEvent('onkeypress', self._keypressEventHandler()); - } - } // record navigation (URL) changes - // NOTE: in Chrome App environment, touching history.pushState, *even inside - // a try/catch block*, will cause Chrome to output an error to console.error - // borrowed from: https://github.com/angular/angular.js/pull/13945/files +function supportsPromiseRejectionEvent() { + return typeof PromiseRejectionEvent === 'function'; +} +function wrappedCallback(callback) { + function dataCallback(data, original) { + var normalizedData = callback(data) || data; + if (original) { + return original(normalizedData) || normalizedData; + } + return normalizedData; + } - var chrome = _window$1.chrome; - var isChromePackagedApp = chrome && chrome.app && chrome.app.runtime; - var hasPushAndReplaceState = !isChromePackagedApp && _window$1.history && history.pushState && history.replaceState; + return dataCallback; +} - if (autoBreadcrumbs.location && hasPushAndReplaceState) { - // TODO: remove onpopstate handler on uninstall() - var oldOnPopState = _window$1.onpopstate; +function each(obj, callback) { + var i, j; - _window$1.onpopstate = function () { - var currentHref = self._location.href; + if (isUndefined(obj.length)) { + for (i in obj) { + if (hasKey(obj, i)) { + callback.call(null, i, obj[i]); + } + } + } else { + j = obj.length; + if (j) { + for (i = 0; i < j; i++) { + callback.call(null, i, obj[i]); + } + } + } +} - self._captureUrlChange(self._lastHref, currentHref); +function objectMerge(obj1, obj2) { + if (!obj2) { + return obj1; + } + each(obj2, function(key, value) { + obj1[key] = value; + }); + return obj1; +} - if (oldOnPopState) { - return oldOnPopState.apply(this, arguments); - } - }; +/** + * This function is only used for react-native. + * react-native freezes object that have already been sent over the + * js bridge. We need this function in order to check if the object is frozen. + * So it's ok that objectFrozen returns false if Object.isFrozen is not + * supported because it's not relevant for other "platforms". See related issue: + * https://github.com/getsentry/react-native-sentry/issues/57 + */ +function objectFrozen(obj) { + if (!Object.isFrozen) { + return false; + } + return Object.isFrozen(obj); +} - var historyReplacementFunction = function historyReplacementFunction(origHistFunction) { - // note history.pushState.length is 0; intentionally not declaring - // params to preserve 0 arity - return function () - /* state, title, url */ - { - var url = arguments.length > 2 ? arguments[2] : undefined; // url argument is optional +function truncate(str, max) { + if (typeof max !== 'number') { + throw new Error('2nd argument to `truncate` function should be a number'); + } + if (typeof str !== 'string' || max === 0) { + return str; + } + return str.length <= max ? str : str.substr(0, max) + '\u2026'; +} - if (url) { - // coerce to string (this is what pushState does) - self._captureUrlChange(self._lastHref, url + ''); - } +/** + * hasKey, a better form of hasOwnProperty + * Example: hasKey(MainHostObject, property) === true/false + * + * @param {Object} host object to check property + * @param {string} key to check + */ +function hasKey(object, key) { + return Object.prototype.hasOwnProperty.call(object, key); +} - return origHistFunction.apply(this, arguments); - }; - }; +function joinRegExp(patterns) { + // Combine an array of regular expressions and strings into one large regexp + // Be mad. + var sources = [], + i = 0, + len = patterns.length, + pattern; - fill(history, 'pushState', historyReplacementFunction, wrappedBuiltIns); - fill(history, 'replaceState', historyReplacementFunction, wrappedBuiltIns); + for (; i < len; i++) { + pattern = patterns[i]; + if (isString(pattern)) { + // If it's a string, we need to escape it + // Taken from: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions + sources.push(pattern.replace(/([.*+?^=!:${}()|\[\]\/\\])/g, '\\$1')); + } else if (pattern && pattern.source) { + // If it's a regexp already, we want to extract the source + sources.push(pattern.source); } + // Intentionally skip other cases + } + return new RegExp(sources.join('|'), 'i'); +} - if (autoBreadcrumbs.console && 'console' in _window$1 && console.log) { - // console - var consoleMethodCallback = function consoleMethodCallback(msg, data) { - self.captureBreadcrumb({ - message: msg, - level: data.level, - category: 'console' - }); - }; +function urlencode(o) { + var pairs = []; + each(o, function(key, value) { + pairs.push(encodeURIComponent(key) + '=' + encodeURIComponent(value)); + }); + return pairs.join('&'); +} - each(['debug', 'info', 'warn', 'error', 'log'], function (_, level) { - wrapConsoleMethod(console, level, consoleMethodCallback); - }); - } - }, - _restoreBuiltIns: function _restoreBuiltIns() { - // restore any wrapped builtins - var builtin; +// borrowed from https://tools.ietf.org/html/rfc3986#appendix-B +// intentionally using regex and not href parsing trick because React Native and other +// environments where DOM might not be available +function parseUrl(url) { + if (typeof url !== 'string') return {}; + var match = url.match(/^(([^:\/?#]+):)?(\/\/([^\/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?$/); - while (this._wrappedBuiltIns.length) { - builtin = this._wrappedBuiltIns.shift(); - var obj = builtin[0], - name = builtin[1], - orig = builtin[2]; - obj[name] = orig; - } - }, - _restoreConsole: function _restoreConsole() { - // eslint-disable-next-line guard-for-in - for (var method in this._originalConsoleMethods) { - this._originalConsole[method] = this._originalConsoleMethods[method]; - } - }, - _drainPlugins: function _drainPlugins() { - var self = this; // FIX ME TODO + // coerce to undefined values to empty string so we don't get 'undefined' + var query = match[6] || ''; + var fragment = match[8] || ''; + return { + protocol: match[2], + host: match[4], + path: match[5], + relative: match[5] + query + fragment // everything minus origin + }; +} +function uuid4() { + var crypto = _window.crypto || _window.msCrypto; - each(this._plugins, function (_, plugin) { - var installer = plugin[0]; - var args = plugin[1]; - installer.apply(self, [self].concat(args)); - }); - }, - _parseDSN: function _parseDSN(str) { - var m = dsnPattern.exec(str), - dsn = {}, - i = 7; + if (!isUndefined(crypto) && crypto.getRandomValues) { + // Use window.crypto API if available + // eslint-disable-next-line no-undef + var arr = new Uint16Array(8); + crypto.getRandomValues(arr); - try { - while (i--) { - dsn[dsnKeys[i]] = m[i] || ''; - } - } catch (e) { - throw new configError('Invalid DSN: ' + str); - } + // set 4 in byte 7 + arr[3] = (arr[3] & 0xfff) | 0x4000; + // set 2 most significant bits of byte 9 to '10' + arr[4] = (arr[4] & 0x3fff) | 0x8000; - if (dsn.pass && !this._globalOptions.allowSecretKey) { - throw new configError('Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key'); - } + var pad = function(num) { + var v = num.toString(16); + while (v.length < 4) { + v = '0' + v; + } + return v; + }; - return dsn; - }, - _getGlobalServer: function _getGlobalServer(uri) { - // assemble the endpoint from the uri pieces - var globalServer = '//' + uri.host + (uri.port ? ':' + uri.port : ''); + return ( + pad(arr[0]) + + pad(arr[1]) + + pad(arr[2]) + + pad(arr[3]) + + pad(arr[4]) + + pad(arr[5]) + + pad(arr[6]) + + pad(arr[7]) + ); + } else { + // http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/2117523#2117523 + return 'xxxxxxxxxxxx4xxxyxxxxxxxxxxxxxxx'.replace(/[xy]/g, function(c) { + var r = (Math.random() * 16) | 0, + v = c === 'x' ? r : (r & 0x3) | 0x8; + return v.toString(16); + }); + } +} - if (uri.protocol) { - globalServer = uri.protocol + ':' + globalServer; - } +/** + * Given a child DOM element, returns a query-selector statement describing that + * and its ancestors + * e.g. [HTMLElement] => body > div > input#foo.btn[name=baz] + * @param elem + * @returns {string} + */ +function htmlTreeAsString(elem) { + /* eslint no-extra-parens:0*/ + var MAX_TRAVERSE_HEIGHT = 5, + MAX_OUTPUT_LEN = 80, + out = [], + height = 0, + len = 0, + separator = ' > ', + sepLength = separator.length, + nextStr; - return globalServer; - }, - _handleOnErrorStackInfo: function _handleOnErrorStackInfo() { - // if we are intentionally ignoring errors via onerror, bail out - if (!this._ignoreOnError) { - this._handleStackInfo.apply(this, arguments); + while (elem && height++ < MAX_TRAVERSE_HEIGHT) { + nextStr = htmlElementAsString(elem); + // bail out if + // - nextStr is the 'html' element + // - the length of the string that would be created exceeds MAX_OUTPUT_LEN + // (ignore this limit if we are on the first iteration) + if ( + nextStr === 'html' || + (height > 1 && len + out.length * sepLength + nextStr.length >= MAX_OUTPUT_LEN) + ) { + break; } - }, - _handleStackInfo: function _handleStackInfo(stackInfo, options) { - var frames = this._prepareFrames(stackInfo, options); - this._triggerEvent('handle', { - stackInfo: stackInfo, - options: options - }); + out.push(nextStr); - this._processException(stackInfo.name, stackInfo.message, stackInfo.url, stackInfo.lineno, frames, options); - }, - _prepareFrames: function _prepareFrames(stackInfo, options) { - var self = this; - var frames = []; + len += nextStr.length; + elem = elem.parentNode; + } - if (stackInfo.stack && stackInfo.stack.length) { - each(stackInfo.stack, function (i, stack) { - var frame = self._normalizeFrame(stack, stackInfo.url); + return out.reverse().join(separator); +} - if (frame) { - frames.push(frame); - } - }); // e.g. frames captured via captureMessage throw +/** + * Returns a simple, query-selector representation of a DOM element + * e.g. [HTMLElement] => input#foo.btn[name=baz] + * @param HTMLElement + * @returns {string} + */ +function htmlElementAsString(elem) { + var out = [], + className, + classes, + key, + attr, + i; - if (options && options.trimHeadFrames) { - for (var j = 0; j < options.trimHeadFrames && j < frames.length; j++) { - frames[j].in_app = false; - } - } - } + if (!elem || !elem.tagName) { + return ''; + } - frames = frames.slice(0, this._globalOptions.stackTraceLimit); - return frames; - }, - _normalizeFrame: function _normalizeFrame(frame, stackInfoUrl) { - // normalize the frames data - var normalized = { - filename: frame.url, - lineno: frame.line, - colno: frame.column, - function: frame.func || '?' - }; // Case when we don't have any information about the error - // E.g. throwing a string or raw object, instead of an `Error` in Firefox - // Generating synthetic error doesn't add any value here - // - // We should probably somehow let a user know that they should fix their code + out.push(elem.tagName.toLowerCase()); + if (elem.id) { + out.push('#' + elem.id); + } - if (!frame.url) { - normalized.filename = stackInfoUrl; // fallback to whole stacks url from onerror handler + className = elem.className; + if (className && isString(className)) { + classes = className.split(/\s+/); + for (i = 0; i < classes.length; i++) { + out.push('.' + classes[i]); } - - normalized.in_app = !( // determine if an exception came from outside of our app - // first we check the global includePaths list. - !!this._globalOptions.includePaths.test && !this._globalOptions.includePaths.test(normalized.filename) || // Now we check for fun, if the function name is Raven or TraceKit - /(Raven|TraceKit)\./.test(normalized['function']) || // finally, we do a last ditch effort and check for raven.min.js - /raven\.(min\.)?js$/.test(normalized.filename)); - return normalized; - }, - _processException: function _processException(type, message, fileurl, lineno, frames, options) { - var prefixedMessage = (type ? type + ': ' : '') + (message || ''); - - if (!!this._globalOptions.ignoreErrors.test && (this._globalOptions.ignoreErrors.test(message) || this._globalOptions.ignoreErrors.test(prefixedMessage))) { - return; + } + var attrWhitelist = ['type', 'name', 'title', 'alt']; + for (i = 0; i < attrWhitelist.length; i++) { + key = attrWhitelist[i]; + attr = elem.getAttribute(key); + if (attr) { + out.push('[' + key + '="' + attr + '"]'); } + } + return out.join(''); +} - var stacktrace; +/** + * Returns true if either a OR b is truthy, but not both + */ +function isOnlyOneTruthy(a, b) { + return !!(!!a ^ !!b); +} - if (frames && frames.length) { - fileurl = frames[0].filename || fileurl; // Sentry expects frames oldest to newest - // and JS sends them as newest to oldest +/** + * Returns true if both parameters are undefined + */ +function isBothUndefined(a, b) { + return isUndefined(a) && isUndefined(b); +} - frames.reverse(); - stacktrace = { - frames: frames - }; - } else if (fileurl) { - stacktrace = { - frames: [{ - filename: fileurl, - lineno: lineno, - in_app: true - }] - }; - } +/** + * Returns true if the two input exception interfaces have the same content + */ +function isSameException(ex1, ex2) { + if (isOnlyOneTruthy(ex1, ex2)) return false; - if (!!this._globalOptions.ignoreUrls.test && this._globalOptions.ignoreUrls.test(fileurl)) { - return; - } + ex1 = ex1.values[0]; + ex2 = ex2.values[0]; - if (!!this._globalOptions.whitelistUrls.test && !this._globalOptions.whitelistUrls.test(fileurl)) { - return; - } + if (ex1.type !== ex2.type || ex1.value !== ex2.value) return false; - var data = objectMerge({ - // sentry.interfaces.Exception - exception: { - values: [{ - type: type, - value: message, - stacktrace: stacktrace - }] - }, - culprit: fileurl - }, options); // Fire away! + // in case both stacktraces are undefined, we can't decide so default to false + if (isBothUndefined(ex1.stacktrace, ex2.stacktrace)) return false; - this._send(data); - }, - _trimPacket: function _trimPacket(data) { - // For now, we only want to truncate the two different messages - // but this could/should be expanded to just trim everything - var max = this._globalOptions.maxMessageLength; + return isSameStacktrace(ex1.stacktrace, ex2.stacktrace); +} - if (data.message) { - data.message = truncate(data.message, max); - } +/** + * Returns true if the two input stack trace interfaces have the same content + */ +function isSameStacktrace(stack1, stack2) { + if (isOnlyOneTruthy(stack1, stack2)) return false; - if (data.exception) { - var exception = data.exception.values[0]; - exception.value = truncate(exception.value, max); - } + var frames1 = stack1.frames; + var frames2 = stack2.frames; - var request = data.request; + // Exit early if frame count differs + if (frames1.length !== frames2.length) return false; - if (request) { - if (request.url) { - request.url = truncate(request.url, this._globalOptions.maxUrlLength); - } + // Iterate through every frame; bail out if anything differs + var a, b; + for (var i = 0; i < frames1.length; i++) { + a = frames1[i]; + b = frames2[i]; + if ( + a.filename !== b.filename || + a.lineno !== b.lineno || + a.colno !== b.colno || + a['function'] !== b['function'] + ) + return false; + } + return true; +} - if (request.Referer) { - request.Referer = truncate(request.Referer, this._globalOptions.maxUrlLength); - } - } +/** + * Polyfill a method + * @param obj object e.g. `document` + * @param name method name present on object e.g. `addEventListener` + * @param replacement replacement function + * @param track {optional} record instrumentation to an array + */ +function fill(obj, name, replacement, track) { + if (obj == null) return; + var orig = obj[name]; + obj[name] = replacement(orig); + obj[name].__raven__ = true; + obj[name].__orig__ = orig; + if (track) { + track.push([obj, name, orig]); + } +} - if (data.breadcrumbs && data.breadcrumbs.values) this._trimBreadcrumbs(data.breadcrumbs); - return data; - }, +/** + * Join values in array + * @param input array of values to be joined together + * @param delimiter string to be placed in-between values + * @returns {string} + */ +function safeJoin(input, delimiter) { + if (!isArray(input)) return ''; - /** - * Truncate breadcrumb values (right now just URLs) - */ - _trimBreadcrumbs: function _trimBreadcrumbs(breadcrumbs) { - // known breadcrumb properties with urls - // TODO: also consider arbitrary prop values that start with (https?)?:// - var urlProps = ['to', 'from', 'url'], - urlProp, - crumb, - data; + var output = []; - for (var i = 0; i < breadcrumbs.values.length; ++i) { - crumb = breadcrumbs.values[i]; - if (!crumb.hasOwnProperty('data') || !isObject(crumb.data) || objectFrozen(crumb.data)) continue; - data = objectMerge({}, crumb.data); + for (var i = 0; i < input.length; i++) { + try { + output.push(String(input[i])); + } catch (e) { + output.push('[value cannot be serialized]'); + } + } - for (var j = 0; j < urlProps.length; ++j) { - urlProp = urlProps[j]; + return output.join(delimiter); +} - if (data.hasOwnProperty(urlProp) && data[urlProp]) { - data[urlProp] = truncate(data[urlProp], this._globalOptions.maxUrlLength); - } - } +// Default Node.js REPL depth +var MAX_SERIALIZE_EXCEPTION_DEPTH = 3; +// 50kB, as 100kB is max payload size, so half sounds reasonable +var MAX_SERIALIZE_EXCEPTION_SIZE = 50 * 1024; +var MAX_SERIALIZE_KEYS_LENGTH = 40; - breadcrumbs.values[i].data = data; - } - }, - _getHttpData: function _getHttpData() { - if (!this._hasNavigator && !this._hasDocument) return; - var httpData = {}; +function utf8Length(value) { + return ~-encodeURI(value).split(/%..|./).length; +} - if (this._hasNavigator && _navigator.userAgent) { - httpData.headers = { - 'User-Agent': navigator.userAgent - }; - } // Check in `window` instead of `document`, as we may be in ServiceWorker environment +function jsonSize(value) { + return utf8Length(JSON.stringify(value)); +} + +function serializeValue(value) { + if (typeof value === 'string') { + var maxLength = 40; + return truncate(value, maxLength); + } else if ( + typeof value === 'number' || + typeof value === 'boolean' || + typeof value === 'undefined' + ) { + return value; + } + var type = Object.prototype.toString.call(value); - if (_window$1.location && _window$1.location.href) { - httpData.url = _window$1.location.href; - } + // Node.js REPL notation + if (type === '[object Object]') return '[Object]'; + if (type === '[object Array]') return '[Array]'; + if (type === '[object Function]') + return value.name ? '[Function: ' + value.name + ']' : '[Function]'; - if (this._hasDocument && _document.referrer) { - if (!httpData.headers) httpData.headers = {}; - httpData.headers.Referer = _document.referrer; - } + return value; +} - return httpData; - }, - _resetBackoff: function _resetBackoff() { - this._backoffDuration = 0; - this._backoffStart = null; - }, - _shouldBackoff: function _shouldBackoff() { - return this._backoffDuration && now() - this._backoffStart < this._backoffDuration; - }, +function serializeObject(value, depth) { + if (depth === 0) return serializeValue(value); + + if (isPlainObject(value)) { + return Object.keys(value).reduce(function(acc, key) { + acc[key] = serializeObject(value[key], depth - 1); + return acc; + }, {}); + } else if (Array.isArray(value)) { + return value.map(function(val) { + return serializeObject(val, depth - 1); + }); + } - /** - * Returns true if the in-process data payload matches the signature - * of the previously-sent data - * - * NOTE: This has to be done at this level because TraceKit can generate - * data from window.onerror WITHOUT an exception object (IE8, IE9, - * other old browsers). This can take the form of an "exception" - * data object with a single frame (derived from the onerror args). - */ - _isRepeatData: function _isRepeatData(current) { - var last = this._lastData; - if (!last || current.message !== last.message || // defined for captureMessage - current.culprit !== last.culprit // defined for captureException/onerror - ) return false; // Stacktrace interface (i.e. from captureMessage) + return serializeValue(value); +} - if (current.stacktrace || last.stacktrace) { - return isSameStacktrace(current.stacktrace, last.stacktrace); - } else if (current.exception || last.exception) { - // Exception interface (i.e. from captureException/onerror) - return isSameException(current.exception, last.exception); - } +function serializeException(ex, depth, maxSize) { + if (!isPlainObject(ex)) return ex; - return true; - }, - _setBackoffState: function _setBackoffState(request) { - // If we are already in a backoff state, don't change anything - if (this._shouldBackoff()) { - return; - } + depth = typeof depth !== 'number' ? MAX_SERIALIZE_EXCEPTION_DEPTH : depth; + maxSize = typeof depth !== 'number' ? MAX_SERIALIZE_EXCEPTION_SIZE : maxSize; - var status = request.status; // 400 - project_id doesn't exist or some other fatal - // 401 - invalid/revoked dsn - // 429 - too many requests + var serialized = serializeObject(ex, depth); - if (!(status === 400 || status === 401 || status === 429)) return; - var retry; + if (jsonSize(stringify(serialized)) > maxSize) { + return serializeException(ex, depth - 1); + } - try { - // If Retry-After is not in Access-Control-Expose-Headers, most - // browsers will throw an exception trying to access it - if (supportsFetch()) { - retry = request.headers.get('Retry-After'); - } else { - retry = request.getResponseHeader('Retry-After'); - } // Retry-After is returned in seconds + return serialized; +} +function serializeKeysForMessage(keys, maxLength) { + if (typeof keys === 'number' || typeof keys === 'string') return keys.toString(); + if (!Array.isArray(keys)) return ''; - retry = parseInt(retry, 10) * 1000; - } catch (e) { - /* eslint no-empty:0 */ - } + keys = keys.filter(function(key) { + return typeof key === 'string'; + }); + if (keys.length === 0) return '[object has no keys]'; - this._backoffDuration = retry ? // If Sentry server returned a Retry-After value, use it - retry : // Otherwise, double the last backoff duration (starts at 1 sec) - this._backoffDuration * 2 || 1000; - this._backoffStart = now(); - }, - _send: function _send(data) { - var globalOptions = this._globalOptions; + maxLength = typeof maxLength !== 'number' ? MAX_SERIALIZE_KEYS_LENGTH : maxLength; + if (keys[0].length >= maxLength) return keys[0]; - var baseData = { - project: this._globalProject, - logger: globalOptions.logger, - platform: 'javascript' - }, - httpData = this._getHttpData(); + for (var usedKeys = keys.length; usedKeys > 0; usedKeys--) { + var serialized = keys.slice(0, usedKeys).join(', '); + if (serialized.length > maxLength) continue; + if (usedKeys === keys.length) return serialized; + return serialized + '\u2026'; + } - if (httpData) { - baseData.request = httpData; - } // HACK: delete `trimHeadFrames` to prevent from appearing in outbound payload + return ''; +} +function sanitize(input, sanitizeKeys) { + if (!isArray(sanitizeKeys) || (isArray(sanitizeKeys) && sanitizeKeys.length === 0)) + return input; - if (data.trimHeadFrames) delete data.trimHeadFrames; - data = objectMerge(baseData, data); // Merge in the tags and extra separately since objectMerge doesn't handle a deep merge + var sanitizeRegExp = joinRegExp(sanitizeKeys); + var sanitizeMask = '********'; + var safeInput; - data.tags = objectMerge(objectMerge({}, this._globalContext.tags), data.tags); - data.extra = objectMerge(objectMerge({}, this._globalContext.extra), data.extra); // Send along our own collected metadata with extra + try { + safeInput = JSON.parse(stringify(input)); + } catch (o_O) { + return input; + } - data.extra['session:duration'] = now() - this._startTime; + function sanitizeWorker(workerInput) { + if (isArray(workerInput)) { + return workerInput.map(function(val) { + return sanitizeWorker(val); + }); + } - if (this._breadcrumbs && this._breadcrumbs.length > 0) { - // intentionally make shallow copy so that additions - // to breadcrumbs aren't accidentally sent in this request - data.breadcrumbs = { - values: [].slice.call(this._breadcrumbs, 0) - }; + if (isPlainObject(workerInput)) { + return Object.keys(workerInput).reduce(function(acc, k) { + if (sanitizeRegExp.test(k)) { + acc[k] = sanitizeMask; + } else { + acc[k] = sanitizeWorker(workerInput[k]); + } + return acc; + }, {}); } - if (this._globalContext.user) { - // sentry.interfaces.User - data.user = this._globalContext.user; - } // Include the environment if it's defined in globalOptions + return workerInput; + } + return sanitizeWorker(safeInput); +} - if (globalOptions.environment) data.environment = globalOptions.environment; // Include the release if it's defined in globalOptions +module.exports = { + isObject: isObject, + isError: isError, + isErrorEvent: isErrorEvent, + isUndefined: isUndefined, + isFunction: isFunction, + isPlainObject: isPlainObject, + isString: isString, + isArray: isArray, + isEmptyObject: isEmptyObject, + supportsErrorEvent: supportsErrorEvent, + supportsFetch: supportsFetch, + supportsReferrerPolicy: supportsReferrerPolicy, + supportsPromiseRejectionEvent: supportsPromiseRejectionEvent, + wrappedCallback: wrappedCallback, + each: each, + objectMerge: objectMerge, + truncate: truncate, + objectFrozen: objectFrozen, + hasKey: hasKey, + joinRegExp: joinRegExp, + urlencode: urlencode, + uuid4: uuid4, + htmlTreeAsString: htmlTreeAsString, + htmlElementAsString: htmlElementAsString, + isSameException: isSameException, + isSameStacktrace: isSameStacktrace, + parseUrl: parseUrl, + fill: fill, + safeJoin: safeJoin, + serializeException: serializeException, + serializeKeysForMessage: serializeKeysForMessage, + sanitize: sanitize +}; - if (globalOptions.release) data.release = globalOptions.release; // Include server_name if it's defined in globalOptions +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"9":9}],8:[function(_dereq_,module,exports){ +(function (global){ +var utils = _dereq_(7); - if (globalOptions.serverName) data.server_name = globalOptions.serverName; // Cleanup empty properties before sending them to the server +/* + TraceKit - Cross brower stack traces - Object.keys(data).forEach(function (key) { - if (data[key] == null || data[key] === '' || isEmptyObject(data[key])) { - delete data[key]; - } - }); + This was originally forked from github.com/occ/TraceKit, but has since been + largely re-written and is now maintained as part of raven-js. Tests for + this are in test/vendor. - if (isFunction(globalOptions.dataCallback)) { - data = globalOptions.dataCallback(data) || data; - } // Why?????????? + MIT license +*/ +var TraceKit = { + collectWindowErrors: true, + debug: false +}; - if (!data || isEmptyObject(data)) { - return; - } // Check if the request should be filtered or not +// This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) +var _window = + typeof window !== 'undefined' + ? window + : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; +// global reference to slice +var _slice = [].slice; +var UNKNOWN_FUNCTION = '?'; - if (isFunction(globalOptions.shouldSendCallback) && !globalOptions.shouldSendCallback(data)) { - return; - } // Backoff state: Sentry server previously responded w/ an error (e.g. 429 - too many requests), - // so drop requests until "cool-off" period has elapsed. +// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error#Error_types +var ERROR_TYPES_RE = /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/; +function getLocationHref() { + if (typeof document === 'undefined' || document.location == null) return ''; - if (this._shouldBackoff()) { - this._logDebug('warn', 'Raven dropped error due to backoff: ', data); + return document.location.href; +} - return; +/** + * TraceKit.report: cross-browser processing of unhandled exceptions + * + * Syntax: + * TraceKit.report.subscribe(function(stackInfo) { ... }) + * TraceKit.report.unsubscribe(function(stackInfo) { ... }) + * TraceKit.report(exception) + * try { ...code... } catch(ex) { TraceKit.report(ex); } + * + * Supports: + * - Firefox: full stack trace with line numbers, plus column number + * on top frame; column number is not guaranteed + * - Opera: full stack trace with line and column numbers + * - Chrome: full stack trace with line and column numbers + * - Safari: line and column number for the top frame only; some frames + * may be missing, and column number is not guaranteed + * - IE: line and column number for the top frame only; some frames + * may be missing, and column number is not guaranteed + * + * In theory, TraceKit should work on all of the following versions: + * - IE5.5+ (only 8.0 tested) + * - Firefox 0.9+ (only 3.5+ tested) + * - Opera 7+ (only 10.50 tested; versions 9 and earlier may require + * Exceptions Have Stacktrace to be enabled in opera:config) + * - Safari 3+ (only 4+ tested) + * - Chrome 1+ (only 5+ tested) + * - Konqueror 3.5+ (untested) + * + * Requires TraceKit.computeStackTrace. + * + * Tries to catch all unhandled exceptions and report them to the + * subscribed handlers. Please note that TraceKit.report will rethrow the + * exception. This is REQUIRED in order to get a useful stack trace in IE. + * If the exception does not reach the top of the browser, you will only + * get a stack trace from the point where TraceKit.report was called. + * + * Handlers receive a stackInfo object as described in the + * TraceKit.computeStackTrace docs. + */ +TraceKit.report = (function reportModuleWrapper() { + var handlers = [], + lastArgs = null, + lastException = null, + lastExceptionStack = null; + + /** + * Add a crash handler. + * @param {Function} handler + */ + function subscribe(handler) { + installGlobalHandler(); + handlers.push(handler); + } + + /** + * Remove a crash handler. + * @param {Function} handler + */ + function unsubscribe(handler) { + for (var i = handlers.length - 1; i >= 0; --i) { + if (handlers[i] === handler) { + handlers.splice(i, 1); + } } + } - if (typeof globalOptions.sampleRate === 'number') { - if (Math.random() < globalOptions.sampleRate) { - this._sendProcessedPayload(data); + /** + * Remove all crash handlers. + */ + function unsubscribeAll() { + uninstallGlobalHandler(); + handlers = []; + } + + /** + * Dispatch stack information to all handlers. + * @param {Object.} stack + */ + function notifyHandlers(stack, isWindowError) { + var exception = null; + if (isWindowError && !TraceKit.collectWindowErrors) { + return; + } + for (var i in handlers) { + if (handlers.hasOwnProperty(i)) { + try { + handlers[i].apply(null, [stack].concat(_slice.call(arguments, 2))); + } catch (inner) { + exception = inner; + } } - } else { - this._sendProcessedPayload(data); } - }, - _getUuid: function _getUuid() { - return uuid4(); - }, - _sendProcessedPayload: function _sendProcessedPayload(data, callback) { - var self = this; - var globalOptions = this._globalOptions; - if (!this.isSetup()) return; // Try and clean up the packet before sending by truncating long values - data = this._trimPacket(data); // ideally duplicate error testing should occur *before* dataCallback/shouldSendCallback, - // but this would require copying an un-truncated copy of the data packet, which can be - // arbitrarily deep (extra_data) -- could be worthwhile? will revisit + if (exception) { + throw exception; + } + } - if (!this._globalOptions.allowDuplicates && this._isRepeatData(data)) { - this._logDebug('warn', 'Raven dropped repeat event: ', data); + var _oldOnerrorHandler, _onErrorHandlerInstalled; - return; - } // Send along an event_id if not explicitly passed. - // This event_id can be used to reference the error within Sentry itself. - // Set lastEventId after we know the error should actually be sent + /** + * Ensures all global unhandled exceptions are recorded. + * Supported by Gecko and IE. + * @param {string} msg Error message. + * @param {string} url URL of script that generated the exception. + * @param {(number|string)} lineNo The line number at which the error + * occurred. + * @param {?(number|string)} colNo The column number at which the error + * occurred. + * @param {?Error} ex The actual Error object. + */ + function traceKitWindowOnError(msg, url, lineNo, colNo, ex) { + var stack = null; + // If 'ex' is ErrorEvent, get real Error from inside + var exception = utils.isErrorEvent(ex) ? ex.error : ex; + // If 'msg' is ErrorEvent, get real message from inside + var message = utils.isErrorEvent(msg) ? msg.message : msg; + + if (lastExceptionStack) { + TraceKit.computeStackTrace.augmentStackTraceWithInitialElement( + lastExceptionStack, + url, + lineNo, + message + ); + processLastException(); + } else if (exception && utils.isError(exception)) { + // non-string `exception` arg; attempt to extract stack trace + + // New chrome and blink send along a real error object + // Let's just report that like a normal error. + // See: https://mikewest.org/2013/08/debugging-runtime-errors-with-window-onerror + stack = TraceKit.computeStackTrace(exception); + notifyHandlers(stack, true); + } else { + var location = { + url: url, + line: lineNo, + column: colNo + }; + + var name = undefined; + var groups; + if ({}.toString.call(message) === '[object String]') { + var groups = message.match(ERROR_TYPES_RE); + if (groups) { + name = groups[1]; + message = groups[2]; + } + } - this._lastEventId = data.event_id || (data.event_id = this._getUuid()); // Store outbound payload after trim + location.func = UNKNOWN_FUNCTION; - this._lastData = data; + stack = { + name: name, + message: message, + url: getLocationHref(), + stack: [location] + }; + notifyHandlers(stack, true); + } + + if (_oldOnerrorHandler) { + return _oldOnerrorHandler.apply(this, arguments); + } + + return false; + } + + function installGlobalHandler() { + if (_onErrorHandlerInstalled) { + return; + } + _oldOnerrorHandler = _window.onerror; + _window.onerror = traceKitWindowOnError; + _onErrorHandlerInstalled = true; + } - this._logDebug('debug', 'Raven about to send:', data); + function uninstallGlobalHandler() { + if (!_onErrorHandlerInstalled) { + return; + } + _window.onerror = _oldOnerrorHandler; + _onErrorHandlerInstalled = false; + _oldOnerrorHandler = undefined; + } - var auth = { - sentry_version: '7', - sentry_client: 'raven-js/' + this.VERSION, - sentry_key: this._globalKey - }; + function processLastException() { + var _lastExceptionStack = lastExceptionStack, + _lastArgs = lastArgs; + lastArgs = null; + lastExceptionStack = null; + lastException = null; + notifyHandlers.apply(null, [_lastExceptionStack, false].concat(_lastArgs)); + } - if (this._globalSecret) { - auth.sentry_secret = this._globalSecret; + /** + * Reports an unhandled Error to TraceKit. + * @param {Error} ex + * @param {?boolean} rethrow If false, do not re-throw the exception. + * Only used for window.onerror to not cause an infinite loop of + * rethrowing. + */ + function report(ex, rethrow) { + var args = _slice.call(arguments, 1); + if (lastExceptionStack) { + if (lastException === ex) { + return; // already caught by an inner catch block, ignore + } else { + processLastException(); + } } - var exception = data.exception && data.exception.values[0]; // only capture 'sentry' breadcrumb is autoBreadcrumbs is truthy + var stack = TraceKit.computeStackTrace(ex); + lastExceptionStack = stack; + lastException = ex; + lastArgs = args; - if (this._globalOptions.autoBreadcrumbs && this._globalOptions.autoBreadcrumbs.sentry) { - this.captureBreadcrumb({ - category: 'sentry', - message: exception ? (exception.type ? exception.type + ': ' : '') + exception.value : data.message, - event_id: data.event_id, - level: data.level || 'error' // presume error unless specified + // If the stack trace is incomplete, wait for 2 seconds for + // slow slow IE to see if onerror occurs or not before reporting + // this exception; otherwise, we will end up with an incomplete + // stack trace + setTimeout(function() { + if (lastException === ex) { + processLastException(); + } + }, stack.incomplete ? 2000 : 0); - }); + if (rethrow !== false) { + throw ex; // re-throw to propagate to the top level (and cause window.onerror) } + } - var url = this._globalEndpoint; + report.subscribe = subscribe; + report.unsubscribe = unsubscribe; + report.uninstall = unsubscribeAll; + return report; +})(); - (globalOptions.transport || this._makeRequest).call(this, { - url: url, - auth: auth, - data: data, - options: globalOptions, - onSuccess: function success() { - self._resetBackoff(); +/** + * TraceKit.computeStackTrace: cross-browser stack traces in JavaScript + * + * Syntax: + * s = TraceKit.computeStackTrace(exception) // consider using TraceKit.report instead (see below) + * Returns: + * s.name - exception name + * s.message - exception message + * s.stack[i].url - JavaScript or HTML file URL + * s.stack[i].func - function name, or empty for anonymous functions (if guessing did not work) + * s.stack[i].args - arguments passed to the function, if known + * s.stack[i].line - line number, if known + * s.stack[i].column - column number, if known + * + * Supports: + * - Firefox: full stack trace with line numbers and unreliable column + * number on top frame + * - Opera 10: full stack trace with line and column numbers + * - Opera 9-: full stack trace with line numbers + * - Chrome: full stack trace with line and column numbers + * - Safari: line and column number for the topmost stacktrace element + * only + * - IE: no line numbers whatsoever + * + * Tries to guess names of anonymous functions by looking for assignments + * in the source code. In IE and Safari, we have to guess source file names + * by searching for function bodies inside all page scripts. This will not + * work for scripts that are loaded cross-domain. + * Here be dragons: some function names may be guessed incorrectly, and + * duplicate functions may be mismatched. + * + * TraceKit.computeStackTrace should only be used for tracing purposes. + * Logging of unhandled exceptions should be done with TraceKit.report, + * which builds on top of TraceKit.computeStackTrace and provides better + * IE support by utilizing the window.onerror event to retrieve information + * about the top of the stack. + * + * Note: In IE and Safari, no stack trace is recorded on the Error object, + * so computeStackTrace instead walks its *own* chain of callers. + * This means that: + * * in Safari, some methods may be missing from the stack trace; + * * in IE, the topmost function in the stack trace will always be the + * caller of computeStackTrace. + * + * This is okay for tracing (because you are likely to be calling + * computeStackTrace from the function you want to be the topmost element + * of the stack trace anyway), but not okay for logging unhandled + * exceptions (because your catch block will likely be far away from the + * inner function that actually caused the exception). + * + */ +TraceKit.computeStackTrace = (function computeStackTraceWrapper() { + // Contents of Exception in various browsers. + // + // SAFARI: + // ex.message = Can't find variable: qq + // ex.line = 59 + // ex.sourceId = 580238192 + // ex.sourceURL = http://... + // ex.expressionBeginOffset = 96 + // ex.expressionCaretOffset = 98 + // ex.expressionEndOffset = 98 + // ex.name = ReferenceError + // + // FIREFOX: + // ex.message = qq is not defined + // ex.fileName = http://... + // ex.lineNumber = 59 + // ex.columnNumber = 69 + // ex.stack = ...stack trace... (see the example below) + // ex.name = ReferenceError + // + // CHROME: + // ex.message = qq is not defined + // ex.name = ReferenceError + // ex.type = not_defined + // ex.arguments = ['aa'] + // ex.stack = ...stack trace... + // + // INTERNET EXPLORER: + // ex.message = ... + // ex.name = ReferenceError + // + // OPERA: + // ex.message = ...message... (see the example below) + // ex.name = ReferenceError + // ex.opera#sourceloc = 11 (pretty much useless, duplicates the info in ex.message) + // ex.stacktrace = n/a; see 'opera:config#UserPrefs|Exceptions Have Stacktrace' - self._triggerEvent('success', { - data: data, - src: url - }); + /** + * Computes stack trace information from the stack property. + * Chrome and Gecko use this property. + * @param {Error} ex + * @return {?Object.} Stack trace information. + */ + function computeStackTraceFromStackProp(ex) { + if (typeof ex.stack === 'undefined' || !ex.stack) return; - callback && callback(); - }, - onError: function failure(error) { - self._logDebug('error', 'Raven transport failed to send: ', error); + var chrome = /^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i; + var winjs = /^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i; + // NOTE: blob urls are now supposed to always have an origin, therefore it's format + // which is `blob:http://url/path/with-some-uuid`, is matched by `blob.*?:\/` as well + var gecko = /^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i; + // Used to additionally parse URL/line/column from eval frames + var geckoEval = /(\S+) line (\d+)(?: > eval line \d+)* > eval/i; + var chromeEval = /\((\S*)(?::(\d+))(?::(\d+))\)/; + var lines = ex.stack.split('\n'); + var stack = []; + var submatch; + var parts; + var element; + var reference = /^(.*) is undefined$/.exec(ex.message); - if (error.request) { - self._setBackoffState(error.request); + for (var i = 0, j = lines.length; i < j; ++i) { + if ((parts = chrome.exec(lines[i]))) { + var isNative = parts[2] && parts[2].indexOf('native') === 0; // start of line + var isEval = parts[2] && parts[2].indexOf('eval') === 0; // start of line + if (isEval && (submatch = chromeEval.exec(parts[2]))) { + // throw out eval line/column and use top-most line/column number + parts[2] = submatch[1]; // url + parts[3] = submatch[2]; // line + parts[4] = submatch[3]; // column } + element = { + url: !isNative ? parts[2] : null, + func: parts[1] || UNKNOWN_FUNCTION, + args: isNative ? [parts[2]] : [], + line: parts[3] ? +parts[3] : null, + column: parts[4] ? +parts[4] : null + }; + } else if ((parts = winjs.exec(lines[i]))) { + element = { + url: parts[2], + func: parts[1] || UNKNOWN_FUNCTION, + args: [], + line: +parts[3], + column: parts[4] ? +parts[4] : null + }; + } else if ((parts = gecko.exec(lines[i]))) { + var isEval = parts[3] && parts[3].indexOf(' > eval') > -1; + if (isEval && (submatch = geckoEval.exec(parts[3]))) { + // throw out eval line/column and use top-most line number + parts[3] = submatch[1]; + parts[4] = submatch[2]; + parts[5] = null; // no column when eval + } else if (i === 0 && !parts[5] && typeof ex.columnNumber !== 'undefined') { + // FireFox uses this awesome columnNumber property for its top frame + // Also note, Firefox's column number is 0-based and everything else expects 1-based, + // so adding 1 + // NOTE: this hack doesn't work if top-most frame is eval + stack[0].column = ex.columnNumber + 1; + } + element = { + url: parts[3], + func: parts[1] || UNKNOWN_FUNCTION, + args: parts[2] ? parts[2].split(',') : [], + line: parts[4] ? +parts[4] : null, + column: parts[5] ? +parts[5] : null + }; + } else { + continue; + } - self._triggerEvent('failure', { - data: data, - src: url - }); - - error = error || new Error('Raven send failed (no additional details provided)'); - callback && callback(error); + if (!element.func && element.line) { + element.func = UNKNOWN_FUNCTION; } - }); - }, - _makeRequest: function _makeRequest(opts) { - // Auth is intentionally sent as part of query string (NOT as custom HTTP header) to avoid preflight CORS requests - var url = opts.url + '?' + urlencode(opts.auth); - var evaluatedHeaders = null; - var evaluatedFetchParameters = {}; - if (opts.options.headers) { - evaluatedHeaders = this._evaluateHash(opts.options.headers); + stack.push(element); } - if (opts.options.fetchParameters) { - evaluatedFetchParameters = this._evaluateHash(opts.options.fetchParameters); + if (!stack.length) { + return null; } - if (supportsFetch()) { - evaluatedFetchParameters.body = stringify_1(opts.data); - var defaultFetchOptions = objectMerge({}, this._fetchDefaults); - var fetchOptions = objectMerge(defaultFetchOptions, evaluatedFetchParameters); + return { + name: ex.name, + message: ex.message, + url: getLocationHref(), + stack: stack + }; + } + + /** + * Adds information about the first frame to incomplete stack traces. + * Safari and IE require this to get complete data on the first frame. + * @param {Object.} stackInfo Stack trace information from + * one of the compute* methods. + * @param {string} url The URL of the script that caused an error. + * @param {(number|string)} lineNo The line number of the script that + * caused an error. + * @param {string=} message The error generated by the browser, which + * hopefully contains the name of the object that caused the error. + * @return {boolean} Whether or not the stack information was + * augmented. + */ + function augmentStackTraceWithInitialElement(stackInfo, url, lineNo, message) { + var initial = { + url: url, + line: lineNo + }; + + if (initial.url && initial.line) { + stackInfo.incomplete = false; - if (evaluatedHeaders) { - fetchOptions.headers = evaluatedHeaders; + if (!initial.func) { + initial.func = UNKNOWN_FUNCTION; } - return _window$1.fetch(url, fetchOptions).then(function (response) { - if (response.ok) { - opts.onSuccess && opts.onSuccess(); - } else { - var error = new Error('Sentry error code: ' + response.status); // It's called request only to keep compatibility with XHR interface - // and not add more redundant checks in setBackoffState method - - error.request = response; - opts.onError && opts.onError(error); + if (stackInfo.stack.length > 0) { + if (stackInfo.stack[0].url === initial.url) { + if (stackInfo.stack[0].line === initial.line) { + return false; // already in stack trace + } else if ( + !stackInfo.stack[0].line && + stackInfo.stack[0].func === initial.func + ) { + stackInfo.stack[0].line = initial.line; + return false; + } } - })['catch'](function () { - opts.onError && opts.onError(new Error('Sentry error code: network unavailable')); - }); + } + + stackInfo.stack.unshift(initial); + stackInfo.partial = true; + return true; + } else { + stackInfo.incomplete = true; } - var request = _window$1.XMLHttpRequest && new _window$1.XMLHttpRequest(); - if (!request) return; // if browser doesn't support CORS (e.g. IE7), we are out of luck + return false; + } - var hasCORS = 'withCredentials' in request || typeof XDomainRequest !== 'undefined'; - if (!hasCORS) return; + /** + * Computes stack trace information by walking the arguments.caller + * chain at the time the exception occurred. This will cause earlier + * frames to be missed but is the only way to get any stack trace in + * Safari and IE. The top frame is restored by + * {@link augmentStackTraceWithInitialElement}. + * @param {Error} ex + * @return {?Object.} Stack trace information. + */ + function computeStackTraceByWalkingCallerChain(ex, depth) { + var functionName = /function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i, + stack = [], + funcs = {}, + recursion = false, + parts, + item, + source; + + for ( + var curr = computeStackTraceByWalkingCallerChain.caller; + curr && !recursion; + curr = curr.caller + ) { + if (curr === computeStackTrace || curr === TraceKit.report) { + // console.log('skipping internal function'); + continue; + } - if ('withCredentials' in request) { - request.onreadystatechange = function () { - if (request.readyState !== 4) { - return; - } else if (request.status === 200) { - opts.onSuccess && opts.onSuccess(); - } else if (opts.onError) { - var err = new Error('Sentry error code: ' + request.status); - err.request = request; - opts.onError(err); - } + item = { + url: null, + func: UNKNOWN_FUNCTION, + line: null, + column: null }; - } else { - request = new XDomainRequest(); // xdomainrequest cannot go http -> https (or vice versa), - // so always use protocol relative - url = url.replace(/^https?:/, ''); // onreadystatechange not supported by XDomainRequest + if (curr.name) { + item.func = curr.name; + } else if ((parts = functionName.exec(curr.toString()))) { + item.func = parts[1]; + } - if (opts.onSuccess) { - request.onload = opts.onSuccess; + if (typeof item.func === 'undefined') { + try { + item.func = parts.input.substring(0, parts.input.indexOf('{')); + } catch (e) {} } - if (opts.onError) { - request.onerror = function () { - var err = new Error('Sentry error code: XDomainRequest'); - err.request = request; - opts.onError(err); - }; + if (funcs['' + curr]) { + recursion = true; + } else { + funcs['' + curr] = true; } - } - request.open('POST', url); + stack.push(item); + } - if (evaluatedHeaders) { - each(evaluatedHeaders, function (key, value) { - request.setRequestHeader(key, value); - }); + if (depth) { + // console.log('depth is ' + depth); + // console.log('stack is ' + stack.length); + stack.splice(0, depth); } - request.send(stringify_1(opts.data)); - }, - _evaluateHash: function _evaluateHash(hash) { - var evaluated = {}; + var result = { + name: ex.name, + message: ex.message, + url: getLocationHref(), + stack: stack + }; + augmentStackTraceWithInitialElement( + result, + ex.sourceURL || ex.fileName, + ex.line || ex.lineNumber, + ex.message || ex.description + ); + return result; + } - for (var key in hash) { - if (hash.hasOwnProperty(key)) { - var value = hash[key]; - evaluated[key] = typeof value === 'function' ? value() : value; + /** + * Computes a stack trace for an exception. + * @param {Error} ex + * @param {(string|number)=} depth + */ + function computeStackTrace(ex, depth) { + var stack = null; + depth = depth == null ? 0 : +depth; + + try { + stack = computeStackTraceFromStackProp(ex); + if (stack) { + return stack; + } + } catch (e) { + if (TraceKit.debug) { + throw e; } } - return evaluated; - }, - _logDebug: function _logDebug(level) { - if (this._originalConsoleMethods[level] && this.debug) { - // In IE<10 console methods do not have their own 'apply' method - Function.prototype.apply.call(this._originalConsoleMethods[level], this._originalConsole, [].slice.call(arguments, 1)); - } - }, - _mergeContext: function _mergeContext(key, context) { - if (isUndefined(context)) { - delete this._globalContext[key]; - } else { - this._globalContext[key] = objectMerge(this._globalContext[key] || {}, context); + try { + stack = computeStackTraceByWalkingCallerChain(ex, depth + 1); + if (stack) { + return stack; + } + } catch (e) { + if (TraceKit.debug) { + throw e; + } } + return { + name: ex.name, + message: ex.message, + url: getLocationHref() + }; } -}; // Deprecations -Raven$1.prototype.setUser = Raven$1.prototype.setUserContext; -Raven$1.prototype.setReleaseContext = Raven$1.prototype.setRelease; -var raven = Raven$1; + computeStackTrace.augmentStackTraceWithInitialElement = augmentStackTraceWithInitialElement; + computeStackTrace.computeStackTraceFromStackProp = computeStackTraceFromStackProp; -/** - * Enforces a single instance of the Raven client, and the - * main entry point for Raven. If you are a consumer of the - * Raven library, you SHOULD load this file (vs raven.js). - **/ -// This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) + return computeStackTrace; +})(); -var _window = typeof window !== 'undefined' ? window : typeof commonjsGlobal !== 'undefined' ? commonjsGlobal : typeof self !== 'undefined' ? self : {}; +module.exports = TraceKit; -var _Raven = _window.Raven; -var Raven = new raven(); +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"7":7}],9:[function(_dereq_,module,exports){ /* - * Allow multiple versions of Raven to be installed. - * Strip Raven from the global context and returns the instance. - * - * @return {Raven} - */ + json-stringify-safe + Like JSON.stringify, but doesn't throw on circular references. -Raven.noConflict = function () { - _window.Raven = _Raven; - return Raven; -}; + Originally forked from https://github.com/isaacs/json-stringify-safe + version 5.0.1 on 3/8/2017 and modified to handle Errors serialization + and IE8 compatibility. Tests for this are in test/vendor. -Raven.afterLoad(); -var singleton = Raven; + ISC license: https://github.com/isaacs/json-stringify-safe/blob/master/LICENSE +*/ -/** - * Ember.js plugin - * - * Patches event handler callbacks and ajax callbacks. - */ -function emberPlugin(Raven, Ember) { - Ember = Ember || window.Ember; // quit if Ember isn't on the page +exports = module.exports = stringify; +exports.getSerialize = serializer; - if (!Ember) return; - var _oldOnError = Ember.onerror; +function indexOf(haystack, needle) { + for (var i = 0; i < haystack.length; ++i) { + if (haystack[i] === needle) return i; + } + return -1; +} - Ember.onerror = function EmberOnError(error) { - Raven.captureException(error); +function stringify(obj, replacer, spaces, cycleReplacer) { + return JSON.stringify(obj, serializer(replacer, cycleReplacer), spaces); +} - if (typeof _oldOnError === 'function') { - _oldOnError.call(this, error); - } +// https://github.com/ftlabs/js-abbreviate/blob/fa709e5f139e7770a71827b1893f22418097fbda/index.js#L95-L106 +function stringifyError(value) { + var err = { + // These properties are implemented as magical getters and don't show up in for in + stack: value.stack, + message: value.message, + name: value.name }; - Ember.RSVP.on('error', function (reason) { - if (reason instanceof Error) { - Raven.captureException(reason, { - extra: { - context: 'Unhandled Promise error detected' - } - }); - } else { - Raven.captureMessage('Unhandled Promise error detected', { - extra: { - reason: reason - } - }); + for (var i in value) { + if (Object.prototype.hasOwnProperty.call(value, i)) { + err[i] = value[i]; } - }); + } + + return err; } -var ember = emberPlugin; +function serializer(replacer, cycleReplacer) { + var stack = []; + var keys = []; -/*global define*/ + if (cycleReplacer == null) { + cycleReplacer = function(key, value) { + if (stack[0] === value) { + return '[Circular ~]'; + } + return '[Circular ~.' + keys.slice(0, indexOf(stack, value)).join('.') + ']'; + }; + } -/** - * require.js plugin + return function(key, value) { + if (stack.length > 0) { + var thisPos = indexOf(stack, this); + ~thisPos ? stack.splice(thisPos + 1) : stack.push(this); + ~thisPos ? keys.splice(thisPos, Infinity, key) : keys.push(key); + + if (~indexOf(stack, value)) { + value = cycleReplacer.call(this, key, value); + } + } else { + stack.push(value); + } + + return replacer == null + ? value instanceof Error ? stringifyError(value) : value + : replacer.call(this, key, value); + }; +} + +},{}],10:[function(_dereq_,module,exports){ +/* + * JavaScript MD5 + * https://github.com/blueimp/JavaScript-MD5 * - * Automatically wrap define/require callbacks. (Experimental) + * Copyright 2011, Sebastian Tschan + * https://blueimp.net + * + * Licensed under the MIT license: + * https://opensource.org/licenses/MIT + * + * Based on + * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message + * Digest Algorithm, as defined in RFC 1321. + * Version 2.2 Copyright (C) Paul Johnston 1999 - 2009 + * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet + * Distributed under the BSD License + * See http://pajhome.org.uk/crypt/md5 for more info. */ -function requirePlugin(Raven) { - if (typeof undefined === 'function' && undefined.amd) { - window.define = Raven.wrap({ - deep: false - }, undefined); - window.require = Raven.wrap({ - deep: false - }, commonjsRequire); +/* +* Add integers, wrapping at 2^32. This uses 16-bit operations internally +* to work around bugs in some JS interpreters. +*/ +function safeAdd(x, y) { + var lsw = (x & 0xffff) + (y & 0xffff); + var msw = (x >> 16) + (y >> 16) + (lsw >> 16); + return (msw << 16) | (lsw & 0xffff); +} + +/* +* Bitwise rotate a 32-bit number to the left. +*/ +function bitRotateLeft(num, cnt) { + return (num << cnt) | (num >>> (32 - cnt)); +} + +/* +* These functions implement the four basic operations the algorithm uses. +*/ +function md5cmn(q, a, b, x, s, t) { + return safeAdd(bitRotateLeft(safeAdd(safeAdd(a, q), safeAdd(x, t)), s), b); +} +function md5ff(a, b, c, d, x, s, t) { + return md5cmn((b & c) | (~b & d), a, b, x, s, t); +} +function md5gg(a, b, c, d, x, s, t) { + return md5cmn((b & d) | (c & ~d), a, b, x, s, t); +} +function md5hh(a, b, c, d, x, s, t) { + return md5cmn(b ^ c ^ d, a, b, x, s, t); +} +function md5ii(a, b, c, d, x, s, t) { + return md5cmn(c ^ (b | ~d), a, b, x, s, t); +} + +/* +* Calculate the MD5 of an array of little-endian words, and a bit length. +*/ +function binlMD5(x, len) { + /* append padding */ + x[len >> 5] |= 0x80 << (len % 32); + x[(((len + 64) >>> 9) << 4) + 14] = len; + + var i; + var olda; + var oldb; + var oldc; + var oldd; + var a = 1732584193; + var b = -271733879; + var c = -1732584194; + var d = 271733878; + + for (i = 0; i < x.length; i += 16) { + olda = a; + oldb = b; + oldc = c; + oldd = d; + + a = md5ff(a, b, c, d, x[i], 7, -680876936); + d = md5ff(d, a, b, c, x[i + 1], 12, -389564586); + c = md5ff(c, d, a, b, x[i + 2], 17, 606105819); + b = md5ff(b, c, d, a, x[i + 3], 22, -1044525330); + a = md5ff(a, b, c, d, x[i + 4], 7, -176418897); + d = md5ff(d, a, b, c, x[i + 5], 12, 1200080426); + c = md5ff(c, d, a, b, x[i + 6], 17, -1473231341); + b = md5ff(b, c, d, a, x[i + 7], 22, -45705983); + a = md5ff(a, b, c, d, x[i + 8], 7, 1770035416); + d = md5ff(d, a, b, c, x[i + 9], 12, -1958414417); + c = md5ff(c, d, a, b, x[i + 10], 17, -42063); + b = md5ff(b, c, d, a, x[i + 11], 22, -1990404162); + a = md5ff(a, b, c, d, x[i + 12], 7, 1804603682); + d = md5ff(d, a, b, c, x[i + 13], 12, -40341101); + c = md5ff(c, d, a, b, x[i + 14], 17, -1502002290); + b = md5ff(b, c, d, a, x[i + 15], 22, 1236535329); + + a = md5gg(a, b, c, d, x[i + 1], 5, -165796510); + d = md5gg(d, a, b, c, x[i + 6], 9, -1069501632); + c = md5gg(c, d, a, b, x[i + 11], 14, 643717713); + b = md5gg(b, c, d, a, x[i], 20, -373897302); + a = md5gg(a, b, c, d, x[i + 5], 5, -701558691); + d = md5gg(d, a, b, c, x[i + 10], 9, 38016083); + c = md5gg(c, d, a, b, x[i + 15], 14, -660478335); + b = md5gg(b, c, d, a, x[i + 4], 20, -405537848); + a = md5gg(a, b, c, d, x[i + 9], 5, 568446438); + d = md5gg(d, a, b, c, x[i + 14], 9, -1019803690); + c = md5gg(c, d, a, b, x[i + 3], 14, -187363961); + b = md5gg(b, c, d, a, x[i + 8], 20, 1163531501); + a = md5gg(a, b, c, d, x[i + 13], 5, -1444681467); + d = md5gg(d, a, b, c, x[i + 2], 9, -51403784); + c = md5gg(c, d, a, b, x[i + 7], 14, 1735328473); + b = md5gg(b, c, d, a, x[i + 12], 20, -1926607734); + + a = md5hh(a, b, c, d, x[i + 5], 4, -378558); + d = md5hh(d, a, b, c, x[i + 8], 11, -2022574463); + c = md5hh(c, d, a, b, x[i + 11], 16, 1839030562); + b = md5hh(b, c, d, a, x[i + 14], 23, -35309556); + a = md5hh(a, b, c, d, x[i + 1], 4, -1530992060); + d = md5hh(d, a, b, c, x[i + 4], 11, 1272893353); + c = md5hh(c, d, a, b, x[i + 7], 16, -155497632); + b = md5hh(b, c, d, a, x[i + 10], 23, -1094730640); + a = md5hh(a, b, c, d, x[i + 13], 4, 681279174); + d = md5hh(d, a, b, c, x[i], 11, -358537222); + c = md5hh(c, d, a, b, x[i + 3], 16, -722521979); + b = md5hh(b, c, d, a, x[i + 6], 23, 76029189); + a = md5hh(a, b, c, d, x[i + 9], 4, -640364487); + d = md5hh(d, a, b, c, x[i + 12], 11, -421815835); + c = md5hh(c, d, a, b, x[i + 15], 16, 530742520); + b = md5hh(b, c, d, a, x[i + 2], 23, -995338651); + + a = md5ii(a, b, c, d, x[i], 6, -198630844); + d = md5ii(d, a, b, c, x[i + 7], 10, 1126891415); + c = md5ii(c, d, a, b, x[i + 14], 15, -1416354905); + b = md5ii(b, c, d, a, x[i + 5], 21, -57434055); + a = md5ii(a, b, c, d, x[i + 12], 6, 1700485571); + d = md5ii(d, a, b, c, x[i + 3], 10, -1894986606); + c = md5ii(c, d, a, b, x[i + 10], 15, -1051523); + b = md5ii(b, c, d, a, x[i + 1], 21, -2054922799); + a = md5ii(a, b, c, d, x[i + 8], 6, 1873313359); + d = md5ii(d, a, b, c, x[i + 15], 10, -30611744); + c = md5ii(c, d, a, b, x[i + 6], 15, -1560198380); + b = md5ii(b, c, d, a, x[i + 13], 21, 1309151649); + a = md5ii(a, b, c, d, x[i + 4], 6, -145523070); + d = md5ii(d, a, b, c, x[i + 11], 10, -1120210379); + c = md5ii(c, d, a, b, x[i + 2], 15, 718787259); + b = md5ii(b, c, d, a, x[i + 9], 21, -343485551); + + a = safeAdd(a, olda); + b = safeAdd(b, oldb); + c = safeAdd(c, oldc); + d = safeAdd(d, oldd); + } + return [a, b, c, d]; +} + +/* +* Convert an array of little-endian words to a string +*/ +function binl2rstr(input) { + var i; + var output = ''; + var length32 = input.length * 32; + for (i = 0; i < length32; i += 8) { + output += String.fromCharCode((input[i >> 5] >>> (i % 32)) & 0xff); + } + return output; +} + +/* +* Convert a raw string to an array of little-endian words +* Characters >255 have their high-byte silently ignored. +*/ +function rstr2binl(input) { + var i; + var output = []; + output[(input.length >> 2) - 1] = undefined; + for (i = 0; i < output.length; i += 1) { + output[i] = 0; + } + var length8 = input.length * 8; + for (i = 0; i < length8; i += 8) { + output[i >> 5] |= (input.charCodeAt(i / 8) & 0xff) << (i % 32); + } + return output; +} + +/* +* Calculate the MD5 of a raw string +*/ +function rstrMD5(s) { + return binl2rstr(binlMD5(rstr2binl(s), s.length * 8)); +} + +/* +* Calculate the HMAC-MD5, of a key and some data (raw strings) +*/ +function rstrHMACMD5(key, data) { + var i; + var bkey = rstr2binl(key); + var ipad = []; + var opad = []; + var hash; + ipad[15] = opad[15] = undefined; + if (bkey.length > 16) { + bkey = binlMD5(bkey, key.length * 8); + } + for (i = 0; i < 16; i += 1) { + ipad[i] = bkey[i] ^ 0x36363636; + opad[i] = bkey[i] ^ 0x5c5c5c5c; + } + hash = binlMD5(ipad.concat(rstr2binl(data)), 512 + data.length * 8); + return binl2rstr(binlMD5(opad.concat(hash), 512 + 128)); +} + +/* +* Convert a raw string to a hex string +*/ +function rstr2hex(input) { + var hexTab = '0123456789abcdef'; + var output = ''; + var x; + var i; + for (i = 0; i < input.length; i += 1) { + x = input.charCodeAt(i); + output += hexTab.charAt((x >>> 4) & 0x0f) + hexTab.charAt(x & 0x0f); } + return output; } -var require_1 = requirePlugin; +/* +* Encode a string as utf-8 +*/ +function str2rstrUTF8(input) { + return unescape(encodeURIComponent(input)); +} -/* This file was generated by './scripts/generate-plugin-combinations.js'! */ +/* +* Take string arguments and return either raw or hex encoded strings +*/ +function rawMD5(s) { + return rstrMD5(str2rstrUTF8(s)); +} +function hexMD5(s) { + return rstr2hex(rawMD5(s)); +} +function rawHMACMD5(k, d) { + return rstrHMACMD5(str2rstrUTF8(k), str2rstrUTF8(d)); +} +function hexHMACMD5(k, d) { + return rstr2hex(rawHMACMD5(k, d)); +} -singleton.addPlugin(ember).addPlugin(require_1); -var ember_require = {}; +function md5(string, key, raw) { + if (!key) { + if (!raw) { + return hexMD5(string); + } + return rawMD5(string); + } + if (!raw) { + return hexHMACMD5(key, string); + } + return rawHMACMD5(key, string); +} -return ember_require; +module.exports = md5; -}))); +},{}]},{},[6,1,2])(6) +}); \ No newline at end of file diff --git a/dist/ember,require/raven.min.js b/dist/ember,require/raven.min.js index df697ad84ed4..7b2b8836447d 100644 --- a/dist/ember,require/raven.min.js +++ b/dist/ember,require/raven.min.js @@ -1,3 +1,4 @@ -/*! Raven.js 3.22.2 (1b6187b) | github.com/getsentry/raven-js */ -!function(a,b){"object"==typeof exports&&"undefined"!=typeof module?module.exports=b():"function"==typeof define&&define.amd?define(b):a.Raven=b()}(this,function(){"use strict";function a(a,b){return b={exports:{}},a(b,b.exports),b.exports}function b(a){return(b="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(a){return typeof a}:function(a){return a&&"function"==typeof Symbol&&a.constructor===Symbol&&a!==Symbol.prototype?"symbol":typeof a})(a)}function c(a){return"object"===b(a)&&null!==a}function d(a){switch({}.toString.call(a)){case"[object Error]":return!0;case"[object Exception]":return!0;case"[object DOMException]":return!0;default:return a instanceof Error}}function e(a){return l()&&"[object ErrorEvent]"==={}.toString.call(a)}function f(a){return void 0===a}function g(a){return"function"==typeof a}function h(a){return"[object Object]"===Object.prototype.toString.call(a)}function i(a){return"[object String]"===Object.prototype.toString.call(a)}function j(a){return"[object Array]"===Object.prototype.toString.call(a)}function k(a){if(!h(a))return!1;for(var b in a)if(a.hasOwnProperty(b))return!1;return!0}function l(){try{return new ErrorEvent(""),!0}catch(a){return!1}}function m(){if(!("fetch"in O))return!1;try{return new Headers,new Request(""),new Response,!0}catch(a){return!1}}function n(a){function b(b,c){var d=a(b)||b;return c?c(d)||d:d}return b}function o(a,b){var c,d;if(f(a.length))for(c in a)s(a,c)&&b.call(null,c,a[c]);else if(d=a.length)for(c=0;c ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function y(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&i(b))for(c=b.split(/\s+/),f=0;f=0;--b)l[b]===a&&l.splice(b,1)}function c(){g(),l=[]}function d(a,b){var c=null;if(!b||Q.collectWindowErrors){for(var d in l)if(l.hasOwnProperty(d))try{l[d].apply(null,[a].concat(S.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function e(a,b,c,e,f){var g=null,i=P.isErrorEvent(f)?f.error:f,k=P.isErrorEvent(a)?a.message:a;if(o)Q.computeStackTrace.augmentStackTraceWithInitialElement(o,b,c,k),h();else if(i&&P.isError(i))g=Q.computeStackTrace(i),d(g,!0);else{var l,m={url:b,line:c,column:e},n=void 0;if("[object String]"==={}.toString.call(k)){var l=k.match(U);l&&(n=l[1],k=l[2])}m.func=T,g={name:n,message:k,url:F(),stack:[m]},d(g,!0)}return!!j&&j.apply(this,arguments)}function f(){k||(j=R.onerror,R.onerror=e,k=!0)}function g(){k&&(R.onerror=j,k=!1,j=void 0)}function h(){var a=o,b=m;m=null,o=null,n=null,d.apply(null,[a,!1].concat(b))}function i(a,b){var c=S.call(arguments,1);if(o){if(n===a)return;h()}var d=Q.computeStackTrace(a);if(o=d,n=a,m=c,setTimeout(function(){n===a&&h()},d.incomplete?2e3:0),b!==!1)throw a}var j,k,l=[],m=null,n=null,o=null;return i.subscribe=a,i.unsubscribe=b,i.uninstall=c,i}(),Q.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,d,e=/^\s*at (.*?) ?\(((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,f=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|\[native).*?|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,g=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,h=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,i=/\((\S*)(?::(\d+))(?::(\d+))\)/,j=a.stack.split("\n"),k=[],l=(/^(.*) is undefined$/.exec(a.message),0),m=j.length;l eval")>-1;o&&(b=h.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==l||c[5]||"undefined"==typeof a.columnNumber||(k[0].column=a.columnNumber+1),d={url:c[3],func:c[1]||T,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}!d.func&&d.line&&(d.func=T),k.push(d)}return k.length?{name:a.name,message:a.message,url:F(),stack:k}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=T),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,e){for(var f,g,h=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,i=[],j={},k=!1,l=c.caller;l&&!k;l=l.caller)if(l!==d&&l!==Q.report){if(g={url:null,func:T,line:null,column:null},l.name?g.func=l.name:(f=h.exec(l.toString()))&&(g.func=f[1]),"undefined"==typeof g.func)try{g.func=f.input.substring(0,f.input.indexOf("{"))}catch(m){}j[""+l]?k=!0:j[""+l]=!0,i.push(g)}e&&i.splice(0,e);var n={name:a.name,message:a.message,url:F(),stack:i};return b(n,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),n}function d(b,d){var e=null;d=null==d?0:+d;try{if(e=a(b))return e}catch(f){if(Q.debug)throw f}try{if(e=c(b,d+1))return e}catch(f){if(Q.debug)throw f}return{name:b.name,message:b.message,url:F()}}return d.augmentStackTraceWithInitialElement=b,d.computeStackTraceFromStackProp=a,d}();var V=Q,W=a(function(a,b){function c(a,b){for(var c=0;c0){var i=c(d,this);~i?d.splice(i+1):d.push(this),~i?f.splice(i,1/0,g):f.push(g),~c(d,h)&&(h=b.call(this,g,h))}else d.push(h);return null==a?h instanceof Error?e(h):h:a.call(this,g,h)}}b=a.exports=d,b.getSerialize=f});G.prototype=new Error,G.prototype.constructor=G;var X=G,Y=function(a,b,c){var d=a[b],e=a;if(b in a){var f="warn"===b?"warning":b;a[b]=function(){var a=[].slice.call(arguments),g=P.safeJoin(a," "),h={level:f,logger:"console",extra:{arguments:a}};"assert"===b?a[0]===!1&&(g="Assertion failed: "+(P.safeJoin(a.slice(1)," ")||"console.assert"),h.extra.arguments=a.slice(1),c&&c(g,h)):c&&c(g,h),d&&Function.prototype.apply.call(d,e,a)}}},Z={wrapMethod:Y},$=P.isError,_=P.isObject,aa=P.isErrorEvent,ba=P.isUndefined,ca=P.isFunction,da=P.isString,ea=P.isArray,fa=P.isEmptyObject,ga=P.each,ha=P.objectMerge,ia=P.truncate,ja=P.objectFrozen,ka=P.hasKey,la=P.joinRegExp,ma=P.urlencode,na=P.uuid4,oa=P.htmlTreeAsString,pa=P.isSameException,qa=P.isSameStacktrace,ra=P.parseUrl,sa=P.fill,ta=P.supportsFetch,ua=Z.wrapMethod,va="source protocol user pass host port path".split(" "),wa=/^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/,xa="undefined"!=typeof window?window:"undefined"!=typeof M?M:"undefined"!=typeof self?self:{},ya=xa.document,za=xa.navigator;J.prototype={VERSION:"3.22.2",debug:!1,TraceKit:V,config:function(a,b){var c=this;if(c.i)return this.C("error","Error: Raven has already been configured"),c;if(!a)return c;var d=c.m;b&&ga(b,function(a,b){"tags"===a||"extra"===a||"user"===a?c.l[a]=b:d[a]=b}),c.setDSN(a),d.ignoreErrors.push(/^Script error\.?$/),d.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/),d.ignoreErrors=la(d.ignoreErrors),d.ignoreUrls=!!d.ignoreUrls.length&&la(d.ignoreUrls),d.whitelistUrls=!!d.whitelistUrls.length&&la(d.whitelistUrls),d.includePaths=la(d.includePaths),d.maxBreadcrumbs=Math.max(0,Math.min(d.maxBreadcrumbs||100,100));var e={xhr:!0,console:!0,dom:!0,location:!0,sentry:!0},f=d.autoBreadcrumbs;"[object Object]"==={}.toString.call(f)?f=ha(e,f):f!==!1&&(f=e),d.autoBreadcrumbs=f;var g={tryCatch:!0},h=d.instrument;return"[object Object]"==={}.toString.call(h)?h=ha(g,h):h!==!1&&(h=g),d.instrument=h,V.collectWindowErrors=!!d.collectWindowErrors,c},install:function(){var a=this;return a.isSetup()&&!a.p&&(V.report.subscribe(function(){a.D.apply(a,arguments)}),a.E(),a.m.instrument&&a.m.instrument.tryCatch&&a.F(),a.m.autoBreadcrumbs&&a.G(),a.H(),a.p=!0),Error.stackTraceLimit=a.m.stackTraceLimit,this},setDSN:function(a){var b=this,c=b.I(a),d=c.path.lastIndexOf("/"),e=c.path.substr(1,d);b.J=a,b.j=c.user,b.K=c.pass&&c.pass.substr(1),b.k=c.path.substr(d+1),b.i=b.L(c),b.M=b.i+"/"+e+"api/"+b.k+"/store/",this.A()},context:function(a,b,c){return ca(a)&&(c=b||[],b=a,a=void 0),this.wrap(a,b).apply(this,c)},wrap:function(a,b,c){function d(){var d=[],f=arguments.length,g=!a||a&&a.deep!==!1;for(c&&ca(c)&&c.apply(this,arguments);f--;)d[f]=g?e.wrap(a,arguments[f]):arguments[f];try{return b.apply(this,d)}catch(h){throw e.N(),e.captureException(h,a),h}}var e=this;if(ba(b)&&!ca(a))return a;if(ca(a)&&(b=a,a=void 0),!ca(b))return b;try{if(b.a)return b;if(b.O)return b.O}catch(f){return b}for(var g in b)ka(b,g)&&(d[g]=b[g]);return d.prototype=b.prototype,b.O=d,d.a=!0,d.b=b,d},uninstall:function(){return V.report.uninstall(),this.P(),this.Q(),this.R(),Error.stackTraceLimit=this.q,this.p=!1,this},captureException:function(a,b){b=ha({trimHeadFrames:0},b?b:{});var c=!$(a),d=!aa(a),e=aa(a)&&!a.error;if(c&&d||e)return this.captureMessage(a,ha(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}));aa(a)&&(a=a.error),this.f=a;try{var f=V.computeStackTrace(a);this.S(f,b)}catch(g){if(a!==g)throw g}return this},captureMessage:function(a,b){if(!this.m.ignoreErrors.test||!this.m.ignoreErrors.test(a)){b=b||{};var c,d=ha({message:a+""},b);try{throw new Error(a)}catch(e){c=e}c.name=null;var f=V.computeStackTrace(c),g=ea(f.stack)&&f.stack[1],h=g&&g.url||"";if((!this.m.ignoreUrls.test||!this.m.ignoreUrls.test(h))&&(!this.m.whitelistUrls.test||this.m.whitelistUrls.test(h))){if(this.m.stacktrace||b&&b.stacktrace){b=ha({fingerprint:a,trimHeadFrames:(b.trimHeadFrames||0)+1},b);var i=this.T(f,b);d.stacktrace={frames:i.reverse()}}return this.U(d),this}}},captureBreadcrumb:function(a){var b=ha({timestamp:H()/1e3},a);if(ca(this.m.breadcrumbCallback)){var c=this.m.breadcrumbCallback(b);if(_(c)&&!fa(c))b=c;else if(c===!1)return this}return this.w.push(b),this.w.length>this.m.maxBreadcrumbs&&this.w.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.t.push([a,b]),this.p&&this.H(),this},setUserContext:function(a){return this.l.user=a,this},setExtraContext:function(a){return this.V("extra",a),this},setTagsContext:function(a){return this.V("tags",a),this},clearContext:function(){return this.l={},this},getContext:function(){return JSON.parse(W(this.l))},setEnvironment:function(a){return this.m.environment=a,this},setRelease:function(a){return this.m.release=a,this},setDataCallback:function(a){var b=this.m.dataCallback;return this.m.dataCallback=I(b,a),this},setBreadcrumbCallback:function(a){var b=this.m.breadcrumbCallback;return this.m.breadcrumbCallback=I(b,a),this},setShouldSendCallback:function(a){var b=this.m.shouldSendCallback;return this.m.shouldSendCallback=I(b,a),this},setTransport:function(a){return this.m.transport=a,this},lastException:function(){return this.f},lastEventId:function(){return this.h},isSetup:function(){return!!this.c&&(!!this.i||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.C("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=xa.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(ya){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new X("Missing eventId");var c=a.dsn||this.J;if(!c)throw new X("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.l.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.L(this.I(c)),h=ya.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(ya.head||ya.body).appendChild(h)}},N:function(){var a=this;this.o+=1,setTimeout(function(){a.o-=1})},W:function(a,b){var c,d;if(this.d){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),ya.createEvent?(c=ya.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=ya.createEventObject(),c.eventType=a);for(d in b)ka(b,d)&&(c[d]=b[d]);if(ya.createEvent)ya.dispatchEvent(c);else try{ya.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},X:function(a){var b=this;return function(c){if(b.Y=null,b.x!==c){b.x=c;var d;try{d=oa(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},Z:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.Y;g||a.X("input")(c),clearTimeout(g),a.Y=setTimeout(function(){a.Y=null},b)}}},$:function(a,b){var c=ra(this.y.href),d=ra(b),e=ra(a);this.z=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},E:function(){var a=this;a._=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.a?a._.apply(this.b,arguments):a._.apply(this,arguments)}},P:function(){this._&&(Function.prototype.toString=this._)},F:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.$(b.z,c+""),a.apply(this,arguments)}};sa(history,"pushState",j,d),sa(history,"replaceState",j,d)}if(c.console&&"console"in xa&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};ga(["debug","info","warn","error","log"],function(a,b){ua(console,b,k)})}},Q:function(){for(var a;this.v.length;){a=this.v.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},R:function(){for(var a in this.s)this.r[a]=this.s[a]},H:function(){var a=this;ga(this.t,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},I:function(a){var b=wa.exec(a),c={},d=7;try{for(;d--;)c[va[d]]=b[d]||""}catch(e){throw new X("Invalid DSN: "+a)}if(c.pass&&!this.m.allowSecretKey)throw new X("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},L:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},D:function(){this.o||this.S.apply(this,arguments)},S:function(a,b){var c=this.T(a,b);this.W("handle",{stackInfo:a,options:b}),this.ba(a.name,a.message,a.url,a.lineno,c,b)},T:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(ga(a.stack,function(b,e){var f=c.ca(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.w,0)}),this.l.user&&(a.user=this.l.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||fa(a[b]))&&delete a[b]}),ca(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!fa(a)&&(!ca(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.ia()?void this.C("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random()this.k.maxBreadcrumbs&&this.u.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.r.push([a,b]),this.n&&this.F(),this},setUserContext:function(a){return this.j.user=a,this},setExtraContext:function(a){return this.Z("extra",a),this},setTagsContext:function(a){return this.Z("tags",a),this},clearContext:function(){return this.j={},this},getContext:function(){return JSON.parse(h(this.j))},setEnvironment:function(a){return this.k.environment=a,this},setRelease:function(a){return this.k.release=a,this},setDataCallback:function(a){var b=this.k.dataCallback;return this.k.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.k.breadcrumbCallback;return this.k.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.k.shouldSendCallback;return this.k.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.k.transport=a,this},lastException:function(){return this.d},lastEventId:function(){return this.f},isSetup:function(){return!!this.a&&(!!this.g||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.z("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=P.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(Q){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.H;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.j.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.J(this.G(c)),h=Q.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(Q.head||Q.body).appendChild(h)}},L:function(){var a=this;this.m+=1,setTimeout(function(){a.m-=1})},$:function(a,b){var c,d;if(this.b){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),Q.createEvent?(c=Q.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=Q.createEventObject(),c.eventType=a);for(d in b)y(b,d)&&(c[d]=b[d]);if(Q.createEvent)Q.dispatchEvent(c);else try{Q.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},_:function(a){var b=this;return function(c){if(b.aa=null,b.v!==c){b.v=c;var d;try{d=C(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ba:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.aa;g||a._("input")(c),clearTimeout(g),a.aa=setTimeout(function(){a.aa=null},b)}}},ca:function(a,b){var c=F(this.w.href),d=F(b),e=F(a);this.x=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},C:function(){var a=this;a.da=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.M?a.da.apply(this.O,arguments):a.da.apply(this,arguments)}},Q:function(){this.da&&(Function.prototype.toString=this.da)},D:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.ca(b.x,c+""),a.apply(this,arguments)}};G(history,"pushState",j,d),G(history,"replaceState",j,d)}if(c.console&&"console"in P&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};u(["debug","info","warn","error","log"],function(a,b){M(console,b,k)})}},R:function(){for(var a;this.t.length;){a=this.t.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},S:function(){for(var a in this.q)this.p[a]=this.q[a]},F:function(){var a=this;u(this.r,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},G:function(a){var b=O.exec(a),c={},d=7;try{for(;d--;)c[N[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.k.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},J:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},A:function(){this.m||this.V.apply(this,arguments)},V:function(a,b){var c=this.X(a,b);this.$("handle",{stackInfo:a,options:b}),this.fa(a.name,a.message,a.url,a.lineno,c,b)},X:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(u(a.stack,function(b,e){var f=c.ga(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.u,0)}),this.j.user&&(a.user=this.j.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),a=this.pa(a),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||t(a[b]))&&delete a[b]}),q(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!t(a)&&(!q(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.ma()?void this.z("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function B(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&j(b))for(c=b.split(/\s+/),f=0;fc?M(a,b-1):d}function N(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?T:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function O(a,b){function c(a){return k(a)?a.map(function(a){return c(a)}):i(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!k(b)||k(b)&&0===b.length)return a;var d,e=w(b),f="********";try{d=JSON.parse(P(a))}catch(g){return a}return c(d)}var P=a(9),Q="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},R=3,S=51200,T=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isUndefined:g,isFunction:h,isPlainObject:i,isString:j,isArray:k,isEmptyObject:l,supportsErrorEvent:m,supportsFetch:n,supportsReferrerPolicy:o,supportsPromiseRejectionEvent:p,wrappedCallback:q,each:r,objectMerge:s,truncate:u,objectFrozen:t,hasKey:v,joinRegExp:w,urlencode:x,uuid4:z,htmlTreeAsString:A,htmlElementAsString:B,isSameException:E,isSameStacktrace:F,parseUrl:y,fill:G,safeJoin:H,serializeException:M,serializeKeysForMessage:N,sanitize:O}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{9:9}],8:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}var e=a(7),f={collectWindowErrors:!0,debug:!1},g="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},h=[].slice,i="?",j=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;f.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function k(a,b){var c=null;if(!b||f.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(h.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,g,h){var l=null,m=e.isErrorEvent(h)?h.error:h,n=e.isErrorEvent(a)?a.message:a;if(v)f.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&e.isError(m))l=f.computeStackTrace(m),k(l,!0);else{var p,r={url:b,line:c,column:g},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(j);p&&(s=p[1],n=p[2])}r.func=i,l={name:s,message:n,url:d(),stack:[r]},k(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=g.onerror,g.onerror=l,r=!0)}function n(){r&&(g.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,k.apply(null,[a,!1].concat(b))}function p(a,b){var c=h.call(arguments,1);if(v){if(u===a)return;o()}var d=f.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),f.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,e,f=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,g=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,h=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,j=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,k=/\((\S*)(?::(\d+))(?::(\d+))\)/,l=a.stack.split("\n"),m=[],n=(/^(.*) is undefined$/.exec(a.message),0),o=l.length;n eval")>-1;q&&(b=j.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==n||c[5]||"undefined"==typeof a.columnNumber||(m[0].column=a.columnNumber+1),e={url:c[3],func:c[1]||i,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}!e.func&&e.line&&(e.func=i),m.push(e)}return m.length?{name:a.name,message:a.message,url:d(),stack:m}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=i),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,g){for(var h,j,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==e&&o!==f.report){if(j={url:null,func:i,line:null,column:null},o.name?j.func=o.name:(h=k.exec(o.toString()))&&(j.func=h[1]),"undefined"==typeof j.func)try{j.func=h.input.substring(0,h.input.indexOf("{"))}catch(p){}m[""+o]?n=!0:m[""+o]=!0,l.push(j)}g&&l.splice(0,g);var q={name:a.name,message:a.message,url:d(),stack:l};return b(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),q}function e(b,e){var g=null;e=null==e?0:+e;try{if(g=a(b))return g}catch(h){if(f.debug)throw h}try{if(g=c(b,e+1))return g}catch(h){if(f.debug)throw h}return{name:b.name,message:b.message,url:d()}}return e.augmentStackTraceWithInitialElement=b,e.computeStackTraceFromStackProp=a,e}(),b.exports=f}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{7:7}],9:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this); +~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}],10:[function(a,b,c){function d(a,b){var c=(65535&a)+(65535&b),d=(a>>16)+(b>>16)+(c>>16);return d<<16|65535&c}function e(a,b){return a<>>32-b}function f(a,b,c,f,g,h){return d(e(d(d(b,a),d(f,h)),g),c)}function g(a,b,c,d,e,g,h){return f(b&c|~b&d,a,b,e,g,h)}function h(a,b,c,d,e,g,h){return f(b&d|c&~d,a,b,e,g,h)}function i(a,b,c,d,e,g,h){return f(b^c^d,a,b,e,g,h)}function j(a,b,c,d,e,g,h){return f(c^(b|~d),a,b,e,g,h)}function k(a,b){a[b>>5]|=128<>>9<<4)+14]=b;var c,e,f,k,l,m=1732584193,n=-271733879,o=-1732584194,p=271733878;for(c=0;c>5]>>>b%32&255);return c}function m(a){var b,c=[];for(c[(a.length>>2)-1]=void 0,b=0;b>5]|=(255&a.charCodeAt(b/8))<16&&(e=k(e,8*a.length)),c=0;c<16;c+=1)f[c]=909522486^e[c],g[c]=1549556828^e[c];return d=k(f.concat(m(b)),512+8*b.length),l(k(g.concat(d),640))}function p(a){var b,c,d="0123456789abcdef",e="";for(c=0;c>>4&15)+d.charAt(15&b);return e}function q(a){return unescape(encodeURIComponent(a))}function r(a){return n(q(a))}function s(a){return p(r(a))}function t(a,b){return o(q(a),q(b))}function u(a,b){return p(t(a,b))}function v(a,b,c){return b?c?t(b,a):u(b,a):c?r(a):s(a)}b.exports=v},{}]},{},[6,1,2])(6)}); //# sourceMappingURL=raven.min.js.map \ No newline at end of file diff --git a/dist/ember,require/raven.min.js.map b/dist/ember,require/raven.min.js.map index d313c30d58aa..edc239db1128 100644 --- a/dist/ember,require/raven.min.js.map +++ b/dist/ember,require/raven.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["raven.js"],"names":["global","factory","exports","module","define","amd","Raven","this","createCommonjsModule","fn","_typeof","obj","Symbol","iterator","constructor","prototype","isObject$1","what","isError$1","value","toString","call","Error","isErrorEvent$1","supportsErrorEvent","isUndefined$1","isFunction$1","isPlainObject","Object","isString$1","isArray$1","isEmptyObject$1","_","hasOwnProperty","ErrorEvent","e","supportsFetch$1","_window$3","Headers","Request","Response","wrappedCallback","callback","dataCallback","data","original","normalizedData","each$1","i","j","length","hasKey$1","objectMerge$1","obj1","obj2","key","objectFrozen$1","isFrozen","truncate$1","str","max","substr","object","joinRegExp$1","patterns","pattern","sources","len","push","replace","source","RegExp","join","urlencode$1","o","pairs","encodeURIComponent","parseUrl$1","url","match","query","fragment","protocol","host","path","relative","uuid4$1","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","r","Math","random","htmlTreeAsString$1","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","reverse","className","classes","attr","tagName","toLowerCase","id","split","attrWhitelist","getAttribute","isOnlyOneTruthy","a","b","isBothUndefined","isSameException$1","ex1","ex2","values","type","stacktrace","isSameStacktrace$1","stack1","stack2","frames1","frames","frames2","filename","lineno","colno","fill$1","name","replacement","track","orig","__raven__","__orig__","safeJoin","input","delimiter","output","String","getLocationHref","document","location","href","RavenConfigError","message","now","Date","keepOriginalCallback","isFunction","Raven$1","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window$1","SENTRY_RELEASE","logger","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","_fetchDefaults","method","keepalive","referrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","console","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","_lastHref","_resetBackoff","emberPlugin","Ember","window","_oldOnError","onerror","error","captureException","RSVP","on","reason","extra","context","captureMessage","requirePlugin","commonjsGlobal","self","_sPO","setPrototypeOf","p","__proto__","Reflect","construct","Parent","args","Class","Constructor","apply","bind","utils","isObject","isError","isErrorEvent","isString","isArray","isEmptyObject","supportsFetch","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","TraceKit","debug","_window$2","_slice","slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","report","subscribe","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","stack","isWindowError","exception","concat","arguments","inner","traceKitWindowOnError","msg","lineNo","colNo","ex","lastExceptionStack","computeStackTrace","augmentStackTraceWithInitialElement","processLastException","groups","line","column","undefined","func","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","lastException","rethrow","setTimeout","incomplete","uninstall","computeStackTraceFromStackProp","submatch","parts","element","chrome","gecko","winjs","geckoEval","chromeEval","lines","exec","isNative","indexOf","isEval","columnNumber","stackInfo","initial","unshift","partial","computeStackTraceByWalkingCallerChain","depth","item","functionName","funcs","recursion","curr","caller","substring","result","sourceURL","fileName","lineNumber","description","tracekit","stringify_1","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","err","keys","thisPos","Infinity","getSerialize","configError","wrapMethod","level","originalConsoleLevel","originalConsole","sentryLevel","Function","console$1","wrapConsoleMethod","dsnKeys","dsnPattern","navigator","VERSION","config","dsn","options","_logDebug","globalOptions","setDSN","maxBreadcrumbs","min","autoBreadcrumbDefaults","xhr","dom","sentry","instrumentDefaults","tryCatch","install","isSetup","_handleOnErrorStackInfo","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","lastIndexOf","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","wrap","_before","wrapped","deep","_ignoreNextOnError","__raven_wrapper__","property","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","trimHeadFrames","isNotError","isNotErrorEvent","isErrorEventWithoutError","_handleStackInfo","test","initialCall","fileurl","fingerprint","_prepareFrames","_send","captureBreadcrumb","crumb","timestamp","breadcrumbCallback","shift","addPlugin","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","setDataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","N","W","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","X","evtName","_keypressTimeout","target","category","Z","debounceDuration","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","$","from","to","parsedLoc","parsedTo","parsedFrom","E","_originalFunctionToString","P","F","wrapTimeFn","t","Array","originalCallback","wrapEventTarget","proto","capture","secure","handleEvent","before","clickHandler","keypressHandler","_keypressEventHandler","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","G","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","onreadystatechange","origFetch","fetchInput","fetchData","then","response","addEventListener","attachEvent","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","Q","builtin","R","H","installer","I","m","allowSecretKey","L","port","D","S","_triggerEvent","_processException","T","frame","_normalizeFrame","in_app","ca","stackInfoUrl","normalized","function","ba","prefixedMessage","culprit","da","request","Referer","breadcrumbs","_trimBreadcrumbs","ea","urlProp","urlProps","fa","httpData","userAgent","User-Agent","referrer","A","_backoffDuration","_backoffStart","ia","ja","current","last","ka","_shouldBackoff","retry","get","getResponseHeader","parseInt","U","baseData","project","platform","_getHttpData","serverName","server_name","forEach","_sendProcessedPayload","ma","la","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","na","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","onload","open","setRequestHeader","send","oa","hash","evaluated","C","V","setUser","setReleaseContext","raven","_window","_Raven","noConflict","singleton","ember","require_1","ember_require"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file +{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","emberPlugin","Ember","_oldOnError","onerror","error","captureException","RSVP","on","reason","extra","context","captureMessage","addPlugin","6","2","requirePlugin","wrap","deep","3","RavenConfigError","message","name","prototype","constructor","4","utils","wrapMethod","console","level","callback","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","msg","safeJoin","data","logger","Function","apply","7","5","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","sanitizeKeys","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isError","isObject","isPlainObject","isErrorEvent","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","sanitize","wrapConsoleMethod","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","config","dsn","options","_logDebug","globalOptions","key","value","setDSN","push","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","toString","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","substr","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","func","undefined","_before","wrapped","_ignoreNextOnError","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","T","event","unhandledPromiseRejection","B","_promiseRejectionHandler","bind","addEventListener","P","removeEventListener","ex","trimHeadFrames","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","U","currentOptions","exKeys","Object","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","setDataCallback","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","L","setTimeout","$","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","_","evtName","_keypressTimeout","target","category","ba","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","ca","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","C","_originalFunctionToString","Q","D","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","type","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","E","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","R","builtin","S","F","installer","concat","G","str","m","exec","allowSecretKey","J","port","A","V","stackInfo","_triggerEvent","_processException","lineno","X","frame","_normalizeFrame","in_app","ga","stackInfoUrl","normalized","filename","line","colno","column","function","fa","prefixedMessage","exception","values","culprit","ha","request","Referer","breadcrumbs","_trimBreadcrumbs","ia","urlProp","urlProps","ja","httpData","userAgent","User-Agent","referrer","y","_backoffDuration","_backoffStart","ma","na","current","last","oa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Y","baseData","project","platform","_getHttpData","serverName","server_name","_sanitizeData","forEach","random","_sendProcessedPayload","pa","ra","qa","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","sa","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","open","setRequestHeader","send","ta","hash","evaluated","z","Z","setUser","setReleaseContext","10","8","9","RavenConstructor","_Raven","noConflict","Client","what","supportsErrorEvent","ErrorEvent","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","wrappedCallback","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","sanitizeMask","safeInput","o_O","getLocationHref","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","charAt","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","string","raw"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file diff --git a/dist/ember,vue/raven.js b/dist/ember,vue/raven.js index 80c431bf56aa..bf605775454b 100644 --- a/dist/ember,vue/raven.js +++ b/dist/ember,vue/raven.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.22.2 (1b6187b) | github.com/getsentry/raven-js */ +/*! Raven.js 3.24.2 (540f32b) | github.com/getsentry/raven-js */ /* * Includes TraceKit @@ -10,3208 +10,3978 @@ * */ -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : - typeof define === 'function' && define.amd ? define(factory) : - (global.Raven = factory()); -}(this, (function () { 'use strict'; - -var commonjsGlobal = typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; - +(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.Raven = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o' : 'anonymous component') + + (vm._isVue && vm.$options.__file ? ' at ' + vm.$options.__file : '') + ); } -var _sPO = Object.setPrototypeOf || function _sPO(o, p) { - o.__proto__ = p; - return o; -}; - -var _construct = typeof Reflect === "object" && Reflect.construct || function _construct(Parent, args, Class) { - var Constructor, - a = [null]; - a.push.apply(a, args); - Constructor = Parent.bind.apply(Parent, a); - return _sPO(new Constructor(), Class.prototype); -}; - -var _window$3 = typeof window !== 'undefined' ? window : typeof commonjsGlobal !== 'undefined' ? commonjsGlobal : typeof self !== 'undefined' ? self : {}; - -function isObject$1(what) { - return _typeof(what) === 'object' && what !== null; -} // Yanked from https://git.io/vS8DV re-used under CC0 -// with some tiny modifications - +function vuePlugin(Raven, Vue) { + Vue = Vue || window.Vue; -function isError$1(value) { - switch ({}.toString.call(value)) { - case '[object Error]': - return true; + // quit if Vue isn't on the page + if (!Vue || !Vue.config) return; - case '[object Exception]': - return true; + var _oldOnError = Vue.config.errorHandler; + Vue.config.errorHandler = function VueErrorHandler(error, vm, info) { + var metaData = {}; - case '[object DOMException]': - return true; + // vm and lifecycleHook are not always available + if (Object.prototype.toString.call(vm) === '[object Object]') { + metaData.componentName = formatComponentName(vm); + metaData.propsData = vm.$options.propsData; + } - default: - return value instanceof Error; - } -} + if (typeof info !== 'undefined') { + metaData.lifecycleHook = info; + } -function isErrorEvent$1(value) { - return supportsErrorEvent() && {}.toString.call(value) === '[object ErrorEvent]'; -} + Raven.captureException(error, { + extra: metaData + }); -function isUndefined$1(what) { - return what === void 0; + if (typeof _oldOnError === 'function') { + _oldOnError.call(this, error, vm, info); + } + }; } -function isFunction$1(what) { - return typeof what === 'function'; -} +module.exports = vuePlugin; -function isPlainObject(what) { - return Object.prototype.toString.call(what) === '[object Object]'; +_dereq_(6).addPlugin(module.exports); +},{"6":6}],3:[function(_dereq_,module,exports){ +function RavenConfigError(message) { + this.name = 'RavenConfigError'; + this.message = message; } +RavenConfigError.prototype = new Error(); +RavenConfigError.prototype.constructor = RavenConfigError; -function isString$1(what) { - return Object.prototype.toString.call(what) === '[object String]'; -} +module.exports = RavenConfigError; -function isArray$1(what) { - return Object.prototype.toString.call(what) === '[object Array]'; -} +},{}],4:[function(_dereq_,module,exports){ +var utils = _dereq_(7); -function isEmptyObject$1(what) { - if (!isPlainObject(what)) return false; +var wrapMethod = function(console, level, callback) { + var originalConsoleLevel = console[level]; + var originalConsole = console; - for (var _ in what) { - if (what.hasOwnProperty(_)) { - return false; - } + if (!(level in console)) { + return; } - return true; -} + var sentryLevel = level === 'warn' ? 'warning' : level; -function supportsErrorEvent() { - try { - new ErrorEvent(''); // eslint-disable-line no-new + console[level] = function() { + var args = [].slice.call(arguments); - return true; - } catch (e) { - return false; - } -} + var msg = utils.safeJoin(args, ' '); + var data = {level: sentryLevel, logger: 'console', extra: {arguments: args}}; -function supportsFetch$1() { - if (!('fetch' in _window$3)) return false; + if (level === 'assert') { + if (args[0] === false) { + // Default browsers message + msg = + 'Assertion failed: ' + (utils.safeJoin(args.slice(1), ' ') || 'console.assert'); + data.extra.arguments = args.slice(1); + callback && callback(msg, data); + } + } else { + callback && callback(msg, data); + } - try { - new Headers(); // eslint-disable-line no-new + // this fails for some browsers. :( + if (originalConsoleLevel) { + // IE9 doesn't allow calling apply on console functions directly + // See: https://stackoverflow.com/questions/5472938/does-ie9-support-console-log-and-is-it-a-real-function#answer-5473193 + Function.prototype.apply.call(originalConsoleLevel, originalConsole, args); + } + }; +}; - new Request(''); // eslint-disable-line no-new +module.exports = { + wrapMethod: wrapMethod +}; - new Response(); // eslint-disable-line no-new +},{"7":7}],5:[function(_dereq_,module,exports){ +(function (global){ +/*global XDomainRequest:false */ - return true; - } catch (e) { - return false; - } -} +var TraceKit = _dereq_(8); +var stringify = _dereq_(9); +var md5 = _dereq_(10); +var RavenConfigError = _dereq_(3); -function wrappedCallback(callback) { - function dataCallback(data, original) { - var normalizedData = callback(data) || data; +var utils = _dereq_(7); +var isError = utils.isError; +var isObject = utils.isObject; +var isPlainObject = utils.isPlainObject; +var isErrorEvent = utils.isErrorEvent; +var isUndefined = utils.isUndefined; +var isFunction = utils.isFunction; +var isString = utils.isString; +var isArray = utils.isArray; +var isEmptyObject = utils.isEmptyObject; +var each = utils.each; +var objectMerge = utils.objectMerge; +var truncate = utils.truncate; +var objectFrozen = utils.objectFrozen; +var hasKey = utils.hasKey; +var joinRegExp = utils.joinRegExp; +var urlencode = utils.urlencode; +var uuid4 = utils.uuid4; +var htmlTreeAsString = utils.htmlTreeAsString; +var isSameException = utils.isSameException; +var isSameStacktrace = utils.isSameStacktrace; +var parseUrl = utils.parseUrl; +var fill = utils.fill; +var supportsFetch = utils.supportsFetch; +var supportsReferrerPolicy = utils.supportsReferrerPolicy; +var serializeKeysForMessage = utils.serializeKeysForMessage; +var serializeException = utils.serializeException; +var sanitize = utils.sanitize; - if (original) { - return original(normalizedData) || normalizedData; - } +var wrapConsoleMethod = _dereq_(4).wrapMethod; - return normalizedData; - } +var dsnKeys = 'source protocol user pass host port path'.split(' '), + dsnPattern = /^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/; - return dataCallback; +function now() { + return +new Date(); } -function each$1(obj, callback) { - var i, j; - - if (isUndefined$1(obj.length)) { - for (i in obj) { - if (hasKey$1(obj, i)) { - callback.call(null, i, obj[i]); - } - } - } else { - j = obj.length; +// This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) +var _window = + typeof window !== 'undefined' + ? window + : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; +var _document = _window.document; +var _navigator = _window.navigator; - if (j) { - for (i = 0; i < j; i++) { - callback.call(null, i, obj[i]); +function keepOriginalCallback(original, callback) { + return isFunction(callback) + ? function(data) { + return callback(data, original); } - } - } + : callback; } -function objectMerge$1(obj1, obj2) { - if (!obj2) { - return obj1; - } +// First, check for JSON support +// If there is no JSON, we no-op the core features of Raven +// since JSON is required to encode the payload +function Raven() { + this._hasJSON = !!(typeof JSON === 'object' && JSON.stringify); + // Raven can run in contexts where there's no document (react-native) + this._hasDocument = !isUndefined(_document); + this._hasNavigator = !isUndefined(_navigator); + this._lastCapturedException = null; + this._lastData = null; + this._lastEventId = null; + this._globalServer = null; + this._globalKey = null; + this._globalProject = null; + this._globalContext = {}; + this._globalOptions = { + // SENTRY_RELEASE can be injected by https://github.com/getsentry/sentry-webpack-plugin + release: _window.SENTRY_RELEASE && _window.SENTRY_RELEASE.id, + logger: 'javascript', + ignoreErrors: [], + ignoreUrls: [], + whitelistUrls: [], + includePaths: [], + headers: null, + collectWindowErrors: true, + captureUnhandledRejections: true, + maxMessageLength: 0, + // By default, truncates URL values to 250 chars + maxUrlLength: 250, + stackTraceLimit: 50, + autoBreadcrumbs: true, + instrument: true, + sampleRate: 1, + sanitizeKeys: [] + }; + this._fetchDefaults = { + method: 'POST', + keepalive: true, + // Despite all stars in the sky saying that Edge supports old draft syntax, aka 'never', 'always', 'origin' and 'default + // https://caniuse.com/#feat=referrer-policy + // It doesn't. And it throw exception instead of ignoring this parameter... + // REF: https://github.com/getsentry/raven-js/issues/1233 + referrerPolicy: supportsReferrerPolicy() ? 'origin' : '' + }; + this._ignoreOnError = 0; + this._isRavenInstalled = false; + this._originalErrorStackTraceLimit = Error.stackTraceLimit; + // capture references to window.console *and* all its methods first + // before the console plugin has a chance to monkey patch + this._originalConsole = _window.console || {}; + this._originalConsoleMethods = {}; + this._plugins = []; + this._startTime = now(); + this._wrappedBuiltIns = []; + this._breadcrumbs = []; + this._lastCapturedEvent = null; + this._keypressTimeout; + this._location = _window.location; + this._lastHref = this._location && this._location.href; + this._resetBackoff(); - each$1(obj2, function (key, value) { - obj1[key] = value; - }); - return obj1; + // eslint-disable-next-line guard-for-in + for (var method in this._originalConsole) { + this._originalConsoleMethods[method] = this._originalConsole[method]; + } } -/** - * This function is only used for react-native. - * react-native freezes object that have already been sent over the - * js bridge. We need this function in order to check if the object is frozen. - * So it's ok that objectFrozen returns false if Object.isFrozen is not - * supported because it's not relevant for other "platforms". See related issue: - * https://github.com/getsentry/react-native-sentry/issues/57 + +/* + * The core Raven singleton + * + * @this {Raven} */ +Raven.prototype = { + // Hardcode version string so that raven source can be loaded directly via + // webpack (using a build step causes webpack #1617). Grunt verifies that + // this value matches package.json during build. + // See: https://github.com/getsentry/raven-js/issues/465 + VERSION: '3.24.2', -function objectFrozen$1(obj) { - if (!Object.isFrozen) { - return false; - } - - return Object.isFrozen(obj); -} - -function truncate$1(str, max) { - return !max || str.length <= max ? str : str.substr(0, max) + "\u2026"; -} -/** - * hasKey, a better form of hasOwnProperty - * Example: hasKey(MainHostObject, property) === true/false - * - * @param {Object} host object to check property - * @param {string} key to check - */ - - -function hasKey$1(object, key) { - return Object.prototype.hasOwnProperty.call(object, key); -} + debug: false, -function joinRegExp$1(patterns) { - // Combine an array of regular expressions and strings into one large regexp - // Be mad. - var sources = [], - i = 0, - len = patterns.length, - pattern; + TraceKit: TraceKit, // alias to TraceKit - for (; i < len; i++) { - pattern = patterns[i]; + /* + * Configure Raven with a DSN and extra options + * + * @param {string} dsn The public Sentry DSN + * @param {object} options Set of global options [optional] + * @return {Raven} + */ + config: function(dsn, options) { + var self = this; - if (isString$1(pattern)) { - // If it's a string, we need to escape it - // Taken from: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions - sources.push(pattern.replace(/([.*+?^=!:${}()|\[\]\/\\])/g, '\\$1')); - } else if (pattern && pattern.source) { - // If it's a regexp already, we want to extract the source - sources.push(pattern.source); - } // Intentionally skip other cases + if (self._globalServer) { + this._logDebug('error', 'Error: Raven has already been configured'); + return self; + } + if (!dsn) return self; - } + var globalOptions = self._globalOptions; - return new RegExp(sources.join('|'), 'i'); -} + // merge in options + if (options) { + each(options, function(key, value) { + // tags and extra are special and need to be put into context + if (key === 'tags' || key === 'extra' || key === 'user') { + self._globalContext[key] = value; + } else { + globalOptions[key] = value; + } + }); + } -function urlencode$1(o) { - var pairs = []; - each$1(o, function (key, value) { - pairs.push(encodeURIComponent(key) + '=' + encodeURIComponent(value)); - }); - return pairs.join('&'); -} // borrowed from https://tools.ietf.org/html/rfc3986#appendix-B -// intentionally using regex and not href parsing trick because React Native and other -// environments where DOM might not be available + self.setDSN(dsn); + // "Script error." is hard coded into browsers for errors that it can't read. + // this is the result of a script being pulled in from an external domain and CORS. + globalOptions.ignoreErrors.push(/^Script error\.?$/); + globalOptions.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/); -function parseUrl$1(url) { - if (typeof url !== 'string') return {}; - var match = url.match(/^(([^:\/?#]+):)?(\/\/([^\/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?$/); // coerce to undefined values to empty string so we don't get 'undefined' + // join regexp rules into one big rule + globalOptions.ignoreErrors = joinRegExp(globalOptions.ignoreErrors); + globalOptions.ignoreUrls = globalOptions.ignoreUrls.length + ? joinRegExp(globalOptions.ignoreUrls) + : false; + globalOptions.whitelistUrls = globalOptions.whitelistUrls.length + ? joinRegExp(globalOptions.whitelistUrls) + : false; + globalOptions.includePaths = joinRegExp(globalOptions.includePaths); + globalOptions.maxBreadcrumbs = Math.max( + 0, + Math.min(globalOptions.maxBreadcrumbs || 100, 100) + ); // default and hard limit is 100 - var query = match[6] || ''; - var fragment = match[8] || ''; - return { - protocol: match[2], - host: match[4], - path: match[5], - relative: match[5] + query + fragment // everything minus origin + var autoBreadcrumbDefaults = { + xhr: true, + console: true, + dom: true, + location: true, + sentry: true + }; - }; -} + var autoBreadcrumbs = globalOptions.autoBreadcrumbs; + if ({}.toString.call(autoBreadcrumbs) === '[object Object]') { + autoBreadcrumbs = objectMerge(autoBreadcrumbDefaults, autoBreadcrumbs); + } else if (autoBreadcrumbs !== false) { + autoBreadcrumbs = autoBreadcrumbDefaults; + } + globalOptions.autoBreadcrumbs = autoBreadcrumbs; -function uuid4$1() { - var crypto = _window$3.crypto || _window$3.msCrypto; + var instrumentDefaults = { + tryCatch: true + }; - if (!isUndefined$1(crypto) && crypto.getRandomValues) { - // Use window.crypto API if available - // eslint-disable-next-line no-undef - var arr = new Uint16Array(8); - crypto.getRandomValues(arr); // set 4 in byte 7 + var instrument = globalOptions.instrument; + if ({}.toString.call(instrument) === '[object Object]') { + instrument = objectMerge(instrumentDefaults, instrument); + } else if (instrument !== false) { + instrument = instrumentDefaults; + } + globalOptions.instrument = instrument; - arr[3] = arr[3] & 0xfff | 0x4000; // set 2 most significant bits of byte 9 to '10' + TraceKit.collectWindowErrors = !!globalOptions.collectWindowErrors; - arr[4] = arr[4] & 0x3fff | 0x8000; + // return for chaining + return self; + }, - var pad = function pad(num) { - var v = num.toString(16); + /* + * Installs a global window.onerror error handler + * to capture and report uncaught exceptions. + * At this point, install() is required to be called due + * to the way TraceKit is set up. + * + * @return {Raven} + */ + install: function() { + var self = this; + if (self.isSetup() && !self._isRavenInstalled) { + TraceKit.report.subscribe(function() { + self._handleOnErrorStackInfo.apply(self, arguments); + }); - while (v.length < 4) { - v = '0' + v; + if (self._globalOptions.captureUnhandledRejections) { + self._attachPromiseRejectionHandler(); } - return v; - }; - - return pad(arr[0]) + pad(arr[1]) + pad(arr[2]) + pad(arr[3]) + pad(arr[4]) + pad(arr[5]) + pad(arr[6]) + pad(arr[7]); - } else { - // http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/2117523#2117523 - return 'xxxxxxxxxxxx4xxxyxxxxxxxxxxxxxxx'.replace(/[xy]/g, function (c) { - var r = Math.random() * 16 | 0, - v = c === 'x' ? r : r & 0x3 | 0x8; - return v.toString(16); - }); - } -} -/** - * Given a child DOM element, returns a query-selector statement describing that - * and its ancestors - * e.g. [HTMLElement] => body > div > input#foo.btn[name=baz] - * @param elem - * @returns {string} - */ + self._patchFunctionToString(); + if (self._globalOptions.instrument && self._globalOptions.instrument.tryCatch) { + self._instrumentTryCatch(); + } -function htmlTreeAsString$1(elem) { - /* eslint no-extra-parens:0*/ - var MAX_TRAVERSE_HEIGHT = 5, - MAX_OUTPUT_LEN = 80, - out = [], - height = 0, - len = 0, - separator = ' > ', - sepLength = separator.length, - nextStr; + if (self._globalOptions.autoBreadcrumbs) self._instrumentBreadcrumbs(); - while (elem && height++ < MAX_TRAVERSE_HEIGHT) { - nextStr = htmlElementAsString(elem); // bail out if - // - nextStr is the 'html' element - // - the length of the string that would be created exceeds MAX_OUTPUT_LEN - // (ignore this limit if we are on the first iteration) + // Install all of the plugins + self._drainPlugins(); - if (nextStr === 'html' || height > 1 && len + out.length * sepLength + nextStr.length >= MAX_OUTPUT_LEN) { - break; + self._isRavenInstalled = true; } - out.push(nextStr); - len += nextStr.length; - elem = elem.parentNode; - } + Error.stackTraceLimit = self._globalOptions.stackTraceLimit; + return this; + }, - return out.reverse().join(separator); -} -/** - * Returns a simple, query-selector representation of a DOM element - * e.g. [HTMLElement] => input#foo.btn[name=baz] - * @param HTMLElement - * @returns {string} - */ + /* + * Set the DSN (can be called multiple time unlike config) + * + * @param {string} dsn The public Sentry DSN + */ + setDSN: function(dsn) { + var self = this, + uri = self._parseDSN(dsn), + lastSlash = uri.path.lastIndexOf('/'), + path = uri.path.substr(1, lastSlash); + self._dsn = dsn; + self._globalKey = uri.user; + self._globalSecret = uri.pass && uri.pass.substr(1); + self._globalProject = uri.path.substr(lastSlash + 1); -function htmlElementAsString(elem) { - var out = [], - className, - classes, - key, - attr, - i; + self._globalServer = self._getGlobalServer(uri); - if (!elem || !elem.tagName) { - return ''; - } + self._globalEndpoint = + self._globalServer + '/' + path + 'api/' + self._globalProject + '/store/'; - out.push(elem.tagName.toLowerCase()); + // Reset backoff state since we may be pointing at a + // new project/server + this._resetBackoff(); + }, - if (elem.id) { - out.push('#' + elem.id); - } + /* + * Wrap code within a context so Raven can capture errors + * reliably across domains that is executed immediately. + * + * @param {object} options A specific set of options for this context [optional] + * @param {function} func The callback to be immediately executed within the context + * @param {array} args An array of arguments to be called with the callback [optional] + */ + context: function(options, func, args) { + if (isFunction(options)) { + args = func || []; + func = options; + options = undefined; + } - className = elem.className; + return this.wrap(options, func).apply(this, args); + }, - if (className && isString$1(className)) { - classes = className.split(/\s+/); + /* + * Wrap code within a context and returns back a new function to be executed + * + * @param {object} options A specific set of options for this context [optional] + * @param {function} func The function to be wrapped in a new context + * @param {function} func A function to call before the try/catch wrapper [optional, private] + * @return {function} The newly wrapped functions with a context + */ + wrap: function(options, func, _before) { + var self = this; + // 1 argument has been passed, and it's not a function + // so just return it + if (isUndefined(func) && !isFunction(options)) { + return options; + } - for (i = 0; i < classes.length; i++) { - out.push('.' + classes[i]); + // options is optional + if (isFunction(options)) { + func = options; + options = undefined; } - } - var attrWhitelist = ['type', 'name', 'title', 'alt']; + // At this point, we've passed along 2 arguments, and the second one + // is not a function either, so we'll just return the second argument. + if (!isFunction(func)) { + return func; + } - for (i = 0; i < attrWhitelist.length; i++) { - key = attrWhitelist[i]; - attr = elem.getAttribute(key); + // We don't wanna wrap it twice! + try { + if (func.__raven__) { + return func; + } - if (attr) { - out.push('[' + key + '="' + attr + '"]'); + // If this has already been wrapped in the past, return that + if (func.__raven_wrapper__) { + return func.__raven_wrapper__; + } + } catch (e) { + // Just accessing custom props in some Selenium environments + // can cause a "Permission denied" exception (see raven-js#495). + // Bail on wrapping and return the function as-is (defers to window.onerror). + return func; } - } - return out.join(''); -} -/** - * Returns true if either a OR b is truthy, but not both - */ + function wrapped() { + var args = [], + i = arguments.length, + deep = !options || (options && options.deep !== false); + if (_before && isFunction(_before)) { + _before.apply(this, arguments); + } -function isOnlyOneTruthy(a, b) { - return !!(!!a ^ !!b); -} -/** - * Returns true if both parameters are undefined - */ + // Recursively wrap all of a function's arguments that are + // functions themselves. + while (i--) args[i] = deep ? self.wrap(options, arguments[i]) : arguments[i]; + try { + // Attempt to invoke user-land function + // NOTE: If you are a Sentry user, and you are seeing this stack frame, it + // means Raven caught an error invoking your application code. This is + // expected behavior and NOT indicative of a bug with Raven.js. + return func.apply(this, args); + } catch (e) { + self._ignoreNextOnError(); + self.captureException(e, options); + throw e; + } + } -function isBothUndefined(a, b) { - return isUndefined$1(a) && isUndefined$1(b); -} -/** - * Returns true if the two input exception interfaces have the same content - */ + // copy over properties of the old function + for (var property in func) { + if (hasKey(func, property)) { + wrapped[property] = func[property]; + } + } + wrapped.prototype = func.prototype; + func.__raven_wrapper__ = wrapped; + // Signal that this function has been wrapped/filled already + // for both debugging and to prevent it to being wrapped/filled twice + wrapped.__raven__ = true; + wrapped.__orig__ = func; -function isSameException$1(ex1, ex2) { - if (isOnlyOneTruthy(ex1, ex2)) return false; - ex1 = ex1.values[0]; - ex2 = ex2.values[0]; - if (ex1.type !== ex2.type || ex1.value !== ex2.value) return false; // in case both stacktraces are undefined, we can't decide so default to false + return wrapped; + }, - if (isBothUndefined(ex1.stacktrace, ex2.stacktrace)) return false; - return isSameStacktrace$1(ex1.stacktrace, ex2.stacktrace); -} -/** - * Returns true if the two input stack trace interfaces have the same content - */ + /** + * Uninstalls the global error handler. + * + * @return {Raven} + */ + uninstall: function() { + TraceKit.report.uninstall(); + this._detachPromiseRejectionHandler(); + this._unpatchFunctionToString(); + this._restoreBuiltIns(); + this._restoreConsole(); -function isSameStacktrace$1(stack1, stack2) { - if (isOnlyOneTruthy(stack1, stack2)) return false; - var frames1 = stack1.frames; - var frames2 = stack2.frames; // Exit early if frame count differs + Error.stackTraceLimit = this._originalErrorStackTraceLimit; + this._isRavenInstalled = false; - if (frames1.length !== frames2.length) return false; // Iterate through every frame; bail out if anything differs + return this; + }, - var a, b; + /** + * Callback used for `unhandledrejection` event + * + * @param {PromiseRejectionEvent} event An object containing + * promise: the Promise that was rejected + * reason: the value with which the Promise was rejected + * @return void + */ + _promiseRejectionHandler: function(event) { + this._logDebug('debug', 'Raven caught unhandled promise rejection:', event); + this.captureException(event.reason, { + extra: { + unhandledPromiseRejection: true + } + }); + }, - for (var i = 0; i < frames1.length; i++) { - a = frames1[i]; - b = frames2[i]; - if (a.filename !== b.filename || a.lineno !== b.lineno || a.colno !== b.colno || a['function'] !== b['function']) return false; - } + /** + * Installs the global promise rejection handler. + * + * @return {raven} + */ + _attachPromiseRejectionHandler: function() { + this._promiseRejectionHandler = this._promiseRejectionHandler.bind(this); + _window.addEventListener && + _window.addEventListener('unhandledrejection', this._promiseRejectionHandler); + return this; + }, - return true; -} -/** - * Polyfill a method - * @param obj object e.g. `document` - * @param name method name present on object e.g. `addEventListener` - * @param replacement replacement function - * @param track {optional} record instrumentation to an array - */ + /** + * Uninstalls the global promise rejection handler. + * + * @return {raven} + */ + _detachPromiseRejectionHandler: function() { + _window.removeEventListener && + _window.removeEventListener('unhandledrejection', this._promiseRejectionHandler); + return this; + }, + /** + * Manually capture an exception and send it over to Sentry + * + * @param {error} ex An exception to be logged + * @param {object} options A specific set of options for this error [optional] + * @return {Raven} + */ + captureException: function(ex, options) { + options = objectMerge({trimHeadFrames: 0}, options ? options : {}); + + if (isErrorEvent(ex) && ex.error) { + // If it is an ErrorEvent with `error` property, extract it to get actual Error + ex = ex.error; + } else if (isError(ex)) { + // we have a real Error object + ex = ex; + } else if (isPlainObject(ex)) { + // If it is plain Object, serialize it manually and extract options + // This will allow us to group events based on top-level keys + // which is much better than creating new group when any key/value change + options = this._getCaptureExceptionOptionsFromPlainObject(options, ex); + ex = new Error(options.message); + } else { + // If none of previous checks were valid, then it means that + // it's not a plain Object + // it's not a valid ErrorEvent (one with an error property) + // it's not an Error + // So bail out and capture it as a simple message: + return this.captureMessage( + ex, + objectMerge(options, { + stacktrace: true, // if we fall back to captureMessage, default to attempting a new trace + trimHeadFrames: options.trimHeadFrames + 1 + }) + ); + } + + // Store the raw exception object for potential debugging and introspection + this._lastCapturedException = ex; + + // TraceKit.report will re-raise any exception passed to it, + // which means you have to wrap it in try/catch. Instead, we + // can wrap it here and only re-raise if TraceKit.report + // raises an exception different from the one we asked to + // report on. + try { + var stack = TraceKit.computeStackTrace(ex); + this._handleStackInfo(stack, options); + } catch (ex1) { + if (ex !== ex1) { + throw ex1; + } + } -function fill$1(obj, name, replacement, track) { - var orig = obj[name]; - obj[name] = replacement(orig); - obj[name].__raven__ = true; - obj[name].__orig__ = orig; + return this; + }, - if (track) { - track.push([obj, name, orig]); - } -} -/** - * Join values in array - * @param input array of values to be joined together - * @param delimiter string to be placed in-between values - * @returns {string} - */ + _getCaptureExceptionOptionsFromPlainObject: function(currentOptions, ex) { + var exKeys = Object.keys(ex).sort(); + var options = objectMerge(currentOptions, { + message: + 'Non-Error exception captured with keys: ' + serializeKeysForMessage(exKeys), + fingerprint: [md5(exKeys)], + extra: currentOptions.extra || {} + }); + options.extra.__serialized__ = serializeException(ex); + return options; + }, -function safeJoin(input, delimiter) { - if (!isArray$1(input)) return ''; - var output = []; + /* + * Manually send a message to Sentry + * + * @param {string} msg A plain message to be captured in Sentry + * @param {object} options A specific set of options for this message [optional] + * @return {Raven} + */ + captureMessage: function(msg, options) { + // config() automagically converts ignoreErrors from a list to a RegExp so we need to test for an + // early call; we'll error on the side of logging anything called before configuration since it's + // probably something you should see: + if ( + !!this._globalOptions.ignoreErrors.test && + this._globalOptions.ignoreErrors.test(msg) + ) { + return; + } - for (var i = 0; i < input.length; i++) { + options = options || {}; + msg = msg + ''; // Make sure it's actually a string + + var data = objectMerge( + { + message: msg + }, + options + ); + + var ex; + // Generate a "synthetic" stack trace from this point. + // NOTE: If you are a Sentry user, and you are seeing this stack frame, it is NOT indicative + // of a bug with Raven.js. Sentry generates synthetic traces either by configuration, + // or if it catches a thrown object without a "stack" property. try { - output.push(String(input[i])); - } catch (e) { - output.push('[value cannot be serialized]'); + throw new Error(msg); + } catch (ex1) { + ex = ex1; } - } - - return output.join(delimiter); -} -var utils = { - isObject: isObject$1, - isError: isError$1, - isErrorEvent: isErrorEvent$1, - isUndefined: isUndefined$1, - isFunction: isFunction$1, - isPlainObject: isPlainObject, - isString: isString$1, - isArray: isArray$1, - isEmptyObject: isEmptyObject$1, - supportsErrorEvent: supportsErrorEvent, - supportsFetch: supportsFetch$1, - wrappedCallback: wrappedCallback, - each: each$1, - objectMerge: objectMerge$1, - truncate: truncate$1, - objectFrozen: objectFrozen$1, - hasKey: hasKey$1, - joinRegExp: joinRegExp$1, - urlencode: urlencode$1, - uuid4: uuid4$1, - htmlTreeAsString: htmlTreeAsString$1, - htmlElementAsString: htmlElementAsString, - isSameException: isSameException$1, - isSameStacktrace: isSameStacktrace$1, - parseUrl: parseUrl$1, - fill: fill$1, - safeJoin: safeJoin -}; + // null exception name so `Error` isn't prefixed to msg + ex.name = null; + var stack = TraceKit.computeStackTrace(ex); -/* - TraceKit - Cross brower stack traces + // stack[0] is `throw new Error(msg)` call itself, we are interested in the frame that was just before that, stack[1] + var initialCall = isArray(stack.stack) && stack.stack[1]; - This was originally forked from github.com/occ/TraceKit, but has since been - largely re-written and is now maintained as part of raven-js. Tests for - this are in test/vendor. + // if stack[1] is `Raven.captureException`, it means that someone passed a string to it and we redirected that call + // to be handled by `captureMessage`, thus `initialCall` is the 3rd one, not 2nd + // initialCall => captureException(string) => captureMessage(string) + if (initialCall && initialCall.func === 'Raven.captureException') { + initialCall = stack.stack[2]; + } - MIT license -*/ + var fileurl = (initialCall && initialCall.url) || ''; -var TraceKit = { - collectWindowErrors: true, - debug: false -}; // This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) + if ( + !!this._globalOptions.ignoreUrls.test && + this._globalOptions.ignoreUrls.test(fileurl) + ) { + return; + } -var _window$2 = typeof window !== 'undefined' ? window : typeof commonjsGlobal !== 'undefined' ? commonjsGlobal : typeof self !== 'undefined' ? self : {}; // global reference to slice + if ( + !!this._globalOptions.whitelistUrls.test && + !this._globalOptions.whitelistUrls.test(fileurl) + ) { + return; + } + if (this._globalOptions.stacktrace || (options && options.stacktrace)) { + // fingerprint on msg, not stack trace (legacy behavior, could be revisited) + data.fingerprint = data.fingerprint == null ? msg : data.fingerprint; -var _slice = [].slice; -var UNKNOWN_FUNCTION = '?'; // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error#Error_types + options = objectMerge( + { + trimHeadFrames: 0 + }, + options + ); + // Since we know this is a synthetic trace, the top frame (this function call) + // MUST be from Raven.js, so mark it for trimming + // We add to the trim counter so that callers can choose to trim extra frames, such + // as utility functions. + options.trimHeadFrames += 1; -var ERROR_TYPES_RE = /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/; + var frames = this._prepareFrames(stack, options); + data.stacktrace = { + // Sentry expects frames oldest to newest + frames: frames.reverse() + }; + } -function getLocationHref() { - if (typeof document === 'undefined' || document.location == null) return ''; - return document.location.href; -} -/** - * TraceKit.report: cross-browser processing of unhandled exceptions - * - * Syntax: - * TraceKit.report.subscribe(function(stackInfo) { ... }) - * TraceKit.report.unsubscribe(function(stackInfo) { ... }) - * TraceKit.report(exception) - * try { ...code... } catch(ex) { TraceKit.report(ex); } - * - * Supports: - * - Firefox: full stack trace with line numbers, plus column number - * on top frame; column number is not guaranteed - * - Opera: full stack trace with line and column numbers - * - Chrome: full stack trace with line and column numbers - * - Safari: line and column number for the top frame only; some frames - * may be missing, and column number is not guaranteed - * - IE: line and column number for the top frame only; some frames - * may be missing, and column number is not guaranteed - * - * In theory, TraceKit should work on all of the following versions: - * - IE5.5+ (only 8.0 tested) - * - Firefox 0.9+ (only 3.5+ tested) - * - Opera 7+ (only 10.50 tested; versions 9 and earlier may require - * Exceptions Have Stacktrace to be enabled in opera:config) - * - Safari 3+ (only 4+ tested) - * - Chrome 1+ (only 5+ tested) - * - Konqueror 3.5+ (untested) - * - * Requires TraceKit.computeStackTrace. - * - * Tries to catch all unhandled exceptions and report them to the - * subscribed handlers. Please note that TraceKit.report will rethrow the - * exception. This is REQUIRED in order to get a useful stack trace in IE. - * If the exception does not reach the top of the browser, you will only - * get a stack trace from the point where TraceKit.report was called. - * - * Handlers receive a stackInfo object as described in the - * TraceKit.computeStackTrace docs. - */ + // Make sure that fingerprint is always wrapped in an array + if (data.fingerprint) { + data.fingerprint = isArray(data.fingerprint) + ? data.fingerprint + : [data.fingerprint]; + } + // Fire away! + this._send(data); -TraceKit.report = function reportModuleWrapper() { - var handlers = [], - lastArgs = null, - lastException = null, - lastExceptionStack = null; - /** - * Add a crash handler. - * @param {Function} handler - */ + return this; + }, - function subscribe(handler) { - installGlobalHandler(); - handlers.push(handler); - } - /** - * Remove a crash handler. - * @param {Function} handler - */ + captureBreadcrumb: function(obj) { + var crumb = objectMerge( + { + timestamp: now() / 1000 + }, + obj + ); + if (isFunction(this._globalOptions.breadcrumbCallback)) { + var result = this._globalOptions.breadcrumbCallback(crumb); - function unsubscribe(handler) { - for (var i = handlers.length - 1; i >= 0; --i) { - if (handlers[i] === handler) { - handlers.splice(i, 1); + if (isObject(result) && !isEmptyObject(result)) { + crumb = result; + } else if (result === false) { + return this; } } - } - /** - * Remove all crash handlers. - */ - - function unsubscribeAll() { - uninstallGlobalHandler(); - handlers = []; - } - /** - * Dispatch stack information to all handlers. - * @param {Object.} stack - */ - - - function notifyHandlers(stack, isWindowError) { - var exception = null; - - if (isWindowError && !TraceKit.collectWindowErrors) { - return; + this._breadcrumbs.push(crumb); + if (this._breadcrumbs.length > this._globalOptions.maxBreadcrumbs) { + this._breadcrumbs.shift(); } + return this; + }, - for (var i in handlers) { - if (handlers.hasOwnProperty(i)) { - try { - handlers[i].apply(null, [stack].concat(_slice.call(arguments, 2))); - } catch (inner) { - exception = inner; - } - } - } + addPlugin: function(plugin /*arg1, arg2, ... argN*/) { + var pluginArgs = [].slice.call(arguments, 1); - if (exception) { - throw exception; + this._plugins.push([plugin, pluginArgs]); + if (this._isRavenInstalled) { + this._drainPlugins(); } - } - var _oldOnerrorHandler, _onErrorHandlerInstalled; - /** - * Ensures all global unhandled exceptions are recorded. - * Supported by Gecko and IE. - * @param {string} msg Error message. - * @param {string} url URL of script that generated the exception. - * @param {(number|string)} lineNo The line number at which the error - * occurred. - * @param {?(number|string)} colNo The column number at which the error - * occurred. - * @param {?Error} ex The actual Error object. + return this; + }, + + /* + * Set/clear a user to be sent along with the payload. + * + * @param {object} user An object representing user data [optional] + * @return {Raven} */ + setUserContext: function(user) { + // Intentionally do not merge here since that's an unexpected behavior. + this._globalContext.user = user; + return this; + }, - function traceKitWindowOnError(msg, url, lineNo, colNo, ex) { - var stack = null; // If 'ex' is ErrorEvent, get real Error from inside + /* + * Merge extra attributes to be sent along with the payload. + * + * @param {object} extra An object representing extra data [optional] + * @return {Raven} + */ + setExtraContext: function(extra) { + this._mergeContext('extra', extra); - var exception = utils.isErrorEvent(ex) ? ex.error : ex; // If 'msg' is ErrorEvent, get real message from inside + return this; + }, - var message = utils.isErrorEvent(msg) ? msg.message : msg; + /* + * Merge tags to be sent along with the payload. + * + * @param {object} tags An object representing tags [optional] + * @return {Raven} + */ + setTagsContext: function(tags) { + this._mergeContext('tags', tags); - if (lastExceptionStack) { - TraceKit.computeStackTrace.augmentStackTraceWithInitialElement(lastExceptionStack, url, lineNo, message); - processLastException(); - } else if (exception && utils.isError(exception)) { - // non-string `exception` arg; attempt to extract stack trace - // New chrome and blink send along a real error object - // Let's just report that like a normal error. - // See: https://mikewest.org/2013/08/debugging-runtime-errors-with-window-onerror - stack = TraceKit.computeStackTrace(exception); - notifyHandlers(stack, true); - } else { - var location = { - url: url, - line: lineNo, - column: colNo - }; - var name = undefined; - var groups; + return this; + }, - if ({}.toString.call(message) === '[object String]') { - var groups = message.match(ERROR_TYPES_RE); + /* + * Clear all of the context. + * + * @return {Raven} + */ + clearContext: function() { + this._globalContext = {}; - if (groups) { - name = groups[1]; - message = groups[2]; - } - } + return this; + }, - location.func = UNKNOWN_FUNCTION; - stack = { - name: name, - message: message, - url: getLocationHref(), - stack: [location] - }; - notifyHandlers(stack, true); - } + /* + * Get a copy of the current context. This cannot be mutated. + * + * @return {object} copy of context + */ + getContext: function() { + // lol javascript + return JSON.parse(stringify(this._globalContext)); + }, - if (_oldOnerrorHandler) { - return _oldOnerrorHandler.apply(this, arguments); - } + /* + * Set environment of application + * + * @param {string} environment Typically something like 'production'. + * @return {Raven} + */ + setEnvironment: function(environment) { + this._globalOptions.environment = environment; - return false; - } + return this; + }, - function installGlobalHandler() { - if (_onErrorHandlerInstalled) { - return; - } + /* + * Set release version of application + * + * @param {string} release Typically something like a git SHA to identify version + * @return {Raven} + */ + setRelease: function(release) { + this._globalOptions.release = release; - _oldOnerrorHandler = _window$2.onerror; - _window$2.onerror = traceKitWindowOnError; - _onErrorHandlerInstalled = true; - } + return this; + }, - function uninstallGlobalHandler() { - if (!_onErrorHandlerInstalled) { - return; - } + /* + * Set the dataCallback option + * + * @param {function} callback The callback to run which allows the + * data blob to be mutated before sending + * @return {Raven} + */ + setDataCallback: function(callback) { + var original = this._globalOptions.dataCallback; + this._globalOptions.dataCallback = keepOriginalCallback(original, callback); + return this; + }, - _window$2.onerror = _oldOnerrorHandler; - _onErrorHandlerInstalled = false; - _oldOnerrorHandler = undefined; - } + /* + * Set the breadcrumbCallback option + * + * @param {function} callback The callback to run which allows filtering + * or mutating breadcrumbs + * @return {Raven} + */ + setBreadcrumbCallback: function(callback) { + var original = this._globalOptions.breadcrumbCallback; + this._globalOptions.breadcrumbCallback = keepOriginalCallback(original, callback); + return this; + }, - function processLastException() { - var _lastExceptionStack = lastExceptionStack, - _lastArgs = lastArgs; - lastArgs = null; - lastExceptionStack = null; - lastException = null; - notifyHandlers.apply(null, [_lastExceptionStack, false].concat(_lastArgs)); - } - /** - * Reports an unhandled Error to TraceKit. - * @param {Error} ex - * @param {?boolean} rethrow If false, do not re-throw the exception. - * Only used for window.onerror to not cause an infinite loop of - * rethrowing. + /* + * Set the shouldSendCallback option + * + * @param {function} callback The callback to run which allows + * introspecting the blob before sending + * @return {Raven} */ + setShouldSendCallback: function(callback) { + var original = this._globalOptions.shouldSendCallback; + this._globalOptions.shouldSendCallback = keepOriginalCallback(original, callback); + return this; + }, + + /** + * Override the default HTTP transport mechanism that transmits data + * to the Sentry server. + * + * @param {function} transport Function invoked instead of the default + * `makeRequest` handler. + * + * @return {Raven} + */ + setTransport: function(transport) { + this._globalOptions.transport = transport; + return this; + }, - function report(ex, rethrow) { - var args = _slice.call(arguments, 1); + /* + * Get the latest raw exception that was captured by Raven. + * + * @return {error} + */ + lastException: function() { + return this._lastCapturedException; + }, - if (lastExceptionStack) { - if (lastException === ex) { - return; // already caught by an inner catch block, ignore - } else { - processLastException(); + /* + * Get the last event id + * + * @return {string} + */ + lastEventId: function() { + return this._lastEventId; + }, + + /* + * Determine if Raven is setup and ready to go. + * + * @return {boolean} + */ + isSetup: function() { + if (!this._hasJSON) return false; // needs JSON support + if (!this._globalServer) { + if (!this.ravenNotConfiguredError) { + this.ravenNotConfiguredError = true; + this._logDebug('error', 'Error: Raven has not been configured.'); } + return false; } + return true; + }, - var stack = TraceKit.computeStackTrace(ex); - lastExceptionStack = stack; - lastException = ex; - lastArgs = args; // If the stack trace is incomplete, wait for 2 seconds for - // slow slow IE to see if onerror occurs or not before reporting - // this exception; otherwise, we will end up with an incomplete - // stack trace - - setTimeout(function () { - if (lastException === ex) { - processLastException(); - } - }, stack.incomplete ? 2000 : 0); + afterLoad: function() { + // TODO: remove window dependence? - if (rethrow !== false) { - throw ex; // re-throw to propagate to the top level (and cause window.onerror) + // Attempt to initialize Raven on load + var RavenConfig = _window.RavenConfig; + if (RavenConfig) { + this.config(RavenConfig.dsn, RavenConfig.config).install(); } - } - - report.subscribe = subscribe; - report.unsubscribe = unsubscribe; - report.uninstall = unsubscribeAll; - return report; -}(); -/** - * TraceKit.computeStackTrace: cross-browser stack traces in JavaScript - * - * Syntax: - * s = TraceKit.computeStackTrace(exception) // consider using TraceKit.report instead (see below) - * Returns: - * s.name - exception name - * s.message - exception message - * s.stack[i].url - JavaScript or HTML file URL - * s.stack[i].func - function name, or empty for anonymous functions (if guessing did not work) - * s.stack[i].args - arguments passed to the function, if known - * s.stack[i].line - line number, if known - * s.stack[i].column - column number, if known - * - * Supports: - * - Firefox: full stack trace with line numbers and unreliable column - * number on top frame - * - Opera 10: full stack trace with line and column numbers - * - Opera 9-: full stack trace with line numbers - * - Chrome: full stack trace with line and column numbers - * - Safari: line and column number for the topmost stacktrace element - * only - * - IE: no line numbers whatsoever - * - * Tries to guess names of anonymous functions by looking for assignments - * in the source code. In IE and Safari, we have to guess source file names - * by searching for function bodies inside all page scripts. This will not - * work for scripts that are loaded cross-domain. - * Here be dragons: some function names may be guessed incorrectly, and - * duplicate functions may be mismatched. - * - * TraceKit.computeStackTrace should only be used for tracing purposes. - * Logging of unhandled exceptions should be done with TraceKit.report, - * which builds on top of TraceKit.computeStackTrace and provides better - * IE support by utilizing the window.onerror event to retrieve information - * about the top of the stack. - * - * Note: In IE and Safari, no stack trace is recorded on the Error object, - * so computeStackTrace instead walks its *own* chain of callers. - * This means that: - * * in Safari, some methods may be missing from the stack trace; - * * in IE, the topmost function in the stack trace will always be the - * caller of computeStackTrace. - * - * This is okay for tracing (because you are likely to be calling - * computeStackTrace from the function you want to be the topmost element - * of the stack trace anyway), but not okay for logging unhandled - * exceptions (because your catch block will likely be far away from the - * inner function that actually caused the exception). - * - */ + }, + showReportDialog: function(options) { + if ( + !_document // doesn't work without a document (React native) + ) + return; -TraceKit.computeStackTrace = function computeStackTraceWrapper() { - // Contents of Exception in various browsers. - // - // SAFARI: - // ex.message = Can't find variable: qq - // ex.line = 59 - // ex.sourceId = 580238192 - // ex.sourceURL = http://... - // ex.expressionBeginOffset = 96 - // ex.expressionCaretOffset = 98 - // ex.expressionEndOffset = 98 - // ex.name = ReferenceError - // - // FIREFOX: - // ex.message = qq is not defined - // ex.fileName = http://... - // ex.lineNumber = 59 - // ex.columnNumber = 69 - // ex.stack = ...stack trace... (see the example below) - // ex.name = ReferenceError - // - // CHROME: - // ex.message = qq is not defined - // ex.name = ReferenceError - // ex.type = not_defined - // ex.arguments = ['aa'] - // ex.stack = ...stack trace... - // - // INTERNET EXPLORER: - // ex.message = ... - // ex.name = ReferenceError - // - // OPERA: - // ex.message = ...message... (see the example below) - // ex.name = ReferenceError - // ex.opera#sourceloc = 11 (pretty much useless, duplicates the info in ex.message) - // ex.stacktrace = n/a; see 'opera:config#UserPrefs|Exceptions Have Stacktrace' + options = options || {}; - /** - * Computes stack trace information from the stack property. - * Chrome and Gecko use this property. - * @param {Error} ex - * @return {?Object.} Stack trace information. - */ - function computeStackTraceFromStackProp(ex) { - if (typeof ex.stack === 'undefined' || !ex.stack) return; - var chrome = /^\s*at (.*?) ?\(((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i, - gecko = /^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|\[native).*?|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i, - winjs = /^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i, - // Used to additionally parse URL/line/column from eval frames - geckoEval = /(\S+) line (\d+)(?: > eval line \d+)* > eval/i, - chromeEval = /\((\S*)(?::(\d+))(?::(\d+))\)/, - lines = ex.stack.split('\n'), - stack = [], - submatch, - parts, - element, - reference = /^(.*) is undefined$/.exec(ex.message); + var lastEventId = options.eventId || this.lastEventId(); + if (!lastEventId) { + throw new RavenConfigError('Missing eventId'); + } - for (var i = 0, j = lines.length; i < j; ++i) { - if (parts = chrome.exec(lines[i])) { - var isNative = parts[2] && parts[2].indexOf('native') === 0; // start of line + var dsn = options.dsn || this._dsn; + if (!dsn) { + throw new RavenConfigError('Missing DSN'); + } - var isEval = parts[2] && parts[2].indexOf('eval') === 0; // start of line + var encode = encodeURIComponent; + var qs = ''; + qs += '?eventId=' + encode(lastEventId); + qs += '&dsn=' + encode(dsn); - if (isEval && (submatch = chromeEval.exec(parts[2]))) { - // throw out eval line/column and use top-most line/column number - parts[2] = submatch[1]; // url + var user = options.user || this._globalContext.user; + if (user) { + if (user.name) qs += '&name=' + encode(user.name); + if (user.email) qs += '&email=' + encode(user.email); + } - parts[3] = submatch[2]; // line + var globalServer = this._getGlobalServer(this._parseDSN(dsn)); - parts[4] = submatch[3]; // column - } + var script = _document.createElement('script'); + script.async = true; + script.src = globalServer + '/api/embed/error-page/' + qs; + (_document.head || _document.body).appendChild(script); + }, - element = { - url: !isNative ? parts[2] : null, - func: parts[1] || UNKNOWN_FUNCTION, - args: isNative ? [parts[2]] : [], - line: parts[3] ? +parts[3] : null, - column: parts[4] ? +parts[4] : null - }; - } else if (parts = winjs.exec(lines[i])) { - element = { - url: parts[2], - func: parts[1] || UNKNOWN_FUNCTION, - args: [], - line: +parts[3], - column: parts[4] ? +parts[4] : null - }; - } else if (parts = gecko.exec(lines[i])) { - var isEval = parts[3] && parts[3].indexOf(' > eval') > -1; + /**** Private functions ****/ + _ignoreNextOnError: function() { + var self = this; + this._ignoreOnError += 1; + setTimeout(function() { + // onerror should trigger before setTimeout + self._ignoreOnError -= 1; + }); + }, - if (isEval && (submatch = geckoEval.exec(parts[3]))) { - // throw out eval line/column and use top-most line number - parts[3] = submatch[1]; - parts[4] = submatch[2]; - parts[5] = null; // no column when eval - } else if (i === 0 && !parts[5] && typeof ex.columnNumber !== 'undefined') { - // FireFox uses this awesome columnNumber property for its top frame - // Also note, Firefox's column number is 0-based and everything else expects 1-based, - // so adding 1 - // NOTE: this hack doesn't work if top-most frame is eval - stack[0].column = ex.columnNumber + 1; - } + _triggerEvent: function(eventType, options) { + // NOTE: `event` is a native browser thing, so let's avoid conflicting wiht it + var evt, key; - element = { - url: parts[3], - func: parts[1] || UNKNOWN_FUNCTION, - args: parts[2] ? parts[2].split(',') : [], - line: parts[4] ? +parts[4] : null, - column: parts[5] ? +parts[5] : null - }; - } else { - continue; - } + if (!this._hasDocument) return; - if (!element.func && element.line) { - element.func = UNKNOWN_FUNCTION; - } + options = options || {}; - stack.push(element); - } + eventType = 'raven' + eventType.substr(0, 1).toUpperCase() + eventType.substr(1); - if (!stack.length) { - return null; + if (_document.createEvent) { + evt = _document.createEvent('HTMLEvents'); + evt.initEvent(eventType, true, true); + } else { + evt = _document.createEventObject(); + evt.eventType = eventType; } - return { - name: ex.name, - message: ex.message, - url: getLocationHref(), - stack: stack - }; - } - /** - * Adds information about the first frame to incomplete stack traces. - * Safari and IE require this to get complete data on the first frame. - * @param {Object.} stackInfo Stack trace information from - * one of the compute* methods. - * @param {string} url The URL of the script that caused an error. - * @param {(number|string)} lineNo The line number of the script that - * caused an error. - * @param {string=} message The error generated by the browser, which - * hopefully contains the name of the object that caused the error. - * @return {boolean} Whether or not the stack information was - * augmented. - */ - - - function augmentStackTraceWithInitialElement(stackInfo, url, lineNo, message) { - var initial = { - url: url, - line: lineNo - }; - - if (initial.url && initial.line) { - stackInfo.incomplete = false; - - if (!initial.func) { - initial.func = UNKNOWN_FUNCTION; - } - - if (stackInfo.stack.length > 0) { - if (stackInfo.stack[0].url === initial.url) { - if (stackInfo.stack[0].line === initial.line) { - return false; // already in stack trace - } else if (!stackInfo.stack[0].line && stackInfo.stack[0].func === initial.func) { - stackInfo.stack[0].line = initial.line; - return false; - } - } + for (key in options) + if (hasKey(options, key)) { + evt[key] = options[key]; } - stackInfo.stack.unshift(initial); - stackInfo.partial = true; - return true; + if (_document.createEvent) { + // IE9 if standards + _document.dispatchEvent(evt); } else { - stackInfo.incomplete = true; + // IE8 regardless of Quirks or Standards + // IE9 if quirks + try { + _document.fireEvent('on' + evt.eventType.toLowerCase(), evt); + } catch (e) { + // Do nothing + } } + }, - return false; - } /** - * Computes stack trace information by walking the arguments.caller - * chain at the time the exception occurred. This will cause earlier - * frames to be missed but is the only way to get any stack trace in - * Safari and IE. The top frame is restored by - * {@link augmentStackTraceWithInitialElement}. - * @param {Error} ex - * @return {?Object.} Stack trace information. - */ + * Wraps addEventListener to capture UI breadcrumbs + * @param evtName the event name (e.g. "click") + * @returns {Function} + * @private + */ + _breadcrumbEventHandler: function(evtName) { + var self = this; + return function(evt) { + // reset keypress timeout; e.g. triggering a 'click' after + // a 'keypress' will reset the keypress debounce so that a new + // set of keypresses can be recorded + self._keypressTimeout = null; + // It's possible this handler might trigger multiple times for the same + // event (e.g. event propagation through node ancestors). Ignore if we've + // already captured the event. + if (self._lastCapturedEvent === evt) return; - function computeStackTraceByWalkingCallerChain(ex, depth) { - var functionName = /function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i, - stack = [], - funcs = {}, - recursion = false, - parts, - item; + self._lastCapturedEvent = evt; - for (var curr = computeStackTraceByWalkingCallerChain.caller; curr && !recursion; curr = curr.caller) { - if (curr === computeStackTrace || curr === TraceKit.report) { - // console.log('skipping internal function'); - continue; + // try/catch both: + // - accessing evt.target (see getsentry/raven-js#838, #768) + // - `htmlTreeAsString` because it's complex, and just accessing the DOM incorrectly + // can throw an exception in some circumstances. + var target; + try { + target = htmlTreeAsString(evt.target); + } catch (e) { + target = ''; } - item = { - url: null, - func: UNKNOWN_FUNCTION, - line: null, - column: null - }; - - if (curr.name) { - item.func = curr.name; - } else if (parts = functionName.exec(curr.toString())) { - item.func = parts[1]; - } + self.captureBreadcrumb({ + category: 'ui.' + evtName, // e.g. ui.click, ui.input + message: target + }); + }; + }, - if (typeof item.func === 'undefined') { - try { - item.func = parts.input.substring(0, parts.input.indexOf('{')); - } catch (e) {} - } + /** + * Wraps addEventListener to capture keypress UI events + * @returns {Function} + * @private + */ + _keypressEventHandler: function() { + var self = this, + debounceDuration = 1000; // milliseconds - if (funcs['' + curr]) { - recursion = true; - } else { - funcs['' + curr] = true; + // TODO: if somehow user switches keypress target before + // debounce timeout is triggered, we will only capture + // a single breadcrumb from the FIRST target (acceptable?) + return function(evt) { + var target; + try { + target = evt.target; + } catch (e) { + // just accessing event properties can throw an exception in some rare circumstances + // see: https://github.com/getsentry/raven-js/issues/838 + return; } + var tagName = target && target.tagName; - stack.push(item); - } - - if (depth) { - // console.log('depth is ' + depth); - // console.log('stack is ' + stack.length); - stack.splice(0, depth); - } + // only consider keypress events on actual input elements + // this will disregard keypresses targeting body (e.g. tabbing + // through elements, hotkeys, etc) + if ( + !tagName || + (tagName !== 'INPUT' && tagName !== 'TEXTAREA' && !target.isContentEditable) + ) + return; - var result = { - name: ex.name, - message: ex.message, - url: getLocationHref(), - stack: stack + // record first keypress in a series, but ignore subsequent + // keypresses until debounce clears + var timeout = self._keypressTimeout; + if (!timeout) { + self._breadcrumbEventHandler('input')(evt); + } + clearTimeout(timeout); + self._keypressTimeout = setTimeout(function() { + self._keypressTimeout = null; + }, debounceDuration); }; - augmentStackTraceWithInitialElement(result, ex.sourceURL || ex.fileName, ex.line || ex.lineNumber, ex.message || ex.description); - return result; - } - /** - * Computes a stack trace for an exception. - * @param {Error} ex - * @param {(string|number)=} depth - */ + }, + /** + * Captures a breadcrumb of type "navigation", normalizing input URLs + * @param to the originating URL + * @param from the target URL + * @private + */ + _captureUrlChange: function(from, to) { + var parsedLoc = parseUrl(this._location.href); + var parsedTo = parseUrl(to); + var parsedFrom = parseUrl(from); - function computeStackTrace(ex, depth) { - var stack = null; - depth = depth == null ? 0 : +depth; + // because onpopstate only tells you the "new" (to) value of location.href, and + // not the previous (from) value, we need to track the value of the current URL + // state ourselves + this._lastHref = to; - try { - stack = computeStackTraceFromStackProp(ex); + // Use only the path component of the URL if the URL matches the current + // document (almost all the time when using pushState) + if (parsedLoc.protocol === parsedTo.protocol && parsedLoc.host === parsedTo.host) + to = parsedTo.relative; + if (parsedLoc.protocol === parsedFrom.protocol && parsedLoc.host === parsedFrom.host) + from = parsedFrom.relative; - if (stack) { - return stack; + this.captureBreadcrumb({ + category: 'navigation', + data: { + to: to, + from: from } - } catch (e) { - if (TraceKit.debug) { - throw e; + }); + }, + + _patchFunctionToString: function() { + var self = this; + self._originalFunctionToString = Function.prototype.toString; + // eslint-disable-next-line no-extend-native + Function.prototype.toString = function() { + if (typeof this === 'function' && this.__raven__) { + return self._originalFunctionToString.apply(this.__orig__, arguments); } + return self._originalFunctionToString.apply(this, arguments); + }; + }, + + _unpatchFunctionToString: function() { + if (this._originalFunctionToString) { + // eslint-disable-next-line no-extend-native + Function.prototype.toString = this._originalFunctionToString; } + }, - try { - stack = computeStackTraceByWalkingCallerChain(ex, depth + 1); + /** + * Wrap timer functions and event targets to catch errors and provide + * better metadata. + */ + _instrumentTryCatch: function() { + var self = this; - if (stack) { - return stack; - } - } catch (e) { - if (TraceKit.debug) { - throw e; - } + var wrappedBuiltIns = self._wrappedBuiltIns; + + function wrapTimeFn(orig) { + return function(fn, t) { + // preserve arity + // Make a copy of the arguments to prevent deoptimization + // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments + var args = new Array(arguments.length); + for (var i = 0; i < args.length; ++i) { + args[i] = arguments[i]; + } + var originalCallback = args[0]; + if (isFunction(originalCallback)) { + args[0] = self.wrap(originalCallback); + } + + // IE < 9 doesn't support .call/.apply on setInterval/setTimeout, but it + // also supports only two arguments and doesn't care what this is, so we + // can just call the original function directly. + if (orig.apply) { + return orig.apply(this, args); + } else { + return orig(args[0], args[1]); + } + }; } - return { - name: ex.name, - message: ex.message, - url: getLocationHref() - }; - } + var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; - computeStackTrace.augmentStackTraceWithInitialElement = augmentStackTraceWithInitialElement; - computeStackTrace.computeStackTraceFromStackProp = computeStackTraceFromStackProp; - return computeStackTrace; -}(); + function wrapEventTarget(global) { + var proto = _window[global] && _window[global].prototype; + if (proto && proto.hasOwnProperty && proto.hasOwnProperty('addEventListener')) { + fill( + proto, + 'addEventListener', + function(orig) { + return function(evtName, fn, capture, secure) { + // preserve arity + try { + if (fn && fn.handleEvent) { + fn.handleEvent = self.wrap(fn.handleEvent); + } + } catch (err) { + // can sometimes get 'Permission denied to access property "handle Event' + } -var tracekit = TraceKit; + // More breadcrumb DOM capture ... done here and not in `_instrumentBreadcrumbs` + // so that we don't have more than one wrapper function + var before, clickHandler, keypressHandler; + + if ( + autoBreadcrumbs && + autoBreadcrumbs.dom && + (global === 'EventTarget' || global === 'Node') + ) { + // NOTE: generating multiple handlers per addEventListener invocation, should + // revisit and verify we can just use one (almost certainly) + clickHandler = self._breadcrumbEventHandler('click'); + keypressHandler = self._keypressEventHandler(); + before = function(evt) { + // need to intercept every DOM event in `before` argument, in case that + // same wrapped method is re-used for different events (e.g. mousemove THEN click) + // see #724 + if (!evt) return; + + var eventType; + try { + eventType = evt.type; + } catch (e) { + // just accessing event properties can throw an exception in some rare circumstances + // see: https://github.com/getsentry/raven-js/issues/838 + return; + } + if (eventType === 'click') return clickHandler(evt); + else if (eventType === 'keypress') return keypressHandler(evt); + }; + } + return orig.call( + this, + evtName, + self.wrap(fn, undefined, before), + capture, + secure + ); + }; + }, + wrappedBuiltIns + ); + fill( + proto, + 'removeEventListener', + function(orig) { + return function(evt, fn, capture, secure) { + try { + fn = fn && (fn.__raven_wrapper__ ? fn.__raven_wrapper__ : fn); + } catch (e) { + // ignore, accessing __raven_wrapper__ will throw in some Selenium environments + } + return orig.call(this, evt, fn, capture, secure); + }; + }, + wrappedBuiltIns + ); + } + } -var stringify_1 = createCommonjsModule(function (module, exports) { - /* - json-stringify-safe - Like JSON.stringify, but doesn't throw on circular references. - - Originally forked from https://github.com/isaacs/json-stringify-safe - version 5.0.1 on 3/8/2017 and modified to handle Errors serialization - and IE8 compatibility. Tests for this are in test/vendor. - - ISC license: https://github.com/isaacs/json-stringify-safe/blob/master/LICENSE - */ - exports = module.exports = stringify; - exports.getSerialize = serializer; - - function indexOf(haystack, needle) { - for (var i = 0; i < haystack.length; ++i) { - if (haystack[i] === needle) return i; - } - - return -1; - } + fill(_window, 'setTimeout', wrapTimeFn, wrappedBuiltIns); + fill(_window, 'setInterval', wrapTimeFn, wrappedBuiltIns); + if (_window.requestAnimationFrame) { + fill( + _window, + 'requestAnimationFrame', + function(orig) { + return function(cb) { + return orig(self.wrap(cb)); + }; + }, + wrappedBuiltIns + ); + } - function stringify(obj, replacer, spaces, cycleReplacer) { - return JSON.stringify(obj, serializer(replacer, cycleReplacer), spaces); - } // https://github.com/ftlabs/js-abbreviate/blob/fa709e5f139e7770a71827b1893f22418097fbda/index.js#L95-L106 + // event targets borrowed from bugsnag-js: + // https://github.com/bugsnag/bugsnag-js/blob/master/src/bugsnag.js#L666 + var eventTargets = [ + 'EventTarget', + 'Window', + 'Node', + 'ApplicationCache', + 'AudioTrackList', + 'ChannelMergerNode', + 'CryptoOperation', + 'EventSource', + 'FileReader', + 'HTMLUnknownElement', + 'IDBDatabase', + 'IDBRequest', + 'IDBTransaction', + 'KeyOperation', + 'MediaController', + 'MessagePort', + 'ModalWindow', + 'Notification', + 'SVGElementInstance', + 'Screen', + 'TextTrack', + 'TextTrackCue', + 'TextTrackList', + 'WebSocket', + 'WebSocketWorker', + 'Worker', + 'XMLHttpRequest', + 'XMLHttpRequestEventTarget', + 'XMLHttpRequestUpload' + ]; + for (var i = 0; i < eventTargets.length; i++) { + wrapEventTarget(eventTargets[i]); + } + }, + /** + * Instrument browser built-ins w/ breadcrumb capturing + * - XMLHttpRequests + * - DOM interactions (click/typing) + * - window.location changes + * - console + * + * Can be disabled or individually configured via the `autoBreadcrumbs` config option + */ + _instrumentBreadcrumbs: function() { + var self = this; + var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; - function stringifyError(value) { - var err = { - // These properties are implemented as magical getters and don't show up in for in - stack: value.stack, - message: value.message, - name: value.name - }; + var wrappedBuiltIns = self._wrappedBuiltIns; - for (var i in value) { - if (Object.prototype.hasOwnProperty.call(value, i)) { - err[i] = value[i]; + function wrapProp(prop, xhr) { + if (prop in xhr && isFunction(xhr[prop])) { + fill(xhr, prop, function(orig) { + return self.wrap(orig); + }); // intentionally don't track filled methods on XHR instances } } - return err; - } + if (autoBreadcrumbs.xhr && 'XMLHttpRequest' in _window) { + var xhrproto = _window.XMLHttpRequest && _window.XMLHttpRequest.prototype; + fill( + xhrproto, + 'open', + function(origOpen) { + return function(method, url) { + // preserve arity - function serializer(replacer, cycleReplacer) { - var stack = []; - var keys = []; + // if Sentry key appears in URL, don't capture + if (isString(url) && url.indexOf(self._globalKey) === -1) { + this.__raven_xhr = { + method: method, + url: url, + status_code: null + }; + } - if (cycleReplacer == null) { - cycleReplacer = function cycleReplacer(key, value) { - if (stack[0] === value) { - return '[Circular ~]'; - } + return origOpen.apply(this, arguments); + }; + }, + wrappedBuiltIns + ); + + fill( + xhrproto, + 'send', + function(origSend) { + return function() { + // preserve arity + var xhr = this; - return '[Circular ~.' + keys.slice(0, indexOf(stack, value)).join('.') + ']'; - }; - } + function onreadystatechangeHandler() { + if (xhr.__raven_xhr && xhr.readyState === 4) { + try { + // touching statusCode in some platforms throws + // an exception + xhr.__raven_xhr.status_code = xhr.status; + } catch (e) { + /* do nothing */ + } - return function (key, value) { - if (stack.length > 0) { - var thisPos = indexOf(stack, this); - ~thisPos ? stack.splice(thisPos + 1) : stack.push(this); - ~thisPos ? keys.splice(thisPos, Infinity, key) : keys.push(key); + self.captureBreadcrumb({ + type: 'http', + category: 'xhr', + data: xhr.__raven_xhr + }); + } + } - if (~indexOf(stack, value)) { - value = cycleReplacer.call(this, key, value); - } - } else { - stack.push(value); - } + var props = ['onload', 'onerror', 'onprogress']; + for (var j = 0; j < props.length; j++) { + wrapProp(props[j], xhr); + } - return replacer == null ? value instanceof Error ? stringifyError(value) : value : replacer.call(this, key, value); - }; - } -}); -var stringify_2 = stringify_1.getSerialize; + if ('onreadystatechange' in xhr && isFunction(xhr.onreadystatechange)) { + fill( + xhr, + 'onreadystatechange', + function(orig) { + return self.wrap(orig, undefined, onreadystatechangeHandler); + } /* intentionally don't track this instrumentation */ + ); + } else { + // if onreadystatechange wasn't actually set by the page on this xhr, we + // are free to set our own and capture the breadcrumb + xhr.onreadystatechange = onreadystatechangeHandler; + } -function RavenConfigError(message) { - this.name = 'RavenConfigError'; - this.message = message; -} + return origSend.apply(this, arguments); + }; + }, + wrappedBuiltIns + ); + } -RavenConfigError.prototype = new Error(); -RavenConfigError.prototype.constructor = RavenConfigError; -var configError = RavenConfigError; + if (autoBreadcrumbs.xhr && supportsFetch()) { + fill( + _window, + 'fetch', + function(origFetch) { + return function() { + // preserve arity + // Make a copy of the arguments to prevent deoptimization + // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments + var args = new Array(arguments.length); + for (var i = 0; i < args.length; ++i) { + args[i] = arguments[i]; + } -var wrapMethod = function wrapMethod(console, level, callback) { - var originalConsoleLevel = console[level]; - var originalConsole = console; + var fetchInput = args[0]; + var method = 'GET'; + var url; - if (!(level in console)) { - return; - } + if (typeof fetchInput === 'string') { + url = fetchInput; + } else if ('Request' in _window && fetchInput instanceof _window.Request) { + url = fetchInput.url; + if (fetchInput.method) { + method = fetchInput.method; + } + } else { + url = '' + fetchInput; + } - var sentryLevel = level === 'warn' ? 'warning' : level; + // if Sentry key appears in URL, don't capture, as it's our own request + if (url.indexOf(self._globalKey) !== -1) { + return origFetch.apply(this, args); + } - console[level] = function () { - var args = [].slice.call(arguments); - var msg = utils.safeJoin(args, ' '); - var data = { - level: sentryLevel, - logger: 'console', - extra: { - arguments: args - } - }; + if (args[1] && args[1].method) { + method = args[1].method; + } - if (level === 'assert') { - if (args[0] === false) { - // Default browsers message - msg = 'Assertion failed: ' + (utils.safeJoin(args.slice(1), ' ') || 'console.assert'); - data.extra.arguments = args.slice(1); - callback && callback(msg, data); - } - } else { - callback && callback(msg, data); - } // this fails for some browsers. :( + var fetchData = { + method: method, + url: url, + status_code: null + }; + return origFetch + .apply(this, args) + .then(function(response) { + fetchData.status_code = response.status; + + self.captureBreadcrumb({ + type: 'http', + category: 'fetch', + data: fetchData + }); + + return response; + }) + ['catch'](function(err) { + // if there is an error performing the request + self.captureBreadcrumb({ + type: 'http', + category: 'fetch', + data: fetchData, + level: 'error' + }); + + throw err; + }); + }; + }, + wrappedBuiltIns + ); + } - if (originalConsoleLevel) { - // IE9 doesn't allow calling apply on console functions directly - // See: https://stackoverflow.com/questions/5472938/does-ie9-support-console-log-and-is-it-a-real-function#answer-5473193 - Function.prototype.apply.call(originalConsoleLevel, originalConsole, args); + // Capture breadcrumbs from any click that is unhandled / bubbled up all the way + // to the document. Do this before we instrument addEventListener. + if (autoBreadcrumbs.dom && this._hasDocument) { + if (_document.addEventListener) { + _document.addEventListener('click', self._breadcrumbEventHandler('click'), false); + _document.addEventListener('keypress', self._keypressEventHandler(), false); + } else if (_document.attachEvent) { + // IE8 Compatibility + _document.attachEvent('onclick', self._breadcrumbEventHandler('click')); + _document.attachEvent('onkeypress', self._keypressEventHandler()); + } } - }; -}; -var console$1 = { - wrapMethod: wrapMethod -}; + // record navigation (URL) changes + // NOTE: in Chrome App environment, touching history.pushState, *even inside + // a try/catch block*, will cause Chrome to output an error to console.error + // borrowed from: https://github.com/angular/angular.js/pull/13945/files + var chrome = _window.chrome; + var isChromePackagedApp = chrome && chrome.app && chrome.app.runtime; + var hasPushAndReplaceState = + !isChromePackagedApp && + _window.history && + history.pushState && + history.replaceState; + if (autoBreadcrumbs.location && hasPushAndReplaceState) { + // TODO: remove onpopstate handler on uninstall() + var oldOnPopState = _window.onpopstate; + _window.onpopstate = function() { + var currentHref = self._location.href; + self._captureUrlChange(self._lastHref, currentHref); -/*global XDomainRequest:false */ + if (oldOnPopState) { + return oldOnPopState.apply(this, arguments); + } + }; -var isError = utils.isError; -var isObject = utils.isObject; -var isErrorEvent = utils.isErrorEvent; -var isUndefined = utils.isUndefined; -var isFunction = utils.isFunction; -var isString = utils.isString; -var isArray = utils.isArray; -var isEmptyObject = utils.isEmptyObject; -var each = utils.each; -var objectMerge = utils.objectMerge; -var truncate = utils.truncate; -var objectFrozen = utils.objectFrozen; -var hasKey = utils.hasKey; -var joinRegExp = utils.joinRegExp; -var urlencode = utils.urlencode; -var uuid4 = utils.uuid4; -var htmlTreeAsString = utils.htmlTreeAsString; -var isSameException = utils.isSameException; -var isSameStacktrace = utils.isSameStacktrace; -var parseUrl = utils.parseUrl; -var fill = utils.fill; -var supportsFetch = utils.supportsFetch; -var wrapConsoleMethod = console$1.wrapMethod; -var dsnKeys = 'source protocol user pass host port path'.split(' '); -var dsnPattern = /^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/; + var historyReplacementFunction = function(origHistFunction) { + // note history.pushState.length is 0; intentionally not declaring + // params to preserve 0 arity + return function(/* state, title, url */) { + var url = arguments.length > 2 ? arguments[2] : undefined; -function now() { - return +new Date(); -} // This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) + // url argument is optional + if (url) { + // coerce to string (this is what pushState does) + self._captureUrlChange(self._lastHref, url + ''); + } + return origHistFunction.apply(this, arguments); + }; + }; -var _window$1 = typeof window !== 'undefined' ? window : typeof commonjsGlobal !== 'undefined' ? commonjsGlobal : typeof self !== 'undefined' ? self : {}; + fill(history, 'pushState', historyReplacementFunction, wrappedBuiltIns); + fill(history, 'replaceState', historyReplacementFunction, wrappedBuiltIns); + } -var _document = _window$1.document; -var _navigator = _window$1.navigator; + if (autoBreadcrumbs.console && 'console' in _window && console.log) { + // console + var consoleMethodCallback = function(msg, data) { + self.captureBreadcrumb({ + message: msg, + level: data.level, + category: 'console' + }); + }; -function keepOriginalCallback(original, callback) { - return isFunction(callback) ? function (data) { - return callback(data, original); - } : callback; -} // First, check for JSON support -// If there is no JSON, we no-op the core features of Raven -// since JSON is required to encode the payload + each(['debug', 'info', 'warn', 'error', 'log'], function(_, level) { + wrapConsoleMethod(console, level, consoleMethodCallback); + }); + } + }, + _restoreBuiltIns: function() { + // restore any wrapped builtins + var builtin; + while (this._wrappedBuiltIns.length) { + builtin = this._wrappedBuiltIns.shift(); -function Raven$1() { - this._hasJSON = !!(_typeof(JSON) === 'object' && JSON.stringify); // Raven can run in contexts where there's no document (react-native) + var obj = builtin[0], + name = builtin[1], + orig = builtin[2]; - this._hasDocument = !isUndefined(_document); - this._hasNavigator = !isUndefined(_navigator); - this._lastCapturedException = null; - this._lastData = null; - this._lastEventId = null; - this._globalServer = null; - this._globalKey = null; - this._globalProject = null; - this._globalContext = {}; - this._globalOptions = { - // SENTRY_RELEASE can be injected by https://github.com/getsentry/sentry-webpack-plugin - release: _window$1.SENTRY_RELEASE && _window$1.SENTRY_RELEASE.id, - logger: 'javascript', - ignoreErrors: [], - ignoreUrls: [], - whitelistUrls: [], - includePaths: [], - headers: null, - collectWindowErrors: true, - maxMessageLength: 0, - // By default, truncates URL values to 250 chars - maxUrlLength: 250, - stackTraceLimit: 50, - autoBreadcrumbs: true, - instrument: true, - sampleRate: 1 - }; - this._fetchDefaults = { - method: 'POST', - keepalive: true, - referrerPolicy: 'origin' - }; - this._ignoreOnError = 0; - this._isRavenInstalled = false; - this._originalErrorStackTraceLimit = Error.stackTraceLimit; // capture references to window.console *and* all its methods first - // before the console plugin has a chance to monkey patch + obj[name] = orig; + } + }, - this._originalConsole = _window$1.console || {}; - this._originalConsoleMethods = {}; - this._plugins = []; - this._startTime = now(); - this._wrappedBuiltIns = []; - this._breadcrumbs = []; - this._lastCapturedEvent = null; - this._keypressTimeout; - this._location = _window$1.location; - this._lastHref = this._location && this._location.href; + _restoreConsole: function() { + // eslint-disable-next-line guard-for-in + for (var method in this._originalConsoleMethods) { + this._originalConsole[method] = this._originalConsoleMethods[method]; + } + }, - this._resetBackoff(); // eslint-disable-next-line guard-for-in + _drainPlugins: function() { + var self = this; + // FIX ME TODO + each(this._plugins, function(_, plugin) { + var installer = plugin[0]; + var args = plugin[1]; + installer.apply(self, [self].concat(args)); + }); + }, - for (var method in this._originalConsole) { - this._originalConsoleMethods[method] = this._originalConsole[method]; - } -} -/* - * The core Raven singleton - * - * @this {Raven} - */ + _parseDSN: function(str) { + var m = dsnPattern.exec(str), + dsn = {}, + i = 7; + try { + while (i--) dsn[dsnKeys[i]] = m[i] || ''; + } catch (e) { + throw new RavenConfigError('Invalid DSN: ' + str); + } -Raven$1.prototype = { - // Hardcode version string so that raven source can be loaded directly via - // webpack (using a build step causes webpack #1617). Grunt verifies that - // this value matches package.json during build. - // See: https://github.com/getsentry/raven-js/issues/465 - VERSION: '3.22.2', - debug: false, - TraceKit: tracekit, - // alias to TraceKit + if (dsn.pass && !this._globalOptions.allowSecretKey) { + throw new RavenConfigError( + 'Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key' + ); + } - /* - * Configure Raven with a DSN and extra options - * - * @param {string} dsn The public Sentry DSN - * @param {object} options Set of global options [optional] - * @return {Raven} - */ - config: function config(dsn, options) { - var self = this; + return dsn; + }, - if (self._globalServer) { - this._logDebug('error', 'Error: Raven has already been configured'); + _getGlobalServer: function(uri) { + // assemble the endpoint from the uri pieces + var globalServer = '//' + uri.host + (uri.port ? ':' + uri.port : ''); - return self; + if (uri.protocol) { + globalServer = uri.protocol + ':' + globalServer; } + return globalServer; + }, - if (!dsn) return self; - var globalOptions = self._globalOptions; // merge in options - - if (options) { - each(options, function (key, value) { - // tags and extra are special and need to be put into context - if (key === 'tags' || key === 'extra' || key === 'user') { - self._globalContext[key] = value; - } else { - globalOptions[key] = value; - } - }); + _handleOnErrorStackInfo: function() { + // if we are intentionally ignoring errors via onerror, bail out + if (!this._ignoreOnError) { + this._handleStackInfo.apply(this, arguments); } + }, - self.setDSN(dsn); // "Script error." is hard coded into browsers for errors that it can't read. - // this is the result of a script being pulled in from an external domain and CORS. + _handleStackInfo: function(stackInfo, options) { + var frames = this._prepareFrames(stackInfo, options); - globalOptions.ignoreErrors.push(/^Script error\.?$/); - globalOptions.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/); // join regexp rules into one big rule + this._triggerEvent('handle', { + stackInfo: stackInfo, + options: options + }); - globalOptions.ignoreErrors = joinRegExp(globalOptions.ignoreErrors); - globalOptions.ignoreUrls = globalOptions.ignoreUrls.length ? joinRegExp(globalOptions.ignoreUrls) : false; - globalOptions.whitelistUrls = globalOptions.whitelistUrls.length ? joinRegExp(globalOptions.whitelistUrls) : false; - globalOptions.includePaths = joinRegExp(globalOptions.includePaths); - globalOptions.maxBreadcrumbs = Math.max(0, Math.min(globalOptions.maxBreadcrumbs || 100, 100)); // default and hard limit is 100 + this._processException( + stackInfo.name, + stackInfo.message, + stackInfo.url, + stackInfo.lineno, + frames, + options + ); + }, - var autoBreadcrumbDefaults = { - xhr: true, - console: true, - dom: true, - location: true, - sentry: true - }; - var autoBreadcrumbs = globalOptions.autoBreadcrumbs; + _prepareFrames: function(stackInfo, options) { + var self = this; + var frames = []; + if (stackInfo.stack && stackInfo.stack.length) { + each(stackInfo.stack, function(i, stack) { + var frame = self._normalizeFrame(stack, stackInfo.url); + if (frame) { + frames.push(frame); + } + }); - if ({}.toString.call(autoBreadcrumbs) === '[object Object]') { - autoBreadcrumbs = objectMerge(autoBreadcrumbDefaults, autoBreadcrumbs); - } else if (autoBreadcrumbs !== false) { - autoBreadcrumbs = autoBreadcrumbDefaults; + // e.g. frames captured via captureMessage throw + if (options && options.trimHeadFrames) { + for (var j = 0; j < options.trimHeadFrames && j < frames.length; j++) { + frames[j].in_app = false; + } + } } + frames = frames.slice(0, this._globalOptions.stackTraceLimit); + return frames; + }, - globalOptions.autoBreadcrumbs = autoBreadcrumbs; - var instrumentDefaults = { - tryCatch: true + _normalizeFrame: function(frame, stackInfoUrl) { + // normalize the frames data + var normalized = { + filename: frame.url, + lineno: frame.line, + colno: frame.column, + function: frame.func || '?' }; - var instrument = globalOptions.instrument; - if ({}.toString.call(instrument) === '[object Object]') { - instrument = objectMerge(instrumentDefaults, instrument); - } else if (instrument !== false) { - instrument = instrumentDefaults; + // Case when we don't have any information about the error + // E.g. throwing a string or raw object, instead of an `Error` in Firefox + // Generating synthetic error doesn't add any value here + // + // We should probably somehow let a user know that they should fix their code + if (!frame.url) { + normalized.filename = stackInfoUrl; // fallback to whole stacks url from onerror handler } - globalOptions.instrument = instrument; - tracekit.collectWindowErrors = !!globalOptions.collectWindowErrors; // return for chaining + normalized.in_app = !// determine if an exception came from outside of our app + // first we check the global includePaths list. + ( + (!!this._globalOptions.includePaths.test && + !this._globalOptions.includePaths.test(normalized.filename)) || + // Now we check for fun, if the function name is Raven or TraceKit + /(Raven|TraceKit)\./.test(normalized['function']) || + // finally, we do a last ditch effort and check for raven.min.js + /raven\.(min\.)?js$/.test(normalized.filename) + ); - return self; + return normalized; }, - /* - * Installs a global window.onerror error handler - * to capture and report uncaught exceptions. - * At this point, install() is required to be called due - * to the way TraceKit is set up. - * - * @return {Raven} - */ - install: function install() { - var self = this; + _processException: function(type, message, fileurl, lineno, frames, options) { + var prefixedMessage = (type ? type + ': ' : '') + (message || ''); + if ( + !!this._globalOptions.ignoreErrors.test && + (this._globalOptions.ignoreErrors.test(message) || + this._globalOptions.ignoreErrors.test(prefixedMessage)) + ) { + return; + } - if (self.isSetup() && !self._isRavenInstalled) { - tracekit.report.subscribe(function () { - self._handleOnErrorStackInfo.apply(self, arguments); - }); + var stacktrace; - self._patchFunctionToString(); + if (frames && frames.length) { + fileurl = frames[0].filename || fileurl; + // Sentry expects frames oldest to newest + // and JS sends them as newest to oldest + frames.reverse(); + stacktrace = {frames: frames}; + } else if (fileurl) { + stacktrace = { + frames: [ + { + filename: fileurl, + lineno: lineno, + in_app: true + } + ] + }; + } - if (self._globalOptions.instrument && self._globalOptions.instrument.tryCatch) { - self._instrumentTryCatch(); - } + if ( + !!this._globalOptions.ignoreUrls.test && + this._globalOptions.ignoreUrls.test(fileurl) + ) { + return; + } - if (self._globalOptions.autoBreadcrumbs) self._instrumentBreadcrumbs(); // Install all of the plugins + if ( + !!this._globalOptions.whitelistUrls.test && + !this._globalOptions.whitelistUrls.test(fileurl) + ) { + return; + } - self._drainPlugins(); + var data = objectMerge( + { + // sentry.interfaces.Exception + exception: { + values: [ + { + type: type, + value: message, + stacktrace: stacktrace + } + ] + }, + culprit: fileurl + }, + options + ); - self._isRavenInstalled = true; + // Fire away! + this._send(data); + }, + + _trimPacket: function(data) { + // For now, we only want to truncate the two different messages + // but this could/should be expanded to just trim everything + var max = this._globalOptions.maxMessageLength; + if (data.message) { + data.message = truncate(data.message, max); + } + if (data.exception) { + var exception = data.exception.values[0]; + exception.value = truncate(exception.value, max); } - Error.stackTraceLimit = self._globalOptions.stackTraceLimit; - return this; + var request = data.request; + if (request) { + if (request.url) { + request.url = truncate(request.url, this._globalOptions.maxUrlLength); + } + if (request.Referer) { + request.Referer = truncate(request.Referer, this._globalOptions.maxUrlLength); + } + } + + if (data.breadcrumbs && data.breadcrumbs.values) + this._trimBreadcrumbs(data.breadcrumbs); + + return data; }, - /* - * Set the DSN (can be called multiple time unlike config) - * - * @param {string} dsn The public Sentry DSN - */ - setDSN: function setDSN(dsn) { - var self = this, - uri = self._parseDSN(dsn), - lastSlash = uri.path.lastIndexOf('/'), - path = uri.path.substr(1, lastSlash); + /** + * Truncate breadcrumb values (right now just URLs) + */ + _trimBreadcrumbs: function(breadcrumbs) { + // known breadcrumb properties with urls + // TODO: also consider arbitrary prop values that start with (https?)?:// + var urlProps = ['to', 'from', 'url'], + urlProp, + crumb, + data; - self._dsn = dsn; - self._globalKey = uri.user; - self._globalSecret = uri.pass && uri.pass.substr(1); - self._globalProject = uri.path.substr(lastSlash + 1); - self._globalServer = self._getGlobalServer(uri); - self._globalEndpoint = self._globalServer + '/' + path + 'api/' + self._globalProject + '/store/'; // Reset backoff state since we may be pointing at a - // new project/server + for (var i = 0; i < breadcrumbs.values.length; ++i) { + crumb = breadcrumbs.values[i]; + if ( + !crumb.hasOwnProperty('data') || + !isObject(crumb.data) || + objectFrozen(crumb.data) + ) + continue; - this._resetBackoff(); + data = objectMerge({}, crumb.data); + for (var j = 0; j < urlProps.length; ++j) { + urlProp = urlProps[j]; + if (data.hasOwnProperty(urlProp) && data[urlProp]) { + data[urlProp] = truncate(data[urlProp], this._globalOptions.maxUrlLength); + } + } + breadcrumbs.values[i].data = data; + } }, - /* - * Wrap code within a context so Raven can capture errors - * reliably across domains that is executed immediately. - * - * @param {object} options A specific set of options for this context [optional] - * @param {function} func The callback to be immediately executed within the context - * @param {array} args An array of arguments to be called with the callback [optional] - */ - context: function context(options, func, args) { - if (isFunction(options)) { - args = func || []; - func = options; - options = undefined; + _getHttpData: function() { + if (!this._hasNavigator && !this._hasDocument) return; + var httpData = {}; + + if (this._hasNavigator && _navigator.userAgent) { + httpData.headers = { + 'User-Agent': navigator.userAgent + }; } - return this.wrap(options, func).apply(this, args); + // Check in `window` instead of `document`, as we may be in ServiceWorker environment + if (_window.location && _window.location.href) { + httpData.url = _window.location.href; + } + + if (this._hasDocument && _document.referrer) { + if (!httpData.headers) httpData.headers = {}; + httpData.headers.Referer = _document.referrer; + } + + return httpData; }, - /* - * Wrap code within a context and returns back a new function to be executed - * - * @param {object} options A specific set of options for this context [optional] - * @param {function} func The function to be wrapped in a new context - * @param {function} func A function to call before the try/catch wrapper [optional, private] - * @return {function} The newly wrapped functions with a context - */ - wrap: function wrap(options, func, _before) { - var self = this; // 1 argument has been passed, and it's not a function - // so just return it + _resetBackoff: function() { + this._backoffDuration = 0; + this._backoffStart = null; + }, - if (isUndefined(func) && !isFunction(options)) { - return options; - } // options is optional + _shouldBackoff: function() { + return this._backoffDuration && now() - this._backoffStart < this._backoffDuration; + }, + /** + * Returns true if the in-process data payload matches the signature + * of the previously-sent data + * + * NOTE: This has to be done at this level because TraceKit can generate + * data from window.onerror WITHOUT an exception object (IE8, IE9, + * other old browsers). This can take the form of an "exception" + * data object with a single frame (derived from the onerror args). + */ + _isRepeatData: function(current) { + var last = this._lastData; - if (isFunction(options)) { - func = options; - options = undefined; - } // At this point, we've passed along 2 arguments, and the second one - // is not a function either, so we'll just return the second argument. + if ( + !last || + current.message !== last.message || // defined for captureMessage + current.culprit !== last.culprit // defined for captureException/onerror + ) + return false; + // Stacktrace interface (i.e. from captureMessage) + if (current.stacktrace || last.stacktrace) { + return isSameStacktrace(current.stacktrace, last.stacktrace); + } else if (current.exception || last.exception) { + // Exception interface (i.e. from captureException/onerror) + return isSameException(current.exception, last.exception); + } - if (!isFunction(func)) { - return func; - } // We don't wanna wrap it twice! + return true; + }, + _setBackoffState: function(request) { + // If we are already in a backoff state, don't change anything + if (this._shouldBackoff()) { + return; + } - try { - if (func.__raven__) { - return func; - } // If this has already been wrapped in the past, return that + var status = request.status; + // 400 - project_id doesn't exist or some other fatal + // 401 - invalid/revoked dsn + // 429 - too many requests + if (!(status === 400 || status === 401 || status === 429)) return; - if (func.__raven_wrapper__) { - return func.__raven_wrapper__; + var retry; + try { + // If Retry-After is not in Access-Control-Expose-Headers, most + // browsers will throw an exception trying to access it + if (supportsFetch()) { + retry = request.headers.get('Retry-After'); + } else { + retry = request.getResponseHeader('Retry-After'); } + + // Retry-After is returned in seconds + retry = parseInt(retry, 10) * 1000; } catch (e) { - // Just accessing custom props in some Selenium environments - // can cause a "Permission denied" exception (see raven-js#495). - // Bail on wrapping and return the function as-is (defers to window.onerror). - return func; + /* eslint no-empty:0 */ } - function wrapped() { - var args = [], - i = arguments.length, - deep = !options || options && options.deep !== false; + this._backoffDuration = retry + ? // If Sentry server returned a Retry-After value, use it + retry + : // Otherwise, double the last backoff duration (starts at 1 sec) + this._backoffDuration * 2 || 1000; - if (_before && isFunction(_before)) { - _before.apply(this, arguments); - } // Recursively wrap all of a function's arguments that are - // functions themselves. + this._backoffStart = now(); + }, + _send: function(data) { + var globalOptions = this._globalOptions; - while (i--) { - args[i] = deep ? self.wrap(options, arguments[i]) : arguments[i]; - } + var baseData = { + project: this._globalProject, + logger: globalOptions.logger, + platform: 'javascript' + }, + httpData = this._getHttpData(); - try { - // Attempt to invoke user-land function - // NOTE: If you are a Sentry user, and you are seeing this stack frame, it - // means Raven caught an error invoking your application code. This is - // expected behavior and NOT indicative of a bug with Raven.js. - return func.apply(this, args); - } catch (e) { - self._ignoreNextOnError(); + if (httpData) { + baseData.request = httpData; + } - self.captureException(e, options); - throw e; - } - } // copy over properties of the old function + // HACK: delete `trimHeadFrames` to prevent from appearing in outbound payload + if (data.trimHeadFrames) delete data.trimHeadFrames; + data = objectMerge(baseData, data); - for (var property in func) { - if (hasKey(func, property)) { - wrapped[property] = func[property]; - } + // Merge in the tags and extra separately since objectMerge doesn't handle a deep merge + data.tags = objectMerge(objectMerge({}, this._globalContext.tags), data.tags); + data.extra = objectMerge(objectMerge({}, this._globalContext.extra), data.extra); + + // Send along our own collected metadata with extra + data.extra['session:duration'] = now() - this._startTime; + + if (this._breadcrumbs && this._breadcrumbs.length > 0) { + // intentionally make shallow copy so that additions + // to breadcrumbs aren't accidentally sent in this request + data.breadcrumbs = { + values: [].slice.call(this._breadcrumbs, 0) + }; } - wrapped.prototype = func.prototype; - func.__raven_wrapper__ = wrapped; // Signal that this function has been wrapped/filled already - // for both debugging and to prevent it to being wrapped/filled twice + if (this._globalContext.user) { + // sentry.interfaces.User + data.user = this._globalContext.user; + } - wrapped.__raven__ = true; - wrapped.__orig__ = func; - return wrapped; - }, + // Include the environment if it's defined in globalOptions + if (globalOptions.environment) data.environment = globalOptions.environment; - /* - * Uninstalls the global error handler. - * - * @return {Raven} - */ - uninstall: function uninstall() { - tracekit.report.uninstall(); + // Include the release if it's defined in globalOptions + if (globalOptions.release) data.release = globalOptions.release; - this._unpatchFunctionToString(); + // Include server_name if it's defined in globalOptions + if (globalOptions.serverName) data.server_name = globalOptions.serverName; - this._restoreBuiltIns(); + data = this._sanitizeData(data); - this._restoreConsole(); + // Cleanup empty properties before sending them to the server + Object.keys(data).forEach(function(key) { + if (data[key] == null || data[key] === '' || isEmptyObject(data[key])) { + delete data[key]; + } + }); - Error.stackTraceLimit = this._originalErrorStackTraceLimit; - this._isRavenInstalled = false; - return this; + if (isFunction(globalOptions.dataCallback)) { + data = globalOptions.dataCallback(data) || data; + } + + // Why?????????? + if (!data || isEmptyObject(data)) { + return; + } + + // Check if the request should be filtered or not + if ( + isFunction(globalOptions.shouldSendCallback) && + !globalOptions.shouldSendCallback(data) + ) { + return; + } + + // Backoff state: Sentry server previously responded w/ an error (e.g. 429 - too many requests), + // so drop requests until "cool-off" period has elapsed. + if (this._shouldBackoff()) { + this._logDebug('warn', 'Raven dropped error due to backoff: ', data); + return; + } + + if (typeof globalOptions.sampleRate === 'number') { + if (Math.random() < globalOptions.sampleRate) { + this._sendProcessedPayload(data); + } + } else { + this._sendProcessedPayload(data); + } }, - /* - * Manually capture an exception and send it over to Sentry - * - * @param {error} ex An exception to be logged - * @param {object} options A specific set of options for this error [optional] - * @return {Raven} - */ - captureException: function captureException(ex, options) { - options = objectMerge({ - trimHeadFrames: 0 - }, options ? options : {}); // Cases for sending ex as a message, rather than an exception + _sanitizeData: function(data) { + return sanitize(data, this._globalOptions.sanitizeKeys); + }, - var isNotError = !isError(ex); - var isNotErrorEvent = !isErrorEvent(ex); - var isErrorEventWithoutError = isErrorEvent(ex) && !ex.error; + _getUuid: function() { + return uuid4(); + }, - if (isNotError && isNotErrorEvent || isErrorEventWithoutError) { - return this.captureMessage(ex, objectMerge(options, { - stacktrace: true, - // if we fall back to captureMessage, default to attempting a new trace - trimHeadFrames: options.trimHeadFrames + 1 - })); - } // Get actual Error from ErrorEvent + _sendProcessedPayload: function(data, callback) { + var self = this; + var globalOptions = this._globalOptions; + if (!this.isSetup()) return; - if (isErrorEvent(ex)) ex = ex.error; // Store the raw exception object for potential debugging and introspection + // Try and clean up the packet before sending by truncating long values + data = this._trimPacket(data); - this._lastCapturedException = ex; // TraceKit.report will re-raise any exception passed to it, - // which means you have to wrap it in try/catch. Instead, we - // can wrap it here and only re-raise if TraceKit.report - // raises an exception different from the one we asked to - // report on. + // ideally duplicate error testing should occur *before* dataCallback/shouldSendCallback, + // but this would require copying an un-truncated copy of the data packet, which can be + // arbitrarily deep (extra_data) -- could be worthwhile? will revisit + if (!this._globalOptions.allowDuplicates && this._isRepeatData(data)) { + this._logDebug('warn', 'Raven dropped repeat event: ', data); + return; + } - try { - var stack = tracekit.computeStackTrace(ex); + // Send along an event_id if not explicitly passed. + // This event_id can be used to reference the error within Sentry itself. + // Set lastEventId after we know the error should actually be sent + this._lastEventId = data.event_id || (data.event_id = this._getUuid()); - this._handleStackInfo(stack, options); - } catch (ex1) { - if (ex !== ex1) { - throw ex1; - } + // Store outbound payload after trim + this._lastData = data; + + this._logDebug('debug', 'Raven about to send:', data); + + var auth = { + sentry_version: '7', + sentry_client: 'raven-js/' + this.VERSION, + sentry_key: this._globalKey + }; + + if (this._globalSecret) { + auth.sentry_secret = this._globalSecret; } - return this; - }, + var exception = data.exception && data.exception.values[0]; - /* - * Manually send a message to Sentry - * - * @param {string} msg A plain message to be captured in Sentry - * @param {object} options A specific set of options for this message [optional] - * @return {Raven} - */ - captureMessage: function captureMessage(msg, options) { - // config() automagically converts ignoreErrors from a list to a RegExp so we need to test for an - // early call; we'll error on the side of logging anything called before configuration since it's - // probably something you should see: - if (!!this._globalOptions.ignoreErrors.test && this._globalOptions.ignoreErrors.test(msg)) { - return; + // only capture 'sentry' breadcrumb is autoBreadcrumbs is truthy + if ( + this._globalOptions.autoBreadcrumbs && + this._globalOptions.autoBreadcrumbs.sentry + ) { + this.captureBreadcrumb({ + category: 'sentry', + message: exception + ? (exception.type ? exception.type + ': ' : '') + exception.value + : data.message, + event_id: data.event_id, + level: data.level || 'error' // presume error unless specified + }); } - options = options || {}; - var data = objectMerge({ - message: msg + '' // Make sure it's actually a string + var url = this._globalEndpoint; + (globalOptions.transport || this._makeRequest).call(this, { + url: url, + auth: auth, + data: data, + options: globalOptions, + onSuccess: function success() { + self._resetBackoff(); - }, options); - var ex; // Generate a "synthetic" stack trace from this point. - // NOTE: If you are a Sentry user, and you are seeing this stack frame, it is NOT indicative - // of a bug with Raven.js. Sentry generates synthetic traces either by configuration, - // or if it catches a thrown object without a "stack" property. + self._triggerEvent('success', { + data: data, + src: url + }); + callback && callback(); + }, + onError: function failure(error) { + self._logDebug('error', 'Raven transport failed to send: ', error); - try { - throw new Error(msg); - } catch (ex1) { - ex = ex1; - } // null exception name so `Error` isn't prefixed to msg + if (error.request) { + self._setBackoffState(error.request); + } + self._triggerEvent('failure', { + data: data, + src: url + }); + error = error || new Error('Raven send failed (no additional details provided)'); + callback && callback(error); + } + }); + }, - ex.name = null; - var stack = tracekit.computeStackTrace(ex); // stack[0] is `throw new Error(msg)` call itself, we are interested in the frame that was just before that, stack[1] + _makeRequest: function(opts) { + // Auth is intentionally sent as part of query string (NOT as custom HTTP header) to avoid preflight CORS requests + var url = opts.url + '?' + urlencode(opts.auth); - var initialCall = isArray(stack.stack) && stack.stack[1]; - var fileurl = initialCall && initialCall.url || ''; + var evaluatedHeaders = null; + var evaluatedFetchParameters = {}; - if (!!this._globalOptions.ignoreUrls.test && this._globalOptions.ignoreUrls.test(fileurl)) { - return; + if (opts.options.headers) { + evaluatedHeaders = this._evaluateHash(opts.options.headers); } - if (!!this._globalOptions.whitelistUrls.test && !this._globalOptions.whitelistUrls.test(fileurl)) { - return; + if (opts.options.fetchParameters) { + evaluatedFetchParameters = this._evaluateHash(opts.options.fetchParameters); } - if (this._globalOptions.stacktrace || options && options.stacktrace) { - options = objectMerge({ - // fingerprint on msg, not stack trace (legacy behavior, could be - // revisited) - fingerprint: msg, - // since we know this is a synthetic trace, the top N-most frames - // MUST be from Raven.js, so mark them as in_app later by setting - // trimHeadFrames - trimHeadFrames: (options.trimHeadFrames || 0) + 1 - }, options); + if (supportsFetch()) { + evaluatedFetchParameters.body = stringify(opts.data); - var frames = this._prepareFrames(stack, options); + var defaultFetchOptions = objectMerge({}, this._fetchDefaults); + var fetchOptions = objectMerge(defaultFetchOptions, evaluatedFetchParameters); - data.stacktrace = { - // Sentry expects frames oldest to newest - frames: frames.reverse() - }; - } // Fire away! + if (evaluatedHeaders) { + fetchOptions.headers = evaluatedHeaders; + } + return _window + .fetch(url, fetchOptions) + .then(function(response) { + if (response.ok) { + opts.onSuccess && opts.onSuccess(); + } else { + var error = new Error('Sentry error code: ' + response.status); + // It's called request only to keep compatibility with XHR interface + // and not add more redundant checks in setBackoffState method + error.request = response; + opts.onError && opts.onError(error); + } + }) + ['catch'](function() { + opts.onError && + opts.onError(new Error('Sentry error code: network unavailable')); + }); + } - this._send(data); + var request = _window.XMLHttpRequest && new _window.XMLHttpRequest(); + if (!request) return; - return this; - }, - captureBreadcrumb: function captureBreadcrumb(obj) { - var crumb = objectMerge({ - timestamp: now() / 1000 - }, obj); + // if browser doesn't support CORS (e.g. IE7), we are out of luck + var hasCORS = 'withCredentials' in request || typeof XDomainRequest !== 'undefined'; - if (isFunction(this._globalOptions.breadcrumbCallback)) { - var result = this._globalOptions.breadcrumbCallback(crumb); + if (!hasCORS) return; - if (isObject(result) && !isEmptyObject(result)) { - crumb = result; - } else if (result === false) { - return this; + if ('withCredentials' in request) { + request.onreadystatechange = function() { + if (request.readyState !== 4) { + return; + } else if (request.status === 200) { + opts.onSuccess && opts.onSuccess(); + } else if (opts.onError) { + var err = new Error('Sentry error code: ' + request.status); + err.request = request; + opts.onError(err); + } + }; + } else { + request = new XDomainRequest(); + // xdomainrequest cannot go http -> https (or vice versa), + // so always use protocol relative + url = url.replace(/^https?:/, ''); + + // onreadystatechange not supported by XDomainRequest + if (opts.onSuccess) { + request.onload = opts.onSuccess; + } + if (opts.onError) { + request.onerror = function() { + var err = new Error('Sentry error code: XDomainRequest'); + err.request = request; + opts.onError(err); + }; } } - this._breadcrumbs.push(crumb); + request.open('POST', url); - if (this._breadcrumbs.length > this._globalOptions.maxBreadcrumbs) { - this._breadcrumbs.shift(); + if (evaluatedHeaders) { + each(evaluatedHeaders, function(key, value) { + request.setRequestHeader(key, value); + }); } - return this; + request.send(stringify(opts.data)); }, - addPlugin: function addPlugin(plugin - /*arg1, arg2, ... argN*/ - ) { - var pluginArgs = [].slice.call(arguments, 1); - this._plugins.push([plugin, pluginArgs]); + _evaluateHash: function(hash) { + var evaluated = {}; - if (this._isRavenInstalled) { - this._drainPlugins(); + for (var key in hash) { + if (hash.hasOwnProperty(key)) { + var value = hash[key]; + evaluated[key] = typeof value === 'function' ? value() : value; + } } - return this; + return evaluated; }, - /* - * Set/clear a user to be sent along with the payload. - * - * @param {object} user An object representing user data [optional] - * @return {Raven} - */ - setUserContext: function setUserContext(user) { - // Intentionally do not merge here since that's an unexpected behavior. - this._globalContext.user = user; - return this; + _logDebug: function(level) { + // We allow `Raven.debug` and `Raven.config(DSN, { debug: true })` to not make backward incompatible API change + if ( + this._originalConsoleMethods[level] && + (this.debug || this._globalOptions.debug) + ) { + // In IE<10 console methods do not have their own 'apply' method + Function.prototype.apply.call( + this._originalConsoleMethods[level], + this._originalConsole, + [].slice.call(arguments, 1) + ); + } }, - /* - * Merge extra attributes to be sent along with the payload. - * - * @param {object} extra An object representing extra data [optional] - * @return {Raven} - */ - setExtraContext: function setExtraContext(extra) { - this._mergeContext('extra', extra); + _mergeContext: function(key, context) { + if (isUndefined(context)) { + delete this._globalContext[key]; + } else { + this._globalContext[key] = objectMerge(this._globalContext[key] || {}, context); + } + } +}; - return this; - }, +// Deprecations +Raven.prototype.setUser = Raven.prototype.setUserContext; +Raven.prototype.setReleaseContext = Raven.prototype.setRelease; - /* - * Merge tags to be sent along with the payload. - * - * @param {object} tags An object representing tags [optional] - * @return {Raven} - */ - setTagsContext: function setTagsContext(tags) { - this._mergeContext('tags', tags); +module.exports = Raven; - return this; - }, +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"10":10,"3":3,"4":4,"7":7,"8":8,"9":9}],6:[function(_dereq_,module,exports){ +(function (global){ +/** + * Enforces a single instance of the Raven client, and the + * main entry point for Raven. If you are a consumer of the + * Raven library, you SHOULD load this file (vs raven.js). + **/ - /* - * Clear all of the context. - * - * @return {Raven} - */ - clearContext: function clearContext() { - this._globalContext = {}; - return this; - }, +var RavenConstructor = _dereq_(5); - /* - * Get a copy of the current context. This cannot be mutated. - * - * @return {object} copy of context - */ - getContext: function getContext() { - // lol javascript - return JSON.parse(stringify_1(this._globalContext)); - }, - - /* - * Set environment of application - * - * @param {string} environment Typically something like 'production'. - * @return {Raven} - */ - setEnvironment: function setEnvironment(environment) { - this._globalOptions.environment = environment; - return this; - }, - - /* - * Set release version of application - * - * @param {string} release Typically something like a git SHA to identify version - * @return {Raven} - */ - setRelease: function setRelease(release) { - this._globalOptions.release = release; - return this; - }, +// This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) +var _window = + typeof window !== 'undefined' + ? window + : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; +var _Raven = _window.Raven; - /* - * Set the dataCallback option - * - * @param {function} callback The callback to run which allows the - * data blob to be mutated before sending - * @return {Raven} - */ - setDataCallback: function setDataCallback(callback) { - var original = this._globalOptions.dataCallback; - this._globalOptions.dataCallback = keepOriginalCallback(original, callback); - return this; - }, +var Raven = new RavenConstructor(); - /* - * Set the breadcrumbCallback option - * - * @param {function} callback The callback to run which allows filtering - * or mutating breadcrumbs - * @return {Raven} - */ - setBreadcrumbCallback: function setBreadcrumbCallback(callback) { - var original = this._globalOptions.breadcrumbCallback; - this._globalOptions.breadcrumbCallback = keepOriginalCallback(original, callback); - return this; - }, +/* + * Allow multiple versions of Raven to be installed. + * Strip Raven from the global context and returns the instance. + * + * @return {Raven} + */ +Raven.noConflict = function() { + _window.Raven = _Raven; + return Raven; +}; - /* - * Set the shouldSendCallback option - * - * @param {function} callback The callback to run which allows - * introspecting the blob before sending - * @return {Raven} - */ - setShouldSendCallback: function setShouldSendCallback(callback) { - var original = this._globalOptions.shouldSendCallback; - this._globalOptions.shouldSendCallback = keepOriginalCallback(original, callback); - return this; - }, +Raven.afterLoad(); - /** - * Override the default HTTP transport mechanism that transmits data - * to the Sentry server. - * - * @param {function} transport Function invoked instead of the default - * `makeRequest` handler. - * - * @return {Raven} - */ - setTransport: function setTransport(transport) { - this._globalOptions.transport = transport; - return this; - }, +module.exports = Raven; - /* - * Get the latest raw exception that was captured by Raven. - * - * @return {error} - */ - lastException: function lastException() { - return this._lastCapturedException; - }, +/** + * DISCLAIMER: + * + * Expose `Client` constructor for cases where user want to track multiple "sub-applications" in one larger app. + * It's not meant to be used by a wide audience, so pleaaase make sure that you know what you're doing before using it. + * Accidentally calling `install` multiple times, may result in an unexpected behavior that's very hard to debug. + * + * It's called `Client' to be in-line with Raven Node implementation. + * + * HOWTO: + * + * import Raven from 'raven-js'; + * + * const someAppReporter = new Raven.Client(); + * const someOtherAppReporter = new Raven.Client(); + * + * someAppReporter.config('__DSN__', { + * ...config goes here + * }); + * + * someOtherAppReporter.config('__OTHER_DSN__', { + * ...config goes here + * }); + * + * someAppReporter.captureMessage(...); + * someAppReporter.captureException(...); + * someAppReporter.captureBreadcrumb(...); + * + * someOtherAppReporter.captureMessage(...); + * someOtherAppReporter.captureException(...); + * someOtherAppReporter.captureBreadcrumb(...); + * + * It should "just work". + */ +module.exports.Client = RavenConstructor; - /* - * Get the last event id - * - * @return {string} - */ - lastEventId: function lastEventId() { - return this._lastEventId; - }, +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"5":5}],7:[function(_dereq_,module,exports){ +(function (global){ +var stringify = _dereq_(9); - /* - * Determine if Raven is setup and ready to go. - * - * @return {boolean} - */ - isSetup: function isSetup() { - if (!this._hasJSON) return false; // needs JSON support +var _window = + typeof window !== 'undefined' + ? window + : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; - if (!this._globalServer) { - if (!this.ravenNotConfiguredError) { - this.ravenNotConfiguredError = true; +function isObject(what) { + return typeof what === 'object' && what !== null; +} - this._logDebug('error', 'Error: Raven has not been configured.'); - } +// Yanked from https://git.io/vS8DV re-used under CC0 +// with some tiny modifications +function isError(value) { + switch ({}.toString.call(value)) { + case '[object Error]': + return true; + case '[object Exception]': + return true; + case '[object DOMException]': + return true; + default: + return value instanceof Error; + } +} - return false; - } +function isErrorEvent(value) { + return supportsErrorEvent() && {}.toString.call(value) === '[object ErrorEvent]'; +} - return true; - }, - afterLoad: function afterLoad() { - // TODO: remove window dependence? - // Attempt to initialize Raven on load - var RavenConfig = _window$1.RavenConfig; +function isUndefined(what) { + return what === void 0; +} - if (RavenConfig) { - this.config(RavenConfig.dsn, RavenConfig.config).install(); - } - }, - showReportDialog: function showReportDialog(options) { - if (!_document // doesn't work without a document (React native) - ) return; - options = options || {}; - var lastEventId = options.eventId || this.lastEventId(); +function isFunction(what) { + return typeof what === 'function'; +} - if (!lastEventId) { - throw new configError('Missing eventId'); - } +function isPlainObject(what) { + return Object.prototype.toString.call(what) === '[object Object]'; +} - var dsn = options.dsn || this._dsn; +function isString(what) { + return Object.prototype.toString.call(what) === '[object String]'; +} - if (!dsn) { - throw new configError('Missing DSN'); - } +function isArray(what) { + return Object.prototype.toString.call(what) === '[object Array]'; +} - var encode = encodeURIComponent; - var qs = ''; - qs += '?eventId=' + encode(lastEventId); - qs += '&dsn=' + encode(dsn); - var user = options.user || this._globalContext.user; +function isEmptyObject(what) { + if (!isPlainObject(what)) return false; - if (user) { - if (user.name) qs += '&name=' + encode(user.name); - if (user.email) qs += '&email=' + encode(user.email); + for (var _ in what) { + if (what.hasOwnProperty(_)) { + return false; } + } + return true; +} - var globalServer = this._getGlobalServer(this._parseDSN(dsn)); +function supportsErrorEvent() { + try { + new ErrorEvent(''); // eslint-disable-line no-new + return true; + } catch (e) { + return false; + } +} - var script = _document.createElement('script'); +function supportsFetch() { + if (!('fetch' in _window)) return false; - script.async = true; - script.src = globalServer + '/api/embed/error-page/' + qs; + try { + new Headers(); // eslint-disable-line no-new + new Request(''); // eslint-disable-line no-new + new Response(); // eslint-disable-line no-new + return true; + } catch (e) { + return false; + } +} - (_document.head || _document.body).appendChild(script); - }, +// Despite all stars in the sky saying that Edge supports old draft syntax, aka 'never', 'always', 'origin' and 'default +// https://caniuse.com/#feat=referrer-policy +// It doesn't. And it throw exception instead of ignoring this parameter... +// REF: https://github.com/getsentry/raven-js/issues/1233 +function supportsReferrerPolicy() { + if (!supportsFetch()) return false; - /**** Private functions ****/ - _ignoreNextOnError: function _ignoreNextOnError() { - var self = this; - this._ignoreOnError += 1; - setTimeout(function () { - // onerror should trigger before setTimeout - self._ignoreOnError -= 1; + try { + // eslint-disable-next-line no-new + new Request('pickleRick', { + referrerPolicy: 'origin' }); - }, - _triggerEvent: function _triggerEvent(eventType, options) { - // NOTE: `event` is a native browser thing, so let's avoid conflicting wiht it - var evt, key; - if (!this._hasDocument) return; - options = options || {}; - eventType = 'raven' + eventType.substr(0, 1).toUpperCase() + eventType.substr(1); + return true; + } catch (e) { + return false; + } +} - if (_document.createEvent) { - evt = _document.createEvent('HTMLEvents'); - evt.initEvent(eventType, true, true); - } else { - evt = _document.createEventObject(); - evt.eventType = eventType; +function supportsPromiseRejectionEvent() { + return typeof PromiseRejectionEvent === 'function'; +} + +function wrappedCallback(callback) { + function dataCallback(data, original) { + var normalizedData = callback(data) || data; + if (original) { + return original(normalizedData) || normalizedData; } + return normalizedData; + } - for (key in options) { - if (hasKey(options, key)) { - evt[key] = options[key]; + return dataCallback; +} + +function each(obj, callback) { + var i, j; + + if (isUndefined(obj.length)) { + for (i in obj) { + if (hasKey(obj, i)) { + callback.call(null, i, obj[i]); } } - - if (_document.createEvent) { - // IE9 if standards - _document.dispatchEvent(evt); - } else { - // IE8 regardless of Quirks or Standards - // IE9 if quirks - try { - _document.fireEvent('on' + evt.eventType.toLowerCase(), evt); - } catch (e) {// Do nothing + } else { + j = obj.length; + if (j) { + for (i = 0; i < j; i++) { + callback.call(null, i, obj[i]); } } - }, + } +} - /** - * Wraps addEventListener to capture UI breadcrumbs - * @param evtName the event name (e.g. "click") - * @returns {Function} - * @private - */ - _breadcrumbEventHandler: function _breadcrumbEventHandler(evtName) { - var self = this; - return function (evt) { - // reset keypress timeout; e.g. triggering a 'click' after - // a 'keypress' will reset the keypress debounce so that a new - // set of keypresses can be recorded - self._keypressTimeout = null; // It's possible this handler might trigger multiple times for the same - // event (e.g. event propagation through node ancestors). Ignore if we've - // already captured the event. +function objectMerge(obj1, obj2) { + if (!obj2) { + return obj1; + } + each(obj2, function(key, value) { + obj1[key] = value; + }); + return obj1; +} - if (self._lastCapturedEvent === evt) return; - self._lastCapturedEvent = evt; // try/catch both: - // - accessing evt.target (see getsentry/raven-js#838, #768) - // - `htmlTreeAsString` because it's complex, and just accessing the DOM incorrectly - // can throw an exception in some circumstances. +/** + * This function is only used for react-native. + * react-native freezes object that have already been sent over the + * js bridge. We need this function in order to check if the object is frozen. + * So it's ok that objectFrozen returns false if Object.isFrozen is not + * supported because it's not relevant for other "platforms". See related issue: + * https://github.com/getsentry/react-native-sentry/issues/57 + */ +function objectFrozen(obj) { + if (!Object.isFrozen) { + return false; + } + return Object.isFrozen(obj); +} - var target; +function truncate(str, max) { + if (typeof max !== 'number') { + throw new Error('2nd argument to `truncate` function should be a number'); + } + if (typeof str !== 'string' || max === 0) { + return str; + } + return str.length <= max ? str : str.substr(0, max) + '\u2026'; +} - try { - target = htmlTreeAsString(evt.target); - } catch (e) { - target = ''; - } +/** + * hasKey, a better form of hasOwnProperty + * Example: hasKey(MainHostObject, property) === true/false + * + * @param {Object} host object to check property + * @param {string} key to check + */ +function hasKey(object, key) { + return Object.prototype.hasOwnProperty.call(object, key); +} - self.captureBreadcrumb({ - category: 'ui.' + evtName, - // e.g. ui.click, ui.input - message: target - }); - }; - }, +function joinRegExp(patterns) { + // Combine an array of regular expressions and strings into one large regexp + // Be mad. + var sources = [], + i = 0, + len = patterns.length, + pattern; - /** - * Wraps addEventListener to capture keypress UI events - * @returns {Function} - * @private - */ - _keypressEventHandler: function _keypressEventHandler() { - var self = this, - debounceDuration = 1000; // milliseconds - // TODO: if somehow user switches keypress target before - // debounce timeout is triggered, we will only capture - // a single breadcrumb from the FIRST target (acceptable?) + for (; i < len; i++) { + pattern = patterns[i]; + if (isString(pattern)) { + // If it's a string, we need to escape it + // Taken from: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions + sources.push(pattern.replace(/([.*+?^=!:${}()|\[\]\/\\])/g, '\\$1')); + } else if (pattern && pattern.source) { + // If it's a regexp already, we want to extract the source + sources.push(pattern.source); + } + // Intentionally skip other cases + } + return new RegExp(sources.join('|'), 'i'); +} - return function (evt) { - var target; +function urlencode(o) { + var pairs = []; + each(o, function(key, value) { + pairs.push(encodeURIComponent(key) + '=' + encodeURIComponent(value)); + }); + return pairs.join('&'); +} - try { - target = evt.target; - } catch (e) { - // just accessing event properties can throw an exception in some rare circumstances - // see: https://github.com/getsentry/raven-js/issues/838 - return; - } +// borrowed from https://tools.ietf.org/html/rfc3986#appendix-B +// intentionally using regex and not href parsing trick because React Native and other +// environments where DOM might not be available +function parseUrl(url) { + if (typeof url !== 'string') return {}; + var match = url.match(/^(([^:\/?#]+):)?(\/\/([^\/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?$/); - var tagName = target && target.tagName; // only consider keypress events on actual input elements - // this will disregard keypresses targeting body (e.g. tabbing - // through elements, hotkeys, etc) + // coerce to undefined values to empty string so we don't get 'undefined' + var query = match[6] || ''; + var fragment = match[8] || ''; + return { + protocol: match[2], + host: match[4], + path: match[5], + relative: match[5] + query + fragment // everything minus origin + }; +} +function uuid4() { + var crypto = _window.crypto || _window.msCrypto; - if (!tagName || tagName !== 'INPUT' && tagName !== 'TEXTAREA' && !target.isContentEditable) return; // record first keypress in a series, but ignore subsequent - // keypresses until debounce clears + if (!isUndefined(crypto) && crypto.getRandomValues) { + // Use window.crypto API if available + // eslint-disable-next-line no-undef + var arr = new Uint16Array(8); + crypto.getRandomValues(arr); - var timeout = self._keypressTimeout; + // set 4 in byte 7 + arr[3] = (arr[3] & 0xfff) | 0x4000; + // set 2 most significant bits of byte 9 to '10' + arr[4] = (arr[4] & 0x3fff) | 0x8000; - if (!timeout) { - self._breadcrumbEventHandler('input')(evt); + var pad = function(num) { + var v = num.toString(16); + while (v.length < 4) { + v = '0' + v; } - - clearTimeout(timeout); - self._keypressTimeout = setTimeout(function () { - self._keypressTimeout = null; - }, debounceDuration); + return v; }; - }, - - /** - * Captures a breadcrumb of type "navigation", normalizing input URLs - * @param to the originating URL - * @param from the target URL - * @private - */ - _captureUrlChange: function _captureUrlChange(from, to) { - var parsedLoc = parseUrl(this._location.href); - var parsedTo = parseUrl(to); - var parsedFrom = parseUrl(from); // because onpopstate only tells you the "new" (to) value of location.href, and - // not the previous (from) value, we need to track the value of the current URL - // state ourselves - this._lastHref = to; // Use only the path component of the URL if the URL matches the current - // document (almost all the time when using pushState) - - if (parsedLoc.protocol === parsedTo.protocol && parsedLoc.host === parsedTo.host) to = parsedTo.relative; - if (parsedLoc.protocol === parsedFrom.protocol && parsedLoc.host === parsedFrom.host) from = parsedFrom.relative; - this.captureBreadcrumb({ - category: 'navigation', - data: { - to: to, - from: from - } + return ( + pad(arr[0]) + + pad(arr[1]) + + pad(arr[2]) + + pad(arr[3]) + + pad(arr[4]) + + pad(arr[5]) + + pad(arr[6]) + + pad(arr[7]) + ); + } else { + // http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/2117523#2117523 + return 'xxxxxxxxxxxx4xxxyxxxxxxxxxxxxxxx'.replace(/[xy]/g, function(c) { + var r = (Math.random() * 16) | 0, + v = c === 'x' ? r : (r & 0x3) | 0x8; + return v.toString(16); }); - }, - _patchFunctionToString: function _patchFunctionToString() { - var self = this; - self._originalFunctionToString = Function.prototype.toString; // eslint-disable-next-line no-extend-native + } +} - Function.prototype.toString = function () { - if (typeof this === 'function' && this.__raven__) { - return self._originalFunctionToString.apply(this.__orig__, arguments); - } +/** + * Given a child DOM element, returns a query-selector statement describing that + * and its ancestors + * e.g. [HTMLElement] => body > div > input#foo.btn[name=baz] + * @param elem + * @returns {string} + */ +function htmlTreeAsString(elem) { + /* eslint no-extra-parens:0*/ + var MAX_TRAVERSE_HEIGHT = 5, + MAX_OUTPUT_LEN = 80, + out = [], + height = 0, + len = 0, + separator = ' > ', + sepLength = separator.length, + nextStr; - return self._originalFunctionToString.apply(this, arguments); - }; - }, - _unpatchFunctionToString: function _unpatchFunctionToString() { - if (this._originalFunctionToString) { - // eslint-disable-next-line no-extend-native - Function.prototype.toString = this._originalFunctionToString; + while (elem && height++ < MAX_TRAVERSE_HEIGHT) { + nextStr = htmlElementAsString(elem); + // bail out if + // - nextStr is the 'html' element + // - the length of the string that would be created exceeds MAX_OUTPUT_LEN + // (ignore this limit if we are on the first iteration) + if ( + nextStr === 'html' || + (height > 1 && len + out.length * sepLength + nextStr.length >= MAX_OUTPUT_LEN) + ) { + break; } - }, - /** - * Wrap timer functions and event targets to catch errors and provide - * better metadata. - */ - _instrumentTryCatch: function _instrumentTryCatch() { - var self = this; - var wrappedBuiltIns = self._wrappedBuiltIns; + out.push(nextStr); - function wrapTimeFn(orig) { - return function (fn, t) { - // preserve arity - // Make a copy of the arguments to prevent deoptimization - // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments - var args = new Array(arguments.length); + len += nextStr.length; + elem = elem.parentNode; + } - for (var i = 0; i < args.length; ++i) { - args[i] = arguments[i]; - } + return out.reverse().join(separator); +} - var originalCallback = args[0]; +/** + * Returns a simple, query-selector representation of a DOM element + * e.g. [HTMLElement] => input#foo.btn[name=baz] + * @param HTMLElement + * @returns {string} + */ +function htmlElementAsString(elem) { + var out = [], + className, + classes, + key, + attr, + i; - if (isFunction(originalCallback)) { - args[0] = self.wrap(originalCallback); - } // IE < 9 doesn't support .call/.apply on setInterval/setTimeout, but it - // also supports only two arguments and doesn't care what this is, so we - // can just call the original function directly. + if (!elem || !elem.tagName) { + return ''; + } + out.push(elem.tagName.toLowerCase()); + if (elem.id) { + out.push('#' + elem.id); + } - if (orig.apply) { - return orig.apply(this, args); - } else { - return orig(args[0], args[1]); - } - }; + className = elem.className; + if (className && isString(className)) { + classes = className.split(/\s+/); + for (i = 0; i < classes.length; i++) { + out.push('.' + classes[i]); + } + } + var attrWhitelist = ['type', 'name', 'title', 'alt']; + for (i = 0; i < attrWhitelist.length; i++) { + key = attrWhitelist[i]; + attr = elem.getAttribute(key); + if (attr) { + out.push('[' + key + '="' + attr + '"]'); } + } + return out.join(''); +} - var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; +/** + * Returns true if either a OR b is truthy, but not both + */ +function isOnlyOneTruthy(a, b) { + return !!(!!a ^ !!b); +} - function wrapEventTarget(global) { - var proto = _window$1[global] && _window$1[global].prototype; +/** + * Returns true if both parameters are undefined + */ +function isBothUndefined(a, b) { + return isUndefined(a) && isUndefined(b); +} - if (proto && proto.hasOwnProperty && proto.hasOwnProperty('addEventListener')) { - fill(proto, 'addEventListener', function (orig) { - return function (evtName, fn, capture, secure) { - // preserve arity - try { - if (fn && fn.handleEvent) { - fn.handleEvent = self.wrap(fn.handleEvent); - } - } catch (err) {} // can sometimes get 'Permission denied to access property "handle Event' - // More breadcrumb DOM capture ... done here and not in `_instrumentBreadcrumbs` - // so that we don't have more than one wrapper function - - - var before, clickHandler, keypressHandler; - - if (autoBreadcrumbs && autoBreadcrumbs.dom && (global === 'EventTarget' || global === 'Node')) { - // NOTE: generating multiple handlers per addEventListener invocation, should - // revisit and verify we can just use one (almost certainly) - clickHandler = self._breadcrumbEventHandler('click'); - keypressHandler = self._keypressEventHandler(); +/** + * Returns true if the two input exception interfaces have the same content + */ +function isSameException(ex1, ex2) { + if (isOnlyOneTruthy(ex1, ex2)) return false; - before = function before(evt) { - // need to intercept every DOM event in `before` argument, in case that - // same wrapped method is re-used for different events (e.g. mousemove THEN click) - // see #724 - if (!evt) return; - var eventType; + ex1 = ex1.values[0]; + ex2 = ex2.values[0]; - try { - eventType = evt.type; - } catch (e) { - // just accessing event properties can throw an exception in some rare circumstances - // see: https://github.com/getsentry/raven-js/issues/838 - return; - } + if (ex1.type !== ex2.type || ex1.value !== ex2.value) return false; - if (eventType === 'click') return clickHandler(evt);else if (eventType === 'keypress') return keypressHandler(evt); - }; - } + // in case both stacktraces are undefined, we can't decide so default to false + if (isBothUndefined(ex1.stacktrace, ex2.stacktrace)) return false; - return orig.call(this, evtName, self.wrap(fn, undefined, before), capture, secure); - }; - }, wrappedBuiltIns); - fill(proto, 'removeEventListener', function (orig) { - return function (evt, fn, capture, secure) { - try { - fn = fn && (fn.__raven_wrapper__ ? fn.__raven_wrapper__ : fn); - } catch (e) {// ignore, accessing __raven_wrapper__ will throw in some Selenium environments - } + return isSameStacktrace(ex1.stacktrace, ex2.stacktrace); +} - return orig.call(this, evt, fn, capture, secure); - }; - }, wrappedBuiltIns); - } - } +/** + * Returns true if the two input stack trace interfaces have the same content + */ +function isSameStacktrace(stack1, stack2) { + if (isOnlyOneTruthy(stack1, stack2)) return false; - fill(_window$1, 'setTimeout', wrapTimeFn, wrappedBuiltIns); - fill(_window$1, 'setInterval', wrapTimeFn, wrappedBuiltIns); + var frames1 = stack1.frames; + var frames2 = stack2.frames; - if (_window$1.requestAnimationFrame) { - fill(_window$1, 'requestAnimationFrame', function (orig) { - return function (cb) { - return orig(self.wrap(cb)); - }; - }, wrappedBuiltIns); - } // event targets borrowed from bugsnag-js: - // https://github.com/bugsnag/bugsnag-js/blob/master/src/bugsnag.js#L666 + // Exit early if frame count differs + if (frames1.length !== frames2.length) return false; + // Iterate through every frame; bail out if anything differs + var a, b; + for (var i = 0; i < frames1.length; i++) { + a = frames1[i]; + b = frames2[i]; + if ( + a.filename !== b.filename || + a.lineno !== b.lineno || + a.colno !== b.colno || + a['function'] !== b['function'] + ) + return false; + } + return true; +} - var eventTargets = ['EventTarget', 'Window', 'Node', 'ApplicationCache', 'AudioTrackList', 'ChannelMergerNode', 'CryptoOperation', 'EventSource', 'FileReader', 'HTMLUnknownElement', 'IDBDatabase', 'IDBRequest', 'IDBTransaction', 'KeyOperation', 'MediaController', 'MessagePort', 'ModalWindow', 'Notification', 'SVGElementInstance', 'Screen', 'TextTrack', 'TextTrackCue', 'TextTrackList', 'WebSocket', 'WebSocketWorker', 'Worker', 'XMLHttpRequest', 'XMLHttpRequestEventTarget', 'XMLHttpRequestUpload']; +/** + * Polyfill a method + * @param obj object e.g. `document` + * @param name method name present on object e.g. `addEventListener` + * @param replacement replacement function + * @param track {optional} record instrumentation to an array + */ +function fill(obj, name, replacement, track) { + if (obj == null) return; + var orig = obj[name]; + obj[name] = replacement(orig); + obj[name].__raven__ = true; + obj[name].__orig__ = orig; + if (track) { + track.push([obj, name, orig]); + } +} - for (var i = 0; i < eventTargets.length; i++) { - wrapEventTarget(eventTargets[i]); - } - }, +/** + * Join values in array + * @param input array of values to be joined together + * @param delimiter string to be placed in-between values + * @returns {string} + */ +function safeJoin(input, delimiter) { + if (!isArray(input)) return ''; - /** - * Instrument browser built-ins w/ breadcrumb capturing - * - XMLHttpRequests - * - DOM interactions (click/typing) - * - window.location changes - * - console - * - * Can be disabled or individually configured via the `autoBreadcrumbs` config option - */ - _instrumentBreadcrumbs: function _instrumentBreadcrumbs() { - var self = this; - var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; - var wrappedBuiltIns = self._wrappedBuiltIns; + var output = []; - function wrapProp(prop, xhr) { - if (prop in xhr && isFunction(xhr[prop])) { - fill(xhr, prop, function (orig) { - return self.wrap(orig); - }); // intentionally don't track filled methods on XHR instances - } + for (var i = 0; i < input.length; i++) { + try { + output.push(String(input[i])); + } catch (e) { + output.push('[value cannot be serialized]'); } + } - if (autoBreadcrumbs.xhr && 'XMLHttpRequest' in _window$1) { - var xhrproto = XMLHttpRequest.prototype; - fill(xhrproto, 'open', function (origOpen) { - return function (method, url) { - // preserve arity - // if Sentry key appears in URL, don't capture - if (isString(url) && url.indexOf(self._globalKey) === -1) { - this.__raven_xhr = { - method: method, - url: url, - status_code: null - }; - } + return output.join(delimiter); +} - return origOpen.apply(this, arguments); - }; - }, wrappedBuiltIns); - fill(xhrproto, 'send', function (origSend) { - return function () { - // preserve arity - var xhr = this; - - function onreadystatechangeHandler() { - if (xhr.__raven_xhr && xhr.readyState === 4) { - try { - // touching statusCode in some platforms throws - // an exception - xhr.__raven_xhr.status_code = xhr.status; - } catch (e) { - /* do nothing */ - } +// Default Node.js REPL depth +var MAX_SERIALIZE_EXCEPTION_DEPTH = 3; +// 50kB, as 100kB is max payload size, so half sounds reasonable +var MAX_SERIALIZE_EXCEPTION_SIZE = 50 * 1024; +var MAX_SERIALIZE_KEYS_LENGTH = 40; - self.captureBreadcrumb({ - type: 'http', - category: 'xhr', - data: xhr.__raven_xhr - }); - } - } +function utf8Length(value) { + return ~-encodeURI(value).split(/%..|./).length; +} - var props = ['onload', 'onerror', 'onprogress']; +function jsonSize(value) { + return utf8Length(JSON.stringify(value)); +} - for (var j = 0; j < props.length; j++) { - wrapProp(props[j], xhr); - } +function serializeValue(value) { + if (typeof value === 'string') { + var maxLength = 40; + return truncate(value, maxLength); + } else if ( + typeof value === 'number' || + typeof value === 'boolean' || + typeof value === 'undefined' + ) { + return value; + } - if ('onreadystatechange' in xhr && isFunction(xhr.onreadystatechange)) { - fill(xhr, 'onreadystatechange', function (orig) { - return self.wrap(orig, undefined, onreadystatechangeHandler); - } - /* intentionally don't track this instrumentation */ - ); - } else { - // if onreadystatechange wasn't actually set by the page on this xhr, we - // are free to set our own and capture the breadcrumb - xhr.onreadystatechange = onreadystatechangeHandler; - } + var type = Object.prototype.toString.call(value); - return origSend.apply(this, arguments); - }; - }, wrappedBuiltIns); - } + // Node.js REPL notation + if (type === '[object Object]') return '[Object]'; + if (type === '[object Array]') return '[Array]'; + if (type === '[object Function]') + return value.name ? '[Function: ' + value.name + ']' : '[Function]'; - if (autoBreadcrumbs.xhr && supportsFetch()) { - fill(_window$1, 'fetch', function (origFetch) { - return function () { - // preserve arity - // Make a copy of the arguments to prevent deoptimization - // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments - var args = new Array(arguments.length); - - for (var i = 0; i < args.length; ++i) { - args[i] = arguments[i]; - } + return value; +} - var fetchInput = args[0]; - var method = 'GET'; - var url; +function serializeObject(value, depth) { + if (depth === 0) return serializeValue(value); + + if (isPlainObject(value)) { + return Object.keys(value).reduce(function(acc, key) { + acc[key] = serializeObject(value[key], depth - 1); + return acc; + }, {}); + } else if (Array.isArray(value)) { + return value.map(function(val) { + return serializeObject(val, depth - 1); + }); + } - if (typeof fetchInput === 'string') { - url = fetchInput; - } else if ('Request' in _window$1 && fetchInput instanceof _window$1.Request) { - url = fetchInput.url; + return serializeValue(value); +} - if (fetchInput.method) { - method = fetchInput.method; - } - } else { - url = '' + fetchInput; - } // if Sentry key appears in URL, don't capture, as it's our own request +function serializeException(ex, depth, maxSize) { + if (!isPlainObject(ex)) return ex; + depth = typeof depth !== 'number' ? MAX_SERIALIZE_EXCEPTION_DEPTH : depth; + maxSize = typeof depth !== 'number' ? MAX_SERIALIZE_EXCEPTION_SIZE : maxSize; - if (url.indexOf(self._globalKey) !== -1) { - return origFetch.apply(this, args); - } + var serialized = serializeObject(ex, depth); - if (args[1] && args[1].method) { - method = args[1].method; - } + if (jsonSize(stringify(serialized)) > maxSize) { + return serializeException(ex, depth - 1); + } - var fetchData = { - method: method, - url: url, - status_code: null - }; - return origFetch.apply(this, args).then(function (response) { - fetchData.status_code = response.status; - self.captureBreadcrumb({ - type: 'http', - category: 'fetch', - data: fetchData - }); - return response; - }); - }; - }, wrappedBuiltIns); - } // Capture breadcrumbs from any click that is unhandled / bubbled up all the way - // to the document. Do this before we instrument addEventListener. + return serialized; +} +function serializeKeysForMessage(keys, maxLength) { + if (typeof keys === 'number' || typeof keys === 'string') return keys.toString(); + if (!Array.isArray(keys)) return ''; - if (autoBreadcrumbs.dom && this._hasDocument) { - if (_document.addEventListener) { - _document.addEventListener('click', self._breadcrumbEventHandler('click'), false); + keys = keys.filter(function(key) { + return typeof key === 'string'; + }); + if (keys.length === 0) return '[object has no keys]'; - _document.addEventListener('keypress', self._keypressEventHandler(), false); - } else { - // IE8 Compatibility - _document.attachEvent('onclick', self._breadcrumbEventHandler('click')); + maxLength = typeof maxLength !== 'number' ? MAX_SERIALIZE_KEYS_LENGTH : maxLength; + if (keys[0].length >= maxLength) return keys[0]; - _document.attachEvent('onkeypress', self._keypressEventHandler()); - } - } // record navigation (URL) changes - // NOTE: in Chrome App environment, touching history.pushState, *even inside - // a try/catch block*, will cause Chrome to output an error to console.error - // borrowed from: https://github.com/angular/angular.js/pull/13945/files + for (var usedKeys = keys.length; usedKeys > 0; usedKeys--) { + var serialized = keys.slice(0, usedKeys).join(', '); + if (serialized.length > maxLength) continue; + if (usedKeys === keys.length) return serialized; + return serialized + '\u2026'; + } + return ''; +} - var chrome = _window$1.chrome; - var isChromePackagedApp = chrome && chrome.app && chrome.app.runtime; - var hasPushAndReplaceState = !isChromePackagedApp && _window$1.history && history.pushState && history.replaceState; +function sanitize(input, sanitizeKeys) { + if (!isArray(sanitizeKeys) || (isArray(sanitizeKeys) && sanitizeKeys.length === 0)) + return input; - if (autoBreadcrumbs.location && hasPushAndReplaceState) { - // TODO: remove onpopstate handler on uninstall() - var oldOnPopState = _window$1.onpopstate; + var sanitizeRegExp = joinRegExp(sanitizeKeys); + var sanitizeMask = '********'; + var safeInput; - _window$1.onpopstate = function () { - var currentHref = self._location.href; + try { + safeInput = JSON.parse(stringify(input)); + } catch (o_O) { + return input; + } - self._captureUrlChange(self._lastHref, currentHref); + function sanitizeWorker(workerInput) { + if (isArray(workerInput)) { + return workerInput.map(function(val) { + return sanitizeWorker(val); + }); + } - if (oldOnPopState) { - return oldOnPopState.apply(this, arguments); + if (isPlainObject(workerInput)) { + return Object.keys(workerInput).reduce(function(acc, k) { + if (sanitizeRegExp.test(k)) { + acc[k] = sanitizeMask; + } else { + acc[k] = sanitizeWorker(workerInput[k]); } - }; - - var historyReplacementFunction = function historyReplacementFunction(origHistFunction) { - // note history.pushState.length is 0; intentionally not declaring - // params to preserve 0 arity - return function () - /* state, title, url */ - { - var url = arguments.length > 2 ? arguments[2] : undefined; // url argument is optional - - if (url) { - // coerce to string (this is what pushState does) - self._captureUrlChange(self._lastHref, url + ''); - } - - return origHistFunction.apply(this, arguments); - }; - }; - - fill(history, 'pushState', historyReplacementFunction, wrappedBuiltIns); - fill(history, 'replaceState', historyReplacementFunction, wrappedBuiltIns); + return acc; + }, {}); } - if (autoBreadcrumbs.console && 'console' in _window$1 && console.log) { - // console - var consoleMethodCallback = function consoleMethodCallback(msg, data) { - self.captureBreadcrumb({ - message: msg, - level: data.level, - category: 'console' - }); - }; - - each(['debug', 'info', 'warn', 'error', 'log'], function (_, level) { - wrapConsoleMethod(console, level, consoleMethodCallback); - }); - } - }, - _restoreBuiltIns: function _restoreBuiltIns() { - // restore any wrapped builtins - var builtin; + return workerInput; + } - while (this._wrappedBuiltIns.length) { - builtin = this._wrappedBuiltIns.shift(); - var obj = builtin[0], - name = builtin[1], - orig = builtin[2]; - obj[name] = orig; - } - }, - _restoreConsole: function _restoreConsole() { - // eslint-disable-next-line guard-for-in - for (var method in this._originalConsoleMethods) { - this._originalConsole[method] = this._originalConsoleMethods[method]; - } - }, - _drainPlugins: function _drainPlugins() { - var self = this; // FIX ME TODO + return sanitizeWorker(safeInput); +} - each(this._plugins, function (_, plugin) { - var installer = plugin[0]; - var args = plugin[1]; - installer.apply(self, [self].concat(args)); - }); - }, - _parseDSN: function _parseDSN(str) { - var m = dsnPattern.exec(str), - dsn = {}, - i = 7; +module.exports = { + isObject: isObject, + isError: isError, + isErrorEvent: isErrorEvent, + isUndefined: isUndefined, + isFunction: isFunction, + isPlainObject: isPlainObject, + isString: isString, + isArray: isArray, + isEmptyObject: isEmptyObject, + supportsErrorEvent: supportsErrorEvent, + supportsFetch: supportsFetch, + supportsReferrerPolicy: supportsReferrerPolicy, + supportsPromiseRejectionEvent: supportsPromiseRejectionEvent, + wrappedCallback: wrappedCallback, + each: each, + objectMerge: objectMerge, + truncate: truncate, + objectFrozen: objectFrozen, + hasKey: hasKey, + joinRegExp: joinRegExp, + urlencode: urlencode, + uuid4: uuid4, + htmlTreeAsString: htmlTreeAsString, + htmlElementAsString: htmlElementAsString, + isSameException: isSameException, + isSameStacktrace: isSameStacktrace, + parseUrl: parseUrl, + fill: fill, + safeJoin: safeJoin, + serializeException: serializeException, + serializeKeysForMessage: serializeKeysForMessage, + sanitize: sanitize +}; - try { - while (i--) { - dsn[dsnKeys[i]] = m[i] || ''; - } - } catch (e) { - throw new configError('Invalid DSN: ' + str); - } +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"9":9}],8:[function(_dereq_,module,exports){ +(function (global){ +var utils = _dereq_(7); - if (dsn.pass && !this._globalOptions.allowSecretKey) { - throw new configError('Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key'); - } +/* + TraceKit - Cross brower stack traces - return dsn; - }, - _getGlobalServer: function _getGlobalServer(uri) { - // assemble the endpoint from the uri pieces - var globalServer = '//' + uri.host + (uri.port ? ':' + uri.port : ''); + This was originally forked from github.com/occ/TraceKit, but has since been + largely re-written and is now maintained as part of raven-js. Tests for + this are in test/vendor. - if (uri.protocol) { - globalServer = uri.protocol + ':' + globalServer; - } + MIT license +*/ - return globalServer; - }, - _handleOnErrorStackInfo: function _handleOnErrorStackInfo() { - // if we are intentionally ignoring errors via onerror, bail out - if (!this._ignoreOnError) { - this._handleStackInfo.apply(this, arguments); - } - }, - _handleStackInfo: function _handleStackInfo(stackInfo, options) { - var frames = this._prepareFrames(stackInfo, options); +var TraceKit = { + collectWindowErrors: true, + debug: false +}; - this._triggerEvent('handle', { - stackInfo: stackInfo, - options: options - }); +// This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) +var _window = + typeof window !== 'undefined' + ? window + : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; - this._processException(stackInfo.name, stackInfo.message, stackInfo.url, stackInfo.lineno, frames, options); - }, - _prepareFrames: function _prepareFrames(stackInfo, options) { - var self = this; - var frames = []; +// global reference to slice +var _slice = [].slice; +var UNKNOWN_FUNCTION = '?'; - if (stackInfo.stack && stackInfo.stack.length) { - each(stackInfo.stack, function (i, stack) { - var frame = self._normalizeFrame(stack, stackInfo.url); +// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error#Error_types +var ERROR_TYPES_RE = /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/; - if (frame) { - frames.push(frame); - } - }); // e.g. frames captured via captureMessage throw +function getLocationHref() { + if (typeof document === 'undefined' || document.location == null) return ''; - if (options && options.trimHeadFrames) { - for (var j = 0; j < options.trimHeadFrames && j < frames.length; j++) { - frames[j].in_app = false; - } - } - } + return document.location.href; +} - frames = frames.slice(0, this._globalOptions.stackTraceLimit); - return frames; - }, - _normalizeFrame: function _normalizeFrame(frame, stackInfoUrl) { - // normalize the frames data - var normalized = { - filename: frame.url, - lineno: frame.line, - colno: frame.column, - function: frame.func || '?' - }; // Case when we don't have any information about the error - // E.g. throwing a string or raw object, instead of an `Error` in Firefox - // Generating synthetic error doesn't add any value here - // - // We should probably somehow let a user know that they should fix their code +/** + * TraceKit.report: cross-browser processing of unhandled exceptions + * + * Syntax: + * TraceKit.report.subscribe(function(stackInfo) { ... }) + * TraceKit.report.unsubscribe(function(stackInfo) { ... }) + * TraceKit.report(exception) + * try { ...code... } catch(ex) { TraceKit.report(ex); } + * + * Supports: + * - Firefox: full stack trace with line numbers, plus column number + * on top frame; column number is not guaranteed + * - Opera: full stack trace with line and column numbers + * - Chrome: full stack trace with line and column numbers + * - Safari: line and column number for the top frame only; some frames + * may be missing, and column number is not guaranteed + * - IE: line and column number for the top frame only; some frames + * may be missing, and column number is not guaranteed + * + * In theory, TraceKit should work on all of the following versions: + * - IE5.5+ (only 8.0 tested) + * - Firefox 0.9+ (only 3.5+ tested) + * - Opera 7+ (only 10.50 tested; versions 9 and earlier may require + * Exceptions Have Stacktrace to be enabled in opera:config) + * - Safari 3+ (only 4+ tested) + * - Chrome 1+ (only 5+ tested) + * - Konqueror 3.5+ (untested) + * + * Requires TraceKit.computeStackTrace. + * + * Tries to catch all unhandled exceptions and report them to the + * subscribed handlers. Please note that TraceKit.report will rethrow the + * exception. This is REQUIRED in order to get a useful stack trace in IE. + * If the exception does not reach the top of the browser, you will only + * get a stack trace from the point where TraceKit.report was called. + * + * Handlers receive a stackInfo object as described in the + * TraceKit.computeStackTrace docs. + */ +TraceKit.report = (function reportModuleWrapper() { + var handlers = [], + lastArgs = null, + lastException = null, + lastExceptionStack = null; - if (!frame.url) { - normalized.filename = stackInfoUrl; // fallback to whole stacks url from onerror handler + /** + * Add a crash handler. + * @param {Function} handler + */ + function subscribe(handler) { + installGlobalHandler(); + handlers.push(handler); + } + + /** + * Remove a crash handler. + * @param {Function} handler + */ + function unsubscribe(handler) { + for (var i = handlers.length - 1; i >= 0; --i) { + if (handlers[i] === handler) { + handlers.splice(i, 1); + } } + } - normalized.in_app = !( // determine if an exception came from outside of our app - // first we check the global includePaths list. - !!this._globalOptions.includePaths.test && !this._globalOptions.includePaths.test(normalized.filename) || // Now we check for fun, if the function name is Raven or TraceKit - /(Raven|TraceKit)\./.test(normalized['function']) || // finally, we do a last ditch effort and check for raven.min.js - /raven\.(min\.)?js$/.test(normalized.filename)); - return normalized; - }, - _processException: function _processException(type, message, fileurl, lineno, frames, options) { - var prefixedMessage = (type ? type + ': ' : '') + (message || ''); + /** + * Remove all crash handlers. + */ + function unsubscribeAll() { + uninstallGlobalHandler(); + handlers = []; + } - if (!!this._globalOptions.ignoreErrors.test && (this._globalOptions.ignoreErrors.test(message) || this._globalOptions.ignoreErrors.test(prefixedMessage))) { + /** + * Dispatch stack information to all handlers. + * @param {Object.} stack + */ + function notifyHandlers(stack, isWindowError) { + var exception = null; + if (isWindowError && !TraceKit.collectWindowErrors) { return; } + for (var i in handlers) { + if (handlers.hasOwnProperty(i)) { + try { + handlers[i].apply(null, [stack].concat(_slice.call(arguments, 2))); + } catch (inner) { + exception = inner; + } + } + } - var stacktrace; + if (exception) { + throw exception; + } + } - if (frames && frames.length) { - fileurl = frames[0].filename || fileurl; // Sentry expects frames oldest to newest - // and JS sends them as newest to oldest + var _oldOnerrorHandler, _onErrorHandlerInstalled; - frames.reverse(); - stacktrace = { - frames: frames - }; - } else if (fileurl) { - stacktrace = { - frames: [{ - filename: fileurl, - lineno: lineno, - in_app: true - }] - }; - } + /** + * Ensures all global unhandled exceptions are recorded. + * Supported by Gecko and IE. + * @param {string} msg Error message. + * @param {string} url URL of script that generated the exception. + * @param {(number|string)} lineNo The line number at which the error + * occurred. + * @param {?(number|string)} colNo The column number at which the error + * occurred. + * @param {?Error} ex The actual Error object. + */ + function traceKitWindowOnError(msg, url, lineNo, colNo, ex) { + var stack = null; + // If 'ex' is ErrorEvent, get real Error from inside + var exception = utils.isErrorEvent(ex) ? ex.error : ex; + // If 'msg' is ErrorEvent, get real message from inside + var message = utils.isErrorEvent(msg) ? msg.message : msg; - if (!!this._globalOptions.ignoreUrls.test && this._globalOptions.ignoreUrls.test(fileurl)) { - return; - } + if (lastExceptionStack) { + TraceKit.computeStackTrace.augmentStackTraceWithInitialElement( + lastExceptionStack, + url, + lineNo, + message + ); + processLastException(); + } else if (exception && utils.isError(exception)) { + // non-string `exception` arg; attempt to extract stack trace - if (!!this._globalOptions.whitelistUrls.test && !this._globalOptions.whitelistUrls.test(fileurl)) { - return; - } + // New chrome and blink send along a real error object + // Let's just report that like a normal error. + // See: https://mikewest.org/2013/08/debugging-runtime-errors-with-window-onerror + stack = TraceKit.computeStackTrace(exception); + notifyHandlers(stack, true); + } else { + var location = { + url: url, + line: lineNo, + column: colNo + }; - var data = objectMerge({ - // sentry.interfaces.Exception - exception: { - values: [{ - type: type, - value: message, - stacktrace: stacktrace - }] - }, - culprit: fileurl - }, options); // Fire away! + var name = undefined; + var groups; - this._send(data); - }, - _trimPacket: function _trimPacket(data) { - // For now, we only want to truncate the two different messages - // but this could/should be expanded to just trim everything - var max = this._globalOptions.maxMessageLength; + if ({}.toString.call(message) === '[object String]') { + var groups = message.match(ERROR_TYPES_RE); + if (groups) { + name = groups[1]; + message = groups[2]; + } + } - if (data.message) { - data.message = truncate(data.message, max); + location.func = UNKNOWN_FUNCTION; + + stack = { + name: name, + message: message, + url: getLocationHref(), + stack: [location] + }; + notifyHandlers(stack, true); } - if (data.exception) { - var exception = data.exception.values[0]; - exception.value = truncate(exception.value, max); + if (_oldOnerrorHandler) { + return _oldOnerrorHandler.apply(this, arguments); } - var request = data.request; + return false; + } - if (request) { - if (request.url) { - request.url = truncate(request.url, this._globalOptions.maxUrlLength); - } + function installGlobalHandler() { + if (_onErrorHandlerInstalled) { + return; + } + _oldOnerrorHandler = _window.onerror; + _window.onerror = traceKitWindowOnError; + _onErrorHandlerInstalled = true; + } - if (request.Referer) { - request.Referer = truncate(request.Referer, this._globalOptions.maxUrlLength); - } + function uninstallGlobalHandler() { + if (!_onErrorHandlerInstalled) { + return; } + _window.onerror = _oldOnerrorHandler; + _onErrorHandlerInstalled = false; + _oldOnerrorHandler = undefined; + } - if (data.breadcrumbs && data.breadcrumbs.values) this._trimBreadcrumbs(data.breadcrumbs); - return data; - }, + function processLastException() { + var _lastExceptionStack = lastExceptionStack, + _lastArgs = lastArgs; + lastArgs = null; + lastExceptionStack = null; + lastException = null; + notifyHandlers.apply(null, [_lastExceptionStack, false].concat(_lastArgs)); + } /** - * Truncate breadcrumb values (right now just URLs) + * Reports an unhandled Error to TraceKit. + * @param {Error} ex + * @param {?boolean} rethrow If false, do not re-throw the exception. + * Only used for window.onerror to not cause an infinite loop of + * rethrowing. */ - _trimBreadcrumbs: function _trimBreadcrumbs(breadcrumbs) { - // known breadcrumb properties with urls - // TODO: also consider arbitrary prop values that start with (https?)?:// - var urlProps = ['to', 'from', 'url'], - urlProp, - crumb, - data; - - for (var i = 0; i < breadcrumbs.values.length; ++i) { - crumb = breadcrumbs.values[i]; - if (!crumb.hasOwnProperty('data') || !isObject(crumb.data) || objectFrozen(crumb.data)) continue; - data = objectMerge({}, crumb.data); - - for (var j = 0; j < urlProps.length; ++j) { - urlProp = urlProps[j]; - - if (data.hasOwnProperty(urlProp) && data[urlProp]) { - data[urlProp] = truncate(data[urlProp], this._globalOptions.maxUrlLength); - } + function report(ex, rethrow) { + var args = _slice.call(arguments, 1); + if (lastExceptionStack) { + if (lastException === ex) { + return; // already caught by an inner catch block, ignore + } else { + processLastException(); } - - breadcrumbs.values[i].data = data; } - }, - _getHttpData: function _getHttpData() { - if (!this._hasNavigator && !this._hasDocument) return; - var httpData = {}; - if (this._hasNavigator && _navigator.userAgent) { - httpData.headers = { - 'User-Agent': navigator.userAgent - }; - } // Check in `window` instead of `document`, as we may be in ServiceWorker environment + var stack = TraceKit.computeStackTrace(ex); + lastExceptionStack = stack; + lastException = ex; + lastArgs = args; + // If the stack trace is incomplete, wait for 2 seconds for + // slow slow IE to see if onerror occurs or not before reporting + // this exception; otherwise, we will end up with an incomplete + // stack trace + setTimeout(function() { + if (lastException === ex) { + processLastException(); + } + }, stack.incomplete ? 2000 : 0); - if (_window$1.location && _window$1.location.href) { - httpData.url = _window$1.location.href; + if (rethrow !== false) { + throw ex; // re-throw to propagate to the top level (and cause window.onerror) } + } - if (this._hasDocument && _document.referrer) { - if (!httpData.headers) httpData.headers = {}; - httpData.headers.Referer = _document.referrer; - } + report.subscribe = subscribe; + report.unsubscribe = unsubscribe; + report.uninstall = unsubscribeAll; + return report; +})(); - return httpData; - }, - _resetBackoff: function _resetBackoff() { - this._backoffDuration = 0; - this._backoffStart = null; - }, - _shouldBackoff: function _shouldBackoff() { - return this._backoffDuration && now() - this._backoffStart < this._backoffDuration; - }, +/** + * TraceKit.computeStackTrace: cross-browser stack traces in JavaScript + * + * Syntax: + * s = TraceKit.computeStackTrace(exception) // consider using TraceKit.report instead (see below) + * Returns: + * s.name - exception name + * s.message - exception message + * s.stack[i].url - JavaScript or HTML file URL + * s.stack[i].func - function name, or empty for anonymous functions (if guessing did not work) + * s.stack[i].args - arguments passed to the function, if known + * s.stack[i].line - line number, if known + * s.stack[i].column - column number, if known + * + * Supports: + * - Firefox: full stack trace with line numbers and unreliable column + * number on top frame + * - Opera 10: full stack trace with line and column numbers + * - Opera 9-: full stack trace with line numbers + * - Chrome: full stack trace with line and column numbers + * - Safari: line and column number for the topmost stacktrace element + * only + * - IE: no line numbers whatsoever + * + * Tries to guess names of anonymous functions by looking for assignments + * in the source code. In IE and Safari, we have to guess source file names + * by searching for function bodies inside all page scripts. This will not + * work for scripts that are loaded cross-domain. + * Here be dragons: some function names may be guessed incorrectly, and + * duplicate functions may be mismatched. + * + * TraceKit.computeStackTrace should only be used for tracing purposes. + * Logging of unhandled exceptions should be done with TraceKit.report, + * which builds on top of TraceKit.computeStackTrace and provides better + * IE support by utilizing the window.onerror event to retrieve information + * about the top of the stack. + * + * Note: In IE and Safari, no stack trace is recorded on the Error object, + * so computeStackTrace instead walks its *own* chain of callers. + * This means that: + * * in Safari, some methods may be missing from the stack trace; + * * in IE, the topmost function in the stack trace will always be the + * caller of computeStackTrace. + * + * This is okay for tracing (because you are likely to be calling + * computeStackTrace from the function you want to be the topmost element + * of the stack trace anyway), but not okay for logging unhandled + * exceptions (because your catch block will likely be far away from the + * inner function that actually caused the exception). + * + */ +TraceKit.computeStackTrace = (function computeStackTraceWrapper() { + // Contents of Exception in various browsers. + // + // SAFARI: + // ex.message = Can't find variable: qq + // ex.line = 59 + // ex.sourceId = 580238192 + // ex.sourceURL = http://... + // ex.expressionBeginOffset = 96 + // ex.expressionCaretOffset = 98 + // ex.expressionEndOffset = 98 + // ex.name = ReferenceError + // + // FIREFOX: + // ex.message = qq is not defined + // ex.fileName = http://... + // ex.lineNumber = 59 + // ex.columnNumber = 69 + // ex.stack = ...stack trace... (see the example below) + // ex.name = ReferenceError + // + // CHROME: + // ex.message = qq is not defined + // ex.name = ReferenceError + // ex.type = not_defined + // ex.arguments = ['aa'] + // ex.stack = ...stack trace... + // + // INTERNET EXPLORER: + // ex.message = ... + // ex.name = ReferenceError + // + // OPERA: + // ex.message = ...message... (see the example below) + // ex.name = ReferenceError + // ex.opera#sourceloc = 11 (pretty much useless, duplicates the info in ex.message) + // ex.stacktrace = n/a; see 'opera:config#UserPrefs|Exceptions Have Stacktrace' /** - * Returns true if the in-process data payload matches the signature - * of the previously-sent data - * - * NOTE: This has to be done at this level because TraceKit can generate - * data from window.onerror WITHOUT an exception object (IE8, IE9, - * other old browsers). This can take the form of an "exception" - * data object with a single frame (derived from the onerror args). + * Computes stack trace information from the stack property. + * Chrome and Gecko use this property. + * @param {Error} ex + * @return {?Object.} Stack trace information. */ - _isRepeatData: function _isRepeatData(current) { - var last = this._lastData; - if (!last || current.message !== last.message || // defined for captureMessage - current.culprit !== last.culprit // defined for captureException/onerror - ) return false; // Stacktrace interface (i.e. from captureMessage) - - if (current.stacktrace || last.stacktrace) { - return isSameStacktrace(current.stacktrace, last.stacktrace); - } else if (current.exception || last.exception) { - // Exception interface (i.e. from captureException/onerror) - return isSameException(current.exception, last.exception); - } - - return true; - }, - _setBackoffState: function _setBackoffState(request) { - // If we are already in a backoff state, don't change anything - if (this._shouldBackoff()) { - return; - } - - var status = request.status; // 400 - project_id doesn't exist or some other fatal - // 401 - invalid/revoked dsn - // 429 - too many requests + function computeStackTraceFromStackProp(ex) { + if (typeof ex.stack === 'undefined' || !ex.stack) return; - if (!(status === 400 || status === 401 || status === 429)) return; - var retry; + var chrome = /^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i; + var winjs = /^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i; + // NOTE: blob urls are now supposed to always have an origin, therefore it's format + // which is `blob:http://url/path/with-some-uuid`, is matched by `blob.*?:\/` as well + var gecko = /^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i; + // Used to additionally parse URL/line/column from eval frames + var geckoEval = /(\S+) line (\d+)(?: > eval line \d+)* > eval/i; + var chromeEval = /\((\S*)(?::(\d+))(?::(\d+))\)/; + var lines = ex.stack.split('\n'); + var stack = []; + var submatch; + var parts; + var element; + var reference = /^(.*) is undefined$/.exec(ex.message); - try { - // If Retry-After is not in Access-Control-Expose-Headers, most - // browsers will throw an exception trying to access it - if (supportsFetch()) { - retry = request.headers.get('Retry-After'); + for (var i = 0, j = lines.length; i < j; ++i) { + if ((parts = chrome.exec(lines[i]))) { + var isNative = parts[2] && parts[2].indexOf('native') === 0; // start of line + var isEval = parts[2] && parts[2].indexOf('eval') === 0; // start of line + if (isEval && (submatch = chromeEval.exec(parts[2]))) { + // throw out eval line/column and use top-most line/column number + parts[2] = submatch[1]; // url + parts[3] = submatch[2]; // line + parts[4] = submatch[3]; // column + } + element = { + url: !isNative ? parts[2] : null, + func: parts[1] || UNKNOWN_FUNCTION, + args: isNative ? [parts[2]] : [], + line: parts[3] ? +parts[3] : null, + column: parts[4] ? +parts[4] : null + }; + } else if ((parts = winjs.exec(lines[i]))) { + element = { + url: parts[2], + func: parts[1] || UNKNOWN_FUNCTION, + args: [], + line: +parts[3], + column: parts[4] ? +parts[4] : null + }; + } else if ((parts = gecko.exec(lines[i]))) { + var isEval = parts[3] && parts[3].indexOf(' > eval') > -1; + if (isEval && (submatch = geckoEval.exec(parts[3]))) { + // throw out eval line/column and use top-most line number + parts[3] = submatch[1]; + parts[4] = submatch[2]; + parts[5] = null; // no column when eval + } else if (i === 0 && !parts[5] && typeof ex.columnNumber !== 'undefined') { + // FireFox uses this awesome columnNumber property for its top frame + // Also note, Firefox's column number is 0-based and everything else expects 1-based, + // so adding 1 + // NOTE: this hack doesn't work if top-most frame is eval + stack[0].column = ex.columnNumber + 1; + } + element = { + url: parts[3], + func: parts[1] || UNKNOWN_FUNCTION, + args: parts[2] ? parts[2].split(',') : [], + line: parts[4] ? +parts[4] : null, + column: parts[5] ? +parts[5] : null + }; } else { - retry = request.getResponseHeader('Retry-After'); - } // Retry-After is returned in seconds - - - retry = parseInt(retry, 10) * 1000; - } catch (e) { - /* eslint no-empty:0 */ - } - - this._backoffDuration = retry ? // If Sentry server returned a Retry-After value, use it - retry : // Otherwise, double the last backoff duration (starts at 1 sec) - this._backoffDuration * 2 || 1000; - this._backoffStart = now(); - }, - _send: function _send(data) { - var globalOptions = this._globalOptions; - - var baseData = { - project: this._globalProject, - logger: globalOptions.logger, - platform: 'javascript' - }, - httpData = this._getHttpData(); - - if (httpData) { - baseData.request = httpData; - } // HACK: delete `trimHeadFrames` to prevent from appearing in outbound payload - - - if (data.trimHeadFrames) delete data.trimHeadFrames; - data = objectMerge(baseData, data); // Merge in the tags and extra separately since objectMerge doesn't handle a deep merge - - data.tags = objectMerge(objectMerge({}, this._globalContext.tags), data.tags); - data.extra = objectMerge(objectMerge({}, this._globalContext.extra), data.extra); // Send along our own collected metadata with extra - - data.extra['session:duration'] = now() - this._startTime; - - if (this._breadcrumbs && this._breadcrumbs.length > 0) { - // intentionally make shallow copy so that additions - // to breadcrumbs aren't accidentally sent in this request - data.breadcrumbs = { - values: [].slice.call(this._breadcrumbs, 0) - }; - } - - if (this._globalContext.user) { - // sentry.interfaces.User - data.user = this._globalContext.user; - } // Include the environment if it's defined in globalOptions - - - if (globalOptions.environment) data.environment = globalOptions.environment; // Include the release if it's defined in globalOptions - - if (globalOptions.release) data.release = globalOptions.release; // Include server_name if it's defined in globalOptions - - if (globalOptions.serverName) data.server_name = globalOptions.serverName; // Cleanup empty properties before sending them to the server - - Object.keys(data).forEach(function (key) { - if (data[key] == null || data[key] === '' || isEmptyObject(data[key])) { - delete data[key]; + continue; } - }); - - if (isFunction(globalOptions.dataCallback)) { - data = globalOptions.dataCallback(data) || data; - } // Why?????????? - - - if (!data || isEmptyObject(data)) { - return; - } // Check if the request should be filtered or not - - if (isFunction(globalOptions.shouldSendCallback) && !globalOptions.shouldSendCallback(data)) { - return; - } // Backoff state: Sentry server previously responded w/ an error (e.g. 429 - too many requests), - // so drop requests until "cool-off" period has elapsed. - - - if (this._shouldBackoff()) { - this._logDebug('warn', 'Raven dropped error due to backoff: ', data); - - return; - } - - if (typeof globalOptions.sampleRate === 'number') { - if (Math.random() < globalOptions.sampleRate) { - this._sendProcessedPayload(data); + if (!element.func && element.line) { + element.func = UNKNOWN_FUNCTION; } - } else { - this._sendProcessedPayload(data); - } - }, - _getUuid: function _getUuid() { - return uuid4(); - }, - _sendProcessedPayload: function _sendProcessedPayload(data, callback) { - var self = this; - var globalOptions = this._globalOptions; - if (!this.isSetup()) return; // Try and clean up the packet before sending by truncating long values - - data = this._trimPacket(data); // ideally duplicate error testing should occur *before* dataCallback/shouldSendCallback, - // but this would require copying an un-truncated copy of the data packet, which can be - // arbitrarily deep (extra_data) -- could be worthwhile? will revisit - - if (!this._globalOptions.allowDuplicates && this._isRepeatData(data)) { - this._logDebug('warn', 'Raven dropped repeat event: ', data); - - return; - } // Send along an event_id if not explicitly passed. - // This event_id can be used to reference the error within Sentry itself. - // Set lastEventId after we know the error should actually be sent - - - this._lastEventId = data.event_id || (data.event_id = this._getUuid()); // Store outbound payload after trim - - this._lastData = data; - - this._logDebug('debug', 'Raven about to send:', data); - - var auth = { - sentry_version: '7', - sentry_client: 'raven-js/' + this.VERSION, - sentry_key: this._globalKey - }; - if (this._globalSecret) { - auth.sentry_secret = this._globalSecret; + stack.push(element); } - var exception = data.exception && data.exception.values[0]; // only capture 'sentry' breadcrumb is autoBreadcrumbs is truthy - - if (this._globalOptions.autoBreadcrumbs && this._globalOptions.autoBreadcrumbs.sentry) { - this.captureBreadcrumb({ - category: 'sentry', - message: exception ? (exception.type ? exception.type + ': ' : '') + exception.value : data.message, - event_id: data.event_id, - level: data.level || 'error' // presume error unless specified - - }); + if (!stack.length) { + return null; } - var url = this._globalEndpoint; + return { + name: ex.name, + message: ex.message, + url: getLocationHref(), + stack: stack + }; + } - (globalOptions.transport || this._makeRequest).call(this, { + /** + * Adds information about the first frame to incomplete stack traces. + * Safari and IE require this to get complete data on the first frame. + * @param {Object.} stackInfo Stack trace information from + * one of the compute* methods. + * @param {string} url The URL of the script that caused an error. + * @param {(number|string)} lineNo The line number of the script that + * caused an error. + * @param {string=} message The error generated by the browser, which + * hopefully contains the name of the object that caused the error. + * @return {boolean} Whether or not the stack information was + * augmented. + */ + function augmentStackTraceWithInitialElement(stackInfo, url, lineNo, message) { + var initial = { url: url, - auth: auth, - data: data, - options: globalOptions, - onSuccess: function success() { - self._resetBackoff(); - - self._triggerEvent('success', { - data: data, - src: url - }); - - callback && callback(); - }, - onError: function failure(error) { - self._logDebug('error', 'Raven transport failed to send: ', error); - - if (error.request) { - self._setBackoffState(error.request); - } - - self._triggerEvent('failure', { - data: data, - src: url - }); - - error = error || new Error('Raven send failed (no additional details provided)'); - callback && callback(error); - } - }); - }, - _makeRequest: function _makeRequest(opts) { - // Auth is intentionally sent as part of query string (NOT as custom HTTP header) to avoid preflight CORS requests - var url = opts.url + '?' + urlencode(opts.auth); - var evaluatedHeaders = null; - var evaluatedFetchParameters = {}; - - if (opts.options.headers) { - evaluatedHeaders = this._evaluateHash(opts.options.headers); - } - - if (opts.options.fetchParameters) { - evaluatedFetchParameters = this._evaluateHash(opts.options.fetchParameters); - } + line: lineNo + }; - if (supportsFetch()) { - evaluatedFetchParameters.body = stringify_1(opts.data); - var defaultFetchOptions = objectMerge({}, this._fetchDefaults); - var fetchOptions = objectMerge(defaultFetchOptions, evaluatedFetchParameters); + if (initial.url && initial.line) { + stackInfo.incomplete = false; - if (evaluatedHeaders) { - fetchOptions.headers = evaluatedHeaders; + if (!initial.func) { + initial.func = UNKNOWN_FUNCTION; } - return _window$1.fetch(url, fetchOptions).then(function (response) { - if (response.ok) { - opts.onSuccess && opts.onSuccess(); - } else { - var error = new Error('Sentry error code: ' + response.status); // It's called request only to keep compatibility with XHR interface - // and not add more redundant checks in setBackoffState method - - error.request = response; - opts.onError && opts.onError(error); + if (stackInfo.stack.length > 0) { + if (stackInfo.stack[0].url === initial.url) { + if (stackInfo.stack[0].line === initial.line) { + return false; // already in stack trace + } else if ( + !stackInfo.stack[0].line && + stackInfo.stack[0].func === initial.func + ) { + stackInfo.stack[0].line = initial.line; + return false; + } } - })['catch'](function () { - opts.onError && opts.onError(new Error('Sentry error code: network unavailable')); - }); + } + + stackInfo.stack.unshift(initial); + stackInfo.partial = true; + return true; + } else { + stackInfo.incomplete = true; } - var request = _window$1.XMLHttpRequest && new _window$1.XMLHttpRequest(); - if (!request) return; // if browser doesn't support CORS (e.g. IE7), we are out of luck + return false; + } - var hasCORS = 'withCredentials' in request || typeof XDomainRequest !== 'undefined'; - if (!hasCORS) return; + /** + * Computes stack trace information by walking the arguments.caller + * chain at the time the exception occurred. This will cause earlier + * frames to be missed but is the only way to get any stack trace in + * Safari and IE. The top frame is restored by + * {@link augmentStackTraceWithInitialElement}. + * @param {Error} ex + * @return {?Object.} Stack trace information. + */ + function computeStackTraceByWalkingCallerChain(ex, depth) { + var functionName = /function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i, + stack = [], + funcs = {}, + recursion = false, + parts, + item, + source; + + for ( + var curr = computeStackTraceByWalkingCallerChain.caller; + curr && !recursion; + curr = curr.caller + ) { + if (curr === computeStackTrace || curr === TraceKit.report) { + // console.log('skipping internal function'); + continue; + } - if ('withCredentials' in request) { - request.onreadystatechange = function () { - if (request.readyState !== 4) { - return; - } else if (request.status === 200) { - opts.onSuccess && opts.onSuccess(); - } else if (opts.onError) { - var err = new Error('Sentry error code: ' + request.status); - err.request = request; - opts.onError(err); - } + item = { + url: null, + func: UNKNOWN_FUNCTION, + line: null, + column: null }; - } else { - request = new XDomainRequest(); // xdomainrequest cannot go http -> https (or vice versa), - // so always use protocol relative - url = url.replace(/^https?:/, ''); // onreadystatechange not supported by XDomainRequest + if (curr.name) { + item.func = curr.name; + } else if ((parts = functionName.exec(curr.toString()))) { + item.func = parts[1]; + } - if (opts.onSuccess) { - request.onload = opts.onSuccess; + if (typeof item.func === 'undefined') { + try { + item.func = parts.input.substring(0, parts.input.indexOf('{')); + } catch (e) {} } - if (opts.onError) { - request.onerror = function () { - var err = new Error('Sentry error code: XDomainRequest'); - err.request = request; - opts.onError(err); - }; + if (funcs['' + curr]) { + recursion = true; + } else { + funcs['' + curr] = true; } - } - request.open('POST', url); + stack.push(item); + } - if (evaluatedHeaders) { - each(evaluatedHeaders, function (key, value) { - request.setRequestHeader(key, value); - }); + if (depth) { + // console.log('depth is ' + depth); + // console.log('stack is ' + stack.length); + stack.splice(0, depth); } - request.send(stringify_1(opts.data)); - }, - _evaluateHash: function _evaluateHash(hash) { - var evaluated = {}; + var result = { + name: ex.name, + message: ex.message, + url: getLocationHref(), + stack: stack + }; + augmentStackTraceWithInitialElement( + result, + ex.sourceURL || ex.fileName, + ex.line || ex.lineNumber, + ex.message || ex.description + ); + return result; + } - for (var key in hash) { - if (hash.hasOwnProperty(key)) { - var value = hash[key]; - evaluated[key] = typeof value === 'function' ? value() : value; + /** + * Computes a stack trace for an exception. + * @param {Error} ex + * @param {(string|number)=} depth + */ + function computeStackTrace(ex, depth) { + var stack = null; + depth = depth == null ? 0 : +depth; + + try { + stack = computeStackTraceFromStackProp(ex); + if (stack) { + return stack; + } + } catch (e) { + if (TraceKit.debug) { + throw e; } } - return evaluated; - }, - _logDebug: function _logDebug(level) { - if (this._originalConsoleMethods[level] && this.debug) { - // In IE<10 console methods do not have their own 'apply' method - Function.prototype.apply.call(this._originalConsoleMethods[level], this._originalConsole, [].slice.call(arguments, 1)); - } - }, - _mergeContext: function _mergeContext(key, context) { - if (isUndefined(context)) { - delete this._globalContext[key]; - } else { - this._globalContext[key] = objectMerge(this._globalContext[key] || {}, context); + try { + stack = computeStackTraceByWalkingCallerChain(ex, depth + 1); + if (stack) { + return stack; + } + } catch (e) { + if (TraceKit.debug) { + throw e; + } } + return { + name: ex.name, + message: ex.message, + url: getLocationHref() + }; } -}; // Deprecations -Raven$1.prototype.setUser = Raven$1.prototype.setUserContext; -Raven$1.prototype.setReleaseContext = Raven$1.prototype.setRelease; -var raven = Raven$1; + computeStackTrace.augmentStackTraceWithInitialElement = augmentStackTraceWithInitialElement; + computeStackTrace.computeStackTraceFromStackProp = computeStackTraceFromStackProp; -/** - * Enforces a single instance of the Raven client, and the - * main entry point for Raven. If you are a consumer of the - * Raven library, you SHOULD load this file (vs raven.js). - **/ -// This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) + return computeStackTrace; +})(); -var _window = typeof window !== 'undefined' ? window : typeof commonjsGlobal !== 'undefined' ? commonjsGlobal : typeof self !== 'undefined' ? self : {}; +module.exports = TraceKit; -var _Raven = _window.Raven; -var Raven = new raven(); +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"7":7}],9:[function(_dereq_,module,exports){ /* - * Allow multiple versions of Raven to be installed. - * Strip Raven from the global context and returns the instance. - * - * @return {Raven} - */ + json-stringify-safe + Like JSON.stringify, but doesn't throw on circular references. -Raven.noConflict = function () { - _window.Raven = _Raven; - return Raven; -}; + Originally forked from https://github.com/isaacs/json-stringify-safe + version 5.0.1 on 3/8/2017 and modified to handle Errors serialization + and IE8 compatibility. Tests for this are in test/vendor. -Raven.afterLoad(); -var singleton = Raven; + ISC license: https://github.com/isaacs/json-stringify-safe/blob/master/LICENSE +*/ -/** - * Ember.js plugin - * - * Patches event handler callbacks and ajax callbacks. - */ -function emberPlugin(Raven, Ember) { - Ember = Ember || window.Ember; // quit if Ember isn't on the page +exports = module.exports = stringify; +exports.getSerialize = serializer; - if (!Ember) return; - var _oldOnError = Ember.onerror; +function indexOf(haystack, needle) { + for (var i = 0; i < haystack.length; ++i) { + if (haystack[i] === needle) return i; + } + return -1; +} - Ember.onerror = function EmberOnError(error) { - Raven.captureException(error); +function stringify(obj, replacer, spaces, cycleReplacer) { + return JSON.stringify(obj, serializer(replacer, cycleReplacer), spaces); +} - if (typeof _oldOnError === 'function') { - _oldOnError.call(this, error); - } +// https://github.com/ftlabs/js-abbreviate/blob/fa709e5f139e7770a71827b1893f22418097fbda/index.js#L95-L106 +function stringifyError(value) { + var err = { + // These properties are implemented as magical getters and don't show up in for in + stack: value.stack, + message: value.message, + name: value.name }; - Ember.RSVP.on('error', function (reason) { - if (reason instanceof Error) { - Raven.captureException(reason, { - extra: { - context: 'Unhandled Promise error detected' - } - }); - } else { - Raven.captureMessage('Unhandled Promise error detected', { - extra: { - reason: reason - } - }); + for (var i in value) { + if (Object.prototype.hasOwnProperty.call(value, i)) { + err[i] = value[i]; } - }); + } + + return err; } -var ember = emberPlugin; +function serializer(replacer, cycleReplacer) { + var stack = []; + var keys = []; -/** - * Vue.js 2.0 plugin + if (cycleReplacer == null) { + cycleReplacer = function(key, value) { + if (stack[0] === value) { + return '[Circular ~]'; + } + return '[Circular ~.' + keys.slice(0, indexOf(stack, value)).join('.') + ']'; + }; + } + + return function(key, value) { + if (stack.length > 0) { + var thisPos = indexOf(stack, this); + ~thisPos ? stack.splice(thisPos + 1) : stack.push(this); + ~thisPos ? keys.splice(thisPos, Infinity, key) : keys.push(key); + + if (~indexOf(stack, value)) { + value = cycleReplacer.call(this, key, value); + } + } else { + stack.push(value); + } + + return replacer == null + ? value instanceof Error ? stringifyError(value) : value + : replacer.call(this, key, value); + }; +} + +},{}],10:[function(_dereq_,module,exports){ +/* + * JavaScript MD5 + * https://github.com/blueimp/JavaScript-MD5 * + * Copyright 2011, Sebastian Tschan + * https://blueimp.net + * + * Licensed under the MIT license: + * https://opensource.org/licenses/MIT + * + * Based on + * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message + * Digest Algorithm, as defined in RFC 1321. + * Version 2.2 Copyright (C) Paul Johnston 1999 - 2009 + * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet + * Distributed under the BSD License + * See http://pajhome.org.uk/crypt/md5 for more info. */ -function formatComponentName(vm) { - if (vm.$root === vm) { - return 'root instance'; - } - var name = vm._isVue ? vm.$options.name || vm.$options._componentTag : vm.name; - return (name ? 'component <' + name + '>' : 'anonymous component') + (vm._isVue && vm.$options.__file ? ' at ' + vm.$options.__file : ''); +/* +* Add integers, wrapping at 2^32. This uses 16-bit operations internally +* to work around bugs in some JS interpreters. +*/ +function safeAdd(x, y) { + var lsw = (x & 0xffff) + (y & 0xffff); + var msw = (x >> 16) + (y >> 16) + (lsw >> 16); + return (msw << 16) | (lsw & 0xffff); } -function vuePlugin(Raven, Vue) { - Vue = Vue || window.Vue; // quit if Vue isn't on the page +/* +* Bitwise rotate a 32-bit number to the left. +*/ +function bitRotateLeft(num, cnt) { + return (num << cnt) | (num >>> (32 - cnt)); +} - if (!Vue || !Vue.config) return; - var _oldOnError = Vue.config.errorHandler; +/* +* These functions implement the four basic operations the algorithm uses. +*/ +function md5cmn(q, a, b, x, s, t) { + return safeAdd(bitRotateLeft(safeAdd(safeAdd(a, q), safeAdd(x, t)), s), b); +} +function md5ff(a, b, c, d, x, s, t) { + return md5cmn((b & c) | (~b & d), a, b, x, s, t); +} +function md5gg(a, b, c, d, x, s, t) { + return md5cmn((b & d) | (c & ~d), a, b, x, s, t); +} +function md5hh(a, b, c, d, x, s, t) { + return md5cmn(b ^ c ^ d, a, b, x, s, t); +} +function md5ii(a, b, c, d, x, s, t) { + return md5cmn(c ^ (b | ~d), a, b, x, s, t); +} - Vue.config.errorHandler = function VueErrorHandler(error, vm, info) { - var metaData = {}; // vm and lifecycleHook are not always available +/* +* Calculate the MD5 of an array of little-endian words, and a bit length. +*/ +function binlMD5(x, len) { + /* append padding */ + x[len >> 5] |= 0x80 << (len % 32); + x[(((len + 64) >>> 9) << 4) + 14] = len; + + var i; + var olda; + var oldb; + var oldc; + var oldd; + var a = 1732584193; + var b = -271733879; + var c = -1732584194; + var d = 271733878; + + for (i = 0; i < x.length; i += 16) { + olda = a; + oldb = b; + oldc = c; + oldd = d; + + a = md5ff(a, b, c, d, x[i], 7, -680876936); + d = md5ff(d, a, b, c, x[i + 1], 12, -389564586); + c = md5ff(c, d, a, b, x[i + 2], 17, 606105819); + b = md5ff(b, c, d, a, x[i + 3], 22, -1044525330); + a = md5ff(a, b, c, d, x[i + 4], 7, -176418897); + d = md5ff(d, a, b, c, x[i + 5], 12, 1200080426); + c = md5ff(c, d, a, b, x[i + 6], 17, -1473231341); + b = md5ff(b, c, d, a, x[i + 7], 22, -45705983); + a = md5ff(a, b, c, d, x[i + 8], 7, 1770035416); + d = md5ff(d, a, b, c, x[i + 9], 12, -1958414417); + c = md5ff(c, d, a, b, x[i + 10], 17, -42063); + b = md5ff(b, c, d, a, x[i + 11], 22, -1990404162); + a = md5ff(a, b, c, d, x[i + 12], 7, 1804603682); + d = md5ff(d, a, b, c, x[i + 13], 12, -40341101); + c = md5ff(c, d, a, b, x[i + 14], 17, -1502002290); + b = md5ff(b, c, d, a, x[i + 15], 22, 1236535329); + + a = md5gg(a, b, c, d, x[i + 1], 5, -165796510); + d = md5gg(d, a, b, c, x[i + 6], 9, -1069501632); + c = md5gg(c, d, a, b, x[i + 11], 14, 643717713); + b = md5gg(b, c, d, a, x[i], 20, -373897302); + a = md5gg(a, b, c, d, x[i + 5], 5, -701558691); + d = md5gg(d, a, b, c, x[i + 10], 9, 38016083); + c = md5gg(c, d, a, b, x[i + 15], 14, -660478335); + b = md5gg(b, c, d, a, x[i + 4], 20, -405537848); + a = md5gg(a, b, c, d, x[i + 9], 5, 568446438); + d = md5gg(d, a, b, c, x[i + 14], 9, -1019803690); + c = md5gg(c, d, a, b, x[i + 3], 14, -187363961); + b = md5gg(b, c, d, a, x[i + 8], 20, 1163531501); + a = md5gg(a, b, c, d, x[i + 13], 5, -1444681467); + d = md5gg(d, a, b, c, x[i + 2], 9, -51403784); + c = md5gg(c, d, a, b, x[i + 7], 14, 1735328473); + b = md5gg(b, c, d, a, x[i + 12], 20, -1926607734); + + a = md5hh(a, b, c, d, x[i + 5], 4, -378558); + d = md5hh(d, a, b, c, x[i + 8], 11, -2022574463); + c = md5hh(c, d, a, b, x[i + 11], 16, 1839030562); + b = md5hh(b, c, d, a, x[i + 14], 23, -35309556); + a = md5hh(a, b, c, d, x[i + 1], 4, -1530992060); + d = md5hh(d, a, b, c, x[i + 4], 11, 1272893353); + c = md5hh(c, d, a, b, x[i + 7], 16, -155497632); + b = md5hh(b, c, d, a, x[i + 10], 23, -1094730640); + a = md5hh(a, b, c, d, x[i + 13], 4, 681279174); + d = md5hh(d, a, b, c, x[i], 11, -358537222); + c = md5hh(c, d, a, b, x[i + 3], 16, -722521979); + b = md5hh(b, c, d, a, x[i + 6], 23, 76029189); + a = md5hh(a, b, c, d, x[i + 9], 4, -640364487); + d = md5hh(d, a, b, c, x[i + 12], 11, -421815835); + c = md5hh(c, d, a, b, x[i + 15], 16, 530742520); + b = md5hh(b, c, d, a, x[i + 2], 23, -995338651); + + a = md5ii(a, b, c, d, x[i], 6, -198630844); + d = md5ii(d, a, b, c, x[i + 7], 10, 1126891415); + c = md5ii(c, d, a, b, x[i + 14], 15, -1416354905); + b = md5ii(b, c, d, a, x[i + 5], 21, -57434055); + a = md5ii(a, b, c, d, x[i + 12], 6, 1700485571); + d = md5ii(d, a, b, c, x[i + 3], 10, -1894986606); + c = md5ii(c, d, a, b, x[i + 10], 15, -1051523); + b = md5ii(b, c, d, a, x[i + 1], 21, -2054922799); + a = md5ii(a, b, c, d, x[i + 8], 6, 1873313359); + d = md5ii(d, a, b, c, x[i + 15], 10, -30611744); + c = md5ii(c, d, a, b, x[i + 6], 15, -1560198380); + b = md5ii(b, c, d, a, x[i + 13], 21, 1309151649); + a = md5ii(a, b, c, d, x[i + 4], 6, -145523070); + d = md5ii(d, a, b, c, x[i + 11], 10, -1120210379); + c = md5ii(c, d, a, b, x[i + 2], 15, 718787259); + b = md5ii(b, c, d, a, x[i + 9], 21, -343485551); + + a = safeAdd(a, olda); + b = safeAdd(b, oldb); + c = safeAdd(c, oldc); + d = safeAdd(d, oldd); + } + return [a, b, c, d]; +} - if (Object.prototype.toString.call(vm) === '[object Object]') { - metaData.componentName = formatComponentName(vm); - metaData.propsData = vm.$options.propsData; - } +/* +* Convert an array of little-endian words to a string +*/ +function binl2rstr(input) { + var i; + var output = ''; + var length32 = input.length * 32; + for (i = 0; i < length32; i += 8) { + output += String.fromCharCode((input[i >> 5] >>> (i % 32)) & 0xff); + } + return output; +} - if (typeof info !== 'undefined') { - metaData.lifecycleHook = info; - } +/* +* Convert a raw string to an array of little-endian words +* Characters >255 have their high-byte silently ignored. +*/ +function rstr2binl(input) { + var i; + var output = []; + output[(input.length >> 2) - 1] = undefined; + for (i = 0; i < output.length; i += 1) { + output[i] = 0; + } + var length8 = input.length * 8; + for (i = 0; i < length8; i += 8) { + output[i >> 5] |= (input.charCodeAt(i / 8) & 0xff) << (i % 32); + } + return output; +} - Raven.captureException(error, { - extra: metaData - }); +/* +* Calculate the MD5 of a raw string +*/ +function rstrMD5(s) { + return binl2rstr(binlMD5(rstr2binl(s), s.length * 8)); +} - if (typeof _oldOnError === 'function') { - _oldOnError.call(this, error, vm, info); - } - }; +/* +* Calculate the HMAC-MD5, of a key and some data (raw strings) +*/ +function rstrHMACMD5(key, data) { + var i; + var bkey = rstr2binl(key); + var ipad = []; + var opad = []; + var hash; + ipad[15] = opad[15] = undefined; + if (bkey.length > 16) { + bkey = binlMD5(bkey, key.length * 8); + } + for (i = 0; i < 16; i += 1) { + ipad[i] = bkey[i] ^ 0x36363636; + opad[i] = bkey[i] ^ 0x5c5c5c5c; + } + hash = binlMD5(ipad.concat(rstr2binl(data)), 512 + data.length * 8); + return binl2rstr(binlMD5(opad.concat(hash), 512 + 128)); +} + +/* +* Convert a raw string to a hex string +*/ +function rstr2hex(input) { + var hexTab = '0123456789abcdef'; + var output = ''; + var x; + var i; + for (i = 0; i < input.length; i += 1) { + x = input.charCodeAt(i); + output += hexTab.charAt((x >>> 4) & 0x0f) + hexTab.charAt(x & 0x0f); + } + return output; } -var vue = vuePlugin; +/* +* Encode a string as utf-8 +*/ +function str2rstrUTF8(input) { + return unescape(encodeURIComponent(input)); +} -/* This file was generated by './scripts/generate-plugin-combinations.js'! */ +/* +* Take string arguments and return either raw or hex encoded strings +*/ +function rawMD5(s) { + return rstrMD5(str2rstrUTF8(s)); +} +function hexMD5(s) { + return rstr2hex(rawMD5(s)); +} +function rawHMACMD5(k, d) { + return rstrHMACMD5(str2rstrUTF8(k), str2rstrUTF8(d)); +} +function hexHMACMD5(k, d) { + return rstr2hex(rawHMACMD5(k, d)); +} -singleton.addPlugin(ember).addPlugin(vue); -var ember_vue = {}; +function md5(string, key, raw) { + if (!key) { + if (!raw) { + return hexMD5(string); + } + return rawMD5(string); + } + if (!raw) { + return hexHMACMD5(key, string); + } + return rawHMACMD5(key, string); +} -return ember_vue; +module.exports = md5; -}))); +},{}]},{},[6,1,2])(6) +}); \ No newline at end of file diff --git a/dist/ember,vue/raven.min.js b/dist/ember,vue/raven.min.js index 78a6c4304518..0e47aac18f04 100644 --- a/dist/ember,vue/raven.min.js +++ b/dist/ember,vue/raven.min.js @@ -1,3 +1,4 @@ -/*! Raven.js 3.22.2 (1b6187b) | github.com/getsentry/raven-js */ -!function(a,b){"object"==typeof exports&&"undefined"!=typeof module?module.exports=b():"function"==typeof define&&define.amd?define(b):a.Raven=b()}(this,function(){"use strict";function a(a,b){return b={exports:{}},a(b,b.exports),b.exports}function b(a){return(b="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(a){return typeof a}:function(a){return a&&"function"==typeof Symbol&&a.constructor===Symbol&&a!==Symbol.prototype?"symbol":typeof a})(a)}function c(a){return"object"===b(a)&&null!==a}function d(a){switch({}.toString.call(a)){case"[object Error]":return!0;case"[object Exception]":return!0;case"[object DOMException]":return!0;default:return a instanceof Error}}function e(a){return l()&&"[object ErrorEvent]"==={}.toString.call(a)}function f(a){return void 0===a}function g(a){return"function"==typeof a}function h(a){return"[object Object]"===Object.prototype.toString.call(a)}function i(a){return"[object String]"===Object.prototype.toString.call(a)}function j(a){return"[object Array]"===Object.prototype.toString.call(a)}function k(a){if(!h(a))return!1;for(var b in a)if(a.hasOwnProperty(b))return!1;return!0}function l(){try{return new ErrorEvent(""),!0}catch(a){return!1}}function m(){if(!("fetch"in P))return!1;try{return new Headers,new Request(""),new Response,!0}catch(a){return!1}}function n(a){function b(b,c){var d=a(b)||b;return c?c(d)||d:d}return b}function o(a,b){var c,d;if(f(a.length))for(c in a)s(a,c)&&b.call(null,c,a[c]);else if(d=a.length)for(c=0;c ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function y(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&i(b))for(c=b.split(/\s+/),f=0;f":"anonymous component")+(a._isVue&&a.$options.__file?" at "+a.$options.__file:"")}function M(a,b){if(b=b||window.Vue,b&&b.config){var c=b.config.errorHandler;b.config.errorHandler=function(b,d,e){var f={};"[object Object]"===Object.prototype.toString.call(d)&&(f.componentName=L(d),f.propsData=d.$options.propsData),"undefined"!=typeof e&&(f.lifecycleHook=e),a.captureException(b,{extra:f}),"function"==typeof c&&c.call(this,b,d,e)}}}var N="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{},O=Object.setPrototypeOf||function(a,b){return a.B=b,a},P=("object"==typeof Reflect&&Reflect.construct||function(a,b,c){var d,e=[null];return e.push.apply(e,b),d=a.bind.apply(a,e),O(new d,c.prototype)},"undefined"!=typeof window?window:"undefined"!=typeof N?N:"undefined"!=typeof self?self:{}),Q={isObject:c,isError:d,isErrorEvent:e,isUndefined:f,isFunction:g,isPlainObject:h,isString:i,isArray:j,isEmptyObject:k,supportsErrorEvent:l,supportsFetch:m,wrappedCallback:n,each:o,objectMerge:p,truncate:r,objectFrozen:q,hasKey:s,joinRegExp:t,urlencode:u,uuid4:w,htmlTreeAsString:x,htmlElementAsString:y,isSameException:B,isSameStacktrace:C,parseUrl:v,fill:D,safeJoin:E},R={collectWindowErrors:!0,debug:!1},S="undefined"!=typeof window?window:"undefined"!=typeof N?N:"undefined"!=typeof self?self:{},T=[].slice,U="?",V=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;R.report=function(){function a(a){f(),l.push(a)}function b(a){for(var b=l.length-1;b>=0;--b)l[b]===a&&l.splice(b,1)}function c(){g(),l=[]}function d(a,b){var c=null;if(!b||R.collectWindowErrors){for(var d in l)if(l.hasOwnProperty(d))try{l[d].apply(null,[a].concat(T.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function e(a,b,c,e,f){var g=null,i=Q.isErrorEvent(f)?f.error:f,k=Q.isErrorEvent(a)?a.message:a;if(o)R.computeStackTrace.augmentStackTraceWithInitialElement(o,b,c,k),h();else if(i&&Q.isError(i))g=R.computeStackTrace(i),d(g,!0);else{var l,m={url:b,line:c,column:e},n=void 0;if("[object String]"==={}.toString.call(k)){var l=k.match(V);l&&(n=l[1],k=l[2])}m.func=U,g={name:n,message:k,url:F(),stack:[m]},d(g,!0)}return!!j&&j.apply(this,arguments)}function f(){k||(j=S.onerror,S.onerror=e,k=!0)}function g(){k&&(S.onerror=j,k=!1,j=void 0)}function h(){var a=o,b=m;m=null,o=null,n=null,d.apply(null,[a,!1].concat(b))}function i(a,b){var c=T.call(arguments,1);if(o){if(n===a)return;h()}var d=R.computeStackTrace(a);if(o=d,n=a,m=c,setTimeout(function(){n===a&&h()},d.incomplete?2e3:0),b!==!1)throw a}var j,k,l=[],m=null,n=null,o=null;return i.subscribe=a,i.unsubscribe=b,i.uninstall=c,i}(),R.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,d,e=/^\s*at (.*?) ?\(((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,f=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|\[native).*?|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,g=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,h=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,i=/\((\S*)(?::(\d+))(?::(\d+))\)/,j=a.stack.split("\n"),k=[],l=(/^(.*) is undefined$/.exec(a.message),0),m=j.length;l eval")>-1;o&&(b=h.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==l||c[5]||"undefined"==typeof a.columnNumber||(k[0].column=a.columnNumber+1),d={url:c[3],func:c[1]||U,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}!d.func&&d.line&&(d.func=U),k.push(d)}return k.length?{name:a.name,message:a.message,url:F(),stack:k}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=U),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,e){for(var f,g,h=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,i=[],j={},k=!1,l=c.caller;l&&!k;l=l.caller)if(l!==d&&l!==R.report){if(g={url:null,func:U,line:null,column:null},l.name?g.func=l.name:(f=h.exec(l.toString()))&&(g.func=f[1]),"undefined"==typeof g.func)try{g.func=f.input.substring(0,f.input.indexOf("{"))}catch(m){}j[""+l]?k=!0:j[""+l]=!0,i.push(g)}e&&i.splice(0,e);var n={name:a.name,message:a.message,url:F(),stack:i};return b(n,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),n}function d(b,d){var e=null;d=null==d?0:+d;try{if(e=a(b))return e}catch(f){if(R.debug)throw f}try{if(e=c(b,d+1))return e}catch(f){if(R.debug)throw f}return{name:b.name,message:b.message,url:F()}}return d.augmentStackTraceWithInitialElement=b,d.computeStackTraceFromStackProp=a,d}();var W=R,X=a(function(a,b){function c(a,b){for(var c=0;c0){var i=c(d,this);~i?d.splice(i+1):d.push(this),~i?f.splice(i,1/0,g):f.push(g),~c(d,h)&&(h=b.call(this,g,h))}else d.push(h);return null==a?h instanceof Error?e(h):h:a.call(this,g,h)}}b=a.exports=d,b.getSerialize=f});G.prototype=new Error,G.prototype.constructor=G;var Y=G,Z=function(a,b,c){var d=a[b],e=a;if(b in a){var f="warn"===b?"warning":b;a[b]=function(){var a=[].slice.call(arguments),g=Q.safeJoin(a," "),h={level:f,logger:"console",extra:{arguments:a}};"assert"===b?a[0]===!1&&(g="Assertion failed: "+(Q.safeJoin(a.slice(1)," ")||"console.assert"),h.extra.arguments=a.slice(1),c&&c(g,h)):c&&c(g,h),d&&Function.prototype.apply.call(d,e,a)}}},$={wrapMethod:Z},_=Q.isError,aa=Q.isObject,ba=Q.isErrorEvent,ca=Q.isUndefined,da=Q.isFunction,ea=Q.isString,fa=Q.isArray,ga=Q.isEmptyObject,ha=Q.each,ia=Q.objectMerge,ja=Q.truncate,ka=Q.objectFrozen,la=Q.hasKey,ma=Q.joinRegExp,na=Q.urlencode,oa=Q.uuid4,pa=Q.htmlTreeAsString,qa=Q.isSameException,ra=Q.isSameStacktrace,sa=Q.parseUrl,ta=Q.fill,ua=Q.supportsFetch,va=$.wrapMethod,wa="source protocol user pass host port path".split(" "),xa=/^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/,ya="undefined"!=typeof window?window:"undefined"!=typeof N?N:"undefined"!=typeof self?self:{},za=ya.document,Aa=ya.navigator;J.prototype={VERSION:"3.22.2",debug:!1,TraceKit:W,config:function(a,b){var c=this;if(c.i)return this.C("error","Error: Raven has already been configured"),c;if(!a)return c;var d=c.m;b&&ha(b,function(a,b){"tags"===a||"extra"===a||"user"===a?c.l[a]=b:d[a]=b}),c.setDSN(a),d.ignoreErrors.push(/^Script error\.?$/),d.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/),d.ignoreErrors=ma(d.ignoreErrors),d.ignoreUrls=!!d.ignoreUrls.length&&ma(d.ignoreUrls),d.whitelistUrls=!!d.whitelistUrls.length&&ma(d.whitelistUrls),d.includePaths=ma(d.includePaths),d.maxBreadcrumbs=Math.max(0,Math.min(d.maxBreadcrumbs||100,100));var e={xhr:!0,console:!0,dom:!0,location:!0,sentry:!0},f=d.autoBreadcrumbs;"[object Object]"==={}.toString.call(f)?f=ia(e,f):f!==!1&&(f=e),d.autoBreadcrumbs=f;var g={tryCatch:!0},h=d.instrument;return"[object Object]"==={}.toString.call(h)?h=ia(g,h):h!==!1&&(h=g),d.instrument=h,W.collectWindowErrors=!!d.collectWindowErrors,c},install:function(){var a=this;return a.isSetup()&&!a.p&&(W.report.subscribe(function(){a.D.apply(a,arguments)}),a.E(),a.m.instrument&&a.m.instrument.tryCatch&&a.F(),a.m.autoBreadcrumbs&&a.G(),a.H(),a.p=!0),Error.stackTraceLimit=a.m.stackTraceLimit,this},setDSN:function(a){var b=this,c=b.I(a),d=c.path.lastIndexOf("/"),e=c.path.substr(1,d);b.J=a,b.j=c.user,b.K=c.pass&&c.pass.substr(1),b.k=c.path.substr(d+1),b.i=b.L(c),b.M=b.i+"/"+e+"api/"+b.k+"/store/",this.A()},context:function(a,b,c){return da(a)&&(c=b||[],b=a,a=void 0),this.wrap(a,b).apply(this,c)},wrap:function(a,b,c){function d(){var d=[],f=arguments.length,g=!a||a&&a.deep!==!1;for(c&&da(c)&&c.apply(this,arguments);f--;)d[f]=g?e.wrap(a,arguments[f]):arguments[f];try{return b.apply(this,d)}catch(h){throw e.N(),e.captureException(h,a),h}}var e=this;if(ca(b)&&!da(a))return a;if(da(a)&&(b=a,a=void 0),!da(b))return b;try{if(b.a)return b;if(b.O)return b.O}catch(f){return b}for(var g in b)la(b,g)&&(d[g]=b[g]);return d.prototype=b.prototype,b.O=d,d.a=!0,d.b=b,d},uninstall:function(){return W.report.uninstall(),this.P(),this.Q(),this.R(),Error.stackTraceLimit=this.q,this.p=!1,this},captureException:function(a,b){b=ia({trimHeadFrames:0},b?b:{});var c=!_(a),d=!ba(a),e=ba(a)&&!a.error;if(c&&d||e)return this.captureMessage(a,ia(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}));ba(a)&&(a=a.error),this.f=a;try{var f=W.computeStackTrace(a);this.S(f,b)}catch(g){if(a!==g)throw g}return this},captureMessage:function(a,b){if(!this.m.ignoreErrors.test||!this.m.ignoreErrors.test(a)){b=b||{};var c,d=ia({message:a+""},b);try{throw new Error(a)}catch(e){c=e}c.name=null;var f=W.computeStackTrace(c),g=fa(f.stack)&&f.stack[1],h=g&&g.url||"";if((!this.m.ignoreUrls.test||!this.m.ignoreUrls.test(h))&&(!this.m.whitelistUrls.test||this.m.whitelistUrls.test(h))){if(this.m.stacktrace||b&&b.stacktrace){b=ia({fingerprint:a,trimHeadFrames:(b.trimHeadFrames||0)+1},b);var i=this.T(f,b);d.stacktrace={frames:i.reverse()}}return this.U(d),this}}},captureBreadcrumb:function(a){var b=ia({timestamp:H()/1e3},a);if(da(this.m.breadcrumbCallback)){var c=this.m.breadcrumbCallback(b);if(aa(c)&&!ga(c))b=c;else if(c===!1)return this}return this.w.push(b),this.w.length>this.m.maxBreadcrumbs&&this.w.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.t.push([a,b]),this.p&&this.H(),this},setUserContext:function(a){return this.l.user=a,this},setExtraContext:function(a){return this.V("extra",a),this},setTagsContext:function(a){return this.V("tags",a),this},clearContext:function(){return this.l={},this},getContext:function(){return JSON.parse(X(this.l))},setEnvironment:function(a){return this.m.environment=a,this},setRelease:function(a){return this.m.release=a,this},setDataCallback:function(a){var b=this.m.dataCallback;return this.m.dataCallback=I(b,a),this},setBreadcrumbCallback:function(a){var b=this.m.breadcrumbCallback;return this.m.breadcrumbCallback=I(b,a),this},setShouldSendCallback:function(a){var b=this.m.shouldSendCallback;return this.m.shouldSendCallback=I(b,a),this},setTransport:function(a){return this.m.transport=a,this},lastException:function(){return this.f},lastEventId:function(){return this.h},isSetup:function(){return!!this.c&&(!!this.i||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.C("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=ya.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(za){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new Y("Missing eventId");var c=a.dsn||this.J;if(!c)throw new Y("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.l.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.L(this.I(c)),h=za.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(za.head||za.body).appendChild(h)}},N:function(){var a=this;this.o+=1,setTimeout(function(){a.o-=1})},W:function(a,b){var c,d;if(this.d){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),za.createEvent?(c=za.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=za.createEventObject(),c.eventType=a);for(d in b)la(b,d)&&(c[d]=b[d]);if(za.createEvent)za.dispatchEvent(c);else try{za.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},X:function(a){var b=this;return function(c){if(b.Y=null,b.x!==c){b.x=c;var d;try{d=pa(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},Z:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.Y;g||a.X("input")(c),clearTimeout(g),a.Y=setTimeout(function(){a.Y=null},b)}}},$:function(a,b){var c=sa(this.y.href),d=sa(b),e=sa(a);this.z=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},E:function(){var a=this;a._=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.a?a._.apply(this.b,arguments):a._.apply(this,arguments)}},P:function(){this._&&(Function.prototype.toString=this._)},F:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.$(b.z,c+""),a.apply(this,arguments)}};ta(history,"pushState",j,d),ta(history,"replaceState",j,d)}if(c.console&&"console"in ya&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};ha(["debug","info","warn","error","log"],function(a,b){va(console,b,k)})}},Q:function(){for(var a;this.v.length;){a=this.v.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},R:function(){for(var a in this.s)this.r[a]=this.s[a]},H:function(){var a=this;ha(this.t,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},I:function(a){var b=xa.exec(a),c={},d=7;try{for(;d--;)c[wa[d]]=b[d]||""}catch(e){throw new Y("Invalid DSN: "+a)}if(c.pass&&!this.m.allowSecretKey)throw new Y("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},L:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},D:function(){this.o||this.S.apply(this,arguments)},S:function(a,b){var c=this.T(a,b);this.W("handle",{stackInfo:a,options:b}),this.ba(a.name,a.message,a.url,a.lineno,c,b)},T:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(ha(a.stack,function(b,e){var f=c.ca(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.w,0)}),this.l.user&&(a.user=this.l.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||ga(a[b]))&&delete a[b]}),da(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!ga(a)&&(!da(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.ia()?void this.C("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random()":"anonymous component")+(a._isVue&&a.$options.__file?" at "+a.$options.__file:"")}function e(a,b){if(b=b||window.Vue,b&&b.config){var c=b.config.errorHandler;b.config.errorHandler=function(b,e,f){var g={};"[object Object]"===Object.prototype.toString.call(e)&&(g.componentName=d(e),g.propsData=e.$options.propsData),"undefined"!=typeof f&&(g.lifecycleHook=f),a.captureException(b,{extra:g}),"function"==typeof c&&c.call(this,b,e,f)}}}b.exports=e,a(6).addPlugin(b.exports)},{6:6}],3:[function(a,b,c){function d(a){this.name="RavenConfigError",this.message=a}d.prototype=new Error,d.prototype.constructor=d,b.exports=d},{}],4:[function(a,b,c){var d=a(7),e=function(a,b,c){var e=a[b],f=a;if(b in a){var g="warn"===b?"warning":b;a[b]=function(){var a=[].slice.call(arguments),h=d.safeJoin(a," "),i={level:g,logger:"console",extra:{arguments:a}};"assert"===b?a[0]===!1&&(h="Assertion failed: "+(d.safeJoin(a.slice(1)," ")||"console.assert"),i.extra.arguments=a.slice(1),c&&c(h,i)):c&&c(h,i),e&&Function.prototype.apply.call(e,f,a)}}};b.exports={wrapMethod:e}},{7:7}],5:[function(a,b,c){(function(c){function d(){return+new Date}function e(a,b){return q(b)?function(c){return b(c,a)}:b}function f(){this.a=!("object"!=typeof JSON||!JSON.stringify),this.b=!p(Q),this.c=!p(R),this.d=null,this.e=null,this.f=null,this.g=null,this.h=null,this.i=null,this.j={},this.k={release:P.SENTRY_RELEASE&&P.SENTRY_RELEASE.id,logger:"javascript",ignoreErrors:[],ignoreUrls:[],whitelistUrls:[],includePaths:[],headers:null,collectWindowErrors:!0,captureUnhandledRejections:!0,maxMessageLength:0,maxUrlLength:250,stackTraceLimit:50,autoBreadcrumbs:!0,instrument:!0,sampleRate:1,sanitizeKeys:[]},this.l={method:"POST",keepalive:!0,referrerPolicy:I()?"origin":""},this.m=0,this.n=!1,this.o=Error.stackTraceLimit,this.p=P.console||{},this.q={},this.r=[],this.s=d(),this.t=[],this.u=[],this.v=null,this.w=P.location,this.x=this.w&&this.w.href,this.y();for(var a in this.p)this.q[a]=this.p[a]}var g=a(8),h=a(9),i=a(10),j=a(3),k=a(7),l=k.isError,m=k.isObject,n=k.isPlainObject,o=k.isErrorEvent,p=k.isUndefined,q=k.isFunction,r=k.isString,s=k.isArray,t=k.isEmptyObject,u=k.each,v=k.objectMerge,w=k.truncate,x=k.objectFrozen,y=k.hasKey,z=k.joinRegExp,A=k.urlencode,B=k.uuid4,C=k.htmlTreeAsString,D=k.isSameException,E=k.isSameStacktrace,F=k.parseUrl,G=k.fill,H=k.supportsFetch,I=k.supportsReferrerPolicy,J=k.serializeKeysForMessage,K=k.serializeException,L=k.sanitize,M=a(4).wrapMethod,N="source protocol user pass host port path".split(" "),O=/^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/,P="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},Q=P.document,R=P.navigator;f.prototype={VERSION:"3.24.2",debug:!1,TraceKit:g,config:function(a,b){var c=this;if(c.g)return this.z("error","Error: Raven has already been configured"),c;if(!a)return c;var d=c.k;b&&u(b,function(a,b){"tags"===a||"extra"===a||"user"===a?c.j[a]=b:d[a]=b}),c.setDSN(a),d.ignoreErrors.push(/^Script error\.?$/),d.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/),d.ignoreErrors=z(d.ignoreErrors),d.ignoreUrls=!!d.ignoreUrls.length&&z(d.ignoreUrls),d.whitelistUrls=!!d.whitelistUrls.length&&z(d.whitelistUrls),d.includePaths=z(d.includePaths),d.maxBreadcrumbs=Math.max(0,Math.min(d.maxBreadcrumbs||100,100));var e={xhr:!0,console:!0,dom:!0,location:!0,sentry:!0},f=d.autoBreadcrumbs;"[object Object]"==={}.toString.call(f)?f=v(e,f):f!==!1&&(f=e),d.autoBreadcrumbs=f;var h={tryCatch:!0},i=d.instrument;return"[object Object]"==={}.toString.call(i)?i=v(h,i):i!==!1&&(i=h),d.instrument=i,g.collectWindowErrors=!!d.collectWindowErrors,c},install:function(){var a=this;return a.isSetup()&&!a.n&&(g.report.subscribe(function(){a.A.apply(a,arguments)}),a.k.captureUnhandledRejections&&a.B(),a.C(),a.k.instrument&&a.k.instrument.tryCatch&&a.D(),a.k.autoBreadcrumbs&&a.E(),a.F(),a.n=!0),Error.stackTraceLimit=a.k.stackTraceLimit,this},setDSN:function(a){var b=this,c=b.G(a),d=c.path.lastIndexOf("/"),e=c.path.substr(1,d);b.H=a,b.h=c.user,b.I=c.pass&&c.pass.substr(1),b.i=c.path.substr(d+1),b.g=b.J(c),b.K=b.g+"/"+e+"api/"+b.i+"/store/",this.y()},context:function(a,b,c){return q(a)&&(c=b||[],b=a,a=void 0),this.wrap(a,b).apply(this,c)},wrap:function(a,b,c){function d(){var d=[],f=arguments.length,g=!a||a&&a.deep!==!1;for(c&&q(c)&&c.apply(this,arguments);f--;)d[f]=g?e.wrap(a,arguments[f]):arguments[f];try{return b.apply(this,d)}catch(h){throw e.L(),e.captureException(h,a),h}}var e=this;if(p(b)&&!q(a))return a;if(q(a)&&(b=a,a=void 0),!q(b))return b;try{if(b.M)return b;if(b.N)return b.N}catch(f){return b}for(var g in b)y(b,g)&&(d[g]=b[g]);return d.prototype=b.prototype,b.N=d,d.M=!0,d.O=b,d},uninstall:function(){return g.report.uninstall(),this.P(),this.Q(),this.R(),this.S(),Error.stackTraceLimit=this.o,this.n=!1,this},T:function(a){this.z("debug","Raven caught unhandled promise rejection:",a),this.captureException(a.reason,{extra:{unhandledPromiseRejection:!0}})},B:function(){return this.T=this.T.bind(this),P.addEventListener&&P.addEventListener("unhandledrejection",this.T),this},P:function(){return P.removeEventListener&&P.removeEventListener("unhandledrejection",this.T),this},captureException:function(a,b){if(b=v({trimHeadFrames:0},b?b:{}),o(a)&&a.error)a=a.error;else if(l(a))a=a;else{if(!n(a))return this.captureMessage(a,v(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}));b=this.U(b,a),a=new Error(b.message)}this.d=a;try{var c=g.computeStackTrace(a);this.V(c,b)}catch(d){if(a!==d)throw d}return this},U:function(a,b){var c=Object.keys(b).sort(),d=v(a,{message:"Non-Error exception captured with keys: "+J(c),fingerprint:[i(c)],extra:a.extra||{}});return d.extra.W=K(b),d},captureMessage:function(a,b){if(!this.k.ignoreErrors.test||!this.k.ignoreErrors.test(a)){b=b||{},a+="";var c,d=v({message:a},b);try{throw new Error(a)}catch(e){c=e}c.name=null;var f=g.computeStackTrace(c),h=s(f.stack)&&f.stack[1];h&&"Raven.captureException"===h.func&&(h=f.stack[2]);var i=h&&h.url||"";if((!this.k.ignoreUrls.test||!this.k.ignoreUrls.test(i))&&(!this.k.whitelistUrls.test||this.k.whitelistUrls.test(i))){if(this.k.stacktrace||b&&b.stacktrace){d.fingerprint=null==d.fingerprint?a:d.fingerprint,b=v({trimHeadFrames:0},b),b.trimHeadFrames+=1;var j=this.X(f,b);d.stacktrace={frames:j.reverse()}}return d.fingerprint&&(d.fingerprint=s(d.fingerprint)?d.fingerprint:[d.fingerprint]),this.Y(d),this}}},captureBreadcrumb:function(a){var b=v({timestamp:d()/1e3},a);if(q(this.k.breadcrumbCallback)){var c=this.k.breadcrumbCallback(b);if(m(c)&&!t(c))b=c;else if(c===!1)return this}return this.u.push(b),this.u.length>this.k.maxBreadcrumbs&&this.u.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.r.push([a,b]),this.n&&this.F(),this},setUserContext:function(a){return this.j.user=a,this},setExtraContext:function(a){return this.Z("extra",a),this},setTagsContext:function(a){return this.Z("tags",a),this},clearContext:function(){return this.j={},this},getContext:function(){return JSON.parse(h(this.j))},setEnvironment:function(a){return this.k.environment=a,this},setRelease:function(a){return this.k.release=a,this},setDataCallback:function(a){var b=this.k.dataCallback;return this.k.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.k.breadcrumbCallback;return this.k.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.k.shouldSendCallback;return this.k.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.k.transport=a,this},lastException:function(){return this.d},lastEventId:function(){return this.f},isSetup:function(){return!!this.a&&(!!this.g||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.z("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=P.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(Q){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.H;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.j.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.J(this.G(c)),h=Q.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(Q.head||Q.body).appendChild(h)}},L:function(){var a=this;this.m+=1,setTimeout(function(){a.m-=1})},$:function(a,b){var c,d;if(this.b){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),Q.createEvent?(c=Q.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=Q.createEventObject(),c.eventType=a);for(d in b)y(b,d)&&(c[d]=b[d]);if(Q.createEvent)Q.dispatchEvent(c);else try{Q.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},_:function(a){var b=this;return function(c){if(b.aa=null,b.v!==c){b.v=c;var d;try{d=C(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ba:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.aa;g||a._("input")(c),clearTimeout(g),a.aa=setTimeout(function(){a.aa=null},b)}}},ca:function(a,b){var c=F(this.w.href),d=F(b),e=F(a);this.x=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},C:function(){var a=this;a.da=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.M?a.da.apply(this.O,arguments):a.da.apply(this,arguments)}},Q:function(){this.da&&(Function.prototype.toString=this.da)},D:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.ca(b.x,c+""),a.apply(this,arguments)}};G(history,"pushState",j,d),G(history,"replaceState",j,d)}if(c.console&&"console"in P&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};u(["debug","info","warn","error","log"],function(a,b){M(console,b,k)})}},R:function(){for(var a;this.t.length;){a=this.t.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},S:function(){for(var a in this.q)this.p[a]=this.q[a]},F:function(){var a=this;u(this.r,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},G:function(a){var b=O.exec(a),c={},d=7;try{for(;d--;)c[N[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.k.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},J:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},A:function(){this.m||this.V.apply(this,arguments)},V:function(a,b){var c=this.X(a,b);this.$("handle",{stackInfo:a,options:b}),this.fa(a.name,a.message,a.url,a.lineno,c,b)},X:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(u(a.stack,function(b,e){var f=c.ga(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.u,0)}),this.j.user&&(a.user=this.j.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),a=this.pa(a),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||t(a[b]))&&delete a[b]}),q(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!t(a)&&(!q(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.ma()?void this.z("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function B(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&j(b))for(c=b.split(/\s+/),f=0;fc?M(a,b-1):d}function N(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?T:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function O(a,b){function c(a){return k(a)?a.map(function(a){return c(a)}):i(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!k(b)||k(b)&&0===b.length)return a;var d,e=w(b),f="********";try{d=JSON.parse(P(a))}catch(g){return a}return c(d)}var P=a(9),Q="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},R=3,S=51200,T=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isUndefined:g,isFunction:h,isPlainObject:i,isString:j,isArray:k,isEmptyObject:l,supportsErrorEvent:m,supportsFetch:n,supportsReferrerPolicy:o,supportsPromiseRejectionEvent:p,wrappedCallback:q,each:r,objectMerge:s,truncate:u,objectFrozen:t,hasKey:v,joinRegExp:w,urlencode:x,uuid4:z,htmlTreeAsString:A,htmlElementAsString:B,isSameException:E,isSameStacktrace:F,parseUrl:y,fill:G,safeJoin:H,serializeException:M,serializeKeysForMessage:N,sanitize:O}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{9:9}],8:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}var e=a(7),f={collectWindowErrors:!0,debug:!1},g="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},h=[].slice,i="?",j=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;f.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function k(a,b){var c=null;if(!b||f.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(h.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,g,h){var l=null,m=e.isErrorEvent(h)?h.error:h,n=e.isErrorEvent(a)?a.message:a;if(v)f.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&e.isError(m))l=f.computeStackTrace(m),k(l,!0);else{var p,r={url:b,line:c,column:g},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(j);p&&(s=p[1],n=p[2])}r.func=i,l={name:s,message:n,url:d(),stack:[r]},k(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=g.onerror,g.onerror=l,r=!0)}function n(){r&&(g.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,k.apply(null,[a,!1].concat(b))}function p(a,b){var c=h.call(arguments,1);if(v){if(u===a)return;o()}var d=f.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),f.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,e,f=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,g=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,h=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,j=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,k=/\((\S*)(?::(\d+))(?::(\d+))\)/,l=a.stack.split("\n"),m=[],n=(/^(.*) is undefined$/.exec(a.message),0),o=l.length;n eval")>-1;q&&(b=j.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==n||c[5]||"undefined"==typeof a.columnNumber||(m[0].column=a.columnNumber+1),e={url:c[3],func:c[1]||i,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}!e.func&&e.line&&(e.func=i),m.push(e)}return m.length?{name:a.name,message:a.message,url:d(),stack:m}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=i),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,g){for(var h,j,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==e&&o!==f.report){if(j={url:null,func:i,line:null,column:null},o.name?j.func=o.name:(h=k.exec(o.toString()))&&(j.func=h[1]),"undefined"==typeof j.func)try{j.func=h.input.substring(0,h.input.indexOf("{"))}catch(p){}m[""+o]?n=!0:m[""+o]=!0,l.push(j)}g&&l.splice(0,g);var q={name:a.name,message:a.message,url:d(),stack:l};return b(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),q}function e(b,e){var g=null;e=null==e?0:+e;try{if(g=a(b))return g}catch(h){if(f.debug)throw h}try{if(g=c(b,e+1))return g}catch(h){if(f.debug)throw h}return{name:b.name,message:b.message,url:d()}}return e.augmentStackTraceWithInitialElement=b,e.computeStackTraceFromStackProp=a,e}(),b.exports=f}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{7:7}],9:[function(a,b,c){ +function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}],10:[function(a,b,c){function d(a,b){var c=(65535&a)+(65535&b),d=(a>>16)+(b>>16)+(c>>16);return d<<16|65535&c}function e(a,b){return a<>>32-b}function f(a,b,c,f,g,h){return d(e(d(d(b,a),d(f,h)),g),c)}function g(a,b,c,d,e,g,h){return f(b&c|~b&d,a,b,e,g,h)}function h(a,b,c,d,e,g,h){return f(b&d|c&~d,a,b,e,g,h)}function i(a,b,c,d,e,g,h){return f(b^c^d,a,b,e,g,h)}function j(a,b,c,d,e,g,h){return f(c^(b|~d),a,b,e,g,h)}function k(a,b){a[b>>5]|=128<>>9<<4)+14]=b;var c,e,f,k,l,m=1732584193,n=-271733879,o=-1732584194,p=271733878;for(c=0;c>5]>>>b%32&255);return c}function m(a){var b,c=[];for(c[(a.length>>2)-1]=void 0,b=0;b>5]|=(255&a.charCodeAt(b/8))<16&&(e=k(e,8*a.length)),c=0;c<16;c+=1)f[c]=909522486^e[c],g[c]=1549556828^e[c];return d=k(f.concat(m(b)),512+8*b.length),l(k(g.concat(d),640))}function p(a){var b,c,d="0123456789abcdef",e="";for(c=0;c>>4&15)+d.charAt(15&b);return e}function q(a){return unescape(encodeURIComponent(a))}function r(a){return n(q(a))}function s(a){return p(r(a))}function t(a,b){return o(q(a),q(b))}function u(a,b){return p(t(a,b))}function v(a,b,c){return b?c?t(b,a):u(b,a):c?r(a):s(a)}b.exports=v},{}]},{},[6,1,2])(6)}); //# sourceMappingURL=raven.min.js.map \ No newline at end of file diff --git a/dist/ember,vue/raven.min.js.map b/dist/ember,vue/raven.min.js.map index 26fcd2963fd4..70ff625816ed 100644 --- a/dist/ember,vue/raven.min.js.map +++ b/dist/ember,vue/raven.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["raven.js"],"names":["global","factory","exports","module","define","amd","Raven","this","createCommonjsModule","fn","_typeof","obj","Symbol","iterator","constructor","prototype","isObject$1","what","isError$1","value","toString","call","Error","isErrorEvent$1","supportsErrorEvent","isUndefined$1","isFunction$1","isPlainObject","Object","isString$1","isArray$1","isEmptyObject$1","_","hasOwnProperty","ErrorEvent","e","supportsFetch$1","_window$3","Headers","Request","Response","wrappedCallback","callback","dataCallback","data","original","normalizedData","each$1","i","j","length","hasKey$1","objectMerge$1","obj1","obj2","key","objectFrozen$1","isFrozen","truncate$1","str","max","substr","object","joinRegExp$1","patterns","pattern","sources","len","push","replace","source","RegExp","join","urlencode$1","o","pairs","encodeURIComponent","parseUrl$1","url","match","query","fragment","protocol","host","path","relative","uuid4$1","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","r","Math","random","htmlTreeAsString$1","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","reverse","className","classes","attr","tagName","toLowerCase","id","split","attrWhitelist","getAttribute","isOnlyOneTruthy","a","b","isBothUndefined","isSameException$1","ex1","ex2","values","type","stacktrace","isSameStacktrace$1","stack1","stack2","frames1","frames","frames2","filename","lineno","colno","fill$1","name","replacement","track","orig","__raven__","__orig__","safeJoin","input","delimiter","output","String","getLocationHref","document","location","href","RavenConfigError","message","now","Date","keepOriginalCallback","isFunction","Raven$1","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window$1","SENTRY_RELEASE","logger","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","_fetchDefaults","method","keepalive","referrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","console","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","_lastHref","_resetBackoff","emberPlugin","Ember","window","_oldOnError","onerror","error","captureException","RSVP","on","reason","extra","context","captureMessage","formatComponentName","vm","$root","_isVue","$options","_componentTag","__file","vuePlugin","Vue","config","errorHandler","info","metaData","componentName","propsData","lifecycleHook","commonjsGlobal","self","_sPO","setPrototypeOf","p","__proto__","Reflect","construct","Parent","args","Class","Constructor","apply","bind","utils","isObject","isError","isErrorEvent","isString","isArray","isEmptyObject","supportsFetch","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","TraceKit","debug","_window$2","_slice","slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","report","subscribe","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","stack","isWindowError","exception","concat","arguments","inner","traceKitWindowOnError","msg","lineNo","colNo","ex","lastExceptionStack","computeStackTrace","augmentStackTraceWithInitialElement","processLastException","groups","line","column","undefined","func","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","lastException","rethrow","setTimeout","incomplete","uninstall","computeStackTraceFromStackProp","submatch","parts","element","chrome","gecko","winjs","geckoEval","chromeEval","lines","exec","isNative","indexOf","isEval","columnNumber","stackInfo","initial","unshift","partial","computeStackTraceByWalkingCallerChain","depth","item","functionName","funcs","recursion","curr","caller","substring","result","sourceURL","fileName","lineNumber","description","tracekit","stringify_1","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","err","keys","thisPos","Infinity","getSerialize","configError","wrapMethod","level","originalConsoleLevel","originalConsole","sentryLevel","Function","console$1","wrapConsoleMethod","dsnKeys","dsnPattern","navigator","VERSION","dsn","options","_logDebug","globalOptions","setDSN","maxBreadcrumbs","min","autoBreadcrumbDefaults","xhr","dom","sentry","instrumentDefaults","tryCatch","install","isSetup","_handleOnErrorStackInfo","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","lastIndexOf","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","wrap","_before","wrapped","deep","_ignoreNextOnError","__raven_wrapper__","property","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","trimHeadFrames","isNotError","isNotErrorEvent","isErrorEventWithoutError","_handleStackInfo","test","initialCall","fileurl","fingerprint","_prepareFrames","_send","captureBreadcrumb","crumb","timestamp","breadcrumbCallback","shift","addPlugin","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","setDataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","N","W","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","X","evtName","_keypressTimeout","target","category","Z","debounceDuration","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","$","from","to","parsedLoc","parsedTo","parsedFrom","E","_originalFunctionToString","P","F","wrapTimeFn","t","Array","originalCallback","wrapEventTarget","proto","capture","secure","handleEvent","before","clickHandler","keypressHandler","_keypressEventHandler","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","G","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","onreadystatechange","origFetch","fetchInput","fetchData","then","response","addEventListener","attachEvent","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","Q","builtin","R","H","installer","I","m","allowSecretKey","L","port","D","S","_triggerEvent","_processException","T","frame","_normalizeFrame","in_app","ca","stackInfoUrl","normalized","function","ba","prefixedMessage","culprit","da","request","Referer","breadcrumbs","_trimBreadcrumbs","ea","urlProp","urlProps","fa","httpData","userAgent","User-Agent","referrer","A","_backoffDuration","_backoffStart","ia","ja","current","last","ka","_shouldBackoff","retry","get","getResponseHeader","parseInt","U","baseData","project","platform","_getHttpData","serverName","server_name","forEach","_sendProcessedPayload","ma","la","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","na","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","onload","open","setRequestHeader","send","oa","hash","evaluated","C","V","setUser","setReleaseContext","raven","_window","_Raven","noConflict","singleton","ember","vue","ember_vue"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file +{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","emberPlugin","Ember","_oldOnError","onerror","error","captureException","RSVP","on","reason","extra","context","captureMessage","addPlugin","6","2","formatComponentName","vm","$root","name","_isVue","$options","_componentTag","__file","vuePlugin","Vue","config","errorHandler","info","metaData","Object","prototype","toString","componentName","propsData","lifecycleHook","3","RavenConfigError","message","constructor","4","utils","wrapMethod","console","level","callback","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","msg","safeJoin","data","logger","Function","apply","7","5","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","sanitizeKeys","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isError","isObject","isPlainObject","isErrorEvent","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","sanitize","wrapConsoleMethod","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","dsn","options","_logDebug","globalOptions","key","value","setDSN","push","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","substr","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","func","undefined","wrap","_before","wrapped","deep","_ignoreNextOnError","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","T","event","unhandledPromiseRejection","B","_promiseRejectionHandler","bind","addEventListener","P","removeEventListener","ex","trimHeadFrames","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","U","currentOptions","exKeys","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","setDataCallback","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","L","setTimeout","$","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","_","evtName","_keypressTimeout","target","category","ba","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","ca","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","C","_originalFunctionToString","Q","D","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","type","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","E","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","R","builtin","S","F","installer","concat","G","str","m","exec","allowSecretKey","J","port","A","V","stackInfo","_triggerEvent","_processException","lineno","X","frame","_normalizeFrame","in_app","ga","stackInfoUrl","normalized","filename","line","colno","column","function","fa","prefixedMessage","exception","values","culprit","ha","request","Referer","breadcrumbs","_trimBreadcrumbs","ia","urlProp","urlProps","ja","httpData","userAgent","User-Agent","referrer","y","_backoffDuration","_backoffStart","ma","na","current","last","oa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Y","baseData","project","platform","_getHttpData","serverName","server_name","_sanitizeData","forEach","random","_sendProcessedPayload","pa","ra","qa","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","sa","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","open","setRequestHeader","send","ta","hash","evaluated","z","Z","setUser","setReleaseContext","10","8","9","RavenConstructor","_Raven","noConflict","Client","what","supportsErrorEvent","ErrorEvent","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","wrappedCallback","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","sanitizeMask","safeInput","o_O","getLocationHref","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","charAt","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","string","raw"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file diff --git a/dist/ember/raven.js b/dist/ember/raven.js index a2ee3bb721d5..e95275b5022e 100644 --- a/dist/ember/raven.js +++ b/dist/ember/raven.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.22.2 (1b6187b) | github.com/getsentry/raven-js */ +/*! Raven.js 3.24.2 (540f32b) | github.com/getsentry/raven-js */ /* * Includes TraceKit @@ -10,3165 +10,3928 @@ * */ -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : - typeof define === 'function' && define.amd ? define(factory) : - (global.Raven = factory()); -}(this, (function () { 'use strict'; - -var commonjsGlobal = typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; - - - +(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.Raven = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o href parsing trick because React Native and other -// environments where DOM might not be available + /* + * Set the DSN (can be called multiple time unlike config) + * + * @param {string} dsn The public Sentry DSN + */ + setDSN: function(dsn) { + var self = this, + uri = self._parseDSN(dsn), + lastSlash = uri.path.lastIndexOf('/'), + path = uri.path.substr(1, lastSlash); + self._dsn = dsn; + self._globalKey = uri.user; + self._globalSecret = uri.pass && uri.pass.substr(1); + self._globalProject = uri.path.substr(lastSlash + 1); -function parseUrl$1(url) { - if (typeof url !== 'string') return {}; - var match = url.match(/^(([^:\/?#]+):)?(\/\/([^\/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?$/); // coerce to undefined values to empty string so we don't get 'undefined' + self._globalServer = self._getGlobalServer(uri); - var query = match[6] || ''; - var fragment = match[8] || ''; - return { - protocol: match[2], - host: match[4], - path: match[5], - relative: match[5] + query + fragment // everything minus origin + self._globalEndpoint = + self._globalServer + '/' + path + 'api/' + self._globalProject + '/store/'; - }; -} + // Reset backoff state since we may be pointing at a + // new project/server + this._resetBackoff(); + }, -function uuid4$1() { - var crypto = _window$3.crypto || _window$3.msCrypto; + /* + * Wrap code within a context so Raven can capture errors + * reliably across domains that is executed immediately. + * + * @param {object} options A specific set of options for this context [optional] + * @param {function} func The callback to be immediately executed within the context + * @param {array} args An array of arguments to be called with the callback [optional] + */ + context: function(options, func, args) { + if (isFunction(options)) { + args = func || []; + func = options; + options = undefined; + } - if (!isUndefined$1(crypto) && crypto.getRandomValues) { - // Use window.crypto API if available - // eslint-disable-next-line no-undef - var arr = new Uint16Array(8); - crypto.getRandomValues(arr); // set 4 in byte 7 + return this.wrap(options, func).apply(this, args); + }, - arr[3] = arr[3] & 0xfff | 0x4000; // set 2 most significant bits of byte 9 to '10' + /* + * Wrap code within a context and returns back a new function to be executed + * + * @param {object} options A specific set of options for this context [optional] + * @param {function} func The function to be wrapped in a new context + * @param {function} func A function to call before the try/catch wrapper [optional, private] + * @return {function} The newly wrapped functions with a context + */ + wrap: function(options, func, _before) { + var self = this; + // 1 argument has been passed, and it's not a function + // so just return it + if (isUndefined(func) && !isFunction(options)) { + return options; + } - arr[4] = arr[4] & 0x3fff | 0x8000; + // options is optional + if (isFunction(options)) { + func = options; + options = undefined; + } - var pad = function pad(num) { - var v = num.toString(16); + // At this point, we've passed along 2 arguments, and the second one + // is not a function either, so we'll just return the second argument. + if (!isFunction(func)) { + return func; + } - while (v.length < 4) { - v = '0' + v; + // We don't wanna wrap it twice! + try { + if (func.__raven__) { + return func; } - return v; - }; + // If this has already been wrapped in the past, return that + if (func.__raven_wrapper__) { + return func.__raven_wrapper__; + } + } catch (e) { + // Just accessing custom props in some Selenium environments + // can cause a "Permission denied" exception (see raven-js#495). + // Bail on wrapping and return the function as-is (defers to window.onerror). + return func; + } - return pad(arr[0]) + pad(arr[1]) + pad(arr[2]) + pad(arr[3]) + pad(arr[4]) + pad(arr[5]) + pad(arr[6]) + pad(arr[7]); - } else { - // http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/2117523#2117523 - return 'xxxxxxxxxxxx4xxxyxxxxxxxxxxxxxxx'.replace(/[xy]/g, function (c) { - var r = Math.random() * 16 | 0, - v = c === 'x' ? r : r & 0x3 | 0x8; - return v.toString(16); - }); - } -} -/** - * Given a child DOM element, returns a query-selector statement describing that - * and its ancestors - * e.g. [HTMLElement] => body > div > input#foo.btn[name=baz] - * @param elem - * @returns {string} - */ + function wrapped() { + var args = [], + i = arguments.length, + deep = !options || (options && options.deep !== false); + if (_before && isFunction(_before)) { + _before.apply(this, arguments); + } -function htmlTreeAsString$1(elem) { - /* eslint no-extra-parens:0*/ - var MAX_TRAVERSE_HEIGHT = 5, - MAX_OUTPUT_LEN = 80, - out = [], - height = 0, - len = 0, - separator = ' > ', - sepLength = separator.length, - nextStr; + // Recursively wrap all of a function's arguments that are + // functions themselves. + while (i--) args[i] = deep ? self.wrap(options, arguments[i]) : arguments[i]; - while (elem && height++ < MAX_TRAVERSE_HEIGHT) { - nextStr = htmlElementAsString(elem); // bail out if - // - nextStr is the 'html' element - // - the length of the string that would be created exceeds MAX_OUTPUT_LEN - // (ignore this limit if we are on the first iteration) + try { + // Attempt to invoke user-land function + // NOTE: If you are a Sentry user, and you are seeing this stack frame, it + // means Raven caught an error invoking your application code. This is + // expected behavior and NOT indicative of a bug with Raven.js. + return func.apply(this, args); + } catch (e) { + self._ignoreNextOnError(); + self.captureException(e, options); + throw e; + } + } - if (nextStr === 'html' || height > 1 && len + out.length * sepLength + nextStr.length >= MAX_OUTPUT_LEN) { - break; + // copy over properties of the old function + for (var property in func) { + if (hasKey(func, property)) { + wrapped[property] = func[property]; + } } + wrapped.prototype = func.prototype; - out.push(nextStr); - len += nextStr.length; - elem = elem.parentNode; - } + func.__raven_wrapper__ = wrapped; + // Signal that this function has been wrapped/filled already + // for both debugging and to prevent it to being wrapped/filled twice + wrapped.__raven__ = true; + wrapped.__orig__ = func; - return out.reverse().join(separator); -} -/** - * Returns a simple, query-selector representation of a DOM element - * e.g. [HTMLElement] => input#foo.btn[name=baz] - * @param HTMLElement - * @returns {string} - */ + return wrapped; + }, + /** + * Uninstalls the global error handler. + * + * @return {Raven} + */ + uninstall: function() { + TraceKit.report.uninstall(); -function htmlElementAsString(elem) { - var out = [], - className, - classes, - key, - attr, - i; + this._detachPromiseRejectionHandler(); + this._unpatchFunctionToString(); + this._restoreBuiltIns(); + this._restoreConsole(); - if (!elem || !elem.tagName) { - return ''; - } + Error.stackTraceLimit = this._originalErrorStackTraceLimit; + this._isRavenInstalled = false; - out.push(elem.tagName.toLowerCase()); + return this; + }, - if (elem.id) { - out.push('#' + elem.id); - } + /** + * Callback used for `unhandledrejection` event + * + * @param {PromiseRejectionEvent} event An object containing + * promise: the Promise that was rejected + * reason: the value with which the Promise was rejected + * @return void + */ + _promiseRejectionHandler: function(event) { + this._logDebug('debug', 'Raven caught unhandled promise rejection:', event); + this.captureException(event.reason, { + extra: { + unhandledPromiseRejection: true + } + }); + }, - className = elem.className; + /** + * Installs the global promise rejection handler. + * + * @return {raven} + */ + _attachPromiseRejectionHandler: function() { + this._promiseRejectionHandler = this._promiseRejectionHandler.bind(this); + _window.addEventListener && + _window.addEventListener('unhandledrejection', this._promiseRejectionHandler); + return this; + }, - if (className && isString$1(className)) { - classes = className.split(/\s+/); + /** + * Uninstalls the global promise rejection handler. + * + * @return {raven} + */ + _detachPromiseRejectionHandler: function() { + _window.removeEventListener && + _window.removeEventListener('unhandledrejection', this._promiseRejectionHandler); + return this; + }, - for (i = 0; i < classes.length; i++) { - out.push('.' + classes[i]); + /** + * Manually capture an exception and send it over to Sentry + * + * @param {error} ex An exception to be logged + * @param {object} options A specific set of options for this error [optional] + * @return {Raven} + */ + captureException: function(ex, options) { + options = objectMerge({trimHeadFrames: 0}, options ? options : {}); + + if (isErrorEvent(ex) && ex.error) { + // If it is an ErrorEvent with `error` property, extract it to get actual Error + ex = ex.error; + } else if (isError(ex)) { + // we have a real Error object + ex = ex; + } else if (isPlainObject(ex)) { + // If it is plain Object, serialize it manually and extract options + // This will allow us to group events based on top-level keys + // which is much better than creating new group when any key/value change + options = this._getCaptureExceptionOptionsFromPlainObject(options, ex); + ex = new Error(options.message); + } else { + // If none of previous checks were valid, then it means that + // it's not a plain Object + // it's not a valid ErrorEvent (one with an error property) + // it's not an Error + // So bail out and capture it as a simple message: + return this.captureMessage( + ex, + objectMerge(options, { + stacktrace: true, // if we fall back to captureMessage, default to attempting a new trace + trimHeadFrames: options.trimHeadFrames + 1 + }) + ); + } + + // Store the raw exception object for potential debugging and introspection + this._lastCapturedException = ex; + + // TraceKit.report will re-raise any exception passed to it, + // which means you have to wrap it in try/catch. Instead, we + // can wrap it here and only re-raise if TraceKit.report + // raises an exception different from the one we asked to + // report on. + try { + var stack = TraceKit.computeStackTrace(ex); + this._handleStackInfo(stack, options); + } catch (ex1) { + if (ex !== ex1) { + throw ex1; + } } - } - var attrWhitelist = ['type', 'name', 'title', 'alt']; + return this; + }, - for (i = 0; i < attrWhitelist.length; i++) { - key = attrWhitelist[i]; - attr = elem.getAttribute(key); + _getCaptureExceptionOptionsFromPlainObject: function(currentOptions, ex) { + var exKeys = Object.keys(ex).sort(); + var options = objectMerge(currentOptions, { + message: + 'Non-Error exception captured with keys: ' + serializeKeysForMessage(exKeys), + fingerprint: [md5(exKeys)], + extra: currentOptions.extra || {} + }); + options.extra.__serialized__ = serializeException(ex); - if (attr) { - out.push('[' + key + '="' + attr + '"]'); + return options; + }, + + /* + * Manually send a message to Sentry + * + * @param {string} msg A plain message to be captured in Sentry + * @param {object} options A specific set of options for this message [optional] + * @return {Raven} + */ + captureMessage: function(msg, options) { + // config() automagically converts ignoreErrors from a list to a RegExp so we need to test for an + // early call; we'll error on the side of logging anything called before configuration since it's + // probably something you should see: + if ( + !!this._globalOptions.ignoreErrors.test && + this._globalOptions.ignoreErrors.test(msg) + ) { + return; } - } - return out.join(''); -} -/** - * Returns true if either a OR b is truthy, but not both - */ + options = options || {}; + msg = msg + ''; // Make sure it's actually a string + var data = objectMerge( + { + message: msg + }, + options + ); -function isOnlyOneTruthy(a, b) { - return !!(!!a ^ !!b); -} -/** - * Returns true if both parameters are undefined - */ + var ex; + // Generate a "synthetic" stack trace from this point. + // NOTE: If you are a Sentry user, and you are seeing this stack frame, it is NOT indicative + // of a bug with Raven.js. Sentry generates synthetic traces either by configuration, + // or if it catches a thrown object without a "stack" property. + try { + throw new Error(msg); + } catch (ex1) { + ex = ex1; + } + // null exception name so `Error` isn't prefixed to msg + ex.name = null; + var stack = TraceKit.computeStackTrace(ex); -function isBothUndefined(a, b) { - return isUndefined$1(a) && isUndefined$1(b); -} -/** - * Returns true if the two input exception interfaces have the same content - */ + // stack[0] is `throw new Error(msg)` call itself, we are interested in the frame that was just before that, stack[1] + var initialCall = isArray(stack.stack) && stack.stack[1]; + // if stack[1] is `Raven.captureException`, it means that someone passed a string to it and we redirected that call + // to be handled by `captureMessage`, thus `initialCall` is the 3rd one, not 2nd + // initialCall => captureException(string) => captureMessage(string) + if (initialCall && initialCall.func === 'Raven.captureException') { + initialCall = stack.stack[2]; + } -function isSameException$1(ex1, ex2) { - if (isOnlyOneTruthy(ex1, ex2)) return false; - ex1 = ex1.values[0]; - ex2 = ex2.values[0]; - if (ex1.type !== ex2.type || ex1.value !== ex2.value) return false; // in case both stacktraces are undefined, we can't decide so default to false + var fileurl = (initialCall && initialCall.url) || ''; - if (isBothUndefined(ex1.stacktrace, ex2.stacktrace)) return false; - return isSameStacktrace$1(ex1.stacktrace, ex2.stacktrace); -} -/** - * Returns true if the two input stack trace interfaces have the same content - */ + if ( + !!this._globalOptions.ignoreUrls.test && + this._globalOptions.ignoreUrls.test(fileurl) + ) { + return; + } + if ( + !!this._globalOptions.whitelistUrls.test && + !this._globalOptions.whitelistUrls.test(fileurl) + ) { + return; + } -function isSameStacktrace$1(stack1, stack2) { - if (isOnlyOneTruthy(stack1, stack2)) return false; - var frames1 = stack1.frames; - var frames2 = stack2.frames; // Exit early if frame count differs + if (this._globalOptions.stacktrace || (options && options.stacktrace)) { + // fingerprint on msg, not stack trace (legacy behavior, could be revisited) + data.fingerprint = data.fingerprint == null ? msg : data.fingerprint; - if (frames1.length !== frames2.length) return false; // Iterate through every frame; bail out if anything differs + options = objectMerge( + { + trimHeadFrames: 0 + }, + options + ); + // Since we know this is a synthetic trace, the top frame (this function call) + // MUST be from Raven.js, so mark it for trimming + // We add to the trim counter so that callers can choose to trim extra frames, such + // as utility functions. + options.trimHeadFrames += 1; - var a, b; + var frames = this._prepareFrames(stack, options); + data.stacktrace = { + // Sentry expects frames oldest to newest + frames: frames.reverse() + }; + } - for (var i = 0; i < frames1.length; i++) { - a = frames1[i]; - b = frames2[i]; - if (a.filename !== b.filename || a.lineno !== b.lineno || a.colno !== b.colno || a['function'] !== b['function']) return false; - } + // Make sure that fingerprint is always wrapped in an array + if (data.fingerprint) { + data.fingerprint = isArray(data.fingerprint) + ? data.fingerprint + : [data.fingerprint]; + } - return true; -} -/** - * Polyfill a method - * @param obj object e.g. `document` - * @param name method name present on object e.g. `addEventListener` - * @param replacement replacement function - * @param track {optional} record instrumentation to an array - */ + // Fire away! + this._send(data); + return this; + }, -function fill$1(obj, name, replacement, track) { - var orig = obj[name]; - obj[name] = replacement(orig); - obj[name].__raven__ = true; - obj[name].__orig__ = orig; + captureBreadcrumb: function(obj) { + var crumb = objectMerge( + { + timestamp: now() / 1000 + }, + obj + ); - if (track) { - track.push([obj, name, orig]); - } -} -/** - * Join values in array - * @param input array of values to be joined together - * @param delimiter string to be placed in-between values - * @returns {string} - */ + if (isFunction(this._globalOptions.breadcrumbCallback)) { + var result = this._globalOptions.breadcrumbCallback(crumb); + if (isObject(result) && !isEmptyObject(result)) { + crumb = result; + } else if (result === false) { + return this; + } + } -function safeJoin(input, delimiter) { - if (!isArray$1(input)) return ''; - var output = []; + this._breadcrumbs.push(crumb); + if (this._breadcrumbs.length > this._globalOptions.maxBreadcrumbs) { + this._breadcrumbs.shift(); + } + return this; + }, - for (var i = 0; i < input.length; i++) { - try { - output.push(String(input[i])); - } catch (e) { - output.push('[value cannot be serialized]'); + addPlugin: function(plugin /*arg1, arg2, ... argN*/) { + var pluginArgs = [].slice.call(arguments, 1); + + this._plugins.push([plugin, pluginArgs]); + if (this._isRavenInstalled) { + this._drainPlugins(); } - } - return output.join(delimiter); -} + return this; + }, -var utils = { - isObject: isObject$1, - isError: isError$1, - isErrorEvent: isErrorEvent$1, - isUndefined: isUndefined$1, - isFunction: isFunction$1, - isPlainObject: isPlainObject, - isString: isString$1, - isArray: isArray$1, - isEmptyObject: isEmptyObject$1, - supportsErrorEvent: supportsErrorEvent, - supportsFetch: supportsFetch$1, - wrappedCallback: wrappedCallback, - each: each$1, - objectMerge: objectMerge$1, - truncate: truncate$1, - objectFrozen: objectFrozen$1, - hasKey: hasKey$1, - joinRegExp: joinRegExp$1, - urlencode: urlencode$1, - uuid4: uuid4$1, - htmlTreeAsString: htmlTreeAsString$1, - htmlElementAsString: htmlElementAsString, - isSameException: isSameException$1, - isSameStacktrace: isSameStacktrace$1, - parseUrl: parseUrl$1, - fill: fill$1, - safeJoin: safeJoin -}; + /* + * Set/clear a user to be sent along with the payload. + * + * @param {object} user An object representing user data [optional] + * @return {Raven} + */ + setUserContext: function(user) { + // Intentionally do not merge here since that's an unexpected behavior. + this._globalContext.user = user; -/* - TraceKit - Cross brower stack traces + return this; + }, - This was originally forked from github.com/occ/TraceKit, but has since been - largely re-written and is now maintained as part of raven-js. Tests for - this are in test/vendor. + /* + * Merge extra attributes to be sent along with the payload. + * + * @param {object} extra An object representing extra data [optional] + * @return {Raven} + */ + setExtraContext: function(extra) { + this._mergeContext('extra', extra); - MIT license -*/ + return this; + }, -var TraceKit = { - collectWindowErrors: true, - debug: false -}; // This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) + /* + * Merge tags to be sent along with the payload. + * + * @param {object} tags An object representing tags [optional] + * @return {Raven} + */ + setTagsContext: function(tags) { + this._mergeContext('tags', tags); -var _window$2 = typeof window !== 'undefined' ? window : typeof commonjsGlobal !== 'undefined' ? commonjsGlobal : typeof self !== 'undefined' ? self : {}; // global reference to slice + return this; + }, + /* + * Clear all of the context. + * + * @return {Raven} + */ + clearContext: function() { + this._globalContext = {}; -var _slice = [].slice; -var UNKNOWN_FUNCTION = '?'; // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error#Error_types + return this; + }, -var ERROR_TYPES_RE = /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/; + /* + * Get a copy of the current context. This cannot be mutated. + * + * @return {object} copy of context + */ + getContext: function() { + // lol javascript + return JSON.parse(stringify(this._globalContext)); + }, -function getLocationHref() { - if (typeof document === 'undefined' || document.location == null) return ''; - return document.location.href; -} -/** - * TraceKit.report: cross-browser processing of unhandled exceptions - * - * Syntax: - * TraceKit.report.subscribe(function(stackInfo) { ... }) - * TraceKit.report.unsubscribe(function(stackInfo) { ... }) - * TraceKit.report(exception) - * try { ...code... } catch(ex) { TraceKit.report(ex); } - * - * Supports: - * - Firefox: full stack trace with line numbers, plus column number - * on top frame; column number is not guaranteed - * - Opera: full stack trace with line and column numbers - * - Chrome: full stack trace with line and column numbers - * - Safari: line and column number for the top frame only; some frames - * may be missing, and column number is not guaranteed - * - IE: line and column number for the top frame only; some frames - * may be missing, and column number is not guaranteed - * - * In theory, TraceKit should work on all of the following versions: - * - IE5.5+ (only 8.0 tested) - * - Firefox 0.9+ (only 3.5+ tested) - * - Opera 7+ (only 10.50 tested; versions 9 and earlier may require - * Exceptions Have Stacktrace to be enabled in opera:config) - * - Safari 3+ (only 4+ tested) - * - Chrome 1+ (only 5+ tested) - * - Konqueror 3.5+ (untested) - * - * Requires TraceKit.computeStackTrace. - * - * Tries to catch all unhandled exceptions and report them to the - * subscribed handlers. Please note that TraceKit.report will rethrow the - * exception. This is REQUIRED in order to get a useful stack trace in IE. - * If the exception does not reach the top of the browser, you will only - * get a stack trace from the point where TraceKit.report was called. - * - * Handlers receive a stackInfo object as described in the - * TraceKit.computeStackTrace docs. - */ + /* + * Set environment of application + * + * @param {string} environment Typically something like 'production'. + * @return {Raven} + */ + setEnvironment: function(environment) { + this._globalOptions.environment = environment; + return this; + }, -TraceKit.report = function reportModuleWrapper() { - var handlers = [], - lastArgs = null, - lastException = null, - lastExceptionStack = null; - /** - * Add a crash handler. - * @param {Function} handler + /* + * Set release version of application + * + * @param {string} release Typically something like a git SHA to identify version + * @return {Raven} */ + setRelease: function(release) { + this._globalOptions.release = release; - function subscribe(handler) { - installGlobalHandler(); - handlers.push(handler); - } - /** - * Remove a crash handler. - * @param {Function} handler + return this; + }, + + /* + * Set the dataCallback option + * + * @param {function} callback The callback to run which allows the + * data blob to be mutated before sending + * @return {Raven} */ + setDataCallback: function(callback) { + var original = this._globalOptions.dataCallback; + this._globalOptions.dataCallback = keepOriginalCallback(original, callback); + return this; + }, + /* + * Set the breadcrumbCallback option + * + * @param {function} callback The callback to run which allows filtering + * or mutating breadcrumbs + * @return {Raven} + */ + setBreadcrumbCallback: function(callback) { + var original = this._globalOptions.breadcrumbCallback; + this._globalOptions.breadcrumbCallback = keepOriginalCallback(original, callback); + return this; + }, + + /* + * Set the shouldSendCallback option + * + * @param {function} callback The callback to run which allows + * introspecting the blob before sending + * @return {Raven} + */ + setShouldSendCallback: function(callback) { + var original = this._globalOptions.shouldSendCallback; + this._globalOptions.shouldSendCallback = keepOriginalCallback(original, callback); + return this; + }, - function unsubscribe(handler) { - for (var i = handlers.length - 1; i >= 0; --i) { - if (handlers[i] === handler) { - handlers.splice(i, 1); - } - } - } /** - * Remove all crash handlers. + * Override the default HTTP transport mechanism that transmits data + * to the Sentry server. + * + * @param {function} transport Function invoked instead of the default + * `makeRequest` handler. + * + * @return {Raven} + */ + setTransport: function(transport) { + this._globalOptions.transport = transport; + + return this; + }, + + /* + * Get the latest raw exception that was captured by Raven. + * + * @return {error} */ + lastException: function() { + return this._lastCapturedException; + }, + /* + * Get the last event id + * + * @return {string} + */ + lastEventId: function() { + return this._lastEventId; + }, - function unsubscribeAll() { - uninstallGlobalHandler(); - handlers = []; - } - /** - * Dispatch stack information to all handlers. - * @param {Object.} stack + /* + * Determine if Raven is setup and ready to go. + * + * @return {boolean} */ + isSetup: function() { + if (!this._hasJSON) return false; // needs JSON support + if (!this._globalServer) { + if (!this.ravenNotConfiguredError) { + this.ravenNotConfiguredError = true; + this._logDebug('error', 'Error: Raven has not been configured.'); + } + return false; + } + return true; + }, + afterLoad: function() { + // TODO: remove window dependence? - function notifyHandlers(stack, isWindowError) { - var exception = null; + // Attempt to initialize Raven on load + var RavenConfig = _window.RavenConfig; + if (RavenConfig) { + this.config(RavenConfig.dsn, RavenConfig.config).install(); + } + }, - if (isWindowError && !TraceKit.collectWindowErrors) { + showReportDialog: function(options) { + if ( + !_document // doesn't work without a document (React native) + ) return; - } - for (var i in handlers) { - if (handlers.hasOwnProperty(i)) { - try { - handlers[i].apply(null, [stack].concat(_slice.call(arguments, 2))); - } catch (inner) { - exception = inner; - } - } + options = options || {}; + + var lastEventId = options.eventId || this.lastEventId(); + if (!lastEventId) { + throw new RavenConfigError('Missing eventId'); } - if (exception) { - throw exception; + var dsn = options.dsn || this._dsn; + if (!dsn) { + throw new RavenConfigError('Missing DSN'); } - } - var _oldOnerrorHandler, _onErrorHandlerInstalled; - /** - * Ensures all global unhandled exceptions are recorded. - * Supported by Gecko and IE. - * @param {string} msg Error message. - * @param {string} url URL of script that generated the exception. - * @param {(number|string)} lineNo The line number at which the error - * occurred. - * @param {?(number|string)} colNo The column number at which the error - * occurred. - * @param {?Error} ex The actual Error object. - */ + var encode = encodeURIComponent; + var qs = ''; + qs += '?eventId=' + encode(lastEventId); + qs += '&dsn=' + encode(dsn); + var user = options.user || this._globalContext.user; + if (user) { + if (user.name) qs += '&name=' + encode(user.name); + if (user.email) qs += '&email=' + encode(user.email); + } - function traceKitWindowOnError(msg, url, lineNo, colNo, ex) { - var stack = null; // If 'ex' is ErrorEvent, get real Error from inside + var globalServer = this._getGlobalServer(this._parseDSN(dsn)); - var exception = utils.isErrorEvent(ex) ? ex.error : ex; // If 'msg' is ErrorEvent, get real message from inside + var script = _document.createElement('script'); + script.async = true; + script.src = globalServer + '/api/embed/error-page/' + qs; + (_document.head || _document.body).appendChild(script); + }, - var message = utils.isErrorEvent(msg) ? msg.message : msg; + /**** Private functions ****/ + _ignoreNextOnError: function() { + var self = this; + this._ignoreOnError += 1; + setTimeout(function() { + // onerror should trigger before setTimeout + self._ignoreOnError -= 1; + }); + }, - if (lastExceptionStack) { - TraceKit.computeStackTrace.augmentStackTraceWithInitialElement(lastExceptionStack, url, lineNo, message); - processLastException(); - } else if (exception && utils.isError(exception)) { - // non-string `exception` arg; attempt to extract stack trace - // New chrome and blink send along a real error object - // Let's just report that like a normal error. - // See: https://mikewest.org/2013/08/debugging-runtime-errors-with-window-onerror - stack = TraceKit.computeStackTrace(exception); - notifyHandlers(stack, true); - } else { - var location = { - url: url, - line: lineNo, - column: colNo - }; - var name = undefined; - var groups; + _triggerEvent: function(eventType, options) { + // NOTE: `event` is a native browser thing, so let's avoid conflicting wiht it + var evt, key; - if ({}.toString.call(message) === '[object String]') { - var groups = message.match(ERROR_TYPES_RE); + if (!this._hasDocument) return; - if (groups) { - name = groups[1]; - message = groups[2]; - } - } + options = options || {}; - location.func = UNKNOWN_FUNCTION; - stack = { - name: name, - message: message, - url: getLocationHref(), - stack: [location] - }; - notifyHandlers(stack, true); - } + eventType = 'raven' + eventType.substr(0, 1).toUpperCase() + eventType.substr(1); - if (_oldOnerrorHandler) { - return _oldOnerrorHandler.apply(this, arguments); + if (_document.createEvent) { + evt = _document.createEvent('HTMLEvents'); + evt.initEvent(eventType, true, true); + } else { + evt = _document.createEventObject(); + evt.eventType = eventType; } - return false; - } + for (key in options) + if (hasKey(options, key)) { + evt[key] = options[key]; + } - function installGlobalHandler() { - if (_onErrorHandlerInstalled) { - return; + if (_document.createEvent) { + // IE9 if standards + _document.dispatchEvent(evt); + } else { + // IE8 regardless of Quirks or Standards + // IE9 if quirks + try { + _document.fireEvent('on' + evt.eventType.toLowerCase(), evt); + } catch (e) { + // Do nothing + } } + }, - _oldOnerrorHandler = _window$2.onerror; - _window$2.onerror = traceKitWindowOnError; - _onErrorHandlerInstalled = true; - } + /** + * Wraps addEventListener to capture UI breadcrumbs + * @param evtName the event name (e.g. "click") + * @returns {Function} + * @private + */ + _breadcrumbEventHandler: function(evtName) { + var self = this; + return function(evt) { + // reset keypress timeout; e.g. triggering a 'click' after + // a 'keypress' will reset the keypress debounce so that a new + // set of keypresses can be recorded + self._keypressTimeout = null; - function uninstallGlobalHandler() { - if (!_onErrorHandlerInstalled) { - return; - } + // It's possible this handler might trigger multiple times for the same + // event (e.g. event propagation through node ancestors). Ignore if we've + // already captured the event. + if (self._lastCapturedEvent === evt) return; - _window$2.onerror = _oldOnerrorHandler; - _onErrorHandlerInstalled = false; - _oldOnerrorHandler = undefined; - } - - function processLastException() { - var _lastExceptionStack = lastExceptionStack, - _lastArgs = lastArgs; - lastArgs = null; - lastExceptionStack = null; - lastException = null; - notifyHandlers.apply(null, [_lastExceptionStack, false].concat(_lastArgs)); - } - /** - * Reports an unhandled Error to TraceKit. - * @param {Error} ex - * @param {?boolean} rethrow If false, do not re-throw the exception. - * Only used for window.onerror to not cause an infinite loop of - * rethrowing. - */ - - - function report(ex, rethrow) { - var args = _slice.call(arguments, 1); - - if (lastExceptionStack) { - if (lastException === ex) { - return; // already caught by an inner catch block, ignore - } else { - processLastException(); - } - } - - var stack = TraceKit.computeStackTrace(ex); - lastExceptionStack = stack; - lastException = ex; - lastArgs = args; // If the stack trace is incomplete, wait for 2 seconds for - // slow slow IE to see if onerror occurs or not before reporting - // this exception; otherwise, we will end up with an incomplete - // stack trace - - setTimeout(function () { - if (lastException === ex) { - processLastException(); - } - }, stack.incomplete ? 2000 : 0); - - if (rethrow !== false) { - throw ex; // re-throw to propagate to the top level (and cause window.onerror) - } - } - - report.subscribe = subscribe; - report.unsubscribe = unsubscribe; - report.uninstall = unsubscribeAll; - return report; -}(); -/** - * TraceKit.computeStackTrace: cross-browser stack traces in JavaScript - * - * Syntax: - * s = TraceKit.computeStackTrace(exception) // consider using TraceKit.report instead (see below) - * Returns: - * s.name - exception name - * s.message - exception message - * s.stack[i].url - JavaScript or HTML file URL - * s.stack[i].func - function name, or empty for anonymous functions (if guessing did not work) - * s.stack[i].args - arguments passed to the function, if known - * s.stack[i].line - line number, if known - * s.stack[i].column - column number, if known - * - * Supports: - * - Firefox: full stack trace with line numbers and unreliable column - * number on top frame - * - Opera 10: full stack trace with line and column numbers - * - Opera 9-: full stack trace with line numbers - * - Chrome: full stack trace with line and column numbers - * - Safari: line and column number for the topmost stacktrace element - * only - * - IE: no line numbers whatsoever - * - * Tries to guess names of anonymous functions by looking for assignments - * in the source code. In IE and Safari, we have to guess source file names - * by searching for function bodies inside all page scripts. This will not - * work for scripts that are loaded cross-domain. - * Here be dragons: some function names may be guessed incorrectly, and - * duplicate functions may be mismatched. - * - * TraceKit.computeStackTrace should only be used for tracing purposes. - * Logging of unhandled exceptions should be done with TraceKit.report, - * which builds on top of TraceKit.computeStackTrace and provides better - * IE support by utilizing the window.onerror event to retrieve information - * about the top of the stack. - * - * Note: In IE and Safari, no stack trace is recorded on the Error object, - * so computeStackTrace instead walks its *own* chain of callers. - * This means that: - * * in Safari, some methods may be missing from the stack trace; - * * in IE, the topmost function in the stack trace will always be the - * caller of computeStackTrace. - * - * This is okay for tracing (because you are likely to be calling - * computeStackTrace from the function you want to be the topmost element - * of the stack trace anyway), but not okay for logging unhandled - * exceptions (because your catch block will likely be far away from the - * inner function that actually caused the exception). - * - */ - - -TraceKit.computeStackTrace = function computeStackTraceWrapper() { - // Contents of Exception in various browsers. - // - // SAFARI: - // ex.message = Can't find variable: qq - // ex.line = 59 - // ex.sourceId = 580238192 - // ex.sourceURL = http://... - // ex.expressionBeginOffset = 96 - // ex.expressionCaretOffset = 98 - // ex.expressionEndOffset = 98 - // ex.name = ReferenceError - // - // FIREFOX: - // ex.message = qq is not defined - // ex.fileName = http://... - // ex.lineNumber = 59 - // ex.columnNumber = 69 - // ex.stack = ...stack trace... (see the example below) - // ex.name = ReferenceError - // - // CHROME: - // ex.message = qq is not defined - // ex.name = ReferenceError - // ex.type = not_defined - // ex.arguments = ['aa'] - // ex.stack = ...stack trace... - // - // INTERNET EXPLORER: - // ex.message = ... - // ex.name = ReferenceError - // - // OPERA: - // ex.message = ...message... (see the example below) - // ex.name = ReferenceError - // ex.opera#sourceloc = 11 (pretty much useless, duplicates the info in ex.message) - // ex.stacktrace = n/a; see 'opera:config#UserPrefs|Exceptions Have Stacktrace' - - /** - * Computes stack trace information from the stack property. - * Chrome and Gecko use this property. - * @param {Error} ex - * @return {?Object.} Stack trace information. - */ - function computeStackTraceFromStackProp(ex) { - if (typeof ex.stack === 'undefined' || !ex.stack) return; - var chrome = /^\s*at (.*?) ?\(((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i, - gecko = /^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|\[native).*?|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i, - winjs = /^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i, - // Used to additionally parse URL/line/column from eval frames - geckoEval = /(\S+) line (\d+)(?: > eval line \d+)* > eval/i, - chromeEval = /\((\S*)(?::(\d+))(?::(\d+))\)/, - lines = ex.stack.split('\n'), - stack = [], - submatch, - parts, - element, - reference = /^(.*) is undefined$/.exec(ex.message); - - for (var i = 0, j = lines.length; i < j; ++i) { - if (parts = chrome.exec(lines[i])) { - var isNative = parts[2] && parts[2].indexOf('native') === 0; // start of line - - var isEval = parts[2] && parts[2].indexOf('eval') === 0; // start of line - - if (isEval && (submatch = chromeEval.exec(parts[2]))) { - // throw out eval line/column and use top-most line/column number - parts[2] = submatch[1]; // url - - parts[3] = submatch[2]; // line - - parts[4] = submatch[3]; // column - } - - element = { - url: !isNative ? parts[2] : null, - func: parts[1] || UNKNOWN_FUNCTION, - args: isNative ? [parts[2]] : [], - line: parts[3] ? +parts[3] : null, - column: parts[4] ? +parts[4] : null - }; - } else if (parts = winjs.exec(lines[i])) { - element = { - url: parts[2], - func: parts[1] || UNKNOWN_FUNCTION, - args: [], - line: +parts[3], - column: parts[4] ? +parts[4] : null - }; - } else if (parts = gecko.exec(lines[i])) { - var isEval = parts[3] && parts[3].indexOf(' > eval') > -1; + self._lastCapturedEvent = evt; - if (isEval && (submatch = geckoEval.exec(parts[3]))) { - // throw out eval line/column and use top-most line number - parts[3] = submatch[1]; - parts[4] = submatch[2]; - parts[5] = null; // no column when eval - } else if (i === 0 && !parts[5] && typeof ex.columnNumber !== 'undefined') { - // FireFox uses this awesome columnNumber property for its top frame - // Also note, Firefox's column number is 0-based and everything else expects 1-based, - // so adding 1 - // NOTE: this hack doesn't work if top-most frame is eval - stack[0].column = ex.columnNumber + 1; - } - - element = { - url: parts[3], - func: parts[1] || UNKNOWN_FUNCTION, - args: parts[2] ? parts[2].split(',') : [], - line: parts[4] ? +parts[4] : null, - column: parts[5] ? +parts[5] : null - }; - } else { - continue; - } - - if (!element.func && element.line) { - element.func = UNKNOWN_FUNCTION; + // try/catch both: + // - accessing evt.target (see getsentry/raven-js#838, #768) + // - `htmlTreeAsString` because it's complex, and just accessing the DOM incorrectly + // can throw an exception in some circumstances. + var target; + try { + target = htmlTreeAsString(evt.target); + } catch (e) { + target = ''; } - stack.push(element); - } - - if (!stack.length) { - return null; - } - - return { - name: ex.name, - message: ex.message, - url: getLocationHref(), - stack: stack - }; - } - /** - * Adds information about the first frame to incomplete stack traces. - * Safari and IE require this to get complete data on the first frame. - * @param {Object.} stackInfo Stack trace information from - * one of the compute* methods. - * @param {string} url The URL of the script that caused an error. - * @param {(number|string)} lineNo The line number of the script that - * caused an error. - * @param {string=} message The error generated by the browser, which - * hopefully contains the name of the object that caused the error. - * @return {boolean} Whether or not the stack information was - * augmented. - */ - - - function augmentStackTraceWithInitialElement(stackInfo, url, lineNo, message) { - var initial = { - url: url, - line: lineNo + self.captureBreadcrumb({ + category: 'ui.' + evtName, // e.g. ui.click, ui.input + message: target + }); }; + }, - if (initial.url && initial.line) { - stackInfo.incomplete = false; - - if (!initial.func) { - initial.func = UNKNOWN_FUNCTION; - } - - if (stackInfo.stack.length > 0) { - if (stackInfo.stack[0].url === initial.url) { - if (stackInfo.stack[0].line === initial.line) { - return false; // already in stack trace - } else if (!stackInfo.stack[0].line && stackInfo.stack[0].func === initial.func) { - stackInfo.stack[0].line = initial.line; - return false; - } - } - } - - stackInfo.stack.unshift(initial); - stackInfo.partial = true; - return true; - } else { - stackInfo.incomplete = true; - } - - return false; - } - /** - * Computes stack trace information by walking the arguments.caller - * chain at the time the exception occurred. This will cause earlier - * frames to be missed but is the only way to get any stack trace in - * Safari and IE. The top frame is restored by - * {@link augmentStackTraceWithInitialElement}. - * @param {Error} ex - * @return {?Object.} Stack trace information. - */ - - - function computeStackTraceByWalkingCallerChain(ex, depth) { - var functionName = /function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i, - stack = [], - funcs = {}, - recursion = false, - parts, - item; - - for (var curr = computeStackTraceByWalkingCallerChain.caller; curr && !recursion; curr = curr.caller) { - if (curr === computeStackTrace || curr === TraceKit.report) { - // console.log('skipping internal function'); - continue; - } - - item = { - url: null, - func: UNKNOWN_FUNCTION, - line: null, - column: null - }; - - if (curr.name) { - item.func = curr.name; - } else if (parts = functionName.exec(curr.toString())) { - item.func = parts[1]; - } - - if (typeof item.func === 'undefined') { - try { - item.func = parts.input.substring(0, parts.input.indexOf('{')); - } catch (e) {} - } - - if (funcs['' + curr]) { - recursion = true; - } else { - funcs['' + curr] = true; - } - - stack.push(item); - } - - if (depth) { - // console.log('depth is ' + depth); - // console.log('stack is ' + stack.length); - stack.splice(0, depth); - } - - var result = { - name: ex.name, - message: ex.message, - url: getLocationHref(), - stack: stack - }; - augmentStackTraceWithInitialElement(result, ex.sourceURL || ex.fileName, ex.line || ex.lineNumber, ex.message || ex.description); - return result; - } /** - * Computes a stack trace for an exception. - * @param {Error} ex - * @param {(string|number)=} depth - */ - - - function computeStackTrace(ex, depth) { - var stack = null; - depth = depth == null ? 0 : +depth; - - try { - stack = computeStackTraceFromStackProp(ex); - - if (stack) { - return stack; - } - } catch (e) { - if (TraceKit.debug) { - throw e; + * Wraps addEventListener to capture keypress UI events + * @returns {Function} + * @private + */ + _keypressEventHandler: function() { + var self = this, + debounceDuration = 1000; // milliseconds + + // TODO: if somehow user switches keypress target before + // debounce timeout is triggered, we will only capture + // a single breadcrumb from the FIRST target (acceptable?) + return function(evt) { + var target; + try { + target = evt.target; + } catch (e) { + // just accessing event properties can throw an exception in some rare circumstances + // see: https://github.com/getsentry/raven-js/issues/838 + return; } - } + var tagName = target && target.tagName; - try { - stack = computeStackTraceByWalkingCallerChain(ex, depth + 1); + // only consider keypress events on actual input elements + // this will disregard keypresses targeting body (e.g. tabbing + // through elements, hotkeys, etc) + if ( + !tagName || + (tagName !== 'INPUT' && tagName !== 'TEXTAREA' && !target.isContentEditable) + ) + return; - if (stack) { - return stack; - } - } catch (e) { - if (TraceKit.debug) { - throw e; + // record first keypress in a series, but ignore subsequent + // keypresses until debounce clears + var timeout = self._keypressTimeout; + if (!timeout) { + self._breadcrumbEventHandler('input')(evt); } - } - - return { - name: ex.name, - message: ex.message, - url: getLocationHref() + clearTimeout(timeout); + self._keypressTimeout = setTimeout(function() { + self._keypressTimeout = null; + }, debounceDuration); }; - } - - computeStackTrace.augmentStackTraceWithInitialElement = augmentStackTraceWithInitialElement; - computeStackTrace.computeStackTraceFromStackProp = computeStackTraceFromStackProp; - return computeStackTrace; -}(); + }, -var tracekit = TraceKit; + /** + * Captures a breadcrumb of type "navigation", normalizing input URLs + * @param to the originating URL + * @param from the target URL + * @private + */ + _captureUrlChange: function(from, to) { + var parsedLoc = parseUrl(this._location.href); + var parsedTo = parseUrl(to); + var parsedFrom = parseUrl(from); -var stringify_1 = createCommonjsModule(function (module, exports) { - /* - json-stringify-safe - Like JSON.stringify, but doesn't throw on circular references. - - Originally forked from https://github.com/isaacs/json-stringify-safe - version 5.0.1 on 3/8/2017 and modified to handle Errors serialization - and IE8 compatibility. Tests for this are in test/vendor. - - ISC license: https://github.com/isaacs/json-stringify-safe/blob/master/LICENSE - */ - exports = module.exports = stringify; - exports.getSerialize = serializer; - - function indexOf(haystack, needle) { - for (var i = 0; i < haystack.length; ++i) { - if (haystack[i] === needle) return i; - } - - return -1; - } + // because onpopstate only tells you the "new" (to) value of location.href, and + // not the previous (from) value, we need to track the value of the current URL + // state ourselves + this._lastHref = to; - function stringify(obj, replacer, spaces, cycleReplacer) { - return JSON.stringify(obj, serializer(replacer, cycleReplacer), spaces); - } // https://github.com/ftlabs/js-abbreviate/blob/fa709e5f139e7770a71827b1893f22418097fbda/index.js#L95-L106 + // Use only the path component of the URL if the URL matches the current + // document (almost all the time when using pushState) + if (parsedLoc.protocol === parsedTo.protocol && parsedLoc.host === parsedTo.host) + to = parsedTo.relative; + if (parsedLoc.protocol === parsedFrom.protocol && parsedLoc.host === parsedFrom.host) + from = parsedFrom.relative; + this.captureBreadcrumb({ + category: 'navigation', + data: { + to: to, + from: from + } + }); + }, - function stringifyError(value) { - var err = { - // These properties are implemented as magical getters and don't show up in for in - stack: value.stack, - message: value.message, - name: value.name + _patchFunctionToString: function() { + var self = this; + self._originalFunctionToString = Function.prototype.toString; + // eslint-disable-next-line no-extend-native + Function.prototype.toString = function() { + if (typeof this === 'function' && this.__raven__) { + return self._originalFunctionToString.apply(this.__orig__, arguments); + } + return self._originalFunctionToString.apply(this, arguments); }; + }, - for (var i in value) { - if (Object.prototype.hasOwnProperty.call(value, i)) { - err[i] = value[i]; - } + _unpatchFunctionToString: function() { + if (this._originalFunctionToString) { + // eslint-disable-next-line no-extend-native + Function.prototype.toString = this._originalFunctionToString; } + }, - return err; - } + /** + * Wrap timer functions and event targets to catch errors and provide + * better metadata. + */ + _instrumentTryCatch: function() { + var self = this; - function serializer(replacer, cycleReplacer) { - var stack = []; - var keys = []; + var wrappedBuiltIns = self._wrappedBuiltIns; - if (cycleReplacer == null) { - cycleReplacer = function cycleReplacer(key, value) { - if (stack[0] === value) { - return '[Circular ~]'; + function wrapTimeFn(orig) { + return function(fn, t) { + // preserve arity + // Make a copy of the arguments to prevent deoptimization + // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments + var args = new Array(arguments.length); + for (var i = 0; i < args.length; ++i) { + args[i] = arguments[i]; + } + var originalCallback = args[0]; + if (isFunction(originalCallback)) { + args[0] = self.wrap(originalCallback); } - return '[Circular ~.' + keys.slice(0, indexOf(stack, value)).join('.') + ']'; + // IE < 9 doesn't support .call/.apply on setInterval/setTimeout, but it + // also supports only two arguments and doesn't care what this is, so we + // can just call the original function directly. + if (orig.apply) { + return orig.apply(this, args); + } else { + return orig(args[0], args[1]); + } }; } - return function (key, value) { - if (stack.length > 0) { - var thisPos = indexOf(stack, this); - ~thisPos ? stack.splice(thisPos + 1) : stack.push(this); - ~thisPos ? keys.splice(thisPos, Infinity, key) : keys.push(key); - - if (~indexOf(stack, value)) { - value = cycleReplacer.call(this, key, value); - } - } else { - stack.push(value); - } - - return replacer == null ? value instanceof Error ? stringifyError(value) : value : replacer.call(this, key, value); - }; - } -}); -var stringify_2 = stringify_1.getSerialize; - -function RavenConfigError(message) { - this.name = 'RavenConfigError'; - this.message = message; -} - -RavenConfigError.prototype = new Error(); -RavenConfigError.prototype.constructor = RavenConfigError; -var configError = RavenConfigError; - -var wrapMethod = function wrapMethod(console, level, callback) { - var originalConsoleLevel = console[level]; - var originalConsole = console; - - if (!(level in console)) { - return; - } - - var sentryLevel = level === 'warn' ? 'warning' : level; + var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; - console[level] = function () { - var args = [].slice.call(arguments); - var msg = utils.safeJoin(args, ' '); - var data = { - level: sentryLevel, - logger: 'console', - extra: { - arguments: args - } - }; + function wrapEventTarget(global) { + var proto = _window[global] && _window[global].prototype; + if (proto && proto.hasOwnProperty && proto.hasOwnProperty('addEventListener')) { + fill( + proto, + 'addEventListener', + function(orig) { + return function(evtName, fn, capture, secure) { + // preserve arity + try { + if (fn && fn.handleEvent) { + fn.handleEvent = self.wrap(fn.handleEvent); + } + } catch (err) { + // can sometimes get 'Permission denied to access property "handle Event' + } - if (level === 'assert') { - if (args[0] === false) { - // Default browsers message - msg = 'Assertion failed: ' + (utils.safeJoin(args.slice(1), ' ') || 'console.assert'); - data.extra.arguments = args.slice(1); - callback && callback(msg, data); + // More breadcrumb DOM capture ... done here and not in `_instrumentBreadcrumbs` + // so that we don't have more than one wrapper function + var before, clickHandler, keypressHandler; + + if ( + autoBreadcrumbs && + autoBreadcrumbs.dom && + (global === 'EventTarget' || global === 'Node') + ) { + // NOTE: generating multiple handlers per addEventListener invocation, should + // revisit and verify we can just use one (almost certainly) + clickHandler = self._breadcrumbEventHandler('click'); + keypressHandler = self._keypressEventHandler(); + before = function(evt) { + // need to intercept every DOM event in `before` argument, in case that + // same wrapped method is re-used for different events (e.g. mousemove THEN click) + // see #724 + if (!evt) return; + + var eventType; + try { + eventType = evt.type; + } catch (e) { + // just accessing event properties can throw an exception in some rare circumstances + // see: https://github.com/getsentry/raven-js/issues/838 + return; + } + if (eventType === 'click') return clickHandler(evt); + else if (eventType === 'keypress') return keypressHandler(evt); + }; + } + return orig.call( + this, + evtName, + self.wrap(fn, undefined, before), + capture, + secure + ); + }; + }, + wrappedBuiltIns + ); + fill( + proto, + 'removeEventListener', + function(orig) { + return function(evt, fn, capture, secure) { + try { + fn = fn && (fn.__raven_wrapper__ ? fn.__raven_wrapper__ : fn); + } catch (e) { + // ignore, accessing __raven_wrapper__ will throw in some Selenium environments + } + return orig.call(this, evt, fn, capture, secure); + }; + }, + wrappedBuiltIns + ); } - } else { - callback && callback(msg, data); - } // this fails for some browsers. :( - - - if (originalConsoleLevel) { - // IE9 doesn't allow calling apply on console functions directly - // See: https://stackoverflow.com/questions/5472938/does-ie9-support-console-log-and-is-it-a-real-function#answer-5473193 - Function.prototype.apply.call(originalConsoleLevel, originalConsole, args); } - }; -}; -var console$1 = { - wrapMethod: wrapMethod -}; + fill(_window, 'setTimeout', wrapTimeFn, wrappedBuiltIns); + fill(_window, 'setInterval', wrapTimeFn, wrappedBuiltIns); + if (_window.requestAnimationFrame) { + fill( + _window, + 'requestAnimationFrame', + function(orig) { + return function(cb) { + return orig(self.wrap(cb)); + }; + }, + wrappedBuiltIns + ); + } -/*global XDomainRequest:false */ + // event targets borrowed from bugsnag-js: + // https://github.com/bugsnag/bugsnag-js/blob/master/src/bugsnag.js#L666 + var eventTargets = [ + 'EventTarget', + 'Window', + 'Node', + 'ApplicationCache', + 'AudioTrackList', + 'ChannelMergerNode', + 'CryptoOperation', + 'EventSource', + 'FileReader', + 'HTMLUnknownElement', + 'IDBDatabase', + 'IDBRequest', + 'IDBTransaction', + 'KeyOperation', + 'MediaController', + 'MessagePort', + 'ModalWindow', + 'Notification', + 'SVGElementInstance', + 'Screen', + 'TextTrack', + 'TextTrackCue', + 'TextTrackList', + 'WebSocket', + 'WebSocketWorker', + 'Worker', + 'XMLHttpRequest', + 'XMLHttpRequestEventTarget', + 'XMLHttpRequestUpload' + ]; + for (var i = 0; i < eventTargets.length; i++) { + wrapEventTarget(eventTargets[i]); + } + }, -var isError = utils.isError; -var isObject = utils.isObject; -var isErrorEvent = utils.isErrorEvent; -var isUndefined = utils.isUndefined; -var isFunction = utils.isFunction; -var isString = utils.isString; -var isArray = utils.isArray; -var isEmptyObject = utils.isEmptyObject; -var each = utils.each; -var objectMerge = utils.objectMerge; -var truncate = utils.truncate; -var objectFrozen = utils.objectFrozen; -var hasKey = utils.hasKey; -var joinRegExp = utils.joinRegExp; -var urlencode = utils.urlencode; -var uuid4 = utils.uuid4; -var htmlTreeAsString = utils.htmlTreeAsString; -var isSameException = utils.isSameException; -var isSameStacktrace = utils.isSameStacktrace; -var parseUrl = utils.parseUrl; -var fill = utils.fill; -var supportsFetch = utils.supportsFetch; -var wrapConsoleMethod = console$1.wrapMethod; -var dsnKeys = 'source protocol user pass host port path'.split(' '); -var dsnPattern = /^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/; + /** + * Instrument browser built-ins w/ breadcrumb capturing + * - XMLHttpRequests + * - DOM interactions (click/typing) + * - window.location changes + * - console + * + * Can be disabled or individually configured via the `autoBreadcrumbs` config option + */ + _instrumentBreadcrumbs: function() { + var self = this; + var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; -function now() { - return +new Date(); -} // This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) + var wrappedBuiltIns = self._wrappedBuiltIns; + function wrapProp(prop, xhr) { + if (prop in xhr && isFunction(xhr[prop])) { + fill(xhr, prop, function(orig) { + return self.wrap(orig); + }); // intentionally don't track filled methods on XHR instances + } + } -var _window$1 = typeof window !== 'undefined' ? window : typeof commonjsGlobal !== 'undefined' ? commonjsGlobal : typeof self !== 'undefined' ? self : {}; + if (autoBreadcrumbs.xhr && 'XMLHttpRequest' in _window) { + var xhrproto = _window.XMLHttpRequest && _window.XMLHttpRequest.prototype; + fill( + xhrproto, + 'open', + function(origOpen) { + return function(method, url) { + // preserve arity -var _document = _window$1.document; -var _navigator = _window$1.navigator; + // if Sentry key appears in URL, don't capture + if (isString(url) && url.indexOf(self._globalKey) === -1) { + this.__raven_xhr = { + method: method, + url: url, + status_code: null + }; + } -function keepOriginalCallback(original, callback) { - return isFunction(callback) ? function (data) { - return callback(data, original); - } : callback; -} // First, check for JSON support -// If there is no JSON, we no-op the core features of Raven -// since JSON is required to encode the payload + return origOpen.apply(this, arguments); + }; + }, + wrappedBuiltIns + ); + + fill( + xhrproto, + 'send', + function(origSend) { + return function() { + // preserve arity + var xhr = this; + function onreadystatechangeHandler() { + if (xhr.__raven_xhr && xhr.readyState === 4) { + try { + // touching statusCode in some platforms throws + // an exception + xhr.__raven_xhr.status_code = xhr.status; + } catch (e) { + /* do nothing */ + } -function Raven$1() { - this._hasJSON = !!(_typeof(JSON) === 'object' && JSON.stringify); // Raven can run in contexts where there's no document (react-native) + self.captureBreadcrumb({ + type: 'http', + category: 'xhr', + data: xhr.__raven_xhr + }); + } + } - this._hasDocument = !isUndefined(_document); - this._hasNavigator = !isUndefined(_navigator); - this._lastCapturedException = null; - this._lastData = null; - this._lastEventId = null; - this._globalServer = null; - this._globalKey = null; - this._globalProject = null; - this._globalContext = {}; - this._globalOptions = { - // SENTRY_RELEASE can be injected by https://github.com/getsentry/sentry-webpack-plugin - release: _window$1.SENTRY_RELEASE && _window$1.SENTRY_RELEASE.id, - logger: 'javascript', - ignoreErrors: [], - ignoreUrls: [], - whitelistUrls: [], - includePaths: [], - headers: null, - collectWindowErrors: true, - maxMessageLength: 0, - // By default, truncates URL values to 250 chars - maxUrlLength: 250, - stackTraceLimit: 50, - autoBreadcrumbs: true, - instrument: true, - sampleRate: 1 - }; - this._fetchDefaults = { - method: 'POST', - keepalive: true, - referrerPolicy: 'origin' - }; - this._ignoreOnError = 0; - this._isRavenInstalled = false; - this._originalErrorStackTraceLimit = Error.stackTraceLimit; // capture references to window.console *and* all its methods first - // before the console plugin has a chance to monkey patch + var props = ['onload', 'onerror', 'onprogress']; + for (var j = 0; j < props.length; j++) { + wrapProp(props[j], xhr); + } - this._originalConsole = _window$1.console || {}; - this._originalConsoleMethods = {}; - this._plugins = []; - this._startTime = now(); - this._wrappedBuiltIns = []; - this._breadcrumbs = []; - this._lastCapturedEvent = null; - this._keypressTimeout; - this._location = _window$1.location; - this._lastHref = this._location && this._location.href; + if ('onreadystatechange' in xhr && isFunction(xhr.onreadystatechange)) { + fill( + xhr, + 'onreadystatechange', + function(orig) { + return self.wrap(orig, undefined, onreadystatechangeHandler); + } /* intentionally don't track this instrumentation */ + ); + } else { + // if onreadystatechange wasn't actually set by the page on this xhr, we + // are free to set our own and capture the breadcrumb + xhr.onreadystatechange = onreadystatechangeHandler; + } - this._resetBackoff(); // eslint-disable-next-line guard-for-in + return origSend.apply(this, arguments); + }; + }, + wrappedBuiltIns + ); + } + if (autoBreadcrumbs.xhr && supportsFetch()) { + fill( + _window, + 'fetch', + function(origFetch) { + return function() { + // preserve arity + // Make a copy of the arguments to prevent deoptimization + // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments + var args = new Array(arguments.length); + for (var i = 0; i < args.length; ++i) { + args[i] = arguments[i]; + } - for (var method in this._originalConsole) { - this._originalConsoleMethods[method] = this._originalConsole[method]; - } -} -/* - * The core Raven singleton - * - * @this {Raven} - */ + var fetchInput = args[0]; + var method = 'GET'; + var url; + if (typeof fetchInput === 'string') { + url = fetchInput; + } else if ('Request' in _window && fetchInput instanceof _window.Request) { + url = fetchInput.url; + if (fetchInput.method) { + method = fetchInput.method; + } + } else { + url = '' + fetchInput; + } -Raven$1.prototype = { - // Hardcode version string so that raven source can be loaded directly via - // webpack (using a build step causes webpack #1617). Grunt verifies that - // this value matches package.json during build. - // See: https://github.com/getsentry/raven-js/issues/465 - VERSION: '3.22.2', - debug: false, - TraceKit: tracekit, - // alias to TraceKit + // if Sentry key appears in URL, don't capture, as it's our own request + if (url.indexOf(self._globalKey) !== -1) { + return origFetch.apply(this, args); + } - /* - * Configure Raven with a DSN and extra options - * - * @param {string} dsn The public Sentry DSN - * @param {object} options Set of global options [optional] - * @return {Raven} - */ - config: function config(dsn, options) { - var self = this; + if (args[1] && args[1].method) { + method = args[1].method; + } - if (self._globalServer) { - this._logDebug('error', 'Error: Raven has already been configured'); + var fetchData = { + method: method, + url: url, + status_code: null + }; - return self; + return origFetch + .apply(this, args) + .then(function(response) { + fetchData.status_code = response.status; + + self.captureBreadcrumb({ + type: 'http', + category: 'fetch', + data: fetchData + }); + + return response; + }) + ['catch'](function(err) { + // if there is an error performing the request + self.captureBreadcrumb({ + type: 'http', + category: 'fetch', + data: fetchData, + level: 'error' + }); + + throw err; + }); + }; + }, + wrappedBuiltIns + ); } - if (!dsn) return self; - var globalOptions = self._globalOptions; // merge in options - - if (options) { - each(options, function (key, value) { - // tags and extra are special and need to be put into context - if (key === 'tags' || key === 'extra' || key === 'user') { - self._globalContext[key] = value; - } else { - globalOptions[key] = value; - } - }); + // Capture breadcrumbs from any click that is unhandled / bubbled up all the way + // to the document. Do this before we instrument addEventListener. + if (autoBreadcrumbs.dom && this._hasDocument) { + if (_document.addEventListener) { + _document.addEventListener('click', self._breadcrumbEventHandler('click'), false); + _document.addEventListener('keypress', self._keypressEventHandler(), false); + } else if (_document.attachEvent) { + // IE8 Compatibility + _document.attachEvent('onclick', self._breadcrumbEventHandler('click')); + _document.attachEvent('onkeypress', self._keypressEventHandler()); + } } - self.setDSN(dsn); // "Script error." is hard coded into browsers for errors that it can't read. - // this is the result of a script being pulled in from an external domain and CORS. + // record navigation (URL) changes + // NOTE: in Chrome App environment, touching history.pushState, *even inside + // a try/catch block*, will cause Chrome to output an error to console.error + // borrowed from: https://github.com/angular/angular.js/pull/13945/files + var chrome = _window.chrome; + var isChromePackagedApp = chrome && chrome.app && chrome.app.runtime; + var hasPushAndReplaceState = + !isChromePackagedApp && + _window.history && + history.pushState && + history.replaceState; + if (autoBreadcrumbs.location && hasPushAndReplaceState) { + // TODO: remove onpopstate handler on uninstall() + var oldOnPopState = _window.onpopstate; + _window.onpopstate = function() { + var currentHref = self._location.href; + self._captureUrlChange(self._lastHref, currentHref); - globalOptions.ignoreErrors.push(/^Script error\.?$/); - globalOptions.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/); // join regexp rules into one big rule + if (oldOnPopState) { + return oldOnPopState.apply(this, arguments); + } + }; - globalOptions.ignoreErrors = joinRegExp(globalOptions.ignoreErrors); - globalOptions.ignoreUrls = globalOptions.ignoreUrls.length ? joinRegExp(globalOptions.ignoreUrls) : false; - globalOptions.whitelistUrls = globalOptions.whitelistUrls.length ? joinRegExp(globalOptions.whitelistUrls) : false; - globalOptions.includePaths = joinRegExp(globalOptions.includePaths); - globalOptions.maxBreadcrumbs = Math.max(0, Math.min(globalOptions.maxBreadcrumbs || 100, 100)); // default and hard limit is 100 + var historyReplacementFunction = function(origHistFunction) { + // note history.pushState.length is 0; intentionally not declaring + // params to preserve 0 arity + return function(/* state, title, url */) { + var url = arguments.length > 2 ? arguments[2] : undefined; - var autoBreadcrumbDefaults = { - xhr: true, - console: true, - dom: true, - location: true, - sentry: true - }; - var autoBreadcrumbs = globalOptions.autoBreadcrumbs; + // url argument is optional + if (url) { + // coerce to string (this is what pushState does) + self._captureUrlChange(self._lastHref, url + ''); + } - if ({}.toString.call(autoBreadcrumbs) === '[object Object]') { - autoBreadcrumbs = objectMerge(autoBreadcrumbDefaults, autoBreadcrumbs); - } else if (autoBreadcrumbs !== false) { - autoBreadcrumbs = autoBreadcrumbDefaults; + return origHistFunction.apply(this, arguments); + }; + }; + + fill(history, 'pushState', historyReplacementFunction, wrappedBuiltIns); + fill(history, 'replaceState', historyReplacementFunction, wrappedBuiltIns); } - globalOptions.autoBreadcrumbs = autoBreadcrumbs; - var instrumentDefaults = { - tryCatch: true - }; - var instrument = globalOptions.instrument; + if (autoBreadcrumbs.console && 'console' in _window && console.log) { + // console + var consoleMethodCallback = function(msg, data) { + self.captureBreadcrumb({ + message: msg, + level: data.level, + category: 'console' + }); + }; - if ({}.toString.call(instrument) === '[object Object]') { - instrument = objectMerge(instrumentDefaults, instrument); - } else if (instrument !== false) { - instrument = instrumentDefaults; + each(['debug', 'info', 'warn', 'error', 'log'], function(_, level) { + wrapConsoleMethod(console, level, consoleMethodCallback); + }); } + }, - globalOptions.instrument = instrument; - tracekit.collectWindowErrors = !!globalOptions.collectWindowErrors; // return for chaining + _restoreBuiltIns: function() { + // restore any wrapped builtins + var builtin; + while (this._wrappedBuiltIns.length) { + builtin = this._wrappedBuiltIns.shift(); - return self; + var obj = builtin[0], + name = builtin[1], + orig = builtin[2]; + + obj[name] = orig; + } }, - /* - * Installs a global window.onerror error handler - * to capture and report uncaught exceptions. - * At this point, install() is required to be called due - * to the way TraceKit is set up. - * - * @return {Raven} - */ - install: function install() { + _restoreConsole: function() { + // eslint-disable-next-line guard-for-in + for (var method in this._originalConsoleMethods) { + this._originalConsole[method] = this._originalConsoleMethods[method]; + } + }, + + _drainPlugins: function() { var self = this; - if (self.isSetup() && !self._isRavenInstalled) { - tracekit.report.subscribe(function () { - self._handleOnErrorStackInfo.apply(self, arguments); - }); + // FIX ME TODO + each(this._plugins, function(_, plugin) { + var installer = plugin[0]; + var args = plugin[1]; + installer.apply(self, [self].concat(args)); + }); + }, - self._patchFunctionToString(); + _parseDSN: function(str) { + var m = dsnPattern.exec(str), + dsn = {}, + i = 7; - if (self._globalOptions.instrument && self._globalOptions.instrument.tryCatch) { - self._instrumentTryCatch(); - } + try { + while (i--) dsn[dsnKeys[i]] = m[i] || ''; + } catch (e) { + throw new RavenConfigError('Invalid DSN: ' + str); + } - if (self._globalOptions.autoBreadcrumbs) self._instrumentBreadcrumbs(); // Install all of the plugins + if (dsn.pass && !this._globalOptions.allowSecretKey) { + throw new RavenConfigError( + 'Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key' + ); + } - self._drainPlugins(); + return dsn; + }, - self._isRavenInstalled = true; + _getGlobalServer: function(uri) { + // assemble the endpoint from the uri pieces + var globalServer = '//' + uri.host + (uri.port ? ':' + uri.port : ''); + + if (uri.protocol) { + globalServer = uri.protocol + ':' + globalServer; } + return globalServer; + }, - Error.stackTraceLimit = self._globalOptions.stackTraceLimit; - return this; + _handleOnErrorStackInfo: function() { + // if we are intentionally ignoring errors via onerror, bail out + if (!this._ignoreOnError) { + this._handleStackInfo.apply(this, arguments); + } }, - /* - * Set the DSN (can be called multiple time unlike config) - * - * @param {string} dsn The public Sentry DSN - */ - setDSN: function setDSN(dsn) { - var self = this, - uri = self._parseDSN(dsn), - lastSlash = uri.path.lastIndexOf('/'), - path = uri.path.substr(1, lastSlash); + _handleStackInfo: function(stackInfo, options) { + var frames = this._prepareFrames(stackInfo, options); - self._dsn = dsn; - self._globalKey = uri.user; - self._globalSecret = uri.pass && uri.pass.substr(1); - self._globalProject = uri.path.substr(lastSlash + 1); - self._globalServer = self._getGlobalServer(uri); - self._globalEndpoint = self._globalServer + '/' + path + 'api/' + self._globalProject + '/store/'; // Reset backoff state since we may be pointing at a - // new project/server + this._triggerEvent('handle', { + stackInfo: stackInfo, + options: options + }); - this._resetBackoff(); + this._processException( + stackInfo.name, + stackInfo.message, + stackInfo.url, + stackInfo.lineno, + frames, + options + ); }, - /* - * Wrap code within a context so Raven can capture errors - * reliably across domains that is executed immediately. - * - * @param {object} options A specific set of options for this context [optional] - * @param {function} func The callback to be immediately executed within the context - * @param {array} args An array of arguments to be called with the callback [optional] - */ - context: function context(options, func, args) { - if (isFunction(options)) { - args = func || []; - func = options; - options = undefined; - } + _prepareFrames: function(stackInfo, options) { + var self = this; + var frames = []; + if (stackInfo.stack && stackInfo.stack.length) { + each(stackInfo.stack, function(i, stack) { + var frame = self._normalizeFrame(stack, stackInfo.url); + if (frame) { + frames.push(frame); + } + }); - return this.wrap(options, func).apply(this, args); + // e.g. frames captured via captureMessage throw + if (options && options.trimHeadFrames) { + for (var j = 0; j < options.trimHeadFrames && j < frames.length; j++) { + frames[j].in_app = false; + } + } + } + frames = frames.slice(0, this._globalOptions.stackTraceLimit); + return frames; }, - /* - * Wrap code within a context and returns back a new function to be executed - * - * @param {object} options A specific set of options for this context [optional] - * @param {function} func The function to be wrapped in a new context - * @param {function} func A function to call before the try/catch wrapper [optional, private] - * @return {function} The newly wrapped functions with a context - */ - wrap: function wrap(options, func, _before) { - var self = this; // 1 argument has been passed, and it's not a function - // so just return it + _normalizeFrame: function(frame, stackInfoUrl) { + // normalize the frames data + var normalized = { + filename: frame.url, + lineno: frame.line, + colno: frame.column, + function: frame.func || '?' + }; + + // Case when we don't have any information about the error + // E.g. throwing a string or raw object, instead of an `Error` in Firefox + // Generating synthetic error doesn't add any value here + // + // We should probably somehow let a user know that they should fix their code + if (!frame.url) { + normalized.filename = stackInfoUrl; // fallback to whole stacks url from onerror handler + } - if (isUndefined(func) && !isFunction(options)) { - return options; - } // options is optional + normalized.in_app = !// determine if an exception came from outside of our app + // first we check the global includePaths list. + ( + (!!this._globalOptions.includePaths.test && + !this._globalOptions.includePaths.test(normalized.filename)) || + // Now we check for fun, if the function name is Raven or TraceKit + /(Raven|TraceKit)\./.test(normalized['function']) || + // finally, we do a last ditch effort and check for raven.min.js + /raven\.(min\.)?js$/.test(normalized.filename) + ); + return normalized; + }, - if (isFunction(options)) { - func = options; - options = undefined; - } // At this point, we've passed along 2 arguments, and the second one - // is not a function either, so we'll just return the second argument. + _processException: function(type, message, fileurl, lineno, frames, options) { + var prefixedMessage = (type ? type + ': ' : '') + (message || ''); + if ( + !!this._globalOptions.ignoreErrors.test && + (this._globalOptions.ignoreErrors.test(message) || + this._globalOptions.ignoreErrors.test(prefixedMessage)) + ) { + return; + } + var stacktrace; - if (!isFunction(func)) { - return func; - } // We don't wanna wrap it twice! + if (frames && frames.length) { + fileurl = frames[0].filename || fileurl; + // Sentry expects frames oldest to newest + // and JS sends them as newest to oldest + frames.reverse(); + stacktrace = {frames: frames}; + } else if (fileurl) { + stacktrace = { + frames: [ + { + filename: fileurl, + lineno: lineno, + in_app: true + } + ] + }; + } + if ( + !!this._globalOptions.ignoreUrls.test && + this._globalOptions.ignoreUrls.test(fileurl) + ) { + return; + } - try { - if (func.__raven__) { - return func; - } // If this has already been wrapped in the past, return that + if ( + !!this._globalOptions.whitelistUrls.test && + !this._globalOptions.whitelistUrls.test(fileurl) + ) { + return; + } + var data = objectMerge( + { + // sentry.interfaces.Exception + exception: { + values: [ + { + type: type, + value: message, + stacktrace: stacktrace + } + ] + }, + culprit: fileurl + }, + options + ); - if (func.__raven_wrapper__) { - return func.__raven_wrapper__; + // Fire away! + this._send(data); + }, + + _trimPacket: function(data) { + // For now, we only want to truncate the two different messages + // but this could/should be expanded to just trim everything + var max = this._globalOptions.maxMessageLength; + if (data.message) { + data.message = truncate(data.message, max); + } + if (data.exception) { + var exception = data.exception.values[0]; + exception.value = truncate(exception.value, max); + } + + var request = data.request; + if (request) { + if (request.url) { + request.url = truncate(request.url, this._globalOptions.maxUrlLength); + } + if (request.Referer) { + request.Referer = truncate(request.Referer, this._globalOptions.maxUrlLength); } - } catch (e) { - // Just accessing custom props in some Selenium environments - // can cause a "Permission denied" exception (see raven-js#495). - // Bail on wrapping and return the function as-is (defers to window.onerror). - return func; } - function wrapped() { - var args = [], - i = arguments.length, - deep = !options || options && options.deep !== false; + if (data.breadcrumbs && data.breadcrumbs.values) + this._trimBreadcrumbs(data.breadcrumbs); - if (_before && isFunction(_before)) { - _before.apply(this, arguments); - } // Recursively wrap all of a function's arguments that are - // functions themselves. + return data; + }, + + /** + * Truncate breadcrumb values (right now just URLs) + */ + _trimBreadcrumbs: function(breadcrumbs) { + // known breadcrumb properties with urls + // TODO: also consider arbitrary prop values that start with (https?)?:// + var urlProps = ['to', 'from', 'url'], + urlProp, + crumb, + data; + for (var i = 0; i < breadcrumbs.values.length; ++i) { + crumb = breadcrumbs.values[i]; + if ( + !crumb.hasOwnProperty('data') || + !isObject(crumb.data) || + objectFrozen(crumb.data) + ) + continue; - while (i--) { - args[i] = deep ? self.wrap(options, arguments[i]) : arguments[i]; + data = objectMerge({}, crumb.data); + for (var j = 0; j < urlProps.length; ++j) { + urlProp = urlProps[j]; + if (data.hasOwnProperty(urlProp) && data[urlProp]) { + data[urlProp] = truncate(data[urlProp], this._globalOptions.maxUrlLength); + } } + breadcrumbs.values[i].data = data; + } + }, - try { - // Attempt to invoke user-land function - // NOTE: If you are a Sentry user, and you are seeing this stack frame, it - // means Raven caught an error invoking your application code. This is - // expected behavior and NOT indicative of a bug with Raven.js. - return func.apply(this, args); - } catch (e) { - self._ignoreNextOnError(); + _getHttpData: function() { + if (!this._hasNavigator && !this._hasDocument) return; + var httpData = {}; - self.captureException(e, options); - throw e; - } - } // copy over properties of the old function + if (this._hasNavigator && _navigator.userAgent) { + httpData.headers = { + 'User-Agent': navigator.userAgent + }; + } + // Check in `window` instead of `document`, as we may be in ServiceWorker environment + if (_window.location && _window.location.href) { + httpData.url = _window.location.href; + } - for (var property in func) { - if (hasKey(func, property)) { - wrapped[property] = func[property]; - } + if (this._hasDocument && _document.referrer) { + if (!httpData.headers) httpData.headers = {}; + httpData.headers.Referer = _document.referrer; } - wrapped.prototype = func.prototype; - func.__raven_wrapper__ = wrapped; // Signal that this function has been wrapped/filled already - // for both debugging and to prevent it to being wrapped/filled twice + return httpData; + }, - wrapped.__raven__ = true; - wrapped.__orig__ = func; - return wrapped; + _resetBackoff: function() { + this._backoffDuration = 0; + this._backoffStart = null; }, - /* - * Uninstalls the global error handler. - * - * @return {Raven} - */ - uninstall: function uninstall() { - tracekit.report.uninstall(); + _shouldBackoff: function() { + return this._backoffDuration && now() - this._backoffStart < this._backoffDuration; + }, - this._unpatchFunctionToString(); + /** + * Returns true if the in-process data payload matches the signature + * of the previously-sent data + * + * NOTE: This has to be done at this level because TraceKit can generate + * data from window.onerror WITHOUT an exception object (IE8, IE9, + * other old browsers). This can take the form of an "exception" + * data object with a single frame (derived from the onerror args). + */ + _isRepeatData: function(current) { + var last = this._lastData; - this._restoreBuiltIns(); + if ( + !last || + current.message !== last.message || // defined for captureMessage + current.culprit !== last.culprit // defined for captureException/onerror + ) + return false; - this._restoreConsole(); + // Stacktrace interface (i.e. from captureMessage) + if (current.stacktrace || last.stacktrace) { + return isSameStacktrace(current.stacktrace, last.stacktrace); + } else if (current.exception || last.exception) { + // Exception interface (i.e. from captureException/onerror) + return isSameException(current.exception, last.exception); + } - Error.stackTraceLimit = this._originalErrorStackTraceLimit; - this._isRavenInstalled = false; - return this; + return true; }, - /* - * Manually capture an exception and send it over to Sentry - * - * @param {error} ex An exception to be logged - * @param {object} options A specific set of options for this error [optional] - * @return {Raven} - */ - captureException: function captureException(ex, options) { - options = objectMerge({ - trimHeadFrames: 0 - }, options ? options : {}); // Cases for sending ex as a message, rather than an exception + _setBackoffState: function(request) { + // If we are already in a backoff state, don't change anything + if (this._shouldBackoff()) { + return; + } - var isNotError = !isError(ex); - var isNotErrorEvent = !isErrorEvent(ex); - var isErrorEventWithoutError = isErrorEvent(ex) && !ex.error; + var status = request.status; + + // 400 - project_id doesn't exist or some other fatal + // 401 - invalid/revoked dsn + // 429 - too many requests + if (!(status === 400 || status === 401 || status === 429)) return; - if (isNotError && isNotErrorEvent || isErrorEventWithoutError) { - return this.captureMessage(ex, objectMerge(options, { - stacktrace: true, - // if we fall back to captureMessage, default to attempting a new trace - trimHeadFrames: options.trimHeadFrames + 1 - })); - } // Get actual Error from ErrorEvent + var retry; + try { + // If Retry-After is not in Access-Control-Expose-Headers, most + // browsers will throw an exception trying to access it + if (supportsFetch()) { + retry = request.headers.get('Retry-After'); + } else { + retry = request.getResponseHeader('Retry-After'); + } + // Retry-After is returned in seconds + retry = parseInt(retry, 10) * 1000; + } catch (e) { + /* eslint no-empty:0 */ + } - if (isErrorEvent(ex)) ex = ex.error; // Store the raw exception object for potential debugging and introspection + this._backoffDuration = retry + ? // If Sentry server returned a Retry-After value, use it + retry + : // Otherwise, double the last backoff duration (starts at 1 sec) + this._backoffDuration * 2 || 1000; - this._lastCapturedException = ex; // TraceKit.report will re-raise any exception passed to it, - // which means you have to wrap it in try/catch. Instead, we - // can wrap it here and only re-raise if TraceKit.report - // raises an exception different from the one we asked to - // report on. + this._backoffStart = now(); + }, - try { - var stack = tracekit.computeStackTrace(ex); + _send: function(data) { + var globalOptions = this._globalOptions; - this._handleStackInfo(stack, options); - } catch (ex1) { - if (ex !== ex1) { - throw ex1; - } + var baseData = { + project: this._globalProject, + logger: globalOptions.logger, + platform: 'javascript' + }, + httpData = this._getHttpData(); + + if (httpData) { + baseData.request = httpData; } - return this; - }, + // HACK: delete `trimHeadFrames` to prevent from appearing in outbound payload + if (data.trimHeadFrames) delete data.trimHeadFrames; - /* - * Manually send a message to Sentry - * - * @param {string} msg A plain message to be captured in Sentry - * @param {object} options A specific set of options for this message [optional] - * @return {Raven} - */ - captureMessage: function captureMessage(msg, options) { - // config() automagically converts ignoreErrors from a list to a RegExp so we need to test for an - // early call; we'll error on the side of logging anything called before configuration since it's - // probably something you should see: - if (!!this._globalOptions.ignoreErrors.test && this._globalOptions.ignoreErrors.test(msg)) { - return; + data = objectMerge(baseData, data); + + // Merge in the tags and extra separately since objectMerge doesn't handle a deep merge + data.tags = objectMerge(objectMerge({}, this._globalContext.tags), data.tags); + data.extra = objectMerge(objectMerge({}, this._globalContext.extra), data.extra); + + // Send along our own collected metadata with extra + data.extra['session:duration'] = now() - this._startTime; + + if (this._breadcrumbs && this._breadcrumbs.length > 0) { + // intentionally make shallow copy so that additions + // to breadcrumbs aren't accidentally sent in this request + data.breadcrumbs = { + values: [].slice.call(this._breadcrumbs, 0) + }; } - options = options || {}; - var data = objectMerge({ - message: msg + '' // Make sure it's actually a string + if (this._globalContext.user) { + // sentry.interfaces.User + data.user = this._globalContext.user; + } - }, options); - var ex; // Generate a "synthetic" stack trace from this point. - // NOTE: If you are a Sentry user, and you are seeing this stack frame, it is NOT indicative - // of a bug with Raven.js. Sentry generates synthetic traces either by configuration, - // or if it catches a thrown object without a "stack" property. + // Include the environment if it's defined in globalOptions + if (globalOptions.environment) data.environment = globalOptions.environment; - try { - throw new Error(msg); - } catch (ex1) { - ex = ex1; - } // null exception name so `Error` isn't prefixed to msg + // Include the release if it's defined in globalOptions + if (globalOptions.release) data.release = globalOptions.release; + // Include server_name if it's defined in globalOptions + if (globalOptions.serverName) data.server_name = globalOptions.serverName; - ex.name = null; - var stack = tracekit.computeStackTrace(ex); // stack[0] is `throw new Error(msg)` call itself, we are interested in the frame that was just before that, stack[1] + data = this._sanitizeData(data); - var initialCall = isArray(stack.stack) && stack.stack[1]; - var fileurl = initialCall && initialCall.url || ''; + // Cleanup empty properties before sending them to the server + Object.keys(data).forEach(function(key) { + if (data[key] == null || data[key] === '' || isEmptyObject(data[key])) { + delete data[key]; + } + }); - if (!!this._globalOptions.ignoreUrls.test && this._globalOptions.ignoreUrls.test(fileurl)) { + if (isFunction(globalOptions.dataCallback)) { + data = globalOptions.dataCallback(data) || data; + } + + // Why?????????? + if (!data || isEmptyObject(data)) { return; } - if (!!this._globalOptions.whitelistUrls.test && !this._globalOptions.whitelistUrls.test(fileurl)) { + // Check if the request should be filtered or not + if ( + isFunction(globalOptions.shouldSendCallback) && + !globalOptions.shouldSendCallback(data) + ) { return; } - if (this._globalOptions.stacktrace || options && options.stacktrace) { - options = objectMerge({ - // fingerprint on msg, not stack trace (legacy behavior, could be - // revisited) - fingerprint: msg, - // since we know this is a synthetic trace, the top N-most frames - // MUST be from Raven.js, so mark them as in_app later by setting - // trimHeadFrames - trimHeadFrames: (options.trimHeadFrames || 0) + 1 - }, options); + // Backoff state: Sentry server previously responded w/ an error (e.g. 429 - too many requests), + // so drop requests until "cool-off" period has elapsed. + if (this._shouldBackoff()) { + this._logDebug('warn', 'Raven dropped error due to backoff: ', data); + return; + } - var frames = this._prepareFrames(stack, options); + if (typeof globalOptions.sampleRate === 'number') { + if (Math.random() < globalOptions.sampleRate) { + this._sendProcessedPayload(data); + } + } else { + this._sendProcessedPayload(data); + } + }, - data.stacktrace = { - // Sentry expects frames oldest to newest - frames: frames.reverse() - }; - } // Fire away! + _sanitizeData: function(data) { + return sanitize(data, this._globalOptions.sanitizeKeys); + }, + _getUuid: function() { + return uuid4(); + }, - this._send(data); + _sendProcessedPayload: function(data, callback) { + var self = this; + var globalOptions = this._globalOptions; - return this; - }, - captureBreadcrumb: function captureBreadcrumb(obj) { - var crumb = objectMerge({ - timestamp: now() / 1000 - }, obj); + if (!this.isSetup()) return; - if (isFunction(this._globalOptions.breadcrumbCallback)) { - var result = this._globalOptions.breadcrumbCallback(crumb); + // Try and clean up the packet before sending by truncating long values + data = this._trimPacket(data); - if (isObject(result) && !isEmptyObject(result)) { - crumb = result; - } else if (result === false) { - return this; - } + // ideally duplicate error testing should occur *before* dataCallback/shouldSendCallback, + // but this would require copying an un-truncated copy of the data packet, which can be + // arbitrarily deep (extra_data) -- could be worthwhile? will revisit + if (!this._globalOptions.allowDuplicates && this._isRepeatData(data)) { + this._logDebug('warn', 'Raven dropped repeat event: ', data); + return; } - this._breadcrumbs.push(crumb); + // Send along an event_id if not explicitly passed. + // This event_id can be used to reference the error within Sentry itself. + // Set lastEventId after we know the error should actually be sent + this._lastEventId = data.event_id || (data.event_id = this._getUuid()); - if (this._breadcrumbs.length > this._globalOptions.maxBreadcrumbs) { - this._breadcrumbs.shift(); - } + // Store outbound payload after trim + this._lastData = data; - return this; - }, - addPlugin: function addPlugin(plugin - /*arg1, arg2, ... argN*/ - ) { - var pluginArgs = [].slice.call(arguments, 1); + this._logDebug('debug', 'Raven about to send:', data); - this._plugins.push([plugin, pluginArgs]); + var auth = { + sentry_version: '7', + sentry_client: 'raven-js/' + this.VERSION, + sentry_key: this._globalKey + }; - if (this._isRavenInstalled) { - this._drainPlugins(); + if (this._globalSecret) { + auth.sentry_secret = this._globalSecret; } - return this; - }, + var exception = data.exception && data.exception.values[0]; - /* - * Set/clear a user to be sent along with the payload. - * - * @param {object} user An object representing user data [optional] - * @return {Raven} - */ - setUserContext: function setUserContext(user) { - // Intentionally do not merge here since that's an unexpected behavior. - this._globalContext.user = user; - return this; - }, + // only capture 'sentry' breadcrumb is autoBreadcrumbs is truthy + if ( + this._globalOptions.autoBreadcrumbs && + this._globalOptions.autoBreadcrumbs.sentry + ) { + this.captureBreadcrumb({ + category: 'sentry', + message: exception + ? (exception.type ? exception.type + ': ' : '') + exception.value + : data.message, + event_id: data.event_id, + level: data.level || 'error' // presume error unless specified + }); + } - /* - * Merge extra attributes to be sent along with the payload. - * - * @param {object} extra An object representing extra data [optional] - * @return {Raven} - */ - setExtraContext: function setExtraContext(extra) { - this._mergeContext('extra', extra); + var url = this._globalEndpoint; + (globalOptions.transport || this._makeRequest).call(this, { + url: url, + auth: auth, + data: data, + options: globalOptions, + onSuccess: function success() { + self._resetBackoff(); - return this; - }, + self._triggerEvent('success', { + data: data, + src: url + }); + callback && callback(); + }, + onError: function failure(error) { + self._logDebug('error', 'Raven transport failed to send: ', error); - /* - * Merge tags to be sent along with the payload. - * - * @param {object} tags An object representing tags [optional] - * @return {Raven} - */ - setTagsContext: function setTagsContext(tags) { - this._mergeContext('tags', tags); + if (error.request) { + self._setBackoffState(error.request); + } - return this; + self._triggerEvent('failure', { + data: data, + src: url + }); + error = error || new Error('Raven send failed (no additional details provided)'); + callback && callback(error); + } + }); }, - /* - * Clear all of the context. - * - * @return {Raven} - */ - clearContext: function clearContext() { - this._globalContext = {}; - return this; - }, + _makeRequest: function(opts) { + // Auth is intentionally sent as part of query string (NOT as custom HTTP header) to avoid preflight CORS requests + var url = opts.url + '?' + urlencode(opts.auth); - /* - * Get a copy of the current context. This cannot be mutated. - * - * @return {object} copy of context - */ - getContext: function getContext() { - // lol javascript - return JSON.parse(stringify_1(this._globalContext)); - }, + var evaluatedHeaders = null; + var evaluatedFetchParameters = {}; - /* - * Set environment of application - * - * @param {string} environment Typically something like 'production'. - * @return {Raven} - */ - setEnvironment: function setEnvironment(environment) { - this._globalOptions.environment = environment; - return this; - }, + if (opts.options.headers) { + evaluatedHeaders = this._evaluateHash(opts.options.headers); + } - /* - * Set release version of application - * - * @param {string} release Typically something like a git SHA to identify version - * @return {Raven} - */ - setRelease: function setRelease(release) { - this._globalOptions.release = release; - return this; - }, + if (opts.options.fetchParameters) { + evaluatedFetchParameters = this._evaluateHash(opts.options.fetchParameters); + } - /* - * Set the dataCallback option - * - * @param {function} callback The callback to run which allows the - * data blob to be mutated before sending - * @return {Raven} - */ - setDataCallback: function setDataCallback(callback) { - var original = this._globalOptions.dataCallback; - this._globalOptions.dataCallback = keepOriginalCallback(original, callback); - return this; - }, + if (supportsFetch()) { + evaluatedFetchParameters.body = stringify(opts.data); - /* - * Set the breadcrumbCallback option - * - * @param {function} callback The callback to run which allows filtering - * or mutating breadcrumbs - * @return {Raven} - */ - setBreadcrumbCallback: function setBreadcrumbCallback(callback) { - var original = this._globalOptions.breadcrumbCallback; - this._globalOptions.breadcrumbCallback = keepOriginalCallback(original, callback); - return this; - }, + var defaultFetchOptions = objectMerge({}, this._fetchDefaults); + var fetchOptions = objectMerge(defaultFetchOptions, evaluatedFetchParameters); - /* - * Set the shouldSendCallback option - * - * @param {function} callback The callback to run which allows - * introspecting the blob before sending - * @return {Raven} - */ - setShouldSendCallback: function setShouldSendCallback(callback) { - var original = this._globalOptions.shouldSendCallback; - this._globalOptions.shouldSendCallback = keepOriginalCallback(original, callback); - return this; - }, + if (evaluatedHeaders) { + fetchOptions.headers = evaluatedHeaders; + } - /** - * Override the default HTTP transport mechanism that transmits data - * to the Sentry server. - * - * @param {function} transport Function invoked instead of the default - * `makeRequest` handler. - * - * @return {Raven} - */ - setTransport: function setTransport(transport) { - this._globalOptions.transport = transport; - return this; - }, + return _window + .fetch(url, fetchOptions) + .then(function(response) { + if (response.ok) { + opts.onSuccess && opts.onSuccess(); + } else { + var error = new Error('Sentry error code: ' + response.status); + // It's called request only to keep compatibility with XHR interface + // and not add more redundant checks in setBackoffState method + error.request = response; + opts.onError && opts.onError(error); + } + }) + ['catch'](function() { + opts.onError && + opts.onError(new Error('Sentry error code: network unavailable')); + }); + } - /* - * Get the latest raw exception that was captured by Raven. - * - * @return {error} - */ - lastException: function lastException() { - return this._lastCapturedException; - }, + var request = _window.XMLHttpRequest && new _window.XMLHttpRequest(); + if (!request) return; - /* - * Get the last event id - * - * @return {string} - */ - lastEventId: function lastEventId() { - return this._lastEventId; - }, + // if browser doesn't support CORS (e.g. IE7), we are out of luck + var hasCORS = 'withCredentials' in request || typeof XDomainRequest !== 'undefined'; - /* - * Determine if Raven is setup and ready to go. - * - * @return {boolean} - */ - isSetup: function isSetup() { - if (!this._hasJSON) return false; // needs JSON support + if (!hasCORS) return; - if (!this._globalServer) { - if (!this.ravenNotConfiguredError) { - this.ravenNotConfiguredError = true; + if ('withCredentials' in request) { + request.onreadystatechange = function() { + if (request.readyState !== 4) { + return; + } else if (request.status === 200) { + opts.onSuccess && opts.onSuccess(); + } else if (opts.onError) { + var err = new Error('Sentry error code: ' + request.status); + err.request = request; + opts.onError(err); + } + }; + } else { + request = new XDomainRequest(); + // xdomainrequest cannot go http -> https (or vice versa), + // so always use protocol relative + url = url.replace(/^https?:/, ''); - this._logDebug('error', 'Error: Raven has not been configured.'); + // onreadystatechange not supported by XDomainRequest + if (opts.onSuccess) { + request.onload = opts.onSuccess; + } + if (opts.onError) { + request.onerror = function() { + var err = new Error('Sentry error code: XDomainRequest'); + err.request = request; + opts.onError(err); + }; } + } - return false; + request.open('POST', url); + + if (evaluatedHeaders) { + each(evaluatedHeaders, function(key, value) { + request.setRequestHeader(key, value); + }); } - return true; + request.send(stringify(opts.data)); }, - afterLoad: function afterLoad() { - // TODO: remove window dependence? - // Attempt to initialize Raven on load - var RavenConfig = _window$1.RavenConfig; - if (RavenConfig) { - this.config(RavenConfig.dsn, RavenConfig.config).install(); + _evaluateHash: function(hash) { + var evaluated = {}; + + for (var key in hash) { + if (hash.hasOwnProperty(key)) { + var value = hash[key]; + evaluated[key] = typeof value === 'function' ? value() : value; + } } + + return evaluated; }, - showReportDialog: function showReportDialog(options) { - if (!_document // doesn't work without a document (React native) - ) return; - options = options || {}; - var lastEventId = options.eventId || this.lastEventId(); - if (!lastEventId) { - throw new configError('Missing eventId'); + _logDebug: function(level) { + // We allow `Raven.debug` and `Raven.config(DSN, { debug: true })` to not make backward incompatible API change + if ( + this._originalConsoleMethods[level] && + (this.debug || this._globalOptions.debug) + ) { + // In IE<10 console methods do not have their own 'apply' method + Function.prototype.apply.call( + this._originalConsoleMethods[level], + this._originalConsole, + [].slice.call(arguments, 1) + ); } + }, - var dsn = options.dsn || this._dsn; - - if (!dsn) { - throw new configError('Missing DSN'); + _mergeContext: function(key, context) { + if (isUndefined(context)) { + delete this._globalContext[key]; + } else { + this._globalContext[key] = objectMerge(this._globalContext[key] || {}, context); } + } +}; - var encode = encodeURIComponent; - var qs = ''; - qs += '?eventId=' + encode(lastEventId); - qs += '&dsn=' + encode(dsn); - var user = options.user || this._globalContext.user; +// Deprecations +Raven.prototype.setUser = Raven.prototype.setUserContext; +Raven.prototype.setReleaseContext = Raven.prototype.setRelease; - if (user) { - if (user.name) qs += '&name=' + encode(user.name); - if (user.email) qs += '&email=' + encode(user.email); - } +module.exports = Raven; - var globalServer = this._getGlobalServer(this._parseDSN(dsn)); +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"2":2,"3":3,"6":6,"7":7,"8":8,"9":9}],5:[function(_dereq_,module,exports){ +(function (global){ +/** + * Enforces a single instance of the Raven client, and the + * main entry point for Raven. If you are a consumer of the + * Raven library, you SHOULD load this file (vs raven.js). + **/ - var script = _document.createElement('script'); +var RavenConstructor = _dereq_(4); - script.async = true; - script.src = globalServer + '/api/embed/error-page/' + qs; +// This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) +var _window = + typeof window !== 'undefined' + ? window + : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; +var _Raven = _window.Raven; - (_document.head || _document.body).appendChild(script); - }, +var Raven = new RavenConstructor(); - /**** Private functions ****/ - _ignoreNextOnError: function _ignoreNextOnError() { - var self = this; - this._ignoreOnError += 1; - setTimeout(function () { - // onerror should trigger before setTimeout - self._ignoreOnError -= 1; - }); - }, - _triggerEvent: function _triggerEvent(eventType, options) { - // NOTE: `event` is a native browser thing, so let's avoid conflicting wiht it - var evt, key; - if (!this._hasDocument) return; - options = options || {}; - eventType = 'raven' + eventType.substr(0, 1).toUpperCase() + eventType.substr(1); +/* + * Allow multiple versions of Raven to be installed. + * Strip Raven from the global context and returns the instance. + * + * @return {Raven} + */ +Raven.noConflict = function() { + _window.Raven = _Raven; + return Raven; +}; - if (_document.createEvent) { - evt = _document.createEvent('HTMLEvents'); - evt.initEvent(eventType, true, true); - } else { - evt = _document.createEventObject(); - evt.eventType = eventType; - } +Raven.afterLoad(); - for (key in options) { - if (hasKey(options, key)) { - evt[key] = options[key]; - } - } +module.exports = Raven; - if (_document.createEvent) { - // IE9 if standards - _document.dispatchEvent(evt); - } else { - // IE8 regardless of Quirks or Standards - // IE9 if quirks - try { - _document.fireEvent('on' + evt.eventType.toLowerCase(), evt); - } catch (e) {// Do nothing - } - } - }, +/** + * DISCLAIMER: + * + * Expose `Client` constructor for cases where user want to track multiple "sub-applications" in one larger app. + * It's not meant to be used by a wide audience, so pleaaase make sure that you know what you're doing before using it. + * Accidentally calling `install` multiple times, may result in an unexpected behavior that's very hard to debug. + * + * It's called `Client' to be in-line with Raven Node implementation. + * + * HOWTO: + * + * import Raven from 'raven-js'; + * + * const someAppReporter = new Raven.Client(); + * const someOtherAppReporter = new Raven.Client(); + * + * someAppReporter.config('__DSN__', { + * ...config goes here + * }); + * + * someOtherAppReporter.config('__OTHER_DSN__', { + * ...config goes here + * }); + * + * someAppReporter.captureMessage(...); + * someAppReporter.captureException(...); + * someAppReporter.captureBreadcrumb(...); + * + * someOtherAppReporter.captureMessage(...); + * someOtherAppReporter.captureException(...); + * someOtherAppReporter.captureBreadcrumb(...); + * + * It should "just work". + */ +module.exports.Client = RavenConstructor; - /** - * Wraps addEventListener to capture UI breadcrumbs - * @param evtName the event name (e.g. "click") - * @returns {Function} - * @private - */ - _breadcrumbEventHandler: function _breadcrumbEventHandler(evtName) { - var self = this; - return function (evt) { - // reset keypress timeout; e.g. triggering a 'click' after - // a 'keypress' will reset the keypress debounce so that a new - // set of keypresses can be recorded - self._keypressTimeout = null; // It's possible this handler might trigger multiple times for the same - // event (e.g. event propagation through node ancestors). Ignore if we've - // already captured the event. +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"4":4}],6:[function(_dereq_,module,exports){ +(function (global){ +var stringify = _dereq_(8); - if (self._lastCapturedEvent === evt) return; - self._lastCapturedEvent = evt; // try/catch both: - // - accessing evt.target (see getsentry/raven-js#838, #768) - // - `htmlTreeAsString` because it's complex, and just accessing the DOM incorrectly - // can throw an exception in some circumstances. +var _window = + typeof window !== 'undefined' + ? window + : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; - var target; +function isObject(what) { + return typeof what === 'object' && what !== null; +} - try { - target = htmlTreeAsString(evt.target); - } catch (e) { - target = ''; - } +// Yanked from https://git.io/vS8DV re-used under CC0 +// with some tiny modifications +function isError(value) { + switch ({}.toString.call(value)) { + case '[object Error]': + return true; + case '[object Exception]': + return true; + case '[object DOMException]': + return true; + default: + return value instanceof Error; + } +} - self.captureBreadcrumb({ - category: 'ui.' + evtName, - // e.g. ui.click, ui.input - message: target - }); - }; - }, +function isErrorEvent(value) { + return supportsErrorEvent() && {}.toString.call(value) === '[object ErrorEvent]'; +} - /** - * Wraps addEventListener to capture keypress UI events - * @returns {Function} - * @private - */ - _keypressEventHandler: function _keypressEventHandler() { - var self = this, - debounceDuration = 1000; // milliseconds - // TODO: if somehow user switches keypress target before - // debounce timeout is triggered, we will only capture - // a single breadcrumb from the FIRST target (acceptable?) +function isUndefined(what) { + return what === void 0; +} - return function (evt) { - var target; +function isFunction(what) { + return typeof what === 'function'; +} - try { - target = evt.target; - } catch (e) { - // just accessing event properties can throw an exception in some rare circumstances - // see: https://github.com/getsentry/raven-js/issues/838 - return; - } +function isPlainObject(what) { + return Object.prototype.toString.call(what) === '[object Object]'; +} - var tagName = target && target.tagName; // only consider keypress events on actual input elements - // this will disregard keypresses targeting body (e.g. tabbing - // through elements, hotkeys, etc) +function isString(what) { + return Object.prototype.toString.call(what) === '[object String]'; +} - if (!tagName || tagName !== 'INPUT' && tagName !== 'TEXTAREA' && !target.isContentEditable) return; // record first keypress in a series, but ignore subsequent - // keypresses until debounce clears +function isArray(what) { + return Object.prototype.toString.call(what) === '[object Array]'; +} - var timeout = self._keypressTimeout; +function isEmptyObject(what) { + if (!isPlainObject(what)) return false; - if (!timeout) { - self._breadcrumbEventHandler('input')(evt); - } + for (var _ in what) { + if (what.hasOwnProperty(_)) { + return false; + } + } + return true; +} - clearTimeout(timeout); - self._keypressTimeout = setTimeout(function () { - self._keypressTimeout = null; - }, debounceDuration); - }; - }, +function supportsErrorEvent() { + try { + new ErrorEvent(''); // eslint-disable-line no-new + return true; + } catch (e) { + return false; + } +} - /** - * Captures a breadcrumb of type "navigation", normalizing input URLs - * @param to the originating URL - * @param from the target URL - * @private - */ - _captureUrlChange: function _captureUrlChange(from, to) { - var parsedLoc = parseUrl(this._location.href); - var parsedTo = parseUrl(to); - var parsedFrom = parseUrl(from); // because onpopstate only tells you the "new" (to) value of location.href, and - // not the previous (from) value, we need to track the value of the current URL - // state ourselves +function supportsFetch() { + if (!('fetch' in _window)) return false; - this._lastHref = to; // Use only the path component of the URL if the URL matches the current - // document (almost all the time when using pushState) + try { + new Headers(); // eslint-disable-line no-new + new Request(''); // eslint-disable-line no-new + new Response(); // eslint-disable-line no-new + return true; + } catch (e) { + return false; + } +} - if (parsedLoc.protocol === parsedTo.protocol && parsedLoc.host === parsedTo.host) to = parsedTo.relative; - if (parsedLoc.protocol === parsedFrom.protocol && parsedLoc.host === parsedFrom.host) from = parsedFrom.relative; - this.captureBreadcrumb({ - category: 'navigation', - data: { - to: to, - from: from - } +// Despite all stars in the sky saying that Edge supports old draft syntax, aka 'never', 'always', 'origin' and 'default +// https://caniuse.com/#feat=referrer-policy +// It doesn't. And it throw exception instead of ignoring this parameter... +// REF: https://github.com/getsentry/raven-js/issues/1233 +function supportsReferrerPolicy() { + if (!supportsFetch()) return false; + + try { + // eslint-disable-next-line no-new + new Request('pickleRick', { + referrerPolicy: 'origin' }); - }, - _patchFunctionToString: function _patchFunctionToString() { - var self = this; - self._originalFunctionToString = Function.prototype.toString; // eslint-disable-next-line no-extend-native + return true; + } catch (e) { + return false; + } +} + +function supportsPromiseRejectionEvent() { + return typeof PromiseRejectionEvent === 'function'; +} + +function wrappedCallback(callback) { + function dataCallback(data, original) { + var normalizedData = callback(data) || data; + if (original) { + return original(normalizedData) || normalizedData; + } + return normalizedData; + } - Function.prototype.toString = function () { - if (typeof this === 'function' && this.__raven__) { - return self._originalFunctionToString.apply(this.__orig__, arguments); - } + return dataCallback; +} - return self._originalFunctionToString.apply(this, arguments); - }; - }, - _unpatchFunctionToString: function _unpatchFunctionToString() { - if (this._originalFunctionToString) { - // eslint-disable-next-line no-extend-native - Function.prototype.toString = this._originalFunctionToString; - } - }, +function each(obj, callback) { + var i, j; - /** - * Wrap timer functions and event targets to catch errors and provide - * better metadata. - */ - _instrumentTryCatch: function _instrumentTryCatch() { - var self = this; - var wrappedBuiltIns = self._wrappedBuiltIns; + if (isUndefined(obj.length)) { + for (i in obj) { + if (hasKey(obj, i)) { + callback.call(null, i, obj[i]); + } + } + } else { + j = obj.length; + if (j) { + for (i = 0; i < j; i++) { + callback.call(null, i, obj[i]); + } + } + } +} - function wrapTimeFn(orig) { - return function (fn, t) { - // preserve arity - // Make a copy of the arguments to prevent deoptimization - // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments - var args = new Array(arguments.length); +function objectMerge(obj1, obj2) { + if (!obj2) { + return obj1; + } + each(obj2, function(key, value) { + obj1[key] = value; + }); + return obj1; +} - for (var i = 0; i < args.length; ++i) { - args[i] = arguments[i]; - } +/** + * This function is only used for react-native. + * react-native freezes object that have already been sent over the + * js bridge. We need this function in order to check if the object is frozen. + * So it's ok that objectFrozen returns false if Object.isFrozen is not + * supported because it's not relevant for other "platforms". See related issue: + * https://github.com/getsentry/react-native-sentry/issues/57 + */ +function objectFrozen(obj) { + if (!Object.isFrozen) { + return false; + } + return Object.isFrozen(obj); +} - var originalCallback = args[0]; +function truncate(str, max) { + if (typeof max !== 'number') { + throw new Error('2nd argument to `truncate` function should be a number'); + } + if (typeof str !== 'string' || max === 0) { + return str; + } + return str.length <= max ? str : str.substr(0, max) + '\u2026'; +} - if (isFunction(originalCallback)) { - args[0] = self.wrap(originalCallback); - } // IE < 9 doesn't support .call/.apply on setInterval/setTimeout, but it - // also supports only two arguments and doesn't care what this is, so we - // can just call the original function directly. +/** + * hasKey, a better form of hasOwnProperty + * Example: hasKey(MainHostObject, property) === true/false + * + * @param {Object} host object to check property + * @param {string} key to check + */ +function hasKey(object, key) { + return Object.prototype.hasOwnProperty.call(object, key); +} +function joinRegExp(patterns) { + // Combine an array of regular expressions and strings into one large regexp + // Be mad. + var sources = [], + i = 0, + len = patterns.length, + pattern; - if (orig.apply) { - return orig.apply(this, args); - } else { - return orig(args[0], args[1]); - } - }; + for (; i < len; i++) { + pattern = patterns[i]; + if (isString(pattern)) { + // If it's a string, we need to escape it + // Taken from: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions + sources.push(pattern.replace(/([.*+?^=!:${}()|\[\]\/\\])/g, '\\$1')); + } else if (pattern && pattern.source) { + // If it's a regexp already, we want to extract the source + sources.push(pattern.source); } + // Intentionally skip other cases + } + return new RegExp(sources.join('|'), 'i'); +} - var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; +function urlencode(o) { + var pairs = []; + each(o, function(key, value) { + pairs.push(encodeURIComponent(key) + '=' + encodeURIComponent(value)); + }); + return pairs.join('&'); +} - function wrapEventTarget(global) { - var proto = _window$1[global] && _window$1[global].prototype; +// borrowed from https://tools.ietf.org/html/rfc3986#appendix-B +// intentionally using regex and not href parsing trick because React Native and other +// environments where DOM might not be available +function parseUrl(url) { + if (typeof url !== 'string') return {}; + var match = url.match(/^(([^:\/?#]+):)?(\/\/([^\/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?$/); - if (proto && proto.hasOwnProperty && proto.hasOwnProperty('addEventListener')) { - fill(proto, 'addEventListener', function (orig) { - return function (evtName, fn, capture, secure) { - // preserve arity - try { - if (fn && fn.handleEvent) { - fn.handleEvent = self.wrap(fn.handleEvent); - } - } catch (err) {} // can sometimes get 'Permission denied to access property "handle Event' - // More breadcrumb DOM capture ... done here and not in `_instrumentBreadcrumbs` - // so that we don't have more than one wrapper function + // coerce to undefined values to empty string so we don't get 'undefined' + var query = match[6] || ''; + var fragment = match[8] || ''; + return { + protocol: match[2], + host: match[4], + path: match[5], + relative: match[5] + query + fragment // everything minus origin + }; +} +function uuid4() { + var crypto = _window.crypto || _window.msCrypto; + if (!isUndefined(crypto) && crypto.getRandomValues) { + // Use window.crypto API if available + // eslint-disable-next-line no-undef + var arr = new Uint16Array(8); + crypto.getRandomValues(arr); - var before, clickHandler, keypressHandler; + // set 4 in byte 7 + arr[3] = (arr[3] & 0xfff) | 0x4000; + // set 2 most significant bits of byte 9 to '10' + arr[4] = (arr[4] & 0x3fff) | 0x8000; - if (autoBreadcrumbs && autoBreadcrumbs.dom && (global === 'EventTarget' || global === 'Node')) { - // NOTE: generating multiple handlers per addEventListener invocation, should - // revisit and verify we can just use one (almost certainly) - clickHandler = self._breadcrumbEventHandler('click'); - keypressHandler = self._keypressEventHandler(); + var pad = function(num) { + var v = num.toString(16); + while (v.length < 4) { + v = '0' + v; + } + return v; + }; - before = function before(evt) { - // need to intercept every DOM event in `before` argument, in case that - // same wrapped method is re-used for different events (e.g. mousemove THEN click) - // see #724 - if (!evt) return; - var eventType; + return ( + pad(arr[0]) + + pad(arr[1]) + + pad(arr[2]) + + pad(arr[3]) + + pad(arr[4]) + + pad(arr[5]) + + pad(arr[6]) + + pad(arr[7]) + ); + } else { + // http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/2117523#2117523 + return 'xxxxxxxxxxxx4xxxyxxxxxxxxxxxxxxx'.replace(/[xy]/g, function(c) { + var r = (Math.random() * 16) | 0, + v = c === 'x' ? r : (r & 0x3) | 0x8; + return v.toString(16); + }); + } +} - try { - eventType = evt.type; - } catch (e) { - // just accessing event properties can throw an exception in some rare circumstances - // see: https://github.com/getsentry/raven-js/issues/838 - return; - } +/** + * Given a child DOM element, returns a query-selector statement describing that + * and its ancestors + * e.g. [HTMLElement] => body > div > input#foo.btn[name=baz] + * @param elem + * @returns {string} + */ +function htmlTreeAsString(elem) { + /* eslint no-extra-parens:0*/ + var MAX_TRAVERSE_HEIGHT = 5, + MAX_OUTPUT_LEN = 80, + out = [], + height = 0, + len = 0, + separator = ' > ', + sepLength = separator.length, + nextStr; - if (eventType === 'click') return clickHandler(evt);else if (eventType === 'keypress') return keypressHandler(evt); - }; - } + while (elem && height++ < MAX_TRAVERSE_HEIGHT) { + nextStr = htmlElementAsString(elem); + // bail out if + // - nextStr is the 'html' element + // - the length of the string that would be created exceeds MAX_OUTPUT_LEN + // (ignore this limit if we are on the first iteration) + if ( + nextStr === 'html' || + (height > 1 && len + out.length * sepLength + nextStr.length >= MAX_OUTPUT_LEN) + ) { + break; + } - return orig.call(this, evtName, self.wrap(fn, undefined, before), capture, secure); - }; - }, wrappedBuiltIns); - fill(proto, 'removeEventListener', function (orig) { - return function (evt, fn, capture, secure) { - try { - fn = fn && (fn.__raven_wrapper__ ? fn.__raven_wrapper__ : fn); - } catch (e) {// ignore, accessing __raven_wrapper__ will throw in some Selenium environments - } + out.push(nextStr); - return orig.call(this, evt, fn, capture, secure); - }; - }, wrappedBuiltIns); - } - } + len += nextStr.length; + elem = elem.parentNode; + } - fill(_window$1, 'setTimeout', wrapTimeFn, wrappedBuiltIns); - fill(_window$1, 'setInterval', wrapTimeFn, wrappedBuiltIns); + return out.reverse().join(separator); +} - if (_window$1.requestAnimationFrame) { - fill(_window$1, 'requestAnimationFrame', function (orig) { - return function (cb) { - return orig(self.wrap(cb)); - }; - }, wrappedBuiltIns); - } // event targets borrowed from bugsnag-js: - // https://github.com/bugsnag/bugsnag-js/blob/master/src/bugsnag.js#L666 +/** + * Returns a simple, query-selector representation of a DOM element + * e.g. [HTMLElement] => input#foo.btn[name=baz] + * @param HTMLElement + * @returns {string} + */ +function htmlElementAsString(elem) { + var out = [], + className, + classes, + key, + attr, + i; + if (!elem || !elem.tagName) { + return ''; + } - var eventTargets = ['EventTarget', 'Window', 'Node', 'ApplicationCache', 'AudioTrackList', 'ChannelMergerNode', 'CryptoOperation', 'EventSource', 'FileReader', 'HTMLUnknownElement', 'IDBDatabase', 'IDBRequest', 'IDBTransaction', 'KeyOperation', 'MediaController', 'MessagePort', 'ModalWindow', 'Notification', 'SVGElementInstance', 'Screen', 'TextTrack', 'TextTrackCue', 'TextTrackList', 'WebSocket', 'WebSocketWorker', 'Worker', 'XMLHttpRequest', 'XMLHttpRequestEventTarget', 'XMLHttpRequestUpload']; + out.push(elem.tagName.toLowerCase()); + if (elem.id) { + out.push('#' + elem.id); + } - for (var i = 0; i < eventTargets.length; i++) { - wrapEventTarget(eventTargets[i]); + className = elem.className; + if (className && isString(className)) { + classes = className.split(/\s+/); + for (i = 0; i < classes.length; i++) { + out.push('.' + classes[i]); } - }, + } + var attrWhitelist = ['type', 'name', 'title', 'alt']; + for (i = 0; i < attrWhitelist.length; i++) { + key = attrWhitelist[i]; + attr = elem.getAttribute(key); + if (attr) { + out.push('[' + key + '="' + attr + '"]'); + } + } + return out.join(''); +} - /** - * Instrument browser built-ins w/ breadcrumb capturing - * - XMLHttpRequests - * - DOM interactions (click/typing) - * - window.location changes - * - console - * - * Can be disabled or individually configured via the `autoBreadcrumbs` config option - */ - _instrumentBreadcrumbs: function _instrumentBreadcrumbs() { - var self = this; - var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; - var wrappedBuiltIns = self._wrappedBuiltIns; +/** + * Returns true if either a OR b is truthy, but not both + */ +function isOnlyOneTruthy(a, b) { + return !!(!!a ^ !!b); +} - function wrapProp(prop, xhr) { - if (prop in xhr && isFunction(xhr[prop])) { - fill(xhr, prop, function (orig) { - return self.wrap(orig); - }); // intentionally don't track filled methods on XHR instances - } - } +/** + * Returns true if both parameters are undefined + */ +function isBothUndefined(a, b) { + return isUndefined(a) && isUndefined(b); +} - if (autoBreadcrumbs.xhr && 'XMLHttpRequest' in _window$1) { - var xhrproto = XMLHttpRequest.prototype; - fill(xhrproto, 'open', function (origOpen) { - return function (method, url) { - // preserve arity - // if Sentry key appears in URL, don't capture - if (isString(url) && url.indexOf(self._globalKey) === -1) { - this.__raven_xhr = { - method: method, - url: url, - status_code: null - }; - } +/** + * Returns true if the two input exception interfaces have the same content + */ +function isSameException(ex1, ex2) { + if (isOnlyOneTruthy(ex1, ex2)) return false; - return origOpen.apply(this, arguments); - }; - }, wrappedBuiltIns); - fill(xhrproto, 'send', function (origSend) { - return function () { - // preserve arity - var xhr = this; - - function onreadystatechangeHandler() { - if (xhr.__raven_xhr && xhr.readyState === 4) { - try { - // touching statusCode in some platforms throws - // an exception - xhr.__raven_xhr.status_code = xhr.status; - } catch (e) { - /* do nothing */ - } + ex1 = ex1.values[0]; + ex2 = ex2.values[0]; + + if (ex1.type !== ex2.type || ex1.value !== ex2.value) return false; + + // in case both stacktraces are undefined, we can't decide so default to false + if (isBothUndefined(ex1.stacktrace, ex2.stacktrace)) return false; + + return isSameStacktrace(ex1.stacktrace, ex2.stacktrace); +} + +/** + * Returns true if the two input stack trace interfaces have the same content + */ +function isSameStacktrace(stack1, stack2) { + if (isOnlyOneTruthy(stack1, stack2)) return false; - self.captureBreadcrumb({ - type: 'http', - category: 'xhr', - data: xhr.__raven_xhr - }); - } - } + var frames1 = stack1.frames; + var frames2 = stack2.frames; - var props = ['onload', 'onerror', 'onprogress']; + // Exit early if frame count differs + if (frames1.length !== frames2.length) return false; - for (var j = 0; j < props.length; j++) { - wrapProp(props[j], xhr); - } + // Iterate through every frame; bail out if anything differs + var a, b; + for (var i = 0; i < frames1.length; i++) { + a = frames1[i]; + b = frames2[i]; + if ( + a.filename !== b.filename || + a.lineno !== b.lineno || + a.colno !== b.colno || + a['function'] !== b['function'] + ) + return false; + } + return true; +} - if ('onreadystatechange' in xhr && isFunction(xhr.onreadystatechange)) { - fill(xhr, 'onreadystatechange', function (orig) { - return self.wrap(orig, undefined, onreadystatechangeHandler); - } - /* intentionally don't track this instrumentation */ - ); - } else { - // if onreadystatechange wasn't actually set by the page on this xhr, we - // are free to set our own and capture the breadcrumb - xhr.onreadystatechange = onreadystatechangeHandler; - } +/** + * Polyfill a method + * @param obj object e.g. `document` + * @param name method name present on object e.g. `addEventListener` + * @param replacement replacement function + * @param track {optional} record instrumentation to an array + */ +function fill(obj, name, replacement, track) { + if (obj == null) return; + var orig = obj[name]; + obj[name] = replacement(orig); + obj[name].__raven__ = true; + obj[name].__orig__ = orig; + if (track) { + track.push([obj, name, orig]); + } +} - return origSend.apply(this, arguments); - }; - }, wrappedBuiltIns); +/** + * Join values in array + * @param input array of values to be joined together + * @param delimiter string to be placed in-between values + * @returns {string} + */ +function safeJoin(input, delimiter) { + if (!isArray(input)) return ''; + + var output = []; + + for (var i = 0; i < input.length; i++) { + try { + output.push(String(input[i])); + } catch (e) { + output.push('[value cannot be serialized]'); } + } - if (autoBreadcrumbs.xhr && supportsFetch()) { - fill(_window$1, 'fetch', function (origFetch) { - return function () { - // preserve arity - // Make a copy of the arguments to prevent deoptimization - // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments - var args = new Array(arguments.length); - - for (var i = 0; i < args.length; ++i) { - args[i] = arguments[i]; - } + return output.join(delimiter); +} - var fetchInput = args[0]; - var method = 'GET'; - var url; +// Default Node.js REPL depth +var MAX_SERIALIZE_EXCEPTION_DEPTH = 3; +// 50kB, as 100kB is max payload size, so half sounds reasonable +var MAX_SERIALIZE_EXCEPTION_SIZE = 50 * 1024; +var MAX_SERIALIZE_KEYS_LENGTH = 40; - if (typeof fetchInput === 'string') { - url = fetchInput; - } else if ('Request' in _window$1 && fetchInput instanceof _window$1.Request) { - url = fetchInput.url; +function utf8Length(value) { + return ~-encodeURI(value).split(/%..|./).length; +} - if (fetchInput.method) { - method = fetchInput.method; - } - } else { - url = '' + fetchInput; - } // if Sentry key appears in URL, don't capture, as it's our own request +function jsonSize(value) { + return utf8Length(JSON.stringify(value)); +} +function serializeValue(value) { + if (typeof value === 'string') { + var maxLength = 40; + return truncate(value, maxLength); + } else if ( + typeof value === 'number' || + typeof value === 'boolean' || + typeof value === 'undefined' + ) { + return value; + } - if (url.indexOf(self._globalKey) !== -1) { - return origFetch.apply(this, args); - } + var type = Object.prototype.toString.call(value); - if (args[1] && args[1].method) { - method = args[1].method; - } + // Node.js REPL notation + if (type === '[object Object]') return '[Object]'; + if (type === '[object Array]') return '[Array]'; + if (type === '[object Function]') + return value.name ? '[Function: ' + value.name + ']' : '[Function]'; - var fetchData = { - method: method, - url: url, - status_code: null - }; - return origFetch.apply(this, args).then(function (response) { - fetchData.status_code = response.status; - self.captureBreadcrumb({ - type: 'http', - category: 'fetch', - data: fetchData - }); - return response; - }); - }; - }, wrappedBuiltIns); - } // Capture breadcrumbs from any click that is unhandled / bubbled up all the way - // to the document. Do this before we instrument addEventListener. + return value; +} +function serializeObject(value, depth) { + if (depth === 0) return serializeValue(value); + + if (isPlainObject(value)) { + return Object.keys(value).reduce(function(acc, key) { + acc[key] = serializeObject(value[key], depth - 1); + return acc; + }, {}); + } else if (Array.isArray(value)) { + return value.map(function(val) { + return serializeObject(val, depth - 1); + }); + } - if (autoBreadcrumbs.dom && this._hasDocument) { - if (_document.addEventListener) { - _document.addEventListener('click', self._breadcrumbEventHandler('click'), false); + return serializeValue(value); +} - _document.addEventListener('keypress', self._keypressEventHandler(), false); - } else { - // IE8 Compatibility - _document.attachEvent('onclick', self._breadcrumbEventHandler('click')); +function serializeException(ex, depth, maxSize) { + if (!isPlainObject(ex)) return ex; - _document.attachEvent('onkeypress', self._keypressEventHandler()); - } - } // record navigation (URL) changes - // NOTE: in Chrome App environment, touching history.pushState, *even inside - // a try/catch block*, will cause Chrome to output an error to console.error - // borrowed from: https://github.com/angular/angular.js/pull/13945/files + depth = typeof depth !== 'number' ? MAX_SERIALIZE_EXCEPTION_DEPTH : depth; + maxSize = typeof depth !== 'number' ? MAX_SERIALIZE_EXCEPTION_SIZE : maxSize; + var serialized = serializeObject(ex, depth); - var chrome = _window$1.chrome; - var isChromePackagedApp = chrome && chrome.app && chrome.app.runtime; - var hasPushAndReplaceState = !isChromePackagedApp && _window$1.history && history.pushState && history.replaceState; + if (jsonSize(stringify(serialized)) > maxSize) { + return serializeException(ex, depth - 1); + } - if (autoBreadcrumbs.location && hasPushAndReplaceState) { - // TODO: remove onpopstate handler on uninstall() - var oldOnPopState = _window$1.onpopstate; + return serialized; +} - _window$1.onpopstate = function () { - var currentHref = self._location.href; +function serializeKeysForMessage(keys, maxLength) { + if (typeof keys === 'number' || typeof keys === 'string') return keys.toString(); + if (!Array.isArray(keys)) return ''; - self._captureUrlChange(self._lastHref, currentHref); + keys = keys.filter(function(key) { + return typeof key === 'string'; + }); + if (keys.length === 0) return '[object has no keys]'; - if (oldOnPopState) { - return oldOnPopState.apply(this, arguments); - } - }; + maxLength = typeof maxLength !== 'number' ? MAX_SERIALIZE_KEYS_LENGTH : maxLength; + if (keys[0].length >= maxLength) return keys[0]; - var historyReplacementFunction = function historyReplacementFunction(origHistFunction) { - // note history.pushState.length is 0; intentionally not declaring - // params to preserve 0 arity - return function () - /* state, title, url */ - { - var url = arguments.length > 2 ? arguments[2] : undefined; // url argument is optional + for (var usedKeys = keys.length; usedKeys > 0; usedKeys--) { + var serialized = keys.slice(0, usedKeys).join(', '); + if (serialized.length > maxLength) continue; + if (usedKeys === keys.length) return serialized; + return serialized + '\u2026'; + } - if (url) { - // coerce to string (this is what pushState does) - self._captureUrlChange(self._lastHref, url + ''); - } + return ''; +} - return origHistFunction.apply(this, arguments); - }; - }; +function sanitize(input, sanitizeKeys) { + if (!isArray(sanitizeKeys) || (isArray(sanitizeKeys) && sanitizeKeys.length === 0)) + return input; - fill(history, 'pushState', historyReplacementFunction, wrappedBuiltIns); - fill(history, 'replaceState', historyReplacementFunction, wrappedBuiltIns); - } + var sanitizeRegExp = joinRegExp(sanitizeKeys); + var sanitizeMask = '********'; + var safeInput; - if (autoBreadcrumbs.console && 'console' in _window$1 && console.log) { - // console - var consoleMethodCallback = function consoleMethodCallback(msg, data) { - self.captureBreadcrumb({ - message: msg, - level: data.level, - category: 'console' - }); - }; + try { + safeInput = JSON.parse(stringify(input)); + } catch (o_O) { + return input; + } - each(['debug', 'info', 'warn', 'error', 'log'], function (_, level) { - wrapConsoleMethod(console, level, consoleMethodCallback); + function sanitizeWorker(workerInput) { + if (isArray(workerInput)) { + return workerInput.map(function(val) { + return sanitizeWorker(val); }); } - }, - _restoreBuiltIns: function _restoreBuiltIns() { - // restore any wrapped builtins - var builtin; - - while (this._wrappedBuiltIns.length) { - builtin = this._wrappedBuiltIns.shift(); - var obj = builtin[0], - name = builtin[1], - orig = builtin[2]; - obj[name] = orig; - } - }, - _restoreConsole: function _restoreConsole() { - // eslint-disable-next-line guard-for-in - for (var method in this._originalConsoleMethods) { - this._originalConsole[method] = this._originalConsoleMethods[method]; - } - }, - _drainPlugins: function _drainPlugins() { - var self = this; // FIX ME TODO - - each(this._plugins, function (_, plugin) { - var installer = plugin[0]; - var args = plugin[1]; - installer.apply(self, [self].concat(args)); - }); - }, - _parseDSN: function _parseDSN(str) { - var m = dsnPattern.exec(str), - dsn = {}, - i = 7; - try { - while (i--) { - dsn[dsnKeys[i]] = m[i] || ''; - } - } catch (e) { - throw new configError('Invalid DSN: ' + str); + if (isPlainObject(workerInput)) { + return Object.keys(workerInput).reduce(function(acc, k) { + if (sanitizeRegExp.test(k)) { + acc[k] = sanitizeMask; + } else { + acc[k] = sanitizeWorker(workerInput[k]); + } + return acc; + }, {}); } - if (dsn.pass && !this._globalOptions.allowSecretKey) { - throw new configError('Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key'); - } + return workerInput; + } - return dsn; - }, - _getGlobalServer: function _getGlobalServer(uri) { - // assemble the endpoint from the uri pieces - var globalServer = '//' + uri.host + (uri.port ? ':' + uri.port : ''); + return sanitizeWorker(safeInput); +} - if (uri.protocol) { - globalServer = uri.protocol + ':' + globalServer; - } +module.exports = { + isObject: isObject, + isError: isError, + isErrorEvent: isErrorEvent, + isUndefined: isUndefined, + isFunction: isFunction, + isPlainObject: isPlainObject, + isString: isString, + isArray: isArray, + isEmptyObject: isEmptyObject, + supportsErrorEvent: supportsErrorEvent, + supportsFetch: supportsFetch, + supportsReferrerPolicy: supportsReferrerPolicy, + supportsPromiseRejectionEvent: supportsPromiseRejectionEvent, + wrappedCallback: wrappedCallback, + each: each, + objectMerge: objectMerge, + truncate: truncate, + objectFrozen: objectFrozen, + hasKey: hasKey, + joinRegExp: joinRegExp, + urlencode: urlencode, + uuid4: uuid4, + htmlTreeAsString: htmlTreeAsString, + htmlElementAsString: htmlElementAsString, + isSameException: isSameException, + isSameStacktrace: isSameStacktrace, + parseUrl: parseUrl, + fill: fill, + safeJoin: safeJoin, + serializeException: serializeException, + serializeKeysForMessage: serializeKeysForMessage, + sanitize: sanitize +}; - return globalServer; - }, - _handleOnErrorStackInfo: function _handleOnErrorStackInfo() { - // if we are intentionally ignoring errors via onerror, bail out - if (!this._ignoreOnError) { - this._handleStackInfo.apply(this, arguments); - } - }, - _handleStackInfo: function _handleStackInfo(stackInfo, options) { - var frames = this._prepareFrames(stackInfo, options); +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"8":8}],7:[function(_dereq_,module,exports){ +(function (global){ +var utils = _dereq_(6); - this._triggerEvent('handle', { - stackInfo: stackInfo, - options: options - }); +/* + TraceKit - Cross brower stack traces - this._processException(stackInfo.name, stackInfo.message, stackInfo.url, stackInfo.lineno, frames, options); - }, - _prepareFrames: function _prepareFrames(stackInfo, options) { - var self = this; - var frames = []; + This was originally forked from github.com/occ/TraceKit, but has since been + largely re-written and is now maintained as part of raven-js. Tests for + this are in test/vendor. - if (stackInfo.stack && stackInfo.stack.length) { - each(stackInfo.stack, function (i, stack) { - var frame = self._normalizeFrame(stack, stackInfo.url); + MIT license +*/ - if (frame) { - frames.push(frame); - } - }); // e.g. frames captured via captureMessage throw +var TraceKit = { + collectWindowErrors: true, + debug: false +}; - if (options && options.trimHeadFrames) { - for (var j = 0; j < options.trimHeadFrames && j < frames.length; j++) { - frames[j].in_app = false; - } - } - } +// This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) +var _window = + typeof window !== 'undefined' + ? window + : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; - frames = frames.slice(0, this._globalOptions.stackTraceLimit); - return frames; - }, - _normalizeFrame: function _normalizeFrame(frame, stackInfoUrl) { - // normalize the frames data - var normalized = { - filename: frame.url, - lineno: frame.line, - colno: frame.column, - function: frame.func || '?' - }; // Case when we don't have any information about the error - // E.g. throwing a string or raw object, instead of an `Error` in Firefox - // Generating synthetic error doesn't add any value here - // - // We should probably somehow let a user know that they should fix their code +// global reference to slice +var _slice = [].slice; +var UNKNOWN_FUNCTION = '?'; - if (!frame.url) { - normalized.filename = stackInfoUrl; // fallback to whole stacks url from onerror handler - } +// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error#Error_types +var ERROR_TYPES_RE = /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/; - normalized.in_app = !( // determine if an exception came from outside of our app - // first we check the global includePaths list. - !!this._globalOptions.includePaths.test && !this._globalOptions.includePaths.test(normalized.filename) || // Now we check for fun, if the function name is Raven or TraceKit - /(Raven|TraceKit)\./.test(normalized['function']) || // finally, we do a last ditch effort and check for raven.min.js - /raven\.(min\.)?js$/.test(normalized.filename)); - return normalized; - }, - _processException: function _processException(type, message, fileurl, lineno, frames, options) { - var prefixedMessage = (type ? type + ': ' : '') + (message || ''); +function getLocationHref() { + if (typeof document === 'undefined' || document.location == null) return ''; - if (!!this._globalOptions.ignoreErrors.test && (this._globalOptions.ignoreErrors.test(message) || this._globalOptions.ignoreErrors.test(prefixedMessage))) { - return; - } + return document.location.href; +} - var stacktrace; +/** + * TraceKit.report: cross-browser processing of unhandled exceptions + * + * Syntax: + * TraceKit.report.subscribe(function(stackInfo) { ... }) + * TraceKit.report.unsubscribe(function(stackInfo) { ... }) + * TraceKit.report(exception) + * try { ...code... } catch(ex) { TraceKit.report(ex); } + * + * Supports: + * - Firefox: full stack trace with line numbers, plus column number + * on top frame; column number is not guaranteed + * - Opera: full stack trace with line and column numbers + * - Chrome: full stack trace with line and column numbers + * - Safari: line and column number for the top frame only; some frames + * may be missing, and column number is not guaranteed + * - IE: line and column number for the top frame only; some frames + * may be missing, and column number is not guaranteed + * + * In theory, TraceKit should work on all of the following versions: + * - IE5.5+ (only 8.0 tested) + * - Firefox 0.9+ (only 3.5+ tested) + * - Opera 7+ (only 10.50 tested; versions 9 and earlier may require + * Exceptions Have Stacktrace to be enabled in opera:config) + * - Safari 3+ (only 4+ tested) + * - Chrome 1+ (only 5+ tested) + * - Konqueror 3.5+ (untested) + * + * Requires TraceKit.computeStackTrace. + * + * Tries to catch all unhandled exceptions and report them to the + * subscribed handlers. Please note that TraceKit.report will rethrow the + * exception. This is REQUIRED in order to get a useful stack trace in IE. + * If the exception does not reach the top of the browser, you will only + * get a stack trace from the point where TraceKit.report was called. + * + * Handlers receive a stackInfo object as described in the + * TraceKit.computeStackTrace docs. + */ +TraceKit.report = (function reportModuleWrapper() { + var handlers = [], + lastArgs = null, + lastException = null, + lastExceptionStack = null; - if (frames && frames.length) { - fileurl = frames[0].filename || fileurl; // Sentry expects frames oldest to newest - // and JS sends them as newest to oldest + /** + * Add a crash handler. + * @param {Function} handler + */ + function subscribe(handler) { + installGlobalHandler(); + handlers.push(handler); + } - frames.reverse(); - stacktrace = { - frames: frames - }; - } else if (fileurl) { - stacktrace = { - frames: [{ - filename: fileurl, - lineno: lineno, - in_app: true - }] - }; + /** + * Remove a crash handler. + * @param {Function} handler + */ + function unsubscribe(handler) { + for (var i = handlers.length - 1; i >= 0; --i) { + if (handlers[i] === handler) { + handlers.splice(i, 1); + } } + } - if (!!this._globalOptions.ignoreUrls.test && this._globalOptions.ignoreUrls.test(fileurl)) { - return; - } + /** + * Remove all crash handlers. + */ + function unsubscribeAll() { + uninstallGlobalHandler(); + handlers = []; + } - if (!!this._globalOptions.whitelistUrls.test && !this._globalOptions.whitelistUrls.test(fileurl)) { + /** + * Dispatch stack information to all handlers. + * @param {Object.} stack + */ + function notifyHandlers(stack, isWindowError) { + var exception = null; + if (isWindowError && !TraceKit.collectWindowErrors) { return; } - - var data = objectMerge({ - // sentry.interfaces.Exception - exception: { - values: [{ - type: type, - value: message, - stacktrace: stacktrace - }] - }, - culprit: fileurl - }, options); // Fire away! - - this._send(data); - }, - _trimPacket: function _trimPacket(data) { - // For now, we only want to truncate the two different messages - // but this could/should be expanded to just trim everything - var max = this._globalOptions.maxMessageLength; - - if (data.message) { - data.message = truncate(data.message, max); - } - - if (data.exception) { - var exception = data.exception.values[0]; - exception.value = truncate(exception.value, max); - } - - var request = data.request; - - if (request) { - if (request.url) { - request.url = truncate(request.url, this._globalOptions.maxUrlLength); + for (var i in handlers) { + if (handlers.hasOwnProperty(i)) { + try { + handlers[i].apply(null, [stack].concat(_slice.call(arguments, 2))); + } catch (inner) { + exception = inner; + } } + } - if (request.Referer) { - request.Referer = truncate(request.Referer, this._globalOptions.maxUrlLength); - } + if (exception) { + throw exception; } + } - if (data.breadcrumbs && data.breadcrumbs.values) this._trimBreadcrumbs(data.breadcrumbs); - return data; - }, + var _oldOnerrorHandler, _onErrorHandlerInstalled; /** - * Truncate breadcrumb values (right now just URLs) + * Ensures all global unhandled exceptions are recorded. + * Supported by Gecko and IE. + * @param {string} msg Error message. + * @param {string} url URL of script that generated the exception. + * @param {(number|string)} lineNo The line number at which the error + * occurred. + * @param {?(number|string)} colNo The column number at which the error + * occurred. + * @param {?Error} ex The actual Error object. */ - _trimBreadcrumbs: function _trimBreadcrumbs(breadcrumbs) { - // known breadcrumb properties with urls - // TODO: also consider arbitrary prop values that start with (https?)?:// - var urlProps = ['to', 'from', 'url'], - urlProp, - crumb, - data; + function traceKitWindowOnError(msg, url, lineNo, colNo, ex) { + var stack = null; + // If 'ex' is ErrorEvent, get real Error from inside + var exception = utils.isErrorEvent(ex) ? ex.error : ex; + // If 'msg' is ErrorEvent, get real message from inside + var message = utils.isErrorEvent(msg) ? msg.message : msg; - for (var i = 0; i < breadcrumbs.values.length; ++i) { - crumb = breadcrumbs.values[i]; - if (!crumb.hasOwnProperty('data') || !isObject(crumb.data) || objectFrozen(crumb.data)) continue; - data = objectMerge({}, crumb.data); + if (lastExceptionStack) { + TraceKit.computeStackTrace.augmentStackTraceWithInitialElement( + lastExceptionStack, + url, + lineNo, + message + ); + processLastException(); + } else if (exception && utils.isError(exception)) { + // non-string `exception` arg; attempt to extract stack trace - for (var j = 0; j < urlProps.length; ++j) { - urlProp = urlProps[j]; + // New chrome and blink send along a real error object + // Let's just report that like a normal error. + // See: https://mikewest.org/2013/08/debugging-runtime-errors-with-window-onerror + stack = TraceKit.computeStackTrace(exception); + notifyHandlers(stack, true); + } else { + var location = { + url: url, + line: lineNo, + column: colNo + }; - if (data.hasOwnProperty(urlProp) && data[urlProp]) { - data[urlProp] = truncate(data[urlProp], this._globalOptions.maxUrlLength); + var name = undefined; + var groups; + + if ({}.toString.call(message) === '[object String]') { + var groups = message.match(ERROR_TYPES_RE); + if (groups) { + name = groups[1]; + message = groups[2]; } } - breadcrumbs.values[i].data = data; - } - }, - _getHttpData: function _getHttpData() { - if (!this._hasNavigator && !this._hasDocument) return; - var httpData = {}; + location.func = UNKNOWN_FUNCTION; - if (this._hasNavigator && _navigator.userAgent) { - httpData.headers = { - 'User-Agent': navigator.userAgent + stack = { + name: name, + message: message, + url: getLocationHref(), + stack: [location] }; - } // Check in `window` instead of `document`, as we may be in ServiceWorker environment - - - if (_window$1.location && _window$1.location.href) { - httpData.url = _window$1.location.href; + notifyHandlers(stack, true); } - if (this._hasDocument && _document.referrer) { - if (!httpData.headers) httpData.headers = {}; - httpData.headers.Referer = _document.referrer; + if (_oldOnerrorHandler) { + return _oldOnerrorHandler.apply(this, arguments); } - return httpData; - }, - _resetBackoff: function _resetBackoff() { - this._backoffDuration = 0; - this._backoffStart = null; - }, - _shouldBackoff: function _shouldBackoff() { - return this._backoffDuration && now() - this._backoffStart < this._backoffDuration; - }, - - /** - * Returns true if the in-process data payload matches the signature - * of the previously-sent data - * - * NOTE: This has to be done at this level because TraceKit can generate - * data from window.onerror WITHOUT an exception object (IE8, IE9, - * other old browsers). This can take the form of an "exception" - * data object with a single frame (derived from the onerror args). - */ - _isRepeatData: function _isRepeatData(current) { - var last = this._lastData; - if (!last || current.message !== last.message || // defined for captureMessage - current.culprit !== last.culprit // defined for captureException/onerror - ) return false; // Stacktrace interface (i.e. from captureMessage) + return false; + } - if (current.stacktrace || last.stacktrace) { - return isSameStacktrace(current.stacktrace, last.stacktrace); - } else if (current.exception || last.exception) { - // Exception interface (i.e. from captureException/onerror) - return isSameException(current.exception, last.exception); + function installGlobalHandler() { + if (_onErrorHandlerInstalled) { + return; } + _oldOnerrorHandler = _window.onerror; + _window.onerror = traceKitWindowOnError; + _onErrorHandlerInstalled = true; + } - return true; - }, - _setBackoffState: function _setBackoffState(request) { - // If we are already in a backoff state, don't change anything - if (this._shouldBackoff()) { + function uninstallGlobalHandler() { + if (!_onErrorHandlerInstalled) { return; } + _window.onerror = _oldOnerrorHandler; + _onErrorHandlerInstalled = false; + _oldOnerrorHandler = undefined; + } - var status = request.status; // 400 - project_id doesn't exist or some other fatal - // 401 - invalid/revoked dsn - // 429 - too many requests - - if (!(status === 400 || status === 401 || status === 429)) return; - var retry; + function processLastException() { + var _lastExceptionStack = lastExceptionStack, + _lastArgs = lastArgs; + lastArgs = null; + lastExceptionStack = null; + lastException = null; + notifyHandlers.apply(null, [_lastExceptionStack, false].concat(_lastArgs)); + } - try { - // If Retry-After is not in Access-Control-Expose-Headers, most - // browsers will throw an exception trying to access it - if (supportsFetch()) { - retry = request.headers.get('Retry-After'); + /** + * Reports an unhandled Error to TraceKit. + * @param {Error} ex + * @param {?boolean} rethrow If false, do not re-throw the exception. + * Only used for window.onerror to not cause an infinite loop of + * rethrowing. + */ + function report(ex, rethrow) { + var args = _slice.call(arguments, 1); + if (lastExceptionStack) { + if (lastException === ex) { + return; // already caught by an inner catch block, ignore } else { - retry = request.getResponseHeader('Retry-After'); - } // Retry-After is returned in seconds - - - retry = parseInt(retry, 10) * 1000; - } catch (e) { - /* eslint no-empty:0 */ - } - - this._backoffDuration = retry ? // If Sentry server returned a Retry-After value, use it - retry : // Otherwise, double the last backoff duration (starts at 1 sec) - this._backoffDuration * 2 || 1000; - this._backoffStart = now(); - }, - _send: function _send(data) { - var globalOptions = this._globalOptions; - - var baseData = { - project: this._globalProject, - logger: globalOptions.logger, - platform: 'javascript' - }, - httpData = this._getHttpData(); - - if (httpData) { - baseData.request = httpData; - } // HACK: delete `trimHeadFrames` to prevent from appearing in outbound payload - - - if (data.trimHeadFrames) delete data.trimHeadFrames; - data = objectMerge(baseData, data); // Merge in the tags and extra separately since objectMerge doesn't handle a deep merge - - data.tags = objectMerge(objectMerge({}, this._globalContext.tags), data.tags); - data.extra = objectMerge(objectMerge({}, this._globalContext.extra), data.extra); // Send along our own collected metadata with extra - - data.extra['session:duration'] = now() - this._startTime; - - if (this._breadcrumbs && this._breadcrumbs.length > 0) { - // intentionally make shallow copy so that additions - // to breadcrumbs aren't accidentally sent in this request - data.breadcrumbs = { - values: [].slice.call(this._breadcrumbs, 0) - }; + processLastException(); + } } - if (this._globalContext.user) { - // sentry.interfaces.User - data.user = this._globalContext.user; - } // Include the environment if it's defined in globalOptions - - - if (globalOptions.environment) data.environment = globalOptions.environment; // Include the release if it's defined in globalOptions - - if (globalOptions.release) data.release = globalOptions.release; // Include server_name if it's defined in globalOptions - - if (globalOptions.serverName) data.server_name = globalOptions.serverName; // Cleanup empty properties before sending them to the server + var stack = TraceKit.computeStackTrace(ex); + lastExceptionStack = stack; + lastException = ex; + lastArgs = args; - Object.keys(data).forEach(function (key) { - if (data[key] == null || data[key] === '' || isEmptyObject(data[key])) { - delete data[key]; + // If the stack trace is incomplete, wait for 2 seconds for + // slow slow IE to see if onerror occurs or not before reporting + // this exception; otherwise, we will end up with an incomplete + // stack trace + setTimeout(function() { + if (lastException === ex) { + processLastException(); } - }); + }, stack.incomplete ? 2000 : 0); - if (isFunction(globalOptions.dataCallback)) { - data = globalOptions.dataCallback(data) || data; - } // Why?????????? + if (rethrow !== false) { + throw ex; // re-throw to propagate to the top level (and cause window.onerror) + } + } + report.subscribe = subscribe; + report.unsubscribe = unsubscribe; + report.uninstall = unsubscribeAll; + return report; +})(); - if (!data || isEmptyObject(data)) { - return; - } // Check if the request should be filtered or not +/** + * TraceKit.computeStackTrace: cross-browser stack traces in JavaScript + * + * Syntax: + * s = TraceKit.computeStackTrace(exception) // consider using TraceKit.report instead (see below) + * Returns: + * s.name - exception name + * s.message - exception message + * s.stack[i].url - JavaScript or HTML file URL + * s.stack[i].func - function name, or empty for anonymous functions (if guessing did not work) + * s.stack[i].args - arguments passed to the function, if known + * s.stack[i].line - line number, if known + * s.stack[i].column - column number, if known + * + * Supports: + * - Firefox: full stack trace with line numbers and unreliable column + * number on top frame + * - Opera 10: full stack trace with line and column numbers + * - Opera 9-: full stack trace with line numbers + * - Chrome: full stack trace with line and column numbers + * - Safari: line and column number for the topmost stacktrace element + * only + * - IE: no line numbers whatsoever + * + * Tries to guess names of anonymous functions by looking for assignments + * in the source code. In IE and Safari, we have to guess source file names + * by searching for function bodies inside all page scripts. This will not + * work for scripts that are loaded cross-domain. + * Here be dragons: some function names may be guessed incorrectly, and + * duplicate functions may be mismatched. + * + * TraceKit.computeStackTrace should only be used for tracing purposes. + * Logging of unhandled exceptions should be done with TraceKit.report, + * which builds on top of TraceKit.computeStackTrace and provides better + * IE support by utilizing the window.onerror event to retrieve information + * about the top of the stack. + * + * Note: In IE and Safari, no stack trace is recorded on the Error object, + * so computeStackTrace instead walks its *own* chain of callers. + * This means that: + * * in Safari, some methods may be missing from the stack trace; + * * in IE, the topmost function in the stack trace will always be the + * caller of computeStackTrace. + * + * This is okay for tracing (because you are likely to be calling + * computeStackTrace from the function you want to be the topmost element + * of the stack trace anyway), but not okay for logging unhandled + * exceptions (because your catch block will likely be far away from the + * inner function that actually caused the exception). + * + */ +TraceKit.computeStackTrace = (function computeStackTraceWrapper() { + // Contents of Exception in various browsers. + // + // SAFARI: + // ex.message = Can't find variable: qq + // ex.line = 59 + // ex.sourceId = 580238192 + // ex.sourceURL = http://... + // ex.expressionBeginOffset = 96 + // ex.expressionCaretOffset = 98 + // ex.expressionEndOffset = 98 + // ex.name = ReferenceError + // + // FIREFOX: + // ex.message = qq is not defined + // ex.fileName = http://... + // ex.lineNumber = 59 + // ex.columnNumber = 69 + // ex.stack = ...stack trace... (see the example below) + // ex.name = ReferenceError + // + // CHROME: + // ex.message = qq is not defined + // ex.name = ReferenceError + // ex.type = not_defined + // ex.arguments = ['aa'] + // ex.stack = ...stack trace... + // + // INTERNET EXPLORER: + // ex.message = ... + // ex.name = ReferenceError + // + // OPERA: + // ex.message = ...message... (see the example below) + // ex.name = ReferenceError + // ex.opera#sourceloc = 11 (pretty much useless, duplicates the info in ex.message) + // ex.stacktrace = n/a; see 'opera:config#UserPrefs|Exceptions Have Stacktrace' + /** + * Computes stack trace information from the stack property. + * Chrome and Gecko use this property. + * @param {Error} ex + * @return {?Object.} Stack trace information. + */ + function computeStackTraceFromStackProp(ex) { + if (typeof ex.stack === 'undefined' || !ex.stack) return; - if (isFunction(globalOptions.shouldSendCallback) && !globalOptions.shouldSendCallback(data)) { - return; - } // Backoff state: Sentry server previously responded w/ an error (e.g. 429 - too many requests), - // so drop requests until "cool-off" period has elapsed. + var chrome = /^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i; + var winjs = /^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i; + // NOTE: blob urls are now supposed to always have an origin, therefore it's format + // which is `blob:http://url/path/with-some-uuid`, is matched by `blob.*?:\/` as well + var gecko = /^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i; + // Used to additionally parse URL/line/column from eval frames + var geckoEval = /(\S+) line (\d+)(?: > eval line \d+)* > eval/i; + var chromeEval = /\((\S*)(?::(\d+))(?::(\d+))\)/; + var lines = ex.stack.split('\n'); + var stack = []; + var submatch; + var parts; + var element; + var reference = /^(.*) is undefined$/.exec(ex.message); + for (var i = 0, j = lines.length; i < j; ++i) { + if ((parts = chrome.exec(lines[i]))) { + var isNative = parts[2] && parts[2].indexOf('native') === 0; // start of line + var isEval = parts[2] && parts[2].indexOf('eval') === 0; // start of line + if (isEval && (submatch = chromeEval.exec(parts[2]))) { + // throw out eval line/column and use top-most line/column number + parts[2] = submatch[1]; // url + parts[3] = submatch[2]; // line + parts[4] = submatch[3]; // column + } + element = { + url: !isNative ? parts[2] : null, + func: parts[1] || UNKNOWN_FUNCTION, + args: isNative ? [parts[2]] : [], + line: parts[3] ? +parts[3] : null, + column: parts[4] ? +parts[4] : null + }; + } else if ((parts = winjs.exec(lines[i]))) { + element = { + url: parts[2], + func: parts[1] || UNKNOWN_FUNCTION, + args: [], + line: +parts[3], + column: parts[4] ? +parts[4] : null + }; + } else if ((parts = gecko.exec(lines[i]))) { + var isEval = parts[3] && parts[3].indexOf(' > eval') > -1; + if (isEval && (submatch = geckoEval.exec(parts[3]))) { + // throw out eval line/column and use top-most line number + parts[3] = submatch[1]; + parts[4] = submatch[2]; + parts[5] = null; // no column when eval + } else if (i === 0 && !parts[5] && typeof ex.columnNumber !== 'undefined') { + // FireFox uses this awesome columnNumber property for its top frame + // Also note, Firefox's column number is 0-based and everything else expects 1-based, + // so adding 1 + // NOTE: this hack doesn't work if top-most frame is eval + stack[0].column = ex.columnNumber + 1; + } + element = { + url: parts[3], + func: parts[1] || UNKNOWN_FUNCTION, + args: parts[2] ? parts[2].split(',') : [], + line: parts[4] ? +parts[4] : null, + column: parts[5] ? +parts[5] : null + }; + } else { + continue; + } - if (this._shouldBackoff()) { - this._logDebug('warn', 'Raven dropped error due to backoff: ', data); + if (!element.func && element.line) { + element.func = UNKNOWN_FUNCTION; + } - return; + stack.push(element); } - if (typeof globalOptions.sampleRate === 'number') { - if (Math.random() < globalOptions.sampleRate) { - this._sendProcessedPayload(data); - } - } else { - this._sendProcessedPayload(data); + if (!stack.length) { + return null; } - }, - _getUuid: function _getUuid() { - return uuid4(); - }, - _sendProcessedPayload: function _sendProcessedPayload(data, callback) { - var self = this; - var globalOptions = this._globalOptions; - if (!this.isSetup()) return; // Try and clean up the packet before sending by truncating long values - - data = this._trimPacket(data); // ideally duplicate error testing should occur *before* dataCallback/shouldSendCallback, - // but this would require copying an un-truncated copy of the data packet, which can be - // arbitrarily deep (extra_data) -- could be worthwhile? will revisit - - if (!this._globalOptions.allowDuplicates && this._isRepeatData(data)) { - this._logDebug('warn', 'Raven dropped repeat event: ', data); - - return; - } // Send along an event_id if not explicitly passed. - // This event_id can be used to reference the error within Sentry itself. - // Set lastEventId after we know the error should actually be sent - - - this._lastEventId = data.event_id || (data.event_id = this._getUuid()); // Store outbound payload after trim - - this._lastData = data; - this._logDebug('debug', 'Raven about to send:', data); + return { + name: ex.name, + message: ex.message, + url: getLocationHref(), + stack: stack + }; + } - var auth = { - sentry_version: '7', - sentry_client: 'raven-js/' + this.VERSION, - sentry_key: this._globalKey + /** + * Adds information about the first frame to incomplete stack traces. + * Safari and IE require this to get complete data on the first frame. + * @param {Object.} stackInfo Stack trace information from + * one of the compute* methods. + * @param {string} url The URL of the script that caused an error. + * @param {(number|string)} lineNo The line number of the script that + * caused an error. + * @param {string=} message The error generated by the browser, which + * hopefully contains the name of the object that caused the error. + * @return {boolean} Whether or not the stack information was + * augmented. + */ + function augmentStackTraceWithInitialElement(stackInfo, url, lineNo, message) { + var initial = { + url: url, + line: lineNo }; - if (this._globalSecret) { - auth.sentry_secret = this._globalSecret; - } + if (initial.url && initial.line) { + stackInfo.incomplete = false; - var exception = data.exception && data.exception.values[0]; // only capture 'sentry' breadcrumb is autoBreadcrumbs is truthy + if (!initial.func) { + initial.func = UNKNOWN_FUNCTION; + } - if (this._globalOptions.autoBreadcrumbs && this._globalOptions.autoBreadcrumbs.sentry) { - this.captureBreadcrumb({ - category: 'sentry', - message: exception ? (exception.type ? exception.type + ': ' : '') + exception.value : data.message, - event_id: data.event_id, - level: data.level || 'error' // presume error unless specified + if (stackInfo.stack.length > 0) { + if (stackInfo.stack[0].url === initial.url) { + if (stackInfo.stack[0].line === initial.line) { + return false; // already in stack trace + } else if ( + !stackInfo.stack[0].line && + stackInfo.stack[0].func === initial.func + ) { + stackInfo.stack[0].line = initial.line; + return false; + } + } + } - }); + stackInfo.stack.unshift(initial); + stackInfo.partial = true; + return true; + } else { + stackInfo.incomplete = true; } - var url = this._globalEndpoint; - - (globalOptions.transport || this._makeRequest).call(this, { - url: url, - auth: auth, - data: data, - options: globalOptions, - onSuccess: function success() { - self._resetBackoff(); + return false; + } - self._triggerEvent('success', { - data: data, - src: url - }); + /** + * Computes stack trace information by walking the arguments.caller + * chain at the time the exception occurred. This will cause earlier + * frames to be missed but is the only way to get any stack trace in + * Safari and IE. The top frame is restored by + * {@link augmentStackTraceWithInitialElement}. + * @param {Error} ex + * @return {?Object.} Stack trace information. + */ + function computeStackTraceByWalkingCallerChain(ex, depth) { + var functionName = /function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i, + stack = [], + funcs = {}, + recursion = false, + parts, + item, + source; + + for ( + var curr = computeStackTraceByWalkingCallerChain.caller; + curr && !recursion; + curr = curr.caller + ) { + if (curr === computeStackTrace || curr === TraceKit.report) { + // console.log('skipping internal function'); + continue; + } - callback && callback(); - }, - onError: function failure(error) { - self._logDebug('error', 'Raven transport failed to send: ', error); + item = { + url: null, + func: UNKNOWN_FUNCTION, + line: null, + column: null + }; - if (error.request) { - self._setBackoffState(error.request); - } + if (curr.name) { + item.func = curr.name; + } else if ((parts = functionName.exec(curr.toString()))) { + item.func = parts[1]; + } - self._triggerEvent('failure', { - data: data, - src: url - }); + if (typeof item.func === 'undefined') { + try { + item.func = parts.input.substring(0, parts.input.indexOf('{')); + } catch (e) {} + } - error = error || new Error('Raven send failed (no additional details provided)'); - callback && callback(error); + if (funcs['' + curr]) { + recursion = true; + } else { + funcs['' + curr] = true; } - }); - }, - _makeRequest: function _makeRequest(opts) { - // Auth is intentionally sent as part of query string (NOT as custom HTTP header) to avoid preflight CORS requests - var url = opts.url + '?' + urlencode(opts.auth); - var evaluatedHeaders = null; - var evaluatedFetchParameters = {}; - if (opts.options.headers) { - evaluatedHeaders = this._evaluateHash(opts.options.headers); + stack.push(item); } - if (opts.options.fetchParameters) { - evaluatedFetchParameters = this._evaluateHash(opts.options.fetchParameters); + if (depth) { + // console.log('depth is ' + depth); + // console.log('stack is ' + stack.length); + stack.splice(0, depth); } - if (supportsFetch()) { - evaluatedFetchParameters.body = stringify_1(opts.data); - var defaultFetchOptions = objectMerge({}, this._fetchDefaults); - var fetchOptions = objectMerge(defaultFetchOptions, evaluatedFetchParameters); + var result = { + name: ex.name, + message: ex.message, + url: getLocationHref(), + stack: stack + }; + augmentStackTraceWithInitialElement( + result, + ex.sourceURL || ex.fileName, + ex.line || ex.lineNumber, + ex.message || ex.description + ); + return result; + } - if (evaluatedHeaders) { - fetchOptions.headers = evaluatedHeaders; - } + /** + * Computes a stack trace for an exception. + * @param {Error} ex + * @param {(string|number)=} depth + */ + function computeStackTrace(ex, depth) { + var stack = null; + depth = depth == null ? 0 : +depth; - return _window$1.fetch(url, fetchOptions).then(function (response) { - if (response.ok) { - opts.onSuccess && opts.onSuccess(); - } else { - var error = new Error('Sentry error code: ' + response.status); // It's called request only to keep compatibility with XHR interface - // and not add more redundant checks in setBackoffState method + try { + stack = computeStackTraceFromStackProp(ex); + if (stack) { + return stack; + } + } catch (e) { + if (TraceKit.debug) { + throw e; + } + } - error.request = response; - opts.onError && opts.onError(error); - } - })['catch'](function () { - opts.onError && opts.onError(new Error('Sentry error code: network unavailable')); - }); + try { + stack = computeStackTraceByWalkingCallerChain(ex, depth + 1); + if (stack) { + return stack; + } + } catch (e) { + if (TraceKit.debug) { + throw e; + } } + return { + name: ex.name, + message: ex.message, + url: getLocationHref() + }; + } - var request = _window$1.XMLHttpRequest && new _window$1.XMLHttpRequest(); - if (!request) return; // if browser doesn't support CORS (e.g. IE7), we are out of luck + computeStackTrace.augmentStackTraceWithInitialElement = augmentStackTraceWithInitialElement; + computeStackTrace.computeStackTraceFromStackProp = computeStackTraceFromStackProp; - var hasCORS = 'withCredentials' in request || typeof XDomainRequest !== 'undefined'; - if (!hasCORS) return; + return computeStackTrace; +})(); - if ('withCredentials' in request) { - request.onreadystatechange = function () { - if (request.readyState !== 4) { - return; - } else if (request.status === 200) { - opts.onSuccess && opts.onSuccess(); - } else if (opts.onError) { - var err = new Error('Sentry error code: ' + request.status); - err.request = request; - opts.onError(err); - } - }; - } else { - request = new XDomainRequest(); // xdomainrequest cannot go http -> https (or vice versa), - // so always use protocol relative +module.exports = TraceKit; - url = url.replace(/^https?:/, ''); // onreadystatechange not supported by XDomainRequest +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"6":6}],8:[function(_dereq_,module,exports){ +/* + json-stringify-safe + Like JSON.stringify, but doesn't throw on circular references. - if (opts.onSuccess) { - request.onload = opts.onSuccess; - } + Originally forked from https://github.com/isaacs/json-stringify-safe + version 5.0.1 on 3/8/2017 and modified to handle Errors serialization + and IE8 compatibility. Tests for this are in test/vendor. - if (opts.onError) { - request.onerror = function () { - var err = new Error('Sentry error code: XDomainRequest'); - err.request = request; - opts.onError(err); - }; - } - } + ISC license: https://github.com/isaacs/json-stringify-safe/blob/master/LICENSE +*/ - request.open('POST', url); +exports = module.exports = stringify; +exports.getSerialize = serializer; - if (evaluatedHeaders) { - each(evaluatedHeaders, function (key, value) { - request.setRequestHeader(key, value); - }); - } +function indexOf(haystack, needle) { + for (var i = 0; i < haystack.length; ++i) { + if (haystack[i] === needle) return i; + } + return -1; +} - request.send(stringify_1(opts.data)); - }, - _evaluateHash: function _evaluateHash(hash) { - var evaluated = {}; +function stringify(obj, replacer, spaces, cycleReplacer) { + return JSON.stringify(obj, serializer(replacer, cycleReplacer), spaces); +} - for (var key in hash) { - if (hash.hasOwnProperty(key)) { - var value = hash[key]; - evaluated[key] = typeof value === 'function' ? value() : value; - } - } +// https://github.com/ftlabs/js-abbreviate/blob/fa709e5f139e7770a71827b1893f22418097fbda/index.js#L95-L106 +function stringifyError(value) { + var err = { + // These properties are implemented as magical getters and don't show up in for in + stack: value.stack, + message: value.message, + name: value.name + }; - return evaluated; - }, - _logDebug: function _logDebug(level) { - if (this._originalConsoleMethods[level] && this.debug) { - // In IE<10 console methods do not have their own 'apply' method - Function.prototype.apply.call(this._originalConsoleMethods[level], this._originalConsole, [].slice.call(arguments, 1)); - } - }, - _mergeContext: function _mergeContext(key, context) { - if (isUndefined(context)) { - delete this._globalContext[key]; - } else { - this._globalContext[key] = objectMerge(this._globalContext[key] || {}, context); + for (var i in value) { + if (Object.prototype.hasOwnProperty.call(value, i)) { + err[i] = value[i]; } } -}; // Deprecations -Raven$1.prototype.setUser = Raven$1.prototype.setUserContext; -Raven$1.prototype.setReleaseContext = Raven$1.prototype.setRelease; -var raven = Raven$1; + return err; +} -/** - * Enforces a single instance of the Raven client, and the - * main entry point for Raven. If you are a consumer of the - * Raven library, you SHOULD load this file (vs raven.js). - **/ -// This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) +function serializer(replacer, cycleReplacer) { + var stack = []; + var keys = []; + + if (cycleReplacer == null) { + cycleReplacer = function(key, value) { + if (stack[0] === value) { + return '[Circular ~]'; + } + return '[Circular ~.' + keys.slice(0, indexOf(stack, value)).join('.') + ']'; + }; + } -var _window = typeof window !== 'undefined' ? window : typeof commonjsGlobal !== 'undefined' ? commonjsGlobal : typeof self !== 'undefined' ? self : {}; + return function(key, value) { + if (stack.length > 0) { + var thisPos = indexOf(stack, this); + ~thisPos ? stack.splice(thisPos + 1) : stack.push(this); + ~thisPos ? keys.splice(thisPos, Infinity, key) : keys.push(key); -var _Raven = _window.Raven; -var Raven = new raven(); + if (~indexOf(stack, value)) { + value = cycleReplacer.call(this, key, value); + } + } else { + stack.push(value); + } + + return replacer == null + ? value instanceof Error ? stringifyError(value) : value + : replacer.call(this, key, value); + }; +} + +},{}],9:[function(_dereq_,module,exports){ /* - * Allow multiple versions of Raven to be installed. - * Strip Raven from the global context and returns the instance. + * JavaScript MD5 + * https://github.com/blueimp/JavaScript-MD5 * - * @return {Raven} + * Copyright 2011, Sebastian Tschan + * https://blueimp.net + * + * Licensed under the MIT license: + * https://opensource.org/licenses/MIT + * + * Based on + * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message + * Digest Algorithm, as defined in RFC 1321. + * Version 2.2 Copyright (C) Paul Johnston 1999 - 2009 + * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet + * Distributed under the BSD License + * See http://pajhome.org.uk/crypt/md5 for more info. */ -Raven.noConflict = function () { - _window.Raven = _Raven; - return Raven; -}; +/* +* Add integers, wrapping at 2^32. This uses 16-bit operations internally +* to work around bugs in some JS interpreters. +*/ +function safeAdd(x, y) { + var lsw = (x & 0xffff) + (y & 0xffff); + var msw = (x >> 16) + (y >> 16) + (lsw >> 16); + return (msw << 16) | (lsw & 0xffff); +} -Raven.afterLoad(); -var singleton = Raven; +/* +* Bitwise rotate a 32-bit number to the left. +*/ +function bitRotateLeft(num, cnt) { + return (num << cnt) | (num >>> (32 - cnt)); +} -/** - * Ember.js plugin - * - * Patches event handler callbacks and ajax callbacks. - */ -function emberPlugin(Raven, Ember) { - Ember = Ember || window.Ember; // quit if Ember isn't on the page +/* +* These functions implement the four basic operations the algorithm uses. +*/ +function md5cmn(q, a, b, x, s, t) { + return safeAdd(bitRotateLeft(safeAdd(safeAdd(a, q), safeAdd(x, t)), s), b); +} +function md5ff(a, b, c, d, x, s, t) { + return md5cmn((b & c) | (~b & d), a, b, x, s, t); +} +function md5gg(a, b, c, d, x, s, t) { + return md5cmn((b & d) | (c & ~d), a, b, x, s, t); +} +function md5hh(a, b, c, d, x, s, t) { + return md5cmn(b ^ c ^ d, a, b, x, s, t); +} +function md5ii(a, b, c, d, x, s, t) { + return md5cmn(c ^ (b | ~d), a, b, x, s, t); +} - if (!Ember) return; - var _oldOnError = Ember.onerror; +/* +* Calculate the MD5 of an array of little-endian words, and a bit length. +*/ +function binlMD5(x, len) { + /* append padding */ + x[len >> 5] |= 0x80 << (len % 32); + x[(((len + 64) >>> 9) << 4) + 14] = len; + + var i; + var olda; + var oldb; + var oldc; + var oldd; + var a = 1732584193; + var b = -271733879; + var c = -1732584194; + var d = 271733878; + + for (i = 0; i < x.length; i += 16) { + olda = a; + oldb = b; + oldc = c; + oldd = d; + + a = md5ff(a, b, c, d, x[i], 7, -680876936); + d = md5ff(d, a, b, c, x[i + 1], 12, -389564586); + c = md5ff(c, d, a, b, x[i + 2], 17, 606105819); + b = md5ff(b, c, d, a, x[i + 3], 22, -1044525330); + a = md5ff(a, b, c, d, x[i + 4], 7, -176418897); + d = md5ff(d, a, b, c, x[i + 5], 12, 1200080426); + c = md5ff(c, d, a, b, x[i + 6], 17, -1473231341); + b = md5ff(b, c, d, a, x[i + 7], 22, -45705983); + a = md5ff(a, b, c, d, x[i + 8], 7, 1770035416); + d = md5ff(d, a, b, c, x[i + 9], 12, -1958414417); + c = md5ff(c, d, a, b, x[i + 10], 17, -42063); + b = md5ff(b, c, d, a, x[i + 11], 22, -1990404162); + a = md5ff(a, b, c, d, x[i + 12], 7, 1804603682); + d = md5ff(d, a, b, c, x[i + 13], 12, -40341101); + c = md5ff(c, d, a, b, x[i + 14], 17, -1502002290); + b = md5ff(b, c, d, a, x[i + 15], 22, 1236535329); + + a = md5gg(a, b, c, d, x[i + 1], 5, -165796510); + d = md5gg(d, a, b, c, x[i + 6], 9, -1069501632); + c = md5gg(c, d, a, b, x[i + 11], 14, 643717713); + b = md5gg(b, c, d, a, x[i], 20, -373897302); + a = md5gg(a, b, c, d, x[i + 5], 5, -701558691); + d = md5gg(d, a, b, c, x[i + 10], 9, 38016083); + c = md5gg(c, d, a, b, x[i + 15], 14, -660478335); + b = md5gg(b, c, d, a, x[i + 4], 20, -405537848); + a = md5gg(a, b, c, d, x[i + 9], 5, 568446438); + d = md5gg(d, a, b, c, x[i + 14], 9, -1019803690); + c = md5gg(c, d, a, b, x[i + 3], 14, -187363961); + b = md5gg(b, c, d, a, x[i + 8], 20, 1163531501); + a = md5gg(a, b, c, d, x[i + 13], 5, -1444681467); + d = md5gg(d, a, b, c, x[i + 2], 9, -51403784); + c = md5gg(c, d, a, b, x[i + 7], 14, 1735328473); + b = md5gg(b, c, d, a, x[i + 12], 20, -1926607734); + + a = md5hh(a, b, c, d, x[i + 5], 4, -378558); + d = md5hh(d, a, b, c, x[i + 8], 11, -2022574463); + c = md5hh(c, d, a, b, x[i + 11], 16, 1839030562); + b = md5hh(b, c, d, a, x[i + 14], 23, -35309556); + a = md5hh(a, b, c, d, x[i + 1], 4, -1530992060); + d = md5hh(d, a, b, c, x[i + 4], 11, 1272893353); + c = md5hh(c, d, a, b, x[i + 7], 16, -155497632); + b = md5hh(b, c, d, a, x[i + 10], 23, -1094730640); + a = md5hh(a, b, c, d, x[i + 13], 4, 681279174); + d = md5hh(d, a, b, c, x[i], 11, -358537222); + c = md5hh(c, d, a, b, x[i + 3], 16, -722521979); + b = md5hh(b, c, d, a, x[i + 6], 23, 76029189); + a = md5hh(a, b, c, d, x[i + 9], 4, -640364487); + d = md5hh(d, a, b, c, x[i + 12], 11, -421815835); + c = md5hh(c, d, a, b, x[i + 15], 16, 530742520); + b = md5hh(b, c, d, a, x[i + 2], 23, -995338651); + + a = md5ii(a, b, c, d, x[i], 6, -198630844); + d = md5ii(d, a, b, c, x[i + 7], 10, 1126891415); + c = md5ii(c, d, a, b, x[i + 14], 15, -1416354905); + b = md5ii(b, c, d, a, x[i + 5], 21, -57434055); + a = md5ii(a, b, c, d, x[i + 12], 6, 1700485571); + d = md5ii(d, a, b, c, x[i + 3], 10, -1894986606); + c = md5ii(c, d, a, b, x[i + 10], 15, -1051523); + b = md5ii(b, c, d, a, x[i + 1], 21, -2054922799); + a = md5ii(a, b, c, d, x[i + 8], 6, 1873313359); + d = md5ii(d, a, b, c, x[i + 15], 10, -30611744); + c = md5ii(c, d, a, b, x[i + 6], 15, -1560198380); + b = md5ii(b, c, d, a, x[i + 13], 21, 1309151649); + a = md5ii(a, b, c, d, x[i + 4], 6, -145523070); + d = md5ii(d, a, b, c, x[i + 11], 10, -1120210379); + c = md5ii(c, d, a, b, x[i + 2], 15, 718787259); + b = md5ii(b, c, d, a, x[i + 9], 21, -343485551); + + a = safeAdd(a, olda); + b = safeAdd(b, oldb); + c = safeAdd(c, oldc); + d = safeAdd(d, oldd); + } + return [a, b, c, d]; +} - Ember.onerror = function EmberOnError(error) { - Raven.captureException(error); +/* +* Convert an array of little-endian words to a string +*/ +function binl2rstr(input) { + var i; + var output = ''; + var length32 = input.length * 32; + for (i = 0; i < length32; i += 8) { + output += String.fromCharCode((input[i >> 5] >>> (i % 32)) & 0xff); + } + return output; +} - if (typeof _oldOnError === 'function') { - _oldOnError.call(this, error); - } - }; +/* +* Convert a raw string to an array of little-endian words +* Characters >255 have their high-byte silently ignored. +*/ +function rstr2binl(input) { + var i; + var output = []; + output[(input.length >> 2) - 1] = undefined; + for (i = 0; i < output.length; i += 1) { + output[i] = 0; + } + var length8 = input.length * 8; + for (i = 0; i < length8; i += 8) { + output[i >> 5] |= (input.charCodeAt(i / 8) & 0xff) << (i % 32); + } + return output; +} - Ember.RSVP.on('error', function (reason) { - if (reason instanceof Error) { - Raven.captureException(reason, { - extra: { - context: 'Unhandled Promise error detected' - } - }); - } else { - Raven.captureMessage('Unhandled Promise error detected', { - extra: { - reason: reason - } - }); - } - }); +/* +* Calculate the MD5 of a raw string +*/ +function rstrMD5(s) { + return binl2rstr(binlMD5(rstr2binl(s), s.length * 8)); +} + +/* +* Calculate the HMAC-MD5, of a key and some data (raw strings) +*/ +function rstrHMACMD5(key, data) { + var i; + var bkey = rstr2binl(key); + var ipad = []; + var opad = []; + var hash; + ipad[15] = opad[15] = undefined; + if (bkey.length > 16) { + bkey = binlMD5(bkey, key.length * 8); + } + for (i = 0; i < 16; i += 1) { + ipad[i] = bkey[i] ^ 0x36363636; + opad[i] = bkey[i] ^ 0x5c5c5c5c; + } + hash = binlMD5(ipad.concat(rstr2binl(data)), 512 + data.length * 8); + return binl2rstr(binlMD5(opad.concat(hash), 512 + 128)); +} + +/* +* Convert a raw string to a hex string +*/ +function rstr2hex(input) { + var hexTab = '0123456789abcdef'; + var output = ''; + var x; + var i; + for (i = 0; i < input.length; i += 1) { + x = input.charCodeAt(i); + output += hexTab.charAt((x >>> 4) & 0x0f) + hexTab.charAt(x & 0x0f); + } + return output; } -var ember$2 = emberPlugin; +/* +* Encode a string as utf-8 +*/ +function str2rstrUTF8(input) { + return unescape(encodeURIComponent(input)); +} -/* This file was generated by './scripts/generate-plugin-combinations.js'! */ +/* +* Take string arguments and return either raw or hex encoded strings +*/ +function rawMD5(s) { + return rstrMD5(str2rstrUTF8(s)); +} +function hexMD5(s) { + return rstr2hex(rawMD5(s)); +} +function rawHMACMD5(k, d) { + return rstrHMACMD5(str2rstrUTF8(k), str2rstrUTF8(d)); +} +function hexHMACMD5(k, d) { + return rstr2hex(rawHMACMD5(k, d)); +} -singleton.addPlugin(ember$2); -var ember = {}; +function md5(string, key, raw) { + if (!key) { + if (!raw) { + return hexMD5(string); + } + return rawMD5(string); + } + if (!raw) { + return hexHMACMD5(key, string); + } + return rawHMACMD5(key, string); +} -return ember; +module.exports = md5; -}))); +},{}]},{},[5,1])(5) +}); \ No newline at end of file diff --git a/dist/ember/raven.min.js b/dist/ember/raven.min.js index 02cb7780491b..b1f4b9d23c4f 100644 --- a/dist/ember/raven.min.js +++ b/dist/ember/raven.min.js @@ -1,3 +1,4 @@ -/*! Raven.js 3.22.2 (1b6187b) | github.com/getsentry/raven-js */ -!function(a,b){"object"==typeof exports&&"undefined"!=typeof module?module.exports=b():"function"==typeof define&&define.amd?define(b):a.Raven=b()}(this,function(){"use strict";function a(a,b){return b={exports:{}},a(b,b.exports),b.exports}function b(a){return(b="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(a){return typeof a}:function(a){return a&&"function"==typeof Symbol&&a.constructor===Symbol&&a!==Symbol.prototype?"symbol":typeof a})(a)}function c(a){return"object"===b(a)&&null!==a}function d(a){switch({}.toString.call(a)){case"[object Error]":return!0;case"[object Exception]":return!0;case"[object DOMException]":return!0;default:return a instanceof Error}}function e(a){return l()&&"[object ErrorEvent]"==={}.toString.call(a)}function f(a){return void 0===a}function g(a){return"function"==typeof a}function h(a){return"[object Object]"===Object.prototype.toString.call(a)}function i(a){return"[object String]"===Object.prototype.toString.call(a)}function j(a){return"[object Array]"===Object.prototype.toString.call(a)}function k(a){if(!h(a))return!1;for(var b in a)if(a.hasOwnProperty(b))return!1;return!0}function l(){try{return new ErrorEvent(""),!0}catch(a){return!1}}function m(){if(!("fetch"in N))return!1;try{return new Headers,new Request(""),new Response,!0}catch(a){return!1}}function n(a){function b(b,c){var d=a(b)||b;return c?c(d)||d:d}return b}function o(a,b){var c,d;if(f(a.length))for(c in a)s(a,c)&&b.call(null,c,a[c]);else if(d=a.length)for(c=0;c ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function y(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&i(b))for(c=b.split(/\s+/),f=0;f=0;--b)l[b]===a&&l.splice(b,1)}function c(){g(),l=[]}function d(a,b){var c=null;if(!b||P.collectWindowErrors){for(var d in l)if(l.hasOwnProperty(d))try{l[d].apply(null,[a].concat(R.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function e(a,b,c,e,f){var g=null,i=O.isErrorEvent(f)?f.error:f,k=O.isErrorEvent(a)?a.message:a;if(o)P.computeStackTrace.augmentStackTraceWithInitialElement(o,b,c,k),h();else if(i&&O.isError(i))g=P.computeStackTrace(i),d(g,!0);else{var l,m={url:b,line:c,column:e},n=void 0;if("[object String]"==={}.toString.call(k)){var l=k.match(T);l&&(n=l[1],k=l[2])}m.func=S,g={name:n,message:k,url:F(),stack:[m]},d(g,!0)}return!!j&&j.apply(this,arguments)}function f(){k||(j=Q.onerror,Q.onerror=e,k=!0)}function g(){k&&(Q.onerror=j,k=!1,j=void 0)}function h(){var a=o,b=m;m=null,o=null,n=null,d.apply(null,[a,!1].concat(b))}function i(a,b){var c=R.call(arguments,1);if(o){if(n===a)return;h()}var d=P.computeStackTrace(a);if(o=d,n=a,m=c,setTimeout(function(){n===a&&h()},d.incomplete?2e3:0),b!==!1)throw a}var j,k,l=[],m=null,n=null,o=null;return i.subscribe=a,i.unsubscribe=b,i.uninstall=c,i}(),P.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,d,e=/^\s*at (.*?) ?\(((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,f=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|\[native).*?|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,g=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,h=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,i=/\((\S*)(?::(\d+))(?::(\d+))\)/,j=a.stack.split("\n"),k=[],l=(/^(.*) is undefined$/.exec(a.message),0),m=j.length;l eval")>-1;o&&(b=h.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==l||c[5]||"undefined"==typeof a.columnNumber||(k[0].column=a.columnNumber+1),d={url:c[3],func:c[1]||S,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}!d.func&&d.line&&(d.func=S),k.push(d)}return k.length?{name:a.name,message:a.message,url:F(),stack:k}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=S),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,e){for(var f,g,h=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,i=[],j={},k=!1,l=c.caller;l&&!k;l=l.caller)if(l!==d&&l!==P.report){if(g={url:null,func:S,line:null,column:null},l.name?g.func=l.name:(f=h.exec(l.toString()))&&(g.func=f[1]),"undefined"==typeof g.func)try{g.func=f.input.substring(0,f.input.indexOf("{"))}catch(m){}j[""+l]?k=!0:j[""+l]=!0,i.push(g)}e&&i.splice(0,e);var n={name:a.name,message:a.message,url:F(),stack:i};return b(n,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),n}function d(b,d){var e=null;d=null==d?0:+d;try{if(e=a(b))return e}catch(f){if(P.debug)throw f}try{if(e=c(b,d+1))return e}catch(f){if(P.debug)throw f}return{name:b.name,message:b.message,url:F()}}return d.augmentStackTraceWithInitialElement=b,d.computeStackTraceFromStackProp=a,d}();var U=P,V=a(function(a,b){function c(a,b){for(var c=0;c0){var i=c(d,this);~i?d.splice(i+1):d.push(this),~i?f.splice(i,1/0,g):f.push(g),~c(d,h)&&(h=b.call(this,g,h))}else d.push(h);return null==a?h instanceof Error?e(h):h:a.call(this,g,h)}}b=a.exports=d,b.getSerialize=f});G.prototype=new Error,G.prototype.constructor=G;var W=G,X=function(a,b,c){var d=a[b],e=a;if(b in a){var f="warn"===b?"warning":b;a[b]=function(){var a=[].slice.call(arguments),g=O.safeJoin(a," "),h={level:f,logger:"console",extra:{arguments:a}};"assert"===b?a[0]===!1&&(g="Assertion failed: "+(O.safeJoin(a.slice(1)," ")||"console.assert"),h.extra.arguments=a.slice(1),c&&c(g,h)):c&&c(g,h),d&&Function.prototype.apply.call(d,e,a)}}},Y={wrapMethod:X},Z=O.isError,$=O.isObject,_=O.isErrorEvent,aa=O.isUndefined,ba=O.isFunction,ca=O.isString,da=O.isArray,ea=O.isEmptyObject,fa=O.each,ga=O.objectMerge,ha=O.truncate,ia=O.objectFrozen,ja=O.hasKey,ka=O.joinRegExp,la=O.urlencode,ma=O.uuid4,na=O.htmlTreeAsString,oa=O.isSameException,pa=O.isSameStacktrace,qa=O.parseUrl,ra=O.fill,sa=O.supportsFetch,ta=Y.wrapMethod,ua="source protocol user pass host port path".split(" "),va=/^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/,wa="undefined"!=typeof window?window:"undefined"!=typeof L?L:"undefined"!=typeof self?self:{},xa=wa.document,ya=wa.navigator;J.prototype={VERSION:"3.22.2",debug:!1,TraceKit:U,config:function(a,b){var c=this;if(c.i)return this.C("error","Error: Raven has already been configured"),c;if(!a)return c;var d=c.m;b&&fa(b,function(a,b){"tags"===a||"extra"===a||"user"===a?c.l[a]=b:d[a]=b}),c.setDSN(a),d.ignoreErrors.push(/^Script error\.?$/),d.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/),d.ignoreErrors=ka(d.ignoreErrors),d.ignoreUrls=!!d.ignoreUrls.length&&ka(d.ignoreUrls),d.whitelistUrls=!!d.whitelistUrls.length&&ka(d.whitelistUrls),d.includePaths=ka(d.includePaths),d.maxBreadcrumbs=Math.max(0,Math.min(d.maxBreadcrumbs||100,100));var e={xhr:!0,console:!0,dom:!0,location:!0,sentry:!0},f=d.autoBreadcrumbs;"[object Object]"==={}.toString.call(f)?f=ga(e,f):f!==!1&&(f=e),d.autoBreadcrumbs=f;var g={tryCatch:!0},h=d.instrument;return"[object Object]"==={}.toString.call(h)?h=ga(g,h):h!==!1&&(h=g),d.instrument=h,U.collectWindowErrors=!!d.collectWindowErrors,c},install:function(){var a=this;return a.isSetup()&&!a.p&&(U.report.subscribe(function(){a.D.apply(a,arguments)}),a.E(),a.m.instrument&&a.m.instrument.tryCatch&&a.F(),a.m.autoBreadcrumbs&&a.G(),a.H(),a.p=!0),Error.stackTraceLimit=a.m.stackTraceLimit,this},setDSN:function(a){var b=this,c=b.I(a),d=c.path.lastIndexOf("/"),e=c.path.substr(1,d);b.J=a,b.j=c.user,b.K=c.pass&&c.pass.substr(1),b.k=c.path.substr(d+1),b.i=b.L(c),b.M=b.i+"/"+e+"api/"+b.k+"/store/",this.A()},context:function(a,b,c){return ba(a)&&(c=b||[],b=a,a=void 0),this.wrap(a,b).apply(this,c)},wrap:function(a,b,c){function d(){var d=[],f=arguments.length,g=!a||a&&a.deep!==!1;for(c&&ba(c)&&c.apply(this,arguments);f--;)d[f]=g?e.wrap(a,arguments[f]):arguments[f];try{return b.apply(this,d)}catch(h){throw e.N(),e.captureException(h,a),h}}var e=this;if(aa(b)&&!ba(a))return a;if(ba(a)&&(b=a,a=void 0),!ba(b))return b;try{if(b.a)return b;if(b.O)return b.O}catch(f){return b}for(var g in b)ja(b,g)&&(d[g]=b[g]);return d.prototype=b.prototype,b.O=d,d.a=!0,d.b=b,d},uninstall:function(){return U.report.uninstall(),this.P(),this.Q(),this.R(),Error.stackTraceLimit=this.q,this.p=!1,this},captureException:function(a,b){b=ga({trimHeadFrames:0},b?b:{});var c=!Z(a),d=!_(a),e=_(a)&&!a.error;if(c&&d||e)return this.captureMessage(a,ga(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}));_(a)&&(a=a.error),this.f=a;try{var f=U.computeStackTrace(a);this.S(f,b)}catch(g){if(a!==g)throw g}return this},captureMessage:function(a,b){if(!this.m.ignoreErrors.test||!this.m.ignoreErrors.test(a)){b=b||{};var c,d=ga({message:a+""},b);try{throw new Error(a)}catch(e){c=e}c.name=null;var f=U.computeStackTrace(c),g=da(f.stack)&&f.stack[1],h=g&&g.url||"";if((!this.m.ignoreUrls.test||!this.m.ignoreUrls.test(h))&&(!this.m.whitelistUrls.test||this.m.whitelistUrls.test(h))){if(this.m.stacktrace||b&&b.stacktrace){b=ga({fingerprint:a,trimHeadFrames:(b.trimHeadFrames||0)+1},b);var i=this.T(f,b);d.stacktrace={frames:i.reverse()}}return this.U(d),this}}},captureBreadcrumb:function(a){var b=ga({timestamp:H()/1e3},a);if(ba(this.m.breadcrumbCallback)){var c=this.m.breadcrumbCallback(b);if($(c)&&!ea(c))b=c;else if(c===!1)return this}return this.w.push(b),this.w.length>this.m.maxBreadcrumbs&&this.w.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.t.push([a,b]),this.p&&this.H(),this},setUserContext:function(a){return this.l.user=a,this},setExtraContext:function(a){return this.V("extra",a),this},setTagsContext:function(a){return this.V("tags",a),this},clearContext:function(){return this.l={},this},getContext:function(){return JSON.parse(V(this.l))},setEnvironment:function(a){return this.m.environment=a,this},setRelease:function(a){return this.m.release=a,this},setDataCallback:function(a){var b=this.m.dataCallback;return this.m.dataCallback=I(b,a),this},setBreadcrumbCallback:function(a){var b=this.m.breadcrumbCallback;return this.m.breadcrumbCallback=I(b,a),this},setShouldSendCallback:function(a){var b=this.m.shouldSendCallback;return this.m.shouldSendCallback=I(b,a),this},setTransport:function(a){return this.m.transport=a,this},lastException:function(){return this.f},lastEventId:function(){return this.h},isSetup:function(){return!!this.c&&(!!this.i||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.C("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=wa.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(xa){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new W("Missing eventId");var c=a.dsn||this.J;if(!c)throw new W("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.l.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.L(this.I(c)),h=xa.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(xa.head||xa.body).appendChild(h)}},N:function(){var a=this;this.o+=1,setTimeout(function(){a.o-=1})},W:function(a,b){var c,d;if(this.d){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),xa.createEvent?(c=xa.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=xa.createEventObject(),c.eventType=a);for(d in b)ja(b,d)&&(c[d]=b[d]);if(xa.createEvent)xa.dispatchEvent(c);else try{xa.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},X:function(a){var b=this;return function(c){if(b.Y=null,b.x!==c){b.x=c;var d;try{d=na(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},Z:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.Y;g||a.X("input")(c),clearTimeout(g),a.Y=setTimeout(function(){a.Y=null},b)}}},$:function(a,b){var c=qa(this.y.href),d=qa(b),e=qa(a);this.z=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},E:function(){var a=this;a._=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.a?a._.apply(this.b,arguments):a._.apply(this,arguments)}},P:function(){this._&&(Function.prototype.toString=this._)},F:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.$(b.z,c+""),a.apply(this,arguments)}};ra(history,"pushState",j,d),ra(history,"replaceState",j,d)}if(c.console&&"console"in wa&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};fa(["debug","info","warn","error","log"],function(a,b){ta(console,b,k)})}},Q:function(){for(var a;this.v.length;){a=this.v.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},R:function(){for(var a in this.s)this.r[a]=this.s[a]},H:function(){var a=this;fa(this.t,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},I:function(a){var b=va.exec(a),c={},d=7;try{for(;d--;)c[ua[d]]=b[d]||""}catch(e){throw new W("Invalid DSN: "+a)}if(c.pass&&!this.m.allowSecretKey)throw new W("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},L:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},D:function(){this.o||this.S.apply(this,arguments)},S:function(a,b){var c=this.T(a,b);this.W("handle",{stackInfo:a,options:b}),this.ba(a.name,a.message,a.url,a.lineno,c,b)},T:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(fa(a.stack,function(b,e){var f=c.ca(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.w,0)}),this.l.user&&(a.user=this.l.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||ea(a[b]))&&delete a[b]}),ba(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!ea(a)&&(!ba(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.ia()?void this.C("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random()this.k.maxBreadcrumbs&&this.u.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.r.push([a,b]),this.n&&this.F(),this},setUserContext:function(a){return this.j.user=a,this},setExtraContext:function(a){return this.Z("extra",a),this},setTagsContext:function(a){return this.Z("tags",a),this},clearContext:function(){return this.j={},this},getContext:function(){return JSON.parse(h(this.j))},setEnvironment:function(a){return this.k.environment=a,this},setRelease:function(a){return this.k.release=a,this},setDataCallback:function(a){var b=this.k.dataCallback;return this.k.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.k.breadcrumbCallback;return this.k.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.k.shouldSendCallback;return this.k.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.k.transport=a,this},lastException:function(){return this.d},lastEventId:function(){return this.f},isSetup:function(){return!!this.a&&(!!this.g||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.z("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=P.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(Q){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.H;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.j.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.J(this.G(c)),h=Q.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(Q.head||Q.body).appendChild(h)}},L:function(){var a=this;this.m+=1,setTimeout(function(){a.m-=1})},$:function(a,b){var c,d;if(this.b){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),Q.createEvent?(c=Q.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=Q.createEventObject(),c.eventType=a);for(d in b)y(b,d)&&(c[d]=b[d]);if(Q.createEvent)Q.dispatchEvent(c);else try{Q.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},_:function(a){var b=this;return function(c){if(b.aa=null,b.v!==c){b.v=c;var d;try{d=C(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ba:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.aa;g||a._("input")(c),clearTimeout(g),a.aa=setTimeout(function(){a.aa=null},b)}}},ca:function(a,b){var c=F(this.w.href),d=F(b),e=F(a);this.x=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},C:function(){var a=this;a.da=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.M?a.da.apply(this.O,arguments):a.da.apply(this,arguments)}},Q:function(){this.da&&(Function.prototype.toString=this.da)},D:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.ca(b.x,c+""),a.apply(this,arguments)}};G(history,"pushState",j,d),G(history,"replaceState",j,d)}if(c.console&&"console"in P&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};u(["debug","info","warn","error","log"],function(a,b){M(console,b,k)})}},R:function(){for(var a;this.t.length;){a=this.t.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},S:function(){for(var a in this.q)this.p[a]=this.q[a]},F:function(){var a=this;u(this.r,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},G:function(a){var b=O.exec(a),c={},d=7;try{for(;d--;)c[N[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.k.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},J:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},A:function(){this.m||this.V.apply(this,arguments)},V:function(a,b){var c=this.X(a,b);this.$("handle",{stackInfo:a,options:b}),this.fa(a.name,a.message,a.url,a.lineno,c,b)},X:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(u(a.stack,function(b,e){var f=c.ga(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.u,0)}),this.j.user&&(a.user=this.j.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),a=this.pa(a),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||t(a[b]))&&delete a[b]}),q(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!t(a)&&(!q(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.ma()?void this.z("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function B(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&j(b))for(c=b.split(/\s+/),f=0;fc?M(a,b-1):d}function N(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?T:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function O(a,b){function c(a){return k(a)?a.map(function(a){return c(a)}):i(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!k(b)||k(b)&&0===b.length)return a;var d,e=w(b),f="********";try{d=JSON.parse(P(a))}catch(g){return a}return c(d)}var P=a(8),Q="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},R=3,S=51200,T=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isUndefined:g,isFunction:h,isPlainObject:i,isString:j,isArray:k,isEmptyObject:l,supportsErrorEvent:m,supportsFetch:n,supportsReferrerPolicy:o,supportsPromiseRejectionEvent:p,wrappedCallback:q,each:r,objectMerge:s,truncate:u,objectFrozen:t,hasKey:v,joinRegExp:w,urlencode:x,uuid4:z,htmlTreeAsString:A,htmlElementAsString:B,isSameException:E,isSameStacktrace:F,parseUrl:y,fill:G,safeJoin:H,serializeException:M,serializeKeysForMessage:N,sanitize:O}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{8:8}],7:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}var e=a(6),f={collectWindowErrors:!0,debug:!1},g="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},h=[].slice,i="?",j=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;f.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function k(a,b){var c=null;if(!b||f.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(h.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,g,h){var l=null,m=e.isErrorEvent(h)?h.error:h,n=e.isErrorEvent(a)?a.message:a;if(v)f.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&e.isError(m))l=f.computeStackTrace(m),k(l,!0);else{var p,r={url:b,line:c,column:g},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(j);p&&(s=p[1],n=p[2])}r.func=i,l={name:s,message:n,url:d(),stack:[r]},k(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=g.onerror,g.onerror=l,r=!0)}function n(){r&&(g.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,k.apply(null,[a,!1].concat(b))}function p(a,b){var c=h.call(arguments,1);if(v){if(u===a)return;o()}var d=f.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),f.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,e,f=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,g=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,h=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,j=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,k=/\((\S*)(?::(\d+))(?::(\d+))\)/,l=a.stack.split("\n"),m=[],n=(/^(.*) is undefined$/.exec(a.message),0),o=l.length;n eval")>-1;q&&(b=j.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==n||c[5]||"undefined"==typeof a.columnNumber||(m[0].column=a.columnNumber+1),e={url:c[3],func:c[1]||i,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}!e.func&&e.line&&(e.func=i),m.push(e)}return m.length?{name:a.name,message:a.message,url:d(),stack:m}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=i),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,g){for(var h,j,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==e&&o!==f.report){if(j={url:null,func:i,line:null,column:null},o.name?j.func=o.name:(h=k.exec(o.toString()))&&(j.func=h[1]),"undefined"==typeof j.func)try{j.func=h.input.substring(0,h.input.indexOf("{"))}catch(p){}m[""+o]?n=!0:m[""+o]=!0,l.push(j)}g&&l.splice(0,g);var q={name:a.name,message:a.message,url:d(),stack:l};return b(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),q}function e(b,e){var g=null;e=null==e?0:+e;try{if(g=a(b))return g}catch(h){if(f.debug)throw h}try{if(g=c(b,e+1))return g}catch(h){if(f.debug)throw h}return{name:b.name,message:b.message,url:d()}}return e.augmentStackTraceWithInitialElement=b,e.computeStackTraceFromStackProp=a,e}(),b.exports=f}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{6:6}],8:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e, +c.getSerialize=g},{}],9:[function(a,b,c){function d(a,b){var c=(65535&a)+(65535&b),d=(a>>16)+(b>>16)+(c>>16);return d<<16|65535&c}function e(a,b){return a<>>32-b}function f(a,b,c,f,g,h){return d(e(d(d(b,a),d(f,h)),g),c)}function g(a,b,c,d,e,g,h){return f(b&c|~b&d,a,b,e,g,h)}function h(a,b,c,d,e,g,h){return f(b&d|c&~d,a,b,e,g,h)}function i(a,b,c,d,e,g,h){return f(b^c^d,a,b,e,g,h)}function j(a,b,c,d,e,g,h){return f(c^(b|~d),a,b,e,g,h)}function k(a,b){a[b>>5]|=128<>>9<<4)+14]=b;var c,e,f,k,l,m=1732584193,n=-271733879,o=-1732584194,p=271733878;for(c=0;c>5]>>>b%32&255);return c}function m(a){var b,c=[];for(c[(a.length>>2)-1]=void 0,b=0;b>5]|=(255&a.charCodeAt(b/8))<16&&(e=k(e,8*a.length)),c=0;c<16;c+=1)f[c]=909522486^e[c],g[c]=1549556828^e[c];return d=k(f.concat(m(b)),512+8*b.length),l(k(g.concat(d),640))}function p(a){var b,c,d="0123456789abcdef",e="";for(c=0;c>>4&15)+d.charAt(15&b);return e}function q(a){return unescape(encodeURIComponent(a))}function r(a){return n(q(a))}function s(a){return p(r(a))}function t(a,b){return o(q(a),q(b))}function u(a,b){return p(t(a,b))}function v(a,b,c){return b?c?t(b,a):u(b,a):c?r(a):s(a)}b.exports=v},{}]},{},[5,1])(5)}); //# sourceMappingURL=raven.min.js.map \ No newline at end of file diff --git a/dist/ember/raven.min.js.map b/dist/ember/raven.min.js.map index 9722b59ae400..19144146c529 100644 --- a/dist/ember/raven.min.js.map +++ b/dist/ember/raven.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["raven.js"],"names":["global","factory","exports","module","define","amd","Raven","this","createCommonjsModule","fn","_typeof","obj","Symbol","iterator","constructor","prototype","isObject$1","what","isError$1","value","toString","call","Error","isErrorEvent$1","supportsErrorEvent","isUndefined$1","isFunction$1","isPlainObject","Object","isString$1","isArray$1","isEmptyObject$1","_","hasOwnProperty","ErrorEvent","e","supportsFetch$1","_window$3","Headers","Request","Response","wrappedCallback","callback","dataCallback","data","original","normalizedData","each$1","i","j","length","hasKey$1","objectMerge$1","obj1","obj2","key","objectFrozen$1","isFrozen","truncate$1","str","max","substr","object","joinRegExp$1","patterns","pattern","sources","len","push","replace","source","RegExp","join","urlencode$1","o","pairs","encodeURIComponent","parseUrl$1","url","match","query","fragment","protocol","host","path","relative","uuid4$1","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","r","Math","random","htmlTreeAsString$1","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","reverse","className","classes","attr","tagName","toLowerCase","id","split","attrWhitelist","getAttribute","isOnlyOneTruthy","a","b","isBothUndefined","isSameException$1","ex1","ex2","values","type","stacktrace","isSameStacktrace$1","stack1","stack2","frames1","frames","frames2","filename","lineno","colno","fill$1","name","replacement","track","orig","__raven__","__orig__","safeJoin","input","delimiter","output","String","getLocationHref","document","location","href","RavenConfigError","message","now","Date","keepOriginalCallback","isFunction","Raven$1","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window$1","SENTRY_RELEASE","logger","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","_fetchDefaults","method","keepalive","referrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","console","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","_lastHref","_resetBackoff","emberPlugin","Ember","window","_oldOnError","onerror","error","captureException","RSVP","on","reason","extra","context","captureMessage","commonjsGlobal","self","_sPO","setPrototypeOf","p","__proto__","Reflect","construct","Parent","args","Class","Constructor","apply","bind","utils","isObject","isError","isErrorEvent","isString","isArray","isEmptyObject","supportsFetch","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","TraceKit","debug","_window$2","_slice","slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","report","subscribe","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","stack","isWindowError","exception","concat","arguments","inner","traceKitWindowOnError","msg","lineNo","colNo","ex","lastExceptionStack","computeStackTrace","augmentStackTraceWithInitialElement","processLastException","groups","line","column","undefined","func","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","lastException","rethrow","setTimeout","incomplete","uninstall","computeStackTraceFromStackProp","submatch","parts","element","chrome","gecko","winjs","geckoEval","chromeEval","lines","exec","isNative","indexOf","isEval","columnNumber","stackInfo","initial","unshift","partial","computeStackTraceByWalkingCallerChain","depth","item","functionName","funcs","recursion","curr","caller","substring","result","sourceURL","fileName","lineNumber","description","tracekit","stringify_1","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","err","keys","thisPos","Infinity","getSerialize","configError","wrapMethod","level","originalConsoleLevel","originalConsole","sentryLevel","Function","console$1","wrapConsoleMethod","dsnKeys","dsnPattern","navigator","VERSION","config","dsn","options","_logDebug","globalOptions","setDSN","maxBreadcrumbs","min","autoBreadcrumbDefaults","xhr","dom","sentry","instrumentDefaults","tryCatch","install","isSetup","_handleOnErrorStackInfo","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","lastIndexOf","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","wrap","_before","wrapped","deep","_ignoreNextOnError","__raven_wrapper__","property","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","trimHeadFrames","isNotError","isNotErrorEvent","isErrorEventWithoutError","_handleStackInfo","test","initialCall","fileurl","fingerprint","_prepareFrames","_send","captureBreadcrumb","crumb","timestamp","breadcrumbCallback","shift","addPlugin","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","setDataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","N","W","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","X","evtName","_keypressTimeout","target","category","Z","debounceDuration","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","$","from","to","parsedLoc","parsedTo","parsedFrom","E","_originalFunctionToString","P","F","wrapTimeFn","t","Array","originalCallback","wrapEventTarget","proto","capture","secure","handleEvent","before","clickHandler","keypressHandler","_keypressEventHandler","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","G","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","onreadystatechange","origFetch","fetchInput","fetchData","then","response","addEventListener","attachEvent","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","Q","builtin","R","H","installer","I","m","allowSecretKey","L","port","D","S","_triggerEvent","_processException","T","frame","_normalizeFrame","in_app","ca","stackInfoUrl","normalized","function","ba","prefixedMessage","culprit","da","request","Referer","breadcrumbs","_trimBreadcrumbs","ea","urlProp","urlProps","fa","httpData","userAgent","User-Agent","referrer","A","_backoffDuration","_backoffStart","ia","ja","current","last","ka","_shouldBackoff","retry","get","getResponseHeader","parseInt","U","baseData","project","platform","_getHttpData","serverName","server_name","forEach","_sendProcessedPayload","ma","la","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","na","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","onload","open","setRequestHeader","send","oa","hash","evaluated","C","V","setUser","setReleaseContext","raven","_window","_Raven","noConflict","singleton","ember$2","ember"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file +{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","emberPlugin","Ember","_oldOnError","onerror","error","captureException","RSVP","on","reason","extra","context","captureMessage","addPlugin","5","2","RavenConfigError","message","name","prototype","constructor","3","utils","wrapMethod","console","level","callback","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","msg","safeJoin","data","logger","Function","apply","6","4","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","sanitizeKeys","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isError","isObject","isPlainObject","isErrorEvent","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","sanitize","wrapConsoleMethod","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","config","dsn","options","_logDebug","globalOptions","key","value","setDSN","push","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","toString","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","substr","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","func","undefined","wrap","_before","wrapped","deep","_ignoreNextOnError","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","T","event","unhandledPromiseRejection","B","_promiseRejectionHandler","bind","addEventListener","P","removeEventListener","ex","trimHeadFrames","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","U","currentOptions","exKeys","Object","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","setDataCallback","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","L","setTimeout","$","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","_","evtName","_keypressTimeout","target","category","ba","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","ca","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","C","_originalFunctionToString","Q","D","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","type","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","E","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","R","builtin","S","F","installer","concat","G","str","m","exec","allowSecretKey","J","port","A","V","stackInfo","_triggerEvent","_processException","lineno","X","frame","_normalizeFrame","in_app","ga","stackInfoUrl","normalized","filename","line","colno","column","function","fa","prefixedMessage","exception","values","culprit","ha","request","Referer","breadcrumbs","_trimBreadcrumbs","ia","urlProp","urlProps","ja","httpData","userAgent","User-Agent","referrer","y","_backoffDuration","_backoffStart","ma","na","current","last","oa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Y","baseData","project","platform","_getHttpData","serverName","server_name","_sanitizeData","forEach","random","_sendProcessedPayload","pa","ra","qa","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","sa","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","open","setRequestHeader","send","ta","hash","evaluated","z","Z","setUser","setReleaseContext","7","8","9","RavenConstructor","_Raven","noConflict","Client","what","supportsErrorEvent","ErrorEvent","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","wrappedCallback","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","sanitizeMask","safeInput","o_O","getLocationHref","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","charAt","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","string","raw"],"mappings":";CAYA,SAAUA,GAAG,GAAoB,gBAAVC,UAAoC,mBAATC,QAAsBA,OAAOD,QAAQD,QAAS,IAAmB,kBAATG,SAAqBA,OAAOC,IAAKD,UAAUH,OAAO,CAAC,GAAIK,EAAkCA,GAAb,mBAATC,QAAwBA,OAA+B,mBAATC,QAAwBA,OAA6B,mBAAPC,MAAsBA,KAAYC,KAAKJ,EAAEK,MAAQV,MAAO,WAAqC,MAAO,SAAUW,GAAEC,EAAEC,EAAEC,GAAG,QAASC,GAAEC,EAAEC,GAAG,IAAIJ,EAAEG,GAAG,CAAC,IAAIJ,EAAEI,GAAG,CAAC,GAAIE,GAAkB,kBAATC,UAAqBA,OAAQ,KAAIF,GAAGC,EAAE,MAAOA,GAAEF,GAAE,EAAI,IAAGI,EAAE,MAAOA,GAAEJ,GAAE,EAAI,IAAIhB,GAAE,GAAIqB,OAAM,uBAAuBL,EAAE,IAAK,MAAMhB,GAAEsB,KAAK,mBAAmBtB,EAAE,GAAIuB,GAAEV,EAAEG,IAAIf,WAAYW,GAAEI,GAAG,GAAGQ,KAAKD,EAAEtB,QAAQ,SAASU,GAAG,GAAIE,GAAED,EAAEI,GAAG,GAAGL,EAAG,OAAOI,GAAEF,EAAEA,EAAEF,IAAIY,EAAEA,EAAEtB,QAAQU,EAAEC,EAAEC,EAAEC,GAAG,MAAOD,GAAEG,GAAGf,QAAkD,IAAI,GAA1CmB,GAAkB,kBAATD,UAAqBA,QAAgBH,EAAE,EAAEA,EAAEF,EAAEW,OAAOT,IAAID,EAAED,EAAEE,GAAI,OAAOD,KAAKW,GAAG,SAASC,EAAQzB,EAAOD,GAMp0B,QAAS2B,GAAYlB,EAAOmB,GAI1B,GAHAA,EAAQA,GAASvB,OAAOuB,MAGxB,CAEA,GAAIC,GAAcD,EAAME,OACxBF,GAAME,QAAU,SAAsBC,GACpCtB,EAAMuB,iBAAiBD,GACI,kBAAhBF,IACTA,EAAYN,KAAKf,KAAMuB,IAG3BH,EAAMK,KAAKC,GAAG,QAAS,SAASC,GAC1BA,YAAkBf,OACpBX,EAAMuB,iBAAiBG,GACrBC,OAAQC,QAAS,sCAGnB5B,EAAM6B,eAAe,oCAAqCF,OAAQD,OAAQA,QAKhFlC,EAAOD,QAAU2B,EAEjBD,EAAQ,GAAGa,UAAUtC,EAAOD,WACzBwC,EAAI,IAAIC,GAAG,SAASf,EAAQzB,EAAOD,GACtC,QAAS0C,GAAiBC,GACxBnC,KAAKoC,KAAO,mBACZpC,KAAKmC,QAAUA,EAEjBD,EAAiBG,UAAY,GAAIzB,OACjCsB,EAAiBG,UAAUC,YAAcJ,EAEzCzC,EAAOD,QAAU0C,OAEXK,GAAG,SAASrB,EAAQzB,EAAOD,GACjC,GAAIgD,GAAQtB,EAAQ,GAEhBuB,EAAa,SAASC,EAASC,EAAOC,GACxC,GAAIC,GAAuBH,EAAQC,GAC/BG,EAAkBJ,CAEtB,IAAMC,IAASD,GAAf,CAIA,GAAIK,GAAwB,SAAVJ,EAAmB,UAAYA,CAEjDD,GAAQC,GAAS,WACf,GAAIK,MAAUC,MAAMlC,KAAKmC,WAErBC,EAAMX,EAAMY,SAASJ,EAAM,KAC3BK,GAAQV,MAAOI,EAAaO,OAAQ,UAAW1B,OAAQsB,UAAWF,GAExD,YAAVL,EACEK,EAAK,MAAO,IAEdG,EACE,sBAAwBX,EAAMY,SAASJ,EAAKC,MAAM,GAAI,MAAQ,kBAChEI,EAAKzB,MAAMsB,UAAYF,EAAKC,MAAM,GAClCL,GAAYA,EAASO,EAAKE,IAG5BT,GAAYA,EAASO,EAAKE,GAIxBR,GAGFU,SAASlB,UAAUmB,MAAMzC,KAAK8B,EAAsBC,EAAiBE,KAK3EvD,GAAOD,SACLiD,WAAYA,KAGXgB,EAAI,IAAIC,GAAG,SAASxC,EAAQzB,EAAOD,IACtC,SAAWM,GA0CX,QAAS6D,KACP,OAAQ,GAAIC,MAWd,QAASC,GAAqBC,EAAUlB,GACtC,MAAOmB,GAAWnB,GACd,SAASS,GACP,MAAOT,GAASS,EAAMS,IAExBlB,EAMN,QAAS3C,KACPD,KAAKgE,IAA8B,gBAATC,QAAqBA,KAAKC,WAEpDlE,KAAKmE,GAAgBC,EAAYC,GACjCrE,KAAKsE,GAAiBF,EAAYG,GAClCvE,KAAKwE,EAAyB,KAC9BxE,KAAKyE,EAAY,KACjBzE,KAAK0E,EAAe,KACpB1E,KAAK2E,EAAgB,KACrB3E,KAAK4E,EAAa,KAClB5E,KAAK6E,EAAiB,KACtB7E,KAAK8E,KACL9E,KAAK+E,GAEHC,QAASC,EAAQC,gBAAkBD,EAAQC,eAAeC,GAC1D7B,OAAQ,aACR8B,gBACAC,cACAC,iBACAC,gBACAC,QAAS,KACTC,qBAAqB,EACrBC,4BAA4B,EAC5BC,iBAAkB,EAElBC,aAAc,IACdC,gBAAiB,GACjBC,iBAAiB,EACjBC,YAAY,EACZC,WAAY,EACZC,iBAEFjG,KAAKkG,GACHC,OAAQ,OACRC,WAAW,EAKXC,eAAgBC,IAA2B,SAAW,IAExDtG,KAAKuG,EAAiB,EACtBvG,KAAKwG,GAAoB,EACzBxG,KAAKyG,EAAgC7F,MAAMiF,gBAG3C7F,KAAK0G,EAAmBzB,EAAQvC,YAChC1C,KAAK2G,KACL3G,KAAK4G,KACL5G,KAAK6G,EAAalD,IAClB3D,KAAK8G,KACL9G,KAAK+G,KACL/G,KAAKgH,EAAqB,KAE1BhH,KAAKiH,EAAYhC,EAAQiC,SACzBlH,KAAKmH,EAAYnH,KAAKiH,GAAajH,KAAKiH,EAAUG,KAClDpH,KAAKqH,GAGL,KAAK,GAAIlB,KAAUnG,MAAK0G,EACtB1G,KAAK2G,EAAwBR,GAAUnG,KAAK0G,EAAiBP,GA1HjE,GAAImB,GAAWpG,EAAQ,GACnBgD,EAAYhD,EAAQ,GACpBqG,EAAMrG,EAAQ,GACdgB,EAAmBhB,EAAQ,GAE3BsB,EAAQtB,EAAQ,GAChBsG,EAAUhF,EAAMgF,QAChBC,EAAWjF,EAAMiF,SACjBC,EAAgBlF,EAAMkF,cACtBC,EAAenF,EAAMmF,aACrBvD,EAAc5B,EAAM4B,YACpBL,EAAavB,EAAMuB,WACnB6D,EAAWpF,EAAMoF,SACjBC,EAAUrF,EAAMqF,QAChBC,EAAgBtF,EAAMsF,cACtBC,EAAOvF,EAAMuF,KACbC,EAAcxF,EAAMwF,YACpBC,EAAWzF,EAAMyF,SACjBC,EAAe1F,EAAM0F,aACrBC,EAAS3F,EAAM2F,OACfC,EAAa5F,EAAM4F,WACnBC,EAAY7F,EAAM6F,UAClBC,EAAQ9F,EAAM8F,MACdC,EAAmB/F,EAAM+F,iBACzBC,EAAkBhG,EAAMgG,gBACxBC,EAAmBjG,EAAMiG,iBACzBC,EAAWlG,EAAMkG,SACjBC,EAAOnG,EAAMmG,KACbC,EAAgBpG,EAAMoG,cACtBtC,EAAyB9D,EAAM8D,uBAC/BuC,EAA0BrG,EAAMqG,wBAChCC,EAAqBtG,EAAMsG,mBAC3BC,EAAWvG,EAAMuG,SAEjBC,EAAoB9H,EAAQ,GAAGuB,WAE/BwG,EAAU,2CAA2CC,MAAM,KAC7DC,EAAa,gEAOXlE,EACgB,mBAAXpF,QACHA,OACkB,mBAAXC,GAAyBA,EAAyB,mBAATC,MAAuBA,QACzEsE,EAAYY,EAAQmE,SACpB7E,EAAaU,EAAQoE,SAmFzBpJ,GAAMoC,WAKJiH,QAAS,SAETC,OAAO,EAEPjC,SAAUA,EASVkC,OAAQ,SAASC,EAAKC,GACpB,GAAI3J,GAAOC,IAEX,IAAID,EAAK4E,EAEP,MADA3E,MAAK2J,EAAU,QAAS,4CACjB5J,CAET,KAAK0J,EAAK,MAAO1J,EAEjB,IAAI6J,GAAgB7J,EAAKgF,CAGrB2E,IACF3B,EAAK2B,EAAS,SAASG,EAAKC,GAEd,SAARD,GAA0B,UAARA,GAA2B,SAARA,EACvC9J,EAAK+E,EAAe+E,GAAOC,EAE3BF,EAAcC,GAAOC,IAK3B/J,EAAKgK,OAAON,GAIZG,EAAcxE,aAAa4E,KAAK,qBAChCJ,EAAcxE,aAAa4E,KAAK,iDAGhCJ,EAAcxE,aAAegD,EAAWwB,EAAcxE,cACtDwE,EAAcvE,aAAauE,EAAcvE,WAAWrE,QAChDoH,EAAWwB,EAAcvE,YAE7BuE,EAActE,gBAAgBsE,EAActE,cAActE,QACtDoH,EAAWwB,EAActE,eAE7BsE,EAAcrE,aAAe6C,EAAWwB,EAAcrE,cACtDqE,EAAcK,eAAiBC,KAAKC,IAClC,EACAD,KAAKE,IAAIR,EAAcK,gBAAkB,IAAK,KAGhD,IAAII,IACFC,KAAK,EACL5H,SAAS,EACT6H,KAAK,EACLrD,UAAU,EACVsD,QAAQ,GAGN1E,EAAkB8D,EAAc9D,eACM,wBAAnC2E,SAAS1J,KAAK+E,GACnBA,EAAkBkC,EAAYqC,EAAwBvE,GAC7CA,KAAoB,IAC7BA,EAAkBuE,GAEpBT,EAAc9D,gBAAkBA,CAEhC,IAAI4E,IACFC,UAAU,GAGR5E,EAAa6D,EAAc7D,UAW/B,OAVqC,uBAA9B0E,SAAS1J,KAAKgF,GACnBA,EAAaiC,EAAY0C,EAAoB3E,GACpCA,KAAe,IACxBA,EAAa2E,GAEfd,EAAc7D,WAAaA,EAE3BuB,EAAS7B,sBAAwBmE,EAAcnE,oBAGxC1F,GAWT6K,QAAS,WACP,GAAI7K,GAAOC,IAyBX,OAxBID,GAAK8K,YAAc9K,EAAKyG,IAC1Bc,EAASwD,OAAOC,UAAU,WACxBhL,EAAKiL,EAAwBxH,MAAMzD,EAAMmD,aAGvCnD,EAAKgF,EAAeW,4BACtB3F,EAAKkL,IAGPlL,EAAKmL,IAEDnL,EAAKgF,EAAegB,YAAchG,EAAKgF,EAAegB,WAAW4E,UACnE5K,EAAKoL,IAGHpL,EAAKgF,EAAee,iBAAiB/F,EAAKqL,IAG9CrL,EAAKsL,IAELtL,EAAKyG,GAAoB,GAG3B5F,MAAMiF,gBAAkB9F,EAAKgF,EAAec,gBACrC7F,MAQT+J,OAAQ,SAASN,GACf,GAAI1J,GAAOC,KACTsL,EAAMvL,EAAKwL,EAAU9B,GACrB+B,EAAYF,EAAIG,KAAKC,YAAY,KACjCD,EAAOH,EAAIG,KAAKE,OAAO,EAAGH,EAE5BzL,GAAK6L,EAAOnC,EACZ1J,EAAK6E,EAAa0G,EAAIO,KACtB9L,EAAK+L,EAAgBR,EAAIS,MAAQT,EAAIS,KAAKJ,OAAO,GACjD5L,EAAK8E,EAAiByG,EAAIG,KAAKE,OAAOH,EAAY,GAElDzL,EAAK4E,EAAgB5E,EAAKiM,EAAiBV,GAE3CvL,EAAKkM,EACHlM,EAAK4E,EAAgB,IAAM8G,EAAO,OAAS1L,EAAK8E,EAAiB,UAInE7E,KAAKqH,KAWPxF,QAAS,SAAS6H,EAASwC,EAAMlJ,GAO/B,MANIe,GAAW2F,KACb1G,EAAOkJ,MACPA,EAAOxC,EACPA,EAAUyC,QAGLnM,KAAKoM,KAAK1C,EAASwC,GAAM1I,MAAMxD,KAAMgD,IAW9CoJ,KAAM,SAAS1C,EAASwC,EAAMG,GAqC5B,QAASC,KACP,GAAItJ,MACFrC,EAAIuC,UAAUlC,OACduL,GAAQ7C,GAAYA,GAAWA,EAAQ6C,QAAS,CAQlD,KANIF,GAAWtI,EAAWsI,IACxBA,EAAQ7I,MAAMxD,KAAMkD,WAKfvC,KAAKqC,EAAKrC,GAAK4L,EAAOxM,EAAKqM,KAAK1C,EAASxG,UAAUvC,IAAMuC,UAAUvC,EAE1E,KAKE,MAAOuL,GAAK1I,MAAMxD,KAAMgD,GACxB,MAAO9C,GAGP,KAFAH,GAAKyM,IACLzM,EAAKyB,iBAAiBtB,EAAGwJ,GACnBxJ,GA1DV,GAAIH,GAAOC,IAGX,IAAIoE,EAAY8H,KAAUnI,EAAW2F,GACnC,MAAOA,EAWT,IAPI3F,EAAW2F,KACbwC,EAAOxC,EACPA,EAAUyC,SAKPpI,EAAWmI,GACd,MAAOA,EAIT,KACE,GAAIA,EAAKO,EACP,MAAOP,EAIT,IAAIA,EAAKQ,EACP,MAAOR,GAAKQ,EAEd,MAAOxM,GAIP,MAAOgM,GA8BT,IAAK,GAAIS,KAAYT,GACf/D,EAAO+D,EAAMS,KACfL,EAAQK,GAAYT,EAAKS,GAW7B,OARAL,GAAQjK,UAAY6J,EAAK7J,UAEzB6J,EAAKQ,EAAoBJ,EAGzBA,EAAQG,GAAY,EACpBH,EAAQM,EAAWV,EAEZI,GAQTO,UAAW,WAWT,MAVAvF,GAASwD,OAAO+B,YAEhB7M,KAAK8M,IACL9M,KAAK+M,IACL/M,KAAKgN,IACLhN,KAAKiN,IAELrM,MAAMiF,gBAAkB7F,KAAKyG,EAC7BzG,KAAKwG,GAAoB,EAElBxG,MAWTkN,EAA0B,SAASC,GACjCnN,KAAK2J,EAAU,QAAS,4CAA6CwD,GACrEnN,KAAKwB,iBAAiB2L,EAAMxL,QAC1BC,OACEwL,2BAA2B,MAUjCC,EAAgC,WAI9B,MAHArN,MAAKsN,EAA2BtN,KAAKsN,EAAyBC,KAAKvN,MACnEiF,EAAQuI,kBACNvI,EAAQuI,iBAAiB,qBAAsBxN,KAAKsN,GAC/CtN,MAQTyN,EAAgC,WAG9B,MAFAxI,GAAQyI,qBACNzI,EAAQyI,oBAAoB,qBAAsB1N,KAAKsN,GAClDtN,MAUTwB,iBAAkB,SAASmM,EAAIjE,GAG7B,GAFAA,EAAU1B,GAAa4F,eAAgB,GAAIlE,EAAUA,MAEjD/B,EAAagG,IAAOA,EAAGpM,MAEzBoM,EAAKA,EAAGpM,UACH,IAAIiG,EAAQmG,GAEjBA,EAAKA,MACA,CAAA,IAAIjG,EAAciG,GAYvB,MAAO3N,MAAK8B,eACV6L,EACA3F,EAAY0B,GACVmE,YAAY,EACZD,eAAgBlE,EAAQkE,eAAiB,IAZ7ClE,GAAU1J,KAAK8N,EAA2CpE,EAASiE,GACnEA,EAAK,GAAI/M,OAAM8I,EAAQvH,SAiBzBnC,KAAKwE,EAAyBmJ,CAO9B,KACE,GAAII,GAAQzG,EAAS0G,kBAAkBL,EACvC3N,MAAKiO,EAAiBF,EAAOrE,GAC7B,MAAOwE,GACP,GAAIP,IAAOO,EACT,KAAMA,GAIV,MAAOlO,OAGTmO,EAA4C,SAASC,EAAgBT,GACnE,GAAIU,GAASC,OAAOC,KAAKZ,GAAIa,OACzB9E,EAAU1B,EAAYoG,GACxBjM,QACE,2CAA6C0G,EAAwBwF,GACvEI,aAAclH,EAAI8G,IAClBzM,MAAOwM,EAAexM,WAIxB,OAFA8H,GAAQ9H,MAAM8M,EAAiB5F,EAAmB6E,GAE3CjE,GAUT5H,eAAgB,SAASqB,EAAKuG,GAI5B,IACI1J,KAAK+E,EAAeK,aAAauJ,OACnC3O,KAAK+E,EAAeK,aAAauJ,KAAKxL,GAFxC,CAOAuG,EAAUA,MACVvG,GAAY,EAEZ,IAOIwK,GAPAtK,EAAO2E,GAEP7F,QAASgB,GAEXuG,EAQF,KACE,KAAM,IAAI9I,OAAMuC,GAChB,MAAO+K,GACPP,EAAKO,EAIPP,EAAGvL,KAAO,IACV,IAAI2L,GAAQzG,EAAS0G,kBAAkBL,GAGnCiB,EAAc/G,EAAQkG,EAAMA,QAAUA,EAAMA,MAAM,EAKlDa,IAAoC,2BAArBA,EAAY1C,OAC7B0C,EAAcb,EAAMA,MAAM,GAG5B,IAAIc,GAAWD,GAAeA,EAAYE,KAAQ,EAElD,MACI9O,KAAK+E,EAAeM,WAAWsJ,OACjC3O,KAAK+E,EAAeM,WAAWsJ,KAAKE,OAMlC7O,KAAK+E,EAAeO,cAAcqJ,MACnC3O,KAAK+E,EAAeO,cAAcqJ,KAAKE,IAF1C,CAOA,GAAI7O,KAAK+E,EAAe8I,YAAenE,GAAWA,EAAQmE,WAAa,CAErExK,EAAKoL,YAAkC,MAApBpL,EAAKoL,YAAsBtL,EAAME,EAAKoL,YAEzD/E,EAAU1B,GAEN4F,eAAgB,GAElBlE,GAMFA,EAAQkE,gBAAkB,CAE1B,IAAImB,GAAS/O,KAAKgP,EAAejB,EAAOrE,EACxCrG,GAAKwK,YAEHkB,OAAQA,EAAOE,WAcnB,MATI5L,GAAKoL,cACPpL,EAAKoL,YAAc5G,EAAQxE,EAAKoL,aAC5BpL,EAAKoL,aACJpL,EAAKoL,cAIZzO,KAAKkP,EAAM7L,GAEJrD,QAGTmP,kBAAmB,SAASC,GAC1B,GAAIC,GAAQrH,GAERsH,UAAW3L,IAAQ,KAErByL,EAGF,IAAIrL,EAAW/D,KAAK+E,EAAewK,oBAAqB,CACtD,GAAIC,GAASxP,KAAK+E,EAAewK,mBAAmBF,EAEpD,IAAI5H,EAAS+H,KAAY1H,EAAc0H,GACrCH,EAAQG,MACH,IAAIA,KAAW,EACpB,MAAOxP,MAQX,MAJAA,MAAK+G,EAAaiD,KAAKqF,GACnBrP,KAAK+G,EAAa/F,OAAShB,KAAK+E,EAAekF,gBACjDjK,KAAK+G,EAAa0I,QAEbzP,MAGT+B,UAAW,SAAS2N,GAClB,GAAIC,MAAgB1M,MAAMlC,KAAKmC,UAAW,EAO1C,OALAlD,MAAK4G,EAASoD,MAAM0F,EAAQC,IACxB3P,KAAKwG,GACPxG,KAAKqL,IAGArL,MAST4P,eAAgB,SAAS/D,GAIvB,MAFA7L,MAAK8E,EAAe+G,KAAOA,EAEpB7L,MAST6P,gBAAiB,SAASjO,GAGxB,MAFA5B,MAAK8P,EAAc,QAASlO,GAErB5B,MAST+P,eAAgB,SAASC,GAGvB,MAFAhQ,MAAK8P,EAAc,OAAQE,GAEpBhQ,MAQTiQ,aAAc,WAGZ,MAFAjQ,MAAK8E,KAEE9E,MAQTkQ,WAAY,WAEV,MAAOjM,MAAKkM,MAAMjM,EAAUlE,KAAK8E,KASnCsL,eAAgB,SAASC,GAGvB,MAFArQ,MAAK+E,EAAesL,YAAcA,EAE3BrQ,MASTsQ,WAAY,SAAStL,GAGnB,MAFAhF,MAAK+E,EAAeC,QAAUA,EAEvBhF,MAUTuQ,gBAAiB,SAAS3N,GACxB,GAAIkB,GAAW9D,KAAK+E,EAAeyL,YAEnC,OADAxQ,MAAK+E,EAAeyL,aAAe3M,EAAqBC,EAAUlB,GAC3D5C,MAUTyQ,sBAAuB,SAAS7N,GAC9B,GAAIkB,GAAW9D,KAAK+E,EAAewK,kBAEnC,OADAvP,MAAK+E,EAAewK,mBAAqB1L,EAAqBC,EAAUlB,GACjE5C,MAUT0Q,sBAAuB,SAAS9N,GAC9B,GAAIkB,GAAW9D,KAAK+E,EAAe4L,kBAEnC,OADA3Q,MAAK+E,EAAe4L,mBAAqB9M,EAAqBC,EAAUlB,GACjE5C,MAYT4Q,aAAc,SAASC,GAGrB,MAFA7Q,MAAK+E,EAAe8L,UAAYA,EAEzB7Q,MAQT8Q,cAAe,WACb,MAAO9Q,MAAKwE,GAQduM,YAAa,WACX,MAAO/Q,MAAK0E,GAQdmG,QAAS,WACP,QAAK7K,KAAKgE,MACLhE,KAAK2E,IACH3E,KAAKgR,0BACRhR,KAAKgR,yBAA0B,EAC/BhR,KAAK2J,EAAU,QAAS,2CAEnB,KAKXsH,UAAW,WAIT,GAAIC,GAAcjM,EAAQiM,WACtBA,IACFlR,KAAKwJ,OAAO0H,EAAYzH,IAAKyH,EAAY1H,QAAQoB,WAIrDuG,iBAAkB,SAASzH,GACzB,GACGrF,EADH,CAKAqF,EAAUA,KAEV,IAAIqH,GAAcrH,EAAQ0H,SAAWpR,KAAK+Q,aAC1C,KAAKA,EACH,KAAM,IAAI7O,GAAiB,kBAG7B,IAAIuH,GAAMC,EAAQD,KAAOzJ,KAAK4L,CAC9B,KAAKnC,EACH,KAAM,IAAIvH,GAAiB,cAG7B,IAAImP,GAASC,mBACTC,EAAK,EACTA,IAAM,YAAcF,EAAON,GAC3BQ,GAAM,QAAUF,EAAO5H,EAEvB,IAAIoC,GAAOnC,EAAQmC,MAAQ7L,KAAK8E,EAAe+G,IAC3CA,KACEA,EAAKzJ,OAAMmP,GAAM,SAAWF,EAAOxF,EAAKzJ,OACxCyJ,EAAK2F,QAAOD,GAAM,UAAYF,EAAOxF,EAAK2F,QAGhD,IAAIC,GAAezR,KAAKgM,EAAiBhM,KAAKuL,EAAU9B,IAEpDiI,EAASrN,EAAUsN,cAAc,SACrCD,GAAOE,OAAQ,EACfF,EAAOG,IAAMJ,EAAe,yBAA2BF,GACtDlN,EAAUyN,MAAQzN,EAAU0N,MAAMC,YAAYN,KAIjDO,EAAoB,WAClB,GAAIlS,GAAOC,IACXA,MAAKuG,GAAkB,EACvB2L,WAAW,WAETnS,EAAKwG,GAAkB,KAI3B4L,EAAe,SAASC,EAAW1I,GAEjC,GAAI2I,GAAKxI,CAET,IAAK7J,KAAKmE,EAAV,CAEAuF,EAAUA,MAEV0I,EAAY,QAAUA,EAAUzG,OAAO,EAAG,GAAG2G,cAAgBF,EAAUzG,OAAO,GAE1EtH,EAAUkO,aACZF,EAAMhO,EAAUkO,YAAY,cAC5BF,EAAIG,UAAUJ,GAAW,GAAM,KAE/BC,EAAMhO,EAAUoO,oBAChBJ,EAAID,UAAYA,EAGlB,KAAKvI,IAAOH,GACNvB,EAAOuB,EAASG,KAClBwI,EAAIxI,GAAOH,EAAQG,GAGvB,IAAIxF,EAAUkO,YAEZlO,EAAUqO,cAAcL,OAIxB,KACEhO,EAAUsO,UAAU,KAAON,EAAID,UAAUQ,cAAeP,GACxD,MAAOnS,OAYb2S,EAAyB,SAASC,GAChC,GAAI/S,GAAOC,IACX,OAAO,UAASqS,GASd,GALAtS,EAAKgT,GAAmB,KAKpBhT,EAAKiH,IAAuBqL,EAAhC,CAEAtS,EAAKiH,EAAqBqL,CAM1B,IAAIW,EACJ,KACEA,EAASzK,EAAiB8J,EAAIW,QAC9B,MAAO9S,GACP8S,EAAS,YAGXjT,EAAKoP,mBACH8D,SAAU,MAAQH,EAClB3Q,QAAS6Q,OAUfE,GAAuB,WACrB,GAAInT,GAAOC,KACTmT,EAAmB,GAKrB,OAAO,UAASd,GACd,GAAIW,EACJ,KACEA,EAASX,EAAIW,OACb,MAAO9S,GAGP,OAEF,GAAIkT,GAAUJ,GAAUA,EAAOI,OAK/B,IACGA,IACY,UAAZA,GAAmC,aAAZA,GAA2BJ,EAAOK,mBAF5D,CAQA,GAAIC,GAAUvT,EAAKgT,EACdO,IACHvT,EAAKwT,EAAwB,SAASlB,GAExCmB,aAAaF,GACbvT,EAAKgT,GAAmBb,WAAW,WACjCnS,EAAKgT,GAAmB,MACvBI,MAUPM,GAAmB,SAASC,EAAMC,GAChC,GAAIC,GAAYlL,EAAS1I,KAAKiH,EAAUG,MACpCyM,EAAWnL,EAASiL,GACpBG,EAAapL,EAASgL,EAK1B1T,MAAKmH,EAAYwM,EAIbC,EAAUG,WAAaF,EAASE,UAAYH,EAAUI,OAASH,EAASG,OAC1EL,EAAKE,EAASI,UACZL,EAAUG,WAAaD,EAAWC,UAAYH,EAAUI,OAASF,EAAWE,OAC9EN,EAAOI,EAAWG,UAEpBjU,KAAKmP,mBACH8D,SAAU,aACV5P,MACEsQ,GAAIA,EACJD,KAAMA,MAKZQ,EAAwB,WACtB,GAAInU,GAAOC,IACXD,GAAKoU,GAA4B5Q,SAASlB,UAAUoI,SAEpDlH,SAASlB,UAAUoI,SAAW,WAC5B,MAAoB,kBAATzK,OAAuBA,KAAKyM,EAC9B1M,EAAKoU,GAA0B3Q,MAAMxD,KAAK4M,EAAU1J,WAEtDnD,EAAKoU,GAA0B3Q,MAAMxD,KAAMkD,aAItDkR,EAA0B,WACpBpU,KAAKmU,KAEP5Q,SAASlB,UAAUoI,SAAWzK,KAAKmU,KAQvCE,EAAqB,WAKnB,QAASC,GAAWC,GAClB,MAAO,UAASC,EAAIrU,GAKlB,IAAK,GADD6C,GAAO,GAAIyR,OAAMvR,UAAUlC,QACtBL,EAAI,EAAGA,EAAIqC,EAAKhC,SAAUL,EACjCqC,EAAKrC,GAAKuC,UAAUvC,EAEtB,IAAI+T,GAAmB1R,EAAK,EAQ5B,OAPIe,GAAW2Q,KACb1R,EAAK,GAAKjD,EAAKqM,KAAKsI,IAMlBH,EAAK/Q,MACA+Q,EAAK/Q,MAAMxD,KAAMgD,GAEjBuR,EAAKvR,EAAK,GAAIA,EAAK,KAOhC,QAAS2R,GAAgB7U,GACvB,GAAI8U,GAAQ3P,EAAQnF,IAAWmF,EAAQnF,GAAQuC,SAC3CuS,IAASA,EAAMC,gBAAkBD,EAAMC,eAAe,sBACxDlM,EACEiM,EACA,mBACA,SAASL,GACP,MAAO,UAASzB,EAAS0B,EAAIM,EAASC,GAEpC,IACMP,GAAMA,EAAGQ,cACXR,EAAGQ,YAAcjV,EAAKqM,KAAKoI,EAAGQ,cAEhC,MAAOC,IAMT,GAAIC,GAAQC,EAAcC,CA6B1B,OA1BEtP,IACAA,EAAgByE,MACJ,gBAAXzK,GAAuC,SAAXA,KAI7BqV,EAAepV,EAAKwT,EAAwB,SAC5C6B,EAAkBrV,EAAKsV,KACvBH,EAAS,SAAS7C,GAIhB,GAAKA,EAAL,CAEA,GAAID,EACJ,KACEA,EAAYC,EAAIiD,KAChB,MAAOpV,GAGP,OAEF,MAAkB,UAAdkS,EAA8B+C,EAAa9C,GACxB,aAAdD,EAAiCgD,EAAgB/C,GAArD,UAGFkC,EAAKxT,KACVf,KACA8S,EACA/S,EAAKqM,KAAKoI,EAAIrI,OAAW+I,GACzBJ,EACAC,KAINQ,GAEF5M,EACEiM,EACA,sBACA,SAASL,GACP,MAAO,UAASlC,EAAKmC,EAAIM,EAASC,GAChC,IACEP,EAAKA,IAAOA,EAAG9H,EAAoB8H,EAAG9H,EAAoB8H,GAC1D,MAAOtU,IAGT,MAAOqU,GAAKxT,KAAKf,KAAMqS,EAAKmC,EAAIM,EAASC,KAG7CQ,IAvGN,GAAIxV,GAAOC,KAEPuV,EAAkBxV,EAAK+G,EA2BvBhB,EAAkB9F,KAAK+E,EAAee,eA+E1C6C,GAAK1D,EAAS,aAAcqP,EAAYiB,GACxC5M,EAAK1D,EAAS,cAAeqP,EAAYiB,GACrCtQ,EAAQuQ,uBACV7M,EACE1D,EACA,wBACA,SAASsP,GACP,MAAO,UAASkB,GACd,MAAOlB,GAAKxU,EAAKqM,KAAKqJ,MAG1BF,EAqCJ,KAAK,GA/BDG,IACF,cACA,SACA,OACA,mBACA,iBACA,oBACA,kBACA,cACA,aACA,qBACA,cACA,aACA,iBACA,eACA,kBACA,cACA,cACA,eACA,qBACA,SACA,YACA,eACA,gBACA,YACA,kBACA,SACA,iBACA,4BACA,wBAEO/U,EAAI,EAAGA,EAAI+U,EAAa1U,OAAQL,IACvCgU,EAAgBe,EAAa/U,KAajCgV,EAAwB,WAMtB,QAASC,GAASC,EAAMvL,GAClBuL,IAAQvL,IAAOvG,EAAWuG,EAAIuL,KAChClN,EAAK2B,EAAKuL,EAAM,SAAStB,GACvB,MAAOxU,GAAKqM,KAAKmI,KARvB,GAAIxU,GAAOC,KACP8F,EAAkB9F,KAAK+E,EAAee,gBAEtCyP,EAAkBxV,EAAK+G,CAU3B,IAAIhB,EAAgBwE,KAAO,kBAAoBrF,GAAS,CACtD,GAAI6Q,GAAW7Q,EAAQ8Q,gBAAkB9Q,EAAQ8Q,eAAe1T,SAChEsG,GACEmN,EACA,OACA,SAASE,GACP,MAAO,UAAS7P,EAAQ2I,GAYtB,MARIlH,GAASkH,IAAQA,EAAImH,QAAQlW,EAAK6E,UACpC5E,KAAKkW,IACH/P,OAAQA,EACR2I,IAAKA,EACLqH,YAAa,OAIVH,EAASxS,MAAMxD,KAAMkD,aAGhCqS,GAGF5M,EACEmN,EACA,OACA,SAASM,GACP,MAAO,YAIL,QAASC,KACP,GAAI/L,EAAI4L,IAAkC,IAAnB5L,EAAIgM,WAAkB,CAC3C,IAGEhM,EAAI4L,GAAYC,YAAc7L,EAAIiM,OAClC,MAAOrW,IAITH,EAAKoP,mBACHmG,KAAM,OACNrC,SAAU,MACV5P,KAAMiH,EAAI4L,MAMhB,IAAK,GArBD5L,GAAMtK,KAoBNwW,GAAS,SAAU,UAAW,cACzBC,EAAI,EAAGA,EAAID,EAAMxV,OAAQyV,IAChCb,EAASY,EAAMC,GAAInM,EAiBrB,OAdI,sBAAwBA,IAAOvG,EAAWuG,EAAIoM,oBAChD/N,EACE2B,EACA,qBACA,SAASiK,GACP,MAAOxU,GAAKqM,KAAKmI,EAAMpI,OAAWkK,KAMtC/L,EAAIoM,mBAAqBL,EAGpBD,EAAS5S,MAAMxD,KAAMkD,aAGhCqS,GAIAzP,EAAgBwE,KAAO1B,KACzBD,EACE1D,EACA,QACA,SAAS0R,GACP,MAAO,YAKL,IAAK,GADD3T,GAAO,GAAIyR,OAAMvR,UAAUlC,QACtBL,EAAI,EAAGA,EAAIqC,EAAKhC,SAAUL,EACjCqC,EAAKrC,GAAKuC,UAAUvC,EAGtB,IAEImO,GAFA8H,EAAa5T,EAAK,GAClBmD,EAAS,KAeb,IAZ0B,gBAAfyQ,GACT9H,EAAM8H,EACG,WAAa3R,IAAW2R,YAAsB3R,GAAQ4R,SAC/D/H,EAAM8H,EAAW9H,IACb8H,EAAWzQ,SACbA,EAASyQ,EAAWzQ,SAGtB2I,EAAM,GAAK8H,EAIT9H,EAAImH,QAAQlW,EAAK6E,QACnB,MAAO+R,GAAUnT,MAAMxD,KAAMgD,EAG3BA,GAAK,IAAMA,EAAK,GAAGmD,SACrBA,EAASnD,EAAK,GAAGmD,OAGnB,IAAI2Q,IACF3Q,OAAQA,EACR2I,IAAKA,EACLqH,YAAa,KAGf,OAAOQ,GACJnT,MAAMxD,KAAMgD,GACZ+T,KAAK,SAASC,GASb,MARAF,GAAUX,YAAca,EAAST,OAEjCxW,EAAKoP,mBACHmG,KAAM,OACNrC,SAAU,QACV5P,KAAMyT,IAGDE,IAER,SAAS,SAAS/B,GASjB,KAPAlV,GAAKoP,mBACHmG,KAAM,OACNrC,SAAU,QACV5P,KAAMyT,EACNnU,MAAO,UAGHsS,MAIdM,GAMAzP,EAAgByE,KAAOvK,KAAKmE,IAC1BE,EAAUmJ,kBACZnJ,EAAUmJ,iBAAiB,QAASzN,EAAKwT,EAAwB,UAAU,GAC3ElP,EAAUmJ,iBAAiB,WAAYzN,EAAKsV,MAAyB,IAC5DhR,EAAU4S,cAEnB5S,EAAU4S,YAAY,UAAWlX,EAAKwT,EAAwB,UAC9DlP,EAAU4S,YAAY,aAAclX,EAAKsV,OAQ7C,IAAI6B,GAASjS,EAAQiS,OACjBC,EAAsBD,GAAUA,EAAOE,KAAOF,EAAOE,IAAIC,QACzDC,GACDH,GACDlS,EAAQsS,SACRA,QAAQC,WACRD,QAAQE,YACV,IAAI3R,EAAgBoB,UAAYoQ,EAAwB,CAEtD,GAAII,GAAgBzS,EAAQ0S,UAC5B1S,GAAQ0S,WAAa,WACnB,GAAIC,GAAc7X,EAAKkH,EAAUG,IAGjC,IAFArH,EAAK8X,GAAkB9X,EAAKoH,EAAWyQ,GAEnCF,EACF,MAAOA,GAAclU,MAAMxD,KAAMkD,WAIrC,IAAI4U,GAA6B,SAASC,GAGxC,MAAO,YACL,GAAIjJ,GAAM5L,UAAUlC,OAAS,EAAIkC,UAAU,GAAKiJ,MAQhD,OALI2C,IAEF/O,EAAK8X,GAAkB9X,EAAKoH,EAAW2H,EAAM,IAGxCiJ,EAAiBvU,MAAMxD,KAAMkD,YAIxCyF,GAAK4O,QAAS,YAAaO,EAA4BvC,GACvD5M,EAAK4O,QAAS,eAAgBO,EAA4BvC,GAG5D,GAAIzP,EAAgBpD,SAAW,WAAauC,IAAWvC,QAAQsV,IAAK,CAElE,GAAIC,GAAwB,SAAS9U,EAAKE,GACxCtD,EAAKoP,mBACHhN,QAASgB,EACTR,MAAOU,EAAKV,MACZsQ,SAAU,YAIdlL,IAAM,QAAS,OAAQ,OAAQ,QAAS,OAAQ,SAAS8K,EAAGlQ,GAC1DqG,EAAkBtG,QAASC,EAAOsV,OAKxCC,EAAkB,WAGhB,IADA,GAAIC,GACGnY,KAAK8G,EAAiB9F,QAAQ,CACnCmX,EAAUnY,KAAK8G,EAAiB2I,OAEhC,IAAIL,GAAM+I,EAAQ,GAChB/V,EAAO+V,EAAQ,GACf5D,EAAO4D,EAAQ,EAEjB/I,GAAIhN,GAAQmS,IAIhB6D,EAAiB,WAEf,IAAK,GAAIjS,KAAUnG,MAAK2G,EACtB3G,KAAK0G,EAAiBP,GAAUnG,KAAK2G,EAAwBR,IAIjEkS,EAAe,WACb,GAAItY,GAAOC,IAGX+H,GAAK/H,KAAK4G,EAAU,SAASiM,EAAGnD,GAC9B,GAAI4I,GAAY5I,EAAO,GACnB1M,EAAO0M,EAAO,EAClB4I,GAAU9U,MAAMzD,GAAOA,GAAMwY,OAAOvV,OAIxCwV,EAAW,SAASC,GAClB,GAAIC,GAAIvP,EAAWwP,KAAKF,GACtBhP,KACA9I,EAAI,CAEN,KACE,KAAOA,KAAK8I,EAAIR,EAAQtI,IAAM+X,EAAE/X,IAAM,GACtC,MAAOT,GACP,KAAM,IAAIgC,GAAiB,gBAAkBuW,GAG/C,GAAIhP,EAAIsC,OAAS/L,KAAK+E,EAAe6T,eACnC,KAAM,IAAI1W,GACR,iFAIJ,OAAOuH,IAGToP,EAAkB,SAASvN,GAEzB,GAAImG,GAAe,KAAOnG,EAAI0I,MAAQ1I,EAAIwN,KAAO,IAAMxN,EAAIwN,KAAO,GAKlE,OAHIxN,GAAIyI,WACNtC,EAAenG,EAAIyI,SAAW,IAAMtC,GAE/BA,GAGTsH,EAAyB,WAElB/Y,KAAKuG,GACRvG,KAAKiO,EAAiBzK,MAAMxD,KAAMkD,YAItC8V,EAAkB,SAASC,EAAWvP,GACpC,GAAIqF,GAAS/O,KAAKgP,EAAeiK,EAAWvP,EAE5C1J,MAAKkZ,EAAc,UACjBD,UAAWA,EACXvP,QAASA,IAGX1J,KAAKmZ,GACHF,EAAU7W,KACV6W,EAAU9W,QACV8W,EAAUnK,IACVmK,EAAUG,OACVrK,EACArF,IAIJ2P,EAAgB,SAASJ,EAAWvP,GAClC,GAAI3J,GAAOC,KACP+O,IACJ,IAAIkK,EAAUlL,OAASkL,EAAUlL,MAAM/M,SACrC+G,EAAKkR,EAAUlL,MAAO,SAASpN,EAAGoN,GAChC,GAAIuL,GAAQvZ,EAAKwZ,GAAgBxL,EAAOkL,EAAUnK,IAC9CwK,IACFvK,EAAO/E,KAAKsP,KAKZ5P,GAAWA,EAAQkE,gBACrB,IAAK,GAAI6I,GAAI,EAAGA,EAAI/M,EAAQkE,gBAAkB6I,EAAI1H,EAAO/N,OAAQyV,IAC/D1H,EAAO0H,GAAG+C,QAAS,CAKzB,OADAzK,GAASA,EAAO9L,MAAM,EAAGjD,KAAK+E,EAAec,kBAI/C4T,GAAiB,SAASH,EAAOI,GAE/B,GAAIC,IACFC,SAAUN,EAAMxK,IAChBsK,OAAQE,EAAMO,KACdC,MAAOR,EAAMS,OACbC,WAAUV,EAAMpN,MAAQ,IAuB1B,OAfKoN,GAAMxK,MACT6K,EAAWC,SAAWF,GAGxBC,EAAWH,SAGNxZ,KAAK+E,EAAeQ,aAAaoJ,OACjC3O,KAAK+E,EAAeQ,aAAaoJ,KAAKgL,EAAWC,WAEpD,qBAAqBjL,KAAKgL,EAAW,cAErC,qBAAqBhL,KAAKgL,EAAWC,WAGhCD,GAGTM,GAAmB,SAAS3E,EAAMnT,EAAS0M,EAASuK,EAAQrK,EAAQrF,GAClE,GAAIwQ,IAAmB5E,EAAOA,EAAO,KAAO,KAAOnT,GAAW,GAC9D,KACInC,KAAK+E,EAAeK,aAAauJ,OAClC3O,KAAK+E,EAAeK,aAAauJ,KAAKxM,KACrCnC,KAAK+E,EAAeK,aAAauJ,KAAKuL,GAH1C,CAQA,GAAIrM,EAoBJ,IAlBIkB,GAAUA,EAAO/N,QACnB6N,EAAUE,EAAO,GAAG6K,UAAY/K,EAGhCE,EAAOE,UACPpB,GAAckB,OAAQA,IACbF,IACThB,GACEkB,SAEI6K,SAAU/K,EACVuK,OAAQA,EACRI,QAAQ,QAOZxZ,KAAK+E,EAAeM,WAAWsJ,OACjC3O,KAAK+E,EAAeM,WAAWsJ,KAAKE,OAMlC7O,KAAK+E,EAAeO,cAAcqJ,MACnC3O,KAAK+E,EAAeO,cAAcqJ,KAAKE,IAF1C,CAOA,GAAIxL,GAAO2E,GAGPmS,WACEC,SAEI9E,KAAMA,EACNxL,MAAO3H,EACP0L,WAAYA,KAIlBwM,QAASxL,GAEXnF,EAIF1J,MAAKkP,EAAM7L,MAGbiX,GAAa,SAASjX,GAGpB,GAAI8G,GAAMnK,KAAK+E,EAAeY,gBAI9B,IAHItC,EAAKlB,UACPkB,EAAKlB,QAAU8F,EAAS5E,EAAKlB,QAASgI,IAEpC9G,EAAK8W,UAAW,CAClB,GAAIA,GAAY9W,EAAK8W,UAAUC,OAAO,EACtCD,GAAUrQ,MAAQ7B,EAASkS,EAAUrQ,MAAOK,GAG9C,GAAIoQ,GAAUlX,EAAKkX,OAanB,OAZIA,KACEA,EAAQzL,MACVyL,EAAQzL,IAAM7G,EAASsS,EAAQzL,IAAK9O,KAAK+E,EAAea,eAEtD2U,EAAQC,UACVD,EAAQC,QAAUvS,EAASsS,EAAQC,QAASxa,KAAK+E,EAAea,gBAIhEvC,EAAKoX,aAAepX,EAAKoX,YAAYL,QACvCpa,KAAK0a,GAAiBrX,EAAKoX,aAEtBpX,GAMTsX,GAAkB,SAASF,GAQzB,IAAK,GAJHG,GACAvL,EACAhM,EAHEwX,GAAY,KAAM,OAAQ,OAKrBla,EAAI,EAAGA,EAAI8Z,EAAYL,OAAOpZ,SAAUL,EAE/C,GADA0O,EAAQoL,EAAYL,OAAOzZ,GAExB0O,EAAMwF,eAAe,SACrBpN,EAAS4H,EAAMhM,QAChB6E,EAAamH,EAAMhM,MAHrB,CAOAA,EAAO2E,KAAgBqH,EAAMhM,KAC7B,KAAK,GAAIoT,GAAI,EAAGA,EAAIoE,EAAS7Z,SAAUyV,EACrCmE,EAAUC,EAASpE,GACfpT,EAAKwR,eAAe+F,IAAYvX,EAAKuX,KACvCvX,EAAKuX,GAAW3S,EAAS5E,EAAKuX,GAAU5a,KAAK+E,EAAea,cAGhE6U,GAAYL,OAAOzZ,GAAG0C,KAAOA,IAIjCyX,GAAc,WACZ,GAAK9a,KAAKsE,GAAkBtE,KAAKmE,EAAjC,CACA,GAAI4W,KAkBJ,OAhBI/a,MAAKsE,GAAiBC,EAAWyW,YACnCD,EAASvV,SACPyV,aAAc5R,UAAU2R,YAKxB/V,EAAQiC,UAAYjC,EAAQiC,SAASE,OACvC2T,EAASjM,IAAM7J,EAAQiC,SAASE,MAG9BpH,KAAKmE,GAAgBE,EAAU6W,WAC5BH,EAASvV,UAASuV,EAASvV,YAChCuV,EAASvV,QAAQgV,QAAUnW,EAAU6W,UAGhCH,IAGTI,EAAe,WACbnb,KAAKob,GAAmB,EACxBpb,KAAKqb,GAAgB,MAGvBC,GAAgB,WACd,MAAOtb,MAAKob,IAAoBzX,IAAQ3D,KAAKqb,GAAgBrb,KAAKob,IAYpEG,GAAe,SAASC,GACtB,GAAIC,GAAOzb,KAAKyE,CAEhB,UACGgX,GACDD,EAAQrZ,UAAYsZ,EAAKtZ,SACzBqZ,EAAQnB,UAAYoB,EAAKpB,WAKvBmB,EAAQ3N,YAAc4N,EAAK5N,WACtBpF,EAAiB+S,EAAQ3N,WAAY4N,EAAK5N,aACxC2N,EAAQrB,YAAasB,EAAKtB,WAE5B3R,EAAgBgT,EAAQrB,UAAWsB,EAAKtB,aAMnDuB,GAAkB,SAASnB,GAEzB,IAAIva,KAAK2b,KAAT,CAIA,GAAIpF,GAASgE,EAAQhE,MAKrB,IAAiB,MAAXA,GAA6B,MAAXA,GAA6B,MAAXA,EAA1C,CAEA,GAAIqF,EACJ,KAIIA,EADEhT,IACM2R,EAAQ/U,QAAQqW,IAAI,eAEpBtB,EAAQuB,kBAAkB,eAIpCF,EAA8B,IAAtBG,SAASH,EAAO,IACxB,MAAO1b,IAITF,KAAKob,GAAmBQ,EAEpBA,EAEwB,EAAxB5b,KAAKob,IAAwB,IAEjCpb,KAAKqb,GAAgB1X,OAGvBqY,EAAO,SAAS3Y,GACd,GAAIuG,GAAgB5J,KAAK+E,EAErBkX,GACAC,QAASlc,KAAK6E,EACdvB,OAAQsG,EAActG,OACtB6Y,SAAU,cAEZpB,EAAW/a,KAAKoc,IAsDlB,IApDIrB,IACFkB,EAAS1B,QAAUQ,GAIjB1X,EAAKuK,sBAAuBvK,GAAKuK,eAErCvK,EAAO2E,EAAYiU,EAAU5Y,GAG7BA,EAAK2M,KAAOhI,EAAYA,KAAgBhI,KAAK8E,EAAekL,MAAO3M,EAAK2M,MACxE3M,EAAKzB,MAAQoG,EAAYA,KAAgBhI,KAAK8E,EAAelD,OAAQyB,EAAKzB,OAG1EyB,EAAKzB,MAAM,oBAAsB+B,IAAQ3D,KAAK6G,EAE1C7G,KAAK+G,GAAgB/G,KAAK+G,EAAa/F,OAAS,IAGlDqC,EAAKoX,aACHL,UAAWnX,MAAMlC,KAAKf,KAAK+G,EAAc,KAIzC/G,KAAK8E,EAAe+G,OAEtBxI,EAAKwI,KAAO7L,KAAK8E,EAAe+G,MAI9BjC,EAAcyG,cAAahN,EAAKgN,YAAczG,EAAcyG,aAG5DzG,EAAc5E,UAAS3B,EAAK2B,QAAU4E,EAAc5E,SAGpD4E,EAAcyS,aAAYhZ,EAAKiZ,YAAc1S,EAAcyS,YAE/DhZ,EAAOrD,KAAKuc,GAAclZ,GAG1BiL,OAAOC,KAAKlL,GAAMmZ,QAAQ,SAAS3S,IAChB,MAAbxG,EAAKwG,IAA8B,KAAdxG,EAAKwG,IAAe/B,EAAczE,EAAKwG,YACvDxG,GAAKwG,KAIZ9F,EAAW6F,EAAc4G,gBAC3BnN,EAAOuG,EAAc4G,aAAanN,IAASA,GAIxCA,IAAQyE,EAAczE,MAMzBU,EAAW6F,EAAc+G,qBACxB/G,EAAc+G,mBAAmBtN,IAOpC,MAAIrD,MAAK2b,SACP3b,MAAK2J,EAAU,OAAQ,uCAAwCtG,QAIzB,gBAA7BuG,GAAc5D,WACnBkE,KAAKuS,SAAW7S,EAAc5D,YAChChG,KAAK0c,GAAsBrZ,GAG7BrD,KAAK0c,GAAsBrZ,KAI/BsZ,GAAe,SAAStZ,GACtB,MAAO0F,GAAS1F,EAAMrD,KAAK+E,EAAekB,eAG5C2W,GAAU,WACR,MAAOtU,MAGTuU,GAAuB,SAASxZ,EAAMT,GACpC,GAAI7C,GAAOC,KACP4J,EAAgB5J,KAAK+E,CAEzB,IAAK/E,KAAK6K,UAAV,CAQA,GALAxH,EAAOrD,KAAK8c,GAAYzZ,IAKnBrD,KAAK+E,EAAegY,iBAAmB/c,KAAKgd,GAAc3Z,GAE7D,WADArD,MAAK2J,EAAU,OAAQ,+BAAgCtG,EAOzDrD,MAAK0E,EAAerB,EAAK4Z,WAAa5Z,EAAK4Z,SAAWjd,KAAKkd,MAG3Dld,KAAKyE,EAAYpB,EAEjBrD,KAAK2J,EAAU,QAAS,uBAAwBtG,EAEhD,IAAI8Z,IACFC,eAAgB,IAChBC,cAAe,YAAcrd,KAAKsJ,QAClCgU,WAAYtd,KAAK4E,EAGf5E,MAAK8L,IACPqR,EAAKI,cAAgBvd,KAAK8L,EAG5B,IAAIqO,GAAY9W,EAAK8W,WAAa9W,EAAK8W,UAAUC,OAAO,EAItDpa,MAAK+E,EAAee,iBACpB9F,KAAK+E,EAAee,gBAAgB0E,QAEpCxK,KAAKmP,mBACH8D,SAAU,SACV9Q,QAASgY,GACJA,EAAU7E,KAAO6E,EAAU7E,KAAO,KAAO,IAAM6E,EAAUrQ,MAC1DzG,EAAKlB,QACT8a,SAAU5Z,EAAK4Z,SACfta,MAAOU,EAAKV,OAAS,SAIzB,IAAImM,GAAM9O,KAAKiM,GACdrC,EAAciH,WAAa7Q,KAAKwd,IAAczc,KAAKf,MAClD8O,IAAKA,EACLqO,KAAMA,EACN9Z,KAAMA,EACNqG,QAASE,EACT6T,UAAW,WACT1d,EAAKsH,IAELtH,EAAKmZ,EAAc,WACjB7V,KAAMA,EACNwO,IAAK/C,IAEPlM,GAAYA,KAEd8a,QAAS,SAAiBnc,GACxBxB,EAAK4J,EAAU,QAAS,mCAAoCpI,GAExDA,EAAMgZ,SACRxa,EAAK4d,GAAiBpc,EAAMgZ,SAG9Bxa,EAAKmZ,EAAc,WACjB7V,KAAMA,EACNwO,IAAK/C,IAEPvN,EAAQA,GAAS,GAAIX,OAAM,sDAC3BgC,GAAYA,EAASrB,QAK3Bqc,GAAc,SAASC,GAErB,GAAI/O,GAAM+O,EAAK/O,IAAM,IAAMzG,EAAUwV,EAAKV,MAEtCW,EAAmB,KACnBC,IAUJ,IARIF,EAAKnU,QAAQlE,UACfsY,EAAmB9d,KAAKge,GAAcH,EAAKnU,QAAQlE,UAGjDqY,EAAKnU,QAAQuU,kBACfF,EAA2B/d,KAAKge,GAAcH,EAAKnU,QAAQuU,kBAGzDrV,IAAiB,CACnBmV,EAAyBhM,KAAO7N,EAAU2Z,EAAKxa,KAE/C,IAAI6a,GAAsBlW,KAAgBhI,KAAKkG,GAC3CiY,EAAenW,EAAYkW,EAAqBH,EAMpD,OAJID,KACFK,EAAa3Y,QAAUsY,GAGlB7Y,EACJmZ,MAAMtP,EAAKqP,GACXpH,KAAK,SAASC,GACb,GAAIA,EAASqH,GACXR,EAAKJ,WAAaI,EAAKJ,gBAClB,CACL,GAAIlc,GAAQ,GAAIX,OAAM,sBAAwBoW,EAAST,OAGvDhV,GAAMgZ,QAAUvD,EAChB6G,EAAKH,SAAWG,EAAKH,QAAQnc,MAGhC,SAAS,WACRsc,EAAKH,SACHG,EAAKH,QAAQ,GAAI9c,OAAM,6CAI/B,GAAI2Z,GAAUtV,EAAQ8Q,gBAAkB,GAAI9Q,GAAQ8Q,cACpD,IAAKwE,EAAL,CAGA,GAAI+D,GAAU,mBAAqB/D,IAAqC,mBAAnBgE,eAEhDD,KAED,mBAAqB/D,GACvBA,EAAQ7D,mBAAqB,WAC3B,GAA2B,IAAvB6D,EAAQjE,WAEL,GAAuB,MAAnBiE,EAAQhE,OACjBsH,EAAKJ,WAAaI,EAAKJ,gBAClB,IAAII,EAAKH,QAAS,CACvB,GAAIzI,GAAM,GAAIrU,OAAM,sBAAwB2Z,EAAQhE,OACpDtB,GAAIsF,QAAUA,EACdsD,EAAKH,QAAQzI,MAIjBsF,EAAU,GAAIgE,gBAGdzP,EAAMA,EAAI0P,QAAQ,WAAY,IAG1BX,EAAKJ,YACPlD,EAAQkE,OAASZ,EAAKJ,WAEpBI,EAAKH,UACPnD,EAAQjZ,QAAU,WAChB,GAAI2T,GAAM,GAAIrU,OAAM,oCACpBqU,GAAIsF,QAAUA,EACdsD,EAAKH,QAAQzI,MAKnBsF,EAAQmE,KAAK,OAAQ5P,GAEjBgP,GACF/V,EAAK+V,EAAkB,SAASjU,EAAKC,GACnCyQ,EAAQoE,iBAAiB9U,EAAKC,KAIlCyQ,EAAQqE,KAAK1a,EAAU2Z,EAAKxa,UAG9Bwb,GAAe,SAASC,GACtB,GAAIC,KAEJ,KAAK,GAAIlV,KAAOiV,GACd,GAAIA,EAAKjK,eAAehL,GAAM,CAC5B,GAAIC,GAAQgV,EAAKjV,EACjBkV,GAAUlV,GAAwB,kBAAVC,GAAuBA,IAAUA,EAI7D,MAAOiV,IAGTC,EAAW,SAASrc,GAGhB3C,KAAK2G,EAAwBhE,KAC5B3C,KAAKuJ,OAASvJ,KAAK+E,EAAewE,QAGnChG,SAASlB,UAAUmB,MAAMzC,KACvBf,KAAK2G,EAAwBhE,GAC7B3C,KAAK0G,KACFzD,MAAMlC,KAAKmC,UAAW,KAK/B+b,EAAe,SAASpV,EAAKhI,GACvBuC,EAAYvC,SACP7B,MAAK8E,EAAe+E,GAE3B7J,KAAK8E,EAAe+E,GAAO7B,EAAYhI,KAAK8E,EAAe+E,OAAYhI,KAM7E5B,EAAMoC,UAAU6c,QAAUjf,EAAMoC,UAAUuN,eAC1C3P,EAAMoC,UAAU8c,kBAAoBlf,EAAMoC,UAAUiO,WAEpD7Q,EAAOD,QAAUS,IAEdc,KAAKf,KAAuB,mBAAXF,QAAyBA,OAAyB,mBAATC,MAAuBA,KAAyB,mBAAXF,QAAyBA,aACxHoC,EAAI,EAAEM,EAAI,EAAEkB,EAAI,EAAE2b,EAAI,EAAEC,EAAI,EAAEC,EAAI,IAAItd,GAAG,SAASd,EAAQzB,EAAOD,IACpE,SAAWM,GAOX,GAAIyf,GAAmBre,EAAQ,GAG3B+D,EACgB,mBAAXpF,QACHA,OACkB,mBAAXC,GAAyBA,EAAyB,mBAATC,MAAuBA,QACzEyf,EAASva,EAAQhF,MAEjBA,EAAQ,GAAIsf,EAQhBtf,GAAMwf,WAAa,WAEjB,MADAxa,GAAQhF,MAAQuf,EACTvf,GAGTA,EAAMgR,YAENxR,EAAOD,QAAUS,EAoCjBR,EAAOD,QAAQkgB,OAASH,IAErBxe,KAAKf,KAAuB,mBAAXF,QAAyBA,OAAyB,mBAATC,MAAuBA,KAAyB,mBAAXF,QAAyBA,aACxH6D,EAAI,IAAID,GAAG,SAASvC,EAAQzB,EAAOD,IACtC,SAAWM,GAQX,QAAS2H,GAASkY,GAChB,MAAuB,gBAATA,IAA8B,OAATA,EAKrC,QAASnY,GAAQsC,GACf,UAAWW,SAAS1J,KAAK+I,IACvB,IAAK,iBACH,OAAO,CACT,KAAK,qBACH,OAAO,CACT,KAAK,wBACH,OAAO,CACT,SACE,MAAOA,aAAiBlJ,QAI9B,QAAS+G,GAAamC,GACpB,MAAO8V,MAAoD,2BAAzBnV,SAAS1J,KAAK+I,GAGlD,QAAS1F,GAAYub,GACnB,MAAgB,UAATA,EAGT,QAAS5b,GAAW4b,GAClB,MAAuB,kBAATA,GAGhB,QAASjY,GAAciY,GACrB,MAAgD,oBAAzCrR,OAAOjM,UAAUoI,SAAS1J,KAAK4e,GAGxC,QAAS/X,GAAS+X,GAChB,MAAgD,oBAAzCrR,OAAOjM,UAAUoI,SAAS1J,KAAK4e,GAGxC,QAAS9X,GAAQ8X,GACf,MAAgD,mBAAzCrR,OAAOjM,UAAUoI,SAAS1J,KAAK4e,GAGxC,QAAS7X,GAAc6X,GACrB,IAAKjY,EAAciY,GAAO,OAAO,CAEjC,KAAK,GAAI9M,KAAK8M,GACZ,GAAIA,EAAK9K,eAAehC,GACtB,OAAO,CAGX,QAAO,EAGT,QAAS+M,KACP,IAEE,MADA,IAAIC,YAAW,KACR,EACP,MAAO3f,GACP,OAAO,GAIX,QAAS0I,KACP,KAAM,SAAW3D,IAAU,OAAO,CAElC,KAIE,MAHA,IAAI6a,SACJ,GAAIjJ,SAAQ,IACZ,GAAIkJ,WACG,EACP,MAAO7f,GACP,OAAO,GAQX,QAASoG,KACP,IAAKsC,IAAiB,OAAO,CAE7B,KAKE,MAHA,IAAIiO,SAAQ,cACVxQ,eAAgB,YAEX,EACP,MAAOnG,GACP,OAAO,GAIX,QAAS8f,KACP,MAAwC,kBAA1BC,uBAGhB,QAASC,GAAgBtd,GACvB,QAAS4N,GAAanN,EAAMS,GAC1B,GAAIqc,GAAiBvd,EAASS,IAASA,CACvC,OAAIS,GACKA,EAASqc,IAAmBA,EAE9BA,EAGT,MAAO3P,GAGT,QAASzI,GAAKqH,EAAKxM,GACjB,GAAIjC,GAAG8V,CAEP,IAAIrS,EAAYgL,EAAIpO,QAClB,IAAKL,IAAKyO,GACJjH,EAAOiH,EAAKzO,IACdiC,EAAS7B,KAAK,KAAMJ,EAAGyO,EAAIzO,QAK/B,IADA8V,EAAIrH,EAAIpO,OAEN,IAAKL,EAAI,EAAGA,EAAI8V,EAAG9V,IACjBiC,EAAS7B,KAAK,KAAMJ,EAAGyO,EAAIzO,IAMnC,QAASqH,GAAYoY,EAAMC,GACzB,MAAKA,IAGLtY,EAAKsY,EAAM,SAASxW,EAAKC,GACvBsW,EAAKvW,GAAOC,IAEPsW,GALEA,EAgBX,QAASlY,GAAakH,GACpB,QAAKd,OAAOgS,UAGLhS,OAAOgS,SAASlR,GAGzB,QAASnH,GAASwQ,EAAKtO,GACrB,GAAmB,gBAARA,GACT,KAAM,IAAIvJ,OAAM,yDAElB,OAAmB,gBAAR6X,IAA4B,IAARtO,EACtBsO,EAEFA,EAAIzX,QAAUmJ,EAAMsO,EAAMA,EAAI9M,OAAO,EAAGxB,GAAO,IAUxD,QAAShC,GAAOoY,EAAQ1W,GACtB,MAAOyE,QAAOjM,UAAUwS,eAAe9T,KAAKwf,EAAQ1W,GAGtD,QAASzB,GAAWoY,GAQlB,IALA,GAGEC,GAHEC,KACF/f,EAAI,EACJggB,EAAMH,EAASxf,OAGVL,EAAIggB,EAAKhgB,IACd8f,EAAUD,EAAS7f,GACfiH,EAAS6Y,GAGXC,EAAQ1W,KAAKyW,EAAQjC,QAAQ,8BAA+B,SACnDiC,GAAWA,EAAQG,QAE5BF,EAAQ1W,KAAKyW,EAAQG,OAIzB,OAAO,IAAIC,QAAOH,EAAQI,KAAK,KAAM,KAGvC,QAASzY,GAAU9H,GACjB,GAAIwgB,KAIJ,OAHAhZ,GAAKxH,EAAG,SAASsJ,EAAKC,GACpBiX,EAAM/W,KAAKsH,mBAAmBzH,GAAO,IAAMyH,mBAAmBxH,MAEzDiX,EAAMD,KAAK,KAMpB,QAASpY,GAASoG,GAChB,GAAmB,gBAARA,GAAkB,QAC7B,IAAIkS,GAAQlS,EAAIkS,MAAM,kEAGlBC,EAAQD,EAAM,IAAM,GACpBE,EAAWF,EAAM,IAAM,EAC3B,QACEjN,SAAUiN,EAAM,GAChBhN,KAAMgN,EAAM,GACZvV,KAAMuV,EAAM,GACZ/M,SAAU+M,EAAM,GAAKC,EAAQC,GAGjC,QAAS5Y,KACP,GAAI6Y,GAASlc,EAAQkc,QAAUlc,EAAQmc,QAEvC,KAAKhd,EAAY+c,IAAWA,EAAOE,gBAAiB,CAGlD,GAAIC,GAAM,GAAIC,aAAY,EAC1BJ,GAAOE,gBAAgBC,GAGvBA,EAAI,GAAe,KAATA,EAAI,GAAc,MAE5BA,EAAI,GAAe,MAATA,EAAI,GAAe,KAE7B,IAAIE,GAAM,SAASC,GAEjB,IADA,GAAIC,GAAID,EAAIhX,SAAS,IACdiX,EAAE1gB,OAAS,GAChB0gB,EAAI,IAAMA,CAEZ,OAAOA,GAGT,OACEF,GAAIF,EAAI,IACRE,EAAIF,EAAI,IACRE,EAAIF,EAAI,IACRE,EAAIF,EAAI,IACRE,EAAIF,EAAI,IACRE,EAAIF,EAAI,IACRE,EAAIF,EAAI,IACRE,EAAIF,EAAI,IAIV,MAAO,mCAAmC9C,QAAQ,QAAS,SAASmD,GAClE,GAAIthB,GAAqB,GAAhB6J,KAAKuS,SAAiB,EAC7BiF,EAAU,MAANC,EAAYthB,EAAS,EAAJA,EAAW,CAClC,OAAOqhB,GAAEjX,SAAS,MAYxB,QAASlC,GAAiBqZ,GAWxB,IATA,GAOEC,GAPEC,EAAsB,EACxBC,EAAiB,GACjBC,KACAC,EAAS,EACTtB,EAAM,EACNuB,EAAY,MACZC,EAAYD,EAAUlhB,OAGjB4gB,GAAQK,IAAWH,IACxBD,EAAUO,EAAoBR,KAMhB,SAAZC,GACCI,EAAS,GAAKtB,EAAMqB,EAAIhhB,OAASmhB,EAAYN,EAAQ7gB,QAAU+gB,KAKlEC,EAAIhY,KAAK6X,GAETlB,GAAOkB,EAAQ7gB,OACf4gB,EAAOA,EAAKS,UAGd,OAAOL,GAAI/S,UAAU6R,KAAKoB,GAS5B,QAASE,GAAoBR,GAC3B,GACEU,GACAC,EACA1Y,EACA2Y,EACA7hB,EALEqhB,IAOJ,KAAKJ,IAASA,EAAKxO,QACjB,MAAO,EAST,IANA4O,EAAIhY,KAAK4X,EAAKxO,QAAQR,eAClBgP,EAAKzc,IACP6c,EAAIhY,KAAK,IAAM4X,EAAKzc,IAGtBmd,EAAYV,EAAKU,UACbA,GAAa1a,EAAS0a,GAExB,IADAC,EAAUD,EAAUpZ,MAAM,OACrBvI,EAAI,EAAGA,EAAI4hB,EAAQvhB,OAAQL,IAC9BqhB,EAAIhY,KAAK,IAAMuY,EAAQ5hB,GAG3B,IAAI8hB,IAAiB,OAAQ,OAAQ,QAAS,MAC9C,KAAK9hB,EAAI,EAAGA,EAAI8hB,EAAczhB,OAAQL,IACpCkJ,EAAM4Y,EAAc9hB,GACpB6hB,EAAOZ,EAAKc,aAAa7Y,GACrB2Y,GACFR,EAAIhY,KAAK,IAAMH,EAAM,KAAO2Y,EAAO,KAGvC,OAAOR,GAAIlB,KAAK,IAMlB,QAAS6B,GAAgBliB,EAAGmiB,GAC1B,WAAYniB,IAAMmiB,GAMpB,QAASC,GAAgBpiB,EAAGmiB,GAC1B,MAAOxe,GAAY3D,IAAM2D,EAAYwe,GAMvC,QAASpa,GAAgB0F,EAAK4U,GAC5B,OAAIH,EAAgBzU,EAAK4U,KAEzB5U,EAAMA,EAAIkM,OAAO,GACjB0I,EAAMA,EAAI1I,OAAO,GAEblM,EAAIoH,OAASwN,EAAIxN,MAAQpH,EAAIpE,QAAUgZ,EAAIhZ,SAG3C+Y,EAAgB3U,EAAIL,WAAYiV,EAAIjV,aAEjCpF,EAAiByF,EAAIL,WAAYiV,EAAIjV,cAM9C,QAASpF,GAAiBsa,EAAQC,GAChC,GAAIL,EAAgBI,EAAQC,GAAS,OAAO,CAE5C,IAAIC,GAAUF,EAAOhU,OACjBmU,EAAUF,EAAOjU,MAGrB,IAAIkU,EAAQjiB,SAAWkiB,EAAQliB,OAAQ,OAAO,CAI9C,KAAK,GADDP,GAAGmiB,EACEjiB,EAAI,EAAGA,EAAIsiB,EAAQjiB,OAAQL,IAGlC,GAFAF,EAAIwiB,EAAQtiB,GACZiiB,EAAIM,EAAQviB,GAEVF,EAAEmZ,WAAagJ,EAAEhJ,UACjBnZ,EAAE2Y,SAAWwJ,EAAExJ,QACf3Y,EAAEqZ,QAAU8I,EAAE9I,OACdrZ,EAAE,cAAgBmiB,EAAE,YAEpB,OAAO,CAEX,QAAO,EAUT,QAASja,GAAKyG,EAAKhN,EAAM+gB,EAAaC,GACpC,GAAW,MAAPhU,EAAJ,CACA,GAAImF,GAAOnF,EAAIhN,EACfgN,GAAIhN,GAAQ+gB,EAAY5O,GACxBnF,EAAIhN,GAAMqK,GAAY,EACtB2C,EAAIhN,GAAMwK,EAAW2H,EACjB6O,GACFA,EAAMpZ,MAAMoF,EAAKhN,EAAMmS,KAU3B,QAASnR,GAASigB,EAAOC,GACvB,IAAKzb,EAAQwb,GAAQ,MAAO,EAI5B,KAAK,GAFDE,MAEK5iB,EAAI,EAAGA,EAAI0iB,EAAMriB,OAAQL,IAChC,IACE4iB,EAAOvZ,KAAKwZ,OAAOH,EAAM1iB,KACzB,MAAOT,GACPqjB,EAAOvZ,KAAK,gCAIhB,MAAOuZ,GAAOzC,KAAKwC,GASrB,QAASG,GAAW3Z,GAClB,QAAS4Z,UAAU5Z,GAAOZ,MAAM,SAASlI,OAG3C,QAAS2iB,GAAS7Z,GAChB,MAAO2Z,GAAWxf,KAAKC,UAAU4F,IAGnC,QAAS8Z,GAAe9Z,GACtB,GAAqB,gBAAVA,GAAoB,CAC7B,GAAI+Z,GAAY,EAChB,OAAO5b,GAAS6B,EAAO+Z,GAClB,GACY,gBAAV/Z,IACU,iBAAVA,IACU,mBAAVA,GAEP,MAAOA,EAGT,IAAIwL,GAAOhH,OAAOjM,UAAUoI,SAAS1J,KAAK+I,EAG1C,OAAa,oBAATwL,EAAmC,WAC1B,mBAATA,EAAkC,UACzB,sBAATA,EACKxL,EAAM1H,KAAO,cAAgB0H,EAAM1H,KAAO,IAAM,aAElD0H,EAGT,QAASga,GAAgBha,EAAOia,GAC9B,MAAc,KAAVA,EAAoBH,EAAe9Z,GAEnCpC,EAAcoC,GACTwE,OAAOC,KAAKzE,GAAOka,OAAO,SAASC,EAAKpa,GAE7C,MADAoa,GAAIpa,GAAOia,EAAgBha,EAAMD,GAAMka,EAAQ,GACxCE,OAEAxP,MAAM5M,QAAQiC,GAChBA,EAAMoa,IAAI,SAASC,GACxB,MAAOL,GAAgBK,EAAKJ,EAAQ,KAIjCH,EAAe9Z,GAGxB,QAAShB,GAAmB6E,EAAIoW,EAAOK,GACrC,IAAK1c,EAAciG,GAAK,MAAOA,EAE/BoW,GAAyB,gBAAVA,GAAqBM,EAAgCN,EACpEK,EAA2B,gBAAVL,GAAqBO,EAA+BF,CAErE,IAAIG,GAAaT,EAAgBnW,EAAIoW,EAErC,OAAIJ,GAASzf,EAAUqgB,IAAeH,EAC7Btb,EAAmB6E,EAAIoW,EAAQ,GAGjCQ,EAGT,QAAS1b,GAAwB0F,EAAMsV,GACrC,GAAoB,gBAATtV,IAAqC,gBAATA,GAAmB,MAAOA,GAAK9D,UACtE,KAAKgK,MAAM5M,QAAQ0G,GAAO,MAAO,EAKjC,IAHAA,EAAOA,EAAKiW,OAAO,SAAS3a,GAC1B,MAAsB,gBAARA,KAEI,IAAhB0E,EAAKvN,OAAc,MAAO,sBAG9B,IADA6iB,EAAiC,gBAAdA,GAAyBY,EAA4BZ,EACpEtV,EAAK,GAAGvN,QAAU6iB,EAAW,MAAOtV,GAAK,EAE7C,KAAK,GAAImW,GAAWnW,EAAKvN,OAAQ0jB,EAAW,EAAGA,IAAY,CACzD,GAAIH,GAAahW,EAAKtL,MAAM,EAAGyhB,GAAU5D,KAAK,KAC9C,MAAIyD,EAAWvjB,OAAS6iB,GACxB,MAAIa,KAAanW,EAAKvN,OAAeujB,EAC9BA,EAAa,IAGtB,MAAO,GAGT,QAASxb,GAASsa,EAAOpd,GAcvB,QAAS0e,GAAeC,GACtB,MAAI/c,GAAQ+c,GACHA,EAAYV,IAAI,SAASC,GAC9B,MAAOQ,GAAeR,KAItBzc,EAAckd,GACTtW,OAAOC,KAAKqW,GAAaZ,OAAO,SAASC,EAAKY,GAMnD,MAJEZ,GAAIY,GADFC,EAAenW,KAAKkW,GACbE,EAEAJ,EAAeC,EAAYC,IAE/BZ,OAIJW,EA/BT,IAAK/c,EAAQ5B,IAAkB4B,EAAQ5B,IAAyC,IAAxBA,EAAajF,OACnE,MAAOqiB,EAET,IAEI2B,GAFAF,EAAiB1c,EAAWnC,GAC5B8e,EAAe,UAGnB,KACEC,EAAY/gB,KAAKkM,MAAMjM,EAAUmf,IACjC,MAAO4B,GACP,MAAO5B,GAwBT,MAAOsB,GAAeK,GAlkBxB,GAAI9gB,GAAYhD,EAAQ,GAEpB+D,EACgB,mBAAXpF,QACHA,OACkB,mBAAXC,GAAyBA,EAAyB,mBAATC,MAAuBA,QAgczEskB,EAAgC,EAEhCC,EAA+B,MAC/BG,EAA4B,EA6HhChlB,GAAOD,SACLiI,SAAUA,EACVD,QAASA,EACTG,aAAcA,EACdvD,YAAaA,EACbL,WAAYA,EACZ2D,cAAeA,EACfE,SAAUA,EACVC,QAASA,EACTC,cAAeA,EACf8X,mBAAoBA,EACpBhX,cAAeA,EACftC,uBAAwBA,EACxB0Z,8BAA+BA,EAC/BE,gBAAiBA,EACjBnY,KAAMA,EACNC,YAAaA,EACbC,SAAUA,EACVC,aAAcA,EACdC,OAAQA,EACRC,WAAYA,EACZC,UAAWA,EACXC,MAAOA,EACPC,iBAAkBA,EAClB6Z,oBAAqBA,EACrB5Z,gBAAiBA,EACjBC,iBAAkBA,EAClBC,SAAUA,EACVC,KAAMA,EACNvF,SAAUA,EACV0F,mBAAoBA,EACpBD,wBAAyBA,EACzBE,SAAUA,KAGThI,KAAKf,KAAuB,mBAAXF,QAAyBA,OAAyB,mBAATC,MAAuBA,KAAyB,mBAAXF,QAAyBA,aACxHwf,EAAI,IAAID,GAAG,SAASle,EAAQzB,EAAOD,IACtC,SAAWM,GA+BX,QAASolB,KACP,MAAwB,mBAAb9b,WAAiD,MAArBA,SAASlC,SAAyB,GAElEkC,SAASlC,SAASE,KAjC3B,GAAI5E,GAAQtB,EAAQ,GAYhBoG,GACF7B,qBAAqB,EACrB8D,OAAO,GAILtE,EACgB,mBAAXpF,QACHA,OACkB,mBAAXC,GAAyBA,EAAyB,mBAATC,MAAuBA,QAGzEolB,KAAYliB,MACZmiB,EAAmB,IAGnBC,EAAiB,yGA+CrB/d,GAASwD,OAAS,WAUhB,QAASC,GAAUua,GACjBC,IACAC,EAASxb,KAAKsb,GAOhB,QAASG,GAAYH,GACnB,IAAK,GAAI3kB,GAAI6kB,EAASxkB,OAAS,EAAGL,GAAK,IAAKA,EACtC6kB,EAAS7kB,KAAO2kB,GAClBE,EAASE,OAAO/kB,EAAG,GAQzB,QAASglB,KACPC,IACAJ,KAOF,QAASK,GAAe9X,EAAO+X,GAC7B,GAAI3L,GAAY,IAChB,KAAI2L,GAAkBxe,EAAS7B,oBAA/B,CAGA,IAAK,GAAI9E,KAAK6kB,GACZ,GAAIA,EAAS3Q,eAAelU,GAC1B,IACE6kB,EAAS7kB,GAAG6C,MAAM,MAAOuK,GAAOwK,OAAO4M,EAAOpkB,KAAKmC,UAAW,KAC9D,MAAO6iB,GACP5L,EAAY4L,EAKlB,GAAI5L,EACF,KAAMA,IAiBV,QAAS6L,GAAsB7iB,EAAK2L,EAAKmX,EAAQC,EAAOvY,GACtD,GAAII,GAAQ,KAERoM,EAAY3X,EAAMmF,aAAagG,GAAMA,EAAGpM,MAAQoM,EAEhDxL,EAAUK,EAAMmF,aAAaxE,GAAOA,EAAIhB,QAAUgB,CAEtD,IAAIgjB,EACF7e,EAAS0G,kBAAkBoY,oCACzBD,EACArX,EACAmX,EACA9jB,GAEFkkB,QACK,IAAIlM,GAAa3X,EAAMgF,QAAQ2S,GAMpCpM,EAAQzG,EAAS0G,kBAAkBmM,GACnC0L,EAAe9X,GAAO,OACjB,CACL,GAOIuY,GAPApf,GACF4H,IAAKA,EACL+K,KAAMoM,EACNlM,OAAQmM,GAGN9jB,EAAO+J,MAGX,IAAkC,uBAA3B1B,SAAS1J,KAAKoB,GAAgC,CACnD,GAAImkB,GAASnkB,EAAQ6e,MAAMqE,EACvBiB,KACFlkB,EAAOkkB,EAAO,GACdnkB,EAAUmkB,EAAO,IAIrBpf,EAASgF,KAAOkZ,EAEhBrX,GACE3L,KAAMA,EACND,QAASA,EACT2M,IAAKoW,IACLnX,OAAQ7G,IAEV2e,EAAe9X,GAAO,GAGxB,QAAIwY,GACKA,EAAmB/iB,MAAMxD,KAAMkD,WAM1C,QAASqiB,KACHiB,IAGJD,EAAqBthB,EAAQ3D,QAC7B2D,EAAQ3D,QAAU0kB,EAClBQ,GAA2B,GAG7B,QAASZ,KACFY,IAGLvhB,EAAQ3D,QAAUilB,EAClBC,GAA2B,EAC3BD,EAAqBpa,QAGvB,QAASka,KACP,GAAII,GAAsBN,EACxBO,EAAYC,CACdA,GAAW,KACXR,EAAqB,KACrBrV,EAAgB,KAChB+U,EAAeriB,MAAM,MAAOijB,GAAqB,GAAOlO,OAAOmO,IAUjE,QAAS5b,GAAO6C,EAAIiZ,GAClB,GAAI5jB,GAAOmiB,EAAOpkB,KAAKmC,UAAW,EAClC,IAAIijB,EAAoB,CACtB,GAAIrV,IAAkBnD,EACpB,MAEA0Y,KAIJ,GAAItY,GAAQzG,EAAS0G,kBAAkBL,EAevC,IAdAwY,EAAqBpY,EACrB+C,EAAgBnD,EAChBgZ,EAAW3jB,EAMXkP,WAAW,WACLpB,IAAkBnD,GACpB0Y,KAEDtY,EAAM8Y,WAAa,IAAO,GAEzBD,KAAY,EACd,KAAMjZ,GA9LV,GA0DI4Y,GAAoBC,EA1DpBhB,KACFmB,EAAW,KACX7V,EAAgB,KAChBqV,EAAqB,IAkMvB,OAHArb,GAAOC,UAAYA,EACnBD,EAAO2a,YAAcA,EACrB3a,EAAO+B,UAAY8Y,EACZ7a,KAsDTxD,EAAS0G,kBAAoB,WA4C3B,QAAS8Y,GAA+BnZ,GACtC,GAAwB,mBAAbA,GAAGI,OAA0BJ,EAAGI,MAA3C,CAiBA,IAAK,GALDgZ,GACAC,EACAC,EAZA/P,EAAS,0IACTgQ,EAAQ,wHAGRC,EAAQ,6JAERC,EAAY,gDACZC,EAAa,gCACbC,EAAQ3Z,EAAGI,MAAM7E,MAAM,MACvB6E,KAMKpN,GAFO,sBAAsBgY,KAAKhL,EAAGxL,SAEjC,GAAGsU,EAAI6Q,EAAMtmB,OAAQL,EAAI8V,IAAK9V,EAAG,CAC5C,GAAKqmB,EAAQ9P,EAAOyB,KAAK2O,EAAM3mB,IAAM,CACnC,GAAI4mB,GAAWP,EAAM,IAAqC,IAA/BA,EAAM,GAAG/Q,QAAQ,UACxCuR,EAASR,EAAM,IAAmC,IAA7BA,EAAM,GAAG/Q,QAAQ,OACtCuR,KAAWT,EAAWM,EAAW1O,KAAKqO,EAAM,OAE9CA,EAAM,GAAKD,EAAS,GACpBC,EAAM,GAAKD,EAAS,GACpBC,EAAM,GAAKD,EAAS,IAEtBE,GACEnY,IAAMyY,EAAsB,KAAXP,EAAM,GACvB9a,KAAM8a,EAAM,IAAM5B,EAClBpiB,KAAMukB,GAAYP,EAAM,OACxBnN,KAAMmN,EAAM,IAAMA,EAAM,GAAK,KAC7BjN,OAAQiN,EAAM,IAAMA,EAAM,GAAK,UAE5B,IAAKA,EAAQE,EAAMvO,KAAK2O,EAAM3mB,IACnCsmB,GACEnY,IAAKkY,EAAM,GACX9a,KAAM8a,EAAM,IAAM5B,EAClBpiB,QACA6W,MAAOmN,EAAM,GACbjN,OAAQiN,EAAM,IAAMA,EAAM,GAAK,UAE5B,CAAA,KAAKA,EAAQG,EAAMxO,KAAK2O,EAAM3mB,KAsBnC,QArBA,IAAI6mB,GAASR,EAAM,IAAMA,EAAM,GAAG/Q,QAAQ,aACtCuR,KAAWT,EAAWK,EAAUzO,KAAKqO,EAAM,MAE7CA,EAAM,GAAKD,EAAS,GACpBC,EAAM,GAAKD,EAAS,GACpBC,EAAM,GAAK,MACI,IAANrmB,GAAYqmB,EAAM,IAAiC,mBAApBrZ,GAAG8Z,eAK3C1Z,EAAM,GAAGgM,OAASpM,EAAG8Z,aAAe,GAEtCR,GACEnY,IAAKkY,EAAM,GACX9a,KAAM8a,EAAM,IAAM5B,EAClBpiB,KAAMgkB,EAAM,GAAKA,EAAM,GAAG9d,MAAM,QAChC2Q,KAAMmN,EAAM,IAAMA,EAAM,GAAK,KAC7BjN,OAAQiN,EAAM,IAAMA,EAAM,GAAK,OAM9BC,EAAQ/a,MAAQ+a,EAAQpN,OAC3BoN,EAAQ/a,KAAOkZ,GAGjBrX,EAAM/D,KAAKid,GAGb,MAAKlZ,GAAM/M,QAKToB,KAAMuL,EAAGvL,KACTD,QAASwL,EAAGxL,QACZ2M,IAAKoW,IACLnX,MAAOA,GAPA,MAwBX,QAASqY,GAAoCnN,EAAWnK,EAAKmX,EAAQ9jB,GACnE,GAAIulB,IACF5Y,IAAKA,EACL+K,KAAMoM,EAGR,IAAIyB,EAAQ5Y,KAAO4Y,EAAQ7N,KAAM,CAO/B,GANAZ,EAAU4N,YAAa,EAElBa,EAAQxb,OACXwb,EAAQxb,KAAOkZ,GAGbnM,EAAUlL,MAAM/M,OAAS,GACvBiY,EAAUlL,MAAM,GAAGe,MAAQ4Y,EAAQ5Y,IAAK,CAC1C,GAAImK,EAAUlL,MAAM,GAAG8L,OAAS6N,EAAQ7N,KACtC,OAAO,CACF,KACJZ,EAAUlL,MAAM,GAAG8L,MACpBZ,EAAUlL,MAAM,GAAG7B,OAASwb,EAAQxb,KAGpC,MADA+M,GAAUlL,MAAM,GAAG8L,KAAO6N,EAAQ7N,MAC3B,EAOb,MAFAZ,GAAUlL,MAAM4Z,QAAQD,GACxBzO,EAAU2O,SAAU,GACb,EAKT,MAHE3O,GAAU4N,YAAa,GAGlB,EAYT,QAASgB,GAAsCla,EAAIoW,GASjD,IACE,GALAiD,GACAc,EALEC,EAAe,qEACjBha,KACAia,KACAC,GAAY,EAMRC,EAAOL,EAAsCM,OACjDD,IAASD,EACTC,EAAOA,EAAKC,OAEZ,GAAID,IAASla,GAAqBka,IAAS5gB,EAASwD,OAApD,CAkBA,GAbAgd,GACEhZ,IAAK,KACL5C,KAAMkZ,EACNvL,KAAM,KACNE,OAAQ,MAGNmO,EAAK9lB,KACP0lB,EAAK5b,KAAOgc,EAAK9lB,MACP4kB,EAAQe,EAAapP,KAAKuP,EAAKzd,eACzCqd,EAAK5b,KAAO8a,EAAM,IAGK,mBAAdc,GAAK5b,KACd,IACE4b,EAAK5b,KAAO8a,EAAM3D,MAAM+E,UAAU,EAAGpB,EAAM3D,MAAMpN,QAAQ,MACzD,MAAO/V,IAGP8nB,EAAM,GAAKE,GACbD,GAAY,EAEZD,EAAM,GAAKE,IAAQ,EAGrBna,EAAM/D,KAAK8d,GAGT/D,GAGFhW,EAAM2X,OAAO,EAAG3B,EAGlB,IAAIvU,IACFpN,KAAMuL,EAAGvL,KACTD,QAASwL,EAAGxL,QACZ2M,IAAKoW,IACLnX,MAAOA,EAQT,OANAqY,GACE5W,EACA7B,EAAG0a,WAAa1a,EAAG2a,SACnB3a,EAAGkM,MAAQlM,EAAG4a,WACd5a,EAAGxL,SAAWwL,EAAG6a,aAEZhZ,EAQT,QAASxB,GAAkBL,EAAIoW,GAC7B,GAAIhW,GAAQ,IACZgW,GAAiB,MAATA,EAAgB,GAAKA,CAE7B,KAEE,GADAhW,EAAQ+Y,EAA+BnZ,GAErC,MAAOI,GAET,MAAO7N,GACP,GAAIoH,EAASiC,MACX,KAAMrJ,GAIV,IAEE,GADA6N,EAAQ8Z,EAAsCla,EAAIoW,EAAQ,GAExD,MAAOhW,GAET,MAAO7N,GACP,GAAIoH,EAASiC,MACX,KAAMrJ,GAGV,OACEkC,KAAMuL,EAAGvL,KACTD,QAASwL,EAAGxL,QACZ2M,IAAKoW,KAOT,MAHAlX,GAAkBoY,oCAAsCA,EACxDpY,EAAkB8Y,+BAAiCA,EAE5C9Y,KAGTvO,EAAOD,QAAU8H,IAEdvG,KAAKf,KAAuB,mBAAXF,QAAyBA,OAAyB,mBAATC,MAAuBA,KAAyB,mBAAXF,QAAyBA,aACxH4D,EAAI,IAAI4b,GAAG,SAASne,EAAQzB,EAAOD,GAetC,QAASyW,GAAQwS,EAAUC,GACzB,IAAK,GAAI/nB,GAAI,EAAGA,EAAI8nB,EAASznB,SAAUL,EACrC,GAAI8nB,EAAS9nB,KAAO+nB,EAAQ,MAAO/nB,EAErC,UAGF,QAASuD,GAAUkL,EAAKuZ,EAAUC,EAAQC,GACxC,MAAO5kB,MAAKC,UAAUkL,EAAK0Z,EAAWH,EAAUE,GAAgBD,GAIlE,QAASG,GAAejf,GACtB,GAAImL,IAEFlH,MAAOjE,EAAMiE,MACb5L,QAAS2H,EAAM3H,QACfC,KAAM0H,EAAM1H,KAGd,KAAK,GAAIzB,KAAKmJ,GACRwE,OAAOjM,UAAUwS,eAAe9T,KAAK+I,EAAOnJ,KAC9CsU,EAAItU,GAAKmJ,EAAMnJ,GAInB,OAAOsU,GAGT,QAAS6T,GAAWH,EAAUE,GAC5B,GAAI9a,MACAQ,IAWJ,OATqB,OAAjBsa,IACFA,EAAgB,SAAShf,EAAKC,GAC5B,MAAIiE,GAAM,KAAOjE,EACR,eAEF,eAAiByE,EAAKtL,MAAM,EAAGgT,EAAQlI,EAAOjE,IAAQgX,KAAK,KAAO,MAItE,SAASjX,EAAKC,GACnB,GAAIiE,EAAM/M,OAAS,EAAG,CACpB,GAAIgoB,GAAU/S,EAAQlI,EAAO/N,OAC5BgpB,EAAUjb,EAAM2X,OAAOsD,EAAU,GAAKjb,EAAM/D,KAAKhK,OACjDgpB,EAAUza,EAAKmX,OAAOsD,EAASC,EAAAA,EAAUpf,GAAO0E,EAAKvE,KAAKH,IAEtDoM,EAAQlI,EAAOjE,KAClBA,EAAQ+e,EAAc9nB,KAAKf,KAAM6J,EAAKC,QAGxCiE,GAAM/D,KAAKF,EAGb,OAAmB,OAAZ6e,EACH7e,YAAiBlJ,OAAQmoB,EAAejf,GAASA,EACjD6e,EAAS5nB,KAAKf,KAAM6J,EAAKC,IA5DjCtK,EAAUC,EAAOD,QAAU0E;AAC3B1E,EAAQ0pB,aAAeJ,OA+DjBxJ,GAAG,SAASpe,EAAQzB,EAAOD,GAwBjC,QAAS2pB,GAAQC,EAAGjO,GAClB,GAAIkO,IAAW,MAAJD,IAAmB,MAAJjO,GACtBmO,GAAOF,GAAK,KAAOjO,GAAK,KAAOkO,GAAO,GAC1C,OAAQC,IAAO,GAAa,MAAND,EAMxB,QAASE,GAAc9H,EAAK+H,GAC1B,MAAQ/H,IAAO+H,EAAQ/H,IAAS,GAAK+H,EAMvC,QAASC,GAAOC,EAAGjpB,EAAGmiB,EAAGwG,EAAG9oB,EAAGH,GAC7B,MAAOgpB,GAAQI,EAAcJ,EAAQA,EAAQ1oB,EAAGipB,GAAIP,EAAQC,EAAGjpB,IAAKG,GAAIsiB,GAE1E,QAAS+G,GAAMlpB,EAAGmiB,EAAGjB,EAAGiI,EAAGR,EAAG9oB,EAAGH,GAC/B,MAAOspB,GAAQ7G,EAAIjB,GAAOiB,EAAIgH,EAAInpB,EAAGmiB,EAAGwG,EAAG9oB,EAAGH,GAEhD,QAAS0pB,GAAMppB,EAAGmiB,EAAGjB,EAAGiI,EAAGR,EAAG9oB,EAAGH,GAC/B,MAAOspB,GAAQ7G,EAAIgH,EAAMjI,GAAKiI,EAAInpB,EAAGmiB,EAAGwG,EAAG9oB,EAAGH,GAEhD,QAAS2pB,GAAMrpB,EAAGmiB,EAAGjB,EAAGiI,EAAGR,EAAG9oB,EAAGH,GAC/B,MAAOspB,GAAO7G,EAAIjB,EAAIiI,EAAGnpB,EAAGmiB,EAAGwG,EAAG9oB,EAAGH,GAEvC,QAAS4pB,GAAMtpB,EAAGmiB,EAAGjB,EAAGiI,EAAGR,EAAG9oB,EAAGH,GAC/B,MAAOspB,GAAO9H,GAAKiB,GAAKgH,GAAInpB,EAAGmiB,EAAGwG,EAAG9oB,EAAGH,GAM1C,QAAS6pB,GAAQZ,EAAGzI,GAElByI,EAAEzI,GAAO,IAAM,KAASA,EAAM,GAC9ByI,GAAKzI,EAAM,KAAQ,GAAM,GAAK,IAAMA,CAEpC,IAAIhgB,GACAspB,EACAC,EACAC,EACAC,EACA3pB,EAAI,WACJmiB,aACAjB,cACAiI,EAAI,SAER,KAAKjpB,EAAI,EAAGA,EAAIyoB,EAAEpoB,OAAQL,GAAK,GAC7BspB,EAAOxpB,EACPypB,EAAOtH,EACPuH,EAAOxI,EACPyI,EAAOR,EAEPnpB,EAAIkpB,EAAMlpB,EAAGmiB,EAAGjB,EAAGiI,EAAGR,EAAEzoB,GAAI,cAC5BipB,EAAID,EAAMC,EAAGnpB,EAAGmiB,EAAGjB,EAAGyH,EAAEzoB,EAAI,GAAI,eAChCghB,EAAIgI,EAAMhI,EAAGiI,EAAGnpB,EAAGmiB,EAAGwG,EAAEzoB,EAAI,GAAI,GAAI,WACpCiiB,EAAI+G,EAAM/G,EAAGjB,EAAGiI,EAAGnpB,EAAG2oB,EAAEzoB,EAAI,GAAI,gBAChCF,EAAIkpB,EAAMlpB,EAAGmiB,EAAGjB,EAAGiI,EAAGR,EAAEzoB,EAAI,GAAI,cAChCipB,EAAID,EAAMC,EAAGnpB,EAAGmiB,EAAGjB,EAAGyH,EAAEzoB,EAAI,GAAI,GAAI,YACpCghB,EAAIgI,EAAMhI,EAAGiI,EAAGnpB,EAAGmiB,EAAGwG,EAAEzoB,EAAI,GAAI,gBAChCiiB,EAAI+G,EAAM/G,EAAGjB,EAAGiI,EAAGnpB,EAAG2oB,EAAEzoB,EAAI,GAAI,cAChCF,EAAIkpB,EAAMlpB,EAAGmiB,EAAGjB,EAAGiI,EAAGR,EAAEzoB,EAAI,GAAI,EAAG,YACnCipB,EAAID,EAAMC,EAAGnpB,EAAGmiB,EAAGjB,EAAGyH,EAAEzoB,EAAI,GAAI,gBAChCghB,EAAIgI,EAAMhI,EAAGiI,EAAGnpB,EAAGmiB,EAAGwG,EAAEzoB,EAAI,IAAK,WACjCiiB,EAAI+G,EAAM/G,EAAGjB,EAAGiI,EAAGnpB,EAAG2oB,EAAEzoB,EAAI,IAAK,gBACjCF,EAAIkpB,EAAMlpB,EAAGmiB,EAAGjB,EAAGiI,EAAGR,EAAEzoB,EAAI,IAAK,EAAG,YACpCipB,EAAID,EAAMC,EAAGnpB,EAAGmiB,EAAGjB,EAAGyH,EAAEzoB,EAAI,IAAK,cACjCghB,EAAIgI,EAAMhI,EAAGiI,EAAGnpB,EAAGmiB,EAAGwG,EAAEzoB,EAAI,IAAK,gBACjCiiB,EAAI+G,EAAM/G,EAAGjB,EAAGiI,EAAGnpB,EAAG2oB,EAAEzoB,EAAI,IAAK,GAAI,YAErCF,EAAIopB,EAAMppB,EAAGmiB,EAAGjB,EAAGiI,EAAGR,EAAEzoB,EAAI,GAAI,cAChCipB,EAAIC,EAAMD,EAAGnpB,EAAGmiB,EAAGjB,EAAGyH,EAAEzoB,EAAI,GAAI,eAChCghB,EAAIkI,EAAMlI,EAAGiI,EAAGnpB,EAAGmiB,EAAGwG,EAAEzoB,EAAI,IAAK,GAAI,WACrCiiB,EAAIiH,EAAMjH,EAAGjB,EAAGiI,EAAGnpB,EAAG2oB,EAAEzoB,GAAI,eAC5BF,EAAIopB,EAAMppB,EAAGmiB,EAAGjB,EAAGiI,EAAGR,EAAEzoB,EAAI,GAAI,cAChCipB,EAAIC,EAAMD,EAAGnpB,EAAGmiB,EAAGjB,EAAGyH,EAAEzoB,EAAI,IAAK,EAAG,UACpCghB,EAAIkI,EAAMlI,EAAGiI,EAAGnpB,EAAGmiB,EAAGwG,EAAEzoB,EAAI,IAAK,eACjCiiB,EAAIiH,EAAMjH,EAAGjB,EAAGiI,EAAGnpB,EAAG2oB,EAAEzoB,EAAI,GAAI,eAChCF,EAAIopB,EAAMppB,EAAGmiB,EAAGjB,EAAGiI,EAAGR,EAAEzoB,EAAI,GAAI,EAAG,WACnCipB,EAAIC,EAAMD,EAAGnpB,EAAGmiB,EAAGjB,EAAGyH,EAAEzoB,EAAI,IAAK,eACjCghB,EAAIkI,EAAMlI,EAAGiI,EAAGnpB,EAAGmiB,EAAGwG,EAAEzoB,EAAI,GAAI,eAChCiiB,EAAIiH,EAAMjH,EAAGjB,EAAGiI,EAAGnpB,EAAG2oB,EAAEzoB,EAAI,GAAI,GAAI,YACpCF,EAAIopB,EAAMppB,EAAGmiB,EAAGjB,EAAGiI,EAAGR,EAAEzoB,EAAI,IAAK,eACjCipB,EAAIC,EAAMD,EAAGnpB,EAAGmiB,EAAGjB,EAAGyH,EAAEzoB,EAAI,GAAI,aAChCghB,EAAIkI,EAAMlI,EAAGiI,EAAGnpB,EAAGmiB,EAAGwG,EAAEzoB,EAAI,GAAI,GAAI,YACpCiiB,EAAIiH,EAAMjH,EAAGjB,EAAGiI,EAAGnpB,EAAG2oB,EAAEzoB,EAAI,IAAK,gBAEjCF,EAAIqpB,EAAMrpB,EAAGmiB,EAAGjB,EAAGiI,EAAGR,EAAEzoB,EAAI,GAAI,WAChCipB,EAAIE,EAAMF,EAAGnpB,EAAGmiB,EAAGjB,EAAGyH,EAAEzoB,EAAI,GAAI,gBAChCghB,EAAImI,EAAMnI,EAAGiI,EAAGnpB,EAAGmiB,EAAGwG,EAAEzoB,EAAI,IAAK,GAAI,YACrCiiB,EAAIkH,EAAMlH,EAAGjB,EAAGiI,EAAGnpB,EAAG2oB,EAAEzoB,EAAI,IAAK,cACjCF,EAAIqpB,EAAMrpB,EAAGmiB,EAAGjB,EAAGiI,EAAGR,EAAEzoB,EAAI,GAAI,eAChCipB,EAAIE,EAAMF,EAAGnpB,EAAGmiB,EAAGjB,EAAGyH,EAAEzoB,EAAI,GAAI,GAAI,YACpCghB,EAAImI,EAAMnI,EAAGiI,EAAGnpB,EAAGmiB,EAAGwG,EAAEzoB,EAAI,GAAI,eAChCiiB,EAAIkH,EAAMlH,EAAGjB,EAAGiI,EAAGnpB,EAAG2oB,EAAEzoB,EAAI,IAAK,gBACjCF,EAAIqpB,EAAMrpB,EAAGmiB,EAAGjB,EAAGiI,EAAGR,EAAEzoB,EAAI,IAAK,EAAG,WACpCipB,EAAIE,EAAMF,EAAGnpB,EAAGmiB,EAAGjB,EAAGyH,EAAEzoB,GAAI,eAC5BghB,EAAImI,EAAMnI,EAAGiI,EAAGnpB,EAAGmiB,EAAGwG,EAAEzoB,EAAI,GAAI,eAChCiiB,EAAIkH,EAAMlH,EAAGjB,EAAGiI,EAAGnpB,EAAG2oB,EAAEzoB,EAAI,GAAI,GAAI,UACpCF,EAAIqpB,EAAMrpB,EAAGmiB,EAAGjB,EAAGiI,EAAGR,EAAEzoB,EAAI,GAAI,cAChCipB,EAAIE,EAAMF,EAAGnpB,EAAGmiB,EAAGjB,EAAGyH,EAAEzoB,EAAI,IAAK,eACjCghB,EAAImI,EAAMnI,EAAGiI,EAAGnpB,EAAGmiB,EAAGwG,EAAEzoB,EAAI,IAAK,GAAI,WACrCiiB,EAAIkH,EAAMlH,EAAGjB,EAAGiI,EAAGnpB,EAAG2oB,EAAEzoB,EAAI,GAAI,eAEhCF,EAAIspB,EAAMtpB,EAAGmiB,EAAGjB,EAAGiI,EAAGR,EAAEzoB,GAAI,cAC5BipB,EAAIG,EAAMH,EAAGnpB,EAAGmiB,EAAGjB,EAAGyH,EAAEzoB,EAAI,GAAI,GAAI,YACpCghB,EAAIoI,EAAMpI,EAAGiI,EAAGnpB,EAAGmiB,EAAGwG,EAAEzoB,EAAI,IAAK,gBACjCiiB,EAAImH,EAAMnH,EAAGjB,EAAGiI,EAAGnpB,EAAG2oB,EAAEzoB,EAAI,GAAI,cAChCF,EAAIspB,EAAMtpB,EAAGmiB,EAAGjB,EAAGiI,EAAGR,EAAEzoB,EAAI,IAAK,EAAG,YACpCipB,EAAIG,EAAMH,EAAGnpB,EAAGmiB,EAAGjB,EAAGyH,EAAEzoB,EAAI,GAAI,gBAChCghB,EAAIoI,EAAMpI,EAAGiI,EAAGnpB,EAAGmiB,EAAGwG,EAAEzoB,EAAI,IAAK,aACjCiiB,EAAImH,EAAMnH,EAAGjB,EAAGiI,EAAGnpB,EAAG2oB,EAAEzoB,EAAI,GAAI,gBAChCF,EAAIspB,EAAMtpB,EAAGmiB,EAAGjB,EAAGiI,EAAGR,EAAEzoB,EAAI,GAAI,EAAG,YACnCipB,EAAIG,EAAMH,EAAGnpB,EAAGmiB,EAAGjB,EAAGyH,EAAEzoB,EAAI,IAAK,cACjCghB,EAAIoI,EAAMpI,EAAGiI,EAAGnpB,EAAGmiB,EAAGwG,EAAEzoB,EAAI,GAAI,gBAChCiiB,EAAImH,EAAMnH,EAAGjB,EAAGiI,EAAGnpB,EAAG2oB,EAAEzoB,EAAI,IAAK,GAAI,YACrCF,EAAIspB,EAAMtpB,EAAGmiB,EAAGjB,EAAGiI,EAAGR,EAAEzoB,EAAI,GAAI,cAChCipB,EAAIG,EAAMH,EAAGnpB,EAAGmiB,EAAGjB,EAAGyH,EAAEzoB,EAAI,IAAK,gBACjCghB,EAAIoI,EAAMpI,EAAGiI,EAAGnpB,EAAGmiB,EAAGwG,EAAEzoB,EAAI,GAAI,GAAI,WACpCiiB,EAAImH,EAAMnH,EAAGjB,EAAGiI,EAAGnpB,EAAG2oB,EAAEzoB,EAAI,GAAI,eAEhCF,EAAI0oB,EAAQ1oB,EAAGwpB,GACfrH,EAAIuG,EAAQvG,EAAGsH,GACfvI,EAAIwH,EAAQxH,EAAGwI,GACfP,EAAIT,EAAQS,EAAGQ,EAEjB,QAAQ3pB,EAAGmiB,EAAGjB,EAAGiI,GAMnB,QAASS,GAAUhH,GACjB,GAAI1iB,GACA4iB,EAAS,GACT+G,EAA0B,GAAfjH,EAAMriB,MACrB,KAAKL,EAAI,EAAGA,EAAI2pB,EAAU3pB,GAAK,EAC7B4iB,GAAUC,OAAO+G,aAAclH,EAAM1iB,GAAK,KAAQA,EAAI,GAAO,IAE/D,OAAO4iB,GAOT,QAASiH,GAAUnH,GACjB,GAAI1iB,GACA4iB,IAEJ,KADAA,GAAQF,EAAMriB,QAAU,GAAK,GAAKmL,OAC7BxL,EAAI,EAAGA,EAAI4iB,EAAOviB,OAAQL,GAAK,EAClC4iB,EAAO5iB,GAAK,CAEd,IAAI8pB,GAAyB,EAAfpH,EAAMriB,MACpB,KAAKL,EAAI,EAAGA,EAAI8pB,EAAS9pB,GAAK,EAC5B4iB,EAAO5iB,GAAK,KAAiC,IAA1B0iB,EAAMqH,WAAW/pB,EAAI,KAAeA,EAAI,EAE7D,OAAO4iB,GAMT,QAASoH,GAAQrqB,GACf,MAAO+pB,GAAUL,EAAQQ,EAAUlqB,GAAe,EAAXA,EAAEU,SAM3C,QAAS4pB,GAAY/gB,EAAKxG,GACxB,GAAI1C,GAIAme,EAHA+L,EAAOL,EAAU3gB,GACjBihB,KACAC,IAMJ,KAJAD,EAAK,IAAMC,EAAK,IAAM5e,OAClB0e,EAAK7pB,OAAS,KAChB6pB,EAAOb,EAAQa,EAAmB,EAAbhhB,EAAI7I,SAEtBL,EAAI,EAAGA,EAAI,GAAIA,GAAK,EACvBmqB,EAAKnqB,GAAe,UAAVkqB,EAAKlqB,GACfoqB,EAAKpqB,GAAe,WAAVkqB,EAAKlqB,EAGjB,OADAme,GAAOkL,EAAQc,EAAKvS,OAAOiS,EAAUnnB,IAAQ,IAAoB,EAAdA,EAAKrC,QACjDqpB,EAAUL,EAAQe,EAAKxS,OAAOuG,GAAO,MAM9C,QAASkM,GAAS3H,GAChB,GAEI+F,GACAzoB,EAHAsqB,EAAS,mBACT1H,EAAS,EAGb,KAAK5iB,EAAI,EAAGA,EAAI0iB,EAAMriB,OAAQL,GAAK,EACjCyoB,EAAI/F,EAAMqH,WAAW/pB,GACrB4iB,GAAU0H,EAAOC,OAAQ9B,IAAM,EAAK,IAAQ6B,EAAOC,OAAW,GAAJ9B,EAE5D,OAAO7F,GAMT,QAAS4H,GAAa9H,GACpB,MAAO+H,UAAS9Z,mBAAmB+R,IAMrC,QAASgI,GAAO/qB,GACd,MAAOqqB,GAAQQ,EAAa7qB,IAE9B,QAASgrB,GAAOhrB,GACd,MAAO0qB,GAASK,EAAO/qB,IAEzB,QAASirB,GAAW1G,EAAG+E,GACrB,MAAOgB,GAAYO,EAAatG,GAAIsG,EAAavB,IAEnD,QAAS4B,GAAW3G,EAAG+E,GACrB,MAAOoB,GAASO,EAAW1G,EAAG+E,IAGhC,QAASriB,GAAIkkB,EAAQ5hB,EAAK6hB,GACxB,MAAK7hB,GAMA6hB,EAGEH,EAAW1hB,EAAK4hB,GAFdD,EAAW3hB,EAAK4hB,GANlBC,EAGEL,EAAOI,GAFLH,EAAOG,GAUpBhsB,EAAOD,QAAU+H,YAEN,EAAE,IAAI","file":"raven.min.js"} \ No newline at end of file diff --git a/dist/plugins/angular.js b/dist/plugins/angular.js deleted file mode 100644 index cf31bb8b8b27..000000000000 --- a/dist/plugins/angular.js +++ /dev/null @@ -1,785 +0,0 @@ -/*! Raven.js 3.24.2 (d92b6a2) | github.com/getsentry/raven-js */ - -/* - * Includes TraceKit - * https://github.com/getsentry/TraceKit - * - * Copyright 2018 Matt Robenolt and other contributors - * Released under the BSD license - * https://github.com/getsentry/raven-js/blob/master/LICENSE - * - */ - -(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=(g.Raven||(g.Raven = {}));g=(g.Plugins||(g.Plugins = {}));g.Angular = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o href parsing trick because React Native and other -// environments where DOM might not be available -function parseUrl(url) { - if (typeof url !== 'string') return {}; - var match = url.match(/^(([^:\/?#]+):)?(\/\/([^\/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?$/); - - // coerce to undefined values to empty string so we don't get 'undefined' - var query = match[6] || ''; - var fragment = match[8] || ''; - return { - protocol: match[2], - host: match[4], - path: match[5], - relative: match[5] + query + fragment // everything minus origin - }; -} -function uuid4() { - var crypto = _window.crypto || _window.msCrypto; - - if (!isUndefined(crypto) && crypto.getRandomValues) { - // Use window.crypto API if available - // eslint-disable-next-line no-undef - var arr = new Uint16Array(8); - crypto.getRandomValues(arr); - - // set 4 in byte 7 - arr[3] = (arr[3] & 0xfff) | 0x4000; - // set 2 most significant bits of byte 9 to '10' - arr[4] = (arr[4] & 0x3fff) | 0x8000; - - var pad = function(num) { - var v = num.toString(16); - while (v.length < 4) { - v = '0' + v; - } - return v; - }; - - return ( - pad(arr[0]) + - pad(arr[1]) + - pad(arr[2]) + - pad(arr[3]) + - pad(arr[4]) + - pad(arr[5]) + - pad(arr[6]) + - pad(arr[7]) - ); - } else { - // http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/2117523#2117523 - return 'xxxxxxxxxxxx4xxxyxxxxxxxxxxxxxxx'.replace(/[xy]/g, function(c) { - var r = (Math.random() * 16) | 0, - v = c === 'x' ? r : (r & 0x3) | 0x8; - return v.toString(16); - }); - } -} - -/** - * Given a child DOM element, returns a query-selector statement describing that - * and its ancestors - * e.g. [HTMLElement] => body > div > input#foo.btn[name=baz] - * @param elem - * @returns {string} - */ -function htmlTreeAsString(elem) { - /* eslint no-extra-parens:0*/ - var MAX_TRAVERSE_HEIGHT = 5, - MAX_OUTPUT_LEN = 80, - out = [], - height = 0, - len = 0, - separator = ' > ', - sepLength = separator.length, - nextStr; - - while (elem && height++ < MAX_TRAVERSE_HEIGHT) { - nextStr = htmlElementAsString(elem); - // bail out if - // - nextStr is the 'html' element - // - the length of the string that would be created exceeds MAX_OUTPUT_LEN - // (ignore this limit if we are on the first iteration) - if ( - nextStr === 'html' || - (height > 1 && len + out.length * sepLength + nextStr.length >= MAX_OUTPUT_LEN) - ) { - break; - } - - out.push(nextStr); - - len += nextStr.length; - elem = elem.parentNode; - } - - return out.reverse().join(separator); -} - -/** - * Returns a simple, query-selector representation of a DOM element - * e.g. [HTMLElement] => input#foo.btn[name=baz] - * @param HTMLElement - * @returns {string} - */ -function htmlElementAsString(elem) { - var out = [], - className, - classes, - key, - attr, - i; - - if (!elem || !elem.tagName) { - return ''; - } - - out.push(elem.tagName.toLowerCase()); - if (elem.id) { - out.push('#' + elem.id); - } - - className = elem.className; - if (className && isString(className)) { - classes = className.split(/\s+/); - for (i = 0; i < classes.length; i++) { - out.push('.' + classes[i]); - } - } - var attrWhitelist = ['type', 'name', 'title', 'alt']; - for (i = 0; i < attrWhitelist.length; i++) { - key = attrWhitelist[i]; - attr = elem.getAttribute(key); - if (attr) { - out.push('[' + key + '="' + attr + '"]'); - } - } - return out.join(''); -} - -/** - * Returns true if either a OR b is truthy, but not both - */ -function isOnlyOneTruthy(a, b) { - return !!(!!a ^ !!b); -} - -/** - * Returns true if both parameters are undefined - */ -function isBothUndefined(a, b) { - return isUndefined(a) && isUndefined(b); -} - -/** - * Returns true if the two input exception interfaces have the same content - */ -function isSameException(ex1, ex2) { - if (isOnlyOneTruthy(ex1, ex2)) return false; - - ex1 = ex1.values[0]; - ex2 = ex2.values[0]; - - if (ex1.type !== ex2.type || ex1.value !== ex2.value) return false; - - // in case both stacktraces are undefined, we can't decide so default to false - if (isBothUndefined(ex1.stacktrace, ex2.stacktrace)) return false; - - return isSameStacktrace(ex1.stacktrace, ex2.stacktrace); -} - -/** - * Returns true if the two input stack trace interfaces have the same content - */ -function isSameStacktrace(stack1, stack2) { - if (isOnlyOneTruthy(stack1, stack2)) return false; - - var frames1 = stack1.frames; - var frames2 = stack2.frames; - - // Exit early if frame count differs - if (frames1.length !== frames2.length) return false; - - // Iterate through every frame; bail out if anything differs - var a, b; - for (var i = 0; i < frames1.length; i++) { - a = frames1[i]; - b = frames2[i]; - if ( - a.filename !== b.filename || - a.lineno !== b.lineno || - a.colno !== b.colno || - a['function'] !== b['function'] - ) - return false; - } - return true; -} - -/** - * Polyfill a method - * @param obj object e.g. `document` - * @param name method name present on object e.g. `addEventListener` - * @param replacement replacement function - * @param track {optional} record instrumentation to an array - */ -function fill(obj, name, replacement, track) { - if (obj == null) return; - var orig = obj[name]; - obj[name] = replacement(orig); - obj[name].__raven__ = true; - obj[name].__orig__ = orig; - if (track) { - track.push([obj, name, orig]); - } -} - -/** - * Join values in array - * @param input array of values to be joined together - * @param delimiter string to be placed in-between values - * @returns {string} - */ -function safeJoin(input, delimiter) { - if (!isArray(input)) return ''; - - var output = []; - - for (var i = 0; i < input.length; i++) { - try { - output.push(String(input[i])); - } catch (e) { - output.push('[value cannot be serialized]'); - } - } - - return output.join(delimiter); -} - -// Default Node.js REPL depth -var MAX_SERIALIZE_EXCEPTION_DEPTH = 3; -// 50kB, as 100kB is max payload size, so half sounds reasonable -var MAX_SERIALIZE_EXCEPTION_SIZE = 50 * 1024; -var MAX_SERIALIZE_KEYS_LENGTH = 40; - -function utf8Length(value) { - return ~-encodeURI(value).split(/%..|./).length; -} - -function jsonSize(value) { - return utf8Length(JSON.stringify(value)); -} - -function serializeValue(value) { - if (typeof value === 'string') { - var maxLength = 40; - return truncate(value, maxLength); - } else if ( - typeof value === 'number' || - typeof value === 'boolean' || - typeof value === 'undefined' - ) { - return value; - } - - var type = Object.prototype.toString.call(value); - - // Node.js REPL notation - if (type === '[object Object]') return '[Object]'; - if (type === '[object Array]') return '[Array]'; - if (type === '[object Function]') - return value.name ? '[Function: ' + value.name + ']' : '[Function]'; - - return value; -} - -function serializeObject(value, depth) { - if (depth === 0) return serializeValue(value); - - if (isPlainObject(value)) { - return Object.keys(value).reduce(function(acc, key) { - acc[key] = serializeObject(value[key], depth - 1); - return acc; - }, {}); - } else if (Array.isArray(value)) { - return value.map(function(val) { - return serializeObject(val, depth - 1); - }); - } - - return serializeValue(value); -} - -function serializeException(ex, depth, maxSize) { - if (!isPlainObject(ex)) return ex; - - depth = typeof depth !== 'number' ? MAX_SERIALIZE_EXCEPTION_DEPTH : depth; - maxSize = typeof depth !== 'number' ? MAX_SERIALIZE_EXCEPTION_SIZE : maxSize; - - var serialized = serializeObject(ex, depth); - - if (jsonSize(stringify(serialized)) > maxSize) { - return serializeException(ex, depth - 1); - } - - return serialized; -} - -function serializeKeysForMessage(keys, maxLength) { - if (typeof keys === 'number' || typeof keys === 'string') return keys.toString(); - if (!Array.isArray(keys)) return ''; - - keys = keys.filter(function(key) { - return typeof key === 'string'; - }); - if (keys.length === 0) return '[object has no keys]'; - - maxLength = typeof maxLength !== 'number' ? MAX_SERIALIZE_KEYS_LENGTH : maxLength; - if (keys[0].length >= maxLength) return keys[0]; - - for (var usedKeys = keys.length; usedKeys > 0; usedKeys--) { - var serialized = keys.slice(0, usedKeys).join(', '); - if (serialized.length > maxLength) continue; - if (usedKeys === keys.length) return serialized; - return serialized + '\u2026'; - } - - return ''; -} - -function sanitize(input, sanitizeKeys) { - if (!isArray(sanitizeKeys) || (isArray(sanitizeKeys) && sanitizeKeys.length === 0)) - return input; - - var sanitizeRegExp = joinRegExp(sanitizeKeys); - var sanitizeMask = '********'; - var safeInput; - - try { - safeInput = JSON.parse(stringify(input)); - } catch (o_O) { - return input; - } - - function sanitizeWorker(workerInput) { - if (isArray(workerInput)) { - return workerInput.map(function(val) { - return sanitizeWorker(val); - }); - } - - if (isPlainObject(workerInput)) { - return Object.keys(workerInput).reduce(function(acc, k) { - if (sanitizeRegExp.test(k)) { - acc[k] = sanitizeMask; - } else { - acc[k] = sanitizeWorker(workerInput[k]); - } - return acc; - }, {}); - } - - return workerInput; - } - - return sanitizeWorker(safeInput); -} - -module.exports = { - isObject: isObject, - isError: isError, - isErrorEvent: isErrorEvent, - isUndefined: isUndefined, - isFunction: isFunction, - isPlainObject: isPlainObject, - isString: isString, - isArray: isArray, - isEmptyObject: isEmptyObject, - supportsErrorEvent: supportsErrorEvent, - supportsFetch: supportsFetch, - supportsReferrerPolicy: supportsReferrerPolicy, - supportsPromiseRejectionEvent: supportsPromiseRejectionEvent, - wrappedCallback: wrappedCallback, - each: each, - objectMerge: objectMerge, - truncate: truncate, - objectFrozen: objectFrozen, - hasKey: hasKey, - joinRegExp: joinRegExp, - urlencode: urlencode, - uuid4: uuid4, - htmlTreeAsString: htmlTreeAsString, - htmlElementAsString: htmlElementAsString, - isSameException: isSameException, - isSameStacktrace: isSameStacktrace, - parseUrl: parseUrl, - fill: fill, - safeJoin: safeJoin, - serializeException: serializeException, - serializeKeysForMessage: serializeKeysForMessage, - sanitize: sanitize -}; - -}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) -},{"3":3}],3:[function(_dereq_,module,exports){ -/* - json-stringify-safe - Like JSON.stringify, but doesn't throw on circular references. - - Originally forked from https://github.com/isaacs/json-stringify-safe - version 5.0.1 on 3/8/2017 and modified to handle Errors serialization - and IE8 compatibility. Tests for this are in test/vendor. - - ISC license: https://github.com/isaacs/json-stringify-safe/blob/master/LICENSE -*/ - -exports = module.exports = stringify; -exports.getSerialize = serializer; - -function indexOf(haystack, needle) { - for (var i = 0; i < haystack.length; ++i) { - if (haystack[i] === needle) return i; - } - return -1; -} - -function stringify(obj, replacer, spaces, cycleReplacer) { - return JSON.stringify(obj, serializer(replacer, cycleReplacer), spaces); -} - -// https://github.com/ftlabs/js-abbreviate/blob/fa709e5f139e7770a71827b1893f22418097fbda/index.js#L95-L106 -function stringifyError(value) { - var err = { - // These properties are implemented as magical getters and don't show up in for in - stack: value.stack, - message: value.message, - name: value.name - }; - - for (var i in value) { - if (Object.prototype.hasOwnProperty.call(value, i)) { - err[i] = value[i]; - } - } - - return err; -} - -function serializer(replacer, cycleReplacer) { - var stack = []; - var keys = []; - - if (cycleReplacer == null) { - cycleReplacer = function(key, value) { - if (stack[0] === value) { - return '[Circular ~]'; - } - return '[Circular ~.' + keys.slice(0, indexOf(stack, value)).join('.') + ']'; - }; - } - - return function(key, value) { - if (stack.length > 0) { - var thisPos = indexOf(stack, this); - ~thisPos ? stack.splice(thisPos + 1) : stack.push(this); - ~thisPos ? keys.splice(thisPos, Infinity, key) : keys.push(key); - - if (~indexOf(stack, value)) { - value = cycleReplacer.call(this, key, value); - } - } else { - stack.push(value); - } - - return replacer == null - ? value instanceof Error ? stringifyError(value) : value - : replacer.call(this, key, value); - }; -} - -},{}]},{},[1])(1) -}); \ No newline at end of file diff --git a/dist/plugins/angular.min.js b/dist/plugins/angular.min.js deleted file mode 100644 index 4023a0eb138c..000000000000 --- a/dist/plugins/angular.min.js +++ /dev/null @@ -1,3 +0,0 @@ -/*! Raven.js 3.24.2 (d92b6a2) | github.com/getsentry/raven-js */ -!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b=b.Raven||(b.Raven={}),b=b.Plugins||(b.Plugins={}),b.Angular=a()}}(function(){return function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};b[g][0].call(k.exports,function(a){var c=b[g][1][a];return e(c?c:a)},k,k.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;g ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function B(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&j(b))for(c=b.split(/\s+/),f=0;fc?M(a,b-1):d}function N(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?T:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function O(a,b){function c(a){return k(a)?a.map(function(a){return c(a)}):i(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!k(b)||k(b)&&0===b.length)return a;var d,e=w(b),f="********";try{d=JSON.parse(P(a))}catch(g){return a}return c(d)}var P=a(3),Q="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},R=3,S=51200,T=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isUndefined:g,isFunction:h,isPlainObject:i,isString:j,isArray:k,isEmptyObject:l,supportsErrorEvent:m,supportsFetch:n,supportsReferrerPolicy:o,supportsPromiseRejectionEvent:p,wrappedCallback:q,each:r,objectMerge:s,truncate:u,objectFrozen:t,hasKey:v,joinRegExp:w,urlencode:x,uuid4:z,htmlTreeAsString:A,htmlElementAsString:B,isSameException:E,isSameStacktrace:F,parseUrl:y,fill:G,safeJoin:H,serializeException:M,serializeKeysForMessage:N,sanitize:O}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{3:3}],3:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}]},{},[1])(1)}); -//# sourceMappingURL=angular.min.js.map \ No newline at end of file diff --git a/dist/plugins/angular.min.js.map b/dist/plugins/angular.min.js.map deleted file mode 100644 index 367b13d3c6ec..000000000000 --- a/dist/plugins/angular.min.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["angular.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","Plugins","Angular","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","angularPlugin","angular","RavenProvider","$get","$window","ExceptionHandlerProvider","$provide","decorator","exceptionHandler","R","$delegate","ex","cause","captureException","extra","moduleName","provider","config","setDataCallback","wrappedCallback","data","_normalizeData","angularPattern","exception","values","matches","exec","value","type","message","angularDocs","substr","2","isObject","what","isError","toString","isErrorEvent","supportsErrorEvent","isUndefined","isFunction","isPlainObject","Object","prototype","isString","isArray","isEmptyObject","_","hasOwnProperty","ErrorEvent","supportsFetch","_window","Headers","Request","Response","supportsReferrerPolicy","referrerPolicy","supportsPromiseRejectionEvent","PromiseRejectionEvent","callback","dataCallback","original","normalizedData","each","obj","j","hasKey","objectMerge","obj1","obj2","key","objectFrozen","isFrozen","truncate","str","max","object","joinRegExp","patterns","pattern","sources","len","push","replace","source","RegExp","join","urlencode","pairs","encodeURIComponent","parseUrl","url","match","query","fragment","protocol","host","path","relative","uuid4","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","Math","random","htmlTreeAsString","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","reverse","className","classes","attr","tagName","toLowerCase","id","split","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","isSameException","ex1","ex2","stacktrace","isSameStacktrace","stack1","stack2","frames1","frames","frames2","filename","lineno","colno","fill","name","replacement","track","orig","__raven__","__orig__","safeJoin","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","JSON","stringify","serializeValue","maxLength","serializeObject","depth","keys","reduce","acc","Array","map","val","serializeException","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","serializeKeysForMessage","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","slice","sanitize","sanitizeKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","test","sanitizeMask","safeInput","parse","o_O","3","indexOf","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","err","stack","thisPos","splice","Infinity","getSerialize"],"mappings":"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","file":"angular.min.js"} \ No newline at end of file diff --git a/dist/plugins/console.js b/dist/plugins/console.js deleted file mode 100644 index d44cd5c32478..000000000000 --- a/dist/plugins/console.js +++ /dev/null @@ -1,787 +0,0 @@ -/*! Raven.js 3.24.2 (d92b6a2) | github.com/getsentry/raven-js */ - -/* - * Includes TraceKit - * https://github.com/getsentry/TraceKit - * - * Copyright 2018 Matt Robenolt and other contributors - * Released under the BSD license - * https://github.com/getsentry/raven-js/blob/master/LICENSE - * - */ - -(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=(g.Raven||(g.Raven = {}));g=(g.Plugins||(g.Plugins = {}));g.Console = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o href parsing trick because React Native and other -// environments where DOM might not be available -function parseUrl(url) { - if (typeof url !== 'string') return {}; - var match = url.match(/^(([^:\/?#]+):)?(\/\/([^\/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?$/); - - // coerce to undefined values to empty string so we don't get 'undefined' - var query = match[6] || ''; - var fragment = match[8] || ''; - return { - protocol: match[2], - host: match[4], - path: match[5], - relative: match[5] + query + fragment // everything minus origin - }; -} -function uuid4() { - var crypto = _window.crypto || _window.msCrypto; - - if (!isUndefined(crypto) && crypto.getRandomValues) { - // Use window.crypto API if available - // eslint-disable-next-line no-undef - var arr = new Uint16Array(8); - crypto.getRandomValues(arr); - - // set 4 in byte 7 - arr[3] = (arr[3] & 0xfff) | 0x4000; - // set 2 most significant bits of byte 9 to '10' - arr[4] = (arr[4] & 0x3fff) | 0x8000; - - var pad = function(num) { - var v = num.toString(16); - while (v.length < 4) { - v = '0' + v; - } - return v; - }; - - return ( - pad(arr[0]) + - pad(arr[1]) + - pad(arr[2]) + - pad(arr[3]) + - pad(arr[4]) + - pad(arr[5]) + - pad(arr[6]) + - pad(arr[7]) - ); - } else { - // http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/2117523#2117523 - return 'xxxxxxxxxxxx4xxxyxxxxxxxxxxxxxxx'.replace(/[xy]/g, function(c) { - var r = (Math.random() * 16) | 0, - v = c === 'x' ? r : (r & 0x3) | 0x8; - return v.toString(16); - }); - } -} - -/** - * Given a child DOM element, returns a query-selector statement describing that - * and its ancestors - * e.g. [HTMLElement] => body > div > input#foo.btn[name=baz] - * @param elem - * @returns {string} - */ -function htmlTreeAsString(elem) { - /* eslint no-extra-parens:0*/ - var MAX_TRAVERSE_HEIGHT = 5, - MAX_OUTPUT_LEN = 80, - out = [], - height = 0, - len = 0, - separator = ' > ', - sepLength = separator.length, - nextStr; - - while (elem && height++ < MAX_TRAVERSE_HEIGHT) { - nextStr = htmlElementAsString(elem); - // bail out if - // - nextStr is the 'html' element - // - the length of the string that would be created exceeds MAX_OUTPUT_LEN - // (ignore this limit if we are on the first iteration) - if ( - nextStr === 'html' || - (height > 1 && len + out.length * sepLength + nextStr.length >= MAX_OUTPUT_LEN) - ) { - break; - } - - out.push(nextStr); - - len += nextStr.length; - elem = elem.parentNode; - } - - return out.reverse().join(separator); -} - -/** - * Returns a simple, query-selector representation of a DOM element - * e.g. [HTMLElement] => input#foo.btn[name=baz] - * @param HTMLElement - * @returns {string} - */ -function htmlElementAsString(elem) { - var out = [], - className, - classes, - key, - attr, - i; - - if (!elem || !elem.tagName) { - return ''; - } - - out.push(elem.tagName.toLowerCase()); - if (elem.id) { - out.push('#' + elem.id); - } - - className = elem.className; - if (className && isString(className)) { - classes = className.split(/\s+/); - for (i = 0; i < classes.length; i++) { - out.push('.' + classes[i]); - } - } - var attrWhitelist = ['type', 'name', 'title', 'alt']; - for (i = 0; i < attrWhitelist.length; i++) { - key = attrWhitelist[i]; - attr = elem.getAttribute(key); - if (attr) { - out.push('[' + key + '="' + attr + '"]'); - } - } - return out.join(''); -} - -/** - * Returns true if either a OR b is truthy, but not both - */ -function isOnlyOneTruthy(a, b) { - return !!(!!a ^ !!b); -} - -/** - * Returns true if both parameters are undefined - */ -function isBothUndefined(a, b) { - return isUndefined(a) && isUndefined(b); -} - -/** - * Returns true if the two input exception interfaces have the same content - */ -function isSameException(ex1, ex2) { - if (isOnlyOneTruthy(ex1, ex2)) return false; - - ex1 = ex1.values[0]; - ex2 = ex2.values[0]; - - if (ex1.type !== ex2.type || ex1.value !== ex2.value) return false; - - // in case both stacktraces are undefined, we can't decide so default to false - if (isBothUndefined(ex1.stacktrace, ex2.stacktrace)) return false; - - return isSameStacktrace(ex1.stacktrace, ex2.stacktrace); -} - -/** - * Returns true if the two input stack trace interfaces have the same content - */ -function isSameStacktrace(stack1, stack2) { - if (isOnlyOneTruthy(stack1, stack2)) return false; - - var frames1 = stack1.frames; - var frames2 = stack2.frames; - - // Exit early if frame count differs - if (frames1.length !== frames2.length) return false; - - // Iterate through every frame; bail out if anything differs - var a, b; - for (var i = 0; i < frames1.length; i++) { - a = frames1[i]; - b = frames2[i]; - if ( - a.filename !== b.filename || - a.lineno !== b.lineno || - a.colno !== b.colno || - a['function'] !== b['function'] - ) - return false; - } - return true; -} - -/** - * Polyfill a method - * @param obj object e.g. `document` - * @param name method name present on object e.g. `addEventListener` - * @param replacement replacement function - * @param track {optional} record instrumentation to an array - */ -function fill(obj, name, replacement, track) { - if (obj == null) return; - var orig = obj[name]; - obj[name] = replacement(orig); - obj[name].__raven__ = true; - obj[name].__orig__ = orig; - if (track) { - track.push([obj, name, orig]); - } -} - -/** - * Join values in array - * @param input array of values to be joined together - * @param delimiter string to be placed in-between values - * @returns {string} - */ -function safeJoin(input, delimiter) { - if (!isArray(input)) return ''; - - var output = []; - - for (var i = 0; i < input.length; i++) { - try { - output.push(String(input[i])); - } catch (e) { - output.push('[value cannot be serialized]'); - } - } - - return output.join(delimiter); -} - -// Default Node.js REPL depth -var MAX_SERIALIZE_EXCEPTION_DEPTH = 3; -// 50kB, as 100kB is max payload size, so half sounds reasonable -var MAX_SERIALIZE_EXCEPTION_SIZE = 50 * 1024; -var MAX_SERIALIZE_KEYS_LENGTH = 40; - -function utf8Length(value) { - return ~-encodeURI(value).split(/%..|./).length; -} - -function jsonSize(value) { - return utf8Length(JSON.stringify(value)); -} - -function serializeValue(value) { - if (typeof value === 'string') { - var maxLength = 40; - return truncate(value, maxLength); - } else if ( - typeof value === 'number' || - typeof value === 'boolean' || - typeof value === 'undefined' - ) { - return value; - } - - var type = Object.prototype.toString.call(value); - - // Node.js REPL notation - if (type === '[object Object]') return '[Object]'; - if (type === '[object Array]') return '[Array]'; - if (type === '[object Function]') - return value.name ? '[Function: ' + value.name + ']' : '[Function]'; - - return value; -} - -function serializeObject(value, depth) { - if (depth === 0) return serializeValue(value); - - if (isPlainObject(value)) { - return Object.keys(value).reduce(function(acc, key) { - acc[key] = serializeObject(value[key], depth - 1); - return acc; - }, {}); - } else if (Array.isArray(value)) { - return value.map(function(val) { - return serializeObject(val, depth - 1); - }); - } - - return serializeValue(value); -} - -function serializeException(ex, depth, maxSize) { - if (!isPlainObject(ex)) return ex; - - depth = typeof depth !== 'number' ? MAX_SERIALIZE_EXCEPTION_DEPTH : depth; - maxSize = typeof depth !== 'number' ? MAX_SERIALIZE_EXCEPTION_SIZE : maxSize; - - var serialized = serializeObject(ex, depth); - - if (jsonSize(stringify(serialized)) > maxSize) { - return serializeException(ex, depth - 1); - } - - return serialized; -} - -function serializeKeysForMessage(keys, maxLength) { - if (typeof keys === 'number' || typeof keys === 'string') return keys.toString(); - if (!Array.isArray(keys)) return ''; - - keys = keys.filter(function(key) { - return typeof key === 'string'; - }); - if (keys.length === 0) return '[object has no keys]'; - - maxLength = typeof maxLength !== 'number' ? MAX_SERIALIZE_KEYS_LENGTH : maxLength; - if (keys[0].length >= maxLength) return keys[0]; - - for (var usedKeys = keys.length; usedKeys > 0; usedKeys--) { - var serialized = keys.slice(0, usedKeys).join(', '); - if (serialized.length > maxLength) continue; - if (usedKeys === keys.length) return serialized; - return serialized + '\u2026'; - } - - return ''; -} - -function sanitize(input, sanitizeKeys) { - if (!isArray(sanitizeKeys) || (isArray(sanitizeKeys) && sanitizeKeys.length === 0)) - return input; - - var sanitizeRegExp = joinRegExp(sanitizeKeys); - var sanitizeMask = '********'; - var safeInput; - - try { - safeInput = JSON.parse(stringify(input)); - } catch (o_O) { - return input; - } - - function sanitizeWorker(workerInput) { - if (isArray(workerInput)) { - return workerInput.map(function(val) { - return sanitizeWorker(val); - }); - } - - if (isPlainObject(workerInput)) { - return Object.keys(workerInput).reduce(function(acc, k) { - if (sanitizeRegExp.test(k)) { - acc[k] = sanitizeMask; - } else { - acc[k] = sanitizeWorker(workerInput[k]); - } - return acc; - }, {}); - } - - return workerInput; - } - - return sanitizeWorker(safeInput); -} - -module.exports = { - isObject: isObject, - isError: isError, - isErrorEvent: isErrorEvent, - isUndefined: isUndefined, - isFunction: isFunction, - isPlainObject: isPlainObject, - isString: isString, - isArray: isArray, - isEmptyObject: isEmptyObject, - supportsErrorEvent: supportsErrorEvent, - supportsFetch: supportsFetch, - supportsReferrerPolicy: supportsReferrerPolicy, - supportsPromiseRejectionEvent: supportsPromiseRejectionEvent, - wrappedCallback: wrappedCallback, - each: each, - objectMerge: objectMerge, - truncate: truncate, - objectFrozen: objectFrozen, - hasKey: hasKey, - joinRegExp: joinRegExp, - urlencode: urlencode, - uuid4: uuid4, - htmlTreeAsString: htmlTreeAsString, - htmlElementAsString: htmlElementAsString, - isSameException: isSameException, - isSameStacktrace: isSameStacktrace, - parseUrl: parseUrl, - fill: fill, - safeJoin: safeJoin, - serializeException: serializeException, - serializeKeysForMessage: serializeKeysForMessage, - sanitize: sanitize -}; - -}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) -},{"4":4}],4:[function(_dereq_,module,exports){ -/* - json-stringify-safe - Like JSON.stringify, but doesn't throw on circular references. - - Originally forked from https://github.com/isaacs/json-stringify-safe - version 5.0.1 on 3/8/2017 and modified to handle Errors serialization - and IE8 compatibility. Tests for this are in test/vendor. - - ISC license: https://github.com/isaacs/json-stringify-safe/blob/master/LICENSE -*/ - -exports = module.exports = stringify; -exports.getSerialize = serializer; - -function indexOf(haystack, needle) { - for (var i = 0; i < haystack.length; ++i) { - if (haystack[i] === needle) return i; - } - return -1; -} - -function stringify(obj, replacer, spaces, cycleReplacer) { - return JSON.stringify(obj, serializer(replacer, cycleReplacer), spaces); -} - -// https://github.com/ftlabs/js-abbreviate/blob/fa709e5f139e7770a71827b1893f22418097fbda/index.js#L95-L106 -function stringifyError(value) { - var err = { - // These properties are implemented as magical getters and don't show up in for in - stack: value.stack, - message: value.message, - name: value.name - }; - - for (var i in value) { - if (Object.prototype.hasOwnProperty.call(value, i)) { - err[i] = value[i]; - } - } - - return err; -} - -function serializer(replacer, cycleReplacer) { - var stack = []; - var keys = []; - - if (cycleReplacer == null) { - cycleReplacer = function(key, value) { - if (stack[0] === value) { - return '[Circular ~]'; - } - return '[Circular ~.' + keys.slice(0, indexOf(stack, value)).join('.') + ']'; - }; - } - - return function(key, value) { - if (stack.length > 0) { - var thisPos = indexOf(stack, this); - ~thisPos ? stack.splice(thisPos + 1) : stack.push(this); - ~thisPos ? keys.splice(thisPos, Infinity, key) : keys.push(key); - - if (~indexOf(stack, value)) { - value = cycleReplacer.call(this, key, value); - } - } else { - stack.push(value); - } - - return replacer == null - ? value instanceof Error ? stringifyError(value) : value - : replacer.call(this, key, value); - }; -} - -},{}]},{},[1])(1) -}); \ No newline at end of file diff --git a/dist/plugins/console.min.js b/dist/plugins/console.min.js deleted file mode 100644 index eb668d57f0cc..000000000000 --- a/dist/plugins/console.min.js +++ /dev/null @@ -1,3 +0,0 @@ -/*! Raven.js 3.24.2 (d92b6a2) | github.com/getsentry/raven-js */ -!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b=b.Raven||(b.Raven={}),b=b.Plugins||(b.Plugins={}),b.Console=a()}}(function(){return function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};b[g][0].call(k.exports,function(a){var c=b[g][1][a];return e(c?c:a)},k,k.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;g ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function B(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&j(b))for(c=b.split(/\s+/),f=0;fc?M(a,b-1):d}function N(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?T:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function O(a,b){function c(a){return k(a)?a.map(function(a){return c(a)}):i(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!k(b)||k(b)&&0===b.length)return a;var d,e=w(b),f="********";try{d=JSON.parse(P(a))}catch(g){return a}return c(d)}var P=a(4),Q="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},R=3,S=51200,T=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isUndefined:g,isFunction:h,isPlainObject:i,isString:j,isArray:k,isEmptyObject:l,supportsErrorEvent:m,supportsFetch:n,supportsReferrerPolicy:o,supportsPromiseRejectionEvent:p,wrappedCallback:q,each:r,objectMerge:s,truncate:u,objectFrozen:t,hasKey:v,joinRegExp:w,urlencode:x,uuid4:z,htmlTreeAsString:A,htmlElementAsString:B,isSameException:E,isSameStacktrace:F,parseUrl:y,fill:G,safeJoin:H,serializeException:M,serializeKeysForMessage:N,sanitize:O}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{4:4}],4:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}]},{},[1])(1)}); -//# sourceMappingURL=console.min.js.map \ No newline at end of file diff --git a/dist/plugins/console.min.js.map b/dist/plugins/console.min.js.map deleted file mode 100644 index a829391de21e..000000000000 --- a/dist/plugins/console.min.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["console.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","Plugins","Console","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","consolePlugin","console","pluginOptions","logLevels","levels","push","callback","msg","data","captureMessage","level","pop","wrapConsoleMethod","wrapMethod","2","utils","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","safeJoin","logger","extra","Function","prototype","apply","3","isObject","what","isError","value","toString","isErrorEvent","supportsErrorEvent","isUndefined","isFunction","isPlainObject","Object","isString","isArray","isEmptyObject","_","hasOwnProperty","ErrorEvent","supportsFetch","_window","Headers","Request","Response","supportsReferrerPolicy","referrerPolicy","supportsPromiseRejectionEvent","PromiseRejectionEvent","wrappedCallback","dataCallback","original","normalizedData","each","obj","j","hasKey","objectMerge","obj1","obj2","key","objectFrozen","isFrozen","truncate","str","max","substr","object","joinRegExp","patterns","pattern","sources","len","replace","source","RegExp","join","urlencode","pairs","encodeURIComponent","parseUrl","url","match","query","fragment","protocol","host","path","relative","uuid4","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","Math","random","htmlTreeAsString","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","reverse","className","classes","attr","tagName","toLowerCase","id","split","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","isSameException","ex1","ex2","values","type","stacktrace","isSameStacktrace","stack1","stack2","frames1","frames","frames2","filename","lineno","colno","fill","name","replacement","track","orig","__raven__","__orig__","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","JSON","stringify","serializeValue","maxLength","serializeObject","depth","keys","reduce","acc","Array","map","val","serializeException","ex","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","serializeKeysForMessage","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitize","sanitizeKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","test","sanitizeMask","safeInput","parse","o_O","4","indexOf","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","err","stack","message","thisPos","splice","Infinity","getSerialize"],"mappings":";CAYA,SAAUA,GAAG,GAAoB,gBAAVC,UAAoC,mBAATC,QAAsBA,OAAOD,QAAQD,QAAS,IAAmB,kBAATG,SAAqBA,OAAOC,IAAKD,UAAUH,OAAO,CAAC,GAAIK,EAAkCA,GAAb,mBAATC,QAAwBA,OAA+B,mBAATC,QAAwBA,OAA6B,mBAAPC,MAAsBA,KAAYC,KAAKJ,EAAGA,EAAEK,QAAQL,EAAEK,UAAaL,EAAGA,EAAEM,UAAUN,EAAEM,YAAeN,EAAEO,QAAUZ,MAAO,WAAqC,MAAO,SAAUa,GAAEC,EAAEC,EAAEC,GAAG,QAASC,GAAEC,EAAEC,GAAG,IAAIJ,EAAEG,GAAG,CAAC,IAAIJ,EAAEI,GAAG,CAAC,GAAIE,GAAkB,kBAATC,UAAqBA,OAAQ,KAAIF,GAAGC,EAAE,MAAOA,GAAEF,GAAE,EAAI,IAAGI,EAAE,MAAOA,GAAEJ,GAAE,EAAI,IAAIlB,GAAE,GAAIuB,OAAM,uBAAuBL,EAAE,IAAK,MAAMlB,GAAEwB,KAAK,mBAAmBxB,EAAE,GAAIyB,GAAEV,EAAEG,IAAIjB,WAAYa,GAAEI,GAAG,GAAGQ,KAAKD,EAAExB,QAAQ,SAASY,GAAG,GAAIE,GAAED,EAAEI,GAAG,GAAGL,EAAG,OAAOI,GAAEF,EAAEA,EAAEF,IAAIY,EAAEA,EAAExB,QAAQY,EAAEC,EAAEC,EAAEC,GAAG,MAAOD,GAAEG,GAAGjB,QAAkD,IAAI,GAA1CqB,GAAkB,kBAATD,UAAqBA,QAAgBH,EAAE,EAAEA,EAAEF,EAAEW,OAAOT,IAAID,EAAED,EAAEE,GAAI,OAAOD,KAAKW,GAAG,SAASC,EAAQ3B,EAAOD,GAcl4B,QAAS6B,GAAcpB,EAAOqB,EAASC,GACrCD,EAAUA,GAAWzB,OAAOyB,YAC5BC,EAAgBA,KAEhB,IAAIC,GAAYD,EAAcE,SAAW,QAAS,OAAQ,OAAQ,QAC9D,WAAYH,IAASE,EAAUE,KAAK,SAOxC,KALA,GAAIC,GAAW,SAASC,EAAKC,GAC3B5B,EAAM6B,eAAeF,EAAKC,IAGxBE,EAAQP,EAAUQ,MACfD,GACLE,EAAkBX,EAASS,EAAOJ,GAClCI,EAAQP,EAAUQ,MAhBtB,GAAIC,GAAoBb,EAAQ,GAAGc,UAoBnCzC,GAAOD,QAAU6B,IAEdc,EAAI,IAAIA,GAAG,SAASf,EAAQ3B,EAAOD,GACtC,GAAI4C,GAAQhB,EAAQ,GAEhBc,EAAa,SAASZ,EAASS,EAAOJ,GACxC,GAAIU,GAAuBf,EAAQS,GAC/BO,EAAkBhB,CAEtB,IAAMS,IAAST,GAAf,CAIA,GAAIiB,GAAwB,SAAVR,EAAmB,UAAYA,CAEjDT,GAAQS,GAAS,WACf,GAAIS,MAAUC,MAAMxB,KAAKyB,WAErBd,EAAMQ,EAAMO,SAASH,EAAM,KAC3BX,GAAQE,MAAOQ,EAAaK,OAAQ,UAAWC,OAAQH,UAAWF,GAExD,YAAVT,EACES,EAAK,MAAO,IAEdZ,EACE,sBAAwBQ,EAAMO,SAASH,EAAKC,MAAM,GAAI,MAAQ,kBAChEZ,EAAKgB,MAAMH,UAAYF,EAAKC,MAAM,GAClCd,GAAYA,EAASC,EAAKC,IAG5BF,GAAYA,EAASC,EAAKC,GAIxBQ,GAGFS,SAASC,UAAUC,MAAM/B,KAAKoB,EAAsBC,EAAiBE,KAK3E/C,GAAOD,SACL0C,WAAYA,KAGXe,EAAI,IAAIA,GAAG,SAAS7B,EAAQ3B,EAAOD,IACtC,SAAWM,GAQX,QAASoD,GAASC,GAChB,MAAuB,gBAATA,IAA8B,OAATA,EAKrC,QAASC,GAAQC,GACf,UAAWC,SAASrC,KAAKoC,IACvB,IAAK,iBACH,OAAO,CACT,KAAK,qBACH,OAAO,CACT,KAAK,wBACH,OAAO,CACT,SACE,MAAOA,aAAiBvC,QAI9B,QAASyC,GAAaF,GACpB,MAAOG,MAAoD,2BAAzBF,SAASrC,KAAKoC,GAGlD,QAASI,GAAYN,GACnB,MAAgB,UAATA,EAGT,QAASO,GAAWP,GAClB,MAAuB,kBAATA,GAGhB,QAASQ,GAAcR,GACrB,MAAgD,oBAAzCS,OAAOb,UAAUO,SAASrC,KAAKkC,GAGxC,QAASU,GAASV,GAChB,MAAgD,oBAAzCS,OAAOb,UAAUO,SAASrC,KAAKkC,GAGxC,QAASW,GAAQX,GACf,MAAgD,mBAAzCS,OAAOb,UAAUO,SAASrC,KAAKkC,GAGxC,QAASY,GAAcZ,GACrB,IAAKQ,EAAcR,GAAO,OAAO,CAEjC,KAAK,GAAIa,KAAKb,GACZ,GAAIA,EAAKc,eAAeD,GACtB,OAAO,CAGX,QAAO,EAGT,QAASR,KACP,IAEE,MADA,IAAIU,YAAW,KACR,EACP,MAAO9D,GACP,OAAO,GAIX,QAAS+D,KACP,KAAM,SAAWC,IAAU,OAAO,CAElC,KAIE,MAHA,IAAIC,SACJ,GAAIC,SAAQ,IACZ,GAAIC,WACG,EACP,MAAOnE,GACP,OAAO,GAQX,QAASoE,KACP,IAAKL,IAAiB,OAAO,CAE7B,KAKE,MAHA,IAAIG,SAAQ,cACVG,eAAgB,YAEX,EACP,MAAOrE,GACP,OAAO,GAIX,QAASsE,KACP,MAAwC,kBAA1BC,uBAGhB,QAASC,GAAgBjD,GACvB,QAASkD,GAAahD,EAAMiD,GAC1B,GAAIC,GAAiBpD,EAASE,IAASA,CACvC,OAAIiD,GACKA,EAASC,IAAmBA,EAE9BA,EAGT,MAAOF,GAGT,QAASG,GAAKC,EAAKtD,GACjB,GAAId,GAAGqE,CAEP,IAAIzB,EAAYwB,EAAI/D,QAClB,IAAKL,IAAKoE,GACJE,EAAOF,EAAKpE,IACdc,EAASV,KAAK,KAAMJ,EAAGoE,EAAIpE,QAK/B,IADAqE,EAAID,EAAI/D,OAEN,IAAKL,EAAI,EAAGA,EAAIqE,EAAGrE,IACjBc,EAASV,KAAK,KAAMJ,EAAGoE,EAAIpE,IAMnC,QAASuE,GAAYC,EAAMC,GACzB,MAAKA,IAGLN,EAAKM,EAAM,SAASC,EAAKlC,GACvBgC,EAAKE,GAAOlC,IAEPgC,GALEA,EAgBX,QAASG,GAAaP,GACpB,QAAKrB,OAAO6B,UAGL7B,OAAO6B,SAASR,GAGzB,QAASS,GAASC,EAAKC,GACrB,GAAmB,gBAARA,GACT,KAAM,IAAI9E,OAAM,yDAElB,OAAmB,gBAAR6E,IAA4B,IAARC,EACtBD,EAEFA,EAAIzE,QAAU0E,EAAMD,EAAMA,EAAIE,OAAO,EAAGD,GAAO,IAUxD,QAAST,GAAOW,EAAQP,GACtB,MAAO3B,QAAOb,UAAUkB,eAAehD,KAAK6E,EAAQP,GAGtD,QAASQ,GAAWC,GAQlB,IALA,GAGEC,GAHEC,KACFrF,EAAI,EACJsF,EAAMH,EAAS9E,OAGVL,EAAIsF,EAAKtF,IACdoF,EAAUD,EAASnF,GACfgD,EAASoC,GAGXC,EAAQxE,KAAKuE,EAAQG,QAAQ,8BAA+B,SACnDH,GAAWA,EAAQI,QAE5BH,EAAQxE,KAAKuE,EAAQI,OAIzB,OAAO,IAAIC,QAAOJ,EAAQK,KAAK,KAAM,KAGvC,QAASC,GAAU/F,GACjB,GAAIgG,KAIJ,OAHAzB,GAAKvE,EAAG,SAAS8E,EAAKlC,GACpBoD,EAAM/E,KAAKgF,mBAAmBnB,GAAO,IAAMmB,mBAAmBrD,MAEzDoD,EAAMF,KAAK,KAMpB,QAASI,GAASC,GAChB,GAAmB,gBAARA,GAAkB,QAC7B,IAAIC,GAAQD,EAAIC,MAAM,kEAGlBC,EAAQD,EAAM,IAAM,GACpBE,EAAWF,EAAM,IAAM,EAC3B,QACEG,SAAUH,EAAM,GAChBI,KAAMJ,EAAM,GACZK,KAAML,EAAM,GACZM,SAAUN,EAAM,GAAKC,EAAQC,GAGjC,QAASK,KACP,GAAIC,GAASjD,EAAQiD,QAAUjD,EAAQkD,QAEvC,KAAK7D,EAAY4D,IAAWA,EAAOE,gBAAiB,CAGlD,GAAIC,GAAM,GAAIC,aAAY,EAC1BJ,GAAOE,gBAAgBC,GAGvBA,EAAI,GAAe,KAATA,EAAI,GAAc,MAE5BA,EAAI,GAAe,MAATA,EAAI,GAAe,KAE7B,IAAIE,GAAM,SAASC,GAEjB,IADA,GAAIC,GAAID,EAAIrE,SAAS,IACdsE,EAAE1G,OAAS,GAChB0G,EAAI,IAAMA,CAEZ,OAAOA,GAGT,OACEF,GAAIF,EAAI,IACRE,EAAIF,EAAI,IACRE,EAAIF,EAAI,IACRE,EAAIF,EAAI,IACRE,EAAIF,EAAI,IACRE,EAAIF,EAAI,IACRE,EAAIF,EAAI,IACRE,EAAIF,EAAI,IAIV,MAAO,mCAAmCpB,QAAQ,QAAS,SAASyB,GAClE,GAAItH,GAAqB,GAAhBuH,KAAKC,SAAiB,EAC7BH,EAAU,MAANC,EAAYtH,EAAS,EAAJA,EAAW,CAClC,OAAOqH,GAAEtE,SAAS,MAYxB,QAAS0E,GAAiBC,GAWxB,IATA,GAOEC,GAPEC,EAAsB,EACxBC,EAAiB,GACjBC,KACAC,EAAS,EACTnC,EAAM,EACNoC,EAAY,MACZC,EAAYD,EAAUrH,OAGjB+G,GAAQK,IAAWH,IACxBD,EAAUO,EAAoBR,KAMhB,SAAZC,GACCI,EAAS,GAAKnC,EAAMkC,EAAInH,OAASsH,EAAYN,EAAQhH,QAAUkH,KAKlEC,EAAI3G,KAAKwG,GAET/B,GAAO+B,EAAQhH,OACf+G,EAAOA,EAAKS,UAGd,OAAOL,GAAIM,UAAUpC,KAAKgC,GAS5B,QAASE,GAAoBR,GAC3B,GACEW,GACAC,EACAtD,EACAuD,EACAjI,EALEwH,IAOJ,KAAKJ,IAASA,EAAKc,QACjB,MAAO,EAST,IANAV,EAAI3G,KAAKuG,EAAKc,QAAQC,eAClBf,EAAKgB,IACPZ,EAAI3G,KAAK,IAAMuG,EAAKgB,IAGtBL,EAAYX,EAAKW,UACbA,GAAa/E,EAAS+E,GAExB,IADAC,EAAUD,EAAUM,MAAM,OACrBrI,EAAI,EAAGA,EAAIgI,EAAQ3H,OAAQL,IAC9BwH,EAAI3G,KAAK,IAAMmH,EAAQhI,GAG3B,IAAIsI,IAAiB,OAAQ,OAAQ,QAAS,MAC9C,KAAKtI,EAAI,EAAGA,EAAIsI,EAAcjI,OAAQL,IACpC0E,EAAM4D,EAActI,GACpBiI,EAAOb,EAAKmB,aAAa7D,GACrBuD,GACFT,EAAI3G,KAAK,IAAM6D,EAAM,KAAOuD,EAAO,KAGvC,OAAOT,GAAI9B,KAAK,IAMlB,QAAS8C,GAAgB1I,EAAG2I,GAC1B,WAAY3I,IAAM2I,GAMpB,QAASC,GAAgB5I,EAAG2I,GAC1B,MAAO7F,GAAY9C,IAAM8C,EAAY6F,GAMvC,QAASE,GAAgBC,EAAKC,GAC5B,OAAIL,EAAgBI,EAAKC,KAEzBD,EAAMA,EAAIE,OAAO,GACjBD,EAAMA,EAAIC,OAAO,GAEbF,EAAIG,OAASF,EAAIE,MAAQH,EAAIpG,QAAUqG,EAAIrG,SAG3CkG,EAAgBE,EAAII,WAAYH,EAAIG,aAEjCC,EAAiBL,EAAII,WAAYH,EAAIG,cAM9C,QAASC,GAAiBC,EAAQC,GAChC,GAAIX,EAAgBU,EAAQC,GAAS,OAAO,CAE5C,IAAIC,GAAUF,EAAOG,OACjBC,EAAUH,EAAOE,MAGrB,IAAID,EAAQ/I,SAAWiJ,EAAQjJ,OAAQ,OAAO,CAI9C,KAAK,GADDP,GAAG2I,EACEzI,EAAI,EAAGA,EAAIoJ,EAAQ/I,OAAQL,IAGlC,GAFAF,EAAIsJ,EAAQpJ,GACZyI,EAAIa,EAAQtJ,GAEVF,EAAEyJ,WAAad,EAAEc,UACjBzJ,EAAE0J,SAAWf,EAAEe,QACf1J,EAAE2J,QAAUhB,EAAEgB,OACd3J,EAAE,cAAgB2I,EAAE,YAEpB,OAAO,CAEX,QAAO,EAUT,QAASiB,GAAKtF,EAAKuF,EAAMC,EAAaC,GACpC,GAAW,MAAPzF,EAAJ,CACA,GAAI0F,GAAO1F,EAAIuF,EACfvF,GAAIuF,GAAQC,EAAYE,GACxB1F,EAAIuF,GAAMI,GAAY,EACtB3F,EAAIuF,GAAMK,EAAWF,EACjBD,GACFA,EAAMhJ,MAAMuD,EAAKuF,EAAMG,KAU3B,QAAShI,GAASmI,EAAOC,GACvB,IAAKjH,EAAQgH,GAAQ,MAAO,EAI5B,KAAK,GAFDE,MAEKnK,EAAI,EAAGA,EAAIiK,EAAM5J,OAAQL,IAChC,IACEmK,EAAOtJ,KAAKuJ,OAAOH,EAAMjK,KACzB,MAAOT,GACP4K,EAAOtJ,KAAK,gCAIhB,MAAOsJ,GAAOzE,KAAKwE,GASrB,QAASG,GAAW7H,GAClB,QAAS8H,UAAU9H,GAAO6F,MAAM,SAAShI,OAG3C,QAASkK,GAAS/H,GAChB,MAAO6H,GAAWG,KAAKC,UAAUjI,IAGnC,QAASkI,GAAelI,GACtB,GAAqB,gBAAVA,GAAoB,CAC7B,GAAImI,GAAY,EAChB,OAAO9F,GAASrC,EAAOmI,GAClB,GACY,gBAAVnI,IACU,iBAAVA,IACU,mBAAVA,GAEP,MAAOA,EAGT,IAAIuG,GAAOhG,OAAOb,UAAUO,SAASrC,KAAKoC,EAG1C,OAAa,oBAATuG,EAAmC,WAC1B,mBAATA,EAAkC,UACzB,sBAATA,EACKvG,EAAMmH,KAAO,cAAgBnH,EAAMmH,KAAO,IAAM,aAElDnH,EAGT,QAASoI,GAAgBpI,EAAOqI,GAC9B,MAAc,KAAVA,EAAoBH,EAAelI,GAEnCM,EAAcN,GACTO,OAAO+H,KAAKtI,GAAOuI,OAAO,SAASC,EAAKtG,GAE7C,MADAsG,GAAItG,GAAOkG,EAAgBpI,EAAMkC,GAAMmG,EAAQ,GACxCG,OAEAC,MAAMhI,QAAQT,GAChBA,EAAM0I,IAAI,SAASC,GACxB,MAAOP,GAAgBO,EAAKN,EAAQ,KAIjCH,EAAelI,GAGxB,QAAS4I,GAAmBC,EAAIR,EAAOS,GACrC,IAAKxI,EAAcuI,GAAK,MAAOA,EAE/BR,GAAyB,gBAAVA,GAAqBU,EAAgCV,EACpES,EAA2B,gBAAVT,GAAqBW,EAA+BF,CAErE,IAAIG,GAAab,EAAgBS,EAAIR,EAErC,OAAIN,GAASE,EAAUgB,IAAeH,EAC7BF,EAAmBC,EAAIR,EAAQ,GAGjCY,EAGT,QAASC,GAAwBZ,EAAMH,GACrC,GAAoB,gBAATG,IAAqC,gBAATA,GAAmB,MAAOA,GAAKrI,UACtE,KAAKwI,MAAMhI,QAAQ6H,GAAO,MAAO,EAKjC,IAHAA,EAAOA,EAAKa,OAAO,SAASjH,GAC1B,MAAsB,gBAARA,KAEI,IAAhBoG,EAAKzK,OAAc,MAAO,sBAG9B,IADAsK,EAAiC,gBAAdA,GAAyBiB,EAA4BjB,EACpEG,EAAK,GAAGzK,QAAUsK,EAAW,MAAOG,GAAK,EAE7C,KAAK,GAAIe,GAAWf,EAAKzK,OAAQwL,EAAW,EAAGA,IAAY,CACzD,GAAIJ,GAAaX,EAAKlJ,MAAM,EAAGiK,GAAUnG,KAAK,KAC9C,MAAI+F,EAAWpL,OAASsK,GACxB,MAAIkB,KAAaf,EAAKzK,OAAeoL,EAC9BA,EAAa,IAGtB,MAAO,GAGT,QAASK,GAAS7B,EAAO8B,GAcvB,QAASC,GAAeC,GACtB,MAAIhJ,GAAQgJ,GACHA,EAAYf,IAAI,SAASC,GAC9B,MAAOa,GAAeb,KAItBrI,EAAcmJ,GACTlJ,OAAO+H,KAAKmB,GAAalB,OAAO,SAASC,EAAKkB,GAMnD,MAJElB,GAAIkB,GADFC,EAAeC,KAAKF,GACbG,EAEAL,EAAeC,EAAYC,IAE/BlB,OAIJiB,EA/BT,IAAKhJ,EAAQ8I,IAAkB9I,EAAQ8I,IAAyC,IAAxBA,EAAa1L,OACnE,MAAO4J,EAET,IAEIqC,GAFAH,EAAiBjH,EAAW6G,GAC5BM,EAAe,UAGnB,KACEC,EAAY9B,KAAK+B,MAAM9B,EAAUR,IACjC,MAAOuC,GACP,MAAOvC,GAwBT,MAAO+B,GAAeM,GAlkBxB,GAAI7B,GAAYlK,EAAQ,GAEpBgD,EACgB,mBAAXvE,QACHA,OACkB,mBAAXC,GAAyBA,EAAyB,mBAATC,MAAuBA,QAgczEqM,EAAgC,EAEhCC,EAA+B,MAC/BI,EAA4B,EA6HhChN,GAAOD,SACL0D,SAAUA,EACVE,QAASA,EACTG,aAAcA,EACdE,YAAaA,EACbC,WAAYA,EACZC,cAAeA,EACfE,SAAUA,EACVC,QAASA,EACTC,cAAeA,EACfP,mBAAoBA,EACpBW,cAAeA,EACfK,uBAAwBA,EACxBE,8BAA+BA,EAC/BE,gBAAiBA,EACjBI,KAAMA,EACNI,YAAaA,EACbM,SAAUA,EACVF,aAAcA,EACdL,OAAQA,EACRY,WAAYA,EACZS,UAAWA,EACXY,MAAOA,EACPY,iBAAkBA,EAClBS,oBAAqBA,EACrBe,gBAAiBA,EACjBM,iBAAkBA,EAClBnD,SAAUA,EACV4D,KAAMA,EACN5H,SAAUA,EACVsJ,mBAAoBA,EACpBM,wBAAyBA,EACzBI,SAAUA,KAGT1L,KAAKjB,KAAuB,mBAAXF,QAAyBA,OAAyB,mBAATC,MAAuBA,KAAyB,mBAAXF,QAAyBA,aACxHyN,EAAI,IAAIA,GAAG,SAASlM,EAAQ3B,EAAOD,GAetC,QAAS+N,GAAQC,EAAUC,GACzB,IAAK,GAAI5M,GAAI,EAAGA,EAAI2M,EAAStM,SAAUL,EACrC,GAAI2M,EAAS3M,KAAO4M,EAAQ,MAAO5M,EAErC,UAGF,QAASyK,GAAUrG,EAAKyI,EAAUC,EAAQC,GACxC,MAAOvC,MAAKC,UAAUrG,EAAK4I,EAAWH,EAAUE,GAAgBD,GAIlE,QAASG,GAAezK,GACtB,GAAI0K,IAEFC,MAAO3K,EAAM2K,MACbC,QAAS5K,EAAM4K,QACfzD,KAAMnH,EAAMmH,KAGd,KAAK,GAAI3J,KAAKwC,GACRO,OAAOb,UAAUkB,eAAehD,KAAKoC,EAAOxC,KAC9CkN,EAAIlN,GAAKwC,EAAMxC,GAInB,OAAOkN,GAGT,QAASF,GAAWH,EAAUE,GAC5B,GAAII,MACArC,IAWJ,OATqB,OAAjBiC,IACFA,EAAgB,SAASrI,EAAKlC,GAC5B,MAAI2K,GAAM,KAAO3K,EACR,eAEF,eAAiBsI,EAAKlJ,MAAM,EAAG8K,EAAQS,EAAO3K,IAAQkD,KAAK,KAAO,MAItE,SAAShB,EAAKlC,GACnB,GAAI2K,EAAM9M,OAAS,EAAG,CACpB,GAAIgN,GAAUX,EAAQS,EAAOhO,OAC5BkO,EAAUF,EAAMG,OAAOD,EAAU,GAAKF,EAAMtM,KAAK1B,OACjDkO,EAAUvC,EAAKwC,OAAOD,EAASE,EAAAA,EAAU7I,GAAOoG,EAAKjK,KAAK6D,IAEtDgI,EAAQS,EAAO3K,KAClBA,EAAQuK,EAAc3M,KAAKjB,KAAMuF,EAAKlC,QAGxC2K,GAAMtM,KAAK2B,EAGb,OAAmB,OAAZqK,EACHrK,YAAiBvC,OAAQgN,EAAezK,GAASA,EACjDqK,EAASzM,KAAKjB,KAAMuF,EAAKlC,IA5DjC7D,EAAUC,EAAOD,QAAU8L,EAC3B9L,EAAQ6O,aAAeR,YA+DZ,IAAI","file":"console.min.js"} \ No newline at end of file diff --git a/dist/plugins/ember.js b/dist/plugins/ember.js deleted file mode 100644 index 68b096bd42ba..000000000000 --- a/dist/plugins/ember.js +++ /dev/null @@ -1,46 +0,0 @@ -/*! Raven.js 3.24.2 (d92b6a2) | github.com/getsentry/raven-js */ - -/* - * Includes TraceKit - * https://github.com/getsentry/TraceKit - * - * Copyright 2018 Matt Robenolt and other contributors - * Released under the BSD license - * https://github.com/getsentry/raven-js/blob/master/LICENSE - * - */ - -(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=(g.Raven||(g.Raven = {}));g=(g.Plugins||(g.Plugins = {}));g.Ember = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o' : 'anonymous component') + - (vm._isVue && vm.$options.__file ? ' at ' + vm.$options.__file : '') - ); -} - -function vuePlugin(Raven, Vue) { - Vue = Vue || window.Vue; - - // quit if Vue isn't on the page - if (!Vue || !Vue.config) return; - - var _oldOnError = Vue.config.errorHandler; - Vue.config.errorHandler = function VueErrorHandler(error, vm, info) { - var metaData = {}; - - // vm and lifecycleHook are not always available - if (Object.prototype.toString.call(vm) === '[object Object]') { - metaData.componentName = formatComponentName(vm); - metaData.propsData = vm.$options.propsData; - } - - if (typeof info !== 'undefined') { - metaData.lifecycleHook = info; - } - - Raven.captureException(error, { - extra: metaData - }); - - if (typeof _oldOnError === 'function') { - _oldOnError.call(this, error, vm, info); - } - }; -} - -module.exports = vuePlugin; - -},{}]},{},[1])(1) -}); \ No newline at end of file diff --git a/dist/plugins/vue.min.js b/dist/plugins/vue.min.js deleted file mode 100644 index b3013436bf13..000000000000 --- a/dist/plugins/vue.min.js +++ /dev/null @@ -1,3 +0,0 @@ -/*! Raven.js 3.24.2 (d92b6a2) | github.com/getsentry/raven-js */ -!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b=b.Raven||(b.Raven={}),b=b.Plugins||(b.Plugins={}),b.Vue=a()}}(function(){return function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};b[g][0].call(k.exports,function(a){var c=b[g][1][a];return e(c?c:a)},k,k.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;g":"anonymous component")+(a._isVue&&a.$options.__file?" at "+a.$options.__file:"")}function e(a,b){if(b=b||window.Vue,b&&b.config){var c=b.config.errorHandler;b.config.errorHandler=function(b,e,f){var g={};"[object Object]"===Object.prototype.toString.call(e)&&(g.componentName=d(e),g.propsData=e.$options.propsData),"undefined"!=typeof f&&(g.lifecycleHook=f),a.captureException(b,{extra:g}),"function"==typeof c&&c.call(this,b,e,f)}}}b.exports=e},{}]},{},[1])(1)}); -//# sourceMappingURL=vue.min.js.map \ No newline at end of file diff --git a/dist/plugins/vue.min.js.map b/dist/plugins/vue.min.js.map deleted file mode 100644 index f263c96e5eb5..000000000000 --- a/dist/plugins/vue.min.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["vue.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","Plugins","Vue","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","formatComponentName","vm","$root","name","_isVue","$options","_componentTag","__file","vuePlugin","config","_oldOnError","errorHandler","error","info","metaData","Object","prototype","toString","componentName","propsData","lifecycleHook","captureException","extra"],"mappings":";CAYA,SAAUA,GAAG,GAAoB,gBAAVC,UAAoC,mBAATC,QAAsBA,OAAOD,QAAQD,QAAS,IAAmB,kBAATG,SAAqBA,OAAOC,IAAKD,UAAUH,OAAO,CAAC,GAAIK,EAAkCA,GAAb,mBAATC,QAAwBA,OAA+B,mBAATC,QAAwBA,OAA6B,mBAAPC,MAAsBA,KAAYC,KAAKJ,EAAGA,EAAEK,QAAQL,EAAEK,UAAaL,EAAGA,EAAEM,UAAUN,EAAEM,YAAeN,EAAEO,IAAMZ,MAAO,WAAqC,MAAO,SAAUa,GAAEC,EAAEC,EAAEC,GAAG,QAASC,GAAEC,EAAEC,GAAG,IAAIJ,EAAEG,GAAG,CAAC,IAAIJ,EAAEI,GAAG,CAAC,GAAIE,GAAkB,kBAATC,UAAqBA,OAAQ,KAAIF,GAAGC,EAAE,MAAOA,GAAEF,GAAE,EAAI,IAAGI,EAAE,MAAOA,GAAEJ,GAAE,EAAI,IAAIlB,GAAE,GAAIuB,OAAM,uBAAuBL,EAAE,IAAK,MAAMlB,GAAEwB,KAAK,mBAAmBxB,EAAE,GAAIyB,GAAEV,EAAEG,IAAIjB,WAAYa,GAAEI,GAAG,GAAGQ,KAAKD,EAAExB,QAAQ,SAASY,GAAG,GAAIE,GAAED,EAAEI,GAAG,GAAGL,EAAG,OAAOI,GAAEF,EAAEA,EAAEF,IAAIY,EAAEA,EAAExB,QAAQY,EAAEC,EAAEC,EAAEC,GAAG,MAAOD,GAAEG,GAAGjB,QAAkD,IAAI,GAA1CqB,GAAkB,kBAATD,UAAqBA,QAAgBH,EAAE,EAAEA,EAAEF,EAAEW,OAAOT,IAAID,EAAED,EAAEE,GAAI,OAAOD,KAAKW,GAAG,SAASC,EAAQ3B,EAAOD,GAM93B,QAAS6B,GAAoBC,GAC3B,GAAIA,EAAGC,QAAUD,EACf,MAAO,eAET,IAAIE,GAAOF,EAAGG,OAASH,EAAGI,SAASF,MAAQF,EAAGI,SAASC,cAAgBL,EAAGE,IAC1E,QACGA,EAAO,cAAgBA,EAAO,IAAM,wBACpCF,EAAGG,QAAUH,EAAGI,SAASE,OAAS,OAASN,EAAGI,SAASE,OAAS,IAIrE,QAASC,GAAU5B,EAAOE,GAIxB,GAHAA,EAAMA,GAAON,OAAOM,IAGfA,GAAQA,EAAI2B,OAAjB,CAEA,GAAIC,GAAc5B,EAAI2B,OAAOE,YAC7B7B,GAAI2B,OAAOE,aAAe,SAAyBC,EAAOX,EAAIY,GAC5D,GAAIC,KAGuC,qBAAvCC,OAAOC,UAAUC,SAASrB,KAAKK,KACjCa,EAASI,cAAgBlB,EAAoBC,GAC7Ca,EAASK,UAAYlB,EAAGI,SAASc,WAGf,mBAATN,KACTC,EAASM,cAAgBP,GAG3BjC,EAAMyC,iBAAiBT,GACrBU,MAAOR,IAGkB,kBAAhBJ,IACTA,EAAYd,KAAKjB,KAAMiC,EAAOX,EAAIY,KAKxCzC,EAAOD,QAAUqC,YAEN,IAAI","file":"vue.min.js"} \ No newline at end of file diff --git a/dist/raven.js b/dist/raven.js index 4d52539e16d2..ac437a93d54b 100644 --- a/dist/raven.js +++ b/dist/raven.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.24.2 (d92b6a2) | github.com/getsentry/raven-js */ +/*! Raven.js 3.24.2 (540f32b) | github.com/getsentry/raven-js */ /* * Includes TraceKit diff --git a/dist/raven.min.js b/dist/raven.min.js index 68405096ac2f..aeb9035dc4f0 100644 --- a/dist/raven.min.js +++ b/dist/raven.min.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.24.2 (d92b6a2) | github.com/getsentry/raven-js */ +/*! Raven.js 3.24.2 (540f32b) | github.com/getsentry/raven-js */ !function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.Raven=a()}}(function(){return function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};b[g][0].call(k.exports,function(a){var c=b[g][1][a];return e(c?c:a)},k,k.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;gthis.k.maxBreadcrumbs&&this.u.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.r.push([a,b]),this.n&&this.F(),this},setUserContext:function(a){return this.j.user=a,this},setExtraContext:function(a){return this.Z("extra",a),this},setTagsContext:function(a){return this.Z("tags",a),this},clearContext:function(){return this.j={},this},getContext:function(){return JSON.parse(h(this.j))},setEnvironment:function(a){return this.k.environment=a,this},setRelease:function(a){return this.k.release=a,this},setDataCallback:function(a){var b=this.k.dataCallback;return this.k.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.k.breadcrumbCallback;return this.k.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.k.shouldSendCallback;return this.k.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.k.transport=a,this},lastException:function(){return this.d},lastEventId:function(){return this.f},isSetup:function(){return!!this.a&&(!!this.g||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.z("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=P.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(Q){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.H;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.j.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.J(this.G(c)),h=Q.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(Q.head||Q.body).appendChild(h)}},L:function(){var a=this;this.m+=1,setTimeout(function(){a.m-=1})},$:function(a,b){var c,d;if(this.b){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),Q.createEvent?(c=Q.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=Q.createEventObject(),c.eventType=a);for(d in b)y(b,d)&&(c[d]=b[d]);if(Q.createEvent)Q.dispatchEvent(c);else try{Q.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},_:function(a){var b=this;return function(c){if(b.aa=null,b.v!==c){b.v=c;var d;try{d=C(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ba:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.aa;g||a._("input")(c),clearTimeout(g),a.aa=setTimeout(function(){a.aa=null},b)}}},ca:function(a,b){var c=F(this.w.href),d=F(b),e=F(a);this.x=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},C:function(){var a=this;a.da=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.M?a.da.apply(this.O,arguments):a.da.apply(this,arguments)}},Q:function(){this.da&&(Function.prototype.toString=this.da)},D:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.ca(b.x,c+""),a.apply(this,arguments)}};G(history,"pushState",j,d),G(history,"replaceState",j,d)}if(c.console&&"console"in P&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};u(["debug","info","warn","error","log"],function(a,b){M(console,b,k)})}},R:function(){for(var a;this.t.length;){a=this.t.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},S:function(){for(var a in this.q)this.p[a]=this.q[a]},F:function(){var a=this;u(this.r,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},G:function(a){var b=O.exec(a),c={},d=7;try{for(;d--;)c[N[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.k.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},J:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},A:function(){this.m||this.V.apply(this,arguments)},V:function(a,b){var c=this.X(a,b);this.$("handle",{stackInfo:a,options:b}),this.fa(a.name,a.message,a.url,a.lineno,c,b)},X:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(u(a.stack,function(b,e){var f=c.ga(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.u,0)}),this.j.user&&(a.user=this.j.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),a=this.pa(a),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||t(a[b]))&&delete a[b]}),q(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!t(a)&&(!q(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.ma()?void this.z("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function B(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&j(b))for(c=b.split(/\s+/),f=0;fc?M(a,b-1):d}function N(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?T:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function O(a,b){function c(a){return k(a)?a.map(function(a){return c(a)}):i(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!k(b)||k(b)&&0===b.length)return a;var d,e=w(b),f="********";try{d=JSON.parse(P(a))}catch(g){return a}return c(d)}var P=a(7),Q="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},R=3,S=51200,T=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isUndefined:g,isFunction:h,isPlainObject:i,isString:j,isArray:k,isEmptyObject:l,supportsErrorEvent:m,supportsFetch:n,supportsReferrerPolicy:o,supportsPromiseRejectionEvent:p,wrappedCallback:q,each:r,objectMerge:s,truncate:u,objectFrozen:t,hasKey:v,joinRegExp:w,urlencode:x,uuid4:z,htmlTreeAsString:A,htmlElementAsString:B,isSameException:E,isSameStacktrace:F,parseUrl:y,fill:G,safeJoin:H,serializeException:M,serializeKeysForMessage:N,sanitize:O}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{7:7}],6:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}var e=a(5),f={collectWindowErrors:!0,debug:!1},g="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},h=[].slice,i="?",j=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;f.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function k(a,b){var c=null;if(!b||f.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(h.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,g,h){var l=null,m=e.isErrorEvent(h)?h.error:h,n=e.isErrorEvent(a)?a.message:a;if(v)f.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&e.isError(m))l=f.computeStackTrace(m),k(l,!0);else{var p,r={url:b,line:c,column:g},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(j);p&&(s=p[1],n=p[2])}r.func=i,l={name:s,message:n,url:d(),stack:[r]},k(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=g.onerror,g.onerror=l,r=!0)}function n(){r&&(g.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,k.apply(null,[a,!1].concat(b))}function p(a,b){var c=h.call(arguments,1);if(v){if(u===a)return;o()}var d=f.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),f.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,e,f=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,g=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,h=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,j=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,k=/\((\S*)(?::(\d+))(?::(\d+))\)/,l=a.stack.split("\n"),m=[],n=(/^(.*) is undefined$/.exec(a.message),0),o=l.length;n eval")>-1;q&&(b=j.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==n||c[5]||"undefined"==typeof a.columnNumber||(m[0].column=a.columnNumber+1),e={url:c[3],func:c[1]||i,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}!e.func&&e.line&&(e.func=i),m.push(e)}return m.length?{name:a.name,message:a.message,url:d(),stack:m}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=i),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,g){for(var h,j,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==e&&o!==f.report){if(j={url:null,func:i,line:null,column:null},o.name?j.func=o.name:(h=k.exec(o.toString()))&&(j.func=h[1]),"undefined"==typeof j.func)try{j.func=h.input.substring(0,h.input.indexOf("{"))}catch(p){}m[""+o]?n=!0:m[""+o]=!0,l.push(j)}g&&l.splice(0,g);var q={name:a.name,message:a.message,url:d(),stack:l};return b(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),q}function e(b,e){var g=null;e=null==e?0:+e;try{if(g=a(b))return g}catch(h){if(f.debug)throw h}try{if(g=c(b,e+1))return g}catch(h){if(f.debug)throw h}return{name:b.name,message:b.message,url:d()}}return e.augmentStackTraceWithInitialElement=b,e.computeStackTraceFromStackProp=a,e}(),b.exports=f}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{5:5}],7:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}],8:[function(a,b,c){function d(a,b){var c=(65535&a)+(65535&b),d=(a>>16)+(b>>16)+(c>>16);return d<<16|65535&c}function e(a,b){return a<>>32-b}function f(a,b,c,f,g,h){return d(e(d(d(b,a),d(f,h)),g),c)}function g(a,b,c,d,e,g,h){return f(b&c|~b&d,a,b,e,g,h)}function h(a,b,c,d,e,g,h){return f(b&d|c&~d,a,b,e,g,h)}function i(a,b,c,d,e,g,h){return f(b^c^d,a,b,e,g,h)}function j(a,b,c,d,e,g,h){ return f(c^(b|~d),a,b,e,g,h)}function k(a,b){a[b>>5]|=128<>>9<<4)+14]=b;var c,e,f,k,l,m=1732584193,n=-271733879,o=-1732584194,p=271733878;for(c=0;c>5]>>>b%32&255);return c}function m(a){var b,c=[];for(c[(a.length>>2)-1]=void 0,b=0;b>5]|=(255&a.charCodeAt(b/8))<16&&(e=k(e,8*a.length)),c=0;c<16;c+=1)f[c]=909522486^e[c],g[c]=1549556828^e[c];return d=k(f.concat(m(b)),512+8*b.length),l(k(g.concat(d),640))}function p(a){var b,c,d="0123456789abcdef",e="";for(c=0;c>>4&15)+d.charAt(15&b);return e}function q(a){return unescape(encodeURIComponent(a))}function r(a){return n(q(a))}function s(a){return p(r(a))}function t(a,b){return o(q(a),q(b))}function u(a,b){return p(t(a,b))}function v(a,b,c){return b?c?t(b,a):u(b,a):c?r(a):s(a)}b.exports=v},{}]},{},[4])(4)}); //# sourceMappingURL=raven.min.js.map \ No newline at end of file diff --git a/dist/require,vue/raven.js b/dist/require,vue/raven.js index 4481d7a37351..a44a8b154c74 100644 --- a/dist/require,vue/raven.js +++ b/dist/require,vue/raven.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.22.2 (1b6187b) | github.com/getsentry/raven-js */ +/*! Raven.js 3.24.2 (540f32b) | github.com/getsentry/raven-js */ /* * Includes TraceKit @@ -10,3193 +10,3962 @@ * */ -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : - typeof define === 'function' && define.amd ? define(factory) : - (global.Raven = factory()); -}(this, (function () { 'use strict'; - -var commonjsGlobal = typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; - -function commonjsRequire () { - throw new Error('Dynamic requires are not currently supported by rollup-plugin-commonjs'); +(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.Raven = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o' : 'anonymous component') + + (vm._isVue && vm.$options.__file ? ' at ' + vm.$options.__file : '') + ); } -var _sPO = Object.setPrototypeOf || function _sPO(o, p) { - o.__proto__ = p; - return o; -}; - -var _construct = typeof Reflect === "object" && Reflect.construct || function _construct(Parent, args, Class) { - var Constructor, - a = [null]; - a.push.apply(a, args); - Constructor = Parent.bind.apply(Parent, a); - return _sPO(new Constructor(), Class.prototype); -}; - -var _window$3 = typeof window !== 'undefined' ? window : typeof commonjsGlobal !== 'undefined' ? commonjsGlobal : typeof self !== 'undefined' ? self : {}; - -function isObject$1(what) { - return _typeof(what) === 'object' && what !== null; -} // Yanked from https://git.io/vS8DV re-used under CC0 -// with some tiny modifications - +function vuePlugin(Raven, Vue) { + Vue = Vue || window.Vue; -function isError$1(value) { - switch ({}.toString.call(value)) { - case '[object Error]': - return true; + // quit if Vue isn't on the page + if (!Vue || !Vue.config) return; - case '[object Exception]': - return true; + var _oldOnError = Vue.config.errorHandler; + Vue.config.errorHandler = function VueErrorHandler(error, vm, info) { + var metaData = {}; - case '[object DOMException]': - return true; + // vm and lifecycleHook are not always available + if (Object.prototype.toString.call(vm) === '[object Object]') { + metaData.componentName = formatComponentName(vm); + metaData.propsData = vm.$options.propsData; + } - default: - return value instanceof Error; - } -} + if (typeof info !== 'undefined') { + metaData.lifecycleHook = info; + } -function isErrorEvent$1(value) { - return supportsErrorEvent() && {}.toString.call(value) === '[object ErrorEvent]'; -} + Raven.captureException(error, { + extra: metaData + }); -function isUndefined$1(what) { - return what === void 0; + if (typeof _oldOnError === 'function') { + _oldOnError.call(this, error, vm, info); + } + }; } -function isFunction$1(what) { - return typeof what === 'function'; -} +module.exports = vuePlugin; -function isPlainObject(what) { - return Object.prototype.toString.call(what) === '[object Object]'; +_dereq_(6).addPlugin(module.exports); +},{"6":6}],3:[function(_dereq_,module,exports){ +function RavenConfigError(message) { + this.name = 'RavenConfigError'; + this.message = message; } +RavenConfigError.prototype = new Error(); +RavenConfigError.prototype.constructor = RavenConfigError; -function isString$1(what) { - return Object.prototype.toString.call(what) === '[object String]'; -} +module.exports = RavenConfigError; -function isArray$1(what) { - return Object.prototype.toString.call(what) === '[object Array]'; -} +},{}],4:[function(_dereq_,module,exports){ +var utils = _dereq_(7); -function isEmptyObject$1(what) { - if (!isPlainObject(what)) return false; +var wrapMethod = function(console, level, callback) { + var originalConsoleLevel = console[level]; + var originalConsole = console; - for (var _ in what) { - if (what.hasOwnProperty(_)) { - return false; - } + if (!(level in console)) { + return; } - return true; -} + var sentryLevel = level === 'warn' ? 'warning' : level; -function supportsErrorEvent() { - try { - new ErrorEvent(''); // eslint-disable-line no-new + console[level] = function() { + var args = [].slice.call(arguments); - return true; - } catch (e) { - return false; - } -} + var msg = utils.safeJoin(args, ' '); + var data = {level: sentryLevel, logger: 'console', extra: {arguments: args}}; -function supportsFetch$1() { - if (!('fetch' in _window$3)) return false; + if (level === 'assert') { + if (args[0] === false) { + // Default browsers message + msg = + 'Assertion failed: ' + (utils.safeJoin(args.slice(1), ' ') || 'console.assert'); + data.extra.arguments = args.slice(1); + callback && callback(msg, data); + } + } else { + callback && callback(msg, data); + } - try { - new Headers(); // eslint-disable-line no-new + // this fails for some browsers. :( + if (originalConsoleLevel) { + // IE9 doesn't allow calling apply on console functions directly + // See: https://stackoverflow.com/questions/5472938/does-ie9-support-console-log-and-is-it-a-real-function#answer-5473193 + Function.prototype.apply.call(originalConsoleLevel, originalConsole, args); + } + }; +}; - new Request(''); // eslint-disable-line no-new +module.exports = { + wrapMethod: wrapMethod +}; - new Response(); // eslint-disable-line no-new +},{"7":7}],5:[function(_dereq_,module,exports){ +(function (global){ +/*global XDomainRequest:false */ - return true; - } catch (e) { - return false; - } -} +var TraceKit = _dereq_(8); +var stringify = _dereq_(9); +var md5 = _dereq_(10); +var RavenConfigError = _dereq_(3); -function wrappedCallback(callback) { - function dataCallback(data, original) { - var normalizedData = callback(data) || data; +var utils = _dereq_(7); +var isError = utils.isError; +var isObject = utils.isObject; +var isPlainObject = utils.isPlainObject; +var isErrorEvent = utils.isErrorEvent; +var isUndefined = utils.isUndefined; +var isFunction = utils.isFunction; +var isString = utils.isString; +var isArray = utils.isArray; +var isEmptyObject = utils.isEmptyObject; +var each = utils.each; +var objectMerge = utils.objectMerge; +var truncate = utils.truncate; +var objectFrozen = utils.objectFrozen; +var hasKey = utils.hasKey; +var joinRegExp = utils.joinRegExp; +var urlencode = utils.urlencode; +var uuid4 = utils.uuid4; +var htmlTreeAsString = utils.htmlTreeAsString; +var isSameException = utils.isSameException; +var isSameStacktrace = utils.isSameStacktrace; +var parseUrl = utils.parseUrl; +var fill = utils.fill; +var supportsFetch = utils.supportsFetch; +var supportsReferrerPolicy = utils.supportsReferrerPolicy; +var serializeKeysForMessage = utils.serializeKeysForMessage; +var serializeException = utils.serializeException; +var sanitize = utils.sanitize; - if (original) { - return original(normalizedData) || normalizedData; - } +var wrapConsoleMethod = _dereq_(4).wrapMethod; - return normalizedData; - } +var dsnKeys = 'source protocol user pass host port path'.split(' '), + dsnPattern = /^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/; - return dataCallback; +function now() { + return +new Date(); } -function each$1(obj, callback) { - var i, j; - - if (isUndefined$1(obj.length)) { - for (i in obj) { - if (hasKey$1(obj, i)) { - callback.call(null, i, obj[i]); - } - } - } else { - j = obj.length; +// This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) +var _window = + typeof window !== 'undefined' + ? window + : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; +var _document = _window.document; +var _navigator = _window.navigator; - if (j) { - for (i = 0; i < j; i++) { - callback.call(null, i, obj[i]); +function keepOriginalCallback(original, callback) { + return isFunction(callback) + ? function(data) { + return callback(data, original); } - } - } -} - -function objectMerge$1(obj1, obj2) { - if (!obj2) { - return obj1; - } - - each$1(obj2, function (key, value) { - obj1[key] = value; - }); - return obj1; + : callback; } -/** - * This function is only used for react-native. - * react-native freezes object that have already been sent over the - * js bridge. We need this function in order to check if the object is frozen. - * So it's ok that objectFrozen returns false if Object.isFrozen is not - * supported because it's not relevant for other "platforms". See related issue: - * https://github.com/getsentry/react-native-sentry/issues/57 - */ +// First, check for JSON support +// If there is no JSON, we no-op the core features of Raven +// since JSON is required to encode the payload +function Raven() { + this._hasJSON = !!(typeof JSON === 'object' && JSON.stringify); + // Raven can run in contexts where there's no document (react-native) + this._hasDocument = !isUndefined(_document); + this._hasNavigator = !isUndefined(_navigator); + this._lastCapturedException = null; + this._lastData = null; + this._lastEventId = null; + this._globalServer = null; + this._globalKey = null; + this._globalProject = null; + this._globalContext = {}; + this._globalOptions = { + // SENTRY_RELEASE can be injected by https://github.com/getsentry/sentry-webpack-plugin + release: _window.SENTRY_RELEASE && _window.SENTRY_RELEASE.id, + logger: 'javascript', + ignoreErrors: [], + ignoreUrls: [], + whitelistUrls: [], + includePaths: [], + headers: null, + collectWindowErrors: true, + captureUnhandledRejections: true, + maxMessageLength: 0, + // By default, truncates URL values to 250 chars + maxUrlLength: 250, + stackTraceLimit: 50, + autoBreadcrumbs: true, + instrument: true, + sampleRate: 1, + sanitizeKeys: [] + }; + this._fetchDefaults = { + method: 'POST', + keepalive: true, + // Despite all stars in the sky saying that Edge supports old draft syntax, aka 'never', 'always', 'origin' and 'default + // https://caniuse.com/#feat=referrer-policy + // It doesn't. And it throw exception instead of ignoring this parameter... + // REF: https://github.com/getsentry/raven-js/issues/1233 + referrerPolicy: supportsReferrerPolicy() ? 'origin' : '' + }; + this._ignoreOnError = 0; + this._isRavenInstalled = false; + this._originalErrorStackTraceLimit = Error.stackTraceLimit; + // capture references to window.console *and* all its methods first + // before the console plugin has a chance to monkey patch + this._originalConsole = _window.console || {}; + this._originalConsoleMethods = {}; + this._plugins = []; + this._startTime = now(); + this._wrappedBuiltIns = []; + this._breadcrumbs = []; + this._lastCapturedEvent = null; + this._keypressTimeout; + this._location = _window.location; + this._lastHref = this._location && this._location.href; + this._resetBackoff(); -function objectFrozen$1(obj) { - if (!Object.isFrozen) { - return false; + // eslint-disable-next-line guard-for-in + for (var method in this._originalConsole) { + this._originalConsoleMethods[method] = this._originalConsole[method]; } - - return Object.isFrozen(obj); } -function truncate$1(str, max) { - return !max || str.length <= max ? str : str.substr(0, max) + "\u2026"; -} -/** - * hasKey, a better form of hasOwnProperty - * Example: hasKey(MainHostObject, property) === true/false +/* + * The core Raven singleton * - * @param {Object} host object to check property - * @param {string} key to check + * @this {Raven} */ +Raven.prototype = { + // Hardcode version string so that raven source can be loaded directly via + // webpack (using a build step causes webpack #1617). Grunt verifies that + // this value matches package.json during build. + // See: https://github.com/getsentry/raven-js/issues/465 + VERSION: '3.24.2', -function hasKey$1(object, key) { - return Object.prototype.hasOwnProperty.call(object, key); -} + debug: false, -function joinRegExp$1(patterns) { - // Combine an array of regular expressions and strings into one large regexp - // Be mad. - var sources = [], - i = 0, - len = patterns.length, - pattern; + TraceKit: TraceKit, // alias to TraceKit - for (; i < len; i++) { - pattern = patterns[i]; + /* + * Configure Raven with a DSN and extra options + * + * @param {string} dsn The public Sentry DSN + * @param {object} options Set of global options [optional] + * @return {Raven} + */ + config: function(dsn, options) { + var self = this; - if (isString$1(pattern)) { - // If it's a string, we need to escape it - // Taken from: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions - sources.push(pattern.replace(/([.*+?^=!:${}()|\[\]\/\\])/g, '\\$1')); - } else if (pattern && pattern.source) { - // If it's a regexp already, we want to extract the source - sources.push(pattern.source); - } // Intentionally skip other cases + if (self._globalServer) { + this._logDebug('error', 'Error: Raven has already been configured'); + return self; + } + if (!dsn) return self; - } + var globalOptions = self._globalOptions; - return new RegExp(sources.join('|'), 'i'); -} + // merge in options + if (options) { + each(options, function(key, value) { + // tags and extra are special and need to be put into context + if (key === 'tags' || key === 'extra' || key === 'user') { + self._globalContext[key] = value; + } else { + globalOptions[key] = value; + } + }); + } -function urlencode$1(o) { - var pairs = []; - each$1(o, function (key, value) { - pairs.push(encodeURIComponent(key) + '=' + encodeURIComponent(value)); - }); - return pairs.join('&'); -} // borrowed from https://tools.ietf.org/html/rfc3986#appendix-B -// intentionally using regex and not href parsing trick because React Native and other -// environments where DOM might not be available + self.setDSN(dsn); + // "Script error." is hard coded into browsers for errors that it can't read. + // this is the result of a script being pulled in from an external domain and CORS. + globalOptions.ignoreErrors.push(/^Script error\.?$/); + globalOptions.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/); -function parseUrl$1(url) { - if (typeof url !== 'string') return {}; - var match = url.match(/^(([^:\/?#]+):)?(\/\/([^\/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?$/); // coerce to undefined values to empty string so we don't get 'undefined' + // join regexp rules into one big rule + globalOptions.ignoreErrors = joinRegExp(globalOptions.ignoreErrors); + globalOptions.ignoreUrls = globalOptions.ignoreUrls.length + ? joinRegExp(globalOptions.ignoreUrls) + : false; + globalOptions.whitelistUrls = globalOptions.whitelistUrls.length + ? joinRegExp(globalOptions.whitelistUrls) + : false; + globalOptions.includePaths = joinRegExp(globalOptions.includePaths); + globalOptions.maxBreadcrumbs = Math.max( + 0, + Math.min(globalOptions.maxBreadcrumbs || 100, 100) + ); // default and hard limit is 100 - var query = match[6] || ''; - var fragment = match[8] || ''; - return { - protocol: match[2], - host: match[4], - path: match[5], - relative: match[5] + query + fragment // everything minus origin + var autoBreadcrumbDefaults = { + xhr: true, + console: true, + dom: true, + location: true, + sentry: true + }; - }; -} + var autoBreadcrumbs = globalOptions.autoBreadcrumbs; + if ({}.toString.call(autoBreadcrumbs) === '[object Object]') { + autoBreadcrumbs = objectMerge(autoBreadcrumbDefaults, autoBreadcrumbs); + } else if (autoBreadcrumbs !== false) { + autoBreadcrumbs = autoBreadcrumbDefaults; + } + globalOptions.autoBreadcrumbs = autoBreadcrumbs; -function uuid4$1() { - var crypto = _window$3.crypto || _window$3.msCrypto; + var instrumentDefaults = { + tryCatch: true + }; - if (!isUndefined$1(crypto) && crypto.getRandomValues) { - // Use window.crypto API if available - // eslint-disable-next-line no-undef - var arr = new Uint16Array(8); - crypto.getRandomValues(arr); // set 4 in byte 7 + var instrument = globalOptions.instrument; + if ({}.toString.call(instrument) === '[object Object]') { + instrument = objectMerge(instrumentDefaults, instrument); + } else if (instrument !== false) { + instrument = instrumentDefaults; + } + globalOptions.instrument = instrument; - arr[3] = arr[3] & 0xfff | 0x4000; // set 2 most significant bits of byte 9 to '10' + TraceKit.collectWindowErrors = !!globalOptions.collectWindowErrors; - arr[4] = arr[4] & 0x3fff | 0x8000; + // return for chaining + return self; + }, - var pad = function pad(num) { - var v = num.toString(16); + /* + * Installs a global window.onerror error handler + * to capture and report uncaught exceptions. + * At this point, install() is required to be called due + * to the way TraceKit is set up. + * + * @return {Raven} + */ + install: function() { + var self = this; + if (self.isSetup() && !self._isRavenInstalled) { + TraceKit.report.subscribe(function() { + self._handleOnErrorStackInfo.apply(self, arguments); + }); - while (v.length < 4) { - v = '0' + v; + if (self._globalOptions.captureUnhandledRejections) { + self._attachPromiseRejectionHandler(); } - return v; - }; - - return pad(arr[0]) + pad(arr[1]) + pad(arr[2]) + pad(arr[3]) + pad(arr[4]) + pad(arr[5]) + pad(arr[6]) + pad(arr[7]); - } else { - // http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/2117523#2117523 - return 'xxxxxxxxxxxx4xxxyxxxxxxxxxxxxxxx'.replace(/[xy]/g, function (c) { - var r = Math.random() * 16 | 0, - v = c === 'x' ? r : r & 0x3 | 0x8; - return v.toString(16); - }); - } -} -/** - * Given a child DOM element, returns a query-selector statement describing that - * and its ancestors - * e.g. [HTMLElement] => body > div > input#foo.btn[name=baz] - * @param elem - * @returns {string} - */ + self._patchFunctionToString(); + if (self._globalOptions.instrument && self._globalOptions.instrument.tryCatch) { + self._instrumentTryCatch(); + } -function htmlTreeAsString$1(elem) { - /* eslint no-extra-parens:0*/ - var MAX_TRAVERSE_HEIGHT = 5, - MAX_OUTPUT_LEN = 80, - out = [], - height = 0, - len = 0, - separator = ' > ', - sepLength = separator.length, - nextStr; + if (self._globalOptions.autoBreadcrumbs) self._instrumentBreadcrumbs(); - while (elem && height++ < MAX_TRAVERSE_HEIGHT) { - nextStr = htmlElementAsString(elem); // bail out if - // - nextStr is the 'html' element - // - the length of the string that would be created exceeds MAX_OUTPUT_LEN - // (ignore this limit if we are on the first iteration) + // Install all of the plugins + self._drainPlugins(); - if (nextStr === 'html' || height > 1 && len + out.length * sepLength + nextStr.length >= MAX_OUTPUT_LEN) { - break; + self._isRavenInstalled = true; } - out.push(nextStr); - len += nextStr.length; - elem = elem.parentNode; - } + Error.stackTraceLimit = self._globalOptions.stackTraceLimit; + return this; + }, - return out.reverse().join(separator); -} -/** - * Returns a simple, query-selector representation of a DOM element - * e.g. [HTMLElement] => input#foo.btn[name=baz] - * @param HTMLElement - * @returns {string} - */ + /* + * Set the DSN (can be called multiple time unlike config) + * + * @param {string} dsn The public Sentry DSN + */ + setDSN: function(dsn) { + var self = this, + uri = self._parseDSN(dsn), + lastSlash = uri.path.lastIndexOf('/'), + path = uri.path.substr(1, lastSlash); + self._dsn = dsn; + self._globalKey = uri.user; + self._globalSecret = uri.pass && uri.pass.substr(1); + self._globalProject = uri.path.substr(lastSlash + 1); -function htmlElementAsString(elem) { - var out = [], - className, - classes, - key, - attr, - i; + self._globalServer = self._getGlobalServer(uri); - if (!elem || !elem.tagName) { - return ''; - } + self._globalEndpoint = + self._globalServer + '/' + path + 'api/' + self._globalProject + '/store/'; - out.push(elem.tagName.toLowerCase()); + // Reset backoff state since we may be pointing at a + // new project/server + this._resetBackoff(); + }, - if (elem.id) { - out.push('#' + elem.id); - } + /* + * Wrap code within a context so Raven can capture errors + * reliably across domains that is executed immediately. + * + * @param {object} options A specific set of options for this context [optional] + * @param {function} func The callback to be immediately executed within the context + * @param {array} args An array of arguments to be called with the callback [optional] + */ + context: function(options, func, args) { + if (isFunction(options)) { + args = func || []; + func = options; + options = undefined; + } - className = elem.className; + return this.wrap(options, func).apply(this, args); + }, - if (className && isString$1(className)) { - classes = className.split(/\s+/); + /* + * Wrap code within a context and returns back a new function to be executed + * + * @param {object} options A specific set of options for this context [optional] + * @param {function} func The function to be wrapped in a new context + * @param {function} func A function to call before the try/catch wrapper [optional, private] + * @return {function} The newly wrapped functions with a context + */ + wrap: function(options, func, _before) { + var self = this; + // 1 argument has been passed, and it's not a function + // so just return it + if (isUndefined(func) && !isFunction(options)) { + return options; + } - for (i = 0; i < classes.length; i++) { - out.push('.' + classes[i]); + // options is optional + if (isFunction(options)) { + func = options; + options = undefined; } - } - var attrWhitelist = ['type', 'name', 'title', 'alt']; + // At this point, we've passed along 2 arguments, and the second one + // is not a function either, so we'll just return the second argument. + if (!isFunction(func)) { + return func; + } - for (i = 0; i < attrWhitelist.length; i++) { - key = attrWhitelist[i]; - attr = elem.getAttribute(key); + // We don't wanna wrap it twice! + try { + if (func.__raven__) { + return func; + } - if (attr) { - out.push('[' + key + '="' + attr + '"]'); + // If this has already been wrapped in the past, return that + if (func.__raven_wrapper__) { + return func.__raven_wrapper__; + } + } catch (e) { + // Just accessing custom props in some Selenium environments + // can cause a "Permission denied" exception (see raven-js#495). + // Bail on wrapping and return the function as-is (defers to window.onerror). + return func; } - } - return out.join(''); -} -/** - * Returns true if either a OR b is truthy, but not both - */ + function wrapped() { + var args = [], + i = arguments.length, + deep = !options || (options && options.deep !== false); + if (_before && isFunction(_before)) { + _before.apply(this, arguments); + } -function isOnlyOneTruthy(a, b) { - return !!(!!a ^ !!b); -} -/** - * Returns true if both parameters are undefined - */ + // Recursively wrap all of a function's arguments that are + // functions themselves. + while (i--) args[i] = deep ? self.wrap(options, arguments[i]) : arguments[i]; + try { + // Attempt to invoke user-land function + // NOTE: If you are a Sentry user, and you are seeing this stack frame, it + // means Raven caught an error invoking your application code. This is + // expected behavior and NOT indicative of a bug with Raven.js. + return func.apply(this, args); + } catch (e) { + self._ignoreNextOnError(); + self.captureException(e, options); + throw e; + } + } -function isBothUndefined(a, b) { - return isUndefined$1(a) && isUndefined$1(b); -} -/** - * Returns true if the two input exception interfaces have the same content - */ + // copy over properties of the old function + for (var property in func) { + if (hasKey(func, property)) { + wrapped[property] = func[property]; + } + } + wrapped.prototype = func.prototype; + func.__raven_wrapper__ = wrapped; + // Signal that this function has been wrapped/filled already + // for both debugging and to prevent it to being wrapped/filled twice + wrapped.__raven__ = true; + wrapped.__orig__ = func; -function isSameException$1(ex1, ex2) { - if (isOnlyOneTruthy(ex1, ex2)) return false; - ex1 = ex1.values[0]; - ex2 = ex2.values[0]; - if (ex1.type !== ex2.type || ex1.value !== ex2.value) return false; // in case both stacktraces are undefined, we can't decide so default to false + return wrapped; + }, - if (isBothUndefined(ex1.stacktrace, ex2.stacktrace)) return false; - return isSameStacktrace$1(ex1.stacktrace, ex2.stacktrace); -} -/** - * Returns true if the two input stack trace interfaces have the same content - */ + /** + * Uninstalls the global error handler. + * + * @return {Raven} + */ + uninstall: function() { + TraceKit.report.uninstall(); + this._detachPromiseRejectionHandler(); + this._unpatchFunctionToString(); + this._restoreBuiltIns(); + this._restoreConsole(); -function isSameStacktrace$1(stack1, stack2) { - if (isOnlyOneTruthy(stack1, stack2)) return false; - var frames1 = stack1.frames; - var frames2 = stack2.frames; // Exit early if frame count differs + Error.stackTraceLimit = this._originalErrorStackTraceLimit; + this._isRavenInstalled = false; - if (frames1.length !== frames2.length) return false; // Iterate through every frame; bail out if anything differs + return this; + }, - var a, b; + /** + * Callback used for `unhandledrejection` event + * + * @param {PromiseRejectionEvent} event An object containing + * promise: the Promise that was rejected + * reason: the value with which the Promise was rejected + * @return void + */ + _promiseRejectionHandler: function(event) { + this._logDebug('debug', 'Raven caught unhandled promise rejection:', event); + this.captureException(event.reason, { + extra: { + unhandledPromiseRejection: true + } + }); + }, - for (var i = 0; i < frames1.length; i++) { - a = frames1[i]; - b = frames2[i]; - if (a.filename !== b.filename || a.lineno !== b.lineno || a.colno !== b.colno || a['function'] !== b['function']) return false; - } + /** + * Installs the global promise rejection handler. + * + * @return {raven} + */ + _attachPromiseRejectionHandler: function() { + this._promiseRejectionHandler = this._promiseRejectionHandler.bind(this); + _window.addEventListener && + _window.addEventListener('unhandledrejection', this._promiseRejectionHandler); + return this; + }, - return true; -} -/** - * Polyfill a method - * @param obj object e.g. `document` - * @param name method name present on object e.g. `addEventListener` - * @param replacement replacement function - * @param track {optional} record instrumentation to an array - */ + /** + * Uninstalls the global promise rejection handler. + * + * @return {raven} + */ + _detachPromiseRejectionHandler: function() { + _window.removeEventListener && + _window.removeEventListener('unhandledrejection', this._promiseRejectionHandler); + return this; + }, + /** + * Manually capture an exception and send it over to Sentry + * + * @param {error} ex An exception to be logged + * @param {object} options A specific set of options for this error [optional] + * @return {Raven} + */ + captureException: function(ex, options) { + options = objectMerge({trimHeadFrames: 0}, options ? options : {}); + + if (isErrorEvent(ex) && ex.error) { + // If it is an ErrorEvent with `error` property, extract it to get actual Error + ex = ex.error; + } else if (isError(ex)) { + // we have a real Error object + ex = ex; + } else if (isPlainObject(ex)) { + // If it is plain Object, serialize it manually and extract options + // This will allow us to group events based on top-level keys + // which is much better than creating new group when any key/value change + options = this._getCaptureExceptionOptionsFromPlainObject(options, ex); + ex = new Error(options.message); + } else { + // If none of previous checks were valid, then it means that + // it's not a plain Object + // it's not a valid ErrorEvent (one with an error property) + // it's not an Error + // So bail out and capture it as a simple message: + return this.captureMessage( + ex, + objectMerge(options, { + stacktrace: true, // if we fall back to captureMessage, default to attempting a new trace + trimHeadFrames: options.trimHeadFrames + 1 + }) + ); + } + + // Store the raw exception object for potential debugging and introspection + this._lastCapturedException = ex; + + // TraceKit.report will re-raise any exception passed to it, + // which means you have to wrap it in try/catch. Instead, we + // can wrap it here and only re-raise if TraceKit.report + // raises an exception different from the one we asked to + // report on. + try { + var stack = TraceKit.computeStackTrace(ex); + this._handleStackInfo(stack, options); + } catch (ex1) { + if (ex !== ex1) { + throw ex1; + } + } -function fill$1(obj, name, replacement, track) { - var orig = obj[name]; - obj[name] = replacement(orig); - obj[name].__raven__ = true; - obj[name].__orig__ = orig; + return this; + }, - if (track) { - track.push([obj, name, orig]); - } -} -/** - * Join values in array - * @param input array of values to be joined together - * @param delimiter string to be placed in-between values - * @returns {string} - */ + _getCaptureExceptionOptionsFromPlainObject: function(currentOptions, ex) { + var exKeys = Object.keys(ex).sort(); + var options = objectMerge(currentOptions, { + message: + 'Non-Error exception captured with keys: ' + serializeKeysForMessage(exKeys), + fingerprint: [md5(exKeys)], + extra: currentOptions.extra || {} + }); + options.extra.__serialized__ = serializeException(ex); + return options; + }, -function safeJoin(input, delimiter) { - if (!isArray$1(input)) return ''; - var output = []; + /* + * Manually send a message to Sentry + * + * @param {string} msg A plain message to be captured in Sentry + * @param {object} options A specific set of options for this message [optional] + * @return {Raven} + */ + captureMessage: function(msg, options) { + // config() automagically converts ignoreErrors from a list to a RegExp so we need to test for an + // early call; we'll error on the side of logging anything called before configuration since it's + // probably something you should see: + if ( + !!this._globalOptions.ignoreErrors.test && + this._globalOptions.ignoreErrors.test(msg) + ) { + return; + } - for (var i = 0; i < input.length; i++) { + options = options || {}; + msg = msg + ''; // Make sure it's actually a string + + var data = objectMerge( + { + message: msg + }, + options + ); + + var ex; + // Generate a "synthetic" stack trace from this point. + // NOTE: If you are a Sentry user, and you are seeing this stack frame, it is NOT indicative + // of a bug with Raven.js. Sentry generates synthetic traces either by configuration, + // or if it catches a thrown object without a "stack" property. try { - output.push(String(input[i])); - } catch (e) { - output.push('[value cannot be serialized]'); + throw new Error(msg); + } catch (ex1) { + ex = ex1; } - } - - return output.join(delimiter); -} -var utils = { - isObject: isObject$1, - isError: isError$1, - isErrorEvent: isErrorEvent$1, - isUndefined: isUndefined$1, - isFunction: isFunction$1, - isPlainObject: isPlainObject, - isString: isString$1, - isArray: isArray$1, - isEmptyObject: isEmptyObject$1, - supportsErrorEvent: supportsErrorEvent, - supportsFetch: supportsFetch$1, - wrappedCallback: wrappedCallback, - each: each$1, - objectMerge: objectMerge$1, - truncate: truncate$1, - objectFrozen: objectFrozen$1, - hasKey: hasKey$1, - joinRegExp: joinRegExp$1, - urlencode: urlencode$1, - uuid4: uuid4$1, - htmlTreeAsString: htmlTreeAsString$1, - htmlElementAsString: htmlElementAsString, - isSameException: isSameException$1, - isSameStacktrace: isSameStacktrace$1, - parseUrl: parseUrl$1, - fill: fill$1, - safeJoin: safeJoin -}; + // null exception name so `Error` isn't prefixed to msg + ex.name = null; + var stack = TraceKit.computeStackTrace(ex); -/* - TraceKit - Cross brower stack traces + // stack[0] is `throw new Error(msg)` call itself, we are interested in the frame that was just before that, stack[1] + var initialCall = isArray(stack.stack) && stack.stack[1]; - This was originally forked from github.com/occ/TraceKit, but has since been - largely re-written and is now maintained as part of raven-js. Tests for - this are in test/vendor. + // if stack[1] is `Raven.captureException`, it means that someone passed a string to it and we redirected that call + // to be handled by `captureMessage`, thus `initialCall` is the 3rd one, not 2nd + // initialCall => captureException(string) => captureMessage(string) + if (initialCall && initialCall.func === 'Raven.captureException') { + initialCall = stack.stack[2]; + } - MIT license -*/ + var fileurl = (initialCall && initialCall.url) || ''; -var TraceKit = { - collectWindowErrors: true, - debug: false -}; // This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) + if ( + !!this._globalOptions.ignoreUrls.test && + this._globalOptions.ignoreUrls.test(fileurl) + ) { + return; + } -var _window$2 = typeof window !== 'undefined' ? window : typeof commonjsGlobal !== 'undefined' ? commonjsGlobal : typeof self !== 'undefined' ? self : {}; // global reference to slice + if ( + !!this._globalOptions.whitelistUrls.test && + !this._globalOptions.whitelistUrls.test(fileurl) + ) { + return; + } + if (this._globalOptions.stacktrace || (options && options.stacktrace)) { + // fingerprint on msg, not stack trace (legacy behavior, could be revisited) + data.fingerprint = data.fingerprint == null ? msg : data.fingerprint; -var _slice = [].slice; -var UNKNOWN_FUNCTION = '?'; // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error#Error_types + options = objectMerge( + { + trimHeadFrames: 0 + }, + options + ); + // Since we know this is a synthetic trace, the top frame (this function call) + // MUST be from Raven.js, so mark it for trimming + // We add to the trim counter so that callers can choose to trim extra frames, such + // as utility functions. + options.trimHeadFrames += 1; -var ERROR_TYPES_RE = /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/; + var frames = this._prepareFrames(stack, options); + data.stacktrace = { + // Sentry expects frames oldest to newest + frames: frames.reverse() + }; + } -function getLocationHref() { - if (typeof document === 'undefined' || document.location == null) return ''; - return document.location.href; -} -/** - * TraceKit.report: cross-browser processing of unhandled exceptions - * - * Syntax: - * TraceKit.report.subscribe(function(stackInfo) { ... }) - * TraceKit.report.unsubscribe(function(stackInfo) { ... }) - * TraceKit.report(exception) - * try { ...code... } catch(ex) { TraceKit.report(ex); } - * - * Supports: - * - Firefox: full stack trace with line numbers, plus column number - * on top frame; column number is not guaranteed - * - Opera: full stack trace with line and column numbers - * - Chrome: full stack trace with line and column numbers - * - Safari: line and column number for the top frame only; some frames - * may be missing, and column number is not guaranteed - * - IE: line and column number for the top frame only; some frames - * may be missing, and column number is not guaranteed - * - * In theory, TraceKit should work on all of the following versions: - * - IE5.5+ (only 8.0 tested) - * - Firefox 0.9+ (only 3.5+ tested) - * - Opera 7+ (only 10.50 tested; versions 9 and earlier may require - * Exceptions Have Stacktrace to be enabled in opera:config) - * - Safari 3+ (only 4+ tested) - * - Chrome 1+ (only 5+ tested) - * - Konqueror 3.5+ (untested) - * - * Requires TraceKit.computeStackTrace. - * - * Tries to catch all unhandled exceptions and report them to the - * subscribed handlers. Please note that TraceKit.report will rethrow the - * exception. This is REQUIRED in order to get a useful stack trace in IE. - * If the exception does not reach the top of the browser, you will only - * get a stack trace from the point where TraceKit.report was called. - * - * Handlers receive a stackInfo object as described in the - * TraceKit.computeStackTrace docs. - */ + // Make sure that fingerprint is always wrapped in an array + if (data.fingerprint) { + data.fingerprint = isArray(data.fingerprint) + ? data.fingerprint + : [data.fingerprint]; + } + // Fire away! + this._send(data); -TraceKit.report = function reportModuleWrapper() { - var handlers = [], - lastArgs = null, - lastException = null, - lastExceptionStack = null; - /** - * Add a crash handler. - * @param {Function} handler - */ + return this; + }, - function subscribe(handler) { - installGlobalHandler(); - handlers.push(handler); - } - /** - * Remove a crash handler. - * @param {Function} handler - */ + captureBreadcrumb: function(obj) { + var crumb = objectMerge( + { + timestamp: now() / 1000 + }, + obj + ); + if (isFunction(this._globalOptions.breadcrumbCallback)) { + var result = this._globalOptions.breadcrumbCallback(crumb); - function unsubscribe(handler) { - for (var i = handlers.length - 1; i >= 0; --i) { - if (handlers[i] === handler) { - handlers.splice(i, 1); + if (isObject(result) && !isEmptyObject(result)) { + crumb = result; + } else if (result === false) { + return this; } } - } - /** - * Remove all crash handlers. - */ - - - function unsubscribeAll() { - uninstallGlobalHandler(); - handlers = []; - } - /** - * Dispatch stack information to all handlers. - * @param {Object.} stack - */ + this._breadcrumbs.push(crumb); + if (this._breadcrumbs.length > this._globalOptions.maxBreadcrumbs) { + this._breadcrumbs.shift(); + } + return this; + }, - function notifyHandlers(stack, isWindowError) { - var exception = null; + addPlugin: function(plugin /*arg1, arg2, ... argN*/) { + var pluginArgs = [].slice.call(arguments, 1); - if (isWindowError && !TraceKit.collectWindowErrors) { - return; + this._plugins.push([plugin, pluginArgs]); + if (this._isRavenInstalled) { + this._drainPlugins(); } - for (var i in handlers) { - if (handlers.hasOwnProperty(i)) { - try { - handlers[i].apply(null, [stack].concat(_slice.call(arguments, 2))); - } catch (inner) { - exception = inner; - } - } - } - - if (exception) { - throw exception; - } - } + return this; + }, - var _oldOnerrorHandler, _onErrorHandlerInstalled; - /** - * Ensures all global unhandled exceptions are recorded. - * Supported by Gecko and IE. - * @param {string} msg Error message. - * @param {string} url URL of script that generated the exception. - * @param {(number|string)} lineNo The line number at which the error - * occurred. - * @param {?(number|string)} colNo The column number at which the error - * occurred. - * @param {?Error} ex The actual Error object. + /* + * Set/clear a user to be sent along with the payload. + * + * @param {object} user An object representing user data [optional] + * @return {Raven} */ + setUserContext: function(user) { + // Intentionally do not merge here since that's an unexpected behavior. + this._globalContext.user = user; + return this; + }, - function traceKitWindowOnError(msg, url, lineNo, colNo, ex) { - var stack = null; // If 'ex' is ErrorEvent, get real Error from inside + /* + * Merge extra attributes to be sent along with the payload. + * + * @param {object} extra An object representing extra data [optional] + * @return {Raven} + */ + setExtraContext: function(extra) { + this._mergeContext('extra', extra); - var exception = utils.isErrorEvent(ex) ? ex.error : ex; // If 'msg' is ErrorEvent, get real message from inside + return this; + }, - var message = utils.isErrorEvent(msg) ? msg.message : msg; + /* + * Merge tags to be sent along with the payload. + * + * @param {object} tags An object representing tags [optional] + * @return {Raven} + */ + setTagsContext: function(tags) { + this._mergeContext('tags', tags); - if (lastExceptionStack) { - TraceKit.computeStackTrace.augmentStackTraceWithInitialElement(lastExceptionStack, url, lineNo, message); - processLastException(); - } else if (exception && utils.isError(exception)) { - // non-string `exception` arg; attempt to extract stack trace - // New chrome and blink send along a real error object - // Let's just report that like a normal error. - // See: https://mikewest.org/2013/08/debugging-runtime-errors-with-window-onerror - stack = TraceKit.computeStackTrace(exception); - notifyHandlers(stack, true); - } else { - var location = { - url: url, - line: lineNo, - column: colNo - }; - var name = undefined; - var groups; + return this; + }, - if ({}.toString.call(message) === '[object String]') { - var groups = message.match(ERROR_TYPES_RE); + /* + * Clear all of the context. + * + * @return {Raven} + */ + clearContext: function() { + this._globalContext = {}; - if (groups) { - name = groups[1]; - message = groups[2]; - } - } + return this; + }, - location.func = UNKNOWN_FUNCTION; - stack = { - name: name, - message: message, - url: getLocationHref(), - stack: [location] - }; - notifyHandlers(stack, true); - } + /* + * Get a copy of the current context. This cannot be mutated. + * + * @return {object} copy of context + */ + getContext: function() { + // lol javascript + return JSON.parse(stringify(this._globalContext)); + }, - if (_oldOnerrorHandler) { - return _oldOnerrorHandler.apply(this, arguments); - } + /* + * Set environment of application + * + * @param {string} environment Typically something like 'production'. + * @return {Raven} + */ + setEnvironment: function(environment) { + this._globalOptions.environment = environment; - return false; - } + return this; + }, - function installGlobalHandler() { - if (_onErrorHandlerInstalled) { - return; - } + /* + * Set release version of application + * + * @param {string} release Typically something like a git SHA to identify version + * @return {Raven} + */ + setRelease: function(release) { + this._globalOptions.release = release; - _oldOnerrorHandler = _window$2.onerror; - _window$2.onerror = traceKitWindowOnError; - _onErrorHandlerInstalled = true; - } + return this; + }, - function uninstallGlobalHandler() { - if (!_onErrorHandlerInstalled) { - return; - } + /* + * Set the dataCallback option + * + * @param {function} callback The callback to run which allows the + * data blob to be mutated before sending + * @return {Raven} + */ + setDataCallback: function(callback) { + var original = this._globalOptions.dataCallback; + this._globalOptions.dataCallback = keepOriginalCallback(original, callback); + return this; + }, - _window$2.onerror = _oldOnerrorHandler; - _onErrorHandlerInstalled = false; - _oldOnerrorHandler = undefined; - } + /* + * Set the breadcrumbCallback option + * + * @param {function} callback The callback to run which allows filtering + * or mutating breadcrumbs + * @return {Raven} + */ + setBreadcrumbCallback: function(callback) { + var original = this._globalOptions.breadcrumbCallback; + this._globalOptions.breadcrumbCallback = keepOriginalCallback(original, callback); + return this; + }, - function processLastException() { - var _lastExceptionStack = lastExceptionStack, - _lastArgs = lastArgs; - lastArgs = null; - lastExceptionStack = null; - lastException = null; - notifyHandlers.apply(null, [_lastExceptionStack, false].concat(_lastArgs)); - } - /** - * Reports an unhandled Error to TraceKit. - * @param {Error} ex - * @param {?boolean} rethrow If false, do not re-throw the exception. - * Only used for window.onerror to not cause an infinite loop of - * rethrowing. + /* + * Set the shouldSendCallback option + * + * @param {function} callback The callback to run which allows + * introspecting the blob before sending + * @return {Raven} */ + setShouldSendCallback: function(callback) { + var original = this._globalOptions.shouldSendCallback; + this._globalOptions.shouldSendCallback = keepOriginalCallback(original, callback); + return this; + }, + /** + * Override the default HTTP transport mechanism that transmits data + * to the Sentry server. + * + * @param {function} transport Function invoked instead of the default + * `makeRequest` handler. + * + * @return {Raven} + */ + setTransport: function(transport) { + this._globalOptions.transport = transport; - function report(ex, rethrow) { - var args = _slice.call(arguments, 1); + return this; + }, - if (lastExceptionStack) { - if (lastException === ex) { - return; // already caught by an inner catch block, ignore - } else { - processLastException(); + /* + * Get the latest raw exception that was captured by Raven. + * + * @return {error} + */ + lastException: function() { + return this._lastCapturedException; + }, + + /* + * Get the last event id + * + * @return {string} + */ + lastEventId: function() { + return this._lastEventId; + }, + + /* + * Determine if Raven is setup and ready to go. + * + * @return {boolean} + */ + isSetup: function() { + if (!this._hasJSON) return false; // needs JSON support + if (!this._globalServer) { + if (!this.ravenNotConfiguredError) { + this.ravenNotConfiguredError = true; + this._logDebug('error', 'Error: Raven has not been configured.'); } + return false; } + return true; + }, - var stack = TraceKit.computeStackTrace(ex); - lastExceptionStack = stack; - lastException = ex; - lastArgs = args; // If the stack trace is incomplete, wait for 2 seconds for - // slow slow IE to see if onerror occurs or not before reporting - // this exception; otherwise, we will end up with an incomplete - // stack trace + afterLoad: function() { + // TODO: remove window dependence? - setTimeout(function () { - if (lastException === ex) { - processLastException(); - } - }, stack.incomplete ? 2000 : 0); + // Attempt to initialize Raven on load + var RavenConfig = _window.RavenConfig; + if (RavenConfig) { + this.config(RavenConfig.dsn, RavenConfig.config).install(); + } + }, - if (rethrow !== false) { - throw ex; // re-throw to propagate to the top level (and cause window.onerror) + showReportDialog: function(options) { + if ( + !_document // doesn't work without a document (React native) + ) + return; + + options = options || {}; + + var lastEventId = options.eventId || this.lastEventId(); + if (!lastEventId) { + throw new RavenConfigError('Missing eventId'); } - } - report.subscribe = subscribe; - report.unsubscribe = unsubscribe; - report.uninstall = unsubscribeAll; - return report; -}(); -/** - * TraceKit.computeStackTrace: cross-browser stack traces in JavaScript - * - * Syntax: - * s = TraceKit.computeStackTrace(exception) // consider using TraceKit.report instead (see below) - * Returns: - * s.name - exception name - * s.message - exception message - * s.stack[i].url - JavaScript or HTML file URL - * s.stack[i].func - function name, or empty for anonymous functions (if guessing did not work) - * s.stack[i].args - arguments passed to the function, if known - * s.stack[i].line - line number, if known - * s.stack[i].column - column number, if known - * - * Supports: - * - Firefox: full stack trace with line numbers and unreliable column - * number on top frame - * - Opera 10: full stack trace with line and column numbers - * - Opera 9-: full stack trace with line numbers - * - Chrome: full stack trace with line and column numbers - * - Safari: line and column number for the topmost stacktrace element - * only - * - IE: no line numbers whatsoever - * - * Tries to guess names of anonymous functions by looking for assignments - * in the source code. In IE and Safari, we have to guess source file names - * by searching for function bodies inside all page scripts. This will not - * work for scripts that are loaded cross-domain. - * Here be dragons: some function names may be guessed incorrectly, and - * duplicate functions may be mismatched. - * - * TraceKit.computeStackTrace should only be used for tracing purposes. - * Logging of unhandled exceptions should be done with TraceKit.report, - * which builds on top of TraceKit.computeStackTrace and provides better - * IE support by utilizing the window.onerror event to retrieve information - * about the top of the stack. - * - * Note: In IE and Safari, no stack trace is recorded on the Error object, - * so computeStackTrace instead walks its *own* chain of callers. - * This means that: - * * in Safari, some methods may be missing from the stack trace; - * * in IE, the topmost function in the stack trace will always be the - * caller of computeStackTrace. - * - * This is okay for tracing (because you are likely to be calling - * computeStackTrace from the function you want to be the topmost element - * of the stack trace anyway), but not okay for logging unhandled - * exceptions (because your catch block will likely be far away from the - * inner function that actually caused the exception). - * - */ + var dsn = options.dsn || this._dsn; + if (!dsn) { + throw new RavenConfigError('Missing DSN'); + } + var encode = encodeURIComponent; + var qs = ''; + qs += '?eventId=' + encode(lastEventId); + qs += '&dsn=' + encode(dsn); -TraceKit.computeStackTrace = function computeStackTraceWrapper() { - // Contents of Exception in various browsers. - // - // SAFARI: - // ex.message = Can't find variable: qq - // ex.line = 59 - // ex.sourceId = 580238192 - // ex.sourceURL = http://... - // ex.expressionBeginOffset = 96 - // ex.expressionCaretOffset = 98 - // ex.expressionEndOffset = 98 - // ex.name = ReferenceError - // - // FIREFOX: - // ex.message = qq is not defined - // ex.fileName = http://... - // ex.lineNumber = 59 - // ex.columnNumber = 69 - // ex.stack = ...stack trace... (see the example below) - // ex.name = ReferenceError - // - // CHROME: - // ex.message = qq is not defined - // ex.name = ReferenceError - // ex.type = not_defined - // ex.arguments = ['aa'] - // ex.stack = ...stack trace... - // - // INTERNET EXPLORER: - // ex.message = ... - // ex.name = ReferenceError - // - // OPERA: - // ex.message = ...message... (see the example below) - // ex.name = ReferenceError - // ex.opera#sourceloc = 11 (pretty much useless, duplicates the info in ex.message) - // ex.stacktrace = n/a; see 'opera:config#UserPrefs|Exceptions Have Stacktrace' + var user = options.user || this._globalContext.user; + if (user) { + if (user.name) qs += '&name=' + encode(user.name); + if (user.email) qs += '&email=' + encode(user.email); + } - /** - * Computes stack trace information from the stack property. - * Chrome and Gecko use this property. - * @param {Error} ex - * @return {?Object.} Stack trace information. - */ - function computeStackTraceFromStackProp(ex) { - if (typeof ex.stack === 'undefined' || !ex.stack) return; - var chrome = /^\s*at (.*?) ?\(((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i, - gecko = /^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|\[native).*?|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i, - winjs = /^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i, - // Used to additionally parse URL/line/column from eval frames - geckoEval = /(\S+) line (\d+)(?: > eval line \d+)* > eval/i, - chromeEval = /\((\S*)(?::(\d+))(?::(\d+))\)/, - lines = ex.stack.split('\n'), - stack = [], - submatch, - parts, - element, - reference = /^(.*) is undefined$/.exec(ex.message); + var globalServer = this._getGlobalServer(this._parseDSN(dsn)); - for (var i = 0, j = lines.length; i < j; ++i) { - if (parts = chrome.exec(lines[i])) { - var isNative = parts[2] && parts[2].indexOf('native') === 0; // start of line + var script = _document.createElement('script'); + script.async = true; + script.src = globalServer + '/api/embed/error-page/' + qs; + (_document.head || _document.body).appendChild(script); + }, - var isEval = parts[2] && parts[2].indexOf('eval') === 0; // start of line + /**** Private functions ****/ + _ignoreNextOnError: function() { + var self = this; + this._ignoreOnError += 1; + setTimeout(function() { + // onerror should trigger before setTimeout + self._ignoreOnError -= 1; + }); + }, - if (isEval && (submatch = chromeEval.exec(parts[2]))) { - // throw out eval line/column and use top-most line/column number - parts[2] = submatch[1]; // url + _triggerEvent: function(eventType, options) { + // NOTE: `event` is a native browser thing, so let's avoid conflicting wiht it + var evt, key; - parts[3] = submatch[2]; // line + if (!this._hasDocument) return; - parts[4] = submatch[3]; // column - } + options = options || {}; - element = { - url: !isNative ? parts[2] : null, - func: parts[1] || UNKNOWN_FUNCTION, - args: isNative ? [parts[2]] : [], - line: parts[3] ? +parts[3] : null, - column: parts[4] ? +parts[4] : null - }; - } else if (parts = winjs.exec(lines[i])) { - element = { - url: parts[2], - func: parts[1] || UNKNOWN_FUNCTION, - args: [], - line: +parts[3], - column: parts[4] ? +parts[4] : null - }; - } else if (parts = gecko.exec(lines[i])) { - var isEval = parts[3] && parts[3].indexOf(' > eval') > -1; + eventType = 'raven' + eventType.substr(0, 1).toUpperCase() + eventType.substr(1); - if (isEval && (submatch = geckoEval.exec(parts[3]))) { - // throw out eval line/column and use top-most line number - parts[3] = submatch[1]; - parts[4] = submatch[2]; - parts[5] = null; // no column when eval - } else if (i === 0 && !parts[5] && typeof ex.columnNumber !== 'undefined') { - // FireFox uses this awesome columnNumber property for its top frame - // Also note, Firefox's column number is 0-based and everything else expects 1-based, - // so adding 1 - // NOTE: this hack doesn't work if top-most frame is eval - stack[0].column = ex.columnNumber + 1; - } + if (_document.createEvent) { + evt = _document.createEvent('HTMLEvents'); + evt.initEvent(eventType, true, true); + } else { + evt = _document.createEventObject(); + evt.eventType = eventType; + } - element = { - url: parts[3], - func: parts[1] || UNKNOWN_FUNCTION, - args: parts[2] ? parts[2].split(',') : [], - line: parts[4] ? +parts[4] : null, - column: parts[5] ? +parts[5] : null - }; - } else { - continue; + for (key in options) + if (hasKey(options, key)) { + evt[key] = options[key]; } - if (!element.func && element.line) { - element.func = UNKNOWN_FUNCTION; + if (_document.createEvent) { + // IE9 if standards + _document.dispatchEvent(evt); + } else { + // IE8 regardless of Quirks or Standards + // IE9 if quirks + try { + _document.fireEvent('on' + evt.eventType.toLowerCase(), evt); + } catch (e) { + // Do nothing } - - stack.push(element); - } - - if (!stack.length) { - return null; } + }, - return { - name: ex.name, - message: ex.message, - url: getLocationHref(), - stack: stack - }; - } /** - * Adds information about the first frame to incomplete stack traces. - * Safari and IE require this to get complete data on the first frame. - * @param {Object.} stackInfo Stack trace information from - * one of the compute* methods. - * @param {string} url The URL of the script that caused an error. - * @param {(number|string)} lineNo The line number of the script that - * caused an error. - * @param {string=} message The error generated by the browser, which - * hopefully contains the name of the object that caused the error. - * @return {boolean} Whether or not the stack information was - * augmented. - */ - - - function augmentStackTraceWithInitialElement(stackInfo, url, lineNo, message) { - var initial = { - url: url, - line: lineNo - }; + * Wraps addEventListener to capture UI breadcrumbs + * @param evtName the event name (e.g. "click") + * @returns {Function} + * @private + */ + _breadcrumbEventHandler: function(evtName) { + var self = this; + return function(evt) { + // reset keypress timeout; e.g. triggering a 'click' after + // a 'keypress' will reset the keypress debounce so that a new + // set of keypresses can be recorded + self._keypressTimeout = null; - if (initial.url && initial.line) { - stackInfo.incomplete = false; + // It's possible this handler might trigger multiple times for the same + // event (e.g. event propagation through node ancestors). Ignore if we've + // already captured the event. + if (self._lastCapturedEvent === evt) return; - if (!initial.func) { - initial.func = UNKNOWN_FUNCTION; - } + self._lastCapturedEvent = evt; - if (stackInfo.stack.length > 0) { - if (stackInfo.stack[0].url === initial.url) { - if (stackInfo.stack[0].line === initial.line) { - return false; // already in stack trace - } else if (!stackInfo.stack[0].line && stackInfo.stack[0].func === initial.func) { - stackInfo.stack[0].line = initial.line; - return false; - } - } + // try/catch both: + // - accessing evt.target (see getsentry/raven-js#838, #768) + // - `htmlTreeAsString` because it's complex, and just accessing the DOM incorrectly + // can throw an exception in some circumstances. + var target; + try { + target = htmlTreeAsString(evt.target); + } catch (e) { + target = ''; } - stackInfo.stack.unshift(initial); - stackInfo.partial = true; - return true; - } else { - stackInfo.incomplete = true; - } + self.captureBreadcrumb({ + category: 'ui.' + evtName, // e.g. ui.click, ui.input + message: target + }); + }; + }, - return false; - } /** - * Computes stack trace information by walking the arguments.caller - * chain at the time the exception occurred. This will cause earlier - * frames to be missed but is the only way to get any stack trace in - * Safari and IE. The top frame is restored by - * {@link augmentStackTraceWithInitialElement}. - * @param {Error} ex - * @return {?Object.} Stack trace information. - */ - - - function computeStackTraceByWalkingCallerChain(ex, depth) { - var functionName = /function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i, - stack = [], - funcs = {}, - recursion = false, - parts, - item; + * Wraps addEventListener to capture keypress UI events + * @returns {Function} + * @private + */ + _keypressEventHandler: function() { + var self = this, + debounceDuration = 1000; // milliseconds - for (var curr = computeStackTraceByWalkingCallerChain.caller; curr && !recursion; curr = curr.caller) { - if (curr === computeStackTrace || curr === TraceKit.report) { - // console.log('skipping internal function'); - continue; + // TODO: if somehow user switches keypress target before + // debounce timeout is triggered, we will only capture + // a single breadcrumb from the FIRST target (acceptable?) + return function(evt) { + var target; + try { + target = evt.target; + } catch (e) { + // just accessing event properties can throw an exception in some rare circumstances + // see: https://github.com/getsentry/raven-js/issues/838 + return; } + var tagName = target && target.tagName; - item = { - url: null, - func: UNKNOWN_FUNCTION, - line: null, - column: null - }; + // only consider keypress events on actual input elements + // this will disregard keypresses targeting body (e.g. tabbing + // through elements, hotkeys, etc) + if ( + !tagName || + (tagName !== 'INPUT' && tagName !== 'TEXTAREA' && !target.isContentEditable) + ) + return; - if (curr.name) { - item.func = curr.name; - } else if (parts = functionName.exec(curr.toString())) { - item.func = parts[1]; + // record first keypress in a series, but ignore subsequent + // keypresses until debounce clears + var timeout = self._keypressTimeout; + if (!timeout) { + self._breadcrumbEventHandler('input')(evt); } + clearTimeout(timeout); + self._keypressTimeout = setTimeout(function() { + self._keypressTimeout = null; + }, debounceDuration); + }; + }, - if (typeof item.func === 'undefined') { - try { - item.func = parts.input.substring(0, parts.input.indexOf('{')); - } catch (e) {} - } + /** + * Captures a breadcrumb of type "navigation", normalizing input URLs + * @param to the originating URL + * @param from the target URL + * @private + */ + _captureUrlChange: function(from, to) { + var parsedLoc = parseUrl(this._location.href); + var parsedTo = parseUrl(to); + var parsedFrom = parseUrl(from); - if (funcs['' + curr]) { - recursion = true; - } else { - funcs['' + curr] = true; + // because onpopstate only tells you the "new" (to) value of location.href, and + // not the previous (from) value, we need to track the value of the current URL + // state ourselves + this._lastHref = to; + + // Use only the path component of the URL if the URL matches the current + // document (almost all the time when using pushState) + if (parsedLoc.protocol === parsedTo.protocol && parsedLoc.host === parsedTo.host) + to = parsedTo.relative; + if (parsedLoc.protocol === parsedFrom.protocol && parsedLoc.host === parsedFrom.host) + from = parsedFrom.relative; + + this.captureBreadcrumb({ + category: 'navigation', + data: { + to: to, + from: from } + }); + }, - stack.push(item); - } + _patchFunctionToString: function() { + var self = this; + self._originalFunctionToString = Function.prototype.toString; + // eslint-disable-next-line no-extend-native + Function.prototype.toString = function() { + if (typeof this === 'function' && this.__raven__) { + return self._originalFunctionToString.apply(this.__orig__, arguments); + } + return self._originalFunctionToString.apply(this, arguments); + }; + }, - if (depth) { - // console.log('depth is ' + depth); - // console.log('stack is ' + stack.length); - stack.splice(0, depth); + _unpatchFunctionToString: function() { + if (this._originalFunctionToString) { + // eslint-disable-next-line no-extend-native + Function.prototype.toString = this._originalFunctionToString; } + }, - var result = { - name: ex.name, - message: ex.message, - url: getLocationHref(), - stack: stack - }; - augmentStackTraceWithInitialElement(result, ex.sourceURL || ex.fileName, ex.line || ex.lineNumber, ex.message || ex.description); - return result; - } /** - * Computes a stack trace for an exception. - * @param {Error} ex - * @param {(string|number)=} depth - */ - + * Wrap timer functions and event targets to catch errors and provide + * better metadata. + */ + _instrumentTryCatch: function() { + var self = this; - function computeStackTrace(ex, depth) { - var stack = null; - depth = depth == null ? 0 : +depth; + var wrappedBuiltIns = self._wrappedBuiltIns; - try { - stack = computeStackTraceFromStackProp(ex); + function wrapTimeFn(orig) { + return function(fn, t) { + // preserve arity + // Make a copy of the arguments to prevent deoptimization + // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments + var args = new Array(arguments.length); + for (var i = 0; i < args.length; ++i) { + args[i] = arguments[i]; + } + var originalCallback = args[0]; + if (isFunction(originalCallback)) { + args[0] = self.wrap(originalCallback); + } - if (stack) { - return stack; - } - } catch (e) { - if (TraceKit.debug) { - throw e; - } + // IE < 9 doesn't support .call/.apply on setInterval/setTimeout, but it + // also supports only two arguments and doesn't care what this is, so we + // can just call the original function directly. + if (orig.apply) { + return orig.apply(this, args); + } else { + return orig(args[0], args[1]); + } + }; } - try { - stack = computeStackTraceByWalkingCallerChain(ex, depth + 1); + var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; - if (stack) { - return stack; - } - } catch (e) { - if (TraceKit.debug) { - throw e; + function wrapEventTarget(global) { + var proto = _window[global] && _window[global].prototype; + if (proto && proto.hasOwnProperty && proto.hasOwnProperty('addEventListener')) { + fill( + proto, + 'addEventListener', + function(orig) { + return function(evtName, fn, capture, secure) { + // preserve arity + try { + if (fn && fn.handleEvent) { + fn.handleEvent = self.wrap(fn.handleEvent); + } + } catch (err) { + // can sometimes get 'Permission denied to access property "handle Event' + } + + // More breadcrumb DOM capture ... done here and not in `_instrumentBreadcrumbs` + // so that we don't have more than one wrapper function + var before, clickHandler, keypressHandler; + + if ( + autoBreadcrumbs && + autoBreadcrumbs.dom && + (global === 'EventTarget' || global === 'Node') + ) { + // NOTE: generating multiple handlers per addEventListener invocation, should + // revisit and verify we can just use one (almost certainly) + clickHandler = self._breadcrumbEventHandler('click'); + keypressHandler = self._keypressEventHandler(); + before = function(evt) { + // need to intercept every DOM event in `before` argument, in case that + // same wrapped method is re-used for different events (e.g. mousemove THEN click) + // see #724 + if (!evt) return; + + var eventType; + try { + eventType = evt.type; + } catch (e) { + // just accessing event properties can throw an exception in some rare circumstances + // see: https://github.com/getsentry/raven-js/issues/838 + return; + } + if (eventType === 'click') return clickHandler(evt); + else if (eventType === 'keypress') return keypressHandler(evt); + }; + } + return orig.call( + this, + evtName, + self.wrap(fn, undefined, before), + capture, + secure + ); + }; + }, + wrappedBuiltIns + ); + fill( + proto, + 'removeEventListener', + function(orig) { + return function(evt, fn, capture, secure) { + try { + fn = fn && (fn.__raven_wrapper__ ? fn.__raven_wrapper__ : fn); + } catch (e) { + // ignore, accessing __raven_wrapper__ will throw in some Selenium environments + } + return orig.call(this, evt, fn, capture, secure); + }; + }, + wrappedBuiltIns + ); } } - return { - name: ex.name, - message: ex.message, - url: getLocationHref() - }; - } - - computeStackTrace.augmentStackTraceWithInitialElement = augmentStackTraceWithInitialElement; - computeStackTrace.computeStackTraceFromStackProp = computeStackTraceFromStackProp; - return computeStackTrace; -}(); - -var tracekit = TraceKit; - -var stringify_1 = createCommonjsModule(function (module, exports) { - /* - json-stringify-safe - Like JSON.stringify, but doesn't throw on circular references. - - Originally forked from https://github.com/isaacs/json-stringify-safe - version 5.0.1 on 3/8/2017 and modified to handle Errors serialization - and IE8 compatibility. Tests for this are in test/vendor. - - ISC license: https://github.com/isaacs/json-stringify-safe/blob/master/LICENSE - */ - exports = module.exports = stringify; - exports.getSerialize = serializer; - - function indexOf(haystack, needle) { - for (var i = 0; i < haystack.length; ++i) { - if (haystack[i] === needle) return i; - } - - return -1; - } + fill(_window, 'setTimeout', wrapTimeFn, wrappedBuiltIns); + fill(_window, 'setInterval', wrapTimeFn, wrappedBuiltIns); + if (_window.requestAnimationFrame) { + fill( + _window, + 'requestAnimationFrame', + function(orig) { + return function(cb) { + return orig(self.wrap(cb)); + }; + }, + wrappedBuiltIns + ); + } - function stringify(obj, replacer, spaces, cycleReplacer) { - return JSON.stringify(obj, serializer(replacer, cycleReplacer), spaces); - } // https://github.com/ftlabs/js-abbreviate/blob/fa709e5f139e7770a71827b1893f22418097fbda/index.js#L95-L106 + // event targets borrowed from bugsnag-js: + // https://github.com/bugsnag/bugsnag-js/blob/master/src/bugsnag.js#L666 + var eventTargets = [ + 'EventTarget', + 'Window', + 'Node', + 'ApplicationCache', + 'AudioTrackList', + 'ChannelMergerNode', + 'CryptoOperation', + 'EventSource', + 'FileReader', + 'HTMLUnknownElement', + 'IDBDatabase', + 'IDBRequest', + 'IDBTransaction', + 'KeyOperation', + 'MediaController', + 'MessagePort', + 'ModalWindow', + 'Notification', + 'SVGElementInstance', + 'Screen', + 'TextTrack', + 'TextTrackCue', + 'TextTrackList', + 'WebSocket', + 'WebSocketWorker', + 'Worker', + 'XMLHttpRequest', + 'XMLHttpRequestEventTarget', + 'XMLHttpRequestUpload' + ]; + for (var i = 0; i < eventTargets.length; i++) { + wrapEventTarget(eventTargets[i]); + } + }, + /** + * Instrument browser built-ins w/ breadcrumb capturing + * - XMLHttpRequests + * - DOM interactions (click/typing) + * - window.location changes + * - console + * + * Can be disabled or individually configured via the `autoBreadcrumbs` config option + */ + _instrumentBreadcrumbs: function() { + var self = this; + var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; - function stringifyError(value) { - var err = { - // These properties are implemented as magical getters and don't show up in for in - stack: value.stack, - message: value.message, - name: value.name - }; + var wrappedBuiltIns = self._wrappedBuiltIns; - for (var i in value) { - if (Object.prototype.hasOwnProperty.call(value, i)) { - err[i] = value[i]; + function wrapProp(prop, xhr) { + if (prop in xhr && isFunction(xhr[prop])) { + fill(xhr, prop, function(orig) { + return self.wrap(orig); + }); // intentionally don't track filled methods on XHR instances } } - return err; - } - - function serializer(replacer, cycleReplacer) { - var stack = []; - var keys = []; + if (autoBreadcrumbs.xhr && 'XMLHttpRequest' in _window) { + var xhrproto = _window.XMLHttpRequest && _window.XMLHttpRequest.prototype; + fill( + xhrproto, + 'open', + function(origOpen) { + return function(method, url) { + // preserve arity - if (cycleReplacer == null) { - cycleReplacer = function cycleReplacer(key, value) { - if (stack[0] === value) { - return '[Circular ~]'; - } + // if Sentry key appears in URL, don't capture + if (isString(url) && url.indexOf(self._globalKey) === -1) { + this.__raven_xhr = { + method: method, + url: url, + status_code: null + }; + } - return '[Circular ~.' + keys.slice(0, indexOf(stack, value)).join('.') + ']'; - }; - } + return origOpen.apply(this, arguments); + }; + }, + wrappedBuiltIns + ); + + fill( + xhrproto, + 'send', + function(origSend) { + return function() { + // preserve arity + var xhr = this; - return function (key, value) { - if (stack.length > 0) { - var thisPos = indexOf(stack, this); - ~thisPos ? stack.splice(thisPos + 1) : stack.push(this); - ~thisPos ? keys.splice(thisPos, Infinity, key) : keys.push(key); + function onreadystatechangeHandler() { + if (xhr.__raven_xhr && xhr.readyState === 4) { + try { + // touching statusCode in some platforms throws + // an exception + xhr.__raven_xhr.status_code = xhr.status; + } catch (e) { + /* do nothing */ + } - if (~indexOf(stack, value)) { - value = cycleReplacer.call(this, key, value); - } - } else { - stack.push(value); - } + self.captureBreadcrumb({ + type: 'http', + category: 'xhr', + data: xhr.__raven_xhr + }); + } + } - return replacer == null ? value instanceof Error ? stringifyError(value) : value : replacer.call(this, key, value); - }; - } -}); -var stringify_2 = stringify_1.getSerialize; + var props = ['onload', 'onerror', 'onprogress']; + for (var j = 0; j < props.length; j++) { + wrapProp(props[j], xhr); + } -function RavenConfigError(message) { - this.name = 'RavenConfigError'; - this.message = message; -} + if ('onreadystatechange' in xhr && isFunction(xhr.onreadystatechange)) { + fill( + xhr, + 'onreadystatechange', + function(orig) { + return self.wrap(orig, undefined, onreadystatechangeHandler); + } /* intentionally don't track this instrumentation */ + ); + } else { + // if onreadystatechange wasn't actually set by the page on this xhr, we + // are free to set our own and capture the breadcrumb + xhr.onreadystatechange = onreadystatechangeHandler; + } -RavenConfigError.prototype = new Error(); -RavenConfigError.prototype.constructor = RavenConfigError; -var configError = RavenConfigError; + return origSend.apply(this, arguments); + }; + }, + wrappedBuiltIns + ); + } -var wrapMethod = function wrapMethod(console, level, callback) { - var originalConsoleLevel = console[level]; - var originalConsole = console; + if (autoBreadcrumbs.xhr && supportsFetch()) { + fill( + _window, + 'fetch', + function(origFetch) { + return function() { + // preserve arity + // Make a copy of the arguments to prevent deoptimization + // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments + var args = new Array(arguments.length); + for (var i = 0; i < args.length; ++i) { + args[i] = arguments[i]; + } - if (!(level in console)) { - return; - } + var fetchInput = args[0]; + var method = 'GET'; + var url; - var sentryLevel = level === 'warn' ? 'warning' : level; + if (typeof fetchInput === 'string') { + url = fetchInput; + } else if ('Request' in _window && fetchInput instanceof _window.Request) { + url = fetchInput.url; + if (fetchInput.method) { + method = fetchInput.method; + } + } else { + url = '' + fetchInput; + } - console[level] = function () { - var args = [].slice.call(arguments); - var msg = utils.safeJoin(args, ' '); - var data = { - level: sentryLevel, - logger: 'console', - extra: { - arguments: args - } - }; + // if Sentry key appears in URL, don't capture, as it's our own request + if (url.indexOf(self._globalKey) !== -1) { + return origFetch.apply(this, args); + } - if (level === 'assert') { - if (args[0] === false) { - // Default browsers message - msg = 'Assertion failed: ' + (utils.safeJoin(args.slice(1), ' ') || 'console.assert'); - data.extra.arguments = args.slice(1); - callback && callback(msg, data); - } - } else { - callback && callback(msg, data); - } // this fails for some browsers. :( + if (args[1] && args[1].method) { + method = args[1].method; + } + var fetchData = { + method: method, + url: url, + status_code: null + }; - if (originalConsoleLevel) { - // IE9 doesn't allow calling apply on console functions directly - // See: https://stackoverflow.com/questions/5472938/does-ie9-support-console-log-and-is-it-a-real-function#answer-5473193 - Function.prototype.apply.call(originalConsoleLevel, originalConsole, args); + return origFetch + .apply(this, args) + .then(function(response) { + fetchData.status_code = response.status; + + self.captureBreadcrumb({ + type: 'http', + category: 'fetch', + data: fetchData + }); + + return response; + }) + ['catch'](function(err) { + // if there is an error performing the request + self.captureBreadcrumb({ + type: 'http', + category: 'fetch', + data: fetchData, + level: 'error' + }); + + throw err; + }); + }; + }, + wrappedBuiltIns + ); } - }; -}; -var console$1 = { - wrapMethod: wrapMethod -}; + // Capture breadcrumbs from any click that is unhandled / bubbled up all the way + // to the document. Do this before we instrument addEventListener. + if (autoBreadcrumbs.dom && this._hasDocument) { + if (_document.addEventListener) { + _document.addEventListener('click', self._breadcrumbEventHandler('click'), false); + _document.addEventListener('keypress', self._keypressEventHandler(), false); + } else if (_document.attachEvent) { + // IE8 Compatibility + _document.attachEvent('onclick', self._breadcrumbEventHandler('click')); + _document.attachEvent('onkeypress', self._keypressEventHandler()); + } + } -/*global XDomainRequest:false */ + // record navigation (URL) changes + // NOTE: in Chrome App environment, touching history.pushState, *even inside + // a try/catch block*, will cause Chrome to output an error to console.error + // borrowed from: https://github.com/angular/angular.js/pull/13945/files + var chrome = _window.chrome; + var isChromePackagedApp = chrome && chrome.app && chrome.app.runtime; + var hasPushAndReplaceState = + !isChromePackagedApp && + _window.history && + history.pushState && + history.replaceState; + if (autoBreadcrumbs.location && hasPushAndReplaceState) { + // TODO: remove onpopstate handler on uninstall() + var oldOnPopState = _window.onpopstate; + _window.onpopstate = function() { + var currentHref = self._location.href; + self._captureUrlChange(self._lastHref, currentHref); -var isError = utils.isError; -var isObject = utils.isObject; -var isErrorEvent = utils.isErrorEvent; -var isUndefined = utils.isUndefined; -var isFunction = utils.isFunction; -var isString = utils.isString; -var isArray = utils.isArray; -var isEmptyObject = utils.isEmptyObject; -var each = utils.each; -var objectMerge = utils.objectMerge; -var truncate = utils.truncate; -var objectFrozen = utils.objectFrozen; -var hasKey = utils.hasKey; -var joinRegExp = utils.joinRegExp; -var urlencode = utils.urlencode; -var uuid4 = utils.uuid4; -var htmlTreeAsString = utils.htmlTreeAsString; -var isSameException = utils.isSameException; -var isSameStacktrace = utils.isSameStacktrace; -var parseUrl = utils.parseUrl; -var fill = utils.fill; -var supportsFetch = utils.supportsFetch; -var wrapConsoleMethod = console$1.wrapMethod; -var dsnKeys = 'source protocol user pass host port path'.split(' '); -var dsnPattern = /^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/; + if (oldOnPopState) { + return oldOnPopState.apply(this, arguments); + } + }; -function now() { - return +new Date(); -} // This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) + var historyReplacementFunction = function(origHistFunction) { + // note history.pushState.length is 0; intentionally not declaring + // params to preserve 0 arity + return function(/* state, title, url */) { + var url = arguments.length > 2 ? arguments[2] : undefined; + // url argument is optional + if (url) { + // coerce to string (this is what pushState does) + self._captureUrlChange(self._lastHref, url + ''); + } -var _window$1 = typeof window !== 'undefined' ? window : typeof commonjsGlobal !== 'undefined' ? commonjsGlobal : typeof self !== 'undefined' ? self : {}; + return origHistFunction.apply(this, arguments); + }; + }; -var _document = _window$1.document; -var _navigator = _window$1.navigator; + fill(history, 'pushState', historyReplacementFunction, wrappedBuiltIns); + fill(history, 'replaceState', historyReplacementFunction, wrappedBuiltIns); + } -function keepOriginalCallback(original, callback) { - return isFunction(callback) ? function (data) { - return callback(data, original); - } : callback; -} // First, check for JSON support -// If there is no JSON, we no-op the core features of Raven -// since JSON is required to encode the payload + if (autoBreadcrumbs.console && 'console' in _window && console.log) { + // console + var consoleMethodCallback = function(msg, data) { + self.captureBreadcrumb({ + message: msg, + level: data.level, + category: 'console' + }); + }; + each(['debug', 'info', 'warn', 'error', 'log'], function(_, level) { + wrapConsoleMethod(console, level, consoleMethodCallback); + }); + } + }, -function Raven$1() { - this._hasJSON = !!(_typeof(JSON) === 'object' && JSON.stringify); // Raven can run in contexts where there's no document (react-native) + _restoreBuiltIns: function() { + // restore any wrapped builtins + var builtin; + while (this._wrappedBuiltIns.length) { + builtin = this._wrappedBuiltIns.shift(); - this._hasDocument = !isUndefined(_document); - this._hasNavigator = !isUndefined(_navigator); - this._lastCapturedException = null; - this._lastData = null; - this._lastEventId = null; - this._globalServer = null; - this._globalKey = null; - this._globalProject = null; - this._globalContext = {}; - this._globalOptions = { - // SENTRY_RELEASE can be injected by https://github.com/getsentry/sentry-webpack-plugin - release: _window$1.SENTRY_RELEASE && _window$1.SENTRY_RELEASE.id, - logger: 'javascript', - ignoreErrors: [], - ignoreUrls: [], - whitelistUrls: [], - includePaths: [], - headers: null, - collectWindowErrors: true, - maxMessageLength: 0, - // By default, truncates URL values to 250 chars - maxUrlLength: 250, - stackTraceLimit: 50, - autoBreadcrumbs: true, - instrument: true, - sampleRate: 1 - }; - this._fetchDefaults = { - method: 'POST', - keepalive: true, - referrerPolicy: 'origin' - }; - this._ignoreOnError = 0; - this._isRavenInstalled = false; - this._originalErrorStackTraceLimit = Error.stackTraceLimit; // capture references to window.console *and* all its methods first - // before the console plugin has a chance to monkey patch + var obj = builtin[0], + name = builtin[1], + orig = builtin[2]; - this._originalConsole = _window$1.console || {}; - this._originalConsoleMethods = {}; - this._plugins = []; - this._startTime = now(); - this._wrappedBuiltIns = []; - this._breadcrumbs = []; - this._lastCapturedEvent = null; - this._keypressTimeout; - this._location = _window$1.location; - this._lastHref = this._location && this._location.href; + obj[name] = orig; + } + }, + + _restoreConsole: function() { + // eslint-disable-next-line guard-for-in + for (var method in this._originalConsoleMethods) { + this._originalConsole[method] = this._originalConsoleMethods[method]; + } + }, - this._resetBackoff(); // eslint-disable-next-line guard-for-in + _drainPlugins: function() { + var self = this; + // FIX ME TODO + each(this._plugins, function(_, plugin) { + var installer = plugin[0]; + var args = plugin[1]; + installer.apply(self, [self].concat(args)); + }); + }, - for (var method in this._originalConsole) { - this._originalConsoleMethods[method] = this._originalConsole[method]; - } -} -/* - * The core Raven singleton - * - * @this {Raven} - */ + _parseDSN: function(str) { + var m = dsnPattern.exec(str), + dsn = {}, + i = 7; + try { + while (i--) dsn[dsnKeys[i]] = m[i] || ''; + } catch (e) { + throw new RavenConfigError('Invalid DSN: ' + str); + } -Raven$1.prototype = { - // Hardcode version string so that raven source can be loaded directly via - // webpack (using a build step causes webpack #1617). Grunt verifies that - // this value matches package.json during build. - // See: https://github.com/getsentry/raven-js/issues/465 - VERSION: '3.22.2', - debug: false, - TraceKit: tracekit, - // alias to TraceKit + if (dsn.pass && !this._globalOptions.allowSecretKey) { + throw new RavenConfigError( + 'Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key' + ); + } - /* - * Configure Raven with a DSN and extra options - * - * @param {string} dsn The public Sentry DSN - * @param {object} options Set of global options [optional] - * @return {Raven} - */ - config: function config(dsn, options) { - var self = this; + return dsn; + }, - if (self._globalServer) { - this._logDebug('error', 'Error: Raven has already been configured'); + _getGlobalServer: function(uri) { + // assemble the endpoint from the uri pieces + var globalServer = '//' + uri.host + (uri.port ? ':' + uri.port : ''); - return self; + if (uri.protocol) { + globalServer = uri.protocol + ':' + globalServer; } + return globalServer; + }, - if (!dsn) return self; - var globalOptions = self._globalOptions; // merge in options - - if (options) { - each(options, function (key, value) { - // tags and extra are special and need to be put into context - if (key === 'tags' || key === 'extra' || key === 'user') { - self._globalContext[key] = value; - } else { - globalOptions[key] = value; - } - }); + _handleOnErrorStackInfo: function() { + // if we are intentionally ignoring errors via onerror, bail out + if (!this._ignoreOnError) { + this._handleStackInfo.apply(this, arguments); } + }, - self.setDSN(dsn); // "Script error." is hard coded into browsers for errors that it can't read. - // this is the result of a script being pulled in from an external domain and CORS. + _handleStackInfo: function(stackInfo, options) { + var frames = this._prepareFrames(stackInfo, options); - globalOptions.ignoreErrors.push(/^Script error\.?$/); - globalOptions.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/); // join regexp rules into one big rule + this._triggerEvent('handle', { + stackInfo: stackInfo, + options: options + }); - globalOptions.ignoreErrors = joinRegExp(globalOptions.ignoreErrors); - globalOptions.ignoreUrls = globalOptions.ignoreUrls.length ? joinRegExp(globalOptions.ignoreUrls) : false; - globalOptions.whitelistUrls = globalOptions.whitelistUrls.length ? joinRegExp(globalOptions.whitelistUrls) : false; - globalOptions.includePaths = joinRegExp(globalOptions.includePaths); - globalOptions.maxBreadcrumbs = Math.max(0, Math.min(globalOptions.maxBreadcrumbs || 100, 100)); // default and hard limit is 100 + this._processException( + stackInfo.name, + stackInfo.message, + stackInfo.url, + stackInfo.lineno, + frames, + options + ); + }, - var autoBreadcrumbDefaults = { - xhr: true, - console: true, - dom: true, - location: true, - sentry: true - }; - var autoBreadcrumbs = globalOptions.autoBreadcrumbs; + _prepareFrames: function(stackInfo, options) { + var self = this; + var frames = []; + if (stackInfo.stack && stackInfo.stack.length) { + each(stackInfo.stack, function(i, stack) { + var frame = self._normalizeFrame(stack, stackInfo.url); + if (frame) { + frames.push(frame); + } + }); - if ({}.toString.call(autoBreadcrumbs) === '[object Object]') { - autoBreadcrumbs = objectMerge(autoBreadcrumbDefaults, autoBreadcrumbs); - } else if (autoBreadcrumbs !== false) { - autoBreadcrumbs = autoBreadcrumbDefaults; + // e.g. frames captured via captureMessage throw + if (options && options.trimHeadFrames) { + for (var j = 0; j < options.trimHeadFrames && j < frames.length; j++) { + frames[j].in_app = false; + } + } } + frames = frames.slice(0, this._globalOptions.stackTraceLimit); + return frames; + }, - globalOptions.autoBreadcrumbs = autoBreadcrumbs; - var instrumentDefaults = { - tryCatch: true + _normalizeFrame: function(frame, stackInfoUrl) { + // normalize the frames data + var normalized = { + filename: frame.url, + lineno: frame.line, + colno: frame.column, + function: frame.func || '?' }; - var instrument = globalOptions.instrument; - if ({}.toString.call(instrument) === '[object Object]') { - instrument = objectMerge(instrumentDefaults, instrument); - } else if (instrument !== false) { - instrument = instrumentDefaults; + // Case when we don't have any information about the error + // E.g. throwing a string or raw object, instead of an `Error` in Firefox + // Generating synthetic error doesn't add any value here + // + // We should probably somehow let a user know that they should fix their code + if (!frame.url) { + normalized.filename = stackInfoUrl; // fallback to whole stacks url from onerror handler } - globalOptions.instrument = instrument; - tracekit.collectWindowErrors = !!globalOptions.collectWindowErrors; // return for chaining + normalized.in_app = !// determine if an exception came from outside of our app + // first we check the global includePaths list. + ( + (!!this._globalOptions.includePaths.test && + !this._globalOptions.includePaths.test(normalized.filename)) || + // Now we check for fun, if the function name is Raven or TraceKit + /(Raven|TraceKit)\./.test(normalized['function']) || + // finally, we do a last ditch effort and check for raven.min.js + /raven\.(min\.)?js$/.test(normalized.filename) + ); - return self; + return normalized; }, - /* - * Installs a global window.onerror error handler - * to capture and report uncaught exceptions. - * At this point, install() is required to be called due - * to the way TraceKit is set up. - * - * @return {Raven} - */ - install: function install() { - var self = this; - - if (self.isSetup() && !self._isRavenInstalled) { - tracekit.report.subscribe(function () { - self._handleOnErrorStackInfo.apply(self, arguments); - }); - - self._patchFunctionToString(); + _processException: function(type, message, fileurl, lineno, frames, options) { + var prefixedMessage = (type ? type + ': ' : '') + (message || ''); + if ( + !!this._globalOptions.ignoreErrors.test && + (this._globalOptions.ignoreErrors.test(message) || + this._globalOptions.ignoreErrors.test(prefixedMessage)) + ) { + return; + } - if (self._globalOptions.instrument && self._globalOptions.instrument.tryCatch) { - self._instrumentTryCatch(); - } + var stacktrace; - if (self._globalOptions.autoBreadcrumbs) self._instrumentBreadcrumbs(); // Install all of the plugins + if (frames && frames.length) { + fileurl = frames[0].filename || fileurl; + // Sentry expects frames oldest to newest + // and JS sends them as newest to oldest + frames.reverse(); + stacktrace = {frames: frames}; + } else if (fileurl) { + stacktrace = { + frames: [ + { + filename: fileurl, + lineno: lineno, + in_app: true + } + ] + }; + } - self._drainPlugins(); + if ( + !!this._globalOptions.ignoreUrls.test && + this._globalOptions.ignoreUrls.test(fileurl) + ) { + return; + } - self._isRavenInstalled = true; + if ( + !!this._globalOptions.whitelistUrls.test && + !this._globalOptions.whitelistUrls.test(fileurl) + ) { + return; } - Error.stackTraceLimit = self._globalOptions.stackTraceLimit; - return this; + var data = objectMerge( + { + // sentry.interfaces.Exception + exception: { + values: [ + { + type: type, + value: message, + stacktrace: stacktrace + } + ] + }, + culprit: fileurl + }, + options + ); + + // Fire away! + this._send(data); }, - /* - * Set the DSN (can be called multiple time unlike config) - * - * @param {string} dsn The public Sentry DSN - */ - setDSN: function setDSN(dsn) { - var self = this, - uri = self._parseDSN(dsn), - lastSlash = uri.path.lastIndexOf('/'), - path = uri.path.substr(1, lastSlash); + _trimPacket: function(data) { + // For now, we only want to truncate the two different messages + // but this could/should be expanded to just trim everything + var max = this._globalOptions.maxMessageLength; + if (data.message) { + data.message = truncate(data.message, max); + } + if (data.exception) { + var exception = data.exception.values[0]; + exception.value = truncate(exception.value, max); + } - self._dsn = dsn; - self._globalKey = uri.user; - self._globalSecret = uri.pass && uri.pass.substr(1); - self._globalProject = uri.path.substr(lastSlash + 1); - self._globalServer = self._getGlobalServer(uri); - self._globalEndpoint = self._globalServer + '/' + path + 'api/' + self._globalProject + '/store/'; // Reset backoff state since we may be pointing at a - // new project/server + var request = data.request; + if (request) { + if (request.url) { + request.url = truncate(request.url, this._globalOptions.maxUrlLength); + } + if (request.Referer) { + request.Referer = truncate(request.Referer, this._globalOptions.maxUrlLength); + } + } - this._resetBackoff(); + if (data.breadcrumbs && data.breadcrumbs.values) + this._trimBreadcrumbs(data.breadcrumbs); + + return data; }, - /* - * Wrap code within a context so Raven can capture errors - * reliably across domains that is executed immediately. - * - * @param {object} options A specific set of options for this context [optional] - * @param {function} func The callback to be immediately executed within the context - * @param {array} args An array of arguments to be called with the callback [optional] - */ - context: function context(options, func, args) { - if (isFunction(options)) { - args = func || []; - func = options; - options = undefined; - } + /** + * Truncate breadcrumb values (right now just URLs) + */ + _trimBreadcrumbs: function(breadcrumbs) { + // known breadcrumb properties with urls + // TODO: also consider arbitrary prop values that start with (https?)?:// + var urlProps = ['to', 'from', 'url'], + urlProp, + crumb, + data; - return this.wrap(options, func).apply(this, args); + for (var i = 0; i < breadcrumbs.values.length; ++i) { + crumb = breadcrumbs.values[i]; + if ( + !crumb.hasOwnProperty('data') || + !isObject(crumb.data) || + objectFrozen(crumb.data) + ) + continue; + + data = objectMerge({}, crumb.data); + for (var j = 0; j < urlProps.length; ++j) { + urlProp = urlProps[j]; + if (data.hasOwnProperty(urlProp) && data[urlProp]) { + data[urlProp] = truncate(data[urlProp], this._globalOptions.maxUrlLength); + } + } + breadcrumbs.values[i].data = data; + } }, - /* - * Wrap code within a context and returns back a new function to be executed - * - * @param {object} options A specific set of options for this context [optional] - * @param {function} func The function to be wrapped in a new context - * @param {function} func A function to call before the try/catch wrapper [optional, private] - * @return {function} The newly wrapped functions with a context - */ - wrap: function wrap(options, func, _before) { - var self = this; // 1 argument has been passed, and it's not a function - // so just return it + _getHttpData: function() { + if (!this._hasNavigator && !this._hasDocument) return; + var httpData = {}; - if (isUndefined(func) && !isFunction(options)) { - return options; - } // options is optional + if (this._hasNavigator && _navigator.userAgent) { + httpData.headers = { + 'User-Agent': navigator.userAgent + }; + } + // Check in `window` instead of `document`, as we may be in ServiceWorker environment + if (_window.location && _window.location.href) { + httpData.url = _window.location.href; + } - if (isFunction(options)) { - func = options; - options = undefined; - } // At this point, we've passed along 2 arguments, and the second one - // is not a function either, so we'll just return the second argument. + if (this._hasDocument && _document.referrer) { + if (!httpData.headers) httpData.headers = {}; + httpData.headers.Referer = _document.referrer; + } + return httpData; + }, - if (!isFunction(func)) { - return func; - } // We don't wanna wrap it twice! + _resetBackoff: function() { + this._backoffDuration = 0; + this._backoffStart = null; + }, + _shouldBackoff: function() { + return this._backoffDuration && now() - this._backoffStart < this._backoffDuration; + }, - try { - if (func.__raven__) { - return func; - } // If this has already been wrapped in the past, return that + /** + * Returns true if the in-process data payload matches the signature + * of the previously-sent data + * + * NOTE: This has to be done at this level because TraceKit can generate + * data from window.onerror WITHOUT an exception object (IE8, IE9, + * other old browsers). This can take the form of an "exception" + * data object with a single frame (derived from the onerror args). + */ + _isRepeatData: function(current) { + var last = this._lastData; + if ( + !last || + current.message !== last.message || // defined for captureMessage + current.culprit !== last.culprit // defined for captureException/onerror + ) + return false; - if (func.__raven_wrapper__) { - return func.__raven_wrapper__; - } - } catch (e) { - // Just accessing custom props in some Selenium environments - // can cause a "Permission denied" exception (see raven-js#495). - // Bail on wrapping and return the function as-is (defers to window.onerror). - return func; + // Stacktrace interface (i.e. from captureMessage) + if (current.stacktrace || last.stacktrace) { + return isSameStacktrace(current.stacktrace, last.stacktrace); + } else if (current.exception || last.exception) { + // Exception interface (i.e. from captureException/onerror) + return isSameException(current.exception, last.exception); } - function wrapped() { - var args = [], - i = arguments.length, - deep = !options || options && options.deep !== false; - - if (_before && isFunction(_before)) { - _before.apply(this, arguments); - } // Recursively wrap all of a function's arguments that are - // functions themselves. + return true; + }, + _setBackoffState: function(request) { + // If we are already in a backoff state, don't change anything + if (this._shouldBackoff()) { + return; + } - while (i--) { - args[i] = deep ? self.wrap(options, arguments[i]) : arguments[i]; - } + var status = request.status; - try { - // Attempt to invoke user-land function - // NOTE: If you are a Sentry user, and you are seeing this stack frame, it - // means Raven caught an error invoking your application code. This is - // expected behavior and NOT indicative of a bug with Raven.js. - return func.apply(this, args); - } catch (e) { - self._ignoreNextOnError(); + // 400 - project_id doesn't exist or some other fatal + // 401 - invalid/revoked dsn + // 429 - too many requests + if (!(status === 400 || status === 401 || status === 429)) return; - self.captureException(e, options); - throw e; + var retry; + try { + // If Retry-After is not in Access-Control-Expose-Headers, most + // browsers will throw an exception trying to access it + if (supportsFetch()) { + retry = request.headers.get('Retry-After'); + } else { + retry = request.getResponseHeader('Retry-After'); } - } // copy over properties of the old function - - for (var property in func) { - if (hasKey(func, property)) { - wrapped[property] = func[property]; - } + // Retry-After is returned in seconds + retry = parseInt(retry, 10) * 1000; + } catch (e) { + /* eslint no-empty:0 */ } - wrapped.prototype = func.prototype; - func.__raven_wrapper__ = wrapped; // Signal that this function has been wrapped/filled already - // for both debugging and to prevent it to being wrapped/filled twice + this._backoffDuration = retry + ? // If Sentry server returned a Retry-After value, use it + retry + : // Otherwise, double the last backoff duration (starts at 1 sec) + this._backoffDuration * 2 || 1000; - wrapped.__raven__ = true; - wrapped.__orig__ = func; - return wrapped; + this._backoffStart = now(); }, - /* - * Uninstalls the global error handler. - * - * @return {Raven} - */ - uninstall: function uninstall() { - tracekit.report.uninstall(); + _send: function(data) { + var globalOptions = this._globalOptions; - this._unpatchFunctionToString(); + var baseData = { + project: this._globalProject, + logger: globalOptions.logger, + platform: 'javascript' + }, + httpData = this._getHttpData(); - this._restoreBuiltIns(); + if (httpData) { + baseData.request = httpData; + } - this._restoreConsole(); + // HACK: delete `trimHeadFrames` to prevent from appearing in outbound payload + if (data.trimHeadFrames) delete data.trimHeadFrames; - Error.stackTraceLimit = this._originalErrorStackTraceLimit; - this._isRavenInstalled = false; - return this; - }, + data = objectMerge(baseData, data); - /* - * Manually capture an exception and send it over to Sentry - * - * @param {error} ex An exception to be logged - * @param {object} options A specific set of options for this error [optional] - * @return {Raven} - */ - captureException: function captureException(ex, options) { - options = objectMerge({ - trimHeadFrames: 0 - }, options ? options : {}); // Cases for sending ex as a message, rather than an exception + // Merge in the tags and extra separately since objectMerge doesn't handle a deep merge + data.tags = objectMerge(objectMerge({}, this._globalContext.tags), data.tags); + data.extra = objectMerge(objectMerge({}, this._globalContext.extra), data.extra); - var isNotError = !isError(ex); - var isNotErrorEvent = !isErrorEvent(ex); - var isErrorEventWithoutError = isErrorEvent(ex) && !ex.error; + // Send along our own collected metadata with extra + data.extra['session:duration'] = now() - this._startTime; - if (isNotError && isNotErrorEvent || isErrorEventWithoutError) { - return this.captureMessage(ex, objectMerge(options, { - stacktrace: true, - // if we fall back to captureMessage, default to attempting a new trace - trimHeadFrames: options.trimHeadFrames + 1 - })); - } // Get actual Error from ErrorEvent + if (this._breadcrumbs && this._breadcrumbs.length > 0) { + // intentionally make shallow copy so that additions + // to breadcrumbs aren't accidentally sent in this request + data.breadcrumbs = { + values: [].slice.call(this._breadcrumbs, 0) + }; + } + if (this._globalContext.user) { + // sentry.interfaces.User + data.user = this._globalContext.user; + } - if (isErrorEvent(ex)) ex = ex.error; // Store the raw exception object for potential debugging and introspection + // Include the environment if it's defined in globalOptions + if (globalOptions.environment) data.environment = globalOptions.environment; - this._lastCapturedException = ex; // TraceKit.report will re-raise any exception passed to it, - // which means you have to wrap it in try/catch. Instead, we - // can wrap it here and only re-raise if TraceKit.report - // raises an exception different from the one we asked to - // report on. + // Include the release if it's defined in globalOptions + if (globalOptions.release) data.release = globalOptions.release; - try { - var stack = tracekit.computeStackTrace(ex); + // Include server_name if it's defined in globalOptions + if (globalOptions.serverName) data.server_name = globalOptions.serverName; - this._handleStackInfo(stack, options); - } catch (ex1) { - if (ex !== ex1) { - throw ex1; + data = this._sanitizeData(data); + + // Cleanup empty properties before sending them to the server + Object.keys(data).forEach(function(key) { + if (data[key] == null || data[key] === '' || isEmptyObject(data[key])) { + delete data[key]; } + }); + + if (isFunction(globalOptions.dataCallback)) { + data = globalOptions.dataCallback(data) || data; } - return this; - }, + // Why?????????? + if (!data || isEmptyObject(data)) { + return; + } - /* - * Manually send a message to Sentry - * - * @param {string} msg A plain message to be captured in Sentry - * @param {object} options A specific set of options for this message [optional] - * @return {Raven} - */ - captureMessage: function captureMessage(msg, options) { - // config() automagically converts ignoreErrors from a list to a RegExp so we need to test for an - // early call; we'll error on the side of logging anything called before configuration since it's - // probably something you should see: - if (!!this._globalOptions.ignoreErrors.test && this._globalOptions.ignoreErrors.test(msg)) { + // Check if the request should be filtered or not + if ( + isFunction(globalOptions.shouldSendCallback) && + !globalOptions.shouldSendCallback(data) + ) { return; } - options = options || {}; - var data = objectMerge({ - message: msg + '' // Make sure it's actually a string + // Backoff state: Sentry server previously responded w/ an error (e.g. 429 - too many requests), + // so drop requests until "cool-off" period has elapsed. + if (this._shouldBackoff()) { + this._logDebug('warn', 'Raven dropped error due to backoff: ', data); + return; + } - }, options); - var ex; // Generate a "synthetic" stack trace from this point. - // NOTE: If you are a Sentry user, and you are seeing this stack frame, it is NOT indicative - // of a bug with Raven.js. Sentry generates synthetic traces either by configuration, - // or if it catches a thrown object without a "stack" property. + if (typeof globalOptions.sampleRate === 'number') { + if (Math.random() < globalOptions.sampleRate) { + this._sendProcessedPayload(data); + } + } else { + this._sendProcessedPayload(data); + } + }, - try { - throw new Error(msg); - } catch (ex1) { - ex = ex1; - } // null exception name so `Error` isn't prefixed to msg + _sanitizeData: function(data) { + return sanitize(data, this._globalOptions.sanitizeKeys); + }, + _getUuid: function() { + return uuid4(); + }, - ex.name = null; - var stack = tracekit.computeStackTrace(ex); // stack[0] is `throw new Error(msg)` call itself, we are interested in the frame that was just before that, stack[1] + _sendProcessedPayload: function(data, callback) { + var self = this; + var globalOptions = this._globalOptions; - var initialCall = isArray(stack.stack) && stack.stack[1]; - var fileurl = initialCall && initialCall.url || ''; + if (!this.isSetup()) return; - if (!!this._globalOptions.ignoreUrls.test && this._globalOptions.ignoreUrls.test(fileurl)) { + // Try and clean up the packet before sending by truncating long values + data = this._trimPacket(data); + + // ideally duplicate error testing should occur *before* dataCallback/shouldSendCallback, + // but this would require copying an un-truncated copy of the data packet, which can be + // arbitrarily deep (extra_data) -- could be worthwhile? will revisit + if (!this._globalOptions.allowDuplicates && this._isRepeatData(data)) { + this._logDebug('warn', 'Raven dropped repeat event: ', data); return; } - if (!!this._globalOptions.whitelistUrls.test && !this._globalOptions.whitelistUrls.test(fileurl)) { - return; + // Send along an event_id if not explicitly passed. + // This event_id can be used to reference the error within Sentry itself. + // Set lastEventId after we know the error should actually be sent + this._lastEventId = data.event_id || (data.event_id = this._getUuid()); + + // Store outbound payload after trim + this._lastData = data; + + this._logDebug('debug', 'Raven about to send:', data); + + var auth = { + sentry_version: '7', + sentry_client: 'raven-js/' + this.VERSION, + sentry_key: this._globalKey + }; + + if (this._globalSecret) { + auth.sentry_secret = this._globalSecret; } - if (this._globalOptions.stacktrace || options && options.stacktrace) { - options = objectMerge({ - // fingerprint on msg, not stack trace (legacy behavior, could be - // revisited) - fingerprint: msg, - // since we know this is a synthetic trace, the top N-most frames - // MUST be from Raven.js, so mark them as in_app later by setting - // trimHeadFrames - trimHeadFrames: (options.trimHeadFrames || 0) + 1 - }, options); + var exception = data.exception && data.exception.values[0]; - var frames = this._prepareFrames(stack, options); + // only capture 'sentry' breadcrumb is autoBreadcrumbs is truthy + if ( + this._globalOptions.autoBreadcrumbs && + this._globalOptions.autoBreadcrumbs.sentry + ) { + this.captureBreadcrumb({ + category: 'sentry', + message: exception + ? (exception.type ? exception.type + ': ' : '') + exception.value + : data.message, + event_id: data.event_id, + level: data.level || 'error' // presume error unless specified + }); + } - data.stacktrace = { - // Sentry expects frames oldest to newest - frames: frames.reverse() - }; - } // Fire away! + var url = this._globalEndpoint; + (globalOptions.transport || this._makeRequest).call(this, { + url: url, + auth: auth, + data: data, + options: globalOptions, + onSuccess: function success() { + self._resetBackoff(); + self._triggerEvent('success', { + data: data, + src: url + }); + callback && callback(); + }, + onError: function failure(error) { + self._logDebug('error', 'Raven transport failed to send: ', error); - this._send(data); + if (error.request) { + self._setBackoffState(error.request); + } - return this; + self._triggerEvent('failure', { + data: data, + src: url + }); + error = error || new Error('Raven send failed (no additional details provided)'); + callback && callback(error); + } + }); }, - captureBreadcrumb: function captureBreadcrumb(obj) { - var crumb = objectMerge({ - timestamp: now() / 1000 - }, obj); - if (isFunction(this._globalOptions.breadcrumbCallback)) { - var result = this._globalOptions.breadcrumbCallback(crumb); + _makeRequest: function(opts) { + // Auth is intentionally sent as part of query string (NOT as custom HTTP header) to avoid preflight CORS requests + var url = opts.url + '?' + urlencode(opts.auth); - if (isObject(result) && !isEmptyObject(result)) { - crumb = result; - } else if (result === false) { - return this; - } - } + var evaluatedHeaders = null; + var evaluatedFetchParameters = {}; - this._breadcrumbs.push(crumb); + if (opts.options.headers) { + evaluatedHeaders = this._evaluateHash(opts.options.headers); + } - if (this._breadcrumbs.length > this._globalOptions.maxBreadcrumbs) { - this._breadcrumbs.shift(); + if (opts.options.fetchParameters) { + evaluatedFetchParameters = this._evaluateHash(opts.options.fetchParameters); } - return this; - }, - addPlugin: function addPlugin(plugin - /*arg1, arg2, ... argN*/ - ) { - var pluginArgs = [].slice.call(arguments, 1); + if (supportsFetch()) { + evaluatedFetchParameters.body = stringify(opts.data); - this._plugins.push([plugin, pluginArgs]); + var defaultFetchOptions = objectMerge({}, this._fetchDefaults); + var fetchOptions = objectMerge(defaultFetchOptions, evaluatedFetchParameters); - if (this._isRavenInstalled) { - this._drainPlugins(); + if (evaluatedHeaders) { + fetchOptions.headers = evaluatedHeaders; + } + + return _window + .fetch(url, fetchOptions) + .then(function(response) { + if (response.ok) { + opts.onSuccess && opts.onSuccess(); + } else { + var error = new Error('Sentry error code: ' + response.status); + // It's called request only to keep compatibility with XHR interface + // and not add more redundant checks in setBackoffState method + error.request = response; + opts.onError && opts.onError(error); + } + }) + ['catch'](function() { + opts.onError && + opts.onError(new Error('Sentry error code: network unavailable')); + }); } - return this; - }, + var request = _window.XMLHttpRequest && new _window.XMLHttpRequest(); + if (!request) return; - /* - * Set/clear a user to be sent along with the payload. - * - * @param {object} user An object representing user data [optional] - * @return {Raven} - */ - setUserContext: function setUserContext(user) { - // Intentionally do not merge here since that's an unexpected behavior. - this._globalContext.user = user; - return this; - }, + // if browser doesn't support CORS (e.g. IE7), we are out of luck + var hasCORS = 'withCredentials' in request || typeof XDomainRequest !== 'undefined'; - /* - * Merge extra attributes to be sent along with the payload. - * - * @param {object} extra An object representing extra data [optional] - * @return {Raven} - */ - setExtraContext: function setExtraContext(extra) { - this._mergeContext('extra', extra); + if (!hasCORS) return; - return this; - }, + if ('withCredentials' in request) { + request.onreadystatechange = function() { + if (request.readyState !== 4) { + return; + } else if (request.status === 200) { + opts.onSuccess && opts.onSuccess(); + } else if (opts.onError) { + var err = new Error('Sentry error code: ' + request.status); + err.request = request; + opts.onError(err); + } + }; + } else { + request = new XDomainRequest(); + // xdomainrequest cannot go http -> https (or vice versa), + // so always use protocol relative + url = url.replace(/^https?:/, ''); - /* - * Merge tags to be sent along with the payload. - * - * @param {object} tags An object representing tags [optional] - * @return {Raven} - */ - setTagsContext: function setTagsContext(tags) { - this._mergeContext('tags', tags); + // onreadystatechange not supported by XDomainRequest + if (opts.onSuccess) { + request.onload = opts.onSuccess; + } + if (opts.onError) { + request.onerror = function() { + var err = new Error('Sentry error code: XDomainRequest'); + err.request = request; + opts.onError(err); + }; + } + } - return this; - }, + request.open('POST', url); - /* - * Clear all of the context. - * - * @return {Raven} - */ - clearContext: function clearContext() { - this._globalContext = {}; - return this; - }, + if (evaluatedHeaders) { + each(evaluatedHeaders, function(key, value) { + request.setRequestHeader(key, value); + }); + } - /* - * Get a copy of the current context. This cannot be mutated. - * - * @return {object} copy of context - */ - getContext: function getContext() { - // lol javascript - return JSON.parse(stringify_1(this._globalContext)); + request.send(stringify(opts.data)); }, - /* - * Set environment of application - * - * @param {string} environment Typically something like 'production'. - * @return {Raven} - */ - setEnvironment: function setEnvironment(environment) { - this._globalOptions.environment = environment; - return this; + _evaluateHash: function(hash) { + var evaluated = {}; + + for (var key in hash) { + if (hash.hasOwnProperty(key)) { + var value = hash[key]; + evaluated[key] = typeof value === 'function' ? value() : value; + } + } + + return evaluated; }, - /* - * Set release version of application - * - * @param {string} release Typically something like a git SHA to identify version - * @return {Raven} - */ - setRelease: function setRelease(release) { - this._globalOptions.release = release; - return this; + _logDebug: function(level) { + // We allow `Raven.debug` and `Raven.config(DSN, { debug: true })` to not make backward incompatible API change + if ( + this._originalConsoleMethods[level] && + (this.debug || this._globalOptions.debug) + ) { + // In IE<10 console methods do not have their own 'apply' method + Function.prototype.apply.call( + this._originalConsoleMethods[level], + this._originalConsole, + [].slice.call(arguments, 1) + ); + } }, - /* - * Set the dataCallback option - * - * @param {function} callback The callback to run which allows the - * data blob to be mutated before sending - * @return {Raven} - */ - setDataCallback: function setDataCallback(callback) { - var original = this._globalOptions.dataCallback; - this._globalOptions.dataCallback = keepOriginalCallback(original, callback); - return this; - }, + _mergeContext: function(key, context) { + if (isUndefined(context)) { + delete this._globalContext[key]; + } else { + this._globalContext[key] = objectMerge(this._globalContext[key] || {}, context); + } + } +}; - /* - * Set the breadcrumbCallback option - * - * @param {function} callback The callback to run which allows filtering - * or mutating breadcrumbs - * @return {Raven} - */ - setBreadcrumbCallback: function setBreadcrumbCallback(callback) { - var original = this._globalOptions.breadcrumbCallback; - this._globalOptions.breadcrumbCallback = keepOriginalCallback(original, callback); - return this; - }, +// Deprecations +Raven.prototype.setUser = Raven.prototype.setUserContext; +Raven.prototype.setReleaseContext = Raven.prototype.setRelease; - /* - * Set the shouldSendCallback option - * - * @param {function} callback The callback to run which allows - * introspecting the blob before sending - * @return {Raven} - */ - setShouldSendCallback: function setShouldSendCallback(callback) { - var original = this._globalOptions.shouldSendCallback; - this._globalOptions.shouldSendCallback = keepOriginalCallback(original, callback); - return this; - }, +module.exports = Raven; - /** - * Override the default HTTP transport mechanism that transmits data - * to the Sentry server. - * - * @param {function} transport Function invoked instead of the default - * `makeRequest` handler. - * - * @return {Raven} - */ - setTransport: function setTransport(transport) { - this._globalOptions.transport = transport; - return this; - }, +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"10":10,"3":3,"4":4,"7":7,"8":8,"9":9}],6:[function(_dereq_,module,exports){ +(function (global){ +/** + * Enforces a single instance of the Raven client, and the + * main entry point for Raven. If you are a consumer of the + * Raven library, you SHOULD load this file (vs raven.js). + **/ - /* - * Get the latest raw exception that was captured by Raven. - * - * @return {error} - */ - lastException: function lastException() { - return this._lastCapturedException; - }, +var RavenConstructor = _dereq_(5); - /* - * Get the last event id - * - * @return {string} - */ - lastEventId: function lastEventId() { - return this._lastEventId; - }, +// This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) +var _window = + typeof window !== 'undefined' + ? window + : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; +var _Raven = _window.Raven; - /* - * Determine if Raven is setup and ready to go. - * - * @return {boolean} - */ - isSetup: function isSetup() { - if (!this._hasJSON) return false; // needs JSON support +var Raven = new RavenConstructor(); - if (!this._globalServer) { - if (!this.ravenNotConfiguredError) { - this.ravenNotConfiguredError = true; +/* + * Allow multiple versions of Raven to be installed. + * Strip Raven from the global context and returns the instance. + * + * @return {Raven} + */ +Raven.noConflict = function() { + _window.Raven = _Raven; + return Raven; +}; - this._logDebug('error', 'Error: Raven has not been configured.'); - } +Raven.afterLoad(); - return false; - } +module.exports = Raven; - return true; - }, - afterLoad: function afterLoad() { - // TODO: remove window dependence? - // Attempt to initialize Raven on load - var RavenConfig = _window$1.RavenConfig; +/** + * DISCLAIMER: + * + * Expose `Client` constructor for cases where user want to track multiple "sub-applications" in one larger app. + * It's not meant to be used by a wide audience, so pleaaase make sure that you know what you're doing before using it. + * Accidentally calling `install` multiple times, may result in an unexpected behavior that's very hard to debug. + * + * It's called `Client' to be in-line with Raven Node implementation. + * + * HOWTO: + * + * import Raven from 'raven-js'; + * + * const someAppReporter = new Raven.Client(); + * const someOtherAppReporter = new Raven.Client(); + * + * someAppReporter.config('__DSN__', { + * ...config goes here + * }); + * + * someOtherAppReporter.config('__OTHER_DSN__', { + * ...config goes here + * }); + * + * someAppReporter.captureMessage(...); + * someAppReporter.captureException(...); + * someAppReporter.captureBreadcrumb(...); + * + * someOtherAppReporter.captureMessage(...); + * someOtherAppReporter.captureException(...); + * someOtherAppReporter.captureBreadcrumb(...); + * + * It should "just work". + */ +module.exports.Client = RavenConstructor; - if (RavenConfig) { - this.config(RavenConfig.dsn, RavenConfig.config).install(); - } - }, - showReportDialog: function showReportDialog(options) { - if (!_document // doesn't work without a document (React native) - ) return; - options = options || {}; - var lastEventId = options.eventId || this.lastEventId(); +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"5":5}],7:[function(_dereq_,module,exports){ +(function (global){ +var stringify = _dereq_(9); - if (!lastEventId) { - throw new configError('Missing eventId'); - } +var _window = + typeof window !== 'undefined' + ? window + : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; - var dsn = options.dsn || this._dsn; +function isObject(what) { + return typeof what === 'object' && what !== null; +} - if (!dsn) { - throw new configError('Missing DSN'); - } +// Yanked from https://git.io/vS8DV re-used under CC0 +// with some tiny modifications +function isError(value) { + switch ({}.toString.call(value)) { + case '[object Error]': + return true; + case '[object Exception]': + return true; + case '[object DOMException]': + return true; + default: + return value instanceof Error; + } +} - var encode = encodeURIComponent; - var qs = ''; - qs += '?eventId=' + encode(lastEventId); - qs += '&dsn=' + encode(dsn); - var user = options.user || this._globalContext.user; +function isErrorEvent(value) { + return supportsErrorEvent() && {}.toString.call(value) === '[object ErrorEvent]'; +} - if (user) { - if (user.name) qs += '&name=' + encode(user.name); - if (user.email) qs += '&email=' + encode(user.email); +function isUndefined(what) { + return what === void 0; +} + +function isFunction(what) { + return typeof what === 'function'; +} + +function isPlainObject(what) { + return Object.prototype.toString.call(what) === '[object Object]'; +} + +function isString(what) { + return Object.prototype.toString.call(what) === '[object String]'; +} + +function isArray(what) { + return Object.prototype.toString.call(what) === '[object Array]'; +} + +function isEmptyObject(what) { + if (!isPlainObject(what)) return false; + + for (var _ in what) { + if (what.hasOwnProperty(_)) { + return false; } + } + return true; +} - var globalServer = this._getGlobalServer(this._parseDSN(dsn)); +function supportsErrorEvent() { + try { + new ErrorEvent(''); // eslint-disable-line no-new + return true; + } catch (e) { + return false; + } +} - var script = _document.createElement('script'); +function supportsFetch() { + if (!('fetch' in _window)) return false; - script.async = true; - script.src = globalServer + '/api/embed/error-page/' + qs; + try { + new Headers(); // eslint-disable-line no-new + new Request(''); // eslint-disable-line no-new + new Response(); // eslint-disable-line no-new + return true; + } catch (e) { + return false; + } +} - (_document.head || _document.body).appendChild(script); - }, +// Despite all stars in the sky saying that Edge supports old draft syntax, aka 'never', 'always', 'origin' and 'default +// https://caniuse.com/#feat=referrer-policy +// It doesn't. And it throw exception instead of ignoring this parameter... +// REF: https://github.com/getsentry/raven-js/issues/1233 +function supportsReferrerPolicy() { + if (!supportsFetch()) return false; - /**** Private functions ****/ - _ignoreNextOnError: function _ignoreNextOnError() { - var self = this; - this._ignoreOnError += 1; - setTimeout(function () { - // onerror should trigger before setTimeout - self._ignoreOnError -= 1; + try { + // eslint-disable-next-line no-new + new Request('pickleRick', { + referrerPolicy: 'origin' }); - }, - _triggerEvent: function _triggerEvent(eventType, options) { - // NOTE: `event` is a native browser thing, so let's avoid conflicting wiht it - var evt, key; - if (!this._hasDocument) return; - options = options || {}; - eventType = 'raven' + eventType.substr(0, 1).toUpperCase() + eventType.substr(1); + return true; + } catch (e) { + return false; + } +} - if (_document.createEvent) { - evt = _document.createEvent('HTMLEvents'); - evt.initEvent(eventType, true, true); - } else { - evt = _document.createEventObject(); - evt.eventType = eventType; +function supportsPromiseRejectionEvent() { + return typeof PromiseRejectionEvent === 'function'; +} + +function wrappedCallback(callback) { + function dataCallback(data, original) { + var normalizedData = callback(data) || data; + if (original) { + return original(normalizedData) || normalizedData; } + return normalizedData; + } - for (key in options) { - if (hasKey(options, key)) { - evt[key] = options[key]; + return dataCallback; +} + +function each(obj, callback) { + var i, j; + + if (isUndefined(obj.length)) { + for (i in obj) { + if (hasKey(obj, i)) { + callback.call(null, i, obj[i]); } } - - if (_document.createEvent) { - // IE9 if standards - _document.dispatchEvent(evt); - } else { - // IE8 regardless of Quirks or Standards - // IE9 if quirks - try { - _document.fireEvent('on' + evt.eventType.toLowerCase(), evt); - } catch (e) {// Do nothing + } else { + j = obj.length; + if (j) { + for (i = 0; i < j; i++) { + callback.call(null, i, obj[i]); } } - }, + } +} - /** - * Wraps addEventListener to capture UI breadcrumbs - * @param evtName the event name (e.g. "click") - * @returns {Function} - * @private - */ - _breadcrumbEventHandler: function _breadcrumbEventHandler(evtName) { - var self = this; - return function (evt) { - // reset keypress timeout; e.g. triggering a 'click' after - // a 'keypress' will reset the keypress debounce so that a new - // set of keypresses can be recorded - self._keypressTimeout = null; // It's possible this handler might trigger multiple times for the same - // event (e.g. event propagation through node ancestors). Ignore if we've - // already captured the event. +function objectMerge(obj1, obj2) { + if (!obj2) { + return obj1; + } + each(obj2, function(key, value) { + obj1[key] = value; + }); + return obj1; +} - if (self._lastCapturedEvent === evt) return; - self._lastCapturedEvent = evt; // try/catch both: - // - accessing evt.target (see getsentry/raven-js#838, #768) - // - `htmlTreeAsString` because it's complex, and just accessing the DOM incorrectly - // can throw an exception in some circumstances. +/** + * This function is only used for react-native. + * react-native freezes object that have already been sent over the + * js bridge. We need this function in order to check if the object is frozen. + * So it's ok that objectFrozen returns false if Object.isFrozen is not + * supported because it's not relevant for other "platforms". See related issue: + * https://github.com/getsentry/react-native-sentry/issues/57 + */ +function objectFrozen(obj) { + if (!Object.isFrozen) { + return false; + } + return Object.isFrozen(obj); +} - var target; +function truncate(str, max) { + if (typeof max !== 'number') { + throw new Error('2nd argument to `truncate` function should be a number'); + } + if (typeof str !== 'string' || max === 0) { + return str; + } + return str.length <= max ? str : str.substr(0, max) + '\u2026'; +} - try { - target = htmlTreeAsString(evt.target); - } catch (e) { - target = ''; - } +/** + * hasKey, a better form of hasOwnProperty + * Example: hasKey(MainHostObject, property) === true/false + * + * @param {Object} host object to check property + * @param {string} key to check + */ +function hasKey(object, key) { + return Object.prototype.hasOwnProperty.call(object, key); +} - self.captureBreadcrumb({ - category: 'ui.' + evtName, - // e.g. ui.click, ui.input - message: target - }); - }; - }, +function joinRegExp(patterns) { + // Combine an array of regular expressions and strings into one large regexp + // Be mad. + var sources = [], + i = 0, + len = patterns.length, + pattern; - /** - * Wraps addEventListener to capture keypress UI events - * @returns {Function} - * @private - */ - _keypressEventHandler: function _keypressEventHandler() { - var self = this, - debounceDuration = 1000; // milliseconds - // TODO: if somehow user switches keypress target before - // debounce timeout is triggered, we will only capture - // a single breadcrumb from the FIRST target (acceptable?) + for (; i < len; i++) { + pattern = patterns[i]; + if (isString(pattern)) { + // If it's a string, we need to escape it + // Taken from: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions + sources.push(pattern.replace(/([.*+?^=!:${}()|\[\]\/\\])/g, '\\$1')); + } else if (pattern && pattern.source) { + // If it's a regexp already, we want to extract the source + sources.push(pattern.source); + } + // Intentionally skip other cases + } + return new RegExp(sources.join('|'), 'i'); +} - return function (evt) { - var target; +function urlencode(o) { + var pairs = []; + each(o, function(key, value) { + pairs.push(encodeURIComponent(key) + '=' + encodeURIComponent(value)); + }); + return pairs.join('&'); +} - try { - target = evt.target; - } catch (e) { - // just accessing event properties can throw an exception in some rare circumstances - // see: https://github.com/getsentry/raven-js/issues/838 - return; - } +// borrowed from https://tools.ietf.org/html/rfc3986#appendix-B +// intentionally using regex and not href parsing trick because React Native and other +// environments where DOM might not be available +function parseUrl(url) { + if (typeof url !== 'string') return {}; + var match = url.match(/^(([^:\/?#]+):)?(\/\/([^\/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?$/); - var tagName = target && target.tagName; // only consider keypress events on actual input elements - // this will disregard keypresses targeting body (e.g. tabbing - // through elements, hotkeys, etc) + // coerce to undefined values to empty string so we don't get 'undefined' + var query = match[6] || ''; + var fragment = match[8] || ''; + return { + protocol: match[2], + host: match[4], + path: match[5], + relative: match[5] + query + fragment // everything minus origin + }; +} +function uuid4() { + var crypto = _window.crypto || _window.msCrypto; - if (!tagName || tagName !== 'INPUT' && tagName !== 'TEXTAREA' && !target.isContentEditable) return; // record first keypress in a series, but ignore subsequent - // keypresses until debounce clears + if (!isUndefined(crypto) && crypto.getRandomValues) { + // Use window.crypto API if available + // eslint-disable-next-line no-undef + var arr = new Uint16Array(8); + crypto.getRandomValues(arr); - var timeout = self._keypressTimeout; + // set 4 in byte 7 + arr[3] = (arr[3] & 0xfff) | 0x4000; + // set 2 most significant bits of byte 9 to '10' + arr[4] = (arr[4] & 0x3fff) | 0x8000; - if (!timeout) { - self._breadcrumbEventHandler('input')(evt); + var pad = function(num) { + var v = num.toString(16); + while (v.length < 4) { + v = '0' + v; } - - clearTimeout(timeout); - self._keypressTimeout = setTimeout(function () { - self._keypressTimeout = null; - }, debounceDuration); + return v; }; - }, - - /** - * Captures a breadcrumb of type "navigation", normalizing input URLs - * @param to the originating URL - * @param from the target URL - * @private - */ - _captureUrlChange: function _captureUrlChange(from, to) { - var parsedLoc = parseUrl(this._location.href); - var parsedTo = parseUrl(to); - var parsedFrom = parseUrl(from); // because onpopstate only tells you the "new" (to) value of location.href, and - // not the previous (from) value, we need to track the value of the current URL - // state ourselves - - this._lastHref = to; // Use only the path component of the URL if the URL matches the current - // document (almost all the time when using pushState) - if (parsedLoc.protocol === parsedTo.protocol && parsedLoc.host === parsedTo.host) to = parsedTo.relative; - if (parsedLoc.protocol === parsedFrom.protocol && parsedLoc.host === parsedFrom.host) from = parsedFrom.relative; - this.captureBreadcrumb({ - category: 'navigation', - data: { - to: to, - from: from - } + return ( + pad(arr[0]) + + pad(arr[1]) + + pad(arr[2]) + + pad(arr[3]) + + pad(arr[4]) + + pad(arr[5]) + + pad(arr[6]) + + pad(arr[7]) + ); + } else { + // http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/2117523#2117523 + return 'xxxxxxxxxxxx4xxxyxxxxxxxxxxxxxxx'.replace(/[xy]/g, function(c) { + var r = (Math.random() * 16) | 0, + v = c === 'x' ? r : (r & 0x3) | 0x8; + return v.toString(16); }); - }, - _patchFunctionToString: function _patchFunctionToString() { - var self = this; - self._originalFunctionToString = Function.prototype.toString; // eslint-disable-next-line no-extend-native + } +} - Function.prototype.toString = function () { - if (typeof this === 'function' && this.__raven__) { - return self._originalFunctionToString.apply(this.__orig__, arguments); - } +/** + * Given a child DOM element, returns a query-selector statement describing that + * and its ancestors + * e.g. [HTMLElement] => body > div > input#foo.btn[name=baz] + * @param elem + * @returns {string} + */ +function htmlTreeAsString(elem) { + /* eslint no-extra-parens:0*/ + var MAX_TRAVERSE_HEIGHT = 5, + MAX_OUTPUT_LEN = 80, + out = [], + height = 0, + len = 0, + separator = ' > ', + sepLength = separator.length, + nextStr; - return self._originalFunctionToString.apply(this, arguments); - }; - }, - _unpatchFunctionToString: function _unpatchFunctionToString() { - if (this._originalFunctionToString) { - // eslint-disable-next-line no-extend-native - Function.prototype.toString = this._originalFunctionToString; + while (elem && height++ < MAX_TRAVERSE_HEIGHT) { + nextStr = htmlElementAsString(elem); + // bail out if + // - nextStr is the 'html' element + // - the length of the string that would be created exceeds MAX_OUTPUT_LEN + // (ignore this limit if we are on the first iteration) + if ( + nextStr === 'html' || + (height > 1 && len + out.length * sepLength + nextStr.length >= MAX_OUTPUT_LEN) + ) { + break; } - }, - /** - * Wrap timer functions and event targets to catch errors and provide - * better metadata. - */ - _instrumentTryCatch: function _instrumentTryCatch() { - var self = this; - var wrappedBuiltIns = self._wrappedBuiltIns; + out.push(nextStr); - function wrapTimeFn(orig) { - return function (fn, t) { - // preserve arity - // Make a copy of the arguments to prevent deoptimization - // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments - var args = new Array(arguments.length); + len += nextStr.length; + elem = elem.parentNode; + } - for (var i = 0; i < args.length; ++i) { - args[i] = arguments[i]; - } + return out.reverse().join(separator); +} - var originalCallback = args[0]; +/** + * Returns a simple, query-selector representation of a DOM element + * e.g. [HTMLElement] => input#foo.btn[name=baz] + * @param HTMLElement + * @returns {string} + */ +function htmlElementAsString(elem) { + var out = [], + className, + classes, + key, + attr, + i; - if (isFunction(originalCallback)) { - args[0] = self.wrap(originalCallback); - } // IE < 9 doesn't support .call/.apply on setInterval/setTimeout, but it - // also supports only two arguments and doesn't care what this is, so we - // can just call the original function directly. + if (!elem || !elem.tagName) { + return ''; + } + out.push(elem.tagName.toLowerCase()); + if (elem.id) { + out.push('#' + elem.id); + } - if (orig.apply) { - return orig.apply(this, args); - } else { - return orig(args[0], args[1]); - } - }; + className = elem.className; + if (className && isString(className)) { + classes = className.split(/\s+/); + for (i = 0; i < classes.length; i++) { + out.push('.' + classes[i]); } + } + var attrWhitelist = ['type', 'name', 'title', 'alt']; + for (i = 0; i < attrWhitelist.length; i++) { + key = attrWhitelist[i]; + attr = elem.getAttribute(key); + if (attr) { + out.push('[' + key + '="' + attr + '"]'); + } + } + return out.join(''); +} - var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; - - function wrapEventTarget(global) { - var proto = _window$1[global] && _window$1[global].prototype; +/** + * Returns true if either a OR b is truthy, but not both + */ +function isOnlyOneTruthy(a, b) { + return !!(!!a ^ !!b); +} - if (proto && proto.hasOwnProperty && proto.hasOwnProperty('addEventListener')) { - fill(proto, 'addEventListener', function (orig) { - return function (evtName, fn, capture, secure) { - // preserve arity - try { - if (fn && fn.handleEvent) { - fn.handleEvent = self.wrap(fn.handleEvent); - } - } catch (err) {} // can sometimes get 'Permission denied to access property "handle Event' - // More breadcrumb DOM capture ... done here and not in `_instrumentBreadcrumbs` - // so that we don't have more than one wrapper function +/** + * Returns true if both parameters are undefined + */ +function isBothUndefined(a, b) { + return isUndefined(a) && isUndefined(b); +} +/** + * Returns true if the two input exception interfaces have the same content + */ +function isSameException(ex1, ex2) { + if (isOnlyOneTruthy(ex1, ex2)) return false; - var before, clickHandler, keypressHandler; + ex1 = ex1.values[0]; + ex2 = ex2.values[0]; - if (autoBreadcrumbs && autoBreadcrumbs.dom && (global === 'EventTarget' || global === 'Node')) { - // NOTE: generating multiple handlers per addEventListener invocation, should - // revisit and verify we can just use one (almost certainly) - clickHandler = self._breadcrumbEventHandler('click'); - keypressHandler = self._keypressEventHandler(); + if (ex1.type !== ex2.type || ex1.value !== ex2.value) return false; - before = function before(evt) { - // need to intercept every DOM event in `before` argument, in case that - // same wrapped method is re-used for different events (e.g. mousemove THEN click) - // see #724 - if (!evt) return; - var eventType; + // in case both stacktraces are undefined, we can't decide so default to false + if (isBothUndefined(ex1.stacktrace, ex2.stacktrace)) return false; - try { - eventType = evt.type; - } catch (e) { - // just accessing event properties can throw an exception in some rare circumstances - // see: https://github.com/getsentry/raven-js/issues/838 - return; - } + return isSameStacktrace(ex1.stacktrace, ex2.stacktrace); +} - if (eventType === 'click') return clickHandler(evt);else if (eventType === 'keypress') return keypressHandler(evt); - }; - } - - return orig.call(this, evtName, self.wrap(fn, undefined, before), capture, secure); - }; - }, wrappedBuiltIns); - fill(proto, 'removeEventListener', function (orig) { - return function (evt, fn, capture, secure) { - try { - fn = fn && (fn.__raven_wrapper__ ? fn.__raven_wrapper__ : fn); - } catch (e) {// ignore, accessing __raven_wrapper__ will throw in some Selenium environments - } - - return orig.call(this, evt, fn, capture, secure); - }; - }, wrappedBuiltIns); - } - } +/** + * Returns true if the two input stack trace interfaces have the same content + */ +function isSameStacktrace(stack1, stack2) { + if (isOnlyOneTruthy(stack1, stack2)) return false; - fill(_window$1, 'setTimeout', wrapTimeFn, wrappedBuiltIns); - fill(_window$1, 'setInterval', wrapTimeFn, wrappedBuiltIns); + var frames1 = stack1.frames; + var frames2 = stack2.frames; - if (_window$1.requestAnimationFrame) { - fill(_window$1, 'requestAnimationFrame', function (orig) { - return function (cb) { - return orig(self.wrap(cb)); - }; - }, wrappedBuiltIns); - } // event targets borrowed from bugsnag-js: - // https://github.com/bugsnag/bugsnag-js/blob/master/src/bugsnag.js#L666 + // Exit early if frame count differs + if (frames1.length !== frames2.length) return false; + // Iterate through every frame; bail out if anything differs + var a, b; + for (var i = 0; i < frames1.length; i++) { + a = frames1[i]; + b = frames2[i]; + if ( + a.filename !== b.filename || + a.lineno !== b.lineno || + a.colno !== b.colno || + a['function'] !== b['function'] + ) + return false; + } + return true; +} - var eventTargets = ['EventTarget', 'Window', 'Node', 'ApplicationCache', 'AudioTrackList', 'ChannelMergerNode', 'CryptoOperation', 'EventSource', 'FileReader', 'HTMLUnknownElement', 'IDBDatabase', 'IDBRequest', 'IDBTransaction', 'KeyOperation', 'MediaController', 'MessagePort', 'ModalWindow', 'Notification', 'SVGElementInstance', 'Screen', 'TextTrack', 'TextTrackCue', 'TextTrackList', 'WebSocket', 'WebSocketWorker', 'Worker', 'XMLHttpRequest', 'XMLHttpRequestEventTarget', 'XMLHttpRequestUpload']; +/** + * Polyfill a method + * @param obj object e.g. `document` + * @param name method name present on object e.g. `addEventListener` + * @param replacement replacement function + * @param track {optional} record instrumentation to an array + */ +function fill(obj, name, replacement, track) { + if (obj == null) return; + var orig = obj[name]; + obj[name] = replacement(orig); + obj[name].__raven__ = true; + obj[name].__orig__ = orig; + if (track) { + track.push([obj, name, orig]); + } +} - for (var i = 0; i < eventTargets.length; i++) { - wrapEventTarget(eventTargets[i]); - } - }, +/** + * Join values in array + * @param input array of values to be joined together + * @param delimiter string to be placed in-between values + * @returns {string} + */ +function safeJoin(input, delimiter) { + if (!isArray(input)) return ''; - /** - * Instrument browser built-ins w/ breadcrumb capturing - * - XMLHttpRequests - * - DOM interactions (click/typing) - * - window.location changes - * - console - * - * Can be disabled or individually configured via the `autoBreadcrumbs` config option - */ - _instrumentBreadcrumbs: function _instrumentBreadcrumbs() { - var self = this; - var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; - var wrappedBuiltIns = self._wrappedBuiltIns; + var output = []; - function wrapProp(prop, xhr) { - if (prop in xhr && isFunction(xhr[prop])) { - fill(xhr, prop, function (orig) { - return self.wrap(orig); - }); // intentionally don't track filled methods on XHR instances - } + for (var i = 0; i < input.length; i++) { + try { + output.push(String(input[i])); + } catch (e) { + output.push('[value cannot be serialized]'); } + } - if (autoBreadcrumbs.xhr && 'XMLHttpRequest' in _window$1) { - var xhrproto = XMLHttpRequest.prototype; - fill(xhrproto, 'open', function (origOpen) { - return function (method, url) { - // preserve arity - // if Sentry key appears in URL, don't capture - if (isString(url) && url.indexOf(self._globalKey) === -1) { - this.__raven_xhr = { - method: method, - url: url, - status_code: null - }; - } + return output.join(delimiter); +} - return origOpen.apply(this, arguments); - }; - }, wrappedBuiltIns); - fill(xhrproto, 'send', function (origSend) { - return function () { - // preserve arity - var xhr = this; - - function onreadystatechangeHandler() { - if (xhr.__raven_xhr && xhr.readyState === 4) { - try { - // touching statusCode in some platforms throws - // an exception - xhr.__raven_xhr.status_code = xhr.status; - } catch (e) { - /* do nothing */ - } +// Default Node.js REPL depth +var MAX_SERIALIZE_EXCEPTION_DEPTH = 3; +// 50kB, as 100kB is max payload size, so half sounds reasonable +var MAX_SERIALIZE_EXCEPTION_SIZE = 50 * 1024; +var MAX_SERIALIZE_KEYS_LENGTH = 40; - self.captureBreadcrumb({ - type: 'http', - category: 'xhr', - data: xhr.__raven_xhr - }); - } - } +function utf8Length(value) { + return ~-encodeURI(value).split(/%..|./).length; +} - var props = ['onload', 'onerror', 'onprogress']; +function jsonSize(value) { + return utf8Length(JSON.stringify(value)); +} - for (var j = 0; j < props.length; j++) { - wrapProp(props[j], xhr); - } +function serializeValue(value) { + if (typeof value === 'string') { + var maxLength = 40; + return truncate(value, maxLength); + } else if ( + typeof value === 'number' || + typeof value === 'boolean' || + typeof value === 'undefined' + ) { + return value; + } - if ('onreadystatechange' in xhr && isFunction(xhr.onreadystatechange)) { - fill(xhr, 'onreadystatechange', function (orig) { - return self.wrap(orig, undefined, onreadystatechangeHandler); - } - /* intentionally don't track this instrumentation */ - ); - } else { - // if onreadystatechange wasn't actually set by the page on this xhr, we - // are free to set our own and capture the breadcrumb - xhr.onreadystatechange = onreadystatechangeHandler; - } + var type = Object.prototype.toString.call(value); - return origSend.apply(this, arguments); - }; - }, wrappedBuiltIns); - } + // Node.js REPL notation + if (type === '[object Object]') return '[Object]'; + if (type === '[object Array]') return '[Array]'; + if (type === '[object Function]') + return value.name ? '[Function: ' + value.name + ']' : '[Function]'; - if (autoBreadcrumbs.xhr && supportsFetch()) { - fill(_window$1, 'fetch', function (origFetch) { - return function () { - // preserve arity - // Make a copy of the arguments to prevent deoptimization - // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments - var args = new Array(arguments.length); - - for (var i = 0; i < args.length; ++i) { - args[i] = arguments[i]; - } + return value; +} - var fetchInput = args[0]; - var method = 'GET'; - var url; +function serializeObject(value, depth) { + if (depth === 0) return serializeValue(value); + + if (isPlainObject(value)) { + return Object.keys(value).reduce(function(acc, key) { + acc[key] = serializeObject(value[key], depth - 1); + return acc; + }, {}); + } else if (Array.isArray(value)) { + return value.map(function(val) { + return serializeObject(val, depth - 1); + }); + } - if (typeof fetchInput === 'string') { - url = fetchInput; - } else if ('Request' in _window$1 && fetchInput instanceof _window$1.Request) { - url = fetchInput.url; + return serializeValue(value); +} - if (fetchInput.method) { - method = fetchInput.method; - } - } else { - url = '' + fetchInput; - } // if Sentry key appears in URL, don't capture, as it's our own request +function serializeException(ex, depth, maxSize) { + if (!isPlainObject(ex)) return ex; + depth = typeof depth !== 'number' ? MAX_SERIALIZE_EXCEPTION_DEPTH : depth; + maxSize = typeof depth !== 'number' ? MAX_SERIALIZE_EXCEPTION_SIZE : maxSize; - if (url.indexOf(self._globalKey) !== -1) { - return origFetch.apply(this, args); - } + var serialized = serializeObject(ex, depth); - if (args[1] && args[1].method) { - method = args[1].method; - } + if (jsonSize(stringify(serialized)) > maxSize) { + return serializeException(ex, depth - 1); + } - var fetchData = { - method: method, - url: url, - status_code: null - }; - return origFetch.apply(this, args).then(function (response) { - fetchData.status_code = response.status; - self.captureBreadcrumb({ - type: 'http', - category: 'fetch', - data: fetchData - }); - return response; - }); - }; - }, wrappedBuiltIns); - } // Capture breadcrumbs from any click that is unhandled / bubbled up all the way - // to the document. Do this before we instrument addEventListener. + return serialized; +} +function serializeKeysForMessage(keys, maxLength) { + if (typeof keys === 'number' || typeof keys === 'string') return keys.toString(); + if (!Array.isArray(keys)) return ''; - if (autoBreadcrumbs.dom && this._hasDocument) { - if (_document.addEventListener) { - _document.addEventListener('click', self._breadcrumbEventHandler('click'), false); + keys = keys.filter(function(key) { + return typeof key === 'string'; + }); + if (keys.length === 0) return '[object has no keys]'; - _document.addEventListener('keypress', self._keypressEventHandler(), false); - } else { - // IE8 Compatibility - _document.attachEvent('onclick', self._breadcrumbEventHandler('click')); + maxLength = typeof maxLength !== 'number' ? MAX_SERIALIZE_KEYS_LENGTH : maxLength; + if (keys[0].length >= maxLength) return keys[0]; - _document.attachEvent('onkeypress', self._keypressEventHandler()); - } - } // record navigation (URL) changes - // NOTE: in Chrome App environment, touching history.pushState, *even inside - // a try/catch block*, will cause Chrome to output an error to console.error - // borrowed from: https://github.com/angular/angular.js/pull/13945/files + for (var usedKeys = keys.length; usedKeys > 0; usedKeys--) { + var serialized = keys.slice(0, usedKeys).join(', '); + if (serialized.length > maxLength) continue; + if (usedKeys === keys.length) return serialized; + return serialized + '\u2026'; + } + return ''; +} - var chrome = _window$1.chrome; - var isChromePackagedApp = chrome && chrome.app && chrome.app.runtime; - var hasPushAndReplaceState = !isChromePackagedApp && _window$1.history && history.pushState && history.replaceState; +function sanitize(input, sanitizeKeys) { + if (!isArray(sanitizeKeys) || (isArray(sanitizeKeys) && sanitizeKeys.length === 0)) + return input; - if (autoBreadcrumbs.location && hasPushAndReplaceState) { - // TODO: remove onpopstate handler on uninstall() - var oldOnPopState = _window$1.onpopstate; + var sanitizeRegExp = joinRegExp(sanitizeKeys); + var sanitizeMask = '********'; + var safeInput; - _window$1.onpopstate = function () { - var currentHref = self._location.href; + try { + safeInput = JSON.parse(stringify(input)); + } catch (o_O) { + return input; + } - self._captureUrlChange(self._lastHref, currentHref); + function sanitizeWorker(workerInput) { + if (isArray(workerInput)) { + return workerInput.map(function(val) { + return sanitizeWorker(val); + }); + } - if (oldOnPopState) { - return oldOnPopState.apply(this, arguments); + if (isPlainObject(workerInput)) { + return Object.keys(workerInput).reduce(function(acc, k) { + if (sanitizeRegExp.test(k)) { + acc[k] = sanitizeMask; + } else { + acc[k] = sanitizeWorker(workerInput[k]); } - }; - - var historyReplacementFunction = function historyReplacementFunction(origHistFunction) { - // note history.pushState.length is 0; intentionally not declaring - // params to preserve 0 arity - return function () - /* state, title, url */ - { - var url = arguments.length > 2 ? arguments[2] : undefined; // url argument is optional - - if (url) { - // coerce to string (this is what pushState does) - self._captureUrlChange(self._lastHref, url + ''); - } - - return origHistFunction.apply(this, arguments); - }; - }; - - fill(history, 'pushState', historyReplacementFunction, wrappedBuiltIns); - fill(history, 'replaceState', historyReplacementFunction, wrappedBuiltIns); + return acc; + }, {}); } - if (autoBreadcrumbs.console && 'console' in _window$1 && console.log) { - // console - var consoleMethodCallback = function consoleMethodCallback(msg, data) { - self.captureBreadcrumb({ - message: msg, - level: data.level, - category: 'console' - }); - }; - - each(['debug', 'info', 'warn', 'error', 'log'], function (_, level) { - wrapConsoleMethod(console, level, consoleMethodCallback); - }); - } - }, - _restoreBuiltIns: function _restoreBuiltIns() { - // restore any wrapped builtins - var builtin; + return workerInput; + } - while (this._wrappedBuiltIns.length) { - builtin = this._wrappedBuiltIns.shift(); - var obj = builtin[0], - name = builtin[1], - orig = builtin[2]; - obj[name] = orig; - } - }, - _restoreConsole: function _restoreConsole() { - // eslint-disable-next-line guard-for-in - for (var method in this._originalConsoleMethods) { - this._originalConsole[method] = this._originalConsoleMethods[method]; - } - }, - _drainPlugins: function _drainPlugins() { - var self = this; // FIX ME TODO + return sanitizeWorker(safeInput); +} - each(this._plugins, function (_, plugin) { - var installer = plugin[0]; - var args = plugin[1]; - installer.apply(self, [self].concat(args)); - }); - }, - _parseDSN: function _parseDSN(str) { - var m = dsnPattern.exec(str), - dsn = {}, - i = 7; +module.exports = { + isObject: isObject, + isError: isError, + isErrorEvent: isErrorEvent, + isUndefined: isUndefined, + isFunction: isFunction, + isPlainObject: isPlainObject, + isString: isString, + isArray: isArray, + isEmptyObject: isEmptyObject, + supportsErrorEvent: supportsErrorEvent, + supportsFetch: supportsFetch, + supportsReferrerPolicy: supportsReferrerPolicy, + supportsPromiseRejectionEvent: supportsPromiseRejectionEvent, + wrappedCallback: wrappedCallback, + each: each, + objectMerge: objectMerge, + truncate: truncate, + objectFrozen: objectFrozen, + hasKey: hasKey, + joinRegExp: joinRegExp, + urlencode: urlencode, + uuid4: uuid4, + htmlTreeAsString: htmlTreeAsString, + htmlElementAsString: htmlElementAsString, + isSameException: isSameException, + isSameStacktrace: isSameStacktrace, + parseUrl: parseUrl, + fill: fill, + safeJoin: safeJoin, + serializeException: serializeException, + serializeKeysForMessage: serializeKeysForMessage, + sanitize: sanitize +}; - try { - while (i--) { - dsn[dsnKeys[i]] = m[i] || ''; - } - } catch (e) { - throw new configError('Invalid DSN: ' + str); - } +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"9":9}],8:[function(_dereq_,module,exports){ +(function (global){ +var utils = _dereq_(7); - if (dsn.pass && !this._globalOptions.allowSecretKey) { - throw new configError('Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key'); - } +/* + TraceKit - Cross brower stack traces - return dsn; - }, - _getGlobalServer: function _getGlobalServer(uri) { - // assemble the endpoint from the uri pieces - var globalServer = '//' + uri.host + (uri.port ? ':' + uri.port : ''); + This was originally forked from github.com/occ/TraceKit, but has since been + largely re-written and is now maintained as part of raven-js. Tests for + this are in test/vendor. - if (uri.protocol) { - globalServer = uri.protocol + ':' + globalServer; - } + MIT license +*/ - return globalServer; - }, - _handleOnErrorStackInfo: function _handleOnErrorStackInfo() { - // if we are intentionally ignoring errors via onerror, bail out - if (!this._ignoreOnError) { - this._handleStackInfo.apply(this, arguments); - } - }, - _handleStackInfo: function _handleStackInfo(stackInfo, options) { - var frames = this._prepareFrames(stackInfo, options); +var TraceKit = { + collectWindowErrors: true, + debug: false +}; - this._triggerEvent('handle', { - stackInfo: stackInfo, - options: options - }); +// This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) +var _window = + typeof window !== 'undefined' + ? window + : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; - this._processException(stackInfo.name, stackInfo.message, stackInfo.url, stackInfo.lineno, frames, options); - }, - _prepareFrames: function _prepareFrames(stackInfo, options) { - var self = this; - var frames = []; +// global reference to slice +var _slice = [].slice; +var UNKNOWN_FUNCTION = '?'; - if (stackInfo.stack && stackInfo.stack.length) { - each(stackInfo.stack, function (i, stack) { - var frame = self._normalizeFrame(stack, stackInfo.url); +// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error#Error_types +var ERROR_TYPES_RE = /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/; - if (frame) { - frames.push(frame); - } - }); // e.g. frames captured via captureMessage throw +function getLocationHref() { + if (typeof document === 'undefined' || document.location == null) return ''; - if (options && options.trimHeadFrames) { - for (var j = 0; j < options.trimHeadFrames && j < frames.length; j++) { - frames[j].in_app = false; - } - } - } + return document.location.href; +} - frames = frames.slice(0, this._globalOptions.stackTraceLimit); - return frames; - }, - _normalizeFrame: function _normalizeFrame(frame, stackInfoUrl) { - // normalize the frames data - var normalized = { - filename: frame.url, - lineno: frame.line, - colno: frame.column, - function: frame.func || '?' - }; // Case when we don't have any information about the error - // E.g. throwing a string or raw object, instead of an `Error` in Firefox - // Generating synthetic error doesn't add any value here - // - // We should probably somehow let a user know that they should fix their code - - if (!frame.url) { - normalized.filename = stackInfoUrl; // fallback to whole stacks url from onerror handler - } - - normalized.in_app = !( // determine if an exception came from outside of our app - // first we check the global includePaths list. - !!this._globalOptions.includePaths.test && !this._globalOptions.includePaths.test(normalized.filename) || // Now we check for fun, if the function name is Raven or TraceKit - /(Raven|TraceKit)\./.test(normalized['function']) || // finally, we do a last ditch effort and check for raven.min.js - /raven\.(min\.)?js$/.test(normalized.filename)); - return normalized; - }, - _processException: function _processException(type, message, fileurl, lineno, frames, options) { - var prefixedMessage = (type ? type + ': ' : '') + (message || ''); - - if (!!this._globalOptions.ignoreErrors.test && (this._globalOptions.ignoreErrors.test(message) || this._globalOptions.ignoreErrors.test(prefixedMessage))) { - return; - } - - var stacktrace; +/** + * TraceKit.report: cross-browser processing of unhandled exceptions + * + * Syntax: + * TraceKit.report.subscribe(function(stackInfo) { ... }) + * TraceKit.report.unsubscribe(function(stackInfo) { ... }) + * TraceKit.report(exception) + * try { ...code... } catch(ex) { TraceKit.report(ex); } + * + * Supports: + * - Firefox: full stack trace with line numbers, plus column number + * on top frame; column number is not guaranteed + * - Opera: full stack trace with line and column numbers + * - Chrome: full stack trace with line and column numbers + * - Safari: line and column number for the top frame only; some frames + * may be missing, and column number is not guaranteed + * - IE: line and column number for the top frame only; some frames + * may be missing, and column number is not guaranteed + * + * In theory, TraceKit should work on all of the following versions: + * - IE5.5+ (only 8.0 tested) + * - Firefox 0.9+ (only 3.5+ tested) + * - Opera 7+ (only 10.50 tested; versions 9 and earlier may require + * Exceptions Have Stacktrace to be enabled in opera:config) + * - Safari 3+ (only 4+ tested) + * - Chrome 1+ (only 5+ tested) + * - Konqueror 3.5+ (untested) + * + * Requires TraceKit.computeStackTrace. + * + * Tries to catch all unhandled exceptions and report them to the + * subscribed handlers. Please note that TraceKit.report will rethrow the + * exception. This is REQUIRED in order to get a useful stack trace in IE. + * If the exception does not reach the top of the browser, you will only + * get a stack trace from the point where TraceKit.report was called. + * + * Handlers receive a stackInfo object as described in the + * TraceKit.computeStackTrace docs. + */ +TraceKit.report = (function reportModuleWrapper() { + var handlers = [], + lastArgs = null, + lastException = null, + lastExceptionStack = null; - if (frames && frames.length) { - fileurl = frames[0].filename || fileurl; // Sentry expects frames oldest to newest - // and JS sends them as newest to oldest + /** + * Add a crash handler. + * @param {Function} handler + */ + function subscribe(handler) { + installGlobalHandler(); + handlers.push(handler); + } - frames.reverse(); - stacktrace = { - frames: frames - }; - } else if (fileurl) { - stacktrace = { - frames: [{ - filename: fileurl, - lineno: lineno, - in_app: true - }] - }; + /** + * Remove a crash handler. + * @param {Function} handler + */ + function unsubscribe(handler) { + for (var i = handlers.length - 1; i >= 0; --i) { + if (handlers[i] === handler) { + handlers.splice(i, 1); + } } + } - if (!!this._globalOptions.ignoreUrls.test && this._globalOptions.ignoreUrls.test(fileurl)) { - return; - } + /** + * Remove all crash handlers. + */ + function unsubscribeAll() { + uninstallGlobalHandler(); + handlers = []; + } - if (!!this._globalOptions.whitelistUrls.test && !this._globalOptions.whitelistUrls.test(fileurl)) { + /** + * Dispatch stack information to all handlers. + * @param {Object.} stack + */ + function notifyHandlers(stack, isWindowError) { + var exception = null; + if (isWindowError && !TraceKit.collectWindowErrors) { return; } - - var data = objectMerge({ - // sentry.interfaces.Exception - exception: { - values: [{ - type: type, - value: message, - stacktrace: stacktrace - }] - }, - culprit: fileurl - }, options); // Fire away! - - this._send(data); - }, - _trimPacket: function _trimPacket(data) { - // For now, we only want to truncate the two different messages - // but this could/should be expanded to just trim everything - var max = this._globalOptions.maxMessageLength; - - if (data.message) { - data.message = truncate(data.message, max); - } - - if (data.exception) { - var exception = data.exception.values[0]; - exception.value = truncate(exception.value, max); - } - - var request = data.request; - - if (request) { - if (request.url) { - request.url = truncate(request.url, this._globalOptions.maxUrlLength); + for (var i in handlers) { + if (handlers.hasOwnProperty(i)) { + try { + handlers[i].apply(null, [stack].concat(_slice.call(arguments, 2))); + } catch (inner) { + exception = inner; + } } + } - if (request.Referer) { - request.Referer = truncate(request.Referer, this._globalOptions.maxUrlLength); - } + if (exception) { + throw exception; } + } - if (data.breadcrumbs && data.breadcrumbs.values) this._trimBreadcrumbs(data.breadcrumbs); - return data; - }, + var _oldOnerrorHandler, _onErrorHandlerInstalled; /** - * Truncate breadcrumb values (right now just URLs) + * Ensures all global unhandled exceptions are recorded. + * Supported by Gecko and IE. + * @param {string} msg Error message. + * @param {string} url URL of script that generated the exception. + * @param {(number|string)} lineNo The line number at which the error + * occurred. + * @param {?(number|string)} colNo The column number at which the error + * occurred. + * @param {?Error} ex The actual Error object. */ - _trimBreadcrumbs: function _trimBreadcrumbs(breadcrumbs) { - // known breadcrumb properties with urls - // TODO: also consider arbitrary prop values that start with (https?)?:// - var urlProps = ['to', 'from', 'url'], - urlProp, - crumb, - data; + function traceKitWindowOnError(msg, url, lineNo, colNo, ex) { + var stack = null; + // If 'ex' is ErrorEvent, get real Error from inside + var exception = utils.isErrorEvent(ex) ? ex.error : ex; + // If 'msg' is ErrorEvent, get real message from inside + var message = utils.isErrorEvent(msg) ? msg.message : msg; - for (var i = 0; i < breadcrumbs.values.length; ++i) { - crumb = breadcrumbs.values[i]; - if (!crumb.hasOwnProperty('data') || !isObject(crumb.data) || objectFrozen(crumb.data)) continue; - data = objectMerge({}, crumb.data); + if (lastExceptionStack) { + TraceKit.computeStackTrace.augmentStackTraceWithInitialElement( + lastExceptionStack, + url, + lineNo, + message + ); + processLastException(); + } else if (exception && utils.isError(exception)) { + // non-string `exception` arg; attempt to extract stack trace - for (var j = 0; j < urlProps.length; ++j) { - urlProp = urlProps[j]; + // New chrome and blink send along a real error object + // Let's just report that like a normal error. + // See: https://mikewest.org/2013/08/debugging-runtime-errors-with-window-onerror + stack = TraceKit.computeStackTrace(exception); + notifyHandlers(stack, true); + } else { + var location = { + url: url, + line: lineNo, + column: colNo + }; - if (data.hasOwnProperty(urlProp) && data[urlProp]) { - data[urlProp] = truncate(data[urlProp], this._globalOptions.maxUrlLength); + var name = undefined; + var groups; + + if ({}.toString.call(message) === '[object String]') { + var groups = message.match(ERROR_TYPES_RE); + if (groups) { + name = groups[1]; + message = groups[2]; } } - breadcrumbs.values[i].data = data; - } - }, - _getHttpData: function _getHttpData() { - if (!this._hasNavigator && !this._hasDocument) return; - var httpData = {}; + location.func = UNKNOWN_FUNCTION; - if (this._hasNavigator && _navigator.userAgent) { - httpData.headers = { - 'User-Agent': navigator.userAgent + stack = { + name: name, + message: message, + url: getLocationHref(), + stack: [location] }; - } // Check in `window` instead of `document`, as we may be in ServiceWorker environment + notifyHandlers(stack, true); + } + + if (_oldOnerrorHandler) { + return _oldOnerrorHandler.apply(this, arguments); + } + return false; + } - if (_window$1.location && _window$1.location.href) { - httpData.url = _window$1.location.href; + function installGlobalHandler() { + if (_onErrorHandlerInstalled) { + return; } + _oldOnerrorHandler = _window.onerror; + _window.onerror = traceKitWindowOnError; + _onErrorHandlerInstalled = true; + } - if (this._hasDocument && _document.referrer) { - if (!httpData.headers) httpData.headers = {}; - httpData.headers.Referer = _document.referrer; + function uninstallGlobalHandler() { + if (!_onErrorHandlerInstalled) { + return; } + _window.onerror = _oldOnerrorHandler; + _onErrorHandlerInstalled = false; + _oldOnerrorHandler = undefined; + } - return httpData; - }, - _resetBackoff: function _resetBackoff() { - this._backoffDuration = 0; - this._backoffStart = null; - }, - _shouldBackoff: function _shouldBackoff() { - return this._backoffDuration && now() - this._backoffStart < this._backoffDuration; - }, + function processLastException() { + var _lastExceptionStack = lastExceptionStack, + _lastArgs = lastArgs; + lastArgs = null; + lastExceptionStack = null; + lastException = null; + notifyHandlers.apply(null, [_lastExceptionStack, false].concat(_lastArgs)); + } /** - * Returns true if the in-process data payload matches the signature - * of the previously-sent data - * - * NOTE: This has to be done at this level because TraceKit can generate - * data from window.onerror WITHOUT an exception object (IE8, IE9, - * other old browsers). This can take the form of an "exception" - * data object with a single frame (derived from the onerror args). + * Reports an unhandled Error to TraceKit. + * @param {Error} ex + * @param {?boolean} rethrow If false, do not re-throw the exception. + * Only used for window.onerror to not cause an infinite loop of + * rethrowing. */ - _isRepeatData: function _isRepeatData(current) { - var last = this._lastData; - if (!last || current.message !== last.message || // defined for captureMessage - current.culprit !== last.culprit // defined for captureException/onerror - ) return false; // Stacktrace interface (i.e. from captureMessage) - - if (current.stacktrace || last.stacktrace) { - return isSameStacktrace(current.stacktrace, last.stacktrace); - } else if (current.exception || last.exception) { - // Exception interface (i.e. from captureException/onerror) - return isSameException(current.exception, last.exception); + function report(ex, rethrow) { + var args = _slice.call(arguments, 1); + if (lastExceptionStack) { + if (lastException === ex) { + return; // already caught by an inner catch block, ignore + } else { + processLastException(); + } } - return true; - }, - _setBackoffState: function _setBackoffState(request) { - // If we are already in a backoff state, don't change anything - if (this._shouldBackoff()) { - return; - } + var stack = TraceKit.computeStackTrace(ex); + lastExceptionStack = stack; + lastException = ex; + lastArgs = args; - var status = request.status; // 400 - project_id doesn't exist or some other fatal - // 401 - invalid/revoked dsn - // 429 - too many requests - - if (!(status === 400 || status === 401 || status === 429)) return; - var retry; - - try { - // If Retry-After is not in Access-Control-Expose-Headers, most - // browsers will throw an exception trying to access it - if (supportsFetch()) { - retry = request.headers.get('Retry-After'); - } else { - retry = request.getResponseHeader('Retry-After'); - } // Retry-After is returned in seconds - - - retry = parseInt(retry, 10) * 1000; - } catch (e) { - /* eslint no-empty:0 */ - } - - this._backoffDuration = retry ? // If Sentry server returned a Retry-After value, use it - retry : // Otherwise, double the last backoff duration (starts at 1 sec) - this._backoffDuration * 2 || 1000; - this._backoffStart = now(); - }, - _send: function _send(data) { - var globalOptions = this._globalOptions; - - var baseData = { - project: this._globalProject, - logger: globalOptions.logger, - platform: 'javascript' - }, - httpData = this._getHttpData(); - - if (httpData) { - baseData.request = httpData; - } // HACK: delete `trimHeadFrames` to prevent from appearing in outbound payload - - - if (data.trimHeadFrames) delete data.trimHeadFrames; - data = objectMerge(baseData, data); // Merge in the tags and extra separately since objectMerge doesn't handle a deep merge - - data.tags = objectMerge(objectMerge({}, this._globalContext.tags), data.tags); - data.extra = objectMerge(objectMerge({}, this._globalContext.extra), data.extra); // Send along our own collected metadata with extra - - data.extra['session:duration'] = now() - this._startTime; + // If the stack trace is incomplete, wait for 2 seconds for + // slow slow IE to see if onerror occurs or not before reporting + // this exception; otherwise, we will end up with an incomplete + // stack trace + setTimeout(function() { + if (lastException === ex) { + processLastException(); + } + }, stack.incomplete ? 2000 : 0); - if (this._breadcrumbs && this._breadcrumbs.length > 0) { - // intentionally make shallow copy so that additions - // to breadcrumbs aren't accidentally sent in this request - data.breadcrumbs = { - values: [].slice.call(this._breadcrumbs, 0) - }; + if (rethrow !== false) { + throw ex; // re-throw to propagate to the top level (and cause window.onerror) } + } - if (this._globalContext.user) { - // sentry.interfaces.User - data.user = this._globalContext.user; - } // Include the environment if it's defined in globalOptions - + report.subscribe = subscribe; + report.unsubscribe = unsubscribe; + report.uninstall = unsubscribeAll; + return report; +})(); - if (globalOptions.environment) data.environment = globalOptions.environment; // Include the release if it's defined in globalOptions +/** + * TraceKit.computeStackTrace: cross-browser stack traces in JavaScript + * + * Syntax: + * s = TraceKit.computeStackTrace(exception) // consider using TraceKit.report instead (see below) + * Returns: + * s.name - exception name + * s.message - exception message + * s.stack[i].url - JavaScript or HTML file URL + * s.stack[i].func - function name, or empty for anonymous functions (if guessing did not work) + * s.stack[i].args - arguments passed to the function, if known + * s.stack[i].line - line number, if known + * s.stack[i].column - column number, if known + * + * Supports: + * - Firefox: full stack trace with line numbers and unreliable column + * number on top frame + * - Opera 10: full stack trace with line and column numbers + * - Opera 9-: full stack trace with line numbers + * - Chrome: full stack trace with line and column numbers + * - Safari: line and column number for the topmost stacktrace element + * only + * - IE: no line numbers whatsoever + * + * Tries to guess names of anonymous functions by looking for assignments + * in the source code. In IE and Safari, we have to guess source file names + * by searching for function bodies inside all page scripts. This will not + * work for scripts that are loaded cross-domain. + * Here be dragons: some function names may be guessed incorrectly, and + * duplicate functions may be mismatched. + * + * TraceKit.computeStackTrace should only be used for tracing purposes. + * Logging of unhandled exceptions should be done with TraceKit.report, + * which builds on top of TraceKit.computeStackTrace and provides better + * IE support by utilizing the window.onerror event to retrieve information + * about the top of the stack. + * + * Note: In IE and Safari, no stack trace is recorded on the Error object, + * so computeStackTrace instead walks its *own* chain of callers. + * This means that: + * * in Safari, some methods may be missing from the stack trace; + * * in IE, the topmost function in the stack trace will always be the + * caller of computeStackTrace. + * + * This is okay for tracing (because you are likely to be calling + * computeStackTrace from the function you want to be the topmost element + * of the stack trace anyway), but not okay for logging unhandled + * exceptions (because your catch block will likely be far away from the + * inner function that actually caused the exception). + * + */ +TraceKit.computeStackTrace = (function computeStackTraceWrapper() { + // Contents of Exception in various browsers. + // + // SAFARI: + // ex.message = Can't find variable: qq + // ex.line = 59 + // ex.sourceId = 580238192 + // ex.sourceURL = http://... + // ex.expressionBeginOffset = 96 + // ex.expressionCaretOffset = 98 + // ex.expressionEndOffset = 98 + // ex.name = ReferenceError + // + // FIREFOX: + // ex.message = qq is not defined + // ex.fileName = http://... + // ex.lineNumber = 59 + // ex.columnNumber = 69 + // ex.stack = ...stack trace... (see the example below) + // ex.name = ReferenceError + // + // CHROME: + // ex.message = qq is not defined + // ex.name = ReferenceError + // ex.type = not_defined + // ex.arguments = ['aa'] + // ex.stack = ...stack trace... + // + // INTERNET EXPLORER: + // ex.message = ... + // ex.name = ReferenceError + // + // OPERA: + // ex.message = ...message... (see the example below) + // ex.name = ReferenceError + // ex.opera#sourceloc = 11 (pretty much useless, duplicates the info in ex.message) + // ex.stacktrace = n/a; see 'opera:config#UserPrefs|Exceptions Have Stacktrace' - if (globalOptions.release) data.release = globalOptions.release; // Include server_name if it's defined in globalOptions + /** + * Computes stack trace information from the stack property. + * Chrome and Gecko use this property. + * @param {Error} ex + * @return {?Object.} Stack trace information. + */ + function computeStackTraceFromStackProp(ex) { + if (typeof ex.stack === 'undefined' || !ex.stack) return; - if (globalOptions.serverName) data.server_name = globalOptions.serverName; // Cleanup empty properties before sending them to the server + var chrome = /^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i; + var winjs = /^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i; + // NOTE: blob urls are now supposed to always have an origin, therefore it's format + // which is `blob:http://url/path/with-some-uuid`, is matched by `blob.*?:\/` as well + var gecko = /^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i; + // Used to additionally parse URL/line/column from eval frames + var geckoEval = /(\S+) line (\d+)(?: > eval line \d+)* > eval/i; + var chromeEval = /\((\S*)(?::(\d+))(?::(\d+))\)/; + var lines = ex.stack.split('\n'); + var stack = []; + var submatch; + var parts; + var element; + var reference = /^(.*) is undefined$/.exec(ex.message); - Object.keys(data).forEach(function (key) { - if (data[key] == null || data[key] === '' || isEmptyObject(data[key])) { - delete data[key]; + for (var i = 0, j = lines.length; i < j; ++i) { + if ((parts = chrome.exec(lines[i]))) { + var isNative = parts[2] && parts[2].indexOf('native') === 0; // start of line + var isEval = parts[2] && parts[2].indexOf('eval') === 0; // start of line + if (isEval && (submatch = chromeEval.exec(parts[2]))) { + // throw out eval line/column and use top-most line/column number + parts[2] = submatch[1]; // url + parts[3] = submatch[2]; // line + parts[4] = submatch[3]; // column + } + element = { + url: !isNative ? parts[2] : null, + func: parts[1] || UNKNOWN_FUNCTION, + args: isNative ? [parts[2]] : [], + line: parts[3] ? +parts[3] : null, + column: parts[4] ? +parts[4] : null + }; + } else if ((parts = winjs.exec(lines[i]))) { + element = { + url: parts[2], + func: parts[1] || UNKNOWN_FUNCTION, + args: [], + line: +parts[3], + column: parts[4] ? +parts[4] : null + }; + } else if ((parts = gecko.exec(lines[i]))) { + var isEval = parts[3] && parts[3].indexOf(' > eval') > -1; + if (isEval && (submatch = geckoEval.exec(parts[3]))) { + // throw out eval line/column and use top-most line number + parts[3] = submatch[1]; + parts[4] = submatch[2]; + parts[5] = null; // no column when eval + } else if (i === 0 && !parts[5] && typeof ex.columnNumber !== 'undefined') { + // FireFox uses this awesome columnNumber property for its top frame + // Also note, Firefox's column number is 0-based and everything else expects 1-based, + // so adding 1 + // NOTE: this hack doesn't work if top-most frame is eval + stack[0].column = ex.columnNumber + 1; + } + element = { + url: parts[3], + func: parts[1] || UNKNOWN_FUNCTION, + args: parts[2] ? parts[2].split(',') : [], + line: parts[4] ? +parts[4] : null, + column: parts[5] ? +parts[5] : null + }; + } else { + continue; } - }); - - if (isFunction(globalOptions.dataCallback)) { - data = globalOptions.dataCallback(data) || data; - } // Why?????????? - - - if (!data || isEmptyObject(data)) { - return; - } // Check if the request should be filtered or not - - if (isFunction(globalOptions.shouldSendCallback) && !globalOptions.shouldSendCallback(data)) { - return; - } // Backoff state: Sentry server previously responded w/ an error (e.g. 429 - too many requests), - // so drop requests until "cool-off" period has elapsed. - - - if (this._shouldBackoff()) { - this._logDebug('warn', 'Raven dropped error due to backoff: ', data); - - return; - } - - if (typeof globalOptions.sampleRate === 'number') { - if (Math.random() < globalOptions.sampleRate) { - this._sendProcessedPayload(data); + if (!element.func && element.line) { + element.func = UNKNOWN_FUNCTION; } - } else { - this._sendProcessedPayload(data); - } - }, - _getUuid: function _getUuid() { - return uuid4(); - }, - _sendProcessedPayload: function _sendProcessedPayload(data, callback) { - var self = this; - var globalOptions = this._globalOptions; - if (!this.isSetup()) return; // Try and clean up the packet before sending by truncating long values - - data = this._trimPacket(data); // ideally duplicate error testing should occur *before* dataCallback/shouldSendCallback, - // but this would require copying an un-truncated copy of the data packet, which can be - // arbitrarily deep (extra_data) -- could be worthwhile? will revisit - - if (!this._globalOptions.allowDuplicates && this._isRepeatData(data)) { - this._logDebug('warn', 'Raven dropped repeat event: ', data); - - return; - } // Send along an event_id if not explicitly passed. - // This event_id can be used to reference the error within Sentry itself. - // Set lastEventId after we know the error should actually be sent - - - this._lastEventId = data.event_id || (data.event_id = this._getUuid()); // Store outbound payload after trim - - this._lastData = data; - - this._logDebug('debug', 'Raven about to send:', data); - - var auth = { - sentry_version: '7', - sentry_client: 'raven-js/' + this.VERSION, - sentry_key: this._globalKey - }; - if (this._globalSecret) { - auth.sentry_secret = this._globalSecret; + stack.push(element); } - var exception = data.exception && data.exception.values[0]; // only capture 'sentry' breadcrumb is autoBreadcrumbs is truthy - - if (this._globalOptions.autoBreadcrumbs && this._globalOptions.autoBreadcrumbs.sentry) { - this.captureBreadcrumb({ - category: 'sentry', - message: exception ? (exception.type ? exception.type + ': ' : '') + exception.value : data.message, - event_id: data.event_id, - level: data.level || 'error' // presume error unless specified - - }); + if (!stack.length) { + return null; } - var url = this._globalEndpoint; + return { + name: ex.name, + message: ex.message, + url: getLocationHref(), + stack: stack + }; + } - (globalOptions.transport || this._makeRequest).call(this, { + /** + * Adds information about the first frame to incomplete stack traces. + * Safari and IE require this to get complete data on the first frame. + * @param {Object.} stackInfo Stack trace information from + * one of the compute* methods. + * @param {string} url The URL of the script that caused an error. + * @param {(number|string)} lineNo The line number of the script that + * caused an error. + * @param {string=} message The error generated by the browser, which + * hopefully contains the name of the object that caused the error. + * @return {boolean} Whether or not the stack information was + * augmented. + */ + function augmentStackTraceWithInitialElement(stackInfo, url, lineNo, message) { + var initial = { url: url, - auth: auth, - data: data, - options: globalOptions, - onSuccess: function success() { - self._resetBackoff(); - - self._triggerEvent('success', { - data: data, - src: url - }); - - callback && callback(); - }, - onError: function failure(error) { - self._logDebug('error', 'Raven transport failed to send: ', error); - - if (error.request) { - self._setBackoffState(error.request); - } - - self._triggerEvent('failure', { - data: data, - src: url - }); - - error = error || new Error('Raven send failed (no additional details provided)'); - callback && callback(error); - } - }); - }, - _makeRequest: function _makeRequest(opts) { - // Auth is intentionally sent as part of query string (NOT as custom HTTP header) to avoid preflight CORS requests - var url = opts.url + '?' + urlencode(opts.auth); - var evaluatedHeaders = null; - var evaluatedFetchParameters = {}; - - if (opts.options.headers) { - evaluatedHeaders = this._evaluateHash(opts.options.headers); - } - - if (opts.options.fetchParameters) { - evaluatedFetchParameters = this._evaluateHash(opts.options.fetchParameters); - } - - if (supportsFetch()) { - evaluatedFetchParameters.body = stringify_1(opts.data); - var defaultFetchOptions = objectMerge({}, this._fetchDefaults); - var fetchOptions = objectMerge(defaultFetchOptions, evaluatedFetchParameters); + line: lineNo + }; - if (evaluatedHeaders) { - fetchOptions.headers = evaluatedHeaders; - } + if (initial.url && initial.line) { + stackInfo.incomplete = false; - return _window$1.fetch(url, fetchOptions).then(function (response) { - if (response.ok) { - opts.onSuccess && opts.onSuccess(); - } else { - var error = new Error('Sentry error code: ' + response.status); // It's called request only to keep compatibility with XHR interface - // and not add more redundant checks in setBackoffState method + if (!initial.func) { + initial.func = UNKNOWN_FUNCTION; + } - error.request = response; - opts.onError && opts.onError(error); + if (stackInfo.stack.length > 0) { + if (stackInfo.stack[0].url === initial.url) { + if (stackInfo.stack[0].line === initial.line) { + return false; // already in stack trace + } else if ( + !stackInfo.stack[0].line && + stackInfo.stack[0].func === initial.func + ) { + stackInfo.stack[0].line = initial.line; + return false; + } } - })['catch'](function () { - opts.onError && opts.onError(new Error('Sentry error code: network unavailable')); - }); + } + + stackInfo.stack.unshift(initial); + stackInfo.partial = true; + return true; + } else { + stackInfo.incomplete = true; } - var request = _window$1.XMLHttpRequest && new _window$1.XMLHttpRequest(); - if (!request) return; // if browser doesn't support CORS (e.g. IE7), we are out of luck + return false; + } - var hasCORS = 'withCredentials' in request || typeof XDomainRequest !== 'undefined'; - if (!hasCORS) return; + /** + * Computes stack trace information by walking the arguments.caller + * chain at the time the exception occurred. This will cause earlier + * frames to be missed but is the only way to get any stack trace in + * Safari and IE. The top frame is restored by + * {@link augmentStackTraceWithInitialElement}. + * @param {Error} ex + * @return {?Object.} Stack trace information. + */ + function computeStackTraceByWalkingCallerChain(ex, depth) { + var functionName = /function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i, + stack = [], + funcs = {}, + recursion = false, + parts, + item, + source; + + for ( + var curr = computeStackTraceByWalkingCallerChain.caller; + curr && !recursion; + curr = curr.caller + ) { + if (curr === computeStackTrace || curr === TraceKit.report) { + // console.log('skipping internal function'); + continue; + } - if ('withCredentials' in request) { - request.onreadystatechange = function () { - if (request.readyState !== 4) { - return; - } else if (request.status === 200) { - opts.onSuccess && opts.onSuccess(); - } else if (opts.onError) { - var err = new Error('Sentry error code: ' + request.status); - err.request = request; - opts.onError(err); - } + item = { + url: null, + func: UNKNOWN_FUNCTION, + line: null, + column: null }; - } else { - request = new XDomainRequest(); // xdomainrequest cannot go http -> https (or vice versa), - // so always use protocol relative - url = url.replace(/^https?:/, ''); // onreadystatechange not supported by XDomainRequest + if (curr.name) { + item.func = curr.name; + } else if ((parts = functionName.exec(curr.toString()))) { + item.func = parts[1]; + } - if (opts.onSuccess) { - request.onload = opts.onSuccess; + if (typeof item.func === 'undefined') { + try { + item.func = parts.input.substring(0, parts.input.indexOf('{')); + } catch (e) {} } - if (opts.onError) { - request.onerror = function () { - var err = new Error('Sentry error code: XDomainRequest'); - err.request = request; - opts.onError(err); - }; + if (funcs['' + curr]) { + recursion = true; + } else { + funcs['' + curr] = true; } - } - request.open('POST', url); + stack.push(item); + } - if (evaluatedHeaders) { - each(evaluatedHeaders, function (key, value) { - request.setRequestHeader(key, value); - }); + if (depth) { + // console.log('depth is ' + depth); + // console.log('stack is ' + stack.length); + stack.splice(0, depth); } - request.send(stringify_1(opts.data)); - }, - _evaluateHash: function _evaluateHash(hash) { - var evaluated = {}; + var result = { + name: ex.name, + message: ex.message, + url: getLocationHref(), + stack: stack + }; + augmentStackTraceWithInitialElement( + result, + ex.sourceURL || ex.fileName, + ex.line || ex.lineNumber, + ex.message || ex.description + ); + return result; + } - for (var key in hash) { - if (hash.hasOwnProperty(key)) { - var value = hash[key]; - evaluated[key] = typeof value === 'function' ? value() : value; + /** + * Computes a stack trace for an exception. + * @param {Error} ex + * @param {(string|number)=} depth + */ + function computeStackTrace(ex, depth) { + var stack = null; + depth = depth == null ? 0 : +depth; + + try { + stack = computeStackTraceFromStackProp(ex); + if (stack) { + return stack; + } + } catch (e) { + if (TraceKit.debug) { + throw e; } } - return evaluated; - }, - _logDebug: function _logDebug(level) { - if (this._originalConsoleMethods[level] && this.debug) { - // In IE<10 console methods do not have their own 'apply' method - Function.prototype.apply.call(this._originalConsoleMethods[level], this._originalConsole, [].slice.call(arguments, 1)); - } - }, - _mergeContext: function _mergeContext(key, context) { - if (isUndefined(context)) { - delete this._globalContext[key]; - } else { - this._globalContext[key] = objectMerge(this._globalContext[key] || {}, context); + try { + stack = computeStackTraceByWalkingCallerChain(ex, depth + 1); + if (stack) { + return stack; + } + } catch (e) { + if (TraceKit.debug) { + throw e; + } } + return { + name: ex.name, + message: ex.message, + url: getLocationHref() + }; } -}; // Deprecations -Raven$1.prototype.setUser = Raven$1.prototype.setUserContext; -Raven$1.prototype.setReleaseContext = Raven$1.prototype.setRelease; -var raven = Raven$1; + computeStackTrace.augmentStackTraceWithInitialElement = augmentStackTraceWithInitialElement; + computeStackTrace.computeStackTraceFromStackProp = computeStackTraceFromStackProp; -/** - * Enforces a single instance of the Raven client, and the - * main entry point for Raven. If you are a consumer of the - * Raven library, you SHOULD load this file (vs raven.js). - **/ -// This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) + return computeStackTrace; +})(); -var _window = typeof window !== 'undefined' ? window : typeof commonjsGlobal !== 'undefined' ? commonjsGlobal : typeof self !== 'undefined' ? self : {}; +module.exports = TraceKit; -var _Raven = _window.Raven; -var Raven = new raven(); +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"7":7}],9:[function(_dereq_,module,exports){ /* - * Allow multiple versions of Raven to be installed. - * Strip Raven from the global context and returns the instance. - * - * @return {Raven} - */ + json-stringify-safe + Like JSON.stringify, but doesn't throw on circular references. -Raven.noConflict = function () { - _window.Raven = _Raven; - return Raven; -}; + Originally forked from https://github.com/isaacs/json-stringify-safe + version 5.0.1 on 3/8/2017 and modified to handle Errors serialization + and IE8 compatibility. Tests for this are in test/vendor. -Raven.afterLoad(); -var singleton = Raven; + ISC license: https://github.com/isaacs/json-stringify-safe/blob/master/LICENSE +*/ -/*global define*/ +exports = module.exports = stringify; +exports.getSerialize = serializer; -/** - * require.js plugin - * - * Automatically wrap define/require callbacks. (Experimental) - */ +function indexOf(haystack, needle) { + for (var i = 0; i < haystack.length; ++i) { + if (haystack[i] === needle) return i; + } + return -1; +} -function requirePlugin(Raven) { - if (typeof undefined === 'function' && undefined.amd) { - window.define = Raven.wrap({ - deep: false - }, undefined); - window.require = Raven.wrap({ - deep: false - }, commonjsRequire); +function stringify(obj, replacer, spaces, cycleReplacer) { + return JSON.stringify(obj, serializer(replacer, cycleReplacer), spaces); +} + +// https://github.com/ftlabs/js-abbreviate/blob/fa709e5f139e7770a71827b1893f22418097fbda/index.js#L95-L106 +function stringifyError(value) { + var err = { + // These properties are implemented as magical getters and don't show up in for in + stack: value.stack, + message: value.message, + name: value.name + }; + + for (var i in value) { + if (Object.prototype.hasOwnProperty.call(value, i)) { + err[i] = value[i]; + } } + + return err; } -var require_1 = requirePlugin; +function serializer(replacer, cycleReplacer) { + var stack = []; + var keys = []; -/** - * Vue.js 2.0 plugin + if (cycleReplacer == null) { + cycleReplacer = function(key, value) { + if (stack[0] === value) { + return '[Circular ~]'; + } + return '[Circular ~.' + keys.slice(0, indexOf(stack, value)).join('.') + ']'; + }; + } + + return function(key, value) { + if (stack.length > 0) { + var thisPos = indexOf(stack, this); + ~thisPos ? stack.splice(thisPos + 1) : stack.push(this); + ~thisPos ? keys.splice(thisPos, Infinity, key) : keys.push(key); + + if (~indexOf(stack, value)) { + value = cycleReplacer.call(this, key, value); + } + } else { + stack.push(value); + } + + return replacer == null + ? value instanceof Error ? stringifyError(value) : value + : replacer.call(this, key, value); + }; +} + +},{}],10:[function(_dereq_,module,exports){ +/* + * JavaScript MD5 + * https://github.com/blueimp/JavaScript-MD5 * + * Copyright 2011, Sebastian Tschan + * https://blueimp.net + * + * Licensed under the MIT license: + * https://opensource.org/licenses/MIT + * + * Based on + * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message + * Digest Algorithm, as defined in RFC 1321. + * Version 2.2 Copyright (C) Paul Johnston 1999 - 2009 + * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet + * Distributed under the BSD License + * See http://pajhome.org.uk/crypt/md5 for more info. */ -function formatComponentName(vm) { - if (vm.$root === vm) { - return 'root instance'; - } - var name = vm._isVue ? vm.$options.name || vm.$options._componentTag : vm.name; - return (name ? 'component <' + name + '>' : 'anonymous component') + (vm._isVue && vm.$options.__file ? ' at ' + vm.$options.__file : ''); +/* +* Add integers, wrapping at 2^32. This uses 16-bit operations internally +* to work around bugs in some JS interpreters. +*/ +function safeAdd(x, y) { + var lsw = (x & 0xffff) + (y & 0xffff); + var msw = (x >> 16) + (y >> 16) + (lsw >> 16); + return (msw << 16) | (lsw & 0xffff); } -function vuePlugin(Raven, Vue) { - Vue = Vue || window.Vue; // quit if Vue isn't on the page +/* +* Bitwise rotate a 32-bit number to the left. +*/ +function bitRotateLeft(num, cnt) { + return (num << cnt) | (num >>> (32 - cnt)); +} - if (!Vue || !Vue.config) return; - var _oldOnError = Vue.config.errorHandler; +/* +* These functions implement the four basic operations the algorithm uses. +*/ +function md5cmn(q, a, b, x, s, t) { + return safeAdd(bitRotateLeft(safeAdd(safeAdd(a, q), safeAdd(x, t)), s), b); +} +function md5ff(a, b, c, d, x, s, t) { + return md5cmn((b & c) | (~b & d), a, b, x, s, t); +} +function md5gg(a, b, c, d, x, s, t) { + return md5cmn((b & d) | (c & ~d), a, b, x, s, t); +} +function md5hh(a, b, c, d, x, s, t) { + return md5cmn(b ^ c ^ d, a, b, x, s, t); +} +function md5ii(a, b, c, d, x, s, t) { + return md5cmn(c ^ (b | ~d), a, b, x, s, t); +} - Vue.config.errorHandler = function VueErrorHandler(error, vm, info) { - var metaData = {}; // vm and lifecycleHook are not always available +/* +* Calculate the MD5 of an array of little-endian words, and a bit length. +*/ +function binlMD5(x, len) { + /* append padding */ + x[len >> 5] |= 0x80 << (len % 32); + x[(((len + 64) >>> 9) << 4) + 14] = len; + + var i; + var olda; + var oldb; + var oldc; + var oldd; + var a = 1732584193; + var b = -271733879; + var c = -1732584194; + var d = 271733878; + + for (i = 0; i < x.length; i += 16) { + olda = a; + oldb = b; + oldc = c; + oldd = d; + + a = md5ff(a, b, c, d, x[i], 7, -680876936); + d = md5ff(d, a, b, c, x[i + 1], 12, -389564586); + c = md5ff(c, d, a, b, x[i + 2], 17, 606105819); + b = md5ff(b, c, d, a, x[i + 3], 22, -1044525330); + a = md5ff(a, b, c, d, x[i + 4], 7, -176418897); + d = md5ff(d, a, b, c, x[i + 5], 12, 1200080426); + c = md5ff(c, d, a, b, x[i + 6], 17, -1473231341); + b = md5ff(b, c, d, a, x[i + 7], 22, -45705983); + a = md5ff(a, b, c, d, x[i + 8], 7, 1770035416); + d = md5ff(d, a, b, c, x[i + 9], 12, -1958414417); + c = md5ff(c, d, a, b, x[i + 10], 17, -42063); + b = md5ff(b, c, d, a, x[i + 11], 22, -1990404162); + a = md5ff(a, b, c, d, x[i + 12], 7, 1804603682); + d = md5ff(d, a, b, c, x[i + 13], 12, -40341101); + c = md5ff(c, d, a, b, x[i + 14], 17, -1502002290); + b = md5ff(b, c, d, a, x[i + 15], 22, 1236535329); + + a = md5gg(a, b, c, d, x[i + 1], 5, -165796510); + d = md5gg(d, a, b, c, x[i + 6], 9, -1069501632); + c = md5gg(c, d, a, b, x[i + 11], 14, 643717713); + b = md5gg(b, c, d, a, x[i], 20, -373897302); + a = md5gg(a, b, c, d, x[i + 5], 5, -701558691); + d = md5gg(d, a, b, c, x[i + 10], 9, 38016083); + c = md5gg(c, d, a, b, x[i + 15], 14, -660478335); + b = md5gg(b, c, d, a, x[i + 4], 20, -405537848); + a = md5gg(a, b, c, d, x[i + 9], 5, 568446438); + d = md5gg(d, a, b, c, x[i + 14], 9, -1019803690); + c = md5gg(c, d, a, b, x[i + 3], 14, -187363961); + b = md5gg(b, c, d, a, x[i + 8], 20, 1163531501); + a = md5gg(a, b, c, d, x[i + 13], 5, -1444681467); + d = md5gg(d, a, b, c, x[i + 2], 9, -51403784); + c = md5gg(c, d, a, b, x[i + 7], 14, 1735328473); + b = md5gg(b, c, d, a, x[i + 12], 20, -1926607734); + + a = md5hh(a, b, c, d, x[i + 5], 4, -378558); + d = md5hh(d, a, b, c, x[i + 8], 11, -2022574463); + c = md5hh(c, d, a, b, x[i + 11], 16, 1839030562); + b = md5hh(b, c, d, a, x[i + 14], 23, -35309556); + a = md5hh(a, b, c, d, x[i + 1], 4, -1530992060); + d = md5hh(d, a, b, c, x[i + 4], 11, 1272893353); + c = md5hh(c, d, a, b, x[i + 7], 16, -155497632); + b = md5hh(b, c, d, a, x[i + 10], 23, -1094730640); + a = md5hh(a, b, c, d, x[i + 13], 4, 681279174); + d = md5hh(d, a, b, c, x[i], 11, -358537222); + c = md5hh(c, d, a, b, x[i + 3], 16, -722521979); + b = md5hh(b, c, d, a, x[i + 6], 23, 76029189); + a = md5hh(a, b, c, d, x[i + 9], 4, -640364487); + d = md5hh(d, a, b, c, x[i + 12], 11, -421815835); + c = md5hh(c, d, a, b, x[i + 15], 16, 530742520); + b = md5hh(b, c, d, a, x[i + 2], 23, -995338651); + + a = md5ii(a, b, c, d, x[i], 6, -198630844); + d = md5ii(d, a, b, c, x[i + 7], 10, 1126891415); + c = md5ii(c, d, a, b, x[i + 14], 15, -1416354905); + b = md5ii(b, c, d, a, x[i + 5], 21, -57434055); + a = md5ii(a, b, c, d, x[i + 12], 6, 1700485571); + d = md5ii(d, a, b, c, x[i + 3], 10, -1894986606); + c = md5ii(c, d, a, b, x[i + 10], 15, -1051523); + b = md5ii(b, c, d, a, x[i + 1], 21, -2054922799); + a = md5ii(a, b, c, d, x[i + 8], 6, 1873313359); + d = md5ii(d, a, b, c, x[i + 15], 10, -30611744); + c = md5ii(c, d, a, b, x[i + 6], 15, -1560198380); + b = md5ii(b, c, d, a, x[i + 13], 21, 1309151649); + a = md5ii(a, b, c, d, x[i + 4], 6, -145523070); + d = md5ii(d, a, b, c, x[i + 11], 10, -1120210379); + c = md5ii(c, d, a, b, x[i + 2], 15, 718787259); + b = md5ii(b, c, d, a, x[i + 9], 21, -343485551); + + a = safeAdd(a, olda); + b = safeAdd(b, oldb); + c = safeAdd(c, oldc); + d = safeAdd(d, oldd); + } + return [a, b, c, d]; +} - if (Object.prototype.toString.call(vm) === '[object Object]') { - metaData.componentName = formatComponentName(vm); - metaData.propsData = vm.$options.propsData; - } +/* +* Convert an array of little-endian words to a string +*/ +function binl2rstr(input) { + var i; + var output = ''; + var length32 = input.length * 32; + for (i = 0; i < length32; i += 8) { + output += String.fromCharCode((input[i >> 5] >>> (i % 32)) & 0xff); + } + return output; +} - if (typeof info !== 'undefined') { - metaData.lifecycleHook = info; - } +/* +* Convert a raw string to an array of little-endian words +* Characters >255 have their high-byte silently ignored. +*/ +function rstr2binl(input) { + var i; + var output = []; + output[(input.length >> 2) - 1] = undefined; + for (i = 0; i < output.length; i += 1) { + output[i] = 0; + } + var length8 = input.length * 8; + for (i = 0; i < length8; i += 8) { + output[i >> 5] |= (input.charCodeAt(i / 8) & 0xff) << (i % 32); + } + return output; +} - Raven.captureException(error, { - extra: metaData - }); +/* +* Calculate the MD5 of a raw string +*/ +function rstrMD5(s) { + return binl2rstr(binlMD5(rstr2binl(s), s.length * 8)); +} - if (typeof _oldOnError === 'function') { - _oldOnError.call(this, error, vm, info); - } - }; +/* +* Calculate the HMAC-MD5, of a key and some data (raw strings) +*/ +function rstrHMACMD5(key, data) { + var i; + var bkey = rstr2binl(key); + var ipad = []; + var opad = []; + var hash; + ipad[15] = opad[15] = undefined; + if (bkey.length > 16) { + bkey = binlMD5(bkey, key.length * 8); + } + for (i = 0; i < 16; i += 1) { + ipad[i] = bkey[i] ^ 0x36363636; + opad[i] = bkey[i] ^ 0x5c5c5c5c; + } + hash = binlMD5(ipad.concat(rstr2binl(data)), 512 + data.length * 8); + return binl2rstr(binlMD5(opad.concat(hash), 512 + 128)); +} + +/* +* Convert a raw string to a hex string +*/ +function rstr2hex(input) { + var hexTab = '0123456789abcdef'; + var output = ''; + var x; + var i; + for (i = 0; i < input.length; i += 1) { + x = input.charCodeAt(i); + output += hexTab.charAt((x >>> 4) & 0x0f) + hexTab.charAt(x & 0x0f); + } + return output; } -var vue = vuePlugin; +/* +* Encode a string as utf-8 +*/ +function str2rstrUTF8(input) { + return unescape(encodeURIComponent(input)); +} -/* This file was generated by './scripts/generate-plugin-combinations.js'! */ +/* +* Take string arguments and return either raw or hex encoded strings +*/ +function rawMD5(s) { + return rstrMD5(str2rstrUTF8(s)); +} +function hexMD5(s) { + return rstr2hex(rawMD5(s)); +} +function rawHMACMD5(k, d) { + return rstrHMACMD5(str2rstrUTF8(k), str2rstrUTF8(d)); +} +function hexHMACMD5(k, d) { + return rstr2hex(rawHMACMD5(k, d)); +} -singleton.addPlugin(require_1).addPlugin(vue); -var require_vue = {}; +function md5(string, key, raw) { + if (!key) { + if (!raw) { + return hexMD5(string); + } + return rawMD5(string); + } + if (!raw) { + return hexHMACMD5(key, string); + } + return rawHMACMD5(key, string); +} -return require_vue; +module.exports = md5; -}))); +},{}]},{},[6,1,2])(6) +}); \ No newline at end of file diff --git a/dist/require,vue/raven.min.js b/dist/require,vue/raven.min.js index e028c39f0d23..c6682967eb6c 100644 --- a/dist/require,vue/raven.min.js +++ b/dist/require,vue/raven.min.js @@ -1,3 +1,4 @@ -/*! Raven.js 3.22.2 (1b6187b) | github.com/getsentry/raven-js */ -!function(a,b){"object"==typeof exports&&"undefined"!=typeof module?module.exports=b():"function"==typeof define&&define.amd?define(b):a.Raven=b()}(this,function(){"use strict";function a(a,b){return b={exports:{}},a(b,b.exports),b.exports}function b(a){return(b="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(a){return typeof a}:function(a){return a&&"function"==typeof Symbol&&a.constructor===Symbol&&a!==Symbol.prototype?"symbol":typeof a})(a)}function c(a){return"object"===b(a)&&null!==a}function d(a){switch({}.toString.call(a)){case"[object Error]":return!0;case"[object Exception]":return!0;case"[object DOMException]":return!0;default:return a instanceof Error}}function e(a){return l()&&"[object ErrorEvent]"==={}.toString.call(a)}function f(a){return void 0===a}function g(a){return"function"==typeof a}function h(a){return"[object Object]"===Object.prototype.toString.call(a)}function i(a){return"[object String]"===Object.prototype.toString.call(a)}function j(a){return"[object Array]"===Object.prototype.toString.call(a)}function k(a){if(!h(a))return!1;for(var b in a)if(a.hasOwnProperty(b))return!1;return!0}function l(){try{return new ErrorEvent(""),!0}catch(a){return!1}}function m(){if(!("fetch"in P))return!1;try{return new Headers,new Request(""),new Response,!0}catch(a){return!1}}function n(a){function b(b,c){var d=a(b)||b;return c?c(d)||d:d}return b}function o(a,b){var c,d;if(f(a.length))for(c in a)s(a,c)&&b.call(null,c,a[c]);else if(d=a.length)for(c=0;c ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function y(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&i(b))for(c=b.split(/\s+/),f=0;f":"anonymous component")+(a._isVue&&a.$options.__file?" at "+a.$options.__file:"")}function M(a,b){if(b=b||window.Vue,b&&b.config){var c=b.config.errorHandler;b.config.errorHandler=function(b,d,e){var f={};"[object Object]"===Object.prototype.toString.call(d)&&(f.componentName=L(d),f.propsData=d.$options.propsData),"undefined"!=typeof e&&(f.lifecycleHook=e),a.captureException(b,{extra:f}),"function"==typeof c&&c.call(this,b,d,e)}}}var N="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{},O=Object.setPrototypeOf||function(a,b){return a.B=b,a},P=("object"==typeof Reflect&&Reflect.construct||function(a,b,c){var d,e=[null];return e.push.apply(e,b),d=a.bind.apply(a,e),O(new d,c.prototype)},"undefined"!=typeof window?window:"undefined"!=typeof N?N:"undefined"!=typeof self?self:{}),Q={isObject:c,isError:d,isErrorEvent:e,isUndefined:f,isFunction:g,isPlainObject:h,isString:i,isArray:j,isEmptyObject:k,supportsErrorEvent:l,supportsFetch:m,wrappedCallback:n,each:o,objectMerge:p,truncate:r,objectFrozen:q,hasKey:s,joinRegExp:t,urlencode:u,uuid4:w,htmlTreeAsString:x,htmlElementAsString:y,isSameException:B,isSameStacktrace:C,parseUrl:v,fill:D,safeJoin:E},R={collectWindowErrors:!0,debug:!1},S="undefined"!=typeof window?window:"undefined"!=typeof N?N:"undefined"!=typeof self?self:{},T=[].slice,U="?",V=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;R.report=function(){function a(a){f(),l.push(a)}function b(a){for(var b=l.length-1;b>=0;--b)l[b]===a&&l.splice(b,1)}function c(){g(),l=[]}function d(a,b){var c=null;if(!b||R.collectWindowErrors){for(var d in l)if(l.hasOwnProperty(d))try{l[d].apply(null,[a].concat(T.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function e(a,b,c,e,f){var g=null,i=Q.isErrorEvent(f)?f.error:f,k=Q.isErrorEvent(a)?a.message:a;if(o)R.computeStackTrace.augmentStackTraceWithInitialElement(o,b,c,k),h();else if(i&&Q.isError(i))g=R.computeStackTrace(i),d(g,!0);else{var l,m={url:b,line:c,column:e},n=void 0;if("[object String]"==={}.toString.call(k)){var l=k.match(V);l&&(n=l[1],k=l[2])}m.func=U,g={name:n,message:k,url:F(),stack:[m]},d(g,!0)}return!!j&&j.apply(this,arguments)}function f(){k||(j=S.onerror,S.onerror=e,k=!0)}function g(){k&&(S.onerror=j,k=!1,j=void 0)}function h(){var a=o,b=m;m=null,o=null,n=null,d.apply(null,[a,!1].concat(b))}function i(a,b){var c=T.call(arguments,1);if(o){if(n===a)return;h()}var d=R.computeStackTrace(a);if(o=d,n=a,m=c,setTimeout(function(){n===a&&h()},d.incomplete?2e3:0),b!==!1)throw a}var j,k,l=[],m=null,n=null,o=null;return i.subscribe=a,i.unsubscribe=b,i.uninstall=c,i}(),R.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,d,e=/^\s*at (.*?) ?\(((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,f=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|\[native).*?|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,g=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,h=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,i=/\((\S*)(?::(\d+))(?::(\d+))\)/,j=a.stack.split("\n"),k=[],l=(/^(.*) is undefined$/.exec(a.message),0),m=j.length;l eval")>-1;o&&(b=h.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==l||c[5]||"undefined"==typeof a.columnNumber||(k[0].column=a.columnNumber+1),d={url:c[3],func:c[1]||U,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}!d.func&&d.line&&(d.func=U),k.push(d)}return k.length?{name:a.name,message:a.message,url:F(),stack:k}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=U),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,e){for(var f,g,h=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,i=[],j={},k=!1,l=c.caller;l&&!k;l=l.caller)if(l!==d&&l!==R.report){if(g={url:null,func:U,line:null,column:null},l.name?g.func=l.name:(f=h.exec(l.toString()))&&(g.func=f[1]),"undefined"==typeof g.func)try{g.func=f.input.substring(0,f.input.indexOf("{"))}catch(m){}j[""+l]?k=!0:j[""+l]=!0,i.push(g)}e&&i.splice(0,e);var n={name:a.name,message:a.message,url:F(),stack:i};return b(n,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),n}function d(b,d){var e=null;d=null==d?0:+d;try{if(e=a(b))return e}catch(f){if(R.debug)throw f}try{if(e=c(b,d+1))return e}catch(f){if(R.debug)throw f}return{name:b.name,message:b.message,url:F()}}return d.augmentStackTraceWithInitialElement=b,d.computeStackTraceFromStackProp=a,d}();var W=R,X=a(function(a,b){function c(a,b){for(var c=0;c0){var i=c(d,this);~i?d.splice(i+1):d.push(this),~i?f.splice(i,1/0,g):f.push(g),~c(d,h)&&(h=b.call(this,g,h))}else d.push(h);return null==a?h instanceof Error?e(h):h:a.call(this,g,h)}}b=a.exports=d,b.getSerialize=f});G.prototype=new Error,G.prototype.constructor=G;var Y=G,Z=function(a,b,c){var d=a[b],e=a;if(b in a){var f="warn"===b?"warning":b;a[b]=function(){var a=[].slice.call(arguments),g=Q.safeJoin(a," "),h={level:f,logger:"console",extra:{arguments:a}};"assert"===b?a[0]===!1&&(g="Assertion failed: "+(Q.safeJoin(a.slice(1)," ")||"console.assert"),h.extra.arguments=a.slice(1),c&&c(g,h)):c&&c(g,h),d&&Function.prototype.apply.call(d,e,a)}}},$={wrapMethod:Z},_=Q.isError,aa=Q.isObject,ba=Q.isErrorEvent,ca=Q.isUndefined,da=Q.isFunction,ea=Q.isString,fa=Q.isArray,ga=Q.isEmptyObject,ha=Q.each,ia=Q.objectMerge,ja=Q.truncate,ka=Q.objectFrozen,la=Q.hasKey,ma=Q.joinRegExp,na=Q.urlencode,oa=Q.uuid4,pa=Q.htmlTreeAsString,qa=Q.isSameException,ra=Q.isSameStacktrace,sa=Q.parseUrl,ta=Q.fill,ua=Q.supportsFetch,va=$.wrapMethod,wa="source protocol user pass host port path".split(" "),xa=/^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/,ya="undefined"!=typeof window?window:"undefined"!=typeof N?N:"undefined"!=typeof self?self:{},za=ya.document,Aa=ya.navigator;J.prototype={VERSION:"3.22.2",debug:!1,TraceKit:W,config:function(a,b){var c=this;if(c.i)return this.C("error","Error: Raven has already been configured"),c;if(!a)return c;var d=c.m;b&&ha(b,function(a,b){"tags"===a||"extra"===a||"user"===a?c.l[a]=b:d[a]=b}),c.setDSN(a),d.ignoreErrors.push(/^Script error\.?$/),d.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/),d.ignoreErrors=ma(d.ignoreErrors),d.ignoreUrls=!!d.ignoreUrls.length&&ma(d.ignoreUrls),d.whitelistUrls=!!d.whitelistUrls.length&&ma(d.whitelistUrls),d.includePaths=ma(d.includePaths),d.maxBreadcrumbs=Math.max(0,Math.min(d.maxBreadcrumbs||100,100));var e={xhr:!0,console:!0,dom:!0,location:!0,sentry:!0},f=d.autoBreadcrumbs;"[object Object]"==={}.toString.call(f)?f=ia(e,f):f!==!1&&(f=e),d.autoBreadcrumbs=f;var g={tryCatch:!0},h=d.instrument;return"[object Object]"==={}.toString.call(h)?h=ia(g,h):h!==!1&&(h=g),d.instrument=h,W.collectWindowErrors=!!d.collectWindowErrors,c},install:function(){var a=this;return a.isSetup()&&!a.p&&(W.report.subscribe(function(){a.D.apply(a,arguments)}),a.E(),a.m.instrument&&a.m.instrument.tryCatch&&a.F(),a.m.autoBreadcrumbs&&a.G(),a.H(),a.p=!0),Error.stackTraceLimit=a.m.stackTraceLimit,this},setDSN:function(a){var b=this,c=b.I(a),d=c.path.lastIndexOf("/"),e=c.path.substr(1,d);b.J=a,b.j=c.user,b.K=c.pass&&c.pass.substr(1),b.k=c.path.substr(d+1),b.i=b.L(c),b.M=b.i+"/"+e+"api/"+b.k+"/store/",this.A()},context:function(a,b,c){return da(a)&&(c=b||[],b=a,a=void 0),this.wrap(a,b).apply(this,c)},wrap:function(a,b,c){function d(){var d=[],f=arguments.length,g=!a||a&&a.deep!==!1;for(c&&da(c)&&c.apply(this,arguments);f--;)d[f]=g?e.wrap(a,arguments[f]):arguments[f];try{return b.apply(this,d)}catch(h){throw e.N(),e.captureException(h,a),h}}var e=this;if(ca(b)&&!da(a))return a;if(da(a)&&(b=a,a=void 0),!da(b))return b;try{if(b.a)return b;if(b.O)return b.O}catch(f){return b}for(var g in b)la(b,g)&&(d[g]=b[g]);return d.prototype=b.prototype,b.O=d,d.a=!0,d.b=b,d},uninstall:function(){return W.report.uninstall(),this.P(),this.Q(),this.R(),Error.stackTraceLimit=this.q,this.p=!1,this},captureException:function(a,b){b=ia({trimHeadFrames:0},b?b:{});var c=!_(a),d=!ba(a),e=ba(a)&&!a.error;if(c&&d||e)return this.captureMessage(a,ia(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}));ba(a)&&(a=a.error),this.f=a;try{var f=W.computeStackTrace(a);this.S(f,b)}catch(g){if(a!==g)throw g}return this},captureMessage:function(a,b){if(!this.m.ignoreErrors.test||!this.m.ignoreErrors.test(a)){b=b||{};var c,d=ia({message:a+""},b);try{throw new Error(a)}catch(e){c=e}c.name=null;var f=W.computeStackTrace(c),g=fa(f.stack)&&f.stack[1],h=g&&g.url||"";if((!this.m.ignoreUrls.test||!this.m.ignoreUrls.test(h))&&(!this.m.whitelistUrls.test||this.m.whitelistUrls.test(h))){if(this.m.stacktrace||b&&b.stacktrace){b=ia({fingerprint:a,trimHeadFrames:(b.trimHeadFrames||0)+1},b);var i=this.T(f,b);d.stacktrace={frames:i.reverse()}}return this.U(d),this}}},captureBreadcrumb:function(a){var b=ia({timestamp:H()/1e3},a);if(da(this.m.breadcrumbCallback)){var c=this.m.breadcrumbCallback(b);if(aa(c)&&!ga(c))b=c;else if(c===!1)return this}return this.w.push(b),this.w.length>this.m.maxBreadcrumbs&&this.w.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.t.push([a,b]),this.p&&this.H(),this},setUserContext:function(a){return this.l.user=a,this},setExtraContext:function(a){return this.V("extra",a),this},setTagsContext:function(a){return this.V("tags",a),this},clearContext:function(){return this.l={},this},getContext:function(){return JSON.parse(X(this.l))},setEnvironment:function(a){return this.m.environment=a,this},setRelease:function(a){return this.m.release=a,this},setDataCallback:function(a){var b=this.m.dataCallback;return this.m.dataCallback=I(b,a),this},setBreadcrumbCallback:function(a){var b=this.m.breadcrumbCallback;return this.m.breadcrumbCallback=I(b,a),this},setShouldSendCallback:function(a){var b=this.m.shouldSendCallback;return this.m.shouldSendCallback=I(b,a),this},setTransport:function(a){return this.m.transport=a,this},lastException:function(){return this.f},lastEventId:function(){return this.h},isSetup:function(){return!!this.c&&(!!this.i||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.C("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=ya.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(za){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new Y("Missing eventId");var c=a.dsn||this.J;if(!c)throw new Y("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.l.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.L(this.I(c)),h=za.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(za.head||za.body).appendChild(h)}},N:function(){var a=this;this.o+=1,setTimeout(function(){a.o-=1})},W:function(a,b){var c,d;if(this.d){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),za.createEvent?(c=za.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=za.createEventObject(),c.eventType=a);for(d in b)la(b,d)&&(c[d]=b[d]);if(za.createEvent)za.dispatchEvent(c);else try{za.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},X:function(a){var b=this;return function(c){if(b.Y=null,b.x!==c){b.x=c;var d;try{d=pa(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},Z:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.Y;g||a.X("input")(c),clearTimeout(g),a.Y=setTimeout(function(){a.Y=null},b)}}},$:function(a,b){var c=sa(this.y.href),d=sa(b),e=sa(a);this.z=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},E:function(){var a=this;a._=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.a?a._.apply(this.b,arguments):a._.apply(this,arguments)}},P:function(){this._&&(Function.prototype.toString=this._)},F:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.$(b.z,c+""),a.apply(this,arguments)}};ta(history,"pushState",j,d),ta(history,"replaceState",j,d)}if(c.console&&"console"in ya&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};ha(["debug","info","warn","error","log"],function(a,b){va(console,b,k)})}},Q:function(){for(var a;this.v.length;){a=this.v.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},R:function(){for(var a in this.s)this.r[a]=this.s[a]},H:function(){var a=this;ha(this.t,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},I:function(a){var b=xa.exec(a),c={},d=7;try{for(;d--;)c[wa[d]]=b[d]||""}catch(e){throw new Y("Invalid DSN: "+a)}if(c.pass&&!this.m.allowSecretKey)throw new Y("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},L:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},D:function(){this.o||this.S.apply(this,arguments)},S:function(a,b){var c=this.T(a,b);this.W("handle",{stackInfo:a,options:b}),this.ba(a.name,a.message,a.url,a.lineno,c,b)},T:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(ha(a.stack,function(b,e){var f=c.ca(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.w,0)}),this.l.user&&(a.user=this.l.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||ga(a[b]))&&delete a[b]}),da(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!ga(a)&&(!da(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.ia()?void this.C("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random()":"anonymous component")+(a._isVue&&a.$options.__file?" at "+a.$options.__file:"")}function e(a,b){if(b=b||window.Vue,b&&b.config){var c=b.config.errorHandler;b.config.errorHandler=function(b,e,f){var g={};"[object Object]"===Object.prototype.toString.call(e)&&(g.componentName=d(e),g.propsData=e.$options.propsData),"undefined"!=typeof f&&(g.lifecycleHook=f),a.captureException(b,{extra:g}),"function"==typeof c&&c.call(this,b,e,f)}}}b.exports=e,a(6).addPlugin(b.exports)},{6:6}],3:[function(a,b,c){function d(a){this.name="RavenConfigError",this.message=a}d.prototype=new Error,d.prototype.constructor=d,b.exports=d},{}],4:[function(a,b,c){var d=a(7),e=function(a,b,c){var e=a[b],f=a;if(b in a){var g="warn"===b?"warning":b;a[b]=function(){var a=[].slice.call(arguments),h=d.safeJoin(a," "),i={level:g,logger:"console",extra:{arguments:a}};"assert"===b?a[0]===!1&&(h="Assertion failed: "+(d.safeJoin(a.slice(1)," ")||"console.assert"),i.extra.arguments=a.slice(1),c&&c(h,i)):c&&c(h,i),e&&Function.prototype.apply.call(e,f,a)}}};b.exports={wrapMethod:e}},{7:7}],5:[function(a,b,c){(function(c){function d(){return+new Date}function e(a,b){return q(b)?function(c){return b(c,a)}:b}function f(){this.a=!("object"!=typeof JSON||!JSON.stringify),this.b=!p(Q),this.c=!p(R),this.d=null,this.e=null,this.f=null,this.g=null,this.h=null,this.i=null,this.j={},this.k={release:P.SENTRY_RELEASE&&P.SENTRY_RELEASE.id,logger:"javascript",ignoreErrors:[],ignoreUrls:[],whitelistUrls:[],includePaths:[],headers:null,collectWindowErrors:!0,captureUnhandledRejections:!0,maxMessageLength:0,maxUrlLength:250,stackTraceLimit:50,autoBreadcrumbs:!0,instrument:!0,sampleRate:1,sanitizeKeys:[]},this.l={method:"POST",keepalive:!0,referrerPolicy:I()?"origin":""},this.m=0,this.n=!1,this.o=Error.stackTraceLimit,this.p=P.console||{},this.q={},this.r=[],this.s=d(),this.t=[],this.u=[],this.v=null,this.w=P.location,this.x=this.w&&this.w.href,this.y();for(var a in this.p)this.q[a]=this.p[a]}var g=a(8),h=a(9),i=a(10),j=a(3),k=a(7),l=k.isError,m=k.isObject,n=k.isPlainObject,o=k.isErrorEvent,p=k.isUndefined,q=k.isFunction,r=k.isString,s=k.isArray,t=k.isEmptyObject,u=k.each,v=k.objectMerge,w=k.truncate,x=k.objectFrozen,y=k.hasKey,z=k.joinRegExp,A=k.urlencode,B=k.uuid4,C=k.htmlTreeAsString,D=k.isSameException,E=k.isSameStacktrace,F=k.parseUrl,G=k.fill,H=k.supportsFetch,I=k.supportsReferrerPolicy,J=k.serializeKeysForMessage,K=k.serializeException,L=k.sanitize,M=a(4).wrapMethod,N="source protocol user pass host port path".split(" "),O=/^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/,P="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},Q=P.document,R=P.navigator;f.prototype={VERSION:"3.24.2",debug:!1,TraceKit:g,config:function(a,b){var c=this;if(c.g)return this.z("error","Error: Raven has already been configured"),c;if(!a)return c;var d=c.k;b&&u(b,function(a,b){"tags"===a||"extra"===a||"user"===a?c.j[a]=b:d[a]=b}),c.setDSN(a),d.ignoreErrors.push(/^Script error\.?$/),d.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/),d.ignoreErrors=z(d.ignoreErrors),d.ignoreUrls=!!d.ignoreUrls.length&&z(d.ignoreUrls),d.whitelistUrls=!!d.whitelistUrls.length&&z(d.whitelistUrls),d.includePaths=z(d.includePaths),d.maxBreadcrumbs=Math.max(0,Math.min(d.maxBreadcrumbs||100,100));var e={xhr:!0,console:!0,dom:!0,location:!0,sentry:!0},f=d.autoBreadcrumbs;"[object Object]"==={}.toString.call(f)?f=v(e,f):f!==!1&&(f=e),d.autoBreadcrumbs=f;var h={tryCatch:!0},i=d.instrument;return"[object Object]"==={}.toString.call(i)?i=v(h,i):i!==!1&&(i=h),d.instrument=i,g.collectWindowErrors=!!d.collectWindowErrors,c},install:function(){var a=this;return a.isSetup()&&!a.n&&(g.report.subscribe(function(){a.A.apply(a,arguments)}),a.k.captureUnhandledRejections&&a.B(),a.C(),a.k.instrument&&a.k.instrument.tryCatch&&a.D(),a.k.autoBreadcrumbs&&a.E(),a.F(),a.n=!0),Error.stackTraceLimit=a.k.stackTraceLimit,this},setDSN:function(a){var b=this,c=b.G(a),d=c.path.lastIndexOf("/"),e=c.path.substr(1,d);b.H=a,b.h=c.user,b.I=c.pass&&c.pass.substr(1),b.i=c.path.substr(d+1),b.g=b.J(c),b.K=b.g+"/"+e+"api/"+b.i+"/store/",this.y()},context:function(a,b,c){return q(a)&&(c=b||[],b=a,a=void 0),this.wrap(a,b).apply(this,c)},wrap:function(a,b,c){function d(){var d=[],f=arguments.length,g=!a||a&&a.deep!==!1;for(c&&q(c)&&c.apply(this,arguments);f--;)d[f]=g?e.wrap(a,arguments[f]):arguments[f];try{return b.apply(this,d)}catch(h){throw e.L(),e.captureException(h,a),h}}var e=this;if(p(b)&&!q(a))return a;if(q(a)&&(b=a,a=void 0),!q(b))return b;try{if(b.M)return b;if(b.N)return b.N}catch(f){return b}for(var g in b)y(b,g)&&(d[g]=b[g]);return d.prototype=b.prototype,b.N=d,d.M=!0,d.O=b,d},uninstall:function(){return g.report.uninstall(),this.P(),this.Q(),this.R(),this.S(),Error.stackTraceLimit=this.o,this.n=!1,this},T:function(a){this.z("debug","Raven caught unhandled promise rejection:",a),this.captureException(a.reason,{extra:{unhandledPromiseRejection:!0}})},B:function(){return this.T=this.T.bind(this),P.addEventListener&&P.addEventListener("unhandledrejection",this.T),this},P:function(){return P.removeEventListener&&P.removeEventListener("unhandledrejection",this.T),this},captureException:function(a,b){if(b=v({trimHeadFrames:0},b?b:{}),o(a)&&a.error)a=a.error;else if(l(a))a=a;else{if(!n(a))return this.captureMessage(a,v(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}));b=this.U(b,a),a=new Error(b.message)}this.d=a;try{var c=g.computeStackTrace(a);this.V(c,b)}catch(d){if(a!==d)throw d}return this},U:function(a,b){var c=Object.keys(b).sort(),d=v(a,{message:"Non-Error exception captured with keys: "+J(c),fingerprint:[i(c)],extra:a.extra||{}});return d.extra.W=K(b),d},captureMessage:function(a,b){if(!this.k.ignoreErrors.test||!this.k.ignoreErrors.test(a)){b=b||{},a+="";var c,d=v({message:a},b);try{throw new Error(a)}catch(e){c=e}c.name=null;var f=g.computeStackTrace(c),h=s(f.stack)&&f.stack[1];h&&"Raven.captureException"===h.func&&(h=f.stack[2]);var i=h&&h.url||"";if((!this.k.ignoreUrls.test||!this.k.ignoreUrls.test(i))&&(!this.k.whitelistUrls.test||this.k.whitelistUrls.test(i))){if(this.k.stacktrace||b&&b.stacktrace){d.fingerprint=null==d.fingerprint?a:d.fingerprint,b=v({trimHeadFrames:0},b),b.trimHeadFrames+=1;var j=this.X(f,b);d.stacktrace={frames:j.reverse()}}return d.fingerprint&&(d.fingerprint=s(d.fingerprint)?d.fingerprint:[d.fingerprint]),this.Y(d),this}}},captureBreadcrumb:function(a){var b=v({timestamp:d()/1e3},a);if(q(this.k.breadcrumbCallback)){var c=this.k.breadcrumbCallback(b);if(m(c)&&!t(c))b=c;else if(c===!1)return this}return this.u.push(b),this.u.length>this.k.maxBreadcrumbs&&this.u.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.r.push([a,b]),this.n&&this.F(),this},setUserContext:function(a){return this.j.user=a,this},setExtraContext:function(a){return this.Z("extra",a),this},setTagsContext:function(a){return this.Z("tags",a),this},clearContext:function(){return this.j={},this},getContext:function(){return JSON.parse(h(this.j))},setEnvironment:function(a){return this.k.environment=a,this},setRelease:function(a){return this.k.release=a,this},setDataCallback:function(a){var b=this.k.dataCallback;return this.k.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.k.breadcrumbCallback;return this.k.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.k.shouldSendCallback;return this.k.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.k.transport=a,this},lastException:function(){return this.d},lastEventId:function(){return this.f},isSetup:function(){return!!this.a&&(!!this.g||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.z("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=P.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(Q){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.H;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.j.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.J(this.G(c)),h=Q.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(Q.head||Q.body).appendChild(h)}},L:function(){var a=this;this.m+=1,setTimeout(function(){a.m-=1})},$:function(a,b){var c,d;if(this.b){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),Q.createEvent?(c=Q.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=Q.createEventObject(),c.eventType=a);for(d in b)y(b,d)&&(c[d]=b[d]);if(Q.createEvent)Q.dispatchEvent(c);else try{Q.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},_:function(a){var b=this;return function(c){if(b.aa=null,b.v!==c){b.v=c;var d;try{d=C(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ba:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.aa;g||a._("input")(c),clearTimeout(g),a.aa=setTimeout(function(){a.aa=null},b)}}},ca:function(a,b){var c=F(this.w.href),d=F(b),e=F(a);this.x=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},C:function(){var a=this;a.da=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.M?a.da.apply(this.O,arguments):a.da.apply(this,arguments)}},Q:function(){this.da&&(Function.prototype.toString=this.da)},D:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.ca(b.x,c+""),a.apply(this,arguments)}};G(history,"pushState",j,d),G(history,"replaceState",j,d)}if(c.console&&"console"in P&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};u(["debug","info","warn","error","log"],function(a,b){M(console,b,k)})}},R:function(){for(var a;this.t.length;){a=this.t.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},S:function(){for(var a in this.q)this.p[a]=this.q[a]},F:function(){var a=this;u(this.r,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},G:function(a){var b=O.exec(a),c={},d=7;try{for(;d--;)c[N[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.k.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},J:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},A:function(){this.m||this.V.apply(this,arguments)},V:function(a,b){var c=this.X(a,b);this.$("handle",{stackInfo:a,options:b}),this.fa(a.name,a.message,a.url,a.lineno,c,b)},X:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(u(a.stack,function(b,e){var f=c.ga(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.u,0)}),this.j.user&&(a.user=this.j.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),a=this.pa(a),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||t(a[b]))&&delete a[b]}),q(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!t(a)&&(!q(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.ma()?void this.z("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function B(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&j(b))for(c=b.split(/\s+/),f=0;fc?M(a,b-1):d}function N(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?T:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function O(a,b){function c(a){return k(a)?a.map(function(a){return c(a)}):i(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!k(b)||k(b)&&0===b.length)return a;var d,e=w(b),f="********";try{d=JSON.parse(P(a))}catch(g){return a}return c(d)}var P=a(9),Q="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},R=3,S=51200,T=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isUndefined:g,isFunction:h,isPlainObject:i,isString:j,isArray:k,isEmptyObject:l,supportsErrorEvent:m,supportsFetch:n,supportsReferrerPolicy:o,supportsPromiseRejectionEvent:p,wrappedCallback:q,each:r,objectMerge:s,truncate:u,objectFrozen:t,hasKey:v,joinRegExp:w,urlencode:x,uuid4:z,htmlTreeAsString:A,htmlElementAsString:B,isSameException:E,isSameStacktrace:F,parseUrl:y,fill:G,safeJoin:H,serializeException:M,serializeKeysForMessage:N,sanitize:O}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{9:9}],8:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}var e=a(7),f={collectWindowErrors:!0,debug:!1},g="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},h=[].slice,i="?",j=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;f.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function k(a,b){var c=null;if(!b||f.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(h.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,g,h){var l=null,m=e.isErrorEvent(h)?h.error:h,n=e.isErrorEvent(a)?a.message:a;if(v)f.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&e.isError(m))l=f.computeStackTrace(m),k(l,!0);else{var p,r={url:b,line:c,column:g},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(j);p&&(s=p[1],n=p[2])}r.func=i,l={name:s,message:n,url:d(),stack:[r]},k(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=g.onerror,g.onerror=l,r=!0)}function n(){r&&(g.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,k.apply(null,[a,!1].concat(b))}function p(a,b){var c=h.call(arguments,1);if(v){if(u===a)return;o()}var d=f.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),f.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,e,f=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,g=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,h=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,j=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,k=/\((\S*)(?::(\d+))(?::(\d+))\)/,l=a.stack.split("\n"),m=[],n=(/^(.*) is undefined$/.exec(a.message),0),o=l.length;n eval")>-1;q&&(b=j.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==n||c[5]||"undefined"==typeof a.columnNumber||(m[0].column=a.columnNumber+1),e={url:c[3],func:c[1]||i,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}!e.func&&e.line&&(e.func=i),m.push(e)}return m.length?{name:a.name,message:a.message,url:d(),stack:m}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=i),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,g){for(var h,j,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==e&&o!==f.report){if(j={url:null,func:i,line:null,column:null},o.name?j.func=o.name:(h=k.exec(o.toString()))&&(j.func=h[1]),"undefined"==typeof j.func)try{j.func=h.input.substring(0,h.input.indexOf("{"))}catch(p){}m[""+o]?n=!0:m[""+o]=!0,l.push(j)}g&&l.splice(0,g);var q={name:a.name,message:a.message,url:d(),stack:l};return b(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),q}function e(b,e){var g=null;e=null==e?0:+e;try{if(g=a(b))return g}catch(h){if(f.debug)throw h}try{if(g=c(b,e+1))return g}catch(h){if(f.debug)throw h}return{name:b.name,message:b.message,url:d()}}return e.augmentStackTraceWithInitialElement=b,e.computeStackTraceFromStackProp=a,e}(),b.exports=f}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{7:7}],9:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}],10:[function(a,b,c){function d(a,b){var c=(65535&a)+(65535&b),d=(a>>16)+(b>>16)+(c>>16);return d<<16|65535&c}function e(a,b){return a<>>32-b}function f(a,b,c,f,g,h){return d(e(d(d(b,a),d(f,h)),g),c)}function g(a,b,c,d,e,g,h){return f(b&c|~b&d,a,b,e,g,h)}function h(a,b,c,d,e,g,h){return f(b&d|c&~d,a,b,e,g,h)}function i(a,b,c,d,e,g,h){return f(b^c^d,a,b,e,g,h)}function j(a,b,c,d,e,g,h){return f(c^(b|~d),a,b,e,g,h)}function k(a,b){a[b>>5]|=128<>>9<<4)+14]=b;var c,e,f,k,l,m=1732584193,n=-271733879,o=-1732584194,p=271733878;for(c=0;c>5]>>>b%32&255);return c}function m(a){var b,c=[];for(c[(a.length>>2)-1]=void 0,b=0;b>5]|=(255&a.charCodeAt(b/8))<16&&(e=k(e,8*a.length)),c=0;c<16;c+=1)f[c]=909522486^e[c],g[c]=1549556828^e[c];return d=k(f.concat(m(b)),512+8*b.length),l(k(g.concat(d),640))}function p(a){var b,c,d="0123456789abcdef",e="";for(c=0;c>>4&15)+d.charAt(15&b);return e}function q(a){return unescape(encodeURIComponent(a))}function r(a){return n(q(a))}function s(a){return p(r(a))}function t(a,b){return o(q(a),q(b))}function u(a,b){return p(t(a,b))}function v(a,b,c){return b?c?t(b,a):u(b,a):c?r(a):s(a)}b.exports=v},{}]},{},[6,1,2])(6)}); //# sourceMappingURL=raven.min.js.map \ No newline at end of file diff --git a/dist/require,vue/raven.min.js.map b/dist/require,vue/raven.min.js.map index 9227b6bc539f..0a09c6c96440 100644 --- a/dist/require,vue/raven.min.js.map +++ b/dist/require,vue/raven.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["raven.js"],"names":["global","factory","exports","module","define","amd","Raven","this","createCommonjsModule","fn","_typeof","obj","Symbol","iterator","constructor","prototype","isObject$1","what","isError$1","value","toString","call","Error","isErrorEvent$1","supportsErrorEvent","isUndefined$1","isFunction$1","isPlainObject","Object","isString$1","isArray$1","isEmptyObject$1","_","hasOwnProperty","ErrorEvent","e","supportsFetch$1","_window$3","Headers","Request","Response","wrappedCallback","callback","dataCallback","data","original","normalizedData","each$1","i","j","length","hasKey$1","objectMerge$1","obj1","obj2","key","objectFrozen$1","isFrozen","truncate$1","str","max","substr","object","joinRegExp$1","patterns","pattern","sources","len","push","replace","source","RegExp","join","urlencode$1","o","pairs","encodeURIComponent","parseUrl$1","url","match","query","fragment","protocol","host","path","relative","uuid4$1","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","r","Math","random","htmlTreeAsString$1","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","reverse","className","classes","attr","tagName","toLowerCase","id","split","attrWhitelist","getAttribute","isOnlyOneTruthy","a","b","isBothUndefined","isSameException$1","ex1","ex2","values","type","stacktrace","isSameStacktrace$1","stack1","stack2","frames1","frames","frames2","filename","lineno","colno","fill$1","name","replacement","track","orig","__raven__","__orig__","safeJoin","input","delimiter","output","String","getLocationHref","document","location","href","RavenConfigError","message","now","Date","keepOriginalCallback","isFunction","Raven$1","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window$1","SENTRY_RELEASE","logger","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","_fetchDefaults","method","keepalive","referrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","console","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","_lastHref","_resetBackoff","requirePlugin","formatComponentName","vm","$root","_isVue","$options","_componentTag","__file","vuePlugin","Vue","window","config","_oldOnError","errorHandler","error","info","metaData","componentName","propsData","lifecycleHook","captureException","extra","commonjsGlobal","self","_sPO","setPrototypeOf","p","__proto__","Reflect","construct","Parent","args","Class","Constructor","apply","bind","utils","isObject","isError","isErrorEvent","isString","isArray","isEmptyObject","supportsFetch","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","TraceKit","debug","_window$2","_slice","slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","report","subscribe","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","stack","isWindowError","exception","concat","arguments","inner","traceKitWindowOnError","msg","lineNo","colNo","ex","lastExceptionStack","computeStackTrace","augmentStackTraceWithInitialElement","processLastException","groups","line","column","undefined","func","_oldOnerrorHandler","_onErrorHandlerInstalled","onerror","_lastExceptionStack","_lastArgs","lastArgs","lastException","rethrow","setTimeout","incomplete","uninstall","computeStackTraceFromStackProp","submatch","parts","element","chrome","gecko","winjs","geckoEval","chromeEval","lines","exec","isNative","indexOf","isEval","columnNumber","stackInfo","initial","unshift","partial","computeStackTraceByWalkingCallerChain","depth","item","functionName","funcs","recursion","curr","caller","substring","result","sourceURL","fileName","lineNumber","description","tracekit","stringify_1","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","err","keys","thisPos","Infinity","getSerialize","configError","wrapMethod","level","originalConsoleLevel","originalConsole","sentryLevel","Function","console$1","wrapConsoleMethod","dsnKeys","dsnPattern","navigator","VERSION","dsn","options","_logDebug","globalOptions","setDSN","maxBreadcrumbs","min","autoBreadcrumbDefaults","xhr","dom","sentry","instrumentDefaults","tryCatch","install","isSetup","_handleOnErrorStackInfo","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","lastIndexOf","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","context","wrap","_before","wrapped","deep","_ignoreNextOnError","__raven_wrapper__","property","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","trimHeadFrames","isNotError","isNotErrorEvent","isErrorEventWithoutError","captureMessage","_handleStackInfo","test","initialCall","fileurl","fingerprint","_prepareFrames","_send","captureBreadcrumb","crumb","timestamp","breadcrumbCallback","shift","addPlugin","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","setDataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","N","W","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","X","evtName","_keypressTimeout","target","category","Z","debounceDuration","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","$","from","to","parsedLoc","parsedTo","parsedFrom","E","_originalFunctionToString","P","F","wrapTimeFn","t","Array","originalCallback","wrapEventTarget","proto","capture","secure","handleEvent","before","clickHandler","keypressHandler","_keypressEventHandler","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","G","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","onreadystatechange","origFetch","fetchInput","fetchData","then","response","addEventListener","attachEvent","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","Q","builtin","R","H","installer","I","m","allowSecretKey","L","port","D","S","_triggerEvent","_processException","T","frame","_normalizeFrame","in_app","ca","stackInfoUrl","normalized","function","ba","prefixedMessage","culprit","da","request","Referer","breadcrumbs","_trimBreadcrumbs","ea","urlProp","urlProps","fa","httpData","userAgent","User-Agent","referrer","A","_backoffDuration","_backoffStart","ia","ja","current","last","ka","_shouldBackoff","retry","get","getResponseHeader","parseInt","U","baseData","project","platform","_getHttpData","serverName","server_name","forEach","_sendProcessedPayload","ma","la","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","na","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","onload","open","setRequestHeader","send","oa","hash","evaluated","C","V","setUser","setReleaseContext","raven","_window","_Raven","noConflict","singleton","require_1","vue","require_vue"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file +{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","requirePlugin","wrap","deep","addPlugin","6","2","formatComponentName","vm","$root","name","_isVue","$options","_componentTag","__file","vuePlugin","Vue","config","_oldOnError","errorHandler","error","info","metaData","Object","prototype","toString","componentName","propsData","lifecycleHook","captureException","extra","3","RavenConfigError","message","constructor","4","utils","wrapMethod","console","level","callback","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","msg","safeJoin","data","logger","Function","apply","7","5","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","sanitizeKeys","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isError","isObject","isPlainObject","isErrorEvent","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","sanitize","wrapConsoleMethod","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","dsn","options","_logDebug","globalOptions","key","value","setDSN","push","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","substr","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","context","func","undefined","_before","wrapped","_ignoreNextOnError","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","T","event","reason","unhandledPromiseRejection","B","_promiseRejectionHandler","bind","addEventListener","P","removeEventListener","ex","trimHeadFrames","captureMessage","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","U","currentOptions","exKeys","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","setDataCallback","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","L","setTimeout","$","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","_","evtName","_keypressTimeout","target","category","ba","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","ca","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","C","_originalFunctionToString","Q","D","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","type","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","E","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","R","builtin","S","F","installer","concat","G","str","m","exec","allowSecretKey","J","port","A","V","stackInfo","_triggerEvent","_processException","lineno","X","frame","_normalizeFrame","in_app","ga","stackInfoUrl","normalized","filename","line","colno","column","function","fa","prefixedMessage","exception","values","culprit","ha","request","Referer","breadcrumbs","_trimBreadcrumbs","ia","urlProp","urlProps","ja","httpData","userAgent","User-Agent","referrer","y","_backoffDuration","_backoffStart","ma","na","current","last","oa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Y","baseData","project","platform","_getHttpData","serverName","server_name","_sanitizeData","forEach","random","_sendProcessedPayload","pa","ra","qa","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","sa","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","onerror","open","setRequestHeader","send","ta","hash","evaluated","z","Z","setUser","setReleaseContext","10","8","9","RavenConstructor","_Raven","noConflict","Client","what","supportsErrorEvent","ErrorEvent","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","wrappedCallback","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","sanitizeMask","safeInput","o_O","getLocationHref","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","charAt","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","string","raw"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file diff --git a/dist/require/raven.js b/dist/require/raven.js index 3c2673c4163a..937bcfc41588 100644 --- a/dist/require/raven.js +++ b/dist/require/raven.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.22.2 (1b6187b) | github.com/getsentry/raven-js */ +/*! Raven.js 3.24.2 (540f32b) | github.com/getsentry/raven-js */ /* * Includes TraceKit @@ -10,3150 +10,3912 @@ * */ -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : - typeof define === 'function' && define.amd ? define(factory) : - (global.Raven = factory()); -}(this, (function () { 'use strict'; +(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.Raven = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o href parsing trick because React Native and other -// environments where DOM might not be available + // At this point, we've passed along 2 arguments, and the second one + // is not a function either, so we'll just return the second argument. + if (!isFunction(func)) { + return func; + } + // We don't wanna wrap it twice! + try { + if (func.__raven__) { + return func; + } -function parseUrl$1(url) { - if (typeof url !== 'string') return {}; - var match = url.match(/^(([^:\/?#]+):)?(\/\/([^\/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?$/); // coerce to undefined values to empty string so we don't get 'undefined' + // If this has already been wrapped in the past, return that + if (func.__raven_wrapper__) { + return func.__raven_wrapper__; + } + } catch (e) { + // Just accessing custom props in some Selenium environments + // can cause a "Permission denied" exception (see raven-js#495). + // Bail on wrapping and return the function as-is (defers to window.onerror). + return func; + } - var query = match[6] || ''; - var fragment = match[8] || ''; - return { - protocol: match[2], - host: match[4], - path: match[5], - relative: match[5] + query + fragment // everything minus origin + function wrapped() { + var args = [], + i = arguments.length, + deep = !options || (options && options.deep !== false); - }; -} + if (_before && isFunction(_before)) { + _before.apply(this, arguments); + } -function uuid4$1() { - var crypto = _window$3.crypto || _window$3.msCrypto; + // Recursively wrap all of a function's arguments that are + // functions themselves. + while (i--) args[i] = deep ? self.wrap(options, arguments[i]) : arguments[i]; - if (!isUndefined$1(crypto) && crypto.getRandomValues) { - // Use window.crypto API if available - // eslint-disable-next-line no-undef - var arr = new Uint16Array(8); - crypto.getRandomValues(arr); // set 4 in byte 7 + try { + // Attempt to invoke user-land function + // NOTE: If you are a Sentry user, and you are seeing this stack frame, it + // means Raven caught an error invoking your application code. This is + // expected behavior and NOT indicative of a bug with Raven.js. + return func.apply(this, args); + } catch (e) { + self._ignoreNextOnError(); + self.captureException(e, options); + throw e; + } + } - arr[3] = arr[3] & 0xfff | 0x4000; // set 2 most significant bits of byte 9 to '10' + // copy over properties of the old function + for (var property in func) { + if (hasKey(func, property)) { + wrapped[property] = func[property]; + } + } + wrapped.prototype = func.prototype; - arr[4] = arr[4] & 0x3fff | 0x8000; + func.__raven_wrapper__ = wrapped; + // Signal that this function has been wrapped/filled already + // for both debugging and to prevent it to being wrapped/filled twice + wrapped.__raven__ = true; + wrapped.__orig__ = func; - var pad = function pad(num) { - var v = num.toString(16); + return wrapped; + }, - while (v.length < 4) { - v = '0' + v; - } + /** + * Uninstalls the global error handler. + * + * @return {Raven} + */ + uninstall: function() { + TraceKit.report.uninstall(); - return v; - }; + this._detachPromiseRejectionHandler(); + this._unpatchFunctionToString(); + this._restoreBuiltIns(); + this._restoreConsole(); - return pad(arr[0]) + pad(arr[1]) + pad(arr[2]) + pad(arr[3]) + pad(arr[4]) + pad(arr[5]) + pad(arr[6]) + pad(arr[7]); - } else { - // http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/2117523#2117523 - return 'xxxxxxxxxxxx4xxxyxxxxxxxxxxxxxxx'.replace(/[xy]/g, function (c) { - var r = Math.random() * 16 | 0, - v = c === 'x' ? r : r & 0x3 | 0x8; - return v.toString(16); - }); - } -} -/** - * Given a child DOM element, returns a query-selector statement describing that - * and its ancestors - * e.g. [HTMLElement] => body > div > input#foo.btn[name=baz] - * @param elem - * @returns {string} - */ + Error.stackTraceLimit = this._originalErrorStackTraceLimit; + this._isRavenInstalled = false; + return this; + }, -function htmlTreeAsString$1(elem) { - /* eslint no-extra-parens:0*/ - var MAX_TRAVERSE_HEIGHT = 5, - MAX_OUTPUT_LEN = 80, - out = [], - height = 0, - len = 0, - separator = ' > ', - sepLength = separator.length, - nextStr; + /** + * Callback used for `unhandledrejection` event + * + * @param {PromiseRejectionEvent} event An object containing + * promise: the Promise that was rejected + * reason: the value with which the Promise was rejected + * @return void + */ + _promiseRejectionHandler: function(event) { + this._logDebug('debug', 'Raven caught unhandled promise rejection:', event); + this.captureException(event.reason, { + extra: { + unhandledPromiseRejection: true + } + }); + }, - while (elem && height++ < MAX_TRAVERSE_HEIGHT) { - nextStr = htmlElementAsString(elem); // bail out if - // - nextStr is the 'html' element - // - the length of the string that would be created exceeds MAX_OUTPUT_LEN - // (ignore this limit if we are on the first iteration) + /** + * Installs the global promise rejection handler. + * + * @return {raven} + */ + _attachPromiseRejectionHandler: function() { + this._promiseRejectionHandler = this._promiseRejectionHandler.bind(this); + _window.addEventListener && + _window.addEventListener('unhandledrejection', this._promiseRejectionHandler); + return this; + }, - if (nextStr === 'html' || height > 1 && len + out.length * sepLength + nextStr.length >= MAX_OUTPUT_LEN) { - break; + /** + * Uninstalls the global promise rejection handler. + * + * @return {raven} + */ + _detachPromiseRejectionHandler: function() { + _window.removeEventListener && + _window.removeEventListener('unhandledrejection', this._promiseRejectionHandler); + return this; + }, + + /** + * Manually capture an exception and send it over to Sentry + * + * @param {error} ex An exception to be logged + * @param {object} options A specific set of options for this error [optional] + * @return {Raven} + */ + captureException: function(ex, options) { + options = objectMerge({trimHeadFrames: 0}, options ? options : {}); + + if (isErrorEvent(ex) && ex.error) { + // If it is an ErrorEvent with `error` property, extract it to get actual Error + ex = ex.error; + } else if (isError(ex)) { + // we have a real Error object + ex = ex; + } else if (isPlainObject(ex)) { + // If it is plain Object, serialize it manually and extract options + // This will allow us to group events based on top-level keys + // which is much better than creating new group when any key/value change + options = this._getCaptureExceptionOptionsFromPlainObject(options, ex); + ex = new Error(options.message); + } else { + // If none of previous checks were valid, then it means that + // it's not a plain Object + // it's not a valid ErrorEvent (one with an error property) + // it's not an Error + // So bail out and capture it as a simple message: + return this.captureMessage( + ex, + objectMerge(options, { + stacktrace: true, // if we fall back to captureMessage, default to attempting a new trace + trimHeadFrames: options.trimHeadFrames + 1 + }) + ); + } + + // Store the raw exception object for potential debugging and introspection + this._lastCapturedException = ex; + + // TraceKit.report will re-raise any exception passed to it, + // which means you have to wrap it in try/catch. Instead, we + // can wrap it here and only re-raise if TraceKit.report + // raises an exception different from the one we asked to + // report on. + try { + var stack = TraceKit.computeStackTrace(ex); + this._handleStackInfo(stack, options); + } catch (ex1) { + if (ex !== ex1) { + throw ex1; + } } - out.push(nextStr); - len += nextStr.length; - elem = elem.parentNode; - } + return this; + }, - return out.reverse().join(separator); -} -/** - * Returns a simple, query-selector representation of a DOM element - * e.g. [HTMLElement] => input#foo.btn[name=baz] - * @param HTMLElement - * @returns {string} - */ + _getCaptureExceptionOptionsFromPlainObject: function(currentOptions, ex) { + var exKeys = Object.keys(ex).sort(); + var options = objectMerge(currentOptions, { + message: + 'Non-Error exception captured with keys: ' + serializeKeysForMessage(exKeys), + fingerprint: [md5(exKeys)], + extra: currentOptions.extra || {} + }); + options.extra.__serialized__ = serializeException(ex); + return options; + }, -function htmlElementAsString(elem) { - var out = [], - className, - classes, - key, - attr, - i; + /* + * Manually send a message to Sentry + * + * @param {string} msg A plain message to be captured in Sentry + * @param {object} options A specific set of options for this message [optional] + * @return {Raven} + */ + captureMessage: function(msg, options) { + // config() automagically converts ignoreErrors from a list to a RegExp so we need to test for an + // early call; we'll error on the side of logging anything called before configuration since it's + // probably something you should see: + if ( + !!this._globalOptions.ignoreErrors.test && + this._globalOptions.ignoreErrors.test(msg) + ) { + return; + } - if (!elem || !elem.tagName) { - return ''; - } + options = options || {}; + msg = msg + ''; // Make sure it's actually a string - out.push(elem.tagName.toLowerCase()); + var data = objectMerge( + { + message: msg + }, + options + ); - if (elem.id) { - out.push('#' + elem.id); - } + var ex; + // Generate a "synthetic" stack trace from this point. + // NOTE: If you are a Sentry user, and you are seeing this stack frame, it is NOT indicative + // of a bug with Raven.js. Sentry generates synthetic traces either by configuration, + // or if it catches a thrown object without a "stack" property. + try { + throw new Error(msg); + } catch (ex1) { + ex = ex1; + } - className = elem.className; + // null exception name so `Error` isn't prefixed to msg + ex.name = null; + var stack = TraceKit.computeStackTrace(ex); - if (className && isString$1(className)) { - classes = className.split(/\s+/); + // stack[0] is `throw new Error(msg)` call itself, we are interested in the frame that was just before that, stack[1] + var initialCall = isArray(stack.stack) && stack.stack[1]; - for (i = 0; i < classes.length; i++) { - out.push('.' + classes[i]); + // if stack[1] is `Raven.captureException`, it means that someone passed a string to it and we redirected that call + // to be handled by `captureMessage`, thus `initialCall` is the 3rd one, not 2nd + // initialCall => captureException(string) => captureMessage(string) + if (initialCall && initialCall.func === 'Raven.captureException') { + initialCall = stack.stack[2]; } - } - - var attrWhitelist = ['type', 'name', 'title', 'alt']; - for (i = 0; i < attrWhitelist.length; i++) { - key = attrWhitelist[i]; - attr = elem.getAttribute(key); + var fileurl = (initialCall && initialCall.url) || ''; - if (attr) { - out.push('[' + key + '="' + attr + '"]'); + if ( + !!this._globalOptions.ignoreUrls.test && + this._globalOptions.ignoreUrls.test(fileurl) + ) { + return; } - } - - return out.join(''); -} -/** - * Returns true if either a OR b is truthy, but not both - */ + if ( + !!this._globalOptions.whitelistUrls.test && + !this._globalOptions.whitelistUrls.test(fileurl) + ) { + return; + } -function isOnlyOneTruthy(a, b) { - return !!(!!a ^ !!b); -} -/** - * Returns true if both parameters are undefined - */ + if (this._globalOptions.stacktrace || (options && options.stacktrace)) { + // fingerprint on msg, not stack trace (legacy behavior, could be revisited) + data.fingerprint = data.fingerprint == null ? msg : data.fingerprint; + options = objectMerge( + { + trimHeadFrames: 0 + }, + options + ); + // Since we know this is a synthetic trace, the top frame (this function call) + // MUST be from Raven.js, so mark it for trimming + // We add to the trim counter so that callers can choose to trim extra frames, such + // as utility functions. + options.trimHeadFrames += 1; -function isBothUndefined(a, b) { - return isUndefined$1(a) && isUndefined$1(b); -} -/** - * Returns true if the two input exception interfaces have the same content - */ + var frames = this._prepareFrames(stack, options); + data.stacktrace = { + // Sentry expects frames oldest to newest + frames: frames.reverse() + }; + } + // Make sure that fingerprint is always wrapped in an array + if (data.fingerprint) { + data.fingerprint = isArray(data.fingerprint) + ? data.fingerprint + : [data.fingerprint]; + } -function isSameException$1(ex1, ex2) { - if (isOnlyOneTruthy(ex1, ex2)) return false; - ex1 = ex1.values[0]; - ex2 = ex2.values[0]; - if (ex1.type !== ex2.type || ex1.value !== ex2.value) return false; // in case both stacktraces are undefined, we can't decide so default to false + // Fire away! + this._send(data); - if (isBothUndefined(ex1.stacktrace, ex2.stacktrace)) return false; - return isSameStacktrace$1(ex1.stacktrace, ex2.stacktrace); -} -/** - * Returns true if the two input stack trace interfaces have the same content - */ + return this; + }, + captureBreadcrumb: function(obj) { + var crumb = objectMerge( + { + timestamp: now() / 1000 + }, + obj + ); -function isSameStacktrace$1(stack1, stack2) { - if (isOnlyOneTruthy(stack1, stack2)) return false; - var frames1 = stack1.frames; - var frames2 = stack2.frames; // Exit early if frame count differs + if (isFunction(this._globalOptions.breadcrumbCallback)) { + var result = this._globalOptions.breadcrumbCallback(crumb); - if (frames1.length !== frames2.length) return false; // Iterate through every frame; bail out if anything differs + if (isObject(result) && !isEmptyObject(result)) { + crumb = result; + } else if (result === false) { + return this; + } + } - var a, b; + this._breadcrumbs.push(crumb); + if (this._breadcrumbs.length > this._globalOptions.maxBreadcrumbs) { + this._breadcrumbs.shift(); + } + return this; + }, - for (var i = 0; i < frames1.length; i++) { - a = frames1[i]; - b = frames2[i]; - if (a.filename !== b.filename || a.lineno !== b.lineno || a.colno !== b.colno || a['function'] !== b['function']) return false; - } + addPlugin: function(plugin /*arg1, arg2, ... argN*/) { + var pluginArgs = [].slice.call(arguments, 1); - return true; -} -/** - * Polyfill a method - * @param obj object e.g. `document` - * @param name method name present on object e.g. `addEventListener` - * @param replacement replacement function - * @param track {optional} record instrumentation to an array - */ + this._plugins.push([plugin, pluginArgs]); + if (this._isRavenInstalled) { + this._drainPlugins(); + } + return this; + }, -function fill$1(obj, name, replacement, track) { - var orig = obj[name]; - obj[name] = replacement(orig); - obj[name].__raven__ = true; - obj[name].__orig__ = orig; + /* + * Set/clear a user to be sent along with the payload. + * + * @param {object} user An object representing user data [optional] + * @return {Raven} + */ + setUserContext: function(user) { + // Intentionally do not merge here since that's an unexpected behavior. + this._globalContext.user = user; - if (track) { - track.push([obj, name, orig]); - } -} -/** - * Join values in array - * @param input array of values to be joined together - * @param delimiter string to be placed in-between values - * @returns {string} - */ + return this; + }, + /* + * Merge extra attributes to be sent along with the payload. + * + * @param {object} extra An object representing extra data [optional] + * @return {Raven} + */ + setExtraContext: function(extra) { + this._mergeContext('extra', extra); -function safeJoin(input, delimiter) { - if (!isArray$1(input)) return ''; - var output = []; + return this; + }, - for (var i = 0; i < input.length; i++) { - try { - output.push(String(input[i])); - } catch (e) { - output.push('[value cannot be serialized]'); - } - } + /* + * Merge tags to be sent along with the payload. + * + * @param {object} tags An object representing tags [optional] + * @return {Raven} + */ + setTagsContext: function(tags) { + this._mergeContext('tags', tags); - return output.join(delimiter); -} + return this; + }, -var utils = { - isObject: isObject$1, - isError: isError$1, - isErrorEvent: isErrorEvent$1, - isUndefined: isUndefined$1, - isFunction: isFunction$1, - isPlainObject: isPlainObject, - isString: isString$1, - isArray: isArray$1, - isEmptyObject: isEmptyObject$1, - supportsErrorEvent: supportsErrorEvent, - supportsFetch: supportsFetch$1, - wrappedCallback: wrappedCallback, - each: each$1, - objectMerge: objectMerge$1, - truncate: truncate$1, - objectFrozen: objectFrozen$1, - hasKey: hasKey$1, - joinRegExp: joinRegExp$1, - urlencode: urlencode$1, - uuid4: uuid4$1, - htmlTreeAsString: htmlTreeAsString$1, - htmlElementAsString: htmlElementAsString, - isSameException: isSameException$1, - isSameStacktrace: isSameStacktrace$1, - parseUrl: parseUrl$1, - fill: fill$1, - safeJoin: safeJoin -}; + /* + * Clear all of the context. + * + * @return {Raven} + */ + clearContext: function() { + this._globalContext = {}; -/* - TraceKit - Cross brower stack traces + return this; + }, - This was originally forked from github.com/occ/TraceKit, but has since been - largely re-written and is now maintained as part of raven-js. Tests for - this are in test/vendor. + /* + * Get a copy of the current context. This cannot be mutated. + * + * @return {object} copy of context + */ + getContext: function() { + // lol javascript + return JSON.parse(stringify(this._globalContext)); + }, - MIT license -*/ + /* + * Set environment of application + * + * @param {string} environment Typically something like 'production'. + * @return {Raven} + */ + setEnvironment: function(environment) { + this._globalOptions.environment = environment; -var TraceKit = { - collectWindowErrors: true, - debug: false -}; // This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) + return this; + }, -var _window$2 = typeof window !== 'undefined' ? window : typeof commonjsGlobal !== 'undefined' ? commonjsGlobal : typeof self !== 'undefined' ? self : {}; // global reference to slice + /* + * Set release version of application + * + * @param {string} release Typically something like a git SHA to identify version + * @return {Raven} + */ + setRelease: function(release) { + this._globalOptions.release = release; + return this; + }, -var _slice = [].slice; -var UNKNOWN_FUNCTION = '?'; // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error#Error_types + /* + * Set the dataCallback option + * + * @param {function} callback The callback to run which allows the + * data blob to be mutated before sending + * @return {Raven} + */ + setDataCallback: function(callback) { + var original = this._globalOptions.dataCallback; + this._globalOptions.dataCallback = keepOriginalCallback(original, callback); + return this; + }, -var ERROR_TYPES_RE = /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/; + /* + * Set the breadcrumbCallback option + * + * @param {function} callback The callback to run which allows filtering + * or mutating breadcrumbs + * @return {Raven} + */ + setBreadcrumbCallback: function(callback) { + var original = this._globalOptions.breadcrumbCallback; + this._globalOptions.breadcrumbCallback = keepOriginalCallback(original, callback); + return this; + }, -function getLocationHref() { - if (typeof document === 'undefined' || document.location == null) return ''; - return document.location.href; -} -/** - * TraceKit.report: cross-browser processing of unhandled exceptions - * - * Syntax: - * TraceKit.report.subscribe(function(stackInfo) { ... }) - * TraceKit.report.unsubscribe(function(stackInfo) { ... }) - * TraceKit.report(exception) - * try { ...code... } catch(ex) { TraceKit.report(ex); } - * - * Supports: - * - Firefox: full stack trace with line numbers, plus column number - * on top frame; column number is not guaranteed - * - Opera: full stack trace with line and column numbers - * - Chrome: full stack trace with line and column numbers - * - Safari: line and column number for the top frame only; some frames - * may be missing, and column number is not guaranteed - * - IE: line and column number for the top frame only; some frames - * may be missing, and column number is not guaranteed - * - * In theory, TraceKit should work on all of the following versions: - * - IE5.5+ (only 8.0 tested) - * - Firefox 0.9+ (only 3.5+ tested) - * - Opera 7+ (only 10.50 tested; versions 9 and earlier may require - * Exceptions Have Stacktrace to be enabled in opera:config) - * - Safari 3+ (only 4+ tested) - * - Chrome 1+ (only 5+ tested) - * - Konqueror 3.5+ (untested) - * - * Requires TraceKit.computeStackTrace. - * - * Tries to catch all unhandled exceptions and report them to the - * subscribed handlers. Please note that TraceKit.report will rethrow the - * exception. This is REQUIRED in order to get a useful stack trace in IE. - * If the exception does not reach the top of the browser, you will only - * get a stack trace from the point where TraceKit.report was called. - * - * Handlers receive a stackInfo object as described in the - * TraceKit.computeStackTrace docs. - */ - - -TraceKit.report = function reportModuleWrapper() { - var handlers = [], - lastArgs = null, - lastException = null, - lastExceptionStack = null; - /** - * Add a crash handler. - * @param {Function} handler + /* + * Set the shouldSendCallback option + * + * @param {function} callback The callback to run which allows + * introspecting the blob before sending + * @return {Raven} */ + setShouldSendCallback: function(callback) { + var original = this._globalOptions.shouldSendCallback; + this._globalOptions.shouldSendCallback = keepOriginalCallback(original, callback); + return this; + }, - function subscribe(handler) { - installGlobalHandler(); - handlers.push(handler); - } /** - * Remove a crash handler. - * @param {Function} handler - */ + * Override the default HTTP transport mechanism that transmits data + * to the Sentry server. + * + * @param {function} transport Function invoked instead of the default + * `makeRequest` handler. + * + * @return {Raven} + */ + setTransport: function(transport) { + this._globalOptions.transport = transport; + return this; + }, - function unsubscribe(handler) { - for (var i = handlers.length - 1; i >= 0; --i) { - if (handlers[i] === handler) { - handlers.splice(i, 1); - } - } - } - /** - * Remove all crash handlers. + /* + * Get the latest raw exception that was captured by Raven. + * + * @return {error} */ + lastException: function() { + return this._lastCapturedException; + }, + /* + * Get the last event id + * + * @return {string} + */ + lastEventId: function() { + return this._lastEventId; + }, - function unsubscribeAll() { - uninstallGlobalHandler(); - handlers = []; - } - /** - * Dispatch stack information to all handlers. - * @param {Object.} stack + /* + * Determine if Raven is setup and ready to go. + * + * @return {boolean} */ + isSetup: function() { + if (!this._hasJSON) return false; // needs JSON support + if (!this._globalServer) { + if (!this.ravenNotConfiguredError) { + this.ravenNotConfiguredError = true; + this._logDebug('error', 'Error: Raven has not been configured.'); + } + return false; + } + return true; + }, + afterLoad: function() { + // TODO: remove window dependence? - function notifyHandlers(stack, isWindowError) { - var exception = null; + // Attempt to initialize Raven on load + var RavenConfig = _window.RavenConfig; + if (RavenConfig) { + this.config(RavenConfig.dsn, RavenConfig.config).install(); + } + }, - if (isWindowError && !TraceKit.collectWindowErrors) { + showReportDialog: function(options) { + if ( + !_document // doesn't work without a document (React native) + ) return; - } - for (var i in handlers) { - if (handlers.hasOwnProperty(i)) { - try { - handlers[i].apply(null, [stack].concat(_slice.call(arguments, 2))); - } catch (inner) { - exception = inner; - } - } + options = options || {}; + + var lastEventId = options.eventId || this.lastEventId(); + if (!lastEventId) { + throw new RavenConfigError('Missing eventId'); } - if (exception) { - throw exception; + var dsn = options.dsn || this._dsn; + if (!dsn) { + throw new RavenConfigError('Missing DSN'); } - } - var _oldOnerrorHandler, _onErrorHandlerInstalled; - /** - * Ensures all global unhandled exceptions are recorded. - * Supported by Gecko and IE. - * @param {string} msg Error message. - * @param {string} url URL of script that generated the exception. - * @param {(number|string)} lineNo The line number at which the error - * occurred. - * @param {?(number|string)} colNo The column number at which the error - * occurred. - * @param {?Error} ex The actual Error object. - */ + var encode = encodeURIComponent; + var qs = ''; + qs += '?eventId=' + encode(lastEventId); + qs += '&dsn=' + encode(dsn); + var user = options.user || this._globalContext.user; + if (user) { + if (user.name) qs += '&name=' + encode(user.name); + if (user.email) qs += '&email=' + encode(user.email); + } - function traceKitWindowOnError(msg, url, lineNo, colNo, ex) { - var stack = null; // If 'ex' is ErrorEvent, get real Error from inside + var globalServer = this._getGlobalServer(this._parseDSN(dsn)); - var exception = utils.isErrorEvent(ex) ? ex.error : ex; // If 'msg' is ErrorEvent, get real message from inside + var script = _document.createElement('script'); + script.async = true; + script.src = globalServer + '/api/embed/error-page/' + qs; + (_document.head || _document.body).appendChild(script); + }, - var message = utils.isErrorEvent(msg) ? msg.message : msg; + /**** Private functions ****/ + _ignoreNextOnError: function() { + var self = this; + this._ignoreOnError += 1; + setTimeout(function() { + // onerror should trigger before setTimeout + self._ignoreOnError -= 1; + }); + }, - if (lastExceptionStack) { - TraceKit.computeStackTrace.augmentStackTraceWithInitialElement(lastExceptionStack, url, lineNo, message); - processLastException(); - } else if (exception && utils.isError(exception)) { - // non-string `exception` arg; attempt to extract stack trace - // New chrome and blink send along a real error object - // Let's just report that like a normal error. - // See: https://mikewest.org/2013/08/debugging-runtime-errors-with-window-onerror - stack = TraceKit.computeStackTrace(exception); - notifyHandlers(stack, true); - } else { - var location = { - url: url, - line: lineNo, - column: colNo - }; - var name = undefined; - var groups; + _triggerEvent: function(eventType, options) { + // NOTE: `event` is a native browser thing, so let's avoid conflicting wiht it + var evt, key; - if ({}.toString.call(message) === '[object String]') { - var groups = message.match(ERROR_TYPES_RE); + if (!this._hasDocument) return; - if (groups) { - name = groups[1]; - message = groups[2]; - } - } + options = options || {}; - location.func = UNKNOWN_FUNCTION; - stack = { - name: name, - message: message, - url: getLocationHref(), - stack: [location] - }; - notifyHandlers(stack, true); - } + eventType = 'raven' + eventType.substr(0, 1).toUpperCase() + eventType.substr(1); - if (_oldOnerrorHandler) { - return _oldOnerrorHandler.apply(this, arguments); + if (_document.createEvent) { + evt = _document.createEvent('HTMLEvents'); + evt.initEvent(eventType, true, true); + } else { + evt = _document.createEventObject(); + evt.eventType = eventType; } - return false; - } + for (key in options) + if (hasKey(options, key)) { + evt[key] = options[key]; + } - function installGlobalHandler() { - if (_onErrorHandlerInstalled) { - return; + if (_document.createEvent) { + // IE9 if standards + _document.dispatchEvent(evt); + } else { + // IE8 regardless of Quirks or Standards + // IE9 if quirks + try { + _document.fireEvent('on' + evt.eventType.toLowerCase(), evt); + } catch (e) { + // Do nothing + } } + }, - _oldOnerrorHandler = _window$2.onerror; - _window$2.onerror = traceKitWindowOnError; - _onErrorHandlerInstalled = true; - } + /** + * Wraps addEventListener to capture UI breadcrumbs + * @param evtName the event name (e.g. "click") + * @returns {Function} + * @private + */ + _breadcrumbEventHandler: function(evtName) { + var self = this; + return function(evt) { + // reset keypress timeout; e.g. triggering a 'click' after + // a 'keypress' will reset the keypress debounce so that a new + // set of keypresses can be recorded + self._keypressTimeout = null; - function uninstallGlobalHandler() { - if (!_onErrorHandlerInstalled) { - return; - } + // It's possible this handler might trigger multiple times for the same + // event (e.g. event propagation through node ancestors). Ignore if we've + // already captured the event. + if (self._lastCapturedEvent === evt) return; - _window$2.onerror = _oldOnerrorHandler; - _onErrorHandlerInstalled = false; - _oldOnerrorHandler = undefined; - } + self._lastCapturedEvent = evt; - function processLastException() { - var _lastExceptionStack = lastExceptionStack, - _lastArgs = lastArgs; - lastArgs = null; - lastExceptionStack = null; - lastException = null; - notifyHandlers.apply(null, [_lastExceptionStack, false].concat(_lastArgs)); - } - /** - * Reports an unhandled Error to TraceKit. - * @param {Error} ex - * @param {?boolean} rethrow If false, do not re-throw the exception. - * Only used for window.onerror to not cause an infinite loop of - * rethrowing. - */ - - - function report(ex, rethrow) { - var args = _slice.call(arguments, 1); - - if (lastExceptionStack) { - if (lastException === ex) { - return; // already caught by an inner catch block, ignore - } else { - processLastException(); - } - } - - var stack = TraceKit.computeStackTrace(ex); - lastExceptionStack = stack; - lastException = ex; - lastArgs = args; // If the stack trace is incomplete, wait for 2 seconds for - // slow slow IE to see if onerror occurs or not before reporting - // this exception; otherwise, we will end up with an incomplete - // stack trace - - setTimeout(function () { - if (lastException === ex) { - processLastException(); - } - }, stack.incomplete ? 2000 : 0); - - if (rethrow !== false) { - throw ex; // re-throw to propagate to the top level (and cause window.onerror) - } - } - - report.subscribe = subscribe; - report.unsubscribe = unsubscribe; - report.uninstall = unsubscribeAll; - return report; -}(); -/** - * TraceKit.computeStackTrace: cross-browser stack traces in JavaScript - * - * Syntax: - * s = TraceKit.computeStackTrace(exception) // consider using TraceKit.report instead (see below) - * Returns: - * s.name - exception name - * s.message - exception message - * s.stack[i].url - JavaScript or HTML file URL - * s.stack[i].func - function name, or empty for anonymous functions (if guessing did not work) - * s.stack[i].args - arguments passed to the function, if known - * s.stack[i].line - line number, if known - * s.stack[i].column - column number, if known - * - * Supports: - * - Firefox: full stack trace with line numbers and unreliable column - * number on top frame - * - Opera 10: full stack trace with line and column numbers - * - Opera 9-: full stack trace with line numbers - * - Chrome: full stack trace with line and column numbers - * - Safari: line and column number for the topmost stacktrace element - * only - * - IE: no line numbers whatsoever - * - * Tries to guess names of anonymous functions by looking for assignments - * in the source code. In IE and Safari, we have to guess source file names - * by searching for function bodies inside all page scripts. This will not - * work for scripts that are loaded cross-domain. - * Here be dragons: some function names may be guessed incorrectly, and - * duplicate functions may be mismatched. - * - * TraceKit.computeStackTrace should only be used for tracing purposes. - * Logging of unhandled exceptions should be done with TraceKit.report, - * which builds on top of TraceKit.computeStackTrace and provides better - * IE support by utilizing the window.onerror event to retrieve information - * about the top of the stack. - * - * Note: In IE and Safari, no stack trace is recorded on the Error object, - * so computeStackTrace instead walks its *own* chain of callers. - * This means that: - * * in Safari, some methods may be missing from the stack trace; - * * in IE, the topmost function in the stack trace will always be the - * caller of computeStackTrace. - * - * This is okay for tracing (because you are likely to be calling - * computeStackTrace from the function you want to be the topmost element - * of the stack trace anyway), but not okay for logging unhandled - * exceptions (because your catch block will likely be far away from the - * inner function that actually caused the exception). - * - */ - - -TraceKit.computeStackTrace = function computeStackTraceWrapper() { - // Contents of Exception in various browsers. - // - // SAFARI: - // ex.message = Can't find variable: qq - // ex.line = 59 - // ex.sourceId = 580238192 - // ex.sourceURL = http://... - // ex.expressionBeginOffset = 96 - // ex.expressionCaretOffset = 98 - // ex.expressionEndOffset = 98 - // ex.name = ReferenceError - // - // FIREFOX: - // ex.message = qq is not defined - // ex.fileName = http://... - // ex.lineNumber = 59 - // ex.columnNumber = 69 - // ex.stack = ...stack trace... (see the example below) - // ex.name = ReferenceError - // - // CHROME: - // ex.message = qq is not defined - // ex.name = ReferenceError - // ex.type = not_defined - // ex.arguments = ['aa'] - // ex.stack = ...stack trace... - // - // INTERNET EXPLORER: - // ex.message = ... - // ex.name = ReferenceError - // - // OPERA: - // ex.message = ...message... (see the example below) - // ex.name = ReferenceError - // ex.opera#sourceloc = 11 (pretty much useless, duplicates the info in ex.message) - // ex.stacktrace = n/a; see 'opera:config#UserPrefs|Exceptions Have Stacktrace' - - /** - * Computes stack trace information from the stack property. - * Chrome and Gecko use this property. - * @param {Error} ex - * @return {?Object.} Stack trace information. - */ - function computeStackTraceFromStackProp(ex) { - if (typeof ex.stack === 'undefined' || !ex.stack) return; - var chrome = /^\s*at (.*?) ?\(((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i, - gecko = /^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|\[native).*?|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i, - winjs = /^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i, - // Used to additionally parse URL/line/column from eval frames - geckoEval = /(\S+) line (\d+)(?: > eval line \d+)* > eval/i, - chromeEval = /\((\S*)(?::(\d+))(?::(\d+))\)/, - lines = ex.stack.split('\n'), - stack = [], - submatch, - parts, - element, - reference = /^(.*) is undefined$/.exec(ex.message); - - for (var i = 0, j = lines.length; i < j; ++i) { - if (parts = chrome.exec(lines[i])) { - var isNative = parts[2] && parts[2].indexOf('native') === 0; // start of line - - var isEval = parts[2] && parts[2].indexOf('eval') === 0; // start of line - - if (isEval && (submatch = chromeEval.exec(parts[2]))) { - // throw out eval line/column and use top-most line/column number - parts[2] = submatch[1]; // url - - parts[3] = submatch[2]; // line - - parts[4] = submatch[3]; // column - } - - element = { - url: !isNative ? parts[2] : null, - func: parts[1] || UNKNOWN_FUNCTION, - args: isNative ? [parts[2]] : [], - line: parts[3] ? +parts[3] : null, - column: parts[4] ? +parts[4] : null - }; - } else if (parts = winjs.exec(lines[i])) { - element = { - url: parts[2], - func: parts[1] || UNKNOWN_FUNCTION, - args: [], - line: +parts[3], - column: parts[4] ? +parts[4] : null - }; - } else if (parts = gecko.exec(lines[i])) { - var isEval = parts[3] && parts[3].indexOf(' > eval') > -1; - - if (isEval && (submatch = geckoEval.exec(parts[3]))) { - // throw out eval line/column and use top-most line number - parts[3] = submatch[1]; - parts[4] = submatch[2]; - parts[5] = null; // no column when eval - } else if (i === 0 && !parts[5] && typeof ex.columnNumber !== 'undefined') { - // FireFox uses this awesome columnNumber property for its top frame - // Also note, Firefox's column number is 0-based and everything else expects 1-based, - // so adding 1 - // NOTE: this hack doesn't work if top-most frame is eval - stack[0].column = ex.columnNumber + 1; - } - - element = { - url: parts[3], - func: parts[1] || UNKNOWN_FUNCTION, - args: parts[2] ? parts[2].split(',') : [], - line: parts[4] ? +parts[4] : null, - column: parts[5] ? +parts[5] : null - }; - } else { - continue; - } - - if (!element.func && element.line) { - element.func = UNKNOWN_FUNCTION; - } - - stack.push(element); - } - - if (!stack.length) { - return null; - } - - return { - name: ex.name, - message: ex.message, - url: getLocationHref(), - stack: stack - }; - } - /** - * Adds information about the first frame to incomplete stack traces. - * Safari and IE require this to get complete data on the first frame. - * @param {Object.} stackInfo Stack trace information from - * one of the compute* methods. - * @param {string} url The URL of the script that caused an error. - * @param {(number|string)} lineNo The line number of the script that - * caused an error. - * @param {string=} message The error generated by the browser, which - * hopefully contains the name of the object that caused the error. - * @return {boolean} Whether or not the stack information was - * augmented. - */ - - - function augmentStackTraceWithInitialElement(stackInfo, url, lineNo, message) { - var initial = { - url: url, - line: lineNo - }; - - if (initial.url && initial.line) { - stackInfo.incomplete = false; - - if (!initial.func) { - initial.func = UNKNOWN_FUNCTION; - } - - if (stackInfo.stack.length > 0) { - if (stackInfo.stack[0].url === initial.url) { - if (stackInfo.stack[0].line === initial.line) { - return false; // already in stack trace - } else if (!stackInfo.stack[0].line && stackInfo.stack[0].func === initial.func) { - stackInfo.stack[0].line = initial.line; - return false; - } - } - } - - stackInfo.stack.unshift(initial); - stackInfo.partial = true; - return true; - } else { - stackInfo.incomplete = true; - } - - return false; - } - /** - * Computes stack trace information by walking the arguments.caller - * chain at the time the exception occurred. This will cause earlier - * frames to be missed but is the only way to get any stack trace in - * Safari and IE. The top frame is restored by - * {@link augmentStackTraceWithInitialElement}. - * @param {Error} ex - * @return {?Object.} Stack trace information. - */ - - - function computeStackTraceByWalkingCallerChain(ex, depth) { - var functionName = /function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i, - stack = [], - funcs = {}, - recursion = false, - parts, - item; - - for (var curr = computeStackTraceByWalkingCallerChain.caller; curr && !recursion; curr = curr.caller) { - if (curr === computeStackTrace || curr === TraceKit.report) { - // console.log('skipping internal function'); - continue; - } - - item = { - url: null, - func: UNKNOWN_FUNCTION, - line: null, - column: null - }; - - if (curr.name) { - item.func = curr.name; - } else if (parts = functionName.exec(curr.toString())) { - item.func = parts[1]; - } - - if (typeof item.func === 'undefined') { - try { - item.func = parts.input.substring(0, parts.input.indexOf('{')); - } catch (e) {} - } - - if (funcs['' + curr]) { - recursion = true; - } else { - funcs['' + curr] = true; + // try/catch both: + // - accessing evt.target (see getsentry/raven-js#838, #768) + // - `htmlTreeAsString` because it's complex, and just accessing the DOM incorrectly + // can throw an exception in some circumstances. + var target; + try { + target = htmlTreeAsString(evt.target); + } catch (e) { + target = ''; } - stack.push(item); - } - - if (depth) { - // console.log('depth is ' + depth); - // console.log('stack is ' + stack.length); - stack.splice(0, depth); - } - - var result = { - name: ex.name, - message: ex.message, - url: getLocationHref(), - stack: stack - }; - augmentStackTraceWithInitialElement(result, ex.sourceURL || ex.fileName, ex.line || ex.lineNumber, ex.message || ex.description); - return result; - } - /** - * Computes a stack trace for an exception. - * @param {Error} ex - * @param {(string|number)=} depth - */ - - - function computeStackTrace(ex, depth) { - var stack = null; - depth = depth == null ? 0 : +depth; + self.captureBreadcrumb({ + category: 'ui.' + evtName, // e.g. ui.click, ui.input + message: target + }); + }; + }, - try { - stack = computeStackTraceFromStackProp(ex); + /** + * Wraps addEventListener to capture keypress UI events + * @returns {Function} + * @private + */ + _keypressEventHandler: function() { + var self = this, + debounceDuration = 1000; // milliseconds - if (stack) { - return stack; - } - } catch (e) { - if (TraceKit.debug) { - throw e; + // TODO: if somehow user switches keypress target before + // debounce timeout is triggered, we will only capture + // a single breadcrumb from the FIRST target (acceptable?) + return function(evt) { + var target; + try { + target = evt.target; + } catch (e) { + // just accessing event properties can throw an exception in some rare circumstances + // see: https://github.com/getsentry/raven-js/issues/838 + return; } - } + var tagName = target && target.tagName; - try { - stack = computeStackTraceByWalkingCallerChain(ex, depth + 1); + // only consider keypress events on actual input elements + // this will disregard keypresses targeting body (e.g. tabbing + // through elements, hotkeys, etc) + if ( + !tagName || + (tagName !== 'INPUT' && tagName !== 'TEXTAREA' && !target.isContentEditable) + ) + return; - if (stack) { - return stack; - } - } catch (e) { - if (TraceKit.debug) { - throw e; + // record first keypress in a series, but ignore subsequent + // keypresses until debounce clears + var timeout = self._keypressTimeout; + if (!timeout) { + self._breadcrumbEventHandler('input')(evt); } - } - - return { - name: ex.name, - message: ex.message, - url: getLocationHref() + clearTimeout(timeout); + self._keypressTimeout = setTimeout(function() { + self._keypressTimeout = null; + }, debounceDuration); }; - } - - computeStackTrace.augmentStackTraceWithInitialElement = augmentStackTraceWithInitialElement; - computeStackTrace.computeStackTraceFromStackProp = computeStackTraceFromStackProp; - return computeStackTrace; -}(); + }, -var tracekit = TraceKit; + /** + * Captures a breadcrumb of type "navigation", normalizing input URLs + * @param to the originating URL + * @param from the target URL + * @private + */ + _captureUrlChange: function(from, to) { + var parsedLoc = parseUrl(this._location.href); + var parsedTo = parseUrl(to); + var parsedFrom = parseUrl(from); -var stringify_1 = createCommonjsModule(function (module, exports) { - /* - json-stringify-safe - Like JSON.stringify, but doesn't throw on circular references. - - Originally forked from https://github.com/isaacs/json-stringify-safe - version 5.0.1 on 3/8/2017 and modified to handle Errors serialization - and IE8 compatibility. Tests for this are in test/vendor. - - ISC license: https://github.com/isaacs/json-stringify-safe/blob/master/LICENSE - */ - exports = module.exports = stringify; - exports.getSerialize = serializer; - - function indexOf(haystack, needle) { - for (var i = 0; i < haystack.length; ++i) { - if (haystack[i] === needle) return i; - } - - return -1; - } + // because onpopstate only tells you the "new" (to) value of location.href, and + // not the previous (from) value, we need to track the value of the current URL + // state ourselves + this._lastHref = to; - function stringify(obj, replacer, spaces, cycleReplacer) { - return JSON.stringify(obj, serializer(replacer, cycleReplacer), spaces); - } // https://github.com/ftlabs/js-abbreviate/blob/fa709e5f139e7770a71827b1893f22418097fbda/index.js#L95-L106 + // Use only the path component of the URL if the URL matches the current + // document (almost all the time when using pushState) + if (parsedLoc.protocol === parsedTo.protocol && parsedLoc.host === parsedTo.host) + to = parsedTo.relative; + if (parsedLoc.protocol === parsedFrom.protocol && parsedLoc.host === parsedFrom.host) + from = parsedFrom.relative; + this.captureBreadcrumb({ + category: 'navigation', + data: { + to: to, + from: from + } + }); + }, - function stringifyError(value) { - var err = { - // These properties are implemented as magical getters and don't show up in for in - stack: value.stack, - message: value.message, - name: value.name + _patchFunctionToString: function() { + var self = this; + self._originalFunctionToString = Function.prototype.toString; + // eslint-disable-next-line no-extend-native + Function.prototype.toString = function() { + if (typeof this === 'function' && this.__raven__) { + return self._originalFunctionToString.apply(this.__orig__, arguments); + } + return self._originalFunctionToString.apply(this, arguments); }; + }, - for (var i in value) { - if (Object.prototype.hasOwnProperty.call(value, i)) { - err[i] = value[i]; - } + _unpatchFunctionToString: function() { + if (this._originalFunctionToString) { + // eslint-disable-next-line no-extend-native + Function.prototype.toString = this._originalFunctionToString; } + }, - return err; - } + /** + * Wrap timer functions and event targets to catch errors and provide + * better metadata. + */ + _instrumentTryCatch: function() { + var self = this; - function serializer(replacer, cycleReplacer) { - var stack = []; - var keys = []; + var wrappedBuiltIns = self._wrappedBuiltIns; - if (cycleReplacer == null) { - cycleReplacer = function cycleReplacer(key, value) { - if (stack[0] === value) { - return '[Circular ~]'; + function wrapTimeFn(orig) { + return function(fn, t) { + // preserve arity + // Make a copy of the arguments to prevent deoptimization + // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments + var args = new Array(arguments.length); + for (var i = 0; i < args.length; ++i) { + args[i] = arguments[i]; + } + var originalCallback = args[0]; + if (isFunction(originalCallback)) { + args[0] = self.wrap(originalCallback); } - return '[Circular ~.' + keys.slice(0, indexOf(stack, value)).join('.') + ']'; + // IE < 9 doesn't support .call/.apply on setInterval/setTimeout, but it + // also supports only two arguments and doesn't care what this is, so we + // can just call the original function directly. + if (orig.apply) { + return orig.apply(this, args); + } else { + return orig(args[0], args[1]); + } }; } - return function (key, value) { - if (stack.length > 0) { - var thisPos = indexOf(stack, this); - ~thisPos ? stack.splice(thisPos + 1) : stack.push(this); - ~thisPos ? keys.splice(thisPos, Infinity, key) : keys.push(key); - - if (~indexOf(stack, value)) { - value = cycleReplacer.call(this, key, value); - } - } else { - stack.push(value); - } - - return replacer == null ? value instanceof Error ? stringifyError(value) : value : replacer.call(this, key, value); - }; - } -}); -var stringify_2 = stringify_1.getSerialize; - -function RavenConfigError(message) { - this.name = 'RavenConfigError'; - this.message = message; -} - -RavenConfigError.prototype = new Error(); -RavenConfigError.prototype.constructor = RavenConfigError; -var configError = RavenConfigError; - -var wrapMethod = function wrapMethod(console, level, callback) { - var originalConsoleLevel = console[level]; - var originalConsole = console; - - if (!(level in console)) { - return; - } - - var sentryLevel = level === 'warn' ? 'warning' : level; + var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; - console[level] = function () { - var args = [].slice.call(arguments); - var msg = utils.safeJoin(args, ' '); - var data = { - level: sentryLevel, - logger: 'console', - extra: { - arguments: args - } - }; + function wrapEventTarget(global) { + var proto = _window[global] && _window[global].prototype; + if (proto && proto.hasOwnProperty && proto.hasOwnProperty('addEventListener')) { + fill( + proto, + 'addEventListener', + function(orig) { + return function(evtName, fn, capture, secure) { + // preserve arity + try { + if (fn && fn.handleEvent) { + fn.handleEvent = self.wrap(fn.handleEvent); + } + } catch (err) { + // can sometimes get 'Permission denied to access property "handle Event' + } - if (level === 'assert') { - if (args[0] === false) { - // Default browsers message - msg = 'Assertion failed: ' + (utils.safeJoin(args.slice(1), ' ') || 'console.assert'); - data.extra.arguments = args.slice(1); - callback && callback(msg, data); + // More breadcrumb DOM capture ... done here and not in `_instrumentBreadcrumbs` + // so that we don't have more than one wrapper function + var before, clickHandler, keypressHandler; + + if ( + autoBreadcrumbs && + autoBreadcrumbs.dom && + (global === 'EventTarget' || global === 'Node') + ) { + // NOTE: generating multiple handlers per addEventListener invocation, should + // revisit and verify we can just use one (almost certainly) + clickHandler = self._breadcrumbEventHandler('click'); + keypressHandler = self._keypressEventHandler(); + before = function(evt) { + // need to intercept every DOM event in `before` argument, in case that + // same wrapped method is re-used for different events (e.g. mousemove THEN click) + // see #724 + if (!evt) return; + + var eventType; + try { + eventType = evt.type; + } catch (e) { + // just accessing event properties can throw an exception in some rare circumstances + // see: https://github.com/getsentry/raven-js/issues/838 + return; + } + if (eventType === 'click') return clickHandler(evt); + else if (eventType === 'keypress') return keypressHandler(evt); + }; + } + return orig.call( + this, + evtName, + self.wrap(fn, undefined, before), + capture, + secure + ); + }; + }, + wrappedBuiltIns + ); + fill( + proto, + 'removeEventListener', + function(orig) { + return function(evt, fn, capture, secure) { + try { + fn = fn && (fn.__raven_wrapper__ ? fn.__raven_wrapper__ : fn); + } catch (e) { + // ignore, accessing __raven_wrapper__ will throw in some Selenium environments + } + return orig.call(this, evt, fn, capture, secure); + }; + }, + wrappedBuiltIns + ); } - } else { - callback && callback(msg, data); - } // this fails for some browsers. :( - - - if (originalConsoleLevel) { - // IE9 doesn't allow calling apply on console functions directly - // See: https://stackoverflow.com/questions/5472938/does-ie9-support-console-log-and-is-it-a-real-function#answer-5473193 - Function.prototype.apply.call(originalConsoleLevel, originalConsole, args); } - }; -}; - -var console$1 = { - wrapMethod: wrapMethod -}; - -/*global XDomainRequest:false */ - -var isError = utils.isError; -var isObject = utils.isObject; -var isErrorEvent = utils.isErrorEvent; -var isUndefined = utils.isUndefined; -var isFunction = utils.isFunction; -var isString = utils.isString; -var isArray = utils.isArray; -var isEmptyObject = utils.isEmptyObject; -var each = utils.each; -var objectMerge = utils.objectMerge; -var truncate = utils.truncate; -var objectFrozen = utils.objectFrozen; -var hasKey = utils.hasKey; -var joinRegExp = utils.joinRegExp; -var urlencode = utils.urlencode; -var uuid4 = utils.uuid4; -var htmlTreeAsString = utils.htmlTreeAsString; -var isSameException = utils.isSameException; -var isSameStacktrace = utils.isSameStacktrace; -var parseUrl = utils.parseUrl; -var fill = utils.fill; -var supportsFetch = utils.supportsFetch; -var wrapConsoleMethod = console$1.wrapMethod; -var dsnKeys = 'source protocol user pass host port path'.split(' '); -var dsnPattern = /^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/; - -function now() { - return +new Date(); -} // This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) - - -var _window$1 = typeof window !== 'undefined' ? window : typeof commonjsGlobal !== 'undefined' ? commonjsGlobal : typeof self !== 'undefined' ? self : {}; - -var _document = _window$1.document; -var _navigator = _window$1.navigator; - -function keepOriginalCallback(original, callback) { - return isFunction(callback) ? function (data) { - return callback(data, original); - } : callback; -} // First, check for JSON support -// If there is no JSON, we no-op the core features of Raven -// since JSON is required to encode the payload + fill(_window, 'setTimeout', wrapTimeFn, wrappedBuiltIns); + fill(_window, 'setInterval', wrapTimeFn, wrappedBuiltIns); + if (_window.requestAnimationFrame) { + fill( + _window, + 'requestAnimationFrame', + function(orig) { + return function(cb) { + return orig(self.wrap(cb)); + }; + }, + wrappedBuiltIns + ); + } -function Raven$1() { - this._hasJSON = !!(_typeof(JSON) === 'object' && JSON.stringify); // Raven can run in contexts where there's no document (react-native) + // event targets borrowed from bugsnag-js: + // https://github.com/bugsnag/bugsnag-js/blob/master/src/bugsnag.js#L666 + var eventTargets = [ + 'EventTarget', + 'Window', + 'Node', + 'ApplicationCache', + 'AudioTrackList', + 'ChannelMergerNode', + 'CryptoOperation', + 'EventSource', + 'FileReader', + 'HTMLUnknownElement', + 'IDBDatabase', + 'IDBRequest', + 'IDBTransaction', + 'KeyOperation', + 'MediaController', + 'MessagePort', + 'ModalWindow', + 'Notification', + 'SVGElementInstance', + 'Screen', + 'TextTrack', + 'TextTrackCue', + 'TextTrackList', + 'WebSocket', + 'WebSocketWorker', + 'Worker', + 'XMLHttpRequest', + 'XMLHttpRequestEventTarget', + 'XMLHttpRequestUpload' + ]; + for (var i = 0; i < eventTargets.length; i++) { + wrapEventTarget(eventTargets[i]); + } + }, - this._hasDocument = !isUndefined(_document); - this._hasNavigator = !isUndefined(_navigator); - this._lastCapturedException = null; - this._lastData = null; - this._lastEventId = null; - this._globalServer = null; - this._globalKey = null; - this._globalProject = null; - this._globalContext = {}; - this._globalOptions = { - // SENTRY_RELEASE can be injected by https://github.com/getsentry/sentry-webpack-plugin - release: _window$1.SENTRY_RELEASE && _window$1.SENTRY_RELEASE.id, - logger: 'javascript', - ignoreErrors: [], - ignoreUrls: [], - whitelistUrls: [], - includePaths: [], - headers: null, - collectWindowErrors: true, - maxMessageLength: 0, - // By default, truncates URL values to 250 chars - maxUrlLength: 250, - stackTraceLimit: 50, - autoBreadcrumbs: true, - instrument: true, - sampleRate: 1 - }; - this._fetchDefaults = { - method: 'POST', - keepalive: true, - referrerPolicy: 'origin' - }; - this._ignoreOnError = 0; - this._isRavenInstalled = false; - this._originalErrorStackTraceLimit = Error.stackTraceLimit; // capture references to window.console *and* all its methods first - // before the console plugin has a chance to monkey patch + /** + * Instrument browser built-ins w/ breadcrumb capturing + * - XMLHttpRequests + * - DOM interactions (click/typing) + * - window.location changes + * - console + * + * Can be disabled or individually configured via the `autoBreadcrumbs` config option + */ + _instrumentBreadcrumbs: function() { + var self = this; + var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; - this._originalConsole = _window$1.console || {}; - this._originalConsoleMethods = {}; - this._plugins = []; - this._startTime = now(); - this._wrappedBuiltIns = []; - this._breadcrumbs = []; - this._lastCapturedEvent = null; - this._keypressTimeout; - this._location = _window$1.location; - this._lastHref = this._location && this._location.href; + var wrappedBuiltIns = self._wrappedBuiltIns; - this._resetBackoff(); // eslint-disable-next-line guard-for-in + function wrapProp(prop, xhr) { + if (prop in xhr && isFunction(xhr[prop])) { + fill(xhr, prop, function(orig) { + return self.wrap(orig); + }); // intentionally don't track filled methods on XHR instances + } + } + if (autoBreadcrumbs.xhr && 'XMLHttpRequest' in _window) { + var xhrproto = _window.XMLHttpRequest && _window.XMLHttpRequest.prototype; + fill( + xhrproto, + 'open', + function(origOpen) { + return function(method, url) { + // preserve arity - for (var method in this._originalConsole) { - this._originalConsoleMethods[method] = this._originalConsole[method]; - } -} -/* - * The core Raven singleton - * - * @this {Raven} - */ + // if Sentry key appears in URL, don't capture + if (isString(url) && url.indexOf(self._globalKey) === -1) { + this.__raven_xhr = { + method: method, + url: url, + status_code: null + }; + } + return origOpen.apply(this, arguments); + }; + }, + wrappedBuiltIns + ); + + fill( + xhrproto, + 'send', + function(origSend) { + return function() { + // preserve arity + var xhr = this; -Raven$1.prototype = { - // Hardcode version string so that raven source can be loaded directly via - // webpack (using a build step causes webpack #1617). Grunt verifies that - // this value matches package.json during build. - // See: https://github.com/getsentry/raven-js/issues/465 - VERSION: '3.22.2', - debug: false, - TraceKit: tracekit, - // alias to TraceKit + function onreadystatechangeHandler() { + if (xhr.__raven_xhr && xhr.readyState === 4) { + try { + // touching statusCode in some platforms throws + // an exception + xhr.__raven_xhr.status_code = xhr.status; + } catch (e) { + /* do nothing */ + } - /* - * Configure Raven with a DSN and extra options - * - * @param {string} dsn The public Sentry DSN - * @param {object} options Set of global options [optional] - * @return {Raven} - */ - config: function config(dsn, options) { - var self = this; + self.captureBreadcrumb({ + type: 'http', + category: 'xhr', + data: xhr.__raven_xhr + }); + } + } - if (self._globalServer) { - this._logDebug('error', 'Error: Raven has already been configured'); + var props = ['onload', 'onerror', 'onprogress']; + for (var j = 0; j < props.length; j++) { + wrapProp(props[j], xhr); + } - return self; + if ('onreadystatechange' in xhr && isFunction(xhr.onreadystatechange)) { + fill( + xhr, + 'onreadystatechange', + function(orig) { + return self.wrap(orig, undefined, onreadystatechangeHandler); + } /* intentionally don't track this instrumentation */ + ); + } else { + // if onreadystatechange wasn't actually set by the page on this xhr, we + // are free to set our own and capture the breadcrumb + xhr.onreadystatechange = onreadystatechangeHandler; + } + + return origSend.apply(this, arguments); + }; + }, + wrappedBuiltIns + ); } - if (!dsn) return self; - var globalOptions = self._globalOptions; // merge in options + if (autoBreadcrumbs.xhr && supportsFetch()) { + fill( + _window, + 'fetch', + function(origFetch) { + return function() { + // preserve arity + // Make a copy of the arguments to prevent deoptimization + // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments + var args = new Array(arguments.length); + for (var i = 0; i < args.length; ++i) { + args[i] = arguments[i]; + } - if (options) { - each(options, function (key, value) { - // tags and extra are special and need to be put into context - if (key === 'tags' || key === 'extra' || key === 'user') { - self._globalContext[key] = value; - } else { - globalOptions[key] = value; - } - }); - } + var fetchInput = args[0]; + var method = 'GET'; + var url; - self.setDSN(dsn); // "Script error." is hard coded into browsers for errors that it can't read. - // this is the result of a script being pulled in from an external domain and CORS. + if (typeof fetchInput === 'string') { + url = fetchInput; + } else if ('Request' in _window && fetchInput instanceof _window.Request) { + url = fetchInput.url; + if (fetchInput.method) { + method = fetchInput.method; + } + } else { + url = '' + fetchInput; + } - globalOptions.ignoreErrors.push(/^Script error\.?$/); - globalOptions.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/); // join regexp rules into one big rule + // if Sentry key appears in URL, don't capture, as it's our own request + if (url.indexOf(self._globalKey) !== -1) { + return origFetch.apply(this, args); + } - globalOptions.ignoreErrors = joinRegExp(globalOptions.ignoreErrors); - globalOptions.ignoreUrls = globalOptions.ignoreUrls.length ? joinRegExp(globalOptions.ignoreUrls) : false; - globalOptions.whitelistUrls = globalOptions.whitelistUrls.length ? joinRegExp(globalOptions.whitelistUrls) : false; - globalOptions.includePaths = joinRegExp(globalOptions.includePaths); - globalOptions.maxBreadcrumbs = Math.max(0, Math.min(globalOptions.maxBreadcrumbs || 100, 100)); // default and hard limit is 100 + if (args[1] && args[1].method) { + method = args[1].method; + } - var autoBreadcrumbDefaults = { - xhr: true, - console: true, - dom: true, - location: true, - sentry: true - }; - var autoBreadcrumbs = globalOptions.autoBreadcrumbs; + var fetchData = { + method: method, + url: url, + status_code: null + }; - if ({}.toString.call(autoBreadcrumbs) === '[object Object]') { - autoBreadcrumbs = objectMerge(autoBreadcrumbDefaults, autoBreadcrumbs); - } else if (autoBreadcrumbs !== false) { - autoBreadcrumbs = autoBreadcrumbDefaults; + return origFetch + .apply(this, args) + .then(function(response) { + fetchData.status_code = response.status; + + self.captureBreadcrumb({ + type: 'http', + category: 'fetch', + data: fetchData + }); + + return response; + }) + ['catch'](function(err) { + // if there is an error performing the request + self.captureBreadcrumb({ + type: 'http', + category: 'fetch', + data: fetchData, + level: 'error' + }); + + throw err; + }); + }; + }, + wrappedBuiltIns + ); } - globalOptions.autoBreadcrumbs = autoBreadcrumbs; - var instrumentDefaults = { - tryCatch: true - }; - var instrument = globalOptions.instrument; - - if ({}.toString.call(instrument) === '[object Object]') { - instrument = objectMerge(instrumentDefaults, instrument); - } else if (instrument !== false) { - instrument = instrumentDefaults; + // Capture breadcrumbs from any click that is unhandled / bubbled up all the way + // to the document. Do this before we instrument addEventListener. + if (autoBreadcrumbs.dom && this._hasDocument) { + if (_document.addEventListener) { + _document.addEventListener('click', self._breadcrumbEventHandler('click'), false); + _document.addEventListener('keypress', self._keypressEventHandler(), false); + } else if (_document.attachEvent) { + // IE8 Compatibility + _document.attachEvent('onclick', self._breadcrumbEventHandler('click')); + _document.attachEvent('onkeypress', self._keypressEventHandler()); + } } - globalOptions.instrument = instrument; - tracekit.collectWindowErrors = !!globalOptions.collectWindowErrors; // return for chaining + // record navigation (URL) changes + // NOTE: in Chrome App environment, touching history.pushState, *even inside + // a try/catch block*, will cause Chrome to output an error to console.error + // borrowed from: https://github.com/angular/angular.js/pull/13945/files + var chrome = _window.chrome; + var isChromePackagedApp = chrome && chrome.app && chrome.app.runtime; + var hasPushAndReplaceState = + !isChromePackagedApp && + _window.history && + history.pushState && + history.replaceState; + if (autoBreadcrumbs.location && hasPushAndReplaceState) { + // TODO: remove onpopstate handler on uninstall() + var oldOnPopState = _window.onpopstate; + _window.onpopstate = function() { + var currentHref = self._location.href; + self._captureUrlChange(self._lastHref, currentHref); - return self; - }, + if (oldOnPopState) { + return oldOnPopState.apply(this, arguments); + } + }; - /* - * Installs a global window.onerror error handler - * to capture and report uncaught exceptions. - * At this point, install() is required to be called due - * to the way TraceKit is set up. - * - * @return {Raven} - */ - install: function install() { - var self = this; + var historyReplacementFunction = function(origHistFunction) { + // note history.pushState.length is 0; intentionally not declaring + // params to preserve 0 arity + return function(/* state, title, url */) { + var url = arguments.length > 2 ? arguments[2] : undefined; - if (self.isSetup() && !self._isRavenInstalled) { - tracekit.report.subscribe(function () { - self._handleOnErrorStackInfo.apply(self, arguments); - }); + // url argument is optional + if (url) { + // coerce to string (this is what pushState does) + self._captureUrlChange(self._lastHref, url + ''); + } - self._patchFunctionToString(); + return origHistFunction.apply(this, arguments); + }; + }; - if (self._globalOptions.instrument && self._globalOptions.instrument.tryCatch) { - self._instrumentTryCatch(); - } + fill(history, 'pushState', historyReplacementFunction, wrappedBuiltIns); + fill(history, 'replaceState', historyReplacementFunction, wrappedBuiltIns); + } - if (self._globalOptions.autoBreadcrumbs) self._instrumentBreadcrumbs(); // Install all of the plugins + if (autoBreadcrumbs.console && 'console' in _window && console.log) { + // console + var consoleMethodCallback = function(msg, data) { + self.captureBreadcrumb({ + message: msg, + level: data.level, + category: 'console' + }); + }; - self._drainPlugins(); + each(['debug', 'info', 'warn', 'error', 'log'], function(_, level) { + wrapConsoleMethod(console, level, consoleMethodCallback); + }); + } + }, - self._isRavenInstalled = true; + _restoreBuiltIns: function() { + // restore any wrapped builtins + var builtin; + while (this._wrappedBuiltIns.length) { + builtin = this._wrappedBuiltIns.shift(); + + var obj = builtin[0], + name = builtin[1], + orig = builtin[2]; + + obj[name] = orig; } + }, - Error.stackTraceLimit = self._globalOptions.stackTraceLimit; - return this; + _restoreConsole: function() { + // eslint-disable-next-line guard-for-in + for (var method in this._originalConsoleMethods) { + this._originalConsole[method] = this._originalConsoleMethods[method]; + } }, - /* - * Set the DSN (can be called multiple time unlike config) - * - * @param {string} dsn The public Sentry DSN - */ - setDSN: function setDSN(dsn) { - var self = this, - uri = self._parseDSN(dsn), - lastSlash = uri.path.lastIndexOf('/'), - path = uri.path.substr(1, lastSlash); + _drainPlugins: function() { + var self = this; - self._dsn = dsn; - self._globalKey = uri.user; - self._globalSecret = uri.pass && uri.pass.substr(1); - self._globalProject = uri.path.substr(lastSlash + 1); - self._globalServer = self._getGlobalServer(uri); - self._globalEndpoint = self._globalServer + '/' + path + 'api/' + self._globalProject + '/store/'; // Reset backoff state since we may be pointing at a - // new project/server + // FIX ME TODO + each(this._plugins, function(_, plugin) { + var installer = plugin[0]; + var args = plugin[1]; + installer.apply(self, [self].concat(args)); + }); + }, - this._resetBackoff(); + _parseDSN: function(str) { + var m = dsnPattern.exec(str), + dsn = {}, + i = 7; + + try { + while (i--) dsn[dsnKeys[i]] = m[i] || ''; + } catch (e) { + throw new RavenConfigError('Invalid DSN: ' + str); + } + + if (dsn.pass && !this._globalOptions.allowSecretKey) { + throw new RavenConfigError( + 'Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key' + ); + } + + return dsn; }, - /* - * Wrap code within a context so Raven can capture errors - * reliably across domains that is executed immediately. - * - * @param {object} options A specific set of options for this context [optional] - * @param {function} func The callback to be immediately executed within the context - * @param {array} args An array of arguments to be called with the callback [optional] - */ - context: function context(options, func, args) { - if (isFunction(options)) { - args = func || []; - func = options; - options = undefined; + _getGlobalServer: function(uri) { + // assemble the endpoint from the uri pieces + var globalServer = '//' + uri.host + (uri.port ? ':' + uri.port : ''); + + if (uri.protocol) { + globalServer = uri.protocol + ':' + globalServer; } + return globalServer; + }, - return this.wrap(options, func).apply(this, args); + _handleOnErrorStackInfo: function() { + // if we are intentionally ignoring errors via onerror, bail out + if (!this._ignoreOnError) { + this._handleStackInfo.apply(this, arguments); + } }, - /* - * Wrap code within a context and returns back a new function to be executed - * - * @param {object} options A specific set of options for this context [optional] - * @param {function} func The function to be wrapped in a new context - * @param {function} func A function to call before the try/catch wrapper [optional, private] - * @return {function} The newly wrapped functions with a context - */ - wrap: function wrap(options, func, _before) { - var self = this; // 1 argument has been passed, and it's not a function - // so just return it + _handleStackInfo: function(stackInfo, options) { + var frames = this._prepareFrames(stackInfo, options); - if (isUndefined(func) && !isFunction(options)) { - return options; - } // options is optional + this._triggerEvent('handle', { + stackInfo: stackInfo, + options: options + }); + this._processException( + stackInfo.name, + stackInfo.message, + stackInfo.url, + stackInfo.lineno, + frames, + options + ); + }, - if (isFunction(options)) { - func = options; - options = undefined; - } // At this point, we've passed along 2 arguments, and the second one - // is not a function either, so we'll just return the second argument. + _prepareFrames: function(stackInfo, options) { + var self = this; + var frames = []; + if (stackInfo.stack && stackInfo.stack.length) { + each(stackInfo.stack, function(i, stack) { + var frame = self._normalizeFrame(stack, stackInfo.url); + if (frame) { + frames.push(frame); + } + }); + // e.g. frames captured via captureMessage throw + if (options && options.trimHeadFrames) { + for (var j = 0; j < options.trimHeadFrames && j < frames.length; j++) { + frames[j].in_app = false; + } + } + } + frames = frames.slice(0, this._globalOptions.stackTraceLimit); + return frames; + }, - if (!isFunction(func)) { - return func; - } // We don't wanna wrap it twice! + _normalizeFrame: function(frame, stackInfoUrl) { + // normalize the frames data + var normalized = { + filename: frame.url, + lineno: frame.line, + colno: frame.column, + function: frame.func || '?' + }; + // Case when we don't have any information about the error + // E.g. throwing a string or raw object, instead of an `Error` in Firefox + // Generating synthetic error doesn't add any value here + // + // We should probably somehow let a user know that they should fix their code + if (!frame.url) { + normalized.filename = stackInfoUrl; // fallback to whole stacks url from onerror handler + } - try { - if (func.__raven__) { - return func; - } // If this has already been wrapped in the past, return that + normalized.in_app = !// determine if an exception came from outside of our app + // first we check the global includePaths list. + ( + (!!this._globalOptions.includePaths.test && + !this._globalOptions.includePaths.test(normalized.filename)) || + // Now we check for fun, if the function name is Raven or TraceKit + /(Raven|TraceKit)\./.test(normalized['function']) || + // finally, we do a last ditch effort and check for raven.min.js + /raven\.(min\.)?js$/.test(normalized.filename) + ); + return normalized; + }, - if (func.__raven_wrapper__) { - return func.__raven_wrapper__; - } - } catch (e) { - // Just accessing custom props in some Selenium environments - // can cause a "Permission denied" exception (see raven-js#495). - // Bail on wrapping and return the function as-is (defers to window.onerror). - return func; + _processException: function(type, message, fileurl, lineno, frames, options) { + var prefixedMessage = (type ? type + ': ' : '') + (message || ''); + if ( + !!this._globalOptions.ignoreErrors.test && + (this._globalOptions.ignoreErrors.test(message) || + this._globalOptions.ignoreErrors.test(prefixedMessage)) + ) { + return; } - function wrapped() { - var args = [], - i = arguments.length, - deep = !options || options && options.deep !== false; + var stacktrace; - if (_before && isFunction(_before)) { - _before.apply(this, arguments); - } // Recursively wrap all of a function's arguments that are - // functions themselves. + if (frames && frames.length) { + fileurl = frames[0].filename || fileurl; + // Sentry expects frames oldest to newest + // and JS sends them as newest to oldest + frames.reverse(); + stacktrace = {frames: frames}; + } else if (fileurl) { + stacktrace = { + frames: [ + { + filename: fileurl, + lineno: lineno, + in_app: true + } + ] + }; + } + if ( + !!this._globalOptions.ignoreUrls.test && + this._globalOptions.ignoreUrls.test(fileurl) + ) { + return; + } - while (i--) { - args[i] = deep ? self.wrap(options, arguments[i]) : arguments[i]; - } + if ( + !!this._globalOptions.whitelistUrls.test && + !this._globalOptions.whitelistUrls.test(fileurl) + ) { + return; + } - try { - // Attempt to invoke user-land function - // NOTE: If you are a Sentry user, and you are seeing this stack frame, it - // means Raven caught an error invoking your application code. This is - // expected behavior and NOT indicative of a bug with Raven.js. - return func.apply(this, args); - } catch (e) { - self._ignoreNextOnError(); + var data = objectMerge( + { + // sentry.interfaces.Exception + exception: { + values: [ + { + type: type, + value: message, + stacktrace: stacktrace + } + ] + }, + culprit: fileurl + }, + options + ); - self.captureException(e, options); - throw e; - } - } // copy over properties of the old function + // Fire away! + this._send(data); + }, + _trimPacket: function(data) { + // For now, we only want to truncate the two different messages + // but this could/should be expanded to just trim everything + var max = this._globalOptions.maxMessageLength; + if (data.message) { + data.message = truncate(data.message, max); + } + if (data.exception) { + var exception = data.exception.values[0]; + exception.value = truncate(exception.value, max); + } - for (var property in func) { - if (hasKey(func, property)) { - wrapped[property] = func[property]; + var request = data.request; + if (request) { + if (request.url) { + request.url = truncate(request.url, this._globalOptions.maxUrlLength); + } + if (request.Referer) { + request.Referer = truncate(request.Referer, this._globalOptions.maxUrlLength); } } - wrapped.prototype = func.prototype; - func.__raven_wrapper__ = wrapped; // Signal that this function has been wrapped/filled already - // for both debugging and to prevent it to being wrapped/filled twice + if (data.breadcrumbs && data.breadcrumbs.values) + this._trimBreadcrumbs(data.breadcrumbs); - wrapped.__raven__ = true; - wrapped.__orig__ = func; - return wrapped; + return data; }, - /* - * Uninstalls the global error handler. - * - * @return {Raven} - */ - uninstall: function uninstall() { - tracekit.report.uninstall(); + /** + * Truncate breadcrumb values (right now just URLs) + */ + _trimBreadcrumbs: function(breadcrumbs) { + // known breadcrumb properties with urls + // TODO: also consider arbitrary prop values that start with (https?)?:// + var urlProps = ['to', 'from', 'url'], + urlProp, + crumb, + data; - this._unpatchFunctionToString(); + for (var i = 0; i < breadcrumbs.values.length; ++i) { + crumb = breadcrumbs.values[i]; + if ( + !crumb.hasOwnProperty('data') || + !isObject(crumb.data) || + objectFrozen(crumb.data) + ) + continue; - this._restoreBuiltIns(); + data = objectMerge({}, crumb.data); + for (var j = 0; j < urlProps.length; ++j) { + urlProp = urlProps[j]; + if (data.hasOwnProperty(urlProp) && data[urlProp]) { + data[urlProp] = truncate(data[urlProp], this._globalOptions.maxUrlLength); + } + } + breadcrumbs.values[i].data = data; + } + }, - this._restoreConsole(); + _getHttpData: function() { + if (!this._hasNavigator && !this._hasDocument) return; + var httpData = {}; - Error.stackTraceLimit = this._originalErrorStackTraceLimit; - this._isRavenInstalled = false; - return this; - }, + if (this._hasNavigator && _navigator.userAgent) { + httpData.headers = { + 'User-Agent': navigator.userAgent + }; + } - /* - * Manually capture an exception and send it over to Sentry - * - * @param {error} ex An exception to be logged - * @param {object} options A specific set of options for this error [optional] - * @return {Raven} - */ - captureException: function captureException(ex, options) { - options = objectMerge({ - trimHeadFrames: 0 - }, options ? options : {}); // Cases for sending ex as a message, rather than an exception + // Check in `window` instead of `document`, as we may be in ServiceWorker environment + if (_window.location && _window.location.href) { + httpData.url = _window.location.href; + } - var isNotError = !isError(ex); - var isNotErrorEvent = !isErrorEvent(ex); - var isErrorEventWithoutError = isErrorEvent(ex) && !ex.error; + if (this._hasDocument && _document.referrer) { + if (!httpData.headers) httpData.headers = {}; + httpData.headers.Referer = _document.referrer; + } - if (isNotError && isNotErrorEvent || isErrorEventWithoutError) { - return this.captureMessage(ex, objectMerge(options, { - stacktrace: true, - // if we fall back to captureMessage, default to attempting a new trace - trimHeadFrames: options.trimHeadFrames + 1 - })); - } // Get actual Error from ErrorEvent + return httpData; + }, + _resetBackoff: function() { + this._backoffDuration = 0; + this._backoffStart = null; + }, - if (isErrorEvent(ex)) ex = ex.error; // Store the raw exception object for potential debugging and introspection + _shouldBackoff: function() { + return this._backoffDuration && now() - this._backoffStart < this._backoffDuration; + }, - this._lastCapturedException = ex; // TraceKit.report will re-raise any exception passed to it, - // which means you have to wrap it in try/catch. Instead, we - // can wrap it here and only re-raise if TraceKit.report - // raises an exception different from the one we asked to - // report on. + /** + * Returns true if the in-process data payload matches the signature + * of the previously-sent data + * + * NOTE: This has to be done at this level because TraceKit can generate + * data from window.onerror WITHOUT an exception object (IE8, IE9, + * other old browsers). This can take the form of an "exception" + * data object with a single frame (derived from the onerror args). + */ + _isRepeatData: function(current) { + var last = this._lastData; - try { - var stack = tracekit.computeStackTrace(ex); + if ( + !last || + current.message !== last.message || // defined for captureMessage + current.culprit !== last.culprit // defined for captureException/onerror + ) + return false; - this._handleStackInfo(stack, options); - } catch (ex1) { - if (ex !== ex1) { - throw ex1; - } + // Stacktrace interface (i.e. from captureMessage) + if (current.stacktrace || last.stacktrace) { + return isSameStacktrace(current.stacktrace, last.stacktrace); + } else if (current.exception || last.exception) { + // Exception interface (i.e. from captureException/onerror) + return isSameException(current.exception, last.exception); } - return this; + return true; }, - /* - * Manually send a message to Sentry - * - * @param {string} msg A plain message to be captured in Sentry - * @param {object} options A specific set of options for this message [optional] - * @return {Raven} - */ - captureMessage: function captureMessage(msg, options) { - // config() automagically converts ignoreErrors from a list to a RegExp so we need to test for an - // early call; we'll error on the side of logging anything called before configuration since it's - // probably something you should see: - if (!!this._globalOptions.ignoreErrors.test && this._globalOptions.ignoreErrors.test(msg)) { + _setBackoffState: function(request) { + // If we are already in a backoff state, don't change anything + if (this._shouldBackoff()) { return; } - options = options || {}; - var data = objectMerge({ - message: msg + '' // Make sure it's actually a string + var status = request.status; - }, options); - var ex; // Generate a "synthetic" stack trace from this point. - // NOTE: If you are a Sentry user, and you are seeing this stack frame, it is NOT indicative - // of a bug with Raven.js. Sentry generates synthetic traces either by configuration, - // or if it catches a thrown object without a "stack" property. + // 400 - project_id doesn't exist or some other fatal + // 401 - invalid/revoked dsn + // 429 - too many requests + if (!(status === 400 || status === 401 || status === 429)) return; + var retry; try { - throw new Error(msg); - } catch (ex1) { - ex = ex1; - } // null exception name so `Error` isn't prefixed to msg + // If Retry-After is not in Access-Control-Expose-Headers, most + // browsers will throw an exception trying to access it + if (supportsFetch()) { + retry = request.headers.get('Retry-After'); + } else { + retry = request.getResponseHeader('Retry-After'); + } + // Retry-After is returned in seconds + retry = parseInt(retry, 10) * 1000; + } catch (e) { + /* eslint no-empty:0 */ + } - ex.name = null; - var stack = tracekit.computeStackTrace(ex); // stack[0] is `throw new Error(msg)` call itself, we are interested in the frame that was just before that, stack[1] + this._backoffDuration = retry + ? // If Sentry server returned a Retry-After value, use it + retry + : // Otherwise, double the last backoff duration (starts at 1 sec) + this._backoffDuration * 2 || 1000; - var initialCall = isArray(stack.stack) && stack.stack[1]; - var fileurl = initialCall && initialCall.url || ''; + this._backoffStart = now(); + }, - if (!!this._globalOptions.ignoreUrls.test && this._globalOptions.ignoreUrls.test(fileurl)) { - return; - } + _send: function(data) { + var globalOptions = this._globalOptions; - if (!!this._globalOptions.whitelistUrls.test && !this._globalOptions.whitelistUrls.test(fileurl)) { - return; + var baseData = { + project: this._globalProject, + logger: globalOptions.logger, + platform: 'javascript' + }, + httpData = this._getHttpData(); + + if (httpData) { + baseData.request = httpData; } - if (this._globalOptions.stacktrace || options && options.stacktrace) { - options = objectMerge({ - // fingerprint on msg, not stack trace (legacy behavior, could be - // revisited) - fingerprint: msg, - // since we know this is a synthetic trace, the top N-most frames - // MUST be from Raven.js, so mark them as in_app later by setting - // trimHeadFrames - trimHeadFrames: (options.trimHeadFrames || 0) + 1 - }, options); + // HACK: delete `trimHeadFrames` to prevent from appearing in outbound payload + if (data.trimHeadFrames) delete data.trimHeadFrames; - var frames = this._prepareFrames(stack, options); + data = objectMerge(baseData, data); - data.stacktrace = { - // Sentry expects frames oldest to newest - frames: frames.reverse() + // Merge in the tags and extra separately since objectMerge doesn't handle a deep merge + data.tags = objectMerge(objectMerge({}, this._globalContext.tags), data.tags); + data.extra = objectMerge(objectMerge({}, this._globalContext.extra), data.extra); + + // Send along our own collected metadata with extra + data.extra['session:duration'] = now() - this._startTime; + + if (this._breadcrumbs && this._breadcrumbs.length > 0) { + // intentionally make shallow copy so that additions + // to breadcrumbs aren't accidentally sent in this request + data.breadcrumbs = { + values: [].slice.call(this._breadcrumbs, 0) }; - } // Fire away! + } + if (this._globalContext.user) { + // sentry.interfaces.User + data.user = this._globalContext.user; + } - this._send(data); + // Include the environment if it's defined in globalOptions + if (globalOptions.environment) data.environment = globalOptions.environment; - return this; - }, - captureBreadcrumb: function captureBreadcrumb(obj) { - var crumb = objectMerge({ - timestamp: now() / 1000 - }, obj); + // Include the release if it's defined in globalOptions + if (globalOptions.release) data.release = globalOptions.release; - if (isFunction(this._globalOptions.breadcrumbCallback)) { - var result = this._globalOptions.breadcrumbCallback(crumb); + // Include server_name if it's defined in globalOptions + if (globalOptions.serverName) data.server_name = globalOptions.serverName; - if (isObject(result) && !isEmptyObject(result)) { - crumb = result; - } else if (result === false) { - return this; - } - } + data = this._sanitizeData(data); - this._breadcrumbs.push(crumb); + // Cleanup empty properties before sending them to the server + Object.keys(data).forEach(function(key) { + if (data[key] == null || data[key] === '' || isEmptyObject(data[key])) { + delete data[key]; + } + }); - if (this._breadcrumbs.length > this._globalOptions.maxBreadcrumbs) { - this._breadcrumbs.shift(); + if (isFunction(globalOptions.dataCallback)) { + data = globalOptions.dataCallback(data) || data; } - return this; - }, - addPlugin: function addPlugin(plugin - /*arg1, arg2, ... argN*/ - ) { - var pluginArgs = [].slice.call(arguments, 1); + // Why?????????? + if (!data || isEmptyObject(data)) { + return; + } - this._plugins.push([plugin, pluginArgs]); + // Check if the request should be filtered or not + if ( + isFunction(globalOptions.shouldSendCallback) && + !globalOptions.shouldSendCallback(data) + ) { + return; + } - if (this._isRavenInstalled) { - this._drainPlugins(); + // Backoff state: Sentry server previously responded w/ an error (e.g. 429 - too many requests), + // so drop requests until "cool-off" period has elapsed. + if (this._shouldBackoff()) { + this._logDebug('warn', 'Raven dropped error due to backoff: ', data); + return; } - return this; + if (typeof globalOptions.sampleRate === 'number') { + if (Math.random() < globalOptions.sampleRate) { + this._sendProcessedPayload(data); + } + } else { + this._sendProcessedPayload(data); + } }, - /* - * Set/clear a user to be sent along with the payload. - * - * @param {object} user An object representing user data [optional] - * @return {Raven} - */ - setUserContext: function setUserContext(user) { - // Intentionally do not merge here since that's an unexpected behavior. - this._globalContext.user = user; - return this; + _sanitizeData: function(data) { + return sanitize(data, this._globalOptions.sanitizeKeys); }, - /* - * Merge extra attributes to be sent along with the payload. - * - * @param {object} extra An object representing extra data [optional] - * @return {Raven} - */ - setExtraContext: function setExtraContext(extra) { - this._mergeContext('extra', extra); - - return this; + _getUuid: function() { + return uuid4(); }, - /* - * Merge tags to be sent along with the payload. - * - * @param {object} tags An object representing tags [optional] - * @return {Raven} - */ - setTagsContext: function setTagsContext(tags) { - this._mergeContext('tags', tags); + _sendProcessedPayload: function(data, callback) { + var self = this; + var globalOptions = this._globalOptions; - return this; - }, + if (!this.isSetup()) return; - /* - * Clear all of the context. - * - * @return {Raven} - */ - clearContext: function clearContext() { - this._globalContext = {}; - return this; - }, + // Try and clean up the packet before sending by truncating long values + data = this._trimPacket(data); - /* - * Get a copy of the current context. This cannot be mutated. - * - * @return {object} copy of context - */ - getContext: function getContext() { - // lol javascript - return JSON.parse(stringify_1(this._globalContext)); - }, + // ideally duplicate error testing should occur *before* dataCallback/shouldSendCallback, + // but this would require copying an un-truncated copy of the data packet, which can be + // arbitrarily deep (extra_data) -- could be worthwhile? will revisit + if (!this._globalOptions.allowDuplicates && this._isRepeatData(data)) { + this._logDebug('warn', 'Raven dropped repeat event: ', data); + return; + } - /* - * Set environment of application - * - * @param {string} environment Typically something like 'production'. - * @return {Raven} - */ - setEnvironment: function setEnvironment(environment) { - this._globalOptions.environment = environment; - return this; - }, + // Send along an event_id if not explicitly passed. + // This event_id can be used to reference the error within Sentry itself. + // Set lastEventId after we know the error should actually be sent + this._lastEventId = data.event_id || (data.event_id = this._getUuid()); - /* - * Set release version of application - * - * @param {string} release Typically something like a git SHA to identify version - * @return {Raven} - */ - setRelease: function setRelease(release) { - this._globalOptions.release = release; - return this; - }, + // Store outbound payload after trim + this._lastData = data; - /* - * Set the dataCallback option - * - * @param {function} callback The callback to run which allows the - * data blob to be mutated before sending - * @return {Raven} - */ - setDataCallback: function setDataCallback(callback) { - var original = this._globalOptions.dataCallback; - this._globalOptions.dataCallback = keepOriginalCallback(original, callback); - return this; - }, + this._logDebug('debug', 'Raven about to send:', data); - /* - * Set the breadcrumbCallback option - * - * @param {function} callback The callback to run which allows filtering - * or mutating breadcrumbs - * @return {Raven} - */ - setBreadcrumbCallback: function setBreadcrumbCallback(callback) { - var original = this._globalOptions.breadcrumbCallback; - this._globalOptions.breadcrumbCallback = keepOriginalCallback(original, callback); - return this; - }, + var auth = { + sentry_version: '7', + sentry_client: 'raven-js/' + this.VERSION, + sentry_key: this._globalKey + }; - /* - * Set the shouldSendCallback option - * - * @param {function} callback The callback to run which allows - * introspecting the blob before sending - * @return {Raven} - */ - setShouldSendCallback: function setShouldSendCallback(callback) { - var original = this._globalOptions.shouldSendCallback; - this._globalOptions.shouldSendCallback = keepOriginalCallback(original, callback); - return this; - }, + if (this._globalSecret) { + auth.sentry_secret = this._globalSecret; + } - /** - * Override the default HTTP transport mechanism that transmits data - * to the Sentry server. - * - * @param {function} transport Function invoked instead of the default - * `makeRequest` handler. - * - * @return {Raven} - */ - setTransport: function setTransport(transport) { - this._globalOptions.transport = transport; - return this; - }, + var exception = data.exception && data.exception.values[0]; - /* - * Get the latest raw exception that was captured by Raven. - * - * @return {error} - */ - lastException: function lastException() { - return this._lastCapturedException; - }, + // only capture 'sentry' breadcrumb is autoBreadcrumbs is truthy + if ( + this._globalOptions.autoBreadcrumbs && + this._globalOptions.autoBreadcrumbs.sentry + ) { + this.captureBreadcrumb({ + category: 'sentry', + message: exception + ? (exception.type ? exception.type + ': ' : '') + exception.value + : data.message, + event_id: data.event_id, + level: data.level || 'error' // presume error unless specified + }); + } - /* - * Get the last event id - * - * @return {string} - */ - lastEventId: function lastEventId() { - return this._lastEventId; - }, + var url = this._globalEndpoint; + (globalOptions.transport || this._makeRequest).call(this, { + url: url, + auth: auth, + data: data, + options: globalOptions, + onSuccess: function success() { + self._resetBackoff(); - /* - * Determine if Raven is setup and ready to go. - * - * @return {boolean} - */ - isSetup: function isSetup() { - if (!this._hasJSON) return false; // needs JSON support + self._triggerEvent('success', { + data: data, + src: url + }); + callback && callback(); + }, + onError: function failure(error) { + self._logDebug('error', 'Raven transport failed to send: ', error); - if (!this._globalServer) { - if (!this.ravenNotConfiguredError) { - this.ravenNotConfiguredError = true; + if (error.request) { + self._setBackoffState(error.request); + } - this._logDebug('error', 'Error: Raven has not been configured.'); + self._triggerEvent('failure', { + data: data, + src: url + }); + error = error || new Error('Raven send failed (no additional details provided)'); + callback && callback(error); } - - return false; - } - - return true; + }); }, - afterLoad: function afterLoad() { - // TODO: remove window dependence? - // Attempt to initialize Raven on load - var RavenConfig = _window$1.RavenConfig; - if (RavenConfig) { - this.config(RavenConfig.dsn, RavenConfig.config).install(); - } - }, - showReportDialog: function showReportDialog(options) { - if (!_document // doesn't work without a document (React native) - ) return; - options = options || {}; - var lastEventId = options.eventId || this.lastEventId(); + _makeRequest: function(opts) { + // Auth is intentionally sent as part of query string (NOT as custom HTTP header) to avoid preflight CORS requests + var url = opts.url + '?' + urlencode(opts.auth); - if (!lastEventId) { - throw new configError('Missing eventId'); - } + var evaluatedHeaders = null; + var evaluatedFetchParameters = {}; - var dsn = options.dsn || this._dsn; + if (opts.options.headers) { + evaluatedHeaders = this._evaluateHash(opts.options.headers); + } - if (!dsn) { - throw new configError('Missing DSN'); + if (opts.options.fetchParameters) { + evaluatedFetchParameters = this._evaluateHash(opts.options.fetchParameters); } - var encode = encodeURIComponent; - var qs = ''; - qs += '?eventId=' + encode(lastEventId); - qs += '&dsn=' + encode(dsn); - var user = options.user || this._globalContext.user; + if (supportsFetch()) { + evaluatedFetchParameters.body = stringify(opts.data); - if (user) { - if (user.name) qs += '&name=' + encode(user.name); - if (user.email) qs += '&email=' + encode(user.email); - } + var defaultFetchOptions = objectMerge({}, this._fetchDefaults); + var fetchOptions = objectMerge(defaultFetchOptions, evaluatedFetchParameters); - var globalServer = this._getGlobalServer(this._parseDSN(dsn)); + if (evaluatedHeaders) { + fetchOptions.headers = evaluatedHeaders; + } - var script = _document.createElement('script'); + return _window + .fetch(url, fetchOptions) + .then(function(response) { + if (response.ok) { + opts.onSuccess && opts.onSuccess(); + } else { + var error = new Error('Sentry error code: ' + response.status); + // It's called request only to keep compatibility with XHR interface + // and not add more redundant checks in setBackoffState method + error.request = response; + opts.onError && opts.onError(error); + } + }) + ['catch'](function() { + opts.onError && + opts.onError(new Error('Sentry error code: network unavailable')); + }); + } - script.async = true; - script.src = globalServer + '/api/embed/error-page/' + qs; + var request = _window.XMLHttpRequest && new _window.XMLHttpRequest(); + if (!request) return; - (_document.head || _document.body).appendChild(script); - }, + // if browser doesn't support CORS (e.g. IE7), we are out of luck + var hasCORS = 'withCredentials' in request || typeof XDomainRequest !== 'undefined'; - /**** Private functions ****/ - _ignoreNextOnError: function _ignoreNextOnError() { - var self = this; - this._ignoreOnError += 1; - setTimeout(function () { - // onerror should trigger before setTimeout - self._ignoreOnError -= 1; - }); - }, - _triggerEvent: function _triggerEvent(eventType, options) { - // NOTE: `event` is a native browser thing, so let's avoid conflicting wiht it - var evt, key; - if (!this._hasDocument) return; - options = options || {}; - eventType = 'raven' + eventType.substr(0, 1).toUpperCase() + eventType.substr(1); + if (!hasCORS) return; - if (_document.createEvent) { - evt = _document.createEvent('HTMLEvents'); - evt.initEvent(eventType, true, true); + if ('withCredentials' in request) { + request.onreadystatechange = function() { + if (request.readyState !== 4) { + return; + } else if (request.status === 200) { + opts.onSuccess && opts.onSuccess(); + } else if (opts.onError) { + var err = new Error('Sentry error code: ' + request.status); + err.request = request; + opts.onError(err); + } + }; } else { - evt = _document.createEventObject(); - evt.eventType = eventType; - } + request = new XDomainRequest(); + // xdomainrequest cannot go http -> https (or vice versa), + // so always use protocol relative + url = url.replace(/^https?:/, ''); - for (key in options) { - if (hasKey(options, key)) { - evt[key] = options[key]; + // onreadystatechange not supported by XDomainRequest + if (opts.onSuccess) { + request.onload = opts.onSuccess; } - } - - if (_document.createEvent) { - // IE9 if standards - _document.dispatchEvent(evt); - } else { - // IE8 regardless of Quirks or Standards - // IE9 if quirks - try { - _document.fireEvent('on' + evt.eventType.toLowerCase(), evt); - } catch (e) {// Do nothing + if (opts.onError) { + request.onerror = function() { + var err = new Error('Sentry error code: XDomainRequest'); + err.request = request; + opts.onError(err); + }; } } - }, - /** - * Wraps addEventListener to capture UI breadcrumbs - * @param evtName the event name (e.g. "click") - * @returns {Function} - * @private - */ - _breadcrumbEventHandler: function _breadcrumbEventHandler(evtName) { - var self = this; - return function (evt) { - // reset keypress timeout; e.g. triggering a 'click' after - // a 'keypress' will reset the keypress debounce so that a new - // set of keypresses can be recorded - self._keypressTimeout = null; // It's possible this handler might trigger multiple times for the same - // event (e.g. event propagation through node ancestors). Ignore if we've - // already captured the event. + request.open('POST', url); - if (self._lastCapturedEvent === evt) return; - self._lastCapturedEvent = evt; // try/catch both: - // - accessing evt.target (see getsentry/raven-js#838, #768) - // - `htmlTreeAsString` because it's complex, and just accessing the DOM incorrectly - // can throw an exception in some circumstances. + if (evaluatedHeaders) { + each(evaluatedHeaders, function(key, value) { + request.setRequestHeader(key, value); + }); + } - var target; + request.send(stringify(opts.data)); + }, - try { - target = htmlTreeAsString(evt.target); - } catch (e) { - target = ''; + _evaluateHash: function(hash) { + var evaluated = {}; + + for (var key in hash) { + if (hash.hasOwnProperty(key)) { + var value = hash[key]; + evaluated[key] = typeof value === 'function' ? value() : value; } + } - self.captureBreadcrumb({ - category: 'ui.' + evtName, - // e.g. ui.click, ui.input - message: target - }); - }; + return evaluated; }, - /** - * Wraps addEventListener to capture keypress UI events - * @returns {Function} - * @private - */ - _keypressEventHandler: function _keypressEventHandler() { - var self = this, - debounceDuration = 1000; // milliseconds - // TODO: if somehow user switches keypress target before - // debounce timeout is triggered, we will only capture - // a single breadcrumb from the FIRST target (acceptable?) + _logDebug: function(level) { + // We allow `Raven.debug` and `Raven.config(DSN, { debug: true })` to not make backward incompatible API change + if ( + this._originalConsoleMethods[level] && + (this.debug || this._globalOptions.debug) + ) { + // In IE<10 console methods do not have their own 'apply' method + Function.prototype.apply.call( + this._originalConsoleMethods[level], + this._originalConsole, + [].slice.call(arguments, 1) + ); + } + }, - return function (evt) { - var target; + _mergeContext: function(key, context) { + if (isUndefined(context)) { + delete this._globalContext[key]; + } else { + this._globalContext[key] = objectMerge(this._globalContext[key] || {}, context); + } + } +}; - try { - target = evt.target; - } catch (e) { - // just accessing event properties can throw an exception in some rare circumstances - // see: https://github.com/getsentry/raven-js/issues/838 - return; - } +// Deprecations +Raven.prototype.setUser = Raven.prototype.setUserContext; +Raven.prototype.setReleaseContext = Raven.prototype.setRelease; - var tagName = target && target.tagName; // only consider keypress events on actual input elements - // this will disregard keypresses targeting body (e.g. tabbing - // through elements, hotkeys, etc) +module.exports = Raven; - if (!tagName || tagName !== 'INPUT' && tagName !== 'TEXTAREA' && !target.isContentEditable) return; // record first keypress in a series, but ignore subsequent - // keypresses until debounce clears +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"2":2,"3":3,"6":6,"7":7,"8":8,"9":9}],5:[function(_dereq_,module,exports){ +(function (global){ +/** + * Enforces a single instance of the Raven client, and the + * main entry point for Raven. If you are a consumer of the + * Raven library, you SHOULD load this file (vs raven.js). + **/ - var timeout = self._keypressTimeout; +var RavenConstructor = _dereq_(4); - if (!timeout) { - self._breadcrumbEventHandler('input')(evt); - } +// This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) +var _window = + typeof window !== 'undefined' + ? window + : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; +var _Raven = _window.Raven; - clearTimeout(timeout); - self._keypressTimeout = setTimeout(function () { - self._keypressTimeout = null; - }, debounceDuration); - }; - }, +var Raven = new RavenConstructor(); - /** - * Captures a breadcrumb of type "navigation", normalizing input URLs - * @param to the originating URL - * @param from the target URL - * @private - */ - _captureUrlChange: function _captureUrlChange(from, to) { - var parsedLoc = parseUrl(this._location.href); - var parsedTo = parseUrl(to); - var parsedFrom = parseUrl(from); // because onpopstate only tells you the "new" (to) value of location.href, and - // not the previous (from) value, we need to track the value of the current URL - // state ourselves +/* + * Allow multiple versions of Raven to be installed. + * Strip Raven from the global context and returns the instance. + * + * @return {Raven} + */ +Raven.noConflict = function() { + _window.Raven = _Raven; + return Raven; +}; - this._lastHref = to; // Use only the path component of the URL if the URL matches the current - // document (almost all the time when using pushState) +Raven.afterLoad(); - if (parsedLoc.protocol === parsedTo.protocol && parsedLoc.host === parsedTo.host) to = parsedTo.relative; - if (parsedLoc.protocol === parsedFrom.protocol && parsedLoc.host === parsedFrom.host) from = parsedFrom.relative; - this.captureBreadcrumb({ - category: 'navigation', - data: { - to: to, - from: from - } - }); - }, - _patchFunctionToString: function _patchFunctionToString() { - var self = this; - self._originalFunctionToString = Function.prototype.toString; // eslint-disable-next-line no-extend-native +module.exports = Raven; - Function.prototype.toString = function () { - if (typeof this === 'function' && this.__raven__) { - return self._originalFunctionToString.apply(this.__orig__, arguments); - } +/** + * DISCLAIMER: + * + * Expose `Client` constructor for cases where user want to track multiple "sub-applications" in one larger app. + * It's not meant to be used by a wide audience, so pleaaase make sure that you know what you're doing before using it. + * Accidentally calling `install` multiple times, may result in an unexpected behavior that's very hard to debug. + * + * It's called `Client' to be in-line with Raven Node implementation. + * + * HOWTO: + * + * import Raven from 'raven-js'; + * + * const someAppReporter = new Raven.Client(); + * const someOtherAppReporter = new Raven.Client(); + * + * someAppReporter.config('__DSN__', { + * ...config goes here + * }); + * + * someOtherAppReporter.config('__OTHER_DSN__', { + * ...config goes here + * }); + * + * someAppReporter.captureMessage(...); + * someAppReporter.captureException(...); + * someAppReporter.captureBreadcrumb(...); + * + * someOtherAppReporter.captureMessage(...); + * someOtherAppReporter.captureException(...); + * someOtherAppReporter.captureBreadcrumb(...); + * + * It should "just work". + */ +module.exports.Client = RavenConstructor; - return self._originalFunctionToString.apply(this, arguments); - }; - }, - _unpatchFunctionToString: function _unpatchFunctionToString() { - if (this._originalFunctionToString) { - // eslint-disable-next-line no-extend-native - Function.prototype.toString = this._originalFunctionToString; - } - }, +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"4":4}],6:[function(_dereq_,module,exports){ +(function (global){ +var stringify = _dereq_(8); - /** - * Wrap timer functions and event targets to catch errors and provide - * better metadata. - */ - _instrumentTryCatch: function _instrumentTryCatch() { - var self = this; - var wrappedBuiltIns = self._wrappedBuiltIns; +var _window = + typeof window !== 'undefined' + ? window + : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; - function wrapTimeFn(orig) { - return function (fn, t) { - // preserve arity - // Make a copy of the arguments to prevent deoptimization - // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments - var args = new Array(arguments.length); +function isObject(what) { + return typeof what === 'object' && what !== null; +} - for (var i = 0; i < args.length; ++i) { - args[i] = arguments[i]; - } +// Yanked from https://git.io/vS8DV re-used under CC0 +// with some tiny modifications +function isError(value) { + switch ({}.toString.call(value)) { + case '[object Error]': + return true; + case '[object Exception]': + return true; + case '[object DOMException]': + return true; + default: + return value instanceof Error; + } +} + +function isErrorEvent(value) { + return supportsErrorEvent() && {}.toString.call(value) === '[object ErrorEvent]'; +} + +function isUndefined(what) { + return what === void 0; +} + +function isFunction(what) { + return typeof what === 'function'; +} + +function isPlainObject(what) { + return Object.prototype.toString.call(what) === '[object Object]'; +} - var originalCallback = args[0]; +function isString(what) { + return Object.prototype.toString.call(what) === '[object String]'; +} - if (isFunction(originalCallback)) { - args[0] = self.wrap(originalCallback); - } // IE < 9 doesn't support .call/.apply on setInterval/setTimeout, but it - // also supports only two arguments and doesn't care what this is, so we - // can just call the original function directly. +function isArray(what) { + return Object.prototype.toString.call(what) === '[object Array]'; +} +function isEmptyObject(what) { + if (!isPlainObject(what)) return false; - if (orig.apply) { - return orig.apply(this, args); - } else { - return orig(args[0], args[1]); - } - }; + for (var _ in what) { + if (what.hasOwnProperty(_)) { + return false; } + } + return true; +} - var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; - - function wrapEventTarget(global) { - var proto = _window$1[global] && _window$1[global].prototype; +function supportsErrorEvent() { + try { + new ErrorEvent(''); // eslint-disable-line no-new + return true; + } catch (e) { + return false; + } +} - if (proto && proto.hasOwnProperty && proto.hasOwnProperty('addEventListener')) { - fill(proto, 'addEventListener', function (orig) { - return function (evtName, fn, capture, secure) { - // preserve arity - try { - if (fn && fn.handleEvent) { - fn.handleEvent = self.wrap(fn.handleEvent); - } - } catch (err) {} // can sometimes get 'Permission denied to access property "handle Event' - // More breadcrumb DOM capture ... done here and not in `_instrumentBreadcrumbs` - // so that we don't have more than one wrapper function +function supportsFetch() { + if (!('fetch' in _window)) return false; + try { + new Headers(); // eslint-disable-line no-new + new Request(''); // eslint-disable-line no-new + new Response(); // eslint-disable-line no-new + return true; + } catch (e) { + return false; + } +} - var before, clickHandler, keypressHandler; +// Despite all stars in the sky saying that Edge supports old draft syntax, aka 'never', 'always', 'origin' and 'default +// https://caniuse.com/#feat=referrer-policy +// It doesn't. And it throw exception instead of ignoring this parameter... +// REF: https://github.com/getsentry/raven-js/issues/1233 +function supportsReferrerPolicy() { + if (!supportsFetch()) return false; - if (autoBreadcrumbs && autoBreadcrumbs.dom && (global === 'EventTarget' || global === 'Node')) { - // NOTE: generating multiple handlers per addEventListener invocation, should - // revisit and verify we can just use one (almost certainly) - clickHandler = self._breadcrumbEventHandler('click'); - keypressHandler = self._keypressEventHandler(); + try { + // eslint-disable-next-line no-new + new Request('pickleRick', { + referrerPolicy: 'origin' + }); + return true; + } catch (e) { + return false; + } +} - before = function before(evt) { - // need to intercept every DOM event in `before` argument, in case that - // same wrapped method is re-used for different events (e.g. mousemove THEN click) - // see #724 - if (!evt) return; - var eventType; +function supportsPromiseRejectionEvent() { + return typeof PromiseRejectionEvent === 'function'; +} - try { - eventType = evt.type; - } catch (e) { - // just accessing event properties can throw an exception in some rare circumstances - // see: https://github.com/getsentry/raven-js/issues/838 - return; - } +function wrappedCallback(callback) { + function dataCallback(data, original) { + var normalizedData = callback(data) || data; + if (original) { + return original(normalizedData) || normalizedData; + } + return normalizedData; + } - if (eventType === 'click') return clickHandler(evt);else if (eventType === 'keypress') return keypressHandler(evt); - }; - } + return dataCallback; +} - return orig.call(this, evtName, self.wrap(fn, undefined, before), capture, secure); - }; - }, wrappedBuiltIns); - fill(proto, 'removeEventListener', function (orig) { - return function (evt, fn, capture, secure) { - try { - fn = fn && (fn.__raven_wrapper__ ? fn.__raven_wrapper__ : fn); - } catch (e) {// ignore, accessing __raven_wrapper__ will throw in some Selenium environments - } +function each(obj, callback) { + var i, j; - return orig.call(this, evt, fn, capture, secure); - }; - }, wrappedBuiltIns); + if (isUndefined(obj.length)) { + for (i in obj) { + if (hasKey(obj, i)) { + callback.call(null, i, obj[i]); + } + } + } else { + j = obj.length; + if (j) { + for (i = 0; i < j; i++) { + callback.call(null, i, obj[i]); } } + } +} - fill(_window$1, 'setTimeout', wrapTimeFn, wrappedBuiltIns); - fill(_window$1, 'setInterval', wrapTimeFn, wrappedBuiltIns); +function objectMerge(obj1, obj2) { + if (!obj2) { + return obj1; + } + each(obj2, function(key, value) { + obj1[key] = value; + }); + return obj1; +} - if (_window$1.requestAnimationFrame) { - fill(_window$1, 'requestAnimationFrame', function (orig) { - return function (cb) { - return orig(self.wrap(cb)); - }; - }, wrappedBuiltIns); - } // event targets borrowed from bugsnag-js: - // https://github.com/bugsnag/bugsnag-js/blob/master/src/bugsnag.js#L666 +/** + * This function is only used for react-native. + * react-native freezes object that have already been sent over the + * js bridge. We need this function in order to check if the object is frozen. + * So it's ok that objectFrozen returns false if Object.isFrozen is not + * supported because it's not relevant for other "platforms". See related issue: + * https://github.com/getsentry/react-native-sentry/issues/57 + */ +function objectFrozen(obj) { + if (!Object.isFrozen) { + return false; + } + return Object.isFrozen(obj); +} + +function truncate(str, max) { + if (typeof max !== 'number') { + throw new Error('2nd argument to `truncate` function should be a number'); + } + if (typeof str !== 'string' || max === 0) { + return str; + } + return str.length <= max ? str : str.substr(0, max) + '\u2026'; +} +/** + * hasKey, a better form of hasOwnProperty + * Example: hasKey(MainHostObject, property) === true/false + * + * @param {Object} host object to check property + * @param {string} key to check + */ +function hasKey(object, key) { + return Object.prototype.hasOwnProperty.call(object, key); +} - var eventTargets = ['EventTarget', 'Window', 'Node', 'ApplicationCache', 'AudioTrackList', 'ChannelMergerNode', 'CryptoOperation', 'EventSource', 'FileReader', 'HTMLUnknownElement', 'IDBDatabase', 'IDBRequest', 'IDBTransaction', 'KeyOperation', 'MediaController', 'MessagePort', 'ModalWindow', 'Notification', 'SVGElementInstance', 'Screen', 'TextTrack', 'TextTrackCue', 'TextTrackList', 'WebSocket', 'WebSocketWorker', 'Worker', 'XMLHttpRequest', 'XMLHttpRequestEventTarget', 'XMLHttpRequestUpload']; +function joinRegExp(patterns) { + // Combine an array of regular expressions and strings into one large regexp + // Be mad. + var sources = [], + i = 0, + len = patterns.length, + pattern; - for (var i = 0; i < eventTargets.length; i++) { - wrapEventTarget(eventTargets[i]); + for (; i < len; i++) { + pattern = patterns[i]; + if (isString(pattern)) { + // If it's a string, we need to escape it + // Taken from: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions + sources.push(pattern.replace(/([.*+?^=!:${}()|\[\]\/\\])/g, '\\$1')); + } else if (pattern && pattern.source) { + // If it's a regexp already, we want to extract the source + sources.push(pattern.source); } - }, + // Intentionally skip other cases + } + return new RegExp(sources.join('|'), 'i'); +} - /** - * Instrument browser built-ins w/ breadcrumb capturing - * - XMLHttpRequests - * - DOM interactions (click/typing) - * - window.location changes - * - console - * - * Can be disabled or individually configured via the `autoBreadcrumbs` config option - */ - _instrumentBreadcrumbs: function _instrumentBreadcrumbs() { - var self = this; - var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; - var wrappedBuiltIns = self._wrappedBuiltIns; +function urlencode(o) { + var pairs = []; + each(o, function(key, value) { + pairs.push(encodeURIComponent(key) + '=' + encodeURIComponent(value)); + }); + return pairs.join('&'); +} - function wrapProp(prop, xhr) { - if (prop in xhr && isFunction(xhr[prop])) { - fill(xhr, prop, function (orig) { - return self.wrap(orig); - }); // intentionally don't track filled methods on XHR instances - } - } +// borrowed from https://tools.ietf.org/html/rfc3986#appendix-B +// intentionally using regex and not href parsing trick because React Native and other +// environments where DOM might not be available +function parseUrl(url) { + if (typeof url !== 'string') return {}; + var match = url.match(/^(([^:\/?#]+):)?(\/\/([^\/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?$/); - if (autoBreadcrumbs.xhr && 'XMLHttpRequest' in _window$1) { - var xhrproto = XMLHttpRequest.prototype; - fill(xhrproto, 'open', function (origOpen) { - return function (method, url) { - // preserve arity - // if Sentry key appears in URL, don't capture - if (isString(url) && url.indexOf(self._globalKey) === -1) { - this.__raven_xhr = { - method: method, - url: url, - status_code: null - }; - } + // coerce to undefined values to empty string so we don't get 'undefined' + var query = match[6] || ''; + var fragment = match[8] || ''; + return { + protocol: match[2], + host: match[4], + path: match[5], + relative: match[5] + query + fragment // everything minus origin + }; +} +function uuid4() { + var crypto = _window.crypto || _window.msCrypto; - return origOpen.apply(this, arguments); - }; - }, wrappedBuiltIns); - fill(xhrproto, 'send', function (origSend) { - return function () { - // preserve arity - var xhr = this; - - function onreadystatechangeHandler() { - if (xhr.__raven_xhr && xhr.readyState === 4) { - try { - // touching statusCode in some platforms throws - // an exception - xhr.__raven_xhr.status_code = xhr.status; - } catch (e) { - /* do nothing */ - } + if (!isUndefined(crypto) && crypto.getRandomValues) { + // Use window.crypto API if available + // eslint-disable-next-line no-undef + var arr = new Uint16Array(8); + crypto.getRandomValues(arr); - self.captureBreadcrumb({ - type: 'http', - category: 'xhr', - data: xhr.__raven_xhr - }); - } - } + // set 4 in byte 7 + arr[3] = (arr[3] & 0xfff) | 0x4000; + // set 2 most significant bits of byte 9 to '10' + arr[4] = (arr[4] & 0x3fff) | 0x8000; - var props = ['onload', 'onerror', 'onprogress']; + var pad = function(num) { + var v = num.toString(16); + while (v.length < 4) { + v = '0' + v; + } + return v; + }; - for (var j = 0; j < props.length; j++) { - wrapProp(props[j], xhr); - } + return ( + pad(arr[0]) + + pad(arr[1]) + + pad(arr[2]) + + pad(arr[3]) + + pad(arr[4]) + + pad(arr[5]) + + pad(arr[6]) + + pad(arr[7]) + ); + } else { + // http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/2117523#2117523 + return 'xxxxxxxxxxxx4xxxyxxxxxxxxxxxxxxx'.replace(/[xy]/g, function(c) { + var r = (Math.random() * 16) | 0, + v = c === 'x' ? r : (r & 0x3) | 0x8; + return v.toString(16); + }); + } +} - if ('onreadystatechange' in xhr && isFunction(xhr.onreadystatechange)) { - fill(xhr, 'onreadystatechange', function (orig) { - return self.wrap(orig, undefined, onreadystatechangeHandler); - } - /* intentionally don't track this instrumentation */ - ); - } else { - // if onreadystatechange wasn't actually set by the page on this xhr, we - // are free to set our own and capture the breadcrumb - xhr.onreadystatechange = onreadystatechangeHandler; - } +/** + * Given a child DOM element, returns a query-selector statement describing that + * and its ancestors + * e.g. [HTMLElement] => body > div > input#foo.btn[name=baz] + * @param elem + * @returns {string} + */ +function htmlTreeAsString(elem) { + /* eslint no-extra-parens:0*/ + var MAX_TRAVERSE_HEIGHT = 5, + MAX_OUTPUT_LEN = 80, + out = [], + height = 0, + len = 0, + separator = ' > ', + sepLength = separator.length, + nextStr; - return origSend.apply(this, arguments); - }; - }, wrappedBuiltIns); + while (elem && height++ < MAX_TRAVERSE_HEIGHT) { + nextStr = htmlElementAsString(elem); + // bail out if + // - nextStr is the 'html' element + // - the length of the string that would be created exceeds MAX_OUTPUT_LEN + // (ignore this limit if we are on the first iteration) + if ( + nextStr === 'html' || + (height > 1 && len + out.length * sepLength + nextStr.length >= MAX_OUTPUT_LEN) + ) { + break; } - if (autoBreadcrumbs.xhr && supportsFetch()) { - fill(_window$1, 'fetch', function (origFetch) { - return function () { - // preserve arity - // Make a copy of the arguments to prevent deoptimization - // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments - var args = new Array(arguments.length); - - for (var i = 0; i < args.length; ++i) { - args[i] = arguments[i]; - } + out.push(nextStr); - var fetchInput = args[0]; - var method = 'GET'; - var url; + len += nextStr.length; + elem = elem.parentNode; + } - if (typeof fetchInput === 'string') { - url = fetchInput; - } else if ('Request' in _window$1 && fetchInput instanceof _window$1.Request) { - url = fetchInput.url; + return out.reverse().join(separator); +} - if (fetchInput.method) { - method = fetchInput.method; - } - } else { - url = '' + fetchInput; - } // if Sentry key appears in URL, don't capture, as it's our own request +/** + * Returns a simple, query-selector representation of a DOM element + * e.g. [HTMLElement] => input#foo.btn[name=baz] + * @param HTMLElement + * @returns {string} + */ +function htmlElementAsString(elem) { + var out = [], + className, + classes, + key, + attr, + i; + if (!elem || !elem.tagName) { + return ''; + } - if (url.indexOf(self._globalKey) !== -1) { - return origFetch.apply(this, args); - } + out.push(elem.tagName.toLowerCase()); + if (elem.id) { + out.push('#' + elem.id); + } - if (args[1] && args[1].method) { - method = args[1].method; - } + className = elem.className; + if (className && isString(className)) { + classes = className.split(/\s+/); + for (i = 0; i < classes.length; i++) { + out.push('.' + classes[i]); + } + } + var attrWhitelist = ['type', 'name', 'title', 'alt']; + for (i = 0; i < attrWhitelist.length; i++) { + key = attrWhitelist[i]; + attr = elem.getAttribute(key); + if (attr) { + out.push('[' + key + '="' + attr + '"]'); + } + } + return out.join(''); +} - var fetchData = { - method: method, - url: url, - status_code: null - }; - return origFetch.apply(this, args).then(function (response) { - fetchData.status_code = response.status; - self.captureBreadcrumb({ - type: 'http', - category: 'fetch', - data: fetchData - }); - return response; - }); - }; - }, wrappedBuiltIns); - } // Capture breadcrumbs from any click that is unhandled / bubbled up all the way - // to the document. Do this before we instrument addEventListener. +/** + * Returns true if either a OR b is truthy, but not both + */ +function isOnlyOneTruthy(a, b) { + return !!(!!a ^ !!b); +} +/** + * Returns true if both parameters are undefined + */ +function isBothUndefined(a, b) { + return isUndefined(a) && isUndefined(b); +} - if (autoBreadcrumbs.dom && this._hasDocument) { - if (_document.addEventListener) { - _document.addEventListener('click', self._breadcrumbEventHandler('click'), false); +/** + * Returns true if the two input exception interfaces have the same content + */ +function isSameException(ex1, ex2) { + if (isOnlyOneTruthy(ex1, ex2)) return false; - _document.addEventListener('keypress', self._keypressEventHandler(), false); - } else { - // IE8 Compatibility - _document.attachEvent('onclick', self._breadcrumbEventHandler('click')); + ex1 = ex1.values[0]; + ex2 = ex2.values[0]; - _document.attachEvent('onkeypress', self._keypressEventHandler()); - } - } // record navigation (URL) changes - // NOTE: in Chrome App environment, touching history.pushState, *even inside - // a try/catch block*, will cause Chrome to output an error to console.error - // borrowed from: https://github.com/angular/angular.js/pull/13945/files + if (ex1.type !== ex2.type || ex1.value !== ex2.value) return false; + // in case both stacktraces are undefined, we can't decide so default to false + if (isBothUndefined(ex1.stacktrace, ex2.stacktrace)) return false; - var chrome = _window$1.chrome; - var isChromePackagedApp = chrome && chrome.app && chrome.app.runtime; - var hasPushAndReplaceState = !isChromePackagedApp && _window$1.history && history.pushState && history.replaceState; + return isSameStacktrace(ex1.stacktrace, ex2.stacktrace); +} - if (autoBreadcrumbs.location && hasPushAndReplaceState) { - // TODO: remove onpopstate handler on uninstall() - var oldOnPopState = _window$1.onpopstate; +/** + * Returns true if the two input stack trace interfaces have the same content + */ +function isSameStacktrace(stack1, stack2) { + if (isOnlyOneTruthy(stack1, stack2)) return false; - _window$1.onpopstate = function () { - var currentHref = self._location.href; + var frames1 = stack1.frames; + var frames2 = stack2.frames; - self._captureUrlChange(self._lastHref, currentHref); + // Exit early if frame count differs + if (frames1.length !== frames2.length) return false; - if (oldOnPopState) { - return oldOnPopState.apply(this, arguments); - } - }; + // Iterate through every frame; bail out if anything differs + var a, b; + for (var i = 0; i < frames1.length; i++) { + a = frames1[i]; + b = frames2[i]; + if ( + a.filename !== b.filename || + a.lineno !== b.lineno || + a.colno !== b.colno || + a['function'] !== b['function'] + ) + return false; + } + return true; +} - var historyReplacementFunction = function historyReplacementFunction(origHistFunction) { - // note history.pushState.length is 0; intentionally not declaring - // params to preserve 0 arity - return function () - /* state, title, url */ - { - var url = arguments.length > 2 ? arguments[2] : undefined; // url argument is optional +/** + * Polyfill a method + * @param obj object e.g. `document` + * @param name method name present on object e.g. `addEventListener` + * @param replacement replacement function + * @param track {optional} record instrumentation to an array + */ +function fill(obj, name, replacement, track) { + if (obj == null) return; + var orig = obj[name]; + obj[name] = replacement(orig); + obj[name].__raven__ = true; + obj[name].__orig__ = orig; + if (track) { + track.push([obj, name, orig]); + } +} - if (url) { - // coerce to string (this is what pushState does) - self._captureUrlChange(self._lastHref, url + ''); - } +/** + * Join values in array + * @param input array of values to be joined together + * @param delimiter string to be placed in-between values + * @returns {string} + */ +function safeJoin(input, delimiter) { + if (!isArray(input)) return ''; - return origHistFunction.apply(this, arguments); - }; - }; + var output = []; - fill(history, 'pushState', historyReplacementFunction, wrappedBuiltIns); - fill(history, 'replaceState', historyReplacementFunction, wrappedBuiltIns); + for (var i = 0; i < input.length; i++) { + try { + output.push(String(input[i])); + } catch (e) { + output.push('[value cannot be serialized]'); } + } - if (autoBreadcrumbs.console && 'console' in _window$1 && console.log) { - // console - var consoleMethodCallback = function consoleMethodCallback(msg, data) { - self.captureBreadcrumb({ - message: msg, - level: data.level, - category: 'console' - }); - }; - - each(['debug', 'info', 'warn', 'error', 'log'], function (_, level) { - wrapConsoleMethod(console, level, consoleMethodCallback); - }); - } - }, - _restoreBuiltIns: function _restoreBuiltIns() { - // restore any wrapped builtins - var builtin; + return output.join(delimiter); +} - while (this._wrappedBuiltIns.length) { - builtin = this._wrappedBuiltIns.shift(); - var obj = builtin[0], - name = builtin[1], - orig = builtin[2]; - obj[name] = orig; - } - }, - _restoreConsole: function _restoreConsole() { - // eslint-disable-next-line guard-for-in - for (var method in this._originalConsoleMethods) { - this._originalConsole[method] = this._originalConsoleMethods[method]; - } - }, - _drainPlugins: function _drainPlugins() { - var self = this; // FIX ME TODO +// Default Node.js REPL depth +var MAX_SERIALIZE_EXCEPTION_DEPTH = 3; +// 50kB, as 100kB is max payload size, so half sounds reasonable +var MAX_SERIALIZE_EXCEPTION_SIZE = 50 * 1024; +var MAX_SERIALIZE_KEYS_LENGTH = 40; - each(this._plugins, function (_, plugin) { - var installer = plugin[0]; - var args = plugin[1]; - installer.apply(self, [self].concat(args)); - }); - }, - _parseDSN: function _parseDSN(str) { - var m = dsnPattern.exec(str), - dsn = {}, - i = 7; +function utf8Length(value) { + return ~-encodeURI(value).split(/%..|./).length; +} - try { - while (i--) { - dsn[dsnKeys[i]] = m[i] || ''; - } - } catch (e) { - throw new configError('Invalid DSN: ' + str); - } +function jsonSize(value) { + return utf8Length(JSON.stringify(value)); +} - if (dsn.pass && !this._globalOptions.allowSecretKey) { - throw new configError('Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key'); - } +function serializeValue(value) { + if (typeof value === 'string') { + var maxLength = 40; + return truncate(value, maxLength); + } else if ( + typeof value === 'number' || + typeof value === 'boolean' || + typeof value === 'undefined' + ) { + return value; + } - return dsn; - }, - _getGlobalServer: function _getGlobalServer(uri) { - // assemble the endpoint from the uri pieces - var globalServer = '//' + uri.host + (uri.port ? ':' + uri.port : ''); + var type = Object.prototype.toString.call(value); - if (uri.protocol) { - globalServer = uri.protocol + ':' + globalServer; - } + // Node.js REPL notation + if (type === '[object Object]') return '[Object]'; + if (type === '[object Array]') return '[Array]'; + if (type === '[object Function]') + return value.name ? '[Function: ' + value.name + ']' : '[Function]'; - return globalServer; - }, - _handleOnErrorStackInfo: function _handleOnErrorStackInfo() { - // if we are intentionally ignoring errors via onerror, bail out - if (!this._ignoreOnError) { - this._handleStackInfo.apply(this, arguments); - } - }, - _handleStackInfo: function _handleStackInfo(stackInfo, options) { - var frames = this._prepareFrames(stackInfo, options); + return value; +} - this._triggerEvent('handle', { - stackInfo: stackInfo, - options: options +function serializeObject(value, depth) { + if (depth === 0) return serializeValue(value); + + if (isPlainObject(value)) { + return Object.keys(value).reduce(function(acc, key) { + acc[key] = serializeObject(value[key], depth - 1); + return acc; + }, {}); + } else if (Array.isArray(value)) { + return value.map(function(val) { + return serializeObject(val, depth - 1); }); + } - this._processException(stackInfo.name, stackInfo.message, stackInfo.url, stackInfo.lineno, frames, options); - }, - _prepareFrames: function _prepareFrames(stackInfo, options) { - var self = this; - var frames = []; - - if (stackInfo.stack && stackInfo.stack.length) { - each(stackInfo.stack, function (i, stack) { - var frame = self._normalizeFrame(stack, stackInfo.url); + return serializeValue(value); +} - if (frame) { - frames.push(frame); - } - }); // e.g. frames captured via captureMessage throw +function serializeException(ex, depth, maxSize) { + if (!isPlainObject(ex)) return ex; - if (options && options.trimHeadFrames) { - for (var j = 0; j < options.trimHeadFrames && j < frames.length; j++) { - frames[j].in_app = false; - } - } - } + depth = typeof depth !== 'number' ? MAX_SERIALIZE_EXCEPTION_DEPTH : depth; + maxSize = typeof depth !== 'number' ? MAX_SERIALIZE_EXCEPTION_SIZE : maxSize; - frames = frames.slice(0, this._globalOptions.stackTraceLimit); - return frames; - }, - _normalizeFrame: function _normalizeFrame(frame, stackInfoUrl) { - // normalize the frames data - var normalized = { - filename: frame.url, - lineno: frame.line, - colno: frame.column, - function: frame.func || '?' - }; // Case when we don't have any information about the error - // E.g. throwing a string or raw object, instead of an `Error` in Firefox - // Generating synthetic error doesn't add any value here - // - // We should probably somehow let a user know that they should fix their code + var serialized = serializeObject(ex, depth); - if (!frame.url) { - normalized.filename = stackInfoUrl; // fallback to whole stacks url from onerror handler - } + if (jsonSize(stringify(serialized)) > maxSize) { + return serializeException(ex, depth - 1); + } - normalized.in_app = !( // determine if an exception came from outside of our app - // first we check the global includePaths list. - !!this._globalOptions.includePaths.test && !this._globalOptions.includePaths.test(normalized.filename) || // Now we check for fun, if the function name is Raven or TraceKit - /(Raven|TraceKit)\./.test(normalized['function']) || // finally, we do a last ditch effort and check for raven.min.js - /raven\.(min\.)?js$/.test(normalized.filename)); - return normalized; - }, - _processException: function _processException(type, message, fileurl, lineno, frames, options) { - var prefixedMessage = (type ? type + ': ' : '') + (message || ''); + return serialized; +} - if (!!this._globalOptions.ignoreErrors.test && (this._globalOptions.ignoreErrors.test(message) || this._globalOptions.ignoreErrors.test(prefixedMessage))) { - return; - } +function serializeKeysForMessage(keys, maxLength) { + if (typeof keys === 'number' || typeof keys === 'string') return keys.toString(); + if (!Array.isArray(keys)) return ''; - var stacktrace; + keys = keys.filter(function(key) { + return typeof key === 'string'; + }); + if (keys.length === 0) return '[object has no keys]'; - if (frames && frames.length) { - fileurl = frames[0].filename || fileurl; // Sentry expects frames oldest to newest - // and JS sends them as newest to oldest + maxLength = typeof maxLength !== 'number' ? MAX_SERIALIZE_KEYS_LENGTH : maxLength; + if (keys[0].length >= maxLength) return keys[0]; - frames.reverse(); - stacktrace = { - frames: frames - }; - } else if (fileurl) { - stacktrace = { - frames: [{ - filename: fileurl, - lineno: lineno, - in_app: true - }] - }; - } + for (var usedKeys = keys.length; usedKeys > 0; usedKeys--) { + var serialized = keys.slice(0, usedKeys).join(', '); + if (serialized.length > maxLength) continue; + if (usedKeys === keys.length) return serialized; + return serialized + '\u2026'; + } - if (!!this._globalOptions.ignoreUrls.test && this._globalOptions.ignoreUrls.test(fileurl)) { - return; - } + return ''; +} - if (!!this._globalOptions.whitelistUrls.test && !this._globalOptions.whitelistUrls.test(fileurl)) { - return; - } +function sanitize(input, sanitizeKeys) { + if (!isArray(sanitizeKeys) || (isArray(sanitizeKeys) && sanitizeKeys.length === 0)) + return input; - var data = objectMerge({ - // sentry.interfaces.Exception - exception: { - values: [{ - type: type, - value: message, - stacktrace: stacktrace - }] - }, - culprit: fileurl - }, options); // Fire away! + var sanitizeRegExp = joinRegExp(sanitizeKeys); + var sanitizeMask = '********'; + var safeInput; - this._send(data); - }, - _trimPacket: function _trimPacket(data) { - // For now, we only want to truncate the two different messages - // but this could/should be expanded to just trim everything - var max = this._globalOptions.maxMessageLength; + try { + safeInput = JSON.parse(stringify(input)); + } catch (o_O) { + return input; + } - if (data.message) { - data.message = truncate(data.message, max); + function sanitizeWorker(workerInput) { + if (isArray(workerInput)) { + return workerInput.map(function(val) { + return sanitizeWorker(val); + }); } - if (data.exception) { - var exception = data.exception.values[0]; - exception.value = truncate(exception.value, max); + if (isPlainObject(workerInput)) { + return Object.keys(workerInput).reduce(function(acc, k) { + if (sanitizeRegExp.test(k)) { + acc[k] = sanitizeMask; + } else { + acc[k] = sanitizeWorker(workerInput[k]); + } + return acc; + }, {}); } - var request = data.request; + return workerInput; + } - if (request) { - if (request.url) { - request.url = truncate(request.url, this._globalOptions.maxUrlLength); - } + return sanitizeWorker(safeInput); +} - if (request.Referer) { - request.Referer = truncate(request.Referer, this._globalOptions.maxUrlLength); - } - } +module.exports = { + isObject: isObject, + isError: isError, + isErrorEvent: isErrorEvent, + isUndefined: isUndefined, + isFunction: isFunction, + isPlainObject: isPlainObject, + isString: isString, + isArray: isArray, + isEmptyObject: isEmptyObject, + supportsErrorEvent: supportsErrorEvent, + supportsFetch: supportsFetch, + supportsReferrerPolicy: supportsReferrerPolicy, + supportsPromiseRejectionEvent: supportsPromiseRejectionEvent, + wrappedCallback: wrappedCallback, + each: each, + objectMerge: objectMerge, + truncate: truncate, + objectFrozen: objectFrozen, + hasKey: hasKey, + joinRegExp: joinRegExp, + urlencode: urlencode, + uuid4: uuid4, + htmlTreeAsString: htmlTreeAsString, + htmlElementAsString: htmlElementAsString, + isSameException: isSameException, + isSameStacktrace: isSameStacktrace, + parseUrl: parseUrl, + fill: fill, + safeJoin: safeJoin, + serializeException: serializeException, + serializeKeysForMessage: serializeKeysForMessage, + sanitize: sanitize +}; - if (data.breadcrumbs && data.breadcrumbs.values) this._trimBreadcrumbs(data.breadcrumbs); - return data; - }, +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"8":8}],7:[function(_dereq_,module,exports){ +(function (global){ +var utils = _dereq_(6); - /** - * Truncate breadcrumb values (right now just URLs) - */ - _trimBreadcrumbs: function _trimBreadcrumbs(breadcrumbs) { - // known breadcrumb properties with urls - // TODO: also consider arbitrary prop values that start with (https?)?:// - var urlProps = ['to', 'from', 'url'], - urlProp, - crumb, - data; +/* + TraceKit - Cross brower stack traces - for (var i = 0; i < breadcrumbs.values.length; ++i) { - crumb = breadcrumbs.values[i]; - if (!crumb.hasOwnProperty('data') || !isObject(crumb.data) || objectFrozen(crumb.data)) continue; - data = objectMerge({}, crumb.data); + This was originally forked from github.com/occ/TraceKit, but has since been + largely re-written and is now maintained as part of raven-js. Tests for + this are in test/vendor. - for (var j = 0; j < urlProps.length; ++j) { - urlProp = urlProps[j]; + MIT license +*/ - if (data.hasOwnProperty(urlProp) && data[urlProp]) { - data[urlProp] = truncate(data[urlProp], this._globalOptions.maxUrlLength); - } - } +var TraceKit = { + collectWindowErrors: true, + debug: false +}; - breadcrumbs.values[i].data = data; - } - }, - _getHttpData: function _getHttpData() { - if (!this._hasNavigator && !this._hasDocument) return; - var httpData = {}; +// This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) +var _window = + typeof window !== 'undefined' + ? window + : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; - if (this._hasNavigator && _navigator.userAgent) { - httpData.headers = { - 'User-Agent': navigator.userAgent - }; - } // Check in `window` instead of `document`, as we may be in ServiceWorker environment +// global reference to slice +var _slice = [].slice; +var UNKNOWN_FUNCTION = '?'; +// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error#Error_types +var ERROR_TYPES_RE = /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/; - if (_window$1.location && _window$1.location.href) { - httpData.url = _window$1.location.href; - } +function getLocationHref() { + if (typeof document === 'undefined' || document.location == null) return ''; - if (this._hasDocument && _document.referrer) { - if (!httpData.headers) httpData.headers = {}; - httpData.headers.Referer = _document.referrer; - } + return document.location.href; +} - return httpData; - }, - _resetBackoff: function _resetBackoff() { - this._backoffDuration = 0; - this._backoffStart = null; - }, - _shouldBackoff: function _shouldBackoff() { - return this._backoffDuration && now() - this._backoffStart < this._backoffDuration; - }, +/** + * TraceKit.report: cross-browser processing of unhandled exceptions + * + * Syntax: + * TraceKit.report.subscribe(function(stackInfo) { ... }) + * TraceKit.report.unsubscribe(function(stackInfo) { ... }) + * TraceKit.report(exception) + * try { ...code... } catch(ex) { TraceKit.report(ex); } + * + * Supports: + * - Firefox: full stack trace with line numbers, plus column number + * on top frame; column number is not guaranteed + * - Opera: full stack trace with line and column numbers + * - Chrome: full stack trace with line and column numbers + * - Safari: line and column number for the top frame only; some frames + * may be missing, and column number is not guaranteed + * - IE: line and column number for the top frame only; some frames + * may be missing, and column number is not guaranteed + * + * In theory, TraceKit should work on all of the following versions: + * - IE5.5+ (only 8.0 tested) + * - Firefox 0.9+ (only 3.5+ tested) + * - Opera 7+ (only 10.50 tested; versions 9 and earlier may require + * Exceptions Have Stacktrace to be enabled in opera:config) + * - Safari 3+ (only 4+ tested) + * - Chrome 1+ (only 5+ tested) + * - Konqueror 3.5+ (untested) + * + * Requires TraceKit.computeStackTrace. + * + * Tries to catch all unhandled exceptions and report them to the + * subscribed handlers. Please note that TraceKit.report will rethrow the + * exception. This is REQUIRED in order to get a useful stack trace in IE. + * If the exception does not reach the top of the browser, you will only + * get a stack trace from the point where TraceKit.report was called. + * + * Handlers receive a stackInfo object as described in the + * TraceKit.computeStackTrace docs. + */ +TraceKit.report = (function reportModuleWrapper() { + var handlers = [], + lastArgs = null, + lastException = null, + lastExceptionStack = null; /** - * Returns true if the in-process data payload matches the signature - * of the previously-sent data - * - * NOTE: This has to be done at this level because TraceKit can generate - * data from window.onerror WITHOUT an exception object (IE8, IE9, - * other old browsers). This can take the form of an "exception" - * data object with a single frame (derived from the onerror args). + * Add a crash handler. + * @param {Function} handler */ - _isRepeatData: function _isRepeatData(current) { - var last = this._lastData; - if (!last || current.message !== last.message || // defined for captureMessage - current.culprit !== last.culprit // defined for captureException/onerror - ) return false; // Stacktrace interface (i.e. from captureMessage) + function subscribe(handler) { + installGlobalHandler(); + handlers.push(handler); + } - if (current.stacktrace || last.stacktrace) { - return isSameStacktrace(current.stacktrace, last.stacktrace); - } else if (current.exception || last.exception) { - // Exception interface (i.e. from captureException/onerror) - return isSameException(current.exception, last.exception); + /** + * Remove a crash handler. + * @param {Function} handler + */ + function unsubscribe(handler) { + for (var i = handlers.length - 1; i >= 0; --i) { + if (handlers[i] === handler) { + handlers.splice(i, 1); + } } + } - return true; - }, - _setBackoffState: function _setBackoffState(request) { - // If we are already in a backoff state, don't change anything - if (this._shouldBackoff()) { + /** + * Remove all crash handlers. + */ + function unsubscribeAll() { + uninstallGlobalHandler(); + handlers = []; + } + + /** + * Dispatch stack information to all handlers. + * @param {Object.} stack + */ + function notifyHandlers(stack, isWindowError) { + var exception = null; + if (isWindowError && !TraceKit.collectWindowErrors) { return; } + for (var i in handlers) { + if (handlers.hasOwnProperty(i)) { + try { + handlers[i].apply(null, [stack].concat(_slice.call(arguments, 2))); + } catch (inner) { + exception = inner; + } + } + } - var status = request.status; // 400 - project_id doesn't exist or some other fatal - // 401 - invalid/revoked dsn - // 429 - too many requests - - if (!(status === 400 || status === 401 || status === 429)) return; - var retry; - - try { - // If Retry-After is not in Access-Control-Expose-Headers, most - // browsers will throw an exception trying to access it - if (supportsFetch()) { - retry = request.headers.get('Retry-After'); - } else { - retry = request.getResponseHeader('Retry-After'); - } // Retry-After is returned in seconds - - - retry = parseInt(retry, 10) * 1000; - } catch (e) { - /* eslint no-empty:0 */ + if (exception) { + throw exception; } + } - this._backoffDuration = retry ? // If Sentry server returned a Retry-After value, use it - retry : // Otherwise, double the last backoff duration (starts at 1 sec) - this._backoffDuration * 2 || 1000; - this._backoffStart = now(); - }, - _send: function _send(data) { - var globalOptions = this._globalOptions; + var _oldOnerrorHandler, _onErrorHandlerInstalled; - var baseData = { - project: this._globalProject, - logger: globalOptions.logger, - platform: 'javascript' - }, - httpData = this._getHttpData(); + /** + * Ensures all global unhandled exceptions are recorded. + * Supported by Gecko and IE. + * @param {string} msg Error message. + * @param {string} url URL of script that generated the exception. + * @param {(number|string)} lineNo The line number at which the error + * occurred. + * @param {?(number|string)} colNo The column number at which the error + * occurred. + * @param {?Error} ex The actual Error object. + */ + function traceKitWindowOnError(msg, url, lineNo, colNo, ex) { + var stack = null; + // If 'ex' is ErrorEvent, get real Error from inside + var exception = utils.isErrorEvent(ex) ? ex.error : ex; + // If 'msg' is ErrorEvent, get real message from inside + var message = utils.isErrorEvent(msg) ? msg.message : msg; - if (httpData) { - baseData.request = httpData; - } // HACK: delete `trimHeadFrames` to prevent from appearing in outbound payload + if (lastExceptionStack) { + TraceKit.computeStackTrace.augmentStackTraceWithInitialElement( + lastExceptionStack, + url, + lineNo, + message + ); + processLastException(); + } else if (exception && utils.isError(exception)) { + // non-string `exception` arg; attempt to extract stack trace + // New chrome and blink send along a real error object + // Let's just report that like a normal error. + // See: https://mikewest.org/2013/08/debugging-runtime-errors-with-window-onerror + stack = TraceKit.computeStackTrace(exception); + notifyHandlers(stack, true); + } else { + var location = { + url: url, + line: lineNo, + column: colNo + }; - if (data.trimHeadFrames) delete data.trimHeadFrames; - data = objectMerge(baseData, data); // Merge in the tags and extra separately since objectMerge doesn't handle a deep merge + var name = undefined; + var groups; - data.tags = objectMerge(objectMerge({}, this._globalContext.tags), data.tags); - data.extra = objectMerge(objectMerge({}, this._globalContext.extra), data.extra); // Send along our own collected metadata with extra + if ({}.toString.call(message) === '[object String]') { + var groups = message.match(ERROR_TYPES_RE); + if (groups) { + name = groups[1]; + message = groups[2]; + } + } - data.extra['session:duration'] = now() - this._startTime; + location.func = UNKNOWN_FUNCTION; - if (this._breadcrumbs && this._breadcrumbs.length > 0) { - // intentionally make shallow copy so that additions - // to breadcrumbs aren't accidentally sent in this request - data.breadcrumbs = { - values: [].slice.call(this._breadcrumbs, 0) + stack = { + name: name, + message: message, + url: getLocationHref(), + stack: [location] }; + notifyHandlers(stack, true); } - if (this._globalContext.user) { - // sentry.interfaces.User - data.user = this._globalContext.user; - } // Include the environment if it's defined in globalOptions + if (_oldOnerrorHandler) { + return _oldOnerrorHandler.apply(this, arguments); + } + + return false; + } + + function installGlobalHandler() { + if (_onErrorHandlerInstalled) { + return; + } + _oldOnerrorHandler = _window.onerror; + _window.onerror = traceKitWindowOnError; + _onErrorHandlerInstalled = true; + } + function uninstallGlobalHandler() { + if (!_onErrorHandlerInstalled) { + return; + } + _window.onerror = _oldOnerrorHandler; + _onErrorHandlerInstalled = false; + _oldOnerrorHandler = undefined; + } - if (globalOptions.environment) data.environment = globalOptions.environment; // Include the release if it's defined in globalOptions + function processLastException() { + var _lastExceptionStack = lastExceptionStack, + _lastArgs = lastArgs; + lastArgs = null; + lastExceptionStack = null; + lastException = null; + notifyHandlers.apply(null, [_lastExceptionStack, false].concat(_lastArgs)); + } - if (globalOptions.release) data.release = globalOptions.release; // Include server_name if it's defined in globalOptions + /** + * Reports an unhandled Error to TraceKit. + * @param {Error} ex + * @param {?boolean} rethrow If false, do not re-throw the exception. + * Only used for window.onerror to not cause an infinite loop of + * rethrowing. + */ + function report(ex, rethrow) { + var args = _slice.call(arguments, 1); + if (lastExceptionStack) { + if (lastException === ex) { + return; // already caught by an inner catch block, ignore + } else { + processLastException(); + } + } - if (globalOptions.serverName) data.server_name = globalOptions.serverName; // Cleanup empty properties before sending them to the server + var stack = TraceKit.computeStackTrace(ex); + lastExceptionStack = stack; + lastException = ex; + lastArgs = args; - Object.keys(data).forEach(function (key) { - if (data[key] == null || data[key] === '' || isEmptyObject(data[key])) { - delete data[key]; + // If the stack trace is incomplete, wait for 2 seconds for + // slow slow IE to see if onerror occurs or not before reporting + // this exception; otherwise, we will end up with an incomplete + // stack trace + setTimeout(function() { + if (lastException === ex) { + processLastException(); } - }); + }, stack.incomplete ? 2000 : 0); - if (isFunction(globalOptions.dataCallback)) { - data = globalOptions.dataCallback(data) || data; - } // Why?????????? + if (rethrow !== false) { + throw ex; // re-throw to propagate to the top level (and cause window.onerror) + } + } + report.subscribe = subscribe; + report.unsubscribe = unsubscribe; + report.uninstall = unsubscribeAll; + return report; +})(); - if (!data || isEmptyObject(data)) { - return; - } // Check if the request should be filtered or not +/** + * TraceKit.computeStackTrace: cross-browser stack traces in JavaScript + * + * Syntax: + * s = TraceKit.computeStackTrace(exception) // consider using TraceKit.report instead (see below) + * Returns: + * s.name - exception name + * s.message - exception message + * s.stack[i].url - JavaScript or HTML file URL + * s.stack[i].func - function name, or empty for anonymous functions (if guessing did not work) + * s.stack[i].args - arguments passed to the function, if known + * s.stack[i].line - line number, if known + * s.stack[i].column - column number, if known + * + * Supports: + * - Firefox: full stack trace with line numbers and unreliable column + * number on top frame + * - Opera 10: full stack trace with line and column numbers + * - Opera 9-: full stack trace with line numbers + * - Chrome: full stack trace with line and column numbers + * - Safari: line and column number for the topmost stacktrace element + * only + * - IE: no line numbers whatsoever + * + * Tries to guess names of anonymous functions by looking for assignments + * in the source code. In IE and Safari, we have to guess source file names + * by searching for function bodies inside all page scripts. This will not + * work for scripts that are loaded cross-domain. + * Here be dragons: some function names may be guessed incorrectly, and + * duplicate functions may be mismatched. + * + * TraceKit.computeStackTrace should only be used for tracing purposes. + * Logging of unhandled exceptions should be done with TraceKit.report, + * which builds on top of TraceKit.computeStackTrace and provides better + * IE support by utilizing the window.onerror event to retrieve information + * about the top of the stack. + * + * Note: In IE and Safari, no stack trace is recorded on the Error object, + * so computeStackTrace instead walks its *own* chain of callers. + * This means that: + * * in Safari, some methods may be missing from the stack trace; + * * in IE, the topmost function in the stack trace will always be the + * caller of computeStackTrace. + * + * This is okay for tracing (because you are likely to be calling + * computeStackTrace from the function you want to be the topmost element + * of the stack trace anyway), but not okay for logging unhandled + * exceptions (because your catch block will likely be far away from the + * inner function that actually caused the exception). + * + */ +TraceKit.computeStackTrace = (function computeStackTraceWrapper() { + // Contents of Exception in various browsers. + // + // SAFARI: + // ex.message = Can't find variable: qq + // ex.line = 59 + // ex.sourceId = 580238192 + // ex.sourceURL = http://... + // ex.expressionBeginOffset = 96 + // ex.expressionCaretOffset = 98 + // ex.expressionEndOffset = 98 + // ex.name = ReferenceError + // + // FIREFOX: + // ex.message = qq is not defined + // ex.fileName = http://... + // ex.lineNumber = 59 + // ex.columnNumber = 69 + // ex.stack = ...stack trace... (see the example below) + // ex.name = ReferenceError + // + // CHROME: + // ex.message = qq is not defined + // ex.name = ReferenceError + // ex.type = not_defined + // ex.arguments = ['aa'] + // ex.stack = ...stack trace... + // + // INTERNET EXPLORER: + // ex.message = ... + // ex.name = ReferenceError + // + // OPERA: + // ex.message = ...message... (see the example below) + // ex.name = ReferenceError + // ex.opera#sourceloc = 11 (pretty much useless, duplicates the info in ex.message) + // ex.stacktrace = n/a; see 'opera:config#UserPrefs|Exceptions Have Stacktrace' + /** + * Computes stack trace information from the stack property. + * Chrome and Gecko use this property. + * @param {Error} ex + * @return {?Object.} Stack trace information. + */ + function computeStackTraceFromStackProp(ex) { + if (typeof ex.stack === 'undefined' || !ex.stack) return; - if (isFunction(globalOptions.shouldSendCallback) && !globalOptions.shouldSendCallback(data)) { - return; - } // Backoff state: Sentry server previously responded w/ an error (e.g. 429 - too many requests), - // so drop requests until "cool-off" period has elapsed. + var chrome = /^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i; + var winjs = /^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i; + // NOTE: blob urls are now supposed to always have an origin, therefore it's format + // which is `blob:http://url/path/with-some-uuid`, is matched by `blob.*?:\/` as well + var gecko = /^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i; + // Used to additionally parse URL/line/column from eval frames + var geckoEval = /(\S+) line (\d+)(?: > eval line \d+)* > eval/i; + var chromeEval = /\((\S*)(?::(\d+))(?::(\d+))\)/; + var lines = ex.stack.split('\n'); + var stack = []; + var submatch; + var parts; + var element; + var reference = /^(.*) is undefined$/.exec(ex.message); + for (var i = 0, j = lines.length; i < j; ++i) { + if ((parts = chrome.exec(lines[i]))) { + var isNative = parts[2] && parts[2].indexOf('native') === 0; // start of line + var isEval = parts[2] && parts[2].indexOf('eval') === 0; // start of line + if (isEval && (submatch = chromeEval.exec(parts[2]))) { + // throw out eval line/column and use top-most line/column number + parts[2] = submatch[1]; // url + parts[3] = submatch[2]; // line + parts[4] = submatch[3]; // column + } + element = { + url: !isNative ? parts[2] : null, + func: parts[1] || UNKNOWN_FUNCTION, + args: isNative ? [parts[2]] : [], + line: parts[3] ? +parts[3] : null, + column: parts[4] ? +parts[4] : null + }; + } else if ((parts = winjs.exec(lines[i]))) { + element = { + url: parts[2], + func: parts[1] || UNKNOWN_FUNCTION, + args: [], + line: +parts[3], + column: parts[4] ? +parts[4] : null + }; + } else if ((parts = gecko.exec(lines[i]))) { + var isEval = parts[3] && parts[3].indexOf(' > eval') > -1; + if (isEval && (submatch = geckoEval.exec(parts[3]))) { + // throw out eval line/column and use top-most line number + parts[3] = submatch[1]; + parts[4] = submatch[2]; + parts[5] = null; // no column when eval + } else if (i === 0 && !parts[5] && typeof ex.columnNumber !== 'undefined') { + // FireFox uses this awesome columnNumber property for its top frame + // Also note, Firefox's column number is 0-based and everything else expects 1-based, + // so adding 1 + // NOTE: this hack doesn't work if top-most frame is eval + stack[0].column = ex.columnNumber + 1; + } + element = { + url: parts[3], + func: parts[1] || UNKNOWN_FUNCTION, + args: parts[2] ? parts[2].split(',') : [], + line: parts[4] ? +parts[4] : null, + column: parts[5] ? +parts[5] : null + }; + } else { + continue; + } - if (this._shouldBackoff()) { - this._logDebug('warn', 'Raven dropped error due to backoff: ', data); + if (!element.func && element.line) { + element.func = UNKNOWN_FUNCTION; + } - return; + stack.push(element); } - if (typeof globalOptions.sampleRate === 'number') { - if (Math.random() < globalOptions.sampleRate) { - this._sendProcessedPayload(data); - } - } else { - this._sendProcessedPayload(data); + if (!stack.length) { + return null; } - }, - _getUuid: function _getUuid() { - return uuid4(); - }, - _sendProcessedPayload: function _sendProcessedPayload(data, callback) { - var self = this; - var globalOptions = this._globalOptions; - if (!this.isSetup()) return; // Try and clean up the packet before sending by truncating long values - - data = this._trimPacket(data); // ideally duplicate error testing should occur *before* dataCallback/shouldSendCallback, - // but this would require copying an un-truncated copy of the data packet, which can be - // arbitrarily deep (extra_data) -- could be worthwhile? will revisit - - if (!this._globalOptions.allowDuplicates && this._isRepeatData(data)) { - this._logDebug('warn', 'Raven dropped repeat event: ', data); - return; - } // Send along an event_id if not explicitly passed. - // This event_id can be used to reference the error within Sentry itself. - // Set lastEventId after we know the error should actually be sent - - - this._lastEventId = data.event_id || (data.event_id = this._getUuid()); // Store outbound payload after trim - - this._lastData = data; - - this._logDebug('debug', 'Raven about to send:', data); - - var auth = { - sentry_version: '7', - sentry_client: 'raven-js/' + this.VERSION, - sentry_key: this._globalKey + return { + name: ex.name, + message: ex.message, + url: getLocationHref(), + stack: stack }; + } - if (this._globalSecret) { - auth.sentry_secret = this._globalSecret; - } - - var exception = data.exception && data.exception.values[0]; // only capture 'sentry' breadcrumb is autoBreadcrumbs is truthy + /** + * Adds information about the first frame to incomplete stack traces. + * Safari and IE require this to get complete data on the first frame. + * @param {Object.} stackInfo Stack trace information from + * one of the compute* methods. + * @param {string} url The URL of the script that caused an error. + * @param {(number|string)} lineNo The line number of the script that + * caused an error. + * @param {string=} message The error generated by the browser, which + * hopefully contains the name of the object that caused the error. + * @return {boolean} Whether or not the stack information was + * augmented. + */ + function augmentStackTraceWithInitialElement(stackInfo, url, lineNo, message) { + var initial = { + url: url, + line: lineNo + }; - if (this._globalOptions.autoBreadcrumbs && this._globalOptions.autoBreadcrumbs.sentry) { - this.captureBreadcrumb({ - category: 'sentry', - message: exception ? (exception.type ? exception.type + ': ' : '') + exception.value : data.message, - event_id: data.event_id, - level: data.level || 'error' // presume error unless specified + if (initial.url && initial.line) { + stackInfo.incomplete = false; - }); - } + if (!initial.func) { + initial.func = UNKNOWN_FUNCTION; + } - var url = this._globalEndpoint; + if (stackInfo.stack.length > 0) { + if (stackInfo.stack[0].url === initial.url) { + if (stackInfo.stack[0].line === initial.line) { + return false; // already in stack trace + } else if ( + !stackInfo.stack[0].line && + stackInfo.stack[0].func === initial.func + ) { + stackInfo.stack[0].line = initial.line; + return false; + } + } + } - (globalOptions.transport || this._makeRequest).call(this, { - url: url, - auth: auth, - data: data, - options: globalOptions, - onSuccess: function success() { - self._resetBackoff(); + stackInfo.stack.unshift(initial); + stackInfo.partial = true; + return true; + } else { + stackInfo.incomplete = true; + } - self._triggerEvent('success', { - data: data, - src: url - }); + return false; + } - callback && callback(); - }, - onError: function failure(error) { - self._logDebug('error', 'Raven transport failed to send: ', error); + /** + * Computes stack trace information by walking the arguments.caller + * chain at the time the exception occurred. This will cause earlier + * frames to be missed but is the only way to get any stack trace in + * Safari and IE. The top frame is restored by + * {@link augmentStackTraceWithInitialElement}. + * @param {Error} ex + * @return {?Object.} Stack trace information. + */ + function computeStackTraceByWalkingCallerChain(ex, depth) { + var functionName = /function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i, + stack = [], + funcs = {}, + recursion = false, + parts, + item, + source; + + for ( + var curr = computeStackTraceByWalkingCallerChain.caller; + curr && !recursion; + curr = curr.caller + ) { + if (curr === computeStackTrace || curr === TraceKit.report) { + // console.log('skipping internal function'); + continue; + } - if (error.request) { - self._setBackoffState(error.request); - } + item = { + url: null, + func: UNKNOWN_FUNCTION, + line: null, + column: null + }; - self._triggerEvent('failure', { - data: data, - src: url - }); + if (curr.name) { + item.func = curr.name; + } else if ((parts = functionName.exec(curr.toString()))) { + item.func = parts[1]; + } - error = error || new Error('Raven send failed (no additional details provided)'); - callback && callback(error); + if (typeof item.func === 'undefined') { + try { + item.func = parts.input.substring(0, parts.input.indexOf('{')); + } catch (e) {} } - }); - }, - _makeRequest: function _makeRequest(opts) { - // Auth is intentionally sent as part of query string (NOT as custom HTTP header) to avoid preflight CORS requests - var url = opts.url + '?' + urlencode(opts.auth); - var evaluatedHeaders = null; - var evaluatedFetchParameters = {}; - if (opts.options.headers) { - evaluatedHeaders = this._evaluateHash(opts.options.headers); + if (funcs['' + curr]) { + recursion = true; + } else { + funcs['' + curr] = true; + } + + stack.push(item); } - if (opts.options.fetchParameters) { - evaluatedFetchParameters = this._evaluateHash(opts.options.fetchParameters); + if (depth) { + // console.log('depth is ' + depth); + // console.log('stack is ' + stack.length); + stack.splice(0, depth); } - if (supportsFetch()) { - evaluatedFetchParameters.body = stringify_1(opts.data); - var defaultFetchOptions = objectMerge({}, this._fetchDefaults); - var fetchOptions = objectMerge(defaultFetchOptions, evaluatedFetchParameters); + var result = { + name: ex.name, + message: ex.message, + url: getLocationHref(), + stack: stack + }; + augmentStackTraceWithInitialElement( + result, + ex.sourceURL || ex.fileName, + ex.line || ex.lineNumber, + ex.message || ex.description + ); + return result; + } - if (evaluatedHeaders) { - fetchOptions.headers = evaluatedHeaders; - } + /** + * Computes a stack trace for an exception. + * @param {Error} ex + * @param {(string|number)=} depth + */ + function computeStackTrace(ex, depth) { + var stack = null; + depth = depth == null ? 0 : +depth; - return _window$1.fetch(url, fetchOptions).then(function (response) { - if (response.ok) { - opts.onSuccess && opts.onSuccess(); - } else { - var error = new Error('Sentry error code: ' + response.status); // It's called request only to keep compatibility with XHR interface - // and not add more redundant checks in setBackoffState method + try { + stack = computeStackTraceFromStackProp(ex); + if (stack) { + return stack; + } + } catch (e) { + if (TraceKit.debug) { + throw e; + } + } - error.request = response; - opts.onError && opts.onError(error); - } - })['catch'](function () { - opts.onError && opts.onError(new Error('Sentry error code: network unavailable')); - }); + try { + stack = computeStackTraceByWalkingCallerChain(ex, depth + 1); + if (stack) { + return stack; + } + } catch (e) { + if (TraceKit.debug) { + throw e; + } } + return { + name: ex.name, + message: ex.message, + url: getLocationHref() + }; + } - var request = _window$1.XMLHttpRequest && new _window$1.XMLHttpRequest(); - if (!request) return; // if browser doesn't support CORS (e.g. IE7), we are out of luck + computeStackTrace.augmentStackTraceWithInitialElement = augmentStackTraceWithInitialElement; + computeStackTrace.computeStackTraceFromStackProp = computeStackTraceFromStackProp; - var hasCORS = 'withCredentials' in request || typeof XDomainRequest !== 'undefined'; - if (!hasCORS) return; + return computeStackTrace; +})(); - if ('withCredentials' in request) { - request.onreadystatechange = function () { - if (request.readyState !== 4) { - return; - } else if (request.status === 200) { - opts.onSuccess && opts.onSuccess(); - } else if (opts.onError) { - var err = new Error('Sentry error code: ' + request.status); - err.request = request; - opts.onError(err); - } - }; - } else { - request = new XDomainRequest(); // xdomainrequest cannot go http -> https (or vice versa), - // so always use protocol relative +module.exports = TraceKit; - url = url.replace(/^https?:/, ''); // onreadystatechange not supported by XDomainRequest +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"6":6}],8:[function(_dereq_,module,exports){ +/* + json-stringify-safe + Like JSON.stringify, but doesn't throw on circular references. - if (opts.onSuccess) { - request.onload = opts.onSuccess; - } + Originally forked from https://github.com/isaacs/json-stringify-safe + version 5.0.1 on 3/8/2017 and modified to handle Errors serialization + and IE8 compatibility. Tests for this are in test/vendor. - if (opts.onError) { - request.onerror = function () { - var err = new Error('Sentry error code: XDomainRequest'); - err.request = request; - opts.onError(err); - }; - } - } + ISC license: https://github.com/isaacs/json-stringify-safe/blob/master/LICENSE +*/ - request.open('POST', url); +exports = module.exports = stringify; +exports.getSerialize = serializer; - if (evaluatedHeaders) { - each(evaluatedHeaders, function (key, value) { - request.setRequestHeader(key, value); - }); - } +function indexOf(haystack, needle) { + for (var i = 0; i < haystack.length; ++i) { + if (haystack[i] === needle) return i; + } + return -1; +} - request.send(stringify_1(opts.data)); - }, - _evaluateHash: function _evaluateHash(hash) { - var evaluated = {}; +function stringify(obj, replacer, spaces, cycleReplacer) { + return JSON.stringify(obj, serializer(replacer, cycleReplacer), spaces); +} - for (var key in hash) { - if (hash.hasOwnProperty(key)) { - var value = hash[key]; - evaluated[key] = typeof value === 'function' ? value() : value; - } - } +// https://github.com/ftlabs/js-abbreviate/blob/fa709e5f139e7770a71827b1893f22418097fbda/index.js#L95-L106 +function stringifyError(value) { + var err = { + // These properties are implemented as magical getters and don't show up in for in + stack: value.stack, + message: value.message, + name: value.name + }; - return evaluated; - }, - _logDebug: function _logDebug(level) { - if (this._originalConsoleMethods[level] && this.debug) { - // In IE<10 console methods do not have their own 'apply' method - Function.prototype.apply.call(this._originalConsoleMethods[level], this._originalConsole, [].slice.call(arguments, 1)); - } - }, - _mergeContext: function _mergeContext(key, context) { - if (isUndefined(context)) { - delete this._globalContext[key]; - } else { - this._globalContext[key] = objectMerge(this._globalContext[key] || {}, context); + for (var i in value) { + if (Object.prototype.hasOwnProperty.call(value, i)) { + err[i] = value[i]; } } -}; // Deprecations -Raven$1.prototype.setUser = Raven$1.prototype.setUserContext; -Raven$1.prototype.setReleaseContext = Raven$1.prototype.setRelease; -var raven = Raven$1; + return err; +} + +function serializer(replacer, cycleReplacer) { + var stack = []; + var keys = []; -/** - * Enforces a single instance of the Raven client, and the - * main entry point for Raven. If you are a consumer of the - * Raven library, you SHOULD load this file (vs raven.js). - **/ -// This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) + if (cycleReplacer == null) { + cycleReplacer = function(key, value) { + if (stack[0] === value) { + return '[Circular ~]'; + } + return '[Circular ~.' + keys.slice(0, indexOf(stack, value)).join('.') + ']'; + }; + } -var _window = typeof window !== 'undefined' ? window : typeof commonjsGlobal !== 'undefined' ? commonjsGlobal : typeof self !== 'undefined' ? self : {}; + return function(key, value) { + if (stack.length > 0) { + var thisPos = indexOf(stack, this); + ~thisPos ? stack.splice(thisPos + 1) : stack.push(this); + ~thisPos ? keys.splice(thisPos, Infinity, key) : keys.push(key); -var _Raven = _window.Raven; -var Raven = new raven(); + if (~indexOf(stack, value)) { + value = cycleReplacer.call(this, key, value); + } + } else { + stack.push(value); + } + + return replacer == null + ? value instanceof Error ? stringifyError(value) : value + : replacer.call(this, key, value); + }; +} + +},{}],9:[function(_dereq_,module,exports){ /* - * Allow multiple versions of Raven to be installed. - * Strip Raven from the global context and returns the instance. + * JavaScript MD5 + * https://github.com/blueimp/JavaScript-MD5 * - * @return {Raven} + * Copyright 2011, Sebastian Tschan + * https://blueimp.net + * + * Licensed under the MIT license: + * https://opensource.org/licenses/MIT + * + * Based on + * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message + * Digest Algorithm, as defined in RFC 1321. + * Version 2.2 Copyright (C) Paul Johnston 1999 - 2009 + * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet + * Distributed under the BSD License + * See http://pajhome.org.uk/crypt/md5 for more info. */ -Raven.noConflict = function () { - _window.Raven = _Raven; - return Raven; -}; +/* +* Add integers, wrapping at 2^32. This uses 16-bit operations internally +* to work around bugs in some JS interpreters. +*/ +function safeAdd(x, y) { + var lsw = (x & 0xffff) + (y & 0xffff); + var msw = (x >> 16) + (y >> 16) + (lsw >> 16); + return (msw << 16) | (lsw & 0xffff); +} -Raven.afterLoad(); -var singleton = Raven; +/* +* Bitwise rotate a 32-bit number to the left. +*/ +function bitRotateLeft(num, cnt) { + return (num << cnt) | (num >>> (32 - cnt)); +} -/*global define*/ +/* +* These functions implement the four basic operations the algorithm uses. +*/ +function md5cmn(q, a, b, x, s, t) { + return safeAdd(bitRotateLeft(safeAdd(safeAdd(a, q), safeAdd(x, t)), s), b); +} +function md5ff(a, b, c, d, x, s, t) { + return md5cmn((b & c) | (~b & d), a, b, x, s, t); +} +function md5gg(a, b, c, d, x, s, t) { + return md5cmn((b & d) | (c & ~d), a, b, x, s, t); +} +function md5hh(a, b, c, d, x, s, t) { + return md5cmn(b ^ c ^ d, a, b, x, s, t); +} +function md5ii(a, b, c, d, x, s, t) { + return md5cmn(c ^ (b | ~d), a, b, x, s, t); +} -/** - * require.js plugin - * - * Automatically wrap define/require callbacks. (Experimental) - */ +/* +* Calculate the MD5 of an array of little-endian words, and a bit length. +*/ +function binlMD5(x, len) { + /* append padding */ + x[len >> 5] |= 0x80 << (len % 32); + x[(((len + 64) >>> 9) << 4) + 14] = len; + + var i; + var olda; + var oldb; + var oldc; + var oldd; + var a = 1732584193; + var b = -271733879; + var c = -1732584194; + var d = 271733878; + + for (i = 0; i < x.length; i += 16) { + olda = a; + oldb = b; + oldc = c; + oldd = d; + + a = md5ff(a, b, c, d, x[i], 7, -680876936); + d = md5ff(d, a, b, c, x[i + 1], 12, -389564586); + c = md5ff(c, d, a, b, x[i + 2], 17, 606105819); + b = md5ff(b, c, d, a, x[i + 3], 22, -1044525330); + a = md5ff(a, b, c, d, x[i + 4], 7, -176418897); + d = md5ff(d, a, b, c, x[i + 5], 12, 1200080426); + c = md5ff(c, d, a, b, x[i + 6], 17, -1473231341); + b = md5ff(b, c, d, a, x[i + 7], 22, -45705983); + a = md5ff(a, b, c, d, x[i + 8], 7, 1770035416); + d = md5ff(d, a, b, c, x[i + 9], 12, -1958414417); + c = md5ff(c, d, a, b, x[i + 10], 17, -42063); + b = md5ff(b, c, d, a, x[i + 11], 22, -1990404162); + a = md5ff(a, b, c, d, x[i + 12], 7, 1804603682); + d = md5ff(d, a, b, c, x[i + 13], 12, -40341101); + c = md5ff(c, d, a, b, x[i + 14], 17, -1502002290); + b = md5ff(b, c, d, a, x[i + 15], 22, 1236535329); + + a = md5gg(a, b, c, d, x[i + 1], 5, -165796510); + d = md5gg(d, a, b, c, x[i + 6], 9, -1069501632); + c = md5gg(c, d, a, b, x[i + 11], 14, 643717713); + b = md5gg(b, c, d, a, x[i], 20, -373897302); + a = md5gg(a, b, c, d, x[i + 5], 5, -701558691); + d = md5gg(d, a, b, c, x[i + 10], 9, 38016083); + c = md5gg(c, d, a, b, x[i + 15], 14, -660478335); + b = md5gg(b, c, d, a, x[i + 4], 20, -405537848); + a = md5gg(a, b, c, d, x[i + 9], 5, 568446438); + d = md5gg(d, a, b, c, x[i + 14], 9, -1019803690); + c = md5gg(c, d, a, b, x[i + 3], 14, -187363961); + b = md5gg(b, c, d, a, x[i + 8], 20, 1163531501); + a = md5gg(a, b, c, d, x[i + 13], 5, -1444681467); + d = md5gg(d, a, b, c, x[i + 2], 9, -51403784); + c = md5gg(c, d, a, b, x[i + 7], 14, 1735328473); + b = md5gg(b, c, d, a, x[i + 12], 20, -1926607734); + + a = md5hh(a, b, c, d, x[i + 5], 4, -378558); + d = md5hh(d, a, b, c, x[i + 8], 11, -2022574463); + c = md5hh(c, d, a, b, x[i + 11], 16, 1839030562); + b = md5hh(b, c, d, a, x[i + 14], 23, -35309556); + a = md5hh(a, b, c, d, x[i + 1], 4, -1530992060); + d = md5hh(d, a, b, c, x[i + 4], 11, 1272893353); + c = md5hh(c, d, a, b, x[i + 7], 16, -155497632); + b = md5hh(b, c, d, a, x[i + 10], 23, -1094730640); + a = md5hh(a, b, c, d, x[i + 13], 4, 681279174); + d = md5hh(d, a, b, c, x[i], 11, -358537222); + c = md5hh(c, d, a, b, x[i + 3], 16, -722521979); + b = md5hh(b, c, d, a, x[i + 6], 23, 76029189); + a = md5hh(a, b, c, d, x[i + 9], 4, -640364487); + d = md5hh(d, a, b, c, x[i + 12], 11, -421815835); + c = md5hh(c, d, a, b, x[i + 15], 16, 530742520); + b = md5hh(b, c, d, a, x[i + 2], 23, -995338651); + + a = md5ii(a, b, c, d, x[i], 6, -198630844); + d = md5ii(d, a, b, c, x[i + 7], 10, 1126891415); + c = md5ii(c, d, a, b, x[i + 14], 15, -1416354905); + b = md5ii(b, c, d, a, x[i + 5], 21, -57434055); + a = md5ii(a, b, c, d, x[i + 12], 6, 1700485571); + d = md5ii(d, a, b, c, x[i + 3], 10, -1894986606); + c = md5ii(c, d, a, b, x[i + 10], 15, -1051523); + b = md5ii(b, c, d, a, x[i + 1], 21, -2054922799); + a = md5ii(a, b, c, d, x[i + 8], 6, 1873313359); + d = md5ii(d, a, b, c, x[i + 15], 10, -30611744); + c = md5ii(c, d, a, b, x[i + 6], 15, -1560198380); + b = md5ii(b, c, d, a, x[i + 13], 21, 1309151649); + a = md5ii(a, b, c, d, x[i + 4], 6, -145523070); + d = md5ii(d, a, b, c, x[i + 11], 10, -1120210379); + c = md5ii(c, d, a, b, x[i + 2], 15, 718787259); + b = md5ii(b, c, d, a, x[i + 9], 21, -343485551); + + a = safeAdd(a, olda); + b = safeAdd(b, oldb); + c = safeAdd(c, oldc); + d = safeAdd(d, oldd); + } + return [a, b, c, d]; +} -function requirePlugin(Raven) { - if (typeof undefined === 'function' && undefined.amd) { - window.define = Raven.wrap({ - deep: false - }, undefined); - window.require = Raven.wrap({ - deep: false - }, commonjsRequire); +/* +* Convert an array of little-endian words to a string +*/ +function binl2rstr(input) { + var i; + var output = ''; + var length32 = input.length * 32; + for (i = 0; i < length32; i += 8) { + output += String.fromCharCode((input[i >> 5] >>> (i % 32)) & 0xff); + } + return output; +} + +/* +* Convert a raw string to an array of little-endian words +* Characters >255 have their high-byte silently ignored. +*/ +function rstr2binl(input) { + var i; + var output = []; + output[(input.length >> 2) - 1] = undefined; + for (i = 0; i < output.length; i += 1) { + output[i] = 0; + } + var length8 = input.length * 8; + for (i = 0; i < length8; i += 8) { + output[i >> 5] |= (input.charCodeAt(i / 8) & 0xff) << (i % 32); + } + return output; +} + +/* +* Calculate the MD5 of a raw string +*/ +function rstrMD5(s) { + return binl2rstr(binlMD5(rstr2binl(s), s.length * 8)); +} + +/* +* Calculate the HMAC-MD5, of a key and some data (raw strings) +*/ +function rstrHMACMD5(key, data) { + var i; + var bkey = rstr2binl(key); + var ipad = []; + var opad = []; + var hash; + ipad[15] = opad[15] = undefined; + if (bkey.length > 16) { + bkey = binlMD5(bkey, key.length * 8); + } + for (i = 0; i < 16; i += 1) { + ipad[i] = bkey[i] ^ 0x36363636; + opad[i] = bkey[i] ^ 0x5c5c5c5c; + } + hash = binlMD5(ipad.concat(rstr2binl(data)), 512 + data.length * 8); + return binl2rstr(binlMD5(opad.concat(hash), 512 + 128)); +} + +/* +* Convert a raw string to a hex string +*/ +function rstr2hex(input) { + var hexTab = '0123456789abcdef'; + var output = ''; + var x; + var i; + for (i = 0; i < input.length; i += 1) { + x = input.charCodeAt(i); + output += hexTab.charAt((x >>> 4) & 0x0f) + hexTab.charAt(x & 0x0f); } + return output; } -var require_1 = requirePlugin; +/* +* Encode a string as utf-8 +*/ +function str2rstrUTF8(input) { + return unescape(encodeURIComponent(input)); +} -/* This file was generated by './scripts/generate-plugin-combinations.js'! */ +/* +* Take string arguments and return either raw or hex encoded strings +*/ +function rawMD5(s) { + return rstrMD5(str2rstrUTF8(s)); +} +function hexMD5(s) { + return rstr2hex(rawMD5(s)); +} +function rawHMACMD5(k, d) { + return rstrHMACMD5(str2rstrUTF8(k), str2rstrUTF8(d)); +} +function hexHMACMD5(k, d) { + return rstr2hex(rawHMACMD5(k, d)); +} -singleton.addPlugin(require_1); -var require = {}; +function md5(string, key, raw) { + if (!key) { + if (!raw) { + return hexMD5(string); + } + return rawMD5(string); + } + if (!raw) { + return hexHMACMD5(key, string); + } + return rawHMACMD5(key, string); +} -return require; +module.exports = md5; -}))); +},{}]},{},[5,1])(5) +}); \ No newline at end of file diff --git a/dist/require/raven.min.js b/dist/require/raven.min.js index a23e2e263286..395fc09f100d 100644 --- a/dist/require/raven.min.js +++ b/dist/require/raven.min.js @@ -1,3 +1,4 @@ -/*! Raven.js 3.22.2 (1b6187b) | github.com/getsentry/raven-js */ -!function(a,b){"object"==typeof exports&&"undefined"!=typeof module?module.exports=b():"function"==typeof define&&define.amd?define(b):a.Raven=b()}(this,function(){"use strict";function a(a,b){return b={exports:{}},a(b,b.exports),b.exports}function b(a){return(b="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(a){return typeof a}:function(a){return a&&"function"==typeof Symbol&&a.constructor===Symbol&&a!==Symbol.prototype?"symbol":typeof a})(a)}function c(a){return"object"===b(a)&&null!==a}function d(a){switch({}.toString.call(a)){case"[object Error]":return!0;case"[object Exception]":return!0;case"[object DOMException]":return!0;default:return a instanceof Error}}function e(a){return l()&&"[object ErrorEvent]"==={}.toString.call(a)}function f(a){return void 0===a}function g(a){return"function"==typeof a}function h(a){return"[object Object]"===Object.prototype.toString.call(a)}function i(a){return"[object String]"===Object.prototype.toString.call(a)}function j(a){return"[object Array]"===Object.prototype.toString.call(a)}function k(a){if(!h(a))return!1;for(var b in a)if(a.hasOwnProperty(b))return!1;return!0}function l(){try{return new ErrorEvent(""),!0}catch(a){return!1}}function m(){if(!("fetch"in N))return!1;try{return new Headers,new Request(""),new Response,!0}catch(a){return!1}}function n(a){function b(b,c){var d=a(b)||b;return c?c(d)||d:d}return b}function o(a,b){var c,d;if(f(a.length))for(c in a)s(a,c)&&b.call(null,c,a[c]);else if(d=a.length)for(c=0;c ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function y(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&i(b))for(c=b.split(/\s+/),f=0;f=0;--b)l[b]===a&&l.splice(b,1)}function c(){g(),l=[]}function d(a,b){var c=null;if(!b||P.collectWindowErrors){for(var d in l)if(l.hasOwnProperty(d))try{l[d].apply(null,[a].concat(R.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function e(a,b,c,e,f){var g=null,i=O.isErrorEvent(f)?f.error:f,k=O.isErrorEvent(a)?a.message:a;if(o)P.computeStackTrace.augmentStackTraceWithInitialElement(o,b,c,k),h();else if(i&&O.isError(i))g=P.computeStackTrace(i),d(g,!0);else{var l,m={url:b,line:c,column:e},n=void 0;if("[object String]"==={}.toString.call(k)){var l=k.match(T);l&&(n=l[1],k=l[2])}m.func=S,g={name:n,message:k,url:F(),stack:[m]},d(g,!0)}return!!j&&j.apply(this,arguments)}function f(){k||(j=Q.onerror,Q.onerror=e,k=!0)}function g(){k&&(Q.onerror=j,k=!1,j=void 0)}function h(){var a=o,b=m;m=null,o=null,n=null,d.apply(null,[a,!1].concat(b))}function i(a,b){var c=R.call(arguments,1);if(o){if(n===a)return;h()}var d=P.computeStackTrace(a);if(o=d,n=a,m=c,setTimeout(function(){n===a&&h()},d.incomplete?2e3:0),b!==!1)throw a}var j,k,l=[],m=null,n=null,o=null;return i.subscribe=a,i.unsubscribe=b,i.uninstall=c,i}(),P.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,d,e=/^\s*at (.*?) ?\(((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,f=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|\[native).*?|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,g=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,h=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,i=/\((\S*)(?::(\d+))(?::(\d+))\)/,j=a.stack.split("\n"),k=[],l=(/^(.*) is undefined$/.exec(a.message),0),m=j.length;l eval")>-1;o&&(b=h.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==l||c[5]||"undefined"==typeof a.columnNumber||(k[0].column=a.columnNumber+1),d={url:c[3],func:c[1]||S,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}!d.func&&d.line&&(d.func=S),k.push(d)}return k.length?{name:a.name,message:a.message,url:F(),stack:k}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=S),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,e){for(var f,g,h=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,i=[],j={},k=!1,l=c.caller;l&&!k;l=l.caller)if(l!==d&&l!==P.report){if(g={url:null,func:S,line:null,column:null},l.name?g.func=l.name:(f=h.exec(l.toString()))&&(g.func=f[1]),"undefined"==typeof g.func)try{g.func=f.input.substring(0,f.input.indexOf("{"))}catch(m){}j[""+l]?k=!0:j[""+l]=!0,i.push(g)}e&&i.splice(0,e);var n={name:a.name,message:a.message,url:F(),stack:i};return b(n,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),n}function d(b,d){var e=null;d=null==d?0:+d;try{if(e=a(b))return e}catch(f){if(P.debug)throw f}try{if(e=c(b,d+1))return e}catch(f){if(P.debug)throw f}return{name:b.name,message:b.message,url:F()}}return d.augmentStackTraceWithInitialElement=b,d.computeStackTraceFromStackProp=a,d}();var U=P,V=a(function(a,b){function c(a,b){for(var c=0;c0){var i=c(d,this);~i?d.splice(i+1):d.push(this),~i?f.splice(i,1/0,g):f.push(g),~c(d,h)&&(h=b.call(this,g,h))}else d.push(h);return null==a?h instanceof Error?e(h):h:a.call(this,g,h)}}b=a.exports=d,b.getSerialize=f});G.prototype=new Error,G.prototype.constructor=G;var W=G,X=function(a,b,c){var d=a[b],e=a;if(b in a){var f="warn"===b?"warning":b;a[b]=function(){var a=[].slice.call(arguments),g=O.safeJoin(a," "),h={level:f,logger:"console",extra:{arguments:a}};"assert"===b?a[0]===!1&&(g="Assertion failed: "+(O.safeJoin(a.slice(1)," ")||"console.assert"),h.extra.arguments=a.slice(1),c&&c(g,h)):c&&c(g,h),d&&Function.prototype.apply.call(d,e,a)}}},Y={wrapMethod:X},Z=O.isError,$=O.isObject,_=O.isErrorEvent,aa=O.isUndefined,ba=O.isFunction,ca=O.isString,da=O.isArray,ea=O.isEmptyObject,fa=O.each,ga=O.objectMerge,ha=O.truncate,ia=O.objectFrozen,ja=O.hasKey,ka=O.joinRegExp,la=O.urlencode,ma=O.uuid4,na=O.htmlTreeAsString,oa=O.isSameException,pa=O.isSameStacktrace,qa=O.parseUrl,ra=O.fill,sa=O.supportsFetch,ta=Y.wrapMethod,ua="source protocol user pass host port path".split(" "),va=/^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/,wa="undefined"!=typeof window?window:"undefined"!=typeof L?L:"undefined"!=typeof self?self:{},xa=wa.document,ya=wa.navigator;J.prototype={VERSION:"3.22.2",debug:!1,TraceKit:U,config:function(a,b){var c=this;if(c.i)return this.C("error","Error: Raven has already been configured"),c;if(!a)return c;var d=c.m;b&&fa(b,function(a,b){"tags"===a||"extra"===a||"user"===a?c.l[a]=b:d[a]=b}),c.setDSN(a),d.ignoreErrors.push(/^Script error\.?$/),d.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/),d.ignoreErrors=ka(d.ignoreErrors),d.ignoreUrls=!!d.ignoreUrls.length&&ka(d.ignoreUrls),d.whitelistUrls=!!d.whitelistUrls.length&&ka(d.whitelistUrls),d.includePaths=ka(d.includePaths),d.maxBreadcrumbs=Math.max(0,Math.min(d.maxBreadcrumbs||100,100));var e={xhr:!0,console:!0,dom:!0,location:!0,sentry:!0},f=d.autoBreadcrumbs;"[object Object]"==={}.toString.call(f)?f=ga(e,f):f!==!1&&(f=e),d.autoBreadcrumbs=f;var g={tryCatch:!0},h=d.instrument;return"[object Object]"==={}.toString.call(h)?h=ga(g,h):h!==!1&&(h=g),d.instrument=h,U.collectWindowErrors=!!d.collectWindowErrors,c},install:function(){var a=this;return a.isSetup()&&!a.p&&(U.report.subscribe(function(){a.D.apply(a,arguments)}),a.E(),a.m.instrument&&a.m.instrument.tryCatch&&a.F(),a.m.autoBreadcrumbs&&a.G(),a.H(),a.p=!0),Error.stackTraceLimit=a.m.stackTraceLimit,this},setDSN:function(a){var b=this,c=b.I(a),d=c.path.lastIndexOf("/"),e=c.path.substr(1,d);b.J=a,b.j=c.user,b.K=c.pass&&c.pass.substr(1),b.k=c.path.substr(d+1),b.i=b.L(c),b.M=b.i+"/"+e+"api/"+b.k+"/store/",this.A()},context:function(a,b,c){return ba(a)&&(c=b||[],b=a,a=void 0),this.wrap(a,b).apply(this,c)},wrap:function(a,b,c){function d(){var d=[],f=arguments.length,g=!a||a&&a.deep!==!1;for(c&&ba(c)&&c.apply(this,arguments);f--;)d[f]=g?e.wrap(a,arguments[f]):arguments[f];try{return b.apply(this,d)}catch(h){throw e.N(),e.captureException(h,a),h}}var e=this;if(aa(b)&&!ba(a))return a;if(ba(a)&&(b=a,a=void 0),!ba(b))return b;try{if(b.a)return b;if(b.O)return b.O}catch(f){return b}for(var g in b)ja(b,g)&&(d[g]=b[g]);return d.prototype=b.prototype,b.O=d,d.a=!0,d.b=b,d},uninstall:function(){return U.report.uninstall(),this.P(),this.Q(),this.R(),Error.stackTraceLimit=this.q,this.p=!1,this},captureException:function(a,b){b=ga({trimHeadFrames:0},b?b:{});var c=!Z(a),d=!_(a),e=_(a)&&!a.error;if(c&&d||e)return this.captureMessage(a,ga(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}));_(a)&&(a=a.error),this.f=a;try{var f=U.computeStackTrace(a);this.S(f,b)}catch(g){if(a!==g)throw g}return this},captureMessage:function(a,b){if(!this.m.ignoreErrors.test||!this.m.ignoreErrors.test(a)){b=b||{};var c,d=ga({message:a+""},b);try{throw new Error(a)}catch(e){c=e}c.name=null;var f=U.computeStackTrace(c),g=da(f.stack)&&f.stack[1],h=g&&g.url||"";if((!this.m.ignoreUrls.test||!this.m.ignoreUrls.test(h))&&(!this.m.whitelistUrls.test||this.m.whitelistUrls.test(h))){if(this.m.stacktrace||b&&b.stacktrace){b=ga({fingerprint:a,trimHeadFrames:(b.trimHeadFrames||0)+1},b);var i=this.T(f,b);d.stacktrace={frames:i.reverse()}}return this.U(d),this}}},captureBreadcrumb:function(a){var b=ga({timestamp:H()/1e3},a);if(ba(this.m.breadcrumbCallback)){var c=this.m.breadcrumbCallback(b);if($(c)&&!ea(c))b=c;else if(c===!1)return this}return this.w.push(b),this.w.length>this.m.maxBreadcrumbs&&this.w.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.t.push([a,b]),this.p&&this.H(),this},setUserContext:function(a){return this.l.user=a,this},setExtraContext:function(a){return this.V("extra",a),this},setTagsContext:function(a){return this.V("tags",a),this},clearContext:function(){return this.l={},this},getContext:function(){return JSON.parse(V(this.l))},setEnvironment:function(a){return this.m.environment=a,this},setRelease:function(a){return this.m.release=a,this},setDataCallback:function(a){var b=this.m.dataCallback;return this.m.dataCallback=I(b,a),this},setBreadcrumbCallback:function(a){var b=this.m.breadcrumbCallback;return this.m.breadcrumbCallback=I(b,a),this},setShouldSendCallback:function(a){var b=this.m.shouldSendCallback;return this.m.shouldSendCallback=I(b,a),this},setTransport:function(a){return this.m.transport=a,this},lastException:function(){return this.f},lastEventId:function(){return this.h},isSetup:function(){return!!this.c&&(!!this.i||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.C("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=wa.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(xa){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new W("Missing eventId");var c=a.dsn||this.J;if(!c)throw new W("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.l.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.L(this.I(c)),h=xa.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(xa.head||xa.body).appendChild(h)}},N:function(){var a=this;this.o+=1,setTimeout(function(){a.o-=1})},W:function(a,b){var c,d;if(this.d){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),xa.createEvent?(c=xa.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=xa.createEventObject(),c.eventType=a);for(d in b)ja(b,d)&&(c[d]=b[d]);if(xa.createEvent)xa.dispatchEvent(c);else try{xa.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},X:function(a){var b=this;return function(c){if(b.Y=null,b.x!==c){b.x=c;var d;try{d=na(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},Z:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.Y;g||a.X("input")(c),clearTimeout(g),a.Y=setTimeout(function(){a.Y=null},b)}}},$:function(a,b){var c=qa(this.y.href),d=qa(b),e=qa(a);this.z=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},E:function(){var a=this;a._=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.a?a._.apply(this.b,arguments):a._.apply(this,arguments)}},P:function(){this._&&(Function.prototype.toString=this._)},F:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.$(b.z,c+""),a.apply(this,arguments)}};ra(history,"pushState",j,d),ra(history,"replaceState",j,d)}if(c.console&&"console"in wa&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};fa(["debug","info","warn","error","log"],function(a,b){ta(console,b,k)})}},Q:function(){for(var a;this.v.length;){a=this.v.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},R:function(){for(var a in this.s)this.r[a]=this.s[a]},H:function(){var a=this;fa(this.t,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},I:function(a){var b=va.exec(a),c={},d=7;try{for(;d--;)c[ua[d]]=b[d]||""}catch(e){throw new W("Invalid DSN: "+a)}if(c.pass&&!this.m.allowSecretKey)throw new W("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},L:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},D:function(){this.o||this.S.apply(this,arguments)},S:function(a,b){var c=this.T(a,b);this.W("handle",{stackInfo:a,options:b}),this.ba(a.name,a.message,a.url,a.lineno,c,b)},T:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(fa(a.stack,function(b,e){var f=c.ca(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.w,0)}),this.l.user&&(a.user=this.l.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||ea(a[b]))&&delete a[b]}),ba(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!ea(a)&&(!ba(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.ia()?void this.C("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random()this.k.maxBreadcrumbs&&this.u.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.r.push([a,b]),this.n&&this.F(),this},setUserContext:function(a){return this.j.user=a,this},setExtraContext:function(a){return this.Z("extra",a),this},setTagsContext:function(a){return this.Z("tags",a),this},clearContext:function(){return this.j={},this},getContext:function(){return JSON.parse(h(this.j))},setEnvironment:function(a){return this.k.environment=a,this},setRelease:function(a){return this.k.release=a,this},setDataCallback:function(a){var b=this.k.dataCallback;return this.k.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.k.breadcrumbCallback;return this.k.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.k.shouldSendCallback;return this.k.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.k.transport=a,this},lastException:function(){return this.d},lastEventId:function(){return this.f},isSetup:function(){return!!this.a&&(!!this.g||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.z("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=P.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(Q){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.H;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.j.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.J(this.G(c)),h=Q.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(Q.head||Q.body).appendChild(h)}},L:function(){var a=this;this.m+=1,setTimeout(function(){a.m-=1})},$:function(a,b){var c,d;if(this.b){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),Q.createEvent?(c=Q.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=Q.createEventObject(),c.eventType=a);for(d in b)y(b,d)&&(c[d]=b[d]);if(Q.createEvent)Q.dispatchEvent(c);else try{Q.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},_:function(a){var b=this;return function(c){if(b.aa=null,b.v!==c){b.v=c;var d;try{d=C(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ba:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.aa;g||a._("input")(c),clearTimeout(g),a.aa=setTimeout(function(){a.aa=null},b)}}},ca:function(a,b){var c=F(this.w.href),d=F(b),e=F(a);this.x=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},C:function(){var a=this;a.da=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.M?a.da.apply(this.O,arguments):a.da.apply(this,arguments)}},Q:function(){this.da&&(Function.prototype.toString=this.da)},D:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.ca(b.x,c+""),a.apply(this,arguments)}};G(history,"pushState",j,d),G(history,"replaceState",j,d)}if(c.console&&"console"in P&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};u(["debug","info","warn","error","log"],function(a,b){M(console,b,k)})}},R:function(){for(var a;this.t.length;){a=this.t.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},S:function(){for(var a in this.q)this.p[a]=this.q[a]},F:function(){var a=this;u(this.r,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},G:function(a){var b=O.exec(a),c={},d=7;try{for(;d--;)c[N[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.k.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},J:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},A:function(){this.m||this.V.apply(this,arguments)},V:function(a,b){var c=this.X(a,b);this.$("handle",{stackInfo:a,options:b}),this.fa(a.name,a.message,a.url,a.lineno,c,b)},X:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(u(a.stack,function(b,e){var f=c.ga(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.u,0)}),this.j.user&&(a.user=this.j.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),a=this.pa(a),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||t(a[b]))&&delete a[b]}),q(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!t(a)&&(!q(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.ma()?void this.z("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function B(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&j(b))for(c=b.split(/\s+/),f=0;fc?M(a,b-1):d}function N(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?T:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function O(a,b){function c(a){return k(a)?a.map(function(a){return c(a)}):i(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!k(b)||k(b)&&0===b.length)return a;var d,e=w(b),f="********";try{d=JSON.parse(P(a))}catch(g){return a}return c(d)}var P=a(8),Q="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},R=3,S=51200,T=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isUndefined:g,isFunction:h,isPlainObject:i,isString:j,isArray:k,isEmptyObject:l,supportsErrorEvent:m,supportsFetch:n,supportsReferrerPolicy:o,supportsPromiseRejectionEvent:p,wrappedCallback:q,each:r,objectMerge:s,truncate:u,objectFrozen:t,hasKey:v,joinRegExp:w,urlencode:x,uuid4:z,htmlTreeAsString:A,htmlElementAsString:B,isSameException:E,isSameStacktrace:F,parseUrl:y,fill:G,safeJoin:H,serializeException:M,serializeKeysForMessage:N,sanitize:O}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{8:8}],7:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}var e=a(6),f={collectWindowErrors:!0,debug:!1},g="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},h=[].slice,i="?",j=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;f.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function k(a,b){var c=null;if(!b||f.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(h.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,g,h){var l=null,m=e.isErrorEvent(h)?h.error:h,n=e.isErrorEvent(a)?a.message:a;if(v)f.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&e.isError(m))l=f.computeStackTrace(m),k(l,!0);else{var p,r={url:b,line:c,column:g},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(j);p&&(s=p[1],n=p[2])}r.func=i,l={name:s,message:n,url:d(),stack:[r]},k(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=g.onerror,g.onerror=l,r=!0)}function n(){r&&(g.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,k.apply(null,[a,!1].concat(b))}function p(a,b){var c=h.call(arguments,1);if(v){if(u===a)return;o()}var d=f.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),f.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,e,f=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,g=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,h=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,j=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,k=/\((\S*)(?::(\d+))(?::(\d+))\)/,l=a.stack.split("\n"),m=[],n=(/^(.*) is undefined$/.exec(a.message),0),o=l.length;n eval")>-1;q&&(b=j.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==n||c[5]||"undefined"==typeof a.columnNumber||(m[0].column=a.columnNumber+1),e={url:c[3],func:c[1]||i,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}!e.func&&e.line&&(e.func=i),m.push(e)}return m.length?{name:a.name,message:a.message,url:d(),stack:m}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=i),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,g){for(var h,j,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==e&&o!==f.report){if(j={url:null,func:i,line:null,column:null},o.name?j.func=o.name:(h=k.exec(o.toString()))&&(j.func=h[1]),"undefined"==typeof j.func)try{j.func=h.input.substring(0,h.input.indexOf("{"))}catch(p){}m[""+o]?n=!0:m[""+o]=!0,l.push(j)}g&&l.splice(0,g);var q={name:a.name,message:a.message,url:d(),stack:l};return b(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),q}function e(b,e){var g=null;e=null==e?0:+e;try{if(g=a(b))return g}catch(h){if(f.debug)throw h}try{if(g=c(b,e+1))return g}catch(h){if(f.debug)throw h}return{name:b.name,message:b.message,url:d()}}return e.augmentStackTraceWithInitialElement=b,e.computeStackTraceFromStackProp=a,e}(),b.exports=f}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{6:6}],8:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}],9:[function(a,b,c){function d(a,b){var c=(65535&a)+(65535&b),d=(a>>16)+(b>>16)+(c>>16);return d<<16|65535&c}function e(a,b){return a<>>32-b}function f(a,b,c,f,g,h){return d(e(d(d(b,a),d(f,h)),g),c); +}function g(a,b,c,d,e,g,h){return f(b&c|~b&d,a,b,e,g,h)}function h(a,b,c,d,e,g,h){return f(b&d|c&~d,a,b,e,g,h)}function i(a,b,c,d,e,g,h){return f(b^c^d,a,b,e,g,h)}function j(a,b,c,d,e,g,h){return f(c^(b|~d),a,b,e,g,h)}function k(a,b){a[b>>5]|=128<>>9<<4)+14]=b;var c,e,f,k,l,m=1732584193,n=-271733879,o=-1732584194,p=271733878;for(c=0;c>5]>>>b%32&255);return c}function m(a){var b,c=[];for(c[(a.length>>2)-1]=void 0,b=0;b>5]|=(255&a.charCodeAt(b/8))<16&&(e=k(e,8*a.length)),c=0;c<16;c+=1)f[c]=909522486^e[c],g[c]=1549556828^e[c];return d=k(f.concat(m(b)),512+8*b.length),l(k(g.concat(d),640))}function p(a){var b,c,d="0123456789abcdef",e="";for(c=0;c>>4&15)+d.charAt(15&b);return e}function q(a){return unescape(encodeURIComponent(a))}function r(a){return n(q(a))}function s(a){return p(r(a))}function t(a,b){return o(q(a),q(b))}function u(a,b){return p(t(a,b))}function v(a,b,c){return b?c?t(b,a):u(b,a):c?r(a):s(a)}b.exports=v},{}]},{},[5,1])(5)}); //# sourceMappingURL=raven.min.js.map \ No newline at end of file diff --git a/dist/require/raven.min.js.map b/dist/require/raven.min.js.map index 5a7b9620394d..8f21564e1410 100644 --- a/dist/require/raven.min.js.map +++ b/dist/require/raven.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["raven.js"],"names":["global","factory","exports","module","define","amd","Raven","this","createCommonjsModule","fn","_typeof","obj","Symbol","iterator","constructor","prototype","isObject$1","what","isError$1","value","toString","call","Error","isErrorEvent$1","supportsErrorEvent","isUndefined$1","isFunction$1","isPlainObject","Object","isString$1","isArray$1","isEmptyObject$1","_","hasOwnProperty","ErrorEvent","e","supportsFetch$1","_window$3","Headers","Request","Response","wrappedCallback","callback","dataCallback","data","original","normalizedData","each$1","i","j","length","hasKey$1","objectMerge$1","obj1","obj2","key","objectFrozen$1","isFrozen","truncate$1","str","max","substr","object","joinRegExp$1","patterns","pattern","sources","len","push","replace","source","RegExp","join","urlencode$1","o","pairs","encodeURIComponent","parseUrl$1","url","match","query","fragment","protocol","host","path","relative","uuid4$1","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","r","Math","random","htmlTreeAsString$1","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","reverse","className","classes","attr","tagName","toLowerCase","id","split","attrWhitelist","getAttribute","isOnlyOneTruthy","a","b","isBothUndefined","isSameException$1","ex1","ex2","values","type","stacktrace","isSameStacktrace$1","stack1","stack2","frames1","frames","frames2","filename","lineno","colno","fill$1","name","replacement","track","orig","__raven__","__orig__","safeJoin","input","delimiter","output","String","getLocationHref","document","location","href","RavenConfigError","message","now","Date","keepOriginalCallback","isFunction","Raven$1","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window$1","SENTRY_RELEASE","logger","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","_fetchDefaults","method","keepalive","referrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","console","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","_lastHref","_resetBackoff","requirePlugin","commonjsGlobal","window","self","_sPO","setPrototypeOf","p","__proto__","Reflect","construct","Parent","args","Class","Constructor","apply","bind","utils","isObject","isError","isErrorEvent","isString","isArray","isEmptyObject","supportsFetch","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","TraceKit","debug","_window$2","_slice","slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","report","subscribe","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","stack","isWindowError","exception","concat","arguments","inner","traceKitWindowOnError","msg","lineNo","colNo","ex","error","lastExceptionStack","computeStackTrace","augmentStackTraceWithInitialElement","processLastException","groups","line","column","undefined","func","_oldOnerrorHandler","_onErrorHandlerInstalled","onerror","_lastExceptionStack","_lastArgs","lastArgs","lastException","rethrow","setTimeout","incomplete","uninstall","computeStackTraceFromStackProp","submatch","parts","element","chrome","gecko","winjs","geckoEval","chromeEval","lines","exec","isNative","indexOf","isEval","columnNumber","stackInfo","initial","unshift","partial","computeStackTraceByWalkingCallerChain","depth","item","functionName","funcs","recursion","curr","caller","substring","result","sourceURL","fileName","lineNumber","description","tracekit","stringify_1","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","err","keys","thisPos","Infinity","getSerialize","configError","wrapMethod","level","originalConsoleLevel","originalConsole","sentryLevel","extra","Function","console$1","wrapConsoleMethod","dsnKeys","dsnPattern","navigator","VERSION","config","dsn","options","_logDebug","globalOptions","setDSN","maxBreadcrumbs","min","autoBreadcrumbDefaults","xhr","dom","sentry","instrumentDefaults","tryCatch","install","isSetup","_handleOnErrorStackInfo","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","lastIndexOf","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","context","wrap","_before","wrapped","deep","_ignoreNextOnError","captureException","__raven_wrapper__","property","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","trimHeadFrames","isNotError","isNotErrorEvent","isErrorEventWithoutError","captureMessage","_handleStackInfo","test","initialCall","fileurl","fingerprint","_prepareFrames","_send","captureBreadcrumb","crumb","timestamp","breadcrumbCallback","shift","addPlugin","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","setDataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","N","W","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","X","evtName","_keypressTimeout","target","category","Z","debounceDuration","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","$","from","to","parsedLoc","parsedTo","parsedFrom","E","_originalFunctionToString","P","F","wrapTimeFn","t","Array","originalCallback","wrapEventTarget","proto","capture","secure","handleEvent","before","clickHandler","keypressHandler","_keypressEventHandler","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","G","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","onreadystatechange","origFetch","fetchInput","fetchData","then","response","addEventListener","attachEvent","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","Q","builtin","R","H","installer","I","m","allowSecretKey","L","port","D","S","_triggerEvent","_processException","T","frame","_normalizeFrame","in_app","ca","stackInfoUrl","normalized","function","ba","prefixedMessage","culprit","da","request","Referer","breadcrumbs","_trimBreadcrumbs","ea","urlProp","urlProps","fa","httpData","userAgent","User-Agent","referrer","A","_backoffDuration","_backoffStart","ia","ja","current","last","ka","_shouldBackoff","retry","get","getResponseHeader","parseInt","U","baseData","project","platform","_getHttpData","serverName","server_name","forEach","_sendProcessedPayload","ma","la","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","na","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","onload","open","setRequestHeader","send","oa","hash","evaluated","C","V","setUser","setReleaseContext","raven","_window","_Raven","noConflict","singleton","require_1","require"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file +{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","requirePlugin","wrap","deep","addPlugin","5","2","RavenConfigError","message","name","prototype","constructor","3","utils","wrapMethod","console","level","callback","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","msg","safeJoin","data","logger","extra","Function","apply","6","4","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","sanitizeKeys","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isError","isObject","isPlainObject","isErrorEvent","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","sanitize","wrapConsoleMethod","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","config","dsn","options","_logDebug","globalOptions","key","value","setDSN","push","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","toString","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","substr","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","context","func","undefined","_before","wrapped","_ignoreNextOnError","captureException","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","T","event","reason","unhandledPromiseRejection","B","_promiseRejectionHandler","bind","addEventListener","P","removeEventListener","ex","trimHeadFrames","error","captureMessage","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","U","currentOptions","exKeys","Object","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","setDataCallback","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","L","setTimeout","$","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","_","evtName","_keypressTimeout","target","category","ba","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","ca","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","C","_originalFunctionToString","Q","D","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","type","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","E","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","R","builtin","S","F","installer","concat","G","str","m","exec","allowSecretKey","J","port","A","V","stackInfo","_triggerEvent","_processException","lineno","X","frame","_normalizeFrame","in_app","ga","stackInfoUrl","normalized","filename","line","colno","column","function","fa","prefixedMessage","exception","values","culprit","ha","request","Referer","breadcrumbs","_trimBreadcrumbs","ia","urlProp","urlProps","ja","httpData","userAgent","User-Agent","referrer","y","_backoffDuration","_backoffStart","ma","na","current","last","oa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Y","baseData","project","platform","_getHttpData","serverName","server_name","_sanitizeData","forEach","random","_sendProcessedPayload","pa","ra","qa","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","sa","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","onerror","open","setRequestHeader","send","ta","hash","evaluated","z","Z","setUser","setReleaseContext","7","8","9","RavenConstructor","_Raven","noConflict","Client","what","supportsErrorEvent","ErrorEvent","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","wrappedCallback","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","sanitizeMask","safeInput","o_O","getLocationHref","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","charAt","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","string","raw"],"mappings":";CAYA,SAAUA,GAAG,GAAoB,gBAAVC,UAAoC,mBAATC,QAAsBA,OAAOD,QAAQD,QAAS,IAAmB,kBAATG,SAAqBA,OAAOC,IAAKD,UAAUH,OAAO,CAAC,GAAIK,EAAkCA,GAAb,mBAATC,QAAwBA,OAA+B,mBAATC,QAAwBA,OAA6B,mBAAPC,MAAsBA,KAAYC,KAAKJ,EAAEK,MAAQV,MAAO,WAAW,GAAIG,EAAsB,OAAO,SAAUQ,GAAEC,EAAEC,EAAEC,GAAG,QAASC,GAAEC,EAAEC,GAAG,IAAIJ,EAAEG,GAAG,CAAC,IAAIJ,EAAEI,GAAG,CAAC,GAAIE,GAAkB,kBAATC,UAAqBA,OAAQ,KAAIF,GAAGC,EAAE,MAAOA,GAAEF,GAAE,EAAI,IAAGI,EAAE,MAAOA,GAAEJ,GAAE,EAAI,IAAIhB,GAAE,GAAIqB,OAAM,uBAAuBL,EAAE,IAAK,MAAMhB,GAAEsB,KAAK,mBAAmBtB,EAAE,GAAIuB,GAAEV,EAAEG,IAAIf,WAAYW,GAAEI,GAAG,GAAGQ,KAAKD,EAAEtB,QAAQ,SAASU,GAAG,GAAIE,GAAED,EAAEI,GAAG,GAAGL,EAAG,OAAOI,GAAEF,EAAEA,EAAEF,IAAIY,EAAEA,EAAEtB,QAAQU,EAAEC,EAAEC,EAAEC,GAAG,MAAOD,GAAEG,GAAGf,QAAkD,IAAI,GAA1CmB,GAAkB,kBAATD,UAAqBA,QAAgBH,EAAE,EAAEA,EAAEF,EAAEW,OAAOT,IAAID,EAAED,EAAEE,GAAI,OAAOD,KAAKW,GAAG,SAASC,EAAQzB,EAAOD,GAOp0B,QAAS2B,GAAclB,GACC,kBAAXP,IAAyBA,EAAOC,MACzCE,OAAOH,OAASO,EAAMmB,MAAMC,MAAM,GAAQ3B,GAC1CG,OAAOa,QAAUT,EAAMmB,MAAMC,MAAM,GAAQH,IAI/CzB,EAAOD,QAAU2B,EAEjBD,EAAQ,GAAGI,UAAU7B,EAAOD,WACzB+B,EAAI,IAAIC,GAAG,SAASN,EAAQzB,EAAOD,GACtC,QAASiC,GAAiBC,GACxB1B,KAAK2B,KAAO,mBACZ3B,KAAK0B,QAAUA,EAEjBD,EAAiBG,UAAY,GAAIhB,OACjCa,EAAiBG,UAAUC,YAAcJ,EAEzChC,EAAOD,QAAUiC,OAEXK,GAAG,SAASZ,EAAQzB,EAAOD,GACjC,GAAIuC,GAAQb,EAAQ,GAEhBc,EAAa,SAASC,EAASC,EAAOC,GACxC,GAAIC,GAAuBH,EAAQC,GAC/BG,EAAkBJ,CAEtB,IAAMC,IAASD,GAAf,CAIA,GAAIK,GAAwB,SAAVJ,EAAmB,UAAYA,CAEjDD,GAAQC,GAAS,WACf,GAAIK,MAAUC,MAAMzB,KAAK0B,WAErBC,EAAMX,EAAMY,SAASJ,EAAM,KAC3BK,GAAQV,MAAOI,EAAaO,OAAQ,UAAWC,OAAQL,UAAWF,GAExD,YAAVL,EACEK,EAAK,MAAO,IAEdG,EACE,sBAAwBX,EAAMY,SAASJ,EAAKC,MAAM,GAAI,MAAQ,kBAChEI,EAAKE,MAAML,UAAYF,EAAKC,MAAM,GAClCL,GAAYA,EAASO,EAAKE,IAG5BT,GAAYA,EAASO,EAAKE,GAIxBR,GAGFW,SAASnB,UAAUoB,MAAMjC,KAAKqB,EAAsBC,EAAiBE,KAK3E9C,GAAOD,SACLwC,WAAYA,KAGXiB,EAAI,IAAIC,GAAG,SAAShC,EAAQzB,EAAOD,IACtC,SAAWM,GA0CX,QAASqD,KACP,OAAQ,GAAIC,MAWd,QAASC,GAAqBC,EAAUnB,GACtC,MAAOoB,GAAWpB,GACd,SAASS,GACP,MAAOT,GAASS,EAAMU,IAExBnB,EAMN,QAASlC,KACPD,KAAKwD,IAA8B,gBAATC,QAAqBA,KAAKC,WAEpD1D,KAAK2D,GAAgBC,EAAYC,GACjC7D,KAAK8D,GAAiBF,EAAYG,GAClC/D,KAAKgE,EAAyB,KAC9BhE,KAAKiE,EAAY,KACjBjE,KAAKkE,EAAe,KACpBlE,KAAKmE,EAAgB,KACrBnE,KAAKoE,EAAa,KAClBpE,KAAKqE,EAAiB,KACtBrE,KAAKsE,KACLtE,KAAKuE,GAEHC,QAASC,EAAQC,gBAAkBD,EAAQC,eAAeC,GAC1D9B,OAAQ,aACR+B,gBACAC,cACAC,iBACAC,gBACAC,QAAS,KACTC,qBAAqB,EACrBC,4BAA4B,EAC5BC,iBAAkB,EAElBC,aAAc,IACdC,gBAAiB,GACjBC,iBAAiB,EACjBC,YAAY,EACZC,WAAY,EACZC,iBAEFzF,KAAK0F,GACHC,OAAQ,OACRC,WAAW,EAKXC,eAAgBC,IAA2B,SAAW,IAExD9F,KAAK+F,EAAiB,EACtB/F,KAAKgG,GAAoB,EACzBhG,KAAKiG,EAAgCrF,MAAMyE,gBAG3CrF,KAAKkG,EAAmBzB,EAAQxC,YAChCjC,KAAKmG,KACLnG,KAAKoG,KACLpG,KAAKqG,EAAalD,IAClBnD,KAAKsG,KACLtG,KAAKuG,KACLvG,KAAKwG,EAAqB,KAE1BxG,KAAKyG,EAAYhC,EAAQiC,SACzB1G,KAAK2G,EAAY3G,KAAKyG,GAAazG,KAAKyG,EAAUG,KAClD5G,KAAK6G,GAGL,KAAK,GAAIlB,KAAU3F,MAAKkG,EACtBlG,KAAKmG,EAAwBR,GAAU3F,KAAKkG,EAAiBP,GA1HjE,GAAImB,GAAW5F,EAAQ,GACnBwC,EAAYxC,EAAQ,GACpB6F,EAAM7F,EAAQ,GACdO,EAAmBP,EAAQ,GAE3Ba,EAAQb,EAAQ,GAChB8F,EAAUjF,EAAMiF,QAChBC,EAAWlF,EAAMkF,SACjBC,EAAgBnF,EAAMmF,cACtBC,EAAepF,EAAMoF,aACrBvD,EAAc7B,EAAM6B,YACpBL,EAAaxB,EAAMwB,WACnB6D,EAAWrF,EAAMqF,SACjBC,EAAUtF,EAAMsF,QAChBC,EAAgBvF,EAAMuF,cACtBC,EAAOxF,EAAMwF,KACbC,EAAczF,EAAMyF,YACpBC,EAAW1F,EAAM0F,SACjBC,EAAe3F,EAAM2F,aACrBC,EAAS5F,EAAM4F,OACfC,EAAa7F,EAAM6F,WACnBC,EAAY9F,EAAM8F,UAClBC,EAAQ/F,EAAM+F,MACdC,EAAmBhG,EAAMgG,iBACzBC,EAAkBjG,EAAMiG,gBACxBC,EAAmBlG,EAAMkG,iBACzBC,EAAWnG,EAAMmG,SACjBC,EAAOpG,EAAMoG,KACbC,EAAgBrG,EAAMqG,cACtBtC,EAAyB/D,EAAM+D,uBAC/BuC,EAA0BtG,EAAMsG,wBAChCC,EAAqBvG,EAAMuG,mBAC3BC,EAAWxG,EAAMwG,SAEjBC,EAAoBtH,EAAQ,GAAGc,WAE/ByG,EAAU,2CAA2CC,MAAM,KAC7DC,EAAa,gEAOXlE,EACgB,mBAAX5E,QACHA,OACkB,mBAAXC,GAAyBA,EAAyB,mBAATC,MAAuBA,QACzE8D,EAAYY,EAAQmE,SACpB7E,EAAaU,EAAQoE,SAmFzB5I,GAAM2B,WAKJkH,QAAS,SAETC,OAAO,EAEPjC,SAAUA,EASVkC,OAAQ,SAASC,EAAKC,GACpB,GAAInJ,GAAOC,IAEX,IAAID,EAAKoE,EAEP,MADAnE,MAAKmJ,EAAU,QAAS,4CACjBpJ,CAET,KAAKkJ,EAAK,MAAOlJ,EAEjB,IAAIqJ,GAAgBrJ,EAAKwE,CAGrB2E,IACF3B,EAAK2B,EAAS,SAASG,EAAKC,GAEd,SAARD,GAA0B,UAARA,GAA2B,SAARA,EACvCtJ,EAAKuE,EAAe+E,GAAOC,EAE3BF,EAAcC,GAAOC,IAK3BvJ,EAAKwJ,OAAON,GAIZG,EAAcxE,aAAa4E,KAAK,qBAChCJ,EAAcxE,aAAa4E,KAAK,iDAGhCJ,EAAcxE,aAAegD,EAAWwB,EAAcxE,cACtDwE,EAAcvE,aAAauE,EAAcvE,WAAW7D,QAChD4G,EAAWwB,EAAcvE,YAE7BuE,EAActE,gBAAgBsE,EAActE,cAAc9D,QACtD4G,EAAWwB,EAActE,eAE7BsE,EAAcrE,aAAe6C,EAAWwB,EAAcrE,cACtDqE,EAAcK,eAAiBC,KAAKC,IAClC,EACAD,KAAKE,IAAIR,EAAcK,gBAAkB,IAAK,KAGhD,IAAII,IACFC,KAAK,EACL7H,SAAS,EACT8H,KAAK,EACLrD,UAAU,EACVsD,QAAQ,GAGN1E,EAAkB8D,EAAc9D,eACM,wBAAnC2E,SAASlJ,KAAKuE,GACnBA,EAAkBkC,EAAYqC,EAAwBvE,GAC7CA,KAAoB,IAC7BA,EAAkBuE,GAEpBT,EAAc9D,gBAAkBA,CAEhC,IAAI4E,IACFC,UAAU,GAGR5E,EAAa6D,EAAc7D,UAW/B,OAVqC,uBAA9B0E,SAASlJ,KAAKwE,GACnBA,EAAaiC,EAAY0C,EAAoB3E,GACpCA,KAAe,IACxBA,EAAa2E,GAEfd,EAAc7D,WAAaA,EAE3BuB,EAAS7B,sBAAwBmE,EAAcnE,oBAGxClF,GAWTqK,QAAS,WACP,GAAIrK,GAAOC,IAyBX,OAxBID,GAAKsK,YAActK,EAAKiG,IAC1Bc,EAASwD,OAAOC,UAAU,WACxBxK,EAAKyK,EAAwBxH,MAAMjD,EAAM0C,aAGvC1C,EAAKwE,EAAeW,4BACtBnF,EAAK0K,IAGP1K,EAAK2K,IAED3K,EAAKwE,EAAegB,YAAcxF,EAAKwE,EAAegB,WAAW4E,UACnEpK,EAAK4K,IAGH5K,EAAKwE,EAAee,iBAAiBvF,EAAK6K,IAG9C7K,EAAK8K,IAEL9K,EAAKiG,GAAoB,GAG3BpF,MAAMyE,gBAAkBtF,EAAKwE,EAAec,gBACrCrF,MAQTuJ,OAAQ,SAASN,GACf,GAAIlJ,GAAOC,KACT8K,EAAM/K,EAAKgL,EAAU9B,GACrB+B,EAAYF,EAAIG,KAAKC,YAAY,KACjCD,EAAOH,EAAIG,KAAKE,OAAO,EAAGH,EAE5BjL,GAAKqL,EAAOnC,EACZlJ,EAAKqE,EAAa0G,EAAIO,KACtBtL,EAAKuL,EAAgBR,EAAIS,MAAQT,EAAIS,KAAKJ,OAAO,GACjDpL,EAAKsE,EAAiByG,EAAIG,KAAKE,OAAOH,EAAY,GAElDjL,EAAKoE,EAAgBpE,EAAKyL,EAAiBV,GAE3C/K,EAAK0L,EACH1L,EAAKoE,EAAgB,IAAM8G,EAAO,OAASlL,EAAKsE,EAAiB,UAInErE,KAAK6G,KAWP6E,QAAS,SAASxC,EAASyC,EAAMpJ,GAO/B,MANIgB,GAAW2F,KACb3G,EAAOoJ,MACPA,EAAOzC,EACPA,EAAU0C,QAGL5L,KAAKoB,KAAK8H,EAASyC,GAAM3I,MAAMhD,KAAMuC,IAW9CnB,KAAM,SAAS8H,EAASyC,EAAME,GAqC5B,QAASC,KACP,GAAIvJ,MACF5B,EAAI8B,UAAUzB,OACdK,GAAQ6H,GAAYA,GAAWA,EAAQ7H,QAAS,CAQlD,KANIwK,GAAWtI,EAAWsI,IACxBA,EAAQ7I,MAAMhD,KAAMyC,WAKf9B,KAAK4B,EAAK5B,GAAKU,EAAOtB,EAAKqB,KAAK8H,EAASzG,UAAU9B,IAAM8B,UAAU9B,EAE1E,KAKE,MAAOgL,GAAK3I,MAAMhD,KAAMuC,GACxB,MAAOrC,GAGP,KAFAH,GAAKgM,IACLhM,EAAKiM,iBAAiB9L,EAAGgJ,GACnBhJ,GA1DV,GAAIH,GAAOC,IAGX,IAAI4D,EAAY+H,KAAUpI,EAAW2F,GACnC,MAAOA,EAWT,IAPI3F,EAAW2F,KACbyC,EAAOzC,EACPA,EAAU0C,SAKPrI,EAAWoI,GACd,MAAOA,EAIT,KACE,GAAIA,EAAKM,EACP,MAAON,EAIT,IAAIA,EAAKO,EACP,MAAOP,GAAKO,EAEd,MAAOhM,GAIP,MAAOyL,GA8BT,IAAK,GAAIQ,KAAYR,GACfhE,EAAOgE,EAAMQ,KACfL,EAAQK,GAAYR,EAAKQ,GAW7B,OARAL,GAAQlK,UAAY+J,EAAK/J,UAEzB+J,EAAKO,EAAoBJ,EAGzBA,EAAQG,GAAY,EACpBH,EAAQM,EAAWT,EAEZG,GAQTO,UAAW,WAWT,MAVAvF,GAASwD,OAAO+B,YAEhBrM,KAAKsM,IACLtM,KAAKuM,IACLvM,KAAKwM,IACLxM,KAAKyM,IAEL7L,MAAMyE,gBAAkBrF,KAAKiG,EAC7BjG,KAAKgG,GAAoB,EAElBhG,MAWT0M,EAA0B,SAASC,GACjC3M,KAAKmJ,EAAU,QAAS,4CAA6CwD,GACrE3M,KAAKgM,iBAAiBW,EAAMC,QAC1B9J,OACE+J,2BAA2B,MAUjCC,EAAgC,WAI9B,MAHA9M,MAAK+M,EAA2B/M,KAAK+M,EAAyBC,KAAKhN,MACnEyE,EAAQwI,kBACNxI,EAAQwI,iBAAiB,qBAAsBjN,KAAK+M,GAC/C/M,MAQTkN,EAAgC,WAG9B,MAFAzI,GAAQ0I,qBACN1I,EAAQ0I,oBAAoB,qBAAsBnN,KAAK+M,GAClD/M,MAUTgM,iBAAkB,SAASoB,EAAIlE,GAG7B,GAFAA,EAAU1B,GAAa6F,eAAgB,GAAInE,EAAUA,MAEjD/B,EAAaiG,IAAOA,EAAGE,MAEzBF,EAAKA,EAAGE,UACH,IAAItG,EAAQoG,GAEjBA,EAAKA,MACA,CAAA,IAAIlG,EAAckG,GAYvB,MAAOpN,MAAKuN,eACVH,EACA5F,EAAY0B,GACVsE,YAAY,EACZH,eAAgBnE,EAAQmE,eAAiB,IAZ7CnE,GAAUlJ,KAAKyN,EAA2CvE,EAASkE,GACnEA,EAAK,GAAIxM,OAAMsI,EAAQxH,SAiBzB1B,KAAKgE,EAAyBoJ,CAO9B,KACE,GAAIM,GAAQ5G,EAAS6G,kBAAkBP,EACvCpN,MAAK4N,EAAiBF,EAAOxE,GAC7B,MAAO2E,GACP,GAAIT,IAAOS,EACT,KAAMA,GAIV,MAAO7N,OAGT8N,EAA4C,SAASC,EAAgBX,GACnE,GAAIY,GAASC,OAAOC,KAAKd,GAAIe,OACzBjF,EAAU1B,EAAYuG,GACxBrM,QACE,2CAA6C2G,EAAwB2F,GACvEI,aAAcrH,EAAIiH,IAClBlL,MAAOiL,EAAejL,WAIxB,OAFAoG,GAAQpG,MAAMuL,EAAiB/F,EAAmB8E,GAE3ClE,GAUTqE,eAAgB,SAAS7K,EAAKwG,GAI5B,IACIlJ,KAAKuE,EAAeK,aAAa0J,OACnCtO,KAAKuE,EAAeK,aAAa0J,KAAK5L,GAFxC,CAOAwG,EAAUA,MACVxG,GAAY,EAEZ,IAOI0K,GAPAxK,EAAO4E,GAEP9F,QAASgB,GAEXwG,EAQF,KACE,KAAM,IAAItI,OAAM8B,GAChB,MAAOmL,GACPT,EAAKS,EAIPT,EAAGzL,KAAO,IACV,IAAI+L,GAAQ5G,EAAS6G,kBAAkBP,GAGnCmB,EAAclH,EAAQqG,EAAMA,QAAUA,EAAMA,MAAM,EAKlDa,IAAoC,2BAArBA,EAAY5C,OAC7B4C,EAAcb,EAAMA,MAAM,GAG5B,IAAIc,GAAWD,GAAeA,EAAYE,KAAQ,EAElD,MACIzO,KAAKuE,EAAeM,WAAWyJ,OACjCtO,KAAKuE,EAAeM,WAAWyJ,KAAKE,OAMlCxO,KAAKuE,EAAeO,cAAcwJ,MACnCtO,KAAKuE,EAAeO,cAAcwJ,KAAKE,IAF1C,CAOA,GAAIxO,KAAKuE,EAAeiJ,YAAetE,GAAWA,EAAQsE,WAAa,CAErE5K,EAAKwL,YAAkC,MAApBxL,EAAKwL,YAAsB1L,EAAME,EAAKwL,YAEzDlF,EAAU1B,GAEN6F,eAAgB,GAElBnE,GAMFA,EAAQmE,gBAAkB,CAE1B,IAAIqB,GAAS1O,KAAK2O,EAAejB,EAAOxE,EACxCtG,GAAK4K,YAEHkB,OAAQA,EAAOE,WAcnB,MATIhM,GAAKwL,cACPxL,EAAKwL,YAAc/G,EAAQzE,EAAKwL,aAC5BxL,EAAKwL,aACJxL,EAAKwL,cAIZpO,KAAK6O,EAAMjM,GAEJ5C,QAGT8O,kBAAmB,SAASC,GAC1B,GAAIC,GAAQxH,GAERyH,UAAW9L,IAAQ,KAErB4L,EAGF,IAAIxL,EAAWvD,KAAKuE,EAAe2K,oBAAqB,CACtD,GAAIC,GAASnP,KAAKuE,EAAe2K,mBAAmBF,EAEpD,IAAI/H,EAASkI,KAAY7H,EAAc6H,GACrCH,EAAQG,MACH,IAAIA,KAAW,EACpB,MAAOnP,MAQX,MAJAA,MAAKuG,EAAaiD,KAAKwF,GACnBhP,KAAKuG,EAAavF,OAAShB,KAAKuE,EAAekF,gBACjDzJ,KAAKuG,EAAa6I,QAEbpP,MAGTsB,UAAW,SAAS+N,GAClB,GAAIC,MAAgB9M,MAAMzB,KAAK0B,UAAW,EAO1C,OALAzC,MAAKoG,EAASoD,MAAM6F,EAAQC,IACxBtP,KAAKgG,GACPhG,KAAK6K,IAGA7K,MASTuP,eAAgB,SAASlE,GAIvB,MAFArL,MAAKsE,EAAe+G,KAAOA,EAEpBrL,MASTwP,gBAAiB,SAAS1M,GAGxB,MAFA9C,MAAKyP,EAAc,QAAS3M,GAErB9C,MAST0P,eAAgB,SAASC,GAGvB,MAFA3P,MAAKyP,EAAc,OAAQE,GAEpB3P,MAQT4P,aAAc,WAGZ,MAFA5P,MAAKsE,KAEEtE,MAQT6P,WAAY,WAEV,MAAOpM,MAAKqM,MAAMpM,EAAU1D,KAAKsE,KASnCyL,eAAgB,SAASC,GAGvB,MAFAhQ,MAAKuE,EAAeyL,YAAcA,EAE3BhQ,MASTiQ,WAAY,SAASzL,GAGnB,MAFAxE,MAAKuE,EAAeC,QAAUA,EAEvBxE,MAUTkQ,gBAAiB,SAAS/N,GACxB,GAAImB,GAAWtD,KAAKuE,EAAe4L,YAEnC,OADAnQ,MAAKuE,EAAe4L,aAAe9M,EAAqBC,EAAUnB,GAC3DnC,MAUToQ,sBAAuB,SAASjO,GAC9B,GAAImB,GAAWtD,KAAKuE,EAAe2K,kBAEnC,OADAlP,MAAKuE,EAAe2K,mBAAqB7L,EAAqBC,EAAUnB,GACjEnC,MAUTqQ,sBAAuB,SAASlO,GAC9B,GAAImB,GAAWtD,KAAKuE,EAAe+L,kBAEnC,OADAtQ,MAAKuE,EAAe+L,mBAAqBjN,EAAqBC,EAAUnB,GACjEnC,MAYTuQ,aAAc,SAASC,GAGrB,MAFAxQ,MAAKuE,EAAeiM,UAAYA,EAEzBxQ,MAQTyQ,cAAe,WACb,MAAOzQ,MAAKgE,GAQd0M,YAAa,WACX,MAAO1Q,MAAKkE,GAQdmG,QAAS,WACP,QAAKrK,KAAKwD,MACLxD,KAAKmE,IACHnE,KAAK2Q,0BACR3Q,KAAK2Q,yBAA0B,EAC/B3Q,KAAKmJ,EAAU,QAAS,2CAEnB,KAKXyH,UAAW,WAIT,GAAIC,GAAcpM,EAAQoM,WACtBA,IACF7Q,KAAKgJ,OAAO6H,EAAY5H,IAAK4H,EAAY7H,QAAQoB,WAIrD0G,iBAAkB,SAAS5H,GACzB,GACGrF,EADH,CAKAqF,EAAUA,KAEV,IAAIwH,GAAcxH,EAAQ6H,SAAW/Q,KAAK0Q,aAC1C,KAAKA,EACH,KAAM,IAAIjP,GAAiB,kBAG7B,IAAIwH,GAAMC,EAAQD,KAAOjJ,KAAKoL,CAC9B,KAAKnC,EACH,KAAM,IAAIxH,GAAiB,cAG7B,IAAIuP,GAASC,mBACTC,EAAK,EACTA,IAAM,YAAcF,EAAON,GAC3BQ,GAAM,QAAUF,EAAO/H,EAEvB,IAAIoC,GAAOnC,EAAQmC,MAAQrL,KAAKsE,EAAe+G,IAC3CA,KACEA,EAAK1J,OAAMuP,GAAM,SAAWF,EAAO3F,EAAK1J,OACxC0J,EAAK8F,QAAOD,GAAM,UAAYF,EAAO3F,EAAK8F,QAGhD,IAAIC,GAAepR,KAAKwL,EAAiBxL,KAAK+K,EAAU9B,IAEpDoI,EAASxN,EAAUyN,cAAc,SACrCD,GAAOE,OAAQ,EACfF,EAAOG,IAAMJ,EAAe,yBAA2BF,GACtDrN,EAAU4N,MAAQ5N,EAAU6N,MAAMC,YAAYN,KAIjDO,EAAoB,WAClB,GAAI7R,GAAOC,IACXA,MAAK+F,GAAkB,EACvB8L,WAAW,WAET9R,EAAKgG,GAAkB,KAI3B+L,EAAe,SAASC,EAAW7I,GAEjC,GAAI8I,GAAK3I,CAET,IAAKrJ,KAAK2D,EAAV,CAEAuF,EAAUA,MAEV6I,EAAY,QAAUA,EAAU5G,OAAO,EAAG,GAAG8G,cAAgBF,EAAU5G,OAAO,GAE1EtH,EAAUqO,aACZF,EAAMnO,EAAUqO,YAAY,cAC5BF,EAAIG,UAAUJ,GAAW,GAAM,KAE/BC,EAAMnO,EAAUuO,oBAChBJ,EAAID,UAAYA,EAGlB,KAAK1I,IAAOH,GACNvB,EAAOuB,EAASG,KAClB2I,EAAI3I,GAAOH,EAAQG,GAGvB,IAAIxF,EAAUqO,YAEZrO,EAAUwO,cAAcL,OAIxB,KACEnO,EAAUyO,UAAU,KAAON,EAAID,UAAUQ,cAAeP,GACxD,MAAO9R,OAYbsS,EAAyB,SAASC,GAChC,GAAI1S,GAAOC,IACX,OAAO,UAASgS,GASd,GALAjS,EAAK2S,GAAmB,KAKpB3S,EAAKyG,IAAuBwL,EAAhC,CAEAjS,EAAKyG,EAAqBwL,CAM1B,IAAIW,EACJ,KACEA,EAAS5K,EAAiBiK,EAAIW,QAC9B,MAAOzS,GACPyS,EAAS,YAGX5S,EAAK+O,mBACH8D,SAAU,MAAQH,EAClB/Q,QAASiR,OAUfE,GAAuB,WACrB,GAAI9S,GAAOC,KACT8S,EAAmB,GAKrB,OAAO,UAASd,GACd,GAAIW,EACJ,KACEA,EAASX,EAAIW,OACb,MAAOzS,GAGP,OAEF,GAAI6S,GAAUJ,GAAUA,EAAOI,OAK/B,IACGA,IACY,UAAZA,GAAmC,aAAZA,GAA2BJ,EAAOK,mBAF5D,CAQA,GAAIC,GAAUlT,EAAK2S,EACdO,IACHlT,EAAKmT,EAAwB,SAASlB,GAExCmB,aAAaF,GACblT,EAAK2S,GAAmBb,WAAW,WACjC9R,EAAK2S,GAAmB,MACvBI,MAUPM,GAAmB,SAASC,EAAMC,GAChC,GAAIC,GAAYrL,EAASlI,KAAKyG,EAAUG,MACpC4M,EAAWtL,EAASoL,GACpBG,EAAavL,EAASmL,EAK1BrT,MAAK2G,EAAY2M,EAIbC,EAAUG,WAAaF,EAASE,UAAYH,EAAUI,OAASH,EAASG,OAC1EL,EAAKE,EAASI,UACZL,EAAUG,WAAaD,EAAWC,UAAYH,EAAUI,OAASF,EAAWE,OAC9EN,EAAOI,EAAWG,UAEpB5T,KAAK8O,mBACH8D,SAAU,aACVhQ,MACE0Q,GAAIA,EACJD,KAAMA,MAKZQ,EAAwB,WACtB,GAAI9T,GAAOC,IACXD,GAAK+T,GAA4B/Q,SAASnB,UAAUqI,SAEpDlH,SAASnB,UAAUqI,SAAW,WAC5B,MAAoB,kBAATjK,OAAuBA,KAAKiM,EAC9BlM,EAAK+T,GAA0B9Q,MAAMhD,KAAKoM,EAAU3J,WAEtD1C,EAAK+T,GAA0B9Q,MAAMhD,KAAMyC,aAItDsR,EAA0B,WACpB/T,KAAK8T,KAEP/Q,SAASnB,UAAUqI,SAAWjK,KAAK8T,KAQvCE,EAAqB,WAKnB,QAASC,GAAWC,GAClB,MAAO,UAASC,EAAIhU,GAKlB,IAAK,GADDoC,GAAO,GAAI6R,OAAM3R,UAAUzB,QACtBL,EAAI,EAAGA,EAAI4B,EAAKvB,SAAUL,EACjC4B,EAAK5B,GAAK8B,UAAU9B,EAEtB,IAAI0T,GAAmB9R,EAAK,EAQ5B,OAPIgB,GAAW8Q,KACb9R,EAAK,GAAKxC,EAAKqB,KAAKiT,IAMlBH,EAAKlR,MACAkR,EAAKlR,MAAMhD,KAAMuC,GAEjB2R,EAAK3R,EAAK,GAAIA,EAAK,KAOhC,QAAS+R,GAAgBxU,GACvB,GAAIyU,GAAQ9P,EAAQ3E,IAAW2E,EAAQ3E,GAAQ8B,SAC3C2S,IAASA,EAAMC,gBAAkBD,EAAMC,eAAe,sBACxDrM,EACEoM,EACA,mBACA,SAASL,GACP,MAAO,UAASzB,EAAS0B,EAAIM,EAASC,GAEpC,IACMP,GAAMA,EAAGQ,cACXR,EAAGQ,YAAc5U,EAAKqB,KAAK+S,EAAGQ,cAEhC,MAAOC,IAMT,GAAIC,GAAQC,EAAcC,CA6B1B,OA1BEzP,IACAA,EAAgByE,MACJ,gBAAXjK,GAAuC,SAAXA,KAI7BgV,EAAe/U,EAAKmT,EAAwB,SAC5C6B,EAAkBhV,EAAKiV,KACvBH,EAAS,SAAS7C,GAIhB,GAAKA,EAAL,CAEA,GAAID,EACJ,KACEA,EAAYC,EAAIiD,KAChB,MAAO/U,GAGP,OAEF,MAAkB,UAAd6R,EAA8B+C,EAAa9C,GACxB,aAAdD,EAAiCgD,EAAgB/C,GAArD,UAGFkC,EAAKnT,KACVf,KACAyS,EACA1S,EAAKqB,KAAK+S,EAAIvI,OAAWiJ,GACzBJ,EACAC,KAINQ,GAEF/M,EACEoM,EACA,sBACA,SAASL,GACP,MAAO,UAASlC,EAAKmC,EAAIM,EAASC,GAChC,IACEP,EAAKA,IAAOA,EAAGjI,EAAoBiI,EAAGjI,EAAoBiI,GAC1D,MAAOjU,IAGT,MAAOgU,GAAKnT,KAAKf,KAAMgS,EAAKmC,EAAIM,EAASC,KAG7CQ,IAvGN,GAAInV,GAAOC,KAEPkV,EAAkBnV,EAAKuG,EA2BvBhB,EAAkBtF,KAAKuE,EAAee,eA+E1C6C,GAAK1D,EAAS,aAAcwP,EAAYiB,GACxC/M,EAAK1D,EAAS,cAAewP,EAAYiB,GACrCzQ,EAAQ0Q,uBACVhN,EACE1D,EACA,wBACA,SAASyP,GACP,MAAO,UAASkB,GACd,MAAOlB,GAAKnU,EAAKqB,KAAKgU,MAG1BF,EAqCJ,KAAK,GA/BDG,IACF,cACA,SACA,OACA,mBACA,iBACA,oBACA,kBACA,cACA,aACA,qBACA,cACA,aACA,iBACA,eACA,kBACA,cACA,cACA,eACA,qBACA,SACA,YACA,eACA,gBACA,YACA,kBACA,SACA,iBACA,4BACA,wBAEO1U,EAAI,EAAGA,EAAI0U,EAAarU,OAAQL,IACvC2T,EAAgBe,EAAa1U,KAajC2U,EAAwB,WAMtB,QAASC,GAASC,EAAM1L,GAClB0L,IAAQ1L,IAAOvG,EAAWuG,EAAI0L,KAChCrN,EAAK2B,EAAK0L,EAAM,SAAStB,GACvB,MAAOnU,GAAKqB,KAAK8S,KARvB,GAAInU,GAAOC,KACPsF,EAAkBtF,KAAKuE,EAAee,gBAEtC4P,EAAkBnV,EAAKuG,CAU3B,IAAIhB,EAAgBwE,KAAO,kBAAoBrF,GAAS,CACtD,GAAIgR,GAAWhR,EAAQiR,gBAAkBjR,EAAQiR,eAAe9T,SAChEuG,GACEsN,EACA,OACA,SAASE,GACP,MAAO,UAAShQ,EAAQ8I,GAYtB,MARIrH,GAASqH,IAAQA,EAAImH,QAAQ7V,EAAKqE,UACpCpE,KAAK6V,IACHlQ,OAAQA,EACR8I,IAAKA,EACLqH,YAAa,OAIVH,EAAS3S,MAAMhD,KAAMyC,aAGhCyS,GAGF/M,EACEsN,EACA,OACA,SAASM,GACP,MAAO,YAIL,QAASC,KACP,GAAIlM,EAAI+L,IAAkC,IAAnB/L,EAAImM,WAAkB,CAC3C,IAGEnM,EAAI+L,GAAYC,YAAchM,EAAIoM,OAClC,MAAOhW,IAITH,EAAK+O,mBACHmG,KAAM,OACNrC,SAAU,MACVhQ,KAAMkH,EAAI+L,MAMhB,IAAK,GArBD/L,GAAM9J,KAoBNmW,GAAS,SAAU,UAAW,cACzBC,EAAI,EAAGA,EAAID,EAAMnV,OAAQoV,IAChCb,EAASY,EAAMC,GAAItM,EAiBrB,OAdI,sBAAwBA,IAAOvG,EAAWuG,EAAIuM,oBAChDlO,EACE2B,EACA,qBACA,SAASoK,GACP,MAAOnU,GAAKqB,KAAK8S,EAAMtI,OAAWoK,KAMtClM,EAAIuM,mBAAqBL,EAGpBD,EAAS/S,MAAMhD,KAAMyC,aAGhCyS,GAIA5P,EAAgBwE,KAAO1B,KACzBD,EACE1D,EACA,QACA,SAAS6R,GACP,MAAO,YAKL,IAAK,GADD/T,GAAO,GAAI6R,OAAM3R,UAAUzB,QACtBL,EAAI,EAAGA,EAAI4B,EAAKvB,SAAUL,EACjC4B,EAAK5B,GAAK8B,UAAU9B,EAGtB,IAEI8N,GAFA8H,EAAahU,EAAK,GAClBoD,EAAS,KAeb,IAZ0B,gBAAf4Q,GACT9H,EAAM8H,EACG,WAAa9R,IAAW8R,YAAsB9R,GAAQ+R,SAC/D/H,EAAM8H,EAAW9H,IACb8H,EAAW5Q,SACbA,EAAS4Q,EAAW5Q,SAGtB8I,EAAM,GAAK8H,EAIT9H,EAAImH,QAAQ7V,EAAKqE,QACnB,MAAOkS,GAAUtT,MAAMhD,KAAMuC,EAG3BA,GAAK,IAAMA,EAAK,GAAGoD,SACrBA,EAASpD,EAAK,GAAGoD,OAGnB,IAAI8Q,IACF9Q,OAAQA,EACR8I,IAAKA,EACLqH,YAAa,KAGf,OAAOQ,GACJtT,MAAMhD,KAAMuC,GACZmU,KAAK,SAASC,GASb,MARAF,GAAUX,YAAca,EAAST,OAEjCnW,EAAK+O,mBACHmG,KAAM,OACNrC,SAAU,QACVhQ,KAAM6T,IAGDE,IAER,SAAS,SAAS/B,GASjB,KAPA7U,GAAK+O,mBACHmG,KAAM,OACNrC,SAAU,QACVhQ,KAAM6T,EACNvU,MAAO,UAGH0S,MAIdM,GAMA5P,EAAgByE,KAAO/J,KAAK2D,IAC1BE,EAAUoJ,kBACZpJ,EAAUoJ,iBAAiB,QAASlN,EAAKmT,EAAwB,UAAU,GAC3ErP,EAAUoJ,iBAAiB,WAAYlN,EAAKiV,MAAyB,IAC5DnR,EAAU+S,cAEnB/S,EAAU+S,YAAY,UAAW7W,EAAKmT,EAAwB,UAC9DrP,EAAU+S,YAAY,aAAc7W,EAAKiV,OAQ7C,IAAI6B,GAASpS,EAAQoS,OACjBC,EAAsBD,GAAUA,EAAOE,KAAOF,EAAOE,IAAIC,QACzDC,GACDH,GACDrS,EAAQyS,SACRA,QAAQC,WACRD,QAAQE,YACV,IAAI9R,EAAgBoB,UAAYuQ,EAAwB,CAEtD,GAAII,GAAgB5S,EAAQ6S,UAC5B7S,GAAQ6S,WAAa,WACnB,GAAIC,GAAcxX,EAAK0G,EAAUG,IAGjC,IAFA7G,EAAKyX,GAAkBzX,EAAK4G,EAAW4Q,GAEnCF,EACF,MAAOA,GAAcrU,MAAMhD,KAAMyC,WAIrC,IAAIgV,GAA6B,SAASC,GAGxC,MAAO,YACL,GAAIjJ,GAAMhM,UAAUzB,OAAS,EAAIyB,UAAU,GAAKmJ,MAQhD,OALI6C,IAEF1O,EAAKyX,GAAkBzX,EAAK4G,EAAW8H,EAAM,IAGxCiJ,EAAiB1U,MAAMhD,KAAMyC,YAIxC0F,GAAK+O,QAAS,YAAaO,EAA4BvC,GACvD/M,EAAK+O,QAAS,eAAgBO,EAA4BvC,GAG5D,GAAI5P,EAAgBrD,SAAW,WAAawC,IAAWxC,QAAQ0V,IAAK,CAElE,GAAIC,GAAwB,SAASlV,EAAKE,GACxC7C,EAAK+O,mBACHpN,QAASgB,EACTR,MAAOU,EAAKV,MACZ0Q,SAAU,YAIdrL,IAAM,QAAS,OAAQ,OAAQ,QAAS,OAAQ,SAASiL,EAAGtQ,GAC1DsG,EAAkBvG,QAASC,EAAO0V,OAKxCC,EAAkB,WAGhB,IADA,GAAIC,GACG9X,KAAKsG,EAAiBtF,QAAQ,CACnC8W,EAAU9X,KAAKsG,EAAiB8I,OAEhC,IAAIL,GAAM+I,EAAQ,GAChBnW,EAAOmW,EAAQ,GACf5D,EAAO4D,EAAQ,EAEjB/I,GAAIpN,GAAQuS,IAIhB6D,EAAiB,WAEf,IAAK,GAAIpS,KAAU3F,MAAKmG,EACtBnG,KAAKkG,EAAiBP,GAAU3F,KAAKmG,EAAwBR,IAIjEqS,EAAe,WACb,GAAIjY,GAAOC,IAGXuH,GAAKvH,KAAKoG,EAAU,SAASoM,EAAGnD,GAC9B,GAAI4I,GAAY5I,EAAO,GACnB9M,EAAO8M,EAAO,EAClB4I,GAAUjV,MAAMjD,GAAOA,GAAMmY,OAAO3V,OAIxC4V,EAAW,SAASC,GAClB,GAAIC,GAAI1P,EAAW2P,KAAKF,GACtBnP,KACAtI,EAAI,CAEN,KACE,KAAOA,KAAKsI,EAAIR,EAAQ9H,IAAM0X,EAAE1X,IAAM,GACtC,MAAOT,GACP,KAAM,IAAIuB,GAAiB,gBAAkB2W,GAG/C,GAAInP,EAAIsC,OAASvL,KAAKuE,EAAegU,eACnC,KAAM,IAAI9W,GACR,iFAIJ,OAAOwH,IAGTuP,EAAkB,SAAS1N,GAEzB,GAAIsG,GAAe,KAAOtG,EAAI6I,MAAQ7I,EAAI2N,KAAO,IAAM3N,EAAI2N,KAAO,GAKlE,OAHI3N,GAAI4I,WACNtC,EAAetG,EAAI4I,SAAW,IAAMtC,GAE/BA,GAGTsH,EAAyB,WAElB1Y,KAAK+F,GACR/F,KAAK4N,EAAiB5K,MAAMhD,KAAMyC,YAItCkW,EAAkB,SAASC,EAAW1P,GACpC,GAAIwF,GAAS1O,KAAK2O,EAAeiK,EAAW1P,EAE5ClJ,MAAK6Y,EAAc,UACjBD,UAAWA,EACX1P,QAASA,IAGXlJ,KAAK8Y,GACHF,EAAUjX,KACViX,EAAUlX,QACVkX,EAAUnK,IACVmK,EAAUG,OACVrK,EACAxF,IAIJ8P,EAAgB,SAASJ,EAAW1P,GAClC,GAAInJ,GAAOC,KACP0O,IACJ,IAAIkK,EAAUlL,OAASkL,EAAUlL,MAAM1M,SACrCuG,EAAKqR,EAAUlL,MAAO,SAAS/M,EAAG+M,GAChC,GAAIuL,GAAQlZ,EAAKmZ,GAAgBxL,EAAOkL,EAAUnK,IAC9CwK,IACFvK,EAAOlF,KAAKyP,KAKZ/P,GAAWA,EAAQmE,gBACrB,IAAK,GAAI+I,GAAI,EAAGA,EAAIlN,EAAQmE,gBAAkB+I,EAAI1H,EAAO1N,OAAQoV,IAC/D1H,EAAO0H,GAAG+C,QAAS,CAKzB,OADAzK,GAASA,EAAOlM,MAAM,EAAGxC,KAAKuE,EAAec,kBAI/C+T,GAAiB,SAASH,EAAOI,GAE/B,GAAIC,IACFC,SAAUN,EAAMxK,IAChBsK,OAAQE,EAAMO,KACdC,MAAOR,EAAMS,OACbC,WAAUV,EAAMtN,MAAQ,IAuB1B,OAfKsN,GAAMxK,MACT6K,EAAWC,SAAWF,GAGxBC,EAAWH,SAGNnZ,KAAKuE,EAAeQ,aAAauJ,OACjCtO,KAAKuE,EAAeQ,aAAauJ,KAAKgL,EAAWC,WAEpD,qBAAqBjL,KAAKgL,EAAW,cAErC,qBAAqBhL,KAAKgL,EAAWC,WAGhCD,GAGTM,GAAmB,SAAS3E,EAAMvT,EAAS8M,EAASuK,EAAQrK,EAAQxF,GAClE,GAAI2Q,IAAmB5E,EAAOA,EAAO,KAAO,KAAOvT,GAAW,GAC9D,KACI1B,KAAKuE,EAAeK,aAAa0J,OAClCtO,KAAKuE,EAAeK,aAAa0J,KAAK5M,KACrC1B,KAAKuE,EAAeK,aAAa0J,KAAKuL,GAH1C,CAQA,GAAIrM,EAoBJ,IAlBIkB,GAAUA,EAAO1N,QACnBwN,EAAUE,EAAO,GAAG6K,UAAY/K,EAGhCE,EAAOE,UACPpB,GAAckB,OAAQA,IACbF,IACThB,GACEkB,SAEI6K,SAAU/K,EACVuK,OAAQA,EACRI,QAAQ,QAOZnZ,KAAKuE,EAAeM,WAAWyJ,OACjCtO,KAAKuE,EAAeM,WAAWyJ,KAAKE,OAMlCxO,KAAKuE,EAAeO,cAAcwJ,MACnCtO,KAAKuE,EAAeO,cAAcwJ,KAAKE,IAF1C,CAOA,GAAI5L,GAAO4E,GAGPsS,WACEC,SAEI9E,KAAMA,EACN3L,MAAO5H,EACP8L,WAAYA,KAIlBwM,QAASxL,GAEXtF,EAIFlJ,MAAK6O,EAAMjM,MAGbqX,GAAa,SAASrX,GAGpB,GAAI+G,GAAM3J,KAAKuE,EAAeY,gBAI9B,IAHIvC,EAAKlB,UACPkB,EAAKlB,QAAU+F,EAAS7E,EAAKlB,QAASiI,IAEpC/G,EAAKkX,UAAW,CAClB,GAAIA,GAAYlX,EAAKkX,UAAUC,OAAO,EACtCD,GAAUxQ,MAAQ7B,EAASqS,EAAUxQ,MAAOK,GAG9C,GAAIuQ,GAAUtX,EAAKsX,OAanB,OAZIA,KACEA,EAAQzL,MACVyL,EAAQzL,IAAMhH,EAASyS,EAAQzL,IAAKzO,KAAKuE,EAAea,eAEtD8U,EAAQC,UACVD,EAAQC,QAAU1S,EAASyS,EAAQC,QAASna,KAAKuE,EAAea,gBAIhExC,EAAKwX,aAAexX,EAAKwX,YAAYL,QACvC/Z,KAAKqa,GAAiBzX,EAAKwX,aAEtBxX,GAMT0X,GAAkB,SAASF,GAQzB,IAAK,GAJHG,GACAvL,EACApM,EAHE4X,GAAY,KAAM,OAAQ,OAKrB7Z,EAAI,EAAGA,EAAIyZ,EAAYL,OAAO/Y,SAAUL,EAE/C,GADAqO,EAAQoL,EAAYL,OAAOpZ,GAExBqO,EAAMwF,eAAe,SACrBvN,EAAS+H,EAAMpM,QAChB8E,EAAasH,EAAMpM,MAHrB,CAOAA,EAAO4E,KAAgBwH,EAAMpM,KAC7B,KAAK,GAAIwT,GAAI,EAAGA,EAAIoE,EAASxZ,SAAUoV,EACrCmE,EAAUC,EAASpE,GACfxT,EAAK4R,eAAe+F,IAAY3X,EAAK2X,KACvC3X,EAAK2X,GAAW9S,EAAS7E,EAAK2X,GAAUva,KAAKuE,EAAea,cAGhEgV,GAAYL,OAAOpZ,GAAGiC,KAAOA,IAIjC6X,GAAc,WACZ,GAAKza,KAAK8D,GAAkB9D,KAAK2D,EAAjC,CACA,GAAI+W,KAkBJ,OAhBI1a,MAAK8D,GAAiBC,EAAW4W,YACnCD,EAAS1V,SACP4V,aAAc/R,UAAU8R,YAKxBlW,EAAQiC,UAAYjC,EAAQiC,SAASE,OACvC8T,EAASjM,IAAMhK,EAAQiC,SAASE,MAG9B5G,KAAK2D,GAAgBE,EAAUgX,WAC5BH,EAAS1V,UAAS0V,EAAS1V,YAChC0V,EAAS1V,QAAQmV,QAAUtW,EAAUgX,UAGhCH,IAGTI,EAAe,WACb9a,KAAK+a,GAAmB,EACxB/a,KAAKgb,GAAgB,MAGvBC,GAAgB,WACd,MAAOjb,MAAK+a,IAAoB5X,IAAQnD,KAAKgb,GAAgBhb,KAAK+a,IAYpEG,GAAe,SAASC,GACtB,GAAIC,GAAOpb,KAAKiE,CAEhB,UACGmX,GACDD,EAAQzZ,UAAY0Z,EAAK1Z,SACzByZ,EAAQnB,UAAYoB,EAAKpB,WAKvBmB,EAAQ3N,YAAc4N,EAAK5N,WACtBvF,EAAiBkT,EAAQ3N,WAAY4N,EAAK5N,aACxC2N,EAAQrB,YAAasB,EAAKtB,WAE5B9R,EAAgBmT,EAAQrB,UAAWsB,EAAKtB,aAMnDuB,GAAkB,SAASnB,GAEzB,IAAIla,KAAKsb,KAAT,CAIA,GAAIpF,GAASgE,EAAQhE,MAKrB,IAAiB,MAAXA,GAA6B,MAAXA,GAA6B,MAAXA,EAA1C,CAEA,GAAIqF,EACJ,KAIIA,EADEnT,IACM8R,EAAQlV,QAAQwW,IAAI,eAEpBtB,EAAQuB,kBAAkB,eAIpCF,EAA8B,IAAtBG,SAASH,EAAO,IACxB,MAAOrb,IAITF,KAAK+a,GAAmBQ,EAEpBA,EAEwB,EAAxBvb,KAAK+a,IAAwB,IAEjC/a,KAAKgb,GAAgB7X,OAGvBwY,EAAO,SAAS/Y,GACd,GAAIwG,GAAgBpJ,KAAKuE,EAErBqX,GACAC,QAAS7b,KAAKqE,EACdxB,OAAQuG,EAAcvG,OACtBiZ,SAAU,cAEZpB,EAAW1a,KAAK+b,IAsDlB,IApDIrB,IACFkB,EAAS1B,QAAUQ,GAIjB9X,EAAKyK,sBAAuBzK,GAAKyK,eAErCzK,EAAO4E,EAAYoU,EAAUhZ,GAG7BA,EAAK+M,KAAOnI,EAAYA,KAAgBxH,KAAKsE,EAAeqL,MAAO/M,EAAK+M,MACxE/M,EAAKE,MAAQ0E,EAAYA,KAAgBxH,KAAKsE,EAAexB,OAAQF,EAAKE,OAG1EF,EAAKE,MAAM,oBAAsBK,IAAQnD,KAAKqG,EAE1CrG,KAAKuG,GAAgBvG,KAAKuG,EAAavF,OAAS,IAGlD4B,EAAKwX,aACHL,UAAWvX,MAAMzB,KAAKf,KAAKuG,EAAc,KAIzCvG,KAAKsE,EAAe+G,OAEtBzI,EAAKyI,KAAOrL,KAAKsE,EAAe+G,MAI9BjC,EAAc4G,cAAapN,EAAKoN,YAAc5G,EAAc4G,aAG5D5G,EAAc5E,UAAS5B,EAAK4B,QAAU4E,EAAc5E,SAGpD4E,EAAc4S,aAAYpZ,EAAKqZ,YAAc7S,EAAc4S,YAE/DpZ,EAAO5C,KAAKkc,GAActZ,GAG1BqL,OAAOC,KAAKtL,GAAMuZ,QAAQ,SAAS9S,IAChB,MAAbzG,EAAKyG,IAA8B,KAAdzG,EAAKyG,IAAe/B,EAAc1E,EAAKyG,YACvDzG,GAAKyG,KAIZ9F,EAAW6F,EAAc+G,gBAC3BvN,EAAOwG,EAAc+G,aAAavN,IAASA,GAIxCA,IAAQ0E,EAAc1E,MAMzBW,EAAW6F,EAAckH,qBACxBlH,EAAckH,mBAAmB1N,IAOpC,MAAI5C,MAAKsb,SACPtb,MAAKmJ,EAAU,OAAQ,uCAAwCvG,QAIzB,gBAA7BwG,GAAc5D,WACnBkE,KAAK0S,SAAWhT,EAAc5D,YAChCxF,KAAKqc,GAAsBzZ,GAG7B5C,KAAKqc,GAAsBzZ,KAI/B0Z,GAAe,SAAS1Z,GACtB,MAAO2F,GAAS3F,EAAM5C,KAAKuE,EAAekB,eAG5C8W,GAAU,WACR,MAAOzU,MAGT0U,GAAuB,SAAS5Z,EAAMT,GACpC,GAAIpC,GAAOC,KACPoJ,EAAgBpJ,KAAKuE,CAEzB,IAAKvE,KAAKqK,UAAV,CAQA,GALAzH,EAAO5C,KAAKyc,GAAY7Z,IAKnB5C,KAAKuE,EAAemY,iBAAmB1c,KAAK2c,GAAc/Z,GAE7D,WADA5C,MAAKmJ,EAAU,OAAQ,+BAAgCvG,EAOzD5C,MAAKkE,EAAetB,EAAKga,WAAaha,EAAKga,SAAW5c,KAAK6c,MAG3D7c,KAAKiE,EAAYrB,EAEjB5C,KAAKmJ,EAAU,QAAS,uBAAwBvG,EAEhD,IAAIka,IACFC,eAAgB,IAChBC,cAAe,YAAchd,KAAK8I,QAClCmU,WAAYjd,KAAKoE,EAGfpE,MAAKsL,IACPwR,EAAKI,cAAgBld,KAAKsL,EAG5B,IAAIwO,GAAYlX,EAAKkX,WAAalX,EAAKkX,UAAUC,OAAO,EAItD/Z,MAAKuE,EAAee,iBACpBtF,KAAKuE,EAAee,gBAAgB0E,QAEpChK,KAAK8O,mBACH8D,SAAU,SACVlR,QAASoY,GACJA,EAAU7E,KAAO6E,EAAU7E,KAAO,KAAO,IAAM6E,EAAUxQ,MAC1D1G,EAAKlB,QACTkb,SAAUha,EAAKga,SACf1a,MAAOU,EAAKV,OAAS,SAIzB,IAAIuM,GAAMzO,KAAKyL,GACdrC,EAAcoH,WAAaxQ,KAAKmd,IAAcpc,KAAKf,MAClDyO,IAAKA,EACLqO,KAAMA,EACNla,KAAMA,EACNsG,QAASE,EACTgU,UAAW,WACTrd,EAAK8G,IAEL9G,EAAK8Y,EAAc,WACjBjW,KAAMA,EACN4O,IAAK/C,IAEPtM,GAAYA,KAEdkb,QAAS,SAAiB/P,GACxBvN,EAAKoJ,EAAU,QAAS,mCAAoCmE,GAExDA,EAAM4M,SACRna,EAAKud,GAAiBhQ,EAAM4M,SAG9Bna,EAAK8Y,EAAc,WACjBjW,KAAMA,EACN4O,IAAK/C,IAEPnB,EAAQA,GAAS,GAAI1M,OAAM,sDAC3BuB,GAAYA,EAASmL,QAK3BiQ,GAAc,SAASC,GAErB,GAAI/O,GAAM+O,EAAK/O,IAAM,IAAM5G,EAAU2V,EAAKV,MAEtCW,EAAmB,KACnBC,IAUJ,IARIF,EAAKtU,QAAQlE,UACfyY,EAAmBzd,KAAK2d,GAAcH,EAAKtU,QAAQlE,UAGjDwY,EAAKtU,QAAQ0U,kBACfF,EAA2B1d,KAAK2d,GAAcH,EAAKtU,QAAQ0U,kBAGzDxV,IAAiB,CACnBsV,EAAyBhM,KAAOhO,EAAU8Z,EAAK5a,KAE/C,IAAIib,GAAsBrW,KAAgBxH,KAAK0F,GAC3CoY,EAAetW,EAAYqW,EAAqBH,EAMpD,OAJID,KACFK,EAAa9Y,QAAUyY,GAGlBhZ,EACJsZ,MAAMtP,EAAKqP,GACXpH,KAAK,SAASC,GACb,GAAIA,EAASqH,GACXR,EAAKJ,WAAaI,EAAKJ,gBAClB,CACL,GAAI9P,GAAQ,GAAI1M,OAAM,sBAAwB+V,EAAST,OAGvD5I,GAAM4M,QAAUvD,EAChB6G,EAAKH,SAAWG,EAAKH,QAAQ/P,MAGhC,SAAS,WACRkQ,EAAKH,SACHG,EAAKH,QAAQ,GAAIzc,OAAM,6CAI/B,GAAIsZ,GAAUzV,EAAQiR,gBAAkB,GAAIjR,GAAQiR,cACpD,IAAKwE,EAAL,CAGA,GAAI+D,GAAU,mBAAqB/D,IAAqC,mBAAnBgE,eAEhDD,KAED,mBAAqB/D,GACvBA,EAAQ7D,mBAAqB,WAC3B,GAA2B,IAAvB6D,EAAQjE,WAEL,GAAuB,MAAnBiE,EAAQhE,OACjBsH,EAAKJ,WAAaI,EAAKJ,gBAClB,IAAII,EAAKH,QAAS,CACvB,GAAIzI,GAAM,GAAIhU,OAAM,sBAAwBsZ,EAAQhE,OACpDtB,GAAIsF,QAAUA,EACdsD,EAAKH,QAAQzI,MAIjBsF,EAAU,GAAIgE,gBAGdzP,EAAMA,EAAI0P,QAAQ,WAAY,IAG1BX,EAAKJ,YACPlD,EAAQkE,OAASZ,EAAKJ,WAEpBI,EAAKH,UACPnD,EAAQmE,QAAU,WAChB,GAAIzJ,GAAM,GAAIhU,OAAM,oCACpBgU,GAAIsF,QAAUA,EACdsD,EAAKH,QAAQzI,MAKnBsF,EAAQoE,KAAK,OAAQ7P,GAEjBgP,GACFlW,EAAKkW,EAAkB,SAASpU,EAAKC,GACnC4Q,EAAQqE,iBAAiBlV,EAAKC,KAIlC4Q,EAAQsE,KAAK9a,EAAU8Z,EAAK5a,UAG9B6b,GAAe,SAASC,GACtB,GAAIC,KAEJ,KAAK,GAAItV,KAAOqV,GACd,GAAIA,EAAKlK,eAAenL,GAAM,CAC5B,GAAIC,GAAQoV,EAAKrV,EACjBsV,GAAUtV,GAAwB,kBAAVC,GAAuBA,IAAUA,EAI7D,MAAOqV,IAGTC,EAAW,SAAS1c,GAGhBlC,KAAKmG,EAAwBjE,KAC5BlC,KAAK+I,OAAS/I,KAAKuE,EAAewE,QAGnChG,SAASnB,UAAUoB,MAAMjC,KACvBf,KAAKmG,EAAwBjE,GAC7BlC,KAAKkG,KACF1D,MAAMzB,KAAK0B,UAAW,KAK/Boc,EAAe,SAASxV,EAAKqC,GACvB9H,EAAY8H,SACP1L,MAAKsE,EAAe+E,GAE3BrJ,KAAKsE,EAAe+E,GAAO7B,EAAYxH,KAAKsE,EAAe+E,OAAYqC,KAM7EzL,EAAM2B,UAAUkd,QAAU7e,EAAM2B,UAAU2N,eAC1CtP,EAAM2B,UAAUmd,kBAAoB9e,EAAM2B,UAAUqO,WAEpDxQ,EAAOD,QAAUS,IAEdc,KAAKf,KAAuB,mBAAXF,QAAyBA,OAAyB,mBAATC,MAAuBA,KAAyB,mBAAXF,QAAyBA,aACxH2B,EAAI,EAAEM,EAAI,EAAEmB,EAAI,EAAE+b,EAAI,EAAEC,EAAI,EAAEC,EAAI,IAAI3d,GAAG,SAASL,EAAQzB,EAAOD,IACpE,SAAWM,GAOX,GAAIqf,GAAmBje,EAAQ,GAG3BuD,EACgB,mBAAX5E,QACHA,OACkB,mBAAXC,GAAyBA,EAAyB,mBAATC,MAAuBA,QACzEqf,EAAS3a,EAAQxE,MAEjBA,EAAQ,GAAIkf,EAQhBlf,GAAMof,WAAa,WAEjB,MADA5a,GAAQxE,MAAQmf,EACTnf,GAGTA,EAAM2Q,YAENnR,EAAOD,QAAUS,EAoCjBR,EAAOD,QAAQ8f,OAASH,IAErBpe,KAAKf,KAAuB,mBAAXF,QAAyBA,OAAyB,mBAATC,MAAuBA,KAAyB,mBAAXF,QAAyBA,aACxHqD,EAAI,IAAID,GAAG,SAAS/B,EAAQzB,EAAOD,IACtC,SAAWM,GAQX,QAASmH,GAASsY,GAChB,MAAuB,gBAATA,IAA8B,OAATA,EAKrC,QAASvY,GAAQsC,GACf,UAAWW,SAASlJ,KAAKuI,IACvB,IAAK,iBACH,OAAO,CACT,KAAK,qBACH,OAAO,CACT,KAAK,wBACH,OAAO,CACT,SACE,MAAOA,aAAiB1I,QAI9B,QAASuG,GAAamC,GACpB,MAAOkW,MAAoD,2BAAzBvV,SAASlJ,KAAKuI,GAGlD,QAAS1F,GAAY2b,GACnB,MAAgB,UAATA,EAGT,QAAShc,GAAWgc,GAClB,MAAuB,kBAATA,GAGhB,QAASrY,GAAcqY,GACrB,MAAgD,oBAAzCtR,OAAOrM,UAAUqI,SAASlJ,KAAKwe,GAGxC,QAASnY,GAASmY,GAChB,MAAgD,oBAAzCtR,OAAOrM,UAAUqI,SAASlJ,KAAKwe,GAGxC,QAASlY,GAAQkY,GACf,MAAgD,mBAAzCtR,OAAOrM,UAAUqI,SAASlJ,KAAKwe,GAGxC,QAASjY,GAAciY,GACrB,IAAKrY,EAAcqY,GAAO,OAAO,CAEjC,KAAK,GAAI/M,KAAK+M,GACZ,GAAIA,EAAK/K,eAAehC,GACtB,OAAO,CAGX,QAAO,EAGT,QAASgN,KACP,IAEE,MADA,IAAIC,YAAW,KACR,EACP,MAAOvf,GACP,OAAO,GAIX,QAASkI,KACP,KAAM,SAAW3D,IAAU,OAAO,CAElC,KAIE,MAHA,IAAIib,SACJ,GAAIlJ,SAAQ,IACZ,GAAImJ,WACG,EACP,MAAOzf,GACP,OAAO,GAQX,QAAS4F,KACP,IAAKsC,IAAiB,OAAO,CAE7B,KAKE,MAHA,IAAIoO,SAAQ,cACV3Q,eAAgB,YAEX,EACP,MAAO3F,GACP,OAAO,GAIX,QAAS0f,KACP,MAAwC,kBAA1BC,uBAGhB,QAASC,GAAgB3d,GACvB,QAASgO,GAAavN,EAAMU,GAC1B,GAAIyc,GAAiB5d,EAASS,IAASA,CACvC,OAAIU,GACKA,EAASyc,IAAmBA,EAE9BA,EAGT,MAAO5P,GAGT,QAAS5I,GAAKwH,EAAK5M,GACjB,GAAIxB,GAAGyV,CAEP,IAAIxS,EAAYmL,EAAI/N,QAClB,IAAKL,IAAKoO,GACJpH,EAAOoH,EAAKpO,IACdwB,EAASpB,KAAK,KAAMJ,EAAGoO,EAAIpO,QAK/B,IADAyV,EAAIrH,EAAI/N,OAEN,IAAKL,EAAI,EAAGA,EAAIyV,EAAGzV,IACjBwB,EAASpB,KAAK,KAAMJ,EAAGoO,EAAIpO,IAMnC,QAAS6G,GAAYwY,EAAMC,GACzB,MAAKA,IAGL1Y,EAAK0Y,EAAM,SAAS5W,EAAKC,GACvB0W,EAAK3W,GAAOC,IAEP0W,GALEA,EAgBX,QAAStY,GAAaqH,GACpB,QAAKd,OAAOiS,UAGLjS,OAAOiS,SAASnR,GAGzB,QAAStH,GAAS2Q,EAAKzO,GACrB,GAAmB,gBAARA,GACT,KAAM,IAAI/I,OAAM,yDAElB,OAAmB,gBAARwX,IAA4B,IAARzO,EACtByO,EAEFA,EAAIpX,QAAU2I,EAAMyO,EAAMA,EAAIjN,OAAO,EAAGxB,GAAO,IAUxD,QAAShC,GAAOwY,EAAQ9W,GACtB,MAAO4E,QAAOrM,UAAU4S,eAAezT,KAAKof,EAAQ9W,GAGtD,QAASzB,GAAWwY,GAQlB,IALA,GAGEC,GAHEC,KACF3f,EAAI,EACJ4f,EAAMH,EAASpf,OAGVL,EAAI4f,EAAK5f,IACd0f,EAAUD,EAASzf,GACfyG,EAASiZ,GAGXC,EAAQ9W,KAAK6W,EAAQlC,QAAQ,8BAA+B,SACnDkC,GAAWA,EAAQG,QAE5BF,EAAQ9W,KAAK6W,EAAQG,OAIzB,OAAO,IAAIC,QAAOH,EAAQI,KAAK,KAAM,KAGvC,QAAS7Y,GAAUtH,GACjB,GAAIogB,KAIJ,OAHApZ,GAAKhH,EAAG,SAAS8I,EAAKC,GACpBqX,EAAMnX,KAAKyH,mBAAmB5H,GAAO,IAAM4H,mBAAmB3H,MAEzDqX,EAAMD,KAAK,KAMpB,QAASxY,GAASuG,GAChB,GAAmB,gBAARA,GAAkB,QAC7B,IAAImS,GAAQnS,EAAImS,MAAM,kEAGlBC,EAAQD,EAAM,IAAM,GACpBE,EAAWF,EAAM,IAAM,EAC3B,QACElN,SAAUkN,EAAM,GAChBjN,KAAMiN,EAAM,GACZ3V,KAAM2V,EAAM,GACZhN,SAAUgN,EAAM,GAAKC,EAAQC,GAGjC,QAAShZ,KACP,GAAIiZ,GAAStc,EAAQsc,QAAUtc,EAAQuc,QAEvC,KAAKpd,EAAYmd,IAAWA,EAAOE,gBAAiB,CAGlD,GAAIC,GAAM,GAAIC,aAAY,EAC1BJ,GAAOE,gBAAgBC,GAGvBA,EAAI,GAAe,KAATA,EAAI,GAAc,MAE5BA,EAAI,GAAe,MAATA,EAAI,GAAe,KAE7B,IAAIE,GAAM,SAASC,GAEjB,IADA,GAAIC,GAAID,EAAIpX,SAAS,IACdqX,EAAEtgB,OAAS,GAChBsgB,EAAI,IAAMA,CAEZ,OAAOA,GAGT,OACEF,GAAIF,EAAI,IACRE,EAAIF,EAAI,IACRE,EAAIF,EAAI,IACRE,EAAIF,EAAI,IACRE,EAAIF,EAAI,IACRE,EAAIF,EAAI,IACRE,EAAIF,EAAI,IACRE,EAAIF,EAAI,IAIV,MAAO,mCAAmC/C,QAAQ,QAAS,SAASoD,GAClE,GAAIlhB,GAAqB,GAAhBqJ,KAAK0S,SAAiB,EAC7BkF,EAAU,MAANC,EAAYlhB,EAAS,EAAJA,EAAW,CAClC,OAAOihB,GAAErX,SAAS,MAYxB,QAASlC,GAAiByZ,GAWxB,IATA,GAOEC,GAPEC,EAAsB,EACxBC,EAAiB,GACjBC,KACAC,EAAS,EACTtB,EAAM,EACNuB,EAAY,MACZC,EAAYD,EAAU9gB,OAGjBwgB,GAAQK,IAAWH,IACxBD,EAAUO,EAAoBR,KAMhB,SAAZC,GACCI,EAAS,GAAKtB,EAAMqB,EAAI5gB,OAAS+gB,EAAYN,EAAQzgB,QAAU2gB,KAKlEC,EAAIpY,KAAKiY,GAETlB,GAAOkB,EAAQzgB,OACfwgB,EAAOA,EAAKS,UAGd,OAAOL,GAAIhT,UAAU8R,KAAKoB,GAS5B,QAASE,GAAoBR,GAC3B,GACEU,GACAC,EACA9Y,EACA+Y,EACAzhB,EALEihB,IAOJ,KAAKJ,IAASA,EAAKzO,QACjB,MAAO,EAST,IANA6O,EAAIpY,KAAKgY,EAAKzO,QAAQR,eAClBiP,EAAK7c,IACPid,EAAIpY,KAAK,IAAMgY,EAAK7c,IAGtBud,EAAYV,EAAKU,UACbA,GAAa9a,EAAS8a,GAExB,IADAC,EAAUD,EAAUxZ,MAAM,OACrB/H,EAAI,EAAGA,EAAIwhB,EAAQnhB,OAAQL,IAC9BihB,EAAIpY,KAAK,IAAM2Y,EAAQxhB,GAG3B,IAAI0hB,IAAiB,OAAQ,OAAQ,QAAS,MAC9C,KAAK1hB,EAAI,EAAGA,EAAI0hB,EAAcrhB,OAAQL,IACpC0I,EAAMgZ,EAAc1hB,GACpByhB,EAAOZ,EAAKc,aAAajZ,GACrB+Y,GACFR,EAAIpY,KAAK,IAAMH,EAAM,KAAO+Y,EAAO,KAGvC,OAAOR,GAAIlB,KAAK,IAMlB,QAAS6B,GAAgB9hB,EAAG+hB,GAC1B,WAAY/hB,IAAM+hB,GAMpB,QAASC,GAAgBhiB,EAAG+hB,GAC1B,MAAO5e,GAAYnD,IAAMmD,EAAY4e,GAMvC,QAASxa,GAAgB6F,EAAK6U,GAC5B,OAAIH,EAAgB1U,EAAK6U,KAEzB7U,EAAMA,EAAIkM,OAAO,GACjB2I,EAAMA,EAAI3I,OAAO,GAEblM,EAAIoH,OAASyN,EAAIzN,MAAQpH,EAAIvE,QAAUoZ,EAAIpZ,SAG3CmZ,EAAgB5U,EAAIL,WAAYkV,EAAIlV,aAEjCvF,EAAiB4F,EAAIL,WAAYkV,EAAIlV,cAM9C,QAASvF,GAAiB0a,EAAQC,GAChC,GAAIL,EAAgBI,EAAQC,GAAS,OAAO,CAE5C,IAAIC,GAAUF,EAAOjU,OACjBoU,EAAUF,EAAOlU,MAGrB,IAAImU,EAAQ7hB,SAAW8hB,EAAQ9hB,OAAQ,OAAO,CAI9C,KAAK,GADDP,GAAG+hB,EACE7hB,EAAI,EAAGA,EAAIkiB,EAAQ7hB,OAAQL,IAGlC,GAFAF,EAAIoiB,EAAQliB,GACZ6hB,EAAIM,EAAQniB,GAEVF,EAAE8Y,WAAaiJ,EAAEjJ,UACjB9Y,EAAEsY,SAAWyJ,EAAEzJ,QACftY,EAAEgZ,QAAU+I,EAAE/I,OACdhZ,EAAE,cAAgB+hB,EAAE,YAEpB,OAAO,CAEX,QAAO,EAUT,QAASra,GAAK4G,EAAKpN,EAAMohB,EAAaC,GACpC,GAAW,MAAPjU,EAAJ,CACA,GAAImF,GAAOnF,EAAIpN,EACfoN,GAAIpN,GAAQohB,EAAY7O,GACxBnF,EAAIpN,GAAMsK,GAAY,EACtB8C,EAAIpN,GAAMyK,EAAW8H,EACjB8O,GACFA,EAAMxZ,MAAMuF,EAAKpN,EAAMuS,KAU3B,QAASvR,GAASsgB,EAAOC,GACvB,IAAK7b,EAAQ4b,GAAQ,MAAO,EAI5B,KAAK,GAFDE,MAEKxiB,EAAI,EAAGA,EAAIsiB,EAAMjiB,OAAQL,IAChC,IACEwiB,EAAO3Z,KAAK4Z,OAAOH,EAAMtiB,KACzB,MAAOT,GACPijB,EAAO3Z,KAAK,gCAIhB,MAAO2Z,GAAOzC,KAAKwC,GASrB,QAASG,GAAW/Z,GAClB,QAASga,UAAUha,GAAOZ,MAAM,SAAS1H,OAG3C,QAASuiB,GAASja,GAChB,MAAO+Z,GAAW5f,KAAKC,UAAU4F,IAGnC,QAASka,GAAela,GACtB,GAAqB,gBAAVA,GAAoB,CAC7B,GAAIma,GAAY,EAChB,OAAOhc,GAAS6B,EAAOma,GAClB,GACY,gBAAVna,IACU,iBAAVA,IACU,mBAAVA,GAEP,MAAOA,EAGT,IAAI2L,GAAOhH,OAAOrM,UAAUqI,SAASlJ,KAAKuI,EAG1C,OAAa,oBAAT2L,EAAmC,WAC1B,mBAATA,EAAkC,UACzB,sBAATA,EACK3L,EAAM3H,KAAO,cAAgB2H,EAAM3H,KAAO,IAAM,aAElD2H,EAGT,QAASoa,GAAgBpa,EAAOqa,GAC9B,MAAc,KAAVA,EAAoBH,EAAela,GAEnCpC,EAAcoC,GACT2E,OAAOC,KAAK5E,GAAOsa,OAAO,SAASC,EAAKxa,GAE7C,MADAwa,GAAIxa,GAAOqa,EAAgBpa,EAAMD,GAAMsa,EAAQ,GACxCE,OAEAzP,MAAM/M,QAAQiC,GAChBA,EAAMwa,IAAI,SAASC,GACxB,MAAOL,GAAgBK,EAAKJ,EAAQ,KAIjCH,EAAela,GAGxB,QAAShB,GAAmB8E,EAAIuW,EAAOK,GACrC,IAAK9c,EAAckG,GAAK,MAAOA,EAE/BuW,GAAyB,gBAAVA,GAAqBM,EAAgCN,EACpEK,EAA2B,gBAAVL,GAAqBO,EAA+BF,CAErE,IAAIG,GAAaT,EAAgBtW,EAAIuW,EAErC,OAAIJ,GAAS7f,EAAUygB,IAAeH,EAC7B1b,EAAmB8E,EAAIuW,EAAQ,GAGjCQ,EAGT,QAAS9b,GAAwB6F,EAAMuV,GACrC,GAAoB,gBAATvV,IAAqC,gBAATA,GAAmB,MAAOA,GAAKjE,UACtE,KAAKmK,MAAM/M,QAAQ6G,GAAO,MAAO,EAKjC,IAHAA,EAAOA,EAAKkW,OAAO,SAAS/a,GAC1B,MAAsB,gBAARA,KAEI,IAAhB6E,EAAKlN,OAAc,MAAO,sBAG9B,IADAyiB,EAAiC,gBAAdA,GAAyBY,EAA4BZ,EACpEvV,EAAK,GAAGlN,QAAUyiB,EAAW,MAAOvV,GAAK,EAE7C,KAAK,GAAIoW,GAAWpW,EAAKlN,OAAQsjB,EAAW,EAAGA,IAAY,CACzD,GAAIH,GAAajW,EAAK1L,MAAM,EAAG8hB,GAAU5D,KAAK,KAC9C,MAAIyD,EAAWnjB,OAASyiB,GACxB,MAAIa,KAAapW,EAAKlN,OAAemjB,EAC9BA,EAAa,IAGtB,MAAO,GAGT,QAAS5b,GAAS0a,EAAOxd,GAcvB,QAAS8e,GAAeC,GACtB,MAAInd,GAAQmd,GACHA,EAAYV,IAAI,SAASC,GAC9B,MAAOQ,GAAeR,KAItB7c,EAAcsd,GACTvW,OAAOC,KAAKsW,GAAaZ,OAAO,SAASC,EAAKY,GAMnD,MAJEZ,GAAIY,GADFC,EAAepW,KAAKmW,GACbE,EAEAJ,EAAeC,EAAYC,IAE/BZ,OAIJW,EA/BT,IAAKnd,EAAQ5B,IAAkB4B,EAAQ5B,IAAyC,IAAxBA,EAAazE,OACnE,MAAOiiB,EAET,IAEI2B,GAFAF,EAAiB9c,EAAWnC,GAC5Bkf,EAAe,UAGnB,KACEC,EAAYnhB,KAAKqM,MAAMpM,EAAUuf,IACjC,MAAO4B,GACP,MAAO5B,GAwBT,MAAOsB,GAAeK,GAlkBxB,GAAIlhB,GAAYxC,EAAQ,GAEpBuD,EACgB,mBAAX5E,QACHA,OACkB,mBAAXC,GAAyBA,EAAyB,mBAATC,MAAuBA,QAgczEkkB,EAAgC,EAEhCC,EAA+B,MAC/BG,EAA4B,EA6HhC5kB,GAAOD,SACLyH,SAAUA,EACVD,QAASA,EACTG,aAAcA,EACdvD,YAAaA,EACbL,WAAYA,EACZ2D,cAAeA,EACfE,SAAUA,EACVC,QAASA,EACTC,cAAeA,EACfkY,mBAAoBA,EACpBpX,cAAeA,EACftC,uBAAwBA,EACxB8Z,8BAA+BA,EAC/BE,gBAAiBA,EACjBvY,KAAMA,EACNC,YAAaA,EACbC,SAAUA,EACVC,aAAcA,EACdC,OAAQA,EACRC,WAAYA,EACZC,UAAWA,EACXC,MAAOA,EACPC,iBAAkBA,EAClBia,oBAAqBA,EACrBha,gBAAiBA,EACjBC,iBAAkBA,EAClBC,SAAUA,EACVC,KAAMA,EACNxF,SAAUA,EACV2F,mBAAoBA,EACpBD,wBAAyBA,EACzBE,SAAUA,KAGTxH,KAAKf,KAAuB,mBAAXF,QAAyBA,OAAyB,mBAATC,MAAuBA,KAAyB,mBAAXF,QAAyBA,aACxHof,EAAI,IAAID,GAAG,SAAS9d,EAAQzB,EAAOD,IACtC,SAAWM,GA+BX,QAASglB,KACP,MAAwB,mBAAblc,WAAiD,MAArBA,SAASlC,SAAyB,GAElEkC,SAASlC,SAASE,KAjC3B,GAAI7E,GAAQb,EAAQ,GAYhB4F,GACF7B,qBAAqB,EACrB8D,OAAO,GAILtE,EACgB,mBAAX5E,QACHA,OACkB,mBAAXC,GAAyBA,EAAyB,mBAATC,MAAuBA,QAGzEglB,KAAYviB,MACZwiB,EAAmB,IAGnBC,EAAiB,yGA+CrBne,GAASwD,OAAS,WAUhB,QAASC,GAAU2a,GACjBC,IACAC,EAAS5b,KAAK0b,GAOhB,QAASG,GAAYH,GACnB,IAAK,GAAIvkB,GAAIykB,EAASpkB,OAAS,EAAGL,GAAK,IAAKA,EACtCykB,EAASzkB,KAAOukB,GAClBE,EAASE,OAAO3kB,EAAG,GAQzB,QAAS4kB,KACPC,IACAJ,KAOF,QAASK,GAAe/X,EAAOgY,GAC7B,GAAI5L,GAAY,IAChB,KAAI4L,GAAkB5e,EAAS7B,oBAA/B,CAGA,IAAK,GAAItE,KAAKykB,GACZ,GAAIA,EAAS5Q,eAAe7T,GAC1B,IACEykB,EAASzkB,GAAGqC,MAAM,MAAO0K,GAAOwK,OAAO6M,EAAOhkB,KAAK0B,UAAW,KAC9D,MAAOkjB,GACP7L,EAAY6L,EAKlB,GAAI7L,EACF,KAAMA,IAiBV,QAAS8L,GAAsBljB,EAAK+L,EAAKoX,EAAQC,EAAO1Y,GACtD,GAAIM,GAAQ,KAERoM,EAAY/X,EAAMoF,aAAaiG,GAAMA,EAAGE,MAAQF,EAEhD1L,EAAUK,EAAMoF,aAAazE,GAAOA,EAAIhB,QAAUgB,CAEtD,IAAIqjB,EACFjf,EAAS6G,kBAAkBqY,oCACzBD,EACAtX,EACAoX,EACAnkB,GAEFukB,QACK,IAAInM,GAAa/X,EAAMiF,QAAQ8S,GAMpCpM,EAAQ5G,EAAS6G,kBAAkBmM,GACnC2L,EAAe/X,GAAO,OACjB,CACL,GAOIwY,GAPAxf,GACF+H,IAAKA,EACL+K,KAAMqM,EACNnM,OAAQoM,GAGNnkB,EAAOiK,MAGX,IAAkC,uBAA3B3B,SAASlJ,KAAKW,GAAgC,CACnD,GAAIwkB,GAASxkB,EAAQkf,MAAMqE,EACvBiB,KACFvkB,EAAOukB,EAAO,GACdxkB,EAAUwkB,EAAO,IAIrBxf,EAASiF,KAAOqZ,EAEhBtX,GACE/L,KAAMA,EACND,QAASA,EACT+M,IAAKqW,IACLpX,OAAQhH,IAEV+e,EAAe/X,GAAO,GAGxB,QAAIyY,GACKA,EAAmBnjB,MAAMhD,KAAMyC,WAM1C,QAAS0iB,KACHiB,IAGJD,EAAqB1hB,EAAQ4Z,QAC7B5Z,EAAQ4Z,QAAUuH,EAClBQ,GAA2B,GAG7B,QAASZ,KACFY,IAGL3hB,EAAQ4Z,QAAU8H,EAClBC,GAA2B,EAC3BD,EAAqBva,QAGvB,QAASqa,KACP,GAAII,GAAsBN,EACxBO,EAAYC,CACdA,GAAW,KACXR,EAAqB,KACrBtV,EAAgB,KAChBgV,EAAeziB,MAAM,MAAOqjB,GAAqB,GAAOnO,OAAOoO,IAUjE,QAAShc,GAAO8C,EAAIoZ,GAClB,GAAIjkB,GAAOwiB,EAAOhkB,KAAK0B,UAAW,EAClC,IAAIsjB,EAAoB,CACtB,GAAItV,IAAkBrD,EACpB,MAEA6Y,KAIJ,GAAIvY,GAAQ5G,EAAS6G,kBAAkBP,EAevC,IAdA2Y,EAAqBrY,EACrB+C,EAAgBrD,EAChBmZ,EAAWhkB,EAMXsP,WAAW,WACLpB,IAAkBrD,GACpB6Y,KAEDvY,EAAM+Y,WAAa,IAAO,GAEzBD,KAAY,EACd,KAAMpZ,GA9LV,GA0DI+Y,GAAoBC,EA1DpBhB,KACFmB,EAAW,KACX9V,EAAgB,KAChBsV,EAAqB,IAkMvB,OAHAzb,GAAOC,UAAYA,EACnBD,EAAO+a,YAAcA,EACrB/a,EAAO+B,UAAYkZ,EACZjb,KAsDTxD,EAAS6G,kBAAoB,WA4C3B,QAAS+Y,GAA+BtZ,GACtC,GAAwB,mBAAbA,GAAGM,OAA0BN,EAAGM,MAA3C,CAiBA,IAAK,GALDiZ,GACAC,EACAC,EAZAhQ,EAAS,0IACTiQ,EAAQ,wHAGRC,EAAQ,6JAERC,EAAY,gDACZC,EAAa,gCACbC,EAAQ9Z,EAAGM,MAAMhF,MAAM,MACvBgF,KAMK/M,GAFO,sBAAsB2X,KAAKlL,EAAG1L,SAEjC,GAAG0U,EAAI8Q,EAAMlmB,OAAQL,EAAIyV,IAAKzV,EAAG,CAC5C,GAAKimB,EAAQ/P,EAAOyB,KAAK4O,EAAMvmB,IAAM,CACnC,GAAIwmB,GAAWP,EAAM,IAAqC,IAA/BA,EAAM,GAAGhR,QAAQ,UACxCwR,EAASR,EAAM,IAAmC,IAA7BA,EAAM,GAAGhR,QAAQ,OACtCwR,KAAWT,EAAWM,EAAW3O,KAAKsO,EAAM,OAE9CA,EAAM,GAAKD,EAAS,GACpBC,EAAM,GAAKD,EAAS,GACpBC,EAAM,GAAKD,EAAS,IAEtBE,GACEpY,IAAM0Y,EAAsB,KAAXP,EAAM,GACvBjb,KAAMib,EAAM,IAAM5B,EAClBziB,KAAM4kB,GAAYP,EAAM,OACxBpN,KAAMoN,EAAM,IAAMA,EAAM,GAAK,KAC7BlN,OAAQkN,EAAM,IAAMA,EAAM,GAAK,UAE5B,IAAKA,EAAQE,EAAMxO,KAAK4O,EAAMvmB,IACnCkmB,GACEpY,IAAKmY,EAAM,GACXjb,KAAMib,EAAM,IAAM5B,EAClBziB,QACAiX,MAAOoN,EAAM,GACblN,OAAQkN,EAAM,IAAMA,EAAM,GAAK,UAE5B,CAAA,KAAKA,EAAQG,EAAMzO,KAAK4O,EAAMvmB,KAsBnC,QArBA,IAAIymB,GAASR,EAAM,IAAMA,EAAM,GAAGhR,QAAQ,aACtCwR,KAAWT,EAAWK,EAAU1O,KAAKsO,EAAM,MAE7CA,EAAM,GAAKD,EAAS,GACpBC,EAAM,GAAKD,EAAS,GACpBC,EAAM,GAAK,MACI,IAANjmB,GAAYimB,EAAM,IAAiC,mBAApBxZ,GAAGia,eAK3C3Z,EAAM,GAAGgM,OAAStM,EAAGia,aAAe,GAEtCR,GACEpY,IAAKmY,EAAM,GACXjb,KAAMib,EAAM,IAAM5B,EAClBziB,KAAMqkB,EAAM,GAAKA,EAAM,GAAGle,MAAM,QAChC8Q,KAAMoN,EAAM,IAAMA,EAAM,GAAK,KAC7BlN,OAAQkN,EAAM,IAAMA,EAAM,GAAK,OAM9BC,EAAQlb,MAAQkb,EAAQrN,OAC3BqN,EAAQlb,KAAOqZ,GAGjBtX,EAAMlE,KAAKqd,GAGb,MAAKnZ,GAAM1M,QAKTW,KAAMyL,EAAGzL,KACTD,QAAS0L,EAAG1L,QACZ+M,IAAKqW,IACLpX,MAAOA,GAPA,MAwBX,QAASsY,GAAoCpN,EAAWnK,EAAKoX,EAAQnkB,GACnE,GAAI4lB,IACF7Y,IAAKA,EACL+K,KAAMqM,EAGR,IAAIyB,EAAQ7Y,KAAO6Y,EAAQ9N,KAAM,CAO/B,GANAZ,EAAU6N,YAAa,EAElBa,EAAQ3b,OACX2b,EAAQ3b,KAAOqZ,GAGbpM,EAAUlL,MAAM1M,OAAS,GACvB4X,EAAUlL,MAAM,GAAGe,MAAQ6Y,EAAQ7Y,IAAK,CAC1C,GAAImK,EAAUlL,MAAM,GAAG8L,OAAS8N,EAAQ9N,KACtC,OAAO,CACF,KACJZ,EAAUlL,MAAM,GAAG8L,MACpBZ,EAAUlL,MAAM,GAAG/B,OAAS2b,EAAQ3b,KAGpC,MADAiN,GAAUlL,MAAM,GAAG8L,KAAO8N,EAAQ9N,MAC3B,EAOb,MAFAZ,GAAUlL,MAAM6Z,QAAQD,GACxB1O,EAAU4O,SAAU,GACb,EAKT,MAHE5O,GAAU6N,YAAa,GAGlB,EAYT,QAASgB,GAAsCra,EAAIuW,GASjD,IACE,GALAiD,GACAc,EALEC,EAAe,qEACjBja,KACAka,KACAC,GAAY,EAMRC,EAAOL,EAAsCM,OACjDD,IAASD,EACTC,EAAOA,EAAKC,OAEZ,GAAID,IAASna,GAAqBma,IAAShhB,EAASwD,OAApD,CAkBA,GAbAod,GACEjZ,IAAK,KACL9C,KAAMqZ,EACNxL,KAAM,KACNE,OAAQ,MAGNoO,EAAKnmB,KACP+lB,EAAK/b,KAAOmc,EAAKnmB,MACPilB,EAAQe,EAAarP,KAAKwP,EAAK7d,eACzCyd,EAAK/b,KAAOib,EAAM,IAGK,mBAAdc,GAAK/b,KACd,IACE+b,EAAK/b,KAAOib,EAAM3D,MAAM+E,UAAU,EAAGpB,EAAM3D,MAAMrN,QAAQ,MACzD,MAAO1V,IAGP0nB,EAAM,GAAKE,GACbD,GAAY,EAEZD,EAAM,GAAKE,IAAQ,EAGrBpa,EAAMlE,KAAKke,GAGT/D,GAGFjW,EAAM4X,OAAO,EAAG3B,EAGlB,IAAIxU,IACFxN,KAAMyL,EAAGzL,KACTD,QAAS0L,EAAG1L,QACZ+M,IAAKqW,IACLpX,MAAOA,EAQT,OANAsY,GACE7W,EACA/B,EAAG6a,WAAa7a,EAAG8a,SACnB9a,EAAGoM,MAAQpM,EAAG+a,WACd/a,EAAG1L,SAAW0L,EAAGgb,aAEZjZ,EAQT,QAASxB,GAAkBP,EAAIuW,GAC7B,GAAIjW,GAAQ,IACZiW,GAAiB,MAATA,EAAgB,GAAKA,CAE7B,KAEE,GADAjW,EAAQgZ,EAA+BtZ,GAErC,MAAOM,GAET,MAAOxN,GACP,GAAI4G,EAASiC,MACX,KAAM7I,GAIV,IAEE,GADAwN,EAAQ+Z,EAAsCra,EAAIuW,EAAQ,GAExD,MAAOjW,GAET,MAAOxN,GACP,GAAI4G,EAASiC,MACX,KAAM7I,GAGV,OACEyB,KAAMyL,EAAGzL,KACTD,QAAS0L,EAAG1L,QACZ+M,IAAKqW,KAOT,MAHAnX,GAAkBqY,oCAAsCA,EACxDrY,EAAkB+Y,+BAAiCA,EAE5C/Y,KAGTlO,EAAOD,QAAUsH,IAEd/F,KAAKf,KAAuB,mBAAXF,QAAyBA,OAAyB,mBAATC,MAAuBA,KAAyB,mBAAXF,QAAyBA,aACxHoD,EAAI,IAAIgc,GAAG,SAAS/d,EAAQzB,EAAOD,GAetC,QAASoW,GAAQyS,EAAUC,GACzB,IAAK,GAAI3nB,GAAI,EAAGA,EAAI0nB,EAASrnB,SAAUL,EACrC,GAAI0nB,EAAS1nB,KAAO2nB,EAAQ,MAAO3nB,EAErC,UAGF,QAAS+C,GAAUqL,EAAKwZ,EAAUC,EAAQC,GACxC,MAAOhlB,MAAKC,UAAUqL,EAAK2Z,EAAWH,EAAUE,GAAgBD,GAIlE,QAASG,GAAerf,GACtB,GAAIsL,IAEFlH,MAAOpE,EAAMoE,MACbhM,QAAS4H,EAAM5H,QACfC,KAAM2H,EAAM3H,KAGd,KAAK,GAAIhB,KAAK2I,GACR2E,OAAOrM,UAAU4S,eAAezT,KAAKuI,EAAO3I,KAC9CiU,EAAIjU,GAAK2I,EAAM3I,GAInB,OAAOiU,GAGT,QAAS8T,GAAWH,EAAUE,GAC5B,GAAI/a,MACAQ,IAWJ,OATqB,OAAjBua,IACFA,EAAgB,SAASpf,EAAKC,GAC5B,MAAIoE,GAAM,KAAOpE,EACR,eAEF,eAAiB4E,EAAK1L,MAAM,EAAGoT,EAAQlI,EAAOpE,IAAQoX,KAAK,KAAO,MAItE,SAASrX,EAAKC,GACnB,GAAIoE,EAAM1M,OAAS,EAAG,CACpB,GAAI4nB,GAAUhT,EAAQlI,EAAO1N,OAC5B4oB,EAAUlb,EAAM4X,OAAOsD,EAAU,GAAKlb,EAAMlE,KAAKxJ,OACjD4oB,EAAU1a,EAAKoX,OAAOsD,EAASC,EAAAA,EAAUxf,GAAO6E,EAAK1E,KAAKH,IAEtDuM,EAAQlI,EAAOpE,KAClBA,EAAQmf,EAAc1nB,KAAKf,KAAMqJ,EAAKC,QAGxCoE,GAAMlE,KAAKF,EAGb,OAAmB,OAAZif,EACHjf,YAAiB1I,OAAQ+nB,EAAerf,GAASA,EACjDif,EAASxnB,KAAKf,KAAMqJ,EAAKC,IA5DjC9J,EAAUC,EAAOD,QAAUkE,EAC3BlE,EAAQspB,aAAeJ,OA+DjBxJ,GAAG,SAAShe,EAAQzB,EAAOD,GAwBjC,QAASupB,GAAQC,EAAGlO,GAClB,GAAImO,IAAW,MAAJD,IAAmB,MAAJlO,GACtBoO,GAAOF,GAAK,KAAOlO,GAAK,KAAOmO,GAAO,GAC1C,OAAQC,IAAO,GAAa,MAAND,EAMxB,QAASE,GAAc9H,EAAK+H,GAC1B,MAAQ/H,IAAO+H,EAAQ/H,IAAS,GAAK+H,EAMvC,QAASC,GAAOC,EAAG7oB,EAAG+hB,EAAGwG,EAAG1oB,EAAGH,GAC7B,MAAO4oB,GAAQI,EAAcJ,EAAQA,EAAQtoB,EAAG6oB,GAAIP,EAAQC,EAAG7oB,IAAKG,GAAIkiB;CAE1E,QAAS+G,GAAM9oB,EAAG+hB,EAAGjB,EAAGiI,EAAGR,EAAG1oB,EAAGH,GAC/B,MAAOkpB,GAAQ7G,EAAIjB,GAAOiB,EAAIgH,EAAI/oB,EAAG+hB,EAAGwG,EAAG1oB,EAAGH,GAEhD,QAASspB,GAAMhpB,EAAG+hB,EAAGjB,EAAGiI,EAAGR,EAAG1oB,EAAGH,GAC/B,MAAOkpB,GAAQ7G,EAAIgH,EAAMjI,GAAKiI,EAAI/oB,EAAG+hB,EAAGwG,EAAG1oB,EAAGH,GAEhD,QAASupB,GAAMjpB,EAAG+hB,EAAGjB,EAAGiI,EAAGR,EAAG1oB,EAAGH,GAC/B,MAAOkpB,GAAO7G,EAAIjB,EAAIiI,EAAG/oB,EAAG+hB,EAAGwG,EAAG1oB,EAAGH,GAEvC,QAASwpB,GAAMlpB,EAAG+hB,EAAGjB,EAAGiI,EAAGR,EAAG1oB,EAAGH,GAC/B,MAAOkpB,GAAO9H,GAAKiB,GAAKgH,GAAI/oB,EAAG+hB,EAAGwG,EAAG1oB,EAAGH,GAM1C,QAASypB,GAAQZ,EAAGzI,GAElByI,EAAEzI,GAAO,IAAM,KAASA,EAAM,GAC9ByI,GAAKzI,EAAM,KAAQ,GAAM,GAAK,IAAMA,CAEpC,IAAI5f,GACAkpB,EACAC,EACAC,EACAC,EACAvpB,EAAI,WACJ+hB,aACAjB,cACAiI,EAAI,SAER,KAAK7oB,EAAI,EAAGA,EAAIqoB,EAAEhoB,OAAQL,GAAK,GAC7BkpB,EAAOppB,EACPqpB,EAAOtH,EACPuH,EAAOxI,EACPyI,EAAOR,EAEP/oB,EAAI8oB,EAAM9oB,EAAG+hB,EAAGjB,EAAGiI,EAAGR,EAAEroB,GAAI,cAC5B6oB,EAAID,EAAMC,EAAG/oB,EAAG+hB,EAAGjB,EAAGyH,EAAEroB,EAAI,GAAI,eAChC4gB,EAAIgI,EAAMhI,EAAGiI,EAAG/oB,EAAG+hB,EAAGwG,EAAEroB,EAAI,GAAI,GAAI,WACpC6hB,EAAI+G,EAAM/G,EAAGjB,EAAGiI,EAAG/oB,EAAGuoB,EAAEroB,EAAI,GAAI,gBAChCF,EAAI8oB,EAAM9oB,EAAG+hB,EAAGjB,EAAGiI,EAAGR,EAAEroB,EAAI,GAAI,cAChC6oB,EAAID,EAAMC,EAAG/oB,EAAG+hB,EAAGjB,EAAGyH,EAAEroB,EAAI,GAAI,GAAI,YACpC4gB,EAAIgI,EAAMhI,EAAGiI,EAAG/oB,EAAG+hB,EAAGwG,EAAEroB,EAAI,GAAI,gBAChC6hB,EAAI+G,EAAM/G,EAAGjB,EAAGiI,EAAG/oB,EAAGuoB,EAAEroB,EAAI,GAAI,cAChCF,EAAI8oB,EAAM9oB,EAAG+hB,EAAGjB,EAAGiI,EAAGR,EAAEroB,EAAI,GAAI,EAAG,YACnC6oB,EAAID,EAAMC,EAAG/oB,EAAG+hB,EAAGjB,EAAGyH,EAAEroB,EAAI,GAAI,gBAChC4gB,EAAIgI,EAAMhI,EAAGiI,EAAG/oB,EAAG+hB,EAAGwG,EAAEroB,EAAI,IAAK,WACjC6hB,EAAI+G,EAAM/G,EAAGjB,EAAGiI,EAAG/oB,EAAGuoB,EAAEroB,EAAI,IAAK,gBACjCF,EAAI8oB,EAAM9oB,EAAG+hB,EAAGjB,EAAGiI,EAAGR,EAAEroB,EAAI,IAAK,EAAG,YACpC6oB,EAAID,EAAMC,EAAG/oB,EAAG+hB,EAAGjB,EAAGyH,EAAEroB,EAAI,IAAK,cACjC4gB,EAAIgI,EAAMhI,EAAGiI,EAAG/oB,EAAG+hB,EAAGwG,EAAEroB,EAAI,IAAK,gBACjC6hB,EAAI+G,EAAM/G,EAAGjB,EAAGiI,EAAG/oB,EAAGuoB,EAAEroB,EAAI,IAAK,GAAI,YAErCF,EAAIgpB,EAAMhpB,EAAG+hB,EAAGjB,EAAGiI,EAAGR,EAAEroB,EAAI,GAAI,cAChC6oB,EAAIC,EAAMD,EAAG/oB,EAAG+hB,EAAGjB,EAAGyH,EAAEroB,EAAI,GAAI,eAChC4gB,EAAIkI,EAAMlI,EAAGiI,EAAG/oB,EAAG+hB,EAAGwG,EAAEroB,EAAI,IAAK,GAAI,WACrC6hB,EAAIiH,EAAMjH,EAAGjB,EAAGiI,EAAG/oB,EAAGuoB,EAAEroB,GAAI,eAC5BF,EAAIgpB,EAAMhpB,EAAG+hB,EAAGjB,EAAGiI,EAAGR,EAAEroB,EAAI,GAAI,cAChC6oB,EAAIC,EAAMD,EAAG/oB,EAAG+hB,EAAGjB,EAAGyH,EAAEroB,EAAI,IAAK,EAAG,UACpC4gB,EAAIkI,EAAMlI,EAAGiI,EAAG/oB,EAAG+hB,EAAGwG,EAAEroB,EAAI,IAAK,eACjC6hB,EAAIiH,EAAMjH,EAAGjB,EAAGiI,EAAG/oB,EAAGuoB,EAAEroB,EAAI,GAAI,eAChCF,EAAIgpB,EAAMhpB,EAAG+hB,EAAGjB,EAAGiI,EAAGR,EAAEroB,EAAI,GAAI,EAAG,WACnC6oB,EAAIC,EAAMD,EAAG/oB,EAAG+hB,EAAGjB,EAAGyH,EAAEroB,EAAI,IAAK,eACjC4gB,EAAIkI,EAAMlI,EAAGiI,EAAG/oB,EAAG+hB,EAAGwG,EAAEroB,EAAI,GAAI,eAChC6hB,EAAIiH,EAAMjH,EAAGjB,EAAGiI,EAAG/oB,EAAGuoB,EAAEroB,EAAI,GAAI,GAAI,YACpCF,EAAIgpB,EAAMhpB,EAAG+hB,EAAGjB,EAAGiI,EAAGR,EAAEroB,EAAI,IAAK,eACjC6oB,EAAIC,EAAMD,EAAG/oB,EAAG+hB,EAAGjB,EAAGyH,EAAEroB,EAAI,GAAI,aAChC4gB,EAAIkI,EAAMlI,EAAGiI,EAAG/oB,EAAG+hB,EAAGwG,EAAEroB,EAAI,GAAI,GAAI,YACpC6hB,EAAIiH,EAAMjH,EAAGjB,EAAGiI,EAAG/oB,EAAGuoB,EAAEroB,EAAI,IAAK,gBAEjCF,EAAIipB,EAAMjpB,EAAG+hB,EAAGjB,EAAGiI,EAAGR,EAAEroB,EAAI,GAAI,WAChC6oB,EAAIE,EAAMF,EAAG/oB,EAAG+hB,EAAGjB,EAAGyH,EAAEroB,EAAI,GAAI,gBAChC4gB,EAAImI,EAAMnI,EAAGiI,EAAG/oB,EAAG+hB,EAAGwG,EAAEroB,EAAI,IAAK,GAAI,YACrC6hB,EAAIkH,EAAMlH,EAAGjB,EAAGiI,EAAG/oB,EAAGuoB,EAAEroB,EAAI,IAAK,cACjCF,EAAIipB,EAAMjpB,EAAG+hB,EAAGjB,EAAGiI,EAAGR,EAAEroB,EAAI,GAAI,eAChC6oB,EAAIE,EAAMF,EAAG/oB,EAAG+hB,EAAGjB,EAAGyH,EAAEroB,EAAI,GAAI,GAAI,YACpC4gB,EAAImI,EAAMnI,EAAGiI,EAAG/oB,EAAG+hB,EAAGwG,EAAEroB,EAAI,GAAI,eAChC6hB,EAAIkH,EAAMlH,EAAGjB,EAAGiI,EAAG/oB,EAAGuoB,EAAEroB,EAAI,IAAK,gBACjCF,EAAIipB,EAAMjpB,EAAG+hB,EAAGjB,EAAGiI,EAAGR,EAAEroB,EAAI,IAAK,EAAG,WACpC6oB,EAAIE,EAAMF,EAAG/oB,EAAG+hB,EAAGjB,EAAGyH,EAAEroB,GAAI,eAC5B4gB,EAAImI,EAAMnI,EAAGiI,EAAG/oB,EAAG+hB,EAAGwG,EAAEroB,EAAI,GAAI,eAChC6hB,EAAIkH,EAAMlH,EAAGjB,EAAGiI,EAAG/oB,EAAGuoB,EAAEroB,EAAI,GAAI,GAAI,UACpCF,EAAIipB,EAAMjpB,EAAG+hB,EAAGjB,EAAGiI,EAAGR,EAAEroB,EAAI,GAAI,cAChC6oB,EAAIE,EAAMF,EAAG/oB,EAAG+hB,EAAGjB,EAAGyH,EAAEroB,EAAI,IAAK,eACjC4gB,EAAImI,EAAMnI,EAAGiI,EAAG/oB,EAAG+hB,EAAGwG,EAAEroB,EAAI,IAAK,GAAI,WACrC6hB,EAAIkH,EAAMlH,EAAGjB,EAAGiI,EAAG/oB,EAAGuoB,EAAEroB,EAAI,GAAI,eAEhCF,EAAIkpB,EAAMlpB,EAAG+hB,EAAGjB,EAAGiI,EAAGR,EAAEroB,GAAI,cAC5B6oB,EAAIG,EAAMH,EAAG/oB,EAAG+hB,EAAGjB,EAAGyH,EAAEroB,EAAI,GAAI,GAAI,YACpC4gB,EAAIoI,EAAMpI,EAAGiI,EAAG/oB,EAAG+hB,EAAGwG,EAAEroB,EAAI,IAAK,gBACjC6hB,EAAImH,EAAMnH,EAAGjB,EAAGiI,EAAG/oB,EAAGuoB,EAAEroB,EAAI,GAAI,cAChCF,EAAIkpB,EAAMlpB,EAAG+hB,EAAGjB,EAAGiI,EAAGR,EAAEroB,EAAI,IAAK,EAAG,YACpC6oB,EAAIG,EAAMH,EAAG/oB,EAAG+hB,EAAGjB,EAAGyH,EAAEroB,EAAI,GAAI,gBAChC4gB,EAAIoI,EAAMpI,EAAGiI,EAAG/oB,EAAG+hB,EAAGwG,EAAEroB,EAAI,IAAK,aACjC6hB,EAAImH,EAAMnH,EAAGjB,EAAGiI,EAAG/oB,EAAGuoB,EAAEroB,EAAI,GAAI,gBAChCF,EAAIkpB,EAAMlpB,EAAG+hB,EAAGjB,EAAGiI,EAAGR,EAAEroB,EAAI,GAAI,EAAG,YACnC6oB,EAAIG,EAAMH,EAAG/oB,EAAG+hB,EAAGjB,EAAGyH,EAAEroB,EAAI,IAAK,cACjC4gB,EAAIoI,EAAMpI,EAAGiI,EAAG/oB,EAAG+hB,EAAGwG,EAAEroB,EAAI,GAAI,gBAChC6hB,EAAImH,EAAMnH,EAAGjB,EAAGiI,EAAG/oB,EAAGuoB,EAAEroB,EAAI,IAAK,GAAI,YACrCF,EAAIkpB,EAAMlpB,EAAG+hB,EAAGjB,EAAGiI,EAAGR,EAAEroB,EAAI,GAAI,cAChC6oB,EAAIG,EAAMH,EAAG/oB,EAAG+hB,EAAGjB,EAAGyH,EAAEroB,EAAI,IAAK,gBACjC4gB,EAAIoI,EAAMpI,EAAGiI,EAAG/oB,EAAG+hB,EAAGwG,EAAEroB,EAAI,GAAI,GAAI,WACpC6hB,EAAImH,EAAMnH,EAAGjB,EAAGiI,EAAG/oB,EAAGuoB,EAAEroB,EAAI,GAAI,eAEhCF,EAAIsoB,EAAQtoB,EAAGopB,GACfrH,EAAIuG,EAAQvG,EAAGsH,GACfvI,EAAIwH,EAAQxH,EAAGwI,GACfP,EAAIT,EAAQS,EAAGQ,EAEjB,QAAQvpB,EAAG+hB,EAAGjB,EAAGiI,GAMnB,QAASS,GAAUhH,GACjB,GAAItiB,GACAwiB,EAAS,GACT+G,EAA0B,GAAfjH,EAAMjiB,MACrB,KAAKL,EAAI,EAAGA,EAAIupB,EAAUvpB,GAAK,EAC7BwiB,GAAUC,OAAO+G,aAAclH,EAAMtiB,GAAK,KAAQA,EAAI,GAAO,IAE/D,OAAOwiB,GAOT,QAASiH,GAAUnH,GACjB,GAAItiB,GACAwiB,IAEJ,KADAA,GAAQF,EAAMjiB,QAAU,GAAK,GAAK4K,OAC7BjL,EAAI,EAAGA,EAAIwiB,EAAOniB,OAAQL,GAAK,EAClCwiB,EAAOxiB,GAAK,CAEd,IAAI0pB,GAAyB,EAAfpH,EAAMjiB,MACpB,KAAKL,EAAI,EAAGA,EAAI0pB,EAAS1pB,GAAK,EAC5BwiB,EAAOxiB,GAAK,KAAiC,IAA1BsiB,EAAMqH,WAAW3pB,EAAI,KAAeA,EAAI,EAE7D,OAAOwiB,GAMT,QAASoH,GAAQjqB,GACf,MAAO2pB,GAAUL,EAAQQ,EAAU9pB,GAAe,EAAXA,EAAEU,SAM3C,QAASwpB,GAAYnhB,EAAKzG,GACxB,GAAIjC,GAIA+d,EAHA+L,EAAOL,EAAU/gB,GACjBqhB,KACAC,IAMJ,KAJAD,EAAK,IAAMC,EAAK,IAAM/e,OAClB6e,EAAKzpB,OAAS,KAChBypB,EAAOb,EAAQa,EAAmB,EAAbphB,EAAIrI,SAEtBL,EAAI,EAAGA,EAAI,GAAIA,GAAK,EACvB+pB,EAAK/pB,GAAe,UAAV8pB,EAAK9pB,GACfgqB,EAAKhqB,GAAe,WAAV8pB,EAAK9pB,EAGjB,OADA+d,GAAOkL,EAAQc,EAAKxS,OAAOkS,EAAUxnB,IAAQ,IAAoB,EAAdA,EAAK5B,QACjDipB,EAAUL,EAAQe,EAAKzS,OAAOwG,GAAO,MAM9C,QAASkM,GAAS3H,GAChB,GAEI+F,GACAroB,EAHAkqB,EAAS,mBACT1H,EAAS,EAGb,KAAKxiB,EAAI,EAAGA,EAAIsiB,EAAMjiB,OAAQL,GAAK,EACjCqoB,EAAI/F,EAAMqH,WAAW3pB,GACrBwiB,GAAU0H,EAAOC,OAAQ9B,IAAM,EAAK,IAAQ6B,EAAOC,OAAW,GAAJ9B,EAE5D,OAAO7F,GAMT,QAAS4H,GAAa9H,GACpB,MAAO+H,UAAS/Z,mBAAmBgS,IAMrC,QAASgI,GAAO3qB,GACd,MAAOiqB,GAAQQ,EAAazqB,IAE9B,QAAS4qB,GAAO5qB,GACd,MAAOsqB,GAASK,EAAO3qB,IAEzB,QAAS6qB,GAAW1G,EAAG+E,GACrB,MAAOgB,GAAYO,EAAatG,GAAIsG,EAAavB,IAEnD,QAAS4B,GAAW3G,EAAG+E,GACrB,MAAOoB,GAASO,EAAW1G,EAAG+E,IAGhC,QAASziB,GAAIskB,EAAQhiB,EAAKiiB,GACxB,MAAKjiB,GAMAiiB,EAGEH,EAAW9hB,EAAKgiB,GAFdD,EAAW/hB,EAAKgiB,GANlBC,EAGEL,EAAOI,GAFLH,EAAOG,GAUpB5rB,EAAOD,QAAUuH,YAEN,EAAE,IAAI","file":"raven.min.js"} \ No newline at end of file diff --git a/dist/sri.json b/dist/sri.json index fb3e2642417f..fff0ef2e2a3a 100644 --- a/dist/sri.json +++ b/dist/sri.json @@ -1,20 +1,578 @@ { - "@dist/raven.js": { + "@build/angular,console,ember,require,vue/raven.js": { "hashes": { - "sha256": "986P+XPpcUAsCgHIffZrLXOM3qF8hwwRAf8Pbj3+l0U=", - "sha512": "B1SSEgalruqKHRjLG3hl+g55bgm5ucuCRg8oBCyB0DcIXhNlsHxeG3XwmDn93lAy9yLIMAW3hXKehkZj+h+8HQ==" + "sha256": "RgAHTRYtEPflF6Ai71hxugYo9tk0iL8SZFoDw1pTHEM=", + "sha512": "LhJIy6EE8dEvMtkBQH3JXvcl3f5IHlM0+ms9mp0zmySXJCltDGNtK6Imje/XYF79DBGQIUT+5WfNHvpP3KEnDQ==" }, "type": null, - "integrity": "sha256-986P+XPpcUAsCgHIffZrLXOM3qF8hwwRAf8Pbj3+l0U= sha512-B1SSEgalruqKHRjLG3hl+g55bgm5ucuCRg8oBCyB0DcIXhNlsHxeG3XwmDn93lAy9yLIMAW3hXKehkZj+h+8HQ==", - "path": "dist/raven.js" + "integrity": "sha256-RgAHTRYtEPflF6Ai71hxugYo9tk0iL8SZFoDw1pTHEM= sha512-LhJIy6EE8dEvMtkBQH3JXvcl3f5IHlM0+ms9mp0zmySXJCltDGNtK6Imje/XYF79DBGQIUT+5WfNHvpP3KEnDQ==", + "path": "build/angular,console,ember,require,vue/raven.js" }, - "@dist/raven.min.js": { + "@build/angular,console,ember,require,vue/raven.min.js": { "hashes": { - "sha256": "iSi2Hd/fgRrUbyfELh7lQ0S4iqkOSNmEBMeb+rED1gI=", - "sha512": "VLhKf10cRS55TuheDYJRq3t5EU86sjfnu3ZEbIjGgo6AlZXJIZfvTSbOYTFliA9QABBfl057rAEyptvDPYuOMA==" + "sha256": "j89LiAGPnnA/6ffyeRqZ+Zt1GbtazvCwlvfDFWanQIc=", + "sha512": "TKEq07EcHvRRQieSgcEtiGdD9/rlb8ZbkORkWC/ttLDYLIlM9oBFdQOtG5JmGCfUmIgSGiHwKlRPESeCMb2uqg==" }, "type": null, - "integrity": "sha256-iSi2Hd/fgRrUbyfELh7lQ0S4iqkOSNmEBMeb+rED1gI= sha512-VLhKf10cRS55TuheDYJRq3t5EU86sjfnu3ZEbIjGgo6AlZXJIZfvTSbOYTFliA9QABBfl057rAEyptvDPYuOMA==", - "path": "dist/raven.min.js" + "integrity": "sha256-j89LiAGPnnA/6ffyeRqZ+Zt1GbtazvCwlvfDFWanQIc= sha512-TKEq07EcHvRRQieSgcEtiGdD9/rlb8ZbkORkWC/ttLDYLIlM9oBFdQOtG5JmGCfUmIgSGiHwKlRPESeCMb2uqg==", + "path": "build/angular,console,ember,require,vue/raven.min.js" + }, + "@build/angular,console,ember,require/raven.js": { + "hashes": { + "sha256": "+MdGmzxMypaJF4QZRhiaL4yR8GbSG+lf0WPtvZRwCX4=", + "sha512": "+CVagmxa53MF8nHJ+iRUkpxHN3Kc2bpuVQLpRTk8EWWEIhXJJjI2jN2rL1RVKB2Fd3xdiG6HmJkrtv0Dt0qMSQ==" + }, + "type": null, + "integrity": "sha256-+MdGmzxMypaJF4QZRhiaL4yR8GbSG+lf0WPtvZRwCX4= sha512-+CVagmxa53MF8nHJ+iRUkpxHN3Kc2bpuVQLpRTk8EWWEIhXJJjI2jN2rL1RVKB2Fd3xdiG6HmJkrtv0Dt0qMSQ==", + "path": "build/angular,console,ember,require/raven.js" + }, + "@build/angular,console,ember,require/raven.min.js": { + "hashes": { + "sha256": "VqmtF3uDgyUyLt2JFEs00YsI+Wo0x0UaivGrMXU+qkA=", + "sha512": "C9kY0j87yzIa2Vnr4nCdX1muPHAKf0uFIBicLyVaPbqRltL/h48nC2qL9xBNvAa+Dai0aBK3tlEB5+sWjbAf+A==" + }, + "type": null, + "integrity": "sha256-VqmtF3uDgyUyLt2JFEs00YsI+Wo0x0UaivGrMXU+qkA= sha512-C9kY0j87yzIa2Vnr4nCdX1muPHAKf0uFIBicLyVaPbqRltL/h48nC2qL9xBNvAa+Dai0aBK3tlEB5+sWjbAf+A==", + "path": "build/angular,console,ember,require/raven.min.js" + }, + "@build/angular,console,ember,vue/raven.js": { + "hashes": { + "sha256": "HyhSrEfWjaejNuFa60b57gRLVYNbB38482fQcTt7aCY=", + "sha512": "v3ZC8rKFOW+z94ARzLDP+7chEI6txdBQSKKmmrRcYc7/ikKZIlYAXm4+Rjcm2VLVFTGeRJH4KxSHn2LKwWi3YA==" + }, + "type": null, + "integrity": "sha256-HyhSrEfWjaejNuFa60b57gRLVYNbB38482fQcTt7aCY= sha512-v3ZC8rKFOW+z94ARzLDP+7chEI6txdBQSKKmmrRcYc7/ikKZIlYAXm4+Rjcm2VLVFTGeRJH4KxSHn2LKwWi3YA==", + "path": "build/angular,console,ember,vue/raven.js" + }, + "@build/angular,console,ember,vue/raven.min.js": { + "hashes": { + "sha256": "DcmsVpY+4csSEEm3sYlz9/Wm8jGXmEOOsNz8gRoYlS4=", + "sha512": "BLxj9VAcEnK5MJ4kZwfhN2AMoRGRfvnXUv/x9Xhly0+pmePWBhUXGa0Hfdpkasv+UU9MkgQMBSGrTV+L6AIJbw==" + }, + "type": null, + "integrity": "sha256-DcmsVpY+4csSEEm3sYlz9/Wm8jGXmEOOsNz8gRoYlS4= sha512-BLxj9VAcEnK5MJ4kZwfhN2AMoRGRfvnXUv/x9Xhly0+pmePWBhUXGa0Hfdpkasv+UU9MkgQMBSGrTV+L6AIJbw==", + "path": "build/angular,console,ember,vue/raven.min.js" + }, + "@build/angular,console,ember/raven.js": { + "hashes": { + "sha256": "hyk6I4y34+eFv7YRwcZh3xOkcvyADHpDWDXNGfrAbCM=", + "sha512": "po0LnWcEuN21cqkMxY6ypPH62i22rUeJml+ZEotUVR8kr27hD+z2Gx3J8Jy+dk/F6bgzEdGMnYS757QaBzfe9A==" + }, + "type": null, + "integrity": "sha256-hyk6I4y34+eFv7YRwcZh3xOkcvyADHpDWDXNGfrAbCM= sha512-po0LnWcEuN21cqkMxY6ypPH62i22rUeJml+ZEotUVR8kr27hD+z2Gx3J8Jy+dk/F6bgzEdGMnYS757QaBzfe9A==", + "path": "build/angular,console,ember/raven.js" + }, + "@build/angular,console,ember/raven.min.js": { + "hashes": { + "sha256": "snwWfycI/FRy1C1PeuR/aPRAO3BySxRZnNXROLf8sRo=", + "sha512": "gyvciXB4NhZXVDNh3khFlhYDZPf9Kk8Pw75d0MHytOdciHRRTQU3zqey+LGeVwpQhbF+8HVor+//VTy1P2rTHQ==" + }, + "type": null, + "integrity": "sha256-snwWfycI/FRy1C1PeuR/aPRAO3BySxRZnNXROLf8sRo= sha512-gyvciXB4NhZXVDNh3khFlhYDZPf9Kk8Pw75d0MHytOdciHRRTQU3zqey+LGeVwpQhbF+8HVor+//VTy1P2rTHQ==", + "path": "build/angular,console,ember/raven.min.js" + }, + "@build/angular,console,require,vue/raven.js": { + "hashes": { + "sha256": "jBKldkr4G7Tk+8jgDvP7LqsYh5Z8N9yHTPT7c4+k7DQ=", + "sha512": "cx7W95cjkqvziZ5wF+7MGUtViuaFmYAln7EwkFp9xg3XbrlEPFPdI58cKoYT/ax0eSt1bXKGMhDpTZjtgvTbEg==" + }, + "type": null, + "integrity": "sha256-jBKldkr4G7Tk+8jgDvP7LqsYh5Z8N9yHTPT7c4+k7DQ= sha512-cx7W95cjkqvziZ5wF+7MGUtViuaFmYAln7EwkFp9xg3XbrlEPFPdI58cKoYT/ax0eSt1bXKGMhDpTZjtgvTbEg==", + "path": "build/angular,console,require,vue/raven.js" + }, + "@build/angular,console,require,vue/raven.min.js": { + "hashes": { + "sha256": "3fT87vNRzaZ/qYrIapA5C4Y4g9T0QXbz7eavLvPcaGg=", + "sha512": "0E62PczoMq2GDH8gFpo6HTQrUe+ezuf0+74m42q6/6IjYejxs9A/jdkt2XN3o1Oy8yi290F9F8NyA4Lv2wLhxA==" + }, + "type": null, + "integrity": "sha256-3fT87vNRzaZ/qYrIapA5C4Y4g9T0QXbz7eavLvPcaGg= sha512-0E62PczoMq2GDH8gFpo6HTQrUe+ezuf0+74m42q6/6IjYejxs9A/jdkt2XN3o1Oy8yi290F9F8NyA4Lv2wLhxA==", + "path": "build/angular,console,require,vue/raven.min.js" + }, + "@build/angular,console,require/raven.js": { + "hashes": { + "sha256": "HmZCcCRPcSheoN1lbWRjT8CGNSJmTbrXXRRpgj2yjjE=", + "sha512": "7PT+gwBjS30EFtrNfDxtSVj55wIjc0XQImq1tlLXIPV0kTOfMj7ls9O+C4rGfjutGEtvtmRG9F6wLJ4PXNyAAQ==" + }, + "type": null, + "integrity": "sha256-HmZCcCRPcSheoN1lbWRjT8CGNSJmTbrXXRRpgj2yjjE= sha512-7PT+gwBjS30EFtrNfDxtSVj55wIjc0XQImq1tlLXIPV0kTOfMj7ls9O+C4rGfjutGEtvtmRG9F6wLJ4PXNyAAQ==", + "path": "build/angular,console,require/raven.js" + }, + "@build/angular,console,require/raven.min.js": { + "hashes": { + "sha256": "aKczXLNWLFVf1Vc1vV8tslbVCvVDC4r2TqV19mW0T8g=", + "sha512": "coWJfql+Gu+bEM5/Cubg/GEavbUdZcYmS3Ci8eVqqilvDXJex4Jl+kFEGLZwNKSCPj3WNDvGHZ/F9nBiFC2iHQ==" + }, + "type": null, + "integrity": "sha256-aKczXLNWLFVf1Vc1vV8tslbVCvVDC4r2TqV19mW0T8g= sha512-coWJfql+Gu+bEM5/Cubg/GEavbUdZcYmS3Ci8eVqqilvDXJex4Jl+kFEGLZwNKSCPj3WNDvGHZ/F9nBiFC2iHQ==", + "path": "build/angular,console,require/raven.min.js" + }, + "@build/angular,console,vue/raven.js": { + "hashes": { + "sha256": "WmH69cDBxDcspfEZyPdx/4AKUrhUbelkYoacQExzpYQ=", + "sha512": "o7AW4Tl2fnWMUDx0TaPkx6dm/MAZk7cRllTb6LQ9WQS1Wr4i0JVeFw24BUh4tTy03CP6wqaQJF7yClrBTzz6kA==" + }, + "type": null, + "integrity": "sha256-WmH69cDBxDcspfEZyPdx/4AKUrhUbelkYoacQExzpYQ= sha512-o7AW4Tl2fnWMUDx0TaPkx6dm/MAZk7cRllTb6LQ9WQS1Wr4i0JVeFw24BUh4tTy03CP6wqaQJF7yClrBTzz6kA==", + "path": "build/angular,console,vue/raven.js" + }, + "@build/angular,console,vue/raven.min.js": { + "hashes": { + "sha256": "aQcxpIzUW9uZZ6207NvduJ/oG1oLT3H6hJTfazuVGsI=", + "sha512": "sg1K7iBZCeKpIwQJZyz2uhyLlUTwsogGYXuCfwegg6sSUOrLEV7LfKtAKFngSgLkEVix9MGPX51c4wHq9MH68w==" + }, + "type": null, + "integrity": "sha256-aQcxpIzUW9uZZ6207NvduJ/oG1oLT3H6hJTfazuVGsI= sha512-sg1K7iBZCeKpIwQJZyz2uhyLlUTwsogGYXuCfwegg6sSUOrLEV7LfKtAKFngSgLkEVix9MGPX51c4wHq9MH68w==", + "path": "build/angular,console,vue/raven.min.js" + }, + "@build/angular,console/raven.js": { + "hashes": { + "sha256": "Q+zX57duGVsLbJoUiucHzrgMAVkb9FHBnkldMz2eIto=", + "sha512": "XDPLKbIrA4GFL2KJvpScqdr53yC+vT+zBXx9CjqjmTGMWh1bxOgwb89LNvWcgVRYIsIwuhJHJUqhPVFeTWc4oQ==" + }, + "type": null, + "integrity": "sha256-Q+zX57duGVsLbJoUiucHzrgMAVkb9FHBnkldMz2eIto= sha512-XDPLKbIrA4GFL2KJvpScqdr53yC+vT+zBXx9CjqjmTGMWh1bxOgwb89LNvWcgVRYIsIwuhJHJUqhPVFeTWc4oQ==", + "path": "build/angular,console/raven.js" + }, + "@build/angular,console/raven.min.js": { + "hashes": { + "sha256": "w/2w66pSvBA+2wfsItQjuCoH5a8O/mLmLSOyMTg2zfM=", + "sha512": "qw7pLNyMEdusF6UyDeCstI6ZMpXb2rpisoqggNdKuXugMwaGaoXzg+H+xFn5Dy6IsRj0SnjKzXd34ut9LrtV8A==" + }, + "type": null, + "integrity": "sha256-w/2w66pSvBA+2wfsItQjuCoH5a8O/mLmLSOyMTg2zfM= sha512-qw7pLNyMEdusF6UyDeCstI6ZMpXb2rpisoqggNdKuXugMwaGaoXzg+H+xFn5Dy6IsRj0SnjKzXd34ut9LrtV8A==", + "path": "build/angular,console/raven.min.js" + }, + "@build/angular,ember,require,vue/raven.js": { + "hashes": { + "sha256": "LXXqmFVMlL3k3TcnIMXX5ABz6w8QTZUyNPWuMh2lZwk=", + "sha512": "YsS+tn1P6lXtKlFRwsEimNFYzALhTEHwRC8gwQfUxJDfw26ecageuvEKCONvL8o4/a7dPHT+6LqSD2EqoQ/tgg==" + }, + "type": null, + "integrity": "sha256-LXXqmFVMlL3k3TcnIMXX5ABz6w8QTZUyNPWuMh2lZwk= sha512-YsS+tn1P6lXtKlFRwsEimNFYzALhTEHwRC8gwQfUxJDfw26ecageuvEKCONvL8o4/a7dPHT+6LqSD2EqoQ/tgg==", + "path": "build/angular,ember,require,vue/raven.js" + }, + "@build/angular,ember,require,vue/raven.min.js": { + "hashes": { + "sha256": "nBeF9gZDcnDs1cr1E8kSdLTV+n27xGIVP5QpqVmJcLY=", + "sha512": "M7LWjiIOl5fHpK38slW2xCmf5AGg0cmc36ehDmbqKCWwL156KndfVwFnaXhBgF6UtF2dWXrwPbcLrSASPXpW9Q==" + }, + "type": null, + "integrity": "sha256-nBeF9gZDcnDs1cr1E8kSdLTV+n27xGIVP5QpqVmJcLY= sha512-M7LWjiIOl5fHpK38slW2xCmf5AGg0cmc36ehDmbqKCWwL156KndfVwFnaXhBgF6UtF2dWXrwPbcLrSASPXpW9Q==", + "path": "build/angular,ember,require,vue/raven.min.js" + }, + "@build/angular,ember,require/raven.js": { + "hashes": { + "sha256": "0LyrDEhKhpMADeQfD/HuQUUE+wRX7KpMPG4910n8cgo=", + "sha512": "Z80DXRsPAThyPu1ndrVmyvSALHTqquF2GuP8ZWD/CDrakrgMsnhlLyBKKyYh5fpmFwTUxhKvCenn+VwomMcrIA==" + }, + "type": null, + "integrity": "sha256-0LyrDEhKhpMADeQfD/HuQUUE+wRX7KpMPG4910n8cgo= sha512-Z80DXRsPAThyPu1ndrVmyvSALHTqquF2GuP8ZWD/CDrakrgMsnhlLyBKKyYh5fpmFwTUxhKvCenn+VwomMcrIA==", + "path": "build/angular,ember,require/raven.js" + }, + "@build/angular,ember,require/raven.min.js": { + "hashes": { + "sha256": "vuGnjuLGtCm69Z3qW0noc2vG3/KbCdrXFq2X8rJQvlk=", + "sha512": "Q34EgGWb4a1QSgqeY9e09A4pCDu7K/j7A+sxplIKOgulSghtGRMR7zFyd/LY6Vt9QraCWWbvx/YOMfjx8KBZHA==" + }, + "type": null, + "integrity": "sha256-vuGnjuLGtCm69Z3qW0noc2vG3/KbCdrXFq2X8rJQvlk= sha512-Q34EgGWb4a1QSgqeY9e09A4pCDu7K/j7A+sxplIKOgulSghtGRMR7zFyd/LY6Vt9QraCWWbvx/YOMfjx8KBZHA==", + "path": "build/angular,ember,require/raven.min.js" + }, + "@build/angular,ember,vue/raven.js": { + "hashes": { + "sha256": "avJRryk7Qv4HzVkZdcS8q9Tn6stLVrJcZyDDmaDnU1E=", + "sha512": "Wa7o/K+vh2n53qigfOy7QwmpPoKG9VWkLuP60t5eLG5D0Uz94uzuokCjSj/SILf87yJG8Or7p9FGQEWMw2ji4w==" + }, + "type": null, + "integrity": "sha256-avJRryk7Qv4HzVkZdcS8q9Tn6stLVrJcZyDDmaDnU1E= sha512-Wa7o/K+vh2n53qigfOy7QwmpPoKG9VWkLuP60t5eLG5D0Uz94uzuokCjSj/SILf87yJG8Or7p9FGQEWMw2ji4w==", + "path": "build/angular,ember,vue/raven.js" + }, + "@build/angular,ember,vue/raven.min.js": { + "hashes": { + "sha256": "JsJA9j4tjkmBQwIgvQaIqflZ2lu3sRRWRn64vAS/mKI=", + "sha512": "zElo2CAiSh0JLiRNl+RP6x2HmTtit2792w+WLsXXxkLtQU972SxaSj5kBZM0thQqivJIwl0wcfnCCiS3xcst6A==" + }, + "type": null, + "integrity": "sha256-JsJA9j4tjkmBQwIgvQaIqflZ2lu3sRRWRn64vAS/mKI= sha512-zElo2CAiSh0JLiRNl+RP6x2HmTtit2792w+WLsXXxkLtQU972SxaSj5kBZM0thQqivJIwl0wcfnCCiS3xcst6A==", + "path": "build/angular,ember,vue/raven.min.js" + }, + "@build/angular,ember/raven.js": { + "hashes": { + "sha256": "ElkTI4wNM4hPHSbDomNTOoymnPjBjIbdMmrSzO/fuOI=", + "sha512": "FjiD249bStHbwX7TAJYvBA8CM9FSNgOLmvrvQYCvNXyXOJHrVOQwr1+UpVcwa1wLZFl3yMp2KfvQViH5GBgjyw==" + }, + "type": null, + "integrity": "sha256-ElkTI4wNM4hPHSbDomNTOoymnPjBjIbdMmrSzO/fuOI= sha512-FjiD249bStHbwX7TAJYvBA8CM9FSNgOLmvrvQYCvNXyXOJHrVOQwr1+UpVcwa1wLZFl3yMp2KfvQViH5GBgjyw==", + "path": "build/angular,ember/raven.js" + }, + "@build/angular,ember/raven.min.js": { + "hashes": { + "sha256": "QuhTRqqrIBDdbuf49rd0FOhU/BPQRYLGr6ZsrEgPLnE=", + "sha512": "yhQhARrda16FLogH64sY7Wi8i31D71fhV8bwZ6FhcAQlmm7M79oLAk4lKvXA6Fu1We0J8JkjAHJvmX01+mbNpQ==" + }, + "type": null, + "integrity": "sha256-QuhTRqqrIBDdbuf49rd0FOhU/BPQRYLGr6ZsrEgPLnE= sha512-yhQhARrda16FLogH64sY7Wi8i31D71fhV8bwZ6FhcAQlmm7M79oLAk4lKvXA6Fu1We0J8JkjAHJvmX01+mbNpQ==", + "path": "build/angular,ember/raven.min.js" + }, + "@build/angular,require,vue/raven.js": { + "hashes": { + "sha256": "q2KRzAuGXiRhnI1IN/72FTD/e/dOLYm+Y/ZNUswKSZs=", + "sha512": "QKgqnpH8fGIz7bHOsRL5T5LkqAQuAlPXRX+b/hN/sei1yMMlIhvwXJL/zkmNbEuEULQYoxsMXQ7U2zwKYMqiEQ==" + }, + "type": null, + "integrity": "sha256-q2KRzAuGXiRhnI1IN/72FTD/e/dOLYm+Y/ZNUswKSZs= sha512-QKgqnpH8fGIz7bHOsRL5T5LkqAQuAlPXRX+b/hN/sei1yMMlIhvwXJL/zkmNbEuEULQYoxsMXQ7U2zwKYMqiEQ==", + "path": "build/angular,require,vue/raven.js" + }, + "@build/angular,require,vue/raven.min.js": { + "hashes": { + "sha256": "SfOOdB+MrMAr9skR/SB5CSniOwbq5XXIBrek4xarNNg=", + "sha512": "GUxhQBXKqFiMhJ95h3uETNiUt9YhAKqpcWtif8EPeammc4h8d14/pucj9yFKjOyzTHkpqitN22yv0yeNJ1b/hA==" + }, + "type": null, + "integrity": "sha256-SfOOdB+MrMAr9skR/SB5CSniOwbq5XXIBrek4xarNNg= sha512-GUxhQBXKqFiMhJ95h3uETNiUt9YhAKqpcWtif8EPeammc4h8d14/pucj9yFKjOyzTHkpqitN22yv0yeNJ1b/hA==", + "path": "build/angular,require,vue/raven.min.js" + }, + "@build/angular,require/raven.js": { + "hashes": { + "sha256": "hztFCWwKxX/L3UGdksGM86L/HUIHMesFp5wPMLk28ac=", + "sha512": "TkUtk1isAOMMIK/XzKPrtN8TfSTyZVxMgpd2xqsCw0uc8MwKySSNwe97v3jAw0vC7I0C8ynCr5iVwU6Ay1I0ng==" + }, + "type": null, + "integrity": "sha256-hztFCWwKxX/L3UGdksGM86L/HUIHMesFp5wPMLk28ac= sha512-TkUtk1isAOMMIK/XzKPrtN8TfSTyZVxMgpd2xqsCw0uc8MwKySSNwe97v3jAw0vC7I0C8ynCr5iVwU6Ay1I0ng==", + "path": "build/angular,require/raven.js" + }, + "@build/angular,require/raven.min.js": { + "hashes": { + "sha256": "/I0QqFKZiK1bBcZpeo/Q+BT6p26mxOEfEpHLEz0tBPA=", + "sha512": "t4LHklsYwHOK3DZtieJBOLxzUbtPBeRyBFA79djGG+mH/FInHj4fR+naFQKIrvzfnDyLZaPpJpMTULsL94r7sA==" + }, + "type": null, + "integrity": "sha256-/I0QqFKZiK1bBcZpeo/Q+BT6p26mxOEfEpHLEz0tBPA= sha512-t4LHklsYwHOK3DZtieJBOLxzUbtPBeRyBFA79djGG+mH/FInHj4fR+naFQKIrvzfnDyLZaPpJpMTULsL94r7sA==", + "path": "build/angular,require/raven.min.js" + }, + "@build/angular,vue/raven.js": { + "hashes": { + "sha256": "yKMTDmNF0jr8eds1PaYy/0CLCEAIckL0XxpnhXVRcsE=", + "sha512": "R4jQvfinNyRR/ZNI6mGA19GxUah3N9hP2c5w1PGKNR8Qj8iamPhl4mOychLrLsOUmz4VLp+Zg1u/KcbHZV+B/g==" + }, + "type": null, + "integrity": "sha256-yKMTDmNF0jr8eds1PaYy/0CLCEAIckL0XxpnhXVRcsE= sha512-R4jQvfinNyRR/ZNI6mGA19GxUah3N9hP2c5w1PGKNR8Qj8iamPhl4mOychLrLsOUmz4VLp+Zg1u/KcbHZV+B/g==", + "path": "build/angular,vue/raven.js" + }, + "@build/angular,vue/raven.min.js": { + "hashes": { + "sha256": "J6cThlCfrZ/WieIA3/3YqRylNWxVEyxrJshFW8uOzPE=", + "sha512": "u7raC++omUyORq2vYWrGQdyazGfvbSdNp/pfpj5GFQPcW5EWdmUrs8zwgklUWMVchlGWMsncsu3sZEk93mkeKA==" + }, + "type": null, + "integrity": "sha256-J6cThlCfrZ/WieIA3/3YqRylNWxVEyxrJshFW8uOzPE= sha512-u7raC++omUyORq2vYWrGQdyazGfvbSdNp/pfpj5GFQPcW5EWdmUrs8zwgklUWMVchlGWMsncsu3sZEk93mkeKA==", + "path": "build/angular,vue/raven.min.js" + }, + "@build/angular/raven.js": { + "hashes": { + "sha256": "ZXDCxmG17rA+Jum9tcBb9zaniET/nL70C5ObEZnI7rE=", + "sha512": "XCwFoBHFwhXApzwZLaLEioAaoQzC3QXhENtVIBFEjHCP8MLUW7Cnu4HlTwRy3kKRGXgasI4gWAFSRs4oMygl9Q==" + }, + "type": null, + "integrity": "sha256-ZXDCxmG17rA+Jum9tcBb9zaniET/nL70C5ObEZnI7rE= sha512-XCwFoBHFwhXApzwZLaLEioAaoQzC3QXhENtVIBFEjHCP8MLUW7Cnu4HlTwRy3kKRGXgasI4gWAFSRs4oMygl9Q==", + "path": "build/angular/raven.js" + }, + "@build/angular/raven.min.js": { + "hashes": { + "sha256": "HVuHzZg6iYY9iAJC0YbYVtEXSl2hQJ25wK2hen+96TQ=", + "sha512": "KNPKkJq4adomgYHM5mw1n5ukNmeiBckg7n6HKG0ZinkBif7yN7icTV6vNjKmE51IRFiYp0yilG8TZhyA235N2A==" + }, + "type": null, + "integrity": "sha256-HVuHzZg6iYY9iAJC0YbYVtEXSl2hQJ25wK2hen+96TQ= sha512-KNPKkJq4adomgYHM5mw1n5ukNmeiBckg7n6HKG0ZinkBif7yN7icTV6vNjKmE51IRFiYp0yilG8TZhyA235N2A==", + "path": "build/angular/raven.min.js" + }, + "@build/console,ember,require,vue/raven.js": { + "hashes": { + "sha256": "htWMEYzmNWkOCCx9PKWLF/DB2VTmhUz2suhTxKxmHII=", + "sha512": "e6ZprAuwrxfacTnRN07TeMzT0K8QC+O7cIVYSyxR6M5GmCLOek3qmmrKpVkANc3QgZ+aCwYLGvuRqFs1SkK92w==" + }, + "type": null, + "integrity": "sha256-htWMEYzmNWkOCCx9PKWLF/DB2VTmhUz2suhTxKxmHII= sha512-e6ZprAuwrxfacTnRN07TeMzT0K8QC+O7cIVYSyxR6M5GmCLOek3qmmrKpVkANc3QgZ+aCwYLGvuRqFs1SkK92w==", + "path": "build/console,ember,require,vue/raven.js" + }, + "@build/console,ember,require,vue/raven.min.js": { + "hashes": { + "sha256": "i35Atja9w+XnwGgLP6JDaQMDe4SHGnbJZGtpQwPOr9Y=", + "sha512": "+FSCFF7bp4z+HymIXus2ry/xDvpSQxo+wW49417tWukBVsoTvcYEUA+iWOnwEC7y/peUoKDk8Ds5fOWAY2tEtw==" + }, + "type": null, + "integrity": "sha256-i35Atja9w+XnwGgLP6JDaQMDe4SHGnbJZGtpQwPOr9Y= sha512-+FSCFF7bp4z+HymIXus2ry/xDvpSQxo+wW49417tWukBVsoTvcYEUA+iWOnwEC7y/peUoKDk8Ds5fOWAY2tEtw==", + "path": "build/console,ember,require,vue/raven.min.js" + }, + "@build/console,ember,require/raven.js": { + "hashes": { + "sha256": "3DmCXpGB/UwdrI2Oxw5cUugfAYkUaKTBt2yyy+0s5qY=", + "sha512": "nuV3YDBXlFOoaBLQI9WJTcPLzrJDbibLueqI0op5nxRjjBnVeHmpvUM9DRFwXcrWPdBeQ2BEGYkZDbI0F2lsfg==" + }, + "type": null, + "integrity": "sha256-3DmCXpGB/UwdrI2Oxw5cUugfAYkUaKTBt2yyy+0s5qY= sha512-nuV3YDBXlFOoaBLQI9WJTcPLzrJDbibLueqI0op5nxRjjBnVeHmpvUM9DRFwXcrWPdBeQ2BEGYkZDbI0F2lsfg==", + "path": "build/console,ember,require/raven.js" + }, + "@build/console,ember,require/raven.min.js": { + "hashes": { + "sha256": "kRGT4RiKNA3WlattCFM4WE5XBERgNpwIK8DKiFwawOw=", + "sha512": "dSG/DkN54EcR5f+1ASoyEfZongx6QQRQpVRJ2d48cfVBFgzb6PlejKub6DzimdQTqW6frjsuWY9Dmk85s2VsMA==" + }, + "type": null, + "integrity": "sha256-kRGT4RiKNA3WlattCFM4WE5XBERgNpwIK8DKiFwawOw= sha512-dSG/DkN54EcR5f+1ASoyEfZongx6QQRQpVRJ2d48cfVBFgzb6PlejKub6DzimdQTqW6frjsuWY9Dmk85s2VsMA==", + "path": "build/console,ember,require/raven.min.js" + }, + "@build/console,ember,vue/raven.js": { + "hashes": { + "sha256": "oCQz5nB3/LtgfYmtxvoo5r6ZjqJAwpF1dVof96PIc6A=", + "sha512": "0BGBZmYL+p+v9mRl6DqxeY1ZnFRrWWI4XA7UAI3+9JH0/HxU08y6++A0mzK+h69SYUMwCdSOO7XL0xI7lC+Bow==" + }, + "type": null, + "integrity": "sha256-oCQz5nB3/LtgfYmtxvoo5r6ZjqJAwpF1dVof96PIc6A= sha512-0BGBZmYL+p+v9mRl6DqxeY1ZnFRrWWI4XA7UAI3+9JH0/HxU08y6++A0mzK+h69SYUMwCdSOO7XL0xI7lC+Bow==", + "path": "build/console,ember,vue/raven.js" + }, + "@build/console,ember,vue/raven.min.js": { + "hashes": { + "sha256": "vBhkV9E8Oj3+9LSttF7Qtmd1vv+n1FnRxIWwWFkg/tg=", + "sha512": "1Yfysgx32ebt6Ho4YYQbTGCg65TzadO72/ZltMSSbFbnEyG2AsR3AlAM7gXC+GzyyBvdvH3Xfstptu8D8C3cvw==" + }, + "type": null, + "integrity": "sha256-vBhkV9E8Oj3+9LSttF7Qtmd1vv+n1FnRxIWwWFkg/tg= sha512-1Yfysgx32ebt6Ho4YYQbTGCg65TzadO72/ZltMSSbFbnEyG2AsR3AlAM7gXC+GzyyBvdvH3Xfstptu8D8C3cvw==", + "path": "build/console,ember,vue/raven.min.js" + }, + "@build/console,ember/raven.js": { + "hashes": { + "sha256": "pub2wQfPANBhTVDi9NDX98HrPNckS4MZ5SGB+8+Iq4o=", + "sha512": "goLkZ6LZ1qfAiMJpc2ZLHGigVxUMj6QI8QXyZaLXJ2sMuIZipmhqtKZOTP4rcCMfxl+uTtht6eksdUzEaNQlCg==" + }, + "type": null, + "integrity": "sha256-pub2wQfPANBhTVDi9NDX98HrPNckS4MZ5SGB+8+Iq4o= sha512-goLkZ6LZ1qfAiMJpc2ZLHGigVxUMj6QI8QXyZaLXJ2sMuIZipmhqtKZOTP4rcCMfxl+uTtht6eksdUzEaNQlCg==", + "path": "build/console,ember/raven.js" + }, + "@build/console,ember/raven.min.js": { + "hashes": { + "sha256": "82ekjBG7bcmXSYtJQSnjt3J8zHoMnFC1jCWNXtCBwYs=", + "sha512": "eo7MZX55xlCmNfVW2V5CxwXmgxb5+cVOnC08zFrviIkaA9skNbFPLqQ6/U4Dt9e9vD7g3+ZEfN38F3jWb5uJqA==" + }, + "type": null, + "integrity": "sha256-82ekjBG7bcmXSYtJQSnjt3J8zHoMnFC1jCWNXtCBwYs= sha512-eo7MZX55xlCmNfVW2V5CxwXmgxb5+cVOnC08zFrviIkaA9skNbFPLqQ6/U4Dt9e9vD7g3+ZEfN38F3jWb5uJqA==", + "path": "build/console,ember/raven.min.js" + }, + "@build/console,require,vue/raven.js": { + "hashes": { + "sha256": "+rD56nT7abWq/yHQYhmmff8/Icobkq6R3vNa2494HXI=", + "sha512": "sp7FdooNzYQzwIJUZVQXFNvG8U63p6MzSFy0mgR5DcmqOY7XZS0F3Bq2iuMI5sxR9k/xCTKcBCEonD8Y2vxJCQ==" + }, + "type": null, + "integrity": "sha256-+rD56nT7abWq/yHQYhmmff8/Icobkq6R3vNa2494HXI= sha512-sp7FdooNzYQzwIJUZVQXFNvG8U63p6MzSFy0mgR5DcmqOY7XZS0F3Bq2iuMI5sxR9k/xCTKcBCEonD8Y2vxJCQ==", + "path": "build/console,require,vue/raven.js" + }, + "@build/console,require,vue/raven.min.js": { + "hashes": { + "sha256": "Z8SBVx0isuvOZse6/hkKHJjna7osRb6MCn9d9v4EIAg=", + "sha512": "wLoT0PS9Vxlb9pmPgrnZvWHp+4fGrzGE8vaCU4/6LbmnVowsr0I4sAycOl3ey46nI2unb4ugAK9izGA5CQkasA==" + }, + "type": null, + "integrity": "sha256-Z8SBVx0isuvOZse6/hkKHJjna7osRb6MCn9d9v4EIAg= sha512-wLoT0PS9Vxlb9pmPgrnZvWHp+4fGrzGE8vaCU4/6LbmnVowsr0I4sAycOl3ey46nI2unb4ugAK9izGA5CQkasA==", + "path": "build/console,require,vue/raven.min.js" + }, + "@build/console,require/raven.js": { + "hashes": { + "sha256": "EVYiBLK8o4BID++ay0yRYe4YO0aTDmLeBtIMH3yHfIA=", + "sha512": "R2e1h2X3hi9Q13R+qbXzJIt3qd4NBXRg8ZpFNKaNtCbTo7xuXmNnsyKoh8YW/5FORDEkHSs8IB6W7emW+BS84A==" + }, + "type": null, + "integrity": "sha256-EVYiBLK8o4BID++ay0yRYe4YO0aTDmLeBtIMH3yHfIA= sha512-R2e1h2X3hi9Q13R+qbXzJIt3qd4NBXRg8ZpFNKaNtCbTo7xuXmNnsyKoh8YW/5FORDEkHSs8IB6W7emW+BS84A==", + "path": "build/console,require/raven.js" + }, + "@build/console,require/raven.min.js": { + "hashes": { + "sha256": "Pj7qMciUtv6fCc6WOZ9GrJfC2ETRb+Xox1CAK3qc/SY=", + "sha512": "9KSTuavDIRmIuhK9flw+v0pgR6dRZYDe/AaDMNJS6GxhaEyFwvgTG6h8wOIJZbcpyipIsoElUEPb/U7InZ+w4Q==" + }, + "type": null, + "integrity": "sha256-Pj7qMciUtv6fCc6WOZ9GrJfC2ETRb+Xox1CAK3qc/SY= sha512-9KSTuavDIRmIuhK9flw+v0pgR6dRZYDe/AaDMNJS6GxhaEyFwvgTG6h8wOIJZbcpyipIsoElUEPb/U7InZ+w4Q==", + "path": "build/console,require/raven.min.js" + }, + "@build/console,vue/raven.js": { + "hashes": { + "sha256": "XC37O66kckrcVbje3FzyCpAYE0Jb26fPrmKKiYqR7PY=", + "sha512": "z72zkXwehSzuMrcBbiYvScPEspTVHMBU7rDrO6kjQZW0+ccfXbk6Ky4DLK0UXoT91lmI3eIHwLHmVtL+vxz2EA==" + }, + "type": null, + "integrity": "sha256-XC37O66kckrcVbje3FzyCpAYE0Jb26fPrmKKiYqR7PY= sha512-z72zkXwehSzuMrcBbiYvScPEspTVHMBU7rDrO6kjQZW0+ccfXbk6Ky4DLK0UXoT91lmI3eIHwLHmVtL+vxz2EA==", + "path": "build/console,vue/raven.js" + }, + "@build/console,vue/raven.min.js": { + "hashes": { + "sha256": "OdNsbw2BkyMRsKevEVgccb4CBkzXVKbNi3C4ECbch90=", + "sha512": "OZi68gBxelMZg29G94v5G4NUUkbfQxg1FjvjWy+ELED24h6aYPNZv1mzaGRMtKQVpTKKwWrW9e4RqfbWD4MObQ==" + }, + "type": null, + "integrity": "sha256-OdNsbw2BkyMRsKevEVgccb4CBkzXVKbNi3C4ECbch90= sha512-OZi68gBxelMZg29G94v5G4NUUkbfQxg1FjvjWy+ELED24h6aYPNZv1mzaGRMtKQVpTKKwWrW9e4RqfbWD4MObQ==", + "path": "build/console,vue/raven.min.js" + }, + "@build/console/raven.js": { + "hashes": { + "sha256": "PGn0gJLuRSldTLg/PGlRgCwGiIcuxO89l2ccvUKthgE=", + "sha512": "+ATnInDlqKotomoxk3VIPxpdwLsO1PDzw2lTPFRx0Mloyy4hskM4uItZTgiuJ2ZFPrR6/U2oWO1nqlTmNlAbig==" + }, + "type": null, + "integrity": "sha256-PGn0gJLuRSldTLg/PGlRgCwGiIcuxO89l2ccvUKthgE= sha512-+ATnInDlqKotomoxk3VIPxpdwLsO1PDzw2lTPFRx0Mloyy4hskM4uItZTgiuJ2ZFPrR6/U2oWO1nqlTmNlAbig==", + "path": "build/console/raven.js" + }, + "@build/console/raven.min.js": { + "hashes": { + "sha256": "24+TwDEDOKAgILWD4JAiDpsOiYarHAMSYeV6ZW+4uy8=", + "sha512": "JZMAtnFH43WH3hA8CuxxLCGQPEB3VEJREkbLZVbQEuDTm7meREGR0PmxNg3tLnmnQtJiLUltGVIXF3DdUUfpGQ==" + }, + "type": null, + "integrity": "sha256-24+TwDEDOKAgILWD4JAiDpsOiYarHAMSYeV6ZW+4uy8= sha512-JZMAtnFH43WH3hA8CuxxLCGQPEB3VEJREkbLZVbQEuDTm7meREGR0PmxNg3tLnmnQtJiLUltGVIXF3DdUUfpGQ==", + "path": "build/console/raven.min.js" + }, + "@build/ember,require,vue/raven.js": { + "hashes": { + "sha256": "lA4x+yItN9JekeH+IzitkcNq1pAPE6x5zhn6vwJTxnA=", + "sha512": "BPUjeN864Y3yRzrEq5rvzNjyskoO0g9S2PIFkLlcj/POKwLvswimhkHvXW+aMHrenWIMJ6Elm7fR+UlDgUJzhg==" + }, + "type": null, + "integrity": "sha256-lA4x+yItN9JekeH+IzitkcNq1pAPE6x5zhn6vwJTxnA= sha512-BPUjeN864Y3yRzrEq5rvzNjyskoO0g9S2PIFkLlcj/POKwLvswimhkHvXW+aMHrenWIMJ6Elm7fR+UlDgUJzhg==", + "path": "build/ember,require,vue/raven.js" + }, + "@build/ember,require,vue/raven.min.js": { + "hashes": { + "sha256": "XZIY1hbqd+JrmBRLS9nXZEsS+8UeHIPc1Q5E3+2uvds=", + "sha512": "w9N/je4CuLcn6EWnbcPvSFRSsUwkOqpFQpPM8TJbr8PHLFzklwQtDxWdWbzO0/1bcRZ1su3m93WMqFHAHAc6DQ==" + }, + "type": null, + "integrity": "sha256-XZIY1hbqd+JrmBRLS9nXZEsS+8UeHIPc1Q5E3+2uvds= sha512-w9N/je4CuLcn6EWnbcPvSFRSsUwkOqpFQpPM8TJbr8PHLFzklwQtDxWdWbzO0/1bcRZ1su3m93WMqFHAHAc6DQ==", + "path": "build/ember,require,vue/raven.min.js" + }, + "@build/ember,require/raven.js": { + "hashes": { + "sha256": "KHb7cV9HBvz93ju5TwVizeE5jSIZTUVq7ogmR4dgzqg=", + "sha512": "6RQNAfImqawCS/VixPVLUiTmApxobtM648JO/TZF36Kh6DowLKiFlC4gBJIgy39KpFTOfIz+BzZEut6AckY+rw==" + }, + "type": null, + "integrity": "sha256-KHb7cV9HBvz93ju5TwVizeE5jSIZTUVq7ogmR4dgzqg= sha512-6RQNAfImqawCS/VixPVLUiTmApxobtM648JO/TZF36Kh6DowLKiFlC4gBJIgy39KpFTOfIz+BzZEut6AckY+rw==", + "path": "build/ember,require/raven.js" + }, + "@build/ember,require/raven.min.js": { + "hashes": { + "sha256": "sakZlnL1lPP6bJN141gNnq7b65/LeUttPzVWXFBowWA=", + "sha512": "a0ByEbqmPf5o32MBgichuN7lZST9Fiuy5UqEdvGPIrOIJt7xzqWK/elYkOqkaiqvA7XYehxhhacdHy6QAL1Cgg==" + }, + "type": null, + "integrity": "sha256-sakZlnL1lPP6bJN141gNnq7b65/LeUttPzVWXFBowWA= sha512-a0ByEbqmPf5o32MBgichuN7lZST9Fiuy5UqEdvGPIrOIJt7xzqWK/elYkOqkaiqvA7XYehxhhacdHy6QAL1Cgg==", + "path": "build/ember,require/raven.min.js" + }, + "@build/ember,vue/raven.js": { + "hashes": { + "sha256": "KIDa9EJwqe0SL/2OLTQAIwoNTMMtc+ImaLDphDc4E3E=", + "sha512": "g3TDIJ8BPfHoxkwRw891VPOZG+Wukvr/O9ritLGtNTJe17pjpfSdyTxA1mV9sTg9YxEvg1r+//Mt7KYJVb/tyQ==" + }, + "type": null, + "integrity": "sha256-KIDa9EJwqe0SL/2OLTQAIwoNTMMtc+ImaLDphDc4E3E= sha512-g3TDIJ8BPfHoxkwRw891VPOZG+Wukvr/O9ritLGtNTJe17pjpfSdyTxA1mV9sTg9YxEvg1r+//Mt7KYJVb/tyQ==", + "path": "build/ember,vue/raven.js" + }, + "@build/ember,vue/raven.min.js": { + "hashes": { + "sha256": "JLRw+rcdcpnb56KkJPHD1GbER3Bu2QCdbZZ8H0ZsabI=", + "sha512": "l+m2cLL/AeRBK7u2GhU4KGybwIyZctPOK9M4lhrEVYvVael+nsCSaWzA2qmU1ZLmGw3Kzf6poHJLtPpJA+eH3w==" + }, + "type": null, + "integrity": "sha256-JLRw+rcdcpnb56KkJPHD1GbER3Bu2QCdbZZ8H0ZsabI= sha512-l+m2cLL/AeRBK7u2GhU4KGybwIyZctPOK9M4lhrEVYvVael+nsCSaWzA2qmU1ZLmGw3Kzf6poHJLtPpJA+eH3w==", + "path": "build/ember,vue/raven.min.js" + }, + "@build/ember/raven.js": { + "hashes": { + "sha256": "0XQa7upJA+oVRz2TV70tdreCIF7nwJHlTQU6veWJAM0=", + "sha512": "QQFGnMe1+O6h9bgxkit2b7akr4gfVtvRrFpdURRH9UI1Jg/p+5RnIFMRJH2152BlvVwEDqGUWw/krRC9a6SLIw==" + }, + "type": null, + "integrity": "sha256-0XQa7upJA+oVRz2TV70tdreCIF7nwJHlTQU6veWJAM0= sha512-QQFGnMe1+O6h9bgxkit2b7akr4gfVtvRrFpdURRH9UI1Jg/p+5RnIFMRJH2152BlvVwEDqGUWw/krRC9a6SLIw==", + "path": "build/ember/raven.js" + }, + "@build/ember/raven.min.js": { + "hashes": { + "sha256": "ka4rWCcJtVmcSBvsoN0IBt1Vbv0HAQ3ASZoi1PDizew=", + "sha512": "YG9x1nviYBjQREsfBZy+TEqvBVWnMdnkl0TsNs87nVUXyl80iz2lb6Q+fnhHf0GtHv++FVnDm/iXuskkCZZPQw==" + }, + "type": null, + "integrity": "sha256-ka4rWCcJtVmcSBvsoN0IBt1Vbv0HAQ3ASZoi1PDizew= sha512-YG9x1nviYBjQREsfBZy+TEqvBVWnMdnkl0TsNs87nVUXyl80iz2lb6Q+fnhHf0GtHv++FVnDm/iXuskkCZZPQw==", + "path": "build/ember/raven.min.js" + }, + "@build/raven.js": { + "hashes": { + "sha256": "blC5tb4zks+av3ttSL9UorzDnJcldKYA+7CLAlvnDJE=", + "sha512": "J0ySQly0HhVoGFK6ndrOkreMV9k1KgXLpQxo6HcuiTTrM+NS5MA+pquLKxxet/oWuGwqx4bzp9JvCoEv4tuamQ==" + }, + "type": null, + "integrity": "sha256-blC5tb4zks+av3ttSL9UorzDnJcldKYA+7CLAlvnDJE= sha512-J0ySQly0HhVoGFK6ndrOkreMV9k1KgXLpQxo6HcuiTTrM+NS5MA+pquLKxxet/oWuGwqx4bzp9JvCoEv4tuamQ==", + "path": "build/raven.js" + }, + "@build/raven.min.js": { + "hashes": { + "sha256": "KXpfHsDysbH3ETwiZzn0DnDOqzSehgGxoZkp3IbBxng=", + "sha512": "9i35ax6PH1GqqUprURQujIfnD27ORix9AxaS6fJH7QDD1YW6KOOM0tERSzfzk2CBq4jlJVTMSKGMo2uHa6LgUg==" + }, + "type": null, + "integrity": "sha256-KXpfHsDysbH3ETwiZzn0DnDOqzSehgGxoZkp3IbBxng= sha512-9i35ax6PH1GqqUprURQujIfnD27ORix9AxaS6fJH7QDD1YW6KOOM0tERSzfzk2CBq4jlJVTMSKGMo2uHa6LgUg==", + "path": "build/raven.min.js" + }, + "@build/require,vue/raven.js": { + "hashes": { + "sha256": "LxN1I29QtdWOs6OOWSGOkJNC5QEFvtfiiV81fa5Oc5E=", + "sha512": "0tsS6741Nr9O4MkYcN2Rea7HUGzlbtmCXgQnpkJJziMbUnY+t0P7LK8y2BOv9zRgOgDhXdAZ5rtyh4KjXfEG+A==" + }, + "type": null, + "integrity": "sha256-LxN1I29QtdWOs6OOWSGOkJNC5QEFvtfiiV81fa5Oc5E= sha512-0tsS6741Nr9O4MkYcN2Rea7HUGzlbtmCXgQnpkJJziMbUnY+t0P7LK8y2BOv9zRgOgDhXdAZ5rtyh4KjXfEG+A==", + "path": "build/require,vue/raven.js" + }, + "@build/require,vue/raven.min.js": { + "hashes": { + "sha256": "tgfp20NxITRNw5kz1EMtmeEY90GQaYgt6co5QVNhbrE=", + "sha512": "qQ5QZgbU3bT9e1T6dbLEGi1lUDr+yze79jhEULJdHeHHqiOg9/Ncm5ZZh3dsw8S64LRmseO9AfKUxLOJqFJt7Q==" + }, + "type": null, + "integrity": "sha256-tgfp20NxITRNw5kz1EMtmeEY90GQaYgt6co5QVNhbrE= sha512-qQ5QZgbU3bT9e1T6dbLEGi1lUDr+yze79jhEULJdHeHHqiOg9/Ncm5ZZh3dsw8S64LRmseO9AfKUxLOJqFJt7Q==", + "path": "build/require,vue/raven.min.js" + }, + "@build/require/raven.js": { + "hashes": { + "sha256": "SH7HvktOmQvF+KP3MEo7BKZRh4T4T6rIq7TLfpcdNsQ=", + "sha512": "S45rlZ3BnVf3dzp8sqlhlH9hyjMQ8tgmWqwUBtJYoSx3Mke1EUcq4iZtaUDqtA6Eml4Ivse6XEIOTvrl0Lw9GA==" + }, + "type": null, + "integrity": "sha256-SH7HvktOmQvF+KP3MEo7BKZRh4T4T6rIq7TLfpcdNsQ= sha512-S45rlZ3BnVf3dzp8sqlhlH9hyjMQ8tgmWqwUBtJYoSx3Mke1EUcq4iZtaUDqtA6Eml4Ivse6XEIOTvrl0Lw9GA==", + "path": "build/require/raven.js" + }, + "@build/require/raven.min.js": { + "hashes": { + "sha256": "Uytmj6gZkIM6jXfxKG1QlN/2spl92I/fqVSUoaO+7lo=", + "sha512": "DjqGArUjhtn8d6DiGXljGxri2kCwxEeYPNczFxWe1D+HEML+vQVbQOLC3cBlsbrMNdPtMDSZSuTp6FRc/yhTgw==" + }, + "type": null, + "integrity": "sha256-Uytmj6gZkIM6jXfxKG1QlN/2spl92I/fqVSUoaO+7lo= sha512-DjqGArUjhtn8d6DiGXljGxri2kCwxEeYPNczFxWe1D+HEML+vQVbQOLC3cBlsbrMNdPtMDSZSuTp6FRc/yhTgw==", + "path": "build/require/raven.min.js" + }, + "@build/vue/raven.js": { + "hashes": { + "sha256": "u/Zn8tF3GVn+0wKNCH0Ipgw/wJgaoP2PyOnu488XzyE=", + "sha512": "lAJMB6O0MlnX0Ab8vhQwhVlv9yL8d9EgqcXQXnhIUxwAdOWhs6CeFGbPdW/jbKb5DlUKawDnAvROkpETCfAr7A==" + }, + "type": null, + "integrity": "sha256-u/Zn8tF3GVn+0wKNCH0Ipgw/wJgaoP2PyOnu488XzyE= sha512-lAJMB6O0MlnX0Ab8vhQwhVlv9yL8d9EgqcXQXnhIUxwAdOWhs6CeFGbPdW/jbKb5DlUKawDnAvROkpETCfAr7A==", + "path": "build/vue/raven.js" + }, + "@build/vue/raven.min.js": { + "hashes": { + "sha256": "Y44ImyroeKJohpcHod0YTeawJW3uKDJ+yF/SjXN52/o=", + "sha512": "/dMg5CygY75LEYhvucZDq3K/P1OSbFtHsY1NDSDe4Qs6MReUaUh0kn3LDXVWWYjf470dJ2NrMh5ft+J2wzomDQ==" + }, + "type": null, + "integrity": "sha256-Y44ImyroeKJohpcHod0YTeawJW3uKDJ+yF/SjXN52/o= sha512-/dMg5CygY75LEYhvucZDq3K/P1OSbFtHsY1NDSDe4Qs6MReUaUh0kn3LDXVWWYjf470dJ2NrMh5ft+J2wzomDQ==", + "path": "build/vue/raven.min.js" } } \ No newline at end of file diff --git a/dist/vue/raven.js b/dist/vue/raven.js index 46e6d2bb6e72..7d07ef9e04b2 100644 --- a/dist/vue/raven.js +++ b/dist/vue/raven.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.22.2 (1b6187b) | github.com/getsentry/raven-js */ +/*! Raven.js 3.24.2 (540f32b) | github.com/getsentry/raven-js */ /* * Includes TraceKit @@ -10,3170 +10,3945 @@ * */ -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : - typeof define === 'function' && define.amd ? define(factory) : - (global.Raven = factory()); -}(this, (function () { 'use strict'; - -var commonjsGlobal = typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; - - - - - -function createCommonjsModule(fn, module) { - return module = { exports: {} }, fn(module, module.exports), module.exports; -} +(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.Raven = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o' : 'anonymous component') + + (vm._isVue && vm.$options.__file ? ' at ' + vm.$options.__file : '') + ); } -var _sPO = Object.setPrototypeOf || function _sPO(o, p) { - o.__proto__ = p; - return o; -}; - -var _construct = typeof Reflect === "object" && Reflect.construct || function _construct(Parent, args, Class) { - var Constructor, - a = [null]; - a.push.apply(a, args); - Constructor = Parent.bind.apply(Parent, a); - return _sPO(new Constructor(), Class.prototype); -}; - -var _window$3 = typeof window !== 'undefined' ? window : typeof commonjsGlobal !== 'undefined' ? commonjsGlobal : typeof self !== 'undefined' ? self : {}; - -function isObject$1(what) { - return _typeof(what) === 'object' && what !== null; -} // Yanked from https://git.io/vS8DV re-used under CC0 -// with some tiny modifications - +function vuePlugin(Raven, Vue) { + Vue = Vue || window.Vue; -function isError$1(value) { - switch ({}.toString.call(value)) { - case '[object Error]': - return true; + // quit if Vue isn't on the page + if (!Vue || !Vue.config) return; - case '[object Exception]': - return true; + var _oldOnError = Vue.config.errorHandler; + Vue.config.errorHandler = function VueErrorHandler(error, vm, info) { + var metaData = {}; - case '[object DOMException]': - return true; + // vm and lifecycleHook are not always available + if (Object.prototype.toString.call(vm) === '[object Object]') { + metaData.componentName = formatComponentName(vm); + metaData.propsData = vm.$options.propsData; + } - default: - return value instanceof Error; - } -} + if (typeof info !== 'undefined') { + metaData.lifecycleHook = info; + } -function isErrorEvent$1(value) { - return supportsErrorEvent() && {}.toString.call(value) === '[object ErrorEvent]'; -} + Raven.captureException(error, { + extra: metaData + }); -function isUndefined$1(what) { - return what === void 0; + if (typeof _oldOnError === 'function') { + _oldOnError.call(this, error, vm, info); + } + }; } -function isFunction$1(what) { - return typeof what === 'function'; -} +module.exports = vuePlugin; -function isPlainObject(what) { - return Object.prototype.toString.call(what) === '[object Object]'; +_dereq_(5).addPlugin(module.exports); +},{"5":5}],2:[function(_dereq_,module,exports){ +function RavenConfigError(message) { + this.name = 'RavenConfigError'; + this.message = message; } +RavenConfigError.prototype = new Error(); +RavenConfigError.prototype.constructor = RavenConfigError; -function isString$1(what) { - return Object.prototype.toString.call(what) === '[object String]'; -} +module.exports = RavenConfigError; -function isArray$1(what) { - return Object.prototype.toString.call(what) === '[object Array]'; -} +},{}],3:[function(_dereq_,module,exports){ +var utils = _dereq_(6); -function isEmptyObject$1(what) { - if (!isPlainObject(what)) return false; +var wrapMethod = function(console, level, callback) { + var originalConsoleLevel = console[level]; + var originalConsole = console; - for (var _ in what) { - if (what.hasOwnProperty(_)) { - return false; - } + if (!(level in console)) { + return; } - return true; -} + var sentryLevel = level === 'warn' ? 'warning' : level; -function supportsErrorEvent() { - try { - new ErrorEvent(''); // eslint-disable-line no-new + console[level] = function() { + var args = [].slice.call(arguments); - return true; - } catch (e) { - return false; - } -} + var msg = utils.safeJoin(args, ' '); + var data = {level: sentryLevel, logger: 'console', extra: {arguments: args}}; -function supportsFetch$1() { - if (!('fetch' in _window$3)) return false; + if (level === 'assert') { + if (args[0] === false) { + // Default browsers message + msg = + 'Assertion failed: ' + (utils.safeJoin(args.slice(1), ' ') || 'console.assert'); + data.extra.arguments = args.slice(1); + callback && callback(msg, data); + } + } else { + callback && callback(msg, data); + } - try { - new Headers(); // eslint-disable-line no-new + // this fails for some browsers. :( + if (originalConsoleLevel) { + // IE9 doesn't allow calling apply on console functions directly + // See: https://stackoverflow.com/questions/5472938/does-ie9-support-console-log-and-is-it-a-real-function#answer-5473193 + Function.prototype.apply.call(originalConsoleLevel, originalConsole, args); + } + }; +}; - new Request(''); // eslint-disable-line no-new +module.exports = { + wrapMethod: wrapMethod +}; - new Response(); // eslint-disable-line no-new +},{"6":6}],4:[function(_dereq_,module,exports){ +(function (global){ +/*global XDomainRequest:false */ - return true; - } catch (e) { - return false; - } -} +var TraceKit = _dereq_(7); +var stringify = _dereq_(8); +var md5 = _dereq_(9); +var RavenConfigError = _dereq_(2); -function wrappedCallback(callback) { - function dataCallback(data, original) { - var normalizedData = callback(data) || data; +var utils = _dereq_(6); +var isError = utils.isError; +var isObject = utils.isObject; +var isPlainObject = utils.isPlainObject; +var isErrorEvent = utils.isErrorEvent; +var isUndefined = utils.isUndefined; +var isFunction = utils.isFunction; +var isString = utils.isString; +var isArray = utils.isArray; +var isEmptyObject = utils.isEmptyObject; +var each = utils.each; +var objectMerge = utils.objectMerge; +var truncate = utils.truncate; +var objectFrozen = utils.objectFrozen; +var hasKey = utils.hasKey; +var joinRegExp = utils.joinRegExp; +var urlencode = utils.urlencode; +var uuid4 = utils.uuid4; +var htmlTreeAsString = utils.htmlTreeAsString; +var isSameException = utils.isSameException; +var isSameStacktrace = utils.isSameStacktrace; +var parseUrl = utils.parseUrl; +var fill = utils.fill; +var supportsFetch = utils.supportsFetch; +var supportsReferrerPolicy = utils.supportsReferrerPolicy; +var serializeKeysForMessage = utils.serializeKeysForMessage; +var serializeException = utils.serializeException; +var sanitize = utils.sanitize; - if (original) { - return original(normalizedData) || normalizedData; - } +var wrapConsoleMethod = _dereq_(3).wrapMethod; - return normalizedData; - } +var dsnKeys = 'source protocol user pass host port path'.split(' '), + dsnPattern = /^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/; - return dataCallback; +function now() { + return +new Date(); } -function each$1(obj, callback) { - var i, j; - - if (isUndefined$1(obj.length)) { - for (i in obj) { - if (hasKey$1(obj, i)) { - callback.call(null, i, obj[i]); - } - } - } else { - j = obj.length; +// This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) +var _window = + typeof window !== 'undefined' + ? window + : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; +var _document = _window.document; +var _navigator = _window.navigator; - if (j) { - for (i = 0; i < j; i++) { - callback.call(null, i, obj[i]); +function keepOriginalCallback(original, callback) { + return isFunction(callback) + ? function(data) { + return callback(data, original); } - } - } -} - -function objectMerge$1(obj1, obj2) { - if (!obj2) { - return obj1; - } - - each$1(obj2, function (key, value) { - obj1[key] = value; - }); - return obj1; + : callback; } -/** - * This function is only used for react-native. - * react-native freezes object that have already been sent over the - * js bridge. We need this function in order to check if the object is frozen. - * So it's ok that objectFrozen returns false if Object.isFrozen is not - * supported because it's not relevant for other "platforms". See related issue: - * https://github.com/getsentry/react-native-sentry/issues/57 - */ +// First, check for JSON support +// If there is no JSON, we no-op the core features of Raven +// since JSON is required to encode the payload +function Raven() { + this._hasJSON = !!(typeof JSON === 'object' && JSON.stringify); + // Raven can run in contexts where there's no document (react-native) + this._hasDocument = !isUndefined(_document); + this._hasNavigator = !isUndefined(_navigator); + this._lastCapturedException = null; + this._lastData = null; + this._lastEventId = null; + this._globalServer = null; + this._globalKey = null; + this._globalProject = null; + this._globalContext = {}; + this._globalOptions = { + // SENTRY_RELEASE can be injected by https://github.com/getsentry/sentry-webpack-plugin + release: _window.SENTRY_RELEASE && _window.SENTRY_RELEASE.id, + logger: 'javascript', + ignoreErrors: [], + ignoreUrls: [], + whitelistUrls: [], + includePaths: [], + headers: null, + collectWindowErrors: true, + captureUnhandledRejections: true, + maxMessageLength: 0, + // By default, truncates URL values to 250 chars + maxUrlLength: 250, + stackTraceLimit: 50, + autoBreadcrumbs: true, + instrument: true, + sampleRate: 1, + sanitizeKeys: [] + }; + this._fetchDefaults = { + method: 'POST', + keepalive: true, + // Despite all stars in the sky saying that Edge supports old draft syntax, aka 'never', 'always', 'origin' and 'default + // https://caniuse.com/#feat=referrer-policy + // It doesn't. And it throw exception instead of ignoring this parameter... + // REF: https://github.com/getsentry/raven-js/issues/1233 + referrerPolicy: supportsReferrerPolicy() ? 'origin' : '' + }; + this._ignoreOnError = 0; + this._isRavenInstalled = false; + this._originalErrorStackTraceLimit = Error.stackTraceLimit; + // capture references to window.console *and* all its methods first + // before the console plugin has a chance to monkey patch + this._originalConsole = _window.console || {}; + this._originalConsoleMethods = {}; + this._plugins = []; + this._startTime = now(); + this._wrappedBuiltIns = []; + this._breadcrumbs = []; + this._lastCapturedEvent = null; + this._keypressTimeout; + this._location = _window.location; + this._lastHref = this._location && this._location.href; + this._resetBackoff(); -function objectFrozen$1(obj) { - if (!Object.isFrozen) { - return false; + // eslint-disable-next-line guard-for-in + for (var method in this._originalConsole) { + this._originalConsoleMethods[method] = this._originalConsole[method]; } - - return Object.isFrozen(obj); } -function truncate$1(str, max) { - return !max || str.length <= max ? str : str.substr(0, max) + "\u2026"; -} -/** - * hasKey, a better form of hasOwnProperty - * Example: hasKey(MainHostObject, property) === true/false +/* + * The core Raven singleton * - * @param {Object} host object to check property - * @param {string} key to check + * @this {Raven} */ +Raven.prototype = { + // Hardcode version string so that raven source can be loaded directly via + // webpack (using a build step causes webpack #1617). Grunt verifies that + // this value matches package.json during build. + // See: https://github.com/getsentry/raven-js/issues/465 + VERSION: '3.24.2', -function hasKey$1(object, key) { - return Object.prototype.hasOwnProperty.call(object, key); -} - -function joinRegExp$1(patterns) { - // Combine an array of regular expressions and strings into one large regexp - // Be mad. - var sources = [], - i = 0, - len = patterns.length, - pattern; + debug: false, - for (; i < len; i++) { - pattern = patterns[i]; + TraceKit: TraceKit, // alias to TraceKit - if (isString$1(pattern)) { - // If it's a string, we need to escape it - // Taken from: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions - sources.push(pattern.replace(/([.*+?^=!:${}()|\[\]\/\\])/g, '\\$1')); - } else if (pattern && pattern.source) { - // If it's a regexp already, we want to extract the source - sources.push(pattern.source); - } // Intentionally skip other cases + /* + * Configure Raven with a DSN and extra options + * + * @param {string} dsn The public Sentry DSN + * @param {object} options Set of global options [optional] + * @return {Raven} + */ + config: function(dsn, options) { + var self = this; - } + if (self._globalServer) { + this._logDebug('error', 'Error: Raven has already been configured'); + return self; + } + if (!dsn) return self; - return new RegExp(sources.join('|'), 'i'); -} + var globalOptions = self._globalOptions; -function urlencode$1(o) { - var pairs = []; - each$1(o, function (key, value) { - pairs.push(encodeURIComponent(key) + '=' + encodeURIComponent(value)); - }); - return pairs.join('&'); -} // borrowed from https://tools.ietf.org/html/rfc3986#appendix-B -// intentionally using regex and not href parsing trick because React Native and other -// environments where DOM might not be available + // merge in options + if (options) { + each(options, function(key, value) { + // tags and extra are special and need to be put into context + if (key === 'tags' || key === 'extra' || key === 'user') { + self._globalContext[key] = value; + } else { + globalOptions[key] = value; + } + }); + } + self.setDSN(dsn); -function parseUrl$1(url) { - if (typeof url !== 'string') return {}; - var match = url.match(/^(([^:\/?#]+):)?(\/\/([^\/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?$/); // coerce to undefined values to empty string so we don't get 'undefined' + // "Script error." is hard coded into browsers for errors that it can't read. + // this is the result of a script being pulled in from an external domain and CORS. + globalOptions.ignoreErrors.push(/^Script error\.?$/); + globalOptions.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/); - var query = match[6] || ''; - var fragment = match[8] || ''; - return { - protocol: match[2], - host: match[4], - path: match[5], - relative: match[5] + query + fragment // everything minus origin + // join regexp rules into one big rule + globalOptions.ignoreErrors = joinRegExp(globalOptions.ignoreErrors); + globalOptions.ignoreUrls = globalOptions.ignoreUrls.length + ? joinRegExp(globalOptions.ignoreUrls) + : false; + globalOptions.whitelistUrls = globalOptions.whitelistUrls.length + ? joinRegExp(globalOptions.whitelistUrls) + : false; + globalOptions.includePaths = joinRegExp(globalOptions.includePaths); + globalOptions.maxBreadcrumbs = Math.max( + 0, + Math.min(globalOptions.maxBreadcrumbs || 100, 100) + ); // default and hard limit is 100 - }; -} + var autoBreadcrumbDefaults = { + xhr: true, + console: true, + dom: true, + location: true, + sentry: true + }; + + var autoBreadcrumbs = globalOptions.autoBreadcrumbs; + if ({}.toString.call(autoBreadcrumbs) === '[object Object]') { + autoBreadcrumbs = objectMerge(autoBreadcrumbDefaults, autoBreadcrumbs); + } else if (autoBreadcrumbs !== false) { + autoBreadcrumbs = autoBreadcrumbDefaults; + } + globalOptions.autoBreadcrumbs = autoBreadcrumbs; -function uuid4$1() { - var crypto = _window$3.crypto || _window$3.msCrypto; + var instrumentDefaults = { + tryCatch: true + }; - if (!isUndefined$1(crypto) && crypto.getRandomValues) { - // Use window.crypto API if available - // eslint-disable-next-line no-undef - var arr = new Uint16Array(8); - crypto.getRandomValues(arr); // set 4 in byte 7 + var instrument = globalOptions.instrument; + if ({}.toString.call(instrument) === '[object Object]') { + instrument = objectMerge(instrumentDefaults, instrument); + } else if (instrument !== false) { + instrument = instrumentDefaults; + } + globalOptions.instrument = instrument; - arr[3] = arr[3] & 0xfff | 0x4000; // set 2 most significant bits of byte 9 to '10' + TraceKit.collectWindowErrors = !!globalOptions.collectWindowErrors; - arr[4] = arr[4] & 0x3fff | 0x8000; + // return for chaining + return self; + }, - var pad = function pad(num) { - var v = num.toString(16); + /* + * Installs a global window.onerror error handler + * to capture and report uncaught exceptions. + * At this point, install() is required to be called due + * to the way TraceKit is set up. + * + * @return {Raven} + */ + install: function() { + var self = this; + if (self.isSetup() && !self._isRavenInstalled) { + TraceKit.report.subscribe(function() { + self._handleOnErrorStackInfo.apply(self, arguments); + }); - while (v.length < 4) { - v = '0' + v; + if (self._globalOptions.captureUnhandledRejections) { + self._attachPromiseRejectionHandler(); } - return v; - }; - - return pad(arr[0]) + pad(arr[1]) + pad(arr[2]) + pad(arr[3]) + pad(arr[4]) + pad(arr[5]) + pad(arr[6]) + pad(arr[7]); - } else { - // http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/2117523#2117523 - return 'xxxxxxxxxxxx4xxxyxxxxxxxxxxxxxxx'.replace(/[xy]/g, function (c) { - var r = Math.random() * 16 | 0, - v = c === 'x' ? r : r & 0x3 | 0x8; - return v.toString(16); - }); - } -} -/** - * Given a child DOM element, returns a query-selector statement describing that - * and its ancestors - * e.g. [HTMLElement] => body > div > input#foo.btn[name=baz] - * @param elem - * @returns {string} - */ + self._patchFunctionToString(); + if (self._globalOptions.instrument && self._globalOptions.instrument.tryCatch) { + self._instrumentTryCatch(); + } -function htmlTreeAsString$1(elem) { - /* eslint no-extra-parens:0*/ - var MAX_TRAVERSE_HEIGHT = 5, - MAX_OUTPUT_LEN = 80, - out = [], - height = 0, - len = 0, - separator = ' > ', - sepLength = separator.length, - nextStr; + if (self._globalOptions.autoBreadcrumbs) self._instrumentBreadcrumbs(); - while (elem && height++ < MAX_TRAVERSE_HEIGHT) { - nextStr = htmlElementAsString(elem); // bail out if - // - nextStr is the 'html' element - // - the length of the string that would be created exceeds MAX_OUTPUT_LEN - // (ignore this limit if we are on the first iteration) + // Install all of the plugins + self._drainPlugins(); - if (nextStr === 'html' || height > 1 && len + out.length * sepLength + nextStr.length >= MAX_OUTPUT_LEN) { - break; + self._isRavenInstalled = true; } - out.push(nextStr); - len += nextStr.length; - elem = elem.parentNode; - } + Error.stackTraceLimit = self._globalOptions.stackTraceLimit; + return this; + }, - return out.reverse().join(separator); -} -/** - * Returns a simple, query-selector representation of a DOM element - * e.g. [HTMLElement] => input#foo.btn[name=baz] - * @param HTMLElement - * @returns {string} - */ + /* + * Set the DSN (can be called multiple time unlike config) + * + * @param {string} dsn The public Sentry DSN + */ + setDSN: function(dsn) { + var self = this, + uri = self._parseDSN(dsn), + lastSlash = uri.path.lastIndexOf('/'), + path = uri.path.substr(1, lastSlash); + self._dsn = dsn; + self._globalKey = uri.user; + self._globalSecret = uri.pass && uri.pass.substr(1); + self._globalProject = uri.path.substr(lastSlash + 1); -function htmlElementAsString(elem) { - var out = [], - className, - classes, - key, - attr, - i; + self._globalServer = self._getGlobalServer(uri); - if (!elem || !elem.tagName) { - return ''; - } + self._globalEndpoint = + self._globalServer + '/' + path + 'api/' + self._globalProject + '/store/'; - out.push(elem.tagName.toLowerCase()); + // Reset backoff state since we may be pointing at a + // new project/server + this._resetBackoff(); + }, - if (elem.id) { - out.push('#' + elem.id); - } + /* + * Wrap code within a context so Raven can capture errors + * reliably across domains that is executed immediately. + * + * @param {object} options A specific set of options for this context [optional] + * @param {function} func The callback to be immediately executed within the context + * @param {array} args An array of arguments to be called with the callback [optional] + */ + context: function(options, func, args) { + if (isFunction(options)) { + args = func || []; + func = options; + options = undefined; + } - className = elem.className; + return this.wrap(options, func).apply(this, args); + }, - if (className && isString$1(className)) { - classes = className.split(/\s+/); + /* + * Wrap code within a context and returns back a new function to be executed + * + * @param {object} options A specific set of options for this context [optional] + * @param {function} func The function to be wrapped in a new context + * @param {function} func A function to call before the try/catch wrapper [optional, private] + * @return {function} The newly wrapped functions with a context + */ + wrap: function(options, func, _before) { + var self = this; + // 1 argument has been passed, and it's not a function + // so just return it + if (isUndefined(func) && !isFunction(options)) { + return options; + } - for (i = 0; i < classes.length; i++) { - out.push('.' + classes[i]); + // options is optional + if (isFunction(options)) { + func = options; + options = undefined; } - } - var attrWhitelist = ['type', 'name', 'title', 'alt']; + // At this point, we've passed along 2 arguments, and the second one + // is not a function either, so we'll just return the second argument. + if (!isFunction(func)) { + return func; + } - for (i = 0; i < attrWhitelist.length; i++) { - key = attrWhitelist[i]; - attr = elem.getAttribute(key); + // We don't wanna wrap it twice! + try { + if (func.__raven__) { + return func; + } - if (attr) { - out.push('[' + key + '="' + attr + '"]'); + // If this has already been wrapped in the past, return that + if (func.__raven_wrapper__) { + return func.__raven_wrapper__; + } + } catch (e) { + // Just accessing custom props in some Selenium environments + // can cause a "Permission denied" exception (see raven-js#495). + // Bail on wrapping and return the function as-is (defers to window.onerror). + return func; } - } - return out.join(''); -} -/** - * Returns true if either a OR b is truthy, but not both - */ + function wrapped() { + var args = [], + i = arguments.length, + deep = !options || (options && options.deep !== false); + if (_before && isFunction(_before)) { + _before.apply(this, arguments); + } -function isOnlyOneTruthy(a, b) { - return !!(!!a ^ !!b); -} -/** - * Returns true if both parameters are undefined - */ + // Recursively wrap all of a function's arguments that are + // functions themselves. + while (i--) args[i] = deep ? self.wrap(options, arguments[i]) : arguments[i]; + try { + // Attempt to invoke user-land function + // NOTE: If you are a Sentry user, and you are seeing this stack frame, it + // means Raven caught an error invoking your application code. This is + // expected behavior and NOT indicative of a bug with Raven.js. + return func.apply(this, args); + } catch (e) { + self._ignoreNextOnError(); + self.captureException(e, options); + throw e; + } + } -function isBothUndefined(a, b) { - return isUndefined$1(a) && isUndefined$1(b); -} -/** - * Returns true if the two input exception interfaces have the same content - */ - - -function isSameException$1(ex1, ex2) { - if (isOnlyOneTruthy(ex1, ex2)) return false; - ex1 = ex1.values[0]; - ex2 = ex2.values[0]; - if (ex1.type !== ex2.type || ex1.value !== ex2.value) return false; // in case both stacktraces are undefined, we can't decide so default to false - - if (isBothUndefined(ex1.stacktrace, ex2.stacktrace)) return false; - return isSameStacktrace$1(ex1.stacktrace, ex2.stacktrace); -} -/** - * Returns true if the two input stack trace interfaces have the same content - */ - - -function isSameStacktrace$1(stack1, stack2) { - if (isOnlyOneTruthy(stack1, stack2)) return false; - var frames1 = stack1.frames; - var frames2 = stack2.frames; // Exit early if frame count differs + // copy over properties of the old function + for (var property in func) { + if (hasKey(func, property)) { + wrapped[property] = func[property]; + } + } + wrapped.prototype = func.prototype; - if (frames1.length !== frames2.length) return false; // Iterate through every frame; bail out if anything differs + func.__raven_wrapper__ = wrapped; + // Signal that this function has been wrapped/filled already + // for both debugging and to prevent it to being wrapped/filled twice + wrapped.__raven__ = true; + wrapped.__orig__ = func; - var a, b; + return wrapped; + }, - for (var i = 0; i < frames1.length; i++) { - a = frames1[i]; - b = frames2[i]; - if (a.filename !== b.filename || a.lineno !== b.lineno || a.colno !== b.colno || a['function'] !== b['function']) return false; - } + /** + * Uninstalls the global error handler. + * + * @return {Raven} + */ + uninstall: function() { + TraceKit.report.uninstall(); - return true; -} -/** - * Polyfill a method - * @param obj object e.g. `document` - * @param name method name present on object e.g. `addEventListener` - * @param replacement replacement function - * @param track {optional} record instrumentation to an array - */ + this._detachPromiseRejectionHandler(); + this._unpatchFunctionToString(); + this._restoreBuiltIns(); + this._restoreConsole(); + Error.stackTraceLimit = this._originalErrorStackTraceLimit; + this._isRavenInstalled = false; -function fill$1(obj, name, replacement, track) { - var orig = obj[name]; - obj[name] = replacement(orig); - obj[name].__raven__ = true; - obj[name].__orig__ = orig; + return this; + }, - if (track) { - track.push([obj, name, orig]); - } -} -/** - * Join values in array - * @param input array of values to be joined together - * @param delimiter string to be placed in-between values - * @returns {string} - */ + /** + * Callback used for `unhandledrejection` event + * + * @param {PromiseRejectionEvent} event An object containing + * promise: the Promise that was rejected + * reason: the value with which the Promise was rejected + * @return void + */ + _promiseRejectionHandler: function(event) { + this._logDebug('debug', 'Raven caught unhandled promise rejection:', event); + this.captureException(event.reason, { + extra: { + unhandledPromiseRejection: true + } + }); + }, + /** + * Installs the global promise rejection handler. + * + * @return {raven} + */ + _attachPromiseRejectionHandler: function() { + this._promiseRejectionHandler = this._promiseRejectionHandler.bind(this); + _window.addEventListener && + _window.addEventListener('unhandledrejection', this._promiseRejectionHandler); + return this; + }, -function safeJoin(input, delimiter) { - if (!isArray$1(input)) return ''; - var output = []; + /** + * Uninstalls the global promise rejection handler. + * + * @return {raven} + */ + _detachPromiseRejectionHandler: function() { + _window.removeEventListener && + _window.removeEventListener('unhandledrejection', this._promiseRejectionHandler); + return this; + }, - for (var i = 0; i < input.length; i++) { + /** + * Manually capture an exception and send it over to Sentry + * + * @param {error} ex An exception to be logged + * @param {object} options A specific set of options for this error [optional] + * @return {Raven} + */ + captureException: function(ex, options) { + options = objectMerge({trimHeadFrames: 0}, options ? options : {}); + + if (isErrorEvent(ex) && ex.error) { + // If it is an ErrorEvent with `error` property, extract it to get actual Error + ex = ex.error; + } else if (isError(ex)) { + // we have a real Error object + ex = ex; + } else if (isPlainObject(ex)) { + // If it is plain Object, serialize it manually and extract options + // This will allow us to group events based on top-level keys + // which is much better than creating new group when any key/value change + options = this._getCaptureExceptionOptionsFromPlainObject(options, ex); + ex = new Error(options.message); + } else { + // If none of previous checks were valid, then it means that + // it's not a plain Object + // it's not a valid ErrorEvent (one with an error property) + // it's not an Error + // So bail out and capture it as a simple message: + return this.captureMessage( + ex, + objectMerge(options, { + stacktrace: true, // if we fall back to captureMessage, default to attempting a new trace + trimHeadFrames: options.trimHeadFrames + 1 + }) + ); + } + + // Store the raw exception object for potential debugging and introspection + this._lastCapturedException = ex; + + // TraceKit.report will re-raise any exception passed to it, + // which means you have to wrap it in try/catch. Instead, we + // can wrap it here and only re-raise if TraceKit.report + // raises an exception different from the one we asked to + // report on. try { - output.push(String(input[i])); - } catch (e) { - output.push('[value cannot be serialized]'); + var stack = TraceKit.computeStackTrace(ex); + this._handleStackInfo(stack, options); + } catch (ex1) { + if (ex !== ex1) { + throw ex1; + } } - } - return output.join(delimiter); -} + return this; + }, -var utils = { - isObject: isObject$1, - isError: isError$1, - isErrorEvent: isErrorEvent$1, - isUndefined: isUndefined$1, - isFunction: isFunction$1, - isPlainObject: isPlainObject, - isString: isString$1, - isArray: isArray$1, - isEmptyObject: isEmptyObject$1, - supportsErrorEvent: supportsErrorEvent, - supportsFetch: supportsFetch$1, - wrappedCallback: wrappedCallback, - each: each$1, - objectMerge: objectMerge$1, - truncate: truncate$1, - objectFrozen: objectFrozen$1, - hasKey: hasKey$1, - joinRegExp: joinRegExp$1, - urlencode: urlencode$1, - uuid4: uuid4$1, - htmlTreeAsString: htmlTreeAsString$1, - htmlElementAsString: htmlElementAsString, - isSameException: isSameException$1, - isSameStacktrace: isSameStacktrace$1, - parseUrl: parseUrl$1, - fill: fill$1, - safeJoin: safeJoin -}; + _getCaptureExceptionOptionsFromPlainObject: function(currentOptions, ex) { + var exKeys = Object.keys(ex).sort(); + var options = objectMerge(currentOptions, { + message: + 'Non-Error exception captured with keys: ' + serializeKeysForMessage(exKeys), + fingerprint: [md5(exKeys)], + extra: currentOptions.extra || {} + }); + options.extra.__serialized__ = serializeException(ex); -/* - TraceKit - Cross brower stack traces + return options; + }, - This was originally forked from github.com/occ/TraceKit, but has since been - largely re-written and is now maintained as part of raven-js. Tests for - this are in test/vendor. + /* + * Manually send a message to Sentry + * + * @param {string} msg A plain message to be captured in Sentry + * @param {object} options A specific set of options for this message [optional] + * @return {Raven} + */ + captureMessage: function(msg, options) { + // config() automagically converts ignoreErrors from a list to a RegExp so we need to test for an + // early call; we'll error on the side of logging anything called before configuration since it's + // probably something you should see: + if ( + !!this._globalOptions.ignoreErrors.test && + this._globalOptions.ignoreErrors.test(msg) + ) { + return; + } - MIT license -*/ + options = options || {}; + msg = msg + ''; // Make sure it's actually a string -var TraceKit = { - collectWindowErrors: true, - debug: false -}; // This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) + var data = objectMerge( + { + message: msg + }, + options + ); -var _window$2 = typeof window !== 'undefined' ? window : typeof commonjsGlobal !== 'undefined' ? commonjsGlobal : typeof self !== 'undefined' ? self : {}; // global reference to slice + var ex; + // Generate a "synthetic" stack trace from this point. + // NOTE: If you are a Sentry user, and you are seeing this stack frame, it is NOT indicative + // of a bug with Raven.js. Sentry generates synthetic traces either by configuration, + // or if it catches a thrown object without a "stack" property. + try { + throw new Error(msg); + } catch (ex1) { + ex = ex1; + } + // null exception name so `Error` isn't prefixed to msg + ex.name = null; + var stack = TraceKit.computeStackTrace(ex); -var _slice = [].slice; -var UNKNOWN_FUNCTION = '?'; // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error#Error_types + // stack[0] is `throw new Error(msg)` call itself, we are interested in the frame that was just before that, stack[1] + var initialCall = isArray(stack.stack) && stack.stack[1]; -var ERROR_TYPES_RE = /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/; + // if stack[1] is `Raven.captureException`, it means that someone passed a string to it and we redirected that call + // to be handled by `captureMessage`, thus `initialCall` is the 3rd one, not 2nd + // initialCall => captureException(string) => captureMessage(string) + if (initialCall && initialCall.func === 'Raven.captureException') { + initialCall = stack.stack[2]; + } -function getLocationHref() { - if (typeof document === 'undefined' || document.location == null) return ''; - return document.location.href; -} -/** - * TraceKit.report: cross-browser processing of unhandled exceptions - * - * Syntax: - * TraceKit.report.subscribe(function(stackInfo) { ... }) - * TraceKit.report.unsubscribe(function(stackInfo) { ... }) - * TraceKit.report(exception) - * try { ...code... } catch(ex) { TraceKit.report(ex); } - * - * Supports: - * - Firefox: full stack trace with line numbers, plus column number - * on top frame; column number is not guaranteed - * - Opera: full stack trace with line and column numbers - * - Chrome: full stack trace with line and column numbers - * - Safari: line and column number for the top frame only; some frames - * may be missing, and column number is not guaranteed - * - IE: line and column number for the top frame only; some frames - * may be missing, and column number is not guaranteed - * - * In theory, TraceKit should work on all of the following versions: - * - IE5.5+ (only 8.0 tested) - * - Firefox 0.9+ (only 3.5+ tested) - * - Opera 7+ (only 10.50 tested; versions 9 and earlier may require - * Exceptions Have Stacktrace to be enabled in opera:config) - * - Safari 3+ (only 4+ tested) - * - Chrome 1+ (only 5+ tested) - * - Konqueror 3.5+ (untested) - * - * Requires TraceKit.computeStackTrace. - * - * Tries to catch all unhandled exceptions and report them to the - * subscribed handlers. Please note that TraceKit.report will rethrow the - * exception. This is REQUIRED in order to get a useful stack trace in IE. - * If the exception does not reach the top of the browser, you will only - * get a stack trace from the point where TraceKit.report was called. - * - * Handlers receive a stackInfo object as described in the - * TraceKit.computeStackTrace docs. - */ + var fileurl = (initialCall && initialCall.url) || ''; + if ( + !!this._globalOptions.ignoreUrls.test && + this._globalOptions.ignoreUrls.test(fileurl) + ) { + return; + } -TraceKit.report = function reportModuleWrapper() { - var handlers = [], - lastArgs = null, - lastException = null, - lastExceptionStack = null; - /** - * Add a crash handler. - * @param {Function} handler - */ + if ( + !!this._globalOptions.whitelistUrls.test && + !this._globalOptions.whitelistUrls.test(fileurl) + ) { + return; + } - function subscribe(handler) { - installGlobalHandler(); - handlers.push(handler); - } - /** - * Remove a crash handler. - * @param {Function} handler - */ + if (this._globalOptions.stacktrace || (options && options.stacktrace)) { + // fingerprint on msg, not stack trace (legacy behavior, could be revisited) + data.fingerprint = data.fingerprint == null ? msg : data.fingerprint; + options = objectMerge( + { + trimHeadFrames: 0 + }, + options + ); + // Since we know this is a synthetic trace, the top frame (this function call) + // MUST be from Raven.js, so mark it for trimming + // We add to the trim counter so that callers can choose to trim extra frames, such + // as utility functions. + options.trimHeadFrames += 1; - function unsubscribe(handler) { - for (var i = handlers.length - 1; i >= 0; --i) { - if (handlers[i] === handler) { - handlers.splice(i, 1); - } + var frames = this._prepareFrames(stack, options); + data.stacktrace = { + // Sentry expects frames oldest to newest + frames: frames.reverse() + }; } - } - /** - * Remove all crash handlers. - */ + // Make sure that fingerprint is always wrapped in an array + if (data.fingerprint) { + data.fingerprint = isArray(data.fingerprint) + ? data.fingerprint + : [data.fingerprint]; + } - function unsubscribeAll() { - uninstallGlobalHandler(); - handlers = []; - } - /** - * Dispatch stack information to all handlers. - * @param {Object.} stack - */ + // Fire away! + this._send(data); + return this; + }, - function notifyHandlers(stack, isWindowError) { - var exception = null; + captureBreadcrumb: function(obj) { + var crumb = objectMerge( + { + timestamp: now() / 1000 + }, + obj + ); - if (isWindowError && !TraceKit.collectWindowErrors) { - return; - } + if (isFunction(this._globalOptions.breadcrumbCallback)) { + var result = this._globalOptions.breadcrumbCallback(crumb); - for (var i in handlers) { - if (handlers.hasOwnProperty(i)) { - try { - handlers[i].apply(null, [stack].concat(_slice.call(arguments, 2))); - } catch (inner) { - exception = inner; - } + if (isObject(result) && !isEmptyObject(result)) { + crumb = result; + } else if (result === false) { + return this; } } - if (exception) { - throw exception; + this._breadcrumbs.push(crumb); + if (this._breadcrumbs.length > this._globalOptions.maxBreadcrumbs) { + this._breadcrumbs.shift(); } - } + return this; + }, - var _oldOnerrorHandler, _onErrorHandlerInstalled; - /** - * Ensures all global unhandled exceptions are recorded. - * Supported by Gecko and IE. - * @param {string} msg Error message. - * @param {string} url URL of script that generated the exception. - * @param {(number|string)} lineNo The line number at which the error - * occurred. - * @param {?(number|string)} colNo The column number at which the error - * occurred. - * @param {?Error} ex The actual Error object. + addPlugin: function(plugin /*arg1, arg2, ... argN*/) { + var pluginArgs = [].slice.call(arguments, 1); + + this._plugins.push([plugin, pluginArgs]); + if (this._isRavenInstalled) { + this._drainPlugins(); + } + + return this; + }, + + /* + * Set/clear a user to be sent along with the payload. + * + * @param {object} user An object representing user data [optional] + * @return {Raven} */ + setUserContext: function(user) { + // Intentionally do not merge here since that's an unexpected behavior. + this._globalContext.user = user; + return this; + }, - function traceKitWindowOnError(msg, url, lineNo, colNo, ex) { - var stack = null; // If 'ex' is ErrorEvent, get real Error from inside + /* + * Merge extra attributes to be sent along with the payload. + * + * @param {object} extra An object representing extra data [optional] + * @return {Raven} + */ + setExtraContext: function(extra) { + this._mergeContext('extra', extra); - var exception = utils.isErrorEvent(ex) ? ex.error : ex; // If 'msg' is ErrorEvent, get real message from inside + return this; + }, - var message = utils.isErrorEvent(msg) ? msg.message : msg; + /* + * Merge tags to be sent along with the payload. + * + * @param {object} tags An object representing tags [optional] + * @return {Raven} + */ + setTagsContext: function(tags) { + this._mergeContext('tags', tags); - if (lastExceptionStack) { - TraceKit.computeStackTrace.augmentStackTraceWithInitialElement(lastExceptionStack, url, lineNo, message); - processLastException(); - } else if (exception && utils.isError(exception)) { - // non-string `exception` arg; attempt to extract stack trace - // New chrome and blink send along a real error object - // Let's just report that like a normal error. - // See: https://mikewest.org/2013/08/debugging-runtime-errors-with-window-onerror - stack = TraceKit.computeStackTrace(exception); - notifyHandlers(stack, true); - } else { - var location = { - url: url, - line: lineNo, - column: colNo - }; - var name = undefined; - var groups; + return this; + }, - if ({}.toString.call(message) === '[object String]') { - var groups = message.match(ERROR_TYPES_RE); + /* + * Clear all of the context. + * + * @return {Raven} + */ + clearContext: function() { + this._globalContext = {}; - if (groups) { - name = groups[1]; - message = groups[2]; - } - } + return this; + }, - location.func = UNKNOWN_FUNCTION; - stack = { - name: name, - message: message, - url: getLocationHref(), - stack: [location] - }; - notifyHandlers(stack, true); - } + /* + * Get a copy of the current context. This cannot be mutated. + * + * @return {object} copy of context + */ + getContext: function() { + // lol javascript + return JSON.parse(stringify(this._globalContext)); + }, - if (_oldOnerrorHandler) { - return _oldOnerrorHandler.apply(this, arguments); - } + /* + * Set environment of application + * + * @param {string} environment Typically something like 'production'. + * @return {Raven} + */ + setEnvironment: function(environment) { + this._globalOptions.environment = environment; - return false; - } + return this; + }, - function installGlobalHandler() { - if (_onErrorHandlerInstalled) { - return; - } + /* + * Set release version of application + * + * @param {string} release Typically something like a git SHA to identify version + * @return {Raven} + */ + setRelease: function(release) { + this._globalOptions.release = release; - _oldOnerrorHandler = _window$2.onerror; - _window$2.onerror = traceKitWindowOnError; - _onErrorHandlerInstalled = true; - } + return this; + }, - function uninstallGlobalHandler() { - if (!_onErrorHandlerInstalled) { - return; - } + /* + * Set the dataCallback option + * + * @param {function} callback The callback to run which allows the + * data blob to be mutated before sending + * @return {Raven} + */ + setDataCallback: function(callback) { + var original = this._globalOptions.dataCallback; + this._globalOptions.dataCallback = keepOriginalCallback(original, callback); + return this; + }, - _window$2.onerror = _oldOnerrorHandler; - _onErrorHandlerInstalled = false; - _oldOnerrorHandler = undefined; - } + /* + * Set the breadcrumbCallback option + * + * @param {function} callback The callback to run which allows filtering + * or mutating breadcrumbs + * @return {Raven} + */ + setBreadcrumbCallback: function(callback) { + var original = this._globalOptions.breadcrumbCallback; + this._globalOptions.breadcrumbCallback = keepOriginalCallback(original, callback); + return this; + }, - function processLastException() { - var _lastExceptionStack = lastExceptionStack, - _lastArgs = lastArgs; - lastArgs = null; - lastExceptionStack = null; - lastException = null; - notifyHandlers.apply(null, [_lastExceptionStack, false].concat(_lastArgs)); - } - /** - * Reports an unhandled Error to TraceKit. - * @param {Error} ex - * @param {?boolean} rethrow If false, do not re-throw the exception. - * Only used for window.onerror to not cause an infinite loop of - * rethrowing. + /* + * Set the shouldSendCallback option + * + * @param {function} callback The callback to run which allows + * introspecting the blob before sending + * @return {Raven} */ + setShouldSendCallback: function(callback) { + var original = this._globalOptions.shouldSendCallback; + this._globalOptions.shouldSendCallback = keepOriginalCallback(original, callback); + return this; + }, + /** + * Override the default HTTP transport mechanism that transmits data + * to the Sentry server. + * + * @param {function} transport Function invoked instead of the default + * `makeRequest` handler. + * + * @return {Raven} + */ + setTransport: function(transport) { + this._globalOptions.transport = transport; - function report(ex, rethrow) { - var args = _slice.call(arguments, 1); + return this; + }, - if (lastExceptionStack) { - if (lastException === ex) { - return; // already caught by an inner catch block, ignore - } else { - processLastException(); + /* + * Get the latest raw exception that was captured by Raven. + * + * @return {error} + */ + lastException: function() { + return this._lastCapturedException; + }, + + /* + * Get the last event id + * + * @return {string} + */ + lastEventId: function() { + return this._lastEventId; + }, + + /* + * Determine if Raven is setup and ready to go. + * + * @return {boolean} + */ + isSetup: function() { + if (!this._hasJSON) return false; // needs JSON support + if (!this._globalServer) { + if (!this.ravenNotConfiguredError) { + this.ravenNotConfiguredError = true; + this._logDebug('error', 'Error: Raven has not been configured.'); } + return false; } + return true; + }, - var stack = TraceKit.computeStackTrace(ex); - lastExceptionStack = stack; - lastException = ex; - lastArgs = args; // If the stack trace is incomplete, wait for 2 seconds for - // slow slow IE to see if onerror occurs or not before reporting - // this exception; otherwise, we will end up with an incomplete - // stack trace + afterLoad: function() { + // TODO: remove window dependence? - setTimeout(function () { - if (lastException === ex) { - processLastException(); - } - }, stack.incomplete ? 2000 : 0); + // Attempt to initialize Raven on load + var RavenConfig = _window.RavenConfig; + if (RavenConfig) { + this.config(RavenConfig.dsn, RavenConfig.config).install(); + } + }, - if (rethrow !== false) { - throw ex; // re-throw to propagate to the top level (and cause window.onerror) + showReportDialog: function(options) { + if ( + !_document // doesn't work without a document (React native) + ) + return; + + options = options || {}; + + var lastEventId = options.eventId || this.lastEventId(); + if (!lastEventId) { + throw new RavenConfigError('Missing eventId'); } - } - report.subscribe = subscribe; - report.unsubscribe = unsubscribe; - report.uninstall = unsubscribeAll; - return report; -}(); -/** - * TraceKit.computeStackTrace: cross-browser stack traces in JavaScript - * - * Syntax: - * s = TraceKit.computeStackTrace(exception) // consider using TraceKit.report instead (see below) - * Returns: - * s.name - exception name - * s.message - exception message - * s.stack[i].url - JavaScript or HTML file URL - * s.stack[i].func - function name, or empty for anonymous functions (if guessing did not work) - * s.stack[i].args - arguments passed to the function, if known - * s.stack[i].line - line number, if known - * s.stack[i].column - column number, if known - * - * Supports: - * - Firefox: full stack trace with line numbers and unreliable column - * number on top frame - * - Opera 10: full stack trace with line and column numbers - * - Opera 9-: full stack trace with line numbers - * - Chrome: full stack trace with line and column numbers - * - Safari: line and column number for the topmost stacktrace element - * only - * - IE: no line numbers whatsoever - * - * Tries to guess names of anonymous functions by looking for assignments - * in the source code. In IE and Safari, we have to guess source file names - * by searching for function bodies inside all page scripts. This will not - * work for scripts that are loaded cross-domain. - * Here be dragons: some function names may be guessed incorrectly, and - * duplicate functions may be mismatched. - * - * TraceKit.computeStackTrace should only be used for tracing purposes. - * Logging of unhandled exceptions should be done with TraceKit.report, - * which builds on top of TraceKit.computeStackTrace and provides better - * IE support by utilizing the window.onerror event to retrieve information - * about the top of the stack. - * - * Note: In IE and Safari, no stack trace is recorded on the Error object, - * so computeStackTrace instead walks its *own* chain of callers. - * This means that: - * * in Safari, some methods may be missing from the stack trace; - * * in IE, the topmost function in the stack trace will always be the - * caller of computeStackTrace. - * - * This is okay for tracing (because you are likely to be calling - * computeStackTrace from the function you want to be the topmost element - * of the stack trace anyway), but not okay for logging unhandled - * exceptions (because your catch block will likely be far away from the - * inner function that actually caused the exception). - * - */ + var dsn = options.dsn || this._dsn; + if (!dsn) { + throw new RavenConfigError('Missing DSN'); + } + var encode = encodeURIComponent; + var qs = ''; + qs += '?eventId=' + encode(lastEventId); + qs += '&dsn=' + encode(dsn); -TraceKit.computeStackTrace = function computeStackTraceWrapper() { - // Contents of Exception in various browsers. - // - // SAFARI: - // ex.message = Can't find variable: qq - // ex.line = 59 - // ex.sourceId = 580238192 - // ex.sourceURL = http://... - // ex.expressionBeginOffset = 96 - // ex.expressionCaretOffset = 98 - // ex.expressionEndOffset = 98 - // ex.name = ReferenceError - // - // FIREFOX: - // ex.message = qq is not defined - // ex.fileName = http://... - // ex.lineNumber = 59 - // ex.columnNumber = 69 - // ex.stack = ...stack trace... (see the example below) - // ex.name = ReferenceError - // - // CHROME: - // ex.message = qq is not defined - // ex.name = ReferenceError - // ex.type = not_defined - // ex.arguments = ['aa'] - // ex.stack = ...stack trace... - // - // INTERNET EXPLORER: - // ex.message = ... - // ex.name = ReferenceError - // - // OPERA: - // ex.message = ...message... (see the example below) - // ex.name = ReferenceError - // ex.opera#sourceloc = 11 (pretty much useless, duplicates the info in ex.message) - // ex.stacktrace = n/a; see 'opera:config#UserPrefs|Exceptions Have Stacktrace' + var user = options.user || this._globalContext.user; + if (user) { + if (user.name) qs += '&name=' + encode(user.name); + if (user.email) qs += '&email=' + encode(user.email); + } - /** - * Computes stack trace information from the stack property. - * Chrome and Gecko use this property. - * @param {Error} ex - * @return {?Object.} Stack trace information. - */ - function computeStackTraceFromStackProp(ex) { - if (typeof ex.stack === 'undefined' || !ex.stack) return; - var chrome = /^\s*at (.*?) ?\(((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i, - gecko = /^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|\[native).*?|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i, - winjs = /^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i, - // Used to additionally parse URL/line/column from eval frames - geckoEval = /(\S+) line (\d+)(?: > eval line \d+)* > eval/i, - chromeEval = /\((\S*)(?::(\d+))(?::(\d+))\)/, - lines = ex.stack.split('\n'), - stack = [], - submatch, - parts, - element, - reference = /^(.*) is undefined$/.exec(ex.message); + var globalServer = this._getGlobalServer(this._parseDSN(dsn)); - for (var i = 0, j = lines.length; i < j; ++i) { - if (parts = chrome.exec(lines[i])) { - var isNative = parts[2] && parts[2].indexOf('native') === 0; // start of line + var script = _document.createElement('script'); + script.async = true; + script.src = globalServer + '/api/embed/error-page/' + qs; + (_document.head || _document.body).appendChild(script); + }, - var isEval = parts[2] && parts[2].indexOf('eval') === 0; // start of line + /**** Private functions ****/ + _ignoreNextOnError: function() { + var self = this; + this._ignoreOnError += 1; + setTimeout(function() { + // onerror should trigger before setTimeout + self._ignoreOnError -= 1; + }); + }, - if (isEval && (submatch = chromeEval.exec(parts[2]))) { - // throw out eval line/column and use top-most line/column number - parts[2] = submatch[1]; // url + _triggerEvent: function(eventType, options) { + // NOTE: `event` is a native browser thing, so let's avoid conflicting wiht it + var evt, key; - parts[3] = submatch[2]; // line + if (!this._hasDocument) return; - parts[4] = submatch[3]; // column - } + options = options || {}; - element = { - url: !isNative ? parts[2] : null, - func: parts[1] || UNKNOWN_FUNCTION, - args: isNative ? [parts[2]] : [], - line: parts[3] ? +parts[3] : null, - column: parts[4] ? +parts[4] : null - }; - } else if (parts = winjs.exec(lines[i])) { - element = { - url: parts[2], - func: parts[1] || UNKNOWN_FUNCTION, - args: [], - line: +parts[3], - column: parts[4] ? +parts[4] : null - }; - } else if (parts = gecko.exec(lines[i])) { - var isEval = parts[3] && parts[3].indexOf(' > eval') > -1; + eventType = 'raven' + eventType.substr(0, 1).toUpperCase() + eventType.substr(1); - if (isEval && (submatch = geckoEval.exec(parts[3]))) { - // throw out eval line/column and use top-most line number - parts[3] = submatch[1]; - parts[4] = submatch[2]; - parts[5] = null; // no column when eval - } else if (i === 0 && !parts[5] && typeof ex.columnNumber !== 'undefined') { - // FireFox uses this awesome columnNumber property for its top frame - // Also note, Firefox's column number is 0-based and everything else expects 1-based, - // so adding 1 - // NOTE: this hack doesn't work if top-most frame is eval - stack[0].column = ex.columnNumber + 1; - } + if (_document.createEvent) { + evt = _document.createEvent('HTMLEvents'); + evt.initEvent(eventType, true, true); + } else { + evt = _document.createEventObject(); + evt.eventType = eventType; + } - element = { - url: parts[3], - func: parts[1] || UNKNOWN_FUNCTION, - args: parts[2] ? parts[2].split(',') : [], - line: parts[4] ? +parts[4] : null, - column: parts[5] ? +parts[5] : null - }; - } else { - continue; + for (key in options) + if (hasKey(options, key)) { + evt[key] = options[key]; } - if (!element.func && element.line) { - element.func = UNKNOWN_FUNCTION; + if (_document.createEvent) { + // IE9 if standards + _document.dispatchEvent(evt); + } else { + // IE8 regardless of Quirks or Standards + // IE9 if quirks + try { + _document.fireEvent('on' + evt.eventType.toLowerCase(), evt); + } catch (e) { + // Do nothing } - - stack.push(element); - } - - if (!stack.length) { - return null; } + }, - return { - name: ex.name, - message: ex.message, - url: getLocationHref(), - stack: stack - }; - } /** - * Adds information about the first frame to incomplete stack traces. - * Safari and IE require this to get complete data on the first frame. - * @param {Object.} stackInfo Stack trace information from - * one of the compute* methods. - * @param {string} url The URL of the script that caused an error. - * @param {(number|string)} lineNo The line number of the script that - * caused an error. - * @param {string=} message The error generated by the browser, which - * hopefully contains the name of the object that caused the error. - * @return {boolean} Whether or not the stack information was - * augmented. - */ - - - function augmentStackTraceWithInitialElement(stackInfo, url, lineNo, message) { - var initial = { - url: url, - line: lineNo - }; + * Wraps addEventListener to capture UI breadcrumbs + * @param evtName the event name (e.g. "click") + * @returns {Function} + * @private + */ + _breadcrumbEventHandler: function(evtName) { + var self = this; + return function(evt) { + // reset keypress timeout; e.g. triggering a 'click' after + // a 'keypress' will reset the keypress debounce so that a new + // set of keypresses can be recorded + self._keypressTimeout = null; - if (initial.url && initial.line) { - stackInfo.incomplete = false; + // It's possible this handler might trigger multiple times for the same + // event (e.g. event propagation through node ancestors). Ignore if we've + // already captured the event. + if (self._lastCapturedEvent === evt) return; - if (!initial.func) { - initial.func = UNKNOWN_FUNCTION; - } + self._lastCapturedEvent = evt; - if (stackInfo.stack.length > 0) { - if (stackInfo.stack[0].url === initial.url) { - if (stackInfo.stack[0].line === initial.line) { - return false; // already in stack trace - } else if (!stackInfo.stack[0].line && stackInfo.stack[0].func === initial.func) { - stackInfo.stack[0].line = initial.line; - return false; - } - } + // try/catch both: + // - accessing evt.target (see getsentry/raven-js#838, #768) + // - `htmlTreeAsString` because it's complex, and just accessing the DOM incorrectly + // can throw an exception in some circumstances. + var target; + try { + target = htmlTreeAsString(evt.target); + } catch (e) { + target = ''; } - stackInfo.stack.unshift(initial); - stackInfo.partial = true; - return true; - } else { - stackInfo.incomplete = true; - } + self.captureBreadcrumb({ + category: 'ui.' + evtName, // e.g. ui.click, ui.input + message: target + }); + }; + }, - return false; - } /** - * Computes stack trace information by walking the arguments.caller - * chain at the time the exception occurred. This will cause earlier - * frames to be missed but is the only way to get any stack trace in - * Safari and IE. The top frame is restored by - * {@link augmentStackTraceWithInitialElement}. - * @param {Error} ex - * @return {?Object.} Stack trace information. - */ - - - function computeStackTraceByWalkingCallerChain(ex, depth) { - var functionName = /function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i, - stack = [], - funcs = {}, - recursion = false, - parts, - item; + * Wraps addEventListener to capture keypress UI events + * @returns {Function} + * @private + */ + _keypressEventHandler: function() { + var self = this, + debounceDuration = 1000; // milliseconds - for (var curr = computeStackTraceByWalkingCallerChain.caller; curr && !recursion; curr = curr.caller) { - if (curr === computeStackTrace || curr === TraceKit.report) { - // console.log('skipping internal function'); - continue; + // TODO: if somehow user switches keypress target before + // debounce timeout is triggered, we will only capture + // a single breadcrumb from the FIRST target (acceptable?) + return function(evt) { + var target; + try { + target = evt.target; + } catch (e) { + // just accessing event properties can throw an exception in some rare circumstances + // see: https://github.com/getsentry/raven-js/issues/838 + return; } + var tagName = target && target.tagName; - item = { - url: null, - func: UNKNOWN_FUNCTION, - line: null, - column: null - }; + // only consider keypress events on actual input elements + // this will disregard keypresses targeting body (e.g. tabbing + // through elements, hotkeys, etc) + if ( + !tagName || + (tagName !== 'INPUT' && tagName !== 'TEXTAREA' && !target.isContentEditable) + ) + return; - if (curr.name) { - item.func = curr.name; - } else if (parts = functionName.exec(curr.toString())) { - item.func = parts[1]; + // record first keypress in a series, but ignore subsequent + // keypresses until debounce clears + var timeout = self._keypressTimeout; + if (!timeout) { + self._breadcrumbEventHandler('input')(evt); } + clearTimeout(timeout); + self._keypressTimeout = setTimeout(function() { + self._keypressTimeout = null; + }, debounceDuration); + }; + }, - if (typeof item.func === 'undefined') { - try { - item.func = parts.input.substring(0, parts.input.indexOf('{')); - } catch (e) {} - } + /** + * Captures a breadcrumb of type "navigation", normalizing input URLs + * @param to the originating URL + * @param from the target URL + * @private + */ + _captureUrlChange: function(from, to) { + var parsedLoc = parseUrl(this._location.href); + var parsedTo = parseUrl(to); + var parsedFrom = parseUrl(from); - if (funcs['' + curr]) { - recursion = true; - } else { - funcs['' + curr] = true; + // because onpopstate only tells you the "new" (to) value of location.href, and + // not the previous (from) value, we need to track the value of the current URL + // state ourselves + this._lastHref = to; + + // Use only the path component of the URL if the URL matches the current + // document (almost all the time when using pushState) + if (parsedLoc.protocol === parsedTo.protocol && parsedLoc.host === parsedTo.host) + to = parsedTo.relative; + if (parsedLoc.protocol === parsedFrom.protocol && parsedLoc.host === parsedFrom.host) + from = parsedFrom.relative; + + this.captureBreadcrumb({ + category: 'navigation', + data: { + to: to, + from: from } + }); + }, - stack.push(item); - } + _patchFunctionToString: function() { + var self = this; + self._originalFunctionToString = Function.prototype.toString; + // eslint-disable-next-line no-extend-native + Function.prototype.toString = function() { + if (typeof this === 'function' && this.__raven__) { + return self._originalFunctionToString.apply(this.__orig__, arguments); + } + return self._originalFunctionToString.apply(this, arguments); + }; + }, - if (depth) { - // console.log('depth is ' + depth); - // console.log('stack is ' + stack.length); - stack.splice(0, depth); + _unpatchFunctionToString: function() { + if (this._originalFunctionToString) { + // eslint-disable-next-line no-extend-native + Function.prototype.toString = this._originalFunctionToString; } + }, - var result = { - name: ex.name, - message: ex.message, - url: getLocationHref(), - stack: stack - }; - augmentStackTraceWithInitialElement(result, ex.sourceURL || ex.fileName, ex.line || ex.lineNumber, ex.message || ex.description); - return result; - } /** - * Computes a stack trace for an exception. - * @param {Error} ex - * @param {(string|number)=} depth - */ - + * Wrap timer functions and event targets to catch errors and provide + * better metadata. + */ + _instrumentTryCatch: function() { + var self = this; - function computeStackTrace(ex, depth) { - var stack = null; - depth = depth == null ? 0 : +depth; + var wrappedBuiltIns = self._wrappedBuiltIns; - try { - stack = computeStackTraceFromStackProp(ex); + function wrapTimeFn(orig) { + return function(fn, t) { + // preserve arity + // Make a copy of the arguments to prevent deoptimization + // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments + var args = new Array(arguments.length); + for (var i = 0; i < args.length; ++i) { + args[i] = arguments[i]; + } + var originalCallback = args[0]; + if (isFunction(originalCallback)) { + args[0] = self.wrap(originalCallback); + } - if (stack) { - return stack; - } - } catch (e) { - if (TraceKit.debug) { - throw e; - } + // IE < 9 doesn't support .call/.apply on setInterval/setTimeout, but it + // also supports only two arguments and doesn't care what this is, so we + // can just call the original function directly. + if (orig.apply) { + return orig.apply(this, args); + } else { + return orig(args[0], args[1]); + } + }; } - try { - stack = computeStackTraceByWalkingCallerChain(ex, depth + 1); + var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; - if (stack) { - return stack; - } - } catch (e) { - if (TraceKit.debug) { - throw e; + function wrapEventTarget(global) { + var proto = _window[global] && _window[global].prototype; + if (proto && proto.hasOwnProperty && proto.hasOwnProperty('addEventListener')) { + fill( + proto, + 'addEventListener', + function(orig) { + return function(evtName, fn, capture, secure) { + // preserve arity + try { + if (fn && fn.handleEvent) { + fn.handleEvent = self.wrap(fn.handleEvent); + } + } catch (err) { + // can sometimes get 'Permission denied to access property "handle Event' + } + + // More breadcrumb DOM capture ... done here and not in `_instrumentBreadcrumbs` + // so that we don't have more than one wrapper function + var before, clickHandler, keypressHandler; + + if ( + autoBreadcrumbs && + autoBreadcrumbs.dom && + (global === 'EventTarget' || global === 'Node') + ) { + // NOTE: generating multiple handlers per addEventListener invocation, should + // revisit and verify we can just use one (almost certainly) + clickHandler = self._breadcrumbEventHandler('click'); + keypressHandler = self._keypressEventHandler(); + before = function(evt) { + // need to intercept every DOM event in `before` argument, in case that + // same wrapped method is re-used for different events (e.g. mousemove THEN click) + // see #724 + if (!evt) return; + + var eventType; + try { + eventType = evt.type; + } catch (e) { + // just accessing event properties can throw an exception in some rare circumstances + // see: https://github.com/getsentry/raven-js/issues/838 + return; + } + if (eventType === 'click') return clickHandler(evt); + else if (eventType === 'keypress') return keypressHandler(evt); + }; + } + return orig.call( + this, + evtName, + self.wrap(fn, undefined, before), + capture, + secure + ); + }; + }, + wrappedBuiltIns + ); + fill( + proto, + 'removeEventListener', + function(orig) { + return function(evt, fn, capture, secure) { + try { + fn = fn && (fn.__raven_wrapper__ ? fn.__raven_wrapper__ : fn); + } catch (e) { + // ignore, accessing __raven_wrapper__ will throw in some Selenium environments + } + return orig.call(this, evt, fn, capture, secure); + }; + }, + wrappedBuiltIns + ); } } - return { - name: ex.name, - message: ex.message, - url: getLocationHref() - }; - } - - computeStackTrace.augmentStackTraceWithInitialElement = augmentStackTraceWithInitialElement; - computeStackTrace.computeStackTraceFromStackProp = computeStackTraceFromStackProp; - return computeStackTrace; -}(); - -var tracekit = TraceKit; - -var stringify_1 = createCommonjsModule(function (module, exports) { - /* - json-stringify-safe - Like JSON.stringify, but doesn't throw on circular references. - - Originally forked from https://github.com/isaacs/json-stringify-safe - version 5.0.1 on 3/8/2017 and modified to handle Errors serialization - and IE8 compatibility. Tests for this are in test/vendor. - - ISC license: https://github.com/isaacs/json-stringify-safe/blob/master/LICENSE - */ - exports = module.exports = stringify; - exports.getSerialize = serializer; - - function indexOf(haystack, needle) { - for (var i = 0; i < haystack.length; ++i) { - if (haystack[i] === needle) return i; - } - - return -1; - } + fill(_window, 'setTimeout', wrapTimeFn, wrappedBuiltIns); + fill(_window, 'setInterval', wrapTimeFn, wrappedBuiltIns); + if (_window.requestAnimationFrame) { + fill( + _window, + 'requestAnimationFrame', + function(orig) { + return function(cb) { + return orig(self.wrap(cb)); + }; + }, + wrappedBuiltIns + ); + } - function stringify(obj, replacer, spaces, cycleReplacer) { - return JSON.stringify(obj, serializer(replacer, cycleReplacer), spaces); - } // https://github.com/ftlabs/js-abbreviate/blob/fa709e5f139e7770a71827b1893f22418097fbda/index.js#L95-L106 + // event targets borrowed from bugsnag-js: + // https://github.com/bugsnag/bugsnag-js/blob/master/src/bugsnag.js#L666 + var eventTargets = [ + 'EventTarget', + 'Window', + 'Node', + 'ApplicationCache', + 'AudioTrackList', + 'ChannelMergerNode', + 'CryptoOperation', + 'EventSource', + 'FileReader', + 'HTMLUnknownElement', + 'IDBDatabase', + 'IDBRequest', + 'IDBTransaction', + 'KeyOperation', + 'MediaController', + 'MessagePort', + 'ModalWindow', + 'Notification', + 'SVGElementInstance', + 'Screen', + 'TextTrack', + 'TextTrackCue', + 'TextTrackList', + 'WebSocket', + 'WebSocketWorker', + 'Worker', + 'XMLHttpRequest', + 'XMLHttpRequestEventTarget', + 'XMLHttpRequestUpload' + ]; + for (var i = 0; i < eventTargets.length; i++) { + wrapEventTarget(eventTargets[i]); + } + }, + /** + * Instrument browser built-ins w/ breadcrumb capturing + * - XMLHttpRequests + * - DOM interactions (click/typing) + * - window.location changes + * - console + * + * Can be disabled or individually configured via the `autoBreadcrumbs` config option + */ + _instrumentBreadcrumbs: function() { + var self = this; + var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; - function stringifyError(value) { - var err = { - // These properties are implemented as magical getters and don't show up in for in - stack: value.stack, - message: value.message, - name: value.name - }; + var wrappedBuiltIns = self._wrappedBuiltIns; - for (var i in value) { - if (Object.prototype.hasOwnProperty.call(value, i)) { - err[i] = value[i]; + function wrapProp(prop, xhr) { + if (prop in xhr && isFunction(xhr[prop])) { + fill(xhr, prop, function(orig) { + return self.wrap(orig); + }); // intentionally don't track filled methods on XHR instances } } - return err; - } - - function serializer(replacer, cycleReplacer) { - var stack = []; - var keys = []; + if (autoBreadcrumbs.xhr && 'XMLHttpRequest' in _window) { + var xhrproto = _window.XMLHttpRequest && _window.XMLHttpRequest.prototype; + fill( + xhrproto, + 'open', + function(origOpen) { + return function(method, url) { + // preserve arity - if (cycleReplacer == null) { - cycleReplacer = function cycleReplacer(key, value) { - if (stack[0] === value) { - return '[Circular ~]'; - } + // if Sentry key appears in URL, don't capture + if (isString(url) && url.indexOf(self._globalKey) === -1) { + this.__raven_xhr = { + method: method, + url: url, + status_code: null + }; + } - return '[Circular ~.' + keys.slice(0, indexOf(stack, value)).join('.') + ']'; - }; - } + return origOpen.apply(this, arguments); + }; + }, + wrappedBuiltIns + ); + + fill( + xhrproto, + 'send', + function(origSend) { + return function() { + // preserve arity + var xhr = this; - return function (key, value) { - if (stack.length > 0) { - var thisPos = indexOf(stack, this); - ~thisPos ? stack.splice(thisPos + 1) : stack.push(this); - ~thisPos ? keys.splice(thisPos, Infinity, key) : keys.push(key); + function onreadystatechangeHandler() { + if (xhr.__raven_xhr && xhr.readyState === 4) { + try { + // touching statusCode in some platforms throws + // an exception + xhr.__raven_xhr.status_code = xhr.status; + } catch (e) { + /* do nothing */ + } - if (~indexOf(stack, value)) { - value = cycleReplacer.call(this, key, value); - } - } else { - stack.push(value); - } + self.captureBreadcrumb({ + type: 'http', + category: 'xhr', + data: xhr.__raven_xhr + }); + } + } - return replacer == null ? value instanceof Error ? stringifyError(value) : value : replacer.call(this, key, value); - }; - } -}); -var stringify_2 = stringify_1.getSerialize; + var props = ['onload', 'onerror', 'onprogress']; + for (var j = 0; j < props.length; j++) { + wrapProp(props[j], xhr); + } -function RavenConfigError(message) { - this.name = 'RavenConfigError'; - this.message = message; -} + if ('onreadystatechange' in xhr && isFunction(xhr.onreadystatechange)) { + fill( + xhr, + 'onreadystatechange', + function(orig) { + return self.wrap(orig, undefined, onreadystatechangeHandler); + } /* intentionally don't track this instrumentation */ + ); + } else { + // if onreadystatechange wasn't actually set by the page on this xhr, we + // are free to set our own and capture the breadcrumb + xhr.onreadystatechange = onreadystatechangeHandler; + } -RavenConfigError.prototype = new Error(); -RavenConfigError.prototype.constructor = RavenConfigError; -var configError = RavenConfigError; + return origSend.apply(this, arguments); + }; + }, + wrappedBuiltIns + ); + } -var wrapMethod = function wrapMethod(console, level, callback) { - var originalConsoleLevel = console[level]; - var originalConsole = console; + if (autoBreadcrumbs.xhr && supportsFetch()) { + fill( + _window, + 'fetch', + function(origFetch) { + return function() { + // preserve arity + // Make a copy of the arguments to prevent deoptimization + // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments + var args = new Array(arguments.length); + for (var i = 0; i < args.length; ++i) { + args[i] = arguments[i]; + } - if (!(level in console)) { - return; - } + var fetchInput = args[0]; + var method = 'GET'; + var url; - var sentryLevel = level === 'warn' ? 'warning' : level; + if (typeof fetchInput === 'string') { + url = fetchInput; + } else if ('Request' in _window && fetchInput instanceof _window.Request) { + url = fetchInput.url; + if (fetchInput.method) { + method = fetchInput.method; + } + } else { + url = '' + fetchInput; + } - console[level] = function () { - var args = [].slice.call(arguments); - var msg = utils.safeJoin(args, ' '); - var data = { - level: sentryLevel, - logger: 'console', - extra: { - arguments: args - } - }; + // if Sentry key appears in URL, don't capture, as it's our own request + if (url.indexOf(self._globalKey) !== -1) { + return origFetch.apply(this, args); + } - if (level === 'assert') { - if (args[0] === false) { - // Default browsers message - msg = 'Assertion failed: ' + (utils.safeJoin(args.slice(1), ' ') || 'console.assert'); - data.extra.arguments = args.slice(1); - callback && callback(msg, data); - } - } else { - callback && callback(msg, data); - } // this fails for some browsers. :( + if (args[1] && args[1].method) { + method = args[1].method; + } + var fetchData = { + method: method, + url: url, + status_code: null + }; - if (originalConsoleLevel) { - // IE9 doesn't allow calling apply on console functions directly - // See: https://stackoverflow.com/questions/5472938/does-ie9-support-console-log-and-is-it-a-real-function#answer-5473193 - Function.prototype.apply.call(originalConsoleLevel, originalConsole, args); + return origFetch + .apply(this, args) + .then(function(response) { + fetchData.status_code = response.status; + + self.captureBreadcrumb({ + type: 'http', + category: 'fetch', + data: fetchData + }); + + return response; + }) + ['catch'](function(err) { + // if there is an error performing the request + self.captureBreadcrumb({ + type: 'http', + category: 'fetch', + data: fetchData, + level: 'error' + }); + + throw err; + }); + }; + }, + wrappedBuiltIns + ); } - }; -}; - -var console$1 = { - wrapMethod: wrapMethod -}; - -/*global XDomainRequest:false */ - -var isError = utils.isError; -var isObject = utils.isObject; -var isErrorEvent = utils.isErrorEvent; -var isUndefined = utils.isUndefined; -var isFunction = utils.isFunction; -var isString = utils.isString; -var isArray = utils.isArray; -var isEmptyObject = utils.isEmptyObject; -var each = utils.each; -var objectMerge = utils.objectMerge; -var truncate = utils.truncate; -var objectFrozen = utils.objectFrozen; -var hasKey = utils.hasKey; -var joinRegExp = utils.joinRegExp; -var urlencode = utils.urlencode; -var uuid4 = utils.uuid4; -var htmlTreeAsString = utils.htmlTreeAsString; -var isSameException = utils.isSameException; -var isSameStacktrace = utils.isSameStacktrace; -var parseUrl = utils.parseUrl; -var fill = utils.fill; -var supportsFetch = utils.supportsFetch; -var wrapConsoleMethod = console$1.wrapMethod; -var dsnKeys = 'source protocol user pass host port path'.split(' '); -var dsnPattern = /^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/; - -function now() { - return +new Date(); -} // This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) + // Capture breadcrumbs from any click that is unhandled / bubbled up all the way + // to the document. Do this before we instrument addEventListener. + if (autoBreadcrumbs.dom && this._hasDocument) { + if (_document.addEventListener) { + _document.addEventListener('click', self._breadcrumbEventHandler('click'), false); + _document.addEventListener('keypress', self._keypressEventHandler(), false); + } else if (_document.attachEvent) { + // IE8 Compatibility + _document.attachEvent('onclick', self._breadcrumbEventHandler('click')); + _document.attachEvent('onkeypress', self._keypressEventHandler()); + } + } -var _window$1 = typeof window !== 'undefined' ? window : typeof commonjsGlobal !== 'undefined' ? commonjsGlobal : typeof self !== 'undefined' ? self : {}; + // record navigation (URL) changes + // NOTE: in Chrome App environment, touching history.pushState, *even inside + // a try/catch block*, will cause Chrome to output an error to console.error + // borrowed from: https://github.com/angular/angular.js/pull/13945/files + var chrome = _window.chrome; + var isChromePackagedApp = chrome && chrome.app && chrome.app.runtime; + var hasPushAndReplaceState = + !isChromePackagedApp && + _window.history && + history.pushState && + history.replaceState; + if (autoBreadcrumbs.location && hasPushAndReplaceState) { + // TODO: remove onpopstate handler on uninstall() + var oldOnPopState = _window.onpopstate; + _window.onpopstate = function() { + var currentHref = self._location.href; + self._captureUrlChange(self._lastHref, currentHref); -var _document = _window$1.document; -var _navigator = _window$1.navigator; + if (oldOnPopState) { + return oldOnPopState.apply(this, arguments); + } + }; -function keepOriginalCallback(original, callback) { - return isFunction(callback) ? function (data) { - return callback(data, original); - } : callback; -} // First, check for JSON support -// If there is no JSON, we no-op the core features of Raven -// since JSON is required to encode the payload + var historyReplacementFunction = function(origHistFunction) { + // note history.pushState.length is 0; intentionally not declaring + // params to preserve 0 arity + return function(/* state, title, url */) { + var url = arguments.length > 2 ? arguments[2] : undefined; + // url argument is optional + if (url) { + // coerce to string (this is what pushState does) + self._captureUrlChange(self._lastHref, url + ''); + } -function Raven$1() { - this._hasJSON = !!(_typeof(JSON) === 'object' && JSON.stringify); // Raven can run in contexts where there's no document (react-native) + return origHistFunction.apply(this, arguments); + }; + }; - this._hasDocument = !isUndefined(_document); - this._hasNavigator = !isUndefined(_navigator); - this._lastCapturedException = null; - this._lastData = null; - this._lastEventId = null; - this._globalServer = null; - this._globalKey = null; - this._globalProject = null; - this._globalContext = {}; - this._globalOptions = { - // SENTRY_RELEASE can be injected by https://github.com/getsentry/sentry-webpack-plugin - release: _window$1.SENTRY_RELEASE && _window$1.SENTRY_RELEASE.id, - logger: 'javascript', - ignoreErrors: [], - ignoreUrls: [], - whitelistUrls: [], - includePaths: [], - headers: null, - collectWindowErrors: true, - maxMessageLength: 0, - // By default, truncates URL values to 250 chars - maxUrlLength: 250, - stackTraceLimit: 50, - autoBreadcrumbs: true, - instrument: true, - sampleRate: 1 - }; - this._fetchDefaults = { - method: 'POST', - keepalive: true, - referrerPolicy: 'origin' - }; - this._ignoreOnError = 0; - this._isRavenInstalled = false; - this._originalErrorStackTraceLimit = Error.stackTraceLimit; // capture references to window.console *and* all its methods first - // before the console plugin has a chance to monkey patch + fill(history, 'pushState', historyReplacementFunction, wrappedBuiltIns); + fill(history, 'replaceState', historyReplacementFunction, wrappedBuiltIns); + } - this._originalConsole = _window$1.console || {}; - this._originalConsoleMethods = {}; - this._plugins = []; - this._startTime = now(); - this._wrappedBuiltIns = []; - this._breadcrumbs = []; - this._lastCapturedEvent = null; - this._keypressTimeout; - this._location = _window$1.location; - this._lastHref = this._location && this._location.href; + if (autoBreadcrumbs.console && 'console' in _window && console.log) { + // console + var consoleMethodCallback = function(msg, data) { + self.captureBreadcrumb({ + message: msg, + level: data.level, + category: 'console' + }); + }; - this._resetBackoff(); // eslint-disable-next-line guard-for-in + each(['debug', 'info', 'warn', 'error', 'log'], function(_, level) { + wrapConsoleMethod(console, level, consoleMethodCallback); + }); + } + }, + _restoreBuiltIns: function() { + // restore any wrapped builtins + var builtin; + while (this._wrappedBuiltIns.length) { + builtin = this._wrappedBuiltIns.shift(); - for (var method in this._originalConsole) { - this._originalConsoleMethods[method] = this._originalConsole[method]; - } -} -/* - * The core Raven singleton - * - * @this {Raven} - */ + var obj = builtin[0], + name = builtin[1], + orig = builtin[2]; + obj[name] = orig; + } + }, -Raven$1.prototype = { - // Hardcode version string so that raven source can be loaded directly via - // webpack (using a build step causes webpack #1617). Grunt verifies that - // this value matches package.json during build. - // See: https://github.com/getsentry/raven-js/issues/465 - VERSION: '3.22.2', - debug: false, - TraceKit: tracekit, - // alias to TraceKit + _restoreConsole: function() { + // eslint-disable-next-line guard-for-in + for (var method in this._originalConsoleMethods) { + this._originalConsole[method] = this._originalConsoleMethods[method]; + } + }, - /* - * Configure Raven with a DSN and extra options - * - * @param {string} dsn The public Sentry DSN - * @param {object} options Set of global options [optional] - * @return {Raven} - */ - config: function config(dsn, options) { + _drainPlugins: function() { var self = this; - if (self._globalServer) { - this._logDebug('error', 'Error: Raven has already been configured'); - - return self; - } + // FIX ME TODO + each(this._plugins, function(_, plugin) { + var installer = plugin[0]; + var args = plugin[1]; + installer.apply(self, [self].concat(args)); + }); + }, - if (!dsn) return self; - var globalOptions = self._globalOptions; // merge in options + _parseDSN: function(str) { + var m = dsnPattern.exec(str), + dsn = {}, + i = 7; - if (options) { - each(options, function (key, value) { - // tags and extra are special and need to be put into context - if (key === 'tags' || key === 'extra' || key === 'user') { - self._globalContext[key] = value; - } else { - globalOptions[key] = value; - } - }); + try { + while (i--) dsn[dsnKeys[i]] = m[i] || ''; + } catch (e) { + throw new RavenConfigError('Invalid DSN: ' + str); } - self.setDSN(dsn); // "Script error." is hard coded into browsers for errors that it can't read. - // this is the result of a script being pulled in from an external domain and CORS. - - globalOptions.ignoreErrors.push(/^Script error\.?$/); - globalOptions.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/); // join regexp rules into one big rule + if (dsn.pass && !this._globalOptions.allowSecretKey) { + throw new RavenConfigError( + 'Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key' + ); + } - globalOptions.ignoreErrors = joinRegExp(globalOptions.ignoreErrors); - globalOptions.ignoreUrls = globalOptions.ignoreUrls.length ? joinRegExp(globalOptions.ignoreUrls) : false; - globalOptions.whitelistUrls = globalOptions.whitelistUrls.length ? joinRegExp(globalOptions.whitelistUrls) : false; - globalOptions.includePaths = joinRegExp(globalOptions.includePaths); - globalOptions.maxBreadcrumbs = Math.max(0, Math.min(globalOptions.maxBreadcrumbs || 100, 100)); // default and hard limit is 100 + return dsn; + }, - var autoBreadcrumbDefaults = { - xhr: true, - console: true, - dom: true, - location: true, - sentry: true - }; - var autoBreadcrumbs = globalOptions.autoBreadcrumbs; + _getGlobalServer: function(uri) { + // assemble the endpoint from the uri pieces + var globalServer = '//' + uri.host + (uri.port ? ':' + uri.port : ''); - if ({}.toString.call(autoBreadcrumbs) === '[object Object]') { - autoBreadcrumbs = objectMerge(autoBreadcrumbDefaults, autoBreadcrumbs); - } else if (autoBreadcrumbs !== false) { - autoBreadcrumbs = autoBreadcrumbDefaults; + if (uri.protocol) { + globalServer = uri.protocol + ':' + globalServer; } + return globalServer; + }, - globalOptions.autoBreadcrumbs = autoBreadcrumbs; - var instrumentDefaults = { - tryCatch: true - }; - var instrument = globalOptions.instrument; - - if ({}.toString.call(instrument) === '[object Object]') { - instrument = objectMerge(instrumentDefaults, instrument); - } else if (instrument !== false) { - instrument = instrumentDefaults; + _handleOnErrorStackInfo: function() { + // if we are intentionally ignoring errors via onerror, bail out + if (!this._ignoreOnError) { + this._handleStackInfo.apply(this, arguments); } + }, - globalOptions.instrument = instrument; - tracekit.collectWindowErrors = !!globalOptions.collectWindowErrors; // return for chaining + _handleStackInfo: function(stackInfo, options) { + var frames = this._prepareFrames(stackInfo, options); - return self; + this._triggerEvent('handle', { + stackInfo: stackInfo, + options: options + }); + + this._processException( + stackInfo.name, + stackInfo.message, + stackInfo.url, + stackInfo.lineno, + frames, + options + ); }, - /* - * Installs a global window.onerror error handler - * to capture and report uncaught exceptions. - * At this point, install() is required to be called due - * to the way TraceKit is set up. - * - * @return {Raven} - */ - install: function install() { + _prepareFrames: function(stackInfo, options) { var self = this; - - if (self.isSetup() && !self._isRavenInstalled) { - tracekit.report.subscribe(function () { - self._handleOnErrorStackInfo.apply(self, arguments); + var frames = []; + if (stackInfo.stack && stackInfo.stack.length) { + each(stackInfo.stack, function(i, stack) { + var frame = self._normalizeFrame(stack, stackInfo.url); + if (frame) { + frames.push(frame); + } }); - self._patchFunctionToString(); - - if (self._globalOptions.instrument && self._globalOptions.instrument.tryCatch) { - self._instrumentTryCatch(); + // e.g. frames captured via captureMessage throw + if (options && options.trimHeadFrames) { + for (var j = 0; j < options.trimHeadFrames && j < frames.length; j++) { + frames[j].in_app = false; + } } - - if (self._globalOptions.autoBreadcrumbs) self._instrumentBreadcrumbs(); // Install all of the plugins - - self._drainPlugins(); - - self._isRavenInstalled = true; } - - Error.stackTraceLimit = self._globalOptions.stackTraceLimit; - return this; + frames = frames.slice(0, this._globalOptions.stackTraceLimit); + return frames; }, - /* - * Set the DSN (can be called multiple time unlike config) - * - * @param {string} dsn The public Sentry DSN - */ - setDSN: function setDSN(dsn) { - var self = this, - uri = self._parseDSN(dsn), - lastSlash = uri.path.lastIndexOf('/'), - path = uri.path.substr(1, lastSlash); - - self._dsn = dsn; - self._globalKey = uri.user; - self._globalSecret = uri.pass && uri.pass.substr(1); - self._globalProject = uri.path.substr(lastSlash + 1); - self._globalServer = self._getGlobalServer(uri); - self._globalEndpoint = self._globalServer + '/' + path + 'api/' + self._globalProject + '/store/'; // Reset backoff state since we may be pointing at a - // new project/server - - this._resetBackoff(); - }, + _normalizeFrame: function(frame, stackInfoUrl) { + // normalize the frames data + var normalized = { + filename: frame.url, + lineno: frame.line, + colno: frame.column, + function: frame.func || '?' + }; - /* - * Wrap code within a context so Raven can capture errors - * reliably across domains that is executed immediately. - * - * @param {object} options A specific set of options for this context [optional] - * @param {function} func The callback to be immediately executed within the context - * @param {array} args An array of arguments to be called with the callback [optional] - */ - context: function context(options, func, args) { - if (isFunction(options)) { - args = func || []; - func = options; - options = undefined; + // Case when we don't have any information about the error + // E.g. throwing a string or raw object, instead of an `Error` in Firefox + // Generating synthetic error doesn't add any value here + // + // We should probably somehow let a user know that they should fix their code + if (!frame.url) { + normalized.filename = stackInfoUrl; // fallback to whole stacks url from onerror handler } - return this.wrap(options, func).apply(this, args); - }, + normalized.in_app = !// determine if an exception came from outside of our app + // first we check the global includePaths list. + ( + (!!this._globalOptions.includePaths.test && + !this._globalOptions.includePaths.test(normalized.filename)) || + // Now we check for fun, if the function name is Raven or TraceKit + /(Raven|TraceKit)\./.test(normalized['function']) || + // finally, we do a last ditch effort and check for raven.min.js + /raven\.(min\.)?js$/.test(normalized.filename) + ); - /* - * Wrap code within a context and returns back a new function to be executed - * - * @param {object} options A specific set of options for this context [optional] - * @param {function} func The function to be wrapped in a new context - * @param {function} func A function to call before the try/catch wrapper [optional, private] - * @return {function} The newly wrapped functions with a context - */ - wrap: function wrap(options, func, _before) { - var self = this; // 1 argument has been passed, and it's not a function - // so just return it + return normalized; + }, - if (isUndefined(func) && !isFunction(options)) { - return options; - } // options is optional + _processException: function(type, message, fileurl, lineno, frames, options) { + var prefixedMessage = (type ? type + ': ' : '') + (message || ''); + if ( + !!this._globalOptions.ignoreErrors.test && + (this._globalOptions.ignoreErrors.test(message) || + this._globalOptions.ignoreErrors.test(prefixedMessage)) + ) { + return; + } + var stacktrace; - if (isFunction(options)) { - func = options; - options = undefined; - } // At this point, we've passed along 2 arguments, and the second one - // is not a function either, so we'll just return the second argument. + if (frames && frames.length) { + fileurl = frames[0].filename || fileurl; + // Sentry expects frames oldest to newest + // and JS sends them as newest to oldest + frames.reverse(); + stacktrace = {frames: frames}; + } else if (fileurl) { + stacktrace = { + frames: [ + { + filename: fileurl, + lineno: lineno, + in_app: true + } + ] + }; + } + if ( + !!this._globalOptions.ignoreUrls.test && + this._globalOptions.ignoreUrls.test(fileurl) + ) { + return; + } - if (!isFunction(func)) { - return func; - } // We don't wanna wrap it twice! + if ( + !!this._globalOptions.whitelistUrls.test && + !this._globalOptions.whitelistUrls.test(fileurl) + ) { + return; + } + var data = objectMerge( + { + // sentry.interfaces.Exception + exception: { + values: [ + { + type: type, + value: message, + stacktrace: stacktrace + } + ] + }, + culprit: fileurl + }, + options + ); - try { - if (func.__raven__) { - return func; - } // If this has already been wrapped in the past, return that + // Fire away! + this._send(data); + }, + _trimPacket: function(data) { + // For now, we only want to truncate the two different messages + // but this could/should be expanded to just trim everything + var max = this._globalOptions.maxMessageLength; + if (data.message) { + data.message = truncate(data.message, max); + } + if (data.exception) { + var exception = data.exception.values[0]; + exception.value = truncate(exception.value, max); + } - if (func.__raven_wrapper__) { - return func.__raven_wrapper__; + var request = data.request; + if (request) { + if (request.url) { + request.url = truncate(request.url, this._globalOptions.maxUrlLength); + } + if (request.Referer) { + request.Referer = truncate(request.Referer, this._globalOptions.maxUrlLength); } - } catch (e) { - // Just accessing custom props in some Selenium environments - // can cause a "Permission denied" exception (see raven-js#495). - // Bail on wrapping and return the function as-is (defers to window.onerror). - return func; } - function wrapped() { - var args = [], - i = arguments.length, - deep = !options || options && options.deep !== false; - - if (_before && isFunction(_before)) { - _before.apply(this, arguments); - } // Recursively wrap all of a function's arguments that are - // functions themselves. - + if (data.breadcrumbs && data.breadcrumbs.values) + this._trimBreadcrumbs(data.breadcrumbs); - while (i--) { - args[i] = deep ? self.wrap(options, arguments[i]) : arguments[i]; - } - - try { - // Attempt to invoke user-land function - // NOTE: If you are a Sentry user, and you are seeing this stack frame, it - // means Raven caught an error invoking your application code. This is - // expected behavior and NOT indicative of a bug with Raven.js. - return func.apply(this, args); - } catch (e) { - self._ignoreNextOnError(); + return data; + }, - self.captureException(e, options); - throw e; - } - } // copy over properties of the old function + /** + * Truncate breadcrumb values (right now just URLs) + */ + _trimBreadcrumbs: function(breadcrumbs) { + // known breadcrumb properties with urls + // TODO: also consider arbitrary prop values that start with (https?)?:// + var urlProps = ['to', 'from', 'url'], + urlProp, + crumb, + data; + for (var i = 0; i < breadcrumbs.values.length; ++i) { + crumb = breadcrumbs.values[i]; + if ( + !crumb.hasOwnProperty('data') || + !isObject(crumb.data) || + objectFrozen(crumb.data) + ) + continue; - for (var property in func) { - if (hasKey(func, property)) { - wrapped[property] = func[property]; + data = objectMerge({}, crumb.data); + for (var j = 0; j < urlProps.length; ++j) { + urlProp = urlProps[j]; + if (data.hasOwnProperty(urlProp) && data[urlProp]) { + data[urlProp] = truncate(data[urlProp], this._globalOptions.maxUrlLength); + } } + breadcrumbs.values[i].data = data; } - - wrapped.prototype = func.prototype; - func.__raven_wrapper__ = wrapped; // Signal that this function has been wrapped/filled already - // for both debugging and to prevent it to being wrapped/filled twice - - wrapped.__raven__ = true; - wrapped.__orig__ = func; - return wrapped; }, - /* - * Uninstalls the global error handler. - * - * @return {Raven} - */ - uninstall: function uninstall() { - tracekit.report.uninstall(); + _getHttpData: function() { + if (!this._hasNavigator && !this._hasDocument) return; + var httpData = {}; - this._unpatchFunctionToString(); + if (this._hasNavigator && _navigator.userAgent) { + httpData.headers = { + 'User-Agent': navigator.userAgent + }; + } - this._restoreBuiltIns(); + // Check in `window` instead of `document`, as we may be in ServiceWorker environment + if (_window.location && _window.location.href) { + httpData.url = _window.location.href; + } - this._restoreConsole(); + if (this._hasDocument && _document.referrer) { + if (!httpData.headers) httpData.headers = {}; + httpData.headers.Referer = _document.referrer; + } - Error.stackTraceLimit = this._originalErrorStackTraceLimit; - this._isRavenInstalled = false; - return this; + return httpData; }, - /* - * Manually capture an exception and send it over to Sentry - * - * @param {error} ex An exception to be logged - * @param {object} options A specific set of options for this error [optional] - * @return {Raven} - */ - captureException: function captureException(ex, options) { - options = objectMerge({ - trimHeadFrames: 0 - }, options ? options : {}); // Cases for sending ex as a message, rather than an exception - - var isNotError = !isError(ex); - var isNotErrorEvent = !isErrorEvent(ex); - var isErrorEventWithoutError = isErrorEvent(ex) && !ex.error; - - if (isNotError && isNotErrorEvent || isErrorEventWithoutError) { - return this.captureMessage(ex, objectMerge(options, { - stacktrace: true, - // if we fall back to captureMessage, default to attempting a new trace - trimHeadFrames: options.trimHeadFrames + 1 - })); - } // Get actual Error from ErrorEvent - + _resetBackoff: function() { + this._backoffDuration = 0; + this._backoffStart = null; + }, - if (isErrorEvent(ex)) ex = ex.error; // Store the raw exception object for potential debugging and introspection + _shouldBackoff: function() { + return this._backoffDuration && now() - this._backoffStart < this._backoffDuration; + }, - this._lastCapturedException = ex; // TraceKit.report will re-raise any exception passed to it, - // which means you have to wrap it in try/catch. Instead, we - // can wrap it here and only re-raise if TraceKit.report - // raises an exception different from the one we asked to - // report on. + /** + * Returns true if the in-process data payload matches the signature + * of the previously-sent data + * + * NOTE: This has to be done at this level because TraceKit can generate + * data from window.onerror WITHOUT an exception object (IE8, IE9, + * other old browsers). This can take the form of an "exception" + * data object with a single frame (derived from the onerror args). + */ + _isRepeatData: function(current) { + var last = this._lastData; - try { - var stack = tracekit.computeStackTrace(ex); + if ( + !last || + current.message !== last.message || // defined for captureMessage + current.culprit !== last.culprit // defined for captureException/onerror + ) + return false; - this._handleStackInfo(stack, options); - } catch (ex1) { - if (ex !== ex1) { - throw ex1; - } + // Stacktrace interface (i.e. from captureMessage) + if (current.stacktrace || last.stacktrace) { + return isSameStacktrace(current.stacktrace, last.stacktrace); + } else if (current.exception || last.exception) { + // Exception interface (i.e. from captureException/onerror) + return isSameException(current.exception, last.exception); } - return this; + return true; }, - /* - * Manually send a message to Sentry - * - * @param {string} msg A plain message to be captured in Sentry - * @param {object} options A specific set of options for this message [optional] - * @return {Raven} - */ - captureMessage: function captureMessage(msg, options) { - // config() automagically converts ignoreErrors from a list to a RegExp so we need to test for an - // early call; we'll error on the side of logging anything called before configuration since it's - // probably something you should see: - if (!!this._globalOptions.ignoreErrors.test && this._globalOptions.ignoreErrors.test(msg)) { + _setBackoffState: function(request) { + // If we are already in a backoff state, don't change anything + if (this._shouldBackoff()) { return; } - options = options || {}; - var data = objectMerge({ - message: msg + '' // Make sure it's actually a string + var status = request.status; - }, options); - var ex; // Generate a "synthetic" stack trace from this point. - // NOTE: If you are a Sentry user, and you are seeing this stack frame, it is NOT indicative - // of a bug with Raven.js. Sentry generates synthetic traces either by configuration, - // or if it catches a thrown object without a "stack" property. + // 400 - project_id doesn't exist or some other fatal + // 401 - invalid/revoked dsn + // 429 - too many requests + if (!(status === 400 || status === 401 || status === 429)) return; + var retry; try { - throw new Error(msg); - } catch (ex1) { - ex = ex1; - } // null exception name so `Error` isn't prefixed to msg + // If Retry-After is not in Access-Control-Expose-Headers, most + // browsers will throw an exception trying to access it + if (supportsFetch()) { + retry = request.headers.get('Retry-After'); + } else { + retry = request.getResponseHeader('Retry-After'); + } + // Retry-After is returned in seconds + retry = parseInt(retry, 10) * 1000; + } catch (e) { + /* eslint no-empty:0 */ + } - ex.name = null; - var stack = tracekit.computeStackTrace(ex); // stack[0] is `throw new Error(msg)` call itself, we are interested in the frame that was just before that, stack[1] + this._backoffDuration = retry + ? // If Sentry server returned a Retry-After value, use it + retry + : // Otherwise, double the last backoff duration (starts at 1 sec) + this._backoffDuration * 2 || 1000; - var initialCall = isArray(stack.stack) && stack.stack[1]; - var fileurl = initialCall && initialCall.url || ''; - - if (!!this._globalOptions.ignoreUrls.test && this._globalOptions.ignoreUrls.test(fileurl)) { - return; - } - - if (!!this._globalOptions.whitelistUrls.test && !this._globalOptions.whitelistUrls.test(fileurl)) { - return; - } + this._backoffStart = now(); + }, - if (this._globalOptions.stacktrace || options && options.stacktrace) { - options = objectMerge({ - // fingerprint on msg, not stack trace (legacy behavior, could be - // revisited) - fingerprint: msg, - // since we know this is a synthetic trace, the top N-most frames - // MUST be from Raven.js, so mark them as in_app later by setting - // trimHeadFrames - trimHeadFrames: (options.trimHeadFrames || 0) + 1 - }, options); + _send: function(data) { + var globalOptions = this._globalOptions; - var frames = this._prepareFrames(stack, options); + var baseData = { + project: this._globalProject, + logger: globalOptions.logger, + platform: 'javascript' + }, + httpData = this._getHttpData(); - data.stacktrace = { - // Sentry expects frames oldest to newest - frames: frames.reverse() - }; - } // Fire away! + if (httpData) { + baseData.request = httpData; + } + // HACK: delete `trimHeadFrames` to prevent from appearing in outbound payload + if (data.trimHeadFrames) delete data.trimHeadFrames; - this._send(data); + data = objectMerge(baseData, data); - return this; - }, - captureBreadcrumb: function captureBreadcrumb(obj) { - var crumb = objectMerge({ - timestamp: now() / 1000 - }, obj); + // Merge in the tags and extra separately since objectMerge doesn't handle a deep merge + data.tags = objectMerge(objectMerge({}, this._globalContext.tags), data.tags); + data.extra = objectMerge(objectMerge({}, this._globalContext.extra), data.extra); - if (isFunction(this._globalOptions.breadcrumbCallback)) { - var result = this._globalOptions.breadcrumbCallback(crumb); + // Send along our own collected metadata with extra + data.extra['session:duration'] = now() - this._startTime; - if (isObject(result) && !isEmptyObject(result)) { - crumb = result; - } else if (result === false) { - return this; - } + if (this._breadcrumbs && this._breadcrumbs.length > 0) { + // intentionally make shallow copy so that additions + // to breadcrumbs aren't accidentally sent in this request + data.breadcrumbs = { + values: [].slice.call(this._breadcrumbs, 0) + }; } - this._breadcrumbs.push(crumb); - - if (this._breadcrumbs.length > this._globalOptions.maxBreadcrumbs) { - this._breadcrumbs.shift(); + if (this._globalContext.user) { + // sentry.interfaces.User + data.user = this._globalContext.user; } - return this; - }, - addPlugin: function addPlugin(plugin - /*arg1, arg2, ... argN*/ - ) { - var pluginArgs = [].slice.call(arguments, 1); - - this._plugins.push([plugin, pluginArgs]); - - if (this._isRavenInstalled) { - this._drainPlugins(); - } + // Include the environment if it's defined in globalOptions + if (globalOptions.environment) data.environment = globalOptions.environment; - return this; - }, + // Include the release if it's defined in globalOptions + if (globalOptions.release) data.release = globalOptions.release; - /* - * Set/clear a user to be sent along with the payload. - * - * @param {object} user An object representing user data [optional] - * @return {Raven} - */ - setUserContext: function setUserContext(user) { - // Intentionally do not merge here since that's an unexpected behavior. - this._globalContext.user = user; - return this; - }, + // Include server_name if it's defined in globalOptions + if (globalOptions.serverName) data.server_name = globalOptions.serverName; - /* - * Merge extra attributes to be sent along with the payload. - * - * @param {object} extra An object representing extra data [optional] - * @return {Raven} - */ - setExtraContext: function setExtraContext(extra) { - this._mergeContext('extra', extra); + data = this._sanitizeData(data); - return this; - }, + // Cleanup empty properties before sending them to the server + Object.keys(data).forEach(function(key) { + if (data[key] == null || data[key] === '' || isEmptyObject(data[key])) { + delete data[key]; + } + }); - /* - * Merge tags to be sent along with the payload. - * - * @param {object} tags An object representing tags [optional] - * @return {Raven} - */ - setTagsContext: function setTagsContext(tags) { - this._mergeContext('tags', tags); + if (isFunction(globalOptions.dataCallback)) { + data = globalOptions.dataCallback(data) || data; + } - return this; - }, + // Why?????????? + if (!data || isEmptyObject(data)) { + return; + } - /* - * Clear all of the context. - * - * @return {Raven} - */ - clearContext: function clearContext() { - this._globalContext = {}; - return this; - }, + // Check if the request should be filtered or not + if ( + isFunction(globalOptions.shouldSendCallback) && + !globalOptions.shouldSendCallback(data) + ) { + return; + } - /* - * Get a copy of the current context. This cannot be mutated. - * - * @return {object} copy of context - */ - getContext: function getContext() { - // lol javascript - return JSON.parse(stringify_1(this._globalContext)); - }, + // Backoff state: Sentry server previously responded w/ an error (e.g. 429 - too many requests), + // so drop requests until "cool-off" period has elapsed. + if (this._shouldBackoff()) { + this._logDebug('warn', 'Raven dropped error due to backoff: ', data); + return; + } - /* - * Set environment of application - * - * @param {string} environment Typically something like 'production'. - * @return {Raven} - */ - setEnvironment: function setEnvironment(environment) { - this._globalOptions.environment = environment; - return this; + if (typeof globalOptions.sampleRate === 'number') { + if (Math.random() < globalOptions.sampleRate) { + this._sendProcessedPayload(data); + } + } else { + this._sendProcessedPayload(data); + } }, - /* - * Set release version of application - * - * @param {string} release Typically something like a git SHA to identify version - * @return {Raven} - */ - setRelease: function setRelease(release) { - this._globalOptions.release = release; - return this; + _sanitizeData: function(data) { + return sanitize(data, this._globalOptions.sanitizeKeys); }, - /* - * Set the dataCallback option - * - * @param {function} callback The callback to run which allows the - * data blob to be mutated before sending - * @return {Raven} - */ - setDataCallback: function setDataCallback(callback) { - var original = this._globalOptions.dataCallback; - this._globalOptions.dataCallback = keepOriginalCallback(original, callback); - return this; + _getUuid: function() { + return uuid4(); }, - /* - * Set the breadcrumbCallback option - * - * @param {function} callback The callback to run which allows filtering - * or mutating breadcrumbs - * @return {Raven} - */ - setBreadcrumbCallback: function setBreadcrumbCallback(callback) { - var original = this._globalOptions.breadcrumbCallback; - this._globalOptions.breadcrumbCallback = keepOriginalCallback(original, callback); - return this; - }, + _sendProcessedPayload: function(data, callback) { + var self = this; + var globalOptions = this._globalOptions; - /* - * Set the shouldSendCallback option - * - * @param {function} callback The callback to run which allows - * introspecting the blob before sending - * @return {Raven} - */ - setShouldSendCallback: function setShouldSendCallback(callback) { - var original = this._globalOptions.shouldSendCallback; - this._globalOptions.shouldSendCallback = keepOriginalCallback(original, callback); - return this; - }, + if (!this.isSetup()) return; - /** - * Override the default HTTP transport mechanism that transmits data - * to the Sentry server. - * - * @param {function} transport Function invoked instead of the default - * `makeRequest` handler. - * - * @return {Raven} - */ - setTransport: function setTransport(transport) { - this._globalOptions.transport = transport; - return this; - }, + // Try and clean up the packet before sending by truncating long values + data = this._trimPacket(data); - /* - * Get the latest raw exception that was captured by Raven. - * - * @return {error} - */ - lastException: function lastException() { - return this._lastCapturedException; - }, + // ideally duplicate error testing should occur *before* dataCallback/shouldSendCallback, + // but this would require copying an un-truncated copy of the data packet, which can be + // arbitrarily deep (extra_data) -- could be worthwhile? will revisit + if (!this._globalOptions.allowDuplicates && this._isRepeatData(data)) { + this._logDebug('warn', 'Raven dropped repeat event: ', data); + return; + } - /* - * Get the last event id - * - * @return {string} - */ - lastEventId: function lastEventId() { - return this._lastEventId; - }, + // Send along an event_id if not explicitly passed. + // This event_id can be used to reference the error within Sentry itself. + // Set lastEventId after we know the error should actually be sent + this._lastEventId = data.event_id || (data.event_id = this._getUuid()); - /* - * Determine if Raven is setup and ready to go. - * - * @return {boolean} - */ - isSetup: function isSetup() { - if (!this._hasJSON) return false; // needs JSON support + // Store outbound payload after trim + this._lastData = data; - if (!this._globalServer) { - if (!this.ravenNotConfiguredError) { - this.ravenNotConfiguredError = true; + this._logDebug('debug', 'Raven about to send:', data); - this._logDebug('error', 'Error: Raven has not been configured.'); - } + var auth = { + sentry_version: '7', + sentry_client: 'raven-js/' + this.VERSION, + sentry_key: this._globalKey + }; - return false; + if (this._globalSecret) { + auth.sentry_secret = this._globalSecret; } - return true; - }, - afterLoad: function afterLoad() { - // TODO: remove window dependence? - // Attempt to initialize Raven on load - var RavenConfig = _window$1.RavenConfig; - - if (RavenConfig) { - this.config(RavenConfig.dsn, RavenConfig.config).install(); - } - }, - showReportDialog: function showReportDialog(options) { - if (!_document // doesn't work without a document (React native) - ) return; - options = options || {}; - var lastEventId = options.eventId || this.lastEventId(); + var exception = data.exception && data.exception.values[0]; - if (!lastEventId) { - throw new configError('Missing eventId'); + // only capture 'sentry' breadcrumb is autoBreadcrumbs is truthy + if ( + this._globalOptions.autoBreadcrumbs && + this._globalOptions.autoBreadcrumbs.sentry + ) { + this.captureBreadcrumb({ + category: 'sentry', + message: exception + ? (exception.type ? exception.type + ': ' : '') + exception.value + : data.message, + event_id: data.event_id, + level: data.level || 'error' // presume error unless specified + }); } - var dsn = options.dsn || this._dsn; + var url = this._globalEndpoint; + (globalOptions.transport || this._makeRequest).call(this, { + url: url, + auth: auth, + data: data, + options: globalOptions, + onSuccess: function success() { + self._resetBackoff(); - if (!dsn) { - throw new configError('Missing DSN'); - } - - var encode = encodeURIComponent; - var qs = ''; - qs += '?eventId=' + encode(lastEventId); - qs += '&dsn=' + encode(dsn); - var user = options.user || this._globalContext.user; - - if (user) { - if (user.name) qs += '&name=' + encode(user.name); - if (user.email) qs += '&email=' + encode(user.email); - } - - var globalServer = this._getGlobalServer(this._parseDSN(dsn)); - - var script = _document.createElement('script'); - - script.async = true; - script.src = globalServer + '/api/embed/error-page/' + qs; + self._triggerEvent('success', { + data: data, + src: url + }); + callback && callback(); + }, + onError: function failure(error) { + self._logDebug('error', 'Raven transport failed to send: ', error); - (_document.head || _document.body).appendChild(script); - }, + if (error.request) { + self._setBackoffState(error.request); + } - /**** Private functions ****/ - _ignoreNextOnError: function _ignoreNextOnError() { - var self = this; - this._ignoreOnError += 1; - setTimeout(function () { - // onerror should trigger before setTimeout - self._ignoreOnError -= 1; + self._triggerEvent('failure', { + data: data, + src: url + }); + error = error || new Error('Raven send failed (no additional details provided)'); + callback && callback(error); + } }); }, - _triggerEvent: function _triggerEvent(eventType, options) { - // NOTE: `event` is a native browser thing, so let's avoid conflicting wiht it - var evt, key; - if (!this._hasDocument) return; - options = options || {}; - eventType = 'raven' + eventType.substr(0, 1).toUpperCase() + eventType.substr(1); - if (_document.createEvent) { - evt = _document.createEvent('HTMLEvents'); - evt.initEvent(eventType, true, true); - } else { - evt = _document.createEventObject(); - evt.eventType = eventType; - } + _makeRequest: function(opts) { + // Auth is intentionally sent as part of query string (NOT as custom HTTP header) to avoid preflight CORS requests + var url = opts.url + '?' + urlencode(opts.auth); - for (key in options) { - if (hasKey(options, key)) { - evt[key] = options[key]; - } - } + var evaluatedHeaders = null; + var evaluatedFetchParameters = {}; - if (_document.createEvent) { - // IE9 if standards - _document.dispatchEvent(evt); - } else { - // IE8 regardless of Quirks or Standards - // IE9 if quirks - try { - _document.fireEvent('on' + evt.eventType.toLowerCase(), evt); - } catch (e) {// Do nothing - } + if (opts.options.headers) { + evaluatedHeaders = this._evaluateHash(opts.options.headers); } - }, - /** - * Wraps addEventListener to capture UI breadcrumbs - * @param evtName the event name (e.g. "click") - * @returns {Function} - * @private - */ - _breadcrumbEventHandler: function _breadcrumbEventHandler(evtName) { - var self = this; - return function (evt) { - // reset keypress timeout; e.g. triggering a 'click' after - // a 'keypress' will reset the keypress debounce so that a new - // set of keypresses can be recorded - self._keypressTimeout = null; // It's possible this handler might trigger multiple times for the same - // event (e.g. event propagation through node ancestors). Ignore if we've - // already captured the event. + if (opts.options.fetchParameters) { + evaluatedFetchParameters = this._evaluateHash(opts.options.fetchParameters); + } - if (self._lastCapturedEvent === evt) return; - self._lastCapturedEvent = evt; // try/catch both: - // - accessing evt.target (see getsentry/raven-js#838, #768) - // - `htmlTreeAsString` because it's complex, and just accessing the DOM incorrectly - // can throw an exception in some circumstances. + if (supportsFetch()) { + evaluatedFetchParameters.body = stringify(opts.data); - var target; + var defaultFetchOptions = objectMerge({}, this._fetchDefaults); + var fetchOptions = objectMerge(defaultFetchOptions, evaluatedFetchParameters); - try { - target = htmlTreeAsString(evt.target); - } catch (e) { - target = ''; + if (evaluatedHeaders) { + fetchOptions.headers = evaluatedHeaders; } - self.captureBreadcrumb({ - category: 'ui.' + evtName, - // e.g. ui.click, ui.input - message: target - }); - }; - }, - - /** - * Wraps addEventListener to capture keypress UI events - * @returns {Function} - * @private - */ - _keypressEventHandler: function _keypressEventHandler() { - var self = this, - debounceDuration = 1000; // milliseconds - // TODO: if somehow user switches keypress target before - // debounce timeout is triggered, we will only capture - // a single breadcrumb from the FIRST target (acceptable?) - - return function (evt) { - var target; + return _window + .fetch(url, fetchOptions) + .then(function(response) { + if (response.ok) { + opts.onSuccess && opts.onSuccess(); + } else { + var error = new Error('Sentry error code: ' + response.status); + // It's called request only to keep compatibility with XHR interface + // and not add more redundant checks in setBackoffState method + error.request = response; + opts.onError && opts.onError(error); + } + }) + ['catch'](function() { + opts.onError && + opts.onError(new Error('Sentry error code: network unavailable')); + }); + } - try { - target = evt.target; - } catch (e) { - // just accessing event properties can throw an exception in some rare circumstances - // see: https://github.com/getsentry/raven-js/issues/838 - return; - } + var request = _window.XMLHttpRequest && new _window.XMLHttpRequest(); + if (!request) return; - var tagName = target && target.tagName; // only consider keypress events on actual input elements - // this will disregard keypresses targeting body (e.g. tabbing - // through elements, hotkeys, etc) + // if browser doesn't support CORS (e.g. IE7), we are out of luck + var hasCORS = 'withCredentials' in request || typeof XDomainRequest !== 'undefined'; - if (!tagName || tagName !== 'INPUT' && tagName !== 'TEXTAREA' && !target.isContentEditable) return; // record first keypress in a series, but ignore subsequent - // keypresses until debounce clears + if (!hasCORS) return; - var timeout = self._keypressTimeout; + if ('withCredentials' in request) { + request.onreadystatechange = function() { + if (request.readyState !== 4) { + return; + } else if (request.status === 200) { + opts.onSuccess && opts.onSuccess(); + } else if (opts.onError) { + var err = new Error('Sentry error code: ' + request.status); + err.request = request; + opts.onError(err); + } + }; + } else { + request = new XDomainRequest(); + // xdomainrequest cannot go http -> https (or vice versa), + // so always use protocol relative + url = url.replace(/^https?:/, ''); - if (!timeout) { - self._breadcrumbEventHandler('input')(evt); + // onreadystatechange not supported by XDomainRequest + if (opts.onSuccess) { + request.onload = opts.onSuccess; } + if (opts.onError) { + request.onerror = function() { + var err = new Error('Sentry error code: XDomainRequest'); + err.request = request; + opts.onError(err); + }; + } + } - clearTimeout(timeout); - self._keypressTimeout = setTimeout(function () { - self._keypressTimeout = null; - }, debounceDuration); - }; - }, - - /** - * Captures a breadcrumb of type "navigation", normalizing input URLs - * @param to the originating URL - * @param from the target URL - * @private - */ - _captureUrlChange: function _captureUrlChange(from, to) { - var parsedLoc = parseUrl(this._location.href); - var parsedTo = parseUrl(to); - var parsedFrom = parseUrl(from); // because onpopstate only tells you the "new" (to) value of location.href, and - // not the previous (from) value, we need to track the value of the current URL - // state ourselves + request.open('POST', url); - this._lastHref = to; // Use only the path component of the URL if the URL matches the current - // document (almost all the time when using pushState) + if (evaluatedHeaders) { + each(evaluatedHeaders, function(key, value) { + request.setRequestHeader(key, value); + }); + } - if (parsedLoc.protocol === parsedTo.protocol && parsedLoc.host === parsedTo.host) to = parsedTo.relative; - if (parsedLoc.protocol === parsedFrom.protocol && parsedLoc.host === parsedFrom.host) from = parsedFrom.relative; - this.captureBreadcrumb({ - category: 'navigation', - data: { - to: to, - from: from - } - }); + request.send(stringify(opts.data)); }, - _patchFunctionToString: function _patchFunctionToString() { - var self = this; - self._originalFunctionToString = Function.prototype.toString; // eslint-disable-next-line no-extend-native - Function.prototype.toString = function () { - if (typeof this === 'function' && this.__raven__) { - return self._originalFunctionToString.apply(this.__orig__, arguments); + _evaluateHash: function(hash) { + var evaluated = {}; + + for (var key in hash) { + if (hash.hasOwnProperty(key)) { + var value = hash[key]; + evaluated[key] = typeof value === 'function' ? value() : value; } + } - return self._originalFunctionToString.apply(this, arguments); - }; + return evaluated; }, - _unpatchFunctionToString: function _unpatchFunctionToString() { - if (this._originalFunctionToString) { - // eslint-disable-next-line no-extend-native - Function.prototype.toString = this._originalFunctionToString; + + _logDebug: function(level) { + // We allow `Raven.debug` and `Raven.config(DSN, { debug: true })` to not make backward incompatible API change + if ( + this._originalConsoleMethods[level] && + (this.debug || this._globalOptions.debug) + ) { + // In IE<10 console methods do not have their own 'apply' method + Function.prototype.apply.call( + this._originalConsoleMethods[level], + this._originalConsole, + [].slice.call(arguments, 1) + ); } }, - /** - * Wrap timer functions and event targets to catch errors and provide - * better metadata. - */ - _instrumentTryCatch: function _instrumentTryCatch() { - var self = this; - var wrappedBuiltIns = self._wrappedBuiltIns; - - function wrapTimeFn(orig) { - return function (fn, t) { - // preserve arity - // Make a copy of the arguments to prevent deoptimization - // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments - var args = new Array(arguments.length); - - for (var i = 0; i < args.length; ++i) { - args[i] = arguments[i]; - } + _mergeContext: function(key, context) { + if (isUndefined(context)) { + delete this._globalContext[key]; + } else { + this._globalContext[key] = objectMerge(this._globalContext[key] || {}, context); + } + } +}; - var originalCallback = args[0]; +// Deprecations +Raven.prototype.setUser = Raven.prototype.setUserContext; +Raven.prototype.setReleaseContext = Raven.prototype.setRelease; - if (isFunction(originalCallback)) { - args[0] = self.wrap(originalCallback); - } // IE < 9 doesn't support .call/.apply on setInterval/setTimeout, but it - // also supports only two arguments and doesn't care what this is, so we - // can just call the original function directly. +module.exports = Raven; +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"2":2,"3":3,"6":6,"7":7,"8":8,"9":9}],5:[function(_dereq_,module,exports){ +(function (global){ +/** + * Enforces a single instance of the Raven client, and the + * main entry point for Raven. If you are a consumer of the + * Raven library, you SHOULD load this file (vs raven.js). + **/ - if (orig.apply) { - return orig.apply(this, args); - } else { - return orig(args[0], args[1]); - } - }; - } +var RavenConstructor = _dereq_(4); - var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; +// This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) +var _window = + typeof window !== 'undefined' + ? window + : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; +var _Raven = _window.Raven; - function wrapEventTarget(global) { - var proto = _window$1[global] && _window$1[global].prototype; +var Raven = new RavenConstructor(); - if (proto && proto.hasOwnProperty && proto.hasOwnProperty('addEventListener')) { - fill(proto, 'addEventListener', function (orig) { - return function (evtName, fn, capture, secure) { - // preserve arity - try { - if (fn && fn.handleEvent) { - fn.handleEvent = self.wrap(fn.handleEvent); - } - } catch (err) {} // can sometimes get 'Permission denied to access property "handle Event' - // More breadcrumb DOM capture ... done here and not in `_instrumentBreadcrumbs` - // so that we don't have more than one wrapper function +/* + * Allow multiple versions of Raven to be installed. + * Strip Raven from the global context and returns the instance. + * + * @return {Raven} + */ +Raven.noConflict = function() { + _window.Raven = _Raven; + return Raven; +}; +Raven.afterLoad(); - var before, clickHandler, keypressHandler; +module.exports = Raven; - if (autoBreadcrumbs && autoBreadcrumbs.dom && (global === 'EventTarget' || global === 'Node')) { - // NOTE: generating multiple handlers per addEventListener invocation, should - // revisit and verify we can just use one (almost certainly) - clickHandler = self._breadcrumbEventHandler('click'); - keypressHandler = self._keypressEventHandler(); +/** + * DISCLAIMER: + * + * Expose `Client` constructor for cases where user want to track multiple "sub-applications" in one larger app. + * It's not meant to be used by a wide audience, so pleaaase make sure that you know what you're doing before using it. + * Accidentally calling `install` multiple times, may result in an unexpected behavior that's very hard to debug. + * + * It's called `Client' to be in-line with Raven Node implementation. + * + * HOWTO: + * + * import Raven from 'raven-js'; + * + * const someAppReporter = new Raven.Client(); + * const someOtherAppReporter = new Raven.Client(); + * + * someAppReporter.config('__DSN__', { + * ...config goes here + * }); + * + * someOtherAppReporter.config('__OTHER_DSN__', { + * ...config goes here + * }); + * + * someAppReporter.captureMessage(...); + * someAppReporter.captureException(...); + * someAppReporter.captureBreadcrumb(...); + * + * someOtherAppReporter.captureMessage(...); + * someOtherAppReporter.captureException(...); + * someOtherAppReporter.captureBreadcrumb(...); + * + * It should "just work". + */ +module.exports.Client = RavenConstructor; - before = function before(evt) { - // need to intercept every DOM event in `before` argument, in case that - // same wrapped method is re-used for different events (e.g. mousemove THEN click) - // see #724 - if (!evt) return; - var eventType; +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"4":4}],6:[function(_dereq_,module,exports){ +(function (global){ +var stringify = _dereq_(8); - try { - eventType = evt.type; - } catch (e) { - // just accessing event properties can throw an exception in some rare circumstances - // see: https://github.com/getsentry/raven-js/issues/838 - return; - } +var _window = + typeof window !== 'undefined' + ? window + : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; - if (eventType === 'click') return clickHandler(evt);else if (eventType === 'keypress') return keypressHandler(evt); - }; - } +function isObject(what) { + return typeof what === 'object' && what !== null; +} - return orig.call(this, evtName, self.wrap(fn, undefined, before), capture, secure); - }; - }, wrappedBuiltIns); - fill(proto, 'removeEventListener', function (orig) { - return function (evt, fn, capture, secure) { - try { - fn = fn && (fn.__raven_wrapper__ ? fn.__raven_wrapper__ : fn); - } catch (e) {// ignore, accessing __raven_wrapper__ will throw in some Selenium environments - } +// Yanked from https://git.io/vS8DV re-used under CC0 +// with some tiny modifications +function isError(value) { + switch ({}.toString.call(value)) { + case '[object Error]': + return true; + case '[object Exception]': + return true; + case '[object DOMException]': + return true; + default: + return value instanceof Error; + } +} - return orig.call(this, evt, fn, capture, secure); - }; - }, wrappedBuiltIns); - } - } +function isErrorEvent(value) { + return supportsErrorEvent() && {}.toString.call(value) === '[object ErrorEvent]'; +} - fill(_window$1, 'setTimeout', wrapTimeFn, wrappedBuiltIns); - fill(_window$1, 'setInterval', wrapTimeFn, wrappedBuiltIns); +function isUndefined(what) { + return what === void 0; +} - if (_window$1.requestAnimationFrame) { - fill(_window$1, 'requestAnimationFrame', function (orig) { - return function (cb) { - return orig(self.wrap(cb)); - }; - }, wrappedBuiltIns); - } // event targets borrowed from bugsnag-js: - // https://github.com/bugsnag/bugsnag-js/blob/master/src/bugsnag.js#L666 +function isFunction(what) { + return typeof what === 'function'; +} +function isPlainObject(what) { + return Object.prototype.toString.call(what) === '[object Object]'; +} - var eventTargets = ['EventTarget', 'Window', 'Node', 'ApplicationCache', 'AudioTrackList', 'ChannelMergerNode', 'CryptoOperation', 'EventSource', 'FileReader', 'HTMLUnknownElement', 'IDBDatabase', 'IDBRequest', 'IDBTransaction', 'KeyOperation', 'MediaController', 'MessagePort', 'ModalWindow', 'Notification', 'SVGElementInstance', 'Screen', 'TextTrack', 'TextTrackCue', 'TextTrackList', 'WebSocket', 'WebSocketWorker', 'Worker', 'XMLHttpRequest', 'XMLHttpRequestEventTarget', 'XMLHttpRequestUpload']; +function isString(what) { + return Object.prototype.toString.call(what) === '[object String]'; +} - for (var i = 0; i < eventTargets.length; i++) { - wrapEventTarget(eventTargets[i]); - } - }, +function isArray(what) { + return Object.prototype.toString.call(what) === '[object Array]'; +} - /** - * Instrument browser built-ins w/ breadcrumb capturing - * - XMLHttpRequests - * - DOM interactions (click/typing) - * - window.location changes - * - console - * - * Can be disabled or individually configured via the `autoBreadcrumbs` config option - */ - _instrumentBreadcrumbs: function _instrumentBreadcrumbs() { - var self = this; - var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; - var wrappedBuiltIns = self._wrappedBuiltIns; +function isEmptyObject(what) { + if (!isPlainObject(what)) return false; - function wrapProp(prop, xhr) { - if (prop in xhr && isFunction(xhr[prop])) { - fill(xhr, prop, function (orig) { - return self.wrap(orig); - }); // intentionally don't track filled methods on XHR instances - } + for (var _ in what) { + if (what.hasOwnProperty(_)) { + return false; } + } + return true; +} - if (autoBreadcrumbs.xhr && 'XMLHttpRequest' in _window$1) { - var xhrproto = XMLHttpRequest.prototype; - fill(xhrproto, 'open', function (origOpen) { - return function (method, url) { - // preserve arity - // if Sentry key appears in URL, don't capture - if (isString(url) && url.indexOf(self._globalKey) === -1) { - this.__raven_xhr = { - method: method, - url: url, - status_code: null - }; - } +function supportsErrorEvent() { + try { + new ErrorEvent(''); // eslint-disable-line no-new + return true; + } catch (e) { + return false; + } +} - return origOpen.apply(this, arguments); - }; - }, wrappedBuiltIns); - fill(xhrproto, 'send', function (origSend) { - return function () { - // preserve arity - var xhr = this; - - function onreadystatechangeHandler() { - if (xhr.__raven_xhr && xhr.readyState === 4) { - try { - // touching statusCode in some platforms throws - // an exception - xhr.__raven_xhr.status_code = xhr.status; - } catch (e) { - /* do nothing */ - } +function supportsFetch() { + if (!('fetch' in _window)) return false; - self.captureBreadcrumb({ - type: 'http', - category: 'xhr', - data: xhr.__raven_xhr - }); - } - } + try { + new Headers(); // eslint-disable-line no-new + new Request(''); // eslint-disable-line no-new + new Response(); // eslint-disable-line no-new + return true; + } catch (e) { + return false; + } +} - var props = ['onload', 'onerror', 'onprogress']; +// Despite all stars in the sky saying that Edge supports old draft syntax, aka 'never', 'always', 'origin' and 'default +// https://caniuse.com/#feat=referrer-policy +// It doesn't. And it throw exception instead of ignoring this parameter... +// REF: https://github.com/getsentry/raven-js/issues/1233 +function supportsReferrerPolicy() { + if (!supportsFetch()) return false; - for (var j = 0; j < props.length; j++) { - wrapProp(props[j], xhr); - } + try { + // eslint-disable-next-line no-new + new Request('pickleRick', { + referrerPolicy: 'origin' + }); + return true; + } catch (e) { + return false; + } +} - if ('onreadystatechange' in xhr && isFunction(xhr.onreadystatechange)) { - fill(xhr, 'onreadystatechange', function (orig) { - return self.wrap(orig, undefined, onreadystatechangeHandler); - } - /* intentionally don't track this instrumentation */ - ); - } else { - // if onreadystatechange wasn't actually set by the page on this xhr, we - // are free to set our own and capture the breadcrumb - xhr.onreadystatechange = onreadystatechangeHandler; - } +function supportsPromiseRejectionEvent() { + return typeof PromiseRejectionEvent === 'function'; +} - return origSend.apply(this, arguments); - }; - }, wrappedBuiltIns); +function wrappedCallback(callback) { + function dataCallback(data, original) { + var normalizedData = callback(data) || data; + if (original) { + return original(normalizedData) || normalizedData; } + return normalizedData; + } - if (autoBreadcrumbs.xhr && supportsFetch()) { - fill(_window$1, 'fetch', function (origFetch) { - return function () { - // preserve arity - // Make a copy of the arguments to prevent deoptimization - // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments - var args = new Array(arguments.length); - - for (var i = 0; i < args.length; ++i) { - args[i] = arguments[i]; - } - - var fetchInput = args[0]; - var method = 'GET'; - var url; - - if (typeof fetchInput === 'string') { - url = fetchInput; - } else if ('Request' in _window$1 && fetchInput instanceof _window$1.Request) { - url = fetchInput.url; + return dataCallback; +} - if (fetchInput.method) { - method = fetchInput.method; - } - } else { - url = '' + fetchInput; - } // if Sentry key appears in URL, don't capture, as it's our own request +function each(obj, callback) { + var i, j; + if (isUndefined(obj.length)) { + for (i in obj) { + if (hasKey(obj, i)) { + callback.call(null, i, obj[i]); + } + } + } else { + j = obj.length; + if (j) { + for (i = 0; i < j; i++) { + callback.call(null, i, obj[i]); + } + } + } +} - if (url.indexOf(self._globalKey) !== -1) { - return origFetch.apply(this, args); - } +function objectMerge(obj1, obj2) { + if (!obj2) { + return obj1; + } + each(obj2, function(key, value) { + obj1[key] = value; + }); + return obj1; +} - if (args[1] && args[1].method) { - method = args[1].method; - } +/** + * This function is only used for react-native. + * react-native freezes object that have already been sent over the + * js bridge. We need this function in order to check if the object is frozen. + * So it's ok that objectFrozen returns false if Object.isFrozen is not + * supported because it's not relevant for other "platforms". See related issue: + * https://github.com/getsentry/react-native-sentry/issues/57 + */ +function objectFrozen(obj) { + if (!Object.isFrozen) { + return false; + } + return Object.isFrozen(obj); +} - var fetchData = { - method: method, - url: url, - status_code: null - }; - return origFetch.apply(this, args).then(function (response) { - fetchData.status_code = response.status; - self.captureBreadcrumb({ - type: 'http', - category: 'fetch', - data: fetchData - }); - return response; - }); - }; - }, wrappedBuiltIns); - } // Capture breadcrumbs from any click that is unhandled / bubbled up all the way - // to the document. Do this before we instrument addEventListener. +function truncate(str, max) { + if (typeof max !== 'number') { + throw new Error('2nd argument to `truncate` function should be a number'); + } + if (typeof str !== 'string' || max === 0) { + return str; + } + return str.length <= max ? str : str.substr(0, max) + '\u2026'; +} +/** + * hasKey, a better form of hasOwnProperty + * Example: hasKey(MainHostObject, property) === true/false + * + * @param {Object} host object to check property + * @param {string} key to check + */ +function hasKey(object, key) { + return Object.prototype.hasOwnProperty.call(object, key); +} - if (autoBreadcrumbs.dom && this._hasDocument) { - if (_document.addEventListener) { - _document.addEventListener('click', self._breadcrumbEventHandler('click'), false); +function joinRegExp(patterns) { + // Combine an array of regular expressions and strings into one large regexp + // Be mad. + var sources = [], + i = 0, + len = patterns.length, + pattern; - _document.addEventListener('keypress', self._keypressEventHandler(), false); - } else { - // IE8 Compatibility - _document.attachEvent('onclick', self._breadcrumbEventHandler('click')); + for (; i < len; i++) { + pattern = patterns[i]; + if (isString(pattern)) { + // If it's a string, we need to escape it + // Taken from: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions + sources.push(pattern.replace(/([.*+?^=!:${}()|\[\]\/\\])/g, '\\$1')); + } else if (pattern && pattern.source) { + // If it's a regexp already, we want to extract the source + sources.push(pattern.source); + } + // Intentionally skip other cases + } + return new RegExp(sources.join('|'), 'i'); +} - _document.attachEvent('onkeypress', self._keypressEventHandler()); - } - } // record navigation (URL) changes - // NOTE: in Chrome App environment, touching history.pushState, *even inside - // a try/catch block*, will cause Chrome to output an error to console.error - // borrowed from: https://github.com/angular/angular.js/pull/13945/files +function urlencode(o) { + var pairs = []; + each(o, function(key, value) { + pairs.push(encodeURIComponent(key) + '=' + encodeURIComponent(value)); + }); + return pairs.join('&'); +} +// borrowed from https://tools.ietf.org/html/rfc3986#appendix-B +// intentionally using regex and not href parsing trick because React Native and other +// environments where DOM might not be available +function parseUrl(url) { + if (typeof url !== 'string') return {}; + var match = url.match(/^(([^:\/?#]+):)?(\/\/([^\/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?$/); - var chrome = _window$1.chrome; - var isChromePackagedApp = chrome && chrome.app && chrome.app.runtime; - var hasPushAndReplaceState = !isChromePackagedApp && _window$1.history && history.pushState && history.replaceState; + // coerce to undefined values to empty string so we don't get 'undefined' + var query = match[6] || ''; + var fragment = match[8] || ''; + return { + protocol: match[2], + host: match[4], + path: match[5], + relative: match[5] + query + fragment // everything minus origin + }; +} +function uuid4() { + var crypto = _window.crypto || _window.msCrypto; - if (autoBreadcrumbs.location && hasPushAndReplaceState) { - // TODO: remove onpopstate handler on uninstall() - var oldOnPopState = _window$1.onpopstate; + if (!isUndefined(crypto) && crypto.getRandomValues) { + // Use window.crypto API if available + // eslint-disable-next-line no-undef + var arr = new Uint16Array(8); + crypto.getRandomValues(arr); - _window$1.onpopstate = function () { - var currentHref = self._location.href; + // set 4 in byte 7 + arr[3] = (arr[3] & 0xfff) | 0x4000; + // set 2 most significant bits of byte 9 to '10' + arr[4] = (arr[4] & 0x3fff) | 0x8000; - self._captureUrlChange(self._lastHref, currentHref); + var pad = function(num) { + var v = num.toString(16); + while (v.length < 4) { + v = '0' + v; + } + return v; + }; - if (oldOnPopState) { - return oldOnPopState.apply(this, arguments); - } - }; + return ( + pad(arr[0]) + + pad(arr[1]) + + pad(arr[2]) + + pad(arr[3]) + + pad(arr[4]) + + pad(arr[5]) + + pad(arr[6]) + + pad(arr[7]) + ); + } else { + // http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/2117523#2117523 + return 'xxxxxxxxxxxx4xxxyxxxxxxxxxxxxxxx'.replace(/[xy]/g, function(c) { + var r = (Math.random() * 16) | 0, + v = c === 'x' ? r : (r & 0x3) | 0x8; + return v.toString(16); + }); + } +} - var historyReplacementFunction = function historyReplacementFunction(origHistFunction) { - // note history.pushState.length is 0; intentionally not declaring - // params to preserve 0 arity - return function () - /* state, title, url */ - { - var url = arguments.length > 2 ? arguments[2] : undefined; // url argument is optional +/** + * Given a child DOM element, returns a query-selector statement describing that + * and its ancestors + * e.g. [HTMLElement] => body > div > input#foo.btn[name=baz] + * @param elem + * @returns {string} + */ +function htmlTreeAsString(elem) { + /* eslint no-extra-parens:0*/ + var MAX_TRAVERSE_HEIGHT = 5, + MAX_OUTPUT_LEN = 80, + out = [], + height = 0, + len = 0, + separator = ' > ', + sepLength = separator.length, + nextStr; - if (url) { - // coerce to string (this is what pushState does) - self._captureUrlChange(self._lastHref, url + ''); - } + while (elem && height++ < MAX_TRAVERSE_HEIGHT) { + nextStr = htmlElementAsString(elem); + // bail out if + // - nextStr is the 'html' element + // - the length of the string that would be created exceeds MAX_OUTPUT_LEN + // (ignore this limit if we are on the first iteration) + if ( + nextStr === 'html' || + (height > 1 && len + out.length * sepLength + nextStr.length >= MAX_OUTPUT_LEN) + ) { + break; + } - return origHistFunction.apply(this, arguments); - }; - }; + out.push(nextStr); - fill(history, 'pushState', historyReplacementFunction, wrappedBuiltIns); - fill(history, 'replaceState', historyReplacementFunction, wrappedBuiltIns); - } + len += nextStr.length; + elem = elem.parentNode; + } - if (autoBreadcrumbs.console && 'console' in _window$1 && console.log) { - // console - var consoleMethodCallback = function consoleMethodCallback(msg, data) { - self.captureBreadcrumb({ - message: msg, - level: data.level, - category: 'console' - }); - }; + return out.reverse().join(separator); +} - each(['debug', 'info', 'warn', 'error', 'log'], function (_, level) { - wrapConsoleMethod(console, level, consoleMethodCallback); - }); - } - }, - _restoreBuiltIns: function _restoreBuiltIns() { - // restore any wrapped builtins - var builtin; +/** + * Returns a simple, query-selector representation of a DOM element + * e.g. [HTMLElement] => input#foo.btn[name=baz] + * @param HTMLElement + * @returns {string} + */ +function htmlElementAsString(elem) { + var out = [], + className, + classes, + key, + attr, + i; - while (this._wrappedBuiltIns.length) { - builtin = this._wrappedBuiltIns.shift(); - var obj = builtin[0], - name = builtin[1], - orig = builtin[2]; - obj[name] = orig; - } - }, - _restoreConsole: function _restoreConsole() { - // eslint-disable-next-line guard-for-in - for (var method in this._originalConsoleMethods) { - this._originalConsole[method] = this._originalConsoleMethods[method]; - } - }, - _drainPlugins: function _drainPlugins() { - var self = this; // FIX ME TODO + if (!elem || !elem.tagName) { + return ''; + } - each(this._plugins, function (_, plugin) { - var installer = plugin[0]; - var args = plugin[1]; - installer.apply(self, [self].concat(args)); - }); - }, - _parseDSN: function _parseDSN(str) { - var m = dsnPattern.exec(str), - dsn = {}, - i = 7; + out.push(elem.tagName.toLowerCase()); + if (elem.id) { + out.push('#' + elem.id); + } - try { - while (i--) { - dsn[dsnKeys[i]] = m[i] || ''; - } - } catch (e) { - throw new configError('Invalid DSN: ' + str); + className = elem.className; + if (className && isString(className)) { + classes = className.split(/\s+/); + for (i = 0; i < classes.length; i++) { + out.push('.' + classes[i]); } - - if (dsn.pass && !this._globalOptions.allowSecretKey) { - throw new configError('Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key'); + } + var attrWhitelist = ['type', 'name', 'title', 'alt']; + for (i = 0; i < attrWhitelist.length; i++) { + key = attrWhitelist[i]; + attr = elem.getAttribute(key); + if (attr) { + out.push('[' + key + '="' + attr + '"]'); } + } + return out.join(''); +} - return dsn; - }, - _getGlobalServer: function _getGlobalServer(uri) { - // assemble the endpoint from the uri pieces - var globalServer = '//' + uri.host + (uri.port ? ':' + uri.port : ''); +/** + * Returns true if either a OR b is truthy, but not both + */ +function isOnlyOneTruthy(a, b) { + return !!(!!a ^ !!b); +} - if (uri.protocol) { - globalServer = uri.protocol + ':' + globalServer; - } +/** + * Returns true if both parameters are undefined + */ +function isBothUndefined(a, b) { + return isUndefined(a) && isUndefined(b); +} - return globalServer; - }, - _handleOnErrorStackInfo: function _handleOnErrorStackInfo() { - // if we are intentionally ignoring errors via onerror, bail out - if (!this._ignoreOnError) { - this._handleStackInfo.apply(this, arguments); - } - }, - _handleStackInfo: function _handleStackInfo(stackInfo, options) { - var frames = this._prepareFrames(stackInfo, options); +/** + * Returns true if the two input exception interfaces have the same content + */ +function isSameException(ex1, ex2) { + if (isOnlyOneTruthy(ex1, ex2)) return false; - this._triggerEvent('handle', { - stackInfo: stackInfo, - options: options - }); + ex1 = ex1.values[0]; + ex2 = ex2.values[0]; - this._processException(stackInfo.name, stackInfo.message, stackInfo.url, stackInfo.lineno, frames, options); - }, - _prepareFrames: function _prepareFrames(stackInfo, options) { - var self = this; - var frames = []; + if (ex1.type !== ex2.type || ex1.value !== ex2.value) return false; - if (stackInfo.stack && stackInfo.stack.length) { - each(stackInfo.stack, function (i, stack) { - var frame = self._normalizeFrame(stack, stackInfo.url); + // in case both stacktraces are undefined, we can't decide so default to false + if (isBothUndefined(ex1.stacktrace, ex2.stacktrace)) return false; - if (frame) { - frames.push(frame); - } - }); // e.g. frames captured via captureMessage throw + return isSameStacktrace(ex1.stacktrace, ex2.stacktrace); +} - if (options && options.trimHeadFrames) { - for (var j = 0; j < options.trimHeadFrames && j < frames.length; j++) { - frames[j].in_app = false; - } - } - } +/** + * Returns true if the two input stack trace interfaces have the same content + */ +function isSameStacktrace(stack1, stack2) { + if (isOnlyOneTruthy(stack1, stack2)) return false; - frames = frames.slice(0, this._globalOptions.stackTraceLimit); - return frames; - }, - _normalizeFrame: function _normalizeFrame(frame, stackInfoUrl) { - // normalize the frames data - var normalized = { - filename: frame.url, - lineno: frame.line, - colno: frame.column, - function: frame.func || '?' - }; // Case when we don't have any information about the error - // E.g. throwing a string or raw object, instead of an `Error` in Firefox - // Generating synthetic error doesn't add any value here - // - // We should probably somehow let a user know that they should fix their code + var frames1 = stack1.frames; + var frames2 = stack2.frames; - if (!frame.url) { - normalized.filename = stackInfoUrl; // fallback to whole stacks url from onerror handler - } + // Exit early if frame count differs + if (frames1.length !== frames2.length) return false; - normalized.in_app = !( // determine if an exception came from outside of our app - // first we check the global includePaths list. - !!this._globalOptions.includePaths.test && !this._globalOptions.includePaths.test(normalized.filename) || // Now we check for fun, if the function name is Raven or TraceKit - /(Raven|TraceKit)\./.test(normalized['function']) || // finally, we do a last ditch effort and check for raven.min.js - /raven\.(min\.)?js$/.test(normalized.filename)); - return normalized; - }, - _processException: function _processException(type, message, fileurl, lineno, frames, options) { - var prefixedMessage = (type ? type + ': ' : '') + (message || ''); + // Iterate through every frame; bail out if anything differs + var a, b; + for (var i = 0; i < frames1.length; i++) { + a = frames1[i]; + b = frames2[i]; + if ( + a.filename !== b.filename || + a.lineno !== b.lineno || + a.colno !== b.colno || + a['function'] !== b['function'] + ) + return false; + } + return true; +} - if (!!this._globalOptions.ignoreErrors.test && (this._globalOptions.ignoreErrors.test(message) || this._globalOptions.ignoreErrors.test(prefixedMessage))) { - return; - } +/** + * Polyfill a method + * @param obj object e.g. `document` + * @param name method name present on object e.g. `addEventListener` + * @param replacement replacement function + * @param track {optional} record instrumentation to an array + */ +function fill(obj, name, replacement, track) { + if (obj == null) return; + var orig = obj[name]; + obj[name] = replacement(orig); + obj[name].__raven__ = true; + obj[name].__orig__ = orig; + if (track) { + track.push([obj, name, orig]); + } +} - var stacktrace; +/** + * Join values in array + * @param input array of values to be joined together + * @param delimiter string to be placed in-between values + * @returns {string} + */ +function safeJoin(input, delimiter) { + if (!isArray(input)) return ''; - if (frames && frames.length) { - fileurl = frames[0].filename || fileurl; // Sentry expects frames oldest to newest - // and JS sends them as newest to oldest + var output = []; - frames.reverse(); - stacktrace = { - frames: frames - }; - } else if (fileurl) { - stacktrace = { - frames: [{ - filename: fileurl, - lineno: lineno, - in_app: true - }] - }; + for (var i = 0; i < input.length; i++) { + try { + output.push(String(input[i])); + } catch (e) { + output.push('[value cannot be serialized]'); } + } - if (!!this._globalOptions.ignoreUrls.test && this._globalOptions.ignoreUrls.test(fileurl)) { - return; - } + return output.join(delimiter); +} - if (!!this._globalOptions.whitelistUrls.test && !this._globalOptions.whitelistUrls.test(fileurl)) { - return; - } +// Default Node.js REPL depth +var MAX_SERIALIZE_EXCEPTION_DEPTH = 3; +// 50kB, as 100kB is max payload size, so half sounds reasonable +var MAX_SERIALIZE_EXCEPTION_SIZE = 50 * 1024; +var MAX_SERIALIZE_KEYS_LENGTH = 40; - var data = objectMerge({ - // sentry.interfaces.Exception - exception: { - values: [{ - type: type, - value: message, - stacktrace: stacktrace - }] - }, - culprit: fileurl - }, options); // Fire away! +function utf8Length(value) { + return ~-encodeURI(value).split(/%..|./).length; +} - this._send(data); - }, - _trimPacket: function _trimPacket(data) { - // For now, we only want to truncate the two different messages - // but this could/should be expanded to just trim everything - var max = this._globalOptions.maxMessageLength; +function jsonSize(value) { + return utf8Length(JSON.stringify(value)); +} - if (data.message) { - data.message = truncate(data.message, max); - } +function serializeValue(value) { + if (typeof value === 'string') { + var maxLength = 40; + return truncate(value, maxLength); + } else if ( + typeof value === 'number' || + typeof value === 'boolean' || + typeof value === 'undefined' + ) { + return value; + } - if (data.exception) { - var exception = data.exception.values[0]; - exception.value = truncate(exception.value, max); - } + var type = Object.prototype.toString.call(value); - var request = data.request; - - if (request) { - if (request.url) { - request.url = truncate(request.url, this._globalOptions.maxUrlLength); - } - - if (request.Referer) { - request.Referer = truncate(request.Referer, this._globalOptions.maxUrlLength); - } - } - - if (data.breadcrumbs && data.breadcrumbs.values) this._trimBreadcrumbs(data.breadcrumbs); - return data; - }, - - /** - * Truncate breadcrumb values (right now just URLs) - */ - _trimBreadcrumbs: function _trimBreadcrumbs(breadcrumbs) { - // known breadcrumb properties with urls - // TODO: also consider arbitrary prop values that start with (https?)?:// - var urlProps = ['to', 'from', 'url'], - urlProp, - crumb, - data; + // Node.js REPL notation + if (type === '[object Object]') return '[Object]'; + if (type === '[object Array]') return '[Array]'; + if (type === '[object Function]') + return value.name ? '[Function: ' + value.name + ']' : '[Function]'; - for (var i = 0; i < breadcrumbs.values.length; ++i) { - crumb = breadcrumbs.values[i]; - if (!crumb.hasOwnProperty('data') || !isObject(crumb.data) || objectFrozen(crumb.data)) continue; - data = objectMerge({}, crumb.data); + return value; +} - for (var j = 0; j < urlProps.length; ++j) { - urlProp = urlProps[j]; +function serializeObject(value, depth) { + if (depth === 0) return serializeValue(value); + + if (isPlainObject(value)) { + return Object.keys(value).reduce(function(acc, key) { + acc[key] = serializeObject(value[key], depth - 1); + return acc; + }, {}); + } else if (Array.isArray(value)) { + return value.map(function(val) { + return serializeObject(val, depth - 1); + }); + } - if (data.hasOwnProperty(urlProp) && data[urlProp]) { - data[urlProp] = truncate(data[urlProp], this._globalOptions.maxUrlLength); - } - } + return serializeValue(value); +} - breadcrumbs.values[i].data = data; - } - }, - _getHttpData: function _getHttpData() { - if (!this._hasNavigator && !this._hasDocument) return; - var httpData = {}; +function serializeException(ex, depth, maxSize) { + if (!isPlainObject(ex)) return ex; - if (this._hasNavigator && _navigator.userAgent) { - httpData.headers = { - 'User-Agent': navigator.userAgent - }; - } // Check in `window` instead of `document`, as we may be in ServiceWorker environment + depth = typeof depth !== 'number' ? MAX_SERIALIZE_EXCEPTION_DEPTH : depth; + maxSize = typeof depth !== 'number' ? MAX_SERIALIZE_EXCEPTION_SIZE : maxSize; + var serialized = serializeObject(ex, depth); - if (_window$1.location && _window$1.location.href) { - httpData.url = _window$1.location.href; - } + if (jsonSize(stringify(serialized)) > maxSize) { + return serializeException(ex, depth - 1); + } - if (this._hasDocument && _document.referrer) { - if (!httpData.headers) httpData.headers = {}; - httpData.headers.Referer = _document.referrer; - } + return serialized; +} - return httpData; - }, - _resetBackoff: function _resetBackoff() { - this._backoffDuration = 0; - this._backoffStart = null; - }, - _shouldBackoff: function _shouldBackoff() { - return this._backoffDuration && now() - this._backoffStart < this._backoffDuration; - }, +function serializeKeysForMessage(keys, maxLength) { + if (typeof keys === 'number' || typeof keys === 'string') return keys.toString(); + if (!Array.isArray(keys)) return ''; - /** - * Returns true if the in-process data payload matches the signature - * of the previously-sent data - * - * NOTE: This has to be done at this level because TraceKit can generate - * data from window.onerror WITHOUT an exception object (IE8, IE9, - * other old browsers). This can take the form of an "exception" - * data object with a single frame (derived from the onerror args). - */ - _isRepeatData: function _isRepeatData(current) { - var last = this._lastData; - if (!last || current.message !== last.message || // defined for captureMessage - current.culprit !== last.culprit // defined for captureException/onerror - ) return false; // Stacktrace interface (i.e. from captureMessage) + keys = keys.filter(function(key) { + return typeof key === 'string'; + }); + if (keys.length === 0) return '[object has no keys]'; - if (current.stacktrace || last.stacktrace) { - return isSameStacktrace(current.stacktrace, last.stacktrace); - } else if (current.exception || last.exception) { - // Exception interface (i.e. from captureException/onerror) - return isSameException(current.exception, last.exception); - } + maxLength = typeof maxLength !== 'number' ? MAX_SERIALIZE_KEYS_LENGTH : maxLength; + if (keys[0].length >= maxLength) return keys[0]; - return true; - }, - _setBackoffState: function _setBackoffState(request) { - // If we are already in a backoff state, don't change anything - if (this._shouldBackoff()) { - return; - } + for (var usedKeys = keys.length; usedKeys > 0; usedKeys--) { + var serialized = keys.slice(0, usedKeys).join(', '); + if (serialized.length > maxLength) continue; + if (usedKeys === keys.length) return serialized; + return serialized + '\u2026'; + } - var status = request.status; // 400 - project_id doesn't exist or some other fatal - // 401 - invalid/revoked dsn - // 429 - too many requests + return ''; +} - if (!(status === 400 || status === 401 || status === 429)) return; - var retry; +function sanitize(input, sanitizeKeys) { + if (!isArray(sanitizeKeys) || (isArray(sanitizeKeys) && sanitizeKeys.length === 0)) + return input; - try { - // If Retry-After is not in Access-Control-Expose-Headers, most - // browsers will throw an exception trying to access it - if (supportsFetch()) { - retry = request.headers.get('Retry-After'); - } else { - retry = request.getResponseHeader('Retry-After'); - } // Retry-After is returned in seconds + var sanitizeRegExp = joinRegExp(sanitizeKeys); + var sanitizeMask = '********'; + var safeInput; + try { + safeInput = JSON.parse(stringify(input)); + } catch (o_O) { + return input; + } - retry = parseInt(retry, 10) * 1000; - } catch (e) { - /* eslint no-empty:0 */ + function sanitizeWorker(workerInput) { + if (isArray(workerInput)) { + return workerInput.map(function(val) { + return sanitizeWorker(val); + }); } - this._backoffDuration = retry ? // If Sentry server returned a Retry-After value, use it - retry : // Otherwise, double the last backoff duration (starts at 1 sec) - this._backoffDuration * 2 || 1000; - this._backoffStart = now(); - }, - _send: function _send(data) { - var globalOptions = this._globalOptions; - - var baseData = { - project: this._globalProject, - logger: globalOptions.logger, - platform: 'javascript' - }, - httpData = this._getHttpData(); - - if (httpData) { - baseData.request = httpData; - } // HACK: delete `trimHeadFrames` to prevent from appearing in outbound payload - + if (isPlainObject(workerInput)) { + return Object.keys(workerInput).reduce(function(acc, k) { + if (sanitizeRegExp.test(k)) { + acc[k] = sanitizeMask; + } else { + acc[k] = sanitizeWorker(workerInput[k]); + } + return acc; + }, {}); + } - if (data.trimHeadFrames) delete data.trimHeadFrames; - data = objectMerge(baseData, data); // Merge in the tags and extra separately since objectMerge doesn't handle a deep merge + return workerInput; + } - data.tags = objectMerge(objectMerge({}, this._globalContext.tags), data.tags); - data.extra = objectMerge(objectMerge({}, this._globalContext.extra), data.extra); // Send along our own collected metadata with extra + return sanitizeWorker(safeInput); +} - data.extra['session:duration'] = now() - this._startTime; +module.exports = { + isObject: isObject, + isError: isError, + isErrorEvent: isErrorEvent, + isUndefined: isUndefined, + isFunction: isFunction, + isPlainObject: isPlainObject, + isString: isString, + isArray: isArray, + isEmptyObject: isEmptyObject, + supportsErrorEvent: supportsErrorEvent, + supportsFetch: supportsFetch, + supportsReferrerPolicy: supportsReferrerPolicy, + supportsPromiseRejectionEvent: supportsPromiseRejectionEvent, + wrappedCallback: wrappedCallback, + each: each, + objectMerge: objectMerge, + truncate: truncate, + objectFrozen: objectFrozen, + hasKey: hasKey, + joinRegExp: joinRegExp, + urlencode: urlencode, + uuid4: uuid4, + htmlTreeAsString: htmlTreeAsString, + htmlElementAsString: htmlElementAsString, + isSameException: isSameException, + isSameStacktrace: isSameStacktrace, + parseUrl: parseUrl, + fill: fill, + safeJoin: safeJoin, + serializeException: serializeException, + serializeKeysForMessage: serializeKeysForMessage, + sanitize: sanitize +}; - if (this._breadcrumbs && this._breadcrumbs.length > 0) { - // intentionally make shallow copy so that additions - // to breadcrumbs aren't accidentally sent in this request - data.breadcrumbs = { - values: [].slice.call(this._breadcrumbs, 0) - }; - } +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"8":8}],7:[function(_dereq_,module,exports){ +(function (global){ +var utils = _dereq_(6); - if (this._globalContext.user) { - // sentry.interfaces.User - data.user = this._globalContext.user; - } // Include the environment if it's defined in globalOptions +/* + TraceKit - Cross brower stack traces + This was originally forked from github.com/occ/TraceKit, but has since been + largely re-written and is now maintained as part of raven-js. Tests for + this are in test/vendor. - if (globalOptions.environment) data.environment = globalOptions.environment; // Include the release if it's defined in globalOptions + MIT license +*/ - if (globalOptions.release) data.release = globalOptions.release; // Include server_name if it's defined in globalOptions +var TraceKit = { + collectWindowErrors: true, + debug: false +}; - if (globalOptions.serverName) data.server_name = globalOptions.serverName; // Cleanup empty properties before sending them to the server +// This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) +var _window = + typeof window !== 'undefined' + ? window + : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; - Object.keys(data).forEach(function (key) { - if (data[key] == null || data[key] === '' || isEmptyObject(data[key])) { - delete data[key]; - } - }); +// global reference to slice +var _slice = [].slice; +var UNKNOWN_FUNCTION = '?'; - if (isFunction(globalOptions.dataCallback)) { - data = globalOptions.dataCallback(data) || data; - } // Why?????????? +// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error#Error_types +var ERROR_TYPES_RE = /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/; +function getLocationHref() { + if (typeof document === 'undefined' || document.location == null) return ''; - if (!data || isEmptyObject(data)) { - return; - } // Check if the request should be filtered or not + return document.location.href; +} +/** + * TraceKit.report: cross-browser processing of unhandled exceptions + * + * Syntax: + * TraceKit.report.subscribe(function(stackInfo) { ... }) + * TraceKit.report.unsubscribe(function(stackInfo) { ... }) + * TraceKit.report(exception) + * try { ...code... } catch(ex) { TraceKit.report(ex); } + * + * Supports: + * - Firefox: full stack trace with line numbers, plus column number + * on top frame; column number is not guaranteed + * - Opera: full stack trace with line and column numbers + * - Chrome: full stack trace with line and column numbers + * - Safari: line and column number for the top frame only; some frames + * may be missing, and column number is not guaranteed + * - IE: line and column number for the top frame only; some frames + * may be missing, and column number is not guaranteed + * + * In theory, TraceKit should work on all of the following versions: + * - IE5.5+ (only 8.0 tested) + * - Firefox 0.9+ (only 3.5+ tested) + * - Opera 7+ (only 10.50 tested; versions 9 and earlier may require + * Exceptions Have Stacktrace to be enabled in opera:config) + * - Safari 3+ (only 4+ tested) + * - Chrome 1+ (only 5+ tested) + * - Konqueror 3.5+ (untested) + * + * Requires TraceKit.computeStackTrace. + * + * Tries to catch all unhandled exceptions and report them to the + * subscribed handlers. Please note that TraceKit.report will rethrow the + * exception. This is REQUIRED in order to get a useful stack trace in IE. + * If the exception does not reach the top of the browser, you will only + * get a stack trace from the point where TraceKit.report was called. + * + * Handlers receive a stackInfo object as described in the + * TraceKit.computeStackTrace docs. + */ +TraceKit.report = (function reportModuleWrapper() { + var handlers = [], + lastArgs = null, + lastException = null, + lastExceptionStack = null; - if (isFunction(globalOptions.shouldSendCallback) && !globalOptions.shouldSendCallback(data)) { - return; - } // Backoff state: Sentry server previously responded w/ an error (e.g. 429 - too many requests), - // so drop requests until "cool-off" period has elapsed. + /** + * Add a crash handler. + * @param {Function} handler + */ + function subscribe(handler) { + installGlobalHandler(); + handlers.push(handler); + } + /** + * Remove a crash handler. + * @param {Function} handler + */ + function unsubscribe(handler) { + for (var i = handlers.length - 1; i >= 0; --i) { + if (handlers[i] === handler) { + handlers.splice(i, 1); + } + } + } - if (this._shouldBackoff()) { - this._logDebug('warn', 'Raven dropped error due to backoff: ', data); + /** + * Remove all crash handlers. + */ + function unsubscribeAll() { + uninstallGlobalHandler(); + handlers = []; + } + /** + * Dispatch stack information to all handlers. + * @param {Object.} stack + */ + function notifyHandlers(stack, isWindowError) { + var exception = null; + if (isWindowError && !TraceKit.collectWindowErrors) { return; } - - if (typeof globalOptions.sampleRate === 'number') { - if (Math.random() < globalOptions.sampleRate) { - this._sendProcessedPayload(data); + for (var i in handlers) { + if (handlers.hasOwnProperty(i)) { + try { + handlers[i].apply(null, [stack].concat(_slice.call(arguments, 2))); + } catch (inner) { + exception = inner; + } } - } else { - this._sendProcessedPayload(data); } - }, - _getUuid: function _getUuid() { - return uuid4(); - }, - _sendProcessedPayload: function _sendProcessedPayload(data, callback) { - var self = this; - var globalOptions = this._globalOptions; - if (!this.isSetup()) return; // Try and clean up the packet before sending by truncating long values - data = this._trimPacket(data); // ideally duplicate error testing should occur *before* dataCallback/shouldSendCallback, - // but this would require copying an un-truncated copy of the data packet, which can be - // arbitrarily deep (extra_data) -- could be worthwhile? will revisit + if (exception) { + throw exception; + } + } - if (!this._globalOptions.allowDuplicates && this._isRepeatData(data)) { - this._logDebug('warn', 'Raven dropped repeat event: ', data); + var _oldOnerrorHandler, _onErrorHandlerInstalled; - return; - } // Send along an event_id if not explicitly passed. - // This event_id can be used to reference the error within Sentry itself. - // Set lastEventId after we know the error should actually be sent + /** + * Ensures all global unhandled exceptions are recorded. + * Supported by Gecko and IE. + * @param {string} msg Error message. + * @param {string} url URL of script that generated the exception. + * @param {(number|string)} lineNo The line number at which the error + * occurred. + * @param {?(number|string)} colNo The column number at which the error + * occurred. + * @param {?Error} ex The actual Error object. + */ + function traceKitWindowOnError(msg, url, lineNo, colNo, ex) { + var stack = null; + // If 'ex' is ErrorEvent, get real Error from inside + var exception = utils.isErrorEvent(ex) ? ex.error : ex; + // If 'msg' is ErrorEvent, get real message from inside + var message = utils.isErrorEvent(msg) ? msg.message : msg; + if (lastExceptionStack) { + TraceKit.computeStackTrace.augmentStackTraceWithInitialElement( + lastExceptionStack, + url, + lineNo, + message + ); + processLastException(); + } else if (exception && utils.isError(exception)) { + // non-string `exception` arg; attempt to extract stack trace - this._lastEventId = data.event_id || (data.event_id = this._getUuid()); // Store outbound payload after trim + // New chrome and blink send along a real error object + // Let's just report that like a normal error. + // See: https://mikewest.org/2013/08/debugging-runtime-errors-with-window-onerror + stack = TraceKit.computeStackTrace(exception); + notifyHandlers(stack, true); + } else { + var location = { + url: url, + line: lineNo, + column: colNo + }; - this._lastData = data; + var name = undefined; + var groups; - this._logDebug('debug', 'Raven about to send:', data); + if ({}.toString.call(message) === '[object String]') { + var groups = message.match(ERROR_TYPES_RE); + if (groups) { + name = groups[1]; + message = groups[2]; + } + } - var auth = { - sentry_version: '7', - sentry_client: 'raven-js/' + this.VERSION, - sentry_key: this._globalKey - }; + location.func = UNKNOWN_FUNCTION; - if (this._globalSecret) { - auth.sentry_secret = this._globalSecret; + stack = { + name: name, + message: message, + url: getLocationHref(), + stack: [location] + }; + notifyHandlers(stack, true); } - var exception = data.exception && data.exception.values[0]; // only capture 'sentry' breadcrumb is autoBreadcrumbs is truthy + if (_oldOnerrorHandler) { + return _oldOnerrorHandler.apply(this, arguments); + } - if (this._globalOptions.autoBreadcrumbs && this._globalOptions.autoBreadcrumbs.sentry) { - this.captureBreadcrumb({ - category: 'sentry', - message: exception ? (exception.type ? exception.type + ': ' : '') + exception.value : data.message, - event_id: data.event_id, - level: data.level || 'error' // presume error unless specified + return false; + } - }); + function installGlobalHandler() { + if (_onErrorHandlerInstalled) { + return; } + _oldOnerrorHandler = _window.onerror; + _window.onerror = traceKitWindowOnError; + _onErrorHandlerInstalled = true; + } - var url = this._globalEndpoint; + function uninstallGlobalHandler() { + if (!_onErrorHandlerInstalled) { + return; + } + _window.onerror = _oldOnerrorHandler; + _onErrorHandlerInstalled = false; + _oldOnerrorHandler = undefined; + } - (globalOptions.transport || this._makeRequest).call(this, { + function processLastException() { + var _lastExceptionStack = lastExceptionStack, + _lastArgs = lastArgs; + lastArgs = null; + lastExceptionStack = null; + lastException = null; + notifyHandlers.apply(null, [_lastExceptionStack, false].concat(_lastArgs)); + } + + /** + * Reports an unhandled Error to TraceKit. + * @param {Error} ex + * @param {?boolean} rethrow If false, do not re-throw the exception. + * Only used for window.onerror to not cause an infinite loop of + * rethrowing. + */ + function report(ex, rethrow) { + var args = _slice.call(arguments, 1); + if (lastExceptionStack) { + if (lastException === ex) { + return; // already caught by an inner catch block, ignore + } else { + processLastException(); + } + } + + var stack = TraceKit.computeStackTrace(ex); + lastExceptionStack = stack; + lastException = ex; + lastArgs = args; + + // If the stack trace is incomplete, wait for 2 seconds for + // slow slow IE to see if onerror occurs or not before reporting + // this exception; otherwise, we will end up with an incomplete + // stack trace + setTimeout(function() { + if (lastException === ex) { + processLastException(); + } + }, stack.incomplete ? 2000 : 0); + + if (rethrow !== false) { + throw ex; // re-throw to propagate to the top level (and cause window.onerror) + } + } + + report.subscribe = subscribe; + report.unsubscribe = unsubscribe; + report.uninstall = unsubscribeAll; + return report; +})(); + +/** + * TraceKit.computeStackTrace: cross-browser stack traces in JavaScript + * + * Syntax: + * s = TraceKit.computeStackTrace(exception) // consider using TraceKit.report instead (see below) + * Returns: + * s.name - exception name + * s.message - exception message + * s.stack[i].url - JavaScript or HTML file URL + * s.stack[i].func - function name, or empty for anonymous functions (if guessing did not work) + * s.stack[i].args - arguments passed to the function, if known + * s.stack[i].line - line number, if known + * s.stack[i].column - column number, if known + * + * Supports: + * - Firefox: full stack trace with line numbers and unreliable column + * number on top frame + * - Opera 10: full stack trace with line and column numbers + * - Opera 9-: full stack trace with line numbers + * - Chrome: full stack trace with line and column numbers + * - Safari: line and column number for the topmost stacktrace element + * only + * - IE: no line numbers whatsoever + * + * Tries to guess names of anonymous functions by looking for assignments + * in the source code. In IE and Safari, we have to guess source file names + * by searching for function bodies inside all page scripts. This will not + * work for scripts that are loaded cross-domain. + * Here be dragons: some function names may be guessed incorrectly, and + * duplicate functions may be mismatched. + * + * TraceKit.computeStackTrace should only be used for tracing purposes. + * Logging of unhandled exceptions should be done with TraceKit.report, + * which builds on top of TraceKit.computeStackTrace and provides better + * IE support by utilizing the window.onerror event to retrieve information + * about the top of the stack. + * + * Note: In IE and Safari, no stack trace is recorded on the Error object, + * so computeStackTrace instead walks its *own* chain of callers. + * This means that: + * * in Safari, some methods may be missing from the stack trace; + * * in IE, the topmost function in the stack trace will always be the + * caller of computeStackTrace. + * + * This is okay for tracing (because you are likely to be calling + * computeStackTrace from the function you want to be the topmost element + * of the stack trace anyway), but not okay for logging unhandled + * exceptions (because your catch block will likely be far away from the + * inner function that actually caused the exception). + * + */ +TraceKit.computeStackTrace = (function computeStackTraceWrapper() { + // Contents of Exception in various browsers. + // + // SAFARI: + // ex.message = Can't find variable: qq + // ex.line = 59 + // ex.sourceId = 580238192 + // ex.sourceURL = http://... + // ex.expressionBeginOffset = 96 + // ex.expressionCaretOffset = 98 + // ex.expressionEndOffset = 98 + // ex.name = ReferenceError + // + // FIREFOX: + // ex.message = qq is not defined + // ex.fileName = http://... + // ex.lineNumber = 59 + // ex.columnNumber = 69 + // ex.stack = ...stack trace... (see the example below) + // ex.name = ReferenceError + // + // CHROME: + // ex.message = qq is not defined + // ex.name = ReferenceError + // ex.type = not_defined + // ex.arguments = ['aa'] + // ex.stack = ...stack trace... + // + // INTERNET EXPLORER: + // ex.message = ... + // ex.name = ReferenceError + // + // OPERA: + // ex.message = ...message... (see the example below) + // ex.name = ReferenceError + // ex.opera#sourceloc = 11 (pretty much useless, duplicates the info in ex.message) + // ex.stacktrace = n/a; see 'opera:config#UserPrefs|Exceptions Have Stacktrace' + + /** + * Computes stack trace information from the stack property. + * Chrome and Gecko use this property. + * @param {Error} ex + * @return {?Object.} Stack trace information. + */ + function computeStackTraceFromStackProp(ex) { + if (typeof ex.stack === 'undefined' || !ex.stack) return; + + var chrome = /^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i; + var winjs = /^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i; + // NOTE: blob urls are now supposed to always have an origin, therefore it's format + // which is `blob:http://url/path/with-some-uuid`, is matched by `blob.*?:\/` as well + var gecko = /^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i; + // Used to additionally parse URL/line/column from eval frames + var geckoEval = /(\S+) line (\d+)(?: > eval line \d+)* > eval/i; + var chromeEval = /\((\S*)(?::(\d+))(?::(\d+))\)/; + var lines = ex.stack.split('\n'); + var stack = []; + var submatch; + var parts; + var element; + var reference = /^(.*) is undefined$/.exec(ex.message); + + for (var i = 0, j = lines.length; i < j; ++i) { + if ((parts = chrome.exec(lines[i]))) { + var isNative = parts[2] && parts[2].indexOf('native') === 0; // start of line + var isEval = parts[2] && parts[2].indexOf('eval') === 0; // start of line + if (isEval && (submatch = chromeEval.exec(parts[2]))) { + // throw out eval line/column and use top-most line/column number + parts[2] = submatch[1]; // url + parts[3] = submatch[2]; // line + parts[4] = submatch[3]; // column + } + element = { + url: !isNative ? parts[2] : null, + func: parts[1] || UNKNOWN_FUNCTION, + args: isNative ? [parts[2]] : [], + line: parts[3] ? +parts[3] : null, + column: parts[4] ? +parts[4] : null + }; + } else if ((parts = winjs.exec(lines[i]))) { + element = { + url: parts[2], + func: parts[1] || UNKNOWN_FUNCTION, + args: [], + line: +parts[3], + column: parts[4] ? +parts[4] : null + }; + } else if ((parts = gecko.exec(lines[i]))) { + var isEval = parts[3] && parts[3].indexOf(' > eval') > -1; + if (isEval && (submatch = geckoEval.exec(parts[3]))) { + // throw out eval line/column and use top-most line number + parts[3] = submatch[1]; + parts[4] = submatch[2]; + parts[5] = null; // no column when eval + } else if (i === 0 && !parts[5] && typeof ex.columnNumber !== 'undefined') { + // FireFox uses this awesome columnNumber property for its top frame + // Also note, Firefox's column number is 0-based and everything else expects 1-based, + // so adding 1 + // NOTE: this hack doesn't work if top-most frame is eval + stack[0].column = ex.columnNumber + 1; + } + element = { + url: parts[3], + func: parts[1] || UNKNOWN_FUNCTION, + args: parts[2] ? parts[2].split(',') : [], + line: parts[4] ? +parts[4] : null, + column: parts[5] ? +parts[5] : null + }; + } else { + continue; + } + + if (!element.func && element.line) { + element.func = UNKNOWN_FUNCTION; + } + + stack.push(element); + } + + if (!stack.length) { + return null; + } + + return { + name: ex.name, + message: ex.message, + url: getLocationHref(), + stack: stack + }; + } + + /** + * Adds information about the first frame to incomplete stack traces. + * Safari and IE require this to get complete data on the first frame. + * @param {Object.} stackInfo Stack trace information from + * one of the compute* methods. + * @param {string} url The URL of the script that caused an error. + * @param {(number|string)} lineNo The line number of the script that + * caused an error. + * @param {string=} message The error generated by the browser, which + * hopefully contains the name of the object that caused the error. + * @return {boolean} Whether or not the stack information was + * augmented. + */ + function augmentStackTraceWithInitialElement(stackInfo, url, lineNo, message) { + var initial = { url: url, - auth: auth, - data: data, - options: globalOptions, - onSuccess: function success() { - self._resetBackoff(); + line: lineNo + }; - self._triggerEvent('success', { - data: data, - src: url - }); + if (initial.url && initial.line) { + stackInfo.incomplete = false; + + if (!initial.func) { + initial.func = UNKNOWN_FUNCTION; + } + + if (stackInfo.stack.length > 0) { + if (stackInfo.stack[0].url === initial.url) { + if (stackInfo.stack[0].line === initial.line) { + return false; // already in stack trace + } else if ( + !stackInfo.stack[0].line && + stackInfo.stack[0].func === initial.func + ) { + stackInfo.stack[0].line = initial.line; + return false; + } + } + } + + stackInfo.stack.unshift(initial); + stackInfo.partial = true; + return true; + } else { + stackInfo.incomplete = true; + } + + return false; + } + + /** + * Computes stack trace information by walking the arguments.caller + * chain at the time the exception occurred. This will cause earlier + * frames to be missed but is the only way to get any stack trace in + * Safari and IE. The top frame is restored by + * {@link augmentStackTraceWithInitialElement}. + * @param {Error} ex + * @return {?Object.} Stack trace information. + */ + function computeStackTraceByWalkingCallerChain(ex, depth) { + var functionName = /function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i, + stack = [], + funcs = {}, + recursion = false, + parts, + item, + source; + + for ( + var curr = computeStackTraceByWalkingCallerChain.caller; + curr && !recursion; + curr = curr.caller + ) { + if (curr === computeStackTrace || curr === TraceKit.report) { + // console.log('skipping internal function'); + continue; + } - callback && callback(); - }, - onError: function failure(error) { - self._logDebug('error', 'Raven transport failed to send: ', error); + item = { + url: null, + func: UNKNOWN_FUNCTION, + line: null, + column: null + }; - if (error.request) { - self._setBackoffState(error.request); - } + if (curr.name) { + item.func = curr.name; + } else if ((parts = functionName.exec(curr.toString()))) { + item.func = parts[1]; + } - self._triggerEvent('failure', { - data: data, - src: url - }); + if (typeof item.func === 'undefined') { + try { + item.func = parts.input.substring(0, parts.input.indexOf('{')); + } catch (e) {} + } - error = error || new Error('Raven send failed (no additional details provided)'); - callback && callback(error); + if (funcs['' + curr]) { + recursion = true; + } else { + funcs['' + curr] = true; } - }); - }, - _makeRequest: function _makeRequest(opts) { - // Auth is intentionally sent as part of query string (NOT as custom HTTP header) to avoid preflight CORS requests - var url = opts.url + '?' + urlencode(opts.auth); - var evaluatedHeaders = null; - var evaluatedFetchParameters = {}; - if (opts.options.headers) { - evaluatedHeaders = this._evaluateHash(opts.options.headers); + stack.push(item); } - if (opts.options.fetchParameters) { - evaluatedFetchParameters = this._evaluateHash(opts.options.fetchParameters); + if (depth) { + // console.log('depth is ' + depth); + // console.log('stack is ' + stack.length); + stack.splice(0, depth); } - if (supportsFetch()) { - evaluatedFetchParameters.body = stringify_1(opts.data); - var defaultFetchOptions = objectMerge({}, this._fetchDefaults); - var fetchOptions = objectMerge(defaultFetchOptions, evaluatedFetchParameters); + var result = { + name: ex.name, + message: ex.message, + url: getLocationHref(), + stack: stack + }; + augmentStackTraceWithInitialElement( + result, + ex.sourceURL || ex.fileName, + ex.line || ex.lineNumber, + ex.message || ex.description + ); + return result; + } - if (evaluatedHeaders) { - fetchOptions.headers = evaluatedHeaders; - } + /** + * Computes a stack trace for an exception. + * @param {Error} ex + * @param {(string|number)=} depth + */ + function computeStackTrace(ex, depth) { + var stack = null; + depth = depth == null ? 0 : +depth; - return _window$1.fetch(url, fetchOptions).then(function (response) { - if (response.ok) { - opts.onSuccess && opts.onSuccess(); - } else { - var error = new Error('Sentry error code: ' + response.status); // It's called request only to keep compatibility with XHR interface - // and not add more redundant checks in setBackoffState method + try { + stack = computeStackTraceFromStackProp(ex); + if (stack) { + return stack; + } + } catch (e) { + if (TraceKit.debug) { + throw e; + } + } - error.request = response; - opts.onError && opts.onError(error); - } - })['catch'](function () { - opts.onError && opts.onError(new Error('Sentry error code: network unavailable')); - }); + try { + stack = computeStackTraceByWalkingCallerChain(ex, depth + 1); + if (stack) { + return stack; + } + } catch (e) { + if (TraceKit.debug) { + throw e; + } } + return { + name: ex.name, + message: ex.message, + url: getLocationHref() + }; + } - var request = _window$1.XMLHttpRequest && new _window$1.XMLHttpRequest(); - if (!request) return; // if browser doesn't support CORS (e.g. IE7), we are out of luck + computeStackTrace.augmentStackTraceWithInitialElement = augmentStackTraceWithInitialElement; + computeStackTrace.computeStackTraceFromStackProp = computeStackTraceFromStackProp; - var hasCORS = 'withCredentials' in request || typeof XDomainRequest !== 'undefined'; - if (!hasCORS) return; + return computeStackTrace; +})(); - if ('withCredentials' in request) { - request.onreadystatechange = function () { - if (request.readyState !== 4) { - return; - } else if (request.status === 200) { - opts.onSuccess && opts.onSuccess(); - } else if (opts.onError) { - var err = new Error('Sentry error code: ' + request.status); - err.request = request; - opts.onError(err); - } - }; - } else { - request = new XDomainRequest(); // xdomainrequest cannot go http -> https (or vice versa), - // so always use protocol relative +module.exports = TraceKit; - url = url.replace(/^https?:/, ''); // onreadystatechange not supported by XDomainRequest +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"6":6}],8:[function(_dereq_,module,exports){ +/* + json-stringify-safe + Like JSON.stringify, but doesn't throw on circular references. - if (opts.onSuccess) { - request.onload = opts.onSuccess; - } + Originally forked from https://github.com/isaacs/json-stringify-safe + version 5.0.1 on 3/8/2017 and modified to handle Errors serialization + and IE8 compatibility. Tests for this are in test/vendor. - if (opts.onError) { - request.onerror = function () { - var err = new Error('Sentry error code: XDomainRequest'); - err.request = request; - opts.onError(err); - }; - } - } + ISC license: https://github.com/isaacs/json-stringify-safe/blob/master/LICENSE +*/ - request.open('POST', url); +exports = module.exports = stringify; +exports.getSerialize = serializer; - if (evaluatedHeaders) { - each(evaluatedHeaders, function (key, value) { - request.setRequestHeader(key, value); - }); - } +function indexOf(haystack, needle) { + for (var i = 0; i < haystack.length; ++i) { + if (haystack[i] === needle) return i; + } + return -1; +} - request.send(stringify_1(opts.data)); - }, - _evaluateHash: function _evaluateHash(hash) { - var evaluated = {}; +function stringify(obj, replacer, spaces, cycleReplacer) { + return JSON.stringify(obj, serializer(replacer, cycleReplacer), spaces); +} - for (var key in hash) { - if (hash.hasOwnProperty(key)) { - var value = hash[key]; - evaluated[key] = typeof value === 'function' ? value() : value; - } - } +// https://github.com/ftlabs/js-abbreviate/blob/fa709e5f139e7770a71827b1893f22418097fbda/index.js#L95-L106 +function stringifyError(value) { + var err = { + // These properties are implemented as magical getters and don't show up in for in + stack: value.stack, + message: value.message, + name: value.name + }; - return evaluated; - }, - _logDebug: function _logDebug(level) { - if (this._originalConsoleMethods[level] && this.debug) { - // In IE<10 console methods do not have their own 'apply' method - Function.prototype.apply.call(this._originalConsoleMethods[level], this._originalConsole, [].slice.call(arguments, 1)); - } - }, - _mergeContext: function _mergeContext(key, context) { - if (isUndefined(context)) { - delete this._globalContext[key]; - } else { - this._globalContext[key] = objectMerge(this._globalContext[key] || {}, context); + for (var i in value) { + if (Object.prototype.hasOwnProperty.call(value, i)) { + err[i] = value[i]; } } -}; // Deprecations -Raven$1.prototype.setUser = Raven$1.prototype.setUserContext; -Raven$1.prototype.setReleaseContext = Raven$1.prototype.setRelease; -var raven = Raven$1; + return err; +} -/** - * Enforces a single instance of the Raven client, and the - * main entry point for Raven. If you are a consumer of the - * Raven library, you SHOULD load this file (vs raven.js). - **/ -// This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) +function serializer(replacer, cycleReplacer) { + var stack = []; + var keys = []; -var _window = typeof window !== 'undefined' ? window : typeof commonjsGlobal !== 'undefined' ? commonjsGlobal : typeof self !== 'undefined' ? self : {}; + if (cycleReplacer == null) { + cycleReplacer = function(key, value) { + if (stack[0] === value) { + return '[Circular ~]'; + } + return '[Circular ~.' + keys.slice(0, indexOf(stack, value)).join('.') + ']'; + }; + } -var _Raven = _window.Raven; -var Raven = new raven(); -/* - * Allow multiple versions of Raven to be installed. - * Strip Raven from the global context and returns the instance. - * - * @return {Raven} - */ + return function(key, value) { + if (stack.length > 0) { + var thisPos = indexOf(stack, this); + ~thisPos ? stack.splice(thisPos + 1) : stack.push(this); + ~thisPos ? keys.splice(thisPos, Infinity, key) : keys.push(key); -Raven.noConflict = function () { - _window.Raven = _Raven; - return Raven; -}; + if (~indexOf(stack, value)) { + value = cycleReplacer.call(this, key, value); + } + } else { + stack.push(value); + } -Raven.afterLoad(); -var singleton = Raven; + return replacer == null + ? value instanceof Error ? stringifyError(value) : value + : replacer.call(this, key, value); + }; +} -/** - * Vue.js 2.0 plugin +},{}],9:[function(_dereq_,module,exports){ +/* + * JavaScript MD5 + * https://github.com/blueimp/JavaScript-MD5 * + * Copyright 2011, Sebastian Tschan + * https://blueimp.net + * + * Licensed under the MIT license: + * https://opensource.org/licenses/MIT + * + * Based on + * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message + * Digest Algorithm, as defined in RFC 1321. + * Version 2.2 Copyright (C) Paul Johnston 1999 - 2009 + * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet + * Distributed under the BSD License + * See http://pajhome.org.uk/crypt/md5 for more info. */ -function formatComponentName(vm) { - if (vm.$root === vm) { - return 'root instance'; - } - var name = vm._isVue ? vm.$options.name || vm.$options._componentTag : vm.name; - return (name ? 'component <' + name + '>' : 'anonymous component') + (vm._isVue && vm.$options.__file ? ' at ' + vm.$options.__file : ''); +/* +* Add integers, wrapping at 2^32. This uses 16-bit operations internally +* to work around bugs in some JS interpreters. +*/ +function safeAdd(x, y) { + var lsw = (x & 0xffff) + (y & 0xffff); + var msw = (x >> 16) + (y >> 16) + (lsw >> 16); + return (msw << 16) | (lsw & 0xffff); } -function vuePlugin(Raven, Vue) { - Vue = Vue || window.Vue; // quit if Vue isn't on the page +/* +* Bitwise rotate a 32-bit number to the left. +*/ +function bitRotateLeft(num, cnt) { + return (num << cnt) | (num >>> (32 - cnt)); +} - if (!Vue || !Vue.config) return; - var _oldOnError = Vue.config.errorHandler; +/* +* These functions implement the four basic operations the algorithm uses. +*/ +function md5cmn(q, a, b, x, s, t) { + return safeAdd(bitRotateLeft(safeAdd(safeAdd(a, q), safeAdd(x, t)), s), b); +} +function md5ff(a, b, c, d, x, s, t) { + return md5cmn((b & c) | (~b & d), a, b, x, s, t); +} +function md5gg(a, b, c, d, x, s, t) { + return md5cmn((b & d) | (c & ~d), a, b, x, s, t); +} +function md5hh(a, b, c, d, x, s, t) { + return md5cmn(b ^ c ^ d, a, b, x, s, t); +} +function md5ii(a, b, c, d, x, s, t) { + return md5cmn(c ^ (b | ~d), a, b, x, s, t); +} - Vue.config.errorHandler = function VueErrorHandler(error, vm, info) { - var metaData = {}; // vm and lifecycleHook are not always available +/* +* Calculate the MD5 of an array of little-endian words, and a bit length. +*/ +function binlMD5(x, len) { + /* append padding */ + x[len >> 5] |= 0x80 << (len % 32); + x[(((len + 64) >>> 9) << 4) + 14] = len; + + var i; + var olda; + var oldb; + var oldc; + var oldd; + var a = 1732584193; + var b = -271733879; + var c = -1732584194; + var d = 271733878; + + for (i = 0; i < x.length; i += 16) { + olda = a; + oldb = b; + oldc = c; + oldd = d; + + a = md5ff(a, b, c, d, x[i], 7, -680876936); + d = md5ff(d, a, b, c, x[i + 1], 12, -389564586); + c = md5ff(c, d, a, b, x[i + 2], 17, 606105819); + b = md5ff(b, c, d, a, x[i + 3], 22, -1044525330); + a = md5ff(a, b, c, d, x[i + 4], 7, -176418897); + d = md5ff(d, a, b, c, x[i + 5], 12, 1200080426); + c = md5ff(c, d, a, b, x[i + 6], 17, -1473231341); + b = md5ff(b, c, d, a, x[i + 7], 22, -45705983); + a = md5ff(a, b, c, d, x[i + 8], 7, 1770035416); + d = md5ff(d, a, b, c, x[i + 9], 12, -1958414417); + c = md5ff(c, d, a, b, x[i + 10], 17, -42063); + b = md5ff(b, c, d, a, x[i + 11], 22, -1990404162); + a = md5ff(a, b, c, d, x[i + 12], 7, 1804603682); + d = md5ff(d, a, b, c, x[i + 13], 12, -40341101); + c = md5ff(c, d, a, b, x[i + 14], 17, -1502002290); + b = md5ff(b, c, d, a, x[i + 15], 22, 1236535329); + + a = md5gg(a, b, c, d, x[i + 1], 5, -165796510); + d = md5gg(d, a, b, c, x[i + 6], 9, -1069501632); + c = md5gg(c, d, a, b, x[i + 11], 14, 643717713); + b = md5gg(b, c, d, a, x[i], 20, -373897302); + a = md5gg(a, b, c, d, x[i + 5], 5, -701558691); + d = md5gg(d, a, b, c, x[i + 10], 9, 38016083); + c = md5gg(c, d, a, b, x[i + 15], 14, -660478335); + b = md5gg(b, c, d, a, x[i + 4], 20, -405537848); + a = md5gg(a, b, c, d, x[i + 9], 5, 568446438); + d = md5gg(d, a, b, c, x[i + 14], 9, -1019803690); + c = md5gg(c, d, a, b, x[i + 3], 14, -187363961); + b = md5gg(b, c, d, a, x[i + 8], 20, 1163531501); + a = md5gg(a, b, c, d, x[i + 13], 5, -1444681467); + d = md5gg(d, a, b, c, x[i + 2], 9, -51403784); + c = md5gg(c, d, a, b, x[i + 7], 14, 1735328473); + b = md5gg(b, c, d, a, x[i + 12], 20, -1926607734); + + a = md5hh(a, b, c, d, x[i + 5], 4, -378558); + d = md5hh(d, a, b, c, x[i + 8], 11, -2022574463); + c = md5hh(c, d, a, b, x[i + 11], 16, 1839030562); + b = md5hh(b, c, d, a, x[i + 14], 23, -35309556); + a = md5hh(a, b, c, d, x[i + 1], 4, -1530992060); + d = md5hh(d, a, b, c, x[i + 4], 11, 1272893353); + c = md5hh(c, d, a, b, x[i + 7], 16, -155497632); + b = md5hh(b, c, d, a, x[i + 10], 23, -1094730640); + a = md5hh(a, b, c, d, x[i + 13], 4, 681279174); + d = md5hh(d, a, b, c, x[i], 11, -358537222); + c = md5hh(c, d, a, b, x[i + 3], 16, -722521979); + b = md5hh(b, c, d, a, x[i + 6], 23, 76029189); + a = md5hh(a, b, c, d, x[i + 9], 4, -640364487); + d = md5hh(d, a, b, c, x[i + 12], 11, -421815835); + c = md5hh(c, d, a, b, x[i + 15], 16, 530742520); + b = md5hh(b, c, d, a, x[i + 2], 23, -995338651); + + a = md5ii(a, b, c, d, x[i], 6, -198630844); + d = md5ii(d, a, b, c, x[i + 7], 10, 1126891415); + c = md5ii(c, d, a, b, x[i + 14], 15, -1416354905); + b = md5ii(b, c, d, a, x[i + 5], 21, -57434055); + a = md5ii(a, b, c, d, x[i + 12], 6, 1700485571); + d = md5ii(d, a, b, c, x[i + 3], 10, -1894986606); + c = md5ii(c, d, a, b, x[i + 10], 15, -1051523); + b = md5ii(b, c, d, a, x[i + 1], 21, -2054922799); + a = md5ii(a, b, c, d, x[i + 8], 6, 1873313359); + d = md5ii(d, a, b, c, x[i + 15], 10, -30611744); + c = md5ii(c, d, a, b, x[i + 6], 15, -1560198380); + b = md5ii(b, c, d, a, x[i + 13], 21, 1309151649); + a = md5ii(a, b, c, d, x[i + 4], 6, -145523070); + d = md5ii(d, a, b, c, x[i + 11], 10, -1120210379); + c = md5ii(c, d, a, b, x[i + 2], 15, 718787259); + b = md5ii(b, c, d, a, x[i + 9], 21, -343485551); + + a = safeAdd(a, olda); + b = safeAdd(b, oldb); + c = safeAdd(c, oldc); + d = safeAdd(d, oldd); + } + return [a, b, c, d]; +} - if (Object.prototype.toString.call(vm) === '[object Object]') { - metaData.componentName = formatComponentName(vm); - metaData.propsData = vm.$options.propsData; - } +/* +* Convert an array of little-endian words to a string +*/ +function binl2rstr(input) { + var i; + var output = ''; + var length32 = input.length * 32; + for (i = 0; i < length32; i += 8) { + output += String.fromCharCode((input[i >> 5] >>> (i % 32)) & 0xff); + } + return output; +} - if (typeof info !== 'undefined') { - metaData.lifecycleHook = info; - } +/* +* Convert a raw string to an array of little-endian words +* Characters >255 have their high-byte silently ignored. +*/ +function rstr2binl(input) { + var i; + var output = []; + output[(input.length >> 2) - 1] = undefined; + for (i = 0; i < output.length; i += 1) { + output[i] = 0; + } + var length8 = input.length * 8; + for (i = 0; i < length8; i += 8) { + output[i >> 5] |= (input.charCodeAt(i / 8) & 0xff) << (i % 32); + } + return output; +} - Raven.captureException(error, { - extra: metaData - }); +/* +* Calculate the MD5 of a raw string +*/ +function rstrMD5(s) { + return binl2rstr(binlMD5(rstr2binl(s), s.length * 8)); +} - if (typeof _oldOnError === 'function') { - _oldOnError.call(this, error, vm, info); - } - }; +/* +* Calculate the HMAC-MD5, of a key and some data (raw strings) +*/ +function rstrHMACMD5(key, data) { + var i; + var bkey = rstr2binl(key); + var ipad = []; + var opad = []; + var hash; + ipad[15] = opad[15] = undefined; + if (bkey.length > 16) { + bkey = binlMD5(bkey, key.length * 8); + } + for (i = 0; i < 16; i += 1) { + ipad[i] = bkey[i] ^ 0x36363636; + opad[i] = bkey[i] ^ 0x5c5c5c5c; + } + hash = binlMD5(ipad.concat(rstr2binl(data)), 512 + data.length * 8); + return binl2rstr(binlMD5(opad.concat(hash), 512 + 128)); +} + +/* +* Convert a raw string to a hex string +*/ +function rstr2hex(input) { + var hexTab = '0123456789abcdef'; + var output = ''; + var x; + var i; + for (i = 0; i < input.length; i += 1) { + x = input.charCodeAt(i); + output += hexTab.charAt((x >>> 4) & 0x0f) + hexTab.charAt(x & 0x0f); + } + return output; } -var vue$2 = vuePlugin; +/* +* Encode a string as utf-8 +*/ +function str2rstrUTF8(input) { + return unescape(encodeURIComponent(input)); +} -/* This file was generated by './scripts/generate-plugin-combinations.js'! */ +/* +* Take string arguments and return either raw or hex encoded strings +*/ +function rawMD5(s) { + return rstrMD5(str2rstrUTF8(s)); +} +function hexMD5(s) { + return rstr2hex(rawMD5(s)); +} +function rawHMACMD5(k, d) { + return rstrHMACMD5(str2rstrUTF8(k), str2rstrUTF8(d)); +} +function hexHMACMD5(k, d) { + return rstr2hex(rawHMACMD5(k, d)); +} -singleton.addPlugin(vue$2); -var vue = {}; +function md5(string, key, raw) { + if (!key) { + if (!raw) { + return hexMD5(string); + } + return rawMD5(string); + } + if (!raw) { + return hexHMACMD5(key, string); + } + return rawHMACMD5(key, string); +} -return vue; +module.exports = md5; -}))); +},{}]},{},[5,1])(5) +}); \ No newline at end of file diff --git a/dist/vue/raven.min.js b/dist/vue/raven.min.js index 2289ae020b06..a65486d3d3db 100644 --- a/dist/vue/raven.min.js +++ b/dist/vue/raven.min.js @@ -1,3 +1,4 @@ -/*! Raven.js 3.22.2 (1b6187b) | github.com/getsentry/raven-js */ -!function(a,b){"object"==typeof exports&&"undefined"!=typeof module?module.exports=b():"function"==typeof define&&define.amd?define(b):a.Raven=b()}(this,function(){"use strict";function a(a,b){return b={exports:{}},a(b,b.exports),b.exports}function b(a){return(b="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(a){return typeof a}:function(a){return a&&"function"==typeof Symbol&&a.constructor===Symbol&&a!==Symbol.prototype?"symbol":typeof a})(a)}function c(a){return"object"===b(a)&&null!==a}function d(a){switch({}.toString.call(a)){case"[object Error]":return!0;case"[object Exception]":return!0;case"[object DOMException]":return!0;default:return a instanceof Error}}function e(a){return l()&&"[object ErrorEvent]"==={}.toString.call(a)}function f(a){return void 0===a}function g(a){return"function"==typeof a}function h(a){return"[object Object]"===Object.prototype.toString.call(a)}function i(a){return"[object String]"===Object.prototype.toString.call(a)}function j(a){return"[object Array]"===Object.prototype.toString.call(a)}function k(a){if(!h(a))return!1;for(var b in a)if(a.hasOwnProperty(b))return!1;return!0}function l(){try{return new ErrorEvent(""),!0}catch(a){return!1}}function m(){if(!("fetch"in O))return!1;try{return new Headers,new Request(""),new Response,!0}catch(a){return!1}}function n(a){function b(b,c){var d=a(b)||b;return c?c(d)||d:d}return b}function o(a,b){var c,d;if(f(a.length))for(c in a)s(a,c)&&b.call(null,c,a[c]);else if(d=a.length)for(c=0;c ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function y(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&i(b))for(c=b.split(/\s+/),f=0;f":"anonymous component")+(a._isVue&&a.$options.__file?" at "+a.$options.__file:"")}function L(a,b){if(b=b||window.Vue,b&&b.config){var c=b.config.errorHandler;b.config.errorHandler=function(b,d,e){var f={};"[object Object]"===Object.prototype.toString.call(d)&&(f.componentName=K(d),f.propsData=d.$options.propsData),"undefined"!=typeof e&&(f.lifecycleHook=e),a.captureException(b,{extra:f}),"function"==typeof c&&c.call(this,b,d,e)}}}var M="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{},N=Object.setPrototypeOf||function(a,b){return a.B=b,a},O=("object"==typeof Reflect&&Reflect.construct||function(a,b,c){var d,e=[null];return e.push.apply(e,b),d=a.bind.apply(a,e),N(new d,c.prototype)},"undefined"!=typeof window?window:"undefined"!=typeof M?M:"undefined"!=typeof self?self:{}),P={isObject:c,isError:d,isErrorEvent:e,isUndefined:f,isFunction:g,isPlainObject:h,isString:i,isArray:j,isEmptyObject:k,supportsErrorEvent:l,supportsFetch:m,wrappedCallback:n,each:o,objectMerge:p,truncate:r,objectFrozen:q,hasKey:s,joinRegExp:t,urlencode:u,uuid4:w,htmlTreeAsString:x,htmlElementAsString:y,isSameException:B,isSameStacktrace:C,parseUrl:v,fill:D,safeJoin:E},Q={collectWindowErrors:!0,debug:!1},R="undefined"!=typeof window?window:"undefined"!=typeof M?M:"undefined"!=typeof self?self:{},S=[].slice,T="?",U=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;Q.report=function(){function a(a){f(),l.push(a)}function b(a){for(var b=l.length-1;b>=0;--b)l[b]===a&&l.splice(b,1)}function c(){g(),l=[]}function d(a,b){var c=null;if(!b||Q.collectWindowErrors){for(var d in l)if(l.hasOwnProperty(d))try{l[d].apply(null,[a].concat(S.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function e(a,b,c,e,f){var g=null,i=P.isErrorEvent(f)?f.error:f,k=P.isErrorEvent(a)?a.message:a;if(o)Q.computeStackTrace.augmentStackTraceWithInitialElement(o,b,c,k),h();else if(i&&P.isError(i))g=Q.computeStackTrace(i),d(g,!0);else{var l,m={url:b,line:c,column:e},n=void 0;if("[object String]"==={}.toString.call(k)){var l=k.match(U);l&&(n=l[1],k=l[2])}m.func=T,g={name:n,message:k,url:F(),stack:[m]},d(g,!0)}return!!j&&j.apply(this,arguments)}function f(){k||(j=R.onerror,R.onerror=e,k=!0)}function g(){k&&(R.onerror=j,k=!1,j=void 0)}function h(){var a=o,b=m;m=null,o=null,n=null,d.apply(null,[a,!1].concat(b))}function i(a,b){var c=S.call(arguments,1);if(o){if(n===a)return;h()}var d=Q.computeStackTrace(a);if(o=d,n=a,m=c,setTimeout(function(){n===a&&h()},d.incomplete?2e3:0),b!==!1)throw a}var j,k,l=[],m=null,n=null,o=null;return i.subscribe=a,i.unsubscribe=b,i.uninstall=c,i}(),Q.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,d,e=/^\s*at (.*?) ?\(((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,f=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|\[native).*?|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,g=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,h=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,i=/\((\S*)(?::(\d+))(?::(\d+))\)/,j=a.stack.split("\n"),k=[],l=(/^(.*) is undefined$/.exec(a.message),0),m=j.length;l eval")>-1;o&&(b=h.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==l||c[5]||"undefined"==typeof a.columnNumber||(k[0].column=a.columnNumber+1),d={url:c[3],func:c[1]||T,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}!d.func&&d.line&&(d.func=T),k.push(d)}return k.length?{name:a.name,message:a.message,url:F(),stack:k}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=T),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,e){for(var f,g,h=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,i=[],j={},k=!1,l=c.caller;l&&!k;l=l.caller)if(l!==d&&l!==Q.report){if(g={url:null,func:T,line:null,column:null},l.name?g.func=l.name:(f=h.exec(l.toString()))&&(g.func=f[1]),"undefined"==typeof g.func)try{g.func=f.input.substring(0,f.input.indexOf("{"))}catch(m){}j[""+l]?k=!0:j[""+l]=!0,i.push(g)}e&&i.splice(0,e);var n={name:a.name,message:a.message,url:F(),stack:i};return b(n,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),n}function d(b,d){var e=null;d=null==d?0:+d;try{if(e=a(b))return e}catch(f){if(Q.debug)throw f}try{if(e=c(b,d+1))return e}catch(f){if(Q.debug)throw f}return{name:b.name,message:b.message,url:F()}}return d.augmentStackTraceWithInitialElement=b,d.computeStackTraceFromStackProp=a,d}();var V=Q,W=a(function(a,b){function c(a,b){for(var c=0;c0){var i=c(d,this);~i?d.splice(i+1):d.push(this),~i?f.splice(i,1/0,g):f.push(g),~c(d,h)&&(h=b.call(this,g,h))}else d.push(h);return null==a?h instanceof Error?e(h):h:a.call(this,g,h)}}b=a.exports=d,b.getSerialize=f});G.prototype=new Error,G.prototype.constructor=G;var X=G,Y=function(a,b,c){var d=a[b],e=a;if(b in a){var f="warn"===b?"warning":b;a[b]=function(){var a=[].slice.call(arguments),g=P.safeJoin(a," "),h={level:f,logger:"console",extra:{arguments:a}};"assert"===b?a[0]===!1&&(g="Assertion failed: "+(P.safeJoin(a.slice(1)," ")||"console.assert"),h.extra.arguments=a.slice(1),c&&c(g,h)):c&&c(g,h),d&&Function.prototype.apply.call(d,e,a)}}},Z={wrapMethod:Y},$=P.isError,_=P.isObject,aa=P.isErrorEvent,ba=P.isUndefined,ca=P.isFunction,da=P.isString,ea=P.isArray,fa=P.isEmptyObject,ga=P.each,ha=P.objectMerge,ia=P.truncate,ja=P.objectFrozen,ka=P.hasKey,la=P.joinRegExp,ma=P.urlencode,na=P.uuid4,oa=P.htmlTreeAsString,pa=P.isSameException,qa=P.isSameStacktrace,ra=P.parseUrl,sa=P.fill,ta=P.supportsFetch,ua=Z.wrapMethod,va="source protocol user pass host port path".split(" "),wa=/^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/,xa="undefined"!=typeof window?window:"undefined"!=typeof M?M:"undefined"!=typeof self?self:{},ya=xa.document,za=xa.navigator;J.prototype={VERSION:"3.22.2",debug:!1,TraceKit:V,config:function(a,b){var c=this;if(c.i)return this.C("error","Error: Raven has already been configured"),c;if(!a)return c;var d=c.m;b&&ga(b,function(a,b){"tags"===a||"extra"===a||"user"===a?c.l[a]=b:d[a]=b}),c.setDSN(a),d.ignoreErrors.push(/^Script error\.?$/),d.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/),d.ignoreErrors=la(d.ignoreErrors),d.ignoreUrls=!!d.ignoreUrls.length&&la(d.ignoreUrls),d.whitelistUrls=!!d.whitelistUrls.length&&la(d.whitelistUrls),d.includePaths=la(d.includePaths),d.maxBreadcrumbs=Math.max(0,Math.min(d.maxBreadcrumbs||100,100));var e={xhr:!0,console:!0,dom:!0,location:!0,sentry:!0},f=d.autoBreadcrumbs;"[object Object]"==={}.toString.call(f)?f=ha(e,f):f!==!1&&(f=e),d.autoBreadcrumbs=f;var g={tryCatch:!0},h=d.instrument;return"[object Object]"==={}.toString.call(h)?h=ha(g,h):h!==!1&&(h=g),d.instrument=h,V.collectWindowErrors=!!d.collectWindowErrors,c},install:function(){var a=this;return a.isSetup()&&!a.p&&(V.report.subscribe(function(){a.D.apply(a,arguments)}),a.E(),a.m.instrument&&a.m.instrument.tryCatch&&a.F(),a.m.autoBreadcrumbs&&a.G(),a.H(),a.p=!0),Error.stackTraceLimit=a.m.stackTraceLimit,this},setDSN:function(a){var b=this,c=b.I(a),d=c.path.lastIndexOf("/"),e=c.path.substr(1,d);b.J=a,b.j=c.user,b.K=c.pass&&c.pass.substr(1),b.k=c.path.substr(d+1),b.i=b.L(c),b.M=b.i+"/"+e+"api/"+b.k+"/store/",this.A()},context:function(a,b,c){return ca(a)&&(c=b||[],b=a,a=void 0),this.wrap(a,b).apply(this,c)},wrap:function(a,b,c){function d(){var d=[],f=arguments.length,g=!a||a&&a.deep!==!1;for(c&&ca(c)&&c.apply(this,arguments);f--;)d[f]=g?e.wrap(a,arguments[f]):arguments[f];try{return b.apply(this,d)}catch(h){throw e.N(),e.captureException(h,a),h}}var e=this;if(ba(b)&&!ca(a))return a;if(ca(a)&&(b=a,a=void 0),!ca(b))return b;try{if(b.a)return b;if(b.O)return b.O}catch(f){return b}for(var g in b)ka(b,g)&&(d[g]=b[g]);return d.prototype=b.prototype,b.O=d,d.a=!0,d.b=b,d},uninstall:function(){return V.report.uninstall(),this.P(),this.Q(),this.R(),Error.stackTraceLimit=this.q,this.p=!1,this},captureException:function(a,b){b=ha({trimHeadFrames:0},b?b:{});var c=!$(a),d=!aa(a),e=aa(a)&&!a.error;if(c&&d||e)return this.captureMessage(a,ha(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}));aa(a)&&(a=a.error),this.f=a;try{var f=V.computeStackTrace(a);this.S(f,b)}catch(g){if(a!==g)throw g}return this},captureMessage:function(a,b){if(!this.m.ignoreErrors.test||!this.m.ignoreErrors.test(a)){b=b||{};var c,d=ha({message:a+""},b);try{throw new Error(a)}catch(e){c=e}c.name=null;var f=V.computeStackTrace(c),g=ea(f.stack)&&f.stack[1],h=g&&g.url||"";if((!this.m.ignoreUrls.test||!this.m.ignoreUrls.test(h))&&(!this.m.whitelistUrls.test||this.m.whitelistUrls.test(h))){if(this.m.stacktrace||b&&b.stacktrace){b=ha({fingerprint:a,trimHeadFrames:(b.trimHeadFrames||0)+1},b);var i=this.T(f,b);d.stacktrace={frames:i.reverse()}}return this.U(d),this}}},captureBreadcrumb:function(a){var b=ha({timestamp:H()/1e3},a);if(ca(this.m.breadcrumbCallback)){var c=this.m.breadcrumbCallback(b);if(_(c)&&!fa(c))b=c;else if(c===!1)return this}return this.w.push(b),this.w.length>this.m.maxBreadcrumbs&&this.w.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.t.push([a,b]),this.p&&this.H(),this},setUserContext:function(a){return this.l.user=a,this},setExtraContext:function(a){return this.V("extra",a),this},setTagsContext:function(a){return this.V("tags",a),this},clearContext:function(){return this.l={},this},getContext:function(){return JSON.parse(W(this.l))},setEnvironment:function(a){return this.m.environment=a,this},setRelease:function(a){return this.m.release=a,this},setDataCallback:function(a){var b=this.m.dataCallback;return this.m.dataCallback=I(b,a),this},setBreadcrumbCallback:function(a){var b=this.m.breadcrumbCallback;return this.m.breadcrumbCallback=I(b,a),this},setShouldSendCallback:function(a){var b=this.m.shouldSendCallback;return this.m.shouldSendCallback=I(b,a),this},setTransport:function(a){return this.m.transport=a,this},lastException:function(){return this.f},lastEventId:function(){return this.h},isSetup:function(){return!!this.c&&(!!this.i||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.C("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=xa.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(ya){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new X("Missing eventId");var c=a.dsn||this.J;if(!c)throw new X("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.l.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.L(this.I(c)),h=ya.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(ya.head||ya.body).appendChild(h)}},N:function(){var a=this;this.o+=1,setTimeout(function(){a.o-=1})},W:function(a,b){var c,d;if(this.d){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),ya.createEvent?(c=ya.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=ya.createEventObject(),c.eventType=a);for(d in b)ka(b,d)&&(c[d]=b[d]);if(ya.createEvent)ya.dispatchEvent(c);else try{ya.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},X:function(a){var b=this;return function(c){if(b.Y=null,b.x!==c){b.x=c;var d;try{d=oa(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},Z:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.Y;g||a.X("input")(c),clearTimeout(g),a.Y=setTimeout(function(){a.Y=null},b)}}},$:function(a,b){var c=ra(this.y.href),d=ra(b),e=ra(a);this.z=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},E:function(){var a=this;a._=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.a?a._.apply(this.b,arguments):a._.apply(this,arguments)}},P:function(){this._&&(Function.prototype.toString=this._)},F:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.$(b.z,c+""),a.apply(this,arguments)}};sa(history,"pushState",j,d),sa(history,"replaceState",j,d)}if(c.console&&"console"in xa&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};ga(["debug","info","warn","error","log"],function(a,b){ua(console,b,k)})}},Q:function(){for(var a;this.v.length;){a=this.v.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},R:function(){for(var a in this.s)this.r[a]=this.s[a]},H:function(){var a=this;ga(this.t,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},I:function(a){var b=wa.exec(a),c={},d=7;try{for(;d--;)c[va[d]]=b[d]||""}catch(e){throw new X("Invalid DSN: "+a)}if(c.pass&&!this.m.allowSecretKey)throw new X("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},L:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},D:function(){this.o||this.S.apply(this,arguments)},S:function(a,b){var c=this.T(a,b);this.W("handle",{stackInfo:a,options:b}),this.ba(a.name,a.message,a.url,a.lineno,c,b)},T:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(ga(a.stack,function(b,e){var f=c.ca(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.w,0)}),this.l.user&&(a.user=this.l.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||fa(a[b]))&&delete a[b]}),ca(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!fa(a)&&(!ca(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.ia()?void this.C("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random()":"anonymous component")+(a._isVue&&a.$options.__file?" at "+a.$options.__file:"")}function e(a,b){if(b=b||window.Vue,b&&b.config){var c=b.config.errorHandler;b.config.errorHandler=function(b,e,f){var g={};"[object Object]"===Object.prototype.toString.call(e)&&(g.componentName=d(e),g.propsData=e.$options.propsData),"undefined"!=typeof f&&(g.lifecycleHook=f),a.captureException(b,{extra:g}),"function"==typeof c&&c.call(this,b,e,f)}}}b.exports=e,a(5).addPlugin(b.exports)},{5:5}],2:[function(a,b,c){function d(a){this.name="RavenConfigError",this.message=a}d.prototype=new Error,d.prototype.constructor=d,b.exports=d},{}],3:[function(a,b,c){var d=a(6),e=function(a,b,c){var e=a[b],f=a;if(b in a){var g="warn"===b?"warning":b;a[b]=function(){var a=[].slice.call(arguments),h=d.safeJoin(a," "),i={level:g,logger:"console",extra:{arguments:a}};"assert"===b?a[0]===!1&&(h="Assertion failed: "+(d.safeJoin(a.slice(1)," ")||"console.assert"),i.extra.arguments=a.slice(1),c&&c(h,i)):c&&c(h,i),e&&Function.prototype.apply.call(e,f,a)}}};b.exports={wrapMethod:e}},{6:6}],4:[function(a,b,c){(function(c){function d(){return+new Date}function e(a,b){return q(b)?function(c){return b(c,a)}:b}function f(){this.a=!("object"!=typeof JSON||!JSON.stringify),this.b=!p(Q),this.c=!p(R),this.d=null,this.e=null,this.f=null,this.g=null,this.h=null,this.i=null,this.j={},this.k={release:P.SENTRY_RELEASE&&P.SENTRY_RELEASE.id,logger:"javascript",ignoreErrors:[],ignoreUrls:[],whitelistUrls:[],includePaths:[],headers:null,collectWindowErrors:!0,captureUnhandledRejections:!0,maxMessageLength:0,maxUrlLength:250,stackTraceLimit:50,autoBreadcrumbs:!0,instrument:!0,sampleRate:1,sanitizeKeys:[]},this.l={method:"POST",keepalive:!0,referrerPolicy:I()?"origin":""},this.m=0,this.n=!1,this.o=Error.stackTraceLimit,this.p=P.console||{},this.q={},this.r=[],this.s=d(),this.t=[],this.u=[],this.v=null,this.w=P.location,this.x=this.w&&this.w.href,this.y();for(var a in this.p)this.q[a]=this.p[a]}var g=a(7),h=a(8),i=a(9),j=a(2),k=a(6),l=k.isError,m=k.isObject,n=k.isPlainObject,o=k.isErrorEvent,p=k.isUndefined,q=k.isFunction,r=k.isString,s=k.isArray,t=k.isEmptyObject,u=k.each,v=k.objectMerge,w=k.truncate,x=k.objectFrozen,y=k.hasKey,z=k.joinRegExp,A=k.urlencode,B=k.uuid4,C=k.htmlTreeAsString,D=k.isSameException,E=k.isSameStacktrace,F=k.parseUrl,G=k.fill,H=k.supportsFetch,I=k.supportsReferrerPolicy,J=k.serializeKeysForMessage,K=k.serializeException,L=k.sanitize,M=a(3).wrapMethod,N="source protocol user pass host port path".split(" "),O=/^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/,P="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},Q=P.document,R=P.navigator;f.prototype={VERSION:"3.24.2",debug:!1,TraceKit:g,config:function(a,b){var c=this;if(c.g)return this.z("error","Error: Raven has already been configured"),c;if(!a)return c;var d=c.k;b&&u(b,function(a,b){"tags"===a||"extra"===a||"user"===a?c.j[a]=b:d[a]=b}),c.setDSN(a),d.ignoreErrors.push(/^Script error\.?$/),d.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/),d.ignoreErrors=z(d.ignoreErrors),d.ignoreUrls=!!d.ignoreUrls.length&&z(d.ignoreUrls),d.whitelistUrls=!!d.whitelistUrls.length&&z(d.whitelistUrls),d.includePaths=z(d.includePaths),d.maxBreadcrumbs=Math.max(0,Math.min(d.maxBreadcrumbs||100,100));var e={xhr:!0,console:!0,dom:!0,location:!0,sentry:!0},f=d.autoBreadcrumbs;"[object Object]"==={}.toString.call(f)?f=v(e,f):f!==!1&&(f=e),d.autoBreadcrumbs=f;var h={tryCatch:!0},i=d.instrument;return"[object Object]"==={}.toString.call(i)?i=v(h,i):i!==!1&&(i=h),d.instrument=i,g.collectWindowErrors=!!d.collectWindowErrors,c},install:function(){var a=this;return a.isSetup()&&!a.n&&(g.report.subscribe(function(){a.A.apply(a,arguments)}),a.k.captureUnhandledRejections&&a.B(),a.C(),a.k.instrument&&a.k.instrument.tryCatch&&a.D(),a.k.autoBreadcrumbs&&a.E(),a.F(),a.n=!0),Error.stackTraceLimit=a.k.stackTraceLimit,this},setDSN:function(a){var b=this,c=b.G(a),d=c.path.lastIndexOf("/"),e=c.path.substr(1,d);b.H=a,b.h=c.user,b.I=c.pass&&c.pass.substr(1),b.i=c.path.substr(d+1),b.g=b.J(c),b.K=b.g+"/"+e+"api/"+b.i+"/store/",this.y()},context:function(a,b,c){return q(a)&&(c=b||[],b=a,a=void 0),this.wrap(a,b).apply(this,c)},wrap:function(a,b,c){function d(){var d=[],f=arguments.length,g=!a||a&&a.deep!==!1;for(c&&q(c)&&c.apply(this,arguments);f--;)d[f]=g?e.wrap(a,arguments[f]):arguments[f];try{return b.apply(this,d)}catch(h){throw e.L(),e.captureException(h,a),h}}var e=this;if(p(b)&&!q(a))return a;if(q(a)&&(b=a,a=void 0),!q(b))return b;try{if(b.M)return b;if(b.N)return b.N}catch(f){return b}for(var g in b)y(b,g)&&(d[g]=b[g]);return d.prototype=b.prototype,b.N=d,d.M=!0,d.O=b,d},uninstall:function(){return g.report.uninstall(),this.P(),this.Q(),this.R(),this.S(),Error.stackTraceLimit=this.o,this.n=!1,this},T:function(a){this.z("debug","Raven caught unhandled promise rejection:",a),this.captureException(a.reason,{extra:{unhandledPromiseRejection:!0}})},B:function(){return this.T=this.T.bind(this),P.addEventListener&&P.addEventListener("unhandledrejection",this.T),this},P:function(){return P.removeEventListener&&P.removeEventListener("unhandledrejection",this.T),this},captureException:function(a,b){if(b=v({trimHeadFrames:0},b?b:{}),o(a)&&a.error)a=a.error;else if(l(a))a=a;else{if(!n(a))return this.captureMessage(a,v(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}));b=this.U(b,a),a=new Error(b.message)}this.d=a;try{var c=g.computeStackTrace(a);this.V(c,b)}catch(d){if(a!==d)throw d}return this},U:function(a,b){var c=Object.keys(b).sort(),d=v(a,{message:"Non-Error exception captured with keys: "+J(c),fingerprint:[i(c)],extra:a.extra||{}});return d.extra.W=K(b),d},captureMessage:function(a,b){if(!this.k.ignoreErrors.test||!this.k.ignoreErrors.test(a)){b=b||{},a+="";var c,d=v({message:a},b);try{throw new Error(a)}catch(e){c=e}c.name=null;var f=g.computeStackTrace(c),h=s(f.stack)&&f.stack[1];h&&"Raven.captureException"===h.func&&(h=f.stack[2]);var i=h&&h.url||"";if((!this.k.ignoreUrls.test||!this.k.ignoreUrls.test(i))&&(!this.k.whitelistUrls.test||this.k.whitelistUrls.test(i))){if(this.k.stacktrace||b&&b.stacktrace){d.fingerprint=null==d.fingerprint?a:d.fingerprint,b=v({trimHeadFrames:0},b),b.trimHeadFrames+=1;var j=this.X(f,b);d.stacktrace={frames:j.reverse()}}return d.fingerprint&&(d.fingerprint=s(d.fingerprint)?d.fingerprint:[d.fingerprint]),this.Y(d),this}}},captureBreadcrumb:function(a){var b=v({timestamp:d()/1e3},a);if(q(this.k.breadcrumbCallback)){var c=this.k.breadcrumbCallback(b);if(m(c)&&!t(c))b=c;else if(c===!1)return this}return this.u.push(b),this.u.length>this.k.maxBreadcrumbs&&this.u.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.r.push([a,b]),this.n&&this.F(),this},setUserContext:function(a){return this.j.user=a,this},setExtraContext:function(a){return this.Z("extra",a),this},setTagsContext:function(a){return this.Z("tags",a),this},clearContext:function(){return this.j={},this},getContext:function(){return JSON.parse(h(this.j))},setEnvironment:function(a){return this.k.environment=a,this},setRelease:function(a){return this.k.release=a,this},setDataCallback:function(a){var b=this.k.dataCallback;return this.k.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.k.breadcrumbCallback;return this.k.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.k.shouldSendCallback;return this.k.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.k.transport=a,this},lastException:function(){return this.d},lastEventId:function(){return this.f},isSetup:function(){return!!this.a&&(!!this.g||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.z("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=P.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(Q){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.H;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.j.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.J(this.G(c)),h=Q.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(Q.head||Q.body).appendChild(h)}},L:function(){var a=this;this.m+=1,setTimeout(function(){a.m-=1})},$:function(a,b){var c,d;if(this.b){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),Q.createEvent?(c=Q.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=Q.createEventObject(),c.eventType=a);for(d in b)y(b,d)&&(c[d]=b[d]);if(Q.createEvent)Q.dispatchEvent(c);else try{Q.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},_:function(a){var b=this;return function(c){if(b.aa=null,b.v!==c){b.v=c;var d;try{d=C(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ba:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.aa;g||a._("input")(c),clearTimeout(g),a.aa=setTimeout(function(){a.aa=null},b)}}},ca:function(a,b){var c=F(this.w.href),d=F(b),e=F(a);this.x=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},C:function(){var a=this;a.da=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.M?a.da.apply(this.O,arguments):a.da.apply(this,arguments)}},Q:function(){this.da&&(Function.prototype.toString=this.da)},D:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.ca(b.x,c+""),a.apply(this,arguments)}};G(history,"pushState",j,d),G(history,"replaceState",j,d)}if(c.console&&"console"in P&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};u(["debug","info","warn","error","log"],function(a,b){M(console,b,k)})}},R:function(){for(var a;this.t.length;){a=this.t.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},S:function(){for(var a in this.q)this.p[a]=this.q[a]},F:function(){var a=this;u(this.r,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},G:function(a){var b=O.exec(a),c={},d=7;try{for(;d--;)c[N[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.k.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},J:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},A:function(){this.m||this.V.apply(this,arguments)},V:function(a,b){var c=this.X(a,b);this.$("handle",{stackInfo:a,options:b}),this.fa(a.name,a.message,a.url,a.lineno,c,b)},X:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(u(a.stack,function(b,e){var f=c.ga(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.u,0)}),this.j.user&&(a.user=this.j.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),a=this.pa(a),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||t(a[b]))&&delete a[b]}),q(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!t(a)&&(!q(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.ma()?void this.z("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function B(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&j(b))for(c=b.split(/\s+/),f=0;fc?M(a,b-1):d}function N(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?T:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function O(a,b){function c(a){return k(a)?a.map(function(a){return c(a)}):i(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!k(b)||k(b)&&0===b.length)return a;var d,e=w(b),f="********";try{d=JSON.parse(P(a))}catch(g){return a}return c(d)}var P=a(8),Q="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},R=3,S=51200,T=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isUndefined:g,isFunction:h,isPlainObject:i,isString:j,isArray:k,isEmptyObject:l,supportsErrorEvent:m,supportsFetch:n,supportsReferrerPolicy:o,supportsPromiseRejectionEvent:p,wrappedCallback:q,each:r,objectMerge:s,truncate:u,objectFrozen:t,hasKey:v,joinRegExp:w,urlencode:x,uuid4:z,htmlTreeAsString:A,htmlElementAsString:B,isSameException:E,isSameStacktrace:F,parseUrl:y,fill:G,safeJoin:H,serializeException:M,serializeKeysForMessage:N,sanitize:O}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{8:8}],7:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}var e=a(6),f={collectWindowErrors:!0,debug:!1},g="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},h=[].slice,i="?",j=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;f.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function k(a,b){var c=null;if(!b||f.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(h.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,g,h){var l=null,m=e.isErrorEvent(h)?h.error:h,n=e.isErrorEvent(a)?a.message:a;if(v)f.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&e.isError(m))l=f.computeStackTrace(m),k(l,!0);else{var p,r={url:b,line:c,column:g},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(j);p&&(s=p[1],n=p[2])}r.func=i,l={name:s,message:n,url:d(),stack:[r]},k(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=g.onerror,g.onerror=l,r=!0)}function n(){r&&(g.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,k.apply(null,[a,!1].concat(b))}function p(a,b){var c=h.call(arguments,1);if(v){if(u===a)return;o()}var d=f.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),f.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,e,f=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,g=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,h=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,j=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,k=/\((\S*)(?::(\d+))(?::(\d+))\)/,l=a.stack.split("\n"),m=[],n=(/^(.*) is undefined$/.exec(a.message),0),o=l.length;n eval")>-1;q&&(b=j.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==n||c[5]||"undefined"==typeof a.columnNumber||(m[0].column=a.columnNumber+1),e={url:c[3],func:c[1]||i,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}!e.func&&e.line&&(e.func=i),m.push(e)}return m.length?{name:a.name,message:a.message,url:d(),stack:m}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=i),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,g){for(var h,j,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==e&&o!==f.report){if(j={url:null,func:i,line:null,column:null},o.name?j.func=o.name:(h=k.exec(o.toString()))&&(j.func=h[1]),"undefined"==typeof j.func)try{j.func=h.input.substring(0,h.input.indexOf("{"))}catch(p){}m[""+o]?n=!0:m[""+o]=!0,l.push(j)}g&&l.splice(0,g);var q={name:a.name,message:a.message,url:d(),stack:l};return b(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),q}function e(b,e){var g=null;e=null==e?0:+e;try{if(g=a(b))return g}catch(h){if(f.debug)throw h}try{if(g=c(b,e+1))return g}catch(h){if(f.debug)throw h}return{name:b.name,message:b.message,url:d()}}return e.augmentStackTraceWithInitialElement=b,e.computeStackTraceFromStackProp=a,e}(),b.exports=f}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{6:6}],8:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}],9:[function(a,b,c){function d(a,b){var c=(65535&a)+(65535&b),d=(a>>16)+(b>>16)+(c>>16);return d<<16|65535&c}function e(a,b){return a<>>32-b}function f(a,b,c,f,g,h){return d(e(d(d(b,a),d(f,h)),g),c)}function g(a,b,c,d,e,g,h){return f(b&c|~b&d,a,b,e,g,h)}function h(a,b,c,d,e,g,h){return f(b&d|c&~d,a,b,e,g,h)}function i(a,b,c,d,e,g,h){return f(b^c^d,a,b,e,g,h)}function j(a,b,c,d,e,g,h){return f(c^(b|~d),a,b,e,g,h)}function k(a,b){a[b>>5]|=128<>>9<<4)+14]=b;var c,e,f,k,l,m=1732584193,n=-271733879,o=-1732584194,p=271733878;for(c=0;c>5]>>>b%32&255);return c}function m(a){var b,c=[];for(c[(a.length>>2)-1]=void 0,b=0;b>5]|=(255&a.charCodeAt(b/8))<16&&(e=k(e,8*a.length)),c=0;c<16;c+=1)f[c]=909522486^e[c],g[c]=1549556828^e[c];return d=k(f.concat(m(b)),512+8*b.length),l(k(g.concat(d),640))}function p(a){var b,c,d="0123456789abcdef",e="";for(c=0;c>>4&15)+d.charAt(15&b);return e}function q(a){return unescape(encodeURIComponent(a))}function r(a){return n(q(a))}function s(a){return p(r(a))}function t(a,b){return o(q(a),q(b))}function u(a,b){return p(t(a,b))}function v(a,b,c){return b?c?t(b,a):u(b,a):c?r(a):s(a)}b.exports=v},{}]},{},[5,1])(5)}); //# sourceMappingURL=raven.min.js.map \ No newline at end of file diff --git a/dist/vue/raven.min.js.map b/dist/vue/raven.min.js.map index ec54e8c85b54..25486000b81c 100644 --- a/dist/vue/raven.min.js.map +++ b/dist/vue/raven.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["raven.js"],"names":["global","factory","exports","module","define","amd","Raven","this","createCommonjsModule","fn","_typeof","obj","Symbol","iterator","constructor","prototype","isObject$1","what","isError$1","value","toString","call","Error","isErrorEvent$1","supportsErrorEvent","isUndefined$1","isFunction$1","isPlainObject","Object","isString$1","isArray$1","isEmptyObject$1","_","hasOwnProperty","ErrorEvent","e","supportsFetch$1","_window$3","Headers","Request","Response","wrappedCallback","callback","dataCallback","data","original","normalizedData","each$1","i","j","length","hasKey$1","objectMerge$1","obj1","obj2","key","objectFrozen$1","isFrozen","truncate$1","str","max","substr","object","joinRegExp$1","patterns","pattern","sources","len","push","replace","source","RegExp","join","urlencode$1","o","pairs","encodeURIComponent","parseUrl$1","url","match","query","fragment","protocol","host","path","relative","uuid4$1","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","r","Math","random","htmlTreeAsString$1","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","reverse","className","classes","attr","tagName","toLowerCase","id","split","attrWhitelist","getAttribute","isOnlyOneTruthy","a","b","isBothUndefined","isSameException$1","ex1","ex2","values","type","stacktrace","isSameStacktrace$1","stack1","stack2","frames1","frames","frames2","filename","lineno","colno","fill$1","name","replacement","track","orig","__raven__","__orig__","safeJoin","input","delimiter","output","String","getLocationHref","document","location","href","RavenConfigError","message","now","Date","keepOriginalCallback","isFunction","Raven$1","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window$1","SENTRY_RELEASE","logger","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","_fetchDefaults","method","keepalive","referrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","console","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","_lastHref","_resetBackoff","formatComponentName","vm","$root","_isVue","$options","_componentTag","__file","vuePlugin","Vue","window","config","_oldOnError","errorHandler","error","info","metaData","componentName","propsData","lifecycleHook","captureException","extra","commonjsGlobal","self","_sPO","setPrototypeOf","p","__proto__","Reflect","construct","Parent","args","Class","Constructor","apply","bind","utils","isObject","isError","isErrorEvent","isString","isArray","isEmptyObject","supportsFetch","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","TraceKit","debug","_window$2","_slice","slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","report","subscribe","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","stack","isWindowError","exception","concat","arguments","inner","traceKitWindowOnError","msg","lineNo","colNo","ex","lastExceptionStack","computeStackTrace","augmentStackTraceWithInitialElement","processLastException","groups","line","column","undefined","func","_oldOnerrorHandler","_onErrorHandlerInstalled","onerror","_lastExceptionStack","_lastArgs","lastArgs","lastException","rethrow","setTimeout","incomplete","uninstall","computeStackTraceFromStackProp","submatch","parts","element","chrome","gecko","winjs","geckoEval","chromeEval","lines","exec","isNative","indexOf","isEval","columnNumber","stackInfo","initial","unshift","partial","computeStackTraceByWalkingCallerChain","depth","item","functionName","funcs","recursion","curr","caller","substring","result","sourceURL","fileName","lineNumber","description","tracekit","stringify_1","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","err","keys","thisPos","Infinity","getSerialize","configError","wrapMethod","level","originalConsoleLevel","originalConsole","sentryLevel","Function","console$1","wrapConsoleMethod","dsnKeys","dsnPattern","navigator","VERSION","dsn","options","_logDebug","globalOptions","setDSN","maxBreadcrumbs","min","autoBreadcrumbDefaults","xhr","dom","sentry","instrumentDefaults","tryCatch","install","isSetup","_handleOnErrorStackInfo","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","lastIndexOf","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","context","wrap","_before","wrapped","deep","_ignoreNextOnError","__raven_wrapper__","property","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","trimHeadFrames","isNotError","isNotErrorEvent","isErrorEventWithoutError","captureMessage","_handleStackInfo","test","initialCall","fileurl","fingerprint","_prepareFrames","_send","captureBreadcrumb","crumb","timestamp","breadcrumbCallback","shift","addPlugin","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","setDataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","N","W","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","X","evtName","_keypressTimeout","target","category","Z","debounceDuration","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","$","from","to","parsedLoc","parsedTo","parsedFrom","E","_originalFunctionToString","P","F","wrapTimeFn","t","Array","originalCallback","wrapEventTarget","proto","capture","secure","handleEvent","before","clickHandler","keypressHandler","_keypressEventHandler","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","G","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","onreadystatechange","origFetch","fetchInput","fetchData","then","response","addEventListener","attachEvent","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","Q","builtin","R","H","installer","I","m","allowSecretKey","L","port","D","S","_triggerEvent","_processException","T","frame","_normalizeFrame","in_app","ca","stackInfoUrl","normalized","function","ba","prefixedMessage","culprit","da","request","Referer","breadcrumbs","_trimBreadcrumbs","ea","urlProp","urlProps","fa","httpData","userAgent","User-Agent","referrer","A","_backoffDuration","_backoffStart","ia","ja","current","last","ka","_shouldBackoff","retry","get","getResponseHeader","parseInt","U","baseData","project","platform","_getHttpData","serverName","server_name","forEach","_sendProcessedPayload","ma","la","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","na","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","onload","open","setRequestHeader","send","oa","hash","evaluated","C","V","setUser","setReleaseContext","raven","_window","_Raven","noConflict","singleton","vue$2","vue"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file +{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","formatComponentName","vm","$root","name","_isVue","$options","_componentTag","__file","vuePlugin","Vue","config","_oldOnError","errorHandler","error","info","metaData","Object","prototype","toString","componentName","propsData","lifecycleHook","captureException","extra","addPlugin","5","2","RavenConfigError","message","constructor","3","utils","wrapMethod","console","level","callback","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","msg","safeJoin","data","logger","Function","apply","6","4","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","sanitizeKeys","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isError","isObject","isPlainObject","isErrorEvent","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","sanitize","wrapConsoleMethod","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","dsn","options","_logDebug","globalOptions","key","value","setDSN","push","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","substr","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","context","func","undefined","wrap","_before","wrapped","deep","_ignoreNextOnError","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","T","event","reason","unhandledPromiseRejection","B","_promiseRejectionHandler","bind","addEventListener","P","removeEventListener","ex","trimHeadFrames","captureMessage","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","U","currentOptions","exKeys","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","setDataCallback","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","L","setTimeout","$","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","_","evtName","_keypressTimeout","target","category","ba","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","ca","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","C","_originalFunctionToString","Q","D","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","type","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","E","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","R","builtin","S","F","installer","concat","G","str","m","exec","allowSecretKey","J","port","A","V","stackInfo","_triggerEvent","_processException","lineno","X","frame","_normalizeFrame","in_app","ga","stackInfoUrl","normalized","filename","line","colno","column","function","fa","prefixedMessage","exception","values","culprit","ha","request","Referer","breadcrumbs","_trimBreadcrumbs","ia","urlProp","urlProps","ja","httpData","userAgent","User-Agent","referrer","y","_backoffDuration","_backoffStart","ma","na","current","last","oa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Y","baseData","project","platform","_getHttpData","serverName","server_name","_sanitizeData","forEach","random","_sendProcessedPayload","pa","ra","qa","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","sa","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","onerror","open","setRequestHeader","send","ta","hash","evaluated","z","Z","setUser","setReleaseContext","7","8","9","RavenConstructor","_Raven","noConflict","Client","what","supportsErrorEvent","ErrorEvent","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","wrappedCallback","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","sanitizeMask","safeInput","o_O","getLocationHref","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","charAt","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","string","raw"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file diff --git a/package.json b/package.json index ea966fc5328b..0e1f1e45ebaa 100644 --- a/package.json +++ b/package.json @@ -15,10 +15,10 @@ "homepage": "https://github.com/getsentry/raven-js", "main": "src/singleton.js", "scripts": { - "deploy": "./scripts/deploy.js", + "deploy": ".npm run test && /scripts/deploy.js", "lint": "eslint .", "precommit": "lint-staged", - "publish": "npm run test && grunt publish", + "publish": "grunt publish", "test": "npm run lint && grunt build.test && npm run test:unit && npm run test:integration && npm run test:typescript", "test:karma:unit": "karma start karma.unit.config.js", "test:karma:integration": "karma start karma.integration.config.js ", @@ -43,7 +43,6 @@ "grunt-browserify": "^4.0.1", "grunt-cli": "^0.1.13", "grunt-contrib-clean": "^0.7.0", - "grunt-contrib-connect": "^0.11.2", "grunt-contrib-copy": "^0.8.2", "grunt-contrib-uglify": "^0.11.0", "grunt-gitinfo": "^0.1.7", From 18cba747cc061b09ef24a39fd2672077b6ca14d7 Mon Sep 17 00:00:00 2001 From: CaptObvious Date: Mon, 7 May 2018 11:08:50 +0100 Subject: [PATCH 45/75] feat: Handle JavaScript loaded in the browser inside a blob --- vendor/TraceKit/tracekit.js | 41 +++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) diff --git a/vendor/TraceKit/tracekit.js b/vendor/TraceKit/tracekit.js index 2a313fe5b988..f812439443a1 100644 --- a/vendor/TraceKit/tracekit.js +++ b/vendor/TraceKit/tracekit.js @@ -441,6 +441,47 @@ TraceKit.computeStackTrace = (function computeStackTraceWrapper() { element.func = UNKNOWN_FUNCTION; } + if (element.url && element.url.substr(0, 5) === 'blob:') { + // Special case for handling JavaScript loaded into a blob. + // We use a synchronous AJAX request here as a blob is already in + // memory - it's not making a network request. This will generate a warning + // in the browser console, but there has already been an error so that's not + // that much of an issue. + var xhr = new XMLHttpRequest(); + xhr.open('GET', element.url, false); + xhr.send(null); + + // If we failed to download the source, skip the element. + if (xhr.status === 200) { + var source = xhr.responseText; + + // We trim the source down to the last 300 characters here as + // sourceMappingURL is usually at the end of the file. + source = source.substr(source.length - 300); + + // Now we dig out the source map URL + var sourceMaps = source.match(/\/\/# {0,1}sourceMappingURL=(.*) {0,1}/); + + // If we don't find a source map comment or we find more than one, + // continue on to the next element. We check for a length of 2 as the + // first result is always the entire match, subsequent indices are + // the group matches. + if (sourceMaps.length === 2) { + var sourceMapAddress = sourceMaps[1]; + + // Now we check to see if it's a relative URL. If it is, convert it + // to an absolute one. + if (sourceMapAddress.substr(0, 1) === '~') { + sourceMapAddress = window.location.origin + sourceMapAddress.substr(1); + } + + // Now we strip the '.map' off of the end of the URL and update the + // element so that Sentry can match the map to the blob. + element.url = sourceMapAddress.substr(0, sourceMapAddress.length - 4); + } + } + } + stack.push(element); } From de0db41bd85d7609f42eed49443db82b3ffc4863 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kamil=20Og=C3=B3rek?= Date: Wed, 9 May 2018 12:20:16 +0200 Subject: [PATCH 46/75] test: Fix Tracekit tests w. blob handling and some minor corrections --- test/vendor/tracekit-parser.test.js | 10 ++++++++++ vendor/TraceKit/tracekit.js | 25 +++++++++++-------------- 2 files changed, 21 insertions(+), 14 deletions(-) diff --git a/test/vendor/tracekit-parser.test.js b/test/vendor/tracekit-parser.test.js index 47924cfbf5e7..551d32f638de 100644 --- a/test/vendor/tracekit-parser.test.js +++ b/test/vendor/tracekit-parser.test.js @@ -3,8 +3,18 @@ var TraceKit = require('../../vendor/TraceKit/tracekit'); var CapturedExceptions = require('./fixtures/captured-errors'); +var sinon = require('sinon'); +var xhr; describe('TraceKit', function() { + beforeEach(function() { + xhr = sinon.useFakeXMLHttpRequest(); + }); + + afterEach(function() { + xhr.restore(); + }); + describe('Parser', function() { it('should parse Safari 6 error', function() { var stackFrames = TraceKit.computeStackTrace(CapturedExceptions.SAFARI_6); diff --git a/vendor/TraceKit/tracekit.js b/vendor/TraceKit/tracekit.js index f812439443a1..aa0c39c5c2e6 100644 --- a/vendor/TraceKit/tracekit.js +++ b/vendor/TraceKit/tracekit.js @@ -455,29 +455,26 @@ TraceKit.computeStackTrace = (function computeStackTraceWrapper() { if (xhr.status === 200) { var source = xhr.responseText; - // We trim the source down to the last 300 characters here as - // sourceMappingURL is usually at the end of the file. - source = source.substr(source.length - 300); + // We trim the source down to the last 300 characters as sourceMappingURL is always at the end of the file. + // Why 300? To be in line with: https://github.com/getsentry/sentry/blob/4af29e8f2350e20c28a6933354e4f42437b4ba42/src/sentry/lang/javascript/processor.py#L164-L175 + source = source.slice(-300); // Now we dig out the source map URL - var sourceMaps = source.match(/\/\/# {0,1}sourceMappingURL=(.*) {0,1}/); + var sourceMaps = source.match(/\/\/# sourceMappingURL=(.*)$/); - // If we don't find a source map comment or we find more than one, - // continue on to the next element. We check for a length of 2 as the - // first result is always the entire match, subsequent indices are - // the group matches. - if (sourceMaps.length === 2) { + // If we don't find a source map comment or we find more than one, continue on to the next element. + if (!sourceMaps) { var sourceMapAddress = sourceMaps[1]; - // Now we check to see if it's a relative URL. If it is, convert it - // to an absolute one. - if (sourceMapAddress.substr(0, 1) === '~') { - sourceMapAddress = window.location.origin + sourceMapAddress.substr(1); + // Now we check to see if it's a relative URL. + // If it is, convert it to an absolute one. + if (sourceMapAddress.charAt(0) === '~') { + sourceMapAddress = window.location.origin + sourceMapAddress.slice(1); } // Now we strip the '.map' off of the end of the URL and update the // element so that Sentry can match the map to the blob. - element.url = sourceMapAddress.substr(0, sourceMapAddress.length - 4); + element.url = sourceMapAddress.slice(0, -4); } } } From b0ea98be7f8deb00df437e8da9ec57b04cbfeb22 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kamil=20Og=C3=B3rek?= Date: Wed, 9 May 2018 15:18:03 +0200 Subject: [PATCH 47/75] test: Tests for blob handling --- test/vendor/tracekit.test.js | 47 ++++++++++++++++++++++++++++++++++++ vendor/TraceKit/tracekit.js | 14 +++++++---- 2 files changed, 56 insertions(+), 5 deletions(-) diff --git a/test/vendor/tracekit.test.js b/test/vendor/tracekit.test.js index 4ac81fd6c10c..ab6c5d86de1c 100644 --- a/test/vendor/tracekit.test.js +++ b/test/vendor/tracekit.test.js @@ -4,6 +4,7 @@ var TraceKit = require('../../vendor/TraceKit/tracekit'); var utils = require('../../src/utils'); var supportsErrorEvent = utils.supportsErrorEvent; +var sinon = require('sinon'); describe('TraceKit', function() { describe('stacktrace info', function() { @@ -81,6 +82,52 @@ describe('TraceKit', function() { assert.equal(trace.stack[2].line, 26); assert.equal(trace.stack[2].column, 5); }); + + it('should update url based on sourcemap suffix in blob: based frames if full url available', function() { + var server = sinon.createFakeServer(); + server.respondImmediately = true; + server.respondWith('GET', 'blob:http://localhost:8080/some-blob', [ + 200, + {'Content-Type': 'application/javascript'}, + 'just a random stream of bytes, as we care only about the sourcemaps suffix there\n' + + 'oh, here it comes! //# sourceMappingURL=http://awesome.com/file.js.map' + ]); + + var stack_str = + 'Error: test\n' + + ' at Error (native)\n' + + ' at s (blob:http://localhost:8080/some-blob:31:29146)'; + + var mock_err = {stack: stack_str}; + var trace = TraceKit.computeStackTrace.computeStackTraceFromStackProp(mock_err); + + assert.equal(trace.stack[1].url, 'http://awesome.com/file.js'); + + server.restore(); + }); + + it('should update url based on sourcemap suffix in blob: based frames if relative url available, by adding location.origin to it', function() { + var server = sinon.createFakeServer(); + server.respondImmediately = true; + server.respondWith('GET', 'blob:http://localhost:8080/some-blob', [ + 200, + {'Content-Type': 'application/javascript'}, + 'just a random stream of bytes, as we care only about the sourcemaps suffix there\n' + + 'oh, here it comes! //# sourceMappingURL=~/awesome.com/file.js.map' + ]); + + var stack_str = + 'Error: test\n' + + ' at Error (native)\n' + + ' at s (blob:http://localhost:8080/some-blob:31:29146)'; + + var mock_err = {stack: stack_str}; + var trace = TraceKit.computeStackTrace.computeStackTraceFromStackProp(mock_err); + + assert.equal(trace.stack[1].url, 'http://localhost:9876/awesome.com/file.js'); + + server.restore(); + }); }); describe('.computeStackTrace', function() { diff --git a/vendor/TraceKit/tracekit.js b/vendor/TraceKit/tracekit.js index aa0c39c5c2e6..17bfed8ddce7 100644 --- a/vendor/TraceKit/tracekit.js +++ b/vendor/TraceKit/tracekit.js @@ -30,10 +30,14 @@ var ERROR_TYPES_RE = /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Ran function getLocationHref() { if (typeof document === 'undefined' || document.location == null) return ''; - return document.location.href; } +function getLocationOrigin() { + if (typeof document === 'undefined' || document.location == null) return ''; + return document.location.origin; +} + /** * TraceKit.report: cross-browser processing of unhandled exceptions * @@ -451,9 +455,9 @@ TraceKit.computeStackTrace = (function computeStackTraceWrapper() { xhr.open('GET', element.url, false); xhr.send(null); - // If we failed to download the source, skip the element. + // If we failed to download the source, skip this patch if (xhr.status === 200) { - var source = xhr.responseText; + var source = xhr.responseText || ''; // We trim the source down to the last 300 characters as sourceMappingURL is always at the end of the file. // Why 300? To be in line with: https://github.com/getsentry/sentry/blob/4af29e8f2350e20c28a6933354e4f42437b4ba42/src/sentry/lang/javascript/processor.py#L164-L175 @@ -463,13 +467,13 @@ TraceKit.computeStackTrace = (function computeStackTraceWrapper() { var sourceMaps = source.match(/\/\/# sourceMappingURL=(.*)$/); // If we don't find a source map comment or we find more than one, continue on to the next element. - if (!sourceMaps) { + if (sourceMaps) { var sourceMapAddress = sourceMaps[1]; // Now we check to see if it's a relative URL. // If it is, convert it to an absolute one. if (sourceMapAddress.charAt(0) === '~') { - sourceMapAddress = window.location.origin + sourceMapAddress.slice(1); + sourceMapAddress = getLocationOrigin() + sourceMapAddress.slice(1); } // Now we strip the '.map' off of the end of the URL and update the From 80dffad7ce2050b934c9eb48f66dddf74083d8cb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kamil=20Og=C3=B3rek?= Date: Thu, 10 May 2018 18:51:49 +0200 Subject: [PATCH 48/75] fix: update deploy npm script --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 0e1f1e45ebaa..08a38099fc45 100644 --- a/package.json +++ b/package.json @@ -15,7 +15,7 @@ "homepage": "https://github.com/getsentry/raven-js", "main": "src/singleton.js", "scripts": { - "deploy": ".npm run test && /scripts/deploy.js", + "deploy": "npm run test && ./scripts/deploy.js", "lint": "eslint .", "precommit": "lint-staged", "publish": "grunt publish", From c306608015f64b1c0c787ef09970c81d98f4058f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kamil=20Og=C3=B3rek?= Date: Thu, 10 May 2018 19:53:04 +0200 Subject: [PATCH 49/75] 3.25.0 --- CHANGELOG.md | 6 + bower.json | 2 +- .../raven.js | 104 ++++- .../raven.min.js | 6 +- .../raven.min.js.map | 2 +- dist/angular,console,ember,require/raven.js | 104 ++++- .../raven.min.js | 6 +- .../raven.min.js.map | 2 +- dist/angular,console,ember,vue/raven.js | 104 ++++- dist/angular,console,ember,vue/raven.min.js | 6 +- .../raven.min.js.map | 2 +- dist/angular,console,ember/raven.js | 104 ++++- dist/angular,console,ember/raven.min.js | 6 +- dist/angular,console,ember/raven.min.js.map | 2 +- dist/angular,console,require,vue/raven.js | 104 ++++- dist/angular,console,require,vue/raven.min.js | 6 +- .../raven.min.js.map | 2 +- dist/angular,console,require/raven.js | 104 ++++- dist/angular,console,require/raven.min.js | 6 +- dist/angular,console,require/raven.min.js.map | 2 +- dist/angular,console,vue/raven.js | 104 ++++- dist/angular,console,vue/raven.min.js | 6 +- dist/angular,console,vue/raven.min.js.map | 2 +- dist/angular,console/raven.js | 104 ++++- dist/angular,console/raven.min.js | 6 +- dist/angular,console/raven.min.js.map | 2 +- dist/angular,ember,require,vue/raven.js | 104 ++++- dist/angular,ember,require,vue/raven.min.js | 6 +- .../raven.min.js.map | 2 +- dist/angular,ember,require/raven.js | 104 ++++- dist/angular,ember,require/raven.min.js | 6 +- dist/angular,ember,require/raven.min.js.map | 2 +- dist/angular,ember,vue/raven.js | 104 ++++- dist/angular,ember,vue/raven.min.js | 6 +- dist/angular,ember,vue/raven.min.js.map | 2 +- dist/angular,ember/raven.js | 104 ++++- dist/angular,ember/raven.min.js | 6 +- dist/angular,ember/raven.min.js.map | 2 +- dist/angular,require,vue/raven.js | 104 ++++- dist/angular,require,vue/raven.min.js | 6 +- dist/angular,require,vue/raven.min.js.map | 2 +- dist/angular,require/raven.js | 104 ++++- dist/angular,require/raven.min.js | 6 +- dist/angular,require/raven.min.js.map | 2 +- dist/angular,vue/raven.js | 104 ++++- dist/angular,vue/raven.min.js | 6 +- dist/angular,vue/raven.min.js.map | 2 +- dist/angular/raven.js | 104 ++++- dist/angular/raven.min.js | 6 +- dist/angular/raven.min.js.map | 2 +- dist/console,ember,require,vue/raven.js | 104 ++++- dist/console,ember,require,vue/raven.min.js | 6 +- .../raven.min.js.map | 2 +- dist/console,ember,require/raven.js | 104 ++++- dist/console,ember,require/raven.min.js | 6 +- dist/console,ember,require/raven.min.js.map | 2 +- dist/console,ember,vue/raven.js | 104 ++++- dist/console,ember,vue/raven.min.js | 6 +- dist/console,ember,vue/raven.min.js.map | 2 +- dist/console,ember/raven.js | 104 ++++- dist/console,ember/raven.min.js | 6 +- dist/console,ember/raven.min.js.map | 2 +- dist/console,require,vue/raven.js | 104 ++++- dist/console,require,vue/raven.min.js | 6 +- dist/console,require,vue/raven.min.js.map | 2 +- dist/console,require/raven.js | 104 ++++- dist/console,require/raven.min.js | 6 +- dist/console,require/raven.min.js.map | 2 +- dist/console,vue/raven.js | 104 ++++- dist/console,vue/raven.min.js | 6 +- dist/console,vue/raven.min.js.map | 2 +- dist/console/raven.js | 104 ++++- dist/console/raven.min.js | 6 +- dist/console/raven.min.js.map | 2 +- dist/ember,require,vue/raven.js | 104 ++++- dist/ember,require,vue/raven.min.js | 6 +- dist/ember,require,vue/raven.min.js.map | 2 +- dist/ember,require/raven.js | 104 ++++- dist/ember,require/raven.min.js | 6 +- dist/ember,require/raven.min.js.map | 2 +- dist/ember,vue/raven.js | 104 ++++- dist/ember,vue/raven.min.js | 6 +- dist/ember,vue/raven.min.js.map | 2 +- dist/ember/raven.js | 104 ++++- dist/ember/raven.min.js | 6 +- dist/ember/raven.min.js.map | 2 +- dist/raven.js | 104 ++++- dist/raven.min.js | 6 +- dist/raven.min.js.map | 2 +- dist/require,vue/raven.js | 104 ++++- dist/require,vue/raven.min.js | 6 +- dist/require,vue/raven.min.js.map | 2 +- dist/require/raven.js | 104 ++++- dist/require/raven.min.js | 6 +- dist/require/raven.min.js.map | 2 +- dist/sri.json | 384 +++++++++--------- dist/vue/raven.js | 104 ++++- dist/vue/raven.min.js | 6 +- dist/vue/raven.min.js.map | 2 +- docs/sentry-doc-config.json | 2 +- package.json | 2 +- src/raven.js | 2 +- test/raven.test.js | 4 +- 103 files changed, 3468 insertions(+), 518 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 528fa286eeeb..3fdb9664d38f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,11 @@ # Changelog +## 3.25.0 + +* FEAT: Handle JavaScript loaded in the browser inside a blob (#1322) +* FEAT: Handle DOMError and DOMException gracefully (#1310) +* BUILD: include plugins-combination in dist and clear some old grunt config (#1313) + ## 3.24.2 * FEAT: Capture breadcrumbs on failed fetch request (#1293) diff --git a/bower.json b/bower.json index 1d21b35e5b4d..918ec6cc060f 100644 --- a/bower.json +++ b/bower.json @@ -1,6 +1,6 @@ { "name": "raven-js", - "version": "3.24.2", + "version": "3.25.0", "dependencies": {}, "main": "dist/raven.js", "ignore": [ diff --git a/dist/angular,console,ember,require,vue/raven.js b/dist/angular,console,ember,require,vue/raven.js index 144c31914d59..8aa12537f179 100644 --- a/dist/angular,console,ember,require,vue/raven.js +++ b/dist/angular,console,ember,require,vue/raven.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.24.2 (540f32b) | github.com/getsentry/raven-js */ +/*! Raven.js 3.25.0 (80dffad) | github.com/getsentry/raven-js */ /* * Includes TraceKit @@ -286,10 +286,12 @@ var md5 = _dereq_(13); var RavenConfigError = _dereq_(6); var utils = _dereq_(10); +var isErrorEvent = utils.isErrorEvent; +var isDOMError = utils.isDOMError; +var isDOMException = utils.isDOMException; var isError = utils.isError; var isObject = utils.isObject; var isPlainObject = utils.isPlainObject; -var isErrorEvent = utils.isErrorEvent; var isUndefined = utils.isUndefined; var isFunction = utils.isFunction; var isString = utils.isString; @@ -417,7 +419,7 @@ Raven.prototype = { // webpack (using a build step causes webpack #1617). Grunt verifies that // this value matches package.json during build. // See: https://github.com/getsentry/raven-js/issues/465 - VERSION: '3.24.2', + VERSION: '3.25.0', debug: false, @@ -749,6 +751,23 @@ Raven.prototype = { if (isErrorEvent(ex) && ex.error) { // If it is an ErrorEvent with `error` property, extract it to get actual Error ex = ex.error; + } else if (isDOMError(ex) || isDOMException(ex)) { + // If it is a DOMError or DOMException (which are legacy APIs, but still supported in some browsers) + // then we just extract the name and message, as they don't provide anything else + // https://developer.mozilla.org/en-US/docs/Web/API/DOMError + // https://developer.mozilla.org/en-US/docs/Web/API/DOMException + var name = ex.name || (isDOMError(ex) ? 'DOMError' : 'DOMException'); + var message = ex.message ? name + ': ' + ex.message : name; + + return this.captureMessage( + message, + objectMerge(options, { + // neither DOMError or DOMException provide stack trace and we most likely wont get it this way as well + // but it's barely any overhead so we may at least try + stacktrace: true, + trimHeadFrames: options.trimHeadFrames + 1 + }) + ); } else if (isError(ex)) { // we have a real Error object ex = ex; @@ -760,6 +779,7 @@ Raven.prototype = { ex = new Error(options.message); } else { // If none of previous checks were valid, then it means that + // it's not a DOMError/DOMException // it's not a plain Object // it's not a valid ErrorEvent (one with an error property) // it's not an Error @@ -2532,7 +2552,7 @@ function isObject(what) { // Yanked from https://git.io/vS8DV re-used under CC0 // with some tiny modifications function isError(value) { - switch ({}.toString.call(value)) { + switch (Object.prototype.toString.call(value)) { case '[object Error]': return true; case '[object Exception]': @@ -2545,7 +2565,15 @@ function isError(value) { } function isErrorEvent(value) { - return supportsErrorEvent() && {}.toString.call(value) === '[object ErrorEvent]'; + return Object.prototype.toString.call(value) === '[object ErrorEvent]'; +} + +function isDOMError(value) { + return Object.prototype.toString.call(value) === '[object DOMError]'; +} + +function isDOMException(value) { + return Object.prototype.toString.call(value) === '[object DOMException]'; } function isUndefined(what) { @@ -2588,6 +2616,24 @@ function supportsErrorEvent() { } } +function supportsDOMError() { + try { + new DOMError(''); // eslint-disable-line no-new + return true; + } catch (e) { + return false; + } +} + +function supportsDOMException() { + try { + new DOMException(''); // eslint-disable-line no-new + return true; + } catch (e) { + return false; + } +} + function supportsFetch() { if (!('fetch' in _window)) return false; @@ -3103,6 +3149,8 @@ module.exports = { isObject: isObject, isError: isError, isErrorEvent: isErrorEvent, + isDOMError: isDOMError, + isDOMException: isDOMException, isUndefined: isUndefined, isFunction: isFunction, isPlainObject: isPlainObject, @@ -3110,6 +3158,8 @@ module.exports = { isArray: isArray, isEmptyObject: isEmptyObject, supportsErrorEvent: supportsErrorEvent, + supportsDOMError: supportsDOMError, + supportsDOMException: supportsDOMException, supportsFetch: supportsFetch, supportsReferrerPolicy: supportsReferrerPolicy, supportsPromiseRejectionEvent: supportsPromiseRejectionEvent, @@ -3169,10 +3219,14 @@ var ERROR_TYPES_RE = /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Ran function getLocationHref() { if (typeof document === 'undefined' || document.location == null) return ''; - return document.location.href; } +function getLocationOrigin() { + if (typeof document === 'undefined' || document.location == null) return ''; + return document.location.origin; +} + /** * TraceKit.report: cross-browser processing of unhandled exceptions * @@ -3580,6 +3634,44 @@ TraceKit.computeStackTrace = (function computeStackTraceWrapper() { element.func = UNKNOWN_FUNCTION; } + if (element.url && element.url.substr(0, 5) === 'blob:') { + // Special case for handling JavaScript loaded into a blob. + // We use a synchronous AJAX request here as a blob is already in + // memory - it's not making a network request. This will generate a warning + // in the browser console, but there has already been an error so that's not + // that much of an issue. + var xhr = new XMLHttpRequest(); + xhr.open('GET', element.url, false); + xhr.send(null); + + // If we failed to download the source, skip this patch + if (xhr.status === 200) { + var source = xhr.responseText || ''; + + // We trim the source down to the last 300 characters as sourceMappingURL is always at the end of the file. + // Why 300? To be in line with: https://github.com/getsentry/sentry/blob/4af29e8f2350e20c28a6933354e4f42437b4ba42/src/sentry/lang/javascript/processor.py#L164-L175 + source = source.slice(-300); + + // Now we dig out the source map URL + var sourceMaps = source.match(/\/\/# sourceMappingURL=(.*)$/); + + // If we don't find a source map comment or we find more than one, continue on to the next element. + if (sourceMaps) { + var sourceMapAddress = sourceMaps[1]; + + // Now we check to see if it's a relative URL. + // If it is, convert it to an absolute one. + if (sourceMapAddress.charAt(0) === '~') { + sourceMapAddress = getLocationOrigin() + sourceMapAddress.slice(1); + } + + // Now we strip the '.map' off of the end of the URL and update the + // element so that Sentry can match the map to the blob. + element.url = sourceMapAddress.slice(0, -4); + } + } + } + stack.push(element); } diff --git a/dist/angular,console,ember,require,vue/raven.min.js b/dist/angular,console,ember,require,vue/raven.min.js index 787862878b70..c6db73b00314 100644 --- a/dist/angular,console,ember,require,vue/raven.min.js +++ b/dist/angular,console,ember,require,vue/raven.min.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.24.2 (540f32b) | github.com/getsentry/raven-js */ -!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.Raven=a()}}(function(){var a;return function b(a,c,d){function e(g,h){if(!c[g]){if(!a[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};a[g][0].call(k.exports,function(b){var c=a[g][1][b];return e(c?c:b)},k,k.exports,b,a,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;g":"anonymous component")+(a._isVue&&a.$options.__file?" at "+a.$options.__file:"")}function e(a,b){if(b=b||window.Vue,b&&b.config){var c=b.config.errorHandler;b.config.errorHandler=function(b,e,f){var g={};"[object Object]"===Object.prototype.toString.call(e)&&(g.componentName=d(e),g.propsData=e.$options.propsData),"undefined"!=typeof f&&(g.lifecycleHook=f),a.captureException(b,{extra:g}),"function"==typeof c&&c.call(this,b,e,f)}}}b.exports=e,a(9).addPlugin(b.exports)},{9:9}],6:[function(a,b,c){function d(a){this.name="RavenConfigError",this.message=a}d.prototype=new Error,d.prototype.constructor=d,b.exports=d},{}],7:[function(a,b,c){var d=a(10),e=function(a,b,c){var e=a[b],f=a;if(b in a){var g="warn"===b?"warning":b;a[b]=function(){var a=[].slice.call(arguments),h=d.safeJoin(a," "),i={level:g,logger:"console",extra:{arguments:a}};"assert"===b?a[0]===!1&&(h="Assertion failed: "+(d.safeJoin(a.slice(1)," ")||"console.assert"),i.extra.arguments=a.slice(1),c&&c(h,i)):c&&c(h,i),e&&Function.prototype.apply.call(e,f,a)}}};b.exports={wrapMethod:e}},{10:10}],8:[function(a,b,c){(function(c){function d(){return+new Date}function e(a,b){return q(b)?function(c){return b(c,a)}:b}function f(){this.b=!("object"!=typeof JSON||!JSON.stringify),this.c=!p(Q),this.d=!p(R),this.e=null,this.f=null,this.g=null,this.h=null,this.i=null,this.j=null,this.k={},this.l={release:P.SENTRY_RELEASE&&P.SENTRY_RELEASE.id,logger:"javascript",ignoreErrors:[],ignoreUrls:[],whitelistUrls:[],includePaths:[],headers:null,collectWindowErrors:!0,captureUnhandledRejections:!0,maxMessageLength:0,maxUrlLength:250,stackTraceLimit:50,autoBreadcrumbs:!0,instrument:!0,sampleRate:1,sanitizeKeys:[]},this.m={method:"POST",keepalive:!0,referrerPolicy:I()?"origin":""},this.n=0,this.o=!1,this.p=Error.stackTraceLimit,this.q=P.console||{},this.r={},this.s=[],this.t=d(),this.u=[],this.v=[],this.w=null,this.x=P.location,this.y=this.x&&this.x.href,this.z();for(var a in this.q)this.r[a]=this.q[a]}var g=a(11),h=a(12),i=a(13),j=a(6),k=a(10),l=k.isError,m=k.isObject,n=k.isPlainObject,o=k.isErrorEvent,p=k.isUndefined,q=k.isFunction,r=k.isString,s=k.isArray,t=k.isEmptyObject,u=k.each,v=k.objectMerge,w=k.truncate,x=k.objectFrozen,y=k.hasKey,z=k.joinRegExp,A=k.urlencode,B=k.uuid4,C=k.htmlTreeAsString,D=k.isSameException,E=k.isSameStacktrace,F=k.parseUrl,G=k.fill,H=k.supportsFetch,I=k.supportsReferrerPolicy,J=k.serializeKeysForMessage,K=k.serializeException,L=k.sanitize,M=a(7).wrapMethod,N="source protocol user pass host port path".split(" "),O=/^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/,P="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},Q=P.document,R=P.navigator;f.prototype={VERSION:"3.24.2",debug:!1,TraceKit:g,config:function(a,b){var c=this;if(c.h)return this.A("error","Error: Raven has already been configured"),c;if(!a)return c;var d=c.l;b&&u(b,function(a,b){"tags"===a||"extra"===a||"user"===a?c.k[a]=b:d[a]=b}),c.setDSN(a),d.ignoreErrors.push(/^Script error\.?$/),d.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/),d.ignoreErrors=z(d.ignoreErrors),d.ignoreUrls=!!d.ignoreUrls.length&&z(d.ignoreUrls),d.whitelistUrls=!!d.whitelistUrls.length&&z(d.whitelistUrls),d.includePaths=z(d.includePaths),d.maxBreadcrumbs=Math.max(0,Math.min(d.maxBreadcrumbs||100,100));var e={xhr:!0,console:!0,dom:!0,location:!0,sentry:!0},f=d.autoBreadcrumbs;"[object Object]"==={}.toString.call(f)?f=v(e,f):f!==!1&&(f=e),d.autoBreadcrumbs=f;var h={tryCatch:!0},i=d.instrument;return"[object Object]"==={}.toString.call(i)?i=v(h,i):i!==!1&&(i=h),d.instrument=i,g.collectWindowErrors=!!d.collectWindowErrors,c},install:function(){var a=this;return a.isSetup()&&!a.o&&(g.report.subscribe(function(){a.B.apply(a,arguments)}),a.l.captureUnhandledRejections&&a.C(),a.D(),a.l.instrument&&a.l.instrument.tryCatch&&a.E(),a.l.autoBreadcrumbs&&a.F(),a.G(),a.o=!0),Error.stackTraceLimit=a.l.stackTraceLimit,this},setDSN:function(a){var b=this,c=b.H(a),d=c.path.lastIndexOf("/"),e=c.path.substr(1,d);b.I=a,b.i=c.user,b.J=c.pass&&c.pass.substr(1),b.j=c.path.substr(d+1),b.h=b.K(c),b.L=b.h+"/"+e+"api/"+b.j+"/store/",this.z()},context:function(a,b,c){return q(a)&&(c=b||[],b=a,a=void 0),this.wrap(a,b).apply(this,c)},wrap:function(a,b,c){function d(){var d=[],f=arguments.length,g=!a||a&&a.deep!==!1;for(c&&q(c)&&c.apply(this,arguments);f--;)d[f]=g?e.wrap(a,arguments[f]):arguments[f];try{return b.apply(this,d)}catch(h){throw e.M(),e.captureException(h,a),h}}var e=this;if(p(b)&&!q(a))return a;if(q(a)&&(b=a,a=void 0),!q(b))return b;try{if(b.N)return b;if(b.O)return b.O}catch(f){return b}for(var g in b)y(b,g)&&(d[g]=b[g]);return d.prototype=b.prototype,b.O=d,d.N=!0,d.P=b,d},uninstall:function(){return g.report.uninstall(),this.Q(),this.R(),this.S(),this.T(),Error.stackTraceLimit=this.p,this.o=!1,this},U:function(a){this.A("debug","Raven caught unhandled promise rejection:",a),this.captureException(a.reason,{extra:{unhandledPromiseRejection:!0}})},C:function(){return this.U=this.U.bind(this),P.addEventListener&&P.addEventListener("unhandledrejection",this.U),this},Q:function(){return P.removeEventListener&&P.removeEventListener("unhandledrejection",this.U),this},captureException:function(a,b){if(b=v({trimHeadFrames:0},b?b:{}),o(a)&&a.error)a=a.error;else if(l(a))a=a;else{if(!n(a))return this.captureMessage(a,v(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}));b=this.V(b,a),a=new Error(b.message)}this.e=a;try{var c=g.computeStackTrace(a);this.W(c,b)}catch(d){if(a!==d)throw d}return this},V:function(a,b){var c=Object.keys(b).sort(),d=v(a,{message:"Non-Error exception captured with keys: "+J(c),fingerprint:[i(c)],extra:a.extra||{}});return d.extra.X=K(b),d},captureMessage:function(a,b){if(!this.l.ignoreErrors.test||!this.l.ignoreErrors.test(a)){b=b||{},a+="";var c,d=v({message:a},b);try{throw new Error(a)}catch(e){c=e}c.name=null;var f=g.computeStackTrace(c),h=s(f.stack)&&f.stack[1];h&&"Raven.captureException"===h.func&&(h=f.stack[2]);var i=h&&h.url||"";if((!this.l.ignoreUrls.test||!this.l.ignoreUrls.test(i))&&(!this.l.whitelistUrls.test||this.l.whitelistUrls.test(i))){if(this.l.stacktrace||b&&b.stacktrace){d.fingerprint=null==d.fingerprint?a:d.fingerprint,b=v({trimHeadFrames:0},b),b.trimHeadFrames+=1;var j=this.Y(f,b);d.stacktrace={frames:j.reverse()}}return d.fingerprint&&(d.fingerprint=s(d.fingerprint)?d.fingerprint:[d.fingerprint]),this.Z(d),this}}},captureBreadcrumb:function(a){var b=v({timestamp:d()/1e3},a);if(q(this.l.breadcrumbCallback)){var c=this.l.breadcrumbCallback(b);if(m(c)&&!t(c))b=c;else if(c===!1)return this}return this.v.push(b),this.v.length>this.l.maxBreadcrumbs&&this.v.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.s.push([a,b]),this.o&&this.G(),this},setUserContext:function(a){return this.k.user=a,this},setExtraContext:function(a){return this.$("extra",a),this},setTagsContext:function(a){return this.$("tags",a),this},clearContext:function(){return this.k={},this},getContext:function(){return JSON.parse(h(this.k))},setEnvironment:function(a){return this.l.environment=a,this},setRelease:function(a){return this.l.release=a,this},setDataCallback:function(a){var b=this.l.dataCallback;return this.l.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.l.breadcrumbCallback;return this.l.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.l.shouldSendCallback;return this.l.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.l.transport=a,this},lastException:function(){return this.e},lastEventId:function(){return this.g},isSetup:function(){return!!this.b&&(!!this.h||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.A("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=P.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(Q){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.I;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.k.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.K(this.H(c)),h=Q.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(Q.head||Q.body).appendChild(h)}},M:function(){var a=this;this.n+=1,setTimeout(function(){a.n-=1})},_:function(a,b){var c,d;if(this.c){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),Q.createEvent?(c=Q.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=Q.createEventObject(),c.eventType=a);for(d in b)y(b,d)&&(c[d]=b[d]);if(Q.createEvent)Q.dispatchEvent(c);else try{Q.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},aa:function(a){var b=this;return function(c){if(b.ba=null,b.w!==c){b.w=c;var d;try{d=C(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ca:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.ba;g||a.aa("input")(c),clearTimeout(g),a.ba=setTimeout(function(){a.ba=null},b)}}},da:function(a,b){var c=F(this.x.href),d=F(b),e=F(a);this.y=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},D:function(){var a=this;a.ea=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.N?a.ea.apply(this.P,arguments):a.ea.apply(this,arguments)}},R:function(){this.ea&&(Function.prototype.toString=this.ea)},E:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.da(b.y,c+""),a.apply(this,arguments)}};G(history,"pushState",j,d),G(history,"replaceState",j,d)}if(c.console&&"console"in P&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};u(["debug","info","warn","error","log"],function(a,b){M(console,b,k)})}},S:function(){for(var a;this.u.length;){a=this.u.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},T:function(){for(var a in this.r)this.q[a]=this.r[a]},G:function(){var a=this;u(this.s,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},H:function(a){var b=O.exec(a),c={},d=7;try{for(;d--;)c[N[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.l.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},K:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},B:function(){this.n||this.W.apply(this,arguments)},W:function(a,b){var c=this.Y(a,b);this._("handle",{stackInfo:a,options:b}),this.ga(a.name,a.message,a.url,a.lineno,c,b)},Y:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(u(a.stack,function(b,e){var f=c.ha(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.v,0)}),this.k.user&&(a.user=this.k.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),a=this.qa(a),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||t(a[b]))&&delete a[b]}),q(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!t(a)&&(!q(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.na()?void this.A("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function B(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&j(b))for(c=b.split(/\s+/),f=0;fc?M(a,b-1):d}function N(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?T:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function O(a,b){function c(a){return k(a)?a.map(function(a){return c(a)}):i(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!k(b)||k(b)&&0===b.length)return a;var d,e=w(b),f="********";try{d=JSON.parse(P(a))}catch(g){return a}return c(d)}var P=a(12),Q="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},R=3,S=51200,T=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isUndefined:g,isFunction:h,isPlainObject:i,isString:j,isArray:k,isEmptyObject:l,supportsErrorEvent:m,supportsFetch:n,supportsReferrerPolicy:o,supportsPromiseRejectionEvent:p,wrappedCallback:q,each:r,objectMerge:s,truncate:u,objectFrozen:t,hasKey:v,joinRegExp:w,urlencode:x,uuid4:z,htmlTreeAsString:A,htmlElementAsString:B,isSameException:E,isSameStacktrace:F,parseUrl:y,fill:G,safeJoin:H,serializeException:M,serializeKeysForMessage:N,sanitize:O}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{12:12}],11:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}var e=a(10),f={collectWindowErrors:!0,debug:!1},g="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},h=[].slice,i="?",j=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;f.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function k(a,b){var c=null;if(!b||f.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(h.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,g,h){var l=null,m=e.isErrorEvent(h)?h.error:h,n=e.isErrorEvent(a)?a.message:a;if(v)f.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&e.isError(m))l=f.computeStackTrace(m),k(l,!0);else{var p,r={url:b,line:c,column:g},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(j);p&&(s=p[1],n=p[2])}r.func=i,l={name:s,message:n,url:d(),stack:[r]},k(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=g.onerror,g.onerror=l,r=!0)}function n(){r&&(g.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,k.apply(null,[a,!1].concat(b))}function p(a,b){var c=h.call(arguments,1);if(v){if(u===a)return;o()}var d=f.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),f.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,e,f=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,g=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,h=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,j=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,k=/\((\S*)(?::(\d+))(?::(\d+))\)/,l=a.stack.split("\n"),m=[],n=(/^(.*) is undefined$/.exec(a.message),0),o=l.length;n eval")>-1;q&&(b=j.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==n||c[5]||"undefined"==typeof a.columnNumber||(m[0].column=a.columnNumber+1),e={url:c[3],func:c[1]||i,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}!e.func&&e.line&&(e.func=i),m.push(e)}return m.length?{name:a.name,message:a.message,url:d(),stack:m}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){ -if(a.incomplete=!1,e.func||(e.func=i),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,g){for(var h,j,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==e&&o!==f.report){if(j={url:null,func:i,line:null,column:null},o.name?j.func=o.name:(h=k.exec(o.toString()))&&(j.func=h[1]),"undefined"==typeof j.func)try{j.func=h.input.substring(0,h.input.indexOf("{"))}catch(p){}m[""+o]?n=!0:m[""+o]=!0,l.push(j)}g&&l.splice(0,g);var q={name:a.name,message:a.message,url:d(),stack:l};return b(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),q}function e(b,e){var g=null;e=null==e?0:+e;try{if(g=a(b))return g}catch(h){if(f.debug)throw h}try{if(g=c(b,e+1))return g}catch(h){if(f.debug)throw h}return{name:b.name,message:b.message,url:d()}}return e.augmentStackTraceWithInitialElement=b,e.computeStackTraceFromStackProp=a,e}(),b.exports=f}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{10:10}],12:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}],13:[function(a,b,c){function d(a,b){var c=(65535&a)+(65535&b),d=(a>>16)+(b>>16)+(c>>16);return d<<16|65535&c}function e(a,b){return a<>>32-b}function f(a,b,c,f,g,h){return d(e(d(d(b,a),d(f,h)),g),c)}function g(a,b,c,d,e,g,h){return f(b&c|~b&d,a,b,e,g,h)}function h(a,b,c,d,e,g,h){return f(b&d|c&~d,a,b,e,g,h)}function i(a,b,c,d,e,g,h){return f(b^c^d,a,b,e,g,h)}function j(a,b,c,d,e,g,h){return f(c^(b|~d),a,b,e,g,h)}function k(a,b){a[b>>5]|=128<>>9<<4)+14]=b;var c,e,f,k,l,m=1732584193,n=-271733879,o=-1732584194,p=271733878;for(c=0;c>5]>>>b%32&255);return c}function m(a){var b,c=[];for(c[(a.length>>2)-1]=void 0,b=0;b>5]|=(255&a.charCodeAt(b/8))<16&&(e=k(e,8*a.length)),c=0;c<16;c+=1)f[c]=909522486^e[c],g[c]=1549556828^e[c];return d=k(f.concat(m(b)),512+8*b.length),l(k(g.concat(d),640))}function p(a){var b,c,d="0123456789abcdef",e="";for(c=0;c>>4&15)+d.charAt(15&b);return e}function q(a){return unescape(encodeURIComponent(a))}function r(a){return n(q(a))}function s(a){return p(r(a))}function t(a,b){return o(q(a),q(b))}function u(a,b){return p(t(a,b))}function v(a,b,c){return b?c?t(b,a):u(b,a):c?r(a):s(a)}b.exports=v},{}]},{},[9,1,2,3,4,5])(9)}); +/*! Raven.js 3.25.0 (80dffad) | github.com/getsentry/raven-js */ +!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.Raven=a()}}(function(){var a;return function b(a,c,d){function e(g,h){if(!c[g]){if(!a[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};a[g][0].call(k.exports,function(b){var c=a[g][1][b];return e(c?c:b)},k,k.exports,b,a,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;g":"anonymous component")+(a._isVue&&a.$options.__file?" at "+a.$options.__file:"")}function e(a,b){if(b=b||window.Vue,b&&b.config){var c=b.config.errorHandler;b.config.errorHandler=function(b,e,f){var g={};"[object Object]"===Object.prototype.toString.call(e)&&(g.componentName=d(e),g.propsData=e.$options.propsData),"undefined"!=typeof f&&(g.lifecycleHook=f),a.captureException(b,{extra:g}),"function"==typeof c&&c.call(this,b,e,f)}}}b.exports=e,a(9).addPlugin(b.exports)},{9:9}],6:[function(a,b,c){function d(a){this.name="RavenConfigError",this.message=a}d.prototype=new Error,d.prototype.constructor=d,b.exports=d},{}],7:[function(a,b,c){var d=a(10),e=function(a,b,c){var e=a[b],f=a;if(b in a){var g="warn"===b?"warning":b;a[b]=function(){var a=[].slice.call(arguments),h=d.safeJoin(a," "),i={level:g,logger:"console",extra:{arguments:a}};"assert"===b?a[0]===!1&&(h="Assertion failed: "+(d.safeJoin(a.slice(1)," ")||"console.assert"),i.extra.arguments=a.slice(1),c&&c(h,i)):c&&c(h,i),e&&Function.prototype.apply.call(e,f,a)}}};b.exports={wrapMethod:e}},{10:10}],8:[function(a,b,c){(function(c){function d(){return+new Date}function e(a,b){return s(b)?function(c){return b(c,a)}:b}function f(){this.b=!("object"!=typeof JSON||!JSON.stringify),this.c=!r(S),this.d=!r(T),this.e=null,this.f=null,this.g=null,this.h=null,this.i=null,this.j=null,this.k={},this.l={release:R.SENTRY_RELEASE&&R.SENTRY_RELEASE.id,logger:"javascript",ignoreErrors:[],ignoreUrls:[],whitelistUrls:[],includePaths:[],headers:null,collectWindowErrors:!0,captureUnhandledRejections:!0,maxMessageLength:0,maxUrlLength:250,stackTraceLimit:50,autoBreadcrumbs:!0,instrument:!0,sampleRate:1,sanitizeKeys:[]},this.m={method:"POST",keepalive:!0,referrerPolicy:K()?"origin":""},this.n=0,this.o=!1,this.p=Error.stackTraceLimit,this.q=R.console||{},this.r={},this.s=[],this.t=d(),this.u=[],this.v=[],this.w=null,this.x=R.location,this.y=this.x&&this.x.href,this.z();for(var a in this.q)this.r[a]=this.q[a]}var g=a(11),h=a(12),i=a(13),j=a(6),k=a(10),l=k.isErrorEvent,m=k.isDOMError,n=k.isDOMException,o=k.isError,p=k.isObject,q=k.isPlainObject,r=k.isUndefined,s=k.isFunction,t=k.isString,u=k.isArray,v=k.isEmptyObject,w=k.each,x=k.objectMerge,y=k.truncate,z=k.objectFrozen,A=k.hasKey,B=k.joinRegExp,C=k.urlencode,D=k.uuid4,E=k.htmlTreeAsString,F=k.isSameException,G=k.isSameStacktrace,H=k.parseUrl,I=k.fill,J=k.supportsFetch,K=k.supportsReferrerPolicy,L=k.serializeKeysForMessage,M=k.serializeException,N=k.sanitize,O=a(7).wrapMethod,P="source protocol user pass host port path".split(" "),Q=/^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/,R="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},S=R.document,T=R.navigator;f.prototype={VERSION:"3.25.0",debug:!1,TraceKit:g,config:function(a,b){var c=this;if(c.h)return this.A("error","Error: Raven has already been configured"),c;if(!a)return c;var d=c.l;b&&w(b,function(a,b){"tags"===a||"extra"===a||"user"===a?c.k[a]=b:d[a]=b}),c.setDSN(a),d.ignoreErrors.push(/^Script error\.?$/),d.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/),d.ignoreErrors=B(d.ignoreErrors),d.ignoreUrls=!!d.ignoreUrls.length&&B(d.ignoreUrls),d.whitelistUrls=!!d.whitelistUrls.length&&B(d.whitelistUrls),d.includePaths=B(d.includePaths),d.maxBreadcrumbs=Math.max(0,Math.min(d.maxBreadcrumbs||100,100));var e={xhr:!0,console:!0,dom:!0,location:!0,sentry:!0},f=d.autoBreadcrumbs;"[object Object]"==={}.toString.call(f)?f=x(e,f):f!==!1&&(f=e),d.autoBreadcrumbs=f;var h={tryCatch:!0},i=d.instrument;return"[object Object]"==={}.toString.call(i)?i=x(h,i):i!==!1&&(i=h),d.instrument=i,g.collectWindowErrors=!!d.collectWindowErrors,c},install:function(){var a=this;return a.isSetup()&&!a.o&&(g.report.subscribe(function(){a.B.apply(a,arguments)}),a.l.captureUnhandledRejections&&a.C(),a.D(),a.l.instrument&&a.l.instrument.tryCatch&&a.E(),a.l.autoBreadcrumbs&&a.F(),a.G(),a.o=!0),Error.stackTraceLimit=a.l.stackTraceLimit,this},setDSN:function(a){var b=this,c=b.H(a),d=c.path.lastIndexOf("/"),e=c.path.substr(1,d);b.I=a,b.i=c.user,b.J=c.pass&&c.pass.substr(1),b.j=c.path.substr(d+1),b.h=b.K(c),b.L=b.h+"/"+e+"api/"+b.j+"/store/",this.z()},context:function(a,b,c){return s(a)&&(c=b||[],b=a,a=void 0),this.wrap(a,b).apply(this,c)},wrap:function(a,b,c){function d(){var d=[],f=arguments.length,g=!a||a&&a.deep!==!1;for(c&&s(c)&&c.apply(this,arguments);f--;)d[f]=g?e.wrap(a,arguments[f]):arguments[f];try{return b.apply(this,d)}catch(h){throw e.M(),e.captureException(h,a),h}}var e=this;if(r(b)&&!s(a))return a;if(s(a)&&(b=a,a=void 0),!s(b))return b;try{if(b.N)return b;if(b.O)return b.O}catch(f){return b}for(var g in b)A(b,g)&&(d[g]=b[g]);return d.prototype=b.prototype,b.O=d,d.N=!0,d.P=b,d},uninstall:function(){return g.report.uninstall(),this.Q(),this.R(),this.S(),this.T(),Error.stackTraceLimit=this.p,this.o=!1,this},U:function(a){this.A("debug","Raven caught unhandled promise rejection:",a),this.captureException(a.reason,{extra:{unhandledPromiseRejection:!0}})},C:function(){return this.U=this.U.bind(this),R.addEventListener&&R.addEventListener("unhandledrejection",this.U),this},Q:function(){return R.removeEventListener&&R.removeEventListener("unhandledrejection",this.U),this},captureException:function(a,b){if(b=x({trimHeadFrames:0},b?b:{}),l(a)&&a.error)a=a.error;else{if(m(a)||n(a)){var c=a.name||(m(a)?"DOMError":"DOMException"),d=a.message?c+": "+a.message:c;return this.captureMessage(d,x(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}))}if(o(a))a=a;else{if(!q(a))return this.captureMessage(a,x(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}));b=this.V(b,a),a=new Error(b.message)}}this.e=a;try{var e=g.computeStackTrace(a);this.W(e,b)}catch(f){if(a!==f)throw f}return this},V:function(a,b){var c=Object.keys(b).sort(),d=x(a,{message:"Non-Error exception captured with keys: "+L(c),fingerprint:[i(c)],extra:a.extra||{}});return d.extra.X=M(b),d},captureMessage:function(a,b){if(!this.l.ignoreErrors.test||!this.l.ignoreErrors.test(a)){b=b||{},a+="";var c,d=x({message:a},b);try{throw new Error(a)}catch(e){c=e}c.name=null;var f=g.computeStackTrace(c),h=u(f.stack)&&f.stack[1];h&&"Raven.captureException"===h.func&&(h=f.stack[2]);var i=h&&h.url||"";if((!this.l.ignoreUrls.test||!this.l.ignoreUrls.test(i))&&(!this.l.whitelistUrls.test||this.l.whitelistUrls.test(i))){if(this.l.stacktrace||b&&b.stacktrace){d.fingerprint=null==d.fingerprint?a:d.fingerprint,b=x({trimHeadFrames:0},b),b.trimHeadFrames+=1;var j=this.Y(f,b);d.stacktrace={frames:j.reverse()}}return d.fingerprint&&(d.fingerprint=u(d.fingerprint)?d.fingerprint:[d.fingerprint]),this.Z(d),this}}},captureBreadcrumb:function(a){var b=x({timestamp:d()/1e3},a);if(s(this.l.breadcrumbCallback)){var c=this.l.breadcrumbCallback(b);if(p(c)&&!v(c))b=c;else if(c===!1)return this}return this.v.push(b),this.v.length>this.l.maxBreadcrumbs&&this.v.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.s.push([a,b]),this.o&&this.G(),this},setUserContext:function(a){return this.k.user=a,this},setExtraContext:function(a){return this.$("extra",a),this},setTagsContext:function(a){return this.$("tags",a),this},clearContext:function(){return this.k={},this},getContext:function(){return JSON.parse(h(this.k))},setEnvironment:function(a){return this.l.environment=a,this},setRelease:function(a){return this.l.release=a,this},setDataCallback:function(a){var b=this.l.dataCallback;return this.l.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.l.breadcrumbCallback;return this.l.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.l.shouldSendCallback;return this.l.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.l.transport=a,this},lastException:function(){return this.e},lastEventId:function(){return this.g},isSetup:function(){return!!this.b&&(!!this.h||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.A("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=R.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(S){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.I;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.k.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.K(this.H(c)),h=S.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(S.head||S.body).appendChild(h)}},M:function(){var a=this;this.n+=1,setTimeout(function(){a.n-=1})},_:function(a,b){var c,d;if(this.c){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),S.createEvent?(c=S.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=S.createEventObject(),c.eventType=a);for(d in b)A(b,d)&&(c[d]=b[d]);if(S.createEvent)S.dispatchEvent(c);else try{S.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},aa:function(a){var b=this;return function(c){if(b.ba=null,b.w!==c){b.w=c;var d;try{d=E(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ca:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.ba;g||a.aa("input")(c),clearTimeout(g),a.ba=setTimeout(function(){a.ba=null},b)}}},da:function(a,b){var c=H(this.x.href),d=H(b),e=H(a);this.y=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},D:function(){var a=this;a.ea=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.N?a.ea.apply(this.P,arguments):a.ea.apply(this,arguments)}},R:function(){this.ea&&(Function.prototype.toString=this.ea)},E:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.da(b.y,c+""),a.apply(this,arguments)}};I(history,"pushState",j,d),I(history,"replaceState",j,d)}if(c.console&&"console"in R&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};w(["debug","info","warn","error","log"],function(a,b){O(console,b,k)})}},S:function(){for(var a;this.u.length;){a=this.u.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},T:function(){for(var a in this.r)this.q[a]=this.r[a]},G:function(){var a=this;w(this.s,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},H:function(a){var b=Q.exec(a),c={},d=7;try{for(;d--;)c[P[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.l.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},K:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},B:function(){this.n||this.W.apply(this,arguments)},W:function(a,b){var c=this.Y(a,b);this._("handle",{stackInfo:a,options:b}),this.ga(a.name,a.message,a.url,a.lineno,c,b)},Y:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(w(a.stack,function(b,e){var f=c.ha(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.v,0)}),this.k.user&&(a.user=this.k.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),a=this.qa(a),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||v(a[b]))&&delete a[b]}),s(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!v(a)&&(!s(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.na()?void this.A("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function F(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&l(b))for(c=b.split(/\s+/),f=0;fc?Q(a,b-1):d}function R(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?X:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function S(a,b){function c(a){return m(a)?a.map(function(a){return c(a)}):k(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!m(b)||m(b)&&0===b.length)return a;var d,e=A(b),f="********";try{d=JSON.parse(T(a))}catch(g){return a}return c(d)}var T=a(12),U="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},V=3,W=51200,X=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isDOMError:g,isDOMException:h,isUndefined:i,isFunction:j,isPlainObject:k,isString:l,isArray:m,isEmptyObject:n,supportsErrorEvent:o,supportsDOMError:p,supportsDOMException:q,supportsFetch:r,supportsReferrerPolicy:s,supportsPromiseRejectionEvent:t,wrappedCallback:u,each:v,objectMerge:w,truncate:y,objectFrozen:x,hasKey:z,joinRegExp:A,urlencode:B,uuid4:D,htmlTreeAsString:E,htmlElementAsString:F,isSameException:I,isSameStacktrace:J,parseUrl:C,fill:K,safeJoin:L,serializeException:Q,serializeKeysForMessage:R,sanitize:S}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{12:12}],11:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}function e(){return"undefined"==typeof document||null==document.location?"":document.location.origin}var f=a(10),g={collectWindowErrors:!0,debug:!1},h="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},i=[].slice,j="?",k=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;g.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function e(a,b){var c=null;if(!b||g.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(i.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,h,i){var l=null,m=f.isErrorEvent(i)?i.error:i,n=f.isErrorEvent(a)?a.message:a;if(v)g.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&f.isError(m))l=g.computeStackTrace(m),e(l,!0);else{var p,r={url:b,line:c,column:h},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(k);p&&(s=p[1],n=p[2])}r.func=j,l={name:s,message:n,url:d(),stack:[r]},e(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=h.onerror,h.onerror=l,r=!0)}function n(){r&&(h.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,e.apply(null,[a,!1].concat(b))}function p(a,b){var c=i.call(arguments,1);if(v){if(u===a)return;o()}var d=g.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),g.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,f,g=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,h=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,i=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,k=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,l=/\((\S*)(?::(\d+))(?::(\d+))\)/,m=a.stack.split("\n"),n=[],o=(/^(.*) is undefined$/.exec(a.message),0),p=m.length;o eval")>-1;r&&(b=k.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==o||c[5]||"undefined"==typeof a.columnNumber||(n[0].column=a.columnNumber+1),f={url:c[3],func:c[1]||j,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}if(!f.func&&f.line&&(f.func=j),f.url&&"blob:"===f.url.substr(0,5)){var s=new XMLHttpRequest;if(s.open("GET",f.url,!1),s.send(null),200===s.status){var t=s.responseText||"";t=t.slice(-300);var u=t.match(/\/\/# sourceMappingURL=(.*)$/);if(u){var v=u[1];"~"===v.charAt(0)&&(v=e()+v.slice(1)),f.url=v.slice(0,-4)}}}n.push(f)}return n.length?{name:a.name,message:a.message,url:d(),stack:n}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=j),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,e){for(var h,i,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==f&&o!==g.report){if(i={url:null,func:j,line:null,column:null},o.name?i.func=o.name:(h=k.exec(o.toString()))&&(i.func=h[1]),"undefined"==typeof i.func)try{i.func=h.input.substring(0,h.input.indexOf("{"))}catch(p){}m[""+o]?n=!0:m[""+o]=!0,l.push(i)}e&&l.splice(0,e);var q={name:a.name,message:a.message,url:d(),stack:l};return b(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),q}function f(b,e){var f=null;e=null==e?0:+e;try{if(f=a(b))return f}catch(h){if(g.debug)throw h}try{if(f=c(b,e+1))return f}catch(h){if(g.debug)throw h}return{name:b.name,message:b.message,url:d()}}return f.augmentStackTraceWithInitialElement=b,f.computeStackTraceFromStackProp=a,f}(),b.exports=g}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{10:10}],12:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}],13:[function(a,b,c){function d(a,b){var c=(65535&a)+(65535&b),d=(a>>16)+(b>>16)+(c>>16);return d<<16|65535&c}function e(a,b){return a<>>32-b}function f(a,b,c,f,g,h){return d(e(d(d(b,a),d(f,h)),g),c)}function g(a,b,c,d,e,g,h){return f(b&c|~b&d,a,b,e,g,h)}function h(a,b,c,d,e,g,h){return f(b&d|c&~d,a,b,e,g,h)}function i(a,b,c,d,e,g,h){return f(b^c^d,a,b,e,g,h)}function j(a,b,c,d,e,g,h){return f(c^(b|~d),a,b,e,g,h)}function k(a,b){a[b>>5]|=128<>>9<<4)+14]=b;var c,e,f,k,l,m=1732584193,n=-271733879,o=-1732584194,p=271733878;for(c=0;c>5]>>>b%32&255);return c}function m(a){var b,c=[];for(c[(a.length>>2)-1]=void 0,b=0;b>5]|=(255&a.charCodeAt(b/8))<16&&(e=k(e,8*a.length)),c=0;c<16;c+=1)f[c]=909522486^e[c],g[c]=1549556828^e[c];return d=k(f.concat(m(b)),512+8*b.length),l(k(g.concat(d),640))}function p(a){var b,c,d="0123456789abcdef",e="";for(c=0;c>>4&15)+d.charAt(15&b);return e}function q(a){return unescape(encodeURIComponent(a))}function r(a){return n(q(a))}function s(a){return p(r(a))}function t(a,b){return o(q(a),q(b))}function u(a,b){return p(t(a,b))}function v(a,b,c){return b?c?t(b,a):u(b,a):c?r(a):s(a)}b.exports=v},{}]},{},[9,1,2,3,4,5])(9)}); //# sourceMappingURL=raven.min.js.map \ No newline at end of file diff --git a/dist/angular,console,ember,require,vue/raven.min.js.map b/dist/angular,console,ember,require,vue/raven.min.js.map index e2bc28bbe0ca..3b1ba0ad7eef 100644 --- a/dist/angular,console,ember,require,vue/raven.min.js.map +++ b/dist/angular,console,ember,require,vue/raven.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","angularPlugin","angular","RavenProvider","$get","$window","ExceptionHandlerProvider","$provide","decorator","exceptionHandler","R","$delegate","ex","cause","captureException","extra","moduleName","provider","config","setDataCallback","wrappedCallback","data","_normalizeData","angularPattern","exception","values","matches","exec","value","type","message","angularDocs","substr","addPlugin","10","9","2","consolePlugin","console","pluginOptions","logLevels","levels","push","callback","msg","captureMessage","level","pop","wrapConsoleMethod","wrapMethod","7","3","emberPlugin","Ember","_oldOnError","onerror","error","RSVP","on","reason","context","4","requirePlugin","wrap","deep","5","formatComponentName","vm","$root","name","_isVue","$options","_componentTag","__file","vuePlugin","Vue","errorHandler","info","metaData","Object","prototype","toString","componentName","propsData","lifecycleHook","6","RavenConfigError","constructor","utils","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","safeJoin","logger","Function","apply","8","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","sanitizeKeys","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isError","isObject","isPlainObject","isErrorEvent","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","sanitize","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","dsn","options","_logDebug","globalOptions","key","setDSN","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","func","undefined","_before","wrapped","_ignoreNextOnError","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","U","event","unhandledPromiseRejection","C","_promiseRejectionHandler","bind","addEventListener","Q","removeEventListener","trimHeadFrames","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","V","currentOptions","exKeys","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","M","setTimeout","_","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","aa","evtName","_keypressTimeout","target","category","ca","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","da","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","D","_originalFunctionToString","E","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","F","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","S","builtin","T","G","installer","concat","H","str","m","allowSecretKey","K","port","B","W","stackInfo","_triggerEvent","_processException","lineno","Y","frame","_normalizeFrame","in_app","ha","stackInfoUrl","normalized","filename","line","colno","column","function","ga","prefixedMessage","culprit","ia","request","Referer","breadcrumbs","_trimBreadcrumbs","ja","urlProp","urlProps","ka","httpData","userAgent","User-Agent","referrer","z","_backoffDuration","_backoffStart","na","oa","current","last","pa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Z","baseData","project","platform","_getHttpData","serverName","server_name","_sanitizeData","forEach","random","_sendProcessedPayload","qa","sa","ra","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","ta","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","open","setRequestHeader","send","ua","hash","evaluated","A","$","setUser","setReleaseContext","11","12","13","RavenConstructor","_Raven","noConflict","Client","what","supportsErrorEvent","ErrorEvent","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","sanitizeMask","safeInput","o_O","getLocationHref","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","y","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","charAt","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","string","raw"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file +{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","angularPlugin","angular","RavenProvider","$get","$window","ExceptionHandlerProvider","$provide","decorator","exceptionHandler","R","$delegate","ex","cause","captureException","extra","moduleName","provider","config","setDataCallback","wrappedCallback","data","_normalizeData","angularPattern","exception","values","matches","exec","value","type","message","angularDocs","substr","addPlugin","10","9","2","consolePlugin","console","pluginOptions","logLevels","levels","push","callback","msg","captureMessage","level","pop","wrapConsoleMethod","wrapMethod","7","3","emberPlugin","Ember","_oldOnError","onerror","error","RSVP","on","reason","context","4","requirePlugin","wrap","deep","5","formatComponentName","vm","$root","name","_isVue","$options","_componentTag","__file","vuePlugin","Vue","errorHandler","info","metaData","Object","prototype","toString","componentName","propsData","lifecycleHook","6","RavenConfigError","constructor","utils","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","safeJoin","logger","Function","apply","8","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","sanitizeKeys","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isErrorEvent","isDOMError","isDOMException","isError","isObject","isPlainObject","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","sanitize","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","dsn","options","_logDebug","globalOptions","key","setDSN","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","func","undefined","_before","wrapped","_ignoreNextOnError","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","U","event","unhandledPromiseRejection","C","_promiseRejectionHandler","bind","addEventListener","Q","removeEventListener","trimHeadFrames","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","V","currentOptions","exKeys","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","M","setTimeout","_","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","aa","evtName","_keypressTimeout","target","category","ca","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","da","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","D","_originalFunctionToString","E","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","F","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","S","builtin","T","G","installer","concat","H","str","m","allowSecretKey","K","port","B","W","stackInfo","_triggerEvent","_processException","lineno","Y","frame","_normalizeFrame","in_app","ha","stackInfoUrl","normalized","filename","line","colno","column","function","ga","prefixedMessage","culprit","ia","request","Referer","breadcrumbs","_trimBreadcrumbs","ja","urlProp","urlProps","ka","httpData","userAgent","User-Agent","referrer","z","_backoffDuration","_backoffStart","na","oa","current","last","pa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Z","baseData","project","platform","_getHttpData","serverName","server_name","_sanitizeData","forEach","random","_sendProcessedPayload","qa","sa","ra","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","ta","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","open","setRequestHeader","send","ua","hash","evaluated","A","$","setUser","setReleaseContext","11","12","13","RavenConstructor","_Raven","noConflict","Client","what","supportsErrorEvent","ErrorEvent","supportsDOMError","DOMError","supportsDOMException","DOMException","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","sanitizeMask","safeInput","o_O","getLocationHref","getLocationOrigin","origin","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","responseText","sourceMaps","sourceMapAddress","charAt","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","y","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","string","raw"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file diff --git a/dist/angular,console,ember,require/raven.js b/dist/angular,console,ember,require/raven.js index e358d6c75a6c..d7dba9a33e09 100644 --- a/dist/angular,console,ember,require/raven.js +++ b/dist/angular,console,ember,require/raven.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.24.2 (540f32b) | github.com/getsentry/raven-js */ +/*! Raven.js 3.25.0 (80dffad) | github.com/getsentry/raven-js */ /* * Includes TraceKit @@ -236,10 +236,12 @@ var md5 = _dereq_(12); var RavenConfigError = _dereq_(5); var utils = _dereq_(9); +var isErrorEvent = utils.isErrorEvent; +var isDOMError = utils.isDOMError; +var isDOMException = utils.isDOMException; var isError = utils.isError; var isObject = utils.isObject; var isPlainObject = utils.isPlainObject; -var isErrorEvent = utils.isErrorEvent; var isUndefined = utils.isUndefined; var isFunction = utils.isFunction; var isString = utils.isString; @@ -367,7 +369,7 @@ Raven.prototype = { // webpack (using a build step causes webpack #1617). Grunt verifies that // this value matches package.json during build. // See: https://github.com/getsentry/raven-js/issues/465 - VERSION: '3.24.2', + VERSION: '3.25.0', debug: false, @@ -699,6 +701,23 @@ Raven.prototype = { if (isErrorEvent(ex) && ex.error) { // If it is an ErrorEvent with `error` property, extract it to get actual Error ex = ex.error; + } else if (isDOMError(ex) || isDOMException(ex)) { + // If it is a DOMError or DOMException (which are legacy APIs, but still supported in some browsers) + // then we just extract the name and message, as they don't provide anything else + // https://developer.mozilla.org/en-US/docs/Web/API/DOMError + // https://developer.mozilla.org/en-US/docs/Web/API/DOMException + var name = ex.name || (isDOMError(ex) ? 'DOMError' : 'DOMException'); + var message = ex.message ? name + ': ' + ex.message : name; + + return this.captureMessage( + message, + objectMerge(options, { + // neither DOMError or DOMException provide stack trace and we most likely wont get it this way as well + // but it's barely any overhead so we may at least try + stacktrace: true, + trimHeadFrames: options.trimHeadFrames + 1 + }) + ); } else if (isError(ex)) { // we have a real Error object ex = ex; @@ -710,6 +729,7 @@ Raven.prototype = { ex = new Error(options.message); } else { // If none of previous checks were valid, then it means that + // it's not a DOMError/DOMException // it's not a plain Object // it's not a valid ErrorEvent (one with an error property) // it's not an Error @@ -2482,7 +2502,7 @@ function isObject(what) { // Yanked from https://git.io/vS8DV re-used under CC0 // with some tiny modifications function isError(value) { - switch ({}.toString.call(value)) { + switch (Object.prototype.toString.call(value)) { case '[object Error]': return true; case '[object Exception]': @@ -2495,7 +2515,15 @@ function isError(value) { } function isErrorEvent(value) { - return supportsErrorEvent() && {}.toString.call(value) === '[object ErrorEvent]'; + return Object.prototype.toString.call(value) === '[object ErrorEvent]'; +} + +function isDOMError(value) { + return Object.prototype.toString.call(value) === '[object DOMError]'; +} + +function isDOMException(value) { + return Object.prototype.toString.call(value) === '[object DOMException]'; } function isUndefined(what) { @@ -2538,6 +2566,24 @@ function supportsErrorEvent() { } } +function supportsDOMError() { + try { + new DOMError(''); // eslint-disable-line no-new + return true; + } catch (e) { + return false; + } +} + +function supportsDOMException() { + try { + new DOMException(''); // eslint-disable-line no-new + return true; + } catch (e) { + return false; + } +} + function supportsFetch() { if (!('fetch' in _window)) return false; @@ -3053,6 +3099,8 @@ module.exports = { isObject: isObject, isError: isError, isErrorEvent: isErrorEvent, + isDOMError: isDOMError, + isDOMException: isDOMException, isUndefined: isUndefined, isFunction: isFunction, isPlainObject: isPlainObject, @@ -3060,6 +3108,8 @@ module.exports = { isArray: isArray, isEmptyObject: isEmptyObject, supportsErrorEvent: supportsErrorEvent, + supportsDOMError: supportsDOMError, + supportsDOMException: supportsDOMException, supportsFetch: supportsFetch, supportsReferrerPolicy: supportsReferrerPolicy, supportsPromiseRejectionEvent: supportsPromiseRejectionEvent, @@ -3119,10 +3169,14 @@ var ERROR_TYPES_RE = /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Ran function getLocationHref() { if (typeof document === 'undefined' || document.location == null) return ''; - return document.location.href; } +function getLocationOrigin() { + if (typeof document === 'undefined' || document.location == null) return ''; + return document.location.origin; +} + /** * TraceKit.report: cross-browser processing of unhandled exceptions * @@ -3530,6 +3584,44 @@ TraceKit.computeStackTrace = (function computeStackTraceWrapper() { element.func = UNKNOWN_FUNCTION; } + if (element.url && element.url.substr(0, 5) === 'blob:') { + // Special case for handling JavaScript loaded into a blob. + // We use a synchronous AJAX request here as a blob is already in + // memory - it's not making a network request. This will generate a warning + // in the browser console, but there has already been an error so that's not + // that much of an issue. + var xhr = new XMLHttpRequest(); + xhr.open('GET', element.url, false); + xhr.send(null); + + // If we failed to download the source, skip this patch + if (xhr.status === 200) { + var source = xhr.responseText || ''; + + // We trim the source down to the last 300 characters as sourceMappingURL is always at the end of the file. + // Why 300? To be in line with: https://github.com/getsentry/sentry/blob/4af29e8f2350e20c28a6933354e4f42437b4ba42/src/sentry/lang/javascript/processor.py#L164-L175 + source = source.slice(-300); + + // Now we dig out the source map URL + var sourceMaps = source.match(/\/\/# sourceMappingURL=(.*)$/); + + // If we don't find a source map comment or we find more than one, continue on to the next element. + if (sourceMaps) { + var sourceMapAddress = sourceMaps[1]; + + // Now we check to see if it's a relative URL. + // If it is, convert it to an absolute one. + if (sourceMapAddress.charAt(0) === '~') { + sourceMapAddress = getLocationOrigin() + sourceMapAddress.slice(1); + } + + // Now we strip the '.map' off of the end of the URL and update the + // element so that Sentry can match the map to the blob. + element.url = sourceMapAddress.slice(0, -4); + } + } + } + stack.push(element); } diff --git a/dist/angular,console,ember,require/raven.min.js b/dist/angular,console,ember,require/raven.min.js index 7a3479575936..ef1078adb106 100644 --- a/dist/angular,console,ember,require/raven.min.js +++ b/dist/angular,console,ember,require/raven.min.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.24.2 (540f32b) | github.com/getsentry/raven-js */ -!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.Raven=a()}}(function(){var a;return function b(a,c,d){function e(g,h){if(!c[g]){if(!a[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};a[g][0].call(k.exports,function(b){var c=a[g][1][b];return e(c?c:b)},k,k.exports,b,a,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;gthis.l.maxBreadcrumbs&&this.v.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.s.push([a,b]),this.o&&this.G(),this},setUserContext:function(a){return this.k.user=a,this},setExtraContext:function(a){return this.$("extra",a),this},setTagsContext:function(a){return this.$("tags",a),this},clearContext:function(){return this.k={},this},getContext:function(){return JSON.parse(h(this.k))},setEnvironment:function(a){return this.l.environment=a,this},setRelease:function(a){return this.l.release=a,this},setDataCallback:function(a){var b=this.l.dataCallback;return this.l.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.l.breadcrumbCallback;return this.l.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.l.shouldSendCallback;return this.l.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.l.transport=a,this},lastException:function(){return this.e},lastEventId:function(){return this.g},isSetup:function(){return!!this.b&&(!!this.h||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.A("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=P.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(Q){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.I;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.k.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.K(this.H(c)),h=Q.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(Q.head||Q.body).appendChild(h)}},M:function(){var a=this;this.n+=1,setTimeout(function(){a.n-=1})},_:function(a,b){var c,d;if(this.c){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),Q.createEvent?(c=Q.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=Q.createEventObject(),c.eventType=a);for(d in b)y(b,d)&&(c[d]=b[d]);if(Q.createEvent)Q.dispatchEvent(c);else try{Q.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},aa:function(a){var b=this;return function(c){if(b.ba=null,b.w!==c){b.w=c;var d;try{d=C(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ca:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.ba;g||a.aa("input")(c),clearTimeout(g),a.ba=setTimeout(function(){a.ba=null},b)}}},da:function(a,b){var c=F(this.x.href),d=F(b),e=F(a);this.y=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},D:function(){var a=this;a.ea=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.N?a.ea.apply(this.P,arguments):a.ea.apply(this,arguments)}},R:function(){this.ea&&(Function.prototype.toString=this.ea)},E:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.da(b.y,c+""),a.apply(this,arguments)}};G(history,"pushState",j,d),G(history,"replaceState",j,d)}if(c.console&&"console"in P&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};u(["debug","info","warn","error","log"],function(a,b){M(console,b,k)})}},S:function(){for(var a;this.u.length;){a=this.u.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},T:function(){for(var a in this.r)this.q[a]=this.r[a]},G:function(){var a=this;u(this.s,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},H:function(a){var b=O.exec(a),c={},d=7;try{for(;d--;)c[N[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.l.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},K:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},B:function(){this.n||this.W.apply(this,arguments)},W:function(a,b){var c=this.Y(a,b);this._("handle",{stackInfo:a,options:b}),this.ga(a.name,a.message,a.url,a.lineno,c,b)},Y:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(u(a.stack,function(b,e){var f=c.ha(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.v,0)}),this.k.user&&(a.user=this.k.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),a=this.qa(a),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||t(a[b]))&&delete a[b]}),q(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!t(a)&&(!q(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.na()?void this.A("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function B(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&j(b))for(c=b.split(/\s+/),f=0;fc?M(a,b-1):d}function N(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?T:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function O(a,b){function c(a){return k(a)?a.map(function(a){return c(a)}):i(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!k(b)||k(b)&&0===b.length)return a;var d,e=w(b),f="********";try{d=JSON.parse(P(a))}catch(g){return a}return c(d)}var P=a(11),Q="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},R=3,S=51200,T=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isUndefined:g,isFunction:h,isPlainObject:i,isString:j,isArray:k,isEmptyObject:l,supportsErrorEvent:m,supportsFetch:n,supportsReferrerPolicy:o,supportsPromiseRejectionEvent:p,wrappedCallback:q,each:r,objectMerge:s,truncate:u,objectFrozen:t,hasKey:v,joinRegExp:w,urlencode:x,uuid4:z,htmlTreeAsString:A,htmlElementAsString:B,isSameException:E,isSameStacktrace:F,parseUrl:y,fill:G,safeJoin:H,serializeException:M,serializeKeysForMessage:N,sanitize:O}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{11:11}],10:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}var e=a(9),f={collectWindowErrors:!0,debug:!1},g="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},h=[].slice,i="?",j=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;f.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function k(a,b){var c=null;if(!b||f.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(h.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,g,h){var l=null,m=e.isErrorEvent(h)?h.error:h,n=e.isErrorEvent(a)?a.message:a;if(v)f.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&e.isError(m))l=f.computeStackTrace(m),k(l,!0);else{var p,r={url:b,line:c,column:g},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(j);p&&(s=p[1],n=p[2])}r.func=i,l={name:s,message:n,url:d(),stack:[r]},k(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=g.onerror,g.onerror=l,r=!0)}function n(){r&&(g.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,k.apply(null,[a,!1].concat(b))}function p(a,b){var c=h.call(arguments,1);if(v){if(u===a)return;o()}var d=f.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),f.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,e,f=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,g=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,h=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,j=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,k=/\((\S*)(?::(\d+))(?::(\d+))\)/,l=a.stack.split("\n"),m=[],n=(/^(.*) is undefined$/.exec(a.message),0),o=l.length;n eval")>-1;q&&(b=j.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==n||c[5]||"undefined"==typeof a.columnNumber||(m[0].column=a.columnNumber+1),e={url:c[3],func:c[1]||i,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}!e.func&&e.line&&(e.func=i),m.push(e)}return m.length?{name:a.name,message:a.message,url:d(),stack:m}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=i),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,g){for(var h,j,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==e&&o!==f.report){if(j={url:null,func:i,line:null,column:null},o.name?j.func=o.name:(h=k.exec(o.toString()))&&(j.func=h[1]),"undefined"==typeof j.func)try{j.func=h.input.substring(0,h.input.indexOf("{"))}catch(p){}m[""+o]?n=!0:m[""+o]=!0,l.push(j); -}g&&l.splice(0,g);var q={name:a.name,message:a.message,url:d(),stack:l};return b(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),q}function e(b,e){var g=null;e=null==e?0:+e;try{if(g=a(b))return g}catch(h){if(f.debug)throw h}try{if(g=c(b,e+1))return g}catch(h){if(f.debug)throw h}return{name:b.name,message:b.message,url:d()}}return e.augmentStackTraceWithInitialElement=b,e.computeStackTraceFromStackProp=a,e}(),b.exports=f}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{9:9}],11:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}],12:[function(a,b,c){function d(a,b){var c=(65535&a)+(65535&b),d=(a>>16)+(b>>16)+(c>>16);return d<<16|65535&c}function e(a,b){return a<>>32-b}function f(a,b,c,f,g,h){return d(e(d(d(b,a),d(f,h)),g),c)}function g(a,b,c,d,e,g,h){return f(b&c|~b&d,a,b,e,g,h)}function h(a,b,c,d,e,g,h){return f(b&d|c&~d,a,b,e,g,h)}function i(a,b,c,d,e,g,h){return f(b^c^d,a,b,e,g,h)}function j(a,b,c,d,e,g,h){return f(c^(b|~d),a,b,e,g,h)}function k(a,b){a[b>>5]|=128<>>9<<4)+14]=b;var c,e,f,k,l,m=1732584193,n=-271733879,o=-1732584194,p=271733878;for(c=0;c>5]>>>b%32&255);return c}function m(a){var b,c=[];for(c[(a.length>>2)-1]=void 0,b=0;b>5]|=(255&a.charCodeAt(b/8))<16&&(e=k(e,8*a.length)),c=0;c<16;c+=1)f[c]=909522486^e[c],g[c]=1549556828^e[c];return d=k(f.concat(m(b)),512+8*b.length),l(k(g.concat(d),640))}function p(a){var b,c,d="0123456789abcdef",e="";for(c=0;c>>4&15)+d.charAt(15&b);return e}function q(a){return unescape(encodeURIComponent(a))}function r(a){return n(q(a))}function s(a){return p(r(a))}function t(a,b){return o(q(a),q(b))}function u(a,b){return p(t(a,b))}function v(a,b,c){return b?c?t(b,a):u(b,a):c?r(a):s(a)}b.exports=v},{}]},{},[8,1,2,3,4])(8)}); +/*! Raven.js 3.25.0 (80dffad) | github.com/getsentry/raven-js */ +!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.Raven=a()}}(function(){var a;return function b(a,c,d){function e(g,h){if(!c[g]){if(!a[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};a[g][0].call(k.exports,function(b){var c=a[g][1][b];return e(c?c:b)},k,k.exports,b,a,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;gthis.l.maxBreadcrumbs&&this.v.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.s.push([a,b]),this.o&&this.G(),this},setUserContext:function(a){return this.k.user=a,this},setExtraContext:function(a){return this.$("extra",a),this},setTagsContext:function(a){return this.$("tags",a),this},clearContext:function(){return this.k={},this},getContext:function(){return JSON.parse(h(this.k))},setEnvironment:function(a){return this.l.environment=a,this},setRelease:function(a){return this.l.release=a,this},setDataCallback:function(a){var b=this.l.dataCallback;return this.l.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.l.breadcrumbCallback;return this.l.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.l.shouldSendCallback;return this.l.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.l.transport=a,this},lastException:function(){return this.e},lastEventId:function(){return this.g},isSetup:function(){return!!this.b&&(!!this.h||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.A("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=R.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(S){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.I;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.k.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.K(this.H(c)),h=S.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(S.head||S.body).appendChild(h)}},M:function(){var a=this;this.n+=1,setTimeout(function(){a.n-=1})},_:function(a,b){var c,d;if(this.c){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),S.createEvent?(c=S.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=S.createEventObject(),c.eventType=a);for(d in b)A(b,d)&&(c[d]=b[d]);if(S.createEvent)S.dispatchEvent(c);else try{S.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},aa:function(a){var b=this;return function(c){if(b.ba=null,b.w!==c){b.w=c;var d;try{d=E(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ca:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.ba;g||a.aa("input")(c),clearTimeout(g),a.ba=setTimeout(function(){a.ba=null},b)}}},da:function(a,b){var c=H(this.x.href),d=H(b),e=H(a);this.y=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},D:function(){var a=this;a.ea=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.N?a.ea.apply(this.P,arguments):a.ea.apply(this,arguments)}},R:function(){this.ea&&(Function.prototype.toString=this.ea)},E:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.da(b.y,c+""),a.apply(this,arguments)}};I(history,"pushState",j,d),I(history,"replaceState",j,d)}if(c.console&&"console"in R&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};w(["debug","info","warn","error","log"],function(a,b){O(console,b,k)})}},S:function(){for(var a;this.u.length;){a=this.u.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},T:function(){for(var a in this.r)this.q[a]=this.r[a]},G:function(){var a=this;w(this.s,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},H:function(a){var b=Q.exec(a),c={},d=7;try{for(;d--;)c[P[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.l.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},K:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},B:function(){this.n||this.W.apply(this,arguments)},W:function(a,b){var c=this.Y(a,b);this._("handle",{stackInfo:a,options:b}),this.ga(a.name,a.message,a.url,a.lineno,c,b)},Y:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(w(a.stack,function(b,e){var f=c.ha(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.v,0)}),this.k.user&&(a.user=this.k.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),a=this.qa(a),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||v(a[b]))&&delete a[b]}),s(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!v(a)&&(!s(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.na()?void this.A("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function F(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&l(b))for(c=b.split(/\s+/),f=0;fc?Q(a,b-1):d}function R(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?X:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function S(a,b){function c(a){return m(a)?a.map(function(a){return c(a)}):k(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!m(b)||m(b)&&0===b.length)return a;var d,e=A(b),f="********";try{d=JSON.parse(T(a))}catch(g){return a}return c(d)}var T=a(11),U="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},V=3,W=51200,X=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isDOMError:g,isDOMException:h,isUndefined:i,isFunction:j,isPlainObject:k,isString:l,isArray:m,isEmptyObject:n,supportsErrorEvent:o,supportsDOMError:p,supportsDOMException:q,supportsFetch:r,supportsReferrerPolicy:s,supportsPromiseRejectionEvent:t,wrappedCallback:u,each:v,objectMerge:w,truncate:y,objectFrozen:x,hasKey:z,joinRegExp:A,urlencode:B,uuid4:D,htmlTreeAsString:E,htmlElementAsString:F,isSameException:I,isSameStacktrace:J,parseUrl:C,fill:K,safeJoin:L,serializeException:Q,serializeKeysForMessage:R,sanitize:S}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{11:11}],10:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}function e(){return"undefined"==typeof document||null==document.location?"":document.location.origin}var f=a(9),g={collectWindowErrors:!0,debug:!1},h="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},i=[].slice,j="?",k=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;g.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function e(a,b){var c=null;if(!b||g.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(i.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,h,i){var l=null,m=f.isErrorEvent(i)?i.error:i,n=f.isErrorEvent(a)?a.message:a;if(v)g.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&f.isError(m))l=g.computeStackTrace(m),e(l,!0);else{var p,r={url:b,line:c,column:h},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(k);p&&(s=p[1],n=p[2])}r.func=j,l={name:s,message:n,url:d(),stack:[r]},e(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=h.onerror,h.onerror=l,r=!0)}function n(){r&&(h.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,e.apply(null,[a,!1].concat(b))}function p(a,b){var c=i.call(arguments,1);if(v){if(u===a)return;o()}var d=g.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),g.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,f,g=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,h=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,i=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,k=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,l=/\((\S*)(?::(\d+))(?::(\d+))\)/,m=a.stack.split("\n"),n=[],o=(/^(.*) is undefined$/.exec(a.message),0),p=m.length;o eval")>-1;r&&(b=k.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==o||c[5]||"undefined"==typeof a.columnNumber||(n[0].column=a.columnNumber+1),f={url:c[3],func:c[1]||j,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}if(!f.func&&f.line&&(f.func=j),f.url&&"blob:"===f.url.substr(0,5)){var s=new XMLHttpRequest;if(s.open("GET",f.url,!1),s.send(null), +200===s.status){var t=s.responseText||"";t=t.slice(-300);var u=t.match(/\/\/# sourceMappingURL=(.*)$/);if(u){var v=u[1];"~"===v.charAt(0)&&(v=e()+v.slice(1)),f.url=v.slice(0,-4)}}}n.push(f)}return n.length?{name:a.name,message:a.message,url:d(),stack:n}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=j),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,e){for(var h,i,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==f&&o!==g.report){if(i={url:null,func:j,line:null,column:null},o.name?i.func=o.name:(h=k.exec(o.toString()))&&(i.func=h[1]),"undefined"==typeof i.func)try{i.func=h.input.substring(0,h.input.indexOf("{"))}catch(p){}m[""+o]?n=!0:m[""+o]=!0,l.push(i)}e&&l.splice(0,e);var q={name:a.name,message:a.message,url:d(),stack:l};return b(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),q}function f(b,e){var f=null;e=null==e?0:+e;try{if(f=a(b))return f}catch(h){if(g.debug)throw h}try{if(f=c(b,e+1))return f}catch(h){if(g.debug)throw h}return{name:b.name,message:b.message,url:d()}}return f.augmentStackTraceWithInitialElement=b,f.computeStackTraceFromStackProp=a,f}(),b.exports=g}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{9:9}],11:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}],12:[function(a,b,c){function d(a,b){var c=(65535&a)+(65535&b),d=(a>>16)+(b>>16)+(c>>16);return d<<16|65535&c}function e(a,b){return a<>>32-b}function f(a,b,c,f,g,h){return d(e(d(d(b,a),d(f,h)),g),c)}function g(a,b,c,d,e,g,h){return f(b&c|~b&d,a,b,e,g,h)}function h(a,b,c,d,e,g,h){return f(b&d|c&~d,a,b,e,g,h)}function i(a,b,c,d,e,g,h){return f(b^c^d,a,b,e,g,h)}function j(a,b,c,d,e,g,h){return f(c^(b|~d),a,b,e,g,h)}function k(a,b){a[b>>5]|=128<>>9<<4)+14]=b;var c,e,f,k,l,m=1732584193,n=-271733879,o=-1732584194,p=271733878;for(c=0;c>5]>>>b%32&255);return c}function m(a){var b,c=[];for(c[(a.length>>2)-1]=void 0,b=0;b>5]|=(255&a.charCodeAt(b/8))<16&&(e=k(e,8*a.length)),c=0;c<16;c+=1)f[c]=909522486^e[c],g[c]=1549556828^e[c];return d=k(f.concat(m(b)),512+8*b.length),l(k(g.concat(d),640))}function p(a){var b,c,d="0123456789abcdef",e="";for(c=0;c>>4&15)+d.charAt(15&b);return e}function q(a){return unescape(encodeURIComponent(a))}function r(a){return n(q(a))}function s(a){return p(r(a))}function t(a,b){return o(q(a),q(b))}function u(a,b){return p(t(a,b))}function v(a,b,c){return b?c?t(b,a):u(b,a):c?r(a):s(a)}b.exports=v},{}]},{},[8,1,2,3,4])(8)}); //# sourceMappingURL=raven.min.js.map \ No newline at end of file diff --git a/dist/angular,console,ember,require/raven.min.js.map b/dist/angular,console,ember,require/raven.min.js.map index 6ee4a92dd402..947a4cb262ba 100644 --- a/dist/angular,console,ember,require/raven.min.js.map +++ b/dist/angular,console,ember,require/raven.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","angularPlugin","angular","RavenProvider","$get","$window","ExceptionHandlerProvider","$provide","decorator","exceptionHandler","R","$delegate","ex","cause","captureException","extra","moduleName","provider","config","setDataCallback","wrappedCallback","data","_normalizeData","angularPattern","exception","values","matches","exec","value","type","message","angularDocs","substr","addPlugin","8","9","2","consolePlugin","console","pluginOptions","logLevels","levels","push","callback","msg","captureMessage","level","pop","wrapConsoleMethod","wrapMethod","6","3","emberPlugin","Ember","_oldOnError","onerror","error","RSVP","on","reason","context","4","requirePlugin","wrap","deep","5","RavenConfigError","name","prototype","constructor","utils","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","safeJoin","logger","Function","apply","7","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","sanitizeKeys","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isError","isObject","isPlainObject","isErrorEvent","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","sanitize","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","dsn","options","_logDebug","globalOptions","key","setDSN","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","toString","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","func","undefined","_before","wrapped","_ignoreNextOnError","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","U","event","unhandledPromiseRejection","C","_promiseRejectionHandler","bind","addEventListener","Q","removeEventListener","trimHeadFrames","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","V","currentOptions","exKeys","Object","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","M","setTimeout","_","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","aa","evtName","_keypressTimeout","target","category","ca","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","da","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","D","_originalFunctionToString","E","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","F","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","S","builtin","T","G","installer","concat","H","str","m","allowSecretKey","K","port","B","W","stackInfo","_triggerEvent","_processException","lineno","Y","frame","_normalizeFrame","in_app","ha","stackInfoUrl","normalized","filename","line","colno","column","function","ga","prefixedMessage","culprit","ia","request","Referer","breadcrumbs","_trimBreadcrumbs","ja","urlProp","urlProps","ka","httpData","userAgent","User-Agent","referrer","z","_backoffDuration","_backoffStart","na","oa","current","last","pa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Z","baseData","project","platform","_getHttpData","serverName","server_name","_sanitizeData","forEach","random","_sendProcessedPayload","qa","sa","ra","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","ta","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","open","setRequestHeader","send","ua","hash","evaluated","A","$","setUser","setReleaseContext","10","11","12","RavenConstructor","_Raven","noConflict","Client","what","supportsErrorEvent","ErrorEvent","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","sanitizeMask","safeInput","o_O","getLocationHref","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","y","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","charAt","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","string","raw"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file +{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","angularPlugin","angular","RavenProvider","$get","$window","ExceptionHandlerProvider","$provide","decorator","exceptionHandler","R","$delegate","ex","cause","captureException","extra","moduleName","provider","config","setDataCallback","wrappedCallback","data","_normalizeData","angularPattern","exception","values","matches","exec","value","type","message","angularDocs","substr","addPlugin","8","9","2","consolePlugin","console","pluginOptions","logLevels","levels","push","callback","msg","captureMessage","level","pop","wrapConsoleMethod","wrapMethod","6","3","emberPlugin","Ember","_oldOnError","onerror","error","RSVP","on","reason","context","4","requirePlugin","wrap","deep","5","RavenConfigError","name","prototype","constructor","utils","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","safeJoin","logger","Function","apply","7","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","sanitizeKeys","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isErrorEvent","isDOMError","isDOMException","isError","isObject","isPlainObject","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","sanitize","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","dsn","options","_logDebug","globalOptions","key","setDSN","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","toString","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","func","undefined","_before","wrapped","_ignoreNextOnError","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","U","event","unhandledPromiseRejection","C","_promiseRejectionHandler","bind","addEventListener","Q","removeEventListener","trimHeadFrames","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","V","currentOptions","exKeys","Object","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","M","setTimeout","_","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","aa","evtName","_keypressTimeout","target","category","ca","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","da","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","D","_originalFunctionToString","E","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","F","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","S","builtin","T","G","installer","concat","H","str","m","allowSecretKey","K","port","B","W","stackInfo","_triggerEvent","_processException","lineno","Y","frame","_normalizeFrame","in_app","ha","stackInfoUrl","normalized","filename","line","colno","column","function","ga","prefixedMessage","culprit","ia","request","Referer","breadcrumbs","_trimBreadcrumbs","ja","urlProp","urlProps","ka","httpData","userAgent","User-Agent","referrer","z","_backoffDuration","_backoffStart","na","oa","current","last","pa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Z","baseData","project","platform","_getHttpData","serverName","server_name","_sanitizeData","forEach","random","_sendProcessedPayload","qa","sa","ra","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","ta","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","open","setRequestHeader","send","ua","hash","evaluated","A","$","setUser","setReleaseContext","10","11","12","RavenConstructor","_Raven","noConflict","Client","what","supportsErrorEvent","ErrorEvent","supportsDOMError","DOMError","supportsDOMException","DOMException","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","sanitizeMask","safeInput","o_O","getLocationHref","getLocationOrigin","origin","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","responseText","sourceMaps","sourceMapAddress","charAt","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","y","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","string","raw"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file diff --git a/dist/angular,console,ember,vue/raven.js b/dist/angular,console,ember,vue/raven.js index 7a1448e0d6a7..d84a9d9117ad 100644 --- a/dist/angular,console,ember,vue/raven.js +++ b/dist/angular,console,ember,vue/raven.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.24.2 (540f32b) | github.com/getsentry/raven-js */ +/*! Raven.js 3.25.0 (80dffad) | github.com/getsentry/raven-js */ /* * Includes TraceKit @@ -269,10 +269,12 @@ var md5 = _dereq_(12); var RavenConfigError = _dereq_(5); var utils = _dereq_(9); +var isErrorEvent = utils.isErrorEvent; +var isDOMError = utils.isDOMError; +var isDOMException = utils.isDOMException; var isError = utils.isError; var isObject = utils.isObject; var isPlainObject = utils.isPlainObject; -var isErrorEvent = utils.isErrorEvent; var isUndefined = utils.isUndefined; var isFunction = utils.isFunction; var isString = utils.isString; @@ -400,7 +402,7 @@ Raven.prototype = { // webpack (using a build step causes webpack #1617). Grunt verifies that // this value matches package.json during build. // See: https://github.com/getsentry/raven-js/issues/465 - VERSION: '3.24.2', + VERSION: '3.25.0', debug: false, @@ -732,6 +734,23 @@ Raven.prototype = { if (isErrorEvent(ex) && ex.error) { // If it is an ErrorEvent with `error` property, extract it to get actual Error ex = ex.error; + } else if (isDOMError(ex) || isDOMException(ex)) { + // If it is a DOMError or DOMException (which are legacy APIs, but still supported in some browsers) + // then we just extract the name and message, as they don't provide anything else + // https://developer.mozilla.org/en-US/docs/Web/API/DOMError + // https://developer.mozilla.org/en-US/docs/Web/API/DOMException + var name = ex.name || (isDOMError(ex) ? 'DOMError' : 'DOMException'); + var message = ex.message ? name + ': ' + ex.message : name; + + return this.captureMessage( + message, + objectMerge(options, { + // neither DOMError or DOMException provide stack trace and we most likely wont get it this way as well + // but it's barely any overhead so we may at least try + stacktrace: true, + trimHeadFrames: options.trimHeadFrames + 1 + }) + ); } else if (isError(ex)) { // we have a real Error object ex = ex; @@ -743,6 +762,7 @@ Raven.prototype = { ex = new Error(options.message); } else { // If none of previous checks were valid, then it means that + // it's not a DOMError/DOMException // it's not a plain Object // it's not a valid ErrorEvent (one with an error property) // it's not an Error @@ -2515,7 +2535,7 @@ function isObject(what) { // Yanked from https://git.io/vS8DV re-used under CC0 // with some tiny modifications function isError(value) { - switch ({}.toString.call(value)) { + switch (Object.prototype.toString.call(value)) { case '[object Error]': return true; case '[object Exception]': @@ -2528,7 +2548,15 @@ function isError(value) { } function isErrorEvent(value) { - return supportsErrorEvent() && {}.toString.call(value) === '[object ErrorEvent]'; + return Object.prototype.toString.call(value) === '[object ErrorEvent]'; +} + +function isDOMError(value) { + return Object.prototype.toString.call(value) === '[object DOMError]'; +} + +function isDOMException(value) { + return Object.prototype.toString.call(value) === '[object DOMException]'; } function isUndefined(what) { @@ -2571,6 +2599,24 @@ function supportsErrorEvent() { } } +function supportsDOMError() { + try { + new DOMError(''); // eslint-disable-line no-new + return true; + } catch (e) { + return false; + } +} + +function supportsDOMException() { + try { + new DOMException(''); // eslint-disable-line no-new + return true; + } catch (e) { + return false; + } +} + function supportsFetch() { if (!('fetch' in _window)) return false; @@ -3086,6 +3132,8 @@ module.exports = { isObject: isObject, isError: isError, isErrorEvent: isErrorEvent, + isDOMError: isDOMError, + isDOMException: isDOMException, isUndefined: isUndefined, isFunction: isFunction, isPlainObject: isPlainObject, @@ -3093,6 +3141,8 @@ module.exports = { isArray: isArray, isEmptyObject: isEmptyObject, supportsErrorEvent: supportsErrorEvent, + supportsDOMError: supportsDOMError, + supportsDOMException: supportsDOMException, supportsFetch: supportsFetch, supportsReferrerPolicy: supportsReferrerPolicy, supportsPromiseRejectionEvent: supportsPromiseRejectionEvent, @@ -3152,10 +3202,14 @@ var ERROR_TYPES_RE = /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Ran function getLocationHref() { if (typeof document === 'undefined' || document.location == null) return ''; - return document.location.href; } +function getLocationOrigin() { + if (typeof document === 'undefined' || document.location == null) return ''; + return document.location.origin; +} + /** * TraceKit.report: cross-browser processing of unhandled exceptions * @@ -3563,6 +3617,44 @@ TraceKit.computeStackTrace = (function computeStackTraceWrapper() { element.func = UNKNOWN_FUNCTION; } + if (element.url && element.url.substr(0, 5) === 'blob:') { + // Special case for handling JavaScript loaded into a blob. + // We use a synchronous AJAX request here as a blob is already in + // memory - it's not making a network request. This will generate a warning + // in the browser console, but there has already been an error so that's not + // that much of an issue. + var xhr = new XMLHttpRequest(); + xhr.open('GET', element.url, false); + xhr.send(null); + + // If we failed to download the source, skip this patch + if (xhr.status === 200) { + var source = xhr.responseText || ''; + + // We trim the source down to the last 300 characters as sourceMappingURL is always at the end of the file. + // Why 300? To be in line with: https://github.com/getsentry/sentry/blob/4af29e8f2350e20c28a6933354e4f42437b4ba42/src/sentry/lang/javascript/processor.py#L164-L175 + source = source.slice(-300); + + // Now we dig out the source map URL + var sourceMaps = source.match(/\/\/# sourceMappingURL=(.*)$/); + + // If we don't find a source map comment or we find more than one, continue on to the next element. + if (sourceMaps) { + var sourceMapAddress = sourceMaps[1]; + + // Now we check to see if it's a relative URL. + // If it is, convert it to an absolute one. + if (sourceMapAddress.charAt(0) === '~') { + sourceMapAddress = getLocationOrigin() + sourceMapAddress.slice(1); + } + + // Now we strip the '.map' off of the end of the URL and update the + // element so that Sentry can match the map to the blob. + element.url = sourceMapAddress.slice(0, -4); + } + } + } + stack.push(element); } diff --git a/dist/angular,console,ember,vue/raven.min.js b/dist/angular,console,ember,vue/raven.min.js index eb9433704491..22d468c975d6 100644 --- a/dist/angular,console,ember,vue/raven.min.js +++ b/dist/angular,console,ember,vue/raven.min.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.24.2 (540f32b) | github.com/getsentry/raven-js */ -!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.Raven=a()}}(function(){return function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};b[g][0].call(k.exports,function(a){var c=b[g][1][a];return e(c?c:a)},k,k.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;g":"anonymous component")+(a._isVue&&a.$options.__file?" at "+a.$options.__file:"")}function e(a,b){if(b=b||window.Vue,b&&b.config){var c=b.config.errorHandler;b.config.errorHandler=function(b,e,f){var g={};"[object Object]"===Object.prototype.toString.call(e)&&(g.componentName=d(e),g.propsData=e.$options.propsData),"undefined"!=typeof f&&(g.lifecycleHook=f),a.captureException(b,{extra:g}),"function"==typeof c&&c.call(this,b,e,f)}}}b.exports=e,a(8).addPlugin(b.exports)},{8:8}],5:[function(a,b,c){function d(a){this.name="RavenConfigError",this.message=a}d.prototype=new Error,d.prototype.constructor=d,b.exports=d},{}],6:[function(a,b,c){var d=a(9),e=function(a,b,c){var e=a[b],f=a;if(b in a){var g="warn"===b?"warning":b;a[b]=function(){var a=[].slice.call(arguments),h=d.safeJoin(a," "),i={level:g,logger:"console",extra:{arguments:a}};"assert"===b?a[0]===!1&&(h="Assertion failed: "+(d.safeJoin(a.slice(1)," ")||"console.assert"),i.extra.arguments=a.slice(1),c&&c(h,i)):c&&c(h,i),e&&Function.prototype.apply.call(e,f,a)}}};b.exports={wrapMethod:e}},{9:9}],7:[function(a,b,c){(function(c){function d(){return+new Date}function e(a,b){return q(b)?function(c){return b(c,a)}:b}function f(){this.b=!("object"!=typeof JSON||!JSON.stringify),this.c=!p(Q),this.d=!p(R),this.e=null,this.f=null,this.g=null,this.h=null,this.i=null,this.j=null,this.k={},this.l={release:P.SENTRY_RELEASE&&P.SENTRY_RELEASE.id,logger:"javascript",ignoreErrors:[],ignoreUrls:[],whitelistUrls:[],includePaths:[],headers:null,collectWindowErrors:!0,captureUnhandledRejections:!0,maxMessageLength:0,maxUrlLength:250,stackTraceLimit:50,autoBreadcrumbs:!0,instrument:!0,sampleRate:1,sanitizeKeys:[]},this.m={method:"POST",keepalive:!0,referrerPolicy:I()?"origin":""},this.n=0,this.o=!1,this.p=Error.stackTraceLimit,this.q=P.console||{},this.r={},this.s=[],this.t=d(),this.u=[],this.v=[],this.w=null,this.x=P.location,this.y=this.x&&this.x.href,this.z();for(var a in this.q)this.r[a]=this.q[a]}var g=a(10),h=a(11),i=a(12),j=a(5),k=a(9),l=k.isError,m=k.isObject,n=k.isPlainObject,o=k.isErrorEvent,p=k.isUndefined,q=k.isFunction,r=k.isString,s=k.isArray,t=k.isEmptyObject,u=k.each,v=k.objectMerge,w=k.truncate,x=k.objectFrozen,y=k.hasKey,z=k.joinRegExp,A=k.urlencode,B=k.uuid4,C=k.htmlTreeAsString,D=k.isSameException,E=k.isSameStacktrace,F=k.parseUrl,G=k.fill,H=k.supportsFetch,I=k.supportsReferrerPolicy,J=k.serializeKeysForMessage,K=k.serializeException,L=k.sanitize,M=a(6).wrapMethod,N="source protocol user pass host port path".split(" "),O=/^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/,P="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},Q=P.document,R=P.navigator;f.prototype={VERSION:"3.24.2",debug:!1,TraceKit:g,config:function(a,b){var c=this;if(c.h)return this.A("error","Error: Raven has already been configured"),c;if(!a)return c;var d=c.l;b&&u(b,function(a,b){"tags"===a||"extra"===a||"user"===a?c.k[a]=b:d[a]=b}),c.setDSN(a),d.ignoreErrors.push(/^Script error\.?$/),d.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/),d.ignoreErrors=z(d.ignoreErrors),d.ignoreUrls=!!d.ignoreUrls.length&&z(d.ignoreUrls),d.whitelistUrls=!!d.whitelistUrls.length&&z(d.whitelistUrls),d.includePaths=z(d.includePaths),d.maxBreadcrumbs=Math.max(0,Math.min(d.maxBreadcrumbs||100,100));var e={xhr:!0,console:!0,dom:!0,location:!0,sentry:!0},f=d.autoBreadcrumbs;"[object Object]"==={}.toString.call(f)?f=v(e,f):f!==!1&&(f=e),d.autoBreadcrumbs=f;var h={tryCatch:!0},i=d.instrument;return"[object Object]"==={}.toString.call(i)?i=v(h,i):i!==!1&&(i=h),d.instrument=i,g.collectWindowErrors=!!d.collectWindowErrors,c},install:function(){var a=this;return a.isSetup()&&!a.o&&(g.report.subscribe(function(){a.B.apply(a,arguments)}),a.l.captureUnhandledRejections&&a.C(),a.D(),a.l.instrument&&a.l.instrument.tryCatch&&a.E(),a.l.autoBreadcrumbs&&a.F(),a.G(),a.o=!0),Error.stackTraceLimit=a.l.stackTraceLimit,this},setDSN:function(a){var b=this,c=b.H(a),d=c.path.lastIndexOf("/"),e=c.path.substr(1,d);b.I=a,b.i=c.user,b.J=c.pass&&c.pass.substr(1),b.j=c.path.substr(d+1),b.h=b.K(c),b.L=b.h+"/"+e+"api/"+b.j+"/store/",this.z()},context:function(a,b,c){return q(a)&&(c=b||[],b=a,a=void 0),this.wrap(a,b).apply(this,c)},wrap:function(a,b,c){function d(){var d=[],f=arguments.length,g=!a||a&&a.deep!==!1;for(c&&q(c)&&c.apply(this,arguments);f--;)d[f]=g?e.wrap(a,arguments[f]):arguments[f];try{return b.apply(this,d)}catch(h){throw e.M(),e.captureException(h,a),h}}var e=this;if(p(b)&&!q(a))return a;if(q(a)&&(b=a,a=void 0),!q(b))return b;try{if(b.N)return b;if(b.O)return b.O}catch(f){return b}for(var g in b)y(b,g)&&(d[g]=b[g]);return d.prototype=b.prototype,b.O=d,d.N=!0,d.P=b,d},uninstall:function(){return g.report.uninstall(),this.Q(),this.R(),this.S(),this.T(),Error.stackTraceLimit=this.p,this.o=!1,this},U:function(a){this.A("debug","Raven caught unhandled promise rejection:",a),this.captureException(a.reason,{extra:{unhandledPromiseRejection:!0}})},C:function(){return this.U=this.U.bind(this),P.addEventListener&&P.addEventListener("unhandledrejection",this.U),this},Q:function(){return P.removeEventListener&&P.removeEventListener("unhandledrejection",this.U),this},captureException:function(a,b){if(b=v({trimHeadFrames:0},b?b:{}),o(a)&&a.error)a=a.error;else if(l(a))a=a;else{if(!n(a))return this.captureMessage(a,v(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}));b=this.V(b,a),a=new Error(b.message)}this.e=a;try{var c=g.computeStackTrace(a);this.W(c,b)}catch(d){if(a!==d)throw d}return this},V:function(a,b){var c=Object.keys(b).sort(),d=v(a,{message:"Non-Error exception captured with keys: "+J(c),fingerprint:[i(c)],extra:a.extra||{}});return d.extra.X=K(b),d},captureMessage:function(a,b){if(!this.l.ignoreErrors.test||!this.l.ignoreErrors.test(a)){b=b||{},a+="";var c,d=v({message:a},b);try{throw new Error(a)}catch(e){c=e}c.name=null;var f=g.computeStackTrace(c),h=s(f.stack)&&f.stack[1];h&&"Raven.captureException"===h.func&&(h=f.stack[2]);var i=h&&h.url||"";if((!this.l.ignoreUrls.test||!this.l.ignoreUrls.test(i))&&(!this.l.whitelistUrls.test||this.l.whitelistUrls.test(i))){if(this.l.stacktrace||b&&b.stacktrace){d.fingerprint=null==d.fingerprint?a:d.fingerprint,b=v({trimHeadFrames:0},b),b.trimHeadFrames+=1;var j=this.Y(f,b);d.stacktrace={frames:j.reverse()}}return d.fingerprint&&(d.fingerprint=s(d.fingerprint)?d.fingerprint:[d.fingerprint]),this.Z(d),this}}},captureBreadcrumb:function(a){var b=v({timestamp:d()/1e3},a);if(q(this.l.breadcrumbCallback)){var c=this.l.breadcrumbCallback(b);if(m(c)&&!t(c))b=c;else if(c===!1)return this}return this.v.push(b),this.v.length>this.l.maxBreadcrumbs&&this.v.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.s.push([a,b]),this.o&&this.G(),this},setUserContext:function(a){return this.k.user=a,this},setExtraContext:function(a){return this.$("extra",a),this},setTagsContext:function(a){return this.$("tags",a),this},clearContext:function(){return this.k={},this},getContext:function(){return JSON.parse(h(this.k))},setEnvironment:function(a){return this.l.environment=a,this},setRelease:function(a){return this.l.release=a,this},setDataCallback:function(a){var b=this.l.dataCallback;return this.l.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.l.breadcrumbCallback;return this.l.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.l.shouldSendCallback;return this.l.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.l.transport=a,this},lastException:function(){return this.e},lastEventId:function(){return this.g},isSetup:function(){return!!this.b&&(!!this.h||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.A("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=P.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(Q){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.I;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.k.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.K(this.H(c)),h=Q.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(Q.head||Q.body).appendChild(h)}},M:function(){var a=this;this.n+=1,setTimeout(function(){a.n-=1})},_:function(a,b){var c,d;if(this.c){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),Q.createEvent?(c=Q.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=Q.createEventObject(),c.eventType=a);for(d in b)y(b,d)&&(c[d]=b[d]);if(Q.createEvent)Q.dispatchEvent(c);else try{Q.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},aa:function(a){var b=this;return function(c){if(b.ba=null,b.w!==c){b.w=c;var d;try{d=C(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ca:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.ba;g||a.aa("input")(c),clearTimeout(g),a.ba=setTimeout(function(){a.ba=null},b)}}},da:function(a,b){var c=F(this.x.href),d=F(b),e=F(a);this.y=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},D:function(){var a=this;a.ea=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.N?a.ea.apply(this.P,arguments):a.ea.apply(this,arguments)}},R:function(){this.ea&&(Function.prototype.toString=this.ea)},E:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.da(b.y,c+""),a.apply(this,arguments)}};G(history,"pushState",j,d),G(history,"replaceState",j,d)}if(c.console&&"console"in P&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};u(["debug","info","warn","error","log"],function(a,b){M(console,b,k)})}},S:function(){for(var a;this.u.length;){a=this.u.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},T:function(){for(var a in this.r)this.q[a]=this.r[a]},G:function(){var a=this;u(this.s,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},H:function(a){var b=O.exec(a),c={},d=7;try{for(;d--;)c[N[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.l.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},K:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},B:function(){this.n||this.W.apply(this,arguments)},W:function(a,b){var c=this.Y(a,b);this._("handle",{stackInfo:a,options:b}),this.ga(a.name,a.message,a.url,a.lineno,c,b)},Y:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(u(a.stack,function(b,e){var f=c.ha(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.v,0)}),this.k.user&&(a.user=this.k.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),a=this.qa(a),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||t(a[b]))&&delete a[b]}),q(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!t(a)&&(!q(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.na()?void this.A("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function B(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&j(b))for(c=b.split(/\s+/),f=0;fc?M(a,b-1):d}function N(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?T:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function O(a,b){function c(a){return k(a)?a.map(function(a){return c(a)}):i(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!k(b)||k(b)&&0===b.length)return a;var d,e=w(b),f="********";try{d=JSON.parse(P(a))}catch(g){return a}return c(d)}var P=a(11),Q="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},R=3,S=51200,T=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isUndefined:g,isFunction:h,isPlainObject:i,isString:j,isArray:k,isEmptyObject:l,supportsErrorEvent:m,supportsFetch:n,supportsReferrerPolicy:o,supportsPromiseRejectionEvent:p,wrappedCallback:q,each:r,objectMerge:s,truncate:u,objectFrozen:t,hasKey:v,joinRegExp:w,urlencode:x,uuid4:z,htmlTreeAsString:A,htmlElementAsString:B,isSameException:E,isSameStacktrace:F,parseUrl:y,fill:G,safeJoin:H,serializeException:M,serializeKeysForMessage:N,sanitize:O}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{11:11}],10:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}var e=a(9),f={collectWindowErrors:!0,debug:!1},g="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},h=[].slice,i="?",j=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;f.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function k(a,b){var c=null;if(!b||f.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(h.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,g,h){var l=null,m=e.isErrorEvent(h)?h.error:h,n=e.isErrorEvent(a)?a.message:a;if(v)f.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&e.isError(m))l=f.computeStackTrace(m),k(l,!0);else{var p,r={url:b,line:c,column:g},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(j);p&&(s=p[1],n=p[2])}r.func=i,l={name:s,message:n,url:d(),stack:[r]},k(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=g.onerror,g.onerror=l,r=!0)}function n(){r&&(g.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,k.apply(null,[a,!1].concat(b))}function p(a,b){var c=h.call(arguments,1);if(v){if(u===a)return;o()}var d=f.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),f.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,e,f=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,g=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,h=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,j=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,k=/\((\S*)(?::(\d+))(?::(\d+))\)/,l=a.stack.split("\n"),m=[],n=(/^(.*) is undefined$/.exec(a.message),0),o=l.length;n eval")>-1;q&&(b=j.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==n||c[5]||"undefined"==typeof a.columnNumber||(m[0].column=a.columnNumber+1),e={url:c[3],func:c[1]||i,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}!e.func&&e.line&&(e.func=i),m.push(e)}return m.length?{name:a.name,message:a.message,url:d(),stack:m}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=i),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1} -return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,g){for(var h,j,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==e&&o!==f.report){if(j={url:null,func:i,line:null,column:null},o.name?j.func=o.name:(h=k.exec(o.toString()))&&(j.func=h[1]),"undefined"==typeof j.func)try{j.func=h.input.substring(0,h.input.indexOf("{"))}catch(p){}m[""+o]?n=!0:m[""+o]=!0,l.push(j)}g&&l.splice(0,g);var q={name:a.name,message:a.message,url:d(),stack:l};return b(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),q}function e(b,e){var g=null;e=null==e?0:+e;try{if(g=a(b))return g}catch(h){if(f.debug)throw h}try{if(g=c(b,e+1))return g}catch(h){if(f.debug)throw h}return{name:b.name,message:b.message,url:d()}}return e.augmentStackTraceWithInitialElement=b,e.computeStackTraceFromStackProp=a,e}(),b.exports=f}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{9:9}],11:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}],12:[function(a,b,c){function d(a,b){var c=(65535&a)+(65535&b),d=(a>>16)+(b>>16)+(c>>16);return d<<16|65535&c}function e(a,b){return a<>>32-b}function f(a,b,c,f,g,h){return d(e(d(d(b,a),d(f,h)),g),c)}function g(a,b,c,d,e,g,h){return f(b&c|~b&d,a,b,e,g,h)}function h(a,b,c,d,e,g,h){return f(b&d|c&~d,a,b,e,g,h)}function i(a,b,c,d,e,g,h){return f(b^c^d,a,b,e,g,h)}function j(a,b,c,d,e,g,h){return f(c^(b|~d),a,b,e,g,h)}function k(a,b){a[b>>5]|=128<>>9<<4)+14]=b;var c,e,f,k,l,m=1732584193,n=-271733879,o=-1732584194,p=271733878;for(c=0;c>5]>>>b%32&255);return c}function m(a){var b,c=[];for(c[(a.length>>2)-1]=void 0,b=0;b>5]|=(255&a.charCodeAt(b/8))<16&&(e=k(e,8*a.length)),c=0;c<16;c+=1)f[c]=909522486^e[c],g[c]=1549556828^e[c];return d=k(f.concat(m(b)),512+8*b.length),l(k(g.concat(d),640))}function p(a){var b,c,d="0123456789abcdef",e="";for(c=0;c>>4&15)+d.charAt(15&b);return e}function q(a){return unescape(encodeURIComponent(a))}function r(a){return n(q(a))}function s(a){return p(r(a))}function t(a,b){return o(q(a),q(b))}function u(a,b){return p(t(a,b))}function v(a,b,c){return b?c?t(b,a):u(b,a):c?r(a):s(a)}b.exports=v},{}]},{},[8,1,2,3,4])(8)}); +/*! Raven.js 3.25.0 (80dffad) | github.com/getsentry/raven-js */ +!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.Raven=a()}}(function(){return function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};b[g][0].call(k.exports,function(a){var c=b[g][1][a];return e(c?c:a)},k,k.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;g":"anonymous component")+(a._isVue&&a.$options.__file?" at "+a.$options.__file:"")}function e(a,b){if(b=b||window.Vue,b&&b.config){var c=b.config.errorHandler;b.config.errorHandler=function(b,e,f){var g={};"[object Object]"===Object.prototype.toString.call(e)&&(g.componentName=d(e),g.propsData=e.$options.propsData),"undefined"!=typeof f&&(g.lifecycleHook=f),a.captureException(b,{extra:g}),"function"==typeof c&&c.call(this,b,e,f)}}}b.exports=e,a(8).addPlugin(b.exports)},{8:8}],5:[function(a,b,c){function d(a){this.name="RavenConfigError",this.message=a}d.prototype=new Error,d.prototype.constructor=d,b.exports=d},{}],6:[function(a,b,c){var d=a(9),e=function(a,b,c){var e=a[b],f=a;if(b in a){var g="warn"===b?"warning":b;a[b]=function(){var a=[].slice.call(arguments),h=d.safeJoin(a," "),i={level:g,logger:"console",extra:{arguments:a}};"assert"===b?a[0]===!1&&(h="Assertion failed: "+(d.safeJoin(a.slice(1)," ")||"console.assert"),i.extra.arguments=a.slice(1),c&&c(h,i)):c&&c(h,i),e&&Function.prototype.apply.call(e,f,a)}}};b.exports={wrapMethod:e}},{9:9}],7:[function(a,b,c){(function(c){function d(){return+new Date}function e(a,b){return s(b)?function(c){return b(c,a)}:b}function f(){this.b=!("object"!=typeof JSON||!JSON.stringify),this.c=!r(S),this.d=!r(T),this.e=null,this.f=null,this.g=null,this.h=null,this.i=null,this.j=null,this.k={},this.l={release:R.SENTRY_RELEASE&&R.SENTRY_RELEASE.id,logger:"javascript",ignoreErrors:[],ignoreUrls:[],whitelistUrls:[],includePaths:[],headers:null,collectWindowErrors:!0,captureUnhandledRejections:!0,maxMessageLength:0,maxUrlLength:250,stackTraceLimit:50,autoBreadcrumbs:!0,instrument:!0,sampleRate:1,sanitizeKeys:[]},this.m={method:"POST",keepalive:!0,referrerPolicy:K()?"origin":""},this.n=0,this.o=!1,this.p=Error.stackTraceLimit,this.q=R.console||{},this.r={},this.s=[],this.t=d(),this.u=[],this.v=[],this.w=null,this.x=R.location,this.y=this.x&&this.x.href,this.z();for(var a in this.q)this.r[a]=this.q[a]}var g=a(10),h=a(11),i=a(12),j=a(5),k=a(9),l=k.isErrorEvent,m=k.isDOMError,n=k.isDOMException,o=k.isError,p=k.isObject,q=k.isPlainObject,r=k.isUndefined,s=k.isFunction,t=k.isString,u=k.isArray,v=k.isEmptyObject,w=k.each,x=k.objectMerge,y=k.truncate,z=k.objectFrozen,A=k.hasKey,B=k.joinRegExp,C=k.urlencode,D=k.uuid4,E=k.htmlTreeAsString,F=k.isSameException,G=k.isSameStacktrace,H=k.parseUrl,I=k.fill,J=k.supportsFetch,K=k.supportsReferrerPolicy,L=k.serializeKeysForMessage,M=k.serializeException,N=k.sanitize,O=a(6).wrapMethod,P="source protocol user pass host port path".split(" "),Q=/^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/,R="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},S=R.document,T=R.navigator;f.prototype={VERSION:"3.25.0",debug:!1,TraceKit:g,config:function(a,b){var c=this;if(c.h)return this.A("error","Error: Raven has already been configured"),c;if(!a)return c;var d=c.l;b&&w(b,function(a,b){"tags"===a||"extra"===a||"user"===a?c.k[a]=b:d[a]=b}),c.setDSN(a),d.ignoreErrors.push(/^Script error\.?$/),d.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/),d.ignoreErrors=B(d.ignoreErrors),d.ignoreUrls=!!d.ignoreUrls.length&&B(d.ignoreUrls),d.whitelistUrls=!!d.whitelistUrls.length&&B(d.whitelistUrls),d.includePaths=B(d.includePaths),d.maxBreadcrumbs=Math.max(0,Math.min(d.maxBreadcrumbs||100,100));var e={xhr:!0,console:!0,dom:!0,location:!0,sentry:!0},f=d.autoBreadcrumbs;"[object Object]"==={}.toString.call(f)?f=x(e,f):f!==!1&&(f=e),d.autoBreadcrumbs=f;var h={tryCatch:!0},i=d.instrument;return"[object Object]"==={}.toString.call(i)?i=x(h,i):i!==!1&&(i=h),d.instrument=i,g.collectWindowErrors=!!d.collectWindowErrors,c},install:function(){var a=this;return a.isSetup()&&!a.o&&(g.report.subscribe(function(){a.B.apply(a,arguments)}),a.l.captureUnhandledRejections&&a.C(),a.D(),a.l.instrument&&a.l.instrument.tryCatch&&a.E(),a.l.autoBreadcrumbs&&a.F(),a.G(),a.o=!0),Error.stackTraceLimit=a.l.stackTraceLimit,this},setDSN:function(a){var b=this,c=b.H(a),d=c.path.lastIndexOf("/"),e=c.path.substr(1,d);b.I=a,b.i=c.user,b.J=c.pass&&c.pass.substr(1),b.j=c.path.substr(d+1),b.h=b.K(c),b.L=b.h+"/"+e+"api/"+b.j+"/store/",this.z()},context:function(a,b,c){return s(a)&&(c=b||[],b=a,a=void 0),this.wrap(a,b).apply(this,c)},wrap:function(a,b,c){function d(){var d=[],f=arguments.length,g=!a||a&&a.deep!==!1;for(c&&s(c)&&c.apply(this,arguments);f--;)d[f]=g?e.wrap(a,arguments[f]):arguments[f];try{return b.apply(this,d)}catch(h){throw e.M(),e.captureException(h,a),h}}var e=this;if(r(b)&&!s(a))return a;if(s(a)&&(b=a,a=void 0),!s(b))return b;try{if(b.N)return b;if(b.O)return b.O}catch(f){return b}for(var g in b)A(b,g)&&(d[g]=b[g]);return d.prototype=b.prototype,b.O=d,d.N=!0,d.P=b,d},uninstall:function(){return g.report.uninstall(),this.Q(),this.R(),this.S(),this.T(),Error.stackTraceLimit=this.p,this.o=!1,this},U:function(a){this.A("debug","Raven caught unhandled promise rejection:",a),this.captureException(a.reason,{extra:{unhandledPromiseRejection:!0}})},C:function(){return this.U=this.U.bind(this),R.addEventListener&&R.addEventListener("unhandledrejection",this.U),this},Q:function(){return R.removeEventListener&&R.removeEventListener("unhandledrejection",this.U),this},captureException:function(a,b){if(b=x({trimHeadFrames:0},b?b:{}),l(a)&&a.error)a=a.error;else{if(m(a)||n(a)){var c=a.name||(m(a)?"DOMError":"DOMException"),d=a.message?c+": "+a.message:c;return this.captureMessage(d,x(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}))}if(o(a))a=a;else{if(!q(a))return this.captureMessage(a,x(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}));b=this.V(b,a),a=new Error(b.message)}}this.e=a;try{var e=g.computeStackTrace(a);this.W(e,b)}catch(f){if(a!==f)throw f}return this},V:function(a,b){var c=Object.keys(b).sort(),d=x(a,{message:"Non-Error exception captured with keys: "+L(c),fingerprint:[i(c)],extra:a.extra||{}});return d.extra.X=M(b),d},captureMessage:function(a,b){if(!this.l.ignoreErrors.test||!this.l.ignoreErrors.test(a)){b=b||{},a+="";var c,d=x({message:a},b);try{throw new Error(a)}catch(e){c=e}c.name=null;var f=g.computeStackTrace(c),h=u(f.stack)&&f.stack[1];h&&"Raven.captureException"===h.func&&(h=f.stack[2]);var i=h&&h.url||"";if((!this.l.ignoreUrls.test||!this.l.ignoreUrls.test(i))&&(!this.l.whitelistUrls.test||this.l.whitelistUrls.test(i))){if(this.l.stacktrace||b&&b.stacktrace){d.fingerprint=null==d.fingerprint?a:d.fingerprint,b=x({trimHeadFrames:0},b),b.trimHeadFrames+=1;var j=this.Y(f,b);d.stacktrace={frames:j.reverse()}}return d.fingerprint&&(d.fingerprint=u(d.fingerprint)?d.fingerprint:[d.fingerprint]),this.Z(d),this}}},captureBreadcrumb:function(a){var b=x({timestamp:d()/1e3},a);if(s(this.l.breadcrumbCallback)){var c=this.l.breadcrumbCallback(b);if(p(c)&&!v(c))b=c;else if(c===!1)return this}return this.v.push(b),this.v.length>this.l.maxBreadcrumbs&&this.v.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.s.push([a,b]),this.o&&this.G(),this},setUserContext:function(a){return this.k.user=a,this},setExtraContext:function(a){return this.$("extra",a),this},setTagsContext:function(a){return this.$("tags",a),this},clearContext:function(){return this.k={},this},getContext:function(){return JSON.parse(h(this.k))},setEnvironment:function(a){return this.l.environment=a,this},setRelease:function(a){return this.l.release=a,this},setDataCallback:function(a){var b=this.l.dataCallback;return this.l.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.l.breadcrumbCallback;return this.l.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.l.shouldSendCallback;return this.l.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.l.transport=a,this},lastException:function(){return this.e},lastEventId:function(){return this.g},isSetup:function(){return!!this.b&&(!!this.h||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.A("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=R.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(S){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.I;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.k.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.K(this.H(c)),h=S.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(S.head||S.body).appendChild(h)}},M:function(){var a=this;this.n+=1,setTimeout(function(){a.n-=1})},_:function(a,b){var c,d;if(this.c){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),S.createEvent?(c=S.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=S.createEventObject(),c.eventType=a);for(d in b)A(b,d)&&(c[d]=b[d]);if(S.createEvent)S.dispatchEvent(c);else try{S.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},aa:function(a){var b=this;return function(c){if(b.ba=null,b.w!==c){b.w=c;var d;try{d=E(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ca:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.ba;g||a.aa("input")(c),clearTimeout(g),a.ba=setTimeout(function(){a.ba=null},b)}}},da:function(a,b){var c=H(this.x.href),d=H(b),e=H(a);this.y=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},D:function(){var a=this;a.ea=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.N?a.ea.apply(this.P,arguments):a.ea.apply(this,arguments)}},R:function(){this.ea&&(Function.prototype.toString=this.ea)},E:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.da(b.y,c+""),a.apply(this,arguments)}};I(history,"pushState",j,d),I(history,"replaceState",j,d)}if(c.console&&"console"in R&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};w(["debug","info","warn","error","log"],function(a,b){O(console,b,k)})}},S:function(){for(var a;this.u.length;){a=this.u.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},T:function(){for(var a in this.r)this.q[a]=this.r[a]},G:function(){var a=this;w(this.s,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},H:function(a){var b=Q.exec(a),c={},d=7;try{for(;d--;)c[P[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.l.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},K:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},B:function(){this.n||this.W.apply(this,arguments)},W:function(a,b){var c=this.Y(a,b);this._("handle",{stackInfo:a,options:b}),this.ga(a.name,a.message,a.url,a.lineno,c,b)},Y:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(w(a.stack,function(b,e){var f=c.ha(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.v,0)}),this.k.user&&(a.user=this.k.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),a=this.qa(a),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||v(a[b]))&&delete a[b]}),s(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!v(a)&&(!s(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.na()?void this.A("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function F(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&l(b))for(c=b.split(/\s+/),f=0;fc?Q(a,b-1):d}function R(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?X:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function S(a,b){function c(a){return m(a)?a.map(function(a){return c(a)}):k(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!m(b)||m(b)&&0===b.length)return a;var d,e=A(b),f="********";try{d=JSON.parse(T(a))}catch(g){return a}return c(d)}var T=a(11),U="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},V=3,W=51200,X=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isDOMError:g,isDOMException:h,isUndefined:i,isFunction:j,isPlainObject:k,isString:l,isArray:m,isEmptyObject:n,supportsErrorEvent:o,supportsDOMError:p,supportsDOMException:q,supportsFetch:r,supportsReferrerPolicy:s,supportsPromiseRejectionEvent:t,wrappedCallback:u,each:v,objectMerge:w,truncate:y,objectFrozen:x,hasKey:z,joinRegExp:A,urlencode:B,uuid4:D,htmlTreeAsString:E,htmlElementAsString:F,isSameException:I,isSameStacktrace:J,parseUrl:C,fill:K,safeJoin:L,serializeException:Q,serializeKeysForMessage:R,sanitize:S}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{11:11}],10:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}function e(){return"undefined"==typeof document||null==document.location?"":document.location.origin}var f=a(9),g={collectWindowErrors:!0,debug:!1},h="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},i=[].slice,j="?",k=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;g.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function e(a,b){var c=null;if(!b||g.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(i.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,h,i){var l=null,m=f.isErrorEvent(i)?i.error:i,n=f.isErrorEvent(a)?a.message:a;if(v)g.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&f.isError(m))l=g.computeStackTrace(m),e(l,!0);else{var p,r={url:b,line:c,column:h},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(k);p&&(s=p[1],n=p[2])}r.func=j,l={name:s,message:n,url:d(),stack:[r]},e(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=h.onerror,h.onerror=l,r=!0)}function n(){r&&(h.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,e.apply(null,[a,!1].concat(b))}function p(a,b){var c=i.call(arguments,1);if(v){if(u===a)return;o()}var d=g.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),g.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,f,g=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,h=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,i=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,k=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,l=/\((\S*)(?::(\d+))(?::(\d+))\)/,m=a.stack.split("\n"),n=[],o=(/^(.*) is undefined$/.exec(a.message),0),p=m.length;o eval")>-1;r&&(b=k.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==o||c[5]||"undefined"==typeof a.columnNumber||(n[0].column=a.columnNumber+1),f={url:c[3],func:c[1]||j,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}if(!f.func&&f.line&&(f.func=j),f.url&&"blob:"===f.url.substr(0,5)){var s=new XMLHttpRequest;if(s.open("GET",f.url,!1),s.send(null),200===s.status){var t=s.responseText||"";t=t.slice(-300);var u=t.match(/\/\/# sourceMappingURL=(.*)$/);if(u){var v=u[1];"~"===v.charAt(0)&&(v=e()+v.slice(1)),f.url=v.slice(0,-4)}}}n.push(f)}return n.length?{name:a.name,message:a.message,url:d(),stack:n}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=j),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,e){for(var h,i,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==f&&o!==g.report){if(i={url:null,func:j,line:null,column:null},o.name?i.func=o.name:(h=k.exec(o.toString()))&&(i.func=h[1]),"undefined"==typeof i.func)try{i.func=h.input.substring(0,h.input.indexOf("{"))}catch(p){}m[""+o]?n=!0:m[""+o]=!0,l.push(i)}e&&l.splice(0,e);var q={name:a.name,message:a.message,url:d(),stack:l};return b(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),q}function f(b,e){var f=null;e=null==e?0:+e;try{if(f=a(b))return f}catch(h){if(g.debug)throw h}try{if(f=c(b,e+1))return f}catch(h){if(g.debug)throw h}return{name:b.name,message:b.message,url:d()}}return f.augmentStackTraceWithInitialElement=b,f.computeStackTraceFromStackProp=a,f}(),b.exports=g}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{9:9}],11:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}],12:[function(a,b,c){function d(a,b){var c=(65535&a)+(65535&b),d=(a>>16)+(b>>16)+(c>>16);return d<<16|65535&c}function e(a,b){return a<>>32-b}function f(a,b,c,f,g,h){return d(e(d(d(b,a),d(f,h)),g),c)}function g(a,b,c,d,e,g,h){return f(b&c|~b&d,a,b,e,g,h)}function h(a,b,c,d,e,g,h){return f(b&d|c&~d,a,b,e,g,h)}function i(a,b,c,d,e,g,h){return f(b^c^d,a,b,e,g,h)}function j(a,b,c,d,e,g,h){return f(c^(b|~d),a,b,e,g,h)}function k(a,b){a[b>>5]|=128<>>9<<4)+14]=b;var c,e,f,k,l,m=1732584193,n=-271733879,o=-1732584194,p=271733878;for(c=0;c>5]>>>b%32&255);return c}function m(a){var b,c=[];for(c[(a.length>>2)-1]=void 0,b=0;b>5]|=(255&a.charCodeAt(b/8))<16&&(e=k(e,8*a.length)),c=0;c<16;c+=1)f[c]=909522486^e[c],g[c]=1549556828^e[c];return d=k(f.concat(m(b)),512+8*b.length),l(k(g.concat(d),640))}function p(a){var b,c,d="0123456789abcdef",e="";for(c=0;c>>4&15)+d.charAt(15&b);return e}function q(a){return unescape(encodeURIComponent(a))}function r(a){return n(q(a))}function s(a){return p(r(a))}function t(a,b){return o(q(a),q(b))}function u(a,b){return p(t(a,b))}function v(a,b,c){return b?c?t(b,a):u(b,a):c?r(a):s(a)}b.exports=v},{}]},{},[8,1,2,3,4])(8)}); //# sourceMappingURL=raven.min.js.map \ No newline at end of file diff --git a/dist/angular,console,ember,vue/raven.min.js.map b/dist/angular,console,ember,vue/raven.min.js.map index b531dcaacb42..dbe7c9a328e6 100644 --- a/dist/angular,console,ember,vue/raven.min.js.map +++ b/dist/angular,console,ember,vue/raven.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","angularPlugin","angular","RavenProvider","$get","$window","ExceptionHandlerProvider","$provide","decorator","exceptionHandler","R","$delegate","ex","cause","captureException","extra","moduleName","provider","config","setDataCallback","wrappedCallback","data","_normalizeData","angularPattern","exception","values","matches","exec","value","type","message","angularDocs","substr","addPlugin","8","9","2","consolePlugin","console","pluginOptions","logLevels","levels","push","callback","msg","captureMessage","level","pop","wrapConsoleMethod","wrapMethod","6","3","emberPlugin","Ember","_oldOnError","onerror","error","RSVP","on","reason","context","4","formatComponentName","vm","$root","name","_isVue","$options","_componentTag","__file","vuePlugin","Vue","errorHandler","info","metaData","Object","prototype","toString","componentName","propsData","lifecycleHook","5","RavenConfigError","constructor","utils","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","safeJoin","logger","Function","apply","7","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","sanitizeKeys","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isError","isObject","isPlainObject","isErrorEvent","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","sanitize","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","dsn","options","_logDebug","globalOptions","key","setDSN","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","func","undefined","wrap","_before","wrapped","deep","_ignoreNextOnError","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","U","event","unhandledPromiseRejection","C","_promiseRejectionHandler","bind","addEventListener","Q","removeEventListener","trimHeadFrames","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","V","currentOptions","exKeys","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","M","setTimeout","_","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","aa","evtName","_keypressTimeout","target","category","ca","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","da","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","D","_originalFunctionToString","E","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","F","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","S","builtin","T","G","installer","concat","H","str","m","allowSecretKey","K","port","B","W","stackInfo","_triggerEvent","_processException","lineno","Y","frame","_normalizeFrame","in_app","ha","stackInfoUrl","normalized","filename","line","colno","column","function","ga","prefixedMessage","culprit","ia","request","Referer","breadcrumbs","_trimBreadcrumbs","ja","urlProp","urlProps","ka","httpData","userAgent","User-Agent","referrer","z","_backoffDuration","_backoffStart","na","oa","current","last","pa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Z","baseData","project","platform","_getHttpData","serverName","server_name","_sanitizeData","forEach","random","_sendProcessedPayload","qa","sa","ra","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","ta","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","open","setRequestHeader","send","ua","hash","evaluated","A","$","setUser","setReleaseContext","10","11","12","RavenConstructor","_Raven","noConflict","Client","what","supportsErrorEvent","ErrorEvent","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","sanitizeMask","safeInput","o_O","getLocationHref","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","y","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","charAt","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","string","raw"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file +{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","angularPlugin","angular","RavenProvider","$get","$window","ExceptionHandlerProvider","$provide","decorator","exceptionHandler","R","$delegate","ex","cause","captureException","extra","moduleName","provider","config","setDataCallback","wrappedCallback","data","_normalizeData","angularPattern","exception","values","matches","exec","value","type","message","angularDocs","substr","addPlugin","8","9","2","consolePlugin","console","pluginOptions","logLevels","levels","push","callback","msg","captureMessage","level","pop","wrapConsoleMethod","wrapMethod","6","3","emberPlugin","Ember","_oldOnError","onerror","error","RSVP","on","reason","context","4","formatComponentName","vm","$root","name","_isVue","$options","_componentTag","__file","vuePlugin","Vue","errorHandler","info","metaData","Object","prototype","toString","componentName","propsData","lifecycleHook","5","RavenConfigError","constructor","utils","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","safeJoin","logger","Function","apply","7","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","sanitizeKeys","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isErrorEvent","isDOMError","isDOMException","isError","isObject","isPlainObject","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","sanitize","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","dsn","options","_logDebug","globalOptions","key","setDSN","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","func","undefined","wrap","_before","wrapped","deep","_ignoreNextOnError","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","U","event","unhandledPromiseRejection","C","_promiseRejectionHandler","bind","addEventListener","Q","removeEventListener","trimHeadFrames","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","V","currentOptions","exKeys","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","M","setTimeout","_","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","aa","evtName","_keypressTimeout","target","category","ca","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","da","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","D","_originalFunctionToString","E","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","F","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","S","builtin","T","G","installer","concat","H","str","m","allowSecretKey","K","port","B","W","stackInfo","_triggerEvent","_processException","lineno","Y","frame","_normalizeFrame","in_app","ha","stackInfoUrl","normalized","filename","line","colno","column","function","ga","prefixedMessage","culprit","ia","request","Referer","breadcrumbs","_trimBreadcrumbs","ja","urlProp","urlProps","ka","httpData","userAgent","User-Agent","referrer","z","_backoffDuration","_backoffStart","na","oa","current","last","pa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Z","baseData","project","platform","_getHttpData","serverName","server_name","_sanitizeData","forEach","random","_sendProcessedPayload","qa","sa","ra","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","ta","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","open","setRequestHeader","send","ua","hash","evaluated","A","$","setUser","setReleaseContext","10","11","12","RavenConstructor","_Raven","noConflict","Client","what","supportsErrorEvent","ErrorEvent","supportsDOMError","DOMError","supportsDOMException","DOMException","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","sanitizeMask","safeInput","o_O","getLocationHref","getLocationOrigin","origin","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","responseText","sourceMaps","sourceMapAddress","charAt","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","y","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","string","raw"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file diff --git a/dist/angular,console,ember/raven.js b/dist/angular,console,ember/raven.js index 8b2577848217..f2b4b2e9879e 100644 --- a/dist/angular,console,ember/raven.js +++ b/dist/angular,console,ember/raven.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.24.2 (540f32b) | github.com/getsentry/raven-js */ +/*! Raven.js 3.25.0 (80dffad) | github.com/getsentry/raven-js */ /* * Includes TraceKit @@ -219,10 +219,12 @@ var md5 = _dereq_(11); var RavenConfigError = _dereq_(4); var utils = _dereq_(8); +var isErrorEvent = utils.isErrorEvent; +var isDOMError = utils.isDOMError; +var isDOMException = utils.isDOMException; var isError = utils.isError; var isObject = utils.isObject; var isPlainObject = utils.isPlainObject; -var isErrorEvent = utils.isErrorEvent; var isUndefined = utils.isUndefined; var isFunction = utils.isFunction; var isString = utils.isString; @@ -350,7 +352,7 @@ Raven.prototype = { // webpack (using a build step causes webpack #1617). Grunt verifies that // this value matches package.json during build. // See: https://github.com/getsentry/raven-js/issues/465 - VERSION: '3.24.2', + VERSION: '3.25.0', debug: false, @@ -682,6 +684,23 @@ Raven.prototype = { if (isErrorEvent(ex) && ex.error) { // If it is an ErrorEvent with `error` property, extract it to get actual Error ex = ex.error; + } else if (isDOMError(ex) || isDOMException(ex)) { + // If it is a DOMError or DOMException (which are legacy APIs, but still supported in some browsers) + // then we just extract the name and message, as they don't provide anything else + // https://developer.mozilla.org/en-US/docs/Web/API/DOMError + // https://developer.mozilla.org/en-US/docs/Web/API/DOMException + var name = ex.name || (isDOMError(ex) ? 'DOMError' : 'DOMException'); + var message = ex.message ? name + ': ' + ex.message : name; + + return this.captureMessage( + message, + objectMerge(options, { + // neither DOMError or DOMException provide stack trace and we most likely wont get it this way as well + // but it's barely any overhead so we may at least try + stacktrace: true, + trimHeadFrames: options.trimHeadFrames + 1 + }) + ); } else if (isError(ex)) { // we have a real Error object ex = ex; @@ -693,6 +712,7 @@ Raven.prototype = { ex = new Error(options.message); } else { // If none of previous checks were valid, then it means that + // it's not a DOMError/DOMException // it's not a plain Object // it's not a valid ErrorEvent (one with an error property) // it's not an Error @@ -2465,7 +2485,7 @@ function isObject(what) { // Yanked from https://git.io/vS8DV re-used under CC0 // with some tiny modifications function isError(value) { - switch ({}.toString.call(value)) { + switch (Object.prototype.toString.call(value)) { case '[object Error]': return true; case '[object Exception]': @@ -2478,7 +2498,15 @@ function isError(value) { } function isErrorEvent(value) { - return supportsErrorEvent() && {}.toString.call(value) === '[object ErrorEvent]'; + return Object.prototype.toString.call(value) === '[object ErrorEvent]'; +} + +function isDOMError(value) { + return Object.prototype.toString.call(value) === '[object DOMError]'; +} + +function isDOMException(value) { + return Object.prototype.toString.call(value) === '[object DOMException]'; } function isUndefined(what) { @@ -2521,6 +2549,24 @@ function supportsErrorEvent() { } } +function supportsDOMError() { + try { + new DOMError(''); // eslint-disable-line no-new + return true; + } catch (e) { + return false; + } +} + +function supportsDOMException() { + try { + new DOMException(''); // eslint-disable-line no-new + return true; + } catch (e) { + return false; + } +} + function supportsFetch() { if (!('fetch' in _window)) return false; @@ -3036,6 +3082,8 @@ module.exports = { isObject: isObject, isError: isError, isErrorEvent: isErrorEvent, + isDOMError: isDOMError, + isDOMException: isDOMException, isUndefined: isUndefined, isFunction: isFunction, isPlainObject: isPlainObject, @@ -3043,6 +3091,8 @@ module.exports = { isArray: isArray, isEmptyObject: isEmptyObject, supportsErrorEvent: supportsErrorEvent, + supportsDOMError: supportsDOMError, + supportsDOMException: supportsDOMException, supportsFetch: supportsFetch, supportsReferrerPolicy: supportsReferrerPolicy, supportsPromiseRejectionEvent: supportsPromiseRejectionEvent, @@ -3102,10 +3152,14 @@ var ERROR_TYPES_RE = /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Ran function getLocationHref() { if (typeof document === 'undefined' || document.location == null) return ''; - return document.location.href; } +function getLocationOrigin() { + if (typeof document === 'undefined' || document.location == null) return ''; + return document.location.origin; +} + /** * TraceKit.report: cross-browser processing of unhandled exceptions * @@ -3513,6 +3567,44 @@ TraceKit.computeStackTrace = (function computeStackTraceWrapper() { element.func = UNKNOWN_FUNCTION; } + if (element.url && element.url.substr(0, 5) === 'blob:') { + // Special case for handling JavaScript loaded into a blob. + // We use a synchronous AJAX request here as a blob is already in + // memory - it's not making a network request. This will generate a warning + // in the browser console, but there has already been an error so that's not + // that much of an issue. + var xhr = new XMLHttpRequest(); + xhr.open('GET', element.url, false); + xhr.send(null); + + // If we failed to download the source, skip this patch + if (xhr.status === 200) { + var source = xhr.responseText || ''; + + // We trim the source down to the last 300 characters as sourceMappingURL is always at the end of the file. + // Why 300? To be in line with: https://github.com/getsentry/sentry/blob/4af29e8f2350e20c28a6933354e4f42437b4ba42/src/sentry/lang/javascript/processor.py#L164-L175 + source = source.slice(-300); + + // Now we dig out the source map URL + var sourceMaps = source.match(/\/\/# sourceMappingURL=(.*)$/); + + // If we don't find a source map comment or we find more than one, continue on to the next element. + if (sourceMaps) { + var sourceMapAddress = sourceMaps[1]; + + // Now we check to see if it's a relative URL. + // If it is, convert it to an absolute one. + if (sourceMapAddress.charAt(0) === '~') { + sourceMapAddress = getLocationOrigin() + sourceMapAddress.slice(1); + } + + // Now we strip the '.map' off of the end of the URL and update the + // element so that Sentry can match the map to the blob. + element.url = sourceMapAddress.slice(0, -4); + } + } + } + stack.push(element); } diff --git a/dist/angular,console,ember/raven.min.js b/dist/angular,console,ember/raven.min.js index ba2abed2c13e..d5cea8de5bda 100644 --- a/dist/angular,console,ember/raven.min.js +++ b/dist/angular,console,ember/raven.min.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.24.2 (540f32b) | github.com/getsentry/raven-js */ -!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.Raven=a()}}(function(){return function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};b[g][0].call(k.exports,function(a){var c=b[g][1][a];return e(c?c:a)},k,k.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;gthis.l.maxBreadcrumbs&&this.v.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.s.push([a,b]),this.o&&this.G(),this},setUserContext:function(a){return this.k.user=a,this},setExtraContext:function(a){return this.$("extra",a),this},setTagsContext:function(a){return this.$("tags",a),this},clearContext:function(){return this.k={},this},getContext:function(){return JSON.parse(h(this.k))},setEnvironment:function(a){return this.l.environment=a,this},setRelease:function(a){return this.l.release=a,this},setDataCallback:function(a){var b=this.l.dataCallback;return this.l.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.l.breadcrumbCallback;return this.l.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.l.shouldSendCallback;return this.l.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.l.transport=a,this},lastException:function(){return this.e},lastEventId:function(){return this.g},isSetup:function(){return!!this.b&&(!!this.h||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.A("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=P.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(Q){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.I;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.k.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.K(this.H(c)),h=Q.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(Q.head||Q.body).appendChild(h)}},M:function(){var a=this;this.n+=1,setTimeout(function(){a.n-=1})},_:function(a,b){var c,d;if(this.c){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),Q.createEvent?(c=Q.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=Q.createEventObject(),c.eventType=a);for(d in b)y(b,d)&&(c[d]=b[d]);if(Q.createEvent)Q.dispatchEvent(c);else try{Q.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},aa:function(a){var b=this;return function(c){if(b.ba=null,b.w!==c){b.w=c;var d;try{d=C(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ca:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.ba;g||a.aa("input")(c),clearTimeout(g),a.ba=setTimeout(function(){a.ba=null},b)}}},da:function(a,b){var c=F(this.x.href),d=F(b),e=F(a);this.y=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},D:function(){var a=this;a.ea=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.N?a.ea.apply(this.P,arguments):a.ea.apply(this,arguments)}},R:function(){this.ea&&(Function.prototype.toString=this.ea)},E:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.da(b.y,c+""),a.apply(this,arguments)}};G(history,"pushState",j,d),G(history,"replaceState",j,d)}if(c.console&&"console"in P&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};u(["debug","info","warn","error","log"],function(a,b){M(console,b,k)})}},S:function(){for(var a;this.u.length;){a=this.u.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},T:function(){for(var a in this.r)this.q[a]=this.r[a]},G:function(){var a=this;u(this.s,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},H:function(a){var b=O.exec(a),c={},d=7;try{for(;d--;)c[N[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.l.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},K:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},B:function(){this.n||this.W.apply(this,arguments)},W:function(a,b){var c=this.Y(a,b);this._("handle",{stackInfo:a,options:b}),this.ga(a.name,a.message,a.url,a.lineno,c,b)},Y:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(u(a.stack,function(b,e){var f=c.ha(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.v,0)}),this.k.user&&(a.user=this.k.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),a=this.qa(a),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||t(a[b]))&&delete a[b]}),q(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!t(a)&&(!q(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.na()?void this.A("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function B(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&j(b))for(c=b.split(/\s+/),f=0;fc?M(a,b-1):d}function N(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?T:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function O(a,b){function c(a){return k(a)?a.map(function(a){return c(a)}):i(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!k(b)||k(b)&&0===b.length)return a;var d,e=w(b),f="********";try{d=JSON.parse(P(a))}catch(g){return a}return c(d)}var P=a(10),Q="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},R=3,S=51200,T=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isUndefined:g,isFunction:h,isPlainObject:i,isString:j,isArray:k,isEmptyObject:l,supportsErrorEvent:m,supportsFetch:n,supportsReferrerPolicy:o,supportsPromiseRejectionEvent:p,wrappedCallback:q,each:r,objectMerge:s,truncate:u,objectFrozen:t,hasKey:v,joinRegExp:w,urlencode:x,uuid4:z,htmlTreeAsString:A,htmlElementAsString:B,isSameException:E,isSameStacktrace:F,parseUrl:y,fill:G,safeJoin:H,serializeException:M,serializeKeysForMessage:N,sanitize:O}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{10:10}],9:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}var e=a(8),f={collectWindowErrors:!0,debug:!1},g="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},h=[].slice,i="?",j=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;f.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function k(a,b){var c=null;if(!b||f.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(h.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,g,h){var l=null,m=e.isErrorEvent(h)?h.error:h,n=e.isErrorEvent(a)?a.message:a;if(v)f.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&e.isError(m))l=f.computeStackTrace(m),k(l,!0);else{var p,r={url:b,line:c,column:g},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(j);p&&(s=p[1],n=p[2])}r.func=i,l={name:s,message:n,url:d(),stack:[r]},k(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=g.onerror,g.onerror=l,r=!0)}function n(){r&&(g.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,k.apply(null,[a,!1].concat(b))}function p(a,b){var c=h.call(arguments,1);if(v){if(u===a)return;o()}var d=f.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),f.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,e,f=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,g=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,h=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,j=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,k=/\((\S*)(?::(\d+))(?::(\d+))\)/,l=a.stack.split("\n"),m=[],n=(/^(.*) is undefined$/.exec(a.message),0),o=l.length;n eval")>-1;q&&(b=j.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==n||c[5]||"undefined"==typeof a.columnNumber||(m[0].column=a.columnNumber+1),e={url:c[3],func:c[1]||i,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}!e.func&&e.line&&(e.func=i),m.push(e)}return m.length?{name:a.name,message:a.message,url:d(),stack:m}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=i),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,g){for(var h,j,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==e&&o!==f.report){if(j={url:null,func:i,line:null,column:null},o.name?j.func=o.name:(h=k.exec(o.toString()))&&(j.func=h[1]),"undefined"==typeof j.func)try{j.func=h.input.substring(0,h.input.indexOf("{"))}catch(p){}m[""+o]?n=!0:m[""+o]=!0,l.push(j)}g&&l.splice(0,g);var q={name:a.name,message:a.message,url:d(),stack:l};return b(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),q}function e(b,e){var g=null;e=null==e?0:+e; -try{if(g=a(b))return g}catch(h){if(f.debug)throw h}try{if(g=c(b,e+1))return g}catch(h){if(f.debug)throw h}return{name:b.name,message:b.message,url:d()}}return e.augmentStackTraceWithInitialElement=b,e.computeStackTraceFromStackProp=a,e}(),b.exports=f}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{8:8}],10:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}],11:[function(a,b,c){function d(a,b){var c=(65535&a)+(65535&b),d=(a>>16)+(b>>16)+(c>>16);return d<<16|65535&c}function e(a,b){return a<>>32-b}function f(a,b,c,f,g,h){return d(e(d(d(b,a),d(f,h)),g),c)}function g(a,b,c,d,e,g,h){return f(b&c|~b&d,a,b,e,g,h)}function h(a,b,c,d,e,g,h){return f(b&d|c&~d,a,b,e,g,h)}function i(a,b,c,d,e,g,h){return f(b^c^d,a,b,e,g,h)}function j(a,b,c,d,e,g,h){return f(c^(b|~d),a,b,e,g,h)}function k(a,b){a[b>>5]|=128<>>9<<4)+14]=b;var c,e,f,k,l,m=1732584193,n=-271733879,o=-1732584194,p=271733878;for(c=0;c>5]>>>b%32&255);return c}function m(a){var b,c=[];for(c[(a.length>>2)-1]=void 0,b=0;b>5]|=(255&a.charCodeAt(b/8))<16&&(e=k(e,8*a.length)),c=0;c<16;c+=1)f[c]=909522486^e[c],g[c]=1549556828^e[c];return d=k(f.concat(m(b)),512+8*b.length),l(k(g.concat(d),640))}function p(a){var b,c,d="0123456789abcdef",e="";for(c=0;c>>4&15)+d.charAt(15&b);return e}function q(a){return unescape(encodeURIComponent(a))}function r(a){return n(q(a))}function s(a){return p(r(a))}function t(a,b){return o(q(a),q(b))}function u(a,b){return p(t(a,b))}function v(a,b,c){return b?c?t(b,a):u(b,a):c?r(a):s(a)}b.exports=v},{}]},{},[7,1,2,3])(7)}); +/*! Raven.js 3.25.0 (80dffad) | github.com/getsentry/raven-js */ +!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.Raven=a()}}(function(){return function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};b[g][0].call(k.exports,function(a){var c=b[g][1][a];return e(c?c:a)},k,k.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;gthis.l.maxBreadcrumbs&&this.v.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.s.push([a,b]),this.o&&this.G(),this},setUserContext:function(a){return this.k.user=a,this},setExtraContext:function(a){return this.$("extra",a),this},setTagsContext:function(a){return this.$("tags",a),this},clearContext:function(){return this.k={},this},getContext:function(){return JSON.parse(h(this.k))},setEnvironment:function(a){return this.l.environment=a,this},setRelease:function(a){return this.l.release=a,this},setDataCallback:function(a){var b=this.l.dataCallback;return this.l.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.l.breadcrumbCallback;return this.l.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.l.shouldSendCallback;return this.l.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.l.transport=a,this},lastException:function(){return this.e},lastEventId:function(){return this.g},isSetup:function(){return!!this.b&&(!!this.h||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.A("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=R.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(S){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.I;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.k.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.K(this.H(c)),h=S.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(S.head||S.body).appendChild(h)}},M:function(){var a=this;this.n+=1,setTimeout(function(){a.n-=1})},_:function(a,b){var c,d;if(this.c){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),S.createEvent?(c=S.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=S.createEventObject(),c.eventType=a);for(d in b)A(b,d)&&(c[d]=b[d]);if(S.createEvent)S.dispatchEvent(c);else try{S.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},aa:function(a){var b=this;return function(c){if(b.ba=null,b.w!==c){b.w=c;var d;try{d=E(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ca:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.ba;g||a.aa("input")(c),clearTimeout(g),a.ba=setTimeout(function(){a.ba=null},b)}}},da:function(a,b){var c=H(this.x.href),d=H(b),e=H(a);this.y=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},D:function(){var a=this;a.ea=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.N?a.ea.apply(this.P,arguments):a.ea.apply(this,arguments)}},R:function(){this.ea&&(Function.prototype.toString=this.ea)},E:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.da(b.y,c+""),a.apply(this,arguments)}};I(history,"pushState",j,d),I(history,"replaceState",j,d)}if(c.console&&"console"in R&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};w(["debug","info","warn","error","log"],function(a,b){O(console,b,k)})}},S:function(){for(var a;this.u.length;){a=this.u.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},T:function(){for(var a in this.r)this.q[a]=this.r[a]},G:function(){var a=this;w(this.s,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},H:function(a){var b=Q.exec(a),c={},d=7;try{for(;d--;)c[P[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.l.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},K:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},B:function(){this.n||this.W.apply(this,arguments)},W:function(a,b){var c=this.Y(a,b);this._("handle",{stackInfo:a,options:b}),this.ga(a.name,a.message,a.url,a.lineno,c,b)},Y:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(w(a.stack,function(b,e){var f=c.ha(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.v,0)}),this.k.user&&(a.user=this.k.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),a=this.qa(a),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||v(a[b]))&&delete a[b]}),s(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!v(a)&&(!s(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.na()?void this.A("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function F(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&l(b))for(c=b.split(/\s+/),f=0;fc?Q(a,b-1):d}function R(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?X:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function S(a,b){function c(a){return m(a)?a.map(function(a){return c(a)}):k(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!m(b)||m(b)&&0===b.length)return a;var d,e=A(b),f="********";try{d=JSON.parse(T(a))}catch(g){return a}return c(d)}var T=a(10),U="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},V=3,W=51200,X=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isDOMError:g,isDOMException:h,isUndefined:i,isFunction:j,isPlainObject:k,isString:l,isArray:m,isEmptyObject:n,supportsErrorEvent:o,supportsDOMError:p,supportsDOMException:q,supportsFetch:r,supportsReferrerPolicy:s,supportsPromiseRejectionEvent:t,wrappedCallback:u,each:v,objectMerge:w,truncate:y,objectFrozen:x,hasKey:z,joinRegExp:A,urlencode:B,uuid4:D,htmlTreeAsString:E,htmlElementAsString:F,isSameException:I,isSameStacktrace:J,parseUrl:C,fill:K,safeJoin:L,serializeException:Q,serializeKeysForMessage:R,sanitize:S}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{10:10}],9:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}function e(){return"undefined"==typeof document||null==document.location?"":document.location.origin}var f=a(8),g={collectWindowErrors:!0,debug:!1},h="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},i=[].slice,j="?",k=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;g.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function e(a,b){var c=null;if(!b||g.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(i.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,h,i){var l=null,m=f.isErrorEvent(i)?i.error:i,n=f.isErrorEvent(a)?a.message:a;if(v)g.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&f.isError(m))l=g.computeStackTrace(m),e(l,!0);else{var p,r={url:b,line:c,column:h},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(k);p&&(s=p[1],n=p[2])}r.func=j,l={name:s,message:n,url:d(),stack:[r]},e(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=h.onerror,h.onerror=l,r=!0)}function n(){r&&(h.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,e.apply(null,[a,!1].concat(b))}function p(a,b){var c=i.call(arguments,1);if(v){if(u===a)return;o()}var d=g.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),g.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,f,g=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,h=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,i=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,k=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,l=/\((\S*)(?::(\d+))(?::(\d+))\)/,m=a.stack.split("\n"),n=[],o=(/^(.*) is undefined$/.exec(a.message),0),p=m.length;o eval")>-1;r&&(b=k.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==o||c[5]||"undefined"==typeof a.columnNumber||(n[0].column=a.columnNumber+1),f={url:c[3],func:c[1]||j,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}if(!f.func&&f.line&&(f.func=j),f.url&&"blob:"===f.url.substr(0,5)){var s=new XMLHttpRequest;if(s.open("GET",f.url,!1),s.send(null),200===s.status){var t=s.responseText||"";t=t.slice(-300);var u=t.match(/\/\/# sourceMappingURL=(.*)$/);if(u){var v=u[1];"~"===v.charAt(0)&&(v=e()+v.slice(1)),f.url=v.slice(0,-4)}}}n.push(f); +}return n.length?{name:a.name,message:a.message,url:d(),stack:n}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=j),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,e){for(var h,i,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==f&&o!==g.report){if(i={url:null,func:j,line:null,column:null},o.name?i.func=o.name:(h=k.exec(o.toString()))&&(i.func=h[1]),"undefined"==typeof i.func)try{i.func=h.input.substring(0,h.input.indexOf("{"))}catch(p){}m[""+o]?n=!0:m[""+o]=!0,l.push(i)}e&&l.splice(0,e);var q={name:a.name,message:a.message,url:d(),stack:l};return b(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),q}function f(b,e){var f=null;e=null==e?0:+e;try{if(f=a(b))return f}catch(h){if(g.debug)throw h}try{if(f=c(b,e+1))return f}catch(h){if(g.debug)throw h}return{name:b.name,message:b.message,url:d()}}return f.augmentStackTraceWithInitialElement=b,f.computeStackTraceFromStackProp=a,f}(),b.exports=g}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{8:8}],10:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}],11:[function(a,b,c){function d(a,b){var c=(65535&a)+(65535&b),d=(a>>16)+(b>>16)+(c>>16);return d<<16|65535&c}function e(a,b){return a<>>32-b}function f(a,b,c,f,g,h){return d(e(d(d(b,a),d(f,h)),g),c)}function g(a,b,c,d,e,g,h){return f(b&c|~b&d,a,b,e,g,h)}function h(a,b,c,d,e,g,h){return f(b&d|c&~d,a,b,e,g,h)}function i(a,b,c,d,e,g,h){return f(b^c^d,a,b,e,g,h)}function j(a,b,c,d,e,g,h){return f(c^(b|~d),a,b,e,g,h)}function k(a,b){a[b>>5]|=128<>>9<<4)+14]=b;var c,e,f,k,l,m=1732584193,n=-271733879,o=-1732584194,p=271733878;for(c=0;c>5]>>>b%32&255);return c}function m(a){var b,c=[];for(c[(a.length>>2)-1]=void 0,b=0;b>5]|=(255&a.charCodeAt(b/8))<16&&(e=k(e,8*a.length)),c=0;c<16;c+=1)f[c]=909522486^e[c],g[c]=1549556828^e[c];return d=k(f.concat(m(b)),512+8*b.length),l(k(g.concat(d),640))}function p(a){var b,c,d="0123456789abcdef",e="";for(c=0;c>>4&15)+d.charAt(15&b);return e}function q(a){return unescape(encodeURIComponent(a))}function r(a){return n(q(a))}function s(a){return p(r(a))}function t(a,b){return o(q(a),q(b))}function u(a,b){return p(t(a,b))}function v(a,b,c){return b?c?t(b,a):u(b,a):c?r(a):s(a)}b.exports=v},{}]},{},[7,1,2,3])(7)}); //# sourceMappingURL=raven.min.js.map \ No newline at end of file diff --git a/dist/angular,console,ember/raven.min.js.map b/dist/angular,console,ember/raven.min.js.map index 36f8c6931892..f840686f6598 100644 --- a/dist/angular,console,ember/raven.min.js.map +++ b/dist/angular,console,ember/raven.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","angularPlugin","angular","RavenProvider","$get","$window","ExceptionHandlerProvider","$provide","decorator","exceptionHandler","R","$delegate","ex","cause","captureException","extra","moduleName","provider","config","setDataCallback","wrappedCallback","data","_normalizeData","angularPattern","exception","values","matches","exec","value","type","message","angularDocs","substr","addPlugin","7","8","2","consolePlugin","console","pluginOptions","logLevels","levels","push","callback","msg","captureMessage","level","pop","wrapConsoleMethod","wrapMethod","5","3","emberPlugin","Ember","_oldOnError","onerror","error","RSVP","on","reason","context","4","RavenConfigError","name","prototype","constructor","utils","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","safeJoin","logger","Function","apply","6","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","sanitizeKeys","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isError","isObject","isPlainObject","isErrorEvent","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","sanitize","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","dsn","options","_logDebug","globalOptions","key","setDSN","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","toString","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","func","undefined","wrap","_before","wrapped","deep","_ignoreNextOnError","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","U","event","unhandledPromiseRejection","C","_promiseRejectionHandler","bind","addEventListener","Q","removeEventListener","trimHeadFrames","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","V","currentOptions","exKeys","Object","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","M","setTimeout","_","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","aa","evtName","_keypressTimeout","target","category","ca","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","da","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","D","_originalFunctionToString","E","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","F","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","S","builtin","T","G","installer","concat","H","str","m","allowSecretKey","K","port","B","W","stackInfo","_triggerEvent","_processException","lineno","Y","frame","_normalizeFrame","in_app","ha","stackInfoUrl","normalized","filename","line","colno","column","function","ga","prefixedMessage","culprit","ia","request","Referer","breadcrumbs","_trimBreadcrumbs","ja","urlProp","urlProps","ka","httpData","userAgent","User-Agent","referrer","z","_backoffDuration","_backoffStart","na","oa","current","last","pa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Z","baseData","project","platform","_getHttpData","serverName","server_name","_sanitizeData","forEach","random","_sendProcessedPayload","qa","sa","ra","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","ta","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","open","setRequestHeader","send","ua","hash","evaluated","A","$","setUser","setReleaseContext","10","11","9","RavenConstructor","_Raven","noConflict","Client","what","supportsErrorEvent","ErrorEvent","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","sanitizeMask","safeInput","o_O","getLocationHref","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","y","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","charAt","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","string","raw"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file +{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","angularPlugin","angular","RavenProvider","$get","$window","ExceptionHandlerProvider","$provide","decorator","exceptionHandler","R","$delegate","ex","cause","captureException","extra","moduleName","provider","config","setDataCallback","wrappedCallback","data","_normalizeData","angularPattern","exception","values","matches","exec","value","type","message","angularDocs","substr","addPlugin","7","8","2","consolePlugin","console","pluginOptions","logLevels","levels","push","callback","msg","captureMessage","level","pop","wrapConsoleMethod","wrapMethod","5","3","emberPlugin","Ember","_oldOnError","onerror","error","RSVP","on","reason","context","4","RavenConfigError","name","prototype","constructor","utils","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","safeJoin","logger","Function","apply","6","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","sanitizeKeys","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isErrorEvent","isDOMError","isDOMException","isError","isObject","isPlainObject","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","sanitize","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","dsn","options","_logDebug","globalOptions","key","setDSN","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","toString","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","func","undefined","wrap","_before","wrapped","deep","_ignoreNextOnError","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","U","event","unhandledPromiseRejection","C","_promiseRejectionHandler","bind","addEventListener","Q","removeEventListener","trimHeadFrames","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","V","currentOptions","exKeys","Object","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","M","setTimeout","_","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","aa","evtName","_keypressTimeout","target","category","ca","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","da","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","D","_originalFunctionToString","E","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","F","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","S","builtin","T","G","installer","concat","H","str","m","allowSecretKey","K","port","B","W","stackInfo","_triggerEvent","_processException","lineno","Y","frame","_normalizeFrame","in_app","ha","stackInfoUrl","normalized","filename","line","colno","column","function","ga","prefixedMessage","culprit","ia","request","Referer","breadcrumbs","_trimBreadcrumbs","ja","urlProp","urlProps","ka","httpData","userAgent","User-Agent","referrer","z","_backoffDuration","_backoffStart","na","oa","current","last","pa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Z","baseData","project","platform","_getHttpData","serverName","server_name","_sanitizeData","forEach","random","_sendProcessedPayload","qa","sa","ra","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","ta","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","open","setRequestHeader","send","ua","hash","evaluated","A","$","setUser","setReleaseContext","10","11","9","RavenConstructor","_Raven","noConflict","Client","what","supportsErrorEvent","ErrorEvent","supportsDOMError","DOMError","supportsDOMException","DOMException","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","sanitizeMask","safeInput","o_O","getLocationHref","getLocationOrigin","origin","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","responseText","sourceMaps","sourceMapAddress","charAt","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","y","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","string","raw"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file diff --git a/dist/angular,console,require,vue/raven.js b/dist/angular,console,require,vue/raven.js index f1b78a0466c8..035ca77b042a 100644 --- a/dist/angular,console,require,vue/raven.js +++ b/dist/angular,console,require,vue/raven.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.24.2 (540f32b) | github.com/getsentry/raven-js */ +/*! Raven.js 3.25.0 (80dffad) | github.com/getsentry/raven-js */ /* * Includes TraceKit @@ -253,10 +253,12 @@ var md5 = _dereq_(12); var RavenConfigError = _dereq_(5); var utils = _dereq_(9); +var isErrorEvent = utils.isErrorEvent; +var isDOMError = utils.isDOMError; +var isDOMException = utils.isDOMException; var isError = utils.isError; var isObject = utils.isObject; var isPlainObject = utils.isPlainObject; -var isErrorEvent = utils.isErrorEvent; var isUndefined = utils.isUndefined; var isFunction = utils.isFunction; var isString = utils.isString; @@ -384,7 +386,7 @@ Raven.prototype = { // webpack (using a build step causes webpack #1617). Grunt verifies that // this value matches package.json during build. // See: https://github.com/getsentry/raven-js/issues/465 - VERSION: '3.24.2', + VERSION: '3.25.0', debug: false, @@ -716,6 +718,23 @@ Raven.prototype = { if (isErrorEvent(ex) && ex.error) { // If it is an ErrorEvent with `error` property, extract it to get actual Error ex = ex.error; + } else if (isDOMError(ex) || isDOMException(ex)) { + // If it is a DOMError or DOMException (which are legacy APIs, but still supported in some browsers) + // then we just extract the name and message, as they don't provide anything else + // https://developer.mozilla.org/en-US/docs/Web/API/DOMError + // https://developer.mozilla.org/en-US/docs/Web/API/DOMException + var name = ex.name || (isDOMError(ex) ? 'DOMError' : 'DOMException'); + var message = ex.message ? name + ': ' + ex.message : name; + + return this.captureMessage( + message, + objectMerge(options, { + // neither DOMError or DOMException provide stack trace and we most likely wont get it this way as well + // but it's barely any overhead so we may at least try + stacktrace: true, + trimHeadFrames: options.trimHeadFrames + 1 + }) + ); } else if (isError(ex)) { // we have a real Error object ex = ex; @@ -727,6 +746,7 @@ Raven.prototype = { ex = new Error(options.message); } else { // If none of previous checks were valid, then it means that + // it's not a DOMError/DOMException // it's not a plain Object // it's not a valid ErrorEvent (one with an error property) // it's not an Error @@ -2499,7 +2519,7 @@ function isObject(what) { // Yanked from https://git.io/vS8DV re-used under CC0 // with some tiny modifications function isError(value) { - switch ({}.toString.call(value)) { + switch (Object.prototype.toString.call(value)) { case '[object Error]': return true; case '[object Exception]': @@ -2512,7 +2532,15 @@ function isError(value) { } function isErrorEvent(value) { - return supportsErrorEvent() && {}.toString.call(value) === '[object ErrorEvent]'; + return Object.prototype.toString.call(value) === '[object ErrorEvent]'; +} + +function isDOMError(value) { + return Object.prototype.toString.call(value) === '[object DOMError]'; +} + +function isDOMException(value) { + return Object.prototype.toString.call(value) === '[object DOMException]'; } function isUndefined(what) { @@ -2555,6 +2583,24 @@ function supportsErrorEvent() { } } +function supportsDOMError() { + try { + new DOMError(''); // eslint-disable-line no-new + return true; + } catch (e) { + return false; + } +} + +function supportsDOMException() { + try { + new DOMException(''); // eslint-disable-line no-new + return true; + } catch (e) { + return false; + } +} + function supportsFetch() { if (!('fetch' in _window)) return false; @@ -3070,6 +3116,8 @@ module.exports = { isObject: isObject, isError: isError, isErrorEvent: isErrorEvent, + isDOMError: isDOMError, + isDOMException: isDOMException, isUndefined: isUndefined, isFunction: isFunction, isPlainObject: isPlainObject, @@ -3077,6 +3125,8 @@ module.exports = { isArray: isArray, isEmptyObject: isEmptyObject, supportsErrorEvent: supportsErrorEvent, + supportsDOMError: supportsDOMError, + supportsDOMException: supportsDOMException, supportsFetch: supportsFetch, supportsReferrerPolicy: supportsReferrerPolicy, supportsPromiseRejectionEvent: supportsPromiseRejectionEvent, @@ -3136,10 +3186,14 @@ var ERROR_TYPES_RE = /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Ran function getLocationHref() { if (typeof document === 'undefined' || document.location == null) return ''; - return document.location.href; } +function getLocationOrigin() { + if (typeof document === 'undefined' || document.location == null) return ''; + return document.location.origin; +} + /** * TraceKit.report: cross-browser processing of unhandled exceptions * @@ -3547,6 +3601,44 @@ TraceKit.computeStackTrace = (function computeStackTraceWrapper() { element.func = UNKNOWN_FUNCTION; } + if (element.url && element.url.substr(0, 5) === 'blob:') { + // Special case for handling JavaScript loaded into a blob. + // We use a synchronous AJAX request here as a blob is already in + // memory - it's not making a network request. This will generate a warning + // in the browser console, but there has already been an error so that's not + // that much of an issue. + var xhr = new XMLHttpRequest(); + xhr.open('GET', element.url, false); + xhr.send(null); + + // If we failed to download the source, skip this patch + if (xhr.status === 200) { + var source = xhr.responseText || ''; + + // We trim the source down to the last 300 characters as sourceMappingURL is always at the end of the file. + // Why 300? To be in line with: https://github.com/getsentry/sentry/blob/4af29e8f2350e20c28a6933354e4f42437b4ba42/src/sentry/lang/javascript/processor.py#L164-L175 + source = source.slice(-300); + + // Now we dig out the source map URL + var sourceMaps = source.match(/\/\/# sourceMappingURL=(.*)$/); + + // If we don't find a source map comment or we find more than one, continue on to the next element. + if (sourceMaps) { + var sourceMapAddress = sourceMaps[1]; + + // Now we check to see if it's a relative URL. + // If it is, convert it to an absolute one. + if (sourceMapAddress.charAt(0) === '~') { + sourceMapAddress = getLocationOrigin() + sourceMapAddress.slice(1); + } + + // Now we strip the '.map' off of the end of the URL and update the + // element so that Sentry can match the map to the blob. + element.url = sourceMapAddress.slice(0, -4); + } + } + } + stack.push(element); } diff --git a/dist/angular,console,require,vue/raven.min.js b/dist/angular,console,require,vue/raven.min.js index ccdadab8d8ef..df76db7955e1 100644 --- a/dist/angular,console,require,vue/raven.min.js +++ b/dist/angular,console,require,vue/raven.min.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.24.2 (540f32b) | github.com/getsentry/raven-js */ -!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.Raven=a()}}(function(){var a;return function b(a,c,d){function e(g,h){if(!c[g]){if(!a[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};a[g][0].call(k.exports,function(b){var c=a[g][1][b];return e(c?c:b)},k,k.exports,b,a,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;g":"anonymous component")+(a._isVue&&a.$options.__file?" at "+a.$options.__file:"")}function e(a,b){if(b=b||window.Vue,b&&b.config){var c=b.config.errorHandler;b.config.errorHandler=function(b,e,f){var g={};"[object Object]"===Object.prototype.toString.call(e)&&(g.componentName=d(e),g.propsData=e.$options.propsData),"undefined"!=typeof f&&(g.lifecycleHook=f),a.captureException(b,{extra:g}),"function"==typeof c&&c.call(this,b,e,f)}}}b.exports=e,a(8).addPlugin(b.exports)},{8:8}],5:[function(a,b,c){function d(a){this.name="RavenConfigError",this.message=a}d.prototype=new Error,d.prototype.constructor=d,b.exports=d},{}],6:[function(a,b,c){var d=a(9),e=function(a,b,c){var e=a[b],f=a;if(b in a){var g="warn"===b?"warning":b;a[b]=function(){var a=[].slice.call(arguments),h=d.safeJoin(a," "),i={level:g,logger:"console",extra:{arguments:a}};"assert"===b?a[0]===!1&&(h="Assertion failed: "+(d.safeJoin(a.slice(1)," ")||"console.assert"),i.extra.arguments=a.slice(1),c&&c(h,i)):c&&c(h,i),e&&Function.prototype.apply.call(e,f,a)}}};b.exports={wrapMethod:e}},{9:9}],7:[function(a,b,c){(function(c){function d(){return+new Date}function e(a,b){return q(b)?function(c){return b(c,a)}:b}function f(){this.b=!("object"!=typeof JSON||!JSON.stringify),this.c=!p(Q),this.d=!p(R),this.e=null,this.f=null,this.g=null,this.h=null,this.i=null,this.j=null,this.k={},this.l={release:P.SENTRY_RELEASE&&P.SENTRY_RELEASE.id,logger:"javascript",ignoreErrors:[],ignoreUrls:[],whitelistUrls:[],includePaths:[],headers:null,collectWindowErrors:!0,captureUnhandledRejections:!0,maxMessageLength:0,maxUrlLength:250,stackTraceLimit:50,autoBreadcrumbs:!0,instrument:!0,sampleRate:1,sanitizeKeys:[]},this.m={method:"POST",keepalive:!0,referrerPolicy:I()?"origin":""},this.n=0,this.o=!1,this.p=Error.stackTraceLimit,this.q=P.console||{},this.r={},this.s=[],this.t=d(),this.u=[],this.v=[],this.w=null,this.x=P.location,this.y=this.x&&this.x.href,this.z();for(var a in this.q)this.r[a]=this.q[a]}var g=a(10),h=a(11),i=a(12),j=a(5),k=a(9),l=k.isError,m=k.isObject,n=k.isPlainObject,o=k.isErrorEvent,p=k.isUndefined,q=k.isFunction,r=k.isString,s=k.isArray,t=k.isEmptyObject,u=k.each,v=k.objectMerge,w=k.truncate,x=k.objectFrozen,y=k.hasKey,z=k.joinRegExp,A=k.urlencode,B=k.uuid4,C=k.htmlTreeAsString,D=k.isSameException,E=k.isSameStacktrace,F=k.parseUrl,G=k.fill,H=k.supportsFetch,I=k.supportsReferrerPolicy,J=k.serializeKeysForMessage,K=k.serializeException,L=k.sanitize,M=a(6).wrapMethod,N="source protocol user pass host port path".split(" "),O=/^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/,P="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},Q=P.document,R=P.navigator;f.prototype={VERSION:"3.24.2",debug:!1,TraceKit:g,config:function(a,b){var c=this;if(c.h)return this.A("error","Error: Raven has already been configured"),c;if(!a)return c;var d=c.l;b&&u(b,function(a,b){"tags"===a||"extra"===a||"user"===a?c.k[a]=b:d[a]=b}),c.setDSN(a),d.ignoreErrors.push(/^Script error\.?$/),d.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/),d.ignoreErrors=z(d.ignoreErrors),d.ignoreUrls=!!d.ignoreUrls.length&&z(d.ignoreUrls),d.whitelistUrls=!!d.whitelistUrls.length&&z(d.whitelistUrls),d.includePaths=z(d.includePaths),d.maxBreadcrumbs=Math.max(0,Math.min(d.maxBreadcrumbs||100,100));var e={xhr:!0,console:!0,dom:!0,location:!0,sentry:!0},f=d.autoBreadcrumbs;"[object Object]"==={}.toString.call(f)?f=v(e,f):f!==!1&&(f=e),d.autoBreadcrumbs=f;var h={tryCatch:!0},i=d.instrument;return"[object Object]"==={}.toString.call(i)?i=v(h,i):i!==!1&&(i=h),d.instrument=i,g.collectWindowErrors=!!d.collectWindowErrors,c},install:function(){var a=this;return a.isSetup()&&!a.o&&(g.report.subscribe(function(){a.B.apply(a,arguments)}),a.l.captureUnhandledRejections&&a.C(),a.D(),a.l.instrument&&a.l.instrument.tryCatch&&a.E(),a.l.autoBreadcrumbs&&a.F(),a.G(),a.o=!0),Error.stackTraceLimit=a.l.stackTraceLimit,this},setDSN:function(a){var b=this,c=b.H(a),d=c.path.lastIndexOf("/"),e=c.path.substr(1,d);b.I=a,b.i=c.user,b.J=c.pass&&c.pass.substr(1),b.j=c.path.substr(d+1),b.h=b.K(c),b.L=b.h+"/"+e+"api/"+b.j+"/store/",this.z()},context:function(a,b,c){return q(a)&&(c=b||[],b=a,a=void 0),this.wrap(a,b).apply(this,c)},wrap:function(a,b,c){function d(){var d=[],f=arguments.length,g=!a||a&&a.deep!==!1;for(c&&q(c)&&c.apply(this,arguments);f--;)d[f]=g?e.wrap(a,arguments[f]):arguments[f];try{return b.apply(this,d)}catch(h){throw e.M(),e.captureException(h,a),h}}var e=this;if(p(b)&&!q(a))return a;if(q(a)&&(b=a,a=void 0),!q(b))return b;try{if(b.N)return b;if(b.O)return b.O}catch(f){return b}for(var g in b)y(b,g)&&(d[g]=b[g]);return d.prototype=b.prototype,b.O=d,d.N=!0,d.P=b,d},uninstall:function(){return g.report.uninstall(),this.Q(),this.R(),this.S(),this.T(),Error.stackTraceLimit=this.p,this.o=!1,this},U:function(a){this.A("debug","Raven caught unhandled promise rejection:",a),this.captureException(a.reason,{extra:{unhandledPromiseRejection:!0}})},C:function(){return this.U=this.U.bind(this),P.addEventListener&&P.addEventListener("unhandledrejection",this.U),this},Q:function(){return P.removeEventListener&&P.removeEventListener("unhandledrejection",this.U),this},captureException:function(a,b){if(b=v({trimHeadFrames:0},b?b:{}),o(a)&&a.error)a=a.error;else if(l(a))a=a;else{if(!n(a))return this.captureMessage(a,v(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}));b=this.V(b,a),a=new Error(b.message)}this.e=a;try{var c=g.computeStackTrace(a);this.W(c,b)}catch(d){if(a!==d)throw d}return this},V:function(a,b){var c=Object.keys(b).sort(),d=v(a,{message:"Non-Error exception captured with keys: "+J(c),fingerprint:[i(c)],extra:a.extra||{}});return d.extra.X=K(b),d},captureMessage:function(a,b){if(!this.l.ignoreErrors.test||!this.l.ignoreErrors.test(a)){b=b||{},a+="";var c,d=v({message:a},b);try{throw new Error(a)}catch(e){c=e}c.name=null;var f=g.computeStackTrace(c),h=s(f.stack)&&f.stack[1];h&&"Raven.captureException"===h.func&&(h=f.stack[2]);var i=h&&h.url||"";if((!this.l.ignoreUrls.test||!this.l.ignoreUrls.test(i))&&(!this.l.whitelistUrls.test||this.l.whitelistUrls.test(i))){if(this.l.stacktrace||b&&b.stacktrace){d.fingerprint=null==d.fingerprint?a:d.fingerprint,b=v({trimHeadFrames:0},b),b.trimHeadFrames+=1;var j=this.Y(f,b);d.stacktrace={frames:j.reverse()}}return d.fingerprint&&(d.fingerprint=s(d.fingerprint)?d.fingerprint:[d.fingerprint]),this.Z(d),this}}},captureBreadcrumb:function(a){var b=v({timestamp:d()/1e3},a);if(q(this.l.breadcrumbCallback)){var c=this.l.breadcrumbCallback(b);if(m(c)&&!t(c))b=c;else if(c===!1)return this}return this.v.push(b),this.v.length>this.l.maxBreadcrumbs&&this.v.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.s.push([a,b]),this.o&&this.G(),this},setUserContext:function(a){return this.k.user=a,this},setExtraContext:function(a){return this.$("extra",a),this},setTagsContext:function(a){return this.$("tags",a),this},clearContext:function(){return this.k={},this},getContext:function(){return JSON.parse(h(this.k))},setEnvironment:function(a){return this.l.environment=a,this},setRelease:function(a){return this.l.release=a,this},setDataCallback:function(a){var b=this.l.dataCallback;return this.l.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.l.breadcrumbCallback;return this.l.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.l.shouldSendCallback;return this.l.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.l.transport=a,this},lastException:function(){return this.e},lastEventId:function(){return this.g},isSetup:function(){return!!this.b&&(!!this.h||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.A("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=P.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(Q){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.I;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.k.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.K(this.H(c)),h=Q.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(Q.head||Q.body).appendChild(h)}},M:function(){var a=this;this.n+=1,setTimeout(function(){a.n-=1})},_:function(a,b){var c,d;if(this.c){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),Q.createEvent?(c=Q.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=Q.createEventObject(),c.eventType=a);for(d in b)y(b,d)&&(c[d]=b[d]);if(Q.createEvent)Q.dispatchEvent(c);else try{Q.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},aa:function(a){var b=this;return function(c){if(b.ba=null,b.w!==c){b.w=c;var d;try{d=C(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ca:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.ba;g||a.aa("input")(c),clearTimeout(g),a.ba=setTimeout(function(){a.ba=null},b)}}},da:function(a,b){var c=F(this.x.href),d=F(b),e=F(a);this.y=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},D:function(){var a=this;a.ea=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.N?a.ea.apply(this.P,arguments):a.ea.apply(this,arguments)}},R:function(){this.ea&&(Function.prototype.toString=this.ea)},E:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.da(b.y,c+""),a.apply(this,arguments)}};G(history,"pushState",j,d),G(history,"replaceState",j,d)}if(c.console&&"console"in P&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};u(["debug","info","warn","error","log"],function(a,b){M(console,b,k)})}},S:function(){for(var a;this.u.length;){a=this.u.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},T:function(){for(var a in this.r)this.q[a]=this.r[a]},G:function(){var a=this;u(this.s,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},H:function(a){var b=O.exec(a),c={},d=7;try{for(;d--;)c[N[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.l.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},K:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},B:function(){this.n||this.W.apply(this,arguments)},W:function(a,b){var c=this.Y(a,b);this._("handle",{stackInfo:a,options:b}),this.ga(a.name,a.message,a.url,a.lineno,c,b)},Y:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(u(a.stack,function(b,e){var f=c.ha(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.v,0)}),this.k.user&&(a.user=this.k.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),a=this.qa(a),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||t(a[b]))&&delete a[b]}),q(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!t(a)&&(!q(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.na()?void this.A("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function B(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&j(b))for(c=b.split(/\s+/),f=0;fc?M(a,b-1):d}function N(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?T:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function O(a,b){function c(a){return k(a)?a.map(function(a){return c(a)}):i(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!k(b)||k(b)&&0===b.length)return a;var d,e=w(b),f="********";try{d=JSON.parse(P(a))}catch(g){return a}return c(d)}var P=a(11),Q="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},R=3,S=51200,T=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isUndefined:g,isFunction:h,isPlainObject:i,isString:j,isArray:k,isEmptyObject:l,supportsErrorEvent:m,supportsFetch:n,supportsReferrerPolicy:o,supportsPromiseRejectionEvent:p,wrappedCallback:q,each:r,objectMerge:s,truncate:u,objectFrozen:t,hasKey:v,joinRegExp:w,urlencode:x,uuid4:z,htmlTreeAsString:A,htmlElementAsString:B,isSameException:E,isSameStacktrace:F,parseUrl:y,fill:G,safeJoin:H,serializeException:M,serializeKeysForMessage:N,sanitize:O}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{11:11}],10:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}var e=a(9),f={collectWindowErrors:!0,debug:!1},g="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},h=[].slice,i="?",j=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;f.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function k(a,b){var c=null;if(!b||f.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(h.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,g,h){var l=null,m=e.isErrorEvent(h)?h.error:h,n=e.isErrorEvent(a)?a.message:a;if(v)f.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&e.isError(m))l=f.computeStackTrace(m),k(l,!0);else{var p,r={url:b,line:c,column:g},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(j);p&&(s=p[1],n=p[2])}r.func=i,l={name:s,message:n,url:d(),stack:[r]},k(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=g.onerror,g.onerror=l,r=!0)}function n(){r&&(g.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,k.apply(null,[a,!1].concat(b))}function p(a,b){var c=h.call(arguments,1);if(v){if(u===a)return;o()}var d=f.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),f.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,e,f=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,g=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,h=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,j=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,k=/\((\S*)(?::(\d+))(?::(\d+))\)/,l=a.stack.split("\n"),m=[],n=(/^(.*) is undefined$/.exec(a.message),0),o=l.length;n eval")>-1;q&&(b=j.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==n||c[5]||"undefined"==typeof a.columnNumber||(m[0].column=a.columnNumber+1),e={url:c[3],func:c[1]||i,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}!e.func&&e.line&&(e.func=i),m.push(e)}return m.length?{name:a.name,message:a.message,url:d(),stack:m}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=i),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,g){for(var h,j,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==e&&o!==f.report){ -if(j={url:null,func:i,line:null,column:null},o.name?j.func=o.name:(h=k.exec(o.toString()))&&(j.func=h[1]),"undefined"==typeof j.func)try{j.func=h.input.substring(0,h.input.indexOf("{"))}catch(p){}m[""+o]?n=!0:m[""+o]=!0,l.push(j)}g&&l.splice(0,g);var q={name:a.name,message:a.message,url:d(),stack:l};return b(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),q}function e(b,e){var g=null;e=null==e?0:+e;try{if(g=a(b))return g}catch(h){if(f.debug)throw h}try{if(g=c(b,e+1))return g}catch(h){if(f.debug)throw h}return{name:b.name,message:b.message,url:d()}}return e.augmentStackTraceWithInitialElement=b,e.computeStackTraceFromStackProp=a,e}(),b.exports=f}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{9:9}],11:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}],12:[function(a,b,c){function d(a,b){var c=(65535&a)+(65535&b),d=(a>>16)+(b>>16)+(c>>16);return d<<16|65535&c}function e(a,b){return a<>>32-b}function f(a,b,c,f,g,h){return d(e(d(d(b,a),d(f,h)),g),c)}function g(a,b,c,d,e,g,h){return f(b&c|~b&d,a,b,e,g,h)}function h(a,b,c,d,e,g,h){return f(b&d|c&~d,a,b,e,g,h)}function i(a,b,c,d,e,g,h){return f(b^c^d,a,b,e,g,h)}function j(a,b,c,d,e,g,h){return f(c^(b|~d),a,b,e,g,h)}function k(a,b){a[b>>5]|=128<>>9<<4)+14]=b;var c,e,f,k,l,m=1732584193,n=-271733879,o=-1732584194,p=271733878;for(c=0;c>5]>>>b%32&255);return c}function m(a){var b,c=[];for(c[(a.length>>2)-1]=void 0,b=0;b>5]|=(255&a.charCodeAt(b/8))<16&&(e=k(e,8*a.length)),c=0;c<16;c+=1)f[c]=909522486^e[c],g[c]=1549556828^e[c];return d=k(f.concat(m(b)),512+8*b.length),l(k(g.concat(d),640))}function p(a){var b,c,d="0123456789abcdef",e="";for(c=0;c>>4&15)+d.charAt(15&b);return e}function q(a){return unescape(encodeURIComponent(a))}function r(a){return n(q(a))}function s(a){return p(r(a))}function t(a,b){return o(q(a),q(b))}function u(a,b){return p(t(a,b))}function v(a,b,c){return b?c?t(b,a):u(b,a):c?r(a):s(a)}b.exports=v},{}]},{},[8,1,2,3,4])(8)}); +/*! Raven.js 3.25.0 (80dffad) | github.com/getsentry/raven-js */ +!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.Raven=a()}}(function(){var a;return function b(a,c,d){function e(g,h){if(!c[g]){if(!a[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};a[g][0].call(k.exports,function(b){var c=a[g][1][b];return e(c?c:b)},k,k.exports,b,a,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;g":"anonymous component")+(a._isVue&&a.$options.__file?" at "+a.$options.__file:"")}function e(a,b){if(b=b||window.Vue,b&&b.config){var c=b.config.errorHandler;b.config.errorHandler=function(b,e,f){var g={};"[object Object]"===Object.prototype.toString.call(e)&&(g.componentName=d(e),g.propsData=e.$options.propsData),"undefined"!=typeof f&&(g.lifecycleHook=f),a.captureException(b,{extra:g}),"function"==typeof c&&c.call(this,b,e,f)}}}b.exports=e,a(8).addPlugin(b.exports)},{8:8}],5:[function(a,b,c){function d(a){this.name="RavenConfigError",this.message=a}d.prototype=new Error,d.prototype.constructor=d,b.exports=d},{}],6:[function(a,b,c){var d=a(9),e=function(a,b,c){var e=a[b],f=a;if(b in a){var g="warn"===b?"warning":b;a[b]=function(){var a=[].slice.call(arguments),h=d.safeJoin(a," "),i={level:g,logger:"console",extra:{arguments:a}};"assert"===b?a[0]===!1&&(h="Assertion failed: "+(d.safeJoin(a.slice(1)," ")||"console.assert"),i.extra.arguments=a.slice(1),c&&c(h,i)):c&&c(h,i),e&&Function.prototype.apply.call(e,f,a)}}};b.exports={wrapMethod:e}},{9:9}],7:[function(a,b,c){(function(c){function d(){return+new Date}function e(a,b){return s(b)?function(c){return b(c,a)}:b}function f(){this.b=!("object"!=typeof JSON||!JSON.stringify),this.c=!r(S),this.d=!r(T),this.e=null,this.f=null,this.g=null,this.h=null,this.i=null,this.j=null,this.k={},this.l={release:R.SENTRY_RELEASE&&R.SENTRY_RELEASE.id,logger:"javascript",ignoreErrors:[],ignoreUrls:[],whitelistUrls:[],includePaths:[],headers:null,collectWindowErrors:!0,captureUnhandledRejections:!0,maxMessageLength:0,maxUrlLength:250,stackTraceLimit:50,autoBreadcrumbs:!0,instrument:!0,sampleRate:1,sanitizeKeys:[]},this.m={method:"POST",keepalive:!0,referrerPolicy:K()?"origin":""},this.n=0,this.o=!1,this.p=Error.stackTraceLimit,this.q=R.console||{},this.r={},this.s=[],this.t=d(),this.u=[],this.v=[],this.w=null,this.x=R.location,this.y=this.x&&this.x.href,this.z();for(var a in this.q)this.r[a]=this.q[a]}var g=a(10),h=a(11),i=a(12),j=a(5),k=a(9),l=k.isErrorEvent,m=k.isDOMError,n=k.isDOMException,o=k.isError,p=k.isObject,q=k.isPlainObject,r=k.isUndefined,s=k.isFunction,t=k.isString,u=k.isArray,v=k.isEmptyObject,w=k.each,x=k.objectMerge,y=k.truncate,z=k.objectFrozen,A=k.hasKey,B=k.joinRegExp,C=k.urlencode,D=k.uuid4,E=k.htmlTreeAsString,F=k.isSameException,G=k.isSameStacktrace,H=k.parseUrl,I=k.fill,J=k.supportsFetch,K=k.supportsReferrerPolicy,L=k.serializeKeysForMessage,M=k.serializeException,N=k.sanitize,O=a(6).wrapMethod,P="source protocol user pass host port path".split(" "),Q=/^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/,R="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},S=R.document,T=R.navigator;f.prototype={VERSION:"3.25.0",debug:!1,TraceKit:g,config:function(a,b){var c=this;if(c.h)return this.A("error","Error: Raven has already been configured"),c;if(!a)return c;var d=c.l;b&&w(b,function(a,b){"tags"===a||"extra"===a||"user"===a?c.k[a]=b:d[a]=b}),c.setDSN(a),d.ignoreErrors.push(/^Script error\.?$/),d.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/),d.ignoreErrors=B(d.ignoreErrors),d.ignoreUrls=!!d.ignoreUrls.length&&B(d.ignoreUrls),d.whitelistUrls=!!d.whitelistUrls.length&&B(d.whitelistUrls),d.includePaths=B(d.includePaths),d.maxBreadcrumbs=Math.max(0,Math.min(d.maxBreadcrumbs||100,100));var e={xhr:!0,console:!0,dom:!0,location:!0,sentry:!0},f=d.autoBreadcrumbs;"[object Object]"==={}.toString.call(f)?f=x(e,f):f!==!1&&(f=e),d.autoBreadcrumbs=f;var h={tryCatch:!0},i=d.instrument;return"[object Object]"==={}.toString.call(i)?i=x(h,i):i!==!1&&(i=h),d.instrument=i,g.collectWindowErrors=!!d.collectWindowErrors,c},install:function(){var a=this;return a.isSetup()&&!a.o&&(g.report.subscribe(function(){a.B.apply(a,arguments)}),a.l.captureUnhandledRejections&&a.C(),a.D(),a.l.instrument&&a.l.instrument.tryCatch&&a.E(),a.l.autoBreadcrumbs&&a.F(),a.G(),a.o=!0),Error.stackTraceLimit=a.l.stackTraceLimit,this},setDSN:function(a){var b=this,c=b.H(a),d=c.path.lastIndexOf("/"),e=c.path.substr(1,d);b.I=a,b.i=c.user,b.J=c.pass&&c.pass.substr(1),b.j=c.path.substr(d+1),b.h=b.K(c),b.L=b.h+"/"+e+"api/"+b.j+"/store/",this.z()},context:function(a,b,c){return s(a)&&(c=b||[],b=a,a=void 0),this.wrap(a,b).apply(this,c)},wrap:function(a,b,c){function d(){var d=[],f=arguments.length,g=!a||a&&a.deep!==!1;for(c&&s(c)&&c.apply(this,arguments);f--;)d[f]=g?e.wrap(a,arguments[f]):arguments[f];try{return b.apply(this,d)}catch(h){throw e.M(),e.captureException(h,a),h}}var e=this;if(r(b)&&!s(a))return a;if(s(a)&&(b=a,a=void 0),!s(b))return b;try{if(b.N)return b;if(b.O)return b.O}catch(f){return b}for(var g in b)A(b,g)&&(d[g]=b[g]);return d.prototype=b.prototype,b.O=d,d.N=!0,d.P=b,d},uninstall:function(){return g.report.uninstall(),this.Q(),this.R(),this.S(),this.T(),Error.stackTraceLimit=this.p,this.o=!1,this},U:function(a){this.A("debug","Raven caught unhandled promise rejection:",a),this.captureException(a.reason,{extra:{unhandledPromiseRejection:!0}})},C:function(){return this.U=this.U.bind(this),R.addEventListener&&R.addEventListener("unhandledrejection",this.U),this},Q:function(){return R.removeEventListener&&R.removeEventListener("unhandledrejection",this.U),this},captureException:function(a,b){if(b=x({trimHeadFrames:0},b?b:{}),l(a)&&a.error)a=a.error;else{if(m(a)||n(a)){var c=a.name||(m(a)?"DOMError":"DOMException"),d=a.message?c+": "+a.message:c;return this.captureMessage(d,x(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}))}if(o(a))a=a;else{if(!q(a))return this.captureMessage(a,x(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}));b=this.V(b,a),a=new Error(b.message)}}this.e=a;try{var e=g.computeStackTrace(a);this.W(e,b)}catch(f){if(a!==f)throw f}return this},V:function(a,b){var c=Object.keys(b).sort(),d=x(a,{message:"Non-Error exception captured with keys: "+L(c),fingerprint:[i(c)],extra:a.extra||{}});return d.extra.X=M(b),d},captureMessage:function(a,b){if(!this.l.ignoreErrors.test||!this.l.ignoreErrors.test(a)){b=b||{},a+="";var c,d=x({message:a},b);try{throw new Error(a)}catch(e){c=e}c.name=null;var f=g.computeStackTrace(c),h=u(f.stack)&&f.stack[1];h&&"Raven.captureException"===h.func&&(h=f.stack[2]);var i=h&&h.url||"";if((!this.l.ignoreUrls.test||!this.l.ignoreUrls.test(i))&&(!this.l.whitelistUrls.test||this.l.whitelistUrls.test(i))){if(this.l.stacktrace||b&&b.stacktrace){d.fingerprint=null==d.fingerprint?a:d.fingerprint,b=x({trimHeadFrames:0},b),b.trimHeadFrames+=1;var j=this.Y(f,b);d.stacktrace={frames:j.reverse()}}return d.fingerprint&&(d.fingerprint=u(d.fingerprint)?d.fingerprint:[d.fingerprint]),this.Z(d),this}}},captureBreadcrumb:function(a){var b=x({timestamp:d()/1e3},a);if(s(this.l.breadcrumbCallback)){var c=this.l.breadcrumbCallback(b);if(p(c)&&!v(c))b=c;else if(c===!1)return this}return this.v.push(b),this.v.length>this.l.maxBreadcrumbs&&this.v.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.s.push([a,b]),this.o&&this.G(),this},setUserContext:function(a){return this.k.user=a,this},setExtraContext:function(a){return this.$("extra",a),this},setTagsContext:function(a){return this.$("tags",a),this},clearContext:function(){return this.k={},this},getContext:function(){return JSON.parse(h(this.k))},setEnvironment:function(a){return this.l.environment=a,this},setRelease:function(a){return this.l.release=a,this},setDataCallback:function(a){var b=this.l.dataCallback;return this.l.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.l.breadcrumbCallback;return this.l.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.l.shouldSendCallback;return this.l.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.l.transport=a,this},lastException:function(){return this.e},lastEventId:function(){return this.g},isSetup:function(){return!!this.b&&(!!this.h||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.A("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=R.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(S){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.I;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.k.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.K(this.H(c)),h=S.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(S.head||S.body).appendChild(h)}},M:function(){var a=this;this.n+=1,setTimeout(function(){a.n-=1})},_:function(a,b){var c,d;if(this.c){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),S.createEvent?(c=S.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=S.createEventObject(),c.eventType=a);for(d in b)A(b,d)&&(c[d]=b[d]);if(S.createEvent)S.dispatchEvent(c);else try{S.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},aa:function(a){var b=this;return function(c){if(b.ba=null,b.w!==c){b.w=c;var d;try{d=E(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ca:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.ba;g||a.aa("input")(c),clearTimeout(g),a.ba=setTimeout(function(){a.ba=null},b)}}},da:function(a,b){var c=H(this.x.href),d=H(b),e=H(a);this.y=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},D:function(){var a=this;a.ea=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.N?a.ea.apply(this.P,arguments):a.ea.apply(this,arguments)}},R:function(){this.ea&&(Function.prototype.toString=this.ea)},E:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.da(b.y,c+""),a.apply(this,arguments)}};I(history,"pushState",j,d),I(history,"replaceState",j,d)}if(c.console&&"console"in R&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};w(["debug","info","warn","error","log"],function(a,b){O(console,b,k)})}},S:function(){for(var a;this.u.length;){a=this.u.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},T:function(){for(var a in this.r)this.q[a]=this.r[a]},G:function(){var a=this;w(this.s,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},H:function(a){var b=Q.exec(a),c={},d=7;try{for(;d--;)c[P[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.l.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},K:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},B:function(){this.n||this.W.apply(this,arguments)},W:function(a,b){var c=this.Y(a,b);this._("handle",{stackInfo:a,options:b}),this.ga(a.name,a.message,a.url,a.lineno,c,b)},Y:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(w(a.stack,function(b,e){var f=c.ha(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.v,0)}),this.k.user&&(a.user=this.k.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),a=this.qa(a),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||v(a[b]))&&delete a[b]}),s(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!v(a)&&(!s(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.na()?void this.A("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function F(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&l(b))for(c=b.split(/\s+/),f=0;fc?Q(a,b-1):d}function R(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?X:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function S(a,b){function c(a){return m(a)?a.map(function(a){return c(a)}):k(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!m(b)||m(b)&&0===b.length)return a;var d,e=A(b),f="********";try{d=JSON.parse(T(a))}catch(g){return a}return c(d)}var T=a(11),U="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},V=3,W=51200,X=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isDOMError:g,isDOMException:h,isUndefined:i,isFunction:j,isPlainObject:k,isString:l,isArray:m,isEmptyObject:n,supportsErrorEvent:o,supportsDOMError:p,supportsDOMException:q,supportsFetch:r,supportsReferrerPolicy:s,supportsPromiseRejectionEvent:t,wrappedCallback:u,each:v,objectMerge:w,truncate:y,objectFrozen:x,hasKey:z,joinRegExp:A,urlencode:B,uuid4:D,htmlTreeAsString:E,htmlElementAsString:F,isSameException:I,isSameStacktrace:J,parseUrl:C,fill:K,safeJoin:L,serializeException:Q,serializeKeysForMessage:R,sanitize:S}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{11:11}],10:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}function e(){return"undefined"==typeof document||null==document.location?"":document.location.origin}var f=a(9),g={collectWindowErrors:!0,debug:!1},h="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},i=[].slice,j="?",k=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;g.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function e(a,b){var c=null;if(!b||g.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(i.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,h,i){var l=null,m=f.isErrorEvent(i)?i.error:i,n=f.isErrorEvent(a)?a.message:a;if(v)g.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&f.isError(m))l=g.computeStackTrace(m),e(l,!0);else{var p,r={url:b,line:c,column:h},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(k);p&&(s=p[1],n=p[2])}r.func=j,l={name:s,message:n,url:d(),stack:[r]},e(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=h.onerror,h.onerror=l,r=!0)}function n(){r&&(h.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,e.apply(null,[a,!1].concat(b))}function p(a,b){var c=i.call(arguments,1);if(v){if(u===a)return;o()}var d=g.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),g.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,f,g=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,h=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,i=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,k=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,l=/\((\S*)(?::(\d+))(?::(\d+))\)/,m=a.stack.split("\n"),n=[],o=(/^(.*) is undefined$/.exec(a.message),0),p=m.length;o eval")>-1;r&&(b=k.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==o||c[5]||"undefined"==typeof a.columnNumber||(n[0].column=a.columnNumber+1), +f={url:c[3],func:c[1]||j,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}if(!f.func&&f.line&&(f.func=j),f.url&&"blob:"===f.url.substr(0,5)){var s=new XMLHttpRequest;if(s.open("GET",f.url,!1),s.send(null),200===s.status){var t=s.responseText||"";t=t.slice(-300);var u=t.match(/\/\/# sourceMappingURL=(.*)$/);if(u){var v=u[1];"~"===v.charAt(0)&&(v=e()+v.slice(1)),f.url=v.slice(0,-4)}}}n.push(f)}return n.length?{name:a.name,message:a.message,url:d(),stack:n}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=j),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,e){for(var h,i,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==f&&o!==g.report){if(i={url:null,func:j,line:null,column:null},o.name?i.func=o.name:(h=k.exec(o.toString()))&&(i.func=h[1]),"undefined"==typeof i.func)try{i.func=h.input.substring(0,h.input.indexOf("{"))}catch(p){}m[""+o]?n=!0:m[""+o]=!0,l.push(i)}e&&l.splice(0,e);var q={name:a.name,message:a.message,url:d(),stack:l};return b(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),q}function f(b,e){var f=null;e=null==e?0:+e;try{if(f=a(b))return f}catch(h){if(g.debug)throw h}try{if(f=c(b,e+1))return f}catch(h){if(g.debug)throw h}return{name:b.name,message:b.message,url:d()}}return f.augmentStackTraceWithInitialElement=b,f.computeStackTraceFromStackProp=a,f}(),b.exports=g}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{9:9}],11:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}],12:[function(a,b,c){function d(a,b){var c=(65535&a)+(65535&b),d=(a>>16)+(b>>16)+(c>>16);return d<<16|65535&c}function e(a,b){return a<>>32-b}function f(a,b,c,f,g,h){return d(e(d(d(b,a),d(f,h)),g),c)}function g(a,b,c,d,e,g,h){return f(b&c|~b&d,a,b,e,g,h)}function h(a,b,c,d,e,g,h){return f(b&d|c&~d,a,b,e,g,h)}function i(a,b,c,d,e,g,h){return f(b^c^d,a,b,e,g,h)}function j(a,b,c,d,e,g,h){return f(c^(b|~d),a,b,e,g,h)}function k(a,b){a[b>>5]|=128<>>9<<4)+14]=b;var c,e,f,k,l,m=1732584193,n=-271733879,o=-1732584194,p=271733878;for(c=0;c>5]>>>b%32&255);return c}function m(a){var b,c=[];for(c[(a.length>>2)-1]=void 0,b=0;b>5]|=(255&a.charCodeAt(b/8))<16&&(e=k(e,8*a.length)),c=0;c<16;c+=1)f[c]=909522486^e[c],g[c]=1549556828^e[c];return d=k(f.concat(m(b)),512+8*b.length),l(k(g.concat(d),640))}function p(a){var b,c,d="0123456789abcdef",e="";for(c=0;c>>4&15)+d.charAt(15&b);return e}function q(a){return unescape(encodeURIComponent(a))}function r(a){return n(q(a))}function s(a){return p(r(a))}function t(a,b){return o(q(a),q(b))}function u(a,b){return p(t(a,b))}function v(a,b,c){return b?c?t(b,a):u(b,a):c?r(a):s(a)}b.exports=v},{}]},{},[8,1,2,3,4])(8)}); //# sourceMappingURL=raven.min.js.map \ No newline at end of file diff --git a/dist/angular,console,require,vue/raven.min.js.map b/dist/angular,console,require,vue/raven.min.js.map index bcdc2169f65b..c061367c08bc 100644 --- a/dist/angular,console,require,vue/raven.min.js.map +++ b/dist/angular,console,require,vue/raven.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","angularPlugin","angular","RavenProvider","$get","$window","ExceptionHandlerProvider","$provide","decorator","exceptionHandler","R","$delegate","ex","cause","captureException","extra","moduleName","provider","config","setDataCallback","wrappedCallback","data","_normalizeData","angularPattern","exception","values","matches","exec","value","type","message","angularDocs","substr","addPlugin","8","9","2","consolePlugin","console","pluginOptions","logLevels","levels","push","callback","msg","captureMessage","level","pop","wrapConsoleMethod","wrapMethod","6","3","requirePlugin","wrap","deep","4","formatComponentName","vm","$root","name","_isVue","$options","_componentTag","__file","vuePlugin","Vue","_oldOnError","errorHandler","error","info","metaData","Object","prototype","toString","componentName","propsData","lifecycleHook","5","RavenConfigError","constructor","utils","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","safeJoin","logger","Function","apply","7","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","sanitizeKeys","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isError","isObject","isPlainObject","isErrorEvent","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","sanitize","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","dsn","options","_logDebug","globalOptions","key","setDSN","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","context","func","undefined","_before","wrapped","_ignoreNextOnError","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","U","event","reason","unhandledPromiseRejection","C","_promiseRejectionHandler","bind","addEventListener","Q","removeEventListener","trimHeadFrames","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","V","currentOptions","exKeys","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","M","setTimeout","_","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","aa","evtName","_keypressTimeout","target","category","ca","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","da","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","D","_originalFunctionToString","E","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","F","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","S","builtin","T","G","installer","concat","H","str","m","allowSecretKey","K","port","B","W","stackInfo","_triggerEvent","_processException","lineno","Y","frame","_normalizeFrame","in_app","ha","stackInfoUrl","normalized","filename","line","colno","column","function","ga","prefixedMessage","culprit","ia","request","Referer","breadcrumbs","_trimBreadcrumbs","ja","urlProp","urlProps","ka","httpData","userAgent","User-Agent","referrer","z","_backoffDuration","_backoffStart","na","oa","current","last","pa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Z","baseData","project","platform","_getHttpData","serverName","server_name","_sanitizeData","forEach","random","_sendProcessedPayload","qa","sa","ra","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","ta","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","onerror","open","setRequestHeader","send","ua","hash","evaluated","A","$","setUser","setReleaseContext","10","11","12","RavenConstructor","_Raven","noConflict","Client","what","supportsErrorEvent","ErrorEvent","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","sanitizeMask","safeInput","o_O","getLocationHref","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","y","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","charAt","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","string","raw"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file +{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","angularPlugin","angular","RavenProvider","$get","$window","ExceptionHandlerProvider","$provide","decorator","exceptionHandler","R","$delegate","ex","cause","captureException","extra","moduleName","provider","config","setDataCallback","wrappedCallback","data","_normalizeData","angularPattern","exception","values","matches","exec","value","type","message","angularDocs","substr","addPlugin","8","9","2","consolePlugin","console","pluginOptions","logLevels","levels","push","callback","msg","captureMessage","level","pop","wrapConsoleMethod","wrapMethod","6","3","requirePlugin","wrap","deep","4","formatComponentName","vm","$root","name","_isVue","$options","_componentTag","__file","vuePlugin","Vue","_oldOnError","errorHandler","error","info","metaData","Object","prototype","toString","componentName","propsData","lifecycleHook","5","RavenConfigError","constructor","utils","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","safeJoin","logger","Function","apply","7","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","sanitizeKeys","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isErrorEvent","isDOMError","isDOMException","isError","isObject","isPlainObject","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","sanitize","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","dsn","options","_logDebug","globalOptions","key","setDSN","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","context","func","undefined","_before","wrapped","_ignoreNextOnError","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","U","event","reason","unhandledPromiseRejection","C","_promiseRejectionHandler","bind","addEventListener","Q","removeEventListener","trimHeadFrames","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","V","currentOptions","exKeys","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","M","setTimeout","_","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","aa","evtName","_keypressTimeout","target","category","ca","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","da","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","D","_originalFunctionToString","E","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","F","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","S","builtin","T","G","installer","concat","H","str","m","allowSecretKey","K","port","B","W","stackInfo","_triggerEvent","_processException","lineno","Y","frame","_normalizeFrame","in_app","ha","stackInfoUrl","normalized","filename","line","colno","column","function","ga","prefixedMessage","culprit","ia","request","Referer","breadcrumbs","_trimBreadcrumbs","ja","urlProp","urlProps","ka","httpData","userAgent","User-Agent","referrer","z","_backoffDuration","_backoffStart","na","oa","current","last","pa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Z","baseData","project","platform","_getHttpData","serverName","server_name","_sanitizeData","forEach","random","_sendProcessedPayload","qa","sa","ra","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","ta","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","onerror","open","setRequestHeader","send","ua","hash","evaluated","A","$","setUser","setReleaseContext","10","11","12","RavenConstructor","_Raven","noConflict","Client","what","supportsErrorEvent","ErrorEvent","supportsDOMError","DOMError","supportsDOMException","DOMException","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","sanitizeMask","safeInput","o_O","getLocationHref","getLocationOrigin","origin","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","responseText","sourceMaps","sourceMapAddress","charAt","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","y","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","string","raw"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file diff --git a/dist/angular,console,require/raven.js b/dist/angular,console,require/raven.js index 89d5288859d7..5ac6f1f2bb78 100644 --- a/dist/angular,console,require/raven.js +++ b/dist/angular,console,require/raven.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.24.2 (540f32b) | github.com/getsentry/raven-js */ +/*! Raven.js 3.25.0 (80dffad) | github.com/getsentry/raven-js */ /* * Includes TraceKit @@ -203,10 +203,12 @@ var md5 = _dereq_(11); var RavenConfigError = _dereq_(4); var utils = _dereq_(8); +var isErrorEvent = utils.isErrorEvent; +var isDOMError = utils.isDOMError; +var isDOMException = utils.isDOMException; var isError = utils.isError; var isObject = utils.isObject; var isPlainObject = utils.isPlainObject; -var isErrorEvent = utils.isErrorEvent; var isUndefined = utils.isUndefined; var isFunction = utils.isFunction; var isString = utils.isString; @@ -334,7 +336,7 @@ Raven.prototype = { // webpack (using a build step causes webpack #1617). Grunt verifies that // this value matches package.json during build. // See: https://github.com/getsentry/raven-js/issues/465 - VERSION: '3.24.2', + VERSION: '3.25.0', debug: false, @@ -666,6 +668,23 @@ Raven.prototype = { if (isErrorEvent(ex) && ex.error) { // If it is an ErrorEvent with `error` property, extract it to get actual Error ex = ex.error; + } else if (isDOMError(ex) || isDOMException(ex)) { + // If it is a DOMError or DOMException (which are legacy APIs, but still supported in some browsers) + // then we just extract the name and message, as they don't provide anything else + // https://developer.mozilla.org/en-US/docs/Web/API/DOMError + // https://developer.mozilla.org/en-US/docs/Web/API/DOMException + var name = ex.name || (isDOMError(ex) ? 'DOMError' : 'DOMException'); + var message = ex.message ? name + ': ' + ex.message : name; + + return this.captureMessage( + message, + objectMerge(options, { + // neither DOMError or DOMException provide stack trace and we most likely wont get it this way as well + // but it's barely any overhead so we may at least try + stacktrace: true, + trimHeadFrames: options.trimHeadFrames + 1 + }) + ); } else if (isError(ex)) { // we have a real Error object ex = ex; @@ -677,6 +696,7 @@ Raven.prototype = { ex = new Error(options.message); } else { // If none of previous checks were valid, then it means that + // it's not a DOMError/DOMException // it's not a plain Object // it's not a valid ErrorEvent (one with an error property) // it's not an Error @@ -2449,7 +2469,7 @@ function isObject(what) { // Yanked from https://git.io/vS8DV re-used under CC0 // with some tiny modifications function isError(value) { - switch ({}.toString.call(value)) { + switch (Object.prototype.toString.call(value)) { case '[object Error]': return true; case '[object Exception]': @@ -2462,7 +2482,15 @@ function isError(value) { } function isErrorEvent(value) { - return supportsErrorEvent() && {}.toString.call(value) === '[object ErrorEvent]'; + return Object.prototype.toString.call(value) === '[object ErrorEvent]'; +} + +function isDOMError(value) { + return Object.prototype.toString.call(value) === '[object DOMError]'; +} + +function isDOMException(value) { + return Object.prototype.toString.call(value) === '[object DOMException]'; } function isUndefined(what) { @@ -2505,6 +2533,24 @@ function supportsErrorEvent() { } } +function supportsDOMError() { + try { + new DOMError(''); // eslint-disable-line no-new + return true; + } catch (e) { + return false; + } +} + +function supportsDOMException() { + try { + new DOMException(''); // eslint-disable-line no-new + return true; + } catch (e) { + return false; + } +} + function supportsFetch() { if (!('fetch' in _window)) return false; @@ -3020,6 +3066,8 @@ module.exports = { isObject: isObject, isError: isError, isErrorEvent: isErrorEvent, + isDOMError: isDOMError, + isDOMException: isDOMException, isUndefined: isUndefined, isFunction: isFunction, isPlainObject: isPlainObject, @@ -3027,6 +3075,8 @@ module.exports = { isArray: isArray, isEmptyObject: isEmptyObject, supportsErrorEvent: supportsErrorEvent, + supportsDOMError: supportsDOMError, + supportsDOMException: supportsDOMException, supportsFetch: supportsFetch, supportsReferrerPolicy: supportsReferrerPolicy, supportsPromiseRejectionEvent: supportsPromiseRejectionEvent, @@ -3086,10 +3136,14 @@ var ERROR_TYPES_RE = /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Ran function getLocationHref() { if (typeof document === 'undefined' || document.location == null) return ''; - return document.location.href; } +function getLocationOrigin() { + if (typeof document === 'undefined' || document.location == null) return ''; + return document.location.origin; +} + /** * TraceKit.report: cross-browser processing of unhandled exceptions * @@ -3497,6 +3551,44 @@ TraceKit.computeStackTrace = (function computeStackTraceWrapper() { element.func = UNKNOWN_FUNCTION; } + if (element.url && element.url.substr(0, 5) === 'blob:') { + // Special case for handling JavaScript loaded into a blob. + // We use a synchronous AJAX request here as a blob is already in + // memory - it's not making a network request. This will generate a warning + // in the browser console, but there has already been an error so that's not + // that much of an issue. + var xhr = new XMLHttpRequest(); + xhr.open('GET', element.url, false); + xhr.send(null); + + // If we failed to download the source, skip this patch + if (xhr.status === 200) { + var source = xhr.responseText || ''; + + // We trim the source down to the last 300 characters as sourceMappingURL is always at the end of the file. + // Why 300? To be in line with: https://github.com/getsentry/sentry/blob/4af29e8f2350e20c28a6933354e4f42437b4ba42/src/sentry/lang/javascript/processor.py#L164-L175 + source = source.slice(-300); + + // Now we dig out the source map URL + var sourceMaps = source.match(/\/\/# sourceMappingURL=(.*)$/); + + // If we don't find a source map comment or we find more than one, continue on to the next element. + if (sourceMaps) { + var sourceMapAddress = sourceMaps[1]; + + // Now we check to see if it's a relative URL. + // If it is, convert it to an absolute one. + if (sourceMapAddress.charAt(0) === '~') { + sourceMapAddress = getLocationOrigin() + sourceMapAddress.slice(1); + } + + // Now we strip the '.map' off of the end of the URL and update the + // element so that Sentry can match the map to the blob. + element.url = sourceMapAddress.slice(0, -4); + } + } + } + stack.push(element); } diff --git a/dist/angular,console,require/raven.min.js b/dist/angular,console,require/raven.min.js index 5670062a393a..ab8b3f04c229 100644 --- a/dist/angular,console,require/raven.min.js +++ b/dist/angular,console,require/raven.min.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.24.2 (540f32b) | github.com/getsentry/raven-js */ -!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.Raven=a()}}(function(){var a;return function b(a,c,d){function e(g,h){if(!c[g]){if(!a[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};a[g][0].call(k.exports,function(b){var c=a[g][1][b];return e(c?c:b)},k,k.exports,b,a,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;gthis.l.maxBreadcrumbs&&this.v.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.s.push([a,b]),this.o&&this.G(),this},setUserContext:function(a){return this.k.user=a,this},setExtraContext:function(a){return this.$("extra",a),this},setTagsContext:function(a){return this.$("tags",a),this},clearContext:function(){return this.k={},this},getContext:function(){return JSON.parse(h(this.k))},setEnvironment:function(a){return this.l.environment=a,this},setRelease:function(a){return this.l.release=a,this},setDataCallback:function(a){var b=this.l.dataCallback;return this.l.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.l.breadcrumbCallback;return this.l.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.l.shouldSendCallback;return this.l.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.l.transport=a,this},lastException:function(){return this.e},lastEventId:function(){return this.g},isSetup:function(){return!!this.b&&(!!this.h||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.A("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=P.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(Q){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.I;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.k.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.K(this.H(c)),h=Q.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(Q.head||Q.body).appendChild(h)}},M:function(){var a=this;this.n+=1,setTimeout(function(){a.n-=1})},_:function(a,b){var c,d;if(this.c){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),Q.createEvent?(c=Q.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=Q.createEventObject(),c.eventType=a);for(d in b)y(b,d)&&(c[d]=b[d]);if(Q.createEvent)Q.dispatchEvent(c);else try{Q.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},aa:function(a){var b=this;return function(c){if(b.ba=null,b.w!==c){b.w=c;var d;try{d=C(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ca:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.ba;g||a.aa("input")(c),clearTimeout(g),a.ba=setTimeout(function(){a.ba=null},b)}}},da:function(a,b){var c=F(this.x.href),d=F(b),e=F(a);this.y=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},D:function(){var a=this;a.ea=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.N?a.ea.apply(this.P,arguments):a.ea.apply(this,arguments)}},R:function(){this.ea&&(Function.prototype.toString=this.ea)},E:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.da(b.y,c+""),a.apply(this,arguments)}};G(history,"pushState",j,d),G(history,"replaceState",j,d)}if(c.console&&"console"in P&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};u(["debug","info","warn","error","log"],function(a,b){M(console,b,k)})}},S:function(){for(var a;this.u.length;){a=this.u.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},T:function(){for(var a in this.r)this.q[a]=this.r[a]},G:function(){var a=this;u(this.s,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},H:function(a){var b=O.exec(a),c={},d=7;try{for(;d--;)c[N[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.l.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},K:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},B:function(){this.n||this.W.apply(this,arguments)},W:function(a,b){var c=this.Y(a,b);this._("handle",{stackInfo:a,options:b}),this.ga(a.name,a.message,a.url,a.lineno,c,b)},Y:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(u(a.stack,function(b,e){var f=c.ha(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.v,0)}),this.k.user&&(a.user=this.k.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),a=this.qa(a),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||t(a[b]))&&delete a[b]}),q(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!t(a)&&(!q(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.na()?void this.A("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function B(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&j(b))for(c=b.split(/\s+/),f=0;fc?M(a,b-1):d}function N(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?T:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function O(a,b){function c(a){return k(a)?a.map(function(a){return c(a)}):i(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!k(b)||k(b)&&0===b.length)return a;var d,e=w(b),f="********";try{d=JSON.parse(P(a))}catch(g){return a}return c(d)}var P=a(10),Q="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},R=3,S=51200,T=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isUndefined:g,isFunction:h,isPlainObject:i,isString:j,isArray:k,isEmptyObject:l,supportsErrorEvent:m,supportsFetch:n,supportsReferrerPolicy:o,supportsPromiseRejectionEvent:p,wrappedCallback:q,each:r,objectMerge:s,truncate:u,objectFrozen:t,hasKey:v,joinRegExp:w,urlencode:x,uuid4:z,htmlTreeAsString:A,htmlElementAsString:B,isSameException:E,isSameStacktrace:F,parseUrl:y,fill:G,safeJoin:H,serializeException:M,serializeKeysForMessage:N,sanitize:O}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{10:10}],9:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}var e=a(8),f={collectWindowErrors:!0,debug:!1},g="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},h=[].slice,i="?",j=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;f.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function k(a,b){var c=null;if(!b||f.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(h.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,g,h){var l=null,m=e.isErrorEvent(h)?h.error:h,n=e.isErrorEvent(a)?a.message:a;if(v)f.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&e.isError(m))l=f.computeStackTrace(m),k(l,!0);else{var p,r={url:b,line:c,column:g},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(j);p&&(s=p[1],n=p[2])}r.func=i,l={name:s,message:n,url:d(),stack:[r]},k(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=g.onerror,g.onerror=l,r=!0)}function n(){r&&(g.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,k.apply(null,[a,!1].concat(b))}function p(a,b){var c=h.call(arguments,1);if(v){if(u===a)return;o()}var d=f.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),f.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,e,f=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,g=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,h=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,j=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,k=/\((\S*)(?::(\d+))(?::(\d+))\)/,l=a.stack.split("\n"),m=[],n=(/^(.*) is undefined$/.exec(a.message),0),o=l.length;n eval")>-1;q&&(b=j.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==n||c[5]||"undefined"==typeof a.columnNumber||(m[0].column=a.columnNumber+1),e={url:c[3],func:c[1]||i,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}!e.func&&e.line&&(e.func=i),m.push(e)}return m.length?{name:a.name,message:a.message,url:d(),stack:m}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=i),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,g){for(var h,j,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==e&&o!==f.report){if(j={url:null,func:i,line:null,column:null},o.name?j.func=o.name:(h=k.exec(o.toString()))&&(j.func=h[1]),"undefined"==typeof j.func)try{j.func=h.input.substring(0,h.input.indexOf("{"))}catch(p){}m[""+o]?n=!0:m[""+o]=!0,l.push(j)}g&&l.splice(0,g);var q={name:a.name,message:a.message,url:d(),stack:l};return b(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),q}function e(b,e){var g=null;e=null==e?0:+e;try{if(g=a(b))return g}catch(h){if(f.debug)throw h}try{if(g=c(b,e+1))return g}catch(h){if(f.debug)throw h}return{name:b.name,message:b.message,url:d()}}return e.augmentStackTraceWithInitialElement=b,e.computeStackTraceFromStackProp=a, -e}(),b.exports=f}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{8:8}],10:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}],11:[function(a,b,c){function d(a,b){var c=(65535&a)+(65535&b),d=(a>>16)+(b>>16)+(c>>16);return d<<16|65535&c}function e(a,b){return a<>>32-b}function f(a,b,c,f,g,h){return d(e(d(d(b,a),d(f,h)),g),c)}function g(a,b,c,d,e,g,h){return f(b&c|~b&d,a,b,e,g,h)}function h(a,b,c,d,e,g,h){return f(b&d|c&~d,a,b,e,g,h)}function i(a,b,c,d,e,g,h){return f(b^c^d,a,b,e,g,h)}function j(a,b,c,d,e,g,h){return f(c^(b|~d),a,b,e,g,h)}function k(a,b){a[b>>5]|=128<>>9<<4)+14]=b;var c,e,f,k,l,m=1732584193,n=-271733879,o=-1732584194,p=271733878;for(c=0;c>5]>>>b%32&255);return c}function m(a){var b,c=[];for(c[(a.length>>2)-1]=void 0,b=0;b>5]|=(255&a.charCodeAt(b/8))<16&&(e=k(e,8*a.length)),c=0;c<16;c+=1)f[c]=909522486^e[c],g[c]=1549556828^e[c];return d=k(f.concat(m(b)),512+8*b.length),l(k(g.concat(d),640))}function p(a){var b,c,d="0123456789abcdef",e="";for(c=0;c>>4&15)+d.charAt(15&b);return e}function q(a){return unescape(encodeURIComponent(a))}function r(a){return n(q(a))}function s(a){return p(r(a))}function t(a,b){return o(q(a),q(b))}function u(a,b){return p(t(a,b))}function v(a,b,c){return b?c?t(b,a):u(b,a):c?r(a):s(a)}b.exports=v},{}]},{},[7,1,2,3])(7)}); +/*! Raven.js 3.25.0 (80dffad) | github.com/getsentry/raven-js */ +!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.Raven=a()}}(function(){var a;return function b(a,c,d){function e(g,h){if(!c[g]){if(!a[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};a[g][0].call(k.exports,function(b){var c=a[g][1][b];return e(c?c:b)},k,k.exports,b,a,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;gthis.l.maxBreadcrumbs&&this.v.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.s.push([a,b]),this.o&&this.G(),this},setUserContext:function(a){return this.k.user=a,this},setExtraContext:function(a){return this.$("extra",a),this},setTagsContext:function(a){return this.$("tags",a),this},clearContext:function(){return this.k={},this},getContext:function(){return JSON.parse(h(this.k))},setEnvironment:function(a){return this.l.environment=a,this},setRelease:function(a){return this.l.release=a,this},setDataCallback:function(a){var b=this.l.dataCallback;return this.l.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.l.breadcrumbCallback;return this.l.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.l.shouldSendCallback;return this.l.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.l.transport=a,this},lastException:function(){return this.e},lastEventId:function(){return this.g},isSetup:function(){return!!this.b&&(!!this.h||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.A("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=R.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(S){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.I;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.k.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.K(this.H(c)),h=S.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(S.head||S.body).appendChild(h)}},M:function(){var a=this;this.n+=1,setTimeout(function(){a.n-=1})},_:function(a,b){var c,d;if(this.c){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),S.createEvent?(c=S.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=S.createEventObject(),c.eventType=a);for(d in b)A(b,d)&&(c[d]=b[d]);if(S.createEvent)S.dispatchEvent(c);else try{S.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},aa:function(a){var b=this;return function(c){if(b.ba=null,b.w!==c){b.w=c;var d;try{d=E(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ca:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.ba;g||a.aa("input")(c),clearTimeout(g),a.ba=setTimeout(function(){a.ba=null},b)}}},da:function(a,b){var c=H(this.x.href),d=H(b),e=H(a);this.y=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},D:function(){var a=this;a.ea=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.N?a.ea.apply(this.P,arguments):a.ea.apply(this,arguments)}},R:function(){this.ea&&(Function.prototype.toString=this.ea)},E:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.da(b.y,c+""),a.apply(this,arguments)}};I(history,"pushState",j,d),I(history,"replaceState",j,d)}if(c.console&&"console"in R&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};w(["debug","info","warn","error","log"],function(a,b){O(console,b,k)})}},S:function(){for(var a;this.u.length;){a=this.u.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},T:function(){for(var a in this.r)this.q[a]=this.r[a]},G:function(){var a=this;w(this.s,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},H:function(a){var b=Q.exec(a),c={},d=7;try{for(;d--;)c[P[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.l.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},K:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},B:function(){this.n||this.W.apply(this,arguments)},W:function(a,b){var c=this.Y(a,b);this._("handle",{stackInfo:a,options:b}),this.ga(a.name,a.message,a.url,a.lineno,c,b)},Y:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(w(a.stack,function(b,e){var f=c.ha(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.v,0)}),this.k.user&&(a.user=this.k.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),a=this.qa(a),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||v(a[b]))&&delete a[b]}),s(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!v(a)&&(!s(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.na()?void this.A("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function F(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&l(b))for(c=b.split(/\s+/),f=0;fc?Q(a,b-1):d}function R(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?X:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function S(a,b){function c(a){return m(a)?a.map(function(a){return c(a)}):k(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!m(b)||m(b)&&0===b.length)return a;var d,e=A(b),f="********";try{d=JSON.parse(T(a))}catch(g){return a}return c(d)}var T=a(10),U="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},V=3,W=51200,X=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isDOMError:g,isDOMException:h,isUndefined:i,isFunction:j,isPlainObject:k,isString:l,isArray:m,isEmptyObject:n,supportsErrorEvent:o,supportsDOMError:p,supportsDOMException:q,supportsFetch:r,supportsReferrerPolicy:s,supportsPromiseRejectionEvent:t,wrappedCallback:u,each:v,objectMerge:w,truncate:y,objectFrozen:x,hasKey:z,joinRegExp:A,urlencode:B,uuid4:D,htmlTreeAsString:E,htmlElementAsString:F,isSameException:I,isSameStacktrace:J,parseUrl:C,fill:K,safeJoin:L,serializeException:Q,serializeKeysForMessage:R,sanitize:S}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{10:10}],9:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}function e(){return"undefined"==typeof document||null==document.location?"":document.location.origin}var f=a(8),g={collectWindowErrors:!0,debug:!1},h="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},i=[].slice,j="?",k=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;g.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function e(a,b){var c=null;if(!b||g.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(i.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,h,i){var l=null,m=f.isErrorEvent(i)?i.error:i,n=f.isErrorEvent(a)?a.message:a;if(v)g.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&f.isError(m))l=g.computeStackTrace(m),e(l,!0);else{var p,r={url:b,line:c,column:h},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(k);p&&(s=p[1],n=p[2])}r.func=j,l={name:s,message:n,url:d(),stack:[r]},e(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=h.onerror,h.onerror=l,r=!0)}function n(){r&&(h.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,e.apply(null,[a,!1].concat(b))}function p(a,b){var c=i.call(arguments,1);if(v){if(u===a)return;o()}var d=g.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),g.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,f,g=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,h=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,i=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,k=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,l=/\((\S*)(?::(\d+))(?::(\d+))\)/,m=a.stack.split("\n"),n=[],o=(/^(.*) is undefined$/.exec(a.message),0),p=m.length;o eval")>-1;r&&(b=k.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==o||c[5]||"undefined"==typeof a.columnNumber||(n[0].column=a.columnNumber+1),f={url:c[3],func:c[1]||j,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}if(!f.func&&f.line&&(f.func=j),f.url&&"blob:"===f.url.substr(0,5)){var s=new XMLHttpRequest;if(s.open("GET",f.url,!1),s.send(null),200===s.status){var t=s.responseText||"";t=t.slice(-300);var u=t.match(/\/\/# sourceMappingURL=(.*)$/);if(u){var v=u[1];"~"===v.charAt(0)&&(v=e()+v.slice(1)),f.url=v.slice(0,-4)}}}n.push(f)}return n.length?{name:a.name,message:a.message,url:d(),stack:n}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=j),a.stack.length>0&&a.stack[0].url===e.url){ +if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,e){for(var h,i,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==f&&o!==g.report){if(i={url:null,func:j,line:null,column:null},o.name?i.func=o.name:(h=k.exec(o.toString()))&&(i.func=h[1]),"undefined"==typeof i.func)try{i.func=h.input.substring(0,h.input.indexOf("{"))}catch(p){}m[""+o]?n=!0:m[""+o]=!0,l.push(i)}e&&l.splice(0,e);var q={name:a.name,message:a.message,url:d(),stack:l};return b(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),q}function f(b,e){var f=null;e=null==e?0:+e;try{if(f=a(b))return f}catch(h){if(g.debug)throw h}try{if(f=c(b,e+1))return f}catch(h){if(g.debug)throw h}return{name:b.name,message:b.message,url:d()}}return f.augmentStackTraceWithInitialElement=b,f.computeStackTraceFromStackProp=a,f}(),b.exports=g}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{8:8}],10:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}],11:[function(a,b,c){function d(a,b){var c=(65535&a)+(65535&b),d=(a>>16)+(b>>16)+(c>>16);return d<<16|65535&c}function e(a,b){return a<>>32-b}function f(a,b,c,f,g,h){return d(e(d(d(b,a),d(f,h)),g),c)}function g(a,b,c,d,e,g,h){return f(b&c|~b&d,a,b,e,g,h)}function h(a,b,c,d,e,g,h){return f(b&d|c&~d,a,b,e,g,h)}function i(a,b,c,d,e,g,h){return f(b^c^d,a,b,e,g,h)}function j(a,b,c,d,e,g,h){return f(c^(b|~d),a,b,e,g,h)}function k(a,b){a[b>>5]|=128<>>9<<4)+14]=b;var c,e,f,k,l,m=1732584193,n=-271733879,o=-1732584194,p=271733878;for(c=0;c>5]>>>b%32&255);return c}function m(a){var b,c=[];for(c[(a.length>>2)-1]=void 0,b=0;b>5]|=(255&a.charCodeAt(b/8))<16&&(e=k(e,8*a.length)),c=0;c<16;c+=1)f[c]=909522486^e[c],g[c]=1549556828^e[c];return d=k(f.concat(m(b)),512+8*b.length),l(k(g.concat(d),640))}function p(a){var b,c,d="0123456789abcdef",e="";for(c=0;c>>4&15)+d.charAt(15&b);return e}function q(a){return unescape(encodeURIComponent(a))}function r(a){return n(q(a))}function s(a){return p(r(a))}function t(a,b){return o(q(a),q(b))}function u(a,b){return p(t(a,b))}function v(a,b,c){return b?c?t(b,a):u(b,a):c?r(a):s(a)}b.exports=v},{}]},{},[7,1,2,3])(7)}); //# sourceMappingURL=raven.min.js.map \ No newline at end of file diff --git a/dist/angular,console,require/raven.min.js.map b/dist/angular,console,require/raven.min.js.map index 4c13d11f87a8..92b3e7c72b62 100644 --- a/dist/angular,console,require/raven.min.js.map +++ b/dist/angular,console,require/raven.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","angularPlugin","angular","RavenProvider","$get","$window","ExceptionHandlerProvider","$provide","decorator","exceptionHandler","R","$delegate","ex","cause","captureException","extra","moduleName","provider","config","setDataCallback","wrappedCallback","data","_normalizeData","angularPattern","exception","values","matches","exec","value","type","message","angularDocs","substr","addPlugin","7","8","2","consolePlugin","console","pluginOptions","logLevels","levels","push","callback","msg","captureMessage","level","pop","wrapConsoleMethod","wrapMethod","5","3","requirePlugin","wrap","deep","4","RavenConfigError","name","prototype","constructor","utils","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","safeJoin","logger","Function","apply","6","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","sanitizeKeys","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isError","isObject","isPlainObject","isErrorEvent","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","sanitize","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","dsn","options","_logDebug","globalOptions","key","setDSN","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","toString","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","context","func","undefined","_before","wrapped","_ignoreNextOnError","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","U","event","reason","unhandledPromiseRejection","C","_promiseRejectionHandler","bind","addEventListener","Q","removeEventListener","trimHeadFrames","error","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","V","currentOptions","exKeys","Object","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","M","setTimeout","_","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","aa","evtName","_keypressTimeout","target","category","ca","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","da","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","D","_originalFunctionToString","E","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","F","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","S","builtin","T","G","installer","concat","H","str","m","allowSecretKey","K","port","B","W","stackInfo","_triggerEvent","_processException","lineno","Y","frame","_normalizeFrame","in_app","ha","stackInfoUrl","normalized","filename","line","colno","column","function","ga","prefixedMessage","culprit","ia","request","Referer","breadcrumbs","_trimBreadcrumbs","ja","urlProp","urlProps","ka","httpData","userAgent","User-Agent","referrer","z","_backoffDuration","_backoffStart","na","oa","current","last","pa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Z","baseData","project","platform","_getHttpData","serverName","server_name","_sanitizeData","forEach","random","_sendProcessedPayload","qa","sa","ra","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","ta","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","onerror","open","setRequestHeader","send","ua","hash","evaluated","A","$","setUser","setReleaseContext","10","11","9","RavenConstructor","_Raven","noConflict","Client","what","supportsErrorEvent","ErrorEvent","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","sanitizeMask","safeInput","o_O","getLocationHref","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","y","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","charAt","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","string","raw"],"mappings":";CAYA,SAAUA,GAAG,GAAoB,gBAAVC,UAAoC,mBAATC,QAAsBA,OAAOD,QAAQD,QAAS,IAAmB,kBAATG,SAAqBA,OAAOC,IAAKD,UAAUH,OAAO,CAAC,GAAIK,EAAkCA,GAAb,mBAATC,QAAwBA,OAA+B,mBAATC,QAAwBA,OAA6B,mBAAPC,MAAsBA,KAAYC,KAAKJ,EAAEK,MAAQV,MAAO,WAAW,GAAIG,EAAsB,OAAO,SAAUQ,GAAEC,EAAEC,EAAEC,GAAG,QAASC,GAAEC,EAAEC,GAAG,IAAIJ,EAAEG,GAAG,CAAC,IAAIJ,EAAEI,GAAG,CAAC,GAAIE,GAAkB,kBAATC,UAAqBA,OAAQ,KAAIF,GAAGC,EAAE,MAAOA,GAAEF,GAAE,EAAI,IAAGI,EAAE,MAAOA,GAAEJ,GAAE,EAAI,IAAIhB,GAAE,GAAIqB,OAAM,uBAAuBL,EAAE,IAAK,MAAMhB,GAAEsB,KAAK,mBAAmBtB,EAAE,GAAIuB,GAAEV,EAAEG,IAAIf,WAAYW,GAAEI,GAAG,GAAGQ,KAAKD,EAAEtB,QAAQ,SAASU,GAAG,GAAIE,GAAED,EAAEI,GAAG,GAAGL,EAAG,OAAOI,GAAEF,EAAEA,EAAEF,IAAIY,EAAEA,EAAEtB,QAAQU,EAAEC,EAAEC,EAAEC,GAAG,MAAOD,GAAEG,GAAGf,QAAkD,IAAI,GAA1CmB,GAAkB,kBAATD,UAAqBA,QAAgBH,EAAE,EAAEA,EAAEF,EAAEW,OAAOT,IAAID,EAAED,EAAEE,GAAI,OAAOD,KAAKW,GAAG,SAASC,EAAQzB,EAAOD,GAYp0B,QAAS2B,GAAclB,EAAOmB,GAK5B,QAASC,KACPrB,KAAKsB,MACH,UACA,SAASC,GACP,MAAOtB,KAKb,QAASuB,GAAyBC,GAChCA,EAASC,UAAU,qBAAsB,QAAS,YAAaC,IAGjE,QAASA,GAAiBC,EAAGC,GAC3B,MAAO,UAASC,EAAIC,GAClBH,EAAEI,iBAAiBF,GACjBG,OAAQF,MAAOA,KAEjBF,EAAUC,EAAIC,IAtBlBX,EAAUA,GAAWvB,OAAOuB,QAEvBA,IAwBLA,EACG3B,OAAOyC,MACPC,SAAS,QAASd,GAClBe,QAAQ,WAAYZ,IAEvBvB,EAAMoC,gBACJC,EAAgB,SAASC,GACvB,MAAOpB,GAAcqB,EAAeD,OAxC1C,GAAID,GAAkBpB,EAAQ,GAAGoB,gBAG7BG,EAAiB,6DACjBP,EAAa,SAyCjBf,GAAcqB,EAAiB,SAASD,GAEtC,GAAIG,GAAYH,EAAKG,SACrB,IAAIA,EAAW,CACbA,EAAYA,EAAUC,OAAO,EAC7B,IAAIC,GAAUH,EAAeI,KAAKH,EAAUI,MAExCF,KAEFF,EAAUK,KAAOH,EAAQ,GACzBF,EAAUI,MAAQF,EAAQ,GAE1BL,EAAKS,QAAUN,EAAUK,KAAO,KAAOL,EAAUI,MAEjDP,EAAKN,MAAMgB,YAAcL,EAAQ,GAAGM,OAAO,EAAG,MAIlD,MAAOX,IAGTpB,EAAce,WAAaA,EAE3BzC,EAAOD,QAAU2B,EAEjBD,EAAQ,GAAGiC,UAAU1D,EAAOD,WACzB4D,EAAI,EAAEC,EAAI,IAAIC,GAAG,SAASpC,EAAQzB,EAAOD,GAc5C,QAAS+D,GAActD,EAAOuD,EAASC,GACrCD,EAAUA,GAAW3D,OAAO2D,YAC5BC,EAAgBA,KAEhB,IAAIC,GAAYD,EAAcE,SAAW,QAAS,OAAQ,OAAQ,QAC9D,WAAYH,IAASE,EAAUE,KAAK,SAOxC,KALA,GAAIC,GAAW,SAASC,EAAKvB,GAC3BtC,EAAM8D,eAAeD,EAAKvB,IAGxByB,EAAQN,EAAUO,MACfD,GACLE,EAAkBV,EAASQ,EAAOH,GAClCG,EAAQN,EAAUO,MAhBtB,GAAIC,GAAoBhD,EAAQ,GAAGiD,UAoBnC1E,GAAOD,QAAU+D,EAEjBrC,EAAQ,GAAGiC,UAAU1D,EAAOD,WACzB4E,EAAI,EAAEhB,EAAI,IAAIiB,GAAG,SAASnD,EAAQzB,EAAOD,GAO5C,QAAS8E,GAAcrE,GACC,kBAAXP,IAAyBA,EAAOC,MACzCE,OAAOH,OAASO,EAAMsE,MAAMC,MAAM,GAAQ9E,GAC1CG,OAAOa,QAAUT,EAAMsE,MAAMC,MAAM,GAAQtD,IAI/CzB,EAAOD,QAAU8E,EAEjBpD,EAAQ,GAAGiC,UAAU1D,EAAOD,WACzB4D,EAAI,IAAIqB,GAAG,SAASvD,EAAQzB,EAAOD,GACtC,QAASkF,GAAiB1B,GACxBhD,KAAK2E,KAAO,mBACZ3E,KAAKgD,QAAUA,EAEjB0B,EAAiBE,UAAY,GAAIhE,OACjC8D,EAAiBE,UAAUC,YAAcH,EAEzCjF,EAAOD,QAAUkF,OAEXN,GAAG,SAASlD,EAAQzB,EAAOD,GACjC,GAAIsF,GAAQ5D,EAAQ,GAEhBiD,EAAa,SAASX,EAASQ,EAAOH,GACxC,GAAIkB,GAAuBvB,EAAQQ,GAC/BgB,EAAkBxB,CAEtB,IAAMQ,IAASR,GAAf,CAIA,GAAIyB,GAAwB,SAAVjB,EAAmB,UAAYA,CAEjDR,GAAQQ,GAAS,WACf,GAAIkB,MAAUC,MAAMpE,KAAKqE,WAErBtB,EAAMgB,EAAMO,SAASH,EAAM,KAC3B3C,GAAQyB,MAAOiB,EAAaK,OAAQ,UAAWrD,OAAQmD,UAAWF,GAExD,YAAVlB,EACEkB,EAAK,MAAO,IAEdpB,EACE,sBAAwBgB,EAAMO,SAASH,EAAKC,MAAM,GAAI,MAAQ,kBAChE5C,EAAKN,MAAMmD,UAAYF,EAAKC,MAAM,GAClCtB,GAAYA,EAASC,EAAKvB,IAG5BsB,GAAYA,EAASC,EAAKvB,GAIxBwC,GAGFQ,SAASX,UAAUY,MAAMzE,KAAKgE,EAAsBC,EAAiBE,KAK3EzF,GAAOD,SACL2E,WAAYA,KAGXd,EAAI,IAAIoC,GAAG,SAASvE,EAAQzB,EAAOD,IACtC,SAAWM,GA0CX,QAAS4F,KACP,OAAQ,GAAIC,MAWd,QAASC,GAAqBC,EAAUhC,GACtC,MAAOiC,GAAWjC,GACd,SAAStB,GACP,MAAOsB,GAAStB,EAAMsD,IAExBhC,EAMN,QAAS5D,KACPD,KAAK+F,IAA8B,gBAATC,QAAqBA,KAAKC,WAEpDjG,KAAKkG,GAAgBC,EAAYC,GACjCpG,KAAKqG,GAAiBF,EAAYG,GAClCtG,KAAKuG,EAAyB,KAC9BvG,KAAKwG,EAAY,KACjBxG,KAAKyG,EAAe,KACpBzG,KAAK0G,EAAgB,KACrB1G,KAAK2G,EAAa,KAClB3G,KAAK4G,EAAiB,KACtB5G,KAAK6G,KACL7G,KAAK8G,GAEHC,QAASC,EAAQC,gBAAkBD,EAAQC,eAAeC,GAC1D5B,OAAQ,aACR6B,gBACAC,cACAC,iBACAC,gBACAC,QAAS,KACTC,qBAAqB,EACrBC,4BAA4B,EAC5BC,iBAAkB,EAElBC,aAAc,IACdC,gBAAiB,GACjBC,iBAAiB,EACjBC,YAAY,EACZC,WAAY,EACZC,iBAEFhI,KAAKiI,GACHC,OAAQ,OACRC,WAAW,EAKXC,eAAgBC,IAA2B,SAAW,IAExDrI,KAAKsI,EAAiB,EACtBtI,KAAKuI,GAAoB,EACzBvI,KAAKwI,EAAgC5H,MAAMgH,gBAG3C5H,KAAKyI,EAAmBzB,EAAQxD,YAChCxD,KAAK0I,KACL1I,KAAK2I,KACL3I,KAAK4I,EAAalD,IAClB1F,KAAK6I,KACL7I,KAAK8I,KACL9I,KAAK+I,EAAqB,KAE1B/I,KAAKgJ,EAAYhC,EAAQiC,SACzBjJ,KAAKkJ,EAAYlJ,KAAKgJ,GAAahJ,KAAKgJ,EAAUG,KAClDnJ,KAAKoJ,GAGL,KAAK,GAAIlB,KAAUlI,MAAKyI,EACtBzI,KAAK0I,EAAwBR,GAAUlI,KAAKyI,EAAiBP,GA1HjE,GAAImB,GAAWnI,EAAQ,GACnB+E,EAAY/E,EAAQ,IACpBoI,EAAMpI,EAAQ,IACdwD,EAAmBxD,EAAQ,GAE3B4D,EAAQ5D,EAAQ,GAChBqI,EAAUzE,EAAMyE,QAChBC,EAAW1E,EAAM0E,SACjBC,EAAgB3E,EAAM2E,cACtBC,EAAe5E,EAAM4E,aACrBvD,EAAcrB,EAAMqB,YACpBL,EAAahB,EAAMgB,WACnB6D,EAAW7E,EAAM6E,SACjBC,EAAU9E,EAAM8E,QAChBC,EAAgB/E,EAAM+E,cACtBC,EAAOhF,EAAMgF,KACbC,EAAcjF,EAAMiF,YACpBC,EAAWlF,EAAMkF,SACjBC,EAAenF,EAAMmF,aACrBC,EAASpF,EAAMoF,OACfC,EAAarF,EAAMqF,WACnBC,EAAYtF,EAAMsF,UAClBC,EAAQvF,EAAMuF,MACdC,EAAmBxF,EAAMwF,iBACzBC,EAAkBzF,EAAMyF,gBACxBC,EAAmB1F,EAAM0F,iBACzBC,EAAW3F,EAAM2F,SACjBC,EAAO5F,EAAM4F,KACbC,EAAgB7F,EAAM6F,cACtBtC,EAAyBvD,EAAMuD,uBAC/BuC,EAA0B9F,EAAM8F,wBAChCC,EAAqB/F,EAAM+F,mBAC3BC,EAAWhG,EAAMgG,SAEjB5G,EAAoBhD,EAAQ,GAAGiD,WAE/B4G,EAAU,2CAA2CC,MAAM,KAC7DC,EAAa,gEAOXjE,EACgB,mBAAXnH,QACHA,OACkB,mBAAXC,GAAyBA,EAAyB,mBAATC,MAAuBA,QACzEqG,EAAYY,EAAQkE,SACpB5E,EAAaU,EAAQmE,SAmFzBlL,GAAM2E,WAKJwG,QAAS,SAETC,OAAO,EAEPhC,SAAUA,EASVjH,OAAQ,SAASkJ,EAAKC,GACpB,GAAIxL,GAAOC,IAEX,IAAID,EAAK2G,EAEP,MADA1G,MAAKwL,EAAU,QAAS,4CACjBzL,CAET,KAAKuL,EAAK,MAAOvL,EAEjB,IAAI0L,GAAgB1L,EAAK+G,CAGrByE,IACFzB,EAAKyB,EAAS,SAASG,EAAK5I,GAEd,SAAR4I,GAA0B,UAARA,GAA2B,SAARA,EACvC3L,EAAK8G,EAAe6E,GAAO5I,EAE3B2I,EAAcC,GAAO5I,IAK3B/C,EAAK4L,OAAOL,GAIZG,EAActE,aAAavD,KAAK,qBAChC6H,EAActE,aAAavD,KAAK,iDAGhC6H,EAActE,aAAegD,EAAWsB,EAActE,cACtDsE,EAAcrE,aAAaqE,EAAcrE,WAAWpG,QAChDmJ,EAAWsB,EAAcrE,YAE7BqE,EAAcpE,gBAAgBoE,EAAcpE,cAAcrG,QACtDmJ,EAAWsB,EAAcpE,eAE7BoE,EAAcnE,aAAe6C,EAAWsB,EAAcnE,cACtDmE,EAAcG,eAAiBC,KAAKC,IAClC,EACAD,KAAKE,IAAIN,EAAcG,gBAAkB,IAAK,KAGhD,IAAII,IACFC,KAAK,EACLzI,SAAS,EACT0I,KAAK,EACLjD,UAAU,EACVkD,QAAQ,GAGNtE,EAAkB4D,EAAc5D,eACM,wBAAnCuE,SAASrL,KAAK8G,GACnBA,EAAkBkC,EAAYiC,EAAwBnE,GAC7CA,KAAoB,IAC7BA,EAAkBmE,GAEpBP,EAAc5D,gBAAkBA,CAEhC,IAAIwE,IACFC,UAAU,GAGRxE,EAAa2D,EAAc3D,UAW/B,OAVqC,uBAA9BsE,SAASrL,KAAK+G,GACnBA,EAAaiC,EAAYsC,EAAoBvE,GACpCA,KAAe,IACxBA,EAAauE,GAEfZ,EAAc3D,WAAaA,EAE3BuB,EAAS7B,sBAAwBiE,EAAcjE,oBAGxCzH,GAWTwM,QAAS,WACP,GAAIxM,GAAOC,IAyBX,OAxBID,GAAKyM,YAAczM,EAAKwI,IAC1Bc,EAASoD,OAAOC,UAAU,WACxB3M,EAAK4M,EAAwBnH,MAAMzF,EAAMqF,aAGvCrF,EAAK+G,EAAeW,4BACtB1H,EAAK6M,IAGP7M,EAAK8M,IAED9M,EAAK+G,EAAegB,YAAc/H,EAAK+G,EAAegB,WAAWwE,UACnEvM,EAAK+M,IAGH/M,EAAK+G,EAAee,iBAAiB9H,EAAKgN,IAG9ChN,EAAKiN,IAELjN,EAAKwI,GAAoB,GAG3B3H,MAAMgH,gBAAkB7H,EAAK+G,EAAec,gBACrC5H,MAQT2L,OAAQ,SAASL,GACf,GAAIvL,GAAOC,KACTiN,EAAMlN,EAAKmN,EAAU5B,GACrB6B,EAAYF,EAAIG,KAAKC,YAAY,KACjCD,EAAOH,EAAIG,KAAKlK,OAAO,EAAGiK,EAE5BpN,GAAKuN,EAAOhC,EACZvL,EAAK4G,EAAasG,EAAIM,KACtBxN,EAAKyN,EAAgBP,EAAIQ,MAAQR,EAAIQ,KAAKvK,OAAO,GACjDnD,EAAK6G,EAAiBqG,EAAIG,KAAKlK,OAAOiK,EAAY,GAElDpN,EAAK2G,EAAgB3G,EAAK2N,EAAiBT,GAE3ClN,EAAK4N,EACH5N,EAAK2G,EAAgB,IAAM0G,EAAO,OAASrN,EAAK6G,EAAiB,UAInE5G,KAAKoJ,KAWPwE,QAAS,SAASrC,EAASsC,EAAM3I,GAO/B,MANIY,GAAWyF,KACbrG,EAAO2I,MACPA,EAAOtC,EACPA,EAAUuC,QAGL9N,KAAKuE,KAAKgH,EAASsC,GAAMrI,MAAMxF,KAAMkF,IAW9CX,KAAM,SAASgH,EAASsC,EAAME,GAqC5B,QAASC,KACP,GAAI9I,MACFvE,EAAIyE,UAAUpE,OACdwD,GAAQ+G,GAAYA,GAAWA,EAAQ/G,QAAS,CAQlD,KANIuJ,GAAWjI,EAAWiI,IACxBA,EAAQvI,MAAMxF,KAAMoF,WAKfzE,KAAKuE,EAAKvE,GAAK6D,EAAOzE,EAAKwE,KAAKgH,EAASnG,UAAUzE,IAAMyE,UAAUzE,EAE1E,KAKE,MAAOkN,GAAKrI,MAAMxF,KAAMkF,GACxB,MAAOhF,GAGP,KAFAH,GAAKkO,IACLlO,EAAKiC,iBAAiB9B,EAAGqL,GACnBrL,GA1DV,GAAIH,GAAOC,IAGX,IAAImG,EAAY0H,KAAU/H,EAAWyF,GACnC,MAAOA,EAWT,IAPIzF,EAAWyF,KACbsC,EAAOtC,EACPA,EAAUuC,SAKPhI,EAAW+H,GACd,MAAOA,EAIT,KACE,GAAIA,EAAKK,EACP,MAAOL,EAIT,IAAIA,EAAKM,EACP,MAAON,GAAKM,EAEd,MAAOjO,GAIP,MAAO2N,GA8BT,IAAK,GAAIO,KAAYP,GACf3D,EAAO2D,EAAMO,KACfJ,EAAQI,GAAYP,EAAKO,GAW7B,OARAJ,GAAQpJ,UAAYiJ,EAAKjJ,UAEzBiJ,EAAKM,EAAoBH,EAGzBA,EAAQE,GAAY,EACpBF,EAAQK,EAAWR,EAEZG,GAQTM,UAAW,WAWT,MAVAjF,GAASoD,OAAO6B,YAEhBtO,KAAKuO,IACLvO,KAAKwO,IACLxO,KAAKyO,IACLzO,KAAK0O,IAEL9N,MAAMgH,gBAAkB5H,KAAKwI,EAC7BxI,KAAKuI,GAAoB,EAElBvI,MAWT2O,EAA0B,SAASC,GACjC5O,KAAKwL,EAAU,QAAS,4CAA6CoD,GACrE5O,KAAKgC,iBAAiB4M,EAAMC,QAC1B5M,OACE6M,2BAA2B,MAUjCC,EAAgC,WAI9B,MAHA/O,MAAKgP,EAA2BhP,KAAKgP,EAAyBC,KAAKjP,MACnEgH,EAAQkI,kBACNlI,EAAQkI,iBAAiB,qBAAsBlP,KAAKgP,GAC/ChP,MAQTmP,EAAgC,WAG9B,MAFAnI,GAAQoI,qBACNpI,EAAQoI,oBAAoB,qBAAsBpP,KAAKgP,GAClDhP,MAUTgC,iBAAkB,SAASF,EAAIyJ,GAG7B,GAFAA,EAAUxB,GAAasF,eAAgB,GAAI9D,EAAUA,MAEjD7B,EAAa5H,IAAOA,EAAGwN,MAEzBxN,EAAKA,EAAGwN,UACH,IAAI/F,EAAQzH,GAEjBA,EAAKA,MACA,CAAA,IAAI2H,EAAc3H,GAYvB,MAAO9B,MAAK+D,eACVjC,EACAiI,EAAYwB,GACVgE,YAAY,EACZF,eAAgB9D,EAAQ8D,eAAiB,IAZ7C9D,GAAUvL,KAAKwP,EAA2CjE,EAASzJ,GACnEA,EAAK,GAAIlB,OAAM2K,EAAQvI,SAiBzBhD,KAAKuG,EAAyBzE,CAO9B,KACE,GAAI2N,GAAQpG,EAASqG,kBAAkB5N,EACvC9B,MAAK2P,EAAiBF,EAAOlE,GAC7B,MAAOqE,GACP,GAAI9N,IAAO8N,EACT,KAAMA,GAIV,MAAO5P,OAGT6P,EAA4C,SAASC,EAAgBhO,GACnE,GAAIiO,GAASC,OAAOC,KAAKnO,GAAIoO,OACzB3E,EAAUxB,EAAY+F,GACxB9M,QACE,2CAA6C4H,EAAwBmF,GACvEI,aAAc7G,EAAIyG,IAClB9N,MAAO6N,EAAe7N,WAIxB,OAFAsJ,GAAQtJ,MAAMmO,EAAiBvF,EAAmB/I,GAE3CyJ,GAUTxH,eAAgB,SAASD,EAAKyH,GAI5B,IACIvL,KAAK8G,EAAeK,aAAakJ,OACnCrQ,KAAK8G,EAAeK,aAAakJ,KAAKvM,GAFxC,CAOAyH,EAAUA,MACVzH,GAAY,EAEZ,IAOIhC,GAPAS,EAAOwH,GAEP/G,QAASc,GAEXyH,EAQF,KACE,KAAM,IAAI3K,OAAMkD,GAChB,MAAO8L,GACP9N,EAAK8N,EAIP9N,EAAG6C,KAAO,IACV,IAAI8K,GAAQpG,EAASqG,kBAAkB5N,GAGnCwO,EAAc1G,EAAQ6F,EAAMA,QAAUA,EAAMA,MAAM,EAKlDa,IAAoC,2BAArBA,EAAYzC,OAC7ByC,EAAcb,EAAMA,MAAM,GAG5B,IAAIc,GAAWD,GAAeA,EAAYE,KAAQ,EAElD,MACIxQ,KAAK8G,EAAeM,WAAWiJ,OACjCrQ,KAAK8G,EAAeM,WAAWiJ,KAAKE,OAMlCvQ,KAAK8G,EAAeO,cAAcgJ,MACnCrQ,KAAK8G,EAAeO,cAAcgJ,KAAKE,IAF1C,CAOA,GAAIvQ,KAAK8G,EAAeyI,YAAehE,GAAWA,EAAQgE,WAAa,CAErEhN,EAAK4N,YAAkC,MAApB5N,EAAK4N,YAAsBrM,EAAMvB,EAAK4N,YAEzD5E,EAAUxB,GAENsF,eAAgB,GAElB9D,GAMFA,EAAQ8D,gBAAkB,CAE1B,IAAIoB,GAASzQ,KAAK0Q,EAAejB,EAAOlE,EACxChJ,GAAKgN,YAEHkB,OAAQA,EAAOE,WAcnB,MATIpO,GAAK4N,cACP5N,EAAK4N,YAAcvG,EAAQrH,EAAK4N,aAC5B5N,EAAK4N,aACJ5N,EAAK4N,cAIZnQ,KAAK4Q,EAAMrO,GAEJvC,QAGT6Q,kBAAmB,SAASC,GAC1B,GAAIC,GAAQhH,GAERiH,UAAWtL,IAAQ,KAErBoL,EAGF,IAAIhL,EAAW9F,KAAK8G,EAAemK,oBAAqB,CACtD,GAAIC,GAASlR,KAAK8G,EAAemK,mBAAmBF,EAEpD,IAAIvH,EAAS0H,KAAYrH,EAAcqH,GACrCH,EAAQG,MACH,IAAIA,KAAW,EACpB,MAAOlR,MAQX,MAJAA,MAAK8I,EAAalF,KAAKmN,GACnB/Q,KAAK8I,EAAa9H,OAAShB,KAAK8G,EAAe8E,gBACjD5L,KAAK8I,EAAaqI,QAEbnR,MAGTmD,UAAW,SAASiO,GAClB,GAAIC,MAAgBlM,MAAMpE,KAAKqE,UAAW,EAO1C,OALApF,MAAK2I,EAAS/E,MAAMwN,EAAQC,IACxBrR,KAAKuI,GACPvI,KAAKgN,IAGAhN,MASTsR,eAAgB,SAAS/D,GAIvB,MAFAvN,MAAK6G,EAAe0G,KAAOA,EAEpBvN,MASTuR,gBAAiB,SAAStP,GAGxB,MAFAjC,MAAKwR,EAAc,QAASvP,GAErBjC,MASTyR,eAAgB,SAASC,GAGvB,MAFA1R,MAAKwR,EAAc,OAAQE,GAEpB1R,MAQT2R,aAAc,WAGZ,MAFA3R,MAAK6G,KAEE7G,MAQT4R,WAAY,WAEV,MAAO5L,MAAK6L,MAAM5L,EAAUjG,KAAK6G,KASnCiL,eAAgB,SAASC,GAGvB,MAFA/R,MAAK8G,EAAeiL,YAAcA,EAE3B/R,MASTgS,WAAY,SAASjL,GAGnB,MAFA/G,MAAK8G,EAAeC,QAAUA,EAEvB/G,MAUTqC,gBAAiB,SAASwB,GACxB,GAAIgC,GAAW7F,KAAK8G,EAAemL,YAEnC,OADAjS,MAAK8G,EAAemL,aAAerM,EAAqBC,EAAUhC,GAC3D7D,MAUTkS,sBAAuB,SAASrO,GAC9B,GAAIgC,GAAW7F,KAAK8G,EAAemK,kBAEnC,OADAjR,MAAK8G,EAAemK,mBAAqBrL,EAAqBC,EAAUhC,GACjE7D,MAUTmS,sBAAuB,SAAStO,GAC9B,GAAIgC,GAAW7F,KAAK8G,EAAesL,kBAEnC,OADApS,MAAK8G,EAAesL,mBAAqBxM,EAAqBC,EAAUhC,GACjE7D,MAYTqS,aAAc,SAASC,GAGrB,MAFAtS,MAAK8G,EAAewL,UAAYA,EAEzBtS,MAQTuS,cAAe,WACb,MAAOvS,MAAKuG,GAQdiM,YAAa,WACX,MAAOxS,MAAKyG,GAQd+F,QAAS,WACP,QAAKxM,KAAK+F,MACL/F,KAAK0G,IACH1G,KAAKyS,0BACRzS,KAAKyS,yBAA0B,EAC/BzS,KAAKwL,EAAU,QAAS,2CAEnB,KAKXkH,UAAW,WAIT,GAAIC,GAAc3L,EAAQ2L,WACtBA,IACF3S,KAAKoC,OAAOuQ,EAAYrH,IAAKqH,EAAYvQ,QAAQmK,WAIrDqG,iBAAkB,SAASrH,GACzB,GACGnF,EADH,CAKAmF,EAAUA,KAEV,IAAIiH,GAAcjH,EAAQsH,SAAW7S,KAAKwS,aAC1C,KAAKA,EACH,KAAM,IAAI9N,GAAiB,kBAG7B,IAAI4G,GAAMC,EAAQD,KAAOtL,KAAKsN,CAC9B,KAAKhC,EACH,KAAM,IAAI5G,GAAiB,cAG7B,IAAIoO,GAASC,mBACTC,EAAK,EACTA,IAAM,YAAcF,EAAON,GAC3BQ,GAAM,QAAUF,EAAOxH,EAEvB,IAAIiC,GAAOhC,EAAQgC,MAAQvN,KAAK6G,EAAe0G,IAC3CA,KACEA,EAAK5I,OAAMqO,GAAM,SAAWF,EAAOvF,EAAK5I,OACxC4I,EAAK0F,QAAOD,GAAM,UAAYF,EAAOvF,EAAK0F,QAGhD,IAAIC,GAAelT,KAAK0N,EAAiB1N,KAAKkN,EAAU5B,IAEpD6H,EAAS/M,EAAUgN,cAAc,SACrCD,GAAOE,OAAQ,EACfF,EAAOG,IAAMJ,EAAe,yBAA2BF,GACtD5M,EAAUmN,MAAQnN,EAAUoN,MAAMC,YAAYN,KAIjDO,EAAoB,WAClB,GAAI3T,GAAOC,IACXA,MAAKsI,GAAkB,EACvBqL,WAAW,WAET5T,EAAKuI,GAAkB,KAI3BsL,EAAe,SAASC,EAAWtI,GAEjC,GAAIuI,GAAKpI,CAET,IAAK1L,KAAKkG,EAAV,CAEAqF,EAAUA,MAEVsI,EAAY,QAAUA,EAAU3Q,OAAO,EAAG,GAAG6Q,cAAgBF,EAAU3Q,OAAO,GAE1EkD,EAAU4N,aACZF,EAAM1N,EAAU4N,YAAY,cAC5BF,EAAIG,UAAUJ,GAAW,GAAM,KAE/BC,EAAM1N,EAAU8N,oBAChBJ,EAAID,UAAYA,EAGlB,KAAKnI,IAAOH,GACNrB,EAAOqB,EAASG,KAClBoI,EAAIpI,GAAOH,EAAQG,GAGvB,IAAItF,EAAU4N,YAEZ5N,EAAU+N,cAAcL,OAIxB,KACE1N,EAAUgO,UAAU,KAAON,EAAID,UAAUQ,cAAeP,GACxD,MAAO5T,OAYboU,GAAyB,SAASC,GAChC,GAAIxU,GAAOC,IACX,OAAO,UAAS8T,GASd,GALA/T,EAAKyU,GAAmB,KAKpBzU,EAAKgJ,IAAuB+K,EAAhC,CAEA/T,EAAKgJ,EAAqB+K,CAM1B,IAAIW,EACJ,KACEA,EAASnK,EAAiBwJ,EAAIW,QAC9B,MAAOvU,GACPuU,EAAS,YAGX1U,EAAK8Q,mBACH6D,SAAU,MAAQH,EAClBvR,QAASyR,OAUfE,GAAuB,WACrB,GAAI5U,GAAOC,KACT4U,EAAmB,GAKrB,OAAO,UAASd,GACd,GAAIW,EACJ,KACEA,EAASX,EAAIW,OACb,MAAOvU,GAGP,OAEF,GAAI2U,GAAUJ,GAAUA,EAAOI,OAK/B,IACGA,IACY,UAAZA,GAAmC,aAAZA,GAA2BJ,EAAOK,mBAF5D,CAQA,GAAIC,GAAUhV,EAAKyU,EACdO,IACHhV,EAAKiV,GAAwB,SAASlB,GAExCmB,aAAaF,GACbhV,EAAKyU,GAAmBb,WAAW,WACjC5T,EAAKyU,GAAmB,MACvBI,MAUPM,GAAmB,SAASC,EAAMC,GAChC,GAAIC,GAAY5K,EAASzK,KAAKgJ,EAAUG,MACpCmM,EAAW7K,EAAS2K,GACpBG,EAAa9K,EAAS0K,EAK1BnV,MAAKkJ,EAAYkM,EAIbC,EAAUG,WAAaF,EAASE,UAAYH,EAAUI,OAASH,EAASG,OAC1EL,EAAKE,EAASI,UACZL,EAAUG,WAAaD,EAAWC,UAAYH,EAAUI,OAASF,EAAWE,OAC9EN,EAAOI,EAAWG,UAEpB1V,KAAK6Q,mBACH6D,SAAU,aACVnS,MACE6S,GAAIA,EACJD,KAAMA,MAKZQ,EAAwB,WACtB,GAAI5V,GAAOC,IACXD,GAAK6V,GAA4BrQ,SAASX,UAAUwH,SAEpD7G,SAASX,UAAUwH,SAAW,WAC5B,MAAoB,kBAATpM,OAAuBA,KAAKkO,EAC9BnO,EAAK6V,GAA0BpQ,MAAMxF,KAAKqO,EAAUjJ,WAEtDrF,EAAK6V,GAA0BpQ,MAAMxF,KAAMoF,aAItDxD,EAA0B,WACpB5B,KAAK4V,KAEPrQ,SAASX,UAAUwH,SAAWpM,KAAK4V,KAQvCC,EAAqB,WAKnB,QAASC,GAAWC,GAClB,MAAO,UAASC,EAAI7V,GAKlB,IAAK,GADD+E,GAAO,GAAI+Q,OAAM7Q,UAAUpE,QACtBL,EAAI,EAAGA,EAAIuE,EAAKlE,SAAUL,EACjCuE,EAAKvE,GAAKyE,UAAUzE,EAEtB,IAAIuV,GAAmBhR,EAAK,EAQ5B,OAPIY,GAAWoQ,KACbhR,EAAK,GAAKnF,EAAKwE,KAAK2R,IAMlBH,EAAKvQ,MACAuQ,EAAKvQ,MAAMxF,KAAMkF,GAEjB6Q,EAAK7Q,EAAK,GAAIA,EAAK,KAOhC,QAASiR,GAAgBrW,GACvB,GAAIsW,GAAQpP,EAAQlH,IAAWkH,EAAQlH,GAAQ8E,SAC3CwR,IAASA,EAAMC,gBAAkBD,EAAMC,eAAe,sBACxD3L,EACE0L,EACA,mBACA,SAASL,GACP,MAAO,UAASxB,EAASyB,EAAIM,EAASC,GAEpC,IACMP,GAAMA,EAAGQ,cACXR,EAAGQ,YAAczW,EAAKwE,KAAKyR,EAAGQ,cAEhC,MAAOC,IAMT,GAAIC,GAAQC,EAAcC,CA6B1B,OA1BE/O,IACAA,EAAgBqE,MACJ,gBAAXpM,GAAuC,SAAXA,KAI7B6W,EAAe5W,EAAKiV,GAAwB,SAC5C4B,EAAkB7W,EAAK8W,KACvBH,EAAS,SAAS5C,GAIhB,GAAKA,EAAL,CAEA,GAAID,EACJ,KACEA,EAAYC,EAAI/Q,KAChB,MAAO7C,GAGP,OAEF,MAAkB,UAAd2T,EAA8B8C,EAAa7C,GACxB,aAAdD,EAAiC+C,EAAgB9C,GAArD,UAGFiC,EAAKhV,KACVf,KACAuU,EACAxU,EAAKwE,KAAKyR,EAAIlI,OAAW4I,GACzBJ,EACAC,KAINO,GAEFpM,EACE0L,EACA,sBACA,SAASL,GACP,MAAO,UAASjC,EAAKkC,EAAIM,EAASC,GAChC,IACEP,EAAKA,IAAOA,EAAG7H,EAAoB6H,EAAG7H,EAAoB6H,GAC1D,MAAO9V,IAGT,MAAO6V,GAAKhV,KAAKf,KAAM8T,EAAKkC,EAAIM,EAASC,KAG7CO,IAvGN,GAAI/W,GAAOC,KAEP8W,EAAkB/W,EAAK8I,EA2BvBhB,EAAkB7H,KAAK8G,EAAee,eA+E1C6C,GAAK1D,EAAS,aAAc8O,EAAYgB,GACxCpM,EAAK1D,EAAS,cAAe8O,EAAYgB,GACrC9P,EAAQ+P,uBACVrM,EACE1D,EACA,wBACA,SAAS+O,GACP,MAAO,UAASiB,GACd,MAAOjB,GAAKhW,EAAKwE,KAAKyS,MAG1BF,EAqCJ,KAAK,GA/BDG,IACF,cACA,SACA,OACA,mBACA,iBACA,oBACA,kBACA,cACA,aACA,qBACA,cACA,aACA,iBACA,eACA,kBACA,cACA,cACA,eACA,qBACA,SACA,YACA,eACA,gBACA,YACA,kBACA,SACA,iBACA,4BACA,wBAEOtW,EAAI,EAAGA,EAAIsW,EAAajW,OAAQL,IACvCwV,EAAgBc,EAAatW,KAajCuW,EAAwB,WAMtB,QAASC,GAASC,EAAMnL,GAClBmL,IAAQnL,IAAOnG,EAAWmG,EAAImL,KAChC1M,EAAKuB,EAAKmL,EAAM,SAASrB,GACvB,MAAOhW,GAAKwE,KAAKwR,KARvB,GAAIhW,GAAOC,KACP6H,EAAkB7H,KAAK8G,EAAee,gBAEtCiP,EAAkB/W,EAAK8I,CAU3B,IAAIhB,EAAgBoE,KAAO,kBAAoBjF,GAAS,CACtD,GAAIqQ,GAAWrQ,EAAQsQ,gBAAkBtQ,EAAQsQ,eAAe1S,SAChE8F,GACE2M,EACA,OACA,SAASE,GACP,MAAO,UAASrP,EAAQsI,GAYtB,MARI7G,GAAS6G,IAAQA,EAAIgH,QAAQzX,EAAK4G,UACpC3G,KAAKyX,IACHvP,OAAQA,EACRsI,IAAKA,EACLkH,YAAa,OAIVH,EAAS/R,MAAMxF,KAAMoF,aAGhC0R,GAGFpM,EACE2M,EACA,OACA,SAASM,GACP,MAAO,YAIL,QAASC,KACP,GAAI3L,EAAIwL,IAAkC,IAAnBxL,EAAI4L,WAAkB,CAC3C,IAGE5L,EAAIwL,GAAYC,YAAczL,EAAI6L,OAClC,MAAO5X,IAITH,EAAK8Q,mBACH9N,KAAM,OACN2R,SAAU,MACVnS,KAAM0J,EAAIwL,MAMhB,IAAK,GArBDxL,GAAMjM,KAoBN+X,GAAS,SAAU,UAAW,cACzBC,EAAI,EAAGA,EAAID,EAAM/W,OAAQgX,IAChCb,EAASY,EAAMC,GAAI/L,EAiBrB,OAdI,sBAAwBA,IAAOnG,EAAWmG,EAAIgM,oBAChDvN,EACEuB,EACA,qBACA,SAAS8J,GACP,MAAOhW,GAAKwE,KAAKwR,EAAMjI,OAAW8J,KAMtC3L,EAAIgM,mBAAqBL,EAGpBD,EAASnS,MAAMxF,KAAMoF,aAGhC0R,GAIAjP,EAAgBoE,KAAOtB,KACzBD,EACE1D,EACA,QACA,SAASkR,GACP,MAAO,YAKL,IAAK,GADDhT,GAAO,GAAI+Q,OAAM7Q,UAAUpE,QACtBL,EAAI,EAAGA,EAAIuE,EAAKlE,SAAUL,EACjCuE,EAAKvE,GAAKyE,UAAUzE,EAGtB,IAEI6P,GAFA2H,EAAajT,EAAK,GAClBgD,EAAS,KAeb,IAZ0B,gBAAfiQ,GACT3H,EAAM2H,EACG,WAAanR,IAAWmR,YAAsBnR,GAAQoR,SAC/D5H,EAAM2H,EAAW3H,IACb2H,EAAWjQ,SACbA,EAASiQ,EAAWjQ,SAGtBsI,EAAM,GAAK2H,EAIT3H,EAAIgH,QAAQzX,EAAK4G,QACnB,MAAOuR,GAAU1S,MAAMxF,KAAMkF,EAG3BA,GAAK,IAAMA,EAAK,GAAGgD,SACrBA,EAAShD,EAAK,GAAGgD,OAGnB,IAAImQ,IACFnQ,OAAQA,EACRsI,IAAKA,EACLkH,YAAa,KAGf,OAAOQ,GACJ1S,MAAMxF,KAAMkF,GACZoT,KAAK,SAASC,GASb,MARAF,GAAUX,YAAca,EAAST,OAEjC/X,EAAK8Q,mBACH9N,KAAM,OACN2R,SAAU,QACVnS,KAAM8V,IAGDE,IAER,SAAS,SAAS9B,GASjB,KAPA1W,GAAK8Q,mBACH9N,KAAM,OACN2R,SAAU,QACVnS,KAAM8V,EACNrU,MAAO,UAGHyS,MAIdK,GAMAjP,EAAgBqE,KAAOlM,KAAKkG,IAC1BE,EAAU8I,kBACZ9I,EAAU8I,iBAAiB,QAASnP,EAAKiV,GAAwB,UAAU,GAC3E5O,EAAU8I,iBAAiB,WAAYnP,EAAK8W,MAAyB,IAC5DzQ,EAAUoS,cAEnBpS,EAAUoS,YAAY,UAAWzY,EAAKiV,GAAwB,UAC9D5O,EAAUoS,YAAY,aAAczY,EAAK8W,OAQ7C,IAAI4B,GAASzR,EAAQyR,OACjBC,EAAsBD,GAAUA,EAAOE,KAAOF,EAAOE,IAAIC,QACzDC,GACDH,GACD1R,EAAQ8R,SACRA,QAAQC,WACRD,QAAQE,YACV,IAAInR,EAAgBoB,UAAY4P,EAAwB,CAEtD,GAAII,GAAgBjS,EAAQkS,UAC5BlS,GAAQkS,WAAa,WACnB,GAAIC,GAAcpZ,EAAKiJ,EAAUG,IAGjC,IAFApJ,EAAKqZ,GAAkBrZ,EAAKmJ,EAAWiQ,GAEnCF,EACF,MAAOA,GAAczT,MAAMxF,KAAMoF,WAIrC,IAAIiU,GAA6B,SAASC,GAGxC,MAAO,YACL,GAAI9I,GAAMpL,UAAUpE,OAAS,EAAIoE,UAAU,GAAK0I,MAQhD,OALI0C,IAEFzQ,EAAKqZ,GAAkBrZ,EAAKmJ,EAAWsH,EAAM,IAGxC8I,EAAiB9T,MAAMxF,KAAMoF,YAIxCsF,GAAKoO,QAAS,YAAaO,EAA4BvC,GACvDpM,EAAKoO,QAAS,eAAgBO,EAA4BvC,GAG5D,GAAIjP,EAAgBrE,SAAW,WAAawD,IAAWxD,QAAQ+V,IAAK,CAElE,GAAIC,GAAwB,SAAS1V,EAAKvB,GACxCxC,EAAK8Q,mBACH7N,QAASc,EACTE,MAAOzB,EAAKyB,MACZ0Q,SAAU,YAId5K,IAAM,QAAS,OAAQ,OAAQ,QAAS,OAAQ,SAAS8J,EAAG5P,GAC1DE,EAAkBV,QAASQ,EAAOwV,OAKxCC,EAAkB,WAGhB,IADA,GAAIC,GACG1Z,KAAK6I,EAAiB7H,QAAQ,CACnC0Y,EAAU1Z,KAAK6I,EAAiBsI,OAEhC,IAAIL,GAAM4I,EAAQ,GAChB/U,EAAO+U,EAAQ,GACf3D,EAAO2D,EAAQ,EAEjB5I,GAAInM,GAAQoR,IAIhB4D,EAAiB,WAEf,IAAK,GAAIzR,KAAUlI,MAAK0I,EACtB1I,KAAKyI,EAAiBP,GAAUlI,KAAK0I,EAAwBR,IAIjE0R,EAAe,WACb,GAAI7Z,GAAOC,IAGX8J,GAAK9J,KAAK2I,EAAU,SAASiL,EAAGxC,GAC9B,GAAIyI,GAAYzI,EAAO,GACnBlM,EAAOkM,EAAO,EAClByI,GAAUrU,MAAMzF,GAAOA,GAAM+Z,OAAO5U,OAIxC6U,EAAW,SAASC,GAClB,GAAIC,GAAIhP,EAAWpI,KAAKmX,GACtB1O,KACA3K,EAAI,CAEN,KACE,KAAOA,KAAK2K,EAAIP,EAAQpK,IAAMsZ,EAAEtZ,IAAM,GACtC,MAAOT,GACP,KAAM,IAAIwE,GAAiB,gBAAkBsV,GAG/C,GAAI1O,EAAImC,OAASzN,KAAK8G,EAAeoT,eACnC,KAAM,IAAIxV,GACR,iFAIJ,OAAO4G,IAGT6O,EAAkB,SAASlN,GAEzB,GAAIiG,GAAe,KAAOjG,EAAIwI,MAAQxI,EAAImN,KAAO,IAAMnN,EAAImN,KAAO,GAKlE,OAHInN,GAAIuI,WACNtC,EAAejG,EAAIuI,SAAW,IAAMtC,GAE/BA,GAGTmH,EAAyB,WAElBra,KAAKsI,GACRtI,KAAK2P,EAAiBnK,MAAMxF,KAAMoF,YAItCkV,EAAkB,SAASC,EAAWhP,GACpC,GAAIkF,GAASzQ,KAAK0Q,EAAe6J,EAAWhP,EAE5CvL,MAAKwa,EAAc,UACjBD,UAAWA,EACXhP,QAASA,IAGXvL,KAAKya,GACHF,EAAU5V,KACV4V,EAAUvX,QACVuX,EAAU/J,IACV+J,EAAUG,OACVjK,EACAlF,IAIJoP,EAAgB,SAASJ,EAAWhP,GAClC,GAAIxL,GAAOC,KACPyQ,IACJ,IAAI8J,EAAU9K,OAAS8K,EAAU9K,MAAMzO,SACrC8I,EAAKyQ,EAAU9K,MAAO,SAAS9O,EAAG8O,GAChC,GAAImL,GAAQ7a,EAAK8a,GAAgBpL,EAAO8K,EAAU/J,IAC9CoK,IACFnK,EAAO7M,KAAKgX,KAKZrP,GAAWA,EAAQ8D,gBACrB,IAAK,GAAI2I,GAAI,EAAGA,EAAIzM,EAAQ8D,gBAAkB2I,EAAIvH,EAAOzP,OAAQgX,IAC/DvH,EAAOuH,GAAG8C,QAAS,CAKzB,OADArK,GAASA,EAAOtL,MAAM,EAAGnF,KAAK8G,EAAec,kBAI/CmT,GAAiB,SAASH,EAAOI,GAE/B,GAAIC,IACFC,SAAUN,EAAMpK,IAChBkK,OAAQE,EAAMO,KACdC,MAAOR,EAAMS,OACbC,WAAUV,EAAM/M,MAAQ,IAuB1B,OAfK+M,GAAMpK,MACTyK,EAAWC,SAAWF,GAGxBC,EAAWH,SAGN9a,KAAK8G,EAAeQ,aAAa+I,OACjCrQ,KAAK8G,EAAeQ,aAAa+I,KAAK4K,EAAWC,WAEpD,qBAAqB7K,KAAK4K,EAAW,cAErC,qBAAqB5K,KAAK4K,EAAWC,WAGhCD,GAGTM,GAAmB,SAASxY,EAAMC,EAASuN,EAASmK,EAAQjK,EAAQlF,GAClE,GAAIiQ,IAAmBzY,EAAOA,EAAO,KAAO,KAAOC,GAAW,GAC9D,KACIhD,KAAK8G,EAAeK,aAAakJ,OAClCrQ,KAAK8G,EAAeK,aAAakJ,KAAKrN,KACrChD,KAAK8G,EAAeK,aAAakJ,KAAKmL,GAH1C,CAQA,GAAIjM,EAoBJ,IAlBIkB,GAAUA,EAAOzP,QACnBuP,EAAUE,EAAO,GAAGyK,UAAY3K,EAGhCE,EAAOE,UACPpB,GAAckB,OAAQA,IACbF,IACThB,GACEkB,SAEIyK,SAAU3K,EACVmK,OAAQA,EACRI,QAAQ,QAOZ9a,KAAK8G,EAAeM,WAAWiJ,OACjCrQ,KAAK8G,EAAeM,WAAWiJ,KAAKE,OAMlCvQ,KAAK8G,EAAeO,cAAcgJ,MACnCrQ,KAAK8G,EAAeO,cAAcgJ,KAAKE,IAF1C,CAOA,GAAIhO,GAAOwH,GAGPrH,WACEC,SAEII,KAAMA,EACND,MAAOE,EACPuM,WAAYA,KAIlBkM,QAASlL,GAEXhF,EAIFvL,MAAK4Q,EAAMrO,MAGbmZ,GAAa,SAASnZ,GAGpB,GAAIuJ,GAAM9L,KAAK8G,EAAeY,gBAI9B,IAHInF,EAAKS,UACPT,EAAKS,QAAUgH,EAASzH,EAAKS,QAAS8I,IAEpCvJ,EAAKG,UAAW,CAClB,GAAIA,GAAYH,EAAKG,UAAUC,OAAO,EACtCD,GAAUI,MAAQkH,EAAStH,EAAUI,MAAOgJ,GAG9C,GAAI6P,GAAUpZ,EAAKoZ,OAanB,OAZIA,KACEA,EAAQnL,MACVmL,EAAQnL,IAAMxG,EAAS2R,EAAQnL,IAAKxQ,KAAK8G,EAAea,eAEtDgU,EAAQC,UACVD,EAAQC,QAAU5R,EAAS2R,EAAQC,QAAS5b,KAAK8G,EAAea,gBAIhEpF,EAAKsZ,aAAetZ,EAAKsZ,YAAYlZ,QACvC3C,KAAK8b,GAAiBvZ,EAAKsZ,aAEtBtZ,GAMTwZ,GAAkB,SAASF,GAQzB,IAAK,GAJHG,GACAjL,EACAxO,EAHE0Z,GAAY,KAAM,OAAQ,OAKrBtb,EAAI,EAAGA,EAAIkb,EAAYlZ,OAAO3B,SAAUL,EAE/C,GADAoQ,EAAQ8K,EAAYlZ,OAAOhC,GAExBoQ,EAAMsF,eAAe,SACrB7M,EAASuH,EAAMxO,QAChB0H,EAAa8G,EAAMxO,MAHrB,CAOAA,EAAOwH,KAAgBgH,EAAMxO,KAC7B,KAAK,GAAIyV,GAAI,EAAGA,EAAIiE,EAASjb,SAAUgX,EACrCgE,EAAUC,EAASjE,GACfzV,EAAK8T,eAAe2F,IAAYzZ,EAAKyZ,KACvCzZ,EAAKyZ,GAAWhS,EAASzH,EAAKyZ,GAAUhc,KAAK8G,EAAea,cAGhEkU,GAAYlZ,OAAOhC,GAAG4B,KAAOA,IAIjC2Z,GAAc,WACZ,GAAKlc,KAAKqG,GAAkBrG,KAAKkG,EAAjC,CACA,GAAIiW,KAkBJ,OAhBInc,MAAKqG,GAAiBC,EAAW8V,YACnCD,EAAS5U,SACP8U,aAAclR,UAAUiR,YAKxBpV,EAAQiC,UAAYjC,EAAQiC,SAASE,OACvCgT,EAAS3L,IAAMxJ,EAAQiC,SAASE,MAG9BnJ,KAAKkG,GAAgBE,EAAUkW,WAC5BH,EAAS5U,UAAS4U,EAAS5U,YAChC4U,EAAS5U,QAAQqU,QAAUxV,EAAUkW,UAGhCH,IAGTI,EAAe,WACbvc,KAAKwc,GAAmB,EACxBxc,KAAKyc,GAAgB,MAGvBC,GAAgB,WACd,MAAO1c,MAAKwc,IAAoB9W,IAAQ1F,KAAKyc,GAAgBzc,KAAKwc,IAYpEG,GAAe,SAASC,GACtB,GAAIC,GAAO7c,KAAKwG,CAEhB,UACGqW,GACDD,EAAQ5Z,UAAY6Z,EAAK7Z,SACzB4Z,EAAQnB,UAAYoB,EAAKpB,WAKvBmB,EAAQrN,YAAcsN,EAAKtN,WACtB/E,EAAiBoS,EAAQrN,WAAYsN,EAAKtN,aACxCqN,EAAQla,YAAama,EAAKna,WAE5B6H,EAAgBqS,EAAQla,UAAWma,EAAKna,aAMnDoa,GAAkB,SAASnB,GAEzB,IAAI3b,KAAK+c,KAAT,CAIA,GAAIjF,GAAS6D,EAAQ7D,MAKrB,IAAiB,MAAXA,GAA6B,MAAXA,GAA6B,MAAXA,EAA1C,CAEA,GAAIkF,EACJ,KAIIA,EADErS,IACMgR,EAAQpU,QAAQ0V,IAAI,eAEpBtB,EAAQuB,kBAAkB,eAIpCF,EAA8B,IAAtBG,SAASH,EAAO,IACxB,MAAO9c,IAITF,KAAKwc,GAAmBQ,EAEpBA,EAEwB,EAAxBhd,KAAKwc,IAAwB,IAEjCxc,KAAKyc,GAAgB/W,OAGvB0X,EAAO,SAAS7a,GACd,GAAIkJ,GAAgBzL,KAAK8G,EAErBuW,GACAC,QAAStd,KAAK4G,EACdtB,OAAQmG,EAAcnG,OACtBiY,SAAU,cAEZpB,EAAWnc,KAAKwd,IAsDlB,IApDIrB,IACFkB,EAAS1B,QAAUQ,GAIjB5Z,EAAK8M,sBAAuB9M,GAAK8M,eAErC9M,EAAOwH,EAAYsT,EAAU9a,GAG7BA,EAAKmP,KAAO3H,EAAYA,KAAgB/J,KAAK6G,EAAe6K,MAAOnP,EAAKmP,MACxEnP,EAAKN,MAAQ8H,EAAYA,KAAgB/J,KAAK6G,EAAe5E,OAAQM,EAAKN,OAG1EM,EAAKN,MAAM,oBAAsByD,IAAQ1F,KAAK4I,EAE1C5I,KAAK8I,GAAgB9I,KAAK8I,EAAa9H,OAAS,IAGlDuB,EAAKsZ,aACHlZ,UAAWwC,MAAMpE,KAAKf,KAAK8I,EAAc,KAIzC9I,KAAK6G,EAAe0G,OAEtBhL,EAAKgL,KAAOvN,KAAK6G,EAAe0G,MAI9B9B,EAAcsG,cAAaxP,EAAKwP,YAActG,EAAcsG,aAG5DtG,EAAc1E,UAASxE,EAAKwE,QAAU0E,EAAc1E,SAGpD0E,EAAcgS,aAAYlb,EAAKmb,YAAcjS,EAAcgS,YAE/Dlb,EAAOvC,KAAK2d,GAAcpb,GAG1ByN,OAAOC,KAAK1N,GAAMqb,QAAQ,SAASlS,IAChB,MAAbnJ,EAAKmJ,IAA8B,KAAdnJ,EAAKmJ,IAAe7B,EAActH,EAAKmJ,YACvDnJ,GAAKmJ,KAIZ5F,EAAW2F,EAAcwG,gBAC3B1P,EAAOkJ,EAAcwG,aAAa1P,IAASA,GAIxCA,IAAQsH,EAActH,MAMzBuD,EAAW2F,EAAc2G,qBACxB3G,EAAc2G,mBAAmB7P,IAOpC,MAAIvC,MAAK+c,SACP/c,MAAKwL,EAAU,OAAQ,uCAAwCjJ,QAIzB,gBAA7BkJ,GAAc1D,WACnB8D,KAAKgS,SAAWpS,EAAc1D,YAChC/H,KAAK8d,GAAsBvb,GAG7BvC,KAAK8d,GAAsBvb,KAI/Bwb,GAAe,SAASxb,GACtB,MAAOuI,GAASvI,EAAMvC,KAAK8G,EAAekB,eAG5CgW,GAAU,WACR,MAAO3T,MAGT4T,GAAuB,SAAS1b,EAAMsB,GACpC,GAAI9D,GAAOC,KACPyL,EAAgBzL,KAAK8G,CAEzB,IAAK9G,KAAKwM,UAAV,CAQA,GALAjK,EAAOvC,KAAKke,GAAY3b,IAKnBvC,KAAK8G,EAAeqX,iBAAmBne,KAAKoe,GAAc7b,GAE7D,WADAvC,MAAKwL,EAAU,OAAQ,+BAAgCjJ,EAOzDvC,MAAKyG,EAAelE,EAAK8b,WAAa9b,EAAK8b,SAAWre,KAAKse,MAG3Dte,KAAKwG,EAAYjE,EAEjBvC,KAAKwL,EAAU,QAAS,uBAAwBjJ,EAEhD,IAAIgc,IACFC,eAAgB,IAChBC,cAAe,YAAcze,KAAKoL,QAClCsT,WAAY1e,KAAK2G,EAGf3G,MAAKwN,IACP+Q,EAAKI,cAAgB3e,KAAKwN,EAG5B,IAAI9K,GAAYH,EAAKG,WAAaH,EAAKG,UAAUC,OAAO,EAItD3C,MAAK8G,EAAee,iBACpB7H,KAAK8G,EAAee,gBAAgBsE,QAEpCnM,KAAK6Q,mBACH6D,SAAU,SACV1R,QAASN,GACJA,EAAUK,KAAOL,EAAUK,KAAO,KAAO,IAAML,EAAUI,MAC1DP,EAAKS,QACTqb,SAAU9b,EAAK8b,SACfra,MAAOzB,EAAKyB,OAAS,SAIzB,IAAIwM,GAAMxQ,KAAK2N,GACdlC,EAAc6G,WAAatS,KAAK4e,IAAc7d,KAAKf,MAClDwQ,IAAKA,EACL+N,KAAMA,EACNhc,KAAMA,EACNgJ,QAASE,EACToT,UAAW,WACT9e,EAAKqJ,IAELrJ,EAAKya,EAAc,WACjBjY,KAAMA,EACN+Q,IAAK9C,IAEP3M,GAAYA,KAEdib,QAAS,SAAiBxP,GACxBvP,EAAKyL,EAAU,QAAS,mCAAoC8D,GAExDA,EAAMqM,SACR5b,EAAKgf,GAAiBzP,EAAMqM,SAG9B5b,EAAKya,EAAc,WACjBjY,KAAMA,EACN+Q,IAAK9C,IAEPlB,EAAQA,GAAS,GAAI1O,OAAM,sDAC3BiD,GAAYA,EAASyL,QAK3B0P,GAAc,SAASC,GAErB,GAAIzO,GAAMyO,EAAKzO,IAAM,IAAMpG,EAAU6U,EAAKV,MAEtCW,EAAmB,KACnBC,IAUJ,IARIF,EAAK1T,QAAQhE,UACf2X,EAAmBlf,KAAKof,GAAcH,EAAK1T,QAAQhE,UAGjD0X,EAAK1T,QAAQ8T,kBACfF,EAA2Bnf,KAAKof,GAAcH,EAAK1T,QAAQ8T,kBAGzD1U,IAAiB,CACnBwU,EAAyB3L,KAAOvN,EAAUgZ,EAAK1c,KAE/C,IAAI+c,GAAsBvV,KAAgB/J,KAAKiI,GAC3CsX,EAAexV,EAAYuV,EAAqBH,EAMpD,OAJID,KACFK,EAAahY,QAAU2X,GAGlBlY,EACJwY,MAAMhP,EAAK+O,GACXjH,KAAK,SAASC,GACb,GAAIA,EAASkH,GACXR,EAAKJ,WAAaI,EAAKJ,gBAClB,CACL,GAAIvP,GAAQ,GAAI1O,OAAM,sBAAwB2X,EAAST,OAGvDxI,GAAMqM,QAAUpD,EAChB0G,EAAKH,SAAWG,EAAKH,QAAQxP,MAGhC,SAAS,WACR2P,EAAKH,SACHG,EAAKH,QAAQ,GAAIle,OAAM,6CAI/B,GAAI+a,GAAU3U,EAAQsQ,gBAAkB,GAAItQ,GAAQsQ,cACpD,IAAKqE,EAAL,CAGA,GAAI+D,GAAU,mBAAqB/D,IAAqC,mBAAnBgE,eAEhDD,KAED,mBAAqB/D,GACvBA,EAAQ1D,mBAAqB,WAC3B,GAA2B,IAAvB0D,EAAQ9D,WAEL,GAAuB,MAAnB8D,EAAQ7D,OACjBmH,EAAKJ,WAAaI,EAAKJ,gBAClB,IAAII,EAAKH,QAAS,CACvB,GAAIrI,GAAM,GAAI7V,OAAM,sBAAwB+a,EAAQ7D,OACpDrB,GAAIkF,QAAUA,EACdsD,EAAKH,QAAQrI,MAIjBkF,EAAU,GAAIgE,gBAGdnP,EAAMA,EAAIoP,QAAQ,WAAY,IAG1BX,EAAKJ,YACPlD,EAAQkE,OAASZ,EAAKJ,WAEpBI,EAAKH,UACPnD,EAAQmE,QAAU,WAChB,GAAIrJ,GAAM,GAAI7V,OAAM,oCACpB6V,GAAIkF,QAAUA,EACdsD,EAAKH,QAAQrI,MAKnBkF,EAAQoE,KAAK,OAAQvP,GAEjB0O,GACFpV,EAAKoV,EAAkB,SAASxT,EAAK5I,GACnC6Y,EAAQqE,iBAAiBtU,EAAK5I,KAIlC6Y,EAAQsE,KAAKha,EAAUgZ,EAAK1c,UAG9B2d,GAAe,SAASC,GACtB,GAAIC,KAEJ,KAAK,GAAI1U,KAAOyU,GACd,GAAIA,EAAK9J,eAAe3K,GAAM,CAC5B,GAAI5I,GAAQqd,EAAKzU,EACjB0U,GAAU1U,GAAwB,kBAAV5I,GAAuBA,IAAUA,EAI7D,MAAOsd,IAGTC,EAAW,SAASrc,GAGhBhE,KAAK0I,EAAwB1E,KAC5BhE,KAAKqL,OAASrL,KAAK8G,EAAeuE,QAGnC9F,SAASX,UAAUY,MAAMzE,KACvBf,KAAK0I,EAAwB1E,GAC7BhE,KAAKyI,KACFtD,MAAMpE,KAAKqE,UAAW,KAK/Bkb,EAAe,SAAS5U,EAAKkC,GACvBzH,EAAYyH,SACP5N,MAAK6G,EAAe6E,GAE3B1L,KAAK6G,EAAe6E,GAAO3B,EAAY/J,KAAK6G,EAAe6E,OAAYkC,KAM7E3N,EAAM2E,UAAU2b,QAAUtgB,EAAM2E,UAAU0M,eAC1CrR,EAAM2E,UAAU4b,kBAAoBvgB,EAAM2E,UAAUoN,WAEpDvS,EAAOD,QAAUS,IAEdc,KAAKf,KAAuB,mBAAXF,QAAyBA,OAAyB,mBAATC,MAAuBA,KAAyB,mBAAXF,QAAyBA,aACxH4gB,GAAK,GAAGC,GAAK,GAAGjc,EAAI,EAAEL,EAAI,EAAEf,EAAI,EAAEsd,EAAI,IAAIvd,GAAG,SAASlC,EAAQzB,EAAOD,IACxE,SAAWM,GAOX,GAAI8gB,GAAmB1f,EAAQ,GAG3B8F,EACgB,mBAAXnH,QACHA,OACkB,mBAAXC,GAAyBA,EAAyB,mBAATC,MAAuBA,QACzE8gB,EAAS7Z,EAAQ/G,MAEjBA,EAAQ,GAAI2gB,EAQhB3gB,GAAM6gB,WAAa,WAEjB,MADA9Z,GAAQ/G,MAAQ4gB,EACT5gB,GAGTA,EAAMyS,YAENjT,EAAOD,QAAUS,EAoCjBR,EAAOD,QAAQuhB,OAASH,IAErB7f,KAAKf,KAAuB,mBAAXF,QAAyBA,OAAyB,mBAATC,MAAuBA,KAAyB,mBAAXF,QAAyBA,aACxH4F,EAAI,IAAIpC,GAAG,SAASnC,EAAQzB,EAAOD,IACtC,SAAWM,GAQX,QAAS0J,GAASwX,GAChB,MAAuB,gBAATA,IAA8B,OAATA,EAKrC,QAASzX,GAAQzG,GACf,UAAWsJ,SAASrL,KAAK+B,IACvB,IAAK,iBACH,OAAO,CACT,KAAK,qBACH,OAAO,CACT,KAAK,wBACH,OAAO,CACT,SACE,MAAOA,aAAiBlC,QAI9B,QAAS8I,GAAa5G,GACpB,MAAOme,MAAoD,2BAAzB7U,SAASrL,KAAK+B,GAGlD,QAASqD,GAAY6a,GACnB,MAAgB,UAATA,EAGT,QAASlb,GAAWkb,GAClB,MAAuB,kBAATA,GAGhB,QAASvX,GAAcuX,GACrB,MAAgD,oBAAzChR,OAAOpL,UAAUwH,SAASrL,KAAKigB,GAGxC,QAASrX,GAASqX,GAChB,MAAgD,oBAAzChR,OAAOpL,UAAUwH,SAASrL,KAAKigB,GAGxC,QAASpX,GAAQoX,GACf,MAAgD,mBAAzChR,OAAOpL,UAAUwH,SAASrL,KAAKigB,GAGxC,QAASnX,GAAcmX,GACrB,IAAKvX,EAAcuX,GAAO,OAAO,CAEjC,KAAK,GAAIpN,KAAKoN,GACZ,GAAIA,EAAK3K,eAAezC,GACtB,OAAO,CAGX,QAAO,EAGT,QAASqN,KACP,IAEE,MADA,IAAIC,YAAW,KACR,EACP,MAAOhhB,GACP,OAAO,GAIX,QAASyK,KACP,KAAM,SAAW3D,IAAU,OAAO,CAElC,KAIE,MAHA,IAAIma,SACJ,GAAI/I,SAAQ,IACZ,GAAIgJ,WACG,EACP,MAAOlhB,GACP,OAAO,GAQX,QAASmI,KACP,IAAKsC,IAAiB,OAAO,CAE7B,KAKE,MAHA,IAAIyN,SAAQ,cACVhQ,eAAgB,YAEX,EACP,MAAOlI,GACP,OAAO,GAIX,QAASmhB,KACP,MAAwC,kBAA1BC,uBAGhB,QAAShf,GAAgBuB,GACvB,QAASoO,GAAa1P,EAAMsD,GAC1B,GAAI0b,GAAiB1d,EAAStB,IAASA,CACvC,OAAIsD,GACKA,EAAS0b,IAAmBA,EAE9BA,EAGT,MAAOtP,GAGT,QAASnI,GAAKgH,EAAKjN,GACjB,GAAIlD,GAAGqX,CAEP,IAAI7R,EAAY2K,EAAI9P,QAClB,IAAKL,IAAKmQ,GACJ5G,EAAO4G,EAAKnQ,IACdkD,EAAS9C,KAAK,KAAMJ,EAAGmQ,EAAInQ,QAK/B,IADAqX,EAAIlH,EAAI9P,OAEN,IAAKL,EAAI,EAAGA,EAAIqX,EAAGrX,IACjBkD,EAAS9C,KAAK,KAAMJ,EAAGmQ,EAAInQ,IAMnC,QAASoJ,GAAYyX,EAAMC,GACzB,MAAKA,IAGL3X,EAAK2X,EAAM,SAAS/V,EAAK5I,GACvB0e,EAAK9V,GAAO5I,IAEP0e,GALEA,EAgBX,QAASvX,GAAa6G,GACpB,QAAKd,OAAO0R,UAGL1R,OAAO0R,SAAS5Q,GAGzB,QAAS9G,GAASgQ,EAAKlO,GACrB,GAAmB,gBAARA,GACT,KAAM,IAAIlL,OAAM,yDAElB,OAAmB,gBAARoZ,IAA4B,IAARlO,EACtBkO,EAEFA,EAAIhZ,QAAU8K,EAAMkO,EAAMA,EAAI9W,OAAO,EAAG4I,GAAO,IAUxD,QAAS5B,GAAOyX,EAAQjW,GACtB,MAAOsE,QAAOpL,UAAUyR,eAAetV,KAAK4gB,EAAQjW,GAGtD,QAASvB,GAAWyX,GAQlB,IALA,GAGEC,GAHEC,KACFnhB,EAAI,EACJohB,EAAMH,EAAS5gB,OAGVL,EAAIohB,EAAKphB,IACdkhB,EAAUD,EAASjhB,GACfgJ,EAASkY,GAGXC,EAAQle,KAAKie,EAAQjC,QAAQ,8BAA+B,SACnDiC,GAAWA,EAAQG,QAE5BF,EAAQle,KAAKie,EAAQG,OAIzB,OAAO,IAAIC,QAAOH,EAAQI,KAAK,KAAM,KAGvC,QAAS9X,GAAU7J,GACjB,GAAI4hB,KAIJ,OAHArY,GAAKvJ,EAAG,SAASmL,EAAK5I,GACpBqf,EAAMve,KAAKmP,mBAAmBrH,GAAO,IAAMqH,mBAAmBjQ,MAEzDqf,EAAMD,KAAK,KAMpB,QAASzX,GAAS+F,GAChB,GAAmB,gBAARA,GAAkB,QAC7B,IAAI4R,GAAQ5R,EAAI4R,MAAM,kEAGlBC,EAAQD,EAAM,IAAM,GACpBE,EAAWF,EAAM,IAAM,EAC3B,QACE5M,SAAU4M,EAAM,GAChB3M,KAAM2M,EAAM,GACZhV,KAAMgV,EAAM,GACZ1M,SAAU0M,EAAM,GAAKC,EAAQC,GAGjC,QAASjY,KACP,GAAIkY,GAASvb,EAAQub,QAAUvb,EAAQwb,QAEvC,KAAKrc,EAAYoc,IAAWA,EAAOE,gBAAiB,CAGlD,GAAIC,GAAM,GAAIC,aAAY,EAC1BJ,GAAOE,gBAAgBC,GAGvBA,EAAI,GAAe,KAATA,EAAI,GAAc,MAE5BA,EAAI,GAAe,MAATA,EAAI,GAAe,KAE7B,IAAIE,GAAM,SAASC,GAEjB,IADA,GAAIC,GAAID,EAAIzW,SAAS,IACd0W,EAAE9hB,OAAS,GAChB8hB,EAAI,IAAMA,CAEZ,OAAOA,GAGT,OACEF,GAAIF,EAAI,IACRE,EAAIF,EAAI,IACRE,EAAIF,EAAI,IACRE,EAAIF,EAAI,IACRE,EAAIF,EAAI,IACRE,EAAIF,EAAI,IACRE,EAAIF,EAAI,IACRE,EAAIF,EAAI,IAIV,MAAO,mCAAmC9C,QAAQ,QAAS,SAASmD,GAClE,GAAI1iB,GAAqB,GAAhBwL,KAAKgS,SAAiB,EAC7BiF,EAAU,MAANC,EAAY1iB,EAAS,EAAJA,EAAW,CAClC,OAAOyiB,GAAE1W,SAAS,MAYxB,QAAS9B,GAAiB0Y,GAWxB,IATA,GAOEC,GAPEC,EAAsB,EACxBC,EAAiB,GACjBC,KACAC,EAAS,EACTtB,EAAM,EACNuB,EAAY,MACZC,EAAYD,EAAUtiB,OAGjBgiB,GAAQK,IAAWH,IACxBD,EAAUO,EAAoBR,KAMhB,SAAZC,GACCI,EAAS,GAAKtB,EAAMqB,EAAIpiB,OAASuiB,EAAYN,EAAQjiB,QAAUmiB,KAKlEC,EAAIxf,KAAKqf,GAETlB,GAAOkB,EAAQjiB,OACfgiB,EAAOA,EAAKS,UAGd,OAAOL,GAAIzS,UAAUuR,KAAKoB,GAS5B,QAASE,GAAoBR,GAC3B,GACEU,GACAC,EACAjY,EACAkY,EACAjjB,EALEyiB,IAOJ,KAAKJ,IAASA,EAAKnO,QACjB,MAAO,EAST,IANAuO,EAAIxf,KAAKof,EAAKnO,QAAQR,eAClB2O,EAAK9b,IACPkc,EAAIxf,KAAK,IAAMof,EAAK9b,IAGtBwc,EAAYV,EAAKU,UACbA,GAAa/Z,EAAS+Z,GAExB,IADAC,EAAUD,EAAU1Y,MAAM,OACrBrK,EAAI,EAAGA,EAAIgjB,EAAQ3iB,OAAQL,IAC9ByiB,EAAIxf,KAAK,IAAM+f,EAAQhjB,GAG3B,IAAIkjB,IAAiB,OAAQ,OAAQ,QAAS,MAC9C,KAAKljB,EAAI,EAAGA,EAAIkjB,EAAc7iB,OAAQL,IACpC+K,EAAMmY,EAAcljB,GACpBijB,EAAOZ,EAAKc,aAAapY,GACrBkY,GACFR,EAAIxf,KAAK,IAAM8H,EAAM,KAAOkY,EAAO,KAGvC,OAAOR,GAAIlB,KAAK,IAMlB,QAAS6B,GAAgBtjB,EAAGujB,GAC1B,WAAYvjB,IAAMujB,GAMpB,QAASC,GAAgBxjB,EAAGujB,GAC1B,MAAO7d,GAAY1F,IAAM0F,EAAY6d,GAMvC,QAASzZ,GAAgBqF,EAAKsU,GAC5B,OAAIH,EAAgBnU,EAAKsU,KAEzBtU,EAAMA,EAAIjN,OAAO,GACjBuhB,EAAMA,EAAIvhB,OAAO,GAEbiN,EAAI7M,OAASmhB,EAAInhB,MAAQ6M,EAAI9M,QAAUohB,EAAIphB,SAG3CmhB,EAAgBrU,EAAIL,WAAY2U,EAAI3U,aAEjC/E,EAAiBoF,EAAIL,WAAY2U,EAAI3U,cAM9C,QAAS/E,GAAiB2Z,EAAQC,GAChC,GAAIL,EAAgBI,EAAQC,GAAS,OAAO,CAE5C,IAAIC,GAAUF,EAAO1T,OACjB6T,EAAUF,EAAO3T,MAGrB,IAAI4T,EAAQrjB,SAAWsjB,EAAQtjB,OAAQ,OAAO,CAI9C,KAAK,GADDP,GAAGujB,EACErjB,EAAI,EAAGA,EAAI0jB,EAAQrjB,OAAQL,IAGlC,GAFAF,EAAI4jB,EAAQ1jB,GACZqjB,EAAIM,EAAQ3jB,GAEVF,EAAEya,WAAa8I,EAAE9I,UACjBza,EAAEia,SAAWsJ,EAAEtJ,QACfja,EAAE2a,QAAU4I,EAAE5I,OACd3a,EAAE,cAAgBujB,EAAE,YAEpB,OAAO,CAEX,QAAO,EAUT,QAAStZ,GAAKoG,EAAKnM,EAAM4f,EAAaC,GACpC,GAAW,MAAP1T,EAAJ,CACA,GAAIiF,GAAOjF,EAAInM,EACfmM,GAAInM,GAAQ4f,EAAYxO,GACxBjF,EAAInM,GAAMuJ,GAAY,EACtB4C,EAAInM,GAAM0J,EAAW0H,EACjByO,GACFA,EAAM5gB,MAAMkN,EAAKnM,EAAMoR,KAU3B,QAAS1Q,GAASof,EAAOC,GACvB,IAAK9a,EAAQ6a,GAAQ,MAAO,EAI5B,KAAK,GAFDE,MAEKhkB,EAAI,EAAGA,EAAI8jB,EAAMzjB,OAAQL,IAChC,IACEgkB,EAAO/gB,KAAKghB,OAAOH,EAAM9jB,KACzB,MAAOT,GACPykB,EAAO/gB,KAAK,gCAIhB,MAAO+gB,GAAOzC,KAAKwC,GASrB,QAASG,GAAW/hB,GAClB,QAASgiB,UAAUhiB,GAAOkI,MAAM,SAAShK,OAG3C,QAAS+jB,GAASjiB,GAChB,MAAO+hB,GAAW7e,KAAKC,UAAUnD,IAGnC,QAASkiB,GAAeliB,GACtB,GAAqB,gBAAVA,GAAoB,CAC7B,GAAImiB,GAAY,EAChB,OAAOjb,GAASlH,EAAOmiB,GAClB,GACY,gBAAVniB,IACU,iBAAVA,IACU,mBAAVA,GAEP,MAAOA,EAGT,IAAIC,GAAOiN,OAAOpL,UAAUwH,SAASrL,KAAK+B,EAG1C,OAAa,oBAATC,EAAmC,WAC1B,mBAATA,EAAkC,UACzB,sBAATA,EACKD,EAAM6B,KAAO,cAAgB7B,EAAM6B,KAAO,IAAM,aAElD7B,EAGT,QAASoiB,GAAgBpiB,EAAOqiB,GAC9B,MAAc,KAAVA,EAAoBH,EAAeliB,GAEnC2G,EAAc3G,GACTkN,OAAOC,KAAKnN,GAAOsiB,OAAO,SAASC,EAAK3Z,GAE7C,MADA2Z,GAAI3Z,GAAOwZ,EAAgBpiB,EAAM4I,GAAMyZ,EAAQ,GACxCE,OAEApP,MAAMrM,QAAQ9G,GAChBA,EAAMwiB,IAAI,SAASC,GACxB,MAAOL,GAAgBK,EAAKJ,EAAQ,KAIjCH,EAAeliB,GAGxB,QAAS+H,GAAmB/I,EAAIqjB,EAAOK,GACrC,IAAK/b,EAAc3H,GAAK,MAAOA,EAE/BqjB,GAAyB,gBAAVA,GAAqBM,EAAgCN,EACpEK,EAA2B,gBAAVL,GAAqBO,EAA+BF,CAErE,IAAIG,GAAaT,EAAgBpjB,EAAIqjB,EAErC,OAAIJ,GAAS9e,EAAU0f,IAAeH,EAC7B3a,EAAmB/I,EAAIqjB,EAAQ,GAGjCQ,EAGT,QAAS/a,GAAwBqF,EAAMgV,GACrC,GAAoB,gBAAThV,IAAqC,gBAATA,GAAmB,MAAOA,GAAK7D,UACtE,KAAK6J,MAAMrM,QAAQqG,GAAO,MAAO,EAKjC,IAHAA,EAAOA,EAAK2V,OAAO,SAASla,GAC1B,MAAsB,gBAARA,KAEI,IAAhBuE,EAAKjP,OAAc,MAAO,sBAG9B,IADAikB,EAAiC,gBAAdA,GAAyBY,EAA4BZ,EACpEhV,EAAK,GAAGjP,QAAUikB,EAAW,MAAOhV,GAAK,EAE7C,KAAK,GAAI6V,GAAW7V,EAAKjP,OAAQ8kB,EAAW,EAAGA,IAAY,CACzD,GAAIH,GAAa1V,EAAK9K,MAAM,EAAG2gB,GAAU5D,KAAK,KAC9C,MAAIyD,EAAW3kB,OAASikB,GACxB,MAAIa,KAAa7V,EAAKjP,OAAe2kB,EAC9BA,EAAa,IAGtB,MAAO,GAGT,QAAS7a,GAAS2Z,EAAOzc,GAcvB,QAAS+d,GAAeC,GACtB,MAAIpc,GAAQoc,GACHA,EAAYV,IAAI,SAASC,GAC9B,MAAOQ,GAAeR,KAItB9b,EAAcuc,GACThW,OAAOC,KAAK+V,GAAaZ,OAAO,SAASC,EAAKY,GAMnD,MAJEZ,GAAIY,GADFC,EAAe7V,KAAK4V,GACbE,EAEAJ,EAAeC,EAAYC,IAE/BZ,OAIJW,EA/BT,IAAKpc,EAAQ5B,IAAkB4B,EAAQ5B,IAAyC,IAAxBA,EAAahH,OACnE,MAAOyjB,EAET,IAEI2B,GAFAF,EAAiB/b,EAAWnC,GAC5Bme,EAAe,UAGnB,KACEC,EAAYpgB,KAAK6L,MAAM5L,EAAUwe,IACjC,MAAO4B,GACP,MAAO5B,GAwBT,MAAOsB,GAAeK,GAlkBxB,GAAIngB,GAAY/E,EAAQ,IAEpB8F,EACgB,mBAAXnH,QACHA,OACkB,mBAAXC,GAAyBA,EAAyB,mBAATC,MAAuBA,QAgczE0lB,EAAgC,EAEhCC,EAA+B,MAC/BG,EAA4B,EA6HhCpmB,GAAOD,SACLgK,SAAUA,EACVD,QAASA,EACTG,aAAcA,EACdvD,YAAaA,EACbL,WAAYA,EACZ2D,cAAeA,EACfE,SAAUA,EACVC,QAASA,EACTC,cAAeA,EACfoX,mBAAoBA,EACpBtW,cAAeA,EACftC,uBAAwBA,EACxBgZ,8BAA+BA,EAC/B/e,gBAAiBA,EACjBwH,KAAMA,EACNC,YAAaA,EACbC,SAAUA,EACVC,aAAcA,EACdC,OAAQA,EACRC,WAAYA,EACZC,UAAWA,EACXC,MAAOA,EACPC,iBAAkBA,EAClBkZ,oBAAqBA,EACrBjZ,gBAAiBA,EACjBC,iBAAkBA,EAClBC,SAAUA,EACVC,KAAMA,EACNrF,SAAUA,EACVwF,mBAAoBA,EACpBD,wBAAyBA,EACzBE,SAAUA,KAGT/J,KAAKf,KAAuB,mBAAXF,QAAyBA,OAAyB,mBAATC,MAAuBA,KAAyB,mBAAXF,QAAyBA,aACxH4gB,GAAK,KAAKE,GAAG,SAASzf,EAAQzB,EAAOD,IACxC,SAAWM,GA+BX,QAASwmB,KACP,MAAwB,mBAAbpb,WAAiD,MAArBA,SAASjC,SAAyB,GAElEiC,SAASjC,SAASE,KAjC3B,GAAIrE,GAAQ5D,EAAQ,GAYhBmI,GACF7B,qBAAqB,EACrB6D,OAAO,GAILrE,EACgB,mBAAXnH,QACHA,OACkB,mBAAXC,GAAyBA,EAAyB,mBAATC,MAAuBA,QAGzEwmB,KAAYphB,MACZqhB,EAAmB,IAGnBC,EAAiB,yGA+CrBpd,GAASoD,OAAS,WAUhB,QAASC,GAAUga,GACjBC,IACAC,EAAShjB,KAAK8iB,GAOhB,QAASG,GAAYH,GACnB,IAAK,GAAI/lB,GAAIimB,EAAS5lB,OAAS,EAAGL,GAAK,IAAKA,EACtCimB,EAASjmB,KAAO+lB,GAClBE,EAASE,OAAOnmB,EAAG,GAQzB,QAASomB,KACPC,IACAJ,KAOF,QAASK,GAAexX,EAAOyX,GAC7B,GAAIxkB,GAAY,IAChB,KAAIwkB,GAAkB7d,EAAS7B,oBAA/B,CAGA,IAAK,GAAI7G,KAAKimB,GACZ,GAAIA,EAASvQ,eAAe1V,GAC1B,IACEimB,EAASjmB,GAAG6E,MAAM,MAAOiK,GAAOqK,OAAOyM,EAAOxlB,KAAKqE,UAAW,KAC9D,MAAO+hB,GACPzkB,EAAYykB,EAKlB,GAAIzkB,EACF,KAAMA,IAiBV,QAAS0kB,GAAsBtjB,EAAK0M,EAAK6W,EAAQC,EAAOxlB,GACtD,GAAI2N,GAAQ,KAER/M,EAAYoC,EAAM4E,aAAa5H,GAAMA,EAAGwN,MAAQxN,EAEhDkB,EAAU8B,EAAM4E,aAAa5F,GAAOA,EAAId,QAAUc,CAEtD,IAAIyjB,EACFle,EAASqG,kBAAkB8X,oCACzBD,EACA/W,EACA6W,EACArkB,GAEFykB,QACK,IAAI/kB,GAAaoC,EAAMyE,QAAQ7G,GAMpC+M,EAAQpG,EAASqG,kBAAkBhN,GACnCukB,EAAexX,GAAO,OACjB,CACL,GAOIiY,GAPAze,GACFuH,IAAKA,EACL2K,KAAMkM,EACNhM,OAAQiM,GAGN3iB,EAAOmJ,MAGX,IAAkC,uBAA3B1B,SAASrL,KAAKiC,GAAgC,CACnD,GAAI0kB,GAAS1kB,EAAQof,MAAMqE,EACvBiB,KACF/iB,EAAO+iB,EAAO,GACd1kB,EAAU0kB,EAAO,IAIrBze,EAAS4E,KAAO2Y,EAEhB/W,GACE9K,KAAMA,EACN3B,QAASA,EACTwN,IAAK8V,IACL7W,OAAQxG,IAEVge,EAAexX,GAAO,GAGxB,QAAIkY,GACKA,EAAmBniB,MAAMxF,KAAMoF,WAM1C,QAASuhB,KACHiB,IAGJD,EAAqB3gB,EAAQ8Y,QAC7B9Y,EAAQ8Y,QAAUsH,EAClBQ,GAA2B,GAG7B,QAASZ,KACFY,IAGL5gB,EAAQ8Y,QAAU6H,EAClBC,GAA2B,EAC3BD,EAAqB7Z,QAGvB,QAAS2Z,KACP,GAAII,GAAsBN,EACxBO,EAAYC,CACdA,GAAW,KACXR,EAAqB,KACrBhV,EAAgB,KAChB0U,EAAezhB,MAAM,MAAOqiB,GAAqB,GAAO/N,OAAOgO,IAUjE,QAASrb,GAAO3K,EAAIkmB,GAClB,GAAI9iB,GAAOqhB,EAAOxlB,KAAKqE,UAAW,EAClC,IAAImiB,EAAoB,CACtB,GAAIhV,IAAkBzQ,EACpB,MAEA2lB,KAIJ,GAAIhY,GAAQpG,EAASqG,kBAAkB5N,EAevC,IAdAylB,EAAqB9X,EACrB8C,EAAgBzQ,EAChBimB,EAAW7iB,EAMXyO,WAAW,WACLpB,IAAkBzQ,GACpB2lB,KAEDhY,EAAMwY,WAAa,IAAO,GAEzBD,KAAY,EACd,KAAMlmB,GA9LV,GA0DI6lB,GAAoBC,EA1DpBhB,KACFmB,EAAW,KACXxV,EAAgB,KAChBgV,EAAqB,IAkMvB,OAHA9a,GAAOC,UAAYA,EACnBD,EAAOoa,YAAcA,EACrBpa,EAAO6B,UAAYyY,EACZta,KAsDTpD,EAASqG,kBAAoB,WA4C3B,QAASwY,GAA+BpmB,GACtC,GAAwB,mBAAbA,GAAG2N,OAA0B3N,EAAG2N,MAA3C,CAiBA,IAAK,GALD0Y,GACAC,EACAC,EAZA5P,EAAS,0IACT6P,EAAQ,wHAGRC,EAAQ,6JAERC,EAAY,gDACZC,EAAa,gCACbC,EAAQ5mB,EAAG2N,MAAMzE,MAAM,MACvByE,KAMK9O,GAFO,sBAAsBkC,KAAKf,EAAGkB,SAEjC,GAAGgV,EAAI0Q,EAAM1nB,OAAQL,EAAIqX,IAAKrX,EAAG,CAC5C,GAAKynB,EAAQ3P,EAAO5V,KAAK6lB,EAAM/nB,IAAM,CACnC,GAAIgoB,GAAWP,EAAM,IAAqC,IAA/BA,EAAM,GAAG5Q,QAAQ,UACxCoR,EAASR,EAAM,IAAmC,IAA7BA,EAAM,GAAG5Q,QAAQ,OACtCoR,KAAWT,EAAWM,EAAW5lB,KAAKulB,EAAM,OAE9CA,EAAM,GAAKD,EAAS,GACpBC,EAAM,GAAKD,EAAS,GACpBC,EAAM,GAAKD,EAAS,IAEtBE,GACE7X,IAAMmY,EAAsB,KAAXP,EAAM,GACvBva,KAAMua,EAAM,IAAM5B,EAClBthB,KAAMyjB,GAAYP,EAAM,OACxBjN,KAAMiN,EAAM,IAAMA,EAAM,GAAK,KAC7B/M,OAAQ+M,EAAM,IAAMA,EAAM,GAAK,UAE5B,IAAKA,EAAQE,EAAMzlB,KAAK6lB,EAAM/nB,IACnC0nB,GACE7X,IAAK4X,EAAM,GACXva,KAAMua,EAAM,IAAM5B,EAClBthB,QACAiW,MAAOiN,EAAM,GACb/M,OAAQ+M,EAAM,IAAMA,EAAM,GAAK,UAE5B,CAAA,KAAKA,EAAQG,EAAM1lB,KAAK6lB,EAAM/nB,KAsBnC,QArBA,IAAIioB,GAASR,EAAM,IAAMA,EAAM,GAAG5Q,QAAQ,aACtCoR,KAAWT,EAAWK,EAAU3lB,KAAKulB,EAAM,MAE7CA,EAAM,GAAKD,EAAS,GACpBC,EAAM,GAAKD,EAAS,GACpBC,EAAM,GAAK,MACI,IAANznB,GAAYynB,EAAM,IAAiC,mBAApBtmB,GAAG+mB,eAK3CpZ,EAAM,GAAG4L,OAASvZ,EAAG+mB,aAAe,GAEtCR,GACE7X,IAAK4X,EAAM,GACXva,KAAMua,EAAM,IAAM5B,EAClBthB,KAAMkjB,EAAM,GAAKA,EAAM,GAAGpd,MAAM,QAChCmQ,KAAMiN,EAAM,IAAMA,EAAM,GAAK,KAC7B/M,OAAQ+M,EAAM,IAAMA,EAAM,GAAK,OAM9BC,EAAQxa,MAAQwa,EAAQlN,OAC3BkN,EAAQxa,KAAO2Y,GAGjB/W,EAAM7L,KAAKykB,GAGb,MAAK5Y,GAAMzO,QAKT2D,KAAM7C,EAAG6C,KACT3B,QAASlB,EAAGkB,QACZwN,IAAK8V,IACL7W,MAAOA,GAPA,MAwBX,QAAS+X,GAAoCjN,EAAW/J,EAAK6W,EAAQrkB,GACnE,GAAI8lB,IACFtY,IAAKA,EACL2K,KAAMkM,EAGR,IAAIyB,EAAQtY,KAAOsY,EAAQ3N,KAAM,CAO/B,GANAZ,EAAU0N,YAAa,EAElBa,EAAQjb,OACXib,EAAQjb,KAAO2Y,GAGbjM,EAAU9K,MAAMzO,OAAS,GACvBuZ,EAAU9K,MAAM,GAAGe,MAAQsY,EAAQtY,IAAK,CAC1C,GAAI+J,EAAU9K,MAAM,GAAG0L,OAAS2N,EAAQ3N,KACtC,OAAO,CACF,KACJZ,EAAU9K,MAAM,GAAG0L,MACpBZ,EAAU9K,MAAM,GAAG5B,OAASib,EAAQjb,KAGpC,MADA0M,GAAU9K,MAAM,GAAG0L,KAAO2N,EAAQ3N,MAC3B,EAOb,MAFAZ,GAAU9K,MAAMsZ,QAAQD,GACxBvO,EAAUyO,SAAU,GACb,EAKT,MAHEzO,GAAU0N,YAAa,GAGlB,EAYT,QAASgB,GAAsCnnB,EAAIqjB,GASjD,IACE,GALAiD,GACAc,EALEC,EAAe,qEACjB1Z,KACA2Z,KACAC,GAAY,EAMRC,EAAOL,EAAsCM,OACjDD,IAASD,EACTC,EAAOA,EAAKC,OAEZ,GAAID,IAAS5Z,GAAqB4Z,IAASjgB,EAASoD,OAApD,CAkBA,GAbAyc,GACE1Y,IAAK,KACL3C,KAAM2Y,EACNrL,KAAM,KACNE,OAAQ,MAGNiO,EAAK3kB,KACPukB,EAAKrb,KAAOyb,EAAK3kB,MACPyjB,EAAQe,EAAatmB,KAAKymB,EAAKld,eACzC8c,EAAKrb,KAAOua,EAAM,IAGK,mBAAdc,GAAKrb,KACd,IACEqb,EAAKrb,KAAOua,EAAM3D,MAAM+E,UAAU,EAAGpB,EAAM3D,MAAMjN,QAAQ,MACzD,MAAOtX,IAGPkpB,EAAM,GAAKE,GACbD,GAAY,EAEZD,EAAM,GAAKE,IAAQ,EAGrB7Z,EAAM7L,KAAKslB,GAGT/D,GAGF1V,EAAMqX,OAAO,EAAG3B,EAGlB,IAAIjU,IACFvM,KAAM7C,EAAG6C,KACT3B,QAASlB,EAAGkB,QACZwN,IAAK8V,IACL7W,MAAOA,EAQT,OANA+X,GACEtW,EACApP,EAAG2nB,WAAa3nB,EAAG4nB,SACnB5nB,EAAGqZ,MAAQrZ,EAAG6nB,WACd7nB,EAAGkB,SAAWlB,EAAG8nB,aAEZ1Y,EAQT,QAASxB,GAAkB5N,EAAIqjB,GAC7B,GAAI1V,GAAQ,IACZ0V,GAAiB,MAATA,EAAgB,GAAKA,CAE7B,KAEE,GADA1V,EAAQyY,EAA+BpmB,GAErC,MAAO2N,GAET,MAAOvP,GACP,GAAImJ,EAASgC,MACX,KAAMnL,GAIV,IAEE,GADAuP,EAAQwZ,EAAsCnnB,EAAIqjB,EAAQ,GAExD,MAAO1V,GAET,MAAOvP,GACP,GAAImJ,EAASgC,MACX,KAAMnL,GAGV,OACEyE,KAAM7C,EAAG6C,KACT3B,QAASlB,EAAGkB,QACZwN,IAAK8V,KAOT,MAHA5W,GAAkB8X,oCAAsCA,EACxD9X,EAAkBwY,+BAAiCA;AAE5CxY,KAGTjQ,EAAOD,QAAU6J,IAEdtI,KAAKf,KAAuB,mBAAXF,QAAyBA,OAAyB,mBAATC,MAAuBA,KAAyB,mBAAXF,QAAyBA,aACxHwD,EAAI,IAAIod,IAAI,SAASvf,EAAQzB,EAAOD,GAevC,QAASgY,GAAQqS,EAAUC,GACzB,IAAK,GAAInpB,GAAI,EAAGA,EAAIkpB,EAAS7oB,SAAUL,EACrC,GAAIkpB,EAASlpB,KAAOmpB,EAAQ,MAAOnpB,EAErC,UAGF,QAASsF,GAAU6K,EAAKiZ,EAAUC,EAAQC,GACxC,MAAOjkB,MAAKC,UAAU6K,EAAKoZ,EAAWH,EAAUE,GAAgBD,GAIlE,QAASG,GAAernB,GACtB,GAAI2T,IAEFhH,MAAO3M,EAAM2M,MACbzM,QAASF,EAAME,QACf2B,KAAM7B,EAAM6B,KAGd,KAAK,GAAIhE,KAAKmC,GACRkN,OAAOpL,UAAUyR,eAAetV,KAAK+B,EAAOnC,KAC9C8V,EAAI9V,GAAKmC,EAAMnC,GAInB,OAAO8V,GAGT,QAASyT,GAAWH,EAAUE,GAC5B,GAAIxa,MACAQ,IAWJ,OATqB,OAAjBga,IACFA,EAAgB,SAASve,EAAK5I,GAC5B,MAAI2M,GAAM,KAAO3M,EACR,eAEF,eAAiBmN,EAAK9K,MAAM,EAAGqS,EAAQ/H,EAAO3M,IAAQof,KAAK,KAAO,MAItE,SAASxW,EAAK5I,GACnB,GAAI2M,EAAMzO,OAAS,EAAG,CACpB,GAAIopB,GAAU5S,EAAQ/H,EAAOzP,OAC5BoqB,EAAU3a,EAAMqX,OAAOsD,EAAU,GAAK3a,EAAM7L,KAAK5D,OACjDoqB,EAAUna,EAAK6W,OAAOsD,EAASC,EAAAA,EAAU3e,GAAOuE,EAAKrM,KAAK8H,IAEtD8L,EAAQ/H,EAAO3M,KAClBA,EAAQmnB,EAAclpB,KAAKf,KAAM0L,EAAK5I,QAGxC2M,GAAM7L,KAAKd,EAGb,OAAmB,OAAZinB,EACHjnB,YAAiBlC,OAAQupB,EAAernB,GAASA,EACjDinB,EAAShpB,KAAKf,KAAM0L,EAAK5I,IA5DjCtD,EAAUC,EAAOD,QAAUyG,EAC3BzG,EAAQ8qB,aAAeJ,OA+DjBxJ,IAAI,SAASxf,EAAQzB,EAAOD,GAwBlC,QAAS+qB,GAAQC,EAAGC,GAClB,GAAIC,IAAW,MAAJF,IAAmB,MAAJC,GACtBE,GAAOH,GAAK,KAAOC,GAAK,KAAOC,GAAO,GAC1C,OAAQC,IAAO,GAAa,MAAND,EAMxB,QAASE,GAAc/H,EAAKgI,GAC1B,MAAQhI,IAAOgI,EAAQhI,IAAS,GAAKgI,EAMvC,QAASC,GAAOC,EAAGtqB,EAAGujB,EAAGwG,EAAGlqB,EAAGH,GAC7B,MAAOoqB,GAAQK,EAAcL,EAAQA,EAAQ9pB,EAAGsqB,GAAIR,EAAQC,EAAGrqB,IAAKG,GAAI0jB,GAE1E,QAASgH,GAAMvqB,EAAGujB,EAAGjB,EAAGkI,EAAGT,EAAGlqB,EAAGH,GAC/B,MAAO2qB,GAAQ9G,EAAIjB,GAAOiB,EAAIiH,EAAIxqB,EAAGujB,EAAGwG,EAAGlqB,EAAGH,GAEhD,QAAS+qB,GAAMzqB,EAAGujB,EAAGjB,EAAGkI,EAAGT,EAAGlqB,EAAGH,GAC/B,MAAO2qB,GAAQ9G,EAAIiH,EAAMlI,GAAKkI,EAAIxqB,EAAGujB,EAAGwG,EAAGlqB,EAAGH,GAEhD,QAASgrB,GAAM1qB,EAAGujB,EAAGjB,EAAGkI,EAAGT,EAAGlqB,EAAGH,GAC/B,MAAO2qB,GAAO9G,EAAIjB,EAAIkI,EAAGxqB,EAAGujB,EAAGwG,EAAGlqB,EAAGH,GAEvC,QAASirB,GAAM3qB,EAAGujB,EAAGjB,EAAGkI,EAAGT,EAAGlqB,EAAGH,GAC/B,MAAO2qB,GAAO/H,GAAKiB,GAAKiH,GAAIxqB,EAAGujB,EAAGwG,EAAGlqB,EAAGH,GAM1C,QAASkrB,GAAQb,EAAGzI,GAElByI,EAAEzI,GAAO,IAAM,KAASA,EAAM,GAC9ByI,GAAKzI,EAAM,KAAQ,GAAM,GAAK,IAAMA,CAEpC,IAAIphB,GACA2qB,EACAC,EACAC,EACAC,EACAhrB,EAAI,WACJujB,aACAjB,cACAkI,EAAI,SAER,KAAKtqB,EAAI,EAAGA,EAAI6pB,EAAExpB,OAAQL,GAAK,GAC7B2qB,EAAO7qB,EACP8qB,EAAOvH,EACPwH,EAAOzI,EACP0I,EAAOR,EAEPxqB,EAAIuqB,EAAMvqB,EAAGujB,EAAGjB,EAAGkI,EAAGT,EAAE7pB,GAAI,cAC5BsqB,EAAID,EAAMC,EAAGxqB,EAAGujB,EAAGjB,EAAGyH,EAAE7pB,EAAI,GAAI,eAChCoiB,EAAIiI,EAAMjI,EAAGkI,EAAGxqB,EAAGujB,EAAGwG,EAAE7pB,EAAI,GAAI,GAAI,WACpCqjB,EAAIgH,EAAMhH,EAAGjB,EAAGkI,EAAGxqB,EAAG+pB,EAAE7pB,EAAI,GAAI,gBAChCF,EAAIuqB,EAAMvqB,EAAGujB,EAAGjB,EAAGkI,EAAGT,EAAE7pB,EAAI,GAAI,cAChCsqB,EAAID,EAAMC,EAAGxqB,EAAGujB,EAAGjB,EAAGyH,EAAE7pB,EAAI,GAAI,GAAI,YACpCoiB,EAAIiI,EAAMjI,EAAGkI,EAAGxqB,EAAGujB,EAAGwG,EAAE7pB,EAAI,GAAI,gBAChCqjB,EAAIgH,EAAMhH,EAAGjB,EAAGkI,EAAGxqB,EAAG+pB,EAAE7pB,EAAI,GAAI,cAChCF,EAAIuqB,EAAMvqB,EAAGujB,EAAGjB,EAAGkI,EAAGT,EAAE7pB,EAAI,GAAI,EAAG,YACnCsqB,EAAID,EAAMC,EAAGxqB,EAAGujB,EAAGjB,EAAGyH,EAAE7pB,EAAI,GAAI,gBAChCoiB,EAAIiI,EAAMjI,EAAGkI,EAAGxqB,EAAGujB,EAAGwG,EAAE7pB,EAAI,IAAK,WACjCqjB,EAAIgH,EAAMhH,EAAGjB,EAAGkI,EAAGxqB,EAAG+pB,EAAE7pB,EAAI,IAAK,gBACjCF,EAAIuqB,EAAMvqB,EAAGujB,EAAGjB,EAAGkI,EAAGT,EAAE7pB,EAAI,IAAK,EAAG,YACpCsqB,EAAID,EAAMC,EAAGxqB,EAAGujB,EAAGjB,EAAGyH,EAAE7pB,EAAI,IAAK,cACjCoiB,EAAIiI,EAAMjI,EAAGkI,EAAGxqB,EAAGujB,EAAGwG,EAAE7pB,EAAI,IAAK,gBACjCqjB,EAAIgH,EAAMhH,EAAGjB,EAAGkI,EAAGxqB,EAAG+pB,EAAE7pB,EAAI,IAAK,GAAI,YAErCF,EAAIyqB,EAAMzqB,EAAGujB,EAAGjB,EAAGkI,EAAGT,EAAE7pB,EAAI,GAAI,cAChCsqB,EAAIC,EAAMD,EAAGxqB,EAAGujB,EAAGjB,EAAGyH,EAAE7pB,EAAI,GAAI,eAChCoiB,EAAImI,EAAMnI,EAAGkI,EAAGxqB,EAAGujB,EAAGwG,EAAE7pB,EAAI,IAAK,GAAI,WACrCqjB,EAAIkH,EAAMlH,EAAGjB,EAAGkI,EAAGxqB,EAAG+pB,EAAE7pB,GAAI,eAC5BF,EAAIyqB,EAAMzqB,EAAGujB,EAAGjB,EAAGkI,EAAGT,EAAE7pB,EAAI,GAAI,cAChCsqB,EAAIC,EAAMD,EAAGxqB,EAAGujB,EAAGjB,EAAGyH,EAAE7pB,EAAI,IAAK,EAAG,UACpCoiB,EAAImI,EAAMnI,EAAGkI,EAAGxqB,EAAGujB,EAAGwG,EAAE7pB,EAAI,IAAK,eACjCqjB,EAAIkH,EAAMlH,EAAGjB,EAAGkI,EAAGxqB,EAAG+pB,EAAE7pB,EAAI,GAAI,eAChCF,EAAIyqB,EAAMzqB,EAAGujB,EAAGjB,EAAGkI,EAAGT,EAAE7pB,EAAI,GAAI,EAAG,WACnCsqB,EAAIC,EAAMD,EAAGxqB,EAAGujB,EAAGjB,EAAGyH,EAAE7pB,EAAI,IAAK,eACjCoiB,EAAImI,EAAMnI,EAAGkI,EAAGxqB,EAAGujB,EAAGwG,EAAE7pB,EAAI,GAAI,eAChCqjB,EAAIkH,EAAMlH,EAAGjB,EAAGkI,EAAGxqB,EAAG+pB,EAAE7pB,EAAI,GAAI,GAAI,YACpCF,EAAIyqB,EAAMzqB,EAAGujB,EAAGjB,EAAGkI,EAAGT,EAAE7pB,EAAI,IAAK,eACjCsqB,EAAIC,EAAMD,EAAGxqB,EAAGujB,EAAGjB,EAAGyH,EAAE7pB,EAAI,GAAI,aAChCoiB,EAAImI,EAAMnI,EAAGkI,EAAGxqB,EAAGujB,EAAGwG,EAAE7pB,EAAI,GAAI,GAAI,YACpCqjB,EAAIkH,EAAMlH,EAAGjB,EAAGkI,EAAGxqB,EAAG+pB,EAAE7pB,EAAI,IAAK,gBAEjCF,EAAI0qB,EAAM1qB,EAAGujB,EAAGjB,EAAGkI,EAAGT,EAAE7pB,EAAI,GAAI,WAChCsqB,EAAIE,EAAMF,EAAGxqB,EAAGujB,EAAGjB,EAAGyH,EAAE7pB,EAAI,GAAI,gBAChCoiB,EAAIoI,EAAMpI,EAAGkI,EAAGxqB,EAAGujB,EAAGwG,EAAE7pB,EAAI,IAAK,GAAI,YACrCqjB,EAAImH,EAAMnH,EAAGjB,EAAGkI,EAAGxqB,EAAG+pB,EAAE7pB,EAAI,IAAK,cACjCF,EAAI0qB,EAAM1qB,EAAGujB,EAAGjB,EAAGkI,EAAGT,EAAE7pB,EAAI,GAAI,eAChCsqB,EAAIE,EAAMF,EAAGxqB,EAAGujB,EAAGjB,EAAGyH,EAAE7pB,EAAI,GAAI,GAAI,YACpCoiB,EAAIoI,EAAMpI,EAAGkI,EAAGxqB,EAAGujB,EAAGwG,EAAE7pB,EAAI,GAAI,eAChCqjB,EAAImH,EAAMnH,EAAGjB,EAAGkI,EAAGxqB,EAAG+pB,EAAE7pB,EAAI,IAAK,gBACjCF,EAAI0qB,EAAM1qB,EAAGujB,EAAGjB,EAAGkI,EAAGT,EAAE7pB,EAAI,IAAK,EAAG,WACpCsqB,EAAIE,EAAMF,EAAGxqB,EAAGujB,EAAGjB,EAAGyH,EAAE7pB,GAAI,eAC5BoiB,EAAIoI,EAAMpI,EAAGkI,EAAGxqB,EAAGujB,EAAGwG,EAAE7pB,EAAI,GAAI,eAChCqjB,EAAImH,EAAMnH,EAAGjB,EAAGkI,EAAGxqB,EAAG+pB,EAAE7pB,EAAI,GAAI,GAAI,UACpCF,EAAI0qB,EAAM1qB,EAAGujB,EAAGjB,EAAGkI,EAAGT,EAAE7pB,EAAI,GAAI,cAChCsqB,EAAIE,EAAMF,EAAGxqB,EAAGujB,EAAGjB,EAAGyH,EAAE7pB,EAAI,IAAK,eACjCoiB,EAAIoI,EAAMpI,EAAGkI,EAAGxqB,EAAGujB,EAAGwG,EAAE7pB,EAAI,IAAK,GAAI,WACrCqjB,EAAImH,EAAMnH,EAAGjB,EAAGkI,EAAGxqB,EAAG+pB,EAAE7pB,EAAI,GAAI,eAEhCF,EAAI2qB,EAAM3qB,EAAGujB,EAAGjB,EAAGkI,EAAGT,EAAE7pB,GAAI,cAC5BsqB,EAAIG,EAAMH,EAAGxqB,EAAGujB,EAAGjB,EAAGyH,EAAE7pB,EAAI,GAAI,GAAI,YACpCoiB,EAAIqI,EAAMrI,EAAGkI,EAAGxqB,EAAGujB,EAAGwG,EAAE7pB,EAAI,IAAK,gBACjCqjB,EAAIoH,EAAMpH,EAAGjB,EAAGkI,EAAGxqB,EAAG+pB,EAAE7pB,EAAI,GAAI,cAChCF,EAAI2qB,EAAM3qB,EAAGujB,EAAGjB,EAAGkI,EAAGT,EAAE7pB,EAAI,IAAK,EAAG,YACpCsqB,EAAIG,EAAMH,EAAGxqB,EAAGujB,EAAGjB,EAAGyH,EAAE7pB,EAAI,GAAI,gBAChCoiB,EAAIqI,EAAMrI,EAAGkI,EAAGxqB,EAAGujB,EAAGwG,EAAE7pB,EAAI,IAAK,aACjCqjB,EAAIoH,EAAMpH,EAAGjB,EAAGkI,EAAGxqB,EAAG+pB,EAAE7pB,EAAI,GAAI,gBAChCF,EAAI2qB,EAAM3qB,EAAGujB,EAAGjB,EAAGkI,EAAGT,EAAE7pB,EAAI,GAAI,EAAG,YACnCsqB,EAAIG,EAAMH,EAAGxqB,EAAGujB,EAAGjB,EAAGyH,EAAE7pB,EAAI,IAAK,cACjCoiB,EAAIqI,EAAMrI,EAAGkI,EAAGxqB,EAAGujB,EAAGwG,EAAE7pB,EAAI,GAAI,gBAChCqjB,EAAIoH,EAAMpH,EAAGjB,EAAGkI,EAAGxqB,EAAG+pB,EAAE7pB,EAAI,IAAK,GAAI,YACrCF,EAAI2qB,EAAM3qB,EAAGujB,EAAGjB,EAAGkI,EAAGT,EAAE7pB,EAAI,GAAI,cAChCsqB,EAAIG,EAAMH,EAAGxqB,EAAGujB,EAAGjB,EAAGyH,EAAE7pB,EAAI,IAAK,gBACjCoiB,EAAIqI,EAAMrI,EAAGkI,EAAGxqB,EAAGujB,EAAGwG,EAAE7pB,EAAI,GAAI,GAAI,WACpCqjB,EAAIoH,EAAMpH,EAAGjB,EAAGkI,EAAGxqB,EAAG+pB,EAAE7pB,EAAI,GAAI,eAEhCF,EAAI8pB,EAAQ9pB,EAAG6qB,GACftH,EAAIuG,EAAQvG,EAAGuH,GACfxI,EAAIwH,EAAQxH,EAAGyI,GACfP,EAAIV,EAAQU,EAAGQ,EAEjB,QAAQhrB,EAAGujB,EAAGjB,EAAGkI,GAMnB,QAASS,GAAUjH,GACjB,GAAI9jB,GACAgkB,EAAS,GACTgH,EAA0B,GAAflH,EAAMzjB,MACrB,KAAKL,EAAI,EAAGA,EAAIgrB,EAAUhrB,GAAK,EAC7BgkB,GAAUC,OAAOgH,aAAcnH,EAAM9jB,GAAK,KAAQA,EAAI,GAAO,IAE/D,OAAOgkB,GAOT,QAASkH,GAAUpH,GACjB,GAAI9jB,GACAgkB,IAEJ,KADAA,GAAQF,EAAMzjB,QAAU,GAAK,GAAK8M,OAC7BnN,EAAI,EAAGA,EAAIgkB,EAAO3jB,OAAQL,GAAK,EAClCgkB,EAAOhkB,GAAK,CAEd,IAAImrB,GAAyB,EAAfrH,EAAMzjB,MACpB,KAAKL,EAAI,EAAGA,EAAImrB,EAASnrB,GAAK,EAC5BgkB,EAAOhkB,GAAK,KAAiC,IAA1B8jB,EAAMsH,WAAWprB,EAAI,KAAeA,EAAI,EAE7D,OAAOgkB,GAMT,QAASqH,GAAQ1rB,GACf,MAAOorB,GAAUL,EAAQQ,EAAUvrB,GAAe,EAAXA,EAAEU,SAM3C,QAASirB,GAAYvgB,EAAKnJ,GACxB,GAAI5B,GAIAwf,EAHA+L,EAAOL,EAAUngB,GACjBygB,KACAC,IAMJ,KAJAD,EAAK,IAAMC,EAAK,IAAMte,OAClBoe,EAAKlrB,OAAS,KAChBkrB,EAAOb,EAAQa,EAAmB,EAAbxgB,EAAI1K,SAEtBL,EAAI,EAAGA,EAAI,GAAIA,GAAK,EACvBwrB,EAAKxrB,GAAe,UAAVurB,EAAKvrB,GACfyrB,EAAKzrB,GAAe,WAAVurB,EAAKvrB,EAGjB,OADAwf,GAAOkL,EAAQc,EAAKrS,OAAO+R,EAAUtpB,IAAQ,IAAoB,EAAdA,EAAKvB,QACjD0qB,EAAUL,EAAQe,EAAKtS,OAAOqG,GAAO,MAM9C,QAASkM,GAAS5H,GAChB,GAEI+F,GACA7pB,EAHA2rB,EAAS,mBACT3H,EAAS,EAGb,KAAKhkB,EAAI,EAAGA,EAAI8jB,EAAMzjB,OAAQL,GAAK,EACjC6pB,EAAI/F,EAAMsH,WAAWprB,GACrBgkB,GAAU2H,EAAOC,OAAQ/B,IAAM,EAAK,IAAQ8B,EAAOC,OAAW,GAAJ/B,EAE5D,OAAO7F,GAMT,QAAS6H,GAAa/H,GACpB,MAAOgI,UAAS1Z,mBAAmB0R,IAMrC,QAASiI,GAAOpsB,GACd,MAAO0rB,GAAQQ,EAAalsB,IAE9B,QAASqsB,GAAOrsB,GACd,MAAO+rB,GAASK,EAAOpsB,IAEzB,QAASssB,GAAW3G,EAAGgF,GACrB,MAAOgB,GAAYO,EAAavG,GAAIuG,EAAavB,IAEnD,QAAS4B,GAAW5G,EAAGgF,GACrB,MAAOoB,GAASO,EAAW3G,EAAGgF,IAGhC,QAAS3hB,GAAIwjB,EAAQphB,EAAKqhB,GACxB,MAAKrhB,GAMAqhB,EAGEH,EAAWlhB,EAAKohB,GAFdD,EAAWnhB,EAAKohB,GANlBC,EAGEL,EAAOI,GAFLH,EAAOG,GAUpBrtB,EAAOD,QAAU8J,YAEN,EAAE,EAAE,EAAE,IAAI","file":"raven.min.js"} \ No newline at end of file +{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","angularPlugin","angular","RavenProvider","$get","$window","ExceptionHandlerProvider","$provide","decorator","exceptionHandler","R","$delegate","ex","cause","captureException","extra","moduleName","provider","config","setDataCallback","wrappedCallback","data","_normalizeData","angularPattern","exception","values","matches","exec","value","type","message","angularDocs","substr","addPlugin","7","8","2","consolePlugin","console","pluginOptions","logLevels","levels","push","callback","msg","captureMessage","level","pop","wrapConsoleMethod","wrapMethod","5","3","requirePlugin","wrap","deep","4","RavenConfigError","name","prototype","constructor","utils","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","safeJoin","logger","Function","apply","6","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","sanitizeKeys","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isErrorEvent","isDOMError","isDOMException","isError","isObject","isPlainObject","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","sanitize","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","dsn","options","_logDebug","globalOptions","key","setDSN","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","toString","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","context","func","undefined","_before","wrapped","_ignoreNextOnError","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","U","event","reason","unhandledPromiseRejection","C","_promiseRejectionHandler","bind","addEventListener","Q","removeEventListener","trimHeadFrames","error","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","V","currentOptions","exKeys","Object","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","M","setTimeout","_","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","aa","evtName","_keypressTimeout","target","category","ca","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","da","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","D","_originalFunctionToString","E","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","F","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","S","builtin","T","G","installer","concat","H","str","m","allowSecretKey","K","port","B","W","stackInfo","_triggerEvent","_processException","lineno","Y","frame","_normalizeFrame","in_app","ha","stackInfoUrl","normalized","filename","line","colno","column","function","ga","prefixedMessage","culprit","ia","request","Referer","breadcrumbs","_trimBreadcrumbs","ja","urlProp","urlProps","ka","httpData","userAgent","User-Agent","referrer","z","_backoffDuration","_backoffStart","na","oa","current","last","pa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Z","baseData","project","platform","_getHttpData","serverName","server_name","_sanitizeData","forEach","random","_sendProcessedPayload","qa","sa","ra","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","ta","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","onerror","open","setRequestHeader","send","ua","hash","evaluated","A","$","setUser","setReleaseContext","10","11","9","RavenConstructor","_Raven","noConflict","Client","what","supportsErrorEvent","ErrorEvent","supportsDOMError","DOMError","supportsDOMException","DOMException","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","sanitizeMask","safeInput","o_O","getLocationHref","getLocationOrigin","origin","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","responseText","sourceMaps","sourceMapAddress","charAt","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","y","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","string","raw"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file diff --git a/dist/angular,console,vue/raven.js b/dist/angular,console,vue/raven.js index 2230f37a1d7b..09f437679926 100644 --- a/dist/angular,console,vue/raven.js +++ b/dist/angular,console,vue/raven.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.24.2 (540f32b) | github.com/getsentry/raven-js */ +/*! Raven.js 3.25.0 (80dffad) | github.com/getsentry/raven-js */ /* * Includes TraceKit @@ -236,10 +236,12 @@ var md5 = _dereq_(11); var RavenConfigError = _dereq_(4); var utils = _dereq_(8); +var isErrorEvent = utils.isErrorEvent; +var isDOMError = utils.isDOMError; +var isDOMException = utils.isDOMException; var isError = utils.isError; var isObject = utils.isObject; var isPlainObject = utils.isPlainObject; -var isErrorEvent = utils.isErrorEvent; var isUndefined = utils.isUndefined; var isFunction = utils.isFunction; var isString = utils.isString; @@ -367,7 +369,7 @@ Raven.prototype = { // webpack (using a build step causes webpack #1617). Grunt verifies that // this value matches package.json during build. // See: https://github.com/getsentry/raven-js/issues/465 - VERSION: '3.24.2', + VERSION: '3.25.0', debug: false, @@ -699,6 +701,23 @@ Raven.prototype = { if (isErrorEvent(ex) && ex.error) { // If it is an ErrorEvent with `error` property, extract it to get actual Error ex = ex.error; + } else if (isDOMError(ex) || isDOMException(ex)) { + // If it is a DOMError or DOMException (which are legacy APIs, but still supported in some browsers) + // then we just extract the name and message, as they don't provide anything else + // https://developer.mozilla.org/en-US/docs/Web/API/DOMError + // https://developer.mozilla.org/en-US/docs/Web/API/DOMException + var name = ex.name || (isDOMError(ex) ? 'DOMError' : 'DOMException'); + var message = ex.message ? name + ': ' + ex.message : name; + + return this.captureMessage( + message, + objectMerge(options, { + // neither DOMError or DOMException provide stack trace and we most likely wont get it this way as well + // but it's barely any overhead so we may at least try + stacktrace: true, + trimHeadFrames: options.trimHeadFrames + 1 + }) + ); } else if (isError(ex)) { // we have a real Error object ex = ex; @@ -710,6 +729,7 @@ Raven.prototype = { ex = new Error(options.message); } else { // If none of previous checks were valid, then it means that + // it's not a DOMError/DOMException // it's not a plain Object // it's not a valid ErrorEvent (one with an error property) // it's not an Error @@ -2482,7 +2502,7 @@ function isObject(what) { // Yanked from https://git.io/vS8DV re-used under CC0 // with some tiny modifications function isError(value) { - switch ({}.toString.call(value)) { + switch (Object.prototype.toString.call(value)) { case '[object Error]': return true; case '[object Exception]': @@ -2495,7 +2515,15 @@ function isError(value) { } function isErrorEvent(value) { - return supportsErrorEvent() && {}.toString.call(value) === '[object ErrorEvent]'; + return Object.prototype.toString.call(value) === '[object ErrorEvent]'; +} + +function isDOMError(value) { + return Object.prototype.toString.call(value) === '[object DOMError]'; +} + +function isDOMException(value) { + return Object.prototype.toString.call(value) === '[object DOMException]'; } function isUndefined(what) { @@ -2538,6 +2566,24 @@ function supportsErrorEvent() { } } +function supportsDOMError() { + try { + new DOMError(''); // eslint-disable-line no-new + return true; + } catch (e) { + return false; + } +} + +function supportsDOMException() { + try { + new DOMException(''); // eslint-disable-line no-new + return true; + } catch (e) { + return false; + } +} + function supportsFetch() { if (!('fetch' in _window)) return false; @@ -3053,6 +3099,8 @@ module.exports = { isObject: isObject, isError: isError, isErrorEvent: isErrorEvent, + isDOMError: isDOMError, + isDOMException: isDOMException, isUndefined: isUndefined, isFunction: isFunction, isPlainObject: isPlainObject, @@ -3060,6 +3108,8 @@ module.exports = { isArray: isArray, isEmptyObject: isEmptyObject, supportsErrorEvent: supportsErrorEvent, + supportsDOMError: supportsDOMError, + supportsDOMException: supportsDOMException, supportsFetch: supportsFetch, supportsReferrerPolicy: supportsReferrerPolicy, supportsPromiseRejectionEvent: supportsPromiseRejectionEvent, @@ -3119,10 +3169,14 @@ var ERROR_TYPES_RE = /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Ran function getLocationHref() { if (typeof document === 'undefined' || document.location == null) return ''; - return document.location.href; } +function getLocationOrigin() { + if (typeof document === 'undefined' || document.location == null) return ''; + return document.location.origin; +} + /** * TraceKit.report: cross-browser processing of unhandled exceptions * @@ -3530,6 +3584,44 @@ TraceKit.computeStackTrace = (function computeStackTraceWrapper() { element.func = UNKNOWN_FUNCTION; } + if (element.url && element.url.substr(0, 5) === 'blob:') { + // Special case for handling JavaScript loaded into a blob. + // We use a synchronous AJAX request here as a blob is already in + // memory - it's not making a network request. This will generate a warning + // in the browser console, but there has already been an error so that's not + // that much of an issue. + var xhr = new XMLHttpRequest(); + xhr.open('GET', element.url, false); + xhr.send(null); + + // If we failed to download the source, skip this patch + if (xhr.status === 200) { + var source = xhr.responseText || ''; + + // We trim the source down to the last 300 characters as sourceMappingURL is always at the end of the file. + // Why 300? To be in line with: https://github.com/getsentry/sentry/blob/4af29e8f2350e20c28a6933354e4f42437b4ba42/src/sentry/lang/javascript/processor.py#L164-L175 + source = source.slice(-300); + + // Now we dig out the source map URL + var sourceMaps = source.match(/\/\/# sourceMappingURL=(.*)$/); + + // If we don't find a source map comment or we find more than one, continue on to the next element. + if (sourceMaps) { + var sourceMapAddress = sourceMaps[1]; + + // Now we check to see if it's a relative URL. + // If it is, convert it to an absolute one. + if (sourceMapAddress.charAt(0) === '~') { + sourceMapAddress = getLocationOrigin() + sourceMapAddress.slice(1); + } + + // Now we strip the '.map' off of the end of the URL and update the + // element so that Sentry can match the map to the blob. + element.url = sourceMapAddress.slice(0, -4); + } + } + } + stack.push(element); } diff --git a/dist/angular,console,vue/raven.min.js b/dist/angular,console,vue/raven.min.js index f01a363d0c99..41b69151910c 100644 --- a/dist/angular,console,vue/raven.min.js +++ b/dist/angular,console,vue/raven.min.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.24.2 (540f32b) | github.com/getsentry/raven-js */ -!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.Raven=a()}}(function(){return function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};b[g][0].call(k.exports,function(a){var c=b[g][1][a];return e(c?c:a)},k,k.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;g":"anonymous component")+(a._isVue&&a.$options.__file?" at "+a.$options.__file:"")}function e(a,b){if(b=b||window.Vue,b&&b.config){var c=b.config.errorHandler;b.config.errorHandler=function(b,e,f){var g={};"[object Object]"===Object.prototype.toString.call(e)&&(g.componentName=d(e),g.propsData=e.$options.propsData),"undefined"!=typeof f&&(g.lifecycleHook=f),a.captureException(b,{extra:g}),"function"==typeof c&&c.call(this,b,e,f)}}}b.exports=e,a(7).addPlugin(b.exports)},{7:7}],4:[function(a,b,c){function d(a){this.name="RavenConfigError",this.message=a}d.prototype=new Error,d.prototype.constructor=d,b.exports=d},{}],5:[function(a,b,c){var d=a(8),e=function(a,b,c){var e=a[b],f=a;if(b in a){var g="warn"===b?"warning":b;a[b]=function(){var a=[].slice.call(arguments),h=d.safeJoin(a," "),i={level:g,logger:"console",extra:{arguments:a}};"assert"===b?a[0]===!1&&(h="Assertion failed: "+(d.safeJoin(a.slice(1)," ")||"console.assert"),i.extra.arguments=a.slice(1),c&&c(h,i)):c&&c(h,i),e&&Function.prototype.apply.call(e,f,a)}}};b.exports={wrapMethod:e}},{8:8}],6:[function(a,b,c){(function(c){function d(){return+new Date}function e(a,b){return q(b)?function(c){return b(c,a)}:b}function f(){this.b=!("object"!=typeof JSON||!JSON.stringify),this.c=!p(Q),this.d=!p(R),this.e=null,this.f=null,this.g=null,this.h=null,this.i=null,this.j=null,this.k={},this.l={release:P.SENTRY_RELEASE&&P.SENTRY_RELEASE.id,logger:"javascript",ignoreErrors:[],ignoreUrls:[],whitelistUrls:[],includePaths:[],headers:null,collectWindowErrors:!0,captureUnhandledRejections:!0,maxMessageLength:0,maxUrlLength:250,stackTraceLimit:50,autoBreadcrumbs:!0,instrument:!0,sampleRate:1,sanitizeKeys:[]},this.m={method:"POST",keepalive:!0,referrerPolicy:I()?"origin":""},this.n=0,this.o=!1,this.p=Error.stackTraceLimit,this.q=P.console||{},this.r={},this.s=[],this.t=d(),this.u=[],this.v=[],this.w=null,this.x=P.location,this.y=this.x&&this.x.href,this.z();for(var a in this.q)this.r[a]=this.q[a]}var g=a(9),h=a(10),i=a(11),j=a(4),k=a(8),l=k.isError,m=k.isObject,n=k.isPlainObject,o=k.isErrorEvent,p=k.isUndefined,q=k.isFunction,r=k.isString,s=k.isArray,t=k.isEmptyObject,u=k.each,v=k.objectMerge,w=k.truncate,x=k.objectFrozen,y=k.hasKey,z=k.joinRegExp,A=k.urlencode,B=k.uuid4,C=k.htmlTreeAsString,D=k.isSameException,E=k.isSameStacktrace,F=k.parseUrl,G=k.fill,H=k.supportsFetch,I=k.supportsReferrerPolicy,J=k.serializeKeysForMessage,K=k.serializeException,L=k.sanitize,M=a(5).wrapMethod,N="source protocol user pass host port path".split(" "),O=/^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/,P="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},Q=P.document,R=P.navigator;f.prototype={VERSION:"3.24.2",debug:!1,TraceKit:g,config:function(a,b){var c=this;if(c.h)return this.A("error","Error: Raven has already been configured"),c;if(!a)return c;var d=c.l;b&&u(b,function(a,b){"tags"===a||"extra"===a||"user"===a?c.k[a]=b:d[a]=b}),c.setDSN(a),d.ignoreErrors.push(/^Script error\.?$/),d.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/),d.ignoreErrors=z(d.ignoreErrors),d.ignoreUrls=!!d.ignoreUrls.length&&z(d.ignoreUrls),d.whitelistUrls=!!d.whitelistUrls.length&&z(d.whitelistUrls),d.includePaths=z(d.includePaths),d.maxBreadcrumbs=Math.max(0,Math.min(d.maxBreadcrumbs||100,100));var e={xhr:!0,console:!0,dom:!0,location:!0,sentry:!0},f=d.autoBreadcrumbs;"[object Object]"==={}.toString.call(f)?f=v(e,f):f!==!1&&(f=e),d.autoBreadcrumbs=f;var h={tryCatch:!0},i=d.instrument;return"[object Object]"==={}.toString.call(i)?i=v(h,i):i!==!1&&(i=h),d.instrument=i,g.collectWindowErrors=!!d.collectWindowErrors,c},install:function(){var a=this;return a.isSetup()&&!a.o&&(g.report.subscribe(function(){a.B.apply(a,arguments)}),a.l.captureUnhandledRejections&&a.C(),a.D(),a.l.instrument&&a.l.instrument.tryCatch&&a.E(),a.l.autoBreadcrumbs&&a.F(),a.G(),a.o=!0),Error.stackTraceLimit=a.l.stackTraceLimit,this},setDSN:function(a){var b=this,c=b.H(a),d=c.path.lastIndexOf("/"),e=c.path.substr(1,d);b.I=a,b.i=c.user,b.J=c.pass&&c.pass.substr(1),b.j=c.path.substr(d+1),b.h=b.K(c),b.L=b.h+"/"+e+"api/"+b.j+"/store/",this.z()},context:function(a,b,c){return q(a)&&(c=b||[],b=a,a=void 0),this.wrap(a,b).apply(this,c)},wrap:function(a,b,c){function d(){var d=[],f=arguments.length,g=!a||a&&a.deep!==!1;for(c&&q(c)&&c.apply(this,arguments);f--;)d[f]=g?e.wrap(a,arguments[f]):arguments[f];try{return b.apply(this,d)}catch(h){throw e.M(),e.captureException(h,a),h}}var e=this;if(p(b)&&!q(a))return a;if(q(a)&&(b=a,a=void 0),!q(b))return b;try{if(b.N)return b;if(b.O)return b.O}catch(f){return b}for(var g in b)y(b,g)&&(d[g]=b[g]);return d.prototype=b.prototype,b.O=d,d.N=!0,d.P=b,d},uninstall:function(){return g.report.uninstall(),this.Q(),this.R(),this.S(),this.T(),Error.stackTraceLimit=this.p,this.o=!1,this},U:function(a){this.A("debug","Raven caught unhandled promise rejection:",a),this.captureException(a.reason,{extra:{unhandledPromiseRejection:!0}})},C:function(){return this.U=this.U.bind(this),P.addEventListener&&P.addEventListener("unhandledrejection",this.U),this},Q:function(){return P.removeEventListener&&P.removeEventListener("unhandledrejection",this.U),this},captureException:function(a,b){if(b=v({trimHeadFrames:0},b?b:{}),o(a)&&a.error)a=a.error;else if(l(a))a=a;else{if(!n(a))return this.captureMessage(a,v(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}));b=this.V(b,a),a=new Error(b.message)}this.e=a;try{var c=g.computeStackTrace(a);this.W(c,b)}catch(d){if(a!==d)throw d}return this},V:function(a,b){var c=Object.keys(b).sort(),d=v(a,{message:"Non-Error exception captured with keys: "+J(c),fingerprint:[i(c)],extra:a.extra||{}});return d.extra.X=K(b),d},captureMessage:function(a,b){if(!this.l.ignoreErrors.test||!this.l.ignoreErrors.test(a)){b=b||{},a+="";var c,d=v({message:a},b);try{throw new Error(a)}catch(e){c=e}c.name=null;var f=g.computeStackTrace(c),h=s(f.stack)&&f.stack[1];h&&"Raven.captureException"===h.func&&(h=f.stack[2]);var i=h&&h.url||"";if((!this.l.ignoreUrls.test||!this.l.ignoreUrls.test(i))&&(!this.l.whitelistUrls.test||this.l.whitelistUrls.test(i))){if(this.l.stacktrace||b&&b.stacktrace){d.fingerprint=null==d.fingerprint?a:d.fingerprint,b=v({trimHeadFrames:0},b),b.trimHeadFrames+=1;var j=this.Y(f,b);d.stacktrace={frames:j.reverse()}}return d.fingerprint&&(d.fingerprint=s(d.fingerprint)?d.fingerprint:[d.fingerprint]),this.Z(d),this}}},captureBreadcrumb:function(a){var b=v({timestamp:d()/1e3},a);if(q(this.l.breadcrumbCallback)){var c=this.l.breadcrumbCallback(b);if(m(c)&&!t(c))b=c;else if(c===!1)return this}return this.v.push(b),this.v.length>this.l.maxBreadcrumbs&&this.v.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.s.push([a,b]),this.o&&this.G(),this},setUserContext:function(a){return this.k.user=a,this},setExtraContext:function(a){return this.$("extra",a),this},setTagsContext:function(a){return this.$("tags",a),this},clearContext:function(){return this.k={},this},getContext:function(){return JSON.parse(h(this.k))},setEnvironment:function(a){return this.l.environment=a,this},setRelease:function(a){return this.l.release=a,this},setDataCallback:function(a){var b=this.l.dataCallback;return this.l.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.l.breadcrumbCallback;return this.l.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.l.shouldSendCallback;return this.l.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.l.transport=a,this},lastException:function(){return this.e},lastEventId:function(){return this.g},isSetup:function(){return!!this.b&&(!!this.h||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.A("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=P.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(Q){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.I;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.k.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.K(this.H(c)),h=Q.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(Q.head||Q.body).appendChild(h)}},M:function(){var a=this;this.n+=1,setTimeout(function(){a.n-=1})},_:function(a,b){var c,d;if(this.c){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),Q.createEvent?(c=Q.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=Q.createEventObject(),c.eventType=a);for(d in b)y(b,d)&&(c[d]=b[d]);if(Q.createEvent)Q.dispatchEvent(c);else try{Q.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},aa:function(a){var b=this;return function(c){if(b.ba=null,b.w!==c){b.w=c;var d;try{d=C(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ca:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.ba;g||a.aa("input")(c),clearTimeout(g),a.ba=setTimeout(function(){a.ba=null},b)}}},da:function(a,b){var c=F(this.x.href),d=F(b),e=F(a);this.y=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},D:function(){var a=this;a.ea=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.N?a.ea.apply(this.P,arguments):a.ea.apply(this,arguments)}},R:function(){this.ea&&(Function.prototype.toString=this.ea)},E:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.da(b.y,c+""),a.apply(this,arguments)}};G(history,"pushState",j,d),G(history,"replaceState",j,d)}if(c.console&&"console"in P&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};u(["debug","info","warn","error","log"],function(a,b){M(console,b,k)})}},S:function(){for(var a;this.u.length;){a=this.u.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},T:function(){for(var a in this.r)this.q[a]=this.r[a]},G:function(){var a=this;u(this.s,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},H:function(a){var b=O.exec(a),c={},d=7;try{for(;d--;)c[N[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.l.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},K:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},B:function(){this.n||this.W.apply(this,arguments)},W:function(a,b){var c=this.Y(a,b);this._("handle",{stackInfo:a,options:b}),this.ga(a.name,a.message,a.url,a.lineno,c,b)},Y:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(u(a.stack,function(b,e){var f=c.ha(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.v,0)}),this.k.user&&(a.user=this.k.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),a=this.qa(a),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||t(a[b]))&&delete a[b]}),q(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!t(a)&&(!q(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.na()?void this.A("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function B(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&j(b))for(c=b.split(/\s+/),f=0;fc?M(a,b-1):d}function N(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?T:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function O(a,b){function c(a){return k(a)?a.map(function(a){return c(a)}):i(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!k(b)||k(b)&&0===b.length)return a;var d,e=w(b),f="********";try{d=JSON.parse(P(a))}catch(g){return a}return c(d)}var P=a(10),Q="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},R=3,S=51200,T=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isUndefined:g,isFunction:h,isPlainObject:i,isString:j,isArray:k,isEmptyObject:l,supportsErrorEvent:m,supportsFetch:n,supportsReferrerPolicy:o,supportsPromiseRejectionEvent:p,wrappedCallback:q,each:r,objectMerge:s,truncate:u,objectFrozen:t,hasKey:v,joinRegExp:w,urlencode:x,uuid4:z,htmlTreeAsString:A,htmlElementAsString:B,isSameException:E,isSameStacktrace:F,parseUrl:y,fill:G,safeJoin:H,serializeException:M,serializeKeysForMessage:N,sanitize:O}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{10:10}],9:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}var e=a(8),f={collectWindowErrors:!0,debug:!1},g="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},h=[].slice,i="?",j=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;f.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function k(a,b){var c=null;if(!b||f.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(h.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,g,h){var l=null,m=e.isErrorEvent(h)?h.error:h,n=e.isErrorEvent(a)?a.message:a;if(v)f.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&e.isError(m))l=f.computeStackTrace(m),k(l,!0);else{var p,r={url:b,line:c,column:g},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(j);p&&(s=p[1],n=p[2])}r.func=i,l={name:s,message:n,url:d(),stack:[r]},k(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=g.onerror,g.onerror=l,r=!0)}function n(){r&&(g.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,k.apply(null,[a,!1].concat(b))}function p(a,b){var c=h.call(arguments,1);if(v){if(u===a)return;o()}var d=f.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),f.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,e,f=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,g=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,h=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,j=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,k=/\((\S*)(?::(\d+))(?::(\d+))\)/,l=a.stack.split("\n"),m=[],n=(/^(.*) is undefined$/.exec(a.message),0),o=l.length;n eval")>-1;q&&(b=j.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==n||c[5]||"undefined"==typeof a.columnNumber||(m[0].column=a.columnNumber+1),e={url:c[3],func:c[1]||i,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}!e.func&&e.line&&(e.func=i),m.push(e)}return m.length?{name:a.name,message:a.message,url:d(),stack:m}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=i),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,g){for(var h,j,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==e&&o!==f.report){if(j={url:null,func:i,line:null,column:null},o.name?j.func=o.name:(h=k.exec(o.toString()))&&(j.func=h[1]),"undefined"==typeof j.func)try{j.func=h.input.substring(0,h.input.indexOf("{")); -}catch(p){}m[""+o]?n=!0:m[""+o]=!0,l.push(j)}g&&l.splice(0,g);var q={name:a.name,message:a.message,url:d(),stack:l};return b(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),q}function e(b,e){var g=null;e=null==e?0:+e;try{if(g=a(b))return g}catch(h){if(f.debug)throw h}try{if(g=c(b,e+1))return g}catch(h){if(f.debug)throw h}return{name:b.name,message:b.message,url:d()}}return e.augmentStackTraceWithInitialElement=b,e.computeStackTraceFromStackProp=a,e}(),b.exports=f}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{8:8}],10:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}],11:[function(a,b,c){function d(a,b){var c=(65535&a)+(65535&b),d=(a>>16)+(b>>16)+(c>>16);return d<<16|65535&c}function e(a,b){return a<>>32-b}function f(a,b,c,f,g,h){return d(e(d(d(b,a),d(f,h)),g),c)}function g(a,b,c,d,e,g,h){return f(b&c|~b&d,a,b,e,g,h)}function h(a,b,c,d,e,g,h){return f(b&d|c&~d,a,b,e,g,h)}function i(a,b,c,d,e,g,h){return f(b^c^d,a,b,e,g,h)}function j(a,b,c,d,e,g,h){return f(c^(b|~d),a,b,e,g,h)}function k(a,b){a[b>>5]|=128<>>9<<4)+14]=b;var c,e,f,k,l,m=1732584193,n=-271733879,o=-1732584194,p=271733878;for(c=0;c>5]>>>b%32&255);return c}function m(a){var b,c=[];for(c[(a.length>>2)-1]=void 0,b=0;b>5]|=(255&a.charCodeAt(b/8))<16&&(e=k(e,8*a.length)),c=0;c<16;c+=1)f[c]=909522486^e[c],g[c]=1549556828^e[c];return d=k(f.concat(m(b)),512+8*b.length),l(k(g.concat(d),640))}function p(a){var b,c,d="0123456789abcdef",e="";for(c=0;c>>4&15)+d.charAt(15&b);return e}function q(a){return unescape(encodeURIComponent(a))}function r(a){return n(q(a))}function s(a){return p(r(a))}function t(a,b){return o(q(a),q(b))}function u(a,b){return p(t(a,b))}function v(a,b,c){return b?c?t(b,a):u(b,a):c?r(a):s(a)}b.exports=v},{}]},{},[7,1,2,3])(7)}); +/*! Raven.js 3.25.0 (80dffad) | github.com/getsentry/raven-js */ +!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.Raven=a()}}(function(){return function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};b[g][0].call(k.exports,function(a){var c=b[g][1][a];return e(c?c:a)},k,k.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;g":"anonymous component")+(a._isVue&&a.$options.__file?" at "+a.$options.__file:"")}function e(a,b){if(b=b||window.Vue,b&&b.config){var c=b.config.errorHandler;b.config.errorHandler=function(b,e,f){var g={};"[object Object]"===Object.prototype.toString.call(e)&&(g.componentName=d(e),g.propsData=e.$options.propsData),"undefined"!=typeof f&&(g.lifecycleHook=f),a.captureException(b,{extra:g}),"function"==typeof c&&c.call(this,b,e,f)}}}b.exports=e,a(7).addPlugin(b.exports)},{7:7}],4:[function(a,b,c){function d(a){this.name="RavenConfigError",this.message=a}d.prototype=new Error,d.prototype.constructor=d,b.exports=d},{}],5:[function(a,b,c){var d=a(8),e=function(a,b,c){var e=a[b],f=a;if(b in a){var g="warn"===b?"warning":b;a[b]=function(){var a=[].slice.call(arguments),h=d.safeJoin(a," "),i={level:g,logger:"console",extra:{arguments:a}};"assert"===b?a[0]===!1&&(h="Assertion failed: "+(d.safeJoin(a.slice(1)," ")||"console.assert"),i.extra.arguments=a.slice(1),c&&c(h,i)):c&&c(h,i),e&&Function.prototype.apply.call(e,f,a)}}};b.exports={wrapMethod:e}},{8:8}],6:[function(a,b,c){(function(c){function d(){return+new Date}function e(a,b){return s(b)?function(c){return b(c,a)}:b}function f(){this.b=!("object"!=typeof JSON||!JSON.stringify),this.c=!r(S),this.d=!r(T),this.e=null,this.f=null,this.g=null,this.h=null,this.i=null,this.j=null,this.k={},this.l={release:R.SENTRY_RELEASE&&R.SENTRY_RELEASE.id,logger:"javascript",ignoreErrors:[],ignoreUrls:[],whitelistUrls:[],includePaths:[],headers:null,collectWindowErrors:!0,captureUnhandledRejections:!0,maxMessageLength:0,maxUrlLength:250,stackTraceLimit:50,autoBreadcrumbs:!0,instrument:!0,sampleRate:1,sanitizeKeys:[]},this.m={method:"POST",keepalive:!0,referrerPolicy:K()?"origin":""},this.n=0,this.o=!1,this.p=Error.stackTraceLimit,this.q=R.console||{},this.r={},this.s=[],this.t=d(),this.u=[],this.v=[],this.w=null,this.x=R.location,this.y=this.x&&this.x.href,this.z();for(var a in this.q)this.r[a]=this.q[a]}var g=a(9),h=a(10),i=a(11),j=a(4),k=a(8),l=k.isErrorEvent,m=k.isDOMError,n=k.isDOMException,o=k.isError,p=k.isObject,q=k.isPlainObject,r=k.isUndefined,s=k.isFunction,t=k.isString,u=k.isArray,v=k.isEmptyObject,w=k.each,x=k.objectMerge,y=k.truncate,z=k.objectFrozen,A=k.hasKey,B=k.joinRegExp,C=k.urlencode,D=k.uuid4,E=k.htmlTreeAsString,F=k.isSameException,G=k.isSameStacktrace,H=k.parseUrl,I=k.fill,J=k.supportsFetch,K=k.supportsReferrerPolicy,L=k.serializeKeysForMessage,M=k.serializeException,N=k.sanitize,O=a(5).wrapMethod,P="source protocol user pass host port path".split(" "),Q=/^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/,R="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},S=R.document,T=R.navigator;f.prototype={VERSION:"3.25.0",debug:!1,TraceKit:g,config:function(a,b){var c=this;if(c.h)return this.A("error","Error: Raven has already been configured"),c;if(!a)return c;var d=c.l;b&&w(b,function(a,b){"tags"===a||"extra"===a||"user"===a?c.k[a]=b:d[a]=b}),c.setDSN(a),d.ignoreErrors.push(/^Script error\.?$/),d.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/),d.ignoreErrors=B(d.ignoreErrors),d.ignoreUrls=!!d.ignoreUrls.length&&B(d.ignoreUrls),d.whitelistUrls=!!d.whitelistUrls.length&&B(d.whitelistUrls),d.includePaths=B(d.includePaths),d.maxBreadcrumbs=Math.max(0,Math.min(d.maxBreadcrumbs||100,100));var e={xhr:!0,console:!0,dom:!0,location:!0,sentry:!0},f=d.autoBreadcrumbs;"[object Object]"==={}.toString.call(f)?f=x(e,f):f!==!1&&(f=e),d.autoBreadcrumbs=f;var h={tryCatch:!0},i=d.instrument;return"[object Object]"==={}.toString.call(i)?i=x(h,i):i!==!1&&(i=h),d.instrument=i,g.collectWindowErrors=!!d.collectWindowErrors,c},install:function(){var a=this;return a.isSetup()&&!a.o&&(g.report.subscribe(function(){a.B.apply(a,arguments)}),a.l.captureUnhandledRejections&&a.C(),a.D(),a.l.instrument&&a.l.instrument.tryCatch&&a.E(),a.l.autoBreadcrumbs&&a.F(),a.G(),a.o=!0),Error.stackTraceLimit=a.l.stackTraceLimit,this},setDSN:function(a){var b=this,c=b.H(a),d=c.path.lastIndexOf("/"),e=c.path.substr(1,d);b.I=a,b.i=c.user,b.J=c.pass&&c.pass.substr(1),b.j=c.path.substr(d+1),b.h=b.K(c),b.L=b.h+"/"+e+"api/"+b.j+"/store/",this.z()},context:function(a,b,c){return s(a)&&(c=b||[],b=a,a=void 0),this.wrap(a,b).apply(this,c)},wrap:function(a,b,c){function d(){var d=[],f=arguments.length,g=!a||a&&a.deep!==!1;for(c&&s(c)&&c.apply(this,arguments);f--;)d[f]=g?e.wrap(a,arguments[f]):arguments[f];try{return b.apply(this,d)}catch(h){throw e.M(),e.captureException(h,a),h}}var e=this;if(r(b)&&!s(a))return a;if(s(a)&&(b=a,a=void 0),!s(b))return b;try{if(b.N)return b;if(b.O)return b.O}catch(f){return b}for(var g in b)A(b,g)&&(d[g]=b[g]);return d.prototype=b.prototype,b.O=d,d.N=!0,d.P=b,d},uninstall:function(){return g.report.uninstall(),this.Q(),this.R(),this.S(),this.T(),Error.stackTraceLimit=this.p,this.o=!1,this},U:function(a){this.A("debug","Raven caught unhandled promise rejection:",a),this.captureException(a.reason,{extra:{unhandledPromiseRejection:!0}})},C:function(){return this.U=this.U.bind(this),R.addEventListener&&R.addEventListener("unhandledrejection",this.U),this},Q:function(){return R.removeEventListener&&R.removeEventListener("unhandledrejection",this.U),this},captureException:function(a,b){if(b=x({trimHeadFrames:0},b?b:{}),l(a)&&a.error)a=a.error;else{if(m(a)||n(a)){var c=a.name||(m(a)?"DOMError":"DOMException"),d=a.message?c+": "+a.message:c;return this.captureMessage(d,x(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}))}if(o(a))a=a;else{if(!q(a))return this.captureMessage(a,x(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}));b=this.V(b,a),a=new Error(b.message)}}this.e=a;try{var e=g.computeStackTrace(a);this.W(e,b)}catch(f){if(a!==f)throw f}return this},V:function(a,b){var c=Object.keys(b).sort(),d=x(a,{message:"Non-Error exception captured with keys: "+L(c),fingerprint:[i(c)],extra:a.extra||{}});return d.extra.X=M(b),d},captureMessage:function(a,b){if(!this.l.ignoreErrors.test||!this.l.ignoreErrors.test(a)){b=b||{},a+="";var c,d=x({message:a},b);try{throw new Error(a)}catch(e){c=e}c.name=null;var f=g.computeStackTrace(c),h=u(f.stack)&&f.stack[1];h&&"Raven.captureException"===h.func&&(h=f.stack[2]);var i=h&&h.url||"";if((!this.l.ignoreUrls.test||!this.l.ignoreUrls.test(i))&&(!this.l.whitelistUrls.test||this.l.whitelistUrls.test(i))){if(this.l.stacktrace||b&&b.stacktrace){d.fingerprint=null==d.fingerprint?a:d.fingerprint,b=x({trimHeadFrames:0},b),b.trimHeadFrames+=1;var j=this.Y(f,b);d.stacktrace={frames:j.reverse()}}return d.fingerprint&&(d.fingerprint=u(d.fingerprint)?d.fingerprint:[d.fingerprint]),this.Z(d),this}}},captureBreadcrumb:function(a){var b=x({timestamp:d()/1e3},a);if(s(this.l.breadcrumbCallback)){var c=this.l.breadcrumbCallback(b);if(p(c)&&!v(c))b=c;else if(c===!1)return this}return this.v.push(b),this.v.length>this.l.maxBreadcrumbs&&this.v.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.s.push([a,b]),this.o&&this.G(),this},setUserContext:function(a){return this.k.user=a,this},setExtraContext:function(a){return this.$("extra",a),this},setTagsContext:function(a){return this.$("tags",a),this},clearContext:function(){return this.k={},this},getContext:function(){return JSON.parse(h(this.k))},setEnvironment:function(a){return this.l.environment=a,this},setRelease:function(a){return this.l.release=a,this},setDataCallback:function(a){var b=this.l.dataCallback;return this.l.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.l.breadcrumbCallback;return this.l.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.l.shouldSendCallback;return this.l.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.l.transport=a,this},lastException:function(){return this.e},lastEventId:function(){return this.g},isSetup:function(){return!!this.b&&(!!this.h||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.A("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=R.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(S){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.I;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.k.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.K(this.H(c)),h=S.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(S.head||S.body).appendChild(h)}},M:function(){var a=this;this.n+=1,setTimeout(function(){a.n-=1})},_:function(a,b){var c,d;if(this.c){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),S.createEvent?(c=S.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=S.createEventObject(),c.eventType=a);for(d in b)A(b,d)&&(c[d]=b[d]);if(S.createEvent)S.dispatchEvent(c);else try{S.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},aa:function(a){var b=this;return function(c){if(b.ba=null,b.w!==c){b.w=c;var d;try{d=E(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ca:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.ba;g||a.aa("input")(c),clearTimeout(g),a.ba=setTimeout(function(){a.ba=null},b)}}},da:function(a,b){var c=H(this.x.href),d=H(b),e=H(a);this.y=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},D:function(){var a=this;a.ea=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.N?a.ea.apply(this.P,arguments):a.ea.apply(this,arguments)}},R:function(){this.ea&&(Function.prototype.toString=this.ea)},E:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.da(b.y,c+""),a.apply(this,arguments)}};I(history,"pushState",j,d),I(history,"replaceState",j,d)}if(c.console&&"console"in R&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};w(["debug","info","warn","error","log"],function(a,b){O(console,b,k)})}},S:function(){for(var a;this.u.length;){a=this.u.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},T:function(){for(var a in this.r)this.q[a]=this.r[a]},G:function(){var a=this;w(this.s,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},H:function(a){var b=Q.exec(a),c={},d=7;try{for(;d--;)c[P[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.l.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},K:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},B:function(){this.n||this.W.apply(this,arguments)},W:function(a,b){var c=this.Y(a,b);this._("handle",{stackInfo:a,options:b}),this.ga(a.name,a.message,a.url,a.lineno,c,b)},Y:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(w(a.stack,function(b,e){var f=c.ha(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.v,0)}),this.k.user&&(a.user=this.k.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),a=this.qa(a),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||v(a[b]))&&delete a[b]}),s(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!v(a)&&(!s(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.na()?void this.A("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function F(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&l(b))for(c=b.split(/\s+/),f=0;fc?Q(a,b-1):d}function R(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?X:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function S(a,b){function c(a){return m(a)?a.map(function(a){return c(a)}):k(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!m(b)||m(b)&&0===b.length)return a;var d,e=A(b),f="********";try{d=JSON.parse(T(a))}catch(g){return a}return c(d)}var T=a(10),U="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},V=3,W=51200,X=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isDOMError:g,isDOMException:h,isUndefined:i,isFunction:j,isPlainObject:k,isString:l,isArray:m,isEmptyObject:n,supportsErrorEvent:o,supportsDOMError:p,supportsDOMException:q,supportsFetch:r,supportsReferrerPolicy:s,supportsPromiseRejectionEvent:t,wrappedCallback:u,each:v,objectMerge:w,truncate:y,objectFrozen:x,hasKey:z,joinRegExp:A,urlencode:B,uuid4:D,htmlTreeAsString:E,htmlElementAsString:F,isSameException:I,isSameStacktrace:J,parseUrl:C,fill:K,safeJoin:L,serializeException:Q,serializeKeysForMessage:R,sanitize:S}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{10:10}],9:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}function e(){return"undefined"==typeof document||null==document.location?"":document.location.origin}var f=a(8),g={collectWindowErrors:!0,debug:!1},h="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},i=[].slice,j="?",k=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;g.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function e(a,b){var c=null;if(!b||g.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(i.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,h,i){var l=null,m=f.isErrorEvent(i)?i.error:i,n=f.isErrorEvent(a)?a.message:a;if(v)g.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&f.isError(m))l=g.computeStackTrace(m),e(l,!0);else{var p,r={url:b,line:c,column:h},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(k);p&&(s=p[1],n=p[2])}r.func=j,l={name:s,message:n,url:d(),stack:[r]},e(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=h.onerror,h.onerror=l,r=!0)}function n(){r&&(h.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,e.apply(null,[a,!1].concat(b))}function p(a,b){var c=i.call(arguments,1);if(v){if(u===a)return;o()}var d=g.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),g.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,f,g=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,h=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,i=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,k=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,l=/\((\S*)(?::(\d+))(?::(\d+))\)/,m=a.stack.split("\n"),n=[],o=(/^(.*) is undefined$/.exec(a.message),0),p=m.length;o eval")>-1;r&&(b=k.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==o||c[5]||"undefined"==typeof a.columnNumber||(n[0].column=a.columnNumber+1),f={url:c[3],func:c[1]||j,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}if(!f.func&&f.line&&(f.func=j),f.url&&"blob:"===f.url.substr(0,5)){var s=new XMLHttpRequest; +if(s.open("GET",f.url,!1),s.send(null),200===s.status){var t=s.responseText||"";t=t.slice(-300);var u=t.match(/\/\/# sourceMappingURL=(.*)$/);if(u){var v=u[1];"~"===v.charAt(0)&&(v=e()+v.slice(1)),f.url=v.slice(0,-4)}}}n.push(f)}return n.length?{name:a.name,message:a.message,url:d(),stack:n}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=j),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,e){for(var h,i,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==f&&o!==g.report){if(i={url:null,func:j,line:null,column:null},o.name?i.func=o.name:(h=k.exec(o.toString()))&&(i.func=h[1]),"undefined"==typeof i.func)try{i.func=h.input.substring(0,h.input.indexOf("{"))}catch(p){}m[""+o]?n=!0:m[""+o]=!0,l.push(i)}e&&l.splice(0,e);var q={name:a.name,message:a.message,url:d(),stack:l};return b(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),q}function f(b,e){var f=null;e=null==e?0:+e;try{if(f=a(b))return f}catch(h){if(g.debug)throw h}try{if(f=c(b,e+1))return f}catch(h){if(g.debug)throw h}return{name:b.name,message:b.message,url:d()}}return f.augmentStackTraceWithInitialElement=b,f.computeStackTraceFromStackProp=a,f}(),b.exports=g}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{8:8}],10:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}],11:[function(a,b,c){function d(a,b){var c=(65535&a)+(65535&b),d=(a>>16)+(b>>16)+(c>>16);return d<<16|65535&c}function e(a,b){return a<>>32-b}function f(a,b,c,f,g,h){return d(e(d(d(b,a),d(f,h)),g),c)}function g(a,b,c,d,e,g,h){return f(b&c|~b&d,a,b,e,g,h)}function h(a,b,c,d,e,g,h){return f(b&d|c&~d,a,b,e,g,h)}function i(a,b,c,d,e,g,h){return f(b^c^d,a,b,e,g,h)}function j(a,b,c,d,e,g,h){return f(c^(b|~d),a,b,e,g,h)}function k(a,b){a[b>>5]|=128<>>9<<4)+14]=b;var c,e,f,k,l,m=1732584193,n=-271733879,o=-1732584194,p=271733878;for(c=0;c>5]>>>b%32&255);return c}function m(a){var b,c=[];for(c[(a.length>>2)-1]=void 0,b=0;b>5]|=(255&a.charCodeAt(b/8))<16&&(e=k(e,8*a.length)),c=0;c<16;c+=1)f[c]=909522486^e[c],g[c]=1549556828^e[c];return d=k(f.concat(m(b)),512+8*b.length),l(k(g.concat(d),640))}function p(a){var b,c,d="0123456789abcdef",e="";for(c=0;c>>4&15)+d.charAt(15&b);return e}function q(a){return unescape(encodeURIComponent(a))}function r(a){return n(q(a))}function s(a){return p(r(a))}function t(a,b){return o(q(a),q(b))}function u(a,b){return p(t(a,b))}function v(a,b,c){return b?c?t(b,a):u(b,a):c?r(a):s(a)}b.exports=v},{}]},{},[7,1,2,3])(7)}); //# sourceMappingURL=raven.min.js.map \ No newline at end of file diff --git a/dist/angular,console,vue/raven.min.js.map b/dist/angular,console,vue/raven.min.js.map index aae26caf6d35..328d19f9a9b6 100644 --- a/dist/angular,console,vue/raven.min.js.map +++ b/dist/angular,console,vue/raven.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","angularPlugin","angular","RavenProvider","$get","$window","ExceptionHandlerProvider","$provide","decorator","exceptionHandler","R","$delegate","ex","cause","captureException","extra","moduleName","provider","config","setDataCallback","wrappedCallback","data","_normalizeData","angularPattern","exception","values","matches","exec","value","type","message","angularDocs","substr","addPlugin","7","8","2","consolePlugin","console","pluginOptions","logLevels","levels","push","callback","msg","captureMessage","level","pop","wrapConsoleMethod","wrapMethod","5","3","formatComponentName","vm","$root","name","_isVue","$options","_componentTag","__file","vuePlugin","Vue","_oldOnError","errorHandler","error","info","metaData","Object","prototype","toString","componentName","propsData","lifecycleHook","4","RavenConfigError","constructor","utils","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","safeJoin","logger","Function","apply","6","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","sanitizeKeys","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isError","isObject","isPlainObject","isErrorEvent","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","sanitize","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","dsn","options","_logDebug","globalOptions","key","setDSN","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","context","func","undefined","wrap","_before","wrapped","deep","_ignoreNextOnError","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","U","event","reason","unhandledPromiseRejection","C","_promiseRejectionHandler","bind","addEventListener","Q","removeEventListener","trimHeadFrames","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","V","currentOptions","exKeys","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","M","setTimeout","_","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","aa","evtName","_keypressTimeout","target","category","ca","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","da","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","D","_originalFunctionToString","E","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","F","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","S","builtin","T","G","installer","concat","H","str","m","allowSecretKey","K","port","B","W","stackInfo","_triggerEvent","_processException","lineno","Y","frame","_normalizeFrame","in_app","ha","stackInfoUrl","normalized","filename","line","colno","column","function","ga","prefixedMessage","culprit","ia","request","Referer","breadcrumbs","_trimBreadcrumbs","ja","urlProp","urlProps","ka","httpData","userAgent","User-Agent","referrer","z","_backoffDuration","_backoffStart","na","oa","current","last","pa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Z","baseData","project","platform","_getHttpData","serverName","server_name","_sanitizeData","forEach","random","_sendProcessedPayload","qa","sa","ra","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","ta","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","onerror","open","setRequestHeader","send","ua","hash","evaluated","A","$","setUser","setReleaseContext","10","11","9","RavenConstructor","_Raven","noConflict","Client","what","supportsErrorEvent","ErrorEvent","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","sanitizeMask","safeInput","o_O","getLocationHref","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","y","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","charAt","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","string","raw"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file +{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","angularPlugin","angular","RavenProvider","$get","$window","ExceptionHandlerProvider","$provide","decorator","exceptionHandler","R","$delegate","ex","cause","captureException","extra","moduleName","provider","config","setDataCallback","wrappedCallback","data","_normalizeData","angularPattern","exception","values","matches","exec","value","type","message","angularDocs","substr","addPlugin","7","8","2","consolePlugin","console","pluginOptions","logLevels","levels","push","callback","msg","captureMessage","level","pop","wrapConsoleMethod","wrapMethod","5","3","formatComponentName","vm","$root","name","_isVue","$options","_componentTag","__file","vuePlugin","Vue","_oldOnError","errorHandler","error","info","metaData","Object","prototype","toString","componentName","propsData","lifecycleHook","4","RavenConfigError","constructor","utils","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","safeJoin","logger","Function","apply","6","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","sanitizeKeys","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isErrorEvent","isDOMError","isDOMException","isError","isObject","isPlainObject","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","sanitize","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","dsn","options","_logDebug","globalOptions","key","setDSN","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","context","func","undefined","wrap","_before","wrapped","deep","_ignoreNextOnError","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","U","event","reason","unhandledPromiseRejection","C","_promiseRejectionHandler","bind","addEventListener","Q","removeEventListener","trimHeadFrames","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","V","currentOptions","exKeys","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","M","setTimeout","_","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","aa","evtName","_keypressTimeout","target","category","ca","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","da","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","D","_originalFunctionToString","E","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","F","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","S","builtin","T","G","installer","concat","H","str","m","allowSecretKey","K","port","B","W","stackInfo","_triggerEvent","_processException","lineno","Y","frame","_normalizeFrame","in_app","ha","stackInfoUrl","normalized","filename","line","colno","column","function","ga","prefixedMessage","culprit","ia","request","Referer","breadcrumbs","_trimBreadcrumbs","ja","urlProp","urlProps","ka","httpData","userAgent","User-Agent","referrer","z","_backoffDuration","_backoffStart","na","oa","current","last","pa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Z","baseData","project","platform","_getHttpData","serverName","server_name","_sanitizeData","forEach","random","_sendProcessedPayload","qa","sa","ra","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","ta","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","onerror","open","setRequestHeader","send","ua","hash","evaluated","A","$","setUser","setReleaseContext","10","11","9","RavenConstructor","_Raven","noConflict","Client","what","supportsErrorEvent","ErrorEvent","supportsDOMError","DOMError","supportsDOMException","DOMException","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","sanitizeMask","safeInput","o_O","getLocationHref","getLocationOrigin","origin","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","responseText","sourceMaps","sourceMapAddress","charAt","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","y","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","string","raw"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file diff --git a/dist/angular,console/raven.js b/dist/angular,console/raven.js index dc6457dd2a14..725ffc488d6e 100644 --- a/dist/angular,console/raven.js +++ b/dist/angular,console/raven.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.24.2 (540f32b) | github.com/getsentry/raven-js */ +/*! Raven.js 3.25.0 (80dffad) | github.com/getsentry/raven-js */ /* * Includes TraceKit @@ -186,10 +186,12 @@ var md5 = _dereq_(10); var RavenConfigError = _dereq_(3); var utils = _dereq_(7); +var isErrorEvent = utils.isErrorEvent; +var isDOMError = utils.isDOMError; +var isDOMException = utils.isDOMException; var isError = utils.isError; var isObject = utils.isObject; var isPlainObject = utils.isPlainObject; -var isErrorEvent = utils.isErrorEvent; var isUndefined = utils.isUndefined; var isFunction = utils.isFunction; var isString = utils.isString; @@ -317,7 +319,7 @@ Raven.prototype = { // webpack (using a build step causes webpack #1617). Grunt verifies that // this value matches package.json during build. // See: https://github.com/getsentry/raven-js/issues/465 - VERSION: '3.24.2', + VERSION: '3.25.0', debug: false, @@ -649,6 +651,23 @@ Raven.prototype = { if (isErrorEvent(ex) && ex.error) { // If it is an ErrorEvent with `error` property, extract it to get actual Error ex = ex.error; + } else if (isDOMError(ex) || isDOMException(ex)) { + // If it is a DOMError or DOMException (which are legacy APIs, but still supported in some browsers) + // then we just extract the name and message, as they don't provide anything else + // https://developer.mozilla.org/en-US/docs/Web/API/DOMError + // https://developer.mozilla.org/en-US/docs/Web/API/DOMException + var name = ex.name || (isDOMError(ex) ? 'DOMError' : 'DOMException'); + var message = ex.message ? name + ': ' + ex.message : name; + + return this.captureMessage( + message, + objectMerge(options, { + // neither DOMError or DOMException provide stack trace and we most likely wont get it this way as well + // but it's barely any overhead so we may at least try + stacktrace: true, + trimHeadFrames: options.trimHeadFrames + 1 + }) + ); } else if (isError(ex)) { // we have a real Error object ex = ex; @@ -660,6 +679,7 @@ Raven.prototype = { ex = new Error(options.message); } else { // If none of previous checks were valid, then it means that + // it's not a DOMError/DOMException // it's not a plain Object // it's not a valid ErrorEvent (one with an error property) // it's not an Error @@ -2432,7 +2452,7 @@ function isObject(what) { // Yanked from https://git.io/vS8DV re-used under CC0 // with some tiny modifications function isError(value) { - switch ({}.toString.call(value)) { + switch (Object.prototype.toString.call(value)) { case '[object Error]': return true; case '[object Exception]': @@ -2445,7 +2465,15 @@ function isError(value) { } function isErrorEvent(value) { - return supportsErrorEvent() && {}.toString.call(value) === '[object ErrorEvent]'; + return Object.prototype.toString.call(value) === '[object ErrorEvent]'; +} + +function isDOMError(value) { + return Object.prototype.toString.call(value) === '[object DOMError]'; +} + +function isDOMException(value) { + return Object.prototype.toString.call(value) === '[object DOMException]'; } function isUndefined(what) { @@ -2488,6 +2516,24 @@ function supportsErrorEvent() { } } +function supportsDOMError() { + try { + new DOMError(''); // eslint-disable-line no-new + return true; + } catch (e) { + return false; + } +} + +function supportsDOMException() { + try { + new DOMException(''); // eslint-disable-line no-new + return true; + } catch (e) { + return false; + } +} + function supportsFetch() { if (!('fetch' in _window)) return false; @@ -3003,6 +3049,8 @@ module.exports = { isObject: isObject, isError: isError, isErrorEvent: isErrorEvent, + isDOMError: isDOMError, + isDOMException: isDOMException, isUndefined: isUndefined, isFunction: isFunction, isPlainObject: isPlainObject, @@ -3010,6 +3058,8 @@ module.exports = { isArray: isArray, isEmptyObject: isEmptyObject, supportsErrorEvent: supportsErrorEvent, + supportsDOMError: supportsDOMError, + supportsDOMException: supportsDOMException, supportsFetch: supportsFetch, supportsReferrerPolicy: supportsReferrerPolicy, supportsPromiseRejectionEvent: supportsPromiseRejectionEvent, @@ -3069,10 +3119,14 @@ var ERROR_TYPES_RE = /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Ran function getLocationHref() { if (typeof document === 'undefined' || document.location == null) return ''; - return document.location.href; } +function getLocationOrigin() { + if (typeof document === 'undefined' || document.location == null) return ''; + return document.location.origin; +} + /** * TraceKit.report: cross-browser processing of unhandled exceptions * @@ -3480,6 +3534,44 @@ TraceKit.computeStackTrace = (function computeStackTraceWrapper() { element.func = UNKNOWN_FUNCTION; } + if (element.url && element.url.substr(0, 5) === 'blob:') { + // Special case for handling JavaScript loaded into a blob. + // We use a synchronous AJAX request here as a blob is already in + // memory - it's not making a network request. This will generate a warning + // in the browser console, but there has already been an error so that's not + // that much of an issue. + var xhr = new XMLHttpRequest(); + xhr.open('GET', element.url, false); + xhr.send(null); + + // If we failed to download the source, skip this patch + if (xhr.status === 200) { + var source = xhr.responseText || ''; + + // We trim the source down to the last 300 characters as sourceMappingURL is always at the end of the file. + // Why 300? To be in line with: https://github.com/getsentry/sentry/blob/4af29e8f2350e20c28a6933354e4f42437b4ba42/src/sentry/lang/javascript/processor.py#L164-L175 + source = source.slice(-300); + + // Now we dig out the source map URL + var sourceMaps = source.match(/\/\/# sourceMappingURL=(.*)$/); + + // If we don't find a source map comment or we find more than one, continue on to the next element. + if (sourceMaps) { + var sourceMapAddress = sourceMaps[1]; + + // Now we check to see if it's a relative URL. + // If it is, convert it to an absolute one. + if (sourceMapAddress.charAt(0) === '~') { + sourceMapAddress = getLocationOrigin() + sourceMapAddress.slice(1); + } + + // Now we strip the '.map' off of the end of the URL and update the + // element so that Sentry can match the map to the blob. + element.url = sourceMapAddress.slice(0, -4); + } + } + } + stack.push(element); } diff --git a/dist/angular,console/raven.min.js b/dist/angular,console/raven.min.js index cdd978a414a7..5a803cbd4572 100644 --- a/dist/angular,console/raven.min.js +++ b/dist/angular,console/raven.min.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.24.2 (540f32b) | github.com/getsentry/raven-js */ -!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.Raven=a()}}(function(){return function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};b[g][0].call(k.exports,function(a){var c=b[g][1][a];return e(c?c:a)},k,k.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;gthis.l.maxBreadcrumbs&&this.v.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.s.push([a,b]),this.o&&this.G(),this},setUserContext:function(a){return this.k.user=a,this},setExtraContext:function(a){return this.$("extra",a),this},setTagsContext:function(a){return this.$("tags",a),this},clearContext:function(){return this.k={},this},getContext:function(){return JSON.parse(h(this.k))},setEnvironment:function(a){return this.l.environment=a,this},setRelease:function(a){return this.l.release=a,this},setDataCallback:function(a){var b=this.l.dataCallback;return this.l.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.l.breadcrumbCallback;return this.l.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.l.shouldSendCallback;return this.l.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.l.transport=a,this},lastException:function(){return this.e},lastEventId:function(){return this.g},isSetup:function(){return!!this.b&&(!!this.h||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.A("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=P.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(Q){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.I;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.k.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.K(this.H(c)),h=Q.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(Q.head||Q.body).appendChild(h)}},M:function(){var a=this;this.n+=1,setTimeout(function(){a.n-=1})},_:function(a,b){var c,d;if(this.c){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),Q.createEvent?(c=Q.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=Q.createEventObject(),c.eventType=a);for(d in b)y(b,d)&&(c[d]=b[d]);if(Q.createEvent)Q.dispatchEvent(c);else try{Q.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},aa:function(a){var b=this;return function(c){if(b.ba=null,b.w!==c){b.w=c;var d;try{d=C(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ca:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.ba;g||a.aa("input")(c),clearTimeout(g),a.ba=setTimeout(function(){a.ba=null},b)}}},da:function(a,b){var c=F(this.x.href),d=F(b),e=F(a);this.y=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},D:function(){var a=this;a.ea=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.N?a.ea.apply(this.P,arguments):a.ea.apply(this,arguments)}},R:function(){this.ea&&(Function.prototype.toString=this.ea)},E:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.da(b.y,c+""),a.apply(this,arguments)}};G(history,"pushState",j,d),G(history,"replaceState",j,d)}if(c.console&&"console"in P&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};u(["debug","info","warn","error","log"],function(a,b){M(console,b,k)})}},S:function(){for(var a;this.u.length;){a=this.u.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},T:function(){for(var a in this.r)this.q[a]=this.r[a]},G:function(){var a=this;u(this.s,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},H:function(a){var b=O.exec(a),c={},d=7;try{for(;d--;)c[N[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.l.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},K:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},B:function(){this.n||this.W.apply(this,arguments)},W:function(a,b){var c=this.Y(a,b);this._("handle",{stackInfo:a,options:b}),this.ga(a.name,a.message,a.url,a.lineno,c,b)},Y:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(u(a.stack,function(b,e){var f=c.ha(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.v,0)}),this.k.user&&(a.user=this.k.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),a=this.qa(a),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||t(a[b]))&&delete a[b]}),q(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!t(a)&&(!q(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.na()?void this.A("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function B(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&j(b))for(c=b.split(/\s+/),f=0;fc?M(a,b-1):d}function N(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?T:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function O(a,b){function c(a){return k(a)?a.map(function(a){return c(a)}):i(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!k(b)||k(b)&&0===b.length)return a;var d,e=w(b),f="********";try{d=JSON.parse(P(a))}catch(g){return a}return c(d)}var P=a(9),Q="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},R=3,S=51200,T=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isUndefined:g,isFunction:h,isPlainObject:i,isString:j,isArray:k,isEmptyObject:l,supportsErrorEvent:m,supportsFetch:n,supportsReferrerPolicy:o,supportsPromiseRejectionEvent:p,wrappedCallback:q,each:r,objectMerge:s,truncate:u,objectFrozen:t,hasKey:v,joinRegExp:w,urlencode:x,uuid4:z,htmlTreeAsString:A,htmlElementAsString:B,isSameException:E,isSameStacktrace:F,parseUrl:y,fill:G,safeJoin:H,serializeException:M,serializeKeysForMessage:N,sanitize:O}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{9:9}],8:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}var e=a(7),f={collectWindowErrors:!0,debug:!1},g="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},h=[].slice,i="?",j=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;f.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function k(a,b){var c=null;if(!b||f.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(h.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,g,h){var l=null,m=e.isErrorEvent(h)?h.error:h,n=e.isErrorEvent(a)?a.message:a;if(v)f.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&e.isError(m))l=f.computeStackTrace(m),k(l,!0);else{var p,r={url:b,line:c,column:g},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(j);p&&(s=p[1],n=p[2])}r.func=i,l={name:s,message:n,url:d(),stack:[r]},k(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=g.onerror,g.onerror=l,r=!0)}function n(){r&&(g.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,k.apply(null,[a,!1].concat(b))}function p(a,b){var c=h.call(arguments,1);if(v){if(u===a)return;o()}var d=f.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),f.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,e,f=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,g=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,h=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,j=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,k=/\((\S*)(?::(\d+))(?::(\d+))\)/,l=a.stack.split("\n"),m=[],n=(/^(.*) is undefined$/.exec(a.message),0),o=l.length;n eval")>-1;q&&(b=j.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==n||c[5]||"undefined"==typeof a.columnNumber||(m[0].column=a.columnNumber+1),e={url:c[3],func:c[1]||i,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}!e.func&&e.line&&(e.func=i),m.push(e)}return m.length?{name:a.name,message:a.message,url:d(),stack:m}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=i),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,g){for(var h,j,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==e&&o!==f.report){if(j={url:null,func:i,line:null,column:null},o.name?j.func=o.name:(h=k.exec(o.toString()))&&(j.func=h[1]),"undefined"==typeof j.func)try{j.func=h.input.substring(0,h.input.indexOf("{"))}catch(p){}m[""+o]?n=!0:m[""+o]=!0,l.push(j)}g&&l.splice(0,g);var q={name:a.name,message:a.message,url:d(),stack:l};return b(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),q}function e(b,e){var g=null;e=null==e?0:+e;try{if(g=a(b))return g}catch(h){if(f.debug)throw h}try{if(g=c(b,e+1))return g}catch(h){if(f.debug)throw h}return{name:b.name,message:b.message,url:d()}}return e.augmentStackTraceWithInitialElement=b,e.computeStackTraceFromStackProp=a,e}(),b.exports=f}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{7:7}],9:[function(a,b,c){ -function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}],10:[function(a,b,c){function d(a,b){var c=(65535&a)+(65535&b),d=(a>>16)+(b>>16)+(c>>16);return d<<16|65535&c}function e(a,b){return a<>>32-b}function f(a,b,c,f,g,h){return d(e(d(d(b,a),d(f,h)),g),c)}function g(a,b,c,d,e,g,h){return f(b&c|~b&d,a,b,e,g,h)}function h(a,b,c,d,e,g,h){return f(b&d|c&~d,a,b,e,g,h)}function i(a,b,c,d,e,g,h){return f(b^c^d,a,b,e,g,h)}function j(a,b,c,d,e,g,h){return f(c^(b|~d),a,b,e,g,h)}function k(a,b){a[b>>5]|=128<>>9<<4)+14]=b;var c,e,f,k,l,m=1732584193,n=-271733879,o=-1732584194,p=271733878;for(c=0;c>5]>>>b%32&255);return c}function m(a){var b,c=[];for(c[(a.length>>2)-1]=void 0,b=0;b>5]|=(255&a.charCodeAt(b/8))<16&&(e=k(e,8*a.length)),c=0;c<16;c+=1)f[c]=909522486^e[c],g[c]=1549556828^e[c];return d=k(f.concat(m(b)),512+8*b.length),l(k(g.concat(d),640))}function p(a){var b,c,d="0123456789abcdef",e="";for(c=0;c>>4&15)+d.charAt(15&b);return e}function q(a){return unescape(encodeURIComponent(a))}function r(a){return n(q(a))}function s(a){return p(r(a))}function t(a,b){return o(q(a),q(b))}function u(a,b){return p(t(a,b))}function v(a,b,c){return b?c?t(b,a):u(b,a):c?r(a):s(a)}b.exports=v},{}]},{},[6,1,2])(6)}); +/*! Raven.js 3.25.0 (80dffad) | github.com/getsentry/raven-js */ +!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.Raven=a()}}(function(){return function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};b[g][0].call(k.exports,function(a){var c=b[g][1][a];return e(c?c:a)},k,k.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;gthis.l.maxBreadcrumbs&&this.v.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.s.push([a,b]),this.o&&this.G(),this},setUserContext:function(a){return this.k.user=a,this},setExtraContext:function(a){return this.$("extra",a),this},setTagsContext:function(a){return this.$("tags",a),this},clearContext:function(){return this.k={},this},getContext:function(){return JSON.parse(h(this.k))},setEnvironment:function(a){return this.l.environment=a,this},setRelease:function(a){return this.l.release=a,this},setDataCallback:function(a){var b=this.l.dataCallback;return this.l.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.l.breadcrumbCallback;return this.l.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.l.shouldSendCallback;return this.l.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.l.transport=a,this},lastException:function(){return this.e},lastEventId:function(){return this.g},isSetup:function(){return!!this.b&&(!!this.h||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.A("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=R.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(S){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.I;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.k.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.K(this.H(c)),h=S.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(S.head||S.body).appendChild(h)}},M:function(){var a=this;this.n+=1,setTimeout(function(){a.n-=1})},_:function(a,b){var c,d;if(this.c){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),S.createEvent?(c=S.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=S.createEventObject(),c.eventType=a);for(d in b)A(b,d)&&(c[d]=b[d]);if(S.createEvent)S.dispatchEvent(c);else try{S.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},aa:function(a){var b=this;return function(c){if(b.ba=null,b.w!==c){b.w=c;var d;try{d=E(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ca:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.ba;g||a.aa("input")(c),clearTimeout(g),a.ba=setTimeout(function(){a.ba=null},b)}}},da:function(a,b){var c=H(this.x.href),d=H(b),e=H(a);this.y=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},D:function(){var a=this;a.ea=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.N?a.ea.apply(this.P,arguments):a.ea.apply(this,arguments)}},R:function(){this.ea&&(Function.prototype.toString=this.ea)},E:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.da(b.y,c+""),a.apply(this,arguments)}};I(history,"pushState",j,d),I(history,"replaceState",j,d)}if(c.console&&"console"in R&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};w(["debug","info","warn","error","log"],function(a,b){O(console,b,k)})}},S:function(){for(var a;this.u.length;){a=this.u.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},T:function(){for(var a in this.r)this.q[a]=this.r[a]},G:function(){var a=this;w(this.s,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},H:function(a){var b=Q.exec(a),c={},d=7;try{for(;d--;)c[P[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.l.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},K:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},B:function(){this.n||this.W.apply(this,arguments)},W:function(a,b){var c=this.Y(a,b);this._("handle",{stackInfo:a,options:b}),this.ga(a.name,a.message,a.url,a.lineno,c,b)},Y:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(w(a.stack,function(b,e){var f=c.ha(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.v,0)}),this.k.user&&(a.user=this.k.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),a=this.qa(a),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||v(a[b]))&&delete a[b]}),s(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!v(a)&&(!s(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.na()?void this.A("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function F(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&l(b))for(c=b.split(/\s+/),f=0;fc?Q(a,b-1):d}function R(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?X:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function S(a,b){function c(a){return m(a)?a.map(function(a){return c(a)}):k(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!m(b)||m(b)&&0===b.length)return a;var d,e=A(b),f="********";try{d=JSON.parse(T(a))}catch(g){return a}return c(d)}var T=a(9),U="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},V=3,W=51200,X=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isDOMError:g,isDOMException:h,isUndefined:i,isFunction:j,isPlainObject:k,isString:l,isArray:m,isEmptyObject:n,supportsErrorEvent:o,supportsDOMError:p,supportsDOMException:q,supportsFetch:r,supportsReferrerPolicy:s,supportsPromiseRejectionEvent:t,wrappedCallback:u,each:v,objectMerge:w,truncate:y,objectFrozen:x,hasKey:z,joinRegExp:A,urlencode:B,uuid4:D,htmlTreeAsString:E,htmlElementAsString:F,isSameException:I,isSameStacktrace:J,parseUrl:C,fill:K,safeJoin:L,serializeException:Q,serializeKeysForMessage:R,sanitize:S}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{9:9}],8:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}function e(){return"undefined"==typeof document||null==document.location?"":document.location.origin}var f=a(7),g={collectWindowErrors:!0,debug:!1},h="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},i=[].slice,j="?",k=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;g.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function e(a,b){var c=null;if(!b||g.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(i.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,h,i){var l=null,m=f.isErrorEvent(i)?i.error:i,n=f.isErrorEvent(a)?a.message:a;if(v)g.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&f.isError(m))l=g.computeStackTrace(m),e(l,!0);else{var p,r={url:b,line:c,column:h},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(k);p&&(s=p[1],n=p[2])}r.func=j,l={name:s,message:n,url:d(),stack:[r]},e(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=h.onerror,h.onerror=l,r=!0)}function n(){r&&(h.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,e.apply(null,[a,!1].concat(b))}function p(a,b){var c=i.call(arguments,1);if(v){if(u===a)return;o()}var d=g.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),g.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,f,g=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,h=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,i=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,k=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,l=/\((\S*)(?::(\d+))(?::(\d+))\)/,m=a.stack.split("\n"),n=[],o=(/^(.*) is undefined$/.exec(a.message),0),p=m.length;o eval")>-1;r&&(b=k.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==o||c[5]||"undefined"==typeof a.columnNumber||(n[0].column=a.columnNumber+1),f={url:c[3],func:c[1]||j,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}if(!f.func&&f.line&&(f.func=j),f.url&&"blob:"===f.url.substr(0,5)){var s=new XMLHttpRequest;if(s.open("GET",f.url,!1),s.send(null),200===s.status){var t=s.responseText||"";t=t.slice(-300);var u=t.match(/\/\/# sourceMappingURL=(.*)$/);if(u){var v=u[1];"~"===v.charAt(0)&&(v=e()+v.slice(1)),f.url=v.slice(0,-4)}}}n.push(f)}return n.length?{name:a.name,message:a.message,url:d(),stack:n}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=j),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,e){ +for(var h,i,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==f&&o!==g.report){if(i={url:null,func:j,line:null,column:null},o.name?i.func=o.name:(h=k.exec(o.toString()))&&(i.func=h[1]),"undefined"==typeof i.func)try{i.func=h.input.substring(0,h.input.indexOf("{"))}catch(p){}m[""+o]?n=!0:m[""+o]=!0,l.push(i)}e&&l.splice(0,e);var q={name:a.name,message:a.message,url:d(),stack:l};return b(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),q}function f(b,e){var f=null;e=null==e?0:+e;try{if(f=a(b))return f}catch(h){if(g.debug)throw h}try{if(f=c(b,e+1))return f}catch(h){if(g.debug)throw h}return{name:b.name,message:b.message,url:d()}}return f.augmentStackTraceWithInitialElement=b,f.computeStackTraceFromStackProp=a,f}(),b.exports=g}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{7:7}],9:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}],10:[function(a,b,c){function d(a,b){var c=(65535&a)+(65535&b),d=(a>>16)+(b>>16)+(c>>16);return d<<16|65535&c}function e(a,b){return a<>>32-b}function f(a,b,c,f,g,h){return d(e(d(d(b,a),d(f,h)),g),c)}function g(a,b,c,d,e,g,h){return f(b&c|~b&d,a,b,e,g,h)}function h(a,b,c,d,e,g,h){return f(b&d|c&~d,a,b,e,g,h)}function i(a,b,c,d,e,g,h){return f(b^c^d,a,b,e,g,h)}function j(a,b,c,d,e,g,h){return f(c^(b|~d),a,b,e,g,h)}function k(a,b){a[b>>5]|=128<>>9<<4)+14]=b;var c,e,f,k,l,m=1732584193,n=-271733879,o=-1732584194,p=271733878;for(c=0;c>5]>>>b%32&255);return c}function m(a){var b,c=[];for(c[(a.length>>2)-1]=void 0,b=0;b>5]|=(255&a.charCodeAt(b/8))<16&&(e=k(e,8*a.length)),c=0;c<16;c+=1)f[c]=909522486^e[c],g[c]=1549556828^e[c];return d=k(f.concat(m(b)),512+8*b.length),l(k(g.concat(d),640))}function p(a){var b,c,d="0123456789abcdef",e="";for(c=0;c>>4&15)+d.charAt(15&b);return e}function q(a){return unescape(encodeURIComponent(a))}function r(a){return n(q(a))}function s(a){return p(r(a))}function t(a,b){return o(q(a),q(b))}function u(a,b){return p(t(a,b))}function v(a,b,c){return b?c?t(b,a):u(b,a):c?r(a):s(a)}b.exports=v},{}]},{},[6,1,2])(6)}); //# sourceMappingURL=raven.min.js.map \ No newline at end of file diff --git a/dist/angular,console/raven.min.js.map b/dist/angular,console/raven.min.js.map index 06f5212484de..e567650e4430 100644 --- a/dist/angular,console/raven.min.js.map +++ b/dist/angular,console/raven.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","angularPlugin","angular","RavenProvider","$get","$window","ExceptionHandlerProvider","$provide","decorator","exceptionHandler","R","$delegate","ex","cause","captureException","extra","moduleName","provider","config","setDataCallback","wrappedCallback","data","_normalizeData","angularPattern","exception","values","matches","exec","value","type","message","angularDocs","substr","addPlugin","6","7","2","consolePlugin","console","pluginOptions","logLevels","levels","push","callback","msg","captureMessage","level","pop","wrapConsoleMethod","wrapMethod","4","3","RavenConfigError","name","prototype","constructor","utils","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","safeJoin","logger","Function","apply","5","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","sanitizeKeys","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isError","isObject","isPlainObject","isErrorEvent","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","sanitize","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","dsn","options","_logDebug","globalOptions","key","setDSN","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","toString","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","context","func","undefined","wrap","_before","wrapped","deep","_ignoreNextOnError","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","U","event","reason","unhandledPromiseRejection","C","_promiseRejectionHandler","bind","addEventListener","Q","removeEventListener","trimHeadFrames","error","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","V","currentOptions","exKeys","Object","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","M","setTimeout","_","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","aa","evtName","_keypressTimeout","target","category","ca","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","da","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","D","_originalFunctionToString","E","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","F","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","S","builtin","T","G","installer","concat","H","str","m","allowSecretKey","K","port","B","W","stackInfo","_triggerEvent","_processException","lineno","Y","frame","_normalizeFrame","in_app","ha","stackInfoUrl","normalized","filename","line","colno","column","function","ga","prefixedMessage","culprit","ia","request","Referer","breadcrumbs","_trimBreadcrumbs","ja","urlProp","urlProps","ka","httpData","userAgent","User-Agent","referrer","z","_backoffDuration","_backoffStart","na","oa","current","last","pa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Z","baseData","project","platform","_getHttpData","serverName","server_name","_sanitizeData","forEach","random","_sendProcessedPayload","qa","sa","ra","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","ta","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","onerror","open","setRequestHeader","send","ua","hash","evaluated","A","$","setUser","setReleaseContext","10","8","9","RavenConstructor","_Raven","noConflict","Client","what","supportsErrorEvent","ErrorEvent","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","sanitizeMask","safeInput","o_O","getLocationHref","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","y","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","charAt","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","string","raw"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file +{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","angularPlugin","angular","RavenProvider","$get","$window","ExceptionHandlerProvider","$provide","decorator","exceptionHandler","R","$delegate","ex","cause","captureException","extra","moduleName","provider","config","setDataCallback","wrappedCallback","data","_normalizeData","angularPattern","exception","values","matches","exec","value","type","message","angularDocs","substr","addPlugin","6","7","2","consolePlugin","console","pluginOptions","logLevels","levels","push","callback","msg","captureMessage","level","pop","wrapConsoleMethod","wrapMethod","4","3","RavenConfigError","name","prototype","constructor","utils","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","safeJoin","logger","Function","apply","5","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","sanitizeKeys","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isErrorEvent","isDOMError","isDOMException","isError","isObject","isPlainObject","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","sanitize","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","dsn","options","_logDebug","globalOptions","key","setDSN","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","toString","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","context","func","undefined","wrap","_before","wrapped","deep","_ignoreNextOnError","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","U","event","reason","unhandledPromiseRejection","C","_promiseRejectionHandler","bind","addEventListener","Q","removeEventListener","trimHeadFrames","error","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","V","currentOptions","exKeys","Object","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","M","setTimeout","_","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","aa","evtName","_keypressTimeout","target","category","ca","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","da","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","D","_originalFunctionToString","E","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","F","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","S","builtin","T","G","installer","concat","H","str","m","allowSecretKey","K","port","B","W","stackInfo","_triggerEvent","_processException","lineno","Y","frame","_normalizeFrame","in_app","ha","stackInfoUrl","normalized","filename","line","colno","column","function","ga","prefixedMessage","culprit","ia","request","Referer","breadcrumbs","_trimBreadcrumbs","ja","urlProp","urlProps","ka","httpData","userAgent","User-Agent","referrer","z","_backoffDuration","_backoffStart","na","oa","current","last","pa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Z","baseData","project","platform","_getHttpData","serverName","server_name","_sanitizeData","forEach","random","_sendProcessedPayload","qa","sa","ra","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","ta","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","onerror","open","setRequestHeader","send","ua","hash","evaluated","A","$","setUser","setReleaseContext","10","8","9","RavenConstructor","_Raven","noConflict","Client","what","supportsErrorEvent","ErrorEvent","supportsDOMError","DOMError","supportsDOMException","DOMException","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","sanitizeMask","safeInput","o_O","getLocationHref","getLocationOrigin","origin","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","responseText","sourceMaps","sourceMapAddress","charAt","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","y","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","string","raw"],"mappings":";CAYA,SAAUA,GAAG,GAAoB,gBAAVC,UAAoC,mBAATC,QAAsBA,OAAOD,QAAQD,QAAS,IAAmB,kBAATG,SAAqBA,OAAOC,IAAKD,UAAUH,OAAO,CAAC,GAAIK,EAAkCA,GAAb,mBAATC,QAAwBA,OAA+B,mBAATC,QAAwBA,OAA6B,mBAAPC,MAAsBA,KAAYC,KAAKJ,EAAEK,MAAQV,MAAO,WAAqC,MAAO,SAAUW,GAAEC,EAAEC,EAAEC,GAAG,QAASC,GAAEC,EAAEC,GAAG,IAAIJ,EAAEG,GAAG,CAAC,IAAIJ,EAAEI,GAAG,CAAC,GAAIE,GAAkB,kBAATC,UAAqBA,OAAQ,KAAIF,GAAGC,EAAE,MAAOA,GAAEF,GAAE,EAAI,IAAGI,EAAE,MAAOA,GAAEJ,GAAE,EAAI,IAAIhB,GAAE,GAAIqB,OAAM,uBAAuBL,EAAE,IAAK,MAAMhB,GAAEsB,KAAK,mBAAmBtB,EAAE,GAAIuB,GAAEV,EAAEG,IAAIf,WAAYW,GAAEI,GAAG,GAAGQ,KAAKD,EAAEtB,QAAQ,SAASU,GAAG,GAAIE,GAAED,EAAEI,GAAG,GAAGL,EAAG,OAAOI,GAAEF,EAAEA,EAAEF,IAAIY,EAAEA,EAAEtB,QAAQU,EAAEC,EAAEC,EAAEC,GAAG,MAAOD,GAAEG,GAAGf,QAAkD,IAAI,GAA1CmB,GAAkB,kBAATD,UAAqBA,QAAgBH,EAAE,EAAEA,EAAEF,EAAEW,OAAOT,IAAID,EAAED,EAAEE,GAAI,OAAOD,KAAKW,GAAG,SAASC,EAAQzB,EAAOD,GAYp0B,QAAS2B,GAAclB,EAAOmB,GAK5B,QAASC,KACPrB,KAAKsB,MACH,UACA,SAASC,GACP,MAAOtB,KAKb,QAASuB,GAAyBC,GAChCA,EAASC,UAAU,qBAAsB,QAAS,YAAaC,IAGjE,QAASA,GAAiBC,EAAGC,GAC3B,MAAO,UAASC,EAAIC,GAClBH,EAAEI,iBAAiBF,GACjBG,OAAQF,MAAOA,KAEjBF,EAAUC,EAAIC,IAtBlBX,EAAUA,GAAWvB,OAAOuB,QAEvBA,IAwBLA,EACG3B,OAAOyC,MACPC,SAAS,QAASd,GAClBe,QAAQ,WAAYZ,IAEvBvB,EAAMoC,gBACJC,EAAgB,SAASC,GACvB,MAAOpB,GAAcqB,EAAeD,OAxC1C,GAAID,GAAkBpB,EAAQ,GAAGoB,gBAG7BG,EAAiB,6DACjBP,EAAa,SAyCjBf,GAAcqB,EAAiB,SAASD,GAEtC,GAAIG,GAAYH,EAAKG,SACrB,IAAIA,EAAW,CACbA,EAAYA,EAAUC,OAAO,EAC7B,IAAIC,GAAUH,EAAeI,KAAKH,EAAUI,MAExCF,KAEFF,EAAUK,KAAOH,EAAQ,GACzBF,EAAUI,MAAQF,EAAQ,GAE1BL,EAAKS,QAAUN,EAAUK,KAAO,KAAOL,EAAUI,MAEjDP,EAAKN,MAAMgB,YAAcL,EAAQ,GAAGM,OAAO,EAAG,MAIlD,MAAOX,IAGTpB,EAAce,WAAaA,EAE3BzC,EAAOD,QAAU2B,EAEjBD,EAAQ,GAAGiC,UAAU1D,EAAOD,WACzB4D,EAAI,EAAEC,EAAI,IAAIC,GAAG,SAASpC,EAAQzB,EAAOD,GAc5C,QAAS+D,GAActD,EAAOuD,EAASC,GACrCD,EAAUA,GAAW3D,OAAO2D,YAC5BC,EAAgBA,KAEhB,IAAIC,GAAYD,EAAcE,SAAW,QAAS,OAAQ,OAAQ,QAC9D,WAAYH,IAASE,EAAUE,KAAK,SAOxC,KALA,GAAIC,GAAW,SAASC,EAAKvB,GAC3BtC,EAAM8D,eAAeD,EAAKvB,IAGxByB,EAAQN,EAAUO,MACfD,GACLE,EAAkBV,EAASQ,EAAOH,GAClCG,EAAQN,EAAUO,MAhBtB,GAAIC,GAAoBhD,EAAQ,GAAGiD,UAoBnC1E,GAAOD,QAAU+D,EAEjBrC,EAAQ,GAAGiC,UAAU1D,EAAOD,WACzB4E,EAAI,EAAEhB,EAAI,IAAIiB,GAAG,SAASnD,EAAQzB,EAAOD,GAC5C,QAAS8E,GAAiBtB,GACxBhD,KAAKuE,KAAO,mBACZvE,KAAKgD,QAAUA,EAEjBsB,EAAiBE,UAAY,GAAI5D,OACjC0D,EAAiBE,UAAUC,YAAcH,EAEzC7E,EAAOD,QAAU8E,OAEXF,GAAG,SAASlD,EAAQzB,EAAOD,GACjC,GAAIkF,GAAQxD,EAAQ,GAEhBiD,EAAa,SAASX,EAASQ,EAAOH,GACxC,GAAIc,GAAuBnB,EAAQQ,GAC/BY,EAAkBpB,CAEtB,IAAMQ,IAASR,GAAf,CAIA,GAAIqB,GAAwB,SAAVb,EAAmB,UAAYA,CAEjDR,GAAQQ,GAAS,WACf,GAAIc,MAAUC,MAAMhE,KAAKiE,WAErBlB,EAAMY,EAAMO,SAASH,EAAM,KAC3BvC,GAAQyB,MAAOa,EAAaK,OAAQ,UAAWjD,OAAQ+C,UAAWF,GAExD,YAAVd,EACEc,EAAK,MAAO,IAEdhB,EACE,sBAAwBY,EAAMO,SAASH,EAAKC,MAAM,GAAI,MAAQ,kBAChExC,EAAKN,MAAM+C,UAAYF,EAAKC,MAAM,GAClClB,GAAYA,EAASC,EAAKvB,IAG5BsB,GAAYA,EAASC,EAAKvB,GAIxBoC,GAGFQ,SAASX,UAAUY,MAAMrE,KAAK4D,EAAsBC,EAAiBE,KAK3ErF,GAAOD,SACL2E,WAAYA,KAGXd,EAAI,IAAIgC,GAAG,SAASnE,EAAQzB,EAAOD,IACtC,SAAWM,GA4CX,QAASwF,KACP,OAAQ,GAAIC,MAWd,QAASC,GAAqBC,EAAU5B,GACtC,MAAO6B,GAAW7B,GACd,SAAStB,GACP,MAAOsB,GAAStB,EAAMkD,IAExB5B,EAMN,QAAS5D,KACPD,KAAK2F,IAA8B,gBAATC,QAAqBA,KAAKC,WAEpD7F,KAAK8F,GAAgBC,EAAYC,GACjChG,KAAKiG,GAAiBF,EAAYG,GAClClG,KAAKmG,EAAyB,KAC9BnG,KAAKoG,EAAY,KACjBpG,KAAKqG,EAAe,KACpBrG,KAAKsG,EAAgB,KACrBtG,KAAKuG,EAAa,KAClBvG,KAAKwG,EAAiB,KACtBxG,KAAKyG,KACLzG,KAAK0G,GAEHC,QAASC,EAAQC,gBAAkBD,EAAQC,eAAeC,GAC1D5B,OAAQ,aACR6B,gBACAC,cACAC,iBACAC,gBACAC,QAAS,KACTC,qBAAqB,EACrBC,4BAA4B,EAC5BC,iBAAkB,EAElBC,aAAc,IACdC,gBAAiB,GACjBC,iBAAiB,EACjBC,YAAY,EACZC,WAAY,EACZC,iBAEF5H,KAAK6H,GACHC,OAAQ,OACRC,WAAW,EAKXC,eAAgBC,IAA2B,SAAW,IAExDjI,KAAKkI,EAAiB,EACtBlI,KAAKmI,GAAoB,EACzBnI,KAAKoI,EAAgCxH,MAAM4G,gBAG3CxH,KAAKqI,EAAmBzB,EAAQpD,YAChCxD,KAAKsI,KACLtI,KAAKuI,KACLvI,KAAKwI,EAAalD,IAClBtF,KAAKyI,KACLzI,KAAK0I,KACL1I,KAAK2I,EAAqB,KAE1B3I,KAAK4I,EAAYhC,EAAQiC,SACzB7I,KAAK8I,EAAY9I,KAAK4I,GAAa5I,KAAK4I,EAAUG,KAClD/I,KAAKgJ,GAGL,KAAK,GAAIlB,KAAU9H,MAAKqI,EACtBrI,KAAKsI,EAAwBR,GAAU9H,KAAKqI,EAAiBP,GA5HjE,GAAImB,GAAW/H,EAAQ,GACnB2E,EAAY3E,EAAQ,GACpBgI,EAAMhI,EAAQ,IACdoD,EAAmBpD,EAAQ,GAE3BwD,EAAQxD,EAAQ,GAChBiI,EAAezE,EAAMyE,aACrBC,EAAa1E,EAAM0E,WACnBC,EAAiB3E,EAAM2E,eACvBC,EAAU5E,EAAM4E,QAChBC,EAAW7E,EAAM6E,SACjBC,EAAgB9E,EAAM8E,cACtBzD,EAAcrB,EAAMqB,YACpBL,EAAahB,EAAMgB,WACnB+D,EAAW/E,EAAM+E,SACjBC,EAAUhF,EAAMgF,QAChBC,EAAgBjF,EAAMiF,cACtBC,EAAOlF,EAAMkF,KACbC,EAAcnF,EAAMmF,YACpBC,EAAWpF,EAAMoF,SACjBC,EAAerF,EAAMqF,aACrBC,EAAStF,EAAMsF,OACfC,EAAavF,EAAMuF,WACnBC,EAAYxF,EAAMwF,UAClBC,EAAQzF,EAAMyF,MACdC,EAAmB1F,EAAM0F,iBACzBC,EAAkB3F,EAAM2F,gBACxBC,EAAmB5F,EAAM4F,iBACzBC,EAAW7F,EAAM6F,SACjBC,EAAO9F,EAAM8F,KACbC,EAAgB/F,EAAM+F,cACtBxC,EAAyBvD,EAAMuD,uBAC/ByC,EAA0BhG,EAAMgG,wBAChCC,EAAqBjG,EAAMiG,mBAC3BC,EAAWlG,EAAMkG,SAEjB1G,EAAoBhD,EAAQ,GAAGiD,WAE/B0G,EAAU,2CAA2CC,MAAM,KAC7DC,EAAa,gEAOXnE,EACgB,mBAAX/G,QACHA,OACkB,mBAAXC,GAAyBA,EAAyB,mBAATC,MAAuBA,QACzEiG,EAAYY,EAAQoE,SACpB9E,EAAaU,EAAQqE,SAmFzBhL,GAAMuE,WAKJ0G,QAAS,SAETC,OAAO,EAEPlC,SAAUA,EASV7G,OAAQ,SAASgJ,EAAKC,GACpB,GAAItL,GAAOC,IAEX,IAAID,EAAKuG,EAEP,MADAtG,MAAKsL,EAAU,QAAS,4CACjBvL,CAET,KAAKqL,EAAK,MAAOrL,EAEjB,IAAIwL,GAAgBxL,EAAK2G,CAGrB2E,IACFzB,EAAKyB,EAAS,SAASG,EAAK1I,GAEd,SAAR0I,GAA0B,UAARA,GAA2B,SAARA,EACvCzL,EAAK0G,EAAe+E,GAAO1I,EAE3ByI,EAAcC,GAAO1I,IAK3B/C,EAAK0L,OAAOL,GAIZG,EAAcxE,aAAanD,KAAK,qBAChC2H,EAAcxE,aAAanD,KAAK,iDAGhC2H,EAAcxE,aAAekD,EAAWsB,EAAcxE,cACtDwE,EAAcvE,aAAauE,EAAcvE,WAAWhG,QAChDiJ,EAAWsB,EAAcvE,YAE7BuE,EAActE,gBAAgBsE,EAActE,cAAcjG,QACtDiJ,EAAWsB,EAActE,eAE7BsE,EAAcrE,aAAe+C,EAAWsB,EAAcrE,cACtDqE,EAAcG,eAAiBC,KAAKC,IAClC,EACAD,KAAKE,IAAIN,EAAcG,gBAAkB,IAAK,KAGhD,IAAII,IACFC,KAAK,EACLvI,SAAS,EACTwI,KAAK,EACLnD,UAAU,EACVoD,QAAQ,GAGNxE,EAAkB8D,EAAc9D,eACM,wBAAnCyE,SAASnL,KAAK0G,GACnBA,EAAkBoC,EAAYiC,EAAwBrE,GAC7CA,KAAoB,IAC7BA,EAAkBqE,GAEpBP,EAAc9D,gBAAkBA,CAEhC,IAAI0E,IACFC,UAAU,GAGR1E,EAAa6D,EAAc7D,UAW/B,OAVqC,uBAA9BwE,SAASnL,KAAK2G,GACnBA,EAAamC,EAAYsC,EAAoBzE,GACpCA,KAAe,IACxBA,EAAayE,GAEfZ,EAAc7D,WAAaA,EAE3BuB,EAAS7B,sBAAwBmE,EAAcnE,oBAGxCrH,GAWTsM,QAAS,WACP,GAAItM,GAAOC,IAyBX,OAxBID,GAAKuM,YAAcvM,EAAKoI,IAC1Bc,EAASsD,OAAOC,UAAU,WACxBzM,EAAK0M,EAAwBrH,MAAMrF,EAAMiF,aAGvCjF,EAAK2G,EAAeW,4BACtBtH,EAAK2M,IAGP3M,EAAK4M,IAED5M,EAAK2G,EAAegB,YAAc3H,EAAK2G,EAAegB,WAAW0E,UACnErM,EAAK6M,IAGH7M,EAAK2G,EAAee,iBAAiB1H,EAAK8M,IAG9C9M,EAAK+M,IAEL/M,EAAKoI,GAAoB,GAG3BvH,MAAM4G,gBAAkBzH,EAAK2G,EAAec,gBACrCxH,MAQTyL,OAAQ,SAASL,GACf,GAAIrL,GAAOC,KACT+M,EAAMhN,EAAKiN,EAAU5B,GACrB6B,EAAYF,EAAIG,KAAKC,YAAY,KACjCD,EAAOH,EAAIG,KAAKhK,OAAO,EAAG+J,EAE5BlN,GAAKqN,EAAOhC,EACZrL,EAAKwG,EAAawG,EAAIM,KACtBtN,EAAKuN,EAAgBP,EAAIQ,MAAQR,EAAIQ,KAAKrK,OAAO,GACjDnD,EAAKyG,EAAiBuG,EAAIG,KAAKhK,OAAO+J,EAAY,GAElDlN,EAAKuG,EAAgBvG,EAAKyN,EAAiBT,GAE3ChN,EAAK0N,EACH1N,EAAKuG,EAAgB,IAAM4G,EAAO,OAASnN,EAAKyG,EAAiB,UAInExG,KAAKgJ,KAWP0E,QAAS,SAASrC,EAASsC,EAAM7I,GAO/B,MANIY,GAAW2F,KACbvG,EAAO6I,MACPA,EAAOtC,EACPA,EAAUuC,QAGL5N,KAAK6N,KAAKxC,EAASsC,GAAMvI,MAAMpF,KAAM8E,IAW9C+I,KAAM,SAASxC,EAASsC,EAAMG,GAqC5B,QAASC,KACP,GAAIjJ,MACFnE,EAAIqE,UAAUhE,OACdgN,GAAQ3C,GAAYA,GAAWA,EAAQ2C,QAAS,CAQlD,KANIF,GAAWpI,EAAWoI,IACxBA,EAAQ1I,MAAMpF,KAAMgF,WAKfrE,KAAKmE,EAAKnE,GAAKqN,EAAOjO,EAAK8N,KAAKxC,EAASrG,UAAUrE,IAAMqE,UAAUrE,EAE1E,KAKE,MAAOgN,GAAKvI,MAAMpF,KAAM8E,GACxB,MAAO5E,GAGP,KAFAH,GAAKkO,IACLlO,EAAKiC,iBAAiB9B,EAAGmL,GACnBnL,GA1DV,GAAIH,GAAOC,IAGX,IAAI+F,EAAY4H,KAAUjI,EAAW2F,GACnC,MAAOA,EAWT,IAPI3F,EAAW2F,KACbsC,EAAOtC,EACPA,EAAUuC,SAKPlI,EAAWiI,GACd,MAAOA,EAIT,KACE,GAAIA,EAAKO,EACP,MAAOP,EAIT,IAAIA,EAAKQ,EACP,MAAOR,GAAKQ,EAEd,MAAOjO,GAIP,MAAOyN,GA8BT,IAAK,GAAIS,KAAYT,GACf3D,EAAO2D,EAAMS,KACfL,EAAQK,GAAYT,EAAKS,GAW7B,OARAL,GAAQvJ,UAAYmJ,EAAKnJ,UAEzBmJ,EAAKQ,EAAoBJ,EAGzBA,EAAQG,GAAY,EACpBH,EAAQM,EAAWV,EAEZI,GAQTO,UAAW,WAWT,MAVArF,GAASsD,OAAO+B,YAEhBtO,KAAKuO,IACLvO,KAAKwO,IACLxO,KAAKyO,IACLzO,KAAK0O,IAEL9N,MAAM4G,gBAAkBxH,KAAKoI,EAC7BpI,KAAKmI,GAAoB,EAElBnI,MAWT2O,EAA0B,SAASC,GACjC5O,KAAKsL,EAAU,QAAS,4CAA6CsD,GACrE5O,KAAKgC,iBAAiB4M,EAAMC,QAC1B5M,OACE6M,2BAA2B,MAUjCC,EAAgC,WAI9B,MAHA/O,MAAKgP,EAA2BhP,KAAKgP,EAAyBC,KAAKjP,MACnE4G,EAAQsI,kBACNtI,EAAQsI,iBAAiB,qBAAsBlP,KAAKgP,GAC/ChP,MAQTmP,EAAgC,WAG9B,MAFAvI,GAAQwI,qBACNxI,EAAQwI,oBAAoB,qBAAsBpP,KAAKgP,GAClDhP,MAUTgC,iBAAkB,SAASF,EAAIuJ,GAG7B,GAFAA,EAAUxB,GAAawF,eAAgB,GAAIhE,EAAUA,MAEjDlC,EAAarH,IAAOA,EAAGwN,MAEzBxN,EAAKA,EAAGwN,UACH,CAAA,GAAIlG,EAAWtH,IAAOuH,EAAevH,GAAK,CAK/C,GAAIyC,GAAOzC,EAAGyC,OAAS6E,EAAWtH,GAAM,WAAa,gBACjDkB,EAAUlB,EAAGkB,QAAUuB,EAAO,KAAOzC,EAAGkB,QAAUuB,CAEtD,OAAOvE,MAAK+D,eACVf,EACA6G,EAAYwB,GAGVkE,YAAY,EACZF,eAAgBhE,EAAQgE,eAAiB,KAGxC,GAAI/F,EAAQxH,GAEjBA,EAAKA,MACA,CAAA,IAAI0H,EAAc1H,GAavB,MAAO9B,MAAK+D,eACVjC,EACA+H,EAAYwB,GACVkE,YAAY,EACZF,eAAgBhE,EAAQgE,eAAiB,IAb7ChE,GAAUrL,KAAKwP,EAA2CnE,EAASvJ,GACnEA,EAAK,GAAIlB,OAAMyK,EAAQrI,UAkBzBhD,KAAKmG,EAAyBrE,CAO9B,KACE,GAAI2N,GAAQxG,EAASyG,kBAAkB5N,EACvC9B,MAAK2P,EAAiBF,EAAOpE,GAC7B,MAAOuE,GACP,GAAI9N,IAAO8N,EACT,KAAMA,GAIV,MAAO5P,OAGT6P,EAA4C,SAASC,EAAgBhO,GACnE,GAAIiO,GAASC,OAAOC,KAAKnO,GAAIoO,OACzB7E,EAAUxB,EAAYiG,GACxB9M,QACE,2CAA6C0H,EAAwBqF,GACvEI,aAAcjH,EAAI6G,IAClB9N,MAAO6N,EAAe7N,WAIxB,OAFAoJ,GAAQpJ,MAAMmO,EAAiBzF,EAAmB7I,GAE3CuJ,GAUTtH,eAAgB,SAASD,EAAKuH,GAI5B,IACIrL,KAAK0G,EAAeK,aAAasJ,OACnCrQ,KAAK0G,EAAeK,aAAasJ,KAAKvM,GAFxC,CAOAuH,EAAUA,MACVvH,GAAY,EAEZ,IAOIhC,GAPAS,EAAOsH,GAEP7G,QAASc,GAEXuH,EAQF,KACE,KAAM,IAAIzK,OAAMkD,GAChB,MAAO8L,GACP9N,EAAK8N,EAIP9N,EAAGyC,KAAO,IACV,IAAIkL,GAAQxG,EAASyG,kBAAkB5N,GAGnCwO,EAAc5G,EAAQ+F,EAAMA,QAAUA,EAAMA,MAAM,EAKlDa,IAAoC,2BAArBA,EAAY3C,OAC7B2C,EAAcb,EAAMA,MAAM,GAG5B,IAAIc,GAAWD,GAAeA,EAAYE,KAAQ,EAElD,MACIxQ,KAAK0G,EAAeM,WAAWqJ,OACjCrQ,KAAK0G,EAAeM,WAAWqJ,KAAKE,OAMlCvQ,KAAK0G,EAAeO,cAAcoJ,MACnCrQ,KAAK0G,EAAeO,cAAcoJ,KAAKE,IAF1C,CAOA,GAAIvQ,KAAK0G,EAAe6I,YAAelE,GAAWA,EAAQkE,WAAa,CAErEhN,EAAK4N,YAAkC,MAApB5N,EAAK4N,YAAsBrM,EAAMvB,EAAK4N,YAEzD9E,EAAUxB,GAENwF,eAAgB,GAElBhE,GAMFA,EAAQgE,gBAAkB,CAE1B,IAAIoB,GAASzQ,KAAK0Q,EAAejB,EAAOpE,EACxC9I,GAAKgN,YAEHkB,OAAQA,EAAOE,WAcnB,MATIpO,GAAK4N,cACP5N,EAAK4N,YAAczG,EAAQnH,EAAK4N,aAC5B5N,EAAK4N,aACJ5N,EAAK4N,cAIZnQ,KAAK4Q,EAAMrO,GAEJvC,QAGT6Q,kBAAmB,SAASC,GAC1B,GAAIC,GAAQlH,GAERmH,UAAW1L,IAAQ,KAErBwL,EAGF,IAAIpL,EAAW1F,KAAK0G,EAAeuK,oBAAqB,CACtD,GAAIC,GAASlR,KAAK0G,EAAeuK,mBAAmBF,EAEpD,IAAIxH,EAAS2H,KAAYvH,EAAcuH,GACrCH,EAAQG,MACH,IAAIA,KAAW,EACpB,MAAOlR,MAQX,MAJAA,MAAK0I,EAAa9E,KAAKmN,GACnB/Q,KAAK0I,EAAa1H,OAAShB,KAAK0G,EAAegF,gBACjD1L,KAAK0I,EAAayI,QAEbnR,MAGTmD,UAAW,SAASiO,GAClB,GAAIC,MAAgBtM,MAAMhE,KAAKiE,UAAW,EAO1C,OALAhF,MAAKuI,EAAS3E,MAAMwN,EAAQC,IACxBrR,KAAKmI,GACPnI,KAAK8M,IAGA9M,MASTsR,eAAgB,SAASjE,GAIvB,MAFArN,MAAKyG,EAAe4G,KAAOA,EAEpBrN,MASTuR,gBAAiB,SAAStP,GAGxB,MAFAjC,MAAKwR,EAAc,QAASvP,GAErBjC,MASTyR,eAAgB,SAASC,GAGvB,MAFA1R,MAAKwR,EAAc,OAAQE,GAEpB1R,MAQT2R,aAAc,WAGZ,MAFA3R,MAAKyG,KAEEzG,MAQT4R,WAAY,WAEV,MAAOhM,MAAKiM,MAAMhM,EAAU7F,KAAKyG,KASnCqL,eAAgB,SAASC,GAGvB,MAFA/R,MAAK0G,EAAeqL,YAAcA,EAE3B/R,MASTgS,WAAY,SAASrL,GAGnB,MAFA3G,MAAK0G,EAAeC,QAAUA,EAEvB3G,MAUTqC,gBAAiB,SAASwB,GACxB,GAAI4B,GAAWzF,KAAK0G,EAAeuL,YAEnC,OADAjS,MAAK0G,EAAeuL,aAAezM,EAAqBC,EAAU5B,GAC3D7D,MAUTkS,sBAAuB,SAASrO,GAC9B,GAAI4B,GAAWzF,KAAK0G,EAAeuK,kBAEnC,OADAjR,MAAK0G,EAAeuK,mBAAqBzL,EAAqBC,EAAU5B,GACjE7D,MAUTmS,sBAAuB,SAAStO,GAC9B,GAAI4B,GAAWzF,KAAK0G,EAAe0L,kBAEnC,OADApS,MAAK0G,EAAe0L,mBAAqB5M,EAAqBC,EAAU5B,GACjE7D,MAYTqS,aAAc,SAASC,GAGrB,MAFAtS,MAAK0G,EAAe4L,UAAYA,EAEzBtS,MAQTuS,cAAe,WACb,MAAOvS,MAAKmG,GAQdqM,YAAa,WACX,MAAOxS,MAAKqG,GAQdiG,QAAS,WACP,QAAKtM,KAAK2F,MACL3F,KAAKsG,IACHtG,KAAKyS,0BACRzS,KAAKyS,yBAA0B,EAC/BzS,KAAKsL,EAAU,QAAS,2CAEnB,KAKXoH,UAAW,WAIT,GAAIC,GAAc/L,EAAQ+L,WACtBA,IACF3S,KAAKoC,OAAOuQ,EAAYvH,IAAKuH,EAAYvQ,QAAQiK,WAIrDuG,iBAAkB,SAASvH,GACzB,GACGrF,EADH,CAKAqF,EAAUA,KAEV,IAAImH,GAAcnH,EAAQwH,SAAW7S,KAAKwS,aAC1C,KAAKA,EACH,KAAM,IAAIlO,GAAiB,kBAG7B,IAAI8G,GAAMC,EAAQD,KAAOpL,KAAKoN,CAC9B,KAAKhC,EACH,KAAM,IAAI9G,GAAiB,cAG7B,IAAIwO,GAASC,mBACTC,EAAK,EACTA,IAAM,YAAcF,EAAON,GAC3BQ,GAAM,QAAUF,EAAO1H,EAEvB,IAAIiC,GAAOhC,EAAQgC,MAAQrN,KAAKyG,EAAe4G,IAC3CA,KACEA,EAAK9I,OAAMyO,GAAM,SAAWF,EAAOzF,EAAK9I,OACxC8I,EAAK4F,QAAOD,GAAM,UAAYF,EAAOzF,EAAK4F,QAGhD,IAAIC,GAAelT,KAAKwN,EAAiBxN,KAAKgN,EAAU5B,IAEpD+H,EAASnN,EAAUoN,cAAc,SACrCD,GAAOE,OAAQ,EACfF,EAAOG,IAAMJ,EAAe,yBAA2BF,GACtDhN,EAAUuN,MAAQvN,EAAUwN,MAAMC,YAAYN,KAIjDO,EAAoB,WAClB,GAAI3T,GAAOC,IACXA,MAAKkI,GAAkB,EACvByL,WAAW,WAET5T,EAAKmI,GAAkB,KAI3B0L,EAAe,SAASC,EAAWxI,GAEjC,GAAIyI,GAAKtI,CAET,IAAKxL,KAAK8F,EAAV,CAEAuF,EAAUA,MAEVwI,EAAY,QAAUA,EAAU3Q,OAAO,EAAG,GAAG6Q,cAAgBF,EAAU3Q,OAAO,GAE1E8C,EAAUgO,aACZF,EAAM9N,EAAUgO,YAAY,cAC5BF,EAAIG,UAAUJ,GAAW,GAAM,KAE/BC,EAAM9N,EAAUkO,oBAChBJ,EAAID,UAAYA,EAGlB,KAAKrI,IAAOH,GACNrB,EAAOqB,EAASG,KAClBsI,EAAItI,GAAOH,EAAQG,GAGvB,IAAIxF,EAAUgO,YAEZhO,EAAUmO,cAAcL,OAIxB,KACE9N,EAAUoO,UAAU,KAAON,EAAID,UAAUQ,cAAeP,GACxD,MAAO5T,OAYboU,GAAyB,SAASC,GAChC,GAAIxU,GAAOC,IACX,OAAO,UAAS8T,GASd,GALA/T,EAAKyU,GAAmB,KAKpBzU,EAAK4I,IAAuBmL,EAAhC,CAEA/T,EAAK4I,EAAqBmL,CAM1B,IAAIW,EACJ,KACEA,EAASrK,EAAiB0J,EAAIW,QAC9B,MAAOvU,GACPuU,EAAS,YAGX1U,EAAK8Q,mBACH6D,SAAU,MAAQH,EAClBvR,QAASyR,OAUfE,GAAuB,WACrB,GAAI5U,GAAOC,KACT4U,EAAmB,GAKrB,OAAO,UAASd,GACd,GAAIW,EACJ,KACEA,EAASX,EAAIW,OACb,MAAOvU,GAGP,OAEF,GAAI2U,GAAUJ,GAAUA,EAAOI,OAK/B,IACGA,IACY,UAAZA,GAAmC,aAAZA,GAA2BJ,EAAOK,mBAF5D,CAQA,GAAIC,GAAUhV,EAAKyU,EACdO,IACHhV,EAAKiV,GAAwB,SAASlB,GAExCmB,aAAaF,GACbhV,EAAKyU,GAAmBb,WAAW,WACjC5T,EAAKyU,GAAmB,MACvBI,MAUPM,GAAmB,SAASC,EAAMC,GAChC,GAAIC,GAAY9K,EAASvK,KAAK4I,EAAUG,MACpCuM,EAAW/K,EAAS6K,GACpBG,EAAahL,EAAS4K,EAK1BnV,MAAK8I,EAAYsM,EAIbC,EAAUG,WAAaF,EAASE,UAAYH,EAAUI,OAASH,EAASG,OAC1EL,EAAKE,EAASI,UACZL,EAAUG,WAAaD,EAAWC,UAAYH,EAAUI,OAASF,EAAWE,OAC9EN,EAAOI,EAAWG,UAEpB1V,KAAK6Q,mBACH6D,SAAU,aACVnS,MACE6S,GAAIA,EACJD,KAAMA,MAKZQ,EAAwB,WACtB,GAAI5V,GAAOC,IACXD,GAAK6V,GAA4BzQ,SAASX,UAAU0H,SAEpD/G,SAASX,UAAU0H,SAAW,WAC5B,MAAoB,kBAATlM,OAAuBA,KAAKkO,EAC9BnO,EAAK6V,GAA0BxQ,MAAMpF,KAAKqO,EAAUrJ,WAEtDjF,EAAK6V,GAA0BxQ,MAAMpF,KAAMgF,aAItDpD,EAA0B,WACpB5B,KAAK4V,KAEPzQ,SAASX,UAAU0H,SAAWlM,KAAK4V,KAQvCC,EAAqB,WAKnB,QAASC,GAAWC,GAClB,MAAO,UAASC,EAAI7V,GAKlB,IAAK,GADD2E,GAAO,GAAImR,OAAMjR,UAAUhE,QACtBL,EAAI,EAAGA,EAAImE,EAAK9D,SAAUL,EACjCmE,EAAKnE,GAAKqE,UAAUrE,EAEtB,IAAIuV,GAAmBpR,EAAK,EAQ5B,OAPIY,GAAWwQ,KACbpR,EAAK,GAAK/E,EAAK8N,KAAKqI,IAMlBH,EAAK3Q,MACA2Q,EAAK3Q,MAAMpF,KAAM8E,GAEjBiR,EAAKjR,EAAK,GAAIA,EAAK,KAOhC,QAASqR,GAAgBrW,GACvB,GAAIsW,GAAQxP,EAAQ9G,IAAW8G,EAAQ9G,GAAQ0E,SAC3C4R,IAASA,EAAMC,gBAAkBD,EAAMC,eAAe,sBACxD7L,EACE4L,EACA,mBACA,SAASL,GACP,MAAO,UAASxB,EAASyB,EAAIM,EAASC,GAEpC,IACMP,GAAMA,EAAGQ,cACXR,EAAGQ,YAAczW,EAAK8N,KAAKmI,EAAGQ,cAEhC,MAAOC,IAMT,GAAIC,GAAQC,EAAcC,CA6B1B,OA1BEnP,IACAA,EAAgBuE,MACJ,gBAAXlM,GAAuC,SAAXA,KAI7B6W,EAAe5W,EAAKiV,GAAwB,SAC5C4B,EAAkB7W,EAAK8W,KACvBH,EAAS,SAAS5C,GAIhB,GAAKA,EAAL,CAEA,GAAID,EACJ,KACEA,EAAYC,EAAI/Q,KAChB,MAAO7C,GAGP,OAEF,MAAkB,UAAd2T,EAA8B8C,EAAa7C,GACxB,aAAdD,EAAiC+C,EAAgB9C,GAArD,UAGFiC,EAAKhV,KACVf,KACAuU,EACAxU,EAAK8N,KAAKmI,EAAIpI,OAAW8I,GACzBJ,EACAC,KAINO,GAEFtM,EACE4L,EACA,sBACA,SAASL,GACP,MAAO,UAASjC,EAAKkC,EAAIM,EAASC,GAChC,IACEP,EAAKA,IAAOA,EAAG7H,EAAoB6H,EAAG7H,EAAoB6H,GAC1D,MAAO9V,IAGT,MAAO6V,GAAKhV,KAAKf,KAAM8T,EAAKkC,EAAIM,EAASC,KAG7CO,IAvGN,GAAI/W,GAAOC,KAEP8W,EAAkB/W,EAAK0I,EA2BvBhB,EAAkBzH,KAAK0G,EAAee,eA+E1C+C,GAAK5D,EAAS,aAAckP,EAAYgB,GACxCtM,EAAK5D,EAAS,cAAekP,EAAYgB,GACrClQ,EAAQmQ,uBACVvM,EACE5D,EACA,wBACA,SAASmP,GACP,MAAO,UAASiB,GACd,MAAOjB,GAAKhW,EAAK8N,KAAKmJ,MAG1BF,EAqCJ,KAAK,GA/BDG,IACF,cACA,SACA,OACA,mBACA,iBACA,oBACA,kBACA,cACA,aACA,qBACA,cACA,aACA,iBACA,eACA,kBACA,cACA,cACA,eACA,qBACA,SACA,YACA,eACA,gBACA,YACA,kBACA,SACA,iBACA,4BACA,wBAEOtW,EAAI,EAAGA,EAAIsW,EAAajW,OAAQL,IACvCwV,EAAgBc,EAAatW,KAajCuW,EAAwB,WAMtB,QAASC,GAASC,EAAMrL,GAClBqL,IAAQrL,IAAOrG,EAAWqG,EAAIqL,KAChC5M,EAAKuB,EAAKqL,EAAM,SAASrB,GACvB,MAAOhW,GAAK8N,KAAKkI,KARvB,GAAIhW,GAAOC,KACPyH,EAAkBzH,KAAK0G,EAAee,gBAEtCqP,EAAkB/W,EAAK0I,CAU3B,IAAIhB,EAAgBsE,KAAO,kBAAoBnF,GAAS,CACtD,GAAIyQ,GAAWzQ,EAAQ0Q,gBAAkB1Q,EAAQ0Q,eAAe9S,SAChEgG,GACE6M,EACA,OACA,SAASE,GACP,MAAO,UAASzP,EAAQ0I,GAYtB,MARI/G,GAAS+G,IAAQA,EAAIgH,QAAQzX,EAAKwG,UACpCvG,KAAKyX,IACH3P,OAAQA,EACR0I,IAAKA,EACLkH,YAAa,OAIVH,EAASnS,MAAMpF,KAAMgF,aAGhC8R,GAGFtM,EACE6M,EACA,OACA,SAASM,GACP,MAAO,YAIL,QAASC,KACP,GAAI7L,EAAI0L,IAAkC,IAAnB1L,EAAI8L,WAAkB,CAC3C,IAGE9L,EAAI0L,GAAYC,YAAc3L,EAAI+L,OAClC,MAAO5X,IAITH,EAAK8Q,mBACH9N,KAAM,OACN2R,SAAU,MACVnS,KAAMwJ,EAAI0L,MAMhB,IAAK,GArBD1L,GAAM/L,KAoBN+X,GAAS,SAAU,UAAW,cACzBC,EAAI,EAAGA,EAAID,EAAM/W,OAAQgX,IAChCb,EAASY,EAAMC,GAAIjM,EAiBrB,OAdI,sBAAwBA,IAAOrG,EAAWqG,EAAIkM,oBAChDzN,EACEuB,EACA,qBACA,SAASgK,GACP,MAAOhW,GAAK8N,KAAKkI,EAAMnI,OAAWgK,KAMtC7L,EAAIkM,mBAAqBL,EAGpBD,EAASvS,MAAMpF,KAAMgF,aAGhC8R,GAIArP,EAAgBsE,KAAOtB,KACzBD,EACE5D,EACA,QACA,SAASsR,GACP,MAAO,YAKL,IAAK,GADDpT,GAAO,GAAImR,OAAMjR,UAAUhE,QACtBL,EAAI,EAAGA,EAAImE,EAAK9D,SAAUL,EACjCmE,EAAKnE,GAAKqE,UAAUrE,EAGtB,IAEI6P,GAFA2H,EAAarT,EAAK,GAClBgD,EAAS,KAeb,IAZ0B,gBAAfqQ,GACT3H,EAAM2H,EACG,WAAavR,IAAWuR,YAAsBvR,GAAQwR,SAC/D5H,EAAM2H,EAAW3H,IACb2H,EAAWrQ,SACbA,EAASqQ,EAAWrQ,SAGtB0I,EAAM,GAAK2H,EAIT3H,EAAIgH,QAAQzX,EAAKwG,QACnB,MAAO2R,GAAU9S,MAAMpF,KAAM8E,EAG3BA,GAAK,IAAMA,EAAK,GAAGgD,SACrBA,EAAShD,EAAK,GAAGgD,OAGnB,IAAIuQ,IACFvQ,OAAQA,EACR0I,IAAKA,EACLkH,YAAa,KAGf,OAAOQ,GACJ9S,MAAMpF,KAAM8E,GACZwT,KAAK,SAASC,GASb,MARAF,GAAUX,YAAca,EAAST,OAEjC/X,EAAK8Q,mBACH9N,KAAM,OACN2R,SAAU,QACVnS,KAAM8V,IAGDE,IAER,SAAS,SAAS9B,GASjB,KAPA1W,GAAK8Q,mBACH9N,KAAM,OACN2R,SAAU,QACVnS,KAAM8V,EACNrU,MAAO,UAGHyS,MAIdK,GAMArP,EAAgBuE,KAAOhM,KAAK8F,IAC1BE,EAAUkJ,kBACZlJ,EAAUkJ,iBAAiB,QAASnP,EAAKiV,GAAwB,UAAU,GAC3EhP,EAAUkJ,iBAAiB,WAAYnP,EAAK8W,MAAyB,IAC5D7Q,EAAUwS,cAEnBxS,EAAUwS,YAAY,UAAWzY,EAAKiV,GAAwB,UAC9DhP,EAAUwS,YAAY,aAAczY,EAAK8W,OAQ7C,IAAI4B,GAAS7R,EAAQ6R,OACjBC,EAAsBD,GAAUA,EAAOE,KAAOF,EAAOE,IAAIC,QACzDC,GACDH,GACD9R,EAAQkS,SACRA,QAAQC,WACRD,QAAQE,YACV,IAAIvR,EAAgBoB,UAAYgQ,EAAwB,CAEtD,GAAII,GAAgBrS,EAAQsS,UAC5BtS,GAAQsS,WAAa,WACnB,GAAIC,GAAcpZ,EAAK6I,EAAUG,IAGjC,IAFAhJ,EAAKqZ,GAAkBrZ,EAAK+I,EAAWqQ,GAEnCF,EACF,MAAOA,GAAc7T,MAAMpF,KAAMgF,WAIrC,IAAIqU,GAA6B,SAASC,GAGxC,MAAO,YACL,GAAI9I,GAAMxL,UAAUhE,OAAS,EAAIgE,UAAU,GAAK4I,MAQhD,OALI4C,IAEFzQ,EAAKqZ,GAAkBrZ,EAAK+I,EAAW0H,EAAM,IAGxC8I,EAAiBlU,MAAMpF,KAAMgF,YAIxCwF,GAAKsO,QAAS,YAAaO,EAA4BvC,GACvDtM,EAAKsO,QAAS,eAAgBO,EAA4BvC,GAG5D,GAAIrP,EAAgBjE,SAAW,WAAaoD,IAAWpD,QAAQ+V,IAAK,CAElE,GAAIC,GAAwB,SAAS1V,EAAKvB,GACxCxC,EAAK8Q,mBACH7N,QAASc,EACTE,MAAOzB,EAAKyB,MACZ0Q,SAAU,YAId9K,IAAM,QAAS,OAAQ,OAAQ,QAAS,OAAQ,SAASgK,EAAG5P,GAC1DE,EAAkBV,QAASQ,EAAOwV,OAKxCC,EAAkB,WAGhB,IADA,GAAIC,GACG1Z,KAAKyI,EAAiBzH,QAAQ,CACnC0Y,EAAU1Z,KAAKyI,EAAiB0I,OAEhC,IAAIL,GAAM4I,EAAQ,GAChBnV,EAAOmV,EAAQ,GACf3D,EAAO2D,EAAQ,EAEjB5I,GAAIvM,GAAQwR,IAIhB4D,EAAiB,WAEf,IAAK,GAAI7R,KAAU9H,MAAKsI,EACtBtI,KAAKqI,EAAiBP,GAAU9H,KAAKsI,EAAwBR,IAIjE8R,EAAe,WACb,GAAI7Z,GAAOC,IAGX4J,GAAK5J,KAAKuI,EAAU,SAASqL,EAAGxC,GAC9B,GAAIyI,GAAYzI,EAAO,GACnBtM,EAAOsM,EAAO,EAClByI,GAAUzU,MAAMrF,GAAOA,GAAM+Z,OAAOhV,OAIxCiV,EAAW,SAASC,GAClB,GAAIC,GAAIlP,EAAWlI,KAAKmX,GACtB5O,KACAzK,EAAI,CAEN,KACE,KAAOA,KAAKyK,EAAIP,EAAQlK,IAAMsZ,EAAEtZ,IAAM,GACtC,MAAOT,GACP,KAAM,IAAIoE,GAAiB,gBAAkB0V,GAG/C,GAAI5O,EAAImC,OAASvN,KAAK0G,EAAewT,eACnC,KAAM,IAAI5V,GACR,iFAIJ,OAAO8G,IAGT+O,EAAkB,SAASpN,GAEzB,GAAImG,GAAe,KAAOnG,EAAI0I,MAAQ1I,EAAIqN,KAAO,IAAMrN,EAAIqN,KAAO,GAKlE,OAHIrN,GAAIyI,WACNtC,EAAenG,EAAIyI,SAAW,IAAMtC,GAE/BA,GAGTmH,EAAyB,WAElBra,KAAKkI,GACRlI,KAAK2P,EAAiBvK,MAAMpF,KAAMgF,YAItCsV,EAAkB,SAASC,EAAWlP,GACpC,GAAIoF,GAASzQ,KAAK0Q,EAAe6J,EAAWlP,EAE5CrL,MAAKwa,EAAc,UACjBD,UAAWA,EACXlP,QAASA,IAGXrL,KAAKya,GACHF,EAAUhW,KACVgW,EAAUvX,QACVuX,EAAU/J,IACV+J,EAAUG,OACVjK,EACApF,IAIJsP,EAAgB,SAASJ,EAAWlP,GAClC,GAAItL,GAAOC,KACPyQ,IACJ,IAAI8J,EAAU9K,OAAS8K,EAAU9K,MAAMzO,SACrC4I,EAAK2Q,EAAU9K,MAAO,SAAS9O,EAAG8O,GAChC,GAAImL,GAAQ7a,EAAK8a,GAAgBpL,EAAO8K,EAAU/J,IAC9CoK,IACFnK,EAAO7M,KAAKgX,KAKZvP,GAAWA,EAAQgE,gBACrB,IAAK,GAAI2I,GAAI,EAAGA,EAAI3M,EAAQgE,gBAAkB2I,EAAIvH,EAAOzP,OAAQgX,IAC/DvH,EAAOuH,GAAG8C,QAAS,CAKzB,OADArK,GAASA,EAAO1L,MAAM,EAAG/E,KAAK0G,EAAec,kBAI/CuT,GAAiB,SAASH,EAAOI,GAE/B,GAAIC,IACFC,SAAUN,EAAMpK,IAChBkK,OAAQE,EAAMO,KACdC,MAAOR,EAAMS,OACbC,WAAUV,EAAMjN,MAAQ,IAuB1B,OAfKiN,GAAMpK,MACTyK,EAAWC,SAAWF,GAGxBC,EAAWH,SAGN9a,KAAK0G,EAAeQ,aAAamJ,OACjCrQ,KAAK0G,EAAeQ,aAAamJ,KAAK4K,EAAWC,WAEpD,qBAAqB7K,KAAK4K,EAAW,cAErC,qBAAqB5K,KAAK4K,EAAWC,WAGhCD,GAGTM,GAAmB,SAASxY,EAAMC,EAASuN,EAASmK,EAAQjK,EAAQpF,GAClE,GAAImQ,IAAmBzY,EAAOA,EAAO,KAAO,KAAOC,GAAW,GAC9D,KACIhD,KAAK0G,EAAeK,aAAasJ,OAClCrQ,KAAK0G,EAAeK,aAAasJ,KAAKrN,KACrChD,KAAK0G,EAAeK,aAAasJ,KAAKmL,GAH1C,CAQA,GAAIjM,EAoBJ,IAlBIkB,GAAUA,EAAOzP,QACnBuP,EAAUE,EAAO,GAAGyK,UAAY3K,EAGhCE,EAAOE,UACPpB,GAAckB,OAAQA,IACbF,IACThB,GACEkB,SAEIyK,SAAU3K,EACVmK,OAAQA,EACRI,QAAQ,QAOZ9a,KAAK0G,EAAeM,WAAWqJ,OACjCrQ,KAAK0G,EAAeM,WAAWqJ,KAAKE,OAMlCvQ,KAAK0G,EAAeO,cAAcoJ,MACnCrQ,KAAK0G,EAAeO,cAAcoJ,KAAKE,IAF1C,CAOA,GAAIhO,GAAOsH,GAGPnH,WACEC,SAEII,KAAMA,EACND,MAAOE,EACPuM,WAAYA,KAIlBkM,QAASlL,GAEXlF,EAIFrL,MAAK4Q,EAAMrO,MAGbmZ,GAAa,SAASnZ,GAGpB,GAAIqJ,GAAM5L,KAAK0G,EAAeY,gBAI9B,IAHI/E,EAAKS,UACPT,EAAKS,QAAU8G,EAASvH,EAAKS,QAAS4I,IAEpCrJ,EAAKG,UAAW,CAClB,GAAIA,GAAYH,EAAKG,UAAUC,OAAO,EACtCD,GAAUI,MAAQgH,EAASpH,EAAUI,MAAO8I,GAG9C,GAAI+P,GAAUpZ,EAAKoZ,OAanB,OAZIA,KACEA,EAAQnL,MACVmL,EAAQnL,IAAM1G,EAAS6R,EAAQnL,IAAKxQ,KAAK0G,EAAea,eAEtDoU,EAAQC,UACVD,EAAQC,QAAU9R,EAAS6R,EAAQC,QAAS5b,KAAK0G,EAAea,gBAIhEhF,EAAKsZ,aAAetZ,EAAKsZ,YAAYlZ,QACvC3C,KAAK8b,GAAiBvZ,EAAKsZ,aAEtBtZ,GAMTwZ,GAAkB,SAASF,GAQzB,IAAK,GAJHG,GACAjL,EACAxO,EAHE0Z,GAAY,KAAM,OAAQ,OAKrBtb,EAAI,EAAGA,EAAIkb,EAAYlZ,OAAO3B,SAAUL,EAE/C,GADAoQ,EAAQ8K,EAAYlZ,OAAOhC,GAExBoQ,EAAMsF,eAAe,SACrB9M,EAASwH,EAAMxO,QAChBwH,EAAagH,EAAMxO,MAHrB,CAOAA,EAAOsH,KAAgBkH,EAAMxO,KAC7B,KAAK,GAAIyV,GAAI,EAAGA,EAAIiE,EAASjb,SAAUgX,EACrCgE,EAAUC,EAASjE,GACfzV,EAAK8T,eAAe2F,IAAYzZ,EAAKyZ,KACvCzZ,EAAKyZ,GAAWlS,EAASvH,EAAKyZ,GAAUhc,KAAK0G,EAAea,cAGhEsU,GAAYlZ,OAAOhC,GAAG4B,KAAOA,IAIjC2Z,GAAc,WACZ,GAAKlc,KAAKiG,GAAkBjG,KAAK8F,EAAjC,CACA,GAAIqW,KAkBJ,OAhBInc,MAAKiG,GAAiBC,EAAWkW,YACnCD,EAAShV,SACPkV,aAAcpR,UAAUmR,YAKxBxV,EAAQiC,UAAYjC,EAAQiC,SAASE,OACvCoT,EAAS3L,IAAM5J,EAAQiC,SAASE,MAG9B/I,KAAK8F,GAAgBE,EAAUsW,WAC5BH,EAAShV,UAASgV,EAAShV,YAChCgV,EAAShV,QAAQyU,QAAU5V,EAAUsW,UAGhCH,IAGTI,EAAe,WACbvc,KAAKwc,GAAmB,EACxBxc,KAAKyc,GAAgB,MAGvBC,GAAgB,WACd,MAAO1c,MAAKwc,IAAoBlX,IAAQtF,KAAKyc,GAAgBzc,KAAKwc,IAYpEG,GAAe,SAASC,GACtB,GAAIC,GAAO7c,KAAKoG,CAEhB,UACGyW,GACDD,EAAQ5Z,UAAY6Z,EAAK7Z,SACzB4Z,EAAQnB,UAAYoB,EAAKpB,WAKvBmB,EAAQrN,YAAcsN,EAAKtN,WACtBjF,EAAiBsS,EAAQrN,WAAYsN,EAAKtN,aACxCqN,EAAQla,YAAama,EAAKna,WAE5B2H,EAAgBuS,EAAQla,UAAWma,EAAKna,aAMnDoa,GAAkB,SAASnB,GAEzB,IAAI3b,KAAK+c,KAAT,CAIA,GAAIjF,GAAS6D,EAAQ7D,MAKrB,IAAiB,MAAXA,GAA6B,MAAXA,GAA6B,MAAXA,EAA1C,CAEA,GAAIkF,EACJ,KAIIA,EADEvS,IACMkR,EAAQxU,QAAQ8V,IAAI,eAEpBtB,EAAQuB,kBAAkB,eAIpCF,EAA8B,IAAtBG,SAASH,EAAO,IACxB,MAAO9c,IAITF,KAAKwc,GAAmBQ,EAEpBA,EAEwB,EAAxBhd,KAAKwc,IAAwB,IAEjCxc,KAAKyc,GAAgBnX,OAGvB8X,EAAO,SAAS7a,GACd,GAAIgJ,GAAgBvL,KAAK0G,EAErB2W,GACAC,QAAStd,KAAKwG,EACdtB,OAAQqG,EAAcrG,OACtBqY,SAAU,cAEZpB,EAAWnc,KAAKwd,IAsDlB,IApDIrB,IACFkB,EAAS1B,QAAUQ,GAIjB5Z,EAAK8M,sBAAuB9M,GAAK8M,eAErC9M,EAAOsH,EAAYwT,EAAU9a,GAG7BA,EAAKmP,KAAO7H,EAAYA,KAAgB7J,KAAKyG,EAAeiL,MAAOnP,EAAKmP,MACxEnP,EAAKN,MAAQ4H,EAAYA,KAAgB7J,KAAKyG,EAAexE,OAAQM,EAAKN,OAG1EM,EAAKN,MAAM,oBAAsBqD,IAAQtF,KAAKwI,EAE1CxI,KAAK0I,GAAgB1I,KAAK0I,EAAa1H,OAAS,IAGlDuB,EAAKsZ,aACHlZ,UAAWoC,MAAMhE,KAAKf,KAAK0I,EAAc,KAIzC1I,KAAKyG,EAAe4G,OAEtB9K,EAAK8K,KAAOrN,KAAKyG,EAAe4G,MAI9B9B,EAAcwG,cAAaxP,EAAKwP,YAAcxG,EAAcwG,aAG5DxG,EAAc5E,UAASpE,EAAKoE,QAAU4E,EAAc5E,SAGpD4E,EAAckS,aAAYlb,EAAKmb,YAAcnS,EAAckS,YAE/Dlb,EAAOvC,KAAK2d,GAAcpb,GAG1ByN,OAAOC,KAAK1N,GAAMqb,QAAQ,SAASpS,IAChB,MAAbjJ,EAAKiJ,IAA8B,KAAdjJ,EAAKiJ,IAAe7B,EAAcpH,EAAKiJ,YACvDjJ,GAAKiJ,KAIZ9F,EAAW6F,EAAc0G,gBAC3B1P,EAAOgJ,EAAc0G,aAAa1P,IAASA,GAIxCA,IAAQoH,EAAcpH,MAMzBmD,EAAW6F,EAAc6G,qBACxB7G,EAAc6G,mBAAmB7P,IAOpC,MAAIvC,MAAK+c,SACP/c,MAAKsL,EAAU,OAAQ,uCAAwC/I,QAIzB,gBAA7BgJ,GAAc5D,WACnBgE,KAAKkS,SAAWtS,EAAc5D,YAChC3H,KAAK8d,GAAsBvb,GAG7BvC,KAAK8d,GAAsBvb,KAI/Bwb,GAAe,SAASxb,GACtB,MAAOqI,GAASrI,EAAMvC,KAAK0G,EAAekB,eAG5CoW,GAAU,WACR,MAAO7T,MAGT8T,GAAuB,SAAS1b,EAAMsB,GACpC,GAAI9D,GAAOC,KACPuL,EAAgBvL,KAAK0G,CAEzB,IAAK1G,KAAKsM,UAAV,CAQA,GALA/J,EAAOvC,KAAKke,GAAY3b,IAKnBvC,KAAK0G,EAAeyX,iBAAmBne,KAAKoe,GAAc7b,GAE7D,WADAvC,MAAKsL,EAAU,OAAQ,+BAAgC/I,EAOzDvC,MAAKqG,EAAe9D,EAAK8b,WAAa9b,EAAK8b,SAAWre,KAAKse,MAG3Dte,KAAKoG,EAAY7D,EAEjBvC,KAAKsL,EAAU,QAAS,uBAAwB/I,EAEhD,IAAIgc,IACFC,eAAgB,IAChBC,cAAe,YAAcze,KAAKkL,QAClCwT,WAAY1e,KAAKuG,EAGfvG,MAAKsN,IACPiR,EAAKI,cAAgB3e,KAAKsN,EAG5B,IAAI5K,GAAYH,EAAKG,WAAaH,EAAKG,UAAUC,OAAO,EAItD3C,MAAK0G,EAAee,iBACpBzH,KAAK0G,EAAee,gBAAgBwE,QAEpCjM,KAAK6Q,mBACH6D,SAAU,SACV1R,QAASN,GACJA,EAAUK,KAAOL,EAAUK,KAAO,KAAO,IAAML,EAAUI,MAC1DP,EAAKS,QACTqb,SAAU9b,EAAK8b,SACfra,MAAOzB,EAAKyB,OAAS,SAIzB,IAAIwM,GAAMxQ,KAAKyN,GACdlC,EAAc+G,WAAatS,KAAK4e,IAAc7d,KAAKf,MAClDwQ,IAAKA,EACL+N,KAAMA,EACNhc,KAAMA,EACN8I,QAASE,EACTsT,UAAW,WACT9e,EAAKiJ,IAELjJ,EAAKya,EAAc,WACjBjY,KAAMA,EACN+Q,IAAK9C,IAEP3M,GAAYA,KAEdib,QAAS,SAAiBxP,GACxBvP,EAAKuL,EAAU,QAAS,mCAAoCgE,GAExDA,EAAMqM,SACR5b,EAAKgf,GAAiBzP,EAAMqM,SAG9B5b,EAAKya,EAAc,WACjBjY,KAAMA,EACN+Q,IAAK9C,IAEPlB,EAAQA,GAAS,GAAI1O,OAAM,sDAC3BiD,GAAYA,EAASyL,QAK3B0P,GAAc,SAASC,GAErB,GAAIzO,GAAMyO,EAAKzO,IAAM,IAAMtG,EAAU+U,EAAKV,MAEtCW,EAAmB,KACnBC,IAUJ,IARIF,EAAK5T,QAAQlE,UACf+X,EAAmBlf,KAAKof,GAAcH,EAAK5T,QAAQlE,UAGjD8X,EAAK5T,QAAQgU,kBACfF,EAA2Bnf,KAAKof,GAAcH,EAAK5T,QAAQgU,kBAGzD5U,IAAiB,CACnB0U,EAAyB3L,KAAO3N,EAAUoZ,EAAK1c,KAE/C,IAAI+c,GAAsBzV,KAAgB7J,KAAK6H,GAC3C0X,EAAe1V,EAAYyV,EAAqBH,EAMpD,OAJID,KACFK,EAAapY,QAAU+X,GAGlBtY,EACJ4Y,MAAMhP,EAAK+O,GACXjH,KAAK,SAASC,GACb,GAAIA,EAASkH,GACXR,EAAKJ,WAAaI,EAAKJ,gBAClB,CACL,GAAIvP,GAAQ,GAAI1O,OAAM,sBAAwB2X,EAAST,OAGvDxI,GAAMqM,QAAUpD,EAChB0G,EAAKH,SAAWG,EAAKH,QAAQxP,MAGhC,SAAS,WACR2P,EAAKH,SACHG,EAAKH,QAAQ,GAAIle,OAAM,6CAI/B,GAAI+a,GAAU/U,EAAQ0Q,gBAAkB,GAAI1Q,GAAQ0Q,cACpD,IAAKqE,EAAL,CAGA,GAAI+D,GAAU,mBAAqB/D,IAAqC,mBAAnBgE,eAEhDD,KAED,mBAAqB/D,GACvBA,EAAQ1D,mBAAqB,WAC3B,GAA2B,IAAvB0D,EAAQ9D,WAEL,GAAuB,MAAnB8D,EAAQ7D,OACjBmH,EAAKJ,WAAaI,EAAKJ,gBAClB,IAAII,EAAKH,QAAS,CACvB,GAAIrI,GAAM,GAAI7V,OAAM,sBAAwB+a,EAAQ7D,OACpDrB,GAAIkF,QAAUA,EACdsD,EAAKH,QAAQrI,MAIjBkF,EAAU,GAAIgE,gBAGdnP,EAAMA,EAAIoP,QAAQ,WAAY,IAG1BX,EAAKJ,YACPlD,EAAQkE,OAASZ,EAAKJ,WAEpBI,EAAKH,UACPnD,EAAQmE,QAAU,WAChB,GAAIrJ,GAAM,GAAI7V,OAAM,oCACpB6V,GAAIkF,QAAUA,EACdsD,EAAKH,QAAQrI,MAKnBkF,EAAQoE,KAAK,OAAQvP,GAEjB0O,GACFtV,EAAKsV,EAAkB,SAAS1T,EAAK1I,GACnC6Y,EAAQqE,iBAAiBxU,EAAK1I,KAIlC6Y,EAAQsE,KAAKpa,EAAUoZ,EAAK1c,UAG9B2d,GAAe,SAASC,GACtB,GAAIC,KAEJ,KAAK,GAAI5U,KAAO2U,GACd,GAAIA,EAAK9J,eAAe7K,GAAM,CAC5B,GAAI1I,GAAQqd,EAAK3U,EACjB4U,GAAU5U,GAAwB,kBAAV1I,GAAuBA,IAAUA,EAI7D,MAAOsd,IAGTC,EAAW,SAASrc,GAGhBhE,KAAKsI,EAAwBtE,KAC5BhE,KAAKmL,OAASnL,KAAK0G,EAAeyE,QAGnChG,SAASX,UAAUY,MAAMrE,KACvBf,KAAKsI,EAAwBtE,GAC7BhE,KAAKqI,KACFtD,MAAMhE,KAAKiE,UAAW,KAK/Bsb,EAAe,SAAS9U,EAAKkC,GACvB3H,EAAY2H,SACP1N,MAAKyG,EAAe+E,GAE3BxL,KAAKyG,EAAe+E,GAAO3B,EAAY7J,KAAKyG,EAAe+E,OAAYkC,KAM7EzN,EAAMuE,UAAU+b,QAAUtgB,EAAMuE,UAAU8M,eAC1CrR,EAAMuE,UAAUgc,kBAAoBvgB,EAAMuE,UAAUwN,WAEpDvS,EAAOD,QAAUS,IAEdc,KAAKf,KAAuB,mBAAXF,QAAyBA,OAAyB,mBAATC,MAAuBA,KAAyB,mBAAXF,QAAyBA,aACxH4gB,GAAK,GAAGpc,EAAI,EAAED,EAAI,EAAEf,EAAI,EAAEqd,EAAI,EAAEC,EAAI,IAAIvd,GAAG,SAASlC,EAAQzB,EAAOD,IACtE,SAAWM,GAOX,GAAI8gB,GAAmB1f,EAAQ,GAG3B0F,EACgB,mBAAX/G,QACHA,OACkB,mBAAXC,GAAyBA,EAAyB,mBAATC,MAAuBA,QACzE8gB,EAASja,EAAQ3G,MAEjBA,EAAQ,GAAI2gB,EAQhB3gB,GAAM6gB,WAAa,WAEjB,MADAla,GAAQ3G,MAAQ4gB,EACT5gB,GAGTA,EAAMyS,YAENjT,EAAOD,QAAUS,EAoCjBR,EAAOD,QAAQuhB,OAASH,IAErB7f,KAAKf,KAAuB,mBAAXF,QAAyBA,OAAyB,mBAATC,MAAuBA,KAAyB,mBAAXF,QAAyBA,aACxHwF,EAAI,IAAIhC,GAAG,SAASnC,EAAQzB,EAAOD,IACtC,SAAWM,GAQX,QAASyJ,GAASyX,GAChB,MAAuB,gBAATA,IAA8B,OAATA,EAKrC,QAAS1X,GAAQxG,GACf,OAAQkN,OAAOxL,UAAU0H,SAASnL,KAAK+B,IACrC,IAAK,iBACH,OAAO,CACT,KAAK,qBACH,OAAO,CACT,KAAK,wBACH,OAAO,CACT,SACE,MAAOA,aAAiBlC,QAI9B,QAASuI,GAAarG,GACpB,MAAiD,wBAA1CkN,OAAOxL,UAAU0H,SAASnL,KAAK+B,GAGxC,QAASsG,GAAWtG,GAClB,MAAiD,sBAA1CkN,OAAOxL,UAAU0H,SAASnL,KAAK+B,GAGxC,QAASuG,GAAevG,GACtB,MAAiD,0BAA1CkN,OAAOxL,UAAU0H,SAASnL,KAAK+B,GAGxC,QAASiD,GAAYib,GACnB,MAAgB,UAATA,EAGT,QAAStb,GAAWsb,GAClB,MAAuB,kBAATA,GAGhB,QAASxX,GAAcwX,GACrB,MAAgD,oBAAzChR,OAAOxL,UAAU0H,SAASnL,KAAKigB,GAGxC,QAASvX,GAASuX,GAChB,MAAgD,oBAAzChR,OAAOxL,UAAU0H,SAASnL,KAAKigB,GAGxC,QAAStX,GAAQsX,GACf,MAAgD,mBAAzChR,OAAOxL,UAAU0H,SAASnL,KAAKigB,GAGxC,QAASrX,GAAcqX,GACrB,IAAKxX,EAAcwX,GAAO,OAAO,CAEjC,KAAK,GAAIpN,KAAKoN,GACZ,GAAIA,EAAK3K,eAAezC,GACtB,OAAO,CAGX,QAAO,EAGT,QAASqN,KACP,IAEE,MADA,IAAIC,YAAW,KACR,EACP,MAAOhhB,GACP,OAAO,GAIX,QAASihB,KACP,IAEE,MADA,IAAIC,UAAS,KACN,EACP,MAAOlhB,GACP,OAAO,GAIX,QAASmhB,KACP,IAEE,MADA,IAAIC,cAAa,KACV,EACP,MAAOphB,GACP,OAAO,GAIX,QAASuK,KACP,KAAM,SAAW7D,IAAU,OAAO,CAElC,KAIE,MAHA,IAAI2a,SACJ,GAAInJ,SAAQ,IACZ,GAAIoJ,WACG,EACP,MAAOthB,GACP,OAAO,GAQX,QAAS+H,KACP,IAAKwC,IAAiB,OAAO,CAE7B,KAKE,MAHA,IAAI2N,SAAQ,cACVpQ,eAAgB,YAEX,EACP,MAAO9H,GACP,OAAO,GAIX,QAASuhB,KACP,MAAwC,kBAA1BC,uBAGhB,QAASpf,GAAgBuB,GACvB,QAASoO,GAAa1P,EAAMkD,GAC1B,GAAIkc,GAAiB9d,EAAStB,IAASA,CACvC,OAAIkD,GACKA,EAASkc,IAAmBA,EAE9BA,EAGT,MAAO1P,GAGT,QAASrI,GAAKkH,EAAKjN,GACjB,GAAIlD,GAAGqX,CAEP,IAAIjS,EAAY+K,EAAI9P,QAClB,IAAKL,IAAKmQ,GACJ9G,EAAO8G,EAAKnQ,IACdkD,EAAS9C,KAAK,KAAMJ,EAAGmQ,EAAInQ,QAK/B,IADAqX,EAAIlH,EAAI9P,OAEN,IAAKL,EAAI,EAAGA,EAAIqX,EAAGrX,IACjBkD,EAAS9C,KAAK,KAAMJ,EAAGmQ,EAAInQ,IAMnC,QAASkJ,GAAY+X,EAAMC,GACzB,MAAKA,IAGLjY,EAAKiY,EAAM,SAASrW,EAAK1I,GACvB8e,EAAKpW,GAAO1I,IAEP8e,GALEA,EAgBX,QAAS7X,GAAa+G,GACpB,QAAKd,OAAO8R,UAGL9R,OAAO8R,SAAShR,GAGzB,QAAShH,GAASkQ,EAAKpO,GACrB,GAAmB,gBAARA,GACT,KAAM,IAAIhL,OAAM,yDAElB,OAAmB,gBAARoZ,IAA4B,IAARpO,EACtBoO,EAEFA,EAAIhZ,QAAU4K,EAAMoO,EAAMA,EAAI9W,OAAO,EAAG0I,GAAO,IAUxD,QAAS5B,GAAO+X,EAAQvW,GACtB,MAAOwE,QAAOxL,UAAU6R,eAAetV,KAAKghB,EAAQvW,GAGtD,QAASvB,GAAW+X,GAQlB,IALA,GAGEC,GAHEC,KACFvhB,EAAI,EACJwhB,EAAMH,EAAShhB,OAGVL,EAAIwhB,EAAKxhB,IACdshB,EAAUD,EAASrhB,GACf8I,EAASwY,GAGXC,EAAQte,KAAKqe,EAAQrC,QAAQ,8BAA+B,SACnDqC,GAAWA,EAAQG,QAE5BF,EAAQte,KAAKqe,EAAQG,OAIzB,OAAO,IAAIC,QAAOH,EAAQI,KAAK,KAAM,KAGvC,QAASpY,GAAU3J,GACjB,GAAIgiB,KAIJ,OAHA3Y,GAAKrJ,EAAG,SAASiL,EAAK1I,GACpByf,EAAM3e,KAAKmP,mBAAmBvH,GAAO,IAAMuH,mBAAmBjQ,MAEzDyf,EAAMD,KAAK,KAMpB,QAAS/X,GAASiG,GAChB,GAAmB,gBAARA,GAAkB,QAC7B,IAAIgS,GAAQhS,EAAIgS,MAAM,kEAGlBC,EAAQD,EAAM,IAAM,GACpBE,EAAWF,EAAM,IAAM,EAC3B,QACEhN,SAAUgN,EAAM,GAChB/M,KAAM+M,EAAM,GACZtV,KAAMsV,EAAM,GACZ9M,SAAU8M,EAAM,GAAKC,EAAQC,GAGjC,QAASvY,KACP,GAAIwY,GAAS/b,EAAQ+b,QAAU/b,EAAQgc,QAEvC,KAAK7c,EAAY4c,IAAWA,EAAOE,gBAAiB,CAGlD,GAAIC,GAAM,GAAIC,aAAY,EAC1BJ,GAAOE,gBAAgBC,GAGvBA,EAAI,GAAe,KAATA,EAAI,GAAc,MAE5BA,EAAI,GAAe,MAATA,EAAI,GAAe,KAE7B,IAAIE,GAAM,SAASC,GAEjB,IADA,GAAIC,GAAID,EAAI/W,SAAS,IACdgX,EAAEliB,OAAS,GAChBkiB,EAAI,IAAMA,CAEZ,OAAOA,GAGT,OACEF,GAAIF,EAAI,IACRE,EAAIF,EAAI,IACRE,EAAIF,EAAI,IACRE,EAAIF,EAAI,IACRE,EAAIF,EAAI,IACRE,EAAIF,EAAI,IACRE,EAAIF,EAAI,IACRE,EAAIF,EAAI,IAIV,MAAO,mCAAmClD,QAAQ,QAAS,SAASuD,GAClE,GAAI9iB,GAAqB,GAAhBsL,KAAKkS,SAAiB,EAC7BqF,EAAU,MAANC,EAAY9iB,EAAS,EAAJA,EAAW,CAClC,OAAO6iB,GAAEhX,SAAS,MAYxB,QAAS9B,GAAiBgZ,GAWxB,IATA,GAOEC,GAPEC,EAAsB,EACxBC,EAAiB,GACjBC,KACAC,EAAS,EACTtB,EAAM,EACNuB,EAAY,MACZC,EAAYD,EAAU1iB,OAGjBoiB,GAAQK,IAAWH,IACxBD,EAAUO,EAAoBR,KAMhB,SAAZC,GACCI,EAAS,GAAKtB,EAAMqB,EAAIxiB,OAAS2iB,EAAYN,EAAQriB,QAAUuiB,KAKlEC,EAAI5f,KAAKyf,GAETlB,GAAOkB,EAAQriB,OACfoiB,EAAOA,EAAKS,UAGd,OAAOL,GAAI7S,UAAU2R,KAAKoB,GAS5B,QAASE,GAAoBR,GAC3B,GACEU,GACAC,EACAvY,EACAwY,EACArjB,EALE6iB,IAOJ,KAAKJ,IAASA,EAAKvO,QACjB,MAAO,EAST,IANA2O,EAAI5f,KAAKwf,EAAKvO,QAAQR,eAClB+O,EAAKtc,IACP0c,EAAI5f,KAAK,IAAMwf,EAAKtc,IAGtBgd,EAAYV,EAAKU,UACbA,GAAara,EAASqa,GAExB,IADAC,EAAUD,EAAUhZ,MAAM,OACrBnK,EAAI,EAAGA,EAAIojB,EAAQ/iB,OAAQL,IAC9B6iB,EAAI5f,KAAK,IAAMmgB,EAAQpjB,GAG3B,IAAIsjB,IAAiB,OAAQ,OAAQ,QAAS,MAC9C,KAAKtjB,EAAI,EAAGA,EAAIsjB,EAAcjjB,OAAQL,IACpC6K,EAAMyY,EAActjB,GACpBqjB,EAAOZ,EAAKc,aAAa1Y,GACrBwY,GACFR,EAAI5f,KAAK,IAAM4H,EAAM,KAAOwY,EAAO,KAGvC,OAAOR,GAAIlB,KAAK,IAMlB,QAAS6B,GAAgB1jB,EAAG2jB,GAC1B,WAAY3jB,IAAM2jB,GAMpB,QAASC,GAAgB5jB,EAAG2jB,GAC1B,MAAOre,GAAYtF,IAAMsF,EAAYqe,GAMvC,QAAS/Z,GAAgBuF,EAAK0U,GAC5B,OAAIH,EAAgBvU,EAAK0U,KAEzB1U,EAAMA,EAAIjN,OAAO,GACjB2hB,EAAMA,EAAI3hB,OAAO,GAEbiN,EAAI7M,OAASuhB,EAAIvhB,MAAQ6M,EAAI9M,QAAUwhB,EAAIxhB,SAG3CuhB,EAAgBzU,EAAIL,WAAY+U,EAAI/U,aAEjCjF,EAAiBsF,EAAIL,WAAY+U,EAAI/U,cAM9C,QAASjF,GAAiBia,EAAQC,GAChC,GAAIL,EAAgBI,EAAQC,GAAS,OAAO,CAE5C,IAAIC,GAAUF,EAAO9T,OACjBiU,EAAUF,EAAO/T,MAGrB,IAAIgU,EAAQzjB,SAAW0jB,EAAQ1jB,OAAQ,OAAO,CAI9C,KAAK,GADDP,GAAG2jB,EACEzjB,EAAI,EAAGA,EAAI8jB,EAAQzjB,OAAQL,IAGlC,GAFAF,EAAIgkB,EAAQ9jB,GACZyjB,EAAIM,EAAQ/jB,GAEVF,EAAEya,WAAakJ,EAAElJ,UACjBza,EAAEia,SAAW0J,EAAE1J,QACfja,EAAE2a,QAAUgJ,EAAEhJ,OACd3a,EAAE,cAAgB2jB,EAAE,YAEpB,OAAO,CAEX,QAAO,EAUT,QAAS5Z,GAAKsG,EAAKvM,EAAMogB,EAAaC,GACpC,GAAW,MAAP9T,EAAJ,CACA,GAAIiF,GAAOjF,EAAIvM,EACfuM,GAAIvM,GAAQogB,EAAY5O,GACxBjF,EAAIvM,GAAM2J,GAAY,EACtB4C,EAAIvM,GAAM8J,EAAW0H,EACjB6O,GACFA,EAAMhhB,MAAMkN,EAAKvM,EAAMwR,KAU3B,QAAS9Q,GAAS4f,EAAOC,GACvB,IAAKpb,EAAQmb,GAAQ,MAAO,EAI5B,KAAK,GAFDE,MAEKpkB,EAAI,EAAGA,EAAIkkB,EAAM7jB,OAAQL,IAChC,IACEokB,EAAOnhB,KAAKohB,OAAOH,EAAMlkB,KACzB,MAAOT,GACP6kB,EAAOnhB,KAAK,gCAIhB,MAAOmhB,GAAOzC,KAAKwC,GASrB,QAASG,GAAWniB,GAClB,QAASoiB,UAAUpiB,GAAOgI,MAAM,SAAS9J,OAG3C,QAASmkB,GAASriB,GAChB,MAAOmiB,GAAWrf,KAAKC,UAAU/C,IAGnC,QAASsiB,GAAetiB,GACtB,GAAqB,gBAAVA,GAAoB,CAC7B,GAAIuiB,GAAY,EAChB,OAAOvb,GAAShH,EAAOuiB,GAClB,GACY,gBAAVviB,IACU,iBAAVA,IACU,mBAAVA,GAEP,MAAOA,EAGT,IAAIC,GAAOiN,OAAOxL,UAAU0H,SAASnL,KAAK+B,EAG1C,OAAa,oBAATC,EAAmC,WAC1B,mBAATA,EAAkC,UACzB,sBAATA,EACKD,EAAMyB,KAAO,cAAgBzB,EAAMyB,KAAO,IAAM,aAElDzB,EAGT,QAASwiB,GAAgBxiB,EAAOyiB,GAC9B,MAAc,KAAVA,EAAoBH,EAAetiB,GAEnC0G,EAAc1G,GACTkN,OAAOC,KAAKnN,GAAO0iB,OAAO,SAASC,EAAKja,GAE7C,MADAia,GAAIja,GAAO8Z,EAAgBxiB,EAAM0I,GAAM+Z,EAAQ,GACxCE,OAEAxP,MAAMvM,QAAQ5G,GAChBA,EAAM4iB,IAAI,SAASC,GACxB,MAAOL,GAAgBK,EAAKJ,EAAQ,KAIjCH,EAAetiB,GAGxB,QAAS6H,GAAmB7I,EAAIyjB,EAAOK,GACrC,IAAKpc,EAAc1H,GAAK,MAAOA,EAE/ByjB,GAAyB,gBAAVA,GAAqBM,EAAgCN,EACpEK,EAA2B,gBAAVL,GAAqBO,EAA+BF,CAErE,IAAIG,GAAaT,EAAgBxjB,EAAIyjB,EAErC,OAAIJ,GAAStf,EAAUkgB,IAAeH,EAC7Bjb,EAAmB7I,EAAIyjB,EAAQ,GAGjCQ,EAGT,QAASrb,GAAwBuF,EAAMoV,GACrC,GAAoB,gBAATpV,IAAqC,gBAATA,GAAmB,MAAOA,GAAK/D,UACtE,KAAK+J,MAAMvM,QAAQuG,GAAO,MAAO,EAKjC,IAHAA,EAAOA,EAAK+V,OAAO,SAASxa,GAC1B,MAAsB,gBAARA,KAEI,IAAhByE,EAAKjP,OAAc,MAAO,sBAG9B,IADAqkB,EAAiC,gBAAdA,GAAyBY,EAA4BZ,EACpEpV,EAAK,GAAGjP,QAAUqkB,EAAW,MAAOpV,GAAK,EAE7C,KAAK,GAAIiW,GAAWjW,EAAKjP,OAAQklB,EAAW,EAAGA,IAAY,CACzD,GAAIH,GAAa9V,EAAKlL,MAAM,EAAGmhB,GAAU5D,KAAK,KAC9C,MAAIyD,EAAW/kB,OAASqkB,GACxB,MAAIa,KAAajW,EAAKjP,OAAe+kB,EAC9BA,EAAa,IAGtB,MAAO,GAGT,QAASnb,GAASia,EAAOjd,GAcvB,QAASue,GAAeC,GACtB,MAAI1c,GAAQ0c,GACHA,EAAYV,IAAI,SAASC,GAC9B,MAAOQ,GAAeR,KAItBnc,EAAc4c,GACTpW,OAAOC,KAAKmW,GAAaZ,OAAO,SAASC,EAAKY,GAMnD,MAJEZ,GAAIY,GADFC,EAAejW,KAAKgW,GACbE,EAEAJ,EAAeC,EAAYC,IAE/BZ,OAIJW,EA/BT,IAAK1c,EAAQ9B,IAAkB8B,EAAQ9B,IAAyC,IAAxBA,EAAa5G,OACnE,MAAO6jB,EAET,IAEI2B,GAFAF,EAAiBrc,EAAWrC,GAC5B2e,EAAe,UAGnB,KACEC,EAAY5gB,KAAKiM,MAAMhM,EAAUgf,IACjC,MAAO4B,GACP,MAAO5B,GAwBT,MAAOsB,GAAeK,GA5lBxB,GAAI3gB,GAAY3E,EAAQ,GAEpB0F,EACgB,mBAAX/G,QACHA,OACkB,mBAAXC,GAAyBA,EAAyB,mBAATC,MAAuBA,QA0dzE8lB,EAAgC,EAEhCC,EAA+B,MAC/BG,EAA4B,EA6HhCxmB,GAAOD,SACL+J,SAAUA,EACVD,QAASA,EACTH,aAAcA,EACdC,WAAYA,EACZC,eAAgBA,EAChBtD,YAAaA,EACbL,WAAYA,EACZ8D,cAAeA,EACfC,SAAUA,EACVC,QAASA,EACTC,cAAeA,EACfsX,mBAAoBA,EACpBE,iBAAkBA,EAClBE,qBAAsBA,EACtB5W,cAAeA,EACfxC,uBAAwBA,EACxBwZ,8BAA+BA,EAC/Bnf,gBAAiBA,EACjBsH,KAAMA,EACNC,YAAaA,EACbC,SAAUA,EACVC,aAAcA,EACdC,OAAQA,EACRC,WAAYA,EACZC,UAAWA,EACXC,MAAOA,EACPC,iBAAkBA,EAClBwZ,oBAAqBA,EACrBvZ,gBAAiBA,EACjBC,iBAAkBA,EAClBC,SAAUA,EACVC,KAAMA,EACNvF,SAAUA,EACV0F,mBAAoBA,EACpBD,wBAAyBA,EACzBE,SAAUA,KAGT7J,KAAKf,KAAuB,mBAAXF,QAAyBA,OAAyB,mBAATC,MAAuBA,KAAyB,mBAAXF,QAAyBA,aACxH8gB,EAAI,IAAID,GAAG,SAASxf,EAAQzB,EAAOD,IACtC,SAAWM,GA+BX,QAAS4mB,KACP,MAAwB,mBAAb1b,WAAiD,MAArBA,SAASnC,SAAyB,GAClEmC,SAASnC,SAASE,KAG3B,QAAS4d,KACP,MAAwB,mBAAb3b,WAAiD,MAArBA,SAASnC,SAAyB,GAClEmC,SAASnC,SAAS+d,OArC3B,GAAIliB,GAAQxD,EAAQ,GAYhB+H,GACF7B,qBAAqB,EACrB+D,OAAO,GAILvE,EACgB,mBAAX/G,QACHA,OACkB,mBAAXC,GAAyBA,EAAyB,mBAATC,MAAuBA,QAGzE8mB,KAAY9hB,MACZ+hB,EAAmB,IAGnBC,EAAiB,yGAmDrB9d,GAASsD,OAAS,WAUhB,QAASC,GAAUwa,GACjBC,IACAC,EAAStjB,KAAKojB,GAOhB,QAASG,GAAYH,GACnB,IAAK,GAAIrmB,GAAIumB,EAASlmB,OAAS,EAAGL,GAAK,IAAKA,EACtCumB,EAASvmB,KAAOqmB,GAClBE,EAASE,OAAOzmB,EAAG,GAQzB,QAAS0mB,KACPC,IACAJ,KAOF,QAASK,GAAe9X,EAAO+X,GAC7B,GAAI9kB,GAAY,IAChB,KAAI8kB,GAAkBve,EAAS7B,oBAA/B,CAGA,IAAK,GAAIzG,KAAKumB,GACZ,GAAIA,EAAS7Q,eAAe1V,GAC1B,IACEumB,EAASvmB,GAAGyE,MAAM,MAAOqK,GAAOqK,OAAO+M,EAAO9lB,KAAKiE,UAAW,KAC9D,MAAOyiB,GACP/kB,EAAY+kB,EAKlB,GAAI/kB,EACF,KAAMA,IAiBV,QAASglB,GAAsB5jB,EAAK0M,EAAKmX,EAAQC,EAAO9lB,GACtD,GAAI2N,GAAQ,KAER/M,EAAYgC,EAAMyE,aAAarH,GAAMA,EAAGwN,MAAQxN,EAEhDkB,EAAU0B,EAAMyE,aAAarF,GAAOA,EAAId,QAAUc,CAEtD,IAAI+jB,EACF5e,EAASyG,kBAAkBoY,oCACzBD,EACArX,EACAmX,EACA3kB,GAEF+kB,QACK,IAAIrlB,GAAagC,EAAM4E,QAAQ5G,GAMpC+M,EAAQxG,EAASyG,kBAAkBhN,GACnC6kB,EAAe9X,GAAO,OACjB,CACL,GAOIuY,GAPAnf,GACF2H,IAAKA,EACL2K,KAAMwM,EACNtM,OAAQuM,GAGNrjB,EAAOqJ,MAGX,IAAkC,uBAA3B1B,SAASnL,KAAKiC,GAAgC,CACnD,GAAIglB,GAAShlB,EAAQwf,MAAMuE,EACvBiB,KACFzjB,EAAOyjB,EAAO,GACdhlB,EAAUglB,EAAO,IAIrBnf,EAAS8E,KAAOmZ,EAEhBrX,GACElL,KAAMA,EACNvB,QAASA,EACTwN,IAAKkW,IACLjX,OAAQ5G,IAEV0e,EAAe9X,GAAO,GAGxB,QAAIwY,GACKA,EAAmB7iB,MAAMpF,KAAMgF,WAM1C,QAASiiB,KACHiB,IAGJD,EAAqBrhB,EAAQkZ,QAC7BlZ,EAAQkZ,QAAU4H,EAClBQ,GAA2B,GAG7B,QAASZ,KACFY,IAGLthB,EAAQkZ,QAAUmI,EAClBC,GAA2B,EAC3BD,EAAqBra,QAGvB,QAASma,KACP,GAAII,GAAsBN,EACxBO,EAAYC,CACdA,GAAW,KACXR,EAAqB,KACrBtV,EAAgB,KAChBgV,EAAeniB,MAAM,MAAO+iB,GAAqB,GAAOrO,OAAOsO,IAUjE,QAAS7b,GAAOzK,EAAIwmB,GAClB,GAAIxjB,GAAO+hB,EAAO9lB,KAAKiE,UAAW,EAClC,IAAI6iB,EAAoB,CACtB,GAAItV,IAAkBzQ,EACpB,MAEAimB,KAIJ,GAAItY,GAAQxG,EAASyG,kBAAkB5N,EAevC,IAdA+lB,EAAqBpY,EACrB8C,EAAgBzQ,EAChBumB,EAAWvjB,EAMX6O,WAAW,WACLpB,IAAkBzQ,GACpBimB,KAEDtY,EAAM8Y,WAAa,IAAO,GAEzBD,KAAY,EACd,KAAMxmB,GA9LV,GA0DImmB,GAAoBC,EA1DpBhB,KACFmB,EAAW,KACX9V,EAAgB,KAChBsV,EAAqB,IAkMvB,OAHAtb,GAAOC,UAAYA,EACnBD,EAAO4a,YAAcA,EACrB5a,EAAO+B,UAAY+Y,EACZ9a,KAsDTtD,EAASyG,kBAAoB,WA4C3B,QAAS8Y,GAA+B1mB,GACtC,GAAwB,mBAAbA,GAAG2N,OAA0B3N,EAAG2N,MAA3C,CAiBA,IAAK,GALDgZ,GACAC,EACAC,EAZAlQ,EAAS,0IACTmQ,EAAQ,wHAGRC,EAAQ,6JAERC,EAAY,gDACZC,EAAa,gCACbC,EAAQlnB,EAAG2N,MAAM3E,MAAM,MACvB2E,KAMK9O,GAFO,sBAAsBkC,KAAKf,EAAGkB,SAEjC,GAAGgV,EAAIgR,EAAMhoB,OAAQL,EAAIqX,IAAKrX,EAAG,CAC5C,GAAK+nB,EAAQjQ,EAAO5V,KAAKmmB,EAAMroB,IAAM,CACnC,GAAIsoB,GAAWP,EAAM,IAAqC,IAA/BA,EAAM,GAAGlR,QAAQ,UACxC0R,EAASR,EAAM,IAAmC,IAA7BA,EAAM,GAAGlR,QAAQ,OACtC0R,KAAWT,EAAWM,EAAWlmB,KAAK6lB,EAAM,OAE9CA,EAAM,GAAKD,EAAS,GACpBC,EAAM,GAAKD,EAAS,GACpBC,EAAM,GAAKD,EAAS,IAEtBE,GACEnY,IAAMyY,EAAsB,KAAXP,EAAM,GACvB/a,KAAM+a,EAAM,IAAM5B,EAClBhiB,KAAMmkB,GAAYP,EAAM,OACxBvN,KAAMuN,EAAM,IAAMA,EAAM,GAAK,KAC7BrN,OAAQqN,EAAM,IAAMA,EAAM,GAAK,UAE5B,IAAKA,EAAQE,EAAM/lB,KAAKmmB,EAAMroB,IACnCgoB,GACEnY,IAAKkY,EAAM,GACX/a,KAAM+a,EAAM,IAAM5B,EAClBhiB,QACAqW,MAAOuN,EAAM,GACbrN,OAAQqN,EAAM,IAAMA,EAAM,GAAK,UAE5B,CAAA,KAAKA,EAAQG,EAAMhmB,KAAKmmB,EAAMroB,KAsBnC,QArBA,IAAIuoB,GAASR,EAAM,IAAMA,EAAM,GAAGlR,QAAQ,aACtC0R,KAAWT,EAAWK,EAAUjmB,KAAK6lB,EAAM,MAE7CA,EAAM,GAAKD,EAAS,GACpBC,EAAM,GAAKD,EAAS,GACpBC,EAAM,GAAK,MACI,IAAN/nB,GAAY+nB,EAAM,IAAiC,mBAApB5mB,GAAGqnB,eAK3C1Z,EAAM,GAAG4L,OAASvZ,EAAGqnB,aAAe,GAEtCR,GACEnY,IAAKkY,EAAM,GACX/a,KAAM+a,EAAM,IAAM5B,EAClBhiB,KAAM4jB,EAAM,GAAKA,EAAM,GAAG5d,MAAM,QAChCqQ,KAAMuN,EAAM,IAAMA,EAAM,GAAK,KAC7BrN,OAAQqN,EAAM,IAAMA,EAAM,GAAK,MAUnC,IAJKC,EAAQhb,MAAQgb,EAAQxN,OAC3BwN,EAAQhb,KAAOmZ,GAGb6B,EAAQnY,KAAoC,UAA7BmY,EAAQnY,IAAItN,OAAO,EAAG,GAAgB,CAMvD,GAAI6I,GAAM,GAAIuL,eAKd,IAJAvL,EAAIgU,KAAK,MAAO4I,EAAQnY,KAAK,GAC7BzE,EAAIkU,KAAK,MAGU,MAAflU,EAAI+L,OAAgB,CACtB,GAAIsK,GAASrW,EAAIqd,cAAgB,EAIjChH,GAASA,EAAOrd,WAGhB,IAAIskB,GAAajH,EAAOI,MAAM,+BAG9B,IAAI6G,EAAY,CACd,GAAIC,GAAmBD,EAAW,EAIC,OAA/BC,EAAiBC,OAAO,KAC1BD,EAAmB3C,IAAsB2C,EAAiBvkB,MAAM,IAKlE4jB,EAAQnY,IAAM8Y,EAAiBvkB,MAAM,QAK3C0K,EAAM7L,KAAK+kB,GAGb,MAAKlZ,GAAMzO,QAKTuD,KAAMzC,EAAGyC,KACTvB,QAASlB,EAAGkB,QACZwN,IAAKkW,IACLjX,MAAOA,GAPA,MAwBX,QAASqY,GAAoCvN,EAAW/J,EAAKmX,EAAQ3kB,GACnE,GAAIwmB,IACFhZ,IAAKA,EACL2K,KAAMwM,EAGR,IAAI6B,EAAQhZ,KAAOgZ,EAAQrO,KAAM,CAO/B,GANAZ,EAAUgO,YAAa,EAElBiB,EAAQ7b,OACX6b,EAAQ7b,KAAOmZ,GAGbvM,EAAU9K,MAAMzO,OAAS,GACvBuZ,EAAU9K,MAAM,GAAGe,MAAQgZ,EAAQhZ,IAAK,CAC1C,GAAI+J,EAAU9K,MAAM,GAAG0L,OAASqO,EAAQrO,KACtC,OAAO,CACF,KACJZ,EAAU9K,MAAM,GAAG0L,MACpBZ,EAAU9K,MAAM,GAAG9B,OAAS6b,EAAQ7b,KAGpC,MADA4M,GAAU9K,MAAM,GAAG0L,KAAOqO,EAAQrO,MAC3B,EAOb,MAFAZ,GAAU9K,MAAMga,QAAQD,GACxBjP,EAAUmP,SAAU,GACb,EAKT,MAHEnP,GAAUgO,YAAa,GAGlB,EAYT,QAASoB,GAAsC7nB,EAAIyjB;AASjD,IACE,GALAmD,GACAkB,EALEC,EAAe,qEACjBpa,KACAqa,KACAC,GAAY,EAMRC,EAAOL,EAAsCM,OACjDD,IAASD,EACTC,EAAOA,EAAKC,OAEZ,GAAID,IAASta,GAAqBsa,IAAS/gB,EAASsD,OAApD,CAkBA,GAbAqd,GACEpZ,IAAK,KACL7C,KAAMmZ,EACN3L,KAAM,KACNE,OAAQ,MAGN2O,EAAKzlB,KACPqlB,EAAKjc,KAAOqc,EAAKzlB,MACPmkB,EAAQmB,EAAahnB,KAAKmnB,EAAK9d,eACzC0d,EAAKjc,KAAO+a,EAAM,IAGK,mBAAdkB,GAAKjc,KACd,IACEic,EAAKjc,KAAO+a,EAAM7D,MAAMqF,UAAU,EAAGxB,EAAM7D,MAAMrN,QAAQ,MACzD,MAAOtX,IAGP4pB,EAAM,GAAKE,GACbD,GAAY,EAEZD,EAAM,GAAKE,IAAQ,EAGrBva,EAAM7L,KAAKgmB,GAGTrE,GAGF9V,EAAM2X,OAAO,EAAG7B,EAGlB,IAAIrU,IACF3M,KAAMzC,EAAGyC,KACTvB,QAASlB,EAAGkB,QACZwN,IAAKkW,IACLjX,MAAOA,EAQT,OANAqY,GACE5W,EACApP,EAAGqoB,WAAaroB,EAAGsoB,SACnBtoB,EAAGqZ,MAAQrZ,EAAGuoB,WACdvoB,EAAGkB,SAAWlB,EAAGwoB,aAEZpZ,EAQT,QAASxB,GAAkB5N,EAAIyjB,GAC7B,GAAI9V,GAAQ,IACZ8V,GAAiB,MAATA,EAAgB,GAAKA,CAE7B,KAEE,GADA9V,EAAQ+Y,EAA+B1mB,GAErC,MAAO2N,GAET,MAAOvP,GACP,GAAI+I,EAASkC,MACX,KAAMjL,GAIV,IAEE,GADAuP,EAAQka,EAAsC7nB,EAAIyjB,EAAQ,GAExD,MAAO9V,GAET,MAAOvP,GACP,GAAI+I,EAASkC,MACX,KAAMjL,GAGV,OACEqE,KAAMzC,EAAGyC,KACTvB,QAASlB,EAAGkB,QACZwN,IAAKkW,KAOT,MAHAhX,GAAkBoY,oCAAsCA,EACxDpY,EAAkB8Y,+BAAiCA,EAE5C9Y,KAGTjQ,EAAOD,QAAUyJ,IAEdlI,KAAKf,KAAuB,mBAAXF,QAAyBA,OAAyB,mBAATC,MAAuBA,KAAyB,mBAAXF,QAAyBA,aACxHwD,EAAI,IAAIsd,GAAG,SAASzf,EAAQzB,EAAOD,GAetC,QAASgY,GAAQ+S,EAAUC,GACzB,IAAK,GAAI7pB,GAAI,EAAGA,EAAI4pB,EAASvpB,SAAUL,EACrC,GAAI4pB,EAAS5pB,KAAO6pB,EAAQ,MAAO7pB,EAErC,UAGF,QAASkF,GAAUiL,EAAK2Z,EAAUC,EAAQC,GACxC,MAAO/kB,MAAKC,UAAUiL,EAAK8Z,EAAWH,EAAUE,GAAgBD,GAIlE,QAASG,GAAe/nB,GACtB,GAAI2T,IAEFhH,MAAO3M,EAAM2M,MACbzM,QAASF,EAAME,QACfuB,KAAMzB,EAAMyB,KAGd,KAAK,GAAI5D,KAAKmC,GACRkN,OAAOxL,UAAU6R,eAAetV,KAAK+B,EAAOnC,KAC9C8V,EAAI9V,GAAKmC,EAAMnC,GAInB,OAAO8V,GAGT,QAASmU,GAAWH,EAAUE,GAC5B,GAAIlb,MACAQ,IAWJ,OATqB,OAAjB0a,IACFA,EAAgB,SAASnf,EAAK1I,GAC5B,MAAI2M,GAAM,KAAO3M,EACR,eAEF,eAAiBmN,EAAKlL,MAAM,EAAGyS,EAAQ/H,EAAO3M,IAAQwf,KAAK,KAAO,MAItE,SAAS9W,EAAK1I,GACnB,GAAI2M,EAAMzO,OAAS,EAAG,CACpB,GAAI8pB,GAAUtT,EAAQ/H,EAAOzP,OAC5B8qB,EAAUrb,EAAM2X,OAAO0D,EAAU,GAAKrb,EAAM7L,KAAK5D,OACjD8qB,EAAU7a,EAAKmX,OAAO0D,EAASC,EAAAA,EAAUvf,GAAOyE,EAAKrM,KAAK4H,IAEtDgM,EAAQ/H,EAAO3M,KAClBA,EAAQ6nB,EAAc5pB,KAAKf,KAAMwL,EAAK1I,QAGxC2M,GAAM7L,KAAKd,EAGb,OAAmB,OAAZ2nB,EACH3nB,YAAiBlC,OAAQiqB,EAAe/nB,GAASA,EACjD2nB,EAAS1pB,KAAKf,KAAMwL,EAAK1I,IA5DjCtD,EAAUC,EAAOD,QAAUqG,EAC3BrG,EAAQwrB,aAAeJ,OA+DjBnK,IAAI,SAASvf,EAAQzB,EAAOD,GAwBlC,QAASyrB,GAAQC,EAAGC,GAClB,GAAIC,IAAW,MAAJF,IAAmB,MAAJC,GACtBE,GAAOH,GAAK,KAAOC,GAAK,KAAOC,GAAO,GAC1C,OAAQC,IAAO,GAAa,MAAND,EAMxB,QAASE,GAAcrI,EAAKsI,GAC1B,MAAQtI,IAAOsI,EAAQtI,IAAS,GAAKsI,EAMvC,QAASC,GAAOC,EAAGhrB,EAAG2jB,EAAG8G,EAAG5qB,EAAGH,GAC7B,MAAO8qB,GAAQK,EAAcL,EAAQA,EAAQxqB,EAAGgrB,GAAIR,EAAQC,EAAG/qB,IAAKG,GAAI8jB,GAE1E,QAASsH,GAAMjrB,EAAG2jB,EAAGjB,EAAGwI,EAAGT,EAAG5qB,EAAGH,GAC/B,MAAOqrB,GAAQpH,EAAIjB,GAAOiB,EAAIuH,EAAIlrB,EAAG2jB,EAAG8G,EAAG5qB,EAAGH,GAEhD,QAASyrB,GAAMnrB,EAAG2jB,EAAGjB,EAAGwI,EAAGT,EAAG5qB,EAAGH,GAC/B,MAAOqrB,GAAQpH,EAAIuH,EAAMxI,GAAKwI,EAAIlrB,EAAG2jB,EAAG8G,EAAG5qB,EAAGH,GAEhD,QAAS0rB,GAAMprB,EAAG2jB,EAAGjB,EAAGwI,EAAGT,EAAG5qB,EAAGH,GAC/B,MAAOqrB,GAAOpH,EAAIjB,EAAIwI,EAAGlrB,EAAG2jB,EAAG8G,EAAG5qB,EAAGH,GAEvC,QAAS2rB,GAAMrrB,EAAG2jB,EAAGjB,EAAGwI,EAAGT,EAAG5qB,EAAGH,GAC/B,MAAOqrB,GAAOrI,GAAKiB,GAAKuH,GAAIlrB,EAAG2jB,EAAG8G,EAAG5qB,EAAGH,GAM1C,QAAS4rB,GAAQb,EAAG/I,GAElB+I,EAAE/I,GAAO,IAAM,KAASA,EAAM,GAC9B+I,GAAK/I,EAAM,KAAQ,GAAM,GAAK,IAAMA,CAEpC,IAAIxhB,GACAqrB,EACAC,EACAC,EACAC,EACA1rB,EAAI,WACJ2jB,aACAjB,cACAwI,EAAI,SAER,KAAKhrB,EAAI,EAAGA,EAAIuqB,EAAElqB,OAAQL,GAAK,GAC7BqrB,EAAOvrB,EACPwrB,EAAO7H,EACP8H,EAAO/I,EACPgJ,EAAOR,EAEPlrB,EAAIirB,EAAMjrB,EAAG2jB,EAAGjB,EAAGwI,EAAGT,EAAEvqB,GAAI,cAC5BgrB,EAAID,EAAMC,EAAGlrB,EAAG2jB,EAAGjB,EAAG+H,EAAEvqB,EAAI,GAAI,eAChCwiB,EAAIuI,EAAMvI,EAAGwI,EAAGlrB,EAAG2jB,EAAG8G,EAAEvqB,EAAI,GAAI,GAAI,WACpCyjB,EAAIsH,EAAMtH,EAAGjB,EAAGwI,EAAGlrB,EAAGyqB,EAAEvqB,EAAI,GAAI,gBAChCF,EAAIirB,EAAMjrB,EAAG2jB,EAAGjB,EAAGwI,EAAGT,EAAEvqB,EAAI,GAAI,cAChCgrB,EAAID,EAAMC,EAAGlrB,EAAG2jB,EAAGjB,EAAG+H,EAAEvqB,EAAI,GAAI,GAAI,YACpCwiB,EAAIuI,EAAMvI,EAAGwI,EAAGlrB,EAAG2jB,EAAG8G,EAAEvqB,EAAI,GAAI,gBAChCyjB,EAAIsH,EAAMtH,EAAGjB,EAAGwI,EAAGlrB,EAAGyqB,EAAEvqB,EAAI,GAAI,cAChCF,EAAIirB,EAAMjrB,EAAG2jB,EAAGjB,EAAGwI,EAAGT,EAAEvqB,EAAI,GAAI,EAAG,YACnCgrB,EAAID,EAAMC,EAAGlrB,EAAG2jB,EAAGjB,EAAG+H,EAAEvqB,EAAI,GAAI,gBAChCwiB,EAAIuI,EAAMvI,EAAGwI,EAAGlrB,EAAG2jB,EAAG8G,EAAEvqB,EAAI,IAAK,WACjCyjB,EAAIsH,EAAMtH,EAAGjB,EAAGwI,EAAGlrB,EAAGyqB,EAAEvqB,EAAI,IAAK,gBACjCF,EAAIirB,EAAMjrB,EAAG2jB,EAAGjB,EAAGwI,EAAGT,EAAEvqB,EAAI,IAAK,EAAG,YACpCgrB,EAAID,EAAMC,EAAGlrB,EAAG2jB,EAAGjB,EAAG+H,EAAEvqB,EAAI,IAAK,cACjCwiB,EAAIuI,EAAMvI,EAAGwI,EAAGlrB,EAAG2jB,EAAG8G,EAAEvqB,EAAI,IAAK,gBACjCyjB,EAAIsH,EAAMtH,EAAGjB,EAAGwI,EAAGlrB,EAAGyqB,EAAEvqB,EAAI,IAAK,GAAI,YAErCF,EAAImrB,EAAMnrB,EAAG2jB,EAAGjB,EAAGwI,EAAGT,EAAEvqB,EAAI,GAAI,cAChCgrB,EAAIC,EAAMD,EAAGlrB,EAAG2jB,EAAGjB,EAAG+H,EAAEvqB,EAAI,GAAI,eAChCwiB,EAAIyI,EAAMzI,EAAGwI,EAAGlrB,EAAG2jB,EAAG8G,EAAEvqB,EAAI,IAAK,GAAI,WACrCyjB,EAAIwH,EAAMxH,EAAGjB,EAAGwI,EAAGlrB,EAAGyqB,EAAEvqB,GAAI,eAC5BF,EAAImrB,EAAMnrB,EAAG2jB,EAAGjB,EAAGwI,EAAGT,EAAEvqB,EAAI,GAAI,cAChCgrB,EAAIC,EAAMD,EAAGlrB,EAAG2jB,EAAGjB,EAAG+H,EAAEvqB,EAAI,IAAK,EAAG,UACpCwiB,EAAIyI,EAAMzI,EAAGwI,EAAGlrB,EAAG2jB,EAAG8G,EAAEvqB,EAAI,IAAK,eACjCyjB,EAAIwH,EAAMxH,EAAGjB,EAAGwI,EAAGlrB,EAAGyqB,EAAEvqB,EAAI,GAAI,eAChCF,EAAImrB,EAAMnrB,EAAG2jB,EAAGjB,EAAGwI,EAAGT,EAAEvqB,EAAI,GAAI,EAAG,WACnCgrB,EAAIC,EAAMD,EAAGlrB,EAAG2jB,EAAGjB,EAAG+H,EAAEvqB,EAAI,IAAK,eACjCwiB,EAAIyI,EAAMzI,EAAGwI,EAAGlrB,EAAG2jB,EAAG8G,EAAEvqB,EAAI,GAAI,eAChCyjB,EAAIwH,EAAMxH,EAAGjB,EAAGwI,EAAGlrB,EAAGyqB,EAAEvqB,EAAI,GAAI,GAAI,YACpCF,EAAImrB,EAAMnrB,EAAG2jB,EAAGjB,EAAGwI,EAAGT,EAAEvqB,EAAI,IAAK,eACjCgrB,EAAIC,EAAMD,EAAGlrB,EAAG2jB,EAAGjB,EAAG+H,EAAEvqB,EAAI,GAAI,aAChCwiB,EAAIyI,EAAMzI,EAAGwI,EAAGlrB,EAAG2jB,EAAG8G,EAAEvqB,EAAI,GAAI,GAAI,YACpCyjB,EAAIwH,EAAMxH,EAAGjB,EAAGwI,EAAGlrB,EAAGyqB,EAAEvqB,EAAI,IAAK,gBAEjCF,EAAIorB,EAAMprB,EAAG2jB,EAAGjB,EAAGwI,EAAGT,EAAEvqB,EAAI,GAAI,WAChCgrB,EAAIE,EAAMF,EAAGlrB,EAAG2jB,EAAGjB,EAAG+H,EAAEvqB,EAAI,GAAI,gBAChCwiB,EAAI0I,EAAM1I,EAAGwI,EAAGlrB,EAAG2jB,EAAG8G,EAAEvqB,EAAI,IAAK,GAAI,YACrCyjB,EAAIyH,EAAMzH,EAAGjB,EAAGwI,EAAGlrB,EAAGyqB,EAAEvqB,EAAI,IAAK,cACjCF,EAAIorB,EAAMprB,EAAG2jB,EAAGjB,EAAGwI,EAAGT,EAAEvqB,EAAI,GAAI,eAChCgrB,EAAIE,EAAMF,EAAGlrB,EAAG2jB,EAAGjB,EAAG+H,EAAEvqB,EAAI,GAAI,GAAI,YACpCwiB,EAAI0I,EAAM1I,EAAGwI,EAAGlrB,EAAG2jB,EAAG8G,EAAEvqB,EAAI,GAAI,eAChCyjB,EAAIyH,EAAMzH,EAAGjB,EAAGwI,EAAGlrB,EAAGyqB,EAAEvqB,EAAI,IAAK,gBACjCF,EAAIorB,EAAMprB,EAAG2jB,EAAGjB,EAAGwI,EAAGT,EAAEvqB,EAAI,IAAK,EAAG,WACpCgrB,EAAIE,EAAMF,EAAGlrB,EAAG2jB,EAAGjB,EAAG+H,EAAEvqB,GAAI,eAC5BwiB,EAAI0I,EAAM1I,EAAGwI,EAAGlrB,EAAG2jB,EAAG8G,EAAEvqB,EAAI,GAAI,eAChCyjB,EAAIyH,EAAMzH,EAAGjB,EAAGwI,EAAGlrB,EAAGyqB,EAAEvqB,EAAI,GAAI,GAAI,UACpCF,EAAIorB,EAAMprB,EAAG2jB,EAAGjB,EAAGwI,EAAGT,EAAEvqB,EAAI,GAAI,cAChCgrB,EAAIE,EAAMF,EAAGlrB,EAAG2jB,EAAGjB,EAAG+H,EAAEvqB,EAAI,IAAK,eACjCwiB,EAAI0I,EAAM1I,EAAGwI,EAAGlrB,EAAG2jB,EAAG8G,EAAEvqB,EAAI,IAAK,GAAI,WACrCyjB,EAAIyH,EAAMzH,EAAGjB,EAAGwI,EAAGlrB,EAAGyqB,EAAEvqB,EAAI,GAAI,eAEhCF,EAAIqrB,EAAMrrB,EAAG2jB,EAAGjB,EAAGwI,EAAGT,EAAEvqB,GAAI,cAC5BgrB,EAAIG,EAAMH,EAAGlrB,EAAG2jB,EAAGjB,EAAG+H,EAAEvqB,EAAI,GAAI,GAAI,YACpCwiB,EAAI2I,EAAM3I,EAAGwI,EAAGlrB,EAAG2jB,EAAG8G,EAAEvqB,EAAI,IAAK,gBACjCyjB,EAAI0H,EAAM1H,EAAGjB,EAAGwI,EAAGlrB,EAAGyqB,EAAEvqB,EAAI,GAAI,cAChCF,EAAIqrB,EAAMrrB,EAAG2jB,EAAGjB,EAAGwI,EAAGT,EAAEvqB,EAAI,IAAK,EAAG,YACpCgrB,EAAIG,EAAMH,EAAGlrB,EAAG2jB,EAAGjB,EAAG+H,EAAEvqB,EAAI,GAAI,gBAChCwiB,EAAI2I,EAAM3I,EAAGwI,EAAGlrB,EAAG2jB,EAAG8G,EAAEvqB,EAAI,IAAK,aACjCyjB,EAAI0H,EAAM1H,EAAGjB,EAAGwI,EAAGlrB,EAAGyqB,EAAEvqB,EAAI,GAAI,gBAChCF,EAAIqrB,EAAMrrB,EAAG2jB,EAAGjB,EAAGwI,EAAGT,EAAEvqB,EAAI,GAAI,EAAG,YACnCgrB,EAAIG,EAAMH,EAAGlrB,EAAG2jB,EAAGjB,EAAG+H,EAAEvqB,EAAI,IAAK,cACjCwiB,EAAI2I,EAAM3I,EAAGwI,EAAGlrB,EAAG2jB,EAAG8G,EAAEvqB,EAAI,GAAI,gBAChCyjB,EAAI0H,EAAM1H,EAAGjB,EAAGwI,EAAGlrB,EAAGyqB,EAAEvqB,EAAI,IAAK,GAAI,YACrCF,EAAIqrB,EAAMrrB,EAAG2jB,EAAGjB,EAAGwI,EAAGT,EAAEvqB,EAAI,GAAI,cAChCgrB,EAAIG,EAAMH,EAAGlrB,EAAG2jB,EAAGjB,EAAG+H,EAAEvqB,EAAI,IAAK,gBACjCwiB,EAAI2I,EAAM3I,EAAGwI,EAAGlrB,EAAG2jB,EAAG8G,EAAEvqB,EAAI,GAAI,GAAI,WACpCyjB,EAAI0H,EAAM1H,EAAGjB,EAAGwI,EAAGlrB,EAAGyqB,EAAEvqB,EAAI,GAAI,eAEhCF,EAAIwqB,EAAQxqB,EAAGurB,GACf5H,EAAI6G,EAAQ7G,EAAG6H,GACf9I,EAAI8H,EAAQ9H,EAAG+I,GACfP,EAAIV,EAAQU,EAAGQ,EAEjB,QAAQ1rB,EAAG2jB,EAAGjB,EAAGwI,GAMnB,QAASS,GAAUvH,GACjB,GAAIlkB,GACAokB,EAAS,GACTsH,EAA0B,GAAfxH,EAAM7jB,MACrB,KAAKL,EAAI,EAAGA,EAAI0rB,EAAU1rB,GAAK,EAC7BokB,GAAUC,OAAOsH,aAAczH,EAAMlkB,GAAK,KAAQA,EAAI,GAAO,IAE/D,OAAOokB,GAOT,QAASwH,GAAU1H,GACjB,GAAIlkB,GACAokB,IAEJ,KADAA,GAAQF,EAAM7jB,QAAU,GAAK,GAAK4M,OAC7BjN,EAAI,EAAGA,EAAIokB,EAAO/jB,OAAQL,GAAK,EAClCokB,EAAOpkB,GAAK,CAEd,IAAI6rB,GAAyB,EAAf3H,EAAM7jB,MACpB,KAAKL,EAAI,EAAGA,EAAI6rB,EAAS7rB,GAAK,EAC5BokB,EAAOpkB,GAAK,KAAiC,IAA1BkkB,EAAM4H,WAAW9rB,EAAI,KAAeA,EAAI,EAE7D,OAAOokB,GAMT,QAAS2H,GAAQpsB,GACf,MAAO8rB,GAAUL,EAAQQ,EAAUjsB,GAAe,EAAXA,EAAEU,SAM3C,QAAS2rB,GAAYnhB,EAAKjJ,GACxB,GAAI5B,GAIAwf,EAHAyM,EAAOL,EAAU/gB,GACjBqhB,KACAC,IAMJ,KAJAD,EAAK,IAAMC,EAAK,IAAMlf,OAClBgf,EAAK5rB,OAAS,KAChB4rB,EAAOb,EAAQa,EAAmB,EAAbphB,EAAIxK,SAEtBL,EAAI,EAAGA,EAAI,GAAIA,GAAK,EACvBksB,EAAKlsB,GAAe,UAAVisB,EAAKjsB,GACfmsB,EAAKnsB,GAAe,WAAVisB,EAAKjsB,EAGjB,OADAwf,GAAO4L,EAAQc,EAAK/S,OAAOyS,EAAUhqB,IAAQ,IAAoB,EAAdA,EAAKvB,QACjDorB,EAAUL,EAAQe,EAAKhT,OAAOqG,GAAO,MAM9C,QAAS4M,GAASlI,GAChB,GAEIqG,GACAvqB,EAHAqsB,EAAS,mBACTjI,EAAS,EAGb,KAAKpkB,EAAI,EAAGA,EAAIkkB,EAAM7jB,OAAQL,GAAK,EACjCuqB,EAAIrG,EAAM4H,WAAW9rB,GACrBokB,GAAUiI,EAAOzD,OAAQ2B,IAAM,EAAK,IAAQ8B,EAAOzD,OAAW,GAAJ2B,EAE5D,OAAOnG,GAMT,QAASkI,GAAapI,GACpB,MAAOqI,UAASna,mBAAmB8R,IAMrC,QAASsI,GAAO7sB,GACd,MAAOosB,GAAQO,EAAa3sB,IAE9B,QAAS8sB,GAAO9sB,GACd,MAAOysB,GAASI,EAAO7sB,IAEzB,QAAS+sB,GAAWhH,EAAGsF,GACrB,MAAOgB,GAAYM,EAAa5G,GAAI4G,EAAatB,IAEnD,QAAS2B,GAAWjH,EAAGsF,GACrB,MAAOoB,GAASM,EAAWhH,EAAGsF,IAGhC,QAASziB,GAAIqkB,EAAQ/hB,EAAKgiB,GACxB,MAAKhiB,GAMAgiB,EAGEH,EAAW7hB,EAAK+hB,GAFdD,EAAW9hB,EAAK+hB,GANlBC,EAGEL,EAAOI,GAFLH,EAAOG,GAUpB9tB,EAAOD,QAAU0J,YAEN,EAAE,EAAE,IAAI","file":"raven.min.js"} \ No newline at end of file diff --git a/dist/angular,ember,require,vue/raven.js b/dist/angular,ember,require,vue/raven.js index 6d601bdef95e..c28d72e94d78 100644 --- a/dist/angular,ember,require,vue/raven.js +++ b/dist/angular,ember,require,vue/raven.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.24.2 (540f32b) | github.com/getsentry/raven-js */ +/*! Raven.js 3.25.0 (80dffad) | github.com/getsentry/raven-js */ /* * Includes TraceKit @@ -251,10 +251,12 @@ var md5 = _dereq_(12); var RavenConfigError = _dereq_(5); var utils = _dereq_(9); +var isErrorEvent = utils.isErrorEvent; +var isDOMError = utils.isDOMError; +var isDOMException = utils.isDOMException; var isError = utils.isError; var isObject = utils.isObject; var isPlainObject = utils.isPlainObject; -var isErrorEvent = utils.isErrorEvent; var isUndefined = utils.isUndefined; var isFunction = utils.isFunction; var isString = utils.isString; @@ -382,7 +384,7 @@ Raven.prototype = { // webpack (using a build step causes webpack #1617). Grunt verifies that // this value matches package.json during build. // See: https://github.com/getsentry/raven-js/issues/465 - VERSION: '3.24.2', + VERSION: '3.25.0', debug: false, @@ -714,6 +716,23 @@ Raven.prototype = { if (isErrorEvent(ex) && ex.error) { // If it is an ErrorEvent with `error` property, extract it to get actual Error ex = ex.error; + } else if (isDOMError(ex) || isDOMException(ex)) { + // If it is a DOMError or DOMException (which are legacy APIs, but still supported in some browsers) + // then we just extract the name and message, as they don't provide anything else + // https://developer.mozilla.org/en-US/docs/Web/API/DOMError + // https://developer.mozilla.org/en-US/docs/Web/API/DOMException + var name = ex.name || (isDOMError(ex) ? 'DOMError' : 'DOMException'); + var message = ex.message ? name + ': ' + ex.message : name; + + return this.captureMessage( + message, + objectMerge(options, { + // neither DOMError or DOMException provide stack trace and we most likely wont get it this way as well + // but it's barely any overhead so we may at least try + stacktrace: true, + trimHeadFrames: options.trimHeadFrames + 1 + }) + ); } else if (isError(ex)) { // we have a real Error object ex = ex; @@ -725,6 +744,7 @@ Raven.prototype = { ex = new Error(options.message); } else { // If none of previous checks were valid, then it means that + // it's not a DOMError/DOMException // it's not a plain Object // it's not a valid ErrorEvent (one with an error property) // it's not an Error @@ -2497,7 +2517,7 @@ function isObject(what) { // Yanked from https://git.io/vS8DV re-used under CC0 // with some tiny modifications function isError(value) { - switch ({}.toString.call(value)) { + switch (Object.prototype.toString.call(value)) { case '[object Error]': return true; case '[object Exception]': @@ -2510,7 +2530,15 @@ function isError(value) { } function isErrorEvent(value) { - return supportsErrorEvent() && {}.toString.call(value) === '[object ErrorEvent]'; + return Object.prototype.toString.call(value) === '[object ErrorEvent]'; +} + +function isDOMError(value) { + return Object.prototype.toString.call(value) === '[object DOMError]'; +} + +function isDOMException(value) { + return Object.prototype.toString.call(value) === '[object DOMException]'; } function isUndefined(what) { @@ -2553,6 +2581,24 @@ function supportsErrorEvent() { } } +function supportsDOMError() { + try { + new DOMError(''); // eslint-disable-line no-new + return true; + } catch (e) { + return false; + } +} + +function supportsDOMException() { + try { + new DOMException(''); // eslint-disable-line no-new + return true; + } catch (e) { + return false; + } +} + function supportsFetch() { if (!('fetch' in _window)) return false; @@ -3068,6 +3114,8 @@ module.exports = { isObject: isObject, isError: isError, isErrorEvent: isErrorEvent, + isDOMError: isDOMError, + isDOMException: isDOMException, isUndefined: isUndefined, isFunction: isFunction, isPlainObject: isPlainObject, @@ -3075,6 +3123,8 @@ module.exports = { isArray: isArray, isEmptyObject: isEmptyObject, supportsErrorEvent: supportsErrorEvent, + supportsDOMError: supportsDOMError, + supportsDOMException: supportsDOMException, supportsFetch: supportsFetch, supportsReferrerPolicy: supportsReferrerPolicy, supportsPromiseRejectionEvent: supportsPromiseRejectionEvent, @@ -3134,10 +3184,14 @@ var ERROR_TYPES_RE = /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Ran function getLocationHref() { if (typeof document === 'undefined' || document.location == null) return ''; - return document.location.href; } +function getLocationOrigin() { + if (typeof document === 'undefined' || document.location == null) return ''; + return document.location.origin; +} + /** * TraceKit.report: cross-browser processing of unhandled exceptions * @@ -3545,6 +3599,44 @@ TraceKit.computeStackTrace = (function computeStackTraceWrapper() { element.func = UNKNOWN_FUNCTION; } + if (element.url && element.url.substr(0, 5) === 'blob:') { + // Special case for handling JavaScript loaded into a blob. + // We use a synchronous AJAX request here as a blob is already in + // memory - it's not making a network request. This will generate a warning + // in the browser console, but there has already been an error so that's not + // that much of an issue. + var xhr = new XMLHttpRequest(); + xhr.open('GET', element.url, false); + xhr.send(null); + + // If we failed to download the source, skip this patch + if (xhr.status === 200) { + var source = xhr.responseText || ''; + + // We trim the source down to the last 300 characters as sourceMappingURL is always at the end of the file. + // Why 300? To be in line with: https://github.com/getsentry/sentry/blob/4af29e8f2350e20c28a6933354e4f42437b4ba42/src/sentry/lang/javascript/processor.py#L164-L175 + source = source.slice(-300); + + // Now we dig out the source map URL + var sourceMaps = source.match(/\/\/# sourceMappingURL=(.*)$/); + + // If we don't find a source map comment or we find more than one, continue on to the next element. + if (sourceMaps) { + var sourceMapAddress = sourceMaps[1]; + + // Now we check to see if it's a relative URL. + // If it is, convert it to an absolute one. + if (sourceMapAddress.charAt(0) === '~') { + sourceMapAddress = getLocationOrigin() + sourceMapAddress.slice(1); + } + + // Now we strip the '.map' off of the end of the URL and update the + // element so that Sentry can match the map to the blob. + element.url = sourceMapAddress.slice(0, -4); + } + } + } + stack.push(element); } diff --git a/dist/angular,ember,require,vue/raven.min.js b/dist/angular,ember,require,vue/raven.min.js index 0c710d3be1b2..78999f86e259 100644 --- a/dist/angular,ember,require,vue/raven.min.js +++ b/dist/angular,ember,require,vue/raven.min.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.24.2 (540f32b) | github.com/getsentry/raven-js */ -!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.Raven=a()}}(function(){var a;return function b(a,c,d){function e(g,h){if(!c[g]){if(!a[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};a[g][0].call(k.exports,function(b){var c=a[g][1][b];return e(c?c:b)},k,k.exports,b,a,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;g":"anonymous component")+(a._isVue&&a.$options.__file?" at "+a.$options.__file:"")}function e(a,b){if(b=b||window.Vue,b&&b.config){var c=b.config.errorHandler;b.config.errorHandler=function(b,e,f){var g={};"[object Object]"===Object.prototype.toString.call(e)&&(g.componentName=d(e),g.propsData=e.$options.propsData),"undefined"!=typeof f&&(g.lifecycleHook=f),a.captureException(b,{extra:g}),"function"==typeof c&&c.call(this,b,e,f)}}}b.exports=e,a(8).addPlugin(b.exports)},{8:8}],5:[function(a,b,c){function d(a){this.name="RavenConfigError",this.message=a}d.prototype=new Error,d.prototype.constructor=d,b.exports=d},{}],6:[function(a,b,c){var d=a(9),e=function(a,b,c){var e=a[b],f=a;if(b in a){var g="warn"===b?"warning":b;a[b]=function(){var a=[].slice.call(arguments),h=d.safeJoin(a," "),i={level:g,logger:"console",extra:{arguments:a}};"assert"===b?a[0]===!1&&(h="Assertion failed: "+(d.safeJoin(a.slice(1)," ")||"console.assert"),i.extra.arguments=a.slice(1),c&&c(h,i)):c&&c(h,i),e&&Function.prototype.apply.call(e,f,a)}}};b.exports={wrapMethod:e}},{9:9}],7:[function(a,b,c){(function(c){function d(){return+new Date}function e(a,b){return q(b)?function(c){return b(c,a)}:b}function f(){this.b=!("object"!=typeof JSON||!JSON.stringify),this.c=!p(Q),this.d=!p(R),this.e=null,this.f=null,this.g=null,this.h=null,this.i=null,this.j=null,this.k={},this.l={release:P.SENTRY_RELEASE&&P.SENTRY_RELEASE.id,logger:"javascript",ignoreErrors:[],ignoreUrls:[],whitelistUrls:[],includePaths:[],headers:null,collectWindowErrors:!0,captureUnhandledRejections:!0,maxMessageLength:0,maxUrlLength:250,stackTraceLimit:50,autoBreadcrumbs:!0,instrument:!0,sampleRate:1,sanitizeKeys:[]},this.m={method:"POST",keepalive:!0,referrerPolicy:I()?"origin":""},this.n=0,this.o=!1,this.p=Error.stackTraceLimit,this.q=P.console||{},this.r={},this.s=[],this.t=d(),this.u=[],this.v=[],this.w=null,this.x=P.location,this.y=this.x&&this.x.href,this.z();for(var a in this.q)this.r[a]=this.q[a]}var g=a(10),h=a(11),i=a(12),j=a(5),k=a(9),l=k.isError,m=k.isObject,n=k.isPlainObject,o=k.isErrorEvent,p=k.isUndefined,q=k.isFunction,r=k.isString,s=k.isArray,t=k.isEmptyObject,u=k.each,v=k.objectMerge,w=k.truncate,x=k.objectFrozen,y=k.hasKey,z=k.joinRegExp,A=k.urlencode,B=k.uuid4,C=k.htmlTreeAsString,D=k.isSameException,E=k.isSameStacktrace,F=k.parseUrl,G=k.fill,H=k.supportsFetch,I=k.supportsReferrerPolicy,J=k.serializeKeysForMessage,K=k.serializeException,L=k.sanitize,M=a(6).wrapMethod,N="source protocol user pass host port path".split(" "),O=/^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/,P="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},Q=P.document,R=P.navigator;f.prototype={VERSION:"3.24.2",debug:!1,TraceKit:g,config:function(a,b){var c=this;if(c.h)return this.A("error","Error: Raven has already been configured"),c;if(!a)return c;var d=c.l;b&&u(b,function(a,b){"tags"===a||"extra"===a||"user"===a?c.k[a]=b:d[a]=b}),c.setDSN(a),d.ignoreErrors.push(/^Script error\.?$/),d.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/),d.ignoreErrors=z(d.ignoreErrors),d.ignoreUrls=!!d.ignoreUrls.length&&z(d.ignoreUrls),d.whitelistUrls=!!d.whitelistUrls.length&&z(d.whitelistUrls),d.includePaths=z(d.includePaths),d.maxBreadcrumbs=Math.max(0,Math.min(d.maxBreadcrumbs||100,100));var e={xhr:!0,console:!0,dom:!0,location:!0,sentry:!0},f=d.autoBreadcrumbs;"[object Object]"==={}.toString.call(f)?f=v(e,f):f!==!1&&(f=e),d.autoBreadcrumbs=f;var h={tryCatch:!0},i=d.instrument;return"[object Object]"==={}.toString.call(i)?i=v(h,i):i!==!1&&(i=h),d.instrument=i,g.collectWindowErrors=!!d.collectWindowErrors,c},install:function(){var a=this;return a.isSetup()&&!a.o&&(g.report.subscribe(function(){a.B.apply(a,arguments)}),a.l.captureUnhandledRejections&&a.C(),a.D(),a.l.instrument&&a.l.instrument.tryCatch&&a.E(),a.l.autoBreadcrumbs&&a.F(),a.G(),a.o=!0),Error.stackTraceLimit=a.l.stackTraceLimit,this},setDSN:function(a){var b=this,c=b.H(a),d=c.path.lastIndexOf("/"),e=c.path.substr(1,d);b.I=a,b.i=c.user,b.J=c.pass&&c.pass.substr(1),b.j=c.path.substr(d+1),b.h=b.K(c),b.L=b.h+"/"+e+"api/"+b.j+"/store/",this.z()},context:function(a,b,c){return q(a)&&(c=b||[],b=a,a=void 0),this.wrap(a,b).apply(this,c)},wrap:function(a,b,c){function d(){var d=[],f=arguments.length,g=!a||a&&a.deep!==!1;for(c&&q(c)&&c.apply(this,arguments);f--;)d[f]=g?e.wrap(a,arguments[f]):arguments[f];try{return b.apply(this,d)}catch(h){throw e.M(),e.captureException(h,a),h}}var e=this;if(p(b)&&!q(a))return a;if(q(a)&&(b=a,a=void 0),!q(b))return b;try{if(b.N)return b;if(b.O)return b.O}catch(f){return b}for(var g in b)y(b,g)&&(d[g]=b[g]);return d.prototype=b.prototype,b.O=d,d.N=!0,d.P=b,d},uninstall:function(){return g.report.uninstall(),this.Q(),this.R(),this.S(),this.T(),Error.stackTraceLimit=this.p,this.o=!1,this},U:function(a){this.A("debug","Raven caught unhandled promise rejection:",a),this.captureException(a.reason,{extra:{unhandledPromiseRejection:!0}})},C:function(){return this.U=this.U.bind(this),P.addEventListener&&P.addEventListener("unhandledrejection",this.U),this},Q:function(){return P.removeEventListener&&P.removeEventListener("unhandledrejection",this.U),this},captureException:function(a,b){if(b=v({trimHeadFrames:0},b?b:{}),o(a)&&a.error)a=a.error;else if(l(a))a=a;else{if(!n(a))return this.captureMessage(a,v(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}));b=this.V(b,a),a=new Error(b.message)}this.e=a;try{var c=g.computeStackTrace(a);this.W(c,b)}catch(d){if(a!==d)throw d}return this},V:function(a,b){var c=Object.keys(b).sort(),d=v(a,{message:"Non-Error exception captured with keys: "+J(c),fingerprint:[i(c)],extra:a.extra||{}});return d.extra.X=K(b),d},captureMessage:function(a,b){if(!this.l.ignoreErrors.test||!this.l.ignoreErrors.test(a)){b=b||{},a+="";var c,d=v({message:a},b);try{throw new Error(a)}catch(e){c=e}c.name=null;var f=g.computeStackTrace(c),h=s(f.stack)&&f.stack[1];h&&"Raven.captureException"===h.func&&(h=f.stack[2]);var i=h&&h.url||"";if((!this.l.ignoreUrls.test||!this.l.ignoreUrls.test(i))&&(!this.l.whitelistUrls.test||this.l.whitelistUrls.test(i))){if(this.l.stacktrace||b&&b.stacktrace){d.fingerprint=null==d.fingerprint?a:d.fingerprint,b=v({trimHeadFrames:0},b),b.trimHeadFrames+=1;var j=this.Y(f,b);d.stacktrace={frames:j.reverse()}}return d.fingerprint&&(d.fingerprint=s(d.fingerprint)?d.fingerprint:[d.fingerprint]),this.Z(d),this}}},captureBreadcrumb:function(a){var b=v({timestamp:d()/1e3},a);if(q(this.l.breadcrumbCallback)){var c=this.l.breadcrumbCallback(b);if(m(c)&&!t(c))b=c;else if(c===!1)return this}return this.v.push(b),this.v.length>this.l.maxBreadcrumbs&&this.v.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.s.push([a,b]),this.o&&this.G(),this},setUserContext:function(a){return this.k.user=a,this},setExtraContext:function(a){return this.$("extra",a),this},setTagsContext:function(a){return this.$("tags",a),this},clearContext:function(){return this.k={},this},getContext:function(){return JSON.parse(h(this.k))},setEnvironment:function(a){return this.l.environment=a,this},setRelease:function(a){return this.l.release=a,this},setDataCallback:function(a){var b=this.l.dataCallback;return this.l.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.l.breadcrumbCallback;return this.l.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.l.shouldSendCallback;return this.l.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.l.transport=a,this},lastException:function(){return this.e},lastEventId:function(){return this.g},isSetup:function(){return!!this.b&&(!!this.h||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.A("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=P.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(Q){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.I;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.k.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.K(this.H(c)),h=Q.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(Q.head||Q.body).appendChild(h)}},M:function(){var a=this;this.n+=1,setTimeout(function(){a.n-=1})},_:function(a,b){var c,d;if(this.c){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),Q.createEvent?(c=Q.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=Q.createEventObject(),c.eventType=a);for(d in b)y(b,d)&&(c[d]=b[d]);if(Q.createEvent)Q.dispatchEvent(c);else try{Q.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},aa:function(a){var b=this;return function(c){if(b.ba=null,b.w!==c){b.w=c;var d;try{d=C(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ca:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.ba;g||a.aa("input")(c),clearTimeout(g),a.ba=setTimeout(function(){a.ba=null},b)}}},da:function(a,b){var c=F(this.x.href),d=F(b),e=F(a);this.y=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},D:function(){var a=this;a.ea=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.N?a.ea.apply(this.P,arguments):a.ea.apply(this,arguments)}},R:function(){this.ea&&(Function.prototype.toString=this.ea)},E:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.da(b.y,c+""),a.apply(this,arguments)}};G(history,"pushState",j,d),G(history,"replaceState",j,d)}if(c.console&&"console"in P&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};u(["debug","info","warn","error","log"],function(a,b){M(console,b,k)})}},S:function(){for(var a;this.u.length;){a=this.u.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},T:function(){for(var a in this.r)this.q[a]=this.r[a]},G:function(){var a=this;u(this.s,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},H:function(a){var b=O.exec(a),c={},d=7;try{for(;d--;)c[N[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.l.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},K:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},B:function(){this.n||this.W.apply(this,arguments)},W:function(a,b){var c=this.Y(a,b);this._("handle",{stackInfo:a,options:b}),this.ga(a.name,a.message,a.url,a.lineno,c,b)},Y:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(u(a.stack,function(b,e){var f=c.ha(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.v,0)}),this.k.user&&(a.user=this.k.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),a=this.qa(a),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||t(a[b]))&&delete a[b]}),q(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!t(a)&&(!q(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.na()?void this.A("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function B(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&j(b))for(c=b.split(/\s+/),f=0;fc?M(a,b-1):d}function N(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?T:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function O(a,b){function c(a){return k(a)?a.map(function(a){return c(a)}):i(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!k(b)||k(b)&&0===b.length)return a;var d,e=w(b),f="********";try{d=JSON.parse(P(a))}catch(g){return a}return c(d)}var P=a(11),Q="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},R=3,S=51200,T=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isUndefined:g,isFunction:h,isPlainObject:i,isString:j,isArray:k,isEmptyObject:l,supportsErrorEvent:m,supportsFetch:n,supportsReferrerPolicy:o,supportsPromiseRejectionEvent:p,wrappedCallback:q,each:r,objectMerge:s,truncate:u,objectFrozen:t,hasKey:v,joinRegExp:w,urlencode:x,uuid4:z,htmlTreeAsString:A,htmlElementAsString:B,isSameException:E,isSameStacktrace:F,parseUrl:y,fill:G,safeJoin:H,serializeException:M,serializeKeysForMessage:N,sanitize:O}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{11:11}],10:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}var e=a(9),f={collectWindowErrors:!0,debug:!1},g="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},h=[].slice,i="?",j=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;f.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function k(a,b){var c=null;if(!b||f.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(h.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,g,h){var l=null,m=e.isErrorEvent(h)?h.error:h,n=e.isErrorEvent(a)?a.message:a;if(v)f.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&e.isError(m))l=f.computeStackTrace(m),k(l,!0);else{var p,r={url:b,line:c,column:g},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(j);p&&(s=p[1],n=p[2])}r.func=i,l={name:s,message:n,url:d(),stack:[r]},k(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=g.onerror,g.onerror=l,r=!0)}function n(){r&&(g.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,k.apply(null,[a,!1].concat(b))}function p(a,b){var c=h.call(arguments,1);if(v){if(u===a)return;o()}var d=f.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),f.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,e,f=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,g=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,h=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,j=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,k=/\((\S*)(?::(\d+))(?::(\d+))\)/,l=a.stack.split("\n"),m=[],n=(/^(.*) is undefined$/.exec(a.message),0),o=l.length;n eval")>-1;q&&(b=j.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==n||c[5]||"undefined"==typeof a.columnNumber||(m[0].column=a.columnNumber+1),e={url:c[3],func:c[1]||i,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}!e.func&&e.line&&(e.func=i),m.push(e)}return m.length?{name:a.name,message:a.message,url:d(),stack:m}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=i),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,g){for(var h,j,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==e&&o!==f.report){ -if(j={url:null,func:i,line:null,column:null},o.name?j.func=o.name:(h=k.exec(o.toString()))&&(j.func=h[1]),"undefined"==typeof j.func)try{j.func=h.input.substring(0,h.input.indexOf("{"))}catch(p){}m[""+o]?n=!0:m[""+o]=!0,l.push(j)}g&&l.splice(0,g);var q={name:a.name,message:a.message,url:d(),stack:l};return b(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),q}function e(b,e){var g=null;e=null==e?0:+e;try{if(g=a(b))return g}catch(h){if(f.debug)throw h}try{if(g=c(b,e+1))return g}catch(h){if(f.debug)throw h}return{name:b.name,message:b.message,url:d()}}return e.augmentStackTraceWithInitialElement=b,e.computeStackTraceFromStackProp=a,e}(),b.exports=f}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{9:9}],11:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}],12:[function(a,b,c){function d(a,b){var c=(65535&a)+(65535&b),d=(a>>16)+(b>>16)+(c>>16);return d<<16|65535&c}function e(a,b){return a<>>32-b}function f(a,b,c,f,g,h){return d(e(d(d(b,a),d(f,h)),g),c)}function g(a,b,c,d,e,g,h){return f(b&c|~b&d,a,b,e,g,h)}function h(a,b,c,d,e,g,h){return f(b&d|c&~d,a,b,e,g,h)}function i(a,b,c,d,e,g,h){return f(b^c^d,a,b,e,g,h)}function j(a,b,c,d,e,g,h){return f(c^(b|~d),a,b,e,g,h)}function k(a,b){a[b>>5]|=128<>>9<<4)+14]=b;var c,e,f,k,l,m=1732584193,n=-271733879,o=-1732584194,p=271733878;for(c=0;c>5]>>>b%32&255);return c}function m(a){var b,c=[];for(c[(a.length>>2)-1]=void 0,b=0;b>5]|=(255&a.charCodeAt(b/8))<16&&(e=k(e,8*a.length)),c=0;c<16;c+=1)f[c]=909522486^e[c],g[c]=1549556828^e[c];return d=k(f.concat(m(b)),512+8*b.length),l(k(g.concat(d),640))}function p(a){var b,c,d="0123456789abcdef",e="";for(c=0;c>>4&15)+d.charAt(15&b);return e}function q(a){return unescape(encodeURIComponent(a))}function r(a){return n(q(a))}function s(a){return p(r(a))}function t(a,b){return o(q(a),q(b))}function u(a,b){return p(t(a,b))}function v(a,b,c){return b?c?t(b,a):u(b,a):c?r(a):s(a)}b.exports=v},{}]},{},[8,1,2,3,4])(8)}); +/*! Raven.js 3.25.0 (80dffad) | github.com/getsentry/raven-js */ +!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.Raven=a()}}(function(){var a;return function b(a,c,d){function e(g,h){if(!c[g]){if(!a[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};a[g][0].call(k.exports,function(b){var c=a[g][1][b];return e(c?c:b)},k,k.exports,b,a,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;g":"anonymous component")+(a._isVue&&a.$options.__file?" at "+a.$options.__file:"")}function e(a,b){if(b=b||window.Vue,b&&b.config){var c=b.config.errorHandler;b.config.errorHandler=function(b,e,f){var g={};"[object Object]"===Object.prototype.toString.call(e)&&(g.componentName=d(e),g.propsData=e.$options.propsData),"undefined"!=typeof f&&(g.lifecycleHook=f),a.captureException(b,{extra:g}),"function"==typeof c&&c.call(this,b,e,f)}}}b.exports=e,a(8).addPlugin(b.exports)},{8:8}],5:[function(a,b,c){function d(a){this.name="RavenConfigError",this.message=a}d.prototype=new Error,d.prototype.constructor=d,b.exports=d},{}],6:[function(a,b,c){var d=a(9),e=function(a,b,c){var e=a[b],f=a;if(b in a){var g="warn"===b?"warning":b;a[b]=function(){var a=[].slice.call(arguments),h=d.safeJoin(a," "),i={level:g,logger:"console",extra:{arguments:a}};"assert"===b?a[0]===!1&&(h="Assertion failed: "+(d.safeJoin(a.slice(1)," ")||"console.assert"),i.extra.arguments=a.slice(1),c&&c(h,i)):c&&c(h,i),e&&Function.prototype.apply.call(e,f,a)}}};b.exports={wrapMethod:e}},{9:9}],7:[function(a,b,c){(function(c){function d(){return+new Date}function e(a,b){return s(b)?function(c){return b(c,a)}:b}function f(){this.b=!("object"!=typeof JSON||!JSON.stringify),this.c=!r(S),this.d=!r(T),this.e=null,this.f=null,this.g=null,this.h=null,this.i=null,this.j=null,this.k={},this.l={release:R.SENTRY_RELEASE&&R.SENTRY_RELEASE.id,logger:"javascript",ignoreErrors:[],ignoreUrls:[],whitelistUrls:[],includePaths:[],headers:null,collectWindowErrors:!0,captureUnhandledRejections:!0,maxMessageLength:0,maxUrlLength:250,stackTraceLimit:50,autoBreadcrumbs:!0,instrument:!0,sampleRate:1,sanitizeKeys:[]},this.m={method:"POST",keepalive:!0,referrerPolicy:K()?"origin":""},this.n=0,this.o=!1,this.p=Error.stackTraceLimit,this.q=R.console||{},this.r={},this.s=[],this.t=d(),this.u=[],this.v=[],this.w=null,this.x=R.location,this.y=this.x&&this.x.href,this.z();for(var a in this.q)this.r[a]=this.q[a]}var g=a(10),h=a(11),i=a(12),j=a(5),k=a(9),l=k.isErrorEvent,m=k.isDOMError,n=k.isDOMException,o=k.isError,p=k.isObject,q=k.isPlainObject,r=k.isUndefined,s=k.isFunction,t=k.isString,u=k.isArray,v=k.isEmptyObject,w=k.each,x=k.objectMerge,y=k.truncate,z=k.objectFrozen,A=k.hasKey,B=k.joinRegExp,C=k.urlencode,D=k.uuid4,E=k.htmlTreeAsString,F=k.isSameException,G=k.isSameStacktrace,H=k.parseUrl,I=k.fill,J=k.supportsFetch,K=k.supportsReferrerPolicy,L=k.serializeKeysForMessage,M=k.serializeException,N=k.sanitize,O=a(6).wrapMethod,P="source protocol user pass host port path".split(" "),Q=/^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/,R="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},S=R.document,T=R.navigator;f.prototype={VERSION:"3.25.0",debug:!1,TraceKit:g,config:function(a,b){var c=this;if(c.h)return this.A("error","Error: Raven has already been configured"),c;if(!a)return c;var d=c.l;b&&w(b,function(a,b){"tags"===a||"extra"===a||"user"===a?c.k[a]=b:d[a]=b}),c.setDSN(a),d.ignoreErrors.push(/^Script error\.?$/),d.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/),d.ignoreErrors=B(d.ignoreErrors),d.ignoreUrls=!!d.ignoreUrls.length&&B(d.ignoreUrls),d.whitelistUrls=!!d.whitelistUrls.length&&B(d.whitelistUrls),d.includePaths=B(d.includePaths),d.maxBreadcrumbs=Math.max(0,Math.min(d.maxBreadcrumbs||100,100));var e={xhr:!0,console:!0,dom:!0,location:!0,sentry:!0},f=d.autoBreadcrumbs;"[object Object]"==={}.toString.call(f)?f=x(e,f):f!==!1&&(f=e),d.autoBreadcrumbs=f;var h={tryCatch:!0},i=d.instrument;return"[object Object]"==={}.toString.call(i)?i=x(h,i):i!==!1&&(i=h),d.instrument=i,g.collectWindowErrors=!!d.collectWindowErrors,c},install:function(){var a=this;return a.isSetup()&&!a.o&&(g.report.subscribe(function(){a.B.apply(a,arguments)}),a.l.captureUnhandledRejections&&a.C(),a.D(),a.l.instrument&&a.l.instrument.tryCatch&&a.E(),a.l.autoBreadcrumbs&&a.F(),a.G(),a.o=!0),Error.stackTraceLimit=a.l.stackTraceLimit,this},setDSN:function(a){var b=this,c=b.H(a),d=c.path.lastIndexOf("/"),e=c.path.substr(1,d);b.I=a,b.i=c.user,b.J=c.pass&&c.pass.substr(1),b.j=c.path.substr(d+1),b.h=b.K(c),b.L=b.h+"/"+e+"api/"+b.j+"/store/",this.z()},context:function(a,b,c){return s(a)&&(c=b||[],b=a,a=void 0),this.wrap(a,b).apply(this,c)},wrap:function(a,b,c){function d(){var d=[],f=arguments.length,g=!a||a&&a.deep!==!1;for(c&&s(c)&&c.apply(this,arguments);f--;)d[f]=g?e.wrap(a,arguments[f]):arguments[f];try{return b.apply(this,d)}catch(h){throw e.M(),e.captureException(h,a),h}}var e=this;if(r(b)&&!s(a))return a;if(s(a)&&(b=a,a=void 0),!s(b))return b;try{if(b.N)return b;if(b.O)return b.O}catch(f){return b}for(var g in b)A(b,g)&&(d[g]=b[g]);return d.prototype=b.prototype,b.O=d,d.N=!0,d.P=b,d},uninstall:function(){return g.report.uninstall(),this.Q(),this.R(),this.S(),this.T(),Error.stackTraceLimit=this.p,this.o=!1,this},U:function(a){this.A("debug","Raven caught unhandled promise rejection:",a),this.captureException(a.reason,{extra:{unhandledPromiseRejection:!0}})},C:function(){return this.U=this.U.bind(this),R.addEventListener&&R.addEventListener("unhandledrejection",this.U),this},Q:function(){return R.removeEventListener&&R.removeEventListener("unhandledrejection",this.U),this},captureException:function(a,b){if(b=x({trimHeadFrames:0},b?b:{}),l(a)&&a.error)a=a.error;else{if(m(a)||n(a)){var c=a.name||(m(a)?"DOMError":"DOMException"),d=a.message?c+": "+a.message:c;return this.captureMessage(d,x(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}))}if(o(a))a=a;else{if(!q(a))return this.captureMessage(a,x(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}));b=this.V(b,a),a=new Error(b.message)}}this.e=a;try{var e=g.computeStackTrace(a);this.W(e,b)}catch(f){if(a!==f)throw f}return this},V:function(a,b){var c=Object.keys(b).sort(),d=x(a,{message:"Non-Error exception captured with keys: "+L(c),fingerprint:[i(c)],extra:a.extra||{}});return d.extra.X=M(b),d},captureMessage:function(a,b){if(!this.l.ignoreErrors.test||!this.l.ignoreErrors.test(a)){b=b||{},a+="";var c,d=x({message:a},b);try{throw new Error(a)}catch(e){c=e}c.name=null;var f=g.computeStackTrace(c),h=u(f.stack)&&f.stack[1];h&&"Raven.captureException"===h.func&&(h=f.stack[2]);var i=h&&h.url||"";if((!this.l.ignoreUrls.test||!this.l.ignoreUrls.test(i))&&(!this.l.whitelistUrls.test||this.l.whitelistUrls.test(i))){if(this.l.stacktrace||b&&b.stacktrace){d.fingerprint=null==d.fingerprint?a:d.fingerprint,b=x({trimHeadFrames:0},b),b.trimHeadFrames+=1;var j=this.Y(f,b);d.stacktrace={frames:j.reverse()}}return d.fingerprint&&(d.fingerprint=u(d.fingerprint)?d.fingerprint:[d.fingerprint]),this.Z(d),this}}},captureBreadcrumb:function(a){var b=x({timestamp:d()/1e3},a);if(s(this.l.breadcrumbCallback)){var c=this.l.breadcrumbCallback(b);if(p(c)&&!v(c))b=c;else if(c===!1)return this}return this.v.push(b),this.v.length>this.l.maxBreadcrumbs&&this.v.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.s.push([a,b]),this.o&&this.G(),this},setUserContext:function(a){return this.k.user=a,this},setExtraContext:function(a){return this.$("extra",a),this},setTagsContext:function(a){return this.$("tags",a),this},clearContext:function(){return this.k={},this},getContext:function(){return JSON.parse(h(this.k))},setEnvironment:function(a){return this.l.environment=a,this},setRelease:function(a){return this.l.release=a,this},setDataCallback:function(a){var b=this.l.dataCallback;return this.l.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.l.breadcrumbCallback;return this.l.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.l.shouldSendCallback;return this.l.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.l.transport=a,this},lastException:function(){return this.e},lastEventId:function(){return this.g},isSetup:function(){return!!this.b&&(!!this.h||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.A("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=R.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(S){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.I;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.k.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.K(this.H(c)),h=S.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(S.head||S.body).appendChild(h)}},M:function(){var a=this;this.n+=1,setTimeout(function(){a.n-=1})},_:function(a,b){var c,d;if(this.c){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),S.createEvent?(c=S.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=S.createEventObject(),c.eventType=a);for(d in b)A(b,d)&&(c[d]=b[d]);if(S.createEvent)S.dispatchEvent(c);else try{S.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},aa:function(a){var b=this;return function(c){if(b.ba=null,b.w!==c){b.w=c;var d;try{d=E(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ca:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.ba;g||a.aa("input")(c),clearTimeout(g),a.ba=setTimeout(function(){a.ba=null},b)}}},da:function(a,b){var c=H(this.x.href),d=H(b),e=H(a);this.y=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},D:function(){var a=this;a.ea=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.N?a.ea.apply(this.P,arguments):a.ea.apply(this,arguments)}},R:function(){this.ea&&(Function.prototype.toString=this.ea)},E:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.da(b.y,c+""),a.apply(this,arguments)}};I(history,"pushState",j,d),I(history,"replaceState",j,d)}if(c.console&&"console"in R&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};w(["debug","info","warn","error","log"],function(a,b){O(console,b,k)})}},S:function(){for(var a;this.u.length;){a=this.u.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},T:function(){for(var a in this.r)this.q[a]=this.r[a]},G:function(){var a=this;w(this.s,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},H:function(a){var b=Q.exec(a),c={},d=7;try{for(;d--;)c[P[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.l.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},K:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},B:function(){this.n||this.W.apply(this,arguments)},W:function(a,b){var c=this.Y(a,b);this._("handle",{stackInfo:a,options:b}),this.ga(a.name,a.message,a.url,a.lineno,c,b)},Y:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(w(a.stack,function(b,e){var f=c.ha(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.v,0)}),this.k.user&&(a.user=this.k.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),a=this.qa(a),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||v(a[b]))&&delete a[b]}),s(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!v(a)&&(!s(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.na()?void this.A("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function F(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&l(b))for(c=b.split(/\s+/),f=0;fc?Q(a,b-1):d}function R(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?X:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function S(a,b){function c(a){return m(a)?a.map(function(a){return c(a)}):k(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!m(b)||m(b)&&0===b.length)return a;var d,e=A(b),f="********";try{d=JSON.parse(T(a))}catch(g){return a}return c(d)}var T=a(11),U="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},V=3,W=51200,X=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isDOMError:g,isDOMException:h,isUndefined:i,isFunction:j,isPlainObject:k,isString:l,isArray:m,isEmptyObject:n,supportsErrorEvent:o,supportsDOMError:p,supportsDOMException:q,supportsFetch:r,supportsReferrerPolicy:s,supportsPromiseRejectionEvent:t,wrappedCallback:u,each:v,objectMerge:w,truncate:y,objectFrozen:x,hasKey:z,joinRegExp:A,urlencode:B,uuid4:D,htmlTreeAsString:E,htmlElementAsString:F,isSameException:I,isSameStacktrace:J,parseUrl:C,fill:K,safeJoin:L,serializeException:Q,serializeKeysForMessage:R,sanitize:S}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{11:11}],10:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}function e(){return"undefined"==typeof document||null==document.location?"":document.location.origin}var f=a(9),g={collectWindowErrors:!0,debug:!1},h="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},i=[].slice,j="?",k=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;g.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function e(a,b){var c=null;if(!b||g.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(i.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,h,i){var l=null,m=f.isErrorEvent(i)?i.error:i,n=f.isErrorEvent(a)?a.message:a;if(v)g.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&f.isError(m))l=g.computeStackTrace(m),e(l,!0);else{var p,r={url:b,line:c,column:h},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(k);p&&(s=p[1],n=p[2])}r.func=j,l={name:s,message:n,url:d(),stack:[r]},e(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=h.onerror,h.onerror=l,r=!0)}function n(){r&&(h.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,e.apply(null,[a,!1].concat(b))}function p(a,b){var c=i.call(arguments,1);if(v){if(u===a)return;o()}var d=g.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),g.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,f,g=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,h=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,i=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,k=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,l=/\((\S*)(?::(\d+))(?::(\d+))\)/,m=a.stack.split("\n"),n=[],o=(/^(.*) is undefined$/.exec(a.message),0),p=m.length;o eval")>-1;r&&(b=k.exec(c[3]))?(c[3]=b[1], +c[4]=b[2],c[5]=null):0!==o||c[5]||"undefined"==typeof a.columnNumber||(n[0].column=a.columnNumber+1),f={url:c[3],func:c[1]||j,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}if(!f.func&&f.line&&(f.func=j),f.url&&"blob:"===f.url.substr(0,5)){var s=new XMLHttpRequest;if(s.open("GET",f.url,!1),s.send(null),200===s.status){var t=s.responseText||"";t=t.slice(-300);var u=t.match(/\/\/# sourceMappingURL=(.*)$/);if(u){var v=u[1];"~"===v.charAt(0)&&(v=e()+v.slice(1)),f.url=v.slice(0,-4)}}}n.push(f)}return n.length?{name:a.name,message:a.message,url:d(),stack:n}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=j),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,e){for(var h,i,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==f&&o!==g.report){if(i={url:null,func:j,line:null,column:null},o.name?i.func=o.name:(h=k.exec(o.toString()))&&(i.func=h[1]),"undefined"==typeof i.func)try{i.func=h.input.substring(0,h.input.indexOf("{"))}catch(p){}m[""+o]?n=!0:m[""+o]=!0,l.push(i)}e&&l.splice(0,e);var q={name:a.name,message:a.message,url:d(),stack:l};return b(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),q}function f(b,e){var f=null;e=null==e?0:+e;try{if(f=a(b))return f}catch(h){if(g.debug)throw h}try{if(f=c(b,e+1))return f}catch(h){if(g.debug)throw h}return{name:b.name,message:b.message,url:d()}}return f.augmentStackTraceWithInitialElement=b,f.computeStackTraceFromStackProp=a,f}(),b.exports=g}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{9:9}],11:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}],12:[function(a,b,c){function d(a,b){var c=(65535&a)+(65535&b),d=(a>>16)+(b>>16)+(c>>16);return d<<16|65535&c}function e(a,b){return a<>>32-b}function f(a,b,c,f,g,h){return d(e(d(d(b,a),d(f,h)),g),c)}function g(a,b,c,d,e,g,h){return f(b&c|~b&d,a,b,e,g,h)}function h(a,b,c,d,e,g,h){return f(b&d|c&~d,a,b,e,g,h)}function i(a,b,c,d,e,g,h){return f(b^c^d,a,b,e,g,h)}function j(a,b,c,d,e,g,h){return f(c^(b|~d),a,b,e,g,h)}function k(a,b){a[b>>5]|=128<>>9<<4)+14]=b;var c,e,f,k,l,m=1732584193,n=-271733879,o=-1732584194,p=271733878;for(c=0;c>5]>>>b%32&255);return c}function m(a){var b,c=[];for(c[(a.length>>2)-1]=void 0,b=0;b>5]|=(255&a.charCodeAt(b/8))<16&&(e=k(e,8*a.length)),c=0;c<16;c+=1)f[c]=909522486^e[c],g[c]=1549556828^e[c];return d=k(f.concat(m(b)),512+8*b.length),l(k(g.concat(d),640))}function p(a){var b,c,d="0123456789abcdef",e="";for(c=0;c>>4&15)+d.charAt(15&b);return e}function q(a){return unescape(encodeURIComponent(a))}function r(a){return n(q(a))}function s(a){return p(r(a))}function t(a,b){return o(q(a),q(b))}function u(a,b){return p(t(a,b))}function v(a,b,c){return b?c?t(b,a):u(b,a):c?r(a):s(a)}b.exports=v},{}]},{},[8,1,2,3,4])(8)}); //# sourceMappingURL=raven.min.js.map \ No newline at end of file diff --git a/dist/angular,ember,require,vue/raven.min.js.map b/dist/angular,ember,require,vue/raven.min.js.map index a06d838ac97f..106900dd392d 100644 --- a/dist/angular,ember,require,vue/raven.min.js.map +++ b/dist/angular,ember,require,vue/raven.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","angularPlugin","angular","RavenProvider","$get","$window","ExceptionHandlerProvider","$provide","decorator","exceptionHandler","R","$delegate","ex","cause","captureException","extra","moduleName","provider","config","setDataCallback","wrappedCallback","data","_normalizeData","angularPattern","exception","values","matches","exec","value","type","message","angularDocs","substr","addPlugin","8","9","2","emberPlugin","Ember","_oldOnError","onerror","error","RSVP","on","reason","context","captureMessage","3","requirePlugin","wrap","deep","4","formatComponentName","vm","$root","name","_isVue","$options","_componentTag","__file","vuePlugin","Vue","errorHandler","info","metaData","Object","prototype","toString","componentName","propsData","lifecycleHook","5","RavenConfigError","constructor","6","utils","wrapMethod","console","level","callback","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","msg","safeJoin","logger","Function","apply","7","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","sanitizeKeys","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isError","isObject","isPlainObject","isErrorEvent","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","sanitize","wrapConsoleMethod","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","dsn","options","_logDebug","globalOptions","key","setDSN","push","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","func","undefined","_before","wrapped","_ignoreNextOnError","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","U","event","unhandledPromiseRejection","C","_promiseRejectionHandler","bind","addEventListener","Q","removeEventListener","trimHeadFrames","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","V","currentOptions","exKeys","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","M","setTimeout","_","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","aa","evtName","_keypressTimeout","target","category","ca","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","da","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","D","_originalFunctionToString","E","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","F","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","S","builtin","T","G","installer","concat","H","str","m","allowSecretKey","K","port","B","W","stackInfo","_triggerEvent","_processException","lineno","Y","frame","_normalizeFrame","in_app","ha","stackInfoUrl","normalized","filename","line","colno","column","function","ga","prefixedMessage","culprit","ia","request","Referer","breadcrumbs","_trimBreadcrumbs","ja","urlProp","urlProps","ka","httpData","userAgent","User-Agent","referrer","z","_backoffDuration","_backoffStart","na","oa","current","last","pa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Z","baseData","project","platform","_getHttpData","serverName","server_name","_sanitizeData","forEach","random","_sendProcessedPayload","qa","sa","ra","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","ta","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","open","setRequestHeader","send","ua","hash","evaluated","A","$","setUser","setReleaseContext","10","11","12","RavenConstructor","_Raven","noConflict","Client","what","supportsErrorEvent","ErrorEvent","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","sanitizeMask","safeInput","o_O","getLocationHref","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","y","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","charAt","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","string","raw"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file +{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","angularPlugin","angular","RavenProvider","$get","$window","ExceptionHandlerProvider","$provide","decorator","exceptionHandler","R","$delegate","ex","cause","captureException","extra","moduleName","provider","config","setDataCallback","wrappedCallback","data","_normalizeData","angularPattern","exception","values","matches","exec","value","type","message","angularDocs","substr","addPlugin","8","9","2","emberPlugin","Ember","_oldOnError","onerror","error","RSVP","on","reason","context","captureMessage","3","requirePlugin","wrap","deep","4","formatComponentName","vm","$root","name","_isVue","$options","_componentTag","__file","vuePlugin","Vue","errorHandler","info","metaData","Object","prototype","toString","componentName","propsData","lifecycleHook","5","RavenConfigError","constructor","6","utils","wrapMethod","console","level","callback","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","msg","safeJoin","logger","Function","apply","7","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","sanitizeKeys","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isErrorEvent","isDOMError","isDOMException","isError","isObject","isPlainObject","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","sanitize","wrapConsoleMethod","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","dsn","options","_logDebug","globalOptions","key","setDSN","push","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","func","undefined","_before","wrapped","_ignoreNextOnError","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","U","event","unhandledPromiseRejection","C","_promiseRejectionHandler","bind","addEventListener","Q","removeEventListener","trimHeadFrames","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","V","currentOptions","exKeys","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","M","setTimeout","_","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","aa","evtName","_keypressTimeout","target","category","ca","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","da","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","D","_originalFunctionToString","E","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","F","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","S","builtin","T","G","installer","concat","H","str","m","allowSecretKey","K","port","B","W","stackInfo","_triggerEvent","_processException","lineno","Y","frame","_normalizeFrame","in_app","ha","stackInfoUrl","normalized","filename","line","colno","column","function","ga","prefixedMessage","culprit","ia","request","Referer","breadcrumbs","_trimBreadcrumbs","ja","urlProp","urlProps","ka","httpData","userAgent","User-Agent","referrer","z","_backoffDuration","_backoffStart","na","oa","current","last","pa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Z","baseData","project","platform","_getHttpData","serverName","server_name","_sanitizeData","forEach","random","_sendProcessedPayload","qa","sa","ra","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","ta","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","open","setRequestHeader","send","ua","hash","evaluated","A","$","setUser","setReleaseContext","10","11","12","RavenConstructor","_Raven","noConflict","Client","what","supportsErrorEvent","ErrorEvent","supportsDOMError","DOMError","supportsDOMException","DOMException","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","sanitizeMask","safeInput","o_O","getLocationHref","getLocationOrigin","origin","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","responseText","sourceMaps","sourceMapAddress","charAt","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","y","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","string","raw"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file diff --git a/dist/angular,ember,require/raven.js b/dist/angular,ember,require/raven.js index 750cefc7e227..cf3f66b0541e 100644 --- a/dist/angular,ember,require/raven.js +++ b/dist/angular,ember,require/raven.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.24.2 (540f32b) | github.com/getsentry/raven-js */ +/*! Raven.js 3.25.0 (80dffad) | github.com/getsentry/raven-js */ /* * Includes TraceKit @@ -201,10 +201,12 @@ var md5 = _dereq_(11); var RavenConfigError = _dereq_(4); var utils = _dereq_(8); +var isErrorEvent = utils.isErrorEvent; +var isDOMError = utils.isDOMError; +var isDOMException = utils.isDOMException; var isError = utils.isError; var isObject = utils.isObject; var isPlainObject = utils.isPlainObject; -var isErrorEvent = utils.isErrorEvent; var isUndefined = utils.isUndefined; var isFunction = utils.isFunction; var isString = utils.isString; @@ -332,7 +334,7 @@ Raven.prototype = { // webpack (using a build step causes webpack #1617). Grunt verifies that // this value matches package.json during build. // See: https://github.com/getsentry/raven-js/issues/465 - VERSION: '3.24.2', + VERSION: '3.25.0', debug: false, @@ -664,6 +666,23 @@ Raven.prototype = { if (isErrorEvent(ex) && ex.error) { // If it is an ErrorEvent with `error` property, extract it to get actual Error ex = ex.error; + } else if (isDOMError(ex) || isDOMException(ex)) { + // If it is a DOMError or DOMException (which are legacy APIs, but still supported in some browsers) + // then we just extract the name and message, as they don't provide anything else + // https://developer.mozilla.org/en-US/docs/Web/API/DOMError + // https://developer.mozilla.org/en-US/docs/Web/API/DOMException + var name = ex.name || (isDOMError(ex) ? 'DOMError' : 'DOMException'); + var message = ex.message ? name + ': ' + ex.message : name; + + return this.captureMessage( + message, + objectMerge(options, { + // neither DOMError or DOMException provide stack trace and we most likely wont get it this way as well + // but it's barely any overhead so we may at least try + stacktrace: true, + trimHeadFrames: options.trimHeadFrames + 1 + }) + ); } else if (isError(ex)) { // we have a real Error object ex = ex; @@ -675,6 +694,7 @@ Raven.prototype = { ex = new Error(options.message); } else { // If none of previous checks were valid, then it means that + // it's not a DOMError/DOMException // it's not a plain Object // it's not a valid ErrorEvent (one with an error property) // it's not an Error @@ -2447,7 +2467,7 @@ function isObject(what) { // Yanked from https://git.io/vS8DV re-used under CC0 // with some tiny modifications function isError(value) { - switch ({}.toString.call(value)) { + switch (Object.prototype.toString.call(value)) { case '[object Error]': return true; case '[object Exception]': @@ -2460,7 +2480,15 @@ function isError(value) { } function isErrorEvent(value) { - return supportsErrorEvent() && {}.toString.call(value) === '[object ErrorEvent]'; + return Object.prototype.toString.call(value) === '[object ErrorEvent]'; +} + +function isDOMError(value) { + return Object.prototype.toString.call(value) === '[object DOMError]'; +} + +function isDOMException(value) { + return Object.prototype.toString.call(value) === '[object DOMException]'; } function isUndefined(what) { @@ -2503,6 +2531,24 @@ function supportsErrorEvent() { } } +function supportsDOMError() { + try { + new DOMError(''); // eslint-disable-line no-new + return true; + } catch (e) { + return false; + } +} + +function supportsDOMException() { + try { + new DOMException(''); // eslint-disable-line no-new + return true; + } catch (e) { + return false; + } +} + function supportsFetch() { if (!('fetch' in _window)) return false; @@ -3018,6 +3064,8 @@ module.exports = { isObject: isObject, isError: isError, isErrorEvent: isErrorEvent, + isDOMError: isDOMError, + isDOMException: isDOMException, isUndefined: isUndefined, isFunction: isFunction, isPlainObject: isPlainObject, @@ -3025,6 +3073,8 @@ module.exports = { isArray: isArray, isEmptyObject: isEmptyObject, supportsErrorEvent: supportsErrorEvent, + supportsDOMError: supportsDOMError, + supportsDOMException: supportsDOMException, supportsFetch: supportsFetch, supportsReferrerPolicy: supportsReferrerPolicy, supportsPromiseRejectionEvent: supportsPromiseRejectionEvent, @@ -3084,10 +3134,14 @@ var ERROR_TYPES_RE = /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Ran function getLocationHref() { if (typeof document === 'undefined' || document.location == null) return ''; - return document.location.href; } +function getLocationOrigin() { + if (typeof document === 'undefined' || document.location == null) return ''; + return document.location.origin; +} + /** * TraceKit.report: cross-browser processing of unhandled exceptions * @@ -3495,6 +3549,44 @@ TraceKit.computeStackTrace = (function computeStackTraceWrapper() { element.func = UNKNOWN_FUNCTION; } + if (element.url && element.url.substr(0, 5) === 'blob:') { + // Special case for handling JavaScript loaded into a blob. + // We use a synchronous AJAX request here as a blob is already in + // memory - it's not making a network request. This will generate a warning + // in the browser console, but there has already been an error so that's not + // that much of an issue. + var xhr = new XMLHttpRequest(); + xhr.open('GET', element.url, false); + xhr.send(null); + + // If we failed to download the source, skip this patch + if (xhr.status === 200) { + var source = xhr.responseText || ''; + + // We trim the source down to the last 300 characters as sourceMappingURL is always at the end of the file. + // Why 300? To be in line with: https://github.com/getsentry/sentry/blob/4af29e8f2350e20c28a6933354e4f42437b4ba42/src/sentry/lang/javascript/processor.py#L164-L175 + source = source.slice(-300); + + // Now we dig out the source map URL + var sourceMaps = source.match(/\/\/# sourceMappingURL=(.*)$/); + + // If we don't find a source map comment or we find more than one, continue on to the next element. + if (sourceMaps) { + var sourceMapAddress = sourceMaps[1]; + + // Now we check to see if it's a relative URL. + // If it is, convert it to an absolute one. + if (sourceMapAddress.charAt(0) === '~') { + sourceMapAddress = getLocationOrigin() + sourceMapAddress.slice(1); + } + + // Now we strip the '.map' off of the end of the URL and update the + // element so that Sentry can match the map to the blob. + element.url = sourceMapAddress.slice(0, -4); + } + } + } + stack.push(element); } diff --git a/dist/angular,ember,require/raven.min.js b/dist/angular,ember,require/raven.min.js index e464239974e6..efebe21e6df2 100644 --- a/dist/angular,ember,require/raven.min.js +++ b/dist/angular,ember,require/raven.min.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.24.2 (540f32b) | github.com/getsentry/raven-js */ -!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.Raven=a()}}(function(){var a;return function b(a,c,d){function e(g,h){if(!c[g]){if(!a[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};a[g][0].call(k.exports,function(b){var c=a[g][1][b];return e(c?c:b)},k,k.exports,b,a,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;gthis.l.maxBreadcrumbs&&this.v.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.s.push([a,b]),this.o&&this.G(),this},setUserContext:function(a){return this.k.user=a,this},setExtraContext:function(a){return this.$("extra",a),this},setTagsContext:function(a){return this.$("tags",a),this},clearContext:function(){return this.k={},this},getContext:function(){return JSON.parse(h(this.k))},setEnvironment:function(a){return this.l.environment=a,this},setRelease:function(a){return this.l.release=a,this},setDataCallback:function(a){var b=this.l.dataCallback;return this.l.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.l.breadcrumbCallback;return this.l.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.l.shouldSendCallback;return this.l.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.l.transport=a,this},lastException:function(){return this.e},lastEventId:function(){return this.g},isSetup:function(){return!!this.b&&(!!this.h||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.A("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=P.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(Q){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.I;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.k.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.K(this.H(c)),h=Q.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(Q.head||Q.body).appendChild(h)}},M:function(){var a=this;this.n+=1,setTimeout(function(){a.n-=1})},_:function(a,b){var c,d;if(this.c){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),Q.createEvent?(c=Q.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=Q.createEventObject(),c.eventType=a);for(d in b)y(b,d)&&(c[d]=b[d]);if(Q.createEvent)Q.dispatchEvent(c);else try{Q.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},aa:function(a){var b=this;return function(c){if(b.ba=null,b.w!==c){b.w=c;var d;try{d=C(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ca:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.ba;g||a.aa("input")(c),clearTimeout(g),a.ba=setTimeout(function(){a.ba=null},b)}}},da:function(a,b){var c=F(this.x.href),d=F(b),e=F(a);this.y=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},D:function(){var a=this;a.ea=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.N?a.ea.apply(this.P,arguments):a.ea.apply(this,arguments)}},R:function(){this.ea&&(Function.prototype.toString=this.ea)},E:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.da(b.y,c+""),a.apply(this,arguments)}};G(history,"pushState",j,d),G(history,"replaceState",j,d)}if(c.console&&"console"in P&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};u(["debug","info","warn","error","log"],function(a,b){M(console,b,k)})}},S:function(){for(var a;this.u.length;){a=this.u.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},T:function(){for(var a in this.r)this.q[a]=this.r[a]},G:function(){var a=this;u(this.s,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},H:function(a){var b=O.exec(a),c={},d=7;try{for(;d--;)c[N[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.l.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},K:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},B:function(){this.n||this.W.apply(this,arguments)},W:function(a,b){var c=this.Y(a,b);this._("handle",{stackInfo:a,options:b}),this.ga(a.name,a.message,a.url,a.lineno,c,b)},Y:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(u(a.stack,function(b,e){var f=c.ha(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.v,0)}),this.k.user&&(a.user=this.k.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),a=this.qa(a),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||t(a[b]))&&delete a[b]}),q(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!t(a)&&(!q(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.na()?void this.A("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function B(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&j(b))for(c=b.split(/\s+/),f=0;fc?M(a,b-1):d}function N(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?T:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function O(a,b){function c(a){return k(a)?a.map(function(a){return c(a)}):i(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!k(b)||k(b)&&0===b.length)return a;var d,e=w(b),f="********";try{d=JSON.parse(P(a))}catch(g){return a}return c(d)}var P=a(10),Q="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},R=3,S=51200,T=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isUndefined:g,isFunction:h,isPlainObject:i,isString:j,isArray:k,isEmptyObject:l,supportsErrorEvent:m,supportsFetch:n,supportsReferrerPolicy:o,supportsPromiseRejectionEvent:p,wrappedCallback:q,each:r,objectMerge:s,truncate:u,objectFrozen:t,hasKey:v,joinRegExp:w,urlencode:x,uuid4:z,htmlTreeAsString:A,htmlElementAsString:B,isSameException:E,isSameStacktrace:F,parseUrl:y,fill:G,safeJoin:H,serializeException:M,serializeKeysForMessage:N,sanitize:O}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{10:10}],9:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}var e=a(8),f={collectWindowErrors:!0,debug:!1},g="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},h=[].slice,i="?",j=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;f.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function k(a,b){var c=null;if(!b||f.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(h.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,g,h){var l=null,m=e.isErrorEvent(h)?h.error:h,n=e.isErrorEvent(a)?a.message:a;if(v)f.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&e.isError(m))l=f.computeStackTrace(m),k(l,!0);else{var p,r={url:b,line:c,column:g},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(j);p&&(s=p[1],n=p[2])}r.func=i,l={name:s,message:n,url:d(),stack:[r]},k(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=g.onerror,g.onerror=l,r=!0)}function n(){r&&(g.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,k.apply(null,[a,!1].concat(b))}function p(a,b){var c=h.call(arguments,1);if(v){if(u===a)return;o()}var d=f.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),f.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,e,f=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,g=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,h=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,j=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,k=/\((\S*)(?::(\d+))(?::(\d+))\)/,l=a.stack.split("\n"),m=[],n=(/^(.*) is undefined$/.exec(a.message),0),o=l.length;n eval")>-1;q&&(b=j.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==n||c[5]||"undefined"==typeof a.columnNumber||(m[0].column=a.columnNumber+1),e={url:c[3],func:c[1]||i,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}!e.func&&e.line&&(e.func=i),m.push(e)}return m.length?{name:a.name,message:a.message,url:d(),stack:m}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=i),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,g){for(var h,j,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==e&&o!==f.report){if(j={url:null,func:i,line:null,column:null},o.name?j.func=o.name:(h=k.exec(o.toString()))&&(j.func=h[1]),"undefined"==typeof j.func)try{j.func=h.input.substring(0,h.input.indexOf("{"))}catch(p){}m[""+o]?n=!0:m[""+o]=!0,l.push(j)}g&&l.splice(0,g);var q={name:a.name,message:a.message,url:d(),stack:l};return b(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),q}function e(b,e){var g=null;e=null==e?0:+e;try{if(g=a(b))return g}catch(h){if(f.debug)throw h}try{if(g=c(b,e+1))return g}catch(h){if(f.debug)throw h; -}return{name:b.name,message:b.message,url:d()}}return e.augmentStackTraceWithInitialElement=b,e.computeStackTraceFromStackProp=a,e}(),b.exports=f}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{8:8}],10:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}],11:[function(a,b,c){function d(a,b){var c=(65535&a)+(65535&b),d=(a>>16)+(b>>16)+(c>>16);return d<<16|65535&c}function e(a,b){return a<>>32-b}function f(a,b,c,f,g,h){return d(e(d(d(b,a),d(f,h)),g),c)}function g(a,b,c,d,e,g,h){return f(b&c|~b&d,a,b,e,g,h)}function h(a,b,c,d,e,g,h){return f(b&d|c&~d,a,b,e,g,h)}function i(a,b,c,d,e,g,h){return f(b^c^d,a,b,e,g,h)}function j(a,b,c,d,e,g,h){return f(c^(b|~d),a,b,e,g,h)}function k(a,b){a[b>>5]|=128<>>9<<4)+14]=b;var c,e,f,k,l,m=1732584193,n=-271733879,o=-1732584194,p=271733878;for(c=0;c>5]>>>b%32&255);return c}function m(a){var b,c=[];for(c[(a.length>>2)-1]=void 0,b=0;b>5]|=(255&a.charCodeAt(b/8))<16&&(e=k(e,8*a.length)),c=0;c<16;c+=1)f[c]=909522486^e[c],g[c]=1549556828^e[c];return d=k(f.concat(m(b)),512+8*b.length),l(k(g.concat(d),640))}function p(a){var b,c,d="0123456789abcdef",e="";for(c=0;c>>4&15)+d.charAt(15&b);return e}function q(a){return unescape(encodeURIComponent(a))}function r(a){return n(q(a))}function s(a){return p(r(a))}function t(a,b){return o(q(a),q(b))}function u(a,b){return p(t(a,b))}function v(a,b,c){return b?c?t(b,a):u(b,a):c?r(a):s(a)}b.exports=v},{}]},{},[7,1,2,3])(7)}); +/*! Raven.js 3.25.0 (80dffad) | github.com/getsentry/raven-js */ +!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.Raven=a()}}(function(){var a;return function b(a,c,d){function e(g,h){if(!c[g]){if(!a[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};a[g][0].call(k.exports,function(b){var c=a[g][1][b];return e(c?c:b)},k,k.exports,b,a,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;gthis.l.maxBreadcrumbs&&this.v.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.s.push([a,b]),this.o&&this.G(),this},setUserContext:function(a){return this.k.user=a,this},setExtraContext:function(a){return this.$("extra",a),this},setTagsContext:function(a){return this.$("tags",a),this},clearContext:function(){return this.k={},this},getContext:function(){return JSON.parse(h(this.k))},setEnvironment:function(a){return this.l.environment=a,this},setRelease:function(a){return this.l.release=a,this},setDataCallback:function(a){var b=this.l.dataCallback;return this.l.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.l.breadcrumbCallback;return this.l.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.l.shouldSendCallback;return this.l.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.l.transport=a,this},lastException:function(){return this.e},lastEventId:function(){return this.g},isSetup:function(){return!!this.b&&(!!this.h||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.A("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=R.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(S){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.I;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.k.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.K(this.H(c)),h=S.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(S.head||S.body).appendChild(h)}},M:function(){var a=this;this.n+=1,setTimeout(function(){a.n-=1})},_:function(a,b){var c,d;if(this.c){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),S.createEvent?(c=S.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=S.createEventObject(),c.eventType=a);for(d in b)A(b,d)&&(c[d]=b[d]);if(S.createEvent)S.dispatchEvent(c);else try{S.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},aa:function(a){var b=this;return function(c){if(b.ba=null,b.w!==c){b.w=c;var d;try{d=E(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ca:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.ba;g||a.aa("input")(c),clearTimeout(g),a.ba=setTimeout(function(){a.ba=null},b)}}},da:function(a,b){var c=H(this.x.href),d=H(b),e=H(a);this.y=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},D:function(){var a=this;a.ea=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.N?a.ea.apply(this.P,arguments):a.ea.apply(this,arguments)}},R:function(){this.ea&&(Function.prototype.toString=this.ea)},E:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.da(b.y,c+""),a.apply(this,arguments)}};I(history,"pushState",j,d),I(history,"replaceState",j,d)}if(c.console&&"console"in R&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};w(["debug","info","warn","error","log"],function(a,b){O(console,b,k)})}},S:function(){for(var a;this.u.length;){a=this.u.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},T:function(){for(var a in this.r)this.q[a]=this.r[a]},G:function(){var a=this;w(this.s,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},H:function(a){var b=Q.exec(a),c={},d=7;try{for(;d--;)c[P[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.l.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},K:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},B:function(){this.n||this.W.apply(this,arguments)},W:function(a,b){var c=this.Y(a,b);this._("handle",{stackInfo:a,options:b}),this.ga(a.name,a.message,a.url,a.lineno,c,b)},Y:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(w(a.stack,function(b,e){var f=c.ha(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.v,0)}),this.k.user&&(a.user=this.k.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),a=this.qa(a),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||v(a[b]))&&delete a[b]}),s(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!v(a)&&(!s(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.na()?void this.A("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function F(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&l(b))for(c=b.split(/\s+/),f=0;fc?Q(a,b-1):d}function R(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?X:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function S(a,b){function c(a){return m(a)?a.map(function(a){return c(a)}):k(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!m(b)||m(b)&&0===b.length)return a;var d,e=A(b),f="********";try{d=JSON.parse(T(a))}catch(g){return a}return c(d)}var T=a(10),U="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},V=3,W=51200,X=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isDOMError:g,isDOMException:h,isUndefined:i,isFunction:j,isPlainObject:k,isString:l,isArray:m,isEmptyObject:n,supportsErrorEvent:o,supportsDOMError:p,supportsDOMException:q,supportsFetch:r,supportsReferrerPolicy:s,supportsPromiseRejectionEvent:t,wrappedCallback:u,each:v,objectMerge:w,truncate:y,objectFrozen:x,hasKey:z,joinRegExp:A,urlencode:B,uuid4:D,htmlTreeAsString:E,htmlElementAsString:F,isSameException:I,isSameStacktrace:J,parseUrl:C,fill:K,safeJoin:L,serializeException:Q,serializeKeysForMessage:R,sanitize:S}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{10:10}],9:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}function e(){return"undefined"==typeof document||null==document.location?"":document.location.origin}var f=a(8),g={collectWindowErrors:!0,debug:!1},h="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},i=[].slice,j="?",k=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;g.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function e(a,b){var c=null;if(!b||g.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(i.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,h,i){var l=null,m=f.isErrorEvent(i)?i.error:i,n=f.isErrorEvent(a)?a.message:a;if(v)g.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&f.isError(m))l=g.computeStackTrace(m),e(l,!0);else{var p,r={url:b,line:c,column:h},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(k);p&&(s=p[1],n=p[2])}r.func=j,l={name:s,message:n,url:d(),stack:[r]},e(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=h.onerror,h.onerror=l,r=!0)}function n(){r&&(h.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,e.apply(null,[a,!1].concat(b))}function p(a,b){var c=i.call(arguments,1);if(v){if(u===a)return;o()}var d=g.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),g.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,f,g=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,h=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,i=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,k=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,l=/\((\S*)(?::(\d+))(?::(\d+))\)/,m=a.stack.split("\n"),n=[],o=(/^(.*) is undefined$/.exec(a.message),0),p=m.length;o eval")>-1;r&&(b=k.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==o||c[5]||"undefined"==typeof a.columnNumber||(n[0].column=a.columnNumber+1),f={url:c[3],func:c[1]||j,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}if(!f.func&&f.line&&(f.func=j),f.url&&"blob:"===f.url.substr(0,5)){var s=new XMLHttpRequest;if(s.open("GET",f.url,!1),s.send(null),200===s.status){var t=s.responseText||"";t=t.slice(-300);var u=t.match(/\/\/# sourceMappingURL=(.*)$/);if(u){var v=u[1];"~"===v.charAt(0)&&(v=e()+v.slice(1)),f.url=v.slice(0,-4)}}}n.push(f)}return n.length?{name:a.name,message:a.message,url:d(),stack:n}:null}}function b(a,b,c,d){var e={url:b,line:c +};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=j),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,e){for(var h,i,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==f&&o!==g.report){if(i={url:null,func:j,line:null,column:null},o.name?i.func=o.name:(h=k.exec(o.toString()))&&(i.func=h[1]),"undefined"==typeof i.func)try{i.func=h.input.substring(0,h.input.indexOf("{"))}catch(p){}m[""+o]?n=!0:m[""+o]=!0,l.push(i)}e&&l.splice(0,e);var q={name:a.name,message:a.message,url:d(),stack:l};return b(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),q}function f(b,e){var f=null;e=null==e?0:+e;try{if(f=a(b))return f}catch(h){if(g.debug)throw h}try{if(f=c(b,e+1))return f}catch(h){if(g.debug)throw h}return{name:b.name,message:b.message,url:d()}}return f.augmentStackTraceWithInitialElement=b,f.computeStackTraceFromStackProp=a,f}(),b.exports=g}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{8:8}],10:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}],11:[function(a,b,c){function d(a,b){var c=(65535&a)+(65535&b),d=(a>>16)+(b>>16)+(c>>16);return d<<16|65535&c}function e(a,b){return a<>>32-b}function f(a,b,c,f,g,h){return d(e(d(d(b,a),d(f,h)),g),c)}function g(a,b,c,d,e,g,h){return f(b&c|~b&d,a,b,e,g,h)}function h(a,b,c,d,e,g,h){return f(b&d|c&~d,a,b,e,g,h)}function i(a,b,c,d,e,g,h){return f(b^c^d,a,b,e,g,h)}function j(a,b,c,d,e,g,h){return f(c^(b|~d),a,b,e,g,h)}function k(a,b){a[b>>5]|=128<>>9<<4)+14]=b;var c,e,f,k,l,m=1732584193,n=-271733879,o=-1732584194,p=271733878;for(c=0;c>5]>>>b%32&255);return c}function m(a){var b,c=[];for(c[(a.length>>2)-1]=void 0,b=0;b>5]|=(255&a.charCodeAt(b/8))<16&&(e=k(e,8*a.length)),c=0;c<16;c+=1)f[c]=909522486^e[c],g[c]=1549556828^e[c];return d=k(f.concat(m(b)),512+8*b.length),l(k(g.concat(d),640))}function p(a){var b,c,d="0123456789abcdef",e="";for(c=0;c>>4&15)+d.charAt(15&b);return e}function q(a){return unescape(encodeURIComponent(a))}function r(a){return n(q(a))}function s(a){return p(r(a))}function t(a,b){return o(q(a),q(b))}function u(a,b){return p(t(a,b))}function v(a,b,c){return b?c?t(b,a):u(b,a):c?r(a):s(a)}b.exports=v},{}]},{},[7,1,2,3])(7)}); //# sourceMappingURL=raven.min.js.map \ No newline at end of file diff --git a/dist/angular,ember,require/raven.min.js.map b/dist/angular,ember,require/raven.min.js.map index d9f29af51b7e..da29485532a2 100644 --- a/dist/angular,ember,require/raven.min.js.map +++ b/dist/angular,ember,require/raven.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","angularPlugin","angular","RavenProvider","$get","$window","ExceptionHandlerProvider","$provide","decorator","exceptionHandler","R","$delegate","ex","cause","captureException","extra","moduleName","provider","config","setDataCallback","wrappedCallback","data","_normalizeData","angularPattern","exception","values","matches","exec","value","type","message","angularDocs","substr","addPlugin","7","8","2","emberPlugin","Ember","_oldOnError","onerror","error","RSVP","on","reason","context","captureMessage","3","requirePlugin","wrap","deep","4","RavenConfigError","name","prototype","constructor","5","utils","wrapMethod","console","level","callback","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","msg","safeJoin","logger","Function","apply","6","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","sanitizeKeys","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isError","isObject","isPlainObject","isErrorEvent","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","sanitize","wrapConsoleMethod","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","dsn","options","_logDebug","globalOptions","key","setDSN","push","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","toString","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","func","undefined","_before","wrapped","_ignoreNextOnError","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","U","event","unhandledPromiseRejection","C","_promiseRejectionHandler","bind","addEventListener","Q","removeEventListener","trimHeadFrames","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","V","currentOptions","exKeys","Object","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","M","setTimeout","_","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","aa","evtName","_keypressTimeout","target","category","ca","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","da","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","D","_originalFunctionToString","E","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","F","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","S","builtin","T","G","installer","concat","H","str","m","allowSecretKey","K","port","B","W","stackInfo","_triggerEvent","_processException","lineno","Y","frame","_normalizeFrame","in_app","ha","stackInfoUrl","normalized","filename","line","colno","column","function","ga","prefixedMessage","culprit","ia","request","Referer","breadcrumbs","_trimBreadcrumbs","ja","urlProp","urlProps","ka","httpData","userAgent","User-Agent","referrer","z","_backoffDuration","_backoffStart","na","oa","current","last","pa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Z","baseData","project","platform","_getHttpData","serverName","server_name","_sanitizeData","forEach","random","_sendProcessedPayload","qa","sa","ra","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","ta","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","open","setRequestHeader","send","ua","hash","evaluated","A","$","setUser","setReleaseContext","10","11","9","RavenConstructor","_Raven","noConflict","Client","what","supportsErrorEvent","ErrorEvent","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","sanitizeMask","safeInput","o_O","getLocationHref","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","y","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","charAt","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","string","raw"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file +{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","angularPlugin","angular","RavenProvider","$get","$window","ExceptionHandlerProvider","$provide","decorator","exceptionHandler","R","$delegate","ex","cause","captureException","extra","moduleName","provider","config","setDataCallback","wrappedCallback","data","_normalizeData","angularPattern","exception","values","matches","exec","value","type","message","angularDocs","substr","addPlugin","7","8","2","emberPlugin","Ember","_oldOnError","onerror","error","RSVP","on","reason","context","captureMessage","3","requirePlugin","wrap","deep","4","RavenConfigError","name","prototype","constructor","5","utils","wrapMethod","console","level","callback","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","msg","safeJoin","logger","Function","apply","6","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","sanitizeKeys","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isErrorEvent","isDOMError","isDOMException","isError","isObject","isPlainObject","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","sanitize","wrapConsoleMethod","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","dsn","options","_logDebug","globalOptions","key","setDSN","push","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","toString","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","func","undefined","_before","wrapped","_ignoreNextOnError","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","U","event","unhandledPromiseRejection","C","_promiseRejectionHandler","bind","addEventListener","Q","removeEventListener","trimHeadFrames","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","V","currentOptions","exKeys","Object","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","M","setTimeout","_","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","aa","evtName","_keypressTimeout","target","category","ca","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","da","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","D","_originalFunctionToString","E","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","F","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","S","builtin","T","G","installer","concat","H","str","m","allowSecretKey","K","port","B","W","stackInfo","_triggerEvent","_processException","lineno","Y","frame","_normalizeFrame","in_app","ha","stackInfoUrl","normalized","filename","line","colno","column","function","ga","prefixedMessage","culprit","ia","request","Referer","breadcrumbs","_trimBreadcrumbs","ja","urlProp","urlProps","ka","httpData","userAgent","User-Agent","referrer","z","_backoffDuration","_backoffStart","na","oa","current","last","pa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Z","baseData","project","platform","_getHttpData","serverName","server_name","_sanitizeData","forEach","random","_sendProcessedPayload","qa","sa","ra","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","ta","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","open","setRequestHeader","send","ua","hash","evaluated","A","$","setUser","setReleaseContext","10","11","9","RavenConstructor","_Raven","noConflict","Client","what","supportsErrorEvent","ErrorEvent","supportsDOMError","DOMError","supportsDOMException","DOMException","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","sanitizeMask","safeInput","o_O","getLocationHref","getLocationOrigin","origin","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","responseText","sourceMaps","sourceMapAddress","charAt","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","y","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","string","raw"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file diff --git a/dist/angular,ember,vue/raven.js b/dist/angular,ember,vue/raven.js index 06f6173aea7b..f9ba45cfa0ec 100644 --- a/dist/angular,ember,vue/raven.js +++ b/dist/angular,ember,vue/raven.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.24.2 (540f32b) | github.com/getsentry/raven-js */ +/*! Raven.js 3.25.0 (80dffad) | github.com/getsentry/raven-js */ /* * Includes TraceKit @@ -234,10 +234,12 @@ var md5 = _dereq_(11); var RavenConfigError = _dereq_(4); var utils = _dereq_(8); +var isErrorEvent = utils.isErrorEvent; +var isDOMError = utils.isDOMError; +var isDOMException = utils.isDOMException; var isError = utils.isError; var isObject = utils.isObject; var isPlainObject = utils.isPlainObject; -var isErrorEvent = utils.isErrorEvent; var isUndefined = utils.isUndefined; var isFunction = utils.isFunction; var isString = utils.isString; @@ -365,7 +367,7 @@ Raven.prototype = { // webpack (using a build step causes webpack #1617). Grunt verifies that // this value matches package.json during build. // See: https://github.com/getsentry/raven-js/issues/465 - VERSION: '3.24.2', + VERSION: '3.25.0', debug: false, @@ -697,6 +699,23 @@ Raven.prototype = { if (isErrorEvent(ex) && ex.error) { // If it is an ErrorEvent with `error` property, extract it to get actual Error ex = ex.error; + } else if (isDOMError(ex) || isDOMException(ex)) { + // If it is a DOMError or DOMException (which are legacy APIs, but still supported in some browsers) + // then we just extract the name and message, as they don't provide anything else + // https://developer.mozilla.org/en-US/docs/Web/API/DOMError + // https://developer.mozilla.org/en-US/docs/Web/API/DOMException + var name = ex.name || (isDOMError(ex) ? 'DOMError' : 'DOMException'); + var message = ex.message ? name + ': ' + ex.message : name; + + return this.captureMessage( + message, + objectMerge(options, { + // neither DOMError or DOMException provide stack trace and we most likely wont get it this way as well + // but it's barely any overhead so we may at least try + stacktrace: true, + trimHeadFrames: options.trimHeadFrames + 1 + }) + ); } else if (isError(ex)) { // we have a real Error object ex = ex; @@ -708,6 +727,7 @@ Raven.prototype = { ex = new Error(options.message); } else { // If none of previous checks were valid, then it means that + // it's not a DOMError/DOMException // it's not a plain Object // it's not a valid ErrorEvent (one with an error property) // it's not an Error @@ -2480,7 +2500,7 @@ function isObject(what) { // Yanked from https://git.io/vS8DV re-used under CC0 // with some tiny modifications function isError(value) { - switch ({}.toString.call(value)) { + switch (Object.prototype.toString.call(value)) { case '[object Error]': return true; case '[object Exception]': @@ -2493,7 +2513,15 @@ function isError(value) { } function isErrorEvent(value) { - return supportsErrorEvent() && {}.toString.call(value) === '[object ErrorEvent]'; + return Object.prototype.toString.call(value) === '[object ErrorEvent]'; +} + +function isDOMError(value) { + return Object.prototype.toString.call(value) === '[object DOMError]'; +} + +function isDOMException(value) { + return Object.prototype.toString.call(value) === '[object DOMException]'; } function isUndefined(what) { @@ -2536,6 +2564,24 @@ function supportsErrorEvent() { } } +function supportsDOMError() { + try { + new DOMError(''); // eslint-disable-line no-new + return true; + } catch (e) { + return false; + } +} + +function supportsDOMException() { + try { + new DOMException(''); // eslint-disable-line no-new + return true; + } catch (e) { + return false; + } +} + function supportsFetch() { if (!('fetch' in _window)) return false; @@ -3051,6 +3097,8 @@ module.exports = { isObject: isObject, isError: isError, isErrorEvent: isErrorEvent, + isDOMError: isDOMError, + isDOMException: isDOMException, isUndefined: isUndefined, isFunction: isFunction, isPlainObject: isPlainObject, @@ -3058,6 +3106,8 @@ module.exports = { isArray: isArray, isEmptyObject: isEmptyObject, supportsErrorEvent: supportsErrorEvent, + supportsDOMError: supportsDOMError, + supportsDOMException: supportsDOMException, supportsFetch: supportsFetch, supportsReferrerPolicy: supportsReferrerPolicy, supportsPromiseRejectionEvent: supportsPromiseRejectionEvent, @@ -3117,10 +3167,14 @@ var ERROR_TYPES_RE = /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Ran function getLocationHref() { if (typeof document === 'undefined' || document.location == null) return ''; - return document.location.href; } +function getLocationOrigin() { + if (typeof document === 'undefined' || document.location == null) return ''; + return document.location.origin; +} + /** * TraceKit.report: cross-browser processing of unhandled exceptions * @@ -3528,6 +3582,44 @@ TraceKit.computeStackTrace = (function computeStackTraceWrapper() { element.func = UNKNOWN_FUNCTION; } + if (element.url && element.url.substr(0, 5) === 'blob:') { + // Special case for handling JavaScript loaded into a blob. + // We use a synchronous AJAX request here as a blob is already in + // memory - it's not making a network request. This will generate a warning + // in the browser console, but there has already been an error so that's not + // that much of an issue. + var xhr = new XMLHttpRequest(); + xhr.open('GET', element.url, false); + xhr.send(null); + + // If we failed to download the source, skip this patch + if (xhr.status === 200) { + var source = xhr.responseText || ''; + + // We trim the source down to the last 300 characters as sourceMappingURL is always at the end of the file. + // Why 300? To be in line with: https://github.com/getsentry/sentry/blob/4af29e8f2350e20c28a6933354e4f42437b4ba42/src/sentry/lang/javascript/processor.py#L164-L175 + source = source.slice(-300); + + // Now we dig out the source map URL + var sourceMaps = source.match(/\/\/# sourceMappingURL=(.*)$/); + + // If we don't find a source map comment or we find more than one, continue on to the next element. + if (sourceMaps) { + var sourceMapAddress = sourceMaps[1]; + + // Now we check to see if it's a relative URL. + // If it is, convert it to an absolute one. + if (sourceMapAddress.charAt(0) === '~') { + sourceMapAddress = getLocationOrigin() + sourceMapAddress.slice(1); + } + + // Now we strip the '.map' off of the end of the URL and update the + // element so that Sentry can match the map to the blob. + element.url = sourceMapAddress.slice(0, -4); + } + } + } + stack.push(element); } diff --git a/dist/angular,ember,vue/raven.min.js b/dist/angular,ember,vue/raven.min.js index 792f5e729b70..9d7fe5536c97 100644 --- a/dist/angular,ember,vue/raven.min.js +++ b/dist/angular,ember,vue/raven.min.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.24.2 (540f32b) | github.com/getsentry/raven-js */ -!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.Raven=a()}}(function(){return function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};b[g][0].call(k.exports,function(a){var c=b[g][1][a];return e(c?c:a)},k,k.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;g":"anonymous component")+(a._isVue&&a.$options.__file?" at "+a.$options.__file:"")}function e(a,b){if(b=b||window.Vue,b&&b.config){var c=b.config.errorHandler;b.config.errorHandler=function(b,e,f){var g={};"[object Object]"===Object.prototype.toString.call(e)&&(g.componentName=d(e),g.propsData=e.$options.propsData),"undefined"!=typeof f&&(g.lifecycleHook=f),a.captureException(b,{extra:g}),"function"==typeof c&&c.call(this,b,e,f)}}}b.exports=e,a(7).addPlugin(b.exports)},{7:7}],4:[function(a,b,c){function d(a){this.name="RavenConfigError",this.message=a}d.prototype=new Error,d.prototype.constructor=d,b.exports=d},{}],5:[function(a,b,c){var d=a(8),e=function(a,b,c){var e=a[b],f=a;if(b in a){var g="warn"===b?"warning":b;a[b]=function(){var a=[].slice.call(arguments),h=d.safeJoin(a," "),i={level:g,logger:"console",extra:{arguments:a}};"assert"===b?a[0]===!1&&(h="Assertion failed: "+(d.safeJoin(a.slice(1)," ")||"console.assert"),i.extra.arguments=a.slice(1),c&&c(h,i)):c&&c(h,i),e&&Function.prototype.apply.call(e,f,a)}}};b.exports={wrapMethod:e}},{8:8}],6:[function(a,b,c){(function(c){function d(){return+new Date}function e(a,b){return q(b)?function(c){return b(c,a)}:b}function f(){this.b=!("object"!=typeof JSON||!JSON.stringify),this.c=!p(Q),this.d=!p(R),this.e=null,this.f=null,this.g=null,this.h=null,this.i=null,this.j=null,this.k={},this.l={release:P.SENTRY_RELEASE&&P.SENTRY_RELEASE.id,logger:"javascript",ignoreErrors:[],ignoreUrls:[],whitelistUrls:[],includePaths:[],headers:null,collectWindowErrors:!0,captureUnhandledRejections:!0,maxMessageLength:0,maxUrlLength:250,stackTraceLimit:50,autoBreadcrumbs:!0,instrument:!0,sampleRate:1,sanitizeKeys:[]},this.m={method:"POST",keepalive:!0,referrerPolicy:I()?"origin":""},this.n=0,this.o=!1,this.p=Error.stackTraceLimit,this.q=P.console||{},this.r={},this.s=[],this.t=d(),this.u=[],this.v=[],this.w=null,this.x=P.location,this.y=this.x&&this.x.href,this.z();for(var a in this.q)this.r[a]=this.q[a]}var g=a(9),h=a(10),i=a(11),j=a(4),k=a(8),l=k.isError,m=k.isObject,n=k.isPlainObject,o=k.isErrorEvent,p=k.isUndefined,q=k.isFunction,r=k.isString,s=k.isArray,t=k.isEmptyObject,u=k.each,v=k.objectMerge,w=k.truncate,x=k.objectFrozen,y=k.hasKey,z=k.joinRegExp,A=k.urlencode,B=k.uuid4,C=k.htmlTreeAsString,D=k.isSameException,E=k.isSameStacktrace,F=k.parseUrl,G=k.fill,H=k.supportsFetch,I=k.supportsReferrerPolicy,J=k.serializeKeysForMessage,K=k.serializeException,L=k.sanitize,M=a(5).wrapMethod,N="source protocol user pass host port path".split(" "),O=/^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/,P="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},Q=P.document,R=P.navigator;f.prototype={VERSION:"3.24.2",debug:!1,TraceKit:g,config:function(a,b){var c=this;if(c.h)return this.A("error","Error: Raven has already been configured"),c;if(!a)return c;var d=c.l;b&&u(b,function(a,b){"tags"===a||"extra"===a||"user"===a?c.k[a]=b:d[a]=b}),c.setDSN(a),d.ignoreErrors.push(/^Script error\.?$/),d.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/),d.ignoreErrors=z(d.ignoreErrors),d.ignoreUrls=!!d.ignoreUrls.length&&z(d.ignoreUrls),d.whitelistUrls=!!d.whitelistUrls.length&&z(d.whitelistUrls),d.includePaths=z(d.includePaths),d.maxBreadcrumbs=Math.max(0,Math.min(d.maxBreadcrumbs||100,100));var e={xhr:!0,console:!0,dom:!0,location:!0,sentry:!0},f=d.autoBreadcrumbs;"[object Object]"==={}.toString.call(f)?f=v(e,f):f!==!1&&(f=e),d.autoBreadcrumbs=f;var h={tryCatch:!0},i=d.instrument;return"[object Object]"==={}.toString.call(i)?i=v(h,i):i!==!1&&(i=h),d.instrument=i,g.collectWindowErrors=!!d.collectWindowErrors,c},install:function(){var a=this;return a.isSetup()&&!a.o&&(g.report.subscribe(function(){a.B.apply(a,arguments)}),a.l.captureUnhandledRejections&&a.C(),a.D(),a.l.instrument&&a.l.instrument.tryCatch&&a.E(),a.l.autoBreadcrumbs&&a.F(),a.G(),a.o=!0),Error.stackTraceLimit=a.l.stackTraceLimit,this},setDSN:function(a){var b=this,c=b.H(a),d=c.path.lastIndexOf("/"),e=c.path.substr(1,d);b.I=a,b.i=c.user,b.J=c.pass&&c.pass.substr(1),b.j=c.path.substr(d+1),b.h=b.K(c),b.L=b.h+"/"+e+"api/"+b.j+"/store/",this.z()},context:function(a,b,c){return q(a)&&(c=b||[],b=a,a=void 0),this.wrap(a,b).apply(this,c)},wrap:function(a,b,c){function d(){var d=[],f=arguments.length,g=!a||a&&a.deep!==!1;for(c&&q(c)&&c.apply(this,arguments);f--;)d[f]=g?e.wrap(a,arguments[f]):arguments[f];try{return b.apply(this,d)}catch(h){throw e.M(),e.captureException(h,a),h}}var e=this;if(p(b)&&!q(a))return a;if(q(a)&&(b=a,a=void 0),!q(b))return b;try{if(b.N)return b;if(b.O)return b.O}catch(f){return b}for(var g in b)y(b,g)&&(d[g]=b[g]);return d.prototype=b.prototype,b.O=d,d.N=!0,d.P=b,d},uninstall:function(){return g.report.uninstall(),this.Q(),this.R(),this.S(),this.T(),Error.stackTraceLimit=this.p,this.o=!1,this},U:function(a){this.A("debug","Raven caught unhandled promise rejection:",a),this.captureException(a.reason,{extra:{unhandledPromiseRejection:!0}})},C:function(){return this.U=this.U.bind(this),P.addEventListener&&P.addEventListener("unhandledrejection",this.U),this},Q:function(){return P.removeEventListener&&P.removeEventListener("unhandledrejection",this.U),this},captureException:function(a,b){if(b=v({trimHeadFrames:0},b?b:{}),o(a)&&a.error)a=a.error;else if(l(a))a=a;else{if(!n(a))return this.captureMessage(a,v(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}));b=this.V(b,a),a=new Error(b.message)}this.e=a;try{var c=g.computeStackTrace(a);this.W(c,b)}catch(d){if(a!==d)throw d}return this},V:function(a,b){var c=Object.keys(b).sort(),d=v(a,{message:"Non-Error exception captured with keys: "+J(c),fingerprint:[i(c)],extra:a.extra||{}});return d.extra.X=K(b),d},captureMessage:function(a,b){if(!this.l.ignoreErrors.test||!this.l.ignoreErrors.test(a)){b=b||{},a+="";var c,d=v({message:a},b);try{throw new Error(a)}catch(e){c=e}c.name=null;var f=g.computeStackTrace(c),h=s(f.stack)&&f.stack[1];h&&"Raven.captureException"===h.func&&(h=f.stack[2]);var i=h&&h.url||"";if((!this.l.ignoreUrls.test||!this.l.ignoreUrls.test(i))&&(!this.l.whitelistUrls.test||this.l.whitelistUrls.test(i))){if(this.l.stacktrace||b&&b.stacktrace){d.fingerprint=null==d.fingerprint?a:d.fingerprint,b=v({trimHeadFrames:0},b),b.trimHeadFrames+=1;var j=this.Y(f,b);d.stacktrace={frames:j.reverse()}}return d.fingerprint&&(d.fingerprint=s(d.fingerprint)?d.fingerprint:[d.fingerprint]),this.Z(d),this}}},captureBreadcrumb:function(a){var b=v({timestamp:d()/1e3},a);if(q(this.l.breadcrumbCallback)){var c=this.l.breadcrumbCallback(b);if(m(c)&&!t(c))b=c;else if(c===!1)return this}return this.v.push(b),this.v.length>this.l.maxBreadcrumbs&&this.v.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.s.push([a,b]),this.o&&this.G(),this},setUserContext:function(a){return this.k.user=a,this},setExtraContext:function(a){return this.$("extra",a),this},setTagsContext:function(a){return this.$("tags",a),this},clearContext:function(){return this.k={},this},getContext:function(){return JSON.parse(h(this.k))},setEnvironment:function(a){return this.l.environment=a,this},setRelease:function(a){return this.l.release=a,this},setDataCallback:function(a){var b=this.l.dataCallback;return this.l.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.l.breadcrumbCallback;return this.l.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.l.shouldSendCallback;return this.l.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.l.transport=a,this},lastException:function(){return this.e},lastEventId:function(){return this.g},isSetup:function(){return!!this.b&&(!!this.h||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.A("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=P.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(Q){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.I;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.k.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.K(this.H(c)),h=Q.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(Q.head||Q.body).appendChild(h)}},M:function(){var a=this;this.n+=1,setTimeout(function(){a.n-=1})},_:function(a,b){var c,d;if(this.c){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),Q.createEvent?(c=Q.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=Q.createEventObject(),c.eventType=a);for(d in b)y(b,d)&&(c[d]=b[d]);if(Q.createEvent)Q.dispatchEvent(c);else try{Q.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},aa:function(a){var b=this;return function(c){if(b.ba=null,b.w!==c){b.w=c;var d;try{d=C(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ca:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.ba;g||a.aa("input")(c),clearTimeout(g),a.ba=setTimeout(function(){a.ba=null},b)}}},da:function(a,b){var c=F(this.x.href),d=F(b),e=F(a);this.y=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},D:function(){var a=this;a.ea=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.N?a.ea.apply(this.P,arguments):a.ea.apply(this,arguments)}},R:function(){this.ea&&(Function.prototype.toString=this.ea)},E:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.da(b.y,c+""),a.apply(this,arguments)}};G(history,"pushState",j,d),G(history,"replaceState",j,d)}if(c.console&&"console"in P&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};u(["debug","info","warn","error","log"],function(a,b){M(console,b,k)})}},S:function(){for(var a;this.u.length;){a=this.u.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},T:function(){for(var a in this.r)this.q[a]=this.r[a]},G:function(){var a=this;u(this.s,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},H:function(a){var b=O.exec(a),c={},d=7;try{for(;d--;)c[N[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.l.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},K:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},B:function(){this.n||this.W.apply(this,arguments)},W:function(a,b){var c=this.Y(a,b);this._("handle",{stackInfo:a,options:b}),this.ga(a.name,a.message,a.url,a.lineno,c,b)},Y:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(u(a.stack,function(b,e){var f=c.ha(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.v,0)}),this.k.user&&(a.user=this.k.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),a=this.qa(a),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||t(a[b]))&&delete a[b]}),q(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!t(a)&&(!q(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.na()?void this.A("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function B(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&j(b))for(c=b.split(/\s+/),f=0;fc?M(a,b-1):d}function N(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?T:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function O(a,b){function c(a){return k(a)?a.map(function(a){return c(a)}):i(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!k(b)||k(b)&&0===b.length)return a;var d,e=w(b),f="********";try{d=JSON.parse(P(a))}catch(g){return a}return c(d)}var P=a(10),Q="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},R=3,S=51200,T=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isUndefined:g,isFunction:h,isPlainObject:i,isString:j,isArray:k,isEmptyObject:l,supportsErrorEvent:m,supportsFetch:n,supportsReferrerPolicy:o,supportsPromiseRejectionEvent:p,wrappedCallback:q,each:r,objectMerge:s,truncate:u,objectFrozen:t,hasKey:v,joinRegExp:w,urlencode:x,uuid4:z,htmlTreeAsString:A,htmlElementAsString:B,isSameException:E,isSameStacktrace:F,parseUrl:y,fill:G,safeJoin:H,serializeException:M,serializeKeysForMessage:N,sanitize:O}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{10:10}],9:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}var e=a(8),f={collectWindowErrors:!0,debug:!1},g="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},h=[].slice,i="?",j=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;f.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function k(a,b){var c=null;if(!b||f.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(h.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,g,h){var l=null,m=e.isErrorEvent(h)?h.error:h,n=e.isErrorEvent(a)?a.message:a;if(v)f.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&e.isError(m))l=f.computeStackTrace(m),k(l,!0);else{var p,r={url:b,line:c,column:g},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(j);p&&(s=p[1],n=p[2])}r.func=i,l={name:s,message:n,url:d(),stack:[r]},k(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=g.onerror,g.onerror=l,r=!0)}function n(){r&&(g.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,k.apply(null,[a,!1].concat(b))}function p(a,b){var c=h.call(arguments,1);if(v){if(u===a)return;o()}var d=f.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),f.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,e,f=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,g=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,h=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,j=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,k=/\((\S*)(?::(\d+))(?::(\d+))\)/,l=a.stack.split("\n"),m=[],n=(/^(.*) is undefined$/.exec(a.message),0),o=l.length;n eval")>-1;q&&(b=j.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==n||c[5]||"undefined"==typeof a.columnNumber||(m[0].column=a.columnNumber+1),e={url:c[3],func:c[1]||i,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}!e.func&&e.line&&(e.func=i),m.push(e)}return m.length?{name:a.name,message:a.message,url:d(),stack:m}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=i),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,g){for(var h,j,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==e&&o!==f.report){if(j={url:null,func:i,line:null,column:null},o.name?j.func=o.name:(h=k.exec(o.toString()))&&(j.func=h[1]), -"undefined"==typeof j.func)try{j.func=h.input.substring(0,h.input.indexOf("{"))}catch(p){}m[""+o]?n=!0:m[""+o]=!0,l.push(j)}g&&l.splice(0,g);var q={name:a.name,message:a.message,url:d(),stack:l};return b(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),q}function e(b,e){var g=null;e=null==e?0:+e;try{if(g=a(b))return g}catch(h){if(f.debug)throw h}try{if(g=c(b,e+1))return g}catch(h){if(f.debug)throw h}return{name:b.name,message:b.message,url:d()}}return e.augmentStackTraceWithInitialElement=b,e.computeStackTraceFromStackProp=a,e}(),b.exports=f}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{8:8}],10:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}],11:[function(a,b,c){function d(a,b){var c=(65535&a)+(65535&b),d=(a>>16)+(b>>16)+(c>>16);return d<<16|65535&c}function e(a,b){return a<>>32-b}function f(a,b,c,f,g,h){return d(e(d(d(b,a),d(f,h)),g),c)}function g(a,b,c,d,e,g,h){return f(b&c|~b&d,a,b,e,g,h)}function h(a,b,c,d,e,g,h){return f(b&d|c&~d,a,b,e,g,h)}function i(a,b,c,d,e,g,h){return f(b^c^d,a,b,e,g,h)}function j(a,b,c,d,e,g,h){return f(c^(b|~d),a,b,e,g,h)}function k(a,b){a[b>>5]|=128<>>9<<4)+14]=b;var c,e,f,k,l,m=1732584193,n=-271733879,o=-1732584194,p=271733878;for(c=0;c>5]>>>b%32&255);return c}function m(a){var b,c=[];for(c[(a.length>>2)-1]=void 0,b=0;b>5]|=(255&a.charCodeAt(b/8))<16&&(e=k(e,8*a.length)),c=0;c<16;c+=1)f[c]=909522486^e[c],g[c]=1549556828^e[c];return d=k(f.concat(m(b)),512+8*b.length),l(k(g.concat(d),640))}function p(a){var b,c,d="0123456789abcdef",e="";for(c=0;c>>4&15)+d.charAt(15&b);return e}function q(a){return unescape(encodeURIComponent(a))}function r(a){return n(q(a))}function s(a){return p(r(a))}function t(a,b){return o(q(a),q(b))}function u(a,b){return p(t(a,b))}function v(a,b,c){return b?c?t(b,a):u(b,a):c?r(a):s(a)}b.exports=v},{}]},{},[7,1,2,3])(7)}); +/*! Raven.js 3.25.0 (80dffad) | github.com/getsentry/raven-js */ +!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.Raven=a()}}(function(){return function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};b[g][0].call(k.exports,function(a){var c=b[g][1][a];return e(c?c:a)},k,k.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;g":"anonymous component")+(a._isVue&&a.$options.__file?" at "+a.$options.__file:"")}function e(a,b){if(b=b||window.Vue,b&&b.config){var c=b.config.errorHandler;b.config.errorHandler=function(b,e,f){var g={};"[object Object]"===Object.prototype.toString.call(e)&&(g.componentName=d(e),g.propsData=e.$options.propsData),"undefined"!=typeof f&&(g.lifecycleHook=f),a.captureException(b,{extra:g}),"function"==typeof c&&c.call(this,b,e,f)}}}b.exports=e,a(7).addPlugin(b.exports)},{7:7}],4:[function(a,b,c){function d(a){this.name="RavenConfigError",this.message=a}d.prototype=new Error,d.prototype.constructor=d,b.exports=d},{}],5:[function(a,b,c){var d=a(8),e=function(a,b,c){var e=a[b],f=a;if(b in a){var g="warn"===b?"warning":b;a[b]=function(){var a=[].slice.call(arguments),h=d.safeJoin(a," "),i={level:g,logger:"console",extra:{arguments:a}};"assert"===b?a[0]===!1&&(h="Assertion failed: "+(d.safeJoin(a.slice(1)," ")||"console.assert"),i.extra.arguments=a.slice(1),c&&c(h,i)):c&&c(h,i),e&&Function.prototype.apply.call(e,f,a)}}};b.exports={wrapMethod:e}},{8:8}],6:[function(a,b,c){(function(c){function d(){return+new Date}function e(a,b){return s(b)?function(c){return b(c,a)}:b}function f(){this.b=!("object"!=typeof JSON||!JSON.stringify),this.c=!r(S),this.d=!r(T),this.e=null,this.f=null,this.g=null,this.h=null,this.i=null,this.j=null,this.k={},this.l={release:R.SENTRY_RELEASE&&R.SENTRY_RELEASE.id,logger:"javascript",ignoreErrors:[],ignoreUrls:[],whitelistUrls:[],includePaths:[],headers:null,collectWindowErrors:!0,captureUnhandledRejections:!0,maxMessageLength:0,maxUrlLength:250,stackTraceLimit:50,autoBreadcrumbs:!0,instrument:!0,sampleRate:1,sanitizeKeys:[]},this.m={method:"POST",keepalive:!0,referrerPolicy:K()?"origin":""},this.n=0,this.o=!1,this.p=Error.stackTraceLimit,this.q=R.console||{},this.r={},this.s=[],this.t=d(),this.u=[],this.v=[],this.w=null,this.x=R.location,this.y=this.x&&this.x.href,this.z();for(var a in this.q)this.r[a]=this.q[a]}var g=a(9),h=a(10),i=a(11),j=a(4),k=a(8),l=k.isErrorEvent,m=k.isDOMError,n=k.isDOMException,o=k.isError,p=k.isObject,q=k.isPlainObject,r=k.isUndefined,s=k.isFunction,t=k.isString,u=k.isArray,v=k.isEmptyObject,w=k.each,x=k.objectMerge,y=k.truncate,z=k.objectFrozen,A=k.hasKey,B=k.joinRegExp,C=k.urlencode,D=k.uuid4,E=k.htmlTreeAsString,F=k.isSameException,G=k.isSameStacktrace,H=k.parseUrl,I=k.fill,J=k.supportsFetch,K=k.supportsReferrerPolicy,L=k.serializeKeysForMessage,M=k.serializeException,N=k.sanitize,O=a(5).wrapMethod,P="source protocol user pass host port path".split(" "),Q=/^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/,R="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},S=R.document,T=R.navigator;f.prototype={VERSION:"3.25.0",debug:!1,TraceKit:g,config:function(a,b){var c=this;if(c.h)return this.A("error","Error: Raven has already been configured"),c;if(!a)return c;var d=c.l;b&&w(b,function(a,b){"tags"===a||"extra"===a||"user"===a?c.k[a]=b:d[a]=b}),c.setDSN(a),d.ignoreErrors.push(/^Script error\.?$/),d.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/),d.ignoreErrors=B(d.ignoreErrors),d.ignoreUrls=!!d.ignoreUrls.length&&B(d.ignoreUrls),d.whitelistUrls=!!d.whitelistUrls.length&&B(d.whitelistUrls),d.includePaths=B(d.includePaths),d.maxBreadcrumbs=Math.max(0,Math.min(d.maxBreadcrumbs||100,100));var e={xhr:!0,console:!0,dom:!0,location:!0,sentry:!0},f=d.autoBreadcrumbs;"[object Object]"==={}.toString.call(f)?f=x(e,f):f!==!1&&(f=e),d.autoBreadcrumbs=f;var h={tryCatch:!0},i=d.instrument;return"[object Object]"==={}.toString.call(i)?i=x(h,i):i!==!1&&(i=h),d.instrument=i,g.collectWindowErrors=!!d.collectWindowErrors,c},install:function(){var a=this;return a.isSetup()&&!a.o&&(g.report.subscribe(function(){a.B.apply(a,arguments)}),a.l.captureUnhandledRejections&&a.C(),a.D(),a.l.instrument&&a.l.instrument.tryCatch&&a.E(),a.l.autoBreadcrumbs&&a.F(),a.G(),a.o=!0),Error.stackTraceLimit=a.l.stackTraceLimit,this},setDSN:function(a){var b=this,c=b.H(a),d=c.path.lastIndexOf("/"),e=c.path.substr(1,d);b.I=a,b.i=c.user,b.J=c.pass&&c.pass.substr(1),b.j=c.path.substr(d+1),b.h=b.K(c),b.L=b.h+"/"+e+"api/"+b.j+"/store/",this.z()},context:function(a,b,c){return s(a)&&(c=b||[],b=a,a=void 0),this.wrap(a,b).apply(this,c)},wrap:function(a,b,c){function d(){var d=[],f=arguments.length,g=!a||a&&a.deep!==!1;for(c&&s(c)&&c.apply(this,arguments);f--;)d[f]=g?e.wrap(a,arguments[f]):arguments[f];try{return b.apply(this,d)}catch(h){throw e.M(),e.captureException(h,a),h}}var e=this;if(r(b)&&!s(a))return a;if(s(a)&&(b=a,a=void 0),!s(b))return b;try{if(b.N)return b;if(b.O)return b.O}catch(f){return b}for(var g in b)A(b,g)&&(d[g]=b[g]);return d.prototype=b.prototype,b.O=d,d.N=!0,d.P=b,d},uninstall:function(){return g.report.uninstall(),this.Q(),this.R(),this.S(),this.T(),Error.stackTraceLimit=this.p,this.o=!1,this},U:function(a){this.A("debug","Raven caught unhandled promise rejection:",a),this.captureException(a.reason,{extra:{unhandledPromiseRejection:!0}})},C:function(){return this.U=this.U.bind(this),R.addEventListener&&R.addEventListener("unhandledrejection",this.U),this},Q:function(){return R.removeEventListener&&R.removeEventListener("unhandledrejection",this.U),this},captureException:function(a,b){if(b=x({trimHeadFrames:0},b?b:{}),l(a)&&a.error)a=a.error;else{if(m(a)||n(a)){var c=a.name||(m(a)?"DOMError":"DOMException"),d=a.message?c+": "+a.message:c;return this.captureMessage(d,x(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}))}if(o(a))a=a;else{if(!q(a))return this.captureMessage(a,x(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}));b=this.V(b,a),a=new Error(b.message)}}this.e=a;try{var e=g.computeStackTrace(a);this.W(e,b)}catch(f){if(a!==f)throw f}return this},V:function(a,b){var c=Object.keys(b).sort(),d=x(a,{message:"Non-Error exception captured with keys: "+L(c),fingerprint:[i(c)],extra:a.extra||{}});return d.extra.X=M(b),d},captureMessage:function(a,b){if(!this.l.ignoreErrors.test||!this.l.ignoreErrors.test(a)){b=b||{},a+="";var c,d=x({message:a},b);try{throw new Error(a)}catch(e){c=e}c.name=null;var f=g.computeStackTrace(c),h=u(f.stack)&&f.stack[1];h&&"Raven.captureException"===h.func&&(h=f.stack[2]);var i=h&&h.url||"";if((!this.l.ignoreUrls.test||!this.l.ignoreUrls.test(i))&&(!this.l.whitelistUrls.test||this.l.whitelistUrls.test(i))){if(this.l.stacktrace||b&&b.stacktrace){d.fingerprint=null==d.fingerprint?a:d.fingerprint,b=x({trimHeadFrames:0},b),b.trimHeadFrames+=1;var j=this.Y(f,b);d.stacktrace={frames:j.reverse()}}return d.fingerprint&&(d.fingerprint=u(d.fingerprint)?d.fingerprint:[d.fingerprint]),this.Z(d),this}}},captureBreadcrumb:function(a){var b=x({timestamp:d()/1e3},a);if(s(this.l.breadcrumbCallback)){var c=this.l.breadcrumbCallback(b);if(p(c)&&!v(c))b=c;else if(c===!1)return this}return this.v.push(b),this.v.length>this.l.maxBreadcrumbs&&this.v.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.s.push([a,b]),this.o&&this.G(),this},setUserContext:function(a){return this.k.user=a,this},setExtraContext:function(a){return this.$("extra",a),this},setTagsContext:function(a){return this.$("tags",a),this},clearContext:function(){return this.k={},this},getContext:function(){return JSON.parse(h(this.k))},setEnvironment:function(a){return this.l.environment=a,this},setRelease:function(a){return this.l.release=a,this},setDataCallback:function(a){var b=this.l.dataCallback;return this.l.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.l.breadcrumbCallback;return this.l.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.l.shouldSendCallback;return this.l.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.l.transport=a,this},lastException:function(){return this.e},lastEventId:function(){return this.g},isSetup:function(){return!!this.b&&(!!this.h||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.A("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=R.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(S){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.I;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.k.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.K(this.H(c)),h=S.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(S.head||S.body).appendChild(h)}},M:function(){var a=this;this.n+=1,setTimeout(function(){a.n-=1})},_:function(a,b){var c,d;if(this.c){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),S.createEvent?(c=S.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=S.createEventObject(),c.eventType=a);for(d in b)A(b,d)&&(c[d]=b[d]);if(S.createEvent)S.dispatchEvent(c);else try{S.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},aa:function(a){var b=this;return function(c){if(b.ba=null,b.w!==c){b.w=c;var d;try{d=E(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ca:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.ba;g||a.aa("input")(c),clearTimeout(g),a.ba=setTimeout(function(){a.ba=null},b)}}},da:function(a,b){var c=H(this.x.href),d=H(b),e=H(a);this.y=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},D:function(){var a=this;a.ea=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.N?a.ea.apply(this.P,arguments):a.ea.apply(this,arguments)}},R:function(){this.ea&&(Function.prototype.toString=this.ea)},E:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.da(b.y,c+""),a.apply(this,arguments)}};I(history,"pushState",j,d),I(history,"replaceState",j,d)}if(c.console&&"console"in R&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};w(["debug","info","warn","error","log"],function(a,b){O(console,b,k)})}},S:function(){for(var a;this.u.length;){a=this.u.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},T:function(){for(var a in this.r)this.q[a]=this.r[a]},G:function(){var a=this;w(this.s,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},H:function(a){var b=Q.exec(a),c={},d=7;try{for(;d--;)c[P[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.l.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},K:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},B:function(){this.n||this.W.apply(this,arguments)},W:function(a,b){var c=this.Y(a,b);this._("handle",{stackInfo:a,options:b}),this.ga(a.name,a.message,a.url,a.lineno,c,b)},Y:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(w(a.stack,function(b,e){var f=c.ha(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.v,0)}),this.k.user&&(a.user=this.k.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),a=this.qa(a),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||v(a[b]))&&delete a[b]}),s(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!v(a)&&(!s(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.na()?void this.A("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function F(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&l(b))for(c=b.split(/\s+/),f=0;fc?Q(a,b-1):d}function R(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?X:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function S(a,b){function c(a){return m(a)?a.map(function(a){return c(a)}):k(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!m(b)||m(b)&&0===b.length)return a;var d,e=A(b),f="********";try{d=JSON.parse(T(a))}catch(g){return a}return c(d)}var T=a(10),U="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},V=3,W=51200,X=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isDOMError:g,isDOMException:h,isUndefined:i,isFunction:j,isPlainObject:k,isString:l,isArray:m,isEmptyObject:n,supportsErrorEvent:o,supportsDOMError:p,supportsDOMException:q,supportsFetch:r,supportsReferrerPolicy:s,supportsPromiseRejectionEvent:t,wrappedCallback:u,each:v,objectMerge:w,truncate:y,objectFrozen:x,hasKey:z,joinRegExp:A,urlencode:B,uuid4:D,htmlTreeAsString:E,htmlElementAsString:F,isSameException:I,isSameStacktrace:J,parseUrl:C,fill:K,safeJoin:L,serializeException:Q,serializeKeysForMessage:R,sanitize:S}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{10:10}],9:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}function e(){return"undefined"==typeof document||null==document.location?"":document.location.origin}var f=a(8),g={collectWindowErrors:!0,debug:!1},h="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},i=[].slice,j="?",k=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;g.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function e(a,b){var c=null;if(!b||g.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(i.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,h,i){var l=null,m=f.isErrorEvent(i)?i.error:i,n=f.isErrorEvent(a)?a.message:a;if(v)g.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&f.isError(m))l=g.computeStackTrace(m),e(l,!0);else{var p,r={url:b,line:c,column:h},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(k);p&&(s=p[1],n=p[2])}r.func=j,l={name:s,message:n,url:d(),stack:[r]},e(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=h.onerror,h.onerror=l,r=!0)}function n(){r&&(h.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,e.apply(null,[a,!1].concat(b))}function p(a,b){var c=i.call(arguments,1);if(v){if(u===a)return;o()}var d=g.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),g.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,f,g=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,h=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,i=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,k=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,l=/\((\S*)(?::(\d+))(?::(\d+))\)/,m=a.stack.split("\n"),n=[],o=(/^(.*) is undefined$/.exec(a.message),0),p=m.length;o eval")>-1;r&&(b=k.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==o||c[5]||"undefined"==typeof a.columnNumber||(n[0].column=a.columnNumber+1),f={url:c[3],func:c[1]||j,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null, +column:c[5]?+c[5]:null}}if(!f.func&&f.line&&(f.func=j),f.url&&"blob:"===f.url.substr(0,5)){var s=new XMLHttpRequest;if(s.open("GET",f.url,!1),s.send(null),200===s.status){var t=s.responseText||"";t=t.slice(-300);var u=t.match(/\/\/# sourceMappingURL=(.*)$/);if(u){var v=u[1];"~"===v.charAt(0)&&(v=e()+v.slice(1)),f.url=v.slice(0,-4)}}}n.push(f)}return n.length?{name:a.name,message:a.message,url:d(),stack:n}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=j),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,e){for(var h,i,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==f&&o!==g.report){if(i={url:null,func:j,line:null,column:null},o.name?i.func=o.name:(h=k.exec(o.toString()))&&(i.func=h[1]),"undefined"==typeof i.func)try{i.func=h.input.substring(0,h.input.indexOf("{"))}catch(p){}m[""+o]?n=!0:m[""+o]=!0,l.push(i)}e&&l.splice(0,e);var q={name:a.name,message:a.message,url:d(),stack:l};return b(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),q}function f(b,e){var f=null;e=null==e?0:+e;try{if(f=a(b))return f}catch(h){if(g.debug)throw h}try{if(f=c(b,e+1))return f}catch(h){if(g.debug)throw h}return{name:b.name,message:b.message,url:d()}}return f.augmentStackTraceWithInitialElement=b,f.computeStackTraceFromStackProp=a,f}(),b.exports=g}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{8:8}],10:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}],11:[function(a,b,c){function d(a,b){var c=(65535&a)+(65535&b),d=(a>>16)+(b>>16)+(c>>16);return d<<16|65535&c}function e(a,b){return a<>>32-b}function f(a,b,c,f,g,h){return d(e(d(d(b,a),d(f,h)),g),c)}function g(a,b,c,d,e,g,h){return f(b&c|~b&d,a,b,e,g,h)}function h(a,b,c,d,e,g,h){return f(b&d|c&~d,a,b,e,g,h)}function i(a,b,c,d,e,g,h){return f(b^c^d,a,b,e,g,h)}function j(a,b,c,d,e,g,h){return f(c^(b|~d),a,b,e,g,h)}function k(a,b){a[b>>5]|=128<>>9<<4)+14]=b;var c,e,f,k,l,m=1732584193,n=-271733879,o=-1732584194,p=271733878;for(c=0;c>5]>>>b%32&255);return c}function m(a){var b,c=[];for(c[(a.length>>2)-1]=void 0,b=0;b>5]|=(255&a.charCodeAt(b/8))<16&&(e=k(e,8*a.length)),c=0;c<16;c+=1)f[c]=909522486^e[c],g[c]=1549556828^e[c];return d=k(f.concat(m(b)),512+8*b.length),l(k(g.concat(d),640))}function p(a){var b,c,d="0123456789abcdef",e="";for(c=0;c>>4&15)+d.charAt(15&b);return e}function q(a){return unescape(encodeURIComponent(a))}function r(a){return n(q(a))}function s(a){return p(r(a))}function t(a,b){return o(q(a),q(b))}function u(a,b){return p(t(a,b))}function v(a,b,c){return b?c?t(b,a):u(b,a):c?r(a):s(a)}b.exports=v},{}]},{},[7,1,2,3])(7)}); //# sourceMappingURL=raven.min.js.map \ No newline at end of file diff --git a/dist/angular,ember,vue/raven.min.js.map b/dist/angular,ember,vue/raven.min.js.map index fa6dab06ef14..d9e8d0f3c7f7 100644 --- a/dist/angular,ember,vue/raven.min.js.map +++ b/dist/angular,ember,vue/raven.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","angularPlugin","angular","RavenProvider","$get","$window","ExceptionHandlerProvider","$provide","decorator","exceptionHandler","R","$delegate","ex","cause","captureException","extra","moduleName","provider","config","setDataCallback","wrappedCallback","data","_normalizeData","angularPattern","exception","values","matches","exec","value","type","message","angularDocs","substr","addPlugin","7","8","2","emberPlugin","Ember","_oldOnError","onerror","error","RSVP","on","reason","context","captureMessage","3","formatComponentName","vm","$root","name","_isVue","$options","_componentTag","__file","vuePlugin","Vue","errorHandler","info","metaData","Object","prototype","toString","componentName","propsData","lifecycleHook","4","RavenConfigError","constructor","5","utils","wrapMethod","console","level","callback","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","msg","safeJoin","logger","Function","apply","6","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","sanitizeKeys","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isError","isObject","isPlainObject","isErrorEvent","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","sanitize","wrapConsoleMethod","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","dsn","options","_logDebug","globalOptions","key","setDSN","push","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","func","undefined","wrap","_before","wrapped","deep","_ignoreNextOnError","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","U","event","unhandledPromiseRejection","C","_promiseRejectionHandler","bind","addEventListener","Q","removeEventListener","trimHeadFrames","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","V","currentOptions","exKeys","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","M","setTimeout","_","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","aa","evtName","_keypressTimeout","target","category","ca","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","da","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","D","_originalFunctionToString","E","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","F","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","S","builtin","T","G","installer","concat","H","str","m","allowSecretKey","K","port","B","W","stackInfo","_triggerEvent","_processException","lineno","Y","frame","_normalizeFrame","in_app","ha","stackInfoUrl","normalized","filename","line","colno","column","function","ga","prefixedMessage","culprit","ia","request","Referer","breadcrumbs","_trimBreadcrumbs","ja","urlProp","urlProps","ka","httpData","userAgent","User-Agent","referrer","z","_backoffDuration","_backoffStart","na","oa","current","last","pa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Z","baseData","project","platform","_getHttpData","serverName","server_name","_sanitizeData","forEach","random","_sendProcessedPayload","qa","sa","ra","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","ta","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","open","setRequestHeader","send","ua","hash","evaluated","A","$","setUser","setReleaseContext","10","11","9","RavenConstructor","_Raven","noConflict","Client","what","supportsErrorEvent","ErrorEvent","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","sanitizeMask","safeInput","o_O","getLocationHref","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","y","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","charAt","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","string","raw"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file +{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","angularPlugin","angular","RavenProvider","$get","$window","ExceptionHandlerProvider","$provide","decorator","exceptionHandler","R","$delegate","ex","cause","captureException","extra","moduleName","provider","config","setDataCallback","wrappedCallback","data","_normalizeData","angularPattern","exception","values","matches","exec","value","type","message","angularDocs","substr","addPlugin","7","8","2","emberPlugin","Ember","_oldOnError","onerror","error","RSVP","on","reason","context","captureMessage","3","formatComponentName","vm","$root","name","_isVue","$options","_componentTag","__file","vuePlugin","Vue","errorHandler","info","metaData","Object","prototype","toString","componentName","propsData","lifecycleHook","4","RavenConfigError","constructor","5","utils","wrapMethod","console","level","callback","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","msg","safeJoin","logger","Function","apply","6","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","sanitizeKeys","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isErrorEvent","isDOMError","isDOMException","isError","isObject","isPlainObject","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","sanitize","wrapConsoleMethod","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","dsn","options","_logDebug","globalOptions","key","setDSN","push","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","func","undefined","wrap","_before","wrapped","deep","_ignoreNextOnError","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","U","event","unhandledPromiseRejection","C","_promiseRejectionHandler","bind","addEventListener","Q","removeEventListener","trimHeadFrames","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","V","currentOptions","exKeys","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","M","setTimeout","_","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","aa","evtName","_keypressTimeout","target","category","ca","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","da","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","D","_originalFunctionToString","E","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","F","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","S","builtin","T","G","installer","concat","H","str","m","allowSecretKey","K","port","B","W","stackInfo","_triggerEvent","_processException","lineno","Y","frame","_normalizeFrame","in_app","ha","stackInfoUrl","normalized","filename","line","colno","column","function","ga","prefixedMessage","culprit","ia","request","Referer","breadcrumbs","_trimBreadcrumbs","ja","urlProp","urlProps","ka","httpData","userAgent","User-Agent","referrer","z","_backoffDuration","_backoffStart","na","oa","current","last","pa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Z","baseData","project","platform","_getHttpData","serverName","server_name","_sanitizeData","forEach","random","_sendProcessedPayload","qa","sa","ra","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","ta","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","open","setRequestHeader","send","ua","hash","evaluated","A","$","setUser","setReleaseContext","10","11","9","RavenConstructor","_Raven","noConflict","Client","what","supportsErrorEvent","ErrorEvent","supportsDOMError","DOMError","supportsDOMException","DOMException","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","sanitizeMask","safeInput","o_O","getLocationHref","getLocationOrigin","origin","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","responseText","sourceMaps","sourceMapAddress","charAt","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","y","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","string","raw"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file diff --git a/dist/angular,ember/raven.js b/dist/angular,ember/raven.js index 3b96cfd9020b..0f5d364075da 100644 --- a/dist/angular,ember/raven.js +++ b/dist/angular,ember/raven.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.24.2 (540f32b) | github.com/getsentry/raven-js */ +/*! Raven.js 3.25.0 (80dffad) | github.com/getsentry/raven-js */ /* * Includes TraceKit @@ -184,10 +184,12 @@ var md5 = _dereq_(10); var RavenConfigError = _dereq_(3); var utils = _dereq_(7); +var isErrorEvent = utils.isErrorEvent; +var isDOMError = utils.isDOMError; +var isDOMException = utils.isDOMException; var isError = utils.isError; var isObject = utils.isObject; var isPlainObject = utils.isPlainObject; -var isErrorEvent = utils.isErrorEvent; var isUndefined = utils.isUndefined; var isFunction = utils.isFunction; var isString = utils.isString; @@ -315,7 +317,7 @@ Raven.prototype = { // webpack (using a build step causes webpack #1617). Grunt verifies that // this value matches package.json during build. // See: https://github.com/getsentry/raven-js/issues/465 - VERSION: '3.24.2', + VERSION: '3.25.0', debug: false, @@ -647,6 +649,23 @@ Raven.prototype = { if (isErrorEvent(ex) && ex.error) { // If it is an ErrorEvent with `error` property, extract it to get actual Error ex = ex.error; + } else if (isDOMError(ex) || isDOMException(ex)) { + // If it is a DOMError or DOMException (which are legacy APIs, but still supported in some browsers) + // then we just extract the name and message, as they don't provide anything else + // https://developer.mozilla.org/en-US/docs/Web/API/DOMError + // https://developer.mozilla.org/en-US/docs/Web/API/DOMException + var name = ex.name || (isDOMError(ex) ? 'DOMError' : 'DOMException'); + var message = ex.message ? name + ': ' + ex.message : name; + + return this.captureMessage( + message, + objectMerge(options, { + // neither DOMError or DOMException provide stack trace and we most likely wont get it this way as well + // but it's barely any overhead so we may at least try + stacktrace: true, + trimHeadFrames: options.trimHeadFrames + 1 + }) + ); } else if (isError(ex)) { // we have a real Error object ex = ex; @@ -658,6 +677,7 @@ Raven.prototype = { ex = new Error(options.message); } else { // If none of previous checks were valid, then it means that + // it's not a DOMError/DOMException // it's not a plain Object // it's not a valid ErrorEvent (one with an error property) // it's not an Error @@ -2430,7 +2450,7 @@ function isObject(what) { // Yanked from https://git.io/vS8DV re-used under CC0 // with some tiny modifications function isError(value) { - switch ({}.toString.call(value)) { + switch (Object.prototype.toString.call(value)) { case '[object Error]': return true; case '[object Exception]': @@ -2443,7 +2463,15 @@ function isError(value) { } function isErrorEvent(value) { - return supportsErrorEvent() && {}.toString.call(value) === '[object ErrorEvent]'; + return Object.prototype.toString.call(value) === '[object ErrorEvent]'; +} + +function isDOMError(value) { + return Object.prototype.toString.call(value) === '[object DOMError]'; +} + +function isDOMException(value) { + return Object.prototype.toString.call(value) === '[object DOMException]'; } function isUndefined(what) { @@ -2486,6 +2514,24 @@ function supportsErrorEvent() { } } +function supportsDOMError() { + try { + new DOMError(''); // eslint-disable-line no-new + return true; + } catch (e) { + return false; + } +} + +function supportsDOMException() { + try { + new DOMException(''); // eslint-disable-line no-new + return true; + } catch (e) { + return false; + } +} + function supportsFetch() { if (!('fetch' in _window)) return false; @@ -3001,6 +3047,8 @@ module.exports = { isObject: isObject, isError: isError, isErrorEvent: isErrorEvent, + isDOMError: isDOMError, + isDOMException: isDOMException, isUndefined: isUndefined, isFunction: isFunction, isPlainObject: isPlainObject, @@ -3008,6 +3056,8 @@ module.exports = { isArray: isArray, isEmptyObject: isEmptyObject, supportsErrorEvent: supportsErrorEvent, + supportsDOMError: supportsDOMError, + supportsDOMException: supportsDOMException, supportsFetch: supportsFetch, supportsReferrerPolicy: supportsReferrerPolicy, supportsPromiseRejectionEvent: supportsPromiseRejectionEvent, @@ -3067,10 +3117,14 @@ var ERROR_TYPES_RE = /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Ran function getLocationHref() { if (typeof document === 'undefined' || document.location == null) return ''; - return document.location.href; } +function getLocationOrigin() { + if (typeof document === 'undefined' || document.location == null) return ''; + return document.location.origin; +} + /** * TraceKit.report: cross-browser processing of unhandled exceptions * @@ -3478,6 +3532,44 @@ TraceKit.computeStackTrace = (function computeStackTraceWrapper() { element.func = UNKNOWN_FUNCTION; } + if (element.url && element.url.substr(0, 5) === 'blob:') { + // Special case for handling JavaScript loaded into a blob. + // We use a synchronous AJAX request here as a blob is already in + // memory - it's not making a network request. This will generate a warning + // in the browser console, but there has already been an error so that's not + // that much of an issue. + var xhr = new XMLHttpRequest(); + xhr.open('GET', element.url, false); + xhr.send(null); + + // If we failed to download the source, skip this patch + if (xhr.status === 200) { + var source = xhr.responseText || ''; + + // We trim the source down to the last 300 characters as sourceMappingURL is always at the end of the file. + // Why 300? To be in line with: https://github.com/getsentry/sentry/blob/4af29e8f2350e20c28a6933354e4f42437b4ba42/src/sentry/lang/javascript/processor.py#L164-L175 + source = source.slice(-300); + + // Now we dig out the source map URL + var sourceMaps = source.match(/\/\/# sourceMappingURL=(.*)$/); + + // If we don't find a source map comment or we find more than one, continue on to the next element. + if (sourceMaps) { + var sourceMapAddress = sourceMaps[1]; + + // Now we check to see if it's a relative URL. + // If it is, convert it to an absolute one. + if (sourceMapAddress.charAt(0) === '~') { + sourceMapAddress = getLocationOrigin() + sourceMapAddress.slice(1); + } + + // Now we strip the '.map' off of the end of the URL and update the + // element so that Sentry can match the map to the blob. + element.url = sourceMapAddress.slice(0, -4); + } + } + } + stack.push(element); } diff --git a/dist/angular,ember/raven.min.js b/dist/angular,ember/raven.min.js index fe6d688ad89d..7430a51a837e 100644 --- a/dist/angular,ember/raven.min.js +++ b/dist/angular,ember/raven.min.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.24.2 (540f32b) | github.com/getsentry/raven-js */ -!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.Raven=a()}}(function(){return function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};b[g][0].call(k.exports,function(a){var c=b[g][1][a];return e(c?c:a)},k,k.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;gthis.l.maxBreadcrumbs&&this.v.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.s.push([a,b]),this.o&&this.G(),this},setUserContext:function(a){return this.k.user=a,this},setExtraContext:function(a){return this.$("extra",a),this},setTagsContext:function(a){return this.$("tags",a),this},clearContext:function(){return this.k={},this},getContext:function(){return JSON.parse(h(this.k))},setEnvironment:function(a){return this.l.environment=a,this},setRelease:function(a){return this.l.release=a,this},setDataCallback:function(a){var b=this.l.dataCallback;return this.l.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.l.breadcrumbCallback;return this.l.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.l.shouldSendCallback;return this.l.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.l.transport=a,this},lastException:function(){return this.e},lastEventId:function(){return this.g},isSetup:function(){return!!this.b&&(!!this.h||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.A("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=P.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(Q){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.I;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.k.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.K(this.H(c)),h=Q.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(Q.head||Q.body).appendChild(h)}},M:function(){var a=this;this.n+=1,setTimeout(function(){a.n-=1})},_:function(a,b){var c,d;if(this.c){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),Q.createEvent?(c=Q.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=Q.createEventObject(),c.eventType=a);for(d in b)y(b,d)&&(c[d]=b[d]);if(Q.createEvent)Q.dispatchEvent(c);else try{Q.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},aa:function(a){var b=this;return function(c){if(b.ba=null,b.w!==c){b.w=c;var d;try{d=C(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ca:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.ba;g||a.aa("input")(c),clearTimeout(g),a.ba=setTimeout(function(){a.ba=null},b)}}},da:function(a,b){var c=F(this.x.href),d=F(b),e=F(a);this.y=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},D:function(){var a=this;a.ea=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.N?a.ea.apply(this.P,arguments):a.ea.apply(this,arguments)}},R:function(){this.ea&&(Function.prototype.toString=this.ea)},E:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.da(b.y,c+""),a.apply(this,arguments)}};G(history,"pushState",j,d),G(history,"replaceState",j,d)}if(c.console&&"console"in P&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};u(["debug","info","warn","error","log"],function(a,b){M(console,b,k)})}},S:function(){for(var a;this.u.length;){a=this.u.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},T:function(){for(var a in this.r)this.q[a]=this.r[a]},G:function(){var a=this;u(this.s,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},H:function(a){var b=O.exec(a),c={},d=7;try{for(;d--;)c[N[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.l.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},K:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},B:function(){this.n||this.W.apply(this,arguments)},W:function(a,b){var c=this.Y(a,b);this._("handle",{stackInfo:a,options:b}),this.ga(a.name,a.message,a.url,a.lineno,c,b)},Y:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(u(a.stack,function(b,e){var f=c.ha(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.v,0)}),this.k.user&&(a.user=this.k.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),a=this.qa(a),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||t(a[b]))&&delete a[b]}),q(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!t(a)&&(!q(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.na()?void this.A("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function B(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&j(b))for(c=b.split(/\s+/),f=0;fc?M(a,b-1):d}function N(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?T:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function O(a,b){function c(a){return k(a)?a.map(function(a){return c(a)}):i(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!k(b)||k(b)&&0===b.length)return a;var d,e=w(b),f="********";try{d=JSON.parse(P(a))}catch(g){return a}return c(d)}var P=a(9),Q="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},R=3,S=51200,T=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isUndefined:g,isFunction:h,isPlainObject:i,isString:j,isArray:k,isEmptyObject:l,supportsErrorEvent:m,supportsFetch:n,supportsReferrerPolicy:o,supportsPromiseRejectionEvent:p,wrappedCallback:q,each:r,objectMerge:s,truncate:u,objectFrozen:t,hasKey:v,joinRegExp:w,urlencode:x,uuid4:z,htmlTreeAsString:A,htmlElementAsString:B,isSameException:E,isSameStacktrace:F,parseUrl:y,fill:G,safeJoin:H,serializeException:M,serializeKeysForMessage:N,sanitize:O}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{9:9}],8:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}var e=a(7),f={collectWindowErrors:!0,debug:!1},g="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},h=[].slice,i="?",j=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;f.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function k(a,b){var c=null;if(!b||f.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(h.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,g,h){var l=null,m=e.isErrorEvent(h)?h.error:h,n=e.isErrorEvent(a)?a.message:a;if(v)f.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&e.isError(m))l=f.computeStackTrace(m),k(l,!0);else{var p,r={url:b,line:c,column:g},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(j);p&&(s=p[1],n=p[2])}r.func=i,l={name:s,message:n,url:d(),stack:[r]},k(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=g.onerror,g.onerror=l,r=!0)}function n(){r&&(g.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,k.apply(null,[a,!1].concat(b))}function p(a,b){var c=h.call(arguments,1);if(v){if(u===a)return;o()}var d=f.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),f.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,e,f=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,g=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,h=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,j=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,k=/\((\S*)(?::(\d+))(?::(\d+))\)/,l=a.stack.split("\n"),m=[],n=(/^(.*) is undefined$/.exec(a.message),0),o=l.length;n eval")>-1;q&&(b=j.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==n||c[5]||"undefined"==typeof a.columnNumber||(m[0].column=a.columnNumber+1),e={url:c[3],func:c[1]||i,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}!e.func&&e.line&&(e.func=i),m.push(e)}return m.length?{name:a.name,message:a.message,url:d(),stack:m}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=i),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,g){for(var h,j,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==e&&o!==f.report){if(j={url:null,func:i,line:null,column:null},o.name?j.func=o.name:(h=k.exec(o.toString()))&&(j.func=h[1]),"undefined"==typeof j.func)try{j.func=h.input.substring(0,h.input.indexOf("{"))}catch(p){}m[""+o]?n=!0:m[""+o]=!0,l.push(j)}g&&l.splice(0,g);var q={name:a.name,message:a.message,url:d(),stack:l};return b(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),q}function e(b,e){var g=null;e=null==e?0:+e;try{if(g=a(b))return g}catch(h){if(f.debug)throw h}try{if(g=c(b,e+1))return g}catch(h){if(f.debug)throw h}return{name:b.name,message:b.message,url:d()}}return e.augmentStackTraceWithInitialElement=b,e.computeStackTraceFromStackProp=a,e}(),b.exports=f}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{}); -},{7:7}],9:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}],10:[function(a,b,c){function d(a,b){var c=(65535&a)+(65535&b),d=(a>>16)+(b>>16)+(c>>16);return d<<16|65535&c}function e(a,b){return a<>>32-b}function f(a,b,c,f,g,h){return d(e(d(d(b,a),d(f,h)),g),c)}function g(a,b,c,d,e,g,h){return f(b&c|~b&d,a,b,e,g,h)}function h(a,b,c,d,e,g,h){return f(b&d|c&~d,a,b,e,g,h)}function i(a,b,c,d,e,g,h){return f(b^c^d,a,b,e,g,h)}function j(a,b,c,d,e,g,h){return f(c^(b|~d),a,b,e,g,h)}function k(a,b){a[b>>5]|=128<>>9<<4)+14]=b;var c,e,f,k,l,m=1732584193,n=-271733879,o=-1732584194,p=271733878;for(c=0;c>5]>>>b%32&255);return c}function m(a){var b,c=[];for(c[(a.length>>2)-1]=void 0,b=0;b>5]|=(255&a.charCodeAt(b/8))<16&&(e=k(e,8*a.length)),c=0;c<16;c+=1)f[c]=909522486^e[c],g[c]=1549556828^e[c];return d=k(f.concat(m(b)),512+8*b.length),l(k(g.concat(d),640))}function p(a){var b,c,d="0123456789abcdef",e="";for(c=0;c>>4&15)+d.charAt(15&b);return e}function q(a){return unescape(encodeURIComponent(a))}function r(a){return n(q(a))}function s(a){return p(r(a))}function t(a,b){return o(q(a),q(b))}function u(a,b){return p(t(a,b))}function v(a,b,c){return b?c?t(b,a):u(b,a):c?r(a):s(a)}b.exports=v},{}]},{},[6,1,2])(6)}); +/*! Raven.js 3.25.0 (80dffad) | github.com/getsentry/raven-js */ +!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.Raven=a()}}(function(){return function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};b[g][0].call(k.exports,function(a){var c=b[g][1][a];return e(c?c:a)},k,k.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;gthis.l.maxBreadcrumbs&&this.v.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.s.push([a,b]),this.o&&this.G(),this},setUserContext:function(a){return this.k.user=a,this},setExtraContext:function(a){return this.$("extra",a),this},setTagsContext:function(a){return this.$("tags",a),this},clearContext:function(){return this.k={},this},getContext:function(){return JSON.parse(h(this.k))},setEnvironment:function(a){return this.l.environment=a,this},setRelease:function(a){return this.l.release=a,this},setDataCallback:function(a){var b=this.l.dataCallback;return this.l.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.l.breadcrumbCallback;return this.l.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.l.shouldSendCallback;return this.l.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.l.transport=a,this},lastException:function(){return this.e},lastEventId:function(){return this.g},isSetup:function(){return!!this.b&&(!!this.h||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.A("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=R.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(S){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.I;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.k.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.K(this.H(c)),h=S.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(S.head||S.body).appendChild(h)}},M:function(){var a=this;this.n+=1,setTimeout(function(){a.n-=1})},_:function(a,b){var c,d;if(this.c){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),S.createEvent?(c=S.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=S.createEventObject(),c.eventType=a);for(d in b)A(b,d)&&(c[d]=b[d]);if(S.createEvent)S.dispatchEvent(c);else try{S.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},aa:function(a){var b=this;return function(c){if(b.ba=null,b.w!==c){b.w=c;var d;try{d=E(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ca:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.ba;g||a.aa("input")(c),clearTimeout(g),a.ba=setTimeout(function(){a.ba=null},b)}}},da:function(a,b){var c=H(this.x.href),d=H(b),e=H(a);this.y=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},D:function(){var a=this;a.ea=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.N?a.ea.apply(this.P,arguments):a.ea.apply(this,arguments)}},R:function(){this.ea&&(Function.prototype.toString=this.ea)},E:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.da(b.y,c+""),a.apply(this,arguments)}};I(history,"pushState",j,d),I(history,"replaceState",j,d)}if(c.console&&"console"in R&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};w(["debug","info","warn","error","log"],function(a,b){O(console,b,k)})}},S:function(){for(var a;this.u.length;){a=this.u.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},T:function(){for(var a in this.r)this.q[a]=this.r[a]},G:function(){var a=this;w(this.s,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},H:function(a){var b=Q.exec(a),c={},d=7;try{for(;d--;)c[P[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.l.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},K:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},B:function(){this.n||this.W.apply(this,arguments)},W:function(a,b){var c=this.Y(a,b);this._("handle",{stackInfo:a,options:b}),this.ga(a.name,a.message,a.url,a.lineno,c,b)},Y:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(w(a.stack,function(b,e){var f=c.ha(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.v,0)}),this.k.user&&(a.user=this.k.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),a=this.qa(a),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||v(a[b]))&&delete a[b]}),s(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!v(a)&&(!s(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.na()?void this.A("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function F(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&l(b))for(c=b.split(/\s+/),f=0;fc?Q(a,b-1):d}function R(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?X:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function S(a,b){function c(a){return m(a)?a.map(function(a){return c(a)}):k(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!m(b)||m(b)&&0===b.length)return a;var d,e=A(b),f="********";try{d=JSON.parse(T(a))}catch(g){return a}return c(d)}var T=a(9),U="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},V=3,W=51200,X=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isDOMError:g,isDOMException:h,isUndefined:i,isFunction:j,isPlainObject:k,isString:l,isArray:m,isEmptyObject:n,supportsErrorEvent:o,supportsDOMError:p,supportsDOMException:q,supportsFetch:r,supportsReferrerPolicy:s,supportsPromiseRejectionEvent:t,wrappedCallback:u,each:v,objectMerge:w,truncate:y,objectFrozen:x,hasKey:z,joinRegExp:A,urlencode:B,uuid4:D,htmlTreeAsString:E,htmlElementAsString:F,isSameException:I,isSameStacktrace:J,parseUrl:C,fill:K,safeJoin:L,serializeException:Q,serializeKeysForMessage:R,sanitize:S}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{9:9}],8:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}function e(){return"undefined"==typeof document||null==document.location?"":document.location.origin}var f=a(7),g={collectWindowErrors:!0,debug:!1},h="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},i=[].slice,j="?",k=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;g.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function e(a,b){var c=null;if(!b||g.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(i.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,h,i){var l=null,m=f.isErrorEvent(i)?i.error:i,n=f.isErrorEvent(a)?a.message:a;if(v)g.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&f.isError(m))l=g.computeStackTrace(m),e(l,!0);else{var p,r={url:b,line:c,column:h},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(k);p&&(s=p[1],n=p[2])}r.func=j,l={name:s,message:n,url:d(),stack:[r]},e(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=h.onerror,h.onerror=l,r=!0)}function n(){r&&(h.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,e.apply(null,[a,!1].concat(b))}function p(a,b){var c=i.call(arguments,1);if(v){if(u===a)return;o()}var d=g.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),g.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,f,g=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,h=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,i=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,k=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,l=/\((\S*)(?::(\d+))(?::(\d+))\)/,m=a.stack.split("\n"),n=[],o=(/^(.*) is undefined$/.exec(a.message),0),p=m.length;o eval")>-1;r&&(b=k.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==o||c[5]||"undefined"==typeof a.columnNumber||(n[0].column=a.columnNumber+1),f={url:c[3],func:c[1]||j,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}if(!f.func&&f.line&&(f.func=j),f.url&&"blob:"===f.url.substr(0,5)){var s=new XMLHttpRequest;if(s.open("GET",f.url,!1),s.send(null),200===s.status){var t=s.responseText||"";t=t.slice(-300);var u=t.match(/\/\/# sourceMappingURL=(.*)$/);if(u){var v=u[1];"~"===v.charAt(0)&&(v=e()+v.slice(1)),f.url=v.slice(0,-4)}}}n.push(f)}return n.length?{name:a.name,message:a.message,url:d(),stack:n}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=j),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line, +!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,e){for(var h,i,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==f&&o!==g.report){if(i={url:null,func:j,line:null,column:null},o.name?i.func=o.name:(h=k.exec(o.toString()))&&(i.func=h[1]),"undefined"==typeof i.func)try{i.func=h.input.substring(0,h.input.indexOf("{"))}catch(p){}m[""+o]?n=!0:m[""+o]=!0,l.push(i)}e&&l.splice(0,e);var q={name:a.name,message:a.message,url:d(),stack:l};return b(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),q}function f(b,e){var f=null;e=null==e?0:+e;try{if(f=a(b))return f}catch(h){if(g.debug)throw h}try{if(f=c(b,e+1))return f}catch(h){if(g.debug)throw h}return{name:b.name,message:b.message,url:d()}}return f.augmentStackTraceWithInitialElement=b,f.computeStackTraceFromStackProp=a,f}(),b.exports=g}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{7:7}],9:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}],10:[function(a,b,c){function d(a,b){var c=(65535&a)+(65535&b),d=(a>>16)+(b>>16)+(c>>16);return d<<16|65535&c}function e(a,b){return a<>>32-b}function f(a,b,c,f,g,h){return d(e(d(d(b,a),d(f,h)),g),c)}function g(a,b,c,d,e,g,h){return f(b&c|~b&d,a,b,e,g,h)}function h(a,b,c,d,e,g,h){return f(b&d|c&~d,a,b,e,g,h)}function i(a,b,c,d,e,g,h){return f(b^c^d,a,b,e,g,h)}function j(a,b,c,d,e,g,h){return f(c^(b|~d),a,b,e,g,h)}function k(a,b){a[b>>5]|=128<>>9<<4)+14]=b;var c,e,f,k,l,m=1732584193,n=-271733879,o=-1732584194,p=271733878;for(c=0;c>5]>>>b%32&255);return c}function m(a){var b,c=[];for(c[(a.length>>2)-1]=void 0,b=0;b>5]|=(255&a.charCodeAt(b/8))<16&&(e=k(e,8*a.length)),c=0;c<16;c+=1)f[c]=909522486^e[c],g[c]=1549556828^e[c];return d=k(f.concat(m(b)),512+8*b.length),l(k(g.concat(d),640))}function p(a){var b,c,d="0123456789abcdef",e="";for(c=0;c>>4&15)+d.charAt(15&b);return e}function q(a){return unescape(encodeURIComponent(a))}function r(a){return n(q(a))}function s(a){return p(r(a))}function t(a,b){return o(q(a),q(b))}function u(a,b){return p(t(a,b))}function v(a,b,c){return b?c?t(b,a):u(b,a):c?r(a):s(a)}b.exports=v},{}]},{},[6,1,2])(6)}); //# sourceMappingURL=raven.min.js.map \ No newline at end of file diff --git a/dist/angular,ember/raven.min.js.map b/dist/angular,ember/raven.min.js.map index 71a7d521e842..d00e5a7b1287 100644 --- a/dist/angular,ember/raven.min.js.map +++ b/dist/angular,ember/raven.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","angularPlugin","angular","RavenProvider","$get","$window","ExceptionHandlerProvider","$provide","decorator","exceptionHandler","R","$delegate","ex","cause","captureException","extra","moduleName","provider","config","setDataCallback","wrappedCallback","data","_normalizeData","angularPattern","exception","values","matches","exec","value","type","message","angularDocs","substr","addPlugin","6","7","2","emberPlugin","Ember","_oldOnError","onerror","error","RSVP","on","reason","context","captureMessage","3","RavenConfigError","name","prototype","constructor","4","utils","wrapMethod","console","level","callback","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","msg","safeJoin","logger","Function","apply","5","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","sanitizeKeys","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isError","isObject","isPlainObject","isErrorEvent","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","sanitize","wrapConsoleMethod","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","dsn","options","_logDebug","globalOptions","key","setDSN","push","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","toString","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","func","undefined","wrap","_before","wrapped","deep","_ignoreNextOnError","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","U","event","unhandledPromiseRejection","C","_promiseRejectionHandler","bind","addEventListener","Q","removeEventListener","trimHeadFrames","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","V","currentOptions","exKeys","Object","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","M","setTimeout","_","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","aa","evtName","_keypressTimeout","target","category","ca","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","da","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","D","_originalFunctionToString","E","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","F","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","S","builtin","T","G","installer","concat","H","str","m","allowSecretKey","K","port","B","W","stackInfo","_triggerEvent","_processException","lineno","Y","frame","_normalizeFrame","in_app","ha","stackInfoUrl","normalized","filename","line","colno","column","function","ga","prefixedMessage","culprit","ia","request","Referer","breadcrumbs","_trimBreadcrumbs","ja","urlProp","urlProps","ka","httpData","userAgent","User-Agent","referrer","z","_backoffDuration","_backoffStart","na","oa","current","last","pa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Z","baseData","project","platform","_getHttpData","serverName","server_name","_sanitizeData","forEach","random","_sendProcessedPayload","qa","sa","ra","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","ta","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","open","setRequestHeader","send","ua","hash","evaluated","A","$","setUser","setReleaseContext","10","8","9","RavenConstructor","_Raven","noConflict","Client","what","supportsErrorEvent","ErrorEvent","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","sanitizeMask","safeInput","o_O","getLocationHref","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","y","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","charAt","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","string","raw"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file +{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","angularPlugin","angular","RavenProvider","$get","$window","ExceptionHandlerProvider","$provide","decorator","exceptionHandler","R","$delegate","ex","cause","captureException","extra","moduleName","provider","config","setDataCallback","wrappedCallback","data","_normalizeData","angularPattern","exception","values","matches","exec","value","type","message","angularDocs","substr","addPlugin","6","7","2","emberPlugin","Ember","_oldOnError","onerror","error","RSVP","on","reason","context","captureMessage","3","RavenConfigError","name","prototype","constructor","4","utils","wrapMethod","console","level","callback","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","msg","safeJoin","logger","Function","apply","5","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","sanitizeKeys","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isErrorEvent","isDOMError","isDOMException","isError","isObject","isPlainObject","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","sanitize","wrapConsoleMethod","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","dsn","options","_logDebug","globalOptions","key","setDSN","push","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","toString","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","func","undefined","wrap","_before","wrapped","deep","_ignoreNextOnError","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","U","event","unhandledPromiseRejection","C","_promiseRejectionHandler","bind","addEventListener","Q","removeEventListener","trimHeadFrames","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","V","currentOptions","exKeys","Object","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","M","setTimeout","_","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","aa","evtName","_keypressTimeout","target","category","ca","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","da","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","D","_originalFunctionToString","E","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","F","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","S","builtin","T","G","installer","concat","H","str","m","allowSecretKey","K","port","B","W","stackInfo","_triggerEvent","_processException","lineno","Y","frame","_normalizeFrame","in_app","ha","stackInfoUrl","normalized","filename","line","colno","column","function","ga","prefixedMessage","culprit","ia","request","Referer","breadcrumbs","_trimBreadcrumbs","ja","urlProp","urlProps","ka","httpData","userAgent","User-Agent","referrer","z","_backoffDuration","_backoffStart","na","oa","current","last","pa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Z","baseData","project","platform","_getHttpData","serverName","server_name","_sanitizeData","forEach","random","_sendProcessedPayload","qa","sa","ra","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","ta","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","open","setRequestHeader","send","ua","hash","evaluated","A","$","setUser","setReleaseContext","10","8","9","RavenConstructor","_Raven","noConflict","Client","what","supportsErrorEvent","ErrorEvent","supportsDOMError","DOMError","supportsDOMException","DOMException","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","sanitizeMask","safeInput","o_O","getLocationHref","getLocationOrigin","origin","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","responseText","sourceMaps","sourceMapAddress","charAt","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","y","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","string","raw"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file diff --git a/dist/angular,require,vue/raven.js b/dist/angular,require,vue/raven.js index fcdb9e8997e9..92696212f67b 100644 --- a/dist/angular,require,vue/raven.js +++ b/dist/angular,require,vue/raven.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.24.2 (540f32b) | github.com/getsentry/raven-js */ +/*! Raven.js 3.25.0 (80dffad) | github.com/getsentry/raven-js */ /* * Includes TraceKit @@ -218,10 +218,12 @@ var md5 = _dereq_(11); var RavenConfigError = _dereq_(4); var utils = _dereq_(8); +var isErrorEvent = utils.isErrorEvent; +var isDOMError = utils.isDOMError; +var isDOMException = utils.isDOMException; var isError = utils.isError; var isObject = utils.isObject; var isPlainObject = utils.isPlainObject; -var isErrorEvent = utils.isErrorEvent; var isUndefined = utils.isUndefined; var isFunction = utils.isFunction; var isString = utils.isString; @@ -349,7 +351,7 @@ Raven.prototype = { // webpack (using a build step causes webpack #1617). Grunt verifies that // this value matches package.json during build. // See: https://github.com/getsentry/raven-js/issues/465 - VERSION: '3.24.2', + VERSION: '3.25.0', debug: false, @@ -681,6 +683,23 @@ Raven.prototype = { if (isErrorEvent(ex) && ex.error) { // If it is an ErrorEvent with `error` property, extract it to get actual Error ex = ex.error; + } else if (isDOMError(ex) || isDOMException(ex)) { + // If it is a DOMError or DOMException (which are legacy APIs, but still supported in some browsers) + // then we just extract the name and message, as they don't provide anything else + // https://developer.mozilla.org/en-US/docs/Web/API/DOMError + // https://developer.mozilla.org/en-US/docs/Web/API/DOMException + var name = ex.name || (isDOMError(ex) ? 'DOMError' : 'DOMException'); + var message = ex.message ? name + ': ' + ex.message : name; + + return this.captureMessage( + message, + objectMerge(options, { + // neither DOMError or DOMException provide stack trace and we most likely wont get it this way as well + // but it's barely any overhead so we may at least try + stacktrace: true, + trimHeadFrames: options.trimHeadFrames + 1 + }) + ); } else if (isError(ex)) { // we have a real Error object ex = ex; @@ -692,6 +711,7 @@ Raven.prototype = { ex = new Error(options.message); } else { // If none of previous checks were valid, then it means that + // it's not a DOMError/DOMException // it's not a plain Object // it's not a valid ErrorEvent (one with an error property) // it's not an Error @@ -2464,7 +2484,7 @@ function isObject(what) { // Yanked from https://git.io/vS8DV re-used under CC0 // with some tiny modifications function isError(value) { - switch ({}.toString.call(value)) { + switch (Object.prototype.toString.call(value)) { case '[object Error]': return true; case '[object Exception]': @@ -2477,7 +2497,15 @@ function isError(value) { } function isErrorEvent(value) { - return supportsErrorEvent() && {}.toString.call(value) === '[object ErrorEvent]'; + return Object.prototype.toString.call(value) === '[object ErrorEvent]'; +} + +function isDOMError(value) { + return Object.prototype.toString.call(value) === '[object DOMError]'; +} + +function isDOMException(value) { + return Object.prototype.toString.call(value) === '[object DOMException]'; } function isUndefined(what) { @@ -2520,6 +2548,24 @@ function supportsErrorEvent() { } } +function supportsDOMError() { + try { + new DOMError(''); // eslint-disable-line no-new + return true; + } catch (e) { + return false; + } +} + +function supportsDOMException() { + try { + new DOMException(''); // eslint-disable-line no-new + return true; + } catch (e) { + return false; + } +} + function supportsFetch() { if (!('fetch' in _window)) return false; @@ -3035,6 +3081,8 @@ module.exports = { isObject: isObject, isError: isError, isErrorEvent: isErrorEvent, + isDOMError: isDOMError, + isDOMException: isDOMException, isUndefined: isUndefined, isFunction: isFunction, isPlainObject: isPlainObject, @@ -3042,6 +3090,8 @@ module.exports = { isArray: isArray, isEmptyObject: isEmptyObject, supportsErrorEvent: supportsErrorEvent, + supportsDOMError: supportsDOMError, + supportsDOMException: supportsDOMException, supportsFetch: supportsFetch, supportsReferrerPolicy: supportsReferrerPolicy, supportsPromiseRejectionEvent: supportsPromiseRejectionEvent, @@ -3101,10 +3151,14 @@ var ERROR_TYPES_RE = /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Ran function getLocationHref() { if (typeof document === 'undefined' || document.location == null) return ''; - return document.location.href; } +function getLocationOrigin() { + if (typeof document === 'undefined' || document.location == null) return ''; + return document.location.origin; +} + /** * TraceKit.report: cross-browser processing of unhandled exceptions * @@ -3512,6 +3566,44 @@ TraceKit.computeStackTrace = (function computeStackTraceWrapper() { element.func = UNKNOWN_FUNCTION; } + if (element.url && element.url.substr(0, 5) === 'blob:') { + // Special case for handling JavaScript loaded into a blob. + // We use a synchronous AJAX request here as a blob is already in + // memory - it's not making a network request. This will generate a warning + // in the browser console, but there has already been an error so that's not + // that much of an issue. + var xhr = new XMLHttpRequest(); + xhr.open('GET', element.url, false); + xhr.send(null); + + // If we failed to download the source, skip this patch + if (xhr.status === 200) { + var source = xhr.responseText || ''; + + // We trim the source down to the last 300 characters as sourceMappingURL is always at the end of the file. + // Why 300? To be in line with: https://github.com/getsentry/sentry/blob/4af29e8f2350e20c28a6933354e4f42437b4ba42/src/sentry/lang/javascript/processor.py#L164-L175 + source = source.slice(-300); + + // Now we dig out the source map URL + var sourceMaps = source.match(/\/\/# sourceMappingURL=(.*)$/); + + // If we don't find a source map comment or we find more than one, continue on to the next element. + if (sourceMaps) { + var sourceMapAddress = sourceMaps[1]; + + // Now we check to see if it's a relative URL. + // If it is, convert it to an absolute one. + if (sourceMapAddress.charAt(0) === '~') { + sourceMapAddress = getLocationOrigin() + sourceMapAddress.slice(1); + } + + // Now we strip the '.map' off of the end of the URL and update the + // element so that Sentry can match the map to the blob. + element.url = sourceMapAddress.slice(0, -4); + } + } + } + stack.push(element); } diff --git a/dist/angular,require,vue/raven.min.js b/dist/angular,require,vue/raven.min.js index 5f26fd404523..f265d203a787 100644 --- a/dist/angular,require,vue/raven.min.js +++ b/dist/angular,require,vue/raven.min.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.24.2 (540f32b) | github.com/getsentry/raven-js */ -!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.Raven=a()}}(function(){var a;return function b(a,c,d){function e(g,h){if(!c[g]){if(!a[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};a[g][0].call(k.exports,function(b){var c=a[g][1][b];return e(c?c:b)},k,k.exports,b,a,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;g":"anonymous component")+(a._isVue&&a.$options.__file?" at "+a.$options.__file:"")}function e(a,b){if(b=b||window.Vue,b&&b.config){var c=b.config.errorHandler;b.config.errorHandler=function(b,e,f){var g={};"[object Object]"===Object.prototype.toString.call(e)&&(g.componentName=d(e),g.propsData=e.$options.propsData),"undefined"!=typeof f&&(g.lifecycleHook=f),a.captureException(b,{extra:g}),"function"==typeof c&&c.call(this,b,e,f)}}}b.exports=e,a(7).addPlugin(b.exports)},{7:7}],4:[function(a,b,c){function d(a){this.name="RavenConfigError",this.message=a}d.prototype=new Error,d.prototype.constructor=d,b.exports=d},{}],5:[function(a,b,c){var d=a(8),e=function(a,b,c){var e=a[b],f=a;if(b in a){var g="warn"===b?"warning":b;a[b]=function(){var a=[].slice.call(arguments),h=d.safeJoin(a," "),i={level:g,logger:"console",extra:{arguments:a}};"assert"===b?a[0]===!1&&(h="Assertion failed: "+(d.safeJoin(a.slice(1)," ")||"console.assert"),i.extra.arguments=a.slice(1),c&&c(h,i)):c&&c(h,i),e&&Function.prototype.apply.call(e,f,a)}}};b.exports={wrapMethod:e}},{8:8}],6:[function(a,b,c){(function(c){function d(){return+new Date}function e(a,b){return q(b)?function(c){return b(c,a)}:b}function f(){this.b=!("object"!=typeof JSON||!JSON.stringify),this.c=!p(Q),this.d=!p(R),this.e=null,this.f=null,this.g=null,this.h=null,this.i=null,this.j=null,this.k={},this.l={release:P.SENTRY_RELEASE&&P.SENTRY_RELEASE.id,logger:"javascript",ignoreErrors:[],ignoreUrls:[],whitelistUrls:[],includePaths:[],headers:null,collectWindowErrors:!0,captureUnhandledRejections:!0,maxMessageLength:0,maxUrlLength:250,stackTraceLimit:50,autoBreadcrumbs:!0,instrument:!0,sampleRate:1,sanitizeKeys:[]},this.m={method:"POST",keepalive:!0,referrerPolicy:I()?"origin":""},this.n=0,this.o=!1,this.p=Error.stackTraceLimit,this.q=P.console||{},this.r={},this.s=[],this.t=d(),this.u=[],this.v=[],this.w=null,this.x=P.location,this.y=this.x&&this.x.href,this.z();for(var a in this.q)this.r[a]=this.q[a]}var g=a(9),h=a(10),i=a(11),j=a(4),k=a(8),l=k.isError,m=k.isObject,n=k.isPlainObject,o=k.isErrorEvent,p=k.isUndefined,q=k.isFunction,r=k.isString,s=k.isArray,t=k.isEmptyObject,u=k.each,v=k.objectMerge,w=k.truncate,x=k.objectFrozen,y=k.hasKey,z=k.joinRegExp,A=k.urlencode,B=k.uuid4,C=k.htmlTreeAsString,D=k.isSameException,E=k.isSameStacktrace,F=k.parseUrl,G=k.fill,H=k.supportsFetch,I=k.supportsReferrerPolicy,J=k.serializeKeysForMessage,K=k.serializeException,L=k.sanitize,M=a(5).wrapMethod,N="source protocol user pass host port path".split(" "),O=/^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/,P="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},Q=P.document,R=P.navigator;f.prototype={VERSION:"3.24.2",debug:!1,TraceKit:g,config:function(a,b){var c=this;if(c.h)return this.A("error","Error: Raven has already been configured"),c;if(!a)return c;var d=c.l;b&&u(b,function(a,b){"tags"===a||"extra"===a||"user"===a?c.k[a]=b:d[a]=b}),c.setDSN(a),d.ignoreErrors.push(/^Script error\.?$/),d.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/),d.ignoreErrors=z(d.ignoreErrors),d.ignoreUrls=!!d.ignoreUrls.length&&z(d.ignoreUrls),d.whitelistUrls=!!d.whitelistUrls.length&&z(d.whitelistUrls),d.includePaths=z(d.includePaths),d.maxBreadcrumbs=Math.max(0,Math.min(d.maxBreadcrumbs||100,100));var e={xhr:!0,console:!0,dom:!0,location:!0,sentry:!0},f=d.autoBreadcrumbs;"[object Object]"==={}.toString.call(f)?f=v(e,f):f!==!1&&(f=e),d.autoBreadcrumbs=f;var h={tryCatch:!0},i=d.instrument;return"[object Object]"==={}.toString.call(i)?i=v(h,i):i!==!1&&(i=h),d.instrument=i,g.collectWindowErrors=!!d.collectWindowErrors,c},install:function(){var a=this;return a.isSetup()&&!a.o&&(g.report.subscribe(function(){a.B.apply(a,arguments)}),a.l.captureUnhandledRejections&&a.C(),a.D(),a.l.instrument&&a.l.instrument.tryCatch&&a.E(),a.l.autoBreadcrumbs&&a.F(),a.G(),a.o=!0),Error.stackTraceLimit=a.l.stackTraceLimit,this},setDSN:function(a){var b=this,c=b.H(a),d=c.path.lastIndexOf("/"),e=c.path.substr(1,d);b.I=a,b.i=c.user,b.J=c.pass&&c.pass.substr(1),b.j=c.path.substr(d+1),b.h=b.K(c),b.L=b.h+"/"+e+"api/"+b.j+"/store/",this.z()},context:function(a,b,c){return q(a)&&(c=b||[],b=a,a=void 0),this.wrap(a,b).apply(this,c)},wrap:function(a,b,c){function d(){var d=[],f=arguments.length,g=!a||a&&a.deep!==!1;for(c&&q(c)&&c.apply(this,arguments);f--;)d[f]=g?e.wrap(a,arguments[f]):arguments[f];try{return b.apply(this,d)}catch(h){throw e.M(),e.captureException(h,a),h}}var e=this;if(p(b)&&!q(a))return a;if(q(a)&&(b=a,a=void 0),!q(b))return b;try{if(b.N)return b;if(b.O)return b.O}catch(f){return b}for(var g in b)y(b,g)&&(d[g]=b[g]);return d.prototype=b.prototype,b.O=d,d.N=!0,d.P=b,d},uninstall:function(){return g.report.uninstall(),this.Q(),this.R(),this.S(),this.T(),Error.stackTraceLimit=this.p,this.o=!1,this},U:function(a){this.A("debug","Raven caught unhandled promise rejection:",a),this.captureException(a.reason,{extra:{unhandledPromiseRejection:!0}})},C:function(){return this.U=this.U.bind(this),P.addEventListener&&P.addEventListener("unhandledrejection",this.U),this},Q:function(){return P.removeEventListener&&P.removeEventListener("unhandledrejection",this.U),this},captureException:function(a,b){if(b=v({trimHeadFrames:0},b?b:{}),o(a)&&a.error)a=a.error;else if(l(a))a=a;else{if(!n(a))return this.captureMessage(a,v(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}));b=this.V(b,a),a=new Error(b.message)}this.e=a;try{var c=g.computeStackTrace(a);this.W(c,b)}catch(d){if(a!==d)throw d}return this},V:function(a,b){var c=Object.keys(b).sort(),d=v(a,{message:"Non-Error exception captured with keys: "+J(c),fingerprint:[i(c)],extra:a.extra||{}});return d.extra.X=K(b),d},captureMessage:function(a,b){if(!this.l.ignoreErrors.test||!this.l.ignoreErrors.test(a)){b=b||{},a+="";var c,d=v({message:a},b);try{throw new Error(a)}catch(e){c=e}c.name=null;var f=g.computeStackTrace(c),h=s(f.stack)&&f.stack[1];h&&"Raven.captureException"===h.func&&(h=f.stack[2]);var i=h&&h.url||"";if((!this.l.ignoreUrls.test||!this.l.ignoreUrls.test(i))&&(!this.l.whitelistUrls.test||this.l.whitelistUrls.test(i))){if(this.l.stacktrace||b&&b.stacktrace){d.fingerprint=null==d.fingerprint?a:d.fingerprint,b=v({trimHeadFrames:0},b),b.trimHeadFrames+=1;var j=this.Y(f,b);d.stacktrace={frames:j.reverse()}}return d.fingerprint&&(d.fingerprint=s(d.fingerprint)?d.fingerprint:[d.fingerprint]),this.Z(d),this}}},captureBreadcrumb:function(a){var b=v({timestamp:d()/1e3},a);if(q(this.l.breadcrumbCallback)){var c=this.l.breadcrumbCallback(b);if(m(c)&&!t(c))b=c;else if(c===!1)return this}return this.v.push(b),this.v.length>this.l.maxBreadcrumbs&&this.v.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.s.push([a,b]),this.o&&this.G(),this},setUserContext:function(a){return this.k.user=a,this},setExtraContext:function(a){return this.$("extra",a),this},setTagsContext:function(a){return this.$("tags",a),this},clearContext:function(){return this.k={},this},getContext:function(){return JSON.parse(h(this.k))},setEnvironment:function(a){return this.l.environment=a,this},setRelease:function(a){return this.l.release=a,this},setDataCallback:function(a){var b=this.l.dataCallback;return this.l.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.l.breadcrumbCallback;return this.l.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.l.shouldSendCallback;return this.l.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.l.transport=a,this},lastException:function(){return this.e},lastEventId:function(){return this.g},isSetup:function(){return!!this.b&&(!!this.h||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.A("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=P.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(Q){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.I;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.k.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.K(this.H(c)),h=Q.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(Q.head||Q.body).appendChild(h)}},M:function(){var a=this;this.n+=1,setTimeout(function(){a.n-=1})},_:function(a,b){var c,d;if(this.c){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),Q.createEvent?(c=Q.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=Q.createEventObject(),c.eventType=a);for(d in b)y(b,d)&&(c[d]=b[d]);if(Q.createEvent)Q.dispatchEvent(c);else try{Q.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},aa:function(a){var b=this;return function(c){if(b.ba=null,b.w!==c){b.w=c;var d;try{d=C(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ca:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.ba;g||a.aa("input")(c),clearTimeout(g),a.ba=setTimeout(function(){a.ba=null},b)}}},da:function(a,b){var c=F(this.x.href),d=F(b),e=F(a);this.y=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},D:function(){var a=this;a.ea=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.N?a.ea.apply(this.P,arguments):a.ea.apply(this,arguments)}},R:function(){this.ea&&(Function.prototype.toString=this.ea)},E:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.da(b.y,c+""),a.apply(this,arguments)}};G(history,"pushState",j,d),G(history,"replaceState",j,d)}if(c.console&&"console"in P&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};u(["debug","info","warn","error","log"],function(a,b){M(console,b,k)})}},S:function(){for(var a;this.u.length;){a=this.u.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},T:function(){for(var a in this.r)this.q[a]=this.r[a]},G:function(){var a=this;u(this.s,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},H:function(a){var b=O.exec(a),c={},d=7;try{for(;d--;)c[N[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.l.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},K:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},B:function(){this.n||this.W.apply(this,arguments)},W:function(a,b){var c=this.Y(a,b);this._("handle",{stackInfo:a,options:b}),this.ga(a.name,a.message,a.url,a.lineno,c,b)},Y:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(u(a.stack,function(b,e){var f=c.ha(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.v,0)}),this.k.user&&(a.user=this.k.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),a=this.qa(a),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||t(a[b]))&&delete a[b]}),q(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!t(a)&&(!q(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.na()?void this.A("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function B(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&j(b))for(c=b.split(/\s+/),f=0;fc?M(a,b-1):d}function N(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?T:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function O(a,b){function c(a){return k(a)?a.map(function(a){return c(a)}):i(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!k(b)||k(b)&&0===b.length)return a;var d,e=w(b),f="********";try{d=JSON.parse(P(a))}catch(g){return a}return c(d)}var P=a(10),Q="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},R=3,S=51200,T=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isUndefined:g,isFunction:h,isPlainObject:i,isString:j,isArray:k,isEmptyObject:l,supportsErrorEvent:m,supportsFetch:n,supportsReferrerPolicy:o,supportsPromiseRejectionEvent:p,wrappedCallback:q,each:r,objectMerge:s,truncate:u,objectFrozen:t,hasKey:v,joinRegExp:w,urlencode:x,uuid4:z,htmlTreeAsString:A,htmlElementAsString:B,isSameException:E,isSameStacktrace:F,parseUrl:y,fill:G,safeJoin:H,serializeException:M,serializeKeysForMessage:N,sanitize:O}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{10:10}],9:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}var e=a(8),f={collectWindowErrors:!0,debug:!1},g="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},h=[].slice,i="?",j=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;f.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function k(a,b){var c=null;if(!b||f.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(h.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,g,h){var l=null,m=e.isErrorEvent(h)?h.error:h,n=e.isErrorEvent(a)?a.message:a;if(v)f.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&e.isError(m))l=f.computeStackTrace(m),k(l,!0);else{var p,r={url:b,line:c,column:g},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(j);p&&(s=p[1],n=p[2])}r.func=i,l={name:s,message:n,url:d(),stack:[r]},k(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=g.onerror,g.onerror=l,r=!0)}function n(){r&&(g.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,k.apply(null,[a,!1].concat(b))}function p(a,b){var c=h.call(arguments,1);if(v){if(u===a)return;o()}var d=f.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),f.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,e,f=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,g=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,h=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,j=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,k=/\((\S*)(?::(\d+))(?::(\d+))\)/,l=a.stack.split("\n"),m=[],n=(/^(.*) is undefined$/.exec(a.message),0),o=l.length;n eval")>-1;q&&(b=j.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==n||c[5]||"undefined"==typeof a.columnNumber||(m[0].column=a.columnNumber+1),e={url:c[3],func:c[1]||i,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}!e.func&&e.line&&(e.func=i),m.push(e)}return m.length?{name:a.name,message:a.message,url:d(),stack:m}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=i),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,g){for(var h,j,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==e&&o!==f.report){if(j={url:null,func:i,line:null,column:null},o.name?j.func=o.name:(h=k.exec(o.toString()))&&(j.func=h[1]),"undefined"==typeof j.func)try{j.func=h.input.substring(0,h.input.indexOf("{"))}catch(p){}m[""+o]?n=!0:m[""+o]=!0,l.push(j)}g&&l.splice(0,g);var q={name:a.name,message:a.message, -url:d(),stack:l};return b(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),q}function e(b,e){var g=null;e=null==e?0:+e;try{if(g=a(b))return g}catch(h){if(f.debug)throw h}try{if(g=c(b,e+1))return g}catch(h){if(f.debug)throw h}return{name:b.name,message:b.message,url:d()}}return e.augmentStackTraceWithInitialElement=b,e.computeStackTraceFromStackProp=a,e}(),b.exports=f}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{8:8}],10:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}],11:[function(a,b,c){function d(a,b){var c=(65535&a)+(65535&b),d=(a>>16)+(b>>16)+(c>>16);return d<<16|65535&c}function e(a,b){return a<>>32-b}function f(a,b,c,f,g,h){return d(e(d(d(b,a),d(f,h)),g),c)}function g(a,b,c,d,e,g,h){return f(b&c|~b&d,a,b,e,g,h)}function h(a,b,c,d,e,g,h){return f(b&d|c&~d,a,b,e,g,h)}function i(a,b,c,d,e,g,h){return f(b^c^d,a,b,e,g,h)}function j(a,b,c,d,e,g,h){return f(c^(b|~d),a,b,e,g,h)}function k(a,b){a[b>>5]|=128<>>9<<4)+14]=b;var c,e,f,k,l,m=1732584193,n=-271733879,o=-1732584194,p=271733878;for(c=0;c>5]>>>b%32&255);return c}function m(a){var b,c=[];for(c[(a.length>>2)-1]=void 0,b=0;b>5]|=(255&a.charCodeAt(b/8))<16&&(e=k(e,8*a.length)),c=0;c<16;c+=1)f[c]=909522486^e[c],g[c]=1549556828^e[c];return d=k(f.concat(m(b)),512+8*b.length),l(k(g.concat(d),640))}function p(a){var b,c,d="0123456789abcdef",e="";for(c=0;c>>4&15)+d.charAt(15&b);return e}function q(a){return unescape(encodeURIComponent(a))}function r(a){return n(q(a))}function s(a){return p(r(a))}function t(a,b){return o(q(a),q(b))}function u(a,b){return p(t(a,b))}function v(a,b,c){return b?c?t(b,a):u(b,a):c?r(a):s(a)}b.exports=v},{}]},{},[7,1,2,3])(7)}); +/*! Raven.js 3.25.0 (80dffad) | github.com/getsentry/raven-js */ +!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.Raven=a()}}(function(){var a;return function b(a,c,d){function e(g,h){if(!c[g]){if(!a[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};a[g][0].call(k.exports,function(b){var c=a[g][1][b];return e(c?c:b)},k,k.exports,b,a,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;g":"anonymous component")+(a._isVue&&a.$options.__file?" at "+a.$options.__file:"")}function e(a,b){if(b=b||window.Vue,b&&b.config){var c=b.config.errorHandler;b.config.errorHandler=function(b,e,f){var g={};"[object Object]"===Object.prototype.toString.call(e)&&(g.componentName=d(e),g.propsData=e.$options.propsData),"undefined"!=typeof f&&(g.lifecycleHook=f),a.captureException(b,{extra:g}),"function"==typeof c&&c.call(this,b,e,f)}}}b.exports=e,a(7).addPlugin(b.exports)},{7:7}],4:[function(a,b,c){function d(a){this.name="RavenConfigError",this.message=a}d.prototype=new Error,d.prototype.constructor=d,b.exports=d},{}],5:[function(a,b,c){var d=a(8),e=function(a,b,c){var e=a[b],f=a;if(b in a){var g="warn"===b?"warning":b;a[b]=function(){var a=[].slice.call(arguments),h=d.safeJoin(a," "),i={level:g,logger:"console",extra:{arguments:a}};"assert"===b?a[0]===!1&&(h="Assertion failed: "+(d.safeJoin(a.slice(1)," ")||"console.assert"),i.extra.arguments=a.slice(1),c&&c(h,i)):c&&c(h,i),e&&Function.prototype.apply.call(e,f,a)}}};b.exports={wrapMethod:e}},{8:8}],6:[function(a,b,c){(function(c){function d(){return+new Date}function e(a,b){return s(b)?function(c){return b(c,a)}:b}function f(){this.b=!("object"!=typeof JSON||!JSON.stringify),this.c=!r(S),this.d=!r(T),this.e=null,this.f=null,this.g=null,this.h=null,this.i=null,this.j=null,this.k={},this.l={release:R.SENTRY_RELEASE&&R.SENTRY_RELEASE.id,logger:"javascript",ignoreErrors:[],ignoreUrls:[],whitelistUrls:[],includePaths:[],headers:null,collectWindowErrors:!0,captureUnhandledRejections:!0,maxMessageLength:0,maxUrlLength:250,stackTraceLimit:50,autoBreadcrumbs:!0,instrument:!0,sampleRate:1,sanitizeKeys:[]},this.m={method:"POST",keepalive:!0,referrerPolicy:K()?"origin":""},this.n=0,this.o=!1,this.p=Error.stackTraceLimit,this.q=R.console||{},this.r={},this.s=[],this.t=d(),this.u=[],this.v=[],this.w=null,this.x=R.location,this.y=this.x&&this.x.href,this.z();for(var a in this.q)this.r[a]=this.q[a]}var g=a(9),h=a(10),i=a(11),j=a(4),k=a(8),l=k.isErrorEvent,m=k.isDOMError,n=k.isDOMException,o=k.isError,p=k.isObject,q=k.isPlainObject,r=k.isUndefined,s=k.isFunction,t=k.isString,u=k.isArray,v=k.isEmptyObject,w=k.each,x=k.objectMerge,y=k.truncate,z=k.objectFrozen,A=k.hasKey,B=k.joinRegExp,C=k.urlencode,D=k.uuid4,E=k.htmlTreeAsString,F=k.isSameException,G=k.isSameStacktrace,H=k.parseUrl,I=k.fill,J=k.supportsFetch,K=k.supportsReferrerPolicy,L=k.serializeKeysForMessage,M=k.serializeException,N=k.sanitize,O=a(5).wrapMethod,P="source protocol user pass host port path".split(" "),Q=/^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/,R="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},S=R.document,T=R.navigator;f.prototype={VERSION:"3.25.0",debug:!1,TraceKit:g,config:function(a,b){var c=this;if(c.h)return this.A("error","Error: Raven has already been configured"),c;if(!a)return c;var d=c.l;b&&w(b,function(a,b){"tags"===a||"extra"===a||"user"===a?c.k[a]=b:d[a]=b}),c.setDSN(a),d.ignoreErrors.push(/^Script error\.?$/),d.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/),d.ignoreErrors=B(d.ignoreErrors),d.ignoreUrls=!!d.ignoreUrls.length&&B(d.ignoreUrls),d.whitelistUrls=!!d.whitelistUrls.length&&B(d.whitelistUrls),d.includePaths=B(d.includePaths),d.maxBreadcrumbs=Math.max(0,Math.min(d.maxBreadcrumbs||100,100));var e={xhr:!0,console:!0,dom:!0,location:!0,sentry:!0},f=d.autoBreadcrumbs;"[object Object]"==={}.toString.call(f)?f=x(e,f):f!==!1&&(f=e),d.autoBreadcrumbs=f;var h={tryCatch:!0},i=d.instrument;return"[object Object]"==={}.toString.call(i)?i=x(h,i):i!==!1&&(i=h),d.instrument=i,g.collectWindowErrors=!!d.collectWindowErrors,c},install:function(){var a=this;return a.isSetup()&&!a.o&&(g.report.subscribe(function(){a.B.apply(a,arguments)}),a.l.captureUnhandledRejections&&a.C(),a.D(),a.l.instrument&&a.l.instrument.tryCatch&&a.E(),a.l.autoBreadcrumbs&&a.F(),a.G(),a.o=!0),Error.stackTraceLimit=a.l.stackTraceLimit,this},setDSN:function(a){var b=this,c=b.H(a),d=c.path.lastIndexOf("/"),e=c.path.substr(1,d);b.I=a,b.i=c.user,b.J=c.pass&&c.pass.substr(1),b.j=c.path.substr(d+1),b.h=b.K(c),b.L=b.h+"/"+e+"api/"+b.j+"/store/",this.z()},context:function(a,b,c){return s(a)&&(c=b||[],b=a,a=void 0),this.wrap(a,b).apply(this,c)},wrap:function(a,b,c){function d(){var d=[],f=arguments.length,g=!a||a&&a.deep!==!1;for(c&&s(c)&&c.apply(this,arguments);f--;)d[f]=g?e.wrap(a,arguments[f]):arguments[f];try{return b.apply(this,d)}catch(h){throw e.M(),e.captureException(h,a),h}}var e=this;if(r(b)&&!s(a))return a;if(s(a)&&(b=a,a=void 0),!s(b))return b;try{if(b.N)return b;if(b.O)return b.O}catch(f){return b}for(var g in b)A(b,g)&&(d[g]=b[g]);return d.prototype=b.prototype,b.O=d,d.N=!0,d.P=b,d},uninstall:function(){return g.report.uninstall(),this.Q(),this.R(),this.S(),this.T(),Error.stackTraceLimit=this.p,this.o=!1,this},U:function(a){this.A("debug","Raven caught unhandled promise rejection:",a),this.captureException(a.reason,{extra:{unhandledPromiseRejection:!0}})},C:function(){return this.U=this.U.bind(this),R.addEventListener&&R.addEventListener("unhandledrejection",this.U),this},Q:function(){return R.removeEventListener&&R.removeEventListener("unhandledrejection",this.U),this},captureException:function(a,b){if(b=x({trimHeadFrames:0},b?b:{}),l(a)&&a.error)a=a.error;else{if(m(a)||n(a)){var c=a.name||(m(a)?"DOMError":"DOMException"),d=a.message?c+": "+a.message:c;return this.captureMessage(d,x(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}))}if(o(a))a=a;else{if(!q(a))return this.captureMessage(a,x(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}));b=this.V(b,a),a=new Error(b.message)}}this.e=a;try{var e=g.computeStackTrace(a);this.W(e,b)}catch(f){if(a!==f)throw f}return this},V:function(a,b){var c=Object.keys(b).sort(),d=x(a,{message:"Non-Error exception captured with keys: "+L(c),fingerprint:[i(c)],extra:a.extra||{}});return d.extra.X=M(b),d},captureMessage:function(a,b){if(!this.l.ignoreErrors.test||!this.l.ignoreErrors.test(a)){b=b||{},a+="";var c,d=x({message:a},b);try{throw new Error(a)}catch(e){c=e}c.name=null;var f=g.computeStackTrace(c),h=u(f.stack)&&f.stack[1];h&&"Raven.captureException"===h.func&&(h=f.stack[2]);var i=h&&h.url||"";if((!this.l.ignoreUrls.test||!this.l.ignoreUrls.test(i))&&(!this.l.whitelistUrls.test||this.l.whitelistUrls.test(i))){if(this.l.stacktrace||b&&b.stacktrace){d.fingerprint=null==d.fingerprint?a:d.fingerprint,b=x({trimHeadFrames:0},b),b.trimHeadFrames+=1;var j=this.Y(f,b);d.stacktrace={frames:j.reverse()}}return d.fingerprint&&(d.fingerprint=u(d.fingerprint)?d.fingerprint:[d.fingerprint]),this.Z(d),this}}},captureBreadcrumb:function(a){var b=x({timestamp:d()/1e3},a);if(s(this.l.breadcrumbCallback)){var c=this.l.breadcrumbCallback(b);if(p(c)&&!v(c))b=c;else if(c===!1)return this}return this.v.push(b),this.v.length>this.l.maxBreadcrumbs&&this.v.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.s.push([a,b]),this.o&&this.G(),this},setUserContext:function(a){return this.k.user=a,this},setExtraContext:function(a){return this.$("extra",a),this},setTagsContext:function(a){return this.$("tags",a),this},clearContext:function(){return this.k={},this},getContext:function(){return JSON.parse(h(this.k))},setEnvironment:function(a){return this.l.environment=a,this},setRelease:function(a){return this.l.release=a,this},setDataCallback:function(a){var b=this.l.dataCallback;return this.l.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.l.breadcrumbCallback;return this.l.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.l.shouldSendCallback;return this.l.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.l.transport=a,this},lastException:function(){return this.e},lastEventId:function(){return this.g},isSetup:function(){return!!this.b&&(!!this.h||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.A("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=R.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(S){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.I;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.k.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.K(this.H(c)),h=S.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(S.head||S.body).appendChild(h)}},M:function(){var a=this;this.n+=1,setTimeout(function(){a.n-=1})},_:function(a,b){var c,d;if(this.c){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),S.createEvent?(c=S.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=S.createEventObject(),c.eventType=a);for(d in b)A(b,d)&&(c[d]=b[d]);if(S.createEvent)S.dispatchEvent(c);else try{S.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},aa:function(a){var b=this;return function(c){if(b.ba=null,b.w!==c){b.w=c;var d;try{d=E(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ca:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.ba;g||a.aa("input")(c),clearTimeout(g),a.ba=setTimeout(function(){a.ba=null},b)}}},da:function(a,b){var c=H(this.x.href),d=H(b),e=H(a);this.y=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},D:function(){var a=this;a.ea=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.N?a.ea.apply(this.P,arguments):a.ea.apply(this,arguments)}},R:function(){this.ea&&(Function.prototype.toString=this.ea)},E:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.da(b.y,c+""),a.apply(this,arguments)}};I(history,"pushState",j,d),I(history,"replaceState",j,d)}if(c.console&&"console"in R&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};w(["debug","info","warn","error","log"],function(a,b){O(console,b,k)})}},S:function(){for(var a;this.u.length;){a=this.u.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},T:function(){for(var a in this.r)this.q[a]=this.r[a]},G:function(){var a=this;w(this.s,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},H:function(a){var b=Q.exec(a),c={},d=7;try{for(;d--;)c[P[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.l.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},K:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},B:function(){this.n||this.W.apply(this,arguments)},W:function(a,b){var c=this.Y(a,b);this._("handle",{stackInfo:a,options:b}),this.ga(a.name,a.message,a.url,a.lineno,c,b)},Y:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(w(a.stack,function(b,e){var f=c.ha(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.v,0)}),this.k.user&&(a.user=this.k.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),a=this.qa(a),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||v(a[b]))&&delete a[b]}),s(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!v(a)&&(!s(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.na()?void this.A("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function F(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&l(b))for(c=b.split(/\s+/),f=0;fc?Q(a,b-1):d}function R(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?X:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function S(a,b){function c(a){return m(a)?a.map(function(a){return c(a)}):k(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!m(b)||m(b)&&0===b.length)return a;var d,e=A(b),f="********";try{d=JSON.parse(T(a))}catch(g){return a}return c(d)}var T=a(10),U="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},V=3,W=51200,X=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isDOMError:g,isDOMException:h,isUndefined:i,isFunction:j,isPlainObject:k,isString:l,isArray:m,isEmptyObject:n,supportsErrorEvent:o,supportsDOMError:p,supportsDOMException:q,supportsFetch:r,supportsReferrerPolicy:s,supportsPromiseRejectionEvent:t,wrappedCallback:u,each:v,objectMerge:w,truncate:y,objectFrozen:x,hasKey:z,joinRegExp:A,urlencode:B,uuid4:D,htmlTreeAsString:E,htmlElementAsString:F,isSameException:I,isSameStacktrace:J,parseUrl:C,fill:K,safeJoin:L,serializeException:Q,serializeKeysForMessage:R,sanitize:S}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{10:10}],9:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}function e(){return"undefined"==typeof document||null==document.location?"":document.location.origin}var f=a(8),g={collectWindowErrors:!0,debug:!1},h="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},i=[].slice,j="?",k=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;g.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function e(a,b){var c=null;if(!b||g.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(i.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,h,i){var l=null,m=f.isErrorEvent(i)?i.error:i,n=f.isErrorEvent(a)?a.message:a;if(v)g.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&f.isError(m))l=g.computeStackTrace(m),e(l,!0);else{var p,r={url:b,line:c,column:h},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(k);p&&(s=p[1],n=p[2])}r.func=j,l={name:s,message:n,url:d(),stack:[r]},e(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=h.onerror,h.onerror=l,r=!0)}function n(){r&&(h.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,e.apply(null,[a,!1].concat(b))}function p(a,b){var c=i.call(arguments,1);if(v){if(u===a)return;o()}var d=g.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),g.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,f,g=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,h=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,i=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,k=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,l=/\((\S*)(?::(\d+))(?::(\d+))\)/,m=a.stack.split("\n"),n=[],o=(/^(.*) is undefined$/.exec(a.message),0),p=m.length;o eval")>-1;r&&(b=k.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==o||c[5]||"undefined"==typeof a.columnNumber||(n[0].column=a.columnNumber+1),f={url:c[3],func:c[1]||j,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}if(!f.func&&f.line&&(f.func=j),f.url&&"blob:"===f.url.substr(0,5)){var s=new XMLHttpRequest;if(s.open("GET",f.url,!1),s.send(null),200===s.status){var t=s.responseText||"";t=t.slice(-300); +var u=t.match(/\/\/# sourceMappingURL=(.*)$/);if(u){var v=u[1];"~"===v.charAt(0)&&(v=e()+v.slice(1)),f.url=v.slice(0,-4)}}}n.push(f)}return n.length?{name:a.name,message:a.message,url:d(),stack:n}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=j),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,e){for(var h,i,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==f&&o!==g.report){if(i={url:null,func:j,line:null,column:null},o.name?i.func=o.name:(h=k.exec(o.toString()))&&(i.func=h[1]),"undefined"==typeof i.func)try{i.func=h.input.substring(0,h.input.indexOf("{"))}catch(p){}m[""+o]?n=!0:m[""+o]=!0,l.push(i)}e&&l.splice(0,e);var q={name:a.name,message:a.message,url:d(),stack:l};return b(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),q}function f(b,e){var f=null;e=null==e?0:+e;try{if(f=a(b))return f}catch(h){if(g.debug)throw h}try{if(f=c(b,e+1))return f}catch(h){if(g.debug)throw h}return{name:b.name,message:b.message,url:d()}}return f.augmentStackTraceWithInitialElement=b,f.computeStackTraceFromStackProp=a,f}(),b.exports=g}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{8:8}],10:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}],11:[function(a,b,c){function d(a,b){var c=(65535&a)+(65535&b),d=(a>>16)+(b>>16)+(c>>16);return d<<16|65535&c}function e(a,b){return a<>>32-b}function f(a,b,c,f,g,h){return d(e(d(d(b,a),d(f,h)),g),c)}function g(a,b,c,d,e,g,h){return f(b&c|~b&d,a,b,e,g,h)}function h(a,b,c,d,e,g,h){return f(b&d|c&~d,a,b,e,g,h)}function i(a,b,c,d,e,g,h){return f(b^c^d,a,b,e,g,h)}function j(a,b,c,d,e,g,h){return f(c^(b|~d),a,b,e,g,h)}function k(a,b){a[b>>5]|=128<>>9<<4)+14]=b;var c,e,f,k,l,m=1732584193,n=-271733879,o=-1732584194,p=271733878;for(c=0;c>5]>>>b%32&255);return c}function m(a){var b,c=[];for(c[(a.length>>2)-1]=void 0,b=0;b>5]|=(255&a.charCodeAt(b/8))<16&&(e=k(e,8*a.length)),c=0;c<16;c+=1)f[c]=909522486^e[c],g[c]=1549556828^e[c];return d=k(f.concat(m(b)),512+8*b.length),l(k(g.concat(d),640))}function p(a){var b,c,d="0123456789abcdef",e="";for(c=0;c>>4&15)+d.charAt(15&b);return e}function q(a){return unescape(encodeURIComponent(a))}function r(a){return n(q(a))}function s(a){return p(r(a))}function t(a,b){return o(q(a),q(b))}function u(a,b){return p(t(a,b))}function v(a,b,c){return b?c?t(b,a):u(b,a):c?r(a):s(a)}b.exports=v},{}]},{},[7,1,2,3])(7)}); //# sourceMappingURL=raven.min.js.map \ No newline at end of file diff --git a/dist/angular,require,vue/raven.min.js.map b/dist/angular,require,vue/raven.min.js.map index b791303a07f0..403d84b6189d 100644 --- a/dist/angular,require,vue/raven.min.js.map +++ b/dist/angular,require,vue/raven.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","angularPlugin","angular","RavenProvider","$get","$window","ExceptionHandlerProvider","$provide","decorator","exceptionHandler","R","$delegate","ex","cause","captureException","extra","moduleName","provider","config","setDataCallback","wrappedCallback","data","_normalizeData","angularPattern","exception","values","matches","exec","value","type","message","angularDocs","substr","addPlugin","7","8","2","requirePlugin","wrap","deep","3","formatComponentName","vm","$root","name","_isVue","$options","_componentTag","__file","vuePlugin","Vue","_oldOnError","errorHandler","error","info","metaData","Object","prototype","toString","componentName","propsData","lifecycleHook","4","RavenConfigError","constructor","5","utils","wrapMethod","console","level","callback","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","msg","safeJoin","logger","Function","apply","6","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","sanitizeKeys","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isError","isObject","isPlainObject","isErrorEvent","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","sanitize","wrapConsoleMethod","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","dsn","options","_logDebug","globalOptions","key","setDSN","push","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","context","func","undefined","_before","wrapped","_ignoreNextOnError","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","U","event","reason","unhandledPromiseRejection","C","_promiseRejectionHandler","bind","addEventListener","Q","removeEventListener","trimHeadFrames","captureMessage","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","V","currentOptions","exKeys","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","M","setTimeout","_","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","aa","evtName","_keypressTimeout","target","category","ca","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","da","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","D","_originalFunctionToString","E","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","F","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","S","builtin","T","G","installer","concat","H","str","m","allowSecretKey","K","port","B","W","stackInfo","_triggerEvent","_processException","lineno","Y","frame","_normalizeFrame","in_app","ha","stackInfoUrl","normalized","filename","line","colno","column","function","ga","prefixedMessage","culprit","ia","request","Referer","breadcrumbs","_trimBreadcrumbs","ja","urlProp","urlProps","ka","httpData","userAgent","User-Agent","referrer","z","_backoffDuration","_backoffStart","na","oa","current","last","pa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Z","baseData","project","platform","_getHttpData","serverName","server_name","_sanitizeData","forEach","random","_sendProcessedPayload","qa","sa","ra","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","ta","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","onerror","open","setRequestHeader","send","ua","hash","evaluated","A","$","setUser","setReleaseContext","10","11","9","RavenConstructor","_Raven","noConflict","Client","what","supportsErrorEvent","ErrorEvent","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","sanitizeMask","safeInput","o_O","getLocationHref","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","y","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","charAt","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","string","raw"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file +{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","angularPlugin","angular","RavenProvider","$get","$window","ExceptionHandlerProvider","$provide","decorator","exceptionHandler","R","$delegate","ex","cause","captureException","extra","moduleName","provider","config","setDataCallback","wrappedCallback","data","_normalizeData","angularPattern","exception","values","matches","exec","value","type","message","angularDocs","substr","addPlugin","7","8","2","requirePlugin","wrap","deep","3","formatComponentName","vm","$root","name","_isVue","$options","_componentTag","__file","vuePlugin","Vue","_oldOnError","errorHandler","error","info","metaData","Object","prototype","toString","componentName","propsData","lifecycleHook","4","RavenConfigError","constructor","5","utils","wrapMethod","console","level","callback","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","msg","safeJoin","logger","Function","apply","6","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","sanitizeKeys","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isErrorEvent","isDOMError","isDOMException","isError","isObject","isPlainObject","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","sanitize","wrapConsoleMethod","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","dsn","options","_logDebug","globalOptions","key","setDSN","push","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","context","func","undefined","_before","wrapped","_ignoreNextOnError","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","U","event","reason","unhandledPromiseRejection","C","_promiseRejectionHandler","bind","addEventListener","Q","removeEventListener","trimHeadFrames","captureMessage","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","V","currentOptions","exKeys","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","M","setTimeout","_","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","aa","evtName","_keypressTimeout","target","category","ca","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","da","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","D","_originalFunctionToString","E","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","F","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","S","builtin","T","G","installer","concat","H","str","m","allowSecretKey","K","port","B","W","stackInfo","_triggerEvent","_processException","lineno","Y","frame","_normalizeFrame","in_app","ha","stackInfoUrl","normalized","filename","line","colno","column","function","ga","prefixedMessage","culprit","ia","request","Referer","breadcrumbs","_trimBreadcrumbs","ja","urlProp","urlProps","ka","httpData","userAgent","User-Agent","referrer","z","_backoffDuration","_backoffStart","na","oa","current","last","pa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Z","baseData","project","platform","_getHttpData","serverName","server_name","_sanitizeData","forEach","random","_sendProcessedPayload","qa","sa","ra","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","ta","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","onerror","open","setRequestHeader","send","ua","hash","evaluated","A","$","setUser","setReleaseContext","10","11","9","RavenConstructor","_Raven","noConflict","Client","what","supportsErrorEvent","ErrorEvent","supportsDOMError","DOMError","supportsDOMException","DOMException","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","sanitizeMask","safeInput","o_O","getLocationHref","getLocationOrigin","origin","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","responseText","sourceMaps","sourceMapAddress","charAt","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","y","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","string","raw"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file diff --git a/dist/angular,require/raven.js b/dist/angular,require/raven.js index 05373c93fa94..06e77a891bf2 100644 --- a/dist/angular,require/raven.js +++ b/dist/angular,require/raven.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.24.2 (540f32b) | github.com/getsentry/raven-js */ +/*! Raven.js 3.25.0 (80dffad) | github.com/getsentry/raven-js */ /* * Includes TraceKit @@ -168,10 +168,12 @@ var md5 = _dereq_(10); var RavenConfigError = _dereq_(3); var utils = _dereq_(7); +var isErrorEvent = utils.isErrorEvent; +var isDOMError = utils.isDOMError; +var isDOMException = utils.isDOMException; var isError = utils.isError; var isObject = utils.isObject; var isPlainObject = utils.isPlainObject; -var isErrorEvent = utils.isErrorEvent; var isUndefined = utils.isUndefined; var isFunction = utils.isFunction; var isString = utils.isString; @@ -299,7 +301,7 @@ Raven.prototype = { // webpack (using a build step causes webpack #1617). Grunt verifies that // this value matches package.json during build. // See: https://github.com/getsentry/raven-js/issues/465 - VERSION: '3.24.2', + VERSION: '3.25.0', debug: false, @@ -631,6 +633,23 @@ Raven.prototype = { if (isErrorEvent(ex) && ex.error) { // If it is an ErrorEvent with `error` property, extract it to get actual Error ex = ex.error; + } else if (isDOMError(ex) || isDOMException(ex)) { + // If it is a DOMError or DOMException (which are legacy APIs, but still supported in some browsers) + // then we just extract the name and message, as they don't provide anything else + // https://developer.mozilla.org/en-US/docs/Web/API/DOMError + // https://developer.mozilla.org/en-US/docs/Web/API/DOMException + var name = ex.name || (isDOMError(ex) ? 'DOMError' : 'DOMException'); + var message = ex.message ? name + ': ' + ex.message : name; + + return this.captureMessage( + message, + objectMerge(options, { + // neither DOMError or DOMException provide stack trace and we most likely wont get it this way as well + // but it's barely any overhead so we may at least try + stacktrace: true, + trimHeadFrames: options.trimHeadFrames + 1 + }) + ); } else if (isError(ex)) { // we have a real Error object ex = ex; @@ -642,6 +661,7 @@ Raven.prototype = { ex = new Error(options.message); } else { // If none of previous checks were valid, then it means that + // it's not a DOMError/DOMException // it's not a plain Object // it's not a valid ErrorEvent (one with an error property) // it's not an Error @@ -2414,7 +2434,7 @@ function isObject(what) { // Yanked from https://git.io/vS8DV re-used under CC0 // with some tiny modifications function isError(value) { - switch ({}.toString.call(value)) { + switch (Object.prototype.toString.call(value)) { case '[object Error]': return true; case '[object Exception]': @@ -2427,7 +2447,15 @@ function isError(value) { } function isErrorEvent(value) { - return supportsErrorEvent() && {}.toString.call(value) === '[object ErrorEvent]'; + return Object.prototype.toString.call(value) === '[object ErrorEvent]'; +} + +function isDOMError(value) { + return Object.prototype.toString.call(value) === '[object DOMError]'; +} + +function isDOMException(value) { + return Object.prototype.toString.call(value) === '[object DOMException]'; } function isUndefined(what) { @@ -2470,6 +2498,24 @@ function supportsErrorEvent() { } } +function supportsDOMError() { + try { + new DOMError(''); // eslint-disable-line no-new + return true; + } catch (e) { + return false; + } +} + +function supportsDOMException() { + try { + new DOMException(''); // eslint-disable-line no-new + return true; + } catch (e) { + return false; + } +} + function supportsFetch() { if (!('fetch' in _window)) return false; @@ -2985,6 +3031,8 @@ module.exports = { isObject: isObject, isError: isError, isErrorEvent: isErrorEvent, + isDOMError: isDOMError, + isDOMException: isDOMException, isUndefined: isUndefined, isFunction: isFunction, isPlainObject: isPlainObject, @@ -2992,6 +3040,8 @@ module.exports = { isArray: isArray, isEmptyObject: isEmptyObject, supportsErrorEvent: supportsErrorEvent, + supportsDOMError: supportsDOMError, + supportsDOMException: supportsDOMException, supportsFetch: supportsFetch, supportsReferrerPolicy: supportsReferrerPolicy, supportsPromiseRejectionEvent: supportsPromiseRejectionEvent, @@ -3051,10 +3101,14 @@ var ERROR_TYPES_RE = /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Ran function getLocationHref() { if (typeof document === 'undefined' || document.location == null) return ''; - return document.location.href; } +function getLocationOrigin() { + if (typeof document === 'undefined' || document.location == null) return ''; + return document.location.origin; +} + /** * TraceKit.report: cross-browser processing of unhandled exceptions * @@ -3462,6 +3516,44 @@ TraceKit.computeStackTrace = (function computeStackTraceWrapper() { element.func = UNKNOWN_FUNCTION; } + if (element.url && element.url.substr(0, 5) === 'blob:') { + // Special case for handling JavaScript loaded into a blob. + // We use a synchronous AJAX request here as a blob is already in + // memory - it's not making a network request. This will generate a warning + // in the browser console, but there has already been an error so that's not + // that much of an issue. + var xhr = new XMLHttpRequest(); + xhr.open('GET', element.url, false); + xhr.send(null); + + // If we failed to download the source, skip this patch + if (xhr.status === 200) { + var source = xhr.responseText || ''; + + // We trim the source down to the last 300 characters as sourceMappingURL is always at the end of the file. + // Why 300? To be in line with: https://github.com/getsentry/sentry/blob/4af29e8f2350e20c28a6933354e4f42437b4ba42/src/sentry/lang/javascript/processor.py#L164-L175 + source = source.slice(-300); + + // Now we dig out the source map URL + var sourceMaps = source.match(/\/\/# sourceMappingURL=(.*)$/); + + // If we don't find a source map comment or we find more than one, continue on to the next element. + if (sourceMaps) { + var sourceMapAddress = sourceMaps[1]; + + // Now we check to see if it's a relative URL. + // If it is, convert it to an absolute one. + if (sourceMapAddress.charAt(0) === '~') { + sourceMapAddress = getLocationOrigin() + sourceMapAddress.slice(1); + } + + // Now we strip the '.map' off of the end of the URL and update the + // element so that Sentry can match the map to the blob. + element.url = sourceMapAddress.slice(0, -4); + } + } + } + stack.push(element); } diff --git a/dist/angular,require/raven.min.js b/dist/angular,require/raven.min.js index d98192e8e9d6..7fc9e0bd0e29 100644 --- a/dist/angular,require/raven.min.js +++ b/dist/angular,require/raven.min.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.24.2 (540f32b) | github.com/getsentry/raven-js */ -!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.Raven=a()}}(function(){var a;return function b(a,c,d){function e(g,h){if(!c[g]){if(!a[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};a[g][0].call(k.exports,function(b){var c=a[g][1][b];return e(c?c:b)},k,k.exports,b,a,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;gthis.l.maxBreadcrumbs&&this.v.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.s.push([a,b]),this.o&&this.G(),this},setUserContext:function(a){return this.k.user=a,this},setExtraContext:function(a){return this.$("extra",a),this},setTagsContext:function(a){return this.$("tags",a),this},clearContext:function(){return this.k={},this},getContext:function(){return JSON.parse(h(this.k))},setEnvironment:function(a){return this.l.environment=a,this},setRelease:function(a){return this.l.release=a,this},setDataCallback:function(a){var b=this.l.dataCallback;return this.l.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.l.breadcrumbCallback;return this.l.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.l.shouldSendCallback;return this.l.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.l.transport=a,this},lastException:function(){return this.e},lastEventId:function(){return this.g},isSetup:function(){return!!this.b&&(!!this.h||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.A("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=P.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(Q){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.I;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.k.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.K(this.H(c)),h=Q.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(Q.head||Q.body).appendChild(h)}},M:function(){var a=this;this.n+=1,setTimeout(function(){a.n-=1})},_:function(a,b){var c,d;if(this.c){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),Q.createEvent?(c=Q.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=Q.createEventObject(),c.eventType=a);for(d in b)y(b,d)&&(c[d]=b[d]);if(Q.createEvent)Q.dispatchEvent(c);else try{Q.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},aa:function(a){var b=this;return function(c){if(b.ba=null,b.w!==c){b.w=c;var d;try{d=C(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ca:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.ba;g||a.aa("input")(c),clearTimeout(g),a.ba=setTimeout(function(){a.ba=null},b)}}},da:function(a,b){var c=F(this.x.href),d=F(b),e=F(a);this.y=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},D:function(){var a=this;a.ea=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.N?a.ea.apply(this.P,arguments):a.ea.apply(this,arguments)}},R:function(){this.ea&&(Function.prototype.toString=this.ea)},E:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.da(b.y,c+""),a.apply(this,arguments)}};G(history,"pushState",j,d),G(history,"replaceState",j,d)}if(c.console&&"console"in P&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};u(["debug","info","warn","error","log"],function(a,b){M(console,b,k)})}},S:function(){for(var a;this.u.length;){a=this.u.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},T:function(){for(var a in this.r)this.q[a]=this.r[a]},G:function(){var a=this;u(this.s,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},H:function(a){var b=O.exec(a),c={},d=7;try{for(;d--;)c[N[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.l.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},K:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},B:function(){this.n||this.W.apply(this,arguments)},W:function(a,b){var c=this.Y(a,b);this._("handle",{stackInfo:a,options:b}),this.ga(a.name,a.message,a.url,a.lineno,c,b)},Y:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(u(a.stack,function(b,e){var f=c.ha(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.v,0)}),this.k.user&&(a.user=this.k.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),a=this.qa(a),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||t(a[b]))&&delete a[b]}),q(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!t(a)&&(!q(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.na()?void this.A("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function B(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&j(b))for(c=b.split(/\s+/),f=0;fc?M(a,b-1):d}function N(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?T:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function O(a,b){function c(a){return k(a)?a.map(function(a){return c(a)}):i(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!k(b)||k(b)&&0===b.length)return a;var d,e=w(b),f="********";try{d=JSON.parse(P(a))}catch(g){return a}return c(d)}var P=a(9),Q="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},R=3,S=51200,T=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isUndefined:g,isFunction:h,isPlainObject:i,isString:j,isArray:k,isEmptyObject:l,supportsErrorEvent:m,supportsFetch:n,supportsReferrerPolicy:o,supportsPromiseRejectionEvent:p,wrappedCallback:q,each:r,objectMerge:s,truncate:u,objectFrozen:t,hasKey:v,joinRegExp:w,urlencode:x,uuid4:z,htmlTreeAsString:A,htmlElementAsString:B,isSameException:E,isSameStacktrace:F,parseUrl:y,fill:G,safeJoin:H,serializeException:M,serializeKeysForMessage:N,sanitize:O}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{9:9}],8:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}var e=a(7),f={collectWindowErrors:!0,debug:!1},g="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},h=[].slice,i="?",j=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;f.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function k(a,b){var c=null;if(!b||f.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(h.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,g,h){var l=null,m=e.isErrorEvent(h)?h.error:h,n=e.isErrorEvent(a)?a.message:a;if(v)f.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&e.isError(m))l=f.computeStackTrace(m),k(l,!0);else{var p,r={url:b,line:c,column:g},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(j);p&&(s=p[1],n=p[2])}r.func=i,l={name:s,message:n,url:d(),stack:[r]},k(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=g.onerror,g.onerror=l,r=!0)}function n(){r&&(g.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,k.apply(null,[a,!1].concat(b))}function p(a,b){var c=h.call(arguments,1);if(v){if(u===a)return;o()}var d=f.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),f.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,e,f=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,g=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,h=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,j=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,k=/\((\S*)(?::(\d+))(?::(\d+))\)/,l=a.stack.split("\n"),m=[],n=(/^(.*) is undefined$/.exec(a.message),0),o=l.length;n eval")>-1;q&&(b=j.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==n||c[5]||"undefined"==typeof a.columnNumber||(m[0].column=a.columnNumber+1),e={url:c[3],func:c[1]||i,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}!e.func&&e.line&&(e.func=i),m.push(e)}return m.length?{name:a.name,message:a.message,url:d(),stack:m}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=i),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,g){for(var h,j,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==e&&o!==f.report){if(j={url:null,func:i,line:null,column:null},o.name?j.func=o.name:(h=k.exec(o.toString()))&&(j.func=h[1]),"undefined"==typeof j.func)try{j.func=h.input.substring(0,h.input.indexOf("{"))}catch(p){}m[""+o]?n=!0:m[""+o]=!0,l.push(j)}g&&l.splice(0,g);var q={name:a.name,message:a.message,url:d(),stack:l};return b(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),q}function e(b,e){var g=null;e=null==e?0:+e;try{if(g=a(b))return g}catch(h){if(f.debug)throw h}try{if(g=c(b,e+1))return g}catch(h){if(f.debug)throw h}return{name:b.name,message:b.message,url:d()}}return e.augmentStackTraceWithInitialElement=b,e.computeStackTraceFromStackProp=a,e}(),b.exports=f}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{7:7}],9:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}],10:[function(a,b,c){function d(a,b){var c=(65535&a)+(65535&b),d=(a>>16)+(b>>16)+(c>>16);return d<<16|65535&c}function e(a,b){return a<>>32-b}function f(a,b,c,f,g,h){return d(e(d(d(b,a),d(f,h)),g),c)}function g(a,b,c,d,e,g,h){return f(b&c|~b&d,a,b,e,g,h)}function h(a,b,c,d,e,g,h){return f(b&d|c&~d,a,b,e,g,h)}function i(a,b,c,d,e,g,h){return f(b^c^d,a,b,e,g,h)}function j(a,b,c,d,e,g,h){return f(c^(b|~d),a,b,e,g,h)}function k(a,b){a[b>>5]|=128<>>9<<4)+14]=b;var c,e,f,k,l,m=1732584193,n=-271733879,o=-1732584194,p=271733878;for(c=0;c>5]>>>b%32&255);return c}function m(a){var b,c=[];for(c[(a.length>>2)-1]=void 0,b=0;b>5]|=(255&a.charCodeAt(b/8))<16&&(e=k(e,8*a.length)),c=0;c<16;c+=1)f[c]=909522486^e[c],g[c]=1549556828^e[c];return d=k(f.concat(m(b)),512+8*b.length),l(k(g.concat(d),640))}function p(a){var b,c,d="0123456789abcdef",e="";for(c=0;c>>4&15)+d.charAt(15&b);return e}function q(a){return unescape(encodeURIComponent(a))}function r(a){return n(q(a))}function s(a){return p(r(a))}function t(a,b){return o(q(a),q(b))}function u(a,b){return p(t(a,b))}function v(a,b,c){return b?c?t(b,a):u(b,a):c?r(a):s(a)}b.exports=v},{}]},{},[6,1,2])(6)}); +/*! Raven.js 3.25.0 (80dffad) | github.com/getsentry/raven-js */ +!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.Raven=a()}}(function(){var a;return function b(a,c,d){function e(g,h){if(!c[g]){if(!a[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};a[g][0].call(k.exports,function(b){var c=a[g][1][b];return e(c?c:b)},k,k.exports,b,a,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;gthis.l.maxBreadcrumbs&&this.v.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.s.push([a,b]),this.o&&this.G(),this},setUserContext:function(a){return this.k.user=a,this},setExtraContext:function(a){return this.$("extra",a),this},setTagsContext:function(a){return this.$("tags",a),this},clearContext:function(){return this.k={},this},getContext:function(){return JSON.parse(h(this.k))},setEnvironment:function(a){return this.l.environment=a,this},setRelease:function(a){return this.l.release=a,this},setDataCallback:function(a){var b=this.l.dataCallback;return this.l.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.l.breadcrumbCallback;return this.l.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.l.shouldSendCallback;return this.l.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.l.transport=a,this},lastException:function(){return this.e},lastEventId:function(){return this.g},isSetup:function(){return!!this.b&&(!!this.h||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.A("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=R.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(S){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.I;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.k.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.K(this.H(c)),h=S.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(S.head||S.body).appendChild(h)}},M:function(){var a=this;this.n+=1,setTimeout(function(){a.n-=1})},_:function(a,b){var c,d;if(this.c){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),S.createEvent?(c=S.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=S.createEventObject(),c.eventType=a);for(d in b)A(b,d)&&(c[d]=b[d]);if(S.createEvent)S.dispatchEvent(c);else try{S.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},aa:function(a){var b=this;return function(c){if(b.ba=null,b.w!==c){b.w=c;var d;try{d=E(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ca:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.ba;g||a.aa("input")(c),clearTimeout(g),a.ba=setTimeout(function(){a.ba=null},b)}}},da:function(a,b){var c=H(this.x.href),d=H(b),e=H(a);this.y=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},D:function(){var a=this;a.ea=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.N?a.ea.apply(this.P,arguments):a.ea.apply(this,arguments)}},R:function(){this.ea&&(Function.prototype.toString=this.ea)},E:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.da(b.y,c+""),a.apply(this,arguments)}};I(history,"pushState",j,d),I(history,"replaceState",j,d)}if(c.console&&"console"in R&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};w(["debug","info","warn","error","log"],function(a,b){O(console,b,k)})}},S:function(){for(var a;this.u.length;){a=this.u.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},T:function(){for(var a in this.r)this.q[a]=this.r[a]},G:function(){var a=this;w(this.s,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},H:function(a){var b=Q.exec(a),c={},d=7;try{for(;d--;)c[P[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.l.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},K:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},B:function(){this.n||this.W.apply(this,arguments)},W:function(a,b){var c=this.Y(a,b);this._("handle",{stackInfo:a,options:b}),this.ga(a.name,a.message,a.url,a.lineno,c,b)},Y:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(w(a.stack,function(b,e){var f=c.ha(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.v,0)}),this.k.user&&(a.user=this.k.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),a=this.qa(a),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||v(a[b]))&&delete a[b]}),s(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!v(a)&&(!s(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.na()?void this.A("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function F(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&l(b))for(c=b.split(/\s+/),f=0;fc?Q(a,b-1):d}function R(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?X:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function S(a,b){function c(a){return m(a)?a.map(function(a){return c(a)}):k(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!m(b)||m(b)&&0===b.length)return a;var d,e=A(b),f="********";try{d=JSON.parse(T(a))}catch(g){return a}return c(d)}var T=a(9),U="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},V=3,W=51200,X=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isDOMError:g,isDOMException:h,isUndefined:i,isFunction:j,isPlainObject:k,isString:l,isArray:m,isEmptyObject:n,supportsErrorEvent:o,supportsDOMError:p,supportsDOMException:q,supportsFetch:r,supportsReferrerPolicy:s,supportsPromiseRejectionEvent:t,wrappedCallback:u,each:v,objectMerge:w,truncate:y,objectFrozen:x,hasKey:z,joinRegExp:A,urlencode:B,uuid4:D,htmlTreeAsString:E,htmlElementAsString:F,isSameException:I,isSameStacktrace:J,parseUrl:C,fill:K,safeJoin:L,serializeException:Q,serializeKeysForMessage:R,sanitize:S}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{9:9}],8:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}function e(){return"undefined"==typeof document||null==document.location?"":document.location.origin}var f=a(7),g={collectWindowErrors:!0,debug:!1},h="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},i=[].slice,j="?",k=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;g.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function e(a,b){var c=null;if(!b||g.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(i.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,h,i){var l=null,m=f.isErrorEvent(i)?i.error:i,n=f.isErrorEvent(a)?a.message:a;if(v)g.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&f.isError(m))l=g.computeStackTrace(m),e(l,!0);else{var p,r={url:b,line:c,column:h},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(k);p&&(s=p[1],n=p[2])}r.func=j,l={name:s,message:n,url:d(),stack:[r]},e(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=h.onerror,h.onerror=l,r=!0)}function n(){r&&(h.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,e.apply(null,[a,!1].concat(b))}function p(a,b){var c=i.call(arguments,1);if(v){if(u===a)return;o()}var d=g.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),g.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,f,g=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,h=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,i=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,k=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,l=/\((\S*)(?::(\d+))(?::(\d+))\)/,m=a.stack.split("\n"),n=[],o=(/^(.*) is undefined$/.exec(a.message),0),p=m.length;o eval")>-1;r&&(b=k.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==o||c[5]||"undefined"==typeof a.columnNumber||(n[0].column=a.columnNumber+1),f={url:c[3],func:c[1]||j,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}if(!f.func&&f.line&&(f.func=j),f.url&&"blob:"===f.url.substr(0,5)){var s=new XMLHttpRequest;if(s.open("GET",f.url,!1),s.send(null),200===s.status){var t=s.responseText||"";t=t.slice(-300);var u=t.match(/\/\/# sourceMappingURL=(.*)$/);if(u){var v=u[1];"~"===v.charAt(0)&&(v=e()+v.slice(1)),f.url=v.slice(0,-4)}}}n.push(f)}return n.length?{name:a.name,message:a.message,url:d(),stack:n}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=j),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,e){for(var h,i,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==f&&o!==g.report){ +if(i={url:null,func:j,line:null,column:null},o.name?i.func=o.name:(h=k.exec(o.toString()))&&(i.func=h[1]),"undefined"==typeof i.func)try{i.func=h.input.substring(0,h.input.indexOf("{"))}catch(p){}m[""+o]?n=!0:m[""+o]=!0,l.push(i)}e&&l.splice(0,e);var q={name:a.name,message:a.message,url:d(),stack:l};return b(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),q}function f(b,e){var f=null;e=null==e?0:+e;try{if(f=a(b))return f}catch(h){if(g.debug)throw h}try{if(f=c(b,e+1))return f}catch(h){if(g.debug)throw h}return{name:b.name,message:b.message,url:d()}}return f.augmentStackTraceWithInitialElement=b,f.computeStackTraceFromStackProp=a,f}(),b.exports=g}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{7:7}],9:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}],10:[function(a,b,c){function d(a,b){var c=(65535&a)+(65535&b),d=(a>>16)+(b>>16)+(c>>16);return d<<16|65535&c}function e(a,b){return a<>>32-b}function f(a,b,c,f,g,h){return d(e(d(d(b,a),d(f,h)),g),c)}function g(a,b,c,d,e,g,h){return f(b&c|~b&d,a,b,e,g,h)}function h(a,b,c,d,e,g,h){return f(b&d|c&~d,a,b,e,g,h)}function i(a,b,c,d,e,g,h){return f(b^c^d,a,b,e,g,h)}function j(a,b,c,d,e,g,h){return f(c^(b|~d),a,b,e,g,h)}function k(a,b){a[b>>5]|=128<>>9<<4)+14]=b;var c,e,f,k,l,m=1732584193,n=-271733879,o=-1732584194,p=271733878;for(c=0;c>5]>>>b%32&255);return c}function m(a){var b,c=[];for(c[(a.length>>2)-1]=void 0,b=0;b>5]|=(255&a.charCodeAt(b/8))<16&&(e=k(e,8*a.length)),c=0;c<16;c+=1)f[c]=909522486^e[c],g[c]=1549556828^e[c];return d=k(f.concat(m(b)),512+8*b.length),l(k(g.concat(d),640))}function p(a){var b,c,d="0123456789abcdef",e="";for(c=0;c>>4&15)+d.charAt(15&b);return e}function q(a){return unescape(encodeURIComponent(a))}function r(a){return n(q(a))}function s(a){return p(r(a))}function t(a,b){return o(q(a),q(b))}function u(a,b){return p(t(a,b))}function v(a,b,c){return b?c?t(b,a):u(b,a):c?r(a):s(a)}b.exports=v},{}]},{},[6,1,2])(6)}); //# sourceMappingURL=raven.min.js.map \ No newline at end of file diff --git a/dist/angular,require/raven.min.js.map b/dist/angular,require/raven.min.js.map index 1e9c2f1d0a4b..3b1cf79dd2cf 100644 --- a/dist/angular,require/raven.min.js.map +++ b/dist/angular,require/raven.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","angularPlugin","angular","RavenProvider","$get","$window","ExceptionHandlerProvider","$provide","decorator","exceptionHandler","R","$delegate","ex","cause","captureException","extra","moduleName","provider","config","setDataCallback","wrappedCallback","data","_normalizeData","angularPattern","exception","values","matches","exec","value","type","message","angularDocs","substr","addPlugin","6","7","2","requirePlugin","wrap","deep","3","RavenConfigError","name","prototype","constructor","4","utils","wrapMethod","console","level","callback","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","msg","safeJoin","logger","Function","apply","5","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","sanitizeKeys","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isError","isObject","isPlainObject","isErrorEvent","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","sanitize","wrapConsoleMethod","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","dsn","options","_logDebug","globalOptions","key","setDSN","push","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","toString","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","context","func","undefined","_before","wrapped","_ignoreNextOnError","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","U","event","reason","unhandledPromiseRejection","C","_promiseRejectionHandler","bind","addEventListener","Q","removeEventListener","trimHeadFrames","error","captureMessage","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","V","currentOptions","exKeys","Object","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","M","setTimeout","_","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","aa","evtName","_keypressTimeout","target","category","ca","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","da","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","D","_originalFunctionToString","E","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","F","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","S","builtin","T","G","installer","concat","H","str","m","allowSecretKey","K","port","B","W","stackInfo","_triggerEvent","_processException","lineno","Y","frame","_normalizeFrame","in_app","ha","stackInfoUrl","normalized","filename","line","colno","column","function","ga","prefixedMessage","culprit","ia","request","Referer","breadcrumbs","_trimBreadcrumbs","ja","urlProp","urlProps","ka","httpData","userAgent","User-Agent","referrer","z","_backoffDuration","_backoffStart","na","oa","current","last","pa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Z","baseData","project","platform","_getHttpData","serverName","server_name","_sanitizeData","forEach","random","_sendProcessedPayload","qa","sa","ra","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","ta","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","onerror","open","setRequestHeader","send","ua","hash","evaluated","A","$","setUser","setReleaseContext","10","8","9","RavenConstructor","_Raven","noConflict","Client","what","supportsErrorEvent","ErrorEvent","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","sanitizeMask","safeInput","o_O","getLocationHref","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","y","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","charAt","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","string","raw"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file +{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","angularPlugin","angular","RavenProvider","$get","$window","ExceptionHandlerProvider","$provide","decorator","exceptionHandler","R","$delegate","ex","cause","captureException","extra","moduleName","provider","config","setDataCallback","wrappedCallback","data","_normalizeData","angularPattern","exception","values","matches","exec","value","type","message","angularDocs","substr","addPlugin","6","7","2","requirePlugin","wrap","deep","3","RavenConfigError","name","prototype","constructor","4","utils","wrapMethod","console","level","callback","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","msg","safeJoin","logger","Function","apply","5","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","sanitizeKeys","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isErrorEvent","isDOMError","isDOMException","isError","isObject","isPlainObject","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","sanitize","wrapConsoleMethod","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","dsn","options","_logDebug","globalOptions","key","setDSN","push","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","toString","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","context","func","undefined","_before","wrapped","_ignoreNextOnError","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","U","event","reason","unhandledPromiseRejection","C","_promiseRejectionHandler","bind","addEventListener","Q","removeEventListener","trimHeadFrames","error","captureMessage","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","V","currentOptions","exKeys","Object","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","M","setTimeout","_","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","aa","evtName","_keypressTimeout","target","category","ca","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","da","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","D","_originalFunctionToString","E","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","F","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","S","builtin","T","G","installer","concat","H","str","m","allowSecretKey","K","port","B","W","stackInfo","_triggerEvent","_processException","lineno","Y","frame","_normalizeFrame","in_app","ha","stackInfoUrl","normalized","filename","line","colno","column","function","ga","prefixedMessage","culprit","ia","request","Referer","breadcrumbs","_trimBreadcrumbs","ja","urlProp","urlProps","ka","httpData","userAgent","User-Agent","referrer","z","_backoffDuration","_backoffStart","na","oa","current","last","pa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Z","baseData","project","platform","_getHttpData","serverName","server_name","_sanitizeData","forEach","random","_sendProcessedPayload","qa","sa","ra","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","ta","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","onerror","open","setRequestHeader","send","ua","hash","evaluated","A","$","setUser","setReleaseContext","10","8","9","RavenConstructor","_Raven","noConflict","Client","what","supportsErrorEvent","ErrorEvent","supportsDOMError","DOMError","supportsDOMException","DOMException","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","sanitizeMask","safeInput","o_O","getLocationHref","getLocationOrigin","origin","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","responseText","sourceMaps","sourceMapAddress","charAt","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","y","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","string","raw"],"mappings":";CAYA,SAAUA,GAAG,GAAoB,gBAAVC,UAAoC,mBAATC,QAAsBA,OAAOD,QAAQD,QAAS,IAAmB,kBAATG,SAAqBA,OAAOC,IAAKD,UAAUH,OAAO,CAAC,GAAIK,EAAkCA,GAAb,mBAATC,QAAwBA,OAA+B,mBAATC,QAAwBA,OAA6B,mBAAPC,MAAsBA,KAAYC,KAAKJ,EAAEK,MAAQV,MAAO,WAAW,GAAIG,EAAsB,OAAO,SAAUQ,GAAEC,EAAEC,EAAEC,GAAG,QAASC,GAAEC,EAAEC,GAAG,IAAIJ,EAAEG,GAAG,CAAC,IAAIJ,EAAEI,GAAG,CAAC,GAAIE,GAAkB,kBAATC,UAAqBA,OAAQ,KAAIF,GAAGC,EAAE,MAAOA,GAAEF,GAAE,EAAI,IAAGI,EAAE,MAAOA,GAAEJ,GAAE,EAAI,IAAIhB,GAAE,GAAIqB,OAAM,uBAAuBL,EAAE,IAAK,MAAMhB,GAAEsB,KAAK,mBAAmBtB,EAAE,GAAIuB,GAAEV,EAAEG,IAAIf,WAAYW,GAAEI,GAAG,GAAGQ,KAAKD,EAAEtB,QAAQ,SAASU,GAAG,GAAIE,GAAED,EAAEI,GAAG,GAAGL,EAAG,OAAOI,GAAEF,EAAEA,EAAEF,IAAIY,EAAEA,EAAEtB,QAAQU,EAAEC,EAAEC,EAAEC,GAAG,MAAOD,GAAEG,GAAGf,QAAkD,IAAI,GAA1CmB,GAAkB,kBAATD,UAAqBA,QAAgBH,EAAE,EAAEA,EAAEF,EAAEW,OAAOT,IAAID,EAAED,EAAEE,GAAI,OAAOD,KAAKW,GAAG,SAASC,EAAQzB,EAAOD,GAYp0B,QAAS2B,GAAclB,EAAOmB,GAK5B,QAASC,KACPrB,KAAKsB,MACH,UACA,SAASC,GACP,MAAOtB,KAKb,QAASuB,GAAyBC,GAChCA,EAASC,UAAU,qBAAsB,QAAS,YAAaC,IAGjE,QAASA,GAAiBC,EAAGC,GAC3B,MAAO,UAASC,EAAIC,GAClBH,EAAEI,iBAAiBF,GACjBG,OAAQF,MAAOA,KAEjBF,EAAUC,EAAIC,IAtBlBX,EAAUA,GAAWvB,OAAOuB,QAEvBA,IAwBLA,EACG3B,OAAOyC,MACPC,SAAS,QAASd,GAClBe,QAAQ,WAAYZ,IAEvBvB,EAAMoC,gBACJC,EAAgB,SAASC,GACvB,MAAOpB,GAAcqB,EAAeD,OAxC1C,GAAID,GAAkBpB,EAAQ,GAAGoB,gBAG7BG,EAAiB,6DACjBP,EAAa,SAyCjBf,GAAcqB,EAAiB,SAASD,GAEtC,GAAIG,GAAYH,EAAKG,SACrB,IAAIA,EAAW,CACbA,EAAYA,EAAUC,OAAO,EAC7B,IAAIC,GAAUH,EAAeI,KAAKH,EAAUI,MAExCF,KAEFF,EAAUK,KAAOH,EAAQ,GACzBF,EAAUI,MAAQF,EAAQ,GAE1BL,EAAKS,QAAUN,EAAUK,KAAO,KAAOL,EAAUI,MAEjDP,EAAKN,MAAMgB,YAAcL,EAAQ,GAAGM,OAAO,EAAG,MAIlD,MAAOX,IAGTpB,EAAce,WAAaA,EAE3BzC,EAAOD,QAAU2B,EAEjBD,EAAQ,GAAGiC,UAAU1D,EAAOD,WACzB4D,EAAI,EAAEC,EAAI,IAAIC,GAAG,SAASpC,EAAQzB,EAAOD,GAO5C,QAAS+D,GAActD,GACC,kBAAXP,IAAyBA,EAAOC,MACzCE,OAAOH,OAASO,EAAMuD,MAAMC,MAAM,GAAQ/D,GAC1CG,OAAOa,QAAUT,EAAMuD,MAAMC,MAAM,GAAQvC,IAI/CzB,EAAOD,QAAU+D,EAEjBrC,EAAQ,GAAGiC,UAAU1D,EAAOD,WACzB4D,EAAI,IAAIM,GAAG,SAASxC,EAAQzB,EAAOD,GACtC,QAASmE,GAAiBX,GACxBhD,KAAK4D,KAAO,mBACZ5D,KAAKgD,QAAUA,EAEjBW,EAAiBE,UAAY,GAAIjD,OACjC+C,EAAiBE,UAAUC,YAAcH,EAEzClE,EAAOD,QAAUmE,OAEXI,GAAG,SAAS7C,EAAQzB,EAAOD,GACjC,GAAIwE,GAAQ9C,EAAQ,GAEhB+C,EAAa,SAASC,EAASC,EAAOC,GACxC,GAAIC,GAAuBH,EAAQC,GAC/BG,EAAkBJ,CAEtB,IAAMC,IAASD,GAAf,CAIA,GAAIK,GAAwB,SAAVJ,EAAmB,UAAYA,CAEjDD,GAAQC,GAAS,WACf,GAAIK,MAAUC,MAAM1D,KAAK2D,WAErBC,EAAMX,EAAMY,SAASJ,EAAM,KAC3BjC,GAAQ4B,MAAOI,EAAaM,OAAQ,UAAW5C,OAAQyC,UAAWF,GAExD,YAAVL,EACEK,EAAK,MAAO,IAEdG,EACE,sBAAwBX,EAAMY,SAASJ,EAAKC,MAAM,GAAI,MAAQ,kBAChElC,EAAKN,MAAMyC,UAAYF,EAAKC,MAAM,GAClCL,GAAYA,EAASO,EAAKpC,IAG5B6B,GAAYA,EAASO,EAAKpC,GAIxB8B,GAGFS,SAASjB,UAAUkB,MAAMhE,KAAKsD,EAAsBC,EAAiBE,KAK3E/E,GAAOD,SACLyE,WAAYA,KAGXZ,EAAI,IAAI2B,GAAG,SAAS9D,EAAQzB,EAAOD,IACtC,SAAWM,GA4CX,QAASmF,KACP,OAAQ,GAAIC,MAWd,QAASC,GAAqBC,EAAUhB,GACtC,MAAOiB,GAAWjB,GACd,SAAS7B,GACP,MAAO6B,GAAS7B,EAAM6C,IAExBhB,EAMN,QAASnE,KACPD,KAAKsF,IAA8B,gBAATC,QAAqBA,KAAKC,WAEpDxF,KAAKyF,GAAgBC,EAAYC,GACjC3F,KAAK4F,GAAiBF,EAAYG,GAClC7F,KAAK8F,EAAyB,KAC9B9F,KAAK+F,EAAY,KACjB/F,KAAKgG,EAAe,KACpBhG,KAAKiG,EAAgB,KACrBjG,KAAKkG,EAAa,KAClBlG,KAAKmG,EAAiB,KACtBnG,KAAKoG,KACLpG,KAAKqG,GAEHC,QAASC,EAAQC,gBAAkBD,EAAQC,eAAeC,GAC1D5B,OAAQ,aACR6B,gBACAC,cACAC,iBACAC,gBACAC,QAAS,KACTC,qBAAqB,EACrBC,4BAA4B,EAC5BC,iBAAkB,EAElBC,aAAc,IACdC,gBAAiB,GACjBC,iBAAiB,EACjBC,YAAY,EACZC,WAAY,EACZC,iBAEFvH,KAAKwH,GACHC,OAAQ,OACRC,WAAW,EAKXC,eAAgBC,IAA2B,SAAW,IAExD5H,KAAK6H,EAAiB,EACtB7H,KAAK8H,GAAoB,EACzB9H,KAAK+H,EAAgCnH,MAAMuG,gBAG3CnH,KAAKgI,EAAmBzB,EAAQrC,YAChClE,KAAKiI,KACLjI,KAAKkI,KACLlI,KAAKmI,EAAalD,IAClBjF,KAAKoI,KACLpI,KAAKqI,KACLrI,KAAKsI,EAAqB,KAE1BtI,KAAKuI,EAAYhC,EAAQiC,SACzBxI,KAAKyI,EAAYzI,KAAKuI,GAAavI,KAAKuI,EAAUG,KAClD1I,KAAK2I,GAGL,KAAK,GAAIlB,KAAUzH,MAAKgI,EACtBhI,KAAKiI,EAAwBR,GAAUzH,KAAKgI,EAAiBP,GA5HjE,GAAImB,GAAW1H,EAAQ,GACnBsE,EAAYtE,EAAQ,GACpB2H,EAAM3H,EAAQ,IACdyC,EAAmBzC,EAAQ,GAE3B8C,EAAQ9C,EAAQ,GAChB4H,EAAe9E,EAAM8E,aACrBC,EAAa/E,EAAM+E,WACnBC,EAAiBhF,EAAMgF,eACvBC,EAAUjF,EAAMiF,QAChBC,EAAWlF,EAAMkF,SACjBC,EAAgBnF,EAAMmF,cACtBzD,EAAc1B,EAAM0B,YACpBL,EAAarB,EAAMqB,WACnB+D,EAAWpF,EAAMoF,SACjBC,EAAUrF,EAAMqF,QAChBC,EAAgBtF,EAAMsF,cACtBC,EAAOvF,EAAMuF,KACbC,EAAcxF,EAAMwF,YACpBC,EAAWzF,EAAMyF,SACjBC,EAAe1F,EAAM0F,aACrBC,EAAS3F,EAAM2F,OACfC,EAAa5F,EAAM4F,WACnBC,EAAY7F,EAAM6F,UAClBC,EAAQ9F,EAAM8F,MACdC,EAAmB/F,EAAM+F,iBACzBC,EAAkBhG,EAAMgG,gBACxBC,EAAmBjG,EAAMiG,iBACzBC,EAAWlG,EAAMkG,SACjBC,EAAOnG,EAAMmG,KACbC,EAAgBpG,EAAMoG,cACtBxC,EAAyB5D,EAAM4D,uBAC/ByC,EAA0BrG,EAAMqG,wBAChCC,EAAqBtG,EAAMsG,mBAC3BC,EAAWvG,EAAMuG,SAEjBC,EAAoBtJ,EAAQ,GAAG+C,WAE/BwG,EAAU,2CAA2CC,MAAM,KAC7DC,EAAa,gEAOXpE,EACgB,mBAAX1G,QACHA,OACkB,mBAAXC,GAAyBA,EAAyB,mBAATC,MAAuBA,QACzE4F,EAAYY,EAAQqE,SACpB/E,EAAaU,EAAQsE,SAmFzB5K,GAAM4D,WAKJiH,QAAS,SAETC,OAAO,EAEPnC,SAAUA,EASVxG,OAAQ,SAAS4I,EAAKC,GACpB,GAAIlL,GAAOC,IAEX,IAAID,EAAKkG,EAEP,MADAjG,MAAKkL,EAAU,QAAS,4CACjBnL,CAET,KAAKiL,EAAK,MAAOjL,EAEjB,IAAIoL,GAAgBpL,EAAKsG,CAGrB4E,IACF1B,EAAK0B,EAAS,SAASG,EAAKtI,GAEd,SAARsI,GAA0B,UAARA,GAA2B,SAARA,EACvCrL,EAAKqG,EAAegF,GAAOtI,EAE3BqI,EAAcC,GAAOtI,IAK3B/C,EAAKsL,OAAOL,GAIZG,EAAczE,aAAa4E,KAAK,qBAChCH,EAAczE,aAAa4E,KAAK,iDAGhCH,EAAczE,aAAekD,EAAWuB,EAAczE,cACtDyE,EAAcxE,aAAawE,EAAcxE,WAAW3F,QAChD4I,EAAWuB,EAAcxE,YAE7BwE,EAAcvE,gBAAgBuE,EAAcvE,cAAc5F,QACtD4I,EAAWuB,EAAcvE,eAE7BuE,EAActE,aAAe+C,EAAWuB,EAActE,cACtDsE,EAAcI,eAAiBC,KAAKC,IAClC,EACAD,KAAKE,IAAIP,EAAcI,gBAAkB,IAAK,KAGhD,IAAII,IACFC,KAAK,EACL1H,SAAS,EACT2H,KAAK,EACLrD,UAAU,EACVsD,QAAQ,GAGN1E,EAAkB+D,EAAc/D,eACM,wBAAnC2E,SAAShL,KAAKqG,GACnBA,EAAkBoC,EAAYmC,EAAwBvE,GAC7CA,KAAoB,IAC7BA,EAAkBuE,GAEpBR,EAAc/D,gBAAkBA,CAEhC,IAAI4E,IACFC,UAAU,GAGR5E,EAAa8D,EAAc9D,UAW/B,OAVqC,uBAA9B0E,SAAShL,KAAKsG,GACnBA,EAAamC,EAAYwC,EAAoB3E,GACpCA,KAAe,IACxBA,EAAa2E,GAEfb,EAAc9D,WAAaA,EAE3BuB,EAAS7B,sBAAwBoE,EAAcpE,oBAGxChH,GAWTmM,QAAS,WACP,GAAInM,GAAOC,IAyBX,OAxBID,GAAKoM,YAAcpM,EAAK+H,IAC1Bc,EAASwD,OAAOC,UAAU,WACxBtM,EAAKuM,EAAwBvH,MAAMhF,EAAM2E,aAGvC3E,EAAKsG,EAAeW,4BACtBjH,EAAKwM,IAGPxM,EAAKyM,IAEDzM,EAAKsG,EAAegB,YAActH,EAAKsG,EAAegB,WAAW4E,UACnElM,EAAK0M,IAGH1M,EAAKsG,EAAee,iBAAiBrH,EAAK2M,IAG9C3M,EAAK4M,IAEL5M,EAAK+H,GAAoB,GAG3BlH,MAAMuG,gBAAkBpH,EAAKsG,EAAec,gBACrCnH,MAQTqL,OAAQ,SAASL,GACf,GAAIjL,GAAOC,KACT4M,EAAM7M,EAAK8M,EAAU7B,GACrB8B,EAAYF,EAAIG,KAAKC,YAAY,KACjCD,EAAOH,EAAIG,KAAK7J,OAAO,EAAG4J,EAE5B/M,GAAKkN,EAAOjC,EACZjL,EAAKmG,EAAa0G,EAAIM,KACtBnN,EAAKoN,EAAgBP,EAAIQ,MAAQR,EAAIQ,KAAKlK,OAAO,GACjDnD,EAAKoG,EAAiByG,EAAIG,KAAK7J,OAAO4J,EAAY,GAElD/M,EAAKkG,EAAgBlG,EAAKsN,EAAiBT,GAE3C7M,EAAKuN,EACHvN,EAAKkG,EAAgB,IAAM8G,EAAO,OAAShN,EAAKoG,EAAiB,UAInEnG,KAAK2I,KAWP4E,QAAS,SAAStC,EAASuC,EAAMhJ,GAO/B,MANIa,GAAW4F,KACbzG,EAAOgJ,MACPA,EAAOvC,EACPA,EAAUwC,QAGLzN,KAAKwD,KAAKyH,EAASuC,GAAMzI,MAAM/E,KAAMwE,IAW9ChB,KAAM,SAASyH,EAASuC,EAAME,GAqC5B,QAASC,KACP,GAAInJ,MACF7D,EAAI+D,UAAU1D,OACdyC,GAAQwH,GAAYA,GAAWA,EAAQxH,QAAS,CAQlD,KANIiK,GAAWrI,EAAWqI,IACxBA,EAAQ3I,MAAM/E,KAAM0E,WAKf/D,KAAK6D,EAAK7D,GAAK8C,EAAO1D,EAAKyD,KAAKyH,EAASvG,UAAU/D,IAAM+D,UAAU/D,EAE1E,KAKE,MAAO6M,GAAKzI,MAAM/E,KAAMwE,GACxB,MAAOtE,GAGP,KAFAH,GAAK6N,IACL7N,EAAKiC,iBAAiB9B,EAAG+K,GACnB/K,GA1DV,GAAIH,GAAOC,IAGX,IAAI0F,EAAY8H,KAAUnI,EAAW4F,GACnC,MAAOA,EAWT,IAPI5F,EAAW4F,KACbuC,EAAOvC,EACPA,EAAUwC,SAKPpI,EAAWmI,GACd,MAAOA,EAIT,KACE,GAAIA,EAAKK,EACP,MAAOL,EAIT,IAAIA,EAAKM,EACP,MAAON,GAAKM,EAEd,MAAO5N,GAIP,MAAOsN,GA8BT,IAAK,GAAIO,KAAYP,GACf7D,EAAO6D,EAAMO,KACfJ,EAAQI,GAAYP,EAAKO,GAW7B,OARAJ,GAAQ9J,UAAY2J,EAAK3J,UAEzB2J,EAAKM,EAAoBH,EAGzBA,EAAQE,GAAY,EACpBF,EAAQK,EAAWR,EAEZG,GAQTM,UAAW,WAWT,MAVArF,GAASwD,OAAO6B,YAEhBjO,KAAKkO,IACLlO,KAAKmO,IACLnO,KAAKoO,IACLpO,KAAKqO,IAELzN,MAAMuG,gBAAkBnH,KAAK+H,EAC7B/H,KAAK8H,GAAoB,EAElB9H,MAWTsO,EAA0B,SAASC,GACjCvO,KAAKkL,EAAU,QAAS,4CAA6CqD,GACrEvO,KAAKgC,iBAAiBuM,EAAMC,QAC1BvM,OACEwM,2BAA2B,MAUjCC,EAAgC,WAI9B,MAHA1O,MAAK2O,EAA2B3O,KAAK2O,EAAyBC,KAAK5O,MACnEuG,EAAQsI,kBACNtI,EAAQsI,iBAAiB,qBAAsB7O,KAAK2O,GAC/C3O,MAQT8O,EAAgC,WAG9B,MAFAvI,GAAQwI,qBACNxI,EAAQwI,oBAAoB,qBAAsB/O,KAAK2O,GAClD3O,MAUTgC,iBAAkB,SAASF,EAAImJ,GAG7B,GAFAA,EAAUzB,GAAawF,eAAgB,GAAI/D,EAAUA,MAEjDnC,EAAahH,IAAOA,EAAGmN,MAEzBnN,EAAKA,EAAGmN,UACH,CAAA,GAAIlG,EAAWjH,IAAOkH,EAAelH,GAAK,CAK/C,GAAI8B,GAAO9B,EAAG8B,OAASmF,EAAWjH,GAAM,WAAa,gBACjDkB,EAAUlB,EAAGkB,QAAUY,EAAO,KAAO9B,EAAGkB,QAAUY,CAEtD,OAAO5D,MAAKkP,eACVlM,EACAwG,EAAYyB,GAGVkE,YAAY,EACZH,eAAgB/D,EAAQ+D,eAAiB,KAGxC,GAAI/F,EAAQnH,GAEjBA,EAAKA,MACA,CAAA,IAAIqH,EAAcrH,GAavB,MAAO9B,MAAKkP,eACVpN,EACA0H,EAAYyB,GACVkE,YAAY,EACZH,eAAgB/D,EAAQ+D,eAAiB,IAb7C/D,GAAUjL,KAAKoP,EAA2CnE,EAASnJ,GACnEA,EAAK,GAAIlB,OAAMqK,EAAQjI,UAkBzBhD,KAAK8F,EAAyBhE,CAO9B,KACE,GAAIuN,GAAQzG,EAAS0G,kBAAkBxN,EACvC9B,MAAKuP,EAAiBF,EAAOpE,GAC7B,MAAOuE,GACP,GAAI1N,IAAO0N,EACT,KAAMA,GAIV,MAAOxP,OAGTyP,EAA4C,SAASC,EAAgB5N,GACnE,GAAI6N,GAASC,OAAOC,KAAK/N,GAAIgO,OACzB7E,EAAUzB,EAAYkG,GACxB1M,QACE,2CAA6CqH,EAAwBsF,GACvEI,aAAclH,EAAI8G,IAClB1N,MAAOyN,EAAezN,WAIxB,OAFAgJ,GAAQhJ,MAAM+N,EAAiB1F,EAAmBxI,GAE3CmJ,GAUTiE,eAAgB,SAASvK,EAAKsG,GAI5B,IACIjL,KAAKqG,EAAeK,aAAauJ,OACnCjQ,KAAKqG,EAAeK,aAAauJ,KAAKtL,GAFxC,CAOAsG,EAAUA,MACVtG,GAAY,EAEZ,IAOI7C,GAPAS,EAAOiH,GAEPxG,QAAS2B,GAEXsG,EAQF,KACE,KAAM,IAAIrK,OAAM+D,GAChB,MAAO6K,GACP1N,EAAK0N,EAIP1N,EAAG8B,KAAO,IACV,IAAIyL,GAAQzG,EAAS0G,kBAAkBxN,GAGnCoO,EAAc7G,EAAQgG,EAAMA,QAAUA,EAAMA,MAAM,EAKlDa,IAAoC,2BAArBA,EAAY1C,OAC7B0C,EAAcb,EAAMA,MAAM,GAG5B,IAAIc,GAAWD,GAAeA,EAAYE,KAAQ,EAElD,MACIpQ,KAAKqG,EAAeM,WAAWsJ,OACjCjQ,KAAKqG,EAAeM,WAAWsJ,KAAKE,OAMlCnQ,KAAKqG,EAAeO,cAAcqJ,MACnCjQ,KAAKqG,EAAeO,cAAcqJ,KAAKE,IAF1C,CAOA,GAAInQ,KAAKqG,EAAe8I,YAAelE,GAAWA,EAAQkE,WAAa,CAErE5M,EAAKwN,YAAkC,MAApBxN,EAAKwN,YAAsBpL,EAAMpC,EAAKwN,YAEzD9E,EAAUzB,GAENwF,eAAgB,GAElB/D,GAMFA,EAAQ+D,gBAAkB,CAE1B,IAAIqB,GAASrQ,KAAKsQ,EAAejB,EAAOpE,EACxC1I,GAAK4M,YAEHkB,OAAQA,EAAOE,WAcnB,MATIhO,GAAKwN,cACPxN,EAAKwN,YAAc1G,EAAQ9G,EAAKwN,aAC5BxN,EAAKwN,aACJxN,EAAKwN,cAIZ/P,KAAKwQ,EAAMjO,GAEJvC,QAGTyQ,kBAAmB,SAASC,GAC1B,GAAIC,GAAQnH,GAERoH,UAAW3L,IAAQ,KAErByL,EAGF,IAAIrL,EAAWrF,KAAKqG,EAAewK,oBAAqB,CACtD,GAAIC,GAAS9Q,KAAKqG,EAAewK,mBAAmBF,EAEpD,IAAIzH,EAAS4H,KAAYxH,EAAcwH,GACrCH,EAAQG,MACH,IAAIA,KAAW,EACpB,MAAO9Q,MAQX,MAJAA,MAAKqI,EAAaiD,KAAKqF,GACnB3Q,KAAKqI,EAAarH,OAAShB,KAAKqG,EAAekF,gBACjDvL,KAAKqI,EAAa0I,QAEb/Q,MAGTmD,UAAW,SAAS6N,GAClB,GAAIC,MAAgBxM,MAAM1D,KAAK2D,UAAW,EAO1C,OALA1E,MAAKkI,EAASoD,MAAM0F,EAAQC,IACxBjR,KAAK8H,GACP9H,KAAK2M,IAGA3M,MASTkR,eAAgB,SAAShE,GAIvB,MAFAlN,MAAKoG,EAAe8G,KAAOA,EAEpBlN,MASTmR,gBAAiB,SAASlP,GAGxB,MAFAjC,MAAKoR,EAAc,QAASnP,GAErBjC,MASTqR,eAAgB,SAASC,GAGvB,MAFAtR,MAAKoR,EAAc,OAAQE,GAEpBtR,MAQTuR,aAAc,WAGZ,MAFAvR,MAAKoG,KAEEpG,MAQTwR,WAAY,WAEV,MAAOjM,MAAKkM,MAAMjM,EAAUxF,KAAKoG,KASnCsL,eAAgB,SAASC,GAGvB,MAFA3R,MAAKqG,EAAesL,YAAcA,EAE3B3R,MAST4R,WAAY,SAAStL,GAGnB,MAFAtG,MAAKqG,EAAeC,QAAUA,EAEvBtG,MAUTqC,gBAAiB,SAAS+B,GACxB,GAAIgB,GAAWpF,KAAKqG,EAAewL,YAEnC,OADA7R,MAAKqG,EAAewL,aAAe1M,EAAqBC,EAAUhB,GAC3DpE,MAUT8R,sBAAuB,SAAS1N,GAC9B,GAAIgB,GAAWpF,KAAKqG,EAAewK,kBAEnC,OADA7Q,MAAKqG,EAAewK,mBAAqB1L,EAAqBC,EAAUhB,GACjEpE,MAUT+R,sBAAuB,SAAS3N,GAC9B,GAAIgB,GAAWpF,KAAKqG,EAAe2L,kBAEnC,OADAhS,MAAKqG,EAAe2L,mBAAqB7M,EAAqBC,EAAUhB,GACjEpE,MAYTiS,aAAc,SAASC,GAGrB,MAFAlS,MAAKqG,EAAe6L,UAAYA,EAEzBlS,MAQTmS,cAAe,WACb,MAAOnS,MAAK8F,GAQdsM,YAAa,WACX,MAAOpS,MAAKgG,GAQdmG,QAAS,WACP,QAAKnM,KAAKsF,MACLtF,KAAKiG,IACHjG,KAAKqS,0BACRrS,KAAKqS,yBAA0B,EAC/BrS,KAAKkL,EAAU,QAAS,2CAEnB,KAKXoH,UAAW,WAIT,GAAIC,GAAchM,EAAQgM,WACtBA,IACFvS,KAAKoC,OAAOmQ,EAAYvH,IAAKuH,EAAYnQ,QAAQ8J,WAIrDsG,iBAAkB,SAASvH,GACzB,GACGtF,EADH,CAKAsF,EAAUA,KAEV,IAAImH,GAAcnH,EAAQwH,SAAWzS,KAAKoS,aAC1C,KAAKA,EACH,KAAM,IAAIzO,GAAiB,kBAG7B,IAAIqH,GAAMC,EAAQD,KAAOhL,KAAKiN,CAC9B,KAAKjC,EACH,KAAM,IAAIrH,GAAiB,cAG7B,IAAI+O,GAASC,mBACTC,EAAK,EACTA,IAAM,YAAcF,EAAON,GAC3BQ,GAAM,QAAUF,EAAO1H,EAEvB,IAAIkC,GAAOjC,EAAQiC,MAAQlN,KAAKoG,EAAe8G,IAC3CA,KACEA,EAAKtJ,OAAMgP,GAAM,SAAWF,EAAOxF,EAAKtJ,OACxCsJ,EAAK2F,QAAOD,GAAM,UAAYF,EAAOxF,EAAK2F,QAGhD,IAAIC,GAAe9S,KAAKqN,EAAiBrN,KAAK6M,EAAU7B,IAEpD+H,EAASpN,EAAUqN,cAAc,SACrCD,GAAOE,OAAQ,EACfF,EAAOG,IAAMJ,EAAe,yBAA2BF,GACtDjN,EAAUwN,MAAQxN,EAAUyN,MAAMC,YAAYN,KAIjDO,EAAoB,WAClB,GAAIvT,GAAOC,IACXA,MAAK6H,GAAkB,EACvB0L,WAAW,WAETxT,EAAK8H,GAAkB,KAI3B2L,EAAe,SAASC,EAAWxI,GAEjC,GAAIyI,GAAKtI,CAET,IAAKpL,KAAKyF,EAAV,CAEAwF,EAAUA,MAEVwI,EAAY,QAAUA,EAAUvQ,OAAO,EAAG,GAAGyQ,cAAgBF,EAAUvQ,OAAO,GAE1EyC,EAAUiO,aACZF,EAAM/N,EAAUiO,YAAY,cAC5BF,EAAIG,UAAUJ,GAAW,GAAM,KAE/BC,EAAM/N,EAAUmO,oBAChBJ,EAAID,UAAYA,EAGlB,KAAKrI,IAAOH,GACNtB,EAAOsB,EAASG,KAClBsI,EAAItI,GAAOH,EAAQG,GAGvB,IAAIzF,EAAUiO,YAEZjO,EAAUoO,cAAcL,OAIxB,KACE/N,EAAUqO,UAAU,KAAON,EAAID,UAAUQ,cAAeP,GACxD,MAAOxT,OAYbgU,GAAyB,SAASC,GAChC,GAAIpU,GAAOC,IACX,OAAO,UAAS0T,GASd,GALA3T,EAAKqU,GAAmB,KAKpBrU,EAAKuI,IAAuBoL,EAAhC,CAEA3T,EAAKuI,EAAqBoL,CAM1B,IAAIW,EACJ,KACEA,EAAStK,EAAiB2J,EAAIW,QAC9B,MAAOnU,GACPmU,EAAS,YAGXtU,EAAK0Q,mBACH6D,SAAU,MAAQH,EAClBnR,QAASqR,OAUfE,GAAuB,WACrB,GAAIxU,GAAOC,KACTwU,EAAmB,GAKrB,OAAO,UAASd,GACd,GAAIW,EACJ,KACEA,EAASX,EAAIW,OACb,MAAOnU,GAGP,OAEF,GAAIuU,GAAUJ,GAAUA,EAAOI,OAK/B,IACGA,IACY,UAAZA,GAAmC,aAAZA,GAA2BJ,EAAOK,mBAF5D,CAQA,GAAIC,GAAU5U,EAAKqU,EACdO,IACH5U,EAAK6U,GAAwB,SAASlB,GAExCmB,aAAaF,GACb5U,EAAKqU,GAAmBb,WAAW,WACjCxT,EAAKqU,GAAmB,MACvBI,MAUPM,GAAmB,SAASC,EAAMC,GAChC,GAAIC,GAAY/K,EAASlK,KAAKuI,EAAUG,MACpCwM,EAAWhL,EAAS8K,GACpBG,EAAajL,EAAS6K,EAK1B/U,MAAKyI,EAAYuM,EAIbC,EAAUG,WAAaF,EAASE,UAAYH,EAAUI,OAASH,EAASG,OAC1EL,EAAKE,EAASI,UACZL,EAAUG,WAAaD,EAAWC,UAAYH,EAAUI,OAASF,EAAWE,OAC9EN,EAAOI,EAAWG,UAEpBtV,KAAKyQ,mBACH6D,SAAU,aACV/R,MACEyS,GAAIA,EACJD,KAAMA,MAKZQ,EAAwB,WACtB,GAAIxV,GAAOC,IACXD,GAAKyV,GAA4B1Q,SAASjB,UAAUkI,SAEpDjH,SAASjB,UAAUkI,SAAW,WAC5B,MAAoB,kBAAT/L,OAAuBA,KAAK6N,EAC9B9N,EAAKyV,GAA0BzQ,MAAM/E,KAAKgO,EAAUtJ,WAEtD3E,EAAKyV,GAA0BzQ,MAAM/E,KAAM0E,aAItD9C,EAA0B,WACpB5B,KAAKwV,KAEP1Q,SAASjB,UAAUkI,SAAW/L,KAAKwV,KAQvCC,EAAqB,WAKnB,QAASC,GAAWC,GAClB,MAAO,UAASC,EAAIzV,GAKlB,IAAK,GADDqE,GAAO,GAAIqR,OAAMnR,UAAU1D,QACtBL,EAAI,EAAGA,EAAI6D,EAAKxD,SAAUL,EACjC6D,EAAK7D,GAAK+D,UAAU/D,EAEtB,IAAImV,GAAmBtR,EAAK,EAQ5B,OAPIa,GAAWyQ,KACbtR,EAAK,GAAKzE,EAAKyD,KAAKsS,IAMlBH,EAAK5Q,MACA4Q,EAAK5Q,MAAM/E,KAAMwE,GAEjBmR,EAAKnR,EAAK,GAAIA,EAAK,KAOhC,QAASuR,GAAgBjW,GACvB,GAAIkW,GAAQzP,EAAQzG,IAAWyG,EAAQzG,GAAQ+D,SAC3CmS,IAASA,EAAMC,gBAAkBD,EAAMC,eAAe,sBACxD9L,EACE6L,EACA,mBACA,SAASL,GACP,MAAO,UAASxB,EAASyB,EAAIM,EAASC,GAEpC,IACMP,GAAMA,EAAGQ,cACXR,EAAGQ,YAAcrW,EAAKyD,KAAKoS,EAAGQ,cAEhC,MAAOC,IAMT,GAAIC,GAAQC,EAAcC,CA6B1B,OA1BEpP,IACAA,EAAgByE,MACJ,gBAAX/L,GAAuC,SAAXA,KAI7ByW,EAAexW,EAAK6U,GAAwB,SAC5C4B,EAAkBzW,EAAK0W,KACvBH,EAAS,SAAS5C,GAIhB,GAAKA,EAAL,CAEA,GAAID,EACJ,KACEA,EAAYC,EAAI3Q,KAChB,MAAO7C,GAGP,OAEF,MAAkB,UAAduT,EAA8B8C,EAAa7C,GACxB,aAAdD,EAAiC+C,EAAgB9C,GAArD,UAGFiC,EAAK5U,KACVf,KACAmU,EACApU,EAAKyD,KAAKoS,EAAInI,OAAW6I,GACzBJ,EACAC,KAINO,GAEFvM,EACE6L,EACA,sBACA,SAASL,GACP,MAAO,UAASjC,EAAKkC,EAAIM,EAASC,GAChC,IACEP,EAAKA,IAAOA,EAAG9H,EAAoB8H,EAAG9H,EAAoB8H,GAC1D,MAAO1V,IAGT,MAAOyV,GAAK5U,KAAKf,KAAM0T,EAAKkC,EAAIM,EAASC,KAG7CO,IAvGN,GAAI3W,GAAOC,KAEP0W,EAAkB3W,EAAKqI,EA2BvBhB,EAAkBpH,KAAKqG,EAAee,eA+E1C+C,GAAK5D,EAAS,aAAcmP,EAAYgB,GACxCvM,EAAK5D,EAAS,cAAemP,EAAYgB,GACrCnQ,EAAQoQ,uBACVxM,EACE5D,EACA,wBACA,SAASoP,GACP,MAAO,UAASiB,GACd,MAAOjB,GAAK5V,EAAKyD,KAAKoT,MAG1BF,EAqCJ,KAAK,GA/BDG,IACF,cACA,SACA,OACA,mBACA,iBACA,oBACA,kBACA,cACA,aACA,qBACA,cACA,aACA,iBACA,eACA,kBACA,cACA,cACA,eACA,qBACA,SACA,YACA,eACA,gBACA,YACA,kBACA,SACA,iBACA,4BACA,wBAEOlW,EAAI,EAAGA,EAAIkW,EAAa7V,OAAQL,IACvCoV,EAAgBc,EAAalW,KAajCmW,EAAwB,WAMtB,QAASC,GAASC,EAAMpL,GAClBoL,IAAQpL,IAAOvG,EAAWuG,EAAIoL,KAChC7M,EAAKyB,EAAKoL,EAAM,SAASrB,GACvB,MAAO5V,GAAKyD,KAAKmS,KARvB,GAAI5V,GAAOC,KACPoH,EAAkBpH,KAAKqG,EAAee,gBAEtCsP,EAAkB3W,EAAKqI,CAU3B,IAAIhB,EAAgBwE,KAAO,kBAAoBrF,GAAS,CACtD,GAAI0Q,GAAW1Q,EAAQ2Q,gBAAkB3Q,EAAQ2Q,eAAerT,SAChEsG,GACE8M,EACA,OACA,SAASE,GACP,MAAO,UAAS1P,EAAQ2I,GAYtB,MARIhH,GAASgH,IAAQA,EAAIgH,QAAQrX,EAAKmG,UACpClG,KAAKqX,IACH5P,OAAQA,EACR2I,IAAKA,EACLkH,YAAa,OAIVH,EAASpS,MAAM/E,KAAM0E,aAGhCgS,GAGFvM,EACE8M,EACA,OACA,SAASM,GACP,MAAO,YAIL,QAASC,KACP,GAAI5L,EAAIyL,IAAkC,IAAnBzL,EAAI6L,WAAkB,CAC3C,IAGE7L,EAAIyL,GAAYC,YAAc1L,EAAI8L,OAClC,MAAOxX,IAITH,EAAK0Q,mBACH1N,KAAM,OACNuR,SAAU,MACV/R,KAAMqJ,EAAIyL,MAMhB,IAAK,GArBDzL,GAAM5L,KAoBN2X,GAAS,SAAU,UAAW,cACzBC,EAAI,EAAGA,EAAID,EAAM3W,OAAQ4W,IAChCb,EAASY,EAAMC,GAAIhM,EAiBrB,OAdI,sBAAwBA,IAAOvG,EAAWuG,EAAIiM,oBAChD1N,EACEyB,EACA,qBACA,SAAS+J,GACP,MAAO5V,GAAKyD,KAAKmS,EAAMlI,OAAW+J,KAMtC5L,EAAIiM,mBAAqBL,EAGpBD,EAASxS,MAAM/E,KAAM0E,aAGhCgS,GAIAtP,EAAgBwE,KAAOxB,KACzBD,EACE5D,EACA,QACA,SAASuR,GACP,MAAO,YAKL,IAAK,GADDtT,GAAO,GAAIqR,OAAMnR,UAAU1D,QACtBL,EAAI,EAAGA,EAAI6D,EAAKxD,SAAUL,EACjC6D,EAAK7D,GAAK+D,UAAU/D,EAGtB,IAEIyP,GAFA2H,EAAavT,EAAK,GAClBiD,EAAS,KAeb,IAZ0B,gBAAfsQ,GACT3H,EAAM2H,EACG,WAAaxR,IAAWwR,YAAsBxR,GAAQyR,SAC/D5H,EAAM2H,EAAW3H,IACb2H,EAAWtQ,SACbA,EAASsQ,EAAWtQ,SAGtB2I,EAAM,GAAK2H,EAIT3H,EAAIgH,QAAQrX,EAAKmG,QACnB,MAAO4R,GAAU/S,MAAM/E,KAAMwE,EAG3BA,GAAK,IAAMA,EAAK,GAAGiD,SACrBA,EAASjD,EAAK,GAAGiD,OAGnB,IAAIwQ,IACFxQ,OAAQA,EACR2I,IAAKA,EACLkH,YAAa,KAGf,OAAOQ,GACJ/S,MAAM/E,KAAMwE,GACZ0T,KAAK,SAASC,GASb,MARAF,GAAUX,YAAca,EAAST,OAEjC3X,EAAK0Q,mBACH1N,KAAM,OACNuR,SAAU,QACV/R,KAAM0V,IAGDE,IAER,SAAS,SAAS9B,GASjB,KAPAtW,GAAK0Q,mBACH1N,KAAM,OACNuR,SAAU,QACV/R,KAAM0V,EACN9T,MAAO,UAGHkS,MAIdK,GAMAtP,EAAgByE,KAAO7L,KAAKyF,IAC1BE,EAAUkJ,kBACZlJ,EAAUkJ,iBAAiB,QAAS9O,EAAK6U,GAAwB,UAAU,GAC3EjP,EAAUkJ,iBAAiB,WAAY9O,EAAK0W,MAAyB,IAC5D9Q,EAAUyS,cAEnBzS,EAAUyS,YAAY,UAAWrY,EAAK6U,GAAwB,UAC9DjP,EAAUyS,YAAY,aAAcrY,EAAK0W,OAQ7C,IAAI4B,GAAS9R,EAAQ8R,OACjBC,EAAsBD,GAAUA,EAAOE,KAAOF,EAAOE,IAAIC,QACzDC,GACDH,GACD/R,EAAQmS,SACRA,QAAQC,WACRD,QAAQE,YACV,IAAIxR,EAAgBoB,UAAYiQ,EAAwB,CAEtD,GAAII,GAAgBtS,EAAQuS,UAC5BvS,GAAQuS,WAAa,WACnB,GAAIC,GAAchZ,EAAKwI,EAAUG,IAGjC,IAFA3I,EAAKiZ,GAAkBjZ,EAAK0I,EAAWsQ,GAEnCF,EACF,MAAOA,GAAc9T,MAAM/E,KAAM0E,WAIrC,IAAIuU,GAA6B,SAASC,GAGxC,MAAO,YACL,GAAI9I,GAAM1L,UAAU1D,OAAS,EAAI0D,UAAU,GAAK+I,MAQhD,OALI2C,IAEFrQ,EAAKiZ,GAAkBjZ,EAAK0I,EAAW2H,EAAM,IAGxC8I,EAAiBnU,MAAM/E,KAAM0E,YAIxCyF,GAAKuO,QAAS,YAAaO,EAA4BvC,GACvDvM,EAAKuO,QAAS,eAAgBO,EAA4BvC,GAG5D,GAAItP,EAAgBlD,SAAW,WAAaqC,IAAWrC,QAAQiV,IAAK,CAElE,GAAIC,GAAwB,SAASzU,EAAKpC,GACxCxC,EAAK0Q,mBACHzN,QAAS2B,EACTR,MAAO5B,EAAK4B,MACZmQ,SAAU,YAId/K,IAAM,QAAS,OAAQ,OAAQ,QAAS,OAAQ,SAASiK,EAAGrP,GAC1DqG,EAAkBtG,QAASC,EAAOiV,OAKxCC,EAAkB,WAGhB,IADA,GAAIC,GACGtZ,KAAKoI,EAAiBpH,QAAQ,CACnCsY,EAAUtZ,KAAKoI,EAAiB2I,OAEhC,IAAIL,GAAM4I,EAAQ,GAChB1V,EAAO0V,EAAQ,GACf3D,EAAO2D,EAAQ,EAEjB5I,GAAI9M,GAAQ+R,IAIhB4D,EAAiB,WAEf,IAAK,GAAI9R,KAAUzH,MAAKiI,EACtBjI,KAAKgI,EAAiBP,GAAUzH,KAAKiI,EAAwBR,IAIjE+R,EAAe,WACb,GAAIzZ,GAAOC,IAGXuJ,GAAKvJ,KAAKkI,EAAU,SAASsL,EAAGxC,GAC9B,GAAIyI,GAAYzI,EAAO,GACnBxM,EAAOwM,EAAO,EAClByI,GAAU1U,MAAMhF,GAAOA,GAAM2Z,OAAOlV,OAIxCmV,EAAW,SAASC,GAClB,GAAIC,GAAIlP,EAAW9H,KAAK+W,GACtB5O,KACArK,EAAI,CAEN,KACE,KAAOA,KAAKqK,EAAIP,EAAQ9J,IAAMkZ,EAAElZ,IAAM,GACtC,MAAOT,GACP,KAAM,IAAIyD,GAAiB,gBAAkBiW,GAG/C,GAAI5O,EAAIoC,OAASpN,KAAKqG,EAAeyT,eACnC,KAAM,IAAInW,GACR,iFAIJ,OAAOqH,IAGT+O,EAAkB,SAASnN,GAEzB,GAAIkG,GAAe,KAAOlG,EAAIyI,MAAQzI,EAAIoN,KAAO,IAAMpN,EAAIoN,KAAO,GAKlE,OAHIpN,GAAIwI,WACNtC,EAAelG,EAAIwI,SAAW,IAAMtC,GAE/BA,GAGTmH,EAAyB,WAElBja,KAAK6H,GACR7H,KAAKuP,EAAiBxK,MAAM/E,KAAM0E,YAItCwV,EAAkB,SAASC,EAAWlP,GACpC,GAAIoF,GAASrQ,KAAKsQ,EAAe6J,EAAWlP,EAE5CjL,MAAKoa,EAAc,UACjBD,UAAWA,EACXlP,QAASA,IAGXjL,KAAKqa,GACHF,EAAUvW,KACVuW,EAAUnX,QACVmX,EAAU/J,IACV+J,EAAUG,OACVjK,EACApF,IAIJsP,EAAgB,SAASJ,EAAWlP,GAClC,GAAIlL,GAAOC,KACPqQ,IACJ,IAAI8J,EAAU9K,OAAS8K,EAAU9K,MAAMrO,SACrCuI,EAAK4Q,EAAU9K,MAAO,SAAS1O,EAAG0O,GAChC,GAAImL,GAAQza,EAAK0a,GAAgBpL,EAAO8K,EAAU/J,IAC9CoK,IACFnK,EAAO/E,KAAKkP,KAKZvP,GAAWA,EAAQ+D,gBACrB,IAAK,GAAI4I,GAAI,EAAGA,EAAI3M,EAAQ+D,gBAAkB4I,EAAIvH,EAAOrP,OAAQ4W,IAC/DvH,EAAOuH,GAAG8C,QAAS,CAKzB,OADArK,GAASA,EAAO5L,MAAM,EAAGzE,KAAKqG,EAAec,kBAI/CwT,GAAiB,SAASH,EAAOI,GAE/B,GAAIC,IACFC,SAAUN,EAAMpK,IAChBkK,OAAQE,EAAMO,KACdC,MAAOR,EAAMS,OACbC,WAAUV,EAAMhN,MAAQ,IAuB1B,OAfKgN,GAAMpK,MACTyK,EAAWC,SAAWF,GAGxBC,EAAWH,SAGN1a,KAAKqG,EAAeQ,aAAaoJ,OACjCjQ,KAAKqG,EAAeQ,aAAaoJ,KAAK4K,EAAWC,WAEpD,qBAAqB7K,KAAK4K,EAAW,cAErC,qBAAqB5K,KAAK4K,EAAWC,WAGhCD,GAGTM,GAAmB,SAASpY,EAAMC,EAASmN,EAASmK,EAAQjK,EAAQpF,GAClE,GAAImQ,IAAmBrY,EAAOA,EAAO,KAAO,KAAOC,GAAW,GAC9D,KACIhD,KAAKqG,EAAeK,aAAauJ,OAClCjQ,KAAKqG,EAAeK,aAAauJ,KAAKjN,KACrChD,KAAKqG,EAAeK,aAAauJ,KAAKmL,GAH1C,CAQA,GAAIjM,EAoBJ,IAlBIkB,GAAUA,EAAOrP,QACnBmP,EAAUE,EAAO,GAAGyK,UAAY3K,EAGhCE,EAAOE,UACPpB,GAAckB,OAAQA,IACbF,IACThB,GACEkB,SAEIyK,SAAU3K,EACVmK,OAAQA,EACRI,QAAQ,QAOZ1a,KAAKqG,EAAeM,WAAWsJ,OACjCjQ,KAAKqG,EAAeM,WAAWsJ,KAAKE,OAMlCnQ,KAAKqG,EAAeO,cAAcqJ,MACnCjQ,KAAKqG,EAAeO,cAAcqJ,KAAKE,IAF1C,CAOA,GAAI5N,GAAOiH,GAGP9G,WACEC,SAEII,KAAMA,EACND,MAAOE,EACPmM,WAAYA,KAIlBkM,QAASlL,GAEXlF,EAIFjL,MAAKwQ,EAAMjO,MAGb+Y,GAAa,SAAS/Y,GAGpB,GAAIkJ,GAAMzL,KAAKqG,EAAeY,gBAI9B,IAHI1E,EAAKS,UACPT,EAAKS,QAAUyG,EAASlH,EAAKS,QAASyI,IAEpClJ,EAAKG,UAAW,CAClB,GAAIA,GAAYH,EAAKG,UAAUC,OAAO,EACtCD,GAAUI,MAAQ2G,EAAS/G,EAAUI,MAAO2I,GAG9C,GAAI8P,GAAUhZ,EAAKgZ,OAanB,OAZIA,KACEA,EAAQnL,MACVmL,EAAQnL,IAAM3G,EAAS8R,EAAQnL,IAAKpQ,KAAKqG,EAAea,eAEtDqU,EAAQC,UACVD,EAAQC,QAAU/R,EAAS8R,EAAQC,QAASxb,KAAKqG,EAAea,gBAIhE3E,EAAKkZ,aAAelZ,EAAKkZ,YAAY9Y,QACvC3C,KAAK0b,GAAiBnZ,EAAKkZ,aAEtBlZ,GAMToZ,GAAkB,SAASF,GAQzB,IAAK,GAJHG,GACAjL,EACApO,EAHEsZ,GAAY,KAAM,OAAQ,OAKrBlb,EAAI,EAAGA,EAAI8a,EAAY9Y,OAAO3B,SAAUL,EAE/C,GADAgQ,EAAQ8K,EAAY9Y,OAAOhC,GAExBgQ,EAAMsF,eAAe,SACrB/M,EAASyH,EAAMpO,QAChBmH,EAAaiH,EAAMpO,MAHrB,CAOAA,EAAOiH,KAAgBmH,EAAMpO,KAC7B,KAAK,GAAIqV,GAAI,EAAGA,EAAIiE,EAAS7a,SAAU4W,EACrCgE,EAAUC,EAASjE,GACfrV,EAAK0T,eAAe2F,IAAYrZ,EAAKqZ,KACvCrZ,EAAKqZ,GAAWnS,EAASlH,EAAKqZ,GAAU5b,KAAKqG,EAAea,cAGhEuU,GAAY9Y,OAAOhC,GAAG4B,KAAOA,IAIjCuZ,GAAc,WACZ,GAAK9b,KAAK4F,GAAkB5F,KAAKyF,EAAjC,CACA,GAAIsW,KAkBJ,OAhBI/b,MAAK4F,GAAiBC,EAAWmW,YACnCD,EAASjV,SACPmV,aAAcpR,UAAUmR,YAKxBzV,EAAQiC,UAAYjC,EAAQiC,SAASE,OACvCqT,EAAS3L,IAAM7J,EAAQiC,SAASE,MAG9B1I,KAAKyF,GAAgBE,EAAUuW,WAC5BH,EAASjV,UAASiV,EAASjV,YAChCiV,EAASjV,QAAQ0U,QAAU7V,EAAUuW,UAGhCH,IAGTI,EAAe,WACbnc,KAAKoc,GAAmB,EACxBpc,KAAKqc,GAAgB,MAGvBC,GAAgB,WACd,MAAOtc,MAAKoc,IAAoBnX,IAAQjF,KAAKqc,GAAgBrc,KAAKoc,IAYpEG,GAAe,SAASC,GACtB,GAAIC,GAAOzc,KAAK+F,CAEhB,UACG0W,GACDD,EAAQxZ,UAAYyZ,EAAKzZ,SACzBwZ,EAAQnB,UAAYoB,EAAKpB,WAKvBmB,EAAQrN,YAAcsN,EAAKtN,WACtBlF,EAAiBuS,EAAQrN,WAAYsN,EAAKtN,aACxCqN,EAAQ9Z,YAAa+Z,EAAK/Z,WAE5BsH,EAAgBwS,EAAQ9Z,UAAW+Z,EAAK/Z,aAMnDga,GAAkB,SAASnB,GAEzB,IAAIvb,KAAK2c,KAAT,CAIA,GAAIjF,GAAS6D,EAAQ7D,MAKrB,IAAiB,MAAXA,GAA6B,MAAXA,GAA6B,MAAXA,EAA1C,CAEA,GAAIkF,EACJ,KAIIA,EADExS,IACMmR,EAAQzU,QAAQ+V,IAAI,eAEpBtB,EAAQuB,kBAAkB,eAIpCF,EAA8B,IAAtBG,SAASH,EAAO,IACxB,MAAO1c,IAITF,KAAKoc,GAAmBQ,EAEpBA,EAEwB,EAAxB5c,KAAKoc,IAAwB,IAEjCpc,KAAKqc,GAAgBpX,OAGvB+X,EAAO,SAASza,GACd,GAAI4I,GAAgBnL,KAAKqG,EAErB4W,GACAC,QAASld,KAAKmG,EACdtB,OAAQsG,EAActG,OACtBsY,SAAU,cAEZpB,EAAW/b,KAAKod,IAsDlB,IApDIrB,IACFkB,EAAS1B,QAAUQ,GAIjBxZ,EAAKyM,sBAAuBzM,GAAKyM,eAErCzM,EAAOiH,EAAYyT,EAAU1a,GAG7BA,EAAK+O,KAAO9H,EAAYA,KAAgBxJ,KAAKoG,EAAekL,MAAO/O,EAAK+O,MACxE/O,EAAKN,MAAQuH,EAAYA,KAAgBxJ,KAAKoG,EAAenE,OAAQM,EAAKN,OAG1EM,EAAKN,MAAM,oBAAsBgD,IAAQjF,KAAKmI,EAE1CnI,KAAKqI,GAAgBrI,KAAKqI,EAAarH,OAAS,IAGlDuB,EAAKkZ,aACH9Y,UAAW8B,MAAM1D,KAAKf,KAAKqI,EAAc,KAIzCrI,KAAKoG,EAAe8G,OAEtB3K,EAAK2K,KAAOlN,KAAKoG,EAAe8G,MAI9B/B,EAAcwG,cAAapP,EAAKoP,YAAcxG,EAAcwG,aAG5DxG,EAAc7E,UAAS/D,EAAK+D,QAAU6E,EAAc7E,SAGpD6E,EAAckS,aAAY9a,EAAK+a,YAAcnS,EAAckS,YAE/D9a,EAAOvC,KAAKud,GAAchb,GAG1BqN,OAAOC,KAAKtN,GAAMib,QAAQ,SAASpS,IAChB,MAAb7I,EAAK6I,IAA8B,KAAd7I,EAAK6I,IAAe9B,EAAc/G,EAAK6I,YACvD7I,GAAK6I,KAIZ/F,EAAW8F,EAAc0G,gBAC3BtP,EAAO4I,EAAc0G,aAAatP,IAASA,GAIxCA,IAAQ+G,EAAc/G,MAMzB8C,EAAW8F,EAAc6G,qBACxB7G,EAAc6G,mBAAmBzP,IAOpC,MAAIvC,MAAK2c,SACP3c,MAAKkL,EAAU,OAAQ,uCAAwC3I,QAIzB,gBAA7B4I,GAAc7D,WACnBkE,KAAKiS,SAAWtS,EAAc7D,YAChCtH,KAAK0d,GAAsBnb,GAG7BvC,KAAK0d,GAAsBnb,KAI/Bob,GAAe,SAASpb,GACtB,MAAOgI,GAAShI,EAAMvC,KAAKqG,EAAekB,eAG5CqW,GAAU,WACR,MAAO9T,MAGT+T,GAAuB,SAAStb,EAAM6B,GACpC,GAAIrE,GAAOC,KACPmL,EAAgBnL,KAAKqG,CAEzB,IAAKrG,KAAKmM,UAAV,CAQA,GALA5J,EAAOvC,KAAK8d,GAAYvb,IAKnBvC,KAAKqG,EAAe0X,iBAAmB/d,KAAKge,GAAczb,GAE7D,WADAvC,MAAKkL,EAAU,OAAQ,+BAAgC3I,EAOzDvC,MAAKgG,EAAezD,EAAK0b,WAAa1b,EAAK0b,SAAWje,KAAKke,MAG3Dle,KAAK+F,EAAYxD,EAEjBvC,KAAKkL,EAAU,QAAS,uBAAwB3I,EAEhD,IAAI4b,IACFC,eAAgB,IAChBC,cAAe,YAAcre,KAAK8K,QAClCwT,WAAYte,KAAKkG,EAGflG,MAAKmN,IACPgR,EAAKI,cAAgBve,KAAKmN,EAG5B,IAAIzK,GAAYH,EAAKG,WAAaH,EAAKG,UAAUC,OAAO,EAItD3C,MAAKqG,EAAee,iBACpBpH,KAAKqG,EAAee,gBAAgB0E,QAEpC9L,KAAKyQ,mBACH6D,SAAU,SACVtR,QAASN,GACJA,EAAUK,KAAOL,EAAUK,KAAO,KAAO,IAAML,EAAUI,MAC1DP,EAAKS,QACTib,SAAU1b,EAAK0b,SACf9Z,MAAO5B,EAAK4B,OAAS,SAIzB,IAAIiM,GAAMpQ,KAAKsN,GACdnC,EAAc+G,WAAalS,KAAKwe,IAAczd,KAAKf,MAClDoQ,IAAKA,EACL+N,KAAMA,EACN5b,KAAMA,EACN0I,QAASE,EACTsT,UAAW,WACT1e,EAAK4I,IAEL5I,EAAKqa,EAAc,WACjB7X,KAAMA,EACN2Q,IAAK9C,IAEPhM,GAAYA,KAEdsa,QAAS,SAAiBzP,GACxBlP,EAAKmL,EAAU,QAAS,mCAAoC+D,GAExDA,EAAMsM,SACRxb,EAAK4e,GAAiB1P,EAAMsM,SAG9Bxb,EAAKqa,EAAc,WACjB7X,KAAMA,EACN2Q,IAAK9C,IAEPnB,EAAQA,GAAS,GAAIrO,OAAM,sDAC3BwD,GAAYA,EAAS6K,QAK3B2P,GAAc,SAASC,GAErB,GAAIzO,GAAMyO,EAAKzO,IAAM,IAAMvG,EAAUgV,EAAKV,MAEtCW,EAAmB,KACnBC,IAUJ,IARIF,EAAK5T,QAAQnE,UACfgY,EAAmB9e,KAAKgf,GAAcH,EAAK5T,QAAQnE,UAGjD+X,EAAK5T,QAAQgU,kBACfF,EAA2B/e,KAAKgf,GAAcH,EAAK5T,QAAQgU,kBAGzD7U,IAAiB,CACnB2U,EAAyB3L,KAAO5N,EAAUqZ,EAAKtc,KAE/C,IAAI2c,GAAsB1V,KAAgBxJ,KAAKwH,GAC3C2X,EAAe3V,EAAY0V,EAAqBH,EAMpD,OAJID,KACFK,EAAarY,QAAUgY,GAGlBvY,EACJ6Y,MAAMhP,EAAK+O,GACXjH,KAAK,SAASC,GACb,GAAIA,EAASkH,GACXR,EAAKJ,WAAaI,EAAKJ,gBAClB,CACL,GAAIxP,GAAQ,GAAIrO,OAAM,sBAAwBuX,EAAST,OAGvDzI,GAAMsM,QAAUpD,EAChB0G,EAAKH,SAAWG,EAAKH,QAAQzP,MAGhC,SAAS,WACR4P,EAAKH,SACHG,EAAKH,QAAQ,GAAI9d,OAAM,6CAI/B,GAAI2a,GAAUhV,EAAQ2Q,gBAAkB,GAAI3Q,GAAQ2Q,cACpD,IAAKqE,EAAL,CAGA,GAAI+D,GAAU,mBAAqB/D,IAAqC,mBAAnBgE,eAEhDD,KAED,mBAAqB/D,GACvBA,EAAQ1D,mBAAqB,WAC3B,GAA2B,IAAvB0D,EAAQ9D,WAEL,GAAuB,MAAnB8D,EAAQ7D,OACjBmH,EAAKJ,WAAaI,EAAKJ,gBAClB,IAAII,EAAKH,QAAS,CACvB,GAAIrI,GAAM,GAAIzV,OAAM,sBAAwB2a,EAAQ7D,OACpDrB,GAAIkF,QAAUA,EACdsD,EAAKH,QAAQrI,MAIjBkF,EAAU,GAAIgE,gBAGdnP,EAAMA,EAAIoP,QAAQ,WAAY,IAG1BX,EAAKJ,YACPlD,EAAQkE,OAASZ,EAAKJ,WAEpBI,EAAKH,UACPnD,EAAQmE,QAAU,WAChB,GAAIrJ,GAAM,GAAIzV,OAAM,oCACpByV,GAAIkF,QAAUA,EACdsD,EAAKH,QAAQrI,MAKnBkF,EAAQoE,KAAK,OAAQvP,GAEjB0O,GACFvV,EAAKuV,EAAkB,SAAS1T,EAAKtI,GACnCyY,EAAQqE,iBAAiBxU,EAAKtI,KAIlCyY,EAAQsE,KAAKra,EAAUqZ,EAAKtc,UAG9Bud,GAAe,SAASC,GACtB,GAAIC,KAEJ,KAAK,GAAI5U,KAAO2U,GACd,GAAIA,EAAK9J,eAAe7K,GAAM,CAC5B,GAAItI,GAAQid,EAAK3U,EACjB4U,GAAU5U,GAAwB,kBAAVtI,GAAuBA,IAAUA,EAI7D,MAAOkd,IAGTC,EAAW,SAAS9b,GAGhBnE,KAAKiI,EAAwB9D,KAC5BnE,KAAK+K,OAAS/K,KAAKqG,EAAe0E,QAGnCjG,SAASjB,UAAUkB,MAAMhE,KACvBf,KAAKiI,EAAwB9D,GAC7BnE,KAAKgI,KACFvD,MAAM1D,KAAK2D,UAAW,KAK/Bwb,EAAe,SAAS9U,EAAKmC,GACvB7H,EAAY6H,SACPvN,MAAKoG,EAAegF,GAE3BpL,KAAKoG,EAAegF,GAAO5B,EAAYxJ,KAAKoG,EAAegF,OAAYmC,KAM7EtN,EAAM4D,UAAUsc,QAAUlgB,EAAM4D,UAAUqN,eAC1CjR,EAAM4D,UAAUuc,kBAAoBngB,EAAM4D,UAAU+N,WAEpDnS,EAAOD,QAAUS,IAEdc,KAAKf,KAAuB,mBAAXF,QAAyBA,OAAyB,mBAATC,MAAuBA,KAAyB,mBAAXF,QAAyBA,aACxHwgB,GAAK,GAAG3c,EAAI,EAAEK,EAAI,EAAEV,EAAI,EAAEid,EAAI,EAAEC,EAAI,IAAInd,GAAG,SAASlC,EAAQzB,EAAOD,IACtE,SAAWM,GAOX,GAAI0gB,GAAmBtf,EAAQ,GAG3BqF,EACgB,mBAAX1G,QACHA,OACkB,mBAAXC,GAAyBA,EAAyB,mBAATC,MAAuBA,QACzE0gB,EAASla,EAAQtG,MAEjBA,EAAQ,GAAIugB,EAQhBvgB,GAAMygB,WAAa,WAEjB,MADAna,GAAQtG,MAAQwgB,EACTxgB,GAGTA,EAAMqS,YAEN7S,EAAOD,QAAUS,EAoCjBR,EAAOD,QAAQmhB,OAASH,IAErBzf,KAAKf,KAAuB,mBAAXF,QAAyBA,OAAyB,mBAATC,MAAuBA,KAAyB,mBAAXF,QAAyBA,aACxHmF,EAAI,IAAI3B,GAAG,SAASnC,EAAQzB,EAAOD,IACtC,SAAWM,GAQX,QAASoJ,GAAS0X,GAChB,MAAuB,gBAATA,IAA8B,OAATA,EAKrC,QAAS3X,GAAQnG,GACf,OAAQ8M,OAAO/L,UAAUkI,SAAShL,KAAK+B,IACrC,IAAK,iBACH,OAAO,CACT,KAAK,qBACH,OAAO,CACT,KAAK,wBACH,OAAO,CACT,SACE,MAAOA,aAAiBlC,QAI9B,QAASkI,GAAahG,GACpB,MAAiD,wBAA1C8M,OAAO/L,UAAUkI,SAAShL,KAAK+B,GAGxC,QAASiG,GAAWjG,GAClB,MAAiD,sBAA1C8M,OAAO/L,UAAUkI,SAAShL,KAAK+B,GAGxC,QAASkG,GAAelG,GACtB,MAAiD,0BAA1C8M,OAAO/L,UAAUkI,SAAShL,KAAK+B,GAGxC,QAAS4C,GAAYkb,GACnB,MAAgB,UAATA,EAGT,QAASvb,GAAWub,GAClB,MAAuB,kBAATA,GAGhB,QAASzX,GAAcyX,GACrB,MAAgD,oBAAzChR,OAAO/L,UAAUkI,SAAShL,KAAK6f,GAGxC,QAASxX,GAASwX,GAChB,MAAgD,oBAAzChR,OAAO/L,UAAUkI,SAAShL,KAAK6f,GAGxC,QAASvX,GAAQuX,GACf,MAAgD,mBAAzChR,OAAO/L,UAAUkI,SAAShL,KAAK6f,GAGxC,QAAStX,GAAcsX,GACrB,IAAKzX,EAAcyX,GAAO,OAAO,CAEjC,KAAK,GAAIpN,KAAKoN,GACZ,GAAIA,EAAK3K,eAAezC,GACtB,OAAO,CAGX,QAAO,EAGT,QAASqN,KACP,IAEE,MADA,IAAIC,YAAW,KACR,EACP,MAAO5gB,GACP,OAAO,GAIX,QAAS6gB,KACP,IAEE,MADA,IAAIC,UAAS,KACN,EACP,MAAO9gB,GACP,OAAO,GAIX,QAAS+gB,KACP,IAEE,MADA,IAAIC,cAAa,KACV,EACP,MAAOhhB,GACP,OAAO,GAIX,QAASkK,KACP,KAAM,SAAW7D,IAAU,OAAO,CAElC,KAIE,MAHA,IAAI4a,SACJ,GAAInJ,SAAQ,IACZ,GAAIoJ,WACG,EACP,MAAOlhB,GACP,OAAO,GAQX,QAAS0H,KACP,IAAKwC,IAAiB,OAAO,CAE7B,KAKE,MAHA,IAAI4N,SAAQ,cACVrQ,eAAgB,YAEX,EACP,MAAOzH,GACP,OAAO,GAIX,QAASmhB,KACP,MAAwC,kBAA1BC,uBAGhB,QAAShf,GAAgB8B,GACvB,QAASyN,GAAatP,EAAM6C,GAC1B,GAAImc,GAAiBnd,EAAS7B,IAASA,CACvC,OAAI6C,GACKA,EAASmc,IAAmBA,EAE9BA,EAGT,MAAO1P,GAGT,QAAStI,GAAKmH,EAAKtM,GACjB,GAAIzD,GAAGiX,CAEP,IAAIlS,EAAYgL,EAAI1P,QAClB,IAAKL,IAAK+P,GACJ/G,EAAO+G,EAAK/P,IACdyD,EAASrD,KAAK,KAAMJ,EAAG+P,EAAI/P,QAK/B,IADAiX,EAAIlH,EAAI1P,OAEN,IAAKL,EAAI,EAAGA,EAAIiX,EAAGjX,IACjByD,EAASrD,KAAK,KAAMJ,EAAG+P,EAAI/P,IAMnC,QAAS6I,GAAYgY,EAAMC,GACzB,MAAKA,IAGLlY,EAAKkY,EAAM,SAASrW,EAAKtI,GACvB0e,EAAKpW,GAAOtI,IAEP0e,GALEA,EAgBX,QAAS9X,GAAagH,GACpB,QAAKd,OAAO8R,UAGL9R,OAAO8R,SAAShR,GAGzB,QAASjH,GAASmQ,EAAKnO,GACrB,GAAmB,gBAARA,GACT,KAAM,IAAI7K,OAAM,yDAElB,OAAmB,gBAARgZ,IAA4B,IAARnO,EACtBmO,EAEFA,EAAI5Y,QAAUyK,EAAMmO,EAAMA,EAAI1W,OAAO,EAAGuI,GAAO,IAUxD,QAAS9B,GAAOgY,EAAQvW,GACtB,MAAOwE,QAAO/L,UAAUoS,eAAelV,KAAK4gB,EAAQvW,GAGtD,QAASxB,GAAWgY,GAQlB,IALA,GAGEC,GAHEC,KACFnhB,EAAI,EACJohB,EAAMH,EAAS5gB,OAGVL,EAAIohB,EAAKphB,IACdkhB,EAAUD,EAASjhB,GACfyI,EAASyY,GAGXC,EAAQxW,KAAKuW,EAAQrC,QAAQ,8BAA+B,SACnDqC,GAAWA,EAAQG,QAE5BF,EAAQxW,KAAKuW,EAAQG,OAIzB,OAAO,IAAIC,QAAOH,EAAQI,KAAK,KAAM,KAGvC,QAASrY,GAAUtJ,GACjB,GAAI4hB,KAIJ,OAHA5Y,GAAKhJ,EAAG,SAAS6K,EAAKtI,GACpBqf,EAAM7W,KAAKqH,mBAAmBvH,GAAO,IAAMuH,mBAAmB7P,MAEzDqf,EAAMD,KAAK,KAMpB,QAAShY,GAASkG,GAChB,GAAmB,gBAARA,GAAkB,QAC7B,IAAIgS,GAAQhS,EAAIgS,MAAM,kEAGlBC,EAAQD,EAAM,IAAM,GACpBE,EAAWF,EAAM,IAAM,EAC3B,QACEhN,SAAUgN,EAAM,GAChB/M,KAAM+M,EAAM,GACZrV,KAAMqV,EAAM,GACZ9M,SAAU8M,EAAM,GAAKC,EAAQC,GAGjC,QAASxY,KACP,GAAIyY,GAAShc,EAAQgc,QAAUhc,EAAQic,QAEvC,KAAK9c,EAAY6c,IAAWA,EAAOE,gBAAiB,CAGlD,GAAIC,GAAM,GAAIC,aAAY,EAC1BJ,GAAOE,gBAAgBC,GAGvBA,EAAI,GAAe,KAATA,EAAI,GAAc,MAE5BA,EAAI,GAAe,MAATA,EAAI,GAAe,KAE7B,IAAIE,GAAM,SAASC,GAEjB,IADA,GAAIC,GAAID,EAAI9W,SAAS,IACd+W,EAAE9hB,OAAS,GAChB8hB,EAAI,IAAMA,CAEZ,OAAOA,GAGT,OACEF,GAAIF,EAAI,IACRE,EAAIF,EAAI,IACRE,EAAIF,EAAI,IACRE,EAAIF,EAAI,IACRE,EAAIF,EAAI,IACRE,EAAIF,EAAI,IACRE,EAAIF,EAAI,IACRE,EAAIF,EAAI,IAIV,MAAO,mCAAmClD,QAAQ,QAAS,SAASuD,GAClE,GAAI1iB,GAAqB,GAAhBmL,KAAKiS,SAAiB,EAC7BqF,EAAU,MAANC,EAAY1iB,EAAS,EAAJA,EAAW,CAClC,OAAOyiB,GAAE/W,SAAS,MAYxB,QAAShC,GAAiBiZ,GAWxB,IATA,GAOEC,GAPEC,EAAsB,EACxBC,EAAiB,GACjBC,KACAC,EAAS,EACTtB,EAAM,EACNuB,EAAY,MACZC,EAAYD,EAAUtiB,OAGjBgiB,GAAQK,IAAWH,IACxBD,EAAUO,EAAoBR,KAMhB,SAAZC,GACCI,EAAS,GAAKtB,EAAMqB,EAAIpiB,OAASuiB,EAAYN,EAAQjiB,QAAUmiB,KAKlEC,EAAI9X,KAAK2X,GAETlB,GAAOkB,EAAQjiB,OACfgiB,EAAOA,EAAKS,UAGd,OAAOL,GAAI7S,UAAU2R,KAAKoB,GAS5B,QAASE,GAAoBR,GAC3B,GACEU,GACAC,EACAvY,EACAwY,EACAjjB,EALEyiB,IAOJ,KAAKJ,IAASA,EAAKvO,QACjB,MAAO,EAST,IANA2O,EAAI9X,KAAK0X,EAAKvO,QAAQR,eAClB+O,EAAKvc,IACP2c,EAAI9X,KAAK,IAAM0X,EAAKvc,IAGtBid,EAAYV,EAAKU,UACbA,GAAata,EAASsa,GAExB,IADAC,EAAUD,EAAUhZ,MAAM,OACrB/J,EAAI,EAAGA,EAAIgjB,EAAQ3iB,OAAQL,IAC9ByiB,EAAI9X,KAAK,IAAMqY,EAAQhjB,GAG3B,IAAIkjB,IAAiB,OAAQ,OAAQ,QAAS,MAC9C,KAAKljB,EAAI,EAAGA,EAAIkjB,EAAc7iB,OAAQL,IACpCyK,EAAMyY,EAAcljB,GACpBijB,EAAOZ,EAAKc,aAAa1Y,GACrBwY,GACFR,EAAI9X,KAAK,IAAMF,EAAM,KAAOwY,EAAO,KAGvC,OAAOR,GAAIlB,KAAK,IAMlB,QAAS6B,GAAgBtjB,EAAGujB,GAC1B,WAAYvjB,IAAMujB,GAMpB,QAASC,GAAgBxjB,EAAGujB,GAC1B,MAAOte,GAAYjF,IAAMiF,EAAYse,GAMvC,QAASha,GAAgBwF,EAAK0U,GAC5B,OAAIH,EAAgBvU,EAAK0U,KAEzB1U,EAAMA,EAAI7M,OAAO,GACjBuhB,EAAMA,EAAIvhB,OAAO,GAEb6M,EAAIzM,OAASmhB,EAAInhB,MAAQyM,EAAI1M,QAAUohB,EAAIphB,SAG3CmhB,EAAgBzU,EAAIL,WAAY+U,EAAI/U,aAEjClF,EAAiBuF,EAAIL,WAAY+U,EAAI/U,cAM9C,QAASlF,GAAiBka,EAAQC,GAChC,GAAIL,EAAgBI,EAAQC,GAAS,OAAO,CAE5C,IAAIC,GAAUF,EAAO9T,OACjBiU,EAAUF,EAAO/T,MAGrB,IAAIgU,EAAQrjB,SAAWsjB,EAAQtjB,OAAQ,OAAO,CAI9C,KAAK,GADDP,GAAGujB,EACErjB,EAAI,EAAGA,EAAI0jB,EAAQrjB,OAAQL,IAGlC,GAFAF,EAAI4jB,EAAQ1jB,GACZqjB,EAAIM,EAAQ3jB,GAEVF,EAAEqa,WAAakJ,EAAElJ,UACjBra,EAAE6Z,SAAW0J,EAAE1J,QACf7Z,EAAEua,QAAUgJ,EAAEhJ,OACdva,EAAE,cAAgBujB,EAAE,YAEpB,OAAO,CAEX,QAAO,EAUT,QAAS7Z,GAAKuG,EAAK9M,EAAM2gB,EAAaC,GACpC,GAAW,MAAP9T,EAAJ,CACA,GAAIiF,GAAOjF,EAAI9M,EACf8M,GAAI9M,GAAQ2gB,EAAY5O,GACxBjF,EAAI9M,GAAMiK,GAAY,EACtB6C,EAAI9M,GAAMoK,EAAW2H,EACjB6O,GACFA,EAAMlZ,MAAMoF,EAAK9M,EAAM+R,KAU3B,QAAS/Q,GAAS6f,EAAOC,GACvB,IAAKrb,EAAQob,GAAQ,MAAO,EAI5B,KAAK,GAFDE,MAEKhkB,EAAI,EAAGA,EAAI8jB,EAAMzjB,OAAQL,IAChC,IACEgkB,EAAOrZ,KAAKsZ,OAAOH,EAAM9jB,KACzB,MAAOT,GACPykB,EAAOrZ,KAAK,gCAIhB,MAAOqZ,GAAOzC,KAAKwC,GASrB,QAASG,GAAW/hB,GAClB,QAASgiB,UAAUhiB,GAAO4H,MAAM,SAAS1J,OAG3C,QAAS+jB,GAASjiB,GAChB,MAAO+hB,GAAWtf,KAAKC,UAAU1C,IAGnC,QAASkiB,GAAeliB,GACtB,GAAqB,gBAAVA,GAAoB,CAC7B,GAAImiB,GAAY,EAChB,OAAOxb,GAAS3G,EAAOmiB,GAClB,GACY,gBAAVniB,IACU,iBAAVA,IACU,mBAAVA,GAEP,MAAOA,EAGT,IAAIC,GAAO6M,OAAO/L,UAAUkI,SAAShL,KAAK+B,EAG1C,OAAa,oBAATC,EAAmC,WAC1B,mBAATA,EAAkC,UACzB,sBAATA,EACKD,EAAMc,KAAO,cAAgBd,EAAMc,KAAO,IAAM,aAElDd,EAGT,QAASoiB,GAAgBpiB,EAAOqiB,GAC9B,MAAc,KAAVA,EAAoBH,EAAeliB,GAEnCqG,EAAcrG,GACT8M,OAAOC,KAAK/M,GAAOsiB,OAAO,SAASC,EAAKja,GAE7C,MADAia,GAAIja,GAAO8Z,EAAgBpiB,EAAMsI,GAAM+Z,EAAQ,GACxCE,OAEAxP,MAAMxM,QAAQvG,GAChBA,EAAMwiB,IAAI,SAASC,GACxB,MAAOL,GAAgBK,EAAKJ,EAAQ,KAIjCH,EAAeliB,GAGxB,QAASwH,GAAmBxI,EAAIqjB,EAAOK,GACrC,IAAKrc,EAAcrH,GAAK,MAAOA,EAE/BqjB,GAAyB,gBAAVA,GAAqBM,EAAgCN,EACpEK,EAA2B,gBAAVL,GAAqBO,EAA+BF,CAErE,IAAIG,GAAaT,EAAgBpjB,EAAIqjB,EAErC,OAAIJ,GAASvf,EAAUmgB,IAAeH,EAC7Blb,EAAmBxI,EAAIqjB,EAAQ,GAGjCQ,EAGT,QAAStb,GAAwBwF,EAAMoV,GACrC,GAAoB,gBAATpV,IAAqC,gBAATA,GAAmB,MAAOA,GAAK9D,UACtE,KAAK8J,MAAMxM,QAAQwG,GAAO,MAAO,EAKjC,IAHAA,EAAOA,EAAK+V,OAAO,SAASxa,GAC1B,MAAsB,gBAARA,KAEI,IAAhByE,EAAK7O,OAAc,MAAO,sBAG9B,IADAikB,EAAiC,gBAAdA,GAAyBY,EAA4BZ,EACpEpV,EAAK,GAAG7O,QAAUikB,EAAW,MAAOpV,GAAK,EAE7C,KAAK,GAAIiW,GAAWjW,EAAK7O,OAAQ8kB,EAAW,EAAGA,IAAY,CACzD,GAAIH,GAAa9V,EAAKpL,MAAM,EAAGqhB,GAAU5D,KAAK,KAC9C,MAAIyD,EAAW3kB,OAASikB,GACxB,MAAIa,KAAajW,EAAK7O,OAAe2kB,EAC9BA,EAAa,IAGtB,MAAO,GAGT,QAASpb,GAASka,EAAOld,GAcvB,QAASwe,GAAeC,GACtB,MAAI3c,GAAQ2c,GACHA,EAAYV,IAAI,SAASC,GAC9B,MAAOQ,GAAeR,KAItBpc,EAAc6c,GACTpW,OAAOC,KAAKmW,GAAaZ,OAAO,SAASC,EAAKY,GAMnD,MAJEZ,GAAIY,GADFC,EAAejW,KAAKgW,GACbE,EAEAJ,EAAeC,EAAYC,IAE/BZ,OAIJW,EA/BT,IAAK3c,EAAQ9B,IAAkB8B,EAAQ9B,IAAyC,IAAxBA,EAAavG,OACnE,MAAOyjB,EAET,IAEI2B,GAFAF,EAAiBtc,EAAWrC,GAC5B4e,EAAe,UAGnB,KACEC,EAAY7gB,KAAKkM,MAAMjM,EAAUif,IACjC,MAAO4B,GACP,MAAO5B,GAwBT,MAAOsB,GAAeK,GA5lBxB,GAAI5gB,GAAYtE,EAAQ,GAEpBqF,EACgB,mBAAX1G,QACHA,OACkB,mBAAXC,GAAyBA,EAAyB,mBAATC,MAAuBA,QA0dzE0lB,EAAgC,EAEhCC,EAA+B,MAC/BG,EAA4B,EA6HhCpmB,GAAOD,SACL0J,SAAUA,EACVD,QAASA,EACTH,aAAcA,EACdC,WAAYA,EACZC,eAAgBA,EAChBtD,YAAaA,EACbL,WAAYA,EACZ8D,cAAeA,EACfC,SAAUA,EACVC,QAASA,EACTC,cAAeA,EACfuX,mBAAoBA,EACpBE,iBAAkBA,EAClBE,qBAAsBA,EACtB7W,cAAeA,EACfxC,uBAAwBA,EACxByZ,8BAA+BA,EAC/B/e,gBAAiBA,EACjBiH,KAAMA,EACNC,YAAaA,EACbC,SAAUA,EACVC,aAAcA,EACdC,OAAQA,EACRC,WAAYA,EACZC,UAAWA,EACXC,MAAOA,EACPC,iBAAkBA,EAClByZ,oBAAqBA,EACrBxZ,gBAAiBA,EACjBC,iBAAkBA,EAClBC,SAAUA,EACVC,KAAMA,EACNvF,SAAUA,EACV0F,mBAAoBA,EACpBD,wBAAyBA,EACzBE,SAAUA,KAGTxJ,KAAKf,KAAuB,mBAAXF,QAAyBA,OAAyB,mBAATC,MAAuBA,KAAyB,mBAAXF,QAAyBA,aACxH0gB,EAAI,IAAID,GAAG,SAASpf,EAAQzB,EAAOD,IACtC,SAAWM,GA+BX,QAASwmB,KACP,MAAwB,mBAAb1b,WAAiD,MAArBA,SAASpC,SAAyB,GAClEoC,SAASpC,SAASE,KAG3B,QAAS6d,KACP,MAAwB,mBAAb3b,WAAiD,MAArBA,SAASpC,SAAyB,GAClEoC,SAASpC,SAASge,OArC3B,GAAIxiB,GAAQ9C,EAAQ,GAYhB0H,GACF7B,qBAAqB,EACrBgE,OAAO,GAILxE,EACgB,mBAAX1G,QACHA,OACkB,mBAAXC,GAAyBA,EAAyB,mBAATC,MAAuBA,QAGzE0mB,KAAYhiB,MACZiiB,EAAmB,IAGnBC,EAAiB,yGAmDrB/d,GAASwD,OAAS,WAUhB,QAASC,GAAUua,GACjBC,IACAC,EAASxb,KAAKsb,GAOhB,QAASG,GAAYH,GACnB,IAAK,GAAIjmB,GAAImmB,EAAS9lB,OAAS,EAAGL,GAAK,IAAKA,EACtCmmB,EAASnmB,KAAOimB,GAClBE,EAASE,OAAOrmB,EAAG,GAQzB,QAASsmB,KACPC,IACAJ,KAOF,QAASK,GAAe9X,EAAO+X,GAC7B,GAAI1kB,GAAY,IAChB,KAAI0kB,GAAkBxe,EAAS7B,oBAA/B,CAGA,IAAK,GAAIpG,KAAKmmB,GACZ,GAAIA,EAAS7Q,eAAetV,GAC1B,IACEmmB,EAASnmB,GAAGoE,MAAM,MAAOsK,GAAOqK,OAAO+M,EAAO1lB,KAAK2D,UAAW,KAC9D,MAAO2iB,GACP3kB,EAAY2kB,EAKlB,GAAI3kB,EACF,KAAMA,IAiBV,QAAS4kB,GAAsB3iB,EAAKyL,EAAKmX,EAAQC,EAAO1lB,GACtD,GAAIuN,GAAQ,KAER3M,EAAYsB,EAAM8E,aAAahH,GAAMA,EAAGmN,MAAQnN,EAEhDkB,EAAUgB,EAAM8E,aAAanE,GAAOA,EAAI3B,QAAU2B,CAEtD,IAAI8iB,EACF7e,EAAS0G,kBAAkBoY,oCACzBD,EACArX,EACAmX,EACAvkB,GAEF2kB,QACK,IAAIjlB,GAAasB,EAAMiF,QAAQvG,GAMpC2M,EAAQzG,EAAS0G,kBAAkB5M,GACnCykB,EAAe9X,GAAO,OACjB,CACL,GAOIuY,GAPApf,GACF4H,IAAKA,EACL2K,KAAMwM,EACNtM,OAAQuM,GAGN5jB,EAAO6J,MAGX,IAAkC,uBAA3B1B,SAAShL,KAAKiC,GAAgC,CACnD,GAAI4kB,GAAS5kB,EAAQof,MAAMuE,EACvBiB,KACFhkB,EAAOgkB,EAAO,GACd5kB,EAAU4kB,EAAO,IAIrBpf,EAASgF,KAAOkZ,EAEhBrX,GACEzL,KAAMA,EACNZ,QAASA,EACToN,IAAKkW,IACLjX,OAAQ7G,IAEV2e,EAAe9X,GAAO,GAGxB,QAAIwY,GACKA,EAAmB9iB,MAAM/E,KAAM0E,WAM1C,QAASmiB,KACHiB,IAGJD,EAAqBthB,EAAQmZ,QAC7BnZ,EAAQmZ,QAAU4H,EAClBQ,GAA2B,GAG7B,QAASZ,KACFY,IAGLvhB,EAAQmZ,QAAUmI,EAClBC,GAA2B,EAC3BD,EAAqBpa,QAGvB,QAASka,KACP,GAAII,GAAsBN,EACxBO,EAAYC,CACdA,GAAW,KACXR,EAAqB,KACrBtV,EAAgB,KAChBgV,EAAepiB,MAAM,MAAOgjB,GAAqB,GAAOrO,OAAOsO,IAUjE,QAAS5b,GAAOtK,EAAIomB,GAClB,GAAI1jB,GAAOiiB,EAAO1lB,KAAK2D,UAAW,EAClC,IAAI+iB,EAAoB,CACtB,GAAItV,IAAkBrQ,EACpB,MAEA6lB,KAIJ,GAAItY,GAAQzG,EAAS0G,kBAAkBxN,EAevC,IAdA2lB,EAAqBpY,EACrB8C,EAAgBrQ,EAChBmmB,EAAWzjB,EAMX+O,WAAW,WACLpB,IAAkBrQ,GACpB6lB,KAEDtY,EAAM8Y,WAAa,IAAO,GAEzBD,KAAY,EACd,KAAMpmB,GA9LV,GA0DI+lB,GAAoBC,EA1DpBhB,KACFmB,EAAW,KACX9V,EAAgB,KAChBsV,EAAqB,IAkMvB,OAHArb,GAAOC,UAAYA,EACnBD,EAAO2a,YAAcA,EACrB3a,EAAO6B,UAAYgZ,EACZ7a,KAsDTxD,EAAS0G,kBAAoB,WA4C3B,QAAS8Y,GAA+BtmB,GACtC,GAAwB,mBAAbA,GAAGuN,OAA0BvN,EAAGuN,MAA3C,CAiBA,IAAK,GALDgZ,GACAC,EACAC,EAZAlQ,EAAS,0IACTmQ,EAAQ,wHAGRC,EAAQ,6JAERC,EAAY,gDACZC,EAAa,gCACbC,EAAQ9mB,EAAGuN,MAAM3E,MAAM,MACvB2E,KAMK1O,GAFO,sBAAsBkC,KAAKf,EAAGkB,SAEjC,GAAG4U,EAAIgR,EAAM5nB,OAAQL,EAAIiX,IAAKjX,EAAG,CAC5C,GAAK2nB,EAAQjQ,EAAOxV,KAAK+lB,EAAMjoB,IAAM,CACnC,GAAIkoB,GAAWP,EAAM,IAAqC,IAA/BA,EAAM,GAAGlR,QAAQ,UACxC0R,EAASR,EAAM,IAAmC,IAA7BA,EAAM,GAAGlR,QAAQ,OACtC0R,KAAWT,EAAWM,EAAW9lB,KAAKylB,EAAM,OAE9CA,EAAM,GAAKD,EAAS,GACpBC,EAAM,GAAKD,EAAS,GACpBC,EAAM,GAAKD,EAAS,IAEtBE,GACEnY,IAAMyY,EAAsB,KAAXP,EAAM,GACvB9a,KAAM8a,EAAM,IAAM5B,EAClBliB,KAAMqkB,GAAYP,EAAM,OACxBvN,KAAMuN,EAAM,IAAMA,EAAM,GAAK,KAC7BrN,OAAQqN,EAAM,IAAMA,EAAM,GAAK,UAE5B,IAAKA,EAAQE,EAAM3lB,KAAK+lB,EAAMjoB,IACnC4nB,GACEnY,IAAKkY,EAAM,GACX9a,KAAM8a,EAAM,IAAM5B,EAClBliB,QACAuW,MAAOuN,EAAM,GACbrN,OAAQqN,EAAM,IAAMA,EAAM,GAAK,UAE5B,CAAA,KAAKA,EAAQG,EAAM5lB,KAAK+lB,EAAMjoB,KAsBnC,QArBA,IAAImoB,GAASR,EAAM,IAAMA,EAAM,GAAGlR,QAAQ,aACtC0R,KAAWT,EAAWK,EAAU7lB,KAAKylB,EAAM,MAE7CA,EAAM,GAAKD,EAAS,GACpBC,EAAM,GAAKD,EAAS,GACpBC,EAAM,GAAK,MACI,IAAN3nB,GAAY2nB,EAAM,IAAiC,mBAApBxmB,GAAGinB,eAK3C1Z,EAAM,GAAG4L,OAASnZ,EAAGinB,aAAe,GAEtCR,GACEnY,IAAKkY,EAAM,GACX9a,KAAM8a,EAAM,IAAM5B,EAClBliB,KAAM8jB,EAAM,GAAKA,EAAM,GAAG5d,MAAM,QAChCqQ,KAAMuN,EAAM,IAAMA,EAAM,GAAK,KAC7BrN,OAAQqN,EAAM,IAAMA,EAAM,GAAK,MAUnC,IAJKC,EAAQ/a,MAAQ+a,EAAQxN,OAC3BwN,EAAQ/a,KAAOkZ,GAGb6B,EAAQnY,KAAoC,UAA7BmY,EAAQnY,IAAIlN,OAAO,EAAG,GAAgB,CAMvD,GAAI0I,GAAM,GAAIsL,eAKd,IAJAtL,EAAI+T,KAAK,MAAO4I,EAAQnY,KAAK,GAC7BxE,EAAIiU,KAAK,MAGU,MAAfjU,EAAI8L,OAAgB,CACtB,GAAIsK,GAASpW,EAAIod,cAAgB,EAIjChH,GAASA,EAAOvd,WAGhB,IAAIwkB,GAAajH,EAAOI,MAAM,+BAG9B,IAAI6G,EAAY,CACd,GAAIC,GAAmBD,EAAW,EAIC,OAA/BC,EAAiBC,OAAO,KAC1BD,EAAmB3C,IAAsB2C,EAAiBzkB,MAAM,IAKlE8jB,EAAQnY,IAAM8Y,EAAiBzkB,MAAM,QAK3C4K,EAAM/D,KAAKid,GAGb,MAAKlZ,GAAMrO,QAKT4C,KAAM9B,EAAG8B,KACTZ,QAASlB,EAAGkB,QACZoN,IAAKkW,IACLjX,MAAOA,GAPA,MAwBX,QAASqY,GAAoCvN,EAAW/J,EAAKmX,EAAQvkB,GACnE,GAAIomB,IACFhZ,IAAKA,EACL2K,KAAMwM,EAGR,IAAI6B,EAAQhZ,KAAOgZ,EAAQrO,KAAM,CAO/B,GANAZ,EAAUgO,YAAa,EAElBiB,EAAQ5b,OACX4b,EAAQ5b,KAAOkZ,GAGbvM,EAAU9K,MAAMrO,OAAS,GACvBmZ,EAAU9K,MAAM,GAAGe,MAAQgZ,EAAQhZ,IAAK,CAC1C,GAAI+J,EAAU9K,MAAM,GAAG0L,OAASqO,EAAQrO,KACtC,OAAO,CACF,KACJZ,EAAU9K,MAAM,GAAG0L,MACpBZ,EAAU9K,MAAM,GAAG7B,OAAS4b,EAAQ5b,KAGpC,MADA2M,GAAU9K,MAAM,GAAG0L,KAAOqO,EAAQrO,MAC3B,EAOb,MAFAZ,GAAU9K,MAAMga,QAAQD,GACxBjP,EAAUmP,SAAU,GACb,EAKT,MAHEnP,GAAUgO,YAAa,GAGlB,EAYT,QAASoB,GAAsCznB,EAAIqjB,GASjD,IACE,GALAmD,GACAkB,EALEC,EAAe,qEACjBpa,KACAqa,KACAC,GAAY,EAMRC,EAAOL,EAAsCM,OACjDD,IAASD,EACTC,EAAOA,EAAKC,OAEZ,GAAID,IAASta,GAAqBsa,IAAShhB,EAASwD,OAApD;AAkBA,GAbAod,GACEpZ,IAAK,KACL5C,KAAMkZ,EACN3L,KAAM,KACNE,OAAQ,MAGN2O,EAAKhmB,KACP4lB,EAAKhc,KAAOoc,EAAKhmB,MACP0kB,EAAQmB,EAAa5mB,KAAK+mB,EAAK7d,eACzCyd,EAAKhc,KAAO8a,EAAM,IAGK,mBAAdkB,GAAKhc,KACd,IACEgc,EAAKhc,KAAO8a,EAAM7D,MAAMqF,UAAU,EAAGxB,EAAM7D,MAAMrN,QAAQ,MACzD,MAAOlX,IAGPwpB,EAAM,GAAKE,GACbD,GAAY,EAEZD,EAAM,GAAKE,IAAQ,EAGrBva,EAAM/D,KAAKke,GAGTrE,GAGF9V,EAAM2X,OAAO,EAAG7B,EAGlB,IAAIrU,IACFlN,KAAM9B,EAAG8B,KACTZ,QAASlB,EAAGkB,QACZoN,IAAKkW,IACLjX,MAAOA,EAQT,OANAqY,GACE5W,EACAhP,EAAGioB,WAAajoB,EAAGkoB,SACnBloB,EAAGiZ,MAAQjZ,EAAGmoB,WACdnoB,EAAGkB,SAAWlB,EAAGooB,aAEZpZ,EAQT,QAASxB,GAAkBxN,EAAIqjB,GAC7B,GAAI9V,GAAQ,IACZ8V,GAAiB,MAATA,EAAgB,GAAKA,CAE7B,KAEE,GADA9V,EAAQ+Y,EAA+BtmB,GAErC,MAAOuN,GAET,MAAOnP,GACP,GAAI0I,EAASmC,MACX,KAAM7K,GAIV,IAEE,GADAmP,EAAQka,EAAsCznB,EAAIqjB,EAAQ,GAExD,MAAO9V,GAET,MAAOnP,GACP,GAAI0I,EAASmC,MACX,KAAM7K,GAGV,OACE0D,KAAM9B,EAAG8B,KACTZ,QAASlB,EAAGkB,QACZoN,IAAKkW,KAOT,MAHAhX,GAAkBoY,oCAAsCA,EACxDpY,EAAkB8Y,+BAAiCA,EAE5C9Y,KAGT7P,EAAOD,QAAUoJ,IAEd7H,KAAKf,KAAuB,mBAAXF,QAAyBA,OAAyB,mBAATC,MAAuBA,KAAyB,mBAAXF,QAAyBA,aACxHwD,EAAI,IAAIkd,GAAG,SAASrf,EAAQzB,EAAOD,GAetC,QAAS4X,GAAQ+S,EAAUC,GACzB,IAAK,GAAIzpB,GAAI,EAAGA,EAAIwpB,EAASnpB,SAAUL,EACrC,GAAIwpB,EAASxpB,KAAOypB,EAAQ,MAAOzpB,EAErC,UAGF,QAAS6E,GAAUkL,EAAK2Z,EAAUC,EAAQC,GACxC,MAAOhlB,MAAKC,UAAUkL,EAAK8Z,EAAWH,EAAUE,GAAgBD,GAIlE,QAASG,GAAe3nB,GACtB,GAAIuT,IAEFhH,MAAOvM,EAAMuM,MACbrM,QAASF,EAAME,QACfY,KAAMd,EAAMc,KAGd,KAAK,GAAIjD,KAAKmC,GACR8M,OAAO/L,UAAUoS,eAAelV,KAAK+B,EAAOnC,KAC9C0V,EAAI1V,GAAKmC,EAAMnC,GAInB,OAAO0V,GAGT,QAASmU,GAAWH,EAAUE,GAC5B,GAAIlb,MACAQ,IAWJ,OATqB,OAAjB0a,IACFA,EAAgB,SAASnf,EAAKtI,GAC5B,MAAIuM,GAAM,KAAOvM,EACR,eAEF,eAAiB+M,EAAKpL,MAAM,EAAG2S,EAAQ/H,EAAOvM,IAAQof,KAAK,KAAO,MAItE,SAAS9W,EAAKtI,GACnB,GAAIuM,EAAMrO,OAAS,EAAG,CACpB,GAAI0pB,GAAUtT,EAAQ/H,EAAOrP,OAC5B0qB,EAAUrb,EAAM2X,OAAO0D,EAAU,GAAKrb,EAAM/D,KAAKtL,OACjD0qB,EAAU7a,EAAKmX,OAAO0D,EAASC,EAAAA,EAAUvf,GAAOyE,EAAKvE,KAAKF,IAEtDgM,EAAQ/H,EAAOvM,KAClBA,EAAQynB,EAAcxpB,KAAKf,KAAMoL,EAAKtI,QAGxCuM,GAAM/D,KAAKxI,EAGb,OAAmB,OAAZunB,EACHvnB,YAAiBlC,OAAQ6pB,EAAe3nB,GAASA,EACjDunB,EAAStpB,KAAKf,KAAMoL,EAAKtI,IA5DjCtD,EAAUC,EAAOD,QAAUgG,EAC3BhG,EAAQorB,aAAeJ,OA+DjBnK,IAAI,SAASnf,EAAQzB,EAAOD,GAwBlC,QAASqrB,GAAQC,EAAGC,GAClB,GAAIC,IAAW,MAAJF,IAAmB,MAAJC,GACtBE,GAAOH,GAAK,KAAOC,GAAK,KAAOC,GAAO,GAC1C,OAAQC,IAAO,GAAa,MAAND,EAMxB,QAASE,GAAcrI,EAAKsI,GAC1B,MAAQtI,IAAOsI,EAAQtI,IAAS,GAAKsI,EAMvC,QAASC,GAAOC,EAAG5qB,EAAGujB,EAAG8G,EAAGxqB,EAAGH,GAC7B,MAAO0qB,GAAQK,EAAcL,EAAQA,EAAQpqB,EAAG4qB,GAAIR,EAAQC,EAAG3qB,IAAKG,GAAI0jB,GAE1E,QAASsH,GAAM7qB,EAAGujB,EAAGjB,EAAGwI,EAAGT,EAAGxqB,EAAGH,GAC/B,MAAOirB,GAAQpH,EAAIjB,GAAOiB,EAAIuH,EAAI9qB,EAAGujB,EAAG8G,EAAGxqB,EAAGH,GAEhD,QAASqrB,GAAM/qB,EAAGujB,EAAGjB,EAAGwI,EAAGT,EAAGxqB,EAAGH,GAC/B,MAAOirB,GAAQpH,EAAIuH,EAAMxI,GAAKwI,EAAI9qB,EAAGujB,EAAG8G,EAAGxqB,EAAGH,GAEhD,QAASsrB,GAAMhrB,EAAGujB,EAAGjB,EAAGwI,EAAGT,EAAGxqB,EAAGH,GAC/B,MAAOirB,GAAOpH,EAAIjB,EAAIwI,EAAG9qB,EAAGujB,EAAG8G,EAAGxqB,EAAGH,GAEvC,QAASurB,GAAMjrB,EAAGujB,EAAGjB,EAAGwI,EAAGT,EAAGxqB,EAAGH,GAC/B,MAAOirB,GAAOrI,GAAKiB,GAAKuH,GAAI9qB,EAAGujB,EAAG8G,EAAGxqB,EAAGH,GAM1C,QAASwrB,GAAQb,EAAG/I,GAElB+I,EAAE/I,GAAO,IAAM,KAASA,EAAM,GAC9B+I,GAAK/I,EAAM,KAAQ,GAAM,GAAK,IAAMA,CAEpC,IAAIphB,GACAirB,EACAC,EACAC,EACAC,EACAtrB,EAAI,WACJujB,aACAjB,cACAwI,EAAI,SAER,KAAK5qB,EAAI,EAAGA,EAAImqB,EAAE9pB,OAAQL,GAAK,GAC7BirB,EAAOnrB,EACPorB,EAAO7H,EACP8H,EAAO/I,EACPgJ,EAAOR,EAEP9qB,EAAI6qB,EAAM7qB,EAAGujB,EAAGjB,EAAGwI,EAAGT,EAAEnqB,GAAI,cAC5B4qB,EAAID,EAAMC,EAAG9qB,EAAGujB,EAAGjB,EAAG+H,EAAEnqB,EAAI,GAAI,eAChCoiB,EAAIuI,EAAMvI,EAAGwI,EAAG9qB,EAAGujB,EAAG8G,EAAEnqB,EAAI,GAAI,GAAI,WACpCqjB,EAAIsH,EAAMtH,EAAGjB,EAAGwI,EAAG9qB,EAAGqqB,EAAEnqB,EAAI,GAAI,gBAChCF,EAAI6qB,EAAM7qB,EAAGujB,EAAGjB,EAAGwI,EAAGT,EAAEnqB,EAAI,GAAI,cAChC4qB,EAAID,EAAMC,EAAG9qB,EAAGujB,EAAGjB,EAAG+H,EAAEnqB,EAAI,GAAI,GAAI,YACpCoiB,EAAIuI,EAAMvI,EAAGwI,EAAG9qB,EAAGujB,EAAG8G,EAAEnqB,EAAI,GAAI,gBAChCqjB,EAAIsH,EAAMtH,EAAGjB,EAAGwI,EAAG9qB,EAAGqqB,EAAEnqB,EAAI,GAAI,cAChCF,EAAI6qB,EAAM7qB,EAAGujB,EAAGjB,EAAGwI,EAAGT,EAAEnqB,EAAI,GAAI,EAAG,YACnC4qB,EAAID,EAAMC,EAAG9qB,EAAGujB,EAAGjB,EAAG+H,EAAEnqB,EAAI,GAAI,gBAChCoiB,EAAIuI,EAAMvI,EAAGwI,EAAG9qB,EAAGujB,EAAG8G,EAAEnqB,EAAI,IAAK,WACjCqjB,EAAIsH,EAAMtH,EAAGjB,EAAGwI,EAAG9qB,EAAGqqB,EAAEnqB,EAAI,IAAK,gBACjCF,EAAI6qB,EAAM7qB,EAAGujB,EAAGjB,EAAGwI,EAAGT,EAAEnqB,EAAI,IAAK,EAAG,YACpC4qB,EAAID,EAAMC,EAAG9qB,EAAGujB,EAAGjB,EAAG+H,EAAEnqB,EAAI,IAAK,cACjCoiB,EAAIuI,EAAMvI,EAAGwI,EAAG9qB,EAAGujB,EAAG8G,EAAEnqB,EAAI,IAAK,gBACjCqjB,EAAIsH,EAAMtH,EAAGjB,EAAGwI,EAAG9qB,EAAGqqB,EAAEnqB,EAAI,IAAK,GAAI,YAErCF,EAAI+qB,EAAM/qB,EAAGujB,EAAGjB,EAAGwI,EAAGT,EAAEnqB,EAAI,GAAI,cAChC4qB,EAAIC,EAAMD,EAAG9qB,EAAGujB,EAAGjB,EAAG+H,EAAEnqB,EAAI,GAAI,eAChCoiB,EAAIyI,EAAMzI,EAAGwI,EAAG9qB,EAAGujB,EAAG8G,EAAEnqB,EAAI,IAAK,GAAI,WACrCqjB,EAAIwH,EAAMxH,EAAGjB,EAAGwI,EAAG9qB,EAAGqqB,EAAEnqB,GAAI,eAC5BF,EAAI+qB,EAAM/qB,EAAGujB,EAAGjB,EAAGwI,EAAGT,EAAEnqB,EAAI,GAAI,cAChC4qB,EAAIC,EAAMD,EAAG9qB,EAAGujB,EAAGjB,EAAG+H,EAAEnqB,EAAI,IAAK,EAAG,UACpCoiB,EAAIyI,EAAMzI,EAAGwI,EAAG9qB,EAAGujB,EAAG8G,EAAEnqB,EAAI,IAAK,eACjCqjB,EAAIwH,EAAMxH,EAAGjB,EAAGwI,EAAG9qB,EAAGqqB,EAAEnqB,EAAI,GAAI,eAChCF,EAAI+qB,EAAM/qB,EAAGujB,EAAGjB,EAAGwI,EAAGT,EAAEnqB,EAAI,GAAI,EAAG,WACnC4qB,EAAIC,EAAMD,EAAG9qB,EAAGujB,EAAGjB,EAAG+H,EAAEnqB,EAAI,IAAK,eACjCoiB,EAAIyI,EAAMzI,EAAGwI,EAAG9qB,EAAGujB,EAAG8G,EAAEnqB,EAAI,GAAI,eAChCqjB,EAAIwH,EAAMxH,EAAGjB,EAAGwI,EAAG9qB,EAAGqqB,EAAEnqB,EAAI,GAAI,GAAI,YACpCF,EAAI+qB,EAAM/qB,EAAGujB,EAAGjB,EAAGwI,EAAGT,EAAEnqB,EAAI,IAAK,eACjC4qB,EAAIC,EAAMD,EAAG9qB,EAAGujB,EAAGjB,EAAG+H,EAAEnqB,EAAI,GAAI,aAChCoiB,EAAIyI,EAAMzI,EAAGwI,EAAG9qB,EAAGujB,EAAG8G,EAAEnqB,EAAI,GAAI,GAAI,YACpCqjB,EAAIwH,EAAMxH,EAAGjB,EAAGwI,EAAG9qB,EAAGqqB,EAAEnqB,EAAI,IAAK,gBAEjCF,EAAIgrB,EAAMhrB,EAAGujB,EAAGjB,EAAGwI,EAAGT,EAAEnqB,EAAI,GAAI,WAChC4qB,EAAIE,EAAMF,EAAG9qB,EAAGujB,EAAGjB,EAAG+H,EAAEnqB,EAAI,GAAI,gBAChCoiB,EAAI0I,EAAM1I,EAAGwI,EAAG9qB,EAAGujB,EAAG8G,EAAEnqB,EAAI,IAAK,GAAI,YACrCqjB,EAAIyH,EAAMzH,EAAGjB,EAAGwI,EAAG9qB,EAAGqqB,EAAEnqB,EAAI,IAAK,cACjCF,EAAIgrB,EAAMhrB,EAAGujB,EAAGjB,EAAGwI,EAAGT,EAAEnqB,EAAI,GAAI,eAChC4qB,EAAIE,EAAMF,EAAG9qB,EAAGujB,EAAGjB,EAAG+H,EAAEnqB,EAAI,GAAI,GAAI,YACpCoiB,EAAI0I,EAAM1I,EAAGwI,EAAG9qB,EAAGujB,EAAG8G,EAAEnqB,EAAI,GAAI,eAChCqjB,EAAIyH,EAAMzH,EAAGjB,EAAGwI,EAAG9qB,EAAGqqB,EAAEnqB,EAAI,IAAK,gBACjCF,EAAIgrB,EAAMhrB,EAAGujB,EAAGjB,EAAGwI,EAAGT,EAAEnqB,EAAI,IAAK,EAAG,WACpC4qB,EAAIE,EAAMF,EAAG9qB,EAAGujB,EAAGjB,EAAG+H,EAAEnqB,GAAI,eAC5BoiB,EAAI0I,EAAM1I,EAAGwI,EAAG9qB,EAAGujB,EAAG8G,EAAEnqB,EAAI,GAAI,eAChCqjB,EAAIyH,EAAMzH,EAAGjB,EAAGwI,EAAG9qB,EAAGqqB,EAAEnqB,EAAI,GAAI,GAAI,UACpCF,EAAIgrB,EAAMhrB,EAAGujB,EAAGjB,EAAGwI,EAAGT,EAAEnqB,EAAI,GAAI,cAChC4qB,EAAIE,EAAMF,EAAG9qB,EAAGujB,EAAGjB,EAAG+H,EAAEnqB,EAAI,IAAK,eACjCoiB,EAAI0I,EAAM1I,EAAGwI,EAAG9qB,EAAGujB,EAAG8G,EAAEnqB,EAAI,IAAK,GAAI,WACrCqjB,EAAIyH,EAAMzH,EAAGjB,EAAGwI,EAAG9qB,EAAGqqB,EAAEnqB,EAAI,GAAI,eAEhCF,EAAIirB,EAAMjrB,EAAGujB,EAAGjB,EAAGwI,EAAGT,EAAEnqB,GAAI,cAC5B4qB,EAAIG,EAAMH,EAAG9qB,EAAGujB,EAAGjB,EAAG+H,EAAEnqB,EAAI,GAAI,GAAI,YACpCoiB,EAAI2I,EAAM3I,EAAGwI,EAAG9qB,EAAGujB,EAAG8G,EAAEnqB,EAAI,IAAK,gBACjCqjB,EAAI0H,EAAM1H,EAAGjB,EAAGwI,EAAG9qB,EAAGqqB,EAAEnqB,EAAI,GAAI,cAChCF,EAAIirB,EAAMjrB,EAAGujB,EAAGjB,EAAGwI,EAAGT,EAAEnqB,EAAI,IAAK,EAAG,YACpC4qB,EAAIG,EAAMH,EAAG9qB,EAAGujB,EAAGjB,EAAG+H,EAAEnqB,EAAI,GAAI,gBAChCoiB,EAAI2I,EAAM3I,EAAGwI,EAAG9qB,EAAGujB,EAAG8G,EAAEnqB,EAAI,IAAK,aACjCqjB,EAAI0H,EAAM1H,EAAGjB,EAAGwI,EAAG9qB,EAAGqqB,EAAEnqB,EAAI,GAAI,gBAChCF,EAAIirB,EAAMjrB,EAAGujB,EAAGjB,EAAGwI,EAAGT,EAAEnqB,EAAI,GAAI,EAAG,YACnC4qB,EAAIG,EAAMH,EAAG9qB,EAAGujB,EAAGjB,EAAG+H,EAAEnqB,EAAI,IAAK,cACjCoiB,EAAI2I,EAAM3I,EAAGwI,EAAG9qB,EAAGujB,EAAG8G,EAAEnqB,EAAI,GAAI,gBAChCqjB,EAAI0H,EAAM1H,EAAGjB,EAAGwI,EAAG9qB,EAAGqqB,EAAEnqB,EAAI,IAAK,GAAI,YACrCF,EAAIirB,EAAMjrB,EAAGujB,EAAGjB,EAAGwI,EAAGT,EAAEnqB,EAAI,GAAI,cAChC4qB,EAAIG,EAAMH,EAAG9qB,EAAGujB,EAAGjB,EAAG+H,EAAEnqB,EAAI,IAAK,gBACjCoiB,EAAI2I,EAAM3I,EAAGwI,EAAG9qB,EAAGujB,EAAG8G,EAAEnqB,EAAI,GAAI,GAAI,WACpCqjB,EAAI0H,EAAM1H,EAAGjB,EAAGwI,EAAG9qB,EAAGqqB,EAAEnqB,EAAI,GAAI,eAEhCF,EAAIoqB,EAAQpqB,EAAGmrB,GACf5H,EAAI6G,EAAQ7G,EAAG6H,GACf9I,EAAI8H,EAAQ9H,EAAG+I,GACfP,EAAIV,EAAQU,EAAGQ,EAEjB,QAAQtrB,EAAGujB,EAAGjB,EAAGwI,GAMnB,QAASS,GAAUvH,GACjB,GAAI9jB,GACAgkB,EAAS,GACTsH,EAA0B,GAAfxH,EAAMzjB,MACrB,KAAKL,EAAI,EAAGA,EAAIsrB,EAAUtrB,GAAK,EAC7BgkB,GAAUC,OAAOsH,aAAczH,EAAM9jB,GAAK,KAAQA,EAAI,GAAO,IAE/D,OAAOgkB,GAOT,QAASwH,GAAU1H,GACjB,GAAI9jB,GACAgkB,IAEJ,KADAA,GAAQF,EAAMzjB,QAAU,GAAK,GAAKyM,OAC7B9M,EAAI,EAAGA,EAAIgkB,EAAO3jB,OAAQL,GAAK,EAClCgkB,EAAOhkB,GAAK,CAEd,IAAIyrB,GAAyB,EAAf3H,EAAMzjB,MACpB,KAAKL,EAAI,EAAGA,EAAIyrB,EAASzrB,GAAK,EAC5BgkB,EAAOhkB,GAAK,KAAiC,IAA1B8jB,EAAM4H,WAAW1rB,EAAI,KAAeA,EAAI,EAE7D,OAAOgkB,GAMT,QAAS2H,GAAQhsB,GACf,MAAO0rB,GAAUL,EAAQQ,EAAU7rB,GAAe,EAAXA,EAAEU,SAM3C,QAASurB,GAAYnhB,EAAK7I,GACxB,GAAI5B,GAIAof,EAHAyM,EAAOL,EAAU/gB,GACjBqhB,KACAC,IAMJ,KAJAD,EAAK,IAAMC,EAAK,IAAMjf,OAClB+e,EAAKxrB,OAAS,KAChBwrB,EAAOb,EAAQa,EAAmB,EAAbphB,EAAIpK,SAEtBL,EAAI,EAAGA,EAAI,GAAIA,GAAK,EACvB8rB,EAAK9rB,GAAe,UAAV6rB,EAAK7rB,GACf+rB,EAAK/rB,GAAe,WAAV6rB,EAAK7rB,EAGjB,OADAof,GAAO4L,EAAQc,EAAK/S,OAAOyS,EAAU5pB,IAAQ,IAAoB,EAAdA,EAAKvB,QACjDgrB,EAAUL,EAAQe,EAAKhT,OAAOqG,GAAO,MAM9C,QAAS4M,GAASlI,GAChB,GAEIqG,GACAnqB,EAHAisB,EAAS,mBACTjI,EAAS,EAGb,KAAKhkB,EAAI,EAAGA,EAAI8jB,EAAMzjB,OAAQL,GAAK,EACjCmqB,EAAIrG,EAAM4H,WAAW1rB,GACrBgkB,GAAUiI,EAAOzD,OAAQ2B,IAAM,EAAK,IAAQ8B,EAAOzD,OAAW,GAAJ2B,EAE5D,OAAOnG,GAMT,QAASkI,GAAapI,GACpB,MAAOqI,UAASna,mBAAmB8R,IAMrC,QAASsI,GAAOzsB,GACd,MAAOgsB,GAAQO,EAAavsB,IAE9B,QAAS0sB,GAAO1sB,GACd,MAAOqsB,GAASI,EAAOzsB,IAEzB,QAAS2sB,GAAWhH,EAAGsF,GACrB,MAAOgB,GAAYM,EAAa5G,GAAI4G,EAAatB,IAEnD,QAAS2B,GAAWjH,EAAGsF,GACrB,MAAOoB,GAASM,EAAWhH,EAAGsF,IAGhC,QAAS1iB,GAAIskB,EAAQ/hB,EAAKgiB,GACxB,MAAKhiB,GAMAgiB,EAGEH,EAAW7hB,EAAK+hB,GAFdD,EAAW9hB,EAAK+hB,GANlBC,EAGEL,EAAOI,GAFLH,EAAOG,GAUpB1tB,EAAOD,QAAUqJ,YAEN,EAAE,EAAE,IAAI","file":"raven.min.js"} \ No newline at end of file diff --git a/dist/angular,vue/raven.js b/dist/angular,vue/raven.js index 98c1951a02a0..7357e2517659 100644 --- a/dist/angular,vue/raven.js +++ b/dist/angular,vue/raven.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.24.2 (540f32b) | github.com/getsentry/raven-js */ +/*! Raven.js 3.25.0 (80dffad) | github.com/getsentry/raven-js */ /* * Includes TraceKit @@ -201,10 +201,12 @@ var md5 = _dereq_(10); var RavenConfigError = _dereq_(3); var utils = _dereq_(7); +var isErrorEvent = utils.isErrorEvent; +var isDOMError = utils.isDOMError; +var isDOMException = utils.isDOMException; var isError = utils.isError; var isObject = utils.isObject; var isPlainObject = utils.isPlainObject; -var isErrorEvent = utils.isErrorEvent; var isUndefined = utils.isUndefined; var isFunction = utils.isFunction; var isString = utils.isString; @@ -332,7 +334,7 @@ Raven.prototype = { // webpack (using a build step causes webpack #1617). Grunt verifies that // this value matches package.json during build. // See: https://github.com/getsentry/raven-js/issues/465 - VERSION: '3.24.2', + VERSION: '3.25.0', debug: false, @@ -664,6 +666,23 @@ Raven.prototype = { if (isErrorEvent(ex) && ex.error) { // If it is an ErrorEvent with `error` property, extract it to get actual Error ex = ex.error; + } else if (isDOMError(ex) || isDOMException(ex)) { + // If it is a DOMError or DOMException (which are legacy APIs, but still supported in some browsers) + // then we just extract the name and message, as they don't provide anything else + // https://developer.mozilla.org/en-US/docs/Web/API/DOMError + // https://developer.mozilla.org/en-US/docs/Web/API/DOMException + var name = ex.name || (isDOMError(ex) ? 'DOMError' : 'DOMException'); + var message = ex.message ? name + ': ' + ex.message : name; + + return this.captureMessage( + message, + objectMerge(options, { + // neither DOMError or DOMException provide stack trace and we most likely wont get it this way as well + // but it's barely any overhead so we may at least try + stacktrace: true, + trimHeadFrames: options.trimHeadFrames + 1 + }) + ); } else if (isError(ex)) { // we have a real Error object ex = ex; @@ -675,6 +694,7 @@ Raven.prototype = { ex = new Error(options.message); } else { // If none of previous checks were valid, then it means that + // it's not a DOMError/DOMException // it's not a plain Object // it's not a valid ErrorEvent (one with an error property) // it's not an Error @@ -2447,7 +2467,7 @@ function isObject(what) { // Yanked from https://git.io/vS8DV re-used under CC0 // with some tiny modifications function isError(value) { - switch ({}.toString.call(value)) { + switch (Object.prototype.toString.call(value)) { case '[object Error]': return true; case '[object Exception]': @@ -2460,7 +2480,15 @@ function isError(value) { } function isErrorEvent(value) { - return supportsErrorEvent() && {}.toString.call(value) === '[object ErrorEvent]'; + return Object.prototype.toString.call(value) === '[object ErrorEvent]'; +} + +function isDOMError(value) { + return Object.prototype.toString.call(value) === '[object DOMError]'; +} + +function isDOMException(value) { + return Object.prototype.toString.call(value) === '[object DOMException]'; } function isUndefined(what) { @@ -2503,6 +2531,24 @@ function supportsErrorEvent() { } } +function supportsDOMError() { + try { + new DOMError(''); // eslint-disable-line no-new + return true; + } catch (e) { + return false; + } +} + +function supportsDOMException() { + try { + new DOMException(''); // eslint-disable-line no-new + return true; + } catch (e) { + return false; + } +} + function supportsFetch() { if (!('fetch' in _window)) return false; @@ -3018,6 +3064,8 @@ module.exports = { isObject: isObject, isError: isError, isErrorEvent: isErrorEvent, + isDOMError: isDOMError, + isDOMException: isDOMException, isUndefined: isUndefined, isFunction: isFunction, isPlainObject: isPlainObject, @@ -3025,6 +3073,8 @@ module.exports = { isArray: isArray, isEmptyObject: isEmptyObject, supportsErrorEvent: supportsErrorEvent, + supportsDOMError: supportsDOMError, + supportsDOMException: supportsDOMException, supportsFetch: supportsFetch, supportsReferrerPolicy: supportsReferrerPolicy, supportsPromiseRejectionEvent: supportsPromiseRejectionEvent, @@ -3084,10 +3134,14 @@ var ERROR_TYPES_RE = /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Ran function getLocationHref() { if (typeof document === 'undefined' || document.location == null) return ''; - return document.location.href; } +function getLocationOrigin() { + if (typeof document === 'undefined' || document.location == null) return ''; + return document.location.origin; +} + /** * TraceKit.report: cross-browser processing of unhandled exceptions * @@ -3495,6 +3549,44 @@ TraceKit.computeStackTrace = (function computeStackTraceWrapper() { element.func = UNKNOWN_FUNCTION; } + if (element.url && element.url.substr(0, 5) === 'blob:') { + // Special case for handling JavaScript loaded into a blob. + // We use a synchronous AJAX request here as a blob is already in + // memory - it's not making a network request. This will generate a warning + // in the browser console, but there has already been an error so that's not + // that much of an issue. + var xhr = new XMLHttpRequest(); + xhr.open('GET', element.url, false); + xhr.send(null); + + // If we failed to download the source, skip this patch + if (xhr.status === 200) { + var source = xhr.responseText || ''; + + // We trim the source down to the last 300 characters as sourceMappingURL is always at the end of the file. + // Why 300? To be in line with: https://github.com/getsentry/sentry/blob/4af29e8f2350e20c28a6933354e4f42437b4ba42/src/sentry/lang/javascript/processor.py#L164-L175 + source = source.slice(-300); + + // Now we dig out the source map URL + var sourceMaps = source.match(/\/\/# sourceMappingURL=(.*)$/); + + // If we don't find a source map comment or we find more than one, continue on to the next element. + if (sourceMaps) { + var sourceMapAddress = sourceMaps[1]; + + // Now we check to see if it's a relative URL. + // If it is, convert it to an absolute one. + if (sourceMapAddress.charAt(0) === '~') { + sourceMapAddress = getLocationOrigin() + sourceMapAddress.slice(1); + } + + // Now we strip the '.map' off of the end of the URL and update the + // element so that Sentry can match the map to the blob. + element.url = sourceMapAddress.slice(0, -4); + } + } + } + stack.push(element); } diff --git a/dist/angular,vue/raven.min.js b/dist/angular,vue/raven.min.js index 1e0bdaac276b..306cc87eba5c 100644 --- a/dist/angular,vue/raven.min.js +++ b/dist/angular,vue/raven.min.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.24.2 (540f32b) | github.com/getsentry/raven-js */ -!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.Raven=a()}}(function(){return function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};b[g][0].call(k.exports,function(a){var c=b[g][1][a];return e(c?c:a)},k,k.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;g":"anonymous component")+(a._isVue&&a.$options.__file?" at "+a.$options.__file:"")}function e(a,b){if(b=b||window.Vue,b&&b.config){var c=b.config.errorHandler;b.config.errorHandler=function(b,e,f){var g={};"[object Object]"===Object.prototype.toString.call(e)&&(g.componentName=d(e),g.propsData=e.$options.propsData),"undefined"!=typeof f&&(g.lifecycleHook=f),a.captureException(b,{extra:g}),"function"==typeof c&&c.call(this,b,e,f)}}}b.exports=e,a(6).addPlugin(b.exports)},{6:6}],3:[function(a,b,c){function d(a){this.name="RavenConfigError",this.message=a}d.prototype=new Error,d.prototype.constructor=d,b.exports=d},{}],4:[function(a,b,c){var d=a(7),e=function(a,b,c){var e=a[b],f=a;if(b in a){var g="warn"===b?"warning":b;a[b]=function(){var a=[].slice.call(arguments),h=d.safeJoin(a," "),i={level:g,logger:"console",extra:{arguments:a}};"assert"===b?a[0]===!1&&(h="Assertion failed: "+(d.safeJoin(a.slice(1)," ")||"console.assert"),i.extra.arguments=a.slice(1),c&&c(h,i)):c&&c(h,i),e&&Function.prototype.apply.call(e,f,a)}}};b.exports={wrapMethod:e}},{7:7}],5:[function(a,b,c){(function(c){function d(){return+new Date}function e(a,b){return q(b)?function(c){return b(c,a)}:b}function f(){this.b=!("object"!=typeof JSON||!JSON.stringify),this.c=!p(Q),this.d=!p(R),this.e=null,this.f=null,this.g=null,this.h=null,this.i=null,this.j=null,this.k={},this.l={release:P.SENTRY_RELEASE&&P.SENTRY_RELEASE.id,logger:"javascript",ignoreErrors:[],ignoreUrls:[],whitelistUrls:[],includePaths:[],headers:null,collectWindowErrors:!0,captureUnhandledRejections:!0,maxMessageLength:0,maxUrlLength:250,stackTraceLimit:50,autoBreadcrumbs:!0,instrument:!0,sampleRate:1,sanitizeKeys:[]},this.m={method:"POST",keepalive:!0,referrerPolicy:I()?"origin":""},this.n=0,this.o=!1,this.p=Error.stackTraceLimit,this.q=P.console||{},this.r={},this.s=[],this.t=d(),this.u=[],this.v=[],this.w=null,this.x=P.location,this.y=this.x&&this.x.href,this.z();for(var a in this.q)this.r[a]=this.q[a]}var g=a(8),h=a(9),i=a(10),j=a(3),k=a(7),l=k.isError,m=k.isObject,n=k.isPlainObject,o=k.isErrorEvent,p=k.isUndefined,q=k.isFunction,r=k.isString,s=k.isArray,t=k.isEmptyObject,u=k.each,v=k.objectMerge,w=k.truncate,x=k.objectFrozen,y=k.hasKey,z=k.joinRegExp,A=k.urlencode,B=k.uuid4,C=k.htmlTreeAsString,D=k.isSameException,E=k.isSameStacktrace,F=k.parseUrl,G=k.fill,H=k.supportsFetch,I=k.supportsReferrerPolicy,J=k.serializeKeysForMessage,K=k.serializeException,L=k.sanitize,M=a(4).wrapMethod,N="source protocol user pass host port path".split(" "),O=/^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/,P="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},Q=P.document,R=P.navigator;f.prototype={VERSION:"3.24.2",debug:!1,TraceKit:g,config:function(a,b){var c=this;if(c.h)return this.A("error","Error: Raven has already been configured"),c;if(!a)return c;var d=c.l;b&&u(b,function(a,b){"tags"===a||"extra"===a||"user"===a?c.k[a]=b:d[a]=b}),c.setDSN(a),d.ignoreErrors.push(/^Script error\.?$/),d.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/),d.ignoreErrors=z(d.ignoreErrors),d.ignoreUrls=!!d.ignoreUrls.length&&z(d.ignoreUrls),d.whitelistUrls=!!d.whitelistUrls.length&&z(d.whitelistUrls),d.includePaths=z(d.includePaths),d.maxBreadcrumbs=Math.max(0,Math.min(d.maxBreadcrumbs||100,100));var e={xhr:!0,console:!0,dom:!0,location:!0,sentry:!0},f=d.autoBreadcrumbs;"[object Object]"==={}.toString.call(f)?f=v(e,f):f!==!1&&(f=e),d.autoBreadcrumbs=f;var h={tryCatch:!0},i=d.instrument;return"[object Object]"==={}.toString.call(i)?i=v(h,i):i!==!1&&(i=h),d.instrument=i,g.collectWindowErrors=!!d.collectWindowErrors,c},install:function(){var a=this;return a.isSetup()&&!a.o&&(g.report.subscribe(function(){a.B.apply(a,arguments)}),a.l.captureUnhandledRejections&&a.C(),a.D(),a.l.instrument&&a.l.instrument.tryCatch&&a.E(),a.l.autoBreadcrumbs&&a.F(),a.G(),a.o=!0),Error.stackTraceLimit=a.l.stackTraceLimit,this},setDSN:function(a){var b=this,c=b.H(a),d=c.path.lastIndexOf("/"),e=c.path.substr(1,d);b.I=a,b.i=c.user,b.J=c.pass&&c.pass.substr(1),b.j=c.path.substr(d+1),b.h=b.K(c),b.L=b.h+"/"+e+"api/"+b.j+"/store/",this.z()},context:function(a,b,c){return q(a)&&(c=b||[],b=a,a=void 0),this.wrap(a,b).apply(this,c)},wrap:function(a,b,c){function d(){var d=[],f=arguments.length,g=!a||a&&a.deep!==!1;for(c&&q(c)&&c.apply(this,arguments);f--;)d[f]=g?e.wrap(a,arguments[f]):arguments[f];try{return b.apply(this,d)}catch(h){throw e.M(),e.captureException(h,a),h}}var e=this;if(p(b)&&!q(a))return a;if(q(a)&&(b=a,a=void 0),!q(b))return b;try{if(b.N)return b;if(b.O)return b.O}catch(f){return b}for(var g in b)y(b,g)&&(d[g]=b[g]);return d.prototype=b.prototype,b.O=d,d.N=!0,d.P=b,d},uninstall:function(){return g.report.uninstall(),this.Q(),this.R(),this.S(),this.T(),Error.stackTraceLimit=this.p,this.o=!1,this},U:function(a){this.A("debug","Raven caught unhandled promise rejection:",a),this.captureException(a.reason,{extra:{unhandledPromiseRejection:!0}})},C:function(){return this.U=this.U.bind(this),P.addEventListener&&P.addEventListener("unhandledrejection",this.U),this},Q:function(){return P.removeEventListener&&P.removeEventListener("unhandledrejection",this.U),this},captureException:function(a,b){if(b=v({trimHeadFrames:0},b?b:{}),o(a)&&a.error)a=a.error;else if(l(a))a=a;else{if(!n(a))return this.captureMessage(a,v(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}));b=this.V(b,a),a=new Error(b.message)}this.e=a;try{var c=g.computeStackTrace(a);this.W(c,b)}catch(d){if(a!==d)throw d}return this},V:function(a,b){var c=Object.keys(b).sort(),d=v(a,{message:"Non-Error exception captured with keys: "+J(c),fingerprint:[i(c)],extra:a.extra||{}});return d.extra.X=K(b),d},captureMessage:function(a,b){if(!this.l.ignoreErrors.test||!this.l.ignoreErrors.test(a)){b=b||{},a+="";var c,d=v({message:a},b);try{throw new Error(a)}catch(e){c=e}c.name=null;var f=g.computeStackTrace(c),h=s(f.stack)&&f.stack[1];h&&"Raven.captureException"===h.func&&(h=f.stack[2]);var i=h&&h.url||"";if((!this.l.ignoreUrls.test||!this.l.ignoreUrls.test(i))&&(!this.l.whitelistUrls.test||this.l.whitelistUrls.test(i))){if(this.l.stacktrace||b&&b.stacktrace){d.fingerprint=null==d.fingerprint?a:d.fingerprint,b=v({trimHeadFrames:0},b),b.trimHeadFrames+=1;var j=this.Y(f,b);d.stacktrace={frames:j.reverse()}}return d.fingerprint&&(d.fingerprint=s(d.fingerprint)?d.fingerprint:[d.fingerprint]),this.Z(d),this}}},captureBreadcrumb:function(a){var b=v({timestamp:d()/1e3},a);if(q(this.l.breadcrumbCallback)){var c=this.l.breadcrumbCallback(b);if(m(c)&&!t(c))b=c;else if(c===!1)return this}return this.v.push(b),this.v.length>this.l.maxBreadcrumbs&&this.v.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.s.push([a,b]),this.o&&this.G(),this},setUserContext:function(a){return this.k.user=a,this},setExtraContext:function(a){return this.$("extra",a),this},setTagsContext:function(a){return this.$("tags",a),this},clearContext:function(){return this.k={},this},getContext:function(){return JSON.parse(h(this.k))},setEnvironment:function(a){return this.l.environment=a,this},setRelease:function(a){return this.l.release=a,this},setDataCallback:function(a){var b=this.l.dataCallback;return this.l.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.l.breadcrumbCallback;return this.l.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.l.shouldSendCallback;return this.l.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.l.transport=a,this},lastException:function(){return this.e},lastEventId:function(){return this.g},isSetup:function(){return!!this.b&&(!!this.h||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.A("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=P.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(Q){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.I;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.k.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.K(this.H(c)),h=Q.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(Q.head||Q.body).appendChild(h)}},M:function(){var a=this;this.n+=1,setTimeout(function(){a.n-=1})},_:function(a,b){var c,d;if(this.c){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),Q.createEvent?(c=Q.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=Q.createEventObject(),c.eventType=a);for(d in b)y(b,d)&&(c[d]=b[d]);if(Q.createEvent)Q.dispatchEvent(c);else try{Q.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},aa:function(a){var b=this;return function(c){if(b.ba=null,b.w!==c){b.w=c;var d;try{d=C(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ca:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.ba;g||a.aa("input")(c),clearTimeout(g),a.ba=setTimeout(function(){a.ba=null},b)}}},da:function(a,b){var c=F(this.x.href),d=F(b),e=F(a);this.y=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},D:function(){var a=this;a.ea=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.N?a.ea.apply(this.P,arguments):a.ea.apply(this,arguments)}},R:function(){this.ea&&(Function.prototype.toString=this.ea)},E:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.da(b.y,c+""),a.apply(this,arguments)}};G(history,"pushState",j,d),G(history,"replaceState",j,d)}if(c.console&&"console"in P&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};u(["debug","info","warn","error","log"],function(a,b){M(console,b,k)})}},S:function(){for(var a;this.u.length;){a=this.u.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},T:function(){for(var a in this.r)this.q[a]=this.r[a]},G:function(){var a=this;u(this.s,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},H:function(a){var b=O.exec(a),c={},d=7;try{for(;d--;)c[N[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.l.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},K:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},B:function(){this.n||this.W.apply(this,arguments)},W:function(a,b){var c=this.Y(a,b);this._("handle",{stackInfo:a,options:b}),this.ga(a.name,a.message,a.url,a.lineno,c,b)},Y:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(u(a.stack,function(b,e){var f=c.ha(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.v,0)}),this.k.user&&(a.user=this.k.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),a=this.qa(a),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||t(a[b]))&&delete a[b]}),q(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!t(a)&&(!q(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.na()?void this.A("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function B(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&j(b))for(c=b.split(/\s+/),f=0;fc?M(a,b-1):d}function N(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?T:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function O(a,b){function c(a){return k(a)?a.map(function(a){return c(a)}):i(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!k(b)||k(b)&&0===b.length)return a;var d,e=w(b),f="********";try{d=JSON.parse(P(a))}catch(g){return a}return c(d)}var P=a(9),Q="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},R=3,S=51200,T=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isUndefined:g,isFunction:h,isPlainObject:i,isString:j,isArray:k,isEmptyObject:l,supportsErrorEvent:m,supportsFetch:n,supportsReferrerPolicy:o,supportsPromiseRejectionEvent:p,wrappedCallback:q,each:r,objectMerge:s,truncate:u,objectFrozen:t,hasKey:v,joinRegExp:w,urlencode:x,uuid4:z,htmlTreeAsString:A,htmlElementAsString:B,isSameException:E,isSameStacktrace:F,parseUrl:y,fill:G,safeJoin:H,serializeException:M,serializeKeysForMessage:N,sanitize:O}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{9:9}],8:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}var e=a(7),f={collectWindowErrors:!0,debug:!1},g="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},h=[].slice,i="?",j=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;f.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function k(a,b){var c=null;if(!b||f.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(h.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,g,h){var l=null,m=e.isErrorEvent(h)?h.error:h,n=e.isErrorEvent(a)?a.message:a;if(v)f.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&e.isError(m))l=f.computeStackTrace(m),k(l,!0);else{var p,r={url:b,line:c,column:g},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(j);p&&(s=p[1],n=p[2])}r.func=i,l={name:s,message:n,url:d(),stack:[r]},k(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=g.onerror,g.onerror=l,r=!0)}function n(){r&&(g.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,k.apply(null,[a,!1].concat(b))}function p(a,b){var c=h.call(arguments,1);if(v){if(u===a)return;o()}var d=f.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),f.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,e,f=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,g=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,h=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,j=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,k=/\((\S*)(?::(\d+))(?::(\d+))\)/,l=a.stack.split("\n"),m=[],n=(/^(.*) is undefined$/.exec(a.message),0),o=l.length;n eval")>-1;q&&(b=j.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==n||c[5]||"undefined"==typeof a.columnNumber||(m[0].column=a.columnNumber+1),e={url:c[3],func:c[1]||i,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}!e.func&&e.line&&(e.func=i),m.push(e)}return m.length?{name:a.name,message:a.message,url:d(),stack:m}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=i),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,g){for(var h,j,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==e&&o!==f.report){if(j={url:null,func:i,line:null,column:null},o.name?j.func=o.name:(h=k.exec(o.toString()))&&(j.func=h[1]),"undefined"==typeof j.func)try{j.func=h.input.substring(0,h.input.indexOf("{"))}catch(p){}m[""+o]?n=!0:m[""+o]=!0,l.push(j)}g&&l.splice(0,g);var q={name:a.name,message:a.message,url:d(),stack:l};return b(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),q}function e(b,e){var g=null;e=null==e?0:+e;try{if(g=a(b))return g}catch(h){if(f.debug)throw h; -}try{if(g=c(b,e+1))return g}catch(h){if(f.debug)throw h}return{name:b.name,message:b.message,url:d()}}return e.augmentStackTraceWithInitialElement=b,e.computeStackTraceFromStackProp=a,e}(),b.exports=f}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{7:7}],9:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}],10:[function(a,b,c){function d(a,b){var c=(65535&a)+(65535&b),d=(a>>16)+(b>>16)+(c>>16);return d<<16|65535&c}function e(a,b){return a<>>32-b}function f(a,b,c,f,g,h){return d(e(d(d(b,a),d(f,h)),g),c)}function g(a,b,c,d,e,g,h){return f(b&c|~b&d,a,b,e,g,h)}function h(a,b,c,d,e,g,h){return f(b&d|c&~d,a,b,e,g,h)}function i(a,b,c,d,e,g,h){return f(b^c^d,a,b,e,g,h)}function j(a,b,c,d,e,g,h){return f(c^(b|~d),a,b,e,g,h)}function k(a,b){a[b>>5]|=128<>>9<<4)+14]=b;var c,e,f,k,l,m=1732584193,n=-271733879,o=-1732584194,p=271733878;for(c=0;c>5]>>>b%32&255);return c}function m(a){var b,c=[];for(c[(a.length>>2)-1]=void 0,b=0;b>5]|=(255&a.charCodeAt(b/8))<16&&(e=k(e,8*a.length)),c=0;c<16;c+=1)f[c]=909522486^e[c],g[c]=1549556828^e[c];return d=k(f.concat(m(b)),512+8*b.length),l(k(g.concat(d),640))}function p(a){var b,c,d="0123456789abcdef",e="";for(c=0;c>>4&15)+d.charAt(15&b);return e}function q(a){return unescape(encodeURIComponent(a))}function r(a){return n(q(a))}function s(a){return p(r(a))}function t(a,b){return o(q(a),q(b))}function u(a,b){return p(t(a,b))}function v(a,b,c){return b?c?t(b,a):u(b,a):c?r(a):s(a)}b.exports=v},{}]},{},[6,1,2])(6)}); +/*! Raven.js 3.25.0 (80dffad) | github.com/getsentry/raven-js */ +!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.Raven=a()}}(function(){return function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};b[g][0].call(k.exports,function(a){var c=b[g][1][a];return e(c?c:a)},k,k.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;g":"anonymous component")+(a._isVue&&a.$options.__file?" at "+a.$options.__file:"")}function e(a,b){if(b=b||window.Vue,b&&b.config){var c=b.config.errorHandler;b.config.errorHandler=function(b,e,f){var g={};"[object Object]"===Object.prototype.toString.call(e)&&(g.componentName=d(e),g.propsData=e.$options.propsData),"undefined"!=typeof f&&(g.lifecycleHook=f),a.captureException(b,{extra:g}),"function"==typeof c&&c.call(this,b,e,f)}}}b.exports=e,a(6).addPlugin(b.exports)},{6:6}],3:[function(a,b,c){function d(a){this.name="RavenConfigError",this.message=a}d.prototype=new Error,d.prototype.constructor=d,b.exports=d},{}],4:[function(a,b,c){var d=a(7),e=function(a,b,c){var e=a[b],f=a;if(b in a){var g="warn"===b?"warning":b;a[b]=function(){var a=[].slice.call(arguments),h=d.safeJoin(a," "),i={level:g,logger:"console",extra:{arguments:a}};"assert"===b?a[0]===!1&&(h="Assertion failed: "+(d.safeJoin(a.slice(1)," ")||"console.assert"),i.extra.arguments=a.slice(1),c&&c(h,i)):c&&c(h,i),e&&Function.prototype.apply.call(e,f,a)}}};b.exports={wrapMethod:e}},{7:7}],5:[function(a,b,c){(function(c){function d(){return+new Date}function e(a,b){return s(b)?function(c){return b(c,a)}:b}function f(){this.b=!("object"!=typeof JSON||!JSON.stringify),this.c=!r(S),this.d=!r(T),this.e=null,this.f=null,this.g=null,this.h=null,this.i=null,this.j=null,this.k={},this.l={release:R.SENTRY_RELEASE&&R.SENTRY_RELEASE.id,logger:"javascript",ignoreErrors:[],ignoreUrls:[],whitelistUrls:[],includePaths:[],headers:null,collectWindowErrors:!0,captureUnhandledRejections:!0,maxMessageLength:0,maxUrlLength:250,stackTraceLimit:50,autoBreadcrumbs:!0,instrument:!0,sampleRate:1,sanitizeKeys:[]},this.m={method:"POST",keepalive:!0,referrerPolicy:K()?"origin":""},this.n=0,this.o=!1,this.p=Error.stackTraceLimit,this.q=R.console||{},this.r={},this.s=[],this.t=d(),this.u=[],this.v=[],this.w=null,this.x=R.location,this.y=this.x&&this.x.href,this.z();for(var a in this.q)this.r[a]=this.q[a]}var g=a(8),h=a(9),i=a(10),j=a(3),k=a(7),l=k.isErrorEvent,m=k.isDOMError,n=k.isDOMException,o=k.isError,p=k.isObject,q=k.isPlainObject,r=k.isUndefined,s=k.isFunction,t=k.isString,u=k.isArray,v=k.isEmptyObject,w=k.each,x=k.objectMerge,y=k.truncate,z=k.objectFrozen,A=k.hasKey,B=k.joinRegExp,C=k.urlencode,D=k.uuid4,E=k.htmlTreeAsString,F=k.isSameException,G=k.isSameStacktrace,H=k.parseUrl,I=k.fill,J=k.supportsFetch,K=k.supportsReferrerPolicy,L=k.serializeKeysForMessage,M=k.serializeException,N=k.sanitize,O=a(4).wrapMethod,P="source protocol user pass host port path".split(" "),Q=/^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/,R="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},S=R.document,T=R.navigator;f.prototype={VERSION:"3.25.0",debug:!1,TraceKit:g,config:function(a,b){var c=this;if(c.h)return this.A("error","Error: Raven has already been configured"),c;if(!a)return c;var d=c.l;b&&w(b,function(a,b){"tags"===a||"extra"===a||"user"===a?c.k[a]=b:d[a]=b}),c.setDSN(a),d.ignoreErrors.push(/^Script error\.?$/),d.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/),d.ignoreErrors=B(d.ignoreErrors),d.ignoreUrls=!!d.ignoreUrls.length&&B(d.ignoreUrls),d.whitelistUrls=!!d.whitelistUrls.length&&B(d.whitelistUrls),d.includePaths=B(d.includePaths),d.maxBreadcrumbs=Math.max(0,Math.min(d.maxBreadcrumbs||100,100));var e={xhr:!0,console:!0,dom:!0,location:!0,sentry:!0},f=d.autoBreadcrumbs;"[object Object]"==={}.toString.call(f)?f=x(e,f):f!==!1&&(f=e),d.autoBreadcrumbs=f;var h={tryCatch:!0},i=d.instrument;return"[object Object]"==={}.toString.call(i)?i=x(h,i):i!==!1&&(i=h),d.instrument=i,g.collectWindowErrors=!!d.collectWindowErrors,c},install:function(){var a=this;return a.isSetup()&&!a.o&&(g.report.subscribe(function(){a.B.apply(a,arguments)}),a.l.captureUnhandledRejections&&a.C(),a.D(),a.l.instrument&&a.l.instrument.tryCatch&&a.E(),a.l.autoBreadcrumbs&&a.F(),a.G(),a.o=!0),Error.stackTraceLimit=a.l.stackTraceLimit,this},setDSN:function(a){var b=this,c=b.H(a),d=c.path.lastIndexOf("/"),e=c.path.substr(1,d);b.I=a,b.i=c.user,b.J=c.pass&&c.pass.substr(1),b.j=c.path.substr(d+1),b.h=b.K(c),b.L=b.h+"/"+e+"api/"+b.j+"/store/",this.z()},context:function(a,b,c){return s(a)&&(c=b||[],b=a,a=void 0),this.wrap(a,b).apply(this,c)},wrap:function(a,b,c){function d(){var d=[],f=arguments.length,g=!a||a&&a.deep!==!1;for(c&&s(c)&&c.apply(this,arguments);f--;)d[f]=g?e.wrap(a,arguments[f]):arguments[f];try{return b.apply(this,d)}catch(h){throw e.M(),e.captureException(h,a),h}}var e=this;if(r(b)&&!s(a))return a;if(s(a)&&(b=a,a=void 0),!s(b))return b;try{if(b.N)return b;if(b.O)return b.O}catch(f){return b}for(var g in b)A(b,g)&&(d[g]=b[g]);return d.prototype=b.prototype,b.O=d,d.N=!0,d.P=b,d},uninstall:function(){return g.report.uninstall(),this.Q(),this.R(),this.S(),this.T(),Error.stackTraceLimit=this.p,this.o=!1,this},U:function(a){this.A("debug","Raven caught unhandled promise rejection:",a),this.captureException(a.reason,{extra:{unhandledPromiseRejection:!0}})},C:function(){return this.U=this.U.bind(this),R.addEventListener&&R.addEventListener("unhandledrejection",this.U),this},Q:function(){return R.removeEventListener&&R.removeEventListener("unhandledrejection",this.U),this},captureException:function(a,b){if(b=x({trimHeadFrames:0},b?b:{}),l(a)&&a.error)a=a.error;else{if(m(a)||n(a)){var c=a.name||(m(a)?"DOMError":"DOMException"),d=a.message?c+": "+a.message:c;return this.captureMessage(d,x(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}))}if(o(a))a=a;else{if(!q(a))return this.captureMessage(a,x(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}));b=this.V(b,a),a=new Error(b.message)}}this.e=a;try{var e=g.computeStackTrace(a);this.W(e,b)}catch(f){if(a!==f)throw f}return this},V:function(a,b){var c=Object.keys(b).sort(),d=x(a,{message:"Non-Error exception captured with keys: "+L(c),fingerprint:[i(c)],extra:a.extra||{}});return d.extra.X=M(b),d},captureMessage:function(a,b){if(!this.l.ignoreErrors.test||!this.l.ignoreErrors.test(a)){b=b||{},a+="";var c,d=x({message:a},b);try{throw new Error(a)}catch(e){c=e}c.name=null;var f=g.computeStackTrace(c),h=u(f.stack)&&f.stack[1];h&&"Raven.captureException"===h.func&&(h=f.stack[2]);var i=h&&h.url||"";if((!this.l.ignoreUrls.test||!this.l.ignoreUrls.test(i))&&(!this.l.whitelistUrls.test||this.l.whitelistUrls.test(i))){if(this.l.stacktrace||b&&b.stacktrace){d.fingerprint=null==d.fingerprint?a:d.fingerprint,b=x({trimHeadFrames:0},b),b.trimHeadFrames+=1;var j=this.Y(f,b);d.stacktrace={frames:j.reverse()}}return d.fingerprint&&(d.fingerprint=u(d.fingerprint)?d.fingerprint:[d.fingerprint]),this.Z(d),this}}},captureBreadcrumb:function(a){var b=x({timestamp:d()/1e3},a);if(s(this.l.breadcrumbCallback)){var c=this.l.breadcrumbCallback(b);if(p(c)&&!v(c))b=c;else if(c===!1)return this}return this.v.push(b),this.v.length>this.l.maxBreadcrumbs&&this.v.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.s.push([a,b]),this.o&&this.G(),this},setUserContext:function(a){return this.k.user=a,this},setExtraContext:function(a){return this.$("extra",a),this},setTagsContext:function(a){return this.$("tags",a),this},clearContext:function(){return this.k={},this},getContext:function(){return JSON.parse(h(this.k))},setEnvironment:function(a){return this.l.environment=a,this},setRelease:function(a){return this.l.release=a,this},setDataCallback:function(a){var b=this.l.dataCallback;return this.l.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.l.breadcrumbCallback;return this.l.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.l.shouldSendCallback;return this.l.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.l.transport=a,this},lastException:function(){return this.e},lastEventId:function(){return this.g},isSetup:function(){return!!this.b&&(!!this.h||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.A("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=R.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(S){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.I;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.k.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.K(this.H(c)),h=S.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(S.head||S.body).appendChild(h)}},M:function(){var a=this;this.n+=1,setTimeout(function(){a.n-=1})},_:function(a,b){var c,d;if(this.c){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),S.createEvent?(c=S.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=S.createEventObject(),c.eventType=a);for(d in b)A(b,d)&&(c[d]=b[d]);if(S.createEvent)S.dispatchEvent(c);else try{S.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},aa:function(a){var b=this;return function(c){if(b.ba=null,b.w!==c){b.w=c;var d;try{d=E(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ca:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.ba;g||a.aa("input")(c),clearTimeout(g),a.ba=setTimeout(function(){a.ba=null},b)}}},da:function(a,b){var c=H(this.x.href),d=H(b),e=H(a);this.y=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},D:function(){var a=this;a.ea=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.N?a.ea.apply(this.P,arguments):a.ea.apply(this,arguments)}},R:function(){this.ea&&(Function.prototype.toString=this.ea)},E:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.da(b.y,c+""),a.apply(this,arguments)}};I(history,"pushState",j,d),I(history,"replaceState",j,d)}if(c.console&&"console"in R&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};w(["debug","info","warn","error","log"],function(a,b){O(console,b,k)})}},S:function(){for(var a;this.u.length;){a=this.u.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},T:function(){for(var a in this.r)this.q[a]=this.r[a]},G:function(){var a=this;w(this.s,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},H:function(a){var b=Q.exec(a),c={},d=7;try{for(;d--;)c[P[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.l.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},K:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},B:function(){this.n||this.W.apply(this,arguments)},W:function(a,b){var c=this.Y(a,b);this._("handle",{stackInfo:a,options:b}),this.ga(a.name,a.message,a.url,a.lineno,c,b)},Y:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(w(a.stack,function(b,e){var f=c.ha(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.v,0)}),this.k.user&&(a.user=this.k.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),a=this.qa(a),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||v(a[b]))&&delete a[b]}),s(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!v(a)&&(!s(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.na()?void this.A("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function F(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&l(b))for(c=b.split(/\s+/),f=0;fc?Q(a,b-1):d}function R(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?X:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function S(a,b){function c(a){return m(a)?a.map(function(a){return c(a)}):k(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!m(b)||m(b)&&0===b.length)return a;var d,e=A(b),f="********";try{d=JSON.parse(T(a))}catch(g){return a}return c(d)}var T=a(9),U="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},V=3,W=51200,X=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isDOMError:g,isDOMException:h,isUndefined:i,isFunction:j,isPlainObject:k,isString:l,isArray:m,isEmptyObject:n,supportsErrorEvent:o,supportsDOMError:p,supportsDOMException:q,supportsFetch:r,supportsReferrerPolicy:s,supportsPromiseRejectionEvent:t,wrappedCallback:u,each:v,objectMerge:w,truncate:y,objectFrozen:x,hasKey:z,joinRegExp:A,urlencode:B,uuid4:D,htmlTreeAsString:E,htmlElementAsString:F,isSameException:I,isSameStacktrace:J,parseUrl:C,fill:K,safeJoin:L,serializeException:Q,serializeKeysForMessage:R,sanitize:S}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{9:9}],8:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}function e(){return"undefined"==typeof document||null==document.location?"":document.location.origin}var f=a(7),g={collectWindowErrors:!0,debug:!1},h="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},i=[].slice,j="?",k=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;g.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function e(a,b){var c=null;if(!b||g.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(i.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,h,i){var l=null,m=f.isErrorEvent(i)?i.error:i,n=f.isErrorEvent(a)?a.message:a;if(v)g.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&f.isError(m))l=g.computeStackTrace(m),e(l,!0);else{var p,r={url:b,line:c,column:h},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(k);p&&(s=p[1],n=p[2])}r.func=j,l={name:s,message:n,url:d(),stack:[r]},e(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=h.onerror,h.onerror=l,r=!0)}function n(){r&&(h.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,e.apply(null,[a,!1].concat(b))}function p(a,b){var c=i.call(arguments,1);if(v){if(u===a)return;o()}var d=g.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),g.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,f,g=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,h=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,i=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,k=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,l=/\((\S*)(?::(\d+))(?::(\d+))\)/,m=a.stack.split("\n"),n=[],o=(/^(.*) is undefined$/.exec(a.message),0),p=m.length;o eval")>-1;r&&(b=k.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==o||c[5]||"undefined"==typeof a.columnNumber||(n[0].column=a.columnNumber+1),f={url:c[3],func:c[1]||j,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}if(!f.func&&f.line&&(f.func=j),f.url&&"blob:"===f.url.substr(0,5)){var s=new XMLHttpRequest;if(s.open("GET",f.url,!1),s.send(null),200===s.status){var t=s.responseText||"";t=t.slice(-300);var u=t.match(/\/\/# sourceMappingURL=(.*)$/);if(u){var v=u[1];"~"===v.charAt(0)&&(v=e()+v.slice(1)),f.url=v.slice(0,-4)}}}n.push(f)}return n.length?{name:a.name,message:a.message,url:d(),stack:n +}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=j),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,e){for(var h,i,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==f&&o!==g.report){if(i={url:null,func:j,line:null,column:null},o.name?i.func=o.name:(h=k.exec(o.toString()))&&(i.func=h[1]),"undefined"==typeof i.func)try{i.func=h.input.substring(0,h.input.indexOf("{"))}catch(p){}m[""+o]?n=!0:m[""+o]=!0,l.push(i)}e&&l.splice(0,e);var q={name:a.name,message:a.message,url:d(),stack:l};return b(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),q}function f(b,e){var f=null;e=null==e?0:+e;try{if(f=a(b))return f}catch(h){if(g.debug)throw h}try{if(f=c(b,e+1))return f}catch(h){if(g.debug)throw h}return{name:b.name,message:b.message,url:d()}}return f.augmentStackTraceWithInitialElement=b,f.computeStackTraceFromStackProp=a,f}(),b.exports=g}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{7:7}],9:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}],10:[function(a,b,c){function d(a,b){var c=(65535&a)+(65535&b),d=(a>>16)+(b>>16)+(c>>16);return d<<16|65535&c}function e(a,b){return a<>>32-b}function f(a,b,c,f,g,h){return d(e(d(d(b,a),d(f,h)),g),c)}function g(a,b,c,d,e,g,h){return f(b&c|~b&d,a,b,e,g,h)}function h(a,b,c,d,e,g,h){return f(b&d|c&~d,a,b,e,g,h)}function i(a,b,c,d,e,g,h){return f(b^c^d,a,b,e,g,h)}function j(a,b,c,d,e,g,h){return f(c^(b|~d),a,b,e,g,h)}function k(a,b){a[b>>5]|=128<>>9<<4)+14]=b;var c,e,f,k,l,m=1732584193,n=-271733879,o=-1732584194,p=271733878;for(c=0;c>5]>>>b%32&255);return c}function m(a){var b,c=[];for(c[(a.length>>2)-1]=void 0,b=0;b>5]|=(255&a.charCodeAt(b/8))<16&&(e=k(e,8*a.length)),c=0;c<16;c+=1)f[c]=909522486^e[c],g[c]=1549556828^e[c];return d=k(f.concat(m(b)),512+8*b.length),l(k(g.concat(d),640))}function p(a){var b,c,d="0123456789abcdef",e="";for(c=0;c>>4&15)+d.charAt(15&b);return e}function q(a){return unescape(encodeURIComponent(a))}function r(a){return n(q(a))}function s(a){return p(r(a))}function t(a,b){return o(q(a),q(b))}function u(a,b){return p(t(a,b))}function v(a,b,c){return b?c?t(b,a):u(b,a):c?r(a):s(a)}b.exports=v},{}]},{},[6,1,2])(6)}); //# sourceMappingURL=raven.min.js.map \ No newline at end of file diff --git a/dist/angular,vue/raven.min.js.map b/dist/angular,vue/raven.min.js.map index b0cff0fbddac..fcf0dd039fd3 100644 --- a/dist/angular,vue/raven.min.js.map +++ b/dist/angular,vue/raven.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","angularPlugin","angular","RavenProvider","$get","$window","ExceptionHandlerProvider","$provide","decorator","exceptionHandler","R","$delegate","ex","cause","captureException","extra","moduleName","provider","config","setDataCallback","wrappedCallback","data","_normalizeData","angularPattern","exception","values","matches","exec","value","type","message","angularDocs","substr","addPlugin","6","7","2","formatComponentName","vm","$root","name","_isVue","$options","_componentTag","__file","vuePlugin","Vue","_oldOnError","errorHandler","error","info","metaData","Object","prototype","toString","componentName","propsData","lifecycleHook","3","RavenConfigError","constructor","4","utils","wrapMethod","console","level","callback","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","msg","safeJoin","logger","Function","apply","5","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","sanitizeKeys","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isError","isObject","isPlainObject","isErrorEvent","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","sanitize","wrapConsoleMethod","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","dsn","options","_logDebug","globalOptions","key","setDSN","push","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","context","func","undefined","wrap","_before","wrapped","deep","_ignoreNextOnError","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","U","event","reason","unhandledPromiseRejection","C","_promiseRejectionHandler","bind","addEventListener","Q","removeEventListener","trimHeadFrames","captureMessage","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","V","currentOptions","exKeys","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","M","setTimeout","_","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","aa","evtName","_keypressTimeout","target","category","ca","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","da","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","D","_originalFunctionToString","E","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","F","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","S","builtin","T","G","installer","concat","H","str","m","allowSecretKey","K","port","B","W","stackInfo","_triggerEvent","_processException","lineno","Y","frame","_normalizeFrame","in_app","ha","stackInfoUrl","normalized","filename","line","colno","column","function","ga","prefixedMessage","culprit","ia","request","Referer","breadcrumbs","_trimBreadcrumbs","ja","urlProp","urlProps","ka","httpData","userAgent","User-Agent","referrer","z","_backoffDuration","_backoffStart","na","oa","current","last","pa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Z","baseData","project","platform","_getHttpData","serverName","server_name","_sanitizeData","forEach","random","_sendProcessedPayload","qa","sa","ra","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","ta","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","onerror","open","setRequestHeader","send","ua","hash","evaluated","A","$","setUser","setReleaseContext","10","8","9","RavenConstructor","_Raven","noConflict","Client","what","supportsErrorEvent","ErrorEvent","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","sanitizeMask","safeInput","o_O","getLocationHref","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","y","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","charAt","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","string","raw"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file +{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","angularPlugin","angular","RavenProvider","$get","$window","ExceptionHandlerProvider","$provide","decorator","exceptionHandler","R","$delegate","ex","cause","captureException","extra","moduleName","provider","config","setDataCallback","wrappedCallback","data","_normalizeData","angularPattern","exception","values","matches","exec","value","type","message","angularDocs","substr","addPlugin","6","7","2","formatComponentName","vm","$root","name","_isVue","$options","_componentTag","__file","vuePlugin","Vue","_oldOnError","errorHandler","error","info","metaData","Object","prototype","toString","componentName","propsData","lifecycleHook","3","RavenConfigError","constructor","4","utils","wrapMethod","console","level","callback","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","msg","safeJoin","logger","Function","apply","5","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","sanitizeKeys","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isErrorEvent","isDOMError","isDOMException","isError","isObject","isPlainObject","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","sanitize","wrapConsoleMethod","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","dsn","options","_logDebug","globalOptions","key","setDSN","push","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","context","func","undefined","wrap","_before","wrapped","deep","_ignoreNextOnError","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","U","event","reason","unhandledPromiseRejection","C","_promiseRejectionHandler","bind","addEventListener","Q","removeEventListener","trimHeadFrames","captureMessage","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","V","currentOptions","exKeys","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","M","setTimeout","_","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","aa","evtName","_keypressTimeout","target","category","ca","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","da","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","D","_originalFunctionToString","E","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","F","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","S","builtin","T","G","installer","concat","H","str","m","allowSecretKey","K","port","B","W","stackInfo","_triggerEvent","_processException","lineno","Y","frame","_normalizeFrame","in_app","ha","stackInfoUrl","normalized","filename","line","colno","column","function","ga","prefixedMessage","culprit","ia","request","Referer","breadcrumbs","_trimBreadcrumbs","ja","urlProp","urlProps","ka","httpData","userAgent","User-Agent","referrer","z","_backoffDuration","_backoffStart","na","oa","current","last","pa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Z","baseData","project","platform","_getHttpData","serverName","server_name","_sanitizeData","forEach","random","_sendProcessedPayload","qa","sa","ra","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","ta","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","onerror","open","setRequestHeader","send","ua","hash","evaluated","A","$","setUser","setReleaseContext","10","8","9","RavenConstructor","_Raven","noConflict","Client","what","supportsErrorEvent","ErrorEvent","supportsDOMError","DOMError","supportsDOMException","DOMException","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","sanitizeMask","safeInput","o_O","getLocationHref","getLocationOrigin","origin","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","responseText","sourceMaps","sourceMapAddress","charAt","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","y","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","string","raw"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file diff --git a/dist/angular/raven.js b/dist/angular/raven.js index 3e798b336dae..3ba03b13c744 100644 --- a/dist/angular/raven.js +++ b/dist/angular/raven.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.24.2 (540f32b) | github.com/getsentry/raven-js */ +/*! Raven.js 3.25.0 (80dffad) | github.com/getsentry/raven-js */ /* * Includes TraceKit @@ -151,10 +151,12 @@ var md5 = _dereq_(9); var RavenConfigError = _dereq_(2); var utils = _dereq_(6); +var isErrorEvent = utils.isErrorEvent; +var isDOMError = utils.isDOMError; +var isDOMException = utils.isDOMException; var isError = utils.isError; var isObject = utils.isObject; var isPlainObject = utils.isPlainObject; -var isErrorEvent = utils.isErrorEvent; var isUndefined = utils.isUndefined; var isFunction = utils.isFunction; var isString = utils.isString; @@ -282,7 +284,7 @@ Raven.prototype = { // webpack (using a build step causes webpack #1617). Grunt verifies that // this value matches package.json during build. // See: https://github.com/getsentry/raven-js/issues/465 - VERSION: '3.24.2', + VERSION: '3.25.0', debug: false, @@ -614,6 +616,23 @@ Raven.prototype = { if (isErrorEvent(ex) && ex.error) { // If it is an ErrorEvent with `error` property, extract it to get actual Error ex = ex.error; + } else if (isDOMError(ex) || isDOMException(ex)) { + // If it is a DOMError or DOMException (which are legacy APIs, but still supported in some browsers) + // then we just extract the name and message, as they don't provide anything else + // https://developer.mozilla.org/en-US/docs/Web/API/DOMError + // https://developer.mozilla.org/en-US/docs/Web/API/DOMException + var name = ex.name || (isDOMError(ex) ? 'DOMError' : 'DOMException'); + var message = ex.message ? name + ': ' + ex.message : name; + + return this.captureMessage( + message, + objectMerge(options, { + // neither DOMError or DOMException provide stack trace and we most likely wont get it this way as well + // but it's barely any overhead so we may at least try + stacktrace: true, + trimHeadFrames: options.trimHeadFrames + 1 + }) + ); } else if (isError(ex)) { // we have a real Error object ex = ex; @@ -625,6 +644,7 @@ Raven.prototype = { ex = new Error(options.message); } else { // If none of previous checks were valid, then it means that + // it's not a DOMError/DOMException // it's not a plain Object // it's not a valid ErrorEvent (one with an error property) // it's not an Error @@ -2397,7 +2417,7 @@ function isObject(what) { // Yanked from https://git.io/vS8DV re-used under CC0 // with some tiny modifications function isError(value) { - switch ({}.toString.call(value)) { + switch (Object.prototype.toString.call(value)) { case '[object Error]': return true; case '[object Exception]': @@ -2410,7 +2430,15 @@ function isError(value) { } function isErrorEvent(value) { - return supportsErrorEvent() && {}.toString.call(value) === '[object ErrorEvent]'; + return Object.prototype.toString.call(value) === '[object ErrorEvent]'; +} + +function isDOMError(value) { + return Object.prototype.toString.call(value) === '[object DOMError]'; +} + +function isDOMException(value) { + return Object.prototype.toString.call(value) === '[object DOMException]'; } function isUndefined(what) { @@ -2453,6 +2481,24 @@ function supportsErrorEvent() { } } +function supportsDOMError() { + try { + new DOMError(''); // eslint-disable-line no-new + return true; + } catch (e) { + return false; + } +} + +function supportsDOMException() { + try { + new DOMException(''); // eslint-disable-line no-new + return true; + } catch (e) { + return false; + } +} + function supportsFetch() { if (!('fetch' in _window)) return false; @@ -2968,6 +3014,8 @@ module.exports = { isObject: isObject, isError: isError, isErrorEvent: isErrorEvent, + isDOMError: isDOMError, + isDOMException: isDOMException, isUndefined: isUndefined, isFunction: isFunction, isPlainObject: isPlainObject, @@ -2975,6 +3023,8 @@ module.exports = { isArray: isArray, isEmptyObject: isEmptyObject, supportsErrorEvent: supportsErrorEvent, + supportsDOMError: supportsDOMError, + supportsDOMException: supportsDOMException, supportsFetch: supportsFetch, supportsReferrerPolicy: supportsReferrerPolicy, supportsPromiseRejectionEvent: supportsPromiseRejectionEvent, @@ -3034,10 +3084,14 @@ var ERROR_TYPES_RE = /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Ran function getLocationHref() { if (typeof document === 'undefined' || document.location == null) return ''; - return document.location.href; } +function getLocationOrigin() { + if (typeof document === 'undefined' || document.location == null) return ''; + return document.location.origin; +} + /** * TraceKit.report: cross-browser processing of unhandled exceptions * @@ -3445,6 +3499,44 @@ TraceKit.computeStackTrace = (function computeStackTraceWrapper() { element.func = UNKNOWN_FUNCTION; } + if (element.url && element.url.substr(0, 5) === 'blob:') { + // Special case for handling JavaScript loaded into a blob. + // We use a synchronous AJAX request here as a blob is already in + // memory - it's not making a network request. This will generate a warning + // in the browser console, but there has already been an error so that's not + // that much of an issue. + var xhr = new XMLHttpRequest(); + xhr.open('GET', element.url, false); + xhr.send(null); + + // If we failed to download the source, skip this patch + if (xhr.status === 200) { + var source = xhr.responseText || ''; + + // We trim the source down to the last 300 characters as sourceMappingURL is always at the end of the file. + // Why 300? To be in line with: https://github.com/getsentry/sentry/blob/4af29e8f2350e20c28a6933354e4f42437b4ba42/src/sentry/lang/javascript/processor.py#L164-L175 + source = source.slice(-300); + + // Now we dig out the source map URL + var sourceMaps = source.match(/\/\/# sourceMappingURL=(.*)$/); + + // If we don't find a source map comment or we find more than one, continue on to the next element. + if (sourceMaps) { + var sourceMapAddress = sourceMaps[1]; + + // Now we check to see if it's a relative URL. + // If it is, convert it to an absolute one. + if (sourceMapAddress.charAt(0) === '~') { + sourceMapAddress = getLocationOrigin() + sourceMapAddress.slice(1); + } + + // Now we strip the '.map' off of the end of the URL and update the + // element so that Sentry can match the map to the blob. + element.url = sourceMapAddress.slice(0, -4); + } + } + } + stack.push(element); } diff --git a/dist/angular/raven.min.js b/dist/angular/raven.min.js index 95bcd555de13..ea5006acb8c3 100644 --- a/dist/angular/raven.min.js +++ b/dist/angular/raven.min.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.24.2 (540f32b) | github.com/getsentry/raven-js */ -!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.Raven=a()}}(function(){return function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};b[g][0].call(k.exports,function(a){var c=b[g][1][a];return e(c?c:a)},k,k.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;gthis.l.maxBreadcrumbs&&this.v.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.s.push([a,b]),this.o&&this.G(),this},setUserContext:function(a){return this.k.user=a,this},setExtraContext:function(a){return this.$("extra",a),this},setTagsContext:function(a){return this.$("tags",a),this},clearContext:function(){return this.k={},this},getContext:function(){return JSON.parse(h(this.k))},setEnvironment:function(a){return this.l.environment=a,this},setRelease:function(a){return this.l.release=a,this},setDataCallback:function(a){var b=this.l.dataCallback;return this.l.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.l.breadcrumbCallback;return this.l.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.l.shouldSendCallback;return this.l.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.l.transport=a,this},lastException:function(){return this.e},lastEventId:function(){return this.g},isSetup:function(){return!!this.b&&(!!this.h||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.A("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=P.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(Q){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.I;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.k.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.K(this.H(c)),h=Q.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(Q.head||Q.body).appendChild(h)}},M:function(){var a=this;this.n+=1,setTimeout(function(){a.n-=1})},_:function(a,b){var c,d;if(this.c){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),Q.createEvent?(c=Q.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=Q.createEventObject(),c.eventType=a);for(d in b)y(b,d)&&(c[d]=b[d]);if(Q.createEvent)Q.dispatchEvent(c);else try{Q.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},aa:function(a){var b=this;return function(c){if(b.ba=null,b.w!==c){b.w=c;var d;try{d=C(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ca:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.ba;g||a.aa("input")(c),clearTimeout(g),a.ba=setTimeout(function(){a.ba=null},b)}}},da:function(a,b){var c=F(this.x.href),d=F(b),e=F(a);this.y=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},D:function(){var a=this;a.ea=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.N?a.ea.apply(this.P,arguments):a.ea.apply(this,arguments)}},R:function(){this.ea&&(Function.prototype.toString=this.ea)},E:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.da(b.y,c+""),a.apply(this,arguments)}};G(history,"pushState",j,d),G(history,"replaceState",j,d)}if(c.console&&"console"in P&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};u(["debug","info","warn","error","log"],function(a,b){M(console,b,k)})}},S:function(){for(var a;this.u.length;){a=this.u.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},T:function(){for(var a in this.r)this.q[a]=this.r[a]},G:function(){var a=this;u(this.s,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},H:function(a){var b=O.exec(a),c={},d=7;try{for(;d--;)c[N[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.l.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},K:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},B:function(){this.n||this.W.apply(this,arguments)},W:function(a,b){var c=this.Y(a,b);this._("handle",{stackInfo:a,options:b}),this.ga(a.name,a.message,a.url,a.lineno,c,b)},Y:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(u(a.stack,function(b,e){var f=c.ha(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.v,0)}),this.k.user&&(a.user=this.k.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),a=this.qa(a),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||t(a[b]))&&delete a[b]}),q(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!t(a)&&(!q(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.na()?void this.A("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function B(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&j(b))for(c=b.split(/\s+/),f=0;fc?M(a,b-1):d}function N(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?T:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function O(a,b){function c(a){return k(a)?a.map(function(a){return c(a)}):i(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!k(b)||k(b)&&0===b.length)return a;var d,e=w(b),f="********";try{d=JSON.parse(P(a))}catch(g){return a}return c(d)}var P=a(8),Q="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},R=3,S=51200,T=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isUndefined:g,isFunction:h,isPlainObject:i,isString:j,isArray:k,isEmptyObject:l,supportsErrorEvent:m,supportsFetch:n,supportsReferrerPolicy:o,supportsPromiseRejectionEvent:p,wrappedCallback:q,each:r,objectMerge:s,truncate:u,objectFrozen:t,hasKey:v,joinRegExp:w,urlencode:x,uuid4:z,htmlTreeAsString:A,htmlElementAsString:B,isSameException:E,isSameStacktrace:F,parseUrl:y,fill:G,safeJoin:H,serializeException:M,serializeKeysForMessage:N,sanitize:O}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{8:8}],7:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}var e=a(6),f={collectWindowErrors:!0,debug:!1},g="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},h=[].slice,i="?",j=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;f.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function k(a,b){var c=null;if(!b||f.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(h.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,g,h){var l=null,m=e.isErrorEvent(h)?h.error:h,n=e.isErrorEvent(a)?a.message:a;if(v)f.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&e.isError(m))l=f.computeStackTrace(m),k(l,!0);else{var p,r={url:b,line:c,column:g},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(j);p&&(s=p[1],n=p[2])}r.func=i,l={name:s,message:n,url:d(),stack:[r]},k(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=g.onerror,g.onerror=l,r=!0)}function n(){r&&(g.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,k.apply(null,[a,!1].concat(b))}function p(a,b){var c=h.call(arguments,1);if(v){if(u===a)return;o()}var d=f.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),f.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,e,f=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,g=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,h=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,j=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,k=/\((\S*)(?::(\d+))(?::(\d+))\)/,l=a.stack.split("\n"),m=[],n=(/^(.*) is undefined$/.exec(a.message),0),o=l.length;n eval")>-1;q&&(b=j.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==n||c[5]||"undefined"==typeof a.columnNumber||(m[0].column=a.columnNumber+1),e={url:c[3],func:c[1]||i,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}!e.func&&e.line&&(e.func=i),m.push(e)}return m.length?{name:a.name,message:a.message,url:d(),stack:m}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=i),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,g){for(var h,j,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==e&&o!==f.report){if(j={url:null,func:i,line:null,column:null},o.name?j.func=o.name:(h=k.exec(o.toString()))&&(j.func=h[1]),"undefined"==typeof j.func)try{j.func=h.input.substring(0,h.input.indexOf("{"))}catch(p){}m[""+o]?n=!0:m[""+o]=!0,l.push(j)}g&&l.splice(0,g);var q={name:a.name,message:a.message,url:d(),stack:l};return b(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),q}function e(b,e){var g=null;e=null==e?0:+e;try{if(g=a(b))return g}catch(h){if(f.debug)throw h}try{if(g=c(b,e+1))return g}catch(h){if(f.debug)throw h}return{name:b.name,message:b.message,url:d()}}return e.augmentStackTraceWithInitialElement=b,e.computeStackTraceFromStackProp=a,e}(),b.exports=f}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{6:6}],8:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}],9:[function(a,b,c){function d(a,b){var c=(65535&a)+(65535&b),d=(a>>16)+(b>>16)+(c>>16);return d<<16|65535&c}function e(a,b){return a<>>32-b}function f(a,b,c,f,g,h){return d(e(d(d(b,a),d(f,h)),g),c)}function g(a,b,c,d,e,g,h){return f(b&c|~b&d,a,b,e,g,h)}function h(a,b,c,d,e,g,h){return f(b&d|c&~d,a,b,e,g,h)}function i(a,b,c,d,e,g,h){return f(b^c^d,a,b,e,g,h)}function j(a,b,c,d,e,g,h){return f(c^(b|~d),a,b,e,g,h)}function k(a,b){a[b>>5]|=128<>>9<<4)+14]=b;var c,e,f,k,l,m=1732584193,n=-271733879,o=-1732584194,p=271733878;for(c=0;c>5]>>>b%32&255);return c}function m(a){var b,c=[];for(c[(a.length>>2)-1]=void 0,b=0;b>5]|=(255&a.charCodeAt(b/8))<16&&(e=k(e,8*a.length)),c=0;c<16;c+=1)f[c]=909522486^e[c],g[c]=1549556828^e[c];return d=k(f.concat(m(b)),512+8*b.length),l(k(g.concat(d),640))}function p(a){var b,c,d="0123456789abcdef",e="";for(c=0;c>>4&15)+d.charAt(15&b);return e}function q(a){return unescape(encodeURIComponent(a))}function r(a){return n(q(a))}function s(a){return p(r(a))}function t(a,b){return o(q(a),q(b))}function u(a,b){return p(t(a,b))}function v(a,b,c){return b?c?t(b,a):u(b,a):c?r(a):s(a)}b.exports=v},{}]},{},[5,1])(5)}); +/*! Raven.js 3.25.0 (80dffad) | github.com/getsentry/raven-js */ +!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.Raven=a()}}(function(){return function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};b[g][0].call(k.exports,function(a){var c=b[g][1][a];return e(c?c:a)},k,k.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;gthis.l.maxBreadcrumbs&&this.v.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.s.push([a,b]),this.o&&this.G(),this},setUserContext:function(a){return this.k.user=a,this},setExtraContext:function(a){return this.$("extra",a),this},setTagsContext:function(a){return this.$("tags",a),this},clearContext:function(){return this.k={},this},getContext:function(){return JSON.parse(h(this.k))},setEnvironment:function(a){return this.l.environment=a,this},setRelease:function(a){return this.l.release=a,this},setDataCallback:function(a){var b=this.l.dataCallback;return this.l.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.l.breadcrumbCallback;return this.l.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.l.shouldSendCallback;return this.l.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.l.transport=a,this},lastException:function(){return this.e},lastEventId:function(){return this.g},isSetup:function(){return!!this.b&&(!!this.h||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.A("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=R.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(S){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.I;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.k.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.K(this.H(c)),h=S.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(S.head||S.body).appendChild(h)}},M:function(){var a=this;this.n+=1,setTimeout(function(){a.n-=1})},_:function(a,b){var c,d;if(this.c){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),S.createEvent?(c=S.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=S.createEventObject(),c.eventType=a);for(d in b)A(b,d)&&(c[d]=b[d]);if(S.createEvent)S.dispatchEvent(c);else try{S.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},aa:function(a){var b=this;return function(c){if(b.ba=null,b.w!==c){b.w=c;var d;try{d=E(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ca:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.ba;g||a.aa("input")(c),clearTimeout(g),a.ba=setTimeout(function(){a.ba=null},b)}}},da:function(a,b){var c=H(this.x.href),d=H(b),e=H(a);this.y=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},D:function(){var a=this;a.ea=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.N?a.ea.apply(this.P,arguments):a.ea.apply(this,arguments)}},R:function(){this.ea&&(Function.prototype.toString=this.ea)},E:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.da(b.y,c+""),a.apply(this,arguments)}};I(history,"pushState",j,d),I(history,"replaceState",j,d)}if(c.console&&"console"in R&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};w(["debug","info","warn","error","log"],function(a,b){O(console,b,k)})}},S:function(){for(var a;this.u.length;){a=this.u.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},T:function(){for(var a in this.r)this.q[a]=this.r[a]},G:function(){var a=this;w(this.s,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},H:function(a){var b=Q.exec(a),c={},d=7;try{for(;d--;)c[P[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.l.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},K:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},B:function(){this.n||this.W.apply(this,arguments)},W:function(a,b){var c=this.Y(a,b);this._("handle",{stackInfo:a,options:b}),this.ga(a.name,a.message,a.url,a.lineno,c,b)},Y:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(w(a.stack,function(b,e){var f=c.ha(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.v,0)}),this.k.user&&(a.user=this.k.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),a=this.qa(a),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||v(a[b]))&&delete a[b]}),s(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!v(a)&&(!s(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.na()?void this.A("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function F(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&l(b))for(c=b.split(/\s+/),f=0;fc?Q(a,b-1):d}function R(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?X:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function S(a,b){function c(a){return m(a)?a.map(function(a){return c(a)}):k(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!m(b)||m(b)&&0===b.length)return a;var d,e=A(b),f="********";try{d=JSON.parse(T(a))}catch(g){return a}return c(d)}var T=a(8),U="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},V=3,W=51200,X=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isDOMError:g,isDOMException:h,isUndefined:i,isFunction:j,isPlainObject:k,isString:l,isArray:m,isEmptyObject:n,supportsErrorEvent:o,supportsDOMError:p,supportsDOMException:q,supportsFetch:r,supportsReferrerPolicy:s,supportsPromiseRejectionEvent:t,wrappedCallback:u,each:v,objectMerge:w,truncate:y,objectFrozen:x,hasKey:z,joinRegExp:A,urlencode:B,uuid4:D,htmlTreeAsString:E,htmlElementAsString:F,isSameException:I,isSameStacktrace:J,parseUrl:C,fill:K,safeJoin:L,serializeException:Q,serializeKeysForMessage:R,sanitize:S}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{8:8}],7:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}function e(){return"undefined"==typeof document||null==document.location?"":document.location.origin}var f=a(6),g={collectWindowErrors:!0,debug:!1},h="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},i=[].slice,j="?",k=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;g.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function e(a,b){var c=null;if(!b||g.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(i.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,h,i){var l=null,m=f.isErrorEvent(i)?i.error:i,n=f.isErrorEvent(a)?a.message:a;if(v)g.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&f.isError(m))l=g.computeStackTrace(m),e(l,!0);else{var p,r={url:b,line:c,column:h},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(k);p&&(s=p[1],n=p[2])}r.func=j,l={name:s,message:n,url:d(),stack:[r]},e(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=h.onerror,h.onerror=l,r=!0)}function n(){r&&(h.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,e.apply(null,[a,!1].concat(b))}function p(a,b){var c=i.call(arguments,1);if(v){if(u===a)return;o()}var d=g.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),g.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,f,g=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,h=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,i=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,k=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,l=/\((\S*)(?::(\d+))(?::(\d+))\)/,m=a.stack.split("\n"),n=[],o=(/^(.*) is undefined$/.exec(a.message),0),p=m.length;o eval")>-1;r&&(b=k.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==o||c[5]||"undefined"==typeof a.columnNumber||(n[0].column=a.columnNumber+1),f={url:c[3],func:c[1]||j,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}if(!f.func&&f.line&&(f.func=j),f.url&&"blob:"===f.url.substr(0,5)){var s=new XMLHttpRequest;if(s.open("GET",f.url,!1),s.send(null),200===s.status){var t=s.responseText||"";t=t.slice(-300);var u=t.match(/\/\/# sourceMappingURL=(.*)$/);if(u){var v=u[1];"~"===v.charAt(0)&&(v=e()+v.slice(1)),f.url=v.slice(0,-4)}}}n.push(f)}return n.length?{name:a.name,message:a.message,url:d(),stack:n}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=j),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,e){for(var h,i,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==f&&o!==g.report){if(i={url:null,func:j,line:null,column:null},o.name?i.func=o.name:(h=k.exec(o.toString()))&&(i.func=h[1]),"undefined"==typeof i.func)try{i.func=h.input.substring(0,h.input.indexOf("{")); +}catch(p){}m[""+o]?n=!0:m[""+o]=!0,l.push(i)}e&&l.splice(0,e);var q={name:a.name,message:a.message,url:d(),stack:l};return b(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),q}function f(b,e){var f=null;e=null==e?0:+e;try{if(f=a(b))return f}catch(h){if(g.debug)throw h}try{if(f=c(b,e+1))return f}catch(h){if(g.debug)throw h}return{name:b.name,message:b.message,url:d()}}return f.augmentStackTraceWithInitialElement=b,f.computeStackTraceFromStackProp=a,f}(),b.exports=g}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{6:6}],8:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}],9:[function(a,b,c){function d(a,b){var c=(65535&a)+(65535&b),d=(a>>16)+(b>>16)+(c>>16);return d<<16|65535&c}function e(a,b){return a<>>32-b}function f(a,b,c,f,g,h){return d(e(d(d(b,a),d(f,h)),g),c)}function g(a,b,c,d,e,g,h){return f(b&c|~b&d,a,b,e,g,h)}function h(a,b,c,d,e,g,h){return f(b&d|c&~d,a,b,e,g,h)}function i(a,b,c,d,e,g,h){return f(b^c^d,a,b,e,g,h)}function j(a,b,c,d,e,g,h){return f(c^(b|~d),a,b,e,g,h)}function k(a,b){a[b>>5]|=128<>>9<<4)+14]=b;var c,e,f,k,l,m=1732584193,n=-271733879,o=-1732584194,p=271733878;for(c=0;c>5]>>>b%32&255);return c}function m(a){var b,c=[];for(c[(a.length>>2)-1]=void 0,b=0;b>5]|=(255&a.charCodeAt(b/8))<16&&(e=k(e,8*a.length)),c=0;c<16;c+=1)f[c]=909522486^e[c],g[c]=1549556828^e[c];return d=k(f.concat(m(b)),512+8*b.length),l(k(g.concat(d),640))}function p(a){var b,c,d="0123456789abcdef",e="";for(c=0;c>>4&15)+d.charAt(15&b);return e}function q(a){return unescape(encodeURIComponent(a))}function r(a){return n(q(a))}function s(a){return p(r(a))}function t(a,b){return o(q(a),q(b))}function u(a,b){return p(t(a,b))}function v(a,b,c){return b?c?t(b,a):u(b,a):c?r(a):s(a)}b.exports=v},{}]},{},[5,1])(5)}); //# sourceMappingURL=raven.min.js.map \ No newline at end of file diff --git a/dist/angular/raven.min.js.map b/dist/angular/raven.min.js.map index cb648a0f5533..870e70f4888a 100644 --- a/dist/angular/raven.min.js.map +++ b/dist/angular/raven.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","angularPlugin","angular","RavenProvider","$get","$window","ExceptionHandlerProvider","$provide","decorator","exceptionHandler","R","$delegate","ex","cause","captureException","extra","moduleName","provider","config","setDataCallback","wrappedCallback","data","_normalizeData","angularPattern","exception","values","matches","exec","value","type","message","angularDocs","substr","addPlugin","5","6","2","RavenConfigError","name","prototype","constructor","3","utils","wrapMethod","console","level","callback","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","msg","safeJoin","logger","Function","apply","4","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","sanitizeKeys","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isError","isObject","isPlainObject","isErrorEvent","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","sanitize","wrapConsoleMethod","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","dsn","options","_logDebug","globalOptions","key","setDSN","push","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","toString","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","context","func","undefined","wrap","_before","wrapped","deep","_ignoreNextOnError","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","U","event","reason","unhandledPromiseRejection","C","_promiseRejectionHandler","bind","addEventListener","Q","removeEventListener","trimHeadFrames","error","captureMessage","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","V","currentOptions","exKeys","Object","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","M","setTimeout","_","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","aa","evtName","_keypressTimeout","target","category","ca","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","da","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","D","_originalFunctionToString","E","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","F","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","S","builtin","T","G","installer","concat","H","str","m","allowSecretKey","K","port","B","W","stackInfo","_triggerEvent","_processException","lineno","Y","frame","_normalizeFrame","in_app","ha","stackInfoUrl","normalized","filename","line","colno","column","function","ga","prefixedMessage","culprit","ia","request","Referer","breadcrumbs","_trimBreadcrumbs","ja","urlProp","urlProps","ka","httpData","userAgent","User-Agent","referrer","z","_backoffDuration","_backoffStart","na","oa","current","last","pa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Z","baseData","project","platform","_getHttpData","serverName","server_name","_sanitizeData","forEach","random","_sendProcessedPayload","qa","sa","ra","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","ta","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","onerror","open","setRequestHeader","send","ua","hash","evaluated","A","$","setUser","setReleaseContext","7","8","9","RavenConstructor","_Raven","noConflict","Client","what","supportsErrorEvent","ErrorEvent","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","sanitizeMask","safeInput","o_O","getLocationHref","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","y","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","charAt","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","string","raw"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file +{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","angularPlugin","angular","RavenProvider","$get","$window","ExceptionHandlerProvider","$provide","decorator","exceptionHandler","R","$delegate","ex","cause","captureException","extra","moduleName","provider","config","setDataCallback","wrappedCallback","data","_normalizeData","angularPattern","exception","values","matches","exec","value","type","message","angularDocs","substr","addPlugin","5","6","2","RavenConfigError","name","prototype","constructor","3","utils","wrapMethod","console","level","callback","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","msg","safeJoin","logger","Function","apply","4","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","sanitizeKeys","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isErrorEvent","isDOMError","isDOMException","isError","isObject","isPlainObject","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","sanitize","wrapConsoleMethod","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","dsn","options","_logDebug","globalOptions","key","setDSN","push","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","toString","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","context","func","undefined","wrap","_before","wrapped","deep","_ignoreNextOnError","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","U","event","reason","unhandledPromiseRejection","C","_promiseRejectionHandler","bind","addEventListener","Q","removeEventListener","trimHeadFrames","error","captureMessage","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","V","currentOptions","exKeys","Object","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","M","setTimeout","_","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","aa","evtName","_keypressTimeout","target","category","ca","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","da","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","D","_originalFunctionToString","E","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","F","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","S","builtin","T","G","installer","concat","H","str","m","allowSecretKey","K","port","B","W","stackInfo","_triggerEvent","_processException","lineno","Y","frame","_normalizeFrame","in_app","ha","stackInfoUrl","normalized","filename","line","colno","column","function","ga","prefixedMessage","culprit","ia","request","Referer","breadcrumbs","_trimBreadcrumbs","ja","urlProp","urlProps","ka","httpData","userAgent","User-Agent","referrer","z","_backoffDuration","_backoffStart","na","oa","current","last","pa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Z","baseData","project","platform","_getHttpData","serverName","server_name","_sanitizeData","forEach","random","_sendProcessedPayload","qa","sa","ra","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","ta","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","onerror","open","setRequestHeader","send","ua","hash","evaluated","A","$","setUser","setReleaseContext","7","8","9","RavenConstructor","_Raven","noConflict","Client","what","supportsErrorEvent","ErrorEvent","supportsDOMError","DOMError","supportsDOMException","DOMException","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","sanitizeMask","safeInput","o_O","getLocationHref","getLocationOrigin","origin","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","responseText","sourceMaps","sourceMapAddress","charAt","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","y","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","string","raw"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file diff --git a/dist/console,ember,require,vue/raven.js b/dist/console,ember,require,vue/raven.js index 4d72762fcc7f..e6e026fea0b6 100644 --- a/dist/console,ember,require,vue/raven.js +++ b/dist/console,ember,require,vue/raven.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.24.2 (540f32b) | github.com/getsentry/raven-js */ +/*! Raven.js 3.25.0 (80dffad) | github.com/getsentry/raven-js */ /* * Includes TraceKit @@ -209,10 +209,12 @@ var md5 = _dereq_(12); var RavenConfigError = _dereq_(5); var utils = _dereq_(9); +var isErrorEvent = utils.isErrorEvent; +var isDOMError = utils.isDOMError; +var isDOMException = utils.isDOMException; var isError = utils.isError; var isObject = utils.isObject; var isPlainObject = utils.isPlainObject; -var isErrorEvent = utils.isErrorEvent; var isUndefined = utils.isUndefined; var isFunction = utils.isFunction; var isString = utils.isString; @@ -340,7 +342,7 @@ Raven.prototype = { // webpack (using a build step causes webpack #1617). Grunt verifies that // this value matches package.json during build. // See: https://github.com/getsentry/raven-js/issues/465 - VERSION: '3.24.2', + VERSION: '3.25.0', debug: false, @@ -672,6 +674,23 @@ Raven.prototype = { if (isErrorEvent(ex) && ex.error) { // If it is an ErrorEvent with `error` property, extract it to get actual Error ex = ex.error; + } else if (isDOMError(ex) || isDOMException(ex)) { + // If it is a DOMError or DOMException (which are legacy APIs, but still supported in some browsers) + // then we just extract the name and message, as they don't provide anything else + // https://developer.mozilla.org/en-US/docs/Web/API/DOMError + // https://developer.mozilla.org/en-US/docs/Web/API/DOMException + var name = ex.name || (isDOMError(ex) ? 'DOMError' : 'DOMException'); + var message = ex.message ? name + ': ' + ex.message : name; + + return this.captureMessage( + message, + objectMerge(options, { + // neither DOMError or DOMException provide stack trace and we most likely wont get it this way as well + // but it's barely any overhead so we may at least try + stacktrace: true, + trimHeadFrames: options.trimHeadFrames + 1 + }) + ); } else if (isError(ex)) { // we have a real Error object ex = ex; @@ -683,6 +702,7 @@ Raven.prototype = { ex = new Error(options.message); } else { // If none of previous checks were valid, then it means that + // it's not a DOMError/DOMException // it's not a plain Object // it's not a valid ErrorEvent (one with an error property) // it's not an Error @@ -2455,7 +2475,7 @@ function isObject(what) { // Yanked from https://git.io/vS8DV re-used under CC0 // with some tiny modifications function isError(value) { - switch ({}.toString.call(value)) { + switch (Object.prototype.toString.call(value)) { case '[object Error]': return true; case '[object Exception]': @@ -2468,7 +2488,15 @@ function isError(value) { } function isErrorEvent(value) { - return supportsErrorEvent() && {}.toString.call(value) === '[object ErrorEvent]'; + return Object.prototype.toString.call(value) === '[object ErrorEvent]'; +} + +function isDOMError(value) { + return Object.prototype.toString.call(value) === '[object DOMError]'; +} + +function isDOMException(value) { + return Object.prototype.toString.call(value) === '[object DOMException]'; } function isUndefined(what) { @@ -2511,6 +2539,24 @@ function supportsErrorEvent() { } } +function supportsDOMError() { + try { + new DOMError(''); // eslint-disable-line no-new + return true; + } catch (e) { + return false; + } +} + +function supportsDOMException() { + try { + new DOMException(''); // eslint-disable-line no-new + return true; + } catch (e) { + return false; + } +} + function supportsFetch() { if (!('fetch' in _window)) return false; @@ -3026,6 +3072,8 @@ module.exports = { isObject: isObject, isError: isError, isErrorEvent: isErrorEvent, + isDOMError: isDOMError, + isDOMException: isDOMException, isUndefined: isUndefined, isFunction: isFunction, isPlainObject: isPlainObject, @@ -3033,6 +3081,8 @@ module.exports = { isArray: isArray, isEmptyObject: isEmptyObject, supportsErrorEvent: supportsErrorEvent, + supportsDOMError: supportsDOMError, + supportsDOMException: supportsDOMException, supportsFetch: supportsFetch, supportsReferrerPolicy: supportsReferrerPolicy, supportsPromiseRejectionEvent: supportsPromiseRejectionEvent, @@ -3092,10 +3142,14 @@ var ERROR_TYPES_RE = /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Ran function getLocationHref() { if (typeof document === 'undefined' || document.location == null) return ''; - return document.location.href; } +function getLocationOrigin() { + if (typeof document === 'undefined' || document.location == null) return ''; + return document.location.origin; +} + /** * TraceKit.report: cross-browser processing of unhandled exceptions * @@ -3503,6 +3557,44 @@ TraceKit.computeStackTrace = (function computeStackTraceWrapper() { element.func = UNKNOWN_FUNCTION; } + if (element.url && element.url.substr(0, 5) === 'blob:') { + // Special case for handling JavaScript loaded into a blob. + // We use a synchronous AJAX request here as a blob is already in + // memory - it's not making a network request. This will generate a warning + // in the browser console, but there has already been an error so that's not + // that much of an issue. + var xhr = new XMLHttpRequest(); + xhr.open('GET', element.url, false); + xhr.send(null); + + // If we failed to download the source, skip this patch + if (xhr.status === 200) { + var source = xhr.responseText || ''; + + // We trim the source down to the last 300 characters as sourceMappingURL is always at the end of the file. + // Why 300? To be in line with: https://github.com/getsentry/sentry/blob/4af29e8f2350e20c28a6933354e4f42437b4ba42/src/sentry/lang/javascript/processor.py#L164-L175 + source = source.slice(-300); + + // Now we dig out the source map URL + var sourceMaps = source.match(/\/\/# sourceMappingURL=(.*)$/); + + // If we don't find a source map comment or we find more than one, continue on to the next element. + if (sourceMaps) { + var sourceMapAddress = sourceMaps[1]; + + // Now we check to see if it's a relative URL. + // If it is, convert it to an absolute one. + if (sourceMapAddress.charAt(0) === '~') { + sourceMapAddress = getLocationOrigin() + sourceMapAddress.slice(1); + } + + // Now we strip the '.map' off of the end of the URL and update the + // element so that Sentry can match the map to the blob. + element.url = sourceMapAddress.slice(0, -4); + } + } + } + stack.push(element); } diff --git a/dist/console,ember,require,vue/raven.min.js b/dist/console,ember,require,vue/raven.min.js index ffeedbdf37ca..d057486fcb06 100644 --- a/dist/console,ember,require,vue/raven.min.js +++ b/dist/console,ember,require,vue/raven.min.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.24.2 (540f32b) | github.com/getsentry/raven-js */ -!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.Raven=a()}}(function(){var a;return function b(a,c,d){function e(g,h){if(!c[g]){if(!a[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};a[g][0].call(k.exports,function(b){var c=a[g][1][b];return e(c?c:b)},k,k.exports,b,a,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;g":"anonymous component")+(a._isVue&&a.$options.__file?" at "+a.$options.__file:"")}function e(a,b){if(b=b||window.Vue,b&&b.config){var c=b.config.errorHandler;b.config.errorHandler=function(b,e,f){var g={};"[object Object]"===Object.prototype.toString.call(e)&&(g.componentName=d(e),g.propsData=e.$options.propsData),"undefined"!=typeof f&&(g.lifecycleHook=f),a.captureException(b,{extra:g}),"function"==typeof c&&c.call(this,b,e,f)}}}b.exports=e,a(8).addPlugin(b.exports)},{8:8}],5:[function(a,b,c){function d(a){this.name="RavenConfigError",this.message=a}d.prototype=new Error,d.prototype.constructor=d,b.exports=d},{}],6:[function(a,b,c){var d=a(9),e=function(a,b,c){var e=a[b],f=a;if(b in a){var g="warn"===b?"warning":b;a[b]=function(){var a=[].slice.call(arguments),h=d.safeJoin(a," "),i={level:g,logger:"console",extra:{arguments:a}};"assert"===b?a[0]===!1&&(h="Assertion failed: "+(d.safeJoin(a.slice(1)," ")||"console.assert"),i.extra.arguments=a.slice(1),c&&c(h,i)):c&&c(h,i),e&&Function.prototype.apply.call(e,f,a)}}};b.exports={wrapMethod:e}},{9:9}],7:[function(a,b,c){(function(c){function d(){return+new Date}function e(a,b){return q(b)?function(c){return b(c,a)}:b}function f(){this.a=!("object"!=typeof JSON||!JSON.stringify),this.b=!p(Q),this.c=!p(R),this.d=null,this.e=null,this.f=null,this.g=null,this.h=null,this.i=null,this.j={},this.k={release:P.SENTRY_RELEASE&&P.SENTRY_RELEASE.id,logger:"javascript",ignoreErrors:[],ignoreUrls:[],whitelistUrls:[],includePaths:[],headers:null,collectWindowErrors:!0,captureUnhandledRejections:!0,maxMessageLength:0,maxUrlLength:250,stackTraceLimit:50,autoBreadcrumbs:!0,instrument:!0,sampleRate:1,sanitizeKeys:[]},this.l={method:"POST",keepalive:!0,referrerPolicy:I()?"origin":""},this.m=0,this.n=!1,this.o=Error.stackTraceLimit,this.p=P.console||{},this.q={},this.r=[],this.s=d(),this.t=[],this.u=[],this.v=null,this.w=P.location,this.x=this.w&&this.w.href,this.y();for(var a in this.p)this.q[a]=this.p[a]}var g=a(10),h=a(11),i=a(12),j=a(5),k=a(9),l=k.isError,m=k.isObject,n=k.isPlainObject,o=k.isErrorEvent,p=k.isUndefined,q=k.isFunction,r=k.isString,s=k.isArray,t=k.isEmptyObject,u=k.each,v=k.objectMerge,w=k.truncate,x=k.objectFrozen,y=k.hasKey,z=k.joinRegExp,A=k.urlencode,B=k.uuid4,C=k.htmlTreeAsString,D=k.isSameException,E=k.isSameStacktrace,F=k.parseUrl,G=k.fill,H=k.supportsFetch,I=k.supportsReferrerPolicy,J=k.serializeKeysForMessage,K=k.serializeException,L=k.sanitize,M=a(6).wrapMethod,N="source protocol user pass host port path".split(" "),O=/^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/,P="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},Q=P.document,R=P.navigator;f.prototype={VERSION:"3.24.2",debug:!1,TraceKit:g,config:function(a,b){var c=this;if(c.g)return this.z("error","Error: Raven has already been configured"),c;if(!a)return c;var d=c.k;b&&u(b,function(a,b){"tags"===a||"extra"===a||"user"===a?c.j[a]=b:d[a]=b}),c.setDSN(a),d.ignoreErrors.push(/^Script error\.?$/),d.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/),d.ignoreErrors=z(d.ignoreErrors),d.ignoreUrls=!!d.ignoreUrls.length&&z(d.ignoreUrls),d.whitelistUrls=!!d.whitelistUrls.length&&z(d.whitelistUrls),d.includePaths=z(d.includePaths),d.maxBreadcrumbs=Math.max(0,Math.min(d.maxBreadcrumbs||100,100));var e={xhr:!0,console:!0,dom:!0,location:!0,sentry:!0},f=d.autoBreadcrumbs;"[object Object]"==={}.toString.call(f)?f=v(e,f):f!==!1&&(f=e),d.autoBreadcrumbs=f;var h={tryCatch:!0},i=d.instrument;return"[object Object]"==={}.toString.call(i)?i=v(h,i):i!==!1&&(i=h),d.instrument=i,g.collectWindowErrors=!!d.collectWindowErrors,c},install:function(){var a=this;return a.isSetup()&&!a.n&&(g.report.subscribe(function(){a.A.apply(a,arguments)}),a.k.captureUnhandledRejections&&a.B(),a.C(),a.k.instrument&&a.k.instrument.tryCatch&&a.D(),a.k.autoBreadcrumbs&&a.E(),a.F(),a.n=!0),Error.stackTraceLimit=a.k.stackTraceLimit,this},setDSN:function(a){var b=this,c=b.G(a),d=c.path.lastIndexOf("/"),e=c.path.substr(1,d);b.H=a,b.h=c.user,b.I=c.pass&&c.pass.substr(1),b.i=c.path.substr(d+1),b.g=b.J(c),b.K=b.g+"/"+e+"api/"+b.i+"/store/",this.y()},context:function(a,b,c){return q(a)&&(c=b||[],b=a,a=void 0),this.wrap(a,b).apply(this,c)},wrap:function(a,b,c){function d(){var d=[],f=arguments.length,g=!a||a&&a.deep!==!1;for(c&&q(c)&&c.apply(this,arguments);f--;)d[f]=g?e.wrap(a,arguments[f]):arguments[f];try{return b.apply(this,d)}catch(h){throw e.L(),e.captureException(h,a),h}}var e=this;if(p(b)&&!q(a))return a;if(q(a)&&(b=a,a=void 0),!q(b))return b;try{if(b.M)return b;if(b.N)return b.N}catch(f){return b}for(var g in b)y(b,g)&&(d[g]=b[g]);return d.prototype=b.prototype,b.N=d,d.M=!0,d.O=b,d},uninstall:function(){return g.report.uninstall(),this.P(),this.Q(),this.R(),this.S(),Error.stackTraceLimit=this.o,this.n=!1,this},T:function(a){this.z("debug","Raven caught unhandled promise rejection:",a),this.captureException(a.reason,{extra:{unhandledPromiseRejection:!0}})},B:function(){return this.T=this.T.bind(this),P.addEventListener&&P.addEventListener("unhandledrejection",this.T),this},P:function(){return P.removeEventListener&&P.removeEventListener("unhandledrejection",this.T),this},captureException:function(a,b){if(b=v({trimHeadFrames:0},b?b:{}),o(a)&&a.error)a=a.error;else if(l(a))a=a;else{if(!n(a))return this.captureMessage(a,v(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}));b=this.U(b,a),a=new Error(b.message)}this.d=a;try{var c=g.computeStackTrace(a);this.V(c,b)}catch(d){if(a!==d)throw d}return this},U:function(a,b){var c=Object.keys(b).sort(),d=v(a,{message:"Non-Error exception captured with keys: "+J(c),fingerprint:[i(c)],extra:a.extra||{}});return d.extra.W=K(b),d},captureMessage:function(a,b){if(!this.k.ignoreErrors.test||!this.k.ignoreErrors.test(a)){b=b||{},a+="";var c,d=v({message:a},b);try{throw new Error(a)}catch(e){c=e}c.name=null;var f=g.computeStackTrace(c),h=s(f.stack)&&f.stack[1];h&&"Raven.captureException"===h.func&&(h=f.stack[2]);var i=h&&h.url||"";if((!this.k.ignoreUrls.test||!this.k.ignoreUrls.test(i))&&(!this.k.whitelistUrls.test||this.k.whitelistUrls.test(i))){if(this.k.stacktrace||b&&b.stacktrace){d.fingerprint=null==d.fingerprint?a:d.fingerprint,b=v({trimHeadFrames:0},b),b.trimHeadFrames+=1;var j=this.X(f,b);d.stacktrace={frames:j.reverse()}}return d.fingerprint&&(d.fingerprint=s(d.fingerprint)?d.fingerprint:[d.fingerprint]),this.Y(d),this}}},captureBreadcrumb:function(a){var b=v({timestamp:d()/1e3},a);if(q(this.k.breadcrumbCallback)){var c=this.k.breadcrumbCallback(b);if(m(c)&&!t(c))b=c;else if(c===!1)return this}return this.u.push(b),this.u.length>this.k.maxBreadcrumbs&&this.u.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.r.push([a,b]),this.n&&this.F(),this},setUserContext:function(a){return this.j.user=a,this},setExtraContext:function(a){return this.Z("extra",a),this},setTagsContext:function(a){return this.Z("tags",a),this},clearContext:function(){return this.j={},this},getContext:function(){return JSON.parse(h(this.j))},setEnvironment:function(a){return this.k.environment=a,this},setRelease:function(a){return this.k.release=a,this},setDataCallback:function(a){var b=this.k.dataCallback;return this.k.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.k.breadcrumbCallback;return this.k.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.k.shouldSendCallback;return this.k.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.k.transport=a,this},lastException:function(){return this.d},lastEventId:function(){return this.f},isSetup:function(){return!!this.a&&(!!this.g||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.z("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=P.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(Q){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.H;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.j.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.J(this.G(c)),h=Q.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(Q.head||Q.body).appendChild(h)}},L:function(){var a=this;this.m+=1,setTimeout(function(){a.m-=1})},$:function(a,b){var c,d;if(this.b){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),Q.createEvent?(c=Q.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=Q.createEventObject(),c.eventType=a);for(d in b)y(b,d)&&(c[d]=b[d]);if(Q.createEvent)Q.dispatchEvent(c);else try{Q.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},_:function(a){var b=this;return function(c){if(b.aa=null,b.v!==c){b.v=c;var d;try{d=C(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ba:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.aa;g||a._("input")(c),clearTimeout(g),a.aa=setTimeout(function(){a.aa=null},b)}}},ca:function(a,b){var c=F(this.w.href),d=F(b),e=F(a);this.x=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},C:function(){var a=this;a.da=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.M?a.da.apply(this.O,arguments):a.da.apply(this,arguments)}},Q:function(){this.da&&(Function.prototype.toString=this.da)},D:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.ca(b.x,c+""),a.apply(this,arguments)}};G(history,"pushState",j,d),G(history,"replaceState",j,d)}if(c.console&&"console"in P&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};u(["debug","info","warn","error","log"],function(a,b){M(console,b,k)})}},R:function(){for(var a;this.t.length;){a=this.t.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},S:function(){for(var a in this.q)this.p[a]=this.q[a]},F:function(){var a=this;u(this.r,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},G:function(a){var b=O.exec(a),c={},d=7;try{for(;d--;)c[N[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.k.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},J:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},A:function(){this.m||this.V.apply(this,arguments)},V:function(a,b){var c=this.X(a,b);this.$("handle",{stackInfo:a,options:b}),this.fa(a.name,a.message,a.url,a.lineno,c,b)},X:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(u(a.stack,function(b,e){var f=c.ga(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.u,0)}),this.j.user&&(a.user=this.j.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),a=this.pa(a),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||t(a[b]))&&delete a[b]}),q(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!t(a)&&(!q(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.ma()?void this.z("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function B(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&j(b))for(c=b.split(/\s+/),f=0;fc?M(a,b-1):d}function N(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?T:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function O(a,b){function c(a){return k(a)?a.map(function(a){return c(a)}):i(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!k(b)||k(b)&&0===b.length)return a;var d,e=w(b),f="********";try{d=JSON.parse(P(a))}catch(g){return a}return c(d)}var P=a(11),Q="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},R=3,S=51200,T=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isUndefined:g,isFunction:h,isPlainObject:i,isString:j,isArray:k,isEmptyObject:l,supportsErrorEvent:m,supportsFetch:n,supportsReferrerPolicy:o,supportsPromiseRejectionEvent:p,wrappedCallback:q,each:r,objectMerge:s,truncate:u,objectFrozen:t,hasKey:v,joinRegExp:w,urlencode:x,uuid4:z,htmlTreeAsString:A,htmlElementAsString:B,isSameException:E,isSameStacktrace:F,parseUrl:y,fill:G,safeJoin:H,serializeException:M,serializeKeysForMessage:N,sanitize:O}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{11:11}],10:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}var e=a(9),f={collectWindowErrors:!0,debug:!1},g="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},h=[].slice,i="?",j=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;f.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function k(a,b){var c=null;if(!b||f.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(h.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,g,h){var l=null,m=e.isErrorEvent(h)?h.error:h,n=e.isErrorEvent(a)?a.message:a;if(v)f.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&e.isError(m))l=f.computeStackTrace(m),k(l,!0);else{var p,r={url:b,line:c,column:g},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(j);p&&(s=p[1],n=p[2])}r.func=i,l={name:s,message:n,url:d(),stack:[r]},k(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=g.onerror,g.onerror=l,r=!0)}function n(){r&&(g.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,k.apply(null,[a,!1].concat(b))}function p(a,b){var c=h.call(arguments,1);if(v){if(u===a)return;o()}var d=f.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),f.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,e,f=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,g=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,h=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,j=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,k=/\((\S*)(?::(\d+))(?::(\d+))\)/,l=a.stack.split("\n"),m=[],n=(/^(.*) is undefined$/.exec(a.message),0),o=l.length;n eval")>-1;q&&(b=j.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==n||c[5]||"undefined"==typeof a.columnNumber||(m[0].column=a.columnNumber+1),e={url:c[3],func:c[1]||i,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}!e.func&&e.line&&(e.func=i),m.push(e)}return m.length?{name:a.name,message:a.message,url:d(),stack:m}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=i),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,g){for(var h,j,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==e&&o!==f.report){if(j={url:null,func:i,line:null,column:null},o.name?j.func=o.name:(h=k.exec(o.toString()))&&(j.func=h[1]),"undefined"==typeof j.func)try{j.func=h.input.substring(0,h.input.indexOf("{"))}catch(p){}m[""+o]?n=!0:m[""+o]=!0,l.push(j)}g&&l.splice(0,g);var q={name:a.name,message:a.message,url:d(),stack:l};return b(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description), -q}function e(b,e){var g=null;e=null==e?0:+e;try{if(g=a(b))return g}catch(h){if(f.debug)throw h}try{if(g=c(b,e+1))return g}catch(h){if(f.debug)throw h}return{name:b.name,message:b.message,url:d()}}return e.augmentStackTraceWithInitialElement=b,e.computeStackTraceFromStackProp=a,e}(),b.exports=f}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{9:9}],11:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}],12:[function(a,b,c){function d(a,b){var c=(65535&a)+(65535&b),d=(a>>16)+(b>>16)+(c>>16);return d<<16|65535&c}function e(a,b){return a<>>32-b}function f(a,b,c,f,g,h){return d(e(d(d(b,a),d(f,h)),g),c)}function g(a,b,c,d,e,g,h){return f(b&c|~b&d,a,b,e,g,h)}function h(a,b,c,d,e,g,h){return f(b&d|c&~d,a,b,e,g,h)}function i(a,b,c,d,e,g,h){return f(b^c^d,a,b,e,g,h)}function j(a,b,c,d,e,g,h){return f(c^(b|~d),a,b,e,g,h)}function k(a,b){a[b>>5]|=128<>>9<<4)+14]=b;var c,e,f,k,l,m=1732584193,n=-271733879,o=-1732584194,p=271733878;for(c=0;c>5]>>>b%32&255);return c}function m(a){var b,c=[];for(c[(a.length>>2)-1]=void 0,b=0;b>5]|=(255&a.charCodeAt(b/8))<16&&(e=k(e,8*a.length)),c=0;c<16;c+=1)f[c]=909522486^e[c],g[c]=1549556828^e[c];return d=k(f.concat(m(b)),512+8*b.length),l(k(g.concat(d),640))}function p(a){var b,c,d="0123456789abcdef",e="";for(c=0;c>>4&15)+d.charAt(15&b);return e}function q(a){return unescape(encodeURIComponent(a))}function r(a){return n(q(a))}function s(a){return p(r(a))}function t(a,b){return o(q(a),q(b))}function u(a,b){return p(t(a,b))}function v(a,b,c){return b?c?t(b,a):u(b,a):c?r(a):s(a)}b.exports=v},{}]},{},[8,1,2,3,4])(8)}); +/*! Raven.js 3.25.0 (80dffad) | github.com/getsentry/raven-js */ +!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.Raven=a()}}(function(){var a;return function b(a,c,d){function e(g,h){if(!c[g]){if(!a[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};a[g][0].call(k.exports,function(b){var c=a[g][1][b];return e(c?c:b)},k,k.exports,b,a,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;g":"anonymous component")+(a._isVue&&a.$options.__file?" at "+a.$options.__file:"")}function e(a,b){if(b=b||window.Vue,b&&b.config){var c=b.config.errorHandler;b.config.errorHandler=function(b,e,f){var g={};"[object Object]"===Object.prototype.toString.call(e)&&(g.componentName=d(e),g.propsData=e.$options.propsData),"undefined"!=typeof f&&(g.lifecycleHook=f),a.captureException(b,{extra:g}),"function"==typeof c&&c.call(this,b,e,f)}}}b.exports=e,a(8).addPlugin(b.exports)},{8:8}],5:[function(a,b,c){function d(a){this.name="RavenConfigError",this.message=a}d.prototype=new Error,d.prototype.constructor=d,b.exports=d},{}],6:[function(a,b,c){var d=a(9),e=function(a,b,c){var e=a[b],f=a;if(b in a){var g="warn"===b?"warning":b;a[b]=function(){var a=[].slice.call(arguments),h=d.safeJoin(a," "),i={level:g,logger:"console",extra:{arguments:a}};"assert"===b?a[0]===!1&&(h="Assertion failed: "+(d.safeJoin(a.slice(1)," ")||"console.assert"),i.extra.arguments=a.slice(1),c&&c(h,i)):c&&c(h,i),e&&Function.prototype.apply.call(e,f,a)}}};b.exports={wrapMethod:e}},{9:9}],7:[function(a,b,c){(function(c){function d(){return+new Date}function e(a,b){return s(b)?function(c){return b(c,a)}:b}function f(){this.a=!("object"!=typeof JSON||!JSON.stringify),this.b=!r(S),this.c=!r(T),this.d=null,this.e=null,this.f=null,this.g=null,this.h=null,this.i=null,this.j={},this.k={release:R.SENTRY_RELEASE&&R.SENTRY_RELEASE.id,logger:"javascript",ignoreErrors:[],ignoreUrls:[],whitelistUrls:[],includePaths:[],headers:null,collectWindowErrors:!0,captureUnhandledRejections:!0,maxMessageLength:0,maxUrlLength:250,stackTraceLimit:50,autoBreadcrumbs:!0,instrument:!0,sampleRate:1,sanitizeKeys:[]},this.l={method:"POST",keepalive:!0,referrerPolicy:K()?"origin":""},this.m=0,this.n=!1,this.o=Error.stackTraceLimit,this.p=R.console||{},this.q={},this.r=[],this.s=d(),this.t=[],this.u=[],this.v=null,this.w=R.location,this.x=this.w&&this.w.href,this.y();for(var a in this.p)this.q[a]=this.p[a]}var g=a(10),h=a(11),i=a(12),j=a(5),k=a(9),l=k.isErrorEvent,m=k.isDOMError,n=k.isDOMException,o=k.isError,p=k.isObject,q=k.isPlainObject,r=k.isUndefined,s=k.isFunction,t=k.isString,u=k.isArray,v=k.isEmptyObject,w=k.each,x=k.objectMerge,y=k.truncate,z=k.objectFrozen,A=k.hasKey,B=k.joinRegExp,C=k.urlencode,D=k.uuid4,E=k.htmlTreeAsString,F=k.isSameException,G=k.isSameStacktrace,H=k.parseUrl,I=k.fill,J=k.supportsFetch,K=k.supportsReferrerPolicy,L=k.serializeKeysForMessage,M=k.serializeException,N=k.sanitize,O=a(6).wrapMethod,P="source protocol user pass host port path".split(" "),Q=/^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/,R="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},S=R.document,T=R.navigator;f.prototype={VERSION:"3.25.0",debug:!1,TraceKit:g,config:function(a,b){var c=this;if(c.g)return this.z("error","Error: Raven has already been configured"),c;if(!a)return c;var d=c.k;b&&w(b,function(a,b){"tags"===a||"extra"===a||"user"===a?c.j[a]=b:d[a]=b}),c.setDSN(a),d.ignoreErrors.push(/^Script error\.?$/),d.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/),d.ignoreErrors=B(d.ignoreErrors),d.ignoreUrls=!!d.ignoreUrls.length&&B(d.ignoreUrls),d.whitelistUrls=!!d.whitelistUrls.length&&B(d.whitelistUrls),d.includePaths=B(d.includePaths),d.maxBreadcrumbs=Math.max(0,Math.min(d.maxBreadcrumbs||100,100));var e={xhr:!0,console:!0,dom:!0,location:!0,sentry:!0},f=d.autoBreadcrumbs;"[object Object]"==={}.toString.call(f)?f=x(e,f):f!==!1&&(f=e),d.autoBreadcrumbs=f;var h={tryCatch:!0},i=d.instrument;return"[object Object]"==={}.toString.call(i)?i=x(h,i):i!==!1&&(i=h),d.instrument=i,g.collectWindowErrors=!!d.collectWindowErrors,c},install:function(){var a=this;return a.isSetup()&&!a.n&&(g.report.subscribe(function(){a.A.apply(a,arguments)}),a.k.captureUnhandledRejections&&a.B(),a.C(),a.k.instrument&&a.k.instrument.tryCatch&&a.D(),a.k.autoBreadcrumbs&&a.E(),a.F(),a.n=!0),Error.stackTraceLimit=a.k.stackTraceLimit,this},setDSN:function(a){var b=this,c=b.G(a),d=c.path.lastIndexOf("/"),e=c.path.substr(1,d);b.H=a,b.h=c.user,b.I=c.pass&&c.pass.substr(1),b.i=c.path.substr(d+1),b.g=b.J(c),b.K=b.g+"/"+e+"api/"+b.i+"/store/",this.y()},context:function(a,b,c){return s(a)&&(c=b||[],b=a,a=void 0),this.wrap(a,b).apply(this,c)},wrap:function(a,b,c){function d(){var d=[],f=arguments.length,g=!a||a&&a.deep!==!1;for(c&&s(c)&&c.apply(this,arguments);f--;)d[f]=g?e.wrap(a,arguments[f]):arguments[f];try{return b.apply(this,d)}catch(h){throw e.L(),e.captureException(h,a),h}}var e=this;if(r(b)&&!s(a))return a;if(s(a)&&(b=a,a=void 0),!s(b))return b;try{if(b.M)return b;if(b.N)return b.N}catch(f){return b}for(var g in b)A(b,g)&&(d[g]=b[g]);return d.prototype=b.prototype,b.N=d,d.M=!0,d.O=b,d},uninstall:function(){return g.report.uninstall(),this.P(),this.Q(),this.R(),this.S(),Error.stackTraceLimit=this.o,this.n=!1,this},T:function(a){this.z("debug","Raven caught unhandled promise rejection:",a),this.captureException(a.reason,{extra:{unhandledPromiseRejection:!0}})},B:function(){return this.T=this.T.bind(this),R.addEventListener&&R.addEventListener("unhandledrejection",this.T),this},P:function(){return R.removeEventListener&&R.removeEventListener("unhandledrejection",this.T),this},captureException:function(a,b){if(b=x({trimHeadFrames:0},b?b:{}),l(a)&&a.error)a=a.error;else{if(m(a)||n(a)){var c=a.name||(m(a)?"DOMError":"DOMException"),d=a.message?c+": "+a.message:c;return this.captureMessage(d,x(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}))}if(o(a))a=a;else{if(!q(a))return this.captureMessage(a,x(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}));b=this.U(b,a),a=new Error(b.message)}}this.d=a;try{var e=g.computeStackTrace(a);this.V(e,b)}catch(f){if(a!==f)throw f}return this},U:function(a,b){var c=Object.keys(b).sort(),d=x(a,{message:"Non-Error exception captured with keys: "+L(c),fingerprint:[i(c)],extra:a.extra||{}});return d.extra.W=M(b),d},captureMessage:function(a,b){if(!this.k.ignoreErrors.test||!this.k.ignoreErrors.test(a)){b=b||{},a+="";var c,d=x({message:a},b);try{throw new Error(a)}catch(e){c=e}c.name=null;var f=g.computeStackTrace(c),h=u(f.stack)&&f.stack[1];h&&"Raven.captureException"===h.func&&(h=f.stack[2]);var i=h&&h.url||"";if((!this.k.ignoreUrls.test||!this.k.ignoreUrls.test(i))&&(!this.k.whitelistUrls.test||this.k.whitelistUrls.test(i))){if(this.k.stacktrace||b&&b.stacktrace){d.fingerprint=null==d.fingerprint?a:d.fingerprint,b=x({trimHeadFrames:0},b),b.trimHeadFrames+=1;var j=this.X(f,b);d.stacktrace={frames:j.reverse()}}return d.fingerprint&&(d.fingerprint=u(d.fingerprint)?d.fingerprint:[d.fingerprint]),this.Y(d),this}}},captureBreadcrumb:function(a){var b=x({timestamp:d()/1e3},a);if(s(this.k.breadcrumbCallback)){var c=this.k.breadcrumbCallback(b);if(p(c)&&!v(c))b=c;else if(c===!1)return this}return this.u.push(b),this.u.length>this.k.maxBreadcrumbs&&this.u.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.r.push([a,b]),this.n&&this.F(),this},setUserContext:function(a){return this.j.user=a,this},setExtraContext:function(a){return this.Z("extra",a),this},setTagsContext:function(a){return this.Z("tags",a),this},clearContext:function(){return this.j={},this},getContext:function(){return JSON.parse(h(this.j))},setEnvironment:function(a){return this.k.environment=a,this},setRelease:function(a){return this.k.release=a,this},setDataCallback:function(a){var b=this.k.dataCallback;return this.k.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.k.breadcrumbCallback;return this.k.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.k.shouldSendCallback;return this.k.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.k.transport=a,this},lastException:function(){return this.d},lastEventId:function(){return this.f},isSetup:function(){return!!this.a&&(!!this.g||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.z("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=R.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(S){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.H;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.j.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.J(this.G(c)),h=S.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(S.head||S.body).appendChild(h)}},L:function(){var a=this;this.m+=1,setTimeout(function(){a.m-=1})},$:function(a,b){var c,d;if(this.b){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),S.createEvent?(c=S.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=S.createEventObject(),c.eventType=a);for(d in b)A(b,d)&&(c[d]=b[d]);if(S.createEvent)S.dispatchEvent(c);else try{S.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},_:function(a){var b=this;return function(c){if(b.aa=null,b.v!==c){b.v=c;var d;try{d=E(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ba:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.aa;g||a._("input")(c),clearTimeout(g),a.aa=setTimeout(function(){a.aa=null},b)}}},ca:function(a,b){var c=H(this.w.href),d=H(b),e=H(a);this.x=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},C:function(){var a=this;a.da=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.M?a.da.apply(this.O,arguments):a.da.apply(this,arguments)}},Q:function(){this.da&&(Function.prototype.toString=this.da)},D:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.ca(b.x,c+""),a.apply(this,arguments)}};I(history,"pushState",j,d),I(history,"replaceState",j,d)}if(c.console&&"console"in R&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};w(["debug","info","warn","error","log"],function(a,b){O(console,b,k)})}},R:function(){for(var a;this.t.length;){a=this.t.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},S:function(){for(var a in this.q)this.p[a]=this.q[a]},F:function(){var a=this;w(this.r,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},G:function(a){var b=Q.exec(a),c={},d=7;try{for(;d--;)c[P[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.k.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},J:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},A:function(){this.m||this.V.apply(this,arguments)},V:function(a,b){var c=this.X(a,b);this.$("handle",{stackInfo:a,options:b}),this.fa(a.name,a.message,a.url,a.lineno,c,b)},X:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(w(a.stack,function(b,e){var f=c.ga(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.u,0)}),this.j.user&&(a.user=this.j.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),a=this.pa(a),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||v(a[b]))&&delete a[b]}),s(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!v(a)&&(!s(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.ma()?void this.z("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function F(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&l(b))for(c=b.split(/\s+/),f=0;fc?Q(a,b-1):d}function R(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?X:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function S(a,b){function c(a){return m(a)?a.map(function(a){return c(a)}):k(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!m(b)||m(b)&&0===b.length)return a;var d,e=A(b),f="********";try{d=JSON.parse(T(a))}catch(g){return a}return c(d)}var T=a(11),U="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},V=3,W=51200,X=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isDOMError:g,isDOMException:h,isUndefined:i,isFunction:j,isPlainObject:k,isString:l,isArray:m,isEmptyObject:n,supportsErrorEvent:o,supportsDOMError:p,supportsDOMException:q,supportsFetch:r,supportsReferrerPolicy:s,supportsPromiseRejectionEvent:t,wrappedCallback:u,each:v,objectMerge:w,truncate:y,objectFrozen:x,hasKey:z,joinRegExp:A,urlencode:B,uuid4:D,htmlTreeAsString:E,htmlElementAsString:F,isSameException:I,isSameStacktrace:J,parseUrl:C,fill:K,safeJoin:L,serializeException:Q,serializeKeysForMessage:R,sanitize:S}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{11:11}],10:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}function e(){return"undefined"==typeof document||null==document.location?"":document.location.origin}var f=a(9),g={collectWindowErrors:!0,debug:!1},h="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},i=[].slice,j="?",k=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;g.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function e(a,b){var c=null;if(!b||g.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(i.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,h,i){var l=null,m=f.isErrorEvent(i)?i.error:i,n=f.isErrorEvent(a)?a.message:a;if(v)g.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&f.isError(m))l=g.computeStackTrace(m),e(l,!0);else{var p,r={url:b,line:c,column:h},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(k);p&&(s=p[1],n=p[2])}r.func=j,l={name:s,message:n,url:d(),stack:[r]},e(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=h.onerror,h.onerror=l,r=!0)}function n(){r&&(h.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,e.apply(null,[a,!1].concat(b))}function p(a,b){var c=i.call(arguments,1);if(v){if(u===a)return;o()}var d=g.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),g.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,f,g=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,h=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,i=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,k=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,l=/\((\S*)(?::(\d+))(?::(\d+))\)/,m=a.stack.split("\n"),n=[],o=(/^(.*) is undefined$/.exec(a.message),0),p=m.length;o eval")>-1;r&&(b=k.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==o||c[5]||"undefined"==typeof a.columnNumber||(n[0].column=a.columnNumber+1),f={url:c[3],func:c[1]||j,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}if(!f.func&&f.line&&(f.func=j),f.url&&"blob:"===f.url.substr(0,5)){var s=new XMLHttpRequest;if(s.open("GET",f.url,!1),s.send(null),200===s.status){var t=s.responseText||"";t=t.slice(-300);var u=t.match(/\/\/# sourceMappingURL=(.*)$/); +if(u){var v=u[1];"~"===v.charAt(0)&&(v=e()+v.slice(1)),f.url=v.slice(0,-4)}}}n.push(f)}return n.length?{name:a.name,message:a.message,url:d(),stack:n}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=j),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,e){for(var h,i,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==f&&o!==g.report){if(i={url:null,func:j,line:null,column:null},o.name?i.func=o.name:(h=k.exec(o.toString()))&&(i.func=h[1]),"undefined"==typeof i.func)try{i.func=h.input.substring(0,h.input.indexOf("{"))}catch(p){}m[""+o]?n=!0:m[""+o]=!0,l.push(i)}e&&l.splice(0,e);var q={name:a.name,message:a.message,url:d(),stack:l};return b(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),q}function f(b,e){var f=null;e=null==e?0:+e;try{if(f=a(b))return f}catch(h){if(g.debug)throw h}try{if(f=c(b,e+1))return f}catch(h){if(g.debug)throw h}return{name:b.name,message:b.message,url:d()}}return f.augmentStackTraceWithInitialElement=b,f.computeStackTraceFromStackProp=a,f}(),b.exports=g}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{9:9}],11:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}],12:[function(a,b,c){function d(a,b){var c=(65535&a)+(65535&b),d=(a>>16)+(b>>16)+(c>>16);return d<<16|65535&c}function e(a,b){return a<>>32-b}function f(a,b,c,f,g,h){return d(e(d(d(b,a),d(f,h)),g),c)}function g(a,b,c,d,e,g,h){return f(b&c|~b&d,a,b,e,g,h)}function h(a,b,c,d,e,g,h){return f(b&d|c&~d,a,b,e,g,h)}function i(a,b,c,d,e,g,h){return f(b^c^d,a,b,e,g,h)}function j(a,b,c,d,e,g,h){return f(c^(b|~d),a,b,e,g,h)}function k(a,b){a[b>>5]|=128<>>9<<4)+14]=b;var c,e,f,k,l,m=1732584193,n=-271733879,o=-1732584194,p=271733878;for(c=0;c>5]>>>b%32&255);return c}function m(a){var b,c=[];for(c[(a.length>>2)-1]=void 0,b=0;b>5]|=(255&a.charCodeAt(b/8))<16&&(e=k(e,8*a.length)),c=0;c<16;c+=1)f[c]=909522486^e[c],g[c]=1549556828^e[c];return d=k(f.concat(m(b)),512+8*b.length),l(k(g.concat(d),640))}function p(a){var b,c,d="0123456789abcdef",e="";for(c=0;c>>4&15)+d.charAt(15&b);return e}function q(a){return unescape(encodeURIComponent(a))}function r(a){return n(q(a))}function s(a){return p(r(a))}function t(a,b){return o(q(a),q(b))}function u(a,b){return p(t(a,b))}function v(a,b,c){return b?c?t(b,a):u(b,a):c?r(a):s(a)}b.exports=v},{}]},{},[8,1,2,3,4])(8)}); //# sourceMappingURL=raven.min.js.map \ No newline at end of file diff --git a/dist/console,ember,require,vue/raven.min.js.map b/dist/console,ember,require,vue/raven.min.js.map index ddb791b3857d..d9a3b363103a 100644 --- a/dist/console,ember,require,vue/raven.min.js.map +++ b/dist/console,ember,require,vue/raven.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","consolePlugin","console","pluginOptions","logLevels","levels","push","callback","msg","data","captureMessage","level","pop","wrapConsoleMethod","wrapMethod","addPlugin","6","8","2","emberPlugin","Ember","_oldOnError","onerror","error","captureException","RSVP","on","reason","extra","context","3","requirePlugin","wrap","deep","4","formatComponentName","vm","$root","name","_isVue","$options","_componentTag","__file","vuePlugin","Vue","config","errorHandler","info","metaData","Object","prototype","toString","componentName","propsData","lifecycleHook","5","RavenConfigError","message","constructor","utils","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","safeJoin","logger","Function","apply","9","7","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","sanitizeKeys","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isError","isObject","isPlainObject","isErrorEvent","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","sanitize","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","dsn","options","_logDebug","globalOptions","key","value","setDSN","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","substr","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","func","undefined","_before","wrapped","_ignoreNextOnError","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","T","event","unhandledPromiseRejection","B","_promiseRejectionHandler","bind","addEventListener","P","removeEventListener","ex","trimHeadFrames","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","U","currentOptions","exKeys","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","setDataCallback","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","L","setTimeout","$","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","_","evtName","_keypressTimeout","target","category","ba","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","ca","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","C","_originalFunctionToString","Q","D","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","type","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","E","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","R","builtin","S","F","installer","concat","G","str","m","exec","allowSecretKey","J","port","A","V","stackInfo","_triggerEvent","_processException","lineno","X","frame","_normalizeFrame","in_app","ga","stackInfoUrl","normalized","filename","line","colno","column","function","fa","prefixedMessage","exception","values","culprit","ha","request","Referer","breadcrumbs","_trimBreadcrumbs","ia","urlProp","urlProps","ja","httpData","userAgent","User-Agent","referrer","y","_backoffDuration","_backoffStart","ma","na","current","last","oa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Y","baseData","project","platform","_getHttpData","serverName","server_name","_sanitizeData","forEach","random","_sendProcessedPayload","pa","ra","qa","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","sa","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","open","setRequestHeader","send","ta","hash","evaluated","z","Z","setUser","setReleaseContext","10","11","12","RavenConstructor","_Raven","noConflict","Client","what","supportsErrorEvent","ErrorEvent","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","wrappedCallback","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","sanitizeMask","safeInput","o_O","getLocationHref","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","charAt","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","string","raw"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file +{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","consolePlugin","console","pluginOptions","logLevels","levels","push","callback","msg","data","captureMessage","level","pop","wrapConsoleMethod","wrapMethod","addPlugin","6","8","2","emberPlugin","Ember","_oldOnError","onerror","error","captureException","RSVP","on","reason","extra","context","3","requirePlugin","wrap","deep","4","formatComponentName","vm","$root","name","_isVue","$options","_componentTag","__file","vuePlugin","Vue","config","errorHandler","info","metaData","Object","prototype","toString","componentName","propsData","lifecycleHook","5","RavenConfigError","message","constructor","utils","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","safeJoin","logger","Function","apply","9","7","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","sanitizeKeys","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isErrorEvent","isDOMError","isDOMException","isError","isObject","isPlainObject","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","sanitize","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","dsn","options","_logDebug","globalOptions","key","value","setDSN","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","substr","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","func","undefined","_before","wrapped","_ignoreNextOnError","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","T","event","unhandledPromiseRejection","B","_promiseRejectionHandler","bind","addEventListener","P","removeEventListener","ex","trimHeadFrames","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","U","currentOptions","exKeys","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","setDataCallback","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","L","setTimeout","$","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","_","evtName","_keypressTimeout","target","category","ba","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","ca","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","C","_originalFunctionToString","Q","D","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","type","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","E","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","R","builtin","S","F","installer","concat","G","str","m","exec","allowSecretKey","J","port","A","V","stackInfo","_triggerEvent","_processException","lineno","X","frame","_normalizeFrame","in_app","ga","stackInfoUrl","normalized","filename","line","colno","column","function","fa","prefixedMessage","exception","values","culprit","ha","request","Referer","breadcrumbs","_trimBreadcrumbs","ia","urlProp","urlProps","ja","httpData","userAgent","User-Agent","referrer","y","_backoffDuration","_backoffStart","ma","na","current","last","oa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Y","baseData","project","platform","_getHttpData","serverName","server_name","_sanitizeData","forEach","random","_sendProcessedPayload","pa","ra","qa","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","sa","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","open","setRequestHeader","send","ta","hash","evaluated","z","Z","setUser","setReleaseContext","10","11","12","RavenConstructor","_Raven","noConflict","Client","what","supportsErrorEvent","ErrorEvent","supportsDOMError","DOMError","supportsDOMException","DOMException","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","wrappedCallback","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","sanitizeMask","safeInput","o_O","getLocationHref","getLocationOrigin","origin","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","responseText","sourceMaps","sourceMapAddress","charAt","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","string","raw"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file diff --git a/dist/console,ember,require/raven.js b/dist/console,ember,require/raven.js index bd0ad39d3df4..c3aa745d09ac 100644 --- a/dist/console,ember,require/raven.js +++ b/dist/console,ember,require/raven.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.24.2 (540f32b) | github.com/getsentry/raven-js */ +/*! Raven.js 3.25.0 (80dffad) | github.com/getsentry/raven-js */ /* * Includes TraceKit @@ -159,10 +159,12 @@ var md5 = _dereq_(11); var RavenConfigError = _dereq_(4); var utils = _dereq_(8); +var isErrorEvent = utils.isErrorEvent; +var isDOMError = utils.isDOMError; +var isDOMException = utils.isDOMException; var isError = utils.isError; var isObject = utils.isObject; var isPlainObject = utils.isPlainObject; -var isErrorEvent = utils.isErrorEvent; var isUndefined = utils.isUndefined; var isFunction = utils.isFunction; var isString = utils.isString; @@ -290,7 +292,7 @@ Raven.prototype = { // webpack (using a build step causes webpack #1617). Grunt verifies that // this value matches package.json during build. // See: https://github.com/getsentry/raven-js/issues/465 - VERSION: '3.24.2', + VERSION: '3.25.0', debug: false, @@ -622,6 +624,23 @@ Raven.prototype = { if (isErrorEvent(ex) && ex.error) { // If it is an ErrorEvent with `error` property, extract it to get actual Error ex = ex.error; + } else if (isDOMError(ex) || isDOMException(ex)) { + // If it is a DOMError or DOMException (which are legacy APIs, but still supported in some browsers) + // then we just extract the name and message, as they don't provide anything else + // https://developer.mozilla.org/en-US/docs/Web/API/DOMError + // https://developer.mozilla.org/en-US/docs/Web/API/DOMException + var name = ex.name || (isDOMError(ex) ? 'DOMError' : 'DOMException'); + var message = ex.message ? name + ': ' + ex.message : name; + + return this.captureMessage( + message, + objectMerge(options, { + // neither DOMError or DOMException provide stack trace and we most likely wont get it this way as well + // but it's barely any overhead so we may at least try + stacktrace: true, + trimHeadFrames: options.trimHeadFrames + 1 + }) + ); } else if (isError(ex)) { // we have a real Error object ex = ex; @@ -633,6 +652,7 @@ Raven.prototype = { ex = new Error(options.message); } else { // If none of previous checks were valid, then it means that + // it's not a DOMError/DOMException // it's not a plain Object // it's not a valid ErrorEvent (one with an error property) // it's not an Error @@ -2405,7 +2425,7 @@ function isObject(what) { // Yanked from https://git.io/vS8DV re-used under CC0 // with some tiny modifications function isError(value) { - switch ({}.toString.call(value)) { + switch (Object.prototype.toString.call(value)) { case '[object Error]': return true; case '[object Exception]': @@ -2418,7 +2438,15 @@ function isError(value) { } function isErrorEvent(value) { - return supportsErrorEvent() && {}.toString.call(value) === '[object ErrorEvent]'; + return Object.prototype.toString.call(value) === '[object ErrorEvent]'; +} + +function isDOMError(value) { + return Object.prototype.toString.call(value) === '[object DOMError]'; +} + +function isDOMException(value) { + return Object.prototype.toString.call(value) === '[object DOMException]'; } function isUndefined(what) { @@ -2461,6 +2489,24 @@ function supportsErrorEvent() { } } +function supportsDOMError() { + try { + new DOMError(''); // eslint-disable-line no-new + return true; + } catch (e) { + return false; + } +} + +function supportsDOMException() { + try { + new DOMException(''); // eslint-disable-line no-new + return true; + } catch (e) { + return false; + } +} + function supportsFetch() { if (!('fetch' in _window)) return false; @@ -2976,6 +3022,8 @@ module.exports = { isObject: isObject, isError: isError, isErrorEvent: isErrorEvent, + isDOMError: isDOMError, + isDOMException: isDOMException, isUndefined: isUndefined, isFunction: isFunction, isPlainObject: isPlainObject, @@ -2983,6 +3031,8 @@ module.exports = { isArray: isArray, isEmptyObject: isEmptyObject, supportsErrorEvent: supportsErrorEvent, + supportsDOMError: supportsDOMError, + supportsDOMException: supportsDOMException, supportsFetch: supportsFetch, supportsReferrerPolicy: supportsReferrerPolicy, supportsPromiseRejectionEvent: supportsPromiseRejectionEvent, @@ -3042,10 +3092,14 @@ var ERROR_TYPES_RE = /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Ran function getLocationHref() { if (typeof document === 'undefined' || document.location == null) return ''; - return document.location.href; } +function getLocationOrigin() { + if (typeof document === 'undefined' || document.location == null) return ''; + return document.location.origin; +} + /** * TraceKit.report: cross-browser processing of unhandled exceptions * @@ -3453,6 +3507,44 @@ TraceKit.computeStackTrace = (function computeStackTraceWrapper() { element.func = UNKNOWN_FUNCTION; } + if (element.url && element.url.substr(0, 5) === 'blob:') { + // Special case for handling JavaScript loaded into a blob. + // We use a synchronous AJAX request here as a blob is already in + // memory - it's not making a network request. This will generate a warning + // in the browser console, but there has already been an error so that's not + // that much of an issue. + var xhr = new XMLHttpRequest(); + xhr.open('GET', element.url, false); + xhr.send(null); + + // If we failed to download the source, skip this patch + if (xhr.status === 200) { + var source = xhr.responseText || ''; + + // We trim the source down to the last 300 characters as sourceMappingURL is always at the end of the file. + // Why 300? To be in line with: https://github.com/getsentry/sentry/blob/4af29e8f2350e20c28a6933354e4f42437b4ba42/src/sentry/lang/javascript/processor.py#L164-L175 + source = source.slice(-300); + + // Now we dig out the source map URL + var sourceMaps = source.match(/\/\/# sourceMappingURL=(.*)$/); + + // If we don't find a source map comment or we find more than one, continue on to the next element. + if (sourceMaps) { + var sourceMapAddress = sourceMaps[1]; + + // Now we check to see if it's a relative URL. + // If it is, convert it to an absolute one. + if (sourceMapAddress.charAt(0) === '~') { + sourceMapAddress = getLocationOrigin() + sourceMapAddress.slice(1); + } + + // Now we strip the '.map' off of the end of the URL and update the + // element so that Sentry can match the map to the blob. + element.url = sourceMapAddress.slice(0, -4); + } + } + } + stack.push(element); } diff --git a/dist/console,ember,require/raven.min.js b/dist/console,ember,require/raven.min.js index e8ca648761f9..2875ae0eaac0 100644 --- a/dist/console,ember,require/raven.min.js +++ b/dist/console,ember,require/raven.min.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.24.2 (540f32b) | github.com/getsentry/raven-js */ -!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.Raven=a()}}(function(){var a;return function b(a,c,d){function e(g,h){if(!c[g]){if(!a[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};a[g][0].call(k.exports,function(b){var c=a[g][1][b];return e(c?c:b)},k,k.exports,b,a,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;gthis.k.maxBreadcrumbs&&this.u.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.r.push([a,b]),this.n&&this.F(),this},setUserContext:function(a){return this.j.user=a,this},setExtraContext:function(a){return this.Z("extra",a),this},setTagsContext:function(a){return this.Z("tags",a),this},clearContext:function(){return this.j={},this},getContext:function(){return JSON.parse(h(this.j))},setEnvironment:function(a){return this.k.environment=a,this},setRelease:function(a){return this.k.release=a,this},setDataCallback:function(a){var b=this.k.dataCallback;return this.k.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.k.breadcrumbCallback;return this.k.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.k.shouldSendCallback;return this.k.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.k.transport=a,this},lastException:function(){return this.d},lastEventId:function(){return this.f},isSetup:function(){return!!this.a&&(!!this.g||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.z("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=P.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(Q){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.H;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.j.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.J(this.G(c)),h=Q.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(Q.head||Q.body).appendChild(h)}},L:function(){var a=this;this.m+=1,setTimeout(function(){a.m-=1})},$:function(a,b){var c,d;if(this.b){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),Q.createEvent?(c=Q.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=Q.createEventObject(),c.eventType=a);for(d in b)y(b,d)&&(c[d]=b[d]);if(Q.createEvent)Q.dispatchEvent(c);else try{Q.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},_:function(a){var b=this;return function(c){if(b.aa=null,b.v!==c){b.v=c;var d;try{d=C(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ba:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.aa;g||a._("input")(c),clearTimeout(g),a.aa=setTimeout(function(){a.aa=null},b)}}},ca:function(a,b){var c=F(this.w.href),d=F(b),e=F(a);this.x=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},C:function(){var a=this;a.da=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.M?a.da.apply(this.O,arguments):a.da.apply(this,arguments)}},Q:function(){this.da&&(Function.prototype.toString=this.da)},D:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.ca(b.x,c+""),a.apply(this,arguments)}};G(history,"pushState",j,d),G(history,"replaceState",j,d)}if(c.console&&"console"in P&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};u(["debug","info","warn","error","log"],function(a,b){M(console,b,k)})}},R:function(){for(var a;this.t.length;){a=this.t.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},S:function(){for(var a in this.q)this.p[a]=this.q[a]},F:function(){var a=this;u(this.r,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},G:function(a){var b=O.exec(a),c={},d=7;try{for(;d--;)c[N[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.k.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},J:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},A:function(){this.m||this.V.apply(this,arguments)},V:function(a,b){var c=this.X(a,b);this.$("handle",{stackInfo:a,options:b}),this.fa(a.name,a.message,a.url,a.lineno,c,b)},X:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(u(a.stack,function(b,e){var f=c.ga(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.u,0)}),this.j.user&&(a.user=this.j.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),a=this.pa(a),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||t(a[b]))&&delete a[b]}),q(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!t(a)&&(!q(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.ma()?void this.z("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function B(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&j(b))for(c=b.split(/\s+/),f=0;fc?M(a,b-1):d}function N(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?T:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function O(a,b){function c(a){return k(a)?a.map(function(a){return c(a)}):i(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!k(b)||k(b)&&0===b.length)return a;var d,e=w(b),f="********";try{d=JSON.parse(P(a))}catch(g){return a}return c(d)}var P=a(10),Q="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},R=3,S=51200,T=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isUndefined:g,isFunction:h,isPlainObject:i,isString:j,isArray:k,isEmptyObject:l,supportsErrorEvent:m,supportsFetch:n,supportsReferrerPolicy:o,supportsPromiseRejectionEvent:p,wrappedCallback:q,each:r,objectMerge:s,truncate:u,objectFrozen:t,hasKey:v,joinRegExp:w,urlencode:x,uuid4:z,htmlTreeAsString:A,htmlElementAsString:B,isSameException:E,isSameStacktrace:F,parseUrl:y,fill:G,safeJoin:H,serializeException:M,serializeKeysForMessage:N,sanitize:O}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{10:10}],9:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}var e=a(8),f={collectWindowErrors:!0,debug:!1},g="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},h=[].slice,i="?",j=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;f.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function k(a,b){var c=null;if(!b||f.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(h.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,g,h){var l=null,m=e.isErrorEvent(h)?h.error:h,n=e.isErrorEvent(a)?a.message:a;if(v)f.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&e.isError(m))l=f.computeStackTrace(m),k(l,!0);else{var p,r={url:b,line:c,column:g},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(j);p&&(s=p[1],n=p[2])}r.func=i,l={name:s,message:n,url:d(),stack:[r]},k(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=g.onerror,g.onerror=l,r=!0)}function n(){r&&(g.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,k.apply(null,[a,!1].concat(b))}function p(a,b){var c=h.call(arguments,1);if(v){if(u===a)return;o()}var d=f.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),f.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,e,f=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,g=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,h=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,j=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,k=/\((\S*)(?::(\d+))(?::(\d+))\)/,l=a.stack.split("\n"),m=[],n=(/^(.*) is undefined$/.exec(a.message),0),o=l.length;n eval")>-1;q&&(b=j.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==n||c[5]||"undefined"==typeof a.columnNumber||(m[0].column=a.columnNumber+1),e={url:c[3],func:c[1]||i,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}!e.func&&e.line&&(e.func=i),m.push(e)}return m.length?{name:a.name,message:a.message,url:d(),stack:m}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=i),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,g){for(var h,j,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==e&&o!==f.report){if(j={url:null,func:i,line:null,column:null},o.name?j.func=o.name:(h=k.exec(o.toString()))&&(j.func=h[1]),"undefined"==typeof j.func)try{j.func=h.input.substring(0,h.input.indexOf("{"))}catch(p){}m[""+o]?n=!0:m[""+o]=!0,l.push(j)}g&&l.splice(0,g);var q={name:a.name,message:a.message,url:d(),stack:l};return b(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),q}function e(b,e){var g=null;e=null==e?0:+e;try{if(g=a(b))return g}catch(h){if(f.debug)throw h}try{if(g=c(b,e+1))return g}catch(h){if(f.debug)throw h}return{name:b.name,message:b.message,url:d()}}return e.augmentStackTraceWithInitialElement=b,e.computeStackTraceFromStackProp=a,e}(),b.exports=f}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{8:8}],10:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}],11:[function(a,b,c){function d(a,b){var c=(65535&a)+(65535&b),d=(a>>16)+(b>>16)+(c>>16);return d<<16|65535&c}function e(a,b){return a<>>32-b}function f(a,b,c,f,g,h){return d(e(d(d(b,a),d(f,h)),g),c)}function g(a,b,c,d,e,g,h){return f(b&c|~b&d,a,b,e,g,h)}function h(a,b,c,d,e,g,h){return f(b&d|c&~d,a,b,e,g,h)}function i(a,b,c,d,e,g,h){return f(b^c^d,a,b,e,g,h)}function j(a,b,c,d,e,g,h){return f(c^(b|~d),a,b,e,g,h)}function k(a,b){a[b>>5]|=128<>>9<<4)+14]=b;var c,e,f,k,l,m=1732584193,n=-271733879,o=-1732584194,p=271733878;for(c=0;c>5]>>>b%32&255);return c}function m(a){var b,c=[];for(c[(a.length>>2)-1]=void 0,b=0;b>5]|=(255&a.charCodeAt(b/8))<16&&(e=k(e,8*a.length)),c=0;c<16;c+=1)f[c]=909522486^e[c],g[c]=1549556828^e[c];return d=k(f.concat(m(b)),512+8*b.length),l(k(g.concat(d),640))}function p(a){var b,c,d="0123456789abcdef",e="";for(c=0;c>>4&15)+d.charAt(15&b);return e}function q(a){return unescape(encodeURIComponent(a))}function r(a){return n(q(a))}function s(a){return p(r(a))}function t(a,b){return o(q(a),q(b))}function u(a,b){return p(t(a,b))}function v(a,b,c){return b?c?t(b,a):u(b,a):c?r(a):s(a)}b.exports=v},{}]},{},[7,1,2,3])(7)}); +/*! Raven.js 3.25.0 (80dffad) | github.com/getsentry/raven-js */ +!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.Raven=a()}}(function(){var a;return function b(a,c,d){function e(g,h){if(!c[g]){if(!a[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};a[g][0].call(k.exports,function(b){var c=a[g][1][b];return e(c?c:b)},k,k.exports,b,a,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;gthis.k.maxBreadcrumbs&&this.u.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.r.push([a,b]),this.n&&this.F(),this},setUserContext:function(a){return this.j.user=a,this},setExtraContext:function(a){return this.Z("extra",a),this},setTagsContext:function(a){return this.Z("tags",a),this},clearContext:function(){return this.j={},this},getContext:function(){return JSON.parse(h(this.j))},setEnvironment:function(a){return this.k.environment=a,this},setRelease:function(a){return this.k.release=a,this},setDataCallback:function(a){var b=this.k.dataCallback;return this.k.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.k.breadcrumbCallback;return this.k.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.k.shouldSendCallback;return this.k.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.k.transport=a,this},lastException:function(){return this.d},lastEventId:function(){return this.f},isSetup:function(){return!!this.a&&(!!this.g||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.z("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=R.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(S){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.H;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.j.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.J(this.G(c)),h=S.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(S.head||S.body).appendChild(h)}},L:function(){var a=this;this.m+=1,setTimeout(function(){a.m-=1})},$:function(a,b){var c,d;if(this.b){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),S.createEvent?(c=S.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=S.createEventObject(),c.eventType=a);for(d in b)A(b,d)&&(c[d]=b[d]);if(S.createEvent)S.dispatchEvent(c);else try{S.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},_:function(a){var b=this;return function(c){if(b.aa=null,b.v!==c){b.v=c;var d;try{d=E(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ba:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.aa;g||a._("input")(c),clearTimeout(g),a.aa=setTimeout(function(){a.aa=null},b)}}},ca:function(a,b){var c=H(this.w.href),d=H(b),e=H(a);this.x=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},C:function(){var a=this;a.da=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.M?a.da.apply(this.O,arguments):a.da.apply(this,arguments)}},Q:function(){this.da&&(Function.prototype.toString=this.da)},D:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.ca(b.x,c+""),a.apply(this,arguments)}};I(history,"pushState",j,d),I(history,"replaceState",j,d)}if(c.console&&"console"in R&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};w(["debug","info","warn","error","log"],function(a,b){O(console,b,k)})}},R:function(){for(var a;this.t.length;){a=this.t.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},S:function(){for(var a in this.q)this.p[a]=this.q[a]},F:function(){var a=this;w(this.r,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},G:function(a){var b=Q.exec(a),c={},d=7;try{for(;d--;)c[P[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.k.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},J:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},A:function(){this.m||this.V.apply(this,arguments)},V:function(a,b){var c=this.X(a,b);this.$("handle",{stackInfo:a,options:b}),this.fa(a.name,a.message,a.url,a.lineno,c,b)},X:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(w(a.stack,function(b,e){var f=c.ga(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.u,0)}),this.j.user&&(a.user=this.j.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),a=this.pa(a),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||v(a[b]))&&delete a[b]}),s(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!v(a)&&(!s(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.ma()?void this.z("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function F(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&l(b))for(c=b.split(/\s+/),f=0;fc?Q(a,b-1):d}function R(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?X:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function S(a,b){function c(a){return m(a)?a.map(function(a){return c(a)}):k(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!m(b)||m(b)&&0===b.length)return a;var d,e=A(b),f="********";try{d=JSON.parse(T(a))}catch(g){return a}return c(d)}var T=a(10),U="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},V=3,W=51200,X=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isDOMError:g,isDOMException:h,isUndefined:i,isFunction:j,isPlainObject:k,isString:l,isArray:m,isEmptyObject:n,supportsErrorEvent:o,supportsDOMError:p,supportsDOMException:q,supportsFetch:r,supportsReferrerPolicy:s,supportsPromiseRejectionEvent:t,wrappedCallback:u,each:v,objectMerge:w,truncate:y,objectFrozen:x,hasKey:z,joinRegExp:A,urlencode:B,uuid4:D,htmlTreeAsString:E,htmlElementAsString:F,isSameException:I,isSameStacktrace:J,parseUrl:C,fill:K,safeJoin:L,serializeException:Q,serializeKeysForMessage:R,sanitize:S}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{10:10}],9:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}function e(){return"undefined"==typeof document||null==document.location?"":document.location.origin}var f=a(8),g={collectWindowErrors:!0,debug:!1},h="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},i=[].slice,j="?",k=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;g.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function e(a,b){var c=null;if(!b||g.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(i.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,h,i){var l=null,m=f.isErrorEvent(i)?i.error:i,n=f.isErrorEvent(a)?a.message:a;if(v)g.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&f.isError(m))l=g.computeStackTrace(m),e(l,!0);else{var p,r={url:b,line:c,column:h},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(k);p&&(s=p[1],n=p[2])}r.func=j,l={name:s,message:n,url:d(),stack:[r]},e(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=h.onerror,h.onerror=l,r=!0)}function n(){r&&(h.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,e.apply(null,[a,!1].concat(b))}function p(a,b){var c=i.call(arguments,1);if(v){if(u===a)return;o()}var d=g.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),g.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,f,g=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,h=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,i=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,k=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,l=/\((\S*)(?::(\d+))(?::(\d+))\)/,m=a.stack.split("\n"),n=[],o=(/^(.*) is undefined$/.exec(a.message),0),p=m.length;o eval")>-1;r&&(b=k.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==o||c[5]||"undefined"==typeof a.columnNumber||(n[0].column=a.columnNumber+1),f={url:c[3],func:c[1]||j,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}if(!f.func&&f.line&&(f.func=j),f.url&&"blob:"===f.url.substr(0,5)){var s=new XMLHttpRequest;if(s.open("GET",f.url,!1),s.send(null),200===s.status){var t=s.responseText||"";t=t.slice(-300);var u=t.match(/\/\/# sourceMappingURL=(.*)$/);if(u){var v=u[1];"~"===v.charAt(0)&&(v=e()+v.slice(1)),f.url=v.slice(0,-4)}}}n.push(f)}return n.length?{name:a.name,message:a.message,url:d(),stack:n}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=j),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,e){for(var h,i,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==f&&o!==g.report){ +if(i={url:null,func:j,line:null,column:null},o.name?i.func=o.name:(h=k.exec(o.toString()))&&(i.func=h[1]),"undefined"==typeof i.func)try{i.func=h.input.substring(0,h.input.indexOf("{"))}catch(p){}m[""+o]?n=!0:m[""+o]=!0,l.push(i)}e&&l.splice(0,e);var q={name:a.name,message:a.message,url:d(),stack:l};return b(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),q}function f(b,e){var f=null;e=null==e?0:+e;try{if(f=a(b))return f}catch(h){if(g.debug)throw h}try{if(f=c(b,e+1))return f}catch(h){if(g.debug)throw h}return{name:b.name,message:b.message,url:d()}}return f.augmentStackTraceWithInitialElement=b,f.computeStackTraceFromStackProp=a,f}(),b.exports=g}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{8:8}],10:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}],11:[function(a,b,c){function d(a,b){var c=(65535&a)+(65535&b),d=(a>>16)+(b>>16)+(c>>16);return d<<16|65535&c}function e(a,b){return a<>>32-b}function f(a,b,c,f,g,h){return d(e(d(d(b,a),d(f,h)),g),c)}function g(a,b,c,d,e,g,h){return f(b&c|~b&d,a,b,e,g,h)}function h(a,b,c,d,e,g,h){return f(b&d|c&~d,a,b,e,g,h)}function i(a,b,c,d,e,g,h){return f(b^c^d,a,b,e,g,h)}function j(a,b,c,d,e,g,h){return f(c^(b|~d),a,b,e,g,h)}function k(a,b){a[b>>5]|=128<>>9<<4)+14]=b;var c,e,f,k,l,m=1732584193,n=-271733879,o=-1732584194,p=271733878;for(c=0;c>5]>>>b%32&255);return c}function m(a){var b,c=[];for(c[(a.length>>2)-1]=void 0,b=0;b>5]|=(255&a.charCodeAt(b/8))<16&&(e=k(e,8*a.length)),c=0;c<16;c+=1)f[c]=909522486^e[c],g[c]=1549556828^e[c];return d=k(f.concat(m(b)),512+8*b.length),l(k(g.concat(d),640))}function p(a){var b,c,d="0123456789abcdef",e="";for(c=0;c>>4&15)+d.charAt(15&b);return e}function q(a){return unescape(encodeURIComponent(a))}function r(a){return n(q(a))}function s(a){return p(r(a))}function t(a,b){return o(q(a),q(b))}function u(a,b){return p(t(a,b))}function v(a,b,c){return b?c?t(b,a):u(b,a):c?r(a):s(a)}b.exports=v},{}]},{},[7,1,2,3])(7)}); //# sourceMappingURL=raven.min.js.map \ No newline at end of file diff --git a/dist/console,ember,require/raven.min.js.map b/dist/console,ember,require/raven.min.js.map index 62bd25464f90..08aaa27a845a 100644 --- a/dist/console,ember,require/raven.min.js.map +++ b/dist/console,ember,require/raven.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","consolePlugin","console","pluginOptions","logLevels","levels","push","callback","msg","data","captureMessage","level","pop","wrapConsoleMethod","wrapMethod","addPlugin","5","7","2","emberPlugin","Ember","_oldOnError","onerror","error","captureException","RSVP","on","reason","extra","context","3","requirePlugin","wrap","deep","4","RavenConfigError","message","name","prototype","constructor","utils","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","safeJoin","logger","Function","apply","8","6","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","sanitizeKeys","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isError","isObject","isPlainObject","isErrorEvent","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","sanitize","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","config","dsn","options","_logDebug","globalOptions","key","value","setDSN","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","toString","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","substr","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","func","undefined","_before","wrapped","_ignoreNextOnError","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","T","event","unhandledPromiseRejection","B","_promiseRejectionHandler","bind","addEventListener","P","removeEventListener","ex","trimHeadFrames","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","U","currentOptions","exKeys","Object","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","setDataCallback","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","L","setTimeout","$","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","_","evtName","_keypressTimeout","target","category","ba","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","ca","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","C","_originalFunctionToString","Q","D","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","type","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","E","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","R","builtin","S","F","installer","concat","G","str","m","exec","allowSecretKey","J","port","A","V","stackInfo","_triggerEvent","_processException","lineno","X","frame","_normalizeFrame","in_app","ga","stackInfoUrl","normalized","filename","line","colno","column","function","fa","prefixedMessage","exception","values","culprit","ha","request","Referer","breadcrumbs","_trimBreadcrumbs","ia","urlProp","urlProps","ja","httpData","userAgent","User-Agent","referrer","y","_backoffDuration","_backoffStart","ma","na","current","last","oa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Y","baseData","project","platform","_getHttpData","serverName","server_name","_sanitizeData","forEach","random","_sendProcessedPayload","pa","ra","qa","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","sa","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","open","setRequestHeader","send","ta","hash","evaluated","z","Z","setUser","setReleaseContext","10","11","9","RavenConstructor","_Raven","noConflict","Client","what","supportsErrorEvent","ErrorEvent","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","wrappedCallback","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","sanitizeMask","safeInput","o_O","getLocationHref","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","charAt","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","string","raw"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file +{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","consolePlugin","console","pluginOptions","logLevels","levels","push","callback","msg","data","captureMessage","level","pop","wrapConsoleMethod","wrapMethod","addPlugin","5","7","2","emberPlugin","Ember","_oldOnError","onerror","error","captureException","RSVP","on","reason","extra","context","3","requirePlugin","wrap","deep","4","RavenConfigError","message","name","prototype","constructor","utils","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","safeJoin","logger","Function","apply","8","6","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","sanitizeKeys","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isErrorEvent","isDOMError","isDOMException","isError","isObject","isPlainObject","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","sanitize","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","config","dsn","options","_logDebug","globalOptions","key","value","setDSN","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","toString","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","substr","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","func","undefined","_before","wrapped","_ignoreNextOnError","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","T","event","unhandledPromiseRejection","B","_promiseRejectionHandler","bind","addEventListener","P","removeEventListener","ex","trimHeadFrames","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","U","currentOptions","exKeys","Object","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","setDataCallback","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","L","setTimeout","$","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","_","evtName","_keypressTimeout","target","category","ba","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","ca","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","C","_originalFunctionToString","Q","D","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","type","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","E","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","R","builtin","S","F","installer","concat","G","str","m","exec","allowSecretKey","J","port","A","V","stackInfo","_triggerEvent","_processException","lineno","X","frame","_normalizeFrame","in_app","ga","stackInfoUrl","normalized","filename","line","colno","column","function","fa","prefixedMessage","exception","values","culprit","ha","request","Referer","breadcrumbs","_trimBreadcrumbs","ia","urlProp","urlProps","ja","httpData","userAgent","User-Agent","referrer","y","_backoffDuration","_backoffStart","ma","na","current","last","oa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Y","baseData","project","platform","_getHttpData","serverName","server_name","_sanitizeData","forEach","random","_sendProcessedPayload","pa","ra","qa","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","sa","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","open","setRequestHeader","send","ta","hash","evaluated","z","Z","setUser","setReleaseContext","10","11","9","RavenConstructor","_Raven","noConflict","Client","what","supportsErrorEvent","ErrorEvent","supportsDOMError","DOMError","supportsDOMException","DOMException","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","wrappedCallback","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","sanitizeMask","safeInput","o_O","getLocationHref","getLocationOrigin","origin","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","responseText","sourceMaps","sourceMapAddress","charAt","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","string","raw"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file diff --git a/dist/console,ember,vue/raven.js b/dist/console,ember,vue/raven.js index b804dcf0e843..e572838e51a3 100644 --- a/dist/console,ember,vue/raven.js +++ b/dist/console,ember,vue/raven.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.24.2 (540f32b) | github.com/getsentry/raven-js */ +/*! Raven.js 3.25.0 (80dffad) | github.com/getsentry/raven-js */ /* * Includes TraceKit @@ -192,10 +192,12 @@ var md5 = _dereq_(11); var RavenConfigError = _dereq_(4); var utils = _dereq_(8); +var isErrorEvent = utils.isErrorEvent; +var isDOMError = utils.isDOMError; +var isDOMException = utils.isDOMException; var isError = utils.isError; var isObject = utils.isObject; var isPlainObject = utils.isPlainObject; -var isErrorEvent = utils.isErrorEvent; var isUndefined = utils.isUndefined; var isFunction = utils.isFunction; var isString = utils.isString; @@ -323,7 +325,7 @@ Raven.prototype = { // webpack (using a build step causes webpack #1617). Grunt verifies that // this value matches package.json during build. // See: https://github.com/getsentry/raven-js/issues/465 - VERSION: '3.24.2', + VERSION: '3.25.0', debug: false, @@ -655,6 +657,23 @@ Raven.prototype = { if (isErrorEvent(ex) && ex.error) { // If it is an ErrorEvent with `error` property, extract it to get actual Error ex = ex.error; + } else if (isDOMError(ex) || isDOMException(ex)) { + // If it is a DOMError or DOMException (which are legacy APIs, but still supported in some browsers) + // then we just extract the name and message, as they don't provide anything else + // https://developer.mozilla.org/en-US/docs/Web/API/DOMError + // https://developer.mozilla.org/en-US/docs/Web/API/DOMException + var name = ex.name || (isDOMError(ex) ? 'DOMError' : 'DOMException'); + var message = ex.message ? name + ': ' + ex.message : name; + + return this.captureMessage( + message, + objectMerge(options, { + // neither DOMError or DOMException provide stack trace and we most likely wont get it this way as well + // but it's barely any overhead so we may at least try + stacktrace: true, + trimHeadFrames: options.trimHeadFrames + 1 + }) + ); } else if (isError(ex)) { // we have a real Error object ex = ex; @@ -666,6 +685,7 @@ Raven.prototype = { ex = new Error(options.message); } else { // If none of previous checks were valid, then it means that + // it's not a DOMError/DOMException // it's not a plain Object // it's not a valid ErrorEvent (one with an error property) // it's not an Error @@ -2438,7 +2458,7 @@ function isObject(what) { // Yanked from https://git.io/vS8DV re-used under CC0 // with some tiny modifications function isError(value) { - switch ({}.toString.call(value)) { + switch (Object.prototype.toString.call(value)) { case '[object Error]': return true; case '[object Exception]': @@ -2451,7 +2471,15 @@ function isError(value) { } function isErrorEvent(value) { - return supportsErrorEvent() && {}.toString.call(value) === '[object ErrorEvent]'; + return Object.prototype.toString.call(value) === '[object ErrorEvent]'; +} + +function isDOMError(value) { + return Object.prototype.toString.call(value) === '[object DOMError]'; +} + +function isDOMException(value) { + return Object.prototype.toString.call(value) === '[object DOMException]'; } function isUndefined(what) { @@ -2494,6 +2522,24 @@ function supportsErrorEvent() { } } +function supportsDOMError() { + try { + new DOMError(''); // eslint-disable-line no-new + return true; + } catch (e) { + return false; + } +} + +function supportsDOMException() { + try { + new DOMException(''); // eslint-disable-line no-new + return true; + } catch (e) { + return false; + } +} + function supportsFetch() { if (!('fetch' in _window)) return false; @@ -3009,6 +3055,8 @@ module.exports = { isObject: isObject, isError: isError, isErrorEvent: isErrorEvent, + isDOMError: isDOMError, + isDOMException: isDOMException, isUndefined: isUndefined, isFunction: isFunction, isPlainObject: isPlainObject, @@ -3016,6 +3064,8 @@ module.exports = { isArray: isArray, isEmptyObject: isEmptyObject, supportsErrorEvent: supportsErrorEvent, + supportsDOMError: supportsDOMError, + supportsDOMException: supportsDOMException, supportsFetch: supportsFetch, supportsReferrerPolicy: supportsReferrerPolicy, supportsPromiseRejectionEvent: supportsPromiseRejectionEvent, @@ -3075,10 +3125,14 @@ var ERROR_TYPES_RE = /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Ran function getLocationHref() { if (typeof document === 'undefined' || document.location == null) return ''; - return document.location.href; } +function getLocationOrigin() { + if (typeof document === 'undefined' || document.location == null) return ''; + return document.location.origin; +} + /** * TraceKit.report: cross-browser processing of unhandled exceptions * @@ -3486,6 +3540,44 @@ TraceKit.computeStackTrace = (function computeStackTraceWrapper() { element.func = UNKNOWN_FUNCTION; } + if (element.url && element.url.substr(0, 5) === 'blob:') { + // Special case for handling JavaScript loaded into a blob. + // We use a synchronous AJAX request here as a blob is already in + // memory - it's not making a network request. This will generate a warning + // in the browser console, but there has already been an error so that's not + // that much of an issue. + var xhr = new XMLHttpRequest(); + xhr.open('GET', element.url, false); + xhr.send(null); + + // If we failed to download the source, skip this patch + if (xhr.status === 200) { + var source = xhr.responseText || ''; + + // We trim the source down to the last 300 characters as sourceMappingURL is always at the end of the file. + // Why 300? To be in line with: https://github.com/getsentry/sentry/blob/4af29e8f2350e20c28a6933354e4f42437b4ba42/src/sentry/lang/javascript/processor.py#L164-L175 + source = source.slice(-300); + + // Now we dig out the source map URL + var sourceMaps = source.match(/\/\/# sourceMappingURL=(.*)$/); + + // If we don't find a source map comment or we find more than one, continue on to the next element. + if (sourceMaps) { + var sourceMapAddress = sourceMaps[1]; + + // Now we check to see if it's a relative URL. + // If it is, convert it to an absolute one. + if (sourceMapAddress.charAt(0) === '~') { + sourceMapAddress = getLocationOrigin() + sourceMapAddress.slice(1); + } + + // Now we strip the '.map' off of the end of the URL and update the + // element so that Sentry can match the map to the blob. + element.url = sourceMapAddress.slice(0, -4); + } + } + } + stack.push(element); } diff --git a/dist/console,ember,vue/raven.min.js b/dist/console,ember,vue/raven.min.js index 7994ad63e0db..a8544868cea2 100644 --- a/dist/console,ember,vue/raven.min.js +++ b/dist/console,ember,vue/raven.min.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.24.2 (540f32b) | github.com/getsentry/raven-js */ -!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.Raven=a()}}(function(){return function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};b[g][0].call(k.exports,function(a){var c=b[g][1][a];return e(c?c:a)},k,k.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;g":"anonymous component")+(a._isVue&&a.$options.__file?" at "+a.$options.__file:"")}function e(a,b){if(b=b||window.Vue,b&&b.config){var c=b.config.errorHandler;b.config.errorHandler=function(b,e,f){var g={};"[object Object]"===Object.prototype.toString.call(e)&&(g.componentName=d(e),g.propsData=e.$options.propsData),"undefined"!=typeof f&&(g.lifecycleHook=f),a.captureException(b,{extra:g}),"function"==typeof c&&c.call(this,b,e,f)}}}b.exports=e,a(7).addPlugin(b.exports)},{7:7}],4:[function(a,b,c){function d(a){this.name="RavenConfigError",this.message=a}d.prototype=new Error,d.prototype.constructor=d,b.exports=d},{}],5:[function(a,b,c){var d=a(8),e=function(a,b,c){var e=a[b],f=a;if(b in a){var g="warn"===b?"warning":b;a[b]=function(){var a=[].slice.call(arguments),h=d.safeJoin(a," "),i={level:g,logger:"console",extra:{arguments:a}};"assert"===b?a[0]===!1&&(h="Assertion failed: "+(d.safeJoin(a.slice(1)," ")||"console.assert"),i.extra.arguments=a.slice(1),c&&c(h,i)):c&&c(h,i),e&&Function.prototype.apply.call(e,f,a)}}};b.exports={wrapMethod:e}},{8:8}],6:[function(a,b,c){(function(c){function d(){return+new Date}function e(a,b){return q(b)?function(c){return b(c,a)}:b}function f(){this.a=!("object"!=typeof JSON||!JSON.stringify),this.b=!p(Q),this.c=!p(R),this.d=null,this.e=null,this.f=null,this.g=null,this.h=null,this.i=null,this.j={},this.k={release:P.SENTRY_RELEASE&&P.SENTRY_RELEASE.id,logger:"javascript",ignoreErrors:[],ignoreUrls:[],whitelistUrls:[],includePaths:[],headers:null,collectWindowErrors:!0,captureUnhandledRejections:!0,maxMessageLength:0,maxUrlLength:250,stackTraceLimit:50,autoBreadcrumbs:!0,instrument:!0,sampleRate:1,sanitizeKeys:[]},this.l={method:"POST",keepalive:!0,referrerPolicy:I()?"origin":""},this.m=0,this.n=!1,this.o=Error.stackTraceLimit,this.p=P.console||{},this.q={},this.r=[],this.s=d(),this.t=[],this.u=[],this.v=null,this.w=P.location,this.x=this.w&&this.w.href,this.y();for(var a in this.p)this.q[a]=this.p[a]}var g=a(9),h=a(10),i=a(11),j=a(4),k=a(8),l=k.isError,m=k.isObject,n=k.isPlainObject,o=k.isErrorEvent,p=k.isUndefined,q=k.isFunction,r=k.isString,s=k.isArray,t=k.isEmptyObject,u=k.each,v=k.objectMerge,w=k.truncate,x=k.objectFrozen,y=k.hasKey,z=k.joinRegExp,A=k.urlencode,B=k.uuid4,C=k.htmlTreeAsString,D=k.isSameException,E=k.isSameStacktrace,F=k.parseUrl,G=k.fill,H=k.supportsFetch,I=k.supportsReferrerPolicy,J=k.serializeKeysForMessage,K=k.serializeException,L=k.sanitize,M=a(5).wrapMethod,N="source protocol user pass host port path".split(" "),O=/^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/,P="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},Q=P.document,R=P.navigator;f.prototype={VERSION:"3.24.2",debug:!1,TraceKit:g,config:function(a,b){var c=this;if(c.g)return this.z("error","Error: Raven has already been configured"),c;if(!a)return c;var d=c.k;b&&u(b,function(a,b){"tags"===a||"extra"===a||"user"===a?c.j[a]=b:d[a]=b}),c.setDSN(a),d.ignoreErrors.push(/^Script error\.?$/),d.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/),d.ignoreErrors=z(d.ignoreErrors),d.ignoreUrls=!!d.ignoreUrls.length&&z(d.ignoreUrls),d.whitelistUrls=!!d.whitelistUrls.length&&z(d.whitelistUrls),d.includePaths=z(d.includePaths),d.maxBreadcrumbs=Math.max(0,Math.min(d.maxBreadcrumbs||100,100));var e={xhr:!0,console:!0,dom:!0,location:!0,sentry:!0},f=d.autoBreadcrumbs;"[object Object]"==={}.toString.call(f)?f=v(e,f):f!==!1&&(f=e),d.autoBreadcrumbs=f;var h={tryCatch:!0},i=d.instrument;return"[object Object]"==={}.toString.call(i)?i=v(h,i):i!==!1&&(i=h),d.instrument=i,g.collectWindowErrors=!!d.collectWindowErrors,c},install:function(){var a=this;return a.isSetup()&&!a.n&&(g.report.subscribe(function(){a.A.apply(a,arguments)}),a.k.captureUnhandledRejections&&a.B(),a.C(),a.k.instrument&&a.k.instrument.tryCatch&&a.D(),a.k.autoBreadcrumbs&&a.E(),a.F(),a.n=!0),Error.stackTraceLimit=a.k.stackTraceLimit,this},setDSN:function(a){var b=this,c=b.G(a),d=c.path.lastIndexOf("/"),e=c.path.substr(1,d);b.H=a,b.h=c.user,b.I=c.pass&&c.pass.substr(1),b.i=c.path.substr(d+1),b.g=b.J(c),b.K=b.g+"/"+e+"api/"+b.i+"/store/",this.y()},context:function(a,b,c){return q(a)&&(c=b||[],b=a,a=void 0),this.wrap(a,b).apply(this,c)},wrap:function(a,b,c){function d(){var d=[],f=arguments.length,g=!a||a&&a.deep!==!1;for(c&&q(c)&&c.apply(this,arguments);f--;)d[f]=g?e.wrap(a,arguments[f]):arguments[f];try{return b.apply(this,d)}catch(h){throw e.L(),e.captureException(h,a),h}}var e=this;if(p(b)&&!q(a))return a;if(q(a)&&(b=a,a=void 0),!q(b))return b;try{if(b.M)return b;if(b.N)return b.N}catch(f){return b}for(var g in b)y(b,g)&&(d[g]=b[g]);return d.prototype=b.prototype,b.N=d,d.M=!0,d.O=b,d},uninstall:function(){return g.report.uninstall(),this.P(),this.Q(),this.R(),this.S(),Error.stackTraceLimit=this.o,this.n=!1,this},T:function(a){this.z("debug","Raven caught unhandled promise rejection:",a),this.captureException(a.reason,{extra:{unhandledPromiseRejection:!0}})},B:function(){return this.T=this.T.bind(this),P.addEventListener&&P.addEventListener("unhandledrejection",this.T),this},P:function(){return P.removeEventListener&&P.removeEventListener("unhandledrejection",this.T),this},captureException:function(a,b){if(b=v({trimHeadFrames:0},b?b:{}),o(a)&&a.error)a=a.error;else if(l(a))a=a;else{if(!n(a))return this.captureMessage(a,v(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}));b=this.U(b,a),a=new Error(b.message)}this.d=a;try{var c=g.computeStackTrace(a);this.V(c,b)}catch(d){if(a!==d)throw d}return this},U:function(a,b){var c=Object.keys(b).sort(),d=v(a,{message:"Non-Error exception captured with keys: "+J(c),fingerprint:[i(c)],extra:a.extra||{}});return d.extra.W=K(b),d},captureMessage:function(a,b){if(!this.k.ignoreErrors.test||!this.k.ignoreErrors.test(a)){b=b||{},a+="";var c,d=v({message:a},b);try{throw new Error(a)}catch(e){c=e}c.name=null;var f=g.computeStackTrace(c),h=s(f.stack)&&f.stack[1];h&&"Raven.captureException"===h.func&&(h=f.stack[2]);var i=h&&h.url||"";if((!this.k.ignoreUrls.test||!this.k.ignoreUrls.test(i))&&(!this.k.whitelistUrls.test||this.k.whitelistUrls.test(i))){if(this.k.stacktrace||b&&b.stacktrace){d.fingerprint=null==d.fingerprint?a:d.fingerprint,b=v({trimHeadFrames:0},b),b.trimHeadFrames+=1;var j=this.X(f,b);d.stacktrace={frames:j.reverse()}}return d.fingerprint&&(d.fingerprint=s(d.fingerprint)?d.fingerprint:[d.fingerprint]),this.Y(d),this}}},captureBreadcrumb:function(a){var b=v({timestamp:d()/1e3},a);if(q(this.k.breadcrumbCallback)){var c=this.k.breadcrumbCallback(b);if(m(c)&&!t(c))b=c;else if(c===!1)return this}return this.u.push(b),this.u.length>this.k.maxBreadcrumbs&&this.u.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.r.push([a,b]),this.n&&this.F(),this},setUserContext:function(a){return this.j.user=a,this},setExtraContext:function(a){return this.Z("extra",a),this},setTagsContext:function(a){return this.Z("tags",a),this},clearContext:function(){return this.j={},this},getContext:function(){return JSON.parse(h(this.j))},setEnvironment:function(a){return this.k.environment=a,this},setRelease:function(a){return this.k.release=a,this},setDataCallback:function(a){var b=this.k.dataCallback;return this.k.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.k.breadcrumbCallback;return this.k.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.k.shouldSendCallback;return this.k.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.k.transport=a,this},lastException:function(){return this.d},lastEventId:function(){return this.f},isSetup:function(){return!!this.a&&(!!this.g||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.z("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=P.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(Q){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.H;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.j.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.J(this.G(c)),h=Q.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(Q.head||Q.body).appendChild(h)}},L:function(){var a=this;this.m+=1,setTimeout(function(){a.m-=1})},$:function(a,b){var c,d;if(this.b){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),Q.createEvent?(c=Q.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=Q.createEventObject(),c.eventType=a);for(d in b)y(b,d)&&(c[d]=b[d]);if(Q.createEvent)Q.dispatchEvent(c);else try{Q.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},_:function(a){var b=this;return function(c){if(b.aa=null,b.v!==c){b.v=c;var d;try{d=C(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ba:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.aa;g||a._("input")(c),clearTimeout(g),a.aa=setTimeout(function(){a.aa=null},b)}}},ca:function(a,b){var c=F(this.w.href),d=F(b),e=F(a);this.x=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},C:function(){var a=this;a.da=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.M?a.da.apply(this.O,arguments):a.da.apply(this,arguments)}},Q:function(){this.da&&(Function.prototype.toString=this.da)},D:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.ca(b.x,c+""),a.apply(this,arguments)}};G(history,"pushState",j,d),G(history,"replaceState",j,d)}if(c.console&&"console"in P&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};u(["debug","info","warn","error","log"],function(a,b){M(console,b,k)})}},R:function(){for(var a;this.t.length;){a=this.t.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},S:function(){for(var a in this.q)this.p[a]=this.q[a]},F:function(){var a=this;u(this.r,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},G:function(a){var b=O.exec(a),c={},d=7;try{for(;d--;)c[N[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.k.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},J:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},A:function(){this.m||this.V.apply(this,arguments)},V:function(a,b){var c=this.X(a,b);this.$("handle",{stackInfo:a,options:b}),this.fa(a.name,a.message,a.url,a.lineno,c,b)},X:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(u(a.stack,function(b,e){var f=c.ga(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.u,0)}),this.j.user&&(a.user=this.j.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),a=this.pa(a),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||t(a[b]))&&delete a[b]}),q(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!t(a)&&(!q(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.ma()?void this.z("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function B(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&j(b))for(c=b.split(/\s+/),f=0;fc?M(a,b-1):d}function N(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?T:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function O(a,b){function c(a){return k(a)?a.map(function(a){return c(a)}):i(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!k(b)||k(b)&&0===b.length)return a;var d,e=w(b),f="********";try{d=JSON.parse(P(a))}catch(g){return a}return c(d)}var P=a(10),Q="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},R=3,S=51200,T=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isUndefined:g,isFunction:h,isPlainObject:i,isString:j,isArray:k,isEmptyObject:l,supportsErrorEvent:m,supportsFetch:n,supportsReferrerPolicy:o,supportsPromiseRejectionEvent:p,wrappedCallback:q,each:r,objectMerge:s,truncate:u,objectFrozen:t,hasKey:v,joinRegExp:w,urlencode:x,uuid4:z,htmlTreeAsString:A,htmlElementAsString:B,isSameException:E,isSameStacktrace:F,parseUrl:y,fill:G,safeJoin:H,serializeException:M,serializeKeysForMessage:N,sanitize:O}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{10:10}],9:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}var e=a(8),f={collectWindowErrors:!0,debug:!1},g="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},h=[].slice,i="?",j=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;f.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function k(a,b){var c=null;if(!b||f.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(h.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,g,h){var l=null,m=e.isErrorEvent(h)?h.error:h,n=e.isErrorEvent(a)?a.message:a;if(v)f.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&e.isError(m))l=f.computeStackTrace(m),k(l,!0);else{var p,r={url:b,line:c,column:g},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(j);p&&(s=p[1],n=p[2])}r.func=i,l={name:s,message:n,url:d(),stack:[r]},k(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=g.onerror,g.onerror=l,r=!0)}function n(){r&&(g.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,k.apply(null,[a,!1].concat(b))}function p(a,b){var c=h.call(arguments,1);if(v){if(u===a)return;o()}var d=f.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),f.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,e,f=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,g=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,h=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,j=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,k=/\((\S*)(?::(\d+))(?::(\d+))\)/,l=a.stack.split("\n"),m=[],n=(/^(.*) is undefined$/.exec(a.message),0),o=l.length;n eval")>-1;q&&(b=j.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==n||c[5]||"undefined"==typeof a.columnNumber||(m[0].column=a.columnNumber+1),e={url:c[3],func:c[1]||i,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}!e.func&&e.line&&(e.func=i),m.push(e)}return m.length?{name:a.name,message:a.message,url:d(),stack:m}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=i),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,g){for(var h,j,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==e&&o!==f.report){if(j={url:null,func:i,line:null,column:null},o.name?j.func=o.name:(h=k.exec(o.toString()))&&(j.func=h[1]),"undefined"==typeof j.func)try{j.func=h.input.substring(0,h.input.indexOf("{"))}catch(p){}m[""+o]?n=!0:m[""+o]=!0,l.push(j)}g&&l.splice(0,g);var q={name:a.name,message:a.message,url:d(),stack:l};return b(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),q}function e(b,e){var g=null;e=null==e?0:+e;try{if(g=a(b))return g}catch(h){if(f.debug)throw h}try{if(g=c(b,e+1))return g}catch(h){ -if(f.debug)throw h}return{name:b.name,message:b.message,url:d()}}return e.augmentStackTraceWithInitialElement=b,e.computeStackTraceFromStackProp=a,e}(),b.exports=f}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{8:8}],10:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}],11:[function(a,b,c){function d(a,b){var c=(65535&a)+(65535&b),d=(a>>16)+(b>>16)+(c>>16);return d<<16|65535&c}function e(a,b){return a<>>32-b}function f(a,b,c,f,g,h){return d(e(d(d(b,a),d(f,h)),g),c)}function g(a,b,c,d,e,g,h){return f(b&c|~b&d,a,b,e,g,h)}function h(a,b,c,d,e,g,h){return f(b&d|c&~d,a,b,e,g,h)}function i(a,b,c,d,e,g,h){return f(b^c^d,a,b,e,g,h)}function j(a,b,c,d,e,g,h){return f(c^(b|~d),a,b,e,g,h)}function k(a,b){a[b>>5]|=128<>>9<<4)+14]=b;var c,e,f,k,l,m=1732584193,n=-271733879,o=-1732584194,p=271733878;for(c=0;c>5]>>>b%32&255);return c}function m(a){var b,c=[];for(c[(a.length>>2)-1]=void 0,b=0;b>5]|=(255&a.charCodeAt(b/8))<16&&(e=k(e,8*a.length)),c=0;c<16;c+=1)f[c]=909522486^e[c],g[c]=1549556828^e[c];return d=k(f.concat(m(b)),512+8*b.length),l(k(g.concat(d),640))}function p(a){var b,c,d="0123456789abcdef",e="";for(c=0;c>>4&15)+d.charAt(15&b);return e}function q(a){return unescape(encodeURIComponent(a))}function r(a){return n(q(a))}function s(a){return p(r(a))}function t(a,b){return o(q(a),q(b))}function u(a,b){return p(t(a,b))}function v(a,b,c){return b?c?t(b,a):u(b,a):c?r(a):s(a)}b.exports=v},{}]},{},[7,1,2,3])(7)}); +/*! Raven.js 3.25.0 (80dffad) | github.com/getsentry/raven-js */ +!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.Raven=a()}}(function(){return function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};b[g][0].call(k.exports,function(a){var c=b[g][1][a];return e(c?c:a)},k,k.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;g":"anonymous component")+(a._isVue&&a.$options.__file?" at "+a.$options.__file:"")}function e(a,b){if(b=b||window.Vue,b&&b.config){var c=b.config.errorHandler;b.config.errorHandler=function(b,e,f){var g={};"[object Object]"===Object.prototype.toString.call(e)&&(g.componentName=d(e),g.propsData=e.$options.propsData),"undefined"!=typeof f&&(g.lifecycleHook=f),a.captureException(b,{extra:g}),"function"==typeof c&&c.call(this,b,e,f)}}}b.exports=e,a(7).addPlugin(b.exports)},{7:7}],4:[function(a,b,c){function d(a){this.name="RavenConfigError",this.message=a}d.prototype=new Error,d.prototype.constructor=d,b.exports=d},{}],5:[function(a,b,c){var d=a(8),e=function(a,b,c){var e=a[b],f=a;if(b in a){var g="warn"===b?"warning":b;a[b]=function(){var a=[].slice.call(arguments),h=d.safeJoin(a," "),i={level:g,logger:"console",extra:{arguments:a}};"assert"===b?a[0]===!1&&(h="Assertion failed: "+(d.safeJoin(a.slice(1)," ")||"console.assert"),i.extra.arguments=a.slice(1),c&&c(h,i)):c&&c(h,i),e&&Function.prototype.apply.call(e,f,a)}}};b.exports={wrapMethod:e}},{8:8}],6:[function(a,b,c){(function(c){function d(){return+new Date}function e(a,b){return s(b)?function(c){return b(c,a)}:b}function f(){this.a=!("object"!=typeof JSON||!JSON.stringify),this.b=!r(S),this.c=!r(T),this.d=null,this.e=null,this.f=null,this.g=null,this.h=null,this.i=null,this.j={},this.k={release:R.SENTRY_RELEASE&&R.SENTRY_RELEASE.id,logger:"javascript",ignoreErrors:[],ignoreUrls:[],whitelistUrls:[],includePaths:[],headers:null,collectWindowErrors:!0,captureUnhandledRejections:!0,maxMessageLength:0,maxUrlLength:250,stackTraceLimit:50,autoBreadcrumbs:!0,instrument:!0,sampleRate:1,sanitizeKeys:[]},this.l={method:"POST",keepalive:!0,referrerPolicy:K()?"origin":""},this.m=0,this.n=!1,this.o=Error.stackTraceLimit,this.p=R.console||{},this.q={},this.r=[],this.s=d(),this.t=[],this.u=[],this.v=null,this.w=R.location,this.x=this.w&&this.w.href,this.y();for(var a in this.p)this.q[a]=this.p[a]}var g=a(9),h=a(10),i=a(11),j=a(4),k=a(8),l=k.isErrorEvent,m=k.isDOMError,n=k.isDOMException,o=k.isError,p=k.isObject,q=k.isPlainObject,r=k.isUndefined,s=k.isFunction,t=k.isString,u=k.isArray,v=k.isEmptyObject,w=k.each,x=k.objectMerge,y=k.truncate,z=k.objectFrozen,A=k.hasKey,B=k.joinRegExp,C=k.urlencode,D=k.uuid4,E=k.htmlTreeAsString,F=k.isSameException,G=k.isSameStacktrace,H=k.parseUrl,I=k.fill,J=k.supportsFetch,K=k.supportsReferrerPolicy,L=k.serializeKeysForMessage,M=k.serializeException,N=k.sanitize,O=a(5).wrapMethod,P="source protocol user pass host port path".split(" "),Q=/^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/,R="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},S=R.document,T=R.navigator;f.prototype={VERSION:"3.25.0",debug:!1,TraceKit:g,config:function(a,b){var c=this;if(c.g)return this.z("error","Error: Raven has already been configured"),c;if(!a)return c;var d=c.k;b&&w(b,function(a,b){"tags"===a||"extra"===a||"user"===a?c.j[a]=b:d[a]=b}),c.setDSN(a),d.ignoreErrors.push(/^Script error\.?$/),d.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/),d.ignoreErrors=B(d.ignoreErrors),d.ignoreUrls=!!d.ignoreUrls.length&&B(d.ignoreUrls),d.whitelistUrls=!!d.whitelistUrls.length&&B(d.whitelistUrls),d.includePaths=B(d.includePaths),d.maxBreadcrumbs=Math.max(0,Math.min(d.maxBreadcrumbs||100,100));var e={xhr:!0,console:!0,dom:!0,location:!0,sentry:!0},f=d.autoBreadcrumbs;"[object Object]"==={}.toString.call(f)?f=x(e,f):f!==!1&&(f=e),d.autoBreadcrumbs=f;var h={tryCatch:!0},i=d.instrument;return"[object Object]"==={}.toString.call(i)?i=x(h,i):i!==!1&&(i=h),d.instrument=i,g.collectWindowErrors=!!d.collectWindowErrors,c},install:function(){var a=this;return a.isSetup()&&!a.n&&(g.report.subscribe(function(){a.A.apply(a,arguments)}),a.k.captureUnhandledRejections&&a.B(),a.C(),a.k.instrument&&a.k.instrument.tryCatch&&a.D(),a.k.autoBreadcrumbs&&a.E(),a.F(),a.n=!0),Error.stackTraceLimit=a.k.stackTraceLimit,this},setDSN:function(a){var b=this,c=b.G(a),d=c.path.lastIndexOf("/"),e=c.path.substr(1,d);b.H=a,b.h=c.user,b.I=c.pass&&c.pass.substr(1),b.i=c.path.substr(d+1),b.g=b.J(c),b.K=b.g+"/"+e+"api/"+b.i+"/store/",this.y()},context:function(a,b,c){return s(a)&&(c=b||[],b=a,a=void 0),this.wrap(a,b).apply(this,c)},wrap:function(a,b,c){function d(){var d=[],f=arguments.length,g=!a||a&&a.deep!==!1;for(c&&s(c)&&c.apply(this,arguments);f--;)d[f]=g?e.wrap(a,arguments[f]):arguments[f];try{return b.apply(this,d)}catch(h){throw e.L(),e.captureException(h,a),h}}var e=this;if(r(b)&&!s(a))return a;if(s(a)&&(b=a,a=void 0),!s(b))return b;try{if(b.M)return b;if(b.N)return b.N}catch(f){return b}for(var g in b)A(b,g)&&(d[g]=b[g]);return d.prototype=b.prototype,b.N=d,d.M=!0,d.O=b,d},uninstall:function(){return g.report.uninstall(),this.P(),this.Q(),this.R(),this.S(),Error.stackTraceLimit=this.o,this.n=!1,this},T:function(a){this.z("debug","Raven caught unhandled promise rejection:",a),this.captureException(a.reason,{extra:{unhandledPromiseRejection:!0}})},B:function(){return this.T=this.T.bind(this),R.addEventListener&&R.addEventListener("unhandledrejection",this.T),this},P:function(){return R.removeEventListener&&R.removeEventListener("unhandledrejection",this.T),this},captureException:function(a,b){if(b=x({trimHeadFrames:0},b?b:{}),l(a)&&a.error)a=a.error;else{if(m(a)||n(a)){var c=a.name||(m(a)?"DOMError":"DOMException"),d=a.message?c+": "+a.message:c;return this.captureMessage(d,x(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}))}if(o(a))a=a;else{if(!q(a))return this.captureMessage(a,x(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}));b=this.U(b,a),a=new Error(b.message)}}this.d=a;try{var e=g.computeStackTrace(a);this.V(e,b)}catch(f){if(a!==f)throw f}return this},U:function(a,b){var c=Object.keys(b).sort(),d=x(a,{message:"Non-Error exception captured with keys: "+L(c),fingerprint:[i(c)],extra:a.extra||{}});return d.extra.W=M(b),d},captureMessage:function(a,b){if(!this.k.ignoreErrors.test||!this.k.ignoreErrors.test(a)){b=b||{},a+="";var c,d=x({message:a},b);try{throw new Error(a)}catch(e){c=e}c.name=null;var f=g.computeStackTrace(c),h=u(f.stack)&&f.stack[1];h&&"Raven.captureException"===h.func&&(h=f.stack[2]);var i=h&&h.url||"";if((!this.k.ignoreUrls.test||!this.k.ignoreUrls.test(i))&&(!this.k.whitelistUrls.test||this.k.whitelistUrls.test(i))){if(this.k.stacktrace||b&&b.stacktrace){d.fingerprint=null==d.fingerprint?a:d.fingerprint,b=x({trimHeadFrames:0},b),b.trimHeadFrames+=1;var j=this.X(f,b);d.stacktrace={frames:j.reverse()}}return d.fingerprint&&(d.fingerprint=u(d.fingerprint)?d.fingerprint:[d.fingerprint]),this.Y(d),this}}},captureBreadcrumb:function(a){var b=x({timestamp:d()/1e3},a);if(s(this.k.breadcrumbCallback)){var c=this.k.breadcrumbCallback(b);if(p(c)&&!v(c))b=c;else if(c===!1)return this}return this.u.push(b),this.u.length>this.k.maxBreadcrumbs&&this.u.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.r.push([a,b]),this.n&&this.F(),this},setUserContext:function(a){return this.j.user=a,this},setExtraContext:function(a){return this.Z("extra",a),this},setTagsContext:function(a){return this.Z("tags",a),this},clearContext:function(){return this.j={},this},getContext:function(){return JSON.parse(h(this.j))},setEnvironment:function(a){return this.k.environment=a,this},setRelease:function(a){return this.k.release=a,this},setDataCallback:function(a){var b=this.k.dataCallback;return this.k.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.k.breadcrumbCallback;return this.k.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.k.shouldSendCallback;return this.k.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.k.transport=a,this},lastException:function(){return this.d},lastEventId:function(){return this.f},isSetup:function(){return!!this.a&&(!!this.g||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.z("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=R.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(S){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.H;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.j.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.J(this.G(c)),h=S.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(S.head||S.body).appendChild(h)}},L:function(){var a=this;this.m+=1,setTimeout(function(){a.m-=1})},$:function(a,b){var c,d;if(this.b){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),S.createEvent?(c=S.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=S.createEventObject(),c.eventType=a);for(d in b)A(b,d)&&(c[d]=b[d]);if(S.createEvent)S.dispatchEvent(c);else try{S.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},_:function(a){var b=this;return function(c){if(b.aa=null,b.v!==c){b.v=c;var d;try{d=E(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ba:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.aa;g||a._("input")(c),clearTimeout(g),a.aa=setTimeout(function(){a.aa=null},b)}}},ca:function(a,b){var c=H(this.w.href),d=H(b),e=H(a);this.x=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},C:function(){var a=this;a.da=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.M?a.da.apply(this.O,arguments):a.da.apply(this,arguments)}},Q:function(){this.da&&(Function.prototype.toString=this.da)},D:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.ca(b.x,c+""),a.apply(this,arguments)}};I(history,"pushState",j,d),I(history,"replaceState",j,d)}if(c.console&&"console"in R&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};w(["debug","info","warn","error","log"],function(a,b){O(console,b,k)})}},R:function(){for(var a;this.t.length;){a=this.t.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},S:function(){for(var a in this.q)this.p[a]=this.q[a]},F:function(){var a=this;w(this.r,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},G:function(a){var b=Q.exec(a),c={},d=7;try{for(;d--;)c[P[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.k.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},J:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},A:function(){this.m||this.V.apply(this,arguments)},V:function(a,b){var c=this.X(a,b);this.$("handle",{stackInfo:a,options:b}),this.fa(a.name,a.message,a.url,a.lineno,c,b)},X:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(w(a.stack,function(b,e){var f=c.ga(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.u,0)}),this.j.user&&(a.user=this.j.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),a=this.pa(a),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||v(a[b]))&&delete a[b]}),s(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!v(a)&&(!s(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.ma()?void this.z("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function F(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&l(b))for(c=b.split(/\s+/),f=0;fc?Q(a,b-1):d}function R(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?X:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function S(a,b){function c(a){return m(a)?a.map(function(a){return c(a)}):k(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!m(b)||m(b)&&0===b.length)return a;var d,e=A(b),f="********";try{d=JSON.parse(T(a))}catch(g){return a}return c(d)}var T=a(10),U="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},V=3,W=51200,X=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isDOMError:g,isDOMException:h,isUndefined:i,isFunction:j,isPlainObject:k,isString:l,isArray:m,isEmptyObject:n,supportsErrorEvent:o,supportsDOMError:p,supportsDOMException:q,supportsFetch:r,supportsReferrerPolicy:s,supportsPromiseRejectionEvent:t,wrappedCallback:u,each:v,objectMerge:w,truncate:y,objectFrozen:x,hasKey:z,joinRegExp:A,urlencode:B,uuid4:D,htmlTreeAsString:E,htmlElementAsString:F,isSameException:I,isSameStacktrace:J,parseUrl:C,fill:K,safeJoin:L,serializeException:Q,serializeKeysForMessage:R,sanitize:S}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{10:10}],9:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}function e(){return"undefined"==typeof document||null==document.location?"":document.location.origin}var f=a(8),g={collectWindowErrors:!0,debug:!1},h="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},i=[].slice,j="?",k=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;g.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function e(a,b){var c=null;if(!b||g.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(i.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,h,i){var l=null,m=f.isErrorEvent(i)?i.error:i,n=f.isErrorEvent(a)?a.message:a;if(v)g.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&f.isError(m))l=g.computeStackTrace(m),e(l,!0);else{var p,r={url:b,line:c,column:h},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(k);p&&(s=p[1],n=p[2])}r.func=j,l={name:s,message:n,url:d(),stack:[r]},e(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=h.onerror,h.onerror=l,r=!0)}function n(){r&&(h.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,e.apply(null,[a,!1].concat(b))}function p(a,b){var c=i.call(arguments,1);if(v){if(u===a)return;o()}var d=g.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),g.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,f,g=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,h=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,i=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,k=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,l=/\((\S*)(?::(\d+))(?::(\d+))\)/,m=a.stack.split("\n"),n=[],o=(/^(.*) is undefined$/.exec(a.message),0),p=m.length;o eval")>-1;r&&(b=k.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==o||c[5]||"undefined"==typeof a.columnNumber||(n[0].column=a.columnNumber+1),f={url:c[3],func:c[1]||j,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}if(!f.func&&f.line&&(f.func=j),f.url&&"blob:"===f.url.substr(0,5)){var s=new XMLHttpRequest;if(s.open("GET",f.url,!1),s.send(null),200===s.status){var t=s.responseText||"";t=t.slice(-300);var u=t.match(/\/\/# sourceMappingURL=(.*)$/);if(u){var v=u[1];"~"===v.charAt(0)&&(v=e()+v.slice(1)),f.url=v.slice(0,-4)}}}n.push(f)}return n.length?{name:a.name,message:a.message,url:d(),stack:n}:null}}function b(a,b,c,d){ +var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=j),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,e){for(var h,i,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==f&&o!==g.report){if(i={url:null,func:j,line:null,column:null},o.name?i.func=o.name:(h=k.exec(o.toString()))&&(i.func=h[1]),"undefined"==typeof i.func)try{i.func=h.input.substring(0,h.input.indexOf("{"))}catch(p){}m[""+o]?n=!0:m[""+o]=!0,l.push(i)}e&&l.splice(0,e);var q={name:a.name,message:a.message,url:d(),stack:l};return b(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),q}function f(b,e){var f=null;e=null==e?0:+e;try{if(f=a(b))return f}catch(h){if(g.debug)throw h}try{if(f=c(b,e+1))return f}catch(h){if(g.debug)throw h}return{name:b.name,message:b.message,url:d()}}return f.augmentStackTraceWithInitialElement=b,f.computeStackTraceFromStackProp=a,f}(),b.exports=g}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{8:8}],10:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}],11:[function(a,b,c){function d(a,b){var c=(65535&a)+(65535&b),d=(a>>16)+(b>>16)+(c>>16);return d<<16|65535&c}function e(a,b){return a<>>32-b}function f(a,b,c,f,g,h){return d(e(d(d(b,a),d(f,h)),g),c)}function g(a,b,c,d,e,g,h){return f(b&c|~b&d,a,b,e,g,h)}function h(a,b,c,d,e,g,h){return f(b&d|c&~d,a,b,e,g,h)}function i(a,b,c,d,e,g,h){return f(b^c^d,a,b,e,g,h)}function j(a,b,c,d,e,g,h){return f(c^(b|~d),a,b,e,g,h)}function k(a,b){a[b>>5]|=128<>>9<<4)+14]=b;var c,e,f,k,l,m=1732584193,n=-271733879,o=-1732584194,p=271733878;for(c=0;c>5]>>>b%32&255);return c}function m(a){var b,c=[];for(c[(a.length>>2)-1]=void 0,b=0;b>5]|=(255&a.charCodeAt(b/8))<16&&(e=k(e,8*a.length)),c=0;c<16;c+=1)f[c]=909522486^e[c],g[c]=1549556828^e[c];return d=k(f.concat(m(b)),512+8*b.length),l(k(g.concat(d),640))}function p(a){var b,c,d="0123456789abcdef",e="";for(c=0;c>>4&15)+d.charAt(15&b);return e}function q(a){return unescape(encodeURIComponent(a))}function r(a){return n(q(a))}function s(a){return p(r(a))}function t(a,b){return o(q(a),q(b))}function u(a,b){return p(t(a,b))}function v(a,b,c){return b?c?t(b,a):u(b,a):c?r(a):s(a)}b.exports=v},{}]},{},[7,1,2,3])(7)}); //# sourceMappingURL=raven.min.js.map \ No newline at end of file diff --git a/dist/console,ember,vue/raven.min.js.map b/dist/console,ember,vue/raven.min.js.map index a799600a7ca8..c9d6087e5412 100644 --- a/dist/console,ember,vue/raven.min.js.map +++ b/dist/console,ember,vue/raven.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","consolePlugin","console","pluginOptions","logLevels","levels","push","callback","msg","data","captureMessage","level","pop","wrapConsoleMethod","wrapMethod","addPlugin","5","7","2","emberPlugin","Ember","_oldOnError","onerror","error","captureException","RSVP","on","reason","extra","context","3","formatComponentName","vm","$root","name","_isVue","$options","_componentTag","__file","vuePlugin","Vue","config","errorHandler","info","metaData","Object","prototype","toString","componentName","propsData","lifecycleHook","4","RavenConfigError","message","constructor","utils","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","safeJoin","logger","Function","apply","8","6","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","sanitizeKeys","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isError","isObject","isPlainObject","isErrorEvent","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","sanitize","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","dsn","options","_logDebug","globalOptions","key","value","setDSN","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","substr","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","func","undefined","wrap","_before","wrapped","deep","_ignoreNextOnError","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","T","event","unhandledPromiseRejection","B","_promiseRejectionHandler","bind","addEventListener","P","removeEventListener","ex","trimHeadFrames","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","U","currentOptions","exKeys","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","setDataCallback","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","L","setTimeout","$","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","_","evtName","_keypressTimeout","target","category","ba","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","ca","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","C","_originalFunctionToString","Q","D","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","type","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","E","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","R","builtin","S","F","installer","concat","G","str","m","exec","allowSecretKey","J","port","A","V","stackInfo","_triggerEvent","_processException","lineno","X","frame","_normalizeFrame","in_app","ga","stackInfoUrl","normalized","filename","line","colno","column","function","fa","prefixedMessage","exception","values","culprit","ha","request","Referer","breadcrumbs","_trimBreadcrumbs","ia","urlProp","urlProps","ja","httpData","userAgent","User-Agent","referrer","y","_backoffDuration","_backoffStart","ma","na","current","last","oa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Y","baseData","project","platform","_getHttpData","serverName","server_name","_sanitizeData","forEach","random","_sendProcessedPayload","pa","ra","qa","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","sa","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","open","setRequestHeader","send","ta","hash","evaluated","z","Z","setUser","setReleaseContext","10","11","9","RavenConstructor","_Raven","noConflict","Client","what","supportsErrorEvent","ErrorEvent","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","wrappedCallback","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","sanitizeMask","safeInput","o_O","getLocationHref","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","charAt","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","string","raw"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file +{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","consolePlugin","console","pluginOptions","logLevels","levels","push","callback","msg","data","captureMessage","level","pop","wrapConsoleMethod","wrapMethod","addPlugin","5","7","2","emberPlugin","Ember","_oldOnError","onerror","error","captureException","RSVP","on","reason","extra","context","3","formatComponentName","vm","$root","name","_isVue","$options","_componentTag","__file","vuePlugin","Vue","config","errorHandler","info","metaData","Object","prototype","toString","componentName","propsData","lifecycleHook","4","RavenConfigError","message","constructor","utils","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","safeJoin","logger","Function","apply","8","6","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","sanitizeKeys","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isErrorEvent","isDOMError","isDOMException","isError","isObject","isPlainObject","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","sanitize","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","dsn","options","_logDebug","globalOptions","key","value","setDSN","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","substr","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","func","undefined","wrap","_before","wrapped","deep","_ignoreNextOnError","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","T","event","unhandledPromiseRejection","B","_promiseRejectionHandler","bind","addEventListener","P","removeEventListener","ex","trimHeadFrames","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","U","currentOptions","exKeys","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","setDataCallback","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","L","setTimeout","$","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","_","evtName","_keypressTimeout","target","category","ba","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","ca","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","C","_originalFunctionToString","Q","D","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","type","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","E","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","R","builtin","S","F","installer","concat","G","str","m","exec","allowSecretKey","J","port","A","V","stackInfo","_triggerEvent","_processException","lineno","X","frame","_normalizeFrame","in_app","ga","stackInfoUrl","normalized","filename","line","colno","column","function","fa","prefixedMessage","exception","values","culprit","ha","request","Referer","breadcrumbs","_trimBreadcrumbs","ia","urlProp","urlProps","ja","httpData","userAgent","User-Agent","referrer","y","_backoffDuration","_backoffStart","ma","na","current","last","oa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Y","baseData","project","platform","_getHttpData","serverName","server_name","_sanitizeData","forEach","random","_sendProcessedPayload","pa","ra","qa","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","sa","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","open","setRequestHeader","send","ta","hash","evaluated","z","Z","setUser","setReleaseContext","10","11","9","RavenConstructor","_Raven","noConflict","Client","what","supportsErrorEvent","ErrorEvent","supportsDOMError","DOMError","supportsDOMException","DOMException","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","wrappedCallback","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","sanitizeMask","safeInput","o_O","getLocationHref","getLocationOrigin","origin","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","responseText","sourceMaps","sourceMapAddress","charAt","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","string","raw"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file diff --git a/dist/console,ember/raven.js b/dist/console,ember/raven.js index 525da2cff541..a7444c1a9967 100644 --- a/dist/console,ember/raven.js +++ b/dist/console,ember/raven.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.24.2 (540f32b) | github.com/getsentry/raven-js */ +/*! Raven.js 3.25.0 (80dffad) | github.com/getsentry/raven-js */ /* * Includes TraceKit @@ -142,10 +142,12 @@ var md5 = _dereq_(10); var RavenConfigError = _dereq_(3); var utils = _dereq_(7); +var isErrorEvent = utils.isErrorEvent; +var isDOMError = utils.isDOMError; +var isDOMException = utils.isDOMException; var isError = utils.isError; var isObject = utils.isObject; var isPlainObject = utils.isPlainObject; -var isErrorEvent = utils.isErrorEvent; var isUndefined = utils.isUndefined; var isFunction = utils.isFunction; var isString = utils.isString; @@ -273,7 +275,7 @@ Raven.prototype = { // webpack (using a build step causes webpack #1617). Grunt verifies that // this value matches package.json during build. // See: https://github.com/getsentry/raven-js/issues/465 - VERSION: '3.24.2', + VERSION: '3.25.0', debug: false, @@ -605,6 +607,23 @@ Raven.prototype = { if (isErrorEvent(ex) && ex.error) { // If it is an ErrorEvent with `error` property, extract it to get actual Error ex = ex.error; + } else if (isDOMError(ex) || isDOMException(ex)) { + // If it is a DOMError or DOMException (which are legacy APIs, but still supported in some browsers) + // then we just extract the name and message, as they don't provide anything else + // https://developer.mozilla.org/en-US/docs/Web/API/DOMError + // https://developer.mozilla.org/en-US/docs/Web/API/DOMException + var name = ex.name || (isDOMError(ex) ? 'DOMError' : 'DOMException'); + var message = ex.message ? name + ': ' + ex.message : name; + + return this.captureMessage( + message, + objectMerge(options, { + // neither DOMError or DOMException provide stack trace and we most likely wont get it this way as well + // but it's barely any overhead so we may at least try + stacktrace: true, + trimHeadFrames: options.trimHeadFrames + 1 + }) + ); } else if (isError(ex)) { // we have a real Error object ex = ex; @@ -616,6 +635,7 @@ Raven.prototype = { ex = new Error(options.message); } else { // If none of previous checks were valid, then it means that + // it's not a DOMError/DOMException // it's not a plain Object // it's not a valid ErrorEvent (one with an error property) // it's not an Error @@ -2388,7 +2408,7 @@ function isObject(what) { // Yanked from https://git.io/vS8DV re-used under CC0 // with some tiny modifications function isError(value) { - switch ({}.toString.call(value)) { + switch (Object.prototype.toString.call(value)) { case '[object Error]': return true; case '[object Exception]': @@ -2401,7 +2421,15 @@ function isError(value) { } function isErrorEvent(value) { - return supportsErrorEvent() && {}.toString.call(value) === '[object ErrorEvent]'; + return Object.prototype.toString.call(value) === '[object ErrorEvent]'; +} + +function isDOMError(value) { + return Object.prototype.toString.call(value) === '[object DOMError]'; +} + +function isDOMException(value) { + return Object.prototype.toString.call(value) === '[object DOMException]'; } function isUndefined(what) { @@ -2444,6 +2472,24 @@ function supportsErrorEvent() { } } +function supportsDOMError() { + try { + new DOMError(''); // eslint-disable-line no-new + return true; + } catch (e) { + return false; + } +} + +function supportsDOMException() { + try { + new DOMException(''); // eslint-disable-line no-new + return true; + } catch (e) { + return false; + } +} + function supportsFetch() { if (!('fetch' in _window)) return false; @@ -2959,6 +3005,8 @@ module.exports = { isObject: isObject, isError: isError, isErrorEvent: isErrorEvent, + isDOMError: isDOMError, + isDOMException: isDOMException, isUndefined: isUndefined, isFunction: isFunction, isPlainObject: isPlainObject, @@ -2966,6 +3014,8 @@ module.exports = { isArray: isArray, isEmptyObject: isEmptyObject, supportsErrorEvent: supportsErrorEvent, + supportsDOMError: supportsDOMError, + supportsDOMException: supportsDOMException, supportsFetch: supportsFetch, supportsReferrerPolicy: supportsReferrerPolicy, supportsPromiseRejectionEvent: supportsPromiseRejectionEvent, @@ -3025,10 +3075,14 @@ var ERROR_TYPES_RE = /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Ran function getLocationHref() { if (typeof document === 'undefined' || document.location == null) return ''; - return document.location.href; } +function getLocationOrigin() { + if (typeof document === 'undefined' || document.location == null) return ''; + return document.location.origin; +} + /** * TraceKit.report: cross-browser processing of unhandled exceptions * @@ -3436,6 +3490,44 @@ TraceKit.computeStackTrace = (function computeStackTraceWrapper() { element.func = UNKNOWN_FUNCTION; } + if (element.url && element.url.substr(0, 5) === 'blob:') { + // Special case for handling JavaScript loaded into a blob. + // We use a synchronous AJAX request here as a blob is already in + // memory - it's not making a network request. This will generate a warning + // in the browser console, but there has already been an error so that's not + // that much of an issue. + var xhr = new XMLHttpRequest(); + xhr.open('GET', element.url, false); + xhr.send(null); + + // If we failed to download the source, skip this patch + if (xhr.status === 200) { + var source = xhr.responseText || ''; + + // We trim the source down to the last 300 characters as sourceMappingURL is always at the end of the file. + // Why 300? To be in line with: https://github.com/getsentry/sentry/blob/4af29e8f2350e20c28a6933354e4f42437b4ba42/src/sentry/lang/javascript/processor.py#L164-L175 + source = source.slice(-300); + + // Now we dig out the source map URL + var sourceMaps = source.match(/\/\/# sourceMappingURL=(.*)$/); + + // If we don't find a source map comment or we find more than one, continue on to the next element. + if (sourceMaps) { + var sourceMapAddress = sourceMaps[1]; + + // Now we check to see if it's a relative URL. + // If it is, convert it to an absolute one. + if (sourceMapAddress.charAt(0) === '~') { + sourceMapAddress = getLocationOrigin() + sourceMapAddress.slice(1); + } + + // Now we strip the '.map' off of the end of the URL and update the + // element so that Sentry can match the map to the blob. + element.url = sourceMapAddress.slice(0, -4); + } + } + } + stack.push(element); } diff --git a/dist/console,ember/raven.min.js b/dist/console,ember/raven.min.js index a75a4a9c62e6..2289dceeaa80 100644 --- a/dist/console,ember/raven.min.js +++ b/dist/console,ember/raven.min.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.24.2 (540f32b) | github.com/getsentry/raven-js */ -!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.Raven=a()}}(function(){return function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};b[g][0].call(k.exports,function(a){var c=b[g][1][a];return e(c?c:a)},k,k.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;gthis.k.maxBreadcrumbs&&this.u.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.r.push([a,b]),this.n&&this.F(),this},setUserContext:function(a){return this.j.user=a,this},setExtraContext:function(a){return this.Z("extra",a),this},setTagsContext:function(a){return this.Z("tags",a),this},clearContext:function(){return this.j={},this},getContext:function(){return JSON.parse(h(this.j))},setEnvironment:function(a){return this.k.environment=a,this},setRelease:function(a){return this.k.release=a,this},setDataCallback:function(a){var b=this.k.dataCallback;return this.k.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.k.breadcrumbCallback;return this.k.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.k.shouldSendCallback;return this.k.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.k.transport=a,this},lastException:function(){return this.d},lastEventId:function(){return this.f},isSetup:function(){return!!this.a&&(!!this.g||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.z("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=P.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(Q){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.H;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.j.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.J(this.G(c)),h=Q.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(Q.head||Q.body).appendChild(h)}},L:function(){var a=this;this.m+=1,setTimeout(function(){a.m-=1})},$:function(a,b){var c,d;if(this.b){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),Q.createEvent?(c=Q.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=Q.createEventObject(),c.eventType=a);for(d in b)y(b,d)&&(c[d]=b[d]);if(Q.createEvent)Q.dispatchEvent(c);else try{Q.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},_:function(a){var b=this;return function(c){if(b.aa=null,b.v!==c){b.v=c;var d;try{d=C(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ba:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.aa;g||a._("input")(c),clearTimeout(g),a.aa=setTimeout(function(){a.aa=null},b)}}},ca:function(a,b){var c=F(this.w.href),d=F(b),e=F(a);this.x=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},C:function(){var a=this;a.da=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.M?a.da.apply(this.O,arguments):a.da.apply(this,arguments)}},Q:function(){this.da&&(Function.prototype.toString=this.da)},D:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.ca(b.x,c+""),a.apply(this,arguments)}};G(history,"pushState",j,d),G(history,"replaceState",j,d)}if(c.console&&"console"in P&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};u(["debug","info","warn","error","log"],function(a,b){M(console,b,k)})}},R:function(){for(var a;this.t.length;){a=this.t.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},S:function(){for(var a in this.q)this.p[a]=this.q[a]},F:function(){var a=this;u(this.r,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},G:function(a){var b=O.exec(a),c={},d=7;try{for(;d--;)c[N[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.k.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},J:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},A:function(){this.m||this.V.apply(this,arguments)},V:function(a,b){var c=this.X(a,b);this.$("handle",{stackInfo:a,options:b}),this.fa(a.name,a.message,a.url,a.lineno,c,b)},X:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(u(a.stack,function(b,e){var f=c.ga(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.u,0)}),this.j.user&&(a.user=this.j.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),a=this.pa(a),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||t(a[b]))&&delete a[b]}),q(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!t(a)&&(!q(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.ma()?void this.z("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function B(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&j(b))for(c=b.split(/\s+/),f=0;fc?M(a,b-1):d}function N(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?T:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function O(a,b){function c(a){return k(a)?a.map(function(a){return c(a)}):i(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!k(b)||k(b)&&0===b.length)return a;var d,e=w(b),f="********";try{d=JSON.parse(P(a))}catch(g){return a}return c(d)}var P=a(9),Q="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},R=3,S=51200,T=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isUndefined:g,isFunction:h,isPlainObject:i,isString:j,isArray:k,isEmptyObject:l,supportsErrorEvent:m,supportsFetch:n,supportsReferrerPolicy:o,supportsPromiseRejectionEvent:p,wrappedCallback:q,each:r,objectMerge:s,truncate:u,objectFrozen:t,hasKey:v,joinRegExp:w,urlencode:x,uuid4:z,htmlTreeAsString:A,htmlElementAsString:B,isSameException:E,isSameStacktrace:F,parseUrl:y,fill:G,safeJoin:H,serializeException:M,serializeKeysForMessage:N,sanitize:O}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{9:9}],8:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}var e=a(7),f={collectWindowErrors:!0,debug:!1},g="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},h=[].slice,i="?",j=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;f.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function k(a,b){var c=null;if(!b||f.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(h.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,g,h){var l=null,m=e.isErrorEvent(h)?h.error:h,n=e.isErrorEvent(a)?a.message:a;if(v)f.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&e.isError(m))l=f.computeStackTrace(m),k(l,!0);else{var p,r={url:b,line:c,column:g},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(j);p&&(s=p[1],n=p[2])}r.func=i,l={name:s,message:n,url:d(),stack:[r]},k(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=g.onerror,g.onerror=l,r=!0)}function n(){r&&(g.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,k.apply(null,[a,!1].concat(b))}function p(a,b){var c=h.call(arguments,1);if(v){if(u===a)return;o()}var d=f.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),f.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,e,f=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,g=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,h=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,j=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,k=/\((\S*)(?::(\d+))(?::(\d+))\)/,l=a.stack.split("\n"),m=[],n=(/^(.*) is undefined$/.exec(a.message),0),o=l.length;n eval")>-1;q&&(b=j.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==n||c[5]||"undefined"==typeof a.columnNumber||(m[0].column=a.columnNumber+1),e={url:c[3],func:c[1]||i,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}!e.func&&e.line&&(e.func=i),m.push(e)}return m.length?{name:a.name,message:a.message,url:d(),stack:m}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=i),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,g){for(var h,j,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==e&&o!==f.report){if(j={url:null,func:i,line:null,column:null},o.name?j.func=o.name:(h=k.exec(o.toString()))&&(j.func=h[1]),"undefined"==typeof j.func)try{j.func=h.input.substring(0,h.input.indexOf("{"))}catch(p){}m[""+o]?n=!0:m[""+o]=!0,l.push(j)}g&&l.splice(0,g);var q={name:a.name,message:a.message,url:d(),stack:l};return b(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),q}function e(b,e){var g=null;e=null==e?0:+e;try{if(g=a(b))return g}catch(h){if(f.debug)throw h}try{if(g=c(b,e+1))return g}catch(h){if(f.debug)throw h}return{name:b.name,message:b.message,url:d()}}return e.augmentStackTraceWithInitialElement=b,e.computeStackTraceFromStackProp=a,e}(),b.exports=f}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{7:7}],9:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}],10:[function(a,b,c){function d(a,b){var c=(65535&a)+(65535&b),d=(a>>16)+(b>>16)+(c>>16);return d<<16|65535&c}function e(a,b){return a<>>32-b}function f(a,b,c,f,g,h){return d(e(d(d(b,a),d(f,h)),g),c)}function g(a,b,c,d,e,g,h){return f(b&c|~b&d,a,b,e,g,h)}function h(a,b,c,d,e,g,h){return f(b&d|c&~d,a,b,e,g,h)}function i(a,b,c,d,e,g,h){return f(b^c^d,a,b,e,g,h)}function j(a,b,c,d,e,g,h){return f(c^(b|~d),a,b,e,g,h)}function k(a,b){a[b>>5]|=128<>>9<<4)+14]=b;var c,e,f,k,l,m=1732584193,n=-271733879,o=-1732584194,p=271733878;for(c=0;c>5]>>>b%32&255);return c}function m(a){var b,c=[];for(c[(a.length>>2)-1]=void 0,b=0;b>5]|=(255&a.charCodeAt(b/8))<16&&(e=k(e,8*a.length)),c=0;c<16;c+=1)f[c]=909522486^e[c],g[c]=1549556828^e[c];return d=k(f.concat(m(b)),512+8*b.length),l(k(g.concat(d),640))}function p(a){var b,c,d="0123456789abcdef",e="";for(c=0;c>>4&15)+d.charAt(15&b);return e}function q(a){return unescape(encodeURIComponent(a))}function r(a){return n(q(a))}function s(a){return p(r(a))}function t(a,b){return o(q(a),q(b))}function u(a,b){return p(t(a,b))}function v(a,b,c){return b?c?t(b,a):u(b,a):c?r(a):s(a)}b.exports=v},{}]},{},[6,1,2])(6)}); +/*! Raven.js 3.25.0 (80dffad) | github.com/getsentry/raven-js */ +!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.Raven=a()}}(function(){return function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};b[g][0].call(k.exports,function(a){var c=b[g][1][a];return e(c?c:a)},k,k.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;gthis.k.maxBreadcrumbs&&this.u.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.r.push([a,b]),this.n&&this.F(),this},setUserContext:function(a){return this.j.user=a,this},setExtraContext:function(a){return this.Z("extra",a),this},setTagsContext:function(a){return this.Z("tags",a),this},clearContext:function(){return this.j={},this},getContext:function(){return JSON.parse(h(this.j))},setEnvironment:function(a){return this.k.environment=a,this},setRelease:function(a){return this.k.release=a,this},setDataCallback:function(a){var b=this.k.dataCallback;return this.k.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.k.breadcrumbCallback;return this.k.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.k.shouldSendCallback;return this.k.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.k.transport=a,this},lastException:function(){return this.d},lastEventId:function(){return this.f},isSetup:function(){return!!this.a&&(!!this.g||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.z("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=R.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(S){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.H;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.j.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.J(this.G(c)),h=S.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(S.head||S.body).appendChild(h)}},L:function(){var a=this;this.m+=1,setTimeout(function(){a.m-=1})},$:function(a,b){var c,d;if(this.b){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),S.createEvent?(c=S.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=S.createEventObject(),c.eventType=a);for(d in b)A(b,d)&&(c[d]=b[d]);if(S.createEvent)S.dispatchEvent(c);else try{S.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},_:function(a){var b=this;return function(c){if(b.aa=null,b.v!==c){b.v=c;var d;try{d=E(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ba:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.aa;g||a._("input")(c),clearTimeout(g),a.aa=setTimeout(function(){a.aa=null},b)}}},ca:function(a,b){var c=H(this.w.href),d=H(b),e=H(a);this.x=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},C:function(){var a=this;a.da=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.M?a.da.apply(this.O,arguments):a.da.apply(this,arguments)}},Q:function(){this.da&&(Function.prototype.toString=this.da)},D:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.ca(b.x,c+""),a.apply(this,arguments)}};I(history,"pushState",j,d),I(history,"replaceState",j,d)}if(c.console&&"console"in R&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};w(["debug","info","warn","error","log"],function(a,b){O(console,b,k)})}},R:function(){for(var a;this.t.length;){a=this.t.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},S:function(){for(var a in this.q)this.p[a]=this.q[a]},F:function(){var a=this;w(this.r,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},G:function(a){var b=Q.exec(a),c={},d=7;try{for(;d--;)c[P[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.k.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},J:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},A:function(){this.m||this.V.apply(this,arguments)},V:function(a,b){var c=this.X(a,b);this.$("handle",{stackInfo:a,options:b}),this.fa(a.name,a.message,a.url,a.lineno,c,b)},X:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(w(a.stack,function(b,e){var f=c.ga(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.u,0)}),this.j.user&&(a.user=this.j.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),a=this.pa(a),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||v(a[b]))&&delete a[b]}),s(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!v(a)&&(!s(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.ma()?void this.z("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function F(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&l(b))for(c=b.split(/\s+/),f=0;fc?Q(a,b-1):d}function R(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?X:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function S(a,b){function c(a){return m(a)?a.map(function(a){return c(a)}):k(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!m(b)||m(b)&&0===b.length)return a;var d,e=A(b),f="********";try{d=JSON.parse(T(a))}catch(g){return a}return c(d)}var T=a(9),U="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},V=3,W=51200,X=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isDOMError:g,isDOMException:h,isUndefined:i,isFunction:j,isPlainObject:k,isString:l,isArray:m,isEmptyObject:n,supportsErrorEvent:o,supportsDOMError:p,supportsDOMException:q,supportsFetch:r,supportsReferrerPolicy:s,supportsPromiseRejectionEvent:t,wrappedCallback:u,each:v,objectMerge:w,truncate:y,objectFrozen:x,hasKey:z,joinRegExp:A,urlencode:B,uuid4:D,htmlTreeAsString:E,htmlElementAsString:F,isSameException:I,isSameStacktrace:J,parseUrl:C,fill:K,safeJoin:L,serializeException:Q,serializeKeysForMessage:R,sanitize:S}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{9:9}],8:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}function e(){return"undefined"==typeof document||null==document.location?"":document.location.origin}var f=a(7),g={collectWindowErrors:!0,debug:!1},h="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},i=[].slice,j="?",k=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;g.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function e(a,b){var c=null;if(!b||g.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(i.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,h,i){var l=null,m=f.isErrorEvent(i)?i.error:i,n=f.isErrorEvent(a)?a.message:a;if(v)g.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&f.isError(m))l=g.computeStackTrace(m),e(l,!0);else{var p,r={url:b,line:c,column:h},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(k);p&&(s=p[1],n=p[2])}r.func=j,l={name:s,message:n,url:d(),stack:[r]},e(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=h.onerror,h.onerror=l,r=!0)}function n(){r&&(h.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,e.apply(null,[a,!1].concat(b))}function p(a,b){var c=i.call(arguments,1);if(v){if(u===a)return;o()}var d=g.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),g.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,f,g=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,h=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,i=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,k=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,l=/\((\S*)(?::(\d+))(?::(\d+))\)/,m=a.stack.split("\n"),n=[],o=(/^(.*) is undefined$/.exec(a.message),0),p=m.length;o eval")>-1;r&&(b=k.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==o||c[5]||"undefined"==typeof a.columnNumber||(n[0].column=a.columnNumber+1),f={url:c[3],func:c[1]||j,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}if(!f.func&&f.line&&(f.func=j),f.url&&"blob:"===f.url.substr(0,5)){var s=new XMLHttpRequest;if(s.open("GET",f.url,!1),s.send(null),200===s.status){var t=s.responseText||"";t=t.slice(-300);var u=t.match(/\/\/# sourceMappingURL=(.*)$/);if(u){var v=u[1];"~"===v.charAt(0)&&(v=e()+v.slice(1)),f.url=v.slice(0,-4)}}}n.push(f)}return n.length?{name:a.name,message:a.message,url:d(),stack:n}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=j),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,e){for(var h,i,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==f&&o!==g.report){if(i={url:null,func:j,line:null,column:null},o.name?i.func=o.name:(h=k.exec(o.toString()))&&(i.func=h[1]),"undefined"==typeof i.func)try{i.func=h.input.substring(0,h.input.indexOf("{")); +}catch(p){}m[""+o]?n=!0:m[""+o]=!0,l.push(i)}e&&l.splice(0,e);var q={name:a.name,message:a.message,url:d(),stack:l};return b(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),q}function f(b,e){var f=null;e=null==e?0:+e;try{if(f=a(b))return f}catch(h){if(g.debug)throw h}try{if(f=c(b,e+1))return f}catch(h){if(g.debug)throw h}return{name:b.name,message:b.message,url:d()}}return f.augmentStackTraceWithInitialElement=b,f.computeStackTraceFromStackProp=a,f}(),b.exports=g}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{7:7}],9:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}],10:[function(a,b,c){function d(a,b){var c=(65535&a)+(65535&b),d=(a>>16)+(b>>16)+(c>>16);return d<<16|65535&c}function e(a,b){return a<>>32-b}function f(a,b,c,f,g,h){return d(e(d(d(b,a),d(f,h)),g),c)}function g(a,b,c,d,e,g,h){return f(b&c|~b&d,a,b,e,g,h)}function h(a,b,c,d,e,g,h){return f(b&d|c&~d,a,b,e,g,h)}function i(a,b,c,d,e,g,h){return f(b^c^d,a,b,e,g,h)}function j(a,b,c,d,e,g,h){return f(c^(b|~d),a,b,e,g,h)}function k(a,b){a[b>>5]|=128<>>9<<4)+14]=b;var c,e,f,k,l,m=1732584193,n=-271733879,o=-1732584194,p=271733878;for(c=0;c>5]>>>b%32&255);return c}function m(a){var b,c=[];for(c[(a.length>>2)-1]=void 0,b=0;b>5]|=(255&a.charCodeAt(b/8))<16&&(e=k(e,8*a.length)),c=0;c<16;c+=1)f[c]=909522486^e[c],g[c]=1549556828^e[c];return d=k(f.concat(m(b)),512+8*b.length),l(k(g.concat(d),640))}function p(a){var b,c,d="0123456789abcdef",e="";for(c=0;c>>4&15)+d.charAt(15&b);return e}function q(a){return unescape(encodeURIComponent(a))}function r(a){return n(q(a))}function s(a){return p(r(a))}function t(a,b){return o(q(a),q(b))}function u(a,b){return p(t(a,b))}function v(a,b,c){return b?c?t(b,a):u(b,a):c?r(a):s(a)}b.exports=v},{}]},{},[6,1,2])(6)}); //# sourceMappingURL=raven.min.js.map \ No newline at end of file diff --git a/dist/console,ember/raven.min.js.map b/dist/console,ember/raven.min.js.map index 6e7752ea7df2..112f6b2a5a00 100644 --- a/dist/console,ember/raven.min.js.map +++ b/dist/console,ember/raven.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","consolePlugin","console","pluginOptions","logLevels","levels","push","callback","msg","data","captureMessage","level","pop","wrapConsoleMethod","wrapMethod","addPlugin","4","6","2","emberPlugin","Ember","_oldOnError","onerror","error","captureException","RSVP","on","reason","extra","context","3","RavenConfigError","message","name","prototype","constructor","utils","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","safeJoin","logger","Function","apply","7","5","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","sanitizeKeys","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isError","isObject","isPlainObject","isErrorEvent","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","sanitize","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","config","dsn","options","_logDebug","globalOptions","key","value","setDSN","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","toString","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","substr","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","func","undefined","wrap","_before","wrapped","deep","_ignoreNextOnError","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","T","event","unhandledPromiseRejection","B","_promiseRejectionHandler","bind","addEventListener","P","removeEventListener","ex","trimHeadFrames","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","U","currentOptions","exKeys","Object","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","setDataCallback","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","L","setTimeout","$","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","_","evtName","_keypressTimeout","target","category","ba","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","ca","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","C","_originalFunctionToString","Q","D","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","type","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","E","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","R","builtin","S","F","installer","concat","G","str","m","exec","allowSecretKey","J","port","A","V","stackInfo","_triggerEvent","_processException","lineno","X","frame","_normalizeFrame","in_app","ga","stackInfoUrl","normalized","filename","line","colno","column","function","fa","prefixedMessage","exception","values","culprit","ha","request","Referer","breadcrumbs","_trimBreadcrumbs","ia","urlProp","urlProps","ja","httpData","userAgent","User-Agent","referrer","y","_backoffDuration","_backoffStart","ma","na","current","last","oa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Y","baseData","project","platform","_getHttpData","serverName","server_name","_sanitizeData","forEach","random","_sendProcessedPayload","pa","ra","qa","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","sa","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","open","setRequestHeader","send","ta","hash","evaluated","z","Z","setUser","setReleaseContext","10","8","9","RavenConstructor","_Raven","noConflict","Client","what","supportsErrorEvent","ErrorEvent","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","wrappedCallback","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","sanitizeMask","safeInput","o_O","getLocationHref","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","charAt","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","string","raw"],"mappings":";CAYA,SAAUA,GAAG,GAAoB,gBAAVC,UAAoC,mBAATC,QAAsBA,OAAOD,QAAQD,QAAS,IAAmB,kBAATG,SAAqBA,OAAOC,IAAKD,UAAUH,OAAO,CAAC,GAAIK,EAAkCA,GAAb,mBAATC,QAAwBA,OAA+B,mBAATC,QAAwBA,OAA6B,mBAAPC,MAAsBA,KAAYC,KAAKJ,EAAEK,MAAQV,MAAO,WAAqC,MAAO,SAAUW,GAAEC,EAAEC,EAAEC,GAAG,QAASC,GAAEC,EAAEC,GAAG,IAAIJ,EAAEG,GAAG,CAAC,IAAIJ,EAAEI,GAAG,CAAC,GAAIE,GAAkB,kBAATC,UAAqBA,OAAQ,KAAIF,GAAGC,EAAE,MAAOA,GAAEF,GAAE,EAAI,IAAGI,EAAE,MAAOA,GAAEJ,GAAE,EAAI,IAAIhB,GAAE,GAAIqB,OAAM,uBAAuBL,EAAE,IAAK,MAAMhB,GAAEsB,KAAK,mBAAmBtB,EAAE,GAAIuB,GAAEV,EAAEG,IAAIf,WAAYW,GAAEI,GAAG,GAAGQ,KAAKD,EAAEtB,QAAQ,SAASU,GAAG,GAAIE,GAAED,EAAEI,GAAG,GAAGL,EAAG,OAAOI,GAAEF,EAAEA,EAAEF,IAAIY,EAAEA,EAAEtB,QAAQU,EAAEC,EAAEC,EAAEC,GAAG,MAAOD,GAAEG,GAAGf,QAAkD,IAAI,GAA1CmB,GAAkB,kBAATD,UAAqBA,QAAgBH,EAAE,EAAEA,EAAEF,EAAEW,OAAOT,IAAID,EAAED,EAAEE,GAAI,OAAOD,KAAKW,GAAG,SAASC,EAAQzB,EAAOD,GAcp0B,QAAS2B,GAAclB,EAAOmB,EAASC,GACrCD,EAAUA,GAAWvB,OAAOuB,YAC5BC,EAAgBA,KAEhB,IAAIC,GAAYD,EAAcE,SAAW,QAAS,OAAQ,OAAQ,QAC9D,WAAYH,IAASE,EAAUE,KAAK,SAOxC,KALA,GAAIC,GAAW,SAASC,EAAKC,GAC3B1B,EAAM2B,eAAeF,EAAKC,IAGxBE,EAAQP,EAAUQ,MACfD,GACLE,EAAkBX,EAASS,EAAOJ,GAClCI,EAAQP,EAAUQ,MAhBtB,GAAIC,GAAoBb,EAAQ,GAAGc,UAoBnCvC,GAAOD,QAAU2B,EAEjBD,EAAQ,GAAGe,UAAUxC,EAAOD,WACzB0C,EAAI,EAAEC,EAAI,IAAIC,GAAG,SAASlB,EAAQzB,EAAOD,GAM5C,QAAS6C,GAAYpC,EAAOqC,GAI1B,GAHAA,EAAQA,GAASzC,OAAOyC,MAGxB,CAEA,GAAIC,GAAcD,EAAME,OACxBF,GAAME,QAAU,SAAsBC,GACpCxC,EAAMyC,iBAAiBD,GACI,kBAAhBF,IACTA,EAAYxB,KAAKf,KAAMyC,IAG3BH,EAAMK,KAAKC,GAAG,QAAS,SAASC,GAC1BA,YAAkBjC,OACpBX,EAAMyC,iBAAiBG,GACrBC,OAAQC,QAAS,sCAGnB9C,EAAM2B,eAAe,oCAAqCkB,OAAQD,OAAQA,QAKhFpD,EAAOD,QAAU6C,EAEjBnB,EAAQ,GAAGe,UAAUxC,EAAOD,WACzB2C,EAAI,IAAIa,GAAG,SAAS9B,EAAQzB,EAAOD,GACtC,QAASyD,GAAiBC,GACxBlD,KAAKmD,KAAO,mBACZnD,KAAKkD,QAAUA,EAEjBD,EAAiBG,UAAY,GAAIxC,OACjCqC,EAAiBG,UAAUC,YAAcJ,EAEzCxD,EAAOD,QAAUyD,OAEXf,GAAG,SAAShB,EAAQzB,EAAOD,GACjC,GAAI8D,GAAQpC,EAAQ,GAEhBc,EAAa,SAASZ,EAASS,EAAOJ,GACxC,GAAI8B,GAAuBnC,EAAQS,GAC/B2B,EAAkBpC,CAEtB,IAAMS,IAAST,GAAf,CAIA,GAAIqC,GAAwB,SAAV5B,EAAmB,UAAYA,CAEjDT,GAAQS,GAAS,WACf,GAAI6B,MAAUC,MAAM5C,KAAK6C,WAErBlC,EAAM4B,EAAMO,SAASH,EAAM,KAC3B/B,GAAQE,MAAO4B,EAAaK,OAAQ,UAAWhB,OAAQc,UAAWF,GAExD,YAAV7B,EACE6B,EAAK,MAAO,IAEdhC,EACE,sBAAwB4B,EAAMO,SAASH,EAAKC,MAAM,GAAI,MAAQ,kBAChEhC,EAAKmB,MAAMc,UAAYF,EAAKC,MAAM,GAClClC,GAAYA,EAASC,EAAKC,IAG5BF,GAAYA,EAASC,EAAKC,GAIxB4B,GAGFQ,SAASX,UAAUY,MAAMjD,KAAKwC,EAAsBC,EAAiBE,KAK3EjE,GAAOD,SACLwC,WAAYA,KAGXiC,EAAI,IAAIC,GAAG,SAAShD,EAAQzB,EAAOD,IACtC,SAAWM,GA0CX,QAASqE,KACP,OAAQ,GAAIC,MAWd,QAASC,GAAqBC,EAAU7C,GACtC,MAAO8C,GAAW9C,GACd,SAASE,GACP,MAAOF,GAASE,EAAM2C,IAExB7C,EAMN,QAASxB,KACPD,KAAKwE,IAA8B,gBAATC,QAAqBA,KAAKC,WAEpD1E,KAAK2E,GAAgBC,EAAYC,GACjC7E,KAAK8E,GAAiBF,EAAYG,GAClC/E,KAAKgF,EAAyB,KAC9BhF,KAAKiF,EAAY,KACjBjF,KAAKkF,EAAe,KACpBlF,KAAKmF,EAAgB,KACrBnF,KAAKoF,EAAa,KAClBpF,KAAKqF,EAAiB,KACtBrF,KAAKsF,KACLtF,KAAKuF,GAEHC,QAASC,EAAQC,gBAAkBD,EAAQC,eAAeC,GAC1D7B,OAAQ,aACR8B,gBACAC,cACAC,iBACAC,gBACAC,QAAS,KACTC,qBAAqB,EACrBC,4BAA4B,EAC5BC,iBAAkB,EAElBC,aAAc,IACdC,gBAAiB,GACjBC,iBAAiB,EACjBC,YAAY,EACZC,WAAY,EACZC,iBAEFzG,KAAK0G,GACHC,OAAQ,OACRC,WAAW,EAKXC,eAAgBC,IAA2B,SAAW,IAExD9G,KAAK+G,EAAiB,EACtB/G,KAAKgH,GAAoB,EACzBhH,KAAKiH,EAAgCrG,MAAMyF,gBAG3CrG,KAAKkH,EAAmBzB,EAAQrE,YAChCpB,KAAKmH,KACLnH,KAAKoH,KACLpH,KAAKqH,EAAalD,IAClBnE,KAAKsH,KACLtH,KAAKuH,KACLvH,KAAKwH,EAAqB,KAE1BxH,KAAKyH,EAAYhC,EAAQiC,SACzB1H,KAAK2H,EAAY3H,KAAKyH,GAAazH,KAAKyH,EAAUG,KAClD5H,KAAK6H,GAGL,KAAK,GAAIlB,KAAU3G,MAAKkH,EACtBlH,KAAKmH,EAAwBR,GAAU3G,KAAKkH,EAAiBP,GA1HjE,GAAImB,GAAW5G,EAAQ,GACnBwD,EAAYxD,EAAQ,GACpB6G,EAAM7G,EAAQ,IACd+B,EAAmB/B,EAAQ,GAE3BoC,EAAQpC,EAAQ,GAChB8G,EAAU1E,EAAM0E,QAChBC,EAAW3E,EAAM2E,SACjBC,EAAgB5E,EAAM4E,cACtBC,EAAe7E,EAAM6E,aACrBvD,EAActB,EAAMsB,YACpBL,EAAajB,EAAMiB,WACnB6D,EAAW9E,EAAM8E,SACjBC,EAAU/E,EAAM+E,QAChBC,EAAgBhF,EAAMgF,cACtBC,EAAOjF,EAAMiF,KACbC,EAAclF,EAAMkF,YACpBC,EAAWnF,EAAMmF,SACjBC,EAAepF,EAAMoF,aACrBC,EAASrF,EAAMqF,OACfC,EAAatF,EAAMsF,WACnBC,EAAYvF,EAAMuF,UAClBC,EAAQxF,EAAMwF,MACdC,EAAmBzF,EAAMyF,iBACzBC,EAAkB1F,EAAM0F,gBACxBC,EAAmB3F,EAAM2F,iBACzBC,EAAW5F,EAAM4F,SACjBC,EAAO7F,EAAM6F,KACbC,EAAgB9F,EAAM8F,cACtBtC,EAAyBxD,EAAMwD,uBAC/BuC,EAA0B/F,EAAM+F,wBAChCC,EAAqBhG,EAAMgG,mBAC3BC,EAAWjG,EAAMiG,SAEjBxH,EAAoBb,EAAQ,GAAGc,WAE/BwH,EAAU,2CAA2CC,MAAM,KAC7DC,EAAa,gEAOXjE,EACgB,mBAAX5F,QACHA,OACkB,mBAAXC,GAAyBA,EAAyB,mBAATC,MAAuBA,QACzE8E,EAAYY,EAAQkE,SACpB5E,EAAaU,EAAQmE,SAmFzB3J,GAAMmD,WAKJyG,QAAS,SAETC,OAAO,EAEPhC,SAAUA,EASViC,OAAQ,SAASC,EAAKC,GACpB,GAAIlK,GAAOC,IAEX,IAAID,EAAKoF,EAEP,MADAnF,MAAKkK,EAAU,QAAS,4CACjBnK,CAET,KAAKiK,EAAK,MAAOjK,EAEjB,IAAIoK,GAAgBpK,EAAKwF,CAGrB0E,IACF1B,EAAK0B,EAAS,SAASG,EAAKC,GAEd,SAARD,GAA0B,UAARA,GAA2B,SAARA,EACvCrK,EAAKuF,EAAe8E,GAAOC,EAE3BF,EAAcC,GAAOC,IAK3BtK,EAAKuK,OAAON,GAIZG,EAAcvE,aAAapE,KAAK,qBAChC2I,EAAcvE,aAAapE,KAAK,iDAGhC2I,EAAcvE,aAAegD,EAAWuB,EAAcvE,cACtDuE,EAActE,aAAasE,EAActE,WAAW7E,QAChD4H,EAAWuB,EAActE,YAE7BsE,EAAcrE,gBAAgBqE,EAAcrE,cAAc9E,QACtD4H,EAAWuB,EAAcrE,eAE7BqE,EAAcpE,aAAe6C,EAAWuB,EAAcpE,cACtDoE,EAAcI,eAAiBC,KAAKC,IAClC,EACAD,KAAKE,IAAIP,EAAcI,gBAAkB,IAAK,KAGhD,IAAII,IACFC,KAAK,EACLxJ,SAAS,EACTyJ,KAAK,EACLnD,UAAU,EACVoD,QAAQ,GAGNxE,EAAkB6D,EAAc7D,eACM,wBAAnCyE,SAAShK,KAAKuF,GACnBA,EAAkBkC,EAAYmC,EAAwBrE,GAC7CA,KAAoB,IAC7BA,EAAkBqE,GAEpBR,EAAc7D,gBAAkBA,CAEhC,IAAI0E,IACFC,UAAU,GAGR1E,EAAa4D,EAAc5D,UAW/B,OAVqC,uBAA9BwE,SAAShK,KAAKwF,GACnBA,EAAaiC,EAAYwC,EAAoBzE,GACpCA,KAAe,IACxBA,EAAayE,GAEfb,EAAc5D,WAAaA,EAE3BuB,EAAS7B,sBAAwBkE,EAAclE,oBAGxClG,GAWTmL,QAAS,WACP,GAAInL,GAAOC,IAyBX,OAxBID,GAAKoL,YAAcpL,EAAKiH,IAC1Bc,EAASsD,OAAOC,UAAU,WACxBtL,EAAKuL,EAAwBtH,MAAMjE,EAAM6D,aAGvC7D,EAAKwF,EAAeW,4BACtBnG,EAAKwL,IAGPxL,EAAKyL,IAEDzL,EAAKwF,EAAegB,YAAcxG,EAAKwF,EAAegB,WAAW0E,UACnElL,EAAK0L,IAGH1L,EAAKwF,EAAee,iBAAiBvG,EAAK2L,IAG9C3L,EAAK4L,IAEL5L,EAAKiH,GAAoB,GAG3BpG,MAAMyF,gBAAkBtG,EAAKwF,EAAec,gBACrCrG,MAQTsK,OAAQ,SAASN,GACf,GAAIjK,GAAOC,KACT4L,EAAM7L,EAAK8L,EAAU7B,GACrB8B,EAAYF,EAAIG,KAAKC,YAAY,KACjCD,EAAOH,EAAIG,KAAKE,OAAO,EAAGH,EAE5B/L,GAAKmM,EAAOlC,EACZjK,EAAKqF,EAAawG,EAAIO,KACtBpM,EAAKqM,EAAgBR,EAAIS,MAAQT,EAAIS,KAAKJ,OAAO,GACjDlM,EAAKsF,EAAiBuG,EAAIG,KAAKE,OAAOH,EAAY,GAElD/L,EAAKoF,EAAgBpF,EAAKuM,EAAiBV,GAE3C7L,EAAKwM,EACHxM,EAAKoF,EAAgB,IAAM4G,EAAO,OAAShM,EAAKsF,EAAiB,UAInErF,KAAK6H,KAWP9E,QAAS,SAASkH,EAASuC,EAAM9I,GAO/B,MANIa,GAAW0F,KACbvG,EAAO8I,MACPA,EAAOvC,EACPA,EAAUwC,QAGLzM,KAAK0M,KAAKzC,EAASuC,GAAMxI,MAAMhE,KAAM0D,IAW9CgJ,KAAM,SAASzC,EAASuC,EAAMG,GAqC5B,QAASC,KACP,GAAIlJ,MACF/C,EAAIiD,UAAU5C,OACd6L,GAAQ5C,GAAYA,GAAWA,EAAQ4C,QAAS,CAQlD,KANIF,GAAWpI,EAAWoI,IACxBA,EAAQ3I,MAAMhE,KAAM4D,WAKfjD,KAAK+C,EAAK/C,GAAKkM,EAAO9M,EAAK2M,KAAKzC,EAASrG,UAAUjD,IAAMiD,UAAUjD,EAE1E,KAKE,MAAO6L,GAAKxI,MAAMhE,KAAM0D,GACxB,MAAOxD,GAGP,KAFAH,GAAK+M,IACL/M,EAAK2C,iBAAiBxC,EAAG+J,GACnB/J,GA1DV,GAAIH,GAAOC,IAGX,IAAI4E,EAAY4H,KAAUjI,EAAW0F,GACnC,MAAOA,EAWT,IAPI1F,EAAW0F,KACbuC,EAAOvC,EACPA,EAAUwC,SAKPlI,EAAWiI,GACd,MAAOA,EAIT,KACE,GAAIA,EAAKO,EACP,MAAOP,EAIT,IAAIA,EAAKQ,EACP,MAAOR,GAAKQ,EAEd,MAAO9M,GAIP,MAAOsM,GA8BT,IAAK,GAAIS,KAAYT,GACf7D,EAAO6D,EAAMS,KACfL,EAAQK,GAAYT,EAAKS,GAW7B,OARAL,GAAQxJ,UAAYoJ,EAAKpJ,UAEzBoJ,EAAKQ,EAAoBJ,EAGzBA,EAAQG,GAAY,EACpBH,EAAQM,EAAWV,EAEZI,GAQTO,UAAW,WAWT,MAVArF,GAASsD,OAAO+B,YAEhBnN,KAAKoN,IACLpN,KAAKqN,IACLrN,KAAKsN,IACLtN,KAAKuN,IAEL3M,MAAMyF,gBAAkBrG,KAAKiH,EAC7BjH,KAAKgH,GAAoB,EAElBhH,MAWTwN,EAA0B,SAASC,GACjCzN,KAAKkK,EAAU,QAAS,4CAA6CuD,GACrEzN,KAAK0C,iBAAiB+K,EAAM5K,QAC1BC,OACE4K,2BAA2B,MAUjCC,EAAgC,WAI9B,MAHA3N,MAAK4N,EAA2B5N,KAAK4N,EAAyBC,KAAK7N,MACnEyF,EAAQqI,kBACNrI,EAAQqI,iBAAiB,qBAAsB9N,KAAK4N,GAC/C5N,MAQT+N,EAAgC,WAG9B,MAFAtI,GAAQuI,qBACNvI,EAAQuI,oBAAoB,qBAAsBhO,KAAK4N,GAClD5N,MAUT0C,iBAAkB,SAASuL,EAAIhE,GAG7B,GAFAA,EAAUzB,GAAa0F,eAAgB,GAAIjE,EAAUA,MAEjD9B,EAAa8F,IAAOA,EAAGxL,MAEzBwL,EAAKA,EAAGxL,UACH,IAAIuF,EAAQiG,GAEjBA,EAAKA,MACA,CAAA,IAAI/F,EAAc+F,GAYvB,MAAOjO,MAAK4B,eACVqM,EACAzF,EAAYyB,GACVkE,YAAY,EACZD,eAAgBjE,EAAQiE,eAAiB,IAZ7CjE,GAAUjK,KAAKoO,EAA2CnE,EAASgE,GACnEA,EAAK,GAAIrN,OAAMqJ,EAAQ/G,SAiBzBlD,KAAKgF,EAAyBiJ,CAO9B,KACE,GAAII,GAAQvG,EAASwG,kBAAkBL,EACvCjO,MAAKuO,EAAiBF,EAAOpE,GAC7B,MAAOuE,GACP,GAAIP,IAAOO,EACT,KAAMA,GAIV,MAAOxO,OAGTyO,EAA4C,SAASC,EAAgBT,GACnE,GAAIU,GAASC,OAAOC,KAAKZ,GAAIa,OACzB7E,EAAUzB,EAAYkG,GACxBxL,QACE,2CAA6CmG,EAAwBsF,GACvEI,aAAchH,EAAI4G,IAClB7L,MAAO4L,EAAe5L,WAIxB,OAFAmH,GAAQnH,MAAMkM,EAAiB1F,EAAmB2E,GAE3ChE,GAUTrI,eAAgB,SAASF,EAAKuI,GAI5B,IACIjK,KAAKuF,EAAeK,aAAaqJ,OACnCjP,KAAKuF,EAAeK,aAAaqJ,KAAKvN,GAFxC,CAOAuI,EAAUA,MACVvI,GAAY,EAEZ,IAOIuM,GAPAtM,EAAO6G,GAEPtF,QAASxB,GAEXuI,EAQF,KACE,KAAM,IAAIrJ,OAAMc,GAChB,MAAO8M,GACPP,EAAKO,EAIPP,EAAG9K,KAAO,IACV,IAAIkL,GAAQvG,EAASwG,kBAAkBL,GAGnCiB,EAAc7G,EAAQgG,EAAMA,QAAUA,EAAMA,MAAM,EAKlDa,IAAoC,2BAArBA,EAAY1C,OAC7B0C,EAAcb,EAAMA,MAAM,GAG5B,IAAIc,GAAWD,GAAeA,EAAYE,KAAQ,EAElD,MACIpP,KAAKuF,EAAeM,WAAWoJ,OACjCjP,KAAKuF,EAAeM,WAAWoJ,KAAKE,OAMlCnP,KAAKuF,EAAeO,cAAcmJ,MACnCjP,KAAKuF,EAAeO,cAAcmJ,KAAKE,IAF1C,CAOA,GAAInP,KAAKuF,EAAe4I,YAAelE,GAAWA,EAAQkE,WAAa,CAErExM,EAAKoN,YAAkC,MAApBpN,EAAKoN,YAAsBrN,EAAMC,EAAKoN,YAEzD9E,EAAUzB,GAEN0F,eAAgB,GAElBjE,GAMFA,EAAQiE,gBAAkB,CAE1B,IAAImB,GAASrP,KAAKsP,EAAejB,EAAOpE,EACxCtI,GAAKwM,YAEHkB,OAAQA,EAAOE,WAcnB,MATI5N,GAAKoN,cACPpN,EAAKoN,YAAc1G,EAAQ1G,EAAKoN,aAC5BpN,EAAKoN,aACJpN,EAAKoN,cAIZ/O,KAAKwP,EAAM7N,GAEJ3B,QAGTyP,kBAAmB,SAASC,GAC1B,GAAIC,GAAQnH,GAERoH,UAAWzL,IAAQ,KAErBuL,EAGF,IAAInL,EAAWvE,KAAKuF,EAAesK,oBAAqB,CACtD,GAAIC,GAAS9P,KAAKuF,EAAesK,mBAAmBF,EAEpD,IAAI1H,EAAS6H,KAAYxH,EAAcwH,GACrCH,EAAQG,MACH,IAAIA,KAAW,EACpB,MAAO9P,MAQX,MAJAA,MAAKuH,EAAa/F,KAAKmO,GACnB3P,KAAKuH,EAAavG,OAAShB,KAAKuF,EAAegF,gBACjDvK,KAAKuH,EAAawI,QAEb/P,MAGTiC,UAAW,SAAS+N,GAClB,GAAIC,MAAgBtM,MAAM5C,KAAK6C,UAAW,EAO1C,OALA5D,MAAKoH,EAAS5F,MAAMwO,EAAQC,IACxBjQ,KAAKgH,GACPhH,KAAK2L,IAGA3L,MASTkQ,eAAgB,SAAS/D,GAIvB,MAFAnM,MAAKsF,EAAe6G,KAAOA,EAEpBnM,MASTmQ,gBAAiB,SAASrN,GAGxB,MAFA9C,MAAKoQ,EAAc,QAAStN,GAErB9C,MASTqQ,eAAgB,SAASC,GAGvB,MAFAtQ,MAAKoQ,EAAc,OAAQE,GAEpBtQ,MAQTuQ,aAAc,WAGZ,MAFAvQ,MAAKsF,KAEEtF,MAQTwQ,WAAY,WAEV,MAAO/L,MAAKgM,MAAM/L,EAAU1E,KAAKsF,KASnCoL,eAAgB,SAASC,GAGvB,MAFA3Q,MAAKuF,EAAeoL,YAAcA,EAE3B3Q,MAST4Q,WAAY,SAASpL,GAGnB,MAFAxF,MAAKuF,EAAeC,QAAUA,EAEvBxF,MAUT6Q,gBAAiB,SAASpP,GACxB,GAAI6C,GAAWtE,KAAKuF,EAAeuL,YAEnC,OADA9Q,MAAKuF,EAAeuL,aAAezM,EAAqBC,EAAU7C,GAC3DzB,MAUT+Q,sBAAuB,SAAStP,GAC9B,GAAI6C,GAAWtE,KAAKuF,EAAesK,kBAEnC,OADA7P,MAAKuF,EAAesK,mBAAqBxL,EAAqBC,EAAU7C,GACjEzB,MAUTgR,sBAAuB,SAASvP,GAC9B,GAAI6C,GAAWtE,KAAKuF,EAAe0L,kBAEnC,OADAjR,MAAKuF,EAAe0L,mBAAqB5M,EAAqBC,EAAU7C,GACjEzB,MAYTkR,aAAc,SAASC,GAGrB,MAFAnR,MAAKuF,EAAe4L,UAAYA,EAEzBnR,MAQToR,cAAe,WACb,MAAOpR,MAAKgF,GAQdqM,YAAa,WACX,MAAOrR,MAAKkF,GAQdiG,QAAS,WACP,QAAKnL,KAAKwE,MACLxE,KAAKmF,IACHnF,KAAKsR,0BACRtR,KAAKsR,yBAA0B,EAC/BtR,KAAKkK,EAAU,QAAS,2CAEnB,KAKXqH,UAAW,WAIT,GAAIC,GAAc/L,EAAQ+L,WACtBA,IACFxR,KAAK+J,OAAOyH,EAAYxH,IAAKwH,EAAYzH,QAAQmB,WAIrDuG,iBAAkB,SAASxH,GACzB,GACGpF,EADH,CAKAoF,EAAUA,KAEV,IAAIoH,GAAcpH,EAAQyH,SAAW1R,KAAKqR,aAC1C,KAAKA,EACH,KAAM,IAAIpO,GAAiB,kBAG7B,IAAI+G,GAAMC,EAAQD,KAAOhK,KAAKkM,CAC9B,KAAKlC,EACH,KAAM,IAAI/G,GAAiB,cAG7B,IAAI0O,GAASC,mBACTC,EAAK,EACTA,IAAM,YAAcF,EAAON,GAC3BQ,GAAM,QAAUF,EAAO3H,EAEvB,IAAImC,GAAOlC,EAAQkC,MAAQnM,KAAKsF,EAAe6G,IAC3CA,KACEA,EAAKhJ,OAAM0O,GAAM,SAAWF,EAAOxF,EAAKhJ,OACxCgJ,EAAK2F,QAAOD,GAAM,UAAYF,EAAOxF,EAAK2F,QAGhD,IAAIC,GAAe/R,KAAKsM,EAAiBtM,KAAK6L,EAAU7B,IAEpDgI,EAASnN,EAAUoN,cAAc,SACrCD,GAAOE,OAAQ,EACfF,EAAOG,IAAMJ,EAAe,yBAA2BF,GACtDhN,EAAUuN,MAAQvN,EAAUwN,MAAMC,YAAYN,KAIjDO,EAAoB,WAClB,GAAIxS,GAAOC,IACXA,MAAK+G,GAAkB,EACvByL,WAAW,WAETzS,EAAKgH,GAAkB,KAI3B0L,EAAe,SAASC,EAAWzI,GAEjC,GAAI0I,GAAKvI,CAET,IAAKpK,KAAK2E,EAAV,CAEAsF,EAAUA,MAEVyI,EAAY,QAAUA,EAAUzG,OAAO,EAAG,GAAG2G,cAAgBF,EAAUzG,OAAO,GAE1EpH,EAAUgO,aACZF,EAAM9N,EAAUgO,YAAY,cAC5BF,EAAIG,UAAUJ,GAAW,GAAM,KAE/BC,EAAM9N,EAAUkO,oBAChBJ,EAAID,UAAYA,EAGlB,KAAKtI,IAAOH,GACNtB,EAAOsB,EAASG,KAClBuI,EAAIvI,GAAOH,EAAQG,GAGvB,IAAIvF,EAAUgO,YAEZhO,EAAUmO,cAAcL,OAIxB,KACE9N,EAAUoO,UAAU,KAAON,EAAID,UAAUQ,cAAeP,GACxD,MAAOzS,OAYbiT,EAAyB,SAASC,GAChC,GAAIrT,GAAOC,IACX,OAAO,UAAS2S,GASd,GALA5S,EAAKsT,GAAmB,KAKpBtT,EAAKyH,IAAuBmL,EAAhC,CAEA5S,EAAKyH,EAAqBmL,CAM1B,IAAIW,EACJ,KACEA,EAASvK,EAAiB4J,EAAIW,QAC9B,MAAOpT,GACPoT,EAAS,YAGXvT,EAAK0P,mBACH8D,SAAU,MAAQH,EAClBlQ,QAASoQ,OAUfE,GAAuB,WACrB,GAAIzT,GAAOC,KACTyT,EAAmB,GAKrB,OAAO,UAASd,GACd,GAAIW,EACJ,KACEA,EAASX,EAAIW,OACb,MAAOpT,GAGP,OAEF,GAAIwT,GAAUJ,GAAUA,EAAOI,OAK/B,IACGA,IACY,UAAZA,GAAmC,aAAZA,GAA2BJ,EAAOK,mBAF5D,CAQA,GAAIC,GAAU7T,EAAKsT,EACdO,IACH7T,EAAK8T,EAAwB,SAASlB,GAExCmB,aAAaF,GACb7T,EAAKsT,GAAmBb,WAAW,WACjCzS,EAAKsT,GAAmB,MACvBI,MAUPM,GAAmB,SAASC,EAAMC,GAChC,GAAIC,GAAYhL,EAASlJ,KAAKyH,EAAUG,MACpCuM,EAAWjL,EAAS+K,GACpBG,EAAalL,EAAS8K,EAK1BhU,MAAK2H,EAAYsM,EAIbC,EAAUG,WAAaF,EAASE,UAAYH,EAAUI,OAASH,EAASG,OAC1EL,EAAKE,EAASI,UACZL,EAAUG,WAAaD,EAAWC,UAAYH,EAAUI,OAASF,EAAWE,OAC9EN,EAAOI,EAAWG,UAEpBvU,KAAKyP,mBACH8D,SAAU,aACV5R,MACEsS,GAAIA,EACJD,KAAMA,MAKZQ,EAAwB,WACtB,GAAIzU,GAAOC,IACXD,GAAK0U,GAA4B1Q,SAASX,UAAU2H,SAEpDhH,SAASX,UAAU2H,SAAW,WAC5B,MAAoB,kBAAT/K,OAAuBA,KAAK+M,EAC9BhN,EAAK0U,GAA0BzQ,MAAMhE,KAAKkN,EAAUtJ,WAEtD7D,EAAK0U,GAA0BzQ,MAAMhE,KAAM4D,aAItD8Q,EAA0B,WACpB1U,KAAKyU,KAEP1Q,SAASX,UAAU2H,SAAW/K,KAAKyU,KAQvCE,EAAqB,WAKnB,QAASC,GAAWC,GAClB,MAAO,UAASC,EAAI3U,GAKlB,IAAK,GADDuD,GAAO,GAAIqR,OAAMnR,UAAU5C,QACtBL,EAAI,EAAGA,EAAI+C,EAAK1C,SAAUL,EACjC+C,EAAK/C,GAAKiD,UAAUjD,EAEtB,IAAIqU,GAAmBtR,EAAK,EAQ5B,OAPIa,GAAWyQ,KACbtR,EAAK,GAAK3D,EAAK2M,KAAKsI,IAMlBH,EAAK7Q,MACA6Q,EAAK7Q,MAAMhE,KAAM0D,GAEjBmR,EAAKnR,EAAK,GAAIA,EAAK,KAOhC,QAASuR,GAAgBnV,GACvB,GAAIoV,GAAQzP,EAAQ3F,IAAW2F,EAAQ3F,GAAQsD,SAC3C8R,IAASA,EAAMC,gBAAkBD,EAAMC,eAAe,sBACxDhM,EACE+L,EACA,mBACA,SAASL,GACP,MAAO,UAASzB,EAAS0B,EAAIM,EAASC,GAEpC,IACMP,GAAMA,EAAGQ,cACXR,EAAGQ,YAAcvV,EAAK2M,KAAKoI,EAAGQ,cAEhC,MAAOC,IAMT,GAAIC,GAAQC,EAAcC,CA6B1B,OA1BEpP,IACAA,EAAgBuE,MACJ,gBAAX/K,GAAuC,SAAXA,KAI7B2V,EAAe1V,EAAK8T,EAAwB,SAC5C6B,EAAkB3V,EAAK4V,KACvBH,EAAS,SAAS7C,GAIhB,GAAKA,EAAL,CAEA,GAAID,EACJ,KACEA,EAAYC,EAAIiD,KAChB,MAAO1V,GAGP,OAEF,MAAkB,UAAdwS,EAA8B+C,EAAa9C,GACxB,aAAdD,EAAiCgD,EAAgB/C,GAArD,UAGFkC,EAAK9T,KACVf,KACAoT,EACArT,EAAK2M,KAAKoI,EAAIrI,OAAW+I,GACzBJ,EACAC,KAINQ,GAEF1M,EACE+L,EACA,sBACA,SAASL,GACP,MAAO,UAASlC,EAAKmC,EAAIM,EAASC,GAChC,IACEP,EAAKA,IAAOA,EAAG9H,EAAoB8H,EAAG9H,EAAoB8H,GAC1D,MAAO5U,IAGT,MAAO2U,GAAK9T,KAAKf,KAAM2S,EAAKmC,EAAIM,EAASC,KAG7CQ,IAvGN,GAAI9V,GAAOC,KAEP6V,EAAkB9V,EAAKuH,EA2BvBhB,EAAkBtG,KAAKuF,EAAee,eA+E1C6C,GAAK1D,EAAS,aAAcmP,EAAYiB,GACxC1M,EAAK1D,EAAS,cAAemP,EAAYiB,GACrCpQ,EAAQqQ,uBACV3M,EACE1D,EACA,wBACA,SAASoP,GACP,MAAO,UAASkB,GACd,MAAOlB,GAAK9U,EAAK2M,KAAKqJ,MAG1BF,EAqCJ,KAAK,GA/BDG,IACF,cACA,SACA,OACA,mBACA,iBACA,oBACA,kBACA,cACA,aACA,qBACA,cACA,aACA,iBACA,eACA,kBACA,cACA,cACA,eACA,qBACA,SACA,YACA,eACA,gBACA,YACA,kBACA,SACA,iBACA,4BACA,wBAEOrV,EAAI,EAAGA,EAAIqV,EAAahV,OAAQL,IACvCsU,EAAgBe,EAAarV,KAajCsV,EAAwB,WAMtB,QAASC,GAASC,EAAMvL,GAClBuL,IAAQvL,IAAOrG,EAAWqG,EAAIuL,KAChChN,EAAKyB,EAAKuL,EAAM,SAAStB,GACvB,MAAO9U,GAAK2M,KAAKmI,KARvB,GAAI9U,GAAOC,KACPsG,EAAkBtG,KAAKuF,EAAee,gBAEtCuP,EAAkB9V,EAAKuH,CAU3B,IAAIhB,EAAgBsE,KAAO,kBAAoBnF,GAAS,CACtD,GAAI2Q,GAAW3Q,EAAQ4Q,gBAAkB5Q,EAAQ4Q,eAAejT,SAChE+F,GACEiN,EACA,OACA,SAASE,GACP,MAAO,UAAS3P,EAAQyI,GAYtB,MARIhH,GAASgH,IAAQA,EAAImH,QAAQxW,EAAKqF,UACpCpF,KAAKwW,IACH7P,OAAQA,EACRyI,IAAKA,EACLqH,YAAa,OAIVH,EAAStS,MAAMhE,KAAM4D,aAGhCiS,GAGF1M,EACEiN,EACA,OACA,SAASM,GACP,MAAO,YAIL,QAASC,KACP,GAAI/L,EAAI4L,IAAkC,IAAnB5L,EAAIgM,WAAkB,CAC3C,IAGEhM,EAAI4L,GAAYC,YAAc7L,EAAIiM,OAClC,MAAO3W,IAITH,EAAK0P,mBACHmG,KAAM,OACNrC,SAAU,MACV5R,KAAMiJ,EAAI4L,MAMhB,IAAK,GArBD5L,GAAM5K,KAoBN8W,GAAS,SAAU,UAAW,cACzBC,EAAI,EAAGA,EAAID,EAAM9V,OAAQ+V,IAChCb,EAASY,EAAMC,GAAInM,EAiBrB,OAdI,sBAAwBA,IAAOrG,EAAWqG,EAAIoM,oBAChD7N,EACEyB,EACA,qBACA,SAASiK,GACP,MAAO9U,GAAK2M,KAAKmI,EAAMpI,OAAWkK,KAMtC/L,EAAIoM,mBAAqBL,EAGpBD,EAAS1S,MAAMhE,KAAM4D,aAGhCiS,GAIAvP,EAAgBsE,KAAOxB,KACzBD,EACE1D,EACA,QACA,SAASwR,GACP,MAAO,YAKL,IAAK,GADDvT,GAAO,GAAIqR,OAAMnR,UAAU5C,QACtBL,EAAI,EAAGA,EAAI+C,EAAK1C,SAAUL,EACjC+C,EAAK/C,GAAKiD,UAAUjD,EAGtB,IAEIyO,GAFA8H,EAAaxT,EAAK,GAClBiD,EAAS,KAeb,IAZ0B,gBAAfuQ,GACT9H,EAAM8H,EACG,WAAazR,IAAWyR,YAAsBzR,GAAQ0R,SAC/D/H,EAAM8H,EAAW9H,IACb8H,EAAWvQ,SACbA,EAASuQ,EAAWvQ,SAGtByI,EAAM,GAAK8H,EAIT9H,EAAImH,QAAQxW,EAAKqF,QACnB,MAAO6R,GAAUjT,MAAMhE,KAAM0D,EAG3BA,GAAK,IAAMA,EAAK,GAAGiD,SACrBA,EAASjD,EAAK,GAAGiD,OAGnB,IAAIyQ,IACFzQ,OAAQA,EACRyI,IAAKA,EACLqH,YAAa,KAGf,OAAOQ,GACJjT,MAAMhE,KAAM0D,GACZ2T,KAAK,SAASC,GASb,MARAF,GAAUX,YAAca,EAAST,OAEjC9W,EAAK0P,mBACHmG,KAAM,OACNrC,SAAU,QACV5R,KAAMyV,IAGDE,IAER,SAAS,SAAS/B,GASjB,KAPAxV,GAAK0P,mBACHmG,KAAM,OACNrC,SAAU,QACV5R,KAAMyV,EACNvV,MAAO,UAGH0T,MAIdM,GAMAvP,EAAgBuE,KAAO7K,KAAK2E,IAC1BE,EAAUiJ,kBACZjJ,EAAUiJ,iBAAiB,QAAS/N,EAAK8T,EAAwB,UAAU,GAC3EhP,EAAUiJ,iBAAiB,WAAY/N,EAAK4V,MAAyB,IAC5D9Q,EAAU0S,cAEnB1S,EAAU0S,YAAY,UAAWxX,EAAK8T,EAAwB,UAC9DhP,EAAU0S,YAAY,aAAcxX,EAAK4V,OAQ7C,IAAI6B,GAAS/R,EAAQ+R,OACjBC,EAAsBD,GAAUA,EAAOE,KAAOF,EAAOE,IAAIC,QACzDC,GACDH,GACDhS,EAAQoS,SACRA,QAAQC,WACRD,QAAQE,YACV,IAAIzR,EAAgBoB,UAAYkQ,EAAwB,CAEtD,GAAII,GAAgBvS,EAAQwS,UAC5BxS,GAAQwS,WAAa,WACnB,GAAIC,GAAcnY,EAAK0H,EAAUG,IAGjC,IAFA7H,EAAKoY,GAAkBpY,EAAK4H,EAAWuQ,GAEnCF,EACF,MAAOA,GAAchU,MAAMhE,KAAM4D,WAIrC,IAAIwU,GAA6B,SAASC,GAGxC,MAAO,YACL,GAAIjJ,GAAMxL,UAAU5C,OAAS,EAAI4C,UAAU,GAAK6I,MAQhD,OALI2C,IAEFrP,EAAKoY,GAAkBpY,EAAK4H,EAAWyH,EAAM,IAGxCiJ,EAAiBrU,MAAMhE,KAAM4D,YAIxCuF,GAAK0O,QAAS,YAAaO,EAA4BvC,GACvD1M,EAAK0O,QAAS,eAAgBO,EAA4BvC,GAG5D,GAAIvP,EAAgBlF,SAAW,WAAaqE,IAAWrE,QAAQkX,IAAK,CAElE,GAAIC,GAAwB,SAAS7W,EAAKC,GACxC5B,EAAK0P,mBACHvM,QAASxB,EACTG,MAAOF,EAAKE,MACZ0R,SAAU,YAIdhL,IAAM,QAAS,OAAQ,OAAQ,QAAS,OAAQ,SAAS4K,EAAGtR,GAC1DE,EAAkBX,QAASS,EAAO0W,OAKxCC,EAAkB,WAGhB,IADA,GAAIC,GACGzY,KAAKsH,EAAiBtG,QAAQ,CACnCyX,EAAUzY,KAAKsH,EAAiByI,OAEhC,IAAIL,GAAM+I,EAAQ,GAChBtV,EAAOsV,EAAQ,GACf5D,EAAO4D,EAAQ,EAEjB/I,GAAIvM,GAAQ0R,IAIhB6D,EAAiB,WAEf,IAAK,GAAI/R,KAAU3G,MAAKmH,EACtBnH,KAAKkH,EAAiBP,GAAU3G,KAAKmH,EAAwBR,IAIjEgS,EAAe,WACb,GAAI5Y,GAAOC,IAGXuI,GAAKvI,KAAKoH,EAAU,SAAS+L,EAAGnD,GAC9B,GAAI4I,GAAY5I,EAAO,GACnBtM,EAAOsM,EAAO,EAClB4I,GAAU5U,MAAMjE,GAAOA,GAAM8Y,OAAOnV,OAIxCoV,EAAW,SAASC,GAClB,GAAIC,GAAItP,EAAWuP,KAAKF,GACtB/O,KACArJ,EAAI,CAEN,KACE,KAAOA,KAAKqJ,EAAIR,EAAQ7I,IAAMqY,EAAErY,IAAM,GACtC,MAAOT,GACP,KAAM,IAAI+C,GAAiB,gBAAkB8V,GAG/C,GAAI/O,EAAIqC,OAASrM,KAAKuF,EAAe2T,eACnC,KAAM,IAAIjW,GACR,iFAIJ,OAAO+G,IAGTmP,EAAkB,SAASvN,GAEzB,GAAImG,GAAe,KAAOnG,EAAI0I,MAAQ1I,EAAIwN,KAAO,IAAMxN,EAAIwN,KAAO,GAKlE,OAHIxN,GAAIyI,WACNtC,EAAenG,EAAIyI,SAAW,IAAMtC,GAE/BA,GAGTsH,EAAyB,WAElBrZ,KAAK+G,GACR/G,KAAKuO,EAAiBvK,MAAMhE,KAAM4D,YAItC0V,EAAkB,SAASC,EAAWtP,GACpC,GAAIoF,GAASrP,KAAKsP,EAAeiK,EAAWtP,EAE5CjK,MAAKwZ,EAAc,UACjBD,UAAWA,EACXtP,QAASA,IAGXjK,KAAKyZ,GACHF,EAAUpW,KACVoW,EAAUrW,QACVqW,EAAUnK,IACVmK,EAAUG,OACVrK,EACApF,IAIJ0P,EAAgB,SAASJ,EAAWtP,GAClC,GAAIlK,GAAOC,KACPqP,IACJ,IAAIkK,EAAUlL,OAASkL,EAAUlL,MAAMrN,SACrCuH,EAAKgR,EAAUlL,MAAO,SAAS1N,EAAG0N,GAChC,GAAIuL,GAAQ7Z,EAAK8Z,GAAgBxL,EAAOkL,EAAUnK,IAC9CwK,IACFvK,EAAO7N,KAAKoY,KAKZ3P,GAAWA,EAAQiE,gBACrB,IAAK,GAAI6I,GAAI,EAAGA,EAAI9M,EAAQiE,gBAAkB6I,EAAI1H,EAAOrO,OAAQ+V,IAC/D1H,EAAO0H,GAAG+C,QAAS,CAKzB,OADAzK,GAASA,EAAO1L,MAAM,EAAG3D,KAAKuF,EAAec,kBAI/C0T,GAAiB,SAASH,EAAOI,GAE/B,GAAIC,IACFC,SAAUN,EAAMxK,IAChBsK,OAAQE,EAAMO,KACdC,MAAOR,EAAMS,OACbC,WAAUV,EAAMpN,MAAQ,IAuB1B,OAfKoN,GAAMxK,MACT6K,EAAWC,SAAWF,GAGxBC,EAAWH,SAGN9Z,KAAKuF,EAAeQ,aAAakJ,OACjCjP,KAAKuF,EAAeQ,aAAakJ,KAAKgL,EAAWC,WAEpD,qBAAqBjL,KAAKgL,EAAW,cAErC,qBAAqBhL,KAAKgL,EAAWC,WAGhCD,GAGTM,GAAmB,SAAS3E,EAAM1S,EAASiM,EAASuK,EAAQrK,EAAQpF,GAClE,GAAIuQ,IAAmB5E,EAAOA,EAAO,KAAO,KAAO1S,GAAW,GAC9D,KACIlD,KAAKuF,EAAeK,aAAaqJ,OAClCjP,KAAKuF,EAAeK,aAAaqJ,KAAK/L,KACrClD,KAAKuF,EAAeK,aAAaqJ,KAAKuL,GAH1C,CAQA,GAAIrM,EAoBJ,IAlBIkB,GAAUA,EAAOrO,QACnBmO,EAAUE,EAAO,GAAG6K,UAAY/K,EAGhCE,EAAOE,UACPpB,GAAckB,OAAQA,IACbF,IACThB,GACEkB,SAEI6K,SAAU/K,EACVuK,OAAQA,EACRI,QAAQ,QAOZ9Z,KAAKuF,EAAeM,WAAWoJ,OACjCjP,KAAKuF,EAAeM,WAAWoJ,KAAKE,OAMlCnP,KAAKuF,EAAeO,cAAcmJ,MACnCjP,KAAKuF,EAAeO,cAAcmJ,KAAKE,IAF1C,CAOA,GAAIxN,GAAO6G,GAGPiS,WACEC,SAEI9E,KAAMA,EACNvL,MAAOnH,EACPiL,WAAYA,KAIlBwM,QAASxL,GAEXlF,EAIFjK,MAAKwP,EAAM7N,MAGbiZ,GAAa,SAASjZ,GAGpB,GAAI8I,GAAMzK,KAAKuF,EAAeY,gBAI9B,IAHIxE,EAAKuB,UACPvB,EAAKuB,QAAUuF,EAAS9G,EAAKuB,QAASuH,IAEpC9I,EAAK8Y,UAAW,CAClB,GAAIA,GAAY9Y,EAAK8Y,UAAUC,OAAO,EACtCD,GAAUpQ,MAAQ5B,EAASgS,EAAUpQ,MAAOI,GAG9C,GAAIoQ,GAAUlZ,EAAKkZ,OAanB,OAZIA,KACEA,EAAQzL,MACVyL,EAAQzL,IAAM3G,EAASoS,EAAQzL,IAAKpP,KAAKuF,EAAea,eAEtDyU,EAAQC,UACVD,EAAQC,QAAUrS,EAASoS,EAAQC,QAAS9a,KAAKuF,EAAea,gBAIhEzE,EAAKoZ,aAAepZ,EAAKoZ,YAAYL,QACvC1a,KAAKgb,GAAiBrZ,EAAKoZ,aAEtBpZ,GAMTsZ,GAAkB,SAASF,GAQzB,IAAK,GAJHG,GACAvL,EACAhO,EAHEwZ,GAAY,KAAM,OAAQ,OAKrBxa,EAAI,EAAGA,EAAIoa,EAAYL,OAAO1Z,SAAUL,EAE/C,GADAgP,EAAQoL,EAAYL,OAAO/Z,GAExBgP,EAAMwF,eAAe,SACrBlN,EAAS0H,EAAMhO,QAChB+G,EAAaiH,EAAMhO,MAHrB,CAOAA,EAAO6G,KAAgBmH,EAAMhO,KAC7B,KAAK,GAAIoV,GAAI,EAAGA,EAAIoE,EAASna,SAAU+V,EACrCmE,EAAUC,EAASpE,GACfpV,EAAKwT,eAAe+F,IAAYvZ,EAAKuZ,KACvCvZ,EAAKuZ,GAAWzS,EAAS9G,EAAKuZ,GAAUlb,KAAKuF,EAAea,cAGhE2U,GAAYL,OAAO/Z,GAAGgB,KAAOA,IAIjCyZ,GAAc,WACZ,GAAKpb,KAAK8E,GAAkB9E,KAAK2E,EAAjC,CACA,GAAI0W,KAkBJ,OAhBIrb,MAAK8E,GAAiBC,EAAWuW,YACnCD,EAASrV,SACPuV,aAAc3R,UAAU0R,YAKxB7V,EAAQiC,UAAYjC,EAAQiC,SAASE,OACvCyT,EAASjM,IAAM3J,EAAQiC,SAASE,MAG9B5H,KAAK2E,GAAgBE,EAAU2W,WAC5BH,EAASrV,UAASqV,EAASrV,YAChCqV,EAASrV,QAAQ8U,QAAUjW,EAAU2W,UAGhCH,IAGTI,EAAe,WACbzb,KAAK0b,GAAmB,EACxB1b,KAAK2b,GAAgB,MAGvBC,GAAgB,WACd,MAAO5b,MAAK0b,IAAoBvX,IAAQnE,KAAK2b,GAAgB3b,KAAK0b,IAYpEG,GAAe,SAASC,GACtB,GAAIC,GAAO/b,KAAKiF,CAEhB,UACG8W,GACDD,EAAQ5Y,UAAY6Y,EAAK7Y,SACzB4Y,EAAQnB,UAAYoB,EAAKpB,WAKvBmB,EAAQ3N,YAAc4N,EAAK5N,WACtBlF,EAAiB6S,EAAQ3N,WAAY4N,EAAK5N,aACxC2N,EAAQrB,YAAasB,EAAKtB,WAE5BzR,EAAgB8S,EAAQrB,UAAWsB,EAAKtB,aAMnDuB,GAAkB,SAASnB,GAEzB,IAAI7a,KAAKic,KAAT,CAIA,GAAIpF,GAASgE,EAAQhE,MAKrB,IAAiB,MAAXA,GAA6B,MAAXA,GAA6B,MAAXA,EAA1C,CAEA,GAAIqF,EACJ,KAIIA,EADE9S,IACMyR,EAAQ7U,QAAQmW,IAAI,eAEpBtB,EAAQuB,kBAAkB,eAIpCF,EAA8B,IAAtBG,SAASH,EAAO,IACxB,MAAOhc,IAITF,KAAK0b,GAAmBQ,EAEpBA,EAEwB,EAAxBlc,KAAK0b,IAAwB,IAEjC1b,KAAK2b,GAAgBxX,OAGvBmY,EAAO,SAAS3a,GACd,GAAIwI,GAAgBnK,KAAKuF,EAErBgX,GACAC,QAASxc,KAAKqF,EACdvB,OAAQqG,EAAcrG,OACtB2Y,SAAU,cAEZpB,EAAWrb,KAAK0c,IAsDlB,IApDIrB,IACFkB,EAAS1B,QAAUQ,GAIjB1Z,EAAKuM,sBAAuBvM,GAAKuM,eAErCvM,EAAO6G,EAAY+T,EAAU5a,GAG7BA,EAAK2O,KAAO9H,EAAYA,KAAgBxI,KAAKsF,EAAegL,MAAO3O,EAAK2O,MACxE3O,EAAKmB,MAAQ0F,EAAYA,KAAgBxI,KAAKsF,EAAexC,OAAQnB,EAAKmB,OAG1EnB,EAAKmB,MAAM,oBAAsBqB,IAAQnE,KAAKqH,EAE1CrH,KAAKuH,GAAgBvH,KAAKuH,EAAavG,OAAS,IAGlDW,EAAKoZ,aACHL,UAAW/W,MAAM5C,KAAKf,KAAKuH,EAAc,KAIzCvH,KAAKsF,EAAe6G,OAEtBxK,EAAKwK,KAAOnM,KAAKsF,EAAe6G,MAI9BhC,EAAcwG,cAAahP,EAAKgP,YAAcxG,EAAcwG,aAG5DxG,EAAc3E,UAAS7D,EAAK6D,QAAU2E,EAAc3E,SAGpD2E,EAAcwS,aAAYhb,EAAKib,YAAczS,EAAcwS,YAE/Dhb,EAAO3B,KAAK6c,GAAclb,GAG1BiN,OAAOC,KAAKlN,GAAMmb,QAAQ,SAAS1S,IAChB,MAAbzI,EAAKyI,IAA8B,KAAdzI,EAAKyI,IAAe9B,EAAc3G,EAAKyI,YACvDzI,GAAKyI,KAIZ7F,EAAW4F,EAAc2G,gBAC3BnP,EAAOwI,EAAc2G,aAAanP,IAASA,GAIxCA,IAAQ2G,EAAc3G,MAMzB4C,EAAW4F,EAAc8G,qBACxB9G,EAAc8G,mBAAmBtP,IAOpC,MAAI3B,MAAKic,SACPjc,MAAKkK,EAAU,OAAQ,uCAAwCvI,QAIzB,gBAA7BwI,GAAc3D,WACnBgE,KAAKuS,SAAW5S,EAAc3D,YAChCxG,KAAKgd,GAAsBrb,GAG7B3B,KAAKgd,GAAsBrb,KAI/Bsb,GAAe,SAAStb,GACtB,MAAO4H,GAAS5H,EAAM3B,KAAKuF,EAAekB,eAG5CyW,GAAU,WACR,MAAOpU,MAGTqU,GAAuB,SAASxb,EAAMF,GACpC,GAAI1B,GAAOC,KACPmK,EAAgBnK,KAAKuF,CAEzB,IAAKvF,KAAKmL,UAAV,CAQA,GALAxJ,EAAO3B,KAAKod,GAAYzb,IAKnB3B,KAAKuF,EAAe8X,iBAAmBrd,KAAKsd,GAAc3b,GAE7D,WADA3B,MAAKkK,EAAU,OAAQ,+BAAgCvI,EAOzD3B,MAAKkF,EAAevD,EAAK4b,WAAa5b,EAAK4b,SAAWvd,KAAKwd,MAG3Dxd,KAAKiF,EAAYtD,EAEjB3B,KAAKkK,EAAU,QAAS,uBAAwBvI,EAEhD,IAAI8b,IACFC,eAAgB,IAChBC,cAAe,YAAc3d,KAAK6J,QAClC+T,WAAY5d,KAAKoF,EAGfpF,MAAKoM,IACPqR,EAAKI,cAAgB7d,KAAKoM,EAG5B,IAAIqO,GAAY9Y,EAAK8Y,WAAa9Y,EAAK8Y,UAAUC,OAAO,EAItD1a,MAAKuF,EAAee,iBACpBtG,KAAKuF,EAAee,gBAAgBwE,QAEpC9K,KAAKyP,mBACH8D,SAAU,SACVrQ,QAASuX,GACJA,EAAU7E,KAAO6E,EAAU7E,KAAO,KAAO,IAAM6E,EAAUpQ,MAC1D1I,EAAKuB,QACTqa,SAAU5b,EAAK4b,SACf1b,MAAOF,EAAKE,OAAS,SAIzB,IAAIuN,GAAMpP,KAAKuM,GACdpC,EAAcgH,WAAanR,KAAK8d,IAAc/c,KAAKf,MAClDoP,IAAKA,EACLqO,KAAMA,EACN9b,KAAMA,EACNsI,QAASE,EACT4T,UAAW,WACThe,EAAK8H,IAEL9H,EAAKyZ,EAAc,WACjB7X,KAAMA,EACNwQ,IAAK/C,IAEP3N,GAAYA,KAEduc,QAAS,SAAiBvb,GACxB1C,EAAKmK,EAAU,QAAS,mCAAoCzH,GAExDA,EAAMoY,SACR9a,EAAKke,GAAiBxb,EAAMoY,SAG9B9a,EAAKyZ,EAAc,WACjB7X,KAAMA,EACNwQ,IAAK/C,IAEP3M,EAAQA,GAAS,GAAI7B,OAAM,sDAC3Ba,GAAYA,EAASgB,QAK3Byb,GAAc,SAASC,GAErB,GAAI/O,GAAM+O,EAAK/O,IAAM,IAAMvG,EAAUsV,EAAKV,MAEtCW,EAAmB,KACnBC,IAUJ,IARIF,EAAKlU,QAAQjE,UACfoY,EAAmBpe,KAAKse,GAAcH,EAAKlU,QAAQjE,UAGjDmY,EAAKlU,QAAQsU,kBACfF,EAA2Bre,KAAKse,GAAcH,EAAKlU,QAAQsU,kBAGzDnV,IAAiB,CACnBiV,EAAyBhM,KAAO3N,EAAUyZ,EAAKxc,KAE/C,IAAI6c,GAAsBhW,KAAgBxI,KAAK0G,GAC3C+X,EAAejW,EAAYgW,EAAqBH,EAMpD,OAJID,KACFK,EAAazY,QAAUoY,GAGlB3Y,EACJiZ,MAAMtP,EAAKqP,GACXpH,KAAK,SAASC,GACb,GAAIA,EAASqH,GACXR,EAAKJ,WAAaI,EAAKJ,gBAClB,CACL,GAAItb,GAAQ,GAAI7B,OAAM,sBAAwB0W,EAAST,OAGvDpU,GAAMoY,QAAUvD,EAChB6G,EAAKH,SAAWG,EAAKH,QAAQvb,MAGhC,SAAS,WACR0b,EAAKH,SACHG,EAAKH,QAAQ,GAAIpd,OAAM,6CAI/B,GAAIia,GAAUpV,EAAQ4Q,gBAAkB,GAAI5Q,GAAQ4Q,cACpD,IAAKwE,EAAL,CAGA,GAAI+D,GAAU,mBAAqB/D,IAAqC,mBAAnBgE,eAEhDD,KAED,mBAAqB/D,GACvBA,EAAQ7D,mBAAqB,WAC3B,GAA2B,IAAvB6D,EAAQjE,WAEL,GAAuB,MAAnBiE,EAAQhE,OACjBsH,EAAKJ,WAAaI,EAAKJ,gBAClB,IAAII,EAAKH,QAAS,CACvB,GAAIzI,GAAM,GAAI3U,OAAM,sBAAwBia,EAAQhE,OACpDtB,GAAIsF,QAAUA,EACdsD,EAAKH,QAAQzI,MAIjBsF,EAAU,GAAIgE,gBAGdzP,EAAMA,EAAI0P,QAAQ,WAAY,IAG1BX,EAAKJ,YACPlD,EAAQkE,OAASZ,EAAKJ,WAEpBI,EAAKH,UACPnD,EAAQrY,QAAU,WAChB,GAAI+S,GAAM,GAAI3U,OAAM,oCACpB2U,GAAIsF,QAAUA,EACdsD,EAAKH,QAAQzI,MAKnBsF,EAAQmE,KAAK,OAAQ5P,GAEjBgP,GACF7V,EAAK6V,EAAkB,SAAShU,EAAKC,GACnCwQ,EAAQoE,iBAAiB7U,EAAKC,KAIlCwQ,EAAQqE,KAAKxa,EAAUyZ,EAAKxc,UAG9Bwd,GAAe,SAASC,GACtB,GAAIC,KAEJ,KAAK,GAAIjV,KAAOgV,GACd,GAAIA,EAAKjK,eAAe/K,GAAM,CAC5B,GAAIC,GAAQ+U,EAAKhV,EACjBiV,GAAUjV,GAAwB,kBAAVC,GAAuBA,IAAUA,EAI7D,MAAOgV,IAGTC,EAAW,SAASzd,GAGhB7B,KAAKmH,EAAwBtF,KAC5B7B,KAAK8J,OAAS9J,KAAKuF,EAAeuE,QAGnC/F,SAASX,UAAUY,MAAMjD,KACvBf,KAAKmH,EAAwBtF,GAC7B7B,KAAKkH,KACFvD,MAAM5C,KAAK6C,UAAW,KAK/B2b,EAAe,SAASnV,EAAKrH,GACvB6B,EAAY7B,SACP/C,MAAKsF,EAAe8E,GAE3BpK,KAAKsF,EAAe8E,GAAO5B,EAAYxI,KAAKsF,EAAe8E,OAAYrH,KAM7E9C,EAAMmD,UAAUoc,QAAUvf,EAAMmD,UAAU8M,eAC1CjQ,EAAMmD,UAAUqc,kBAAoBxf,EAAMmD,UAAUwN,WAEpDnR,EAAOD,QAAUS,IAEdc,KAAKf,KAAuB,mBAAXF,QAAyBA,OAAyB,mBAATC,MAAuBA,KAAyB,mBAAXF,QAAyBA,aACxH6f,GAAK,GAAG1c,EAAI,EAAEd,EAAI,EAAE+B,EAAI,EAAE0b,EAAI,EAAEC,EAAI,IAAIzd,GAAG,SAASjB,EAAQzB,EAAOD,IACtE,SAAWM,GAOX,GAAI+f,GAAmB3e,EAAQ,GAG3BuE,EACgB,mBAAX5F,QACHA,OACkB,mBAAXC,GAAyBA,EAAyB,mBAATC,MAAuBA,QACzE+f,EAASra,EAAQxF,MAEjBA,EAAQ,GAAI4f,EAQhB5f,GAAM8f,WAAa,WAEjB,MADAta,GAAQxF,MAAQ6f,EACT7f,GAGTA,EAAMsR,YAEN9R,EAAOD,QAAUS,EAoCjBR,EAAOD,QAAQwgB,OAASH,IAErB9e,KAAKf,KAAuB,mBAAXF,QAAyBA,OAAyB,mBAATC,MAAuBA,KAAyB,mBAAXF,QAAyBA,aACxHqE,EAAI,IAAID,GAAG,SAAS/C,EAAQzB,EAAOD,IACtC,SAAWM,GAQX,QAASmI,GAASgY,GAChB,MAAuB,gBAATA,IAA8B,OAATA,EAKrC,QAASjY,GAAQqC,GACf,UAAWU,SAAShK,KAAKsJ,IACvB,IAAK,iBACH,OAAO,CACT,KAAK,qBACH,OAAO,CACT,KAAK,wBACH,OAAO,CACT,SACE,MAAOA,aAAiBzJ,QAI9B,QAASuH,GAAakC,GACpB,MAAO6V,MAAoD,2BAAzBnV,SAAShK,KAAKsJ,GAGlD,QAASzF,GAAYqb,GACnB,MAAgB,UAATA,EAGT,QAAS1b,GAAW0b,GAClB,MAAuB,kBAATA,GAGhB,QAAS/X,GAAc+X,GACrB,MAAgD,oBAAzCrR,OAAOxL,UAAU2H,SAAShK,KAAKkf,GAGxC,QAAS7X,GAAS6X,GAChB,MAAgD,oBAAzCrR,OAAOxL,UAAU2H,SAAShK,KAAKkf,GAGxC,QAAS5X,GAAQ4X,GACf,MAAgD,mBAAzCrR,OAAOxL,UAAU2H,SAAShK,KAAKkf,GAGxC,QAAS3X,GAAc2X,GACrB,IAAK/X,EAAc+X,GAAO,OAAO,CAEjC,KAAK,GAAI9M,KAAK8M,GACZ,GAAIA,EAAK9K,eAAehC,GACtB,OAAO,CAGX,QAAO,EAGT,QAAS+M,KACP,IAEE,MADA,IAAIC,YAAW,KACR,EACP,MAAOjgB,GACP,OAAO,GAIX,QAASkJ,KACP,KAAM,SAAW3D,IAAU,OAAO,CAElC,KAIE,MAHA,IAAI2a,SACJ,GAAIjJ,SAAQ,IACZ,GAAIkJ,WACG,EACP,MAAOngB,GACP,OAAO,GAQX,QAAS4G,KACP,IAAKsC,IAAiB,OAAO,CAE7B,KAKE,MAHA,IAAI+N,SAAQ,cACVtQ,eAAgB,YAEX,EACP,MAAO3G,GACP,OAAO,GAIX,QAASogB,KACP,MAAwC,kBAA1BC,uBAGhB,QAASC,GAAgB/e,GACvB,QAASqP,GAAanP,EAAM2C,GAC1B,GAAImc,GAAiBhf,EAASE,IAASA,CACvC,OAAI2C,GACKA,EAASmc,IAAmBA,EAE9BA,EAGT,MAAO3P,GAGT,QAASvI,GAAKmH,EAAKjO,GACjB,GAAId,GAAGoW,CAEP,IAAInS,EAAY8K,EAAI1O,QAClB,IAAKL,IAAK+O,GACJ/G,EAAO+G,EAAK/O,IACdc,EAASV,KAAK,KAAMJ,EAAG+O,EAAI/O,QAK/B,IADAoW,EAAIrH,EAAI1O,OAEN,IAAKL,EAAI,EAAGA,EAAIoW,EAAGpW,IACjBc,EAASV,KAAK,KAAMJ,EAAG+O,EAAI/O,IAMnC,QAAS6H,GAAYkY,EAAMC,GACzB,MAAKA,IAGLpY,EAAKoY,EAAM,SAASvW,EAAKC,GACvBqW,EAAKtW,GAAOC,IAEPqW,GALEA,EAgBX,QAAShY,GAAagH,GACpB,QAAKd,OAAOgS,UAGLhS,OAAOgS,SAASlR,GAGzB,QAASjH,GAASsQ,EAAKtO,GACrB,GAAmB,gBAARA,GACT,KAAM,IAAI7J,OAAM,yDAElB,OAAmB,gBAARmY,IAA4B,IAARtO,EACtBsO,EAEFA,EAAI/X,QAAUyJ,EAAMsO,EAAMA,EAAI9M,OAAO,EAAGxB,GAAO,IAUxD,QAAS9B,GAAOkY,EAAQzW,GACtB,MAAOwE,QAAOxL,UAAU+R,eAAepU,KAAK8f,EAAQzW,GAGtD,QAASxB,GAAWkY,GAQlB,IALA,GAGEC,GAHEC,KACFrgB,EAAI,EACJsgB,EAAMH,EAAS9f,OAGVL,EAAIsgB,EAAKtgB,IACdogB,EAAUD,EAASngB,GACfyH,EAAS2Y,GAGXC,EAAQxf,KAAKuf,EAAQjC,QAAQ,8BAA+B,SACnDiC,GAAWA,EAAQG,QAE5BF,EAAQxf,KAAKuf,EAAQG,OAIzB,OAAO,IAAIC,QAAOH,EAAQI,KAAK,KAAM,KAGvC,QAASvY,GAAUtI,GACjB,GAAI8gB,KAIJ,OAHA9Y,GAAKhI,EAAG,SAAS6J,EAAKC,GACpBgX,EAAM7f,KAAKoQ,mBAAmBxH,GAAO,IAAMwH,mBAAmBvH,MAEzDgX,EAAMD,KAAK,KAMpB,QAASlY,GAASkG,GAChB,GAAmB,gBAARA,GAAkB,QAC7B,IAAIkS,GAAQlS,EAAIkS,MAAM,kEAGlBC,EAAQD,EAAM,IAAM,GACpBE,EAAWF,EAAM,IAAM,EAC3B,QACEjN,SAAUiN,EAAM,GAChBhN,KAAMgN,EAAM,GACZvV,KAAMuV,EAAM,GACZ/M,SAAU+M,EAAM,GAAKC,EAAQC,GAGjC,QAAS1Y,KACP,GAAI2Y,GAAShc,EAAQgc,QAAUhc,EAAQic,QAEvC,KAAK9c,EAAY6c,IAAWA,EAAOE,gBAAiB,CAGlD,GAAIC,GAAM,GAAIC,aAAY,EAC1BJ,GAAOE,gBAAgBC,GAGvBA,EAAI,GAAe,KAATA,EAAI,GAAc,MAE5BA,EAAI,GAAe,MAATA,EAAI,GAAe,KAE7B,IAAIE,GAAM,SAASC,GAEjB,IADA,GAAIC,GAAID,EAAIhX,SAAS,IACdiX,EAAEhhB,OAAS,GAChBghB,EAAI,IAAMA,CAEZ,OAAOA,GAGT,OACEF,GAAIF,EAAI,IACRE,EAAIF,EAAI,IACRE,EAAIF,EAAI,IACRE,EAAIF,EAAI,IACRE,EAAIF,EAAI,IACRE,EAAIF,EAAI,IACRE,EAAIF,EAAI,IACRE,EAAIF,EAAI,IAIV,MAAO,mCAAmC9C,QAAQ,QAAS,SAASmD,GAClE,GAAI5hB,GAAqB,GAAhBmK,KAAKuS,SAAiB,EAC7BiF,EAAU,MAANC,EAAY5hB,EAAS,EAAJA,EAAW,CAClC,OAAO2hB,GAAEjX,SAAS,MAYxB,QAAShC,GAAiBmZ,GAWxB,IATA,GAOEC,GAPEC,EAAsB,EACxBC,EAAiB,GACjBC,KACAC,EAAS,EACTtB,EAAM,EACNuB,EAAY,MACZC,EAAYD,EAAUxhB,OAGjBkhB,GAAQK,IAAWH,IACxBD,EAAUO,EAAoBR,KAMhB,SAAZC,GACCI,EAAS,GAAKtB,EAAMqB,EAAIthB,OAASyhB,EAAYN,EAAQnhB,QAAUqhB,KAKlEC,EAAI9gB,KAAK2gB,GAETlB,GAAOkB,EAAQnhB,OACfkhB,EAAOA,EAAKS,UAGd,OAAOL,GAAI/S,UAAU6R,KAAKoB,GAS5B,QAASE,GAAoBR,GAC3B,GACEU,GACAC,EACAzY,EACA0Y,EACAniB,EALE2hB,IAOJ,KAAKJ,IAASA,EAAKxO,QACjB,MAAO,EAST,IANA4O,EAAI9gB,KAAK0gB,EAAKxO,QAAQR,eAClBgP,EAAKvc,IACP2c,EAAI9gB,KAAK,IAAM0gB,EAAKvc,IAGtBid,EAAYV,EAAKU,UACbA,GAAaxa,EAASwa,GAExB,IADAC,EAAUD,EAAUnZ,MAAM,OACrB9I,EAAI,EAAGA,EAAIkiB,EAAQ7hB,OAAQL,IAC9B2hB,EAAI9gB,KAAK,IAAMqhB,EAAQliB,GAG3B,IAAIoiB,IAAiB,OAAQ,OAAQ,QAAS,MAC9C,KAAKpiB,EAAI,EAAGA,EAAIoiB,EAAc/hB,OAAQL,IACpCyJ,EAAM2Y,EAAcpiB,GACpBmiB,EAAOZ,EAAKc,aAAa5Y,GACrB0Y,GACFR,EAAI9gB,KAAK,IAAM4I,EAAM,KAAO0Y,EAAO,KAGvC,OAAOR,GAAIlB,KAAK,IAMlB,QAAS6B,GAAgBxiB,EAAGyiB,GAC1B,WAAYziB,IAAMyiB,GAMpB,QAASC,GAAgB1iB,EAAGyiB,GAC1B,MAAOte,GAAYnE,IAAMmE,EAAYse,GAMvC,QAASla,GAAgBwF,EAAK4U,GAC5B,OAAIH,EAAgBzU,EAAK4U,KAEzB5U,EAAMA,EAAIkM,OAAO,GACjB0I,EAAMA,EAAI1I,OAAO,GAEblM,EAAIoH,OAASwN,EAAIxN,MAAQpH,EAAInE,QAAU+Y,EAAI/Y,SAG3C8Y,EAAgB3U,EAAIL,WAAYiV,EAAIjV,aAEjClF,EAAiBuF,EAAIL,WAAYiV,EAAIjV,cAM9C,QAASlF,GAAiBoa,EAAQC,GAChC,GAAIL,EAAgBI,EAAQC,GAAS,OAAO,CAE5C,IAAIC,GAAUF,EAAOhU,OACjBmU,EAAUF,EAAOjU,MAGrB,IAAIkU,EAAQviB,SAAWwiB,EAAQxiB,OAAQ,OAAO,CAI9C,KAAK,GADDP,GAAGyiB,EACEviB,EAAI,EAAGA,EAAI4iB,EAAQviB,OAAQL,IAGlC,GAFAF,EAAI8iB,EAAQ5iB,GACZuiB,EAAIM,EAAQ7iB,GAEVF,EAAEyZ,WAAagJ,EAAEhJ,UACjBzZ,EAAEiZ,SAAWwJ,EAAExJ,QACfjZ,EAAE2Z,QAAU8I,EAAE9I,OACd3Z,EAAE,cAAgByiB,EAAE,YAEpB,OAAO,CAEX,QAAO,EAUT,QAAS/Z,GAAKuG,EAAKvM,EAAMsgB,EAAaC,GACpC,GAAW,MAAPhU,EAAJ,CACA,GAAImF,GAAOnF,EAAIvM,EACfuM,GAAIvM,GAAQsgB,EAAY5O,GACxBnF,EAAIvM,GAAM4J,GAAY,EACtB2C,EAAIvM,GAAM+J,EAAW2H,EACjB6O,GACFA,EAAMliB,MAAMkO,EAAKvM,EAAM0R,KAU3B,QAAShR,GAAS8f,EAAOC,GACvB,IAAKvb,EAAQsb,GAAQ,MAAO,EAI5B,KAAK,GAFDE,MAEKljB,EAAI,EAAGA,EAAIgjB,EAAM3iB,OAAQL,IAChC,IACEkjB,EAAOriB,KAAKsiB,OAAOH,EAAMhjB,KACzB,MAAOT,GACP2jB,EAAOriB,KAAK,gCAIhB,MAAOqiB,GAAOzC,KAAKwC,GASrB,QAASG,GAAW1Z,GAClB,QAAS2Z,UAAU3Z,GAAOZ,MAAM,SAASzI,OAG3C,QAASijB,GAAS5Z,GAChB,MAAO0Z,GAAWtf,KAAKC,UAAU2F,IAGnC,QAAS6Z,GAAe7Z,GACtB,GAAqB,gBAAVA,GAAoB,CAC7B,GAAI8Z,GAAY,EAChB,OAAO1b,GAAS4B,EAAO8Z,GAClB,GACY,gBAAV9Z,IACU,iBAAVA,IACU,mBAAVA,GAEP,MAAOA,EAGT,IAAIuL,GAAOhH,OAAOxL,UAAU2H,SAAShK,KAAKsJ,EAG1C,OAAa,oBAATuL,EAAmC,WAC1B,mBAATA,EAAkC,UACzB,sBAATA,EACKvL,EAAMlH,KAAO,cAAgBkH,EAAMlH,KAAO,IAAM,aAElDkH,EAGT,QAAS+Z,GAAgB/Z,EAAOga,GAC9B,MAAc,KAAVA,EAAoBH,EAAe7Z,GAEnCnC,EAAcmC,GACTuE,OAAOC,KAAKxE,GAAOia,OAAO,SAASC,EAAKna,GAE7C,MADAma,GAAIna,GAAOga,EAAgB/Z,EAAMD,GAAMia,EAAQ,GACxCE,OAEAxP,MAAM1M,QAAQgC,GAChBA,EAAMma,IAAI,SAASC,GACxB,MAAOL,GAAgBK,EAAKJ,EAAQ,KAIjCH,EAAe7Z,GAGxB,QAASf,GAAmB2E,EAAIoW,EAAOK,GACrC,IAAKxc,EAAc+F,GAAK,MAAOA,EAE/BoW,GAAyB,gBAAVA,GAAqBM,EAAgCN,EACpEK,EAA2B,gBAAVL,GAAqBO,EAA+BF,CAErE,IAAIG,GAAaT,EAAgBnW,EAAIoW,EAErC,OAAIJ,GAASvf,EAAUmgB,IAAeH,EAC7Bpb,EAAmB2E,EAAIoW,EAAQ,GAGjCQ,EAGT,QAASxb,GAAwBwF,EAAMsV,GACrC,GAAoB,gBAATtV,IAAqC,gBAATA,GAAmB,MAAOA,GAAK9D,UACtE,KAAKgK,MAAM1M,QAAQwG,GAAO,MAAO,EAKjC,IAHAA,EAAOA,EAAKiW,OAAO,SAAS1a,GAC1B,MAAsB,gBAARA,KAEI,IAAhByE,EAAK7N,OAAc,MAAO,sBAG9B,IADAmjB,EAAiC,gBAAdA,GAAyBY,EAA4BZ,EACpEtV,EAAK,GAAG7N,QAAUmjB,EAAW,MAAOtV,GAAK,EAE7C,KAAK,GAAImW,GAAWnW,EAAK7N,OAAQgkB,EAAW,EAAGA,IAAY,CACzD,GAAIH,GAAahW,EAAKlL,MAAM,EAAGqhB,GAAU5D,KAAK,KAC9C,MAAIyD,EAAW7jB,OAASmjB,GACxB,MAAIa,KAAanW,EAAK7N,OAAe6jB,EAC9BA,EAAa,IAGtB,MAAO,GAGT,QAAStb,GAASoa,EAAOld,GAcvB,QAASwe,GAAeC,GACtB,MAAI7c,GAAQ6c,GACHA,EAAYV,IAAI,SAASC,GAC9B,MAAOQ,GAAeR,KAItBvc,EAAcgd,GACTtW,OAAOC,KAAKqW,GAAaZ,OAAO,SAASC,EAAKY,GAMnD,MAJEZ,GAAIY,GADFC,EAAenW,KAAKkW,GACbE,EAEAJ,EAAeC,EAAYC,IAE/BZ,OAIJW,EA/BT,IAAK7c,EAAQ5B,IAAkB4B,EAAQ5B,IAAyC,IAAxBA,EAAazF,OACnE,MAAO2iB,EAET,IAEI2B,GAFAF,EAAiBxc,EAAWnC,GAC5B4e,EAAe,UAGnB,KACEC,EAAY7gB,KAAKgM,MAAM/L,EAAUif,IACjC,MAAO4B,GACP,MAAO5B,GAwBT,MAAOsB,GAAeK,GAlkBxB,GAAI5gB,GAAYxD,EAAQ,GAEpBuE,EACgB,mBAAX5F,QACHA,OACkB,mBAAXC,GAAyBA,EAAyB,mBAATC,MAAuBA,QAgczE4kB,EAAgC,EAEhCC,EAA+B,MAC/BG,EAA4B,EA6HhCtlB,GAAOD,SACLyI,SAAUA,EACVD,QAASA,EACTG,aAAcA,EACdvD,YAAaA,EACbL,WAAYA,EACZ2D,cAAeA,EACfE,SAAUA,EACVC,QAASA,EACTC,cAAeA,EACf4X,mBAAoBA,EACpB9W,cAAeA,EACftC,uBAAwBA,EACxBwZ,8BAA+BA,EAC/BE,gBAAiBA,EACjBjY,KAAMA,EACNC,YAAaA,EACbC,SAAUA,EACVC,aAAcA,EACdC,OAAQA,EACRC,WAAYA,EACZC,UAAWA,EACXC,MAAOA,EACPC,iBAAkBA,EAClB2Z,oBAAqBA,EACrB1Z,gBAAiBA,EACjBC,iBAAkBA,EAClBC,SAAUA,EACVC,KAAMA,EACNtF,SAAUA,EACVyF,mBAAoBA,EACpBD,wBAAyBA,EACzBE,SAAUA,KAGTxI,KAAKf,KAAuB,mBAAXF,QAAyBA,OAAyB,mBAATC,MAAuBA,KAAyB,mBAAXF,QAAyBA,aACxH+f,EAAI,IAAID,GAAG,SAASze,EAAQzB,EAAOD,IACtC,SAAWM,GA+BX,QAAS0lB,KACP,MAAwB,mBAAb7b,WAAiD,MAArBA,SAASjC,SAAyB,GAElEiC,SAASjC,SAASE,KAjC3B,GAAItE,GAAQpC,EAAQ,GAYhB4G,GACF7B,qBAAqB,EACrB6D,OAAO,GAILrE,EACgB,mBAAX5F,QACHA,OACkB,mBAAXC,GAAyBA,EAAyB,mBAATC,MAAuBA,QAGzE0lB,KAAY9hB,MACZ+hB,EAAmB,IAGnBC,EAAiB,yGA+CrB7d,GAASsD,OAAS,WAUhB,QAASC,GAAUua,GACjBC,IACAC,EAAStkB,KAAKokB,GAOhB,QAASG,GAAYH,GACnB,IAAK,GAAIjlB,GAAImlB,EAAS9kB,OAAS,EAAGL,GAAK,IAAKA,EACtCmlB,EAASnlB,KAAOilB,GAClBE,EAASE,OAAOrlB,EAAG,GAQzB,QAASslB,KACPC,IACAJ,KAOF,QAASK,GAAe9X,EAAO+X,GAC7B,GAAI3L,GAAY,IAChB,KAAI2L,GAAkBte,EAAS7B,oBAA/B,CAGA,IAAK,GAAItF,KAAKmlB,GACZ,GAAIA,EAAS3Q,eAAexU,GAC1B,IACEmlB,EAASnlB,GAAGqD,MAAM,MAAOqK,GAAOwK,OAAO4M,EAAO1kB,KAAK6C,UAAW,KAC9D,MAAOyiB,GACP5L,EAAY4L,EAKlB,GAAI5L,EACF,KAAMA,IAiBV,QAAS6L,GAAsB5kB,EAAK0N,EAAKmX,EAAQC,EAAOvY,GACtD,GAAII,GAAQ,KAERoM,EAAYnX,EAAM6E,aAAa8F,GAAMA,EAAGxL,MAAQwL,EAEhD/K,EAAUI,EAAM6E,aAAazG,GAAOA,EAAIwB,QAAUxB,CAEtD,IAAI+kB,EACF3e,EAASwG,kBAAkBoY,oCACzBD,EACArX,EACAmX,EACArjB,GAEFyjB,QACK,IAAIlM,GAAanX,EAAM0E,QAAQyS,GAMpCpM,EAAQvG,EAASwG,kBAAkBmM,GACnC0L,EAAe9X,GAAO,OACjB,CACL,GAOIuY,GAPAlf,GACF0H,IAAKA,EACL+K,KAAMoM,EACNlM,OAAQmM,GAGNrjB,EAAOsJ,MAGX,IAAkC,uBAA3B1B,SAAShK,KAAKmC,GAAgC,CACnD,GAAI0jB,GAAS1jB,EAAQoe,MAAMqE,EACvBiB,KACFzjB,EAAOyjB,EAAO,GACd1jB,EAAU0jB,EAAO,IAIrBlf,EAAS8E,KAAOkZ,EAEhBrX,GACElL,KAAMA,EACND,QAASA,EACTkM,IAAKoW,IACLnX,OAAQ3G,IAEVye,EAAe9X,GAAO,GAGxB,QAAIwY,GACKA,EAAmB7iB,MAAMhE,KAAM4D,WAM1C,QAASiiB,KACHiB,IAGJD,EAAqBphB,EAAQjD,QAC7BiD,EAAQjD,QAAU8jB,EAClBQ,GAA2B,GAG7B,QAASZ,KACFY,IAGLrhB,EAAQjD,QAAUqkB,EAClBC,GAA2B,EAC3BD,EAAqBpa,QAGvB,QAASka,KACP,GAAII,GAAsBN,EACxBO,EAAYC,CACdA,GAAW,KACXR,EAAqB,KACrBrV,EAAgB,KAChB+U,EAAeniB,MAAM,MAAO+iB,GAAqB,GAAOlO,OAAOmO,IAUjE,QAAS5b,GAAO6C,EAAIiZ,GAClB,GAAIxjB,GAAO+hB,EAAO1kB,KAAK6C,UAAW,EAClC,IAAI6iB,EAAoB,CACtB,GAAIrV,IAAkBnD,EACpB,MAEA0Y,KAIJ,GAAItY,GAAQvG,EAASwG,kBAAkBL,EAevC,IAdAwY,EAAqBpY,EACrB+C,EAAgBnD,EAChBgZ,EAAWvjB,EAMX8O,WAAW,WACLpB,IAAkBnD,GACpB0Y,KAEDtY,EAAM8Y,WAAa,IAAO,GAEzBD,KAAY,EACd,KAAMjZ,GA9LV,GA0DI4Y,GAAoBC,EA1DpBhB,KACFmB,EAAW,KACX7V,EAAgB,KAChBqV,EAAqB,IAkMvB,OAHArb,GAAOC,UAAYA,EACnBD,EAAO2a,YAAcA,EACrB3a,EAAO+B,UAAY8Y,EACZ7a,KAsDTtD,EAASwG,kBAAoB,WA4C3B,QAAS8Y,GAA+BnZ,GACtC,GAAwB,mBAAbA,GAAGI,OAA0BJ,EAAGI,MAA3C,CAiBA,IAAK,GALDgZ,GACAC,EACAC,EAZA/P,EAAS,0IACTgQ,EAAQ,wHAGRC,EAAQ,6JAERC,EAAY,gDACZC,EAAa,gCACbC,EAAQ3Z,EAAGI,MAAM5E,MAAM,MACvB4E,KAMK1N,GAFO,sBAAsBsY,KAAKhL,EAAG/K,SAEjC,GAAG6T,EAAI6Q,EAAM5mB,OAAQL,EAAIoW,IAAKpW,EAAG,CAC5C,GAAK2mB,EAAQ9P,EAAOyB,KAAK2O,EAAMjnB,IAAM,CACnC,GAAIknB,GAAWP,EAAM,IAAqC,IAA/BA,EAAM,GAAG/Q,QAAQ,UACxCuR,EAASR,EAAM,IAAmC,IAA7BA,EAAM,GAAG/Q,QAAQ,OACtCuR,KAAWT,EAAWM,EAAW1O,KAAKqO,EAAM,OAE9CA,EAAM,GAAKD,EAAS,GACpBC,EAAM,GAAKD,EAAS,GACpBC,EAAM,GAAKD,EAAS,IAEtBE,GACEnY,IAAMyY,EAAsB,KAAXP,EAAM,GACvB9a,KAAM8a,EAAM,IAAM5B,EAClBhiB,KAAMmkB,GAAYP,EAAM,OACxBnN,KAAMmN,EAAM,IAAMA,EAAM,GAAK,KAC7BjN,OAAQiN,EAAM,IAAMA,EAAM,GAAK,UAE5B,IAAKA,EAAQE,EAAMvO,KAAK2O,EAAMjnB,IACnC4mB,GACEnY,IAAKkY,EAAM,GACX9a,KAAM8a,EAAM,IAAM5B,EAClBhiB,QACAyW,MAAOmN,EAAM,GACbjN,OAAQiN,EAAM,IAAMA,EAAM,GAAK,UAE5B,CAAA,KAAKA,EAAQG,EAAMxO,KAAK2O,EAAMjnB,KAsBnC,QArBA,IAAImnB,GAASR,EAAM,IAAMA,EAAM,GAAG/Q,QAAQ,aACtCuR,KAAWT,EAAWK,EAAUzO,KAAKqO,EAAM,MAE7CA,EAAM,GAAKD,EAAS,GACpBC,EAAM,GAAKD,EAAS,GACpBC,EAAM,GAAK,MACI,IAAN3mB,GAAY2mB,EAAM,IAAiC,mBAApBrZ,GAAG8Z,eAK3C1Z,EAAM,GAAGgM,OAASpM,EAAG8Z,aAAe,GAEtCR,GACEnY,IAAKkY,EAAM,GACX9a,KAAM8a,EAAM,IAAM5B,EAClBhiB,KAAM4jB,EAAM,GAAKA,EAAM,GAAG7d,MAAM,QAChC0Q,KAAMmN,EAAM,IAAMA,EAAM,GAAK,KAC7BjN,OAAQiN,EAAM,IAAMA,EAAM,GAAK,OAM9BC,EAAQ/a,MAAQ+a,EAAQpN,OAC3BoN,EAAQ/a,KAAOkZ,GAGjBrX,EAAM7M,KAAK+lB,GAGb,MAAKlZ,GAAMrN,QAKTmC,KAAM8K,EAAG9K,KACTD,QAAS+K,EAAG/K,QACZkM,IAAKoW,IACLnX,MAAOA,GAPA,MAwBX,QAASqY,GAAoCnN,EAAWnK,EAAKmX,EAAQrjB,GACnE,GAAI8kB,IACF5Y,IAAKA,EACL+K,KAAMoM,EAGR,IAAIyB,EAAQ5Y,KAAO4Y,EAAQ7N,KAAM,CAO/B,GANAZ,EAAU4N,YAAa,EAElBa,EAAQxb,OACXwb,EAAQxb,KAAOkZ,GAGbnM,EAAUlL,MAAMrN,OAAS,GACvBuY,EAAUlL,MAAM,GAAGe,MAAQ4Y,EAAQ5Y,IAAK,CAC1C,GAAImK,EAAUlL,MAAM,GAAG8L,OAAS6N,EAAQ7N,KACtC,OAAO,CACF,KACJZ,EAAUlL,MAAM,GAAG8L,MACpBZ,EAAUlL,MAAM,GAAG7B,OAASwb,EAAQxb,KAGpC,MADA+M,GAAUlL,MAAM,GAAG8L,KAAO6N,EAAQ7N,MAC3B,EAOb,MAFAZ,GAAUlL,MAAM4Z,QAAQD,GACxBzO,EAAU2O,SAAU,GACb,EAKT,MAHE3O,GAAU4N,YAAa,GAGlB,EAYT,QAASgB,GAAsCla,EAAIoW,GASjD,IACE,GALAiD,GACAc,EALEC,EAAe,qEACjBha,KACAia,KACAC,GAAY,EAMRC,EAAOL,EAAsCM,OACjDD,IAASD,EACTC,EAAOA,EAAKC,OAEZ,GAAID,IAASla,GAAqBka,IAAS1gB,EAASsD,OAApD,CAkBA,GAbAgd,GACEhZ,IAAK,KACL5C,KAAMkZ,EACNvL,KAAM,KACNE,OAAQ,MAGNmO,EAAKrlB,KACPilB,EAAK5b,KAAOgc,EAAKrlB,MACPmkB,EAAQe,EAAapP,KAAKuP,EAAKzd,eACzCqd,EAAK5b,KAAO8a,EAAM,IAGK,mBAAdc,GAAK5b,KACd,IACE4b,EAAK5b,KAAO8a,EAAM3D,MAAM+E,UAAU,EAAGpB,EAAM3D,MAAMpN,QAAQ,MACzD,MAAOrW,IAGPooB,EAAM,GAAKE,GACbD,GAAY,EAEZD,EAAM,GAAKE,IAAQ,EAGrBna,EAAM7M,KAAK4mB,GAGT/D,GAGFhW,EAAM2X,OAAO,EAAG3B,EAGlB,IAAIvU,IACF3M,KAAM8K,EAAG9K,KACTD,QAAS+K,EAAG/K,QACZkM,IAAKoW,IACLnX,MAAOA,EAQT,OANAqY,GACE5W,EACA7B,EAAG0a,WAAa1a,EAAG2a,SACnB3a,EAAGkM,MAAQlM,EAAG4a,WACd5a,EAAG/K,SAAW+K,EAAG6a,aAEZhZ,EAQT,QAASxB,GAAkBL,EAAIoW,GAC7B,GAAIhW,GAAQ,IACZgW,GAAiB,MAATA,EAAgB,GAAKA,CAE7B,KAEE,GADAhW,EAAQ+Y,EAA+BnZ,GAErC,MAAOI,GAET,MAAOnO,GACP,GAAI4H,EAASgC,MACX,KAAM5J,GAIV,IAEE,GADAmO,EAAQ8Z,EAAsCla,EAAIoW,EAAQ,GAExD,MAAOhW,GAET,MAAOnO,GACP,GAAI4H,EAASgC,MACX,KAAM5J,GAGV,OACEiD,KAAM8K,EAAG9K,KACTD,QAAS+K,EAAG/K,QACZkM,IAAKoW,KAOT,MAHAlX,GAAkBoY,oCAAsCA,EACxDpY,EAAkB8Y,+BAAiCA,EAE5C9Y,KAGT7O,EAAOD,QAAUsI,IAEd/G,KAAKf,KAAuB,mBAAXF,QAAyBA,OAAyB,mBAATC,MAAuBA,KAAyB,mBAAXF,QAAyBA,aACxHoE,EAAI,IAAI2b,GAAG,SAAS1e,EAAQzB,EAAOD,GAetC,QAAS+W,GAAQwS,EAAUC,GACzB,IAAK,GAAIroB,GAAI,EAAGA,EAAIooB,EAAS/nB,SAAUL,EACrC,GAAIooB,EAASpoB,KAAOqoB,EAAQ,MAAOroB,EAErC,UAGF,QAAS+D,GAAUgL,EAAKuZ,EAAUC,EAAQC,GACxC,MAAO1kB,MAAKC,UAAUgL,EAAK0Z,EAAWH,EAAUE,GAAgBD,GAIlE,QAASG,GAAehf,GACtB,GAAIkL,IAEFlH,MAAOhE,EAAMgE,MACbnL,QAASmH,EAAMnH,QACfC,KAAMkH,EAAMlH,KAGd,KAAK,GAAIxC,KAAK0J,GACRuE,OAAOxL,UAAU+R,eAAepU,KAAKsJ,EAAO1J,KAC9C4U,EAAI5U,GAAK0J,EAAM1J,GAInB,OAAO4U,GAGT,QAAS6T,GAAWH,EAAUE,GAC5B,GAAI9a,MACAQ,IAWJ,OATqB,OAAjBsa,IACFA,EAAgB,SAAS/e,EAAKC,GAC5B,MAAIgE,GAAM,KAAOhE,EACR,eAEF,eAAiBwE,EAAKlL,MAAM,EAAG4S,EAAQlI,EAAOhE,IAAQ+W,KAAK,KAAO;GAItE,SAAShX,EAAKC,GACnB,GAAIgE,EAAMrN,OAAS,EAAG,CACpB,GAAIsoB,GAAU/S,EAAQlI,EAAOrO,OAC5BspB,EAAUjb,EAAM2X,OAAOsD,EAAU,GAAKjb,EAAM7M,KAAKxB,OACjDspB,EAAUza,EAAKmX,OAAOsD,EAASC,EAAAA,EAAUnf,GAAOyE,EAAKrN,KAAK4I,IAEtDmM,EAAQlI,EAAOhE,KAClBA,EAAQ8e,EAAcpoB,KAAKf,KAAMoK,EAAKC,QAGxCgE,GAAM7M,KAAK6I,EAGb,OAAmB,OAAZ4e,EACH5e,YAAiBzJ,OAAQyoB,EAAehf,GAASA,EACjD4e,EAASloB,KAAKf,KAAMoK,EAAKC,IA5DjC7K,EAAUC,EAAOD,QAAUkF,EAC3BlF,EAAQgqB,aAAeJ,OA+DjB1J,IAAI,SAASxe,EAAQzB,EAAOD,GAwBlC,QAASiqB,GAAQC,EAAGjO,GAClB,GAAIkO,IAAW,MAAJD,IAAmB,MAAJjO,GACtBmO,GAAOF,GAAK,KAAOjO,GAAK,KAAOkO,GAAO,GAC1C,OAAQC,IAAO,GAAa,MAAND,EAMxB,QAASE,GAAc9H,EAAK+H,GAC1B,MAAQ/H,IAAO+H,EAAQ/H,IAAS,GAAK+H,EAMvC,QAASC,GAAOC,EAAGvpB,EAAGyiB,EAAGwG,EAAGppB,EAAGH,GAC7B,MAAOspB,GAAQI,EAAcJ,EAAQA,EAAQhpB,EAAGupB,GAAIP,EAAQC,EAAGvpB,IAAKG,GAAI4iB,GAE1E,QAAS+G,GAAMxpB,EAAGyiB,EAAGjB,EAAGiI,EAAGR,EAAGppB,EAAGH,GAC/B,MAAO4pB,GAAQ7G,EAAIjB,GAAOiB,EAAIgH,EAAIzpB,EAAGyiB,EAAGwG,EAAGppB,EAAGH,GAEhD,QAASgqB,GAAM1pB,EAAGyiB,EAAGjB,EAAGiI,EAAGR,EAAGppB,EAAGH,GAC/B,MAAO4pB,GAAQ7G,EAAIgH,EAAMjI,GAAKiI,EAAIzpB,EAAGyiB,EAAGwG,EAAGppB,EAAGH,GAEhD,QAASiqB,GAAM3pB,EAAGyiB,EAAGjB,EAAGiI,EAAGR,EAAGppB,EAAGH,GAC/B,MAAO4pB,GAAO7G,EAAIjB,EAAIiI,EAAGzpB,EAAGyiB,EAAGwG,EAAGppB,EAAGH,GAEvC,QAASkqB,GAAM5pB,EAAGyiB,EAAGjB,EAAGiI,EAAGR,EAAGppB,EAAGH,GAC/B,MAAO4pB,GAAO9H,GAAKiB,GAAKgH,GAAIzpB,EAAGyiB,EAAGwG,EAAGppB,EAAGH,GAM1C,QAASmqB,GAAQZ,EAAGzI,GAElByI,EAAEzI,GAAO,IAAM,KAASA,EAAM,GAC9ByI,GAAKzI,EAAM,KAAQ,GAAM,GAAK,IAAMA,CAEpC,IAAItgB,GACA4pB,EACAC,EACAC,EACAC,EACAjqB,EAAI,WACJyiB,aACAjB,cACAiI,EAAI,SAER,KAAKvpB,EAAI,EAAGA,EAAI+oB,EAAE1oB,OAAQL,GAAK,GAC7B4pB,EAAO9pB,EACP+pB,EAAOtH,EACPuH,EAAOxI,EACPyI,EAAOR,EAEPzpB,EAAIwpB,EAAMxpB,EAAGyiB,EAAGjB,EAAGiI,EAAGR,EAAE/oB,GAAI,cAC5BupB,EAAID,EAAMC,EAAGzpB,EAAGyiB,EAAGjB,EAAGyH,EAAE/oB,EAAI,GAAI,eAChCshB,EAAIgI,EAAMhI,EAAGiI,EAAGzpB,EAAGyiB,EAAGwG,EAAE/oB,EAAI,GAAI,GAAI,WACpCuiB,EAAI+G,EAAM/G,EAAGjB,EAAGiI,EAAGzpB,EAAGipB,EAAE/oB,EAAI,GAAI,gBAChCF,EAAIwpB,EAAMxpB,EAAGyiB,EAAGjB,EAAGiI,EAAGR,EAAE/oB,EAAI,GAAI,cAChCupB,EAAID,EAAMC,EAAGzpB,EAAGyiB,EAAGjB,EAAGyH,EAAE/oB,EAAI,GAAI,GAAI,YACpCshB,EAAIgI,EAAMhI,EAAGiI,EAAGzpB,EAAGyiB,EAAGwG,EAAE/oB,EAAI,GAAI,gBAChCuiB,EAAI+G,EAAM/G,EAAGjB,EAAGiI,EAAGzpB,EAAGipB,EAAE/oB,EAAI,GAAI,cAChCF,EAAIwpB,EAAMxpB,EAAGyiB,EAAGjB,EAAGiI,EAAGR,EAAE/oB,EAAI,GAAI,EAAG,YACnCupB,EAAID,EAAMC,EAAGzpB,EAAGyiB,EAAGjB,EAAGyH,EAAE/oB,EAAI,GAAI,gBAChCshB,EAAIgI,EAAMhI,EAAGiI,EAAGzpB,EAAGyiB,EAAGwG,EAAE/oB,EAAI,IAAK,WACjCuiB,EAAI+G,EAAM/G,EAAGjB,EAAGiI,EAAGzpB,EAAGipB,EAAE/oB,EAAI,IAAK,gBACjCF,EAAIwpB,EAAMxpB,EAAGyiB,EAAGjB,EAAGiI,EAAGR,EAAE/oB,EAAI,IAAK,EAAG,YACpCupB,EAAID,EAAMC,EAAGzpB,EAAGyiB,EAAGjB,EAAGyH,EAAE/oB,EAAI,IAAK,cACjCshB,EAAIgI,EAAMhI,EAAGiI,EAAGzpB,EAAGyiB,EAAGwG,EAAE/oB,EAAI,IAAK,gBACjCuiB,EAAI+G,EAAM/G,EAAGjB,EAAGiI,EAAGzpB,EAAGipB,EAAE/oB,EAAI,IAAK,GAAI,YAErCF,EAAI0pB,EAAM1pB,EAAGyiB,EAAGjB,EAAGiI,EAAGR,EAAE/oB,EAAI,GAAI,cAChCupB,EAAIC,EAAMD,EAAGzpB,EAAGyiB,EAAGjB,EAAGyH,EAAE/oB,EAAI,GAAI,eAChCshB,EAAIkI,EAAMlI,EAAGiI,EAAGzpB,EAAGyiB,EAAGwG,EAAE/oB,EAAI,IAAK,GAAI,WACrCuiB,EAAIiH,EAAMjH,EAAGjB,EAAGiI,EAAGzpB,EAAGipB,EAAE/oB,GAAI,eAC5BF,EAAI0pB,EAAM1pB,EAAGyiB,EAAGjB,EAAGiI,EAAGR,EAAE/oB,EAAI,GAAI,cAChCupB,EAAIC,EAAMD,EAAGzpB,EAAGyiB,EAAGjB,EAAGyH,EAAE/oB,EAAI,IAAK,EAAG,UACpCshB,EAAIkI,EAAMlI,EAAGiI,EAAGzpB,EAAGyiB,EAAGwG,EAAE/oB,EAAI,IAAK,eACjCuiB,EAAIiH,EAAMjH,EAAGjB,EAAGiI,EAAGzpB,EAAGipB,EAAE/oB,EAAI,GAAI,eAChCF,EAAI0pB,EAAM1pB,EAAGyiB,EAAGjB,EAAGiI,EAAGR,EAAE/oB,EAAI,GAAI,EAAG,WACnCupB,EAAIC,EAAMD,EAAGzpB,EAAGyiB,EAAGjB,EAAGyH,EAAE/oB,EAAI,IAAK,eACjCshB,EAAIkI,EAAMlI,EAAGiI,EAAGzpB,EAAGyiB,EAAGwG,EAAE/oB,EAAI,GAAI,eAChCuiB,EAAIiH,EAAMjH,EAAGjB,EAAGiI,EAAGzpB,EAAGipB,EAAE/oB,EAAI,GAAI,GAAI,YACpCF,EAAI0pB,EAAM1pB,EAAGyiB,EAAGjB,EAAGiI,EAAGR,EAAE/oB,EAAI,IAAK,eACjCupB,EAAIC,EAAMD,EAAGzpB,EAAGyiB,EAAGjB,EAAGyH,EAAE/oB,EAAI,GAAI,aAChCshB,EAAIkI,EAAMlI,EAAGiI,EAAGzpB,EAAGyiB,EAAGwG,EAAE/oB,EAAI,GAAI,GAAI,YACpCuiB,EAAIiH,EAAMjH,EAAGjB,EAAGiI,EAAGzpB,EAAGipB,EAAE/oB,EAAI,IAAK,gBAEjCF,EAAI2pB,EAAM3pB,EAAGyiB,EAAGjB,EAAGiI,EAAGR,EAAE/oB,EAAI,GAAI,WAChCupB,EAAIE,EAAMF,EAAGzpB,EAAGyiB,EAAGjB,EAAGyH,EAAE/oB,EAAI,GAAI,gBAChCshB,EAAImI,EAAMnI,EAAGiI,EAAGzpB,EAAGyiB,EAAGwG,EAAE/oB,EAAI,IAAK,GAAI,YACrCuiB,EAAIkH,EAAMlH,EAAGjB,EAAGiI,EAAGzpB,EAAGipB,EAAE/oB,EAAI,IAAK,cACjCF,EAAI2pB,EAAM3pB,EAAGyiB,EAAGjB,EAAGiI,EAAGR,EAAE/oB,EAAI,GAAI,eAChCupB,EAAIE,EAAMF,EAAGzpB,EAAGyiB,EAAGjB,EAAGyH,EAAE/oB,EAAI,GAAI,GAAI,YACpCshB,EAAImI,EAAMnI,EAAGiI,EAAGzpB,EAAGyiB,EAAGwG,EAAE/oB,EAAI,GAAI,eAChCuiB,EAAIkH,EAAMlH,EAAGjB,EAAGiI,EAAGzpB,EAAGipB,EAAE/oB,EAAI,IAAK,gBACjCF,EAAI2pB,EAAM3pB,EAAGyiB,EAAGjB,EAAGiI,EAAGR,EAAE/oB,EAAI,IAAK,EAAG,WACpCupB,EAAIE,EAAMF,EAAGzpB,EAAGyiB,EAAGjB,EAAGyH,EAAE/oB,GAAI,eAC5BshB,EAAImI,EAAMnI,EAAGiI,EAAGzpB,EAAGyiB,EAAGwG,EAAE/oB,EAAI,GAAI,eAChCuiB,EAAIkH,EAAMlH,EAAGjB,EAAGiI,EAAGzpB,EAAGipB,EAAE/oB,EAAI,GAAI,GAAI,UACpCF,EAAI2pB,EAAM3pB,EAAGyiB,EAAGjB,EAAGiI,EAAGR,EAAE/oB,EAAI,GAAI,cAChCupB,EAAIE,EAAMF,EAAGzpB,EAAGyiB,EAAGjB,EAAGyH,EAAE/oB,EAAI,IAAK,eACjCshB,EAAImI,EAAMnI,EAAGiI,EAAGzpB,EAAGyiB,EAAGwG,EAAE/oB,EAAI,IAAK,GAAI,WACrCuiB,EAAIkH,EAAMlH,EAAGjB,EAAGiI,EAAGzpB,EAAGipB,EAAE/oB,EAAI,GAAI,eAEhCF,EAAI4pB,EAAM5pB,EAAGyiB,EAAGjB,EAAGiI,EAAGR,EAAE/oB,GAAI,cAC5BupB,EAAIG,EAAMH,EAAGzpB,EAAGyiB,EAAGjB,EAAGyH,EAAE/oB,EAAI,GAAI,GAAI,YACpCshB,EAAIoI,EAAMpI,EAAGiI,EAAGzpB,EAAGyiB,EAAGwG,EAAE/oB,EAAI,IAAK,gBACjCuiB,EAAImH,EAAMnH,EAAGjB,EAAGiI,EAAGzpB,EAAGipB,EAAE/oB,EAAI,GAAI,cAChCF,EAAI4pB,EAAM5pB,EAAGyiB,EAAGjB,EAAGiI,EAAGR,EAAE/oB,EAAI,IAAK,EAAG,YACpCupB,EAAIG,EAAMH,EAAGzpB,EAAGyiB,EAAGjB,EAAGyH,EAAE/oB,EAAI,GAAI,gBAChCshB,EAAIoI,EAAMpI,EAAGiI,EAAGzpB,EAAGyiB,EAAGwG,EAAE/oB,EAAI,IAAK,aACjCuiB,EAAImH,EAAMnH,EAAGjB,EAAGiI,EAAGzpB,EAAGipB,EAAE/oB,EAAI,GAAI,gBAChCF,EAAI4pB,EAAM5pB,EAAGyiB,EAAGjB,EAAGiI,EAAGR,EAAE/oB,EAAI,GAAI,EAAG,YACnCupB,EAAIG,EAAMH,EAAGzpB,EAAGyiB,EAAGjB,EAAGyH,EAAE/oB,EAAI,IAAK,cACjCshB,EAAIoI,EAAMpI,EAAGiI,EAAGzpB,EAAGyiB,EAAGwG,EAAE/oB,EAAI,GAAI,gBAChCuiB,EAAImH,EAAMnH,EAAGjB,EAAGiI,EAAGzpB,EAAGipB,EAAE/oB,EAAI,IAAK,GAAI,YACrCF,EAAI4pB,EAAM5pB,EAAGyiB,EAAGjB,EAAGiI,EAAGR,EAAE/oB,EAAI,GAAI,cAChCupB,EAAIG,EAAMH,EAAGzpB,EAAGyiB,EAAGjB,EAAGyH,EAAE/oB,EAAI,IAAK,gBACjCshB,EAAIoI,EAAMpI,EAAGiI,EAAGzpB,EAAGyiB,EAAGwG,EAAE/oB,EAAI,GAAI,GAAI,WACpCuiB,EAAImH,EAAMnH,EAAGjB,EAAGiI,EAAGzpB,EAAGipB,EAAE/oB,EAAI,GAAI,eAEhCF,EAAIgpB,EAAQhpB,EAAG8pB,GACfrH,EAAIuG,EAAQvG,EAAGsH,GACfvI,EAAIwH,EAAQxH,EAAGwI,GACfP,EAAIT,EAAQS,EAAGQ,EAEjB,QAAQjqB,EAAGyiB,EAAGjB,EAAGiI,GAMnB,QAASS,GAAUhH,GACjB,GAAIhjB,GACAkjB,EAAS,GACT+G,EAA0B,GAAfjH,EAAM3iB,MACrB,KAAKL,EAAI,EAAGA,EAAIiqB,EAAUjqB,GAAK,EAC7BkjB,GAAUC,OAAO+G,aAAclH,EAAMhjB,GAAK,KAAQA,EAAI,GAAO,IAE/D,OAAOkjB,GAOT,QAASiH,GAAUnH,GACjB,GAAIhjB,GACAkjB,IAEJ,KADAA,GAAQF,EAAM3iB,QAAU,GAAK,GAAKyL,OAC7B9L,EAAI,EAAGA,EAAIkjB,EAAO7iB,OAAQL,GAAK,EAClCkjB,EAAOljB,GAAK,CAEd,IAAIoqB,GAAyB,EAAfpH,EAAM3iB,MACpB,KAAKL,EAAI,EAAGA,EAAIoqB,EAASpqB,GAAK,EAC5BkjB,EAAOljB,GAAK,KAAiC,IAA1BgjB,EAAMqH,WAAWrqB,EAAI,KAAeA,EAAI,EAE7D,OAAOkjB,GAMT,QAASoH,GAAQ3qB,GACf,MAAOqqB,GAAUL,EAAQQ,EAAUxqB,GAAe,EAAXA,EAAEU,SAM3C,QAASkqB,GAAY9gB,EAAKzI,GACxB,GAAIhB,GAIAye,EAHA+L,EAAOL,EAAU1gB,GACjBghB,KACAC,IAMJ,KAJAD,EAAK,IAAMC,EAAK,IAAM5e,OAClB0e,EAAKnqB,OAAS,KAChBmqB,EAAOb,EAAQa,EAAmB,EAAb/gB,EAAIpJ,SAEtBL,EAAI,EAAGA,EAAI,GAAIA,GAAK,EACvByqB,EAAKzqB,GAAe,UAAVwqB,EAAKxqB,GACf0qB,EAAK1qB,GAAe,WAAVwqB,EAAKxqB,EAGjB,OADAye,GAAOkL,EAAQc,EAAKvS,OAAOiS,EAAUnpB,IAAQ,IAAoB,EAAdA,EAAKX,QACjD2pB,EAAUL,EAAQe,EAAKxS,OAAOuG,GAAO,MAM9C,QAASkM,GAAS3H,GAChB,GAEI+F,GACA/oB,EAHA4qB,EAAS,mBACT1H,EAAS,EAGb,KAAKljB,EAAI,EAAGA,EAAIgjB,EAAM3iB,OAAQL,GAAK,EACjC+oB,EAAI/F,EAAMqH,WAAWrqB,GACrBkjB,GAAU0H,EAAOC,OAAQ9B,IAAM,EAAK,IAAQ6B,EAAOC,OAAW,GAAJ9B,EAE5D,OAAO7F,GAMT,QAAS4H,GAAa9H,GACpB,MAAO+H,UAAS9Z,mBAAmB+R,IAMrC,QAASgI,GAAOrrB,GACd,MAAO2qB,GAAQQ,EAAanrB,IAE9B,QAASsrB,GAAOtrB,GACd,MAAOgrB,GAASK,EAAOrrB,IAEzB,QAASurB,GAAW1G,EAAG+E,GACrB,MAAOgB,GAAYO,EAAatG,GAAIsG,EAAavB,IAEnD,QAAS4B,GAAW3G,EAAG+E,GACrB,MAAOoB,GAASO,EAAW1G,EAAG+E,IAGhC,QAASniB,GAAIgkB,EAAQ3hB,EAAK4hB,GACxB,MAAK5hB,GAMA4hB,EAGEH,EAAWzhB,EAAK2hB,GAFdD,EAAW1hB,EAAK2hB,GANlBC,EAGEL,EAAOI,GAFLH,EAAOG,GAUpBtsB,EAAOD,QAAUuI,YAEN,EAAE,EAAE,IAAI","file":"raven.min.js"} \ No newline at end of file +{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","consolePlugin","console","pluginOptions","logLevels","levels","push","callback","msg","data","captureMessage","level","pop","wrapConsoleMethod","wrapMethod","addPlugin","4","6","2","emberPlugin","Ember","_oldOnError","onerror","error","captureException","RSVP","on","reason","extra","context","3","RavenConfigError","message","name","prototype","constructor","utils","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","safeJoin","logger","Function","apply","7","5","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","sanitizeKeys","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isErrorEvent","isDOMError","isDOMException","isError","isObject","isPlainObject","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","sanitize","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","config","dsn","options","_logDebug","globalOptions","key","value","setDSN","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","toString","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","substr","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","func","undefined","wrap","_before","wrapped","deep","_ignoreNextOnError","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","T","event","unhandledPromiseRejection","B","_promiseRejectionHandler","bind","addEventListener","P","removeEventListener","ex","trimHeadFrames","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","U","currentOptions","exKeys","Object","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","setDataCallback","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","L","setTimeout","$","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","_","evtName","_keypressTimeout","target","category","ba","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","ca","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","C","_originalFunctionToString","Q","D","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","type","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","E","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","R","builtin","S","F","installer","concat","G","str","m","exec","allowSecretKey","J","port","A","V","stackInfo","_triggerEvent","_processException","lineno","X","frame","_normalizeFrame","in_app","ga","stackInfoUrl","normalized","filename","line","colno","column","function","fa","prefixedMessage","exception","values","culprit","ha","request","Referer","breadcrumbs","_trimBreadcrumbs","ia","urlProp","urlProps","ja","httpData","userAgent","User-Agent","referrer","y","_backoffDuration","_backoffStart","ma","na","current","last","oa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Y","baseData","project","platform","_getHttpData","serverName","server_name","_sanitizeData","forEach","random","_sendProcessedPayload","pa","ra","qa","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","sa","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","open","setRequestHeader","send","ta","hash","evaluated","z","Z","setUser","setReleaseContext","10","8","9","RavenConstructor","_Raven","noConflict","Client","what","supportsErrorEvent","ErrorEvent","supportsDOMError","DOMError","supportsDOMException","DOMException","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","wrappedCallback","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","sanitizeMask","safeInput","o_O","getLocationHref","getLocationOrigin","origin","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","responseText","sourceMaps","sourceMapAddress","charAt","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","string","raw"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file diff --git a/dist/console,require,vue/raven.js b/dist/console,require,vue/raven.js index a0a88322365b..0213037be77e 100644 --- a/dist/console,require,vue/raven.js +++ b/dist/console,require,vue/raven.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.24.2 (540f32b) | github.com/getsentry/raven-js */ +/*! Raven.js 3.25.0 (80dffad) | github.com/getsentry/raven-js */ /* * Includes TraceKit @@ -176,10 +176,12 @@ var md5 = _dereq_(11); var RavenConfigError = _dereq_(4); var utils = _dereq_(8); +var isErrorEvent = utils.isErrorEvent; +var isDOMError = utils.isDOMError; +var isDOMException = utils.isDOMException; var isError = utils.isError; var isObject = utils.isObject; var isPlainObject = utils.isPlainObject; -var isErrorEvent = utils.isErrorEvent; var isUndefined = utils.isUndefined; var isFunction = utils.isFunction; var isString = utils.isString; @@ -307,7 +309,7 @@ Raven.prototype = { // webpack (using a build step causes webpack #1617). Grunt verifies that // this value matches package.json during build. // See: https://github.com/getsentry/raven-js/issues/465 - VERSION: '3.24.2', + VERSION: '3.25.0', debug: false, @@ -639,6 +641,23 @@ Raven.prototype = { if (isErrorEvent(ex) && ex.error) { // If it is an ErrorEvent with `error` property, extract it to get actual Error ex = ex.error; + } else if (isDOMError(ex) || isDOMException(ex)) { + // If it is a DOMError or DOMException (which are legacy APIs, but still supported in some browsers) + // then we just extract the name and message, as they don't provide anything else + // https://developer.mozilla.org/en-US/docs/Web/API/DOMError + // https://developer.mozilla.org/en-US/docs/Web/API/DOMException + var name = ex.name || (isDOMError(ex) ? 'DOMError' : 'DOMException'); + var message = ex.message ? name + ': ' + ex.message : name; + + return this.captureMessage( + message, + objectMerge(options, { + // neither DOMError or DOMException provide stack trace and we most likely wont get it this way as well + // but it's barely any overhead so we may at least try + stacktrace: true, + trimHeadFrames: options.trimHeadFrames + 1 + }) + ); } else if (isError(ex)) { // we have a real Error object ex = ex; @@ -650,6 +669,7 @@ Raven.prototype = { ex = new Error(options.message); } else { // If none of previous checks were valid, then it means that + // it's not a DOMError/DOMException // it's not a plain Object // it's not a valid ErrorEvent (one with an error property) // it's not an Error @@ -2422,7 +2442,7 @@ function isObject(what) { // Yanked from https://git.io/vS8DV re-used under CC0 // with some tiny modifications function isError(value) { - switch ({}.toString.call(value)) { + switch (Object.prototype.toString.call(value)) { case '[object Error]': return true; case '[object Exception]': @@ -2435,7 +2455,15 @@ function isError(value) { } function isErrorEvent(value) { - return supportsErrorEvent() && {}.toString.call(value) === '[object ErrorEvent]'; + return Object.prototype.toString.call(value) === '[object ErrorEvent]'; +} + +function isDOMError(value) { + return Object.prototype.toString.call(value) === '[object DOMError]'; +} + +function isDOMException(value) { + return Object.prototype.toString.call(value) === '[object DOMException]'; } function isUndefined(what) { @@ -2478,6 +2506,24 @@ function supportsErrorEvent() { } } +function supportsDOMError() { + try { + new DOMError(''); // eslint-disable-line no-new + return true; + } catch (e) { + return false; + } +} + +function supportsDOMException() { + try { + new DOMException(''); // eslint-disable-line no-new + return true; + } catch (e) { + return false; + } +} + function supportsFetch() { if (!('fetch' in _window)) return false; @@ -2993,6 +3039,8 @@ module.exports = { isObject: isObject, isError: isError, isErrorEvent: isErrorEvent, + isDOMError: isDOMError, + isDOMException: isDOMException, isUndefined: isUndefined, isFunction: isFunction, isPlainObject: isPlainObject, @@ -3000,6 +3048,8 @@ module.exports = { isArray: isArray, isEmptyObject: isEmptyObject, supportsErrorEvent: supportsErrorEvent, + supportsDOMError: supportsDOMError, + supportsDOMException: supportsDOMException, supportsFetch: supportsFetch, supportsReferrerPolicy: supportsReferrerPolicy, supportsPromiseRejectionEvent: supportsPromiseRejectionEvent, @@ -3059,10 +3109,14 @@ var ERROR_TYPES_RE = /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Ran function getLocationHref() { if (typeof document === 'undefined' || document.location == null) return ''; - return document.location.href; } +function getLocationOrigin() { + if (typeof document === 'undefined' || document.location == null) return ''; + return document.location.origin; +} + /** * TraceKit.report: cross-browser processing of unhandled exceptions * @@ -3470,6 +3524,44 @@ TraceKit.computeStackTrace = (function computeStackTraceWrapper() { element.func = UNKNOWN_FUNCTION; } + if (element.url && element.url.substr(0, 5) === 'blob:') { + // Special case for handling JavaScript loaded into a blob. + // We use a synchronous AJAX request here as a blob is already in + // memory - it's not making a network request. This will generate a warning + // in the browser console, but there has already been an error so that's not + // that much of an issue. + var xhr = new XMLHttpRequest(); + xhr.open('GET', element.url, false); + xhr.send(null); + + // If we failed to download the source, skip this patch + if (xhr.status === 200) { + var source = xhr.responseText || ''; + + // We trim the source down to the last 300 characters as sourceMappingURL is always at the end of the file. + // Why 300? To be in line with: https://github.com/getsentry/sentry/blob/4af29e8f2350e20c28a6933354e4f42437b4ba42/src/sentry/lang/javascript/processor.py#L164-L175 + source = source.slice(-300); + + // Now we dig out the source map URL + var sourceMaps = source.match(/\/\/# sourceMappingURL=(.*)$/); + + // If we don't find a source map comment or we find more than one, continue on to the next element. + if (sourceMaps) { + var sourceMapAddress = sourceMaps[1]; + + // Now we check to see if it's a relative URL. + // If it is, convert it to an absolute one. + if (sourceMapAddress.charAt(0) === '~') { + sourceMapAddress = getLocationOrigin() + sourceMapAddress.slice(1); + } + + // Now we strip the '.map' off of the end of the URL and update the + // element so that Sentry can match the map to the blob. + element.url = sourceMapAddress.slice(0, -4); + } + } + } + stack.push(element); } diff --git a/dist/console,require,vue/raven.min.js b/dist/console,require,vue/raven.min.js index 988850d6ea32..5ea216be2253 100644 --- a/dist/console,require,vue/raven.min.js +++ b/dist/console,require,vue/raven.min.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.24.2 (540f32b) | github.com/getsentry/raven-js */ -!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.Raven=a()}}(function(){var a;return function b(a,c,d){function e(g,h){if(!c[g]){if(!a[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};a[g][0].call(k.exports,function(b){var c=a[g][1][b];return e(c?c:b)},k,k.exports,b,a,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;g":"anonymous component")+(a._isVue&&a.$options.__file?" at "+a.$options.__file:"")}function e(a,b){if(b=b||window.Vue,b&&b.config){var c=b.config.errorHandler;b.config.errorHandler=function(b,e,f){var g={};"[object Object]"===Object.prototype.toString.call(e)&&(g.componentName=d(e),g.propsData=e.$options.propsData),"undefined"!=typeof f&&(g.lifecycleHook=f),a.captureException(b,{extra:g}),"function"==typeof c&&c.call(this,b,e,f)}}}b.exports=e,a(7).addPlugin(b.exports)},{7:7}],4:[function(a,b,c){function d(a){this.name="RavenConfigError",this.message=a}d.prototype=new Error,d.prototype.constructor=d,b.exports=d},{}],5:[function(a,b,c){var d=a(8),e=function(a,b,c){var e=a[b],f=a;if(b in a){var g="warn"===b?"warning":b;a[b]=function(){var a=[].slice.call(arguments),h=d.safeJoin(a," "),i={level:g,logger:"console",extra:{arguments:a}};"assert"===b?a[0]===!1&&(h="Assertion failed: "+(d.safeJoin(a.slice(1)," ")||"console.assert"),i.extra.arguments=a.slice(1),c&&c(h,i)):c&&c(h,i),e&&Function.prototype.apply.call(e,f,a)}}};b.exports={wrapMethod:e}},{8:8}],6:[function(a,b,c){(function(c){function d(){return+new Date}function e(a,b){return q(b)?function(c){return b(c,a)}:b}function f(){this.a=!("object"!=typeof JSON||!JSON.stringify),this.b=!p(Q),this.c=!p(R),this.d=null,this.e=null,this.f=null,this.g=null,this.h=null,this.i=null,this.j={},this.k={release:P.SENTRY_RELEASE&&P.SENTRY_RELEASE.id,logger:"javascript",ignoreErrors:[],ignoreUrls:[],whitelistUrls:[],includePaths:[],headers:null,collectWindowErrors:!0,captureUnhandledRejections:!0,maxMessageLength:0,maxUrlLength:250,stackTraceLimit:50,autoBreadcrumbs:!0,instrument:!0,sampleRate:1,sanitizeKeys:[]},this.l={method:"POST",keepalive:!0,referrerPolicy:I()?"origin":""},this.m=0,this.n=!1,this.o=Error.stackTraceLimit,this.p=P.console||{},this.q={},this.r=[],this.s=d(),this.t=[],this.u=[],this.v=null,this.w=P.location,this.x=this.w&&this.w.href,this.y();for(var a in this.p)this.q[a]=this.p[a]}var g=a(9),h=a(10),i=a(11),j=a(4),k=a(8),l=k.isError,m=k.isObject,n=k.isPlainObject,o=k.isErrorEvent,p=k.isUndefined,q=k.isFunction,r=k.isString,s=k.isArray,t=k.isEmptyObject,u=k.each,v=k.objectMerge,w=k.truncate,x=k.objectFrozen,y=k.hasKey,z=k.joinRegExp,A=k.urlencode,B=k.uuid4,C=k.htmlTreeAsString,D=k.isSameException,E=k.isSameStacktrace,F=k.parseUrl,G=k.fill,H=k.supportsFetch,I=k.supportsReferrerPolicy,J=k.serializeKeysForMessage,K=k.serializeException,L=k.sanitize,M=a(5).wrapMethod,N="source protocol user pass host port path".split(" "),O=/^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/,P="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},Q=P.document,R=P.navigator;f.prototype={VERSION:"3.24.2",debug:!1,TraceKit:g,config:function(a,b){var c=this;if(c.g)return this.z("error","Error: Raven has already been configured"),c;if(!a)return c;var d=c.k;b&&u(b,function(a,b){"tags"===a||"extra"===a||"user"===a?c.j[a]=b:d[a]=b}),c.setDSN(a),d.ignoreErrors.push(/^Script error\.?$/),d.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/),d.ignoreErrors=z(d.ignoreErrors),d.ignoreUrls=!!d.ignoreUrls.length&&z(d.ignoreUrls),d.whitelistUrls=!!d.whitelistUrls.length&&z(d.whitelistUrls),d.includePaths=z(d.includePaths),d.maxBreadcrumbs=Math.max(0,Math.min(d.maxBreadcrumbs||100,100));var e={xhr:!0,console:!0,dom:!0,location:!0,sentry:!0},f=d.autoBreadcrumbs;"[object Object]"==={}.toString.call(f)?f=v(e,f):f!==!1&&(f=e),d.autoBreadcrumbs=f;var h={tryCatch:!0},i=d.instrument;return"[object Object]"==={}.toString.call(i)?i=v(h,i):i!==!1&&(i=h),d.instrument=i,g.collectWindowErrors=!!d.collectWindowErrors,c},install:function(){var a=this;return a.isSetup()&&!a.n&&(g.report.subscribe(function(){a.A.apply(a,arguments)}),a.k.captureUnhandledRejections&&a.B(),a.C(),a.k.instrument&&a.k.instrument.tryCatch&&a.D(),a.k.autoBreadcrumbs&&a.E(),a.F(),a.n=!0),Error.stackTraceLimit=a.k.stackTraceLimit,this},setDSN:function(a){var b=this,c=b.G(a),d=c.path.lastIndexOf("/"),e=c.path.substr(1,d);b.H=a,b.h=c.user,b.I=c.pass&&c.pass.substr(1),b.i=c.path.substr(d+1),b.g=b.J(c),b.K=b.g+"/"+e+"api/"+b.i+"/store/",this.y()},context:function(a,b,c){return q(a)&&(c=b||[],b=a,a=void 0),this.wrap(a,b).apply(this,c)},wrap:function(a,b,c){function d(){var d=[],f=arguments.length,g=!a||a&&a.deep!==!1;for(c&&q(c)&&c.apply(this,arguments);f--;)d[f]=g?e.wrap(a,arguments[f]):arguments[f];try{return b.apply(this,d)}catch(h){throw e.L(),e.captureException(h,a),h}}var e=this;if(p(b)&&!q(a))return a;if(q(a)&&(b=a,a=void 0),!q(b))return b;try{if(b.M)return b;if(b.N)return b.N}catch(f){return b}for(var g in b)y(b,g)&&(d[g]=b[g]);return d.prototype=b.prototype,b.N=d,d.M=!0,d.O=b,d},uninstall:function(){return g.report.uninstall(),this.P(),this.Q(),this.R(),this.S(),Error.stackTraceLimit=this.o,this.n=!1,this},T:function(a){this.z("debug","Raven caught unhandled promise rejection:",a),this.captureException(a.reason,{extra:{unhandledPromiseRejection:!0}})},B:function(){return this.T=this.T.bind(this),P.addEventListener&&P.addEventListener("unhandledrejection",this.T),this},P:function(){return P.removeEventListener&&P.removeEventListener("unhandledrejection",this.T),this},captureException:function(a,b){if(b=v({trimHeadFrames:0},b?b:{}),o(a)&&a.error)a=a.error;else if(l(a))a=a;else{if(!n(a))return this.captureMessage(a,v(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}));b=this.U(b,a),a=new Error(b.message)}this.d=a;try{var c=g.computeStackTrace(a);this.V(c,b)}catch(d){if(a!==d)throw d}return this},U:function(a,b){var c=Object.keys(b).sort(),d=v(a,{message:"Non-Error exception captured with keys: "+J(c),fingerprint:[i(c)],extra:a.extra||{}});return d.extra.W=K(b),d},captureMessage:function(a,b){if(!this.k.ignoreErrors.test||!this.k.ignoreErrors.test(a)){b=b||{},a+="";var c,d=v({message:a},b);try{throw new Error(a)}catch(e){c=e}c.name=null;var f=g.computeStackTrace(c),h=s(f.stack)&&f.stack[1];h&&"Raven.captureException"===h.func&&(h=f.stack[2]);var i=h&&h.url||"";if((!this.k.ignoreUrls.test||!this.k.ignoreUrls.test(i))&&(!this.k.whitelistUrls.test||this.k.whitelistUrls.test(i))){if(this.k.stacktrace||b&&b.stacktrace){d.fingerprint=null==d.fingerprint?a:d.fingerprint,b=v({trimHeadFrames:0},b),b.trimHeadFrames+=1;var j=this.X(f,b);d.stacktrace={frames:j.reverse()}}return d.fingerprint&&(d.fingerprint=s(d.fingerprint)?d.fingerprint:[d.fingerprint]),this.Y(d),this}}},captureBreadcrumb:function(a){var b=v({timestamp:d()/1e3},a);if(q(this.k.breadcrumbCallback)){var c=this.k.breadcrumbCallback(b);if(m(c)&&!t(c))b=c;else if(c===!1)return this}return this.u.push(b),this.u.length>this.k.maxBreadcrumbs&&this.u.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.r.push([a,b]),this.n&&this.F(),this},setUserContext:function(a){return this.j.user=a,this},setExtraContext:function(a){return this.Z("extra",a),this},setTagsContext:function(a){return this.Z("tags",a),this},clearContext:function(){return this.j={},this},getContext:function(){return JSON.parse(h(this.j))},setEnvironment:function(a){return this.k.environment=a,this},setRelease:function(a){return this.k.release=a,this},setDataCallback:function(a){var b=this.k.dataCallback;return this.k.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.k.breadcrumbCallback;return this.k.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.k.shouldSendCallback;return this.k.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.k.transport=a,this},lastException:function(){return this.d},lastEventId:function(){return this.f},isSetup:function(){return!!this.a&&(!!this.g||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.z("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=P.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(Q){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.H;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.j.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.J(this.G(c)),h=Q.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(Q.head||Q.body).appendChild(h)}},L:function(){var a=this;this.m+=1,setTimeout(function(){a.m-=1})},$:function(a,b){var c,d;if(this.b){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),Q.createEvent?(c=Q.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=Q.createEventObject(),c.eventType=a);for(d in b)y(b,d)&&(c[d]=b[d]);if(Q.createEvent)Q.dispatchEvent(c);else try{Q.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},_:function(a){var b=this;return function(c){if(b.aa=null,b.v!==c){b.v=c;var d;try{d=C(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ba:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.aa;g||a._("input")(c),clearTimeout(g),a.aa=setTimeout(function(){a.aa=null},b)}}},ca:function(a,b){var c=F(this.w.href),d=F(b),e=F(a);this.x=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},C:function(){var a=this;a.da=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.M?a.da.apply(this.O,arguments):a.da.apply(this,arguments)}},Q:function(){this.da&&(Function.prototype.toString=this.da)},D:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.ca(b.x,c+""),a.apply(this,arguments)}};G(history,"pushState",j,d),G(history,"replaceState",j,d)}if(c.console&&"console"in P&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};u(["debug","info","warn","error","log"],function(a,b){M(console,b,k)})}},R:function(){for(var a;this.t.length;){a=this.t.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},S:function(){for(var a in this.q)this.p[a]=this.q[a]},F:function(){var a=this;u(this.r,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},G:function(a){var b=O.exec(a),c={},d=7;try{for(;d--;)c[N[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.k.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},J:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},A:function(){this.m||this.V.apply(this,arguments)},V:function(a,b){var c=this.X(a,b);this.$("handle",{stackInfo:a,options:b}),this.fa(a.name,a.message,a.url,a.lineno,c,b)},X:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(u(a.stack,function(b,e){var f=c.ga(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.u,0)}),this.j.user&&(a.user=this.j.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),a=this.pa(a),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||t(a[b]))&&delete a[b]}),q(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!t(a)&&(!q(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.ma()?void this.z("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function B(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&j(b))for(c=b.split(/\s+/),f=0;fc?M(a,b-1):d}function N(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?T:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function O(a,b){function c(a){return k(a)?a.map(function(a){return c(a)}):i(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!k(b)||k(b)&&0===b.length)return a;var d,e=w(b),f="********";try{d=JSON.parse(P(a))}catch(g){return a}return c(d)}var P=a(10),Q="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},R=3,S=51200,T=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isUndefined:g,isFunction:h,isPlainObject:i,isString:j,isArray:k,isEmptyObject:l,supportsErrorEvent:m,supportsFetch:n,supportsReferrerPolicy:o,supportsPromiseRejectionEvent:p,wrappedCallback:q,each:r,objectMerge:s,truncate:u,objectFrozen:t,hasKey:v,joinRegExp:w,urlencode:x,uuid4:z,htmlTreeAsString:A,htmlElementAsString:B,isSameException:E,isSameStacktrace:F,parseUrl:y,fill:G,safeJoin:H,serializeException:M,serializeKeysForMessage:N,sanitize:O}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{10:10}],9:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}var e=a(8),f={collectWindowErrors:!0,debug:!1},g="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},h=[].slice,i="?",j=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;f.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function k(a,b){var c=null;if(!b||f.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(h.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,g,h){var l=null,m=e.isErrorEvent(h)?h.error:h,n=e.isErrorEvent(a)?a.message:a;if(v)f.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&e.isError(m))l=f.computeStackTrace(m),k(l,!0);else{var p,r={url:b,line:c,column:g},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(j);p&&(s=p[1],n=p[2])}r.func=i,l={name:s,message:n,url:d(),stack:[r]},k(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=g.onerror,g.onerror=l,r=!0)}function n(){r&&(g.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,k.apply(null,[a,!1].concat(b))}function p(a,b){var c=h.call(arguments,1);if(v){if(u===a)return;o()}var d=f.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),f.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,e,f=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,g=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,h=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,j=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,k=/\((\S*)(?::(\d+))(?::(\d+))\)/,l=a.stack.split("\n"),m=[],n=(/^(.*) is undefined$/.exec(a.message),0),o=l.length;n eval")>-1;q&&(b=j.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==n||c[5]||"undefined"==typeof a.columnNumber||(m[0].column=a.columnNumber+1),e={url:c[3],func:c[1]||i,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}!e.func&&e.line&&(e.func=i),m.push(e)}return m.length?{name:a.name,message:a.message,url:d(),stack:m}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=i),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,g){for(var h,j,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==e&&o!==f.report){if(j={url:null,func:i,line:null,column:null},o.name?j.func=o.name:(h=k.exec(o.toString()))&&(j.func=h[1]),"undefined"==typeof j.func)try{j.func=h.input.substring(0,h.input.indexOf("{"))}catch(p){}m[""+o]?n=!0:m[""+o]=!0,l.push(j)}g&&l.splice(0,g);var q={name:a.name,message:a.message,url:d(),stack:l};return b(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),q}function e(b,e){var g=null;e=null==e?0:+e;try{if(g=a(b))return g}catch(h){if(f.debug)throw h}try{if(g=c(b,e+1))return g}catch(h){if(f.debug)throw h}return{name:b.name,message:b.message,url:d()}}return e.augmentStackTraceWithInitialElement=b,e.computeStackTraceFromStackProp=a,e}(),b.exports=f}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{}); -},{8:8}],10:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}],11:[function(a,b,c){function d(a,b){var c=(65535&a)+(65535&b),d=(a>>16)+(b>>16)+(c>>16);return d<<16|65535&c}function e(a,b){return a<>>32-b}function f(a,b,c,f,g,h){return d(e(d(d(b,a),d(f,h)),g),c)}function g(a,b,c,d,e,g,h){return f(b&c|~b&d,a,b,e,g,h)}function h(a,b,c,d,e,g,h){return f(b&d|c&~d,a,b,e,g,h)}function i(a,b,c,d,e,g,h){return f(b^c^d,a,b,e,g,h)}function j(a,b,c,d,e,g,h){return f(c^(b|~d),a,b,e,g,h)}function k(a,b){a[b>>5]|=128<>>9<<4)+14]=b;var c,e,f,k,l,m=1732584193,n=-271733879,o=-1732584194,p=271733878;for(c=0;c>5]>>>b%32&255);return c}function m(a){var b,c=[];for(c[(a.length>>2)-1]=void 0,b=0;b>5]|=(255&a.charCodeAt(b/8))<16&&(e=k(e,8*a.length)),c=0;c<16;c+=1)f[c]=909522486^e[c],g[c]=1549556828^e[c];return d=k(f.concat(m(b)),512+8*b.length),l(k(g.concat(d),640))}function p(a){var b,c,d="0123456789abcdef",e="";for(c=0;c>>4&15)+d.charAt(15&b);return e}function q(a){return unescape(encodeURIComponent(a))}function r(a){return n(q(a))}function s(a){return p(r(a))}function t(a,b){return o(q(a),q(b))}function u(a,b){return p(t(a,b))}function v(a,b,c){return b?c?t(b,a):u(b,a):c?r(a):s(a)}b.exports=v},{}]},{},[7,1,2,3])(7)}); +/*! Raven.js 3.25.0 (80dffad) | github.com/getsentry/raven-js */ +!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.Raven=a()}}(function(){var a;return function b(a,c,d){function e(g,h){if(!c[g]){if(!a[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};a[g][0].call(k.exports,function(b){var c=a[g][1][b];return e(c?c:b)},k,k.exports,b,a,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;g":"anonymous component")+(a._isVue&&a.$options.__file?" at "+a.$options.__file:"")}function e(a,b){if(b=b||window.Vue,b&&b.config){var c=b.config.errorHandler;b.config.errorHandler=function(b,e,f){var g={};"[object Object]"===Object.prototype.toString.call(e)&&(g.componentName=d(e),g.propsData=e.$options.propsData),"undefined"!=typeof f&&(g.lifecycleHook=f),a.captureException(b,{extra:g}),"function"==typeof c&&c.call(this,b,e,f)}}}b.exports=e,a(7).addPlugin(b.exports)},{7:7}],4:[function(a,b,c){function d(a){this.name="RavenConfigError",this.message=a}d.prototype=new Error,d.prototype.constructor=d,b.exports=d},{}],5:[function(a,b,c){var d=a(8),e=function(a,b,c){var e=a[b],f=a;if(b in a){var g="warn"===b?"warning":b;a[b]=function(){var a=[].slice.call(arguments),h=d.safeJoin(a," "),i={level:g,logger:"console",extra:{arguments:a}};"assert"===b?a[0]===!1&&(h="Assertion failed: "+(d.safeJoin(a.slice(1)," ")||"console.assert"),i.extra.arguments=a.slice(1),c&&c(h,i)):c&&c(h,i),e&&Function.prototype.apply.call(e,f,a)}}};b.exports={wrapMethod:e}},{8:8}],6:[function(a,b,c){(function(c){function d(){return+new Date}function e(a,b){return s(b)?function(c){return b(c,a)}:b}function f(){this.a=!("object"!=typeof JSON||!JSON.stringify),this.b=!r(S),this.c=!r(T),this.d=null,this.e=null,this.f=null,this.g=null,this.h=null,this.i=null,this.j={},this.k={release:R.SENTRY_RELEASE&&R.SENTRY_RELEASE.id,logger:"javascript",ignoreErrors:[],ignoreUrls:[],whitelistUrls:[],includePaths:[],headers:null,collectWindowErrors:!0,captureUnhandledRejections:!0,maxMessageLength:0,maxUrlLength:250,stackTraceLimit:50,autoBreadcrumbs:!0,instrument:!0,sampleRate:1,sanitizeKeys:[]},this.l={method:"POST",keepalive:!0,referrerPolicy:K()?"origin":""},this.m=0,this.n=!1,this.o=Error.stackTraceLimit,this.p=R.console||{},this.q={},this.r=[],this.s=d(),this.t=[],this.u=[],this.v=null,this.w=R.location,this.x=this.w&&this.w.href,this.y();for(var a in this.p)this.q[a]=this.p[a]}var g=a(9),h=a(10),i=a(11),j=a(4),k=a(8),l=k.isErrorEvent,m=k.isDOMError,n=k.isDOMException,o=k.isError,p=k.isObject,q=k.isPlainObject,r=k.isUndefined,s=k.isFunction,t=k.isString,u=k.isArray,v=k.isEmptyObject,w=k.each,x=k.objectMerge,y=k.truncate,z=k.objectFrozen,A=k.hasKey,B=k.joinRegExp,C=k.urlencode,D=k.uuid4,E=k.htmlTreeAsString,F=k.isSameException,G=k.isSameStacktrace,H=k.parseUrl,I=k.fill,J=k.supportsFetch,K=k.supportsReferrerPolicy,L=k.serializeKeysForMessage,M=k.serializeException,N=k.sanitize,O=a(5).wrapMethod,P="source protocol user pass host port path".split(" "),Q=/^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/,R="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},S=R.document,T=R.navigator;f.prototype={VERSION:"3.25.0",debug:!1,TraceKit:g,config:function(a,b){var c=this;if(c.g)return this.z("error","Error: Raven has already been configured"),c;if(!a)return c;var d=c.k;b&&w(b,function(a,b){"tags"===a||"extra"===a||"user"===a?c.j[a]=b:d[a]=b}),c.setDSN(a),d.ignoreErrors.push(/^Script error\.?$/),d.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/),d.ignoreErrors=B(d.ignoreErrors),d.ignoreUrls=!!d.ignoreUrls.length&&B(d.ignoreUrls),d.whitelistUrls=!!d.whitelistUrls.length&&B(d.whitelistUrls),d.includePaths=B(d.includePaths),d.maxBreadcrumbs=Math.max(0,Math.min(d.maxBreadcrumbs||100,100));var e={xhr:!0,console:!0,dom:!0,location:!0,sentry:!0},f=d.autoBreadcrumbs;"[object Object]"==={}.toString.call(f)?f=x(e,f):f!==!1&&(f=e),d.autoBreadcrumbs=f;var h={tryCatch:!0},i=d.instrument;return"[object Object]"==={}.toString.call(i)?i=x(h,i):i!==!1&&(i=h),d.instrument=i,g.collectWindowErrors=!!d.collectWindowErrors,c},install:function(){var a=this;return a.isSetup()&&!a.n&&(g.report.subscribe(function(){a.A.apply(a,arguments)}),a.k.captureUnhandledRejections&&a.B(),a.C(),a.k.instrument&&a.k.instrument.tryCatch&&a.D(),a.k.autoBreadcrumbs&&a.E(),a.F(),a.n=!0),Error.stackTraceLimit=a.k.stackTraceLimit,this},setDSN:function(a){var b=this,c=b.G(a),d=c.path.lastIndexOf("/"),e=c.path.substr(1,d);b.H=a,b.h=c.user,b.I=c.pass&&c.pass.substr(1),b.i=c.path.substr(d+1),b.g=b.J(c),b.K=b.g+"/"+e+"api/"+b.i+"/store/",this.y()},context:function(a,b,c){return s(a)&&(c=b||[],b=a,a=void 0),this.wrap(a,b).apply(this,c)},wrap:function(a,b,c){function d(){var d=[],f=arguments.length,g=!a||a&&a.deep!==!1;for(c&&s(c)&&c.apply(this,arguments);f--;)d[f]=g?e.wrap(a,arguments[f]):arguments[f];try{return b.apply(this,d)}catch(h){throw e.L(),e.captureException(h,a),h}}var e=this;if(r(b)&&!s(a))return a;if(s(a)&&(b=a,a=void 0),!s(b))return b;try{if(b.M)return b;if(b.N)return b.N}catch(f){return b}for(var g in b)A(b,g)&&(d[g]=b[g]);return d.prototype=b.prototype,b.N=d,d.M=!0,d.O=b,d},uninstall:function(){return g.report.uninstall(),this.P(),this.Q(),this.R(),this.S(),Error.stackTraceLimit=this.o,this.n=!1,this},T:function(a){this.z("debug","Raven caught unhandled promise rejection:",a),this.captureException(a.reason,{extra:{unhandledPromiseRejection:!0}})},B:function(){return this.T=this.T.bind(this),R.addEventListener&&R.addEventListener("unhandledrejection",this.T),this},P:function(){return R.removeEventListener&&R.removeEventListener("unhandledrejection",this.T),this},captureException:function(a,b){if(b=x({trimHeadFrames:0},b?b:{}),l(a)&&a.error)a=a.error;else{if(m(a)||n(a)){var c=a.name||(m(a)?"DOMError":"DOMException"),d=a.message?c+": "+a.message:c;return this.captureMessage(d,x(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}))}if(o(a))a=a;else{if(!q(a))return this.captureMessage(a,x(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}));b=this.U(b,a),a=new Error(b.message)}}this.d=a;try{var e=g.computeStackTrace(a);this.V(e,b)}catch(f){if(a!==f)throw f}return this},U:function(a,b){var c=Object.keys(b).sort(),d=x(a,{message:"Non-Error exception captured with keys: "+L(c),fingerprint:[i(c)],extra:a.extra||{}});return d.extra.W=M(b),d},captureMessage:function(a,b){if(!this.k.ignoreErrors.test||!this.k.ignoreErrors.test(a)){b=b||{},a+="";var c,d=x({message:a},b);try{throw new Error(a)}catch(e){c=e}c.name=null;var f=g.computeStackTrace(c),h=u(f.stack)&&f.stack[1];h&&"Raven.captureException"===h.func&&(h=f.stack[2]);var i=h&&h.url||"";if((!this.k.ignoreUrls.test||!this.k.ignoreUrls.test(i))&&(!this.k.whitelistUrls.test||this.k.whitelistUrls.test(i))){if(this.k.stacktrace||b&&b.stacktrace){d.fingerprint=null==d.fingerprint?a:d.fingerprint,b=x({trimHeadFrames:0},b),b.trimHeadFrames+=1;var j=this.X(f,b);d.stacktrace={frames:j.reverse()}}return d.fingerprint&&(d.fingerprint=u(d.fingerprint)?d.fingerprint:[d.fingerprint]),this.Y(d),this}}},captureBreadcrumb:function(a){var b=x({timestamp:d()/1e3},a);if(s(this.k.breadcrumbCallback)){var c=this.k.breadcrumbCallback(b);if(p(c)&&!v(c))b=c;else if(c===!1)return this}return this.u.push(b),this.u.length>this.k.maxBreadcrumbs&&this.u.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.r.push([a,b]),this.n&&this.F(),this},setUserContext:function(a){return this.j.user=a,this},setExtraContext:function(a){return this.Z("extra",a),this},setTagsContext:function(a){return this.Z("tags",a),this},clearContext:function(){return this.j={},this},getContext:function(){return JSON.parse(h(this.j))},setEnvironment:function(a){return this.k.environment=a,this},setRelease:function(a){return this.k.release=a,this},setDataCallback:function(a){var b=this.k.dataCallback;return this.k.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.k.breadcrumbCallback;return this.k.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.k.shouldSendCallback;return this.k.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.k.transport=a,this},lastException:function(){return this.d},lastEventId:function(){return this.f},isSetup:function(){return!!this.a&&(!!this.g||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.z("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=R.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(S){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.H;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.j.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.J(this.G(c)),h=S.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(S.head||S.body).appendChild(h)}},L:function(){var a=this;this.m+=1,setTimeout(function(){a.m-=1})},$:function(a,b){var c,d;if(this.b){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),S.createEvent?(c=S.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=S.createEventObject(),c.eventType=a);for(d in b)A(b,d)&&(c[d]=b[d]);if(S.createEvent)S.dispatchEvent(c);else try{S.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},_:function(a){var b=this;return function(c){if(b.aa=null,b.v!==c){b.v=c;var d;try{d=E(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ba:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.aa;g||a._("input")(c),clearTimeout(g),a.aa=setTimeout(function(){a.aa=null},b)}}},ca:function(a,b){var c=H(this.w.href),d=H(b),e=H(a);this.x=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},C:function(){var a=this;a.da=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.M?a.da.apply(this.O,arguments):a.da.apply(this,arguments)}},Q:function(){this.da&&(Function.prototype.toString=this.da)},D:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.ca(b.x,c+""),a.apply(this,arguments)}};I(history,"pushState",j,d),I(history,"replaceState",j,d)}if(c.console&&"console"in R&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};w(["debug","info","warn","error","log"],function(a,b){O(console,b,k)})}},R:function(){for(var a;this.t.length;){a=this.t.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},S:function(){for(var a in this.q)this.p[a]=this.q[a]},F:function(){var a=this;w(this.r,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},G:function(a){var b=Q.exec(a),c={},d=7;try{for(;d--;)c[P[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.k.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},J:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},A:function(){this.m||this.V.apply(this,arguments)},V:function(a,b){var c=this.X(a,b);this.$("handle",{stackInfo:a,options:b}),this.fa(a.name,a.message,a.url,a.lineno,c,b)},X:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(w(a.stack,function(b,e){var f=c.ga(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.u,0)}),this.j.user&&(a.user=this.j.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),a=this.pa(a),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||v(a[b]))&&delete a[b]}),s(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!v(a)&&(!s(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.ma()?void this.z("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function F(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&l(b))for(c=b.split(/\s+/),f=0;fc?Q(a,b-1):d}function R(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?X:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function S(a,b){function c(a){return m(a)?a.map(function(a){return c(a)}):k(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!m(b)||m(b)&&0===b.length)return a;var d,e=A(b),f="********";try{d=JSON.parse(T(a))}catch(g){return a}return c(d)}var T=a(10),U="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},V=3,W=51200,X=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isDOMError:g,isDOMException:h,isUndefined:i,isFunction:j,isPlainObject:k,isString:l,isArray:m,isEmptyObject:n,supportsErrorEvent:o,supportsDOMError:p,supportsDOMException:q,supportsFetch:r,supportsReferrerPolicy:s,supportsPromiseRejectionEvent:t,wrappedCallback:u,each:v,objectMerge:w,truncate:y,objectFrozen:x,hasKey:z,joinRegExp:A,urlencode:B,uuid4:D,htmlTreeAsString:E,htmlElementAsString:F,isSameException:I,isSameStacktrace:J,parseUrl:C,fill:K,safeJoin:L,serializeException:Q,serializeKeysForMessage:R,sanitize:S}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{10:10}],9:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}function e(){return"undefined"==typeof document||null==document.location?"":document.location.origin}var f=a(8),g={collectWindowErrors:!0,debug:!1},h="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},i=[].slice,j="?",k=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;g.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function e(a,b){var c=null;if(!b||g.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(i.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,h,i){var l=null,m=f.isErrorEvent(i)?i.error:i,n=f.isErrorEvent(a)?a.message:a;if(v)g.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&f.isError(m))l=g.computeStackTrace(m),e(l,!0);else{var p,r={url:b,line:c,column:h},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(k);p&&(s=p[1],n=p[2])}r.func=j,l={name:s,message:n,url:d(),stack:[r]},e(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=h.onerror,h.onerror=l,r=!0)}function n(){r&&(h.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,e.apply(null,[a,!1].concat(b))}function p(a,b){var c=i.call(arguments,1);if(v){if(u===a)return;o()}var d=g.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),g.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,f,g=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,h=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,i=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,k=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,l=/\((\S*)(?::(\d+))(?::(\d+))\)/,m=a.stack.split("\n"),n=[],o=(/^(.*) is undefined$/.exec(a.message),0),p=m.length;o eval")>-1;r&&(b=k.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==o||c[5]||"undefined"==typeof a.columnNumber||(n[0].column=a.columnNumber+1),f={url:c[3],func:c[1]||j,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}if(!f.func&&f.line&&(f.func=j),f.url&&"blob:"===f.url.substr(0,5)){var s=new XMLHttpRequest;if(s.open("GET",f.url,!1),s.send(null),200===s.status){var t=s.responseText||"";t=t.slice(-300);var u=t.match(/\/\/# sourceMappingURL=(.*)$/);if(u){var v=u[1];"~"===v.charAt(0)&&(v=e()+v.slice(1)),f.url=v.slice(0,-4)}}}n.push(f)}return n.length?{name:a.name,message:a.message,url:d(),stack:n}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=j),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line, +!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,e){for(var h,i,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==f&&o!==g.report){if(i={url:null,func:j,line:null,column:null},o.name?i.func=o.name:(h=k.exec(o.toString()))&&(i.func=h[1]),"undefined"==typeof i.func)try{i.func=h.input.substring(0,h.input.indexOf("{"))}catch(p){}m[""+o]?n=!0:m[""+o]=!0,l.push(i)}e&&l.splice(0,e);var q={name:a.name,message:a.message,url:d(),stack:l};return b(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),q}function f(b,e){var f=null;e=null==e?0:+e;try{if(f=a(b))return f}catch(h){if(g.debug)throw h}try{if(f=c(b,e+1))return f}catch(h){if(g.debug)throw h}return{name:b.name,message:b.message,url:d()}}return f.augmentStackTraceWithInitialElement=b,f.computeStackTraceFromStackProp=a,f}(),b.exports=g}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{8:8}],10:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}],11:[function(a,b,c){function d(a,b){var c=(65535&a)+(65535&b),d=(a>>16)+(b>>16)+(c>>16);return d<<16|65535&c}function e(a,b){return a<>>32-b}function f(a,b,c,f,g,h){return d(e(d(d(b,a),d(f,h)),g),c)}function g(a,b,c,d,e,g,h){return f(b&c|~b&d,a,b,e,g,h)}function h(a,b,c,d,e,g,h){return f(b&d|c&~d,a,b,e,g,h)}function i(a,b,c,d,e,g,h){return f(b^c^d,a,b,e,g,h)}function j(a,b,c,d,e,g,h){return f(c^(b|~d),a,b,e,g,h)}function k(a,b){a[b>>5]|=128<>>9<<4)+14]=b;var c,e,f,k,l,m=1732584193,n=-271733879,o=-1732584194,p=271733878;for(c=0;c>5]>>>b%32&255);return c}function m(a){var b,c=[];for(c[(a.length>>2)-1]=void 0,b=0;b>5]|=(255&a.charCodeAt(b/8))<16&&(e=k(e,8*a.length)),c=0;c<16;c+=1)f[c]=909522486^e[c],g[c]=1549556828^e[c];return d=k(f.concat(m(b)),512+8*b.length),l(k(g.concat(d),640))}function p(a){var b,c,d="0123456789abcdef",e="";for(c=0;c>>4&15)+d.charAt(15&b);return e}function q(a){return unescape(encodeURIComponent(a))}function r(a){return n(q(a))}function s(a){return p(r(a))}function t(a,b){return o(q(a),q(b))}function u(a,b){return p(t(a,b))}function v(a,b,c){return b?c?t(b,a):u(b,a):c?r(a):s(a)}b.exports=v},{}]},{},[7,1,2,3])(7)}); //# sourceMappingURL=raven.min.js.map \ No newline at end of file diff --git a/dist/console,require,vue/raven.min.js.map b/dist/console,require,vue/raven.min.js.map index 92b3054fe3c9..b22f8ec1c8dc 100644 --- a/dist/console,require,vue/raven.min.js.map +++ b/dist/console,require,vue/raven.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","consolePlugin","console","pluginOptions","logLevels","levels","push","callback","msg","data","captureMessage","level","pop","wrapConsoleMethod","wrapMethod","addPlugin","5","7","2","requirePlugin","wrap","deep","3","formatComponentName","vm","$root","name","_isVue","$options","_componentTag","__file","vuePlugin","Vue","config","_oldOnError","errorHandler","error","info","metaData","Object","prototype","toString","componentName","propsData","lifecycleHook","captureException","extra","4","RavenConfigError","message","constructor","utils","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","safeJoin","logger","Function","apply","8","6","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","sanitizeKeys","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isError","isObject","isPlainObject","isErrorEvent","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","sanitize","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","dsn","options","_logDebug","globalOptions","key","value","setDSN","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","substr","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","context","func","undefined","_before","wrapped","_ignoreNextOnError","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","T","event","reason","unhandledPromiseRejection","B","_promiseRejectionHandler","bind","addEventListener","P","removeEventListener","ex","trimHeadFrames","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","U","currentOptions","exKeys","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","setDataCallback","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","L","setTimeout","$","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","_","evtName","_keypressTimeout","target","category","ba","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","ca","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","C","_originalFunctionToString","Q","D","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","type","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","E","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","R","builtin","S","F","installer","concat","G","str","m","exec","allowSecretKey","J","port","A","V","stackInfo","_triggerEvent","_processException","lineno","X","frame","_normalizeFrame","in_app","ga","stackInfoUrl","normalized","filename","line","colno","column","function","fa","prefixedMessage","exception","values","culprit","ha","request","Referer","breadcrumbs","_trimBreadcrumbs","ia","urlProp","urlProps","ja","httpData","userAgent","User-Agent","referrer","y","_backoffDuration","_backoffStart","ma","na","current","last","oa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Y","baseData","project","platform","_getHttpData","serverName","server_name","_sanitizeData","forEach","random","_sendProcessedPayload","pa","ra","qa","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","sa","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","onerror","open","setRequestHeader","send","ta","hash","evaluated","z","Z","setUser","setReleaseContext","10","11","9","RavenConstructor","_Raven","noConflict","Client","what","supportsErrorEvent","ErrorEvent","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","wrappedCallback","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","sanitizeMask","safeInput","o_O","getLocationHref","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","charAt","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","string","raw"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file +{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","consolePlugin","console","pluginOptions","logLevels","levels","push","callback","msg","data","captureMessage","level","pop","wrapConsoleMethod","wrapMethod","addPlugin","5","7","2","requirePlugin","wrap","deep","3","formatComponentName","vm","$root","name","_isVue","$options","_componentTag","__file","vuePlugin","Vue","config","_oldOnError","errorHandler","error","info","metaData","Object","prototype","toString","componentName","propsData","lifecycleHook","captureException","extra","4","RavenConfigError","message","constructor","utils","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","safeJoin","logger","Function","apply","8","6","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","sanitizeKeys","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isErrorEvent","isDOMError","isDOMException","isError","isObject","isPlainObject","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","sanitize","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","dsn","options","_logDebug","globalOptions","key","value","setDSN","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","substr","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","context","func","undefined","_before","wrapped","_ignoreNextOnError","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","T","event","reason","unhandledPromiseRejection","B","_promiseRejectionHandler","bind","addEventListener","P","removeEventListener","ex","trimHeadFrames","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","U","currentOptions","exKeys","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","setDataCallback","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","L","setTimeout","$","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","_","evtName","_keypressTimeout","target","category","ba","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","ca","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","C","_originalFunctionToString","Q","D","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","type","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","E","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","R","builtin","S","F","installer","concat","G","str","m","exec","allowSecretKey","J","port","A","V","stackInfo","_triggerEvent","_processException","lineno","X","frame","_normalizeFrame","in_app","ga","stackInfoUrl","normalized","filename","line","colno","column","function","fa","prefixedMessage","exception","values","culprit","ha","request","Referer","breadcrumbs","_trimBreadcrumbs","ia","urlProp","urlProps","ja","httpData","userAgent","User-Agent","referrer","y","_backoffDuration","_backoffStart","ma","na","current","last","oa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Y","baseData","project","platform","_getHttpData","serverName","server_name","_sanitizeData","forEach","random","_sendProcessedPayload","pa","ra","qa","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","sa","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","onerror","open","setRequestHeader","send","ta","hash","evaluated","z","Z","setUser","setReleaseContext","10","11","9","RavenConstructor","_Raven","noConflict","Client","what","supportsErrorEvent","ErrorEvent","supportsDOMError","DOMError","supportsDOMException","DOMException","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","wrappedCallback","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","sanitizeMask","safeInput","o_O","getLocationHref","getLocationOrigin","origin","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","responseText","sourceMaps","sourceMapAddress","charAt","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","string","raw"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file diff --git a/dist/console,require/raven.js b/dist/console,require/raven.js index 20c588fdc42f..ae3194869ca9 100644 --- a/dist/console,require/raven.js +++ b/dist/console,require/raven.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.24.2 (540f32b) | github.com/getsentry/raven-js */ +/*! Raven.js 3.25.0 (80dffad) | github.com/getsentry/raven-js */ /* * Includes TraceKit @@ -126,10 +126,12 @@ var md5 = _dereq_(10); var RavenConfigError = _dereq_(3); var utils = _dereq_(7); +var isErrorEvent = utils.isErrorEvent; +var isDOMError = utils.isDOMError; +var isDOMException = utils.isDOMException; var isError = utils.isError; var isObject = utils.isObject; var isPlainObject = utils.isPlainObject; -var isErrorEvent = utils.isErrorEvent; var isUndefined = utils.isUndefined; var isFunction = utils.isFunction; var isString = utils.isString; @@ -257,7 +259,7 @@ Raven.prototype = { // webpack (using a build step causes webpack #1617). Grunt verifies that // this value matches package.json during build. // See: https://github.com/getsentry/raven-js/issues/465 - VERSION: '3.24.2', + VERSION: '3.25.0', debug: false, @@ -589,6 +591,23 @@ Raven.prototype = { if (isErrorEvent(ex) && ex.error) { // If it is an ErrorEvent with `error` property, extract it to get actual Error ex = ex.error; + } else if (isDOMError(ex) || isDOMException(ex)) { + // If it is a DOMError or DOMException (which are legacy APIs, but still supported in some browsers) + // then we just extract the name and message, as they don't provide anything else + // https://developer.mozilla.org/en-US/docs/Web/API/DOMError + // https://developer.mozilla.org/en-US/docs/Web/API/DOMException + var name = ex.name || (isDOMError(ex) ? 'DOMError' : 'DOMException'); + var message = ex.message ? name + ': ' + ex.message : name; + + return this.captureMessage( + message, + objectMerge(options, { + // neither DOMError or DOMException provide stack trace and we most likely wont get it this way as well + // but it's barely any overhead so we may at least try + stacktrace: true, + trimHeadFrames: options.trimHeadFrames + 1 + }) + ); } else if (isError(ex)) { // we have a real Error object ex = ex; @@ -600,6 +619,7 @@ Raven.prototype = { ex = new Error(options.message); } else { // If none of previous checks were valid, then it means that + // it's not a DOMError/DOMException // it's not a plain Object // it's not a valid ErrorEvent (one with an error property) // it's not an Error @@ -2372,7 +2392,7 @@ function isObject(what) { // Yanked from https://git.io/vS8DV re-used under CC0 // with some tiny modifications function isError(value) { - switch ({}.toString.call(value)) { + switch (Object.prototype.toString.call(value)) { case '[object Error]': return true; case '[object Exception]': @@ -2385,7 +2405,15 @@ function isError(value) { } function isErrorEvent(value) { - return supportsErrorEvent() && {}.toString.call(value) === '[object ErrorEvent]'; + return Object.prototype.toString.call(value) === '[object ErrorEvent]'; +} + +function isDOMError(value) { + return Object.prototype.toString.call(value) === '[object DOMError]'; +} + +function isDOMException(value) { + return Object.prototype.toString.call(value) === '[object DOMException]'; } function isUndefined(what) { @@ -2428,6 +2456,24 @@ function supportsErrorEvent() { } } +function supportsDOMError() { + try { + new DOMError(''); // eslint-disable-line no-new + return true; + } catch (e) { + return false; + } +} + +function supportsDOMException() { + try { + new DOMException(''); // eslint-disable-line no-new + return true; + } catch (e) { + return false; + } +} + function supportsFetch() { if (!('fetch' in _window)) return false; @@ -2943,6 +2989,8 @@ module.exports = { isObject: isObject, isError: isError, isErrorEvent: isErrorEvent, + isDOMError: isDOMError, + isDOMException: isDOMException, isUndefined: isUndefined, isFunction: isFunction, isPlainObject: isPlainObject, @@ -2950,6 +2998,8 @@ module.exports = { isArray: isArray, isEmptyObject: isEmptyObject, supportsErrorEvent: supportsErrorEvent, + supportsDOMError: supportsDOMError, + supportsDOMException: supportsDOMException, supportsFetch: supportsFetch, supportsReferrerPolicy: supportsReferrerPolicy, supportsPromiseRejectionEvent: supportsPromiseRejectionEvent, @@ -3009,10 +3059,14 @@ var ERROR_TYPES_RE = /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Ran function getLocationHref() { if (typeof document === 'undefined' || document.location == null) return ''; - return document.location.href; } +function getLocationOrigin() { + if (typeof document === 'undefined' || document.location == null) return ''; + return document.location.origin; +} + /** * TraceKit.report: cross-browser processing of unhandled exceptions * @@ -3420,6 +3474,44 @@ TraceKit.computeStackTrace = (function computeStackTraceWrapper() { element.func = UNKNOWN_FUNCTION; } + if (element.url && element.url.substr(0, 5) === 'blob:') { + // Special case for handling JavaScript loaded into a blob. + // We use a synchronous AJAX request here as a blob is already in + // memory - it's not making a network request. This will generate a warning + // in the browser console, but there has already been an error so that's not + // that much of an issue. + var xhr = new XMLHttpRequest(); + xhr.open('GET', element.url, false); + xhr.send(null); + + // If we failed to download the source, skip this patch + if (xhr.status === 200) { + var source = xhr.responseText || ''; + + // We trim the source down to the last 300 characters as sourceMappingURL is always at the end of the file. + // Why 300? To be in line with: https://github.com/getsentry/sentry/blob/4af29e8f2350e20c28a6933354e4f42437b4ba42/src/sentry/lang/javascript/processor.py#L164-L175 + source = source.slice(-300); + + // Now we dig out the source map URL + var sourceMaps = source.match(/\/\/# sourceMappingURL=(.*)$/); + + // If we don't find a source map comment or we find more than one, continue on to the next element. + if (sourceMaps) { + var sourceMapAddress = sourceMaps[1]; + + // Now we check to see if it's a relative URL. + // If it is, convert it to an absolute one. + if (sourceMapAddress.charAt(0) === '~') { + sourceMapAddress = getLocationOrigin() + sourceMapAddress.slice(1); + } + + // Now we strip the '.map' off of the end of the URL and update the + // element so that Sentry can match the map to the blob. + element.url = sourceMapAddress.slice(0, -4); + } + } + } + stack.push(element); } diff --git a/dist/console,require/raven.min.js b/dist/console,require/raven.min.js index c80b5efd7a0c..79e9af2a36c0 100644 --- a/dist/console,require/raven.min.js +++ b/dist/console,require/raven.min.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.24.2 (540f32b) | github.com/getsentry/raven-js */ -!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.Raven=a()}}(function(){var a;return function b(a,c,d){function e(g,h){if(!c[g]){if(!a[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};a[g][0].call(k.exports,function(b){var c=a[g][1][b];return e(c?c:b)},k,k.exports,b,a,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;gthis.k.maxBreadcrumbs&&this.u.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.r.push([a,b]),this.n&&this.F(),this},setUserContext:function(a){return this.j.user=a,this},setExtraContext:function(a){return this.Z("extra",a),this},setTagsContext:function(a){return this.Z("tags",a),this},clearContext:function(){return this.j={},this},getContext:function(){return JSON.parse(h(this.j))},setEnvironment:function(a){return this.k.environment=a,this},setRelease:function(a){return this.k.release=a,this},setDataCallback:function(a){var b=this.k.dataCallback;return this.k.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.k.breadcrumbCallback;return this.k.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.k.shouldSendCallback;return this.k.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.k.transport=a,this},lastException:function(){return this.d},lastEventId:function(){return this.f},isSetup:function(){return!!this.a&&(!!this.g||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.z("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=P.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(Q){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.H;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.j.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.J(this.G(c)),h=Q.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(Q.head||Q.body).appendChild(h)}},L:function(){var a=this;this.m+=1,setTimeout(function(){a.m-=1})},$:function(a,b){var c,d;if(this.b){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),Q.createEvent?(c=Q.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=Q.createEventObject(),c.eventType=a);for(d in b)y(b,d)&&(c[d]=b[d]);if(Q.createEvent)Q.dispatchEvent(c);else try{Q.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},_:function(a){var b=this;return function(c){if(b.aa=null,b.v!==c){b.v=c;var d;try{d=C(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ba:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.aa;g||a._("input")(c),clearTimeout(g),a.aa=setTimeout(function(){a.aa=null},b)}}},ca:function(a,b){var c=F(this.w.href),d=F(b),e=F(a);this.x=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},C:function(){var a=this;a.da=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.M?a.da.apply(this.O,arguments):a.da.apply(this,arguments)}},Q:function(){this.da&&(Function.prototype.toString=this.da)},D:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.ca(b.x,c+""),a.apply(this,arguments)}};G(history,"pushState",j,d),G(history,"replaceState",j,d)}if(c.console&&"console"in P&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};u(["debug","info","warn","error","log"],function(a,b){M(console,b,k)})}},R:function(){for(var a;this.t.length;){a=this.t.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},S:function(){for(var a in this.q)this.p[a]=this.q[a]},F:function(){var a=this;u(this.r,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},G:function(a){var b=O.exec(a),c={},d=7;try{for(;d--;)c[N[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.k.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},J:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},A:function(){this.m||this.V.apply(this,arguments)},V:function(a,b){var c=this.X(a,b);this.$("handle",{stackInfo:a,options:b}),this.fa(a.name,a.message,a.url,a.lineno,c,b)},X:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(u(a.stack,function(b,e){var f=c.ga(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.u,0)}),this.j.user&&(a.user=this.j.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),a=this.pa(a),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||t(a[b]))&&delete a[b]}),q(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!t(a)&&(!q(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.ma()?void this.z("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function B(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&j(b))for(c=b.split(/\s+/),f=0;fc?M(a,b-1):d}function N(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?T:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function O(a,b){function c(a){return k(a)?a.map(function(a){return c(a)}):i(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!k(b)||k(b)&&0===b.length)return a;var d,e=w(b),f="********";try{d=JSON.parse(P(a))}catch(g){return a}return c(d)}var P=a(9),Q="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},R=3,S=51200,T=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isUndefined:g,isFunction:h,isPlainObject:i,isString:j,isArray:k,isEmptyObject:l,supportsErrorEvent:m,supportsFetch:n,supportsReferrerPolicy:o,supportsPromiseRejectionEvent:p,wrappedCallback:q,each:r,objectMerge:s,truncate:u,objectFrozen:t,hasKey:v,joinRegExp:w,urlencode:x,uuid4:z,htmlTreeAsString:A,htmlElementAsString:B,isSameException:E,isSameStacktrace:F,parseUrl:y,fill:G,safeJoin:H,serializeException:M,serializeKeysForMessage:N,sanitize:O}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{9:9}],8:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}var e=a(7),f={collectWindowErrors:!0,debug:!1},g="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},h=[].slice,i="?",j=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;f.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function k(a,b){var c=null;if(!b||f.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(h.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,g,h){var l=null,m=e.isErrorEvent(h)?h.error:h,n=e.isErrorEvent(a)?a.message:a;if(v)f.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&e.isError(m))l=f.computeStackTrace(m),k(l,!0);else{var p,r={url:b,line:c,column:g},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(j);p&&(s=p[1],n=p[2])}r.func=i,l={name:s,message:n,url:d(),stack:[r]},k(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=g.onerror,g.onerror=l,r=!0)}function n(){r&&(g.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,k.apply(null,[a,!1].concat(b))}function p(a,b){var c=h.call(arguments,1);if(v){if(u===a)return;o()}var d=f.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),f.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,e,f=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,g=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,h=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,j=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,k=/\((\S*)(?::(\d+))(?::(\d+))\)/,l=a.stack.split("\n"),m=[],n=(/^(.*) is undefined$/.exec(a.message),0),o=l.length;n eval")>-1;q&&(b=j.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==n||c[5]||"undefined"==typeof a.columnNumber||(m[0].column=a.columnNumber+1),e={url:c[3],func:c[1]||i,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}!e.func&&e.line&&(e.func=i),m.push(e)}return m.length?{name:a.name,message:a.message,url:d(),stack:m}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=i),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,g){for(var h,j,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==e&&o!==f.report){if(j={url:null,func:i,line:null,column:null},o.name?j.func=o.name:(h=k.exec(o.toString()))&&(j.func=h[1]),"undefined"==typeof j.func)try{j.func=h.input.substring(0,h.input.indexOf("{"))}catch(p){}m[""+o]?n=!0:m[""+o]=!0,l.push(j)}g&&l.splice(0,g);var q={name:a.name,message:a.message,url:d(),stack:l};return b(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),q}function e(b,e){var g=null;e=null==e?0:+e;try{if(g=a(b))return g}catch(h){if(f.debug)throw h}try{if(g=c(b,e+1))return g}catch(h){if(f.debug)throw h}return{name:b.name,message:b.message,url:d()}}return e.augmentStackTraceWithInitialElement=b,e.computeStackTraceFromStackProp=a,e}(),b.exports=f}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{7:7}],9:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h); -return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}],10:[function(a,b,c){function d(a,b){var c=(65535&a)+(65535&b),d=(a>>16)+(b>>16)+(c>>16);return d<<16|65535&c}function e(a,b){return a<>>32-b}function f(a,b,c,f,g,h){return d(e(d(d(b,a),d(f,h)),g),c)}function g(a,b,c,d,e,g,h){return f(b&c|~b&d,a,b,e,g,h)}function h(a,b,c,d,e,g,h){return f(b&d|c&~d,a,b,e,g,h)}function i(a,b,c,d,e,g,h){return f(b^c^d,a,b,e,g,h)}function j(a,b,c,d,e,g,h){return f(c^(b|~d),a,b,e,g,h)}function k(a,b){a[b>>5]|=128<>>9<<4)+14]=b;var c,e,f,k,l,m=1732584193,n=-271733879,o=-1732584194,p=271733878;for(c=0;c>5]>>>b%32&255);return c}function m(a){var b,c=[];for(c[(a.length>>2)-1]=void 0,b=0;b>5]|=(255&a.charCodeAt(b/8))<16&&(e=k(e,8*a.length)),c=0;c<16;c+=1)f[c]=909522486^e[c],g[c]=1549556828^e[c];return d=k(f.concat(m(b)),512+8*b.length),l(k(g.concat(d),640))}function p(a){var b,c,d="0123456789abcdef",e="";for(c=0;c>>4&15)+d.charAt(15&b);return e}function q(a){return unescape(encodeURIComponent(a))}function r(a){return n(q(a))}function s(a){return p(r(a))}function t(a,b){return o(q(a),q(b))}function u(a,b){return p(t(a,b))}function v(a,b,c){return b?c?t(b,a):u(b,a):c?r(a):s(a)}b.exports=v},{}]},{},[6,1,2])(6)}); +/*! Raven.js 3.25.0 (80dffad) | github.com/getsentry/raven-js */ +!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.Raven=a()}}(function(){var a;return function b(a,c,d){function e(g,h){if(!c[g]){if(!a[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};a[g][0].call(k.exports,function(b){var c=a[g][1][b];return e(c?c:b)},k,k.exports,b,a,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;gthis.k.maxBreadcrumbs&&this.u.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.r.push([a,b]),this.n&&this.F(),this},setUserContext:function(a){return this.j.user=a,this},setExtraContext:function(a){return this.Z("extra",a),this},setTagsContext:function(a){return this.Z("tags",a),this},clearContext:function(){return this.j={},this},getContext:function(){return JSON.parse(h(this.j))},setEnvironment:function(a){return this.k.environment=a,this},setRelease:function(a){return this.k.release=a,this},setDataCallback:function(a){var b=this.k.dataCallback;return this.k.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.k.breadcrumbCallback;return this.k.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.k.shouldSendCallback;return this.k.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.k.transport=a,this},lastException:function(){return this.d},lastEventId:function(){return this.f},isSetup:function(){return!!this.a&&(!!this.g||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.z("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=R.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(S){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.H;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.j.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.J(this.G(c)),h=S.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(S.head||S.body).appendChild(h)}},L:function(){var a=this;this.m+=1,setTimeout(function(){a.m-=1})},$:function(a,b){var c,d;if(this.b){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),S.createEvent?(c=S.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=S.createEventObject(),c.eventType=a);for(d in b)A(b,d)&&(c[d]=b[d]);if(S.createEvent)S.dispatchEvent(c);else try{S.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},_:function(a){var b=this;return function(c){if(b.aa=null,b.v!==c){b.v=c;var d;try{d=E(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ba:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.aa;g||a._("input")(c),clearTimeout(g),a.aa=setTimeout(function(){a.aa=null},b)}}},ca:function(a,b){var c=H(this.w.href),d=H(b),e=H(a);this.x=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},C:function(){var a=this;a.da=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.M?a.da.apply(this.O,arguments):a.da.apply(this,arguments)}},Q:function(){this.da&&(Function.prototype.toString=this.da)},D:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.ca(b.x,c+""),a.apply(this,arguments)}};I(history,"pushState",j,d),I(history,"replaceState",j,d)}if(c.console&&"console"in R&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};w(["debug","info","warn","error","log"],function(a,b){O(console,b,k)})}},R:function(){for(var a;this.t.length;){a=this.t.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},S:function(){for(var a in this.q)this.p[a]=this.q[a]},F:function(){var a=this;w(this.r,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},G:function(a){var b=Q.exec(a),c={},d=7;try{for(;d--;)c[P[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.k.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},J:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},A:function(){this.m||this.V.apply(this,arguments)},V:function(a,b){var c=this.X(a,b);this.$("handle",{stackInfo:a,options:b}),this.fa(a.name,a.message,a.url,a.lineno,c,b)},X:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(w(a.stack,function(b,e){var f=c.ga(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.u,0)}),this.j.user&&(a.user=this.j.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),a=this.pa(a),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||v(a[b]))&&delete a[b]}),s(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!v(a)&&(!s(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.ma()?void this.z("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function F(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&l(b))for(c=b.split(/\s+/),f=0;fc?Q(a,b-1):d}function R(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?X:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function S(a,b){function c(a){return m(a)?a.map(function(a){return c(a)}):k(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!m(b)||m(b)&&0===b.length)return a;var d,e=A(b),f="********";try{d=JSON.parse(T(a))}catch(g){return a}return c(d)}var T=a(9),U="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},V=3,W=51200,X=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isDOMError:g,isDOMException:h,isUndefined:i,isFunction:j,isPlainObject:k,isString:l,isArray:m,isEmptyObject:n,supportsErrorEvent:o,supportsDOMError:p,supportsDOMException:q,supportsFetch:r,supportsReferrerPolicy:s,supportsPromiseRejectionEvent:t,wrappedCallback:u,each:v,objectMerge:w,truncate:y,objectFrozen:x,hasKey:z,joinRegExp:A,urlencode:B,uuid4:D,htmlTreeAsString:E,htmlElementAsString:F,isSameException:I,isSameStacktrace:J,parseUrl:C,fill:K,safeJoin:L,serializeException:Q,serializeKeysForMessage:R,sanitize:S}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{9:9}],8:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}function e(){return"undefined"==typeof document||null==document.location?"":document.location.origin}var f=a(7),g={collectWindowErrors:!0,debug:!1},h="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},i=[].slice,j="?",k=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;g.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function e(a,b){var c=null;if(!b||g.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(i.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,h,i){var l=null,m=f.isErrorEvent(i)?i.error:i,n=f.isErrorEvent(a)?a.message:a;if(v)g.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&f.isError(m))l=g.computeStackTrace(m),e(l,!0);else{var p,r={url:b,line:c,column:h},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(k);p&&(s=p[1],n=p[2])}r.func=j,l={name:s,message:n,url:d(),stack:[r]},e(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=h.onerror,h.onerror=l,r=!0)}function n(){r&&(h.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,e.apply(null,[a,!1].concat(b))}function p(a,b){var c=i.call(arguments,1);if(v){if(u===a)return;o()}var d=g.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),g.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,f,g=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,h=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,i=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,k=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,l=/\((\S*)(?::(\d+))(?::(\d+))\)/,m=a.stack.split("\n"),n=[],o=(/^(.*) is undefined$/.exec(a.message),0),p=m.length;o eval")>-1;r&&(b=k.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==o||c[5]||"undefined"==typeof a.columnNumber||(n[0].column=a.columnNumber+1),f={url:c[3],func:c[1]||j,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}if(!f.func&&f.line&&(f.func=j),f.url&&"blob:"===f.url.substr(0,5)){var s=new XMLHttpRequest;if(s.open("GET",f.url,!1),s.send(null),200===s.status){var t=s.responseText||"";t=t.slice(-300);var u=t.match(/\/\/# sourceMappingURL=(.*)$/);if(u){var v=u[1];"~"===v.charAt(0)&&(v=e()+v.slice(1)),f.url=v.slice(0,-4)}}}n.push(f)}return n.length?{name:a.name,message:a.message,url:d(),stack:n}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=j),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,e){for(var h,i,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==f&&o!==g.report){if(i={url:null,func:j,line:null,column:null},o.name?i.func=o.name:(h=k.exec(o.toString()))&&(i.func=h[1]),"undefined"==typeof i.func)try{i.func=h.input.substring(0,h.input.indexOf("{"))}catch(p){}m[""+o]?n=!0:m[""+o]=!0,l.push(i)}e&&l.splice(0,e);var q={name:a.name,message:a.message,url:d(),stack:l};return b(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),q}function f(b,e){ +var f=null;e=null==e?0:+e;try{if(f=a(b))return f}catch(h){if(g.debug)throw h}try{if(f=c(b,e+1))return f}catch(h){if(g.debug)throw h}return{name:b.name,message:b.message,url:d()}}return f.augmentStackTraceWithInitialElement=b,f.computeStackTraceFromStackProp=a,f}(),b.exports=g}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{7:7}],9:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}],10:[function(a,b,c){function d(a,b){var c=(65535&a)+(65535&b),d=(a>>16)+(b>>16)+(c>>16);return d<<16|65535&c}function e(a,b){return a<>>32-b}function f(a,b,c,f,g,h){return d(e(d(d(b,a),d(f,h)),g),c)}function g(a,b,c,d,e,g,h){return f(b&c|~b&d,a,b,e,g,h)}function h(a,b,c,d,e,g,h){return f(b&d|c&~d,a,b,e,g,h)}function i(a,b,c,d,e,g,h){return f(b^c^d,a,b,e,g,h)}function j(a,b,c,d,e,g,h){return f(c^(b|~d),a,b,e,g,h)}function k(a,b){a[b>>5]|=128<>>9<<4)+14]=b;var c,e,f,k,l,m=1732584193,n=-271733879,o=-1732584194,p=271733878;for(c=0;c>5]>>>b%32&255);return c}function m(a){var b,c=[];for(c[(a.length>>2)-1]=void 0,b=0;b>5]|=(255&a.charCodeAt(b/8))<16&&(e=k(e,8*a.length)),c=0;c<16;c+=1)f[c]=909522486^e[c],g[c]=1549556828^e[c];return d=k(f.concat(m(b)),512+8*b.length),l(k(g.concat(d),640))}function p(a){var b,c,d="0123456789abcdef",e="";for(c=0;c>>4&15)+d.charAt(15&b);return e}function q(a){return unescape(encodeURIComponent(a))}function r(a){return n(q(a))}function s(a){return p(r(a))}function t(a,b){return o(q(a),q(b))}function u(a,b){return p(t(a,b))}function v(a,b,c){return b?c?t(b,a):u(b,a):c?r(a):s(a)}b.exports=v},{}]},{},[6,1,2])(6)}); //# sourceMappingURL=raven.min.js.map \ No newline at end of file diff --git a/dist/console,require/raven.min.js.map b/dist/console,require/raven.min.js.map index adb90e282381..97ff83e8fcb1 100644 --- a/dist/console,require/raven.min.js.map +++ b/dist/console,require/raven.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","consolePlugin","console","pluginOptions","logLevels","levels","push","callback","msg","data","captureMessage","level","pop","wrapConsoleMethod","wrapMethod","addPlugin","4","6","2","requirePlugin","wrap","deep","3","RavenConfigError","message","name","prototype","constructor","utils","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","safeJoin","logger","extra","Function","apply","7","5","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","sanitizeKeys","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isError","isObject","isPlainObject","isErrorEvent","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","sanitize","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","config","dsn","options","_logDebug","globalOptions","key","value","setDSN","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","toString","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","substr","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","context","func","undefined","_before","wrapped","_ignoreNextOnError","captureException","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","T","event","reason","unhandledPromiseRejection","B","_promiseRejectionHandler","bind","addEventListener","P","removeEventListener","ex","trimHeadFrames","error","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","U","currentOptions","exKeys","Object","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","setDataCallback","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","L","setTimeout","$","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","_","evtName","_keypressTimeout","target","category","ba","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","ca","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","C","_originalFunctionToString","Q","D","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","type","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","E","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","R","builtin","S","F","installer","concat","G","str","m","exec","allowSecretKey","J","port","A","V","stackInfo","_triggerEvent","_processException","lineno","X","frame","_normalizeFrame","in_app","ga","stackInfoUrl","normalized","filename","line","colno","column","function","fa","prefixedMessage","exception","values","culprit","ha","request","Referer","breadcrumbs","_trimBreadcrumbs","ia","urlProp","urlProps","ja","httpData","userAgent","User-Agent","referrer","y","_backoffDuration","_backoffStart","ma","na","current","last","oa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Y","baseData","project","platform","_getHttpData","serverName","server_name","_sanitizeData","forEach","random","_sendProcessedPayload","pa","ra","qa","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","sa","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","onerror","open","setRequestHeader","send","ta","hash","evaluated","z","Z","setUser","setReleaseContext","10","8","9","RavenConstructor","_Raven","noConflict","Client","what","supportsErrorEvent","ErrorEvent","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","wrappedCallback","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","sanitizeMask","safeInput","o_O","getLocationHref","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","charAt","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","string","raw"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file +{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","consolePlugin","console","pluginOptions","logLevels","levels","push","callback","msg","data","captureMessage","level","pop","wrapConsoleMethod","wrapMethod","addPlugin","4","6","2","requirePlugin","wrap","deep","3","RavenConfigError","message","name","prototype","constructor","utils","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","safeJoin","logger","extra","Function","apply","7","5","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","sanitizeKeys","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isErrorEvent","isDOMError","isDOMException","isError","isObject","isPlainObject","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","sanitize","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","config","dsn","options","_logDebug","globalOptions","key","value","setDSN","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","toString","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","substr","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","context","func","undefined","_before","wrapped","_ignoreNextOnError","captureException","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","T","event","reason","unhandledPromiseRejection","B","_promiseRejectionHandler","bind","addEventListener","P","removeEventListener","ex","trimHeadFrames","error","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","U","currentOptions","exKeys","Object","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","setDataCallback","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","L","setTimeout","$","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","_","evtName","_keypressTimeout","target","category","ba","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","ca","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","C","_originalFunctionToString","Q","D","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","type","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","E","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","R","builtin","S","F","installer","concat","G","str","m","exec","allowSecretKey","J","port","A","V","stackInfo","_triggerEvent","_processException","lineno","X","frame","_normalizeFrame","in_app","ga","stackInfoUrl","normalized","filename","line","colno","column","function","fa","prefixedMessage","exception","values","culprit","ha","request","Referer","breadcrumbs","_trimBreadcrumbs","ia","urlProp","urlProps","ja","httpData","userAgent","User-Agent","referrer","y","_backoffDuration","_backoffStart","ma","na","current","last","oa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Y","baseData","project","platform","_getHttpData","serverName","server_name","_sanitizeData","forEach","random","_sendProcessedPayload","pa","ra","qa","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","sa","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","onerror","open","setRequestHeader","send","ta","hash","evaluated","z","Z","setUser","setReleaseContext","10","8","9","RavenConstructor","_Raven","noConflict","Client","what","supportsErrorEvent","ErrorEvent","supportsDOMError","DOMError","supportsDOMException","DOMException","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","wrappedCallback","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","sanitizeMask","safeInput","o_O","getLocationHref","getLocationOrigin","origin","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","responseText","sourceMaps","sourceMapAddress","charAt","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","string","raw"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file diff --git a/dist/console,vue/raven.js b/dist/console,vue/raven.js index 705f75bfd917..71fa4a521fe0 100644 --- a/dist/console,vue/raven.js +++ b/dist/console,vue/raven.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.24.2 (540f32b) | github.com/getsentry/raven-js */ +/*! Raven.js 3.25.0 (80dffad) | github.com/getsentry/raven-js */ /* * Includes TraceKit @@ -159,10 +159,12 @@ var md5 = _dereq_(10); var RavenConfigError = _dereq_(3); var utils = _dereq_(7); +var isErrorEvent = utils.isErrorEvent; +var isDOMError = utils.isDOMError; +var isDOMException = utils.isDOMException; var isError = utils.isError; var isObject = utils.isObject; var isPlainObject = utils.isPlainObject; -var isErrorEvent = utils.isErrorEvent; var isUndefined = utils.isUndefined; var isFunction = utils.isFunction; var isString = utils.isString; @@ -290,7 +292,7 @@ Raven.prototype = { // webpack (using a build step causes webpack #1617). Grunt verifies that // this value matches package.json during build. // See: https://github.com/getsentry/raven-js/issues/465 - VERSION: '3.24.2', + VERSION: '3.25.0', debug: false, @@ -622,6 +624,23 @@ Raven.prototype = { if (isErrorEvent(ex) && ex.error) { // If it is an ErrorEvent with `error` property, extract it to get actual Error ex = ex.error; + } else if (isDOMError(ex) || isDOMException(ex)) { + // If it is a DOMError or DOMException (which are legacy APIs, but still supported in some browsers) + // then we just extract the name and message, as they don't provide anything else + // https://developer.mozilla.org/en-US/docs/Web/API/DOMError + // https://developer.mozilla.org/en-US/docs/Web/API/DOMException + var name = ex.name || (isDOMError(ex) ? 'DOMError' : 'DOMException'); + var message = ex.message ? name + ': ' + ex.message : name; + + return this.captureMessage( + message, + objectMerge(options, { + // neither DOMError or DOMException provide stack trace and we most likely wont get it this way as well + // but it's barely any overhead so we may at least try + stacktrace: true, + trimHeadFrames: options.trimHeadFrames + 1 + }) + ); } else if (isError(ex)) { // we have a real Error object ex = ex; @@ -633,6 +652,7 @@ Raven.prototype = { ex = new Error(options.message); } else { // If none of previous checks were valid, then it means that + // it's not a DOMError/DOMException // it's not a plain Object // it's not a valid ErrorEvent (one with an error property) // it's not an Error @@ -2405,7 +2425,7 @@ function isObject(what) { // Yanked from https://git.io/vS8DV re-used under CC0 // with some tiny modifications function isError(value) { - switch ({}.toString.call(value)) { + switch (Object.prototype.toString.call(value)) { case '[object Error]': return true; case '[object Exception]': @@ -2418,7 +2438,15 @@ function isError(value) { } function isErrorEvent(value) { - return supportsErrorEvent() && {}.toString.call(value) === '[object ErrorEvent]'; + return Object.prototype.toString.call(value) === '[object ErrorEvent]'; +} + +function isDOMError(value) { + return Object.prototype.toString.call(value) === '[object DOMError]'; +} + +function isDOMException(value) { + return Object.prototype.toString.call(value) === '[object DOMException]'; } function isUndefined(what) { @@ -2461,6 +2489,24 @@ function supportsErrorEvent() { } } +function supportsDOMError() { + try { + new DOMError(''); // eslint-disable-line no-new + return true; + } catch (e) { + return false; + } +} + +function supportsDOMException() { + try { + new DOMException(''); // eslint-disable-line no-new + return true; + } catch (e) { + return false; + } +} + function supportsFetch() { if (!('fetch' in _window)) return false; @@ -2976,6 +3022,8 @@ module.exports = { isObject: isObject, isError: isError, isErrorEvent: isErrorEvent, + isDOMError: isDOMError, + isDOMException: isDOMException, isUndefined: isUndefined, isFunction: isFunction, isPlainObject: isPlainObject, @@ -2983,6 +3031,8 @@ module.exports = { isArray: isArray, isEmptyObject: isEmptyObject, supportsErrorEvent: supportsErrorEvent, + supportsDOMError: supportsDOMError, + supportsDOMException: supportsDOMException, supportsFetch: supportsFetch, supportsReferrerPolicy: supportsReferrerPolicy, supportsPromiseRejectionEvent: supportsPromiseRejectionEvent, @@ -3042,10 +3092,14 @@ var ERROR_TYPES_RE = /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Ran function getLocationHref() { if (typeof document === 'undefined' || document.location == null) return ''; - return document.location.href; } +function getLocationOrigin() { + if (typeof document === 'undefined' || document.location == null) return ''; + return document.location.origin; +} + /** * TraceKit.report: cross-browser processing of unhandled exceptions * @@ -3453,6 +3507,44 @@ TraceKit.computeStackTrace = (function computeStackTraceWrapper() { element.func = UNKNOWN_FUNCTION; } + if (element.url && element.url.substr(0, 5) === 'blob:') { + // Special case for handling JavaScript loaded into a blob. + // We use a synchronous AJAX request here as a blob is already in + // memory - it's not making a network request. This will generate a warning + // in the browser console, but there has already been an error so that's not + // that much of an issue. + var xhr = new XMLHttpRequest(); + xhr.open('GET', element.url, false); + xhr.send(null); + + // If we failed to download the source, skip this patch + if (xhr.status === 200) { + var source = xhr.responseText || ''; + + // We trim the source down to the last 300 characters as sourceMappingURL is always at the end of the file. + // Why 300? To be in line with: https://github.com/getsentry/sentry/blob/4af29e8f2350e20c28a6933354e4f42437b4ba42/src/sentry/lang/javascript/processor.py#L164-L175 + source = source.slice(-300); + + // Now we dig out the source map URL + var sourceMaps = source.match(/\/\/# sourceMappingURL=(.*)$/); + + // If we don't find a source map comment or we find more than one, continue on to the next element. + if (sourceMaps) { + var sourceMapAddress = sourceMaps[1]; + + // Now we check to see if it's a relative URL. + // If it is, convert it to an absolute one. + if (sourceMapAddress.charAt(0) === '~') { + sourceMapAddress = getLocationOrigin() + sourceMapAddress.slice(1); + } + + // Now we strip the '.map' off of the end of the URL and update the + // element so that Sentry can match the map to the blob. + element.url = sourceMapAddress.slice(0, -4); + } + } + } + stack.push(element); } diff --git a/dist/console,vue/raven.min.js b/dist/console,vue/raven.min.js index 9ac3b7d796f0..b530b2645ff2 100644 --- a/dist/console,vue/raven.min.js +++ b/dist/console,vue/raven.min.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.24.2 (540f32b) | github.com/getsentry/raven-js */ -!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.Raven=a()}}(function(){return function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};b[g][0].call(k.exports,function(a){var c=b[g][1][a];return e(c?c:a)},k,k.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;g":"anonymous component")+(a._isVue&&a.$options.__file?" at "+a.$options.__file:"")}function e(a,b){if(b=b||window.Vue,b&&b.config){var c=b.config.errorHandler;b.config.errorHandler=function(b,e,f){var g={};"[object Object]"===Object.prototype.toString.call(e)&&(g.componentName=d(e),g.propsData=e.$options.propsData),"undefined"!=typeof f&&(g.lifecycleHook=f),a.captureException(b,{extra:g}),"function"==typeof c&&c.call(this,b,e,f)}}}b.exports=e,a(6).addPlugin(b.exports)},{6:6}],3:[function(a,b,c){function d(a){this.name="RavenConfigError",this.message=a}d.prototype=new Error,d.prototype.constructor=d,b.exports=d},{}],4:[function(a,b,c){var d=a(7),e=function(a,b,c){var e=a[b],f=a;if(b in a){var g="warn"===b?"warning":b;a[b]=function(){var a=[].slice.call(arguments),h=d.safeJoin(a," "),i={level:g,logger:"console",extra:{arguments:a}};"assert"===b?a[0]===!1&&(h="Assertion failed: "+(d.safeJoin(a.slice(1)," ")||"console.assert"),i.extra.arguments=a.slice(1),c&&c(h,i)):c&&c(h,i),e&&Function.prototype.apply.call(e,f,a)}}};b.exports={wrapMethod:e}},{7:7}],5:[function(a,b,c){(function(c){function d(){return+new Date}function e(a,b){return q(b)?function(c){return b(c,a)}:b}function f(){this.a=!("object"!=typeof JSON||!JSON.stringify),this.b=!p(Q),this.c=!p(R),this.d=null,this.e=null,this.f=null,this.g=null,this.h=null,this.i=null,this.j={},this.k={release:P.SENTRY_RELEASE&&P.SENTRY_RELEASE.id,logger:"javascript",ignoreErrors:[],ignoreUrls:[],whitelistUrls:[],includePaths:[],headers:null,collectWindowErrors:!0,captureUnhandledRejections:!0,maxMessageLength:0,maxUrlLength:250,stackTraceLimit:50,autoBreadcrumbs:!0,instrument:!0,sampleRate:1,sanitizeKeys:[]},this.l={method:"POST",keepalive:!0,referrerPolicy:I()?"origin":""},this.m=0,this.n=!1,this.o=Error.stackTraceLimit,this.p=P.console||{},this.q={},this.r=[],this.s=d(),this.t=[],this.u=[],this.v=null,this.w=P.location,this.x=this.w&&this.w.href,this.y();for(var a in this.p)this.q[a]=this.p[a]}var g=a(8),h=a(9),i=a(10),j=a(3),k=a(7),l=k.isError,m=k.isObject,n=k.isPlainObject,o=k.isErrorEvent,p=k.isUndefined,q=k.isFunction,r=k.isString,s=k.isArray,t=k.isEmptyObject,u=k.each,v=k.objectMerge,w=k.truncate,x=k.objectFrozen,y=k.hasKey,z=k.joinRegExp,A=k.urlencode,B=k.uuid4,C=k.htmlTreeAsString,D=k.isSameException,E=k.isSameStacktrace,F=k.parseUrl,G=k.fill,H=k.supportsFetch,I=k.supportsReferrerPolicy,J=k.serializeKeysForMessage,K=k.serializeException,L=k.sanitize,M=a(4).wrapMethod,N="source protocol user pass host port path".split(" "),O=/^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/,P="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},Q=P.document,R=P.navigator;f.prototype={VERSION:"3.24.2",debug:!1,TraceKit:g,config:function(a,b){var c=this;if(c.g)return this.z("error","Error: Raven has already been configured"),c;if(!a)return c;var d=c.k;b&&u(b,function(a,b){"tags"===a||"extra"===a||"user"===a?c.j[a]=b:d[a]=b}),c.setDSN(a),d.ignoreErrors.push(/^Script error\.?$/),d.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/),d.ignoreErrors=z(d.ignoreErrors),d.ignoreUrls=!!d.ignoreUrls.length&&z(d.ignoreUrls),d.whitelistUrls=!!d.whitelistUrls.length&&z(d.whitelistUrls),d.includePaths=z(d.includePaths),d.maxBreadcrumbs=Math.max(0,Math.min(d.maxBreadcrumbs||100,100));var e={xhr:!0,console:!0,dom:!0,location:!0,sentry:!0},f=d.autoBreadcrumbs;"[object Object]"==={}.toString.call(f)?f=v(e,f):f!==!1&&(f=e),d.autoBreadcrumbs=f;var h={tryCatch:!0},i=d.instrument;return"[object Object]"==={}.toString.call(i)?i=v(h,i):i!==!1&&(i=h),d.instrument=i,g.collectWindowErrors=!!d.collectWindowErrors,c},install:function(){var a=this;return a.isSetup()&&!a.n&&(g.report.subscribe(function(){a.A.apply(a,arguments)}),a.k.captureUnhandledRejections&&a.B(),a.C(),a.k.instrument&&a.k.instrument.tryCatch&&a.D(),a.k.autoBreadcrumbs&&a.E(),a.F(),a.n=!0),Error.stackTraceLimit=a.k.stackTraceLimit,this},setDSN:function(a){var b=this,c=b.G(a),d=c.path.lastIndexOf("/"),e=c.path.substr(1,d);b.H=a,b.h=c.user,b.I=c.pass&&c.pass.substr(1),b.i=c.path.substr(d+1),b.g=b.J(c),b.K=b.g+"/"+e+"api/"+b.i+"/store/",this.y()},context:function(a,b,c){return q(a)&&(c=b||[],b=a,a=void 0),this.wrap(a,b).apply(this,c)},wrap:function(a,b,c){function d(){var d=[],f=arguments.length,g=!a||a&&a.deep!==!1;for(c&&q(c)&&c.apply(this,arguments);f--;)d[f]=g?e.wrap(a,arguments[f]):arguments[f];try{return b.apply(this,d)}catch(h){throw e.L(),e.captureException(h,a),h}}var e=this;if(p(b)&&!q(a))return a;if(q(a)&&(b=a,a=void 0),!q(b))return b;try{if(b.M)return b;if(b.N)return b.N}catch(f){return b}for(var g in b)y(b,g)&&(d[g]=b[g]);return d.prototype=b.prototype,b.N=d,d.M=!0,d.O=b,d},uninstall:function(){return g.report.uninstall(),this.P(),this.Q(),this.R(),this.S(),Error.stackTraceLimit=this.o,this.n=!1,this},T:function(a){this.z("debug","Raven caught unhandled promise rejection:",a),this.captureException(a.reason,{extra:{unhandledPromiseRejection:!0}})},B:function(){return this.T=this.T.bind(this),P.addEventListener&&P.addEventListener("unhandledrejection",this.T),this},P:function(){return P.removeEventListener&&P.removeEventListener("unhandledrejection",this.T),this},captureException:function(a,b){if(b=v({trimHeadFrames:0},b?b:{}),o(a)&&a.error)a=a.error;else if(l(a))a=a;else{if(!n(a))return this.captureMessage(a,v(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}));b=this.U(b,a),a=new Error(b.message)}this.d=a;try{var c=g.computeStackTrace(a);this.V(c,b)}catch(d){if(a!==d)throw d}return this},U:function(a,b){var c=Object.keys(b).sort(),d=v(a,{message:"Non-Error exception captured with keys: "+J(c),fingerprint:[i(c)],extra:a.extra||{}});return d.extra.W=K(b),d},captureMessage:function(a,b){if(!this.k.ignoreErrors.test||!this.k.ignoreErrors.test(a)){b=b||{},a+="";var c,d=v({message:a},b);try{throw new Error(a)}catch(e){c=e}c.name=null;var f=g.computeStackTrace(c),h=s(f.stack)&&f.stack[1];h&&"Raven.captureException"===h.func&&(h=f.stack[2]);var i=h&&h.url||"";if((!this.k.ignoreUrls.test||!this.k.ignoreUrls.test(i))&&(!this.k.whitelistUrls.test||this.k.whitelistUrls.test(i))){if(this.k.stacktrace||b&&b.stacktrace){d.fingerprint=null==d.fingerprint?a:d.fingerprint,b=v({trimHeadFrames:0},b),b.trimHeadFrames+=1;var j=this.X(f,b);d.stacktrace={frames:j.reverse()}}return d.fingerprint&&(d.fingerprint=s(d.fingerprint)?d.fingerprint:[d.fingerprint]),this.Y(d),this}}},captureBreadcrumb:function(a){var b=v({timestamp:d()/1e3},a);if(q(this.k.breadcrumbCallback)){var c=this.k.breadcrumbCallback(b);if(m(c)&&!t(c))b=c;else if(c===!1)return this}return this.u.push(b),this.u.length>this.k.maxBreadcrumbs&&this.u.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.r.push([a,b]),this.n&&this.F(),this},setUserContext:function(a){return this.j.user=a,this},setExtraContext:function(a){return this.Z("extra",a),this},setTagsContext:function(a){return this.Z("tags",a),this},clearContext:function(){return this.j={},this},getContext:function(){return JSON.parse(h(this.j))},setEnvironment:function(a){return this.k.environment=a,this},setRelease:function(a){return this.k.release=a,this},setDataCallback:function(a){var b=this.k.dataCallback;return this.k.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.k.breadcrumbCallback;return this.k.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.k.shouldSendCallback;return this.k.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.k.transport=a,this},lastException:function(){return this.d},lastEventId:function(){return this.f},isSetup:function(){return!!this.a&&(!!this.g||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.z("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=P.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(Q){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.H;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.j.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.J(this.G(c)),h=Q.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(Q.head||Q.body).appendChild(h)}},L:function(){var a=this;this.m+=1,setTimeout(function(){a.m-=1})},$:function(a,b){var c,d;if(this.b){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),Q.createEvent?(c=Q.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=Q.createEventObject(),c.eventType=a);for(d in b)y(b,d)&&(c[d]=b[d]);if(Q.createEvent)Q.dispatchEvent(c);else try{Q.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},_:function(a){var b=this;return function(c){if(b.aa=null,b.v!==c){b.v=c;var d;try{d=C(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ba:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.aa;g||a._("input")(c),clearTimeout(g),a.aa=setTimeout(function(){a.aa=null},b)}}},ca:function(a,b){var c=F(this.w.href),d=F(b),e=F(a);this.x=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},C:function(){var a=this;a.da=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.M?a.da.apply(this.O,arguments):a.da.apply(this,arguments)}},Q:function(){this.da&&(Function.prototype.toString=this.da)},D:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.ca(b.x,c+""),a.apply(this,arguments)}};G(history,"pushState",j,d),G(history,"replaceState",j,d)}if(c.console&&"console"in P&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};u(["debug","info","warn","error","log"],function(a,b){M(console,b,k)})}},R:function(){for(var a;this.t.length;){a=this.t.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},S:function(){for(var a in this.q)this.p[a]=this.q[a]},F:function(){var a=this;u(this.r,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},G:function(a){var b=O.exec(a),c={},d=7;try{for(;d--;)c[N[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.k.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},J:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},A:function(){this.m||this.V.apply(this,arguments)},V:function(a,b){var c=this.X(a,b);this.$("handle",{stackInfo:a,options:b}),this.fa(a.name,a.message,a.url,a.lineno,c,b)},X:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(u(a.stack,function(b,e){var f=c.ga(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.u,0)}),this.j.user&&(a.user=this.j.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),a=this.pa(a),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||t(a[b]))&&delete a[b]}),q(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!t(a)&&(!q(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.ma()?void this.z("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function B(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&j(b))for(c=b.split(/\s+/),f=0;fc?M(a,b-1):d}function N(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?T:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function O(a,b){function c(a){return k(a)?a.map(function(a){return c(a)}):i(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!k(b)||k(b)&&0===b.length)return a;var d,e=w(b),f="********";try{d=JSON.parse(P(a))}catch(g){return a}return c(d)}var P=a(9),Q="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},R=3,S=51200,T=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isUndefined:g,isFunction:h,isPlainObject:i,isString:j,isArray:k,isEmptyObject:l,supportsErrorEvent:m,supportsFetch:n,supportsReferrerPolicy:o,supportsPromiseRejectionEvent:p,wrappedCallback:q,each:r,objectMerge:s,truncate:u,objectFrozen:t,hasKey:v,joinRegExp:w,urlencode:x,uuid4:z,htmlTreeAsString:A,htmlElementAsString:B,isSameException:E,isSameStacktrace:F,parseUrl:y,fill:G,safeJoin:H,serializeException:M,serializeKeysForMessage:N,sanitize:O}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{9:9}],8:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}var e=a(7),f={collectWindowErrors:!0,debug:!1},g="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},h=[].slice,i="?",j=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;f.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function k(a,b){var c=null;if(!b||f.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(h.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,g,h){var l=null,m=e.isErrorEvent(h)?h.error:h,n=e.isErrorEvent(a)?a.message:a;if(v)f.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&e.isError(m))l=f.computeStackTrace(m),k(l,!0);else{var p,r={url:b,line:c,column:g},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(j);p&&(s=p[1],n=p[2])}r.func=i,l={name:s,message:n,url:d(),stack:[r]},k(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=g.onerror,g.onerror=l,r=!0)}function n(){r&&(g.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,k.apply(null,[a,!1].concat(b))}function p(a,b){var c=h.call(arguments,1);if(v){if(u===a)return;o()}var d=f.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),f.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,e,f=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,g=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,h=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,j=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,k=/\((\S*)(?::(\d+))(?::(\d+))\)/,l=a.stack.split("\n"),m=[],n=(/^(.*) is undefined$/.exec(a.message),0),o=l.length;n eval")>-1;q&&(b=j.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==n||c[5]||"undefined"==typeof a.columnNumber||(m[0].column=a.columnNumber+1),e={url:c[3],func:c[1]||i,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}!e.func&&e.line&&(e.func=i),m.push(e)}return m.length?{name:a.name,message:a.message,url:d(),stack:m}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=i),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,g){for(var h,j,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==e&&o!==f.report){if(j={url:null,func:i,line:null,column:null},o.name?j.func=o.name:(h=k.exec(o.toString()))&&(j.func=h[1]),"undefined"==typeof j.func)try{j.func=h.input.substring(0,h.input.indexOf("{"))}catch(p){}m[""+o]?n=!0:m[""+o]=!0,l.push(j)}g&&l.splice(0,g);var q={name:a.name,message:a.message,url:d(),stack:l};return b(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),q}function e(b,e){var g=null;e=null==e?0:+e;try{if(g=a(b))return g}catch(h){if(f.debug)throw h}try{if(g=c(b,e+1))return g}catch(h){if(f.debug)throw h}return{name:b.name,message:b.message,url:d()}}return e.augmentStackTraceWithInitialElement=b,e.computeStackTraceFromStackProp=a,e}(),b.exports=f}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{7:7}],9:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}],10:[function(a,b,c){function d(a,b){var c=(65535&a)+(65535&b),d=(a>>16)+(b>>16)+(c>>16);return d<<16|65535&c}function e(a,b){return a<>>32-b}function f(a,b,c,f,g,h){return d(e(d(d(b,a),d(f,h)),g),c)}function g(a,b,c,d,e,g,h){return f(b&c|~b&d,a,b,e,g,h)}function h(a,b,c,d,e,g,h){return f(b&d|c&~d,a,b,e,g,h)}function i(a,b,c,d,e,g,h){return f(b^c^d,a,b,e,g,h)}function j(a,b,c,d,e,g,h){return f(c^(b|~d),a,b,e,g,h)}function k(a,b){a[b>>5]|=128<>>9<<4)+14]=b;var c,e,f,k,l,m=1732584193,n=-271733879,o=-1732584194,p=271733878;for(c=0;c>5]>>>b%32&255);return c}function m(a){var b,c=[];for(c[(a.length>>2)-1]=void 0,b=0;b>5]|=(255&a.charCodeAt(b/8))<16&&(e=k(e,8*a.length)),c=0;c<16;c+=1)f[c]=909522486^e[c],g[c]=1549556828^e[c];return d=k(f.concat(m(b)),512+8*b.length),l(k(g.concat(d),640))}function p(a){var b,c,d="0123456789abcdef",e="";for(c=0;c>>4&15)+d.charAt(15&b);return e}function q(a){return unescape(encodeURIComponent(a))}function r(a){return n(q(a))}function s(a){return p(r(a))}function t(a,b){return o(q(a),q(b))}function u(a,b){return p(t(a,b))}function v(a,b,c){return b?c?t(b,a):u(b,a):c?r(a):s(a)}b.exports=v},{}]},{},[6,1,2])(6)}); +/*! Raven.js 3.25.0 (80dffad) | github.com/getsentry/raven-js */ +!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.Raven=a()}}(function(){return function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};b[g][0].call(k.exports,function(a){var c=b[g][1][a];return e(c?c:a)},k,k.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;g":"anonymous component")+(a._isVue&&a.$options.__file?" at "+a.$options.__file:"")}function e(a,b){if(b=b||window.Vue,b&&b.config){var c=b.config.errorHandler;b.config.errorHandler=function(b,e,f){var g={};"[object Object]"===Object.prototype.toString.call(e)&&(g.componentName=d(e),g.propsData=e.$options.propsData),"undefined"!=typeof f&&(g.lifecycleHook=f),a.captureException(b,{extra:g}),"function"==typeof c&&c.call(this,b,e,f)}}}b.exports=e,a(6).addPlugin(b.exports)},{6:6}],3:[function(a,b,c){function d(a){this.name="RavenConfigError",this.message=a}d.prototype=new Error,d.prototype.constructor=d,b.exports=d},{}],4:[function(a,b,c){var d=a(7),e=function(a,b,c){var e=a[b],f=a;if(b in a){var g="warn"===b?"warning":b;a[b]=function(){var a=[].slice.call(arguments),h=d.safeJoin(a," "),i={level:g,logger:"console",extra:{arguments:a}};"assert"===b?a[0]===!1&&(h="Assertion failed: "+(d.safeJoin(a.slice(1)," ")||"console.assert"),i.extra.arguments=a.slice(1),c&&c(h,i)):c&&c(h,i),e&&Function.prototype.apply.call(e,f,a)}}};b.exports={wrapMethod:e}},{7:7}],5:[function(a,b,c){(function(c){function d(){return+new Date}function e(a,b){return s(b)?function(c){return b(c,a)}:b}function f(){this.a=!("object"!=typeof JSON||!JSON.stringify),this.b=!r(S),this.c=!r(T),this.d=null,this.e=null,this.f=null,this.g=null,this.h=null,this.i=null,this.j={},this.k={release:R.SENTRY_RELEASE&&R.SENTRY_RELEASE.id,logger:"javascript",ignoreErrors:[],ignoreUrls:[],whitelistUrls:[],includePaths:[],headers:null,collectWindowErrors:!0,captureUnhandledRejections:!0,maxMessageLength:0,maxUrlLength:250,stackTraceLimit:50,autoBreadcrumbs:!0,instrument:!0,sampleRate:1,sanitizeKeys:[]},this.l={method:"POST",keepalive:!0,referrerPolicy:K()?"origin":""},this.m=0,this.n=!1,this.o=Error.stackTraceLimit,this.p=R.console||{},this.q={},this.r=[],this.s=d(),this.t=[],this.u=[],this.v=null,this.w=R.location,this.x=this.w&&this.w.href,this.y();for(var a in this.p)this.q[a]=this.p[a]}var g=a(8),h=a(9),i=a(10),j=a(3),k=a(7),l=k.isErrorEvent,m=k.isDOMError,n=k.isDOMException,o=k.isError,p=k.isObject,q=k.isPlainObject,r=k.isUndefined,s=k.isFunction,t=k.isString,u=k.isArray,v=k.isEmptyObject,w=k.each,x=k.objectMerge,y=k.truncate,z=k.objectFrozen,A=k.hasKey,B=k.joinRegExp,C=k.urlencode,D=k.uuid4,E=k.htmlTreeAsString,F=k.isSameException,G=k.isSameStacktrace,H=k.parseUrl,I=k.fill,J=k.supportsFetch,K=k.supportsReferrerPolicy,L=k.serializeKeysForMessage,M=k.serializeException,N=k.sanitize,O=a(4).wrapMethod,P="source protocol user pass host port path".split(" "),Q=/^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/,R="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},S=R.document,T=R.navigator;f.prototype={VERSION:"3.25.0",debug:!1,TraceKit:g,config:function(a,b){var c=this;if(c.g)return this.z("error","Error: Raven has already been configured"),c;if(!a)return c;var d=c.k;b&&w(b,function(a,b){"tags"===a||"extra"===a||"user"===a?c.j[a]=b:d[a]=b}),c.setDSN(a),d.ignoreErrors.push(/^Script error\.?$/),d.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/),d.ignoreErrors=B(d.ignoreErrors),d.ignoreUrls=!!d.ignoreUrls.length&&B(d.ignoreUrls),d.whitelistUrls=!!d.whitelistUrls.length&&B(d.whitelistUrls),d.includePaths=B(d.includePaths),d.maxBreadcrumbs=Math.max(0,Math.min(d.maxBreadcrumbs||100,100));var e={xhr:!0,console:!0,dom:!0,location:!0,sentry:!0},f=d.autoBreadcrumbs;"[object Object]"==={}.toString.call(f)?f=x(e,f):f!==!1&&(f=e),d.autoBreadcrumbs=f;var h={tryCatch:!0},i=d.instrument;return"[object Object]"==={}.toString.call(i)?i=x(h,i):i!==!1&&(i=h),d.instrument=i,g.collectWindowErrors=!!d.collectWindowErrors,c},install:function(){var a=this;return a.isSetup()&&!a.n&&(g.report.subscribe(function(){a.A.apply(a,arguments)}),a.k.captureUnhandledRejections&&a.B(),a.C(),a.k.instrument&&a.k.instrument.tryCatch&&a.D(),a.k.autoBreadcrumbs&&a.E(),a.F(),a.n=!0),Error.stackTraceLimit=a.k.stackTraceLimit,this},setDSN:function(a){var b=this,c=b.G(a),d=c.path.lastIndexOf("/"),e=c.path.substr(1,d);b.H=a,b.h=c.user,b.I=c.pass&&c.pass.substr(1),b.i=c.path.substr(d+1),b.g=b.J(c),b.K=b.g+"/"+e+"api/"+b.i+"/store/",this.y()},context:function(a,b,c){return s(a)&&(c=b||[],b=a,a=void 0),this.wrap(a,b).apply(this,c)},wrap:function(a,b,c){function d(){var d=[],f=arguments.length,g=!a||a&&a.deep!==!1;for(c&&s(c)&&c.apply(this,arguments);f--;)d[f]=g?e.wrap(a,arguments[f]):arguments[f];try{return b.apply(this,d)}catch(h){throw e.L(),e.captureException(h,a),h}}var e=this;if(r(b)&&!s(a))return a;if(s(a)&&(b=a,a=void 0),!s(b))return b;try{if(b.M)return b;if(b.N)return b.N}catch(f){return b}for(var g in b)A(b,g)&&(d[g]=b[g]);return d.prototype=b.prototype,b.N=d,d.M=!0,d.O=b,d},uninstall:function(){return g.report.uninstall(),this.P(),this.Q(),this.R(),this.S(),Error.stackTraceLimit=this.o,this.n=!1,this},T:function(a){this.z("debug","Raven caught unhandled promise rejection:",a),this.captureException(a.reason,{extra:{unhandledPromiseRejection:!0}})},B:function(){return this.T=this.T.bind(this),R.addEventListener&&R.addEventListener("unhandledrejection",this.T),this},P:function(){return R.removeEventListener&&R.removeEventListener("unhandledrejection",this.T),this},captureException:function(a,b){if(b=x({trimHeadFrames:0},b?b:{}),l(a)&&a.error)a=a.error;else{if(m(a)||n(a)){var c=a.name||(m(a)?"DOMError":"DOMException"),d=a.message?c+": "+a.message:c;return this.captureMessage(d,x(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}))}if(o(a))a=a;else{if(!q(a))return this.captureMessage(a,x(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}));b=this.U(b,a),a=new Error(b.message)}}this.d=a;try{var e=g.computeStackTrace(a);this.V(e,b)}catch(f){if(a!==f)throw f}return this},U:function(a,b){var c=Object.keys(b).sort(),d=x(a,{message:"Non-Error exception captured with keys: "+L(c),fingerprint:[i(c)],extra:a.extra||{}});return d.extra.W=M(b),d},captureMessage:function(a,b){if(!this.k.ignoreErrors.test||!this.k.ignoreErrors.test(a)){b=b||{},a+="";var c,d=x({message:a},b);try{throw new Error(a)}catch(e){c=e}c.name=null;var f=g.computeStackTrace(c),h=u(f.stack)&&f.stack[1];h&&"Raven.captureException"===h.func&&(h=f.stack[2]);var i=h&&h.url||"";if((!this.k.ignoreUrls.test||!this.k.ignoreUrls.test(i))&&(!this.k.whitelistUrls.test||this.k.whitelistUrls.test(i))){if(this.k.stacktrace||b&&b.stacktrace){d.fingerprint=null==d.fingerprint?a:d.fingerprint,b=x({trimHeadFrames:0},b),b.trimHeadFrames+=1;var j=this.X(f,b);d.stacktrace={frames:j.reverse()}}return d.fingerprint&&(d.fingerprint=u(d.fingerprint)?d.fingerprint:[d.fingerprint]),this.Y(d),this}}},captureBreadcrumb:function(a){var b=x({timestamp:d()/1e3},a);if(s(this.k.breadcrumbCallback)){var c=this.k.breadcrumbCallback(b);if(p(c)&&!v(c))b=c;else if(c===!1)return this}return this.u.push(b),this.u.length>this.k.maxBreadcrumbs&&this.u.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.r.push([a,b]),this.n&&this.F(),this},setUserContext:function(a){return this.j.user=a,this},setExtraContext:function(a){return this.Z("extra",a),this},setTagsContext:function(a){return this.Z("tags",a),this},clearContext:function(){return this.j={},this},getContext:function(){return JSON.parse(h(this.j))},setEnvironment:function(a){return this.k.environment=a,this},setRelease:function(a){return this.k.release=a,this},setDataCallback:function(a){var b=this.k.dataCallback;return this.k.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.k.breadcrumbCallback;return this.k.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.k.shouldSendCallback;return this.k.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.k.transport=a,this},lastException:function(){return this.d},lastEventId:function(){return this.f},isSetup:function(){return!!this.a&&(!!this.g||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.z("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=R.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(S){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.H;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.j.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.J(this.G(c)),h=S.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(S.head||S.body).appendChild(h)}},L:function(){var a=this;this.m+=1,setTimeout(function(){a.m-=1})},$:function(a,b){var c,d;if(this.b){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),S.createEvent?(c=S.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=S.createEventObject(),c.eventType=a);for(d in b)A(b,d)&&(c[d]=b[d]);if(S.createEvent)S.dispatchEvent(c);else try{S.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},_:function(a){var b=this;return function(c){if(b.aa=null,b.v!==c){b.v=c;var d;try{d=E(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ba:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.aa;g||a._("input")(c),clearTimeout(g),a.aa=setTimeout(function(){a.aa=null},b)}}},ca:function(a,b){var c=H(this.w.href),d=H(b),e=H(a);this.x=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},C:function(){var a=this;a.da=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.M?a.da.apply(this.O,arguments):a.da.apply(this,arguments)}},Q:function(){this.da&&(Function.prototype.toString=this.da)},D:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.ca(b.x,c+""),a.apply(this,arguments)}};I(history,"pushState",j,d),I(history,"replaceState",j,d)}if(c.console&&"console"in R&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};w(["debug","info","warn","error","log"],function(a,b){O(console,b,k)})}},R:function(){for(var a;this.t.length;){a=this.t.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},S:function(){for(var a in this.q)this.p[a]=this.q[a]},F:function(){var a=this;w(this.r,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},G:function(a){var b=Q.exec(a),c={},d=7;try{for(;d--;)c[P[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.k.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},J:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},A:function(){this.m||this.V.apply(this,arguments)},V:function(a,b){var c=this.X(a,b);this.$("handle",{stackInfo:a,options:b}),this.fa(a.name,a.message,a.url,a.lineno,c,b)},X:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(w(a.stack,function(b,e){var f=c.ga(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.u,0)}),this.j.user&&(a.user=this.j.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),a=this.pa(a),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||v(a[b]))&&delete a[b]}),s(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!v(a)&&(!s(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.ma()?void this.z("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function F(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&l(b))for(c=b.split(/\s+/),f=0;fc?Q(a,b-1):d}function R(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?X:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function S(a,b){function c(a){return m(a)?a.map(function(a){return c(a)}):k(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!m(b)||m(b)&&0===b.length)return a;var d,e=A(b),f="********";try{d=JSON.parse(T(a))}catch(g){return a}return c(d)}var T=a(9),U="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},V=3,W=51200,X=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isDOMError:g,isDOMException:h,isUndefined:i,isFunction:j,isPlainObject:k,isString:l,isArray:m,isEmptyObject:n,supportsErrorEvent:o,supportsDOMError:p,supportsDOMException:q,supportsFetch:r,supportsReferrerPolicy:s,supportsPromiseRejectionEvent:t,wrappedCallback:u,each:v,objectMerge:w,truncate:y,objectFrozen:x,hasKey:z,joinRegExp:A,urlencode:B,uuid4:D,htmlTreeAsString:E,htmlElementAsString:F,isSameException:I,isSameStacktrace:J,parseUrl:C,fill:K,safeJoin:L,serializeException:Q,serializeKeysForMessage:R,sanitize:S}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{9:9}],8:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}function e(){return"undefined"==typeof document||null==document.location?"":document.location.origin}var f=a(7),g={collectWindowErrors:!0,debug:!1},h="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},i=[].slice,j="?",k=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;g.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function e(a,b){var c=null;if(!b||g.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(i.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,h,i){var l=null,m=f.isErrorEvent(i)?i.error:i,n=f.isErrorEvent(a)?a.message:a;if(v)g.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&f.isError(m))l=g.computeStackTrace(m),e(l,!0);else{var p,r={url:b,line:c,column:h},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(k);p&&(s=p[1],n=p[2])}r.func=j,l={name:s,message:n,url:d(),stack:[r]},e(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=h.onerror,h.onerror=l,r=!0)}function n(){r&&(h.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,e.apply(null,[a,!1].concat(b))}function p(a,b){var c=i.call(arguments,1);if(v){if(u===a)return;o()}var d=g.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),g.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,f,g=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,h=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,i=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,k=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,l=/\((\S*)(?::(\d+))(?::(\d+))\)/,m=a.stack.split("\n"),n=[],o=(/^(.*) is undefined$/.exec(a.message),0),p=m.length;o eval")>-1;r&&(b=k.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==o||c[5]||"undefined"==typeof a.columnNumber||(n[0].column=a.columnNumber+1),f={url:c[3],func:c[1]||j,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}if(!f.func&&f.line&&(f.func=j),f.url&&"blob:"===f.url.substr(0,5)){var s=new XMLHttpRequest;if(s.open("GET",f.url,!1),s.send(null),200===s.status){var t=s.responseText||"";t=t.slice(-300);var u=t.match(/\/\/# sourceMappingURL=(.*)$/);if(u){var v=u[1];"~"===v.charAt(0)&&(v=e()+v.slice(1)),f.url=v.slice(0,-4)}}}n.push(f)}return n.length?{name:a.name,message:a.message,url:d(),stack:n}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=j),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,e){for(var h,i,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==f&&o!==g.report){ +if(i={url:null,func:j,line:null,column:null},o.name?i.func=o.name:(h=k.exec(o.toString()))&&(i.func=h[1]),"undefined"==typeof i.func)try{i.func=h.input.substring(0,h.input.indexOf("{"))}catch(p){}m[""+o]?n=!0:m[""+o]=!0,l.push(i)}e&&l.splice(0,e);var q={name:a.name,message:a.message,url:d(),stack:l};return b(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),q}function f(b,e){var f=null;e=null==e?0:+e;try{if(f=a(b))return f}catch(h){if(g.debug)throw h}try{if(f=c(b,e+1))return f}catch(h){if(g.debug)throw h}return{name:b.name,message:b.message,url:d()}}return f.augmentStackTraceWithInitialElement=b,f.computeStackTraceFromStackProp=a,f}(),b.exports=g}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{7:7}],9:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}],10:[function(a,b,c){function d(a,b){var c=(65535&a)+(65535&b),d=(a>>16)+(b>>16)+(c>>16);return d<<16|65535&c}function e(a,b){return a<>>32-b}function f(a,b,c,f,g,h){return d(e(d(d(b,a),d(f,h)),g),c)}function g(a,b,c,d,e,g,h){return f(b&c|~b&d,a,b,e,g,h)}function h(a,b,c,d,e,g,h){return f(b&d|c&~d,a,b,e,g,h)}function i(a,b,c,d,e,g,h){return f(b^c^d,a,b,e,g,h)}function j(a,b,c,d,e,g,h){return f(c^(b|~d),a,b,e,g,h)}function k(a,b){a[b>>5]|=128<>>9<<4)+14]=b;var c,e,f,k,l,m=1732584193,n=-271733879,o=-1732584194,p=271733878;for(c=0;c>5]>>>b%32&255);return c}function m(a){var b,c=[];for(c[(a.length>>2)-1]=void 0,b=0;b>5]|=(255&a.charCodeAt(b/8))<16&&(e=k(e,8*a.length)),c=0;c<16;c+=1)f[c]=909522486^e[c],g[c]=1549556828^e[c];return d=k(f.concat(m(b)),512+8*b.length),l(k(g.concat(d),640))}function p(a){var b,c,d="0123456789abcdef",e="";for(c=0;c>>4&15)+d.charAt(15&b);return e}function q(a){return unescape(encodeURIComponent(a))}function r(a){return n(q(a))}function s(a){return p(r(a))}function t(a,b){return o(q(a),q(b))}function u(a,b){return p(t(a,b))}function v(a,b,c){return b?c?t(b,a):u(b,a):c?r(a):s(a)}b.exports=v},{}]},{},[6,1,2])(6)}); //# sourceMappingURL=raven.min.js.map \ No newline at end of file diff --git a/dist/console,vue/raven.min.js.map b/dist/console,vue/raven.min.js.map index ae01f4f862dd..9a7c7ae4ce17 100644 --- a/dist/console,vue/raven.min.js.map +++ b/dist/console,vue/raven.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","consolePlugin","console","pluginOptions","logLevels","levels","push","callback","msg","data","captureMessage","level","pop","wrapConsoleMethod","wrapMethod","addPlugin","4","6","2","formatComponentName","vm","$root","name","_isVue","$options","_componentTag","__file","vuePlugin","Vue","config","_oldOnError","errorHandler","error","info","metaData","Object","prototype","toString","componentName","propsData","lifecycleHook","captureException","extra","3","RavenConfigError","message","constructor","utils","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","safeJoin","logger","Function","apply","7","5","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","sanitizeKeys","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isError","isObject","isPlainObject","isErrorEvent","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","sanitize","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","dsn","options","_logDebug","globalOptions","key","value","setDSN","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","substr","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","context","func","undefined","wrap","_before","wrapped","deep","_ignoreNextOnError","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","T","event","reason","unhandledPromiseRejection","B","_promiseRejectionHandler","bind","addEventListener","P","removeEventListener","ex","trimHeadFrames","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","U","currentOptions","exKeys","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","setDataCallback","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","L","setTimeout","$","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","_","evtName","_keypressTimeout","target","category","ba","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","ca","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","C","_originalFunctionToString","Q","D","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","type","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","E","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","R","builtin","S","F","installer","concat","G","str","m","exec","allowSecretKey","J","port","A","V","stackInfo","_triggerEvent","_processException","lineno","X","frame","_normalizeFrame","in_app","ga","stackInfoUrl","normalized","filename","line","colno","column","function","fa","prefixedMessage","exception","values","culprit","ha","request","Referer","breadcrumbs","_trimBreadcrumbs","ia","urlProp","urlProps","ja","httpData","userAgent","User-Agent","referrer","y","_backoffDuration","_backoffStart","ma","na","current","last","oa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Y","baseData","project","platform","_getHttpData","serverName","server_name","_sanitizeData","forEach","random","_sendProcessedPayload","pa","ra","qa","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","sa","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","onerror","open","setRequestHeader","send","ta","hash","evaluated","z","Z","setUser","setReleaseContext","10","8","9","RavenConstructor","_Raven","noConflict","Client","what","supportsErrorEvent","ErrorEvent","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","wrappedCallback","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","sanitizeMask","safeInput","o_O","getLocationHref","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","charAt","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","string","raw"],"mappings":";CAYA,SAAUA,GAAG,GAAoB,gBAAVC,UAAoC,mBAATC,QAAsBA,OAAOD,QAAQD,QAAS,IAAmB,kBAATG,SAAqBA,OAAOC,IAAKD,UAAUH,OAAO,CAAC,GAAIK,EAAkCA,GAAb,mBAATC,QAAwBA,OAA+B,mBAATC,QAAwBA,OAA6B,mBAAPC,MAAsBA,KAAYC,KAAKJ,EAAEK,MAAQV,MAAO,WAAqC,MAAO,SAAUW,GAAEC,EAAEC,EAAEC,GAAG,QAASC,GAAEC,EAAEC,GAAG,IAAIJ,EAAEG,GAAG,CAAC,IAAIJ,EAAEI,GAAG,CAAC,GAAIE,GAAkB,kBAATC,UAAqBA,OAAQ,KAAIF,GAAGC,EAAE,MAAOA,GAAEF,GAAE,EAAI,IAAGI,EAAE,MAAOA,GAAEJ,GAAE,EAAI,IAAIhB,GAAE,GAAIqB,OAAM,uBAAuBL,EAAE,IAAK,MAAMhB,GAAEsB,KAAK,mBAAmBtB,EAAE,GAAIuB,GAAEV,EAAEG,IAAIf,WAAYW,GAAEI,GAAG,GAAGQ,KAAKD,EAAEtB,QAAQ,SAASU,GAAG,GAAIE,GAAED,EAAEI,GAAG,GAAGL,EAAG,OAAOI,GAAEF,EAAEA,EAAEF,IAAIY,EAAEA,EAAEtB,QAAQU,EAAEC,EAAEC,EAAEC,GAAG,MAAOD,GAAEG,GAAGf,QAAkD,IAAI,GAA1CmB,GAAkB,kBAATD,UAAqBA,QAAgBH,EAAE,EAAEA,EAAEF,EAAEW,OAAOT,IAAID,EAAED,EAAEE,GAAI,OAAOD,KAAKW,GAAG,SAASC,EAAQzB,EAAOD,GAcp0B,QAAS2B,GAAclB,EAAOmB,EAASC,GACrCD,EAAUA,GAAWvB,OAAOuB,YAC5BC,EAAgBA,KAEhB,IAAIC,GAAYD,EAAcE,SAAW,QAAS,OAAQ,OAAQ,QAC9D,WAAYH,IAASE,EAAUE,KAAK,SAOxC,KALA,GAAIC,GAAW,SAASC,EAAKC,GAC3B1B,EAAM2B,eAAeF,EAAKC,IAGxBE,EAAQP,EAAUQ,MACfD,GACLE,EAAkBX,EAASS,EAAOJ,GAClCI,EAAQP,EAAUQ,MAhBtB,GAAIC,GAAoBb,EAAQ,GAAGc,UAoBnCvC,GAAOD,QAAU2B,EAEjBD,EAAQ,GAAGe,UAAUxC,EAAOD,WACzB0C,EAAI,EAAEC,EAAI,IAAIC,GAAG,SAASlB,EAAQzB,EAAOD,GAM5C,QAAS6C,GAAoBC,GAC3B,GAAIA,EAAGC,QAAUD,EACf,MAAO,eAET,IAAIE,GAAOF,EAAGG,OAASH,EAAGI,SAASF,MAAQF,EAAGI,SAASC,cAAgBL,EAAGE,IAC1E,QACGA,EAAO,cAAgBA,EAAO,IAAM,wBACpCF,EAAGG,QAAUH,EAAGI,SAASE,OAAS,OAASN,EAAGI,SAASE,OAAS,IAIrE,QAASC,GAAU5C,EAAO6C,GAIxB,GAHAA,EAAMA,GAAOjD,OAAOiD,IAGfA,GAAQA,EAAIC,OAAjB,CAEA,GAAIC,GAAcF,EAAIC,OAAOE,YAC7BH,GAAIC,OAAOE,aAAe,SAAyBC,EAAOZ,EAAIa,GAC5D,GAAIC,KAGuC,qBAAvCC,OAAOC,UAAUC,SAASxC,KAAKuB,KACjCc,EAASI,cAAgBnB,EAAoBC,GAC7Cc,EAASK,UAAYnB,EAAGI,SAASe,WAGf,mBAATN,KACTC,EAASM,cAAgBP,GAG3BlD,EAAM0D,iBAAiBT,GACrBU,MAAOR,IAGkB,kBAAhBJ,IACTA,EAAYjC,KAAKf,KAAMkD,EAAOZ,EAAIa,KAKxC1D,EAAOD,QAAUqD,EAEjB3B,EAAQ,GAAGe,UAAUxC,EAAOD,WACzB2C,EAAI,IAAI0B,GAAG,SAAS3C,EAAQzB,EAAOD,GACtC,QAASsE,GAAiBC,GACxB/D,KAAKwC,KAAO,mBACZxC,KAAK+D,QAAUA,EAEjBD,EAAiBR,UAAY,GAAI1C,OACjCkD,EAAiBR,UAAUU,YAAcF,EAEzCrE,EAAOD,QAAUsE,OAEX5B,GAAG,SAAShB,EAAQzB,EAAOD,GACjC,GAAIyE,GAAQ/C,EAAQ,GAEhBc,EAAa,SAASZ,EAASS,EAAOJ,GACxC,GAAIyC,GAAuB9C,EAAQS,GAC/BsC,EAAkB/C,CAEtB,IAAMS,IAAST,GAAf,CAIA,GAAIgD,GAAwB,SAAVvC,EAAmB,UAAYA,CAEjDT,GAAQS,GAAS,WACf,GAAIwC,MAAUC,MAAMvD,KAAKwD,WAErB7C,EAAMuC,EAAMO,SAASH,EAAM,KAC3B1C,GAAQE,MAAOuC,EAAaK,OAAQ,UAAWb,OAAQW,UAAWF,GAExD,YAAVxC,EACEwC,EAAK,MAAO,IAEd3C,EACE,sBAAwBuC,EAAMO,SAASH,EAAKC,MAAM,GAAI,MAAQ,kBAChE3C,EAAKiC,MAAMW,UAAYF,EAAKC,MAAM,GAClC7C,GAAYA,EAASC,EAAKC,IAG5BF,GAAYA,EAASC,EAAKC,GAIxBuC,GAGFQ,SAASpB,UAAUqB,MAAM5D,KAAKmD,EAAsBC,EAAiBE,KAK3E5E,GAAOD,SACLwC,WAAYA,KAGX4C,EAAI,IAAIC,GAAG,SAAS3D,EAAQzB,EAAOD,IACtC,SAAWM,GA0CX,QAASgF,KACP,OAAQ,GAAIC,MAWd,QAASC,GAAqBC,EAAUxD,GACtC,MAAOyD,GAAWzD,GACd,SAASE,GACP,MAAOF,GAASE,EAAMsD,IAExBxD,EAMN,QAASxB,KACPD,KAAKmF,IAA8B,gBAATC,QAAqBA,KAAKC,WAEpDrF,KAAKsF,GAAgBC,EAAYC,GACjCxF,KAAKyF,GAAiBF,EAAYG,GAClC1F,KAAK2F,EAAyB,KAC9B3F,KAAK4F,EAAY,KACjB5F,KAAK6F,EAAe,KACpB7F,KAAK8F,EAAgB,KACrB9F,KAAK+F,EAAa,KAClB/F,KAAKgG,EAAiB,KACtBhG,KAAKiG,KACLjG,KAAKkG,GAEHC,QAASC,EAAQC,gBAAkBD,EAAQC,eAAeC,GAC1D7B,OAAQ,aACR8B,gBACAC,cACAC,iBACAC,gBACAC,QAAS,KACTC,qBAAqB,EACrBC,4BAA4B,EAC5BC,iBAAkB,EAElBC,aAAc,IACdC,gBAAiB,GACjBC,iBAAiB,EACjBC,YAAY,EACZC,WAAY,EACZC,iBAEFpH,KAAKqH,GACHC,OAAQ,OACRC,WAAW,EAKXC,eAAgBC,IAA2B,SAAW,IAExDzH,KAAK0H,EAAiB,EACtB1H,KAAK2H,GAAoB,EACzB3H,KAAK4H,EAAgChH,MAAMoG,gBAG3ChH,KAAK6H,EAAmBzB,EAAQhF,YAChCpB,KAAK8H,KACL9H,KAAK+H,KACL/H,KAAKgI,EAAalD,IAClB9E,KAAKiI,KACLjI,KAAKkI,KACLlI,KAAKmI,EAAqB,KAE1BnI,KAAKoI,EAAYhC,EAAQiC,SACzBrI,KAAKsI,EAAYtI,KAAKoI,GAAapI,KAAKoI,EAAUG,KAClDvI,KAAKwI,GAGL,KAAK,GAAIlB,KAAUtH,MAAK6H,EACtB7H,KAAK8H,EAAwBR,GAAUtH,KAAK6H,EAAiBP,GA1HjE,GAAImB,GAAWvH,EAAQ,GACnBmE,EAAYnE,EAAQ,GACpBwH,EAAMxH,EAAQ,IACd4C,EAAmB5C,EAAQ,GAE3B+C,EAAQ/C,EAAQ,GAChByH,EAAU1E,EAAM0E,QAChBC,EAAW3E,EAAM2E,SACjBC,EAAgB5E,EAAM4E,cACtBC,EAAe7E,EAAM6E,aACrBvD,EAActB,EAAMsB,YACpBL,EAAajB,EAAMiB,WACnB6D,EAAW9E,EAAM8E,SACjBC,EAAU/E,EAAM+E,QAChBC,EAAgBhF,EAAMgF,cACtBC,EAAOjF,EAAMiF,KACbC,EAAclF,EAAMkF,YACpBC,EAAWnF,EAAMmF,SACjBC,EAAepF,EAAMoF,aACrBC,EAASrF,EAAMqF,OACfC,EAAatF,EAAMsF,WACnBC,EAAYvF,EAAMuF,UAClBC,EAAQxF,EAAMwF,MACdC,EAAmBzF,EAAMyF,iBACzBC,EAAkB1F,EAAM0F,gBACxBC,EAAmB3F,EAAM2F,iBACzBC,EAAW5F,EAAM4F,SACjBC,EAAO7F,EAAM6F,KACbC,EAAgB9F,EAAM8F,cACtBtC,EAAyBxD,EAAMwD,uBAC/BuC,EAA0B/F,EAAM+F,wBAChCC,EAAqBhG,EAAMgG,mBAC3BC,EAAWjG,EAAMiG,SAEjBnI,EAAoBb,EAAQ,GAAGc,WAE/BmI,EAAU,2CAA2CC,MAAM,KAC7DC,EAAa,gEAOXjE,EACgB,mBAAXvG,QACHA,OACkB,mBAAXC,GAAyBA,EAAyB,mBAATC,MAAuBA,QACzEyF,EAAYY,EAAQkE,SACpB5E,EAAaU,EAAQmE,SAmFzBtK,GAAMqD,WAKJkH,QAAS,SAETC,OAAO,EAEPhC,SAAUA,EASV1F,OAAQ,SAAS2H,EAAKC,GACpB,GAAI5K,GAAOC,IAEX,IAAID,EAAK+F,EAEP,MADA9F,MAAK4K,EAAU,QAAS,4CACjB7K,CAET,KAAK2K,EAAK,MAAO3K,EAEjB,IAAI8K,GAAgB9K,EAAKmG,CAGrByE,IACFzB,EAAKyB,EAAS,SAASG,EAAKC,GAEd,SAARD,GAA0B,UAARA,GAA2B,SAARA,EACvC/K,EAAKkG,EAAe6E,GAAOC,EAE3BF,EAAcC,GAAOC,IAK3BhL,EAAKiL,OAAON,GAIZG,EAActE,aAAa/E,KAAK,qBAChCqJ,EAActE,aAAa/E,KAAK,iDAGhCqJ,EAActE,aAAegD,EAAWsB,EAActE,cACtDsE,EAAcrE,aAAaqE,EAAcrE,WAAWxF,QAChDuI,EAAWsB,EAAcrE,YAE7BqE,EAAcpE,gBAAgBoE,EAAcpE,cAAczF,QACtDuI,EAAWsB,EAAcpE,eAE7BoE,EAAcnE,aAAe6C,EAAWsB,EAAcnE,cACtDmE,EAAcI,eAAiBC,KAAKC,IAClC,EACAD,KAAKE,IAAIP,EAAcI,gBAAkB,IAAK,KAGhD,IAAII,IACFC,KAAK,EACLlK,SAAS,EACTmK,KAAK,EACLlD,UAAU,EACVmD,QAAQ,GAGNvE,EAAkB4D,EAAc5D,eACM,wBAAnC1D,SAASxC,KAAKkG,GACnBA,EAAkBkC,EAAYkC,EAAwBpE,GAC7CA,KAAoB,IAC7BA,EAAkBoE,GAEpBR,EAAc5D,gBAAkBA,CAEhC,IAAIwE,IACFC,UAAU,GAGRxE,EAAa2D,EAAc3D,UAW/B,OAVqC,uBAA9B3D,SAASxC,KAAKmG,GACnBA,EAAaiC,EAAYsC,EAAoBvE,GACpCA,KAAe,IACxBA,EAAauE,GAEfZ,EAAc3D,WAAaA,EAE3BuB,EAAS7B,sBAAwBiE,EAAcjE,oBAGxC7G,GAWT4L,QAAS,WACP,GAAI5L,GAAOC,IAyBX,OAxBID,GAAK6L,YAAc7L,EAAK4H,IAC1Bc,EAASoD,OAAOC,UAAU,WACxB/L,EAAKgM,EAAwBpH,MAAM5E,EAAMwE,aAGvCxE,EAAKmG,EAAeW,4BACtB9G,EAAKiM,IAGPjM,EAAKkM,IAEDlM,EAAKmG,EAAegB,YAAcnH,EAAKmG,EAAegB,WAAWwE,UACnE3L,EAAKmM,IAGHnM,EAAKmG,EAAee,iBAAiBlH,EAAKoM,IAG9CpM,EAAKqM,IAELrM,EAAK4H,GAAoB,GAG3B/G,MAAMoG,gBAAkBjH,EAAKmG,EAAec,gBACrChH,MAQTgL,OAAQ,SAASN,GACf,GAAI3K,GAAOC,KACTqM,EAAMtM,EAAKuM,EAAU5B,GACrB6B,EAAYF,EAAIG,KAAKC,YAAY,KACjCD,EAAOH,EAAIG,KAAKE,OAAO,EAAGH,EAE5BxM,GAAK4M,EAAOjC,EACZ3K,EAAKgG,EAAasG,EAAIO,KACtB7M,EAAK8M,EAAgBR,EAAIS,MAAQT,EAAIS,KAAKJ,OAAO,GACjD3M,EAAKiG,EAAiBqG,EAAIG,KAAKE,OAAOH,EAAY,GAElDxM,EAAK+F,EAAgB/F,EAAKgN,EAAiBV,GAE3CtM,EAAKiN,EACHjN,EAAK+F,EAAgB,IAAM0G,EAAO,OAASzM,EAAKiG,EAAiB,UAInEhG,KAAKwI,KAWPyE,QAAS,SAAStC,EAASuC,EAAM7I,GAO/B,MANIa,GAAWyF,KACbtG,EAAO6I,MACPA,EAAOvC,EACPA,EAAUwC,QAGLnN,KAAKoN,KAAKzC,EAASuC,GAAMvI,MAAM3E,KAAMqE,IAW9C+I,KAAM,SAASzC,EAASuC,EAAMG,GAqC5B,QAASC,KACP,GAAIjJ,MACF1D,EAAI4D,UAAUvD,OACduM,GAAQ5C,GAAYA,GAAWA,EAAQ4C,QAAS,CAQlD,KANIF,GAAWnI,EAAWmI,IACxBA,EAAQ1I,MAAM3E,KAAMuE,WAKf5D,KAAK0D,EAAK1D,GAAK4M,EAAOxN,EAAKqN,KAAKzC,EAASpG,UAAU5D,IAAM4D,UAAU5D,EAE1E,KAKE,MAAOuM,GAAKvI,MAAM3E,KAAMqE,GACxB,MAAOnE,GAGP,KAFAH,GAAKyN,IACLzN,EAAK4D,iBAAiBzD,EAAGyK,GACnBzK,GA1DV,GAAIH,GAAOC,IAGX,IAAIuF,EAAY2H,KAAUhI,EAAWyF,GACnC,MAAOA,EAWT,IAPIzF,EAAWyF,KACbuC,EAAOvC,EACPA,EAAUwC,SAKPjI,EAAWgI,GACd,MAAOA,EAIT,KACE,GAAIA,EAAKO,EACP,MAAOP,EAIT,IAAIA,EAAKQ,EACP,MAAOR,GAAKQ,EAEd,MAAOxN,GAIP,MAAOgN,GA8BT,IAAK,GAAIS,KAAYT,GACf5D,EAAO4D,EAAMS,KACfL,EAAQK,GAAYT,EAAKS,GAW7B,OARAL,GAAQhK,UAAY4J,EAAK5J,UAEzB4J,EAAKQ,EAAoBJ,EAGzBA,EAAQG,GAAY,EACpBH,EAAQM,EAAWV,EAEZI,GAQTO,UAAW,WAWT,MAVApF,GAASoD,OAAOgC,YAEhB7N,KAAK8N,IACL9N,KAAK+N,IACL/N,KAAKgO,IACLhO,KAAKiO,IAELrN,MAAMoG,gBAAkBhH,KAAK4H,EAC7B5H,KAAK2H,GAAoB,EAElB3H,MAWTkO,EAA0B,SAASC,GACjCnO,KAAK4K,EAAU,QAAS,4CAA6CuD,GACrEnO,KAAK2D,iBAAiBwK,EAAMC,QAC1BxK,OACEyK,2BAA2B,MAUjCC,EAAgC,WAI9B,MAHAtO,MAAKuO,EAA2BvO,KAAKuO,EAAyBC,KAAKxO,MACnEoG,EAAQqI,kBACNrI,EAAQqI,iBAAiB,qBAAsBzO,KAAKuO,GAC/CvO,MAQT0O,EAAgC,WAG9B,MAFAtI,GAAQuI,qBACNvI,EAAQuI,oBAAoB,qBAAsB3O,KAAKuO,GAClDvO,MAUT2D,iBAAkB,SAASiL,EAAIjE,GAG7B,GAFAA,EAAUxB,GAAa0F,eAAgB,GAAIlE,EAAUA,MAEjD7B,EAAa8F,IAAOA,EAAG1L,MAEzB0L,EAAKA,EAAG1L,UACH,IAAIyF,EAAQiG,GAEjBA,EAAKA,MACA,CAAA,IAAI/F,EAAc+F,GAYvB,MAAO5O,MAAK4B,eACVgN,EACAzF,EAAYwB,GACVmE,YAAY,EACZD,eAAgBlE,EAAQkE,eAAiB,IAZ7ClE,GAAU3K,KAAK+O,EAA2CpE,EAASiE,GACnEA,EAAK,GAAIhO,OAAM+J,EAAQ5G,SAiBzB/D,KAAK2F,EAAyBiJ,CAO9B,KACE,GAAII,GAAQvG,EAASwG,kBAAkBL,EACvC5O,MAAKkP,EAAiBF,EAAOrE,GAC7B,MAAOwE,GACP,GAAIP,IAAOO,EACT,KAAMA,GAIV,MAAOnP,OAGToP,EAA4C,SAASC,EAAgBT,GACnE,GAAIU,GAASjM,OAAOkM,KAAKX,GAAIY,OACzB7E,EAAUxB,EAAYkG,GACxBtL,QACE,2CAA6CiG,EAAwBsF,GACvEG,aAAc/G,EAAI4G,IAClB1L,MAAOyL,EAAezL,WAIxB,OAFA+G,GAAQ/G,MAAM8L,EAAiBzF,EAAmB2E,GAE3CjE,GAUT/I,eAAgB,SAASF,EAAKiJ,GAI5B,IACI3K,KAAKkG,EAAeK,aAAaoJ,OACnC3P,KAAKkG,EAAeK,aAAaoJ,KAAKjO,GAFxC,CAOAiJ,EAAUA,MACVjJ,GAAY,EAEZ,IAOIkN,GAPAjN,EAAOwH,GAEPpF,QAASrC,GAEXiJ,EAQF,KACE,KAAM,IAAI/J,OAAMc,GAChB,MAAOyN,GACPP,EAAKO,EAIPP,EAAGpM,KAAO,IACV,IAAIwM,GAAQvG,EAASwG,kBAAkBL,GAGnCgB,EAAc5G,EAAQgG,EAAMA,QAAUA,EAAMA,MAAM,EAKlDY,IAAoC,2BAArBA,EAAY1C,OAC7B0C,EAAcZ,EAAMA,MAAM,GAG5B,IAAIa,GAAWD,GAAeA,EAAYE,KAAQ,EAElD,MACI9P,KAAKkG,EAAeM,WAAWmJ,OACjC3P,KAAKkG,EAAeM,WAAWmJ,KAAKE,OAMlC7P,KAAKkG,EAAeO,cAAckJ,MACnC3P,KAAKkG,EAAeO,cAAckJ,KAAKE,IAF1C,CAOA,GAAI7P,KAAKkG,EAAe4I,YAAenE,GAAWA,EAAQmE,WAAa,CAErEnN,EAAK8N,YAAkC,MAApB9N,EAAK8N,YAAsB/N,EAAMC,EAAK8N,YAEzD9E,EAAUxB,GAEN0F,eAAgB,GAElBlE,GAMFA,EAAQkE,gBAAkB,CAE1B,IAAIkB,GAAS/P,KAAKgQ,EAAehB,EAAOrE,EACxChJ,GAAKmN,YAEHiB,OAAQA,EAAOE,WAcnB,MATItO,GAAK8N,cACP9N,EAAK8N,YAAczG,EAAQrH,EAAK8N,aAC5B9N,EAAK8N,aACJ9N,EAAK8N,cAIZzP,KAAKkQ,EAAMvO,GAEJ3B,QAGTmQ,kBAAmB,SAASC,GAC1B,GAAIC,GAAQlH,GAERmH,UAAWxL,IAAQ,KAErBsL,EAGF,IAAIlL,EAAWlF,KAAKkG,EAAeqK,oBAAqB,CACtD,GAAIC,GAASxQ,KAAKkG,EAAeqK,mBAAmBF,EAEpD,IAAIzH,EAAS4H,KAAYvH,EAAcuH,GACrCH,EAAQG,MACH,IAAIA,KAAW,EACpB,MAAOxQ,MAQX,MAJAA,MAAKkI,EAAa1G,KAAK6O,GACnBrQ,KAAKkI,EAAalH,OAAShB,KAAKkG,EAAe+E,gBACjDjL,KAAKkI,EAAauI,QAEbzQ,MAGTiC,UAAW,SAASyO,GAClB,GAAIC,MAAgBrM,MAAMvD,KAAKwD,UAAW,EAO1C,OALAvE,MAAK+H,EAASvG,MAAMkP,EAAQC,IACxB3Q,KAAK2H,GACP3H,KAAKoM,IAGApM,MAST4Q,eAAgB,SAAShE,GAIvB,MAFA5M,MAAKiG,EAAe2G,KAAOA,EAEpB5M,MAST6Q,gBAAiB,SAASjN,GAGxB,MAFA5D,MAAK8Q,EAAc,QAASlN,GAErB5D,MAST+Q,eAAgB,SAASC,GAGvB,MAFAhR,MAAK8Q,EAAc,OAAQE,GAEpBhR,MAQTiR,aAAc,WAGZ,MAFAjR,MAAKiG,KAEEjG,MAQTkR,WAAY,WAEV,MAAO9L,MAAK+L,MAAM9L,EAAUrF,KAAKiG,KASnCmL,eAAgB,SAASC,GAGvB,MAFArR,MAAKkG,EAAemL,YAAcA,EAE3BrR,MASTsR,WAAY,SAASnL,GAGnB,MAFAnG,MAAKkG,EAAeC,QAAUA,EAEvBnG,MAUTuR,gBAAiB,SAAS9P,GACxB,GAAIwD,GAAWjF,KAAKkG,EAAesL,YAEnC,OADAxR,MAAKkG,EAAesL,aAAexM,EAAqBC,EAAUxD,GAC3DzB,MAUTyR,sBAAuB,SAAShQ,GAC9B,GAAIwD,GAAWjF,KAAKkG,EAAeqK,kBAEnC,OADAvQ,MAAKkG,EAAeqK,mBAAqBvL,EAAqBC,EAAUxD,GACjEzB,MAUT0R,sBAAuB,SAASjQ,GAC9B,GAAIwD,GAAWjF,KAAKkG,EAAeyL,kBAEnC,OADA3R,MAAKkG,EAAeyL,mBAAqB3M,EAAqBC,EAAUxD,GACjEzB,MAYT4R,aAAc,SAASC,GAGrB,MAFA7R,MAAKkG,EAAe2L,UAAYA,EAEzB7R,MAQT8R,cAAe,WACb,MAAO9R,MAAK2F,GAQdoM,YAAa,WACX,MAAO/R,MAAK6F,GAQd+F,QAAS,WACP,QAAK5L,KAAKmF,MACLnF,KAAK8F,IACH9F,KAAKgS,0BACRhS,KAAKgS,yBAA0B,EAC/BhS,KAAK4K,EAAU,QAAS,2CAEnB,KAKXqH,UAAW,WAIT,GAAIC,GAAc9L,EAAQ8L,WACtBA,IACFlS,KAAK+C,OAAOmP,EAAYxH,IAAKwH,EAAYnP,QAAQ4I,WAIrDwG,iBAAkB,SAASxH,GACzB,GACGnF,EADH,CAKAmF,EAAUA,KAEV,IAAIoH,GAAcpH,EAAQyH,SAAWpS,KAAK+R,aAC1C,KAAKA,EACH,KAAM,IAAIjO,GAAiB,kBAG7B,IAAI4G,GAAMC,EAAQD,KAAO1K,KAAK2M,CAC9B,KAAKjC,EACH,KAAM,IAAI5G,GAAiB,cAG7B,IAAIuO,GAASC,mBACTC,EAAK,EACTA,IAAM,YAAcF,EAAON,GAC3BQ,GAAM,QAAUF,EAAO3H,EAEvB,IAAIkC,GAAOjC,EAAQiC,MAAQ5M,KAAKiG,EAAe2G,IAC3CA,KACEA,EAAKpK,OAAM+P,GAAM,SAAWF,EAAOzF,EAAKpK,OACxCoK,EAAK4F,QAAOD,GAAM,UAAYF,EAAOzF,EAAK4F,QAGhD,IAAIC,GAAezS,KAAK+M,EAAiB/M,KAAKsM,EAAU5B,IAEpDgI,EAASlN,EAAUmN,cAAc,SACrCD,GAAOE,OAAQ,EACfF,EAAOG,IAAMJ,EAAe,yBAA2BF,GACtD/M,EAAUsN,MAAQtN,EAAUuN,MAAMC,YAAYN,KAIjDO,EAAoB,WAClB,GAAIlT,GAAOC,IACXA,MAAK0H,GAAkB,EACvBwL,WAAW,WAETnT,EAAK2H,GAAkB,KAI3ByL,EAAe,SAASC,EAAWzI,GAEjC,GAAI0I,GAAKvI,CAET,IAAK9K,KAAKsF,EAAV,CAEAqF,EAAUA,MAEVyI,EAAY,QAAUA,EAAU1G,OAAO,EAAG,GAAG4G,cAAgBF,EAAU1G,OAAO,GAE1ElH,EAAU+N,aACZF,EAAM7N,EAAU+N,YAAY,cAC5BF,EAAIG,UAAUJ,GAAW,GAAM,KAE/BC,EAAM7N,EAAUiO,oBAChBJ,EAAID,UAAYA,EAGlB,KAAKtI,IAAOH,GACNrB,EAAOqB,EAASG,KAClBuI,EAAIvI,GAAOH,EAAQG,GAGvB,IAAItF,EAAU+N,YAEZ/N,EAAUkO,cAAcL,OAIxB,KACE7N,EAAUmO,UAAU,KAAON,EAAID,UAAUQ,cAAeP,GACxD,MAAOnT,OAYb2T,EAAyB,SAASC,GAChC,GAAI/T,GAAOC,IACX,OAAO,UAASqT,GASd,GALAtT,EAAKgU,GAAmB,KAKpBhU,EAAKoI,IAAuBkL,EAAhC,CAEAtT,EAAKoI,EAAqBkL,CAM1B,IAAIW,EACJ,KACEA,EAAStK,EAAiB2J,EAAIW,QAC9B,MAAO9T,GACP8T,EAAS,YAGXjU,EAAKoQ,mBACH8D,SAAU,MAAQH,EAClB/P,QAASiQ,OAUfE,GAAuB,WACrB,GAAInU,GAAOC,KACTmU,EAAmB,GAKrB,OAAO,UAASd,GACd,GAAIW,EACJ,KACEA,EAASX,EAAIW,OACb,MAAO9T,GAGP,OAEF,GAAIkU,GAAUJ,GAAUA,EAAOI,OAK/B,IACGA,IACY,UAAZA,GAAmC,aAAZA,GAA2BJ,EAAOK,mBAF5D,CAQA,GAAIC,GAAUvU,EAAKgU,EACdO,IACHvU,EAAKwU,EAAwB,SAASlB,GAExCmB,aAAaF,GACbvU,EAAKgU,GAAmBb,WAAW,WACjCnT,EAAKgU,GAAmB,MACvBI,MAUPM,GAAmB,SAASC,EAAMC,GAChC,GAAIC,GAAY/K,EAAS7J,KAAKoI,EAAUG,MACpCsM,EAAWhL,EAAS8K,GACpBG,EAAajL,EAAS6K,EAK1B1U,MAAKsI,EAAYqM,EAIbC,EAAUG,WAAaF,EAASE,UAAYH,EAAUI,OAASH,EAASG,OAC1EL,EAAKE,EAASI,UACZL,EAAUG,WAAaD,EAAWC,UAAYH,EAAUI,OAASF,EAAWE,OAC9EN,EAAOI,EAAWG,UAEpBjV,KAAKmQ,mBACH8D,SAAU,aACVtS,MACEgT,GAAIA,EACJD,KAAMA,MAKZQ,EAAwB,WACtB,GAAInV,GAAOC,IACXD,GAAKoV,GAA4BzQ,SAASpB,UAAUC,SAEpDmB,SAASpB,UAAUC,SAAW,WAC5B,MAAoB,kBAATvD,OAAuBA,KAAKyN,EAC9B1N,EAAKoV,GAA0BxQ,MAAM3E,KAAK4N,EAAUrJ,WAEtDxE,EAAKoV,GAA0BxQ,MAAM3E,KAAMuE,aAItD6Q,EAA0B,WACpBpV,KAAKmV,KAEPzQ,SAASpB,UAAUC,SAAWvD,KAAKmV,KAQvCE,EAAqB,WAKnB,QAASC,GAAWC,GAClB,MAAO,UAASC,EAAIrV,GAKlB,IAAK,GADDkE,GAAO,GAAIoR,OAAMlR,UAAUvD,QACtBL,EAAI,EAAGA,EAAI0D,EAAKrD,SAAUL,EACjC0D,EAAK1D,GAAK4D,UAAU5D,EAEtB,IAAI+U,GAAmBrR,EAAK,EAQ5B,OAPIa,GAAWwQ,KACbrR,EAAK,GAAKtE,EAAKqN,KAAKsI,IAMlBH,EAAK5Q,MACA4Q,EAAK5Q,MAAM3E,KAAMqE,GAEjBkR,EAAKlR,EAAK,GAAIA,EAAK,KAOhC,QAASsR,GAAgB7V,GACvB,GAAI8V,GAAQxP,EAAQtG,IAAWsG,EAAQtG,GAAQwD,SAC3CsS,IAASA,EAAMC,gBAAkBD,EAAMC,eAAe,sBACxD/L,EACE8L,EACA,mBACA,SAASL,GACP,MAAO,UAASzB,EAAS0B,EAAIM,EAASC,GAEpC,IACMP,GAAMA,EAAGQ,cACXR,EAAGQ,YAAcjW,EAAKqN,KAAKoI,EAAGQ,cAEhC,MAAOC,IAMT,GAAIC,GAAQC,EAAcC,CA6B1B,OA1BEnP,IACAA,EAAgBsE,MACJ,gBAAXzL,GAAuC,SAAXA,KAI7BqW,EAAepW,EAAKwU,EAAwB,SAC5C6B,EAAkBrW,EAAKsW,KACvBH,EAAS,SAAS7C,GAIhB,GAAKA,EAAL,CAEA,GAAID,EACJ,KACEA,EAAYC,EAAIiD,KAChB,MAAOpW,GAGP,OAEF,MAAkB,UAAdkT,EAA8B+C,EAAa9C,GACxB,aAAdD,EAAiCgD,EAAgB/C,GAArD,UAGFkC,EAAKxU,KACVf,KACA8T,EACA/T,EAAKqN,KAAKoI,EAAIrI,OAAW+I,GACzBJ,EACAC,KAINQ,GAEFzM,EACE8L,EACA,sBACA,SAASL,GACP,MAAO,UAASlC,EAAKmC,EAAIM,EAASC,GAChC,IACEP,EAAKA,IAAOA,EAAG9H,EAAoB8H,EAAG9H,EAAoB8H,GAC1D,MAAOtV,IAGT,MAAOqV,GAAKxU,KAAKf,KAAMqT,EAAKmC,EAAIM,EAASC,KAG7CQ,IAvGN,GAAIxW,GAAOC,KAEPuW,EAAkBxW,EAAKkI,EA2BvBhB,EAAkBjH,KAAKkG,EAAee,eA+E1C6C,GAAK1D,EAAS,aAAckP,EAAYiB,GACxCzM,EAAK1D,EAAS,cAAekP,EAAYiB,GACrCnQ,EAAQoQ,uBACV1M,EACE1D,EACA,wBACA,SAASmP,GACP,MAAO,UAASkB,GACd,MAAOlB,GAAKxV,EAAKqN,KAAKqJ,MAG1BF,EAqCJ,KAAK,GA/BDG,IACF,cACA,SACA,OACA,mBACA,iBACA,oBACA,kBACA,cACA,aACA,qBACA,cACA,aACA,iBACA,eACA,kBACA,cACA,cACA,eACA,qBACA,SACA,YACA,eACA,gBACA,YACA,kBACA,SACA,iBACA,4BACA,wBAEO/V,EAAI,EAAGA,EAAI+V,EAAa1V,OAAQL,IACvCgV,EAAgBe,EAAa/V,KAajCgW,EAAwB,WAMtB,QAASC,GAASC,EAAMvL,GAClBuL,IAAQvL,IAAOpG,EAAWoG,EAAIuL,KAChC/M,EAAKwB,EAAKuL,EAAM,SAAStB,GACvB,MAAOxV,GAAKqN,KAAKmI,KARvB,GAAIxV,GAAOC,KACPiH,EAAkBjH,KAAKkG,EAAee,gBAEtCsP,EAAkBxW,EAAKkI,CAU3B,IAAIhB,EAAgBqE,KAAO,kBAAoBlF,GAAS,CACtD,GAAI0Q,GAAW1Q,EAAQ2Q,gBAAkB3Q,EAAQ2Q,eAAezT,SAChEwG,GACEgN,EACA,OACA,SAASE,GACP,MAAO,UAAS1P,EAAQwI,GAYtB,MARI/G,GAAS+G,IAAQA,EAAImH,QAAQlX,EAAKgG,UACpC/F,KAAKkX,IACH5P,OAAQA,EACRwI,IAAKA,EACLqH,YAAa,OAIVH,EAASrS,MAAM3E,KAAMuE,aAGhCgS,GAGFzM,EACEgN,EACA,OACA,SAASM,GACP,MAAO,YAIL,QAASC,KACP,GAAI/L,EAAI4L,IAAkC,IAAnB5L,EAAIgM,WAAkB,CAC3C,IAGEhM,EAAI4L,GAAYC,YAAc7L,EAAIiM,OAClC,MAAOrX,IAITH,EAAKoQ,mBACHmG,KAAM,OACNrC,SAAU,MACVtS,KAAM2J,EAAI4L,MAMhB,IAAK,GArBD5L,GAAMtL,KAoBNwX,GAAS,SAAU,UAAW,cACzBC,EAAI,EAAGA,EAAID,EAAMxW,OAAQyW,IAChCb,EAASY,EAAMC,GAAInM,EAiBrB,OAdI,sBAAwBA,IAAOpG,EAAWoG,EAAIoM,oBAChD5N,EACEwB,EACA,qBACA,SAASiK,GACP,MAAOxV,GAAKqN,KAAKmI,EAAMpI,OAAWkK,KAMtC/L,EAAIoM,mBAAqBL,EAGpBD,EAASzS,MAAM3E,KAAMuE,aAGhCgS,GAIAtP,EAAgBqE,KAAOvB,KACzBD,EACE1D,EACA,QACA,SAASuR,GACP,MAAO,YAKL,IAAK,GADDtT,GAAO,GAAIoR,OAAMlR,UAAUvD,QACtBL,EAAI,EAAGA,EAAI0D,EAAKrD,SAAUL,EACjC0D,EAAK1D,GAAK4D,UAAU5D,EAGtB,IAEImP,GAFA8H,EAAavT,EAAK,GAClBiD,EAAS,KAeb,IAZ0B,gBAAfsQ,GACT9H,EAAM8H,EACG,WAAaxR,IAAWwR,YAAsBxR,GAAQyR,SAC/D/H,EAAM8H,EAAW9H,IACb8H,EAAWtQ,SACbA,EAASsQ,EAAWtQ,SAGtBwI,EAAM,GAAK8H,EAIT9H,EAAImH,QAAQlX,EAAKgG,QACnB,MAAO4R,GAAUhT,MAAM3E,KAAMqE,EAG3BA,GAAK,IAAMA,EAAK,GAAGiD,SACrBA,EAASjD,EAAK,GAAGiD,OAGnB,IAAIwQ,IACFxQ,OAAQA,EACRwI,IAAKA,EACLqH,YAAa,KAGf,OAAOQ,GACJhT,MAAM3E,KAAMqE,GACZ0T,KAAK,SAASC,GASb,MARAF,GAAUX,YAAca,EAAST,OAEjCxX,EAAKoQ,mBACHmG,KAAM,OACNrC,SAAU,QACVtS,KAAMmW,IAGDE,IAER,SAAS,SAAS/B,GASjB,KAPAlW,GAAKoQ,mBACHmG,KAAM,OACNrC,SAAU,QACVtS,KAAMmW,EACNjW,MAAO,UAGHoU,MAIdM,GAMAtP,EAAgBsE,KAAOvL,KAAKsF,IAC1BE,EAAUiJ,kBACZjJ,EAAUiJ,iBAAiB,QAAS1O,EAAKwU,EAAwB,UAAU,GAC3E/O,EAAUiJ,iBAAiB,WAAY1O,EAAKsW,MAAyB,IAC5D7Q,EAAUyS,cAEnBzS,EAAUyS,YAAY,UAAWlY,EAAKwU,EAAwB,UAC9D/O,EAAUyS,YAAY,aAAclY,EAAKsW,OAQ7C,IAAI6B,GAAS9R,EAAQ8R,OACjBC,EAAsBD,GAAUA,EAAOE,KAAOF,EAAOE,IAAIC,QACzDC,GACDH,GACD/R,EAAQmS,SACRA,QAAQC,WACRD,QAAQE,YACV,IAAIxR,EAAgBoB,UAAYiQ,EAAwB,CAEtD,GAAII,GAAgBtS,EAAQuS,UAC5BvS,GAAQuS,WAAa,WACnB,GAAIC,GAAc7Y,EAAKqI,EAAUG,IAGjC,IAFAxI,EAAK8Y,GAAkB9Y,EAAKuI,EAAWsQ,GAEnCF,EACF,MAAOA,GAAc/T,MAAM3E,KAAMuE,WAIrC,IAAIuU,GAA6B,SAASC,GAGxC,MAAO,YACL,GAAIjJ,GAAMvL,UAAUvD,OAAS,EAAIuD,UAAU,GAAK4I,MAQhD,OALI2C,IAEF/P,EAAK8Y,GAAkB9Y,EAAKuI,EAAWwH,EAAM,IAGxCiJ,EAAiBpU,MAAM3E,KAAMuE,YAIxCuF,GAAKyO,QAAS,YAAaO,EAA4BvC,GACvDzM,EAAKyO,QAAS,eAAgBO,EAA4BvC,GAG5D,GAAItP,EAAgB7F,SAAW,WAAagF,IAAWhF,QAAQ4X,IAAK,CAElE,GAAIC,GAAwB,SAASvX,EAAKC,GACxC5B,EAAKoQ,mBACHpM,QAASrC,EACTG,MAAOF,EAAKE,MACZoS,SAAU,YAId/K,IAAM,QAAS,OAAQ,OAAQ,QAAS,OAAQ,SAAS2K,EAAGhS,GAC1DE,EAAkBX,QAASS,EAAOoX,OAKxCC,EAAkB,WAGhB,IADA,GAAIC,GACGnZ,KAAKiI,EAAiBjH,QAAQ,CACnCmY,EAAUnZ,KAAKiI,EAAiBwI,OAEhC,IAAIL,GAAM+I,EAAQ,GAChB3W,EAAO2W,EAAQ,GACf5D,EAAO4D,EAAQ,EAEjB/I,GAAI5N,GAAQ+S,IAIhB6D,EAAiB,WAEf,IAAK,GAAI9R,KAAUtH,MAAK8H,EACtB9H,KAAK6H,EAAiBP,GAAUtH,KAAK8H,EAAwBR,IAIjE+R,EAAe,WACb,GAAItZ,GAAOC,IAGXkJ,GAAKlJ,KAAK+H,EAAU,SAAS8L,EAAGnD,GAC9B,GAAI4I,GAAY5I,EAAO,GACnBrM,EAAOqM,EAAO,EAClB4I,GAAU3U,MAAM5E,GAAOA,GAAMwZ,OAAOlV,OAIxCmV,EAAW,SAASC,GAClB,GAAIC,GAAIrP,EAAWsP,KAAKF,GACtB/O,KACA/J,EAAI,CAEN,KACE,KAAOA,KAAK+J,EAAIP,EAAQxJ,IAAM+Y,EAAE/Y,IAAM,GACtC,MAAOT,GACP,KAAM,IAAI4D,GAAiB,gBAAkB2V,GAG/C,GAAI/O,EAAIoC,OAAS9M,KAAKkG,EAAe0T,eACnC,KAAM,IAAI9V,GACR,iFAIJ,OAAO4G,IAGTmP,EAAkB,SAASxN,GAEzB,GAAIoG,GAAe,KAAOpG,EAAI2I,MAAQ3I,EAAIyN,KAAO,IAAMzN,EAAIyN,KAAO,GAKlE,OAHIzN,GAAI0I,WACNtC,EAAepG,EAAI0I,SAAW,IAAMtC,GAE/BA,GAGTsH,EAAyB,WAElB/Z,KAAK0H,GACR1H,KAAKkP,EAAiBvK,MAAM3E,KAAMuE,YAItCyV,EAAkB,SAASC,EAAWtP,GACpC,GAAIoF,GAAS/P,KAAKgQ,EAAeiK,EAAWtP,EAE5C3K,MAAKka,EAAc,UACjBD,UAAWA,EACXtP,QAASA,IAGX3K,KAAKma,GACHF,EAAUzX,KACVyX,EAAUlW,QACVkW,EAAUnK,IACVmK,EAAUG,OACVrK,EACApF,IAIJ0P,EAAgB,SAASJ,EAAWtP,GAClC,GAAI5K,GAAOC,KACP+P,IACJ,IAAIkK,EAAUjL,OAASiL,EAAUjL,MAAMhO,SACrCkI,EAAK+Q,EAAUjL,MAAO,SAASrO,EAAGqO,GAChC,GAAIsL,GAAQva,EAAKwa,GAAgBvL,EAAOiL,EAAUnK,IAC9CwK,IACFvK,EAAOvO,KAAK8Y,KAKZ3P,GAAWA,EAAQkE,gBACrB,IAAK,GAAI4I,GAAI,EAAGA,EAAI9M,EAAQkE,gBAAkB4I,EAAI1H,EAAO/O,OAAQyW,IAC/D1H,EAAO0H,GAAG+C,QAAS,CAKzB,OADAzK,GAASA,EAAOzL,MAAM,EAAGtE,KAAKkG,EAAec,kBAI/CyT,GAAiB,SAASH,EAAOI,GAE/B,GAAIC,IACFC,SAAUN,EAAMxK,IAChBsK,OAAQE,EAAMO,KACdC,MAAOR,EAAMS,OACbC,WAAUV,EAAMpN,MAAQ,IAuB1B,OAfKoN,GAAMxK,MACT6K,EAAWC,SAAWF,GAGxBC,EAAWH,SAGNxa,KAAKkG,EAAeQ,aAAaiJ,OACjC3P,KAAKkG,EAAeQ,aAAaiJ,KAAKgL,EAAWC,WAEpD,qBAAqBjL,KAAKgL,EAAW,cAErC,qBAAqBhL,KAAKgL,EAAWC,WAGhCD,GAGTM,GAAmB,SAAS3E,EAAMvS,EAAS8L,EAASuK,EAAQrK,EAAQpF,GAClE,GAAIuQ,IAAmB5E,EAAOA,EAAO,KAAO,KAAOvS,GAAW,GAC9D,KACI/D,KAAKkG,EAAeK,aAAaoJ,OAClC3P,KAAKkG,EAAeK,aAAaoJ,KAAK5L,KACrC/D,KAAKkG,EAAeK,aAAaoJ,KAAKuL,GAH1C,CAQA,GAAIpM,EAoBJ,IAlBIiB,GAAUA,EAAO/O,QACnB6O,EAAUE,EAAO,GAAG6K,UAAY/K,EAGhCE,EAAOE,UACPnB,GAAciB,OAAQA,IACbF,IACTf,GACEiB,SAEI6K,SAAU/K,EACVuK,OAAQA,EACRI,QAAQ,QAOZxa,KAAKkG,EAAeM,WAAWmJ,OACjC3P,KAAKkG,EAAeM,WAAWmJ,KAAKE,OAMlC7P,KAAKkG,EAAeO,cAAckJ,MACnC3P,KAAKkG,EAAeO,cAAckJ,KAAKE,IAF1C,CAOA,GAAIlO,GAAOwH,GAGPgS,WACEC,SAEI9E,KAAMA,EACNvL,MAAOhH,EACP+K,WAAYA,KAIlBuM,QAASxL,GAEXlF,EAIF3K,MAAKkQ,EAAMvO,MAGb2Z,GAAa,SAAS3Z,GAGpB,GAAIwJ,GAAMnL,KAAKkG,EAAeY,gBAI9B,IAHInF,EAAKoC,UACPpC,EAAKoC,QAAUqF,EAASzH,EAAKoC,QAASoH,IAEpCxJ,EAAKwZ,UAAW,CAClB,GAAIA,GAAYxZ,EAAKwZ,UAAUC,OAAO,EACtCD,GAAUpQ,MAAQ3B,EAAS+R,EAAUpQ,MAAOI,GAG9C,GAAIoQ,GAAU5Z,EAAK4Z,OAanB,OAZIA,KACEA,EAAQzL,MACVyL,EAAQzL,IAAM1G,EAASmS,EAAQzL,IAAK9P,KAAKkG,EAAea,eAEtDwU,EAAQC,UACVD,EAAQC,QAAUpS,EAASmS,EAAQC,QAASxb,KAAKkG,EAAea,gBAIhEpF,EAAK8Z,aAAe9Z,EAAK8Z,YAAYL,QACvCpb,KAAK0b,GAAiB/Z,EAAK8Z,aAEtB9Z,GAMTga,GAAkB,SAASF,GAQzB,IAAK,GAJHG,GACAvL,EACA1O,EAHEka,GAAY,KAAM,OAAQ,OAKrBlb,EAAI,EAAGA,EAAI8a,EAAYL,OAAOpa,SAAUL,EAE/C,GADA0P,EAAQoL,EAAYL,OAAOza,GAExB0P,EAAMwF,eAAe,SACrBjN,EAASyH,EAAM1O,QAChB0H,EAAagH,EAAM1O,MAHrB,CAOAA,EAAOwH,KAAgBkH,EAAM1O,KAC7B,KAAK,GAAI8V,GAAI,EAAGA,EAAIoE,EAAS7a,SAAUyW,EACrCmE,EAAUC,EAASpE,GACf9V,EAAKkU,eAAe+F,IAAYja,EAAKia,KACvCja,EAAKia,GAAWxS,EAASzH,EAAKia,GAAU5b,KAAKkG,EAAea,cAGhE0U,GAAYL,OAAOza,GAAGgB,KAAOA,IAIjCma,GAAc,WACZ,GAAK9b,KAAKyF,GAAkBzF,KAAKsF,EAAjC,CACA,GAAIyW,KAkBJ,OAhBI/b,MAAKyF,GAAiBC,EAAWsW,YACnCD,EAASpV,SACPsV,aAAc1R,UAAUyR,YAKxB5V,EAAQiC,UAAYjC,EAAQiC,SAASE,OACvCwT,EAASjM,IAAM1J,EAAQiC,SAASE,MAG9BvI,KAAKsF,GAAgBE,EAAU0W,WAC5BH,EAASpV,UAASoV,EAASpV,YAChCoV,EAASpV,QAAQ6U,QAAUhW,EAAU0W,UAGhCH,IAGTI,EAAe,WACbnc,KAAKoc,GAAmB,EACxBpc,KAAKqc,GAAgB,MAGvBC,GAAgB,WACd,MAAOtc,MAAKoc,IAAoBtX,IAAQ9E,KAAKqc,GAAgBrc,KAAKoc,IAYpEG,GAAe,SAASC,GACtB,GAAIC,GAAOzc,KAAK4F,CAEhB,UACG6W,GACDD,EAAQzY,UAAY0Y,EAAK1Y,SACzByY,EAAQnB,UAAYoB,EAAKpB,WAKvBmB,EAAQ1N,YAAc2N,EAAK3N,WACtBlF,EAAiB4S,EAAQ1N,WAAY2N,EAAK3N,aACxC0N,EAAQrB,YAAasB,EAAKtB,WAE5BxR,EAAgB6S,EAAQrB,UAAWsB,EAAKtB,aAMnDuB,GAAkB,SAASnB,GAEzB,IAAIvb,KAAK2c,KAAT,CAIA,GAAIpF,GAASgE,EAAQhE,MAKrB,IAAiB,MAAXA,GAA6B,MAAXA,GAA6B,MAAXA,EAA1C,CAEA,GAAIqF,EACJ,KAIIA,EADE7S,IACMwR,EAAQ5U,QAAQkW,IAAI,eAEpBtB,EAAQuB,kBAAkB,eAIpCF,EAA8B,IAAtBG,SAASH,EAAO,IACxB,MAAO1c,IAITF,KAAKoc,GAAmBQ,EAEpBA,EAEwB,EAAxB5c,KAAKoc,IAAwB,IAEjCpc,KAAKqc,GAAgBvX,OAGvBkY,EAAO,SAASrb,GACd,GAAIkJ,GAAgB7K,KAAKkG,EAErB+W,GACAC,QAASld,KAAKgG,EACdvB,OAAQoG,EAAcpG,OACtB0Y,SAAU,cAEZpB,EAAW/b,KAAKod,IAsDlB,IApDIrB,IACFkB,EAAS1B,QAAUQ,GAIjBpa,EAAKkN,sBAAuBlN,GAAKkN,eAErClN,EAAOwH,EAAY8T,EAAUtb,GAG7BA,EAAKqP,KAAO7H,EAAYA,KAAgBnJ,KAAKiG,EAAe+K,MAAOrP,EAAKqP,MACxErP,EAAKiC,MAAQuF,EAAYA,KAAgBnJ,KAAKiG,EAAerC,OAAQjC,EAAKiC,OAG1EjC,EAAKiC,MAAM,oBAAsBkB,IAAQ9E,KAAKgI,EAE1ChI,KAAKkI,GAAgBlI,KAAKkI,EAAalH,OAAS,IAGlDW,EAAK8Z,aACHL,UAAW9W,MAAMvD,KAAKf,KAAKkI,EAAc,KAIzClI,KAAKiG,EAAe2G,OAEtBjL,EAAKiL,KAAO5M,KAAKiG,EAAe2G,MAI9B/B,EAAcwG,cAAa1P,EAAK0P,YAAcxG,EAAcwG,aAG5DxG,EAAc1E,UAASxE,EAAKwE,QAAU0E,EAAc1E,SAGpD0E,EAAcwS,aAAY1b,EAAK2b,YAAczS,EAAcwS,YAE/D1b,EAAO3B,KAAKud,GAAc5b,GAG1B0B,OAAOkM,KAAK5N,GAAM6b,QAAQ,SAAS1S,IAChB,MAAbnJ,EAAKmJ,IAA8B,KAAdnJ,EAAKmJ,IAAe7B,EAActH,EAAKmJ,YACvDnJ,GAAKmJ,KAIZ5F,EAAW2F,EAAc2G,gBAC3B7P,EAAOkJ,EAAc2G,aAAa7P,IAASA,GAIxCA,IAAQsH,EAActH,MAMzBuD,EAAW2F,EAAc8G,qBACxB9G,EAAc8G,mBAAmBhQ,IAOpC,MAAI3B,MAAK2c,SACP3c,MAAK4K,EAAU,OAAQ,uCAAwCjJ,QAIzB,gBAA7BkJ,GAAc1D,WACnB+D,KAAKuS,SAAW5S,EAAc1D,YAChCnH,KAAK0d,GAAsB/b,GAG7B3B,KAAK0d,GAAsB/b,KAI/Bgc,GAAe,SAAShc,GACtB,MAAOuI,GAASvI,EAAM3B,KAAKkG,EAAekB,eAG5CwW,GAAU,WACR,MAAOnU,MAGToU,GAAuB,SAASlc,EAAMF,GACpC,GAAI1B,GAAOC,KACP6K,EAAgB7K,KAAKkG,CAEzB,IAAKlG,KAAK4L,UAAV,CAQA,GALAjK,EAAO3B,KAAK8d,GAAYnc,IAKnB3B,KAAKkG,EAAe6X,iBAAmB/d,KAAKge,GAAcrc,GAE7D,WADA3B,MAAK4K,EAAU,OAAQ,+BAAgCjJ,EAOzD3B,MAAK6F,EAAelE,EAAKsc,WAAatc,EAAKsc,SAAWje,KAAKke,MAG3Dle,KAAK4F,EAAYjE,EAEjB3B,KAAK4K,EAAU,QAAS,uBAAwBjJ,EAEhD,IAAIwc,IACFC,eAAgB,IAChBC,cAAe,YAAcre,KAAKwK,QAClC8T,WAAYte,KAAK+F,EAGf/F,MAAK6M,IACPsR,EAAKI,cAAgBve,KAAK6M,EAG5B,IAAIsO,GAAYxZ,EAAKwZ,WAAaxZ,EAAKwZ,UAAUC,OAAO,EAItDpb,MAAKkG,EAAee,iBACpBjH,KAAKkG,EAAee,gBAAgBuE,QAEpCxL,KAAKmQ,mBACH8D,SAAU,SACVlQ,QAASoX,GACJA,EAAU7E,KAAO6E,EAAU7E,KAAO,KAAO,IAAM6E,EAAUpQ,MAC1DpJ,EAAKoC,QACTka,SAAUtc,EAAKsc,SACfpc,MAAOF,EAAKE,OAAS,SAIzB,IAAIiO,GAAM9P,KAAKgN,GACdnC,EAAcgH,WAAa7R,KAAKwe,IAAczd,KAAKf,MAClD8P,IAAKA,EACLqO,KAAMA,EACNxc,KAAMA,EACNgJ,QAASE,EACT4T,UAAW,WACT1e,EAAKyI,IAELzI,EAAKma,EAAc,WACjBvY,KAAMA,EACNkR,IAAK/C,IAEPrO,GAAYA,KAEdid,QAAS,SAAiBxb,GACxBnD,EAAK6K,EAAU,QAAS,mCAAoC1H,GAExDA,EAAMqY,SACRxb,EAAK4e,GAAiBzb,EAAMqY,SAG9Bxb,EAAKma,EAAc,WACjBvY,KAAMA,EACNkR,IAAK/C,IAEP5M,EAAQA,GAAS,GAAItC,OAAM,sDAC3Ba,GAAYA,EAASyB,QAK3B0b,GAAc,SAASC,GAErB,GAAI/O,GAAM+O,EAAK/O,IAAM,IAAMtG,EAAUqV,EAAKV,MAEtCW,EAAmB,KACnBC,IAUJ,IARIF,EAAKlU,QAAQhE,UACfmY,EAAmB9e,KAAKgf,GAAcH,EAAKlU,QAAQhE,UAGjDkY,EAAKlU,QAAQsU,kBACfF,EAA2B/e,KAAKgf,GAAcH,EAAKlU,QAAQsU,kBAGzDlV,IAAiB,CACnBgV,EAAyBhM,KAAO1N,EAAUwZ,EAAKld,KAE/C,IAAIud,GAAsB/V,KAAgBnJ,KAAKqH,GAC3C8X,EAAehW,EAAY+V,EAAqBH,EAMpD,OAJID,KACFK,EAAaxY,QAAUmY,GAGlB1Y,EACJgZ,MAAMtP,EAAKqP,GACXpH,KAAK,SAASC,GACb,GAAIA,EAASqH,GACXR,EAAKJ,WAAaI,EAAKJ,gBAClB,CACL,GAAIvb,GAAQ,GAAItC,OAAM,sBAAwBoX,EAAST,OAGvDrU,GAAMqY,QAAUvD,EAChB6G,EAAKH,SAAWG,EAAKH,QAAQxb,MAGhC,SAAS,WACR2b,EAAKH,SACHG,EAAKH,QAAQ,GAAI9d,OAAM,6CAI/B,GAAI2a,GAAUnV,EAAQ2Q,gBAAkB,GAAI3Q,GAAQ2Q,cACpD,IAAKwE,EAAL,CAGA,GAAI+D,GAAU,mBAAqB/D,IAAqC,mBAAnBgE,eAEhDD,KAED,mBAAqB/D,GACvBA,EAAQ7D,mBAAqB,WAC3B,GAA2B,IAAvB6D,EAAQjE,WAEL,GAAuB,MAAnBiE,EAAQhE,OACjBsH,EAAKJ,WAAaI,EAAKJ,gBAClB,IAAII,EAAKH,QAAS,CACvB,GAAIzI,GAAM,GAAIrV,OAAM,sBAAwB2a,EAAQhE,OACpDtB,GAAIsF,QAAUA,EACdsD,EAAKH,QAAQzI,MAIjBsF,EAAU,GAAIgE,gBAGdzP,EAAMA,EAAI0P,QAAQ,WAAY,IAG1BX,EAAKJ,YACPlD,EAAQkE,OAASZ,EAAKJ,WAEpBI,EAAKH,UACPnD,EAAQmE,QAAU,WAChB,GAAIzJ,GAAM,GAAIrV,OAAM,oCACpBqV,GAAIsF,QAAUA,EACdsD,EAAKH,QAAQzI,MAKnBsF,EAAQoE,KAAK,OAAQ7P,GAEjBgP,GACF5V,EAAK4V,EAAkB,SAAShU,EAAKC,GACnCwQ,EAAQqE,iBAAiB9U,EAAKC,KAIlCwQ,EAAQsE,KAAKxa,EAAUwZ,EAAKld,UAG9Bme,GAAe,SAASC,GACtB,GAAIC,KAEJ,KAAK,GAAIlV,KAAOiV,GACd,GAAIA,EAAKlK,eAAe/K,GAAM,CAC5B,GAAIC,GAAQgV,EAAKjV,EACjBkV,GAAUlV,GAAwB,kBAAVC,GAAuBA,IAAUA,EAI7D,MAAOiV,IAGTC,EAAW,SAASpe,GAGhB7B,KAAK8H,EAAwBjG,KAC5B7B,KAAKyK,OAASzK,KAAKkG,EAAeuE,QAGnC/F,SAASpB,UAAUqB,MAAM5D,KACvBf,KAAK8H,EAAwBjG,GAC7B7B,KAAK6H,KACFvD,MAAMvD,KAAKwD,UAAW,KAK/B2b,EAAe,SAASpV,EAAKmC,GACvB1H,EAAY0H,SACPjN,MAAKiG,EAAe6E,GAE3B9K,KAAKiG,EAAe6E,GAAO3B,EAAYnJ,KAAKiG,EAAe6E,OAAYmC,KAM7EhN,EAAMqD,UAAU6c,QAAUlgB,EAAMqD,UAAUsN,eAC1C3Q,EAAMqD,UAAU8c,kBAAoBngB,EAAMqD,UAAUgO,WAEpD7R,EAAOD,QAAUS,IAEdc,KAAKf,KAAuB,mBAAXF,QAAyBA,OAAyB,mBAATC,MAAuBA,KAAyB,mBAAXF,QAAyBA,aACxHwgB,GAAK,GAAGxc,EAAI,EAAE3B,EAAI,EAAE0C,EAAI,EAAE0b,EAAI,EAAEC,EAAI,IAAIpe,GAAG,SAASjB,EAAQzB,EAAOD,IACtE,SAAWM,GAOX,GAAI0gB,GAAmBtf,EAAQ,GAG3BkF,EACgB,mBAAXvG,QACHA,OACkB,mBAAXC,GAAyBA,EAAyB,mBAATC,MAAuBA,QACzE0gB,EAASra,EAAQnG,MAEjBA,EAAQ,GAAIugB,EAQhBvgB,GAAMygB,WAAa,WAEjB,MADAta,GAAQnG,MAAQwgB,EACTxgB,GAGTA,EAAMgS,YAENxS,EAAOD,QAAUS,EAoCjBR,EAAOD,QAAQmhB,OAASH,IAErBzf,KAAKf,KAAuB,mBAAXF,QAAyBA,OAAyB,mBAATC,MAAuBA,KAAyB,mBAAXF,QAAyBA,aACxHgF,EAAI,IAAID,GAAG,SAAS1D,EAAQzB,EAAOD,IACtC,SAAWM,GAQX,QAAS8I,GAASgY,GAChB,MAAuB,gBAATA,IAA8B,OAATA,EAKrC,QAASjY,GAAQoC,GACf,UAAWxH,SAASxC,KAAKgK,IACvB,IAAK,iBACH,OAAO,CACT,KAAK,qBACH,OAAO,CACT,KAAK,wBACH,OAAO,CACT,SACE,MAAOA,aAAiBnK,QAI9B,QAASkI,GAAaiC,GACpB,MAAO8V,MAAoD,2BAAzBtd,SAASxC,KAAKgK,GAGlD,QAASxF,GAAYqb,GACnB,MAAgB,UAATA,EAGT,QAAS1b,GAAW0b,GAClB,MAAuB,kBAATA,GAGhB,QAAS/X,GAAc+X,GACrB,MAAgD,oBAAzCvd,OAAOC,UAAUC,SAASxC,KAAK6f,GAGxC,QAAS7X,GAAS6X,GAChB,MAAgD,oBAAzCvd,OAAOC,UAAUC,SAASxC,KAAK6f,GAGxC,QAAS5X,GAAQ4X,GACf,MAAgD,mBAAzCvd,OAAOC,UAAUC,SAASxC,KAAK6f,GAGxC,QAAS3X,GAAc2X,GACrB,IAAK/X,EAAc+X,GAAO,OAAO,CAEjC,KAAK,GAAI/M,KAAK+M,GACZ,GAAIA,EAAK/K,eAAehC,GACtB,OAAO,CAGX,QAAO,EAGT,QAASgN,KACP,IAEE,MADA,IAAIC,YAAW,KACR,EACP,MAAO5gB,GACP,OAAO,GAIX,QAAS6J,KACP,KAAM,SAAW3D,IAAU,OAAO,CAElC,KAIE,MAHA,IAAI2a,SACJ,GAAIlJ,SAAQ,IACZ,GAAImJ,WACG,EACP,MAAO9gB,GACP,OAAO,GAQX,QAASuH,KACP,IAAKsC,IAAiB,OAAO,CAE7B,KAKE,MAHA,IAAI8N,SAAQ,cACVrQ,eAAgB,YAEX,EACP,MAAOtH,GACP,OAAO,GAIX,QAAS+gB,KACP,MAAwC,kBAA1BC,uBAGhB,QAASC,GAAgB1f,GACvB,QAAS+P,GAAa7P,EAAMsD,GAC1B,GAAImc,GAAiB3f,EAASE,IAASA,CACvC,OAAIsD,GACKA,EAASmc,IAAmBA,EAE9BA,EAGT,MAAO5P,GAGT,QAAStI,GAAKkH,EAAK3O,GACjB,GAAId,GAAG8W,CAEP,IAAIlS,EAAY6K,EAAIpP,QAClB,IAAKL,IAAKyP,GACJ9G,EAAO8G,EAAKzP,IACdc,EAASV,KAAK,KAAMJ,EAAGyP,EAAIzP,QAK/B,IADA8W,EAAIrH,EAAIpP,OAEN,IAAKL,EAAI,EAAGA,EAAI8W,EAAG9W,IACjBc,EAASV,KAAK,KAAMJ,EAAGyP,EAAIzP,IAMnC,QAASwI,GAAYkY,EAAMC,GACzB,MAAKA,IAGLpY,EAAKoY,EAAM,SAASxW,EAAKC,GACvBsW,EAAKvW,GAAOC,IAEPsW,GALEA,EAgBX,QAAShY,GAAa+G,GACpB,QAAK/M,OAAOke,UAGLle,OAAOke,SAASnR,GAGzB,QAAShH,GAASqQ,EAAKtO,GACrB,GAAmB,gBAARA,GACT,KAAM,IAAIvK,OAAM,yDAElB,OAAmB,gBAAR6Y,IAA4B,IAARtO,EACtBsO,EAEFA,EAAIzY,QAAUmK,EAAMsO,EAAMA,EAAI/M,OAAO,EAAGvB,GAAO,IAUxD,QAAS7B,GAAOkY,EAAQ1W,GACtB,MAAOzH,QAAOC,UAAUuS,eAAe9U,KAAKygB,EAAQ1W,GAGtD,QAASvB,GAAWkY,GAQlB,IALA,GAGEC,GAHEC,KACFhhB,EAAI,EACJihB,EAAMH,EAASzgB,OAGVL,EAAIihB,EAAKjhB,IACd+gB,EAAUD,EAAS9gB,GACfoI,EAAS2Y,GAGXC,EAAQngB,KAAKkgB,EAAQlC,QAAQ,8BAA+B,SACnDkC,GAAWA,EAAQG,QAE5BF,EAAQngB,KAAKkgB,EAAQG,OAIzB,OAAO,IAAIC,QAAOH,EAAQI,KAAK,KAAM,KAGvC,QAASvY,GAAUjJ,GACjB,GAAIyhB,KAIJ,OAHA9Y,GAAK3I,EAAG,SAASuK,EAAKC,GACpBiX,EAAMxgB,KAAK8Q,mBAAmBxH,GAAO,IAAMwH,mBAAmBvH,MAEzDiX,EAAMD,KAAK,KAMpB,QAASlY,GAASiG,GAChB,GAAmB,gBAARA,GAAkB,QAC7B,IAAImS,GAAQnS,EAAImS,MAAM,kEAGlBC,EAAQD,EAAM,IAAM,GACpBE,EAAWF,EAAM,IAAM,EAC3B,QACElN,SAAUkN,EAAM,GAChBjN,KAAMiN,EAAM,GACZzV,KAAMyV,EAAM,GACZhN,SAAUgN,EAAM,GAAKC,EAAQC,GAGjC,QAAS1Y,KACP,GAAI2Y,GAAShc,EAAQgc,QAAUhc,EAAQic,QAEvC,KAAK9c,EAAY6c,IAAWA,EAAOE,gBAAiB,CAGlD,GAAIC,GAAM,GAAIC,aAAY,EAC1BJ,GAAOE,gBAAgBC,GAGvBA,EAAI,GAAe,KAATA,EAAI,GAAc,MAE5BA,EAAI,GAAe,MAATA,EAAI,GAAe,KAE7B,IAAIE,GAAM,SAASC,GAEjB,IADA,GAAIC,GAAID,EAAInf,SAAS,IACdof,EAAE3hB,OAAS,GAChB2hB,EAAI,IAAMA,CAEZ,OAAOA,GAGT,OACEF,GAAIF,EAAI,IACRE,EAAIF,EAAI,IACRE,EAAIF,EAAI,IACRE,EAAIF,EAAI,IACRE,EAAIF,EAAI,IACRE,EAAIF,EAAI,IACRE,EAAIF,EAAI,IACRE,EAAIF,EAAI,IAIV,MAAO,mCAAmC/C,QAAQ,QAAS,SAASoD,GAClE,GAAIviB,GAAqB,GAAhB6K,KAAKuS,SAAiB,EAC7BkF,EAAU,MAANC,EAAYviB,EAAS,EAAJA,EAAW,CAClC,OAAOsiB,GAAEpf,SAAS,MAYxB,QAASmG,GAAiBmZ,GAWxB,IATA,GAOEC,GAPEC,EAAsB,EACxBC,EAAiB,GACjBC,KACAC,EAAS,EACTtB,EAAM,EACNuB,EAAY,MACZC,EAAYD,EAAUniB,OAGjB6hB,GAAQK,IAAWH,IACxBD,EAAUO,EAAoBR,KAMhB,SAAZC,GACCI,EAAS,GAAKtB,EAAMqB,EAAIjiB,OAASoiB,EAAYN,EAAQ9hB,QAAUgiB,KAKlEC,EAAIzhB,KAAKshB,GAETlB,GAAOkB,EAAQ9hB,OACf6hB,EAAOA,EAAKS,UAGd,OAAOL,GAAIhT,UAAU8R,KAAKoB,GAS5B,QAASE,GAAoBR,GAC3B,GACEU,GACAC,EACA1Y,EACA2Y,EACA9iB,EALEsiB,IAOJ,KAAKJ,IAASA,EAAKzO,QACjB,MAAO,EAST,IANA6O,EAAIzhB,KAAKqhB,EAAKzO,QAAQR,eAClBiP,EAAKvc,IACP2c,EAAIzhB,KAAK,IAAMqhB,EAAKvc,IAGtBid,EAAYV,EAAKU,UACbA,GAAaxa,EAASwa,GAExB,IADAC,EAAUD,EAAUnZ,MAAM,OACrBzJ,EAAI,EAAGA,EAAI6iB,EAAQxiB,OAAQL,IAC9BsiB,EAAIzhB,KAAK,IAAMgiB,EAAQ7iB,GAG3B,IAAI+iB,IAAiB,OAAQ,OAAQ,QAAS,MAC9C,KAAK/iB,EAAI,EAAGA,EAAI+iB,EAAc1iB,OAAQL,IACpCmK,EAAM4Y,EAAc/iB,GACpB8iB,EAAOZ,EAAKc,aAAa7Y,GACrB2Y,GACFR,EAAIzhB,KAAK,IAAMsJ,EAAM,KAAO2Y,EAAO,KAGvC,OAAOR,GAAIlB,KAAK,IAMlB,QAAS6B,GAAgBnjB,EAAGojB,GAC1B,WAAYpjB,IAAMojB,GAMpB,QAASC,GAAgBrjB,EAAGojB,GAC1B,MAAOte,GAAY9E,IAAM8E,EAAYse,GAMvC,QAASla,GAAgBwF,EAAK4U,GAC5B,OAAIH,EAAgBzU,EAAK4U,KAEzB5U,EAAMA,EAAIiM,OAAO,GACjB2I,EAAMA,EAAI3I,OAAO,GAEbjM,EAAImH,OAASyN,EAAIzN,MAAQnH,EAAIpE,QAAUgZ,EAAIhZ,SAG3C+Y,EAAgB3U,EAAIL,WAAYiV,EAAIjV,aAEjClF,EAAiBuF,EAAIL,WAAYiV,EAAIjV,cAM9C,QAASlF,GAAiBoa,EAAQC,GAChC,GAAIL,EAAgBI,EAAQC,GAAS,OAAO,CAE5C,IAAIC,GAAUF,EAAOjU,OACjBoU,EAAUF,EAAOlU,MAGrB,IAAImU,EAAQljB,SAAWmjB,EAAQnjB,OAAQ,OAAO,CAI9C,KAAK,GADDP,GAAGojB,EACEljB,EAAI,EAAGA,EAAIujB,EAAQljB,OAAQL,IAGlC,GAFAF,EAAIyjB,EAAQvjB,GACZkjB,EAAIM,EAAQxjB,GAEVF,EAAEma,WAAaiJ,EAAEjJ,UACjBna,EAAE2Z,SAAWyJ,EAAEzJ,QACf3Z,EAAEqa,QAAU+I,EAAE/I,OACdra,EAAE,cAAgBojB,EAAE,YAEpB,OAAO,CAEX,QAAO,EAUT,QAAS/Z,GAAKsG,EAAK5N,EAAM4hB,EAAaC,GACpC,GAAW,MAAPjU,EAAJ,CACA,GAAImF,GAAOnF,EAAI5N,EACf4N,GAAI5N,GAAQ4hB,EAAY7O,GACxBnF,EAAI5N,GAAMiL,GAAY,EACtB2C,EAAI5N,GAAMoL,EAAW2H,EACjB8O,GACFA,EAAM7iB,MAAM4O,EAAK5N,EAAM+S,KAU3B,QAAS/Q,GAAS8f,EAAOC,GACvB,IAAKvb,EAAQsb,GAAQ,MAAO,EAI5B,KAAK,GAFDE,MAEK7jB,EAAI,EAAGA,EAAI2jB,EAAMtjB,OAAQL,IAChC,IACE6jB,EAAOhjB,KAAKijB,OAAOH,EAAM3jB,KACzB,MAAOT,GACPskB,EAAOhjB,KAAK,gCAIhB,MAAOgjB,GAAOzC,KAAKwC,GASrB,QAASG,GAAW3Z,GAClB,QAAS4Z,UAAU5Z,GAAOX,MAAM,SAASpJ,OAG3C,QAAS4jB,GAAS7Z,GAChB,MAAO2Z,GAAWtf,KAAKC,UAAU0F,IAGnC,QAAS8Z,GAAe9Z,GACtB,GAAqB,gBAAVA,GAAoB,CAC7B,GAAI+Z,GAAY,EAChB,OAAO1b,GAAS2B,EAAO+Z,GAClB,GACY,gBAAV/Z,IACU,iBAAVA,IACU,mBAAVA,GAEP,MAAOA,EAGT,IAAIuL,GAAOjT,OAAOC,UAAUC,SAASxC,KAAKgK,EAG1C,OAAa,oBAATuL,EAAmC,WAC1B,mBAATA,EAAkC,UACzB,sBAATA,EACKvL,EAAMvI,KAAO,cAAgBuI,EAAMvI,KAAO,IAAM,aAElDuI,EAGT,QAASga,GAAgBha,EAAOia,GAC9B,MAAc,KAAVA,EAAoBH,EAAe9Z,GAEnClC,EAAckC,GACT1H,OAAOkM,KAAKxE,GAAOka,OAAO,SAASC,EAAKpa,GAE7C,MADAoa,GAAIpa,GAAOia,EAAgBha,EAAMD,GAAMka,EAAQ,GACxCE,OAEAzP,MAAMzM,QAAQ+B,GAChBA,EAAMoa,IAAI,SAASC,GACxB,MAAOL,GAAgBK,EAAKJ,EAAQ,KAIjCH,EAAe9Z,GAGxB,QAASd,GAAmB2E,EAAIoW,EAAOK,GACrC,IAAKxc,EAAc+F,GAAK,MAAOA,EAE/BoW,GAAyB,gBAAVA,GAAqBM,EAAgCN,EACpEK,EAA2B,gBAAVL,GAAqBO,EAA+BF,CAErE,IAAIG,GAAaT,EAAgBnW,EAAIoW,EAErC,OAAIJ,GAASvf,EAAUmgB,IAAeH,EAC7Bpb,EAAmB2E,EAAIoW,EAAQ,GAGjCQ,EAGT,QAASxb,GAAwBuF,EAAMuV,GACrC,GAAoB,gBAATvV,IAAqC,gBAATA,GAAmB,MAAOA,GAAKhM,UACtE,KAAKkS,MAAMzM,QAAQuG,GAAO,MAAO,EAKjC,IAHAA,EAAOA,EAAKkW,OAAO,SAAS3a,GAC1B,MAAsB,gBAARA,KAEI,IAAhByE,EAAKvO,OAAc,MAAO,sBAG9B,IADA8jB,EAAiC,gBAAdA,GAAyBY,EAA4BZ,EACpEvV,EAAK,GAAGvO,QAAU8jB,EAAW,MAAOvV,GAAK,EAE7C,KAAK,GAAIoW,GAAWpW,EAAKvO,OAAQ2kB,EAAW,EAAGA,IAAY,CACzD,GAAIH,GAAajW,EAAKjL,MAAM,EAAGqhB,GAAU5D,KAAK,KAC9C,MAAIyD,EAAWxkB,OAAS8jB,GACxB,MAAIa,KAAapW,EAAKvO,OAAewkB,EAC9BA,EAAa,IAGtB,MAAO,GAGT,QAAStb,GAASoa,EAAOld,GAcvB,QAASwe,GAAeC,GACtB,MAAI7c,GAAQ6c,GACHA,EAAYV,IAAI,SAASC,GAC9B,MAAOQ,GAAeR,KAItBvc,EAAcgd,GACTxiB,OAAOkM,KAAKsW,GAAaZ,OAAO,SAASC,EAAKY,GAMnD,MAJEZ,GAAIY,GADFC,EAAepW,KAAKmW,GACbE,EAEAJ,EAAeC,EAAYC,IAE/BZ,OAIJW,EA/BT,IAAK7c,EAAQ5B,IAAkB4B,EAAQ5B,IAAyC,IAAxBA,EAAapG,OACnE,MAAOsjB,EAET,IAEI2B,GAFAF,EAAiBxc,EAAWnC,GAC5B4e,EAAe,UAGnB,KACEC,EAAY7gB,KAAK+L,MAAM9L,EAAUif,IACjC,MAAO4B,GACP,MAAO5B,GAwBT,MAAOsB,GAAeK,GAlkBxB,GAAI5gB,GAAYnE,EAAQ,GAEpBkF,EACgB,mBAAXvG,QACHA,OACkB,mBAAXC,GAAyBA,EAAyB,mBAATC,MAAuBA,QAgczEulB,EAAgC,EAEhCC,EAA+B,MAC/BG,EAA4B,EA6HhCjmB,GAAOD,SACLoJ,SAAUA,EACVD,QAASA,EACTG,aAAcA,EACdvD,YAAaA,EACbL,WAAYA,EACZ2D,cAAeA,EACfE,SAAUA,EACVC,QAASA,EACTC,cAAeA,EACf4X,mBAAoBA,EACpB9W,cAAeA,EACftC,uBAAwBA,EACxBwZ,8BAA+BA,EAC/BE,gBAAiBA,EACjBjY,KAAMA,EACNC,YAAaA,EACbC,SAAUA,EACVC,aAAcA,EACdC,OAAQA,EACRC,WAAYA,EACZC,UAAWA,EACXC,MAAOA,EACPC,iBAAkBA,EAClB2Z,oBAAqBA,EACrB1Z,gBAAiBA,EACjBC,iBAAkBA,EAClBC,SAAUA,EACVC,KAAMA,EACNtF,SAAUA,EACVyF,mBAAoBA,EACpBD,wBAAyBA,EACzBE,SAAUA,KAGTnJ,KAAKf,KAAuB,mBAAXF,QAAyBA,OAAyB,mBAATC,MAAuBA,KAAyB,mBAAXF,QAAyBA,aACxH0gB,EAAI,IAAID,GAAG,SAASpf,EAAQzB,EAAOD,IACtC,SAAWM,GA+BX,QAASqmB,KACP,MAAwB,mBAAb7b,WAAiD,MAArBA,SAASjC,SAAyB,GAElEiC,SAASjC,SAASE,KAjC3B,GAAItE,GAAQ/C,EAAQ,GAYhBuH,GACF7B,qBAAqB,EACrB6D,OAAO,GAILrE,EACgB,mBAAXvG,QACHA,OACkB,mBAAXC,GAAyBA,EAAyB,mBAATC,MAAuBA,QAGzEqmB,KAAY9hB,MACZ+hB,EAAmB,IAGnBC,EAAiB,yGA+CrB7d,GAASoD,OAAS,WAUhB,QAASC,GAAUya,GACjBC,IACAC,EAASjlB,KAAK+kB,GAOhB,QAASG,GAAYH,GACnB,IAAK,GAAI5lB,GAAI8lB,EAASzlB,OAAS,EAAGL,GAAK,IAAKA,EACtC8lB,EAAS9lB,KAAO4lB,GAClBE,EAASE,OAAOhmB,EAAG,GAQzB,QAASimB,KACPC,IACAJ,KAOF,QAASK,GAAe9X,EAAO+X,GAC7B,GAAI5L,GAAY,IAChB,KAAI4L,GAAkBte,EAAS7B,oBAA/B,CAGA,IAAK,GAAIjG,KAAK8lB,GACZ,GAAIA,EAAS5Q,eAAelV,GAC1B,IACE8lB,EAAS9lB,GAAGgE,MAAM,MAAOqK,GAAOuK,OAAO6M,EAAOrlB,KAAKwD,UAAW,KAC9D,MAAOyiB,GACP7L,EAAY6L,EAKlB,GAAI7L,EACF,KAAMA,IAiBV,QAAS8L,GAAsBvlB,EAAKoO,EAAKoX,EAAQC,EAAOvY,GACtD,GAAII,GAAQ,KAERmM,EAAYlX,EAAM6E,aAAa8F,GAAMA,EAAG1L,MAAQ0L,EAEhD7K,EAAUE,EAAM6E,aAAapH,GAAOA,EAAIqC,QAAUrC,CAEtD,IAAI0lB,EACF3e,EAASwG,kBAAkBoY,oCACzBD,EACAtX,EACAoX,EACAnjB,GAEFujB,QACK,IAAInM,GAAalX,EAAM0E,QAAQwS,GAMpCnM,EAAQvG,EAASwG,kBAAkBkM,GACnC2L,EAAe9X,GAAO,OACjB,CACL,GAOIuY,GAPAlf,GACFyH,IAAKA,EACL+K,KAAMqM,EACNnM,OAAQoM,GAGN3kB,EAAO2K,MAGX,IAAkC,uBAA3B5J,SAASxC,KAAKgD,GAAgC,CACnD,GAAIwjB,GAASxjB,EAAQke,MAAMqE,EACvBiB,KACF/kB,EAAO+kB,EAAO,GACdxjB,EAAUwjB,EAAO,IAIrBlf,EAAS6E,KAAOmZ,EAEhBrX,GACExM,KAAMA,EACNuB,QAASA,EACT+L,IAAKqW,IACLnX,OAAQ3G,IAEVye,EAAe9X,GAAO,GAGxB,QAAIwY,GACKA,EAAmB7iB,MAAM3E,KAAMuE,WAM1C,QAASiiB,KACHiB,IAGJD,EAAqBphB,EAAQsZ,QAC7BtZ,EAAQsZ,QAAUuH,EAClBQ,GAA2B,GAG7B,QAASZ,KACFY,IAGLrhB,EAAQsZ,QAAU8H,EAClBC,GAA2B,EAC3BD,EAAqBra,QAGvB,QAASma,KACP,GAAII,GAAsBN,EACxBO,EAAYC,CACdA,GAAW,KACXR,EAAqB,KACrBtV,EAAgB,KAChBgV,EAAeniB,MAAM,MAAO+iB,GAAqB,GAAOnO,OAAOoO,IAUjE,QAAS9b,GAAO+C,EAAIiZ,GAClB,GAAIxjB,GAAO+hB,EAAOrlB,KAAKwD,UAAW,EAClC,IAAI6iB,EAAoB,CACtB,GAAItV,IAAkBlD,EACpB,MAEA0Y,KAIJ,GAAItY,GAAQvG,EAASwG,kBAAkBL,EAevC,IAdAwY,EAAqBpY,EACrB8C,EAAgBlD,EAChBgZ,EAAWvjB,EAMX6O,WAAW,WACLpB,IAAkBlD,GACpB0Y,KAEDtY,EAAM8Y,WAAa,IAAO,GAEzBD,KAAY,EACd,KAAMjZ,GA9LV,GA0DI4Y,GAAoBC,EA1DpBhB,KACFmB,EAAW,KACX9V,EAAgB,KAChBsV,EAAqB,IAkMvB,OAHAvb,GAAOC,UAAYA,EACnBD,EAAO6a,YAAcA,EACrB7a,EAAOgC,UAAY+Y,EACZ/a,KAsDTpD,EAASwG,kBAAoB,WA4C3B,QAAS8Y,GAA+BnZ,GACtC,GAAwB,mBAAbA,GAAGI,OAA0BJ,EAAGI,MAA3C,CAiBA,IAAK,GALDgZ,GACAC,EACAC,EAZAhQ,EAAS,0IACTiQ,EAAQ,wHAGRC,EAAQ,6JAERC,EAAY,gDACZC,EAAa,gCACbC,EAAQ3Z,EAAGI,MAAM5E,MAAM,MACvB4E,KAMKrO,GAFO,sBAAsBgZ,KAAK/K,EAAG7K,SAEjC,GAAG0T,EAAI8Q,EAAMvnB,OAAQL,EAAI8W,IAAK9W,EAAG,CAC5C,GAAKsnB,EAAQ/P,EAAOyB,KAAK4O,EAAM5nB,IAAM,CACnC,GAAI6nB,GAAWP,EAAM,IAAqC,IAA/BA,EAAM,GAAGhR,QAAQ,UACxCwR,EAASR,EAAM,IAAmC,IAA7BA,EAAM,GAAGhR,QAAQ,OACtCwR,KAAWT,EAAWM,EAAW3O,KAAKsO,EAAM,OAE9CA,EAAM,GAAKD,EAAS,GACpBC,EAAM,GAAKD,EAAS,GACpBC,EAAM,GAAKD,EAAS,IAEtBE,GACEpY,IAAM0Y,EAAsB,KAAXP,EAAM,GACvB/a,KAAM+a,EAAM,IAAM5B,EAClBhiB,KAAMmkB,GAAYP,EAAM,OACxBpN,KAAMoN,EAAM,IAAMA,EAAM,GAAK,KAC7BlN,OAAQkN,EAAM,IAAMA,EAAM,GAAK,UAE5B,IAAKA,EAAQE,EAAMxO,KAAK4O,EAAM5nB,IACnCunB,GACEpY,IAAKmY,EAAM,GACX/a,KAAM+a,EAAM,IAAM5B,EAClBhiB,QACAwW,MAAOoN,EAAM,GACblN,OAAQkN,EAAM,IAAMA,EAAM,GAAK,UAE5B,CAAA,KAAKA,EAAQG,EAAMzO,KAAK4O,EAAM5nB,KAsBnC,QArBA,IAAI8nB,GAASR,EAAM,IAAMA,EAAM,GAAGhR,QAAQ,aACtCwR,KAAWT,EAAWK,EAAU1O,KAAKsO,EAAM,MAE7CA,EAAM,GAAKD,EAAS,GACpBC,EAAM,GAAKD,EAAS,GACpBC,EAAM,GAAK,MACI,IAANtnB,GAAYsnB,EAAM,IAAiC,mBAApBrZ,GAAG8Z,eAK3C1Z,EAAM,GAAG+L,OAASnM,EAAG8Z,aAAe,GAEtCR,GACEpY,IAAKmY,EAAM,GACX/a,KAAM+a,EAAM,IAAM5B,EAClBhiB,KAAM4jB,EAAM,GAAKA,EAAM,GAAG7d,MAAM,QAChCyQ,KAAMoN,EAAM,IAAMA,EAAM,GAAK,KAC7BlN,OAAQkN,EAAM,IAAMA,EAAM,GAAK,OAM9BC,EAAQhb,MAAQgb,EAAQrN,OAC3BqN,EAAQhb,KAAOmZ,GAGjBrX,EAAMxN,KAAK0mB,GAGb,MAAKlZ,GAAMhO,QAKTwB,KAAMoM,EAAGpM,KACTuB,QAAS6K,EAAG7K,QACZ+L,IAAKqW,IACLnX,MAAOA,GAPA,MAwBX,QAASqY,GAAoCpN,EAAWnK,EAAKoX,EAAQnjB,GACnE,GAAI4kB,IACF7Y,IAAKA,EACL+K,KAAMqM,EAGR,IAAIyB,EAAQ7Y,KAAO6Y,EAAQ9N,KAAM,CAO/B,GANAZ,EAAU6N,YAAa,EAElBa,EAAQzb,OACXyb,EAAQzb,KAAOmZ,GAGbpM,EAAUjL,MAAMhO,OAAS,GACvBiZ,EAAUjL,MAAM,GAAGc,MAAQ6Y,EAAQ7Y,IAAK,CAC1C,GAAImK,EAAUjL,MAAM,GAAG6L,OAAS8N,EAAQ9N,KACtC,OAAO,CACF,KACJZ,EAAUjL,MAAM,GAAG6L,MACpBZ,EAAUjL,MAAM,GAAG9B,OAASyb,EAAQzb,KAGpC,MADA+M,GAAUjL,MAAM,GAAG6L,KAAO8N,EAAQ9N,MAC3B,EAOb,MAFAZ,GAAUjL,MAAM4Z,QAAQD,GACxB1O,EAAU4O,SAAU,GACb,EAKT,MAHE5O,GAAU6N,YAAa,GAGlB,EAYT,QAASgB,GAAsCla,EAAIoW,GASjD,IACE,GALAiD,GACAc,EALEC,EAAe,qEACjBha,KACAia,KACAC,GAAY,EAMRC,EAAOL,EAAsCM,OACjDD,IAASD,EACTC,EAAOA,EAAKC,OAEZ,GAAID,IAASla,GAAqBka,IAAS1gB,EAASoD,OAApD,CAkBA,GAbAkd,GACEjZ,IAAK,KACL5C,KAAMmZ,EACNxL,KAAM,KACNE,OAAQ,MAGNoO,EAAK3mB,KACPumB,EAAK7b,KAAOic,EAAK3mB,MACPylB,EAAQe,EAAarP,KAAKwP,EAAK5lB,eACzCwlB,EAAK7b,KAAO+a,EAAM,IAGK,mBAAdc,GAAK7b,KACd,IACE6b,EAAK7b,KAAO+a,EAAM3D,MAAM+E,UAAU,EAAGpB,EAAM3D,MAAMrN,QAAQ,MACzD,MAAO/W,IAGP+oB,EAAM,GAAKE,GACbD,GAAY,EAEZD,EAAM,GAAKE,IAAQ,EAGrBna,EAAMxN,KAAKunB,GAGT/D,GAGFhW,EAAM2X,OAAO,EAAG3B,EAGlB,IAAIxU,IACFhO,KAAMoM,EAAGpM,KACTuB,QAAS6K,EAAG7K,QACZ+L,IAAKqW,IACLnX,MAAOA,EAQT,OANAqY,GACE7W,EACA5B,EAAG0a,WAAa1a,EAAG2a,SACnB3a,EAAGiM,MAAQjM,EAAG4a,WACd5a,EAAG7K,SAAW6K,EAAG6a,aAEZjZ,EAQT,QAASvB,GAAkBL,EAAIoW,GAC7B,GAAIhW,GAAQ,IACZgW,GAAiB,MAATA,EAAgB,GAAKA,CAE7B,KAEE,GADAhW,EAAQ+Y,EAA+BnZ,GAErC,MAAOI,GAET,MAAO9O,GACP,GAAIuI,EAASgC,MACX,KAAMvK,GAIV,IAEE,GADA8O,EAAQ8Z,EAAsCla,EAAIoW,EAAQ,GAExD,MAAOhW,GAET,MAAO9O,GACP,GAAIuI,EAASgC,MACX,KAAMvK,GAGV,OACEsC,KAAMoM,EAAGpM,KACTuB,QAAS6K,EAAG7K,QACZ+L,IAAKqW,KAOT,MAHAlX,GAAkBoY,oCAAsCA,EACxDpY,EAAkB8Y,+BAAiCA,EAE5C9Y,KAGTxP,EAAOD,QAAUiJ,IAEd1H,KAAKf,KAAuB,mBAAXF,QAAyBA,OAAyB,mBAATC,MAAuBA,KAAyB,mBAAXF,QAAyBA,aACxH+E,EAAI,IAAI2b,GAAG,SAASrf,EAAQzB,EAAOD,GAetC,QAASyX,GAAQyS,EAAUC,GACzB,IAAK,GAAIhpB,GAAI,EAAGA,EAAI+oB,EAAS1oB,SAAUL,EACrC,GAAI+oB,EAAS/oB,KAAOgpB,EAAQ,MAAOhpB,EAErC,UAGF,QAAS0E,GAAU+K,EAAKwZ,EAAUC,EAAQC,GACxC,MAAO1kB,MAAKC,UAAU+K,EAAK2Z,EAAWH,EAAUE,GAAgBD;CAIlE,QAASG,GAAejf,GACtB,GAAIkL,IAEFjH,MAAOjE,EAAMiE,MACbjL,QAASgH,EAAMhH,QACfvB,KAAMuI,EAAMvI,KAGd,KAAK,GAAI7B,KAAKoK,GACR1H,OAAOC,UAAUuS,eAAe9U,KAAKgK,EAAOpK,KAC9CsV,EAAItV,GAAKoK,EAAMpK,GAInB,OAAOsV,GAGT,QAAS8T,GAAWH,EAAUE,GAC5B,GAAI9a,MACAO,IAWJ,OATqB,OAAjBua,IACFA,EAAgB,SAAShf,EAAKC,GAC5B,MAAIiE,GAAM,KAAOjE,EACR,eAEF,eAAiBwE,EAAKjL,MAAM,EAAG2S,EAAQjI,EAAOjE,IAAQgX,KAAK,KAAO,MAItE,SAASjX,EAAKC,GACnB,GAAIiE,EAAMhO,OAAS,EAAG,CACpB,GAAIipB,GAAUhT,EAAQjI,EAAOhP,OAC5BiqB,EAAUjb,EAAM2X,OAAOsD,EAAU,GAAKjb,EAAMxN,KAAKxB,OACjDiqB,EAAU1a,EAAKoX,OAAOsD,EAASC,EAAAA,EAAUpf,GAAOyE,EAAK/N,KAAKsJ,IAEtDmM,EAAQjI,EAAOjE,KAClBA,EAAQ+e,EAAc/oB,KAAKf,KAAM8K,EAAKC,QAGxCiE,GAAMxN,KAAKuJ,EAGb,OAAmB,OAAZ6e,EACH7e,YAAiBnK,OAAQopB,EAAejf,GAASA,EACjD6e,EAAS7oB,KAAKf,KAAM8K,EAAKC,IA5DjCvL,EAAUC,EAAOD,QAAU6F,EAC3B7F,EAAQ2qB,aAAeJ,OA+DjB1J,IAAI,SAASnf,EAAQzB,EAAOD,GAwBlC,QAAS4qB,GAAQC,EAAGlO,GAClB,GAAImO,IAAW,MAAJD,IAAmB,MAAJlO,GACtBoO,GAAOF,GAAK,KAAOlO,GAAK,KAAOmO,GAAO,GAC1C,OAAQC,IAAO,GAAa,MAAND,EAMxB,QAASE,GAAc9H,EAAK+H,GAC1B,MAAQ/H,IAAO+H,EAAQ/H,IAAS,GAAK+H,EAMvC,QAASC,GAAOC,EAAGlqB,EAAGojB,EAAGwG,EAAG/pB,EAAGH,GAC7B,MAAOiqB,GAAQI,EAAcJ,EAAQA,EAAQ3pB,EAAGkqB,GAAIP,EAAQC,EAAGlqB,IAAKG,GAAIujB,GAE1E,QAAS+G,GAAMnqB,EAAGojB,EAAGjB,EAAGiI,EAAGR,EAAG/pB,EAAGH,GAC/B,MAAOuqB,GAAQ7G,EAAIjB,GAAOiB,EAAIgH,EAAIpqB,EAAGojB,EAAGwG,EAAG/pB,EAAGH,GAEhD,QAAS2qB,GAAMrqB,EAAGojB,EAAGjB,EAAGiI,EAAGR,EAAG/pB,EAAGH,GAC/B,MAAOuqB,GAAQ7G,EAAIgH,EAAMjI,GAAKiI,EAAIpqB,EAAGojB,EAAGwG,EAAG/pB,EAAGH,GAEhD,QAAS4qB,GAAMtqB,EAAGojB,EAAGjB,EAAGiI,EAAGR,EAAG/pB,EAAGH,GAC/B,MAAOuqB,GAAO7G,EAAIjB,EAAIiI,EAAGpqB,EAAGojB,EAAGwG,EAAG/pB,EAAGH,GAEvC,QAAS6qB,GAAMvqB,EAAGojB,EAAGjB,EAAGiI,EAAGR,EAAG/pB,EAAGH,GAC/B,MAAOuqB,GAAO9H,GAAKiB,GAAKgH,GAAIpqB,EAAGojB,EAAGwG,EAAG/pB,EAAGH,GAM1C,QAAS8qB,GAAQZ,EAAGzI,GAElByI,EAAEzI,GAAO,IAAM,KAASA,EAAM,GAC9ByI,GAAKzI,EAAM,KAAQ,GAAM,GAAK,IAAMA,CAEpC,IAAIjhB,GACAuqB,EACAC,EACAC,EACAC,EACA5qB,EAAI,WACJojB,aACAjB,cACAiI,EAAI,SAER,KAAKlqB,EAAI,EAAGA,EAAI0pB,EAAErpB,OAAQL,GAAK,GAC7BuqB,EAAOzqB,EACP0qB,EAAOtH,EACPuH,EAAOxI,EACPyI,EAAOR,EAEPpqB,EAAImqB,EAAMnqB,EAAGojB,EAAGjB,EAAGiI,EAAGR,EAAE1pB,GAAI,cAC5BkqB,EAAID,EAAMC,EAAGpqB,EAAGojB,EAAGjB,EAAGyH,EAAE1pB,EAAI,GAAI,eAChCiiB,EAAIgI,EAAMhI,EAAGiI,EAAGpqB,EAAGojB,EAAGwG,EAAE1pB,EAAI,GAAI,GAAI,WACpCkjB,EAAI+G,EAAM/G,EAAGjB,EAAGiI,EAAGpqB,EAAG4pB,EAAE1pB,EAAI,GAAI,gBAChCF,EAAImqB,EAAMnqB,EAAGojB,EAAGjB,EAAGiI,EAAGR,EAAE1pB,EAAI,GAAI,cAChCkqB,EAAID,EAAMC,EAAGpqB,EAAGojB,EAAGjB,EAAGyH,EAAE1pB,EAAI,GAAI,GAAI,YACpCiiB,EAAIgI,EAAMhI,EAAGiI,EAAGpqB,EAAGojB,EAAGwG,EAAE1pB,EAAI,GAAI,gBAChCkjB,EAAI+G,EAAM/G,EAAGjB,EAAGiI,EAAGpqB,EAAG4pB,EAAE1pB,EAAI,GAAI,cAChCF,EAAImqB,EAAMnqB,EAAGojB,EAAGjB,EAAGiI,EAAGR,EAAE1pB,EAAI,GAAI,EAAG,YACnCkqB,EAAID,EAAMC,EAAGpqB,EAAGojB,EAAGjB,EAAGyH,EAAE1pB,EAAI,GAAI,gBAChCiiB,EAAIgI,EAAMhI,EAAGiI,EAAGpqB,EAAGojB,EAAGwG,EAAE1pB,EAAI,IAAK,WACjCkjB,EAAI+G,EAAM/G,EAAGjB,EAAGiI,EAAGpqB,EAAG4pB,EAAE1pB,EAAI,IAAK,gBACjCF,EAAImqB,EAAMnqB,EAAGojB,EAAGjB,EAAGiI,EAAGR,EAAE1pB,EAAI,IAAK,EAAG,YACpCkqB,EAAID,EAAMC,EAAGpqB,EAAGojB,EAAGjB,EAAGyH,EAAE1pB,EAAI,IAAK,cACjCiiB,EAAIgI,EAAMhI,EAAGiI,EAAGpqB,EAAGojB,EAAGwG,EAAE1pB,EAAI,IAAK,gBACjCkjB,EAAI+G,EAAM/G,EAAGjB,EAAGiI,EAAGpqB,EAAG4pB,EAAE1pB,EAAI,IAAK,GAAI,YAErCF,EAAIqqB,EAAMrqB,EAAGojB,EAAGjB,EAAGiI,EAAGR,EAAE1pB,EAAI,GAAI,cAChCkqB,EAAIC,EAAMD,EAAGpqB,EAAGojB,EAAGjB,EAAGyH,EAAE1pB,EAAI,GAAI,eAChCiiB,EAAIkI,EAAMlI,EAAGiI,EAAGpqB,EAAGojB,EAAGwG,EAAE1pB,EAAI,IAAK,GAAI,WACrCkjB,EAAIiH,EAAMjH,EAAGjB,EAAGiI,EAAGpqB,EAAG4pB,EAAE1pB,GAAI,eAC5BF,EAAIqqB,EAAMrqB,EAAGojB,EAAGjB,EAAGiI,EAAGR,EAAE1pB,EAAI,GAAI,cAChCkqB,EAAIC,EAAMD,EAAGpqB,EAAGojB,EAAGjB,EAAGyH,EAAE1pB,EAAI,IAAK,EAAG,UACpCiiB,EAAIkI,EAAMlI,EAAGiI,EAAGpqB,EAAGojB,EAAGwG,EAAE1pB,EAAI,IAAK,eACjCkjB,EAAIiH,EAAMjH,EAAGjB,EAAGiI,EAAGpqB,EAAG4pB,EAAE1pB,EAAI,GAAI,eAChCF,EAAIqqB,EAAMrqB,EAAGojB,EAAGjB,EAAGiI,EAAGR,EAAE1pB,EAAI,GAAI,EAAG,WACnCkqB,EAAIC,EAAMD,EAAGpqB,EAAGojB,EAAGjB,EAAGyH,EAAE1pB,EAAI,IAAK,eACjCiiB,EAAIkI,EAAMlI,EAAGiI,EAAGpqB,EAAGojB,EAAGwG,EAAE1pB,EAAI,GAAI,eAChCkjB,EAAIiH,EAAMjH,EAAGjB,EAAGiI,EAAGpqB,EAAG4pB,EAAE1pB,EAAI,GAAI,GAAI,YACpCF,EAAIqqB,EAAMrqB,EAAGojB,EAAGjB,EAAGiI,EAAGR,EAAE1pB,EAAI,IAAK,eACjCkqB,EAAIC,EAAMD,EAAGpqB,EAAGojB,EAAGjB,EAAGyH,EAAE1pB,EAAI,GAAI,aAChCiiB,EAAIkI,EAAMlI,EAAGiI,EAAGpqB,EAAGojB,EAAGwG,EAAE1pB,EAAI,GAAI,GAAI,YACpCkjB,EAAIiH,EAAMjH,EAAGjB,EAAGiI,EAAGpqB,EAAG4pB,EAAE1pB,EAAI,IAAK,gBAEjCF,EAAIsqB,EAAMtqB,EAAGojB,EAAGjB,EAAGiI,EAAGR,EAAE1pB,EAAI,GAAI,WAChCkqB,EAAIE,EAAMF,EAAGpqB,EAAGojB,EAAGjB,EAAGyH,EAAE1pB,EAAI,GAAI,gBAChCiiB,EAAImI,EAAMnI,EAAGiI,EAAGpqB,EAAGojB,EAAGwG,EAAE1pB,EAAI,IAAK,GAAI,YACrCkjB,EAAIkH,EAAMlH,EAAGjB,EAAGiI,EAAGpqB,EAAG4pB,EAAE1pB,EAAI,IAAK,cACjCF,EAAIsqB,EAAMtqB,EAAGojB,EAAGjB,EAAGiI,EAAGR,EAAE1pB,EAAI,GAAI,eAChCkqB,EAAIE,EAAMF,EAAGpqB,EAAGojB,EAAGjB,EAAGyH,EAAE1pB,EAAI,GAAI,GAAI,YACpCiiB,EAAImI,EAAMnI,EAAGiI,EAAGpqB,EAAGojB,EAAGwG,EAAE1pB,EAAI,GAAI,eAChCkjB,EAAIkH,EAAMlH,EAAGjB,EAAGiI,EAAGpqB,EAAG4pB,EAAE1pB,EAAI,IAAK,gBACjCF,EAAIsqB,EAAMtqB,EAAGojB,EAAGjB,EAAGiI,EAAGR,EAAE1pB,EAAI,IAAK,EAAG,WACpCkqB,EAAIE,EAAMF,EAAGpqB,EAAGojB,EAAGjB,EAAGyH,EAAE1pB,GAAI,eAC5BiiB,EAAImI,EAAMnI,EAAGiI,EAAGpqB,EAAGojB,EAAGwG,EAAE1pB,EAAI,GAAI,eAChCkjB,EAAIkH,EAAMlH,EAAGjB,EAAGiI,EAAGpqB,EAAG4pB,EAAE1pB,EAAI,GAAI,GAAI,UACpCF,EAAIsqB,EAAMtqB,EAAGojB,EAAGjB,EAAGiI,EAAGR,EAAE1pB,EAAI,GAAI,cAChCkqB,EAAIE,EAAMF,EAAGpqB,EAAGojB,EAAGjB,EAAGyH,EAAE1pB,EAAI,IAAK,eACjCiiB,EAAImI,EAAMnI,EAAGiI,EAAGpqB,EAAGojB,EAAGwG,EAAE1pB,EAAI,IAAK,GAAI,WACrCkjB,EAAIkH,EAAMlH,EAAGjB,EAAGiI,EAAGpqB,EAAG4pB,EAAE1pB,EAAI,GAAI,eAEhCF,EAAIuqB,EAAMvqB,EAAGojB,EAAGjB,EAAGiI,EAAGR,EAAE1pB,GAAI,cAC5BkqB,EAAIG,EAAMH,EAAGpqB,EAAGojB,EAAGjB,EAAGyH,EAAE1pB,EAAI,GAAI,GAAI,YACpCiiB,EAAIoI,EAAMpI,EAAGiI,EAAGpqB,EAAGojB,EAAGwG,EAAE1pB,EAAI,IAAK,gBACjCkjB,EAAImH,EAAMnH,EAAGjB,EAAGiI,EAAGpqB,EAAG4pB,EAAE1pB,EAAI,GAAI,cAChCF,EAAIuqB,EAAMvqB,EAAGojB,EAAGjB,EAAGiI,EAAGR,EAAE1pB,EAAI,IAAK,EAAG,YACpCkqB,EAAIG,EAAMH,EAAGpqB,EAAGojB,EAAGjB,EAAGyH,EAAE1pB,EAAI,GAAI,gBAChCiiB,EAAIoI,EAAMpI,EAAGiI,EAAGpqB,EAAGojB,EAAGwG,EAAE1pB,EAAI,IAAK,aACjCkjB,EAAImH,EAAMnH,EAAGjB,EAAGiI,EAAGpqB,EAAG4pB,EAAE1pB,EAAI,GAAI,gBAChCF,EAAIuqB,EAAMvqB,EAAGojB,EAAGjB,EAAGiI,EAAGR,EAAE1pB,EAAI,GAAI,EAAG,YACnCkqB,EAAIG,EAAMH,EAAGpqB,EAAGojB,EAAGjB,EAAGyH,EAAE1pB,EAAI,IAAK,cACjCiiB,EAAIoI,EAAMpI,EAAGiI,EAAGpqB,EAAGojB,EAAGwG,EAAE1pB,EAAI,GAAI,gBAChCkjB,EAAImH,EAAMnH,EAAGjB,EAAGiI,EAAGpqB,EAAG4pB,EAAE1pB,EAAI,IAAK,GAAI,YACrCF,EAAIuqB,EAAMvqB,EAAGojB,EAAGjB,EAAGiI,EAAGR,EAAE1pB,EAAI,GAAI,cAChCkqB,EAAIG,EAAMH,EAAGpqB,EAAGojB,EAAGjB,EAAGyH,EAAE1pB,EAAI,IAAK,gBACjCiiB,EAAIoI,EAAMpI,EAAGiI,EAAGpqB,EAAGojB,EAAGwG,EAAE1pB,EAAI,GAAI,GAAI,WACpCkjB,EAAImH,EAAMnH,EAAGjB,EAAGiI,EAAGpqB,EAAG4pB,EAAE1pB,EAAI,GAAI,eAEhCF,EAAI2pB,EAAQ3pB,EAAGyqB,GACfrH,EAAIuG,EAAQvG,EAAGsH,GACfvI,EAAIwH,EAAQxH,EAAGwI,GACfP,EAAIT,EAAQS,EAAGQ,EAEjB,QAAQ5qB,EAAGojB,EAAGjB,EAAGiI,GAMnB,QAASS,GAAUhH,GACjB,GAAI3jB,GACA6jB,EAAS,GACT+G,EAA0B,GAAfjH,EAAMtjB,MACrB,KAAKL,EAAI,EAAGA,EAAI4qB,EAAU5qB,GAAK,EAC7B6jB,GAAUC,OAAO+G,aAAclH,EAAM3jB,GAAK,KAAQA,EAAI,GAAO,IAE/D,OAAO6jB,GAOT,QAASiH,GAAUnH,GACjB,GAAI3jB,GACA6jB,IAEJ,KADAA,GAAQF,EAAMtjB,QAAU,GAAK,GAAKmM,OAC7BxM,EAAI,EAAGA,EAAI6jB,EAAOxjB,OAAQL,GAAK,EAClC6jB,EAAO7jB,GAAK,CAEd,IAAI+qB,GAAyB,EAAfpH,EAAMtjB,MACpB,KAAKL,EAAI,EAAGA,EAAI+qB,EAAS/qB,GAAK,EAC5B6jB,EAAO7jB,GAAK,KAAiC,IAA1B2jB,EAAMqH,WAAWhrB,EAAI,KAAeA,EAAI,EAE7D,OAAO6jB,GAMT,QAASoH,GAAQtrB,GACf,MAAOgrB,GAAUL,EAAQQ,EAAUnrB,GAAe,EAAXA,EAAEU,SAM3C,QAAS6qB,GAAY/gB,EAAKnJ,GACxB,GAAIhB,GAIAof,EAHA+L,EAAOL,EAAU3gB,GACjBihB,KACAC,IAMJ,KAJAD,EAAK,IAAMC,EAAK,IAAM7e,OAClB2e,EAAK9qB,OAAS,KAChB8qB,EAAOb,EAAQa,EAAmB,EAAbhhB,EAAI9J,SAEtBL,EAAI,EAAGA,EAAI,GAAIA,GAAK,EACvBorB,EAAKprB,GAAe,UAAVmrB,EAAKnrB,GACfqrB,EAAKrrB,GAAe,WAAVmrB,EAAKnrB,EAGjB,OADAof,GAAOkL,EAAQc,EAAKxS,OAAOkS,EAAU9pB,IAAQ,IAAoB,EAAdA,EAAKX,QACjDsqB,EAAUL,EAAQe,EAAKzS,OAAOwG,GAAO,MAM9C,QAASkM,GAAS3H,GAChB,GAEI+F,GACA1pB,EAHAurB,EAAS,mBACT1H,EAAS,EAGb,KAAK7jB,EAAI,EAAGA,EAAI2jB,EAAMtjB,OAAQL,GAAK,EACjC0pB,EAAI/F,EAAMqH,WAAWhrB,GACrB6jB,GAAU0H,EAAOC,OAAQ9B,IAAM,EAAK,IAAQ6B,EAAOC,OAAW,GAAJ9B,EAE5D,OAAO7F,GAMT,QAAS4H,GAAa9H,GACpB,MAAO+H,UAAS/Z,mBAAmBgS,IAMrC,QAASgI,GAAOhsB,GACd,MAAOsrB,GAAQQ,EAAa9rB,IAE9B,QAASisB,GAAOjsB,GACd,MAAO2rB,GAASK,EAAOhsB,IAEzB,QAASksB,GAAW1G,EAAG+E,GACrB,MAAOgB,GAAYO,EAAatG,GAAIsG,EAAavB,IAEnD,QAAS4B,GAAW3G,EAAG+E,GACrB,MAAOoB,GAASO,EAAW1G,EAAG+E,IAGhC,QAASniB,GAAIgkB,EAAQ5hB,EAAK6hB,GACxB,MAAK7hB,GAMA6hB,EAGEH,EAAW1hB,EAAK4hB,GAFdD,EAAW3hB,EAAK4hB,GANlBC,EAGEL,EAAOI,GAFLH,EAAOG,GAUpBjtB,EAAOD,QAAUkJ,YAEN,EAAE,EAAE,IAAI","file":"raven.min.js"} \ No newline at end of file +{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","consolePlugin","console","pluginOptions","logLevels","levels","push","callback","msg","data","captureMessage","level","pop","wrapConsoleMethod","wrapMethod","addPlugin","4","6","2","formatComponentName","vm","$root","name","_isVue","$options","_componentTag","__file","vuePlugin","Vue","config","_oldOnError","errorHandler","error","info","metaData","Object","prototype","toString","componentName","propsData","lifecycleHook","captureException","extra","3","RavenConfigError","message","constructor","utils","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","safeJoin","logger","Function","apply","7","5","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","sanitizeKeys","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isErrorEvent","isDOMError","isDOMException","isError","isObject","isPlainObject","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","sanitize","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","dsn","options","_logDebug","globalOptions","key","value","setDSN","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","substr","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","context","func","undefined","wrap","_before","wrapped","deep","_ignoreNextOnError","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","T","event","reason","unhandledPromiseRejection","B","_promiseRejectionHandler","bind","addEventListener","P","removeEventListener","ex","trimHeadFrames","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","U","currentOptions","exKeys","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","setDataCallback","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","L","setTimeout","$","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","_","evtName","_keypressTimeout","target","category","ba","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","ca","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","C","_originalFunctionToString","Q","D","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","type","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","E","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","R","builtin","S","F","installer","concat","G","str","m","exec","allowSecretKey","J","port","A","V","stackInfo","_triggerEvent","_processException","lineno","X","frame","_normalizeFrame","in_app","ga","stackInfoUrl","normalized","filename","line","colno","column","function","fa","prefixedMessage","exception","values","culprit","ha","request","Referer","breadcrumbs","_trimBreadcrumbs","ia","urlProp","urlProps","ja","httpData","userAgent","User-Agent","referrer","y","_backoffDuration","_backoffStart","ma","na","current","last","oa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Y","baseData","project","platform","_getHttpData","serverName","server_name","_sanitizeData","forEach","random","_sendProcessedPayload","pa","ra","qa","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","sa","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","onerror","open","setRequestHeader","send","ta","hash","evaluated","z","Z","setUser","setReleaseContext","10","8","9","RavenConstructor","_Raven","noConflict","Client","what","supportsErrorEvent","ErrorEvent","supportsDOMError","DOMError","supportsDOMException","DOMException","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","wrappedCallback","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","sanitizeMask","safeInput","o_O","getLocationHref","getLocationOrigin","origin","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","responseText","sourceMaps","sourceMapAddress","charAt","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","string","raw"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file diff --git a/dist/console/raven.js b/dist/console/raven.js index 5773d285b460..c1bd3294c35f 100644 --- a/dist/console/raven.js +++ b/dist/console/raven.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.24.2 (540f32b) | github.com/getsentry/raven-js */ +/*! Raven.js 3.25.0 (80dffad) | github.com/getsentry/raven-js */ /* * Includes TraceKit @@ -109,10 +109,12 @@ var md5 = _dereq_(9); var RavenConfigError = _dereq_(2); var utils = _dereq_(6); +var isErrorEvent = utils.isErrorEvent; +var isDOMError = utils.isDOMError; +var isDOMException = utils.isDOMException; var isError = utils.isError; var isObject = utils.isObject; var isPlainObject = utils.isPlainObject; -var isErrorEvent = utils.isErrorEvent; var isUndefined = utils.isUndefined; var isFunction = utils.isFunction; var isString = utils.isString; @@ -240,7 +242,7 @@ Raven.prototype = { // webpack (using a build step causes webpack #1617). Grunt verifies that // this value matches package.json during build. // See: https://github.com/getsentry/raven-js/issues/465 - VERSION: '3.24.2', + VERSION: '3.25.0', debug: false, @@ -572,6 +574,23 @@ Raven.prototype = { if (isErrorEvent(ex) && ex.error) { // If it is an ErrorEvent with `error` property, extract it to get actual Error ex = ex.error; + } else if (isDOMError(ex) || isDOMException(ex)) { + // If it is a DOMError or DOMException (which are legacy APIs, but still supported in some browsers) + // then we just extract the name and message, as they don't provide anything else + // https://developer.mozilla.org/en-US/docs/Web/API/DOMError + // https://developer.mozilla.org/en-US/docs/Web/API/DOMException + var name = ex.name || (isDOMError(ex) ? 'DOMError' : 'DOMException'); + var message = ex.message ? name + ': ' + ex.message : name; + + return this.captureMessage( + message, + objectMerge(options, { + // neither DOMError or DOMException provide stack trace and we most likely wont get it this way as well + // but it's barely any overhead so we may at least try + stacktrace: true, + trimHeadFrames: options.trimHeadFrames + 1 + }) + ); } else if (isError(ex)) { // we have a real Error object ex = ex; @@ -583,6 +602,7 @@ Raven.prototype = { ex = new Error(options.message); } else { // If none of previous checks were valid, then it means that + // it's not a DOMError/DOMException // it's not a plain Object // it's not a valid ErrorEvent (one with an error property) // it's not an Error @@ -2355,7 +2375,7 @@ function isObject(what) { // Yanked from https://git.io/vS8DV re-used under CC0 // with some tiny modifications function isError(value) { - switch ({}.toString.call(value)) { + switch (Object.prototype.toString.call(value)) { case '[object Error]': return true; case '[object Exception]': @@ -2368,7 +2388,15 @@ function isError(value) { } function isErrorEvent(value) { - return supportsErrorEvent() && {}.toString.call(value) === '[object ErrorEvent]'; + return Object.prototype.toString.call(value) === '[object ErrorEvent]'; +} + +function isDOMError(value) { + return Object.prototype.toString.call(value) === '[object DOMError]'; +} + +function isDOMException(value) { + return Object.prototype.toString.call(value) === '[object DOMException]'; } function isUndefined(what) { @@ -2411,6 +2439,24 @@ function supportsErrorEvent() { } } +function supportsDOMError() { + try { + new DOMError(''); // eslint-disable-line no-new + return true; + } catch (e) { + return false; + } +} + +function supportsDOMException() { + try { + new DOMException(''); // eslint-disable-line no-new + return true; + } catch (e) { + return false; + } +} + function supportsFetch() { if (!('fetch' in _window)) return false; @@ -2926,6 +2972,8 @@ module.exports = { isObject: isObject, isError: isError, isErrorEvent: isErrorEvent, + isDOMError: isDOMError, + isDOMException: isDOMException, isUndefined: isUndefined, isFunction: isFunction, isPlainObject: isPlainObject, @@ -2933,6 +2981,8 @@ module.exports = { isArray: isArray, isEmptyObject: isEmptyObject, supportsErrorEvent: supportsErrorEvent, + supportsDOMError: supportsDOMError, + supportsDOMException: supportsDOMException, supportsFetch: supportsFetch, supportsReferrerPolicy: supportsReferrerPolicy, supportsPromiseRejectionEvent: supportsPromiseRejectionEvent, @@ -2992,10 +3042,14 @@ var ERROR_TYPES_RE = /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Ran function getLocationHref() { if (typeof document === 'undefined' || document.location == null) return ''; - return document.location.href; } +function getLocationOrigin() { + if (typeof document === 'undefined' || document.location == null) return ''; + return document.location.origin; +} + /** * TraceKit.report: cross-browser processing of unhandled exceptions * @@ -3403,6 +3457,44 @@ TraceKit.computeStackTrace = (function computeStackTraceWrapper() { element.func = UNKNOWN_FUNCTION; } + if (element.url && element.url.substr(0, 5) === 'blob:') { + // Special case for handling JavaScript loaded into a blob. + // We use a synchronous AJAX request here as a blob is already in + // memory - it's not making a network request. This will generate a warning + // in the browser console, but there has already been an error so that's not + // that much of an issue. + var xhr = new XMLHttpRequest(); + xhr.open('GET', element.url, false); + xhr.send(null); + + // If we failed to download the source, skip this patch + if (xhr.status === 200) { + var source = xhr.responseText || ''; + + // We trim the source down to the last 300 characters as sourceMappingURL is always at the end of the file. + // Why 300? To be in line with: https://github.com/getsentry/sentry/blob/4af29e8f2350e20c28a6933354e4f42437b4ba42/src/sentry/lang/javascript/processor.py#L164-L175 + source = source.slice(-300); + + // Now we dig out the source map URL + var sourceMaps = source.match(/\/\/# sourceMappingURL=(.*)$/); + + // If we don't find a source map comment or we find more than one, continue on to the next element. + if (sourceMaps) { + var sourceMapAddress = sourceMaps[1]; + + // Now we check to see if it's a relative URL. + // If it is, convert it to an absolute one. + if (sourceMapAddress.charAt(0) === '~') { + sourceMapAddress = getLocationOrigin() + sourceMapAddress.slice(1); + } + + // Now we strip the '.map' off of the end of the URL and update the + // element so that Sentry can match the map to the blob. + element.url = sourceMapAddress.slice(0, -4); + } + } + } + stack.push(element); } diff --git a/dist/console/raven.min.js b/dist/console/raven.min.js index ce33625974c1..b55d8aed05c4 100644 --- a/dist/console/raven.min.js +++ b/dist/console/raven.min.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.24.2 (540f32b) | github.com/getsentry/raven-js */ -!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.Raven=a()}}(function(){return function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};b[g][0].call(k.exports,function(a){var c=b[g][1][a];return e(c?c:a)},k,k.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;gthis.k.maxBreadcrumbs&&this.u.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.r.push([a,b]),this.n&&this.F(),this},setUserContext:function(a){return this.j.user=a,this},setExtraContext:function(a){return this.Z("extra",a),this},setTagsContext:function(a){return this.Z("tags",a),this},clearContext:function(){return this.j={},this},getContext:function(){return JSON.parse(h(this.j))},setEnvironment:function(a){return this.k.environment=a,this},setRelease:function(a){return this.k.release=a,this},setDataCallback:function(a){var b=this.k.dataCallback;return this.k.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.k.breadcrumbCallback;return this.k.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.k.shouldSendCallback;return this.k.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.k.transport=a,this},lastException:function(){return this.d},lastEventId:function(){return this.f},isSetup:function(){return!!this.a&&(!!this.g||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.z("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=P.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(Q){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.H;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.j.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.J(this.G(c)),h=Q.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(Q.head||Q.body).appendChild(h)}},L:function(){var a=this;this.m+=1,setTimeout(function(){a.m-=1})},$:function(a,b){var c,d;if(this.b){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),Q.createEvent?(c=Q.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=Q.createEventObject(),c.eventType=a);for(d in b)y(b,d)&&(c[d]=b[d]);if(Q.createEvent)Q.dispatchEvent(c);else try{Q.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},_:function(a){var b=this;return function(c){if(b.aa=null,b.v!==c){b.v=c;var d;try{d=C(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ba:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.aa;g||a._("input")(c),clearTimeout(g),a.aa=setTimeout(function(){a.aa=null},b)}}},ca:function(a,b){var c=F(this.w.href),d=F(b),e=F(a);this.x=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},C:function(){var a=this;a.da=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.M?a.da.apply(this.O,arguments):a.da.apply(this,arguments)}},Q:function(){this.da&&(Function.prototype.toString=this.da)},D:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.ca(b.x,c+""),a.apply(this,arguments)}};G(history,"pushState",j,d),G(history,"replaceState",j,d)}if(c.console&&"console"in P&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};u(["debug","info","warn","error","log"],function(a,b){M(console,b,k)})}},R:function(){for(var a;this.t.length;){a=this.t.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},S:function(){for(var a in this.q)this.p[a]=this.q[a]},F:function(){var a=this;u(this.r,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},G:function(a){var b=O.exec(a),c={},d=7;try{for(;d--;)c[N[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.k.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},J:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},A:function(){this.m||this.V.apply(this,arguments)},V:function(a,b){var c=this.X(a,b);this.$("handle",{stackInfo:a,options:b}),this.fa(a.name,a.message,a.url,a.lineno,c,b)},X:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(u(a.stack,function(b,e){var f=c.ga(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.u,0)}),this.j.user&&(a.user=this.j.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),a=this.pa(a),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||t(a[b]))&&delete a[b]}),q(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!t(a)&&(!q(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.ma()?void this.z("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function B(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&j(b))for(c=b.split(/\s+/),f=0;fc?M(a,b-1):d}function N(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?T:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function O(a,b){function c(a){return k(a)?a.map(function(a){return c(a)}):i(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!k(b)||k(b)&&0===b.length)return a;var d,e=w(b),f="********";try{d=JSON.parse(P(a))}catch(g){return a}return c(d)}var P=a(8),Q="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},R=3,S=51200,T=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isUndefined:g,isFunction:h,isPlainObject:i,isString:j,isArray:k,isEmptyObject:l,supportsErrorEvent:m,supportsFetch:n,supportsReferrerPolicy:o,supportsPromiseRejectionEvent:p,wrappedCallback:q,each:r,objectMerge:s,truncate:u,objectFrozen:t,hasKey:v,joinRegExp:w,urlencode:x,uuid4:z,htmlTreeAsString:A,htmlElementAsString:B,isSameException:E,isSameStacktrace:F,parseUrl:y,fill:G,safeJoin:H,serializeException:M,serializeKeysForMessage:N,sanitize:O}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{8:8}],7:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}var e=a(6),f={collectWindowErrors:!0,debug:!1},g="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},h=[].slice,i="?",j=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;f.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function k(a,b){var c=null;if(!b||f.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(h.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,g,h){var l=null,m=e.isErrorEvent(h)?h.error:h,n=e.isErrorEvent(a)?a.message:a;if(v)f.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&e.isError(m))l=f.computeStackTrace(m),k(l,!0);else{var p,r={url:b,line:c,column:g},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(j);p&&(s=p[1],n=p[2])}r.func=i,l={name:s,message:n,url:d(),stack:[r]},k(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=g.onerror,g.onerror=l,r=!0)}function n(){r&&(g.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,k.apply(null,[a,!1].concat(b))}function p(a,b){var c=h.call(arguments,1);if(v){if(u===a)return;o()}var d=f.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),f.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,e,f=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,g=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,h=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,j=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,k=/\((\S*)(?::(\d+))(?::(\d+))\)/,l=a.stack.split("\n"),m=[],n=(/^(.*) is undefined$/.exec(a.message),0),o=l.length;n eval")>-1;q&&(b=j.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==n||c[5]||"undefined"==typeof a.columnNumber||(m[0].column=a.columnNumber+1),e={url:c[3],func:c[1]||i,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}!e.func&&e.line&&(e.func=i),m.push(e)}return m.length?{name:a.name,message:a.message,url:d(),stack:m}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=i),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,g){for(var h,j,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==e&&o!==f.report){if(j={url:null,func:i,line:null,column:null},o.name?j.func=o.name:(h=k.exec(o.toString()))&&(j.func=h[1]),"undefined"==typeof j.func)try{j.func=h.input.substring(0,h.input.indexOf("{"))}catch(p){}m[""+o]?n=!0:m[""+o]=!0,l.push(j)}g&&l.splice(0,g);var q={name:a.name,message:a.message,url:d(),stack:l};return b(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),q}function e(b,e){var g=null;e=null==e?0:+e;try{if(g=a(b))return g}catch(h){if(f.debug)throw h}try{if(g=c(b,e+1))return g}catch(h){if(f.debug)throw h}return{name:b.name,message:b.message,url:d()}}return e.augmentStackTraceWithInitialElement=b,e.computeStackTraceFromStackProp=a,e}(),b.exports=f}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{6:6}],8:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}],9:[function(a,b,c){function d(a,b){var c=(65535&a)+(65535&b),d=(a>>16)+(b>>16)+(c>>16); -return d<<16|65535&c}function e(a,b){return a<>>32-b}function f(a,b,c,f,g,h){return d(e(d(d(b,a),d(f,h)),g),c)}function g(a,b,c,d,e,g,h){return f(b&c|~b&d,a,b,e,g,h)}function h(a,b,c,d,e,g,h){return f(b&d|c&~d,a,b,e,g,h)}function i(a,b,c,d,e,g,h){return f(b^c^d,a,b,e,g,h)}function j(a,b,c,d,e,g,h){return f(c^(b|~d),a,b,e,g,h)}function k(a,b){a[b>>5]|=128<>>9<<4)+14]=b;var c,e,f,k,l,m=1732584193,n=-271733879,o=-1732584194,p=271733878;for(c=0;c>5]>>>b%32&255);return c}function m(a){var b,c=[];for(c[(a.length>>2)-1]=void 0,b=0;b>5]|=(255&a.charCodeAt(b/8))<16&&(e=k(e,8*a.length)),c=0;c<16;c+=1)f[c]=909522486^e[c],g[c]=1549556828^e[c];return d=k(f.concat(m(b)),512+8*b.length),l(k(g.concat(d),640))}function p(a){var b,c,d="0123456789abcdef",e="";for(c=0;c>>4&15)+d.charAt(15&b);return e}function q(a){return unescape(encodeURIComponent(a))}function r(a){return n(q(a))}function s(a){return p(r(a))}function t(a,b){return o(q(a),q(b))}function u(a,b){return p(t(a,b))}function v(a,b,c){return b?c?t(b,a):u(b,a):c?r(a):s(a)}b.exports=v},{}]},{},[5,1])(5)}); +/*! Raven.js 3.25.0 (80dffad) | github.com/getsentry/raven-js */ +!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.Raven=a()}}(function(){return function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};b[g][0].call(k.exports,function(a){var c=b[g][1][a];return e(c?c:a)},k,k.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;gthis.k.maxBreadcrumbs&&this.u.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.r.push([a,b]),this.n&&this.F(),this},setUserContext:function(a){return this.j.user=a,this},setExtraContext:function(a){return this.Z("extra",a),this},setTagsContext:function(a){return this.Z("tags",a),this},clearContext:function(){return this.j={},this},getContext:function(){return JSON.parse(h(this.j))},setEnvironment:function(a){return this.k.environment=a,this},setRelease:function(a){return this.k.release=a,this},setDataCallback:function(a){var b=this.k.dataCallback;return this.k.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.k.breadcrumbCallback;return this.k.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.k.shouldSendCallback;return this.k.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.k.transport=a,this},lastException:function(){return this.d},lastEventId:function(){return this.f},isSetup:function(){return!!this.a&&(!!this.g||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.z("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=R.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(S){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.H;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.j.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.J(this.G(c)),h=S.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(S.head||S.body).appendChild(h)}},L:function(){var a=this;this.m+=1,setTimeout(function(){a.m-=1})},$:function(a,b){var c,d;if(this.b){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),S.createEvent?(c=S.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=S.createEventObject(),c.eventType=a);for(d in b)A(b,d)&&(c[d]=b[d]);if(S.createEvent)S.dispatchEvent(c);else try{S.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},_:function(a){var b=this;return function(c){if(b.aa=null,b.v!==c){b.v=c;var d;try{d=E(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ba:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.aa;g||a._("input")(c),clearTimeout(g),a.aa=setTimeout(function(){a.aa=null},b)}}},ca:function(a,b){var c=H(this.w.href),d=H(b),e=H(a);this.x=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},C:function(){var a=this;a.da=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.M?a.da.apply(this.O,arguments):a.da.apply(this,arguments)}},Q:function(){this.da&&(Function.prototype.toString=this.da)},D:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.ca(b.x,c+""),a.apply(this,arguments)}};I(history,"pushState",j,d),I(history,"replaceState",j,d)}if(c.console&&"console"in R&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};w(["debug","info","warn","error","log"],function(a,b){O(console,b,k)})}},R:function(){for(var a;this.t.length;){a=this.t.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},S:function(){for(var a in this.q)this.p[a]=this.q[a]},F:function(){var a=this;w(this.r,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},G:function(a){var b=Q.exec(a),c={},d=7;try{for(;d--;)c[P[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.k.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},J:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},A:function(){this.m||this.V.apply(this,arguments)},V:function(a,b){var c=this.X(a,b);this.$("handle",{stackInfo:a,options:b}),this.fa(a.name,a.message,a.url,a.lineno,c,b)},X:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(w(a.stack,function(b,e){var f=c.ga(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.u,0)}),this.j.user&&(a.user=this.j.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),a=this.pa(a),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||v(a[b]))&&delete a[b]}),s(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!v(a)&&(!s(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.ma()?void this.z("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function F(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&l(b))for(c=b.split(/\s+/),f=0;fc?Q(a,b-1):d}function R(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?X:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function S(a,b){function c(a){return m(a)?a.map(function(a){return c(a)}):k(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!m(b)||m(b)&&0===b.length)return a;var d,e=A(b),f="********";try{d=JSON.parse(T(a))}catch(g){return a}return c(d)}var T=a(8),U="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},V=3,W=51200,X=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isDOMError:g,isDOMException:h,isUndefined:i,isFunction:j,isPlainObject:k,isString:l,isArray:m,isEmptyObject:n,supportsErrorEvent:o,supportsDOMError:p,supportsDOMException:q,supportsFetch:r,supportsReferrerPolicy:s,supportsPromiseRejectionEvent:t,wrappedCallback:u,each:v,objectMerge:w,truncate:y,objectFrozen:x,hasKey:z,joinRegExp:A,urlencode:B,uuid4:D,htmlTreeAsString:E,htmlElementAsString:F,isSameException:I,isSameStacktrace:J,parseUrl:C,fill:K,safeJoin:L,serializeException:Q,serializeKeysForMessage:R,sanitize:S}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{8:8}],7:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}function e(){return"undefined"==typeof document||null==document.location?"":document.location.origin}var f=a(6),g={collectWindowErrors:!0,debug:!1},h="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},i=[].slice,j="?",k=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;g.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function e(a,b){var c=null;if(!b||g.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(i.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,h,i){var l=null,m=f.isErrorEvent(i)?i.error:i,n=f.isErrorEvent(a)?a.message:a;if(v)g.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&f.isError(m))l=g.computeStackTrace(m),e(l,!0);else{var p,r={url:b,line:c,column:h},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(k);p&&(s=p[1],n=p[2])}r.func=j,l={name:s,message:n,url:d(),stack:[r]},e(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=h.onerror,h.onerror=l,r=!0)}function n(){r&&(h.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,e.apply(null,[a,!1].concat(b))}function p(a,b){var c=i.call(arguments,1);if(v){if(u===a)return;o()}var d=g.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),g.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,f,g=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,h=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,i=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,k=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,l=/\((\S*)(?::(\d+))(?::(\d+))\)/,m=a.stack.split("\n"),n=[],o=(/^(.*) is undefined$/.exec(a.message),0),p=m.length;o eval")>-1;r&&(b=k.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==o||c[5]||"undefined"==typeof a.columnNumber||(n[0].column=a.columnNumber+1),f={url:c[3],func:c[1]||j,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}if(!f.func&&f.line&&(f.func=j),f.url&&"blob:"===f.url.substr(0,5)){var s=new XMLHttpRequest;if(s.open("GET",f.url,!1),s.send(null),200===s.status){var t=s.responseText||"";t=t.slice(-300);var u=t.match(/\/\/# sourceMappingURL=(.*)$/);if(u){var v=u[1];"~"===v.charAt(0)&&(v=e()+v.slice(1)),f.url=v.slice(0,-4)}}}n.push(f)}return n.length?{name:a.name,message:a.message,url:d(),stack:n}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=j),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,e){for(var h,i,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==f&&o!==g.report){if(i={url:null,func:j,line:null,column:null},o.name?i.func=o.name:(h=k.exec(o.toString()))&&(i.func=h[1]),"undefined"==typeof i.func)try{i.func=h.input.substring(0,h.input.indexOf("{"))}catch(p){}m[""+o]?n=!0:m[""+o]=!0,l.push(i)}e&&l.splice(0,e);var q={name:a.name,message:a.message,url:d(),stack:l};return b(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),q}function f(b,e){var f=null;e=null==e?0:+e;try{if(f=a(b))return f}catch(h){if(g.debug)throw h}try{if(f=c(b,e+1))return f}catch(h){if(g.debug)throw h}return{name:b.name,message:b.message,url:d()}}return f.augmentStackTraceWithInitialElement=b, +f.computeStackTraceFromStackProp=a,f}(),b.exports=g}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{6:6}],8:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}],9:[function(a,b,c){function d(a,b){var c=(65535&a)+(65535&b),d=(a>>16)+(b>>16)+(c>>16);return d<<16|65535&c}function e(a,b){return a<>>32-b}function f(a,b,c,f,g,h){return d(e(d(d(b,a),d(f,h)),g),c)}function g(a,b,c,d,e,g,h){return f(b&c|~b&d,a,b,e,g,h)}function h(a,b,c,d,e,g,h){return f(b&d|c&~d,a,b,e,g,h)}function i(a,b,c,d,e,g,h){return f(b^c^d,a,b,e,g,h)}function j(a,b,c,d,e,g,h){return f(c^(b|~d),a,b,e,g,h)}function k(a,b){a[b>>5]|=128<>>9<<4)+14]=b;var c,e,f,k,l,m=1732584193,n=-271733879,o=-1732584194,p=271733878;for(c=0;c>5]>>>b%32&255);return c}function m(a){var b,c=[];for(c[(a.length>>2)-1]=void 0,b=0;b>5]|=(255&a.charCodeAt(b/8))<16&&(e=k(e,8*a.length)),c=0;c<16;c+=1)f[c]=909522486^e[c],g[c]=1549556828^e[c];return d=k(f.concat(m(b)),512+8*b.length),l(k(g.concat(d),640))}function p(a){var b,c,d="0123456789abcdef",e="";for(c=0;c>>4&15)+d.charAt(15&b);return e}function q(a){return unescape(encodeURIComponent(a))}function r(a){return n(q(a))}function s(a){return p(r(a))}function t(a,b){return o(q(a),q(b))}function u(a,b){return p(t(a,b))}function v(a,b,c){return b?c?t(b,a):u(b,a):c?r(a):s(a)}b.exports=v},{}]},{},[5,1])(5)}); //# sourceMappingURL=raven.min.js.map \ No newline at end of file diff --git a/dist/console/raven.min.js.map b/dist/console/raven.min.js.map index 0d45c151bfb7..9b6ab6386485 100644 --- a/dist/console/raven.min.js.map +++ b/dist/console/raven.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","consolePlugin","console","pluginOptions","logLevels","levels","push","callback","msg","data","captureMessage","level","pop","wrapConsoleMethod","wrapMethod","addPlugin","3","5","2","RavenConfigError","message","name","prototype","constructor","utils","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","safeJoin","logger","extra","Function","apply","6","4","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","sanitizeKeys","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isError","isObject","isPlainObject","isErrorEvent","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","sanitize","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","config","dsn","options","_logDebug","globalOptions","key","value","setDSN","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","toString","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","substr","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","context","func","undefined","wrap","_before","wrapped","deep","_ignoreNextOnError","captureException","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","T","event","reason","unhandledPromiseRejection","B","_promiseRejectionHandler","bind","addEventListener","P","removeEventListener","ex","trimHeadFrames","error","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","U","currentOptions","exKeys","Object","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","setDataCallback","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","L","setTimeout","$","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","_","evtName","_keypressTimeout","target","category","ba","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","ca","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","C","_originalFunctionToString","Q","D","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","type","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","E","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","R","builtin","S","F","installer","concat","G","str","m","exec","allowSecretKey","J","port","A","V","stackInfo","_triggerEvent","_processException","lineno","X","frame","_normalizeFrame","in_app","ga","stackInfoUrl","normalized","filename","line","colno","column","function","fa","prefixedMessage","exception","values","culprit","ha","request","Referer","breadcrumbs","_trimBreadcrumbs","ia","urlProp","urlProps","ja","httpData","userAgent","User-Agent","referrer","y","_backoffDuration","_backoffStart","ma","na","current","last","oa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Y","baseData","project","platform","_getHttpData","serverName","server_name","_sanitizeData","forEach","random","_sendProcessedPayload","pa","ra","qa","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","sa","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","onerror","open","setRequestHeader","send","ta","hash","evaluated","z","Z","setUser","setReleaseContext","7","8","9","RavenConstructor","_Raven","noConflict","Client","what","supportsErrorEvent","ErrorEvent","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","wrappedCallback","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","sanitizeMask","safeInput","o_O","getLocationHref","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","charAt","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","string","raw"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file +{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","consolePlugin","console","pluginOptions","logLevels","levels","push","callback","msg","data","captureMessage","level","pop","wrapConsoleMethod","wrapMethod","addPlugin","3","5","2","RavenConfigError","message","name","prototype","constructor","utils","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","safeJoin","logger","extra","Function","apply","6","4","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","sanitizeKeys","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isErrorEvent","isDOMError","isDOMException","isError","isObject","isPlainObject","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","sanitize","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","config","dsn","options","_logDebug","globalOptions","key","value","setDSN","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","toString","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","substr","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","context","func","undefined","wrap","_before","wrapped","deep","_ignoreNextOnError","captureException","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","T","event","reason","unhandledPromiseRejection","B","_promiseRejectionHandler","bind","addEventListener","P","removeEventListener","ex","trimHeadFrames","error","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","U","currentOptions","exKeys","Object","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","setDataCallback","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","L","setTimeout","$","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","_","evtName","_keypressTimeout","target","category","ba","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","ca","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","C","_originalFunctionToString","Q","D","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","type","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","E","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","R","builtin","S","F","installer","concat","G","str","m","exec","allowSecretKey","J","port","A","V","stackInfo","_triggerEvent","_processException","lineno","X","frame","_normalizeFrame","in_app","ga","stackInfoUrl","normalized","filename","line","colno","column","function","fa","prefixedMessage","exception","values","culprit","ha","request","Referer","breadcrumbs","_trimBreadcrumbs","ia","urlProp","urlProps","ja","httpData","userAgent","User-Agent","referrer","y","_backoffDuration","_backoffStart","ma","na","current","last","oa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Y","baseData","project","platform","_getHttpData","serverName","server_name","_sanitizeData","forEach","random","_sendProcessedPayload","pa","ra","qa","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","sa","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","onerror","open","setRequestHeader","send","ta","hash","evaluated","z","Z","setUser","setReleaseContext","7","8","9","RavenConstructor","_Raven","noConflict","Client","what","supportsErrorEvent","ErrorEvent","supportsDOMError","DOMError","supportsDOMException","DOMException","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","wrappedCallback","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","sanitizeMask","safeInput","o_O","getLocationHref","getLocationOrigin","origin","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","responseText","sourceMaps","sourceMapAddress","charAt","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","string","raw"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file diff --git a/dist/ember,require,vue/raven.js b/dist/ember,require,vue/raven.js index 86a53dbd4c2d..967f3f33e755 100644 --- a/dist/ember,require,vue/raven.js +++ b/dist/ember,require,vue/raven.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.24.2 (540f32b) | github.com/getsentry/raven-js */ +/*! Raven.js 3.25.0 (80dffad) | github.com/getsentry/raven-js */ /* * Includes TraceKit @@ -174,10 +174,12 @@ var md5 = _dereq_(11); var RavenConfigError = _dereq_(4); var utils = _dereq_(8); +var isErrorEvent = utils.isErrorEvent; +var isDOMError = utils.isDOMError; +var isDOMException = utils.isDOMException; var isError = utils.isError; var isObject = utils.isObject; var isPlainObject = utils.isPlainObject; -var isErrorEvent = utils.isErrorEvent; var isUndefined = utils.isUndefined; var isFunction = utils.isFunction; var isString = utils.isString; @@ -305,7 +307,7 @@ Raven.prototype = { // webpack (using a build step causes webpack #1617). Grunt verifies that // this value matches package.json during build. // See: https://github.com/getsentry/raven-js/issues/465 - VERSION: '3.24.2', + VERSION: '3.25.0', debug: false, @@ -637,6 +639,23 @@ Raven.prototype = { if (isErrorEvent(ex) && ex.error) { // If it is an ErrorEvent with `error` property, extract it to get actual Error ex = ex.error; + } else if (isDOMError(ex) || isDOMException(ex)) { + // If it is a DOMError or DOMException (which are legacy APIs, but still supported in some browsers) + // then we just extract the name and message, as they don't provide anything else + // https://developer.mozilla.org/en-US/docs/Web/API/DOMError + // https://developer.mozilla.org/en-US/docs/Web/API/DOMException + var name = ex.name || (isDOMError(ex) ? 'DOMError' : 'DOMException'); + var message = ex.message ? name + ': ' + ex.message : name; + + return this.captureMessage( + message, + objectMerge(options, { + // neither DOMError or DOMException provide stack trace and we most likely wont get it this way as well + // but it's barely any overhead so we may at least try + stacktrace: true, + trimHeadFrames: options.trimHeadFrames + 1 + }) + ); } else if (isError(ex)) { // we have a real Error object ex = ex; @@ -648,6 +667,7 @@ Raven.prototype = { ex = new Error(options.message); } else { // If none of previous checks were valid, then it means that + // it's not a DOMError/DOMException // it's not a plain Object // it's not a valid ErrorEvent (one with an error property) // it's not an Error @@ -2420,7 +2440,7 @@ function isObject(what) { // Yanked from https://git.io/vS8DV re-used under CC0 // with some tiny modifications function isError(value) { - switch ({}.toString.call(value)) { + switch (Object.prototype.toString.call(value)) { case '[object Error]': return true; case '[object Exception]': @@ -2433,7 +2453,15 @@ function isError(value) { } function isErrorEvent(value) { - return supportsErrorEvent() && {}.toString.call(value) === '[object ErrorEvent]'; + return Object.prototype.toString.call(value) === '[object ErrorEvent]'; +} + +function isDOMError(value) { + return Object.prototype.toString.call(value) === '[object DOMError]'; +} + +function isDOMException(value) { + return Object.prototype.toString.call(value) === '[object DOMException]'; } function isUndefined(what) { @@ -2476,6 +2504,24 @@ function supportsErrorEvent() { } } +function supportsDOMError() { + try { + new DOMError(''); // eslint-disable-line no-new + return true; + } catch (e) { + return false; + } +} + +function supportsDOMException() { + try { + new DOMException(''); // eslint-disable-line no-new + return true; + } catch (e) { + return false; + } +} + function supportsFetch() { if (!('fetch' in _window)) return false; @@ -2991,6 +3037,8 @@ module.exports = { isObject: isObject, isError: isError, isErrorEvent: isErrorEvent, + isDOMError: isDOMError, + isDOMException: isDOMException, isUndefined: isUndefined, isFunction: isFunction, isPlainObject: isPlainObject, @@ -2998,6 +3046,8 @@ module.exports = { isArray: isArray, isEmptyObject: isEmptyObject, supportsErrorEvent: supportsErrorEvent, + supportsDOMError: supportsDOMError, + supportsDOMException: supportsDOMException, supportsFetch: supportsFetch, supportsReferrerPolicy: supportsReferrerPolicy, supportsPromiseRejectionEvent: supportsPromiseRejectionEvent, @@ -3057,10 +3107,14 @@ var ERROR_TYPES_RE = /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Ran function getLocationHref() { if (typeof document === 'undefined' || document.location == null) return ''; - return document.location.href; } +function getLocationOrigin() { + if (typeof document === 'undefined' || document.location == null) return ''; + return document.location.origin; +} + /** * TraceKit.report: cross-browser processing of unhandled exceptions * @@ -3468,6 +3522,44 @@ TraceKit.computeStackTrace = (function computeStackTraceWrapper() { element.func = UNKNOWN_FUNCTION; } + if (element.url && element.url.substr(0, 5) === 'blob:') { + // Special case for handling JavaScript loaded into a blob. + // We use a synchronous AJAX request here as a blob is already in + // memory - it's not making a network request. This will generate a warning + // in the browser console, but there has already been an error so that's not + // that much of an issue. + var xhr = new XMLHttpRequest(); + xhr.open('GET', element.url, false); + xhr.send(null); + + // If we failed to download the source, skip this patch + if (xhr.status === 200) { + var source = xhr.responseText || ''; + + // We trim the source down to the last 300 characters as sourceMappingURL is always at the end of the file. + // Why 300? To be in line with: https://github.com/getsentry/sentry/blob/4af29e8f2350e20c28a6933354e4f42437b4ba42/src/sentry/lang/javascript/processor.py#L164-L175 + source = source.slice(-300); + + // Now we dig out the source map URL + var sourceMaps = source.match(/\/\/# sourceMappingURL=(.*)$/); + + // If we don't find a source map comment or we find more than one, continue on to the next element. + if (sourceMaps) { + var sourceMapAddress = sourceMaps[1]; + + // Now we check to see if it's a relative URL. + // If it is, convert it to an absolute one. + if (sourceMapAddress.charAt(0) === '~') { + sourceMapAddress = getLocationOrigin() + sourceMapAddress.slice(1); + } + + // Now we strip the '.map' off of the end of the URL and update the + // element so that Sentry can match the map to the blob. + element.url = sourceMapAddress.slice(0, -4); + } + } + } + stack.push(element); } diff --git a/dist/ember,require,vue/raven.min.js b/dist/ember,require,vue/raven.min.js index ff9f670c89e2..dab27d8de915 100644 --- a/dist/ember,require,vue/raven.min.js +++ b/dist/ember,require,vue/raven.min.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.24.2 (540f32b) | github.com/getsentry/raven-js */ -!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.Raven=a()}}(function(){var a;return function b(a,c,d){function e(g,h){if(!c[g]){if(!a[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};a[g][0].call(k.exports,function(b){var c=a[g][1][b];return e(c?c:b)},k,k.exports,b,a,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;g":"anonymous component")+(a._isVue&&a.$options.__file?" at "+a.$options.__file:"")}function e(a,b){if(b=b||window.Vue,b&&b.config){var c=b.config.errorHandler;b.config.errorHandler=function(b,e,f){var g={};"[object Object]"===Object.prototype.toString.call(e)&&(g.componentName=d(e),g.propsData=e.$options.propsData),"undefined"!=typeof f&&(g.lifecycleHook=f),a.captureException(b,{extra:g}),"function"==typeof c&&c.call(this,b,e,f)}}}b.exports=e,a(7).addPlugin(b.exports)},{7:7}],4:[function(a,b,c){function d(a){this.name="RavenConfigError",this.message=a}d.prototype=new Error,d.prototype.constructor=d,b.exports=d},{}],5:[function(a,b,c){var d=a(8),e=function(a,b,c){var e=a[b],f=a;if(b in a){var g="warn"===b?"warning":b;a[b]=function(){var a=[].slice.call(arguments),h=d.safeJoin(a," "),i={level:g,logger:"console",extra:{arguments:a}};"assert"===b?a[0]===!1&&(h="Assertion failed: "+(d.safeJoin(a.slice(1)," ")||"console.assert"),i.extra.arguments=a.slice(1),c&&c(h,i)):c&&c(h,i),e&&Function.prototype.apply.call(e,f,a)}}};b.exports={wrapMethod:e}},{8:8}],6:[function(a,b,c){(function(c){function d(){return+new Date}function e(a,b){return q(b)?function(c){return b(c,a)}:b}function f(){this.a=!("object"!=typeof JSON||!JSON.stringify),this.b=!p(Q),this.c=!p(R),this.d=null,this.e=null,this.f=null,this.g=null,this.h=null,this.i=null,this.j={},this.k={release:P.SENTRY_RELEASE&&P.SENTRY_RELEASE.id,logger:"javascript",ignoreErrors:[],ignoreUrls:[],whitelistUrls:[],includePaths:[],headers:null,collectWindowErrors:!0,captureUnhandledRejections:!0,maxMessageLength:0,maxUrlLength:250,stackTraceLimit:50,autoBreadcrumbs:!0,instrument:!0,sampleRate:1,sanitizeKeys:[]},this.l={method:"POST",keepalive:!0,referrerPolicy:I()?"origin":""},this.m=0,this.n=!1,this.o=Error.stackTraceLimit,this.p=P.console||{},this.q={},this.r=[],this.s=d(),this.t=[],this.u=[],this.v=null,this.w=P.location,this.x=this.w&&this.w.href,this.y();for(var a in this.p)this.q[a]=this.p[a]}var g=a(9),h=a(10),i=a(11),j=a(4),k=a(8),l=k.isError,m=k.isObject,n=k.isPlainObject,o=k.isErrorEvent,p=k.isUndefined,q=k.isFunction,r=k.isString,s=k.isArray,t=k.isEmptyObject,u=k.each,v=k.objectMerge,w=k.truncate,x=k.objectFrozen,y=k.hasKey,z=k.joinRegExp,A=k.urlencode,B=k.uuid4,C=k.htmlTreeAsString,D=k.isSameException,E=k.isSameStacktrace,F=k.parseUrl,G=k.fill,H=k.supportsFetch,I=k.supportsReferrerPolicy,J=k.serializeKeysForMessage,K=k.serializeException,L=k.sanitize,M=a(5).wrapMethod,N="source protocol user pass host port path".split(" "),O=/^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/,P="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},Q=P.document,R=P.navigator;f.prototype={VERSION:"3.24.2",debug:!1,TraceKit:g,config:function(a,b){var c=this;if(c.g)return this.z("error","Error: Raven has already been configured"),c;if(!a)return c;var d=c.k;b&&u(b,function(a,b){"tags"===a||"extra"===a||"user"===a?c.j[a]=b:d[a]=b}),c.setDSN(a),d.ignoreErrors.push(/^Script error\.?$/),d.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/),d.ignoreErrors=z(d.ignoreErrors),d.ignoreUrls=!!d.ignoreUrls.length&&z(d.ignoreUrls),d.whitelistUrls=!!d.whitelistUrls.length&&z(d.whitelistUrls),d.includePaths=z(d.includePaths),d.maxBreadcrumbs=Math.max(0,Math.min(d.maxBreadcrumbs||100,100));var e={xhr:!0,console:!0,dom:!0,location:!0,sentry:!0},f=d.autoBreadcrumbs;"[object Object]"==={}.toString.call(f)?f=v(e,f):f!==!1&&(f=e),d.autoBreadcrumbs=f;var h={tryCatch:!0},i=d.instrument;return"[object Object]"==={}.toString.call(i)?i=v(h,i):i!==!1&&(i=h),d.instrument=i,g.collectWindowErrors=!!d.collectWindowErrors,c},install:function(){var a=this;return a.isSetup()&&!a.n&&(g.report.subscribe(function(){a.A.apply(a,arguments)}),a.k.captureUnhandledRejections&&a.B(),a.C(),a.k.instrument&&a.k.instrument.tryCatch&&a.D(),a.k.autoBreadcrumbs&&a.E(),a.F(),a.n=!0),Error.stackTraceLimit=a.k.stackTraceLimit,this},setDSN:function(a){var b=this,c=b.G(a),d=c.path.lastIndexOf("/"),e=c.path.substr(1,d);b.H=a,b.h=c.user,b.I=c.pass&&c.pass.substr(1),b.i=c.path.substr(d+1),b.g=b.J(c),b.K=b.g+"/"+e+"api/"+b.i+"/store/",this.y()},context:function(a,b,c){return q(a)&&(c=b||[],b=a,a=void 0),this.wrap(a,b).apply(this,c)},wrap:function(a,b,c){function d(){var d=[],f=arguments.length,g=!a||a&&a.deep!==!1;for(c&&q(c)&&c.apply(this,arguments);f--;)d[f]=g?e.wrap(a,arguments[f]):arguments[f];try{return b.apply(this,d)}catch(h){throw e.L(),e.captureException(h,a),h}}var e=this;if(p(b)&&!q(a))return a;if(q(a)&&(b=a,a=void 0),!q(b))return b;try{if(b.M)return b;if(b.N)return b.N}catch(f){return b}for(var g in b)y(b,g)&&(d[g]=b[g]);return d.prototype=b.prototype,b.N=d,d.M=!0,d.O=b,d},uninstall:function(){return g.report.uninstall(),this.P(),this.Q(),this.R(),this.S(),Error.stackTraceLimit=this.o,this.n=!1,this},T:function(a){this.z("debug","Raven caught unhandled promise rejection:",a),this.captureException(a.reason,{extra:{unhandledPromiseRejection:!0}})},B:function(){return this.T=this.T.bind(this),P.addEventListener&&P.addEventListener("unhandledrejection",this.T),this},P:function(){return P.removeEventListener&&P.removeEventListener("unhandledrejection",this.T),this},captureException:function(a,b){if(b=v({trimHeadFrames:0},b?b:{}),o(a)&&a.error)a=a.error;else if(l(a))a=a;else{if(!n(a))return this.captureMessage(a,v(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}));b=this.U(b,a),a=new Error(b.message)}this.d=a;try{var c=g.computeStackTrace(a);this.V(c,b)}catch(d){if(a!==d)throw d}return this},U:function(a,b){var c=Object.keys(b).sort(),d=v(a,{message:"Non-Error exception captured with keys: "+J(c),fingerprint:[i(c)],extra:a.extra||{}});return d.extra.W=K(b),d},captureMessage:function(a,b){if(!this.k.ignoreErrors.test||!this.k.ignoreErrors.test(a)){b=b||{},a+="";var c,d=v({message:a},b);try{throw new Error(a)}catch(e){c=e}c.name=null;var f=g.computeStackTrace(c),h=s(f.stack)&&f.stack[1];h&&"Raven.captureException"===h.func&&(h=f.stack[2]);var i=h&&h.url||"";if((!this.k.ignoreUrls.test||!this.k.ignoreUrls.test(i))&&(!this.k.whitelistUrls.test||this.k.whitelistUrls.test(i))){if(this.k.stacktrace||b&&b.stacktrace){d.fingerprint=null==d.fingerprint?a:d.fingerprint,b=v({trimHeadFrames:0},b),b.trimHeadFrames+=1;var j=this.X(f,b);d.stacktrace={frames:j.reverse()}}return d.fingerprint&&(d.fingerprint=s(d.fingerprint)?d.fingerprint:[d.fingerprint]),this.Y(d),this}}},captureBreadcrumb:function(a){var b=v({timestamp:d()/1e3},a);if(q(this.k.breadcrumbCallback)){var c=this.k.breadcrumbCallback(b);if(m(c)&&!t(c))b=c;else if(c===!1)return this}return this.u.push(b),this.u.length>this.k.maxBreadcrumbs&&this.u.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.r.push([a,b]),this.n&&this.F(),this},setUserContext:function(a){return this.j.user=a,this},setExtraContext:function(a){return this.Z("extra",a),this},setTagsContext:function(a){return this.Z("tags",a),this},clearContext:function(){return this.j={},this},getContext:function(){return JSON.parse(h(this.j))},setEnvironment:function(a){return this.k.environment=a,this},setRelease:function(a){return this.k.release=a,this},setDataCallback:function(a){var b=this.k.dataCallback;return this.k.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.k.breadcrumbCallback;return this.k.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.k.shouldSendCallback;return this.k.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.k.transport=a,this},lastException:function(){return this.d},lastEventId:function(){return this.f},isSetup:function(){return!!this.a&&(!!this.g||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.z("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=P.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(Q){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.H;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.j.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.J(this.G(c)),h=Q.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(Q.head||Q.body).appendChild(h)}},L:function(){var a=this;this.m+=1,setTimeout(function(){a.m-=1})},$:function(a,b){var c,d;if(this.b){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),Q.createEvent?(c=Q.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=Q.createEventObject(),c.eventType=a);for(d in b)y(b,d)&&(c[d]=b[d]);if(Q.createEvent)Q.dispatchEvent(c);else try{Q.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},_:function(a){var b=this;return function(c){if(b.aa=null,b.v!==c){b.v=c;var d;try{d=C(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ba:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.aa;g||a._("input")(c),clearTimeout(g),a.aa=setTimeout(function(){a.aa=null},b)}}},ca:function(a,b){var c=F(this.w.href),d=F(b),e=F(a);this.x=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},C:function(){var a=this;a.da=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.M?a.da.apply(this.O,arguments):a.da.apply(this,arguments)}},Q:function(){this.da&&(Function.prototype.toString=this.da)},D:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.ca(b.x,c+""),a.apply(this,arguments)}};G(history,"pushState",j,d),G(history,"replaceState",j,d)}if(c.console&&"console"in P&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};u(["debug","info","warn","error","log"],function(a,b){M(console,b,k)})}},R:function(){for(var a;this.t.length;){a=this.t.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},S:function(){for(var a in this.q)this.p[a]=this.q[a]},F:function(){var a=this;u(this.r,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},G:function(a){var b=O.exec(a),c={},d=7;try{for(;d--;)c[N[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.k.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},J:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},A:function(){this.m||this.V.apply(this,arguments)},V:function(a,b){var c=this.X(a,b);this.$("handle",{stackInfo:a,options:b}),this.fa(a.name,a.message,a.url,a.lineno,c,b)},X:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(u(a.stack,function(b,e){var f=c.ga(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.u,0)}),this.j.user&&(a.user=this.j.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),a=this.pa(a),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||t(a[b]))&&delete a[b]}),q(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!t(a)&&(!q(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.ma()?void this.z("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function B(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&j(b))for(c=b.split(/\s+/),f=0;fc?M(a,b-1):d}function N(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?T:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function O(a,b){function c(a){return k(a)?a.map(function(a){return c(a)}):i(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!k(b)||k(b)&&0===b.length)return a;var d,e=w(b),f="********";try{d=JSON.parse(P(a))}catch(g){return a}return c(d)}var P=a(10),Q="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},R=3,S=51200,T=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isUndefined:g,isFunction:h,isPlainObject:i,isString:j,isArray:k,isEmptyObject:l,supportsErrorEvent:m,supportsFetch:n,supportsReferrerPolicy:o,supportsPromiseRejectionEvent:p,wrappedCallback:q,each:r,objectMerge:s,truncate:u,objectFrozen:t,hasKey:v,joinRegExp:w,urlencode:x,uuid4:z,htmlTreeAsString:A,htmlElementAsString:B,isSameException:E,isSameStacktrace:F,parseUrl:y,fill:G,safeJoin:H,serializeException:M,serializeKeysForMessage:N,sanitize:O}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{10:10}],9:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}var e=a(8),f={collectWindowErrors:!0,debug:!1},g="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},h=[].slice,i="?",j=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;f.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function k(a,b){var c=null;if(!b||f.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(h.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,g,h){var l=null,m=e.isErrorEvent(h)?h.error:h,n=e.isErrorEvent(a)?a.message:a;if(v)f.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&e.isError(m))l=f.computeStackTrace(m),k(l,!0);else{var p,r={url:b,line:c,column:g},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(j);p&&(s=p[1],n=p[2])}r.func=i,l={name:s,message:n,url:d(),stack:[r]},k(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=g.onerror,g.onerror=l,r=!0)}function n(){r&&(g.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,k.apply(null,[a,!1].concat(b))}function p(a,b){var c=h.call(arguments,1);if(v){if(u===a)return;o()}var d=f.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),f.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,e,f=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,g=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,h=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,j=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,k=/\((\S*)(?::(\d+))(?::(\d+))\)/,l=a.stack.split("\n"),m=[],n=(/^(.*) is undefined$/.exec(a.message),0),o=l.length;n eval")>-1;q&&(b=j.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==n||c[5]||"undefined"==typeof a.columnNumber||(m[0].column=a.columnNumber+1),e={url:c[3],func:c[1]||i,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}!e.func&&e.line&&(e.func=i),m.push(e)}return m.length?{name:a.name,message:a.message,url:d(),stack:m}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=i),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,g){for(var h,j,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==e&&o!==f.report){if(j={url:null,func:i,line:null,column:null},o.name?j.func=o.name:(h=k.exec(o.toString()))&&(j.func=h[1]),"undefined"==typeof j.func)try{j.func=h.input.substring(0,h.input.indexOf("{"))}catch(p){}m[""+o]?n=!0:m[""+o]=!0,l.push(j)}g&&l.splice(0,g);var q={name:a.name,message:a.message,url:d(),stack:l};return b(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),q}function e(b,e){var g=null;e=null==e?0:+e;try{if(g=a(b))return g}catch(h){if(f.debug)throw h}try{if(g=c(b,e+1))return g}catch(h){if(f.debug)throw h}return{name:b.name,message:b.message,url:d()}}return e.augmentStackTraceWithInitialElement=b, -e.computeStackTraceFromStackProp=a,e}(),b.exports=f}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{8:8}],10:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}],11:[function(a,b,c){function d(a,b){var c=(65535&a)+(65535&b),d=(a>>16)+(b>>16)+(c>>16);return d<<16|65535&c}function e(a,b){return a<>>32-b}function f(a,b,c,f,g,h){return d(e(d(d(b,a),d(f,h)),g),c)}function g(a,b,c,d,e,g,h){return f(b&c|~b&d,a,b,e,g,h)}function h(a,b,c,d,e,g,h){return f(b&d|c&~d,a,b,e,g,h)}function i(a,b,c,d,e,g,h){return f(b^c^d,a,b,e,g,h)}function j(a,b,c,d,e,g,h){return f(c^(b|~d),a,b,e,g,h)}function k(a,b){a[b>>5]|=128<>>9<<4)+14]=b;var c,e,f,k,l,m=1732584193,n=-271733879,o=-1732584194,p=271733878;for(c=0;c>5]>>>b%32&255);return c}function m(a){var b,c=[];for(c[(a.length>>2)-1]=void 0,b=0;b>5]|=(255&a.charCodeAt(b/8))<16&&(e=k(e,8*a.length)),c=0;c<16;c+=1)f[c]=909522486^e[c],g[c]=1549556828^e[c];return d=k(f.concat(m(b)),512+8*b.length),l(k(g.concat(d),640))}function p(a){var b,c,d="0123456789abcdef",e="";for(c=0;c>>4&15)+d.charAt(15&b);return e}function q(a){return unescape(encodeURIComponent(a))}function r(a){return n(q(a))}function s(a){return p(r(a))}function t(a,b){return o(q(a),q(b))}function u(a,b){return p(t(a,b))}function v(a,b,c){return b?c?t(b,a):u(b,a):c?r(a):s(a)}b.exports=v},{}]},{},[7,1,2,3])(7)}); +/*! Raven.js 3.25.0 (80dffad) | github.com/getsentry/raven-js */ +!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.Raven=a()}}(function(){var a;return function b(a,c,d){function e(g,h){if(!c[g]){if(!a[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};a[g][0].call(k.exports,function(b){var c=a[g][1][b];return e(c?c:b)},k,k.exports,b,a,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;g":"anonymous component")+(a._isVue&&a.$options.__file?" at "+a.$options.__file:"")}function e(a,b){if(b=b||window.Vue,b&&b.config){var c=b.config.errorHandler;b.config.errorHandler=function(b,e,f){var g={};"[object Object]"===Object.prototype.toString.call(e)&&(g.componentName=d(e),g.propsData=e.$options.propsData),"undefined"!=typeof f&&(g.lifecycleHook=f),a.captureException(b,{extra:g}),"function"==typeof c&&c.call(this,b,e,f)}}}b.exports=e,a(7).addPlugin(b.exports)},{7:7}],4:[function(a,b,c){function d(a){this.name="RavenConfigError",this.message=a}d.prototype=new Error,d.prototype.constructor=d,b.exports=d},{}],5:[function(a,b,c){var d=a(8),e=function(a,b,c){var e=a[b],f=a;if(b in a){var g="warn"===b?"warning":b;a[b]=function(){var a=[].slice.call(arguments),h=d.safeJoin(a," "),i={level:g,logger:"console",extra:{arguments:a}};"assert"===b?a[0]===!1&&(h="Assertion failed: "+(d.safeJoin(a.slice(1)," ")||"console.assert"),i.extra.arguments=a.slice(1),c&&c(h,i)):c&&c(h,i),e&&Function.prototype.apply.call(e,f,a)}}};b.exports={wrapMethod:e}},{8:8}],6:[function(a,b,c){(function(c){function d(){return+new Date}function e(a,b){return s(b)?function(c){return b(c,a)}:b}function f(){this.a=!("object"!=typeof JSON||!JSON.stringify),this.b=!r(S),this.c=!r(T),this.d=null,this.e=null,this.f=null,this.g=null,this.h=null,this.i=null,this.j={},this.k={release:R.SENTRY_RELEASE&&R.SENTRY_RELEASE.id,logger:"javascript",ignoreErrors:[],ignoreUrls:[],whitelistUrls:[],includePaths:[],headers:null,collectWindowErrors:!0,captureUnhandledRejections:!0,maxMessageLength:0,maxUrlLength:250,stackTraceLimit:50,autoBreadcrumbs:!0,instrument:!0,sampleRate:1,sanitizeKeys:[]},this.l={method:"POST",keepalive:!0,referrerPolicy:K()?"origin":""},this.m=0,this.n=!1,this.o=Error.stackTraceLimit,this.p=R.console||{},this.q={},this.r=[],this.s=d(),this.t=[],this.u=[],this.v=null,this.w=R.location,this.x=this.w&&this.w.href,this.y();for(var a in this.p)this.q[a]=this.p[a]}var g=a(9),h=a(10),i=a(11),j=a(4),k=a(8),l=k.isErrorEvent,m=k.isDOMError,n=k.isDOMException,o=k.isError,p=k.isObject,q=k.isPlainObject,r=k.isUndefined,s=k.isFunction,t=k.isString,u=k.isArray,v=k.isEmptyObject,w=k.each,x=k.objectMerge,y=k.truncate,z=k.objectFrozen,A=k.hasKey,B=k.joinRegExp,C=k.urlencode,D=k.uuid4,E=k.htmlTreeAsString,F=k.isSameException,G=k.isSameStacktrace,H=k.parseUrl,I=k.fill,J=k.supportsFetch,K=k.supportsReferrerPolicy,L=k.serializeKeysForMessage,M=k.serializeException,N=k.sanitize,O=a(5).wrapMethod,P="source protocol user pass host port path".split(" "),Q=/^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/,R="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},S=R.document,T=R.navigator;f.prototype={VERSION:"3.25.0",debug:!1,TraceKit:g,config:function(a,b){var c=this;if(c.g)return this.z("error","Error: Raven has already been configured"),c;if(!a)return c;var d=c.k;b&&w(b,function(a,b){"tags"===a||"extra"===a||"user"===a?c.j[a]=b:d[a]=b}),c.setDSN(a),d.ignoreErrors.push(/^Script error\.?$/),d.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/),d.ignoreErrors=B(d.ignoreErrors),d.ignoreUrls=!!d.ignoreUrls.length&&B(d.ignoreUrls),d.whitelistUrls=!!d.whitelistUrls.length&&B(d.whitelistUrls),d.includePaths=B(d.includePaths),d.maxBreadcrumbs=Math.max(0,Math.min(d.maxBreadcrumbs||100,100));var e={xhr:!0,console:!0,dom:!0,location:!0,sentry:!0},f=d.autoBreadcrumbs;"[object Object]"==={}.toString.call(f)?f=x(e,f):f!==!1&&(f=e),d.autoBreadcrumbs=f;var h={tryCatch:!0},i=d.instrument;return"[object Object]"==={}.toString.call(i)?i=x(h,i):i!==!1&&(i=h),d.instrument=i,g.collectWindowErrors=!!d.collectWindowErrors,c},install:function(){var a=this;return a.isSetup()&&!a.n&&(g.report.subscribe(function(){a.A.apply(a,arguments)}),a.k.captureUnhandledRejections&&a.B(),a.C(),a.k.instrument&&a.k.instrument.tryCatch&&a.D(),a.k.autoBreadcrumbs&&a.E(),a.F(),a.n=!0),Error.stackTraceLimit=a.k.stackTraceLimit,this},setDSN:function(a){var b=this,c=b.G(a),d=c.path.lastIndexOf("/"),e=c.path.substr(1,d);b.H=a,b.h=c.user,b.I=c.pass&&c.pass.substr(1),b.i=c.path.substr(d+1),b.g=b.J(c),b.K=b.g+"/"+e+"api/"+b.i+"/store/",this.y()},context:function(a,b,c){return s(a)&&(c=b||[],b=a,a=void 0),this.wrap(a,b).apply(this,c)},wrap:function(a,b,c){function d(){var d=[],f=arguments.length,g=!a||a&&a.deep!==!1;for(c&&s(c)&&c.apply(this,arguments);f--;)d[f]=g?e.wrap(a,arguments[f]):arguments[f];try{return b.apply(this,d)}catch(h){throw e.L(),e.captureException(h,a),h}}var e=this;if(r(b)&&!s(a))return a;if(s(a)&&(b=a,a=void 0),!s(b))return b;try{if(b.M)return b;if(b.N)return b.N}catch(f){return b}for(var g in b)A(b,g)&&(d[g]=b[g]);return d.prototype=b.prototype,b.N=d,d.M=!0,d.O=b,d},uninstall:function(){return g.report.uninstall(),this.P(),this.Q(),this.R(),this.S(),Error.stackTraceLimit=this.o,this.n=!1,this},T:function(a){this.z("debug","Raven caught unhandled promise rejection:",a),this.captureException(a.reason,{extra:{unhandledPromiseRejection:!0}})},B:function(){return this.T=this.T.bind(this),R.addEventListener&&R.addEventListener("unhandledrejection",this.T),this},P:function(){return R.removeEventListener&&R.removeEventListener("unhandledrejection",this.T),this},captureException:function(a,b){if(b=x({trimHeadFrames:0},b?b:{}),l(a)&&a.error)a=a.error;else{if(m(a)||n(a)){var c=a.name||(m(a)?"DOMError":"DOMException"),d=a.message?c+": "+a.message:c;return this.captureMessage(d,x(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}))}if(o(a))a=a;else{if(!q(a))return this.captureMessage(a,x(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}));b=this.U(b,a),a=new Error(b.message)}}this.d=a;try{var e=g.computeStackTrace(a);this.V(e,b)}catch(f){if(a!==f)throw f}return this},U:function(a,b){var c=Object.keys(b).sort(),d=x(a,{message:"Non-Error exception captured with keys: "+L(c),fingerprint:[i(c)],extra:a.extra||{}});return d.extra.W=M(b),d},captureMessage:function(a,b){if(!this.k.ignoreErrors.test||!this.k.ignoreErrors.test(a)){b=b||{},a+="";var c,d=x({message:a},b);try{throw new Error(a)}catch(e){c=e}c.name=null;var f=g.computeStackTrace(c),h=u(f.stack)&&f.stack[1];h&&"Raven.captureException"===h.func&&(h=f.stack[2]);var i=h&&h.url||"";if((!this.k.ignoreUrls.test||!this.k.ignoreUrls.test(i))&&(!this.k.whitelistUrls.test||this.k.whitelistUrls.test(i))){if(this.k.stacktrace||b&&b.stacktrace){d.fingerprint=null==d.fingerprint?a:d.fingerprint,b=x({trimHeadFrames:0},b),b.trimHeadFrames+=1;var j=this.X(f,b);d.stacktrace={frames:j.reverse()}}return d.fingerprint&&(d.fingerprint=u(d.fingerprint)?d.fingerprint:[d.fingerprint]),this.Y(d),this}}},captureBreadcrumb:function(a){var b=x({timestamp:d()/1e3},a);if(s(this.k.breadcrumbCallback)){var c=this.k.breadcrumbCallback(b);if(p(c)&&!v(c))b=c;else if(c===!1)return this}return this.u.push(b),this.u.length>this.k.maxBreadcrumbs&&this.u.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.r.push([a,b]),this.n&&this.F(),this},setUserContext:function(a){return this.j.user=a,this},setExtraContext:function(a){return this.Z("extra",a),this},setTagsContext:function(a){return this.Z("tags",a),this},clearContext:function(){return this.j={},this},getContext:function(){return JSON.parse(h(this.j))},setEnvironment:function(a){return this.k.environment=a,this},setRelease:function(a){return this.k.release=a,this},setDataCallback:function(a){var b=this.k.dataCallback;return this.k.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.k.breadcrumbCallback;return this.k.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.k.shouldSendCallback;return this.k.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.k.transport=a,this},lastException:function(){return this.d},lastEventId:function(){return this.f},isSetup:function(){return!!this.a&&(!!this.g||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.z("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=R.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(S){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.H;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.j.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.J(this.G(c)),h=S.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(S.head||S.body).appendChild(h)}},L:function(){var a=this;this.m+=1,setTimeout(function(){a.m-=1})},$:function(a,b){var c,d;if(this.b){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),S.createEvent?(c=S.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=S.createEventObject(),c.eventType=a);for(d in b)A(b,d)&&(c[d]=b[d]);if(S.createEvent)S.dispatchEvent(c);else try{S.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},_:function(a){var b=this;return function(c){if(b.aa=null,b.v!==c){b.v=c;var d;try{d=E(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ba:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.aa;g||a._("input")(c),clearTimeout(g),a.aa=setTimeout(function(){a.aa=null},b)}}},ca:function(a,b){var c=H(this.w.href),d=H(b),e=H(a);this.x=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},C:function(){var a=this;a.da=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.M?a.da.apply(this.O,arguments):a.da.apply(this,arguments)}},Q:function(){this.da&&(Function.prototype.toString=this.da)},D:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.ca(b.x,c+""),a.apply(this,arguments)}};I(history,"pushState",j,d),I(history,"replaceState",j,d)}if(c.console&&"console"in R&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};w(["debug","info","warn","error","log"],function(a,b){O(console,b,k)})}},R:function(){for(var a;this.t.length;){a=this.t.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},S:function(){for(var a in this.q)this.p[a]=this.q[a]},F:function(){var a=this;w(this.r,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},G:function(a){var b=Q.exec(a),c={},d=7;try{for(;d--;)c[P[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.k.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},J:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},A:function(){this.m||this.V.apply(this,arguments)},V:function(a,b){var c=this.X(a,b);this.$("handle",{stackInfo:a,options:b}),this.fa(a.name,a.message,a.url,a.lineno,c,b)},X:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(w(a.stack,function(b,e){var f=c.ga(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.u,0)}),this.j.user&&(a.user=this.j.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),a=this.pa(a),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||v(a[b]))&&delete a[b]}),s(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!v(a)&&(!s(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.ma()?void this.z("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function F(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&l(b))for(c=b.split(/\s+/),f=0;fc?Q(a,b-1):d}function R(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?X:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function S(a,b){function c(a){return m(a)?a.map(function(a){return c(a)}):k(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!m(b)||m(b)&&0===b.length)return a;var d,e=A(b),f="********";try{d=JSON.parse(T(a))}catch(g){return a}return c(d)}var T=a(10),U="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},V=3,W=51200,X=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isDOMError:g,isDOMException:h,isUndefined:i,isFunction:j,isPlainObject:k,isString:l,isArray:m,isEmptyObject:n,supportsErrorEvent:o,supportsDOMError:p,supportsDOMException:q,supportsFetch:r,supportsReferrerPolicy:s,supportsPromiseRejectionEvent:t,wrappedCallback:u,each:v,objectMerge:w,truncate:y,objectFrozen:x,hasKey:z,joinRegExp:A,urlencode:B,uuid4:D,htmlTreeAsString:E,htmlElementAsString:F,isSameException:I,isSameStacktrace:J,parseUrl:C,fill:K,safeJoin:L,serializeException:Q,serializeKeysForMessage:R,sanitize:S}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{10:10}],9:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}function e(){return"undefined"==typeof document||null==document.location?"":document.location.origin}var f=a(8),g={collectWindowErrors:!0,debug:!1},h="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},i=[].slice,j="?",k=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;g.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function e(a,b){var c=null;if(!b||g.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(i.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,h,i){var l=null,m=f.isErrorEvent(i)?i.error:i,n=f.isErrorEvent(a)?a.message:a;if(v)g.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&f.isError(m))l=g.computeStackTrace(m),e(l,!0);else{var p,r={url:b,line:c,column:h},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(k);p&&(s=p[1],n=p[2])}r.func=j,l={name:s,message:n,url:d(),stack:[r]},e(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=h.onerror,h.onerror=l,r=!0)}function n(){r&&(h.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,e.apply(null,[a,!1].concat(b))}function p(a,b){var c=i.call(arguments,1);if(v){if(u===a)return;o()}var d=g.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),g.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,f,g=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,h=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,i=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,k=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,l=/\((\S*)(?::(\d+))(?::(\d+))\)/,m=a.stack.split("\n"),n=[],o=(/^(.*) is undefined$/.exec(a.message),0),p=m.length;o eval")>-1;r&&(b=k.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==o||c[5]||"undefined"==typeof a.columnNumber||(n[0].column=a.columnNumber+1),f={url:c[3],func:c[1]||j,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}if(!f.func&&f.line&&(f.func=j),f.url&&"blob:"===f.url.substr(0,5)){var s=new XMLHttpRequest;if(s.open("GET",f.url,!1),s.send(null),200===s.status){var t=s.responseText||"";t=t.slice(-300);var u=t.match(/\/\/# sourceMappingURL=(.*)$/);if(u){var v=u[1];"~"===v.charAt(0)&&(v=e()+v.slice(1)),f.url=v.slice(0,-4)}}}n.push(f)}return n.length?{name:a.name,message:a.message,url:d(),stack:n}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=j),a.stack.length>0&&a.stack[0].url===e.url){ +if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,e){for(var h,i,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==f&&o!==g.report){if(i={url:null,func:j,line:null,column:null},o.name?i.func=o.name:(h=k.exec(o.toString()))&&(i.func=h[1]),"undefined"==typeof i.func)try{i.func=h.input.substring(0,h.input.indexOf("{"))}catch(p){}m[""+o]?n=!0:m[""+o]=!0,l.push(i)}e&&l.splice(0,e);var q={name:a.name,message:a.message,url:d(),stack:l};return b(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),q}function f(b,e){var f=null;e=null==e?0:+e;try{if(f=a(b))return f}catch(h){if(g.debug)throw h}try{if(f=c(b,e+1))return f}catch(h){if(g.debug)throw h}return{name:b.name,message:b.message,url:d()}}return f.augmentStackTraceWithInitialElement=b,f.computeStackTraceFromStackProp=a,f}(),b.exports=g}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{8:8}],10:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}],11:[function(a,b,c){function d(a,b){var c=(65535&a)+(65535&b),d=(a>>16)+(b>>16)+(c>>16);return d<<16|65535&c}function e(a,b){return a<>>32-b}function f(a,b,c,f,g,h){return d(e(d(d(b,a),d(f,h)),g),c)}function g(a,b,c,d,e,g,h){return f(b&c|~b&d,a,b,e,g,h)}function h(a,b,c,d,e,g,h){return f(b&d|c&~d,a,b,e,g,h)}function i(a,b,c,d,e,g,h){return f(b^c^d,a,b,e,g,h)}function j(a,b,c,d,e,g,h){return f(c^(b|~d),a,b,e,g,h)}function k(a,b){a[b>>5]|=128<>>9<<4)+14]=b;var c,e,f,k,l,m=1732584193,n=-271733879,o=-1732584194,p=271733878;for(c=0;c>5]>>>b%32&255);return c}function m(a){var b,c=[];for(c[(a.length>>2)-1]=void 0,b=0;b>5]|=(255&a.charCodeAt(b/8))<16&&(e=k(e,8*a.length)),c=0;c<16;c+=1)f[c]=909522486^e[c],g[c]=1549556828^e[c];return d=k(f.concat(m(b)),512+8*b.length),l(k(g.concat(d),640))}function p(a){var b,c,d="0123456789abcdef",e="";for(c=0;c>>4&15)+d.charAt(15&b);return e}function q(a){return unescape(encodeURIComponent(a))}function r(a){return n(q(a))}function s(a){return p(r(a))}function t(a,b){return o(q(a),q(b))}function u(a,b){return p(t(a,b))}function v(a,b,c){return b?c?t(b,a):u(b,a):c?r(a):s(a)}b.exports=v},{}]},{},[7,1,2,3])(7)}); //# sourceMappingURL=raven.min.js.map \ No newline at end of file diff --git a/dist/ember,require,vue/raven.min.js.map b/dist/ember,require,vue/raven.min.js.map index 767c20187904..7a4c0f02e7c3 100644 --- a/dist/ember,require,vue/raven.min.js.map +++ b/dist/ember,require,vue/raven.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","emberPlugin","Ember","_oldOnError","onerror","error","captureException","RSVP","on","reason","extra","context","captureMessage","addPlugin","7","2","requirePlugin","wrap","deep","3","formatComponentName","vm","$root","name","_isVue","$options","_componentTag","__file","vuePlugin","Vue","config","errorHandler","info","metaData","Object","prototype","toString","componentName","propsData","lifecycleHook","4","RavenConfigError","message","constructor","5","utils","wrapMethod","console","level","callback","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","msg","safeJoin","data","logger","Function","apply","8","6","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","sanitizeKeys","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isError","isObject","isPlainObject","isErrorEvent","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","sanitize","wrapConsoleMethod","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","dsn","options","_logDebug","globalOptions","key","value","setDSN","push","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","substr","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","func","undefined","_before","wrapped","_ignoreNextOnError","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","T","event","unhandledPromiseRejection","B","_promiseRejectionHandler","bind","addEventListener","P","removeEventListener","ex","trimHeadFrames","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","U","currentOptions","exKeys","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","setDataCallback","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","L","setTimeout","$","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","_","evtName","_keypressTimeout","target","category","ba","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","ca","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","C","_originalFunctionToString","Q","D","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","type","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","E","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","R","builtin","S","F","installer","concat","G","str","m","exec","allowSecretKey","J","port","A","V","stackInfo","_triggerEvent","_processException","lineno","X","frame","_normalizeFrame","in_app","ga","stackInfoUrl","normalized","filename","line","colno","column","function","fa","prefixedMessage","exception","values","culprit","ha","request","Referer","breadcrumbs","_trimBreadcrumbs","ia","urlProp","urlProps","ja","httpData","userAgent","User-Agent","referrer","y","_backoffDuration","_backoffStart","ma","na","current","last","oa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Y","baseData","project","platform","_getHttpData","serverName","server_name","_sanitizeData","forEach","random","_sendProcessedPayload","pa","ra","qa","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","sa","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","open","setRequestHeader","send","ta","hash","evaluated","z","Z","setUser","setReleaseContext","10","11","9","RavenConstructor","_Raven","noConflict","Client","what","supportsErrorEvent","ErrorEvent","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","wrappedCallback","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","sanitizeMask","safeInput","o_O","getLocationHref","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","charAt","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","string","raw"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file +{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","emberPlugin","Ember","_oldOnError","onerror","error","captureException","RSVP","on","reason","extra","context","captureMessage","addPlugin","7","2","requirePlugin","wrap","deep","3","formatComponentName","vm","$root","name","_isVue","$options","_componentTag","__file","vuePlugin","Vue","config","errorHandler","info","metaData","Object","prototype","toString","componentName","propsData","lifecycleHook","4","RavenConfigError","message","constructor","5","utils","wrapMethod","console","level","callback","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","msg","safeJoin","data","logger","Function","apply","8","6","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","sanitizeKeys","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isErrorEvent","isDOMError","isDOMException","isError","isObject","isPlainObject","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","sanitize","wrapConsoleMethod","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","dsn","options","_logDebug","globalOptions","key","value","setDSN","push","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","substr","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","func","undefined","_before","wrapped","_ignoreNextOnError","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","T","event","unhandledPromiseRejection","B","_promiseRejectionHandler","bind","addEventListener","P","removeEventListener","ex","trimHeadFrames","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","U","currentOptions","exKeys","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","setDataCallback","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","L","setTimeout","$","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","_","evtName","_keypressTimeout","target","category","ba","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","ca","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","C","_originalFunctionToString","Q","D","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","type","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","E","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","R","builtin","S","F","installer","concat","G","str","m","exec","allowSecretKey","J","port","A","V","stackInfo","_triggerEvent","_processException","lineno","X","frame","_normalizeFrame","in_app","ga","stackInfoUrl","normalized","filename","line","colno","column","function","fa","prefixedMessage","exception","values","culprit","ha","request","Referer","breadcrumbs","_trimBreadcrumbs","ia","urlProp","urlProps","ja","httpData","userAgent","User-Agent","referrer","y","_backoffDuration","_backoffStart","ma","na","current","last","oa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Y","baseData","project","platform","_getHttpData","serverName","server_name","_sanitizeData","forEach","random","_sendProcessedPayload","pa","ra","qa","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","sa","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","open","setRequestHeader","send","ta","hash","evaluated","z","Z","setUser","setReleaseContext","10","11","9","RavenConstructor","_Raven","noConflict","Client","what","supportsErrorEvent","ErrorEvent","supportsDOMError","DOMError","supportsDOMException","DOMException","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","wrappedCallback","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","sanitizeMask","safeInput","o_O","getLocationHref","getLocationOrigin","origin","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","responseText","sourceMaps","sourceMapAddress","charAt","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","string","raw"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file diff --git a/dist/ember,require/raven.js b/dist/ember,require/raven.js index 8396d99fb049..ad42a64c84c8 100644 --- a/dist/ember,require/raven.js +++ b/dist/ember,require/raven.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.24.2 (540f32b) | github.com/getsentry/raven-js */ +/*! Raven.js 3.25.0 (80dffad) | github.com/getsentry/raven-js */ /* * Includes TraceKit @@ -124,10 +124,12 @@ var md5 = _dereq_(10); var RavenConfigError = _dereq_(3); var utils = _dereq_(7); +var isErrorEvent = utils.isErrorEvent; +var isDOMError = utils.isDOMError; +var isDOMException = utils.isDOMException; var isError = utils.isError; var isObject = utils.isObject; var isPlainObject = utils.isPlainObject; -var isErrorEvent = utils.isErrorEvent; var isUndefined = utils.isUndefined; var isFunction = utils.isFunction; var isString = utils.isString; @@ -255,7 +257,7 @@ Raven.prototype = { // webpack (using a build step causes webpack #1617). Grunt verifies that // this value matches package.json during build. // See: https://github.com/getsentry/raven-js/issues/465 - VERSION: '3.24.2', + VERSION: '3.25.0', debug: false, @@ -587,6 +589,23 @@ Raven.prototype = { if (isErrorEvent(ex) && ex.error) { // If it is an ErrorEvent with `error` property, extract it to get actual Error ex = ex.error; + } else if (isDOMError(ex) || isDOMException(ex)) { + // If it is a DOMError or DOMException (which are legacy APIs, but still supported in some browsers) + // then we just extract the name and message, as they don't provide anything else + // https://developer.mozilla.org/en-US/docs/Web/API/DOMError + // https://developer.mozilla.org/en-US/docs/Web/API/DOMException + var name = ex.name || (isDOMError(ex) ? 'DOMError' : 'DOMException'); + var message = ex.message ? name + ': ' + ex.message : name; + + return this.captureMessage( + message, + objectMerge(options, { + // neither DOMError or DOMException provide stack trace and we most likely wont get it this way as well + // but it's barely any overhead so we may at least try + stacktrace: true, + trimHeadFrames: options.trimHeadFrames + 1 + }) + ); } else if (isError(ex)) { // we have a real Error object ex = ex; @@ -598,6 +617,7 @@ Raven.prototype = { ex = new Error(options.message); } else { // If none of previous checks were valid, then it means that + // it's not a DOMError/DOMException // it's not a plain Object // it's not a valid ErrorEvent (one with an error property) // it's not an Error @@ -2370,7 +2390,7 @@ function isObject(what) { // Yanked from https://git.io/vS8DV re-used under CC0 // with some tiny modifications function isError(value) { - switch ({}.toString.call(value)) { + switch (Object.prototype.toString.call(value)) { case '[object Error]': return true; case '[object Exception]': @@ -2383,7 +2403,15 @@ function isError(value) { } function isErrorEvent(value) { - return supportsErrorEvent() && {}.toString.call(value) === '[object ErrorEvent]'; + return Object.prototype.toString.call(value) === '[object ErrorEvent]'; +} + +function isDOMError(value) { + return Object.prototype.toString.call(value) === '[object DOMError]'; +} + +function isDOMException(value) { + return Object.prototype.toString.call(value) === '[object DOMException]'; } function isUndefined(what) { @@ -2426,6 +2454,24 @@ function supportsErrorEvent() { } } +function supportsDOMError() { + try { + new DOMError(''); // eslint-disable-line no-new + return true; + } catch (e) { + return false; + } +} + +function supportsDOMException() { + try { + new DOMException(''); // eslint-disable-line no-new + return true; + } catch (e) { + return false; + } +} + function supportsFetch() { if (!('fetch' in _window)) return false; @@ -2941,6 +2987,8 @@ module.exports = { isObject: isObject, isError: isError, isErrorEvent: isErrorEvent, + isDOMError: isDOMError, + isDOMException: isDOMException, isUndefined: isUndefined, isFunction: isFunction, isPlainObject: isPlainObject, @@ -2948,6 +2996,8 @@ module.exports = { isArray: isArray, isEmptyObject: isEmptyObject, supportsErrorEvent: supportsErrorEvent, + supportsDOMError: supportsDOMError, + supportsDOMException: supportsDOMException, supportsFetch: supportsFetch, supportsReferrerPolicy: supportsReferrerPolicy, supportsPromiseRejectionEvent: supportsPromiseRejectionEvent, @@ -3007,10 +3057,14 @@ var ERROR_TYPES_RE = /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Ran function getLocationHref() { if (typeof document === 'undefined' || document.location == null) return ''; - return document.location.href; } +function getLocationOrigin() { + if (typeof document === 'undefined' || document.location == null) return ''; + return document.location.origin; +} + /** * TraceKit.report: cross-browser processing of unhandled exceptions * @@ -3418,6 +3472,44 @@ TraceKit.computeStackTrace = (function computeStackTraceWrapper() { element.func = UNKNOWN_FUNCTION; } + if (element.url && element.url.substr(0, 5) === 'blob:') { + // Special case for handling JavaScript loaded into a blob. + // We use a synchronous AJAX request here as a blob is already in + // memory - it's not making a network request. This will generate a warning + // in the browser console, but there has already been an error so that's not + // that much of an issue. + var xhr = new XMLHttpRequest(); + xhr.open('GET', element.url, false); + xhr.send(null); + + // If we failed to download the source, skip this patch + if (xhr.status === 200) { + var source = xhr.responseText || ''; + + // We trim the source down to the last 300 characters as sourceMappingURL is always at the end of the file. + // Why 300? To be in line with: https://github.com/getsentry/sentry/blob/4af29e8f2350e20c28a6933354e4f42437b4ba42/src/sentry/lang/javascript/processor.py#L164-L175 + source = source.slice(-300); + + // Now we dig out the source map URL + var sourceMaps = source.match(/\/\/# sourceMappingURL=(.*)$/); + + // If we don't find a source map comment or we find more than one, continue on to the next element. + if (sourceMaps) { + var sourceMapAddress = sourceMaps[1]; + + // Now we check to see if it's a relative URL. + // If it is, convert it to an absolute one. + if (sourceMapAddress.charAt(0) === '~') { + sourceMapAddress = getLocationOrigin() + sourceMapAddress.slice(1); + } + + // Now we strip the '.map' off of the end of the URL and update the + // element so that Sentry can match the map to the blob. + element.url = sourceMapAddress.slice(0, -4); + } + } + } + stack.push(element); } diff --git a/dist/ember,require/raven.min.js b/dist/ember,require/raven.min.js index 7b2b8836447d..b36a4672c9fe 100644 --- a/dist/ember,require/raven.min.js +++ b/dist/ember,require/raven.min.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.24.2 (540f32b) | github.com/getsentry/raven-js */ -!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.Raven=a()}}(function(){var a;return function b(a,c,d){function e(g,h){if(!c[g]){if(!a[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};a[g][0].call(k.exports,function(b){var c=a[g][1][b];return e(c?c:b)},k,k.exports,b,a,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;gthis.k.maxBreadcrumbs&&this.u.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.r.push([a,b]),this.n&&this.F(),this},setUserContext:function(a){return this.j.user=a,this},setExtraContext:function(a){return this.Z("extra",a),this},setTagsContext:function(a){return this.Z("tags",a),this},clearContext:function(){return this.j={},this},getContext:function(){return JSON.parse(h(this.j))},setEnvironment:function(a){return this.k.environment=a,this},setRelease:function(a){return this.k.release=a,this},setDataCallback:function(a){var b=this.k.dataCallback;return this.k.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.k.breadcrumbCallback;return this.k.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.k.shouldSendCallback;return this.k.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.k.transport=a,this},lastException:function(){return this.d},lastEventId:function(){return this.f},isSetup:function(){return!!this.a&&(!!this.g||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.z("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=P.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(Q){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.H;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.j.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.J(this.G(c)),h=Q.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(Q.head||Q.body).appendChild(h)}},L:function(){var a=this;this.m+=1,setTimeout(function(){a.m-=1})},$:function(a,b){var c,d;if(this.b){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),Q.createEvent?(c=Q.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=Q.createEventObject(),c.eventType=a);for(d in b)y(b,d)&&(c[d]=b[d]);if(Q.createEvent)Q.dispatchEvent(c);else try{Q.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},_:function(a){var b=this;return function(c){if(b.aa=null,b.v!==c){b.v=c;var d;try{d=C(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ba:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.aa;g||a._("input")(c),clearTimeout(g),a.aa=setTimeout(function(){a.aa=null},b)}}},ca:function(a,b){var c=F(this.w.href),d=F(b),e=F(a);this.x=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},C:function(){var a=this;a.da=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.M?a.da.apply(this.O,arguments):a.da.apply(this,arguments)}},Q:function(){this.da&&(Function.prototype.toString=this.da)},D:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.ca(b.x,c+""),a.apply(this,arguments)}};G(history,"pushState",j,d),G(history,"replaceState",j,d)}if(c.console&&"console"in P&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};u(["debug","info","warn","error","log"],function(a,b){M(console,b,k)})}},R:function(){for(var a;this.t.length;){a=this.t.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},S:function(){for(var a in this.q)this.p[a]=this.q[a]},F:function(){var a=this;u(this.r,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},G:function(a){var b=O.exec(a),c={},d=7;try{for(;d--;)c[N[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.k.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},J:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},A:function(){this.m||this.V.apply(this,arguments)},V:function(a,b){var c=this.X(a,b);this.$("handle",{stackInfo:a,options:b}),this.fa(a.name,a.message,a.url,a.lineno,c,b)},X:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(u(a.stack,function(b,e){var f=c.ga(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.u,0)}),this.j.user&&(a.user=this.j.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),a=this.pa(a),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||t(a[b]))&&delete a[b]}),q(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!t(a)&&(!q(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.ma()?void this.z("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function B(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&j(b))for(c=b.split(/\s+/),f=0;fc?M(a,b-1):d}function N(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?T:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function O(a,b){function c(a){return k(a)?a.map(function(a){return c(a)}):i(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!k(b)||k(b)&&0===b.length)return a;var d,e=w(b),f="********";try{d=JSON.parse(P(a))}catch(g){return a}return c(d)}var P=a(9),Q="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},R=3,S=51200,T=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isUndefined:g,isFunction:h,isPlainObject:i,isString:j,isArray:k,isEmptyObject:l,supportsErrorEvent:m,supportsFetch:n,supportsReferrerPolicy:o,supportsPromiseRejectionEvent:p,wrappedCallback:q,each:r,objectMerge:s,truncate:u,objectFrozen:t,hasKey:v,joinRegExp:w,urlencode:x,uuid4:z,htmlTreeAsString:A,htmlElementAsString:B,isSameException:E,isSameStacktrace:F,parseUrl:y,fill:G,safeJoin:H,serializeException:M,serializeKeysForMessage:N,sanitize:O}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{9:9}],8:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}var e=a(7),f={collectWindowErrors:!0,debug:!1},g="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},h=[].slice,i="?",j=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;f.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function k(a,b){var c=null;if(!b||f.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(h.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,g,h){var l=null,m=e.isErrorEvent(h)?h.error:h,n=e.isErrorEvent(a)?a.message:a;if(v)f.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&e.isError(m))l=f.computeStackTrace(m),k(l,!0);else{var p,r={url:b,line:c,column:g},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(j);p&&(s=p[1],n=p[2])}r.func=i,l={name:s,message:n,url:d(),stack:[r]},k(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=g.onerror,g.onerror=l,r=!0)}function n(){r&&(g.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,k.apply(null,[a,!1].concat(b))}function p(a,b){var c=h.call(arguments,1);if(v){if(u===a)return;o()}var d=f.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),f.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,e,f=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,g=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,h=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,j=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,k=/\((\S*)(?::(\d+))(?::(\d+))\)/,l=a.stack.split("\n"),m=[],n=(/^(.*) is undefined$/.exec(a.message),0),o=l.length;n eval")>-1;q&&(b=j.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==n||c[5]||"undefined"==typeof a.columnNumber||(m[0].column=a.columnNumber+1),e={url:c[3],func:c[1]||i,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}!e.func&&e.line&&(e.func=i),m.push(e)}return m.length?{name:a.name,message:a.message,url:d(),stack:m}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=i),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,g){for(var h,j,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==e&&o!==f.report){if(j={url:null,func:i,line:null,column:null},o.name?j.func=o.name:(h=k.exec(o.toString()))&&(j.func=h[1]),"undefined"==typeof j.func)try{j.func=h.input.substring(0,h.input.indexOf("{"))}catch(p){}m[""+o]?n=!0:m[""+o]=!0,l.push(j)}g&&l.splice(0,g);var q={name:a.name,message:a.message,url:d(),stack:l};return b(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),q}function e(b,e){var g=null;e=null==e?0:+e;try{if(g=a(b))return g}catch(h){if(f.debug)throw h}try{if(g=c(b,e+1))return g}catch(h){if(f.debug)throw h}return{name:b.name,message:b.message,url:d()}}return e.augmentStackTraceWithInitialElement=b,e.computeStackTraceFromStackProp=a,e}(),b.exports=f}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{7:7}],9:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this); -~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}],10:[function(a,b,c){function d(a,b){var c=(65535&a)+(65535&b),d=(a>>16)+(b>>16)+(c>>16);return d<<16|65535&c}function e(a,b){return a<>>32-b}function f(a,b,c,f,g,h){return d(e(d(d(b,a),d(f,h)),g),c)}function g(a,b,c,d,e,g,h){return f(b&c|~b&d,a,b,e,g,h)}function h(a,b,c,d,e,g,h){return f(b&d|c&~d,a,b,e,g,h)}function i(a,b,c,d,e,g,h){return f(b^c^d,a,b,e,g,h)}function j(a,b,c,d,e,g,h){return f(c^(b|~d),a,b,e,g,h)}function k(a,b){a[b>>5]|=128<>>9<<4)+14]=b;var c,e,f,k,l,m=1732584193,n=-271733879,o=-1732584194,p=271733878;for(c=0;c>5]>>>b%32&255);return c}function m(a){var b,c=[];for(c[(a.length>>2)-1]=void 0,b=0;b>5]|=(255&a.charCodeAt(b/8))<16&&(e=k(e,8*a.length)),c=0;c<16;c+=1)f[c]=909522486^e[c],g[c]=1549556828^e[c];return d=k(f.concat(m(b)),512+8*b.length),l(k(g.concat(d),640))}function p(a){var b,c,d="0123456789abcdef",e="";for(c=0;c>>4&15)+d.charAt(15&b);return e}function q(a){return unescape(encodeURIComponent(a))}function r(a){return n(q(a))}function s(a){return p(r(a))}function t(a,b){return o(q(a),q(b))}function u(a,b){return p(t(a,b))}function v(a,b,c){return b?c?t(b,a):u(b,a):c?r(a):s(a)}b.exports=v},{}]},{},[6,1,2])(6)}); +/*! Raven.js 3.25.0 (80dffad) | github.com/getsentry/raven-js */ +!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.Raven=a()}}(function(){var a;return function b(a,c,d){function e(g,h){if(!c[g]){if(!a[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};a[g][0].call(k.exports,function(b){var c=a[g][1][b];return e(c?c:b)},k,k.exports,b,a,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;gthis.k.maxBreadcrumbs&&this.u.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.r.push([a,b]),this.n&&this.F(),this},setUserContext:function(a){return this.j.user=a,this},setExtraContext:function(a){return this.Z("extra",a),this},setTagsContext:function(a){return this.Z("tags",a),this},clearContext:function(){return this.j={},this},getContext:function(){return JSON.parse(h(this.j))},setEnvironment:function(a){return this.k.environment=a,this},setRelease:function(a){return this.k.release=a,this},setDataCallback:function(a){var b=this.k.dataCallback;return this.k.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.k.breadcrumbCallback;return this.k.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.k.shouldSendCallback;return this.k.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.k.transport=a,this},lastException:function(){return this.d},lastEventId:function(){return this.f},isSetup:function(){return!!this.a&&(!!this.g||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.z("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=R.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(S){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.H;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.j.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.J(this.G(c)),h=S.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(S.head||S.body).appendChild(h)}},L:function(){var a=this;this.m+=1,setTimeout(function(){a.m-=1})},$:function(a,b){var c,d;if(this.b){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),S.createEvent?(c=S.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=S.createEventObject(),c.eventType=a);for(d in b)A(b,d)&&(c[d]=b[d]);if(S.createEvent)S.dispatchEvent(c);else try{S.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},_:function(a){var b=this;return function(c){if(b.aa=null,b.v!==c){b.v=c;var d;try{d=E(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ba:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.aa;g||a._("input")(c),clearTimeout(g),a.aa=setTimeout(function(){a.aa=null},b)}}},ca:function(a,b){var c=H(this.w.href),d=H(b),e=H(a);this.x=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},C:function(){var a=this;a.da=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.M?a.da.apply(this.O,arguments):a.da.apply(this,arguments)}},Q:function(){this.da&&(Function.prototype.toString=this.da)},D:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.ca(b.x,c+""),a.apply(this,arguments)}};I(history,"pushState",j,d),I(history,"replaceState",j,d)}if(c.console&&"console"in R&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};w(["debug","info","warn","error","log"],function(a,b){O(console,b,k)})}},R:function(){for(var a;this.t.length;){a=this.t.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},S:function(){for(var a in this.q)this.p[a]=this.q[a]},F:function(){var a=this;w(this.r,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},G:function(a){var b=Q.exec(a),c={},d=7;try{for(;d--;)c[P[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.k.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},J:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},A:function(){this.m||this.V.apply(this,arguments)},V:function(a,b){var c=this.X(a,b);this.$("handle",{stackInfo:a,options:b}),this.fa(a.name,a.message,a.url,a.lineno,c,b)},X:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(w(a.stack,function(b,e){var f=c.ga(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.u,0)}),this.j.user&&(a.user=this.j.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),a=this.pa(a),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||v(a[b]))&&delete a[b]}),s(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!v(a)&&(!s(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.ma()?void this.z("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function F(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&l(b))for(c=b.split(/\s+/),f=0;fc?Q(a,b-1):d}function R(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?X:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function S(a,b){function c(a){return m(a)?a.map(function(a){return c(a)}):k(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!m(b)||m(b)&&0===b.length)return a;var d,e=A(b),f="********";try{d=JSON.parse(T(a))}catch(g){return a}return c(d)}var T=a(9),U="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},V=3,W=51200,X=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isDOMError:g,isDOMException:h,isUndefined:i,isFunction:j,isPlainObject:k,isString:l,isArray:m,isEmptyObject:n,supportsErrorEvent:o,supportsDOMError:p,supportsDOMException:q,supportsFetch:r,supportsReferrerPolicy:s,supportsPromiseRejectionEvent:t,wrappedCallback:u,each:v,objectMerge:w,truncate:y,objectFrozen:x,hasKey:z,joinRegExp:A,urlencode:B,uuid4:D,htmlTreeAsString:E,htmlElementAsString:F,isSameException:I,isSameStacktrace:J,parseUrl:C,fill:K,safeJoin:L,serializeException:Q,serializeKeysForMessage:R,sanitize:S}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{9:9}],8:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}function e(){return"undefined"==typeof document||null==document.location?"":document.location.origin}var f=a(7),g={collectWindowErrors:!0,debug:!1},h="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},i=[].slice,j="?",k=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;g.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function e(a,b){var c=null;if(!b||g.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(i.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,h,i){var l=null,m=f.isErrorEvent(i)?i.error:i,n=f.isErrorEvent(a)?a.message:a;if(v)g.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&f.isError(m))l=g.computeStackTrace(m),e(l,!0);else{var p,r={url:b,line:c,column:h},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(k);p&&(s=p[1],n=p[2])}r.func=j,l={name:s,message:n,url:d(),stack:[r]},e(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=h.onerror,h.onerror=l,r=!0)}function n(){r&&(h.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,e.apply(null,[a,!1].concat(b))}function p(a,b){var c=i.call(arguments,1);if(v){if(u===a)return;o()}var d=g.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),g.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,f,g=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,h=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,i=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,k=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,l=/\((\S*)(?::(\d+))(?::(\d+))\)/,m=a.stack.split("\n"),n=[],o=(/^(.*) is undefined$/.exec(a.message),0),p=m.length;o eval")>-1;r&&(b=k.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==o||c[5]||"undefined"==typeof a.columnNumber||(n[0].column=a.columnNumber+1),f={url:c[3],func:c[1]||j,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}if(!f.func&&f.line&&(f.func=j),f.url&&"blob:"===f.url.substr(0,5)){var s=new XMLHttpRequest;if(s.open("GET",f.url,!1),s.send(null),200===s.status){var t=s.responseText||"";t=t.slice(-300);var u=t.match(/\/\/# sourceMappingURL=(.*)$/);if(u){var v=u[1];"~"===v.charAt(0)&&(v=e()+v.slice(1)),f.url=v.slice(0,-4)}}}n.push(f)}return n.length?{name:a.name,message:a.message,url:d(),stack:n}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=j),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,e){for(var h,i,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==f&&o!==g.report){if(i={url:null,func:j,line:null,column:null},o.name?i.func=o.name:(h=k.exec(o.toString()))&&(i.func=h[1]),"undefined"==typeof i.func)try{i.func=h.input.substring(0,h.input.indexOf("{"))}catch(p){}m[""+o]?n=!0:m[""+o]=!0,l.push(i)}e&&l.splice(0,e);var q={name:a.name,message:a.message,url:d(), +stack:l};return b(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),q}function f(b,e){var f=null;e=null==e?0:+e;try{if(f=a(b))return f}catch(h){if(g.debug)throw h}try{if(f=c(b,e+1))return f}catch(h){if(g.debug)throw h}return{name:b.name,message:b.message,url:d()}}return f.augmentStackTraceWithInitialElement=b,f.computeStackTraceFromStackProp=a,f}(),b.exports=g}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{7:7}],9:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}],10:[function(a,b,c){function d(a,b){var c=(65535&a)+(65535&b),d=(a>>16)+(b>>16)+(c>>16);return d<<16|65535&c}function e(a,b){return a<>>32-b}function f(a,b,c,f,g,h){return d(e(d(d(b,a),d(f,h)),g),c)}function g(a,b,c,d,e,g,h){return f(b&c|~b&d,a,b,e,g,h)}function h(a,b,c,d,e,g,h){return f(b&d|c&~d,a,b,e,g,h)}function i(a,b,c,d,e,g,h){return f(b^c^d,a,b,e,g,h)}function j(a,b,c,d,e,g,h){return f(c^(b|~d),a,b,e,g,h)}function k(a,b){a[b>>5]|=128<>>9<<4)+14]=b;var c,e,f,k,l,m=1732584193,n=-271733879,o=-1732584194,p=271733878;for(c=0;c>5]>>>b%32&255);return c}function m(a){var b,c=[];for(c[(a.length>>2)-1]=void 0,b=0;b>5]|=(255&a.charCodeAt(b/8))<16&&(e=k(e,8*a.length)),c=0;c<16;c+=1)f[c]=909522486^e[c],g[c]=1549556828^e[c];return d=k(f.concat(m(b)),512+8*b.length),l(k(g.concat(d),640))}function p(a){var b,c,d="0123456789abcdef",e="";for(c=0;c>>4&15)+d.charAt(15&b);return e}function q(a){return unescape(encodeURIComponent(a))}function r(a){return n(q(a))}function s(a){return p(r(a))}function t(a,b){return o(q(a),q(b))}function u(a,b){return p(t(a,b))}function v(a,b,c){return b?c?t(b,a):u(b,a):c?r(a):s(a)}b.exports=v},{}]},{},[6,1,2])(6)}); //# sourceMappingURL=raven.min.js.map \ No newline at end of file diff --git a/dist/ember,require/raven.min.js.map b/dist/ember,require/raven.min.js.map index edc239db1128..3dd184233df0 100644 --- a/dist/ember,require/raven.min.js.map +++ b/dist/ember,require/raven.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","emberPlugin","Ember","_oldOnError","onerror","error","captureException","RSVP","on","reason","extra","context","captureMessage","addPlugin","6","2","requirePlugin","wrap","deep","3","RavenConfigError","message","name","prototype","constructor","4","utils","wrapMethod","console","level","callback","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","msg","safeJoin","data","logger","Function","apply","7","5","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","sanitizeKeys","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isError","isObject","isPlainObject","isErrorEvent","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","sanitize","wrapConsoleMethod","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","config","dsn","options","_logDebug","globalOptions","key","value","setDSN","push","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","toString","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","substr","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","func","undefined","_before","wrapped","_ignoreNextOnError","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","T","event","unhandledPromiseRejection","B","_promiseRejectionHandler","bind","addEventListener","P","removeEventListener","ex","trimHeadFrames","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","U","currentOptions","exKeys","Object","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","setDataCallback","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","L","setTimeout","$","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","_","evtName","_keypressTimeout","target","category","ba","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","ca","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","C","_originalFunctionToString","Q","D","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","type","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","E","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","R","builtin","S","F","installer","concat","G","str","m","exec","allowSecretKey","J","port","A","V","stackInfo","_triggerEvent","_processException","lineno","X","frame","_normalizeFrame","in_app","ga","stackInfoUrl","normalized","filename","line","colno","column","function","fa","prefixedMessage","exception","values","culprit","ha","request","Referer","breadcrumbs","_trimBreadcrumbs","ia","urlProp","urlProps","ja","httpData","userAgent","User-Agent","referrer","y","_backoffDuration","_backoffStart","ma","na","current","last","oa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Y","baseData","project","platform","_getHttpData","serverName","server_name","_sanitizeData","forEach","random","_sendProcessedPayload","pa","ra","qa","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","sa","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","open","setRequestHeader","send","ta","hash","evaluated","z","Z","setUser","setReleaseContext","10","8","9","RavenConstructor","_Raven","noConflict","Client","what","supportsErrorEvent","ErrorEvent","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","wrappedCallback","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","sanitizeMask","safeInput","o_O","getLocationHref","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","charAt","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","string","raw"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file +{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","emberPlugin","Ember","_oldOnError","onerror","error","captureException","RSVP","on","reason","extra","context","captureMessage","addPlugin","6","2","requirePlugin","wrap","deep","3","RavenConfigError","message","name","prototype","constructor","4","utils","wrapMethod","console","level","callback","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","msg","safeJoin","data","logger","Function","apply","7","5","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","sanitizeKeys","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isErrorEvent","isDOMError","isDOMException","isError","isObject","isPlainObject","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","sanitize","wrapConsoleMethod","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","config","dsn","options","_logDebug","globalOptions","key","value","setDSN","push","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","toString","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","substr","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","func","undefined","_before","wrapped","_ignoreNextOnError","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","T","event","unhandledPromiseRejection","B","_promiseRejectionHandler","bind","addEventListener","P","removeEventListener","ex","trimHeadFrames","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","U","currentOptions","exKeys","Object","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","setDataCallback","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","L","setTimeout","$","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","_","evtName","_keypressTimeout","target","category","ba","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","ca","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","C","_originalFunctionToString","Q","D","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","type","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","E","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","R","builtin","S","F","installer","concat","G","str","m","exec","allowSecretKey","J","port","A","V","stackInfo","_triggerEvent","_processException","lineno","X","frame","_normalizeFrame","in_app","ga","stackInfoUrl","normalized","filename","line","colno","column","function","fa","prefixedMessage","exception","values","culprit","ha","request","Referer","breadcrumbs","_trimBreadcrumbs","ia","urlProp","urlProps","ja","httpData","userAgent","User-Agent","referrer","y","_backoffDuration","_backoffStart","ma","na","current","last","oa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Y","baseData","project","platform","_getHttpData","serverName","server_name","_sanitizeData","forEach","random","_sendProcessedPayload","pa","ra","qa","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","sa","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","open","setRequestHeader","send","ta","hash","evaluated","z","Z","setUser","setReleaseContext","10","8","9","RavenConstructor","_Raven","noConflict","Client","what","supportsErrorEvent","ErrorEvent","supportsDOMError","DOMError","supportsDOMException","DOMException","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","wrappedCallback","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","sanitizeMask","safeInput","o_O","getLocationHref","getLocationOrigin","origin","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","responseText","sourceMaps","sourceMapAddress","charAt","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","string","raw"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file diff --git a/dist/ember,vue/raven.js b/dist/ember,vue/raven.js index bf605775454b..43abbf26c4db 100644 --- a/dist/ember,vue/raven.js +++ b/dist/ember,vue/raven.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.24.2 (540f32b) | github.com/getsentry/raven-js */ +/*! Raven.js 3.25.0 (80dffad) | github.com/getsentry/raven-js */ /* * Includes TraceKit @@ -157,10 +157,12 @@ var md5 = _dereq_(10); var RavenConfigError = _dereq_(3); var utils = _dereq_(7); +var isErrorEvent = utils.isErrorEvent; +var isDOMError = utils.isDOMError; +var isDOMException = utils.isDOMException; var isError = utils.isError; var isObject = utils.isObject; var isPlainObject = utils.isPlainObject; -var isErrorEvent = utils.isErrorEvent; var isUndefined = utils.isUndefined; var isFunction = utils.isFunction; var isString = utils.isString; @@ -288,7 +290,7 @@ Raven.prototype = { // webpack (using a build step causes webpack #1617). Grunt verifies that // this value matches package.json during build. // See: https://github.com/getsentry/raven-js/issues/465 - VERSION: '3.24.2', + VERSION: '3.25.0', debug: false, @@ -620,6 +622,23 @@ Raven.prototype = { if (isErrorEvent(ex) && ex.error) { // If it is an ErrorEvent with `error` property, extract it to get actual Error ex = ex.error; + } else if (isDOMError(ex) || isDOMException(ex)) { + // If it is a DOMError or DOMException (which are legacy APIs, but still supported in some browsers) + // then we just extract the name and message, as they don't provide anything else + // https://developer.mozilla.org/en-US/docs/Web/API/DOMError + // https://developer.mozilla.org/en-US/docs/Web/API/DOMException + var name = ex.name || (isDOMError(ex) ? 'DOMError' : 'DOMException'); + var message = ex.message ? name + ': ' + ex.message : name; + + return this.captureMessage( + message, + objectMerge(options, { + // neither DOMError or DOMException provide stack trace and we most likely wont get it this way as well + // but it's barely any overhead so we may at least try + stacktrace: true, + trimHeadFrames: options.trimHeadFrames + 1 + }) + ); } else if (isError(ex)) { // we have a real Error object ex = ex; @@ -631,6 +650,7 @@ Raven.prototype = { ex = new Error(options.message); } else { // If none of previous checks were valid, then it means that + // it's not a DOMError/DOMException // it's not a plain Object // it's not a valid ErrorEvent (one with an error property) // it's not an Error @@ -2403,7 +2423,7 @@ function isObject(what) { // Yanked from https://git.io/vS8DV re-used under CC0 // with some tiny modifications function isError(value) { - switch ({}.toString.call(value)) { + switch (Object.prototype.toString.call(value)) { case '[object Error]': return true; case '[object Exception]': @@ -2416,7 +2436,15 @@ function isError(value) { } function isErrorEvent(value) { - return supportsErrorEvent() && {}.toString.call(value) === '[object ErrorEvent]'; + return Object.prototype.toString.call(value) === '[object ErrorEvent]'; +} + +function isDOMError(value) { + return Object.prototype.toString.call(value) === '[object DOMError]'; +} + +function isDOMException(value) { + return Object.prototype.toString.call(value) === '[object DOMException]'; } function isUndefined(what) { @@ -2459,6 +2487,24 @@ function supportsErrorEvent() { } } +function supportsDOMError() { + try { + new DOMError(''); // eslint-disable-line no-new + return true; + } catch (e) { + return false; + } +} + +function supportsDOMException() { + try { + new DOMException(''); // eslint-disable-line no-new + return true; + } catch (e) { + return false; + } +} + function supportsFetch() { if (!('fetch' in _window)) return false; @@ -2974,6 +3020,8 @@ module.exports = { isObject: isObject, isError: isError, isErrorEvent: isErrorEvent, + isDOMError: isDOMError, + isDOMException: isDOMException, isUndefined: isUndefined, isFunction: isFunction, isPlainObject: isPlainObject, @@ -2981,6 +3029,8 @@ module.exports = { isArray: isArray, isEmptyObject: isEmptyObject, supportsErrorEvent: supportsErrorEvent, + supportsDOMError: supportsDOMError, + supportsDOMException: supportsDOMException, supportsFetch: supportsFetch, supportsReferrerPolicy: supportsReferrerPolicy, supportsPromiseRejectionEvent: supportsPromiseRejectionEvent, @@ -3040,10 +3090,14 @@ var ERROR_TYPES_RE = /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Ran function getLocationHref() { if (typeof document === 'undefined' || document.location == null) return ''; - return document.location.href; } +function getLocationOrigin() { + if (typeof document === 'undefined' || document.location == null) return ''; + return document.location.origin; +} + /** * TraceKit.report: cross-browser processing of unhandled exceptions * @@ -3451,6 +3505,44 @@ TraceKit.computeStackTrace = (function computeStackTraceWrapper() { element.func = UNKNOWN_FUNCTION; } + if (element.url && element.url.substr(0, 5) === 'blob:') { + // Special case for handling JavaScript loaded into a blob. + // We use a synchronous AJAX request here as a blob is already in + // memory - it's not making a network request. This will generate a warning + // in the browser console, but there has already been an error so that's not + // that much of an issue. + var xhr = new XMLHttpRequest(); + xhr.open('GET', element.url, false); + xhr.send(null); + + // If we failed to download the source, skip this patch + if (xhr.status === 200) { + var source = xhr.responseText || ''; + + // We trim the source down to the last 300 characters as sourceMappingURL is always at the end of the file. + // Why 300? To be in line with: https://github.com/getsentry/sentry/blob/4af29e8f2350e20c28a6933354e4f42437b4ba42/src/sentry/lang/javascript/processor.py#L164-L175 + source = source.slice(-300); + + // Now we dig out the source map URL + var sourceMaps = source.match(/\/\/# sourceMappingURL=(.*)$/); + + // If we don't find a source map comment or we find more than one, continue on to the next element. + if (sourceMaps) { + var sourceMapAddress = sourceMaps[1]; + + // Now we check to see if it's a relative URL. + // If it is, convert it to an absolute one. + if (sourceMapAddress.charAt(0) === '~') { + sourceMapAddress = getLocationOrigin() + sourceMapAddress.slice(1); + } + + // Now we strip the '.map' off of the end of the URL and update the + // element so that Sentry can match the map to the blob. + element.url = sourceMapAddress.slice(0, -4); + } + } + } + stack.push(element); } diff --git a/dist/ember,vue/raven.min.js b/dist/ember,vue/raven.min.js index 0e47aac18f04..7738aa40c553 100644 --- a/dist/ember,vue/raven.min.js +++ b/dist/ember,vue/raven.min.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.24.2 (540f32b) | github.com/getsentry/raven-js */ -!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.Raven=a()}}(function(){return function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};b[g][0].call(k.exports,function(a){var c=b[g][1][a];return e(c?c:a)},k,k.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;g":"anonymous component")+(a._isVue&&a.$options.__file?" at "+a.$options.__file:"")}function e(a,b){if(b=b||window.Vue,b&&b.config){var c=b.config.errorHandler;b.config.errorHandler=function(b,e,f){var g={};"[object Object]"===Object.prototype.toString.call(e)&&(g.componentName=d(e),g.propsData=e.$options.propsData),"undefined"!=typeof f&&(g.lifecycleHook=f),a.captureException(b,{extra:g}),"function"==typeof c&&c.call(this,b,e,f)}}}b.exports=e,a(6).addPlugin(b.exports)},{6:6}],3:[function(a,b,c){function d(a){this.name="RavenConfigError",this.message=a}d.prototype=new Error,d.prototype.constructor=d,b.exports=d},{}],4:[function(a,b,c){var d=a(7),e=function(a,b,c){var e=a[b],f=a;if(b in a){var g="warn"===b?"warning":b;a[b]=function(){var a=[].slice.call(arguments),h=d.safeJoin(a," "),i={level:g,logger:"console",extra:{arguments:a}};"assert"===b?a[0]===!1&&(h="Assertion failed: "+(d.safeJoin(a.slice(1)," ")||"console.assert"),i.extra.arguments=a.slice(1),c&&c(h,i)):c&&c(h,i),e&&Function.prototype.apply.call(e,f,a)}}};b.exports={wrapMethod:e}},{7:7}],5:[function(a,b,c){(function(c){function d(){return+new Date}function e(a,b){return q(b)?function(c){return b(c,a)}:b}function f(){this.a=!("object"!=typeof JSON||!JSON.stringify),this.b=!p(Q),this.c=!p(R),this.d=null,this.e=null,this.f=null,this.g=null,this.h=null,this.i=null,this.j={},this.k={release:P.SENTRY_RELEASE&&P.SENTRY_RELEASE.id,logger:"javascript",ignoreErrors:[],ignoreUrls:[],whitelistUrls:[],includePaths:[],headers:null,collectWindowErrors:!0,captureUnhandledRejections:!0,maxMessageLength:0,maxUrlLength:250,stackTraceLimit:50,autoBreadcrumbs:!0,instrument:!0,sampleRate:1,sanitizeKeys:[]},this.l={method:"POST",keepalive:!0,referrerPolicy:I()?"origin":""},this.m=0,this.n=!1,this.o=Error.stackTraceLimit,this.p=P.console||{},this.q={},this.r=[],this.s=d(),this.t=[],this.u=[],this.v=null,this.w=P.location,this.x=this.w&&this.w.href,this.y();for(var a in this.p)this.q[a]=this.p[a]}var g=a(8),h=a(9),i=a(10),j=a(3),k=a(7),l=k.isError,m=k.isObject,n=k.isPlainObject,o=k.isErrorEvent,p=k.isUndefined,q=k.isFunction,r=k.isString,s=k.isArray,t=k.isEmptyObject,u=k.each,v=k.objectMerge,w=k.truncate,x=k.objectFrozen,y=k.hasKey,z=k.joinRegExp,A=k.urlencode,B=k.uuid4,C=k.htmlTreeAsString,D=k.isSameException,E=k.isSameStacktrace,F=k.parseUrl,G=k.fill,H=k.supportsFetch,I=k.supportsReferrerPolicy,J=k.serializeKeysForMessage,K=k.serializeException,L=k.sanitize,M=a(4).wrapMethod,N="source protocol user pass host port path".split(" "),O=/^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/,P="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},Q=P.document,R=P.navigator;f.prototype={VERSION:"3.24.2",debug:!1,TraceKit:g,config:function(a,b){var c=this;if(c.g)return this.z("error","Error: Raven has already been configured"),c;if(!a)return c;var d=c.k;b&&u(b,function(a,b){"tags"===a||"extra"===a||"user"===a?c.j[a]=b:d[a]=b}),c.setDSN(a),d.ignoreErrors.push(/^Script error\.?$/),d.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/),d.ignoreErrors=z(d.ignoreErrors),d.ignoreUrls=!!d.ignoreUrls.length&&z(d.ignoreUrls),d.whitelistUrls=!!d.whitelistUrls.length&&z(d.whitelistUrls),d.includePaths=z(d.includePaths),d.maxBreadcrumbs=Math.max(0,Math.min(d.maxBreadcrumbs||100,100));var e={xhr:!0,console:!0,dom:!0,location:!0,sentry:!0},f=d.autoBreadcrumbs;"[object Object]"==={}.toString.call(f)?f=v(e,f):f!==!1&&(f=e),d.autoBreadcrumbs=f;var h={tryCatch:!0},i=d.instrument;return"[object Object]"==={}.toString.call(i)?i=v(h,i):i!==!1&&(i=h),d.instrument=i,g.collectWindowErrors=!!d.collectWindowErrors,c},install:function(){var a=this;return a.isSetup()&&!a.n&&(g.report.subscribe(function(){a.A.apply(a,arguments)}),a.k.captureUnhandledRejections&&a.B(),a.C(),a.k.instrument&&a.k.instrument.tryCatch&&a.D(),a.k.autoBreadcrumbs&&a.E(),a.F(),a.n=!0),Error.stackTraceLimit=a.k.stackTraceLimit,this},setDSN:function(a){var b=this,c=b.G(a),d=c.path.lastIndexOf("/"),e=c.path.substr(1,d);b.H=a,b.h=c.user,b.I=c.pass&&c.pass.substr(1),b.i=c.path.substr(d+1),b.g=b.J(c),b.K=b.g+"/"+e+"api/"+b.i+"/store/",this.y()},context:function(a,b,c){return q(a)&&(c=b||[],b=a,a=void 0),this.wrap(a,b).apply(this,c)},wrap:function(a,b,c){function d(){var d=[],f=arguments.length,g=!a||a&&a.deep!==!1;for(c&&q(c)&&c.apply(this,arguments);f--;)d[f]=g?e.wrap(a,arguments[f]):arguments[f];try{return b.apply(this,d)}catch(h){throw e.L(),e.captureException(h,a),h}}var e=this;if(p(b)&&!q(a))return a;if(q(a)&&(b=a,a=void 0),!q(b))return b;try{if(b.M)return b;if(b.N)return b.N}catch(f){return b}for(var g in b)y(b,g)&&(d[g]=b[g]);return d.prototype=b.prototype,b.N=d,d.M=!0,d.O=b,d},uninstall:function(){return g.report.uninstall(),this.P(),this.Q(),this.R(),this.S(),Error.stackTraceLimit=this.o,this.n=!1,this},T:function(a){this.z("debug","Raven caught unhandled promise rejection:",a),this.captureException(a.reason,{extra:{unhandledPromiseRejection:!0}})},B:function(){return this.T=this.T.bind(this),P.addEventListener&&P.addEventListener("unhandledrejection",this.T),this},P:function(){return P.removeEventListener&&P.removeEventListener("unhandledrejection",this.T),this},captureException:function(a,b){if(b=v({trimHeadFrames:0},b?b:{}),o(a)&&a.error)a=a.error;else if(l(a))a=a;else{if(!n(a))return this.captureMessage(a,v(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}));b=this.U(b,a),a=new Error(b.message)}this.d=a;try{var c=g.computeStackTrace(a);this.V(c,b)}catch(d){if(a!==d)throw d}return this},U:function(a,b){var c=Object.keys(b).sort(),d=v(a,{message:"Non-Error exception captured with keys: "+J(c),fingerprint:[i(c)],extra:a.extra||{}});return d.extra.W=K(b),d},captureMessage:function(a,b){if(!this.k.ignoreErrors.test||!this.k.ignoreErrors.test(a)){b=b||{},a+="";var c,d=v({message:a},b);try{throw new Error(a)}catch(e){c=e}c.name=null;var f=g.computeStackTrace(c),h=s(f.stack)&&f.stack[1];h&&"Raven.captureException"===h.func&&(h=f.stack[2]);var i=h&&h.url||"";if((!this.k.ignoreUrls.test||!this.k.ignoreUrls.test(i))&&(!this.k.whitelistUrls.test||this.k.whitelistUrls.test(i))){if(this.k.stacktrace||b&&b.stacktrace){d.fingerprint=null==d.fingerprint?a:d.fingerprint,b=v({trimHeadFrames:0},b),b.trimHeadFrames+=1;var j=this.X(f,b);d.stacktrace={frames:j.reverse()}}return d.fingerprint&&(d.fingerprint=s(d.fingerprint)?d.fingerprint:[d.fingerprint]),this.Y(d),this}}},captureBreadcrumb:function(a){var b=v({timestamp:d()/1e3},a);if(q(this.k.breadcrumbCallback)){var c=this.k.breadcrumbCallback(b);if(m(c)&&!t(c))b=c;else if(c===!1)return this}return this.u.push(b),this.u.length>this.k.maxBreadcrumbs&&this.u.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.r.push([a,b]),this.n&&this.F(),this},setUserContext:function(a){return this.j.user=a,this},setExtraContext:function(a){return this.Z("extra",a),this},setTagsContext:function(a){return this.Z("tags",a),this},clearContext:function(){return this.j={},this},getContext:function(){return JSON.parse(h(this.j))},setEnvironment:function(a){return this.k.environment=a,this},setRelease:function(a){return this.k.release=a,this},setDataCallback:function(a){var b=this.k.dataCallback;return this.k.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.k.breadcrumbCallback;return this.k.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.k.shouldSendCallback;return this.k.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.k.transport=a,this},lastException:function(){return this.d},lastEventId:function(){return this.f},isSetup:function(){return!!this.a&&(!!this.g||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.z("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=P.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(Q){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.H;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.j.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.J(this.G(c)),h=Q.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(Q.head||Q.body).appendChild(h)}},L:function(){var a=this;this.m+=1,setTimeout(function(){a.m-=1})},$:function(a,b){var c,d;if(this.b){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),Q.createEvent?(c=Q.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=Q.createEventObject(),c.eventType=a);for(d in b)y(b,d)&&(c[d]=b[d]);if(Q.createEvent)Q.dispatchEvent(c);else try{Q.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},_:function(a){var b=this;return function(c){if(b.aa=null,b.v!==c){b.v=c;var d;try{d=C(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ba:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.aa;g||a._("input")(c),clearTimeout(g),a.aa=setTimeout(function(){a.aa=null},b)}}},ca:function(a,b){var c=F(this.w.href),d=F(b),e=F(a);this.x=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},C:function(){var a=this;a.da=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.M?a.da.apply(this.O,arguments):a.da.apply(this,arguments)}},Q:function(){this.da&&(Function.prototype.toString=this.da)},D:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.ca(b.x,c+""),a.apply(this,arguments)}};G(history,"pushState",j,d),G(history,"replaceState",j,d)}if(c.console&&"console"in P&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};u(["debug","info","warn","error","log"],function(a,b){M(console,b,k)})}},R:function(){for(var a;this.t.length;){a=this.t.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},S:function(){for(var a in this.q)this.p[a]=this.q[a]},F:function(){var a=this;u(this.r,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},G:function(a){var b=O.exec(a),c={},d=7;try{for(;d--;)c[N[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.k.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},J:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},A:function(){this.m||this.V.apply(this,arguments)},V:function(a,b){var c=this.X(a,b);this.$("handle",{stackInfo:a,options:b}),this.fa(a.name,a.message,a.url,a.lineno,c,b)},X:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(u(a.stack,function(b,e){var f=c.ga(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.u,0)}),this.j.user&&(a.user=this.j.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),a=this.pa(a),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||t(a[b]))&&delete a[b]}),q(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!t(a)&&(!q(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.ma()?void this.z("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function B(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&j(b))for(c=b.split(/\s+/),f=0;fc?M(a,b-1):d}function N(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?T:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function O(a,b){function c(a){return k(a)?a.map(function(a){return c(a)}):i(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!k(b)||k(b)&&0===b.length)return a;var d,e=w(b),f="********";try{d=JSON.parse(P(a))}catch(g){return a}return c(d)}var P=a(9),Q="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},R=3,S=51200,T=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isUndefined:g,isFunction:h,isPlainObject:i,isString:j,isArray:k,isEmptyObject:l,supportsErrorEvent:m,supportsFetch:n,supportsReferrerPolicy:o,supportsPromiseRejectionEvent:p,wrappedCallback:q,each:r,objectMerge:s,truncate:u,objectFrozen:t,hasKey:v,joinRegExp:w,urlencode:x,uuid4:z,htmlTreeAsString:A,htmlElementAsString:B,isSameException:E,isSameStacktrace:F,parseUrl:y,fill:G,safeJoin:H,serializeException:M,serializeKeysForMessage:N,sanitize:O}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{9:9}],8:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}var e=a(7),f={collectWindowErrors:!0,debug:!1},g="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},h=[].slice,i="?",j=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;f.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function k(a,b){var c=null;if(!b||f.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(h.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,g,h){var l=null,m=e.isErrorEvent(h)?h.error:h,n=e.isErrorEvent(a)?a.message:a;if(v)f.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&e.isError(m))l=f.computeStackTrace(m),k(l,!0);else{var p,r={url:b,line:c,column:g},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(j);p&&(s=p[1],n=p[2])}r.func=i,l={name:s,message:n,url:d(),stack:[r]},k(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=g.onerror,g.onerror=l,r=!0)}function n(){r&&(g.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,k.apply(null,[a,!1].concat(b))}function p(a,b){var c=h.call(arguments,1);if(v){if(u===a)return;o()}var d=f.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),f.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,e,f=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,g=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,h=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,j=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,k=/\((\S*)(?::(\d+))(?::(\d+))\)/,l=a.stack.split("\n"),m=[],n=(/^(.*) is undefined$/.exec(a.message),0),o=l.length;n eval")>-1;q&&(b=j.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==n||c[5]||"undefined"==typeof a.columnNumber||(m[0].column=a.columnNumber+1),e={url:c[3],func:c[1]||i,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}!e.func&&e.line&&(e.func=i),m.push(e)}return m.length?{name:a.name,message:a.message,url:d(),stack:m}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=i),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,g){for(var h,j,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==e&&o!==f.report){if(j={url:null,func:i,line:null,column:null},o.name?j.func=o.name:(h=k.exec(o.toString()))&&(j.func=h[1]),"undefined"==typeof j.func)try{j.func=h.input.substring(0,h.input.indexOf("{"))}catch(p){}m[""+o]?n=!0:m[""+o]=!0,l.push(j)}g&&l.splice(0,g);var q={name:a.name,message:a.message,url:d(),stack:l};return b(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),q}function e(b,e){var g=null;e=null==e?0:+e;try{if(g=a(b))return g}catch(h){if(f.debug)throw h}try{if(g=c(b,e+1))return g}catch(h){if(f.debug)throw h}return{name:b.name,message:b.message,url:d()}}return e.augmentStackTraceWithInitialElement=b,e.computeStackTraceFromStackProp=a,e}(),b.exports=f}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{7:7}],9:[function(a,b,c){ -function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}],10:[function(a,b,c){function d(a,b){var c=(65535&a)+(65535&b),d=(a>>16)+(b>>16)+(c>>16);return d<<16|65535&c}function e(a,b){return a<>>32-b}function f(a,b,c,f,g,h){return d(e(d(d(b,a),d(f,h)),g),c)}function g(a,b,c,d,e,g,h){return f(b&c|~b&d,a,b,e,g,h)}function h(a,b,c,d,e,g,h){return f(b&d|c&~d,a,b,e,g,h)}function i(a,b,c,d,e,g,h){return f(b^c^d,a,b,e,g,h)}function j(a,b,c,d,e,g,h){return f(c^(b|~d),a,b,e,g,h)}function k(a,b){a[b>>5]|=128<>>9<<4)+14]=b;var c,e,f,k,l,m=1732584193,n=-271733879,o=-1732584194,p=271733878;for(c=0;c>5]>>>b%32&255);return c}function m(a){var b,c=[];for(c[(a.length>>2)-1]=void 0,b=0;b>5]|=(255&a.charCodeAt(b/8))<16&&(e=k(e,8*a.length)),c=0;c<16;c+=1)f[c]=909522486^e[c],g[c]=1549556828^e[c];return d=k(f.concat(m(b)),512+8*b.length),l(k(g.concat(d),640))}function p(a){var b,c,d="0123456789abcdef",e="";for(c=0;c>>4&15)+d.charAt(15&b);return e}function q(a){return unescape(encodeURIComponent(a))}function r(a){return n(q(a))}function s(a){return p(r(a))}function t(a,b){return o(q(a),q(b))}function u(a,b){return p(t(a,b))}function v(a,b,c){return b?c?t(b,a):u(b,a):c?r(a):s(a)}b.exports=v},{}]},{},[6,1,2])(6)}); +/*! Raven.js 3.25.0 (80dffad) | github.com/getsentry/raven-js */ +!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.Raven=a()}}(function(){return function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};b[g][0].call(k.exports,function(a){var c=b[g][1][a];return e(c?c:a)},k,k.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;g":"anonymous component")+(a._isVue&&a.$options.__file?" at "+a.$options.__file:"")}function e(a,b){if(b=b||window.Vue,b&&b.config){var c=b.config.errorHandler;b.config.errorHandler=function(b,e,f){var g={};"[object Object]"===Object.prototype.toString.call(e)&&(g.componentName=d(e),g.propsData=e.$options.propsData),"undefined"!=typeof f&&(g.lifecycleHook=f),a.captureException(b,{extra:g}),"function"==typeof c&&c.call(this,b,e,f)}}}b.exports=e,a(6).addPlugin(b.exports)},{6:6}],3:[function(a,b,c){function d(a){this.name="RavenConfigError",this.message=a}d.prototype=new Error,d.prototype.constructor=d,b.exports=d},{}],4:[function(a,b,c){var d=a(7),e=function(a,b,c){var e=a[b],f=a;if(b in a){var g="warn"===b?"warning":b;a[b]=function(){var a=[].slice.call(arguments),h=d.safeJoin(a," "),i={level:g,logger:"console",extra:{arguments:a}};"assert"===b?a[0]===!1&&(h="Assertion failed: "+(d.safeJoin(a.slice(1)," ")||"console.assert"),i.extra.arguments=a.slice(1),c&&c(h,i)):c&&c(h,i),e&&Function.prototype.apply.call(e,f,a)}}};b.exports={wrapMethod:e}},{7:7}],5:[function(a,b,c){(function(c){function d(){return+new Date}function e(a,b){return s(b)?function(c){return b(c,a)}:b}function f(){this.a=!("object"!=typeof JSON||!JSON.stringify),this.b=!r(S),this.c=!r(T),this.d=null,this.e=null,this.f=null,this.g=null,this.h=null,this.i=null,this.j={},this.k={release:R.SENTRY_RELEASE&&R.SENTRY_RELEASE.id,logger:"javascript",ignoreErrors:[],ignoreUrls:[],whitelistUrls:[],includePaths:[],headers:null,collectWindowErrors:!0,captureUnhandledRejections:!0,maxMessageLength:0,maxUrlLength:250,stackTraceLimit:50,autoBreadcrumbs:!0,instrument:!0,sampleRate:1,sanitizeKeys:[]},this.l={method:"POST",keepalive:!0,referrerPolicy:K()?"origin":""},this.m=0,this.n=!1,this.o=Error.stackTraceLimit,this.p=R.console||{},this.q={},this.r=[],this.s=d(),this.t=[],this.u=[],this.v=null,this.w=R.location,this.x=this.w&&this.w.href,this.y();for(var a in this.p)this.q[a]=this.p[a]}var g=a(8),h=a(9),i=a(10),j=a(3),k=a(7),l=k.isErrorEvent,m=k.isDOMError,n=k.isDOMException,o=k.isError,p=k.isObject,q=k.isPlainObject,r=k.isUndefined,s=k.isFunction,t=k.isString,u=k.isArray,v=k.isEmptyObject,w=k.each,x=k.objectMerge,y=k.truncate,z=k.objectFrozen,A=k.hasKey,B=k.joinRegExp,C=k.urlencode,D=k.uuid4,E=k.htmlTreeAsString,F=k.isSameException,G=k.isSameStacktrace,H=k.parseUrl,I=k.fill,J=k.supportsFetch,K=k.supportsReferrerPolicy,L=k.serializeKeysForMessage,M=k.serializeException,N=k.sanitize,O=a(4).wrapMethod,P="source protocol user pass host port path".split(" "),Q=/^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/,R="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},S=R.document,T=R.navigator;f.prototype={VERSION:"3.25.0",debug:!1,TraceKit:g,config:function(a,b){var c=this;if(c.g)return this.z("error","Error: Raven has already been configured"),c;if(!a)return c;var d=c.k;b&&w(b,function(a,b){"tags"===a||"extra"===a||"user"===a?c.j[a]=b:d[a]=b}),c.setDSN(a),d.ignoreErrors.push(/^Script error\.?$/),d.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/),d.ignoreErrors=B(d.ignoreErrors),d.ignoreUrls=!!d.ignoreUrls.length&&B(d.ignoreUrls),d.whitelistUrls=!!d.whitelistUrls.length&&B(d.whitelistUrls),d.includePaths=B(d.includePaths),d.maxBreadcrumbs=Math.max(0,Math.min(d.maxBreadcrumbs||100,100));var e={xhr:!0,console:!0,dom:!0,location:!0,sentry:!0},f=d.autoBreadcrumbs;"[object Object]"==={}.toString.call(f)?f=x(e,f):f!==!1&&(f=e),d.autoBreadcrumbs=f;var h={tryCatch:!0},i=d.instrument;return"[object Object]"==={}.toString.call(i)?i=x(h,i):i!==!1&&(i=h),d.instrument=i,g.collectWindowErrors=!!d.collectWindowErrors,c},install:function(){var a=this;return a.isSetup()&&!a.n&&(g.report.subscribe(function(){a.A.apply(a,arguments)}),a.k.captureUnhandledRejections&&a.B(),a.C(),a.k.instrument&&a.k.instrument.tryCatch&&a.D(),a.k.autoBreadcrumbs&&a.E(),a.F(),a.n=!0),Error.stackTraceLimit=a.k.stackTraceLimit,this},setDSN:function(a){var b=this,c=b.G(a),d=c.path.lastIndexOf("/"),e=c.path.substr(1,d);b.H=a,b.h=c.user,b.I=c.pass&&c.pass.substr(1),b.i=c.path.substr(d+1),b.g=b.J(c),b.K=b.g+"/"+e+"api/"+b.i+"/store/",this.y()},context:function(a,b,c){return s(a)&&(c=b||[],b=a,a=void 0),this.wrap(a,b).apply(this,c)},wrap:function(a,b,c){function d(){var d=[],f=arguments.length,g=!a||a&&a.deep!==!1;for(c&&s(c)&&c.apply(this,arguments);f--;)d[f]=g?e.wrap(a,arguments[f]):arguments[f];try{return b.apply(this,d)}catch(h){throw e.L(),e.captureException(h,a),h}}var e=this;if(r(b)&&!s(a))return a;if(s(a)&&(b=a,a=void 0),!s(b))return b;try{if(b.M)return b;if(b.N)return b.N}catch(f){return b}for(var g in b)A(b,g)&&(d[g]=b[g]);return d.prototype=b.prototype,b.N=d,d.M=!0,d.O=b,d},uninstall:function(){return g.report.uninstall(),this.P(),this.Q(),this.R(),this.S(),Error.stackTraceLimit=this.o,this.n=!1,this},T:function(a){this.z("debug","Raven caught unhandled promise rejection:",a),this.captureException(a.reason,{extra:{unhandledPromiseRejection:!0}})},B:function(){return this.T=this.T.bind(this),R.addEventListener&&R.addEventListener("unhandledrejection",this.T),this},P:function(){return R.removeEventListener&&R.removeEventListener("unhandledrejection",this.T),this},captureException:function(a,b){if(b=x({trimHeadFrames:0},b?b:{}),l(a)&&a.error)a=a.error;else{if(m(a)||n(a)){var c=a.name||(m(a)?"DOMError":"DOMException"),d=a.message?c+": "+a.message:c;return this.captureMessage(d,x(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}))}if(o(a))a=a;else{if(!q(a))return this.captureMessage(a,x(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}));b=this.U(b,a),a=new Error(b.message)}}this.d=a;try{var e=g.computeStackTrace(a);this.V(e,b)}catch(f){if(a!==f)throw f}return this},U:function(a,b){var c=Object.keys(b).sort(),d=x(a,{message:"Non-Error exception captured with keys: "+L(c),fingerprint:[i(c)],extra:a.extra||{}});return d.extra.W=M(b),d},captureMessage:function(a,b){if(!this.k.ignoreErrors.test||!this.k.ignoreErrors.test(a)){b=b||{},a+="";var c,d=x({message:a},b);try{throw new Error(a)}catch(e){c=e}c.name=null;var f=g.computeStackTrace(c),h=u(f.stack)&&f.stack[1];h&&"Raven.captureException"===h.func&&(h=f.stack[2]);var i=h&&h.url||"";if((!this.k.ignoreUrls.test||!this.k.ignoreUrls.test(i))&&(!this.k.whitelistUrls.test||this.k.whitelistUrls.test(i))){if(this.k.stacktrace||b&&b.stacktrace){d.fingerprint=null==d.fingerprint?a:d.fingerprint,b=x({trimHeadFrames:0},b),b.trimHeadFrames+=1;var j=this.X(f,b);d.stacktrace={frames:j.reverse()}}return d.fingerprint&&(d.fingerprint=u(d.fingerprint)?d.fingerprint:[d.fingerprint]),this.Y(d),this}}},captureBreadcrumb:function(a){var b=x({timestamp:d()/1e3},a);if(s(this.k.breadcrumbCallback)){var c=this.k.breadcrumbCallback(b);if(p(c)&&!v(c))b=c;else if(c===!1)return this}return this.u.push(b),this.u.length>this.k.maxBreadcrumbs&&this.u.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.r.push([a,b]),this.n&&this.F(),this},setUserContext:function(a){return this.j.user=a,this},setExtraContext:function(a){return this.Z("extra",a),this},setTagsContext:function(a){return this.Z("tags",a),this},clearContext:function(){return this.j={},this},getContext:function(){return JSON.parse(h(this.j))},setEnvironment:function(a){return this.k.environment=a,this},setRelease:function(a){return this.k.release=a,this},setDataCallback:function(a){var b=this.k.dataCallback;return this.k.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.k.breadcrumbCallback;return this.k.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.k.shouldSendCallback;return this.k.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.k.transport=a,this},lastException:function(){return this.d},lastEventId:function(){return this.f},isSetup:function(){return!!this.a&&(!!this.g||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.z("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=R.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(S){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.H;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.j.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.J(this.G(c)),h=S.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(S.head||S.body).appendChild(h)}},L:function(){var a=this;this.m+=1,setTimeout(function(){a.m-=1})},$:function(a,b){var c,d;if(this.b){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),S.createEvent?(c=S.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=S.createEventObject(),c.eventType=a);for(d in b)A(b,d)&&(c[d]=b[d]);if(S.createEvent)S.dispatchEvent(c);else try{S.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},_:function(a){var b=this;return function(c){if(b.aa=null,b.v!==c){b.v=c;var d;try{d=E(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ba:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.aa;g||a._("input")(c),clearTimeout(g),a.aa=setTimeout(function(){a.aa=null},b)}}},ca:function(a,b){var c=H(this.w.href),d=H(b),e=H(a);this.x=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},C:function(){var a=this;a.da=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.M?a.da.apply(this.O,arguments):a.da.apply(this,arguments)}},Q:function(){this.da&&(Function.prototype.toString=this.da)},D:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.ca(b.x,c+""),a.apply(this,arguments)}};I(history,"pushState",j,d),I(history,"replaceState",j,d)}if(c.console&&"console"in R&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};w(["debug","info","warn","error","log"],function(a,b){O(console,b,k)})}},R:function(){for(var a;this.t.length;){a=this.t.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},S:function(){for(var a in this.q)this.p[a]=this.q[a]},F:function(){var a=this;w(this.r,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},G:function(a){var b=Q.exec(a),c={},d=7;try{for(;d--;)c[P[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.k.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},J:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},A:function(){this.m||this.V.apply(this,arguments)},V:function(a,b){var c=this.X(a,b);this.$("handle",{stackInfo:a,options:b}),this.fa(a.name,a.message,a.url,a.lineno,c,b)},X:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(w(a.stack,function(b,e){var f=c.ga(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.u,0)}),this.j.user&&(a.user=this.j.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),a=this.pa(a),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||v(a[b]))&&delete a[b]}),s(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!v(a)&&(!s(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.ma()?void this.z("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function F(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&l(b))for(c=b.split(/\s+/),f=0;fc?Q(a,b-1):d}function R(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?X:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function S(a,b){function c(a){return m(a)?a.map(function(a){return c(a)}):k(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!m(b)||m(b)&&0===b.length)return a;var d,e=A(b),f="********";try{d=JSON.parse(T(a))}catch(g){return a}return c(d)}var T=a(9),U="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},V=3,W=51200,X=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isDOMError:g,isDOMException:h,isUndefined:i,isFunction:j,isPlainObject:k,isString:l,isArray:m,isEmptyObject:n,supportsErrorEvent:o,supportsDOMError:p,supportsDOMException:q,supportsFetch:r,supportsReferrerPolicy:s,supportsPromiseRejectionEvent:t,wrappedCallback:u,each:v,objectMerge:w,truncate:y,objectFrozen:x,hasKey:z,joinRegExp:A,urlencode:B,uuid4:D,htmlTreeAsString:E,htmlElementAsString:F,isSameException:I,isSameStacktrace:J,parseUrl:C,fill:K,safeJoin:L,serializeException:Q,serializeKeysForMessage:R,sanitize:S}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{9:9}],8:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}function e(){return"undefined"==typeof document||null==document.location?"":document.location.origin}var f=a(7),g={collectWindowErrors:!0,debug:!1},h="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},i=[].slice,j="?",k=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;g.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function e(a,b){var c=null;if(!b||g.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(i.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,h,i){var l=null,m=f.isErrorEvent(i)?i.error:i,n=f.isErrorEvent(a)?a.message:a;if(v)g.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&f.isError(m))l=g.computeStackTrace(m),e(l,!0);else{var p,r={url:b,line:c,column:h},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(k);p&&(s=p[1],n=p[2])}r.func=j,l={name:s,message:n,url:d(),stack:[r]},e(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=h.onerror,h.onerror=l,r=!0)}function n(){r&&(h.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,e.apply(null,[a,!1].concat(b))}function p(a,b){var c=i.call(arguments,1);if(v){if(u===a)return;o()}var d=g.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),g.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,f,g=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,h=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,i=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,k=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,l=/\((\S*)(?::(\d+))(?::(\d+))\)/,m=a.stack.split("\n"),n=[],o=(/^(.*) is undefined$/.exec(a.message),0),p=m.length;o eval")>-1;r&&(b=k.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==o||c[5]||"undefined"==typeof a.columnNumber||(n[0].column=a.columnNumber+1),f={url:c[3],func:c[1]||j,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}if(!f.func&&f.line&&(f.func=j),f.url&&"blob:"===f.url.substr(0,5)){var s=new XMLHttpRequest;if(s.open("GET",f.url,!1),s.send(null),200===s.status){var t=s.responseText||"";t=t.slice(-300);var u=t.match(/\/\/# sourceMappingURL=(.*)$/);if(u){var v=u[1];"~"===v.charAt(0)&&(v=e()+v.slice(1)),f.url=v.slice(0,-4)}}}n.push(f)}return n.length?{name:a.name,message:a.message,url:d(),stack:n}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=j),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,e){ +for(var h,i,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==f&&o!==g.report){if(i={url:null,func:j,line:null,column:null},o.name?i.func=o.name:(h=k.exec(o.toString()))&&(i.func=h[1]),"undefined"==typeof i.func)try{i.func=h.input.substring(0,h.input.indexOf("{"))}catch(p){}m[""+o]?n=!0:m[""+o]=!0,l.push(i)}e&&l.splice(0,e);var q={name:a.name,message:a.message,url:d(),stack:l};return b(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),q}function f(b,e){var f=null;e=null==e?0:+e;try{if(f=a(b))return f}catch(h){if(g.debug)throw h}try{if(f=c(b,e+1))return f}catch(h){if(g.debug)throw h}return{name:b.name,message:b.message,url:d()}}return f.augmentStackTraceWithInitialElement=b,f.computeStackTraceFromStackProp=a,f}(),b.exports=g}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{7:7}],9:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}],10:[function(a,b,c){function d(a,b){var c=(65535&a)+(65535&b),d=(a>>16)+(b>>16)+(c>>16);return d<<16|65535&c}function e(a,b){return a<>>32-b}function f(a,b,c,f,g,h){return d(e(d(d(b,a),d(f,h)),g),c)}function g(a,b,c,d,e,g,h){return f(b&c|~b&d,a,b,e,g,h)}function h(a,b,c,d,e,g,h){return f(b&d|c&~d,a,b,e,g,h)}function i(a,b,c,d,e,g,h){return f(b^c^d,a,b,e,g,h)}function j(a,b,c,d,e,g,h){return f(c^(b|~d),a,b,e,g,h)}function k(a,b){a[b>>5]|=128<>>9<<4)+14]=b;var c,e,f,k,l,m=1732584193,n=-271733879,o=-1732584194,p=271733878;for(c=0;c>5]>>>b%32&255);return c}function m(a){var b,c=[];for(c[(a.length>>2)-1]=void 0,b=0;b>5]|=(255&a.charCodeAt(b/8))<16&&(e=k(e,8*a.length)),c=0;c<16;c+=1)f[c]=909522486^e[c],g[c]=1549556828^e[c];return d=k(f.concat(m(b)),512+8*b.length),l(k(g.concat(d),640))}function p(a){var b,c,d="0123456789abcdef",e="";for(c=0;c>>4&15)+d.charAt(15&b);return e}function q(a){return unescape(encodeURIComponent(a))}function r(a){return n(q(a))}function s(a){return p(r(a))}function t(a,b){return o(q(a),q(b))}function u(a,b){return p(t(a,b))}function v(a,b,c){return b?c?t(b,a):u(b,a):c?r(a):s(a)}b.exports=v},{}]},{},[6,1,2])(6)}); //# sourceMappingURL=raven.min.js.map \ No newline at end of file diff --git a/dist/ember,vue/raven.min.js.map b/dist/ember,vue/raven.min.js.map index 70ff625816ed..1e7dcbe2309d 100644 --- a/dist/ember,vue/raven.min.js.map +++ b/dist/ember,vue/raven.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","emberPlugin","Ember","_oldOnError","onerror","error","captureException","RSVP","on","reason","extra","context","captureMessage","addPlugin","6","2","formatComponentName","vm","$root","name","_isVue","$options","_componentTag","__file","vuePlugin","Vue","config","errorHandler","info","metaData","Object","prototype","toString","componentName","propsData","lifecycleHook","3","RavenConfigError","message","constructor","4","utils","wrapMethod","console","level","callback","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","msg","safeJoin","data","logger","Function","apply","7","5","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","sanitizeKeys","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isError","isObject","isPlainObject","isErrorEvent","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","sanitize","wrapConsoleMethod","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","dsn","options","_logDebug","globalOptions","key","value","setDSN","push","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","substr","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","func","undefined","wrap","_before","wrapped","deep","_ignoreNextOnError","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","T","event","unhandledPromiseRejection","B","_promiseRejectionHandler","bind","addEventListener","P","removeEventListener","ex","trimHeadFrames","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","U","currentOptions","exKeys","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","setDataCallback","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","L","setTimeout","$","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","_","evtName","_keypressTimeout","target","category","ba","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","ca","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","C","_originalFunctionToString","Q","D","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","type","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","E","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","R","builtin","S","F","installer","concat","G","str","m","exec","allowSecretKey","J","port","A","V","stackInfo","_triggerEvent","_processException","lineno","X","frame","_normalizeFrame","in_app","ga","stackInfoUrl","normalized","filename","line","colno","column","function","fa","prefixedMessage","exception","values","culprit","ha","request","Referer","breadcrumbs","_trimBreadcrumbs","ia","urlProp","urlProps","ja","httpData","userAgent","User-Agent","referrer","y","_backoffDuration","_backoffStart","ma","na","current","last","oa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Y","baseData","project","platform","_getHttpData","serverName","server_name","_sanitizeData","forEach","random","_sendProcessedPayload","pa","ra","qa","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","sa","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","open","setRequestHeader","send","ta","hash","evaluated","z","Z","setUser","setReleaseContext","10","8","9","RavenConstructor","_Raven","noConflict","Client","what","supportsErrorEvent","ErrorEvent","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","wrappedCallback","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","sanitizeMask","safeInput","o_O","getLocationHref","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","charAt","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","string","raw"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file +{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","emberPlugin","Ember","_oldOnError","onerror","error","captureException","RSVP","on","reason","extra","context","captureMessage","addPlugin","6","2","formatComponentName","vm","$root","name","_isVue","$options","_componentTag","__file","vuePlugin","Vue","config","errorHandler","info","metaData","Object","prototype","toString","componentName","propsData","lifecycleHook","3","RavenConfigError","message","constructor","4","utils","wrapMethod","console","level","callback","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","msg","safeJoin","data","logger","Function","apply","7","5","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","sanitizeKeys","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isErrorEvent","isDOMError","isDOMException","isError","isObject","isPlainObject","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","sanitize","wrapConsoleMethod","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","dsn","options","_logDebug","globalOptions","key","value","setDSN","push","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","substr","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","func","undefined","wrap","_before","wrapped","deep","_ignoreNextOnError","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","T","event","unhandledPromiseRejection","B","_promiseRejectionHandler","bind","addEventListener","P","removeEventListener","ex","trimHeadFrames","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","U","currentOptions","exKeys","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","setDataCallback","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","L","setTimeout","$","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","_","evtName","_keypressTimeout","target","category","ba","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","ca","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","C","_originalFunctionToString","Q","D","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","type","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","E","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","R","builtin","S","F","installer","concat","G","str","m","exec","allowSecretKey","J","port","A","V","stackInfo","_triggerEvent","_processException","lineno","X","frame","_normalizeFrame","in_app","ga","stackInfoUrl","normalized","filename","line","colno","column","function","fa","prefixedMessage","exception","values","culprit","ha","request","Referer","breadcrumbs","_trimBreadcrumbs","ia","urlProp","urlProps","ja","httpData","userAgent","User-Agent","referrer","y","_backoffDuration","_backoffStart","ma","na","current","last","oa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Y","baseData","project","platform","_getHttpData","serverName","server_name","_sanitizeData","forEach","random","_sendProcessedPayload","pa","ra","qa","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","sa","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","open","setRequestHeader","send","ta","hash","evaluated","z","Z","setUser","setReleaseContext","10","8","9","RavenConstructor","_Raven","noConflict","Client","what","supportsErrorEvent","ErrorEvent","supportsDOMError","DOMError","supportsDOMException","DOMException","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","wrappedCallback","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","sanitizeMask","safeInput","o_O","getLocationHref","getLocationOrigin","origin","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","responseText","sourceMaps","sourceMapAddress","charAt","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","string","raw"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file diff --git a/dist/ember/raven.js b/dist/ember/raven.js index e95275b5022e..56fb053a2492 100644 --- a/dist/ember/raven.js +++ b/dist/ember/raven.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.24.2 (540f32b) | github.com/getsentry/raven-js */ +/*! Raven.js 3.25.0 (80dffad) | github.com/getsentry/raven-js */ /* * Includes TraceKit @@ -107,10 +107,12 @@ var md5 = _dereq_(9); var RavenConfigError = _dereq_(2); var utils = _dereq_(6); +var isErrorEvent = utils.isErrorEvent; +var isDOMError = utils.isDOMError; +var isDOMException = utils.isDOMException; var isError = utils.isError; var isObject = utils.isObject; var isPlainObject = utils.isPlainObject; -var isErrorEvent = utils.isErrorEvent; var isUndefined = utils.isUndefined; var isFunction = utils.isFunction; var isString = utils.isString; @@ -238,7 +240,7 @@ Raven.prototype = { // webpack (using a build step causes webpack #1617). Grunt verifies that // this value matches package.json during build. // See: https://github.com/getsentry/raven-js/issues/465 - VERSION: '3.24.2', + VERSION: '3.25.0', debug: false, @@ -570,6 +572,23 @@ Raven.prototype = { if (isErrorEvent(ex) && ex.error) { // If it is an ErrorEvent with `error` property, extract it to get actual Error ex = ex.error; + } else if (isDOMError(ex) || isDOMException(ex)) { + // If it is a DOMError or DOMException (which are legacy APIs, but still supported in some browsers) + // then we just extract the name and message, as they don't provide anything else + // https://developer.mozilla.org/en-US/docs/Web/API/DOMError + // https://developer.mozilla.org/en-US/docs/Web/API/DOMException + var name = ex.name || (isDOMError(ex) ? 'DOMError' : 'DOMException'); + var message = ex.message ? name + ': ' + ex.message : name; + + return this.captureMessage( + message, + objectMerge(options, { + // neither DOMError or DOMException provide stack trace and we most likely wont get it this way as well + // but it's barely any overhead so we may at least try + stacktrace: true, + trimHeadFrames: options.trimHeadFrames + 1 + }) + ); } else if (isError(ex)) { // we have a real Error object ex = ex; @@ -581,6 +600,7 @@ Raven.prototype = { ex = new Error(options.message); } else { // If none of previous checks were valid, then it means that + // it's not a DOMError/DOMException // it's not a plain Object // it's not a valid ErrorEvent (one with an error property) // it's not an Error @@ -2353,7 +2373,7 @@ function isObject(what) { // Yanked from https://git.io/vS8DV re-used under CC0 // with some tiny modifications function isError(value) { - switch ({}.toString.call(value)) { + switch (Object.prototype.toString.call(value)) { case '[object Error]': return true; case '[object Exception]': @@ -2366,7 +2386,15 @@ function isError(value) { } function isErrorEvent(value) { - return supportsErrorEvent() && {}.toString.call(value) === '[object ErrorEvent]'; + return Object.prototype.toString.call(value) === '[object ErrorEvent]'; +} + +function isDOMError(value) { + return Object.prototype.toString.call(value) === '[object DOMError]'; +} + +function isDOMException(value) { + return Object.prototype.toString.call(value) === '[object DOMException]'; } function isUndefined(what) { @@ -2409,6 +2437,24 @@ function supportsErrorEvent() { } } +function supportsDOMError() { + try { + new DOMError(''); // eslint-disable-line no-new + return true; + } catch (e) { + return false; + } +} + +function supportsDOMException() { + try { + new DOMException(''); // eslint-disable-line no-new + return true; + } catch (e) { + return false; + } +} + function supportsFetch() { if (!('fetch' in _window)) return false; @@ -2924,6 +2970,8 @@ module.exports = { isObject: isObject, isError: isError, isErrorEvent: isErrorEvent, + isDOMError: isDOMError, + isDOMException: isDOMException, isUndefined: isUndefined, isFunction: isFunction, isPlainObject: isPlainObject, @@ -2931,6 +2979,8 @@ module.exports = { isArray: isArray, isEmptyObject: isEmptyObject, supportsErrorEvent: supportsErrorEvent, + supportsDOMError: supportsDOMError, + supportsDOMException: supportsDOMException, supportsFetch: supportsFetch, supportsReferrerPolicy: supportsReferrerPolicy, supportsPromiseRejectionEvent: supportsPromiseRejectionEvent, @@ -2990,10 +3040,14 @@ var ERROR_TYPES_RE = /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Ran function getLocationHref() { if (typeof document === 'undefined' || document.location == null) return ''; - return document.location.href; } +function getLocationOrigin() { + if (typeof document === 'undefined' || document.location == null) return ''; + return document.location.origin; +} + /** * TraceKit.report: cross-browser processing of unhandled exceptions * @@ -3401,6 +3455,44 @@ TraceKit.computeStackTrace = (function computeStackTraceWrapper() { element.func = UNKNOWN_FUNCTION; } + if (element.url && element.url.substr(0, 5) === 'blob:') { + // Special case for handling JavaScript loaded into a blob. + // We use a synchronous AJAX request here as a blob is already in + // memory - it's not making a network request. This will generate a warning + // in the browser console, but there has already been an error so that's not + // that much of an issue. + var xhr = new XMLHttpRequest(); + xhr.open('GET', element.url, false); + xhr.send(null); + + // If we failed to download the source, skip this patch + if (xhr.status === 200) { + var source = xhr.responseText || ''; + + // We trim the source down to the last 300 characters as sourceMappingURL is always at the end of the file. + // Why 300? To be in line with: https://github.com/getsentry/sentry/blob/4af29e8f2350e20c28a6933354e4f42437b4ba42/src/sentry/lang/javascript/processor.py#L164-L175 + source = source.slice(-300); + + // Now we dig out the source map URL + var sourceMaps = source.match(/\/\/# sourceMappingURL=(.*)$/); + + // If we don't find a source map comment or we find more than one, continue on to the next element. + if (sourceMaps) { + var sourceMapAddress = sourceMaps[1]; + + // Now we check to see if it's a relative URL. + // If it is, convert it to an absolute one. + if (sourceMapAddress.charAt(0) === '~') { + sourceMapAddress = getLocationOrigin() + sourceMapAddress.slice(1); + } + + // Now we strip the '.map' off of the end of the URL and update the + // element so that Sentry can match the map to the blob. + element.url = sourceMapAddress.slice(0, -4); + } + } + } + stack.push(element); } diff --git a/dist/ember/raven.min.js b/dist/ember/raven.min.js index b1f4b9d23c4f..b6d5a2b83ffc 100644 --- a/dist/ember/raven.min.js +++ b/dist/ember/raven.min.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.24.2 (540f32b) | github.com/getsentry/raven-js */ -!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.Raven=a()}}(function(){return function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};b[g][0].call(k.exports,function(a){var c=b[g][1][a];return e(c?c:a)},k,k.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;gthis.k.maxBreadcrumbs&&this.u.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.r.push([a,b]),this.n&&this.F(),this},setUserContext:function(a){return this.j.user=a,this},setExtraContext:function(a){return this.Z("extra",a),this},setTagsContext:function(a){return this.Z("tags",a),this},clearContext:function(){return this.j={},this},getContext:function(){return JSON.parse(h(this.j))},setEnvironment:function(a){return this.k.environment=a,this},setRelease:function(a){return this.k.release=a,this},setDataCallback:function(a){var b=this.k.dataCallback;return this.k.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.k.breadcrumbCallback;return this.k.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.k.shouldSendCallback;return this.k.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.k.transport=a,this},lastException:function(){return this.d},lastEventId:function(){return this.f},isSetup:function(){return!!this.a&&(!!this.g||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.z("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=P.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(Q){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.H;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.j.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.J(this.G(c)),h=Q.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(Q.head||Q.body).appendChild(h)}},L:function(){var a=this;this.m+=1,setTimeout(function(){a.m-=1})},$:function(a,b){var c,d;if(this.b){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),Q.createEvent?(c=Q.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=Q.createEventObject(),c.eventType=a);for(d in b)y(b,d)&&(c[d]=b[d]);if(Q.createEvent)Q.dispatchEvent(c);else try{Q.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},_:function(a){var b=this;return function(c){if(b.aa=null,b.v!==c){b.v=c;var d;try{d=C(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ba:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.aa;g||a._("input")(c),clearTimeout(g),a.aa=setTimeout(function(){a.aa=null},b)}}},ca:function(a,b){var c=F(this.w.href),d=F(b),e=F(a);this.x=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},C:function(){var a=this;a.da=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.M?a.da.apply(this.O,arguments):a.da.apply(this,arguments)}},Q:function(){this.da&&(Function.prototype.toString=this.da)},D:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.ca(b.x,c+""),a.apply(this,arguments)}};G(history,"pushState",j,d),G(history,"replaceState",j,d)}if(c.console&&"console"in P&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};u(["debug","info","warn","error","log"],function(a,b){M(console,b,k)})}},R:function(){for(var a;this.t.length;){a=this.t.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},S:function(){for(var a in this.q)this.p[a]=this.q[a]},F:function(){var a=this;u(this.r,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},G:function(a){var b=O.exec(a),c={},d=7;try{for(;d--;)c[N[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.k.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},J:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},A:function(){this.m||this.V.apply(this,arguments)},V:function(a,b){var c=this.X(a,b);this.$("handle",{stackInfo:a,options:b}),this.fa(a.name,a.message,a.url,a.lineno,c,b)},X:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(u(a.stack,function(b,e){var f=c.ga(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.u,0)}),this.j.user&&(a.user=this.j.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),a=this.pa(a),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||t(a[b]))&&delete a[b]}),q(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!t(a)&&(!q(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.ma()?void this.z("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function B(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&j(b))for(c=b.split(/\s+/),f=0;fc?M(a,b-1):d}function N(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?T:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function O(a,b){function c(a){return k(a)?a.map(function(a){return c(a)}):i(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!k(b)||k(b)&&0===b.length)return a;var d,e=w(b),f="********";try{d=JSON.parse(P(a))}catch(g){return a}return c(d)}var P=a(8),Q="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},R=3,S=51200,T=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isUndefined:g,isFunction:h,isPlainObject:i,isString:j,isArray:k,isEmptyObject:l,supportsErrorEvent:m,supportsFetch:n,supportsReferrerPolicy:o,supportsPromiseRejectionEvent:p,wrappedCallback:q,each:r,objectMerge:s,truncate:u,objectFrozen:t,hasKey:v,joinRegExp:w,urlencode:x,uuid4:z,htmlTreeAsString:A,htmlElementAsString:B,isSameException:E,isSameStacktrace:F,parseUrl:y,fill:G,safeJoin:H,serializeException:M,serializeKeysForMessage:N,sanitize:O}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{8:8}],7:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}var e=a(6),f={collectWindowErrors:!0,debug:!1},g="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},h=[].slice,i="?",j=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;f.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function k(a,b){var c=null;if(!b||f.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(h.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,g,h){var l=null,m=e.isErrorEvent(h)?h.error:h,n=e.isErrorEvent(a)?a.message:a;if(v)f.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&e.isError(m))l=f.computeStackTrace(m),k(l,!0);else{var p,r={url:b,line:c,column:g},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(j);p&&(s=p[1],n=p[2])}r.func=i,l={name:s,message:n,url:d(),stack:[r]},k(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=g.onerror,g.onerror=l,r=!0)}function n(){r&&(g.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,k.apply(null,[a,!1].concat(b))}function p(a,b){var c=h.call(arguments,1);if(v){if(u===a)return;o()}var d=f.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),f.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,e,f=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,g=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,h=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,j=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,k=/\((\S*)(?::(\d+))(?::(\d+))\)/,l=a.stack.split("\n"),m=[],n=(/^(.*) is undefined$/.exec(a.message),0),o=l.length;n eval")>-1;q&&(b=j.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==n||c[5]||"undefined"==typeof a.columnNumber||(m[0].column=a.columnNumber+1),e={url:c[3],func:c[1]||i,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}!e.func&&e.line&&(e.func=i),m.push(e)}return m.length?{name:a.name,message:a.message,url:d(),stack:m}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=i),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,g){for(var h,j,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==e&&o!==f.report){if(j={url:null,func:i,line:null,column:null},o.name?j.func=o.name:(h=k.exec(o.toString()))&&(j.func=h[1]),"undefined"==typeof j.func)try{j.func=h.input.substring(0,h.input.indexOf("{"))}catch(p){}m[""+o]?n=!0:m[""+o]=!0,l.push(j)}g&&l.splice(0,g);var q={name:a.name,message:a.message,url:d(),stack:l};return b(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),q}function e(b,e){var g=null;e=null==e?0:+e;try{if(g=a(b))return g}catch(h){if(f.debug)throw h}try{if(g=c(b,e+1))return g}catch(h){if(f.debug)throw h}return{name:b.name,message:b.message,url:d()}}return e.augmentStackTraceWithInitialElement=b,e.computeStackTraceFromStackProp=a,e}(),b.exports=f}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{6:6}],8:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e, -c.getSerialize=g},{}],9:[function(a,b,c){function d(a,b){var c=(65535&a)+(65535&b),d=(a>>16)+(b>>16)+(c>>16);return d<<16|65535&c}function e(a,b){return a<>>32-b}function f(a,b,c,f,g,h){return d(e(d(d(b,a),d(f,h)),g),c)}function g(a,b,c,d,e,g,h){return f(b&c|~b&d,a,b,e,g,h)}function h(a,b,c,d,e,g,h){return f(b&d|c&~d,a,b,e,g,h)}function i(a,b,c,d,e,g,h){return f(b^c^d,a,b,e,g,h)}function j(a,b,c,d,e,g,h){return f(c^(b|~d),a,b,e,g,h)}function k(a,b){a[b>>5]|=128<>>9<<4)+14]=b;var c,e,f,k,l,m=1732584193,n=-271733879,o=-1732584194,p=271733878;for(c=0;c>5]>>>b%32&255);return c}function m(a){var b,c=[];for(c[(a.length>>2)-1]=void 0,b=0;b>5]|=(255&a.charCodeAt(b/8))<16&&(e=k(e,8*a.length)),c=0;c<16;c+=1)f[c]=909522486^e[c],g[c]=1549556828^e[c];return d=k(f.concat(m(b)),512+8*b.length),l(k(g.concat(d),640))}function p(a){var b,c,d="0123456789abcdef",e="";for(c=0;c>>4&15)+d.charAt(15&b);return e}function q(a){return unescape(encodeURIComponent(a))}function r(a){return n(q(a))}function s(a){return p(r(a))}function t(a,b){return o(q(a),q(b))}function u(a,b){return p(t(a,b))}function v(a,b,c){return b?c?t(b,a):u(b,a):c?r(a):s(a)}b.exports=v},{}]},{},[5,1])(5)}); +/*! Raven.js 3.25.0 (80dffad) | github.com/getsentry/raven-js */ +!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.Raven=a()}}(function(){return function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};b[g][0].call(k.exports,function(a){var c=b[g][1][a];return e(c?c:a)},k,k.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;gthis.k.maxBreadcrumbs&&this.u.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.r.push([a,b]),this.n&&this.F(),this},setUserContext:function(a){return this.j.user=a,this},setExtraContext:function(a){return this.Z("extra",a),this},setTagsContext:function(a){return this.Z("tags",a),this},clearContext:function(){return this.j={},this},getContext:function(){return JSON.parse(h(this.j))},setEnvironment:function(a){return this.k.environment=a,this},setRelease:function(a){return this.k.release=a,this},setDataCallback:function(a){var b=this.k.dataCallback;return this.k.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.k.breadcrumbCallback;return this.k.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.k.shouldSendCallback;return this.k.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.k.transport=a,this},lastException:function(){return this.d},lastEventId:function(){return this.f},isSetup:function(){return!!this.a&&(!!this.g||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.z("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=R.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(S){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.H;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.j.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.J(this.G(c)),h=S.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(S.head||S.body).appendChild(h)}},L:function(){var a=this;this.m+=1,setTimeout(function(){a.m-=1})},$:function(a,b){var c,d;if(this.b){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),S.createEvent?(c=S.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=S.createEventObject(),c.eventType=a);for(d in b)A(b,d)&&(c[d]=b[d]);if(S.createEvent)S.dispatchEvent(c);else try{S.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},_:function(a){var b=this;return function(c){if(b.aa=null,b.v!==c){b.v=c;var d;try{d=E(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ba:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.aa;g||a._("input")(c),clearTimeout(g),a.aa=setTimeout(function(){a.aa=null},b)}}},ca:function(a,b){var c=H(this.w.href),d=H(b),e=H(a);this.x=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},C:function(){var a=this;a.da=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.M?a.da.apply(this.O,arguments):a.da.apply(this,arguments)}},Q:function(){this.da&&(Function.prototype.toString=this.da)},D:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.ca(b.x,c+""),a.apply(this,arguments)}};I(history,"pushState",j,d),I(history,"replaceState",j,d)}if(c.console&&"console"in R&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};w(["debug","info","warn","error","log"],function(a,b){O(console,b,k)})}},R:function(){for(var a;this.t.length;){a=this.t.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},S:function(){for(var a in this.q)this.p[a]=this.q[a]},F:function(){var a=this;w(this.r,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},G:function(a){var b=Q.exec(a),c={},d=7;try{for(;d--;)c[P[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.k.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},J:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},A:function(){this.m||this.V.apply(this,arguments)},V:function(a,b){var c=this.X(a,b);this.$("handle",{stackInfo:a,options:b}),this.fa(a.name,a.message,a.url,a.lineno,c,b)},X:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(w(a.stack,function(b,e){var f=c.ga(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.u,0)}),this.j.user&&(a.user=this.j.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),a=this.pa(a),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||v(a[b]))&&delete a[b]}),s(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!v(a)&&(!s(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.ma()?void this.z("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function F(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&l(b))for(c=b.split(/\s+/),f=0;fc?Q(a,b-1):d}function R(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?X:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function S(a,b){function c(a){return m(a)?a.map(function(a){return c(a)}):k(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!m(b)||m(b)&&0===b.length)return a;var d,e=A(b),f="********";try{d=JSON.parse(T(a))}catch(g){return a}return c(d)}var T=a(8),U="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},V=3,W=51200,X=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isDOMError:g,isDOMException:h,isUndefined:i,isFunction:j,isPlainObject:k,isString:l,isArray:m,isEmptyObject:n,supportsErrorEvent:o,supportsDOMError:p,supportsDOMException:q,supportsFetch:r,supportsReferrerPolicy:s,supportsPromiseRejectionEvent:t,wrappedCallback:u,each:v,objectMerge:w,truncate:y,objectFrozen:x,hasKey:z,joinRegExp:A,urlencode:B,uuid4:D,htmlTreeAsString:E,htmlElementAsString:F,isSameException:I,isSameStacktrace:J,parseUrl:C,fill:K,safeJoin:L,serializeException:Q,serializeKeysForMessage:R,sanitize:S}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{8:8}],7:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}function e(){return"undefined"==typeof document||null==document.location?"":document.location.origin}var f=a(6),g={collectWindowErrors:!0,debug:!1},h="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},i=[].slice,j="?",k=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;g.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function e(a,b){var c=null;if(!b||g.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(i.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,h,i){var l=null,m=f.isErrorEvent(i)?i.error:i,n=f.isErrorEvent(a)?a.message:a;if(v)g.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&f.isError(m))l=g.computeStackTrace(m),e(l,!0);else{var p,r={url:b,line:c,column:h},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(k);p&&(s=p[1],n=p[2])}r.func=j,l={name:s,message:n,url:d(),stack:[r]},e(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=h.onerror,h.onerror=l,r=!0)}function n(){r&&(h.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,e.apply(null,[a,!1].concat(b))}function p(a,b){var c=i.call(arguments,1);if(v){if(u===a)return;o()}var d=g.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),g.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,f,g=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,h=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,i=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,k=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,l=/\((\S*)(?::(\d+))(?::(\d+))\)/,m=a.stack.split("\n"),n=[],o=(/^(.*) is undefined$/.exec(a.message),0),p=m.length;o eval")>-1;r&&(b=k.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==o||c[5]||"undefined"==typeof a.columnNumber||(n[0].column=a.columnNumber+1),f={url:c[3],func:c[1]||j,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}if(!f.func&&f.line&&(f.func=j),f.url&&"blob:"===f.url.substr(0,5)){var s=new XMLHttpRequest;if(s.open("GET",f.url,!1),s.send(null),200===s.status){var t=s.responseText||"";t=t.slice(-300);var u=t.match(/\/\/# sourceMappingURL=(.*)$/);if(u){var v=u[1];"~"===v.charAt(0)&&(v=e()+v.slice(1)),f.url=v.slice(0,-4)}}}n.push(f)}return n.length?{name:a.name,message:a.message,url:d(),stack:n}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=j),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,e){for(var h,i,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==f&&o!==g.report){if(i={url:null,func:j,line:null,column:null},o.name?i.func=o.name:(h=k.exec(o.toString()))&&(i.func=h[1]),"undefined"==typeof i.func)try{i.func=h.input.substring(0,h.input.indexOf("{"))}catch(p){}m[""+o]?n=!0:m[""+o]=!0,l.push(i)}e&&l.splice(0,e);var q={name:a.name,message:a.message,url:d(),stack:l};return b(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),q}function f(b,e){var f=null;e=null==e?0:+e;try{if(f=a(b))return f}catch(h){if(g.debug)throw h}try{ +if(f=c(b,e+1))return f}catch(h){if(g.debug)throw h}return{name:b.name,message:b.message,url:d()}}return f.augmentStackTraceWithInitialElement=b,f.computeStackTraceFromStackProp=a,f}(),b.exports=g}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{6:6}],8:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}],9:[function(a,b,c){function d(a,b){var c=(65535&a)+(65535&b),d=(a>>16)+(b>>16)+(c>>16);return d<<16|65535&c}function e(a,b){return a<>>32-b}function f(a,b,c,f,g,h){return d(e(d(d(b,a),d(f,h)),g),c)}function g(a,b,c,d,e,g,h){return f(b&c|~b&d,a,b,e,g,h)}function h(a,b,c,d,e,g,h){return f(b&d|c&~d,a,b,e,g,h)}function i(a,b,c,d,e,g,h){return f(b^c^d,a,b,e,g,h)}function j(a,b,c,d,e,g,h){return f(c^(b|~d),a,b,e,g,h)}function k(a,b){a[b>>5]|=128<>>9<<4)+14]=b;var c,e,f,k,l,m=1732584193,n=-271733879,o=-1732584194,p=271733878;for(c=0;c>5]>>>b%32&255);return c}function m(a){var b,c=[];for(c[(a.length>>2)-1]=void 0,b=0;b>5]|=(255&a.charCodeAt(b/8))<16&&(e=k(e,8*a.length)),c=0;c<16;c+=1)f[c]=909522486^e[c],g[c]=1549556828^e[c];return d=k(f.concat(m(b)),512+8*b.length),l(k(g.concat(d),640))}function p(a){var b,c,d="0123456789abcdef",e="";for(c=0;c>>4&15)+d.charAt(15&b);return e}function q(a){return unescape(encodeURIComponent(a))}function r(a){return n(q(a))}function s(a){return p(r(a))}function t(a,b){return o(q(a),q(b))}function u(a,b){return p(t(a,b))}function v(a,b,c){return b?c?t(b,a):u(b,a):c?r(a):s(a)}b.exports=v},{}]},{},[5,1])(5)}); //# sourceMappingURL=raven.min.js.map \ No newline at end of file diff --git a/dist/ember/raven.min.js.map b/dist/ember/raven.min.js.map index 19144146c529..9706de78ff90 100644 --- a/dist/ember/raven.min.js.map +++ b/dist/ember/raven.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","emberPlugin","Ember","_oldOnError","onerror","error","captureException","RSVP","on","reason","extra","context","captureMessage","addPlugin","5","2","RavenConfigError","message","name","prototype","constructor","3","utils","wrapMethod","console","level","callback","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","msg","safeJoin","data","logger","Function","apply","6","4","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","sanitizeKeys","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isError","isObject","isPlainObject","isErrorEvent","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","sanitize","wrapConsoleMethod","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","config","dsn","options","_logDebug","globalOptions","key","value","setDSN","push","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","toString","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","substr","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","func","undefined","wrap","_before","wrapped","deep","_ignoreNextOnError","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","T","event","unhandledPromiseRejection","B","_promiseRejectionHandler","bind","addEventListener","P","removeEventListener","ex","trimHeadFrames","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","U","currentOptions","exKeys","Object","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","setDataCallback","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","L","setTimeout","$","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","_","evtName","_keypressTimeout","target","category","ba","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","ca","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","C","_originalFunctionToString","Q","D","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","type","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","E","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","R","builtin","S","F","installer","concat","G","str","m","exec","allowSecretKey","J","port","A","V","stackInfo","_triggerEvent","_processException","lineno","X","frame","_normalizeFrame","in_app","ga","stackInfoUrl","normalized","filename","line","colno","column","function","fa","prefixedMessage","exception","values","culprit","ha","request","Referer","breadcrumbs","_trimBreadcrumbs","ia","urlProp","urlProps","ja","httpData","userAgent","User-Agent","referrer","y","_backoffDuration","_backoffStart","ma","na","current","last","oa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Y","baseData","project","platform","_getHttpData","serverName","server_name","_sanitizeData","forEach","random","_sendProcessedPayload","pa","ra","qa","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","sa","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","open","setRequestHeader","send","ta","hash","evaluated","z","Z","setUser","setReleaseContext","7","8","9","RavenConstructor","_Raven","noConflict","Client","what","supportsErrorEvent","ErrorEvent","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","wrappedCallback","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","sanitizeMask","safeInput","o_O","getLocationHref","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","charAt","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","string","raw"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file +{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","emberPlugin","Ember","_oldOnError","onerror","error","captureException","RSVP","on","reason","extra","context","captureMessage","addPlugin","5","2","RavenConfigError","message","name","prototype","constructor","3","utils","wrapMethod","console","level","callback","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","msg","safeJoin","data","logger","Function","apply","6","4","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","sanitizeKeys","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isErrorEvent","isDOMError","isDOMException","isError","isObject","isPlainObject","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","sanitize","wrapConsoleMethod","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","config","dsn","options","_logDebug","globalOptions","key","value","setDSN","push","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","toString","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","substr","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","func","undefined","wrap","_before","wrapped","deep","_ignoreNextOnError","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","T","event","unhandledPromiseRejection","B","_promiseRejectionHandler","bind","addEventListener","P","removeEventListener","ex","trimHeadFrames","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","U","currentOptions","exKeys","Object","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","setDataCallback","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","L","setTimeout","$","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","_","evtName","_keypressTimeout","target","category","ba","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","ca","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","C","_originalFunctionToString","Q","D","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","type","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","E","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","R","builtin","S","F","installer","concat","G","str","m","exec","allowSecretKey","J","port","A","V","stackInfo","_triggerEvent","_processException","lineno","X","frame","_normalizeFrame","in_app","ga","stackInfoUrl","normalized","filename","line","colno","column","function","fa","prefixedMessage","exception","values","culprit","ha","request","Referer","breadcrumbs","_trimBreadcrumbs","ia","urlProp","urlProps","ja","httpData","userAgent","User-Agent","referrer","y","_backoffDuration","_backoffStart","ma","na","current","last","oa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Y","baseData","project","platform","_getHttpData","serverName","server_name","_sanitizeData","forEach","random","_sendProcessedPayload","pa","ra","qa","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","sa","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","open","setRequestHeader","send","ta","hash","evaluated","z","Z","setUser","setReleaseContext","7","8","9","RavenConstructor","_Raven","noConflict","Client","what","supportsErrorEvent","ErrorEvent","supportsDOMError","DOMError","supportsDOMException","DOMException","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","wrappedCallback","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","sanitizeMask","safeInput","o_O","getLocationHref","getLocationOrigin","origin","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","responseText","sourceMaps","sourceMapAddress","charAt","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","string","raw"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file diff --git a/dist/raven.js b/dist/raven.js index ac437a93d54b..5919ae68b0fd 100644 --- a/dist/raven.js +++ b/dist/raven.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.24.2 (540f32b) | github.com/getsentry/raven-js */ +/*! Raven.js 3.25.0 (80dffad) | github.com/getsentry/raven-js */ /* * Includes TraceKit @@ -74,10 +74,12 @@ var md5 = _dereq_(8); var RavenConfigError = _dereq_(1); var utils = _dereq_(5); +var isErrorEvent = utils.isErrorEvent; +var isDOMError = utils.isDOMError; +var isDOMException = utils.isDOMException; var isError = utils.isError; var isObject = utils.isObject; var isPlainObject = utils.isPlainObject; -var isErrorEvent = utils.isErrorEvent; var isUndefined = utils.isUndefined; var isFunction = utils.isFunction; var isString = utils.isString; @@ -205,7 +207,7 @@ Raven.prototype = { // webpack (using a build step causes webpack #1617). Grunt verifies that // this value matches package.json during build. // See: https://github.com/getsentry/raven-js/issues/465 - VERSION: '3.24.2', + VERSION: '3.25.0', debug: false, @@ -537,6 +539,23 @@ Raven.prototype = { if (isErrorEvent(ex) && ex.error) { // If it is an ErrorEvent with `error` property, extract it to get actual Error ex = ex.error; + } else if (isDOMError(ex) || isDOMException(ex)) { + // If it is a DOMError or DOMException (which are legacy APIs, but still supported in some browsers) + // then we just extract the name and message, as they don't provide anything else + // https://developer.mozilla.org/en-US/docs/Web/API/DOMError + // https://developer.mozilla.org/en-US/docs/Web/API/DOMException + var name = ex.name || (isDOMError(ex) ? 'DOMError' : 'DOMException'); + var message = ex.message ? name + ': ' + ex.message : name; + + return this.captureMessage( + message, + objectMerge(options, { + // neither DOMError or DOMException provide stack trace and we most likely wont get it this way as well + // but it's barely any overhead so we may at least try + stacktrace: true, + trimHeadFrames: options.trimHeadFrames + 1 + }) + ); } else if (isError(ex)) { // we have a real Error object ex = ex; @@ -548,6 +567,7 @@ Raven.prototype = { ex = new Error(options.message); } else { // If none of previous checks were valid, then it means that + // it's not a DOMError/DOMException // it's not a plain Object // it's not a valid ErrorEvent (one with an error property) // it's not an Error @@ -2320,7 +2340,7 @@ function isObject(what) { // Yanked from https://git.io/vS8DV re-used under CC0 // with some tiny modifications function isError(value) { - switch ({}.toString.call(value)) { + switch (Object.prototype.toString.call(value)) { case '[object Error]': return true; case '[object Exception]': @@ -2333,7 +2353,15 @@ function isError(value) { } function isErrorEvent(value) { - return supportsErrorEvent() && {}.toString.call(value) === '[object ErrorEvent]'; + return Object.prototype.toString.call(value) === '[object ErrorEvent]'; +} + +function isDOMError(value) { + return Object.prototype.toString.call(value) === '[object DOMError]'; +} + +function isDOMException(value) { + return Object.prototype.toString.call(value) === '[object DOMException]'; } function isUndefined(what) { @@ -2376,6 +2404,24 @@ function supportsErrorEvent() { } } +function supportsDOMError() { + try { + new DOMError(''); // eslint-disable-line no-new + return true; + } catch (e) { + return false; + } +} + +function supportsDOMException() { + try { + new DOMException(''); // eslint-disable-line no-new + return true; + } catch (e) { + return false; + } +} + function supportsFetch() { if (!('fetch' in _window)) return false; @@ -2891,6 +2937,8 @@ module.exports = { isObject: isObject, isError: isError, isErrorEvent: isErrorEvent, + isDOMError: isDOMError, + isDOMException: isDOMException, isUndefined: isUndefined, isFunction: isFunction, isPlainObject: isPlainObject, @@ -2898,6 +2946,8 @@ module.exports = { isArray: isArray, isEmptyObject: isEmptyObject, supportsErrorEvent: supportsErrorEvent, + supportsDOMError: supportsDOMError, + supportsDOMException: supportsDOMException, supportsFetch: supportsFetch, supportsReferrerPolicy: supportsReferrerPolicy, supportsPromiseRejectionEvent: supportsPromiseRejectionEvent, @@ -2957,10 +3007,14 @@ var ERROR_TYPES_RE = /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Ran function getLocationHref() { if (typeof document === 'undefined' || document.location == null) return ''; - return document.location.href; } +function getLocationOrigin() { + if (typeof document === 'undefined' || document.location == null) return ''; + return document.location.origin; +} + /** * TraceKit.report: cross-browser processing of unhandled exceptions * @@ -3368,6 +3422,44 @@ TraceKit.computeStackTrace = (function computeStackTraceWrapper() { element.func = UNKNOWN_FUNCTION; } + if (element.url && element.url.substr(0, 5) === 'blob:') { + // Special case for handling JavaScript loaded into a blob. + // We use a synchronous AJAX request here as a blob is already in + // memory - it's not making a network request. This will generate a warning + // in the browser console, but there has already been an error so that's not + // that much of an issue. + var xhr = new XMLHttpRequest(); + xhr.open('GET', element.url, false); + xhr.send(null); + + // If we failed to download the source, skip this patch + if (xhr.status === 200) { + var source = xhr.responseText || ''; + + // We trim the source down to the last 300 characters as sourceMappingURL is always at the end of the file. + // Why 300? To be in line with: https://github.com/getsentry/sentry/blob/4af29e8f2350e20c28a6933354e4f42437b4ba42/src/sentry/lang/javascript/processor.py#L164-L175 + source = source.slice(-300); + + // Now we dig out the source map URL + var sourceMaps = source.match(/\/\/# sourceMappingURL=(.*)$/); + + // If we don't find a source map comment or we find more than one, continue on to the next element. + if (sourceMaps) { + var sourceMapAddress = sourceMaps[1]; + + // Now we check to see if it's a relative URL. + // If it is, convert it to an absolute one. + if (sourceMapAddress.charAt(0) === '~') { + sourceMapAddress = getLocationOrigin() + sourceMapAddress.slice(1); + } + + // Now we strip the '.map' off of the end of the URL and update the + // element so that Sentry can match the map to the blob. + element.url = sourceMapAddress.slice(0, -4); + } + } + } + stack.push(element); } diff --git a/dist/raven.min.js b/dist/raven.min.js index aeb9035dc4f0..021c5b353549 100644 --- a/dist/raven.min.js +++ b/dist/raven.min.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.24.2 (540f32b) | github.com/getsentry/raven-js */ -!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.Raven=a()}}(function(){return function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};b[g][0].call(k.exports,function(a){var c=b[g][1][a];return e(c?c:a)},k,k.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;gthis.k.maxBreadcrumbs&&this.u.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.r.push([a,b]),this.n&&this.F(),this},setUserContext:function(a){return this.j.user=a,this},setExtraContext:function(a){return this.Z("extra",a),this},setTagsContext:function(a){return this.Z("tags",a),this},clearContext:function(){return this.j={},this},getContext:function(){return JSON.parse(h(this.j))},setEnvironment:function(a){return this.k.environment=a,this},setRelease:function(a){return this.k.release=a,this},setDataCallback:function(a){var b=this.k.dataCallback;return this.k.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.k.breadcrumbCallback;return this.k.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.k.shouldSendCallback;return this.k.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.k.transport=a,this},lastException:function(){return this.d},lastEventId:function(){return this.f},isSetup:function(){return!!this.a&&(!!this.g||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.z("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=P.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(Q){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.H;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.j.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.J(this.G(c)),h=Q.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(Q.head||Q.body).appendChild(h)}},L:function(){var a=this;this.m+=1,setTimeout(function(){a.m-=1})},$:function(a,b){var c,d;if(this.b){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),Q.createEvent?(c=Q.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=Q.createEventObject(),c.eventType=a);for(d in b)y(b,d)&&(c[d]=b[d]);if(Q.createEvent)Q.dispatchEvent(c);else try{Q.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},_:function(a){var b=this;return function(c){if(b.aa=null,b.v!==c){b.v=c;var d;try{d=C(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ba:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.aa;g||a._("input")(c),clearTimeout(g),a.aa=setTimeout(function(){a.aa=null},b)}}},ca:function(a,b){var c=F(this.w.href),d=F(b),e=F(a);this.x=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},C:function(){var a=this;a.da=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.M?a.da.apply(this.O,arguments):a.da.apply(this,arguments)}},Q:function(){this.da&&(Function.prototype.toString=this.da)},D:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.ca(b.x,c+""),a.apply(this,arguments)}};G(history,"pushState",j,d),G(history,"replaceState",j,d)}if(c.console&&"console"in P&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};u(["debug","info","warn","error","log"],function(a,b){M(console,b,k)})}},R:function(){for(var a;this.t.length;){a=this.t.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},S:function(){for(var a in this.q)this.p[a]=this.q[a]},F:function(){var a=this;u(this.r,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},G:function(a){var b=O.exec(a),c={},d=7;try{for(;d--;)c[N[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.k.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},J:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},A:function(){this.m||this.V.apply(this,arguments)},V:function(a,b){var c=this.X(a,b);this.$("handle",{stackInfo:a,options:b}),this.fa(a.name,a.message,a.url,a.lineno,c,b)},X:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(u(a.stack,function(b,e){var f=c.ga(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.u,0)}),this.j.user&&(a.user=this.j.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),a=this.pa(a),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||t(a[b]))&&delete a[b]}),q(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!t(a)&&(!q(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.ma()?void this.z("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function B(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&j(b))for(c=b.split(/\s+/),f=0;fc?M(a,b-1):d}function N(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?T:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function O(a,b){function c(a){return k(a)?a.map(function(a){return c(a)}):i(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!k(b)||k(b)&&0===b.length)return a;var d,e=w(b),f="********";try{d=JSON.parse(P(a))}catch(g){return a}return c(d)}var P=a(7),Q="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},R=3,S=51200,T=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isUndefined:g,isFunction:h,isPlainObject:i,isString:j,isArray:k,isEmptyObject:l,supportsErrorEvent:m,supportsFetch:n,supportsReferrerPolicy:o,supportsPromiseRejectionEvent:p,wrappedCallback:q,each:r,objectMerge:s,truncate:u,objectFrozen:t,hasKey:v,joinRegExp:w,urlencode:x,uuid4:z,htmlTreeAsString:A,htmlElementAsString:B,isSameException:E,isSameStacktrace:F,parseUrl:y,fill:G,safeJoin:H,serializeException:M,serializeKeysForMessage:N,sanitize:O}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{7:7}],6:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}var e=a(5),f={collectWindowErrors:!0,debug:!1},g="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},h=[].slice,i="?",j=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;f.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function k(a,b){var c=null;if(!b||f.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(h.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,g,h){var l=null,m=e.isErrorEvent(h)?h.error:h,n=e.isErrorEvent(a)?a.message:a;if(v)f.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&e.isError(m))l=f.computeStackTrace(m),k(l,!0);else{var p,r={url:b,line:c,column:g},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(j);p&&(s=p[1],n=p[2])}r.func=i,l={name:s,message:n,url:d(),stack:[r]},k(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=g.onerror,g.onerror=l,r=!0)}function n(){r&&(g.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,k.apply(null,[a,!1].concat(b))}function p(a,b){var c=h.call(arguments,1);if(v){if(u===a)return;o()}var d=f.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),f.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,e,f=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,g=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,h=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,j=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,k=/\((\S*)(?::(\d+))(?::(\d+))\)/,l=a.stack.split("\n"),m=[],n=(/^(.*) is undefined$/.exec(a.message),0),o=l.length;n eval")>-1;q&&(b=j.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==n||c[5]||"undefined"==typeof a.columnNumber||(m[0].column=a.columnNumber+1),e={url:c[3],func:c[1]||i,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}!e.func&&e.line&&(e.func=i),m.push(e)}return m.length?{name:a.name,message:a.message,url:d(),stack:m}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=i),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,g){for(var h,j,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==e&&o!==f.report){if(j={url:null,func:i,line:null,column:null},o.name?j.func=o.name:(h=k.exec(o.toString()))&&(j.func=h[1]),"undefined"==typeof j.func)try{j.func=h.input.substring(0,h.input.indexOf("{"))}catch(p){}m[""+o]?n=!0:m[""+o]=!0,l.push(j)}g&&l.splice(0,g);var q={name:a.name,message:a.message,url:d(),stack:l};return b(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),q}function e(b,e){var g=null;e=null==e?0:+e;try{if(g=a(b))return g}catch(h){if(f.debug)throw h}try{if(g=c(b,e+1))return g}catch(h){if(f.debug)throw h}return{name:b.name,message:b.message,url:d()}}return e.augmentStackTraceWithInitialElement=b,e.computeStackTraceFromStackProp=a,e}(),b.exports=f}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{5:5}],7:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}],8:[function(a,b,c){function d(a,b){var c=(65535&a)+(65535&b),d=(a>>16)+(b>>16)+(c>>16);return d<<16|65535&c}function e(a,b){return a<>>32-b}function f(a,b,c,f,g,h){return d(e(d(d(b,a),d(f,h)),g),c)}function g(a,b,c,d,e,g,h){return f(b&c|~b&d,a,b,e,g,h)}function h(a,b,c,d,e,g,h){return f(b&d|c&~d,a,b,e,g,h)}function i(a,b,c,d,e,g,h){return f(b^c^d,a,b,e,g,h)}function j(a,b,c,d,e,g,h){ -return f(c^(b|~d),a,b,e,g,h)}function k(a,b){a[b>>5]|=128<>>9<<4)+14]=b;var c,e,f,k,l,m=1732584193,n=-271733879,o=-1732584194,p=271733878;for(c=0;c>5]>>>b%32&255);return c}function m(a){var b,c=[];for(c[(a.length>>2)-1]=void 0,b=0;b>5]|=(255&a.charCodeAt(b/8))<16&&(e=k(e,8*a.length)),c=0;c<16;c+=1)f[c]=909522486^e[c],g[c]=1549556828^e[c];return d=k(f.concat(m(b)),512+8*b.length),l(k(g.concat(d),640))}function p(a){var b,c,d="0123456789abcdef",e="";for(c=0;c>>4&15)+d.charAt(15&b);return e}function q(a){return unescape(encodeURIComponent(a))}function r(a){return n(q(a))}function s(a){return p(r(a))}function t(a,b){return o(q(a),q(b))}function u(a,b){return p(t(a,b))}function v(a,b,c){return b?c?t(b,a):u(b,a):c?r(a):s(a)}b.exports=v},{}]},{},[4])(4)}); +/*! Raven.js 3.25.0 (80dffad) | github.com/getsentry/raven-js */ +!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.Raven=a()}}(function(){return function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};b[g][0].call(k.exports,function(a){var c=b[g][1][a];return e(c?c:a)},k,k.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;gthis.k.maxBreadcrumbs&&this.u.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.r.push([a,b]),this.n&&this.F(),this},setUserContext:function(a){return this.j.user=a,this},setExtraContext:function(a){return this.Z("extra",a),this},setTagsContext:function(a){return this.Z("tags",a),this},clearContext:function(){return this.j={},this},getContext:function(){return JSON.parse(h(this.j))},setEnvironment:function(a){return this.k.environment=a,this},setRelease:function(a){return this.k.release=a,this},setDataCallback:function(a){var b=this.k.dataCallback;return this.k.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.k.breadcrumbCallback;return this.k.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.k.shouldSendCallback;return this.k.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.k.transport=a,this},lastException:function(){return this.d},lastEventId:function(){return this.f},isSetup:function(){return!!this.a&&(!!this.g||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.z("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=R.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(S){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.H;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.j.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.J(this.G(c)),h=S.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(S.head||S.body).appendChild(h)}},L:function(){var a=this;this.m+=1,setTimeout(function(){a.m-=1})},$:function(a,b){var c,d;if(this.b){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),S.createEvent?(c=S.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=S.createEventObject(),c.eventType=a);for(d in b)A(b,d)&&(c[d]=b[d]);if(S.createEvent)S.dispatchEvent(c);else try{S.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},_:function(a){var b=this;return function(c){if(b.aa=null,b.v!==c){b.v=c;var d;try{d=E(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ba:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.aa;g||a._("input")(c),clearTimeout(g),a.aa=setTimeout(function(){a.aa=null},b)}}},ca:function(a,b){var c=H(this.w.href),d=H(b),e=H(a);this.x=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},C:function(){var a=this;a.da=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.M?a.da.apply(this.O,arguments):a.da.apply(this,arguments)}},Q:function(){this.da&&(Function.prototype.toString=this.da)},D:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.ca(b.x,c+""),a.apply(this,arguments)}};I(history,"pushState",j,d),I(history,"replaceState",j,d)}if(c.console&&"console"in R&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};w(["debug","info","warn","error","log"],function(a,b){O(console,b,k)})}},R:function(){for(var a;this.t.length;){a=this.t.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},S:function(){for(var a in this.q)this.p[a]=this.q[a]},F:function(){var a=this;w(this.r,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},G:function(a){var b=Q.exec(a),c={},d=7;try{for(;d--;)c[P[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.k.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},J:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},A:function(){this.m||this.V.apply(this,arguments)},V:function(a,b){var c=this.X(a,b);this.$("handle",{stackInfo:a,options:b}),this.fa(a.name,a.message,a.url,a.lineno,c,b)},X:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(w(a.stack,function(b,e){var f=c.ga(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.u,0)}),this.j.user&&(a.user=this.j.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),a=this.pa(a),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||v(a[b]))&&delete a[b]}),s(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!v(a)&&(!s(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.ma()?void this.z("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function F(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&l(b))for(c=b.split(/\s+/),f=0;fc?Q(a,b-1):d}function R(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?X:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function S(a,b){function c(a){return m(a)?a.map(function(a){return c(a)}):k(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!m(b)||m(b)&&0===b.length)return a;var d,e=A(b),f="********";try{d=JSON.parse(T(a))}catch(g){return a}return c(d)}var T=a(7),U="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},V=3,W=51200,X=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isDOMError:g,isDOMException:h,isUndefined:i,isFunction:j,isPlainObject:k,isString:l,isArray:m,isEmptyObject:n,supportsErrorEvent:o,supportsDOMError:p,supportsDOMException:q,supportsFetch:r,supportsReferrerPolicy:s,supportsPromiseRejectionEvent:t,wrappedCallback:u,each:v,objectMerge:w,truncate:y,objectFrozen:x,hasKey:z,joinRegExp:A,urlencode:B,uuid4:D,htmlTreeAsString:E,htmlElementAsString:F,isSameException:I,isSameStacktrace:J,parseUrl:C,fill:K,safeJoin:L,serializeException:Q,serializeKeysForMessage:R,sanitize:S}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{7:7}],6:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}function e(){return"undefined"==typeof document||null==document.location?"":document.location.origin}var f=a(5),g={collectWindowErrors:!0,debug:!1},h="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},i=[].slice,j="?",k=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;g.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function e(a,b){var c=null;if(!b||g.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(i.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,h,i){var l=null,m=f.isErrorEvent(i)?i.error:i,n=f.isErrorEvent(a)?a.message:a;if(v)g.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&f.isError(m))l=g.computeStackTrace(m),e(l,!0);else{var p,r={url:b,line:c,column:h},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(k);p&&(s=p[1],n=p[2])}r.func=j,l={name:s,message:n,url:d(),stack:[r]},e(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=h.onerror,h.onerror=l,r=!0)}function n(){r&&(h.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,e.apply(null,[a,!1].concat(b))}function p(a,b){var c=i.call(arguments,1);if(v){if(u===a)return;o()}var d=g.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),g.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,f,g=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,h=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,i=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,k=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,l=/\((\S*)(?::(\d+))(?::(\d+))\)/,m=a.stack.split("\n"),n=[],o=(/^(.*) is undefined$/.exec(a.message),0),p=m.length;o eval")>-1;r&&(b=k.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==o||c[5]||"undefined"==typeof a.columnNumber||(n[0].column=a.columnNumber+1),f={url:c[3],func:c[1]||j,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}if(!f.func&&f.line&&(f.func=j),f.url&&"blob:"===f.url.substr(0,5)){var s=new XMLHttpRequest;if(s.open("GET",f.url,!1),s.send(null),200===s.status){var t=s.responseText||"";t=t.slice(-300);var u=t.match(/\/\/# sourceMappingURL=(.*)$/);if(u){var v=u[1];"~"===v.charAt(0)&&(v=e()+v.slice(1)),f.url=v.slice(0,-4)}}}n.push(f)}return n.length?{name:a.name,message:a.message,url:d(),stack:n}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=j),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,e){for(var h,i,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==f&&o!==g.report){if(i={url:null,func:j,line:null,column:null},o.name?i.func=o.name:(h=k.exec(o.toString()))&&(i.func=h[1]),"undefined"==typeof i.func)try{i.func=h.input.substring(0,h.input.indexOf("{"))}catch(p){}m[""+o]?n=!0:m[""+o]=!0,l.push(i)}e&&l.splice(0,e);var q={name:a.name,message:a.message,url:d(),stack:l};return b(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),q}function f(b,e){var f=null;e=null==e?0:+e;try{if(f=a(b))return f}catch(h){if(g.debug)throw h}try{if(f=c(b,e+1))return f}catch(h){if(g.debug)throw h}return{name:b.name,message:b.message,url:d()}}return f.augmentStackTraceWithInitialElement=b,f.computeStackTraceFromStackProp=a,f}(),b.exports=g}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{5:5}],7:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}],8:[function(a,b,c){function d(a,b){var c=(65535&a)+(65535&b),d=(a>>16)+(b>>16)+(c>>16);return d<<16|65535&c}function e(a,b){return a<>>32-b}function f(a,b,c,f,g,h){return d(e(d(d(b,a),d(f,h)),g),c)}function g(a,b,c,d,e,g,h){return f(b&c|~b&d,a,b,e,g,h)}function h(a,b,c,d,e,g,h){return f(b&d|c&~d,a,b,e,g,h)}function i(a,b,c,d,e,g,h){return f(b^c^d,a,b,e,g,h)}function j(a,b,c,d,e,g,h){return f(c^(b|~d),a,b,e,g,h)}function k(a,b){a[b>>5]|=128<>>9<<4)+14]=b;var c,e,f,k,l,m=1732584193,n=-271733879,o=-1732584194,p=271733878;for(c=0;c>5]>>>b%32&255);return c}function m(a){var b,c=[];for(c[(a.length>>2)-1]=void 0,b=0;b>5]|=(255&a.charCodeAt(b/8))<16&&(e=k(e,8*a.length)),c=0;c<16;c+=1)f[c]=909522486^e[c],g[c]=1549556828^e[c];return d=k(f.concat(m(b)),512+8*b.length),l(k(g.concat(d),640))}function p(a){var b,c,d="0123456789abcdef",e="";for(c=0;c>>4&15)+d.charAt(15&b);return e}function q(a){return unescape(encodeURIComponent(a))}function r(a){return n(q(a))}function s(a){return p(r(a))}function t(a,b){return o(q(a),q(b))}function u(a,b){return p(t(a,b))}function v(a,b,c){return b?c?t(b,a):u(b,a):c?r(a):s(a)}b.exports=v},{}]},{},[4])(4)}); //# sourceMappingURL=raven.min.js.map \ No newline at end of file diff --git a/dist/raven.min.js.map b/dist/raven.min.js.map index 6287adb26595..aa94ff58f511 100644 --- a/dist/raven.min.js.map +++ b/dist/raven.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","RavenConfigError","message","name","prototype","constructor","2","utils","wrapMethod","console","level","callback","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","msg","safeJoin","data","logger","extra","Function","apply","5","3","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","sanitizeKeys","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isError","isObject","isPlainObject","isErrorEvent","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","sanitize","wrapConsoleMethod","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","config","dsn","options","_logDebug","globalOptions","key","value","setDSN","push","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","toString","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","substr","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","context","func","undefined","wrap","_before","wrapped","deep","_ignoreNextOnError","captureException","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","T","event","reason","unhandledPromiseRejection","B","_promiseRejectionHandler","bind","addEventListener","P","removeEventListener","ex","trimHeadFrames","error","captureMessage","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","U","currentOptions","exKeys","Object","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","addPlugin","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","setDataCallback","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","L","setTimeout","$","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","_","evtName","_keypressTimeout","target","category","ba","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","ca","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","C","_originalFunctionToString","Q","D","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","type","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","E","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","R","builtin","S","F","installer","concat","G","str","m","exec","allowSecretKey","J","port","A","V","stackInfo","_triggerEvent","_processException","lineno","X","frame","_normalizeFrame","in_app","ga","stackInfoUrl","normalized","filename","line","colno","column","function","fa","prefixedMessage","exception","values","culprit","ha","request","Referer","breadcrumbs","_trimBreadcrumbs","ia","urlProp","urlProps","ja","httpData","userAgent","User-Agent","referrer","y","_backoffDuration","_backoffStart","ma","na","current","last","oa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Y","baseData","project","platform","_getHttpData","serverName","server_name","_sanitizeData","forEach","random","_sendProcessedPayload","pa","ra","qa","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","sa","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","onerror","open","setRequestHeader","send","ta","hash","evaluated","z","Z","setUser","setReleaseContext","6","7","8","4","RavenConstructor","_Raven","noConflict","Client","what","supportsErrorEvent","ErrorEvent","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","wrappedCallback","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","sanitizeMask","safeInput","o_O","getLocationHref","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","charAt","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","string","raw"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file +{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","RavenConfigError","message","name","prototype","constructor","2","utils","wrapMethod","console","level","callback","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","msg","safeJoin","data","logger","extra","Function","apply","5","3","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","sanitizeKeys","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isErrorEvent","isDOMError","isDOMException","isError","isObject","isPlainObject","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","sanitize","wrapConsoleMethod","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","config","dsn","options","_logDebug","globalOptions","key","value","setDSN","push","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","toString","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","substr","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","context","func","undefined","wrap","_before","wrapped","deep","_ignoreNextOnError","captureException","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","T","event","reason","unhandledPromiseRejection","B","_promiseRejectionHandler","bind","addEventListener","P","removeEventListener","ex","trimHeadFrames","error","captureMessage","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","U","currentOptions","exKeys","Object","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","addPlugin","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","setDataCallback","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","L","setTimeout","$","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","_","evtName","_keypressTimeout","target","category","ba","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","ca","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","C","_originalFunctionToString","Q","D","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","type","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","E","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","R","builtin","S","F","installer","concat","G","str","m","exec","allowSecretKey","J","port","A","V","stackInfo","_triggerEvent","_processException","lineno","X","frame","_normalizeFrame","in_app","ga","stackInfoUrl","normalized","filename","line","colno","column","function","fa","prefixedMessage","exception","values","culprit","ha","request","Referer","breadcrumbs","_trimBreadcrumbs","ia","urlProp","urlProps","ja","httpData","userAgent","User-Agent","referrer","y","_backoffDuration","_backoffStart","ma","na","current","last","oa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Y","baseData","project","platform","_getHttpData","serverName","server_name","_sanitizeData","forEach","random","_sendProcessedPayload","pa","ra","qa","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","sa","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","onerror","open","setRequestHeader","send","ta","hash","evaluated","z","Z","setUser","setReleaseContext","6","7","8","4","RavenConstructor","_Raven","noConflict","Client","what","supportsErrorEvent","ErrorEvent","supportsDOMError","DOMError","supportsDOMException","DOMException","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","wrappedCallback","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","sanitizeMask","safeInput","o_O","getLocationHref","getLocationOrigin","origin","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","responseText","sourceMaps","sourceMapAddress","charAt","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","string","raw"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file diff --git a/dist/require,vue/raven.js b/dist/require,vue/raven.js index a44a8b154c74..a7ed193f5efe 100644 --- a/dist/require,vue/raven.js +++ b/dist/require,vue/raven.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.24.2 (540f32b) | github.com/getsentry/raven-js */ +/*! Raven.js 3.25.0 (80dffad) | github.com/getsentry/raven-js */ /* * Includes TraceKit @@ -141,10 +141,12 @@ var md5 = _dereq_(10); var RavenConfigError = _dereq_(3); var utils = _dereq_(7); +var isErrorEvent = utils.isErrorEvent; +var isDOMError = utils.isDOMError; +var isDOMException = utils.isDOMException; var isError = utils.isError; var isObject = utils.isObject; var isPlainObject = utils.isPlainObject; -var isErrorEvent = utils.isErrorEvent; var isUndefined = utils.isUndefined; var isFunction = utils.isFunction; var isString = utils.isString; @@ -272,7 +274,7 @@ Raven.prototype = { // webpack (using a build step causes webpack #1617). Grunt verifies that // this value matches package.json during build. // See: https://github.com/getsentry/raven-js/issues/465 - VERSION: '3.24.2', + VERSION: '3.25.0', debug: false, @@ -604,6 +606,23 @@ Raven.prototype = { if (isErrorEvent(ex) && ex.error) { // If it is an ErrorEvent with `error` property, extract it to get actual Error ex = ex.error; + } else if (isDOMError(ex) || isDOMException(ex)) { + // If it is a DOMError or DOMException (which are legacy APIs, but still supported in some browsers) + // then we just extract the name and message, as they don't provide anything else + // https://developer.mozilla.org/en-US/docs/Web/API/DOMError + // https://developer.mozilla.org/en-US/docs/Web/API/DOMException + var name = ex.name || (isDOMError(ex) ? 'DOMError' : 'DOMException'); + var message = ex.message ? name + ': ' + ex.message : name; + + return this.captureMessage( + message, + objectMerge(options, { + // neither DOMError or DOMException provide stack trace and we most likely wont get it this way as well + // but it's barely any overhead so we may at least try + stacktrace: true, + trimHeadFrames: options.trimHeadFrames + 1 + }) + ); } else if (isError(ex)) { // we have a real Error object ex = ex; @@ -615,6 +634,7 @@ Raven.prototype = { ex = new Error(options.message); } else { // If none of previous checks were valid, then it means that + // it's not a DOMError/DOMException // it's not a plain Object // it's not a valid ErrorEvent (one with an error property) // it's not an Error @@ -2387,7 +2407,7 @@ function isObject(what) { // Yanked from https://git.io/vS8DV re-used under CC0 // with some tiny modifications function isError(value) { - switch ({}.toString.call(value)) { + switch (Object.prototype.toString.call(value)) { case '[object Error]': return true; case '[object Exception]': @@ -2400,7 +2420,15 @@ function isError(value) { } function isErrorEvent(value) { - return supportsErrorEvent() && {}.toString.call(value) === '[object ErrorEvent]'; + return Object.prototype.toString.call(value) === '[object ErrorEvent]'; +} + +function isDOMError(value) { + return Object.prototype.toString.call(value) === '[object DOMError]'; +} + +function isDOMException(value) { + return Object.prototype.toString.call(value) === '[object DOMException]'; } function isUndefined(what) { @@ -2443,6 +2471,24 @@ function supportsErrorEvent() { } } +function supportsDOMError() { + try { + new DOMError(''); // eslint-disable-line no-new + return true; + } catch (e) { + return false; + } +} + +function supportsDOMException() { + try { + new DOMException(''); // eslint-disable-line no-new + return true; + } catch (e) { + return false; + } +} + function supportsFetch() { if (!('fetch' in _window)) return false; @@ -2958,6 +3004,8 @@ module.exports = { isObject: isObject, isError: isError, isErrorEvent: isErrorEvent, + isDOMError: isDOMError, + isDOMException: isDOMException, isUndefined: isUndefined, isFunction: isFunction, isPlainObject: isPlainObject, @@ -2965,6 +3013,8 @@ module.exports = { isArray: isArray, isEmptyObject: isEmptyObject, supportsErrorEvent: supportsErrorEvent, + supportsDOMError: supportsDOMError, + supportsDOMException: supportsDOMException, supportsFetch: supportsFetch, supportsReferrerPolicy: supportsReferrerPolicy, supportsPromiseRejectionEvent: supportsPromiseRejectionEvent, @@ -3024,10 +3074,14 @@ var ERROR_TYPES_RE = /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Ran function getLocationHref() { if (typeof document === 'undefined' || document.location == null) return ''; - return document.location.href; } +function getLocationOrigin() { + if (typeof document === 'undefined' || document.location == null) return ''; + return document.location.origin; +} + /** * TraceKit.report: cross-browser processing of unhandled exceptions * @@ -3435,6 +3489,44 @@ TraceKit.computeStackTrace = (function computeStackTraceWrapper() { element.func = UNKNOWN_FUNCTION; } + if (element.url && element.url.substr(0, 5) === 'blob:') { + // Special case for handling JavaScript loaded into a blob. + // We use a synchronous AJAX request here as a blob is already in + // memory - it's not making a network request. This will generate a warning + // in the browser console, but there has already been an error so that's not + // that much of an issue. + var xhr = new XMLHttpRequest(); + xhr.open('GET', element.url, false); + xhr.send(null); + + // If we failed to download the source, skip this patch + if (xhr.status === 200) { + var source = xhr.responseText || ''; + + // We trim the source down to the last 300 characters as sourceMappingURL is always at the end of the file. + // Why 300? To be in line with: https://github.com/getsentry/sentry/blob/4af29e8f2350e20c28a6933354e4f42437b4ba42/src/sentry/lang/javascript/processor.py#L164-L175 + source = source.slice(-300); + + // Now we dig out the source map URL + var sourceMaps = source.match(/\/\/# sourceMappingURL=(.*)$/); + + // If we don't find a source map comment or we find more than one, continue on to the next element. + if (sourceMaps) { + var sourceMapAddress = sourceMaps[1]; + + // Now we check to see if it's a relative URL. + // If it is, convert it to an absolute one. + if (sourceMapAddress.charAt(0) === '~') { + sourceMapAddress = getLocationOrigin() + sourceMapAddress.slice(1); + } + + // Now we strip the '.map' off of the end of the URL and update the + // element so that Sentry can match the map to the blob. + element.url = sourceMapAddress.slice(0, -4); + } + } + } + stack.push(element); } diff --git a/dist/require,vue/raven.min.js b/dist/require,vue/raven.min.js index c6682967eb6c..c563391d4c2b 100644 --- a/dist/require,vue/raven.min.js +++ b/dist/require,vue/raven.min.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.24.2 (540f32b) | github.com/getsentry/raven-js */ -!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.Raven=a()}}(function(){var a;return function b(a,c,d){function e(g,h){if(!c[g]){if(!a[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};a[g][0].call(k.exports,function(b){var c=a[g][1][b];return e(c?c:b)},k,k.exports,b,a,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;g":"anonymous component")+(a._isVue&&a.$options.__file?" at "+a.$options.__file:"")}function e(a,b){if(b=b||window.Vue,b&&b.config){var c=b.config.errorHandler;b.config.errorHandler=function(b,e,f){var g={};"[object Object]"===Object.prototype.toString.call(e)&&(g.componentName=d(e),g.propsData=e.$options.propsData),"undefined"!=typeof f&&(g.lifecycleHook=f),a.captureException(b,{extra:g}),"function"==typeof c&&c.call(this,b,e,f)}}}b.exports=e,a(6).addPlugin(b.exports)},{6:6}],3:[function(a,b,c){function d(a){this.name="RavenConfigError",this.message=a}d.prototype=new Error,d.prototype.constructor=d,b.exports=d},{}],4:[function(a,b,c){var d=a(7),e=function(a,b,c){var e=a[b],f=a;if(b in a){var g="warn"===b?"warning":b;a[b]=function(){var a=[].slice.call(arguments),h=d.safeJoin(a," "),i={level:g,logger:"console",extra:{arguments:a}};"assert"===b?a[0]===!1&&(h="Assertion failed: "+(d.safeJoin(a.slice(1)," ")||"console.assert"),i.extra.arguments=a.slice(1),c&&c(h,i)):c&&c(h,i),e&&Function.prototype.apply.call(e,f,a)}}};b.exports={wrapMethod:e}},{7:7}],5:[function(a,b,c){(function(c){function d(){return+new Date}function e(a,b){return q(b)?function(c){return b(c,a)}:b}function f(){this.a=!("object"!=typeof JSON||!JSON.stringify),this.b=!p(Q),this.c=!p(R),this.d=null,this.e=null,this.f=null,this.g=null,this.h=null,this.i=null,this.j={},this.k={release:P.SENTRY_RELEASE&&P.SENTRY_RELEASE.id,logger:"javascript",ignoreErrors:[],ignoreUrls:[],whitelistUrls:[],includePaths:[],headers:null,collectWindowErrors:!0,captureUnhandledRejections:!0,maxMessageLength:0,maxUrlLength:250,stackTraceLimit:50,autoBreadcrumbs:!0,instrument:!0,sampleRate:1,sanitizeKeys:[]},this.l={method:"POST",keepalive:!0,referrerPolicy:I()?"origin":""},this.m=0,this.n=!1,this.o=Error.stackTraceLimit,this.p=P.console||{},this.q={},this.r=[],this.s=d(),this.t=[],this.u=[],this.v=null,this.w=P.location,this.x=this.w&&this.w.href,this.y();for(var a in this.p)this.q[a]=this.p[a]}var g=a(8),h=a(9),i=a(10),j=a(3),k=a(7),l=k.isError,m=k.isObject,n=k.isPlainObject,o=k.isErrorEvent,p=k.isUndefined,q=k.isFunction,r=k.isString,s=k.isArray,t=k.isEmptyObject,u=k.each,v=k.objectMerge,w=k.truncate,x=k.objectFrozen,y=k.hasKey,z=k.joinRegExp,A=k.urlencode,B=k.uuid4,C=k.htmlTreeAsString,D=k.isSameException,E=k.isSameStacktrace,F=k.parseUrl,G=k.fill,H=k.supportsFetch,I=k.supportsReferrerPolicy,J=k.serializeKeysForMessage,K=k.serializeException,L=k.sanitize,M=a(4).wrapMethod,N="source protocol user pass host port path".split(" "),O=/^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/,P="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},Q=P.document,R=P.navigator;f.prototype={VERSION:"3.24.2",debug:!1,TraceKit:g,config:function(a,b){var c=this;if(c.g)return this.z("error","Error: Raven has already been configured"),c;if(!a)return c;var d=c.k;b&&u(b,function(a,b){"tags"===a||"extra"===a||"user"===a?c.j[a]=b:d[a]=b}),c.setDSN(a),d.ignoreErrors.push(/^Script error\.?$/),d.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/),d.ignoreErrors=z(d.ignoreErrors),d.ignoreUrls=!!d.ignoreUrls.length&&z(d.ignoreUrls),d.whitelistUrls=!!d.whitelistUrls.length&&z(d.whitelistUrls),d.includePaths=z(d.includePaths),d.maxBreadcrumbs=Math.max(0,Math.min(d.maxBreadcrumbs||100,100));var e={xhr:!0,console:!0,dom:!0,location:!0,sentry:!0},f=d.autoBreadcrumbs;"[object Object]"==={}.toString.call(f)?f=v(e,f):f!==!1&&(f=e),d.autoBreadcrumbs=f;var h={tryCatch:!0},i=d.instrument;return"[object Object]"==={}.toString.call(i)?i=v(h,i):i!==!1&&(i=h),d.instrument=i,g.collectWindowErrors=!!d.collectWindowErrors,c},install:function(){var a=this;return a.isSetup()&&!a.n&&(g.report.subscribe(function(){a.A.apply(a,arguments)}),a.k.captureUnhandledRejections&&a.B(),a.C(),a.k.instrument&&a.k.instrument.tryCatch&&a.D(),a.k.autoBreadcrumbs&&a.E(),a.F(),a.n=!0),Error.stackTraceLimit=a.k.stackTraceLimit,this},setDSN:function(a){var b=this,c=b.G(a),d=c.path.lastIndexOf("/"),e=c.path.substr(1,d);b.H=a,b.h=c.user,b.I=c.pass&&c.pass.substr(1),b.i=c.path.substr(d+1),b.g=b.J(c),b.K=b.g+"/"+e+"api/"+b.i+"/store/",this.y()},context:function(a,b,c){return q(a)&&(c=b||[],b=a,a=void 0),this.wrap(a,b).apply(this,c)},wrap:function(a,b,c){function d(){var d=[],f=arguments.length,g=!a||a&&a.deep!==!1;for(c&&q(c)&&c.apply(this,arguments);f--;)d[f]=g?e.wrap(a,arguments[f]):arguments[f];try{return b.apply(this,d)}catch(h){throw e.L(),e.captureException(h,a),h}}var e=this;if(p(b)&&!q(a))return a;if(q(a)&&(b=a,a=void 0),!q(b))return b;try{if(b.M)return b;if(b.N)return b.N}catch(f){return b}for(var g in b)y(b,g)&&(d[g]=b[g]);return d.prototype=b.prototype,b.N=d,d.M=!0,d.O=b,d},uninstall:function(){return g.report.uninstall(),this.P(),this.Q(),this.R(),this.S(),Error.stackTraceLimit=this.o,this.n=!1,this},T:function(a){this.z("debug","Raven caught unhandled promise rejection:",a),this.captureException(a.reason,{extra:{unhandledPromiseRejection:!0}})},B:function(){return this.T=this.T.bind(this),P.addEventListener&&P.addEventListener("unhandledrejection",this.T),this},P:function(){return P.removeEventListener&&P.removeEventListener("unhandledrejection",this.T),this},captureException:function(a,b){if(b=v({trimHeadFrames:0},b?b:{}),o(a)&&a.error)a=a.error;else if(l(a))a=a;else{if(!n(a))return this.captureMessage(a,v(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}));b=this.U(b,a),a=new Error(b.message)}this.d=a;try{var c=g.computeStackTrace(a);this.V(c,b)}catch(d){if(a!==d)throw d}return this},U:function(a,b){var c=Object.keys(b).sort(),d=v(a,{message:"Non-Error exception captured with keys: "+J(c),fingerprint:[i(c)],extra:a.extra||{}});return d.extra.W=K(b),d},captureMessage:function(a,b){if(!this.k.ignoreErrors.test||!this.k.ignoreErrors.test(a)){b=b||{},a+="";var c,d=v({message:a},b);try{throw new Error(a)}catch(e){c=e}c.name=null;var f=g.computeStackTrace(c),h=s(f.stack)&&f.stack[1];h&&"Raven.captureException"===h.func&&(h=f.stack[2]);var i=h&&h.url||"";if((!this.k.ignoreUrls.test||!this.k.ignoreUrls.test(i))&&(!this.k.whitelistUrls.test||this.k.whitelistUrls.test(i))){if(this.k.stacktrace||b&&b.stacktrace){d.fingerprint=null==d.fingerprint?a:d.fingerprint,b=v({trimHeadFrames:0},b),b.trimHeadFrames+=1;var j=this.X(f,b);d.stacktrace={frames:j.reverse()}}return d.fingerprint&&(d.fingerprint=s(d.fingerprint)?d.fingerprint:[d.fingerprint]),this.Y(d),this}}},captureBreadcrumb:function(a){var b=v({timestamp:d()/1e3},a);if(q(this.k.breadcrumbCallback)){var c=this.k.breadcrumbCallback(b);if(m(c)&&!t(c))b=c;else if(c===!1)return this}return this.u.push(b),this.u.length>this.k.maxBreadcrumbs&&this.u.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.r.push([a,b]),this.n&&this.F(),this},setUserContext:function(a){return this.j.user=a,this},setExtraContext:function(a){return this.Z("extra",a),this},setTagsContext:function(a){return this.Z("tags",a),this},clearContext:function(){return this.j={},this},getContext:function(){return JSON.parse(h(this.j))},setEnvironment:function(a){return this.k.environment=a,this},setRelease:function(a){return this.k.release=a,this},setDataCallback:function(a){var b=this.k.dataCallback;return this.k.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.k.breadcrumbCallback;return this.k.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.k.shouldSendCallback;return this.k.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.k.transport=a,this},lastException:function(){return this.d},lastEventId:function(){return this.f},isSetup:function(){return!!this.a&&(!!this.g||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.z("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=P.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(Q){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.H;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.j.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.J(this.G(c)),h=Q.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(Q.head||Q.body).appendChild(h)}},L:function(){var a=this;this.m+=1,setTimeout(function(){a.m-=1})},$:function(a,b){var c,d;if(this.b){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),Q.createEvent?(c=Q.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=Q.createEventObject(),c.eventType=a);for(d in b)y(b,d)&&(c[d]=b[d]);if(Q.createEvent)Q.dispatchEvent(c);else try{Q.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},_:function(a){var b=this;return function(c){if(b.aa=null,b.v!==c){b.v=c;var d;try{d=C(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ba:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.aa;g||a._("input")(c),clearTimeout(g),a.aa=setTimeout(function(){a.aa=null},b)}}},ca:function(a,b){var c=F(this.w.href),d=F(b),e=F(a);this.x=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},C:function(){var a=this;a.da=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.M?a.da.apply(this.O,arguments):a.da.apply(this,arguments)}},Q:function(){this.da&&(Function.prototype.toString=this.da)},D:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.ca(b.x,c+""),a.apply(this,arguments)}};G(history,"pushState",j,d),G(history,"replaceState",j,d)}if(c.console&&"console"in P&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};u(["debug","info","warn","error","log"],function(a,b){M(console,b,k)})}},R:function(){for(var a;this.t.length;){a=this.t.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},S:function(){for(var a in this.q)this.p[a]=this.q[a]},F:function(){var a=this;u(this.r,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},G:function(a){var b=O.exec(a),c={},d=7;try{for(;d--;)c[N[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.k.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},J:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},A:function(){this.m||this.V.apply(this,arguments)},V:function(a,b){var c=this.X(a,b);this.$("handle",{stackInfo:a,options:b}),this.fa(a.name,a.message,a.url,a.lineno,c,b)},X:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(u(a.stack,function(b,e){var f=c.ga(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.u,0)}),this.j.user&&(a.user=this.j.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),a=this.pa(a),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||t(a[b]))&&delete a[b]}),q(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!t(a)&&(!q(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.ma()?void this.z("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function B(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&j(b))for(c=b.split(/\s+/),f=0;fc?M(a,b-1):d}function N(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?T:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function O(a,b){function c(a){return k(a)?a.map(function(a){return c(a)}):i(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!k(b)||k(b)&&0===b.length)return a;var d,e=w(b),f="********";try{d=JSON.parse(P(a))}catch(g){return a}return c(d)}var P=a(9),Q="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},R=3,S=51200,T=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isUndefined:g,isFunction:h,isPlainObject:i,isString:j,isArray:k,isEmptyObject:l,supportsErrorEvent:m,supportsFetch:n,supportsReferrerPolicy:o,supportsPromiseRejectionEvent:p,wrappedCallback:q,each:r,objectMerge:s,truncate:u,objectFrozen:t,hasKey:v,joinRegExp:w,urlencode:x,uuid4:z,htmlTreeAsString:A,htmlElementAsString:B,isSameException:E,isSameStacktrace:F,parseUrl:y,fill:G,safeJoin:H,serializeException:M,serializeKeysForMessage:N,sanitize:O}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{9:9}],8:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}var e=a(7),f={collectWindowErrors:!0,debug:!1},g="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},h=[].slice,i="?",j=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;f.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function k(a,b){var c=null;if(!b||f.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(h.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,g,h){var l=null,m=e.isErrorEvent(h)?h.error:h,n=e.isErrorEvent(a)?a.message:a;if(v)f.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&e.isError(m))l=f.computeStackTrace(m),k(l,!0);else{var p,r={url:b,line:c,column:g},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(j);p&&(s=p[1],n=p[2])}r.func=i,l={name:s,message:n,url:d(),stack:[r]},k(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=g.onerror,g.onerror=l,r=!0)}function n(){r&&(g.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,k.apply(null,[a,!1].concat(b))}function p(a,b){var c=h.call(arguments,1);if(v){if(u===a)return;o()}var d=f.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),f.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,e,f=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,g=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,h=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,j=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,k=/\((\S*)(?::(\d+))(?::(\d+))\)/,l=a.stack.split("\n"),m=[],n=(/^(.*) is undefined$/.exec(a.message),0),o=l.length;n eval")>-1;q&&(b=j.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==n||c[5]||"undefined"==typeof a.columnNumber||(m[0].column=a.columnNumber+1),e={url:c[3],func:c[1]||i,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}!e.func&&e.line&&(e.func=i),m.push(e)}return m.length?{name:a.name,message:a.message,url:d(),stack:m}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=i),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,g){for(var h,j,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==e&&o!==f.report){if(j={url:null,func:i,line:null,column:null},o.name?j.func=o.name:(h=k.exec(o.toString()))&&(j.func=h[1]),"undefined"==typeof j.func)try{j.func=h.input.substring(0,h.input.indexOf("{"))}catch(p){}m[""+o]?n=!0:m[""+o]=!0,l.push(j)}g&&l.splice(0,g);var q={name:a.name,message:a.message,url:d(),stack:l};return b(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),q}function e(b,e){var g=null;e=null==e?0:+e;try{if(g=a(b))return g}catch(h){if(f.debug)throw h}try{if(g=c(b,e+1))return g}catch(h){if(f.debug)throw h}return{name:b.name,message:b.message,url:d()}}return e.augmentStackTraceWithInitialElement=b,e.computeStackTraceFromStackProp=a,e}(),b.exports=f}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{7:7}],9:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}],10:[function(a,b,c){function d(a,b){var c=(65535&a)+(65535&b),d=(a>>16)+(b>>16)+(c>>16);return d<<16|65535&c}function e(a,b){return a<>>32-b}function f(a,b,c,f,g,h){return d(e(d(d(b,a),d(f,h)),g),c)}function g(a,b,c,d,e,g,h){return f(b&c|~b&d,a,b,e,g,h)}function h(a,b,c,d,e,g,h){return f(b&d|c&~d,a,b,e,g,h)}function i(a,b,c,d,e,g,h){return f(b^c^d,a,b,e,g,h)}function j(a,b,c,d,e,g,h){return f(c^(b|~d),a,b,e,g,h)}function k(a,b){a[b>>5]|=128<>>9<<4)+14]=b;var c,e,f,k,l,m=1732584193,n=-271733879,o=-1732584194,p=271733878;for(c=0;c>5]>>>b%32&255);return c}function m(a){var b,c=[];for(c[(a.length>>2)-1]=void 0,b=0;b>5]|=(255&a.charCodeAt(b/8))<16&&(e=k(e,8*a.length)),c=0;c<16;c+=1)f[c]=909522486^e[c],g[c]=1549556828^e[c];return d=k(f.concat(m(b)),512+8*b.length),l(k(g.concat(d),640))}function p(a){var b,c,d="0123456789abcdef",e="";for(c=0;c>>4&15)+d.charAt(15&b);return e}function q(a){return unescape(encodeURIComponent(a))}function r(a){return n(q(a))}function s(a){return p(r(a))}function t(a,b){return o(q(a),q(b))}function u(a,b){return p(t(a,b))}function v(a,b,c){return b?c?t(b,a):u(b,a):c?r(a):s(a)}b.exports=v},{}]},{},[6,1,2])(6)}); +/*! Raven.js 3.25.0 (80dffad) | github.com/getsentry/raven-js */ +!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.Raven=a()}}(function(){var a;return function b(a,c,d){function e(g,h){if(!c[g]){if(!a[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};a[g][0].call(k.exports,function(b){var c=a[g][1][b];return e(c?c:b)},k,k.exports,b,a,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;g":"anonymous component")+(a._isVue&&a.$options.__file?" at "+a.$options.__file:"")}function e(a,b){if(b=b||window.Vue,b&&b.config){var c=b.config.errorHandler;b.config.errorHandler=function(b,e,f){var g={};"[object Object]"===Object.prototype.toString.call(e)&&(g.componentName=d(e),g.propsData=e.$options.propsData),"undefined"!=typeof f&&(g.lifecycleHook=f),a.captureException(b,{extra:g}),"function"==typeof c&&c.call(this,b,e,f)}}}b.exports=e,a(6).addPlugin(b.exports)},{6:6}],3:[function(a,b,c){function d(a){this.name="RavenConfigError",this.message=a}d.prototype=new Error,d.prototype.constructor=d,b.exports=d},{}],4:[function(a,b,c){var d=a(7),e=function(a,b,c){var e=a[b],f=a;if(b in a){var g="warn"===b?"warning":b;a[b]=function(){var a=[].slice.call(arguments),h=d.safeJoin(a," "),i={level:g,logger:"console",extra:{arguments:a}};"assert"===b?a[0]===!1&&(h="Assertion failed: "+(d.safeJoin(a.slice(1)," ")||"console.assert"),i.extra.arguments=a.slice(1),c&&c(h,i)):c&&c(h,i),e&&Function.prototype.apply.call(e,f,a)}}};b.exports={wrapMethod:e}},{7:7}],5:[function(a,b,c){(function(c){function d(){return+new Date}function e(a,b){return s(b)?function(c){return b(c,a)}:b}function f(){this.a=!("object"!=typeof JSON||!JSON.stringify),this.b=!r(S),this.c=!r(T),this.d=null,this.e=null,this.f=null,this.g=null,this.h=null,this.i=null,this.j={},this.k={release:R.SENTRY_RELEASE&&R.SENTRY_RELEASE.id,logger:"javascript",ignoreErrors:[],ignoreUrls:[],whitelistUrls:[],includePaths:[],headers:null,collectWindowErrors:!0,captureUnhandledRejections:!0,maxMessageLength:0,maxUrlLength:250,stackTraceLimit:50,autoBreadcrumbs:!0,instrument:!0,sampleRate:1,sanitizeKeys:[]},this.l={method:"POST",keepalive:!0,referrerPolicy:K()?"origin":""},this.m=0,this.n=!1,this.o=Error.stackTraceLimit,this.p=R.console||{},this.q={},this.r=[],this.s=d(),this.t=[],this.u=[],this.v=null,this.w=R.location,this.x=this.w&&this.w.href,this.y();for(var a in this.p)this.q[a]=this.p[a]}var g=a(8),h=a(9),i=a(10),j=a(3),k=a(7),l=k.isErrorEvent,m=k.isDOMError,n=k.isDOMException,o=k.isError,p=k.isObject,q=k.isPlainObject,r=k.isUndefined,s=k.isFunction,t=k.isString,u=k.isArray,v=k.isEmptyObject,w=k.each,x=k.objectMerge,y=k.truncate,z=k.objectFrozen,A=k.hasKey,B=k.joinRegExp,C=k.urlencode,D=k.uuid4,E=k.htmlTreeAsString,F=k.isSameException,G=k.isSameStacktrace,H=k.parseUrl,I=k.fill,J=k.supportsFetch,K=k.supportsReferrerPolicy,L=k.serializeKeysForMessage,M=k.serializeException,N=k.sanitize,O=a(4).wrapMethod,P="source protocol user pass host port path".split(" "),Q=/^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/,R="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},S=R.document,T=R.navigator;f.prototype={VERSION:"3.25.0",debug:!1,TraceKit:g,config:function(a,b){var c=this;if(c.g)return this.z("error","Error: Raven has already been configured"),c;if(!a)return c;var d=c.k;b&&w(b,function(a,b){"tags"===a||"extra"===a||"user"===a?c.j[a]=b:d[a]=b}),c.setDSN(a),d.ignoreErrors.push(/^Script error\.?$/),d.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/),d.ignoreErrors=B(d.ignoreErrors),d.ignoreUrls=!!d.ignoreUrls.length&&B(d.ignoreUrls),d.whitelistUrls=!!d.whitelistUrls.length&&B(d.whitelistUrls),d.includePaths=B(d.includePaths),d.maxBreadcrumbs=Math.max(0,Math.min(d.maxBreadcrumbs||100,100));var e={xhr:!0,console:!0,dom:!0,location:!0,sentry:!0},f=d.autoBreadcrumbs;"[object Object]"==={}.toString.call(f)?f=x(e,f):f!==!1&&(f=e),d.autoBreadcrumbs=f;var h={tryCatch:!0},i=d.instrument;return"[object Object]"==={}.toString.call(i)?i=x(h,i):i!==!1&&(i=h),d.instrument=i,g.collectWindowErrors=!!d.collectWindowErrors,c},install:function(){var a=this;return a.isSetup()&&!a.n&&(g.report.subscribe(function(){a.A.apply(a,arguments)}),a.k.captureUnhandledRejections&&a.B(),a.C(),a.k.instrument&&a.k.instrument.tryCatch&&a.D(),a.k.autoBreadcrumbs&&a.E(),a.F(),a.n=!0),Error.stackTraceLimit=a.k.stackTraceLimit,this},setDSN:function(a){var b=this,c=b.G(a),d=c.path.lastIndexOf("/"),e=c.path.substr(1,d);b.H=a,b.h=c.user,b.I=c.pass&&c.pass.substr(1),b.i=c.path.substr(d+1),b.g=b.J(c),b.K=b.g+"/"+e+"api/"+b.i+"/store/",this.y()},context:function(a,b,c){return s(a)&&(c=b||[],b=a,a=void 0),this.wrap(a,b).apply(this,c)},wrap:function(a,b,c){function d(){var d=[],f=arguments.length,g=!a||a&&a.deep!==!1;for(c&&s(c)&&c.apply(this,arguments);f--;)d[f]=g?e.wrap(a,arguments[f]):arguments[f];try{return b.apply(this,d)}catch(h){throw e.L(),e.captureException(h,a),h}}var e=this;if(r(b)&&!s(a))return a;if(s(a)&&(b=a,a=void 0),!s(b))return b;try{if(b.M)return b;if(b.N)return b.N}catch(f){return b}for(var g in b)A(b,g)&&(d[g]=b[g]);return d.prototype=b.prototype,b.N=d,d.M=!0,d.O=b,d},uninstall:function(){return g.report.uninstall(),this.P(),this.Q(),this.R(),this.S(),Error.stackTraceLimit=this.o,this.n=!1,this},T:function(a){this.z("debug","Raven caught unhandled promise rejection:",a),this.captureException(a.reason,{extra:{unhandledPromiseRejection:!0}})},B:function(){return this.T=this.T.bind(this),R.addEventListener&&R.addEventListener("unhandledrejection",this.T),this},P:function(){return R.removeEventListener&&R.removeEventListener("unhandledrejection",this.T),this},captureException:function(a,b){if(b=x({trimHeadFrames:0},b?b:{}),l(a)&&a.error)a=a.error;else{if(m(a)||n(a)){var c=a.name||(m(a)?"DOMError":"DOMException"),d=a.message?c+": "+a.message:c;return this.captureMessage(d,x(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}))}if(o(a))a=a;else{if(!q(a))return this.captureMessage(a,x(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}));b=this.U(b,a),a=new Error(b.message)}}this.d=a;try{var e=g.computeStackTrace(a);this.V(e,b)}catch(f){if(a!==f)throw f}return this},U:function(a,b){var c=Object.keys(b).sort(),d=x(a,{message:"Non-Error exception captured with keys: "+L(c),fingerprint:[i(c)],extra:a.extra||{}});return d.extra.W=M(b),d},captureMessage:function(a,b){if(!this.k.ignoreErrors.test||!this.k.ignoreErrors.test(a)){b=b||{},a+="";var c,d=x({message:a},b);try{throw new Error(a)}catch(e){c=e}c.name=null;var f=g.computeStackTrace(c),h=u(f.stack)&&f.stack[1];h&&"Raven.captureException"===h.func&&(h=f.stack[2]);var i=h&&h.url||"";if((!this.k.ignoreUrls.test||!this.k.ignoreUrls.test(i))&&(!this.k.whitelistUrls.test||this.k.whitelistUrls.test(i))){if(this.k.stacktrace||b&&b.stacktrace){d.fingerprint=null==d.fingerprint?a:d.fingerprint,b=x({trimHeadFrames:0},b),b.trimHeadFrames+=1;var j=this.X(f,b);d.stacktrace={frames:j.reverse()}}return d.fingerprint&&(d.fingerprint=u(d.fingerprint)?d.fingerprint:[d.fingerprint]),this.Y(d),this}}},captureBreadcrumb:function(a){var b=x({timestamp:d()/1e3},a);if(s(this.k.breadcrumbCallback)){var c=this.k.breadcrumbCallback(b);if(p(c)&&!v(c))b=c;else if(c===!1)return this}return this.u.push(b),this.u.length>this.k.maxBreadcrumbs&&this.u.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.r.push([a,b]),this.n&&this.F(),this},setUserContext:function(a){return this.j.user=a,this},setExtraContext:function(a){return this.Z("extra",a),this},setTagsContext:function(a){return this.Z("tags",a),this},clearContext:function(){return this.j={},this},getContext:function(){return JSON.parse(h(this.j))},setEnvironment:function(a){return this.k.environment=a,this},setRelease:function(a){return this.k.release=a,this},setDataCallback:function(a){var b=this.k.dataCallback;return this.k.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.k.breadcrumbCallback;return this.k.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.k.shouldSendCallback;return this.k.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.k.transport=a,this},lastException:function(){return this.d},lastEventId:function(){return this.f},isSetup:function(){return!!this.a&&(!!this.g||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.z("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=R.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(S){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.H;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.j.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.J(this.G(c)),h=S.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(S.head||S.body).appendChild(h)}},L:function(){var a=this;this.m+=1,setTimeout(function(){a.m-=1})},$:function(a,b){var c,d;if(this.b){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),S.createEvent?(c=S.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=S.createEventObject(),c.eventType=a);for(d in b)A(b,d)&&(c[d]=b[d]);if(S.createEvent)S.dispatchEvent(c);else try{S.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},_:function(a){var b=this;return function(c){if(b.aa=null,b.v!==c){b.v=c;var d;try{d=E(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ba:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.aa;g||a._("input")(c),clearTimeout(g),a.aa=setTimeout(function(){a.aa=null},b)}}},ca:function(a,b){var c=H(this.w.href),d=H(b),e=H(a);this.x=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},C:function(){var a=this;a.da=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.M?a.da.apply(this.O,arguments):a.da.apply(this,arguments)}},Q:function(){this.da&&(Function.prototype.toString=this.da)},D:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.ca(b.x,c+""),a.apply(this,arguments)}};I(history,"pushState",j,d),I(history,"replaceState",j,d)}if(c.console&&"console"in R&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};w(["debug","info","warn","error","log"],function(a,b){O(console,b,k)})}},R:function(){for(var a;this.t.length;){a=this.t.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},S:function(){for(var a in this.q)this.p[a]=this.q[a]},F:function(){var a=this;w(this.r,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},G:function(a){var b=Q.exec(a),c={},d=7;try{for(;d--;)c[P[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.k.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},J:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},A:function(){this.m||this.V.apply(this,arguments)},V:function(a,b){var c=this.X(a,b);this.$("handle",{stackInfo:a,options:b}),this.fa(a.name,a.message,a.url,a.lineno,c,b)},X:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(w(a.stack,function(b,e){var f=c.ga(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.u,0)}),this.j.user&&(a.user=this.j.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),a=this.pa(a),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||v(a[b]))&&delete a[b]}),s(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!v(a)&&(!s(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.ma()?void this.z("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function F(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&l(b))for(c=b.split(/\s+/),f=0;fc?Q(a,b-1):d}function R(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?X:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function S(a,b){function c(a){return m(a)?a.map(function(a){return c(a)}):k(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!m(b)||m(b)&&0===b.length)return a;var d,e=A(b),f="********";try{d=JSON.parse(T(a))}catch(g){return a}return c(d)}var T=a(9),U="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},V=3,W=51200,X=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isDOMError:g,isDOMException:h,isUndefined:i,isFunction:j,isPlainObject:k,isString:l,isArray:m,isEmptyObject:n,supportsErrorEvent:o,supportsDOMError:p,supportsDOMException:q,supportsFetch:r,supportsReferrerPolicy:s,supportsPromiseRejectionEvent:t,wrappedCallback:u,each:v,objectMerge:w,truncate:y,objectFrozen:x,hasKey:z,joinRegExp:A,urlencode:B,uuid4:D,htmlTreeAsString:E,htmlElementAsString:F,isSameException:I,isSameStacktrace:J,parseUrl:C,fill:K,safeJoin:L,serializeException:Q,serializeKeysForMessage:R,sanitize:S}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{9:9}],8:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}function e(){return"undefined"==typeof document||null==document.location?"":document.location.origin}var f=a(7),g={collectWindowErrors:!0,debug:!1},h="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},i=[].slice,j="?",k=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;g.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function e(a,b){var c=null;if(!b||g.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(i.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,h,i){var l=null,m=f.isErrorEvent(i)?i.error:i,n=f.isErrorEvent(a)?a.message:a;if(v)g.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&f.isError(m))l=g.computeStackTrace(m),e(l,!0);else{var p,r={url:b,line:c,column:h},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(k);p&&(s=p[1],n=p[2])}r.func=j,l={name:s,message:n,url:d(),stack:[r]},e(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=h.onerror,h.onerror=l,r=!0)}function n(){r&&(h.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,e.apply(null,[a,!1].concat(b))}function p(a,b){var c=i.call(arguments,1);if(v){if(u===a)return;o()}var d=g.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),g.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,f,g=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,h=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,i=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,k=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,l=/\((\S*)(?::(\d+))(?::(\d+))\)/,m=a.stack.split("\n"),n=[],o=(/^(.*) is undefined$/.exec(a.message),0),p=m.length;o eval")>-1;r&&(b=k.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==o||c[5]||"undefined"==typeof a.columnNumber||(n[0].column=a.columnNumber+1),f={url:c[3],func:c[1]||j,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}if(!f.func&&f.line&&(f.func=j),f.url&&"blob:"===f.url.substr(0,5)){var s=new XMLHttpRequest;if(s.open("GET",f.url,!1),s.send(null),200===s.status){var t=s.responseText||"";t=t.slice(-300);var u=t.match(/\/\/# sourceMappingURL=(.*)$/);if(u){var v=u[1];"~"===v.charAt(0)&&(v=e()+v.slice(1)),f.url=v.slice(0,-4)}}}n.push(f)}return n.length?{name:a.name,message:a.message,url:d(),stack:n}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=j),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,e){for(var h,i,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==f&&o!==g.report){if(i={url:null,func:j,line:null,column:null},o.name?i.func=o.name:(h=k.exec(o.toString()))&&(i.func=h[1]), +"undefined"==typeof i.func)try{i.func=h.input.substring(0,h.input.indexOf("{"))}catch(p){}m[""+o]?n=!0:m[""+o]=!0,l.push(i)}e&&l.splice(0,e);var q={name:a.name,message:a.message,url:d(),stack:l};return b(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),q}function f(b,e){var f=null;e=null==e?0:+e;try{if(f=a(b))return f}catch(h){if(g.debug)throw h}try{if(f=c(b,e+1))return f}catch(h){if(g.debug)throw h}return{name:b.name,message:b.message,url:d()}}return f.augmentStackTraceWithInitialElement=b,f.computeStackTraceFromStackProp=a,f}(),b.exports=g}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{7:7}],9:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}],10:[function(a,b,c){function d(a,b){var c=(65535&a)+(65535&b),d=(a>>16)+(b>>16)+(c>>16);return d<<16|65535&c}function e(a,b){return a<>>32-b}function f(a,b,c,f,g,h){return d(e(d(d(b,a),d(f,h)),g),c)}function g(a,b,c,d,e,g,h){return f(b&c|~b&d,a,b,e,g,h)}function h(a,b,c,d,e,g,h){return f(b&d|c&~d,a,b,e,g,h)}function i(a,b,c,d,e,g,h){return f(b^c^d,a,b,e,g,h)}function j(a,b,c,d,e,g,h){return f(c^(b|~d),a,b,e,g,h)}function k(a,b){a[b>>5]|=128<>>9<<4)+14]=b;var c,e,f,k,l,m=1732584193,n=-271733879,o=-1732584194,p=271733878;for(c=0;c>5]>>>b%32&255);return c}function m(a){var b,c=[];for(c[(a.length>>2)-1]=void 0,b=0;b>5]|=(255&a.charCodeAt(b/8))<16&&(e=k(e,8*a.length)),c=0;c<16;c+=1)f[c]=909522486^e[c],g[c]=1549556828^e[c];return d=k(f.concat(m(b)),512+8*b.length),l(k(g.concat(d),640))}function p(a){var b,c,d="0123456789abcdef",e="";for(c=0;c>>4&15)+d.charAt(15&b);return e}function q(a){return unescape(encodeURIComponent(a))}function r(a){return n(q(a))}function s(a){return p(r(a))}function t(a,b){return o(q(a),q(b))}function u(a,b){return p(t(a,b))}function v(a,b,c){return b?c?t(b,a):u(b,a):c?r(a):s(a)}b.exports=v},{}]},{},[6,1,2])(6)}); //# sourceMappingURL=raven.min.js.map \ No newline at end of file diff --git a/dist/require,vue/raven.min.js.map b/dist/require,vue/raven.min.js.map index 0a09c6c96440..6ff7d550d9e6 100644 --- a/dist/require,vue/raven.min.js.map +++ b/dist/require,vue/raven.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","requirePlugin","wrap","deep","addPlugin","6","2","formatComponentName","vm","$root","name","_isVue","$options","_componentTag","__file","vuePlugin","Vue","config","_oldOnError","errorHandler","error","info","metaData","Object","prototype","toString","componentName","propsData","lifecycleHook","captureException","extra","3","RavenConfigError","message","constructor","4","utils","wrapMethod","console","level","callback","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","msg","safeJoin","data","logger","Function","apply","7","5","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","sanitizeKeys","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isError","isObject","isPlainObject","isErrorEvent","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","sanitize","wrapConsoleMethod","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","dsn","options","_logDebug","globalOptions","key","value","setDSN","push","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","substr","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","context","func","undefined","_before","wrapped","_ignoreNextOnError","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","T","event","reason","unhandledPromiseRejection","B","_promiseRejectionHandler","bind","addEventListener","P","removeEventListener","ex","trimHeadFrames","captureMessage","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","U","currentOptions","exKeys","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","setDataCallback","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","L","setTimeout","$","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","_","evtName","_keypressTimeout","target","category","ba","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","ca","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","C","_originalFunctionToString","Q","D","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","type","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","E","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","R","builtin","S","F","installer","concat","G","str","m","exec","allowSecretKey","J","port","A","V","stackInfo","_triggerEvent","_processException","lineno","X","frame","_normalizeFrame","in_app","ga","stackInfoUrl","normalized","filename","line","colno","column","function","fa","prefixedMessage","exception","values","culprit","ha","request","Referer","breadcrumbs","_trimBreadcrumbs","ia","urlProp","urlProps","ja","httpData","userAgent","User-Agent","referrer","y","_backoffDuration","_backoffStart","ma","na","current","last","oa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Y","baseData","project","platform","_getHttpData","serverName","server_name","_sanitizeData","forEach","random","_sendProcessedPayload","pa","ra","qa","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","sa","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","onerror","open","setRequestHeader","send","ta","hash","evaluated","z","Z","setUser","setReleaseContext","10","8","9","RavenConstructor","_Raven","noConflict","Client","what","supportsErrorEvent","ErrorEvent","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","wrappedCallback","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","sanitizeMask","safeInput","o_O","getLocationHref","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","charAt","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","string","raw"],"mappings":";CAYA,SAAUA,GAAG,GAAoB,gBAAVC,UAAoC,mBAATC,QAAsBA,OAAOD,QAAQD,QAAS,IAAmB,kBAATG,SAAqBA,OAAOC,IAAKD,UAAUH,OAAO,CAAC,GAAIK,EAAkCA,GAAb,mBAATC,QAAwBA,OAA+B,mBAATC,QAAwBA,OAA6B,mBAAPC,MAAsBA,KAAYC,KAAKJ,EAAEK,MAAQV,MAAO,WAAW,GAAIG,EAAsB,OAAO,SAAUQ,GAAEC,EAAEC,EAAEC,GAAG,QAASC,GAAEC,EAAEC,GAAG,IAAIJ,EAAEG,GAAG,CAAC,IAAIJ,EAAEI,GAAG,CAAC,GAAIE,GAAkB,kBAATC,UAAqBA,OAAQ,KAAIF,GAAGC,EAAE,MAAOA,GAAEF,GAAE,EAAI,IAAGI,EAAE,MAAOA,GAAEJ,GAAE,EAAI,IAAIhB,GAAE,GAAIqB,OAAM,uBAAuBL,EAAE,IAAK,MAAMhB,GAAEsB,KAAK,mBAAmBtB,EAAE,GAAIuB,GAAEV,EAAEG,IAAIf,WAAYW,GAAEI,GAAG,GAAGQ,KAAKD,EAAEtB,QAAQ,SAASU,GAAG,GAAIE,GAAED,EAAEI,GAAG,GAAGL,EAAG,OAAOI,GAAEF,EAAEA,EAAEF,IAAIY,EAAEA,EAAEtB,QAAQU,EAAEC,EAAEC,EAAEC,GAAG,MAAOD,GAAEG,GAAGf,QAAkD,IAAI,GAA1CmB,GAAkB,kBAATD,UAAqBA,QAAgBH,EAAE,EAAEA,EAAEF,EAAEW,OAAOT,IAAID,EAAED,EAAEE,GAAI,OAAOD,KAAKW,GAAG,SAASC,EAAQzB,EAAOD,GAOp0B,QAAS2B,GAAclB,GACC,kBAAXP,IAAyBA,EAAOC,MACzCE,OAAOH,OAASO,EAAMmB,MAAMC,MAAM,GAAQ3B,GAC1CG,OAAOa,QAAUT,EAAMmB,MAAMC,MAAM,GAAQH,IAI/CzB,EAAOD,QAAU2B,EAEjBD,EAAQ,GAAGI,UAAU7B,EAAOD,WACzB+B,EAAI,IAAIC,GAAG,SAASN,EAAQzB,EAAOD,GAMtC,QAASiC,GAAoBC,GAC3B,GAAIA,EAAGC,QAAUD,EACf,MAAO,eAET,IAAIE,GAAOF,EAAGG,OAASH,EAAGI,SAASF,MAAQF,EAAGI,SAASC,cAAgBL,EAAGE,IAC1E,QACGA,EAAO,cAAgBA,EAAO,IAAM,wBACpCF,EAAGG,QAAUH,EAAGI,SAASE,OAAS,OAASN,EAAGI,SAASE,OAAS,IAIrE,QAASC,GAAUhC,EAAOiC,GAIxB,GAHAA,EAAMA,GAAOrC,OAAOqC,IAGfA,GAAQA,EAAIC,OAAjB,CAEA,GAAIC,GAAcF,EAAIC,OAAOE,YAC7BH,GAAIC,OAAOE,aAAe,SAAyBC,EAAOZ,EAAIa,GAC5D,GAAIC,KAGuC,qBAAvCC,OAAOC,UAAUC,SAAS5B,KAAKW,KACjCc,EAASI,cAAgBnB,EAAoBC,GAC7Cc,EAASK,UAAYnB,EAAGI,SAASe,WAGf,mBAATN,KACTC,EAASM,cAAgBP,GAG3BtC,EAAM8C,iBAAiBT,GACrBU,MAAOR,IAGkB,kBAAhBJ,IACTA,EAAYrB,KAAKf,KAAMsC,EAAOZ,EAAIa,KAKxC9C,EAAOD,QAAUyC,EAEjBf,EAAQ,GAAGI,UAAU7B,EAAOD,WACzB+B,EAAI,IAAI0B,GAAG,SAAS/B,EAAQzB,EAAOD,GACtC,QAAS0D,GAAiBC,GACxBnD,KAAK4B,KAAO,mBACZ5B,KAAKmD,QAAUA,EAEjBD,EAAiBR,UAAY,GAAI9B,OACjCsC,EAAiBR,UAAUU,YAAcF,EAEzCzD,EAAOD,QAAU0D,OAEXG,GAAG,SAASnC,EAAQzB,EAAOD,GACjC,GAAI8D,GAAQpC,EAAQ,GAEhBqC,EAAa,SAASC,EAASC,EAAOC,GACxC,GAAIC,GAAuBH,EAAQC,GAC/BG,EAAkBJ,CAEtB,IAAMC,IAASD,GAAf,CAIA,GAAIK,GAAwB,SAAVJ,EAAmB,UAAYA,CAEjDD,GAAQC,GAAS,WACf,GAAIK,MAAUC,MAAMhD,KAAKiD,WAErBC,EAAMX,EAAMY,SAASJ,EAAM,KAC3BK,GAAQV,MAAOI,EAAaO,OAAQ,UAAWpB,OAAQgB,UAAWF,GAExD,YAAVL,EACEK,EAAK,MAAO,IAEdG,EACE,sBAAwBX,EAAMY,SAASJ,EAAKC,MAAM,GAAI,MAAQ,kBAChEI,EAAKnB,MAAMgB,UAAYF,EAAKC,MAAM,GAClCL,GAAYA,EAASO,EAAKE,IAG5BT,GAAYA,EAASO,EAAKE,GAIxBR,GAGFU,SAAS3B,UAAU4B,MAAMvD,KAAK4C,EAAsBC,EAAiBE,KAK3ErE,GAAOD,SACL+D,WAAYA,KAGXgB,EAAI,IAAIC,GAAG,SAAStD,EAAQzB,EAAOD,IACtC,SAAWM,GA0CX,QAAS2E,KACP,OAAQ,GAAIC,MAWd,QAASC,GAAqBC,EAAUlB,GACtC,MAAOmB,GAAWnB,GACd,SAASS,GACP,MAAOT,GAASS,EAAMS,IAExBlB,EAMN,QAASzD,KACPD,KAAK8E,IAA8B,gBAATC,QAAqBA,KAAKC,WAEpDhF,KAAKiF,GAAgBC,EAAYC,GACjCnF,KAAKoF,GAAiBF,EAAYG,GAClCrF,KAAKsF,EAAyB,KAC9BtF,KAAKuF,EAAY,KACjBvF,KAAKwF,EAAe,KACpBxF,KAAKyF,EAAgB,KACrBzF,KAAK0F,EAAa,KAClB1F,KAAK2F,EAAiB,KACtB3F,KAAK4F,KACL5F,KAAK6F,GAEHC,QAASC,EAAQC,gBAAkBD,EAAQC,eAAeC,GAC1D7B,OAAQ,aACR8B,gBACAC,cACAC,iBACAC,gBACAC,QAAS,KACTC,qBAAqB,EACrBC,4BAA4B,EAC5BC,iBAAkB,EAElBC,aAAc,IACdC,gBAAiB,GACjBC,iBAAiB,EACjBC,YAAY,EACZC,WAAY,EACZC,iBAEF/G,KAAKgH,GACHC,OAAQ,OACRC,WAAW,EAKXC,eAAgBC,IAA2B,SAAW,IAExDpH,KAAKqH,EAAiB,EACtBrH,KAAKsH,GAAoB,EACzBtH,KAAKuH,EAAgC3G,MAAM+F,gBAG3C3G,KAAKwH,EAAmBzB,EAAQvC,YAChCxD,KAAKyH,KACLzH,KAAK0H,KACL1H,KAAK2H,EAAalD,IAClBzE,KAAK4H,KACL5H,KAAK6H,KACL7H,KAAK8H,EAAqB,KAE1B9H,KAAK+H,EAAYhC,EAAQiC,SACzBhI,KAAKiI,EAAYjI,KAAK+H,GAAa/H,KAAK+H,EAAUG,KAClDlI,KAAKmI,GAGL,KAAK,GAAIlB,KAAUjH,MAAKwH,EACtBxH,KAAKyH,EAAwBR,GAAUjH,KAAKwH,EAAiBP,GA1HjE,GAAImB,GAAWlH,EAAQ,GACnB8D,EAAY9D,EAAQ,GACpBmH,EAAMnH,EAAQ,IACdgC,EAAmBhC,EAAQ,GAE3BoC,EAAQpC,EAAQ,GAChBoH,EAAUhF,EAAMgF,QAChBC,EAAWjF,EAAMiF,SACjBC,EAAgBlF,EAAMkF,cACtBC,EAAenF,EAAMmF,aACrBvD,EAAc5B,EAAM4B,YACpBL,EAAavB,EAAMuB,WACnB6D,EAAWpF,EAAMoF,SACjBC,EAAUrF,EAAMqF,QAChBC,EAAgBtF,EAAMsF,cACtBC,EAAOvF,EAAMuF,KACbC,EAAcxF,EAAMwF,YACpBC,EAAWzF,EAAMyF,SACjBC,EAAe1F,EAAM0F,aACrBC,EAAS3F,EAAM2F,OACfC,EAAa5F,EAAM4F,WACnBC,EAAY7F,EAAM6F,UAClBC,EAAQ9F,EAAM8F,MACdC,EAAmB/F,EAAM+F,iBACzBC,EAAkBhG,EAAMgG,gBACxBC,EAAmBjG,EAAMiG,iBACzBC,EAAWlG,EAAMkG,SACjBC,EAAOnG,EAAMmG,KACbC,EAAgBpG,EAAMoG,cACtBtC,EAAyB9D,EAAM8D,uBAC/BuC,EAA0BrG,EAAMqG,wBAChCC,EAAqBtG,EAAMsG,mBAC3BC,EAAWvG,EAAMuG,SAEjBC,EAAoB5I,EAAQ,GAAGqC,WAE/BwG,EAAU,2CAA2CC,MAAM,KAC7DC,EAAa,gEAOXlE,EACgB,mBAAXlG,QACHA,OACkB,mBAAXC,GAAyBA,EAAyB,mBAATC,MAAuBA,QACzEoF,EAAYY,EAAQmE,SACpB7E,EAAaU,EAAQoE,SAmFzBlK,GAAMyC,WAKJ0H,QAAS,SAETC,OAAO,EAEPjC,SAAUA,EASVjG,OAAQ,SAASmI,EAAKC,GACpB,GAAIxK,GAAOC,IAEX,IAAID,EAAK0F,EAEP,MADAzF,MAAKwK,EAAU,QAAS,4CACjBzK,CAET,KAAKuK,EAAK,MAAOvK,EAEjB,IAAI0K,GAAgB1K,EAAK8F,CAGrB0E,IACF1B,EAAK0B,EAAS,SAASG,EAAKC,GAEd,SAARD,GAA0B,UAARA,GAA2B,SAARA,EACvC3K,EAAK6F,EAAe8E,GAAOC,EAE3BF,EAAcC,GAAOC,IAK3B5K,EAAK6K,OAAON,GAIZG,EAAcvE,aAAa2E,KAAK,qBAChCJ,EAAcvE,aAAa2E,KAAK,iDAGhCJ,EAAcvE,aAAegD,EAAWuB,EAAcvE,cACtDuE,EAActE,aAAasE,EAActE,WAAWnF,QAChDkI,EAAWuB,EAActE,YAE7BsE,EAAcrE,gBAAgBqE,EAAcrE,cAAcpF,QACtDkI,EAAWuB,EAAcrE,eAE7BqE,EAAcpE,aAAe6C,EAAWuB,EAAcpE,cACtDoE,EAAcK,eAAiBC,KAAKC,IAClC,EACAD,KAAKE,IAAIR,EAAcK,gBAAkB,IAAK,KAGhD,IAAII,IACFC,KAAK,EACL3H,SAAS,EACT4H,KAAK,EACLpD,UAAU,EACVqD,QAAQ,GAGNzE,EAAkB6D,EAAc7D,eACM,wBAAnCjE,SAAS5B,KAAK6F,GACnBA,EAAkBkC,EAAYoC,EAAwBtE,GAC7CA,KAAoB,IAC7BA,EAAkBsE,GAEpBT,EAAc7D,gBAAkBA,CAEhC,IAAI0E,IACFC,UAAU,GAGR1E,EAAa4D,EAAc5D,UAW/B,OAVqC,uBAA9BlE,SAAS5B,KAAK8F,GACnBA,EAAaiC,EAAYwC,EAAoBzE,GACpCA,KAAe,IACxBA,EAAayE,GAEfb,EAAc5D,WAAaA,EAE3BuB,EAAS7B,sBAAwBkE,EAAclE,oBAGxCxG,GAWTyL,QAAS,WACP,GAAIzL,GAAOC,IAyBX,OAxBID,GAAK0L,YAAc1L,EAAKuH,IAC1Bc,EAASsD,OAAOC,UAAU,WACxB5L,EAAK6L,EAAwBtH,MAAMvE,EAAMiE,aAGvCjE,EAAK8F,EAAeW,4BACtBzG,EAAK8L,IAGP9L,EAAK+L,IAED/L,EAAK8F,EAAegB,YAAc9G,EAAK8F,EAAegB,WAAW0E,UACnExL,EAAKgM,IAGHhM,EAAK8F,EAAee,iBAAiB7G,EAAKiM,IAG9CjM,EAAKkM,IAELlM,EAAKuH,GAAoB,GAG3B1G,MAAM+F,gBAAkB5G,EAAK8F,EAAec,gBACrC3G,MAQT4K,OAAQ,SAASN,GACf,GAAIvK,GAAOC,KACTkM,EAAMnM,EAAKoM,EAAU7B,GACrB8B,EAAYF,EAAIG,KAAKC,YAAY,KACjCD,EAAOH,EAAIG,KAAKE,OAAO,EAAGH,EAE5BrM,GAAKyM,EAAOlC,EACZvK,EAAK2F,EAAawG,EAAIO,KACtB1M,EAAK2M,EAAgBR,EAAIS,MAAQT,EAAIS,KAAKJ,OAAO,GACjDxM,EAAK4F,EAAiBuG,EAAIG,KAAKE,OAAOH,EAAY,GAElDrM,EAAK0F,EAAgB1F,EAAK6M,EAAiBV,GAE3CnM,EAAK8M,EACH9M,EAAK0F,EAAgB,IAAM4G,EAAO,OAAStM,EAAK4F,EAAiB,UAInE3F,KAAKmI,KAWP2E,QAAS,SAASvC,EAASwC,EAAMjJ,GAO/B,MANIe,GAAW0F,KACbzG,EAAOiJ,MACPA,EAAOxC,EACPA,EAAUyC,QAGLhN,KAAKoB,KAAKmJ,EAASwC,GAAMzI,MAAMtE,KAAM8D,IAW9C1C,KAAM,SAASmJ,EAASwC,EAAME,GAqC5B,QAASC,KACP,GAAIpJ,MACFnD,EAAIqD,UAAUhD,OACdK,GAAQkJ,GAAYA,GAAWA,EAAQlJ,QAAS,CAQlD,KANI4L,GAAWpI,EAAWoI,IACxBA,EAAQ3I,MAAMtE,KAAMgE,WAKfrD,KAAKmD,EAAKnD,GAAKU,EAAOtB,EAAKqB,KAAKmJ,EAASvG,UAAUrD,IAAMqD,UAAUrD,EAE1E,KAKE,MAAOoM,GAAKzI,MAAMtE,KAAM8D,GACxB,MAAO5D,GAGP,KAFAH,GAAKoN,IACLpN,EAAKgD,iBAAiB7C,EAAGqK,GACnBrK,GA1DV,GAAIH,GAAOC,IAGX,IAAIkF,EAAY6H,KAAUlI,EAAW0F,GACnC,MAAOA,EAWT,IAPI1F,EAAW0F,KACbwC,EAAOxC,EACPA,EAAUyC,SAKPnI,EAAWkI,GACd,MAAOA,EAIT,KACE,GAAIA,EAAKK,EACP,MAAOL,EAIT,IAAIA,EAAKM,EACP,MAAON,GAAKM,EAEd,MAAOnN,GAIP,MAAO6M,GA8BT,IAAK,GAAIO,KAAYP,GACf9D,EAAO8D,EAAMO,KACfJ,EAAQI,GAAYP,EAAKO,GAW7B,OARAJ,GAAQxK,UAAYqK,EAAKrK,UAEzBqK,EAAKM,EAAoBH,EAGzBA,EAAQE,GAAY,EACpBF,EAAQK,EAAWR,EAEZG,GAQTM,UAAW,WAWT,MAVApF,GAASsD,OAAO8B,YAEhBxN,KAAKyN,IACLzN,KAAK0N,IACL1N,KAAK2N,IACL3N,KAAK4N,IAELhN,MAAM+F,gBAAkB3G,KAAKuH,EAC7BvH,KAAKsH,GAAoB,EAElBtH,MAWT6N,EAA0B,SAASC,GACjC9N,KAAKwK,EAAU,QAAS,4CAA6CsD,GACrE9N,KAAK+C,iBAAiB+K,EAAMC,QAC1B/K,OACEgL,2BAA2B,MAUjCC,EAAgC,WAI9B,MAHAjO,MAAKkO,EAA2BlO,KAAKkO,EAAyBC,KAAKnO,MACnE+F,EAAQqI,kBACNrI,EAAQqI,iBAAiB,qBAAsBpO,KAAKkO,GAC/ClO,MAQTqO,EAAgC,WAG9B,MAFAtI,GAAQuI,qBACNvI,EAAQuI,oBAAoB,qBAAsBtO,KAAKkO,GAClDlO,MAUT+C,iBAAkB,SAASwL,EAAIhE,GAG7B,GAFAA,EAAUzB,GAAa0F,eAAgB,GAAIjE,EAAUA,MAEjD9B,EAAa8F,IAAOA,EAAGjM,MAEzBiM,EAAKA,EAAGjM,UACH,IAAIgG,EAAQiG,GAEjBA,EAAKA,MACA,CAAA,IAAI/F,EAAc+F,GAYvB,MAAOvO,MAAKyO,eACVF,EACAzF,EAAYyB,GACVmE,YAAY,EACZF,eAAgBjE,EAAQiE,eAAiB,IAZ7CjE,GAAUvK,KAAK2O,EAA2CpE,EAASgE,GACnEA,EAAK,GAAI3N,OAAM2J,EAAQpH,SAiBzBnD,KAAKsF,EAAyBiJ,CAO9B,KACE,GAAIK,GAAQxG,EAASyG,kBAAkBN,EACvCvO,MAAK8O,EAAiBF,EAAOrE,GAC7B,MAAOwE,GACP,GAAIR,IAAOQ,EACT,KAAMA,GAIV,MAAO/O,OAGTgP,EAA4C,SAASC,EAAgBV,GACnE,GAAIW,GAASzM,OAAO0M,KAAKZ,GAAIa,OACzB7E,EAAUzB,EAAYmG,GACxB9L,QACE,2CAA6CwG,EAAwBuF,GACvEG,aAAchH,EAAI6G,IAClBlM,MAAOiM,EAAejM,WAIxB,OAFAuH,GAAQvH,MAAMsM,EAAiB1F,EAAmB2E,GAE3ChE,GAUTkE,eAAgB,SAASxK,EAAKsG,GAI5B,IACIvK,KAAK6F,EAAeK,aAAaqJ,OACnCvP,KAAK6F,EAAeK,aAAaqJ,KAAKtL,GAFxC,CAOAsG,EAAUA,MACVtG,GAAY,EAEZ,IAOIsK,GAPApK,EAAO2E,GAEP3F,QAASc,GAEXsG,EAQF,KACE,KAAM,IAAI3J,OAAMqD,GAChB,MAAO8K,GACPR,EAAKQ,EAIPR,EAAG3M,KAAO,IACV,IAAIgN,GAAQxG,EAASyG,kBAAkBN,GAGnCiB,EAAc7G,EAAQiG,EAAMA,QAAUA,EAAMA,MAAM,EAKlDY,IAAoC,2BAArBA,EAAYzC,OAC7ByC,EAAcZ,EAAMA,MAAM,GAG5B,IAAIa,GAAWD,GAAeA,EAAYE,KAAQ,EAElD,MACI1P,KAAK6F,EAAeM,WAAWoJ,OACjCvP,KAAK6F,EAAeM,WAAWoJ,KAAKE,OAMlCzP,KAAK6F,EAAeO,cAAcmJ,MACnCvP,KAAK6F,EAAeO,cAAcmJ,KAAKE,IAF1C,CAOA,GAAIzP,KAAK6F,EAAe6I,YAAenE,GAAWA,EAAQmE,WAAa,CAErEvK,EAAKkL,YAAkC,MAApBlL,EAAKkL,YAAsBpL,EAAME,EAAKkL,YAEzD9E,EAAUzB,GAEN0F,eAAgB,GAElBjE,GAMFA,EAAQiE,gBAAkB,CAE1B,IAAImB,GAAS3P,KAAK4P,EAAehB,EAAOrE,EACxCpG,GAAKuK,YAEHiB,OAAQA,EAAOE,WAcnB,MATI1L,GAAKkL,cACPlL,EAAKkL,YAAc1G,EAAQxE,EAAKkL,aAC5BlL,EAAKkL,aACJlL,EAAKkL,cAIZrP,KAAK8P,EAAM3L,GAEJnE,QAGT+P,kBAAmB,SAASC,GAC1B,GAAIC,GAAQnH,GAERoH,UAAWzL,IAAQ,KAErBuL,EAGF,IAAInL,EAAW7E,KAAK6F,EAAesK,oBAAqB,CACtD,GAAIC,GAASpQ,KAAK6F,EAAesK,mBAAmBF,EAEpD,IAAI1H,EAAS6H,KAAYxH,EAAcwH,GACrCH,EAAQG,MACH,IAAIA,KAAW,EACpB,MAAOpQ,MAQX,MAJAA,MAAK6H,EAAagD,KAAKoF,GACnBjQ,KAAK6H,EAAa7G,OAAShB,KAAK6F,EAAeiF,gBACjD9K,KAAK6H,EAAawI,QAEbrQ,MAGTsB,UAAW,SAASgP,GAClB,GAAIC,MAAgBxM,MAAMhD,KAAKiD,UAAW,EAO1C,OALAhE,MAAK0H,EAASmD,MAAMyF,EAAQC,IACxBvQ,KAAKsH,GACPtH,KAAKiM,IAGAjM,MASTwQ,eAAgB,SAAS/D,GAIvB,MAFAzM,MAAK4F,EAAe6G,KAAOA,EAEpBzM,MASTyQ,gBAAiB,SAASzN,GAGxB,MAFAhD,MAAK0Q,EAAc,QAAS1N,GAErBhD,MAST2Q,eAAgB,SAASC,GAGvB,MAFA5Q,MAAK0Q,EAAc,OAAQE,GAEpB5Q,MAQT6Q,aAAc,WAGZ,MAFA7Q,MAAK4F,KAEE5F,MAQT8Q,WAAY,WAEV,MAAO/L,MAAKgM,MAAM/L,EAAUhF,KAAK4F,KASnCoL,eAAgB,SAASC,GAGvB,MAFAjR,MAAK6F,EAAeoL,YAAcA,EAE3BjR,MASTkR,WAAY,SAASpL,GAGnB,MAFA9F,MAAK6F,EAAeC,QAAUA,EAEvB9F,MAUTmR,gBAAiB,SAASzN,GACxB,GAAIkB,GAAW5E,KAAK6F,EAAeuL,YAEnC,OADApR,MAAK6F,EAAeuL,aAAezM,EAAqBC,EAAUlB,GAC3D1D,MAUTqR,sBAAuB,SAAS3N,GAC9B,GAAIkB,GAAW5E,KAAK6F,EAAesK,kBAEnC,OADAnQ,MAAK6F,EAAesK,mBAAqBxL,EAAqBC,EAAUlB,GACjE1D,MAUTsR,sBAAuB,SAAS5N,GAC9B,GAAIkB,GAAW5E,KAAK6F,EAAe0L,kBAEnC,OADAvR,MAAK6F,EAAe0L,mBAAqB5M,EAAqBC,EAAUlB,GACjE1D,MAYTwR,aAAc,SAASC,GAGrB,MAFAzR,MAAK6F,EAAe4L,UAAYA,EAEzBzR,MAQT0R,cAAe,WACb,MAAO1R,MAAKsF,GAQdqM,YAAa,WACX,MAAO3R,MAAKwF,GAQdiG,QAAS,WACP,QAAKzL,KAAK8E,MACL9E,KAAKyF,IACHzF,KAAK4R,0BACR5R,KAAK4R,yBAA0B,EAC/B5R,KAAKwK,EAAU,QAAS,2CAEnB,KAKXqH,UAAW,WAIT,GAAIC,GAAc/L,EAAQ+L,WACtBA,IACF9R,KAAKmC,OAAO2P,EAAYxH,IAAKwH,EAAY3P,QAAQqJ,WAIrDuG,iBAAkB,SAASxH,GACzB,GACGpF,EADH,CAKAoF,EAAUA,KAEV,IAAIoH,GAAcpH,EAAQyH,SAAWhS,KAAK2R,aAC1C,KAAKA,EACH,KAAM,IAAIzO,GAAiB,kBAG7B,IAAIoH,GAAMC,EAAQD,KAAOtK,KAAKwM,CAC9B,KAAKlC,EACH,KAAM,IAAIpH,GAAiB,cAG7B,IAAI+O,GAASC,mBACTC,EAAK,EACTA,IAAM,YAAcF,EAAON,GAC3BQ,GAAM,QAAUF,EAAO3H,EAEvB,IAAImC,GAAOlC,EAAQkC,MAAQzM,KAAK4F,EAAe6G,IAC3CA,KACEA,EAAK7K,OAAMuQ,GAAM,SAAWF,EAAOxF,EAAK7K,OACxC6K,EAAK2F,QAAOD,GAAM,UAAYF,EAAOxF,EAAK2F,QAGhD,IAAIC,GAAerS,KAAK4M,EAAiB5M,KAAKmM,EAAU7B,IAEpDgI,EAASnN,EAAUoN,cAAc,SACrCD,GAAOE,OAAQ,EACfF,EAAOG,IAAMJ,EAAe,yBAA2BF,GACtDhN,EAAUuN,MAAQvN,EAAUwN,MAAMC,YAAYN,KAIjDO,EAAoB,WAClB,GAAI9S,GAAOC,IACXA,MAAKqH,GAAkB,EACvByL,WAAW,WAET/S,EAAKsH,GAAkB,KAI3B0L,EAAe,SAASC,EAAWzI,GAEjC,GAAI0I,GAAKvI,CAET,IAAK1K,KAAKiF,EAAV,CAEAsF,EAAUA,MAEVyI,EAAY,QAAUA,EAAUzG,OAAO,EAAG,GAAG2G,cAAgBF,EAAUzG,OAAO,GAE1EpH,EAAUgO,aACZF,EAAM9N,EAAUgO,YAAY,cAC5BF,EAAIG,UAAUJ,GAAW,GAAM,KAE/BC,EAAM9N,EAAUkO,oBAChBJ,EAAID,UAAYA,EAGlB,KAAKtI,IAAOH,GACNtB,EAAOsB,EAASG,KAClBuI,EAAIvI,GAAOH,EAAQG,GAGvB,IAAIvF,EAAUgO,YAEZhO,EAAUmO,cAAcL,OAIxB,KACE9N,EAAUoO,UAAU,KAAON,EAAID,UAAUQ,cAAeP,GACxD,MAAO/S,OAYbuT,EAAyB,SAASC,GAChC,GAAI3T,GAAOC,IACX,OAAO,UAASiT,GASd,GALAlT,EAAK4T,GAAmB,KAKpB5T,EAAK+H,IAAuBmL,EAAhC,CAEAlT,EAAK+H,EAAqBmL,CAM1B,IAAIW,EACJ,KACEA,EAASvK,EAAiB4J,EAAIW,QAC9B,MAAO1T,GACP0T,EAAS,YAGX7T,EAAKgQ,mBACH8D,SAAU,MAAQH,EAClBvQ,QAASyQ,OAUfE,GAAuB,WACrB,GAAI/T,GAAOC,KACT+T,EAAmB,GAKrB,OAAO,UAASd,GACd,GAAIW,EACJ,KACEA,EAASX,EAAIW,OACb,MAAO1T,GAGP,OAEF,GAAI8T,GAAUJ,GAAUA,EAAOI,OAK/B,IACGA,IACY,UAAZA,GAAmC,aAAZA,GAA2BJ,EAAOK,mBAF5D,CAQA,GAAIC,GAAUnU,EAAK4T,EACdO,IACHnU,EAAKoU,EAAwB,SAASlB,GAExCmB,aAAaF,GACbnU,EAAK4T,GAAmBb,WAAW,WACjC/S,EAAK4T,GAAmB,MACvBI,MAUPM,GAAmB,SAASC,EAAMC,GAChC,GAAIC,GAAYhL,EAASxJ,KAAK+H,EAAUG,MACpCuM,EAAWjL,EAAS+K,GACpBG,EAAalL,EAAS8K,EAK1BtU,MAAKiI,EAAYsM,EAIbC,EAAUG,WAAaF,EAASE,UAAYH,EAAUI,OAASH,EAASG,OAC1EL,EAAKE,EAASI,UACZL,EAAUG,WAAaD,EAAWC,UAAYH,EAAUI,OAASF,EAAWE,OAC9EN,EAAOI,EAAWG,UAEpB7U,KAAK+P,mBACH8D,SAAU,aACV1P,MACEoQ,GAAIA,EACJD,KAAMA,MAKZQ,EAAwB,WACtB,GAAI/U,GAAOC,IACXD,GAAKgV,GAA4B1Q,SAAS3B,UAAUC,SAEpD0B,SAAS3B,UAAUC,SAAW,WAC5B,MAAoB,kBAAT3C,OAAuBA,KAAKoN,EAC9BrN,EAAKgV,GAA0BzQ,MAAMtE,KAAKuN,EAAUvJ,WAEtDjE,EAAKgV,GAA0BzQ,MAAMtE,KAAMgE,aAItDgR,EAA0B,WACpBhV,KAAK+U,KAEP1Q,SAAS3B,UAAUC,SAAW3C,KAAK+U,KAQvCE,EAAqB,WAKnB,QAASC,GAAWC,GAClB,MAAO,UAASC,EAAIjV,GAKlB,IAAK,GADD2D,GAAO,GAAIuR,OAAMrR,UAAUhD,QACtBL,EAAI,EAAGA,EAAImD,EAAK9C,SAAUL,EACjCmD,EAAKnD,GAAKqD,UAAUrD,EAEtB,IAAI2U,GAAmBxR,EAAK,EAQ5B,OAPIe,GAAWyQ,KACbxR,EAAK,GAAK/D,EAAKqB,KAAKkU,IAMlBH,EAAK7Q,MACA6Q,EAAK7Q,MAAMtE,KAAM8D,GAEjBqR,EAAKrR,EAAK,GAAIA,EAAK,KAOhC,QAASyR,GAAgBzV,GACvB,GAAI0V,GAAQzP,EAAQjG,IAAWiG,EAAQjG,GAAQ4C,SAC3C8S,IAASA,EAAMC,gBAAkBD,EAAMC,eAAe,sBACxDhM,EACE+L,EACA,mBACA,SAASL,GACP,MAAO,UAASzB,EAAS0B,EAAIM,EAASC,GAEpC,IACMP,GAAMA,EAAGQ,cACXR,EAAGQ,YAAc7V,EAAKqB,KAAKgU,EAAGQ,cAEhC,MAAOC,IAMT,GAAIC,GAAQC,EAAcC,CA6B1B,OA1BEpP,IACAA,EAAgBwE,MACJ,gBAAXtL,GAAuC,SAAXA,KAI7BiW,EAAehW,EAAKoU,EAAwB,SAC5C6B,EAAkBjW,EAAKkW,KACvBH,EAAS,SAAS7C,GAIhB,GAAKA,EAAL,CAEA,GAAID,EACJ,KACEA,EAAYC,EAAIiD,KAChB,MAAOhW,GAGP,OAEF,MAAkB,UAAd8S,EAA8B+C,EAAa9C,GACxB,aAAdD,EAAiCgD,EAAgB/C,GAArD,UAGFkC,EAAKpU,KACVf,KACA0T,EACA3T,EAAKqB,KAAKgU,EAAIpI,OAAW8I,GACzBJ,EACAC,KAINQ,GAEF1M,EACE+L,EACA,sBACA,SAASL,GACP,MAAO,UAASlC,EAAKmC,EAAIM,EAASC,GAChC,IACEP,EAAKA,IAAOA,EAAG/H,EAAoB+H,EAAG/H,EAAoB+H,GAC1D,MAAOlV,IAGT,MAAOiV,GAAKpU,KAAKf,KAAMiT,EAAKmC,EAAIM,EAASC,KAG7CQ,IAvGN,GAAIpW,GAAOC,KAEPmW,EAAkBpW,EAAK6H,EA2BvBhB,EAAkB5G,KAAK6F,EAAee,eA+E1C6C,GAAK1D,EAAS,aAAcmP,EAAYiB,GACxC1M,EAAK1D,EAAS,cAAemP,EAAYiB,GACrCpQ,EAAQqQ,uBACV3M,EACE1D,EACA,wBACA,SAASoP,GACP,MAAO,UAASkB,GACd,MAAOlB,GAAKpV,EAAKqB,KAAKiV,MAG1BF,EAqCJ,KAAK,GA/BDG,IACF,cACA,SACA,OACA,mBACA,iBACA,oBACA,kBACA,cACA,aACA,qBACA,cACA,aACA,iBACA,eACA,kBACA,cACA,cACA,eACA,qBACA,SACA,YACA,eACA,gBACA,YACA,kBACA,SACA,iBACA,4BACA,wBAEO3V,EAAI,EAAGA,EAAI2V,EAAatV,OAAQL,IACvC4U,EAAgBe,EAAa3V,KAajC4V,EAAwB,WAMtB,QAASC,GAASC,EAAMtL,GAClBsL,IAAQtL,IAAOtG,EAAWsG,EAAIsL,KAChChN,EAAK0B,EAAKsL,EAAM,SAAStB,GACvB,MAAOpV,GAAKqB,KAAK+T,KARvB,GAAIpV,GAAOC,KACP4G,EAAkB5G,KAAK6F,EAAee,gBAEtCuP,EAAkBpW,EAAK6H,CAU3B,IAAIhB,EAAgBuE,KAAO,kBAAoBpF,GAAS,CACtD,GAAI2Q,GAAW3Q,EAAQ4Q,gBAAkB5Q,EAAQ4Q,eAAejU,SAChE+G,GACEiN,EACA,OACA,SAASE,GACP,MAAO,UAAS3P,EAAQyI,GAYtB,MARIhH,GAASgH,IAAQA,EAAImH,QAAQ9W,EAAK2F,UACpC1F,KAAK8W,IACH7P,OAAQA,EACRyI,IAAKA,EACLqH,YAAa,OAIVH,EAAStS,MAAMtE,KAAMgE,aAGhCmS,GAGF1M,EACEiN,EACA,OACA,SAASM,GACP,MAAO,YAIL,QAASC,KACP,GAAI9L,EAAI2L,IAAkC,IAAnB3L,EAAI+L,WAAkB,CAC3C,IAGE/L,EAAI2L,GAAYC,YAAc5L,EAAIgM,OAClC,MAAOjX,IAITH,EAAKgQ,mBACHmG,KAAM,OACNrC,SAAU,MACV1P,KAAMgH,EAAI2L,MAMhB,IAAK,GArBD3L,GAAMnL,KAoBNoX,GAAS,SAAU,UAAW,cACzBC,EAAI,EAAGA,EAAID,EAAMpW,OAAQqW,IAChCb,EAASY,EAAMC,GAAIlM,EAiBrB,OAdI,sBAAwBA,IAAOtG,EAAWsG,EAAImM,oBAChD7N,EACE0B,EACA,qBACA,SAASgK,GACP,MAAOpV,GAAKqB,KAAK+T,EAAMnI,OAAWiK,KAMtC9L,EAAImM,mBAAqBL,EAGpBD,EAAS1S,MAAMtE,KAAMgE,aAGhCmS,GAIAvP,EAAgBuE,KAAOzB,KACzBD,EACE1D,EACA,QACA,SAASwR,GACP,MAAO,YAKL,IAAK,GADDzT,GAAO,GAAIuR,OAAMrR,UAAUhD,QACtBL,EAAI,EAAGA,EAAImD,EAAK9C,SAAUL,EACjCmD,EAAKnD,GAAKqD,UAAUrD,EAGtB,IAEI+O,GAFA8H,EAAa1T,EAAK,GAClBmD,EAAS,KAeb,IAZ0B,gBAAfuQ,GACT9H,EAAM8H,EACG,WAAazR,IAAWyR,YAAsBzR,GAAQ0R,SAC/D/H,EAAM8H,EAAW9H,IACb8H,EAAWvQ,SACbA,EAASuQ,EAAWvQ,SAGtByI,EAAM,GAAK8H,EAIT9H,EAAImH,QAAQ9W,EAAK2F,QACnB,MAAO6R,GAAUjT,MAAMtE,KAAM8D,EAG3BA,GAAK,IAAMA,EAAK,GAAGmD,SACrBA,EAASnD,EAAK,GAAGmD,OAGnB,IAAIyQ,IACFzQ,OAAQA,EACRyI,IAAKA,EACLqH,YAAa,KAGf,OAAOQ,GACJjT,MAAMtE,KAAM8D,GACZ6T,KAAK,SAASC,GASb,MARAF,GAAUX,YAAca,EAAST,OAEjCpX,EAAKgQ,mBACHmG,KAAM,OACNrC,SAAU,QACV1P,KAAMuT,IAGDE,IAER,SAAS,SAAS/B,GASjB,KAPA9V,GAAKgQ,mBACHmG,KAAM,OACNrC,SAAU,QACV1P,KAAMuT,EACNjU,MAAO,UAGHoS,MAIdM,GAMAvP,EAAgBwE,KAAOpL,KAAKiF,IAC1BE,EAAUiJ,kBACZjJ,EAAUiJ,iBAAiB,QAASrO,EAAKoU,EAAwB,UAAU,GAC3EhP,EAAUiJ,iBAAiB,WAAYrO,EAAKkW,MAAyB,IAC5D9Q,EAAU0S,cAEnB1S,EAAU0S,YAAY,UAAW9X,EAAKoU,EAAwB,UAC9DhP,EAAU0S,YAAY,aAAc9X,EAAKkW,OAQ7C,IAAI6B,GAAS/R,EAAQ+R,OACjBC,EAAsBD,GAAUA,EAAOE,KAAOF,EAAOE,IAAIC,QACzDC,GACDH,GACDhS,EAAQoS,SACRA,QAAQC,WACRD,QAAQE,YACV,IAAIzR,EAAgBoB,UAAYkQ,EAAwB,CAEtD,GAAII,GAAgBvS,EAAQwS,UAC5BxS,GAAQwS,WAAa,WACnB,GAAIC,GAAczY,EAAKgI,EAAUG,IAGjC,IAFAnI,EAAK0Y,GAAkB1Y,EAAKkI,EAAWuQ,GAEnCF,EACF,MAAOA,GAAchU,MAAMtE,KAAMgE,WAIrC,IAAI0U,GAA6B,SAASC,GAGxC,MAAO,YACL,GAAIjJ,GAAM1L,UAAUhD,OAAS,EAAIgD,UAAU,GAAKgJ,MAQhD,OALI0C,IAEF3P,EAAK0Y,GAAkB1Y,EAAKkI,EAAWyH,EAAM,IAGxCiJ,EAAiBrU,MAAMtE,KAAMgE,YAIxCyF,GAAK0O,QAAS,YAAaO,EAA4BvC,GACvD1M,EAAK0O,QAAS,eAAgBO,EAA4BvC,GAG5D,GAAIvP,EAAgBpD,SAAW,WAAauC,IAAWvC,QAAQoV,IAAK,CAElE,GAAIC,GAAwB,SAAS5U,EAAKE,GACxCpE,EAAKgQ,mBACH5M,QAASc,EACTR,MAAOU,EAAKV,MACZoQ,SAAU,YAIdhL,IAAM,QAAS,OAAQ,OAAQ,QAAS,OAAQ,SAAS4K,EAAGhQ,GAC1DqG,EAAkBtG,QAASC,EAAOoV,OAKxCC,EAAkB,WAGhB,IADA,GAAIC,GACG/Y,KAAK4H,EAAiB5G,QAAQ,CACnC+X,EAAU/Y,KAAK4H,EAAiByI,OAEhC,IAAIL,GAAM+I,EAAQ,GAChBnX,EAAOmX,EAAQ,GACf5D,EAAO4D,EAAQ,EAEjB/I,GAAIpO,GAAQuT,IAIhB6D,EAAiB,WAEf,IAAK,GAAI/R,KAAUjH,MAAKyH,EACtBzH,KAAKwH,EAAiBP,GAAUjH,KAAKyH,EAAwBR,IAIjEgS,EAAe,WACb,GAAIlZ,GAAOC,IAGX6I,GAAK7I,KAAK0H,EAAU,SAAS+L,EAAGnD,GAC9B,GAAI4I,GAAY5I,EAAO,GACnBxM,EAAOwM,EAAO,EAClB4I,GAAU5U,MAAMvE,GAAOA,GAAMoZ,OAAOrV,OAIxCsV,EAAW,SAASC,GAClB,GAAIC,GAAIrP,EAAWsP,KAAKF,GACtB/O,KACA3J,EAAI,CAEN,KACE,KAAOA,KAAK2J,EAAIP,EAAQpJ,IAAM2Y,EAAE3Y,IAAM,GACtC,MAAOT,GACP,KAAM,IAAIgD,GAAiB,gBAAkBmW,GAG/C,GAAI/O,EAAIqC,OAAS3M,KAAK6F,EAAe2T,eACnC,KAAM,IAAItW,GACR,iFAIJ,OAAOoH,IAGTmP,EAAkB,SAASvN,GAEzB,GAAImG,GAAe,KAAOnG,EAAI0I,MAAQ1I,EAAIwN,KAAO,IAAMxN,EAAIwN,KAAO,GAKlE,OAHIxN,GAAIyI,WACNtC,EAAenG,EAAIyI,SAAW,IAAMtC,GAE/BA,GAGTsH,EAAyB,WAElB3Z,KAAKqH,GACRrH,KAAK8O,EAAiBxK,MAAMtE,KAAMgE,YAItC4V,EAAkB,SAASC,EAAWtP,GACpC,GAAIoF,GAAS3P,KAAK4P,EAAeiK,EAAWtP,EAE5CvK,MAAK8Z,EAAc,UACjBD,UAAWA,EACXtP,QAASA,IAGXvK,KAAK+Z,GACHF,EAAUjY,KACViY,EAAU1W,QACV0W,EAAUnK,IACVmK,EAAUG,OACVrK,EACApF,IAIJ0P,EAAgB,SAASJ,EAAWtP,GAClC,GAAIxK,GAAOC,KACP2P,IACJ,IAAIkK,EAAUjL,OAASiL,EAAUjL,MAAM5N,SACrC6H,EAAKgR,EAAUjL,MAAO,SAASjO,EAAGiO,GAChC,GAAIsL,GAAQna,EAAKoa,GAAgBvL,EAAOiL,EAAUnK,IAC9CwK,IACFvK,EAAO9E,KAAKqP,KAKZ3P,GAAWA,EAAQiE,gBACrB,IAAK,GAAI6I,GAAI,EAAGA,EAAI9M,EAAQiE,gBAAkB6I,EAAI1H,EAAO3O,OAAQqW,IAC/D1H,EAAO0H,GAAG+C,QAAS,CAKzB,OADAzK,GAASA,EAAO5L,MAAM,EAAG/D,KAAK6F,EAAec,kBAI/C0T,GAAiB,SAASH,EAAOI,GAE/B,GAAIC,IACFC,SAAUN,EAAMxK,IAChBsK,OAAQE,EAAMO,KACdC,MAAOR,EAAMS,OACbC,WAAUV,EAAMnN,MAAQ,IAuB1B,OAfKmN,GAAMxK,MACT6K,EAAWC,SAAWF,GAGxBC,EAAWH,SAGNpa,KAAK6F,EAAeQ,aAAakJ,OACjCvP,KAAK6F,EAAeQ,aAAakJ,KAAKgL,EAAWC,WAEpD,qBAAqBjL,KAAKgL,EAAW,cAErC,qBAAqBhL,KAAKgL,EAAWC,WAGhCD,GAGTM,GAAmB,SAAS3E,EAAM/S,EAASsM,EAASuK,EAAQrK,EAAQpF,GAClE,GAAIuQ,IAAmB5E,EAAOA,EAAO,KAAO,KAAO/S,GAAW,GAC9D,KACInD,KAAK6F,EAAeK,aAAaqJ,OAClCvP,KAAK6F,EAAeK,aAAaqJ,KAAKpM,KACrCnD,KAAK6F,EAAeK,aAAaqJ,KAAKuL,GAH1C,CAQA,GAAIpM,EAoBJ,IAlBIiB,GAAUA,EAAO3O,QACnByO,EAAUE,EAAO,GAAG6K,UAAY/K,EAGhCE,EAAOE,UACPnB,GAAciB,OAAQA,IACbF,IACTf,GACEiB,SAEI6K,SAAU/K,EACVuK,OAAQA,EACRI,QAAQ,QAOZpa,KAAK6F,EAAeM,WAAWoJ,OACjCvP,KAAK6F,EAAeM,WAAWoJ,KAAKE,OAMlCzP,KAAK6F,EAAeO,cAAcmJ,MACnCvP,KAAK6F,EAAeO,cAAcmJ,KAAKE,IAF1C,CAOA,GAAItL,GAAO2E,GAGPiS,WACEC,SAEI9E,KAAMA,EACNvL,MAAOxH,EACPuL,WAAYA,KAIlBuM,QAASxL,GAEXlF,EAIFvK,MAAK8P,EAAM3L,MAGb+W,GAAa,SAAS/W,GAGpB,GAAI6G,GAAMhL,KAAK6F,EAAeY,gBAI9B,IAHItC,EAAKhB,UACPgB,EAAKhB,QAAU4F,EAAS5E,EAAKhB,QAAS6H,IAEpC7G,EAAK4W,UAAW,CAClB,GAAIA,GAAY5W,EAAK4W,UAAUC,OAAO,EACtCD,GAAUpQ,MAAQ5B,EAASgS,EAAUpQ,MAAOK,GAG9C,GAAImQ,GAAUhX,EAAKgX,OAanB,OAZIA,KACEA,EAAQzL,MACVyL,EAAQzL,IAAM3G,EAASoS,EAAQzL,IAAK1P,KAAK6F,EAAea,eAEtDyU,EAAQC,UACVD,EAAQC,QAAUrS,EAASoS,EAAQC,QAASpb,KAAK6F,EAAea,gBAIhEvC,EAAKkX,aAAelX,EAAKkX,YAAYL,QACvChb,KAAKsb,GAAiBnX,EAAKkX,aAEtBlX,GAMToX,GAAkB,SAASF,GAQzB,IAAK,GAJHG,GACAvL,EACA9L,EAHEsX,GAAY,KAAM,OAAQ,OAKrB9a,EAAI,EAAGA,EAAI0a,EAAYL,OAAOha,SAAUL,EAE/C,GADAsP,EAAQoL,EAAYL,OAAOra,GAExBsP,EAAMwF,eAAe,SACrBlN,EAAS0H,EAAM9L,QAChB6E,EAAaiH,EAAM9L,MAHrB,CAOAA,EAAO2E,KAAgBmH,EAAM9L,KAC7B,KAAK,GAAIkT,GAAI,EAAGA,EAAIoE,EAASza,SAAUqW,EACrCmE,EAAUC,EAASpE,GACflT,EAAKsR,eAAe+F,IAAYrX,EAAKqX,KACvCrX,EAAKqX,GAAWzS,EAAS5E,EAAKqX,GAAUxb,KAAK6F,EAAea,cAGhE2U,GAAYL,OAAOra,GAAGwD,KAAOA,IAIjCuX,GAAc,WACZ,GAAK1b,KAAKoF,GAAkBpF,KAAKiF,EAAjC,CACA,GAAI0W,KAkBJ,OAhBI3b,MAAKoF,GAAiBC,EAAWuW,YACnCD,EAASrV,SACPuV,aAAc1R,UAAUyR,YAKxB7V,EAAQiC,UAAYjC,EAAQiC,SAASE,OACvCyT,EAASjM,IAAM3J,EAAQiC,SAASE,MAG9BlI,KAAKiF,GAAgBE,EAAU2W,WAC5BH,EAASrV,UAASqV,EAASrV,YAChCqV,EAASrV,QAAQ8U,QAAUjW,EAAU2W,UAGhCH,IAGTI,EAAe,WACb/b,KAAKgc,GAAmB,EACxBhc,KAAKic,GAAgB,MAGvBC,GAAgB,WACd,MAAOlc,MAAKgc,IAAoBvX,IAAQzE,KAAKic,GAAgBjc,KAAKgc,IAYpEG,GAAe,SAASC,GACtB,GAAIC,GAAOrc,KAAKuF,CAEhB,UACG8W,GACDD,EAAQjZ,UAAYkZ,EAAKlZ,SACzBiZ,EAAQnB,UAAYoB,EAAKpB,WAKvBmB,EAAQ1N,YAAc2N,EAAK3N,WACtBnF,EAAiB6S,EAAQ1N,WAAY2N,EAAK3N,aACxC0N,EAAQrB,YAAasB,EAAKtB,WAE5BzR,EAAgB8S,EAAQrB,UAAWsB,EAAKtB,aAMnDuB,GAAkB,SAASnB,GAEzB,IAAInb,KAAKuc,KAAT,CAIA,GAAIpF,GAASgE,EAAQhE,MAKrB,IAAiB,MAAXA,GAA6B,MAAXA,GAA6B,MAAXA,EAA1C,CAEA,GAAIqF,EACJ,KAIIA,EADE9S,IACMyR,EAAQ7U,QAAQmW,IAAI,eAEpBtB,EAAQuB,kBAAkB,eAIpCF,EAA8B,IAAtBG,SAASH,EAAO,IACxB,MAAOtc,IAITF,KAAKgc,GAAmBQ,EAEpBA,EAEwB,EAAxBxc,KAAKgc,IAAwB,IAEjChc,KAAKic,GAAgBxX,OAGvBmY,EAAO,SAASzY,GACd,GAAIsG,GAAgBzK,KAAK6F,EAErBgX,GACAC,QAAS9c,KAAK2F,EACdvB,OAAQqG,EAAcrG,OACtB2Y,SAAU,cAEZpB,EAAW3b,KAAKgd,IAsDlB,IApDIrB,IACFkB,EAAS1B,QAAUQ,GAIjBxX,EAAKqK,sBAAuBrK,GAAKqK,eAErCrK,EAAO2E,EAAY+T,EAAU1Y,GAG7BA,EAAKyM,KAAO9H,EAAYA,KAAgB9I,KAAK4F,EAAegL,MAAOzM,EAAKyM,MACxEzM,EAAKnB,MAAQ8F,EAAYA,KAAgB9I,KAAK4F,EAAe5C,OAAQmB,EAAKnB,OAG1EmB,EAAKnB,MAAM,oBAAsByB,IAAQzE,KAAK2H,EAE1C3H,KAAK6H,GAAgB7H,KAAK6H,EAAa7G,OAAS,IAGlDmD,EAAKkX,aACHL,UAAWjX,MAAMhD,KAAKf,KAAK6H,EAAc,KAIzC7H,KAAK4F,EAAe6G,OAEtBtI,EAAKsI,KAAOzM,KAAK4F,EAAe6G,MAI9BhC,EAAcwG,cAAa9M,EAAK8M,YAAcxG,EAAcwG,aAG5DxG,EAAc3E,UAAS3B,EAAK2B,QAAU2E,EAAc3E,SAGpD2E,EAAcwS,aAAY9Y,EAAK+Y,YAAczS,EAAcwS,YAE/D9Y,EAAOnE,KAAKmd,GAAchZ,GAG1B1B,OAAO0M,KAAKhL,GAAMiZ,QAAQ,SAAS1S,IAChB,MAAbvG,EAAKuG,IAA8B,KAAdvG,EAAKuG,IAAe9B,EAAczE,EAAKuG,YACvDvG,GAAKuG,KAIZ7F,EAAW4F,EAAc2G,gBAC3BjN,EAAOsG,EAAc2G,aAAajN,IAASA,GAIxCA,IAAQyE,EAAczE,MAMzBU,EAAW4F,EAAc8G,qBACxB9G,EAAc8G,mBAAmBpN,IAOpC,MAAInE,MAAKuc,SACPvc,MAAKwK,EAAU,OAAQ,uCAAwCrG,QAIzB,gBAA7BsG,GAAc3D,WACnBiE,KAAKsS,SAAW5S,EAAc3D,YAChC9G,KAAKsd,GAAsBnZ,GAG7BnE,KAAKsd,GAAsBnZ,KAI/BoZ,GAAe,SAASpZ,GACtB,MAAO0F,GAAS1F,EAAMnE,KAAK6F,EAAekB,eAG5CyW,GAAU,WACR,MAAOpU,MAGTqU,GAAuB,SAAStZ,EAAMT,GACpC,GAAI3D,GAAOC,KACPyK,EAAgBzK,KAAK6F,CAEzB,IAAK7F,KAAKyL,UAAV,CAQA,GALAtH,EAAOnE,KAAK0d,GAAYvZ,IAKnBnE,KAAK6F,EAAe8X,iBAAmB3d,KAAK4d,GAAczZ,GAE7D,WADAnE,MAAKwK,EAAU,OAAQ,+BAAgCrG,EAOzDnE,MAAKwF,EAAerB,EAAK0Z,WAAa1Z,EAAK0Z,SAAW7d,KAAK8d,MAG3D9d,KAAKuF,EAAYpB,EAEjBnE,KAAKwK,EAAU,QAAS,uBAAwBrG,EAEhD,IAAI4Z,IACFC,eAAgB,IAChBC,cAAe,YAAcje,KAAKoK,QAClC8T,WAAYle,KAAK0F,EAGf1F,MAAK0M,IACPqR,EAAKI,cAAgBne,KAAK0M,EAG5B,IAAIqO,GAAY5W,EAAK4W,WAAa5W,EAAK4W,UAAUC,OAAO,EAItDhb,MAAK6F,EAAee,iBACpB5G,KAAK6F,EAAee,gBAAgByE,QAEpCrL,KAAK+P,mBACH8D,SAAU,SACV1Q,QAAS4X,GACJA,EAAU7E,KAAO6E,EAAU7E,KAAO,KAAO,IAAM6E,EAAUpQ,MAC1DxG,EAAKhB,QACT0a,SAAU1Z,EAAK0Z,SACfpa,MAAOU,EAAKV,OAAS,SAIzB,IAAIiM,GAAM1P,KAAK6M,GACdpC,EAAcgH,WAAazR,KAAKoe,IAAcrd,KAAKf,MAClD0P,IAAKA,EACLqO,KAAMA,EACN5Z,KAAMA,EACNoG,QAASE,EACT4T,UAAW,WACTte,EAAKoI,IAELpI,EAAK+Z,EAAc,WACjB3V,KAAMA,EACNsO,IAAK/C,IAEPhM,GAAYA,KAEd4a,QAAS,SAAiBhc,GACxBvC,EAAKyK,EAAU,QAAS,mCAAoClI,GAExDA,EAAM6Y,SACRpb,EAAKwe,GAAiBjc,EAAM6Y,SAG9Bpb,EAAK+Z,EAAc,WACjB3V,KAAMA,EACNsO,IAAK/C,IAEPpN,EAAQA,GAAS,GAAI1B,OAAM,sDAC3B8C,GAAYA,EAASpB,QAK3Bkc,GAAc,SAASC,GAErB,GAAI/O,GAAM+O,EAAK/O,IAAM,IAAMvG,EAAUsV,EAAKV,MAEtCW,EAAmB,KACnBC,IAUJ,IARIF,EAAKlU,QAAQjE,UACfoY,EAAmB1e,KAAK4e,GAAcH,EAAKlU,QAAQjE,UAGjDmY,EAAKlU,QAAQsU,kBACfF,EAA2B3e,KAAK4e,GAAcH,EAAKlU,QAAQsU,kBAGzDnV,IAAiB,CACnBiV,EAAyBhM,KAAO3N,EAAUyZ,EAAKta,KAE/C,IAAI2a,GAAsBhW,KAAgB9I,KAAKgH,GAC3C+X,EAAejW,EAAYgW,EAAqBH,EAMpD,OAJID,KACFK,EAAazY,QAAUoY,GAGlB3Y,EACJiZ,MAAMtP,EAAKqP,GACXpH,KAAK,SAASC,GACb,GAAIA,EAASqH,GACXR,EAAKJ,WAAaI,EAAKJ,gBAClB,CACL,GAAI/b,GAAQ,GAAI1B,OAAM,sBAAwBgX,EAAST,OAGvD7U,GAAM6Y,QAAUvD,EAChB6G,EAAKH,SAAWG,EAAKH,QAAQhc,MAGhC,SAAS,WACRmc,EAAKH,SACHG,EAAKH,QAAQ,GAAI1d,OAAM,6CAI/B,GAAIua,GAAUpV,EAAQ4Q,gBAAkB,GAAI5Q,GAAQ4Q,cACpD,IAAKwE,EAAL,CAGA,GAAI+D,GAAU,mBAAqB/D,IAAqC,mBAAnBgE,eAEhDD,KAED,mBAAqB/D,GACvBA,EAAQ7D,mBAAqB,WAC3B,GAA2B,IAAvB6D,EAAQjE,WAEL,GAAuB,MAAnBiE,EAAQhE,OACjBsH,EAAKJ,WAAaI,EAAKJ,gBAClB,IAAII,EAAKH,QAAS,CACvB,GAAIzI,GAAM,GAAIjV,OAAM,sBAAwBua,EAAQhE,OACpDtB,GAAIsF,QAAUA,EACdsD,EAAKH,QAAQzI,MAIjBsF,EAAU,GAAIgE,gBAGdzP,EAAMA,EAAI0P,QAAQ,WAAY,IAG1BX,EAAKJ,YACPlD,EAAQkE,OAASZ,EAAKJ,WAEpBI,EAAKH,UACPnD,EAAQmE,QAAU,WAChB,GAAIzJ,GAAM,GAAIjV,OAAM,oCACpBiV,GAAIsF,QAAUA,EACdsD,EAAKH,QAAQzI,MAKnBsF,EAAQoE,KAAK,OAAQ7P,GAEjBgP,GACF7V,EAAK6V,EAAkB,SAAShU,EAAKC,GACnCwQ,EAAQqE,iBAAiB9U,EAAKC,KAIlCwQ,EAAQsE,KAAKza,EAAUyZ,EAAKta,UAG9Bub,GAAe,SAASC,GACtB,GAAIC,KAEJ,KAAK,GAAIlV,KAAOiV,GACd,GAAIA,EAAKlK,eAAe/K,GAAM,CAC5B,GAAIC,GAAQgV,EAAKjV,EACjBkV,GAAUlV,GAAwB,kBAAVC,GAAuBA,IAAUA,EAI7D,MAAOiV,IAGTC,EAAW,SAASpc,GAGhBzD,KAAKyH,EAAwBhE,KAC5BzD,KAAKqK,OAASrK,KAAK6F,EAAewE,QAGnChG,SAAS3B,UAAU4B,MAAMvD,KACvBf,KAAKyH,EAAwBhE,GAC7BzD,KAAKwH,KACFzD,MAAMhD,KAAKiD,UAAW,KAK/B8b,EAAe,SAASpV,EAAKoC,GACvB5H,EAAY4H,SACP9M,MAAK4F,EAAe8E,GAE3B1K,KAAK4F,EAAe8E,GAAO5B,EAAY9I,KAAK4F,EAAe8E,OAAYoC,KAM7E7M,EAAMyC,UAAUqd,QAAU9f,EAAMyC,UAAU8N,eAC1CvQ,EAAMyC,UAAUsd,kBAAoB/f,EAAMyC,UAAUwO,WAEpDzR,EAAOD,QAAUS,IAEdc,KAAKf,KAAuB,mBAAXF,QAAyBA,OAAyB,mBAATC,MAAuBA,KAAyB,mBAAXF,QAAyBA,aACxHogB,GAAK,GAAGhd,EAAI,EAAEI,EAAI,EAAEkB,EAAI,EAAE2b,EAAI,EAAEC,EAAI,IAAI5e,GAAG,SAASL,EAAQzB,EAAOD,IACtE,SAAWM,GAOX,GAAIsgB,GAAmBlf,EAAQ,GAG3B6E,EACgB,mBAAXlG,QACHA,OACkB,mBAAXC,GAAyBA,EAAyB,mBAATC,MAAuBA,QACzEsgB,EAASta,EAAQ9F,MAEjBA,EAAQ,GAAImgB,EAQhBngB,GAAMqgB,WAAa,WAEjB,MADAva,GAAQ9F,MAAQogB,EACTpgB,GAGTA,EAAM4R,YAENpS,EAAOD,QAAUS,EAoCjBR,EAAOD,QAAQ+gB,OAASH,IAErBrf,KAAKf,KAAuB,mBAAXF,QAAyBA,OAAyB,mBAATC,MAAuBA,KAAyB,mBAAXF,QAAyBA,aACxH2E,EAAI,IAAID,GAAG,SAASrD,EAAQzB,EAAOD,IACtC,SAAWM,GAQX,QAASyI,GAASiY,GAChB,MAAuB,gBAATA,IAA8B,OAATA,EAKrC,QAASlY,GAAQqC,GACf,UAAWhI,SAAS5B,KAAK4J,IACvB,IAAK,iBACH,OAAO,CACT,KAAK,qBACH,OAAO,CACT,KAAK,wBACH,OAAO,CACT,SACE,MAAOA,aAAiB/J,QAI9B,QAAS6H,GAAakC,GACpB,MAAO8V,MAAoD,2BAAzB9d,SAAS5B,KAAK4J,GAGlD,QAASzF,GAAYsb,GACnB,MAAgB,UAATA,EAGT,QAAS3b,GAAW2b,GAClB,MAAuB,kBAATA,GAGhB,QAAShY,GAAcgY,GACrB,MAAgD,oBAAzC/d,OAAOC,UAAUC,SAAS5B,KAAKyf,GAGxC,QAAS9X,GAAS8X,GAChB,MAAgD,oBAAzC/d,OAAOC,UAAUC,SAAS5B,KAAKyf,GAGxC,QAAS7X,GAAQ6X,GACf,MAAgD,mBAAzC/d,OAAOC,UAAUC,SAAS5B,KAAKyf,GAGxC,QAAS5X,GAAc4X,GACrB,IAAKhY,EAAcgY,GAAO,OAAO,CAEjC,KAAK,GAAI/M,KAAK+M,GACZ,GAAIA,EAAK/K,eAAehC,GACtB,OAAO,CAGX,QAAO,EAGT,QAASgN,KACP,IAEE,MADA,IAAIC,YAAW,KACR,EACP,MAAOxgB,GACP,OAAO,GAIX,QAASwJ,KACP,KAAM,SAAW3D,IAAU,OAAO,CAElC,KAIE,MAHA,IAAI4a,SACJ,GAAIlJ,SAAQ,IACZ,GAAImJ,WACG,EACP,MAAO1gB,GACP,OAAO,GAQX,QAASkH,KACP,IAAKsC,IAAiB,OAAO,CAE7B,KAKE,MAHA,IAAI+N,SAAQ,cACVtQ,eAAgB,YAEX,EACP,MAAOjH,GACP,OAAO,GAIX,QAAS2gB,KACP,MAAwC,kBAA1BC,uBAGhB,QAASC,GAAgBrd,GACvB,QAAS0N,GAAajN,EAAMS,GAC1B,GAAIoc,GAAiBtd,EAASS,IAASA,CACvC,OAAIS,GACKA,EAASoc,IAAmBA,EAE9BA,EAGT,MAAO5P,GAGT,QAASvI,GAAKmH,EAAKtM,GACjB,GAAI/C,GAAG0W,CAEP,IAAInS,EAAY8K,EAAIhP,QAClB,IAAKL,IAAKqP,GACJ/G,EAAO+G,EAAKrP,IACd+C,EAAS3C,KAAK,KAAMJ,EAAGqP,EAAIrP,QAK/B,IADA0W,EAAIrH,EAAIhP,OAEN,IAAKL,EAAI,EAAGA,EAAI0W,EAAG1W,IACjB+C,EAAS3C,KAAK,KAAMJ,EAAGqP,EAAIrP,IAMnC,QAASmI,GAAYmY,EAAMC,GACzB,MAAKA,IAGLrY,EAAKqY,EAAM,SAASxW,EAAKC,GACvBsW,EAAKvW,GAAOC,IAEPsW,GALEA,EAgBX,QAASjY,GAAagH,GACpB,QAAKvN,OAAO0e,UAGL1e,OAAO0e,SAASnR,GAGzB,QAASjH,GAASsQ,EAAKrO,GACrB,GAAmB,gBAARA,GACT,KAAM,IAAIpK,OAAM,yDAElB,OAAmB,gBAARyY,IAA4B,IAARrO,EACtBqO,EAEFA,EAAIrY,QAAUgK,EAAMqO,EAAMA,EAAI9M,OAAO,EAAGvB,GAAO,IAUxD,QAAS/B,GAAOmY,EAAQ1W,GACtB,MAAOjI,QAAOC,UAAU+S,eAAe1U,KAAKqgB,EAAQ1W,GAGtD,QAASxB,GAAWmY,GAQlB,IALA,GAGEC,GAHEC,KACF5gB,EAAI,EACJ6gB,EAAMH,EAASrgB,OAGVL,EAAI6gB,EAAK7gB,IACd2gB,EAAUD,EAAS1gB,GACf+H,EAAS4Y,GAGXC,EAAQ1W,KAAKyW,EAAQlC,QAAQ,8BAA+B,SACnDkC,GAAWA,EAAQG,QAE5BF,EAAQ1W,KAAKyW,EAAQG,OAIzB,OAAO,IAAIC,QAAOH,EAAQI,KAAK,KAAM,KAGvC,QAASxY,GAAU5I,GACjB,GAAIqhB,KAIJ,OAHA/Y,GAAKtI,EAAG,SAASmK,EAAKC,GACpBiX,EAAM/W,KAAKqH,mBAAmBxH,GAAO,IAAMwH,mBAAmBvH,MAEzDiX,EAAMD,KAAK,KAMpB,QAASnY,GAASkG,GAChB,GAAmB,gBAARA,GAAkB,QAC7B,IAAImS,GAAQnS,EAAImS,MAAM,kEAGlBC,EAAQD,EAAM,IAAM,GACpBE,EAAWF,EAAM,IAAM,EAC3B,QACElN,SAAUkN,EAAM,GAChBjN,KAAMiN,EAAM,GACZxV,KAAMwV,EAAM,GACZhN,SAAUgN,EAAM,GAAKC,EAAQC,GAGjC,QAAS3Y,KACP,GAAI4Y,GAASjc,EAAQic,QAAUjc,EAAQkc,QAEvC,KAAK/c,EAAY8c,IAAWA,EAAOE,gBAAiB,CAGlD,GAAIC,GAAM,GAAIC,aAAY,EAC1BJ,GAAOE,gBAAgBC,GAGvBA,EAAI,GAAe,KAATA,EAAI,GAAc,MAE5BA,EAAI,GAAe,MAATA,EAAI,GAAe,KAE7B,IAAIE,GAAM,SAASC,GAEjB,IADA,GAAIC,GAAID,EAAI3f,SAAS,IACd4f,EAAEvhB,OAAS,GAChBuhB,EAAI,IAAMA,CAEZ,OAAOA,GAGT,OACEF,GAAIF,EAAI,IACRE,EAAIF,EAAI,IACRE,EAAIF,EAAI,IACRE,EAAIF,EAAI,IACRE,EAAIF,EAAI,IACRE,EAAIF,EAAI,IACRE,EAAIF,EAAI,IACRE,EAAIF,EAAI,IAIV,MAAO,mCAAmC/C,QAAQ,QAAS,SAASoD,GAClE,GAAIniB,GAAqB,GAAhB0K,KAAKsS,SAAiB,EAC7BkF,EAAU,MAANC,EAAYniB,EAAS,EAAJA,EAAW,CAClC,OAAOkiB,GAAE5f,SAAS,MAYxB,QAAS0G,GAAiBoZ,GAWxB,IATA,GAOEC,GAPEC,EAAsB,EACxBC,EAAiB,GACjBC,KACAC,EAAS,EACTtB,EAAM,EACNuB,EAAY,MACZC,EAAYD,EAAU/hB,OAGjByhB,GAAQK,IAAWH,IACxBD,EAAUO,EAAoBR,KAMhB,SAAZC,GACCI,EAAS,GAAKtB,EAAMqB,EAAI7hB,OAASgiB,EAAYN,EAAQ1hB,QAAU4hB,KAKlEC,EAAIhY,KAAK6X,GAETlB,GAAOkB,EAAQ1hB,OACfyhB,EAAOA,EAAKS,UAGd,OAAOL,GAAIhT,UAAU8R,KAAKoB,GAS5B,QAASE,GAAoBR,GAC3B,GACEU,GACAC,EACA1Y,EACA2Y,EACA1iB,EALEkiB,IAOJ,KAAKJ,IAASA,EAAKzO,QACjB,MAAO,EAST,IANA6O,EAAIhY,KAAK4X,EAAKzO,QAAQR,eAClBiP,EAAKxc,IACP4c,EAAIhY,KAAK,IAAM4X,EAAKxc,IAGtBkd,EAAYV,EAAKU,UACbA,GAAaza,EAASya,GAExB,IADAC,EAAUD,EAAUnZ,MAAM,OACrBrJ,EAAI,EAAGA,EAAIyiB,EAAQpiB,OAAQL,IAC9BkiB,EAAIhY,KAAK,IAAMuY,EAAQziB,GAG3B,IAAI2iB,IAAiB,OAAQ,OAAQ,QAAS,MAC9C,KAAK3iB,EAAI,EAAGA,EAAI2iB,EAActiB,OAAQL,IACpC+J,EAAM4Y,EAAc3iB,GACpB0iB,EAAOZ,EAAKc,aAAa7Y,GACrB2Y,GACFR,EAAIhY,KAAK,IAAMH,EAAM,KAAO2Y,EAAO,KAGvC,OAAOR,GAAIlB,KAAK,IAMlB,QAAS6B,GAAgB/iB,EAAGgjB,GAC1B,WAAYhjB,IAAMgjB,GAMpB,QAASC,GAAgBjjB,EAAGgjB,GAC1B,MAAOve,GAAYzE,IAAMyE,EAAYue,GAMvC,QAASna,GAAgByF,EAAK4U,GAC5B,OAAIH,EAAgBzU,EAAK4U,KAEzB5U,EAAMA,EAAIiM,OAAO,GACjB2I,EAAMA,EAAI3I,OAAO,GAEbjM,EAAImH,OAASyN,EAAIzN,MAAQnH,EAAIpE,QAAUgZ,EAAIhZ,SAG3C+Y,EAAgB3U,EAAIL,WAAYiV,EAAIjV,aAEjCnF,EAAiBwF,EAAIL,WAAYiV,EAAIjV,cAM9C,QAASnF,GAAiBqa,EAAQC,GAChC,GAAIL,EAAgBI,EAAQC,GAAS,OAAO,CAE5C,IAAIC,GAAUF,EAAOjU,OACjBoU,EAAUF,EAAOlU,MAGrB,IAAImU,EAAQ9iB,SAAW+iB,EAAQ/iB,OAAQ,OAAO,CAI9C,KAAK,GADDP,GAAGgjB,EACE9iB,EAAI,EAAGA,EAAImjB,EAAQ9iB,OAAQL,IAGlC,GAFAF,EAAIqjB,EAAQnjB,GACZ8iB,EAAIM,EAAQpjB,GAEVF,EAAE+Z,WAAaiJ,EAAEjJ,UACjB/Z,EAAEuZ,SAAWyJ,EAAEzJ,QACfvZ,EAAEia,QAAU+I,EAAE/I,OACdja,EAAE,cAAgBgjB,EAAE,YAEpB,OAAO,CAEX,QAAO,EAUT,QAASha,GAAKuG,EAAKpO,EAAMoiB,EAAaC,GACpC,GAAW,MAAPjU,EAAJ,CACA,GAAImF,GAAOnF,EAAIpO,EACfoO,GAAIpO,GAAQoiB,EAAY7O,GACxBnF,EAAIpO,GAAMwL,GAAY,EACtB4C,EAAIpO,GAAM2L,EAAW4H,EACjB8O,GACFA,EAAMpZ,MAAMmF,EAAKpO,EAAMuT,KAU3B,QAASjR,GAASggB,EAAOC,GACvB,IAAKxb,EAAQub,GAAQ,MAAO,EAI5B,KAAK,GAFDE,MAEKzjB,EAAI,EAAGA,EAAIujB,EAAMljB,OAAQL,IAChC,IACEyjB,EAAOvZ,KAAKwZ,OAAOH,EAAMvjB,KACzB,MAAOT,GACPkkB,EAAOvZ,KAAK,gCAIhB,MAAOuZ,GAAOzC,KAAKwC,GASrB,QAASG,GAAW3Z,GAClB,QAAS4Z,UAAU5Z,GAAOX,MAAM,SAAShJ,OAG3C,QAASwjB,GAAS7Z,GAChB,MAAO2Z,GAAWvf,KAAKC,UAAU2F,IAGnC,QAAS8Z,GAAe9Z,GACtB,GAAqB,gBAAVA,GAAoB,CAC7B,GAAI+Z,GAAY,EAChB,OAAO3b,GAAS4B,EAAO+Z,GAClB,GACY,gBAAV/Z,IACU,iBAAVA,IACU,mBAAVA,GAEP,MAAOA,EAGT,IAAIuL,GAAOzT,OAAOC,UAAUC,SAAS5B,KAAK4J,EAG1C,OAAa,oBAATuL,EAAmC,WAC1B,mBAATA,EAAkC,UACzB,sBAATA,EACKvL,EAAM/I,KAAO,cAAgB+I,EAAM/I,KAAO,IAAM,aAElD+I,EAGT,QAASga,GAAgBha,EAAOia,GAC9B,MAAc,KAAVA,EAAoBH,EAAe9Z,GAEnCnC,EAAcmC,GACTlI,OAAO0M,KAAKxE,GAAOka,OAAO,SAASC,EAAKpa,GAE7C,MADAoa,GAAIpa,GAAOia,EAAgBha,EAAMD,GAAMka,EAAQ,GACxCE,OAEAzP,MAAM1M,QAAQgC,GAChBA,EAAMoa,IAAI,SAASC,GACxB,MAAOL,GAAgBK,EAAKJ,EAAQ,KAIjCH,EAAe9Z,GAGxB,QAASf,GAAmB2E,EAAIqW,EAAOK,GACrC,IAAKzc,EAAc+F,GAAK,MAAOA,EAE/BqW,GAAyB,gBAAVA,GAAqBM,EAAgCN,EACpEK,EAA2B,gBAAVL,GAAqBO,EAA+BF,CAErE,IAAIG,GAAaT,EAAgBpW,EAAIqW,EAErC,OAAIJ,GAASxf,EAAUogB,IAAeH,EAC7Brb,EAAmB2E,EAAIqW,EAAQ,GAGjCQ,EAGT,QAASzb,GAAwBwF,EAAMuV,GACrC,GAAoB,gBAATvV,IAAqC,gBAATA,GAAmB,MAAOA,GAAKxM,UACtE,KAAK0S,MAAM1M,QAAQwG,GAAO,MAAO,EAKjC,IAHAA,EAAOA,EAAKkW,OAAO,SAAS3a,GAC1B,MAAsB,gBAARA,KAEI,IAAhByE,EAAKnO,OAAc,MAAO,sBAG9B,IADA0jB,EAAiC,gBAAdA,GAAyBY,EAA4BZ,EACpEvV,EAAK,GAAGnO,QAAU0jB,EAAW,MAAOvV,GAAK,EAE7C,KAAK,GAAIoW,GAAWpW,EAAKnO,OAAQukB,EAAW,EAAGA,IAAY,CACzD,GAAIH,GAAajW,EAAKpL,MAAM,EAAGwhB,GAAU5D,KAAK,KAC9C,MAAIyD,EAAWpkB,OAAS0jB,GACxB,MAAIa,KAAapW,EAAKnO,OAAeokB,EAC9BA,EAAa,IAGtB,MAAO,GAGT,QAASvb,GAASqa,EAAOnd,GAcvB,QAASye,GAAeC,GACtB,MAAI9c,GAAQ8c,GACHA,EAAYV,IAAI,SAASC,GAC9B,MAAOQ,GAAeR,KAItBxc,EAAcid,GACThjB,OAAO0M,KAAKsW,GAAaZ,OAAO,SAASC,EAAKY,GAMnD,MAJEZ,GAAIY,GADFC,EAAepW,KAAKmW,GACbE,EAEAJ,EAAeC,EAAYC,IAE/BZ,OAIJW,EA/BT,IAAK9c,EAAQ5B,IAAkB4B,EAAQ5B,IAAyC,IAAxBA,EAAa/F,OACnE,MAAOkjB,EAET,IAEI2B,GAFAF,EAAiBzc,EAAWnC,GAC5B6e,EAAe,UAGnB,KACEC,EAAY9gB,KAAKgM,MAAM/L,EAAUkf,IACjC,MAAO4B,GACP,MAAO5B,GAwBT,MAAOsB,GAAeK,GAlkBxB,GAAI7gB,GAAY9D,EAAQ,GAEpB6E,EACgB,mBAAXlG,QACHA,OACkB,mBAAXC,GAAyBA,EAAyB,mBAATC,MAAuBA,QAgczEmlB,EAAgC,EAEhCC,EAA+B,MAC/BG,EAA4B,EA6HhC7lB,GAAOD,SACL+I,SAAUA,EACVD,QAASA,EACTG,aAAcA,EACdvD,YAAaA,EACbL,WAAYA,EACZ2D,cAAeA,EACfE,SAAUA,EACVC,QAASA,EACTC,cAAeA,EACf6X,mBAAoBA,EACpB/W,cAAeA,EACftC,uBAAwBA,EACxByZ,8BAA+BA,EAC/BE,gBAAiBA,EACjBlY,KAAMA,EACNC,YAAaA,EACbC,SAAUA,EACVC,aAAcA,EACdC,OAAQA,EACRC,WAAYA,EACZC,UAAWA,EACXC,MAAOA,EACPC,iBAAkBA,EAClB4Z,oBAAqBA,EACrB3Z,gBAAiBA,EACjBC,iBAAkBA,EAClBC,SAAUA,EACVC,KAAMA,EACNvF,SAAUA,EACV0F,mBAAoBA,EACpBD,wBAAyBA,EACzBE,SAAUA,KAGT9I,KAAKf,KAAuB,mBAAXF,QAAyBA,OAAyB,mBAATC,MAAuBA,KAAyB,mBAAXF,QAAyBA,aACxHsgB,EAAI,IAAID,GAAG,SAAShf,EAAQzB,EAAOD,IACtC,SAAWM,GA+BX,QAASimB,KACP,MAAwB,mBAAb7b,WAAiD,MAArBA,SAASlC,SAAyB,GAElEkC,SAASlC,SAASE,KAjC3B,GAAI5E,GAAQpC,EAAQ,GAYhBkH,GACF7B,qBAAqB,EACrB8D,OAAO,GAILtE,EACgB,mBAAXlG,QACHA,OACkB,mBAAXC,GAAyBA,EAAyB,mBAATC,MAAuBA,QAGzEimB,KAAYjiB,MACZkiB,EAAmB,IAGnBC,EAAiB,yGA+CrB9d,GAASsD,OAAS,WAUhB,QAASC,GAAUwa,GACjBC,IACAC,EAASxb,KAAKsb,GAOhB,QAASG,GAAYH,GACnB,IAAK,GAAIxlB,GAAI0lB,EAASrlB,OAAS,EAAGL,GAAK,IAAKA,EACtC0lB,EAAS1lB,KAAOwlB,GAClBE,EAASE,OAAO5lB,EAAG,GAQzB,QAAS6lB,KACPC,IACAJ,KAOF,QAASK,GAAe9X,EAAO+X,GAC7B,GAAI5L,GAAY,IAChB,KAAI4L,GAAkBve,EAAS7B,oBAA/B,CAGA,IAAK,GAAI5F,KAAK0lB,GACZ,GAAIA,EAAS5Q,eAAe9U,GAC1B,IACE0lB,EAAS1lB,GAAG2D,MAAM,MAAOsK,GAAOuK,OAAO6M,EAAOjlB,KAAKiD,UAAW,KAC9D,MAAO4iB,GACP7L,EAAY6L,EAKlB,GAAI7L,EACF,KAAMA,IAiBV,QAAS8L,GAAsB5iB,EAAKyL,EAAKoX,EAAQC,EAAOxY,GACtD,GAAIK,GAAQ,KAERmM,EAAYzX,EAAMmF,aAAa8F,GAAMA,EAAGjM,MAAQiM,EAEhDpL,EAAUG,EAAMmF,aAAaxE,GAAOA,EAAId,QAAUc,CAEtD,IAAI+iB,EACF5e,EAASyG,kBAAkBoY,oCACzBD,EACAtX,EACAoX,EACA3jB,GAEF+jB,QACK,IAAInM,GAAazX,EAAMgF,QAAQyS,GAMpCnM,EAAQxG,EAASyG,kBAAkBkM,GACnC2L,EAAe9X,GAAO,OACjB,CACL,GAOIuY,GAPAnf,GACF0H,IAAKA,EACL+K,KAAMqM,EACNnM,OAAQoM,GAGNnlB,EAAOoL,MAGX,IAAkC,uBAA3BrK,SAAS5B,KAAKoC,GAAgC,CACnD,GAAIgkB,GAAShkB,EAAQ0e,MAAMqE,EACvBiB,KACFvlB,EAAOulB,EAAO,GACdhkB,EAAUgkB,EAAO,IAIrBnf,EAAS+E,KAAOkZ,EAEhBrX,GACEhN,KAAMA,EACNuB,QAASA,EACTuM,IAAKqW,IACLnX,OAAQ5G,IAEV0e,EAAe9X,GAAO,GAGxB,QAAIwY,GACKA,EAAmB9iB,MAAMtE,KAAMgE,WAM1C,QAASoiB,KACHiB,IAGJD,EAAqBrhB,EAAQuZ,QAC7BvZ,EAAQuZ,QAAUuH,EAClBQ,GAA2B,GAG7B,QAASZ,KACFY,IAGLthB,EAAQuZ,QAAU8H,EAClBC,GAA2B,EAC3BD,EAAqBpa,QAGvB,QAASka,KACP,GAAII,GAAsBN,EACxBO,EAAYC,CACdA,GAAW,KACXR,EAAqB,KACrBtV,EAAgB,KAChBgV,EAAepiB,MAAM,MAAOgjB,GAAqB,GAAOnO,OAAOoO,IAUjE,QAAS7b,GAAO6C,EAAIkZ,GAClB,GAAI3jB,GAAOkiB,EAAOjlB,KAAKiD,UAAW,EAClC,IAAIgjB,EAAoB,CACtB,GAAItV,IAAkBnD,EACpB,MAEA2Y,KAIJ,GAAItY,GAAQxG,EAASyG,kBAAkBN,EAevC,IAdAyY,EAAqBpY,EACrB8C,EAAgBnD,EAChBiZ,EAAW1jB,EAMXgP,WAAW,WACLpB,IAAkBnD,GACpB2Y,KAEDtY,EAAM8Y,WAAa,IAAO,GAEzBD,KAAY,EACd,KAAMlZ,GA9LV,GA0DI6Y,GAAoBC,EA1DpBhB,KACFmB,EAAW,KACX9V,EAAgB,KAChBsV,EAAqB,IAkMvB,OAHAtb,GAAOC,UAAYA,EACnBD,EAAO4a,YAAcA,EACrB5a,EAAO8B,UAAYgZ,EACZ9a,KAsDTtD,EAASyG,kBAAoB,WA4C3B,QAAS8Y,GAA+BpZ,GACtC,GAAwB,mBAAbA,GAAGK,OAA0BL,EAAGK,MAA3C,CAiBA,IAAK,GALDgZ,GACAC,EACAC,EAZAhQ,EAAS,0IACTiQ,EAAQ,wHAGRC,EAAQ,6JAERC,EAAY,gDACZC,EAAa,gCACbC,EAAQ5Z,EAAGK,MAAM5E,MAAM,MACvB4E,KAMKjO,GAFO,sBAAsB4Y,KAAKhL,EAAGpL,SAEjC,GAAGkU,EAAI8Q,EAAMnnB,OAAQL,EAAI0W,IAAK1W,EAAG,CAC5C,GAAKknB,EAAQ/P,EAAOyB,KAAK4O,EAAMxnB,IAAM,CACnC,GAAIynB,GAAWP,EAAM,IAAqC,IAA/BA,EAAM,GAAGhR,QAAQ,UACxCwR,EAASR,EAAM,IAAmC,IAA7BA,EAAM,GAAGhR,QAAQ,OACtCwR,KAAWT,EAAWM,EAAW3O,KAAKsO,EAAM,OAE9CA,EAAM,GAAKD,EAAS,GACpBC,EAAM,GAAKD,EAAS,GACpBC,EAAM,GAAKD,EAAS,IAEtBE,GACEpY,IAAM0Y,EAAsB,KAAXP,EAAM,GACvB9a,KAAM8a,EAAM,IAAM5B,EAClBniB,KAAMskB,GAAYP,EAAM,OACxBpN,KAAMoN,EAAM,IAAMA,EAAM,GAAK,KAC7BlN,OAAQkN,EAAM,IAAMA,EAAM,GAAK,UAE5B,IAAKA,EAAQE,EAAMxO,KAAK4O,EAAMxnB,IACnCmnB,GACEpY,IAAKmY,EAAM,GACX9a,KAAM8a,EAAM,IAAM5B,EAClBniB,QACA2W,MAAOoN,EAAM,GACblN,OAAQkN,EAAM,IAAMA,EAAM,GAAK,UAE5B,CAAA,KAAKA,EAAQG,EAAMzO,KAAK4O,EAAMxnB,KAsBnC,QArBA,IAAI0nB,GAASR,EAAM,IAAMA,EAAM,GAAGhR,QAAQ,aACtCwR,KAAWT,EAAWK,EAAU1O,KAAKsO,EAAM,MAE7CA,EAAM,GAAKD,EAAS,GACpBC,EAAM,GAAKD,EAAS,GACpBC,EAAM,GAAK,MACI,IAANlnB,GAAYknB,EAAM,IAAiC,mBAApBtZ,GAAG+Z,eAK3C1Z,EAAM,GAAG+L,OAASpM,EAAG+Z,aAAe,GAEtCR,GACEpY,IAAKmY,EAAM,GACX9a,KAAM8a,EAAM,IAAM5B,EAClBniB,KAAM+jB,EAAM,GAAKA,EAAM,GAAG7d,MAAM,QAChCyQ,KAAMoN,EAAM,IAAMA,EAAM,GAAK,KAC7BlN,OAAQkN,EAAM,IAAMA,EAAM,GAAK,OAM9BC,EAAQ/a,MAAQ+a,EAAQrN,OAC3BqN,EAAQ/a,KAAOkZ,GAGjBrX,EAAM/D,KAAKid,GAGb,MAAKlZ,GAAM5N,QAKTY,KAAM2M,EAAG3M,KACTuB,QAASoL,EAAGpL,QACZuM,IAAKqW,IACLnX,MAAOA,GAPA,MAwBX,QAASqY,GAAoCpN,EAAWnK,EAAKoX,EAAQ3jB,GACnE,GAAIolB,IACF7Y,IAAKA,EACL+K,KAAMqM,EAGR,IAAIyB,EAAQ7Y,KAAO6Y,EAAQ9N,KAAM,CAO/B,GANAZ,EAAU6N,YAAa,EAElBa,EAAQxb,OACXwb,EAAQxb,KAAOkZ,GAGbpM,EAAUjL,MAAM5N,OAAS,GACvB6Y,EAAUjL,MAAM,GAAGc,MAAQ6Y,EAAQ7Y,IAAK,CAC1C,GAAImK,EAAUjL,MAAM,GAAG6L,OAAS8N,EAAQ9N,KACtC,OAAO,CACF,KACJZ,EAAUjL,MAAM,GAAG6L,MACpBZ,EAAUjL,MAAM,GAAG7B,OAASwb,EAAQxb,KAGpC,MADA8M,GAAUjL,MAAM,GAAG6L,KAAO8N,EAAQ9N,MAC3B,EAOb,MAFAZ,GAAUjL,MAAM4Z,QAAQD,GACxB1O,EAAU4O,SAAU,GACb,EAKT,MAHE5O,GAAU6N,YAAa,GAGlB,EAYT,QAASgB,GAAsCna,EAAIqW,GASjD,IACE,GALAiD,GACAc,EALEC,EAAe,qEACjBha,KACAia,KACAC,GAAY,EAMRC,EAAOL,EAAsCM,OACjDD,IAASD,EACTC,EAAOA,EAAKC,OAEZ,GAAID,IAASla,GAAqBka,IAAS3gB,EAASsD,OAApD,CAkBA,GAbAid,GACEjZ,IAAK,KACL3C,KAAMkZ,EACNxL,KAAM,KACNE,OAAQ,MAGNoO,EAAKnnB,KACP+mB,EAAK5b,KAAOgc,EAAKnnB,MACPimB,EAAQe,EAAarP,KAAKwP,EAAKpmB,eACzCgmB,EAAK5b,KAAO8a,EAAM,IAGK,mBAAdc,GAAK5b,KACd,IACE4b,EAAK5b,KAAO8a,EAAM3D,MAAM+E,UAAU,EAAGpB,EAAM3D,MAAMrN,QAAQ,MACzD,MAAO3W,IAGP2oB,EAAM,GAAKE,GACbD,GAAY,EAEZD,EAAM,GAAKE,IAAQ,EAGrBna,EAAM/D,KAAK8d,GAGT/D,GAGFhW,EAAM2X,OAAO,EAAG3B,EAGlB,IAAIxU,IACFxO,KAAM2M,EAAG3M,KACTuB,QAASoL,EAAGpL,QACZuM,IAAKqW,IACLnX,MAAOA,EAQT,OANAqY,GACE7W,EACA7B,EAAG2a,WAAa3a,EAAG4a,SACnB5a,EAAGkM,MAAQlM,EAAG6a,WACd7a,EAAGpL,SAAWoL,EAAG8a,aAEZjZ,EAQT,QAASvB,GAAkBN,EAAIqW,GAC7B,GAAIhW,GAAQ,IACZgW,GAAiB,MAATA,EAAgB,GAAKA,CAE7B,KAEE,GADAhW,EAAQ+Y,EAA+BpZ,GAErC,MAAOK,GAET,MAAO1O,GACP,GAAIkI,EAASiC,MACX,KAAMnK,GAIV,IAEE,GADA0O,EAAQ8Z,EAAsCna,EAAIqW,EAAQ,GAExD,MAAOhW,GAET,MAAO1O,GACP,GAAIkI,EAASiC,MACX,KAAMnK,GAGV,OACE0B,KAAM2M,EAAG3M,KACTuB,QAASoL,EAAGpL,QACZuM,IAAKqW,KAOT,MAHAlX,GAAkBoY,oCAAsCA,EACxDpY,EAAkB8Y,+BAAiCA,EAE5C9Y,KAGTpP,EAAOD,QAAU4I,IAEdrH,KAAKf,KAAuB,mBAAXF,QAAyBA,OAAyB,mBAATC,MAAuBA,KAAyB,mBAAXF,QAAyBA,aACxH0E,EAAI,IAAI4b,GAAG,SAASjf,EAAQzB,EAAOD,GAetC,QAASqX,GAAQyS,EAAUC,GACzB,IAAK,GAAI5oB,GAAI,EAAGA,EAAI2oB,EAAStoB,SAAUL,EACrC,GAAI2oB,EAAS3oB,KAAO4oB,EAAQ,MAAO5oB,EAErC,UAGF,QAASqE,GAAUgL,EAAKwZ,EAAUC,EAAQC,GACxC,MAAO3kB,MAAKC,UAAUgL,EAAK2Z,EAAWH,EAAUE,GAAgBD,GAIlE,QAASG,GAAejf,GACtB,GAAIkL,IAEFjH,MAAOjE,EAAMiE,MACbzL,QAASwH,EAAMxH,QACfvB,KAAM+I,EAAM/I,KAGd,KAAK,GAAIjB,KAAKgK,GACRlI,OAAOC,UAAU+S,eAAe1U,KAAK4J,EAAOhK,KAC9CkV,EAAIlV,GAAKgK,EAAMhK;AAInB,MAAOkV,GAGT,QAAS8T,GAAWH,EAAUE,GAC5B,GAAI9a,MACAO,IAWJ,OATqB,OAAjBua,IACFA,EAAgB,SAAShf,EAAKC,GAC5B,MAAIiE,GAAM,KAAOjE,EACR,eAEF,eAAiBwE,EAAKpL,MAAM,EAAG8S,EAAQjI,EAAOjE,IAAQgX,KAAK,KAAO,MAItE,SAASjX,EAAKC,GACnB,GAAIiE,EAAM5N,OAAS,EAAG,CACpB,GAAI6oB,GAAUhT,EAAQjI,EAAO5O,OAC5B6pB,EAAUjb,EAAM2X,OAAOsD,EAAU,GAAKjb,EAAM/D,KAAK7K,OACjD6pB,EAAU1a,EAAKoX,OAAOsD,EAASC,EAAAA,EAAUpf,GAAOyE,EAAKtE,KAAKH,IAEtDmM,EAAQjI,EAAOjE,KAClBA,EAAQ+e,EAAc3oB,KAAKf,KAAM0K,EAAKC,QAGxCiE,GAAM/D,KAAKF,EAGb,OAAmB,OAAZ6e,EACH7e,YAAiB/J,OAAQgpB,EAAejf,GAASA,EACjD6e,EAASzoB,KAAKf,KAAM0K,EAAKC,IA5DjCnL,EAAUC,EAAOD,QAAUwF,EAC3BxF,EAAQuqB,aAAeJ,OA+DjB1J,IAAI,SAAS/e,EAAQzB,EAAOD,GAwBlC,QAASwqB,GAAQC,EAAGlO,GAClB,GAAImO,IAAW,MAAJD,IAAmB,MAAJlO,GACtBoO,GAAOF,GAAK,KAAOlO,GAAK,KAAOmO,GAAO,GAC1C,OAAQC,IAAO,GAAa,MAAND,EAMxB,QAASE,GAAc9H,EAAK+H,GAC1B,MAAQ/H,IAAO+H,EAAQ/H,IAAS,GAAK+H,EAMvC,QAASC,GAAOC,EAAG9pB,EAAGgjB,EAAGwG,EAAG3pB,EAAGH,GAC7B,MAAO6pB,GAAQI,EAAcJ,EAAQA,EAAQvpB,EAAG8pB,GAAIP,EAAQC,EAAG9pB,IAAKG,GAAImjB,GAE1E,QAAS+G,GAAM/pB,EAAGgjB,EAAGjB,EAAGiI,EAAGR,EAAG3pB,EAAGH,GAC/B,MAAOmqB,GAAQ7G,EAAIjB,GAAOiB,EAAIgH,EAAIhqB,EAAGgjB,EAAGwG,EAAG3pB,EAAGH,GAEhD,QAASuqB,GAAMjqB,EAAGgjB,EAAGjB,EAAGiI,EAAGR,EAAG3pB,EAAGH,GAC/B,MAAOmqB,GAAQ7G,EAAIgH,EAAMjI,GAAKiI,EAAIhqB,EAAGgjB,EAAGwG,EAAG3pB,EAAGH,GAEhD,QAASwqB,GAAMlqB,EAAGgjB,EAAGjB,EAAGiI,EAAGR,EAAG3pB,EAAGH,GAC/B,MAAOmqB,GAAO7G,EAAIjB,EAAIiI,EAAGhqB,EAAGgjB,EAAGwG,EAAG3pB,EAAGH,GAEvC,QAASyqB,GAAMnqB,EAAGgjB,EAAGjB,EAAGiI,EAAGR,EAAG3pB,EAAGH,GAC/B,MAAOmqB,GAAO9H,GAAKiB,GAAKgH,GAAIhqB,EAAGgjB,EAAGwG,EAAG3pB,EAAGH,GAM1C,QAAS0qB,GAAQZ,EAAGzI,GAElByI,EAAEzI,GAAO,IAAM,KAASA,EAAM,GAC9ByI,GAAKzI,EAAM,KAAQ,GAAM,GAAK,IAAMA,CAEpC,IAAI7gB,GACAmqB,EACAC,EACAC,EACAC,EACAxqB,EAAI,WACJgjB,aACAjB,cACAiI,EAAI,SAER,KAAK9pB,EAAI,EAAGA,EAAIspB,EAAEjpB,OAAQL,GAAK,GAC7BmqB,EAAOrqB,EACPsqB,EAAOtH,EACPuH,EAAOxI,EACPyI,EAAOR,EAEPhqB,EAAI+pB,EAAM/pB,EAAGgjB,EAAGjB,EAAGiI,EAAGR,EAAEtpB,GAAI,cAC5B8pB,EAAID,EAAMC,EAAGhqB,EAAGgjB,EAAGjB,EAAGyH,EAAEtpB,EAAI,GAAI,eAChC6hB,EAAIgI,EAAMhI,EAAGiI,EAAGhqB,EAAGgjB,EAAGwG,EAAEtpB,EAAI,GAAI,GAAI,WACpC8iB,EAAI+G,EAAM/G,EAAGjB,EAAGiI,EAAGhqB,EAAGwpB,EAAEtpB,EAAI,GAAI,gBAChCF,EAAI+pB,EAAM/pB,EAAGgjB,EAAGjB,EAAGiI,EAAGR,EAAEtpB,EAAI,GAAI,cAChC8pB,EAAID,EAAMC,EAAGhqB,EAAGgjB,EAAGjB,EAAGyH,EAAEtpB,EAAI,GAAI,GAAI,YACpC6hB,EAAIgI,EAAMhI,EAAGiI,EAAGhqB,EAAGgjB,EAAGwG,EAAEtpB,EAAI,GAAI,gBAChC8iB,EAAI+G,EAAM/G,EAAGjB,EAAGiI,EAAGhqB,EAAGwpB,EAAEtpB,EAAI,GAAI,cAChCF,EAAI+pB,EAAM/pB,EAAGgjB,EAAGjB,EAAGiI,EAAGR,EAAEtpB,EAAI,GAAI,EAAG,YACnC8pB,EAAID,EAAMC,EAAGhqB,EAAGgjB,EAAGjB,EAAGyH,EAAEtpB,EAAI,GAAI,gBAChC6hB,EAAIgI,EAAMhI,EAAGiI,EAAGhqB,EAAGgjB,EAAGwG,EAAEtpB,EAAI,IAAK,WACjC8iB,EAAI+G,EAAM/G,EAAGjB,EAAGiI,EAAGhqB,EAAGwpB,EAAEtpB,EAAI,IAAK,gBACjCF,EAAI+pB,EAAM/pB,EAAGgjB,EAAGjB,EAAGiI,EAAGR,EAAEtpB,EAAI,IAAK,EAAG,YACpC8pB,EAAID,EAAMC,EAAGhqB,EAAGgjB,EAAGjB,EAAGyH,EAAEtpB,EAAI,IAAK,cACjC6hB,EAAIgI,EAAMhI,EAAGiI,EAAGhqB,EAAGgjB,EAAGwG,EAAEtpB,EAAI,IAAK,gBACjC8iB,EAAI+G,EAAM/G,EAAGjB,EAAGiI,EAAGhqB,EAAGwpB,EAAEtpB,EAAI,IAAK,GAAI,YAErCF,EAAIiqB,EAAMjqB,EAAGgjB,EAAGjB,EAAGiI,EAAGR,EAAEtpB,EAAI,GAAI,cAChC8pB,EAAIC,EAAMD,EAAGhqB,EAAGgjB,EAAGjB,EAAGyH,EAAEtpB,EAAI,GAAI,eAChC6hB,EAAIkI,EAAMlI,EAAGiI,EAAGhqB,EAAGgjB,EAAGwG,EAAEtpB,EAAI,IAAK,GAAI,WACrC8iB,EAAIiH,EAAMjH,EAAGjB,EAAGiI,EAAGhqB,EAAGwpB,EAAEtpB,GAAI,eAC5BF,EAAIiqB,EAAMjqB,EAAGgjB,EAAGjB,EAAGiI,EAAGR,EAAEtpB,EAAI,GAAI,cAChC8pB,EAAIC,EAAMD,EAAGhqB,EAAGgjB,EAAGjB,EAAGyH,EAAEtpB,EAAI,IAAK,EAAG,UACpC6hB,EAAIkI,EAAMlI,EAAGiI,EAAGhqB,EAAGgjB,EAAGwG,EAAEtpB,EAAI,IAAK,eACjC8iB,EAAIiH,EAAMjH,EAAGjB,EAAGiI,EAAGhqB,EAAGwpB,EAAEtpB,EAAI,GAAI,eAChCF,EAAIiqB,EAAMjqB,EAAGgjB,EAAGjB,EAAGiI,EAAGR,EAAEtpB,EAAI,GAAI,EAAG,WACnC8pB,EAAIC,EAAMD,EAAGhqB,EAAGgjB,EAAGjB,EAAGyH,EAAEtpB,EAAI,IAAK,eACjC6hB,EAAIkI,EAAMlI,EAAGiI,EAAGhqB,EAAGgjB,EAAGwG,EAAEtpB,EAAI,GAAI,eAChC8iB,EAAIiH,EAAMjH,EAAGjB,EAAGiI,EAAGhqB,EAAGwpB,EAAEtpB,EAAI,GAAI,GAAI,YACpCF,EAAIiqB,EAAMjqB,EAAGgjB,EAAGjB,EAAGiI,EAAGR,EAAEtpB,EAAI,IAAK,eACjC8pB,EAAIC,EAAMD,EAAGhqB,EAAGgjB,EAAGjB,EAAGyH,EAAEtpB,EAAI,GAAI,aAChC6hB,EAAIkI,EAAMlI,EAAGiI,EAAGhqB,EAAGgjB,EAAGwG,EAAEtpB,EAAI,GAAI,GAAI,YACpC8iB,EAAIiH,EAAMjH,EAAGjB,EAAGiI,EAAGhqB,EAAGwpB,EAAEtpB,EAAI,IAAK,gBAEjCF,EAAIkqB,EAAMlqB,EAAGgjB,EAAGjB,EAAGiI,EAAGR,EAAEtpB,EAAI,GAAI,WAChC8pB,EAAIE,EAAMF,EAAGhqB,EAAGgjB,EAAGjB,EAAGyH,EAAEtpB,EAAI,GAAI,gBAChC6hB,EAAImI,EAAMnI,EAAGiI,EAAGhqB,EAAGgjB,EAAGwG,EAAEtpB,EAAI,IAAK,GAAI,YACrC8iB,EAAIkH,EAAMlH,EAAGjB,EAAGiI,EAAGhqB,EAAGwpB,EAAEtpB,EAAI,IAAK,cACjCF,EAAIkqB,EAAMlqB,EAAGgjB,EAAGjB,EAAGiI,EAAGR,EAAEtpB,EAAI,GAAI,eAChC8pB,EAAIE,EAAMF,EAAGhqB,EAAGgjB,EAAGjB,EAAGyH,EAAEtpB,EAAI,GAAI,GAAI,YACpC6hB,EAAImI,EAAMnI,EAAGiI,EAAGhqB,EAAGgjB,EAAGwG,EAAEtpB,EAAI,GAAI,eAChC8iB,EAAIkH,EAAMlH,EAAGjB,EAAGiI,EAAGhqB,EAAGwpB,EAAEtpB,EAAI,IAAK,gBACjCF,EAAIkqB,EAAMlqB,EAAGgjB,EAAGjB,EAAGiI,EAAGR,EAAEtpB,EAAI,IAAK,EAAG,WACpC8pB,EAAIE,EAAMF,EAAGhqB,EAAGgjB,EAAGjB,EAAGyH,EAAEtpB,GAAI,eAC5B6hB,EAAImI,EAAMnI,EAAGiI,EAAGhqB,EAAGgjB,EAAGwG,EAAEtpB,EAAI,GAAI,eAChC8iB,EAAIkH,EAAMlH,EAAGjB,EAAGiI,EAAGhqB,EAAGwpB,EAAEtpB,EAAI,GAAI,GAAI,UACpCF,EAAIkqB,EAAMlqB,EAAGgjB,EAAGjB,EAAGiI,EAAGR,EAAEtpB,EAAI,GAAI,cAChC8pB,EAAIE,EAAMF,EAAGhqB,EAAGgjB,EAAGjB,EAAGyH,EAAEtpB,EAAI,IAAK,eACjC6hB,EAAImI,EAAMnI,EAAGiI,EAAGhqB,EAAGgjB,EAAGwG,EAAEtpB,EAAI,IAAK,GAAI,WACrC8iB,EAAIkH,EAAMlH,EAAGjB,EAAGiI,EAAGhqB,EAAGwpB,EAAEtpB,EAAI,GAAI,eAEhCF,EAAImqB,EAAMnqB,EAAGgjB,EAAGjB,EAAGiI,EAAGR,EAAEtpB,GAAI,cAC5B8pB,EAAIG,EAAMH,EAAGhqB,EAAGgjB,EAAGjB,EAAGyH,EAAEtpB,EAAI,GAAI,GAAI,YACpC6hB,EAAIoI,EAAMpI,EAAGiI,EAAGhqB,EAAGgjB,EAAGwG,EAAEtpB,EAAI,IAAK,gBACjC8iB,EAAImH,EAAMnH,EAAGjB,EAAGiI,EAAGhqB,EAAGwpB,EAAEtpB,EAAI,GAAI,cAChCF,EAAImqB,EAAMnqB,EAAGgjB,EAAGjB,EAAGiI,EAAGR,EAAEtpB,EAAI,IAAK,EAAG,YACpC8pB,EAAIG,EAAMH,EAAGhqB,EAAGgjB,EAAGjB,EAAGyH,EAAEtpB,EAAI,GAAI,gBAChC6hB,EAAIoI,EAAMpI,EAAGiI,EAAGhqB,EAAGgjB,EAAGwG,EAAEtpB,EAAI,IAAK,aACjC8iB,EAAImH,EAAMnH,EAAGjB,EAAGiI,EAAGhqB,EAAGwpB,EAAEtpB,EAAI,GAAI,gBAChCF,EAAImqB,EAAMnqB,EAAGgjB,EAAGjB,EAAGiI,EAAGR,EAAEtpB,EAAI,GAAI,EAAG,YACnC8pB,EAAIG,EAAMH,EAAGhqB,EAAGgjB,EAAGjB,EAAGyH,EAAEtpB,EAAI,IAAK,cACjC6hB,EAAIoI,EAAMpI,EAAGiI,EAAGhqB,EAAGgjB,EAAGwG,EAAEtpB,EAAI,GAAI,gBAChC8iB,EAAImH,EAAMnH,EAAGjB,EAAGiI,EAAGhqB,EAAGwpB,EAAEtpB,EAAI,IAAK,GAAI,YACrCF,EAAImqB,EAAMnqB,EAAGgjB,EAAGjB,EAAGiI,EAAGR,EAAEtpB,EAAI,GAAI,cAChC8pB,EAAIG,EAAMH,EAAGhqB,EAAGgjB,EAAGjB,EAAGyH,EAAEtpB,EAAI,IAAK,gBACjC6hB,EAAIoI,EAAMpI,EAAGiI,EAAGhqB,EAAGgjB,EAAGwG,EAAEtpB,EAAI,GAAI,GAAI,WACpC8iB,EAAImH,EAAMnH,EAAGjB,EAAGiI,EAAGhqB,EAAGwpB,EAAEtpB,EAAI,GAAI,eAEhCF,EAAIupB,EAAQvpB,EAAGqqB,GACfrH,EAAIuG,EAAQvG,EAAGsH,GACfvI,EAAIwH,EAAQxH,EAAGwI,GACfP,EAAIT,EAAQS,EAAGQ,EAEjB,QAAQxqB,EAAGgjB,EAAGjB,EAAGiI,GAMnB,QAASS,GAAUhH,GACjB,GAAIvjB,GACAyjB,EAAS,GACT+G,EAA0B,GAAfjH,EAAMljB,MACrB,KAAKL,EAAI,EAAGA,EAAIwqB,EAAUxqB,GAAK,EAC7ByjB,GAAUC,OAAO+G,aAAclH,EAAMvjB,GAAK,KAAQA,EAAI,GAAO,IAE/D,OAAOyjB,GAOT,QAASiH,GAAUnH,GACjB,GAAIvjB,GACAyjB,IAEJ,KADAA,GAAQF,EAAMljB,QAAU,GAAK,GAAKgM,OAC7BrM,EAAI,EAAGA,EAAIyjB,EAAOpjB,OAAQL,GAAK,EAClCyjB,EAAOzjB,GAAK,CAEd,IAAI2qB,GAAyB,EAAfpH,EAAMljB,MACpB,KAAKL,EAAI,EAAGA,EAAI2qB,EAAS3qB,GAAK,EAC5ByjB,EAAOzjB,GAAK,KAAiC,IAA1BujB,EAAMqH,WAAW5qB,EAAI,KAAeA,EAAI,EAE7D,OAAOyjB,GAMT,QAASoH,GAAQlrB,GACf,MAAO4qB,GAAUL,EAAQQ,EAAU/qB,GAAe,EAAXA,EAAEU,SAM3C,QAASyqB,GAAY/gB,EAAKvG,GACxB,GAAIxD,GAIAgf,EAHA+L,EAAOL,EAAU3gB,GACjBihB,KACAC,IAMJ,KAJAD,EAAK,IAAMC,EAAK,IAAM5e,OAClB0e,EAAK1qB,OAAS,KAChB0qB,EAAOb,EAAQa,EAAmB,EAAbhhB,EAAI1J,SAEtBL,EAAI,EAAGA,EAAI,GAAIA,GAAK,EACvBgrB,EAAKhrB,GAAe,UAAV+qB,EAAK/qB,GACfirB,EAAKjrB,GAAe,WAAV+qB,EAAK/qB,EAGjB,OADAgf,GAAOkL,EAAQc,EAAKxS,OAAOkS,EAAUlnB,IAAQ,IAAoB,EAAdA,EAAKnD,QACjDkqB,EAAUL,EAAQe,EAAKzS,OAAOwG,GAAO,MAM9C,QAASkM,GAAS3H,GAChB,GAEI+F,GACAtpB,EAHAmrB,EAAS,mBACT1H,EAAS,EAGb,KAAKzjB,EAAI,EAAGA,EAAIujB,EAAMljB,OAAQL,GAAK,EACjCspB,EAAI/F,EAAMqH,WAAW5qB,GACrByjB,GAAU0H,EAAOC,OAAQ9B,IAAM,EAAK,IAAQ6B,EAAOC,OAAW,GAAJ9B,EAE5D,OAAO7F,GAMT,QAAS4H,GAAa9H,GACpB,MAAO+H,UAAS/Z,mBAAmBgS,IAMrC,QAASgI,GAAO5rB,GACd,MAAOkrB,GAAQQ,EAAa1rB,IAE9B,QAAS6rB,GAAO7rB,GACd,MAAOurB,GAASK,EAAO5rB,IAEzB,QAAS8rB,GAAW1G,EAAG+E,GACrB,MAAOgB,GAAYO,EAAatG,GAAIsG,EAAavB,IAEnD,QAAS4B,GAAW3G,EAAG+E,GACrB,MAAOoB,GAASO,EAAW1G,EAAG+E,IAGhC,QAASpiB,GAAIikB,EAAQ5hB,EAAK6hB,GACxB,MAAK7hB,GAMA6hB,EAGEH,EAAW1hB,EAAK4hB,GAFdD,EAAW3hB,EAAK4hB,GANlBC,EAGEL,EAAOI,GAFLH,EAAOG,GAUpB7sB,EAAOD,QAAU6I,YAEN,EAAE,EAAE,IAAI","file":"raven.min.js"} \ No newline at end of file +{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","requirePlugin","wrap","deep","addPlugin","6","2","formatComponentName","vm","$root","name","_isVue","$options","_componentTag","__file","vuePlugin","Vue","config","_oldOnError","errorHandler","error","info","metaData","Object","prototype","toString","componentName","propsData","lifecycleHook","captureException","extra","3","RavenConfigError","message","constructor","4","utils","wrapMethod","console","level","callback","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","msg","safeJoin","data","logger","Function","apply","7","5","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","sanitizeKeys","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isErrorEvent","isDOMError","isDOMException","isError","isObject","isPlainObject","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","sanitize","wrapConsoleMethod","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","dsn","options","_logDebug","globalOptions","key","value","setDSN","push","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","substr","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","context","func","undefined","_before","wrapped","_ignoreNextOnError","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","T","event","reason","unhandledPromiseRejection","B","_promiseRejectionHandler","bind","addEventListener","P","removeEventListener","ex","trimHeadFrames","captureMessage","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","U","currentOptions","exKeys","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","setDataCallback","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","L","setTimeout","$","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","_","evtName","_keypressTimeout","target","category","ba","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","ca","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","C","_originalFunctionToString","Q","D","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","type","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","E","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","R","builtin","S","F","installer","concat","G","str","m","exec","allowSecretKey","J","port","A","V","stackInfo","_triggerEvent","_processException","lineno","X","frame","_normalizeFrame","in_app","ga","stackInfoUrl","normalized","filename","line","colno","column","function","fa","prefixedMessage","exception","values","culprit","ha","request","Referer","breadcrumbs","_trimBreadcrumbs","ia","urlProp","urlProps","ja","httpData","userAgent","User-Agent","referrer","y","_backoffDuration","_backoffStart","ma","na","current","last","oa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Y","baseData","project","platform","_getHttpData","serverName","server_name","_sanitizeData","forEach","random","_sendProcessedPayload","pa","ra","qa","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","sa","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","onerror","open","setRequestHeader","send","ta","hash","evaluated","z","Z","setUser","setReleaseContext","10","8","9","RavenConstructor","_Raven","noConflict","Client","what","supportsErrorEvent","ErrorEvent","supportsDOMError","DOMError","supportsDOMException","DOMException","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","wrappedCallback","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","sanitizeMask","safeInput","o_O","getLocationHref","getLocationOrigin","origin","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","responseText","sourceMaps","sourceMapAddress","charAt","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","string","raw"],"mappings":";CAYA,SAAUA,GAAG,GAAoB,gBAAVC,UAAoC,mBAATC,QAAsBA,OAAOD,QAAQD,QAAS,IAAmB,kBAATG,SAAqBA,OAAOC,IAAKD,UAAUH,OAAO,CAAC,GAAIK,EAAkCA,GAAb,mBAATC,QAAwBA,OAA+B,mBAATC,QAAwBA,OAA6B,mBAAPC,MAAsBA,KAAYC,KAAKJ,EAAEK,MAAQV,MAAO,WAAW,GAAIG,EAAsB,OAAO,SAAUQ,GAAEC,EAAEC,EAAEC,GAAG,QAASC,GAAEC,EAAEC,GAAG,IAAIJ,EAAEG,GAAG,CAAC,IAAIJ,EAAEI,GAAG,CAAC,GAAIE,GAAkB,kBAATC,UAAqBA,OAAQ,KAAIF,GAAGC,EAAE,MAAOA,GAAEF,GAAE,EAAI,IAAGI,EAAE,MAAOA,GAAEJ,GAAE,EAAI,IAAIhB,GAAE,GAAIqB,OAAM,uBAAuBL,EAAE,IAAK,MAAMhB,GAAEsB,KAAK,mBAAmBtB,EAAE,GAAIuB,GAAEV,EAAEG,IAAIf,WAAYW,GAAEI,GAAG,GAAGQ,KAAKD,EAAEtB,QAAQ,SAASU,GAAG,GAAIE,GAAED,EAAEI,GAAG,GAAGL,EAAG,OAAOI,GAAEF,EAAEA,EAAEF,IAAIY,EAAEA,EAAEtB,QAAQU,EAAEC,EAAEC,EAAEC,GAAG,MAAOD,GAAEG,GAAGf,QAAkD,IAAI,GAA1CmB,GAAkB,kBAATD,UAAqBA,QAAgBH,EAAE,EAAEA,EAAEF,EAAEW,OAAOT,IAAID,EAAED,EAAEE,GAAI,OAAOD,KAAKW,GAAG,SAASC,EAAQzB,EAAOD,GAOp0B,QAAS2B,GAAclB,GACC,kBAAXP,IAAyBA,EAAOC,MACzCE,OAAOH,OAASO,EAAMmB,MAAMC,MAAM,GAAQ3B,GAC1CG,OAAOa,QAAUT,EAAMmB,MAAMC,MAAM,GAAQH,IAI/CzB,EAAOD,QAAU2B,EAEjBD,EAAQ,GAAGI,UAAU7B,EAAOD,WACzB+B,EAAI,IAAIC,GAAG,SAASN,EAAQzB,EAAOD,GAMtC,QAASiC,GAAoBC,GAC3B,GAAIA,EAAGC,QAAUD,EACf,MAAO,eAET,IAAIE,GAAOF,EAAGG,OAASH,EAAGI,SAASF,MAAQF,EAAGI,SAASC,cAAgBL,EAAGE,IAC1E,QACGA,EAAO,cAAgBA,EAAO,IAAM,wBACpCF,EAAGG,QAAUH,EAAGI,SAASE,OAAS,OAASN,EAAGI,SAASE,OAAS,IAIrE,QAASC,GAAUhC,EAAOiC,GAIxB,GAHAA,EAAMA,GAAOrC,OAAOqC,IAGfA,GAAQA,EAAIC,OAAjB,CAEA,GAAIC,GAAcF,EAAIC,OAAOE,YAC7BH,GAAIC,OAAOE,aAAe,SAAyBC,EAAOZ,EAAIa,GAC5D,GAAIC,KAGuC,qBAAvCC,OAAOC,UAAUC,SAAS5B,KAAKW,KACjCc,EAASI,cAAgBnB,EAAoBC,GAC7Cc,EAASK,UAAYnB,EAAGI,SAASe,WAGf,mBAATN,KACTC,EAASM,cAAgBP,GAG3BtC,EAAM8C,iBAAiBT,GACrBU,MAAOR,IAGkB,kBAAhBJ,IACTA,EAAYrB,KAAKf,KAAMsC,EAAOZ,EAAIa,KAKxC9C,EAAOD,QAAUyC,EAEjBf,EAAQ,GAAGI,UAAU7B,EAAOD,WACzB+B,EAAI,IAAI0B,GAAG,SAAS/B,EAAQzB,EAAOD,GACtC,QAAS0D,GAAiBC,GACxBnD,KAAK4B,KAAO,mBACZ5B,KAAKmD,QAAUA,EAEjBD,EAAiBR,UAAY,GAAI9B,OACjCsC,EAAiBR,UAAUU,YAAcF,EAEzCzD,EAAOD,QAAU0D,OAEXG,GAAG,SAASnC,EAAQzB,EAAOD,GACjC,GAAI8D,GAAQpC,EAAQ,GAEhBqC,EAAa,SAASC,EAASC,EAAOC,GACxC,GAAIC,GAAuBH,EAAQC,GAC/BG,EAAkBJ,CAEtB,IAAMC,IAASD,GAAf,CAIA,GAAIK,GAAwB,SAAVJ,EAAmB,UAAYA,CAEjDD,GAAQC,GAAS,WACf,GAAIK,MAAUC,MAAMhD,KAAKiD,WAErBC,EAAMX,EAAMY,SAASJ,EAAM,KAC3BK,GAAQV,MAAOI,EAAaO,OAAQ,UAAWpB,OAAQgB,UAAWF,GAExD,YAAVL,EACEK,EAAK,MAAO,IAEdG,EACE,sBAAwBX,EAAMY,SAASJ,EAAKC,MAAM,GAAI,MAAQ,kBAChEI,EAAKnB,MAAMgB,UAAYF,EAAKC,MAAM,GAClCL,GAAYA,EAASO,EAAKE,IAG5BT,GAAYA,EAASO,EAAKE,GAIxBR,GAGFU,SAAS3B,UAAU4B,MAAMvD,KAAK4C,EAAsBC,EAAiBE,KAK3ErE,GAAOD,SACL+D,WAAYA,KAGXgB,EAAI,IAAIC,GAAG,SAAStD,EAAQzB,EAAOD,IACtC,SAAWM,GA4CX,QAAS2E,KACP,OAAQ,GAAIC,MAWd,QAASC,GAAqBC,EAAUlB,GACtC,MAAOmB,GAAWnB,GACd,SAASS,GACP,MAAOT,GAASS,EAAMS,IAExBlB,EAMN,QAASzD,KACPD,KAAK8E,IAA8B,gBAATC,QAAqBA,KAAKC,WAEpDhF,KAAKiF,GAAgBC,EAAYC,GACjCnF,KAAKoF,GAAiBF,EAAYG,GAClCrF,KAAKsF,EAAyB,KAC9BtF,KAAKuF,EAAY,KACjBvF,KAAKwF,EAAe,KACpBxF,KAAKyF,EAAgB,KACrBzF,KAAK0F,EAAa,KAClB1F,KAAK2F,EAAiB,KACtB3F,KAAK4F,KACL5F,KAAK6F,GAEHC,QAASC,EAAQC,gBAAkBD,EAAQC,eAAeC,GAC1D7B,OAAQ,aACR8B,gBACAC,cACAC,iBACAC,gBACAC,QAAS,KACTC,qBAAqB,EACrBC,4BAA4B,EAC5BC,iBAAkB,EAElBC,aAAc,IACdC,gBAAiB,GACjBC,iBAAiB,EACjBC,YAAY,EACZC,WAAY,EACZC,iBAEF/G,KAAKgH,GACHC,OAAQ,OACRC,WAAW,EAKXC,eAAgBC,IAA2B,SAAW,IAExDpH,KAAKqH,EAAiB,EACtBrH,KAAKsH,GAAoB,EACzBtH,KAAKuH,EAAgC3G,MAAM+F,gBAG3C3G,KAAKwH,EAAmBzB,EAAQvC,YAChCxD,KAAKyH,KACLzH,KAAK0H,KACL1H,KAAK2H,EAAalD,IAClBzE,KAAK4H,KACL5H,KAAK6H,KACL7H,KAAK8H,EAAqB,KAE1B9H,KAAK+H,EAAYhC,EAAQiC,SACzBhI,KAAKiI,EAAYjI,KAAK+H,GAAa/H,KAAK+H,EAAUG,KAClDlI,KAAKmI,GAGL,KAAK,GAAIlB,KAAUjH,MAAKwH,EACtBxH,KAAKyH,EAAwBR,GAAUjH,KAAKwH,EAAiBP,GA5HjE,GAAImB,GAAWlH,EAAQ,GACnB8D,EAAY9D,EAAQ,GACpBmH,EAAMnH,EAAQ,IACdgC,EAAmBhC,EAAQ,GAE3BoC,EAAQpC,EAAQ,GAChBoH,EAAehF,EAAMgF,aACrBC,EAAajF,EAAMiF,WACnBC,EAAiBlF,EAAMkF,eACvBC,EAAUnF,EAAMmF,QAChBC,EAAWpF,EAAMoF,SACjBC,EAAgBrF,EAAMqF,cACtBzD,EAAc5B,EAAM4B,YACpBL,EAAavB,EAAMuB,WACnB+D,EAAWtF,EAAMsF,SACjBC,EAAUvF,EAAMuF,QAChBC,EAAgBxF,EAAMwF,cACtBC,EAAOzF,EAAMyF,KACbC,EAAc1F,EAAM0F,YACpBC,EAAW3F,EAAM2F,SACjBC,EAAe5F,EAAM4F,aACrBC,EAAS7F,EAAM6F,OACfC,EAAa9F,EAAM8F,WACnBC,EAAY/F,EAAM+F,UAClBC,EAAQhG,EAAMgG,MACdC,EAAmBjG,EAAMiG,iBACzBC,EAAkBlG,EAAMkG,gBACxBC,EAAmBnG,EAAMmG,iBACzBC,EAAWpG,EAAMoG,SACjBC,EAAOrG,EAAMqG,KACbC,EAAgBtG,EAAMsG,cACtBxC,EAAyB9D,EAAM8D,uBAC/ByC,EAA0BvG,EAAMuG,wBAChCC,EAAqBxG,EAAMwG,mBAC3BC,EAAWzG,EAAMyG,SAEjBC,EAAoB9I,EAAQ,GAAGqC,WAE/B0G,EAAU,2CAA2CC,MAAM,KAC7DC,EAAa,gEAOXpE,EACgB,mBAAXlG,QACHA,OACkB,mBAAXC,GAAyBA,EAAyB,mBAATC,MAAuBA,QACzEoF,EAAYY,EAAQqE,SACpB/E,EAAaU,EAAQsE,SAmFzBpK,GAAMyC,WAKJ4H,QAAS,SAETC,OAAO,EAEPnC,SAAUA,EASVjG,OAAQ,SAASqI,EAAKC,GACpB,GAAI1K,GAAOC,IAEX,IAAID,EAAK0F,EAEP,MADAzF,MAAK0K,EAAU,QAAS,4CACjB3K,CAET,KAAKyK,EAAK,MAAOzK,EAEjB,IAAI4K,GAAgB5K,EAAK8F,CAGrB4E,IACF1B,EAAK0B,EAAS,SAASG,EAAKC,GAEd,SAARD,GAA0B,UAARA,GAA2B,SAARA,EACvC7K,EAAK6F,EAAegF,GAAOC,EAE3BF,EAAcC,GAAOC,IAK3B9K,EAAK+K,OAAON,GAIZG,EAAczE,aAAa6E,KAAK,qBAChCJ,EAAczE,aAAa6E,KAAK,iDAGhCJ,EAAczE,aAAekD,EAAWuB,EAAczE,cACtDyE,EAAcxE,aAAawE,EAAcxE,WAAWnF,QAChDoI,EAAWuB,EAAcxE,YAE7BwE,EAAcvE,gBAAgBuE,EAAcvE,cAAcpF,QACtDoI,EAAWuB,EAAcvE,eAE7BuE,EAActE,aAAe+C,EAAWuB,EAActE,cACtDsE,EAAcK,eAAiBC,KAAKC,IAClC,EACAD,KAAKE,IAAIR,EAAcK,gBAAkB,IAAK,KAGhD,IAAII,IACFC,KAAK,EACL7H,SAAS,EACT8H,KAAK,EACLtD,UAAU,EACVuD,QAAQ,GAGN3E,EAAkB+D,EAAc/D,eACM,wBAAnCjE,SAAS5B,KAAK6F,GACnBA,EAAkBoC,EAAYoC,EAAwBxE,GAC7CA,KAAoB,IAC7BA,EAAkBwE,GAEpBT,EAAc/D,gBAAkBA,CAEhC,IAAI4E,IACFC,UAAU,GAGR5E,EAAa8D,EAAc9D,UAW/B,OAVqC,uBAA9BlE,SAAS5B,KAAK8F,GACnBA,EAAamC,EAAYwC,EAAoB3E,GACpCA,KAAe,IACxBA,EAAa2E,GAEfb,EAAc9D,WAAaA,EAE3BuB,EAAS7B,sBAAwBoE,EAAcpE,oBAGxCxG,GAWT2L,QAAS,WACP,GAAI3L,GAAOC,IAyBX,OAxBID,GAAK4L,YAAc5L,EAAKuH,IAC1Bc,EAASwD,OAAOC,UAAU,WACxB9L,EAAK+L,EAAwBxH,MAAMvE,EAAMiE,aAGvCjE,EAAK8F,EAAeW,4BACtBzG,EAAKgM,IAGPhM,EAAKiM,IAEDjM,EAAK8F,EAAegB,YAAc9G,EAAK8F,EAAegB,WAAW4E,UACnE1L,EAAKkM,IAGHlM,EAAK8F,EAAee,iBAAiB7G,EAAKmM,IAG9CnM,EAAKoM,IAELpM,EAAKuH,GAAoB,GAG3B1G,MAAM+F,gBAAkB5G,EAAK8F,EAAec,gBACrC3G,MAQT8K,OAAQ,SAASN,GACf,GAAIzK,GAAOC,KACToM,EAAMrM,EAAKsM,EAAU7B,GACrB8B,EAAYF,EAAIG,KAAKC,YAAY,KACjCD,EAAOH,EAAIG,KAAKE,OAAO,EAAGH,EAE5BvM,GAAK2M,EAAOlC,EACZzK,EAAK2F,EAAa0G,EAAIO,KACtB5M,EAAK6M,EAAgBR,EAAIS,MAAQT,EAAIS,KAAKJ,OAAO,GACjD1M,EAAK4F,EAAiByG,EAAIG,KAAKE,OAAOH,EAAY,GAElDvM,EAAK0F,EAAgB1F,EAAK+M,EAAiBV,GAE3CrM,EAAKgN,EACHhN,EAAK0F,EAAgB,IAAM8G,EAAO,OAASxM,EAAK4F,EAAiB,UAInE3F,KAAKmI,KAWP6E,QAAS,SAASvC,EAASwC,EAAMnJ,GAO/B,MANIe,GAAW4F,KACb3G,EAAOmJ,MACPA,EAAOxC,EACPA,EAAUyC,QAGLlN,KAAKoB,KAAKqJ,EAASwC,GAAM3I,MAAMtE,KAAM8D,IAW9C1C,KAAM,SAASqJ,EAASwC,EAAME,GAqC5B,QAASC,KACP,GAAItJ,MACFnD,EAAIqD,UAAUhD,OACdK,GAAQoJ,GAAYA,GAAWA,EAAQpJ,QAAS,CAQlD,KANI8L,GAAWtI,EAAWsI,IACxBA,EAAQ7I,MAAMtE,KAAMgE,WAKfrD,KAAKmD,EAAKnD,GAAKU,EAAOtB,EAAKqB,KAAKqJ,EAASzG,UAAUrD,IAAMqD,UAAUrD,EAE1E,KAKE,MAAOsM,GAAK3I,MAAMtE,KAAM8D,GACxB,MAAO5D,GAGP,KAFAH,GAAKsN,IACLtN,EAAKgD,iBAAiB7C,EAAGuK,GACnBvK,GA1DV,GAAIH,GAAOC,IAGX,IAAIkF,EAAY+H,KAAUpI,EAAW4F,GACnC,MAAOA,EAWT,IAPI5F,EAAW4F,KACbwC,EAAOxC,EACPA,EAAUyC,SAKPrI,EAAWoI,GACd,MAAOA,EAIT,KACE,GAAIA,EAAKK,EACP,MAAOL,EAIT,IAAIA,EAAKM,EACP,MAAON,GAAKM,EAEd,MAAOrN,GAIP,MAAO+M,GA8BT,IAAK,GAAIO,KAAYP,GACf9D,EAAO8D,EAAMO,KACfJ,EAAQI,GAAYP,EAAKO,GAW7B,OARAJ,GAAQ1K,UAAYuK,EAAKvK,UAEzBuK,EAAKM,EAAoBH,EAGzBA,EAAQE,GAAY,EACpBF,EAAQK,EAAWR,EAEZG,GAQTM,UAAW,WAWT,MAVAtF,GAASwD,OAAO8B,YAEhB1N,KAAK2N,IACL3N,KAAK4N,IACL5N,KAAK6N,IACL7N,KAAK8N,IAELlN,MAAM+F,gBAAkB3G,KAAKuH,EAC7BvH,KAAKsH,GAAoB,EAElBtH,MAWT+N,EAA0B,SAASC,GACjChO,KAAK0K,EAAU,QAAS,4CAA6CsD,GACrEhO,KAAK+C,iBAAiBiL,EAAMC,QAC1BjL,OACEkL,2BAA2B,MAUjCC,EAAgC,WAI9B,MAHAnO,MAAKoO,EAA2BpO,KAAKoO,EAAyBC,KAAKrO,MACnE+F,EAAQuI,kBACNvI,EAAQuI,iBAAiB,qBAAsBtO,KAAKoO,GAC/CpO,MAQTuO,EAAgC,WAG9B,MAFAxI,GAAQyI,qBACNzI,EAAQyI,oBAAoB,qBAAsBxO,KAAKoO,GAClDpO,MAUT+C,iBAAkB,SAAS0L,EAAIhE,GAG7B,GAFAA,EAAUzB,GAAa0F,eAAgB,GAAIjE,EAAUA,MAEjDnC,EAAamG,IAAOA,EAAGnM,MAEzBmM,EAAKA,EAAGnM,UACH,CAAA,GAAIiG,EAAWkG,IAAOjG,EAAeiG,GAAK,CAK/C,GAAI7M,GAAO6M,EAAG7M,OAAS2G,EAAWkG,GAAM,WAAa,gBACjDtL,EAAUsL,EAAGtL,QAAUvB,EAAO,KAAO6M,EAAGtL,QAAUvB,CAEtD,OAAO5B,MAAK2O,eACVxL,EACA6F,EAAYyB,GAGVmE,YAAY,EACZF,eAAgBjE,EAAQiE,eAAiB,KAGxC,GAAIjG,EAAQgG,GAEjBA,EAAKA,MACA,CAAA,IAAI9F,EAAc8F,GAavB,MAAOzO,MAAK2O,eACVF,EACAzF,EAAYyB,GACVmE,YAAY,EACZF,eAAgBjE,EAAQiE,eAAiB,IAb7CjE,GAAUzK,KAAK6O,EAA2CpE,EAASgE,GACnEA,EAAK,GAAI7N,OAAM6J,EAAQtH,UAkBzBnD,KAAKsF,EAAyBmJ,CAO9B,KACE,GAAIK,GAAQ1G,EAAS2G,kBAAkBN,EACvCzO,MAAKgP,EAAiBF,EAAOrE,GAC7B,MAAOwE,GACP,GAAIR,IAAOQ,EACT,KAAMA,GAIV,MAAOjP,OAGTkP,EAA4C,SAASC,EAAgBV,GACnE,GAAIW,GAAS3M,OAAO4M,KAAKZ,GAAIa,OACzB7E,EAAUzB,EAAYmG,GACxBhM,QACE,2CAA6C0G,EAAwBuF,GACvEG,aAAclH,EAAI+G,IAClBpM,MAAOmM,EAAenM,WAIxB,OAFAyH,GAAQzH,MAAMwM,EAAiB1F,EAAmB2E,GAE3ChE,GAUTkE,eAAgB,SAAS1K,EAAKwG,GAI5B,IACIzK,KAAK6F,EAAeK,aAAauJ,OACnCzP,KAAK6F,EAAeK,aAAauJ,KAAKxL,GAFxC,CAOAwG,EAAUA,MACVxG,GAAY,EAEZ,IAOIwK,GAPAtK,EAAO6E,GAEP7F,QAASc,GAEXwG,EAQF,KACE,KAAM,IAAI7J,OAAMqD,GAChB,MAAOgL,GACPR,EAAKQ,EAIPR,EAAG7M,KAAO,IACV,IAAIkN,GAAQ1G,EAAS2G,kBAAkBN,GAGnCiB,EAAc7G,EAAQiG,EAAMA,QAAUA,EAAMA,MAAM,EAKlDY,IAAoC,2BAArBA,EAAYzC,OAC7ByC,EAAcZ,EAAMA,MAAM,GAG5B,IAAIa,GAAWD,GAAeA,EAAYE,KAAQ,EAElD,MACI5P,KAAK6F,EAAeM,WAAWsJ,OACjCzP,KAAK6F,EAAeM,WAAWsJ,KAAKE,OAMlC3P,KAAK6F,EAAeO,cAAcqJ,MACnCzP,KAAK6F,EAAeO,cAAcqJ,KAAKE,IAF1C,CAOA,GAAI3P,KAAK6F,EAAe+I,YAAenE,GAAWA,EAAQmE,WAAa,CAErEzK,EAAKoL,YAAkC,MAApBpL,EAAKoL,YAAsBtL,EAAME,EAAKoL,YAEzD9E,EAAUzB,GAEN0F,eAAgB,GAElBjE,GAMFA,EAAQiE,gBAAkB,CAE1B,IAAImB,GAAS7P,KAAK8P,EAAehB,EAAOrE,EACxCtG,GAAKyK,YAEHiB,OAAQA,EAAOE,WAcnB,MATI5L,GAAKoL,cACPpL,EAAKoL,YAAc1G,EAAQ1E,EAAKoL,aAC5BpL,EAAKoL,aACJpL,EAAKoL,cAIZvP,KAAKgQ,EAAM7L,GAEJnE,QAGTiQ,kBAAmB,SAASC,GAC1B,GAAIC,GAAQnH,GAERoH,UAAW3L,IAAQ,KAErByL,EAGF,IAAIrL,EAAW7E,KAAK6F,EAAewK,oBAAqB,CACtD,GAAIC,GAAStQ,KAAK6F,EAAewK,mBAAmBF,EAEpD,IAAIzH,EAAS4H,KAAYxH,EAAcwH,GACrCH,EAAQG,MACH,IAAIA,KAAW,EACpB,MAAOtQ,MAQX,MAJAA,MAAK6H,EAAakD,KAAKoF,GACnBnQ,KAAK6H,EAAa7G,OAAShB,KAAK6F,EAAemF,gBACjDhL,KAAK6H,EAAa0I,QAEbvQ,MAGTsB,UAAW,SAASkP,GAClB,GAAIC,MAAgB1M,MAAMhD,KAAKiD,UAAW,EAO1C,OALAhE,MAAK0H,EAASqD,MAAMyF,EAAQC,IACxBzQ,KAAKsH,GACPtH,KAAKmM,IAGAnM,MAST0Q,eAAgB,SAAS/D,GAIvB,MAFA3M,MAAK4F,EAAe+G,KAAOA,EAEpB3M,MAST2Q,gBAAiB,SAAS3N,GAGxB,MAFAhD,MAAK4Q,EAAc,QAAS5N,GAErBhD,MAST6Q,eAAgB,SAASC,GAGvB,MAFA9Q,MAAK4Q,EAAc,OAAQE,GAEpB9Q,MAQT+Q,aAAc,WAGZ,MAFA/Q,MAAK4F,KAEE5F,MAQTgR,WAAY,WAEV,MAAOjM,MAAKkM,MAAMjM,EAAUhF,KAAK4F,KASnCsL,eAAgB,SAASC,GAGvB,MAFAnR,MAAK6F,EAAesL,YAAcA,EAE3BnR,MASToR,WAAY,SAAStL,GAGnB,MAFA9F,MAAK6F,EAAeC,QAAUA,EAEvB9F,MAUTqR,gBAAiB,SAAS3N,GACxB,GAAIkB,GAAW5E,KAAK6F,EAAeyL,YAEnC,OADAtR,MAAK6F,EAAeyL,aAAe3M,EAAqBC,EAAUlB,GAC3D1D,MAUTuR,sBAAuB,SAAS7N,GAC9B,GAAIkB,GAAW5E,KAAK6F,EAAewK,kBAEnC,OADArQ,MAAK6F,EAAewK,mBAAqB1L,EAAqBC,EAAUlB,GACjE1D,MAUTwR,sBAAuB,SAAS9N,GAC9B,GAAIkB,GAAW5E,KAAK6F,EAAe4L,kBAEnC,OADAzR,MAAK6F,EAAe4L,mBAAqB9M,EAAqBC,EAAUlB,GACjE1D,MAYT0R,aAAc,SAASC,GAGrB,MAFA3R,MAAK6F,EAAe8L,UAAYA,EAEzB3R,MAQT4R,cAAe,WACb,MAAO5R,MAAKsF,GAQduM,YAAa,WACX,MAAO7R,MAAKwF,GAQdmG,QAAS,WACP,QAAK3L,KAAK8E,MACL9E,KAAKyF,IACHzF,KAAK8R,0BACR9R,KAAK8R,yBAA0B,EAC/B9R,KAAK0K,EAAU,QAAS,2CAEnB,KAKXqH,UAAW,WAIT,GAAIC,GAAcjM,EAAQiM,WACtBA,IACFhS,KAAKmC,OAAO6P,EAAYxH,IAAKwH,EAAY7P,QAAQuJ,WAIrDuG,iBAAkB,SAASxH,GACzB,GACGtF,EADH,CAKAsF,EAAUA,KAEV,IAAIoH,GAAcpH,EAAQyH,SAAWlS,KAAK6R,aAC1C,KAAKA,EACH,KAAM,IAAI3O,GAAiB,kBAG7B,IAAIsH,GAAMC,EAAQD,KAAOxK,KAAK0M,CAC9B,KAAKlC,EACH,KAAM,IAAItH,GAAiB,cAG7B,IAAIiP,GAASC,mBACTC,EAAK,EACTA,IAAM,YAAcF,EAAON,GAC3BQ,GAAM,QAAUF,EAAO3H,EAEvB,IAAImC,GAAOlC,EAAQkC,MAAQ3M,KAAK4F,EAAe+G,IAC3CA,KACEA,EAAK/K,OAAMyQ,GAAM,SAAWF,EAAOxF,EAAK/K,OACxC+K,EAAK2F,QAAOD,GAAM,UAAYF,EAAOxF,EAAK2F,QAGhD,IAAIC,GAAevS,KAAK8M,EAAiB9M,KAAKqM,EAAU7B,IAEpDgI,EAASrN,EAAUsN,cAAc,SACrCD,GAAOE,OAAQ,EACfF,EAAOG,IAAMJ,EAAe,yBAA2BF,GACtDlN,EAAUyN,MAAQzN,EAAU0N,MAAMC,YAAYN,KAIjDO,EAAoB,WAClB,GAAIhT,GAAOC,IACXA,MAAKqH,GAAkB,EACvB2L,WAAW,WAETjT,EAAKsH,GAAkB,KAI3B4L,EAAe,SAASC,EAAWzI,GAEjC,GAAI0I,GAAKvI,CAET,IAAK5K,KAAKiF,EAAV,CAEAwF,EAAUA,MAEVyI,EAAY,QAAUA,EAAUzG,OAAO,EAAG,GAAG2G,cAAgBF,EAAUzG,OAAO,GAE1EtH,EAAUkO,aACZF,EAAMhO,EAAUkO,YAAY,cAC5BF,EAAIG,UAAUJ,GAAW,GAAM,KAE/BC,EAAMhO,EAAUoO,oBAChBJ,EAAID,UAAYA,EAGlB,KAAKtI,IAAOH,GACNtB,EAAOsB,EAASG,KAClBuI,EAAIvI,GAAOH,EAAQG,GAGvB,IAAIzF,EAAUkO,YAEZlO,EAAUqO,cAAcL,OAIxB,KACEhO,EAAUsO,UAAU,KAAON,EAAID,UAAUQ,cAAeP,GACxD,MAAOjT,OAYbyT,EAAyB,SAASC,GAChC,GAAI7T,GAAOC,IACX,OAAO,UAASmT,GASd,GALApT,EAAK8T,GAAmB,KAKpB9T,EAAK+H,IAAuBqL,EAAhC,CAEApT,EAAK+H,EAAqBqL,CAM1B,IAAIW,EACJ,KACEA,EAASvK,EAAiB4J,EAAIW,QAC9B,MAAO5T,GACP4T,EAAS,YAGX/T,EAAKkQ,mBACH8D,SAAU,MAAQH,EAClBzQ,QAAS2Q,OAUfE,GAAuB,WACrB,GAAIjU,GAAOC,KACTiU,EAAmB,GAKrB,OAAO,UAASd,GACd,GAAIW,EACJ,KACEA,EAASX,EAAIW,OACb,MAAO5T,GAGP,OAEF,GAAIgU,GAAUJ,GAAUA,EAAOI,OAK/B,IACGA,IACY,UAAZA,GAAmC,aAAZA,GAA2BJ,EAAOK,mBAF5D,CAQA,GAAIC,GAAUrU,EAAK8T,EACdO,IACHrU,EAAKsU,EAAwB,SAASlB,GAExCmB,aAAaF,GACbrU,EAAK8T,GAAmBb,WAAW,WACjCjT,EAAK8T,GAAmB,MACvBI,MAUPM,GAAmB,SAASC,EAAMC,GAChC,GAAIC,GAAYhL,EAAS1J,KAAK+H,EAAUG,MACpCyM,EAAWjL,EAAS+K,GACpBG,EAAalL,EAAS8K,EAK1BxU,MAAKiI,EAAYwM,EAIbC,EAAUG,WAAaF,EAASE,UAAYH,EAAUI,OAASH,EAASG,OAC1EL,EAAKE,EAASI,UACZL,EAAUG,WAAaD,EAAWC,UAAYH,EAAUI,OAASF,EAAWE,OAC9EN,EAAOI,EAAWG,UAEpB/U,KAAKiQ,mBACH8D,SAAU,aACV5P,MACEsQ,GAAIA,EACJD,KAAMA,MAKZQ,EAAwB,WACtB,GAAIjV,GAAOC,IACXD,GAAKkV,GAA4B5Q,SAAS3B,UAAUC,SAEpD0B,SAAS3B,UAAUC,SAAW,WAC5B,MAAoB,kBAAT3C,OAAuBA,KAAKsN,EAC9BvN,EAAKkV,GAA0B3Q,MAAMtE,KAAKyN,EAAUzJ,WAEtDjE,EAAKkV,GAA0B3Q,MAAMtE,KAAMgE,aAItDkR,EAA0B,WACpBlV,KAAKiV,KAEP5Q,SAAS3B,UAAUC,SAAW3C,KAAKiV,KAQvCE,EAAqB,WAKnB,QAASC,GAAWC,GAClB,MAAO,UAASC,EAAInV,GAKlB,IAAK,GADD2D,GAAO,GAAIyR,OAAMvR,UAAUhD,QACtBL,EAAI,EAAGA,EAAImD,EAAK9C,SAAUL,EACjCmD,EAAKnD,GAAKqD,UAAUrD,EAEtB,IAAI6U,GAAmB1R,EAAK,EAQ5B,OAPIe,GAAW2Q,KACb1R,EAAK,GAAK/D,EAAKqB,KAAKoU,IAMlBH,EAAK/Q,MACA+Q,EAAK/Q,MAAMtE,KAAM8D,GAEjBuR,EAAKvR,EAAK,GAAIA,EAAK,KAOhC,QAAS2R,GAAgB3V,GACvB,GAAI4V,GAAQ3P,EAAQjG,IAAWiG,EAAQjG,GAAQ4C,SAC3CgT,IAASA,EAAMC,gBAAkBD,EAAMC,eAAe,sBACxDhM,EACE+L,EACA,mBACA,SAASL,GACP,MAAO,UAASzB,EAAS0B,EAAIM,EAASC,GAEpC,IACMP,GAAMA,EAAGQ,cACXR,EAAGQ,YAAc/V,EAAKqB,KAAKkU,EAAGQ,cAEhC,MAAOC,IAMT,GAAIC,GAAQC,EAAcC,CA6B1B,OA1BEtP,IACAA,EAAgB0E,MACJ,gBAAXxL,GAAuC,SAAXA,KAI7BmW,EAAelW,EAAKsU,EAAwB,SAC5C6B,EAAkBnW,EAAKoW,KACvBH,EAAS,SAAS7C,GAIhB,GAAKA,EAAL,CAEA,GAAID,EACJ,KACEA,EAAYC,EAAIiD,KAChB,MAAOlW,GAGP,OAEF,MAAkB,UAAdgT,EAA8B+C,EAAa9C,GACxB,aAAdD,EAAiCgD,EAAgB/C,GAArD,UAGFkC,EAAKtU,KACVf,KACA4T,EACA7T,EAAKqB,KAAKkU,EAAIpI,OAAW8I,GACzBJ,EACAC,KAINQ,GAEF1M,EACE+L,EACA,sBACA,SAASL,GACP,MAAO,UAASlC,EAAKmC,EAAIM,EAASC,GAChC,IACEP,EAAKA,IAAOA,EAAG/H,EAAoB+H,EAAG/H,EAAoB+H,GAC1D,MAAOpV,IAGT,MAAOmV,GAAKtU,KAAKf,KAAMmT,EAAKmC,EAAIM,EAASC,KAG7CQ,IAvGN,GAAItW,GAAOC,KAEPqW,EAAkBtW,EAAK6H,EA2BvBhB,EAAkB5G,KAAK6F,EAAee,eA+E1C+C,GAAK5D,EAAS,aAAcqP,EAAYiB,GACxC1M,EAAK5D,EAAS,cAAeqP,EAAYiB,GACrCtQ,EAAQuQ,uBACV3M,EACE5D,EACA,wBACA,SAASsP,GACP,MAAO,UAASkB,GACd,MAAOlB,GAAKtV,EAAKqB,KAAKmV,MAG1BF,EAqCJ,KAAK,GA/BDG,IACF,cACA,SACA,OACA,mBACA,iBACA,oBACA,kBACA,cACA,aACA,qBACA,cACA,aACA,iBACA,eACA,kBACA,cACA,cACA,eACA,qBACA,SACA,YACA,eACA,gBACA,YACA,kBACA,SACA,iBACA,4BACA,wBAEO7V,EAAI,EAAGA,EAAI6V,EAAaxV,OAAQL,IACvC8U,EAAgBe,EAAa7V,KAajC8V,EAAwB,WAMtB,QAASC,GAASC,EAAMtL,GAClBsL,IAAQtL,IAAOxG,EAAWwG,EAAIsL,KAChChN,EAAK0B,EAAKsL,EAAM,SAAStB,GACvB,MAAOtV,GAAKqB,KAAKiU,KARvB,GAAItV,GAAOC,KACP4G,EAAkB5G,KAAK6F,EAAee,gBAEtCyP,EAAkBtW,EAAK6H,CAU3B,IAAIhB,EAAgByE,KAAO,kBAAoBtF,GAAS,CACtD,GAAI6Q,GAAW7Q,EAAQ8Q,gBAAkB9Q,EAAQ8Q,eAAenU,SAChEiH,GACEiN,EACA,OACA,SAASE,GACP,MAAO,UAAS7P,EAAQ2I,GAYtB,MARIhH,GAASgH,IAAQA,EAAImH,QAAQhX,EAAK2F,UACpC1F,KAAKgX,IACH/P,OAAQA,EACR2I,IAAKA,EACLqH,YAAa,OAIVH,EAASxS,MAAMtE,KAAMgE,aAGhCqS,GAGF1M,EACEiN,EACA,OACA,SAASM,GACP,MAAO,YAIL,QAASC,KACP,GAAI9L,EAAI2L,IAAkC,IAAnB3L,EAAI+L,WAAkB,CAC3C,IAGE/L,EAAI2L,GAAYC,YAAc5L,EAAIgM,OAClC,MAAOnX,IAITH,EAAKkQ,mBACHmG,KAAM,OACNrC,SAAU,MACV5P,KAAMkH,EAAI2L,MAMhB,IAAK,GArBD3L,GAAMrL,KAoBNsX,GAAS,SAAU,UAAW,cACzBC,EAAI,EAAGA,EAAID,EAAMtW,OAAQuW,IAChCb,EAASY,EAAMC,GAAIlM,EAiBrB,OAdI,sBAAwBA,IAAOxG,EAAWwG,EAAImM,oBAChD7N,EACE0B,EACA,qBACA,SAASgK,GACP,MAAOtV,GAAKqB,KAAKiU,EAAMnI,OAAWiK,KAMtC9L,EAAImM,mBAAqBL,EAGpBD,EAAS5S,MAAMtE,KAAMgE,aAGhCqS,GAIAzP,EAAgByE,KAAOzB,KACzBD,EACE5D,EACA,QACA,SAAS0R,GACP,MAAO,YAKL,IAAK,GADD3T,GAAO,GAAIyR,OAAMvR,UAAUhD,QACtBL,EAAI,EAAGA,EAAImD,EAAK9C,SAAUL,EACjCmD,EAAKnD,GAAKqD,UAAUrD,EAGtB,IAEIiP,GAFA8H,EAAa5T,EAAK,GAClBmD,EAAS,KAeb,IAZ0B,gBAAfyQ,GACT9H,EAAM8H,EACG,WAAa3R,IAAW2R,YAAsB3R,GAAQ4R,SAC/D/H,EAAM8H,EAAW9H,IACb8H,EAAWzQ,SACbA,EAASyQ,EAAWzQ,SAGtB2I,EAAM,GAAK8H,EAIT9H,EAAImH,QAAQhX,EAAK2F,QACnB,MAAO+R,GAAUnT,MAAMtE,KAAM8D,EAG3BA,GAAK,IAAMA,EAAK,GAAGmD,SACrBA,EAASnD,EAAK,GAAGmD,OAGnB,IAAI2Q,IACF3Q,OAAQA,EACR2I,IAAKA,EACLqH,YAAa,KAGf,OAAOQ,GACJnT,MAAMtE,KAAM8D,GACZ+T,KAAK,SAASC,GASb,MARAF,GAAUX,YAAca,EAAST,OAEjCtX,EAAKkQ,mBACHmG,KAAM,OACNrC,SAAU,QACV5P,KAAMyT,IAGDE,IAER,SAAS,SAAS/B,GASjB,KAPAhW,GAAKkQ,mBACHmG,KAAM,OACNrC,SAAU,QACV5P,KAAMyT,EACNnU,MAAO,UAGHsS,MAIdM,GAMAzP,EAAgB0E,KAAOtL,KAAKiF,IAC1BE,EAAUmJ,kBACZnJ,EAAUmJ,iBAAiB,QAASvO,EAAKsU,EAAwB,UAAU,GAC3ElP,EAAUmJ,iBAAiB,WAAYvO,EAAKoW,MAAyB,IAC5DhR,EAAU4S,cAEnB5S,EAAU4S,YAAY,UAAWhY,EAAKsU,EAAwB,UAC9DlP,EAAU4S,YAAY,aAAchY,EAAKoW,OAQ7C,IAAI6B,GAASjS,EAAQiS,OACjBC,EAAsBD,GAAUA,EAAOE,KAAOF,EAAOE,IAAIC,QACzDC,GACDH,GACDlS,EAAQsS,SACRA,QAAQC,WACRD,QAAQE,YACV,IAAI3R,EAAgBoB,UAAYoQ,EAAwB,CAEtD,GAAII,GAAgBzS,EAAQ0S,UAC5B1S,GAAQ0S,WAAa,WACnB,GAAIC,GAAc3Y,EAAKgI,EAAUG,IAGjC,IAFAnI,EAAK4Y,GAAkB5Y,EAAKkI,EAAWyQ,GAEnCF,EACF,MAAOA,GAAclU,MAAMtE,KAAMgE,WAIrC,IAAI4U,GAA6B,SAASC,GAGxC,MAAO,YACL,GAAIjJ,GAAM5L,UAAUhD,OAAS,EAAIgD,UAAU,GAAKkJ,MAQhD,OALI0C,IAEF7P,EAAK4Y,GAAkB5Y,EAAKkI,EAAW2H,EAAM,IAGxCiJ,EAAiBvU,MAAMtE,KAAMgE,YAIxC2F,GAAK0O,QAAS,YAAaO,EAA4BvC,GACvD1M,EAAK0O,QAAS,eAAgBO,EAA4BvC,GAG5D,GAAIzP,EAAgBpD,SAAW,WAAauC,IAAWvC,QAAQsV,IAAK,CAElE,GAAIC,GAAwB,SAAS9U,EAAKE,GACxCpE,EAAKkQ,mBACH9M,QAASc,EACTR,MAAOU,EAAKV,MACZsQ,SAAU,YAIdhL,IAAM,QAAS,OAAQ,OAAQ,QAAS,OAAQ,SAAS4K,EAAGlQ,GAC1DuG,EAAkBxG,QAASC,EAAOsV,OAKxCC,EAAkB,WAGhB,IADA,GAAIC,GACGjZ,KAAK4H,EAAiB5G,QAAQ,CACnCiY,EAAUjZ,KAAK4H,EAAiB2I,OAEhC,IAAIL,GAAM+I,EAAQ,GAChBrX,EAAOqX,EAAQ,GACf5D,EAAO4D,EAAQ,EAEjB/I,GAAItO,GAAQyT,IAIhB6D,EAAiB,WAEf,IAAK,GAAIjS,KAAUjH,MAAKyH,EACtBzH,KAAKwH,EAAiBP,GAAUjH,KAAKyH,EAAwBR,IAIjEkS,EAAe,WACb,GAAIpZ,GAAOC,IAGX+I,GAAK/I,KAAK0H,EAAU,SAASiM,EAAGnD,GAC9B,GAAI4I,GAAY5I,EAAO,GACnB1M,EAAO0M,EAAO,EAClB4I,GAAU9U,MAAMvE,GAAOA,GAAMsZ,OAAOvV,OAIxCwV,EAAW,SAASC,GAClB,GAAIC,GAAIrP,EAAWsP,KAAKF,GACtB/O,KACA7J,EAAI,CAEN,KACE,KAAOA,KAAK6J,EAAIP,EAAQtJ,IAAM6Y,EAAE7Y,IAAM,GACtC,MAAOT,GACP,KAAM,IAAIgD,GAAiB,gBAAkBqW,GAG/C,GAAI/O,EAAIqC,OAAS7M,KAAK6F,EAAe6T,eACnC,KAAM,IAAIxW,GACR,iFAIJ,OAAOsH,IAGTmP,EAAkB,SAASvN,GAEzB,GAAImG,GAAe,KAAOnG,EAAI0I,MAAQ1I,EAAIwN,KAAO,IAAMxN,EAAIwN,KAAO,GAKlE,OAHIxN,GAAIyI,WACNtC,EAAenG,EAAIyI,SAAW,IAAMtC,GAE/BA,GAGTsH,EAAyB,WAElB7Z,KAAKqH,GACRrH,KAAKgP,EAAiB1K,MAAMtE,KAAMgE,YAItC8V,EAAkB,SAASC,EAAWtP,GACpC,GAAIoF,GAAS7P,KAAK8P,EAAeiK,EAAWtP,EAE5CzK,MAAKga,EAAc,UACjBD,UAAWA,EACXtP,QAASA,IAGXzK,KAAKia,GACHF,EAAUnY,KACVmY,EAAU5W,QACV4W,EAAUnK,IACVmK,EAAUG,OACVrK,EACApF,IAIJ0P,EAAgB,SAASJ,EAAWtP,GAClC,GAAI1K,GAAOC,KACP6P,IACJ,IAAIkK,EAAUjL,OAASiL,EAAUjL,MAAM9N,SACrC+H,EAAKgR,EAAUjL,MAAO,SAASnO,EAAGmO,GAChC,GAAIsL,GAAQra,EAAKsa,GAAgBvL,EAAOiL,EAAUnK,IAC9CwK,IACFvK,EAAO9E,KAAKqP,KAKZ3P,GAAWA,EAAQiE,gBACrB,IAAK,GAAI6I,GAAI,EAAGA,EAAI9M,EAAQiE,gBAAkB6I,EAAI1H,EAAO7O,OAAQuW,IAC/D1H,EAAO0H,GAAG+C,QAAS,CAKzB,OADAzK,GAASA,EAAO9L,MAAM,EAAG/D,KAAK6F,EAAec,kBAI/C4T,GAAiB,SAASH,EAAOI,GAE/B,GAAIC,IACFC,SAAUN,EAAMxK,IAChBsK,OAAQE,EAAMO,KACdC,MAAOR,EAAMS,OACbC,WAAUV,EAAMnN,MAAQ,IAuB1B,OAfKmN,GAAMxK,MACT6K,EAAWC,SAAWF,GAGxBC,EAAWH,SAGNta,KAAK6F,EAAeQ,aAAaoJ,OACjCzP,KAAK6F,EAAeQ,aAAaoJ,KAAKgL,EAAWC,WAEpD,qBAAqBjL,KAAKgL,EAAW,cAErC,qBAAqBhL,KAAKgL,EAAWC,WAGhCD,GAGTM,GAAmB,SAAS3E,EAAMjT,EAASwM,EAASuK,EAAQrK,EAAQpF,GAClE,GAAIuQ,IAAmB5E,EAAOA,EAAO,KAAO,KAAOjT,GAAW,GAC9D,KACInD,KAAK6F,EAAeK,aAAauJ,OAClCzP,KAAK6F,EAAeK,aAAauJ,KAAKtM,KACrCnD,KAAK6F,EAAeK,aAAauJ,KAAKuL,GAH1C,CAQA,GAAIpM,EAoBJ,IAlBIiB,GAAUA,EAAO7O,QACnB2O,EAAUE,EAAO,GAAG6K,UAAY/K,EAGhCE,EAAOE,UACPnB,GAAciB,OAAQA,IACbF,IACTf,GACEiB,SAEI6K,SAAU/K,EACVuK,OAAQA,EACRI,QAAQ,QAOZta,KAAK6F,EAAeM,WAAWsJ,OACjCzP,KAAK6F,EAAeM,WAAWsJ,KAAKE,OAMlC3P,KAAK6F,EAAeO,cAAcqJ,MACnCzP,KAAK6F,EAAeO,cAAcqJ,KAAKE,IAF1C,CAOA,GAAIxL,GAAO6E,GAGPiS,WACEC,SAEI9E,KAAMA,EACNvL,MAAO1H,EACPyL,WAAYA,KAIlBuM,QAASxL,GAEXlF,EAIFzK,MAAKgQ,EAAM7L,MAGbiX,GAAa,SAASjX,GAGpB,GAAI+G,GAAMlL,KAAK6F,EAAeY,gBAI9B,IAHItC,EAAKhB,UACPgB,EAAKhB,QAAU8F,EAAS9E,EAAKhB,QAAS+H,IAEpC/G,EAAK8W,UAAW,CAClB,GAAIA,GAAY9W,EAAK8W,UAAUC,OAAO,EACtCD,GAAUpQ,MAAQ5B,EAASgS,EAAUpQ,MAAOK,GAG9C,GAAImQ,GAAUlX,EAAKkX,OAanB,OAZIA,KACEA,EAAQzL,MACVyL,EAAQzL,IAAM3G,EAASoS,EAAQzL,IAAK5P,KAAK6F,EAAea,eAEtD2U,EAAQC,UACVD,EAAQC,QAAUrS,EAASoS,EAAQC,QAAStb,KAAK6F,EAAea,gBAIhEvC,EAAKoX,aAAepX,EAAKoX,YAAYL,QACvClb,KAAKwb,GAAiBrX,EAAKoX,aAEtBpX,GAMTsX,GAAkB,SAASF,GAQzB,IAAK,GAJHG,GACAvL,EACAhM,EAHEwX,GAAY,KAAM,OAAQ,OAKrBhb,EAAI,EAAGA,EAAI4a,EAAYL,OAAOla,SAAUL,EAE/C,GADAwP,EAAQoL,EAAYL,OAAOva,GAExBwP,EAAMwF,eAAe,SACrBjN,EAASyH,EAAMhM,QAChB+E,EAAaiH,EAAMhM,MAHrB,CAOAA,EAAO6E,KAAgBmH,EAAMhM,KAC7B,KAAK,GAAIoT,GAAI,EAAGA,EAAIoE,EAAS3a,SAAUuW,EACrCmE,EAAUC,EAASpE,GACfpT,EAAKwR,eAAe+F,IAAYvX,EAAKuX,KACvCvX,EAAKuX,GAAWzS,EAAS9E,EAAKuX,GAAU1b,KAAK6F,EAAea,cAGhE6U,GAAYL,OAAOva,GAAGwD,KAAOA,IAIjCyX,GAAc,WACZ,GAAK5b,KAAKoF,GAAkBpF,KAAKiF,EAAjC,CACA,GAAI4W,KAkBJ,OAhBI7b,MAAKoF,GAAiBC,EAAWyW,YACnCD,EAASvV,SACPyV,aAAc1R,UAAUyR,YAKxB/V,EAAQiC,UAAYjC,EAAQiC,SAASE,OACvC2T,EAASjM,IAAM7J,EAAQiC,SAASE,MAG9BlI,KAAKiF,GAAgBE,EAAU6W,WAC5BH,EAASvV,UAASuV,EAASvV,YAChCuV,EAASvV,QAAQgV,QAAUnW,EAAU6W,UAGhCH,IAGTI,EAAe,WACbjc,KAAKkc,GAAmB,EACxBlc,KAAKmc,GAAgB,MAGvBC,GAAgB,WACd,MAAOpc,MAAKkc,IAAoBzX,IAAQzE,KAAKmc,GAAgBnc,KAAKkc,IAYpEG,GAAe,SAASC,GACtB,GAAIC,GAAOvc,KAAKuF,CAEhB,UACGgX,GACDD,EAAQnZ,UAAYoZ,EAAKpZ,SACzBmZ,EAAQnB,UAAYoB,EAAKpB,WAKvBmB,EAAQ1N,YAAc2N,EAAK3N,WACtBnF,EAAiB6S,EAAQ1N,WAAY2N,EAAK3N,aACxC0N,EAAQrB,YAAasB,EAAKtB,WAE5BzR,EAAgB8S,EAAQrB,UAAWsB,EAAKtB,aAMnDuB,GAAkB,SAASnB,GAEzB,IAAIrb,KAAKyc,KAAT,CAIA,GAAIpF,GAASgE,EAAQhE,MAKrB,IAAiB,MAAXA,GAA6B,MAAXA,GAA6B,MAAXA,EAA1C,CAEA,GAAIqF,EACJ,KAIIA,EADE9S,IACMyR,EAAQ/U,QAAQqW,IAAI,eAEpBtB,EAAQuB,kBAAkB,eAIpCF,EAA8B,IAAtBG,SAASH,EAAO,IACxB,MAAOxc,IAITF,KAAKkc,GAAmBQ,EAEpBA,EAEwB,EAAxB1c,KAAKkc,IAAwB,IAEjClc,KAAKmc,GAAgB1X,OAGvBqY,EAAO,SAAS3Y,GACd,GAAIwG,GAAgB3K,KAAK6F,EAErBkX,GACAC,QAAShd,KAAK2F,EACdvB,OAAQuG,EAAcvG,OACtB6Y,SAAU,cAEZpB,EAAW7b,KAAKkd,IAsDlB,IApDIrB,IACFkB,EAAS1B,QAAUQ,GAIjB1X,EAAKuK,sBAAuBvK,GAAKuK,eAErCvK,EAAO6E,EAAY+T,EAAU5Y,GAG7BA,EAAK2M,KAAO9H,EAAYA,KAAgBhJ,KAAK4F,EAAekL,MAAO3M,EAAK2M,MACxE3M,EAAKnB,MAAQgG,EAAYA,KAAgBhJ,KAAK4F,EAAe5C,OAAQmB,EAAKnB,OAG1EmB,EAAKnB,MAAM,oBAAsByB,IAAQzE,KAAK2H,EAE1C3H,KAAK6H,GAAgB7H,KAAK6H,EAAa7G,OAAS,IAGlDmD,EAAKoX,aACHL,UAAWnX,MAAMhD,KAAKf,KAAK6H,EAAc,KAIzC7H,KAAK4F,EAAe+G,OAEtBxI,EAAKwI,KAAO3M,KAAK4F,EAAe+G,MAI9BhC,EAAcwG,cAAahN,EAAKgN,YAAcxG,EAAcwG,aAG5DxG,EAAc7E,UAAS3B,EAAK2B,QAAU6E,EAAc7E,SAGpD6E,EAAcwS,aAAYhZ,EAAKiZ,YAAczS,EAAcwS,YAE/DhZ,EAAOnE,KAAKqd,GAAclZ,GAG1B1B,OAAO4M,KAAKlL,GAAMmZ,QAAQ,SAAS1S,IAChB,MAAbzG,EAAKyG,IAA8B,KAAdzG,EAAKyG,IAAe9B,EAAc3E,EAAKyG,YACvDzG,GAAKyG,KAIZ/F,EAAW8F,EAAc2G,gBAC3BnN,EAAOwG,EAAc2G,aAAanN,IAASA,GAIxCA,IAAQ2E,EAAc3E,MAMzBU,EAAW8F,EAAc8G,qBACxB9G,EAAc8G,mBAAmBtN,IAOpC,MAAInE,MAAKyc,SACPzc,MAAK0K,EAAU,OAAQ,uCAAwCvG,QAIzB,gBAA7BwG,GAAc7D,WACnBmE,KAAKsS,SAAW5S,EAAc7D,YAChC9G,KAAKwd,GAAsBrZ,GAG7BnE,KAAKwd,GAAsBrZ,KAI/BsZ,GAAe,SAAStZ,GACtB,MAAO4F,GAAS5F,EAAMnE,KAAK6F,EAAekB,eAG5C2W,GAAU,WACR,MAAOpU,MAGTqU,GAAuB,SAASxZ,EAAMT,GACpC,GAAI3D,GAAOC,KACP2K,EAAgB3K,KAAK6F,CAEzB,IAAK7F,KAAK2L,UAAV,CAQA,GALAxH,EAAOnE,KAAK4d,GAAYzZ,IAKnBnE,KAAK6F,EAAegY,iBAAmB7d,KAAK8d,GAAc3Z,GAE7D,WADAnE,MAAK0K,EAAU,OAAQ,+BAAgCvG,EAOzDnE,MAAKwF,EAAerB,EAAK4Z,WAAa5Z,EAAK4Z,SAAW/d,KAAKge,MAG3Dhe,KAAKuF,EAAYpB,EAEjBnE,KAAK0K,EAAU,QAAS,uBAAwBvG,EAEhD,IAAI8Z,IACFC,eAAgB,IAChBC,cAAe,YAAcne,KAAKsK,QAClC8T,WAAYpe,KAAK0F,EAGf1F,MAAK4M,IACPqR,EAAKI,cAAgBre,KAAK4M,EAG5B,IAAIqO,GAAY9W,EAAK8W,WAAa9W,EAAK8W,UAAUC,OAAO,EAItDlb,MAAK6F,EAAee,iBACpB5G,KAAK6F,EAAee,gBAAgB2E,QAEpCvL,KAAKiQ,mBACH8D,SAAU,SACV5Q,QAAS8X,GACJA,EAAU7E,KAAO6E,EAAU7E,KAAO,KAAO,IAAM6E,EAAUpQ,MAC1D1G,EAAKhB,QACT4a,SAAU5Z,EAAK4Z,SACfta,MAAOU,EAAKV,OAAS,SAIzB,IAAImM,GAAM5P,KAAK+M,GACdpC,EAAcgH,WAAa3R,KAAKse,IAAcvd,KAAKf,MAClD4P,IAAKA,EACLqO,KAAMA,EACN9Z,KAAMA,EACNsG,QAASE,EACT4T,UAAW,WACTxe,EAAKoI,IAELpI,EAAKia,EAAc,WACjB7V,KAAMA,EACNwO,IAAK/C,IAEPlM,GAAYA,KAEd8a,QAAS,SAAiBlc,GACxBvC,EAAK2K,EAAU,QAAS,mCAAoCpI,GAExDA,EAAM+Y,SACRtb,EAAK0e,GAAiBnc,EAAM+Y,SAG9Btb,EAAKia,EAAc,WACjB7V,KAAMA,EACNwO,IAAK/C,IAEPtN,EAAQA,GAAS,GAAI1B,OAAM,sDAC3B8C,GAAYA,EAASpB,QAK3Boc,GAAc,SAASC,GAErB,GAAI/O,GAAM+O,EAAK/O,IAAM,IAAMvG,EAAUsV,EAAKV,MAEtCW,EAAmB,KACnBC,IAUJ,IARIF,EAAKlU,QAAQnE,UACfsY,EAAmB5e,KAAK8e,GAAcH,EAAKlU,QAAQnE,UAGjDqY,EAAKlU,QAAQsU,kBACfF,EAA2B7e,KAAK8e,GAAcH,EAAKlU,QAAQsU,kBAGzDnV,IAAiB,CACnBiV,EAAyBhM,KAAO7N,EAAU2Z,EAAKxa,KAE/C,IAAI6a,GAAsBhW,KAAgBhJ,KAAKgH,GAC3CiY,EAAejW,EAAYgW,EAAqBH,EAMpD,OAJID,KACFK,EAAa3Y,QAAUsY,GAGlB7Y,EACJmZ,MAAMtP,EAAKqP,GACXpH,KAAK,SAASC,GACb,GAAIA,EAASqH,GACXR,EAAKJ,WAAaI,EAAKJ,gBAClB,CACL,GAAIjc,GAAQ,GAAI1B,OAAM,sBAAwBkX,EAAST,OAGvD/U,GAAM+Y,QAAUvD,EAChB6G,EAAKH,SAAWG,EAAKH,QAAQlc,MAGhC,SAAS,WACRqc,EAAKH,SACHG,EAAKH,QAAQ,GAAI5d,OAAM,6CAI/B,GAAIya,GAAUtV,EAAQ8Q,gBAAkB,GAAI9Q,GAAQ8Q,cACpD,IAAKwE,EAAL,CAGA,GAAI+D,GAAU,mBAAqB/D,IAAqC,mBAAnBgE,eAEhDD,KAED,mBAAqB/D,GACvBA,EAAQ7D,mBAAqB,WAC3B,GAA2B,IAAvB6D,EAAQjE,WAEL,GAAuB,MAAnBiE,EAAQhE,OACjBsH,EAAKJ,WAAaI,EAAKJ,gBAClB,IAAII,EAAKH,QAAS,CACvB,GAAIzI,GAAM,GAAInV,OAAM,sBAAwBya,EAAQhE,OACpDtB,GAAIsF,QAAUA,EACdsD,EAAKH,QAAQzI,MAIjBsF,EAAU,GAAIgE,gBAGdzP,EAAMA,EAAI0P,QAAQ,WAAY,IAG1BX,EAAKJ,YACPlD,EAAQkE,OAASZ,EAAKJ,WAEpBI,EAAKH,UACPnD,EAAQmE,QAAU,WAChB,GAAIzJ,GAAM,GAAInV,OAAM,oCACpBmV,GAAIsF,QAAUA,EACdsD,EAAKH,QAAQzI,MAKnBsF,EAAQoE,KAAK,OAAQ7P,GAEjBgP,GACF7V,EAAK6V,EAAkB,SAAShU,EAAKC,GACnCwQ,EAAQqE,iBAAiB9U,EAAKC,KAIlCwQ,EAAQsE,KAAK3a,EAAU2Z,EAAKxa,UAG9Byb,GAAe,SAASC,GACtB,GAAIC,KAEJ,KAAK,GAAIlV,KAAOiV,GACd,GAAIA,EAAKlK,eAAe/K,GAAM,CAC5B,GAAIC,GAAQgV,EAAKjV,EACjBkV,GAAUlV,GAAwB,kBAAVC,GAAuBA,IAAUA,EAI7D,MAAOiV,IAGTC,EAAW,SAAStc,GAGhBzD,KAAKyH,EAAwBhE,KAC5BzD,KAAKuK,OAASvK,KAAK6F,EAAe0E,QAGnClG,SAAS3B,UAAU4B,MAAMvD,KACvBf,KAAKyH,EAAwBhE,GAC7BzD,KAAKwH,KACFzD,MAAMhD,KAAKiD,UAAW,KAK/Bgc,EAAe,SAASpV,EAAKoC,GACvB9H,EAAY8H,SACPhN,MAAK4F,EAAegF,GAE3B5K,KAAK4F,EAAegF,GAAO5B,EAAYhJ,KAAK4F,EAAegF,OAAYoC,KAM7E/M,EAAMyC,UAAUud,QAAUhgB,EAAMyC,UAAUgO,eAC1CzQ,EAAMyC,UAAUwd,kBAAoBjgB,EAAMyC,UAAU0O,WAEpD3R,EAAOD,QAAUS,IAEdc,KAAKf,KAAuB,mBAAXF,QAAyBA,OAAyB,mBAATC,MAAuBA,KAAyB,mBAAXF,QAAyBA,aACxHsgB,GAAK,GAAGld,EAAI,EAAEI,EAAI,EAAEkB,EAAI,EAAE6b,EAAI,EAAEC,EAAI,IAAI9e,GAAG,SAASL,EAAQzB,EAAOD,IACtE,SAAWM,GAOX,GAAIwgB,GAAmBpf,EAAQ,GAG3B6E,EACgB,mBAAXlG,QACHA,OACkB,mBAAXC,GAAyBA,EAAyB,mBAATC,MAAuBA,QACzEwgB,EAASxa,EAAQ9F,MAEjBA,EAAQ,GAAIqgB,EAQhBrgB,GAAMugB,WAAa,WAEjB,MADAza,GAAQ9F,MAAQsgB,EACTtgB,GAGTA,EAAM8R,YAENtS,EAAOD,QAAUS,EAoCjBR,EAAOD,QAAQihB,OAASH,IAErBvf,KAAKf,KAAuB,mBAAXF,QAAyBA,OAAyB,mBAATC,MAAuBA,KAAyB,mBAAXF,QAAyBA,aACxH2E,EAAI,IAAID,GAAG,SAASrD,EAAQzB,EAAOD,IACtC,SAAWM,GAQX,QAAS4I,GAASgY,GAChB,MAAuB,gBAATA,IAA8B,OAATA,EAKrC,QAASjY,GAAQoC,GACf,OAAQpI,OAAOC,UAAUC,SAAS5B,KAAK8J,IACrC,IAAK,iBACH,OAAO,CACT,KAAK,qBACH,OAAO,CACT,KAAK,wBACH,OAAO,CACT,SACE,MAAOA,aAAiBjK,QAI9B,QAAS0H,GAAauC,GACpB,MAAiD,wBAA1CpI,OAAOC,UAAUC,SAAS5B,KAAK8J,GAGxC,QAAStC,GAAWsC,GAClB,MAAiD,sBAA1CpI,OAAOC,UAAUC,SAAS5B,KAAK8J,GAGxC,QAASrC,GAAeqC,GACtB,MAAiD,0BAA1CpI,OAAOC,UAAUC,SAAS5B,KAAK8J,GAGxC,QAAS3F,GAAYwb,GACnB,MAAgB,UAATA,EAGT,QAAS7b,GAAW6b,GAClB,MAAuB,kBAATA,GAGhB,QAAS/X,GAAc+X,GACrB,MAAgD,oBAAzCje,OAAOC,UAAUC,SAAS5B,KAAK2f,GAGxC,QAAS9X,GAAS8X,GAChB,MAAgD,oBAAzCje,OAAOC,UAAUC,SAAS5B,KAAK2f,GAGxC,QAAS7X,GAAQ6X,GACf,MAAgD,mBAAzCje,OAAOC,UAAUC,SAAS5B,KAAK2f,GAGxC,QAAS5X,GAAc4X,GACrB,IAAK/X,EAAc+X,GAAO,OAAO,CAEjC,KAAK,GAAI/M,KAAK+M,GACZ,GAAIA,EAAK/K,eAAehC,GACtB,OAAO,CAGX,QAAO,EAGT,QAASgN,KACP,IAEE,MADA,IAAIC,YAAW,KACR,EACP,MAAO1gB,GACP,OAAO,GAIX,QAAS2gB,KACP,IAEE,MADA,IAAIC,UAAS,KACN,EACP,MAAO5gB,GACP,OAAO,GAIX,QAAS6gB,KACP,IAEE,MADA,IAAIC,cAAa,KACV,EACP,MAAO9gB,GACP,OAAO,GAIX,QAAS0J,KACP,KAAM,SAAW7D,IAAU,OAAO,CAElC,KAIE,MAHA,IAAIkb,SACJ,GAAItJ,SAAQ,IACZ,GAAIuJ,WACG,EACP,MAAOhhB,GACP,OAAO,GAQX,QAASkH,KACP,IAAKwC,IAAiB,OAAO,CAE7B,KAKE,MAHA,IAAI+N,SAAQ,cACVxQ,eAAgB,YAEX,EACP,MAAOjH,GACP,OAAO,GAIX,QAASihB,KACP,MAAwC,kBAA1BC,uBAGhB,QAASC,GAAgB3d,GACvB,QAAS4N,GAAanN,EAAMS,GAC1B,GAAI0c,GAAiB5d,EAASS,IAASA,CACvC,OAAIS,GACKA,EAAS0c,IAAmBA,EAE9BA,EAGT,MAAOhQ,GAGT,QAASvI,GAAKmH,EAAKxM,GACjB,GAAI/C,GAAG4W,CAEP,IAAIrS,EAAYgL,EAAIlP,QAClB,IAAKL,IAAKuP,GACJ/G,EAAO+G,EAAKvP,IACd+C,EAAS3C,KAAK,KAAMJ,EAAGuP,EAAIvP,QAK/B,IADA4W,EAAIrH,EAAIlP,OAEN,IAAKL,EAAI,EAAGA,EAAI4W,EAAG5W,IACjB+C,EAAS3C,KAAK,KAAMJ,EAAGuP,EAAIvP,IAMnC,QAASqI,GAAYuY,EAAMC,GACzB,MAAKA,IAGLzY,EAAKyY,EAAM,SAAS5W,EAAKC,GACvB0W,EAAK3W,GAAOC,IAEP0W,GALEA,EAgBX,QAASrY,GAAagH,GACpB,QAAKzN,OAAOgf,UAGLhf,OAAOgf,SAASvR,GAGzB,QAASjH,GAASsQ,EAAKrO,GACrB,GAAmB,gBAARA,GACT,KAAM,IAAItK,OAAM,yDAElB,OAAmB,gBAAR2Y,IAA4B,IAARrO,EACtBqO,EAEFA,EAAIvY,QAAUkK,EAAMqO,EAAMA,EAAI9M,OAAO,EAAGvB,GAAO,IAUxD,QAAS/B,GAAOuY,EAAQ9W,GACtB,MAAOnI,QAAOC,UAAUiT,eAAe5U,KAAK2gB,EAAQ9W,GAGtD,QAASxB,GAAWuY,GAQlB,IALA,GAGEC,GAHEC,KACFlhB,EAAI,EACJmhB,EAAMH,EAAS3gB,OAGVL,EAAImhB,EAAKnhB,IACdihB,EAAUD,EAAShhB,GACfiI,EAASgZ,GAGXC,EAAQ9W,KAAK6W,EAAQtC,QAAQ,8BAA+B,SACnDsC,GAAWA,EAAQG,QAE5BF,EAAQ9W,KAAK6W,EAAQG,OAIzB,OAAO,IAAIC,QAAOH,EAAQI,KAAK,KAAM,KAGvC,QAAS5Y,GAAU9I,GACjB,GAAI2hB,KAIJ,OAHAnZ,GAAKxI,EAAG,SAASqK,EAAKC,GACpBqX,EAAMnX,KAAKqH,mBAAmBxH,GAAO,IAAMwH,mBAAmBvH,MAEzDqX,EAAMD,KAAK,KAMpB,QAASvY,GAASkG,GAChB,GAAmB,gBAARA,GAAkB,QAC7B,IAAIuS,GAAQvS,EAAIuS,MAAM,kEAGlBC,EAAQD,EAAM,IAAM,GACpBE,EAAWF,EAAM,IAAM,EAC3B,QACEtN,SAAUsN,EAAM,GAChBrN,KAAMqN,EAAM,GACZ5V,KAAM4V,EAAM,GACZpN,SAAUoN,EAAM,GAAKC,EAAQC,GAGjC,QAAS/Y,KACP,GAAIgZ,GAASvc,EAAQuc,QAAUvc,EAAQwc,QAEvC,KAAKrd,EAAYod,IAAWA,EAAOE,gBAAiB,CAGlD,GAAIC,GAAM,GAAIC,aAAY,EAC1BJ,GAAOE,gBAAgBC,GAGvBA,EAAI,GAAe,KAATA,EAAI,GAAc,MAE5BA,EAAI,GAAe,MAATA,EAAI,GAAe,KAE7B,IAAIE,GAAM,SAASC,GAEjB,IADA,GAAIC,GAAID,EAAIjgB,SAAS,IACdkgB,EAAE7hB,OAAS,GAChB6hB,EAAI,IAAMA,CAEZ,OAAOA,GAGT,OACEF,GAAIF,EAAI,IACRE,EAAIF,EAAI,IACRE,EAAIF,EAAI,IACRE,EAAIF,EAAI,IACRE,EAAIF,EAAI,IACRE,EAAIF,EAAI,IACRE,EAAIF,EAAI,IACRE,EAAIF,EAAI,IAIV,MAAO,mCAAmCnD,QAAQ,QAAS,SAASwD,GAClE,GAAIziB,GAAqB,GAAhB4K,KAAKsS,SAAiB,EAC7BsF,EAAU,MAANC,EAAYziB,EAAS,EAAJA,EAAW,CAClC,OAAOwiB,GAAElgB,SAAS,MAYxB,QAAS4G,GAAiBwZ,GAWxB,IATA,GAOEC,GAPEC,EAAsB,EACxBC,EAAiB,GACjBC,KACAC,EAAS,EACTtB,EAAM,EACNuB,EAAY,MACZC,EAAYD,EAAUriB,OAGjB+hB,GAAQK,IAAWH,IACxBD,EAAUO,EAAoBR,KAMhB,SAAZC,GACCI,EAAS,GAAKtB,EAAMqB,EAAIniB,OAASsiB,EAAYN,EAAQhiB,QAAUkiB,KAKlEC,EAAIpY,KAAKiY,GAETlB,GAAOkB,EAAQhiB,OACf+hB,EAAOA,EAAKS,UAGd,OAAOL,GAAIpT,UAAUkS,KAAKoB,GAS5B,QAASE,GAAoBR,GAC3B,GACEU,GACAC,EACA9Y,EACA+Y,EACAhjB,EALEwiB,IAOJ,KAAKJ,IAASA,EAAK7O,QACjB,MAAO,EAST,IANAiP,EAAIpY,KAAKgY,EAAK7O,QAAQR,eAClBqP,EAAK9c,IACPkd,EAAIpY,KAAK,IAAMgY,EAAK9c,IAGtBwd,EAAYV,EAAKU,UACbA,GAAa7a,EAAS6a,GAExB,IADAC,EAAUD,EAAUvZ,MAAM,OACrBvJ,EAAI,EAAGA,EAAI+iB,EAAQ1iB,OAAQL,IAC9BwiB,EAAIpY,KAAK,IAAM2Y,EAAQ/iB,GAG3B,IAAIijB,IAAiB,OAAQ,OAAQ,QAAS,MAC9C,KAAKjjB,EAAI,EAAGA,EAAIijB,EAAc5iB,OAAQL,IACpCiK,EAAMgZ,EAAcjjB,GACpBgjB,EAAOZ,EAAKc,aAAajZ,GACrB+Y,GACFR,EAAIpY,KAAK,IAAMH,EAAM,KAAO+Y,EAAO,KAGvC,OAAOR,GAAIlB,KAAK,IAMlB,QAAS6B,GAAgBrjB,EAAGsjB,GAC1B,WAAYtjB,IAAMsjB,GAMpB,QAASC,GAAgBvjB,EAAGsjB,GAC1B,MAAO7e,GAAYzE,IAAMyE,EAAY6e,GAMvC,QAASva,GAAgByF,EAAKgV,GAC5B,OAAIH,EAAgB7U,EAAKgV,KAEzBhV,EAAMA,EAAIiM,OAAO,GACjB+I,EAAMA,EAAI/I,OAAO,GAEbjM,EAAImH,OAAS6N,EAAI7N,MAAQnH,EAAIpE,QAAUoZ,EAAIpZ,SAG3CmZ,EAAgB/U,EAAIL,WAAYqV,EAAIrV,aAEjCnF,EAAiBwF,EAAIL,WAAYqV,EAAIrV,cAM9C,QAASnF,GAAiBya,EAAQC,GAChC,GAAIL,EAAgBI,EAAQC,GAAS,OAAO,CAE5C,IAAIC,GAAUF,EAAOrU,OACjBwU,EAAUF,EAAOtU,MAGrB,IAAIuU,EAAQpjB,SAAWqjB,EAAQrjB,OAAQ,OAAO,CAI9C,KAAK,GADDP,GAAGsjB,EACEpjB,EAAI,EAAGA,EAAIyjB,EAAQpjB,OAAQL,IAGlC,GAFAF,EAAI2jB,EAAQzjB,GACZojB,EAAIM,EAAQ1jB,GAEVF,EAAEia,WAAaqJ,EAAErJ,UACjBja,EAAEyZ,SAAW6J,EAAE7J,QACfzZ,EAAEma,QAAUmJ,EAAEnJ,OACdna,EAAE,cAAgBsjB,EAAE,YAEpB,OAAO,CAEX,QAAO,EAUT,QAASpa,GAAKuG,EAAKtO,EAAM0iB,EAAaC,GACpC,GAAW,MAAPrU,EAAJ,CACA,GAAImF,GAAOnF,EAAItO,EACfsO,GAAItO,GAAQ0iB,EAAYjP,GACxBnF,EAAItO,GAAM0L,GAAY,EACtB4C,EAAItO,GAAM6L,EAAW4H,EACjBkP,GACFA,EAAMxZ,MAAMmF,EAAKtO,EAAMyT,KAU3B,QAASnR,GAASsgB,EAAOC,GACvB,IAAK5b,EAAQ2b,GAAQ,MAAO,EAI5B,KAAK,GAFDE,MAEK/jB,EAAI,EAAGA,EAAI6jB,EAAMxjB,OAAQL,IAChC,IACE+jB,EAAO3Z,KAAK4Z,OAAOH,EAAM7jB,KACzB,MAAOT,GACPwkB,EAAO3Z,KAAK,gCAIhB,MAAO2Z,GAAOzC,KAAKwC,GASrB,QAASG,GAAW/Z,GAClB,QAASga,UAAUha,GAAOX,MAAM,SAASlJ,OAG3C,QAAS8jB,GAASja,GAChB,MAAO+Z,GAAW7f,KAAKC,UAAU6F,IAGnC,QAASka,GAAela,GACtB,GAAqB,gBAAVA,GAAoB,CAC7B,GAAIma,GAAY,EAChB,OAAO/b,GAAS4B,EAAOma,GAClB,GACY,gBAAVna,IACU,iBAAVA,IACU,mBAAVA,GAEP,MAAOA,EAGT,IAAIuL,GAAO3T,OAAOC,UAAUC,SAAS5B,KAAK8J,EAG1C,OAAa,oBAATuL,EAAmC,WAC1B,mBAATA,EAAkC,UACzB,sBAATA,EACKvL,EAAMjJ,KAAO,cAAgBiJ,EAAMjJ,KAAO,IAAM,aAElDiJ,EAGT,QAASoa,GAAgBpa,EAAOqa,GAC9B,MAAc,KAAVA,EAAoBH,EAAela,GAEnClC,EAAckC,GACTpI,OAAO4M,KAAKxE,GAAOsa,OAAO,SAASC,EAAKxa,GAE7C,MADAwa,GAAIxa,GAAOqa,EAAgBpa,EAAMD,GAAMsa,EAAQ,GACxCE,OAEA7P,MAAM1M,QAAQgC,GAChBA,EAAMwa,IAAI,SAASC,GACxB,MAAOL,GAAgBK,EAAKJ,EAAQ,KAIjCH,EAAela,GAGxB,QAASf,GAAmB2E,EAAIyW,EAAOK,GACrC,IAAK5c,EAAc8F,GAAK,MAAOA,EAE/ByW,GAAyB,gBAAVA,GAAqBM,EAAgCN,EACpEK,EAA2B,gBAAVL,GAAqBO,EAA+BF,CAErE,IAAIG,GAAaT,EAAgBxW,EAAIyW,EAErC,OAAIJ,GAAS9f,EAAU0gB,IAAeH,EAC7Bzb,EAAmB2E,EAAIyW,EAAQ,GAGjCQ,EAGT,QAAS7b,GAAwBwF,EAAM2V,GACrC,GAAoB,gBAAT3V,IAAqC,gBAATA,GAAmB,MAAOA,GAAK1M,UACtE,KAAK4S,MAAM1M,QAAQwG,GAAO,MAAO,EAKjC,IAHAA,EAAOA,EAAKsW,OAAO,SAAS/a,GAC1B,MAAsB,gBAARA,KAEI,IAAhByE,EAAKrO,OAAc,MAAO,sBAG9B,IADAgkB,EAAiC,gBAAdA,GAAyBY,EAA4BZ,EACpE3V,EAAK,GAAGrO,QAAUgkB,EAAW,MAAO3V,GAAK,EAE7C,KAAK,GAAIwW,GAAWxW,EAAKrO,OAAQ6kB,EAAW,EAAGA,IAAY,CACzD,GAAIH,GAAarW,EAAKtL,MAAM,EAAG8hB,GAAU5D,KAAK,KAC9C,MAAIyD,EAAW1kB,OAASgkB,GACxB,MAAIa,KAAaxW,EAAKrO,OAAe0kB,EAC9BA,EAAa,IAGtB,MAAO,GAGT,QAAS3b,GAASya,EAAOzd,GAcvB,QAAS+e,GAAeC,GACtB,MAAIld,GAAQkd,GACHA,EAAYV,IAAI,SAASC,GAC9B,MAAOQ,GAAeR,KAItB3c,EAAcod,GACTtjB,OAAO4M,KAAK0W,GAAaZ,OAAO,SAASC,EAAKY,GAMnD,MAJEZ,GAAIY,GADFC,EAAexW,KAAKuW,GACbE,EAEAJ,EAAeC,EAAYC,IAE/BZ,OAIJW,EA/BT,IAAKld,EAAQ9B,IAAkB8B,EAAQ9B,IAAyC,IAAxBA,EAAa/F,OACnE,MAAOwjB,EAET,IAEI2B,GAFAF,EAAiB7c,EAAWrC,GAC5Bmf,EAAe,UAGnB,KACEC,EAAYphB,KAAKkM,MAAMjM,EAAUwf,IACjC,MAAO4B,GACP,MAAO5B,GAwBT,MAAOsB,GAAeK,GA5lBxB,GAAInhB,GAAY9D,EAAQ,GAEpB6E,EACgB,mBAAXlG,QACHA,OACkB,mBAAXC,GAAyBA,EAAyB,mBAATC,MAAuBA,QA0dzEylB,EAAgC,EAEhCC,EAA+B,MAC/BG,EAA4B,EA6HhCnmB,GAAOD,SACLkJ,SAAUA,EACVD,QAASA,EACTH,aAAcA,EACdC,WAAYA,EACZC,eAAgBA,EAChBtD,YAAaA,EACbL,WAAYA,EACZ8D,cAAeA,EACfC,SAAUA,EACVC,QAASA,EACTC,cAAeA,EACf6X,mBAAoBA,EACpBE,iBAAkBA,EAClBE,qBAAsBA,EACtBnX,cAAeA,EACfxC,uBAAwBA,EACxB+Z,8BAA+BA,EAC/BE,gBAAiBA,EACjBtY,KAAMA,EACNC,YAAaA,EACbC,SAAUA,EACVC,aAAcA,EACdC,OAAQA,EACRC,WAAYA,EACZC,UAAWA,EACXC,MAAOA,EACPC,iBAAkBA,EAClBga,oBAAqBA,EACrB/Z,gBAAiBA,EACjBC,iBAAkBA,EAClBC,SAAUA,EACVC,KAAMA,EACNzF,SAAUA,EACV4F,mBAAoBA,EACpBD,wBAAyBA,EACzBE,SAAUA,KAGThJ,KAAKf,KAAuB,mBAAXF,QAAyBA,OAAyB,mBAATC,MAAuBA,KAAyB,mBAAXF,QAAyBA,aACxHwgB,EAAI,IAAID,GAAG,SAASlf,EAAQzB,EAAOD,IACtC,SAAWM,GA+BX,QAASumB,KACP,MAAwB,mBAAbjc,WAAiD,MAArBA,SAASpC,SAAyB,GAClEoC,SAASpC,SAASE,KAG3B,QAASoe,KACP,MAAwB,mBAAblc,WAAiD,MAArBA,SAASpC,SAAyB,GAClEoC,SAASpC,SAASue,OArC3B,GAAIjjB,GAAQpC,EAAQ,GAYhBkH,GACF7B,qBAAqB,EACrBgE,OAAO,GAILxE,EACgB,mBAAXlG,QACHA,OACkB,mBAAXC,GAAyBA,EAAyB,mBAATC,MAAuBA,QAGzEymB,KAAYziB,MACZ0iB,EAAmB,IAGnBC,EAAiB,yGAmDrBte,GAASwD,OAAS,WAUhB,QAASC,GAAU8a,GACjBC,IACAC,EAAS9b,KAAK4b,GAOhB,QAASG,GAAYH,GACnB,IAAK,GAAIhmB,GAAIkmB,EAAS7lB,OAAS,EAAGL,GAAK,IAAKA,EACtCkmB,EAASlmB,KAAOgmB,GAClBE,EAASE,OAAOpmB,EAAG,GAQzB,QAASqmB,KACPC,IACAJ,KAOF,QAASK,GAAepY,EAAOqY,GAC7B,GAAIlM,GAAY,IAChB,KAAIkM,GAAkB/e,EAAS7B,oBAA/B,CAGA,IAAK,GAAI5F,KAAKkmB,GACZ,GAAIA,EAASlR,eAAehV,GAC1B,IACEkmB,EAASlmB,GAAG2D,MAAM,MAAOwK,GAAOuK,OAAOmN,EAAOzlB,KAAKiD,UAAW,KAC9D,MAAOojB,GACPnM,EAAYmM,EAKlB,GAAInM,EACF,KAAMA,IAiBV,QAASoM,GAAsBpjB,EAAK2L,EAAK0X,EAAQC,EAAO9Y,GACtD,GAAIK,GAAQ,KAERmM,EAAY3X,EAAMgF,aAAamG,GAAMA,EAAGnM,MAAQmM,EAEhDtL,EAAUG,EAAMgF,aAAarE,GAAOA,EAAId,QAAUc,CAEtD,IAAIujB,EACFpf,EAAS2G,kBAAkB0Y,oCACzBD,EACA5X,EACA0X,EACAnkB,GAEFukB,QACK,IAAIzM,GAAa3X,EAAMmF,QAAQwS,GAMpCnM,EAAQ1G,EAAS2G,kBAAkBkM,GACnCiM,EAAepY,GAAO,OACjB,CACL,GAOI6Y,GAPA3f,GACF4H,IAAKA,EACL+K,KAAM2M,EACNzM,OAAQ0M,GAGN3lB,EAAOsL,MAGX,IAAkC,uBAA3BvK,SAAS5B,KAAKoC,GAAgC,CACnD,GAAIwkB,GAASxkB,EAAQgf,MAAMuE,EACvBiB,KACF/lB,EAAO+lB,EAAO,GACdxkB,EAAUwkB,EAAO,IAIrB3f,EAASiF,KAAOwZ,EAEhB3X,GACElN,KAAMA,EACNuB,QAASA,EACTyM,IAAKyW,IACLvX,OAAQ9G,IAEVkf,EAAepY,GAAO,GAGxB,QAAI8Y,GACKA,EAAmBtjB,MAAMtE,KAAMgE,WAM1C,QAAS4iB,KACHiB,IAGJD,EAAqB7hB,EAAQyZ,QAC7BzZ,EAAQyZ,QAAU6H,EAClBQ,GAA2B,GAG7B,QAASZ,KACFY,IAGL9hB,EAAQyZ,QAAUoI,EAClBC,GAA2B,EAC3BD,EAAqB1a,QAGvB,QAASwa,KACP,GAAII,GAAsBN,EACxBO,EAAYC,CACdA,GAAW,KACXR,EAAqB,KACrB5V,EAAgB,KAChBsV,EAAe5iB,MAAM,MAAOwjB,GAAqB,GAAOzO,OAAO0O,IAUjE,QAASnc,GAAO6C,EAAIwZ,GAClB,GAAInkB,GAAO0iB,EAAOzlB,KAAKiD,UAAW,EAClC,IAAIwjB,EAAoB,CACtB,GAAI5V,IAAkBnD,EACpB,MAEAiZ,KAIJ,GAAI5Y,GAAQ1G,EAAS2G,kBAAkBN,EAevC,IAdA+Y,EAAqB1Y,EACrB8C,EAAgBnD,EAChBuZ,EAAWlkB,EAMXkP,WAAW,WACLpB,IAAkBnD,GACpBiZ,KAED5Y,EAAMoZ,WAAa,IAAO,GAEzBD,KAAY,EACd,KAAMxZ,GA9LV,GA0DImZ,GAAoBC,EA1DpBhB,KACFmB,EAAW,KACXpW,EAAgB,KAChB4V,EAAqB,IAkMvB,OAHA5b,GAAOC,UAAYA,EACnBD,EAAOkb,YAAcA,EACrBlb,EAAO8B,UAAYsZ,EACZpb,KAsDTxD,EAAS2G,kBAAoB,WA4C3B,QAASoZ,GAA+B1Z,GACtC,GAAwB,mBAAbA,GAAGK,OAA0BL,EAAGK,MAA3C,CAiBA,IAAK,GALDsZ,GACAC,EACAC,EAZAtQ,EAAS,0IACTuQ,EAAQ,wHAGRC,EAAQ,6JAERC,EAAY,gDACZC,EAAa,gCACbC,EAAQla,EAAGK,MAAM5E,MAAM,MACvB4E,KAMKnO,GAFO,sBAAsB8Y,KAAKhL,EAAGtL,SAEjC,GAAGoU,EAAIoR,EAAM3nB,OAAQL,EAAI4W,IAAK5W,EAAG,CAC5C,GAAK0nB,EAAQrQ,EAAOyB,KAAKkP,EAAMhoB,IAAM,CACnC,GAAIioB,GAAWP,EAAM,IAAqC,IAA/BA,EAAM,GAAGtR,QAAQ,UACxC8R,EAASR,EAAM,IAAmC,IAA7BA,EAAM,GAAGtR,QAAQ,OACtC8R,KAAWT,EAAWM,EAAWjP,KAAK4O,EAAM,OAE9CA,EAAM,GAAKD,EAAS,GACpBC,EAAM,GAAKD,EAAS,GACpBC,EAAM,GAAKD,EAAS,IAEtBE,GACE1Y,IAAMgZ,EAAsB,KAAXP,EAAM,GACvBpb,KAAMob,EAAM,IAAM5B,EAClB3iB,KAAM8kB,GAAYP,EAAM,OACxB1N,KAAM0N,EAAM,IAAMA,EAAM,GAAK,KAC7BxN,OAAQwN,EAAM,IAAMA,EAAM,GAAK,UAE5B,IAAKA,EAAQE,EAAM9O,KAAKkP,EAAMhoB,IACnC2nB,GACE1Y,IAAKyY,EAAM,GACXpb,KAAMob,EAAM,IAAM5B,EAClB3iB,QACA6W,MAAO0N,EAAM,GACbxN,OAAQwN,EAAM,IAAMA,EAAM,GAAK,UAE5B,CAAA,KAAKA,EAAQG,EAAM/O,KAAKkP,EAAMhoB,KAsBnC,QArBA,IAAIkoB,GAASR,EAAM,IAAMA,EAAM,GAAGtR,QAAQ,aACtC8R,KAAWT,EAAWK,EAAUhP,KAAK4O,EAAM,MAE7CA,EAAM,GAAKD,EAAS,GACpBC,EAAM,GAAKD,EAAS,GACpBC,EAAM,GAAK,MACI,IAAN1nB,GAAY0nB,EAAM,IAAiC,mBAApB5Z,GAAGqa,eAK3Cha,EAAM,GAAG+L,OAASpM,EAAGqa,aAAe,GAEtCR,GACE1Y,IAAKyY,EAAM,GACXpb,KAAMob,EAAM,IAAM5B,EAClB3iB,KAAMukB,EAAM,GAAKA,EAAM,GAAGne,MAAM,QAChCyQ,KAAM0N,EAAM,IAAMA,EAAM,GAAK,KAC7BxN,OAAQwN,EAAM,IAAMA,EAAM,GAAK,MAUnC,IAJKC,EAAQrb,MAAQqb,EAAQ3N,OAC3B2N,EAAQrb,KAAOwZ,GAGb6B,EAAQ1Y,KAAoC,UAA7B0Y,EAAQ1Y,IAAInD,OAAO,EAAG,GAAgB,CAMvD,GAAIpB,GAAM,GAAIwL,eAKd,IAJAxL,EAAIoU,KAAK,MAAO6I,EAAQ1Y,KAAK,GAC7BvE,EAAIsU,KAAK,MAGU,MAAftU,EAAIgM,OAAgB,CACtB,GAAI0K,GAAS1W,EAAI0d,cAAgB,EAIjChH,GAASA,EAAOhe,WAGhB,IAAIilB,GAAajH,EAAOI,MAAM,+BAG9B,IAAI6G,EAAY,CACd,GAAIC,GAAmBD,EAAW,EAIC,OAA/BC,EAAiBC,OAAO,KAC1BD,EAAmB3C,IAAsB2C,EAAiBllB,MAAM,IAKlEukB,EAAQ1Y,IAAMqZ,EAAiBllB,MAAM,QAK3C+K,EAAM/D,KAAKud,GAGb,MAAKxZ,GAAM9N,QAKTY,KAAM6M,EAAG7M,KACTuB,QAASsL,EAAGtL,QACZyM,IAAKyW,IACLvX,MAAOA,GAPA,MAwBX,QAAS2Y,GAAoC1N,EAAWnK,EAAK0X,EAAQnkB,GACnE,GAAIgmB,IACFvZ,IAAKA,EACL+K,KAAM2M,EAGR,IAAI6B,EAAQvZ,KAAOuZ,EAAQxO,KAAM,CAO/B,GANAZ,EAAUmO,YAAa,EAElBiB,EAAQlc,OACXkc,EAAQlc,KAAOwZ,GAGb1M,EAAUjL,MAAM9N,OAAS,GACvB+Y,EAAUjL,MAAM,GAAGc,MAAQuZ,EAAQvZ,IAAK,CAC1C,GAAImK,EAAUjL,MAAM,GAAG6L,OAASwO,EAAQxO,KACtC,OAAO,CACF,KACJZ,EAAUjL,MAAM,GAAG6L,MACpBZ,EAAUjL,MAAM,GAAG7B,OAASkc,EAAQlc,KAGpC,MADA8M,GAAUjL,MAAM,GAAG6L,KAAOwO,EAAQxO,MAC3B,EAOb,MAFAZ,GAAUjL,MAAMsa,QAAQD,GACxBpP,EAAUsP,SAAU,GACb,EAKT,MAHEtP,GAAUmO,YAAa,GAGlB,EAYT,QAASoB,GAAsC7a,EAAIyW,GASjD,IACE,GALAmD,GACAkB,EALEC,EAAe,qEACjB1a,KACA2a,KACAC,GAAY,EAMRC,EAAOL,EAAsCM,OACjDD,IAASD,EACTC,EAAOA,EAAKC,OAEZ,GAAID,IAAS5a,GAAqB4a,IAASvhB,EAASwD,OAApD,CAkBA,GAbA2d,GACE3Z,IAAK,KACL3C,KAAMwZ,EACN9L,KAAM,KACNE,OAAQ,MAGN8O,EAAK/nB,KACP2nB,EAAKtc,KAAO0c,EAAK/nB,MACPymB,EAAQmB,EAAa/P,KAAKkQ,EAAKhnB,eACzC4mB,EAAKtc,KAAOob,EAAM;AAGK,mBAAdkB,GAAKtc,KACd,IACEsc,EAAKtc,KAAOob,EAAM7D,MAAMqF,UAAU,EAAGxB,EAAM7D,MAAMzN,QAAQ,MACzD,MAAO7W,IAGPupB,EAAM,GAAKE,GACbD,GAAY,EAEZD,EAAM,GAAKE,IAAQ,EAGrB7a,EAAM/D,KAAKwe,GAGTrE,GAGFpW,EAAMiY,OAAO,EAAG7B,EAGlB,IAAI5U,IACF1O,KAAM6M,EAAG7M,KACTuB,QAASsL,EAAGtL,QACZyM,IAAKyW,IACLvX,MAAOA,EAQT,OANA2Y,GACEnX,EACA7B,EAAGqb,WAAarb,EAAGsb,SACnBtb,EAAGkM,MAAQlM,EAAGub,WACdvb,EAAGtL,SAAWsL,EAAGwb,aAEZ3Z,EAQT,QAASvB,GAAkBN,EAAIyW,GAC7B,GAAIpW,GAAQ,IACZoW,GAAiB,MAATA,EAAgB,GAAKA,CAE7B,KAEE,GADApW,EAAQqZ,EAA+B1Z,GAErC,MAAOK,GAET,MAAO5O,GACP,GAAIkI,EAASmC,MACX,KAAMrK,GAIV,IAEE,GADA4O,EAAQwa,EAAsC7a,EAAIyW,EAAQ,GAExD,MAAOpW,GAET,MAAO5O,GACP,GAAIkI,EAASmC,MACX,KAAMrK,GAGV,OACE0B,KAAM6M,EAAG7M,KACTuB,QAASsL,EAAGtL,QACZyM,IAAKyW,KAOT,MAHAtX,GAAkB0Y,oCAAsCA,EACxD1Y,EAAkBoZ,+BAAiCA,EAE5CpZ,KAGTtP,EAAOD,QAAU4I,IAEdrH,KAAKf,KAAuB,mBAAXF,QAAyBA,OAAyB,mBAATC,MAAuBA,KAAyB,mBAAXF,QAAyBA,aACxH0E,EAAI,IAAI8b,GAAG,SAASnf,EAAQzB,EAAOD,GAetC,QAASuX,GAAQmT,EAAUC,GACzB,IAAK,GAAIxpB,GAAI,EAAGA,EAAIupB,EAASlpB,SAAUL,EACrC,GAAIupB,EAASvpB,KAAOwpB,EAAQ,MAAOxpB,EAErC,UAGF,QAASqE,GAAUkL,EAAKka,EAAUC,EAAQC,GACxC,MAAOvlB,MAAKC,UAAUkL,EAAKqa,EAAWH,EAAUE,GAAgBD,GAIlE,QAASG,GAAe3f,GACtB,GAAIkL,IAEFjH,MAAOjE,EAAMiE,MACb3L,QAAS0H,EAAM1H,QACfvB,KAAMiJ,EAAMjJ,KAGd,KAAK,GAAIjB,KAAKkK,GACRpI,OAAOC,UAAUiT,eAAe5U,KAAK8J,EAAOlK,KAC9CoV,EAAIpV,GAAKkK,EAAMlK,GAInB,OAAOoV,GAGT,QAASwU,GAAWH,EAAUE,GAC5B,GAAIxb,MACAO,IAWJ,OATqB,OAAjBib,IACFA,EAAgB,SAAS1f,EAAKC,GAC5B,MAAIiE,GAAM,KAAOjE,EACR,eAEF,eAAiBwE,EAAKtL,MAAM,EAAGgT,EAAQjI,EAAOjE,IAAQoX,KAAK,KAAO,MAItE,SAASrX,EAAKC,GACnB,GAAIiE,EAAM9N,OAAS,EAAG,CACpB,GAAIypB,GAAU1T,EAAQjI,EAAO9O,OAC5ByqB,EAAU3b,EAAMiY,OAAO0D,EAAU,GAAK3b,EAAM/D,KAAK/K,OACjDyqB,EAAUpb,EAAK0X,OAAO0D,EAASC,EAAAA,EAAU9f,GAAOyE,EAAKtE,KAAKH,IAEtDmM,EAAQjI,EAAOjE,KAClBA,EAAQyf,EAAcvpB,KAAKf,KAAM4K,EAAKC,QAGxCiE,GAAM/D,KAAKF,EAGb,OAAmB,OAAZuf,EACHvf,YAAiBjK,OAAQ4pB,EAAe3f,GAASA,EACjDuf,EAASrpB,KAAKf,KAAM4K,EAAKC,IA5DjCrL,EAAUC,EAAOD,QAAUwF,EAC3BxF,EAAQmrB,aAAeJ,OA+DjBpK,IAAI,SAASjf,EAAQzB,EAAOD,GAwBlC,QAASorB,GAAQC,EAAG5O,GAClB,GAAI6O,IAAW,MAAJD,IAAmB,MAAJ5O,GACtB8O,GAAOF,GAAK,KAAO5O,GAAK,KAAO6O,GAAO,GAC1C,OAAQC,IAAO,GAAa,MAAND,EAMxB,QAASE,GAAcpI,EAAKqI,GAC1B,MAAQrI,IAAOqI,EAAQrI,IAAS,GAAKqI,EAMvC,QAASC,GAAOC,EAAG1qB,EAAGsjB,EAAG8G,EAAGvqB,EAAGH,GAC7B,MAAOyqB,GAAQI,EAAcJ,EAAQA,EAAQnqB,EAAG0qB,GAAIP,EAAQC,EAAG1qB,IAAKG,GAAIyjB,GAE1E,QAASqH,GAAM3qB,EAAGsjB,EAAGjB,EAAGuI,EAAGR,EAAGvqB,EAAGH,GAC/B,MAAO+qB,GAAQnH,EAAIjB,GAAOiB,EAAIsH,EAAI5qB,EAAGsjB,EAAG8G,EAAGvqB,EAAGH,GAEhD,QAASmrB,GAAM7qB,EAAGsjB,EAAGjB,EAAGuI,EAAGR,EAAGvqB,EAAGH,GAC/B,MAAO+qB,GAAQnH,EAAIsH,EAAMvI,GAAKuI,EAAI5qB,EAAGsjB,EAAG8G,EAAGvqB,EAAGH,GAEhD,QAASorB,GAAM9qB,EAAGsjB,EAAGjB,EAAGuI,EAAGR,EAAGvqB,EAAGH,GAC/B,MAAO+qB,GAAOnH,EAAIjB,EAAIuI,EAAG5qB,EAAGsjB,EAAG8G,EAAGvqB,EAAGH,GAEvC,QAASqrB,GAAM/qB,EAAGsjB,EAAGjB,EAAGuI,EAAGR,EAAGvqB,EAAGH,GAC/B,MAAO+qB,GAAOpI,GAAKiB,GAAKsH,GAAI5qB,EAAGsjB,EAAG8G,EAAGvqB,EAAGH,GAM1C,QAASsrB,GAAQZ,EAAG/I,GAElB+I,EAAE/I,GAAO,IAAM,KAASA,EAAM,GAC9B+I,GAAK/I,EAAM,KAAQ,GAAM,GAAK,IAAMA,CAEpC,IAAInhB,GACA+qB,EACAC,EACAC,EACAC,EACAprB,EAAI,WACJsjB,aACAjB,cACAuI,EAAI,SAER,KAAK1qB,EAAI,EAAGA,EAAIkqB,EAAE7pB,OAAQL,GAAK,GAC7B+qB,EAAOjrB,EACPkrB,EAAO5H,EACP6H,EAAO9I,EACP+I,EAAOR,EAEP5qB,EAAI2qB,EAAM3qB,EAAGsjB,EAAGjB,EAAGuI,EAAGR,EAAElqB,GAAI,cAC5B0qB,EAAID,EAAMC,EAAG5qB,EAAGsjB,EAAGjB,EAAG+H,EAAElqB,EAAI,GAAI,eAChCmiB,EAAIsI,EAAMtI,EAAGuI,EAAG5qB,EAAGsjB,EAAG8G,EAAElqB,EAAI,GAAI,GAAI,WACpCojB,EAAIqH,EAAMrH,EAAGjB,EAAGuI,EAAG5qB,EAAGoqB,EAAElqB,EAAI,GAAI,gBAChCF,EAAI2qB,EAAM3qB,EAAGsjB,EAAGjB,EAAGuI,EAAGR,EAAElqB,EAAI,GAAI,cAChC0qB,EAAID,EAAMC,EAAG5qB,EAAGsjB,EAAGjB,EAAG+H,EAAElqB,EAAI,GAAI,GAAI,YACpCmiB,EAAIsI,EAAMtI,EAAGuI,EAAG5qB,EAAGsjB,EAAG8G,EAAElqB,EAAI,GAAI,gBAChCojB,EAAIqH,EAAMrH,EAAGjB,EAAGuI,EAAG5qB,EAAGoqB,EAAElqB,EAAI,GAAI,cAChCF,EAAI2qB,EAAM3qB,EAAGsjB,EAAGjB,EAAGuI,EAAGR,EAAElqB,EAAI,GAAI,EAAG,YACnC0qB,EAAID,EAAMC,EAAG5qB,EAAGsjB,EAAGjB,EAAG+H,EAAElqB,EAAI,GAAI,gBAChCmiB,EAAIsI,EAAMtI,EAAGuI,EAAG5qB,EAAGsjB,EAAG8G,EAAElqB,EAAI,IAAK,WACjCojB,EAAIqH,EAAMrH,EAAGjB,EAAGuI,EAAG5qB,EAAGoqB,EAAElqB,EAAI,IAAK,gBACjCF,EAAI2qB,EAAM3qB,EAAGsjB,EAAGjB,EAAGuI,EAAGR,EAAElqB,EAAI,IAAK,EAAG,YACpC0qB,EAAID,EAAMC,EAAG5qB,EAAGsjB,EAAGjB,EAAG+H,EAAElqB,EAAI,IAAK,cACjCmiB,EAAIsI,EAAMtI,EAAGuI,EAAG5qB,EAAGsjB,EAAG8G,EAAElqB,EAAI,IAAK,gBACjCojB,EAAIqH,EAAMrH,EAAGjB,EAAGuI,EAAG5qB,EAAGoqB,EAAElqB,EAAI,IAAK,GAAI,YAErCF,EAAI6qB,EAAM7qB,EAAGsjB,EAAGjB,EAAGuI,EAAGR,EAAElqB,EAAI,GAAI,cAChC0qB,EAAIC,EAAMD,EAAG5qB,EAAGsjB,EAAGjB,EAAG+H,EAAElqB,EAAI,GAAI,eAChCmiB,EAAIwI,EAAMxI,EAAGuI,EAAG5qB,EAAGsjB,EAAG8G,EAAElqB,EAAI,IAAK,GAAI,WACrCojB,EAAIuH,EAAMvH,EAAGjB,EAAGuI,EAAG5qB,EAAGoqB,EAAElqB,GAAI,eAC5BF,EAAI6qB,EAAM7qB,EAAGsjB,EAAGjB,EAAGuI,EAAGR,EAAElqB,EAAI,GAAI,cAChC0qB,EAAIC,EAAMD,EAAG5qB,EAAGsjB,EAAGjB,EAAG+H,EAAElqB,EAAI,IAAK,EAAG,UACpCmiB,EAAIwI,EAAMxI,EAAGuI,EAAG5qB,EAAGsjB,EAAG8G,EAAElqB,EAAI,IAAK,eACjCojB,EAAIuH,EAAMvH,EAAGjB,EAAGuI,EAAG5qB,EAAGoqB,EAAElqB,EAAI,GAAI,eAChCF,EAAI6qB,EAAM7qB,EAAGsjB,EAAGjB,EAAGuI,EAAGR,EAAElqB,EAAI,GAAI,EAAG,WACnC0qB,EAAIC,EAAMD,EAAG5qB,EAAGsjB,EAAGjB,EAAG+H,EAAElqB,EAAI,IAAK,eACjCmiB,EAAIwI,EAAMxI,EAAGuI,EAAG5qB,EAAGsjB,EAAG8G,EAAElqB,EAAI,GAAI,eAChCojB,EAAIuH,EAAMvH,EAAGjB,EAAGuI,EAAG5qB,EAAGoqB,EAAElqB,EAAI,GAAI,GAAI,YACpCF,EAAI6qB,EAAM7qB,EAAGsjB,EAAGjB,EAAGuI,EAAGR,EAAElqB,EAAI,IAAK,eACjC0qB,EAAIC,EAAMD,EAAG5qB,EAAGsjB,EAAGjB,EAAG+H,EAAElqB,EAAI,GAAI,aAChCmiB,EAAIwI,EAAMxI,EAAGuI,EAAG5qB,EAAGsjB,EAAG8G,EAAElqB,EAAI,GAAI,GAAI,YACpCojB,EAAIuH,EAAMvH,EAAGjB,EAAGuI,EAAG5qB,EAAGoqB,EAAElqB,EAAI,IAAK,gBAEjCF,EAAI8qB,EAAM9qB,EAAGsjB,EAAGjB,EAAGuI,EAAGR,EAAElqB,EAAI,GAAI,WAChC0qB,EAAIE,EAAMF,EAAG5qB,EAAGsjB,EAAGjB,EAAG+H,EAAElqB,EAAI,GAAI,gBAChCmiB,EAAIyI,EAAMzI,EAAGuI,EAAG5qB,EAAGsjB,EAAG8G,EAAElqB,EAAI,IAAK,GAAI,YACrCojB,EAAIwH,EAAMxH,EAAGjB,EAAGuI,EAAG5qB,EAAGoqB,EAAElqB,EAAI,IAAK,cACjCF,EAAI8qB,EAAM9qB,EAAGsjB,EAAGjB,EAAGuI,EAAGR,EAAElqB,EAAI,GAAI,eAChC0qB,EAAIE,EAAMF,EAAG5qB,EAAGsjB,EAAGjB,EAAG+H,EAAElqB,EAAI,GAAI,GAAI,YACpCmiB,EAAIyI,EAAMzI,EAAGuI,EAAG5qB,EAAGsjB,EAAG8G,EAAElqB,EAAI,GAAI,eAChCojB,EAAIwH,EAAMxH,EAAGjB,EAAGuI,EAAG5qB,EAAGoqB,EAAElqB,EAAI,IAAK,gBACjCF,EAAI8qB,EAAM9qB,EAAGsjB,EAAGjB,EAAGuI,EAAGR,EAAElqB,EAAI,IAAK,EAAG,WACpC0qB,EAAIE,EAAMF,EAAG5qB,EAAGsjB,EAAGjB,EAAG+H,EAAElqB,GAAI,eAC5BmiB,EAAIyI,EAAMzI,EAAGuI,EAAG5qB,EAAGsjB,EAAG8G,EAAElqB,EAAI,GAAI,eAChCojB,EAAIwH,EAAMxH,EAAGjB,EAAGuI,EAAG5qB,EAAGoqB,EAAElqB,EAAI,GAAI,GAAI,UACpCF,EAAI8qB,EAAM9qB,EAAGsjB,EAAGjB,EAAGuI,EAAGR,EAAElqB,EAAI,GAAI,cAChC0qB,EAAIE,EAAMF,EAAG5qB,EAAGsjB,EAAGjB,EAAG+H,EAAElqB,EAAI,IAAK,eACjCmiB,EAAIyI,EAAMzI,EAAGuI,EAAG5qB,EAAGsjB,EAAG8G,EAAElqB,EAAI,IAAK,GAAI,WACrCojB,EAAIwH,EAAMxH,EAAGjB,EAAGuI,EAAG5qB,EAAGoqB,EAAElqB,EAAI,GAAI,eAEhCF,EAAI+qB,EAAM/qB,EAAGsjB,EAAGjB,EAAGuI,EAAGR,EAAElqB,GAAI,cAC5B0qB,EAAIG,EAAMH,EAAG5qB,EAAGsjB,EAAGjB,EAAG+H,EAAElqB,EAAI,GAAI,GAAI,YACpCmiB,EAAI0I,EAAM1I,EAAGuI,EAAG5qB,EAAGsjB,EAAG8G,EAAElqB,EAAI,IAAK,gBACjCojB,EAAIyH,EAAMzH,EAAGjB,EAAGuI,EAAG5qB,EAAGoqB,EAAElqB,EAAI,GAAI,cAChCF,EAAI+qB,EAAM/qB,EAAGsjB,EAAGjB,EAAGuI,EAAGR,EAAElqB,EAAI,IAAK,EAAG,YACpC0qB,EAAIG,EAAMH,EAAG5qB,EAAGsjB,EAAGjB,EAAG+H,EAAElqB,EAAI,GAAI,gBAChCmiB,EAAI0I,EAAM1I,EAAGuI,EAAG5qB,EAAGsjB,EAAG8G,EAAElqB,EAAI,IAAK,aACjCojB,EAAIyH,EAAMzH,EAAGjB,EAAGuI,EAAG5qB,EAAGoqB,EAAElqB,EAAI,GAAI,gBAChCF,EAAI+qB,EAAM/qB,EAAGsjB,EAAGjB,EAAGuI,EAAGR,EAAElqB,EAAI,GAAI,EAAG,YACnC0qB,EAAIG,EAAMH,EAAG5qB,EAAGsjB,EAAGjB,EAAG+H,EAAElqB,EAAI,IAAK,cACjCmiB,EAAI0I,EAAM1I,EAAGuI,EAAG5qB,EAAGsjB,EAAG8G,EAAElqB,EAAI,GAAI,gBAChCojB,EAAIyH,EAAMzH,EAAGjB,EAAGuI,EAAG5qB,EAAGoqB,EAAElqB,EAAI,IAAK,GAAI,YACrCF,EAAI+qB,EAAM/qB,EAAGsjB,EAAGjB,EAAGuI,EAAGR,EAAElqB,EAAI,GAAI,cAChC0qB,EAAIG,EAAMH,EAAG5qB,EAAGsjB,EAAGjB,EAAG+H,EAAElqB,EAAI,IAAK,gBACjCmiB,EAAI0I,EAAM1I,EAAGuI,EAAG5qB,EAAGsjB,EAAG8G,EAAElqB,EAAI,GAAI,GAAI,WACpCojB,EAAIyH,EAAMzH,EAAGjB,EAAGuI,EAAG5qB,EAAGoqB,EAAElqB,EAAI,GAAI,eAEhCF,EAAImqB,EAAQnqB,EAAGirB,GACf3H,EAAI6G,EAAQ7G,EAAG4H,GACf7I,EAAI8H,EAAQ9H,EAAG8I,GACfP,EAAIT,EAAQS,EAAGQ,EAEjB,QAAQprB,EAAGsjB,EAAGjB,EAAGuI,GAMnB,QAASS,GAAUtH,GACjB,GAAI7jB,GACA+jB,EAAS,GACTqH,EAA0B,GAAfvH,EAAMxjB,MACrB,KAAKL,EAAI,EAAGA,EAAIorB,EAAUprB,GAAK,EAC7B+jB,GAAUC,OAAOqH,aAAcxH,EAAM7jB,GAAK,KAAQA,EAAI,GAAO,IAE/D,OAAO+jB,GAOT,QAASuH,GAAUzH,GACjB,GAAI7jB,GACA+jB,IAEJ,KADAA,GAAQF,EAAMxjB,QAAU,GAAK,GAAKkM,OAC7BvM,EAAI,EAAGA,EAAI+jB,EAAO1jB,OAAQL,GAAK,EAClC+jB,EAAO/jB,GAAK,CAEd,IAAIurB,GAAyB,EAAf1H,EAAMxjB,MACpB,KAAKL,EAAI,EAAGA,EAAIurB,EAASvrB,GAAK,EAC5B+jB,EAAO/jB,GAAK,KAAiC,IAA1B6jB,EAAM2H,WAAWxrB,EAAI,KAAeA,EAAI,EAE7D,OAAO+jB,GAMT,QAAS0H,GAAQ9rB,GACf,MAAOwrB,GAAUL,EAAQQ,EAAU3rB,GAAe,EAAXA,EAAEU,SAM3C,QAASqrB,GAAYzhB,EAAKzG,GACxB,GAAIxD,GAIAkf,EAHAyM,EAAOL,EAAUrhB,GACjB2hB,KACAC,IAMJ,KAJAD,EAAK,IAAMC,EAAK,IAAMtf,OAClBof,EAAKtrB,OAAS,KAChBsrB,EAAOb,EAAQa,EAAmB,EAAb1hB,EAAI5J,SAEtBL,EAAI,EAAGA,EAAI,GAAIA,GAAK,EACvB4rB,EAAK5rB,GAAe,UAAV2rB,EAAK3rB,GACf6rB,EAAK7rB,GAAe,WAAV2rB,EAAK3rB,EAGjB,OADAkf,GAAO4L,EAAQc,EAAKlT,OAAO4S,EAAU9nB,IAAQ,IAAoB,EAAdA,EAAKnD,QACjD8qB,EAAUL,EAAQe,EAAKnT,OAAOwG,GAAO,MAM9C,QAAS4M,GAASjI,GAChB,GAEIqG,GACAlqB,EAHA+rB,EAAS,mBACThI,EAAS,EAGb,KAAK/jB,EAAI,EAAGA,EAAI6jB,EAAMxjB,OAAQL,GAAK,EACjCkqB,EAAIrG,EAAM2H,WAAWxrB,GACrB+jB,GAAUgI,EAAOxD,OAAQ2B,IAAM,EAAK,IAAQ6B,EAAOxD,OAAW,GAAJ2B,EAE5D,OAAOnG,GAMT,QAASiI,GAAanI,GACpB,MAAOoI,UAASxa,mBAAmBoS,IAMrC,QAASqI,GAAOvsB,GACd,MAAO8rB,GAAQO,EAAarsB,IAE9B,QAASwsB,GAAOxsB,GACd,MAAOmsB,GAASI,EAAOvsB,IAEzB,QAASysB,GAAW/G,EAAGqF,GACrB,MAAOgB,GAAYM,EAAa3G,GAAI2G,EAAatB,IAEnD,QAAS2B,GAAWhH,EAAGqF,GACrB,MAAOoB,GAASM,EAAW/G,EAAGqF,IAGhC,QAAShjB,GAAI4kB,EAAQriB,EAAKsiB,GACxB,MAAKtiB,GAMAsiB,EAGEH,EAAWniB,EAAKqiB,GAFdD,EAAWpiB,EAAKqiB,GANlBC,EAGEL,EAAOI,GAFLH,EAAOG,GAUpBxtB,EAAOD,QAAU6I,YAEN,EAAE,EAAE,IAAI","file":"raven.min.js"} \ No newline at end of file diff --git a/dist/require/raven.js b/dist/require/raven.js index 937bcfc41588..d53daf356439 100644 --- a/dist/require/raven.js +++ b/dist/require/raven.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.24.2 (540f32b) | github.com/getsentry/raven-js */ +/*! Raven.js 3.25.0 (80dffad) | github.com/getsentry/raven-js */ /* * Includes TraceKit @@ -91,10 +91,12 @@ var md5 = _dereq_(9); var RavenConfigError = _dereq_(2); var utils = _dereq_(6); +var isErrorEvent = utils.isErrorEvent; +var isDOMError = utils.isDOMError; +var isDOMException = utils.isDOMException; var isError = utils.isError; var isObject = utils.isObject; var isPlainObject = utils.isPlainObject; -var isErrorEvent = utils.isErrorEvent; var isUndefined = utils.isUndefined; var isFunction = utils.isFunction; var isString = utils.isString; @@ -222,7 +224,7 @@ Raven.prototype = { // webpack (using a build step causes webpack #1617). Grunt verifies that // this value matches package.json during build. // See: https://github.com/getsentry/raven-js/issues/465 - VERSION: '3.24.2', + VERSION: '3.25.0', debug: false, @@ -554,6 +556,23 @@ Raven.prototype = { if (isErrorEvent(ex) && ex.error) { // If it is an ErrorEvent with `error` property, extract it to get actual Error ex = ex.error; + } else if (isDOMError(ex) || isDOMException(ex)) { + // If it is a DOMError or DOMException (which are legacy APIs, but still supported in some browsers) + // then we just extract the name and message, as they don't provide anything else + // https://developer.mozilla.org/en-US/docs/Web/API/DOMError + // https://developer.mozilla.org/en-US/docs/Web/API/DOMException + var name = ex.name || (isDOMError(ex) ? 'DOMError' : 'DOMException'); + var message = ex.message ? name + ': ' + ex.message : name; + + return this.captureMessage( + message, + objectMerge(options, { + // neither DOMError or DOMException provide stack trace and we most likely wont get it this way as well + // but it's barely any overhead so we may at least try + stacktrace: true, + trimHeadFrames: options.trimHeadFrames + 1 + }) + ); } else if (isError(ex)) { // we have a real Error object ex = ex; @@ -565,6 +584,7 @@ Raven.prototype = { ex = new Error(options.message); } else { // If none of previous checks were valid, then it means that + // it's not a DOMError/DOMException // it's not a plain Object // it's not a valid ErrorEvent (one with an error property) // it's not an Error @@ -2337,7 +2357,7 @@ function isObject(what) { // Yanked from https://git.io/vS8DV re-used under CC0 // with some tiny modifications function isError(value) { - switch ({}.toString.call(value)) { + switch (Object.prototype.toString.call(value)) { case '[object Error]': return true; case '[object Exception]': @@ -2350,7 +2370,15 @@ function isError(value) { } function isErrorEvent(value) { - return supportsErrorEvent() && {}.toString.call(value) === '[object ErrorEvent]'; + return Object.prototype.toString.call(value) === '[object ErrorEvent]'; +} + +function isDOMError(value) { + return Object.prototype.toString.call(value) === '[object DOMError]'; +} + +function isDOMException(value) { + return Object.prototype.toString.call(value) === '[object DOMException]'; } function isUndefined(what) { @@ -2393,6 +2421,24 @@ function supportsErrorEvent() { } } +function supportsDOMError() { + try { + new DOMError(''); // eslint-disable-line no-new + return true; + } catch (e) { + return false; + } +} + +function supportsDOMException() { + try { + new DOMException(''); // eslint-disable-line no-new + return true; + } catch (e) { + return false; + } +} + function supportsFetch() { if (!('fetch' in _window)) return false; @@ -2908,6 +2954,8 @@ module.exports = { isObject: isObject, isError: isError, isErrorEvent: isErrorEvent, + isDOMError: isDOMError, + isDOMException: isDOMException, isUndefined: isUndefined, isFunction: isFunction, isPlainObject: isPlainObject, @@ -2915,6 +2963,8 @@ module.exports = { isArray: isArray, isEmptyObject: isEmptyObject, supportsErrorEvent: supportsErrorEvent, + supportsDOMError: supportsDOMError, + supportsDOMException: supportsDOMException, supportsFetch: supportsFetch, supportsReferrerPolicy: supportsReferrerPolicy, supportsPromiseRejectionEvent: supportsPromiseRejectionEvent, @@ -2974,10 +3024,14 @@ var ERROR_TYPES_RE = /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Ran function getLocationHref() { if (typeof document === 'undefined' || document.location == null) return ''; - return document.location.href; } +function getLocationOrigin() { + if (typeof document === 'undefined' || document.location == null) return ''; + return document.location.origin; +} + /** * TraceKit.report: cross-browser processing of unhandled exceptions * @@ -3385,6 +3439,44 @@ TraceKit.computeStackTrace = (function computeStackTraceWrapper() { element.func = UNKNOWN_FUNCTION; } + if (element.url && element.url.substr(0, 5) === 'blob:') { + // Special case for handling JavaScript loaded into a blob. + // We use a synchronous AJAX request here as a blob is already in + // memory - it's not making a network request. This will generate a warning + // in the browser console, but there has already been an error so that's not + // that much of an issue. + var xhr = new XMLHttpRequest(); + xhr.open('GET', element.url, false); + xhr.send(null); + + // If we failed to download the source, skip this patch + if (xhr.status === 200) { + var source = xhr.responseText || ''; + + // We trim the source down to the last 300 characters as sourceMappingURL is always at the end of the file. + // Why 300? To be in line with: https://github.com/getsentry/sentry/blob/4af29e8f2350e20c28a6933354e4f42437b4ba42/src/sentry/lang/javascript/processor.py#L164-L175 + source = source.slice(-300); + + // Now we dig out the source map URL + var sourceMaps = source.match(/\/\/# sourceMappingURL=(.*)$/); + + // If we don't find a source map comment or we find more than one, continue on to the next element. + if (sourceMaps) { + var sourceMapAddress = sourceMaps[1]; + + // Now we check to see if it's a relative URL. + // If it is, convert it to an absolute one. + if (sourceMapAddress.charAt(0) === '~') { + sourceMapAddress = getLocationOrigin() + sourceMapAddress.slice(1); + } + + // Now we strip the '.map' off of the end of the URL and update the + // element so that Sentry can match the map to the blob. + element.url = sourceMapAddress.slice(0, -4); + } + } + } + stack.push(element); } diff --git a/dist/require/raven.min.js b/dist/require/raven.min.js index 395fc09f100d..3b00efd4c78f 100644 --- a/dist/require/raven.min.js +++ b/dist/require/raven.min.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.24.2 (540f32b) | github.com/getsentry/raven-js */ -!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.Raven=a()}}(function(){var a;return function b(a,c,d){function e(g,h){if(!c[g]){if(!a[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};a[g][0].call(k.exports,function(b){var c=a[g][1][b];return e(c?c:b)},k,k.exports,b,a,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;gthis.k.maxBreadcrumbs&&this.u.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.r.push([a,b]),this.n&&this.F(),this},setUserContext:function(a){return this.j.user=a,this},setExtraContext:function(a){return this.Z("extra",a),this},setTagsContext:function(a){return this.Z("tags",a),this},clearContext:function(){return this.j={},this},getContext:function(){return JSON.parse(h(this.j))},setEnvironment:function(a){return this.k.environment=a,this},setRelease:function(a){return this.k.release=a,this},setDataCallback:function(a){var b=this.k.dataCallback;return this.k.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.k.breadcrumbCallback;return this.k.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.k.shouldSendCallback;return this.k.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.k.transport=a,this},lastException:function(){return this.d},lastEventId:function(){return this.f},isSetup:function(){return!!this.a&&(!!this.g||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.z("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=P.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(Q){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.H;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.j.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.J(this.G(c)),h=Q.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(Q.head||Q.body).appendChild(h)}},L:function(){var a=this;this.m+=1,setTimeout(function(){a.m-=1})},$:function(a,b){var c,d;if(this.b){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),Q.createEvent?(c=Q.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=Q.createEventObject(),c.eventType=a);for(d in b)y(b,d)&&(c[d]=b[d]);if(Q.createEvent)Q.dispatchEvent(c);else try{Q.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},_:function(a){var b=this;return function(c){if(b.aa=null,b.v!==c){b.v=c;var d;try{d=C(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ba:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.aa;g||a._("input")(c),clearTimeout(g),a.aa=setTimeout(function(){a.aa=null},b)}}},ca:function(a,b){var c=F(this.w.href),d=F(b),e=F(a);this.x=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},C:function(){var a=this;a.da=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.M?a.da.apply(this.O,arguments):a.da.apply(this,arguments)}},Q:function(){this.da&&(Function.prototype.toString=this.da)},D:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.ca(b.x,c+""),a.apply(this,arguments)}};G(history,"pushState",j,d),G(history,"replaceState",j,d)}if(c.console&&"console"in P&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};u(["debug","info","warn","error","log"],function(a,b){M(console,b,k)})}},R:function(){for(var a;this.t.length;){a=this.t.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},S:function(){for(var a in this.q)this.p[a]=this.q[a]},F:function(){var a=this;u(this.r,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},G:function(a){var b=O.exec(a),c={},d=7;try{for(;d--;)c[N[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.k.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},J:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},A:function(){this.m||this.V.apply(this,arguments)},V:function(a,b){var c=this.X(a,b);this.$("handle",{stackInfo:a,options:b}),this.fa(a.name,a.message,a.url,a.lineno,c,b)},X:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(u(a.stack,function(b,e){var f=c.ga(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.u,0)}),this.j.user&&(a.user=this.j.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),a=this.pa(a),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||t(a[b]))&&delete a[b]}),q(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!t(a)&&(!q(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.ma()?void this.z("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function B(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&j(b))for(c=b.split(/\s+/),f=0;fc?M(a,b-1):d}function N(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?T:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function O(a,b){function c(a){return k(a)?a.map(function(a){return c(a)}):i(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!k(b)||k(b)&&0===b.length)return a;var d,e=w(b),f="********";try{d=JSON.parse(P(a))}catch(g){return a}return c(d)}var P=a(8),Q="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},R=3,S=51200,T=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isUndefined:g,isFunction:h,isPlainObject:i,isString:j,isArray:k,isEmptyObject:l,supportsErrorEvent:m,supportsFetch:n,supportsReferrerPolicy:o,supportsPromiseRejectionEvent:p,wrappedCallback:q,each:r,objectMerge:s,truncate:u,objectFrozen:t,hasKey:v,joinRegExp:w,urlencode:x,uuid4:z,htmlTreeAsString:A,htmlElementAsString:B,isSameException:E,isSameStacktrace:F,parseUrl:y,fill:G,safeJoin:H,serializeException:M,serializeKeysForMessage:N,sanitize:O}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{8:8}],7:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}var e=a(6),f={collectWindowErrors:!0,debug:!1},g="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},h=[].slice,i="?",j=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;f.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function k(a,b){var c=null;if(!b||f.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(h.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,g,h){var l=null,m=e.isErrorEvent(h)?h.error:h,n=e.isErrorEvent(a)?a.message:a;if(v)f.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&e.isError(m))l=f.computeStackTrace(m),k(l,!0);else{var p,r={url:b,line:c,column:g},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(j);p&&(s=p[1],n=p[2])}r.func=i,l={name:s,message:n,url:d(),stack:[r]},k(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=g.onerror,g.onerror=l,r=!0)}function n(){r&&(g.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,k.apply(null,[a,!1].concat(b))}function p(a,b){var c=h.call(arguments,1);if(v){if(u===a)return;o()}var d=f.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),f.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,e,f=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,g=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,h=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,j=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,k=/\((\S*)(?::(\d+))(?::(\d+))\)/,l=a.stack.split("\n"),m=[],n=(/^(.*) is undefined$/.exec(a.message),0),o=l.length;n eval")>-1;q&&(b=j.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==n||c[5]||"undefined"==typeof a.columnNumber||(m[0].column=a.columnNumber+1),e={url:c[3],func:c[1]||i,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}!e.func&&e.line&&(e.func=i),m.push(e)}return m.length?{name:a.name,message:a.message,url:d(),stack:m}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=i),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,g){for(var h,j,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==e&&o!==f.report){if(j={url:null,func:i,line:null,column:null},o.name?j.func=o.name:(h=k.exec(o.toString()))&&(j.func=h[1]),"undefined"==typeof j.func)try{j.func=h.input.substring(0,h.input.indexOf("{"))}catch(p){}m[""+o]?n=!0:m[""+o]=!0,l.push(j)}g&&l.splice(0,g);var q={name:a.name,message:a.message,url:d(),stack:l};return b(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),q}function e(b,e){var g=null;e=null==e?0:+e;try{if(g=a(b))return g}catch(h){if(f.debug)throw h}try{if(g=c(b,e+1))return g}catch(h){if(f.debug)throw h}return{name:b.name,message:b.message,url:d()}}return e.augmentStackTraceWithInitialElement=b,e.computeStackTraceFromStackProp=a,e}(),b.exports=f}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{6:6}],8:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}],9:[function(a,b,c){function d(a,b){var c=(65535&a)+(65535&b),d=(a>>16)+(b>>16)+(c>>16);return d<<16|65535&c}function e(a,b){return a<>>32-b}function f(a,b,c,f,g,h){return d(e(d(d(b,a),d(f,h)),g),c); -}function g(a,b,c,d,e,g,h){return f(b&c|~b&d,a,b,e,g,h)}function h(a,b,c,d,e,g,h){return f(b&d|c&~d,a,b,e,g,h)}function i(a,b,c,d,e,g,h){return f(b^c^d,a,b,e,g,h)}function j(a,b,c,d,e,g,h){return f(c^(b|~d),a,b,e,g,h)}function k(a,b){a[b>>5]|=128<>>9<<4)+14]=b;var c,e,f,k,l,m=1732584193,n=-271733879,o=-1732584194,p=271733878;for(c=0;c>5]>>>b%32&255);return c}function m(a){var b,c=[];for(c[(a.length>>2)-1]=void 0,b=0;b>5]|=(255&a.charCodeAt(b/8))<16&&(e=k(e,8*a.length)),c=0;c<16;c+=1)f[c]=909522486^e[c],g[c]=1549556828^e[c];return d=k(f.concat(m(b)),512+8*b.length),l(k(g.concat(d),640))}function p(a){var b,c,d="0123456789abcdef",e="";for(c=0;c>>4&15)+d.charAt(15&b);return e}function q(a){return unescape(encodeURIComponent(a))}function r(a){return n(q(a))}function s(a){return p(r(a))}function t(a,b){return o(q(a),q(b))}function u(a,b){return p(t(a,b))}function v(a,b,c){return b?c?t(b,a):u(b,a):c?r(a):s(a)}b.exports=v},{}]},{},[5,1])(5)}); +/*! Raven.js 3.25.0 (80dffad) | github.com/getsentry/raven-js */ +!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.Raven=a()}}(function(){var a;return function b(a,c,d){function e(g,h){if(!c[g]){if(!a[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};a[g][0].call(k.exports,function(b){var c=a[g][1][b];return e(c?c:b)},k,k.exports,b,a,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;gthis.k.maxBreadcrumbs&&this.u.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.r.push([a,b]),this.n&&this.F(),this},setUserContext:function(a){return this.j.user=a,this},setExtraContext:function(a){return this.Z("extra",a),this},setTagsContext:function(a){return this.Z("tags",a),this},clearContext:function(){return this.j={},this},getContext:function(){return JSON.parse(h(this.j))},setEnvironment:function(a){return this.k.environment=a,this},setRelease:function(a){return this.k.release=a,this},setDataCallback:function(a){var b=this.k.dataCallback;return this.k.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.k.breadcrumbCallback;return this.k.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.k.shouldSendCallback;return this.k.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.k.transport=a,this},lastException:function(){return this.d},lastEventId:function(){return this.f},isSetup:function(){return!!this.a&&(!!this.g||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.z("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=R.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(S){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.H;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.j.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.J(this.G(c)),h=S.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(S.head||S.body).appendChild(h)}},L:function(){var a=this;this.m+=1,setTimeout(function(){a.m-=1})},$:function(a,b){var c,d;if(this.b){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),S.createEvent?(c=S.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=S.createEventObject(),c.eventType=a);for(d in b)A(b,d)&&(c[d]=b[d]);if(S.createEvent)S.dispatchEvent(c);else try{S.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},_:function(a){var b=this;return function(c){if(b.aa=null,b.v!==c){b.v=c;var d;try{d=E(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ba:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.aa;g||a._("input")(c),clearTimeout(g),a.aa=setTimeout(function(){a.aa=null},b)}}},ca:function(a,b){var c=H(this.w.href),d=H(b),e=H(a);this.x=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},C:function(){var a=this;a.da=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.M?a.da.apply(this.O,arguments):a.da.apply(this,arguments)}},Q:function(){this.da&&(Function.prototype.toString=this.da)},D:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.ca(b.x,c+""),a.apply(this,arguments)}};I(history,"pushState",j,d),I(history,"replaceState",j,d)}if(c.console&&"console"in R&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};w(["debug","info","warn","error","log"],function(a,b){O(console,b,k)})}},R:function(){for(var a;this.t.length;){a=this.t.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},S:function(){for(var a in this.q)this.p[a]=this.q[a]},F:function(){var a=this;w(this.r,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},G:function(a){var b=Q.exec(a),c={},d=7;try{for(;d--;)c[P[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.k.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},J:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},A:function(){this.m||this.V.apply(this,arguments)},V:function(a,b){var c=this.X(a,b);this.$("handle",{stackInfo:a,options:b}),this.fa(a.name,a.message,a.url,a.lineno,c,b)},X:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(w(a.stack,function(b,e){var f=c.ga(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.u,0)}),this.j.user&&(a.user=this.j.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),a=this.pa(a),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||v(a[b]))&&delete a[b]}),s(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!v(a)&&(!s(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.ma()?void this.z("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function F(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&l(b))for(c=b.split(/\s+/),f=0;fc?Q(a,b-1):d}function R(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?X:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function S(a,b){function c(a){return m(a)?a.map(function(a){return c(a)}):k(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!m(b)||m(b)&&0===b.length)return a;var d,e=A(b),f="********";try{d=JSON.parse(T(a))}catch(g){return a}return c(d)}var T=a(8),U="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},V=3,W=51200,X=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isDOMError:g,isDOMException:h,isUndefined:i,isFunction:j,isPlainObject:k,isString:l,isArray:m,isEmptyObject:n,supportsErrorEvent:o,supportsDOMError:p,supportsDOMException:q,supportsFetch:r,supportsReferrerPolicy:s,supportsPromiseRejectionEvent:t,wrappedCallback:u,each:v,objectMerge:w,truncate:y,objectFrozen:x,hasKey:z,joinRegExp:A,urlencode:B,uuid4:D,htmlTreeAsString:E,htmlElementAsString:F,isSameException:I,isSameStacktrace:J,parseUrl:C,fill:K,safeJoin:L,serializeException:Q,serializeKeysForMessage:R,sanitize:S}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{8:8}],7:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}function e(){return"undefined"==typeof document||null==document.location?"":document.location.origin}var f=a(6),g={collectWindowErrors:!0,debug:!1},h="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},i=[].slice,j="?",k=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;g.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function e(a,b){var c=null;if(!b||g.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(i.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,h,i){var l=null,m=f.isErrorEvent(i)?i.error:i,n=f.isErrorEvent(a)?a.message:a;if(v)g.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&f.isError(m))l=g.computeStackTrace(m),e(l,!0);else{var p,r={url:b,line:c,column:h},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(k);p&&(s=p[1],n=p[2])}r.func=j,l={name:s,message:n,url:d(),stack:[r]},e(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=h.onerror,h.onerror=l,r=!0)}function n(){r&&(h.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,e.apply(null,[a,!1].concat(b))}function p(a,b){var c=i.call(arguments,1);if(v){if(u===a)return;o()}var d=g.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),g.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,f,g=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,h=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,i=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,k=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,l=/\((\S*)(?::(\d+))(?::(\d+))\)/,m=a.stack.split("\n"),n=[],o=(/^(.*) is undefined$/.exec(a.message),0),p=m.length;o eval")>-1;r&&(b=k.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==o||c[5]||"undefined"==typeof a.columnNumber||(n[0].column=a.columnNumber+1),f={url:c[3],func:c[1]||j,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}if(!f.func&&f.line&&(f.func=j),f.url&&"blob:"===f.url.substr(0,5)){var s=new XMLHttpRequest;if(s.open("GET",f.url,!1),s.send(null),200===s.status){var t=s.responseText||"";t=t.slice(-300);var u=t.match(/\/\/# sourceMappingURL=(.*)$/);if(u){var v=u[1];"~"===v.charAt(0)&&(v=e()+v.slice(1)),f.url=v.slice(0,-4)}}}n.push(f)}return n.length?{name:a.name,message:a.message,url:d(),stack:n}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=j),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,e){for(var h,i,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==f&&o!==g.report){if(i={url:null,func:j,line:null,column:null},o.name?i.func=o.name:(h=k.exec(o.toString()))&&(i.func=h[1]),"undefined"==typeof i.func)try{i.func=h.input.substring(0,h.input.indexOf("{"))}catch(p){}m[""+o]?n=!0:m[""+o]=!0,l.push(i)}e&&l.splice(0,e);var q={name:a.name,message:a.message,url:d(),stack:l};return b(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),q}function f(b,e){var f=null;e=null==e?0:+e;try{if(f=a(b))return f}catch(h){if(g.debug)throw h}try{if(f=c(b,e+1))return f}catch(h){if(g.debug)throw h}return{name:b.name,message:b.message,url:d()}}return f.augmentStackTraceWithInitialElement=b,f.computeStackTraceFromStackProp=a,f}(),b.exports=g}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{}); +},{6:6}],8:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}],9:[function(a,b,c){function d(a,b){var c=(65535&a)+(65535&b),d=(a>>16)+(b>>16)+(c>>16);return d<<16|65535&c}function e(a,b){return a<>>32-b}function f(a,b,c,f,g,h){return d(e(d(d(b,a),d(f,h)),g),c)}function g(a,b,c,d,e,g,h){return f(b&c|~b&d,a,b,e,g,h)}function h(a,b,c,d,e,g,h){return f(b&d|c&~d,a,b,e,g,h)}function i(a,b,c,d,e,g,h){return f(b^c^d,a,b,e,g,h)}function j(a,b,c,d,e,g,h){return f(c^(b|~d),a,b,e,g,h)}function k(a,b){a[b>>5]|=128<>>9<<4)+14]=b;var c,e,f,k,l,m=1732584193,n=-271733879,o=-1732584194,p=271733878;for(c=0;c>5]>>>b%32&255);return c}function m(a){var b,c=[];for(c[(a.length>>2)-1]=void 0,b=0;b>5]|=(255&a.charCodeAt(b/8))<16&&(e=k(e,8*a.length)),c=0;c<16;c+=1)f[c]=909522486^e[c],g[c]=1549556828^e[c];return d=k(f.concat(m(b)),512+8*b.length),l(k(g.concat(d),640))}function p(a){var b,c,d="0123456789abcdef",e="";for(c=0;c>>4&15)+d.charAt(15&b);return e}function q(a){return unescape(encodeURIComponent(a))}function r(a){return n(q(a))}function s(a){return p(r(a))}function t(a,b){return o(q(a),q(b))}function u(a,b){return p(t(a,b))}function v(a,b,c){return b?c?t(b,a):u(b,a):c?r(a):s(a)}b.exports=v},{}]},{},[5,1])(5)}); //# sourceMappingURL=raven.min.js.map \ No newline at end of file diff --git a/dist/require/raven.min.js.map b/dist/require/raven.min.js.map index 8f21564e1410..89cebee3c863 100644 --- a/dist/require/raven.min.js.map +++ b/dist/require/raven.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","requirePlugin","wrap","deep","addPlugin","5","2","RavenConfigError","message","name","prototype","constructor","3","utils","wrapMethod","console","level","callback","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","msg","safeJoin","data","logger","extra","Function","apply","6","4","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","sanitizeKeys","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isError","isObject","isPlainObject","isErrorEvent","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","sanitize","wrapConsoleMethod","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","config","dsn","options","_logDebug","globalOptions","key","value","setDSN","push","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","toString","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","substr","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","context","func","undefined","_before","wrapped","_ignoreNextOnError","captureException","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","T","event","reason","unhandledPromiseRejection","B","_promiseRejectionHandler","bind","addEventListener","P","removeEventListener","ex","trimHeadFrames","error","captureMessage","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","U","currentOptions","exKeys","Object","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","setDataCallback","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","L","setTimeout","$","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","_","evtName","_keypressTimeout","target","category","ba","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","ca","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","C","_originalFunctionToString","Q","D","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","type","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","E","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","R","builtin","S","F","installer","concat","G","str","m","exec","allowSecretKey","J","port","A","V","stackInfo","_triggerEvent","_processException","lineno","X","frame","_normalizeFrame","in_app","ga","stackInfoUrl","normalized","filename","line","colno","column","function","fa","prefixedMessage","exception","values","culprit","ha","request","Referer","breadcrumbs","_trimBreadcrumbs","ia","urlProp","urlProps","ja","httpData","userAgent","User-Agent","referrer","y","_backoffDuration","_backoffStart","ma","na","current","last","oa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Y","baseData","project","platform","_getHttpData","serverName","server_name","_sanitizeData","forEach","random","_sendProcessedPayload","pa","ra","qa","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","sa","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","onerror","open","setRequestHeader","send","ta","hash","evaluated","z","Z","setUser","setReleaseContext","7","8","9","RavenConstructor","_Raven","noConflict","Client","what","supportsErrorEvent","ErrorEvent","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","wrappedCallback","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","sanitizeMask","safeInput","o_O","getLocationHref","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","charAt","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","string","raw"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file +{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","requirePlugin","wrap","deep","addPlugin","5","2","RavenConfigError","message","name","prototype","constructor","3","utils","wrapMethod","console","level","callback","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","msg","safeJoin","data","logger","extra","Function","apply","6","4","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","sanitizeKeys","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isErrorEvent","isDOMError","isDOMException","isError","isObject","isPlainObject","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","sanitize","wrapConsoleMethod","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","config","dsn","options","_logDebug","globalOptions","key","value","setDSN","push","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","toString","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","substr","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","context","func","undefined","_before","wrapped","_ignoreNextOnError","captureException","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","T","event","reason","unhandledPromiseRejection","B","_promiseRejectionHandler","bind","addEventListener","P","removeEventListener","ex","trimHeadFrames","error","captureMessage","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","U","currentOptions","exKeys","Object","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","setDataCallback","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","L","setTimeout","$","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","_","evtName","_keypressTimeout","target","category","ba","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","ca","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","C","_originalFunctionToString","Q","D","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","type","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","E","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","R","builtin","S","F","installer","concat","G","str","m","exec","allowSecretKey","J","port","A","V","stackInfo","_triggerEvent","_processException","lineno","X","frame","_normalizeFrame","in_app","ga","stackInfoUrl","normalized","filename","line","colno","column","function","fa","prefixedMessage","exception","values","culprit","ha","request","Referer","breadcrumbs","_trimBreadcrumbs","ia","urlProp","urlProps","ja","httpData","userAgent","User-Agent","referrer","y","_backoffDuration","_backoffStart","ma","na","current","last","oa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Y","baseData","project","platform","_getHttpData","serverName","server_name","_sanitizeData","forEach","random","_sendProcessedPayload","pa","ra","qa","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","sa","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","onerror","open","setRequestHeader","send","ta","hash","evaluated","z","Z","setUser","setReleaseContext","7","8","9","RavenConstructor","_Raven","noConflict","Client","what","supportsErrorEvent","ErrorEvent","supportsDOMError","DOMError","supportsDOMException","DOMException","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","wrappedCallback","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","sanitizeMask","safeInput","o_O","getLocationHref","getLocationOrigin","origin","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","responseText","sourceMaps","sourceMapAddress","charAt","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","string","raw"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file diff --git a/dist/sri.json b/dist/sri.json index fff0ef2e2a3a..7b1204ac237e 100644 --- a/dist/sri.json +++ b/dist/sri.json @@ -1,578 +1,578 @@ { "@build/angular,console,ember,require,vue/raven.js": { "hashes": { - "sha256": "RgAHTRYtEPflF6Ai71hxugYo9tk0iL8SZFoDw1pTHEM=", - "sha512": "LhJIy6EE8dEvMtkBQH3JXvcl3f5IHlM0+ms9mp0zmySXJCltDGNtK6Imje/XYF79DBGQIUT+5WfNHvpP3KEnDQ==" + "sha256": "kpn4jnnlAoVjeieiROJKLErsp4LStSfiee2DRONZ7wQ=", + "sha512": "EUdN1KxIw4yN4s0bJuVsT4Bjic0FAsdwLdalqZN6ermGCOCEhabs/UBjmCbzEJ9+LH6OAixT3+RHkaDuyqMlvQ==" }, "type": null, - "integrity": "sha256-RgAHTRYtEPflF6Ai71hxugYo9tk0iL8SZFoDw1pTHEM= sha512-LhJIy6EE8dEvMtkBQH3JXvcl3f5IHlM0+ms9mp0zmySXJCltDGNtK6Imje/XYF79DBGQIUT+5WfNHvpP3KEnDQ==", + "integrity": "sha256-kpn4jnnlAoVjeieiROJKLErsp4LStSfiee2DRONZ7wQ= sha512-EUdN1KxIw4yN4s0bJuVsT4Bjic0FAsdwLdalqZN6ermGCOCEhabs/UBjmCbzEJ9+LH6OAixT3+RHkaDuyqMlvQ==", "path": "build/angular,console,ember,require,vue/raven.js" }, "@build/angular,console,ember,require,vue/raven.min.js": { "hashes": { - "sha256": "j89LiAGPnnA/6ffyeRqZ+Zt1GbtazvCwlvfDFWanQIc=", - "sha512": "TKEq07EcHvRRQieSgcEtiGdD9/rlb8ZbkORkWC/ttLDYLIlM9oBFdQOtG5JmGCfUmIgSGiHwKlRPESeCMb2uqg==" + "sha256": "eiFXJQheKYYtWm8mJbtjAVkdZfSRX+QkBF58ajsieFw=", + "sha512": "qnxxlHajcEwKMCCLWOcv2Tge5qlivCtc8vzjO5ioWcUMpUbMJlIxL6TQJAMGwHRvvqHqBljc9vxgm+SZb9zIhw==" }, "type": null, - "integrity": "sha256-j89LiAGPnnA/6ffyeRqZ+Zt1GbtazvCwlvfDFWanQIc= sha512-TKEq07EcHvRRQieSgcEtiGdD9/rlb8ZbkORkWC/ttLDYLIlM9oBFdQOtG5JmGCfUmIgSGiHwKlRPESeCMb2uqg==", + "integrity": "sha256-eiFXJQheKYYtWm8mJbtjAVkdZfSRX+QkBF58ajsieFw= sha512-qnxxlHajcEwKMCCLWOcv2Tge5qlivCtc8vzjO5ioWcUMpUbMJlIxL6TQJAMGwHRvvqHqBljc9vxgm+SZb9zIhw==", "path": "build/angular,console,ember,require,vue/raven.min.js" }, "@build/angular,console,ember,require/raven.js": { "hashes": { - "sha256": "+MdGmzxMypaJF4QZRhiaL4yR8GbSG+lf0WPtvZRwCX4=", - "sha512": "+CVagmxa53MF8nHJ+iRUkpxHN3Kc2bpuVQLpRTk8EWWEIhXJJjI2jN2rL1RVKB2Fd3xdiG6HmJkrtv0Dt0qMSQ==" + "sha256": "xtEeUV5eQGLxMOFeUpEJ8W9aJrlDdmNXA6kkGH+Dwu0=", + "sha512": "IA8gze5xuLkl4obQ/9+M7kN3AUK/aJNsUoDQaiwkasA/rTo20VIJt1yBSn4BPYkUSS+bgq0e/xvRBxR666tsYw==" }, "type": null, - "integrity": "sha256-+MdGmzxMypaJF4QZRhiaL4yR8GbSG+lf0WPtvZRwCX4= sha512-+CVagmxa53MF8nHJ+iRUkpxHN3Kc2bpuVQLpRTk8EWWEIhXJJjI2jN2rL1RVKB2Fd3xdiG6HmJkrtv0Dt0qMSQ==", + "integrity": "sha256-xtEeUV5eQGLxMOFeUpEJ8W9aJrlDdmNXA6kkGH+Dwu0= sha512-IA8gze5xuLkl4obQ/9+M7kN3AUK/aJNsUoDQaiwkasA/rTo20VIJt1yBSn4BPYkUSS+bgq0e/xvRBxR666tsYw==", "path": "build/angular,console,ember,require/raven.js" }, "@build/angular,console,ember,require/raven.min.js": { "hashes": { - "sha256": "VqmtF3uDgyUyLt2JFEs00YsI+Wo0x0UaivGrMXU+qkA=", - "sha512": "C9kY0j87yzIa2Vnr4nCdX1muPHAKf0uFIBicLyVaPbqRltL/h48nC2qL9xBNvAa+Dai0aBK3tlEB5+sWjbAf+A==" + "sha256": "XxGWYHuk5VtdfbWVGrb1P8HesUE2hfw+PzCaFhwxpwM=", + "sha512": "mCXqB7VhW9VKQVBBgwAWQSUZo6/rufhpQwqy18IL51GwuDJarCxl6g6VUON8ffy/ThlK3VsHuePNHtd2OaBTiA==" }, "type": null, - "integrity": "sha256-VqmtF3uDgyUyLt2JFEs00YsI+Wo0x0UaivGrMXU+qkA= sha512-C9kY0j87yzIa2Vnr4nCdX1muPHAKf0uFIBicLyVaPbqRltL/h48nC2qL9xBNvAa+Dai0aBK3tlEB5+sWjbAf+A==", + "integrity": "sha256-XxGWYHuk5VtdfbWVGrb1P8HesUE2hfw+PzCaFhwxpwM= sha512-mCXqB7VhW9VKQVBBgwAWQSUZo6/rufhpQwqy18IL51GwuDJarCxl6g6VUON8ffy/ThlK3VsHuePNHtd2OaBTiA==", "path": "build/angular,console,ember,require/raven.min.js" }, "@build/angular,console,ember,vue/raven.js": { "hashes": { - "sha256": "HyhSrEfWjaejNuFa60b57gRLVYNbB38482fQcTt7aCY=", - "sha512": "v3ZC8rKFOW+z94ARzLDP+7chEI6txdBQSKKmmrRcYc7/ikKZIlYAXm4+Rjcm2VLVFTGeRJH4KxSHn2LKwWi3YA==" + "sha256": "IMpm/ZHEtqKPxQCxySiQPT7j5fEqwKWRHmC+fL+id3M=", + "sha512": "gTZVuZDAGNAR8uSrrfwCvoJgvIwStPFyxbA6j6EKPrnJjL6u4PQQx1xTYHLiv92jQEJCSCxoHOPDt/ew7vLcig==" }, "type": null, - "integrity": "sha256-HyhSrEfWjaejNuFa60b57gRLVYNbB38482fQcTt7aCY= sha512-v3ZC8rKFOW+z94ARzLDP+7chEI6txdBQSKKmmrRcYc7/ikKZIlYAXm4+Rjcm2VLVFTGeRJH4KxSHn2LKwWi3YA==", + "integrity": "sha256-IMpm/ZHEtqKPxQCxySiQPT7j5fEqwKWRHmC+fL+id3M= sha512-gTZVuZDAGNAR8uSrrfwCvoJgvIwStPFyxbA6j6EKPrnJjL6u4PQQx1xTYHLiv92jQEJCSCxoHOPDt/ew7vLcig==", "path": "build/angular,console,ember,vue/raven.js" }, "@build/angular,console,ember,vue/raven.min.js": { "hashes": { - "sha256": "DcmsVpY+4csSEEm3sYlz9/Wm8jGXmEOOsNz8gRoYlS4=", - "sha512": "BLxj9VAcEnK5MJ4kZwfhN2AMoRGRfvnXUv/x9Xhly0+pmePWBhUXGa0Hfdpkasv+UU9MkgQMBSGrTV+L6AIJbw==" + "sha256": "V3jg1RHC4yqBvBXXQLMMb02eEk4WeG0/LI96TsUYQOk=", + "sha512": "Cp+6dPGZmArZYMPpNPuN70lcfvAsQHYSZRpvUI5JKU3UEoeYglOGtaQ83Ar4Wmhm0FUaC8NQaQJK34NV5uHJFg==" }, "type": null, - "integrity": "sha256-DcmsVpY+4csSEEm3sYlz9/Wm8jGXmEOOsNz8gRoYlS4= sha512-BLxj9VAcEnK5MJ4kZwfhN2AMoRGRfvnXUv/x9Xhly0+pmePWBhUXGa0Hfdpkasv+UU9MkgQMBSGrTV+L6AIJbw==", + "integrity": "sha256-V3jg1RHC4yqBvBXXQLMMb02eEk4WeG0/LI96TsUYQOk= sha512-Cp+6dPGZmArZYMPpNPuN70lcfvAsQHYSZRpvUI5JKU3UEoeYglOGtaQ83Ar4Wmhm0FUaC8NQaQJK34NV5uHJFg==", "path": "build/angular,console,ember,vue/raven.min.js" }, "@build/angular,console,ember/raven.js": { "hashes": { - "sha256": "hyk6I4y34+eFv7YRwcZh3xOkcvyADHpDWDXNGfrAbCM=", - "sha512": "po0LnWcEuN21cqkMxY6ypPH62i22rUeJml+ZEotUVR8kr27hD+z2Gx3J8Jy+dk/F6bgzEdGMnYS757QaBzfe9A==" + "sha256": "3aJuTbQkWA8d1/JO0DXpuTe5lkSGQltWvnKoPG/M+2U=", + "sha512": "zNDmOXmUSEYdD5gFrAjQezzdlVn9iTDlKQDMFTgmxcdJBm+9XNUz7spHiaxqzh/uRQUzSNn5hwUkhmk1H+0GlA==" }, "type": null, - "integrity": "sha256-hyk6I4y34+eFv7YRwcZh3xOkcvyADHpDWDXNGfrAbCM= sha512-po0LnWcEuN21cqkMxY6ypPH62i22rUeJml+ZEotUVR8kr27hD+z2Gx3J8Jy+dk/F6bgzEdGMnYS757QaBzfe9A==", + "integrity": "sha256-3aJuTbQkWA8d1/JO0DXpuTe5lkSGQltWvnKoPG/M+2U= sha512-zNDmOXmUSEYdD5gFrAjQezzdlVn9iTDlKQDMFTgmxcdJBm+9XNUz7spHiaxqzh/uRQUzSNn5hwUkhmk1H+0GlA==", "path": "build/angular,console,ember/raven.js" }, "@build/angular,console,ember/raven.min.js": { "hashes": { - "sha256": "snwWfycI/FRy1C1PeuR/aPRAO3BySxRZnNXROLf8sRo=", - "sha512": "gyvciXB4NhZXVDNh3khFlhYDZPf9Kk8Pw75d0MHytOdciHRRTQU3zqey+LGeVwpQhbF+8HVor+//VTy1P2rTHQ==" + "sha256": "FtKUP/0A0F9gYQURN7hEXveLnX1QsaojnG0RKKgFXT0=", + "sha512": "AV+64bujzcQuFMWwyi3uk6mXFUP9dIS5TofeooBBsAUiFp+rQaE/EX7wompPdbdWEeGwqztOz7s3k1V30bMLzw==" }, "type": null, - "integrity": "sha256-snwWfycI/FRy1C1PeuR/aPRAO3BySxRZnNXROLf8sRo= sha512-gyvciXB4NhZXVDNh3khFlhYDZPf9Kk8Pw75d0MHytOdciHRRTQU3zqey+LGeVwpQhbF+8HVor+//VTy1P2rTHQ==", + "integrity": "sha256-FtKUP/0A0F9gYQURN7hEXveLnX1QsaojnG0RKKgFXT0= sha512-AV+64bujzcQuFMWwyi3uk6mXFUP9dIS5TofeooBBsAUiFp+rQaE/EX7wompPdbdWEeGwqztOz7s3k1V30bMLzw==", "path": "build/angular,console,ember/raven.min.js" }, "@build/angular,console,require,vue/raven.js": { "hashes": { - "sha256": "jBKldkr4G7Tk+8jgDvP7LqsYh5Z8N9yHTPT7c4+k7DQ=", - "sha512": "cx7W95cjkqvziZ5wF+7MGUtViuaFmYAln7EwkFp9xg3XbrlEPFPdI58cKoYT/ax0eSt1bXKGMhDpTZjtgvTbEg==" + "sha256": "DEcdiWvcMRMb04LyU93B07BH+VjT60wfDu3EJXLOtI0=", + "sha512": "IODp2I4+okWdpvCb7ZPJaV3bz0JCvu6foRZoCF2jDC2Y3S65olTLLmZN4P6Yk5GdZkcRDUa7MCeRH9bUOweP+Q==" }, "type": null, - "integrity": "sha256-jBKldkr4G7Tk+8jgDvP7LqsYh5Z8N9yHTPT7c4+k7DQ= sha512-cx7W95cjkqvziZ5wF+7MGUtViuaFmYAln7EwkFp9xg3XbrlEPFPdI58cKoYT/ax0eSt1bXKGMhDpTZjtgvTbEg==", + "integrity": "sha256-DEcdiWvcMRMb04LyU93B07BH+VjT60wfDu3EJXLOtI0= sha512-IODp2I4+okWdpvCb7ZPJaV3bz0JCvu6foRZoCF2jDC2Y3S65olTLLmZN4P6Yk5GdZkcRDUa7MCeRH9bUOweP+Q==", "path": "build/angular,console,require,vue/raven.js" }, "@build/angular,console,require,vue/raven.min.js": { "hashes": { - "sha256": "3fT87vNRzaZ/qYrIapA5C4Y4g9T0QXbz7eavLvPcaGg=", - "sha512": "0E62PczoMq2GDH8gFpo6HTQrUe+ezuf0+74m42q6/6IjYejxs9A/jdkt2XN3o1Oy8yi290F9F8NyA4Lv2wLhxA==" + "sha256": "8gTgi5Sd70Mgzt1aoIh8u3FSFuub7aGOm7iac0R4Hj0=", + "sha512": "toHhC0jJ31K2QeGC+TPTx/IVvZ3bXB0KBrC5txoC4dOZ403gX55oiejEvqm0FEaodG9xXCnGkpSQMpVGwwGGHQ==" }, "type": null, - "integrity": "sha256-3fT87vNRzaZ/qYrIapA5C4Y4g9T0QXbz7eavLvPcaGg= sha512-0E62PczoMq2GDH8gFpo6HTQrUe+ezuf0+74m42q6/6IjYejxs9A/jdkt2XN3o1Oy8yi290F9F8NyA4Lv2wLhxA==", + "integrity": "sha256-8gTgi5Sd70Mgzt1aoIh8u3FSFuub7aGOm7iac0R4Hj0= sha512-toHhC0jJ31K2QeGC+TPTx/IVvZ3bXB0KBrC5txoC4dOZ403gX55oiejEvqm0FEaodG9xXCnGkpSQMpVGwwGGHQ==", "path": "build/angular,console,require,vue/raven.min.js" }, "@build/angular,console,require/raven.js": { "hashes": { - "sha256": "HmZCcCRPcSheoN1lbWRjT8CGNSJmTbrXXRRpgj2yjjE=", - "sha512": "7PT+gwBjS30EFtrNfDxtSVj55wIjc0XQImq1tlLXIPV0kTOfMj7ls9O+C4rGfjutGEtvtmRG9F6wLJ4PXNyAAQ==" + "sha256": "xxJTANeN2ewU3gw3Ykt6OQL0v42ZsgNuFDYhNslT68k=", + "sha512": "I73UBRoPG+KtXvQZ9uFllDjMe0PMU0rngYsydMLkhWNqQ19K9XWuES0dRobSw52Nz97QEzTrDrINtd7TLKlafw==" }, "type": null, - "integrity": "sha256-HmZCcCRPcSheoN1lbWRjT8CGNSJmTbrXXRRpgj2yjjE= sha512-7PT+gwBjS30EFtrNfDxtSVj55wIjc0XQImq1tlLXIPV0kTOfMj7ls9O+C4rGfjutGEtvtmRG9F6wLJ4PXNyAAQ==", + "integrity": "sha256-xxJTANeN2ewU3gw3Ykt6OQL0v42ZsgNuFDYhNslT68k= sha512-I73UBRoPG+KtXvQZ9uFllDjMe0PMU0rngYsydMLkhWNqQ19K9XWuES0dRobSw52Nz97QEzTrDrINtd7TLKlafw==", "path": "build/angular,console,require/raven.js" }, "@build/angular,console,require/raven.min.js": { "hashes": { - "sha256": "aKczXLNWLFVf1Vc1vV8tslbVCvVDC4r2TqV19mW0T8g=", - "sha512": "coWJfql+Gu+bEM5/Cubg/GEavbUdZcYmS3Ci8eVqqilvDXJex4Jl+kFEGLZwNKSCPj3WNDvGHZ/F9nBiFC2iHQ==" + "sha256": "IfYImT+baBjLMMOK9d0Mq0TGvpy6dPTil4PsrL1AEjM=", + "sha512": "WNZAuy2mvpKevstJsIPdwz5x5cFeHJW/Siak15GTutM6MYLFpmUK6JeVK/DTWhgRSy/DoGARDk8SLboxNn/UUg==" }, "type": null, - "integrity": "sha256-aKczXLNWLFVf1Vc1vV8tslbVCvVDC4r2TqV19mW0T8g= sha512-coWJfql+Gu+bEM5/Cubg/GEavbUdZcYmS3Ci8eVqqilvDXJex4Jl+kFEGLZwNKSCPj3WNDvGHZ/F9nBiFC2iHQ==", + "integrity": "sha256-IfYImT+baBjLMMOK9d0Mq0TGvpy6dPTil4PsrL1AEjM= sha512-WNZAuy2mvpKevstJsIPdwz5x5cFeHJW/Siak15GTutM6MYLFpmUK6JeVK/DTWhgRSy/DoGARDk8SLboxNn/UUg==", "path": "build/angular,console,require/raven.min.js" }, "@build/angular,console,vue/raven.js": { "hashes": { - "sha256": "WmH69cDBxDcspfEZyPdx/4AKUrhUbelkYoacQExzpYQ=", - "sha512": "o7AW4Tl2fnWMUDx0TaPkx6dm/MAZk7cRllTb6LQ9WQS1Wr4i0JVeFw24BUh4tTy03CP6wqaQJF7yClrBTzz6kA==" + "sha256": "MBFtso1Zxv8Sw8oa195LLeGmnUpK8YQS10duzUVedoo=", + "sha512": "OPibR51JjYDzPaiDemJmpijgkZs/TNSpam4hf96PuAAa/O+atYeovIYpzQ5ukD8h/PnMnUfwQC/0OpTQJ3b69A==" }, "type": null, - "integrity": "sha256-WmH69cDBxDcspfEZyPdx/4AKUrhUbelkYoacQExzpYQ= sha512-o7AW4Tl2fnWMUDx0TaPkx6dm/MAZk7cRllTb6LQ9WQS1Wr4i0JVeFw24BUh4tTy03CP6wqaQJF7yClrBTzz6kA==", + "integrity": "sha256-MBFtso1Zxv8Sw8oa195LLeGmnUpK8YQS10duzUVedoo= sha512-OPibR51JjYDzPaiDemJmpijgkZs/TNSpam4hf96PuAAa/O+atYeovIYpzQ5ukD8h/PnMnUfwQC/0OpTQJ3b69A==", "path": "build/angular,console,vue/raven.js" }, "@build/angular,console,vue/raven.min.js": { "hashes": { - "sha256": "aQcxpIzUW9uZZ6207NvduJ/oG1oLT3H6hJTfazuVGsI=", - "sha512": "sg1K7iBZCeKpIwQJZyz2uhyLlUTwsogGYXuCfwegg6sSUOrLEV7LfKtAKFngSgLkEVix9MGPX51c4wHq9MH68w==" + "sha256": "2TXBGfQkSd9Kk2IctChKnY4CSOj7LUKMTfgZuBXM7A0=", + "sha512": "RhA7eWbH6Q5MccSdPVlZlhZL+pE5NO0EjSIb7cwZUx+O6i/wJbnWD+ky9xJxZPtlId8rYGCHP0ZvwlJDjRifTw==" }, "type": null, - "integrity": "sha256-aQcxpIzUW9uZZ6207NvduJ/oG1oLT3H6hJTfazuVGsI= sha512-sg1K7iBZCeKpIwQJZyz2uhyLlUTwsogGYXuCfwegg6sSUOrLEV7LfKtAKFngSgLkEVix9MGPX51c4wHq9MH68w==", + "integrity": "sha256-2TXBGfQkSd9Kk2IctChKnY4CSOj7LUKMTfgZuBXM7A0= sha512-RhA7eWbH6Q5MccSdPVlZlhZL+pE5NO0EjSIb7cwZUx+O6i/wJbnWD+ky9xJxZPtlId8rYGCHP0ZvwlJDjRifTw==", "path": "build/angular,console,vue/raven.min.js" }, "@build/angular,console/raven.js": { "hashes": { - "sha256": "Q+zX57duGVsLbJoUiucHzrgMAVkb9FHBnkldMz2eIto=", - "sha512": "XDPLKbIrA4GFL2KJvpScqdr53yC+vT+zBXx9CjqjmTGMWh1bxOgwb89LNvWcgVRYIsIwuhJHJUqhPVFeTWc4oQ==" + "sha256": "sq1ig8uLi2NFAsRSF8qji7aCXkpQ1z/eNhvDNXkEJfM=", + "sha512": "oZHVS3C8nYScJb1A1xKZOXKJHqHLuSEXaPZmd4cmdUyHFMrh4f1fdD5agwDHJIxMs510zRw7kZljkKycqgeoNA==" }, "type": null, - "integrity": "sha256-Q+zX57duGVsLbJoUiucHzrgMAVkb9FHBnkldMz2eIto= sha512-XDPLKbIrA4GFL2KJvpScqdr53yC+vT+zBXx9CjqjmTGMWh1bxOgwb89LNvWcgVRYIsIwuhJHJUqhPVFeTWc4oQ==", + "integrity": "sha256-sq1ig8uLi2NFAsRSF8qji7aCXkpQ1z/eNhvDNXkEJfM= sha512-oZHVS3C8nYScJb1A1xKZOXKJHqHLuSEXaPZmd4cmdUyHFMrh4f1fdD5agwDHJIxMs510zRw7kZljkKycqgeoNA==", "path": "build/angular,console/raven.js" }, "@build/angular,console/raven.min.js": { "hashes": { - "sha256": "w/2w66pSvBA+2wfsItQjuCoH5a8O/mLmLSOyMTg2zfM=", - "sha512": "qw7pLNyMEdusF6UyDeCstI6ZMpXb2rpisoqggNdKuXugMwaGaoXzg+H+xFn5Dy6IsRj0SnjKzXd34ut9LrtV8A==" + "sha256": "98Jhjk+kjvXd7ZynWkHzCVQqvMLjzDNKUQTzztmc70k=", + "sha512": "kvW8BmEwKzI9F53Iu8L7qDpes7WGzJxUlo/KlU3kTNZMw0+gncumkMTeQykL5S+aohzCc7iTWCUjMkaukjgHpw==" }, "type": null, - "integrity": "sha256-w/2w66pSvBA+2wfsItQjuCoH5a8O/mLmLSOyMTg2zfM= sha512-qw7pLNyMEdusF6UyDeCstI6ZMpXb2rpisoqggNdKuXugMwaGaoXzg+H+xFn5Dy6IsRj0SnjKzXd34ut9LrtV8A==", + "integrity": "sha256-98Jhjk+kjvXd7ZynWkHzCVQqvMLjzDNKUQTzztmc70k= sha512-kvW8BmEwKzI9F53Iu8L7qDpes7WGzJxUlo/KlU3kTNZMw0+gncumkMTeQykL5S+aohzCc7iTWCUjMkaukjgHpw==", "path": "build/angular,console/raven.min.js" }, "@build/angular,ember,require,vue/raven.js": { "hashes": { - "sha256": "LXXqmFVMlL3k3TcnIMXX5ABz6w8QTZUyNPWuMh2lZwk=", - "sha512": "YsS+tn1P6lXtKlFRwsEimNFYzALhTEHwRC8gwQfUxJDfw26ecageuvEKCONvL8o4/a7dPHT+6LqSD2EqoQ/tgg==" + "sha256": "vxO7zIQPXNiVJh3Xy9L54rOs6JqYU2/gEQjn7N7qieA=", + "sha512": "YJ5qTS6zS4aUpIonZjTVYFOcmT/If7U+1eGEUd1/OG2pxDrk2z65pfRarOTjPIyRuppVgLDdBmaNHHCX+sJUEg==" }, "type": null, - "integrity": "sha256-LXXqmFVMlL3k3TcnIMXX5ABz6w8QTZUyNPWuMh2lZwk= sha512-YsS+tn1P6lXtKlFRwsEimNFYzALhTEHwRC8gwQfUxJDfw26ecageuvEKCONvL8o4/a7dPHT+6LqSD2EqoQ/tgg==", + "integrity": "sha256-vxO7zIQPXNiVJh3Xy9L54rOs6JqYU2/gEQjn7N7qieA= sha512-YJ5qTS6zS4aUpIonZjTVYFOcmT/If7U+1eGEUd1/OG2pxDrk2z65pfRarOTjPIyRuppVgLDdBmaNHHCX+sJUEg==", "path": "build/angular,ember,require,vue/raven.js" }, "@build/angular,ember,require,vue/raven.min.js": { "hashes": { - "sha256": "nBeF9gZDcnDs1cr1E8kSdLTV+n27xGIVP5QpqVmJcLY=", - "sha512": "M7LWjiIOl5fHpK38slW2xCmf5AGg0cmc36ehDmbqKCWwL156KndfVwFnaXhBgF6UtF2dWXrwPbcLrSASPXpW9Q==" + "sha256": "A3AQNTa6j3h16xPz3gDPm9HSRHJLGLGWSnFewioLr5U=", + "sha512": "n6VwMoWMR2vrXFKAwiMfK5wG9gvOcuFinFIy50DOSkbsBVwXaAoemDWnhmJ/8P8FZc3MGqGWGM2ZUYJMBDpW6g==" }, "type": null, - "integrity": "sha256-nBeF9gZDcnDs1cr1E8kSdLTV+n27xGIVP5QpqVmJcLY= sha512-M7LWjiIOl5fHpK38slW2xCmf5AGg0cmc36ehDmbqKCWwL156KndfVwFnaXhBgF6UtF2dWXrwPbcLrSASPXpW9Q==", + "integrity": "sha256-A3AQNTa6j3h16xPz3gDPm9HSRHJLGLGWSnFewioLr5U= sha512-n6VwMoWMR2vrXFKAwiMfK5wG9gvOcuFinFIy50DOSkbsBVwXaAoemDWnhmJ/8P8FZc3MGqGWGM2ZUYJMBDpW6g==", "path": "build/angular,ember,require,vue/raven.min.js" }, "@build/angular,ember,require/raven.js": { "hashes": { - "sha256": "0LyrDEhKhpMADeQfD/HuQUUE+wRX7KpMPG4910n8cgo=", - "sha512": "Z80DXRsPAThyPu1ndrVmyvSALHTqquF2GuP8ZWD/CDrakrgMsnhlLyBKKyYh5fpmFwTUxhKvCenn+VwomMcrIA==" + "sha256": "Rjs1YP6U19kODUU49ab2LZ30UpQvnmIhGxbVbfNCfeA=", + "sha512": "IPnMyqal69vjxKpwClfvzCuOTbH73rTJ+Qd8wtKDHj+eHUS+vYvCqHT7FgOgqmfqFAUx0gqYAUmuJqKcfyzMqw==" }, "type": null, - "integrity": "sha256-0LyrDEhKhpMADeQfD/HuQUUE+wRX7KpMPG4910n8cgo= sha512-Z80DXRsPAThyPu1ndrVmyvSALHTqquF2GuP8ZWD/CDrakrgMsnhlLyBKKyYh5fpmFwTUxhKvCenn+VwomMcrIA==", + "integrity": "sha256-Rjs1YP6U19kODUU49ab2LZ30UpQvnmIhGxbVbfNCfeA= sha512-IPnMyqal69vjxKpwClfvzCuOTbH73rTJ+Qd8wtKDHj+eHUS+vYvCqHT7FgOgqmfqFAUx0gqYAUmuJqKcfyzMqw==", "path": "build/angular,ember,require/raven.js" }, "@build/angular,ember,require/raven.min.js": { "hashes": { - "sha256": "vuGnjuLGtCm69Z3qW0noc2vG3/KbCdrXFq2X8rJQvlk=", - "sha512": "Q34EgGWb4a1QSgqeY9e09A4pCDu7K/j7A+sxplIKOgulSghtGRMR7zFyd/LY6Vt9QraCWWbvx/YOMfjx8KBZHA==" + "sha256": "/r6Nz9OefjhmfDHpvRvrvumUWAURgbUawBSpXvlL4e8=", + "sha512": "7EkoN19mnWOqiFtwZ8RHKG47Gl3LODZmOtd3mKzq94z+xxLEAG28HM2FCTaA4UPFw1+r48LF2SyQa0MLl3CTcw==" }, "type": null, - "integrity": "sha256-vuGnjuLGtCm69Z3qW0noc2vG3/KbCdrXFq2X8rJQvlk= sha512-Q34EgGWb4a1QSgqeY9e09A4pCDu7K/j7A+sxplIKOgulSghtGRMR7zFyd/LY6Vt9QraCWWbvx/YOMfjx8KBZHA==", + "integrity": "sha256-/r6Nz9OefjhmfDHpvRvrvumUWAURgbUawBSpXvlL4e8= sha512-7EkoN19mnWOqiFtwZ8RHKG47Gl3LODZmOtd3mKzq94z+xxLEAG28HM2FCTaA4UPFw1+r48LF2SyQa0MLl3CTcw==", "path": "build/angular,ember,require/raven.min.js" }, "@build/angular,ember,vue/raven.js": { "hashes": { - "sha256": "avJRryk7Qv4HzVkZdcS8q9Tn6stLVrJcZyDDmaDnU1E=", - "sha512": "Wa7o/K+vh2n53qigfOy7QwmpPoKG9VWkLuP60t5eLG5D0Uz94uzuokCjSj/SILf87yJG8Or7p9FGQEWMw2ji4w==" + "sha256": "IEBXK+TRKfOwTvEC2B/KZNOeHkllwfe+ztgq5Ih5tR4=", + "sha512": "yhQViQ+RVdOLsrbZ2FvrFSZk2HglTNkr6IBkuylZLfQy62g//aaaknUuUNkUTapS+fQH6UG4D5wHd4VdZWJvpw==" }, "type": null, - "integrity": "sha256-avJRryk7Qv4HzVkZdcS8q9Tn6stLVrJcZyDDmaDnU1E= sha512-Wa7o/K+vh2n53qigfOy7QwmpPoKG9VWkLuP60t5eLG5D0Uz94uzuokCjSj/SILf87yJG8Or7p9FGQEWMw2ji4w==", + "integrity": "sha256-IEBXK+TRKfOwTvEC2B/KZNOeHkllwfe+ztgq5Ih5tR4= sha512-yhQViQ+RVdOLsrbZ2FvrFSZk2HglTNkr6IBkuylZLfQy62g//aaaknUuUNkUTapS+fQH6UG4D5wHd4VdZWJvpw==", "path": "build/angular,ember,vue/raven.js" }, "@build/angular,ember,vue/raven.min.js": { "hashes": { - "sha256": "JsJA9j4tjkmBQwIgvQaIqflZ2lu3sRRWRn64vAS/mKI=", - "sha512": "zElo2CAiSh0JLiRNl+RP6x2HmTtit2792w+WLsXXxkLtQU972SxaSj5kBZM0thQqivJIwl0wcfnCCiS3xcst6A==" + "sha256": "F0O+lNYTWqdsVnuzqHYFqPVU1i+BEWaBUsVCPO6Sp3M=", + "sha512": "U7ay7T/fq6DdF0oP29GY/jnFEzdJzsdqL/HC3aTVZaOECXI7yAtZ2WFTpggcTtqVQqurzdMFyEokpixVVyKxFQ==" }, "type": null, - "integrity": "sha256-JsJA9j4tjkmBQwIgvQaIqflZ2lu3sRRWRn64vAS/mKI= sha512-zElo2CAiSh0JLiRNl+RP6x2HmTtit2792w+WLsXXxkLtQU972SxaSj5kBZM0thQqivJIwl0wcfnCCiS3xcst6A==", + "integrity": "sha256-F0O+lNYTWqdsVnuzqHYFqPVU1i+BEWaBUsVCPO6Sp3M= sha512-U7ay7T/fq6DdF0oP29GY/jnFEzdJzsdqL/HC3aTVZaOECXI7yAtZ2WFTpggcTtqVQqurzdMFyEokpixVVyKxFQ==", "path": "build/angular,ember,vue/raven.min.js" }, "@build/angular,ember/raven.js": { "hashes": { - "sha256": "ElkTI4wNM4hPHSbDomNTOoymnPjBjIbdMmrSzO/fuOI=", - "sha512": "FjiD249bStHbwX7TAJYvBA8CM9FSNgOLmvrvQYCvNXyXOJHrVOQwr1+UpVcwa1wLZFl3yMp2KfvQViH5GBgjyw==" + "sha256": "Xx/Hv+vp/R/Oz3UXCTazRLDHqwGZ/TUsTNSJB/+pQk8=", + "sha512": "wFHj28aT09JoVJs9uhpjM+EYxBn3p7bsBItx04HJRKCR7/OQtqv2AP10ZtkVZuflPrlPlTzXe10InX9ZPwuoVQ==" }, "type": null, - "integrity": "sha256-ElkTI4wNM4hPHSbDomNTOoymnPjBjIbdMmrSzO/fuOI= sha512-FjiD249bStHbwX7TAJYvBA8CM9FSNgOLmvrvQYCvNXyXOJHrVOQwr1+UpVcwa1wLZFl3yMp2KfvQViH5GBgjyw==", + "integrity": "sha256-Xx/Hv+vp/R/Oz3UXCTazRLDHqwGZ/TUsTNSJB/+pQk8= sha512-wFHj28aT09JoVJs9uhpjM+EYxBn3p7bsBItx04HJRKCR7/OQtqv2AP10ZtkVZuflPrlPlTzXe10InX9ZPwuoVQ==", "path": "build/angular,ember/raven.js" }, "@build/angular,ember/raven.min.js": { "hashes": { - "sha256": "QuhTRqqrIBDdbuf49rd0FOhU/BPQRYLGr6ZsrEgPLnE=", - "sha512": "yhQhARrda16FLogH64sY7Wi8i31D71fhV8bwZ6FhcAQlmm7M79oLAk4lKvXA6Fu1We0J8JkjAHJvmX01+mbNpQ==" + "sha256": "5S4YRy2MxDvoHckJg7EhCoohGt7htQ/t4SUMIli4FRo=", + "sha512": "afSPKBXM4ozA0K8wR5gmpnj0QithnqBpQKrNHGm18PSBM3N8Ec6HIQkubjtVoT2pMMwb7XcUmdC+d3jixUP+tg==" }, "type": null, - "integrity": "sha256-QuhTRqqrIBDdbuf49rd0FOhU/BPQRYLGr6ZsrEgPLnE= sha512-yhQhARrda16FLogH64sY7Wi8i31D71fhV8bwZ6FhcAQlmm7M79oLAk4lKvXA6Fu1We0J8JkjAHJvmX01+mbNpQ==", + "integrity": "sha256-5S4YRy2MxDvoHckJg7EhCoohGt7htQ/t4SUMIli4FRo= sha512-afSPKBXM4ozA0K8wR5gmpnj0QithnqBpQKrNHGm18PSBM3N8Ec6HIQkubjtVoT2pMMwb7XcUmdC+d3jixUP+tg==", "path": "build/angular,ember/raven.min.js" }, "@build/angular,require,vue/raven.js": { "hashes": { - "sha256": "q2KRzAuGXiRhnI1IN/72FTD/e/dOLYm+Y/ZNUswKSZs=", - "sha512": "QKgqnpH8fGIz7bHOsRL5T5LkqAQuAlPXRX+b/hN/sei1yMMlIhvwXJL/zkmNbEuEULQYoxsMXQ7U2zwKYMqiEQ==" + "sha256": "Svrt2t8PPwaRUuOF++RLwTxi6CUPyWX9/TtAd8yx8o8=", + "sha512": "2xQmfCzEFq/RCkjlVM2oFX7okxQ2nO4RtHD07okXrOjQUjkBFA25ntrFQrJjuhnxs5rbFWXMBx5dqpRTAuragw==" }, "type": null, - "integrity": "sha256-q2KRzAuGXiRhnI1IN/72FTD/e/dOLYm+Y/ZNUswKSZs= sha512-QKgqnpH8fGIz7bHOsRL5T5LkqAQuAlPXRX+b/hN/sei1yMMlIhvwXJL/zkmNbEuEULQYoxsMXQ7U2zwKYMqiEQ==", + "integrity": "sha256-Svrt2t8PPwaRUuOF++RLwTxi6CUPyWX9/TtAd8yx8o8= sha512-2xQmfCzEFq/RCkjlVM2oFX7okxQ2nO4RtHD07okXrOjQUjkBFA25ntrFQrJjuhnxs5rbFWXMBx5dqpRTAuragw==", "path": "build/angular,require,vue/raven.js" }, "@build/angular,require,vue/raven.min.js": { "hashes": { - "sha256": "SfOOdB+MrMAr9skR/SB5CSniOwbq5XXIBrek4xarNNg=", - "sha512": "GUxhQBXKqFiMhJ95h3uETNiUt9YhAKqpcWtif8EPeammc4h8d14/pucj9yFKjOyzTHkpqitN22yv0yeNJ1b/hA==" + "sha256": "DbLpoNsLDitZo1xbYWuJKdCC49mYsQPfgbV6ZE562jg=", + "sha512": "tkjc3zwEtngQZg8P6BsRMZ4nUs5OJtgKDVxgaC6d0kvMhaAiMvQue9SB51ChzHwSBsaj977VRUUQ6hmh87l+Lg==" }, "type": null, - "integrity": "sha256-SfOOdB+MrMAr9skR/SB5CSniOwbq5XXIBrek4xarNNg= sha512-GUxhQBXKqFiMhJ95h3uETNiUt9YhAKqpcWtif8EPeammc4h8d14/pucj9yFKjOyzTHkpqitN22yv0yeNJ1b/hA==", + "integrity": "sha256-DbLpoNsLDitZo1xbYWuJKdCC49mYsQPfgbV6ZE562jg= sha512-tkjc3zwEtngQZg8P6BsRMZ4nUs5OJtgKDVxgaC6d0kvMhaAiMvQue9SB51ChzHwSBsaj977VRUUQ6hmh87l+Lg==", "path": "build/angular,require,vue/raven.min.js" }, "@build/angular,require/raven.js": { "hashes": { - "sha256": "hztFCWwKxX/L3UGdksGM86L/HUIHMesFp5wPMLk28ac=", - "sha512": "TkUtk1isAOMMIK/XzKPrtN8TfSTyZVxMgpd2xqsCw0uc8MwKySSNwe97v3jAw0vC7I0C8ynCr5iVwU6Ay1I0ng==" + "sha256": "AZyYJHX9urVxddbKrap94lkz371zPAIm8JziOBRrauY=", + "sha512": "ctFjpbGbLgwcxKJ1RIOvMkltBlqsNG4/DIxd+7NqQv4KiPU9WQyOMv0mW6wwfSogvviA/sR5b2rgGG5PUAnmfg==" }, "type": null, - "integrity": "sha256-hztFCWwKxX/L3UGdksGM86L/HUIHMesFp5wPMLk28ac= sha512-TkUtk1isAOMMIK/XzKPrtN8TfSTyZVxMgpd2xqsCw0uc8MwKySSNwe97v3jAw0vC7I0C8ynCr5iVwU6Ay1I0ng==", + "integrity": "sha256-AZyYJHX9urVxddbKrap94lkz371zPAIm8JziOBRrauY= sha512-ctFjpbGbLgwcxKJ1RIOvMkltBlqsNG4/DIxd+7NqQv4KiPU9WQyOMv0mW6wwfSogvviA/sR5b2rgGG5PUAnmfg==", "path": "build/angular,require/raven.js" }, "@build/angular,require/raven.min.js": { "hashes": { - "sha256": "/I0QqFKZiK1bBcZpeo/Q+BT6p26mxOEfEpHLEz0tBPA=", - "sha512": "t4LHklsYwHOK3DZtieJBOLxzUbtPBeRyBFA79djGG+mH/FInHj4fR+naFQKIrvzfnDyLZaPpJpMTULsL94r7sA==" + "sha256": "JGPo9+0gl3s9ojEVCQlVSZPBPBKOgYDLLB6UOYE54Lc=", + "sha512": "K92+aX4GOSCyYf9nqleTP5ojN/W4fbjOC7ZZVy+DzXHUXOLGiJdz6r/y/iVeaJTYzw1r0fdcUUl8ImcYQQ2yaQ==" }, "type": null, - "integrity": "sha256-/I0QqFKZiK1bBcZpeo/Q+BT6p26mxOEfEpHLEz0tBPA= sha512-t4LHklsYwHOK3DZtieJBOLxzUbtPBeRyBFA79djGG+mH/FInHj4fR+naFQKIrvzfnDyLZaPpJpMTULsL94r7sA==", + "integrity": "sha256-JGPo9+0gl3s9ojEVCQlVSZPBPBKOgYDLLB6UOYE54Lc= sha512-K92+aX4GOSCyYf9nqleTP5ojN/W4fbjOC7ZZVy+DzXHUXOLGiJdz6r/y/iVeaJTYzw1r0fdcUUl8ImcYQQ2yaQ==", "path": "build/angular,require/raven.min.js" }, "@build/angular,vue/raven.js": { "hashes": { - "sha256": "yKMTDmNF0jr8eds1PaYy/0CLCEAIckL0XxpnhXVRcsE=", - "sha512": "R4jQvfinNyRR/ZNI6mGA19GxUah3N9hP2c5w1PGKNR8Qj8iamPhl4mOychLrLsOUmz4VLp+Zg1u/KcbHZV+B/g==" + "sha256": "KLhpG4TDGHLbEdnLnL1bDGN+5zPyUMAw0yUIJpX0pP4=", + "sha512": "EURZldfD3Hisrxykp4p93u/zo86ZVo8Nn6teupNCVxDlexu40AqLby5fFp6yzytPo4lifdtRQV+WFoWaLLuLwg==" }, "type": null, - "integrity": "sha256-yKMTDmNF0jr8eds1PaYy/0CLCEAIckL0XxpnhXVRcsE= sha512-R4jQvfinNyRR/ZNI6mGA19GxUah3N9hP2c5w1PGKNR8Qj8iamPhl4mOychLrLsOUmz4VLp+Zg1u/KcbHZV+B/g==", + "integrity": "sha256-KLhpG4TDGHLbEdnLnL1bDGN+5zPyUMAw0yUIJpX0pP4= sha512-EURZldfD3Hisrxykp4p93u/zo86ZVo8Nn6teupNCVxDlexu40AqLby5fFp6yzytPo4lifdtRQV+WFoWaLLuLwg==", "path": "build/angular,vue/raven.js" }, "@build/angular,vue/raven.min.js": { "hashes": { - "sha256": "J6cThlCfrZ/WieIA3/3YqRylNWxVEyxrJshFW8uOzPE=", - "sha512": "u7raC++omUyORq2vYWrGQdyazGfvbSdNp/pfpj5GFQPcW5EWdmUrs8zwgklUWMVchlGWMsncsu3sZEk93mkeKA==" + "sha256": "OkUKUPjfU+xGqCQC63r9bj2aQJitGR/psNBJceeHDPs=", + "sha512": "CynPq7bMQZ8GRacbCRfVgyd1sfsNdPgYXQ5GgLJYy6uG0gG9nWTm2RzBc8vrb/3942z5oN0KpoQH/5E/baLONQ==" }, "type": null, - "integrity": "sha256-J6cThlCfrZ/WieIA3/3YqRylNWxVEyxrJshFW8uOzPE= sha512-u7raC++omUyORq2vYWrGQdyazGfvbSdNp/pfpj5GFQPcW5EWdmUrs8zwgklUWMVchlGWMsncsu3sZEk93mkeKA==", + "integrity": "sha256-OkUKUPjfU+xGqCQC63r9bj2aQJitGR/psNBJceeHDPs= sha512-CynPq7bMQZ8GRacbCRfVgyd1sfsNdPgYXQ5GgLJYy6uG0gG9nWTm2RzBc8vrb/3942z5oN0KpoQH/5E/baLONQ==", "path": "build/angular,vue/raven.min.js" }, "@build/angular/raven.js": { "hashes": { - "sha256": "ZXDCxmG17rA+Jum9tcBb9zaniET/nL70C5ObEZnI7rE=", - "sha512": "XCwFoBHFwhXApzwZLaLEioAaoQzC3QXhENtVIBFEjHCP8MLUW7Cnu4HlTwRy3kKRGXgasI4gWAFSRs4oMygl9Q==" + "sha256": "m1THu0jWmyaQeJzO61tAKrSS5vZeUaFGn16fSXiYEUI=", + "sha512": "8l8Qeh+DXi43XIzurIWay1cBCqN46EjjUvzDOKR4tIvO1ZDZH2JEqJUmiE8e/v6tkAhxS4VBj7Lf7sttiKuepw==" }, "type": null, - "integrity": "sha256-ZXDCxmG17rA+Jum9tcBb9zaniET/nL70C5ObEZnI7rE= sha512-XCwFoBHFwhXApzwZLaLEioAaoQzC3QXhENtVIBFEjHCP8MLUW7Cnu4HlTwRy3kKRGXgasI4gWAFSRs4oMygl9Q==", + "integrity": "sha256-m1THu0jWmyaQeJzO61tAKrSS5vZeUaFGn16fSXiYEUI= sha512-8l8Qeh+DXi43XIzurIWay1cBCqN46EjjUvzDOKR4tIvO1ZDZH2JEqJUmiE8e/v6tkAhxS4VBj7Lf7sttiKuepw==", "path": "build/angular/raven.js" }, "@build/angular/raven.min.js": { "hashes": { - "sha256": "HVuHzZg6iYY9iAJC0YbYVtEXSl2hQJ25wK2hen+96TQ=", - "sha512": "KNPKkJq4adomgYHM5mw1n5ukNmeiBckg7n6HKG0ZinkBif7yN7icTV6vNjKmE51IRFiYp0yilG8TZhyA235N2A==" + "sha256": "sHhNT4DsAVGj/sW8ZZ84FG0eYByIt58xfNxnEIXDEJw=", + "sha512": "wdt78XujvltsjwJNYWtUU9doKFTlB2qZG4ztITo90vdEH8BrfaKoxea1lDZ05Y8t+PERTst0Umv5/4/226EH0A==" }, "type": null, - "integrity": "sha256-HVuHzZg6iYY9iAJC0YbYVtEXSl2hQJ25wK2hen+96TQ= sha512-KNPKkJq4adomgYHM5mw1n5ukNmeiBckg7n6HKG0ZinkBif7yN7icTV6vNjKmE51IRFiYp0yilG8TZhyA235N2A==", + "integrity": "sha256-sHhNT4DsAVGj/sW8ZZ84FG0eYByIt58xfNxnEIXDEJw= sha512-wdt78XujvltsjwJNYWtUU9doKFTlB2qZG4ztITo90vdEH8BrfaKoxea1lDZ05Y8t+PERTst0Umv5/4/226EH0A==", "path": "build/angular/raven.min.js" }, "@build/console,ember,require,vue/raven.js": { "hashes": { - "sha256": "htWMEYzmNWkOCCx9PKWLF/DB2VTmhUz2suhTxKxmHII=", - "sha512": "e6ZprAuwrxfacTnRN07TeMzT0K8QC+O7cIVYSyxR6M5GmCLOek3qmmrKpVkANc3QgZ+aCwYLGvuRqFs1SkK92w==" + "sha256": "leHqY1aZ3XJBN4HXyPacHERwqCDFS4Hj33eJNoRq8Yk=", + "sha512": "d5FlCHlYNCQTcS1OdCNR/Q/fTVIdSZDnHPtdwWl8Hxi4uqbhrnS2nRAN1CW5p30uwWvK5JA2/Dvr+MaQ3GEGbw==" }, "type": null, - "integrity": "sha256-htWMEYzmNWkOCCx9PKWLF/DB2VTmhUz2suhTxKxmHII= sha512-e6ZprAuwrxfacTnRN07TeMzT0K8QC+O7cIVYSyxR6M5GmCLOek3qmmrKpVkANc3QgZ+aCwYLGvuRqFs1SkK92w==", + "integrity": "sha256-leHqY1aZ3XJBN4HXyPacHERwqCDFS4Hj33eJNoRq8Yk= sha512-d5FlCHlYNCQTcS1OdCNR/Q/fTVIdSZDnHPtdwWl8Hxi4uqbhrnS2nRAN1CW5p30uwWvK5JA2/Dvr+MaQ3GEGbw==", "path": "build/console,ember,require,vue/raven.js" }, "@build/console,ember,require,vue/raven.min.js": { "hashes": { - "sha256": "i35Atja9w+XnwGgLP6JDaQMDe4SHGnbJZGtpQwPOr9Y=", - "sha512": "+FSCFF7bp4z+HymIXus2ry/xDvpSQxo+wW49417tWukBVsoTvcYEUA+iWOnwEC7y/peUoKDk8Ds5fOWAY2tEtw==" + "sha256": "ikHSVPxmREotKyglA7Cm+FlvDlTpCNOCunYwVgg/MS4=", + "sha512": "SNNf49i7VSg//0XbkkR7afMDkNwcm9ghAKiPa1l+6QAlLO12raVqJhqMECQwJo1wgP+sDj/v+HfpB9PUeuvv/Q==" }, "type": null, - "integrity": "sha256-i35Atja9w+XnwGgLP6JDaQMDe4SHGnbJZGtpQwPOr9Y= sha512-+FSCFF7bp4z+HymIXus2ry/xDvpSQxo+wW49417tWukBVsoTvcYEUA+iWOnwEC7y/peUoKDk8Ds5fOWAY2tEtw==", + "integrity": "sha256-ikHSVPxmREotKyglA7Cm+FlvDlTpCNOCunYwVgg/MS4= sha512-SNNf49i7VSg//0XbkkR7afMDkNwcm9ghAKiPa1l+6QAlLO12raVqJhqMECQwJo1wgP+sDj/v+HfpB9PUeuvv/Q==", "path": "build/console,ember,require,vue/raven.min.js" }, "@build/console,ember,require/raven.js": { "hashes": { - "sha256": "3DmCXpGB/UwdrI2Oxw5cUugfAYkUaKTBt2yyy+0s5qY=", - "sha512": "nuV3YDBXlFOoaBLQI9WJTcPLzrJDbibLueqI0op5nxRjjBnVeHmpvUM9DRFwXcrWPdBeQ2BEGYkZDbI0F2lsfg==" + "sha256": "UYCAnSfDe7r6lXwyF2HqrgMyfGgHex7O4VHrPvFZBcs=", + "sha512": "xbivgUDXKdltRr9vTEY7KbvyZdjQH/eu0Jx+rs37+++e/HXkFMaWHPMABQKCYZMFUujdhpZ1A/mkGtlbOSW5sg==" }, "type": null, - "integrity": "sha256-3DmCXpGB/UwdrI2Oxw5cUugfAYkUaKTBt2yyy+0s5qY= sha512-nuV3YDBXlFOoaBLQI9WJTcPLzrJDbibLueqI0op5nxRjjBnVeHmpvUM9DRFwXcrWPdBeQ2BEGYkZDbI0F2lsfg==", + "integrity": "sha256-UYCAnSfDe7r6lXwyF2HqrgMyfGgHex7O4VHrPvFZBcs= sha512-xbivgUDXKdltRr9vTEY7KbvyZdjQH/eu0Jx+rs37+++e/HXkFMaWHPMABQKCYZMFUujdhpZ1A/mkGtlbOSW5sg==", "path": "build/console,ember,require/raven.js" }, "@build/console,ember,require/raven.min.js": { "hashes": { - "sha256": "kRGT4RiKNA3WlattCFM4WE5XBERgNpwIK8DKiFwawOw=", - "sha512": "dSG/DkN54EcR5f+1ASoyEfZongx6QQRQpVRJ2d48cfVBFgzb6PlejKub6DzimdQTqW6frjsuWY9Dmk85s2VsMA==" + "sha256": "kwC7n9cZJDk4YHu3l4LfzyBAVyMsUizEn/TY7JmGxzA=", + "sha512": "lsC1BO2y3L+cV/awTIAG1L5RzS3vtVegfm97bAR9Uf/tGIdjGj1z6zwQARbU8EVFk+DTWh9LM6h0cYwwf5zcfA==" }, "type": null, - "integrity": "sha256-kRGT4RiKNA3WlattCFM4WE5XBERgNpwIK8DKiFwawOw= sha512-dSG/DkN54EcR5f+1ASoyEfZongx6QQRQpVRJ2d48cfVBFgzb6PlejKub6DzimdQTqW6frjsuWY9Dmk85s2VsMA==", + "integrity": "sha256-kwC7n9cZJDk4YHu3l4LfzyBAVyMsUizEn/TY7JmGxzA= sha512-lsC1BO2y3L+cV/awTIAG1L5RzS3vtVegfm97bAR9Uf/tGIdjGj1z6zwQARbU8EVFk+DTWh9LM6h0cYwwf5zcfA==", "path": "build/console,ember,require/raven.min.js" }, "@build/console,ember,vue/raven.js": { "hashes": { - "sha256": "oCQz5nB3/LtgfYmtxvoo5r6ZjqJAwpF1dVof96PIc6A=", - "sha512": "0BGBZmYL+p+v9mRl6DqxeY1ZnFRrWWI4XA7UAI3+9JH0/HxU08y6++A0mzK+h69SYUMwCdSOO7XL0xI7lC+Bow==" + "sha256": "hNtx9UH50PX1+C8v1yxx23or8Do137Hgc7iZMUVXtZU=", + "sha512": "jDrf3qotxWGqGpc/9O9SVZV+LBCAbYrOtC9pwzWS0GQSqW96MY71OQ1PzrYFy4pLMmjqKV1g6FPE3TsOQiMfgA==" }, "type": null, - "integrity": "sha256-oCQz5nB3/LtgfYmtxvoo5r6ZjqJAwpF1dVof96PIc6A= sha512-0BGBZmYL+p+v9mRl6DqxeY1ZnFRrWWI4XA7UAI3+9JH0/HxU08y6++A0mzK+h69SYUMwCdSOO7XL0xI7lC+Bow==", + "integrity": "sha256-hNtx9UH50PX1+C8v1yxx23or8Do137Hgc7iZMUVXtZU= sha512-jDrf3qotxWGqGpc/9O9SVZV+LBCAbYrOtC9pwzWS0GQSqW96MY71OQ1PzrYFy4pLMmjqKV1g6FPE3TsOQiMfgA==", "path": "build/console,ember,vue/raven.js" }, "@build/console,ember,vue/raven.min.js": { "hashes": { - "sha256": "vBhkV9E8Oj3+9LSttF7Qtmd1vv+n1FnRxIWwWFkg/tg=", - "sha512": "1Yfysgx32ebt6Ho4YYQbTGCg65TzadO72/ZltMSSbFbnEyG2AsR3AlAM7gXC+GzyyBvdvH3Xfstptu8D8C3cvw==" + "sha256": "7m4Br5uX3SKEGHpfbwKIFUUrT9zjUKBUhtgukmNIkJ8=", + "sha512": "AKGMcDFyB8ttU6UH1C20u7KxwJSLyW43tMZ6i4foDTa9FEK+vJy5CVmTlleEcunODK6Q7PmdK8OTV3QeUuay1w==" }, "type": null, - "integrity": "sha256-vBhkV9E8Oj3+9LSttF7Qtmd1vv+n1FnRxIWwWFkg/tg= sha512-1Yfysgx32ebt6Ho4YYQbTGCg65TzadO72/ZltMSSbFbnEyG2AsR3AlAM7gXC+GzyyBvdvH3Xfstptu8D8C3cvw==", + "integrity": "sha256-7m4Br5uX3SKEGHpfbwKIFUUrT9zjUKBUhtgukmNIkJ8= sha512-AKGMcDFyB8ttU6UH1C20u7KxwJSLyW43tMZ6i4foDTa9FEK+vJy5CVmTlleEcunODK6Q7PmdK8OTV3QeUuay1w==", "path": "build/console,ember,vue/raven.min.js" }, "@build/console,ember/raven.js": { "hashes": { - "sha256": "pub2wQfPANBhTVDi9NDX98HrPNckS4MZ5SGB+8+Iq4o=", - "sha512": "goLkZ6LZ1qfAiMJpc2ZLHGigVxUMj6QI8QXyZaLXJ2sMuIZipmhqtKZOTP4rcCMfxl+uTtht6eksdUzEaNQlCg==" + "sha256": "fISCOeWtR3JwqaCFfBe6lzbJKlQPpeRy3n4jKQ017Yc=", + "sha512": "Z+Os37ihrAEVRecs+ympQvPT0jQ818zJklm/KXzlciZRrgQwL83j6Ecq55JECyA0ElKkRRWm+7UIKbDl8P9EYA==" }, "type": null, - "integrity": "sha256-pub2wQfPANBhTVDi9NDX98HrPNckS4MZ5SGB+8+Iq4o= sha512-goLkZ6LZ1qfAiMJpc2ZLHGigVxUMj6QI8QXyZaLXJ2sMuIZipmhqtKZOTP4rcCMfxl+uTtht6eksdUzEaNQlCg==", + "integrity": "sha256-fISCOeWtR3JwqaCFfBe6lzbJKlQPpeRy3n4jKQ017Yc= sha512-Z+Os37ihrAEVRecs+ympQvPT0jQ818zJklm/KXzlciZRrgQwL83j6Ecq55JECyA0ElKkRRWm+7UIKbDl8P9EYA==", "path": "build/console,ember/raven.js" }, "@build/console,ember/raven.min.js": { "hashes": { - "sha256": "82ekjBG7bcmXSYtJQSnjt3J8zHoMnFC1jCWNXtCBwYs=", - "sha512": "eo7MZX55xlCmNfVW2V5CxwXmgxb5+cVOnC08zFrviIkaA9skNbFPLqQ6/U4Dt9e9vD7g3+ZEfN38F3jWb5uJqA==" + "sha256": "Cz5pl+PXh3g2XGM7YIkS5fIYkbcLw+AgbN5+fpA7ooU=", + "sha512": "kIfFCXoSZ/c1f72xFsZV4mVhX9pZq7A5zh2vGDSvUo5T7Im6pf4pmXA3sNXGFu1HqJRi0OeGXIAq7h2KyAhQVg==" }, "type": null, - "integrity": "sha256-82ekjBG7bcmXSYtJQSnjt3J8zHoMnFC1jCWNXtCBwYs= sha512-eo7MZX55xlCmNfVW2V5CxwXmgxb5+cVOnC08zFrviIkaA9skNbFPLqQ6/U4Dt9e9vD7g3+ZEfN38F3jWb5uJqA==", + "integrity": "sha256-Cz5pl+PXh3g2XGM7YIkS5fIYkbcLw+AgbN5+fpA7ooU= sha512-kIfFCXoSZ/c1f72xFsZV4mVhX9pZq7A5zh2vGDSvUo5T7Im6pf4pmXA3sNXGFu1HqJRi0OeGXIAq7h2KyAhQVg==", "path": "build/console,ember/raven.min.js" }, "@build/console,require,vue/raven.js": { "hashes": { - "sha256": "+rD56nT7abWq/yHQYhmmff8/Icobkq6R3vNa2494HXI=", - "sha512": "sp7FdooNzYQzwIJUZVQXFNvG8U63p6MzSFy0mgR5DcmqOY7XZS0F3Bq2iuMI5sxR9k/xCTKcBCEonD8Y2vxJCQ==" + "sha256": "/ZRQVuuSl0oQ+Dn6cmC7OX1q3w1cvAHBrgQ9XOEa3vQ=", + "sha512": "6OPkvnvy4/gXFPsC97RwnwhAAWNRzM+V00spQti+E78EwcBoZQIcyFEbSfcz1ENqzHn7lxJDZDHRIZqKtkpzHg==" }, "type": null, - "integrity": "sha256-+rD56nT7abWq/yHQYhmmff8/Icobkq6R3vNa2494HXI= sha512-sp7FdooNzYQzwIJUZVQXFNvG8U63p6MzSFy0mgR5DcmqOY7XZS0F3Bq2iuMI5sxR9k/xCTKcBCEonD8Y2vxJCQ==", + "integrity": "sha256-/ZRQVuuSl0oQ+Dn6cmC7OX1q3w1cvAHBrgQ9XOEa3vQ= sha512-6OPkvnvy4/gXFPsC97RwnwhAAWNRzM+V00spQti+E78EwcBoZQIcyFEbSfcz1ENqzHn7lxJDZDHRIZqKtkpzHg==", "path": "build/console,require,vue/raven.js" }, "@build/console,require,vue/raven.min.js": { "hashes": { - "sha256": "Z8SBVx0isuvOZse6/hkKHJjna7osRb6MCn9d9v4EIAg=", - "sha512": "wLoT0PS9Vxlb9pmPgrnZvWHp+4fGrzGE8vaCU4/6LbmnVowsr0I4sAycOl3ey46nI2unb4ugAK9izGA5CQkasA==" + "sha256": "cE8j2s3KzVFGkzzOwhSw+B6CLBcLuvZ86Pb64om9N1o=", + "sha512": "le/QB0m9ylgf6RFd5kItBu43LoDk/kACV4EI8G2/HNB2h+urCMdXfzEgJGH3Z64tNX0fOs4bMqDcP1o6fbey0Q==" }, "type": null, - "integrity": "sha256-Z8SBVx0isuvOZse6/hkKHJjna7osRb6MCn9d9v4EIAg= sha512-wLoT0PS9Vxlb9pmPgrnZvWHp+4fGrzGE8vaCU4/6LbmnVowsr0I4sAycOl3ey46nI2unb4ugAK9izGA5CQkasA==", + "integrity": "sha256-cE8j2s3KzVFGkzzOwhSw+B6CLBcLuvZ86Pb64om9N1o= sha512-le/QB0m9ylgf6RFd5kItBu43LoDk/kACV4EI8G2/HNB2h+urCMdXfzEgJGH3Z64tNX0fOs4bMqDcP1o6fbey0Q==", "path": "build/console,require,vue/raven.min.js" }, "@build/console,require/raven.js": { "hashes": { - "sha256": "EVYiBLK8o4BID++ay0yRYe4YO0aTDmLeBtIMH3yHfIA=", - "sha512": "R2e1h2X3hi9Q13R+qbXzJIt3qd4NBXRg8ZpFNKaNtCbTo7xuXmNnsyKoh8YW/5FORDEkHSs8IB6W7emW+BS84A==" + "sha256": "qUUN7U9H/ZECADSZC5omFFiv/ZA3WD1vXPefa2mHZec=", + "sha512": "5uJ75aRaCoyYkV/prDyABJD7X7AE0Nr7oCWMf6VVEaGca2sw16eK+bUOXs952snFROp+uMtXaq/w/BeAD+FZqg==" }, "type": null, - "integrity": "sha256-EVYiBLK8o4BID++ay0yRYe4YO0aTDmLeBtIMH3yHfIA= sha512-R2e1h2X3hi9Q13R+qbXzJIt3qd4NBXRg8ZpFNKaNtCbTo7xuXmNnsyKoh8YW/5FORDEkHSs8IB6W7emW+BS84A==", + "integrity": "sha256-qUUN7U9H/ZECADSZC5omFFiv/ZA3WD1vXPefa2mHZec= sha512-5uJ75aRaCoyYkV/prDyABJD7X7AE0Nr7oCWMf6VVEaGca2sw16eK+bUOXs952snFROp+uMtXaq/w/BeAD+FZqg==", "path": "build/console,require/raven.js" }, "@build/console,require/raven.min.js": { "hashes": { - "sha256": "Pj7qMciUtv6fCc6WOZ9GrJfC2ETRb+Xox1CAK3qc/SY=", - "sha512": "9KSTuavDIRmIuhK9flw+v0pgR6dRZYDe/AaDMNJS6GxhaEyFwvgTG6h8wOIJZbcpyipIsoElUEPb/U7InZ+w4Q==" + "sha256": "Pns6oPcDJLvtIUiemzpSs0o682gWvgKUSRWKdq72NC0=", + "sha512": "1WeNXOPCorrq27Nl4mpXdnp+UXvCDs2So9XRUii65dcoLdxrIxww6wp82egj8HbwZ4E1SxJrH1G/+bEge/wlTw==" }, "type": null, - "integrity": "sha256-Pj7qMciUtv6fCc6WOZ9GrJfC2ETRb+Xox1CAK3qc/SY= sha512-9KSTuavDIRmIuhK9flw+v0pgR6dRZYDe/AaDMNJS6GxhaEyFwvgTG6h8wOIJZbcpyipIsoElUEPb/U7InZ+w4Q==", + "integrity": "sha256-Pns6oPcDJLvtIUiemzpSs0o682gWvgKUSRWKdq72NC0= sha512-1WeNXOPCorrq27Nl4mpXdnp+UXvCDs2So9XRUii65dcoLdxrIxww6wp82egj8HbwZ4E1SxJrH1G/+bEge/wlTw==", "path": "build/console,require/raven.min.js" }, "@build/console,vue/raven.js": { "hashes": { - "sha256": "XC37O66kckrcVbje3FzyCpAYE0Jb26fPrmKKiYqR7PY=", - "sha512": "z72zkXwehSzuMrcBbiYvScPEspTVHMBU7rDrO6kjQZW0+ccfXbk6Ky4DLK0UXoT91lmI3eIHwLHmVtL+vxz2EA==" + "sha256": "FZATUT1Y5YMcevLJMxrFGMAboeKYjpTRGSTQvQc/Cf8=", + "sha512": "+e6jVO+9sh4EnK1NQ0HKMZ6o0kj9/2/E0JRe2HyKkXNlG4X8omB20h3AH+sPORKhI7Af3Lq6MzDF6UwmV3MItA==" }, "type": null, - "integrity": "sha256-XC37O66kckrcVbje3FzyCpAYE0Jb26fPrmKKiYqR7PY= sha512-z72zkXwehSzuMrcBbiYvScPEspTVHMBU7rDrO6kjQZW0+ccfXbk6Ky4DLK0UXoT91lmI3eIHwLHmVtL+vxz2EA==", + "integrity": "sha256-FZATUT1Y5YMcevLJMxrFGMAboeKYjpTRGSTQvQc/Cf8= sha512-+e6jVO+9sh4EnK1NQ0HKMZ6o0kj9/2/E0JRe2HyKkXNlG4X8omB20h3AH+sPORKhI7Af3Lq6MzDF6UwmV3MItA==", "path": "build/console,vue/raven.js" }, "@build/console,vue/raven.min.js": { "hashes": { - "sha256": "OdNsbw2BkyMRsKevEVgccb4CBkzXVKbNi3C4ECbch90=", - "sha512": "OZi68gBxelMZg29G94v5G4NUUkbfQxg1FjvjWy+ELED24h6aYPNZv1mzaGRMtKQVpTKKwWrW9e4RqfbWD4MObQ==" + "sha256": "w27SsEGy5YHX9ATEjXa/3nJAHKwDoThM+J4YhXgbT3o=", + "sha512": "Acz5v6P/JhI/1a6XahdujMJBJwOnb15J6M3OgSIQpnpOXMOar2yQarKos1C6cRdiZIZj1GzT1yaLcARoHsq4Aw==" }, "type": null, - "integrity": "sha256-OdNsbw2BkyMRsKevEVgccb4CBkzXVKbNi3C4ECbch90= sha512-OZi68gBxelMZg29G94v5G4NUUkbfQxg1FjvjWy+ELED24h6aYPNZv1mzaGRMtKQVpTKKwWrW9e4RqfbWD4MObQ==", + "integrity": "sha256-w27SsEGy5YHX9ATEjXa/3nJAHKwDoThM+J4YhXgbT3o= sha512-Acz5v6P/JhI/1a6XahdujMJBJwOnb15J6M3OgSIQpnpOXMOar2yQarKos1C6cRdiZIZj1GzT1yaLcARoHsq4Aw==", "path": "build/console,vue/raven.min.js" }, "@build/console/raven.js": { "hashes": { - "sha256": "PGn0gJLuRSldTLg/PGlRgCwGiIcuxO89l2ccvUKthgE=", - "sha512": "+ATnInDlqKotomoxk3VIPxpdwLsO1PDzw2lTPFRx0Mloyy4hskM4uItZTgiuJ2ZFPrR6/U2oWO1nqlTmNlAbig==" + "sha256": "x4ziIYQIsl7VjCgDXblhl/SbVuN4ikA9igKLdLCYv0Q=", + "sha512": "OssZrDrpgrA6NUStkxvogQlyN18sRkGKuahNdspvtnzJeFnB/P4lG7U6agL1kpWYrNwIP8gLB2Aw5gG3wVY2tA==" }, "type": null, - "integrity": "sha256-PGn0gJLuRSldTLg/PGlRgCwGiIcuxO89l2ccvUKthgE= sha512-+ATnInDlqKotomoxk3VIPxpdwLsO1PDzw2lTPFRx0Mloyy4hskM4uItZTgiuJ2ZFPrR6/U2oWO1nqlTmNlAbig==", + "integrity": "sha256-x4ziIYQIsl7VjCgDXblhl/SbVuN4ikA9igKLdLCYv0Q= sha512-OssZrDrpgrA6NUStkxvogQlyN18sRkGKuahNdspvtnzJeFnB/P4lG7U6agL1kpWYrNwIP8gLB2Aw5gG3wVY2tA==", "path": "build/console/raven.js" }, "@build/console/raven.min.js": { "hashes": { - "sha256": "24+TwDEDOKAgILWD4JAiDpsOiYarHAMSYeV6ZW+4uy8=", - "sha512": "JZMAtnFH43WH3hA8CuxxLCGQPEB3VEJREkbLZVbQEuDTm7meREGR0PmxNg3tLnmnQtJiLUltGVIXF3DdUUfpGQ==" + "sha256": "NZguKocRCjVjt8N7jALyJZeyUmUUU+XaKmqN1LFXQ6I=", + "sha512": "xcLeEEDpoEc64JBopCNwC25486HAftqxb1y8zFXQ+8D8yHYT47B7/EN+8bs63eANB1nGXi1jkhlVjzFsrd3o1Q==" }, "type": null, - "integrity": "sha256-24+TwDEDOKAgILWD4JAiDpsOiYarHAMSYeV6ZW+4uy8= sha512-JZMAtnFH43WH3hA8CuxxLCGQPEB3VEJREkbLZVbQEuDTm7meREGR0PmxNg3tLnmnQtJiLUltGVIXF3DdUUfpGQ==", + "integrity": "sha256-NZguKocRCjVjt8N7jALyJZeyUmUUU+XaKmqN1LFXQ6I= sha512-xcLeEEDpoEc64JBopCNwC25486HAftqxb1y8zFXQ+8D8yHYT47B7/EN+8bs63eANB1nGXi1jkhlVjzFsrd3o1Q==", "path": "build/console/raven.min.js" }, "@build/ember,require,vue/raven.js": { "hashes": { - "sha256": "lA4x+yItN9JekeH+IzitkcNq1pAPE6x5zhn6vwJTxnA=", - "sha512": "BPUjeN864Y3yRzrEq5rvzNjyskoO0g9S2PIFkLlcj/POKwLvswimhkHvXW+aMHrenWIMJ6Elm7fR+UlDgUJzhg==" + "sha256": "L/b+GU7slC6JvLhiRMnjcSEH6cmJQHDrxRgsvzCFvpg=", + "sha512": "qo3KvKGxEsc9hO4NtO+sYbchSg3WA/5KqCX69tQjnlOivUMs1TOr+AcZ99rA9TbSazlqGSPe8EYCcNQ+PROY+A==" }, "type": null, - "integrity": "sha256-lA4x+yItN9JekeH+IzitkcNq1pAPE6x5zhn6vwJTxnA= sha512-BPUjeN864Y3yRzrEq5rvzNjyskoO0g9S2PIFkLlcj/POKwLvswimhkHvXW+aMHrenWIMJ6Elm7fR+UlDgUJzhg==", + "integrity": "sha256-L/b+GU7slC6JvLhiRMnjcSEH6cmJQHDrxRgsvzCFvpg= sha512-qo3KvKGxEsc9hO4NtO+sYbchSg3WA/5KqCX69tQjnlOivUMs1TOr+AcZ99rA9TbSazlqGSPe8EYCcNQ+PROY+A==", "path": "build/ember,require,vue/raven.js" }, "@build/ember,require,vue/raven.min.js": { "hashes": { - "sha256": "XZIY1hbqd+JrmBRLS9nXZEsS+8UeHIPc1Q5E3+2uvds=", - "sha512": "w9N/je4CuLcn6EWnbcPvSFRSsUwkOqpFQpPM8TJbr8PHLFzklwQtDxWdWbzO0/1bcRZ1su3m93WMqFHAHAc6DQ==" + "sha256": "D6Ojt49Y9eVw3xVU/FGLjh54ekfeVFE72+dtRY/O2uM=", + "sha512": "QNcw5nlzcnrt+vDBSWerL7bhZG9zK99GQrSzM5YKWgDaIH2/iYAd14krUhOnEzFzv2+/fVQK/wtn0wQ1rfGj8Q==" }, "type": null, - "integrity": "sha256-XZIY1hbqd+JrmBRLS9nXZEsS+8UeHIPc1Q5E3+2uvds= sha512-w9N/je4CuLcn6EWnbcPvSFRSsUwkOqpFQpPM8TJbr8PHLFzklwQtDxWdWbzO0/1bcRZ1su3m93WMqFHAHAc6DQ==", + "integrity": "sha256-D6Ojt49Y9eVw3xVU/FGLjh54ekfeVFE72+dtRY/O2uM= sha512-QNcw5nlzcnrt+vDBSWerL7bhZG9zK99GQrSzM5YKWgDaIH2/iYAd14krUhOnEzFzv2+/fVQK/wtn0wQ1rfGj8Q==", "path": "build/ember,require,vue/raven.min.js" }, "@build/ember,require/raven.js": { "hashes": { - "sha256": "KHb7cV9HBvz93ju5TwVizeE5jSIZTUVq7ogmR4dgzqg=", - "sha512": "6RQNAfImqawCS/VixPVLUiTmApxobtM648JO/TZF36Kh6DowLKiFlC4gBJIgy39KpFTOfIz+BzZEut6AckY+rw==" + "sha256": "aK3o8TNP2AjDFmeNy9EkOlG2x0Tx+0/hqczoAv+ioe4=", + "sha512": "rod/aIsbrUzgWoqzlN/ELyN7injQFlDT8bAfss93n6iO9uPU6v6ksjAEa6aA1HToAd+C5d3L1U3rl10ajzNljg==" }, "type": null, - "integrity": "sha256-KHb7cV9HBvz93ju5TwVizeE5jSIZTUVq7ogmR4dgzqg= sha512-6RQNAfImqawCS/VixPVLUiTmApxobtM648JO/TZF36Kh6DowLKiFlC4gBJIgy39KpFTOfIz+BzZEut6AckY+rw==", + "integrity": "sha256-aK3o8TNP2AjDFmeNy9EkOlG2x0Tx+0/hqczoAv+ioe4= sha512-rod/aIsbrUzgWoqzlN/ELyN7injQFlDT8bAfss93n6iO9uPU6v6ksjAEa6aA1HToAd+C5d3L1U3rl10ajzNljg==", "path": "build/ember,require/raven.js" }, "@build/ember,require/raven.min.js": { "hashes": { - "sha256": "sakZlnL1lPP6bJN141gNnq7b65/LeUttPzVWXFBowWA=", - "sha512": "a0ByEbqmPf5o32MBgichuN7lZST9Fiuy5UqEdvGPIrOIJt7xzqWK/elYkOqkaiqvA7XYehxhhacdHy6QAL1Cgg==" + "sha256": "offckhtUj0vUbpniwyvMBruq2knwvJ3chC00pGAf8Tc=", + "sha512": "fVu0o8ZKrEIDjfGN0kjaC7o6tRFCxmd1lJpmqv+D0kYcNBWcxbtnizEghhRkKDEZ3YoY8EXPw8GiowlxkWBh7Q==" }, "type": null, - "integrity": "sha256-sakZlnL1lPP6bJN141gNnq7b65/LeUttPzVWXFBowWA= sha512-a0ByEbqmPf5o32MBgichuN7lZST9Fiuy5UqEdvGPIrOIJt7xzqWK/elYkOqkaiqvA7XYehxhhacdHy6QAL1Cgg==", + "integrity": "sha256-offckhtUj0vUbpniwyvMBruq2knwvJ3chC00pGAf8Tc= sha512-fVu0o8ZKrEIDjfGN0kjaC7o6tRFCxmd1lJpmqv+D0kYcNBWcxbtnizEghhRkKDEZ3YoY8EXPw8GiowlxkWBh7Q==", "path": "build/ember,require/raven.min.js" }, "@build/ember,vue/raven.js": { "hashes": { - "sha256": "KIDa9EJwqe0SL/2OLTQAIwoNTMMtc+ImaLDphDc4E3E=", - "sha512": "g3TDIJ8BPfHoxkwRw891VPOZG+Wukvr/O9ritLGtNTJe17pjpfSdyTxA1mV9sTg9YxEvg1r+//Mt7KYJVb/tyQ==" + "sha256": "exDef/tGRBDTPKr0++VX8EGAU3JeRxMRTONZuoHL+dw=", + "sha512": "ALILhGPjEaCzXpW3r6nhrqRexP9aIkVlmDj00MZBCi8NnS5oFfGNYxvw33gQvGI1w0jRJnSTG8imtx5CdLDwqg==" }, "type": null, - "integrity": "sha256-KIDa9EJwqe0SL/2OLTQAIwoNTMMtc+ImaLDphDc4E3E= sha512-g3TDIJ8BPfHoxkwRw891VPOZG+Wukvr/O9ritLGtNTJe17pjpfSdyTxA1mV9sTg9YxEvg1r+//Mt7KYJVb/tyQ==", + "integrity": "sha256-exDef/tGRBDTPKr0++VX8EGAU3JeRxMRTONZuoHL+dw= sha512-ALILhGPjEaCzXpW3r6nhrqRexP9aIkVlmDj00MZBCi8NnS5oFfGNYxvw33gQvGI1w0jRJnSTG8imtx5CdLDwqg==", "path": "build/ember,vue/raven.js" }, "@build/ember,vue/raven.min.js": { "hashes": { - "sha256": "JLRw+rcdcpnb56KkJPHD1GbER3Bu2QCdbZZ8H0ZsabI=", - "sha512": "l+m2cLL/AeRBK7u2GhU4KGybwIyZctPOK9M4lhrEVYvVael+nsCSaWzA2qmU1ZLmGw3Kzf6poHJLtPpJA+eH3w==" + "sha256": "wuS+YLfrLYAcWHoNMycXFHK1wdSehY/LNpMyTI/ZHdo=", + "sha512": "wVlSXLDV+XsezZZyBAKNWbOuQuhDxlNCbSDOgBEFzR2FYI0CBH02Ye96AwxtpN8+60gnQPQX32Oju0aSwv27vw==" }, "type": null, - "integrity": "sha256-JLRw+rcdcpnb56KkJPHD1GbER3Bu2QCdbZZ8H0ZsabI= sha512-l+m2cLL/AeRBK7u2GhU4KGybwIyZctPOK9M4lhrEVYvVael+nsCSaWzA2qmU1ZLmGw3Kzf6poHJLtPpJA+eH3w==", + "integrity": "sha256-wuS+YLfrLYAcWHoNMycXFHK1wdSehY/LNpMyTI/ZHdo= sha512-wVlSXLDV+XsezZZyBAKNWbOuQuhDxlNCbSDOgBEFzR2FYI0CBH02Ye96AwxtpN8+60gnQPQX32Oju0aSwv27vw==", "path": "build/ember,vue/raven.min.js" }, "@build/ember/raven.js": { "hashes": { - "sha256": "0XQa7upJA+oVRz2TV70tdreCIF7nwJHlTQU6veWJAM0=", - "sha512": "QQFGnMe1+O6h9bgxkit2b7akr4gfVtvRrFpdURRH9UI1Jg/p+5RnIFMRJH2152BlvVwEDqGUWw/krRC9a6SLIw==" + "sha256": "E1LybardftuUJYf6RVqENA98KONw198pXOE/0XKIERg=", + "sha512": "BAs+ZLbQZoyHfgdOp4ydjhDgqsq+QFT4ATsepFA6AFhncROyZDGIb+hFHwJTOoGPAq2WQ4NY2aKzjwPICT+jeA==" }, "type": null, - "integrity": "sha256-0XQa7upJA+oVRz2TV70tdreCIF7nwJHlTQU6veWJAM0= sha512-QQFGnMe1+O6h9bgxkit2b7akr4gfVtvRrFpdURRH9UI1Jg/p+5RnIFMRJH2152BlvVwEDqGUWw/krRC9a6SLIw==", + "integrity": "sha256-E1LybardftuUJYf6RVqENA98KONw198pXOE/0XKIERg= sha512-BAs+ZLbQZoyHfgdOp4ydjhDgqsq+QFT4ATsepFA6AFhncROyZDGIb+hFHwJTOoGPAq2WQ4NY2aKzjwPICT+jeA==", "path": "build/ember/raven.js" }, "@build/ember/raven.min.js": { "hashes": { - "sha256": "ka4rWCcJtVmcSBvsoN0IBt1Vbv0HAQ3ASZoi1PDizew=", - "sha512": "YG9x1nviYBjQREsfBZy+TEqvBVWnMdnkl0TsNs87nVUXyl80iz2lb6Q+fnhHf0GtHv++FVnDm/iXuskkCZZPQw==" + "sha256": "YKRGbWJmOgXXv07l+exCz/dOkQOs0FYi9l+PEIxtD5k=", + "sha512": "Q79RNgzKXrGeJWrh2EjspgmjBVsGhq4btI5ImTtTQqL9Y9xrUl7LeRPv/S+wPF44oDCWMmoYoJdQxjt3tIxmPQ==" }, "type": null, - "integrity": "sha256-ka4rWCcJtVmcSBvsoN0IBt1Vbv0HAQ3ASZoi1PDizew= sha512-YG9x1nviYBjQREsfBZy+TEqvBVWnMdnkl0TsNs87nVUXyl80iz2lb6Q+fnhHf0GtHv++FVnDm/iXuskkCZZPQw==", + "integrity": "sha256-YKRGbWJmOgXXv07l+exCz/dOkQOs0FYi9l+PEIxtD5k= sha512-Q79RNgzKXrGeJWrh2EjspgmjBVsGhq4btI5ImTtTQqL9Y9xrUl7LeRPv/S+wPF44oDCWMmoYoJdQxjt3tIxmPQ==", "path": "build/ember/raven.min.js" }, "@build/raven.js": { "hashes": { - "sha256": "blC5tb4zks+av3ttSL9UorzDnJcldKYA+7CLAlvnDJE=", - "sha512": "J0ySQly0HhVoGFK6ndrOkreMV9k1KgXLpQxo6HcuiTTrM+NS5MA+pquLKxxet/oWuGwqx4bzp9JvCoEv4tuamQ==" + "sha256": "SjPjty/KY+/wRri+a6h29idUVnjsjBUHUqxZyjkaIHc=", + "sha512": "xv32+sqApEjd61xwUqo0MPg06FOKoOB+UbnMxJdBfsxIEkdGihZC4IGoFsfxXU5GMG52ZEtbySwSl3Yg5LMDqA==" }, "type": null, - "integrity": "sha256-blC5tb4zks+av3ttSL9UorzDnJcldKYA+7CLAlvnDJE= sha512-J0ySQly0HhVoGFK6ndrOkreMV9k1KgXLpQxo6HcuiTTrM+NS5MA+pquLKxxet/oWuGwqx4bzp9JvCoEv4tuamQ==", + "integrity": "sha256-SjPjty/KY+/wRri+a6h29idUVnjsjBUHUqxZyjkaIHc= sha512-xv32+sqApEjd61xwUqo0MPg06FOKoOB+UbnMxJdBfsxIEkdGihZC4IGoFsfxXU5GMG52ZEtbySwSl3Yg5LMDqA==", "path": "build/raven.js" }, "@build/raven.min.js": { "hashes": { - "sha256": "KXpfHsDysbH3ETwiZzn0DnDOqzSehgGxoZkp3IbBxng=", - "sha512": "9i35ax6PH1GqqUprURQujIfnD27ORix9AxaS6fJH7QDD1YW6KOOM0tERSzfzk2CBq4jlJVTMSKGMo2uHa6LgUg==" + "sha256": "2TUqXq260UlXHDKQoX/RpTVZfTfn2IWkg7TwrR/auAM=", + "sha512": "PcpcIpldTtVGSpIfMuHKlrGbzPkX3qGy10cgrAxVv0kYDr82/EYRSMfgPfJQbpSOs9xzExkqzNULGhffmntvyA==" }, "type": null, - "integrity": "sha256-KXpfHsDysbH3ETwiZzn0DnDOqzSehgGxoZkp3IbBxng= sha512-9i35ax6PH1GqqUprURQujIfnD27ORix9AxaS6fJH7QDD1YW6KOOM0tERSzfzk2CBq4jlJVTMSKGMo2uHa6LgUg==", + "integrity": "sha256-2TUqXq260UlXHDKQoX/RpTVZfTfn2IWkg7TwrR/auAM= sha512-PcpcIpldTtVGSpIfMuHKlrGbzPkX3qGy10cgrAxVv0kYDr82/EYRSMfgPfJQbpSOs9xzExkqzNULGhffmntvyA==", "path": "build/raven.min.js" }, "@build/require,vue/raven.js": { "hashes": { - "sha256": "LxN1I29QtdWOs6OOWSGOkJNC5QEFvtfiiV81fa5Oc5E=", - "sha512": "0tsS6741Nr9O4MkYcN2Rea7HUGzlbtmCXgQnpkJJziMbUnY+t0P7LK8y2BOv9zRgOgDhXdAZ5rtyh4KjXfEG+A==" + "sha256": "S5T+Jzzn3W84/O3JM2MaP9n2hSiBgQ2AVZ/uOUQfr5E=", + "sha512": "YSsbnyG89AzFOIFHBHm6jBhtzvXvai6mlQU4snhmScyAVO4Hon9IBNV93YyecVkTaxemWCukehx9tFHutrnd6A==" }, "type": null, - "integrity": "sha256-LxN1I29QtdWOs6OOWSGOkJNC5QEFvtfiiV81fa5Oc5E= sha512-0tsS6741Nr9O4MkYcN2Rea7HUGzlbtmCXgQnpkJJziMbUnY+t0P7LK8y2BOv9zRgOgDhXdAZ5rtyh4KjXfEG+A==", + "integrity": "sha256-S5T+Jzzn3W84/O3JM2MaP9n2hSiBgQ2AVZ/uOUQfr5E= sha512-YSsbnyG89AzFOIFHBHm6jBhtzvXvai6mlQU4snhmScyAVO4Hon9IBNV93YyecVkTaxemWCukehx9tFHutrnd6A==", "path": "build/require,vue/raven.js" }, "@build/require,vue/raven.min.js": { "hashes": { - "sha256": "tgfp20NxITRNw5kz1EMtmeEY90GQaYgt6co5QVNhbrE=", - "sha512": "qQ5QZgbU3bT9e1T6dbLEGi1lUDr+yze79jhEULJdHeHHqiOg9/Ncm5ZZh3dsw8S64LRmseO9AfKUxLOJqFJt7Q==" + "sha256": "iFwyDH3GlmbUr/DqbsLHct9I4/PTcHYSO3gAHZhJUUE=", + "sha512": "DDXSNc1Snj010bIGNyse9sKxwsaixuhoJE6BrdiT4kU1zfJuCRQoNStst6JKw18Eo//XHWwkQO+4Zt433MtK3w==" }, "type": null, - "integrity": "sha256-tgfp20NxITRNw5kz1EMtmeEY90GQaYgt6co5QVNhbrE= sha512-qQ5QZgbU3bT9e1T6dbLEGi1lUDr+yze79jhEULJdHeHHqiOg9/Ncm5ZZh3dsw8S64LRmseO9AfKUxLOJqFJt7Q==", + "integrity": "sha256-iFwyDH3GlmbUr/DqbsLHct9I4/PTcHYSO3gAHZhJUUE= sha512-DDXSNc1Snj010bIGNyse9sKxwsaixuhoJE6BrdiT4kU1zfJuCRQoNStst6JKw18Eo//XHWwkQO+4Zt433MtK3w==", "path": "build/require,vue/raven.min.js" }, "@build/require/raven.js": { "hashes": { - "sha256": "SH7HvktOmQvF+KP3MEo7BKZRh4T4T6rIq7TLfpcdNsQ=", - "sha512": "S45rlZ3BnVf3dzp8sqlhlH9hyjMQ8tgmWqwUBtJYoSx3Mke1EUcq4iZtaUDqtA6Eml4Ivse6XEIOTvrl0Lw9GA==" + "sha256": "KehLMfbyOXuJd7+9DAQxez7A9Or4687Oemqwf/kWOLE=", + "sha512": "BC1vBkqN8pca+2BY01f66oRTklqhNF1IKLYTJXyPSgZWVovuILNNuebkjtn475KDB5rM9VmdWeQ+AmqtClkGKw==" }, "type": null, - "integrity": "sha256-SH7HvktOmQvF+KP3MEo7BKZRh4T4T6rIq7TLfpcdNsQ= sha512-S45rlZ3BnVf3dzp8sqlhlH9hyjMQ8tgmWqwUBtJYoSx3Mke1EUcq4iZtaUDqtA6Eml4Ivse6XEIOTvrl0Lw9GA==", + "integrity": "sha256-KehLMfbyOXuJd7+9DAQxez7A9Or4687Oemqwf/kWOLE= sha512-BC1vBkqN8pca+2BY01f66oRTklqhNF1IKLYTJXyPSgZWVovuILNNuebkjtn475KDB5rM9VmdWeQ+AmqtClkGKw==", "path": "build/require/raven.js" }, "@build/require/raven.min.js": { "hashes": { - "sha256": "Uytmj6gZkIM6jXfxKG1QlN/2spl92I/fqVSUoaO+7lo=", - "sha512": "DjqGArUjhtn8d6DiGXljGxri2kCwxEeYPNczFxWe1D+HEML+vQVbQOLC3cBlsbrMNdPtMDSZSuTp6FRc/yhTgw==" + "sha256": "hneJb35fyLHQaBh7bI0EYsceZCcmeu2f+gIPwN/r6D4=", + "sha512": "hEhGDh565EwwXPaa3gz1GspFs2hoqCZI+Rezh57SuofZ7bEshj79MDPCXj9wlVmCX/UpW0Wy0zD4XAkLiiOmLw==" }, "type": null, - "integrity": "sha256-Uytmj6gZkIM6jXfxKG1QlN/2spl92I/fqVSUoaO+7lo= sha512-DjqGArUjhtn8d6DiGXljGxri2kCwxEeYPNczFxWe1D+HEML+vQVbQOLC3cBlsbrMNdPtMDSZSuTp6FRc/yhTgw==", + "integrity": "sha256-hneJb35fyLHQaBh7bI0EYsceZCcmeu2f+gIPwN/r6D4= sha512-hEhGDh565EwwXPaa3gz1GspFs2hoqCZI+Rezh57SuofZ7bEshj79MDPCXj9wlVmCX/UpW0Wy0zD4XAkLiiOmLw==", "path": "build/require/raven.min.js" }, "@build/vue/raven.js": { "hashes": { - "sha256": "u/Zn8tF3GVn+0wKNCH0Ipgw/wJgaoP2PyOnu488XzyE=", - "sha512": "lAJMB6O0MlnX0Ab8vhQwhVlv9yL8d9EgqcXQXnhIUxwAdOWhs6CeFGbPdW/jbKb5DlUKawDnAvROkpETCfAr7A==" + "sha256": "zSPt4xF/gVYvxoisai1aSo5QtkLfFqtHU9+BvfoLWWs=", + "sha512": "8//PeZQlVezbhIh6fqCPSMLENX6e6usmi+EmFQYq/+JDOMlQJCSBTeX+FOFDI5U8BD+nixPZo9/ExI3fGchPhw==" }, "type": null, - "integrity": "sha256-u/Zn8tF3GVn+0wKNCH0Ipgw/wJgaoP2PyOnu488XzyE= sha512-lAJMB6O0MlnX0Ab8vhQwhVlv9yL8d9EgqcXQXnhIUxwAdOWhs6CeFGbPdW/jbKb5DlUKawDnAvROkpETCfAr7A==", + "integrity": "sha256-zSPt4xF/gVYvxoisai1aSo5QtkLfFqtHU9+BvfoLWWs= sha512-8//PeZQlVezbhIh6fqCPSMLENX6e6usmi+EmFQYq/+JDOMlQJCSBTeX+FOFDI5U8BD+nixPZo9/ExI3fGchPhw==", "path": "build/vue/raven.js" }, "@build/vue/raven.min.js": { "hashes": { - "sha256": "Y44ImyroeKJohpcHod0YTeawJW3uKDJ+yF/SjXN52/o=", - "sha512": "/dMg5CygY75LEYhvucZDq3K/P1OSbFtHsY1NDSDe4Qs6MReUaUh0kn3LDXVWWYjf470dJ2NrMh5ft+J2wzomDQ==" + "sha256": "idTHFO7u/2mKPRzgjdJksruaJ92hTK2Gc+n/AU7ECn0=", + "sha512": "ag/76jayQNoSDVFDqQ5+X9dp36BmS3JWK96t7uw9bFm6xeY0pwEQluUDqcG25P7S+P/MdyGRydK+SKfjVrGASQ==" }, "type": null, - "integrity": "sha256-Y44ImyroeKJohpcHod0YTeawJW3uKDJ+yF/SjXN52/o= sha512-/dMg5CygY75LEYhvucZDq3K/P1OSbFtHsY1NDSDe4Qs6MReUaUh0kn3LDXVWWYjf470dJ2NrMh5ft+J2wzomDQ==", + "integrity": "sha256-idTHFO7u/2mKPRzgjdJksruaJ92hTK2Gc+n/AU7ECn0= sha512-ag/76jayQNoSDVFDqQ5+X9dp36BmS3JWK96t7uw9bFm6xeY0pwEQluUDqcG25P7S+P/MdyGRydK+SKfjVrGASQ==", "path": "build/vue/raven.min.js" } } \ No newline at end of file diff --git a/dist/vue/raven.js b/dist/vue/raven.js index 7d07ef9e04b2..6b97483e21b6 100644 --- a/dist/vue/raven.js +++ b/dist/vue/raven.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.24.2 (540f32b) | github.com/getsentry/raven-js */ +/*! Raven.js 3.25.0 (80dffad) | github.com/getsentry/raven-js */ /* * Includes TraceKit @@ -124,10 +124,12 @@ var md5 = _dereq_(9); var RavenConfigError = _dereq_(2); var utils = _dereq_(6); +var isErrorEvent = utils.isErrorEvent; +var isDOMError = utils.isDOMError; +var isDOMException = utils.isDOMException; var isError = utils.isError; var isObject = utils.isObject; var isPlainObject = utils.isPlainObject; -var isErrorEvent = utils.isErrorEvent; var isUndefined = utils.isUndefined; var isFunction = utils.isFunction; var isString = utils.isString; @@ -255,7 +257,7 @@ Raven.prototype = { // webpack (using a build step causes webpack #1617). Grunt verifies that // this value matches package.json during build. // See: https://github.com/getsentry/raven-js/issues/465 - VERSION: '3.24.2', + VERSION: '3.25.0', debug: false, @@ -587,6 +589,23 @@ Raven.prototype = { if (isErrorEvent(ex) && ex.error) { // If it is an ErrorEvent with `error` property, extract it to get actual Error ex = ex.error; + } else if (isDOMError(ex) || isDOMException(ex)) { + // If it is a DOMError or DOMException (which are legacy APIs, but still supported in some browsers) + // then we just extract the name and message, as they don't provide anything else + // https://developer.mozilla.org/en-US/docs/Web/API/DOMError + // https://developer.mozilla.org/en-US/docs/Web/API/DOMException + var name = ex.name || (isDOMError(ex) ? 'DOMError' : 'DOMException'); + var message = ex.message ? name + ': ' + ex.message : name; + + return this.captureMessage( + message, + objectMerge(options, { + // neither DOMError or DOMException provide stack trace and we most likely wont get it this way as well + // but it's barely any overhead so we may at least try + stacktrace: true, + trimHeadFrames: options.trimHeadFrames + 1 + }) + ); } else if (isError(ex)) { // we have a real Error object ex = ex; @@ -598,6 +617,7 @@ Raven.prototype = { ex = new Error(options.message); } else { // If none of previous checks were valid, then it means that + // it's not a DOMError/DOMException // it's not a plain Object // it's not a valid ErrorEvent (one with an error property) // it's not an Error @@ -2370,7 +2390,7 @@ function isObject(what) { // Yanked from https://git.io/vS8DV re-used under CC0 // with some tiny modifications function isError(value) { - switch ({}.toString.call(value)) { + switch (Object.prototype.toString.call(value)) { case '[object Error]': return true; case '[object Exception]': @@ -2383,7 +2403,15 @@ function isError(value) { } function isErrorEvent(value) { - return supportsErrorEvent() && {}.toString.call(value) === '[object ErrorEvent]'; + return Object.prototype.toString.call(value) === '[object ErrorEvent]'; +} + +function isDOMError(value) { + return Object.prototype.toString.call(value) === '[object DOMError]'; +} + +function isDOMException(value) { + return Object.prototype.toString.call(value) === '[object DOMException]'; } function isUndefined(what) { @@ -2426,6 +2454,24 @@ function supportsErrorEvent() { } } +function supportsDOMError() { + try { + new DOMError(''); // eslint-disable-line no-new + return true; + } catch (e) { + return false; + } +} + +function supportsDOMException() { + try { + new DOMException(''); // eslint-disable-line no-new + return true; + } catch (e) { + return false; + } +} + function supportsFetch() { if (!('fetch' in _window)) return false; @@ -2941,6 +2987,8 @@ module.exports = { isObject: isObject, isError: isError, isErrorEvent: isErrorEvent, + isDOMError: isDOMError, + isDOMException: isDOMException, isUndefined: isUndefined, isFunction: isFunction, isPlainObject: isPlainObject, @@ -2948,6 +2996,8 @@ module.exports = { isArray: isArray, isEmptyObject: isEmptyObject, supportsErrorEvent: supportsErrorEvent, + supportsDOMError: supportsDOMError, + supportsDOMException: supportsDOMException, supportsFetch: supportsFetch, supportsReferrerPolicy: supportsReferrerPolicy, supportsPromiseRejectionEvent: supportsPromiseRejectionEvent, @@ -3007,10 +3057,14 @@ var ERROR_TYPES_RE = /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Ran function getLocationHref() { if (typeof document === 'undefined' || document.location == null) return ''; - return document.location.href; } +function getLocationOrigin() { + if (typeof document === 'undefined' || document.location == null) return ''; + return document.location.origin; +} + /** * TraceKit.report: cross-browser processing of unhandled exceptions * @@ -3418,6 +3472,44 @@ TraceKit.computeStackTrace = (function computeStackTraceWrapper() { element.func = UNKNOWN_FUNCTION; } + if (element.url && element.url.substr(0, 5) === 'blob:') { + // Special case for handling JavaScript loaded into a blob. + // We use a synchronous AJAX request here as a blob is already in + // memory - it's not making a network request. This will generate a warning + // in the browser console, but there has already been an error so that's not + // that much of an issue. + var xhr = new XMLHttpRequest(); + xhr.open('GET', element.url, false); + xhr.send(null); + + // If we failed to download the source, skip this patch + if (xhr.status === 200) { + var source = xhr.responseText || ''; + + // We trim the source down to the last 300 characters as sourceMappingURL is always at the end of the file. + // Why 300? To be in line with: https://github.com/getsentry/sentry/blob/4af29e8f2350e20c28a6933354e4f42437b4ba42/src/sentry/lang/javascript/processor.py#L164-L175 + source = source.slice(-300); + + // Now we dig out the source map URL + var sourceMaps = source.match(/\/\/# sourceMappingURL=(.*)$/); + + // If we don't find a source map comment or we find more than one, continue on to the next element. + if (sourceMaps) { + var sourceMapAddress = sourceMaps[1]; + + // Now we check to see if it's a relative URL. + // If it is, convert it to an absolute one. + if (sourceMapAddress.charAt(0) === '~') { + sourceMapAddress = getLocationOrigin() + sourceMapAddress.slice(1); + } + + // Now we strip the '.map' off of the end of the URL and update the + // element so that Sentry can match the map to the blob. + element.url = sourceMapAddress.slice(0, -4); + } + } + } + stack.push(element); } diff --git a/dist/vue/raven.min.js b/dist/vue/raven.min.js index a65486d3d3db..72b109575515 100644 --- a/dist/vue/raven.min.js +++ b/dist/vue/raven.min.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.24.2 (540f32b) | github.com/getsentry/raven-js */ -!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.Raven=a()}}(function(){return function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};b[g][0].call(k.exports,function(a){var c=b[g][1][a];return e(c?c:a)},k,k.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;g":"anonymous component")+(a._isVue&&a.$options.__file?" at "+a.$options.__file:"")}function e(a,b){if(b=b||window.Vue,b&&b.config){var c=b.config.errorHandler;b.config.errorHandler=function(b,e,f){var g={};"[object Object]"===Object.prototype.toString.call(e)&&(g.componentName=d(e),g.propsData=e.$options.propsData),"undefined"!=typeof f&&(g.lifecycleHook=f),a.captureException(b,{extra:g}),"function"==typeof c&&c.call(this,b,e,f)}}}b.exports=e,a(5).addPlugin(b.exports)},{5:5}],2:[function(a,b,c){function d(a){this.name="RavenConfigError",this.message=a}d.prototype=new Error,d.prototype.constructor=d,b.exports=d},{}],3:[function(a,b,c){var d=a(6),e=function(a,b,c){var e=a[b],f=a;if(b in a){var g="warn"===b?"warning":b;a[b]=function(){var a=[].slice.call(arguments),h=d.safeJoin(a," "),i={level:g,logger:"console",extra:{arguments:a}};"assert"===b?a[0]===!1&&(h="Assertion failed: "+(d.safeJoin(a.slice(1)," ")||"console.assert"),i.extra.arguments=a.slice(1),c&&c(h,i)):c&&c(h,i),e&&Function.prototype.apply.call(e,f,a)}}};b.exports={wrapMethod:e}},{6:6}],4:[function(a,b,c){(function(c){function d(){return+new Date}function e(a,b){return q(b)?function(c){return b(c,a)}:b}function f(){this.a=!("object"!=typeof JSON||!JSON.stringify),this.b=!p(Q),this.c=!p(R),this.d=null,this.e=null,this.f=null,this.g=null,this.h=null,this.i=null,this.j={},this.k={release:P.SENTRY_RELEASE&&P.SENTRY_RELEASE.id,logger:"javascript",ignoreErrors:[],ignoreUrls:[],whitelistUrls:[],includePaths:[],headers:null,collectWindowErrors:!0,captureUnhandledRejections:!0,maxMessageLength:0,maxUrlLength:250,stackTraceLimit:50,autoBreadcrumbs:!0,instrument:!0,sampleRate:1,sanitizeKeys:[]},this.l={method:"POST",keepalive:!0,referrerPolicy:I()?"origin":""},this.m=0,this.n=!1,this.o=Error.stackTraceLimit,this.p=P.console||{},this.q={},this.r=[],this.s=d(),this.t=[],this.u=[],this.v=null,this.w=P.location,this.x=this.w&&this.w.href,this.y();for(var a in this.p)this.q[a]=this.p[a]}var g=a(7),h=a(8),i=a(9),j=a(2),k=a(6),l=k.isError,m=k.isObject,n=k.isPlainObject,o=k.isErrorEvent,p=k.isUndefined,q=k.isFunction,r=k.isString,s=k.isArray,t=k.isEmptyObject,u=k.each,v=k.objectMerge,w=k.truncate,x=k.objectFrozen,y=k.hasKey,z=k.joinRegExp,A=k.urlencode,B=k.uuid4,C=k.htmlTreeAsString,D=k.isSameException,E=k.isSameStacktrace,F=k.parseUrl,G=k.fill,H=k.supportsFetch,I=k.supportsReferrerPolicy,J=k.serializeKeysForMessage,K=k.serializeException,L=k.sanitize,M=a(3).wrapMethod,N="source protocol user pass host port path".split(" "),O=/^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/,P="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},Q=P.document,R=P.navigator;f.prototype={VERSION:"3.24.2",debug:!1,TraceKit:g,config:function(a,b){var c=this;if(c.g)return this.z("error","Error: Raven has already been configured"),c;if(!a)return c;var d=c.k;b&&u(b,function(a,b){"tags"===a||"extra"===a||"user"===a?c.j[a]=b:d[a]=b}),c.setDSN(a),d.ignoreErrors.push(/^Script error\.?$/),d.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/),d.ignoreErrors=z(d.ignoreErrors),d.ignoreUrls=!!d.ignoreUrls.length&&z(d.ignoreUrls),d.whitelistUrls=!!d.whitelistUrls.length&&z(d.whitelistUrls),d.includePaths=z(d.includePaths),d.maxBreadcrumbs=Math.max(0,Math.min(d.maxBreadcrumbs||100,100));var e={xhr:!0,console:!0,dom:!0,location:!0,sentry:!0},f=d.autoBreadcrumbs;"[object Object]"==={}.toString.call(f)?f=v(e,f):f!==!1&&(f=e),d.autoBreadcrumbs=f;var h={tryCatch:!0},i=d.instrument;return"[object Object]"==={}.toString.call(i)?i=v(h,i):i!==!1&&(i=h),d.instrument=i,g.collectWindowErrors=!!d.collectWindowErrors,c},install:function(){var a=this;return a.isSetup()&&!a.n&&(g.report.subscribe(function(){a.A.apply(a,arguments)}),a.k.captureUnhandledRejections&&a.B(),a.C(),a.k.instrument&&a.k.instrument.tryCatch&&a.D(),a.k.autoBreadcrumbs&&a.E(),a.F(),a.n=!0),Error.stackTraceLimit=a.k.stackTraceLimit,this},setDSN:function(a){var b=this,c=b.G(a),d=c.path.lastIndexOf("/"),e=c.path.substr(1,d);b.H=a,b.h=c.user,b.I=c.pass&&c.pass.substr(1),b.i=c.path.substr(d+1),b.g=b.J(c),b.K=b.g+"/"+e+"api/"+b.i+"/store/",this.y()},context:function(a,b,c){return q(a)&&(c=b||[],b=a,a=void 0),this.wrap(a,b).apply(this,c)},wrap:function(a,b,c){function d(){var d=[],f=arguments.length,g=!a||a&&a.deep!==!1;for(c&&q(c)&&c.apply(this,arguments);f--;)d[f]=g?e.wrap(a,arguments[f]):arguments[f];try{return b.apply(this,d)}catch(h){throw e.L(),e.captureException(h,a),h}}var e=this;if(p(b)&&!q(a))return a;if(q(a)&&(b=a,a=void 0),!q(b))return b;try{if(b.M)return b;if(b.N)return b.N}catch(f){return b}for(var g in b)y(b,g)&&(d[g]=b[g]);return d.prototype=b.prototype,b.N=d,d.M=!0,d.O=b,d},uninstall:function(){return g.report.uninstall(),this.P(),this.Q(),this.R(),this.S(),Error.stackTraceLimit=this.o,this.n=!1,this},T:function(a){this.z("debug","Raven caught unhandled promise rejection:",a),this.captureException(a.reason,{extra:{unhandledPromiseRejection:!0}})},B:function(){return this.T=this.T.bind(this),P.addEventListener&&P.addEventListener("unhandledrejection",this.T),this},P:function(){return P.removeEventListener&&P.removeEventListener("unhandledrejection",this.T),this},captureException:function(a,b){if(b=v({trimHeadFrames:0},b?b:{}),o(a)&&a.error)a=a.error;else if(l(a))a=a;else{if(!n(a))return this.captureMessage(a,v(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}));b=this.U(b,a),a=new Error(b.message)}this.d=a;try{var c=g.computeStackTrace(a);this.V(c,b)}catch(d){if(a!==d)throw d}return this},U:function(a,b){var c=Object.keys(b).sort(),d=v(a,{message:"Non-Error exception captured with keys: "+J(c),fingerprint:[i(c)],extra:a.extra||{}});return d.extra.W=K(b),d},captureMessage:function(a,b){if(!this.k.ignoreErrors.test||!this.k.ignoreErrors.test(a)){b=b||{},a+="";var c,d=v({message:a},b);try{throw new Error(a)}catch(e){c=e}c.name=null;var f=g.computeStackTrace(c),h=s(f.stack)&&f.stack[1];h&&"Raven.captureException"===h.func&&(h=f.stack[2]);var i=h&&h.url||"";if((!this.k.ignoreUrls.test||!this.k.ignoreUrls.test(i))&&(!this.k.whitelistUrls.test||this.k.whitelistUrls.test(i))){if(this.k.stacktrace||b&&b.stacktrace){d.fingerprint=null==d.fingerprint?a:d.fingerprint,b=v({trimHeadFrames:0},b),b.trimHeadFrames+=1;var j=this.X(f,b);d.stacktrace={frames:j.reverse()}}return d.fingerprint&&(d.fingerprint=s(d.fingerprint)?d.fingerprint:[d.fingerprint]),this.Y(d),this}}},captureBreadcrumb:function(a){var b=v({timestamp:d()/1e3},a);if(q(this.k.breadcrumbCallback)){var c=this.k.breadcrumbCallback(b);if(m(c)&&!t(c))b=c;else if(c===!1)return this}return this.u.push(b),this.u.length>this.k.maxBreadcrumbs&&this.u.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.r.push([a,b]),this.n&&this.F(),this},setUserContext:function(a){return this.j.user=a,this},setExtraContext:function(a){return this.Z("extra",a),this},setTagsContext:function(a){return this.Z("tags",a),this},clearContext:function(){return this.j={},this},getContext:function(){return JSON.parse(h(this.j))},setEnvironment:function(a){return this.k.environment=a,this},setRelease:function(a){return this.k.release=a,this},setDataCallback:function(a){var b=this.k.dataCallback;return this.k.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.k.breadcrumbCallback;return this.k.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.k.shouldSendCallback;return this.k.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.k.transport=a,this},lastException:function(){return this.d},lastEventId:function(){return this.f},isSetup:function(){return!!this.a&&(!!this.g||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.z("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=P.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(Q){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.H;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.j.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.J(this.G(c)),h=Q.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(Q.head||Q.body).appendChild(h)}},L:function(){var a=this;this.m+=1,setTimeout(function(){a.m-=1})},$:function(a,b){var c,d;if(this.b){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),Q.createEvent?(c=Q.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=Q.createEventObject(),c.eventType=a);for(d in b)y(b,d)&&(c[d]=b[d]);if(Q.createEvent)Q.dispatchEvent(c);else try{Q.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},_:function(a){var b=this;return function(c){if(b.aa=null,b.v!==c){b.v=c;var d;try{d=C(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ba:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.aa;g||a._("input")(c),clearTimeout(g),a.aa=setTimeout(function(){a.aa=null},b)}}},ca:function(a,b){var c=F(this.w.href),d=F(b),e=F(a);this.x=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},C:function(){var a=this;a.da=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.M?a.da.apply(this.O,arguments):a.da.apply(this,arguments)}},Q:function(){this.da&&(Function.prototype.toString=this.da)},D:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.ca(b.x,c+""),a.apply(this,arguments)}};G(history,"pushState",j,d),G(history,"replaceState",j,d)}if(c.console&&"console"in P&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};u(["debug","info","warn","error","log"],function(a,b){M(console,b,k)})}},R:function(){for(var a;this.t.length;){a=this.t.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},S:function(){for(var a in this.q)this.p[a]=this.q[a]},F:function(){var a=this;u(this.r,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},G:function(a){var b=O.exec(a),c={},d=7;try{for(;d--;)c[N[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.k.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},J:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},A:function(){this.m||this.V.apply(this,arguments)},V:function(a,b){var c=this.X(a,b);this.$("handle",{stackInfo:a,options:b}),this.fa(a.name,a.message,a.url,a.lineno,c,b)},X:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(u(a.stack,function(b,e){var f=c.ga(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.u,0)}),this.j.user&&(a.user=this.j.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),a=this.pa(a),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||t(a[b]))&&delete a[b]}),q(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!t(a)&&(!q(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.ma()?void this.z("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function B(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&j(b))for(c=b.split(/\s+/),f=0;fc?M(a,b-1):d}function N(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?T:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function O(a,b){function c(a){return k(a)?a.map(function(a){return c(a)}):i(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!k(b)||k(b)&&0===b.length)return a;var d,e=w(b),f="********";try{d=JSON.parse(P(a))}catch(g){return a}return c(d)}var P=a(8),Q="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},R=3,S=51200,T=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isUndefined:g,isFunction:h,isPlainObject:i,isString:j,isArray:k,isEmptyObject:l,supportsErrorEvent:m,supportsFetch:n,supportsReferrerPolicy:o,supportsPromiseRejectionEvent:p,wrappedCallback:q,each:r,objectMerge:s,truncate:u,objectFrozen:t,hasKey:v,joinRegExp:w,urlencode:x,uuid4:z,htmlTreeAsString:A,htmlElementAsString:B,isSameException:E,isSameStacktrace:F,parseUrl:y,fill:G,safeJoin:H,serializeException:M,serializeKeysForMessage:N,sanitize:O}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{8:8}],7:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}var e=a(6),f={collectWindowErrors:!0,debug:!1},g="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},h=[].slice,i="?",j=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;f.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function k(a,b){var c=null;if(!b||f.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(h.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,g,h){var l=null,m=e.isErrorEvent(h)?h.error:h,n=e.isErrorEvent(a)?a.message:a;if(v)f.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&e.isError(m))l=f.computeStackTrace(m),k(l,!0);else{var p,r={url:b,line:c,column:g},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(j);p&&(s=p[1],n=p[2])}r.func=i,l={name:s,message:n,url:d(),stack:[r]},k(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=g.onerror,g.onerror=l,r=!0)}function n(){r&&(g.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,k.apply(null,[a,!1].concat(b))}function p(a,b){var c=h.call(arguments,1);if(v){if(u===a)return;o()}var d=f.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),f.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,e,f=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,g=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,h=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,j=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,k=/\((\S*)(?::(\d+))(?::(\d+))\)/,l=a.stack.split("\n"),m=[],n=(/^(.*) is undefined$/.exec(a.message),0),o=l.length;n eval")>-1;q&&(b=j.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==n||c[5]||"undefined"==typeof a.columnNumber||(m[0].column=a.columnNumber+1),e={url:c[3],func:c[1]||i,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}!e.func&&e.line&&(e.func=i),m.push(e)}return m.length?{name:a.name,message:a.message,url:d(),stack:m}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=i),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,g){for(var h,j,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==e&&o!==f.report){if(j={url:null,func:i,line:null,column:null},o.name?j.func=o.name:(h=k.exec(o.toString()))&&(j.func=h[1]),"undefined"==typeof j.func)try{j.func=h.input.substring(0,h.input.indexOf("{"))}catch(p){}m[""+o]?n=!0:m[""+o]=!0,l.push(j)}g&&l.splice(0,g);var q={name:a.name,message:a.message,url:d(),stack:l};return b(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),q}function e(b,e){var g=null;e=null==e?0:+e;try{if(g=a(b))return g}catch(h){if(f.debug)throw h}try{if(g=c(b,e+1))return g}catch(h){if(f.debug)throw h}return{name:b.name,message:b.message,url:d()}}return e.augmentStackTraceWithInitialElement=b,e.computeStackTraceFromStackProp=a,e}(),b.exports=f}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{6:6}],8:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}],9:[function(a,b,c){function d(a,b){var c=(65535&a)+(65535&b),d=(a>>16)+(b>>16)+(c>>16);return d<<16|65535&c}function e(a,b){return a<>>32-b}function f(a,b,c,f,g,h){return d(e(d(d(b,a),d(f,h)),g),c)}function g(a,b,c,d,e,g,h){return f(b&c|~b&d,a,b,e,g,h)}function h(a,b,c,d,e,g,h){return f(b&d|c&~d,a,b,e,g,h)}function i(a,b,c,d,e,g,h){return f(b^c^d,a,b,e,g,h)}function j(a,b,c,d,e,g,h){return f(c^(b|~d),a,b,e,g,h)}function k(a,b){a[b>>5]|=128<>>9<<4)+14]=b;var c,e,f,k,l,m=1732584193,n=-271733879,o=-1732584194,p=271733878;for(c=0;c>5]>>>b%32&255);return c}function m(a){var b,c=[];for(c[(a.length>>2)-1]=void 0,b=0;b>5]|=(255&a.charCodeAt(b/8))<16&&(e=k(e,8*a.length)),c=0;c<16;c+=1)f[c]=909522486^e[c],g[c]=1549556828^e[c];return d=k(f.concat(m(b)),512+8*b.length),l(k(g.concat(d),640))}function p(a){var b,c,d="0123456789abcdef",e="";for(c=0;c>>4&15)+d.charAt(15&b);return e}function q(a){return unescape(encodeURIComponent(a))}function r(a){return n(q(a))}function s(a){return p(r(a))}function t(a,b){return o(q(a),q(b))}function u(a,b){return p(t(a,b))}function v(a,b,c){return b?c?t(b,a):u(b,a):c?r(a):s(a)}b.exports=v},{}]},{},[5,1])(5)}); +/*! Raven.js 3.25.0 (80dffad) | github.com/getsentry/raven-js */ +!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.Raven=a()}}(function(){return function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};b[g][0].call(k.exports,function(a){var c=b[g][1][a];return e(c?c:a)},k,k.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;g":"anonymous component")+(a._isVue&&a.$options.__file?" at "+a.$options.__file:"")}function e(a,b){if(b=b||window.Vue,b&&b.config){var c=b.config.errorHandler;b.config.errorHandler=function(b,e,f){var g={};"[object Object]"===Object.prototype.toString.call(e)&&(g.componentName=d(e),g.propsData=e.$options.propsData),"undefined"!=typeof f&&(g.lifecycleHook=f),a.captureException(b,{extra:g}),"function"==typeof c&&c.call(this,b,e,f)}}}b.exports=e,a(5).addPlugin(b.exports)},{5:5}],2:[function(a,b,c){function d(a){this.name="RavenConfigError",this.message=a}d.prototype=new Error,d.prototype.constructor=d,b.exports=d},{}],3:[function(a,b,c){var d=a(6),e=function(a,b,c){var e=a[b],f=a;if(b in a){var g="warn"===b?"warning":b;a[b]=function(){var a=[].slice.call(arguments),h=d.safeJoin(a," "),i={level:g,logger:"console",extra:{arguments:a}};"assert"===b?a[0]===!1&&(h="Assertion failed: "+(d.safeJoin(a.slice(1)," ")||"console.assert"),i.extra.arguments=a.slice(1),c&&c(h,i)):c&&c(h,i),e&&Function.prototype.apply.call(e,f,a)}}};b.exports={wrapMethod:e}},{6:6}],4:[function(a,b,c){(function(c){function d(){return+new Date}function e(a,b){return s(b)?function(c){return b(c,a)}:b}function f(){this.a=!("object"!=typeof JSON||!JSON.stringify),this.b=!r(S),this.c=!r(T),this.d=null,this.e=null,this.f=null,this.g=null,this.h=null,this.i=null,this.j={},this.k={release:R.SENTRY_RELEASE&&R.SENTRY_RELEASE.id,logger:"javascript",ignoreErrors:[],ignoreUrls:[],whitelistUrls:[],includePaths:[],headers:null,collectWindowErrors:!0,captureUnhandledRejections:!0,maxMessageLength:0,maxUrlLength:250,stackTraceLimit:50,autoBreadcrumbs:!0,instrument:!0,sampleRate:1,sanitizeKeys:[]},this.l={method:"POST",keepalive:!0,referrerPolicy:K()?"origin":""},this.m=0,this.n=!1,this.o=Error.stackTraceLimit,this.p=R.console||{},this.q={},this.r=[],this.s=d(),this.t=[],this.u=[],this.v=null,this.w=R.location,this.x=this.w&&this.w.href,this.y();for(var a in this.p)this.q[a]=this.p[a]}var g=a(7),h=a(8),i=a(9),j=a(2),k=a(6),l=k.isErrorEvent,m=k.isDOMError,n=k.isDOMException,o=k.isError,p=k.isObject,q=k.isPlainObject,r=k.isUndefined,s=k.isFunction,t=k.isString,u=k.isArray,v=k.isEmptyObject,w=k.each,x=k.objectMerge,y=k.truncate,z=k.objectFrozen,A=k.hasKey,B=k.joinRegExp,C=k.urlencode,D=k.uuid4,E=k.htmlTreeAsString,F=k.isSameException,G=k.isSameStacktrace,H=k.parseUrl,I=k.fill,J=k.supportsFetch,K=k.supportsReferrerPolicy,L=k.serializeKeysForMessage,M=k.serializeException,N=k.sanitize,O=a(3).wrapMethod,P="source protocol user pass host port path".split(" "),Q=/^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/,R="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},S=R.document,T=R.navigator;f.prototype={VERSION:"3.25.0",debug:!1,TraceKit:g,config:function(a,b){var c=this;if(c.g)return this.z("error","Error: Raven has already been configured"),c;if(!a)return c;var d=c.k;b&&w(b,function(a,b){"tags"===a||"extra"===a||"user"===a?c.j[a]=b:d[a]=b}),c.setDSN(a),d.ignoreErrors.push(/^Script error\.?$/),d.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/),d.ignoreErrors=B(d.ignoreErrors),d.ignoreUrls=!!d.ignoreUrls.length&&B(d.ignoreUrls),d.whitelistUrls=!!d.whitelistUrls.length&&B(d.whitelistUrls),d.includePaths=B(d.includePaths),d.maxBreadcrumbs=Math.max(0,Math.min(d.maxBreadcrumbs||100,100));var e={xhr:!0,console:!0,dom:!0,location:!0,sentry:!0},f=d.autoBreadcrumbs;"[object Object]"==={}.toString.call(f)?f=x(e,f):f!==!1&&(f=e),d.autoBreadcrumbs=f;var h={tryCatch:!0},i=d.instrument;return"[object Object]"==={}.toString.call(i)?i=x(h,i):i!==!1&&(i=h),d.instrument=i,g.collectWindowErrors=!!d.collectWindowErrors,c},install:function(){var a=this;return a.isSetup()&&!a.n&&(g.report.subscribe(function(){a.A.apply(a,arguments)}),a.k.captureUnhandledRejections&&a.B(),a.C(),a.k.instrument&&a.k.instrument.tryCatch&&a.D(),a.k.autoBreadcrumbs&&a.E(),a.F(),a.n=!0),Error.stackTraceLimit=a.k.stackTraceLimit,this},setDSN:function(a){var b=this,c=b.G(a),d=c.path.lastIndexOf("/"),e=c.path.substr(1,d);b.H=a,b.h=c.user,b.I=c.pass&&c.pass.substr(1),b.i=c.path.substr(d+1),b.g=b.J(c),b.K=b.g+"/"+e+"api/"+b.i+"/store/",this.y()},context:function(a,b,c){return s(a)&&(c=b||[],b=a,a=void 0),this.wrap(a,b).apply(this,c)},wrap:function(a,b,c){function d(){var d=[],f=arguments.length,g=!a||a&&a.deep!==!1;for(c&&s(c)&&c.apply(this,arguments);f--;)d[f]=g?e.wrap(a,arguments[f]):arguments[f];try{return b.apply(this,d)}catch(h){throw e.L(),e.captureException(h,a),h}}var e=this;if(r(b)&&!s(a))return a;if(s(a)&&(b=a,a=void 0),!s(b))return b;try{if(b.M)return b;if(b.N)return b.N}catch(f){return b}for(var g in b)A(b,g)&&(d[g]=b[g]);return d.prototype=b.prototype,b.N=d,d.M=!0,d.O=b,d},uninstall:function(){return g.report.uninstall(),this.P(),this.Q(),this.R(),this.S(),Error.stackTraceLimit=this.o,this.n=!1,this},T:function(a){this.z("debug","Raven caught unhandled promise rejection:",a),this.captureException(a.reason,{extra:{unhandledPromiseRejection:!0}})},B:function(){return this.T=this.T.bind(this),R.addEventListener&&R.addEventListener("unhandledrejection",this.T),this},P:function(){return R.removeEventListener&&R.removeEventListener("unhandledrejection",this.T),this},captureException:function(a,b){if(b=x({trimHeadFrames:0},b?b:{}),l(a)&&a.error)a=a.error;else{if(m(a)||n(a)){var c=a.name||(m(a)?"DOMError":"DOMException"),d=a.message?c+": "+a.message:c;return this.captureMessage(d,x(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}))}if(o(a))a=a;else{if(!q(a))return this.captureMessage(a,x(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}));b=this.U(b,a),a=new Error(b.message)}}this.d=a;try{var e=g.computeStackTrace(a);this.V(e,b)}catch(f){if(a!==f)throw f}return this},U:function(a,b){var c=Object.keys(b).sort(),d=x(a,{message:"Non-Error exception captured with keys: "+L(c),fingerprint:[i(c)],extra:a.extra||{}});return d.extra.W=M(b),d},captureMessage:function(a,b){if(!this.k.ignoreErrors.test||!this.k.ignoreErrors.test(a)){b=b||{},a+="";var c,d=x({message:a},b);try{throw new Error(a)}catch(e){c=e}c.name=null;var f=g.computeStackTrace(c),h=u(f.stack)&&f.stack[1];h&&"Raven.captureException"===h.func&&(h=f.stack[2]);var i=h&&h.url||"";if((!this.k.ignoreUrls.test||!this.k.ignoreUrls.test(i))&&(!this.k.whitelistUrls.test||this.k.whitelistUrls.test(i))){if(this.k.stacktrace||b&&b.stacktrace){d.fingerprint=null==d.fingerprint?a:d.fingerprint,b=x({trimHeadFrames:0},b),b.trimHeadFrames+=1;var j=this.X(f,b);d.stacktrace={frames:j.reverse()}}return d.fingerprint&&(d.fingerprint=u(d.fingerprint)?d.fingerprint:[d.fingerprint]),this.Y(d),this}}},captureBreadcrumb:function(a){var b=x({timestamp:d()/1e3},a);if(s(this.k.breadcrumbCallback)){var c=this.k.breadcrumbCallback(b);if(p(c)&&!v(c))b=c;else if(c===!1)return this}return this.u.push(b),this.u.length>this.k.maxBreadcrumbs&&this.u.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.r.push([a,b]),this.n&&this.F(),this},setUserContext:function(a){return this.j.user=a,this},setExtraContext:function(a){return this.Z("extra",a),this},setTagsContext:function(a){return this.Z("tags",a),this},clearContext:function(){return this.j={},this},getContext:function(){return JSON.parse(h(this.j))},setEnvironment:function(a){return this.k.environment=a,this},setRelease:function(a){return this.k.release=a,this},setDataCallback:function(a){var b=this.k.dataCallback;return this.k.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.k.breadcrumbCallback;return this.k.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.k.shouldSendCallback;return this.k.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.k.transport=a,this},lastException:function(){return this.d},lastEventId:function(){return this.f},isSetup:function(){return!!this.a&&(!!this.g||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.z("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=R.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(S){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.H;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.j.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.J(this.G(c)),h=S.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(S.head||S.body).appendChild(h)}},L:function(){var a=this;this.m+=1,setTimeout(function(){a.m-=1})},$:function(a,b){var c,d;if(this.b){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),S.createEvent?(c=S.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=S.createEventObject(),c.eventType=a);for(d in b)A(b,d)&&(c[d]=b[d]);if(S.createEvent)S.dispatchEvent(c);else try{S.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},_:function(a){var b=this;return function(c){if(b.aa=null,b.v!==c){b.v=c;var d;try{d=E(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ba:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.aa;g||a._("input")(c),clearTimeout(g),a.aa=setTimeout(function(){a.aa=null},b)}}},ca:function(a,b){var c=H(this.w.href),d=H(b),e=H(a);this.x=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},C:function(){var a=this;a.da=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.M?a.da.apply(this.O,arguments):a.da.apply(this,arguments)}},Q:function(){this.da&&(Function.prototype.toString=this.da)},D:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.ca(b.x,c+""),a.apply(this,arguments)}};I(history,"pushState",j,d),I(history,"replaceState",j,d)}if(c.console&&"console"in R&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};w(["debug","info","warn","error","log"],function(a,b){O(console,b,k)})}},R:function(){for(var a;this.t.length;){a=this.t.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},S:function(){for(var a in this.q)this.p[a]=this.q[a]},F:function(){var a=this;w(this.r,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},G:function(a){var b=Q.exec(a),c={},d=7;try{for(;d--;)c[P[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.k.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},J:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},A:function(){this.m||this.V.apply(this,arguments)},V:function(a,b){var c=this.X(a,b);this.$("handle",{stackInfo:a,options:b}),this.fa(a.name,a.message,a.url,a.lineno,c,b)},X:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(w(a.stack,function(b,e){var f=c.ga(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.u,0)}),this.j.user&&(a.user=this.j.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),a=this.pa(a),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||v(a[b]))&&delete a[b]}),s(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!v(a)&&(!s(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.ma()?void this.z("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function F(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&l(b))for(c=b.split(/\s+/),f=0;fc?Q(a,b-1):d}function R(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?X:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function S(a,b){function c(a){return m(a)?a.map(function(a){return c(a)}):k(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!m(b)||m(b)&&0===b.length)return a;var d,e=A(b),f="********";try{d=JSON.parse(T(a))}catch(g){return a}return c(d)}var T=a(8),U="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},V=3,W=51200,X=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isDOMError:g,isDOMException:h,isUndefined:i,isFunction:j,isPlainObject:k,isString:l,isArray:m,isEmptyObject:n,supportsErrorEvent:o,supportsDOMError:p,supportsDOMException:q,supportsFetch:r,supportsReferrerPolicy:s,supportsPromiseRejectionEvent:t,wrappedCallback:u,each:v,objectMerge:w,truncate:y,objectFrozen:x,hasKey:z,joinRegExp:A,urlencode:B,uuid4:D,htmlTreeAsString:E,htmlElementAsString:F,isSameException:I,isSameStacktrace:J,parseUrl:C,fill:K,safeJoin:L,serializeException:Q,serializeKeysForMessage:R,sanitize:S}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{8:8}],7:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}function e(){return"undefined"==typeof document||null==document.location?"":document.location.origin}var f=a(6),g={collectWindowErrors:!0,debug:!1},h="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},i=[].slice,j="?",k=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;g.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function e(a,b){var c=null;if(!b||g.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(i.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,h,i){var l=null,m=f.isErrorEvent(i)?i.error:i,n=f.isErrorEvent(a)?a.message:a;if(v)g.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&f.isError(m))l=g.computeStackTrace(m),e(l,!0);else{var p,r={url:b,line:c,column:h},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(k);p&&(s=p[1],n=p[2])}r.func=j,l={name:s,message:n,url:d(),stack:[r]},e(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=h.onerror,h.onerror=l,r=!0)}function n(){r&&(h.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,e.apply(null,[a,!1].concat(b))}function p(a,b){var c=i.call(arguments,1);if(v){if(u===a)return;o()}var d=g.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),g.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,f,g=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,h=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,i=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,k=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,l=/\((\S*)(?::(\d+))(?::(\d+))\)/,m=a.stack.split("\n"),n=[],o=(/^(.*) is undefined$/.exec(a.message),0),p=m.length;o eval")>-1;r&&(b=k.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==o||c[5]||"undefined"==typeof a.columnNumber||(n[0].column=a.columnNumber+1),f={url:c[3],func:c[1]||j,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}if(!f.func&&f.line&&(f.func=j),f.url&&"blob:"===f.url.substr(0,5)){var s=new XMLHttpRequest;if(s.open("GET",f.url,!1),s.send(null),200===s.status){var t=s.responseText||"";t=t.slice(-300);var u=t.match(/\/\/# sourceMappingURL=(.*)$/);if(u){var v=u[1];"~"===v.charAt(0)&&(v=e()+v.slice(1)),f.url=v.slice(0,-4)}}}n.push(f)}return n.length?{name:a.name,message:a.message,url:d(),stack:n}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=j),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,e){for(var h,i,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==f&&o!==g.report){if(i={url:null,func:j,line:null,column:null},o.name?i.func=o.name:(h=k.exec(o.toString()))&&(i.func=h[1]),"undefined"==typeof i.func)try{i.func=h.input.substring(0,h.input.indexOf("{"))}catch(p){}m[""+o]?n=!0:m[""+o]=!0,l.push(i)}e&&l.splice(0,e); +var q={name:a.name,message:a.message,url:d(),stack:l};return b(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),q}function f(b,e){var f=null;e=null==e?0:+e;try{if(f=a(b))return f}catch(h){if(g.debug)throw h}try{if(f=c(b,e+1))return f}catch(h){if(g.debug)throw h}return{name:b.name,message:b.message,url:d()}}return f.augmentStackTraceWithInitialElement=b,f.computeStackTraceFromStackProp=a,f}(),b.exports=g}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{6:6}],8:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}],9:[function(a,b,c){function d(a,b){var c=(65535&a)+(65535&b),d=(a>>16)+(b>>16)+(c>>16);return d<<16|65535&c}function e(a,b){return a<>>32-b}function f(a,b,c,f,g,h){return d(e(d(d(b,a),d(f,h)),g),c)}function g(a,b,c,d,e,g,h){return f(b&c|~b&d,a,b,e,g,h)}function h(a,b,c,d,e,g,h){return f(b&d|c&~d,a,b,e,g,h)}function i(a,b,c,d,e,g,h){return f(b^c^d,a,b,e,g,h)}function j(a,b,c,d,e,g,h){return f(c^(b|~d),a,b,e,g,h)}function k(a,b){a[b>>5]|=128<>>9<<4)+14]=b;var c,e,f,k,l,m=1732584193,n=-271733879,o=-1732584194,p=271733878;for(c=0;c>5]>>>b%32&255);return c}function m(a){var b,c=[];for(c[(a.length>>2)-1]=void 0,b=0;b>5]|=(255&a.charCodeAt(b/8))<16&&(e=k(e,8*a.length)),c=0;c<16;c+=1)f[c]=909522486^e[c],g[c]=1549556828^e[c];return d=k(f.concat(m(b)),512+8*b.length),l(k(g.concat(d),640))}function p(a){var b,c,d="0123456789abcdef",e="";for(c=0;c>>4&15)+d.charAt(15&b);return e}function q(a){return unescape(encodeURIComponent(a))}function r(a){return n(q(a))}function s(a){return p(r(a))}function t(a,b){return o(q(a),q(b))}function u(a,b){return p(t(a,b))}function v(a,b,c){return b?c?t(b,a):u(b,a):c?r(a):s(a)}b.exports=v},{}]},{},[5,1])(5)}); //# sourceMappingURL=raven.min.js.map \ No newline at end of file diff --git a/dist/vue/raven.min.js.map b/dist/vue/raven.min.js.map index 25486000b81c..8ac81d20a06d 100644 --- a/dist/vue/raven.min.js.map +++ b/dist/vue/raven.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","formatComponentName","vm","$root","name","_isVue","$options","_componentTag","__file","vuePlugin","Vue","config","_oldOnError","errorHandler","error","info","metaData","Object","prototype","toString","componentName","propsData","lifecycleHook","captureException","extra","addPlugin","5","2","RavenConfigError","message","constructor","3","utils","wrapMethod","console","level","callback","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","msg","safeJoin","data","logger","Function","apply","6","4","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","sanitizeKeys","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isError","isObject","isPlainObject","isErrorEvent","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","sanitize","wrapConsoleMethod","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","dsn","options","_logDebug","globalOptions","key","value","setDSN","push","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","substr","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","context","func","undefined","wrap","_before","wrapped","deep","_ignoreNextOnError","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","T","event","reason","unhandledPromiseRejection","B","_promiseRejectionHandler","bind","addEventListener","P","removeEventListener","ex","trimHeadFrames","captureMessage","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","U","currentOptions","exKeys","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","setDataCallback","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","L","setTimeout","$","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","_","evtName","_keypressTimeout","target","category","ba","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","ca","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","C","_originalFunctionToString","Q","D","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","type","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","E","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","R","builtin","S","F","installer","concat","G","str","m","exec","allowSecretKey","J","port","A","V","stackInfo","_triggerEvent","_processException","lineno","X","frame","_normalizeFrame","in_app","ga","stackInfoUrl","normalized","filename","line","colno","column","function","fa","prefixedMessage","exception","values","culprit","ha","request","Referer","breadcrumbs","_trimBreadcrumbs","ia","urlProp","urlProps","ja","httpData","userAgent","User-Agent","referrer","y","_backoffDuration","_backoffStart","ma","na","current","last","oa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Y","baseData","project","platform","_getHttpData","serverName","server_name","_sanitizeData","forEach","random","_sendProcessedPayload","pa","ra","qa","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","sa","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","onerror","open","setRequestHeader","send","ta","hash","evaluated","z","Z","setUser","setReleaseContext","7","8","9","RavenConstructor","_Raven","noConflict","Client","what","supportsErrorEvent","ErrorEvent","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","wrappedCallback","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","sanitizeMask","safeInput","o_O","getLocationHref","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","charAt","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","string","raw"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file +{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","formatComponentName","vm","$root","name","_isVue","$options","_componentTag","__file","vuePlugin","Vue","config","_oldOnError","errorHandler","error","info","metaData","Object","prototype","toString","componentName","propsData","lifecycleHook","captureException","extra","addPlugin","5","2","RavenConfigError","message","constructor","3","utils","wrapMethod","console","level","callback","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","msg","safeJoin","data","logger","Function","apply","6","4","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","sanitizeKeys","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isErrorEvent","isDOMError","isDOMException","isError","isObject","isPlainObject","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","sanitize","wrapConsoleMethod","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","dsn","options","_logDebug","globalOptions","key","value","setDSN","push","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","substr","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","context","func","undefined","wrap","_before","wrapped","deep","_ignoreNextOnError","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","T","event","reason","unhandledPromiseRejection","B","_promiseRejectionHandler","bind","addEventListener","P","removeEventListener","ex","trimHeadFrames","captureMessage","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","U","currentOptions","exKeys","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","setDataCallback","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","L","setTimeout","$","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","_","evtName","_keypressTimeout","target","category","ba","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","ca","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","C","_originalFunctionToString","Q","D","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","type","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","E","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","R","builtin","S","F","installer","concat","G","str","m","exec","allowSecretKey","J","port","A","V","stackInfo","_triggerEvent","_processException","lineno","X","frame","_normalizeFrame","in_app","ga","stackInfoUrl","normalized","filename","line","colno","column","function","fa","prefixedMessage","exception","values","culprit","ha","request","Referer","breadcrumbs","_trimBreadcrumbs","ia","urlProp","urlProps","ja","httpData","userAgent","User-Agent","referrer","y","_backoffDuration","_backoffStart","ma","na","current","last","oa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Y","baseData","project","platform","_getHttpData","serverName","server_name","_sanitizeData","forEach","random","_sendProcessedPayload","pa","ra","qa","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","sa","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","onerror","open","setRequestHeader","send","ta","hash","evaluated","z","Z","setUser","setReleaseContext","7","8","9","RavenConstructor","_Raven","noConflict","Client","what","supportsErrorEvent","ErrorEvent","supportsDOMError","DOMError","supportsDOMException","DOMException","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","wrappedCallback","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","sanitizeMask","safeInput","o_O","getLocationHref","getLocationOrigin","origin","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","responseText","sourceMaps","sourceMapAddress","charAt","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","string","raw"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file diff --git a/docs/sentry-doc-config.json b/docs/sentry-doc-config.json index d711fcc512e0..cbc04efe1219 100644 --- a/docs/sentry-doc-config.json +++ b/docs/sentry-doc-config.json @@ -66,6 +66,6 @@ } }, "vars": { - "RAVEN_VERSION": "3.24.2" + "RAVEN_VERSION": "3.25.0" } } diff --git a/package.json b/package.json index 08a38099fc45..b18e4df799ae 100644 --- a/package.json +++ b/package.json @@ -9,7 +9,7 @@ "raven", "sentry" ], - "version": "3.24.2", + "version": "3.25.0", "repository": "git://github.com/getsentry/raven-js.git", "license": "BSD-2-Clause", "homepage": "https://github.com/getsentry/raven-js", diff --git a/src/raven.js b/src/raven.js index 20c175336a30..51d1c7cf385a 100644 --- a/src/raven.js +++ b/src/raven.js @@ -139,7 +139,7 @@ Raven.prototype = { // webpack (using a build step causes webpack #1617). Grunt verifies that // this value matches package.json during build. // See: https://github.com/getsentry/raven-js/issues/465 - VERSION: '3.24.2', + VERSION: '3.25.0', debug: false, diff --git a/test/raven.test.js b/test/raven.test.js index 7047cc85a1d0..1dd3c3d819b3 100644 --- a/test/raven.test.js +++ b/test/raven.test.js @@ -1370,7 +1370,7 @@ describe('globals', function() { extra: {'session:duration': 100} }); assert.deepEqual(opts.auth, { - sentry_client: 'raven-js/3.24.2', + sentry_client: 'raven-js/3.25.0', sentry_key: 'abc', sentry_version: '7' }); @@ -1417,7 +1417,7 @@ describe('globals', function() { extra: {'session:duration': 100} }); assert.deepEqual(opts.auth, { - sentry_client: 'raven-js/3.24.2', + sentry_client: 'raven-js/3.25.0', sentry_key: 'abc', sentry_secret: 'def', sentry_version: '7' From c26696ada4976f4e6f0efc3e57aafc91fe558f57 Mon Sep 17 00:00:00 2001 From: Herb Brewer Date: Fri, 11 May 2018 16:14:33 +0800 Subject: [PATCH 50/75] fix: use safe _window and _navigator references (#1324) - use _window.history instead of history (history is undefined in wechat miniapp environment) - use _navigator.userAgent instead of navigator (navigator is undefined in wechat miniapp environment) --- src/raven.js | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/raven.js b/src/raven.js index 51d1c7cf385a..7c8552d565aa 100644 --- a/src/raven.js +++ b/src/raven.js @@ -1448,8 +1448,8 @@ Raven.prototype = { var hasPushAndReplaceState = !isChromePackagedApp && _window.history && - history.pushState && - history.replaceState; + _window.history.pushState && + _window.history.replaceState; if (autoBreadcrumbs.location && hasPushAndReplaceState) { // TODO: remove onpopstate handler on uninstall() var oldOnPopState = _window.onpopstate; @@ -1478,8 +1478,8 @@ Raven.prototype = { }; }; - fill(history, 'pushState', historyReplacementFunction, wrappedBuiltIns); - fill(history, 'replaceState', historyReplacementFunction, wrappedBuiltIns); + fill(_window.history, 'pushState', historyReplacementFunction, wrappedBuiltIns); + fill(_window.history, 'replaceState', historyReplacementFunction, wrappedBuiltIns); } if (autoBreadcrumbs.console && 'console' in _window && console.log) { @@ -1769,7 +1769,7 @@ Raven.prototype = { if (this._hasNavigator && _navigator.userAgent) { httpData.headers = { - 'User-Agent': navigator.userAgent + 'User-Agent': _navigator.userAgent }; } From 4533b2c1ef5ca11c0095c19c099a43f826c81ed5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kamil=20Og=C3=B3rek?= Date: Fri, 11 May 2018 12:45:02 +0200 Subject: [PATCH 51/75] fix: Polyfill location.origin for IE10 (#1325) --- vendor/TraceKit/tracekit.js | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/vendor/TraceKit/tracekit.js b/vendor/TraceKit/tracekit.js index 17bfed8ddce7..7dc3db882c54 100644 --- a/vendor/TraceKit/tracekit.js +++ b/vendor/TraceKit/tracekit.js @@ -35,6 +35,16 @@ function getLocationHref() { function getLocationOrigin() { if (typeof document === 'undefined' || document.location == null) return ''; + + // Oh dear IE10... + if (!document.location.origin) { + document.location.origin = + document.location.protocol + + '//' + + document.location.hostname + + (document.location.port ? ':' + document.location.port : ''); + } + return document.location.origin; } From b6f3c7a4312db916c53df695af1912cdafa9c589 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kamil=20Og=C3=B3rek?= Date: Fri, 11 May 2018 12:45:12 +0200 Subject: [PATCH 52/75] build: fix missing plugins in dist directory and simplify grunt build (#1327) --- Gruntfile.js | 45 ++++++++++++++++++++------------------------- 1 file changed, 20 insertions(+), 25 deletions(-) diff --git a/Gruntfile.js b/Gruntfile.js index 8e94445e7634..ecc3a54aa094 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -85,17 +85,22 @@ module.exports = function(grunt) { }); var pluginCombinations = combine(plugins); - var pluginConcatFiles = pluginCombinations.reduce(function(dict, comb) { - var key = comb.map(function(plugin) { - return path.basename(plugin, '.js'); - }); - key.sort(); - var dest = path.join('build/', key.join(','), '/raven.js'); - dict[dest] = ['src/singleton.js'].concat(comb); + var pluginConcatFiles = pluginCombinations + .filter(function(comb) { + return comb.length > 0; + }) + .reduce(function(dict, comb) { + var key = comb.map(function(plugin) { + return path.basename(plugin, '.js'); + }); + key.sort(); + + var dest = path.join('build/', key.join(','), '/raven.js'); + dict[dest] = ['src/singleton.js'].concat(comb); - return dict; - }, {}); + return dict; + }, {}); var browserifyConfig = { options: { @@ -302,24 +307,14 @@ module.exports = function(grunt) { // Build tasks grunt.registerTask('_prep', ['clean', 'gitinfo', 'version']); + grunt.registerTask('build', ['_prep', 'build.core', 'build.plugins', 'sri:build']); + grunt.registerTask('build.test', ['_prep', 'build.core', 'browserify:test']); + grunt.registerTask('build.core', ['browserify:core']); grunt.registerTask( - 'browserify.core', - ['_prep', 'browserify:core'].concat(browserifyPluginTaskNames) + 'build.plugins', + browserifyPluginTaskNames.concat('browserify:plugins-combined') ); - grunt.registerTask('browserify.plugins-combined', [ - '_prep', - 'browserify:plugins-combined' - ]); - grunt.registerTask('build', ['build.core', 'build.plugins-combined']); - grunt.registerTask('build.test', ['_prep', 'browserify.core', 'browserify:test']); - grunt.registerTask('build.core', ['browserify.core', 'uglify', 'sri:dist']); - grunt.registerTask('build.plugins-combined', [ - 'browserify.plugins-combined', - 'uglify', - 'sri:dist', - 'sri:build' - ]); - grunt.registerTask('dist', ['build', 'copy:dist']); + grunt.registerTask('dist', ['build', 'uglify', 'copy:dist', 'sri:dist']); grunt.registerTask('publish', ['build', 's3']); grunt.registerTask('test:ci', ['config:ci', 'build.test']); }; From 66b314849c79c780a2447b8a30d7c5a2090705f7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kamil=20Og=C3=B3rek?= Date: Fri, 11 May 2018 12:48:29 +0200 Subject: [PATCH 53/75] 3.25.1 --- CHANGELOG.md | 6 + bower.json | 2 +- .../raven.js | 24 +- .../raven.min.js | 6 +- .../raven.min.js.map | 2 +- dist/angular,console,ember,require/raven.js | 24 +- .../raven.min.js | 6 +- .../raven.min.js.map | 2 +- dist/angular,console,ember,vue/raven.js | 24 +- dist/angular,console,ember,vue/raven.min.js | 6 +- .../raven.min.js.map | 2 +- dist/angular,console,ember/raven.js | 24 +- dist/angular,console,ember/raven.min.js | 6 +- dist/angular,console,ember/raven.min.js.map | 2 +- dist/angular,console,require,vue/raven.js | 24 +- dist/angular,console,require,vue/raven.min.js | 6 +- .../raven.min.js.map | 2 +- dist/angular,console,require/raven.js | 24 +- dist/angular,console,require/raven.min.js | 6 +- dist/angular,console,require/raven.min.js.map | 2 +- dist/angular,console,vue/raven.js | 24 +- dist/angular,console,vue/raven.min.js | 6 +- dist/angular,console,vue/raven.min.js.map | 2 +- dist/angular,console/raven.js | 24 +- dist/angular,console/raven.min.js | 6 +- dist/angular,console/raven.min.js.map | 2 +- dist/angular,ember,require,vue/raven.js | 24 +- dist/angular,ember,require,vue/raven.min.js | 6 +- .../raven.min.js.map | 2 +- dist/angular,ember,require/raven.js | 24 +- dist/angular,ember,require/raven.min.js | 6 +- dist/angular,ember,require/raven.min.js.map | 2 +- dist/angular,ember,vue/raven.js | 24 +- dist/angular,ember,vue/raven.min.js | 6 +- dist/angular,ember,vue/raven.min.js.map | 2 +- dist/angular,ember/raven.js | 24 +- dist/angular,ember/raven.min.js | 6 +- dist/angular,ember/raven.min.js.map | 2 +- dist/angular,require,vue/raven.js | 24 +- dist/angular,require,vue/raven.min.js | 6 +- dist/angular,require,vue/raven.min.js.map | 2 +- dist/angular,require/raven.js | 24 +- dist/angular,require/raven.min.js | 6 +- dist/angular,require/raven.min.js.map | 2 +- dist/angular,vue/raven.js | 24 +- dist/angular,vue/raven.min.js | 6 +- dist/angular,vue/raven.min.js.map | 2 +- dist/angular/raven.js | 24 +- dist/angular/raven.min.js | 6 +- dist/angular/raven.min.js.map | 2 +- dist/console,ember,require,vue/raven.js | 24 +- dist/console,ember,require,vue/raven.min.js | 6 +- .../raven.min.js.map | 2 +- dist/console,ember,require/raven.js | 24 +- dist/console,ember,require/raven.min.js | 6 +- dist/console,ember,require/raven.min.js.map | 2 +- dist/console,ember,vue/raven.js | 24 +- dist/console,ember,vue/raven.min.js | 6 +- dist/console,ember,vue/raven.min.js.map | 2 +- dist/console,ember/raven.js | 24 +- dist/console,ember/raven.min.js | 6 +- dist/console,ember/raven.min.js.map | 2 +- dist/console,require,vue/raven.js | 24 +- dist/console,require,vue/raven.min.js | 6 +- dist/console,require,vue/raven.min.js.map | 2 +- dist/console,require/raven.js | 24 +- dist/console,require/raven.min.js | 6 +- dist/console,require/raven.min.js.map | 2 +- dist/console,vue/raven.js | 24 +- dist/console,vue/raven.min.js | 6 +- dist/console,vue/raven.min.js.map | 2 +- dist/console/raven.js | 24 +- dist/console/raven.min.js | 6 +- dist/console/raven.min.js.map | 2 +- dist/ember,require,vue/raven.js | 24 +- dist/ember,require,vue/raven.min.js | 6 +- dist/ember,require,vue/raven.min.js.map | 2 +- dist/ember,require/raven.js | 24 +- dist/ember,require/raven.min.js | 6 +- dist/ember,require/raven.min.js.map | 2 +- dist/ember,vue/raven.js | 24 +- dist/ember,vue/raven.min.js | 6 +- dist/ember,vue/raven.min.js.map | 2 +- dist/ember/raven.js | 24 +- dist/ember/raven.min.js | 6 +- dist/ember/raven.min.js.map | 2 +- dist/plugins/angular.js | 815 +++++++++++++++++ dist/plugins/angular.min.js | 3 + dist/plugins/angular.min.js.map | 1 + dist/plugins/console.js | 817 ++++++++++++++++++ dist/plugins/console.min.js | 3 + dist/plugins/console.min.js.map | 1 + dist/plugins/ember.js | 46 + dist/plugins/ember.min.js | 3 + dist/plugins/ember.min.js.map | 1 + dist/plugins/require.js | 30 + dist/plugins/require.min.js | 3 + dist/plugins/require.min.js.map | 1 + dist/plugins/vue.js | 63 ++ dist/plugins/vue.min.js | 3 + dist/plugins/vue.min.js.map | 1 + dist/raven.js | 24 +- dist/raven.min.js | 6 +- dist/raven.min.js.map | 2 +- dist/require,vue/raven.js | 24 +- dist/require,vue/raven.min.js | 6 +- dist/require,vue/raven.min.js.map | 2 +- dist/require/raven.js | 24 +- dist/require/raven.min.js | 6 +- dist/require/raven.min.js.map | 2 +- dist/sri.json | 578 +------------ dist/vue/raven.js | 24 +- dist/vue/raven.min.js | 6 +- dist/vue/raven.min.js.map | 2 +- docs/sentry-doc-config.json | 2 +- package.json | 2 +- src/raven.js | 2 +- test/raven.test.js | 4 +- 118 files changed, 2485 insertions(+), 926 deletions(-) create mode 100644 dist/plugins/angular.js create mode 100644 dist/plugins/angular.min.js create mode 100644 dist/plugins/angular.min.js.map create mode 100644 dist/plugins/console.js create mode 100644 dist/plugins/console.min.js create mode 100644 dist/plugins/console.min.js.map create mode 100644 dist/plugins/ember.js create mode 100644 dist/plugins/ember.min.js create mode 100644 dist/plugins/ember.min.js.map create mode 100644 dist/plugins/require.js create mode 100644 dist/plugins/require.min.js create mode 100644 dist/plugins/require.min.js.map create mode 100644 dist/plugins/vue.js create mode 100644 dist/plugins/vue.min.js create mode 100644 dist/plugins/vue.min.js.map diff --git a/CHANGELOG.md b/CHANGELOG.md index 3fdb9664d38f..e11d3c4a6ed3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,11 @@ # Changelog +## 3.25.1 + +* BUILD: fix missing plugins in dist directory and simplify grunt build (#1327) +* BUGFIX: Polyfill location.origin for IE10 (#1325) +* BUGFIX: use safe _window and _navigator references (#1324) + ## 3.25.0 * FEAT: Handle JavaScript loaded in the browser inside a blob (#1322) diff --git a/bower.json b/bower.json index 918ec6cc060f..c8b09649dcd4 100644 --- a/bower.json +++ b/bower.json @@ -1,6 +1,6 @@ { "name": "raven-js", - "version": "3.25.0", + "version": "3.25.1", "dependencies": {}, "main": "dist/raven.js", "ignore": [ diff --git a/dist/angular,console,ember,require,vue/raven.js b/dist/angular,console,ember,require,vue/raven.js index 8aa12537f179..df24093f90fc 100644 --- a/dist/angular,console,ember,require,vue/raven.js +++ b/dist/angular,console,ember,require,vue/raven.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.25.0 (80dffad) | github.com/getsentry/raven-js */ +/*! Raven.js 3.25.1 (b6f3c7a) | github.com/getsentry/raven-js */ /* * Includes TraceKit @@ -419,7 +419,7 @@ Raven.prototype = { // webpack (using a build step causes webpack #1617). Grunt verifies that // this value matches package.json during build. // See: https://github.com/getsentry/raven-js/issues/465 - VERSION: '3.25.0', + VERSION: '3.25.1', debug: false, @@ -1728,8 +1728,8 @@ Raven.prototype = { var hasPushAndReplaceState = !isChromePackagedApp && _window.history && - history.pushState && - history.replaceState; + _window.history.pushState && + _window.history.replaceState; if (autoBreadcrumbs.location && hasPushAndReplaceState) { // TODO: remove onpopstate handler on uninstall() var oldOnPopState = _window.onpopstate; @@ -1758,8 +1758,8 @@ Raven.prototype = { }; }; - fill(history, 'pushState', historyReplacementFunction, wrappedBuiltIns); - fill(history, 'replaceState', historyReplacementFunction, wrappedBuiltIns); + fill(_window.history, 'pushState', historyReplacementFunction, wrappedBuiltIns); + fill(_window.history, 'replaceState', historyReplacementFunction, wrappedBuiltIns); } if (autoBreadcrumbs.console && 'console' in _window && console.log) { @@ -2049,7 +2049,7 @@ Raven.prototype = { if (this._hasNavigator && _navigator.userAgent) { httpData.headers = { - 'User-Agent': navigator.userAgent + 'User-Agent': _navigator.userAgent }; } @@ -3224,6 +3224,16 @@ function getLocationHref() { function getLocationOrigin() { if (typeof document === 'undefined' || document.location == null) return ''; + + // Oh dear IE10... + if (!document.location.origin) { + document.location.origin = + document.location.protocol + + '//' + + document.location.hostname + + (document.location.port ? ':' + document.location.port : ''); + } + return document.location.origin; } diff --git a/dist/angular,console,ember,require,vue/raven.min.js b/dist/angular,console,ember,require,vue/raven.min.js index c6db73b00314..735869d6b4b8 100644 --- a/dist/angular,console,ember,require,vue/raven.min.js +++ b/dist/angular,console,ember,require,vue/raven.min.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.25.0 (80dffad) | github.com/getsentry/raven-js */ -!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.Raven=a()}}(function(){var a;return function b(a,c,d){function e(g,h){if(!c[g]){if(!a[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};a[g][0].call(k.exports,function(b){var c=a[g][1][b];return e(c?c:b)},k,k.exports,b,a,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;g":"anonymous component")+(a._isVue&&a.$options.__file?" at "+a.$options.__file:"")}function e(a,b){if(b=b||window.Vue,b&&b.config){var c=b.config.errorHandler;b.config.errorHandler=function(b,e,f){var g={};"[object Object]"===Object.prototype.toString.call(e)&&(g.componentName=d(e),g.propsData=e.$options.propsData),"undefined"!=typeof f&&(g.lifecycleHook=f),a.captureException(b,{extra:g}),"function"==typeof c&&c.call(this,b,e,f)}}}b.exports=e,a(9).addPlugin(b.exports)},{9:9}],6:[function(a,b,c){function d(a){this.name="RavenConfigError",this.message=a}d.prototype=new Error,d.prototype.constructor=d,b.exports=d},{}],7:[function(a,b,c){var d=a(10),e=function(a,b,c){var e=a[b],f=a;if(b in a){var g="warn"===b?"warning":b;a[b]=function(){var a=[].slice.call(arguments),h=d.safeJoin(a," "),i={level:g,logger:"console",extra:{arguments:a}};"assert"===b?a[0]===!1&&(h="Assertion failed: "+(d.safeJoin(a.slice(1)," ")||"console.assert"),i.extra.arguments=a.slice(1),c&&c(h,i)):c&&c(h,i),e&&Function.prototype.apply.call(e,f,a)}}};b.exports={wrapMethod:e}},{10:10}],8:[function(a,b,c){(function(c){function d(){return+new Date}function e(a,b){return s(b)?function(c){return b(c,a)}:b}function f(){this.b=!("object"!=typeof JSON||!JSON.stringify),this.c=!r(S),this.d=!r(T),this.e=null,this.f=null,this.g=null,this.h=null,this.i=null,this.j=null,this.k={},this.l={release:R.SENTRY_RELEASE&&R.SENTRY_RELEASE.id,logger:"javascript",ignoreErrors:[],ignoreUrls:[],whitelistUrls:[],includePaths:[],headers:null,collectWindowErrors:!0,captureUnhandledRejections:!0,maxMessageLength:0,maxUrlLength:250,stackTraceLimit:50,autoBreadcrumbs:!0,instrument:!0,sampleRate:1,sanitizeKeys:[]},this.m={method:"POST",keepalive:!0,referrerPolicy:K()?"origin":""},this.n=0,this.o=!1,this.p=Error.stackTraceLimit,this.q=R.console||{},this.r={},this.s=[],this.t=d(),this.u=[],this.v=[],this.w=null,this.x=R.location,this.y=this.x&&this.x.href,this.z();for(var a in this.q)this.r[a]=this.q[a]}var g=a(11),h=a(12),i=a(13),j=a(6),k=a(10),l=k.isErrorEvent,m=k.isDOMError,n=k.isDOMException,o=k.isError,p=k.isObject,q=k.isPlainObject,r=k.isUndefined,s=k.isFunction,t=k.isString,u=k.isArray,v=k.isEmptyObject,w=k.each,x=k.objectMerge,y=k.truncate,z=k.objectFrozen,A=k.hasKey,B=k.joinRegExp,C=k.urlencode,D=k.uuid4,E=k.htmlTreeAsString,F=k.isSameException,G=k.isSameStacktrace,H=k.parseUrl,I=k.fill,J=k.supportsFetch,K=k.supportsReferrerPolicy,L=k.serializeKeysForMessage,M=k.serializeException,N=k.sanitize,O=a(7).wrapMethod,P="source protocol user pass host port path".split(" "),Q=/^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/,R="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},S=R.document,T=R.navigator;f.prototype={VERSION:"3.25.0",debug:!1,TraceKit:g,config:function(a,b){var c=this;if(c.h)return this.A("error","Error: Raven has already been configured"),c;if(!a)return c;var d=c.l;b&&w(b,function(a,b){"tags"===a||"extra"===a||"user"===a?c.k[a]=b:d[a]=b}),c.setDSN(a),d.ignoreErrors.push(/^Script error\.?$/),d.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/),d.ignoreErrors=B(d.ignoreErrors),d.ignoreUrls=!!d.ignoreUrls.length&&B(d.ignoreUrls),d.whitelistUrls=!!d.whitelistUrls.length&&B(d.whitelistUrls),d.includePaths=B(d.includePaths),d.maxBreadcrumbs=Math.max(0,Math.min(d.maxBreadcrumbs||100,100));var e={xhr:!0,console:!0,dom:!0,location:!0,sentry:!0},f=d.autoBreadcrumbs;"[object Object]"==={}.toString.call(f)?f=x(e,f):f!==!1&&(f=e),d.autoBreadcrumbs=f;var h={tryCatch:!0},i=d.instrument;return"[object Object]"==={}.toString.call(i)?i=x(h,i):i!==!1&&(i=h),d.instrument=i,g.collectWindowErrors=!!d.collectWindowErrors,c},install:function(){var a=this;return a.isSetup()&&!a.o&&(g.report.subscribe(function(){a.B.apply(a,arguments)}),a.l.captureUnhandledRejections&&a.C(),a.D(),a.l.instrument&&a.l.instrument.tryCatch&&a.E(),a.l.autoBreadcrumbs&&a.F(),a.G(),a.o=!0),Error.stackTraceLimit=a.l.stackTraceLimit,this},setDSN:function(a){var b=this,c=b.H(a),d=c.path.lastIndexOf("/"),e=c.path.substr(1,d);b.I=a,b.i=c.user,b.J=c.pass&&c.pass.substr(1),b.j=c.path.substr(d+1),b.h=b.K(c),b.L=b.h+"/"+e+"api/"+b.j+"/store/",this.z()},context:function(a,b,c){return s(a)&&(c=b||[],b=a,a=void 0),this.wrap(a,b).apply(this,c)},wrap:function(a,b,c){function d(){var d=[],f=arguments.length,g=!a||a&&a.deep!==!1;for(c&&s(c)&&c.apply(this,arguments);f--;)d[f]=g?e.wrap(a,arguments[f]):arguments[f];try{return b.apply(this,d)}catch(h){throw e.M(),e.captureException(h,a),h}}var e=this;if(r(b)&&!s(a))return a;if(s(a)&&(b=a,a=void 0),!s(b))return b;try{if(b.N)return b;if(b.O)return b.O}catch(f){return b}for(var g in b)A(b,g)&&(d[g]=b[g]);return d.prototype=b.prototype,b.O=d,d.N=!0,d.P=b,d},uninstall:function(){return g.report.uninstall(),this.Q(),this.R(),this.S(),this.T(),Error.stackTraceLimit=this.p,this.o=!1,this},U:function(a){this.A("debug","Raven caught unhandled promise rejection:",a),this.captureException(a.reason,{extra:{unhandledPromiseRejection:!0}})},C:function(){return this.U=this.U.bind(this),R.addEventListener&&R.addEventListener("unhandledrejection",this.U),this},Q:function(){return R.removeEventListener&&R.removeEventListener("unhandledrejection",this.U),this},captureException:function(a,b){if(b=x({trimHeadFrames:0},b?b:{}),l(a)&&a.error)a=a.error;else{if(m(a)||n(a)){var c=a.name||(m(a)?"DOMError":"DOMException"),d=a.message?c+": "+a.message:c;return this.captureMessage(d,x(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}))}if(o(a))a=a;else{if(!q(a))return this.captureMessage(a,x(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}));b=this.V(b,a),a=new Error(b.message)}}this.e=a;try{var e=g.computeStackTrace(a);this.W(e,b)}catch(f){if(a!==f)throw f}return this},V:function(a,b){var c=Object.keys(b).sort(),d=x(a,{message:"Non-Error exception captured with keys: "+L(c),fingerprint:[i(c)],extra:a.extra||{}});return d.extra.X=M(b),d},captureMessage:function(a,b){if(!this.l.ignoreErrors.test||!this.l.ignoreErrors.test(a)){b=b||{},a+="";var c,d=x({message:a},b);try{throw new Error(a)}catch(e){c=e}c.name=null;var f=g.computeStackTrace(c),h=u(f.stack)&&f.stack[1];h&&"Raven.captureException"===h.func&&(h=f.stack[2]);var i=h&&h.url||"";if((!this.l.ignoreUrls.test||!this.l.ignoreUrls.test(i))&&(!this.l.whitelistUrls.test||this.l.whitelistUrls.test(i))){if(this.l.stacktrace||b&&b.stacktrace){d.fingerprint=null==d.fingerprint?a:d.fingerprint,b=x({trimHeadFrames:0},b),b.trimHeadFrames+=1;var j=this.Y(f,b);d.stacktrace={frames:j.reverse()}}return d.fingerprint&&(d.fingerprint=u(d.fingerprint)?d.fingerprint:[d.fingerprint]),this.Z(d),this}}},captureBreadcrumb:function(a){var b=x({timestamp:d()/1e3},a);if(s(this.l.breadcrumbCallback)){var c=this.l.breadcrumbCallback(b);if(p(c)&&!v(c))b=c;else if(c===!1)return this}return this.v.push(b),this.v.length>this.l.maxBreadcrumbs&&this.v.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.s.push([a,b]),this.o&&this.G(),this},setUserContext:function(a){return this.k.user=a,this},setExtraContext:function(a){return this.$("extra",a),this},setTagsContext:function(a){return this.$("tags",a),this},clearContext:function(){return this.k={},this},getContext:function(){return JSON.parse(h(this.k))},setEnvironment:function(a){return this.l.environment=a,this},setRelease:function(a){return this.l.release=a,this},setDataCallback:function(a){var b=this.l.dataCallback;return this.l.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.l.breadcrumbCallback;return this.l.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.l.shouldSendCallback;return this.l.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.l.transport=a,this},lastException:function(){return this.e},lastEventId:function(){return this.g},isSetup:function(){return!!this.b&&(!!this.h||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.A("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=R.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(S){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.I;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.k.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.K(this.H(c)),h=S.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(S.head||S.body).appendChild(h)}},M:function(){var a=this;this.n+=1,setTimeout(function(){a.n-=1})},_:function(a,b){var c,d;if(this.c){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),S.createEvent?(c=S.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=S.createEventObject(),c.eventType=a);for(d in b)A(b,d)&&(c[d]=b[d]);if(S.createEvent)S.dispatchEvent(c);else try{S.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},aa:function(a){var b=this;return function(c){if(b.ba=null,b.w!==c){b.w=c;var d;try{d=E(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ca:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.ba;g||a.aa("input")(c),clearTimeout(g),a.ba=setTimeout(function(){a.ba=null},b)}}},da:function(a,b){var c=H(this.x.href),d=H(b),e=H(a);this.y=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},D:function(){var a=this;a.ea=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.N?a.ea.apply(this.P,arguments):a.ea.apply(this,arguments)}},R:function(){this.ea&&(Function.prototype.toString=this.ea)},E:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.da(b.y,c+""),a.apply(this,arguments)}};I(history,"pushState",j,d),I(history,"replaceState",j,d)}if(c.console&&"console"in R&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};w(["debug","info","warn","error","log"],function(a,b){O(console,b,k)})}},S:function(){for(var a;this.u.length;){a=this.u.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},T:function(){for(var a in this.r)this.q[a]=this.r[a]},G:function(){var a=this;w(this.s,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},H:function(a){var b=Q.exec(a),c={},d=7;try{for(;d--;)c[P[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.l.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},K:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},B:function(){this.n||this.W.apply(this,arguments)},W:function(a,b){var c=this.Y(a,b);this._("handle",{stackInfo:a,options:b}),this.ga(a.name,a.message,a.url,a.lineno,c,b)},Y:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(w(a.stack,function(b,e){var f=c.ha(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.v,0)}),this.k.user&&(a.user=this.k.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),a=this.qa(a),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||v(a[b]))&&delete a[b]}),s(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!v(a)&&(!s(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.na()?void this.A("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function F(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&l(b))for(c=b.split(/\s+/),f=0;fc?Q(a,b-1):d}function R(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?X:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function S(a,b){function c(a){return m(a)?a.map(function(a){return c(a)}):k(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!m(b)||m(b)&&0===b.length)return a;var d,e=A(b),f="********";try{d=JSON.parse(T(a))}catch(g){return a}return c(d)}var T=a(12),U="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},V=3,W=51200,X=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isDOMError:g,isDOMException:h,isUndefined:i,isFunction:j,isPlainObject:k,isString:l,isArray:m,isEmptyObject:n,supportsErrorEvent:o,supportsDOMError:p,supportsDOMException:q,supportsFetch:r,supportsReferrerPolicy:s,supportsPromiseRejectionEvent:t,wrappedCallback:u,each:v,objectMerge:w,truncate:y,objectFrozen:x,hasKey:z,joinRegExp:A,urlencode:B,uuid4:D,htmlTreeAsString:E,htmlElementAsString:F,isSameException:I,isSameStacktrace:J,parseUrl:C,fill:K,safeJoin:L,serializeException:Q,serializeKeysForMessage:R,sanitize:S}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{12:12}],11:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}function e(){return"undefined"==typeof document||null==document.location?"":document.location.origin}var f=a(10),g={collectWindowErrors:!0,debug:!1},h="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},i=[].slice,j="?",k=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;g.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function e(a,b){var c=null;if(!b||g.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(i.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,h,i){var l=null,m=f.isErrorEvent(i)?i.error:i,n=f.isErrorEvent(a)?a.message:a;if(v)g.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&f.isError(m))l=g.computeStackTrace(m),e(l,!0);else{var p,r={url:b,line:c,column:h},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(k);p&&(s=p[1],n=p[2])}r.func=j,l={name:s,message:n,url:d(),stack:[r]},e(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=h.onerror,h.onerror=l,r=!0)}function n(){r&&(h.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,e.apply(null,[a,!1].concat(b))}function p(a,b){var c=i.call(arguments,1);if(v){if(u===a)return;o()}var d=g.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),g.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,f,g=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,h=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,i=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,k=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,l=/\((\S*)(?::(\d+))(?::(\d+))\)/,m=a.stack.split("\n"),n=[],o=(/^(.*) is undefined$/.exec(a.message),0),p=m.length;o eval")>-1;r&&(b=k.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==o||c[5]||"undefined"==typeof a.columnNumber||(n[0].column=a.columnNumber+1),f={url:c[3],func:c[1]||j,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}if(!f.func&&f.line&&(f.func=j),f.url&&"blob:"===f.url.substr(0,5)){var s=new XMLHttpRequest;if(s.open("GET",f.url,!1),s.send(null),200===s.status){var t=s.responseText||"";t=t.slice(-300);var u=t.match(/\/\/# sourceMappingURL=(.*)$/);if(u){var v=u[1];"~"===v.charAt(0)&&(v=e()+v.slice(1)),f.url=v.slice(0,-4)}}}n.push(f)}return n.length?{name:a.name,message:a.message,url:d(),stack:n}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=j),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,e){for(var h,i,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==f&&o!==g.report){if(i={url:null,func:j,line:null,column:null},o.name?i.func=o.name:(h=k.exec(o.toString()))&&(i.func=h[1]),"undefined"==typeof i.func)try{i.func=h.input.substring(0,h.input.indexOf("{"))}catch(p){}m[""+o]?n=!0:m[""+o]=!0,l.push(i)}e&&l.splice(0,e);var q={name:a.name,message:a.message,url:d(),stack:l};return b(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),q}function f(b,e){var f=null;e=null==e?0:+e;try{if(f=a(b))return f}catch(h){if(g.debug)throw h}try{if(f=c(b,e+1))return f}catch(h){if(g.debug)throw h}return{name:b.name,message:b.message,url:d()}}return f.augmentStackTraceWithInitialElement=b,f.computeStackTraceFromStackProp=a,f}(),b.exports=g}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{10:10}],12:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}],13:[function(a,b,c){function d(a,b){var c=(65535&a)+(65535&b),d=(a>>16)+(b>>16)+(c>>16);return d<<16|65535&c}function e(a,b){return a<>>32-b}function f(a,b,c,f,g,h){return d(e(d(d(b,a),d(f,h)),g),c)}function g(a,b,c,d,e,g,h){return f(b&c|~b&d,a,b,e,g,h)}function h(a,b,c,d,e,g,h){return f(b&d|c&~d,a,b,e,g,h)}function i(a,b,c,d,e,g,h){return f(b^c^d,a,b,e,g,h)}function j(a,b,c,d,e,g,h){return f(c^(b|~d),a,b,e,g,h)}function k(a,b){a[b>>5]|=128<>>9<<4)+14]=b;var c,e,f,k,l,m=1732584193,n=-271733879,o=-1732584194,p=271733878;for(c=0;c>5]>>>b%32&255);return c}function m(a){var b,c=[];for(c[(a.length>>2)-1]=void 0,b=0;b>5]|=(255&a.charCodeAt(b/8))<16&&(e=k(e,8*a.length)),c=0;c<16;c+=1)f[c]=909522486^e[c],g[c]=1549556828^e[c];return d=k(f.concat(m(b)),512+8*b.length),l(k(g.concat(d),640))}function p(a){var b,c,d="0123456789abcdef",e="";for(c=0;c>>4&15)+d.charAt(15&b);return e}function q(a){return unescape(encodeURIComponent(a))}function r(a){return n(q(a))}function s(a){return p(r(a))}function t(a,b){return o(q(a),q(b))}function u(a,b){return p(t(a,b))}function v(a,b,c){return b?c?t(b,a):u(b,a):c?r(a):s(a)}b.exports=v},{}]},{},[9,1,2,3,4,5])(9)}); +/*! Raven.js 3.25.1 (b6f3c7a) | github.com/getsentry/raven-js */ +!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.Raven=a()}}(function(){var a;return function b(a,c,d){function e(g,h){if(!c[g]){if(!a[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};a[g][0].call(k.exports,function(b){var c=a[g][1][b];return e(c?c:b)},k,k.exports,b,a,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;g":"anonymous component")+(a._isVue&&a.$options.__file?" at "+a.$options.__file:"")}function e(a,b){if(b=b||window.Vue,b&&b.config){var c=b.config.errorHandler;b.config.errorHandler=function(b,e,f){var g={};"[object Object]"===Object.prototype.toString.call(e)&&(g.componentName=d(e),g.propsData=e.$options.propsData),"undefined"!=typeof f&&(g.lifecycleHook=f),a.captureException(b,{extra:g}),"function"==typeof c&&c.call(this,b,e,f)}}}b.exports=e,a(9).addPlugin(b.exports)},{9:9}],6:[function(a,b,c){function d(a){this.name="RavenConfigError",this.message=a}d.prototype=new Error,d.prototype.constructor=d,b.exports=d},{}],7:[function(a,b,c){var d=a(10),e=function(a,b,c){var e=a[b],f=a;if(b in a){var g="warn"===b?"warning":b;a[b]=function(){var a=[].slice.call(arguments),h=d.safeJoin(a," "),i={level:g,logger:"console",extra:{arguments:a}};"assert"===b?a[0]===!1&&(h="Assertion failed: "+(d.safeJoin(a.slice(1)," ")||"console.assert"),i.extra.arguments=a.slice(1),c&&c(h,i)):c&&c(h,i),e&&Function.prototype.apply.call(e,f,a)}}};b.exports={wrapMethod:e}},{10:10}],8:[function(a,b,c){(function(c){function d(){return+new Date}function e(a,b){return s(b)?function(c){return b(c,a)}:b}function f(){this.b=!("object"!=typeof JSON||!JSON.stringify),this.c=!r(S),this.d=!r(T),this.e=null,this.f=null,this.g=null,this.h=null,this.i=null,this.j=null,this.k={},this.l={release:R.SENTRY_RELEASE&&R.SENTRY_RELEASE.id,logger:"javascript",ignoreErrors:[],ignoreUrls:[],whitelistUrls:[],includePaths:[],headers:null,collectWindowErrors:!0,captureUnhandledRejections:!0,maxMessageLength:0,maxUrlLength:250,stackTraceLimit:50,autoBreadcrumbs:!0,instrument:!0,sampleRate:1,sanitizeKeys:[]},this.m={method:"POST",keepalive:!0,referrerPolicy:K()?"origin":""},this.n=0,this.o=!1,this.p=Error.stackTraceLimit,this.q=R.console||{},this.r={},this.s=[],this.t=d(),this.u=[],this.v=[],this.w=null,this.x=R.location,this.y=this.x&&this.x.href,this.z();for(var a in this.q)this.r[a]=this.q[a]}var g=a(11),h=a(12),i=a(13),j=a(6),k=a(10),l=k.isErrorEvent,m=k.isDOMError,n=k.isDOMException,o=k.isError,p=k.isObject,q=k.isPlainObject,r=k.isUndefined,s=k.isFunction,t=k.isString,u=k.isArray,v=k.isEmptyObject,w=k.each,x=k.objectMerge,y=k.truncate,z=k.objectFrozen,A=k.hasKey,B=k.joinRegExp,C=k.urlencode,D=k.uuid4,E=k.htmlTreeAsString,F=k.isSameException,G=k.isSameStacktrace,H=k.parseUrl,I=k.fill,J=k.supportsFetch,K=k.supportsReferrerPolicy,L=k.serializeKeysForMessage,M=k.serializeException,N=k.sanitize,O=a(7).wrapMethod,P="source protocol user pass host port path".split(" "),Q=/^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/,R="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},S=R.document,T=R.navigator;f.prototype={VERSION:"3.25.1",debug:!1,TraceKit:g,config:function(a,b){var c=this;if(c.h)return this.A("error","Error: Raven has already been configured"),c;if(!a)return c;var d=c.l;b&&w(b,function(a,b){"tags"===a||"extra"===a||"user"===a?c.k[a]=b:d[a]=b}),c.setDSN(a),d.ignoreErrors.push(/^Script error\.?$/),d.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/),d.ignoreErrors=B(d.ignoreErrors),d.ignoreUrls=!!d.ignoreUrls.length&&B(d.ignoreUrls),d.whitelistUrls=!!d.whitelistUrls.length&&B(d.whitelistUrls),d.includePaths=B(d.includePaths),d.maxBreadcrumbs=Math.max(0,Math.min(d.maxBreadcrumbs||100,100));var e={xhr:!0,console:!0,dom:!0,location:!0,sentry:!0},f=d.autoBreadcrumbs;"[object Object]"==={}.toString.call(f)?f=x(e,f):f!==!1&&(f=e),d.autoBreadcrumbs=f;var h={tryCatch:!0},i=d.instrument;return"[object Object]"==={}.toString.call(i)?i=x(h,i):i!==!1&&(i=h),d.instrument=i,g.collectWindowErrors=!!d.collectWindowErrors,c},install:function(){var a=this;return a.isSetup()&&!a.o&&(g.report.subscribe(function(){a.B.apply(a,arguments)}),a.l.captureUnhandledRejections&&a.C(),a.D(),a.l.instrument&&a.l.instrument.tryCatch&&a.E(),a.l.autoBreadcrumbs&&a.F(),a.G(),a.o=!0),Error.stackTraceLimit=a.l.stackTraceLimit,this},setDSN:function(a){var b=this,c=b.H(a),d=c.path.lastIndexOf("/"),e=c.path.substr(1,d);b.I=a,b.i=c.user,b.J=c.pass&&c.pass.substr(1),b.j=c.path.substr(d+1),b.h=b.K(c),b.L=b.h+"/"+e+"api/"+b.j+"/store/",this.z()},context:function(a,b,c){return s(a)&&(c=b||[],b=a,a=void 0),this.wrap(a,b).apply(this,c)},wrap:function(a,b,c){function d(){var d=[],f=arguments.length,g=!a||a&&a.deep!==!1;for(c&&s(c)&&c.apply(this,arguments);f--;)d[f]=g?e.wrap(a,arguments[f]):arguments[f];try{return b.apply(this,d)}catch(h){throw e.M(),e.captureException(h,a),h}}var e=this;if(r(b)&&!s(a))return a;if(s(a)&&(b=a,a=void 0),!s(b))return b;try{if(b.N)return b;if(b.O)return b.O}catch(f){return b}for(var g in b)A(b,g)&&(d[g]=b[g]);return d.prototype=b.prototype,b.O=d,d.N=!0,d.P=b,d},uninstall:function(){return g.report.uninstall(),this.Q(),this.R(),this.S(),this.T(),Error.stackTraceLimit=this.p,this.o=!1,this},U:function(a){this.A("debug","Raven caught unhandled promise rejection:",a),this.captureException(a.reason,{extra:{unhandledPromiseRejection:!0}})},C:function(){return this.U=this.U.bind(this),R.addEventListener&&R.addEventListener("unhandledrejection",this.U),this},Q:function(){return R.removeEventListener&&R.removeEventListener("unhandledrejection",this.U),this},captureException:function(a,b){if(b=x({trimHeadFrames:0},b?b:{}),l(a)&&a.error)a=a.error;else{if(m(a)||n(a)){var c=a.name||(m(a)?"DOMError":"DOMException"),d=a.message?c+": "+a.message:c;return this.captureMessage(d,x(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}))}if(o(a))a=a;else{if(!q(a))return this.captureMessage(a,x(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}));b=this.V(b,a),a=new Error(b.message)}}this.e=a;try{var e=g.computeStackTrace(a);this.W(e,b)}catch(f){if(a!==f)throw f}return this},V:function(a,b){var c=Object.keys(b).sort(),d=x(a,{message:"Non-Error exception captured with keys: "+L(c),fingerprint:[i(c)],extra:a.extra||{}});return d.extra.X=M(b),d},captureMessage:function(a,b){if(!this.l.ignoreErrors.test||!this.l.ignoreErrors.test(a)){b=b||{},a+="";var c,d=x({message:a},b);try{throw new Error(a)}catch(e){c=e}c.name=null;var f=g.computeStackTrace(c),h=u(f.stack)&&f.stack[1];h&&"Raven.captureException"===h.func&&(h=f.stack[2]);var i=h&&h.url||"";if((!this.l.ignoreUrls.test||!this.l.ignoreUrls.test(i))&&(!this.l.whitelistUrls.test||this.l.whitelistUrls.test(i))){if(this.l.stacktrace||b&&b.stacktrace){d.fingerprint=null==d.fingerprint?a:d.fingerprint,b=x({trimHeadFrames:0},b),b.trimHeadFrames+=1;var j=this.Y(f,b);d.stacktrace={frames:j.reverse()}}return d.fingerprint&&(d.fingerprint=u(d.fingerprint)?d.fingerprint:[d.fingerprint]),this.Z(d),this}}},captureBreadcrumb:function(a){var b=x({timestamp:d()/1e3},a);if(s(this.l.breadcrumbCallback)){var c=this.l.breadcrumbCallback(b);if(p(c)&&!v(c))b=c;else if(c===!1)return this}return this.v.push(b),this.v.length>this.l.maxBreadcrumbs&&this.v.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.s.push([a,b]),this.o&&this.G(),this},setUserContext:function(a){return this.k.user=a,this},setExtraContext:function(a){return this.$("extra",a),this},setTagsContext:function(a){return this.$("tags",a),this},clearContext:function(){return this.k={},this},getContext:function(){return JSON.parse(h(this.k))},setEnvironment:function(a){return this.l.environment=a,this},setRelease:function(a){return this.l.release=a,this},setDataCallback:function(a){var b=this.l.dataCallback;return this.l.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.l.breadcrumbCallback;return this.l.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.l.shouldSendCallback;return this.l.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.l.transport=a,this},lastException:function(){return this.e},lastEventId:function(){return this.g},isSetup:function(){return!!this.b&&(!!this.h||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.A("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=R.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(S){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.I;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.k.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.K(this.H(c)),h=S.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(S.head||S.body).appendChild(h)}},M:function(){var a=this;this.n+=1,setTimeout(function(){a.n-=1})},_:function(a,b){var c,d;if(this.c){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),S.createEvent?(c=S.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=S.createEventObject(),c.eventType=a);for(d in b)A(b,d)&&(c[d]=b[d]);if(S.createEvent)S.dispatchEvent(c);else try{S.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},aa:function(a){var b=this;return function(c){if(b.ba=null,b.w!==c){b.w=c;var d;try{d=E(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ca:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.ba;g||a.aa("input")(c),clearTimeout(g),a.ba=setTimeout(function(){a.ba=null},b)}}},da:function(a,b){var c=H(this.x.href),d=H(b),e=H(a);this.y=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},D:function(){var a=this;a.ea=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.N?a.ea.apply(this.P,arguments):a.ea.apply(this,arguments)}},R:function(){this.ea&&(Function.prototype.toString=this.ea)},E:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.da(b.y,c+""),a.apply(this,arguments)}};I(R.history,"pushState",j,d),I(R.history,"replaceState",j,d)}if(c.console&&"console"in R&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};w(["debug","info","warn","error","log"],function(a,b){O(console,b,k)})}},S:function(){for(var a;this.u.length;){a=this.u.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},T:function(){for(var a in this.r)this.q[a]=this.r[a]},G:function(){var a=this;w(this.s,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},H:function(a){var b=Q.exec(a),c={},d=7;try{for(;d--;)c[P[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.l.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},K:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},B:function(){this.n||this.W.apply(this,arguments)},W:function(a,b){var c=this.Y(a,b);this._("handle",{stackInfo:a,options:b}),this.ga(a.name,a.message,a.url,a.lineno,c,b)},Y:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(w(a.stack,function(b,e){var f=c.ha(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.v,0)}),this.k.user&&(a.user=this.k.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),a=this.qa(a),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||v(a[b]))&&delete a[b]}),s(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!v(a)&&(!s(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.na()?void this.A("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function F(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&l(b))for(c=b.split(/\s+/),f=0;fc?Q(a,b-1):d}function R(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?X:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function S(a,b){function c(a){return m(a)?a.map(function(a){return c(a)}):k(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!m(b)||m(b)&&0===b.length)return a;var d,e=A(b),f="********";try{d=JSON.parse(T(a))}catch(g){return a}return c(d)}var T=a(12),U="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},V=3,W=51200,X=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isDOMError:g,isDOMException:h,isUndefined:i,isFunction:j,isPlainObject:k,isString:l,isArray:m,isEmptyObject:n,supportsErrorEvent:o,supportsDOMError:p,supportsDOMException:q,supportsFetch:r,supportsReferrerPolicy:s,supportsPromiseRejectionEvent:t,wrappedCallback:u,each:v,objectMerge:w,truncate:y,objectFrozen:x,hasKey:z,joinRegExp:A,urlencode:B,uuid4:D,htmlTreeAsString:E,htmlElementAsString:F,isSameException:I,isSameStacktrace:J,parseUrl:C,fill:K,safeJoin:L,serializeException:Q,serializeKeysForMessage:R,sanitize:S}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{12:12}],11:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}function e(){return"undefined"==typeof document||null==document.location?"":(document.location.origin||(document.location.origin=document.location.protocol+"//"+document.location.hostname+(document.location.port?":"+document.location.port:"")),document.location.origin)}var f=a(10),g={collectWindowErrors:!0,debug:!1},h="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},i=[].slice,j="?",k=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;g.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function e(a,b){var c=null;if(!b||g.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(i.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,h,i){var l=null,m=f.isErrorEvent(i)?i.error:i,n=f.isErrorEvent(a)?a.message:a;if(v)g.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&f.isError(m))l=g.computeStackTrace(m),e(l,!0);else{var p,r={url:b,line:c,column:h},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(k);p&&(s=p[1],n=p[2])}r.func=j,l={name:s,message:n,url:d(),stack:[r]},e(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=h.onerror,h.onerror=l,r=!0)}function n(){r&&(h.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,e.apply(null,[a,!1].concat(b))}function p(a,b){var c=i.call(arguments,1);if(v){if(u===a)return;o()}var d=g.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),g.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,f,g=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,h=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,i=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,k=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,l=/\((\S*)(?::(\d+))(?::(\d+))\)/,m=a.stack.split("\n"),n=[],o=(/^(.*) is undefined$/.exec(a.message), +0),p=m.length;o eval")>-1;r&&(b=k.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==o||c[5]||"undefined"==typeof a.columnNumber||(n[0].column=a.columnNumber+1),f={url:c[3],func:c[1]||j,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}if(!f.func&&f.line&&(f.func=j),f.url&&"blob:"===f.url.substr(0,5)){var s=new XMLHttpRequest;if(s.open("GET",f.url,!1),s.send(null),200===s.status){var t=s.responseText||"";t=t.slice(-300);var u=t.match(/\/\/# sourceMappingURL=(.*)$/);if(u){var v=u[1];"~"===v.charAt(0)&&(v=e()+v.slice(1)),f.url=v.slice(0,-4)}}}n.push(f)}return n.length?{name:a.name,message:a.message,url:d(),stack:n}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=j),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,e){for(var h,i,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==f&&o!==g.report){if(i={url:null,func:j,line:null,column:null},o.name?i.func=o.name:(h=k.exec(o.toString()))&&(i.func=h[1]),"undefined"==typeof i.func)try{i.func=h.input.substring(0,h.input.indexOf("{"))}catch(p){}m[""+o]?n=!0:m[""+o]=!0,l.push(i)}e&&l.splice(0,e);var q={name:a.name,message:a.message,url:d(),stack:l};return b(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),q}function f(b,e){var f=null;e=null==e?0:+e;try{if(f=a(b))return f}catch(h){if(g.debug)throw h}try{if(f=c(b,e+1))return f}catch(h){if(g.debug)throw h}return{name:b.name,message:b.message,url:d()}}return f.augmentStackTraceWithInitialElement=b,f.computeStackTraceFromStackProp=a,f}(),b.exports=g}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{10:10}],12:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}],13:[function(a,b,c){function d(a,b){var c=(65535&a)+(65535&b),d=(a>>16)+(b>>16)+(c>>16);return d<<16|65535&c}function e(a,b){return a<>>32-b}function f(a,b,c,f,g,h){return d(e(d(d(b,a),d(f,h)),g),c)}function g(a,b,c,d,e,g,h){return f(b&c|~b&d,a,b,e,g,h)}function h(a,b,c,d,e,g,h){return f(b&d|c&~d,a,b,e,g,h)}function i(a,b,c,d,e,g,h){return f(b^c^d,a,b,e,g,h)}function j(a,b,c,d,e,g,h){return f(c^(b|~d),a,b,e,g,h)}function k(a,b){a[b>>5]|=128<>>9<<4)+14]=b;var c,e,f,k,l,m=1732584193,n=-271733879,o=-1732584194,p=271733878;for(c=0;c>5]>>>b%32&255);return c}function m(a){var b,c=[];for(c[(a.length>>2)-1]=void 0,b=0;b>5]|=(255&a.charCodeAt(b/8))<16&&(e=k(e,8*a.length)),c=0;c<16;c+=1)f[c]=909522486^e[c],g[c]=1549556828^e[c];return d=k(f.concat(m(b)),512+8*b.length),l(k(g.concat(d),640))}function p(a){var b,c,d="0123456789abcdef",e="";for(c=0;c>>4&15)+d.charAt(15&b);return e}function q(a){return unescape(encodeURIComponent(a))}function r(a){return n(q(a))}function s(a){return p(r(a))}function t(a,b){return o(q(a),q(b))}function u(a,b){return p(t(a,b))}function v(a,b,c){return b?c?t(b,a):u(b,a):c?r(a):s(a)}b.exports=v},{}]},{},[9,1,2,3,4,5])(9)}); //# sourceMappingURL=raven.min.js.map \ No newline at end of file diff --git a/dist/angular,console,ember,require,vue/raven.min.js.map b/dist/angular,console,ember,require,vue/raven.min.js.map index 3b1ba0ad7eef..12e0c1bae465 100644 --- a/dist/angular,console,ember,require,vue/raven.min.js.map +++ b/dist/angular,console,ember,require,vue/raven.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","angularPlugin","angular","RavenProvider","$get","$window","ExceptionHandlerProvider","$provide","decorator","exceptionHandler","R","$delegate","ex","cause","captureException","extra","moduleName","provider","config","setDataCallback","wrappedCallback","data","_normalizeData","angularPattern","exception","values","matches","exec","value","type","message","angularDocs","substr","addPlugin","10","9","2","consolePlugin","console","pluginOptions","logLevels","levels","push","callback","msg","captureMessage","level","pop","wrapConsoleMethod","wrapMethod","7","3","emberPlugin","Ember","_oldOnError","onerror","error","RSVP","on","reason","context","4","requirePlugin","wrap","deep","5","formatComponentName","vm","$root","name","_isVue","$options","_componentTag","__file","vuePlugin","Vue","errorHandler","info","metaData","Object","prototype","toString","componentName","propsData","lifecycleHook","6","RavenConfigError","constructor","utils","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","safeJoin","logger","Function","apply","8","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","sanitizeKeys","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isErrorEvent","isDOMError","isDOMException","isError","isObject","isPlainObject","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","sanitize","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","dsn","options","_logDebug","globalOptions","key","setDSN","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","func","undefined","_before","wrapped","_ignoreNextOnError","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","U","event","unhandledPromiseRejection","C","_promiseRejectionHandler","bind","addEventListener","Q","removeEventListener","trimHeadFrames","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","V","currentOptions","exKeys","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","M","setTimeout","_","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","aa","evtName","_keypressTimeout","target","category","ca","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","da","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","D","_originalFunctionToString","E","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","F","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","S","builtin","T","G","installer","concat","H","str","m","allowSecretKey","K","port","B","W","stackInfo","_triggerEvent","_processException","lineno","Y","frame","_normalizeFrame","in_app","ha","stackInfoUrl","normalized","filename","line","colno","column","function","ga","prefixedMessage","culprit","ia","request","Referer","breadcrumbs","_trimBreadcrumbs","ja","urlProp","urlProps","ka","httpData","userAgent","User-Agent","referrer","z","_backoffDuration","_backoffStart","na","oa","current","last","pa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Z","baseData","project","platform","_getHttpData","serverName","server_name","_sanitizeData","forEach","random","_sendProcessedPayload","qa","sa","ra","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","ta","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","open","setRequestHeader","send","ua","hash","evaluated","A","$","setUser","setReleaseContext","11","12","13","RavenConstructor","_Raven","noConflict","Client","what","supportsErrorEvent","ErrorEvent","supportsDOMError","DOMError","supportsDOMException","DOMException","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","sanitizeMask","safeInput","o_O","getLocationHref","getLocationOrigin","origin","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","responseText","sourceMaps","sourceMapAddress","charAt","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","y","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","string","raw"],"mappings":";CAYA,SAAUA,GAAG,GAAoB,gBAAVC,UAAoC,mBAATC,QAAsBA,OAAOD,QAAQD,QAAS,IAAmB,kBAATG,SAAqBA,OAAOC,IAAKD,UAAUH,OAAO,CAAC,GAAIK,EAAkCA,GAAb,mBAATC,QAAwBA,OAA+B,mBAATC,QAAwBA,OAA6B,mBAAPC,MAAsBA,KAAYC,KAAKJ,EAAEK,MAAQV,MAAO,WAAW,GAAIG,EAAsB,OAAO,SAAUQ,GAAEC,EAAEC,EAAEC,GAAG,QAASC,GAAEC,EAAEC,GAAG,IAAIJ,EAAEG,GAAG,CAAC,IAAIJ,EAAEI,GAAG,CAAC,GAAIE,GAAkB,kBAATC,UAAqBA,OAAQ,KAAIF,GAAGC,EAAE,MAAOA,GAAEF,GAAE,EAAI,IAAGI,EAAE,MAAOA,GAAEJ,GAAE,EAAI,IAAIhB,GAAE,GAAIqB,OAAM,uBAAuBL,EAAE,IAAK,MAAMhB,GAAEsB,KAAK,mBAAmBtB,EAAE,GAAIuB,GAAEV,EAAEG,IAAIf,WAAYW,GAAEI,GAAG,GAAGQ,KAAKD,EAAEtB,QAAQ,SAASU,GAAG,GAAIE,GAAED,EAAEI,GAAG,GAAGL,EAAG,OAAOI,GAAEF,EAAEA,EAAEF,IAAIY,EAAEA,EAAEtB,QAAQU,EAAEC,EAAEC,EAAEC,GAAG,MAAOD,GAAEG,GAAGf,QAAkD,IAAI,GAA1CmB,GAAkB,kBAATD,UAAqBA,QAAgBH,EAAE,EAAEA,EAAEF,EAAEW,OAAOT,IAAID,EAAED,EAAEE,GAAI,OAAOD,KAAKW,GAAG,SAASC,EAAQzB,EAAOD,GAYp0B,QAAS2B,GAAclB,EAAOmB,GAK5B,QAASC,KACPrB,KAAKsB,MACH,UACA,SAASC,GACP,MAAOtB,KAKb,QAASuB,GAAyBC,GAChCA,EAASC,UAAU,qBAAsB,QAAS,YAAaC,IAGjE,QAASA,GAAiBC,EAAGC,GAC3B,MAAO,UAASC,EAAIC,GAClBH,EAAEI,iBAAiBF,GACjBG,OAAQF,MAAOA,KAEjBF,EAAUC,EAAIC,IAtBlBX,EAAUA,GAAWvB,OAAOuB,QAEvBA,IAwBLA,EACG3B,OAAOyC,MACPC,SAAS,QAASd,GAClBe,QAAQ,WAAYZ,IAEvBvB,EAAMoC,gBACJC,EAAgB,SAASC,GACvB,MAAOpB,GAAcqB,EAAeD,OAxC1C,GAAID,GAAkBpB,EAAQ,IAAIoB,gBAG9BG,EAAiB,6DACjBP,EAAa,SAyCjBf,GAAcqB,EAAiB,SAASD,GAEtC,GAAIG,GAAYH,EAAKG,SACrB,IAAIA,EAAW,CACbA,EAAYA,EAAUC,OAAO,EAC7B,IAAIC,GAAUH,EAAeI,KAAKH,EAAUI,MAExCF,KAEFF,EAAUK,KAAOH,EAAQ,GACzBF,EAAUI,MAAQF,EAAQ,GAE1BL,EAAKS,QAAUN,EAAUK,KAAO,KAAOL,EAAUI,MAEjDP,EAAKN,MAAMgB,YAAcL,EAAQ,GAAGM,OAAO,EAAG,MAIlD,MAAOX,IAGTpB,EAAce,WAAaA,EAE3BzC,EAAOD,QAAU2B,EAEjBD,EAAQ,GAAGiC,UAAU1D,EAAOD,WACzB4D,GAAK,GAAGC,EAAI,IAAIC,GAAG,SAASpC,EAAQzB,EAAOD,GAc9C,QAAS+D,GAActD,EAAOuD,EAASC,GACrCD,EAAUA,GAAW3D,OAAO2D,YAC5BC,EAAgBA,KAEhB,IAAIC,GAAYD,EAAcE,SAAW,QAAS,OAAQ,OAAQ,QAC9D,WAAYH,IAASE,EAAUE,KAAK,SAOxC,KALA,GAAIC,GAAW,SAASC,EAAKvB,GAC3BtC,EAAM8D,eAAeD,EAAKvB,IAGxByB,EAAQN,EAAUO,MACfD,GACLE,EAAkBV,EAASQ,EAAOH,GAClCG,EAAQN,EAAUO,MAhBtB,GAAIC,GAAoBhD,EAAQ,GAAGiD,UAoBnC1E,GAAOD,QAAU+D,EAEjBrC,EAAQ,GAAGiC,UAAU1D,EAAOD,WACzB4E,EAAI,EAAEf,EAAI,IAAIgB,GAAG,SAASnD,EAAQzB,EAAOD,GAM5C,QAAS8E,GAAYrE,EAAOsE,GAI1B,GAHAA,EAAQA,GAAS1E,OAAO0E,MAGxB,CAEA,GAAIC,GAAcD,EAAME,OACxBF,GAAME,QAAU,SAAsBC,GACpCzE,EAAM+B,iBAAiB0C,GACI,kBAAhBF,IACTA,EAAYzD,KAAKf,KAAM0E,IAG3BH,EAAMI,KAAKC,GAAG,QAAS,SAASC,GAC1BA,YAAkBjE,OACpBX,EAAM+B,iBAAiB6C,GACrB5C,OAAQ6C,QAAS,sCAGnB7E,EAAM8D,eAAe,oCAAqC9B,OAAQ4C,OAAQA,QAKhFpF,EAAOD,QAAU8E,EAEjBpD,EAAQ,GAAGiC,UAAU1D,EAAOD,WACzB6D,EAAI,IAAI0B,GAAG,SAAS7D,EAAQzB,EAAOD,GAOtC,QAASwF,GAAc/E,GACC,kBAAXP,IAAyBA,EAAOC,MACzCE,OAAOH,OAASO,EAAMgF,MAAMC,MAAM,GAAQxF,GAC1CG,OAAOa,QAAUT,EAAMgF,MAAMC,MAAM,GAAQhE,IAI/CzB,EAAOD,QAAUwF,EAEjB9D,EAAQ,GAAGiC,UAAU1D,EAAOD,WACzB6D,EAAI,IAAI8B,GAAG,SAASjE,EAAQzB,EAAOD,GAMtC,QAAS4F,GAAoBC,GAC3B,GAAIA,EAAGC,QAAUD,EACf,MAAO,eAET,IAAIE,GAAOF,EAAGG,OAASH,EAAGI,SAASF,MAAQF,EAAGI,SAASC,cAAgBL,EAAGE,IAC1E,QACGA,EAAO,cAAgBA,EAAO,IAAM,wBACpCF,EAAGG,QAAUH,EAAGI,SAASE,OAAS,OAASN,EAAGI,SAASE,OAAS,IAIrE,QAASC,GAAU3F,EAAO4F,GAIxB,GAHAA,EAAMA,GAAOhG,OAAOgG,IAGfA,GAAQA,EAAIzD,OAAjB,CAEA,GAAIoC,GAAcqB,EAAIzD,OAAO0D,YAC7BD,GAAIzD,OAAO0D,aAAe,SAAyBpB,EAAOW,EAAIU,GAC5D,GAAIC,KAGuC,qBAAvCC,OAAOC,UAAUC,SAASpF,KAAKsE,KACjCW,EAASI,cAAgBhB,EAAoBC,GAC7CW,EAASK,UAAYhB,EAAGI,SAASY,WAGf,mBAATN,KACTC,EAASM,cAAgBP,GAG3B9F,EAAM+B,iBAAiB0C,GACrBzC,MAAO+D,IAGkB,kBAAhBxB,IACTA,EAAYzD,KAAKf,KAAM0E,EAAOW,EAAIU,KAKxCtG,EAAOD,QAAUoG,EAEjB1E,EAAQ,GAAGiC,UAAU1D,EAAOD,WACzB6D,EAAI,IAAIkD,GAAG,SAASrF,EAAQzB,EAAOD,GACtC,QAASgH,GAAiBxD,GACxBhD,KAAKuF,KAAO,mBACZvF,KAAKgD,QAAUA,EAEjBwD,EAAiBN,UAAY,GAAItF,OACjC4F,EAAiBN,UAAUO,YAAcD,EAEzC/G,EAAOD,QAAUgH,OAEXpC,GAAG,SAASlD,EAAQzB,EAAOD,GACjC,GAAIkH,GAAQxF,EAAQ,IAEhBiD,EAAa,SAASX,EAASQ,EAAOH,GACxC,GAAI8C,GAAuBnD,EAAQQ,GAC/B4C,EAAkBpD,CAEtB,IAAMQ,IAASR,GAAf,CAIA,GAAIqD,GAAwB,SAAV7C,EAAmB,UAAYA,CAEjDR,GAAQQ,GAAS,WACf,GAAI8C,MAAUC,MAAMhG,KAAKiG,WAErBlD,EAAM4C,EAAMO,SAASH,EAAM,KAC3BvE,GAAQyB,MAAO6C,EAAaK,OAAQ,UAAWjF,OAAQ+E,UAAWF,GAExD,YAAV9C,EACE8C,EAAK,MAAO,IAEdhD,EACE,sBAAwB4C,EAAMO,SAASH,EAAKC,MAAM,GAAI,MAAQ,kBAChExE,EAAKN,MAAM+E,UAAYF,EAAKC,MAAM,GAClClD,GAAYA,EAASC,EAAKvB,IAG5BsB,GAAYA,EAASC,EAAKvB,GAIxBoE,GAGFQ,SAASjB,UAAUkB,MAAMrG,KAAK4F,EAAsBC,EAAiBE,KAK3ErH,GAAOD,SACL2E,WAAYA,KAGXf,GAAK,KAAKiE,GAAG,SAASnG,EAAQzB,EAAOD,IACxC,SAAWM,GA4CX,QAASwH,KACP,OAAQ,GAAIC,MAWd,QAASC,GAAqBC,EAAU5D,GACtC,MAAO6D,GAAW7D,GACd,SAAStB,GACP,MAAOsB,GAAStB,EAAMkF,IAExB5D,EAMN,QAAS5D,KACPD,KAAK2H,IAA8B,gBAATC,QAAqBA,KAAKC,WAEpD7H,KAAK8H,GAAgBC,EAAYC,GACjChI,KAAKiI,GAAiBF,EAAYG,GAClClI,KAAKmI,EAAyB,KAC9BnI,KAAKoI,EAAY,KACjBpI,KAAKqI,EAAe,KACpBrI,KAAKsI,EAAgB,KACrBtI,KAAKuI,EAAa,KAClBvI,KAAKwI,EAAiB,KACtBxI,KAAKyI,KACLzI,KAAK0I,GAEHC,QAASC,EAAQC,gBAAkBD,EAAQC,eAAeC,GAC1D5B,OAAQ,aACR6B,gBACAC,cACAC,iBACAC,gBACAC,QAAS,KACTC,qBAAqB,EACrBC,4BAA4B,EAC5BC,iBAAkB,EAElBC,aAAc,IACdC,gBAAiB,GACjBC,iBAAiB,EACjBC,YAAY,EACZC,WAAY,EACZC,iBAEF5J,KAAK6J,GACHC,OAAQ,OACRC,WAAW,EAKXC,eAAgBC,IAA2B,SAAW,IAExDjK,KAAKkK,EAAiB,EACtBlK,KAAKmK,GAAoB,EACzBnK,KAAKoK,EAAgCxJ,MAAM4I,gBAG3CxJ,KAAKqK,EAAmBzB,EAAQpF,YAChCxD,KAAKsK,KACLtK,KAAKuK,KACLvK,KAAKwK,EAAalD,IAClBtH,KAAKyK,KACLzK,KAAK0K,KACL1K,KAAK2K,EAAqB,KAE1B3K,KAAK4K,EAAYhC,EAAQiC,SACzB7K,KAAK8K,EAAY9K,KAAK4K,GAAa5K,KAAK4K,EAAUG,KAClD/K,KAAKgL,GAGL,KAAK,GAAIlB,KAAU9J,MAAKqK,EACtBrK,KAAKsK,EAAwBR,GAAU9J,KAAKqK,EAAiBP,GA5HjE,GAAImB,GAAW/J,EAAQ,IACnB2G,EAAY3G,EAAQ,IACpBgK,EAAMhK,EAAQ,IACdsF,EAAmBtF,EAAQ,GAE3BwF,EAAQxF,EAAQ,IAChBiK,EAAezE,EAAMyE,aACrBC,EAAa1E,EAAM0E,WACnBC,EAAiB3E,EAAM2E,eACvBC,EAAU5E,EAAM4E,QAChBC,EAAW7E,EAAM6E,SACjBC,EAAgB9E,EAAM8E,cACtBzD,EAAcrB,EAAMqB,YACpBL,EAAahB,EAAMgB,WACnB+D,EAAW/E,EAAM+E,SACjBC,EAAUhF,EAAMgF,QAChBC,EAAgBjF,EAAMiF,cACtBC,EAAOlF,EAAMkF,KACbC,EAAcnF,EAAMmF,YACpBC,EAAWpF,EAAMoF,SACjBC,EAAerF,EAAMqF,aACrBC,EAAStF,EAAMsF,OACfC,EAAavF,EAAMuF,WACnBC,EAAYxF,EAAMwF,UAClBC,EAAQzF,EAAMyF,MACdC,EAAmB1F,EAAM0F,iBACzBC,EAAkB3F,EAAM2F,gBACxBC,EAAmB5F,EAAM4F,iBACzBC,EAAW7F,EAAM6F,SACjBC,EAAO9F,EAAM8F,KACbC,EAAgB/F,EAAM+F,cACtBxC,EAAyBvD,EAAMuD,uBAC/ByC,EAA0BhG,EAAMgG,wBAChCC,EAAqBjG,EAAMiG,mBAC3BC,EAAWlG,EAAMkG,SAEjB1I,EAAoBhD,EAAQ,GAAGiD,WAE/B0I,EAAU,2CAA2CC,MAAM,KAC7DC,EAAa,gEAOXnE,EACgB,mBAAX/I,QACHA,OACkB,mBAAXC,GAAyBA,EAAyB,mBAATC,MAAuBA,QACzEiI,EAAYY,EAAQoE,SACpB9E,EAAaU,EAAQqE,SAmFzBhN,GAAMiG,WAKJgH,QAAS,SAETC,OAAO,EAEPlC,SAAUA,EASV7I,OAAQ,SAASgL,EAAKC,GACpB,GAAItN,GAAOC,IAEX,IAAID,EAAKuI,EAEP,MADAtI,MAAKsN,EAAU,QAAS,4CACjBvN,CAET,KAAKqN,EAAK,MAAOrN,EAEjB,IAAIwN,GAAgBxN,EAAK2I,CAGrB2E,IACFzB,EAAKyB,EAAS,SAASG,EAAK1K,GAEd,SAAR0K,GAA0B,UAARA,GAA2B,SAARA,EACvCzN,EAAK0I,EAAe+E,GAAO1K,EAE3ByK,EAAcC,GAAO1K,IAK3B/C,EAAK0N,OAAOL,GAIZG,EAAcxE,aAAanF,KAAK,qBAChC2J,EAAcxE,aAAanF,KAAK,iDAGhC2J,EAAcxE,aAAekD,EAAWsB,EAAcxE,cACtDwE,EAAcvE,aAAauE,EAAcvE,WAAWhI,QAChDiL,EAAWsB,EAAcvE,YAE7BuE,EAActE,gBAAgBsE,EAActE,cAAcjI,QACtDiL,EAAWsB,EAActE,eAE7BsE,EAAcrE,aAAe+C,EAAWsB,EAAcrE,cACtDqE,EAAcG,eAAiBC,KAAKC,IAClC,EACAD,KAAKE,IAAIN,EAAcG,gBAAkB,IAAK,KAGhD,IAAII,IACFC,KAAK,EACLvK,SAAS,EACTwK,KAAK,EACLnD,UAAU,EACVoD,QAAQ,GAGNxE,EAAkB8D,EAAc9D,eACM,wBAAnCtD,SAASpF,KAAK0I,GACnBA,EAAkBoC,EAAYiC,EAAwBrE,GAC7CA,KAAoB,IAC7BA,EAAkBqE,GAEpBP,EAAc9D,gBAAkBA,CAEhC,IAAIyE,IACFC,UAAU,GAGRzE,EAAa6D,EAAc7D,UAW/B,OAVqC,uBAA9BvD,SAASpF,KAAK2I,GACnBA,EAAamC,EAAYqC,EAAoBxE,GACpCA,KAAe,IACxBA,EAAawE,GAEfX,EAAc7D,WAAaA,EAE3BuB,EAAS7B,sBAAwBmE,EAAcnE,oBAGxCrJ,GAWTqO,QAAS,WACP,GAAIrO,GAAOC,IAyBX,OAxBID,GAAKsO,YAActO,EAAKoK,IAC1Bc,EAASqD,OAAOC,UAAU,WACxBxO,EAAKyO,EAAwBpH,MAAMrH,EAAMiH,aAGvCjH,EAAK2I,EAAeW,4BACtBtJ,EAAK0O,IAGP1O,EAAK2O,IAED3O,EAAK2I,EAAegB,YAAc3J,EAAK2I,EAAegB,WAAWyE,UACnEpO,EAAK4O,IAGH5O,EAAK2I,EAAee,iBAAiB1J,EAAK6O,IAG9C7O,EAAK8O,IAEL9O,EAAKoK,GAAoB,GAG3BvJ,MAAM4I,gBAAkBzJ,EAAK2I,EAAec,gBACrCxJ,MAQTyN,OAAQ,SAASL,GACf,GAAIrN,GAAOC,KACT8O,EAAM/O,EAAKgP,EAAU3B,GACrB4B,EAAYF,EAAIG,KAAKC,YAAY,KACjCD,EAAOH,EAAIG,KAAK/L,OAAO,EAAG8L,EAE5BjP,GAAKoP,EAAO/B,EACZrN,EAAKwI,EAAauG,EAAIM,KACtBrP,EAAKsP,EAAgBP,EAAIQ,MAAQR,EAAIQ,KAAKpM,OAAO,GACjDnD,EAAKyI,EAAiBsG,EAAIG,KAAK/L,OAAO8L,EAAY,GAElDjP,EAAKuI,EAAgBvI,EAAKwP,EAAiBT,GAE3C/O,EAAKyP,EACHzP,EAAKuI,EAAgB,IAAM2G,EAAO,OAASlP,EAAKyI,EAAiB,UAInExI,KAAKgL,KAWPlG,QAAS,SAASuI,EAASoC,EAAM3I,GAO/B,MANIY,GAAW2F,KACbvG,EAAO2I,MACPA,EAAOpC,EACPA,EAAUqC,QAGL1P,KAAKiF,KAAKoI,EAASoC,GAAMrI,MAAMpH,KAAM8G,IAW9C7B,KAAM,SAASoI,EAASoC,EAAME,GAqC5B,QAASC,KACP,GAAI9I,MACFnG,EAAIqG,UAAUhG,OACdkE,GAAQmI,GAAYA,GAAWA,EAAQnI,QAAS,CAQlD,KANIyK,GAAWjI,EAAWiI,IACxBA,EAAQvI,MAAMpH,KAAMgH,WAKfrG,KAAKmG,EAAKnG,GAAKuE,EAAOnF,EAAKkF,KAAKoI,EAASrG,UAAUrG,IAAMqG,UAAUrG,EAE1E,KAKE,MAAO8O,GAAKrI,MAAMpH,KAAM8G,GACxB,MAAO5G,GAGP,KAFAH,GAAK8P,IACL9P,EAAKiC,iBAAiB9B,EAAGmN,GACnBnN,GA1DV,GAAIH,GAAOC,IAGX,IAAI+H,EAAY0H,KAAU/H,EAAW2F,GACnC,MAAOA,EAWT,IAPI3F,EAAW2F,KACboC,EAAOpC,EACPA,EAAUqC,SAKPhI,EAAW+H,GACd,MAAOA,EAIT,KACE,GAAIA,EAAKK,EACP,MAAOL,EAIT,IAAIA,EAAKM,EACP,MAAON,GAAKM,EAEd,MAAO7P,GAIP,MAAOuP,GA8BT,IAAK,GAAIO,KAAYP,GACfzD,EAAOyD,EAAMO,KACfJ,EAAQI,GAAYP,EAAKO,GAW7B,OARAJ,GAAQ1J,UAAYuJ,EAAKvJ,UAEzBuJ,EAAKM,EAAoBH,EAGzBA,EAAQE,GAAY,EACpBF,EAAQK,EAAWR,EAEZG,GAQTM,UAAW,WAWT,MAVAjF,GAASqD,OAAO4B,YAEhBlQ,KAAKmQ,IACLnQ,KAAKoQ,IACLpQ,KAAKqQ,IACLrQ,KAAKsQ,IAEL1P,MAAM4I,gBAAkBxJ,KAAKoK,EAC7BpK,KAAKmK,GAAoB,EAElBnK,MAWTuQ,EAA0B,SAASC,GACjCxQ,KAAKsN,EAAU,QAAS,4CAA6CkD,GACrExQ,KAAKgC,iBAAiBwO,EAAM3L,QAC1B5C,OACEwO,2BAA2B,MAUjCC,EAAgC,WAI9B,MAHA1Q,MAAK2Q,EAA2B3Q,KAAK2Q,EAAyBC,KAAK5Q,MACnE4I,EAAQiI,kBACNjI,EAAQiI,iBAAiB,qBAAsB7Q,KAAK2Q,GAC/C3Q,MAQT8Q,EAAgC,WAG9B,MAFAlI,GAAQmI,qBACNnI,EAAQmI,oBAAoB,qBAAsB/Q,KAAK2Q,GAClD3Q,MAUTgC,iBAAkB,SAASF,EAAIuL,GAG7B,GAFAA,EAAUxB,GAAamF,eAAgB,GAAI3D,EAAUA,MAEjDlC,EAAarJ,IAAOA,EAAG4C,MAEzB5C,EAAKA,EAAG4C,UACH,CAAA,GAAI0G,EAAWtJ,IAAOuJ,EAAevJ,GAAK,CAK/C,GAAIyD,GAAOzD,EAAGyD,OAAS6F,EAAWtJ,GAAM,WAAa,gBACjDkB,EAAUlB,EAAGkB,QAAUuC,EAAO,KAAOzD,EAAGkB,QAAUuC,CAEtD,OAAOvF,MAAK+D,eACVf,EACA6I,EAAYwB,GAGV4D,YAAY,EACZD,eAAgB3D,EAAQ2D,eAAiB,KAGxC,GAAI1F,EAAQxJ,GAEjBA,EAAKA,MACA,CAAA,IAAI0J,EAAc1J,GAavB,MAAO9B,MAAK+D,eACVjC,EACA+J,EAAYwB,GACV4D,YAAY,EACZD,eAAgB3D,EAAQ2D,eAAiB,IAb7C3D,GAAUrN,KAAKkR,EAA2C7D,EAASvL,GACnEA,EAAK,GAAIlB,OAAMyM,EAAQrK,UAkBzBhD,KAAKmI,EAAyBrG,CAO9B,KACE,GAAIqP,GAAQlG,EAASmG,kBAAkBtP,EACvC9B,MAAKqR,EAAiBF,EAAO9D,GAC7B,MAAOiE,GACP,GAAIxP,IAAOwP,EACT,KAAMA,GAIV,MAAOtR,OAGTuR,EAA4C,SAASC,EAAgB1P,GACnE,GAAI2P,GAASxL,OAAOyL,KAAK5P,GAAI6P,OACzBtE,EAAUxB,EAAY2F,GACxBxO,QACE,2CAA6C0J,EAAwB+E,GACvEG,aAAc1G,EAAIuG,IAClBxP,MAAOuP,EAAevP,WAIxB,OAFAoL,GAAQpL,MAAM4P,EAAiBlF,EAAmB7K,GAE3CuL,GAUTtJ,eAAgB,SAASD,EAAKuJ,GAI5B,IACIrN,KAAK0I,EAAeK,aAAa+I,OACnC9R,KAAK0I,EAAeK,aAAa+I,KAAKhO,GAFxC,CAOAuJ,EAAUA,MACVvJ,GAAY,EAEZ,IAOIhC,GAPAS,EAAOsJ,GAEP7I,QAASc,GAEXuJ,EAQF,KACE,KAAM,IAAIzM,OAAMkD,GAChB,MAAOwN,GACPxP,EAAKwP,EAIPxP,EAAGyD,KAAO,IACV,IAAI4L,GAAQlG,EAASmG,kBAAkBtP,GAGnCiQ,EAAcrG,EAAQyF,EAAMA,QAAUA,EAAMA,MAAM,EAKlDY,IAAoC,2BAArBA,EAAYtC,OAC7BsC,EAAcZ,EAAMA,MAAM,GAG5B,IAAIa,GAAWD,GAAeA,EAAYE,KAAQ,EAElD,MACIjS,KAAK0I,EAAeM,WAAW8I,OACjC9R,KAAK0I,EAAeM,WAAW8I,KAAKE,OAMlChS,KAAK0I,EAAeO,cAAc6I,MACnC9R,KAAK0I,EAAeO,cAAc6I,KAAKE,IAF1C,CAOA,GAAIhS,KAAK0I,EAAeuI,YAAe5D,GAAWA,EAAQ4D,WAAa,CAErE1O,EAAKqP,YAAkC,MAApBrP,EAAKqP,YAAsB9N,EAAMvB,EAAKqP,YAEzDvE,EAAUxB,GAENmF,eAAgB,GAElB3D,GAMFA,EAAQ2D,gBAAkB,CAE1B,IAAIkB,GAASlS,KAAKmS,EAAehB,EAAO9D,EACxC9K,GAAK0O,YAEHiB,OAAQA,EAAOE,WAcnB,MATI7P,GAAKqP,cACPrP,EAAKqP,YAAclG,EAAQnJ,EAAKqP,aAC5BrP,EAAKqP,aACJrP,EAAKqP,cAIZ5R,KAAKqS,EAAM9P,GAEJvC,QAGTsS,kBAAmB,SAASC,GAC1B,GAAIC,GAAQ3G,GAER4G,UAAWnL,IAAQ,KAErBiL,EAGF,IAAI7K,EAAW1H,KAAK0I,EAAegK,oBAAqB,CACtD,GAAIC,GAAS3S,KAAK0I,EAAegK,mBAAmBF,EAEpD,IAAIjH,EAASoH,KAAYhH,EAAcgH,GACrCH,EAAQG,MACH,IAAIA,KAAW,EACpB,MAAO3S,MAQX,MAJAA,MAAK0K,EAAa9G,KAAK4O,GACnBxS,KAAK0K,EAAa1J,OAAShB,KAAK0I,EAAegF,gBACjD1N,KAAK0K,EAAakI,QAEb5S,MAGTmD,UAAW,SAAS0P,GAClB,GAAIC,MAAgB/L,MAAMhG,KAAKiG,UAAW,EAO1C,OALAhH,MAAKuK,EAAS3G,MAAMiP,EAAQC,IACxB9S,KAAKmK,GACPnK,KAAK6O,IAGA7O,MAST+S,eAAgB,SAAS3D,GAIvB,MAFApP,MAAKyI,EAAe2G,KAAOA,EAEpBpP,MASTgT,gBAAiB,SAAS/Q,GAGxB,MAFAjC,MAAKiT,EAAc,QAAShR,GAErBjC,MASTkT,eAAgB,SAASC,GAGvB,MAFAnT,MAAKiT,EAAc,OAAQE,GAEpBnT,MAQToT,aAAc,WAGZ,MAFApT,MAAKyI,KAEEzI,MAQTqT,WAAY,WAEV,MAAOzL,MAAK0L,MAAMzL,EAAU7H,KAAKyI,KASnC8K,eAAgB,SAASC,GAGvB,MAFAxT,MAAK0I,EAAe8K,YAAcA,EAE3BxT,MASTyT,WAAY,SAAS9K,GAGnB,MAFA3I,MAAK0I,EAAeC,QAAUA,EAEvB3I,MAUTqC,gBAAiB,SAASwB,GACxB,GAAI4D,GAAWzH,KAAK0I,EAAegL,YAEnC,OADA1T,MAAK0I,EAAegL,aAAelM,EAAqBC,EAAU5D,GAC3D7D,MAUT2T,sBAAuB,SAAS9P,GAC9B,GAAI4D,GAAWzH,KAAK0I,EAAegK,kBAEnC,OADA1S,MAAK0I,EAAegK,mBAAqBlL,EAAqBC,EAAU5D,GACjE7D,MAUT4T,sBAAuB,SAAS/P,GAC9B,GAAI4D,GAAWzH,KAAK0I,EAAemL,kBAEnC,OADA7T,MAAK0I,EAAemL,mBAAqBrM,EAAqBC,EAAU5D,GACjE7D,MAYT8T,aAAc,SAASC,GAGrB,MAFA/T,MAAK0I,EAAeqL,UAAYA,EAEzB/T,MAQTgU,cAAe,WACb,MAAOhU,MAAKmI,GAQd8L,YAAa,WACX,MAAOjU,MAAKqI,GAQdgG,QAAS,WACP,QAAKrO,KAAK2H,MACL3H,KAAKsI,IACHtI,KAAKkU,0BACRlU,KAAKkU,yBAA0B,EAC/BlU,KAAKsN,EAAU,QAAS,2CAEnB,KAKX6G,UAAW,WAIT,GAAIC,GAAcxL,EAAQwL,WACtBA,IACFpU,KAAKoC,OAAOgS,EAAYhH,IAAKgH,EAAYhS,QAAQgM,WAIrDiG,iBAAkB,SAAShH,GACzB,GACGrF,EADH,CAKAqF,EAAUA,KAEV,IAAI4G,GAAc5G,EAAQiH,SAAWtU,KAAKiU,aAC1C,KAAKA,EACH,KAAM,IAAIzN,GAAiB,kBAG7B,IAAI4G,GAAMC,EAAQD,KAAOpN,KAAKmP,CAC9B,KAAK/B,EACH,KAAM,IAAI5G,GAAiB,cAG7B,IAAI+N,GAASC,mBACTC,EAAK,EACTA,IAAM,YAAcF,EAAON,GAC3BQ,GAAM,QAAUF,EAAOnH,EAEvB,IAAIgC,GAAO/B,EAAQ+B,MAAQpP,KAAKyI,EAAe2G,IAC3CA,KACEA,EAAK7J,OAAMkP,GAAM,SAAWF,EAAOnF,EAAK7J,OACxC6J,EAAKsF,QAAOD,GAAM,UAAYF,EAAOnF,EAAKsF,QAGhD,IAAIC,GAAe3U,KAAKuP,EAAiBvP,KAAK+O,EAAU3B,IAEpDwH,EAAS5M,EAAU6M,cAAc,SACrCD,GAAOE,OAAQ,EACfF,EAAOG,IAAMJ,EAAe,yBAA2BF,GACtDzM,EAAUgN,MAAQhN,EAAUiN,MAAMC,YAAYN,KAIjDO,EAAoB,WAClB,GAAIpV,GAAOC,IACXA,MAAKkK,GAAkB,EACvBkL,WAAW,WAETrV,EAAKmK,GAAkB,KAI3BmL,EAAe,SAASC,EAAWjI,GAEjC,GAAIkI,GAAK/H,CAET,IAAKxN,KAAK8H,EAAV,CAEAuF,EAAUA,MAEViI,EAAY,QAAUA,EAAUpS,OAAO,EAAG,GAAGsS,cAAgBF,EAAUpS,OAAO,GAE1E8E,EAAUyN,aACZF,EAAMvN,EAAUyN,YAAY,cAC5BF,EAAIG,UAAUJ,GAAW,GAAM,KAE/BC,EAAMvN,EAAU2N,oBAChBJ,EAAID,UAAYA,EAGlB,KAAK9H,IAAOH,GACNrB,EAAOqB,EAASG,KAClB+H,EAAI/H,GAAOH,EAAQG,GAGvB,IAAIxF,EAAUyN,YAEZzN,EAAU4N,cAAcL,OAIxB,KACEvN,EAAU6N,UAAU,KAAON,EAAID,UAAUQ,cAAeP,GACxD,MAAOrV,OAYb6V,GAAyB,SAASC,GAChC,GAAIjW,GAAOC,IACX,OAAO,UAASuV,GASd,GALAxV,EAAKkW,GAAmB,KAKpBlW,EAAK4K,IAAuB4K,EAAhC,CAEAxV,EAAK4K,EAAqB4K,CAM1B,IAAIW,EACJ,KACEA,EAAS9J,EAAiBmJ,EAAIW,QAC9B,MAAOhW,GACPgW,EAAS,YAGXnW,EAAKuS,mBACH6D,SAAU,MAAQH,EAClBhT,QAASkT,OAUfE,GAAuB,WACrB,GAAIrW,GAAOC,KACTqW,EAAmB,GAKrB,OAAO,UAASd,GACd,GAAIW,EACJ,KACEA,EAASX,EAAIW,OACb,MAAOhW,GAGP,OAEF,GAAIoW,GAAUJ,GAAUA,EAAOI,OAK/B,IACGA,IACY,UAAZA,GAAmC,aAAZA,GAA2BJ,EAAOK,mBAF5D,CAQA,GAAIC,GAAUzW,EAAKkW,EACdO,IACHzW,EAAK0W,GAAwB,SAASlB,GAExCmB,aAAaF,GACbzW,EAAKkW,GAAmBb,WAAW,WACjCrV,EAAKkW,GAAmB,MACvBI,MAUPM,GAAmB,SAASC,EAAMC,GAChC,GAAIC,GAAYvK,EAASvM,KAAK4K,EAAUG,MACpCgM,EAAWxK,EAASsK,GACpBG,EAAazK,EAASqK,EAK1B5W,MAAK8K,EAAY+L,EAIbC,EAAUG,WAAaF,EAASE,UAAYH,EAAUI,OAASH,EAASG,OAC1EL,EAAKE,EAASI,UACZL,EAAUG,WAAaD,EAAWC,UAAYH,EAAUI,OAASF,EAAWE,OAC9EN,EAAOI,EAAWG,UAEpBnX,KAAKsS,mBACH6D,SAAU,aACV5T,MACEsU,GAAIA,EACJD,KAAMA,MAKZQ,EAAwB,WACtB,GAAIrX,GAAOC,IACXD,GAAKsX,GAA4BlQ,SAASjB,UAAUC,SAEpDgB,SAASjB,UAAUC,SAAW,WAC5B,MAAoB,kBAATnG,OAAuBA,KAAK8P,EAC9B/P,EAAKsX,GAA0BjQ,MAAMpH,KAAKiQ,EAAUjJ,WAEtDjH,EAAKsX,GAA0BjQ,MAAMpH,KAAMgH,aAItDpF,EAA0B,WACpB5B,KAAKqX,KAEPlQ,SAASjB,UAAUC,SAAWnG,KAAKqX,KAQvCC,EAAqB,WAKnB,QAASC,GAAWC,GAClB,MAAO,UAASC,EAAItX,GAKlB,IAAK,GADD2G,GAAO,GAAI4Q,OAAM1Q,UAAUhG,QACtBL,EAAI,EAAGA,EAAImG,EAAK9F,SAAUL,EACjCmG,EAAKnG,GAAKqG,UAAUrG,EAEtB,IAAIgX,GAAmB7Q,EAAK,EAQ5B,OAPIY,GAAWiQ,KACb7Q,EAAK,GAAK/G,EAAKkF,KAAK0S,IAMlBH,EAAKpQ,MACAoQ,EAAKpQ,MAAMpH,KAAM8G,GAEjB0Q,EAAK1Q,EAAK,GAAIA,EAAK,KAOhC,QAAS8Q,GAAgB9X,GACvB,GAAI+X,GAAQjP,EAAQ9I,IAAW8I,EAAQ9I,GAAQoG,SAC3C2R,IAASA,EAAMC,gBAAkBD,EAAMC,eAAe,sBACxDtL,EACEqL,EACA,mBACA,SAASL,GACP,MAAO,UAASxB,EAASyB,EAAIM,EAASC,GAEpC,IACMP,GAAMA,EAAGQ,cACXR,EAAGQ,YAAclY,EAAKkF,KAAKwS,EAAGQ,cAEhC,MAAOC,IAMT,GAAIC,GAAQC,EAAcC,CA6B1B,OA1BE5O,IACAA,EAAgBuE,MACJ,gBAAXlO,GAAuC,SAAXA,KAI7BsY,EAAerY,EAAK0W,GAAwB,SAC5C4B,EAAkBtY,EAAKuY,KACvBH,EAAS,SAAS5C,GAIhB,GAAKA,EAAL,CAEA,GAAID,EACJ,KACEA,EAAYC,EAAIxS,KAChB,MAAO7C,GAGP,OAEF,MAAkB,UAAdoV,EAA8B8C,EAAa7C,GACxB,aAAdD,EAAiC+C,EAAgB9C,GAArD,UAGFiC,EAAKzW,KACVf,KACAgW,EACAjW,EAAKkF,KAAKwS,EAAI/H,OAAWyI,GACzBJ,EACAC,KAINO,GAEF/L,EACEqL,EACA,sBACA,SAASL,GACP,MAAO,UAASjC,EAAKkC,EAAIM,EAASC,GAChC,IACEP,EAAKA,IAAOA,EAAG1H,EAAoB0H,EAAG1H,EAAoB0H,GAC1D,MAAOvX,IAGT,MAAOsX,GAAKzW,KAAKf,KAAMuV,EAAKkC,EAAIM,EAASC,KAG7CO,IAvGN,GAAIxY,GAAOC,KAEPuY,EAAkBxY,EAAK0K,EA2BvBhB,EAAkBzJ,KAAK0I,EAAee,eA+E1C+C,GAAK5D,EAAS,aAAc2O,EAAYgB,GACxC/L,EAAK5D,EAAS,cAAe2O,EAAYgB,GACrC3P,EAAQ4P,uBACVhM,EACE5D,EACA,wBACA,SAAS4O,GACP,MAAO,UAASiB,GACd,MAAOjB,GAAKzX,EAAKkF,KAAKwT,MAG1BF,EAqCJ,KAAK,GA/BDG,IACF,cACA,SACA,OACA,mBACA,iBACA,oBACA,kBACA,cACA,aACA,qBACA,cACA,aACA,iBACA,eACA,kBACA,cACA,cACA,eACA,qBACA,SACA,YACA,eACA,gBACA,YACA,kBACA,SACA,iBACA,4BACA,wBAEO/X,EAAI,EAAGA,EAAI+X,EAAa1X,OAAQL,IACvCiX,EAAgBc,EAAa/X,KAajCgY,EAAwB,WAMtB,QAASC,GAASC,EAAM9K,GAClB8K,IAAQ9K,IAAOrG,EAAWqG,EAAI8K,KAChCrM,EAAKuB,EAAK8K,EAAM,SAASrB,GACvB,MAAOzX,GAAKkF,KAAKuS,KARvB,GAAIzX,GAAOC,KACPyJ,EAAkBzJ,KAAK0I,EAAee,gBAEtC8O,EAAkBxY,EAAK0K,CAU3B,IAAIhB,EAAgBsE,KAAO,kBAAoBnF,GAAS,CACtD,GAAIkQ,GAAWlQ,EAAQmQ,gBAAkBnQ,EAAQmQ,eAAe7S,SAChEsG,GACEsM,EACA,OACA,SAASE,GACP,MAAO,UAASlP,EAAQmI,GAYtB,MARIxG,GAASwG,IAAQA,EAAIgH,QAAQlZ,EAAKwI,UACpCvI,KAAKkZ,IACHpP,OAAQA,EACRmI,IAAKA,EACLkH,YAAa,OAIVH,EAAS5R,MAAMpH,KAAMgH,aAGhCuR,GAGF/L,EACEsM,EACA,OACA,SAASM,GACP,MAAO,YAIL,QAASC,KACP,GAAItL,EAAImL,IAAkC,IAAnBnL,EAAIuL,WAAkB,CAC3C,IAGEvL,EAAImL,GAAYC,YAAcpL,EAAIwL,OAClC,MAAOrZ,IAITH,EAAKuS,mBACHvP,KAAM,OACNoT,SAAU,MACV5T,KAAMwL,EAAImL,MAMhB,IAAK,GArBDnL,GAAM/N,KAoBNwZ,GAAS,SAAU,UAAW,cACzBC,EAAI,EAAGA,EAAID,EAAMxY,OAAQyY,IAChCb,EAASY,EAAMC,GAAI1L,EAiBrB,OAdI,sBAAwBA,IAAOrG,EAAWqG,EAAI2L,oBAChDlN,EACEuB,EACA,qBACA,SAASyJ,GACP,MAAOzX,GAAKkF,KAAKuS,EAAM9H,OAAW2J,KAMtCtL,EAAI2L,mBAAqBL,EAGpBD,EAAShS,MAAMpH,KAAMgH,aAGhCuR,GAIA9O,EAAgBsE,KAAOtB,KACzBD,EACE5D,EACA,QACA,SAAS+Q,GACP,MAAO,YAKL,IAAK,GADD7S,GAAO,GAAI4Q,OAAM1Q,UAAUhG,QACtBL,EAAI,EAAGA,EAAImG,EAAK9F,SAAUL,EACjCmG,EAAKnG,GAAKqG,UAAUrG,EAGtB,IAEIsR,GAFA2H,EAAa9S,EAAK,GAClBgD,EAAS,KAeb,IAZ0B,gBAAf8P,GACT3H,EAAM2H,EACG,WAAahR,IAAWgR,YAAsBhR,GAAQiR,SAC/D5H,EAAM2H,EAAW3H,IACb2H,EAAW9P,SACbA,EAAS8P,EAAW9P,SAGtBmI,EAAM,GAAK2H,EAIT3H,EAAIgH,QAAQlZ,EAAKwI,QACnB,MAAOoR,GAAUvS,MAAMpH,KAAM8G,EAG3BA,GAAK,IAAMA,EAAK,GAAGgD,SACrBA,EAAShD,EAAK,GAAGgD,OAGnB,IAAIgQ,IACFhQ,OAAQA,EACRmI,IAAKA,EACLkH,YAAa,KAGf,OAAOQ,GACJvS,MAAMpH,KAAM8G,GACZiT,KAAK,SAASC,GASb,MARAF,GAAUX,YAAca,EAAST,OAEjCxZ,EAAKuS,mBACHvP,KAAM,OACNoT,SAAU,QACV5T,KAAMuX,IAGDE,IAER,SAAS,SAAS9B,GASjB,KAPAnY,GAAKuS,mBACHvP,KAAM,OACNoT,SAAU,QACV5T,KAAMuX,EACN9V,MAAO,UAGHkU,MAIdK,GAMA9O,EAAgBuE,KAAOhO,KAAK8H,IAC1BE,EAAU6I,kBACZ7I,EAAU6I,iBAAiB,QAAS9Q,EAAK0W,GAAwB,UAAU,GAC3EzO,EAAU6I,iBAAiB,WAAY9Q,EAAKuY,MAAyB,IAC5DtQ,EAAUiS,cAEnBjS,EAAUiS,YAAY,UAAWla,EAAK0W,GAAwB,UAC9DzO,EAAUiS,YAAY,aAAcla,EAAKuY,OAQ7C,IAAI4B,GAAStR,EAAQsR,OACjBC,EAAsBD,GAAUA,EAAOE,KAAOF,EAAOE,IAAIC,QACzDC,GACDH,GACDvR,EAAQ2R,SACRA,QAAQC,WACRD,QAAQE,YACV,IAAIhR,EAAgBoB,UAAYyP,EAAwB,CAEtD,GAAII,GAAgB9R,EAAQ+R,UAC5B/R,GAAQ+R,WAAa,WACnB,GAAIC,GAAc7a,EAAK6K,EAAUG,IAGjC,IAFAhL,EAAK8a,GAAkB9a,EAAK+K,EAAW8P,GAEnCF,EACF,MAAOA,GAActT,MAAMpH,KAAMgH,WAIrC,IAAI8T,GAA6B,SAASC,GAGxC,MAAO,YACL,GAAI9I,GAAMjL,UAAUhG,OAAS,EAAIgG,UAAU,GAAK0I,MAQhD,OALIuC,IAEFlS,EAAK8a,GAAkB9a,EAAK+K,EAAWmH,EAAM,IAGxC8I,EAAiB3T,MAAMpH,KAAMgH,YAIxCwF,GAAK+N,QAAS,YAAaO,EAA4BvC,GACvD/L,EAAK+N,QAAS,eAAgBO,EAA4BvC,GAG5D,GAAI9O,EAAgBjG,SAAW,WAAaoF,IAAWpF,QAAQwX,IAAK,CAElE,GAAIC,GAAwB,SAASnX,EAAKvB,GACxCxC,EAAKuS,mBACHtP,QAASc,EACTE,MAAOzB,EAAKyB,MACZmS,SAAU,YAIdvK,IAAM,QAAS,OAAQ,OAAQ,QAAS,OAAQ,SAASyJ,EAAGrR,GAC1DE,EAAkBV,QAASQ,EAAOiX,OAKxCC,EAAkB,WAGhB,IADA,GAAIC,GACGnb,KAAKyK,EAAiBzJ,QAAQ,CACnCma,EAAUnb,KAAKyK,EAAiBmI,OAEhC,IAAIL,GAAM4I,EAAQ,GAChB5V,EAAO4V,EAAQ,GACf3D,EAAO2D,EAAQ,EAEjB5I,GAAIhN,GAAQiS,IAIhB4D,EAAiB,WAEf,IAAK,GAAItR,KAAU9J,MAAKsK,EACtBtK,KAAKqK,EAAiBP,GAAU9J,KAAKsK,EAAwBR,IAIjEuR,EAAe,WACb,GAAItb,GAAOC,IAGX4L,GAAK5L,KAAKuK,EAAU,SAAS8K,EAAGxC,GAC9B,GAAIyI,GAAYzI,EAAO,GACnB/L,EAAO+L,EAAO,EAClByI,GAAUlU,MAAMrH,GAAOA,GAAMwb,OAAOzU,OAIxC0U,EAAW,SAASC,GAClB,GAAIC,GAAI3O,EAAWlK,KAAK4Y,GACtBrO,KACAzM,EAAI,CAEN,KACE,KAAOA,KAAKyM,EAAIP,EAAQlM,IAAM+a,EAAE/a,IAAM,GACtC,MAAOT,GACP,KAAM,IAAIsG,GAAiB,gBAAkBiV,GAG/C,GAAIrO,EAAIkC,OAAStP,KAAK0I,EAAeiT,eACnC,KAAM,IAAInV,GACR,iFAIJ,OAAO4G,IAGTwO,EAAkB,SAAS9M,GAEzB,GAAI6F,GAAe,KAAO7F,EAAIoI,MAAQpI,EAAI+M,KAAO,IAAM/M,EAAI+M,KAAO,GAKlE,OAHI/M,GAAImI,WACNtC,EAAe7F,EAAImI,SAAW,IAAMtC,GAE/BA,GAGTmH,EAAyB,WAElB9b,KAAKkK,GACRlK,KAAKqR,EAAiBjK,MAAMpH,KAAMgH,YAItC+U,EAAkB,SAASC,EAAW3O,GACpC,GAAI6E,GAASlS,KAAKmS,EAAe6J,EAAW3O,EAE5CrN,MAAKic,EAAc,UACjBD,UAAWA,EACX3O,QAASA,IAGXrN,KAAKkc,GACHF,EAAUzW,KACVyW,EAAUhZ,QACVgZ,EAAU/J,IACV+J,EAAUG,OACVjK,EACA7E,IAIJ+O,EAAgB,SAASJ,EAAW3O,GAClC,GAAItN,GAAOC,KACPkS,IACJ,IAAI8J,EAAU7K,OAAS6K,EAAU7K,MAAMnQ,SACrC4K,EAAKoQ,EAAU7K,MAAO,SAASxQ,EAAGwQ,GAChC,GAAIkL,GAAQtc,EAAKuc,GAAgBnL,EAAO6K,EAAU/J,IAC9CoK,IACFnK,EAAOtO,KAAKyY,KAKZhP,GAAWA,EAAQ2D,gBACrB,IAAK,GAAIyI,GAAI,EAAGA,EAAIpM,EAAQ2D,gBAAkByI,EAAIvH,EAAOlR,OAAQyY,IAC/DvH,EAAOuH,GAAG8C,QAAS,CAKzB,OADArK,GAASA,EAAOnL,MAAM,EAAG/G,KAAK0I,EAAec,kBAI/CgT,GAAiB,SAASH,EAAOI,GAE/B,GAAIC,IACFC,SAAUN,EAAMpK,IAChBkK,OAAQE,EAAMO,KACdC,MAAOR,EAAMS,OACbC,WAAUV,EAAM5M,MAAQ,IAuB1B,OAfK4M,GAAMpK,MACTyK,EAAWC,SAAWF,GAGxBC,EAAWH,SAGNvc,KAAK0I,EAAeQ,aAAa4I,OACjC9R,KAAK0I,EAAeQ,aAAa4I,KAAK4K,EAAWC,WAEpD,qBAAqB7K,KAAK4K,EAAW,cAErC,qBAAqB5K,KAAK4K,EAAWC,WAGhCD,GAGTM,GAAmB,SAASja,EAAMC,EAASgP,EAASmK,EAAQjK,EAAQ7E,GAClE,GAAI4P,IAAmBla,EAAOA,EAAO,KAAO,KAAOC,GAAW,GAC9D,KACIhD,KAAK0I,EAAeK,aAAa+I,OAClC9R,KAAK0I,EAAeK,aAAa+I,KAAK9O,KACrChD,KAAK0I,EAAeK,aAAa+I,KAAKmL,GAH1C,CAQA,GAAIhM,EAoBJ,IAlBIiB,GAAUA,EAAOlR,QACnBgR,EAAUE,EAAO,GAAGyK,UAAY3K,EAGhCE,EAAOE,UACPnB,GAAciB,OAAQA,IACbF,IACTf,GACEiB,SAEIyK,SAAU3K,EACVmK,OAAQA,EACRI,QAAQ,QAOZvc,KAAK0I,EAAeM,WAAW8I,OACjC9R,KAAK0I,EAAeM,WAAW8I,KAAKE,OAMlChS,KAAK0I,EAAeO,cAAc6I,MACnC9R,KAAK0I,EAAeO,cAAc6I,KAAKE,IAF1C,CAOA,GAAIzP,GAAOsJ,GAGPnJ,WACEC,SAEII,KAAMA,EACND,MAAOE,EACPiO,WAAYA,KAIlBiM,QAASlL,GAEX3E,EAIFrN,MAAKqS,EAAM9P,MAGb4a,GAAa,SAAS5a,GAGpB,GAAIqL,GAAM5N,KAAK0I,EAAeY,gBAI9B,IAHI/G,EAAKS,UACPT,EAAKS,QAAU8I,EAASvJ,EAAKS,QAAS4K,IAEpCrL,EAAKG,UAAW,CAClB,GAAIA,GAAYH,EAAKG,UAAUC,OAAO,EACtCD,GAAUI,MAAQgJ,EAASpJ,EAAUI,MAAO8K,GAG9C,GAAIwP,GAAU7a,EAAK6a,OAanB,OAZIA,KACEA,EAAQnL,MACVmL,EAAQnL,IAAMnG,EAASsR,EAAQnL,IAAKjS,KAAK0I,EAAea,eAEtD6T,EAAQC,UACVD,EAAQC,QAAUvR,EAASsR,EAAQC,QAASrd,KAAK0I,EAAea,gBAIhEhH,EAAK+a,aAAe/a,EAAK+a,YAAY3a,QACvC3C,KAAKud,GAAiBhb,EAAK+a,aAEtB/a,GAMTib,GAAkB,SAASF,GAQzB,IAAK,GAJHG,GACAjL,EACAjQ,EAHEmb,GAAY,KAAM,OAAQ,OAKrB/c,EAAI,EAAGA,EAAI2c,EAAY3a,OAAO3B,SAAUL,EAE/C,GADA6R,EAAQ8K,EAAY3a,OAAOhC,GAExB6R,EAAMsF,eAAe,SACrBvM,EAASiH,EAAMjQ,QAChBwJ,EAAayG,EAAMjQ,MAHrB,CAOAA,EAAOsJ,KAAgB2G,EAAMjQ,KAC7B,KAAK,GAAIkX,GAAI,EAAGA,EAAIiE,EAAS1c,SAAUyY,EACrCgE,EAAUC,EAASjE,GACflX,EAAKuV,eAAe2F,IAAYlb,EAAKkb,KACvClb,EAAKkb,GAAW3R,EAASvJ,EAAKkb,GAAUzd,KAAK0I,EAAea,cAGhE+T,GAAY3a,OAAOhC,GAAG4B,KAAOA,IAIjCob,GAAc,WACZ,GAAK3d,KAAKiI,GAAkBjI,KAAK8H,EAAjC,CACA,GAAI8V,KAkBJ,OAhBI5d,MAAKiI,GAAiBC,EAAW2V,YACnCD,EAASzU,SACP2U,aAAc7Q,UAAU4Q,YAKxBjV,EAAQiC,UAAYjC,EAAQiC,SAASE,OACvC6S,EAAS3L,IAAMrJ,EAAQiC,SAASE,MAG9B/K,KAAK8H,GAAgBE,EAAU+V,WAC5BH,EAASzU,UAASyU,EAASzU,YAChCyU,EAASzU,QAAQkU,QAAUrV,EAAU+V,UAGhCH,IAGTI,EAAe,WACbhe,KAAKie,GAAmB,EACxBje,KAAKke,GAAgB,MAGvBC,GAAgB,WACd,MAAOne,MAAKie,IAAoB3W,IAAQtH,KAAKke,GAAgBle,KAAKie,IAYpEG,GAAe,SAASC,GACtB,GAAIC,GAAOte,KAAKoI,CAEhB,UACGkW,GACDD,EAAQrb,UAAYsb,EAAKtb,SACzBqb,EAAQnB,UAAYoB,EAAKpB,WAKvBmB,EAAQpN,YAAcqN,EAAKrN,WACtB3E,EAAiB+R,EAAQpN,WAAYqN,EAAKrN,aACxCoN,EAAQ3b,YAAa4b,EAAK5b,WAE5B2J,EAAgBgS,EAAQ3b,UAAW4b,EAAK5b,aAMnD6b,GAAkB,SAASnB,GAEzB,IAAIpd,KAAKwe,KAAT,CAIA,GAAIjF,GAAS6D,EAAQ7D,MAKrB,IAAiB,MAAXA,GAA6B,MAAXA,GAA6B,MAAXA,EAA1C,CAEA,GAAIkF,EACJ,KAIIA,EADEhS,IACM2Q,EAAQjU,QAAQuV,IAAI,eAEpBtB,EAAQuB,kBAAkB,eAIpCF,EAA8B,IAAtBG,SAASH,EAAO,IACxB,MAAOve,IAITF,KAAKie,GAAmBQ,EAEpBA,EAEwB,EAAxBze,KAAKie,IAAwB,IAEjCje,KAAKke,GAAgB5W,OAGvBuX,EAAO,SAAStc,GACd,GAAIgL,GAAgBvN,KAAK0I,EAErBoW,GACAC,QAAS/e,KAAKwI,EACdtB,OAAQqG,EAAcrG,OACtB8X,SAAU,cAEZpB,EAAW5d,KAAKif,IAsDlB,IApDIrB,IACFkB,EAAS1B,QAAUQ,GAIjBrb,EAAKyO,sBAAuBzO,GAAKyO,eAErCzO,EAAOsJ,EAAYiT,EAAUvc,GAG7BA,EAAK4Q,KAAOtH,EAAYA,KAAgB7L,KAAKyI,EAAe0K,MAAO5Q,EAAK4Q,MACxE5Q,EAAKN,MAAQ4J,EAAYA,KAAgB7L,KAAKyI,EAAexG,OAAQM,EAAKN,OAG1EM,EAAKN,MAAM,oBAAsBqF,IAAQtH,KAAKwK,EAE1CxK,KAAK0K,GAAgB1K,KAAK0K,EAAa1J,OAAS,IAGlDuB,EAAK+a,aACH3a,UAAWoE,MAAMhG,KAAKf,KAAK0K,EAAc,KAIzC1K,KAAKyI,EAAe2G,OAEtB7M,EAAK6M,KAAOpP,KAAKyI,EAAe2G,MAI9B7B,EAAciG,cAAajR,EAAKiR,YAAcjG,EAAciG,aAG5DjG,EAAc5E,UAASpG,EAAKoG,QAAU4E,EAAc5E,SAGpD4E,EAAc2R,aAAY3c,EAAK4c,YAAc5R,EAAc2R,YAE/D3c,EAAOvC,KAAKof,GAAc7c,GAG1B0D,OAAOyL,KAAKnP,GAAM8c,QAAQ,SAAS7R,IAChB,MAAbjL,EAAKiL,IAA8B,KAAdjL,EAAKiL,IAAe7B,EAAcpJ,EAAKiL,YACvDjL,GAAKiL,KAIZ9F,EAAW6F,EAAcmG,gBAC3BnR,EAAOgL,EAAcmG,aAAanR,IAASA,GAIxCA,IAAQoJ,EAAcpJ,MAMzBmF,EAAW6F,EAAcsG,qBACxBtG,EAAcsG,mBAAmBtR,IAOpC,MAAIvC,MAAKwe,SACPxe,MAAKsN,EAAU,OAAQ,uCAAwC/K,QAIzB,gBAA7BgL,GAAc5D,WACnBgE,KAAK2R,SAAW/R,EAAc5D,YAChC3J,KAAKuf,GAAsBhd,GAG7BvC,KAAKuf,GAAsBhd,KAI/Bid,GAAe,SAASjd,GACtB,MAAOqK,GAASrK,EAAMvC,KAAK0I,EAAekB,eAG5C6V,GAAU,WACR,MAAOtT,MAGTuT,GAAuB,SAASnd,EAAMsB,GACpC,GAAI9D,GAAOC,KACPuN,EAAgBvN,KAAK0I,CAEzB,IAAK1I,KAAKqO,UAAV,CAQA,GALA9L,EAAOvC,KAAK2f,GAAYpd,IAKnBvC,KAAK0I,EAAekX,iBAAmB5f,KAAK6f,GAActd,GAE7D,WADAvC,MAAKsN,EAAU,OAAQ,+BAAgC/K,EAOzDvC,MAAKqI,EAAe9F,EAAKud,WAAavd,EAAKud,SAAW9f,KAAK+f,MAG3D/f,KAAKoI,EAAY7F,EAEjBvC,KAAKsN,EAAU,QAAS,uBAAwB/K,EAEhD,IAAIyd,IACFC,eAAgB,IAChBC,cAAe,YAAclgB,KAAKkN,QAClCiT,WAAYngB,KAAKuI,EAGfvI,MAAKqP,IACP2Q,EAAKI,cAAgBpgB,KAAKqP,EAG5B,IAAI3M,GAAYH,EAAKG,WAAaH,EAAKG,UAAUC,OAAO,EAItD3C,MAAK0I,EAAee,iBACpBzJ,KAAK0I,EAAee,gBAAgBwE,QAEpCjO,KAAKsS,mBACH6D,SAAU,SACVnT,QAASN,GACJA,EAAUK,KAAOL,EAAUK,KAAO,KAAO,IAAML,EAAUI,MAC1DP,EAAKS,QACT8c,SAAUvd,EAAKud,SACf9b,MAAOzB,EAAKyB,OAAS,SAIzB,IAAIiO,GAAMjS,KAAKwP,GACdjC,EAAcwG,WAAa/T,KAAKqgB,IAActf,KAAKf,MAClDiS,IAAKA,EACL+N,KAAMA,EACNzd,KAAMA,EACN8K,QAASE,EACT+S,UAAW,WACTvgB,EAAKiL,IAELjL,EAAKkc,EAAc,WACjB1Z,KAAMA,EACNwS,IAAK9C,IAEPpO,GAAYA,KAEd0c,QAAS,SAAiB7b,GACxB3E,EAAKuN,EAAU,QAAS,mCAAoC5I,GAExDA,EAAM0Y,SACRrd,EAAKygB,GAAiB9b,EAAM0Y,SAG9Brd,EAAKkc,EAAc,WACjB1Z,KAAMA,EACNwS,IAAK9C,IAEPvN,EAAQA,GAAS,GAAI9D,OAAM,sDAC3BiD,GAAYA,EAASa,QAK3B+b,GAAc,SAASC,GAErB,GAAIzO,GAAMyO,EAAKzO,IAAM,IAAM/F,EAAUwU,EAAKV,MAEtCW,EAAmB,KACnBC,IAUJ,IARIF,EAAKrT,QAAQlE,UACfwX,EAAmB3gB,KAAK6gB,GAAcH,EAAKrT,QAAQlE,UAGjDuX,EAAKrT,QAAQyT,kBACfF,EAA2B5gB,KAAK6gB,GAAcH,EAAKrT,QAAQyT,kBAGzDrU,IAAiB,CACnBmU,EAAyB3L,KAAOpN,EAAU6Y,EAAKne,KAE/C,IAAIwe,GAAsBlV,KAAgB7L,KAAK6J,GAC3CmX,EAAenV,EAAYkV,EAAqBH,EAMpD,OAJID,KACFK,EAAa7X,QAAUwX,GAGlB/X,EACJqY,MAAMhP,EAAK+O,GACXjH,KAAK,SAASC,GACb,GAAIA,EAASkH,GACXR,EAAKJ,WAAaI,EAAKJ,gBAClB,CACL,GAAI5b,GAAQ,GAAI9D,OAAM,sBAAwBoZ,EAAST,OAGvD7U,GAAM0Y,QAAUpD,EAChB0G,EAAKH,SAAWG,EAAKH,QAAQ7b,MAGhC,SAAS,WACRgc,EAAKH,SACHG,EAAKH,QAAQ,GAAI3f,OAAM,6CAI/B,GAAIwc,GAAUxU,EAAQmQ,gBAAkB,GAAInQ,GAAQmQ,cACpD,IAAKqE,EAAL,CAGA,GAAI+D,GAAU,mBAAqB/D,IAAqC,mBAAnBgE,eAEhDD,KAED,mBAAqB/D,GACvBA,EAAQ1D,mBAAqB,WAC3B,GAA2B,IAAvB0D,EAAQ9D,WAEL,GAAuB,MAAnB8D,EAAQ7D,OACjBmH,EAAKJ,WAAaI,EAAKJ,gBAClB,IAAII,EAAKH,QAAS,CACvB,GAAIrI,GAAM,GAAItX,OAAM,sBAAwBwc,EAAQ7D,OACpDrB,GAAIkF,QAAUA,EACdsD,EAAKH,QAAQrI,MAIjBkF,EAAU,GAAIgE,gBAGdnP,EAAMA,EAAIoP,QAAQ,WAAY,IAG1BX,EAAKJ,YACPlD,EAAQkE,OAASZ,EAAKJ,WAEpBI,EAAKH,UACPnD,EAAQ3Y,QAAU,WAChB,GAAIyT,GAAM,GAAItX,OAAM,oCACpBsX,GAAIkF,QAAUA,EACdsD,EAAKH,QAAQrI,MAKnBkF,EAAQmE,KAAK,OAAQtP,GAEjB0O,GACF/U,EAAK+U,EAAkB,SAASnT,EAAK1K,GACnCsa,EAAQoE,iBAAiBhU,EAAK1K,KAIlCsa,EAAQqE,KAAK5Z,EAAU6Y,EAAKne,UAG9Bmf,GAAe,SAASC,GACtB,GAAIC,KAEJ,KAAK,GAAIpU,KAAOmU,GACd,GAAIA,EAAK7J,eAAetK,GAAM,CAC5B,GAAI1K,GAAQ6e,EAAKnU,EACjBoU,GAAUpU,GAAwB,kBAAV1K,GAAuBA,IAAUA,EAI7D,MAAO8e,IAGTC,EAAW,SAAS7d,GAGhBhE,KAAKsK,EAAwBtG,KAC5BhE,KAAKmN,OAASnN,KAAK0I,EAAeyE,QAGnChG,SAASjB,UAAUkB,MAAMrG,KACvBf,KAAKsK,EAAwBtG,GAC7BhE,KAAKqK,KACFtD,MAAMhG,KAAKiG,UAAW,KAK/B8a,EAAe,SAAStU,EAAK1I,GACvBiD,EAAYjD,SACP9E,MAAKyI,EAAe+E,GAE3BxN,KAAKyI,EAAe+E,GAAO3B,EAAY7L,KAAKyI,EAAe+E,OAAY1I,KAM7E7E,EAAMiG,UAAU6b,QAAU9hB,EAAMiG,UAAU6M,eAC1C9S,EAAMiG,UAAU8b,kBAAoB/hB,EAAMiG,UAAUuN,WAEpDhU,EAAOD,QAAUS,IAEdc,KAAKf,KAAuB,mBAAXF,QAAyBA,OAAyB,mBAATC,MAAuBA,KAAyB,mBAAXF,QAAyBA,aACxHuD,GAAK,GAAG6e,GAAK,GAAGC,GAAK,GAAGC,GAAK,GAAG5b,EAAI,EAAEnC,EAAI,IAAIf,GAAG,SAASnC,EAAQzB,EAAOD,IAC5E,SAAWM,GAOX,GAAIsiB,GAAmBlhB,EAAQ,GAG3B0H,EACgB,mBAAX/I,QACHA,OACkB,mBAAXC,GAAyBA,EAAyB,mBAATC,MAAuBA,QACzEsiB,EAASzZ,EAAQ3I,MAEjBA,EAAQ,GAAImiB,EAQhBniB,GAAMqiB,WAAa,WAEjB,MADA1Z,GAAQ3I,MAAQoiB,EACTpiB,GAGTA,EAAMkU,YAEN1U,EAAOD,QAAUS,EAoCjBR,EAAOD,QAAQ+iB,OAASH,IAErBrhB,KAAKf,KAAuB,mBAAXF,QAAyBA,OAAyB,mBAATC,MAAuBA,KAAyB,mBAAXF,QAAyBA,aACxHwH,EAAI,IAAIjE,IAAI,SAASlC,EAAQzB,EAAOD,IACvC,SAAWM,GAQX,QAASyL,GAASiX,GAChB,MAAuB,gBAATA,IAA8B,OAATA,EAKrC,QAASlX,GAAQxI,GACf,OAAQmD,OAAOC,UAAUC,SAASpF,KAAK+B,IACrC,IAAK,iBACH,OAAO,CACT,KAAK,qBACH,OAAO,CACT,KAAK,wBACH,OAAO,CACT,SACE,MAAOA,aAAiBlC,QAI9B,QAASuK,GAAarI,GACpB,MAAiD,wBAA1CmD,OAAOC,UAAUC,SAASpF,KAAK+B,GAGxC,QAASsI,GAAWtI,GAClB,MAAiD,sBAA1CmD,OAAOC,UAAUC,SAASpF,KAAK+B,GAGxC,QAASuI,GAAevI,GACtB,MAAiD,0BAA1CmD,OAAOC,UAAUC,SAASpF,KAAK+B,GAGxC,QAASiF,GAAYya,GACnB,MAAgB,UAATA,EAGT,QAAS9a,GAAW8a,GAClB,MAAuB,kBAATA,GAGhB,QAAShX,GAAcgX,GACrB,MAAgD,oBAAzCvc,OAAOC,UAAUC,SAASpF,KAAKyhB,GAGxC,QAAS/W,GAAS+W,GAChB,MAAgD,oBAAzCvc,OAAOC,UAAUC,SAASpF,KAAKyhB,GAGxC,QAAS9W,GAAQ8W,GACf,MAAgD,mBAAzCvc,OAAOC,UAAUC,SAASpF,KAAKyhB,GAGxC,QAAS7W,GAAc6W,GACrB,IAAKhX,EAAcgX,GAAO,OAAO,CAEjC,KAAK,GAAInN,KAAKmN,GACZ,GAAIA,EAAK1K,eAAezC,GACtB,OAAO,CAGX,QAAO,EAGT,QAASoN,KACP,IAEE,MADA,IAAIC,YAAW,KACR,EACP,MAAOxiB,GACP,OAAO,GAIX,QAASyiB,KACP,IAEE,MADA,IAAIC,UAAS,KACN,EACP,MAAO1iB,GACP,OAAO,GAIX,QAAS2iB,KACP,IAEE,MADA,IAAIC,cAAa,KACV,EACP,MAAO5iB,GACP,OAAO,GAIX,QAASuM,KACP,KAAM,SAAW7D,IAAU,OAAO,CAElC,KAIE,MAHA,IAAIma,SACJ,GAAIlJ,SAAQ,IACZ,GAAImJ,WACG,EACP,MAAO9iB,GACP,OAAO,GAQX,QAAS+J,KACP,IAAKwC,IAAiB,OAAO,CAE7B,KAKE,MAHA,IAAIoN,SAAQ,cACV7P,eAAgB,YAEX,EACP,MAAO9J,GACP,OAAO,GAIX,QAAS+iB,KACP,MAAwC,kBAA1BC,uBAGhB,QAAS5gB,GAAgBuB,GACvB,QAAS6P,GAAanR,EAAMkF,GAC1B,GAAI0b,GAAiBtf,EAAStB,IAASA,CACvC,OAAIkF,GACKA,EAAS0b,IAAmBA,EAE9BA,EAGT,MAAOzP,GAGT,QAAS9H,GAAK2G,EAAK1O,GACjB,GAAIlD,GAAG8Y,CAEP,IAAI1R,EAAYwK,EAAIvR,QAClB,IAAKL,IAAK4R,GACJvG,EAAOuG,EAAK5R,IACdkD,EAAS9C,KAAK,KAAMJ,EAAG4R,EAAI5R,QAK/B,IADA8Y,EAAIlH,EAAIvR,OAEN,IAAKL,EAAI,EAAGA,EAAI8Y,EAAG9Y,IACjBkD,EAAS9C,KAAK,KAAMJ,EAAG4R,EAAI5R,IAMnC,QAASkL,GAAYuX,EAAMC,GACzB,MAAKA,IAGLzX,EAAKyX,EAAM,SAAS7V,EAAK1K,GACvBsgB,EAAK5V,GAAO1K,IAEPsgB,GALEA,EAgBX,QAASrX,GAAawG,GACpB,QAAKtM,OAAOqd,UAGLrd,OAAOqd,SAAS/Q,GAGzB,QAASzG,GAAS2P,EAAK7N,GACrB,GAAmB,gBAARA,GACT,KAAM,IAAIhN,OAAM,yDAElB,OAAmB,gBAAR6a,IAA4B,IAAR7N,EACtB6N,EAEFA,EAAIza,QAAU4M,EAAM6N,EAAMA,EAAIvY,OAAO,EAAG0K,GAAO,IAUxD,QAAS5B,GAAOuX,EAAQ/V,GACtB,MAAOvH,QAAOC,UAAU4R,eAAe/W,KAAKwiB,EAAQ/V,GAGtD,QAASvB,GAAWuX,GAQlB,IALA,GAGEC,GAHEC,KACF/iB,EAAI,EACJgjB,EAAMH,EAASxiB,OAGVL,EAAIgjB,EAAKhjB,IACd8iB,EAAUD,EAAS7iB,GACf8K,EAASgY,GAGXC,EAAQ9f,KAAK6f,EAAQpC,QAAQ,8BAA+B,SACnDoC,GAAWA,EAAQG,QAE5BF,EAAQ9f,KAAK6f,EAAQG,OAIzB,OAAO,IAAIC,QAAOH,EAAQI,KAAK,KAAM,KAGvC,QAAS5X,GAAU3L,GACjB,GAAIwjB,KAIJ,OAHAnY,GAAKrL,EAAG,SAASiN,EAAK1K,GACpBihB,EAAMngB,KAAK4Q,mBAAmBhH,GAAO,IAAMgH,mBAAmB1R,MAEzDihB,EAAMD,KAAK,KAMpB,QAASvX,GAAS0F,GAChB,GAAmB,gBAARA,GAAkB,QAC7B,IAAI+R,GAAQ/R,EAAI+R,MAAM,kEAGlBC,EAAQD,EAAM,IAAM,GACpBE,EAAWF,EAAM,IAAM,EAC3B,QACE/M,SAAU+M,EAAM,GAChB9M,KAAM8M,EAAM,GACZ/U,KAAM+U,EAAM,GACZ7M,SAAU6M,EAAM,GAAKC,EAAQC,GAGjC,QAAS/X,KACP,GAAIgY,GAASvb,EAAQub,QAAUvb,EAAQwb,QAEvC,KAAKrc,EAAYoc,IAAWA,EAAOE,gBAAiB,CAGlD,GAAIC,GAAM,GAAIC,aAAY,EAC1BJ,GAAOE,gBAAgBC,GAGvBA,EAAI,GAAe,KAATA,EAAI,GAAc,MAE5BA,EAAI,GAAe,MAATA,EAAI,GAAe,KAE7B,IAAIE,GAAM,SAASC,GAEjB,IADA,GAAIC,GAAID,EAAIte,SAAS,IACdue,EAAE1jB,OAAS,GAChB0jB,EAAI,IAAMA,CAEZ,OAAOA,GAGT,OACEF,GAAIF,EAAI,IACRE,EAAIF,EAAI,IACRE,EAAIF,EAAI,IACRE,EAAIF,EAAI,IACRE,EAAIF,EAAI,IACRE,EAAIF,EAAI,IACRE,EAAIF,EAAI,IACRE,EAAIF,EAAI,IAIV,MAAO,mCAAmCjD,QAAQ,QAAS,SAASsD,GAClE,GAAItkB,GAAqB,GAAhBsN,KAAK2R,SAAiB,EAC7BoF,EAAU,MAANC,EAAYtkB,EAAS,EAAJA,EAAW,CAClC,OAAOqkB,GAAEve,SAAS,MAYxB,QAASiG,GAAiBwY,GAWxB,IATA,GAOEC,GAPEC,EAAsB,EACxBC,EAAiB,GACjBC,KACAC,EAAS,EACTtB,EAAM,EACNuB,EAAY,MACZC,EAAYD,EAAUlkB,OAGjB4jB,GAAQK,IAAWH,IACxBD,EAAUO,EAAoBR,KAMhB,SAAZC,GACCI,EAAS,GAAKtB,EAAMqB,EAAIhkB,OAASmkB,EAAYN,EAAQ7jB,QAAU+jB,KAKlEC,EAAIphB,KAAKihB,GAETlB,GAAOkB,EAAQ7jB,OACf4jB,EAAOA,EAAKS,UAGd,OAAOL,GAAI5S,UAAU0R,KAAKoB,GAS5B,QAASE,GAAoBR,GAC3B,GACEU,GACAC,EACA/X,EACAgY,EACA7kB,EALEqkB,IAOJ,KAAKJ,IAASA,EAAKtO,QACjB,MAAO,EAST,IANA0O,EAAIphB,KAAKghB,EAAKtO,QAAQR,eAClB8O,EAAK9b,IACPkc,EAAIphB,KAAK,IAAMghB,EAAK9b,IAGtBwc,EAAYV,EAAKU,UACbA,GAAa7Z,EAAS6Z,GAExB,IADAC,EAAUD,EAAUxY,MAAM,OACrBnM,EAAI,EAAGA,EAAI4kB,EAAQvkB,OAAQL,IAC9BqkB,EAAIphB,KAAK,IAAM2hB,EAAQ5kB,GAG3B,IAAI8kB,IAAiB,OAAQ,OAAQ,QAAS,MAC9C,KAAK9kB,EAAI,EAAGA,EAAI8kB,EAAczkB,OAAQL,IACpC6M,EAAMiY,EAAc9kB,GACpB6kB,EAAOZ,EAAKc,aAAalY,GACrBgY,GACFR,EAAIphB,KAAK,IAAM4J,EAAM,KAAOgY,EAAO,KAGvC,OAAOR,GAAIlB,KAAK,IAMlB,QAAS6B,GAAgBllB,EAAGmlB,GAC1B,WAAYnlB,IAAMmlB,GAMpB,QAASC,GAAgBplB,EAAGmlB,GAC1B,MAAO7d,GAAYtH,IAAMsH,EAAY6d,GAMvC,QAASvZ,GAAgBiF,EAAKwU,GAC5B,OAAIH,EAAgBrU,EAAKwU,KAEzBxU,EAAMA,EAAI3O,OAAO,GACjBmjB,EAAMA,EAAInjB,OAAO,GAEb2O,EAAIvO,OAAS+iB,EAAI/iB,MAAQuO,EAAIxO,QAAUgjB,EAAIhjB,SAG3C+iB,EAAgBvU,EAAIL,WAAY6U,EAAI7U,aAEjC3E,EAAiBgF,EAAIL,WAAY6U,EAAI7U,cAM9C,QAAS3E,GAAiByZ,EAAQC,GAChC,GAAIL,EAAgBI,EAAQC,GAAS,OAAO,CAE5C,IAAIC,GAAUF,EAAO7T,OACjBgU,EAAUF,EAAO9T,MAGrB,IAAI+T,EAAQjlB,SAAWklB,EAAQllB,OAAQ,OAAO,CAI9C,KAAK,GADDP,GAAGmlB,EACEjlB,EAAI,EAAGA,EAAIslB,EAAQjlB,OAAQL,IAGlC,GAFAF,EAAIwlB,EAAQtlB,GACZilB,EAAIM,EAAQvlB,GAEVF,EAAEkc,WAAaiJ,EAAEjJ,UACjBlc,EAAE0b,SAAWyJ,EAAEzJ,QACf1b,EAAEoc,QAAU+I,EAAE/I,OACdpc,EAAE,cAAgBmlB,EAAE,YAEpB,OAAO,CAEX,QAAO,EAUT,QAASpZ,GAAK+F,EAAKhN,EAAM4gB,EAAaC,GACpC,GAAW,MAAP7T,EAAJ,CACA,GAAIiF,GAAOjF,EAAIhN,EACfgN,GAAIhN,GAAQ4gB,EAAY3O,GACxBjF,EAAIhN,GAAMuK,GAAY,EACtByC,EAAIhN,GAAM0K,EAAWuH,EACjB4O,GACFA,EAAMxiB,MAAM2O,EAAKhN,EAAMiS,KAU3B,QAASvQ,GAASof,EAAOC,GACvB,IAAK5a,EAAQ2a,GAAQ,MAAO,EAI5B,KAAK,GAFDE,MAEK5lB,EAAI,EAAGA,EAAI0lB,EAAMrlB,OAAQL,IAChC,IACE4lB,EAAO3iB,KAAK4iB,OAAOH,EAAM1lB,KACzB,MAAOT,GACPqmB,EAAO3iB,KAAK,gCAIhB,MAAO2iB,GAAOzC,KAAKwC,GASrB,QAASG,GAAW3jB,GAClB,QAAS4jB,UAAU5jB,GAAOgK,MAAM,SAAS9L,OAG3C,QAAS2lB,GAAS7jB,GAChB,MAAO2jB,GAAW7e,KAAKC,UAAU/E,IAGnC,QAAS8jB,GAAe9jB,GACtB,GAAqB,gBAAVA,GAAoB,CAC7B,GAAI+jB,GAAY,EAChB,OAAO/a,GAAShJ,EAAO+jB,GAClB,GACY,gBAAV/jB,IACU,iBAAVA,IACU,mBAAVA,GAEP,MAAOA,EAGT,IAAIC,GAAOkD,OAAOC,UAAUC,SAASpF,KAAK+B,EAG1C,OAAa,oBAATC,EAAmC,WAC1B,mBAATA,EAAkC,UACzB,sBAATA,EACKD,EAAMyC,KAAO,cAAgBzC,EAAMyC,KAAO,IAAM,aAElDzC,EAGT,QAASgkB,GAAgBhkB,EAAOikB,GAC9B,MAAc,KAAVA,EAAoBH,EAAe9jB,GAEnC0I,EAAc1I,GACTmD,OAAOyL,KAAK5O,GAAOkkB,OAAO,SAASC,EAAKzZ,GAE7C,MADAyZ,GAAIzZ,GAAOsZ,EAAgBhkB,EAAM0K,GAAMuZ,EAAQ,GACxCE,OAEAvP,MAAMhM,QAAQ5I,GAChBA,EAAMokB,IAAI,SAASC,GACxB,MAAOL,GAAgBK,EAAKJ,EAAQ,KAIjCH,EAAe9jB,GAGxB,QAAS6J,GAAmB7K,EAAIilB,EAAOK,GACrC,IAAK5b,EAAc1J,GAAK,MAAOA,EAE/BilB,GAAyB,gBAAVA,GAAqBM,EAAgCN,EACpEK,EAA2B,gBAAVL,GAAqBO,EAA+BF,CAErE,IAAIG,GAAaT,EAAgBhlB,EAAIilB,EAErC,OAAIJ,GAAS9e,EAAU0f,IAAeH,EAC7Bza,EAAmB7K,EAAIilB,EAAQ,GAGjCQ,EAGT,QAAS7a,GAAwBgF,EAAMmV,GACrC,GAAoB,gBAATnV,IAAqC,gBAATA,GAAmB,MAAOA,GAAKvL,UACtE,KAAKuR,MAAMhM,QAAQgG,GAAO,MAAO,EAKjC,IAHAA,EAAOA,EAAK8V,OAAO,SAASha,GAC1B,MAAsB,gBAARA,KAEI,IAAhBkE,EAAK1Q,OAAc,MAAO,sBAG9B,IADA6lB,EAAiC,gBAAdA,GAAyBY,EAA4BZ,EACpEnV,EAAK,GAAG1Q,QAAU6lB,EAAW,MAAOnV,GAAK,EAE7C,KAAK,GAAIgW,GAAWhW,EAAK1Q,OAAQ0mB,EAAW,EAAGA,IAAY,CACzD,GAAIH,GAAa7V,EAAK3K,MAAM,EAAG2gB,GAAU5D,KAAK,KAC9C,MAAIyD,EAAWvmB,OAAS6lB,GACxB,MAAIa,KAAahW,EAAK1Q,OAAeumB,EAC9BA,EAAa,IAGtB,MAAO,GAGT,QAAS3a,GAASyZ,EAAOzc,GAcvB,QAAS+d,GAAeC,GACtB,MAAIlc,GAAQkc,GACHA,EAAYV,IAAI,SAASC,GAC9B,MAAOQ,GAAeR,KAItB3b,EAAcoc,GACT3hB,OAAOyL,KAAKkW,GAAaZ,OAAO,SAASC,EAAKY,GAMnD,MAJEZ,GAAIY,GADFC,EAAehW,KAAK+V,GACbE,EAEAJ,EAAeC,EAAYC,IAE/BZ,OAIJW,EA/BT,IAAKlc,EAAQ9B,IAAkB8B,EAAQ9B,IAAyC,IAAxBA,EAAa5I,OACnE,MAAOqlB,EAET,IAEI2B,GAFAF,EAAiB7b,EAAWrC,GAC5Bme,EAAe,UAGnB,KACEC,EAAYpgB,KAAK0L,MAAMzL,EAAUwe,IACjC,MAAO4B,GACP,MAAO5B,GAwBT,MAAOsB,GAAeK,GA5lBxB,GAAIngB,GAAY3G,EAAQ,IAEpB0H,EACgB,mBAAX/I,QACHA,OACkB,mBAAXC,GAAyBA,EAAyB,mBAATC,MAAuBA,QA0dzEsnB,EAAgC,EAEhCC,EAA+B,MAC/BG,EAA4B,EA6HhChoB,GAAOD,SACL+L,SAAUA,EACVD,QAASA,EACTH,aAAcA,EACdC,WAAYA,EACZC,eAAgBA,EAChBtD,YAAaA,EACbL,WAAYA,EACZ8D,cAAeA,EACfC,SAAUA,EACVC,QAASA,EACTC,cAAeA,EACf8W,mBAAoBA,EACpBE,iBAAkBA,EAClBE,qBAAsBA,EACtBpW,cAAeA,EACfxC,uBAAwBA,EACxBgZ,8BAA+BA,EAC/B3gB,gBAAiBA,EACjBsJ,KAAMA,EACNC,YAAaA,EACbC,SAAUA,EACVC,aAAcA,EACdC,OAAQA,EACRC,WAAYA,EACZC,UAAWA,EACXC,MAAOA,EACPC,iBAAkBA,EAClBgZ,oBAAqBA,EACrB/Y,gBAAiBA,EACjBC,iBAAkBA,EAClBC,SAAUA,EACVC,KAAMA,EACNvF,SAAUA,EACV0F,mBAAoBA,EACpBD,wBAAyBA,EACzBE,SAAUA,KAGT7L,KAAKf,KAAuB,mBAAXF,QAAyBA,OAAyB,mBAATC,MAAuBA,KAAyB,mBAAXF,QAAyBA,aACxHqiB,GAAK,KAAKD,IAAI,SAAS/gB,EAAQzB,EAAOD,IACzC,SAAWM,GA+BX,QAASooB,KACP,MAAwB,mBAAblb,WAAiD,MAArBA,SAASnC,SAAyB,GAClEmC,SAASnC,SAASE,KAG3B,QAASod,KACP,MAAwB,mBAAbnb,WAAiD,MAArBA,SAASnC,SAAyB,GAClEmC,SAASnC,SAASud,OArC3B,GAAI1hB,GAAQxF,EAAQ,IAYhB+J,GACF7B,qBAAqB,EACrB+D,OAAO,GAILvE,EACgB,mBAAX/I,QACHA,OACkB,mBAAXC,GAAyBA,EAAyB,mBAATC,MAAuBA,QAGzEsoB,KAAYthB,MACZuhB,EAAmB,IAGnBC,EAAiB,yGAmDrBtd,GAASqD,OAAS,WAUhB,QAASC,GAAUia,GACjBC,IACAC,EAAS9kB,KAAK4kB,GAOhB,QAASG,GAAYH,GACnB,IAAK,GAAI7nB,GAAI+nB,EAAS1nB,OAAS,EAAGL,GAAK,IAAKA,EACtC+nB,EAAS/nB,KAAO6nB,GAClBE,EAASE,OAAOjoB,EAAG,GAQzB,QAASkoB,KACPC,IACAJ,KAOF,QAASK,GAAe5X,EAAO6X,GAC7B,GAAItmB,GAAY,IAChB,KAAIsmB,GAAkB/d,EAAS7B,oBAA/B,CAGA,IAAK,GAAIzI,KAAK+nB,GACZ,GAAIA,EAAS5Q,eAAenX,GAC1B,IACE+nB,EAAS/nB,GAAGyG,MAAM,MAAO+J,GAAOoK,OAAO8M,EAAOtnB,KAAKiG,UAAW,KAC9D,MAAOiiB,GACPvmB,EAAYumB,EAKlB,GAAIvmB,EACF,KAAMA,IAiBV,QAASwmB,GAAsBplB,EAAKmO,EAAKkX,EAAQC,EAAOtnB,GACtD,GAAIqP,GAAQ,KAERzO,EAAYgE,EAAMyE,aAAarJ,GAAMA,EAAG4C,MAAQ5C,EAEhDkB,EAAU0D,EAAMyE,aAAarH,GAAOA,EAAId,QAAUc,CAEtD,IAAIulB,EACFpe,EAASmG,kBAAkBkY,oCACzBD,EACApX,EACAkX,EACAnmB,GAEFumB,QACK,IAAI7mB,GAAagE,EAAM4E,QAAQ5I,GAMpCyO,EAAQlG,EAASmG,kBAAkB1O,GACnCqmB,EAAe5X,GAAO,OACjB,CACL,GAOIqY,GAPA3e,GACFoH,IAAKA,EACL2K,KAAMuM,EACNrM,OAAQsM,GAGN7jB,EAAOmK,MAGX,IAAkC,uBAA3BvJ,SAASpF,KAAKiC,GAAgC,CACnD,GAAIwmB,GAASxmB,EAAQghB,MAAMuE,EACvBiB,KACFjkB,EAAOikB,EAAO,GACdxmB,EAAUwmB,EAAO,IAIrB3e,EAAS4E,KAAO6Y,EAEhBnX,GACE5L,KAAMA,EACNvC,QAASA,EACTiP,IAAKiW,IACL/W,OAAQtG,IAEVke,EAAe5X,GAAO,GAGxB,QAAIsY,GACKA,EAAmBriB,MAAMpH,KAAMgH,WAM1C,QAASyhB,KACHiB,IAGJD,EAAqB7gB,EAAQnE,QAC7BmE,EAAQnE,QAAUykB,EAClBQ,GAA2B,GAG7B,QAASZ,KACFY,IAGL9gB,EAAQnE,QAAUglB,EAClBC,GAA2B,EAC3BD,EAAqB/Z,QAGvB,QAAS6Z,KACP,GAAII,GAAsBN,EACxBO,EAAYC,CACdA,GAAW,KACXR,EAAqB,KACrBrV,EAAgB,KAChB+U,EAAe3hB,MAAM,MAAOuiB,GAAqB,GAAOpO,OAAOqO,IAUjE,QAAStb,GAAOxM,EAAIgoB,GAClB,GAAIhjB,GAAOuhB,EAAOtnB,KAAKiG,UAAW,EAClC,IAAIqiB,EAAoB,CACtB,GAAIrV,IAAkBlS,EACpB,MAEAynB,KAIJ,GAAIpY,GAAQlG,EAASmG,kBAAkBtP,EAevC,IAdAunB,EAAqBlY,EACrB6C,EAAgBlS,EAChB+nB,EAAW/iB,EAMXsO,WAAW,WACLpB,IAAkBlS,GACpBynB,KAEDpY,EAAM4Y,WAAa,IAAO,GAEzBD,KAAY,EACd,KAAMhoB,GA9LV,GA0DI2nB,GAAoBC,EA1DpBhB,KACFmB,EAAW,KACX7V,EAAgB,KAChBqV,EAAqB,IAkMvB,OAHA/a,GAAOC,UAAYA,EACnBD,EAAOqa,YAAcA,EACrBra,EAAO4B,UAAY2Y,EACZva,KAsDTrD,EAASmG,kBAAoB,WA4C3B,QAAS4Y,GAA+BloB,GACtC,GAAwB,mBAAbA,GAAGqP,OAA0BrP,EAAGqP,MAA3C,CAiBA,IAAK,GALD8Y,GACAC,EACAC,EAZAjQ,EAAS,0IACTkQ,EAAQ,wHAGRC,EAAQ,6JAERC,EAAY,gDACZC,EAAa,gCACbC,EAAQ1oB,EAAGqP,MAAMrE,MAAM,MACvBqE,KAMKxQ,GAFO,sBAAsBkC,KAAKf,EAAGkB,SAEjC,GAAGyW,EAAI+Q,EAAMxpB,OAAQL,EAAI8Y,IAAK9Y,EAAG,CAC5C,GAAKupB,EAAQhQ,EAAOrX,KAAK2nB,EAAM7pB,IAAM,CACnC,GAAI8pB,GAAWP,EAAM,IAAqC,IAA/BA,EAAM,GAAGjR,QAAQ,UACxCyR,EAASR,EAAM,IAAmC,IAA7BA,EAAM,GAAGjR,QAAQ,OACtCyR,KAAWT,EAAWM,EAAW1nB,KAAKqnB,EAAM,OAE9CA,EAAM,GAAKD,EAAS;AACpBC,EAAM,GAAKD,EAAS,GACpBC,EAAM,GAAKD,EAAS,IAEtBE,GACElY,IAAMwY,EAAsB,KAAXP,EAAM,GACvBza,KAAMya,EAAM,IAAM5B,EAClBxhB,KAAM2jB,GAAYP,EAAM,OACxBtN,KAAMsN,EAAM,IAAMA,EAAM,GAAK,KAC7BpN,OAAQoN,EAAM,IAAMA,EAAM,GAAK,UAE5B,IAAKA,EAAQE,EAAMvnB,KAAK2nB,EAAM7pB,IACnCwpB,GACElY,IAAKiY,EAAM,GACXza,KAAMya,EAAM,IAAM5B,EAClBxhB,QACA8V,MAAOsN,EAAM,GACbpN,OAAQoN,EAAM,IAAMA,EAAM,GAAK,UAE5B,CAAA,KAAKA,EAAQG,EAAMxnB,KAAK2nB,EAAM7pB,KAsBnC,QArBA,IAAI+pB,GAASR,EAAM,IAAMA,EAAM,GAAGjR,QAAQ,aACtCyR,KAAWT,EAAWK,EAAUznB,KAAKqnB,EAAM,MAE7CA,EAAM,GAAKD,EAAS,GACpBC,EAAM,GAAKD,EAAS,GACpBC,EAAM,GAAK,MACI,IAANvpB,GAAYupB,EAAM,IAAiC,mBAApBpoB,GAAG6oB,eAK3CxZ,EAAM,GAAG2L,OAAShb,EAAG6oB,aAAe,GAEtCR,GACElY,IAAKiY,EAAM,GACXza,KAAMya,EAAM,IAAM5B,EAClBxhB,KAAMojB,EAAM,GAAKA,EAAM,GAAGpd,MAAM,QAChC8P,KAAMsN,EAAM,IAAMA,EAAM,GAAK,KAC7BpN,OAAQoN,EAAM,IAAMA,EAAM,GAAK,MAUnC,IAJKC,EAAQ1a,MAAQ0a,EAAQvN,OAC3BuN,EAAQ1a,KAAO6Y,GAGb6B,EAAQlY,KAAoC,UAA7BkY,EAAQlY,IAAI/O,OAAO,EAAG,GAAgB,CAMvD,GAAI6K,GAAM,GAAIgL,eAKd,IAJAhL,EAAIwT,KAAK,MAAO4I,EAAQlY,KAAK,GAC7BlE,EAAI0T,KAAK,MAGU,MAAf1T,EAAIwL,OAAgB,CACtB,GAAIqK,GAAS7V,EAAI6c,cAAgB,EAIjChH,GAASA,EAAO7c,WAGhB,IAAI8jB,GAAajH,EAAOI,MAAM,+BAG9B,IAAI6G,EAAY,CACd,GAAIC,GAAmBD,EAAW,EAIC,OAA/BC,EAAiBC,OAAO,KAC1BD,EAAmB3C,IAAsB2C,EAAiB/jB,MAAM,IAKlEojB,EAAQlY,IAAM6Y,EAAiB/jB,MAAM,QAK3CoK,EAAMvN,KAAKumB,GAGb,MAAKhZ,GAAMnQ,QAKTuE,KAAMzD,EAAGyD,KACTvC,QAASlB,EAAGkB,QACZiP,IAAKiW,IACL/W,MAAOA,GAPA,MAwBX,QAASmY,GAAoCtN,EAAW/J,EAAKkX,EAAQnmB,GACnE,GAAIgoB,IACF/Y,IAAKA,EACL2K,KAAMuM,EAGR,IAAI6B,EAAQ/Y,KAAO+Y,EAAQpO,KAAM,CAO/B,GANAZ,EAAU+N,YAAa,EAElBiB,EAAQvb,OACXub,EAAQvb,KAAO6Y,GAGbtM,EAAU7K,MAAMnQ,OAAS,GACvBgb,EAAU7K,MAAM,GAAGc,MAAQ+Y,EAAQ/Y,IAAK,CAC1C,GAAI+J,EAAU7K,MAAM,GAAGyL,OAASoO,EAAQpO,KACtC,OAAO,CACF,KACJZ,EAAU7K,MAAM,GAAGyL,MACpBZ,EAAU7K,MAAM,GAAG1B,OAASub,EAAQvb,KAGpC,MADAuM,GAAU7K,MAAM,GAAGyL,KAAOoO,EAAQpO,MAC3B,EAOb,MAFAZ,GAAU7K,MAAM8Z,QAAQD,GACxBhP,EAAUkP,SAAU,GACb,EAKT,MAHElP,GAAU+N,YAAa,GAGlB,EAYT,QAASoB,GAAsCrpB,EAAIilB,GASjD,IACE,GALAmD,GACAkB,EALEC,EAAe,qEACjBla,KACAma,KACAC,GAAY,EAMRC,EAAOL,EAAsCM,OACjDD,IAASD,EACTC,EAAOA,EAAKC,OAEZ,GAAID,IAASpa,GAAqBoa,IAASvgB,EAASqD,OAApD,CAkBA,GAbA8c,GACEnZ,IAAK,KACLxC,KAAM6Y,EACN1L,KAAM,KACNE,OAAQ,MAGN0O,EAAKjmB,KACP6lB,EAAK3b,KAAO+b,EAAKjmB,MACP2kB,EAAQmB,EAAaxoB,KAAK2oB,EAAKrlB,eACzCilB,EAAK3b,KAAOya,EAAM,IAGK,mBAAdkB,GAAK3b,KACd,IACE2b,EAAK3b,KAAOya,EAAM7D,MAAMqF,UAAU,EAAGxB,EAAM7D,MAAMpN,QAAQ,MACzD,MAAO/Y,IAGPorB,EAAM,GAAKE,GACbD,GAAY,EAEZD,EAAM,GAAKE,IAAQ,EAGrBra,EAAMvN,KAAKwnB,GAGTrE,GAGF5V,EAAMyX,OAAO,EAAG7B,EAGlB,IAAIpU,IACFpN,KAAMzD,EAAGyD,KACTvC,QAASlB,EAAGkB,QACZiP,IAAKiW,IACL/W,MAAOA,EAQT,OANAmY,GACE3W,EACA7Q,EAAG6pB,WAAa7pB,EAAG8pB,SACnB9pB,EAAG8a,MAAQ9a,EAAG+pB,WACd/pB,EAAGkB,SAAWlB,EAAGgqB,aAEZnZ,EAQT,QAASvB,GAAkBtP,EAAIilB,GAC7B,GAAI5V,GAAQ,IACZ4V,GAAiB,MAATA,EAAgB,GAAKA,CAE7B,KAEE,GADA5V,EAAQ6Y,EAA+BloB,GAErC,MAAOqP,GAET,MAAOjR,GACP,GAAI+K,EAASkC,MACX,KAAMjN,GAIV,IAEE,GADAiR,EAAQga,EAAsCrpB,EAAIilB,EAAQ,GAExD,MAAO5V,GAET,MAAOjR,GACP,GAAI+K,EAASkC,MACX,KAAMjN,GAGV,OACEqF,KAAMzD,EAAGyD,KACTvC,QAASlB,EAAGkB,QACZiP,IAAKiW,KAOT,MAHA9W,GAAkBkY,oCAAsCA,EACxDlY,EAAkB4Y,+BAAiCA,EAE5C5Y,KAGT3R,EAAOD,QAAUyL,IAEdlK,KAAKf,KAAuB,mBAAXF,QAAyBA,OAAyB,mBAATC,MAAuBA,KAAyB,mBAAXF,QAAyBA,aACxHuD,GAAK,KAAK8e,IAAI,SAAShhB,EAAQzB,EAAOD,GAezC,QAASyZ,GAAQ8S,EAAUC,GACzB,IAAK,GAAIrrB,GAAI,EAAGA,EAAIorB,EAAS/qB,SAAUL,EACrC,GAAIorB,EAASprB,KAAOqrB,EAAQ,MAAOrrB,EAErC,UAGF,QAASkH,GAAU0K,EAAK0Z,EAAUC,EAAQC,GACxC,MAAOvkB,MAAKC,UAAU0K,EAAK6Z,EAAWH,EAAUE,GAAgBD,GAIlE,QAASG,GAAevpB,GACtB,GAAIoV,IAEF/G,MAAOrO,EAAMqO,MACbnO,QAASF,EAAME,QACfuC,KAAMzC,EAAMyC,KAGd,KAAK,GAAI5E,KAAKmC,GACRmD,OAAOC,UAAU4R,eAAe/W,KAAK+B,EAAOnC,KAC9CuX,EAAIvX,GAAKmC,EAAMnC,GAInB,OAAOuX,GAGT,QAASkU,GAAWH,EAAUE,GAC5B,GAAIhb,MACAO,IAWJ,OATqB,OAAjBya,IACFA,EAAgB,SAAS3e,EAAK1K,GAC5B,MAAIqO,GAAM,KAAOrO,EACR,eAEF,eAAiB4O,EAAK3K,MAAM,EAAGkS,EAAQ9H,EAAOrO,IAAQghB,KAAK,KAAO,MAItE,SAAStW,EAAK1K,GACnB,GAAIqO,EAAMnQ,OAAS,EAAG,CACpB,GAAIsrB,GAAUrT,EAAQ9H,EAAOnR,OAC5BssB,EAAUnb,EAAMyX,OAAO0D,EAAU,GAAKnb,EAAMvN,KAAK5D,OACjDssB,EAAU5a,EAAKkX,OAAO0D,EAASC,EAAAA,EAAU/e,GAAOkE,EAAK9N,KAAK4J,IAEtDyL,EAAQ9H,EAAOrO,KAClBA,EAAQqpB,EAAcprB,KAAKf,KAAMwN,EAAK1K,QAGxCqO,GAAMvN,KAAKd,EAGb,OAAmB,OAAZmpB,EACHnpB,YAAiBlC,OAAQyrB,EAAevpB,GAASA,EACjDmpB,EAASlrB,KAAKf,KAAMwN,EAAK1K,IA5DjCtD,EAAUC,EAAOD,QAAUqI,EAC3BrI,EAAQgtB,aAAeJ,OA+DjBjK,IAAI,SAASjhB,EAAQzB,EAAOD,GAwBlC,QAASitB,GAAQC,EAAGC,GAClB,GAAIC,IAAW,MAAJF,IAAmB,MAAJC,GACtBE,GAAOH,GAAK,KAAOC,GAAK,KAAOC,GAAO,GAC1C,OAAQC,IAAO,GAAa,MAAND,EAMxB,QAASE,GAAcrI,EAAKsI,GAC1B,MAAQtI,IAAOsI,EAAQtI,IAAS,GAAKsI,EAMvC,QAASC,GAAOC,EAAGxsB,EAAGmlB,EAAG8G,EAAGpsB,EAAGH,GAC7B,MAAOssB,GAAQK,EAAcL,EAAQA,EAAQhsB,EAAGwsB,GAAIR,EAAQC,EAAGvsB,IAAKG,GAAIslB,GAE1E,QAASsH,GAAMzsB,EAAGmlB,EAAGjB,EAAGwI,EAAGT,EAAGpsB,EAAGH,GAC/B,MAAO6sB,GAAQpH,EAAIjB,GAAOiB,EAAIuH,EAAI1sB,EAAGmlB,EAAG8G,EAAGpsB,EAAGH,GAEhD,QAASitB,GAAM3sB,EAAGmlB,EAAGjB,EAAGwI,EAAGT,EAAGpsB,EAAGH,GAC/B,MAAO6sB,GAAQpH,EAAIuH,EAAMxI,GAAKwI,EAAI1sB,EAAGmlB,EAAG8G,EAAGpsB,EAAGH,GAEhD,QAASktB,GAAM5sB,EAAGmlB,EAAGjB,EAAGwI,EAAGT,EAAGpsB,EAAGH,GAC/B,MAAO6sB,GAAOpH,EAAIjB,EAAIwI,EAAG1sB,EAAGmlB,EAAG8G,EAAGpsB,EAAGH,GAEvC,QAASmtB,GAAM7sB,EAAGmlB,EAAGjB,EAAGwI,EAAGT,EAAGpsB,EAAGH,GAC/B,MAAO6sB,GAAOrI,GAAKiB,GAAKuH,GAAI1sB,EAAGmlB,EAAG8G,EAAGpsB,EAAGH,GAM1C,QAASotB,GAAQb,EAAG/I,GAElB+I,EAAE/I,GAAO,IAAM,KAASA,EAAM,GAC9B+I,GAAK/I,EAAM,KAAQ,GAAM,GAAK,IAAMA,CAEpC,IAAIhjB,GACA6sB,EACAC,EACAC,EACAC,EACAltB,EAAI,WACJmlB,aACAjB,cACAwI,EAAI,SAER,KAAKxsB,EAAI,EAAGA,EAAI+rB,EAAE1rB,OAAQL,GAAK,GAC7B6sB,EAAO/sB,EACPgtB,EAAO7H,EACP8H,EAAO/I,EACPgJ,EAAOR,EAEP1sB,EAAIysB,EAAMzsB,EAAGmlB,EAAGjB,EAAGwI,EAAGT,EAAE/rB,GAAI,cAC5BwsB,EAAID,EAAMC,EAAG1sB,EAAGmlB,EAAGjB,EAAG+H,EAAE/rB,EAAI,GAAI,eAChCgkB,EAAIuI,EAAMvI,EAAGwI,EAAG1sB,EAAGmlB,EAAG8G,EAAE/rB,EAAI,GAAI,GAAI,WACpCilB,EAAIsH,EAAMtH,EAAGjB,EAAGwI,EAAG1sB,EAAGisB,EAAE/rB,EAAI,GAAI,gBAChCF,EAAIysB,EAAMzsB,EAAGmlB,EAAGjB,EAAGwI,EAAGT,EAAE/rB,EAAI,GAAI,cAChCwsB,EAAID,EAAMC,EAAG1sB,EAAGmlB,EAAGjB,EAAG+H,EAAE/rB,EAAI,GAAI,GAAI,YACpCgkB,EAAIuI,EAAMvI,EAAGwI,EAAG1sB,EAAGmlB,EAAG8G,EAAE/rB,EAAI,GAAI,gBAChCilB,EAAIsH,EAAMtH,EAAGjB,EAAGwI,EAAG1sB,EAAGisB,EAAE/rB,EAAI,GAAI,cAChCF,EAAIysB,EAAMzsB,EAAGmlB,EAAGjB,EAAGwI,EAAGT,EAAE/rB,EAAI,GAAI,EAAG,YACnCwsB,EAAID,EAAMC,EAAG1sB,EAAGmlB,EAAGjB,EAAG+H,EAAE/rB,EAAI,GAAI,gBAChCgkB,EAAIuI,EAAMvI,EAAGwI,EAAG1sB,EAAGmlB,EAAG8G,EAAE/rB,EAAI,IAAK,WACjCilB,EAAIsH,EAAMtH,EAAGjB,EAAGwI,EAAG1sB,EAAGisB,EAAE/rB,EAAI,IAAK,gBACjCF,EAAIysB,EAAMzsB,EAAGmlB,EAAGjB,EAAGwI,EAAGT,EAAE/rB,EAAI,IAAK,EAAG,YACpCwsB,EAAID,EAAMC,EAAG1sB,EAAGmlB,EAAGjB,EAAG+H,EAAE/rB,EAAI,IAAK,cACjCgkB,EAAIuI,EAAMvI,EAAGwI,EAAG1sB,EAAGmlB,EAAG8G,EAAE/rB,EAAI,IAAK,gBACjCilB,EAAIsH,EAAMtH,EAAGjB,EAAGwI,EAAG1sB,EAAGisB,EAAE/rB,EAAI,IAAK,GAAI,YAErCF,EAAI2sB,EAAM3sB,EAAGmlB,EAAGjB,EAAGwI,EAAGT,EAAE/rB,EAAI,GAAI,cAChCwsB,EAAIC,EAAMD,EAAG1sB,EAAGmlB,EAAGjB,EAAG+H,EAAE/rB,EAAI,GAAI,eAChCgkB,EAAIyI,EAAMzI,EAAGwI,EAAG1sB,EAAGmlB,EAAG8G,EAAE/rB,EAAI,IAAK,GAAI,WACrCilB,EAAIwH,EAAMxH,EAAGjB,EAAGwI,EAAG1sB,EAAGisB,EAAE/rB,GAAI,eAC5BF,EAAI2sB,EAAM3sB,EAAGmlB,EAAGjB,EAAGwI,EAAGT,EAAE/rB,EAAI,GAAI,cAChCwsB,EAAIC,EAAMD,EAAG1sB,EAAGmlB,EAAGjB,EAAG+H,EAAE/rB,EAAI,IAAK,EAAG,UACpCgkB,EAAIyI,EAAMzI,EAAGwI,EAAG1sB,EAAGmlB,EAAG8G,EAAE/rB,EAAI,IAAK,eACjCilB,EAAIwH,EAAMxH,EAAGjB,EAAGwI,EAAG1sB,EAAGisB,EAAE/rB,EAAI,GAAI,eAChCF,EAAI2sB,EAAM3sB,EAAGmlB,EAAGjB,EAAGwI,EAAGT,EAAE/rB,EAAI,GAAI,EAAG,WACnCwsB,EAAIC,EAAMD,EAAG1sB,EAAGmlB,EAAGjB,EAAG+H,EAAE/rB,EAAI,IAAK,eACjCgkB,EAAIyI,EAAMzI,EAAGwI,EAAG1sB,EAAGmlB,EAAG8G,EAAE/rB,EAAI,GAAI,eAChCilB,EAAIwH,EAAMxH,EAAGjB,EAAGwI,EAAG1sB,EAAGisB,EAAE/rB,EAAI,GAAI,GAAI,YACpCF,EAAI2sB,EAAM3sB,EAAGmlB,EAAGjB,EAAGwI,EAAGT,EAAE/rB,EAAI,IAAK,eACjCwsB,EAAIC,EAAMD,EAAG1sB,EAAGmlB,EAAGjB,EAAG+H,EAAE/rB,EAAI,GAAI,aAChCgkB,EAAIyI,EAAMzI,EAAGwI,EAAG1sB,EAAGmlB,EAAG8G,EAAE/rB,EAAI,GAAI,GAAI,YACpCilB,EAAIwH,EAAMxH,EAAGjB,EAAGwI,EAAG1sB,EAAGisB,EAAE/rB,EAAI,IAAK,gBAEjCF,EAAI4sB,EAAM5sB,EAAGmlB,EAAGjB,EAAGwI,EAAGT,EAAE/rB,EAAI,GAAI,WAChCwsB,EAAIE,EAAMF,EAAG1sB,EAAGmlB,EAAGjB,EAAG+H,EAAE/rB,EAAI,GAAI,gBAChCgkB,EAAI0I,EAAM1I,EAAGwI,EAAG1sB,EAAGmlB,EAAG8G,EAAE/rB,EAAI,IAAK,GAAI,YACrCilB,EAAIyH,EAAMzH,EAAGjB,EAAGwI,EAAG1sB,EAAGisB,EAAE/rB,EAAI,IAAK,cACjCF,EAAI4sB,EAAM5sB,EAAGmlB,EAAGjB,EAAGwI,EAAGT,EAAE/rB,EAAI,GAAI,eAChCwsB,EAAIE,EAAMF,EAAG1sB,EAAGmlB,EAAGjB,EAAG+H,EAAE/rB,EAAI,GAAI,GAAI,YACpCgkB,EAAI0I,EAAM1I,EAAGwI,EAAG1sB,EAAGmlB,EAAG8G,EAAE/rB,EAAI,GAAI,eAChCilB,EAAIyH,EAAMzH,EAAGjB,EAAGwI,EAAG1sB,EAAGisB,EAAE/rB,EAAI,IAAK,gBACjCF,EAAI4sB,EAAM5sB,EAAGmlB,EAAGjB,EAAGwI,EAAGT,EAAE/rB,EAAI,IAAK,EAAG,WACpCwsB,EAAIE,EAAMF,EAAG1sB,EAAGmlB,EAAGjB,EAAG+H,EAAE/rB,GAAI,eAC5BgkB,EAAI0I,EAAM1I,EAAGwI,EAAG1sB,EAAGmlB,EAAG8G,EAAE/rB,EAAI,GAAI,eAChCilB,EAAIyH,EAAMzH,EAAGjB,EAAGwI,EAAG1sB,EAAGisB,EAAE/rB,EAAI,GAAI,GAAI,UACpCF,EAAI4sB,EAAM5sB,EAAGmlB,EAAGjB,EAAGwI,EAAGT,EAAE/rB,EAAI,GAAI,cAChCwsB,EAAIE,EAAMF,EAAG1sB,EAAGmlB,EAAGjB,EAAG+H,EAAE/rB,EAAI,IAAK,eACjCgkB,EAAI0I,EAAM1I,EAAGwI,EAAG1sB,EAAGmlB,EAAG8G,EAAE/rB,EAAI,IAAK,GAAI,WACrCilB,EAAIyH,EAAMzH,EAAGjB,EAAGwI,EAAG1sB,EAAGisB,EAAE/rB,EAAI,GAAI,eAEhCF,EAAI6sB,EAAM7sB,EAAGmlB,EAAGjB,EAAGwI,EAAGT,EAAE/rB,GAAI,cAC5BwsB,EAAIG,EAAMH,EAAG1sB,EAAGmlB,EAAGjB,EAAG+H,EAAE/rB,EAAI,GAAI,GAAI,YACpCgkB,EAAI2I,EAAM3I,EAAGwI,EAAG1sB,EAAGmlB,EAAG8G,EAAE/rB,EAAI,IAAK,gBACjCilB,EAAI0H,EAAM1H,EAAGjB,EAAGwI,EAAG1sB,EAAGisB,EAAE/rB,EAAI,GAAI,cAChCF,EAAI6sB,EAAM7sB,EAAGmlB,EAAGjB,EAAGwI,EAAGT,EAAE/rB,EAAI,IAAK,EAAG,YACpCwsB,EAAIG,EAAMH,EAAG1sB,EAAGmlB,EAAGjB,EAAG+H,EAAE/rB,EAAI,GAAI,gBAChCgkB,EAAI2I,EAAM3I,EAAGwI,EAAG1sB,EAAGmlB,EAAG8G,EAAE/rB,EAAI,IAAK,aACjCilB,EAAI0H,EAAM1H,EAAGjB,EAAGwI,EAAG1sB,EAAGisB,EAAE/rB,EAAI,GAAI,gBAChCF,EAAI6sB,EAAM7sB,EAAGmlB,EAAGjB,EAAGwI,EAAGT,EAAE/rB,EAAI,GAAI,EAAG,YACnCwsB,EAAIG,EAAMH,EAAG1sB,EAAGmlB,EAAGjB,EAAG+H,EAAE/rB,EAAI,IAAK,cACjCgkB,EAAI2I,EAAM3I,EAAGwI,EAAG1sB,EAAGmlB,EAAG8G,EAAE/rB,EAAI,GAAI,gBAChCilB,EAAI0H,EAAM1H,EAAGjB,EAAGwI,EAAG1sB,EAAGisB,EAAE/rB,EAAI,IAAK,GAAI,YACrCF,EAAI6sB,EAAM7sB,EAAGmlB,EAAGjB,EAAGwI,EAAGT,EAAE/rB,EAAI,GAAI,cAChCwsB,EAAIG,EAAMH,EAAG1sB,EAAGmlB,EAAGjB,EAAG+H,EAAE/rB,EAAI,IAAK,gBACjCgkB,EAAI2I,EAAM3I,EAAGwI,EAAG1sB,EAAGmlB,EAAG8G,EAAE/rB,EAAI,GAAI,GAAI,WACpCilB,EAAI0H,EAAM1H,EAAGjB,EAAGwI,EAAG1sB,EAAGisB,EAAE/rB,EAAI,GAAI,eAEhCF,EAAIgsB,EAAQhsB,EAAG+sB,GACf5H,EAAI6G,EAAQ7G,EAAG6H,GACf9I,EAAI8H,EAAQ9H,EAAG+I,GACfP,EAAIV,EAAQU,EAAGQ,EAEjB,QAAQltB,EAAGmlB,EAAGjB,EAAGwI,GAMnB,QAASS,GAAUvH,GACjB,GAAI1lB,GACA4lB,EAAS,GACTsH,EAA0B,GAAfxH,EAAMrlB,MACrB,KAAKL,EAAI,EAAGA,EAAIktB,EAAUltB,GAAK,EAC7B4lB,GAAUC,OAAOsH,aAAczH,EAAM1lB,GAAK,KAAQA,EAAI,GAAO,IAE/D,OAAO4lB,GAOT,QAASwH,GAAU1H,GACjB,GAAI1lB,GACA4lB,IAEJ,KADAA,GAAQF,EAAMrlB,QAAU,GAAK,GAAK0O,OAC7B/O,EAAI,EAAGA,EAAI4lB,EAAOvlB,OAAQL,GAAK,EAClC4lB,EAAO5lB,GAAK,CAEd,IAAIqtB,GAAyB,EAAf3H,EAAMrlB,MACpB,KAAKL,EAAI,EAAGA,EAAIqtB,EAASrtB,GAAK,EAC5B4lB,EAAO5lB,GAAK,KAAiC,IAA1B0lB,EAAM4H,WAAWttB,EAAI,KAAeA,EAAI,EAE7D,OAAO4lB,GAMT,QAAS2H,GAAQ5tB,GACf,MAAOstB,GAAUL,EAAQQ,EAAUztB,GAAe,EAAXA,EAAEU,SAM3C,QAASmtB,GAAY3gB,EAAKjL,GACxB,GAAI5B,GAIAghB,EAHAyM,EAAOL,EAAUvgB,GACjB6gB,KACAC,IAMJ,KAJAD,EAAK,IAAMC,EAAK,IAAM5e,OAClB0e,EAAKptB,OAAS,KAChBotB,EAAOb,EAAQa,EAAmB,EAAb5gB,EAAIxM,SAEtBL,EAAI,EAAGA,EAAI,GAAIA,GAAK,EACvB0tB,EAAK1tB,GAAe,UAAVytB,EAAKztB,GACf2tB,EAAK3tB,GAAe,WAAVytB,EAAKztB,EAGjB,OADAghB,GAAO4L,EAAQc,EAAK9S,OAAOwS,EAAUxrB,IAAQ,IAAoB,EAAdA,EAAKvB,QACjD4sB,EAAUL,EAAQe,EAAK/S,OAAOoG,GAAO,MAM9C,QAAS4M,GAASlI,GAChB,GAEIqG,GACA/rB,EAHA6tB,EAAS,mBACTjI,EAAS,EAGb,KAAK5lB,EAAI,EAAGA,EAAI0lB,EAAMrlB,OAAQL,GAAK,EACjC+rB,EAAIrG,EAAM4H,WAAWttB,GACrB4lB,GAAUiI,EAAOzD,OAAQ2B,IAAM,EAAK,IAAQ8B,EAAOzD,OAAW,GAAJ2B,EAE5D,OAAOnG,GAMT,QAASkI,GAAapI,GACpB,MAAOqI,UAASla,mBAAmB6R,IAMrC,QAASsI,GAAOruB,GACd,MAAO4tB,GAAQO,EAAanuB,IAE9B,QAASsuB,GAAOtuB,GACd,MAAOiuB,GAASI,EAAOruB,IAEzB,QAASuuB,GAAWhH,EAAGsF,GACrB,MAAOgB,GAAYM,EAAa5G,GAAI4G,EAAatB,IAEnD,QAAS2B,GAAWjH,EAAGsF,GACrB,MAAOoB,GAASM,EAAWhH,EAAGsF,IAGhC,QAASjiB,GAAI6jB,EAAQvhB,EAAKwhB,GACxB,MAAKxhB,GAMAwhB,EAGEH,EAAWrhB,EAAKuhB,GAFdD,EAAWthB,EAAKuhB,GANlBC,EAGEL,EAAOI,GAFLH,EAAOG,GAUpBtvB,EAAOD,QAAU0L,YAEN,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI","file":"raven.min.js"} \ No newline at end of file +{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","angularPlugin","angular","RavenProvider","$get","$window","ExceptionHandlerProvider","$provide","decorator","exceptionHandler","R","$delegate","ex","cause","captureException","extra","moduleName","provider","config","setDataCallback","wrappedCallback","data","_normalizeData","angularPattern","exception","values","matches","exec","value","type","message","angularDocs","substr","addPlugin","10","9","2","consolePlugin","console","pluginOptions","logLevels","levels","push","callback","msg","captureMessage","level","pop","wrapConsoleMethod","wrapMethod","7","3","emberPlugin","Ember","_oldOnError","onerror","error","RSVP","on","reason","context","4","requirePlugin","wrap","deep","5","formatComponentName","vm","$root","name","_isVue","$options","_componentTag","__file","vuePlugin","Vue","errorHandler","info","metaData","Object","prototype","toString","componentName","propsData","lifecycleHook","6","RavenConfigError","constructor","utils","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","safeJoin","logger","Function","apply","8","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","sanitizeKeys","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isErrorEvent","isDOMError","isDOMException","isError","isObject","isPlainObject","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","sanitize","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","dsn","options","_logDebug","globalOptions","key","setDSN","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","func","undefined","_before","wrapped","_ignoreNextOnError","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","U","event","unhandledPromiseRejection","C","_promiseRejectionHandler","bind","addEventListener","Q","removeEventListener","trimHeadFrames","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","V","currentOptions","exKeys","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","M","setTimeout","_","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","aa","evtName","_keypressTimeout","target","category","ca","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","da","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","D","_originalFunctionToString","E","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","F","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","S","builtin","T","G","installer","concat","H","str","m","allowSecretKey","K","port","B","W","stackInfo","_triggerEvent","_processException","lineno","Y","frame","_normalizeFrame","in_app","ha","stackInfoUrl","normalized","filename","line","colno","column","function","ga","prefixedMessage","culprit","ia","request","Referer","breadcrumbs","_trimBreadcrumbs","ja","urlProp","urlProps","ka","httpData","userAgent","User-Agent","referrer","z","_backoffDuration","_backoffStart","na","oa","current","last","pa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Z","baseData","project","platform","_getHttpData","serverName","server_name","_sanitizeData","forEach","random","_sendProcessedPayload","qa","sa","ra","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","ta","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","open","setRequestHeader","send","ua","hash","evaluated","A","$","setUser","setReleaseContext","11","12","13","RavenConstructor","_Raven","noConflict","Client","what","supportsErrorEvent","ErrorEvent","supportsDOMError","DOMError","supportsDOMException","DOMException","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","sanitizeMask","safeInput","o_O","getLocationHref","getLocationOrigin","origin","hostname","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","responseText","sourceMaps","sourceMapAddress","charAt","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","y","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","string","raw"],"mappings":";CAYA,SAAUA,GAAG,GAAoB,gBAAVC,UAAoC,mBAATC,QAAsBA,OAAOD,QAAQD,QAAS,IAAmB,kBAATG,SAAqBA,OAAOC,IAAKD,UAAUH,OAAO,CAAC,GAAIK,EAAkCA,GAAb,mBAATC,QAAwBA,OAA+B,mBAATC,QAAwBA,OAA6B,mBAAPC,MAAsBA,KAAYC,KAAKJ,EAAEK,MAAQV,MAAO,WAAW,GAAIG,EAAsB,OAAO,SAAUQ,GAAEC,EAAEC,EAAEC,GAAG,QAASC,GAAEC,EAAEC,GAAG,IAAIJ,EAAEG,GAAG,CAAC,IAAIJ,EAAEI,GAAG,CAAC,GAAIE,GAAkB,kBAATC,UAAqBA,OAAQ,KAAIF,GAAGC,EAAE,MAAOA,GAAEF,GAAE,EAAI,IAAGI,EAAE,MAAOA,GAAEJ,GAAE,EAAI,IAAIhB,GAAE,GAAIqB,OAAM,uBAAuBL,EAAE,IAAK,MAAMhB,GAAEsB,KAAK,mBAAmBtB,EAAE,GAAIuB,GAAEV,EAAEG,IAAIf,WAAYW,GAAEI,GAAG,GAAGQ,KAAKD,EAAEtB,QAAQ,SAASU,GAAG,GAAIE,GAAED,EAAEI,GAAG,GAAGL,EAAG,OAAOI,GAAEF,EAAEA,EAAEF,IAAIY,EAAEA,EAAEtB,QAAQU,EAAEC,EAAEC,EAAEC,GAAG,MAAOD,GAAEG,GAAGf,QAAkD,IAAI,GAA1CmB,GAAkB,kBAATD,UAAqBA,QAAgBH,EAAE,EAAEA,EAAEF,EAAEW,OAAOT,IAAID,EAAED,EAAEE,GAAI,OAAOD,KAAKW,GAAG,SAASC,EAAQzB,EAAOD,GAYp0B,QAAS2B,GAAclB,EAAOmB,GAK5B,QAASC,KACPrB,KAAKsB,MACH,UACA,SAASC,GACP,MAAOtB,KAKb,QAASuB,GAAyBC,GAChCA,EAASC,UAAU,qBAAsB,QAAS,YAAaC,IAGjE,QAASA,GAAiBC,EAAGC,GAC3B,MAAO,UAASC,EAAIC,GAClBH,EAAEI,iBAAiBF,GACjBG,OAAQF,MAAOA,KAEjBF,EAAUC,EAAIC,IAtBlBX,EAAUA,GAAWvB,OAAOuB,QAEvBA,IAwBLA,EACG3B,OAAOyC,MACPC,SAAS,QAASd,GAClBe,QAAQ,WAAYZ,IAEvBvB,EAAMoC,gBACJC,EAAgB,SAASC,GACvB,MAAOpB,GAAcqB,EAAeD,OAxC1C,GAAID,GAAkBpB,EAAQ,IAAIoB,gBAG9BG,EAAiB,6DACjBP,EAAa,SAyCjBf,GAAcqB,EAAiB,SAASD,GAEtC,GAAIG,GAAYH,EAAKG,SACrB,IAAIA,EAAW,CACbA,EAAYA,EAAUC,OAAO,EAC7B,IAAIC,GAAUH,EAAeI,KAAKH,EAAUI,MAExCF,KAEFF,EAAUK,KAAOH,EAAQ,GACzBF,EAAUI,MAAQF,EAAQ,GAE1BL,EAAKS,QAAUN,EAAUK,KAAO,KAAOL,EAAUI,MAEjDP,EAAKN,MAAMgB,YAAcL,EAAQ,GAAGM,OAAO,EAAG,MAIlD,MAAOX,IAGTpB,EAAce,WAAaA,EAE3BzC,EAAOD,QAAU2B,EAEjBD,EAAQ,GAAGiC,UAAU1D,EAAOD,WACzB4D,GAAK,GAAGC,EAAI,IAAIC,GAAG,SAASpC,EAAQzB,EAAOD,GAc9C,QAAS+D,GAActD,EAAOuD,EAASC,GACrCD,EAAUA,GAAW3D,OAAO2D,YAC5BC,EAAgBA,KAEhB,IAAIC,GAAYD,EAAcE,SAAW,QAAS,OAAQ,OAAQ,QAC9D,WAAYH,IAASE,EAAUE,KAAK,SAOxC,KALA,GAAIC,GAAW,SAASC,EAAKvB,GAC3BtC,EAAM8D,eAAeD,EAAKvB,IAGxByB,EAAQN,EAAUO,MACfD,GACLE,EAAkBV,EAASQ,EAAOH,GAClCG,EAAQN,EAAUO,MAhBtB,GAAIC,GAAoBhD,EAAQ,GAAGiD,UAoBnC1E,GAAOD,QAAU+D,EAEjBrC,EAAQ,GAAGiC,UAAU1D,EAAOD,WACzB4E,EAAI,EAAEf,EAAI,IAAIgB,GAAG,SAASnD,EAAQzB,EAAOD,GAM5C,QAAS8E,GAAYrE,EAAOsE,GAI1B,GAHAA,EAAQA,GAAS1E,OAAO0E,MAGxB,CAEA,GAAIC,GAAcD,EAAME,OACxBF,GAAME,QAAU,SAAsBC,GACpCzE,EAAM+B,iBAAiB0C,GACI,kBAAhBF,IACTA,EAAYzD,KAAKf,KAAM0E,IAG3BH,EAAMI,KAAKC,GAAG,QAAS,SAASC,GAC1BA,YAAkBjE,OACpBX,EAAM+B,iBAAiB6C,GACrB5C,OAAQ6C,QAAS,sCAGnB7E,EAAM8D,eAAe,oCAAqC9B,OAAQ4C,OAAQA,QAKhFpF,EAAOD,QAAU8E,EAEjBpD,EAAQ,GAAGiC,UAAU1D,EAAOD,WACzB6D,EAAI,IAAI0B,GAAG,SAAS7D,EAAQzB,EAAOD,GAOtC,QAASwF,GAAc/E,GACC,kBAAXP,IAAyBA,EAAOC,MACzCE,OAAOH,OAASO,EAAMgF,MAAMC,MAAM,GAAQxF,GAC1CG,OAAOa,QAAUT,EAAMgF,MAAMC,MAAM,GAAQhE,IAI/CzB,EAAOD,QAAUwF,EAEjB9D,EAAQ,GAAGiC,UAAU1D,EAAOD,WACzB6D,EAAI,IAAI8B,GAAG,SAASjE,EAAQzB,EAAOD,GAMtC,QAAS4F,GAAoBC,GAC3B,GAAIA,EAAGC,QAAUD,EACf,MAAO,eAET,IAAIE,GAAOF,EAAGG,OAASH,EAAGI,SAASF,MAAQF,EAAGI,SAASC,cAAgBL,EAAGE,IAC1E,QACGA,EAAO,cAAgBA,EAAO,IAAM,wBACpCF,EAAGG,QAAUH,EAAGI,SAASE,OAAS,OAASN,EAAGI,SAASE,OAAS,IAIrE,QAASC,GAAU3F,EAAO4F,GAIxB,GAHAA,EAAMA,GAAOhG,OAAOgG,IAGfA,GAAQA,EAAIzD,OAAjB,CAEA,GAAIoC,GAAcqB,EAAIzD,OAAO0D,YAC7BD,GAAIzD,OAAO0D,aAAe,SAAyBpB,EAAOW,EAAIU,GAC5D,GAAIC,KAGuC,qBAAvCC,OAAOC,UAAUC,SAASpF,KAAKsE,KACjCW,EAASI,cAAgBhB,EAAoBC,GAC7CW,EAASK,UAAYhB,EAAGI,SAASY,WAGf,mBAATN,KACTC,EAASM,cAAgBP,GAG3B9F,EAAM+B,iBAAiB0C,GACrBzC,MAAO+D,IAGkB,kBAAhBxB,IACTA,EAAYzD,KAAKf,KAAM0E,EAAOW,EAAIU,KAKxCtG,EAAOD,QAAUoG,EAEjB1E,EAAQ,GAAGiC,UAAU1D,EAAOD,WACzB6D,EAAI,IAAIkD,GAAG,SAASrF,EAAQzB,EAAOD,GACtC,QAASgH,GAAiBxD,GACxBhD,KAAKuF,KAAO,mBACZvF,KAAKgD,QAAUA,EAEjBwD,EAAiBN,UAAY,GAAItF,OACjC4F,EAAiBN,UAAUO,YAAcD,EAEzC/G,EAAOD,QAAUgH,OAEXpC,GAAG,SAASlD,EAAQzB,EAAOD,GACjC,GAAIkH,GAAQxF,EAAQ,IAEhBiD,EAAa,SAASX,EAASQ,EAAOH,GACxC,GAAI8C,GAAuBnD,EAAQQ,GAC/B4C,EAAkBpD,CAEtB,IAAMQ,IAASR,GAAf,CAIA,GAAIqD,GAAwB,SAAV7C,EAAmB,UAAYA,CAEjDR,GAAQQ,GAAS,WACf,GAAI8C,MAAUC,MAAMhG,KAAKiG,WAErBlD,EAAM4C,EAAMO,SAASH,EAAM,KAC3BvE,GAAQyB,MAAO6C,EAAaK,OAAQ,UAAWjF,OAAQ+E,UAAWF,GAExD,YAAV9C,EACE8C,EAAK,MAAO,IAEdhD,EACE,sBAAwB4C,EAAMO,SAASH,EAAKC,MAAM,GAAI,MAAQ,kBAChExE,EAAKN,MAAM+E,UAAYF,EAAKC,MAAM,GAClClD,GAAYA,EAASC,EAAKvB,IAG5BsB,GAAYA,EAASC,EAAKvB,GAIxBoE,GAGFQ,SAASjB,UAAUkB,MAAMrG,KAAK4F,EAAsBC,EAAiBE,KAK3ErH,GAAOD,SACL2E,WAAYA,KAGXf,GAAK,KAAKiE,GAAG,SAASnG,EAAQzB,EAAOD,IACxC,SAAWM,GA4CX,QAASwH,KACP,OAAQ,GAAIC,MAWd,QAASC,GAAqBC,EAAU5D,GACtC,MAAO6D,GAAW7D,GACd,SAAStB,GACP,MAAOsB,GAAStB,EAAMkF,IAExB5D,EAMN,QAAS5D,KACPD,KAAK2H,IAA8B,gBAATC,QAAqBA,KAAKC,WAEpD7H,KAAK8H,GAAgBC,EAAYC,GACjChI,KAAKiI,GAAiBF,EAAYG,GAClClI,KAAKmI,EAAyB,KAC9BnI,KAAKoI,EAAY,KACjBpI,KAAKqI,EAAe,KACpBrI,KAAKsI,EAAgB,KACrBtI,KAAKuI,EAAa,KAClBvI,KAAKwI,EAAiB,KACtBxI,KAAKyI,KACLzI,KAAK0I,GAEHC,QAASC,EAAQC,gBAAkBD,EAAQC,eAAeC,GAC1D5B,OAAQ,aACR6B,gBACAC,cACAC,iBACAC,gBACAC,QAAS,KACTC,qBAAqB,EACrBC,4BAA4B,EAC5BC,iBAAkB,EAElBC,aAAc,IACdC,gBAAiB,GACjBC,iBAAiB,EACjBC,YAAY,EACZC,WAAY,EACZC,iBAEF5J,KAAK6J,GACHC,OAAQ,OACRC,WAAW,EAKXC,eAAgBC,IAA2B,SAAW,IAExDjK,KAAKkK,EAAiB,EACtBlK,KAAKmK,GAAoB,EACzBnK,KAAKoK,EAAgCxJ,MAAM4I,gBAG3CxJ,KAAKqK,EAAmBzB,EAAQpF,YAChCxD,KAAKsK,KACLtK,KAAKuK,KACLvK,KAAKwK,EAAalD,IAClBtH,KAAKyK,KACLzK,KAAK0K,KACL1K,KAAK2K,EAAqB,KAE1B3K,KAAK4K,EAAYhC,EAAQiC,SACzB7K,KAAK8K,EAAY9K,KAAK4K,GAAa5K,KAAK4K,EAAUG,KAClD/K,KAAKgL,GAGL,KAAK,GAAIlB,KAAU9J,MAAKqK,EACtBrK,KAAKsK,EAAwBR,GAAU9J,KAAKqK,EAAiBP,GA5HjE,GAAImB,GAAW/J,EAAQ,IACnB2G,EAAY3G,EAAQ,IACpBgK,EAAMhK,EAAQ,IACdsF,EAAmBtF,EAAQ,GAE3BwF,EAAQxF,EAAQ,IAChBiK,EAAezE,EAAMyE,aACrBC,EAAa1E,EAAM0E,WACnBC,EAAiB3E,EAAM2E,eACvBC,EAAU5E,EAAM4E,QAChBC,EAAW7E,EAAM6E,SACjBC,EAAgB9E,EAAM8E,cACtBzD,EAAcrB,EAAMqB,YACpBL,EAAahB,EAAMgB,WACnB+D,EAAW/E,EAAM+E,SACjBC,EAAUhF,EAAMgF,QAChBC,EAAgBjF,EAAMiF,cACtBC,EAAOlF,EAAMkF,KACbC,EAAcnF,EAAMmF,YACpBC,EAAWpF,EAAMoF,SACjBC,EAAerF,EAAMqF,aACrBC,EAAStF,EAAMsF,OACfC,EAAavF,EAAMuF,WACnBC,EAAYxF,EAAMwF,UAClBC,EAAQzF,EAAMyF,MACdC,EAAmB1F,EAAM0F,iBACzBC,EAAkB3F,EAAM2F,gBACxBC,EAAmB5F,EAAM4F,iBACzBC,EAAW7F,EAAM6F,SACjBC,EAAO9F,EAAM8F,KACbC,EAAgB/F,EAAM+F,cACtBxC,EAAyBvD,EAAMuD,uBAC/ByC,EAA0BhG,EAAMgG,wBAChCC,EAAqBjG,EAAMiG,mBAC3BC,EAAWlG,EAAMkG,SAEjB1I,EAAoBhD,EAAQ,GAAGiD,WAE/B0I,EAAU,2CAA2CC,MAAM,KAC7DC,EAAa,gEAOXnE,EACgB,mBAAX/I,QACHA,OACkB,mBAAXC,GAAyBA,EAAyB,mBAATC,MAAuBA,QACzEiI,EAAYY,EAAQoE,SACpB9E,EAAaU,EAAQqE,SAmFzBhN,GAAMiG,WAKJgH,QAAS,SAETC,OAAO,EAEPlC,SAAUA,EASV7I,OAAQ,SAASgL,EAAKC,GACpB,GAAItN,GAAOC,IAEX,IAAID,EAAKuI,EAEP,MADAtI,MAAKsN,EAAU,QAAS,4CACjBvN,CAET,KAAKqN,EAAK,MAAOrN,EAEjB,IAAIwN,GAAgBxN,EAAK2I,CAGrB2E,IACFzB,EAAKyB,EAAS,SAASG,EAAK1K,GAEd,SAAR0K,GAA0B,UAARA,GAA2B,SAARA,EACvCzN,EAAK0I,EAAe+E,GAAO1K,EAE3ByK,EAAcC,GAAO1K,IAK3B/C,EAAK0N,OAAOL,GAIZG,EAAcxE,aAAanF,KAAK,qBAChC2J,EAAcxE,aAAanF,KAAK,iDAGhC2J,EAAcxE,aAAekD,EAAWsB,EAAcxE,cACtDwE,EAAcvE,aAAauE,EAAcvE,WAAWhI,QAChDiL,EAAWsB,EAAcvE,YAE7BuE,EAActE,gBAAgBsE,EAActE,cAAcjI,QACtDiL,EAAWsB,EAActE,eAE7BsE,EAAcrE,aAAe+C,EAAWsB,EAAcrE,cACtDqE,EAAcG,eAAiBC,KAAKC,IAClC,EACAD,KAAKE,IAAIN,EAAcG,gBAAkB,IAAK,KAGhD,IAAII,IACFC,KAAK,EACLvK,SAAS,EACTwK,KAAK,EACLnD,UAAU,EACVoD,QAAQ,GAGNxE,EAAkB8D,EAAc9D,eACM,wBAAnCtD,SAASpF,KAAK0I,GACnBA,EAAkBoC,EAAYiC,EAAwBrE,GAC7CA,KAAoB,IAC7BA,EAAkBqE,GAEpBP,EAAc9D,gBAAkBA,CAEhC,IAAIyE,IACFC,UAAU,GAGRzE,EAAa6D,EAAc7D,UAW/B,OAVqC,uBAA9BvD,SAASpF,KAAK2I,GACnBA,EAAamC,EAAYqC,EAAoBxE,GACpCA,KAAe,IACxBA,EAAawE,GAEfX,EAAc7D,WAAaA,EAE3BuB,EAAS7B,sBAAwBmE,EAAcnE,oBAGxCrJ,GAWTqO,QAAS,WACP,GAAIrO,GAAOC,IAyBX,OAxBID,GAAKsO,YAActO,EAAKoK,IAC1Bc,EAASqD,OAAOC,UAAU,WACxBxO,EAAKyO,EAAwBpH,MAAMrH,EAAMiH,aAGvCjH,EAAK2I,EAAeW,4BACtBtJ,EAAK0O,IAGP1O,EAAK2O,IAED3O,EAAK2I,EAAegB,YAAc3J,EAAK2I,EAAegB,WAAWyE,UACnEpO,EAAK4O,IAGH5O,EAAK2I,EAAee,iBAAiB1J,EAAK6O,IAG9C7O,EAAK8O,IAEL9O,EAAKoK,GAAoB,GAG3BvJ,MAAM4I,gBAAkBzJ,EAAK2I,EAAec,gBACrCxJ,MAQTyN,OAAQ,SAASL,GACf,GAAIrN,GAAOC,KACT8O,EAAM/O,EAAKgP,EAAU3B,GACrB4B,EAAYF,EAAIG,KAAKC,YAAY,KACjCD,EAAOH,EAAIG,KAAK/L,OAAO,EAAG8L,EAE5BjP,GAAKoP,EAAO/B,EACZrN,EAAKwI,EAAauG,EAAIM,KACtBrP,EAAKsP,EAAgBP,EAAIQ,MAAQR,EAAIQ,KAAKpM,OAAO,GACjDnD,EAAKyI,EAAiBsG,EAAIG,KAAK/L,OAAO8L,EAAY,GAElDjP,EAAKuI,EAAgBvI,EAAKwP,EAAiBT,GAE3C/O,EAAKyP,EACHzP,EAAKuI,EAAgB,IAAM2G,EAAO,OAASlP,EAAKyI,EAAiB,UAInExI,KAAKgL,KAWPlG,QAAS,SAASuI,EAASoC,EAAM3I,GAO/B,MANIY,GAAW2F,KACbvG,EAAO2I,MACPA,EAAOpC,EACPA,EAAUqC,QAGL1P,KAAKiF,KAAKoI,EAASoC,GAAMrI,MAAMpH,KAAM8G,IAW9C7B,KAAM,SAASoI,EAASoC,EAAME,GAqC5B,QAASC,KACP,GAAI9I,MACFnG,EAAIqG,UAAUhG,OACdkE,GAAQmI,GAAYA,GAAWA,EAAQnI,QAAS,CAQlD,KANIyK,GAAWjI,EAAWiI,IACxBA,EAAQvI,MAAMpH,KAAMgH,WAKfrG,KAAKmG,EAAKnG,GAAKuE,EAAOnF,EAAKkF,KAAKoI,EAASrG,UAAUrG,IAAMqG,UAAUrG,EAE1E,KAKE,MAAO8O,GAAKrI,MAAMpH,KAAM8G,GACxB,MAAO5G,GAGP,KAFAH,GAAK8P,IACL9P,EAAKiC,iBAAiB9B,EAAGmN,GACnBnN,GA1DV,GAAIH,GAAOC,IAGX,IAAI+H,EAAY0H,KAAU/H,EAAW2F,GACnC,MAAOA,EAWT,IAPI3F,EAAW2F,KACboC,EAAOpC,EACPA,EAAUqC,SAKPhI,EAAW+H,GACd,MAAOA,EAIT,KACE,GAAIA,EAAKK,EACP,MAAOL,EAIT,IAAIA,EAAKM,EACP,MAAON,GAAKM,EAEd,MAAO7P,GAIP,MAAOuP,GA8BT,IAAK,GAAIO,KAAYP,GACfzD,EAAOyD,EAAMO,KACfJ,EAAQI,GAAYP,EAAKO,GAW7B,OARAJ,GAAQ1J,UAAYuJ,EAAKvJ,UAEzBuJ,EAAKM,EAAoBH,EAGzBA,EAAQE,GAAY,EACpBF,EAAQK,EAAWR,EAEZG,GAQTM,UAAW,WAWT,MAVAjF,GAASqD,OAAO4B,YAEhBlQ,KAAKmQ,IACLnQ,KAAKoQ,IACLpQ,KAAKqQ,IACLrQ,KAAKsQ,IAEL1P,MAAM4I,gBAAkBxJ,KAAKoK,EAC7BpK,KAAKmK,GAAoB,EAElBnK,MAWTuQ,EAA0B,SAASC,GACjCxQ,KAAKsN,EAAU,QAAS,4CAA6CkD,GACrExQ,KAAKgC,iBAAiBwO,EAAM3L,QAC1B5C,OACEwO,2BAA2B,MAUjCC,EAAgC,WAI9B,MAHA1Q,MAAK2Q,EAA2B3Q,KAAK2Q,EAAyBC,KAAK5Q,MACnE4I,EAAQiI,kBACNjI,EAAQiI,iBAAiB,qBAAsB7Q,KAAK2Q,GAC/C3Q,MAQT8Q,EAAgC,WAG9B,MAFAlI,GAAQmI,qBACNnI,EAAQmI,oBAAoB,qBAAsB/Q,KAAK2Q,GAClD3Q,MAUTgC,iBAAkB,SAASF,EAAIuL,GAG7B,GAFAA,EAAUxB,GAAamF,eAAgB,GAAI3D,EAAUA,MAEjDlC,EAAarJ,IAAOA,EAAG4C,MAEzB5C,EAAKA,EAAG4C,UACH,CAAA,GAAI0G,EAAWtJ,IAAOuJ,EAAevJ,GAAK,CAK/C,GAAIyD,GAAOzD,EAAGyD,OAAS6F,EAAWtJ,GAAM,WAAa,gBACjDkB,EAAUlB,EAAGkB,QAAUuC,EAAO,KAAOzD,EAAGkB,QAAUuC,CAEtD,OAAOvF,MAAK+D,eACVf,EACA6I,EAAYwB,GAGV4D,YAAY,EACZD,eAAgB3D,EAAQ2D,eAAiB,KAGxC,GAAI1F,EAAQxJ,GAEjBA,EAAKA,MACA,CAAA,IAAI0J,EAAc1J,GAavB,MAAO9B,MAAK+D,eACVjC,EACA+J,EAAYwB,GACV4D,YAAY,EACZD,eAAgB3D,EAAQ2D,eAAiB,IAb7C3D,GAAUrN,KAAKkR,EAA2C7D,EAASvL,GACnEA,EAAK,GAAIlB,OAAMyM,EAAQrK,UAkBzBhD,KAAKmI,EAAyBrG,CAO9B,KACE,GAAIqP,GAAQlG,EAASmG,kBAAkBtP,EACvC9B,MAAKqR,EAAiBF,EAAO9D,GAC7B,MAAOiE,GACP,GAAIxP,IAAOwP,EACT,KAAMA,GAIV,MAAOtR,OAGTuR,EAA4C,SAASC,EAAgB1P,GACnE,GAAI2P,GAASxL,OAAOyL,KAAK5P,GAAI6P,OACzBtE,EAAUxB,EAAY2F,GACxBxO,QACE,2CAA6C0J,EAAwB+E,GACvEG,aAAc1G,EAAIuG,IAClBxP,MAAOuP,EAAevP,WAIxB,OAFAoL,GAAQpL,MAAM4P,EAAiBlF,EAAmB7K,GAE3CuL,GAUTtJ,eAAgB,SAASD,EAAKuJ,GAI5B,IACIrN,KAAK0I,EAAeK,aAAa+I,OACnC9R,KAAK0I,EAAeK,aAAa+I,KAAKhO,GAFxC,CAOAuJ,EAAUA,MACVvJ,GAAY,EAEZ,IAOIhC,GAPAS,EAAOsJ,GAEP7I,QAASc,GAEXuJ,EAQF,KACE,KAAM,IAAIzM,OAAMkD,GAChB,MAAOwN,GACPxP,EAAKwP,EAIPxP,EAAGyD,KAAO,IACV,IAAI4L,GAAQlG,EAASmG,kBAAkBtP,GAGnCiQ,EAAcrG,EAAQyF,EAAMA,QAAUA,EAAMA,MAAM,EAKlDY,IAAoC,2BAArBA,EAAYtC,OAC7BsC,EAAcZ,EAAMA,MAAM,GAG5B,IAAIa,GAAWD,GAAeA,EAAYE,KAAQ,EAElD,MACIjS,KAAK0I,EAAeM,WAAW8I,OACjC9R,KAAK0I,EAAeM,WAAW8I,KAAKE,OAMlChS,KAAK0I,EAAeO,cAAc6I,MACnC9R,KAAK0I,EAAeO,cAAc6I,KAAKE,IAF1C,CAOA,GAAIhS,KAAK0I,EAAeuI,YAAe5D,GAAWA,EAAQ4D,WAAa,CAErE1O,EAAKqP,YAAkC,MAApBrP,EAAKqP,YAAsB9N,EAAMvB,EAAKqP,YAEzDvE,EAAUxB,GAENmF,eAAgB,GAElB3D,GAMFA,EAAQ2D,gBAAkB,CAE1B,IAAIkB,GAASlS,KAAKmS,EAAehB,EAAO9D,EACxC9K,GAAK0O,YAEHiB,OAAQA,EAAOE,WAcnB,MATI7P,GAAKqP,cACPrP,EAAKqP,YAAclG,EAAQnJ,EAAKqP,aAC5BrP,EAAKqP,aACJrP,EAAKqP,cAIZ5R,KAAKqS,EAAM9P,GAEJvC,QAGTsS,kBAAmB,SAASC,GAC1B,GAAIC,GAAQ3G,GAER4G,UAAWnL,IAAQ,KAErBiL,EAGF,IAAI7K,EAAW1H,KAAK0I,EAAegK,oBAAqB,CACtD,GAAIC,GAAS3S,KAAK0I,EAAegK,mBAAmBF,EAEpD,IAAIjH,EAASoH,KAAYhH,EAAcgH,GACrCH,EAAQG,MACH,IAAIA,KAAW,EACpB,MAAO3S,MAQX,MAJAA,MAAK0K,EAAa9G,KAAK4O,GACnBxS,KAAK0K,EAAa1J,OAAShB,KAAK0I,EAAegF,gBACjD1N,KAAK0K,EAAakI,QAEb5S,MAGTmD,UAAW,SAAS0P,GAClB,GAAIC,MAAgB/L,MAAMhG,KAAKiG,UAAW,EAO1C,OALAhH,MAAKuK,EAAS3G,MAAMiP,EAAQC,IACxB9S,KAAKmK,GACPnK,KAAK6O,IAGA7O,MAST+S,eAAgB,SAAS3D,GAIvB,MAFApP,MAAKyI,EAAe2G,KAAOA,EAEpBpP,MASTgT,gBAAiB,SAAS/Q,GAGxB,MAFAjC,MAAKiT,EAAc,QAAShR,GAErBjC,MASTkT,eAAgB,SAASC,GAGvB,MAFAnT,MAAKiT,EAAc,OAAQE,GAEpBnT,MAQToT,aAAc,WAGZ,MAFApT,MAAKyI,KAEEzI,MAQTqT,WAAY,WAEV,MAAOzL,MAAK0L,MAAMzL,EAAU7H,KAAKyI,KASnC8K,eAAgB,SAASC,GAGvB,MAFAxT,MAAK0I,EAAe8K,YAAcA,EAE3BxT,MASTyT,WAAY,SAAS9K,GAGnB,MAFA3I,MAAK0I,EAAeC,QAAUA,EAEvB3I,MAUTqC,gBAAiB,SAASwB,GACxB,GAAI4D,GAAWzH,KAAK0I,EAAegL,YAEnC,OADA1T,MAAK0I,EAAegL,aAAelM,EAAqBC,EAAU5D,GAC3D7D,MAUT2T,sBAAuB,SAAS9P,GAC9B,GAAI4D,GAAWzH,KAAK0I,EAAegK,kBAEnC,OADA1S,MAAK0I,EAAegK,mBAAqBlL,EAAqBC,EAAU5D,GACjE7D,MAUT4T,sBAAuB,SAAS/P,GAC9B,GAAI4D,GAAWzH,KAAK0I,EAAemL,kBAEnC,OADA7T,MAAK0I,EAAemL,mBAAqBrM,EAAqBC,EAAU5D,GACjE7D,MAYT8T,aAAc,SAASC,GAGrB,MAFA/T,MAAK0I,EAAeqL,UAAYA,EAEzB/T,MAQTgU,cAAe,WACb,MAAOhU,MAAKmI,GAQd8L,YAAa,WACX,MAAOjU,MAAKqI,GAQdgG,QAAS,WACP,QAAKrO,KAAK2H,MACL3H,KAAKsI,IACHtI,KAAKkU,0BACRlU,KAAKkU,yBAA0B,EAC/BlU,KAAKsN,EAAU,QAAS,2CAEnB,KAKX6G,UAAW,WAIT,GAAIC,GAAcxL,EAAQwL,WACtBA,IACFpU,KAAKoC,OAAOgS,EAAYhH,IAAKgH,EAAYhS,QAAQgM,WAIrDiG,iBAAkB,SAAShH,GACzB,GACGrF,EADH,CAKAqF,EAAUA,KAEV,IAAI4G,GAAc5G,EAAQiH,SAAWtU,KAAKiU,aAC1C,KAAKA,EACH,KAAM,IAAIzN,GAAiB,kBAG7B,IAAI4G,GAAMC,EAAQD,KAAOpN,KAAKmP,CAC9B,KAAK/B,EACH,KAAM,IAAI5G,GAAiB,cAG7B,IAAI+N,GAASC,mBACTC,EAAK,EACTA,IAAM,YAAcF,EAAON,GAC3BQ,GAAM,QAAUF,EAAOnH,EAEvB,IAAIgC,GAAO/B,EAAQ+B,MAAQpP,KAAKyI,EAAe2G,IAC3CA,KACEA,EAAK7J,OAAMkP,GAAM,SAAWF,EAAOnF,EAAK7J,OACxC6J,EAAKsF,QAAOD,GAAM,UAAYF,EAAOnF,EAAKsF,QAGhD,IAAIC,GAAe3U,KAAKuP,EAAiBvP,KAAK+O,EAAU3B,IAEpDwH,EAAS5M,EAAU6M,cAAc,SACrCD,GAAOE,OAAQ,EACfF,EAAOG,IAAMJ,EAAe,yBAA2BF,GACtDzM,EAAUgN,MAAQhN,EAAUiN,MAAMC,YAAYN,KAIjDO,EAAoB,WAClB,GAAIpV,GAAOC,IACXA,MAAKkK,GAAkB,EACvBkL,WAAW,WAETrV,EAAKmK,GAAkB,KAI3BmL,EAAe,SAASC,EAAWjI,GAEjC,GAAIkI,GAAK/H,CAET,IAAKxN,KAAK8H,EAAV,CAEAuF,EAAUA,MAEViI,EAAY,QAAUA,EAAUpS,OAAO,EAAG,GAAGsS,cAAgBF,EAAUpS,OAAO,GAE1E8E,EAAUyN,aACZF,EAAMvN,EAAUyN,YAAY,cAC5BF,EAAIG,UAAUJ,GAAW,GAAM,KAE/BC,EAAMvN,EAAU2N,oBAChBJ,EAAID,UAAYA,EAGlB,KAAK9H,IAAOH,GACNrB,EAAOqB,EAASG,KAClB+H,EAAI/H,GAAOH,EAAQG,GAGvB,IAAIxF,EAAUyN,YAEZzN,EAAU4N,cAAcL,OAIxB,KACEvN,EAAU6N,UAAU,KAAON,EAAID,UAAUQ,cAAeP,GACxD,MAAOrV,OAYb6V,GAAyB,SAASC,GAChC,GAAIjW,GAAOC,IACX,OAAO,UAASuV,GASd,GALAxV,EAAKkW,GAAmB,KAKpBlW,EAAK4K,IAAuB4K,EAAhC,CAEAxV,EAAK4K,EAAqB4K,CAM1B,IAAIW,EACJ,KACEA,EAAS9J,EAAiBmJ,EAAIW,QAC9B,MAAOhW,GACPgW,EAAS,YAGXnW,EAAKuS,mBACH6D,SAAU,MAAQH,EAClBhT,QAASkT,OAUfE,GAAuB,WACrB,GAAIrW,GAAOC,KACTqW,EAAmB,GAKrB,OAAO,UAASd,GACd,GAAIW,EACJ,KACEA,EAASX,EAAIW,OACb,MAAOhW,GAGP,OAEF,GAAIoW,GAAUJ,GAAUA,EAAOI,OAK/B,IACGA,IACY,UAAZA,GAAmC,aAAZA,GAA2BJ,EAAOK,mBAF5D,CAQA,GAAIC,GAAUzW,EAAKkW,EACdO,IACHzW,EAAK0W,GAAwB,SAASlB,GAExCmB,aAAaF,GACbzW,EAAKkW,GAAmBb,WAAW,WACjCrV,EAAKkW,GAAmB,MACvBI,MAUPM,GAAmB,SAASC,EAAMC,GAChC,GAAIC,GAAYvK,EAASvM,KAAK4K,EAAUG,MACpCgM,EAAWxK,EAASsK,GACpBG,EAAazK,EAASqK,EAK1B5W,MAAK8K,EAAY+L,EAIbC,EAAUG,WAAaF,EAASE,UAAYH,EAAUI,OAASH,EAASG,OAC1EL,EAAKE,EAASI,UACZL,EAAUG,WAAaD,EAAWC,UAAYH,EAAUI,OAASF,EAAWE,OAC9EN,EAAOI,EAAWG,UAEpBnX,KAAKsS,mBACH6D,SAAU,aACV5T,MACEsU,GAAIA,EACJD,KAAMA,MAKZQ,EAAwB,WACtB,GAAIrX,GAAOC,IACXD,GAAKsX,GAA4BlQ,SAASjB,UAAUC,SAEpDgB,SAASjB,UAAUC,SAAW,WAC5B,MAAoB,kBAATnG,OAAuBA,KAAK8P,EAC9B/P,EAAKsX,GAA0BjQ,MAAMpH,KAAKiQ,EAAUjJ,WAEtDjH,EAAKsX,GAA0BjQ,MAAMpH,KAAMgH,aAItDpF,EAA0B,WACpB5B,KAAKqX,KAEPlQ,SAASjB,UAAUC,SAAWnG,KAAKqX,KAQvCC,EAAqB,WAKnB,QAASC,GAAWC,GAClB,MAAO,UAASC,EAAItX,GAKlB,IAAK,GADD2G,GAAO,GAAI4Q,OAAM1Q,UAAUhG,QACtBL,EAAI,EAAGA,EAAImG,EAAK9F,SAAUL,EACjCmG,EAAKnG,GAAKqG,UAAUrG,EAEtB,IAAIgX,GAAmB7Q,EAAK,EAQ5B,OAPIY,GAAWiQ,KACb7Q,EAAK,GAAK/G,EAAKkF,KAAK0S,IAMlBH,EAAKpQ,MACAoQ,EAAKpQ,MAAMpH,KAAM8G,GAEjB0Q,EAAK1Q,EAAK,GAAIA,EAAK,KAOhC,QAAS8Q,GAAgB9X,GACvB,GAAI+X,GAAQjP,EAAQ9I,IAAW8I,EAAQ9I,GAAQoG,SAC3C2R,IAASA,EAAMC,gBAAkBD,EAAMC,eAAe,sBACxDtL,EACEqL,EACA,mBACA,SAASL,GACP,MAAO,UAASxB,EAASyB,EAAIM,EAASC,GAEpC,IACMP,GAAMA,EAAGQ,cACXR,EAAGQ,YAAclY,EAAKkF,KAAKwS,EAAGQ,cAEhC,MAAOC,IAMT,GAAIC,GAAQC,EAAcC,CA6B1B,OA1BE5O,IACAA,EAAgBuE,MACJ,gBAAXlO,GAAuC,SAAXA,KAI7BsY,EAAerY,EAAK0W,GAAwB,SAC5C4B,EAAkBtY,EAAKuY,KACvBH,EAAS,SAAS5C,GAIhB,GAAKA,EAAL,CAEA,GAAID,EACJ,KACEA,EAAYC,EAAIxS,KAChB,MAAO7C,GAGP,OAEF,MAAkB,UAAdoV,EAA8B8C,EAAa7C,GACxB,aAAdD,EAAiC+C,EAAgB9C,GAArD,UAGFiC,EAAKzW,KACVf,KACAgW,EACAjW,EAAKkF,KAAKwS,EAAI/H,OAAWyI,GACzBJ,EACAC,KAINO,GAEF/L,EACEqL,EACA,sBACA,SAASL,GACP,MAAO,UAASjC,EAAKkC,EAAIM,EAASC,GAChC,IACEP,EAAKA,IAAOA,EAAG1H,EAAoB0H,EAAG1H,EAAoB0H,GAC1D,MAAOvX,IAGT,MAAOsX,GAAKzW,KAAKf,KAAMuV,EAAKkC,EAAIM,EAASC,KAG7CO,IAvGN,GAAIxY,GAAOC,KAEPuY,EAAkBxY,EAAK0K,EA2BvBhB,EAAkBzJ,KAAK0I,EAAee,eA+E1C+C,GAAK5D,EAAS,aAAc2O,EAAYgB,GACxC/L,EAAK5D,EAAS,cAAe2O,EAAYgB,GACrC3P,EAAQ4P,uBACVhM,EACE5D,EACA,wBACA,SAAS4O,GACP,MAAO,UAASiB,GACd,MAAOjB,GAAKzX,EAAKkF,KAAKwT,MAG1BF,EAqCJ,KAAK,GA/BDG,IACF,cACA,SACA,OACA,mBACA,iBACA,oBACA,kBACA,cACA,aACA,qBACA,cACA,aACA,iBACA,eACA,kBACA,cACA,cACA,eACA,qBACA,SACA,YACA,eACA,gBACA,YACA,kBACA,SACA,iBACA,4BACA,wBAEO/X,EAAI,EAAGA,EAAI+X,EAAa1X,OAAQL,IACvCiX,EAAgBc,EAAa/X,KAajCgY,EAAwB,WAMtB,QAASC,GAASC,EAAM9K,GAClB8K,IAAQ9K,IAAOrG,EAAWqG,EAAI8K,KAChCrM,EAAKuB,EAAK8K,EAAM,SAASrB,GACvB,MAAOzX,GAAKkF,KAAKuS,KARvB,GAAIzX,GAAOC,KACPyJ,EAAkBzJ,KAAK0I,EAAee,gBAEtC8O,EAAkBxY,EAAK0K,CAU3B,IAAIhB,EAAgBsE,KAAO,kBAAoBnF,GAAS,CACtD,GAAIkQ,GAAWlQ,EAAQmQ,gBAAkBnQ,EAAQmQ,eAAe7S,SAChEsG,GACEsM,EACA,OACA,SAASE,GACP,MAAO,UAASlP,EAAQmI,GAYtB,MARIxG,GAASwG,IAAQA,EAAIgH,QAAQlZ,EAAKwI,UACpCvI,KAAKkZ,IACHpP,OAAQA,EACRmI,IAAKA,EACLkH,YAAa,OAIVH,EAAS5R,MAAMpH,KAAMgH,aAGhCuR,GAGF/L,EACEsM,EACA,OACA,SAASM,GACP,MAAO,YAIL,QAASC,KACP,GAAItL,EAAImL,IAAkC,IAAnBnL,EAAIuL,WAAkB,CAC3C,IAGEvL,EAAImL,GAAYC,YAAcpL,EAAIwL,OAClC,MAAOrZ,IAITH,EAAKuS,mBACHvP,KAAM,OACNoT,SAAU,MACV5T,KAAMwL,EAAImL,MAMhB,IAAK,GArBDnL,GAAM/N,KAoBNwZ,GAAS,SAAU,UAAW,cACzBC,EAAI,EAAGA,EAAID,EAAMxY,OAAQyY,IAChCb,EAASY,EAAMC,GAAI1L,EAiBrB,OAdI,sBAAwBA,IAAOrG,EAAWqG,EAAI2L,oBAChDlN,EACEuB,EACA,qBACA,SAASyJ,GACP,MAAOzX,GAAKkF,KAAKuS,EAAM9H,OAAW2J,KAMtCtL,EAAI2L,mBAAqBL,EAGpBD,EAAShS,MAAMpH,KAAMgH,aAGhCuR,GAIA9O,EAAgBsE,KAAOtB,KACzBD,EACE5D,EACA,QACA,SAAS+Q,GACP,MAAO,YAKL,IAAK,GADD7S,GAAO,GAAI4Q,OAAM1Q,UAAUhG,QACtBL,EAAI,EAAGA,EAAImG,EAAK9F,SAAUL,EACjCmG,EAAKnG,GAAKqG,UAAUrG,EAGtB,IAEIsR,GAFA2H,EAAa9S,EAAK,GAClBgD,EAAS,KAeb,IAZ0B,gBAAf8P,GACT3H,EAAM2H,EACG,WAAahR,IAAWgR,YAAsBhR,GAAQiR,SAC/D5H,EAAM2H,EAAW3H,IACb2H,EAAW9P,SACbA,EAAS8P,EAAW9P,SAGtBmI,EAAM,GAAK2H,EAIT3H,EAAIgH,QAAQlZ,EAAKwI,QACnB,MAAOoR,GAAUvS,MAAMpH,KAAM8G,EAG3BA,GAAK,IAAMA,EAAK,GAAGgD,SACrBA,EAAShD,EAAK,GAAGgD,OAGnB,IAAIgQ,IACFhQ,OAAQA,EACRmI,IAAKA,EACLkH,YAAa,KAGf,OAAOQ,GACJvS,MAAMpH,KAAM8G,GACZiT,KAAK,SAASC,GASb,MARAF,GAAUX,YAAca,EAAST,OAEjCxZ,EAAKuS,mBACHvP,KAAM,OACNoT,SAAU,QACV5T,KAAMuX,IAGDE,IAER,SAAS,SAAS9B,GASjB,KAPAnY,GAAKuS,mBACHvP,KAAM,OACNoT,SAAU,QACV5T,KAAMuX,EACN9V,MAAO,UAGHkU,MAIdK,GAMA9O,EAAgBuE,KAAOhO,KAAK8H,IAC1BE,EAAU6I,kBACZ7I,EAAU6I,iBAAiB,QAAS9Q,EAAK0W,GAAwB,UAAU,GAC3EzO,EAAU6I,iBAAiB,WAAY9Q,EAAKuY,MAAyB,IAC5DtQ,EAAUiS,cAEnBjS,EAAUiS,YAAY,UAAWla,EAAK0W,GAAwB,UAC9DzO,EAAUiS,YAAY,aAAcla,EAAKuY,OAQ7C,IAAI4B,GAAStR,EAAQsR,OACjBC,EAAsBD,GAAUA,EAAOE,KAAOF,EAAOE,IAAIC,QACzDC,GACDH,GACDvR,EAAQ2R,SACR3R,EAAQ2R,QAAQC,WAChB5R,EAAQ2R,QAAQE,YAClB,IAAIhR,EAAgBoB,UAAYyP,EAAwB,CAEtD,GAAII,GAAgB9R,EAAQ+R,UAC5B/R,GAAQ+R,WAAa,WACnB,GAAIC,GAAc7a,EAAK6K,EAAUG,IAGjC,IAFAhL,EAAK8a,GAAkB9a,EAAK+K,EAAW8P,GAEnCF,EACF,MAAOA,GAActT,MAAMpH,KAAMgH,WAIrC,IAAI8T,GAA6B,SAASC,GAGxC,MAAO,YACL,GAAI9I,GAAMjL,UAAUhG,OAAS,EAAIgG,UAAU,GAAK0I,MAQhD,OALIuC,IAEFlS,EAAK8a,GAAkB9a,EAAK+K,EAAWmH,EAAM,IAGxC8I,EAAiB3T,MAAMpH,KAAMgH,YAIxCwF,GAAK5D,EAAQ2R,QAAS,YAAaO,EAA4BvC,GAC/D/L,EAAK5D,EAAQ2R,QAAS,eAAgBO,EAA4BvC,GAGpE,GAAI9O,EAAgBjG,SAAW,WAAaoF,IAAWpF,QAAQwX,IAAK,CAElE,GAAIC,GAAwB,SAASnX,EAAKvB,GACxCxC,EAAKuS,mBACHtP,QAASc,EACTE,MAAOzB,EAAKyB,MACZmS,SAAU,YAIdvK,IAAM,QAAS,OAAQ,OAAQ,QAAS,OAAQ,SAASyJ,EAAGrR,GAC1DE,EAAkBV,QAASQ,EAAOiX,OAKxCC,EAAkB,WAGhB,IADA,GAAIC,GACGnb,KAAKyK,EAAiBzJ,QAAQ,CACnCma,EAAUnb,KAAKyK,EAAiBmI,OAEhC,IAAIL,GAAM4I,EAAQ,GAChB5V,EAAO4V,EAAQ,GACf3D,EAAO2D,EAAQ,EAEjB5I,GAAIhN,GAAQiS,IAIhB4D,EAAiB,WAEf,IAAK,GAAItR,KAAU9J,MAAKsK,EACtBtK,KAAKqK,EAAiBP,GAAU9J,KAAKsK,EAAwBR,IAIjEuR,EAAe,WACb,GAAItb,GAAOC,IAGX4L,GAAK5L,KAAKuK,EAAU,SAAS8K,EAAGxC,GAC9B,GAAIyI,GAAYzI,EAAO,GACnB/L,EAAO+L,EAAO,EAClByI,GAAUlU,MAAMrH,GAAOA,GAAMwb,OAAOzU,OAIxC0U,EAAW,SAASC,GAClB,GAAIC,GAAI3O,EAAWlK,KAAK4Y,GACtBrO,KACAzM,EAAI,CAEN,KACE,KAAOA,KAAKyM,EAAIP,EAAQlM,IAAM+a,EAAE/a,IAAM,GACtC,MAAOT,GACP,KAAM,IAAIsG,GAAiB,gBAAkBiV,GAG/C,GAAIrO,EAAIkC,OAAStP,KAAK0I,EAAeiT,eACnC,KAAM,IAAInV,GACR,iFAIJ,OAAO4G,IAGTwO,EAAkB,SAAS9M,GAEzB,GAAI6F,GAAe,KAAO7F,EAAIoI,MAAQpI,EAAI+M,KAAO,IAAM/M,EAAI+M,KAAO,GAKlE,OAHI/M,GAAImI,WACNtC,EAAe7F,EAAImI,SAAW,IAAMtC,GAE/BA,GAGTmH,EAAyB,WAElB9b,KAAKkK,GACRlK,KAAKqR,EAAiBjK,MAAMpH,KAAMgH,YAItC+U,EAAkB,SAASC,EAAW3O,GACpC,GAAI6E,GAASlS,KAAKmS,EAAe6J,EAAW3O,EAE5CrN,MAAKic,EAAc,UACjBD,UAAWA,EACX3O,QAASA,IAGXrN,KAAKkc,GACHF,EAAUzW,KACVyW,EAAUhZ,QACVgZ,EAAU/J,IACV+J,EAAUG,OACVjK,EACA7E,IAIJ+O,EAAgB,SAASJ,EAAW3O,GAClC,GAAItN,GAAOC,KACPkS,IACJ,IAAI8J,EAAU7K,OAAS6K,EAAU7K,MAAMnQ,SACrC4K,EAAKoQ,EAAU7K,MAAO,SAASxQ,EAAGwQ,GAChC,GAAIkL,GAAQtc,EAAKuc,GAAgBnL,EAAO6K,EAAU/J,IAC9CoK,IACFnK,EAAOtO,KAAKyY,KAKZhP,GAAWA,EAAQ2D,gBACrB,IAAK,GAAIyI,GAAI,EAAGA,EAAIpM,EAAQ2D,gBAAkByI,EAAIvH,EAAOlR,OAAQyY,IAC/DvH,EAAOuH,GAAG8C,QAAS,CAKzB,OADArK,GAASA,EAAOnL,MAAM,EAAG/G,KAAK0I,EAAec,kBAI/CgT,GAAiB,SAASH,EAAOI,GAE/B,GAAIC,IACFC,SAAUN,EAAMpK,IAChBkK,OAAQE,EAAMO,KACdC,MAAOR,EAAMS,OACbC,WAAUV,EAAM5M,MAAQ,IAuB1B,OAfK4M,GAAMpK,MACTyK,EAAWC,SAAWF,GAGxBC,EAAWH,SAGNvc,KAAK0I,EAAeQ,aAAa4I,OACjC9R,KAAK0I,EAAeQ,aAAa4I,KAAK4K,EAAWC,WAEpD,qBAAqB7K,KAAK4K,EAAW,cAErC,qBAAqB5K,KAAK4K,EAAWC,WAGhCD,GAGTM,GAAmB,SAASja,EAAMC,EAASgP,EAASmK,EAAQjK,EAAQ7E,GAClE,GAAI4P,IAAmBla,EAAOA,EAAO,KAAO,KAAOC,GAAW,GAC9D,KACIhD,KAAK0I,EAAeK,aAAa+I,OAClC9R,KAAK0I,EAAeK,aAAa+I,KAAK9O,KACrChD,KAAK0I,EAAeK,aAAa+I,KAAKmL,GAH1C,CAQA,GAAIhM,EAoBJ,IAlBIiB,GAAUA,EAAOlR,QACnBgR,EAAUE,EAAO,GAAGyK,UAAY3K,EAGhCE,EAAOE,UACPnB,GAAciB,OAAQA,IACbF,IACTf,GACEiB,SAEIyK,SAAU3K,EACVmK,OAAQA,EACRI,QAAQ,QAOZvc,KAAK0I,EAAeM,WAAW8I,OACjC9R,KAAK0I,EAAeM,WAAW8I,KAAKE,OAMlChS,KAAK0I,EAAeO,cAAc6I,MACnC9R,KAAK0I,EAAeO,cAAc6I,KAAKE,IAF1C,CAOA,GAAIzP,GAAOsJ,GAGPnJ,WACEC,SAEII,KAAMA,EACND,MAAOE,EACPiO,WAAYA,KAIlBiM,QAASlL,GAEX3E,EAIFrN,MAAKqS,EAAM9P,MAGb4a,GAAa,SAAS5a,GAGpB,GAAIqL,GAAM5N,KAAK0I,EAAeY,gBAI9B,IAHI/G,EAAKS,UACPT,EAAKS,QAAU8I,EAASvJ,EAAKS,QAAS4K,IAEpCrL,EAAKG,UAAW,CAClB,GAAIA,GAAYH,EAAKG,UAAUC,OAAO,EACtCD,GAAUI,MAAQgJ,EAASpJ,EAAUI,MAAO8K,GAG9C,GAAIwP,GAAU7a,EAAK6a,OAanB,OAZIA,KACEA,EAAQnL,MACVmL,EAAQnL,IAAMnG,EAASsR,EAAQnL,IAAKjS,KAAK0I,EAAea,eAEtD6T,EAAQC,UACVD,EAAQC,QAAUvR,EAASsR,EAAQC,QAASrd,KAAK0I,EAAea,gBAIhEhH,EAAK+a,aAAe/a,EAAK+a,YAAY3a,QACvC3C,KAAKud,GAAiBhb,EAAK+a,aAEtB/a,GAMTib,GAAkB,SAASF,GAQzB,IAAK,GAJHG,GACAjL,EACAjQ,EAHEmb,GAAY,KAAM,OAAQ,OAKrB/c,EAAI,EAAGA,EAAI2c,EAAY3a,OAAO3B,SAAUL,EAE/C,GADA6R,EAAQ8K,EAAY3a,OAAOhC,GAExB6R,EAAMsF,eAAe,SACrBvM,EAASiH,EAAMjQ,QAChBwJ,EAAayG,EAAMjQ,MAHrB,CAOAA,EAAOsJ,KAAgB2G,EAAMjQ,KAC7B,KAAK,GAAIkX,GAAI,EAAGA,EAAIiE,EAAS1c,SAAUyY,EACrCgE,EAAUC,EAASjE,GACflX,EAAKuV,eAAe2F,IAAYlb,EAAKkb,KACvClb,EAAKkb,GAAW3R,EAASvJ,EAAKkb,GAAUzd,KAAK0I,EAAea,cAGhE+T,GAAY3a,OAAOhC,GAAG4B,KAAOA,IAIjCob,GAAc,WACZ,GAAK3d,KAAKiI,GAAkBjI,KAAK8H,EAAjC,CACA,GAAI8V,KAkBJ,OAhBI5d,MAAKiI,GAAiBC,EAAW2V,YACnCD,EAASzU,SACP2U,aAAc5V,EAAW2V,YAKzBjV,EAAQiC,UAAYjC,EAAQiC,SAASE,OACvC6S,EAAS3L,IAAMrJ,EAAQiC,SAASE,MAG9B/K,KAAK8H,GAAgBE,EAAU+V,WAC5BH,EAASzU,UAASyU,EAASzU,YAChCyU,EAASzU,QAAQkU,QAAUrV,EAAU+V,UAGhCH,IAGTI,EAAe,WACbhe,KAAKie,GAAmB,EACxBje,KAAKke,GAAgB,MAGvBC,GAAgB,WACd,MAAOne,MAAKie,IAAoB3W,IAAQtH,KAAKke,GAAgBle,KAAKie,IAYpEG,GAAe,SAASC,GACtB,GAAIC,GAAOte,KAAKoI,CAEhB,UACGkW,GACDD,EAAQrb,UAAYsb,EAAKtb,SACzBqb,EAAQnB,UAAYoB,EAAKpB,WAKvBmB,EAAQpN,YAAcqN,EAAKrN,WACtB3E,EAAiB+R,EAAQpN,WAAYqN,EAAKrN,aACxCoN,EAAQ3b,YAAa4b,EAAK5b,WAE5B2J,EAAgBgS,EAAQ3b,UAAW4b,EAAK5b,aAMnD6b,GAAkB,SAASnB,GAEzB,IAAIpd,KAAKwe,KAAT,CAIA,GAAIjF,GAAS6D,EAAQ7D,MAKrB,IAAiB,MAAXA,GAA6B,MAAXA,GAA6B,MAAXA,EAA1C,CAEA,GAAIkF,EACJ,KAIIA,EADEhS,IACM2Q,EAAQjU,QAAQuV,IAAI,eAEpBtB,EAAQuB,kBAAkB,eAIpCF,EAA8B,IAAtBG,SAASH,EAAO,IACxB,MAAOve,IAITF,KAAKie,GAAmBQ,EAEpBA,EAEwB,EAAxBze,KAAKie,IAAwB,IAEjCje,KAAKke,GAAgB5W,OAGvBuX,EAAO,SAAStc,GACd,GAAIgL,GAAgBvN,KAAK0I,EAErBoW,GACAC,QAAS/e,KAAKwI,EACdtB,OAAQqG,EAAcrG,OACtB8X,SAAU,cAEZpB,EAAW5d,KAAKif,IAsDlB,IApDIrB,IACFkB,EAAS1B,QAAUQ,GAIjBrb,EAAKyO,sBAAuBzO,GAAKyO,eAErCzO,EAAOsJ,EAAYiT,EAAUvc,GAG7BA,EAAK4Q,KAAOtH,EAAYA,KAAgB7L,KAAKyI,EAAe0K,MAAO5Q,EAAK4Q,MACxE5Q,EAAKN,MAAQ4J,EAAYA,KAAgB7L,KAAKyI,EAAexG,OAAQM,EAAKN,OAG1EM,EAAKN,MAAM,oBAAsBqF,IAAQtH,KAAKwK,EAE1CxK,KAAK0K,GAAgB1K,KAAK0K,EAAa1J,OAAS,IAGlDuB,EAAK+a,aACH3a,UAAWoE,MAAMhG,KAAKf,KAAK0K,EAAc,KAIzC1K,KAAKyI,EAAe2G,OAEtB7M,EAAK6M,KAAOpP,KAAKyI,EAAe2G,MAI9B7B,EAAciG,cAAajR,EAAKiR,YAAcjG,EAAciG,aAG5DjG,EAAc5E,UAASpG,EAAKoG,QAAU4E,EAAc5E,SAGpD4E,EAAc2R,aAAY3c,EAAK4c,YAAc5R,EAAc2R,YAE/D3c,EAAOvC,KAAKof,GAAc7c,GAG1B0D,OAAOyL,KAAKnP,GAAM8c,QAAQ,SAAS7R,IAChB,MAAbjL,EAAKiL,IAA8B,KAAdjL,EAAKiL,IAAe7B,EAAcpJ,EAAKiL,YACvDjL,GAAKiL,KAIZ9F,EAAW6F,EAAcmG,gBAC3BnR,EAAOgL,EAAcmG,aAAanR,IAASA,GAIxCA,IAAQoJ,EAAcpJ,MAMzBmF,EAAW6F,EAAcsG,qBACxBtG,EAAcsG,mBAAmBtR,IAOpC,MAAIvC,MAAKwe,SACPxe,MAAKsN,EAAU,OAAQ,uCAAwC/K,QAIzB,gBAA7BgL,GAAc5D,WACnBgE,KAAK2R,SAAW/R,EAAc5D,YAChC3J,KAAKuf,GAAsBhd,GAG7BvC,KAAKuf,GAAsBhd,KAI/Bid,GAAe,SAASjd,GACtB,MAAOqK,GAASrK,EAAMvC,KAAK0I,EAAekB,eAG5C6V,GAAU,WACR,MAAOtT,MAGTuT,GAAuB,SAASnd,EAAMsB,GACpC,GAAI9D,GAAOC,KACPuN,EAAgBvN,KAAK0I,CAEzB,IAAK1I,KAAKqO,UAAV,CAQA,GALA9L,EAAOvC,KAAK2f,GAAYpd,IAKnBvC,KAAK0I,EAAekX,iBAAmB5f,KAAK6f,GAActd,GAE7D,WADAvC,MAAKsN,EAAU,OAAQ,+BAAgC/K,EAOzDvC,MAAKqI,EAAe9F,EAAKud,WAAavd,EAAKud,SAAW9f,KAAK+f,MAG3D/f,KAAKoI,EAAY7F,EAEjBvC,KAAKsN,EAAU,QAAS,uBAAwB/K,EAEhD,IAAIyd,IACFC,eAAgB,IAChBC,cAAe,YAAclgB,KAAKkN,QAClCiT,WAAYngB,KAAKuI,EAGfvI,MAAKqP,IACP2Q,EAAKI,cAAgBpgB,KAAKqP,EAG5B,IAAI3M,GAAYH,EAAKG,WAAaH,EAAKG,UAAUC,OAAO,EAItD3C,MAAK0I,EAAee,iBACpBzJ,KAAK0I,EAAee,gBAAgBwE,QAEpCjO,KAAKsS,mBACH6D,SAAU,SACVnT,QAASN,GACJA,EAAUK,KAAOL,EAAUK,KAAO,KAAO,IAAML,EAAUI,MAC1DP,EAAKS,QACT8c,SAAUvd,EAAKud,SACf9b,MAAOzB,EAAKyB,OAAS,SAIzB,IAAIiO,GAAMjS,KAAKwP,GACdjC,EAAcwG,WAAa/T,KAAKqgB,IAActf,KAAKf,MAClDiS,IAAKA,EACL+N,KAAMA,EACNzd,KAAMA,EACN8K,QAASE,EACT+S,UAAW,WACTvgB,EAAKiL,IAELjL,EAAKkc,EAAc,WACjB1Z,KAAMA,EACNwS,IAAK9C,IAEPpO,GAAYA,KAEd0c,QAAS,SAAiB7b,GACxB3E,EAAKuN,EAAU,QAAS,mCAAoC5I,GAExDA,EAAM0Y,SACRrd,EAAKygB,GAAiB9b,EAAM0Y,SAG9Brd,EAAKkc,EAAc,WACjB1Z,KAAMA,EACNwS,IAAK9C,IAEPvN,EAAQA,GAAS,GAAI9D,OAAM,sDAC3BiD,GAAYA,EAASa,QAK3B+b,GAAc,SAASC,GAErB,GAAIzO,GAAMyO,EAAKzO,IAAM,IAAM/F,EAAUwU,EAAKV,MAEtCW,EAAmB,KACnBC,IAUJ,IARIF,EAAKrT,QAAQlE,UACfwX,EAAmB3gB,KAAK6gB,GAAcH,EAAKrT,QAAQlE,UAGjDuX,EAAKrT,QAAQyT,kBACfF,EAA2B5gB,KAAK6gB,GAAcH,EAAKrT,QAAQyT,kBAGzDrU,IAAiB,CACnBmU,EAAyB3L,KAAOpN,EAAU6Y,EAAKne,KAE/C,IAAIwe,GAAsBlV,KAAgB7L,KAAK6J,GAC3CmX,EAAenV,EAAYkV,EAAqBH,EAMpD,OAJID,KACFK,EAAa7X,QAAUwX,GAGlB/X,EACJqY,MAAMhP,EAAK+O,GACXjH,KAAK,SAASC,GACb,GAAIA,EAASkH,GACXR,EAAKJ,WAAaI,EAAKJ,gBAClB,CACL,GAAI5b,GAAQ,GAAI9D,OAAM,sBAAwBoZ,EAAST,OAGvD7U,GAAM0Y,QAAUpD,EAChB0G,EAAKH,SAAWG,EAAKH,QAAQ7b,MAGhC,SAAS,WACRgc,EAAKH,SACHG,EAAKH,QAAQ,GAAI3f,OAAM,6CAI/B,GAAIwc,GAAUxU,EAAQmQ,gBAAkB,GAAInQ,GAAQmQ,cACpD,IAAKqE,EAAL,CAGA,GAAI+D,GAAU,mBAAqB/D,IAAqC,mBAAnBgE,eAEhDD,KAED,mBAAqB/D,GACvBA,EAAQ1D,mBAAqB,WAC3B,GAA2B,IAAvB0D,EAAQ9D,WAEL,GAAuB,MAAnB8D,EAAQ7D,OACjBmH,EAAKJ,WAAaI,EAAKJ,gBAClB,IAAII,EAAKH,QAAS,CACvB,GAAIrI,GAAM,GAAItX,OAAM,sBAAwBwc,EAAQ7D,OACpDrB,GAAIkF,QAAUA,EACdsD,EAAKH,QAAQrI,MAIjBkF,EAAU,GAAIgE,gBAGdnP,EAAMA,EAAIoP,QAAQ,WAAY,IAG1BX,EAAKJ,YACPlD,EAAQkE,OAASZ,EAAKJ,WAEpBI,EAAKH,UACPnD,EAAQ3Y,QAAU,WAChB,GAAIyT,GAAM,GAAItX,OAAM,oCACpBsX,GAAIkF,QAAUA,EACdsD,EAAKH,QAAQrI,MAKnBkF,EAAQmE,KAAK,OAAQtP,GAEjB0O,GACF/U,EAAK+U,EAAkB,SAASnT,EAAK1K,GACnCsa,EAAQoE,iBAAiBhU,EAAK1K,KAIlCsa,EAAQqE,KAAK5Z,EAAU6Y,EAAKne,UAG9Bmf,GAAe,SAASC,GACtB,GAAIC,KAEJ,KAAK,GAAIpU,KAAOmU,GACd,GAAIA,EAAK7J,eAAetK,GAAM,CAC5B,GAAI1K,GAAQ6e,EAAKnU,EACjBoU,GAAUpU,GAAwB,kBAAV1K,GAAuBA,IAAUA,EAI7D,MAAO8e,IAGTC,EAAW,SAAS7d,GAGhBhE,KAAKsK,EAAwBtG,KAC5BhE,KAAKmN,OAASnN,KAAK0I,EAAeyE,QAGnChG,SAASjB,UAAUkB,MAAMrG,KACvBf,KAAKsK,EAAwBtG,GAC7BhE,KAAKqK,KACFtD,MAAMhG,KAAKiG,UAAW,KAK/B8a,EAAe,SAAStU,EAAK1I,GACvBiD,EAAYjD,SACP9E,MAAKyI,EAAe+E,GAE3BxN,KAAKyI,EAAe+E,GAAO3B,EAAY7L,KAAKyI,EAAe+E,OAAY1I,KAM7E7E,EAAMiG,UAAU6b,QAAU9hB,EAAMiG,UAAU6M,eAC1C9S,EAAMiG,UAAU8b,kBAAoB/hB,EAAMiG,UAAUuN,WAEpDhU,EAAOD,QAAUS,IAEdc,KAAKf,KAAuB,mBAAXF,QAAyBA,OAAyB,mBAATC,MAAuBA,KAAyB,mBAAXF,QAAyBA,aACxHuD,GAAK,GAAG6e,GAAK,GAAGC,GAAK,GAAGC,GAAK,GAAG5b,EAAI,EAAEnC,EAAI,IAAIf,GAAG,SAASnC,EAAQzB,EAAOD,IAC5E,SAAWM,GAOX,GAAIsiB,GAAmBlhB,EAAQ,GAG3B0H,EACgB,mBAAX/I,QACHA,OACkB,mBAAXC,GAAyBA,EAAyB,mBAATC,MAAuBA,QACzEsiB,EAASzZ,EAAQ3I,MAEjBA,EAAQ,GAAImiB,EAQhBniB,GAAMqiB,WAAa,WAEjB,MADA1Z,GAAQ3I,MAAQoiB,EACTpiB,GAGTA,EAAMkU,YAEN1U,EAAOD,QAAUS,EAoCjBR,EAAOD,QAAQ+iB,OAASH,IAErBrhB,KAAKf,KAAuB,mBAAXF,QAAyBA,OAAyB,mBAATC,MAAuBA,KAAyB,mBAAXF,QAAyBA,aACxHwH,EAAI,IAAIjE,IAAI,SAASlC,EAAQzB,EAAOD,IACvC,SAAWM,GAQX,QAASyL,GAASiX,GAChB,MAAuB,gBAATA,IAA8B,OAATA,EAKrC,QAASlX,GAAQxI,GACf,OAAQmD,OAAOC,UAAUC,SAASpF,KAAK+B,IACrC,IAAK,iBACH,OAAO,CACT,KAAK,qBACH,OAAO,CACT,KAAK,wBACH,OAAO,CACT,SACE,MAAOA,aAAiBlC,QAI9B,QAASuK,GAAarI,GACpB,MAAiD,wBAA1CmD,OAAOC,UAAUC,SAASpF,KAAK+B,GAGxC,QAASsI,GAAWtI,GAClB,MAAiD,sBAA1CmD,OAAOC,UAAUC,SAASpF,KAAK+B,GAGxC,QAASuI,GAAevI,GACtB,MAAiD,0BAA1CmD,OAAOC,UAAUC,SAASpF,KAAK+B,GAGxC,QAASiF,GAAYya,GACnB,MAAgB,UAATA,EAGT,QAAS9a,GAAW8a,GAClB,MAAuB,kBAATA,GAGhB,QAAShX,GAAcgX,GACrB,MAAgD,oBAAzCvc,OAAOC,UAAUC,SAASpF,KAAKyhB,GAGxC,QAAS/W,GAAS+W,GAChB,MAAgD,oBAAzCvc,OAAOC,UAAUC,SAASpF,KAAKyhB,GAGxC,QAAS9W,GAAQ8W,GACf,MAAgD,mBAAzCvc,OAAOC,UAAUC,SAASpF,KAAKyhB,GAGxC,QAAS7W,GAAc6W,GACrB,IAAKhX,EAAcgX,GAAO,OAAO,CAEjC,KAAK,GAAInN,KAAKmN,GACZ,GAAIA,EAAK1K,eAAezC,GACtB,OAAO,CAGX,QAAO,EAGT,QAASoN,KACP,IAEE,MADA,IAAIC,YAAW,KACR,EACP,MAAOxiB,GACP,OAAO,GAIX,QAASyiB,KACP,IAEE,MADA,IAAIC,UAAS,KACN,EACP,MAAO1iB,GACP,OAAO,GAIX,QAAS2iB,KACP,IAEE,MADA,IAAIC,cAAa,KACV,EACP,MAAO5iB,GACP,OAAO,GAIX,QAASuM,KACP,KAAM,SAAW7D,IAAU,OAAO,CAElC,KAIE,MAHA,IAAIma,SACJ,GAAIlJ,SAAQ,IACZ,GAAImJ,WACG,EACP,MAAO9iB,GACP,OAAO,GAQX,QAAS+J,KACP,IAAKwC,IAAiB,OAAO,CAE7B,KAKE,MAHA,IAAIoN,SAAQ,cACV7P,eAAgB,YAEX,EACP,MAAO9J,GACP,OAAO,GAIX,QAAS+iB,KACP,MAAwC,kBAA1BC,uBAGhB,QAAS5gB,GAAgBuB,GACvB,QAAS6P,GAAanR,EAAMkF,GAC1B,GAAI0b,GAAiBtf,EAAStB,IAASA,CACvC,OAAIkF,GACKA,EAAS0b,IAAmBA,EAE9BA,EAGT,MAAOzP,GAGT,QAAS9H,GAAK2G,EAAK1O,GACjB,GAAIlD,GAAG8Y,CAEP,IAAI1R,EAAYwK,EAAIvR,QAClB,IAAKL,IAAK4R,GACJvG,EAAOuG,EAAK5R,IACdkD,EAAS9C,KAAK,KAAMJ,EAAG4R,EAAI5R,QAK/B,IADA8Y,EAAIlH,EAAIvR,OAEN,IAAKL,EAAI,EAAGA,EAAI8Y,EAAG9Y,IACjBkD,EAAS9C,KAAK,KAAMJ,EAAG4R,EAAI5R,IAMnC,QAASkL,GAAYuX,EAAMC,GACzB,MAAKA,IAGLzX,EAAKyX,EAAM,SAAS7V,EAAK1K,GACvBsgB,EAAK5V,GAAO1K,IAEPsgB,GALEA,EAgBX,QAASrX,GAAawG,GACpB,QAAKtM,OAAOqd,UAGLrd,OAAOqd,SAAS/Q,GAGzB,QAASzG,GAAS2P,EAAK7N,GACrB,GAAmB,gBAARA,GACT,KAAM,IAAIhN,OAAM,yDAElB,OAAmB,gBAAR6a,IAA4B,IAAR7N,EACtB6N,EAEFA,EAAIza,QAAU4M,EAAM6N,EAAMA,EAAIvY,OAAO,EAAG0K,GAAO,IAUxD,QAAS5B,GAAOuX,EAAQ/V,GACtB,MAAOvH,QAAOC,UAAU4R,eAAe/W,KAAKwiB,EAAQ/V,GAGtD,QAASvB,GAAWuX,GAQlB,IALA,GAGEC,GAHEC,KACF/iB,EAAI,EACJgjB,EAAMH,EAASxiB,OAGVL,EAAIgjB,EAAKhjB,IACd8iB,EAAUD,EAAS7iB,GACf8K,EAASgY,GAGXC,EAAQ9f,KAAK6f,EAAQpC,QAAQ,8BAA+B,SACnDoC,GAAWA,EAAQG,QAE5BF,EAAQ9f,KAAK6f,EAAQG,OAIzB,OAAO,IAAIC,QAAOH,EAAQI,KAAK,KAAM,KAGvC,QAAS5X,GAAU3L,GACjB,GAAIwjB,KAIJ,OAHAnY,GAAKrL,EAAG,SAASiN,EAAK1K,GACpBihB,EAAMngB,KAAK4Q,mBAAmBhH,GAAO,IAAMgH,mBAAmB1R,MAEzDihB,EAAMD,KAAK,KAMpB,QAASvX,GAAS0F,GAChB,GAAmB,gBAARA,GAAkB,QAC7B,IAAI+R,GAAQ/R,EAAI+R,MAAM,kEAGlBC,EAAQD,EAAM,IAAM,GACpBE,EAAWF,EAAM,IAAM,EAC3B,QACE/M,SAAU+M,EAAM,GAChB9M,KAAM8M,EAAM,GACZ/U,KAAM+U,EAAM,GACZ7M,SAAU6M,EAAM,GAAKC,EAAQC,GAGjC,QAAS/X,KACP,GAAIgY,GAASvb,EAAQub,QAAUvb,EAAQwb,QAEvC,KAAKrc,EAAYoc,IAAWA,EAAOE,gBAAiB,CAGlD,GAAIC,GAAM,GAAIC,aAAY,EAC1BJ,GAAOE,gBAAgBC,GAGvBA,EAAI,GAAe,KAATA,EAAI,GAAc,MAE5BA,EAAI,GAAe,MAATA,EAAI,GAAe,KAE7B,IAAIE,GAAM,SAASC,GAEjB,IADA,GAAIC,GAAID,EAAIte,SAAS,IACdue,EAAE1jB,OAAS,GAChB0jB,EAAI,IAAMA,CAEZ,OAAOA,GAGT,OACEF,GAAIF,EAAI,IACRE,EAAIF,EAAI,IACRE,EAAIF,EAAI,IACRE,EAAIF,EAAI,IACRE,EAAIF,EAAI,IACRE,EAAIF,EAAI,IACRE,EAAIF,EAAI,IACRE,EAAIF,EAAI,IAIV,MAAO,mCAAmCjD,QAAQ,QAAS,SAASsD,GAClE,GAAItkB,GAAqB,GAAhBsN,KAAK2R,SAAiB,EAC7BoF,EAAU,MAANC,EAAYtkB,EAAS,EAAJA,EAAW,CAClC,OAAOqkB,GAAEve,SAAS,MAYxB,QAASiG,GAAiBwY,GAWxB,IATA,GAOEC,GAPEC,EAAsB,EACxBC,EAAiB,GACjBC,KACAC,EAAS,EACTtB,EAAM,EACNuB,EAAY,MACZC,EAAYD,EAAUlkB,OAGjB4jB,GAAQK,IAAWH,IACxBD,EAAUO,EAAoBR,KAMhB,SAAZC,GACCI,EAAS,GAAKtB,EAAMqB,EAAIhkB,OAASmkB,EAAYN,EAAQ7jB,QAAU+jB,KAKlEC,EAAIphB,KAAKihB,GAETlB,GAAOkB,EAAQ7jB,OACf4jB,EAAOA,EAAKS,UAGd,OAAOL,GAAI5S,UAAU0R,KAAKoB,GAS5B,QAASE,GAAoBR,GAC3B,GACEU,GACAC,EACA/X,EACAgY,EACA7kB,EALEqkB,IAOJ,KAAKJ,IAASA,EAAKtO,QACjB,MAAO,EAST,IANA0O,EAAIphB,KAAKghB,EAAKtO,QAAQR,eAClB8O,EAAK9b,IACPkc,EAAIphB,KAAK,IAAMghB,EAAK9b,IAGtBwc,EAAYV,EAAKU,UACbA,GAAa7Z,EAAS6Z,GAExB,IADAC,EAAUD,EAAUxY,MAAM,OACrBnM,EAAI,EAAGA,EAAI4kB,EAAQvkB,OAAQL,IAC9BqkB,EAAIphB,KAAK,IAAM2hB,EAAQ5kB,GAG3B,IAAI8kB,IAAiB,OAAQ,OAAQ,QAAS,MAC9C,KAAK9kB,EAAI,EAAGA,EAAI8kB,EAAczkB,OAAQL,IACpC6M,EAAMiY,EAAc9kB,GACpB6kB,EAAOZ,EAAKc,aAAalY,GACrBgY,GACFR,EAAIphB,KAAK,IAAM4J,EAAM,KAAOgY,EAAO,KAGvC,OAAOR,GAAIlB,KAAK,IAMlB,QAAS6B,GAAgBllB,EAAGmlB,GAC1B,WAAYnlB,IAAMmlB,GAMpB,QAASC,GAAgBplB,EAAGmlB,GAC1B,MAAO7d,GAAYtH,IAAMsH,EAAY6d,GAMvC,QAASvZ,GAAgBiF,EAAKwU,GAC5B,OAAIH,EAAgBrU,EAAKwU,KAEzBxU,EAAMA,EAAI3O,OAAO,GACjBmjB,EAAMA,EAAInjB,OAAO,GAEb2O,EAAIvO,OAAS+iB,EAAI/iB,MAAQuO,EAAIxO,QAAUgjB,EAAIhjB,SAG3C+iB,EAAgBvU,EAAIL,WAAY6U,EAAI7U,aAEjC3E,EAAiBgF,EAAIL,WAAY6U,EAAI7U,cAM9C,QAAS3E,GAAiByZ,EAAQC,GAChC,GAAIL,EAAgBI,EAAQC,GAAS,OAAO,CAE5C,IAAIC,GAAUF,EAAO7T,OACjBgU,EAAUF,EAAO9T,MAGrB,IAAI+T,EAAQjlB,SAAWklB,EAAQllB,OAAQ,OAAO,CAI9C,KAAK,GADDP,GAAGmlB,EACEjlB,EAAI,EAAGA,EAAIslB,EAAQjlB,OAAQL,IAGlC,GAFAF,EAAIwlB,EAAQtlB,GACZilB,EAAIM,EAAQvlB,GAEVF,EAAEkc,WAAaiJ,EAAEjJ,UACjBlc,EAAE0b,SAAWyJ,EAAEzJ,QACf1b,EAAEoc,QAAU+I,EAAE/I,OACdpc,EAAE,cAAgBmlB,EAAE,YAEpB,OAAO,CAEX,QAAO,EAUT,QAASpZ,GAAK+F,EAAKhN,EAAM4gB,EAAaC,GACpC,GAAW,MAAP7T,EAAJ,CACA,GAAIiF,GAAOjF,EAAIhN,EACfgN,GAAIhN,GAAQ4gB,EAAY3O,GACxBjF,EAAIhN,GAAMuK,GAAY,EACtByC,EAAIhN,GAAM0K,EAAWuH,EACjB4O,GACFA,EAAMxiB,MAAM2O,EAAKhN,EAAMiS,KAU3B,QAASvQ,GAASof,EAAOC,GACvB,IAAK5a,EAAQ2a,GAAQ,MAAO,EAI5B,KAAK,GAFDE,MAEK5lB,EAAI,EAAGA,EAAI0lB,EAAMrlB,OAAQL,IAChC,IACE4lB,EAAO3iB,KAAK4iB,OAAOH,EAAM1lB,KACzB,MAAOT,GACPqmB,EAAO3iB,KAAK,gCAIhB,MAAO2iB,GAAOzC,KAAKwC,GASrB,QAASG,GAAW3jB,GAClB,QAAS4jB,UAAU5jB,GAAOgK,MAAM,SAAS9L,OAG3C,QAAS2lB,GAAS7jB,GAChB,MAAO2jB,GAAW7e,KAAKC,UAAU/E,IAGnC,QAAS8jB,GAAe9jB,GACtB,GAAqB,gBAAVA,GAAoB,CAC7B,GAAI+jB,GAAY,EAChB,OAAO/a,GAAShJ,EAAO+jB,GAClB,GACY,gBAAV/jB,IACU,iBAAVA,IACU,mBAAVA,GAEP,MAAOA,EAGT,IAAIC,GAAOkD,OAAOC,UAAUC,SAASpF,KAAK+B,EAG1C,OAAa,oBAATC,EAAmC,WAC1B,mBAATA,EAAkC,UACzB,sBAATA,EACKD,EAAMyC,KAAO,cAAgBzC,EAAMyC,KAAO,IAAM,aAElDzC,EAGT,QAASgkB,GAAgBhkB,EAAOikB,GAC9B,MAAc,KAAVA,EAAoBH,EAAe9jB,GAEnC0I,EAAc1I,GACTmD,OAAOyL,KAAK5O,GAAOkkB,OAAO,SAASC,EAAKzZ,GAE7C,MADAyZ,GAAIzZ,GAAOsZ,EAAgBhkB,EAAM0K,GAAMuZ,EAAQ,GACxCE,OAEAvP,MAAMhM,QAAQ5I,GAChBA,EAAMokB,IAAI,SAASC,GACxB,MAAOL,GAAgBK,EAAKJ,EAAQ,KAIjCH,EAAe9jB,GAGxB,QAAS6J,GAAmB7K,EAAIilB,EAAOK,GACrC,IAAK5b,EAAc1J,GAAK,MAAOA,EAE/BilB,GAAyB,gBAAVA,GAAqBM,EAAgCN,EACpEK,EAA2B,gBAAVL,GAAqBO,EAA+BF,CAErE,IAAIG,GAAaT,EAAgBhlB,EAAIilB,EAErC,OAAIJ,GAAS9e,EAAU0f,IAAeH,EAC7Bza,EAAmB7K,EAAIilB,EAAQ,GAGjCQ,EAGT,QAAS7a,GAAwBgF,EAAMmV,GACrC,GAAoB,gBAATnV,IAAqC,gBAATA,GAAmB,MAAOA,GAAKvL,UACtE,KAAKuR,MAAMhM,QAAQgG,GAAO,MAAO,EAKjC,IAHAA,EAAOA,EAAK8V,OAAO,SAASha,GAC1B,MAAsB,gBAARA,KAEI,IAAhBkE,EAAK1Q,OAAc,MAAO,sBAG9B,IADA6lB,EAAiC,gBAAdA,GAAyBY,EAA4BZ,EACpEnV,EAAK,GAAG1Q,QAAU6lB,EAAW,MAAOnV,GAAK,EAE7C,KAAK,GAAIgW,GAAWhW,EAAK1Q,OAAQ0mB,EAAW,EAAGA,IAAY,CACzD,GAAIH,GAAa7V,EAAK3K,MAAM,EAAG2gB,GAAU5D,KAAK,KAC9C,MAAIyD,EAAWvmB,OAAS6lB,GACxB,MAAIa,KAAahW,EAAK1Q,OAAeumB,EAC9BA,EAAa,IAGtB,MAAO,GAGT,QAAS3a,GAASyZ,EAAOzc,GAcvB,QAAS+d,GAAeC,GACtB,MAAIlc,GAAQkc,GACHA,EAAYV,IAAI,SAASC,GAC9B,MAAOQ,GAAeR,KAItB3b,EAAcoc,GACT3hB,OAAOyL,KAAKkW,GAAaZ,OAAO,SAASC,EAAKY,GAMnD,MAJEZ,GAAIY,GADFC,EAAehW,KAAK+V,GACbE,EAEAJ,EAAeC,EAAYC,IAE/BZ,OAIJW,EA/BT,IAAKlc,EAAQ9B,IAAkB8B,EAAQ9B,IAAyC,IAAxBA,EAAa5I,OACnE,MAAOqlB,EAET,IAEI2B,GAFAF,EAAiB7b,EAAWrC,GAC5Bme,EAAe,UAGnB,KACEC,EAAYpgB,KAAK0L,MAAMzL,EAAUwe,IACjC,MAAO4B,GACP,MAAO5B,GAwBT,MAAOsB,GAAeK,GA5lBxB,GAAIngB,GAAY3G,EAAQ,IAEpB0H,EACgB,mBAAX/I,QACHA,OACkB,mBAAXC,GAAyBA,EAAyB,mBAATC,MAAuBA,QA0dzEsnB,EAAgC,EAEhCC,EAA+B,MAC/BG,EAA4B,EA6HhChoB,GAAOD,SACL+L,SAAUA,EACVD,QAASA,EACTH,aAAcA,EACdC,WAAYA,EACZC,eAAgBA,EAChBtD,YAAaA,EACbL,WAAYA,EACZ8D,cAAeA,EACfC,SAAUA,EACVC,QAASA,EACTC,cAAeA,EACf8W,mBAAoBA,EACpBE,iBAAkBA,EAClBE,qBAAsBA,EACtBpW,cAAeA,EACfxC,uBAAwBA,EACxBgZ,8BAA+BA,EAC/B3gB,gBAAiBA,EACjBsJ,KAAMA,EACNC,YAAaA,EACbC,SAAUA,EACVC,aAAcA,EACdC,OAAQA,EACRC,WAAYA,EACZC,UAAWA,EACXC,MAAOA,EACPC,iBAAkBA,EAClBgZ,oBAAqBA,EACrB/Y,gBAAiBA,EACjBC,iBAAkBA,EAClBC,SAAUA,EACVC,KAAMA,EACNvF,SAAUA,EACV0F,mBAAoBA,EACpBD,wBAAyBA,EACzBE,SAAUA,KAGT7L,KAAKf,KAAuB,mBAAXF,QAAyBA,OAAyB,mBAATC,MAAuBA,KAAyB,mBAAXF,QAAyBA,aACxHqiB,GAAK,KAAKD,IAAI,SAAS/gB,EAAQzB,EAAOD,IACzC,SAAWM,GA+BX,QAASooB,KACP,MAAwB,mBAAblb,WAAiD,MAArBA,SAASnC,SAAyB,GAClEmC,SAASnC,SAASE,KAG3B,QAASod,KACP,MAAwB,mBAAbnb,WAAiD,MAArBA,SAASnC,SAAyB,IAGpEmC,SAASnC,SAASud,SACrBpb,SAASnC,SAASud,OAChBpb,SAASnC,SAASoM,SAClB,KACAjK,SAASnC,SAASwd,UACjBrb,SAASnC,SAASgR,KAAO,IAAM7O,SAASnC,SAASgR,KAAO,KAGtD7O,SAASnC,SAASud,QA/C3B,GAAI1hB,GAAQxF,EAAQ,IAYhB+J,GACF7B,qBAAqB,EACrB+D,OAAO,GAILvE,EACgB,mBAAX/I,QACHA,OACkB,mBAAXC,GAAyBA,EAAyB,mBAATC,MAAuBA,QAGzEuoB,KAAYvhB,MACZwhB,EAAmB,IAGnBC,EAAiB,yGA6DrBvd,GAASqD,OAAS,WAUhB,QAASC,GAAUka,GACjBC,IACAC,EAAS/kB,KAAK6kB,GAOhB,QAASG,GAAYH,GACnB,IAAK,GAAI9nB,GAAIgoB,EAAS3nB,OAAS,EAAGL,GAAK,IAAKA,EACtCgoB,EAAShoB,KAAO8nB,GAClBE,EAASE,OAAOloB,EAAG,GAQzB,QAASmoB,KACPC,IACAJ,KAOF,QAASK,GAAe7X,EAAO8X,GAC7B,GAAIvmB,GAAY,IAChB,KAAIumB,GAAkBhe,EAAS7B,oBAA/B,CAGA,IAAK,GAAIzI,KAAKgoB,GACZ,GAAIA,EAAS7Q,eAAenX,GAC1B,IACEgoB,EAAShoB,GAAGyG,MAAM,MAAO+J,GAAOoK,OAAO+M,EAAOvnB,KAAKiG,UAAW,KAC9D,MAAOkiB,GACPxmB,EAAYwmB,EAKlB,GAAIxmB,EACF,KAAMA,IAiBV,QAASymB,GAAsBrlB,EAAKmO,EAAKmX,EAAQC,EAAOvnB,GACtD,GAAIqP,GAAQ,KAERzO,EAAYgE,EAAMyE,aAAarJ,GAAMA,EAAG4C,MAAQ5C,EAEhDkB,EAAU0D,EAAMyE,aAAarH,GAAOA,EAAId,QAAUc,CAEtD,IAAIwlB,EACFre,EAASmG,kBAAkBmY,oCACzBD,EACArX,EACAmX,EACApmB,GAEFwmB,QACK,IAAI9mB,GAAagE,EAAM4E,QAAQ5I,GAMpCyO,EAAQlG,EAASmG,kBAAkB1O,GACnCsmB,EAAe7X,GAAO,OACjB,CACL,GAOIsY,GAPA5e,GACFoH,IAAKA,EACL2K,KAAMwM,EACNtM,OAAQuM,GAGN9jB,EAAOmK,MAGX,IAAkC,uBAA3BvJ,SAASpF,KAAKiC,GAAgC,CACnD,GAAIymB,GAASzmB,EAAQghB,MAAMwE,EACvBiB,KACFlkB,EAAOkkB,EAAO,GACdzmB,EAAUymB,EAAO,IAIrB5e,EAAS4E,KAAO8Y,EAEhBpX,GACE5L,KAAMA,EACNvC,QAASA,EACTiP,IAAKiW,IACL/W,OAAQtG,IAEVme,EAAe7X,GAAO,GAGxB,QAAIuY,GACKA,EAAmBtiB,MAAMpH,KAAMgH,WAM1C,QAAS0hB,KACHiB,IAGJD,EAAqB9gB,EAAQnE,QAC7BmE,EAAQnE,QAAU0kB,EAClBQ,GAA2B,GAG7B,QAASZ,KACFY,IAGL/gB,EAAQnE,QAAUilB,EAClBC,GAA2B,EAC3BD,EAAqBha,QAGvB,QAAS8Z,KACP,GAAII,GAAsBN,EACxBO,EAAYC,CACdA,GAAW,KACXR,EAAqB,KACrBtV,EAAgB,KAChBgV,EAAe5hB,MAAM,MAAOwiB,GAAqB,GAAOrO,OAAOsO,IAUjE,QAASvb,GAAOxM,EAAIioB,GAClB,GAAIjjB,GAAOwhB,EAAOvnB,KAAKiG,UAAW,EAClC,IAAIsiB,EAAoB,CACtB,GAAItV,IAAkBlS,EACpB,MAEA0nB,KAIJ,GAAIrY,GAAQlG,EAASmG,kBAAkBtP,EAevC,IAdAwnB,EAAqBnY,EACrB6C,EAAgBlS,EAChBgoB,EAAWhjB,EAMXsO,WAAW,WACLpB,IAAkBlS,GACpB0nB,KAEDrY,EAAM6Y,WAAa,IAAO,GAEzBD,KAAY,EACd,KAAMjoB,GA9LV,GA0DI4nB,GAAoBC,EA1DpBhB,KACFmB,EAAW,KACX9V,EAAgB,KAChBsV,EAAqB,IAkMvB,OAHAhb,GAAOC,UAAYA,EACnBD,EAAOsa,YAAcA,EACrBta,EAAO4B,UAAY4Y,EACZxa,KAsDTrD,EAASmG,kBAAoB,WA4C3B,QAAS6Y,GAA+BnoB,GACtC,GAAwB,mBAAbA,GAAGqP,OAA0BrP,EAAGqP,MAA3C,CAiBA,IAAK,GALD+Y,GACAC,EACAC,EAZAlQ,EAAS,0IACTmQ,EAAQ,wHAGRC,EAAQ,6JAERC,EAAY,gDACZC,EAAa,gCACbC,EAAQ3oB,EAAGqP,MAAMrE,MAAM,MACvBqE,KAMKxQ,GAFO,sBAAsBkC,KAAKf,EAAGkB;AAEjC,GAAGyW,EAAIgR,EAAMzpB,OAAQL,EAAI8Y,IAAK9Y,EAAG,CAC5C,GAAKwpB,EAAQjQ,EAAOrX,KAAK4nB,EAAM9pB,IAAM,CACnC,GAAI+pB,GAAWP,EAAM,IAAqC,IAA/BA,EAAM,GAAGlR,QAAQ,UACxC0R,EAASR,EAAM,IAAmC,IAA7BA,EAAM,GAAGlR,QAAQ,OACtC0R,KAAWT,EAAWM,EAAW3nB,KAAKsnB,EAAM,OAE9CA,EAAM,GAAKD,EAAS,GACpBC,EAAM,GAAKD,EAAS,GACpBC,EAAM,GAAKD,EAAS,IAEtBE,GACEnY,IAAMyY,EAAsB,KAAXP,EAAM,GACvB1a,KAAM0a,EAAM,IAAM5B,EAClBzhB,KAAM4jB,GAAYP,EAAM,OACxBvN,KAAMuN,EAAM,IAAMA,EAAM,GAAK,KAC7BrN,OAAQqN,EAAM,IAAMA,EAAM,GAAK,UAE5B,IAAKA,EAAQE,EAAMxnB,KAAK4nB,EAAM9pB,IACnCypB,GACEnY,IAAKkY,EAAM,GACX1a,KAAM0a,EAAM,IAAM5B,EAClBzhB,QACA8V,MAAOuN,EAAM,GACbrN,OAAQqN,EAAM,IAAMA,EAAM,GAAK,UAE5B,CAAA,KAAKA,EAAQG,EAAMznB,KAAK4nB,EAAM9pB,KAsBnC,QArBA,IAAIgqB,GAASR,EAAM,IAAMA,EAAM,GAAGlR,QAAQ,aACtC0R,KAAWT,EAAWK,EAAU1nB,KAAKsnB,EAAM,MAE7CA,EAAM,GAAKD,EAAS,GACpBC,EAAM,GAAKD,EAAS,GACpBC,EAAM,GAAK,MACI,IAANxpB,GAAYwpB,EAAM,IAAiC,mBAApBroB,GAAG8oB,eAK3CzZ,EAAM,GAAG2L,OAAShb,EAAG8oB,aAAe,GAEtCR,GACEnY,IAAKkY,EAAM,GACX1a,KAAM0a,EAAM,IAAM5B,EAClBzhB,KAAMqjB,EAAM,GAAKA,EAAM,GAAGrd,MAAM,QAChC8P,KAAMuN,EAAM,IAAMA,EAAM,GAAK,KAC7BrN,OAAQqN,EAAM,IAAMA,EAAM,GAAK,MAUnC,IAJKC,EAAQ3a,MAAQ2a,EAAQxN,OAC3BwN,EAAQ3a,KAAO8Y,GAGb6B,EAAQnY,KAAoC,UAA7BmY,EAAQnY,IAAI/O,OAAO,EAAG,GAAgB,CAMvD,GAAI6K,GAAM,GAAIgL,eAKd,IAJAhL,EAAIwT,KAAK,MAAO6I,EAAQnY,KAAK,GAC7BlE,EAAI0T,KAAK,MAGU,MAAf1T,EAAIwL,OAAgB,CACtB,GAAIqK,GAAS7V,EAAI8c,cAAgB,EAIjCjH,GAASA,EAAO7c,WAGhB,IAAI+jB,GAAalH,EAAOI,MAAM,+BAG9B,IAAI8G,EAAY,CACd,GAAIC,GAAmBD,EAAW,EAIC,OAA/BC,EAAiBC,OAAO,KAC1BD,EAAmB5C,IAAsB4C,EAAiBhkB,MAAM,IAKlEqjB,EAAQnY,IAAM8Y,EAAiBhkB,MAAM,QAK3CoK,EAAMvN,KAAKwmB,GAGb,MAAKjZ,GAAMnQ,QAKTuE,KAAMzD,EAAGyD,KACTvC,QAASlB,EAAGkB,QACZiP,IAAKiW,IACL/W,MAAOA,GAPA,MAwBX,QAASoY,GAAoCvN,EAAW/J,EAAKmX,EAAQpmB,GACnE,GAAIioB,IACFhZ,IAAKA,EACL2K,KAAMwM,EAGR,IAAI6B,EAAQhZ,KAAOgZ,EAAQrO,KAAM,CAO/B,GANAZ,EAAUgO,YAAa,EAElBiB,EAAQxb,OACXwb,EAAQxb,KAAO8Y,GAGbvM,EAAU7K,MAAMnQ,OAAS,GACvBgb,EAAU7K,MAAM,GAAGc,MAAQgZ,EAAQhZ,IAAK,CAC1C,GAAI+J,EAAU7K,MAAM,GAAGyL,OAASqO,EAAQrO,KACtC,OAAO,CACF,KACJZ,EAAU7K,MAAM,GAAGyL,MACpBZ,EAAU7K,MAAM,GAAG1B,OAASwb,EAAQxb,KAGpC,MADAuM,GAAU7K,MAAM,GAAGyL,KAAOqO,EAAQrO,MAC3B,EAOb,MAFAZ,GAAU7K,MAAM+Z,QAAQD,GACxBjP,EAAUmP,SAAU,GACb,EAKT,MAHEnP,GAAUgO,YAAa,GAGlB,EAYT,QAASoB,GAAsCtpB,EAAIilB,GASjD,IACE,GALAoD,GACAkB,EALEC,EAAe,qEACjBna,KACAoa,KACAC,GAAY,EAMRC,EAAOL,EAAsCM,OACjDD,IAASD,EACTC,EAAOA,EAAKC,OAEZ,GAAID,IAASra,GAAqBqa,IAASxgB,EAASqD,OAApD,CAkBA,GAbA+c,GACEpZ,IAAK,KACLxC,KAAM8Y,EACN3L,KAAM,KACNE,OAAQ,MAGN2O,EAAKlmB,KACP8lB,EAAK5b,KAAOgc,EAAKlmB,MACP4kB,EAAQmB,EAAazoB,KAAK4oB,EAAKtlB,eACzCklB,EAAK5b,KAAO0a,EAAM,IAGK,mBAAdkB,GAAK5b,KACd,IACE4b,EAAK5b,KAAO0a,EAAM9D,MAAMsF,UAAU,EAAGxB,EAAM9D,MAAMpN,QAAQ,MACzD,MAAO/Y,IAGPqrB,EAAM,GAAKE,GACbD,GAAY,EAEZD,EAAM,GAAKE,IAAQ,EAGrBta,EAAMvN,KAAKynB,GAGTtE,GAGF5V,EAAM0X,OAAO,EAAG9B,EAGlB,IAAIpU,IACFpN,KAAMzD,EAAGyD,KACTvC,QAASlB,EAAGkB,QACZiP,IAAKiW,IACL/W,MAAOA,EAQT,OANAoY,GACE5W,EACA7Q,EAAG8pB,WAAa9pB,EAAG+pB,SACnB/pB,EAAG8a,MAAQ9a,EAAGgqB,WACdhqB,EAAGkB,SAAWlB,EAAGiqB,aAEZpZ,EAQT,QAASvB,GAAkBtP,EAAIilB,GAC7B,GAAI5V,GAAQ,IACZ4V,GAAiB,MAATA,EAAgB,GAAKA,CAE7B,KAEE,GADA5V,EAAQ8Y,EAA+BnoB,GAErC,MAAOqP,GAET,MAAOjR,GACP,GAAI+K,EAASkC,MACX,KAAMjN,GAIV,IAEE,GADAiR,EAAQia,EAAsCtpB,EAAIilB,EAAQ,GAExD,MAAO5V,GAET,MAAOjR,GACP,GAAI+K,EAASkC,MACX,KAAMjN,GAGV,OACEqF,KAAMzD,EAAGyD,KACTvC,QAASlB,EAAGkB,QACZiP,IAAKiW,KAOT,MAHA9W,GAAkBmY,oCAAsCA,EACxDnY,EAAkB6Y,+BAAiCA,EAE5C7Y,KAGT3R,EAAOD,QAAUyL,IAEdlK,KAAKf,KAAuB,mBAAXF,QAAyBA,OAAyB,mBAATC,MAAuBA,KAAyB,mBAAXF,QAAyBA,aACxHuD,GAAK,KAAK8e,IAAI,SAAShhB,EAAQzB,EAAOD,GAezC,QAASyZ,GAAQ+S,EAAUC,GACzB,IAAK,GAAItrB,GAAI,EAAGA,EAAIqrB,EAAShrB,SAAUL,EACrC,GAAIqrB,EAASrrB,KAAOsrB,EAAQ,MAAOtrB,EAErC,UAGF,QAASkH,GAAU0K,EAAK2Z,EAAUC,EAAQC,GACxC,MAAOxkB,MAAKC,UAAU0K,EAAK8Z,EAAWH,EAAUE,GAAgBD,GAIlE,QAASG,GAAexpB,GACtB,GAAIoV,IAEF/G,MAAOrO,EAAMqO,MACbnO,QAASF,EAAME,QACfuC,KAAMzC,EAAMyC,KAGd,KAAK,GAAI5E,KAAKmC,GACRmD,OAAOC,UAAU4R,eAAe/W,KAAK+B,EAAOnC,KAC9CuX,EAAIvX,GAAKmC,EAAMnC,GAInB,OAAOuX,GAGT,QAASmU,GAAWH,EAAUE,GAC5B,GAAIjb,MACAO,IAWJ,OATqB,OAAjB0a,IACFA,EAAgB,SAAS5e,EAAK1K,GAC5B,MAAIqO,GAAM,KAAOrO,EACR,eAEF,eAAiB4O,EAAK3K,MAAM,EAAGkS,EAAQ9H,EAAOrO,IAAQghB,KAAK,KAAO,MAItE,SAAStW,EAAK1K,GACnB,GAAIqO,EAAMnQ,OAAS,EAAG,CACpB,GAAIurB,GAAUtT,EAAQ9H,EAAOnR,OAC5BusB,EAAUpb,EAAM0X,OAAO0D,EAAU,GAAKpb,EAAMvN,KAAK5D,OACjDusB,EAAU7a,EAAKmX,OAAO0D,EAASC,EAAAA,EAAUhf,GAAOkE,EAAK9N,KAAK4J,IAEtDyL,EAAQ9H,EAAOrO,KAClBA,EAAQspB,EAAcrrB,KAAKf,KAAMwN,EAAK1K,QAGxCqO,GAAMvN,KAAKd,EAGb,OAAmB,OAAZopB,EACHppB,YAAiBlC,OAAQ0rB,EAAexpB,GAASA,EACjDopB,EAASnrB,KAAKf,KAAMwN,EAAK1K,IA5DjCtD,EAAUC,EAAOD,QAAUqI,EAC3BrI,EAAQitB,aAAeJ,OA+DjBlK,IAAI,SAASjhB,EAAQzB,EAAOD,GAwBlC,QAASktB,GAAQC,EAAGC,GAClB,GAAIC,IAAW,MAAJF,IAAmB,MAAJC,GACtBE,GAAOH,GAAK,KAAOC,GAAK,KAAOC,GAAO,GAC1C,OAAQC,IAAO,GAAa,MAAND,EAMxB,QAASE,GAActI,EAAKuI,GAC1B,MAAQvI,IAAOuI,EAAQvI,IAAS,GAAKuI,EAMvC,QAASC,GAAOC,EAAGzsB,EAAGmlB,EAAG+G,EAAGrsB,EAAGH,GAC7B,MAAOusB,GAAQK,EAAcL,EAAQA,EAAQjsB,EAAGysB,GAAIR,EAAQC,EAAGxsB,IAAKG,GAAIslB,GAE1E,QAASuH,GAAM1sB,EAAGmlB,EAAGjB,EAAGyI,EAAGT,EAAGrsB,EAAGH,GAC/B,MAAO8sB,GAAQrH,EAAIjB,GAAOiB,EAAIwH,EAAI3sB,EAAGmlB,EAAG+G,EAAGrsB,EAAGH,GAEhD,QAASktB,GAAM5sB,EAAGmlB,EAAGjB,EAAGyI,EAAGT,EAAGrsB,EAAGH,GAC/B,MAAO8sB,GAAQrH,EAAIwH,EAAMzI,GAAKyI,EAAI3sB,EAAGmlB,EAAG+G,EAAGrsB,EAAGH,GAEhD,QAASmtB,GAAM7sB,EAAGmlB,EAAGjB,EAAGyI,EAAGT,EAAGrsB,EAAGH,GAC/B,MAAO8sB,GAAOrH,EAAIjB,EAAIyI,EAAG3sB,EAAGmlB,EAAG+G,EAAGrsB,EAAGH,GAEvC,QAASotB,GAAM9sB,EAAGmlB,EAAGjB,EAAGyI,EAAGT,EAAGrsB,EAAGH,GAC/B,MAAO8sB,GAAOtI,GAAKiB,GAAKwH,GAAI3sB,EAAGmlB,EAAG+G,EAAGrsB,EAAGH,GAM1C,QAASqtB,GAAQb,EAAGhJ,GAElBgJ,EAAEhJ,GAAO,IAAM,KAASA,EAAM,GAC9BgJ,GAAKhJ,EAAM,KAAQ,GAAM,GAAK,IAAMA,CAEpC,IAAIhjB,GACA8sB,EACAC,EACAC,EACAC,EACAntB,EAAI,WACJmlB,aACAjB,cACAyI,EAAI,SAER,KAAKzsB,EAAI,EAAGA,EAAIgsB,EAAE3rB,OAAQL,GAAK,GAC7B8sB,EAAOhtB,EACPitB,EAAO9H,EACP+H,EAAOhJ,EACPiJ,EAAOR,EAEP3sB,EAAI0sB,EAAM1sB,EAAGmlB,EAAGjB,EAAGyI,EAAGT,EAAEhsB,GAAI,cAC5BysB,EAAID,EAAMC,EAAG3sB,EAAGmlB,EAAGjB,EAAGgI,EAAEhsB,EAAI,GAAI,eAChCgkB,EAAIwI,EAAMxI,EAAGyI,EAAG3sB,EAAGmlB,EAAG+G,EAAEhsB,EAAI,GAAI,GAAI,WACpCilB,EAAIuH,EAAMvH,EAAGjB,EAAGyI,EAAG3sB,EAAGksB,EAAEhsB,EAAI,GAAI,gBAChCF,EAAI0sB,EAAM1sB,EAAGmlB,EAAGjB,EAAGyI,EAAGT,EAAEhsB,EAAI,GAAI,cAChCysB,EAAID,EAAMC,EAAG3sB,EAAGmlB,EAAGjB,EAAGgI,EAAEhsB,EAAI,GAAI,GAAI,YACpCgkB,EAAIwI,EAAMxI,EAAGyI,EAAG3sB,EAAGmlB,EAAG+G,EAAEhsB,EAAI,GAAI,gBAChCilB,EAAIuH,EAAMvH,EAAGjB,EAAGyI,EAAG3sB,EAAGksB,EAAEhsB,EAAI,GAAI,cAChCF,EAAI0sB,EAAM1sB,EAAGmlB,EAAGjB,EAAGyI,EAAGT,EAAEhsB,EAAI,GAAI,EAAG,YACnCysB,EAAID,EAAMC,EAAG3sB,EAAGmlB,EAAGjB,EAAGgI,EAAEhsB,EAAI,GAAI,gBAChCgkB,EAAIwI,EAAMxI,EAAGyI,EAAG3sB,EAAGmlB,EAAG+G,EAAEhsB,EAAI,IAAK,WACjCilB,EAAIuH,EAAMvH,EAAGjB,EAAGyI,EAAG3sB,EAAGksB,EAAEhsB,EAAI,IAAK,gBACjCF,EAAI0sB,EAAM1sB,EAAGmlB,EAAGjB,EAAGyI,EAAGT,EAAEhsB,EAAI,IAAK,EAAG,YACpCysB,EAAID,EAAMC,EAAG3sB,EAAGmlB,EAAGjB,EAAGgI,EAAEhsB,EAAI,IAAK,cACjCgkB,EAAIwI,EAAMxI,EAAGyI,EAAG3sB,EAAGmlB,EAAG+G,EAAEhsB,EAAI,IAAK,gBACjCilB,EAAIuH,EAAMvH,EAAGjB,EAAGyI,EAAG3sB,EAAGksB,EAAEhsB,EAAI,IAAK,GAAI,YAErCF,EAAI4sB,EAAM5sB,EAAGmlB,EAAGjB,EAAGyI,EAAGT,EAAEhsB,EAAI,GAAI,cAChCysB,EAAIC,EAAMD,EAAG3sB,EAAGmlB,EAAGjB,EAAGgI,EAAEhsB,EAAI,GAAI,eAChCgkB,EAAI0I,EAAM1I,EAAGyI,EAAG3sB,EAAGmlB,EAAG+G,EAAEhsB,EAAI,IAAK,GAAI,WACrCilB,EAAIyH,EAAMzH,EAAGjB,EAAGyI,EAAG3sB,EAAGksB,EAAEhsB,GAAI,eAC5BF,EAAI4sB,EAAM5sB,EAAGmlB,EAAGjB,EAAGyI,EAAGT,EAAEhsB,EAAI,GAAI,cAChCysB,EAAIC,EAAMD,EAAG3sB,EAAGmlB,EAAGjB,EAAGgI,EAAEhsB,EAAI,IAAK,EAAG,UACpCgkB,EAAI0I,EAAM1I,EAAGyI,EAAG3sB,EAAGmlB,EAAG+G,EAAEhsB,EAAI,IAAK,eACjCilB,EAAIyH,EAAMzH,EAAGjB,EAAGyI,EAAG3sB,EAAGksB,EAAEhsB,EAAI,GAAI,eAChCF,EAAI4sB,EAAM5sB,EAAGmlB,EAAGjB,EAAGyI,EAAGT,EAAEhsB,EAAI,GAAI,EAAG,WACnCysB,EAAIC,EAAMD,EAAG3sB,EAAGmlB,EAAGjB,EAAGgI,EAAEhsB,EAAI,IAAK,eACjCgkB,EAAI0I,EAAM1I,EAAGyI,EAAG3sB,EAAGmlB,EAAG+G,EAAEhsB,EAAI,GAAI,eAChCilB,EAAIyH,EAAMzH,EAAGjB,EAAGyI,EAAG3sB,EAAGksB,EAAEhsB,EAAI,GAAI,GAAI,YACpCF,EAAI4sB,EAAM5sB,EAAGmlB,EAAGjB,EAAGyI,EAAGT,EAAEhsB,EAAI,IAAK,eACjCysB,EAAIC,EAAMD,EAAG3sB,EAAGmlB,EAAGjB,EAAGgI,EAAEhsB,EAAI,GAAI,aAChCgkB,EAAI0I,EAAM1I,EAAGyI,EAAG3sB,EAAGmlB,EAAG+G,EAAEhsB,EAAI,GAAI,GAAI,YACpCilB,EAAIyH,EAAMzH,EAAGjB,EAAGyI,EAAG3sB,EAAGksB,EAAEhsB,EAAI,IAAK,gBAEjCF,EAAI6sB,EAAM7sB,EAAGmlB,EAAGjB,EAAGyI,EAAGT,EAAEhsB,EAAI,GAAI,WAChCysB,EAAIE,EAAMF,EAAG3sB,EAAGmlB,EAAGjB,EAAGgI,EAAEhsB,EAAI,GAAI,gBAChCgkB,EAAI2I,EAAM3I,EAAGyI,EAAG3sB,EAAGmlB,EAAG+G,EAAEhsB,EAAI,IAAK,GAAI,YACrCilB,EAAI0H,EAAM1H,EAAGjB,EAAGyI,EAAG3sB,EAAGksB,EAAEhsB,EAAI,IAAK,cACjCF,EAAI6sB,EAAM7sB,EAAGmlB,EAAGjB,EAAGyI,EAAGT,EAAEhsB,EAAI,GAAI,eAChCysB,EAAIE,EAAMF,EAAG3sB,EAAGmlB,EAAGjB,EAAGgI,EAAEhsB,EAAI,GAAI,GAAI,YACpCgkB,EAAI2I,EAAM3I,EAAGyI,EAAG3sB,EAAGmlB,EAAG+G,EAAEhsB,EAAI,GAAI,eAChCilB,EAAI0H,EAAM1H,EAAGjB,EAAGyI,EAAG3sB,EAAGksB,EAAEhsB,EAAI,IAAK,gBACjCF,EAAI6sB,EAAM7sB,EAAGmlB,EAAGjB,EAAGyI,EAAGT,EAAEhsB,EAAI,IAAK,EAAG,WACpCysB,EAAIE,EAAMF,EAAG3sB,EAAGmlB,EAAGjB,EAAGgI,EAAEhsB,GAAI,eAC5BgkB,EAAI2I,EAAM3I,EAAGyI,EAAG3sB,EAAGmlB,EAAG+G,EAAEhsB,EAAI,GAAI,eAChCilB,EAAI0H,EAAM1H,EAAGjB,EAAGyI,EAAG3sB,EAAGksB,EAAEhsB,EAAI,GAAI,GAAI,UACpCF,EAAI6sB,EAAM7sB,EAAGmlB,EAAGjB,EAAGyI,EAAGT,EAAEhsB,EAAI,GAAI,cAChCysB,EAAIE,EAAMF,EAAG3sB,EAAGmlB,EAAGjB,EAAGgI,EAAEhsB,EAAI,IAAK,eACjCgkB,EAAI2I,EAAM3I,EAAGyI,EAAG3sB,EAAGmlB,EAAG+G,EAAEhsB,EAAI,IAAK,GAAI,WACrCilB,EAAI0H,EAAM1H,EAAGjB,EAAGyI,EAAG3sB,EAAGksB,EAAEhsB,EAAI,GAAI,eAEhCF,EAAI8sB,EAAM9sB,EAAGmlB,EAAGjB,EAAGyI,EAAGT,EAAEhsB,GAAI,cAC5BysB,EAAIG,EAAMH,EAAG3sB,EAAGmlB,EAAGjB,EAAGgI,EAAEhsB,EAAI,GAAI,GAAI,YACpCgkB,EAAI4I,EAAM5I,EAAGyI,EAAG3sB,EAAGmlB,EAAG+G,EAAEhsB,EAAI,IAAK,gBACjCilB,EAAI2H,EAAM3H,EAAGjB,EAAGyI,EAAG3sB,EAAGksB,EAAEhsB,EAAI,GAAI,cAChCF,EAAI8sB,EAAM9sB,EAAGmlB,EAAGjB,EAAGyI,EAAGT,EAAEhsB,EAAI,IAAK,EAAG,YACpCysB,EAAIG,EAAMH,EAAG3sB,EAAGmlB,EAAGjB,EAAGgI,EAAEhsB,EAAI,GAAI,gBAChCgkB,EAAI4I,EAAM5I,EAAGyI,EAAG3sB,EAAGmlB,EAAG+G,EAAEhsB,EAAI,IAAK,aACjCilB,EAAI2H,EAAM3H,EAAGjB,EAAGyI,EAAG3sB,EAAGksB,EAAEhsB,EAAI,GAAI,gBAChCF,EAAI8sB,EAAM9sB,EAAGmlB,EAAGjB,EAAGyI,EAAGT,EAAEhsB,EAAI,GAAI,EAAG,YACnCysB,EAAIG,EAAMH,EAAG3sB,EAAGmlB,EAAGjB,EAAGgI,EAAEhsB,EAAI,IAAK,cACjCgkB,EAAI4I,EAAM5I,EAAGyI,EAAG3sB,EAAGmlB,EAAG+G,EAAEhsB,EAAI,GAAI,gBAChCilB,EAAI2H,EAAM3H,EAAGjB,EAAGyI,EAAG3sB,EAAGksB,EAAEhsB,EAAI,IAAK,GAAI,YACrCF,EAAI8sB,EAAM9sB,EAAGmlB,EAAGjB,EAAGyI,EAAGT,EAAEhsB,EAAI,GAAI,cAChCysB,EAAIG,EAAMH,EAAG3sB,EAAGmlB,EAAGjB,EAAGgI,EAAEhsB,EAAI,IAAK,gBACjCgkB,EAAI4I,EAAM5I,EAAGyI,EAAG3sB,EAAGmlB,EAAG+G,EAAEhsB,EAAI,GAAI,GAAI,WACpCilB,EAAI2H,EAAM3H,EAAGjB,EAAGyI,EAAG3sB,EAAGksB,EAAEhsB,EAAI,GAAI,eAEhCF,EAAIisB,EAAQjsB,EAAGgtB,GACf7H,EAAI8G,EAAQ9G,EAAG8H,GACf/I,EAAI+H,EAAQ/H,EAAGgJ,GACfP,EAAIV,EAAQU,EAAGQ,EAEjB,QAAQntB,EAAGmlB,EAAGjB,EAAGyI,GAMnB,QAASS,GAAUxH,GACjB,GAAI1lB,GACA4lB,EAAS,GACTuH,EAA0B,GAAfzH,EAAMrlB,MACrB,KAAKL,EAAI,EAAGA,EAAImtB,EAAUntB,GAAK,EAC7B4lB,GAAUC,OAAOuH,aAAc1H,EAAM1lB,GAAK,KAAQA,EAAI,GAAO,IAE/D,OAAO4lB,GAOT,QAASyH,GAAU3H,GACjB,GAAI1lB,GACA4lB,IAEJ,KADAA,GAAQF,EAAMrlB,QAAU,GAAK,GAAK0O,OAC7B/O,EAAI,EAAGA,EAAI4lB,EAAOvlB,OAAQL,GAAK,EAClC4lB,EAAO5lB,GAAK,CAEd,IAAIstB,GAAyB,EAAf5H,EAAMrlB,MACpB,KAAKL,EAAI,EAAGA,EAAIstB,EAASttB,GAAK,EAC5B4lB,EAAO5lB,GAAK,KAAiC,IAA1B0lB,EAAM6H,WAAWvtB,EAAI,KAAeA,EAAI,EAE7D,OAAO4lB,GAMT,QAAS4H,GAAQ7tB,GACf,MAAOutB,GAAUL,EAAQQ,EAAU1tB,GAAe,EAAXA,EAAEU,SAM3C,QAASotB,GAAY5gB,EAAKjL,GACxB,GAAI5B,GAIAghB,EAHA0M,EAAOL,EAAUxgB,GACjB8gB,KACAC,IAMJ,KAJAD,EAAK,IAAMC,EAAK,IAAM7e,OAClB2e,EAAKrtB,OAAS,KAChBqtB,EAAOb,EAAQa,EAAmB,EAAb7gB,EAAIxM,SAEtBL,EAAI,EAAGA,EAAI,GAAIA,GAAK,EACvB2tB,EAAK3tB,GAAe,UAAV0tB,EAAK1tB,GACf4tB,EAAK5tB,GAAe,WAAV0tB,EAAK1tB,EAGjB,OADAghB,GAAO6L,EAAQc,EAAK/S,OAAOyS,EAAUzrB,IAAQ,IAAoB,EAAdA,EAAKvB,QACjD6sB,EAAUL,EAAQe,EAAKhT,OAAOoG,GAAO,MAM9C,QAAS6M,GAASnI,GAChB,GAEIsG,GACAhsB,EAHA8tB,EAAS,mBACTlI,EAAS,EAGb,KAAK5lB,EAAI,EAAGA,EAAI0lB,EAAMrlB,OAAQL,GAAK,EACjCgsB,EAAItG,EAAM6H,WAAWvtB,GACrB4lB,GAAUkI,EAAOzD,OAAQ2B,IAAM,EAAK,IAAQ8B,EAAOzD,OAAW,GAAJ2B,EAE5D,OAAOpG,GAMT,QAASmI,GAAarI,GACpB,MAAOsI,UAASna,mBAAmB6R,IAMrC,QAASuI,GAAOtuB,GACd,MAAO6tB,GAAQO,EAAapuB,IAE9B,QAASuuB,GAAOvuB,GACd,MAAOkuB,GAASI,EAAOtuB,IAEzB,QAASwuB,GAAWjH,EAAGuF,GACrB,MAAOgB,GAAYM,EAAa7G,GAAI6G,EAAatB,IAEnD,QAAS2B,GAAWlH,EAAGuF,GACrB,MAAOoB,GAASM,EAAWjH,EAAGuF,IAGhC,QAASliB,GAAI8jB,EAAQxhB,EAAKyhB,GACxB,MAAKzhB,GAMAyhB,EAGEH,EAAWthB,EAAKwhB,GAFdD,EAAWvhB,EAAKwhB,GANlBC,EAGEL,EAAOI,GAFLH,EAAOG,GAUpBvvB,EAAOD,QAAU0L,YAEN,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI","file":"raven.min.js"} \ No newline at end of file diff --git a/dist/angular,console,ember,require/raven.js b/dist/angular,console,ember,require/raven.js index d7dba9a33e09..a55d0c68f4e2 100644 --- a/dist/angular,console,ember,require/raven.js +++ b/dist/angular,console,ember,require/raven.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.25.0 (80dffad) | github.com/getsentry/raven-js */ +/*! Raven.js 3.25.1 (b6f3c7a) | github.com/getsentry/raven-js */ /* * Includes TraceKit @@ -369,7 +369,7 @@ Raven.prototype = { // webpack (using a build step causes webpack #1617). Grunt verifies that // this value matches package.json during build. // See: https://github.com/getsentry/raven-js/issues/465 - VERSION: '3.25.0', + VERSION: '3.25.1', debug: false, @@ -1678,8 +1678,8 @@ Raven.prototype = { var hasPushAndReplaceState = !isChromePackagedApp && _window.history && - history.pushState && - history.replaceState; + _window.history.pushState && + _window.history.replaceState; if (autoBreadcrumbs.location && hasPushAndReplaceState) { // TODO: remove onpopstate handler on uninstall() var oldOnPopState = _window.onpopstate; @@ -1708,8 +1708,8 @@ Raven.prototype = { }; }; - fill(history, 'pushState', historyReplacementFunction, wrappedBuiltIns); - fill(history, 'replaceState', historyReplacementFunction, wrappedBuiltIns); + fill(_window.history, 'pushState', historyReplacementFunction, wrappedBuiltIns); + fill(_window.history, 'replaceState', historyReplacementFunction, wrappedBuiltIns); } if (autoBreadcrumbs.console && 'console' in _window && console.log) { @@ -1999,7 +1999,7 @@ Raven.prototype = { if (this._hasNavigator && _navigator.userAgent) { httpData.headers = { - 'User-Agent': navigator.userAgent + 'User-Agent': _navigator.userAgent }; } @@ -3174,6 +3174,16 @@ function getLocationHref() { function getLocationOrigin() { if (typeof document === 'undefined' || document.location == null) return ''; + + // Oh dear IE10... + if (!document.location.origin) { + document.location.origin = + document.location.protocol + + '//' + + document.location.hostname + + (document.location.port ? ':' + document.location.port : ''); + } + return document.location.origin; } diff --git a/dist/angular,console,ember,require/raven.min.js b/dist/angular,console,ember,require/raven.min.js index ef1078adb106..4b3ca7cb11e4 100644 --- a/dist/angular,console,ember,require/raven.min.js +++ b/dist/angular,console,ember,require/raven.min.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.25.0 (80dffad) | github.com/getsentry/raven-js */ -!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.Raven=a()}}(function(){var a;return function b(a,c,d){function e(g,h){if(!c[g]){if(!a[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};a[g][0].call(k.exports,function(b){var c=a[g][1][b];return e(c?c:b)},k,k.exports,b,a,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;gthis.l.maxBreadcrumbs&&this.v.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.s.push([a,b]),this.o&&this.G(),this},setUserContext:function(a){return this.k.user=a,this},setExtraContext:function(a){return this.$("extra",a),this},setTagsContext:function(a){return this.$("tags",a),this},clearContext:function(){return this.k={},this},getContext:function(){return JSON.parse(h(this.k))},setEnvironment:function(a){return this.l.environment=a,this},setRelease:function(a){return this.l.release=a,this},setDataCallback:function(a){var b=this.l.dataCallback;return this.l.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.l.breadcrumbCallback;return this.l.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.l.shouldSendCallback;return this.l.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.l.transport=a,this},lastException:function(){return this.e},lastEventId:function(){return this.g},isSetup:function(){return!!this.b&&(!!this.h||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.A("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=R.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(S){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.I;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.k.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.K(this.H(c)),h=S.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(S.head||S.body).appendChild(h)}},M:function(){var a=this;this.n+=1,setTimeout(function(){a.n-=1})},_:function(a,b){var c,d;if(this.c){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),S.createEvent?(c=S.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=S.createEventObject(),c.eventType=a);for(d in b)A(b,d)&&(c[d]=b[d]);if(S.createEvent)S.dispatchEvent(c);else try{S.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},aa:function(a){var b=this;return function(c){if(b.ba=null,b.w!==c){b.w=c;var d;try{d=E(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ca:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.ba;g||a.aa("input")(c),clearTimeout(g),a.ba=setTimeout(function(){a.ba=null},b)}}},da:function(a,b){var c=H(this.x.href),d=H(b),e=H(a);this.y=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},D:function(){var a=this;a.ea=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.N?a.ea.apply(this.P,arguments):a.ea.apply(this,arguments)}},R:function(){this.ea&&(Function.prototype.toString=this.ea)},E:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.da(b.y,c+""),a.apply(this,arguments)}};I(history,"pushState",j,d),I(history,"replaceState",j,d)}if(c.console&&"console"in R&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};w(["debug","info","warn","error","log"],function(a,b){O(console,b,k)})}},S:function(){for(var a;this.u.length;){a=this.u.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},T:function(){for(var a in this.r)this.q[a]=this.r[a]},G:function(){var a=this;w(this.s,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},H:function(a){var b=Q.exec(a),c={},d=7;try{for(;d--;)c[P[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.l.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},K:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},B:function(){this.n||this.W.apply(this,arguments)},W:function(a,b){var c=this.Y(a,b);this._("handle",{stackInfo:a,options:b}),this.ga(a.name,a.message,a.url,a.lineno,c,b)},Y:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(w(a.stack,function(b,e){var f=c.ha(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.v,0)}),this.k.user&&(a.user=this.k.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),a=this.qa(a),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||v(a[b]))&&delete a[b]}),s(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!v(a)&&(!s(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.na()?void this.A("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function F(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&l(b))for(c=b.split(/\s+/),f=0;fc?Q(a,b-1):d}function R(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?X:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function S(a,b){function c(a){return m(a)?a.map(function(a){return c(a)}):k(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!m(b)||m(b)&&0===b.length)return a;var d,e=A(b),f="********";try{d=JSON.parse(T(a))}catch(g){return a}return c(d)}var T=a(11),U="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},V=3,W=51200,X=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isDOMError:g,isDOMException:h,isUndefined:i,isFunction:j,isPlainObject:k,isString:l,isArray:m,isEmptyObject:n,supportsErrorEvent:o,supportsDOMError:p,supportsDOMException:q,supportsFetch:r,supportsReferrerPolicy:s,supportsPromiseRejectionEvent:t,wrappedCallback:u,each:v,objectMerge:w,truncate:y,objectFrozen:x,hasKey:z,joinRegExp:A,urlencode:B,uuid4:D,htmlTreeAsString:E,htmlElementAsString:F,isSameException:I,isSameStacktrace:J,parseUrl:C,fill:K,safeJoin:L,serializeException:Q,serializeKeysForMessage:R,sanitize:S}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{11:11}],10:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}function e(){return"undefined"==typeof document||null==document.location?"":document.location.origin}var f=a(9),g={collectWindowErrors:!0,debug:!1},h="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},i=[].slice,j="?",k=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;g.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function e(a,b){var c=null;if(!b||g.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(i.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,h,i){var l=null,m=f.isErrorEvent(i)?i.error:i,n=f.isErrorEvent(a)?a.message:a;if(v)g.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&f.isError(m))l=g.computeStackTrace(m),e(l,!0);else{var p,r={url:b,line:c,column:h},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(k);p&&(s=p[1],n=p[2])}r.func=j,l={name:s,message:n,url:d(),stack:[r]},e(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=h.onerror,h.onerror=l,r=!0)}function n(){r&&(h.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,e.apply(null,[a,!1].concat(b))}function p(a,b){var c=i.call(arguments,1);if(v){if(u===a)return;o()}var d=g.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),g.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,f,g=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,h=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,i=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,k=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,l=/\((\S*)(?::(\d+))(?::(\d+))\)/,m=a.stack.split("\n"),n=[],o=(/^(.*) is undefined$/.exec(a.message),0),p=m.length;o eval")>-1;r&&(b=k.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==o||c[5]||"undefined"==typeof a.columnNumber||(n[0].column=a.columnNumber+1),f={url:c[3],func:c[1]||j,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}if(!f.func&&f.line&&(f.func=j),f.url&&"blob:"===f.url.substr(0,5)){var s=new XMLHttpRequest;if(s.open("GET",f.url,!1),s.send(null), -200===s.status){var t=s.responseText||"";t=t.slice(-300);var u=t.match(/\/\/# sourceMappingURL=(.*)$/);if(u){var v=u[1];"~"===v.charAt(0)&&(v=e()+v.slice(1)),f.url=v.slice(0,-4)}}}n.push(f)}return n.length?{name:a.name,message:a.message,url:d(),stack:n}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=j),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,e){for(var h,i,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==f&&o!==g.report){if(i={url:null,func:j,line:null,column:null},o.name?i.func=o.name:(h=k.exec(o.toString()))&&(i.func=h[1]),"undefined"==typeof i.func)try{i.func=h.input.substring(0,h.input.indexOf("{"))}catch(p){}m[""+o]?n=!0:m[""+o]=!0,l.push(i)}e&&l.splice(0,e);var q={name:a.name,message:a.message,url:d(),stack:l};return b(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),q}function f(b,e){var f=null;e=null==e?0:+e;try{if(f=a(b))return f}catch(h){if(g.debug)throw h}try{if(f=c(b,e+1))return f}catch(h){if(g.debug)throw h}return{name:b.name,message:b.message,url:d()}}return f.augmentStackTraceWithInitialElement=b,f.computeStackTraceFromStackProp=a,f}(),b.exports=g}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{9:9}],11:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}],12:[function(a,b,c){function d(a,b){var c=(65535&a)+(65535&b),d=(a>>16)+(b>>16)+(c>>16);return d<<16|65535&c}function e(a,b){return a<>>32-b}function f(a,b,c,f,g,h){return d(e(d(d(b,a),d(f,h)),g),c)}function g(a,b,c,d,e,g,h){return f(b&c|~b&d,a,b,e,g,h)}function h(a,b,c,d,e,g,h){return f(b&d|c&~d,a,b,e,g,h)}function i(a,b,c,d,e,g,h){return f(b^c^d,a,b,e,g,h)}function j(a,b,c,d,e,g,h){return f(c^(b|~d),a,b,e,g,h)}function k(a,b){a[b>>5]|=128<>>9<<4)+14]=b;var c,e,f,k,l,m=1732584193,n=-271733879,o=-1732584194,p=271733878;for(c=0;c>5]>>>b%32&255);return c}function m(a){var b,c=[];for(c[(a.length>>2)-1]=void 0,b=0;b>5]|=(255&a.charCodeAt(b/8))<16&&(e=k(e,8*a.length)),c=0;c<16;c+=1)f[c]=909522486^e[c],g[c]=1549556828^e[c];return d=k(f.concat(m(b)),512+8*b.length),l(k(g.concat(d),640))}function p(a){var b,c,d="0123456789abcdef",e="";for(c=0;c>>4&15)+d.charAt(15&b);return e}function q(a){return unescape(encodeURIComponent(a))}function r(a){return n(q(a))}function s(a){return p(r(a))}function t(a,b){return o(q(a),q(b))}function u(a,b){return p(t(a,b))}function v(a,b,c){return b?c?t(b,a):u(b,a):c?r(a):s(a)}b.exports=v},{}]},{},[8,1,2,3,4])(8)}); +/*! Raven.js 3.25.1 (b6f3c7a) | github.com/getsentry/raven-js */ +!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.Raven=a()}}(function(){var a;return function b(a,c,d){function e(g,h){if(!c[g]){if(!a[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};a[g][0].call(k.exports,function(b){var c=a[g][1][b];return e(c?c:b)},k,k.exports,b,a,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;gthis.l.maxBreadcrumbs&&this.v.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.s.push([a,b]),this.o&&this.G(),this},setUserContext:function(a){return this.k.user=a,this},setExtraContext:function(a){return this.$("extra",a),this},setTagsContext:function(a){return this.$("tags",a),this},clearContext:function(){return this.k={},this},getContext:function(){return JSON.parse(h(this.k))},setEnvironment:function(a){return this.l.environment=a,this},setRelease:function(a){return this.l.release=a,this},setDataCallback:function(a){var b=this.l.dataCallback;return this.l.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.l.breadcrumbCallback;return this.l.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.l.shouldSendCallback;return this.l.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.l.transport=a,this},lastException:function(){return this.e},lastEventId:function(){return this.g},isSetup:function(){return!!this.b&&(!!this.h||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.A("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=R.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(S){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.I;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.k.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.K(this.H(c)),h=S.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(S.head||S.body).appendChild(h)}},M:function(){var a=this;this.n+=1,setTimeout(function(){a.n-=1})},_:function(a,b){var c,d;if(this.c){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),S.createEvent?(c=S.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=S.createEventObject(),c.eventType=a);for(d in b)A(b,d)&&(c[d]=b[d]);if(S.createEvent)S.dispatchEvent(c);else try{S.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},aa:function(a){var b=this;return function(c){if(b.ba=null,b.w!==c){b.w=c;var d;try{d=E(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ca:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.ba;g||a.aa("input")(c),clearTimeout(g),a.ba=setTimeout(function(){a.ba=null},b)}}},da:function(a,b){var c=H(this.x.href),d=H(b),e=H(a);this.y=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},D:function(){var a=this;a.ea=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.N?a.ea.apply(this.P,arguments):a.ea.apply(this,arguments)}},R:function(){this.ea&&(Function.prototype.toString=this.ea)},E:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.da(b.y,c+""),a.apply(this,arguments)}};I(R.history,"pushState",j,d),I(R.history,"replaceState",j,d)}if(c.console&&"console"in R&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};w(["debug","info","warn","error","log"],function(a,b){O(console,b,k)})}},S:function(){for(var a;this.u.length;){a=this.u.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},T:function(){for(var a in this.r)this.q[a]=this.r[a]},G:function(){var a=this;w(this.s,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},H:function(a){var b=Q.exec(a),c={},d=7;try{for(;d--;)c[P[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.l.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},K:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},B:function(){this.n||this.W.apply(this,arguments)},W:function(a,b){var c=this.Y(a,b);this._("handle",{stackInfo:a,options:b}),this.ga(a.name,a.message,a.url,a.lineno,c,b)},Y:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(w(a.stack,function(b,e){var f=c.ha(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.v,0)}),this.k.user&&(a.user=this.k.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),a=this.qa(a),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||v(a[b]))&&delete a[b]}),s(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!v(a)&&(!s(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.na()?void this.A("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function F(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&l(b))for(c=b.split(/\s+/),f=0;fc?Q(a,b-1):d}function R(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?X:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function S(a,b){function c(a){return m(a)?a.map(function(a){return c(a)}):k(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!m(b)||m(b)&&0===b.length)return a;var d,e=A(b),f="********";try{d=JSON.parse(T(a))}catch(g){return a}return c(d)}var T=a(11),U="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},V=3,W=51200,X=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isDOMError:g,isDOMException:h,isUndefined:i,isFunction:j,isPlainObject:k,isString:l,isArray:m,isEmptyObject:n,supportsErrorEvent:o,supportsDOMError:p,supportsDOMException:q,supportsFetch:r,supportsReferrerPolicy:s,supportsPromiseRejectionEvent:t,wrappedCallback:u,each:v,objectMerge:w,truncate:y,objectFrozen:x,hasKey:z,joinRegExp:A,urlencode:B,uuid4:D,htmlTreeAsString:E,htmlElementAsString:F,isSameException:I,isSameStacktrace:J,parseUrl:C,fill:K,safeJoin:L,serializeException:Q,serializeKeysForMessage:R,sanitize:S}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{11:11}],10:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}function e(){return"undefined"==typeof document||null==document.location?"":(document.location.origin||(document.location.origin=document.location.protocol+"//"+document.location.hostname+(document.location.port?":"+document.location.port:"")),document.location.origin)}var f=a(9),g={collectWindowErrors:!0,debug:!1},h="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},i=[].slice,j="?",k=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;g.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function e(a,b){var c=null;if(!b||g.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(i.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,h,i){var l=null,m=f.isErrorEvent(i)?i.error:i,n=f.isErrorEvent(a)?a.message:a;if(v)g.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&f.isError(m))l=g.computeStackTrace(m),e(l,!0);else{var p,r={url:b,line:c,column:h},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(k);p&&(s=p[1],n=p[2])}r.func=j,l={name:s,message:n,url:d(),stack:[r]},e(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=h.onerror,h.onerror=l,r=!0)}function n(){r&&(h.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,e.apply(null,[a,!1].concat(b))}function p(a,b){var c=i.call(arguments,1);if(v){if(u===a)return;o()}var d=g.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),g.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,f,g=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,h=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,i=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,k=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,l=/\((\S*)(?::(\d+))(?::(\d+))\)/,m=a.stack.split("\n"),n=[],o=(/^(.*) is undefined$/.exec(a.message),0),p=m.length;o eval")>-1;r&&(b=k.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==o||c[5]||"undefined"==typeof a.columnNumber||(n[0].column=a.columnNumber+1),f={url:c[3],func:c[1]||j,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null, +column:c[5]?+c[5]:null}}if(!f.func&&f.line&&(f.func=j),f.url&&"blob:"===f.url.substr(0,5)){var s=new XMLHttpRequest;if(s.open("GET",f.url,!1),s.send(null),200===s.status){var t=s.responseText||"";t=t.slice(-300);var u=t.match(/\/\/# sourceMappingURL=(.*)$/);if(u){var v=u[1];"~"===v.charAt(0)&&(v=e()+v.slice(1)),f.url=v.slice(0,-4)}}}n.push(f)}return n.length?{name:a.name,message:a.message,url:d(),stack:n}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=j),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,e){for(var h,i,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==f&&o!==g.report){if(i={url:null,func:j,line:null,column:null},o.name?i.func=o.name:(h=k.exec(o.toString()))&&(i.func=h[1]),"undefined"==typeof i.func)try{i.func=h.input.substring(0,h.input.indexOf("{"))}catch(p){}m[""+o]?n=!0:m[""+o]=!0,l.push(i)}e&&l.splice(0,e);var q={name:a.name,message:a.message,url:d(),stack:l};return b(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),q}function f(b,e){var f=null;e=null==e?0:+e;try{if(f=a(b))return f}catch(h){if(g.debug)throw h}try{if(f=c(b,e+1))return f}catch(h){if(g.debug)throw h}return{name:b.name,message:b.message,url:d()}}return f.augmentStackTraceWithInitialElement=b,f.computeStackTraceFromStackProp=a,f}(),b.exports=g}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{9:9}],11:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}],12:[function(a,b,c){function d(a,b){var c=(65535&a)+(65535&b),d=(a>>16)+(b>>16)+(c>>16);return d<<16|65535&c}function e(a,b){return a<>>32-b}function f(a,b,c,f,g,h){return d(e(d(d(b,a),d(f,h)),g),c)}function g(a,b,c,d,e,g,h){return f(b&c|~b&d,a,b,e,g,h)}function h(a,b,c,d,e,g,h){return f(b&d|c&~d,a,b,e,g,h)}function i(a,b,c,d,e,g,h){return f(b^c^d,a,b,e,g,h)}function j(a,b,c,d,e,g,h){return f(c^(b|~d),a,b,e,g,h)}function k(a,b){a[b>>5]|=128<>>9<<4)+14]=b;var c,e,f,k,l,m=1732584193,n=-271733879,o=-1732584194,p=271733878;for(c=0;c>5]>>>b%32&255);return c}function m(a){var b,c=[];for(c[(a.length>>2)-1]=void 0,b=0;b>5]|=(255&a.charCodeAt(b/8))<16&&(e=k(e,8*a.length)),c=0;c<16;c+=1)f[c]=909522486^e[c],g[c]=1549556828^e[c];return d=k(f.concat(m(b)),512+8*b.length),l(k(g.concat(d),640))}function p(a){var b,c,d="0123456789abcdef",e="";for(c=0;c>>4&15)+d.charAt(15&b);return e}function q(a){return unescape(encodeURIComponent(a))}function r(a){return n(q(a))}function s(a){return p(r(a))}function t(a,b){return o(q(a),q(b))}function u(a,b){return p(t(a,b))}function v(a,b,c){return b?c?t(b,a):u(b,a):c?r(a):s(a)}b.exports=v},{}]},{},[8,1,2,3,4])(8)}); //# sourceMappingURL=raven.min.js.map \ No newline at end of file diff --git a/dist/angular,console,ember,require/raven.min.js.map b/dist/angular,console,ember,require/raven.min.js.map index 947a4cb262ba..cdb2e83a9a5a 100644 --- a/dist/angular,console,ember,require/raven.min.js.map +++ b/dist/angular,console,ember,require/raven.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","angularPlugin","angular","RavenProvider","$get","$window","ExceptionHandlerProvider","$provide","decorator","exceptionHandler","R","$delegate","ex","cause","captureException","extra","moduleName","provider","config","setDataCallback","wrappedCallback","data","_normalizeData","angularPattern","exception","values","matches","exec","value","type","message","angularDocs","substr","addPlugin","8","9","2","consolePlugin","console","pluginOptions","logLevels","levels","push","callback","msg","captureMessage","level","pop","wrapConsoleMethod","wrapMethod","6","3","emberPlugin","Ember","_oldOnError","onerror","error","RSVP","on","reason","context","4","requirePlugin","wrap","deep","5","RavenConfigError","name","prototype","constructor","utils","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","safeJoin","logger","Function","apply","7","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","sanitizeKeys","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isErrorEvent","isDOMError","isDOMException","isError","isObject","isPlainObject","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","sanitize","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","dsn","options","_logDebug","globalOptions","key","setDSN","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","toString","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","func","undefined","_before","wrapped","_ignoreNextOnError","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","U","event","unhandledPromiseRejection","C","_promiseRejectionHandler","bind","addEventListener","Q","removeEventListener","trimHeadFrames","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","V","currentOptions","exKeys","Object","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","M","setTimeout","_","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","aa","evtName","_keypressTimeout","target","category","ca","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","da","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","D","_originalFunctionToString","E","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","F","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","S","builtin","T","G","installer","concat","H","str","m","allowSecretKey","K","port","B","W","stackInfo","_triggerEvent","_processException","lineno","Y","frame","_normalizeFrame","in_app","ha","stackInfoUrl","normalized","filename","line","colno","column","function","ga","prefixedMessage","culprit","ia","request","Referer","breadcrumbs","_trimBreadcrumbs","ja","urlProp","urlProps","ka","httpData","userAgent","User-Agent","referrer","z","_backoffDuration","_backoffStart","na","oa","current","last","pa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Z","baseData","project","platform","_getHttpData","serverName","server_name","_sanitizeData","forEach","random","_sendProcessedPayload","qa","sa","ra","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","ta","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","open","setRequestHeader","send","ua","hash","evaluated","A","$","setUser","setReleaseContext","10","11","12","RavenConstructor","_Raven","noConflict","Client","what","supportsErrorEvent","ErrorEvent","supportsDOMError","DOMError","supportsDOMException","DOMException","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","sanitizeMask","safeInput","o_O","getLocationHref","getLocationOrigin","origin","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","responseText","sourceMaps","sourceMapAddress","charAt","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","y","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","string","raw"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file +{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","angularPlugin","angular","RavenProvider","$get","$window","ExceptionHandlerProvider","$provide","decorator","exceptionHandler","R","$delegate","ex","cause","captureException","extra","moduleName","provider","config","setDataCallback","wrappedCallback","data","_normalizeData","angularPattern","exception","values","matches","exec","value","type","message","angularDocs","substr","addPlugin","8","9","2","consolePlugin","console","pluginOptions","logLevels","levels","push","callback","msg","captureMessage","level","pop","wrapConsoleMethod","wrapMethod","6","3","emberPlugin","Ember","_oldOnError","onerror","error","RSVP","on","reason","context","4","requirePlugin","wrap","deep","5","RavenConfigError","name","prototype","constructor","utils","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","safeJoin","logger","Function","apply","7","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","sanitizeKeys","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isErrorEvent","isDOMError","isDOMException","isError","isObject","isPlainObject","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","sanitize","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","dsn","options","_logDebug","globalOptions","key","setDSN","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","toString","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","func","undefined","_before","wrapped","_ignoreNextOnError","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","U","event","unhandledPromiseRejection","C","_promiseRejectionHandler","bind","addEventListener","Q","removeEventListener","trimHeadFrames","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","V","currentOptions","exKeys","Object","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","M","setTimeout","_","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","aa","evtName","_keypressTimeout","target","category","ca","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","da","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","D","_originalFunctionToString","E","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","F","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","S","builtin","T","G","installer","concat","H","str","m","allowSecretKey","K","port","B","W","stackInfo","_triggerEvent","_processException","lineno","Y","frame","_normalizeFrame","in_app","ha","stackInfoUrl","normalized","filename","line","colno","column","function","ga","prefixedMessage","culprit","ia","request","Referer","breadcrumbs","_trimBreadcrumbs","ja","urlProp","urlProps","ka","httpData","userAgent","User-Agent","referrer","z","_backoffDuration","_backoffStart","na","oa","current","last","pa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Z","baseData","project","platform","_getHttpData","serverName","server_name","_sanitizeData","forEach","random","_sendProcessedPayload","qa","sa","ra","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","ta","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","open","setRequestHeader","send","ua","hash","evaluated","A","$","setUser","setReleaseContext","10","11","12","RavenConstructor","_Raven","noConflict","Client","what","supportsErrorEvent","ErrorEvent","supportsDOMError","DOMError","supportsDOMException","DOMException","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","sanitizeMask","safeInput","o_O","getLocationHref","getLocationOrigin","origin","hostname","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","responseText","sourceMaps","sourceMapAddress","charAt","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","y","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","string","raw"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file diff --git a/dist/angular,console,ember,vue/raven.js b/dist/angular,console,ember,vue/raven.js index d84a9d9117ad..f757920c84cd 100644 --- a/dist/angular,console,ember,vue/raven.js +++ b/dist/angular,console,ember,vue/raven.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.25.0 (80dffad) | github.com/getsentry/raven-js */ +/*! Raven.js 3.25.1 (b6f3c7a) | github.com/getsentry/raven-js */ /* * Includes TraceKit @@ -402,7 +402,7 @@ Raven.prototype = { // webpack (using a build step causes webpack #1617). Grunt verifies that // this value matches package.json during build. // See: https://github.com/getsentry/raven-js/issues/465 - VERSION: '3.25.0', + VERSION: '3.25.1', debug: false, @@ -1711,8 +1711,8 @@ Raven.prototype = { var hasPushAndReplaceState = !isChromePackagedApp && _window.history && - history.pushState && - history.replaceState; + _window.history.pushState && + _window.history.replaceState; if (autoBreadcrumbs.location && hasPushAndReplaceState) { // TODO: remove onpopstate handler on uninstall() var oldOnPopState = _window.onpopstate; @@ -1741,8 +1741,8 @@ Raven.prototype = { }; }; - fill(history, 'pushState', historyReplacementFunction, wrappedBuiltIns); - fill(history, 'replaceState', historyReplacementFunction, wrappedBuiltIns); + fill(_window.history, 'pushState', historyReplacementFunction, wrappedBuiltIns); + fill(_window.history, 'replaceState', historyReplacementFunction, wrappedBuiltIns); } if (autoBreadcrumbs.console && 'console' in _window && console.log) { @@ -2032,7 +2032,7 @@ Raven.prototype = { if (this._hasNavigator && _navigator.userAgent) { httpData.headers = { - 'User-Agent': navigator.userAgent + 'User-Agent': _navigator.userAgent }; } @@ -3207,6 +3207,16 @@ function getLocationHref() { function getLocationOrigin() { if (typeof document === 'undefined' || document.location == null) return ''; + + // Oh dear IE10... + if (!document.location.origin) { + document.location.origin = + document.location.protocol + + '//' + + document.location.hostname + + (document.location.port ? ':' + document.location.port : ''); + } + return document.location.origin; } diff --git a/dist/angular,console,ember,vue/raven.min.js b/dist/angular,console,ember,vue/raven.min.js index 22d468c975d6..1e7dd6df2878 100644 --- a/dist/angular,console,ember,vue/raven.min.js +++ b/dist/angular,console,ember,vue/raven.min.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.25.0 (80dffad) | github.com/getsentry/raven-js */ -!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.Raven=a()}}(function(){return function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};b[g][0].call(k.exports,function(a){var c=b[g][1][a];return e(c?c:a)},k,k.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;g":"anonymous component")+(a._isVue&&a.$options.__file?" at "+a.$options.__file:"")}function e(a,b){if(b=b||window.Vue,b&&b.config){var c=b.config.errorHandler;b.config.errorHandler=function(b,e,f){var g={};"[object Object]"===Object.prototype.toString.call(e)&&(g.componentName=d(e),g.propsData=e.$options.propsData),"undefined"!=typeof f&&(g.lifecycleHook=f),a.captureException(b,{extra:g}),"function"==typeof c&&c.call(this,b,e,f)}}}b.exports=e,a(8).addPlugin(b.exports)},{8:8}],5:[function(a,b,c){function d(a){this.name="RavenConfigError",this.message=a}d.prototype=new Error,d.prototype.constructor=d,b.exports=d},{}],6:[function(a,b,c){var d=a(9),e=function(a,b,c){var e=a[b],f=a;if(b in a){var g="warn"===b?"warning":b;a[b]=function(){var a=[].slice.call(arguments),h=d.safeJoin(a," "),i={level:g,logger:"console",extra:{arguments:a}};"assert"===b?a[0]===!1&&(h="Assertion failed: "+(d.safeJoin(a.slice(1)," ")||"console.assert"),i.extra.arguments=a.slice(1),c&&c(h,i)):c&&c(h,i),e&&Function.prototype.apply.call(e,f,a)}}};b.exports={wrapMethod:e}},{9:9}],7:[function(a,b,c){(function(c){function d(){return+new Date}function e(a,b){return s(b)?function(c){return b(c,a)}:b}function f(){this.b=!("object"!=typeof JSON||!JSON.stringify),this.c=!r(S),this.d=!r(T),this.e=null,this.f=null,this.g=null,this.h=null,this.i=null,this.j=null,this.k={},this.l={release:R.SENTRY_RELEASE&&R.SENTRY_RELEASE.id,logger:"javascript",ignoreErrors:[],ignoreUrls:[],whitelistUrls:[],includePaths:[],headers:null,collectWindowErrors:!0,captureUnhandledRejections:!0,maxMessageLength:0,maxUrlLength:250,stackTraceLimit:50,autoBreadcrumbs:!0,instrument:!0,sampleRate:1,sanitizeKeys:[]},this.m={method:"POST",keepalive:!0,referrerPolicy:K()?"origin":""},this.n=0,this.o=!1,this.p=Error.stackTraceLimit,this.q=R.console||{},this.r={},this.s=[],this.t=d(),this.u=[],this.v=[],this.w=null,this.x=R.location,this.y=this.x&&this.x.href,this.z();for(var a in this.q)this.r[a]=this.q[a]}var g=a(10),h=a(11),i=a(12),j=a(5),k=a(9),l=k.isErrorEvent,m=k.isDOMError,n=k.isDOMException,o=k.isError,p=k.isObject,q=k.isPlainObject,r=k.isUndefined,s=k.isFunction,t=k.isString,u=k.isArray,v=k.isEmptyObject,w=k.each,x=k.objectMerge,y=k.truncate,z=k.objectFrozen,A=k.hasKey,B=k.joinRegExp,C=k.urlencode,D=k.uuid4,E=k.htmlTreeAsString,F=k.isSameException,G=k.isSameStacktrace,H=k.parseUrl,I=k.fill,J=k.supportsFetch,K=k.supportsReferrerPolicy,L=k.serializeKeysForMessage,M=k.serializeException,N=k.sanitize,O=a(6).wrapMethod,P="source protocol user pass host port path".split(" "),Q=/^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/,R="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},S=R.document,T=R.navigator;f.prototype={VERSION:"3.25.0",debug:!1,TraceKit:g,config:function(a,b){var c=this;if(c.h)return this.A("error","Error: Raven has already been configured"),c;if(!a)return c;var d=c.l;b&&w(b,function(a,b){"tags"===a||"extra"===a||"user"===a?c.k[a]=b:d[a]=b}),c.setDSN(a),d.ignoreErrors.push(/^Script error\.?$/),d.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/),d.ignoreErrors=B(d.ignoreErrors),d.ignoreUrls=!!d.ignoreUrls.length&&B(d.ignoreUrls),d.whitelistUrls=!!d.whitelistUrls.length&&B(d.whitelistUrls),d.includePaths=B(d.includePaths),d.maxBreadcrumbs=Math.max(0,Math.min(d.maxBreadcrumbs||100,100));var e={xhr:!0,console:!0,dom:!0,location:!0,sentry:!0},f=d.autoBreadcrumbs;"[object Object]"==={}.toString.call(f)?f=x(e,f):f!==!1&&(f=e),d.autoBreadcrumbs=f;var h={tryCatch:!0},i=d.instrument;return"[object Object]"==={}.toString.call(i)?i=x(h,i):i!==!1&&(i=h),d.instrument=i,g.collectWindowErrors=!!d.collectWindowErrors,c},install:function(){var a=this;return a.isSetup()&&!a.o&&(g.report.subscribe(function(){a.B.apply(a,arguments)}),a.l.captureUnhandledRejections&&a.C(),a.D(),a.l.instrument&&a.l.instrument.tryCatch&&a.E(),a.l.autoBreadcrumbs&&a.F(),a.G(),a.o=!0),Error.stackTraceLimit=a.l.stackTraceLimit,this},setDSN:function(a){var b=this,c=b.H(a),d=c.path.lastIndexOf("/"),e=c.path.substr(1,d);b.I=a,b.i=c.user,b.J=c.pass&&c.pass.substr(1),b.j=c.path.substr(d+1),b.h=b.K(c),b.L=b.h+"/"+e+"api/"+b.j+"/store/",this.z()},context:function(a,b,c){return s(a)&&(c=b||[],b=a,a=void 0),this.wrap(a,b).apply(this,c)},wrap:function(a,b,c){function d(){var d=[],f=arguments.length,g=!a||a&&a.deep!==!1;for(c&&s(c)&&c.apply(this,arguments);f--;)d[f]=g?e.wrap(a,arguments[f]):arguments[f];try{return b.apply(this,d)}catch(h){throw e.M(),e.captureException(h,a),h}}var e=this;if(r(b)&&!s(a))return a;if(s(a)&&(b=a,a=void 0),!s(b))return b;try{if(b.N)return b;if(b.O)return b.O}catch(f){return b}for(var g in b)A(b,g)&&(d[g]=b[g]);return d.prototype=b.prototype,b.O=d,d.N=!0,d.P=b,d},uninstall:function(){return g.report.uninstall(),this.Q(),this.R(),this.S(),this.T(),Error.stackTraceLimit=this.p,this.o=!1,this},U:function(a){this.A("debug","Raven caught unhandled promise rejection:",a),this.captureException(a.reason,{extra:{unhandledPromiseRejection:!0}})},C:function(){return this.U=this.U.bind(this),R.addEventListener&&R.addEventListener("unhandledrejection",this.U),this},Q:function(){return R.removeEventListener&&R.removeEventListener("unhandledrejection",this.U),this},captureException:function(a,b){if(b=x({trimHeadFrames:0},b?b:{}),l(a)&&a.error)a=a.error;else{if(m(a)||n(a)){var c=a.name||(m(a)?"DOMError":"DOMException"),d=a.message?c+": "+a.message:c;return this.captureMessage(d,x(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}))}if(o(a))a=a;else{if(!q(a))return this.captureMessage(a,x(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}));b=this.V(b,a),a=new Error(b.message)}}this.e=a;try{var e=g.computeStackTrace(a);this.W(e,b)}catch(f){if(a!==f)throw f}return this},V:function(a,b){var c=Object.keys(b).sort(),d=x(a,{message:"Non-Error exception captured with keys: "+L(c),fingerprint:[i(c)],extra:a.extra||{}});return d.extra.X=M(b),d},captureMessage:function(a,b){if(!this.l.ignoreErrors.test||!this.l.ignoreErrors.test(a)){b=b||{},a+="";var c,d=x({message:a},b);try{throw new Error(a)}catch(e){c=e}c.name=null;var f=g.computeStackTrace(c),h=u(f.stack)&&f.stack[1];h&&"Raven.captureException"===h.func&&(h=f.stack[2]);var i=h&&h.url||"";if((!this.l.ignoreUrls.test||!this.l.ignoreUrls.test(i))&&(!this.l.whitelistUrls.test||this.l.whitelistUrls.test(i))){if(this.l.stacktrace||b&&b.stacktrace){d.fingerprint=null==d.fingerprint?a:d.fingerprint,b=x({trimHeadFrames:0},b),b.trimHeadFrames+=1;var j=this.Y(f,b);d.stacktrace={frames:j.reverse()}}return d.fingerprint&&(d.fingerprint=u(d.fingerprint)?d.fingerprint:[d.fingerprint]),this.Z(d),this}}},captureBreadcrumb:function(a){var b=x({timestamp:d()/1e3},a);if(s(this.l.breadcrumbCallback)){var c=this.l.breadcrumbCallback(b);if(p(c)&&!v(c))b=c;else if(c===!1)return this}return this.v.push(b),this.v.length>this.l.maxBreadcrumbs&&this.v.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.s.push([a,b]),this.o&&this.G(),this},setUserContext:function(a){return this.k.user=a,this},setExtraContext:function(a){return this.$("extra",a),this},setTagsContext:function(a){return this.$("tags",a),this},clearContext:function(){return this.k={},this},getContext:function(){return JSON.parse(h(this.k))},setEnvironment:function(a){return this.l.environment=a,this},setRelease:function(a){return this.l.release=a,this},setDataCallback:function(a){var b=this.l.dataCallback;return this.l.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.l.breadcrumbCallback;return this.l.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.l.shouldSendCallback;return this.l.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.l.transport=a,this},lastException:function(){return this.e},lastEventId:function(){return this.g},isSetup:function(){return!!this.b&&(!!this.h||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.A("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=R.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(S){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.I;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.k.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.K(this.H(c)),h=S.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(S.head||S.body).appendChild(h)}},M:function(){var a=this;this.n+=1,setTimeout(function(){a.n-=1})},_:function(a,b){var c,d;if(this.c){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),S.createEvent?(c=S.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=S.createEventObject(),c.eventType=a);for(d in b)A(b,d)&&(c[d]=b[d]);if(S.createEvent)S.dispatchEvent(c);else try{S.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},aa:function(a){var b=this;return function(c){if(b.ba=null,b.w!==c){b.w=c;var d;try{d=E(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ca:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.ba;g||a.aa("input")(c),clearTimeout(g),a.ba=setTimeout(function(){a.ba=null},b)}}},da:function(a,b){var c=H(this.x.href),d=H(b),e=H(a);this.y=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},D:function(){var a=this;a.ea=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.N?a.ea.apply(this.P,arguments):a.ea.apply(this,arguments)}},R:function(){this.ea&&(Function.prototype.toString=this.ea)},E:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.da(b.y,c+""),a.apply(this,arguments)}};I(history,"pushState",j,d),I(history,"replaceState",j,d)}if(c.console&&"console"in R&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};w(["debug","info","warn","error","log"],function(a,b){O(console,b,k)})}},S:function(){for(var a;this.u.length;){a=this.u.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},T:function(){for(var a in this.r)this.q[a]=this.r[a]},G:function(){var a=this;w(this.s,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},H:function(a){var b=Q.exec(a),c={},d=7;try{for(;d--;)c[P[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.l.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},K:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},B:function(){this.n||this.W.apply(this,arguments)},W:function(a,b){var c=this.Y(a,b);this._("handle",{stackInfo:a,options:b}),this.ga(a.name,a.message,a.url,a.lineno,c,b)},Y:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(w(a.stack,function(b,e){var f=c.ha(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.v,0)}),this.k.user&&(a.user=this.k.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),a=this.qa(a),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||v(a[b]))&&delete a[b]}),s(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!v(a)&&(!s(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.na()?void this.A("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function F(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&l(b))for(c=b.split(/\s+/),f=0;fc?Q(a,b-1):d}function R(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?X:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function S(a,b){function c(a){return m(a)?a.map(function(a){return c(a)}):k(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!m(b)||m(b)&&0===b.length)return a;var d,e=A(b),f="********";try{d=JSON.parse(T(a))}catch(g){return a}return c(d)}var T=a(11),U="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},V=3,W=51200,X=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isDOMError:g,isDOMException:h,isUndefined:i,isFunction:j,isPlainObject:k,isString:l,isArray:m,isEmptyObject:n,supportsErrorEvent:o,supportsDOMError:p,supportsDOMException:q,supportsFetch:r,supportsReferrerPolicy:s,supportsPromiseRejectionEvent:t,wrappedCallback:u,each:v,objectMerge:w,truncate:y,objectFrozen:x,hasKey:z,joinRegExp:A,urlencode:B,uuid4:D,htmlTreeAsString:E,htmlElementAsString:F,isSameException:I,isSameStacktrace:J,parseUrl:C,fill:K,safeJoin:L,serializeException:Q,serializeKeysForMessage:R,sanitize:S}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{11:11}],10:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}function e(){return"undefined"==typeof document||null==document.location?"":document.location.origin}var f=a(9),g={collectWindowErrors:!0,debug:!1},h="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},i=[].slice,j="?",k=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;g.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function e(a,b){var c=null;if(!b||g.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(i.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,h,i){var l=null,m=f.isErrorEvent(i)?i.error:i,n=f.isErrorEvent(a)?a.message:a;if(v)g.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&f.isError(m))l=g.computeStackTrace(m),e(l,!0);else{var p,r={url:b,line:c,column:h},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(k);p&&(s=p[1],n=p[2])}r.func=j,l={name:s,message:n,url:d(),stack:[r]},e(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=h.onerror,h.onerror=l,r=!0)}function n(){r&&(h.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,e.apply(null,[a,!1].concat(b))}function p(a,b){var c=i.call(arguments,1);if(v){if(u===a)return;o()}var d=g.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),g.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,f,g=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,h=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,i=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,k=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,l=/\((\S*)(?::(\d+))(?::(\d+))\)/,m=a.stack.split("\n"),n=[],o=(/^(.*) is undefined$/.exec(a.message),0),p=m.length;o eval")>-1;r&&(b=k.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==o||c[5]||"undefined"==typeof a.columnNumber||(n[0].column=a.columnNumber+1),f={url:c[3],func:c[1]||j,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}if(!f.func&&f.line&&(f.func=j),f.url&&"blob:"===f.url.substr(0,5)){var s=new XMLHttpRequest;if(s.open("GET",f.url,!1),s.send(null),200===s.status){var t=s.responseText||"";t=t.slice(-300);var u=t.match(/\/\/# sourceMappingURL=(.*)$/);if(u){var v=u[1];"~"===v.charAt(0)&&(v=e()+v.slice(1)),f.url=v.slice(0,-4)}}}n.push(f)}return n.length?{name:a.name,message:a.message,url:d(),stack:n}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=j),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,e){for(var h,i,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==f&&o!==g.report){if(i={url:null,func:j,line:null,column:null},o.name?i.func=o.name:(h=k.exec(o.toString()))&&(i.func=h[1]),"undefined"==typeof i.func)try{i.func=h.input.substring(0,h.input.indexOf("{"))}catch(p){}m[""+o]?n=!0:m[""+o]=!0,l.push(i)}e&&l.splice(0,e);var q={name:a.name,message:a.message,url:d(),stack:l};return b(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),q}function f(b,e){var f=null;e=null==e?0:+e;try{if(f=a(b))return f}catch(h){if(g.debug)throw h}try{if(f=c(b,e+1))return f}catch(h){if(g.debug)throw h}return{name:b.name,message:b.message,url:d()}}return f.augmentStackTraceWithInitialElement=b,f.computeStackTraceFromStackProp=a,f}(),b.exports=g}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{9:9}],11:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}],12:[function(a,b,c){function d(a,b){var c=(65535&a)+(65535&b),d=(a>>16)+(b>>16)+(c>>16);return d<<16|65535&c}function e(a,b){return a<>>32-b}function f(a,b,c,f,g,h){return d(e(d(d(b,a),d(f,h)),g),c)}function g(a,b,c,d,e,g,h){return f(b&c|~b&d,a,b,e,g,h)}function h(a,b,c,d,e,g,h){return f(b&d|c&~d,a,b,e,g,h)}function i(a,b,c,d,e,g,h){return f(b^c^d,a,b,e,g,h)}function j(a,b,c,d,e,g,h){return f(c^(b|~d),a,b,e,g,h)}function k(a,b){a[b>>5]|=128<>>9<<4)+14]=b;var c,e,f,k,l,m=1732584193,n=-271733879,o=-1732584194,p=271733878;for(c=0;c>5]>>>b%32&255);return c}function m(a){var b,c=[];for(c[(a.length>>2)-1]=void 0,b=0;b>5]|=(255&a.charCodeAt(b/8))<16&&(e=k(e,8*a.length)),c=0;c<16;c+=1)f[c]=909522486^e[c],g[c]=1549556828^e[c];return d=k(f.concat(m(b)),512+8*b.length),l(k(g.concat(d),640))}function p(a){var b,c,d="0123456789abcdef",e="";for(c=0;c>>4&15)+d.charAt(15&b);return e}function q(a){return unescape(encodeURIComponent(a))}function r(a){return n(q(a))}function s(a){return p(r(a))}function t(a,b){return o(q(a),q(b))}function u(a,b){return p(t(a,b))}function v(a,b,c){return b?c?t(b,a):u(b,a):c?r(a):s(a)}b.exports=v},{}]},{},[8,1,2,3,4])(8)}); +/*! Raven.js 3.25.1 (b6f3c7a) | github.com/getsentry/raven-js */ +!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.Raven=a()}}(function(){return function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};b[g][0].call(k.exports,function(a){var c=b[g][1][a];return e(c?c:a)},k,k.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;g":"anonymous component")+(a._isVue&&a.$options.__file?" at "+a.$options.__file:"")}function e(a,b){if(b=b||window.Vue,b&&b.config){var c=b.config.errorHandler;b.config.errorHandler=function(b,e,f){var g={};"[object Object]"===Object.prototype.toString.call(e)&&(g.componentName=d(e),g.propsData=e.$options.propsData),"undefined"!=typeof f&&(g.lifecycleHook=f),a.captureException(b,{extra:g}),"function"==typeof c&&c.call(this,b,e,f)}}}b.exports=e,a(8).addPlugin(b.exports)},{8:8}],5:[function(a,b,c){function d(a){this.name="RavenConfigError",this.message=a}d.prototype=new Error,d.prototype.constructor=d,b.exports=d},{}],6:[function(a,b,c){var d=a(9),e=function(a,b,c){var e=a[b],f=a;if(b in a){var g="warn"===b?"warning":b;a[b]=function(){var a=[].slice.call(arguments),h=d.safeJoin(a," "),i={level:g,logger:"console",extra:{arguments:a}};"assert"===b?a[0]===!1&&(h="Assertion failed: "+(d.safeJoin(a.slice(1)," ")||"console.assert"),i.extra.arguments=a.slice(1),c&&c(h,i)):c&&c(h,i),e&&Function.prototype.apply.call(e,f,a)}}};b.exports={wrapMethod:e}},{9:9}],7:[function(a,b,c){(function(c){function d(){return+new Date}function e(a,b){return s(b)?function(c){return b(c,a)}:b}function f(){this.b=!("object"!=typeof JSON||!JSON.stringify),this.c=!r(S),this.d=!r(T),this.e=null,this.f=null,this.g=null,this.h=null,this.i=null,this.j=null,this.k={},this.l={release:R.SENTRY_RELEASE&&R.SENTRY_RELEASE.id,logger:"javascript",ignoreErrors:[],ignoreUrls:[],whitelistUrls:[],includePaths:[],headers:null,collectWindowErrors:!0,captureUnhandledRejections:!0,maxMessageLength:0,maxUrlLength:250,stackTraceLimit:50,autoBreadcrumbs:!0,instrument:!0,sampleRate:1,sanitizeKeys:[]},this.m={method:"POST",keepalive:!0,referrerPolicy:K()?"origin":""},this.n=0,this.o=!1,this.p=Error.stackTraceLimit,this.q=R.console||{},this.r={},this.s=[],this.t=d(),this.u=[],this.v=[],this.w=null,this.x=R.location,this.y=this.x&&this.x.href,this.z();for(var a in this.q)this.r[a]=this.q[a]}var g=a(10),h=a(11),i=a(12),j=a(5),k=a(9),l=k.isErrorEvent,m=k.isDOMError,n=k.isDOMException,o=k.isError,p=k.isObject,q=k.isPlainObject,r=k.isUndefined,s=k.isFunction,t=k.isString,u=k.isArray,v=k.isEmptyObject,w=k.each,x=k.objectMerge,y=k.truncate,z=k.objectFrozen,A=k.hasKey,B=k.joinRegExp,C=k.urlencode,D=k.uuid4,E=k.htmlTreeAsString,F=k.isSameException,G=k.isSameStacktrace,H=k.parseUrl,I=k.fill,J=k.supportsFetch,K=k.supportsReferrerPolicy,L=k.serializeKeysForMessage,M=k.serializeException,N=k.sanitize,O=a(6).wrapMethod,P="source protocol user pass host port path".split(" "),Q=/^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/,R="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},S=R.document,T=R.navigator;f.prototype={VERSION:"3.25.1",debug:!1,TraceKit:g,config:function(a,b){var c=this;if(c.h)return this.A("error","Error: Raven has already been configured"),c;if(!a)return c;var d=c.l;b&&w(b,function(a,b){"tags"===a||"extra"===a||"user"===a?c.k[a]=b:d[a]=b}),c.setDSN(a),d.ignoreErrors.push(/^Script error\.?$/),d.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/),d.ignoreErrors=B(d.ignoreErrors),d.ignoreUrls=!!d.ignoreUrls.length&&B(d.ignoreUrls),d.whitelistUrls=!!d.whitelistUrls.length&&B(d.whitelistUrls),d.includePaths=B(d.includePaths),d.maxBreadcrumbs=Math.max(0,Math.min(d.maxBreadcrumbs||100,100));var e={xhr:!0,console:!0,dom:!0,location:!0,sentry:!0},f=d.autoBreadcrumbs;"[object Object]"==={}.toString.call(f)?f=x(e,f):f!==!1&&(f=e),d.autoBreadcrumbs=f;var h={tryCatch:!0},i=d.instrument;return"[object Object]"==={}.toString.call(i)?i=x(h,i):i!==!1&&(i=h),d.instrument=i,g.collectWindowErrors=!!d.collectWindowErrors,c},install:function(){var a=this;return a.isSetup()&&!a.o&&(g.report.subscribe(function(){a.B.apply(a,arguments)}),a.l.captureUnhandledRejections&&a.C(),a.D(),a.l.instrument&&a.l.instrument.tryCatch&&a.E(),a.l.autoBreadcrumbs&&a.F(),a.G(),a.o=!0),Error.stackTraceLimit=a.l.stackTraceLimit,this},setDSN:function(a){var b=this,c=b.H(a),d=c.path.lastIndexOf("/"),e=c.path.substr(1,d);b.I=a,b.i=c.user,b.J=c.pass&&c.pass.substr(1),b.j=c.path.substr(d+1),b.h=b.K(c),b.L=b.h+"/"+e+"api/"+b.j+"/store/",this.z()},context:function(a,b,c){return s(a)&&(c=b||[],b=a,a=void 0),this.wrap(a,b).apply(this,c)},wrap:function(a,b,c){function d(){var d=[],f=arguments.length,g=!a||a&&a.deep!==!1;for(c&&s(c)&&c.apply(this,arguments);f--;)d[f]=g?e.wrap(a,arguments[f]):arguments[f];try{return b.apply(this,d)}catch(h){throw e.M(),e.captureException(h,a),h}}var e=this;if(r(b)&&!s(a))return a;if(s(a)&&(b=a,a=void 0),!s(b))return b;try{if(b.N)return b;if(b.O)return b.O}catch(f){return b}for(var g in b)A(b,g)&&(d[g]=b[g]);return d.prototype=b.prototype,b.O=d,d.N=!0,d.P=b,d},uninstall:function(){return g.report.uninstall(),this.Q(),this.R(),this.S(),this.T(),Error.stackTraceLimit=this.p,this.o=!1,this},U:function(a){this.A("debug","Raven caught unhandled promise rejection:",a),this.captureException(a.reason,{extra:{unhandledPromiseRejection:!0}})},C:function(){return this.U=this.U.bind(this),R.addEventListener&&R.addEventListener("unhandledrejection",this.U),this},Q:function(){return R.removeEventListener&&R.removeEventListener("unhandledrejection",this.U),this},captureException:function(a,b){if(b=x({trimHeadFrames:0},b?b:{}),l(a)&&a.error)a=a.error;else{if(m(a)||n(a)){var c=a.name||(m(a)?"DOMError":"DOMException"),d=a.message?c+": "+a.message:c;return this.captureMessage(d,x(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}))}if(o(a))a=a;else{if(!q(a))return this.captureMessage(a,x(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}));b=this.V(b,a),a=new Error(b.message)}}this.e=a;try{var e=g.computeStackTrace(a);this.W(e,b)}catch(f){if(a!==f)throw f}return this},V:function(a,b){var c=Object.keys(b).sort(),d=x(a,{message:"Non-Error exception captured with keys: "+L(c),fingerprint:[i(c)],extra:a.extra||{}});return d.extra.X=M(b),d},captureMessage:function(a,b){if(!this.l.ignoreErrors.test||!this.l.ignoreErrors.test(a)){b=b||{},a+="";var c,d=x({message:a},b);try{throw new Error(a)}catch(e){c=e}c.name=null;var f=g.computeStackTrace(c),h=u(f.stack)&&f.stack[1];h&&"Raven.captureException"===h.func&&(h=f.stack[2]);var i=h&&h.url||"";if((!this.l.ignoreUrls.test||!this.l.ignoreUrls.test(i))&&(!this.l.whitelistUrls.test||this.l.whitelistUrls.test(i))){if(this.l.stacktrace||b&&b.stacktrace){d.fingerprint=null==d.fingerprint?a:d.fingerprint,b=x({trimHeadFrames:0},b),b.trimHeadFrames+=1;var j=this.Y(f,b);d.stacktrace={frames:j.reverse()}}return d.fingerprint&&(d.fingerprint=u(d.fingerprint)?d.fingerprint:[d.fingerprint]),this.Z(d),this}}},captureBreadcrumb:function(a){var b=x({timestamp:d()/1e3},a);if(s(this.l.breadcrumbCallback)){var c=this.l.breadcrumbCallback(b);if(p(c)&&!v(c))b=c;else if(c===!1)return this}return this.v.push(b),this.v.length>this.l.maxBreadcrumbs&&this.v.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.s.push([a,b]),this.o&&this.G(),this},setUserContext:function(a){return this.k.user=a,this},setExtraContext:function(a){return this.$("extra",a),this},setTagsContext:function(a){return this.$("tags",a),this},clearContext:function(){return this.k={},this},getContext:function(){return JSON.parse(h(this.k))},setEnvironment:function(a){return this.l.environment=a,this},setRelease:function(a){return this.l.release=a,this},setDataCallback:function(a){var b=this.l.dataCallback;return this.l.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.l.breadcrumbCallback;return this.l.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.l.shouldSendCallback;return this.l.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.l.transport=a,this},lastException:function(){return this.e},lastEventId:function(){return this.g},isSetup:function(){return!!this.b&&(!!this.h||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.A("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=R.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(S){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.I;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.k.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.K(this.H(c)),h=S.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(S.head||S.body).appendChild(h)}},M:function(){var a=this;this.n+=1,setTimeout(function(){a.n-=1})},_:function(a,b){var c,d;if(this.c){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),S.createEvent?(c=S.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=S.createEventObject(),c.eventType=a);for(d in b)A(b,d)&&(c[d]=b[d]);if(S.createEvent)S.dispatchEvent(c);else try{S.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},aa:function(a){var b=this;return function(c){if(b.ba=null,b.w!==c){b.w=c;var d;try{d=E(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ca:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.ba;g||a.aa("input")(c),clearTimeout(g),a.ba=setTimeout(function(){a.ba=null},b)}}},da:function(a,b){var c=H(this.x.href),d=H(b),e=H(a);this.y=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},D:function(){var a=this;a.ea=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.N?a.ea.apply(this.P,arguments):a.ea.apply(this,arguments)}},R:function(){this.ea&&(Function.prototype.toString=this.ea)},E:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.da(b.y,c+""),a.apply(this,arguments)}};I(R.history,"pushState",j,d),I(R.history,"replaceState",j,d)}if(c.console&&"console"in R&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};w(["debug","info","warn","error","log"],function(a,b){O(console,b,k)})}},S:function(){for(var a;this.u.length;){a=this.u.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},T:function(){for(var a in this.r)this.q[a]=this.r[a]},G:function(){var a=this;w(this.s,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},H:function(a){var b=Q.exec(a),c={},d=7;try{for(;d--;)c[P[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.l.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},K:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},B:function(){this.n||this.W.apply(this,arguments)},W:function(a,b){var c=this.Y(a,b);this._("handle",{stackInfo:a,options:b}),this.ga(a.name,a.message,a.url,a.lineno,c,b)},Y:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(w(a.stack,function(b,e){var f=c.ha(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.v,0)}),this.k.user&&(a.user=this.k.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),a=this.qa(a),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||v(a[b]))&&delete a[b]}),s(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!v(a)&&(!s(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.na()?void this.A("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function F(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&l(b))for(c=b.split(/\s+/),f=0;fc?Q(a,b-1):d}function R(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?X:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function S(a,b){function c(a){return m(a)?a.map(function(a){return c(a)}):k(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!m(b)||m(b)&&0===b.length)return a;var d,e=A(b),f="********";try{d=JSON.parse(T(a))}catch(g){return a}return c(d)}var T=a(11),U="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},V=3,W=51200,X=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isDOMError:g,isDOMException:h,isUndefined:i,isFunction:j,isPlainObject:k,isString:l,isArray:m,isEmptyObject:n,supportsErrorEvent:o,supportsDOMError:p,supportsDOMException:q,supportsFetch:r,supportsReferrerPolicy:s,supportsPromiseRejectionEvent:t,wrappedCallback:u,each:v,objectMerge:w,truncate:y,objectFrozen:x,hasKey:z,joinRegExp:A,urlencode:B,uuid4:D,htmlTreeAsString:E,htmlElementAsString:F,isSameException:I,isSameStacktrace:J,parseUrl:C,fill:K,safeJoin:L,serializeException:Q,serializeKeysForMessage:R,sanitize:S}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{11:11}],10:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}function e(){return"undefined"==typeof document||null==document.location?"":(document.location.origin||(document.location.origin=document.location.protocol+"//"+document.location.hostname+(document.location.port?":"+document.location.port:"")),document.location.origin)}var f=a(9),g={collectWindowErrors:!0,debug:!1},h="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},i=[].slice,j="?",k=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;g.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function e(a,b){var c=null;if(!b||g.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(i.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,h,i){var l=null,m=f.isErrorEvent(i)?i.error:i,n=f.isErrorEvent(a)?a.message:a;if(v)g.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&f.isError(m))l=g.computeStackTrace(m),e(l,!0);else{var p,r={url:b,line:c,column:h},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(k);p&&(s=p[1],n=p[2])}r.func=j,l={name:s,message:n,url:d(),stack:[r]},e(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=h.onerror,h.onerror=l,r=!0)}function n(){r&&(h.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,e.apply(null,[a,!1].concat(b))}function p(a,b){var c=i.call(arguments,1);if(v){if(u===a)return;o()}var d=g.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),g.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,f,g=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,h=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,i=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,k=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,l=/\((\S*)(?::(\d+))(?::(\d+))\)/,m=a.stack.split("\n"),n=[],o=(/^(.*) is undefined$/.exec(a.message),0),p=m.length;o eval")>-1;r&&(b=k.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==o||c[5]||"undefined"==typeof a.columnNumber||(n[0].column=a.columnNumber+1),f={url:c[3],func:c[1]||j,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}if(!f.func&&f.line&&(f.func=j),f.url&&"blob:"===f.url.substr(0,5)){var s=new XMLHttpRequest;if(s.open("GET",f.url,!1),s.send(null),200===s.status){var t=s.responseText||"";t=t.slice(-300);var u=t.match(/\/\/# sourceMappingURL=(.*)$/);if(u){var v=u[1];"~"===v.charAt(0)&&(v=e()+v.slice(1)),f.url=v.slice(0,-4)}}}n.push(f)}return n.length?{name:a.name,message:a.message,url:d(),stack:n}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=j),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,e){for(var h,i,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==f&&o!==g.report){if(i={url:null,func:j,line:null,column:null},o.name?i.func=o.name:(h=k.exec(o.toString()))&&(i.func=h[1]),"undefined"==typeof i.func)try{i.func=h.input.substring(0,h.input.indexOf("{"))}catch(p){}m[""+o]?n=!0:m[""+o]=!0,l.push(i)}e&&l.splice(0,e);var q={name:a.name,message:a.message,url:d(),stack:l};return b(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),q}function f(b,e){var f=null;e=null==e?0:+e;try{if(f=a(b))return f}catch(h){if(g.debug)throw h}try{if(f=c(b,e+1))return f}catch(h){if(g.debug)throw h}return{name:b.name,message:b.message,url:d()}}return f.augmentStackTraceWithInitialElement=b,f.computeStackTraceFromStackProp=a,f}(),b.exports=g}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{9:9}],11:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}],12:[function(a,b,c){function d(a,b){var c=(65535&a)+(65535&b),d=(a>>16)+(b>>16)+(c>>16);return d<<16|65535&c}function e(a,b){return a<>>32-b}function f(a,b,c,f,g,h){return d(e(d(d(b,a),d(f,h)),g),c)}function g(a,b,c,d,e,g,h){return f(b&c|~b&d,a,b,e,g,h)}function h(a,b,c,d,e,g,h){return f(b&d|c&~d,a,b,e,g,h)}function i(a,b,c,d,e,g,h){return f(b^c^d,a,b,e,g,h)}function j(a,b,c,d,e,g,h){return f(c^(b|~d),a,b,e,g,h)}function k(a,b){a[b>>5]|=128<>>9<<4)+14]=b;var c,e,f,k,l,m=1732584193,n=-271733879,o=-1732584194,p=271733878;for(c=0;c>5]>>>b%32&255);return c}function m(a){var b,c=[];for(c[(a.length>>2)-1]=void 0,b=0;b>5]|=(255&a.charCodeAt(b/8))<16&&(e=k(e,8*a.length)),c=0;c<16;c+=1)f[c]=909522486^e[c],g[c]=1549556828^e[c];return d=k(f.concat(m(b)),512+8*b.length),l(k(g.concat(d),640))}function p(a){var b,c,d="0123456789abcdef",e="";for(c=0;c>>4&15)+d.charAt(15&b);return e}function q(a){return unescape(encodeURIComponent(a))}function r(a){return n(q(a))}function s(a){return p(r(a))}function t(a,b){return o(q(a),q(b))}function u(a,b){return p(t(a,b))}function v(a,b,c){return b?c?t(b,a):u(b,a):c?r(a):s(a)}b.exports=v},{}]},{},[8,1,2,3,4])(8)}); //# sourceMappingURL=raven.min.js.map \ No newline at end of file diff --git a/dist/angular,console,ember,vue/raven.min.js.map b/dist/angular,console,ember,vue/raven.min.js.map index dbe7c9a328e6..db0c77085fb8 100644 --- a/dist/angular,console,ember,vue/raven.min.js.map +++ b/dist/angular,console,ember,vue/raven.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","angularPlugin","angular","RavenProvider","$get","$window","ExceptionHandlerProvider","$provide","decorator","exceptionHandler","R","$delegate","ex","cause","captureException","extra","moduleName","provider","config","setDataCallback","wrappedCallback","data","_normalizeData","angularPattern","exception","values","matches","exec","value","type","message","angularDocs","substr","addPlugin","8","9","2","consolePlugin","console","pluginOptions","logLevels","levels","push","callback","msg","captureMessage","level","pop","wrapConsoleMethod","wrapMethod","6","3","emberPlugin","Ember","_oldOnError","onerror","error","RSVP","on","reason","context","4","formatComponentName","vm","$root","name","_isVue","$options","_componentTag","__file","vuePlugin","Vue","errorHandler","info","metaData","Object","prototype","toString","componentName","propsData","lifecycleHook","5","RavenConfigError","constructor","utils","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","safeJoin","logger","Function","apply","7","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","sanitizeKeys","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isErrorEvent","isDOMError","isDOMException","isError","isObject","isPlainObject","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","sanitize","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","dsn","options","_logDebug","globalOptions","key","setDSN","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","func","undefined","wrap","_before","wrapped","deep","_ignoreNextOnError","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","U","event","unhandledPromiseRejection","C","_promiseRejectionHandler","bind","addEventListener","Q","removeEventListener","trimHeadFrames","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","V","currentOptions","exKeys","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","M","setTimeout","_","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","aa","evtName","_keypressTimeout","target","category","ca","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","da","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","D","_originalFunctionToString","E","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","F","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","S","builtin","T","G","installer","concat","H","str","m","allowSecretKey","K","port","B","W","stackInfo","_triggerEvent","_processException","lineno","Y","frame","_normalizeFrame","in_app","ha","stackInfoUrl","normalized","filename","line","colno","column","function","ga","prefixedMessage","culprit","ia","request","Referer","breadcrumbs","_trimBreadcrumbs","ja","urlProp","urlProps","ka","httpData","userAgent","User-Agent","referrer","z","_backoffDuration","_backoffStart","na","oa","current","last","pa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Z","baseData","project","platform","_getHttpData","serverName","server_name","_sanitizeData","forEach","random","_sendProcessedPayload","qa","sa","ra","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","ta","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","open","setRequestHeader","send","ua","hash","evaluated","A","$","setUser","setReleaseContext","10","11","12","RavenConstructor","_Raven","noConflict","Client","what","supportsErrorEvent","ErrorEvent","supportsDOMError","DOMError","supportsDOMException","DOMException","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","sanitizeMask","safeInput","o_O","getLocationHref","getLocationOrigin","origin","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","responseText","sourceMaps","sourceMapAddress","charAt","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","y","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","string","raw"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file +{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","angularPlugin","angular","RavenProvider","$get","$window","ExceptionHandlerProvider","$provide","decorator","exceptionHandler","R","$delegate","ex","cause","captureException","extra","moduleName","provider","config","setDataCallback","wrappedCallback","data","_normalizeData","angularPattern","exception","values","matches","exec","value","type","message","angularDocs","substr","addPlugin","8","9","2","consolePlugin","console","pluginOptions","logLevels","levels","push","callback","msg","captureMessage","level","pop","wrapConsoleMethod","wrapMethod","6","3","emberPlugin","Ember","_oldOnError","onerror","error","RSVP","on","reason","context","4","formatComponentName","vm","$root","name","_isVue","$options","_componentTag","__file","vuePlugin","Vue","errorHandler","info","metaData","Object","prototype","toString","componentName","propsData","lifecycleHook","5","RavenConfigError","constructor","utils","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","safeJoin","logger","Function","apply","7","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","sanitizeKeys","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isErrorEvent","isDOMError","isDOMException","isError","isObject","isPlainObject","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","sanitize","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","dsn","options","_logDebug","globalOptions","key","setDSN","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","func","undefined","wrap","_before","wrapped","deep","_ignoreNextOnError","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","U","event","unhandledPromiseRejection","C","_promiseRejectionHandler","bind","addEventListener","Q","removeEventListener","trimHeadFrames","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","V","currentOptions","exKeys","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","M","setTimeout","_","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","aa","evtName","_keypressTimeout","target","category","ca","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","da","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","D","_originalFunctionToString","E","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","F","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","S","builtin","T","G","installer","concat","H","str","m","allowSecretKey","K","port","B","W","stackInfo","_triggerEvent","_processException","lineno","Y","frame","_normalizeFrame","in_app","ha","stackInfoUrl","normalized","filename","line","colno","column","function","ga","prefixedMessage","culprit","ia","request","Referer","breadcrumbs","_trimBreadcrumbs","ja","urlProp","urlProps","ka","httpData","userAgent","User-Agent","referrer","z","_backoffDuration","_backoffStart","na","oa","current","last","pa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Z","baseData","project","platform","_getHttpData","serverName","server_name","_sanitizeData","forEach","random","_sendProcessedPayload","qa","sa","ra","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","ta","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","open","setRequestHeader","send","ua","hash","evaluated","A","$","setUser","setReleaseContext","10","11","12","RavenConstructor","_Raven","noConflict","Client","what","supportsErrorEvent","ErrorEvent","supportsDOMError","DOMError","supportsDOMException","DOMException","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","sanitizeMask","safeInput","o_O","getLocationHref","getLocationOrigin","origin","hostname","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","responseText","sourceMaps","sourceMapAddress","charAt","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","y","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","string","raw"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file diff --git a/dist/angular,console,ember/raven.js b/dist/angular,console,ember/raven.js index f2b4b2e9879e..defe582e7b67 100644 --- a/dist/angular,console,ember/raven.js +++ b/dist/angular,console,ember/raven.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.25.0 (80dffad) | github.com/getsentry/raven-js */ +/*! Raven.js 3.25.1 (b6f3c7a) | github.com/getsentry/raven-js */ /* * Includes TraceKit @@ -352,7 +352,7 @@ Raven.prototype = { // webpack (using a build step causes webpack #1617). Grunt verifies that // this value matches package.json during build. // See: https://github.com/getsentry/raven-js/issues/465 - VERSION: '3.25.0', + VERSION: '3.25.1', debug: false, @@ -1661,8 +1661,8 @@ Raven.prototype = { var hasPushAndReplaceState = !isChromePackagedApp && _window.history && - history.pushState && - history.replaceState; + _window.history.pushState && + _window.history.replaceState; if (autoBreadcrumbs.location && hasPushAndReplaceState) { // TODO: remove onpopstate handler on uninstall() var oldOnPopState = _window.onpopstate; @@ -1691,8 +1691,8 @@ Raven.prototype = { }; }; - fill(history, 'pushState', historyReplacementFunction, wrappedBuiltIns); - fill(history, 'replaceState', historyReplacementFunction, wrappedBuiltIns); + fill(_window.history, 'pushState', historyReplacementFunction, wrappedBuiltIns); + fill(_window.history, 'replaceState', historyReplacementFunction, wrappedBuiltIns); } if (autoBreadcrumbs.console && 'console' in _window && console.log) { @@ -1982,7 +1982,7 @@ Raven.prototype = { if (this._hasNavigator && _navigator.userAgent) { httpData.headers = { - 'User-Agent': navigator.userAgent + 'User-Agent': _navigator.userAgent }; } @@ -3157,6 +3157,16 @@ function getLocationHref() { function getLocationOrigin() { if (typeof document === 'undefined' || document.location == null) return ''; + + // Oh dear IE10... + if (!document.location.origin) { + document.location.origin = + document.location.protocol + + '//' + + document.location.hostname + + (document.location.port ? ':' + document.location.port : ''); + } + return document.location.origin; } diff --git a/dist/angular,console,ember/raven.min.js b/dist/angular,console,ember/raven.min.js index d5cea8de5bda..0608253c43e6 100644 --- a/dist/angular,console,ember/raven.min.js +++ b/dist/angular,console,ember/raven.min.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.25.0 (80dffad) | github.com/getsentry/raven-js */ -!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.Raven=a()}}(function(){return function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};b[g][0].call(k.exports,function(a){var c=b[g][1][a];return e(c?c:a)},k,k.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;gthis.l.maxBreadcrumbs&&this.v.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.s.push([a,b]),this.o&&this.G(),this},setUserContext:function(a){return this.k.user=a,this},setExtraContext:function(a){return this.$("extra",a),this},setTagsContext:function(a){return this.$("tags",a),this},clearContext:function(){return this.k={},this},getContext:function(){return JSON.parse(h(this.k))},setEnvironment:function(a){return this.l.environment=a,this},setRelease:function(a){return this.l.release=a,this},setDataCallback:function(a){var b=this.l.dataCallback;return this.l.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.l.breadcrumbCallback;return this.l.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.l.shouldSendCallback;return this.l.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.l.transport=a,this},lastException:function(){return this.e},lastEventId:function(){return this.g},isSetup:function(){return!!this.b&&(!!this.h||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.A("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=R.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(S){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.I;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.k.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.K(this.H(c)),h=S.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(S.head||S.body).appendChild(h)}},M:function(){var a=this;this.n+=1,setTimeout(function(){a.n-=1})},_:function(a,b){var c,d;if(this.c){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),S.createEvent?(c=S.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=S.createEventObject(),c.eventType=a);for(d in b)A(b,d)&&(c[d]=b[d]);if(S.createEvent)S.dispatchEvent(c);else try{S.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},aa:function(a){var b=this;return function(c){if(b.ba=null,b.w!==c){b.w=c;var d;try{d=E(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ca:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.ba;g||a.aa("input")(c),clearTimeout(g),a.ba=setTimeout(function(){a.ba=null},b)}}},da:function(a,b){var c=H(this.x.href),d=H(b),e=H(a);this.y=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},D:function(){var a=this;a.ea=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.N?a.ea.apply(this.P,arguments):a.ea.apply(this,arguments)}},R:function(){this.ea&&(Function.prototype.toString=this.ea)},E:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.da(b.y,c+""),a.apply(this,arguments)}};I(history,"pushState",j,d),I(history,"replaceState",j,d)}if(c.console&&"console"in R&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};w(["debug","info","warn","error","log"],function(a,b){O(console,b,k)})}},S:function(){for(var a;this.u.length;){a=this.u.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},T:function(){for(var a in this.r)this.q[a]=this.r[a]},G:function(){var a=this;w(this.s,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},H:function(a){var b=Q.exec(a),c={},d=7;try{for(;d--;)c[P[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.l.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},K:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},B:function(){this.n||this.W.apply(this,arguments)},W:function(a,b){var c=this.Y(a,b);this._("handle",{stackInfo:a,options:b}),this.ga(a.name,a.message,a.url,a.lineno,c,b)},Y:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(w(a.stack,function(b,e){var f=c.ha(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.v,0)}),this.k.user&&(a.user=this.k.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),a=this.qa(a),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||v(a[b]))&&delete a[b]}),s(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!v(a)&&(!s(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.na()?void this.A("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function F(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&l(b))for(c=b.split(/\s+/),f=0;fc?Q(a,b-1):d}function R(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?X:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function S(a,b){function c(a){return m(a)?a.map(function(a){return c(a)}):k(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!m(b)||m(b)&&0===b.length)return a;var d,e=A(b),f="********";try{d=JSON.parse(T(a))}catch(g){return a}return c(d)}var T=a(10),U="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},V=3,W=51200,X=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isDOMError:g,isDOMException:h,isUndefined:i,isFunction:j,isPlainObject:k,isString:l,isArray:m,isEmptyObject:n,supportsErrorEvent:o,supportsDOMError:p,supportsDOMException:q,supportsFetch:r,supportsReferrerPolicy:s,supportsPromiseRejectionEvent:t,wrappedCallback:u,each:v,objectMerge:w,truncate:y,objectFrozen:x,hasKey:z,joinRegExp:A,urlencode:B,uuid4:D,htmlTreeAsString:E,htmlElementAsString:F,isSameException:I,isSameStacktrace:J,parseUrl:C,fill:K,safeJoin:L,serializeException:Q,serializeKeysForMessage:R,sanitize:S}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{10:10}],9:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}function e(){return"undefined"==typeof document||null==document.location?"":document.location.origin}var f=a(8),g={collectWindowErrors:!0,debug:!1},h="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},i=[].slice,j="?",k=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;g.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function e(a,b){var c=null;if(!b||g.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(i.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,h,i){var l=null,m=f.isErrorEvent(i)?i.error:i,n=f.isErrorEvent(a)?a.message:a;if(v)g.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&f.isError(m))l=g.computeStackTrace(m),e(l,!0);else{var p,r={url:b,line:c,column:h},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(k);p&&(s=p[1],n=p[2])}r.func=j,l={name:s,message:n,url:d(),stack:[r]},e(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=h.onerror,h.onerror=l,r=!0)}function n(){r&&(h.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,e.apply(null,[a,!1].concat(b))}function p(a,b){var c=i.call(arguments,1);if(v){if(u===a)return;o()}var d=g.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),g.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,f,g=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,h=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,i=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,k=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,l=/\((\S*)(?::(\d+))(?::(\d+))\)/,m=a.stack.split("\n"),n=[],o=(/^(.*) is undefined$/.exec(a.message),0),p=m.length;o eval")>-1;r&&(b=k.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==o||c[5]||"undefined"==typeof a.columnNumber||(n[0].column=a.columnNumber+1),f={url:c[3],func:c[1]||j,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}if(!f.func&&f.line&&(f.func=j),f.url&&"blob:"===f.url.substr(0,5)){var s=new XMLHttpRequest;if(s.open("GET",f.url,!1),s.send(null),200===s.status){var t=s.responseText||"";t=t.slice(-300);var u=t.match(/\/\/# sourceMappingURL=(.*)$/);if(u){var v=u[1];"~"===v.charAt(0)&&(v=e()+v.slice(1)),f.url=v.slice(0,-4)}}}n.push(f); -}return n.length?{name:a.name,message:a.message,url:d(),stack:n}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=j),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,e){for(var h,i,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==f&&o!==g.report){if(i={url:null,func:j,line:null,column:null},o.name?i.func=o.name:(h=k.exec(o.toString()))&&(i.func=h[1]),"undefined"==typeof i.func)try{i.func=h.input.substring(0,h.input.indexOf("{"))}catch(p){}m[""+o]?n=!0:m[""+o]=!0,l.push(i)}e&&l.splice(0,e);var q={name:a.name,message:a.message,url:d(),stack:l};return b(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),q}function f(b,e){var f=null;e=null==e?0:+e;try{if(f=a(b))return f}catch(h){if(g.debug)throw h}try{if(f=c(b,e+1))return f}catch(h){if(g.debug)throw h}return{name:b.name,message:b.message,url:d()}}return f.augmentStackTraceWithInitialElement=b,f.computeStackTraceFromStackProp=a,f}(),b.exports=g}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{8:8}],10:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}],11:[function(a,b,c){function d(a,b){var c=(65535&a)+(65535&b),d=(a>>16)+(b>>16)+(c>>16);return d<<16|65535&c}function e(a,b){return a<>>32-b}function f(a,b,c,f,g,h){return d(e(d(d(b,a),d(f,h)),g),c)}function g(a,b,c,d,e,g,h){return f(b&c|~b&d,a,b,e,g,h)}function h(a,b,c,d,e,g,h){return f(b&d|c&~d,a,b,e,g,h)}function i(a,b,c,d,e,g,h){return f(b^c^d,a,b,e,g,h)}function j(a,b,c,d,e,g,h){return f(c^(b|~d),a,b,e,g,h)}function k(a,b){a[b>>5]|=128<>>9<<4)+14]=b;var c,e,f,k,l,m=1732584193,n=-271733879,o=-1732584194,p=271733878;for(c=0;c>5]>>>b%32&255);return c}function m(a){var b,c=[];for(c[(a.length>>2)-1]=void 0,b=0;b>5]|=(255&a.charCodeAt(b/8))<16&&(e=k(e,8*a.length)),c=0;c<16;c+=1)f[c]=909522486^e[c],g[c]=1549556828^e[c];return d=k(f.concat(m(b)),512+8*b.length),l(k(g.concat(d),640))}function p(a){var b,c,d="0123456789abcdef",e="";for(c=0;c>>4&15)+d.charAt(15&b);return e}function q(a){return unescape(encodeURIComponent(a))}function r(a){return n(q(a))}function s(a){return p(r(a))}function t(a,b){return o(q(a),q(b))}function u(a,b){return p(t(a,b))}function v(a,b,c){return b?c?t(b,a):u(b,a):c?r(a):s(a)}b.exports=v},{}]},{},[7,1,2,3])(7)}); +/*! Raven.js 3.25.1 (b6f3c7a) | github.com/getsentry/raven-js */ +!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.Raven=a()}}(function(){return function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};b[g][0].call(k.exports,function(a){var c=b[g][1][a];return e(c?c:a)},k,k.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;gthis.l.maxBreadcrumbs&&this.v.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.s.push([a,b]),this.o&&this.G(),this},setUserContext:function(a){return this.k.user=a,this},setExtraContext:function(a){return this.$("extra",a),this},setTagsContext:function(a){return this.$("tags",a),this},clearContext:function(){return this.k={},this},getContext:function(){return JSON.parse(h(this.k))},setEnvironment:function(a){return this.l.environment=a,this},setRelease:function(a){return this.l.release=a,this},setDataCallback:function(a){var b=this.l.dataCallback;return this.l.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.l.breadcrumbCallback;return this.l.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.l.shouldSendCallback;return this.l.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.l.transport=a,this},lastException:function(){return this.e},lastEventId:function(){return this.g},isSetup:function(){return!!this.b&&(!!this.h||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.A("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=R.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(S){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.I;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.k.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.K(this.H(c)),h=S.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(S.head||S.body).appendChild(h)}},M:function(){var a=this;this.n+=1,setTimeout(function(){a.n-=1})},_:function(a,b){var c,d;if(this.c){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),S.createEvent?(c=S.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=S.createEventObject(),c.eventType=a);for(d in b)A(b,d)&&(c[d]=b[d]);if(S.createEvent)S.dispatchEvent(c);else try{S.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},aa:function(a){var b=this;return function(c){if(b.ba=null,b.w!==c){b.w=c;var d;try{d=E(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ca:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.ba;g||a.aa("input")(c),clearTimeout(g),a.ba=setTimeout(function(){a.ba=null},b)}}},da:function(a,b){var c=H(this.x.href),d=H(b),e=H(a);this.y=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},D:function(){var a=this;a.ea=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.N?a.ea.apply(this.P,arguments):a.ea.apply(this,arguments)}},R:function(){this.ea&&(Function.prototype.toString=this.ea)},E:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.da(b.y,c+""),a.apply(this,arguments)}};I(R.history,"pushState",j,d),I(R.history,"replaceState",j,d)}if(c.console&&"console"in R&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};w(["debug","info","warn","error","log"],function(a,b){O(console,b,k)})}},S:function(){for(var a;this.u.length;){a=this.u.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},T:function(){for(var a in this.r)this.q[a]=this.r[a]},G:function(){var a=this;w(this.s,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},H:function(a){var b=Q.exec(a),c={},d=7;try{for(;d--;)c[P[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.l.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},K:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},B:function(){this.n||this.W.apply(this,arguments)},W:function(a,b){var c=this.Y(a,b);this._("handle",{stackInfo:a,options:b}),this.ga(a.name,a.message,a.url,a.lineno,c,b)},Y:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(w(a.stack,function(b,e){var f=c.ha(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.v,0)}),this.k.user&&(a.user=this.k.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),a=this.qa(a),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||v(a[b]))&&delete a[b]}),s(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!v(a)&&(!s(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.na()?void this.A("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function F(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&l(b))for(c=b.split(/\s+/),f=0;fc?Q(a,b-1):d}function R(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?X:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function S(a,b){function c(a){return m(a)?a.map(function(a){return c(a)}):k(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!m(b)||m(b)&&0===b.length)return a;var d,e=A(b),f="********";try{d=JSON.parse(T(a))}catch(g){return a}return c(d)}var T=a(10),U="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},V=3,W=51200,X=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isDOMError:g,isDOMException:h,isUndefined:i,isFunction:j,isPlainObject:k,isString:l,isArray:m,isEmptyObject:n,supportsErrorEvent:o,supportsDOMError:p,supportsDOMException:q,supportsFetch:r,supportsReferrerPolicy:s,supportsPromiseRejectionEvent:t,wrappedCallback:u,each:v,objectMerge:w,truncate:y,objectFrozen:x,hasKey:z,joinRegExp:A,urlencode:B,uuid4:D,htmlTreeAsString:E,htmlElementAsString:F,isSameException:I,isSameStacktrace:J,parseUrl:C,fill:K,safeJoin:L,serializeException:Q,serializeKeysForMessage:R,sanitize:S}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{10:10}],9:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}function e(){return"undefined"==typeof document||null==document.location?"":(document.location.origin||(document.location.origin=document.location.protocol+"//"+document.location.hostname+(document.location.port?":"+document.location.port:"")),document.location.origin)}var f=a(8),g={collectWindowErrors:!0,debug:!1},h="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},i=[].slice,j="?",k=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;g.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function e(a,b){var c=null;if(!b||g.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(i.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,h,i){var l=null,m=f.isErrorEvent(i)?i.error:i,n=f.isErrorEvent(a)?a.message:a;if(v)g.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&f.isError(m))l=g.computeStackTrace(m),e(l,!0);else{var p,r={url:b,line:c,column:h},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(k);p&&(s=p[1],n=p[2])}r.func=j,l={name:s,message:n,url:d(),stack:[r]},e(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=h.onerror,h.onerror=l,r=!0)}function n(){r&&(h.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,e.apply(null,[a,!1].concat(b))}function p(a,b){var c=i.call(arguments,1);if(v){if(u===a)return;o()}var d=g.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),g.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,f,g=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,h=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,i=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,k=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,l=/\((\S*)(?::(\d+))(?::(\d+))\)/,m=a.stack.split("\n"),n=[],o=(/^(.*) is undefined$/.exec(a.message),0),p=m.length;o eval")>-1;r&&(b=k.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==o||c[5]||"undefined"==typeof a.columnNumber||(n[0].column=a.columnNumber+1),f={url:c[3],func:c[1]||j,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}if(!f.func&&f.line&&(f.func=j),f.url&&"blob:"===f.url.substr(0,5)){var s=new XMLHttpRequest;if(s.open("GET",f.url,!1),s.send(null),200===s.status){ +var t=s.responseText||"";t=t.slice(-300);var u=t.match(/\/\/# sourceMappingURL=(.*)$/);if(u){var v=u[1];"~"===v.charAt(0)&&(v=e()+v.slice(1)),f.url=v.slice(0,-4)}}}n.push(f)}return n.length?{name:a.name,message:a.message,url:d(),stack:n}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=j),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,e){for(var h,i,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==f&&o!==g.report){if(i={url:null,func:j,line:null,column:null},o.name?i.func=o.name:(h=k.exec(o.toString()))&&(i.func=h[1]),"undefined"==typeof i.func)try{i.func=h.input.substring(0,h.input.indexOf("{"))}catch(p){}m[""+o]?n=!0:m[""+o]=!0,l.push(i)}e&&l.splice(0,e);var q={name:a.name,message:a.message,url:d(),stack:l};return b(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),q}function f(b,e){var f=null;e=null==e?0:+e;try{if(f=a(b))return f}catch(h){if(g.debug)throw h}try{if(f=c(b,e+1))return f}catch(h){if(g.debug)throw h}return{name:b.name,message:b.message,url:d()}}return f.augmentStackTraceWithInitialElement=b,f.computeStackTraceFromStackProp=a,f}(),b.exports=g}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{8:8}],10:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}],11:[function(a,b,c){function d(a,b){var c=(65535&a)+(65535&b),d=(a>>16)+(b>>16)+(c>>16);return d<<16|65535&c}function e(a,b){return a<>>32-b}function f(a,b,c,f,g,h){return d(e(d(d(b,a),d(f,h)),g),c)}function g(a,b,c,d,e,g,h){return f(b&c|~b&d,a,b,e,g,h)}function h(a,b,c,d,e,g,h){return f(b&d|c&~d,a,b,e,g,h)}function i(a,b,c,d,e,g,h){return f(b^c^d,a,b,e,g,h)}function j(a,b,c,d,e,g,h){return f(c^(b|~d),a,b,e,g,h)}function k(a,b){a[b>>5]|=128<>>9<<4)+14]=b;var c,e,f,k,l,m=1732584193,n=-271733879,o=-1732584194,p=271733878;for(c=0;c>5]>>>b%32&255);return c}function m(a){var b,c=[];for(c[(a.length>>2)-1]=void 0,b=0;b>5]|=(255&a.charCodeAt(b/8))<16&&(e=k(e,8*a.length)),c=0;c<16;c+=1)f[c]=909522486^e[c],g[c]=1549556828^e[c];return d=k(f.concat(m(b)),512+8*b.length),l(k(g.concat(d),640))}function p(a){var b,c,d="0123456789abcdef",e="";for(c=0;c>>4&15)+d.charAt(15&b);return e}function q(a){return unescape(encodeURIComponent(a))}function r(a){return n(q(a))}function s(a){return p(r(a))}function t(a,b){return o(q(a),q(b))}function u(a,b){return p(t(a,b))}function v(a,b,c){return b?c?t(b,a):u(b,a):c?r(a):s(a)}b.exports=v},{}]},{},[7,1,2,3])(7)}); //# sourceMappingURL=raven.min.js.map \ No newline at end of file diff --git a/dist/angular,console,ember/raven.min.js.map b/dist/angular,console,ember/raven.min.js.map index f840686f6598..cbb3fa1ebe54 100644 --- a/dist/angular,console,ember/raven.min.js.map +++ b/dist/angular,console,ember/raven.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","angularPlugin","angular","RavenProvider","$get","$window","ExceptionHandlerProvider","$provide","decorator","exceptionHandler","R","$delegate","ex","cause","captureException","extra","moduleName","provider","config","setDataCallback","wrappedCallback","data","_normalizeData","angularPattern","exception","values","matches","exec","value","type","message","angularDocs","substr","addPlugin","7","8","2","consolePlugin","console","pluginOptions","logLevels","levels","push","callback","msg","captureMessage","level","pop","wrapConsoleMethod","wrapMethod","5","3","emberPlugin","Ember","_oldOnError","onerror","error","RSVP","on","reason","context","4","RavenConfigError","name","prototype","constructor","utils","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","safeJoin","logger","Function","apply","6","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","sanitizeKeys","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isErrorEvent","isDOMError","isDOMException","isError","isObject","isPlainObject","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","sanitize","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","dsn","options","_logDebug","globalOptions","key","setDSN","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","toString","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","func","undefined","wrap","_before","wrapped","deep","_ignoreNextOnError","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","U","event","unhandledPromiseRejection","C","_promiseRejectionHandler","bind","addEventListener","Q","removeEventListener","trimHeadFrames","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","V","currentOptions","exKeys","Object","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","M","setTimeout","_","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","aa","evtName","_keypressTimeout","target","category","ca","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","da","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","D","_originalFunctionToString","E","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","F","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","S","builtin","T","G","installer","concat","H","str","m","allowSecretKey","K","port","B","W","stackInfo","_triggerEvent","_processException","lineno","Y","frame","_normalizeFrame","in_app","ha","stackInfoUrl","normalized","filename","line","colno","column","function","ga","prefixedMessage","culprit","ia","request","Referer","breadcrumbs","_trimBreadcrumbs","ja","urlProp","urlProps","ka","httpData","userAgent","User-Agent","referrer","z","_backoffDuration","_backoffStart","na","oa","current","last","pa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Z","baseData","project","platform","_getHttpData","serverName","server_name","_sanitizeData","forEach","random","_sendProcessedPayload","qa","sa","ra","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","ta","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","open","setRequestHeader","send","ua","hash","evaluated","A","$","setUser","setReleaseContext","10","11","9","RavenConstructor","_Raven","noConflict","Client","what","supportsErrorEvent","ErrorEvent","supportsDOMError","DOMError","supportsDOMException","DOMException","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","sanitizeMask","safeInput","o_O","getLocationHref","getLocationOrigin","origin","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","responseText","sourceMaps","sourceMapAddress","charAt","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","y","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","string","raw"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file +{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","angularPlugin","angular","RavenProvider","$get","$window","ExceptionHandlerProvider","$provide","decorator","exceptionHandler","R","$delegate","ex","cause","captureException","extra","moduleName","provider","config","setDataCallback","wrappedCallback","data","_normalizeData","angularPattern","exception","values","matches","exec","value","type","message","angularDocs","substr","addPlugin","7","8","2","consolePlugin","console","pluginOptions","logLevels","levels","push","callback","msg","captureMessage","level","pop","wrapConsoleMethod","wrapMethod","5","3","emberPlugin","Ember","_oldOnError","onerror","error","RSVP","on","reason","context","4","RavenConfigError","name","prototype","constructor","utils","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","safeJoin","logger","Function","apply","6","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","sanitizeKeys","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isErrorEvent","isDOMError","isDOMException","isError","isObject","isPlainObject","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","sanitize","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","dsn","options","_logDebug","globalOptions","key","setDSN","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","toString","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","func","undefined","wrap","_before","wrapped","deep","_ignoreNextOnError","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","U","event","unhandledPromiseRejection","C","_promiseRejectionHandler","bind","addEventListener","Q","removeEventListener","trimHeadFrames","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","V","currentOptions","exKeys","Object","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","M","setTimeout","_","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","aa","evtName","_keypressTimeout","target","category","ca","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","da","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","D","_originalFunctionToString","E","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","F","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","S","builtin","T","G","installer","concat","H","str","m","allowSecretKey","K","port","B","W","stackInfo","_triggerEvent","_processException","lineno","Y","frame","_normalizeFrame","in_app","ha","stackInfoUrl","normalized","filename","line","colno","column","function","ga","prefixedMessage","culprit","ia","request","Referer","breadcrumbs","_trimBreadcrumbs","ja","urlProp","urlProps","ka","httpData","userAgent","User-Agent","referrer","z","_backoffDuration","_backoffStart","na","oa","current","last","pa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Z","baseData","project","platform","_getHttpData","serverName","server_name","_sanitizeData","forEach","random","_sendProcessedPayload","qa","sa","ra","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","ta","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","open","setRequestHeader","send","ua","hash","evaluated","A","$","setUser","setReleaseContext","10","11","9","RavenConstructor","_Raven","noConflict","Client","what","supportsErrorEvent","ErrorEvent","supportsDOMError","DOMError","supportsDOMException","DOMException","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","sanitizeMask","safeInput","o_O","getLocationHref","getLocationOrigin","origin","hostname","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","responseText","sourceMaps","sourceMapAddress","charAt","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","y","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","string","raw"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file diff --git a/dist/angular,console,require,vue/raven.js b/dist/angular,console,require,vue/raven.js index 035ca77b042a..7810acc44916 100644 --- a/dist/angular,console,require,vue/raven.js +++ b/dist/angular,console,require,vue/raven.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.25.0 (80dffad) | github.com/getsentry/raven-js */ +/*! Raven.js 3.25.1 (b6f3c7a) | github.com/getsentry/raven-js */ /* * Includes TraceKit @@ -386,7 +386,7 @@ Raven.prototype = { // webpack (using a build step causes webpack #1617). Grunt verifies that // this value matches package.json during build. // See: https://github.com/getsentry/raven-js/issues/465 - VERSION: '3.25.0', + VERSION: '3.25.1', debug: false, @@ -1695,8 +1695,8 @@ Raven.prototype = { var hasPushAndReplaceState = !isChromePackagedApp && _window.history && - history.pushState && - history.replaceState; + _window.history.pushState && + _window.history.replaceState; if (autoBreadcrumbs.location && hasPushAndReplaceState) { // TODO: remove onpopstate handler on uninstall() var oldOnPopState = _window.onpopstate; @@ -1725,8 +1725,8 @@ Raven.prototype = { }; }; - fill(history, 'pushState', historyReplacementFunction, wrappedBuiltIns); - fill(history, 'replaceState', historyReplacementFunction, wrappedBuiltIns); + fill(_window.history, 'pushState', historyReplacementFunction, wrappedBuiltIns); + fill(_window.history, 'replaceState', historyReplacementFunction, wrappedBuiltIns); } if (autoBreadcrumbs.console && 'console' in _window && console.log) { @@ -2016,7 +2016,7 @@ Raven.prototype = { if (this._hasNavigator && _navigator.userAgent) { httpData.headers = { - 'User-Agent': navigator.userAgent + 'User-Agent': _navigator.userAgent }; } @@ -3191,6 +3191,16 @@ function getLocationHref() { function getLocationOrigin() { if (typeof document === 'undefined' || document.location == null) return ''; + + // Oh dear IE10... + if (!document.location.origin) { + document.location.origin = + document.location.protocol + + '//' + + document.location.hostname + + (document.location.port ? ':' + document.location.port : ''); + } + return document.location.origin; } diff --git a/dist/angular,console,require,vue/raven.min.js b/dist/angular,console,require,vue/raven.min.js index df76db7955e1..8665d0a65e75 100644 --- a/dist/angular,console,require,vue/raven.min.js +++ b/dist/angular,console,require,vue/raven.min.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.25.0 (80dffad) | github.com/getsentry/raven-js */ -!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.Raven=a()}}(function(){var a;return function b(a,c,d){function e(g,h){if(!c[g]){if(!a[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};a[g][0].call(k.exports,function(b){var c=a[g][1][b];return e(c?c:b)},k,k.exports,b,a,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;g":"anonymous component")+(a._isVue&&a.$options.__file?" at "+a.$options.__file:"")}function e(a,b){if(b=b||window.Vue,b&&b.config){var c=b.config.errorHandler;b.config.errorHandler=function(b,e,f){var g={};"[object Object]"===Object.prototype.toString.call(e)&&(g.componentName=d(e),g.propsData=e.$options.propsData),"undefined"!=typeof f&&(g.lifecycleHook=f),a.captureException(b,{extra:g}),"function"==typeof c&&c.call(this,b,e,f)}}}b.exports=e,a(8).addPlugin(b.exports)},{8:8}],5:[function(a,b,c){function d(a){this.name="RavenConfigError",this.message=a}d.prototype=new Error,d.prototype.constructor=d,b.exports=d},{}],6:[function(a,b,c){var d=a(9),e=function(a,b,c){var e=a[b],f=a;if(b in a){var g="warn"===b?"warning":b;a[b]=function(){var a=[].slice.call(arguments),h=d.safeJoin(a," "),i={level:g,logger:"console",extra:{arguments:a}};"assert"===b?a[0]===!1&&(h="Assertion failed: "+(d.safeJoin(a.slice(1)," ")||"console.assert"),i.extra.arguments=a.slice(1),c&&c(h,i)):c&&c(h,i),e&&Function.prototype.apply.call(e,f,a)}}};b.exports={wrapMethod:e}},{9:9}],7:[function(a,b,c){(function(c){function d(){return+new Date}function e(a,b){return s(b)?function(c){return b(c,a)}:b}function f(){this.b=!("object"!=typeof JSON||!JSON.stringify),this.c=!r(S),this.d=!r(T),this.e=null,this.f=null,this.g=null,this.h=null,this.i=null,this.j=null,this.k={},this.l={release:R.SENTRY_RELEASE&&R.SENTRY_RELEASE.id,logger:"javascript",ignoreErrors:[],ignoreUrls:[],whitelistUrls:[],includePaths:[],headers:null,collectWindowErrors:!0,captureUnhandledRejections:!0,maxMessageLength:0,maxUrlLength:250,stackTraceLimit:50,autoBreadcrumbs:!0,instrument:!0,sampleRate:1,sanitizeKeys:[]},this.m={method:"POST",keepalive:!0,referrerPolicy:K()?"origin":""},this.n=0,this.o=!1,this.p=Error.stackTraceLimit,this.q=R.console||{},this.r={},this.s=[],this.t=d(),this.u=[],this.v=[],this.w=null,this.x=R.location,this.y=this.x&&this.x.href,this.z();for(var a in this.q)this.r[a]=this.q[a]}var g=a(10),h=a(11),i=a(12),j=a(5),k=a(9),l=k.isErrorEvent,m=k.isDOMError,n=k.isDOMException,o=k.isError,p=k.isObject,q=k.isPlainObject,r=k.isUndefined,s=k.isFunction,t=k.isString,u=k.isArray,v=k.isEmptyObject,w=k.each,x=k.objectMerge,y=k.truncate,z=k.objectFrozen,A=k.hasKey,B=k.joinRegExp,C=k.urlencode,D=k.uuid4,E=k.htmlTreeAsString,F=k.isSameException,G=k.isSameStacktrace,H=k.parseUrl,I=k.fill,J=k.supportsFetch,K=k.supportsReferrerPolicy,L=k.serializeKeysForMessage,M=k.serializeException,N=k.sanitize,O=a(6).wrapMethod,P="source protocol user pass host port path".split(" "),Q=/^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/,R="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},S=R.document,T=R.navigator;f.prototype={VERSION:"3.25.0",debug:!1,TraceKit:g,config:function(a,b){var c=this;if(c.h)return this.A("error","Error: Raven has already been configured"),c;if(!a)return c;var d=c.l;b&&w(b,function(a,b){"tags"===a||"extra"===a||"user"===a?c.k[a]=b:d[a]=b}),c.setDSN(a),d.ignoreErrors.push(/^Script error\.?$/),d.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/),d.ignoreErrors=B(d.ignoreErrors),d.ignoreUrls=!!d.ignoreUrls.length&&B(d.ignoreUrls),d.whitelistUrls=!!d.whitelistUrls.length&&B(d.whitelistUrls),d.includePaths=B(d.includePaths),d.maxBreadcrumbs=Math.max(0,Math.min(d.maxBreadcrumbs||100,100));var e={xhr:!0,console:!0,dom:!0,location:!0,sentry:!0},f=d.autoBreadcrumbs;"[object Object]"==={}.toString.call(f)?f=x(e,f):f!==!1&&(f=e),d.autoBreadcrumbs=f;var h={tryCatch:!0},i=d.instrument;return"[object Object]"==={}.toString.call(i)?i=x(h,i):i!==!1&&(i=h),d.instrument=i,g.collectWindowErrors=!!d.collectWindowErrors,c},install:function(){var a=this;return a.isSetup()&&!a.o&&(g.report.subscribe(function(){a.B.apply(a,arguments)}),a.l.captureUnhandledRejections&&a.C(),a.D(),a.l.instrument&&a.l.instrument.tryCatch&&a.E(),a.l.autoBreadcrumbs&&a.F(),a.G(),a.o=!0),Error.stackTraceLimit=a.l.stackTraceLimit,this},setDSN:function(a){var b=this,c=b.H(a),d=c.path.lastIndexOf("/"),e=c.path.substr(1,d);b.I=a,b.i=c.user,b.J=c.pass&&c.pass.substr(1),b.j=c.path.substr(d+1),b.h=b.K(c),b.L=b.h+"/"+e+"api/"+b.j+"/store/",this.z()},context:function(a,b,c){return s(a)&&(c=b||[],b=a,a=void 0),this.wrap(a,b).apply(this,c)},wrap:function(a,b,c){function d(){var d=[],f=arguments.length,g=!a||a&&a.deep!==!1;for(c&&s(c)&&c.apply(this,arguments);f--;)d[f]=g?e.wrap(a,arguments[f]):arguments[f];try{return b.apply(this,d)}catch(h){throw e.M(),e.captureException(h,a),h}}var e=this;if(r(b)&&!s(a))return a;if(s(a)&&(b=a,a=void 0),!s(b))return b;try{if(b.N)return b;if(b.O)return b.O}catch(f){return b}for(var g in b)A(b,g)&&(d[g]=b[g]);return d.prototype=b.prototype,b.O=d,d.N=!0,d.P=b,d},uninstall:function(){return g.report.uninstall(),this.Q(),this.R(),this.S(),this.T(),Error.stackTraceLimit=this.p,this.o=!1,this},U:function(a){this.A("debug","Raven caught unhandled promise rejection:",a),this.captureException(a.reason,{extra:{unhandledPromiseRejection:!0}})},C:function(){return this.U=this.U.bind(this),R.addEventListener&&R.addEventListener("unhandledrejection",this.U),this},Q:function(){return R.removeEventListener&&R.removeEventListener("unhandledrejection",this.U),this},captureException:function(a,b){if(b=x({trimHeadFrames:0},b?b:{}),l(a)&&a.error)a=a.error;else{if(m(a)||n(a)){var c=a.name||(m(a)?"DOMError":"DOMException"),d=a.message?c+": "+a.message:c;return this.captureMessage(d,x(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}))}if(o(a))a=a;else{if(!q(a))return this.captureMessage(a,x(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}));b=this.V(b,a),a=new Error(b.message)}}this.e=a;try{var e=g.computeStackTrace(a);this.W(e,b)}catch(f){if(a!==f)throw f}return this},V:function(a,b){var c=Object.keys(b).sort(),d=x(a,{message:"Non-Error exception captured with keys: "+L(c),fingerprint:[i(c)],extra:a.extra||{}});return d.extra.X=M(b),d},captureMessage:function(a,b){if(!this.l.ignoreErrors.test||!this.l.ignoreErrors.test(a)){b=b||{},a+="";var c,d=x({message:a},b);try{throw new Error(a)}catch(e){c=e}c.name=null;var f=g.computeStackTrace(c),h=u(f.stack)&&f.stack[1];h&&"Raven.captureException"===h.func&&(h=f.stack[2]);var i=h&&h.url||"";if((!this.l.ignoreUrls.test||!this.l.ignoreUrls.test(i))&&(!this.l.whitelistUrls.test||this.l.whitelistUrls.test(i))){if(this.l.stacktrace||b&&b.stacktrace){d.fingerprint=null==d.fingerprint?a:d.fingerprint,b=x({trimHeadFrames:0},b),b.trimHeadFrames+=1;var j=this.Y(f,b);d.stacktrace={frames:j.reverse()}}return d.fingerprint&&(d.fingerprint=u(d.fingerprint)?d.fingerprint:[d.fingerprint]),this.Z(d),this}}},captureBreadcrumb:function(a){var b=x({timestamp:d()/1e3},a);if(s(this.l.breadcrumbCallback)){var c=this.l.breadcrumbCallback(b);if(p(c)&&!v(c))b=c;else if(c===!1)return this}return this.v.push(b),this.v.length>this.l.maxBreadcrumbs&&this.v.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.s.push([a,b]),this.o&&this.G(),this},setUserContext:function(a){return this.k.user=a,this},setExtraContext:function(a){return this.$("extra",a),this},setTagsContext:function(a){return this.$("tags",a),this},clearContext:function(){return this.k={},this},getContext:function(){return JSON.parse(h(this.k))},setEnvironment:function(a){return this.l.environment=a,this},setRelease:function(a){return this.l.release=a,this},setDataCallback:function(a){var b=this.l.dataCallback;return this.l.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.l.breadcrumbCallback;return this.l.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.l.shouldSendCallback;return this.l.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.l.transport=a,this},lastException:function(){return this.e},lastEventId:function(){return this.g},isSetup:function(){return!!this.b&&(!!this.h||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.A("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=R.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(S){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.I;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.k.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.K(this.H(c)),h=S.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(S.head||S.body).appendChild(h)}},M:function(){var a=this;this.n+=1,setTimeout(function(){a.n-=1})},_:function(a,b){var c,d;if(this.c){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),S.createEvent?(c=S.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=S.createEventObject(),c.eventType=a);for(d in b)A(b,d)&&(c[d]=b[d]);if(S.createEvent)S.dispatchEvent(c);else try{S.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},aa:function(a){var b=this;return function(c){if(b.ba=null,b.w!==c){b.w=c;var d;try{d=E(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ca:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.ba;g||a.aa("input")(c),clearTimeout(g),a.ba=setTimeout(function(){a.ba=null},b)}}},da:function(a,b){var c=H(this.x.href),d=H(b),e=H(a);this.y=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},D:function(){var a=this;a.ea=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.N?a.ea.apply(this.P,arguments):a.ea.apply(this,arguments)}},R:function(){this.ea&&(Function.prototype.toString=this.ea)},E:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.da(b.y,c+""),a.apply(this,arguments)}};I(history,"pushState",j,d),I(history,"replaceState",j,d)}if(c.console&&"console"in R&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};w(["debug","info","warn","error","log"],function(a,b){O(console,b,k)})}},S:function(){for(var a;this.u.length;){a=this.u.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},T:function(){for(var a in this.r)this.q[a]=this.r[a]},G:function(){var a=this;w(this.s,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},H:function(a){var b=Q.exec(a),c={},d=7;try{for(;d--;)c[P[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.l.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},K:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},B:function(){this.n||this.W.apply(this,arguments)},W:function(a,b){var c=this.Y(a,b);this._("handle",{stackInfo:a,options:b}),this.ga(a.name,a.message,a.url,a.lineno,c,b)},Y:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(w(a.stack,function(b,e){var f=c.ha(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.v,0)}),this.k.user&&(a.user=this.k.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),a=this.qa(a),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||v(a[b]))&&delete a[b]}),s(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!v(a)&&(!s(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.na()?void this.A("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function F(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&l(b))for(c=b.split(/\s+/),f=0;fc?Q(a,b-1):d}function R(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?X:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function S(a,b){function c(a){return m(a)?a.map(function(a){return c(a)}):k(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!m(b)||m(b)&&0===b.length)return a;var d,e=A(b),f="********";try{d=JSON.parse(T(a))}catch(g){return a}return c(d)}var T=a(11),U="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},V=3,W=51200,X=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isDOMError:g,isDOMException:h,isUndefined:i,isFunction:j,isPlainObject:k,isString:l,isArray:m,isEmptyObject:n,supportsErrorEvent:o,supportsDOMError:p,supportsDOMException:q,supportsFetch:r,supportsReferrerPolicy:s,supportsPromiseRejectionEvent:t,wrappedCallback:u,each:v,objectMerge:w,truncate:y,objectFrozen:x,hasKey:z,joinRegExp:A,urlencode:B,uuid4:D,htmlTreeAsString:E,htmlElementAsString:F,isSameException:I,isSameStacktrace:J,parseUrl:C,fill:K,safeJoin:L,serializeException:Q,serializeKeysForMessage:R,sanitize:S}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{11:11}],10:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}function e(){return"undefined"==typeof document||null==document.location?"":document.location.origin}var f=a(9),g={collectWindowErrors:!0,debug:!1},h="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},i=[].slice,j="?",k=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;g.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function e(a,b){var c=null;if(!b||g.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(i.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,h,i){var l=null,m=f.isErrorEvent(i)?i.error:i,n=f.isErrorEvent(a)?a.message:a;if(v)g.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&f.isError(m))l=g.computeStackTrace(m),e(l,!0);else{var p,r={url:b,line:c,column:h},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(k);p&&(s=p[1],n=p[2])}r.func=j,l={name:s,message:n,url:d(),stack:[r]},e(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=h.onerror,h.onerror=l,r=!0)}function n(){r&&(h.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,e.apply(null,[a,!1].concat(b))}function p(a,b){var c=i.call(arguments,1);if(v){if(u===a)return;o()}var d=g.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),g.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,f,g=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,h=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,i=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,k=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,l=/\((\S*)(?::(\d+))(?::(\d+))\)/,m=a.stack.split("\n"),n=[],o=(/^(.*) is undefined$/.exec(a.message),0),p=m.length;o eval")>-1;r&&(b=k.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==o||c[5]||"undefined"==typeof a.columnNumber||(n[0].column=a.columnNumber+1), -f={url:c[3],func:c[1]||j,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}if(!f.func&&f.line&&(f.func=j),f.url&&"blob:"===f.url.substr(0,5)){var s=new XMLHttpRequest;if(s.open("GET",f.url,!1),s.send(null),200===s.status){var t=s.responseText||"";t=t.slice(-300);var u=t.match(/\/\/# sourceMappingURL=(.*)$/);if(u){var v=u[1];"~"===v.charAt(0)&&(v=e()+v.slice(1)),f.url=v.slice(0,-4)}}}n.push(f)}return n.length?{name:a.name,message:a.message,url:d(),stack:n}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=j),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,e){for(var h,i,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==f&&o!==g.report){if(i={url:null,func:j,line:null,column:null},o.name?i.func=o.name:(h=k.exec(o.toString()))&&(i.func=h[1]),"undefined"==typeof i.func)try{i.func=h.input.substring(0,h.input.indexOf("{"))}catch(p){}m[""+o]?n=!0:m[""+o]=!0,l.push(i)}e&&l.splice(0,e);var q={name:a.name,message:a.message,url:d(),stack:l};return b(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),q}function f(b,e){var f=null;e=null==e?0:+e;try{if(f=a(b))return f}catch(h){if(g.debug)throw h}try{if(f=c(b,e+1))return f}catch(h){if(g.debug)throw h}return{name:b.name,message:b.message,url:d()}}return f.augmentStackTraceWithInitialElement=b,f.computeStackTraceFromStackProp=a,f}(),b.exports=g}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{9:9}],11:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}],12:[function(a,b,c){function d(a,b){var c=(65535&a)+(65535&b),d=(a>>16)+(b>>16)+(c>>16);return d<<16|65535&c}function e(a,b){return a<>>32-b}function f(a,b,c,f,g,h){return d(e(d(d(b,a),d(f,h)),g),c)}function g(a,b,c,d,e,g,h){return f(b&c|~b&d,a,b,e,g,h)}function h(a,b,c,d,e,g,h){return f(b&d|c&~d,a,b,e,g,h)}function i(a,b,c,d,e,g,h){return f(b^c^d,a,b,e,g,h)}function j(a,b,c,d,e,g,h){return f(c^(b|~d),a,b,e,g,h)}function k(a,b){a[b>>5]|=128<>>9<<4)+14]=b;var c,e,f,k,l,m=1732584193,n=-271733879,o=-1732584194,p=271733878;for(c=0;c>5]>>>b%32&255);return c}function m(a){var b,c=[];for(c[(a.length>>2)-1]=void 0,b=0;b>5]|=(255&a.charCodeAt(b/8))<16&&(e=k(e,8*a.length)),c=0;c<16;c+=1)f[c]=909522486^e[c],g[c]=1549556828^e[c];return d=k(f.concat(m(b)),512+8*b.length),l(k(g.concat(d),640))}function p(a){var b,c,d="0123456789abcdef",e="";for(c=0;c>>4&15)+d.charAt(15&b);return e}function q(a){return unescape(encodeURIComponent(a))}function r(a){return n(q(a))}function s(a){return p(r(a))}function t(a,b){return o(q(a),q(b))}function u(a,b){return p(t(a,b))}function v(a,b,c){return b?c?t(b,a):u(b,a):c?r(a):s(a)}b.exports=v},{}]},{},[8,1,2,3,4])(8)}); +/*! Raven.js 3.25.1 (b6f3c7a) | github.com/getsentry/raven-js */ +!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.Raven=a()}}(function(){var a;return function b(a,c,d){function e(g,h){if(!c[g]){if(!a[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};a[g][0].call(k.exports,function(b){var c=a[g][1][b];return e(c?c:b)},k,k.exports,b,a,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;g":"anonymous component")+(a._isVue&&a.$options.__file?" at "+a.$options.__file:"")}function e(a,b){if(b=b||window.Vue,b&&b.config){var c=b.config.errorHandler;b.config.errorHandler=function(b,e,f){var g={};"[object Object]"===Object.prototype.toString.call(e)&&(g.componentName=d(e),g.propsData=e.$options.propsData),"undefined"!=typeof f&&(g.lifecycleHook=f),a.captureException(b,{extra:g}),"function"==typeof c&&c.call(this,b,e,f)}}}b.exports=e,a(8).addPlugin(b.exports)},{8:8}],5:[function(a,b,c){function d(a){this.name="RavenConfigError",this.message=a}d.prototype=new Error,d.prototype.constructor=d,b.exports=d},{}],6:[function(a,b,c){var d=a(9),e=function(a,b,c){var e=a[b],f=a;if(b in a){var g="warn"===b?"warning":b;a[b]=function(){var a=[].slice.call(arguments),h=d.safeJoin(a," "),i={level:g,logger:"console",extra:{arguments:a}};"assert"===b?a[0]===!1&&(h="Assertion failed: "+(d.safeJoin(a.slice(1)," ")||"console.assert"),i.extra.arguments=a.slice(1),c&&c(h,i)):c&&c(h,i),e&&Function.prototype.apply.call(e,f,a)}}};b.exports={wrapMethod:e}},{9:9}],7:[function(a,b,c){(function(c){function d(){return+new Date}function e(a,b){return s(b)?function(c){return b(c,a)}:b}function f(){this.b=!("object"!=typeof JSON||!JSON.stringify),this.c=!r(S),this.d=!r(T),this.e=null,this.f=null,this.g=null,this.h=null,this.i=null,this.j=null,this.k={},this.l={release:R.SENTRY_RELEASE&&R.SENTRY_RELEASE.id,logger:"javascript",ignoreErrors:[],ignoreUrls:[],whitelistUrls:[],includePaths:[],headers:null,collectWindowErrors:!0,captureUnhandledRejections:!0,maxMessageLength:0,maxUrlLength:250,stackTraceLimit:50,autoBreadcrumbs:!0,instrument:!0,sampleRate:1,sanitizeKeys:[]},this.m={method:"POST",keepalive:!0,referrerPolicy:K()?"origin":""},this.n=0,this.o=!1,this.p=Error.stackTraceLimit,this.q=R.console||{},this.r={},this.s=[],this.t=d(),this.u=[],this.v=[],this.w=null,this.x=R.location,this.y=this.x&&this.x.href,this.z();for(var a in this.q)this.r[a]=this.q[a]}var g=a(10),h=a(11),i=a(12),j=a(5),k=a(9),l=k.isErrorEvent,m=k.isDOMError,n=k.isDOMException,o=k.isError,p=k.isObject,q=k.isPlainObject,r=k.isUndefined,s=k.isFunction,t=k.isString,u=k.isArray,v=k.isEmptyObject,w=k.each,x=k.objectMerge,y=k.truncate,z=k.objectFrozen,A=k.hasKey,B=k.joinRegExp,C=k.urlencode,D=k.uuid4,E=k.htmlTreeAsString,F=k.isSameException,G=k.isSameStacktrace,H=k.parseUrl,I=k.fill,J=k.supportsFetch,K=k.supportsReferrerPolicy,L=k.serializeKeysForMessage,M=k.serializeException,N=k.sanitize,O=a(6).wrapMethod,P="source protocol user pass host port path".split(" "),Q=/^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/,R="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},S=R.document,T=R.navigator;f.prototype={VERSION:"3.25.1",debug:!1,TraceKit:g,config:function(a,b){var c=this;if(c.h)return this.A("error","Error: Raven has already been configured"),c;if(!a)return c;var d=c.l;b&&w(b,function(a,b){"tags"===a||"extra"===a||"user"===a?c.k[a]=b:d[a]=b}),c.setDSN(a),d.ignoreErrors.push(/^Script error\.?$/),d.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/),d.ignoreErrors=B(d.ignoreErrors),d.ignoreUrls=!!d.ignoreUrls.length&&B(d.ignoreUrls),d.whitelistUrls=!!d.whitelistUrls.length&&B(d.whitelistUrls),d.includePaths=B(d.includePaths),d.maxBreadcrumbs=Math.max(0,Math.min(d.maxBreadcrumbs||100,100));var e={xhr:!0,console:!0,dom:!0,location:!0,sentry:!0},f=d.autoBreadcrumbs;"[object Object]"==={}.toString.call(f)?f=x(e,f):f!==!1&&(f=e),d.autoBreadcrumbs=f;var h={tryCatch:!0},i=d.instrument;return"[object Object]"==={}.toString.call(i)?i=x(h,i):i!==!1&&(i=h),d.instrument=i,g.collectWindowErrors=!!d.collectWindowErrors,c},install:function(){var a=this;return a.isSetup()&&!a.o&&(g.report.subscribe(function(){a.B.apply(a,arguments)}),a.l.captureUnhandledRejections&&a.C(),a.D(),a.l.instrument&&a.l.instrument.tryCatch&&a.E(),a.l.autoBreadcrumbs&&a.F(),a.G(),a.o=!0),Error.stackTraceLimit=a.l.stackTraceLimit,this},setDSN:function(a){var b=this,c=b.H(a),d=c.path.lastIndexOf("/"),e=c.path.substr(1,d);b.I=a,b.i=c.user,b.J=c.pass&&c.pass.substr(1),b.j=c.path.substr(d+1),b.h=b.K(c),b.L=b.h+"/"+e+"api/"+b.j+"/store/",this.z()},context:function(a,b,c){return s(a)&&(c=b||[],b=a,a=void 0),this.wrap(a,b).apply(this,c)},wrap:function(a,b,c){function d(){var d=[],f=arguments.length,g=!a||a&&a.deep!==!1;for(c&&s(c)&&c.apply(this,arguments);f--;)d[f]=g?e.wrap(a,arguments[f]):arguments[f];try{return b.apply(this,d)}catch(h){throw e.M(),e.captureException(h,a),h}}var e=this;if(r(b)&&!s(a))return a;if(s(a)&&(b=a,a=void 0),!s(b))return b;try{if(b.N)return b;if(b.O)return b.O}catch(f){return b}for(var g in b)A(b,g)&&(d[g]=b[g]);return d.prototype=b.prototype,b.O=d,d.N=!0,d.P=b,d},uninstall:function(){return g.report.uninstall(),this.Q(),this.R(),this.S(),this.T(),Error.stackTraceLimit=this.p,this.o=!1,this},U:function(a){this.A("debug","Raven caught unhandled promise rejection:",a),this.captureException(a.reason,{extra:{unhandledPromiseRejection:!0}})},C:function(){return this.U=this.U.bind(this),R.addEventListener&&R.addEventListener("unhandledrejection",this.U),this},Q:function(){return R.removeEventListener&&R.removeEventListener("unhandledrejection",this.U),this},captureException:function(a,b){if(b=x({trimHeadFrames:0},b?b:{}),l(a)&&a.error)a=a.error;else{if(m(a)||n(a)){var c=a.name||(m(a)?"DOMError":"DOMException"),d=a.message?c+": "+a.message:c;return this.captureMessage(d,x(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}))}if(o(a))a=a;else{if(!q(a))return this.captureMessage(a,x(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}));b=this.V(b,a),a=new Error(b.message)}}this.e=a;try{var e=g.computeStackTrace(a);this.W(e,b)}catch(f){if(a!==f)throw f}return this},V:function(a,b){var c=Object.keys(b).sort(),d=x(a,{message:"Non-Error exception captured with keys: "+L(c),fingerprint:[i(c)],extra:a.extra||{}});return d.extra.X=M(b),d},captureMessage:function(a,b){if(!this.l.ignoreErrors.test||!this.l.ignoreErrors.test(a)){b=b||{},a+="";var c,d=x({message:a},b);try{throw new Error(a)}catch(e){c=e}c.name=null;var f=g.computeStackTrace(c),h=u(f.stack)&&f.stack[1];h&&"Raven.captureException"===h.func&&(h=f.stack[2]);var i=h&&h.url||"";if((!this.l.ignoreUrls.test||!this.l.ignoreUrls.test(i))&&(!this.l.whitelistUrls.test||this.l.whitelistUrls.test(i))){if(this.l.stacktrace||b&&b.stacktrace){d.fingerprint=null==d.fingerprint?a:d.fingerprint,b=x({trimHeadFrames:0},b),b.trimHeadFrames+=1;var j=this.Y(f,b);d.stacktrace={frames:j.reverse()}}return d.fingerprint&&(d.fingerprint=u(d.fingerprint)?d.fingerprint:[d.fingerprint]),this.Z(d),this}}},captureBreadcrumb:function(a){var b=x({timestamp:d()/1e3},a);if(s(this.l.breadcrumbCallback)){var c=this.l.breadcrumbCallback(b);if(p(c)&&!v(c))b=c;else if(c===!1)return this}return this.v.push(b),this.v.length>this.l.maxBreadcrumbs&&this.v.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.s.push([a,b]),this.o&&this.G(),this},setUserContext:function(a){return this.k.user=a,this},setExtraContext:function(a){return this.$("extra",a),this},setTagsContext:function(a){return this.$("tags",a),this},clearContext:function(){return this.k={},this},getContext:function(){return JSON.parse(h(this.k))},setEnvironment:function(a){return this.l.environment=a,this},setRelease:function(a){return this.l.release=a,this},setDataCallback:function(a){var b=this.l.dataCallback;return this.l.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.l.breadcrumbCallback;return this.l.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.l.shouldSendCallback;return this.l.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.l.transport=a,this},lastException:function(){return this.e},lastEventId:function(){return this.g},isSetup:function(){return!!this.b&&(!!this.h||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.A("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=R.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(S){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.I;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.k.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.K(this.H(c)),h=S.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(S.head||S.body).appendChild(h)}},M:function(){var a=this;this.n+=1,setTimeout(function(){a.n-=1})},_:function(a,b){var c,d;if(this.c){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),S.createEvent?(c=S.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=S.createEventObject(),c.eventType=a);for(d in b)A(b,d)&&(c[d]=b[d]);if(S.createEvent)S.dispatchEvent(c);else try{S.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},aa:function(a){var b=this;return function(c){if(b.ba=null,b.w!==c){b.w=c;var d;try{d=E(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ca:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.ba;g||a.aa("input")(c),clearTimeout(g),a.ba=setTimeout(function(){a.ba=null},b)}}},da:function(a,b){var c=H(this.x.href),d=H(b),e=H(a);this.y=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},D:function(){var a=this;a.ea=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.N?a.ea.apply(this.P,arguments):a.ea.apply(this,arguments)}},R:function(){this.ea&&(Function.prototype.toString=this.ea)},E:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.da(b.y,c+""),a.apply(this,arguments)}};I(R.history,"pushState",j,d),I(R.history,"replaceState",j,d)}if(c.console&&"console"in R&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};w(["debug","info","warn","error","log"],function(a,b){O(console,b,k)})}},S:function(){for(var a;this.u.length;){a=this.u.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},T:function(){for(var a in this.r)this.q[a]=this.r[a]},G:function(){var a=this;w(this.s,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},H:function(a){var b=Q.exec(a),c={},d=7;try{for(;d--;)c[P[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.l.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},K:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},B:function(){this.n||this.W.apply(this,arguments)},W:function(a,b){var c=this.Y(a,b);this._("handle",{stackInfo:a,options:b}),this.ga(a.name,a.message,a.url,a.lineno,c,b)},Y:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(w(a.stack,function(b,e){var f=c.ha(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.v,0)}),this.k.user&&(a.user=this.k.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),a=this.qa(a),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||v(a[b]))&&delete a[b]}),s(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!v(a)&&(!s(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.na()?void this.A("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function F(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&l(b))for(c=b.split(/\s+/),f=0;fc?Q(a,b-1):d}function R(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?X:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function S(a,b){function c(a){return m(a)?a.map(function(a){return c(a)}):k(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!m(b)||m(b)&&0===b.length)return a;var d,e=A(b),f="********";try{d=JSON.parse(T(a))}catch(g){return a}return c(d)}var T=a(11),U="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},V=3,W=51200,X=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isDOMError:g,isDOMException:h,isUndefined:i,isFunction:j,isPlainObject:k,isString:l,isArray:m,isEmptyObject:n,supportsErrorEvent:o,supportsDOMError:p,supportsDOMException:q,supportsFetch:r,supportsReferrerPolicy:s,supportsPromiseRejectionEvent:t,wrappedCallback:u,each:v,objectMerge:w,truncate:y,objectFrozen:x,hasKey:z,joinRegExp:A,urlencode:B,uuid4:D,htmlTreeAsString:E,htmlElementAsString:F,isSameException:I,isSameStacktrace:J,parseUrl:C,fill:K,safeJoin:L,serializeException:Q,serializeKeysForMessage:R,sanitize:S}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{11:11}],10:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}function e(){return"undefined"==typeof document||null==document.location?"":(document.location.origin||(document.location.origin=document.location.protocol+"//"+document.location.hostname+(document.location.port?":"+document.location.port:"")),document.location.origin)}var f=a(9),g={collectWindowErrors:!0,debug:!1},h="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},i=[].slice,j="?",k=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;g.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function e(a,b){var c=null;if(!b||g.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(i.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,h,i){var l=null,m=f.isErrorEvent(i)?i.error:i,n=f.isErrorEvent(a)?a.message:a;if(v)g.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&f.isError(m))l=g.computeStackTrace(m),e(l,!0);else{var p,r={url:b,line:c,column:h},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(k);p&&(s=p[1],n=p[2])}r.func=j,l={name:s,message:n,url:d(),stack:[r]},e(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=h.onerror,h.onerror=l,r=!0)}function n(){r&&(h.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,e.apply(null,[a,!1].concat(b))}function p(a,b){var c=i.call(arguments,1);if(v){if(u===a)return;o()}var d=g.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),g.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,f,g=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,h=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,i=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,k=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,l=/\((\S*)(?::(\d+))(?::(\d+))\)/,m=a.stack.split("\n"),n=[],o=(/^(.*) is undefined$/.exec(a.message),0),p=m.length;o eval")>-1;r&&(b=k.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==o||c[5]||"undefined"==typeof a.columnNumber||(n[0].column=a.columnNumber+1),f={url:c[3],func:c[1]||j,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}if(!f.func&&f.line&&(f.func=j),f.url&&"blob:"===f.url.substr(0,5)){var s=new XMLHttpRequest;if(s.open("GET",f.url,!1),s.send(null),200===s.status){var t=s.responseText||"";t=t.slice(-300);var u=t.match(/\/\/# sourceMappingURL=(.*)$/);if(u){var v=u[1];"~"===v.charAt(0)&&(v=e()+v.slice(1)),f.url=v.slice(0,-4)}}}n.push(f)}return n.length?{name:a.name,message:a.message,url:d(),stack:n}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=j),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,e){for(var h,i,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==f&&o!==g.report){if(i={url:null,func:j,line:null,column:null},o.name?i.func=o.name:(h=k.exec(o.toString()))&&(i.func=h[1]),"undefined"==typeof i.func)try{i.func=h.input.substring(0,h.input.indexOf("{"))}catch(p){}m[""+o]?n=!0:m[""+o]=!0,l.push(i)}e&&l.splice(0,e);var q={name:a.name,message:a.message,url:d(),stack:l};return b(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),q}function f(b,e){var f=null;e=null==e?0:+e;try{if(f=a(b))return f}catch(h){if(g.debug)throw h}try{if(f=c(b,e+1))return f}catch(h){if(g.debug)throw h}return{name:b.name,message:b.message,url:d()}}return f.augmentStackTraceWithInitialElement=b,f.computeStackTraceFromStackProp=a,f}(),b.exports=g}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{9:9}],11:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}],12:[function(a,b,c){function d(a,b){var c=(65535&a)+(65535&b),d=(a>>16)+(b>>16)+(c>>16);return d<<16|65535&c}function e(a,b){return a<>>32-b}function f(a,b,c,f,g,h){return d(e(d(d(b,a),d(f,h)),g),c)}function g(a,b,c,d,e,g,h){return f(b&c|~b&d,a,b,e,g,h)}function h(a,b,c,d,e,g,h){return f(b&d|c&~d,a,b,e,g,h)}function i(a,b,c,d,e,g,h){return f(b^c^d,a,b,e,g,h)}function j(a,b,c,d,e,g,h){return f(c^(b|~d),a,b,e,g,h)}function k(a,b){a[b>>5]|=128<>>9<<4)+14]=b;var c,e,f,k,l,m=1732584193,n=-271733879,o=-1732584194,p=271733878;for(c=0;c>5]>>>b%32&255);return c}function m(a){var b,c=[];for(c[(a.length>>2)-1]=void 0,b=0;b>5]|=(255&a.charCodeAt(b/8))<16&&(e=k(e,8*a.length)),c=0;c<16;c+=1)f[c]=909522486^e[c],g[c]=1549556828^e[c];return d=k(f.concat(m(b)),512+8*b.length),l(k(g.concat(d),640))}function p(a){var b,c,d="0123456789abcdef",e="";for(c=0;c>>4&15)+d.charAt(15&b);return e}function q(a){return unescape(encodeURIComponent(a))}function r(a){return n(q(a))}function s(a){return p(r(a))}function t(a,b){return o(q(a),q(b))}function u(a,b){return p(t(a,b))}function v(a,b,c){return b?c?t(b,a):u(b,a):c?r(a):s(a)}b.exports=v},{}]},{},[8,1,2,3,4])(8)}); //# sourceMappingURL=raven.min.js.map \ No newline at end of file diff --git a/dist/angular,console,require,vue/raven.min.js.map b/dist/angular,console,require,vue/raven.min.js.map index c061367c08bc..d1debb488689 100644 --- a/dist/angular,console,require,vue/raven.min.js.map +++ b/dist/angular,console,require,vue/raven.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","angularPlugin","angular","RavenProvider","$get","$window","ExceptionHandlerProvider","$provide","decorator","exceptionHandler","R","$delegate","ex","cause","captureException","extra","moduleName","provider","config","setDataCallback","wrappedCallback","data","_normalizeData","angularPattern","exception","values","matches","exec","value","type","message","angularDocs","substr","addPlugin","8","9","2","consolePlugin","console","pluginOptions","logLevels","levels","push","callback","msg","captureMessage","level","pop","wrapConsoleMethod","wrapMethod","6","3","requirePlugin","wrap","deep","4","formatComponentName","vm","$root","name","_isVue","$options","_componentTag","__file","vuePlugin","Vue","_oldOnError","errorHandler","error","info","metaData","Object","prototype","toString","componentName","propsData","lifecycleHook","5","RavenConfigError","constructor","utils","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","safeJoin","logger","Function","apply","7","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","sanitizeKeys","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isErrorEvent","isDOMError","isDOMException","isError","isObject","isPlainObject","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","sanitize","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","dsn","options","_logDebug","globalOptions","key","setDSN","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","context","func","undefined","_before","wrapped","_ignoreNextOnError","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","U","event","reason","unhandledPromiseRejection","C","_promiseRejectionHandler","bind","addEventListener","Q","removeEventListener","trimHeadFrames","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","V","currentOptions","exKeys","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","M","setTimeout","_","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","aa","evtName","_keypressTimeout","target","category","ca","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","da","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","D","_originalFunctionToString","E","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","F","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","S","builtin","T","G","installer","concat","H","str","m","allowSecretKey","K","port","B","W","stackInfo","_triggerEvent","_processException","lineno","Y","frame","_normalizeFrame","in_app","ha","stackInfoUrl","normalized","filename","line","colno","column","function","ga","prefixedMessage","culprit","ia","request","Referer","breadcrumbs","_trimBreadcrumbs","ja","urlProp","urlProps","ka","httpData","userAgent","User-Agent","referrer","z","_backoffDuration","_backoffStart","na","oa","current","last","pa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Z","baseData","project","platform","_getHttpData","serverName","server_name","_sanitizeData","forEach","random","_sendProcessedPayload","qa","sa","ra","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","ta","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","onerror","open","setRequestHeader","send","ua","hash","evaluated","A","$","setUser","setReleaseContext","10","11","12","RavenConstructor","_Raven","noConflict","Client","what","supportsErrorEvent","ErrorEvent","supportsDOMError","DOMError","supportsDOMException","DOMException","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","sanitizeMask","safeInput","o_O","getLocationHref","getLocationOrigin","origin","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","responseText","sourceMaps","sourceMapAddress","charAt","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","y","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","string","raw"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file +{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","angularPlugin","angular","RavenProvider","$get","$window","ExceptionHandlerProvider","$provide","decorator","exceptionHandler","R","$delegate","ex","cause","captureException","extra","moduleName","provider","config","setDataCallback","wrappedCallback","data","_normalizeData","angularPattern","exception","values","matches","exec","value","type","message","angularDocs","substr","addPlugin","8","9","2","consolePlugin","console","pluginOptions","logLevels","levels","push","callback","msg","captureMessage","level","pop","wrapConsoleMethod","wrapMethod","6","3","requirePlugin","wrap","deep","4","formatComponentName","vm","$root","name","_isVue","$options","_componentTag","__file","vuePlugin","Vue","_oldOnError","errorHandler","error","info","metaData","Object","prototype","toString","componentName","propsData","lifecycleHook","5","RavenConfigError","constructor","utils","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","safeJoin","logger","Function","apply","7","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","sanitizeKeys","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isErrorEvent","isDOMError","isDOMException","isError","isObject","isPlainObject","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","sanitize","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","dsn","options","_logDebug","globalOptions","key","setDSN","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","context","func","undefined","_before","wrapped","_ignoreNextOnError","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","U","event","reason","unhandledPromiseRejection","C","_promiseRejectionHandler","bind","addEventListener","Q","removeEventListener","trimHeadFrames","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","V","currentOptions","exKeys","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","M","setTimeout","_","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","aa","evtName","_keypressTimeout","target","category","ca","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","da","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","D","_originalFunctionToString","E","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","F","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","S","builtin","T","G","installer","concat","H","str","m","allowSecretKey","K","port","B","W","stackInfo","_triggerEvent","_processException","lineno","Y","frame","_normalizeFrame","in_app","ha","stackInfoUrl","normalized","filename","line","colno","column","function","ga","prefixedMessage","culprit","ia","request","Referer","breadcrumbs","_trimBreadcrumbs","ja","urlProp","urlProps","ka","httpData","userAgent","User-Agent","referrer","z","_backoffDuration","_backoffStart","na","oa","current","last","pa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Z","baseData","project","platform","_getHttpData","serverName","server_name","_sanitizeData","forEach","random","_sendProcessedPayload","qa","sa","ra","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","ta","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","onerror","open","setRequestHeader","send","ua","hash","evaluated","A","$","setUser","setReleaseContext","10","11","12","RavenConstructor","_Raven","noConflict","Client","what","supportsErrorEvent","ErrorEvent","supportsDOMError","DOMError","supportsDOMException","DOMException","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","sanitizeMask","safeInput","o_O","getLocationHref","getLocationOrigin","origin","hostname","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","responseText","sourceMaps","sourceMapAddress","charAt","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","y","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","string","raw"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file diff --git a/dist/angular,console,require/raven.js b/dist/angular,console,require/raven.js index 5ac6f1f2bb78..6ec82a09a127 100644 --- a/dist/angular,console,require/raven.js +++ b/dist/angular,console,require/raven.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.25.0 (80dffad) | github.com/getsentry/raven-js */ +/*! Raven.js 3.25.1 (b6f3c7a) | github.com/getsentry/raven-js */ /* * Includes TraceKit @@ -336,7 +336,7 @@ Raven.prototype = { // webpack (using a build step causes webpack #1617). Grunt verifies that // this value matches package.json during build. // See: https://github.com/getsentry/raven-js/issues/465 - VERSION: '3.25.0', + VERSION: '3.25.1', debug: false, @@ -1645,8 +1645,8 @@ Raven.prototype = { var hasPushAndReplaceState = !isChromePackagedApp && _window.history && - history.pushState && - history.replaceState; + _window.history.pushState && + _window.history.replaceState; if (autoBreadcrumbs.location && hasPushAndReplaceState) { // TODO: remove onpopstate handler on uninstall() var oldOnPopState = _window.onpopstate; @@ -1675,8 +1675,8 @@ Raven.prototype = { }; }; - fill(history, 'pushState', historyReplacementFunction, wrappedBuiltIns); - fill(history, 'replaceState', historyReplacementFunction, wrappedBuiltIns); + fill(_window.history, 'pushState', historyReplacementFunction, wrappedBuiltIns); + fill(_window.history, 'replaceState', historyReplacementFunction, wrappedBuiltIns); } if (autoBreadcrumbs.console && 'console' in _window && console.log) { @@ -1966,7 +1966,7 @@ Raven.prototype = { if (this._hasNavigator && _navigator.userAgent) { httpData.headers = { - 'User-Agent': navigator.userAgent + 'User-Agent': _navigator.userAgent }; } @@ -3141,6 +3141,16 @@ function getLocationHref() { function getLocationOrigin() { if (typeof document === 'undefined' || document.location == null) return ''; + + // Oh dear IE10... + if (!document.location.origin) { + document.location.origin = + document.location.protocol + + '//' + + document.location.hostname + + (document.location.port ? ':' + document.location.port : ''); + } + return document.location.origin; } diff --git a/dist/angular,console,require/raven.min.js b/dist/angular,console,require/raven.min.js index ab8b3f04c229..b21fe9480db1 100644 --- a/dist/angular,console,require/raven.min.js +++ b/dist/angular,console,require/raven.min.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.25.0 (80dffad) | github.com/getsentry/raven-js */ -!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.Raven=a()}}(function(){var a;return function b(a,c,d){function e(g,h){if(!c[g]){if(!a[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};a[g][0].call(k.exports,function(b){var c=a[g][1][b];return e(c?c:b)},k,k.exports,b,a,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;gthis.l.maxBreadcrumbs&&this.v.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.s.push([a,b]),this.o&&this.G(),this},setUserContext:function(a){return this.k.user=a,this},setExtraContext:function(a){return this.$("extra",a),this},setTagsContext:function(a){return this.$("tags",a),this},clearContext:function(){return this.k={},this},getContext:function(){return JSON.parse(h(this.k))},setEnvironment:function(a){return this.l.environment=a,this},setRelease:function(a){return this.l.release=a,this},setDataCallback:function(a){var b=this.l.dataCallback;return this.l.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.l.breadcrumbCallback;return this.l.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.l.shouldSendCallback;return this.l.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.l.transport=a,this},lastException:function(){return this.e},lastEventId:function(){return this.g},isSetup:function(){return!!this.b&&(!!this.h||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.A("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=R.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(S){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.I;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.k.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.K(this.H(c)),h=S.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(S.head||S.body).appendChild(h)}},M:function(){var a=this;this.n+=1,setTimeout(function(){a.n-=1})},_:function(a,b){var c,d;if(this.c){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),S.createEvent?(c=S.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=S.createEventObject(),c.eventType=a);for(d in b)A(b,d)&&(c[d]=b[d]);if(S.createEvent)S.dispatchEvent(c);else try{S.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},aa:function(a){var b=this;return function(c){if(b.ba=null,b.w!==c){b.w=c;var d;try{d=E(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ca:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.ba;g||a.aa("input")(c),clearTimeout(g),a.ba=setTimeout(function(){a.ba=null},b)}}},da:function(a,b){var c=H(this.x.href),d=H(b),e=H(a);this.y=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},D:function(){var a=this;a.ea=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.N?a.ea.apply(this.P,arguments):a.ea.apply(this,arguments)}},R:function(){this.ea&&(Function.prototype.toString=this.ea)},E:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.da(b.y,c+""),a.apply(this,arguments)}};I(history,"pushState",j,d),I(history,"replaceState",j,d)}if(c.console&&"console"in R&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};w(["debug","info","warn","error","log"],function(a,b){O(console,b,k)})}},S:function(){for(var a;this.u.length;){a=this.u.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},T:function(){for(var a in this.r)this.q[a]=this.r[a]},G:function(){var a=this;w(this.s,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},H:function(a){var b=Q.exec(a),c={},d=7;try{for(;d--;)c[P[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.l.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},K:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},B:function(){this.n||this.W.apply(this,arguments)},W:function(a,b){var c=this.Y(a,b);this._("handle",{stackInfo:a,options:b}),this.ga(a.name,a.message,a.url,a.lineno,c,b)},Y:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(w(a.stack,function(b,e){var f=c.ha(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.v,0)}),this.k.user&&(a.user=this.k.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),a=this.qa(a),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||v(a[b]))&&delete a[b]}),s(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!v(a)&&(!s(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.na()?void this.A("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function F(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&l(b))for(c=b.split(/\s+/),f=0;fc?Q(a,b-1):d}function R(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?X:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function S(a,b){function c(a){return m(a)?a.map(function(a){return c(a)}):k(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!m(b)||m(b)&&0===b.length)return a;var d,e=A(b),f="********";try{d=JSON.parse(T(a))}catch(g){return a}return c(d)}var T=a(10),U="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},V=3,W=51200,X=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isDOMError:g,isDOMException:h,isUndefined:i,isFunction:j,isPlainObject:k,isString:l,isArray:m,isEmptyObject:n,supportsErrorEvent:o,supportsDOMError:p,supportsDOMException:q,supportsFetch:r,supportsReferrerPolicy:s,supportsPromiseRejectionEvent:t,wrappedCallback:u,each:v,objectMerge:w,truncate:y,objectFrozen:x,hasKey:z,joinRegExp:A,urlencode:B,uuid4:D,htmlTreeAsString:E,htmlElementAsString:F,isSameException:I,isSameStacktrace:J,parseUrl:C,fill:K,safeJoin:L,serializeException:Q,serializeKeysForMessage:R,sanitize:S}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{10:10}],9:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}function e(){return"undefined"==typeof document||null==document.location?"":document.location.origin}var f=a(8),g={collectWindowErrors:!0,debug:!1},h="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},i=[].slice,j="?",k=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;g.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function e(a,b){var c=null;if(!b||g.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(i.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,h,i){var l=null,m=f.isErrorEvent(i)?i.error:i,n=f.isErrorEvent(a)?a.message:a;if(v)g.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&f.isError(m))l=g.computeStackTrace(m),e(l,!0);else{var p,r={url:b,line:c,column:h},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(k);p&&(s=p[1],n=p[2])}r.func=j,l={name:s,message:n,url:d(),stack:[r]},e(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=h.onerror,h.onerror=l,r=!0)}function n(){r&&(h.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,e.apply(null,[a,!1].concat(b))}function p(a,b){var c=i.call(arguments,1);if(v){if(u===a)return;o()}var d=g.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),g.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,f,g=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,h=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,i=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,k=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,l=/\((\S*)(?::(\d+))(?::(\d+))\)/,m=a.stack.split("\n"),n=[],o=(/^(.*) is undefined$/.exec(a.message),0),p=m.length;o eval")>-1;r&&(b=k.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==o||c[5]||"undefined"==typeof a.columnNumber||(n[0].column=a.columnNumber+1),f={url:c[3],func:c[1]||j,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}if(!f.func&&f.line&&(f.func=j),f.url&&"blob:"===f.url.substr(0,5)){var s=new XMLHttpRequest;if(s.open("GET",f.url,!1),s.send(null),200===s.status){var t=s.responseText||"";t=t.slice(-300);var u=t.match(/\/\/# sourceMappingURL=(.*)$/);if(u){var v=u[1];"~"===v.charAt(0)&&(v=e()+v.slice(1)),f.url=v.slice(0,-4)}}}n.push(f)}return n.length?{name:a.name,message:a.message,url:d(),stack:n}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=j),a.stack.length>0&&a.stack[0].url===e.url){ -if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,e){for(var h,i,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==f&&o!==g.report){if(i={url:null,func:j,line:null,column:null},o.name?i.func=o.name:(h=k.exec(o.toString()))&&(i.func=h[1]),"undefined"==typeof i.func)try{i.func=h.input.substring(0,h.input.indexOf("{"))}catch(p){}m[""+o]?n=!0:m[""+o]=!0,l.push(i)}e&&l.splice(0,e);var q={name:a.name,message:a.message,url:d(),stack:l};return b(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),q}function f(b,e){var f=null;e=null==e?0:+e;try{if(f=a(b))return f}catch(h){if(g.debug)throw h}try{if(f=c(b,e+1))return f}catch(h){if(g.debug)throw h}return{name:b.name,message:b.message,url:d()}}return f.augmentStackTraceWithInitialElement=b,f.computeStackTraceFromStackProp=a,f}(),b.exports=g}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{8:8}],10:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}],11:[function(a,b,c){function d(a,b){var c=(65535&a)+(65535&b),d=(a>>16)+(b>>16)+(c>>16);return d<<16|65535&c}function e(a,b){return a<>>32-b}function f(a,b,c,f,g,h){return d(e(d(d(b,a),d(f,h)),g),c)}function g(a,b,c,d,e,g,h){return f(b&c|~b&d,a,b,e,g,h)}function h(a,b,c,d,e,g,h){return f(b&d|c&~d,a,b,e,g,h)}function i(a,b,c,d,e,g,h){return f(b^c^d,a,b,e,g,h)}function j(a,b,c,d,e,g,h){return f(c^(b|~d),a,b,e,g,h)}function k(a,b){a[b>>5]|=128<>>9<<4)+14]=b;var c,e,f,k,l,m=1732584193,n=-271733879,o=-1732584194,p=271733878;for(c=0;c>5]>>>b%32&255);return c}function m(a){var b,c=[];for(c[(a.length>>2)-1]=void 0,b=0;b>5]|=(255&a.charCodeAt(b/8))<16&&(e=k(e,8*a.length)),c=0;c<16;c+=1)f[c]=909522486^e[c],g[c]=1549556828^e[c];return d=k(f.concat(m(b)),512+8*b.length),l(k(g.concat(d),640))}function p(a){var b,c,d="0123456789abcdef",e="";for(c=0;c>>4&15)+d.charAt(15&b);return e}function q(a){return unescape(encodeURIComponent(a))}function r(a){return n(q(a))}function s(a){return p(r(a))}function t(a,b){return o(q(a),q(b))}function u(a,b){return p(t(a,b))}function v(a,b,c){return b?c?t(b,a):u(b,a):c?r(a):s(a)}b.exports=v},{}]},{},[7,1,2,3])(7)}); +/*! Raven.js 3.25.1 (b6f3c7a) | github.com/getsentry/raven-js */ +!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.Raven=a()}}(function(){var a;return function b(a,c,d){function e(g,h){if(!c[g]){if(!a[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};a[g][0].call(k.exports,function(b){var c=a[g][1][b];return e(c?c:b)},k,k.exports,b,a,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;gthis.l.maxBreadcrumbs&&this.v.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.s.push([a,b]),this.o&&this.G(),this},setUserContext:function(a){return this.k.user=a,this},setExtraContext:function(a){return this.$("extra",a),this},setTagsContext:function(a){return this.$("tags",a),this},clearContext:function(){return this.k={},this},getContext:function(){return JSON.parse(h(this.k))},setEnvironment:function(a){return this.l.environment=a,this},setRelease:function(a){return this.l.release=a,this},setDataCallback:function(a){var b=this.l.dataCallback;return this.l.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.l.breadcrumbCallback;return this.l.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.l.shouldSendCallback;return this.l.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.l.transport=a,this},lastException:function(){return this.e},lastEventId:function(){return this.g},isSetup:function(){return!!this.b&&(!!this.h||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.A("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=R.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(S){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.I;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.k.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.K(this.H(c)),h=S.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(S.head||S.body).appendChild(h)}},M:function(){var a=this;this.n+=1,setTimeout(function(){a.n-=1})},_:function(a,b){var c,d;if(this.c){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),S.createEvent?(c=S.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=S.createEventObject(),c.eventType=a);for(d in b)A(b,d)&&(c[d]=b[d]);if(S.createEvent)S.dispatchEvent(c);else try{S.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},aa:function(a){var b=this;return function(c){if(b.ba=null,b.w!==c){b.w=c;var d;try{d=E(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ca:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.ba;g||a.aa("input")(c),clearTimeout(g),a.ba=setTimeout(function(){a.ba=null},b)}}},da:function(a,b){var c=H(this.x.href),d=H(b),e=H(a);this.y=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},D:function(){var a=this;a.ea=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.N?a.ea.apply(this.P,arguments):a.ea.apply(this,arguments)}},R:function(){this.ea&&(Function.prototype.toString=this.ea)},E:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.da(b.y,c+""),a.apply(this,arguments)}};I(R.history,"pushState",j,d),I(R.history,"replaceState",j,d)}if(c.console&&"console"in R&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};w(["debug","info","warn","error","log"],function(a,b){O(console,b,k)})}},S:function(){for(var a;this.u.length;){a=this.u.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},T:function(){for(var a in this.r)this.q[a]=this.r[a]},G:function(){var a=this;w(this.s,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},H:function(a){var b=Q.exec(a),c={},d=7;try{for(;d--;)c[P[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.l.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},K:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},B:function(){this.n||this.W.apply(this,arguments)},W:function(a,b){var c=this.Y(a,b);this._("handle",{stackInfo:a,options:b}),this.ga(a.name,a.message,a.url,a.lineno,c,b)},Y:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(w(a.stack,function(b,e){var f=c.ha(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.v,0)}),this.k.user&&(a.user=this.k.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),a=this.qa(a),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||v(a[b]))&&delete a[b]}),s(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!v(a)&&(!s(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.na()?void this.A("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function F(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&l(b))for(c=b.split(/\s+/),f=0;fc?Q(a,b-1):d}function R(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?X:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function S(a,b){function c(a){return m(a)?a.map(function(a){return c(a)}):k(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!m(b)||m(b)&&0===b.length)return a;var d,e=A(b),f="********";try{d=JSON.parse(T(a))}catch(g){return a}return c(d)}var T=a(10),U="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},V=3,W=51200,X=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isDOMError:g,isDOMException:h,isUndefined:i,isFunction:j,isPlainObject:k,isString:l,isArray:m,isEmptyObject:n,supportsErrorEvent:o,supportsDOMError:p,supportsDOMException:q,supportsFetch:r,supportsReferrerPolicy:s,supportsPromiseRejectionEvent:t,wrappedCallback:u,each:v,objectMerge:w,truncate:y,objectFrozen:x,hasKey:z,joinRegExp:A,urlencode:B,uuid4:D,htmlTreeAsString:E,htmlElementAsString:F,isSameException:I,isSameStacktrace:J,parseUrl:C,fill:K,safeJoin:L,serializeException:Q,serializeKeysForMessage:R,sanitize:S}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{10:10}],9:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}function e(){return"undefined"==typeof document||null==document.location?"":(document.location.origin||(document.location.origin=document.location.protocol+"//"+document.location.hostname+(document.location.port?":"+document.location.port:"")),document.location.origin)}var f=a(8),g={collectWindowErrors:!0,debug:!1},h="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},i=[].slice,j="?",k=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;g.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function e(a,b){var c=null;if(!b||g.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(i.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,h,i){var l=null,m=f.isErrorEvent(i)?i.error:i,n=f.isErrorEvent(a)?a.message:a;if(v)g.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&f.isError(m))l=g.computeStackTrace(m),e(l,!0);else{var p,r={url:b,line:c,column:h},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(k);p&&(s=p[1],n=p[2])}r.func=j,l={name:s,message:n,url:d(),stack:[r]},e(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=h.onerror,h.onerror=l,r=!0)}function n(){r&&(h.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,e.apply(null,[a,!1].concat(b))}function p(a,b){var c=i.call(arguments,1);if(v){if(u===a)return;o()}var d=g.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),g.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,f,g=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,h=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,i=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,k=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,l=/\((\S*)(?::(\d+))(?::(\d+))\)/,m=a.stack.split("\n"),n=[],o=(/^(.*) is undefined$/.exec(a.message),0),p=m.length;o eval")>-1;r&&(b=k.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==o||c[5]||"undefined"==typeof a.columnNumber||(n[0].column=a.columnNumber+1),f={url:c[3],func:c[1]||j,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}if(!f.func&&f.line&&(f.func=j),f.url&&"blob:"===f.url.substr(0,5)){var s=new XMLHttpRequest;if(s.open("GET",f.url,!1),s.send(null),200===s.status){var t=s.responseText||"";t=t.slice(-300);var u=t.match(/\/\/# sourceMappingURL=(.*)$/);if(u){var v=u[1];"~"===v.charAt(0)&&(v=e()+v.slice(1)),f.url=v.slice(0,-4)}}}n.push(f)}return n.length?{name:a.name,message:a.message, +url:d(),stack:n}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=j),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,e){for(var h,i,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==f&&o!==g.report){if(i={url:null,func:j,line:null,column:null},o.name?i.func=o.name:(h=k.exec(o.toString()))&&(i.func=h[1]),"undefined"==typeof i.func)try{i.func=h.input.substring(0,h.input.indexOf("{"))}catch(p){}m[""+o]?n=!0:m[""+o]=!0,l.push(i)}e&&l.splice(0,e);var q={name:a.name,message:a.message,url:d(),stack:l};return b(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),q}function f(b,e){var f=null;e=null==e?0:+e;try{if(f=a(b))return f}catch(h){if(g.debug)throw h}try{if(f=c(b,e+1))return f}catch(h){if(g.debug)throw h}return{name:b.name,message:b.message,url:d()}}return f.augmentStackTraceWithInitialElement=b,f.computeStackTraceFromStackProp=a,f}(),b.exports=g}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{8:8}],10:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}],11:[function(a,b,c){function d(a,b){var c=(65535&a)+(65535&b),d=(a>>16)+(b>>16)+(c>>16);return d<<16|65535&c}function e(a,b){return a<>>32-b}function f(a,b,c,f,g,h){return d(e(d(d(b,a),d(f,h)),g),c)}function g(a,b,c,d,e,g,h){return f(b&c|~b&d,a,b,e,g,h)}function h(a,b,c,d,e,g,h){return f(b&d|c&~d,a,b,e,g,h)}function i(a,b,c,d,e,g,h){return f(b^c^d,a,b,e,g,h)}function j(a,b,c,d,e,g,h){return f(c^(b|~d),a,b,e,g,h)}function k(a,b){a[b>>5]|=128<>>9<<4)+14]=b;var c,e,f,k,l,m=1732584193,n=-271733879,o=-1732584194,p=271733878;for(c=0;c>5]>>>b%32&255);return c}function m(a){var b,c=[];for(c[(a.length>>2)-1]=void 0,b=0;b>5]|=(255&a.charCodeAt(b/8))<16&&(e=k(e,8*a.length)),c=0;c<16;c+=1)f[c]=909522486^e[c],g[c]=1549556828^e[c];return d=k(f.concat(m(b)),512+8*b.length),l(k(g.concat(d),640))}function p(a){var b,c,d="0123456789abcdef",e="";for(c=0;c>>4&15)+d.charAt(15&b);return e}function q(a){return unescape(encodeURIComponent(a))}function r(a){return n(q(a))}function s(a){return p(r(a))}function t(a,b){return o(q(a),q(b))}function u(a,b){return p(t(a,b))}function v(a,b,c){return b?c?t(b,a):u(b,a):c?r(a):s(a)}b.exports=v},{}]},{},[7,1,2,3])(7)}); //# sourceMappingURL=raven.min.js.map \ No newline at end of file diff --git a/dist/angular,console,require/raven.min.js.map b/dist/angular,console,require/raven.min.js.map index 92b3e7c72b62..48a08106f413 100644 --- a/dist/angular,console,require/raven.min.js.map +++ b/dist/angular,console,require/raven.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","angularPlugin","angular","RavenProvider","$get","$window","ExceptionHandlerProvider","$provide","decorator","exceptionHandler","R","$delegate","ex","cause","captureException","extra","moduleName","provider","config","setDataCallback","wrappedCallback","data","_normalizeData","angularPattern","exception","values","matches","exec","value","type","message","angularDocs","substr","addPlugin","7","8","2","consolePlugin","console","pluginOptions","logLevels","levels","push","callback","msg","captureMessage","level","pop","wrapConsoleMethod","wrapMethod","5","3","requirePlugin","wrap","deep","4","RavenConfigError","name","prototype","constructor","utils","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","safeJoin","logger","Function","apply","6","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","sanitizeKeys","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isErrorEvent","isDOMError","isDOMException","isError","isObject","isPlainObject","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","sanitize","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","dsn","options","_logDebug","globalOptions","key","setDSN","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","toString","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","context","func","undefined","_before","wrapped","_ignoreNextOnError","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","U","event","reason","unhandledPromiseRejection","C","_promiseRejectionHandler","bind","addEventListener","Q","removeEventListener","trimHeadFrames","error","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","V","currentOptions","exKeys","Object","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","M","setTimeout","_","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","aa","evtName","_keypressTimeout","target","category","ca","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","da","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","D","_originalFunctionToString","E","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","F","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","S","builtin","T","G","installer","concat","H","str","m","allowSecretKey","K","port","B","W","stackInfo","_triggerEvent","_processException","lineno","Y","frame","_normalizeFrame","in_app","ha","stackInfoUrl","normalized","filename","line","colno","column","function","ga","prefixedMessage","culprit","ia","request","Referer","breadcrumbs","_trimBreadcrumbs","ja","urlProp","urlProps","ka","httpData","userAgent","User-Agent","referrer","z","_backoffDuration","_backoffStart","na","oa","current","last","pa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Z","baseData","project","platform","_getHttpData","serverName","server_name","_sanitizeData","forEach","random","_sendProcessedPayload","qa","sa","ra","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","ta","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","onerror","open","setRequestHeader","send","ua","hash","evaluated","A","$","setUser","setReleaseContext","10","11","9","RavenConstructor","_Raven","noConflict","Client","what","supportsErrorEvent","ErrorEvent","supportsDOMError","DOMError","supportsDOMException","DOMException","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","sanitizeMask","safeInput","o_O","getLocationHref","getLocationOrigin","origin","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","responseText","sourceMaps","sourceMapAddress","charAt","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","y","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","string","raw"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file +{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","angularPlugin","angular","RavenProvider","$get","$window","ExceptionHandlerProvider","$provide","decorator","exceptionHandler","R","$delegate","ex","cause","captureException","extra","moduleName","provider","config","setDataCallback","wrappedCallback","data","_normalizeData","angularPattern","exception","values","matches","exec","value","type","message","angularDocs","substr","addPlugin","7","8","2","consolePlugin","console","pluginOptions","logLevels","levels","push","callback","msg","captureMessage","level","pop","wrapConsoleMethod","wrapMethod","5","3","requirePlugin","wrap","deep","4","RavenConfigError","name","prototype","constructor","utils","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","safeJoin","logger","Function","apply","6","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","sanitizeKeys","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isErrorEvent","isDOMError","isDOMException","isError","isObject","isPlainObject","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","sanitize","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","dsn","options","_logDebug","globalOptions","key","setDSN","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","toString","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","context","func","undefined","_before","wrapped","_ignoreNextOnError","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","U","event","reason","unhandledPromiseRejection","C","_promiseRejectionHandler","bind","addEventListener","Q","removeEventListener","trimHeadFrames","error","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","V","currentOptions","exKeys","Object","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","M","setTimeout","_","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","aa","evtName","_keypressTimeout","target","category","ca","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","da","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","D","_originalFunctionToString","E","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","F","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","S","builtin","T","G","installer","concat","H","str","m","allowSecretKey","K","port","B","W","stackInfo","_triggerEvent","_processException","lineno","Y","frame","_normalizeFrame","in_app","ha","stackInfoUrl","normalized","filename","line","colno","column","function","ga","prefixedMessage","culprit","ia","request","Referer","breadcrumbs","_trimBreadcrumbs","ja","urlProp","urlProps","ka","httpData","userAgent","User-Agent","referrer","z","_backoffDuration","_backoffStart","na","oa","current","last","pa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Z","baseData","project","platform","_getHttpData","serverName","server_name","_sanitizeData","forEach","random","_sendProcessedPayload","qa","sa","ra","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","ta","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","onerror","open","setRequestHeader","send","ua","hash","evaluated","A","$","setUser","setReleaseContext","10","11","9","RavenConstructor","_Raven","noConflict","Client","what","supportsErrorEvent","ErrorEvent","supportsDOMError","DOMError","supportsDOMException","DOMException","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","sanitizeMask","safeInput","o_O","getLocationHref","getLocationOrigin","origin","hostname","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","responseText","sourceMaps","sourceMapAddress","charAt","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","y","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","string","raw"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file diff --git a/dist/angular,console,vue/raven.js b/dist/angular,console,vue/raven.js index 09f437679926..6dbf32c5c18e 100644 --- a/dist/angular,console,vue/raven.js +++ b/dist/angular,console,vue/raven.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.25.0 (80dffad) | github.com/getsentry/raven-js */ +/*! Raven.js 3.25.1 (b6f3c7a) | github.com/getsentry/raven-js */ /* * Includes TraceKit @@ -369,7 +369,7 @@ Raven.prototype = { // webpack (using a build step causes webpack #1617). Grunt verifies that // this value matches package.json during build. // See: https://github.com/getsentry/raven-js/issues/465 - VERSION: '3.25.0', + VERSION: '3.25.1', debug: false, @@ -1678,8 +1678,8 @@ Raven.prototype = { var hasPushAndReplaceState = !isChromePackagedApp && _window.history && - history.pushState && - history.replaceState; + _window.history.pushState && + _window.history.replaceState; if (autoBreadcrumbs.location && hasPushAndReplaceState) { // TODO: remove onpopstate handler on uninstall() var oldOnPopState = _window.onpopstate; @@ -1708,8 +1708,8 @@ Raven.prototype = { }; }; - fill(history, 'pushState', historyReplacementFunction, wrappedBuiltIns); - fill(history, 'replaceState', historyReplacementFunction, wrappedBuiltIns); + fill(_window.history, 'pushState', historyReplacementFunction, wrappedBuiltIns); + fill(_window.history, 'replaceState', historyReplacementFunction, wrappedBuiltIns); } if (autoBreadcrumbs.console && 'console' in _window && console.log) { @@ -1999,7 +1999,7 @@ Raven.prototype = { if (this._hasNavigator && _navigator.userAgent) { httpData.headers = { - 'User-Agent': navigator.userAgent + 'User-Agent': _navigator.userAgent }; } @@ -3174,6 +3174,16 @@ function getLocationHref() { function getLocationOrigin() { if (typeof document === 'undefined' || document.location == null) return ''; + + // Oh dear IE10... + if (!document.location.origin) { + document.location.origin = + document.location.protocol + + '//' + + document.location.hostname + + (document.location.port ? ':' + document.location.port : ''); + } + return document.location.origin; } diff --git a/dist/angular,console,vue/raven.min.js b/dist/angular,console,vue/raven.min.js index 41b69151910c..42e9d897fa2e 100644 --- a/dist/angular,console,vue/raven.min.js +++ b/dist/angular,console,vue/raven.min.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.25.0 (80dffad) | github.com/getsentry/raven-js */ -!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.Raven=a()}}(function(){return function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};b[g][0].call(k.exports,function(a){var c=b[g][1][a];return e(c?c:a)},k,k.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;g":"anonymous component")+(a._isVue&&a.$options.__file?" at "+a.$options.__file:"")}function e(a,b){if(b=b||window.Vue,b&&b.config){var c=b.config.errorHandler;b.config.errorHandler=function(b,e,f){var g={};"[object Object]"===Object.prototype.toString.call(e)&&(g.componentName=d(e),g.propsData=e.$options.propsData),"undefined"!=typeof f&&(g.lifecycleHook=f),a.captureException(b,{extra:g}),"function"==typeof c&&c.call(this,b,e,f)}}}b.exports=e,a(7).addPlugin(b.exports)},{7:7}],4:[function(a,b,c){function d(a){this.name="RavenConfigError",this.message=a}d.prototype=new Error,d.prototype.constructor=d,b.exports=d},{}],5:[function(a,b,c){var d=a(8),e=function(a,b,c){var e=a[b],f=a;if(b in a){var g="warn"===b?"warning":b;a[b]=function(){var a=[].slice.call(arguments),h=d.safeJoin(a," "),i={level:g,logger:"console",extra:{arguments:a}};"assert"===b?a[0]===!1&&(h="Assertion failed: "+(d.safeJoin(a.slice(1)," ")||"console.assert"),i.extra.arguments=a.slice(1),c&&c(h,i)):c&&c(h,i),e&&Function.prototype.apply.call(e,f,a)}}};b.exports={wrapMethod:e}},{8:8}],6:[function(a,b,c){(function(c){function d(){return+new Date}function e(a,b){return s(b)?function(c){return b(c,a)}:b}function f(){this.b=!("object"!=typeof JSON||!JSON.stringify),this.c=!r(S),this.d=!r(T),this.e=null,this.f=null,this.g=null,this.h=null,this.i=null,this.j=null,this.k={},this.l={release:R.SENTRY_RELEASE&&R.SENTRY_RELEASE.id,logger:"javascript",ignoreErrors:[],ignoreUrls:[],whitelistUrls:[],includePaths:[],headers:null,collectWindowErrors:!0,captureUnhandledRejections:!0,maxMessageLength:0,maxUrlLength:250,stackTraceLimit:50,autoBreadcrumbs:!0,instrument:!0,sampleRate:1,sanitizeKeys:[]},this.m={method:"POST",keepalive:!0,referrerPolicy:K()?"origin":""},this.n=0,this.o=!1,this.p=Error.stackTraceLimit,this.q=R.console||{},this.r={},this.s=[],this.t=d(),this.u=[],this.v=[],this.w=null,this.x=R.location,this.y=this.x&&this.x.href,this.z();for(var a in this.q)this.r[a]=this.q[a]}var g=a(9),h=a(10),i=a(11),j=a(4),k=a(8),l=k.isErrorEvent,m=k.isDOMError,n=k.isDOMException,o=k.isError,p=k.isObject,q=k.isPlainObject,r=k.isUndefined,s=k.isFunction,t=k.isString,u=k.isArray,v=k.isEmptyObject,w=k.each,x=k.objectMerge,y=k.truncate,z=k.objectFrozen,A=k.hasKey,B=k.joinRegExp,C=k.urlencode,D=k.uuid4,E=k.htmlTreeAsString,F=k.isSameException,G=k.isSameStacktrace,H=k.parseUrl,I=k.fill,J=k.supportsFetch,K=k.supportsReferrerPolicy,L=k.serializeKeysForMessage,M=k.serializeException,N=k.sanitize,O=a(5).wrapMethod,P="source protocol user pass host port path".split(" "),Q=/^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/,R="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},S=R.document,T=R.navigator;f.prototype={VERSION:"3.25.0",debug:!1,TraceKit:g,config:function(a,b){var c=this;if(c.h)return this.A("error","Error: Raven has already been configured"),c;if(!a)return c;var d=c.l;b&&w(b,function(a,b){"tags"===a||"extra"===a||"user"===a?c.k[a]=b:d[a]=b}),c.setDSN(a),d.ignoreErrors.push(/^Script error\.?$/),d.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/),d.ignoreErrors=B(d.ignoreErrors),d.ignoreUrls=!!d.ignoreUrls.length&&B(d.ignoreUrls),d.whitelistUrls=!!d.whitelistUrls.length&&B(d.whitelistUrls),d.includePaths=B(d.includePaths),d.maxBreadcrumbs=Math.max(0,Math.min(d.maxBreadcrumbs||100,100));var e={xhr:!0,console:!0,dom:!0,location:!0,sentry:!0},f=d.autoBreadcrumbs;"[object Object]"==={}.toString.call(f)?f=x(e,f):f!==!1&&(f=e),d.autoBreadcrumbs=f;var h={tryCatch:!0},i=d.instrument;return"[object Object]"==={}.toString.call(i)?i=x(h,i):i!==!1&&(i=h),d.instrument=i,g.collectWindowErrors=!!d.collectWindowErrors,c},install:function(){var a=this;return a.isSetup()&&!a.o&&(g.report.subscribe(function(){a.B.apply(a,arguments)}),a.l.captureUnhandledRejections&&a.C(),a.D(),a.l.instrument&&a.l.instrument.tryCatch&&a.E(),a.l.autoBreadcrumbs&&a.F(),a.G(),a.o=!0),Error.stackTraceLimit=a.l.stackTraceLimit,this},setDSN:function(a){var b=this,c=b.H(a),d=c.path.lastIndexOf("/"),e=c.path.substr(1,d);b.I=a,b.i=c.user,b.J=c.pass&&c.pass.substr(1),b.j=c.path.substr(d+1),b.h=b.K(c),b.L=b.h+"/"+e+"api/"+b.j+"/store/",this.z()},context:function(a,b,c){return s(a)&&(c=b||[],b=a,a=void 0),this.wrap(a,b).apply(this,c)},wrap:function(a,b,c){function d(){var d=[],f=arguments.length,g=!a||a&&a.deep!==!1;for(c&&s(c)&&c.apply(this,arguments);f--;)d[f]=g?e.wrap(a,arguments[f]):arguments[f];try{return b.apply(this,d)}catch(h){throw e.M(),e.captureException(h,a),h}}var e=this;if(r(b)&&!s(a))return a;if(s(a)&&(b=a,a=void 0),!s(b))return b;try{if(b.N)return b;if(b.O)return b.O}catch(f){return b}for(var g in b)A(b,g)&&(d[g]=b[g]);return d.prototype=b.prototype,b.O=d,d.N=!0,d.P=b,d},uninstall:function(){return g.report.uninstall(),this.Q(),this.R(),this.S(),this.T(),Error.stackTraceLimit=this.p,this.o=!1,this},U:function(a){this.A("debug","Raven caught unhandled promise rejection:",a),this.captureException(a.reason,{extra:{unhandledPromiseRejection:!0}})},C:function(){return this.U=this.U.bind(this),R.addEventListener&&R.addEventListener("unhandledrejection",this.U),this},Q:function(){return R.removeEventListener&&R.removeEventListener("unhandledrejection",this.U),this},captureException:function(a,b){if(b=x({trimHeadFrames:0},b?b:{}),l(a)&&a.error)a=a.error;else{if(m(a)||n(a)){var c=a.name||(m(a)?"DOMError":"DOMException"),d=a.message?c+": "+a.message:c;return this.captureMessage(d,x(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}))}if(o(a))a=a;else{if(!q(a))return this.captureMessage(a,x(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}));b=this.V(b,a),a=new Error(b.message)}}this.e=a;try{var e=g.computeStackTrace(a);this.W(e,b)}catch(f){if(a!==f)throw f}return this},V:function(a,b){var c=Object.keys(b).sort(),d=x(a,{message:"Non-Error exception captured with keys: "+L(c),fingerprint:[i(c)],extra:a.extra||{}});return d.extra.X=M(b),d},captureMessage:function(a,b){if(!this.l.ignoreErrors.test||!this.l.ignoreErrors.test(a)){b=b||{},a+="";var c,d=x({message:a},b);try{throw new Error(a)}catch(e){c=e}c.name=null;var f=g.computeStackTrace(c),h=u(f.stack)&&f.stack[1];h&&"Raven.captureException"===h.func&&(h=f.stack[2]);var i=h&&h.url||"";if((!this.l.ignoreUrls.test||!this.l.ignoreUrls.test(i))&&(!this.l.whitelistUrls.test||this.l.whitelistUrls.test(i))){if(this.l.stacktrace||b&&b.stacktrace){d.fingerprint=null==d.fingerprint?a:d.fingerprint,b=x({trimHeadFrames:0},b),b.trimHeadFrames+=1;var j=this.Y(f,b);d.stacktrace={frames:j.reverse()}}return d.fingerprint&&(d.fingerprint=u(d.fingerprint)?d.fingerprint:[d.fingerprint]),this.Z(d),this}}},captureBreadcrumb:function(a){var b=x({timestamp:d()/1e3},a);if(s(this.l.breadcrumbCallback)){var c=this.l.breadcrumbCallback(b);if(p(c)&&!v(c))b=c;else if(c===!1)return this}return this.v.push(b),this.v.length>this.l.maxBreadcrumbs&&this.v.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.s.push([a,b]),this.o&&this.G(),this},setUserContext:function(a){return this.k.user=a,this},setExtraContext:function(a){return this.$("extra",a),this},setTagsContext:function(a){return this.$("tags",a),this},clearContext:function(){return this.k={},this},getContext:function(){return JSON.parse(h(this.k))},setEnvironment:function(a){return this.l.environment=a,this},setRelease:function(a){return this.l.release=a,this},setDataCallback:function(a){var b=this.l.dataCallback;return this.l.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.l.breadcrumbCallback;return this.l.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.l.shouldSendCallback;return this.l.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.l.transport=a,this},lastException:function(){return this.e},lastEventId:function(){return this.g},isSetup:function(){return!!this.b&&(!!this.h||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.A("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=R.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(S){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.I;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.k.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.K(this.H(c)),h=S.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(S.head||S.body).appendChild(h)}},M:function(){var a=this;this.n+=1,setTimeout(function(){a.n-=1})},_:function(a,b){var c,d;if(this.c){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),S.createEvent?(c=S.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=S.createEventObject(),c.eventType=a);for(d in b)A(b,d)&&(c[d]=b[d]);if(S.createEvent)S.dispatchEvent(c);else try{S.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},aa:function(a){var b=this;return function(c){if(b.ba=null,b.w!==c){b.w=c;var d;try{d=E(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ca:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.ba;g||a.aa("input")(c),clearTimeout(g),a.ba=setTimeout(function(){a.ba=null},b)}}},da:function(a,b){var c=H(this.x.href),d=H(b),e=H(a);this.y=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},D:function(){var a=this;a.ea=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.N?a.ea.apply(this.P,arguments):a.ea.apply(this,arguments)}},R:function(){this.ea&&(Function.prototype.toString=this.ea)},E:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.da(b.y,c+""),a.apply(this,arguments)}};I(history,"pushState",j,d),I(history,"replaceState",j,d)}if(c.console&&"console"in R&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};w(["debug","info","warn","error","log"],function(a,b){O(console,b,k)})}},S:function(){for(var a;this.u.length;){a=this.u.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},T:function(){for(var a in this.r)this.q[a]=this.r[a]},G:function(){var a=this;w(this.s,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},H:function(a){var b=Q.exec(a),c={},d=7;try{for(;d--;)c[P[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.l.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},K:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},B:function(){this.n||this.W.apply(this,arguments)},W:function(a,b){var c=this.Y(a,b);this._("handle",{stackInfo:a,options:b}),this.ga(a.name,a.message,a.url,a.lineno,c,b)},Y:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(w(a.stack,function(b,e){var f=c.ha(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.v,0)}),this.k.user&&(a.user=this.k.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),a=this.qa(a),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||v(a[b]))&&delete a[b]}),s(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!v(a)&&(!s(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.na()?void this.A("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function F(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&l(b))for(c=b.split(/\s+/),f=0;fc?Q(a,b-1):d}function R(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?X:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function S(a,b){function c(a){return m(a)?a.map(function(a){return c(a)}):k(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!m(b)||m(b)&&0===b.length)return a;var d,e=A(b),f="********";try{d=JSON.parse(T(a))}catch(g){return a}return c(d)}var T=a(10),U="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},V=3,W=51200,X=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isDOMError:g,isDOMException:h,isUndefined:i,isFunction:j,isPlainObject:k,isString:l,isArray:m,isEmptyObject:n,supportsErrorEvent:o,supportsDOMError:p,supportsDOMException:q,supportsFetch:r,supportsReferrerPolicy:s,supportsPromiseRejectionEvent:t,wrappedCallback:u,each:v,objectMerge:w,truncate:y,objectFrozen:x,hasKey:z,joinRegExp:A,urlencode:B,uuid4:D,htmlTreeAsString:E,htmlElementAsString:F,isSameException:I,isSameStacktrace:J,parseUrl:C,fill:K,safeJoin:L,serializeException:Q,serializeKeysForMessage:R,sanitize:S}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{10:10}],9:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}function e(){return"undefined"==typeof document||null==document.location?"":document.location.origin}var f=a(8),g={collectWindowErrors:!0,debug:!1},h="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},i=[].slice,j="?",k=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;g.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function e(a,b){var c=null;if(!b||g.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(i.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,h,i){var l=null,m=f.isErrorEvent(i)?i.error:i,n=f.isErrorEvent(a)?a.message:a;if(v)g.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&f.isError(m))l=g.computeStackTrace(m),e(l,!0);else{var p,r={url:b,line:c,column:h},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(k);p&&(s=p[1],n=p[2])}r.func=j,l={name:s,message:n,url:d(),stack:[r]},e(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=h.onerror,h.onerror=l,r=!0)}function n(){r&&(h.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,e.apply(null,[a,!1].concat(b))}function p(a,b){var c=i.call(arguments,1);if(v){if(u===a)return;o()}var d=g.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),g.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,f,g=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,h=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,i=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,k=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,l=/\((\S*)(?::(\d+))(?::(\d+))\)/,m=a.stack.split("\n"),n=[],o=(/^(.*) is undefined$/.exec(a.message),0),p=m.length;o eval")>-1;r&&(b=k.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==o||c[5]||"undefined"==typeof a.columnNumber||(n[0].column=a.columnNumber+1),f={url:c[3],func:c[1]||j,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}if(!f.func&&f.line&&(f.func=j),f.url&&"blob:"===f.url.substr(0,5)){var s=new XMLHttpRequest; -if(s.open("GET",f.url,!1),s.send(null),200===s.status){var t=s.responseText||"";t=t.slice(-300);var u=t.match(/\/\/# sourceMappingURL=(.*)$/);if(u){var v=u[1];"~"===v.charAt(0)&&(v=e()+v.slice(1)),f.url=v.slice(0,-4)}}}n.push(f)}return n.length?{name:a.name,message:a.message,url:d(),stack:n}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=j),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,e){for(var h,i,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==f&&o!==g.report){if(i={url:null,func:j,line:null,column:null},o.name?i.func=o.name:(h=k.exec(o.toString()))&&(i.func=h[1]),"undefined"==typeof i.func)try{i.func=h.input.substring(0,h.input.indexOf("{"))}catch(p){}m[""+o]?n=!0:m[""+o]=!0,l.push(i)}e&&l.splice(0,e);var q={name:a.name,message:a.message,url:d(),stack:l};return b(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),q}function f(b,e){var f=null;e=null==e?0:+e;try{if(f=a(b))return f}catch(h){if(g.debug)throw h}try{if(f=c(b,e+1))return f}catch(h){if(g.debug)throw h}return{name:b.name,message:b.message,url:d()}}return f.augmentStackTraceWithInitialElement=b,f.computeStackTraceFromStackProp=a,f}(),b.exports=g}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{8:8}],10:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}],11:[function(a,b,c){function d(a,b){var c=(65535&a)+(65535&b),d=(a>>16)+(b>>16)+(c>>16);return d<<16|65535&c}function e(a,b){return a<>>32-b}function f(a,b,c,f,g,h){return d(e(d(d(b,a),d(f,h)),g),c)}function g(a,b,c,d,e,g,h){return f(b&c|~b&d,a,b,e,g,h)}function h(a,b,c,d,e,g,h){return f(b&d|c&~d,a,b,e,g,h)}function i(a,b,c,d,e,g,h){return f(b^c^d,a,b,e,g,h)}function j(a,b,c,d,e,g,h){return f(c^(b|~d),a,b,e,g,h)}function k(a,b){a[b>>5]|=128<>>9<<4)+14]=b;var c,e,f,k,l,m=1732584193,n=-271733879,o=-1732584194,p=271733878;for(c=0;c>5]>>>b%32&255);return c}function m(a){var b,c=[];for(c[(a.length>>2)-1]=void 0,b=0;b>5]|=(255&a.charCodeAt(b/8))<16&&(e=k(e,8*a.length)),c=0;c<16;c+=1)f[c]=909522486^e[c],g[c]=1549556828^e[c];return d=k(f.concat(m(b)),512+8*b.length),l(k(g.concat(d),640))}function p(a){var b,c,d="0123456789abcdef",e="";for(c=0;c>>4&15)+d.charAt(15&b);return e}function q(a){return unescape(encodeURIComponent(a))}function r(a){return n(q(a))}function s(a){return p(r(a))}function t(a,b){return o(q(a),q(b))}function u(a,b){return p(t(a,b))}function v(a,b,c){return b?c?t(b,a):u(b,a):c?r(a):s(a)}b.exports=v},{}]},{},[7,1,2,3])(7)}); +/*! Raven.js 3.25.1 (b6f3c7a) | github.com/getsentry/raven-js */ +!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.Raven=a()}}(function(){return function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};b[g][0].call(k.exports,function(a){var c=b[g][1][a];return e(c?c:a)},k,k.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;g":"anonymous component")+(a._isVue&&a.$options.__file?" at "+a.$options.__file:"")}function e(a,b){if(b=b||window.Vue,b&&b.config){var c=b.config.errorHandler;b.config.errorHandler=function(b,e,f){var g={};"[object Object]"===Object.prototype.toString.call(e)&&(g.componentName=d(e),g.propsData=e.$options.propsData),"undefined"!=typeof f&&(g.lifecycleHook=f),a.captureException(b,{extra:g}),"function"==typeof c&&c.call(this,b,e,f)}}}b.exports=e,a(7).addPlugin(b.exports)},{7:7}],4:[function(a,b,c){function d(a){this.name="RavenConfigError",this.message=a}d.prototype=new Error,d.prototype.constructor=d,b.exports=d},{}],5:[function(a,b,c){var d=a(8),e=function(a,b,c){var e=a[b],f=a;if(b in a){var g="warn"===b?"warning":b;a[b]=function(){var a=[].slice.call(arguments),h=d.safeJoin(a," "),i={level:g,logger:"console",extra:{arguments:a}};"assert"===b?a[0]===!1&&(h="Assertion failed: "+(d.safeJoin(a.slice(1)," ")||"console.assert"),i.extra.arguments=a.slice(1),c&&c(h,i)):c&&c(h,i),e&&Function.prototype.apply.call(e,f,a)}}};b.exports={wrapMethod:e}},{8:8}],6:[function(a,b,c){(function(c){function d(){return+new Date}function e(a,b){return s(b)?function(c){return b(c,a)}:b}function f(){this.b=!("object"!=typeof JSON||!JSON.stringify),this.c=!r(S),this.d=!r(T),this.e=null,this.f=null,this.g=null,this.h=null,this.i=null,this.j=null,this.k={},this.l={release:R.SENTRY_RELEASE&&R.SENTRY_RELEASE.id,logger:"javascript",ignoreErrors:[],ignoreUrls:[],whitelistUrls:[],includePaths:[],headers:null,collectWindowErrors:!0,captureUnhandledRejections:!0,maxMessageLength:0,maxUrlLength:250,stackTraceLimit:50,autoBreadcrumbs:!0,instrument:!0,sampleRate:1,sanitizeKeys:[]},this.m={method:"POST",keepalive:!0,referrerPolicy:K()?"origin":""},this.n=0,this.o=!1,this.p=Error.stackTraceLimit,this.q=R.console||{},this.r={},this.s=[],this.t=d(),this.u=[],this.v=[],this.w=null,this.x=R.location,this.y=this.x&&this.x.href,this.z();for(var a in this.q)this.r[a]=this.q[a]}var g=a(9),h=a(10),i=a(11),j=a(4),k=a(8),l=k.isErrorEvent,m=k.isDOMError,n=k.isDOMException,o=k.isError,p=k.isObject,q=k.isPlainObject,r=k.isUndefined,s=k.isFunction,t=k.isString,u=k.isArray,v=k.isEmptyObject,w=k.each,x=k.objectMerge,y=k.truncate,z=k.objectFrozen,A=k.hasKey,B=k.joinRegExp,C=k.urlencode,D=k.uuid4,E=k.htmlTreeAsString,F=k.isSameException,G=k.isSameStacktrace,H=k.parseUrl,I=k.fill,J=k.supportsFetch,K=k.supportsReferrerPolicy,L=k.serializeKeysForMessage,M=k.serializeException,N=k.sanitize,O=a(5).wrapMethod,P="source protocol user pass host port path".split(" "),Q=/^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/,R="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},S=R.document,T=R.navigator;f.prototype={VERSION:"3.25.1",debug:!1,TraceKit:g,config:function(a,b){var c=this;if(c.h)return this.A("error","Error: Raven has already been configured"),c;if(!a)return c;var d=c.l;b&&w(b,function(a,b){"tags"===a||"extra"===a||"user"===a?c.k[a]=b:d[a]=b}),c.setDSN(a),d.ignoreErrors.push(/^Script error\.?$/),d.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/),d.ignoreErrors=B(d.ignoreErrors),d.ignoreUrls=!!d.ignoreUrls.length&&B(d.ignoreUrls),d.whitelistUrls=!!d.whitelistUrls.length&&B(d.whitelistUrls),d.includePaths=B(d.includePaths),d.maxBreadcrumbs=Math.max(0,Math.min(d.maxBreadcrumbs||100,100));var e={xhr:!0,console:!0,dom:!0,location:!0,sentry:!0},f=d.autoBreadcrumbs;"[object Object]"==={}.toString.call(f)?f=x(e,f):f!==!1&&(f=e),d.autoBreadcrumbs=f;var h={tryCatch:!0},i=d.instrument;return"[object Object]"==={}.toString.call(i)?i=x(h,i):i!==!1&&(i=h),d.instrument=i,g.collectWindowErrors=!!d.collectWindowErrors,c},install:function(){var a=this;return a.isSetup()&&!a.o&&(g.report.subscribe(function(){a.B.apply(a,arguments)}),a.l.captureUnhandledRejections&&a.C(),a.D(),a.l.instrument&&a.l.instrument.tryCatch&&a.E(),a.l.autoBreadcrumbs&&a.F(),a.G(),a.o=!0),Error.stackTraceLimit=a.l.stackTraceLimit,this},setDSN:function(a){var b=this,c=b.H(a),d=c.path.lastIndexOf("/"),e=c.path.substr(1,d);b.I=a,b.i=c.user,b.J=c.pass&&c.pass.substr(1),b.j=c.path.substr(d+1),b.h=b.K(c),b.L=b.h+"/"+e+"api/"+b.j+"/store/",this.z()},context:function(a,b,c){return s(a)&&(c=b||[],b=a,a=void 0),this.wrap(a,b).apply(this,c)},wrap:function(a,b,c){function d(){var d=[],f=arguments.length,g=!a||a&&a.deep!==!1;for(c&&s(c)&&c.apply(this,arguments);f--;)d[f]=g?e.wrap(a,arguments[f]):arguments[f];try{return b.apply(this,d)}catch(h){throw e.M(),e.captureException(h,a),h}}var e=this;if(r(b)&&!s(a))return a;if(s(a)&&(b=a,a=void 0),!s(b))return b;try{if(b.N)return b;if(b.O)return b.O}catch(f){return b}for(var g in b)A(b,g)&&(d[g]=b[g]);return d.prototype=b.prototype,b.O=d,d.N=!0,d.P=b,d},uninstall:function(){return g.report.uninstall(),this.Q(),this.R(),this.S(),this.T(),Error.stackTraceLimit=this.p,this.o=!1,this},U:function(a){this.A("debug","Raven caught unhandled promise rejection:",a),this.captureException(a.reason,{extra:{unhandledPromiseRejection:!0}})},C:function(){return this.U=this.U.bind(this),R.addEventListener&&R.addEventListener("unhandledrejection",this.U),this},Q:function(){return R.removeEventListener&&R.removeEventListener("unhandledrejection",this.U),this},captureException:function(a,b){if(b=x({trimHeadFrames:0},b?b:{}),l(a)&&a.error)a=a.error;else{if(m(a)||n(a)){var c=a.name||(m(a)?"DOMError":"DOMException"),d=a.message?c+": "+a.message:c;return this.captureMessage(d,x(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}))}if(o(a))a=a;else{if(!q(a))return this.captureMessage(a,x(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}));b=this.V(b,a),a=new Error(b.message)}}this.e=a;try{var e=g.computeStackTrace(a);this.W(e,b)}catch(f){if(a!==f)throw f}return this},V:function(a,b){var c=Object.keys(b).sort(),d=x(a,{message:"Non-Error exception captured with keys: "+L(c),fingerprint:[i(c)],extra:a.extra||{}});return d.extra.X=M(b),d},captureMessage:function(a,b){if(!this.l.ignoreErrors.test||!this.l.ignoreErrors.test(a)){b=b||{},a+="";var c,d=x({message:a},b);try{throw new Error(a)}catch(e){c=e}c.name=null;var f=g.computeStackTrace(c),h=u(f.stack)&&f.stack[1];h&&"Raven.captureException"===h.func&&(h=f.stack[2]);var i=h&&h.url||"";if((!this.l.ignoreUrls.test||!this.l.ignoreUrls.test(i))&&(!this.l.whitelistUrls.test||this.l.whitelistUrls.test(i))){if(this.l.stacktrace||b&&b.stacktrace){d.fingerprint=null==d.fingerprint?a:d.fingerprint,b=x({trimHeadFrames:0},b),b.trimHeadFrames+=1;var j=this.Y(f,b);d.stacktrace={frames:j.reverse()}}return d.fingerprint&&(d.fingerprint=u(d.fingerprint)?d.fingerprint:[d.fingerprint]),this.Z(d),this}}},captureBreadcrumb:function(a){var b=x({timestamp:d()/1e3},a);if(s(this.l.breadcrumbCallback)){var c=this.l.breadcrumbCallback(b);if(p(c)&&!v(c))b=c;else if(c===!1)return this}return this.v.push(b),this.v.length>this.l.maxBreadcrumbs&&this.v.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.s.push([a,b]),this.o&&this.G(),this},setUserContext:function(a){return this.k.user=a,this},setExtraContext:function(a){return this.$("extra",a),this},setTagsContext:function(a){return this.$("tags",a),this},clearContext:function(){return this.k={},this},getContext:function(){return JSON.parse(h(this.k))},setEnvironment:function(a){return this.l.environment=a,this},setRelease:function(a){return this.l.release=a,this},setDataCallback:function(a){var b=this.l.dataCallback;return this.l.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.l.breadcrumbCallback;return this.l.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.l.shouldSendCallback;return this.l.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.l.transport=a,this},lastException:function(){return this.e},lastEventId:function(){return this.g},isSetup:function(){return!!this.b&&(!!this.h||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.A("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=R.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(S){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.I;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.k.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.K(this.H(c)),h=S.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(S.head||S.body).appendChild(h)}},M:function(){var a=this;this.n+=1,setTimeout(function(){a.n-=1})},_:function(a,b){var c,d;if(this.c){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),S.createEvent?(c=S.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=S.createEventObject(),c.eventType=a);for(d in b)A(b,d)&&(c[d]=b[d]);if(S.createEvent)S.dispatchEvent(c);else try{S.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},aa:function(a){var b=this;return function(c){if(b.ba=null,b.w!==c){b.w=c;var d;try{d=E(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ca:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.ba;g||a.aa("input")(c),clearTimeout(g),a.ba=setTimeout(function(){a.ba=null},b)}}},da:function(a,b){var c=H(this.x.href),d=H(b),e=H(a);this.y=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},D:function(){var a=this;a.ea=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.N?a.ea.apply(this.P,arguments):a.ea.apply(this,arguments)}},R:function(){this.ea&&(Function.prototype.toString=this.ea)},E:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.da(b.y,c+""),a.apply(this,arguments)}};I(R.history,"pushState",j,d),I(R.history,"replaceState",j,d)}if(c.console&&"console"in R&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};w(["debug","info","warn","error","log"],function(a,b){O(console,b,k)})}},S:function(){for(var a;this.u.length;){a=this.u.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},T:function(){for(var a in this.r)this.q[a]=this.r[a]},G:function(){var a=this;w(this.s,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},H:function(a){var b=Q.exec(a),c={},d=7;try{for(;d--;)c[P[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.l.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},K:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},B:function(){this.n||this.W.apply(this,arguments)},W:function(a,b){var c=this.Y(a,b);this._("handle",{stackInfo:a,options:b}),this.ga(a.name,a.message,a.url,a.lineno,c,b)},Y:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(w(a.stack,function(b,e){var f=c.ha(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.v,0)}),this.k.user&&(a.user=this.k.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),a=this.qa(a),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||v(a[b]))&&delete a[b]}),s(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!v(a)&&(!s(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.na()?void this.A("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function F(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&l(b))for(c=b.split(/\s+/),f=0;fc?Q(a,b-1):d}function R(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?X:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function S(a,b){function c(a){return m(a)?a.map(function(a){return c(a)}):k(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!m(b)||m(b)&&0===b.length)return a;var d,e=A(b),f="********";try{d=JSON.parse(T(a))}catch(g){return a}return c(d)}var T=a(10),U="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},V=3,W=51200,X=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isDOMError:g,isDOMException:h,isUndefined:i,isFunction:j,isPlainObject:k,isString:l,isArray:m,isEmptyObject:n,supportsErrorEvent:o,supportsDOMError:p,supportsDOMException:q,supportsFetch:r,supportsReferrerPolicy:s,supportsPromiseRejectionEvent:t,wrappedCallback:u,each:v,objectMerge:w,truncate:y,objectFrozen:x,hasKey:z,joinRegExp:A,urlencode:B,uuid4:D,htmlTreeAsString:E,htmlElementAsString:F,isSameException:I,isSameStacktrace:J,parseUrl:C,fill:K,safeJoin:L,serializeException:Q,serializeKeysForMessage:R,sanitize:S}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{10:10}],9:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}function e(){return"undefined"==typeof document||null==document.location?"":(document.location.origin||(document.location.origin=document.location.protocol+"//"+document.location.hostname+(document.location.port?":"+document.location.port:"")),document.location.origin)}var f=a(8),g={collectWindowErrors:!0,debug:!1},h="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},i=[].slice,j="?",k=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;g.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function e(a,b){var c=null;if(!b||g.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(i.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,h,i){var l=null,m=f.isErrorEvent(i)?i.error:i,n=f.isErrorEvent(a)?a.message:a;if(v)g.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&f.isError(m))l=g.computeStackTrace(m),e(l,!0);else{var p,r={url:b,line:c,column:h},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(k);p&&(s=p[1],n=p[2])}r.func=j,l={name:s,message:n,url:d(),stack:[r]},e(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=h.onerror,h.onerror=l,r=!0)}function n(){r&&(h.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,e.apply(null,[a,!1].concat(b))}function p(a,b){var c=i.call(arguments,1);if(v){if(u===a)return;o()}var d=g.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),g.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,f,g=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,h=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,i=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,k=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,l=/\((\S*)(?::(\d+))(?::(\d+))\)/,m=a.stack.split("\n"),n=[],o=(/^(.*) is undefined$/.exec(a.message),0),p=m.length;o eval")>-1;r&&(b=k.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==o||c[5]||"undefined"==typeof a.columnNumber||(n[0].column=a.columnNumber+1),f={ +url:c[3],func:c[1]||j,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}if(!f.func&&f.line&&(f.func=j),f.url&&"blob:"===f.url.substr(0,5)){var s=new XMLHttpRequest;if(s.open("GET",f.url,!1),s.send(null),200===s.status){var t=s.responseText||"";t=t.slice(-300);var u=t.match(/\/\/# sourceMappingURL=(.*)$/);if(u){var v=u[1];"~"===v.charAt(0)&&(v=e()+v.slice(1)),f.url=v.slice(0,-4)}}}n.push(f)}return n.length?{name:a.name,message:a.message,url:d(),stack:n}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=j),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,e){for(var h,i,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==f&&o!==g.report){if(i={url:null,func:j,line:null,column:null},o.name?i.func=o.name:(h=k.exec(o.toString()))&&(i.func=h[1]),"undefined"==typeof i.func)try{i.func=h.input.substring(0,h.input.indexOf("{"))}catch(p){}m[""+o]?n=!0:m[""+o]=!0,l.push(i)}e&&l.splice(0,e);var q={name:a.name,message:a.message,url:d(),stack:l};return b(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),q}function f(b,e){var f=null;e=null==e?0:+e;try{if(f=a(b))return f}catch(h){if(g.debug)throw h}try{if(f=c(b,e+1))return f}catch(h){if(g.debug)throw h}return{name:b.name,message:b.message,url:d()}}return f.augmentStackTraceWithInitialElement=b,f.computeStackTraceFromStackProp=a,f}(),b.exports=g}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{8:8}],10:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}],11:[function(a,b,c){function d(a,b){var c=(65535&a)+(65535&b),d=(a>>16)+(b>>16)+(c>>16);return d<<16|65535&c}function e(a,b){return a<>>32-b}function f(a,b,c,f,g,h){return d(e(d(d(b,a),d(f,h)),g),c)}function g(a,b,c,d,e,g,h){return f(b&c|~b&d,a,b,e,g,h)}function h(a,b,c,d,e,g,h){return f(b&d|c&~d,a,b,e,g,h)}function i(a,b,c,d,e,g,h){return f(b^c^d,a,b,e,g,h)}function j(a,b,c,d,e,g,h){return f(c^(b|~d),a,b,e,g,h)}function k(a,b){a[b>>5]|=128<>>9<<4)+14]=b;var c,e,f,k,l,m=1732584193,n=-271733879,o=-1732584194,p=271733878;for(c=0;c>5]>>>b%32&255);return c}function m(a){var b,c=[];for(c[(a.length>>2)-1]=void 0,b=0;b>5]|=(255&a.charCodeAt(b/8))<16&&(e=k(e,8*a.length)),c=0;c<16;c+=1)f[c]=909522486^e[c],g[c]=1549556828^e[c];return d=k(f.concat(m(b)),512+8*b.length),l(k(g.concat(d),640))}function p(a){var b,c,d="0123456789abcdef",e="";for(c=0;c>>4&15)+d.charAt(15&b);return e}function q(a){return unescape(encodeURIComponent(a))}function r(a){return n(q(a))}function s(a){return p(r(a))}function t(a,b){return o(q(a),q(b))}function u(a,b){return p(t(a,b))}function v(a,b,c){return b?c?t(b,a):u(b,a):c?r(a):s(a)}b.exports=v},{}]},{},[7,1,2,3])(7)}); //# sourceMappingURL=raven.min.js.map \ No newline at end of file diff --git a/dist/angular,console,vue/raven.min.js.map b/dist/angular,console,vue/raven.min.js.map index 328d19f9a9b6..8a479c2c6980 100644 --- a/dist/angular,console,vue/raven.min.js.map +++ b/dist/angular,console,vue/raven.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","angularPlugin","angular","RavenProvider","$get","$window","ExceptionHandlerProvider","$provide","decorator","exceptionHandler","R","$delegate","ex","cause","captureException","extra","moduleName","provider","config","setDataCallback","wrappedCallback","data","_normalizeData","angularPattern","exception","values","matches","exec","value","type","message","angularDocs","substr","addPlugin","7","8","2","consolePlugin","console","pluginOptions","logLevels","levels","push","callback","msg","captureMessage","level","pop","wrapConsoleMethod","wrapMethod","5","3","formatComponentName","vm","$root","name","_isVue","$options","_componentTag","__file","vuePlugin","Vue","_oldOnError","errorHandler","error","info","metaData","Object","prototype","toString","componentName","propsData","lifecycleHook","4","RavenConfigError","constructor","utils","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","safeJoin","logger","Function","apply","6","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","sanitizeKeys","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isErrorEvent","isDOMError","isDOMException","isError","isObject","isPlainObject","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","sanitize","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","dsn","options","_logDebug","globalOptions","key","setDSN","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","context","func","undefined","wrap","_before","wrapped","deep","_ignoreNextOnError","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","U","event","reason","unhandledPromiseRejection","C","_promiseRejectionHandler","bind","addEventListener","Q","removeEventListener","trimHeadFrames","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","V","currentOptions","exKeys","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","M","setTimeout","_","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","aa","evtName","_keypressTimeout","target","category","ca","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","da","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","D","_originalFunctionToString","E","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","F","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","S","builtin","T","G","installer","concat","H","str","m","allowSecretKey","K","port","B","W","stackInfo","_triggerEvent","_processException","lineno","Y","frame","_normalizeFrame","in_app","ha","stackInfoUrl","normalized","filename","line","colno","column","function","ga","prefixedMessage","culprit","ia","request","Referer","breadcrumbs","_trimBreadcrumbs","ja","urlProp","urlProps","ka","httpData","userAgent","User-Agent","referrer","z","_backoffDuration","_backoffStart","na","oa","current","last","pa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Z","baseData","project","platform","_getHttpData","serverName","server_name","_sanitizeData","forEach","random","_sendProcessedPayload","qa","sa","ra","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","ta","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","onerror","open","setRequestHeader","send","ua","hash","evaluated","A","$","setUser","setReleaseContext","10","11","9","RavenConstructor","_Raven","noConflict","Client","what","supportsErrorEvent","ErrorEvent","supportsDOMError","DOMError","supportsDOMException","DOMException","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","sanitizeMask","safeInput","o_O","getLocationHref","getLocationOrigin","origin","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","responseText","sourceMaps","sourceMapAddress","charAt","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","y","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","string","raw"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file +{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","angularPlugin","angular","RavenProvider","$get","$window","ExceptionHandlerProvider","$provide","decorator","exceptionHandler","R","$delegate","ex","cause","captureException","extra","moduleName","provider","config","setDataCallback","wrappedCallback","data","_normalizeData","angularPattern","exception","values","matches","exec","value","type","message","angularDocs","substr","addPlugin","7","8","2","consolePlugin","console","pluginOptions","logLevels","levels","push","callback","msg","captureMessage","level","pop","wrapConsoleMethod","wrapMethod","5","3","formatComponentName","vm","$root","name","_isVue","$options","_componentTag","__file","vuePlugin","Vue","_oldOnError","errorHandler","error","info","metaData","Object","prototype","toString","componentName","propsData","lifecycleHook","4","RavenConfigError","constructor","utils","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","safeJoin","logger","Function","apply","6","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","sanitizeKeys","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isErrorEvent","isDOMError","isDOMException","isError","isObject","isPlainObject","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","sanitize","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","dsn","options","_logDebug","globalOptions","key","setDSN","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","context","func","undefined","wrap","_before","wrapped","deep","_ignoreNextOnError","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","U","event","reason","unhandledPromiseRejection","C","_promiseRejectionHandler","bind","addEventListener","Q","removeEventListener","trimHeadFrames","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","V","currentOptions","exKeys","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","M","setTimeout","_","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","aa","evtName","_keypressTimeout","target","category","ca","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","da","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","D","_originalFunctionToString","E","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","F","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","S","builtin","T","G","installer","concat","H","str","m","allowSecretKey","K","port","B","W","stackInfo","_triggerEvent","_processException","lineno","Y","frame","_normalizeFrame","in_app","ha","stackInfoUrl","normalized","filename","line","colno","column","function","ga","prefixedMessage","culprit","ia","request","Referer","breadcrumbs","_trimBreadcrumbs","ja","urlProp","urlProps","ka","httpData","userAgent","User-Agent","referrer","z","_backoffDuration","_backoffStart","na","oa","current","last","pa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Z","baseData","project","platform","_getHttpData","serverName","server_name","_sanitizeData","forEach","random","_sendProcessedPayload","qa","sa","ra","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","ta","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","onerror","open","setRequestHeader","send","ua","hash","evaluated","A","$","setUser","setReleaseContext","10","11","9","RavenConstructor","_Raven","noConflict","Client","what","supportsErrorEvent","ErrorEvent","supportsDOMError","DOMError","supportsDOMException","DOMException","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","sanitizeMask","safeInput","o_O","getLocationHref","getLocationOrigin","origin","hostname","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","responseText","sourceMaps","sourceMapAddress","charAt","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","y","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","string","raw"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file diff --git a/dist/angular,console/raven.js b/dist/angular,console/raven.js index 725ffc488d6e..c753c842e8e8 100644 --- a/dist/angular,console/raven.js +++ b/dist/angular,console/raven.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.25.0 (80dffad) | github.com/getsentry/raven-js */ +/*! Raven.js 3.25.1 (b6f3c7a) | github.com/getsentry/raven-js */ /* * Includes TraceKit @@ -319,7 +319,7 @@ Raven.prototype = { // webpack (using a build step causes webpack #1617). Grunt verifies that // this value matches package.json during build. // See: https://github.com/getsentry/raven-js/issues/465 - VERSION: '3.25.0', + VERSION: '3.25.1', debug: false, @@ -1628,8 +1628,8 @@ Raven.prototype = { var hasPushAndReplaceState = !isChromePackagedApp && _window.history && - history.pushState && - history.replaceState; + _window.history.pushState && + _window.history.replaceState; if (autoBreadcrumbs.location && hasPushAndReplaceState) { // TODO: remove onpopstate handler on uninstall() var oldOnPopState = _window.onpopstate; @@ -1658,8 +1658,8 @@ Raven.prototype = { }; }; - fill(history, 'pushState', historyReplacementFunction, wrappedBuiltIns); - fill(history, 'replaceState', historyReplacementFunction, wrappedBuiltIns); + fill(_window.history, 'pushState', historyReplacementFunction, wrappedBuiltIns); + fill(_window.history, 'replaceState', historyReplacementFunction, wrappedBuiltIns); } if (autoBreadcrumbs.console && 'console' in _window && console.log) { @@ -1949,7 +1949,7 @@ Raven.prototype = { if (this._hasNavigator && _navigator.userAgent) { httpData.headers = { - 'User-Agent': navigator.userAgent + 'User-Agent': _navigator.userAgent }; } @@ -3124,6 +3124,16 @@ function getLocationHref() { function getLocationOrigin() { if (typeof document === 'undefined' || document.location == null) return ''; + + // Oh dear IE10... + if (!document.location.origin) { + document.location.origin = + document.location.protocol + + '//' + + document.location.hostname + + (document.location.port ? ':' + document.location.port : ''); + } + return document.location.origin; } diff --git a/dist/angular,console/raven.min.js b/dist/angular,console/raven.min.js index 5a803cbd4572..ec05ba7cffde 100644 --- a/dist/angular,console/raven.min.js +++ b/dist/angular,console/raven.min.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.25.0 (80dffad) | github.com/getsentry/raven-js */ -!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.Raven=a()}}(function(){return function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};b[g][0].call(k.exports,function(a){var c=b[g][1][a];return e(c?c:a)},k,k.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;gthis.l.maxBreadcrumbs&&this.v.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.s.push([a,b]),this.o&&this.G(),this},setUserContext:function(a){return this.k.user=a,this},setExtraContext:function(a){return this.$("extra",a),this},setTagsContext:function(a){return this.$("tags",a),this},clearContext:function(){return this.k={},this},getContext:function(){return JSON.parse(h(this.k))},setEnvironment:function(a){return this.l.environment=a,this},setRelease:function(a){return this.l.release=a,this},setDataCallback:function(a){var b=this.l.dataCallback;return this.l.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.l.breadcrumbCallback;return this.l.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.l.shouldSendCallback;return this.l.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.l.transport=a,this},lastException:function(){return this.e},lastEventId:function(){return this.g},isSetup:function(){return!!this.b&&(!!this.h||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.A("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=R.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(S){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.I;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.k.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.K(this.H(c)),h=S.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(S.head||S.body).appendChild(h)}},M:function(){var a=this;this.n+=1,setTimeout(function(){a.n-=1})},_:function(a,b){var c,d;if(this.c){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),S.createEvent?(c=S.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=S.createEventObject(),c.eventType=a);for(d in b)A(b,d)&&(c[d]=b[d]);if(S.createEvent)S.dispatchEvent(c);else try{S.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},aa:function(a){var b=this;return function(c){if(b.ba=null,b.w!==c){b.w=c;var d;try{d=E(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ca:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.ba;g||a.aa("input")(c),clearTimeout(g),a.ba=setTimeout(function(){a.ba=null},b)}}},da:function(a,b){var c=H(this.x.href),d=H(b),e=H(a);this.y=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},D:function(){var a=this;a.ea=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.N?a.ea.apply(this.P,arguments):a.ea.apply(this,arguments)}},R:function(){this.ea&&(Function.prototype.toString=this.ea)},E:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.da(b.y,c+""),a.apply(this,arguments)}};I(history,"pushState",j,d),I(history,"replaceState",j,d)}if(c.console&&"console"in R&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};w(["debug","info","warn","error","log"],function(a,b){O(console,b,k)})}},S:function(){for(var a;this.u.length;){a=this.u.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},T:function(){for(var a in this.r)this.q[a]=this.r[a]},G:function(){var a=this;w(this.s,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},H:function(a){var b=Q.exec(a),c={},d=7;try{for(;d--;)c[P[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.l.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},K:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},B:function(){this.n||this.W.apply(this,arguments)},W:function(a,b){var c=this.Y(a,b);this._("handle",{stackInfo:a,options:b}),this.ga(a.name,a.message,a.url,a.lineno,c,b)},Y:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(w(a.stack,function(b,e){var f=c.ha(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.v,0)}),this.k.user&&(a.user=this.k.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),a=this.qa(a),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||v(a[b]))&&delete a[b]}),s(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!v(a)&&(!s(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.na()?void this.A("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function F(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&l(b))for(c=b.split(/\s+/),f=0;fc?Q(a,b-1):d}function R(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?X:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function S(a,b){function c(a){return m(a)?a.map(function(a){return c(a)}):k(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!m(b)||m(b)&&0===b.length)return a;var d,e=A(b),f="********";try{d=JSON.parse(T(a))}catch(g){return a}return c(d)}var T=a(9),U="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},V=3,W=51200,X=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isDOMError:g,isDOMException:h,isUndefined:i,isFunction:j,isPlainObject:k,isString:l,isArray:m,isEmptyObject:n,supportsErrorEvent:o,supportsDOMError:p,supportsDOMException:q,supportsFetch:r,supportsReferrerPolicy:s,supportsPromiseRejectionEvent:t,wrappedCallback:u,each:v,objectMerge:w,truncate:y,objectFrozen:x,hasKey:z,joinRegExp:A,urlencode:B,uuid4:D,htmlTreeAsString:E,htmlElementAsString:F,isSameException:I,isSameStacktrace:J,parseUrl:C,fill:K,safeJoin:L,serializeException:Q,serializeKeysForMessage:R,sanitize:S}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{9:9}],8:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}function e(){return"undefined"==typeof document||null==document.location?"":document.location.origin}var f=a(7),g={collectWindowErrors:!0,debug:!1},h="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},i=[].slice,j="?",k=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;g.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function e(a,b){var c=null;if(!b||g.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(i.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,h,i){var l=null,m=f.isErrorEvent(i)?i.error:i,n=f.isErrorEvent(a)?a.message:a;if(v)g.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&f.isError(m))l=g.computeStackTrace(m),e(l,!0);else{var p,r={url:b,line:c,column:h},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(k);p&&(s=p[1],n=p[2])}r.func=j,l={name:s,message:n,url:d(),stack:[r]},e(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=h.onerror,h.onerror=l,r=!0)}function n(){r&&(h.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,e.apply(null,[a,!1].concat(b))}function p(a,b){var c=i.call(arguments,1);if(v){if(u===a)return;o()}var d=g.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),g.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,f,g=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,h=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,i=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,k=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,l=/\((\S*)(?::(\d+))(?::(\d+))\)/,m=a.stack.split("\n"),n=[],o=(/^(.*) is undefined$/.exec(a.message),0),p=m.length;o eval")>-1;r&&(b=k.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==o||c[5]||"undefined"==typeof a.columnNumber||(n[0].column=a.columnNumber+1),f={url:c[3],func:c[1]||j,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}if(!f.func&&f.line&&(f.func=j),f.url&&"blob:"===f.url.substr(0,5)){var s=new XMLHttpRequest;if(s.open("GET",f.url,!1),s.send(null),200===s.status){var t=s.responseText||"";t=t.slice(-300);var u=t.match(/\/\/# sourceMappingURL=(.*)$/);if(u){var v=u[1];"~"===v.charAt(0)&&(v=e()+v.slice(1)),f.url=v.slice(0,-4)}}}n.push(f)}return n.length?{name:a.name,message:a.message,url:d(),stack:n}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=j),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,e){ -for(var h,i,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==f&&o!==g.report){if(i={url:null,func:j,line:null,column:null},o.name?i.func=o.name:(h=k.exec(o.toString()))&&(i.func=h[1]),"undefined"==typeof i.func)try{i.func=h.input.substring(0,h.input.indexOf("{"))}catch(p){}m[""+o]?n=!0:m[""+o]=!0,l.push(i)}e&&l.splice(0,e);var q={name:a.name,message:a.message,url:d(),stack:l};return b(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),q}function f(b,e){var f=null;e=null==e?0:+e;try{if(f=a(b))return f}catch(h){if(g.debug)throw h}try{if(f=c(b,e+1))return f}catch(h){if(g.debug)throw h}return{name:b.name,message:b.message,url:d()}}return f.augmentStackTraceWithInitialElement=b,f.computeStackTraceFromStackProp=a,f}(),b.exports=g}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{7:7}],9:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}],10:[function(a,b,c){function d(a,b){var c=(65535&a)+(65535&b),d=(a>>16)+(b>>16)+(c>>16);return d<<16|65535&c}function e(a,b){return a<>>32-b}function f(a,b,c,f,g,h){return d(e(d(d(b,a),d(f,h)),g),c)}function g(a,b,c,d,e,g,h){return f(b&c|~b&d,a,b,e,g,h)}function h(a,b,c,d,e,g,h){return f(b&d|c&~d,a,b,e,g,h)}function i(a,b,c,d,e,g,h){return f(b^c^d,a,b,e,g,h)}function j(a,b,c,d,e,g,h){return f(c^(b|~d),a,b,e,g,h)}function k(a,b){a[b>>5]|=128<>>9<<4)+14]=b;var c,e,f,k,l,m=1732584193,n=-271733879,o=-1732584194,p=271733878;for(c=0;c>5]>>>b%32&255);return c}function m(a){var b,c=[];for(c[(a.length>>2)-1]=void 0,b=0;b>5]|=(255&a.charCodeAt(b/8))<16&&(e=k(e,8*a.length)),c=0;c<16;c+=1)f[c]=909522486^e[c],g[c]=1549556828^e[c];return d=k(f.concat(m(b)),512+8*b.length),l(k(g.concat(d),640))}function p(a){var b,c,d="0123456789abcdef",e="";for(c=0;c>>4&15)+d.charAt(15&b);return e}function q(a){return unescape(encodeURIComponent(a))}function r(a){return n(q(a))}function s(a){return p(r(a))}function t(a,b){return o(q(a),q(b))}function u(a,b){return p(t(a,b))}function v(a,b,c){return b?c?t(b,a):u(b,a):c?r(a):s(a)}b.exports=v},{}]},{},[6,1,2])(6)}); +/*! Raven.js 3.25.1 (b6f3c7a) | github.com/getsentry/raven-js */ +!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.Raven=a()}}(function(){return function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};b[g][0].call(k.exports,function(a){var c=b[g][1][a];return e(c?c:a)},k,k.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;gthis.l.maxBreadcrumbs&&this.v.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.s.push([a,b]),this.o&&this.G(),this},setUserContext:function(a){return this.k.user=a,this},setExtraContext:function(a){return this.$("extra",a),this},setTagsContext:function(a){return this.$("tags",a),this},clearContext:function(){return this.k={},this},getContext:function(){return JSON.parse(h(this.k))},setEnvironment:function(a){return this.l.environment=a,this},setRelease:function(a){return this.l.release=a,this},setDataCallback:function(a){var b=this.l.dataCallback;return this.l.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.l.breadcrumbCallback;return this.l.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.l.shouldSendCallback;return this.l.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.l.transport=a,this},lastException:function(){return this.e},lastEventId:function(){return this.g},isSetup:function(){return!!this.b&&(!!this.h||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.A("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=R.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(S){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.I;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.k.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.K(this.H(c)),h=S.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(S.head||S.body).appendChild(h)}},M:function(){var a=this;this.n+=1,setTimeout(function(){a.n-=1})},_:function(a,b){var c,d;if(this.c){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),S.createEvent?(c=S.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=S.createEventObject(),c.eventType=a);for(d in b)A(b,d)&&(c[d]=b[d]);if(S.createEvent)S.dispatchEvent(c);else try{S.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},aa:function(a){var b=this;return function(c){if(b.ba=null,b.w!==c){b.w=c;var d;try{d=E(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ca:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.ba;g||a.aa("input")(c),clearTimeout(g),a.ba=setTimeout(function(){a.ba=null},b)}}},da:function(a,b){var c=H(this.x.href),d=H(b),e=H(a);this.y=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},D:function(){var a=this;a.ea=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.N?a.ea.apply(this.P,arguments):a.ea.apply(this,arguments)}},R:function(){this.ea&&(Function.prototype.toString=this.ea)},E:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.da(b.y,c+""),a.apply(this,arguments)}};I(R.history,"pushState",j,d),I(R.history,"replaceState",j,d)}if(c.console&&"console"in R&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};w(["debug","info","warn","error","log"],function(a,b){O(console,b,k)})}},S:function(){for(var a;this.u.length;){a=this.u.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},T:function(){for(var a in this.r)this.q[a]=this.r[a]},G:function(){var a=this;w(this.s,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},H:function(a){var b=Q.exec(a),c={},d=7;try{for(;d--;)c[P[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.l.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},K:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},B:function(){this.n||this.W.apply(this,arguments)},W:function(a,b){var c=this.Y(a,b);this._("handle",{stackInfo:a,options:b}),this.ga(a.name,a.message,a.url,a.lineno,c,b)},Y:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(w(a.stack,function(b,e){var f=c.ha(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.v,0)}),this.k.user&&(a.user=this.k.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),a=this.qa(a),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||v(a[b]))&&delete a[b]}),s(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!v(a)&&(!s(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.na()?void this.A("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function F(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&l(b))for(c=b.split(/\s+/),f=0;fc?Q(a,b-1):d}function R(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?X:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function S(a,b){function c(a){return m(a)?a.map(function(a){return c(a)}):k(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!m(b)||m(b)&&0===b.length)return a;var d,e=A(b),f="********";try{d=JSON.parse(T(a))}catch(g){return a}return c(d)}var T=a(9),U="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},V=3,W=51200,X=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isDOMError:g,isDOMException:h,isUndefined:i,isFunction:j,isPlainObject:k,isString:l,isArray:m,isEmptyObject:n,supportsErrorEvent:o,supportsDOMError:p,supportsDOMException:q,supportsFetch:r,supportsReferrerPolicy:s,supportsPromiseRejectionEvent:t,wrappedCallback:u,each:v,objectMerge:w,truncate:y,objectFrozen:x,hasKey:z,joinRegExp:A,urlencode:B,uuid4:D,htmlTreeAsString:E,htmlElementAsString:F,isSameException:I,isSameStacktrace:J,parseUrl:C,fill:K,safeJoin:L,serializeException:Q,serializeKeysForMessage:R,sanitize:S}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{9:9}],8:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}function e(){return"undefined"==typeof document||null==document.location?"":(document.location.origin||(document.location.origin=document.location.protocol+"//"+document.location.hostname+(document.location.port?":"+document.location.port:"")),document.location.origin)}var f=a(7),g={collectWindowErrors:!0,debug:!1},h="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},i=[].slice,j="?",k=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;g.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function e(a,b){var c=null;if(!b||g.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(i.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,h,i){var l=null,m=f.isErrorEvent(i)?i.error:i,n=f.isErrorEvent(a)?a.message:a;if(v)g.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&f.isError(m))l=g.computeStackTrace(m),e(l,!0);else{var p,r={url:b,line:c,column:h},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(k);p&&(s=p[1],n=p[2])}r.func=j,l={name:s,message:n,url:d(),stack:[r]},e(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=h.onerror,h.onerror=l,r=!0)}function n(){r&&(h.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,e.apply(null,[a,!1].concat(b))}function p(a,b){var c=i.call(arguments,1);if(v){if(u===a)return;o()}var d=g.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),g.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,f,g=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,h=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,i=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,k=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,l=/\((\S*)(?::(\d+))(?::(\d+))\)/,m=a.stack.split("\n"),n=[],o=(/^(.*) is undefined$/.exec(a.message),0),p=m.length;o eval")>-1;r&&(b=k.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==o||c[5]||"undefined"==typeof a.columnNumber||(n[0].column=a.columnNumber+1),f={url:c[3],func:c[1]||j,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}if(!f.func&&f.line&&(f.func=j),f.url&&"blob:"===f.url.substr(0,5)){var s=new XMLHttpRequest;if(s.open("GET",f.url,!1),s.send(null),200===s.status){var t=s.responseText||"";t=t.slice(-300);var u=t.match(/\/\/# sourceMappingURL=(.*)$/);if(u){var v=u[1];"~"===v.charAt(0)&&(v=e()+v.slice(1)),f.url=v.slice(0,-4)}}}n.push(f)}return n.length?{name:a.name,message:a.message,url:d(),stack:n}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=j),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1; +if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,e){for(var h,i,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==f&&o!==g.report){if(i={url:null,func:j,line:null,column:null},o.name?i.func=o.name:(h=k.exec(o.toString()))&&(i.func=h[1]),"undefined"==typeof i.func)try{i.func=h.input.substring(0,h.input.indexOf("{"))}catch(p){}m[""+o]?n=!0:m[""+o]=!0,l.push(i)}e&&l.splice(0,e);var q={name:a.name,message:a.message,url:d(),stack:l};return b(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),q}function f(b,e){var f=null;e=null==e?0:+e;try{if(f=a(b))return f}catch(h){if(g.debug)throw h}try{if(f=c(b,e+1))return f}catch(h){if(g.debug)throw h}return{name:b.name,message:b.message,url:d()}}return f.augmentStackTraceWithInitialElement=b,f.computeStackTraceFromStackProp=a,f}(),b.exports=g}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{7:7}],9:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}],10:[function(a,b,c){function d(a,b){var c=(65535&a)+(65535&b),d=(a>>16)+(b>>16)+(c>>16);return d<<16|65535&c}function e(a,b){return a<>>32-b}function f(a,b,c,f,g,h){return d(e(d(d(b,a),d(f,h)),g),c)}function g(a,b,c,d,e,g,h){return f(b&c|~b&d,a,b,e,g,h)}function h(a,b,c,d,e,g,h){return f(b&d|c&~d,a,b,e,g,h)}function i(a,b,c,d,e,g,h){return f(b^c^d,a,b,e,g,h)}function j(a,b,c,d,e,g,h){return f(c^(b|~d),a,b,e,g,h)}function k(a,b){a[b>>5]|=128<>>9<<4)+14]=b;var c,e,f,k,l,m=1732584193,n=-271733879,o=-1732584194,p=271733878;for(c=0;c>5]>>>b%32&255);return c}function m(a){var b,c=[];for(c[(a.length>>2)-1]=void 0,b=0;b>5]|=(255&a.charCodeAt(b/8))<16&&(e=k(e,8*a.length)),c=0;c<16;c+=1)f[c]=909522486^e[c],g[c]=1549556828^e[c];return d=k(f.concat(m(b)),512+8*b.length),l(k(g.concat(d),640))}function p(a){var b,c,d="0123456789abcdef",e="";for(c=0;c>>4&15)+d.charAt(15&b);return e}function q(a){return unescape(encodeURIComponent(a))}function r(a){return n(q(a))}function s(a){return p(r(a))}function t(a,b){return o(q(a),q(b))}function u(a,b){return p(t(a,b))}function v(a,b,c){return b?c?t(b,a):u(b,a):c?r(a):s(a)}b.exports=v},{}]},{},[6,1,2])(6)}); //# sourceMappingURL=raven.min.js.map \ No newline at end of file diff --git a/dist/angular,console/raven.min.js.map b/dist/angular,console/raven.min.js.map index e567650e4430..367a5f9cef5a 100644 --- a/dist/angular,console/raven.min.js.map +++ b/dist/angular,console/raven.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","angularPlugin","angular","RavenProvider","$get","$window","ExceptionHandlerProvider","$provide","decorator","exceptionHandler","R","$delegate","ex","cause","captureException","extra","moduleName","provider","config","setDataCallback","wrappedCallback","data","_normalizeData","angularPattern","exception","values","matches","exec","value","type","message","angularDocs","substr","addPlugin","6","7","2","consolePlugin","console","pluginOptions","logLevels","levels","push","callback","msg","captureMessage","level","pop","wrapConsoleMethod","wrapMethod","4","3","RavenConfigError","name","prototype","constructor","utils","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","safeJoin","logger","Function","apply","5","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","sanitizeKeys","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isErrorEvent","isDOMError","isDOMException","isError","isObject","isPlainObject","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","sanitize","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","dsn","options","_logDebug","globalOptions","key","setDSN","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","toString","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","context","func","undefined","wrap","_before","wrapped","deep","_ignoreNextOnError","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","U","event","reason","unhandledPromiseRejection","C","_promiseRejectionHandler","bind","addEventListener","Q","removeEventListener","trimHeadFrames","error","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","V","currentOptions","exKeys","Object","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","M","setTimeout","_","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","aa","evtName","_keypressTimeout","target","category","ca","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","da","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","D","_originalFunctionToString","E","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","F","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","S","builtin","T","G","installer","concat","H","str","m","allowSecretKey","K","port","B","W","stackInfo","_triggerEvent","_processException","lineno","Y","frame","_normalizeFrame","in_app","ha","stackInfoUrl","normalized","filename","line","colno","column","function","ga","prefixedMessage","culprit","ia","request","Referer","breadcrumbs","_trimBreadcrumbs","ja","urlProp","urlProps","ka","httpData","userAgent","User-Agent","referrer","z","_backoffDuration","_backoffStart","na","oa","current","last","pa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Z","baseData","project","platform","_getHttpData","serverName","server_name","_sanitizeData","forEach","random","_sendProcessedPayload","qa","sa","ra","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","ta","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","onerror","open","setRequestHeader","send","ua","hash","evaluated","A","$","setUser","setReleaseContext","10","8","9","RavenConstructor","_Raven","noConflict","Client","what","supportsErrorEvent","ErrorEvent","supportsDOMError","DOMError","supportsDOMException","DOMException","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","sanitizeMask","safeInput","o_O","getLocationHref","getLocationOrigin","origin","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","responseText","sourceMaps","sourceMapAddress","charAt","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","y","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","string","raw"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file +{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","angularPlugin","angular","RavenProvider","$get","$window","ExceptionHandlerProvider","$provide","decorator","exceptionHandler","R","$delegate","ex","cause","captureException","extra","moduleName","provider","config","setDataCallback","wrappedCallback","data","_normalizeData","angularPattern","exception","values","matches","exec","value","type","message","angularDocs","substr","addPlugin","6","7","2","consolePlugin","console","pluginOptions","logLevels","levels","push","callback","msg","captureMessage","level","pop","wrapConsoleMethod","wrapMethod","4","3","RavenConfigError","name","prototype","constructor","utils","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","safeJoin","logger","Function","apply","5","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","sanitizeKeys","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isErrorEvent","isDOMError","isDOMException","isError","isObject","isPlainObject","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","sanitize","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","dsn","options","_logDebug","globalOptions","key","setDSN","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","toString","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","context","func","undefined","wrap","_before","wrapped","deep","_ignoreNextOnError","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","U","event","reason","unhandledPromiseRejection","C","_promiseRejectionHandler","bind","addEventListener","Q","removeEventListener","trimHeadFrames","error","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","V","currentOptions","exKeys","Object","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","M","setTimeout","_","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","aa","evtName","_keypressTimeout","target","category","ca","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","da","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","D","_originalFunctionToString","E","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","F","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","S","builtin","T","G","installer","concat","H","str","m","allowSecretKey","K","port","B","W","stackInfo","_triggerEvent","_processException","lineno","Y","frame","_normalizeFrame","in_app","ha","stackInfoUrl","normalized","filename","line","colno","column","function","ga","prefixedMessage","culprit","ia","request","Referer","breadcrumbs","_trimBreadcrumbs","ja","urlProp","urlProps","ka","httpData","userAgent","User-Agent","referrer","z","_backoffDuration","_backoffStart","na","oa","current","last","pa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Z","baseData","project","platform","_getHttpData","serverName","server_name","_sanitizeData","forEach","random","_sendProcessedPayload","qa","sa","ra","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","ta","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","onerror","open","setRequestHeader","send","ua","hash","evaluated","A","$","setUser","setReleaseContext","10","8","9","RavenConstructor","_Raven","noConflict","Client","what","supportsErrorEvent","ErrorEvent","supportsDOMError","DOMError","supportsDOMException","DOMException","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","sanitizeMask","safeInput","o_O","getLocationHref","getLocationOrigin","origin","hostname","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","responseText","sourceMaps","sourceMapAddress","charAt","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","y","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","string","raw"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file diff --git a/dist/angular,ember,require,vue/raven.js b/dist/angular,ember,require,vue/raven.js index c28d72e94d78..d8d40428e497 100644 --- a/dist/angular,ember,require,vue/raven.js +++ b/dist/angular,ember,require,vue/raven.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.25.0 (80dffad) | github.com/getsentry/raven-js */ +/*! Raven.js 3.25.1 (b6f3c7a) | github.com/getsentry/raven-js */ /* * Includes TraceKit @@ -384,7 +384,7 @@ Raven.prototype = { // webpack (using a build step causes webpack #1617). Grunt verifies that // this value matches package.json during build. // See: https://github.com/getsentry/raven-js/issues/465 - VERSION: '3.25.0', + VERSION: '3.25.1', debug: false, @@ -1693,8 +1693,8 @@ Raven.prototype = { var hasPushAndReplaceState = !isChromePackagedApp && _window.history && - history.pushState && - history.replaceState; + _window.history.pushState && + _window.history.replaceState; if (autoBreadcrumbs.location && hasPushAndReplaceState) { // TODO: remove onpopstate handler on uninstall() var oldOnPopState = _window.onpopstate; @@ -1723,8 +1723,8 @@ Raven.prototype = { }; }; - fill(history, 'pushState', historyReplacementFunction, wrappedBuiltIns); - fill(history, 'replaceState', historyReplacementFunction, wrappedBuiltIns); + fill(_window.history, 'pushState', historyReplacementFunction, wrappedBuiltIns); + fill(_window.history, 'replaceState', historyReplacementFunction, wrappedBuiltIns); } if (autoBreadcrumbs.console && 'console' in _window && console.log) { @@ -2014,7 +2014,7 @@ Raven.prototype = { if (this._hasNavigator && _navigator.userAgent) { httpData.headers = { - 'User-Agent': navigator.userAgent + 'User-Agent': _navigator.userAgent }; } @@ -3189,6 +3189,16 @@ function getLocationHref() { function getLocationOrigin() { if (typeof document === 'undefined' || document.location == null) return ''; + + // Oh dear IE10... + if (!document.location.origin) { + document.location.origin = + document.location.protocol + + '//' + + document.location.hostname + + (document.location.port ? ':' + document.location.port : ''); + } + return document.location.origin; } diff --git a/dist/angular,ember,require,vue/raven.min.js b/dist/angular,ember,require,vue/raven.min.js index 78999f86e259..309a90e1eb6b 100644 --- a/dist/angular,ember,require,vue/raven.min.js +++ b/dist/angular,ember,require,vue/raven.min.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.25.0 (80dffad) | github.com/getsentry/raven-js */ -!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.Raven=a()}}(function(){var a;return function b(a,c,d){function e(g,h){if(!c[g]){if(!a[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};a[g][0].call(k.exports,function(b){var c=a[g][1][b];return e(c?c:b)},k,k.exports,b,a,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;g":"anonymous component")+(a._isVue&&a.$options.__file?" at "+a.$options.__file:"")}function e(a,b){if(b=b||window.Vue,b&&b.config){var c=b.config.errorHandler;b.config.errorHandler=function(b,e,f){var g={};"[object Object]"===Object.prototype.toString.call(e)&&(g.componentName=d(e),g.propsData=e.$options.propsData),"undefined"!=typeof f&&(g.lifecycleHook=f),a.captureException(b,{extra:g}),"function"==typeof c&&c.call(this,b,e,f)}}}b.exports=e,a(8).addPlugin(b.exports)},{8:8}],5:[function(a,b,c){function d(a){this.name="RavenConfigError",this.message=a}d.prototype=new Error,d.prototype.constructor=d,b.exports=d},{}],6:[function(a,b,c){var d=a(9),e=function(a,b,c){var e=a[b],f=a;if(b in a){var g="warn"===b?"warning":b;a[b]=function(){var a=[].slice.call(arguments),h=d.safeJoin(a," "),i={level:g,logger:"console",extra:{arguments:a}};"assert"===b?a[0]===!1&&(h="Assertion failed: "+(d.safeJoin(a.slice(1)," ")||"console.assert"),i.extra.arguments=a.slice(1),c&&c(h,i)):c&&c(h,i),e&&Function.prototype.apply.call(e,f,a)}}};b.exports={wrapMethod:e}},{9:9}],7:[function(a,b,c){(function(c){function d(){return+new Date}function e(a,b){return s(b)?function(c){return b(c,a)}:b}function f(){this.b=!("object"!=typeof JSON||!JSON.stringify),this.c=!r(S),this.d=!r(T),this.e=null,this.f=null,this.g=null,this.h=null,this.i=null,this.j=null,this.k={},this.l={release:R.SENTRY_RELEASE&&R.SENTRY_RELEASE.id,logger:"javascript",ignoreErrors:[],ignoreUrls:[],whitelistUrls:[],includePaths:[],headers:null,collectWindowErrors:!0,captureUnhandledRejections:!0,maxMessageLength:0,maxUrlLength:250,stackTraceLimit:50,autoBreadcrumbs:!0,instrument:!0,sampleRate:1,sanitizeKeys:[]},this.m={method:"POST",keepalive:!0,referrerPolicy:K()?"origin":""},this.n=0,this.o=!1,this.p=Error.stackTraceLimit,this.q=R.console||{},this.r={},this.s=[],this.t=d(),this.u=[],this.v=[],this.w=null,this.x=R.location,this.y=this.x&&this.x.href,this.z();for(var a in this.q)this.r[a]=this.q[a]}var g=a(10),h=a(11),i=a(12),j=a(5),k=a(9),l=k.isErrorEvent,m=k.isDOMError,n=k.isDOMException,o=k.isError,p=k.isObject,q=k.isPlainObject,r=k.isUndefined,s=k.isFunction,t=k.isString,u=k.isArray,v=k.isEmptyObject,w=k.each,x=k.objectMerge,y=k.truncate,z=k.objectFrozen,A=k.hasKey,B=k.joinRegExp,C=k.urlencode,D=k.uuid4,E=k.htmlTreeAsString,F=k.isSameException,G=k.isSameStacktrace,H=k.parseUrl,I=k.fill,J=k.supportsFetch,K=k.supportsReferrerPolicy,L=k.serializeKeysForMessage,M=k.serializeException,N=k.sanitize,O=a(6).wrapMethod,P="source protocol user pass host port path".split(" "),Q=/^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/,R="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},S=R.document,T=R.navigator;f.prototype={VERSION:"3.25.0",debug:!1,TraceKit:g,config:function(a,b){var c=this;if(c.h)return this.A("error","Error: Raven has already been configured"),c;if(!a)return c;var d=c.l;b&&w(b,function(a,b){"tags"===a||"extra"===a||"user"===a?c.k[a]=b:d[a]=b}),c.setDSN(a),d.ignoreErrors.push(/^Script error\.?$/),d.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/),d.ignoreErrors=B(d.ignoreErrors),d.ignoreUrls=!!d.ignoreUrls.length&&B(d.ignoreUrls),d.whitelistUrls=!!d.whitelistUrls.length&&B(d.whitelistUrls),d.includePaths=B(d.includePaths),d.maxBreadcrumbs=Math.max(0,Math.min(d.maxBreadcrumbs||100,100));var e={xhr:!0,console:!0,dom:!0,location:!0,sentry:!0},f=d.autoBreadcrumbs;"[object Object]"==={}.toString.call(f)?f=x(e,f):f!==!1&&(f=e),d.autoBreadcrumbs=f;var h={tryCatch:!0},i=d.instrument;return"[object Object]"==={}.toString.call(i)?i=x(h,i):i!==!1&&(i=h),d.instrument=i,g.collectWindowErrors=!!d.collectWindowErrors,c},install:function(){var a=this;return a.isSetup()&&!a.o&&(g.report.subscribe(function(){a.B.apply(a,arguments)}),a.l.captureUnhandledRejections&&a.C(),a.D(),a.l.instrument&&a.l.instrument.tryCatch&&a.E(),a.l.autoBreadcrumbs&&a.F(),a.G(),a.o=!0),Error.stackTraceLimit=a.l.stackTraceLimit,this},setDSN:function(a){var b=this,c=b.H(a),d=c.path.lastIndexOf("/"),e=c.path.substr(1,d);b.I=a,b.i=c.user,b.J=c.pass&&c.pass.substr(1),b.j=c.path.substr(d+1),b.h=b.K(c),b.L=b.h+"/"+e+"api/"+b.j+"/store/",this.z()},context:function(a,b,c){return s(a)&&(c=b||[],b=a,a=void 0),this.wrap(a,b).apply(this,c)},wrap:function(a,b,c){function d(){var d=[],f=arguments.length,g=!a||a&&a.deep!==!1;for(c&&s(c)&&c.apply(this,arguments);f--;)d[f]=g?e.wrap(a,arguments[f]):arguments[f];try{return b.apply(this,d)}catch(h){throw e.M(),e.captureException(h,a),h}}var e=this;if(r(b)&&!s(a))return a;if(s(a)&&(b=a,a=void 0),!s(b))return b;try{if(b.N)return b;if(b.O)return b.O}catch(f){return b}for(var g in b)A(b,g)&&(d[g]=b[g]);return d.prototype=b.prototype,b.O=d,d.N=!0,d.P=b,d},uninstall:function(){return g.report.uninstall(),this.Q(),this.R(),this.S(),this.T(),Error.stackTraceLimit=this.p,this.o=!1,this},U:function(a){this.A("debug","Raven caught unhandled promise rejection:",a),this.captureException(a.reason,{extra:{unhandledPromiseRejection:!0}})},C:function(){return this.U=this.U.bind(this),R.addEventListener&&R.addEventListener("unhandledrejection",this.U),this},Q:function(){return R.removeEventListener&&R.removeEventListener("unhandledrejection",this.U),this},captureException:function(a,b){if(b=x({trimHeadFrames:0},b?b:{}),l(a)&&a.error)a=a.error;else{if(m(a)||n(a)){var c=a.name||(m(a)?"DOMError":"DOMException"),d=a.message?c+": "+a.message:c;return this.captureMessage(d,x(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}))}if(o(a))a=a;else{if(!q(a))return this.captureMessage(a,x(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}));b=this.V(b,a),a=new Error(b.message)}}this.e=a;try{var e=g.computeStackTrace(a);this.W(e,b)}catch(f){if(a!==f)throw f}return this},V:function(a,b){var c=Object.keys(b).sort(),d=x(a,{message:"Non-Error exception captured with keys: "+L(c),fingerprint:[i(c)],extra:a.extra||{}});return d.extra.X=M(b),d},captureMessage:function(a,b){if(!this.l.ignoreErrors.test||!this.l.ignoreErrors.test(a)){b=b||{},a+="";var c,d=x({message:a},b);try{throw new Error(a)}catch(e){c=e}c.name=null;var f=g.computeStackTrace(c),h=u(f.stack)&&f.stack[1];h&&"Raven.captureException"===h.func&&(h=f.stack[2]);var i=h&&h.url||"";if((!this.l.ignoreUrls.test||!this.l.ignoreUrls.test(i))&&(!this.l.whitelistUrls.test||this.l.whitelistUrls.test(i))){if(this.l.stacktrace||b&&b.stacktrace){d.fingerprint=null==d.fingerprint?a:d.fingerprint,b=x({trimHeadFrames:0},b),b.trimHeadFrames+=1;var j=this.Y(f,b);d.stacktrace={frames:j.reverse()}}return d.fingerprint&&(d.fingerprint=u(d.fingerprint)?d.fingerprint:[d.fingerprint]),this.Z(d),this}}},captureBreadcrumb:function(a){var b=x({timestamp:d()/1e3},a);if(s(this.l.breadcrumbCallback)){var c=this.l.breadcrumbCallback(b);if(p(c)&&!v(c))b=c;else if(c===!1)return this}return this.v.push(b),this.v.length>this.l.maxBreadcrumbs&&this.v.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.s.push([a,b]),this.o&&this.G(),this},setUserContext:function(a){return this.k.user=a,this},setExtraContext:function(a){return this.$("extra",a),this},setTagsContext:function(a){return this.$("tags",a),this},clearContext:function(){return this.k={},this},getContext:function(){return JSON.parse(h(this.k))},setEnvironment:function(a){return this.l.environment=a,this},setRelease:function(a){return this.l.release=a,this},setDataCallback:function(a){var b=this.l.dataCallback;return this.l.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.l.breadcrumbCallback;return this.l.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.l.shouldSendCallback;return this.l.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.l.transport=a,this},lastException:function(){return this.e},lastEventId:function(){return this.g},isSetup:function(){return!!this.b&&(!!this.h||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.A("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=R.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(S){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.I;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.k.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.K(this.H(c)),h=S.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(S.head||S.body).appendChild(h)}},M:function(){var a=this;this.n+=1,setTimeout(function(){a.n-=1})},_:function(a,b){var c,d;if(this.c){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),S.createEvent?(c=S.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=S.createEventObject(),c.eventType=a);for(d in b)A(b,d)&&(c[d]=b[d]);if(S.createEvent)S.dispatchEvent(c);else try{S.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},aa:function(a){var b=this;return function(c){if(b.ba=null,b.w!==c){b.w=c;var d;try{d=E(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ca:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.ba;g||a.aa("input")(c),clearTimeout(g),a.ba=setTimeout(function(){a.ba=null},b)}}},da:function(a,b){var c=H(this.x.href),d=H(b),e=H(a);this.y=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},D:function(){var a=this;a.ea=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.N?a.ea.apply(this.P,arguments):a.ea.apply(this,arguments)}},R:function(){this.ea&&(Function.prototype.toString=this.ea)},E:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.da(b.y,c+""),a.apply(this,arguments)}};I(history,"pushState",j,d),I(history,"replaceState",j,d)}if(c.console&&"console"in R&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};w(["debug","info","warn","error","log"],function(a,b){O(console,b,k)})}},S:function(){for(var a;this.u.length;){a=this.u.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},T:function(){for(var a in this.r)this.q[a]=this.r[a]},G:function(){var a=this;w(this.s,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},H:function(a){var b=Q.exec(a),c={},d=7;try{for(;d--;)c[P[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.l.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},K:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},B:function(){this.n||this.W.apply(this,arguments)},W:function(a,b){var c=this.Y(a,b);this._("handle",{stackInfo:a,options:b}),this.ga(a.name,a.message,a.url,a.lineno,c,b)},Y:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(w(a.stack,function(b,e){var f=c.ha(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.v,0)}),this.k.user&&(a.user=this.k.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),a=this.qa(a),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||v(a[b]))&&delete a[b]}),s(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!v(a)&&(!s(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.na()?void this.A("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function F(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&l(b))for(c=b.split(/\s+/),f=0;fc?Q(a,b-1):d}function R(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?X:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function S(a,b){function c(a){return m(a)?a.map(function(a){return c(a)}):k(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!m(b)||m(b)&&0===b.length)return a;var d,e=A(b),f="********";try{d=JSON.parse(T(a))}catch(g){return a}return c(d)}var T=a(11),U="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},V=3,W=51200,X=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isDOMError:g,isDOMException:h,isUndefined:i,isFunction:j,isPlainObject:k,isString:l,isArray:m,isEmptyObject:n,supportsErrorEvent:o,supportsDOMError:p,supportsDOMException:q,supportsFetch:r,supportsReferrerPolicy:s,supportsPromiseRejectionEvent:t,wrappedCallback:u,each:v,objectMerge:w,truncate:y,objectFrozen:x,hasKey:z,joinRegExp:A,urlencode:B,uuid4:D,htmlTreeAsString:E,htmlElementAsString:F,isSameException:I,isSameStacktrace:J,parseUrl:C,fill:K,safeJoin:L,serializeException:Q,serializeKeysForMessage:R,sanitize:S}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{11:11}],10:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}function e(){return"undefined"==typeof document||null==document.location?"":document.location.origin}var f=a(9),g={collectWindowErrors:!0,debug:!1},h="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},i=[].slice,j="?",k=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;g.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function e(a,b){var c=null;if(!b||g.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(i.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,h,i){var l=null,m=f.isErrorEvent(i)?i.error:i,n=f.isErrorEvent(a)?a.message:a;if(v)g.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&f.isError(m))l=g.computeStackTrace(m),e(l,!0);else{var p,r={url:b,line:c,column:h},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(k);p&&(s=p[1],n=p[2])}r.func=j,l={name:s,message:n,url:d(),stack:[r]},e(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=h.onerror,h.onerror=l,r=!0)}function n(){r&&(h.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,e.apply(null,[a,!1].concat(b))}function p(a,b){var c=i.call(arguments,1);if(v){if(u===a)return;o()}var d=g.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),g.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,f,g=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,h=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,i=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,k=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,l=/\((\S*)(?::(\d+))(?::(\d+))\)/,m=a.stack.split("\n"),n=[],o=(/^(.*) is undefined$/.exec(a.message),0),p=m.length;o eval")>-1;r&&(b=k.exec(c[3]))?(c[3]=b[1], -c[4]=b[2],c[5]=null):0!==o||c[5]||"undefined"==typeof a.columnNumber||(n[0].column=a.columnNumber+1),f={url:c[3],func:c[1]||j,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}if(!f.func&&f.line&&(f.func=j),f.url&&"blob:"===f.url.substr(0,5)){var s=new XMLHttpRequest;if(s.open("GET",f.url,!1),s.send(null),200===s.status){var t=s.responseText||"";t=t.slice(-300);var u=t.match(/\/\/# sourceMappingURL=(.*)$/);if(u){var v=u[1];"~"===v.charAt(0)&&(v=e()+v.slice(1)),f.url=v.slice(0,-4)}}}n.push(f)}return n.length?{name:a.name,message:a.message,url:d(),stack:n}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=j),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,e){for(var h,i,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==f&&o!==g.report){if(i={url:null,func:j,line:null,column:null},o.name?i.func=o.name:(h=k.exec(o.toString()))&&(i.func=h[1]),"undefined"==typeof i.func)try{i.func=h.input.substring(0,h.input.indexOf("{"))}catch(p){}m[""+o]?n=!0:m[""+o]=!0,l.push(i)}e&&l.splice(0,e);var q={name:a.name,message:a.message,url:d(),stack:l};return b(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),q}function f(b,e){var f=null;e=null==e?0:+e;try{if(f=a(b))return f}catch(h){if(g.debug)throw h}try{if(f=c(b,e+1))return f}catch(h){if(g.debug)throw h}return{name:b.name,message:b.message,url:d()}}return f.augmentStackTraceWithInitialElement=b,f.computeStackTraceFromStackProp=a,f}(),b.exports=g}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{9:9}],11:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}],12:[function(a,b,c){function d(a,b){var c=(65535&a)+(65535&b),d=(a>>16)+(b>>16)+(c>>16);return d<<16|65535&c}function e(a,b){return a<>>32-b}function f(a,b,c,f,g,h){return d(e(d(d(b,a),d(f,h)),g),c)}function g(a,b,c,d,e,g,h){return f(b&c|~b&d,a,b,e,g,h)}function h(a,b,c,d,e,g,h){return f(b&d|c&~d,a,b,e,g,h)}function i(a,b,c,d,e,g,h){return f(b^c^d,a,b,e,g,h)}function j(a,b,c,d,e,g,h){return f(c^(b|~d),a,b,e,g,h)}function k(a,b){a[b>>5]|=128<>>9<<4)+14]=b;var c,e,f,k,l,m=1732584193,n=-271733879,o=-1732584194,p=271733878;for(c=0;c>5]>>>b%32&255);return c}function m(a){var b,c=[];for(c[(a.length>>2)-1]=void 0,b=0;b>5]|=(255&a.charCodeAt(b/8))<16&&(e=k(e,8*a.length)),c=0;c<16;c+=1)f[c]=909522486^e[c],g[c]=1549556828^e[c];return d=k(f.concat(m(b)),512+8*b.length),l(k(g.concat(d),640))}function p(a){var b,c,d="0123456789abcdef",e="";for(c=0;c>>4&15)+d.charAt(15&b);return e}function q(a){return unescape(encodeURIComponent(a))}function r(a){return n(q(a))}function s(a){return p(r(a))}function t(a,b){return o(q(a),q(b))}function u(a,b){return p(t(a,b))}function v(a,b,c){return b?c?t(b,a):u(b,a):c?r(a):s(a)}b.exports=v},{}]},{},[8,1,2,3,4])(8)}); +/*! Raven.js 3.25.1 (b6f3c7a) | github.com/getsentry/raven-js */ +!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.Raven=a()}}(function(){var a;return function b(a,c,d){function e(g,h){if(!c[g]){if(!a[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};a[g][0].call(k.exports,function(b){var c=a[g][1][b];return e(c?c:b)},k,k.exports,b,a,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;g":"anonymous component")+(a._isVue&&a.$options.__file?" at "+a.$options.__file:"")}function e(a,b){if(b=b||window.Vue,b&&b.config){var c=b.config.errorHandler;b.config.errorHandler=function(b,e,f){var g={};"[object Object]"===Object.prototype.toString.call(e)&&(g.componentName=d(e),g.propsData=e.$options.propsData),"undefined"!=typeof f&&(g.lifecycleHook=f),a.captureException(b,{extra:g}),"function"==typeof c&&c.call(this,b,e,f)}}}b.exports=e,a(8).addPlugin(b.exports)},{8:8}],5:[function(a,b,c){function d(a){this.name="RavenConfigError",this.message=a}d.prototype=new Error,d.prototype.constructor=d,b.exports=d},{}],6:[function(a,b,c){var d=a(9),e=function(a,b,c){var e=a[b],f=a;if(b in a){var g="warn"===b?"warning":b;a[b]=function(){var a=[].slice.call(arguments),h=d.safeJoin(a," "),i={level:g,logger:"console",extra:{arguments:a}};"assert"===b?a[0]===!1&&(h="Assertion failed: "+(d.safeJoin(a.slice(1)," ")||"console.assert"),i.extra.arguments=a.slice(1),c&&c(h,i)):c&&c(h,i),e&&Function.prototype.apply.call(e,f,a)}}};b.exports={wrapMethod:e}},{9:9}],7:[function(a,b,c){(function(c){function d(){return+new Date}function e(a,b){return s(b)?function(c){return b(c,a)}:b}function f(){this.b=!("object"!=typeof JSON||!JSON.stringify),this.c=!r(S),this.d=!r(T),this.e=null,this.f=null,this.g=null,this.h=null,this.i=null,this.j=null,this.k={},this.l={release:R.SENTRY_RELEASE&&R.SENTRY_RELEASE.id,logger:"javascript",ignoreErrors:[],ignoreUrls:[],whitelistUrls:[],includePaths:[],headers:null,collectWindowErrors:!0,captureUnhandledRejections:!0,maxMessageLength:0,maxUrlLength:250,stackTraceLimit:50,autoBreadcrumbs:!0,instrument:!0,sampleRate:1,sanitizeKeys:[]},this.m={method:"POST",keepalive:!0,referrerPolicy:K()?"origin":""},this.n=0,this.o=!1,this.p=Error.stackTraceLimit,this.q=R.console||{},this.r={},this.s=[],this.t=d(),this.u=[],this.v=[],this.w=null,this.x=R.location,this.y=this.x&&this.x.href,this.z();for(var a in this.q)this.r[a]=this.q[a]}var g=a(10),h=a(11),i=a(12),j=a(5),k=a(9),l=k.isErrorEvent,m=k.isDOMError,n=k.isDOMException,o=k.isError,p=k.isObject,q=k.isPlainObject,r=k.isUndefined,s=k.isFunction,t=k.isString,u=k.isArray,v=k.isEmptyObject,w=k.each,x=k.objectMerge,y=k.truncate,z=k.objectFrozen,A=k.hasKey,B=k.joinRegExp,C=k.urlencode,D=k.uuid4,E=k.htmlTreeAsString,F=k.isSameException,G=k.isSameStacktrace,H=k.parseUrl,I=k.fill,J=k.supportsFetch,K=k.supportsReferrerPolicy,L=k.serializeKeysForMessage,M=k.serializeException,N=k.sanitize,O=a(6).wrapMethod,P="source protocol user pass host port path".split(" "),Q=/^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/,R="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},S=R.document,T=R.navigator;f.prototype={VERSION:"3.25.1",debug:!1,TraceKit:g,config:function(a,b){var c=this;if(c.h)return this.A("error","Error: Raven has already been configured"),c;if(!a)return c;var d=c.l;b&&w(b,function(a,b){"tags"===a||"extra"===a||"user"===a?c.k[a]=b:d[a]=b}),c.setDSN(a),d.ignoreErrors.push(/^Script error\.?$/),d.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/),d.ignoreErrors=B(d.ignoreErrors),d.ignoreUrls=!!d.ignoreUrls.length&&B(d.ignoreUrls),d.whitelistUrls=!!d.whitelistUrls.length&&B(d.whitelistUrls),d.includePaths=B(d.includePaths),d.maxBreadcrumbs=Math.max(0,Math.min(d.maxBreadcrumbs||100,100));var e={xhr:!0,console:!0,dom:!0,location:!0,sentry:!0},f=d.autoBreadcrumbs;"[object Object]"==={}.toString.call(f)?f=x(e,f):f!==!1&&(f=e),d.autoBreadcrumbs=f;var h={tryCatch:!0},i=d.instrument;return"[object Object]"==={}.toString.call(i)?i=x(h,i):i!==!1&&(i=h),d.instrument=i,g.collectWindowErrors=!!d.collectWindowErrors,c},install:function(){var a=this;return a.isSetup()&&!a.o&&(g.report.subscribe(function(){a.B.apply(a,arguments)}),a.l.captureUnhandledRejections&&a.C(),a.D(),a.l.instrument&&a.l.instrument.tryCatch&&a.E(),a.l.autoBreadcrumbs&&a.F(),a.G(),a.o=!0),Error.stackTraceLimit=a.l.stackTraceLimit,this},setDSN:function(a){var b=this,c=b.H(a),d=c.path.lastIndexOf("/"),e=c.path.substr(1,d);b.I=a,b.i=c.user,b.J=c.pass&&c.pass.substr(1),b.j=c.path.substr(d+1),b.h=b.K(c),b.L=b.h+"/"+e+"api/"+b.j+"/store/",this.z()},context:function(a,b,c){return s(a)&&(c=b||[],b=a,a=void 0),this.wrap(a,b).apply(this,c)},wrap:function(a,b,c){function d(){var d=[],f=arguments.length,g=!a||a&&a.deep!==!1;for(c&&s(c)&&c.apply(this,arguments);f--;)d[f]=g?e.wrap(a,arguments[f]):arguments[f];try{return b.apply(this,d)}catch(h){throw e.M(),e.captureException(h,a),h}}var e=this;if(r(b)&&!s(a))return a;if(s(a)&&(b=a,a=void 0),!s(b))return b;try{if(b.N)return b;if(b.O)return b.O}catch(f){return b}for(var g in b)A(b,g)&&(d[g]=b[g]);return d.prototype=b.prototype,b.O=d,d.N=!0,d.P=b,d},uninstall:function(){return g.report.uninstall(),this.Q(),this.R(),this.S(),this.T(),Error.stackTraceLimit=this.p,this.o=!1,this},U:function(a){this.A("debug","Raven caught unhandled promise rejection:",a),this.captureException(a.reason,{extra:{unhandledPromiseRejection:!0}})},C:function(){return this.U=this.U.bind(this),R.addEventListener&&R.addEventListener("unhandledrejection",this.U),this},Q:function(){return R.removeEventListener&&R.removeEventListener("unhandledrejection",this.U),this},captureException:function(a,b){if(b=x({trimHeadFrames:0},b?b:{}),l(a)&&a.error)a=a.error;else{if(m(a)||n(a)){var c=a.name||(m(a)?"DOMError":"DOMException"),d=a.message?c+": "+a.message:c;return this.captureMessage(d,x(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}))}if(o(a))a=a;else{if(!q(a))return this.captureMessage(a,x(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}));b=this.V(b,a),a=new Error(b.message)}}this.e=a;try{var e=g.computeStackTrace(a);this.W(e,b)}catch(f){if(a!==f)throw f}return this},V:function(a,b){var c=Object.keys(b).sort(),d=x(a,{message:"Non-Error exception captured with keys: "+L(c),fingerprint:[i(c)],extra:a.extra||{}});return d.extra.X=M(b),d},captureMessage:function(a,b){if(!this.l.ignoreErrors.test||!this.l.ignoreErrors.test(a)){b=b||{},a+="";var c,d=x({message:a},b);try{throw new Error(a)}catch(e){c=e}c.name=null;var f=g.computeStackTrace(c),h=u(f.stack)&&f.stack[1];h&&"Raven.captureException"===h.func&&(h=f.stack[2]);var i=h&&h.url||"";if((!this.l.ignoreUrls.test||!this.l.ignoreUrls.test(i))&&(!this.l.whitelistUrls.test||this.l.whitelistUrls.test(i))){if(this.l.stacktrace||b&&b.stacktrace){d.fingerprint=null==d.fingerprint?a:d.fingerprint,b=x({trimHeadFrames:0},b),b.trimHeadFrames+=1;var j=this.Y(f,b);d.stacktrace={frames:j.reverse()}}return d.fingerprint&&(d.fingerprint=u(d.fingerprint)?d.fingerprint:[d.fingerprint]),this.Z(d),this}}},captureBreadcrumb:function(a){var b=x({timestamp:d()/1e3},a);if(s(this.l.breadcrumbCallback)){var c=this.l.breadcrumbCallback(b);if(p(c)&&!v(c))b=c;else if(c===!1)return this}return this.v.push(b),this.v.length>this.l.maxBreadcrumbs&&this.v.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.s.push([a,b]),this.o&&this.G(),this},setUserContext:function(a){return this.k.user=a,this},setExtraContext:function(a){return this.$("extra",a),this},setTagsContext:function(a){return this.$("tags",a),this},clearContext:function(){return this.k={},this},getContext:function(){return JSON.parse(h(this.k))},setEnvironment:function(a){return this.l.environment=a,this},setRelease:function(a){return this.l.release=a,this},setDataCallback:function(a){var b=this.l.dataCallback;return this.l.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.l.breadcrumbCallback;return this.l.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.l.shouldSendCallback;return this.l.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.l.transport=a,this},lastException:function(){return this.e},lastEventId:function(){return this.g},isSetup:function(){return!!this.b&&(!!this.h||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.A("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=R.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(S){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.I;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.k.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.K(this.H(c)),h=S.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(S.head||S.body).appendChild(h)}},M:function(){var a=this;this.n+=1,setTimeout(function(){a.n-=1})},_:function(a,b){var c,d;if(this.c){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),S.createEvent?(c=S.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=S.createEventObject(),c.eventType=a);for(d in b)A(b,d)&&(c[d]=b[d]);if(S.createEvent)S.dispatchEvent(c);else try{S.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},aa:function(a){var b=this;return function(c){if(b.ba=null,b.w!==c){b.w=c;var d;try{d=E(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ca:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.ba;g||a.aa("input")(c),clearTimeout(g),a.ba=setTimeout(function(){a.ba=null},b)}}},da:function(a,b){var c=H(this.x.href),d=H(b),e=H(a);this.y=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},D:function(){var a=this;a.ea=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.N?a.ea.apply(this.P,arguments):a.ea.apply(this,arguments)}},R:function(){this.ea&&(Function.prototype.toString=this.ea)},E:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.da(b.y,c+""),a.apply(this,arguments)}};I(R.history,"pushState",j,d),I(R.history,"replaceState",j,d)}if(c.console&&"console"in R&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};w(["debug","info","warn","error","log"],function(a,b){O(console,b,k)})}},S:function(){for(var a;this.u.length;){a=this.u.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},T:function(){for(var a in this.r)this.q[a]=this.r[a]},G:function(){var a=this;w(this.s,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},H:function(a){var b=Q.exec(a),c={},d=7;try{for(;d--;)c[P[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.l.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},K:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},B:function(){this.n||this.W.apply(this,arguments)},W:function(a,b){var c=this.Y(a,b);this._("handle",{stackInfo:a,options:b}),this.ga(a.name,a.message,a.url,a.lineno,c,b)},Y:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(w(a.stack,function(b,e){var f=c.ha(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.v,0)}),this.k.user&&(a.user=this.k.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),a=this.qa(a),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||v(a[b]))&&delete a[b]}),s(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!v(a)&&(!s(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.na()?void this.A("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function F(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&l(b))for(c=b.split(/\s+/),f=0;fc?Q(a,b-1):d}function R(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?X:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function S(a,b){function c(a){return m(a)?a.map(function(a){return c(a)}):k(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!m(b)||m(b)&&0===b.length)return a;var d,e=A(b),f="********";try{d=JSON.parse(T(a))}catch(g){return a}return c(d)}var T=a(11),U="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},V=3,W=51200,X=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isDOMError:g,isDOMException:h,isUndefined:i,isFunction:j,isPlainObject:k,isString:l,isArray:m,isEmptyObject:n,supportsErrorEvent:o,supportsDOMError:p,supportsDOMException:q,supportsFetch:r,supportsReferrerPolicy:s,supportsPromiseRejectionEvent:t,wrappedCallback:u,each:v,objectMerge:w,truncate:y,objectFrozen:x,hasKey:z,joinRegExp:A,urlencode:B,uuid4:D,htmlTreeAsString:E,htmlElementAsString:F,isSameException:I,isSameStacktrace:J,parseUrl:C,fill:K,safeJoin:L,serializeException:Q,serializeKeysForMessage:R,sanitize:S}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{11:11}],10:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}function e(){return"undefined"==typeof document||null==document.location?"":(document.location.origin||(document.location.origin=document.location.protocol+"//"+document.location.hostname+(document.location.port?":"+document.location.port:"")),document.location.origin)}var f=a(9),g={collectWindowErrors:!0,debug:!1},h="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},i=[].slice,j="?",k=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;g.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function e(a,b){var c=null;if(!b||g.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(i.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,h,i){var l=null,m=f.isErrorEvent(i)?i.error:i,n=f.isErrorEvent(a)?a.message:a;if(v)g.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&f.isError(m))l=g.computeStackTrace(m),e(l,!0);else{var p,r={url:b,line:c,column:h},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(k);p&&(s=p[1],n=p[2])}r.func=j,l={name:s,message:n,url:d(),stack:[r]},e(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=h.onerror,h.onerror=l,r=!0)}function n(){r&&(h.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,e.apply(null,[a,!1].concat(b))}function p(a,b){var c=i.call(arguments,1);if(v){if(u===a)return;o()}var d=g.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),g.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,f,g=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,h=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,i=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,k=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,l=/\((\S*)(?::(\d+))(?::(\d+))\)/,m=a.stack.split("\n"),n=[],o=(/^(.*) is undefined$/.exec(a.message),0),p=m.length;o eval")>-1;r&&(b=k.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==o||c[5]||"undefined"==typeof a.columnNumber||(n[0].column=a.columnNumber+1),f={url:c[3],func:c[1]||j,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}if(!f.func&&f.line&&(f.func=j),f.url&&"blob:"===f.url.substr(0,5)){var s=new XMLHttpRequest;if(s.open("GET",f.url,!1),s.send(null),200===s.status){var t=s.responseText||"";t=t.slice(-300);var u=t.match(/\/\/# sourceMappingURL=(.*)$/);if(u){var v=u[1];"~"===v.charAt(0)&&(v=e()+v.slice(1)),f.url=v.slice(0,-4)}}}n.push(f)}return n.length?{name:a.name,message:a.message,url:d(),stack:n}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=j),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,e){for(var h,i,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==f&&o!==g.report){if(i={url:null,func:j,line:null,column:null},o.name?i.func=o.name:(h=k.exec(o.toString()))&&(i.func=h[1]),"undefined"==typeof i.func)try{i.func=h.input.substring(0,h.input.indexOf("{"))}catch(p){}m[""+o]?n=!0:m[""+o]=!0,l.push(i)}e&&l.splice(0,e);var q={name:a.name,message:a.message,url:d(),stack:l};return b(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),q}function f(b,e){var f=null;e=null==e?0:+e;try{if(f=a(b))return f}catch(h){if(g.debug)throw h}try{if(f=c(b,e+1))return f}catch(h){if(g.debug)throw h}return{name:b.name,message:b.message,url:d()}}return f.augmentStackTraceWithInitialElement=b,f.computeStackTraceFromStackProp=a,f}(),b.exports=g}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{9:9}],11:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}],12:[function(a,b,c){function d(a,b){var c=(65535&a)+(65535&b),d=(a>>16)+(b>>16)+(c>>16);return d<<16|65535&c}function e(a,b){return a<>>32-b}function f(a,b,c,f,g,h){return d(e(d(d(b,a),d(f,h)),g),c)}function g(a,b,c,d,e,g,h){return f(b&c|~b&d,a,b,e,g,h)}function h(a,b,c,d,e,g,h){return f(b&d|c&~d,a,b,e,g,h)}function i(a,b,c,d,e,g,h){return f(b^c^d,a,b,e,g,h)}function j(a,b,c,d,e,g,h){return f(c^(b|~d),a,b,e,g,h)}function k(a,b){a[b>>5]|=128<>>9<<4)+14]=b;var c,e,f,k,l,m=1732584193,n=-271733879,o=-1732584194,p=271733878;for(c=0;c>5]>>>b%32&255);return c}function m(a){var b,c=[];for(c[(a.length>>2)-1]=void 0,b=0;b>5]|=(255&a.charCodeAt(b/8))<16&&(e=k(e,8*a.length)),c=0;c<16;c+=1)f[c]=909522486^e[c],g[c]=1549556828^e[c];return d=k(f.concat(m(b)),512+8*b.length),l(k(g.concat(d),640))}function p(a){var b,c,d="0123456789abcdef",e="";for(c=0;c>>4&15)+d.charAt(15&b);return e}function q(a){return unescape(encodeURIComponent(a))}function r(a){return n(q(a))}function s(a){return p(r(a))}function t(a,b){return o(q(a),q(b))}function u(a,b){return p(t(a,b))}function v(a,b,c){return b?c?t(b,a):u(b,a):c?r(a):s(a)}b.exports=v},{}]},{},[8,1,2,3,4])(8)}); //# sourceMappingURL=raven.min.js.map \ No newline at end of file diff --git a/dist/angular,ember,require,vue/raven.min.js.map b/dist/angular,ember,require,vue/raven.min.js.map index 106900dd392d..4d2c2f314cba 100644 --- a/dist/angular,ember,require,vue/raven.min.js.map +++ b/dist/angular,ember,require,vue/raven.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","angularPlugin","angular","RavenProvider","$get","$window","ExceptionHandlerProvider","$provide","decorator","exceptionHandler","R","$delegate","ex","cause","captureException","extra","moduleName","provider","config","setDataCallback","wrappedCallback","data","_normalizeData","angularPattern","exception","values","matches","exec","value","type","message","angularDocs","substr","addPlugin","8","9","2","emberPlugin","Ember","_oldOnError","onerror","error","RSVP","on","reason","context","captureMessage","3","requirePlugin","wrap","deep","4","formatComponentName","vm","$root","name","_isVue","$options","_componentTag","__file","vuePlugin","Vue","errorHandler","info","metaData","Object","prototype","toString","componentName","propsData","lifecycleHook","5","RavenConfigError","constructor","6","utils","wrapMethod","console","level","callback","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","msg","safeJoin","logger","Function","apply","7","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","sanitizeKeys","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isErrorEvent","isDOMError","isDOMException","isError","isObject","isPlainObject","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","sanitize","wrapConsoleMethod","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","dsn","options","_logDebug","globalOptions","key","setDSN","push","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","func","undefined","_before","wrapped","_ignoreNextOnError","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","U","event","unhandledPromiseRejection","C","_promiseRejectionHandler","bind","addEventListener","Q","removeEventListener","trimHeadFrames","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","V","currentOptions","exKeys","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","M","setTimeout","_","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","aa","evtName","_keypressTimeout","target","category","ca","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","da","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","D","_originalFunctionToString","E","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","F","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","S","builtin","T","G","installer","concat","H","str","m","allowSecretKey","K","port","B","W","stackInfo","_triggerEvent","_processException","lineno","Y","frame","_normalizeFrame","in_app","ha","stackInfoUrl","normalized","filename","line","colno","column","function","ga","prefixedMessage","culprit","ia","request","Referer","breadcrumbs","_trimBreadcrumbs","ja","urlProp","urlProps","ka","httpData","userAgent","User-Agent","referrer","z","_backoffDuration","_backoffStart","na","oa","current","last","pa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Z","baseData","project","platform","_getHttpData","serverName","server_name","_sanitizeData","forEach","random","_sendProcessedPayload","qa","sa","ra","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","ta","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","open","setRequestHeader","send","ua","hash","evaluated","A","$","setUser","setReleaseContext","10","11","12","RavenConstructor","_Raven","noConflict","Client","what","supportsErrorEvent","ErrorEvent","supportsDOMError","DOMError","supportsDOMException","DOMException","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","sanitizeMask","safeInput","o_O","getLocationHref","getLocationOrigin","origin","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","responseText","sourceMaps","sourceMapAddress","charAt","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","y","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","string","raw"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file +{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","angularPlugin","angular","RavenProvider","$get","$window","ExceptionHandlerProvider","$provide","decorator","exceptionHandler","R","$delegate","ex","cause","captureException","extra","moduleName","provider","config","setDataCallback","wrappedCallback","data","_normalizeData","angularPattern","exception","values","matches","exec","value","type","message","angularDocs","substr","addPlugin","8","9","2","emberPlugin","Ember","_oldOnError","onerror","error","RSVP","on","reason","context","captureMessage","3","requirePlugin","wrap","deep","4","formatComponentName","vm","$root","name","_isVue","$options","_componentTag","__file","vuePlugin","Vue","errorHandler","info","metaData","Object","prototype","toString","componentName","propsData","lifecycleHook","5","RavenConfigError","constructor","6","utils","wrapMethod","console","level","callback","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","msg","safeJoin","logger","Function","apply","7","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","sanitizeKeys","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isErrorEvent","isDOMError","isDOMException","isError","isObject","isPlainObject","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","sanitize","wrapConsoleMethod","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","dsn","options","_logDebug","globalOptions","key","setDSN","push","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","func","undefined","_before","wrapped","_ignoreNextOnError","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","U","event","unhandledPromiseRejection","C","_promiseRejectionHandler","bind","addEventListener","Q","removeEventListener","trimHeadFrames","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","V","currentOptions","exKeys","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","M","setTimeout","_","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","aa","evtName","_keypressTimeout","target","category","ca","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","da","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","D","_originalFunctionToString","E","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","F","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","S","builtin","T","G","installer","concat","H","str","m","allowSecretKey","K","port","B","W","stackInfo","_triggerEvent","_processException","lineno","Y","frame","_normalizeFrame","in_app","ha","stackInfoUrl","normalized","filename","line","colno","column","function","ga","prefixedMessage","culprit","ia","request","Referer","breadcrumbs","_trimBreadcrumbs","ja","urlProp","urlProps","ka","httpData","userAgent","User-Agent","referrer","z","_backoffDuration","_backoffStart","na","oa","current","last","pa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Z","baseData","project","platform","_getHttpData","serverName","server_name","_sanitizeData","forEach","random","_sendProcessedPayload","qa","sa","ra","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","ta","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","open","setRequestHeader","send","ua","hash","evaluated","A","$","setUser","setReleaseContext","10","11","12","RavenConstructor","_Raven","noConflict","Client","what","supportsErrorEvent","ErrorEvent","supportsDOMError","DOMError","supportsDOMException","DOMException","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","sanitizeMask","safeInput","o_O","getLocationHref","getLocationOrigin","origin","hostname","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","responseText","sourceMaps","sourceMapAddress","charAt","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","y","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","string","raw"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file diff --git a/dist/angular,ember,require/raven.js b/dist/angular,ember,require/raven.js index cf3f66b0541e..4acf48bb5c3a 100644 --- a/dist/angular,ember,require/raven.js +++ b/dist/angular,ember,require/raven.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.25.0 (80dffad) | github.com/getsentry/raven-js */ +/*! Raven.js 3.25.1 (b6f3c7a) | github.com/getsentry/raven-js */ /* * Includes TraceKit @@ -334,7 +334,7 @@ Raven.prototype = { // webpack (using a build step causes webpack #1617). Grunt verifies that // this value matches package.json during build. // See: https://github.com/getsentry/raven-js/issues/465 - VERSION: '3.25.0', + VERSION: '3.25.1', debug: false, @@ -1643,8 +1643,8 @@ Raven.prototype = { var hasPushAndReplaceState = !isChromePackagedApp && _window.history && - history.pushState && - history.replaceState; + _window.history.pushState && + _window.history.replaceState; if (autoBreadcrumbs.location && hasPushAndReplaceState) { // TODO: remove onpopstate handler on uninstall() var oldOnPopState = _window.onpopstate; @@ -1673,8 +1673,8 @@ Raven.prototype = { }; }; - fill(history, 'pushState', historyReplacementFunction, wrappedBuiltIns); - fill(history, 'replaceState', historyReplacementFunction, wrappedBuiltIns); + fill(_window.history, 'pushState', historyReplacementFunction, wrappedBuiltIns); + fill(_window.history, 'replaceState', historyReplacementFunction, wrappedBuiltIns); } if (autoBreadcrumbs.console && 'console' in _window && console.log) { @@ -1964,7 +1964,7 @@ Raven.prototype = { if (this._hasNavigator && _navigator.userAgent) { httpData.headers = { - 'User-Agent': navigator.userAgent + 'User-Agent': _navigator.userAgent }; } @@ -3139,6 +3139,16 @@ function getLocationHref() { function getLocationOrigin() { if (typeof document === 'undefined' || document.location == null) return ''; + + // Oh dear IE10... + if (!document.location.origin) { + document.location.origin = + document.location.protocol + + '//' + + document.location.hostname + + (document.location.port ? ':' + document.location.port : ''); + } + return document.location.origin; } diff --git a/dist/angular,ember,require/raven.min.js b/dist/angular,ember,require/raven.min.js index efebe21e6df2..84a691b4bcfc 100644 --- a/dist/angular,ember,require/raven.min.js +++ b/dist/angular,ember,require/raven.min.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.25.0 (80dffad) | github.com/getsentry/raven-js */ -!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.Raven=a()}}(function(){var a;return function b(a,c,d){function e(g,h){if(!c[g]){if(!a[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};a[g][0].call(k.exports,function(b){var c=a[g][1][b];return e(c?c:b)},k,k.exports,b,a,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;gthis.l.maxBreadcrumbs&&this.v.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.s.push([a,b]),this.o&&this.G(),this},setUserContext:function(a){return this.k.user=a,this},setExtraContext:function(a){return this.$("extra",a),this},setTagsContext:function(a){return this.$("tags",a),this},clearContext:function(){return this.k={},this},getContext:function(){return JSON.parse(h(this.k))},setEnvironment:function(a){return this.l.environment=a,this},setRelease:function(a){return this.l.release=a,this},setDataCallback:function(a){var b=this.l.dataCallback;return this.l.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.l.breadcrumbCallback;return this.l.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.l.shouldSendCallback;return this.l.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.l.transport=a,this},lastException:function(){return this.e},lastEventId:function(){return this.g},isSetup:function(){return!!this.b&&(!!this.h||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.A("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=R.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(S){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.I;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.k.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.K(this.H(c)),h=S.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(S.head||S.body).appendChild(h)}},M:function(){var a=this;this.n+=1,setTimeout(function(){a.n-=1})},_:function(a,b){var c,d;if(this.c){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),S.createEvent?(c=S.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=S.createEventObject(),c.eventType=a);for(d in b)A(b,d)&&(c[d]=b[d]);if(S.createEvent)S.dispatchEvent(c);else try{S.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},aa:function(a){var b=this;return function(c){if(b.ba=null,b.w!==c){b.w=c;var d;try{d=E(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ca:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.ba;g||a.aa("input")(c),clearTimeout(g),a.ba=setTimeout(function(){a.ba=null},b)}}},da:function(a,b){var c=H(this.x.href),d=H(b),e=H(a);this.y=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},D:function(){var a=this;a.ea=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.N?a.ea.apply(this.P,arguments):a.ea.apply(this,arguments)}},R:function(){this.ea&&(Function.prototype.toString=this.ea)},E:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.da(b.y,c+""),a.apply(this,arguments)}};I(history,"pushState",j,d),I(history,"replaceState",j,d)}if(c.console&&"console"in R&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};w(["debug","info","warn","error","log"],function(a,b){O(console,b,k)})}},S:function(){for(var a;this.u.length;){a=this.u.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},T:function(){for(var a in this.r)this.q[a]=this.r[a]},G:function(){var a=this;w(this.s,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},H:function(a){var b=Q.exec(a),c={},d=7;try{for(;d--;)c[P[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.l.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},K:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},B:function(){this.n||this.W.apply(this,arguments)},W:function(a,b){var c=this.Y(a,b);this._("handle",{stackInfo:a,options:b}),this.ga(a.name,a.message,a.url,a.lineno,c,b)},Y:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(w(a.stack,function(b,e){var f=c.ha(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.v,0)}),this.k.user&&(a.user=this.k.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),a=this.qa(a),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||v(a[b]))&&delete a[b]}),s(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!v(a)&&(!s(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.na()?void this.A("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function F(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&l(b))for(c=b.split(/\s+/),f=0;fc?Q(a,b-1):d}function R(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?X:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function S(a,b){function c(a){return m(a)?a.map(function(a){return c(a)}):k(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!m(b)||m(b)&&0===b.length)return a;var d,e=A(b),f="********";try{d=JSON.parse(T(a))}catch(g){return a}return c(d)}var T=a(10),U="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},V=3,W=51200,X=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isDOMError:g,isDOMException:h,isUndefined:i,isFunction:j,isPlainObject:k,isString:l,isArray:m,isEmptyObject:n,supportsErrorEvent:o,supportsDOMError:p,supportsDOMException:q,supportsFetch:r,supportsReferrerPolicy:s,supportsPromiseRejectionEvent:t,wrappedCallback:u,each:v,objectMerge:w,truncate:y,objectFrozen:x,hasKey:z,joinRegExp:A,urlencode:B,uuid4:D,htmlTreeAsString:E,htmlElementAsString:F,isSameException:I,isSameStacktrace:J,parseUrl:C,fill:K,safeJoin:L,serializeException:Q,serializeKeysForMessage:R,sanitize:S}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{10:10}],9:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}function e(){return"undefined"==typeof document||null==document.location?"":document.location.origin}var f=a(8),g={collectWindowErrors:!0,debug:!1},h="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},i=[].slice,j="?",k=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;g.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function e(a,b){var c=null;if(!b||g.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(i.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,h,i){var l=null,m=f.isErrorEvent(i)?i.error:i,n=f.isErrorEvent(a)?a.message:a;if(v)g.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&f.isError(m))l=g.computeStackTrace(m),e(l,!0);else{var p,r={url:b,line:c,column:h},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(k);p&&(s=p[1],n=p[2])}r.func=j,l={name:s,message:n,url:d(),stack:[r]},e(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=h.onerror,h.onerror=l,r=!0)}function n(){r&&(h.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,e.apply(null,[a,!1].concat(b))}function p(a,b){var c=i.call(arguments,1);if(v){if(u===a)return;o()}var d=g.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),g.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,f,g=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,h=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,i=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,k=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,l=/\((\S*)(?::(\d+))(?::(\d+))\)/,m=a.stack.split("\n"),n=[],o=(/^(.*) is undefined$/.exec(a.message),0),p=m.length;o eval")>-1;r&&(b=k.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==o||c[5]||"undefined"==typeof a.columnNumber||(n[0].column=a.columnNumber+1),f={url:c[3],func:c[1]||j,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}if(!f.func&&f.line&&(f.func=j),f.url&&"blob:"===f.url.substr(0,5)){var s=new XMLHttpRequest;if(s.open("GET",f.url,!1),s.send(null),200===s.status){var t=s.responseText||"";t=t.slice(-300);var u=t.match(/\/\/# sourceMappingURL=(.*)$/);if(u){var v=u[1];"~"===v.charAt(0)&&(v=e()+v.slice(1)),f.url=v.slice(0,-4)}}}n.push(f)}return n.length?{name:a.name,message:a.message,url:d(),stack:n}:null}}function b(a,b,c,d){var e={url:b,line:c -};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=j),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,e){for(var h,i,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==f&&o!==g.report){if(i={url:null,func:j,line:null,column:null},o.name?i.func=o.name:(h=k.exec(o.toString()))&&(i.func=h[1]),"undefined"==typeof i.func)try{i.func=h.input.substring(0,h.input.indexOf("{"))}catch(p){}m[""+o]?n=!0:m[""+o]=!0,l.push(i)}e&&l.splice(0,e);var q={name:a.name,message:a.message,url:d(),stack:l};return b(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),q}function f(b,e){var f=null;e=null==e?0:+e;try{if(f=a(b))return f}catch(h){if(g.debug)throw h}try{if(f=c(b,e+1))return f}catch(h){if(g.debug)throw h}return{name:b.name,message:b.message,url:d()}}return f.augmentStackTraceWithInitialElement=b,f.computeStackTraceFromStackProp=a,f}(),b.exports=g}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{8:8}],10:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}],11:[function(a,b,c){function d(a,b){var c=(65535&a)+(65535&b),d=(a>>16)+(b>>16)+(c>>16);return d<<16|65535&c}function e(a,b){return a<>>32-b}function f(a,b,c,f,g,h){return d(e(d(d(b,a),d(f,h)),g),c)}function g(a,b,c,d,e,g,h){return f(b&c|~b&d,a,b,e,g,h)}function h(a,b,c,d,e,g,h){return f(b&d|c&~d,a,b,e,g,h)}function i(a,b,c,d,e,g,h){return f(b^c^d,a,b,e,g,h)}function j(a,b,c,d,e,g,h){return f(c^(b|~d),a,b,e,g,h)}function k(a,b){a[b>>5]|=128<>>9<<4)+14]=b;var c,e,f,k,l,m=1732584193,n=-271733879,o=-1732584194,p=271733878;for(c=0;c>5]>>>b%32&255);return c}function m(a){var b,c=[];for(c[(a.length>>2)-1]=void 0,b=0;b>5]|=(255&a.charCodeAt(b/8))<16&&(e=k(e,8*a.length)),c=0;c<16;c+=1)f[c]=909522486^e[c],g[c]=1549556828^e[c];return d=k(f.concat(m(b)),512+8*b.length),l(k(g.concat(d),640))}function p(a){var b,c,d="0123456789abcdef",e="";for(c=0;c>>4&15)+d.charAt(15&b);return e}function q(a){return unescape(encodeURIComponent(a))}function r(a){return n(q(a))}function s(a){return p(r(a))}function t(a,b){return o(q(a),q(b))}function u(a,b){return p(t(a,b))}function v(a,b,c){return b?c?t(b,a):u(b,a):c?r(a):s(a)}b.exports=v},{}]},{},[7,1,2,3])(7)}); +/*! Raven.js 3.25.1 (b6f3c7a) | github.com/getsentry/raven-js */ +!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.Raven=a()}}(function(){var a;return function b(a,c,d){function e(g,h){if(!c[g]){if(!a[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};a[g][0].call(k.exports,function(b){var c=a[g][1][b];return e(c?c:b)},k,k.exports,b,a,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;gthis.l.maxBreadcrumbs&&this.v.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.s.push([a,b]),this.o&&this.G(),this},setUserContext:function(a){return this.k.user=a,this},setExtraContext:function(a){return this.$("extra",a),this},setTagsContext:function(a){return this.$("tags",a),this},clearContext:function(){return this.k={},this},getContext:function(){return JSON.parse(h(this.k))},setEnvironment:function(a){return this.l.environment=a,this},setRelease:function(a){return this.l.release=a,this},setDataCallback:function(a){var b=this.l.dataCallback;return this.l.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.l.breadcrumbCallback;return this.l.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.l.shouldSendCallback;return this.l.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.l.transport=a,this},lastException:function(){return this.e},lastEventId:function(){return this.g},isSetup:function(){return!!this.b&&(!!this.h||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.A("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=R.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(S){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.I;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.k.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.K(this.H(c)),h=S.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(S.head||S.body).appendChild(h)}},M:function(){var a=this;this.n+=1,setTimeout(function(){a.n-=1})},_:function(a,b){var c,d;if(this.c){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),S.createEvent?(c=S.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=S.createEventObject(),c.eventType=a);for(d in b)A(b,d)&&(c[d]=b[d]);if(S.createEvent)S.dispatchEvent(c);else try{S.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},aa:function(a){var b=this;return function(c){if(b.ba=null,b.w!==c){b.w=c;var d;try{d=E(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ca:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.ba;g||a.aa("input")(c),clearTimeout(g),a.ba=setTimeout(function(){a.ba=null},b)}}},da:function(a,b){var c=H(this.x.href),d=H(b),e=H(a);this.y=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},D:function(){var a=this;a.ea=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.N?a.ea.apply(this.P,arguments):a.ea.apply(this,arguments)}},R:function(){this.ea&&(Function.prototype.toString=this.ea)},E:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.da(b.y,c+""),a.apply(this,arguments)}};I(R.history,"pushState",j,d),I(R.history,"replaceState",j,d)}if(c.console&&"console"in R&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};w(["debug","info","warn","error","log"],function(a,b){O(console,b,k)})}},S:function(){for(var a;this.u.length;){a=this.u.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},T:function(){for(var a in this.r)this.q[a]=this.r[a]},G:function(){var a=this;w(this.s,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},H:function(a){var b=Q.exec(a),c={},d=7;try{for(;d--;)c[P[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.l.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},K:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},B:function(){this.n||this.W.apply(this,arguments)},W:function(a,b){var c=this.Y(a,b);this._("handle",{stackInfo:a,options:b}),this.ga(a.name,a.message,a.url,a.lineno,c,b)},Y:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(w(a.stack,function(b,e){var f=c.ha(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.v,0)}),this.k.user&&(a.user=this.k.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),a=this.qa(a),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||v(a[b]))&&delete a[b]}),s(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!v(a)&&(!s(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.na()?void this.A("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function F(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&l(b))for(c=b.split(/\s+/),f=0;fc?Q(a,b-1):d}function R(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?X:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function S(a,b){function c(a){return m(a)?a.map(function(a){return c(a)}):k(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!m(b)||m(b)&&0===b.length)return a;var d,e=A(b),f="********";try{d=JSON.parse(T(a))}catch(g){return a}return c(d)}var T=a(10),U="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},V=3,W=51200,X=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isDOMError:g,isDOMException:h,isUndefined:i,isFunction:j,isPlainObject:k,isString:l,isArray:m,isEmptyObject:n,supportsErrorEvent:o,supportsDOMError:p,supportsDOMException:q,supportsFetch:r,supportsReferrerPolicy:s,supportsPromiseRejectionEvent:t,wrappedCallback:u,each:v,objectMerge:w,truncate:y,objectFrozen:x,hasKey:z,joinRegExp:A,urlencode:B,uuid4:D,htmlTreeAsString:E,htmlElementAsString:F,isSameException:I,isSameStacktrace:J,parseUrl:C,fill:K,safeJoin:L,serializeException:Q,serializeKeysForMessage:R,sanitize:S}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{10:10}],9:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}function e(){return"undefined"==typeof document||null==document.location?"":(document.location.origin||(document.location.origin=document.location.protocol+"//"+document.location.hostname+(document.location.port?":"+document.location.port:"")),document.location.origin)}var f=a(8),g={collectWindowErrors:!0,debug:!1},h="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},i=[].slice,j="?",k=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;g.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function e(a,b){var c=null;if(!b||g.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(i.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,h,i){var l=null,m=f.isErrorEvent(i)?i.error:i,n=f.isErrorEvent(a)?a.message:a;if(v)g.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&f.isError(m))l=g.computeStackTrace(m),e(l,!0);else{var p,r={url:b,line:c,column:h},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(k);p&&(s=p[1],n=p[2])}r.func=j,l={name:s,message:n,url:d(),stack:[r]},e(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=h.onerror,h.onerror=l,r=!0)}function n(){r&&(h.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,e.apply(null,[a,!1].concat(b))}function p(a,b){var c=i.call(arguments,1);if(v){if(u===a)return;o()}var d=g.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),g.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,f,g=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,h=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,i=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,k=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,l=/\((\S*)(?::(\d+))(?::(\d+))\)/,m=a.stack.split("\n"),n=[],o=(/^(.*) is undefined$/.exec(a.message),0),p=m.length;o eval")>-1;r&&(b=k.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==o||c[5]||"undefined"==typeof a.columnNumber||(n[0].column=a.columnNumber+1),f={url:c[3],func:c[1]||j,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}if(!f.func&&f.line&&(f.func=j),f.url&&"blob:"===f.url.substr(0,5)){var s=new XMLHttpRequest;if(s.open("GET",f.url,!1),s.send(null),200===s.status){var t=s.responseText||"";t=t.slice(-300);var u=t.match(/\/\/# sourceMappingURL=(.*)$/);if(u){var v=u[1];"~"===v.charAt(0)&&(v=e()+v.slice(1)), +f.url=v.slice(0,-4)}}}n.push(f)}return n.length?{name:a.name,message:a.message,url:d(),stack:n}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=j),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,e){for(var h,i,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==f&&o!==g.report){if(i={url:null,func:j,line:null,column:null},o.name?i.func=o.name:(h=k.exec(o.toString()))&&(i.func=h[1]),"undefined"==typeof i.func)try{i.func=h.input.substring(0,h.input.indexOf("{"))}catch(p){}m[""+o]?n=!0:m[""+o]=!0,l.push(i)}e&&l.splice(0,e);var q={name:a.name,message:a.message,url:d(),stack:l};return b(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),q}function f(b,e){var f=null;e=null==e?0:+e;try{if(f=a(b))return f}catch(h){if(g.debug)throw h}try{if(f=c(b,e+1))return f}catch(h){if(g.debug)throw h}return{name:b.name,message:b.message,url:d()}}return f.augmentStackTraceWithInitialElement=b,f.computeStackTraceFromStackProp=a,f}(),b.exports=g}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{8:8}],10:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}],11:[function(a,b,c){function d(a,b){var c=(65535&a)+(65535&b),d=(a>>16)+(b>>16)+(c>>16);return d<<16|65535&c}function e(a,b){return a<>>32-b}function f(a,b,c,f,g,h){return d(e(d(d(b,a),d(f,h)),g),c)}function g(a,b,c,d,e,g,h){return f(b&c|~b&d,a,b,e,g,h)}function h(a,b,c,d,e,g,h){return f(b&d|c&~d,a,b,e,g,h)}function i(a,b,c,d,e,g,h){return f(b^c^d,a,b,e,g,h)}function j(a,b,c,d,e,g,h){return f(c^(b|~d),a,b,e,g,h)}function k(a,b){a[b>>5]|=128<>>9<<4)+14]=b;var c,e,f,k,l,m=1732584193,n=-271733879,o=-1732584194,p=271733878;for(c=0;c>5]>>>b%32&255);return c}function m(a){var b,c=[];for(c[(a.length>>2)-1]=void 0,b=0;b>5]|=(255&a.charCodeAt(b/8))<16&&(e=k(e,8*a.length)),c=0;c<16;c+=1)f[c]=909522486^e[c],g[c]=1549556828^e[c];return d=k(f.concat(m(b)),512+8*b.length),l(k(g.concat(d),640))}function p(a){var b,c,d="0123456789abcdef",e="";for(c=0;c>>4&15)+d.charAt(15&b);return e}function q(a){return unescape(encodeURIComponent(a))}function r(a){return n(q(a))}function s(a){return p(r(a))}function t(a,b){return o(q(a),q(b))}function u(a,b){return p(t(a,b))}function v(a,b,c){return b?c?t(b,a):u(b,a):c?r(a):s(a)}b.exports=v},{}]},{},[7,1,2,3])(7)}); //# sourceMappingURL=raven.min.js.map \ No newline at end of file diff --git a/dist/angular,ember,require/raven.min.js.map b/dist/angular,ember,require/raven.min.js.map index da29485532a2..6eabbf5fef0a 100644 --- a/dist/angular,ember,require/raven.min.js.map +++ b/dist/angular,ember,require/raven.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","angularPlugin","angular","RavenProvider","$get","$window","ExceptionHandlerProvider","$provide","decorator","exceptionHandler","R","$delegate","ex","cause","captureException","extra","moduleName","provider","config","setDataCallback","wrappedCallback","data","_normalizeData","angularPattern","exception","values","matches","exec","value","type","message","angularDocs","substr","addPlugin","7","8","2","emberPlugin","Ember","_oldOnError","onerror","error","RSVP","on","reason","context","captureMessage","3","requirePlugin","wrap","deep","4","RavenConfigError","name","prototype","constructor","5","utils","wrapMethod","console","level","callback","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","msg","safeJoin","logger","Function","apply","6","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","sanitizeKeys","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isErrorEvent","isDOMError","isDOMException","isError","isObject","isPlainObject","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","sanitize","wrapConsoleMethod","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","dsn","options","_logDebug","globalOptions","key","setDSN","push","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","toString","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","func","undefined","_before","wrapped","_ignoreNextOnError","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","U","event","unhandledPromiseRejection","C","_promiseRejectionHandler","bind","addEventListener","Q","removeEventListener","trimHeadFrames","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","V","currentOptions","exKeys","Object","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","M","setTimeout","_","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","aa","evtName","_keypressTimeout","target","category","ca","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","da","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","D","_originalFunctionToString","E","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","F","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","S","builtin","T","G","installer","concat","H","str","m","allowSecretKey","K","port","B","W","stackInfo","_triggerEvent","_processException","lineno","Y","frame","_normalizeFrame","in_app","ha","stackInfoUrl","normalized","filename","line","colno","column","function","ga","prefixedMessage","culprit","ia","request","Referer","breadcrumbs","_trimBreadcrumbs","ja","urlProp","urlProps","ka","httpData","userAgent","User-Agent","referrer","z","_backoffDuration","_backoffStart","na","oa","current","last","pa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Z","baseData","project","platform","_getHttpData","serverName","server_name","_sanitizeData","forEach","random","_sendProcessedPayload","qa","sa","ra","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","ta","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","open","setRequestHeader","send","ua","hash","evaluated","A","$","setUser","setReleaseContext","10","11","9","RavenConstructor","_Raven","noConflict","Client","what","supportsErrorEvent","ErrorEvent","supportsDOMError","DOMError","supportsDOMException","DOMException","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","sanitizeMask","safeInput","o_O","getLocationHref","getLocationOrigin","origin","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","responseText","sourceMaps","sourceMapAddress","charAt","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","y","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","string","raw"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file +{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","angularPlugin","angular","RavenProvider","$get","$window","ExceptionHandlerProvider","$provide","decorator","exceptionHandler","R","$delegate","ex","cause","captureException","extra","moduleName","provider","config","setDataCallback","wrappedCallback","data","_normalizeData","angularPattern","exception","values","matches","exec","value","type","message","angularDocs","substr","addPlugin","7","8","2","emberPlugin","Ember","_oldOnError","onerror","error","RSVP","on","reason","context","captureMessage","3","requirePlugin","wrap","deep","4","RavenConfigError","name","prototype","constructor","5","utils","wrapMethod","console","level","callback","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","msg","safeJoin","logger","Function","apply","6","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","sanitizeKeys","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isErrorEvent","isDOMError","isDOMException","isError","isObject","isPlainObject","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","sanitize","wrapConsoleMethod","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","dsn","options","_logDebug","globalOptions","key","setDSN","push","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","toString","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","func","undefined","_before","wrapped","_ignoreNextOnError","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","U","event","unhandledPromiseRejection","C","_promiseRejectionHandler","bind","addEventListener","Q","removeEventListener","trimHeadFrames","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","V","currentOptions","exKeys","Object","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","M","setTimeout","_","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","aa","evtName","_keypressTimeout","target","category","ca","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","da","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","D","_originalFunctionToString","E","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","F","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","S","builtin","T","G","installer","concat","H","str","m","allowSecretKey","K","port","B","W","stackInfo","_triggerEvent","_processException","lineno","Y","frame","_normalizeFrame","in_app","ha","stackInfoUrl","normalized","filename","line","colno","column","function","ga","prefixedMessage","culprit","ia","request","Referer","breadcrumbs","_trimBreadcrumbs","ja","urlProp","urlProps","ka","httpData","userAgent","User-Agent","referrer","z","_backoffDuration","_backoffStart","na","oa","current","last","pa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Z","baseData","project","platform","_getHttpData","serverName","server_name","_sanitizeData","forEach","random","_sendProcessedPayload","qa","sa","ra","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","ta","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","open","setRequestHeader","send","ua","hash","evaluated","A","$","setUser","setReleaseContext","10","11","9","RavenConstructor","_Raven","noConflict","Client","what","supportsErrorEvent","ErrorEvent","supportsDOMError","DOMError","supportsDOMException","DOMException","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","sanitizeMask","safeInput","o_O","getLocationHref","getLocationOrigin","origin","hostname","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","responseText","sourceMaps","sourceMapAddress","charAt","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","y","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","string","raw"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file diff --git a/dist/angular,ember,vue/raven.js b/dist/angular,ember,vue/raven.js index f9ba45cfa0ec..f243e0a7da2d 100644 --- a/dist/angular,ember,vue/raven.js +++ b/dist/angular,ember,vue/raven.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.25.0 (80dffad) | github.com/getsentry/raven-js */ +/*! Raven.js 3.25.1 (b6f3c7a) | github.com/getsentry/raven-js */ /* * Includes TraceKit @@ -367,7 +367,7 @@ Raven.prototype = { // webpack (using a build step causes webpack #1617). Grunt verifies that // this value matches package.json during build. // See: https://github.com/getsentry/raven-js/issues/465 - VERSION: '3.25.0', + VERSION: '3.25.1', debug: false, @@ -1676,8 +1676,8 @@ Raven.prototype = { var hasPushAndReplaceState = !isChromePackagedApp && _window.history && - history.pushState && - history.replaceState; + _window.history.pushState && + _window.history.replaceState; if (autoBreadcrumbs.location && hasPushAndReplaceState) { // TODO: remove onpopstate handler on uninstall() var oldOnPopState = _window.onpopstate; @@ -1706,8 +1706,8 @@ Raven.prototype = { }; }; - fill(history, 'pushState', historyReplacementFunction, wrappedBuiltIns); - fill(history, 'replaceState', historyReplacementFunction, wrappedBuiltIns); + fill(_window.history, 'pushState', historyReplacementFunction, wrappedBuiltIns); + fill(_window.history, 'replaceState', historyReplacementFunction, wrappedBuiltIns); } if (autoBreadcrumbs.console && 'console' in _window && console.log) { @@ -1997,7 +1997,7 @@ Raven.prototype = { if (this._hasNavigator && _navigator.userAgent) { httpData.headers = { - 'User-Agent': navigator.userAgent + 'User-Agent': _navigator.userAgent }; } @@ -3172,6 +3172,16 @@ function getLocationHref() { function getLocationOrigin() { if (typeof document === 'undefined' || document.location == null) return ''; + + // Oh dear IE10... + if (!document.location.origin) { + document.location.origin = + document.location.protocol + + '//' + + document.location.hostname + + (document.location.port ? ':' + document.location.port : ''); + } + return document.location.origin; } diff --git a/dist/angular,ember,vue/raven.min.js b/dist/angular,ember,vue/raven.min.js index 9d7fe5536c97..32a9ffe8121b 100644 --- a/dist/angular,ember,vue/raven.min.js +++ b/dist/angular,ember,vue/raven.min.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.25.0 (80dffad) | github.com/getsentry/raven-js */ -!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.Raven=a()}}(function(){return function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};b[g][0].call(k.exports,function(a){var c=b[g][1][a];return e(c?c:a)},k,k.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;g":"anonymous component")+(a._isVue&&a.$options.__file?" at "+a.$options.__file:"")}function e(a,b){if(b=b||window.Vue,b&&b.config){var c=b.config.errorHandler;b.config.errorHandler=function(b,e,f){var g={};"[object Object]"===Object.prototype.toString.call(e)&&(g.componentName=d(e),g.propsData=e.$options.propsData),"undefined"!=typeof f&&(g.lifecycleHook=f),a.captureException(b,{extra:g}),"function"==typeof c&&c.call(this,b,e,f)}}}b.exports=e,a(7).addPlugin(b.exports)},{7:7}],4:[function(a,b,c){function d(a){this.name="RavenConfigError",this.message=a}d.prototype=new Error,d.prototype.constructor=d,b.exports=d},{}],5:[function(a,b,c){var d=a(8),e=function(a,b,c){var e=a[b],f=a;if(b in a){var g="warn"===b?"warning":b;a[b]=function(){var a=[].slice.call(arguments),h=d.safeJoin(a," "),i={level:g,logger:"console",extra:{arguments:a}};"assert"===b?a[0]===!1&&(h="Assertion failed: "+(d.safeJoin(a.slice(1)," ")||"console.assert"),i.extra.arguments=a.slice(1),c&&c(h,i)):c&&c(h,i),e&&Function.prototype.apply.call(e,f,a)}}};b.exports={wrapMethod:e}},{8:8}],6:[function(a,b,c){(function(c){function d(){return+new Date}function e(a,b){return s(b)?function(c){return b(c,a)}:b}function f(){this.b=!("object"!=typeof JSON||!JSON.stringify),this.c=!r(S),this.d=!r(T),this.e=null,this.f=null,this.g=null,this.h=null,this.i=null,this.j=null,this.k={},this.l={release:R.SENTRY_RELEASE&&R.SENTRY_RELEASE.id,logger:"javascript",ignoreErrors:[],ignoreUrls:[],whitelistUrls:[],includePaths:[],headers:null,collectWindowErrors:!0,captureUnhandledRejections:!0,maxMessageLength:0,maxUrlLength:250,stackTraceLimit:50,autoBreadcrumbs:!0,instrument:!0,sampleRate:1,sanitizeKeys:[]},this.m={method:"POST",keepalive:!0,referrerPolicy:K()?"origin":""},this.n=0,this.o=!1,this.p=Error.stackTraceLimit,this.q=R.console||{},this.r={},this.s=[],this.t=d(),this.u=[],this.v=[],this.w=null,this.x=R.location,this.y=this.x&&this.x.href,this.z();for(var a in this.q)this.r[a]=this.q[a]}var g=a(9),h=a(10),i=a(11),j=a(4),k=a(8),l=k.isErrorEvent,m=k.isDOMError,n=k.isDOMException,o=k.isError,p=k.isObject,q=k.isPlainObject,r=k.isUndefined,s=k.isFunction,t=k.isString,u=k.isArray,v=k.isEmptyObject,w=k.each,x=k.objectMerge,y=k.truncate,z=k.objectFrozen,A=k.hasKey,B=k.joinRegExp,C=k.urlencode,D=k.uuid4,E=k.htmlTreeAsString,F=k.isSameException,G=k.isSameStacktrace,H=k.parseUrl,I=k.fill,J=k.supportsFetch,K=k.supportsReferrerPolicy,L=k.serializeKeysForMessage,M=k.serializeException,N=k.sanitize,O=a(5).wrapMethod,P="source protocol user pass host port path".split(" "),Q=/^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/,R="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},S=R.document,T=R.navigator;f.prototype={VERSION:"3.25.0",debug:!1,TraceKit:g,config:function(a,b){var c=this;if(c.h)return this.A("error","Error: Raven has already been configured"),c;if(!a)return c;var d=c.l;b&&w(b,function(a,b){"tags"===a||"extra"===a||"user"===a?c.k[a]=b:d[a]=b}),c.setDSN(a),d.ignoreErrors.push(/^Script error\.?$/),d.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/),d.ignoreErrors=B(d.ignoreErrors),d.ignoreUrls=!!d.ignoreUrls.length&&B(d.ignoreUrls),d.whitelistUrls=!!d.whitelistUrls.length&&B(d.whitelistUrls),d.includePaths=B(d.includePaths),d.maxBreadcrumbs=Math.max(0,Math.min(d.maxBreadcrumbs||100,100));var e={xhr:!0,console:!0,dom:!0,location:!0,sentry:!0},f=d.autoBreadcrumbs;"[object Object]"==={}.toString.call(f)?f=x(e,f):f!==!1&&(f=e),d.autoBreadcrumbs=f;var h={tryCatch:!0},i=d.instrument;return"[object Object]"==={}.toString.call(i)?i=x(h,i):i!==!1&&(i=h),d.instrument=i,g.collectWindowErrors=!!d.collectWindowErrors,c},install:function(){var a=this;return a.isSetup()&&!a.o&&(g.report.subscribe(function(){a.B.apply(a,arguments)}),a.l.captureUnhandledRejections&&a.C(),a.D(),a.l.instrument&&a.l.instrument.tryCatch&&a.E(),a.l.autoBreadcrumbs&&a.F(),a.G(),a.o=!0),Error.stackTraceLimit=a.l.stackTraceLimit,this},setDSN:function(a){var b=this,c=b.H(a),d=c.path.lastIndexOf("/"),e=c.path.substr(1,d);b.I=a,b.i=c.user,b.J=c.pass&&c.pass.substr(1),b.j=c.path.substr(d+1),b.h=b.K(c),b.L=b.h+"/"+e+"api/"+b.j+"/store/",this.z()},context:function(a,b,c){return s(a)&&(c=b||[],b=a,a=void 0),this.wrap(a,b).apply(this,c)},wrap:function(a,b,c){function d(){var d=[],f=arguments.length,g=!a||a&&a.deep!==!1;for(c&&s(c)&&c.apply(this,arguments);f--;)d[f]=g?e.wrap(a,arguments[f]):arguments[f];try{return b.apply(this,d)}catch(h){throw e.M(),e.captureException(h,a),h}}var e=this;if(r(b)&&!s(a))return a;if(s(a)&&(b=a,a=void 0),!s(b))return b;try{if(b.N)return b;if(b.O)return b.O}catch(f){return b}for(var g in b)A(b,g)&&(d[g]=b[g]);return d.prototype=b.prototype,b.O=d,d.N=!0,d.P=b,d},uninstall:function(){return g.report.uninstall(),this.Q(),this.R(),this.S(),this.T(),Error.stackTraceLimit=this.p,this.o=!1,this},U:function(a){this.A("debug","Raven caught unhandled promise rejection:",a),this.captureException(a.reason,{extra:{unhandledPromiseRejection:!0}})},C:function(){return this.U=this.U.bind(this),R.addEventListener&&R.addEventListener("unhandledrejection",this.U),this},Q:function(){return R.removeEventListener&&R.removeEventListener("unhandledrejection",this.U),this},captureException:function(a,b){if(b=x({trimHeadFrames:0},b?b:{}),l(a)&&a.error)a=a.error;else{if(m(a)||n(a)){var c=a.name||(m(a)?"DOMError":"DOMException"),d=a.message?c+": "+a.message:c;return this.captureMessage(d,x(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}))}if(o(a))a=a;else{if(!q(a))return this.captureMessage(a,x(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}));b=this.V(b,a),a=new Error(b.message)}}this.e=a;try{var e=g.computeStackTrace(a);this.W(e,b)}catch(f){if(a!==f)throw f}return this},V:function(a,b){var c=Object.keys(b).sort(),d=x(a,{message:"Non-Error exception captured with keys: "+L(c),fingerprint:[i(c)],extra:a.extra||{}});return d.extra.X=M(b),d},captureMessage:function(a,b){if(!this.l.ignoreErrors.test||!this.l.ignoreErrors.test(a)){b=b||{},a+="";var c,d=x({message:a},b);try{throw new Error(a)}catch(e){c=e}c.name=null;var f=g.computeStackTrace(c),h=u(f.stack)&&f.stack[1];h&&"Raven.captureException"===h.func&&(h=f.stack[2]);var i=h&&h.url||"";if((!this.l.ignoreUrls.test||!this.l.ignoreUrls.test(i))&&(!this.l.whitelistUrls.test||this.l.whitelistUrls.test(i))){if(this.l.stacktrace||b&&b.stacktrace){d.fingerprint=null==d.fingerprint?a:d.fingerprint,b=x({trimHeadFrames:0},b),b.trimHeadFrames+=1;var j=this.Y(f,b);d.stacktrace={frames:j.reverse()}}return d.fingerprint&&(d.fingerprint=u(d.fingerprint)?d.fingerprint:[d.fingerprint]),this.Z(d),this}}},captureBreadcrumb:function(a){var b=x({timestamp:d()/1e3},a);if(s(this.l.breadcrumbCallback)){var c=this.l.breadcrumbCallback(b);if(p(c)&&!v(c))b=c;else if(c===!1)return this}return this.v.push(b),this.v.length>this.l.maxBreadcrumbs&&this.v.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.s.push([a,b]),this.o&&this.G(),this},setUserContext:function(a){return this.k.user=a,this},setExtraContext:function(a){return this.$("extra",a),this},setTagsContext:function(a){return this.$("tags",a),this},clearContext:function(){return this.k={},this},getContext:function(){return JSON.parse(h(this.k))},setEnvironment:function(a){return this.l.environment=a,this},setRelease:function(a){return this.l.release=a,this},setDataCallback:function(a){var b=this.l.dataCallback;return this.l.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.l.breadcrumbCallback;return this.l.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.l.shouldSendCallback;return this.l.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.l.transport=a,this},lastException:function(){return this.e},lastEventId:function(){return this.g},isSetup:function(){return!!this.b&&(!!this.h||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.A("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=R.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(S){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.I;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.k.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.K(this.H(c)),h=S.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(S.head||S.body).appendChild(h)}},M:function(){var a=this;this.n+=1,setTimeout(function(){a.n-=1})},_:function(a,b){var c,d;if(this.c){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),S.createEvent?(c=S.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=S.createEventObject(),c.eventType=a);for(d in b)A(b,d)&&(c[d]=b[d]);if(S.createEvent)S.dispatchEvent(c);else try{S.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},aa:function(a){var b=this;return function(c){if(b.ba=null,b.w!==c){b.w=c;var d;try{d=E(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ca:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.ba;g||a.aa("input")(c),clearTimeout(g),a.ba=setTimeout(function(){a.ba=null},b)}}},da:function(a,b){var c=H(this.x.href),d=H(b),e=H(a);this.y=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},D:function(){var a=this;a.ea=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.N?a.ea.apply(this.P,arguments):a.ea.apply(this,arguments)}},R:function(){this.ea&&(Function.prototype.toString=this.ea)},E:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.da(b.y,c+""),a.apply(this,arguments)}};I(history,"pushState",j,d),I(history,"replaceState",j,d)}if(c.console&&"console"in R&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};w(["debug","info","warn","error","log"],function(a,b){O(console,b,k)})}},S:function(){for(var a;this.u.length;){a=this.u.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},T:function(){for(var a in this.r)this.q[a]=this.r[a]},G:function(){var a=this;w(this.s,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},H:function(a){var b=Q.exec(a),c={},d=7;try{for(;d--;)c[P[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.l.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},K:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},B:function(){this.n||this.W.apply(this,arguments)},W:function(a,b){var c=this.Y(a,b);this._("handle",{stackInfo:a,options:b}),this.ga(a.name,a.message,a.url,a.lineno,c,b)},Y:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(w(a.stack,function(b,e){var f=c.ha(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.v,0)}),this.k.user&&(a.user=this.k.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),a=this.qa(a),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||v(a[b]))&&delete a[b]}),s(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!v(a)&&(!s(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.na()?void this.A("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function F(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&l(b))for(c=b.split(/\s+/),f=0;fc?Q(a,b-1):d}function R(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?X:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function S(a,b){function c(a){return m(a)?a.map(function(a){return c(a)}):k(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!m(b)||m(b)&&0===b.length)return a;var d,e=A(b),f="********";try{d=JSON.parse(T(a))}catch(g){return a}return c(d)}var T=a(10),U="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},V=3,W=51200,X=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isDOMError:g,isDOMException:h,isUndefined:i,isFunction:j,isPlainObject:k,isString:l,isArray:m,isEmptyObject:n,supportsErrorEvent:o,supportsDOMError:p,supportsDOMException:q,supportsFetch:r,supportsReferrerPolicy:s,supportsPromiseRejectionEvent:t,wrappedCallback:u,each:v,objectMerge:w,truncate:y,objectFrozen:x,hasKey:z,joinRegExp:A,urlencode:B,uuid4:D,htmlTreeAsString:E,htmlElementAsString:F,isSameException:I,isSameStacktrace:J,parseUrl:C,fill:K,safeJoin:L,serializeException:Q,serializeKeysForMessage:R,sanitize:S}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{10:10}],9:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}function e(){return"undefined"==typeof document||null==document.location?"":document.location.origin}var f=a(8),g={collectWindowErrors:!0,debug:!1},h="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},i=[].slice,j="?",k=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;g.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function e(a,b){var c=null;if(!b||g.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(i.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,h,i){var l=null,m=f.isErrorEvent(i)?i.error:i,n=f.isErrorEvent(a)?a.message:a;if(v)g.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&f.isError(m))l=g.computeStackTrace(m),e(l,!0);else{var p,r={url:b,line:c,column:h},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(k);p&&(s=p[1],n=p[2])}r.func=j,l={name:s,message:n,url:d(),stack:[r]},e(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=h.onerror,h.onerror=l,r=!0)}function n(){r&&(h.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,e.apply(null,[a,!1].concat(b))}function p(a,b){var c=i.call(arguments,1);if(v){if(u===a)return;o()}var d=g.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),g.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,f,g=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,h=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,i=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,k=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,l=/\((\S*)(?::(\d+))(?::(\d+))\)/,m=a.stack.split("\n"),n=[],o=(/^(.*) is undefined$/.exec(a.message),0),p=m.length;o eval")>-1;r&&(b=k.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==o||c[5]||"undefined"==typeof a.columnNumber||(n[0].column=a.columnNumber+1),f={url:c[3],func:c[1]||j,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null, -column:c[5]?+c[5]:null}}if(!f.func&&f.line&&(f.func=j),f.url&&"blob:"===f.url.substr(0,5)){var s=new XMLHttpRequest;if(s.open("GET",f.url,!1),s.send(null),200===s.status){var t=s.responseText||"";t=t.slice(-300);var u=t.match(/\/\/# sourceMappingURL=(.*)$/);if(u){var v=u[1];"~"===v.charAt(0)&&(v=e()+v.slice(1)),f.url=v.slice(0,-4)}}}n.push(f)}return n.length?{name:a.name,message:a.message,url:d(),stack:n}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=j),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,e){for(var h,i,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==f&&o!==g.report){if(i={url:null,func:j,line:null,column:null},o.name?i.func=o.name:(h=k.exec(o.toString()))&&(i.func=h[1]),"undefined"==typeof i.func)try{i.func=h.input.substring(0,h.input.indexOf("{"))}catch(p){}m[""+o]?n=!0:m[""+o]=!0,l.push(i)}e&&l.splice(0,e);var q={name:a.name,message:a.message,url:d(),stack:l};return b(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),q}function f(b,e){var f=null;e=null==e?0:+e;try{if(f=a(b))return f}catch(h){if(g.debug)throw h}try{if(f=c(b,e+1))return f}catch(h){if(g.debug)throw h}return{name:b.name,message:b.message,url:d()}}return f.augmentStackTraceWithInitialElement=b,f.computeStackTraceFromStackProp=a,f}(),b.exports=g}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{8:8}],10:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}],11:[function(a,b,c){function d(a,b){var c=(65535&a)+(65535&b),d=(a>>16)+(b>>16)+(c>>16);return d<<16|65535&c}function e(a,b){return a<>>32-b}function f(a,b,c,f,g,h){return d(e(d(d(b,a),d(f,h)),g),c)}function g(a,b,c,d,e,g,h){return f(b&c|~b&d,a,b,e,g,h)}function h(a,b,c,d,e,g,h){return f(b&d|c&~d,a,b,e,g,h)}function i(a,b,c,d,e,g,h){return f(b^c^d,a,b,e,g,h)}function j(a,b,c,d,e,g,h){return f(c^(b|~d),a,b,e,g,h)}function k(a,b){a[b>>5]|=128<>>9<<4)+14]=b;var c,e,f,k,l,m=1732584193,n=-271733879,o=-1732584194,p=271733878;for(c=0;c>5]>>>b%32&255);return c}function m(a){var b,c=[];for(c[(a.length>>2)-1]=void 0,b=0;b>5]|=(255&a.charCodeAt(b/8))<16&&(e=k(e,8*a.length)),c=0;c<16;c+=1)f[c]=909522486^e[c],g[c]=1549556828^e[c];return d=k(f.concat(m(b)),512+8*b.length),l(k(g.concat(d),640))}function p(a){var b,c,d="0123456789abcdef",e="";for(c=0;c>>4&15)+d.charAt(15&b);return e}function q(a){return unescape(encodeURIComponent(a))}function r(a){return n(q(a))}function s(a){return p(r(a))}function t(a,b){return o(q(a),q(b))}function u(a,b){return p(t(a,b))}function v(a,b,c){return b?c?t(b,a):u(b,a):c?r(a):s(a)}b.exports=v},{}]},{},[7,1,2,3])(7)}); +/*! Raven.js 3.25.1 (b6f3c7a) | github.com/getsentry/raven-js */ +!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.Raven=a()}}(function(){return function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};b[g][0].call(k.exports,function(a){var c=b[g][1][a];return e(c?c:a)},k,k.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;g":"anonymous component")+(a._isVue&&a.$options.__file?" at "+a.$options.__file:"")}function e(a,b){if(b=b||window.Vue,b&&b.config){var c=b.config.errorHandler;b.config.errorHandler=function(b,e,f){var g={};"[object Object]"===Object.prototype.toString.call(e)&&(g.componentName=d(e),g.propsData=e.$options.propsData),"undefined"!=typeof f&&(g.lifecycleHook=f),a.captureException(b,{extra:g}),"function"==typeof c&&c.call(this,b,e,f)}}}b.exports=e,a(7).addPlugin(b.exports)},{7:7}],4:[function(a,b,c){function d(a){this.name="RavenConfigError",this.message=a}d.prototype=new Error,d.prototype.constructor=d,b.exports=d},{}],5:[function(a,b,c){var d=a(8),e=function(a,b,c){var e=a[b],f=a;if(b in a){var g="warn"===b?"warning":b;a[b]=function(){var a=[].slice.call(arguments),h=d.safeJoin(a," "),i={level:g,logger:"console",extra:{arguments:a}};"assert"===b?a[0]===!1&&(h="Assertion failed: "+(d.safeJoin(a.slice(1)," ")||"console.assert"),i.extra.arguments=a.slice(1),c&&c(h,i)):c&&c(h,i),e&&Function.prototype.apply.call(e,f,a)}}};b.exports={wrapMethod:e}},{8:8}],6:[function(a,b,c){(function(c){function d(){return+new Date}function e(a,b){return s(b)?function(c){return b(c,a)}:b}function f(){this.b=!("object"!=typeof JSON||!JSON.stringify),this.c=!r(S),this.d=!r(T),this.e=null,this.f=null,this.g=null,this.h=null,this.i=null,this.j=null,this.k={},this.l={release:R.SENTRY_RELEASE&&R.SENTRY_RELEASE.id,logger:"javascript",ignoreErrors:[],ignoreUrls:[],whitelistUrls:[],includePaths:[],headers:null,collectWindowErrors:!0,captureUnhandledRejections:!0,maxMessageLength:0,maxUrlLength:250,stackTraceLimit:50,autoBreadcrumbs:!0,instrument:!0,sampleRate:1,sanitizeKeys:[]},this.m={method:"POST",keepalive:!0,referrerPolicy:K()?"origin":""},this.n=0,this.o=!1,this.p=Error.stackTraceLimit,this.q=R.console||{},this.r={},this.s=[],this.t=d(),this.u=[],this.v=[],this.w=null,this.x=R.location,this.y=this.x&&this.x.href,this.z();for(var a in this.q)this.r[a]=this.q[a]}var g=a(9),h=a(10),i=a(11),j=a(4),k=a(8),l=k.isErrorEvent,m=k.isDOMError,n=k.isDOMException,o=k.isError,p=k.isObject,q=k.isPlainObject,r=k.isUndefined,s=k.isFunction,t=k.isString,u=k.isArray,v=k.isEmptyObject,w=k.each,x=k.objectMerge,y=k.truncate,z=k.objectFrozen,A=k.hasKey,B=k.joinRegExp,C=k.urlencode,D=k.uuid4,E=k.htmlTreeAsString,F=k.isSameException,G=k.isSameStacktrace,H=k.parseUrl,I=k.fill,J=k.supportsFetch,K=k.supportsReferrerPolicy,L=k.serializeKeysForMessage,M=k.serializeException,N=k.sanitize,O=a(5).wrapMethod,P="source protocol user pass host port path".split(" "),Q=/^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/,R="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},S=R.document,T=R.navigator;f.prototype={VERSION:"3.25.1",debug:!1,TraceKit:g,config:function(a,b){var c=this;if(c.h)return this.A("error","Error: Raven has already been configured"),c;if(!a)return c;var d=c.l;b&&w(b,function(a,b){"tags"===a||"extra"===a||"user"===a?c.k[a]=b:d[a]=b}),c.setDSN(a),d.ignoreErrors.push(/^Script error\.?$/),d.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/),d.ignoreErrors=B(d.ignoreErrors),d.ignoreUrls=!!d.ignoreUrls.length&&B(d.ignoreUrls),d.whitelistUrls=!!d.whitelistUrls.length&&B(d.whitelistUrls),d.includePaths=B(d.includePaths),d.maxBreadcrumbs=Math.max(0,Math.min(d.maxBreadcrumbs||100,100));var e={xhr:!0,console:!0,dom:!0,location:!0,sentry:!0},f=d.autoBreadcrumbs;"[object Object]"==={}.toString.call(f)?f=x(e,f):f!==!1&&(f=e),d.autoBreadcrumbs=f;var h={tryCatch:!0},i=d.instrument;return"[object Object]"==={}.toString.call(i)?i=x(h,i):i!==!1&&(i=h),d.instrument=i,g.collectWindowErrors=!!d.collectWindowErrors,c},install:function(){var a=this;return a.isSetup()&&!a.o&&(g.report.subscribe(function(){a.B.apply(a,arguments)}),a.l.captureUnhandledRejections&&a.C(),a.D(),a.l.instrument&&a.l.instrument.tryCatch&&a.E(),a.l.autoBreadcrumbs&&a.F(),a.G(),a.o=!0),Error.stackTraceLimit=a.l.stackTraceLimit,this},setDSN:function(a){var b=this,c=b.H(a),d=c.path.lastIndexOf("/"),e=c.path.substr(1,d);b.I=a,b.i=c.user,b.J=c.pass&&c.pass.substr(1),b.j=c.path.substr(d+1),b.h=b.K(c),b.L=b.h+"/"+e+"api/"+b.j+"/store/",this.z()},context:function(a,b,c){return s(a)&&(c=b||[],b=a,a=void 0),this.wrap(a,b).apply(this,c)},wrap:function(a,b,c){function d(){var d=[],f=arguments.length,g=!a||a&&a.deep!==!1;for(c&&s(c)&&c.apply(this,arguments);f--;)d[f]=g?e.wrap(a,arguments[f]):arguments[f];try{return b.apply(this,d)}catch(h){throw e.M(),e.captureException(h,a),h}}var e=this;if(r(b)&&!s(a))return a;if(s(a)&&(b=a,a=void 0),!s(b))return b;try{if(b.N)return b;if(b.O)return b.O}catch(f){return b}for(var g in b)A(b,g)&&(d[g]=b[g]);return d.prototype=b.prototype,b.O=d,d.N=!0,d.P=b,d},uninstall:function(){return g.report.uninstall(),this.Q(),this.R(),this.S(),this.T(),Error.stackTraceLimit=this.p,this.o=!1,this},U:function(a){this.A("debug","Raven caught unhandled promise rejection:",a),this.captureException(a.reason,{extra:{unhandledPromiseRejection:!0}})},C:function(){return this.U=this.U.bind(this),R.addEventListener&&R.addEventListener("unhandledrejection",this.U),this},Q:function(){return R.removeEventListener&&R.removeEventListener("unhandledrejection",this.U),this},captureException:function(a,b){if(b=x({trimHeadFrames:0},b?b:{}),l(a)&&a.error)a=a.error;else{if(m(a)||n(a)){var c=a.name||(m(a)?"DOMError":"DOMException"),d=a.message?c+": "+a.message:c;return this.captureMessage(d,x(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}))}if(o(a))a=a;else{if(!q(a))return this.captureMessage(a,x(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}));b=this.V(b,a),a=new Error(b.message)}}this.e=a;try{var e=g.computeStackTrace(a);this.W(e,b)}catch(f){if(a!==f)throw f}return this},V:function(a,b){var c=Object.keys(b).sort(),d=x(a,{message:"Non-Error exception captured with keys: "+L(c),fingerprint:[i(c)],extra:a.extra||{}});return d.extra.X=M(b),d},captureMessage:function(a,b){if(!this.l.ignoreErrors.test||!this.l.ignoreErrors.test(a)){b=b||{},a+="";var c,d=x({message:a},b);try{throw new Error(a)}catch(e){c=e}c.name=null;var f=g.computeStackTrace(c),h=u(f.stack)&&f.stack[1];h&&"Raven.captureException"===h.func&&(h=f.stack[2]);var i=h&&h.url||"";if((!this.l.ignoreUrls.test||!this.l.ignoreUrls.test(i))&&(!this.l.whitelistUrls.test||this.l.whitelistUrls.test(i))){if(this.l.stacktrace||b&&b.stacktrace){d.fingerprint=null==d.fingerprint?a:d.fingerprint,b=x({trimHeadFrames:0},b),b.trimHeadFrames+=1;var j=this.Y(f,b);d.stacktrace={frames:j.reverse()}}return d.fingerprint&&(d.fingerprint=u(d.fingerprint)?d.fingerprint:[d.fingerprint]),this.Z(d),this}}},captureBreadcrumb:function(a){var b=x({timestamp:d()/1e3},a);if(s(this.l.breadcrumbCallback)){var c=this.l.breadcrumbCallback(b);if(p(c)&&!v(c))b=c;else if(c===!1)return this}return this.v.push(b),this.v.length>this.l.maxBreadcrumbs&&this.v.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.s.push([a,b]),this.o&&this.G(),this},setUserContext:function(a){return this.k.user=a,this},setExtraContext:function(a){return this.$("extra",a),this},setTagsContext:function(a){return this.$("tags",a),this},clearContext:function(){return this.k={},this},getContext:function(){return JSON.parse(h(this.k))},setEnvironment:function(a){return this.l.environment=a,this},setRelease:function(a){return this.l.release=a,this},setDataCallback:function(a){var b=this.l.dataCallback;return this.l.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.l.breadcrumbCallback;return this.l.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.l.shouldSendCallback;return this.l.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.l.transport=a,this},lastException:function(){return this.e},lastEventId:function(){return this.g},isSetup:function(){return!!this.b&&(!!this.h||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.A("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=R.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(S){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.I;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.k.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.K(this.H(c)),h=S.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(S.head||S.body).appendChild(h)}},M:function(){var a=this;this.n+=1,setTimeout(function(){a.n-=1})},_:function(a,b){var c,d;if(this.c){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),S.createEvent?(c=S.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=S.createEventObject(),c.eventType=a);for(d in b)A(b,d)&&(c[d]=b[d]);if(S.createEvent)S.dispatchEvent(c);else try{S.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},aa:function(a){var b=this;return function(c){if(b.ba=null,b.w!==c){b.w=c;var d;try{d=E(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ca:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.ba;g||a.aa("input")(c),clearTimeout(g),a.ba=setTimeout(function(){a.ba=null},b)}}},da:function(a,b){var c=H(this.x.href),d=H(b),e=H(a);this.y=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},D:function(){var a=this;a.ea=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.N?a.ea.apply(this.P,arguments):a.ea.apply(this,arguments)}},R:function(){this.ea&&(Function.prototype.toString=this.ea)},E:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.da(b.y,c+""),a.apply(this,arguments)}};I(R.history,"pushState",j,d),I(R.history,"replaceState",j,d)}if(c.console&&"console"in R&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};w(["debug","info","warn","error","log"],function(a,b){O(console,b,k)})}},S:function(){for(var a;this.u.length;){a=this.u.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},T:function(){for(var a in this.r)this.q[a]=this.r[a]},G:function(){var a=this;w(this.s,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},H:function(a){var b=Q.exec(a),c={},d=7;try{for(;d--;)c[P[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.l.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},K:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},B:function(){this.n||this.W.apply(this,arguments)},W:function(a,b){var c=this.Y(a,b);this._("handle",{stackInfo:a,options:b}),this.ga(a.name,a.message,a.url,a.lineno,c,b)},Y:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(w(a.stack,function(b,e){var f=c.ha(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.v,0)}),this.k.user&&(a.user=this.k.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),a=this.qa(a),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||v(a[b]))&&delete a[b]}),s(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!v(a)&&(!s(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.na()?void this.A("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function F(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&l(b))for(c=b.split(/\s+/),f=0;fc?Q(a,b-1):d}function R(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?X:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function S(a,b){function c(a){return m(a)?a.map(function(a){return c(a)}):k(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!m(b)||m(b)&&0===b.length)return a;var d,e=A(b),f="********";try{d=JSON.parse(T(a))}catch(g){return a}return c(d)}var T=a(10),U="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},V=3,W=51200,X=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isDOMError:g,isDOMException:h,isUndefined:i,isFunction:j,isPlainObject:k,isString:l,isArray:m,isEmptyObject:n,supportsErrorEvent:o,supportsDOMError:p,supportsDOMException:q,supportsFetch:r,supportsReferrerPolicy:s,supportsPromiseRejectionEvent:t,wrappedCallback:u,each:v,objectMerge:w,truncate:y,objectFrozen:x,hasKey:z,joinRegExp:A,urlencode:B,uuid4:D,htmlTreeAsString:E,htmlElementAsString:F,isSameException:I,isSameStacktrace:J,parseUrl:C,fill:K,safeJoin:L,serializeException:Q,serializeKeysForMessage:R,sanitize:S}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{10:10}],9:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}function e(){return"undefined"==typeof document||null==document.location?"":(document.location.origin||(document.location.origin=document.location.protocol+"//"+document.location.hostname+(document.location.port?":"+document.location.port:"")),document.location.origin)}var f=a(8),g={collectWindowErrors:!0,debug:!1},h="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},i=[].slice,j="?",k=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;g.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function e(a,b){var c=null;if(!b||g.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(i.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,h,i){var l=null,m=f.isErrorEvent(i)?i.error:i,n=f.isErrorEvent(a)?a.message:a;if(v)g.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&f.isError(m))l=g.computeStackTrace(m),e(l,!0);else{var p,r={url:b,line:c,column:h},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(k);p&&(s=p[1],n=p[2])}r.func=j,l={name:s,message:n,url:d(),stack:[r]},e(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=h.onerror,h.onerror=l,r=!0)}function n(){r&&(h.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,e.apply(null,[a,!1].concat(b))}function p(a,b){var c=i.call(arguments,1);if(v){if(u===a)return;o()}var d=g.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),g.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,f,g=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,h=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,i=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,k=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,l=/\((\S*)(?::(\d+))(?::(\d+))\)/,m=a.stack.split("\n"),n=[],o=(/^(.*) is undefined$/.exec(a.message),0),p=m.length;o eval")>-1;r&&(b=k.exec(c[3]))?(c[3]=b[1],c[4]=b[2], +c[5]=null):0!==o||c[5]||"undefined"==typeof a.columnNumber||(n[0].column=a.columnNumber+1),f={url:c[3],func:c[1]||j,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}if(!f.func&&f.line&&(f.func=j),f.url&&"blob:"===f.url.substr(0,5)){var s=new XMLHttpRequest;if(s.open("GET",f.url,!1),s.send(null),200===s.status){var t=s.responseText||"";t=t.slice(-300);var u=t.match(/\/\/# sourceMappingURL=(.*)$/);if(u){var v=u[1];"~"===v.charAt(0)&&(v=e()+v.slice(1)),f.url=v.slice(0,-4)}}}n.push(f)}return n.length?{name:a.name,message:a.message,url:d(),stack:n}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=j),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,e){for(var h,i,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==f&&o!==g.report){if(i={url:null,func:j,line:null,column:null},o.name?i.func=o.name:(h=k.exec(o.toString()))&&(i.func=h[1]),"undefined"==typeof i.func)try{i.func=h.input.substring(0,h.input.indexOf("{"))}catch(p){}m[""+o]?n=!0:m[""+o]=!0,l.push(i)}e&&l.splice(0,e);var q={name:a.name,message:a.message,url:d(),stack:l};return b(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),q}function f(b,e){var f=null;e=null==e?0:+e;try{if(f=a(b))return f}catch(h){if(g.debug)throw h}try{if(f=c(b,e+1))return f}catch(h){if(g.debug)throw h}return{name:b.name,message:b.message,url:d()}}return f.augmentStackTraceWithInitialElement=b,f.computeStackTraceFromStackProp=a,f}(),b.exports=g}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{8:8}],10:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}],11:[function(a,b,c){function d(a,b){var c=(65535&a)+(65535&b),d=(a>>16)+(b>>16)+(c>>16);return d<<16|65535&c}function e(a,b){return a<>>32-b}function f(a,b,c,f,g,h){return d(e(d(d(b,a),d(f,h)),g),c)}function g(a,b,c,d,e,g,h){return f(b&c|~b&d,a,b,e,g,h)}function h(a,b,c,d,e,g,h){return f(b&d|c&~d,a,b,e,g,h)}function i(a,b,c,d,e,g,h){return f(b^c^d,a,b,e,g,h)}function j(a,b,c,d,e,g,h){return f(c^(b|~d),a,b,e,g,h)}function k(a,b){a[b>>5]|=128<>>9<<4)+14]=b;var c,e,f,k,l,m=1732584193,n=-271733879,o=-1732584194,p=271733878;for(c=0;c>5]>>>b%32&255);return c}function m(a){var b,c=[];for(c[(a.length>>2)-1]=void 0,b=0;b>5]|=(255&a.charCodeAt(b/8))<16&&(e=k(e,8*a.length)),c=0;c<16;c+=1)f[c]=909522486^e[c],g[c]=1549556828^e[c];return d=k(f.concat(m(b)),512+8*b.length),l(k(g.concat(d),640))}function p(a){var b,c,d="0123456789abcdef",e="";for(c=0;c>>4&15)+d.charAt(15&b);return e}function q(a){return unescape(encodeURIComponent(a))}function r(a){return n(q(a))}function s(a){return p(r(a))}function t(a,b){return o(q(a),q(b))}function u(a,b){return p(t(a,b))}function v(a,b,c){return b?c?t(b,a):u(b,a):c?r(a):s(a)}b.exports=v},{}]},{},[7,1,2,3])(7)}); //# sourceMappingURL=raven.min.js.map \ No newline at end of file diff --git a/dist/angular,ember,vue/raven.min.js.map b/dist/angular,ember,vue/raven.min.js.map index d9e8d0f3c7f7..5e2ec1c91200 100644 --- a/dist/angular,ember,vue/raven.min.js.map +++ b/dist/angular,ember,vue/raven.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","angularPlugin","angular","RavenProvider","$get","$window","ExceptionHandlerProvider","$provide","decorator","exceptionHandler","R","$delegate","ex","cause","captureException","extra","moduleName","provider","config","setDataCallback","wrappedCallback","data","_normalizeData","angularPattern","exception","values","matches","exec","value","type","message","angularDocs","substr","addPlugin","7","8","2","emberPlugin","Ember","_oldOnError","onerror","error","RSVP","on","reason","context","captureMessage","3","formatComponentName","vm","$root","name","_isVue","$options","_componentTag","__file","vuePlugin","Vue","errorHandler","info","metaData","Object","prototype","toString","componentName","propsData","lifecycleHook","4","RavenConfigError","constructor","5","utils","wrapMethod","console","level","callback","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","msg","safeJoin","logger","Function","apply","6","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","sanitizeKeys","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isErrorEvent","isDOMError","isDOMException","isError","isObject","isPlainObject","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","sanitize","wrapConsoleMethod","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","dsn","options","_logDebug","globalOptions","key","setDSN","push","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","func","undefined","wrap","_before","wrapped","deep","_ignoreNextOnError","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","U","event","unhandledPromiseRejection","C","_promiseRejectionHandler","bind","addEventListener","Q","removeEventListener","trimHeadFrames","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","V","currentOptions","exKeys","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","M","setTimeout","_","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","aa","evtName","_keypressTimeout","target","category","ca","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","da","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","D","_originalFunctionToString","E","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","F","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","S","builtin","T","G","installer","concat","H","str","m","allowSecretKey","K","port","B","W","stackInfo","_triggerEvent","_processException","lineno","Y","frame","_normalizeFrame","in_app","ha","stackInfoUrl","normalized","filename","line","colno","column","function","ga","prefixedMessage","culprit","ia","request","Referer","breadcrumbs","_trimBreadcrumbs","ja","urlProp","urlProps","ka","httpData","userAgent","User-Agent","referrer","z","_backoffDuration","_backoffStart","na","oa","current","last","pa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Z","baseData","project","platform","_getHttpData","serverName","server_name","_sanitizeData","forEach","random","_sendProcessedPayload","qa","sa","ra","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","ta","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","open","setRequestHeader","send","ua","hash","evaluated","A","$","setUser","setReleaseContext","10","11","9","RavenConstructor","_Raven","noConflict","Client","what","supportsErrorEvent","ErrorEvent","supportsDOMError","DOMError","supportsDOMException","DOMException","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","sanitizeMask","safeInput","o_O","getLocationHref","getLocationOrigin","origin","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","responseText","sourceMaps","sourceMapAddress","charAt","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","y","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","string","raw"],"mappings":";CAYA,SAAUA,GAAG,GAAoB,gBAAVC,UAAoC,mBAATC,QAAsBA,OAAOD,QAAQD,QAAS,IAAmB,kBAATG,SAAqBA,OAAOC,IAAKD,UAAUH,OAAO,CAAC,GAAIK,EAAkCA,GAAb,mBAATC,QAAwBA,OAA+B,mBAATC,QAAwBA,OAA6B,mBAAPC,MAAsBA,KAAYC,KAAKJ,EAAEK,MAAQV,MAAO,WAAqC,MAAO,SAAUW,GAAEC,EAAEC,EAAEC,GAAG,QAASC,GAAEC,EAAEC,GAAG,IAAIJ,EAAEG,GAAG,CAAC,IAAIJ,EAAEI,GAAG,CAAC,GAAIE,GAAkB,kBAATC,UAAqBA,OAAQ,KAAIF,GAAGC,EAAE,MAAOA,GAAEF,GAAE,EAAI,IAAGI,EAAE,MAAOA,GAAEJ,GAAE,EAAI,IAAIhB,GAAE,GAAIqB,OAAM,uBAAuBL,EAAE,IAAK,MAAMhB,GAAEsB,KAAK,mBAAmBtB,EAAE,GAAIuB,GAAEV,EAAEG,IAAIf,WAAYW,GAAEI,GAAG,GAAGQ,KAAKD,EAAEtB,QAAQ,SAASU,GAAG,GAAIE,GAAED,EAAEI,GAAG,GAAGL,EAAG,OAAOI,GAAEF,EAAEA,EAAEF,IAAIY,EAAEA,EAAEtB,QAAQU,EAAEC,EAAEC,EAAEC,GAAG,MAAOD,GAAEG,GAAGf,QAAkD,IAAI,GAA1CmB,GAAkB,kBAATD,UAAqBA,QAAgBH,EAAE,EAAEA,EAAEF,EAAEW,OAAOT,IAAID,EAAED,EAAEE,GAAI,OAAOD,KAAKW,GAAG,SAASC,EAAQzB,EAAOD,GAYp0B,QAAS2B,GAAclB,EAAOmB,GAK5B,QAASC,KACPrB,KAAKsB,MACH,UACA,SAASC,GACP,MAAOtB,KAKb,QAASuB,GAAyBC,GAChCA,EAASC,UAAU,qBAAsB,QAAS,YAAaC,IAGjE,QAASA,GAAiBC,EAAGC,GAC3B,MAAO,UAASC,EAAIC,GAClBH,EAAEI,iBAAiBF,GACjBG,OAAQF,MAAOA,KAEjBF,EAAUC,EAAIC,IAtBlBX,EAAUA,GAAWvB,OAAOuB,QAEvBA,IAwBLA,EACG3B,OAAOyC,MACPC,SAAS,QAASd,GAClBe,QAAQ,WAAYZ,IAEvBvB,EAAMoC,gBACJC,EAAgB,SAASC,GACvB,MAAOpB,GAAcqB,EAAeD,OAxC1C,GAAID,GAAkBpB,EAAQ,GAAGoB,gBAG7BG,EAAiB,6DACjBP,EAAa,SAyCjBf,GAAcqB,EAAiB,SAASD,GAEtC,GAAIG,GAAYH,EAAKG,SACrB,IAAIA,EAAW,CACbA,EAAYA,EAAUC,OAAO,EAC7B,IAAIC,GAAUH,EAAeI,KAAKH,EAAUI,MAExCF,KAEFF,EAAUK,KAAOH,EAAQ,GACzBF,EAAUI,MAAQF,EAAQ,GAE1BL,EAAKS,QAAUN,EAAUK,KAAO,KAAOL,EAAUI,MAEjDP,EAAKN,MAAMgB,YAAcL,EAAQ,GAAGM,OAAO,EAAG,MAIlD,MAAOX,IAGTpB,EAAce,WAAaA,EAE3BzC,EAAOD,QAAU2B,EAEjBD,EAAQ,GAAGiC,UAAU1D,EAAOD,WACzB4D,EAAI,EAAEC,EAAI,IAAIC,GAAG,SAASpC,EAAQzB,EAAOD,GAM5C,QAAS+D,GAAYtD,EAAOuD,GAI1B,GAHAA,EAAQA,GAAS3D,OAAO2D,MAGxB,CAEA,GAAIC,GAAcD,EAAME,OACxBF,GAAME,QAAU,SAAsBC,GACpC1D,EAAM+B,iBAAiB2B,GACI,kBAAhBF,IACTA,EAAY1C,KAAKf,KAAM2D,IAG3BH,EAAMI,KAAKC,GAAG,QAAS,SAASC,GAC1BA,YAAkBlD,OACpBX,EAAM+B,iBAAiB8B,GACrB7B,OAAQ8B,QAAS,sCAGnB9D,EAAM+D,eAAe,oCAAqC/B,OAAQ6B,OAAQA,QAKhFrE,EAAOD,QAAU+D,EAEjBrC,EAAQ,GAAGiC,UAAU1D,EAAOD,WACzB4D,EAAI,IAAIa,GAAG,SAAS/C,EAAQzB,EAAOD,GAMtC,QAAS0E,GAAoBC,GAC3B,GAAIA,EAAGC,QAAUD,EACf,MAAO,eAET,IAAIE,GAAOF,EAAGG,OAASH,EAAGI,SAASF,MAAQF,EAAGI,SAASC,cAAgBL,EAAGE,IAC1E,QACGA,EAAO,cAAgBA,EAAO,IAAM,wBACpCF,EAAGG,QAAUH,EAAGI,SAASE,OAAS,OAASN,EAAGI,SAASE,OAAS,IAIrE,QAASC,GAAUzE,EAAO0E,GAIxB,GAHAA,EAAMA,GAAO9E,OAAO8E,IAGfA,GAAQA,EAAIvC,OAAjB,CAEA,GAAIqB,GAAckB,EAAIvC,OAAOwC,YAC7BD,GAAIvC,OAAOwC,aAAe,SAAyBjB,EAAOQ,EAAIU,GAC5D,GAAIC,KAGuC,qBAAvCC,OAAOC,UAAUC,SAASlE,KAAKoD,KACjCW,EAASI,cAAgBhB,EAAoBC,GAC7CW,EAASK,UAAYhB,EAAGI,SAASY,WAGf,mBAATN,KACTC,EAASM,cAAgBP,GAG3B5E,EAAM+B,iBAAiB2B,GACrB1B,MAAO6C,IAGkB,kBAAhBrB,IACTA,EAAY1C,KAAKf,KAAM2D,EAAOQ,EAAIU,KAKxCpF,EAAOD,QAAUkF,EAEjBxD,EAAQ,GAAGiC,UAAU1D,EAAOD,WACzB4D,EAAI,IAAIiC,GAAG,SAASnE,EAAQzB,EAAOD,GACtC,QAAS8F,GAAiBtC,GACxBhD,KAAKqE,KAAO,mBACZrE,KAAKgD,QAAUA,EAEjBsC,EAAiBN,UAAY,GAAIpE,OACjC0E,EAAiBN,UAAUO,YAAcD,EAEzC7F,EAAOD,QAAU8F,OAEXE,GAAG,SAAStE,EAAQzB,EAAOD,GACjC,GAAIiG,GAAQvE,EAAQ,GAEhBwE,EAAa,SAASC,EAASC,EAAOC,GACxC,GAAIC,GAAuBH,EAAQC,GAC/BG,EAAkBJ,CAEtB,IAAMC,IAASD,GAAf,CAIA,GAAIK,GAAwB,SAAVJ,EAAmB,UAAYA,CAEjDD,GAAQC,GAAS,WACf,GAAIK,MAAUC,MAAMnF,KAAKoF,WAErBC,EAAMX,EAAMY,SAASJ,EAAM,KAC3B1D,GAAQqD,MAAOI,EAAaM,OAAQ,UAAWrE,OAAQkE,UAAWF,GAExD,YAAVL,EACEK,EAAK,MAAO,IAEdG,EACE,sBAAwBX,EAAMY,SAASJ,EAAKC,MAAM,GAAI,MAAQ,kBAChE3D,EAAKN,MAAMkE,UAAYF,EAAKC,MAAM,GAClCL,GAAYA,EAASO,EAAK7D,IAG5BsD,GAAYA,EAASO,EAAK7D,GAIxBuD,GAGFS,SAASvB,UAAUwB,MAAMzF,KAAK+E,EAAsBC,EAAiBE,KAK3ExG,GAAOD,SACLkG,WAAYA,KAGXrC,EAAI,IAAIoD,GAAG,SAASvF,EAAQzB,EAAOD,IACtC,SAAWM,GA4CX,QAAS4G,KACP,OAAQ,GAAIC,MAWd,QAASC,GAAqBC,EAAUhB,GACtC,MAAOiB,GAAWjB,GACd,SAAStD,GACP,MAAOsD,GAAStD,EAAMsE,IAExBhB,EAMN,QAAS5F,KACPD,KAAK+G,IAA8B,gBAATC,QAAqBA,KAAKC,WAEpDjH,KAAKkH,GAAgBC,EAAYC,GACjCpH,KAAKqH,GAAiBF,EAAYG,GAClCtH,KAAKuH,EAAyB,KAC9BvH,KAAKwH,EAAY,KACjBxH,KAAKyH,EAAe,KACpBzH,KAAK0H,EAAgB,KACrB1H,KAAK2H,EAAa,KAClB3H,KAAK4H,EAAiB,KACtB5H,KAAK6H,KACL7H,KAAK8H,GAEHC,QAASC,EAAQC,gBAAkBD,EAAQC,eAAeC,GAC1D5B,OAAQ,aACR6B,gBACAC,cACAC,iBACAC,gBACAC,QAAS,KACTC,qBAAqB,EACrBC,4BAA4B,EAC5BC,iBAAkB,EAElBC,aAAc,IACdC,gBAAiB,GACjBC,iBAAiB,EACjBC,YAAY,EACZC,WAAY,EACZC,iBAEFhJ,KAAKiJ,GACHC,OAAQ,OACRC,WAAW,EAKXC,eAAgBC,IAA2B,SAAW,IAExDrJ,KAAKsJ,EAAiB,EACtBtJ,KAAKuJ,GAAoB,EACzBvJ,KAAKwJ,EAAgC5I,MAAMgI,gBAG3C5I,KAAKyJ,EAAmBzB,EAAQrC,YAChC3F,KAAK0J,KACL1J,KAAK2J,KACL3J,KAAK4J,EAAalD,IAClB1G,KAAK6J,KACL7J,KAAK8J,KACL9J,KAAK+J,EAAqB,KAE1B/J,KAAKgK,EAAYhC,EAAQiC,SACzBjK,KAAKkK,EAAYlK,KAAKgK,GAAahK,KAAKgK,EAAUG,KAClDnK,KAAKoK,GAGL,KAAK,GAAIlB,KAAUlJ,MAAKyJ,EACtBzJ,KAAK0J,EAAwBR,GAAUlJ,KAAKyJ,EAAiBP,GA5HjE,GAAImB,GAAWnJ,EAAQ,GACnB+F,EAAY/F,EAAQ,IACpBoJ,EAAMpJ,EAAQ,IACdoE,EAAmBpE,EAAQ,GAE3BuE,EAAQvE,EAAQ,GAChBqJ,EAAe9E,EAAM8E,aACrBC,EAAa/E,EAAM+E,WACnBC,EAAiBhF,EAAMgF,eACvBC,EAAUjF,EAAMiF,QAChBC,EAAWlF,EAAMkF,SACjBC,EAAgBnF,EAAMmF,cACtBzD,EAAc1B,EAAM0B,YACpBL,EAAarB,EAAMqB,WACnB+D,EAAWpF,EAAMoF,SACjBC,EAAUrF,EAAMqF,QAChBC,EAAgBtF,EAAMsF,cACtBC,EAAOvF,EAAMuF,KACbC,EAAcxF,EAAMwF,YACpBC,EAAWzF,EAAMyF,SACjBC,EAAe1F,EAAM0F,aACrBC,EAAS3F,EAAM2F,OACfC,EAAa5F,EAAM4F,WACnBC,EAAY7F,EAAM6F,UAClBC,EAAQ9F,EAAM8F,MACdC,EAAmB/F,EAAM+F,iBACzBC,EAAkBhG,EAAMgG,gBACxBC,EAAmBjG,EAAMiG,iBACzBC,EAAWlG,EAAMkG,SACjBC,EAAOnG,EAAMmG,KACbC,EAAgBpG,EAAMoG,cACtBxC,EAAyB5D,EAAM4D,uBAC/ByC,EAA0BrG,EAAMqG,wBAChCC,EAAqBtG,EAAMsG,mBAC3BC,EAAWvG,EAAMuG,SAEjBC,EAAoB/K,EAAQ,GAAGwE,WAE/BwG,EAAU,2CAA2CC,MAAM,KAC7DC,EAAa,gEAOXpE,EACgB,mBAAXnI,QACHA,OACkB,mBAAXC,GAAyBA,EAAyB,mBAATC,MAAuBA,QACzEqH,EAAYY,EAAQqE,SACpB/E,EAAaU,EAAQsE,SAmFzBrM,GAAM+E,WAKJuH,QAAS,SAETC,OAAO,EAEPnC,SAAUA,EASVjI,OAAQ,SAASqK,EAAKC,GACpB,GAAI3M,GAAOC,IAEX,IAAID,EAAK2H,EAEP,MADA1H,MAAK2M,EAAU,QAAS,4CACjB5M,CAET,KAAK0M,EAAK,MAAO1M,EAEjB,IAAI6M,GAAgB7M,EAAK+H,CAGrB4E,IACF1B,EAAK0B,EAAS,SAASG,EAAK/J,GAEd,SAAR+J,GAA0B,UAARA,GAA2B,SAARA,EACvC9M,EAAK8H,EAAegF,GAAO/J,EAE3B8J,EAAcC,GAAO/J,IAK3B/C,EAAK+M,OAAOL,GAIZG,EAAczE,aAAa4E,KAAK,qBAChCH,EAAczE,aAAa4E,KAAK,iDAGhCH,EAAczE,aAAekD,EAAWuB,EAAczE,cACtDyE,EAAcxE,aAAawE,EAAcxE,WAAWpH,QAChDqK,EAAWuB,EAAcxE,YAE7BwE,EAAcvE,gBAAgBuE,EAAcvE,cAAcrH,QACtDqK,EAAWuB,EAAcvE,eAE7BuE,EAActE,aAAe+C,EAAWuB,EAActE,cACtDsE,EAAcI,eAAiBC,KAAKC,IAClC,EACAD,KAAKE,IAAIP,EAAcI,gBAAkB,IAAK,KAGhD,IAAII,IACFC,KAAK,EACL1H,SAAS,EACT2H,KAAK,EACLrD,UAAU,EACVsD,QAAQ,GAGN1E,EAAkB+D,EAAc/D,eACM,wBAAnC5D,SAASlE,KAAK8H,GACnBA,EAAkBoC,EAAYmC,EAAwBvE,GAC7CA,KAAoB,IAC7BA,EAAkBuE,GAEpBR,EAAc/D,gBAAkBA,CAEhC,IAAI2E,IACFC,UAAU,GAGR3E,EAAa8D,EAAc9D,UAW/B,OAVqC,uBAA9B7D,SAASlE,KAAK+H,GACnBA,EAAamC,EAAYuC,EAAoB1E,GACpCA,KAAe,IACxBA,EAAa0E,GAEfZ,EAAc9D,WAAaA,EAE3BuB,EAAS7B,sBAAwBoE,EAAcpE,oBAGxCzI,GAWT2N,QAAS,WACP,GAAI3N,GAAOC,IAyBX,OAxBID,GAAK4N,YAAc5N,EAAKwJ,IAC1Bc,EAASuD,OAAOC,UAAU,WACxB9N,EAAK+N,EAAwBtH,MAAMzG,EAAMoG,aAGvCpG,EAAK+H,EAAeW,4BACtB1I,EAAKgO,IAGPhO,EAAKiO,IAEDjO,EAAK+H,EAAegB,YAAc/I,EAAK+H,EAAegB,WAAW2E,UACnE1N,EAAKkO,IAGHlO,EAAK+H,EAAee,iBAAiB9I,EAAKmO,IAG9CnO,EAAKoO,IAELpO,EAAKwJ,GAAoB,GAG3B3I,MAAMgI,gBAAkB7I,EAAK+H,EAAec,gBACrC5I,MAQT8M,OAAQ,SAASL,GACf,GAAI1M,GAAOC,KACToO,EAAMrO,EAAKsO,EAAU5B,GACrB6B,EAAYF,EAAIG,KAAKC,YAAY,KACjCD,EAAOH,EAAIG,KAAKrL,OAAO,EAAGoL,EAE5BvO,GAAK0O,EAAOhC,EACZ1M,EAAK4H,EAAayG,EAAIM,KACtB3O,EAAK4O,EAAgBP,EAAIQ,MAAQR,EAAIQ,KAAK1L,OAAO,GACjDnD,EAAK6H,EAAiBwG,EAAIG,KAAKrL,OAAOoL,EAAY,GAElDvO,EAAK2H,EAAgB3H,EAAK8O,EAAiBT,GAE3CrO,EAAK+O,EACH/O,EAAK2H,EAAgB,IAAM6G,EAAO,OAASxO,EAAK6H,EAAiB,UAInE5H,KAAKoK,KAWPrG,QAAS,SAAS2I,EAASqC,EAAM9I,GAO/B,MANIa,GAAW4F,KACbzG,EAAO8I,MACPA,EAAOrC,EACPA,EAAUsC,QAGLhP,KAAKiP,KAAKvC,EAASqC,GAAMvI,MAAMxG,KAAMiG,IAW9CgJ,KAAM,SAASvC,EAASqC,EAAMG,GAqC5B,QAASC,KACP,GAAIlJ,MACFtF,EAAIwF,UAAUnF,OACdoO,GAAQ1C,GAAYA,GAAWA,EAAQ0C,QAAS,CAQlD,KANIF,GAAWpI,EAAWoI,IACxBA,EAAQ1I,MAAMxG,KAAMmG,WAKfxF,KAAKsF,EAAKtF,GAAKyO,EAAOrP,EAAKkP,KAAKvC,EAASvG,UAAUxF,IAAMwF,UAAUxF,EAE1E,KAKE,MAAOoO,GAAKvI,MAAMxG,KAAMiG,GACxB,MAAO/F,GAGP,KAFAH,GAAKsP,IACLtP,EAAKiC,iBAAiB9B,EAAGwM,GACnBxM,GA1DV,GAAIH,GAAOC,IAGX,IAAImH,EAAY4H,KAAUjI,EAAW4F,GACnC,MAAOA,EAWT,IAPI5F,EAAW4F,KACbqC,EAAOrC,EACPA,EAAUsC,SAKPlI,EAAWiI,GACd,MAAOA,EAIT,KACE,GAAIA,EAAKO,EACP,MAAOP,EAIT,IAAIA,EAAKQ,EACP,MAAOR,GAAKQ,EAEd,MAAOrP,GAIP,MAAO6O,GA8BT,IAAK,GAAIS,KAAYT,GACf3D,EAAO2D,EAAMS,KACfL,EAAQK,GAAYT,EAAKS,GAW7B,OARAL,GAAQnK,UAAY+J,EAAK/J,UAEzB+J,EAAKQ,EAAoBJ,EAGzBA,EAAQG,GAAY,EACpBH,EAAQM,EAAWV,EAEZI,GAQTO,UAAW,WAWT,MAVArF,GAASuD,OAAO8B,YAEhB1P,KAAK2P,IACL3P,KAAK4P,IACL5P,KAAK6P,IACL7P,KAAK8P,IAELlP,MAAMgI,gBAAkB5I,KAAKwJ,EAC7BxJ,KAAKuJ,GAAoB,EAElBvJ,MAWT+P,EAA0B,SAASC,GACjChQ,KAAK2M,EAAU,QAAS,4CAA6CqD,GACrEhQ,KAAKgC,iBAAiBgO,EAAMlM,QAC1B7B,OACEgO,2BAA2B,MAUjCC,EAAgC,WAI9B,MAHAlQ,MAAKmQ,EAA2BnQ,KAAKmQ,EAAyBC,KAAKpQ,MACnEgI,EAAQqI,kBACNrI,EAAQqI,iBAAiB,qBAAsBrQ,KAAKmQ,GAC/CnQ,MAQTsQ,EAAgC,WAG9B,MAFAtI,GAAQuI,qBACNvI,EAAQuI,oBAAoB,qBAAsBvQ,KAAKmQ,GAClDnQ,MAUTgC,iBAAkB,SAASF,EAAI4K,GAG7B,GAFAA,EAAUzB,GAAauF,eAAgB,GAAI9D,EAAUA,MAEjDnC,EAAazI,IAAOA,EAAG6B,MAEzB7B,EAAKA,EAAG6B,UACH,CAAA,GAAI6G,EAAW1I,IAAO2I,EAAe3I,GAAK,CAK/C,GAAIuC,GAAOvC,EAAGuC,OAASmG,EAAW1I,GAAM,WAAa,gBACjDkB,EAAUlB,EAAGkB,QAAUqB,EAAO,KAAOvC,EAAGkB,QAAUqB,CAEtD,OAAOrE,MAAKgE,eACVhB,EACAiI,EAAYyB,GAGV+D,YAAY,EACZD,eAAgB9D,EAAQ8D,eAAiB,KAGxC,GAAI9F,EAAQ5I,GAEjBA,EAAKA,MACA,CAAA,IAAI8I,EAAc9I,GAavB,MAAO9B,MAAKgE,eACVlC,EACAmJ,EAAYyB,GACV+D,YAAY,EACZD,eAAgB9D,EAAQ8D,eAAiB,IAb7C9D,GAAU1M,KAAK0Q,EAA2ChE,EAAS5K,GACnEA,EAAK,GAAIlB,OAAM8L,EAAQ1J,UAkBzBhD,KAAKuH,EAAyBzF,CAO9B,KACE,GAAI6O,GAAQtG,EAASuG,kBAAkB9O,EACvC9B,MAAK6Q,EAAiBF,EAAOjE,GAC7B,MAAOoE,GACP,GAAIhP,IAAOgP,EACT,KAAMA,GAIV,MAAO9Q,OAGT+Q,EAA4C,SAASC,EAAgBlP,GACnE,GAAImP,GAASlM,OAAOmM,KAAKpP,GAAIqP,OACzBzE,EAAUzB,EAAY+F,GACxBhO,QACE,2CAA6C8I,EAAwBmF,GACvEG,aAAc9G,EAAI2G,IAClBhP,MAAO+O,EAAe/O,WAIxB,OAFAyK,GAAQzK,MAAMoP,EAAiBtF,EAAmBjK,GAE3C4K,GAUT1I,eAAgB,SAASoC,EAAKsG,GAI5B,IACI1M,KAAK8H,EAAeK,aAAamJ,OACnCtR,KAAK8H,EAAeK,aAAamJ,KAAKlL,GAFxC,CAOAsG,EAAUA,MACVtG,GAAY,EAEZ,IAOItE,GAPAS,EAAO0I,GAEPjI,QAASoD,GAEXsG,EAQF,KACE,KAAM,IAAI9L,OAAMwF,GAChB,MAAO0K,GACPhP,EAAKgP,EAIPhP,EAAGuC,KAAO,IACV,IAAIsM,GAAQtG,EAASuG,kBAAkB9O,GAGnCyP,EAAczG,EAAQ6F,EAAMA,QAAUA,EAAMA,MAAM,EAKlDY,IAAoC,2BAArBA,EAAYxC,OAC7BwC,EAAcZ,EAAMA,MAAM,GAG5B,IAAIa,GAAWD,GAAeA,EAAYE,KAAQ,EAElD,MACIzR,KAAK8H,EAAeM,WAAWkJ,OACjCtR,KAAK8H,EAAeM,WAAWkJ,KAAKE,OAMlCxR,KAAK8H,EAAeO,cAAciJ,MACnCtR,KAAK8H,EAAeO,cAAciJ,KAAKE,IAF1C,CAOA,GAAIxR,KAAK8H,EAAe2I,YAAe/D,GAAWA,EAAQ+D,WAAa,CAErElO,EAAK6O,YAAkC,MAApB7O,EAAK6O,YAAsBhL,EAAM7D,EAAK6O,YAEzD1E,EAAUzB,GAENuF,eAAgB,GAElB9D,GAMFA,EAAQ8D,gBAAkB,CAE1B,IAAIkB,GAAS1R,KAAK2R,EAAehB,EAAOjE,EACxCnK,GAAKkO,YAEHiB,OAAQA,EAAOE,WAcnB,MATIrP,GAAK6O,cACP7O,EAAK6O,YAActG,EAAQvI,EAAK6O,aAC5B7O,EAAK6O,aACJ7O,EAAK6O,cAIZpR,KAAK6R,EAAMtP,GAEJvC,QAGT8R,kBAAmB,SAASC,GAC1B,GAAIC,GAAQ/G,GAERgH,UAAWvL,IAAQ,KAErBqL,EAGF,IAAIjL,EAAW9G,KAAK8H,EAAeoK,oBAAqB,CACtD,GAAIC,GAASnS,KAAK8H,EAAeoK,mBAAmBF,EAEpD,IAAIrH,EAASwH,KAAYpH,EAAcoH,GACrCH,EAAQG,MACH,IAAIA,KAAW,EACpB,MAAOnS,MAQX,MAJAA,MAAK8J,EAAaiD,KAAKiF,GACnBhS,KAAK8J,EAAa9I,OAAShB,KAAK8H,EAAekF,gBACjDhN,KAAK8J,EAAasI,QAEbpS,MAGTmD,UAAW,SAASkP,GAClB,GAAIC,MAAgBpM,MAAMnF,KAAKoF,UAAW,EAO1C,OALAnG,MAAK2J,EAASoD,MAAMsF,EAAQC,IACxBtS,KAAKuJ,GACPvJ,KAAKmO,IAGAnO,MASTuS,eAAgB,SAAS7D,GAIvB,MAFA1O,MAAK6H,EAAe6G,KAAOA,EAEpB1O,MASTwS,gBAAiB,SAASvQ,GAGxB,MAFAjC,MAAKyS,EAAc,QAASxQ,GAErBjC,MAST0S,eAAgB,SAASC,GAGvB,MAFA3S,MAAKyS,EAAc,OAAQE,GAEpB3S,MAQT4S,aAAc,WAGZ,MAFA5S,MAAK6H,KAEE7H,MAQT6S,WAAY,WAEV,MAAO7L,MAAK8L,MAAM7L,EAAUjH,KAAK6H,KASnCkL,eAAgB,SAASC,GAGvB,MAFAhT,MAAK8H,EAAekL,YAAcA,EAE3BhT,MASTiT,WAAY,SAASlL,GAGnB,MAFA/H,MAAK8H,EAAeC,QAAUA,EAEvB/H,MAUTqC,gBAAiB,SAASwD,GACxB,GAAIgB,GAAW7G,KAAK8H,EAAeoL,YAEnC,OADAlT,MAAK8H,EAAeoL,aAAetM,EAAqBC,EAAUhB,GAC3D7F,MAUTmT,sBAAuB,SAAStN,GAC9B,GAAIgB,GAAW7G,KAAK8H,EAAeoK,kBAEnC,OADAlS,MAAK8H,EAAeoK,mBAAqBtL,EAAqBC,EAAUhB,GACjE7F,MAUToT,sBAAuB,SAASvN,GAC9B,GAAIgB,GAAW7G,KAAK8H,EAAeuL,kBAEnC,OADArT,MAAK8H,EAAeuL,mBAAqBzM,EAAqBC,EAAUhB,GACjE7F,MAYTsT,aAAc,SAASC,GAGrB,MAFAvT,MAAK8H,EAAeyL,UAAYA,EAEzBvT,MAQTwT,cAAe,WACb,MAAOxT,MAAKuH,GAQdkM,YAAa,WACX,MAAOzT,MAAKyH,GAQdkG,QAAS,WACP,QAAK3N,KAAK+G,MACL/G,KAAK0H,IACH1H,KAAK0T,0BACR1T,KAAK0T,yBAA0B,EAC/B1T,KAAK2M,EAAU,QAAS,2CAEnB,KAKXgH,UAAW,WAIT,GAAIC,GAAc5L,EAAQ4L,WACtBA,IACF5T,KAAKoC,OAAOwR,EAAYnH,IAAKmH,EAAYxR,QAAQsL,WAIrDmG,iBAAkB,SAASnH,GACzB,GACGtF,EADH,CAKAsF,EAAUA,KAEV,IAAI+G,GAAc/G,EAAQoH,SAAW9T,KAAKyT,aAC1C,KAAKA,EACH,KAAM,IAAInO,GAAiB,kBAG7B,IAAImH,GAAMC,EAAQD,KAAOzM,KAAKyO,CAC9B,KAAKhC,EACH,KAAM,IAAInH,GAAiB,cAG7B,IAAIyO,GAASC,mBACTC,EAAK,EACTA,IAAM,YAAcF,EAAON,GAC3BQ,GAAM,QAAUF,EAAOtH,EAEvB,IAAIiC,GAAOhC,EAAQgC,MAAQ1O,KAAK6H,EAAe6G,IAC3CA,KACEA,EAAKrK,OAAM4P,GAAM,SAAWF,EAAOrF,EAAKrK,OACxCqK,EAAKwF,QAAOD,GAAM,UAAYF,EAAOrF,EAAKwF,QAGhD,IAAIC,GAAenU,KAAK6O,EAAiB7O,KAAKqO,EAAU5B,IAEpD2H,EAAShN,EAAUiN,cAAc,SACrCD,GAAOE,OAAQ,EACfF,EAAOG,IAAMJ,EAAe,yBAA2BF,GACtD7M,EAAUoN,MAAQpN,EAAUqN,MAAMC,YAAYN,KAIjDO,EAAoB,WAClB,GAAI5U,GAAOC,IACXA,MAAKsJ,GAAkB,EACvBsL,WAAW,WAET7U,EAAKuJ,GAAkB,KAI3BuL,EAAe,SAASC,EAAWpI,GAEjC,GAAIqI,GAAKlI,CAET,IAAK7M,KAAKkH,EAAV,CAEAwF,EAAUA,MAEVoI,EAAY,QAAUA,EAAU5R,OAAO,EAAG,GAAG8R,cAAgBF,EAAU5R,OAAO,GAE1EkE,EAAU6N,aACZF,EAAM3N,EAAU6N,YAAY,cAC5BF,EAAIG,UAAUJ,GAAW,GAAM,KAE/BC,EAAM3N,EAAU+N,oBAChBJ,EAAID,UAAYA,EAGlB,KAAKjI,IAAOH,GACNtB,EAAOsB,EAASG,KAClBkI,EAAIlI,GAAOH,EAAQG,GAGvB,IAAIzF,EAAU6N,YAEZ7N,EAAUgO,cAAcL,OAIxB,KACE3N,EAAUiO,UAAU,KAAON,EAAID,UAAUQ,cAAeP,GACxD,MAAO7U,OAYbqV,GAAyB,SAASC,GAChC,GAAIzV,GAAOC,IACX,OAAO,UAAS+U,GASd,GALAhV,EAAK0V,GAAmB,KAKpB1V,EAAKgK,IAAuBgL,EAAhC,CAEAhV,EAAKgK,EAAqBgL,CAM1B,IAAIW,EACJ,KACEA,EAASlK,EAAiBuJ,EAAIW,QAC9B,MAAOxV,GACPwV,EAAS,YAGX3V,EAAK+R,mBACH6D,SAAU,MAAQH,EAClBxS,QAAS0S,OAUfE,GAAuB,WACrB,GAAI7V,GAAOC,KACT6V,EAAmB,GAKrB,OAAO,UAASd,GACd,GAAIW,EACJ,KACEA,EAASX,EAAIW,OACb,MAAOxV,GAGP,OAEF,GAAI4V,GAAUJ,GAAUA,EAAOI,OAK/B,IACGA,IACY,UAAZA,GAAmC,aAAZA,GAA2BJ,EAAOK,mBAF5D,CAQA,GAAIC,GAAUjW,EAAK0V,EACdO,IACHjW,EAAKkW,GAAwB,SAASlB,GAExCmB,aAAaF,GACbjW,EAAK0V,GAAmBb,WAAW,WACjC7U,EAAK0V,GAAmB,MACvBI,MAUPM,GAAmB,SAASC,EAAMC,GAChC,GAAIC,GAAY3K,EAAS3L,KAAKgK,EAAUG,MACpCoM,EAAW5K,EAAS0K,GACpBG,EAAa7K,EAASyK,EAK1BpW,MAAKkK,EAAYmM,EAIbC,EAAUG,WAAaF,EAASE,UAAYH,EAAUI,OAASH,EAASG,OAC1EL,EAAKE,EAASI,UACZL,EAAUG,WAAaD,EAAWC,UAAYH,EAAUI,OAASF,EAAWE,OAC9EN,EAAOI,EAAWG,UAEpB3W,KAAK8R,mBACH6D,SAAU,aACVpT,MACE8T,GAAIA,EACJD,KAAMA,MAKZQ,EAAwB,WACtB,GAAI7W,GAAOC,IACXD,GAAK8W,GAA4BtQ,SAASvB,UAAUC,SAEpDsB,SAASvB,UAAUC,SAAW,WAC5B,MAAoB,kBAATjF,OAAuBA,KAAKsP,EAC9BvP,EAAK8W,GAA0BrQ,MAAMxG,KAAKyP,EAAUtJ,WAEtDpG,EAAK8W,GAA0BrQ,MAAMxG,KAAMmG,aAItDvE,EAA0B,WACpB5B,KAAK6W,KAEPtQ,SAASvB,UAAUC,SAAWjF,KAAK6W,KAQvCC,EAAqB,WAKnB,QAASC,GAAWC,GAClB,MAAO,UAASC,EAAI9W,GAKlB,IAAK,GADD8F,GAAO,GAAIiR,OAAM/Q,UAAUnF,QACtBL,EAAI,EAAGA,EAAIsF,EAAKjF,SAAUL,EACjCsF,EAAKtF,GAAKwF,UAAUxF,EAEtB,IAAIwW,GAAmBlR,EAAK,EAQ5B,OAPIa,GAAWqQ,KACblR,EAAK,GAAKlG,EAAKkP,KAAKkI,IAMlBH,EAAKxQ,MACAwQ,EAAKxQ,MAAMxG,KAAMiG,GAEjB+Q,EAAK/Q,EAAK,GAAIA,EAAK,KAOhC,QAASmR,GAAgBtX,GACvB,GAAIuX,GAAQrP,EAAQlI,IAAWkI,EAAQlI,GAAQkF,SAC3CqS,IAASA,EAAMC,gBAAkBD,EAAMC,eAAe,sBACxD1L,EACEyL,EACA,mBACA,SAASL,GACP,MAAO,UAASxB,EAASyB,EAAIM,EAASC,GAEpC,IACMP,GAAMA,EAAGQ,cACXR,EAAGQ,YAAc1X,EAAKkP,KAAKgI,EAAGQ,cAEhC,MAAOC,IAMT,GAAIC,GAAQC,EAAcC,CA6B1B,OA1BEhP,IACAA,EAAgByE,MACJ,gBAAXxN,GAAuC,SAAXA,KAI7B8X,EAAe7X,EAAKkW,GAAwB,SAC5C4B,EAAkB9X,EAAK+X,KACvBH,EAAS,SAAS5C,GAIhB,GAAKA,EAAL,CAEA,GAAID,EACJ,KACEA,EAAYC,EAAIhS,KAChB,MAAO7C,GAGP,OAEF,MAAkB,UAAd4U,EAA8B8C,EAAa7C,GACxB,aAAdD,EAAiC+C,EAAgB9C,GAArD,UAGFiC,EAAKjW,KACVf,KACAwV,EACAzV,EAAKkP,KAAKgI,EAAIjI,OAAW2I,GACzBJ,EACAC,KAINO,GAEFnM,EACEyL,EACA,sBACA,SAASL,GACP,MAAO,UAASjC,EAAKkC,EAAIM,EAASC,GAChC,IACEP,EAAKA,IAAOA,EAAG1H,EAAoB0H,EAAG1H,EAAoB0H,GAC1D,MAAO/W,IAGT,MAAO8W,GAAKjW,KAAKf,KAAM+U,EAAKkC,EAAIM,EAASC,KAG7CO,IAvGN,GAAIhY,GAAOC,KAEP+X,EAAkBhY,EAAK8J,EA2BvBhB,EAAkB7I,KAAK8H,EAAee,eA+E1C+C,GAAK5D,EAAS,aAAc+O,EAAYgB,GACxCnM,EAAK5D,EAAS,cAAe+O,EAAYgB,GACrC/P,EAAQgQ,uBACVpM,EACE5D,EACA,wBACA,SAASgP,GACP,MAAO,UAASiB,GACd,MAAOjB,GAAKjX,EAAKkP,KAAKgJ,MAG1BF,EAqCJ,KAAK,GA/BDG,IACF,cACA,SACA,OACA,mBACA,iBACA,oBACA,kBACA,cACA,aACA,qBACA,cACA,aACA,iBACA,eACA,kBACA,cACA,cACA,eACA,qBACA,SACA,YACA,eACA,gBACA,YACA,kBACA,SACA,iBACA,4BACA,wBAEOvX,EAAI,EAAGA,EAAIuX,EAAalX,OAAQL,IACvCyW,EAAgBc,EAAavX,KAajCwX,EAAwB,WAMtB,QAASC,GAASC,EAAMhL,GAClBgL,IAAQhL,IAAOvG,EAAWuG,EAAIgL,KAChCzM,EAAKyB,EAAKgL,EAAM,SAASrB,GACvB,MAAOjX,GAAKkP,KAAK+H,KARvB,GAAIjX,GAAOC,KACP6I,EAAkB7I,KAAK8H,EAAee,gBAEtCkP,EAAkBhY,EAAK8J,CAU3B,IAAIhB,EAAgBwE,KAAO,kBAAoBrF,GAAS,CACtD,GAAIsQ,GAAWtQ,EAAQuQ,gBAAkBvQ,EAAQuQ,eAAevT,SAChE4G,GACE0M,EACA,OACA,SAASE,GACP,MAAO,UAAStP,EAAQuI,GAYtB,MARI5G,GAAS4G,IAAQA,EAAIgH,QAAQ1Y,EAAK4H,UACpC3H,KAAK0Y,IACHxP,OAAQA,EACRuI,IAAKA,EACLkH,YAAa,OAIVH,EAAShS,MAAMxG,KAAMmG,aAGhC4R,GAGFnM,EACE0M,EACA,OACA,SAASM,GACP,MAAO,YAIL,QAASC,KACP,GAAIxL,EAAIqL,IAAkC,IAAnBrL,EAAIyL,WAAkB,CAC3C,IAGEzL,EAAIqL,GAAYC,YAActL,EAAI0L,OAClC,MAAO7Y,IAITH,EAAK+R,mBACH/O,KAAM,OACN4S,SAAU,MACVpT,KAAM8K,EAAIqL,MAMhB,IAAK,GArBDrL,GAAMrN,KAoBNgZ,GAAS,SAAU,UAAW,cACzBC,EAAI,EAAGA,EAAID,EAAMhY,OAAQiY,IAChCb,EAASY,EAAMC,GAAI5L,EAiBrB,OAdI,sBAAwBA,IAAOvG,EAAWuG,EAAI6L,oBAChDtN,EACEyB,EACA,qBACA,SAAS2J,GACP,MAAOjX,GAAKkP,KAAK+H,EAAMhI,OAAW6J,KAMtCxL,EAAI6L,mBAAqBL,EAGpBD,EAASpS,MAAMxG,KAAMmG,aAGhC4R,GAIAlP,EAAgBwE,KAAOxB,KACzBD,EACE5D,EACA,QACA,SAASmR,GACP,MAAO,YAKL,IAAK,GADDlT,GAAO,GAAIiR,OAAM/Q,UAAUnF,QACtBL,EAAI,EAAGA,EAAIsF,EAAKjF,SAAUL,EACjCsF,EAAKtF,GAAKwF,UAAUxF,EAGtB,IAEI8Q,GAFA2H,EAAanT,EAAK,GAClBiD,EAAS,KAeb,IAZ0B,gBAAfkQ,GACT3H,EAAM2H,EACG,WAAapR,IAAWoR,YAAsBpR,GAAQqR,SAC/D5H,EAAM2H,EAAW3H,IACb2H,EAAWlQ,SACbA,EAASkQ,EAAWlQ,SAGtBuI,EAAM,GAAK2H,EAIT3H,EAAIgH,QAAQ1Y,EAAK4H,QACnB,MAAOwR,GAAU3S,MAAMxG,KAAMiG,EAG3BA,GAAK,IAAMA,EAAK,GAAGiD,SACrBA,EAASjD,EAAK,GAAGiD,OAGnB,IAAIoQ,IACFpQ,OAAQA,EACRuI,IAAKA,EACLkH,YAAa,KAGf,OAAOQ,GACJ3S,MAAMxG,KAAMiG,GACZsT,KAAK,SAASC,GASb,MARAF,GAAUX,YAAca,EAAST,OAEjChZ,EAAK+R,mBACH/O,KAAM,OACN4S,SAAU,QACVpT,KAAM+W,IAGDE,IAER,SAAS,SAAS9B,GASjB,KAPA3X,GAAK+R,mBACH/O,KAAM,OACN4S,SAAU,QACVpT,KAAM+W,EACN1T,MAAO,UAGH8R,MAIdK,GAMAlP,EAAgByE,KAAOtN,KAAKkH,IAC1BE,EAAUiJ,kBACZjJ,EAAUiJ,iBAAiB,QAAStQ,EAAKkW,GAAwB,UAAU,GAC3E7O,EAAUiJ,iBAAiB,WAAYtQ,EAAK+X,MAAyB,IAC5D1Q,EAAUqS,cAEnBrS,EAAUqS,YAAY,UAAW1Z,EAAKkW,GAAwB,UAC9D7O,EAAUqS,YAAY,aAAc1Z,EAAK+X,OAQ7C,IAAI4B,GAAS1R,EAAQ0R,OACjBC,EAAsBD,GAAUA,EAAOE,KAAOF,EAAOE,IAAIC,QACzDC,GACDH,GACD3R,EAAQ+R,SACRA,QAAQC,WACRD,QAAQE,YACV,IAAIpR,EAAgBoB,UAAY6P,EAAwB,CAEtD,GAAII,GAAgBlS,EAAQmS,UAC5BnS,GAAQmS,WAAa,WACnB,GAAIC,GAAcra,EAAKiK,EAAUG,IAGjC,IAFApK,EAAKsa,GAAkBta,EAAKmK,EAAWkQ,GAEnCF,EACF,MAAOA,GAAc1T,MAAMxG,KAAMmG,WAIrC,IAAImU,GAA6B,SAASC,GAGxC,MAAO,YACL,GAAI9I,GAAMtL,UAAUnF,OAAS,EAAImF,UAAU,GAAK6I,MAQhD,OALIyC,IAEF1R,EAAKsa,GAAkBta,EAAKmK,EAAWuH,EAAM,IAGxC8I,EAAiB/T,MAAMxG,KAAMmG,YAIxCyF,GAAKmO,QAAS,YAAaO,EAA4BvC,GACvDnM,EAAKmO,QAAS,eAAgBO,EAA4BvC,GAG5D,GAAIlP,EAAgBlD,SAAW,WAAaqC,IAAWrC,QAAQ6U,IAAK,CAElE,GAAIC,GAAwB,SAASrU,EAAK7D,GACxCxC,EAAK+R,mBACH9O,QAASoD,EACTR,MAAOrD,EAAKqD,MACZ+P,SAAU,YAId3K,IAAM,QAAS,OAAQ,OAAQ,QAAS,OAAQ,SAAS6J,EAAGjP,GAC1DqG,EAAkBtG,QAASC,EAAO6U,OAKxCC,EAAkB,WAGhB,IADA,GAAIC,GACG3a,KAAK6J,EAAiB7I,QAAQ,CACnC2Z,EAAU3a,KAAK6J,EAAiBuI,OAEhC,IAAIL,GAAM4I,EAAQ,GAChBtW,EAAOsW,EAAQ,GACf3D,EAAO2D,EAAQ,EAEjB5I,GAAI1N,GAAQ2S,IAIhB4D,EAAiB,WAEf,IAAK,GAAI1R,KAAUlJ,MAAK0J,EACtB1J,KAAKyJ,EAAiBP,GAAUlJ,KAAK0J,EAAwBR,IAIjE2R,EAAe,WACb,GAAI9a,GAAOC,IAGXgL,GAAKhL,KAAK2J,EAAU,SAASkL,EAAGxC,GAC9B,GAAIyI,GAAYzI,EAAO,GACnBpM,EAAOoM,EAAO,EAClByI,GAAUtU,MAAMzG,GAAOA,GAAMgb,OAAO9U,OAIxC+U,EAAW,SAASC,GAClB,GAAIC,GAAI9O,EAAWvJ,KAAKoY,GACtBxO,KACA9L,EAAI,CAEN,KACE,KAAOA,KAAK8L,EAAIP,EAAQvL,IAAMua,EAAEva,IAAM,GACtC,MAAOT,GACP,KAAM,IAAIoF,GAAiB,gBAAkB2V,GAG/C,GAAIxO,EAAImC,OAAS5O,KAAK8H,EAAeqT,eACnC,KAAM,IAAI7V,GACR,iFAIJ,OAAOmH,IAGT2O,EAAkB,SAAShN,GAEzB,GAAI+F,GAAe,KAAO/F,EAAIsI,MAAQtI,EAAIiN,KAAO,IAAMjN,EAAIiN,KAAO,GAKlE,OAHIjN,GAAIqI,WACNtC,EAAe/F,EAAIqI,SAAW,IAAMtC,GAE/BA,GAGTmH,EAAyB,WAElBtb,KAAKsJ,GACRtJ,KAAK6Q,EAAiBrK,MAAMxG,KAAMmG,YAItCoV,EAAkB,SAASC,EAAW9O,GACpC,GAAIgF,GAAS1R,KAAK2R,EAAe6J,EAAW9O,EAE5C1M,MAAKyb,EAAc,UACjBD,UAAWA,EACX9O,QAASA,IAGX1M,KAAK0b,GACHF,EAAUnX,KACVmX,EAAUxY,QACVwY,EAAU/J,IACV+J,EAAUG,OACVjK,EACAhF,IAIJkP,EAAgB,SAASJ,EAAW9O,GAClC,GAAI3M,GAAOC,KACP0R,IACJ,IAAI8J,EAAU7K,OAAS6K,EAAU7K,MAAM3P,SACrCgK,EAAKwQ,EAAU7K,MAAO,SAAShQ,EAAGgQ,GAChC,GAAIkL,GAAQ9b,EAAK+b,GAAgBnL,EAAO6K,EAAU/J,IAC9CoK,IACFnK,EAAO3E,KAAK8O,KAKZnP,GAAWA,EAAQ8D,gBACrB,IAAK,GAAIyI,GAAI,EAAGA,EAAIvM,EAAQ8D,gBAAkByI,EAAIvH,EAAO1Q,OAAQiY,IAC/DvH,EAAOuH,GAAG8C,QAAS,CAKzB,OADArK,GAASA,EAAOxL,MAAM,EAAGlG,KAAK8H,EAAec,kBAI/CoT,GAAiB,SAASH,EAAOI,GAE/B,GAAIC,IACFC,SAAUN,EAAMpK,IAChBkK,OAAQE,EAAMO,KACdC,MAAOR,EAAMS,OACbC,WAAUV,EAAM9M,MAAQ,IAuB1B,OAfK8M,GAAMpK,MACTyK,EAAWC,SAAWF,GAGxBC,EAAWH,SAGN/b,KAAK8H,EAAeQ,aAAagJ,OACjCtR,KAAK8H,EAAeQ,aAAagJ,KAAK4K,EAAWC,WAEpD,qBAAqB7K,KAAK4K,EAAW,cAErC,qBAAqB5K,KAAK4K,EAAWC,WAGhCD,GAGTM,GAAmB,SAASzZ,EAAMC,EAASwO,EAASmK,EAAQjK,EAAQhF,GAClE,GAAI+P,IAAmB1Z,EAAOA,EAAO,KAAO,KAAOC,GAAW,GAC9D,KACIhD,KAAK8H,EAAeK,aAAamJ,OAClCtR,KAAK8H,EAAeK,aAAamJ,KAAKtO,KACrChD,KAAK8H,EAAeK,aAAamJ,KAAKmL,GAH1C,CAQA,GAAIhM,EAoBJ,IAlBIiB,GAAUA,EAAO1Q,QACnBwQ,EAAUE,EAAO,GAAGyK,UAAY3K,EAGhCE,EAAOE,UACPnB,GAAciB,OAAQA,IACbF,IACTf,GACEiB,SAEIyK,SAAU3K,EACVmK,OAAQA,EACRI,QAAQ,QAOZ/b,KAAK8H,EAAeM,WAAWkJ,OACjCtR,KAAK8H,EAAeM,WAAWkJ,KAAKE,OAMlCxR,KAAK8H,EAAeO,cAAciJ,MACnCtR,KAAK8H,EAAeO,cAAciJ,KAAKE,IAF1C,CAOA,GAAIjP,GAAO0I,GAGPvI,WACEC,SAEII,KAAMA,EACND,MAAOE,EACPyN,WAAYA,KAIlBiM,QAASlL,GAEX9E,EAIF1M,MAAK6R,EAAMtP,MAGboa,GAAa,SAASpa,GAGpB,GAAI2K,GAAMlN,KAAK8H,EAAeY,gBAI9B,IAHInG,EAAKS,UACPT,EAAKS,QAAUkI,EAAS3I,EAAKS,QAASkK,IAEpC3K,EAAKG,UAAW,CAClB,GAAIA,GAAYH,EAAKG,UAAUC,OAAO,EACtCD,GAAUI,MAAQoI,EAASxI,EAAUI,MAAOoK,GAG9C,GAAI0P,GAAUra,EAAKqa,OAanB,OAZIA,KACEA,EAAQnL,MACVmL,EAAQnL,IAAMvG,EAAS0R,EAAQnL,IAAKzR,KAAK8H,EAAea,eAEtDiU,EAAQC,UACVD,EAAQC,QAAU3R,EAAS0R,EAAQC,QAAS7c,KAAK8H,EAAea,gBAIhEpG,EAAKua,aAAeva,EAAKua,YAAYna,QACvC3C,KAAK+c,GAAiBxa,EAAKua,aAEtBva,GAMTya,GAAkB,SAASF,GAQzB,IAAK,GAJHG,GACAjL,EACAzP,EAHE2a,GAAY,KAAM,OAAQ,OAKrBvc,EAAI,EAAGA,EAAImc,EAAYna,OAAO3B,SAAUL,EAE/C,GADAqR,EAAQ8K,EAAYna,OAAOhC,GAExBqR,EAAMsF,eAAe,SACrB3M,EAASqH,EAAMzP,QAChB4I,EAAa6G,EAAMzP,MAHrB,CAOAA,EAAO0I,KAAgB+G,EAAMzP,KAC7B,KAAK,GAAI0W,GAAI,EAAGA,EAAIiE,EAASlc,SAAUiY,EACrCgE,EAAUC,EAASjE,GACf1W,EAAK+U,eAAe2F,IAAY1a,EAAK0a,KACvC1a,EAAK0a,GAAW/R,EAAS3I,EAAK0a,GAAUjd,KAAK8H,EAAea,cAGhEmU,GAAYna,OAAOhC,GAAG4B,KAAOA,IAIjC4a,GAAc,WACZ,GAAKnd,KAAKqH,GAAkBrH,KAAKkH,EAAjC,CACA,GAAIkW,KAkBJ,OAhBIpd,MAAKqH,GAAiBC,EAAW+V,YACnCD,EAAS7U,SACP+U,aAAchR,UAAU+Q,YAKxBrV,EAAQiC,UAAYjC,EAAQiC,SAASE,OACvCiT,EAAS3L,IAAMzJ,EAAQiC,SAASE,MAG9BnK,KAAKkH,GAAgBE,EAAUmW,WAC5BH,EAAS7U,UAAS6U,EAAS7U,YAChC6U,EAAS7U,QAAQsU,QAAUzV,EAAUmW,UAGhCH,IAGTI,EAAe,WACbxd,KAAKyd,GAAmB,EACxBzd,KAAK0d,GAAgB,MAGvBC,GAAgB,WACd,MAAO3d,MAAKyd,IAAoB/W,IAAQ1G,KAAK0d,GAAgB1d,KAAKyd,IAYpEG,GAAe,SAASC,GACtB,GAAIC,GAAO9d,KAAKwH,CAEhB,UACGsW,GACDD,EAAQ7a,UAAY8a,EAAK9a,SACzB6a,EAAQnB,UAAYoB,EAAKpB,WAKvBmB,EAAQpN,YAAcqN,EAAKrN,WACtB/E,EAAiBmS,EAAQpN,WAAYqN,EAAKrN,aACxCoN,EAAQnb,YAAaob,EAAKpb,WAE5B+I,EAAgBoS,EAAQnb,UAAWob,EAAKpb,aAMnDqb,GAAkB,SAASnB,GAEzB,IAAI5c,KAAKge,KAAT,CAIA,GAAIjF,GAAS6D,EAAQ7D,MAKrB,IAAiB,MAAXA,GAA6B,MAAXA,GAA6B,MAAXA,EAA1C,CAEA,GAAIkF,EACJ,KAIIA,EADEpS,IACM+Q,EAAQrU,QAAQ2V,IAAI,eAEpBtB,EAAQuB,kBAAkB,eAIpCF,EAA8B,IAAtBG,SAASH,EAAO,IACxB,MAAO/d,IAITF,KAAKyd,GAAmBQ,EAEpBA,EAEwB,EAAxBje,KAAKyd,IAAwB,IAEjCzd,KAAK0d,GAAgBhX,OAGvB2X,EAAO,SAAS9b,GACd,GAAIqK,GAAgB5M,KAAK8H,EAErBwW,GACAC,QAASve,KAAK4H,EACdtB,OAAQsG,EAActG,OACtBkY,SAAU,cAEZpB,EAAWpd,KAAKye,IAsDlB,IApDIrB,IACFkB,EAAS1B,QAAUQ,GAIjB7a,EAAKiO,sBAAuBjO,GAAKiO,eAErCjO,EAAO0I,EAAYqT,EAAU/b,GAG7BA,EAAKoQ,KAAO1H,EAAYA,KAAgBjL,KAAK6H,EAAe8K,MAAOpQ,EAAKoQ,MACxEpQ,EAAKN,MAAQgJ,EAAYA,KAAgBjL,KAAK6H,EAAe5F,OAAQM,EAAKN,OAG1EM,EAAKN,MAAM,oBAAsByE,IAAQ1G,KAAK4J,EAE1C5J,KAAK8J,GAAgB9J,KAAK8J,EAAa9I,OAAS,IAGlDuB,EAAKua,aACHna,UAAWuD,MAAMnF,KAAKf,KAAK8J,EAAc,KAIzC9J,KAAK6H,EAAe6G,OAEtBnM,EAAKmM,KAAO1O,KAAK6H,EAAe6G,MAI9B9B,EAAcoG,cAAazQ,EAAKyQ,YAAcpG,EAAcoG,aAG5DpG,EAAc7E,UAASxF,EAAKwF,QAAU6E,EAAc7E,SAGpD6E,EAAc8R,aAAYnc,EAAKoc,YAAc/R,EAAc8R,YAE/Dnc,EAAOvC,KAAK4e,GAAcrc,GAG1BwC,OAAOmM,KAAK3O,GAAMsc,QAAQ,SAAShS,IAChB,MAAbtK,EAAKsK,IAA8B,KAAdtK,EAAKsK,IAAe9B,EAAcxI,EAAKsK,YACvDtK,GAAKsK,KAIZ/F,EAAW8F,EAAcsG,gBAC3B3Q,EAAOqK,EAAcsG,aAAa3Q,IAASA,GAIxCA,IAAQwI,EAAcxI,MAMzBuE,EAAW8F,EAAcyG,qBACxBzG,EAAcyG,mBAAmB9Q,IAOpC,MAAIvC,MAAKge,SACPhe,MAAK2M,EAAU,OAAQ,uCAAwCpK,QAIzB,gBAA7BqK,GAAc7D,WACnBkE,KAAK6R,SAAWlS,EAAc7D,YAChC/I,KAAK+e,GAAsBxc,GAG7BvC,KAAK+e,GAAsBxc,KAI/Byc,GAAe,SAASzc,GACtB,MAAOyJ,GAASzJ,EAAMvC,KAAK8H,EAAekB,eAG5CiW,GAAU,WACR,MAAO1T,MAGT2T,GAAuB,SAAS3c,EAAMsD,GACpC,GAAI9F,GAAOC,KACP4M,EAAgB5M,KAAK8H,CAEzB,IAAK9H,KAAK2N,UAAV,CAQA,GALApL,EAAOvC,KAAKmf,GAAY5c,IAKnBvC,KAAK8H,EAAesX,iBAAmBpf,KAAKqf,GAAc9c,GAE7D,WADAvC,MAAK2M,EAAU,OAAQ,+BAAgCpK,EAOzDvC,MAAKyH,EAAelF,EAAK+c,WAAa/c,EAAK+c,SAAWtf,KAAKuf,MAG3Dvf,KAAKwH,EAAYjF,EAEjBvC,KAAK2M,EAAU,QAAS,uBAAwBpK,EAEhD,IAAIid,IACFC,eAAgB,IAChBC,cAAe,YAAc1f,KAAKuM,QAClCoT,WAAY3f,KAAK2H,EAGf3H,MAAK2O,IACP6Q,EAAKI,cAAgB5f,KAAK2O,EAG5B,IAAIjM,GAAYH,EAAKG,WAAaH,EAAKG,UAAUC,OAAO,EAItD3C,MAAK8H,EAAee,iBACpB7I,KAAK8H,EAAee,gBAAgB0E,QAEpCvN,KAAK8R,mBACH6D,SAAU,SACV3S,QAASN,GACJA,EAAUK,KAAOL,EAAUK,KAAO,KAAO,IAAML,EAAUI,MAC1DP,EAAKS,QACTsc,SAAU/c,EAAK+c,SACf1Z,MAAOrD,EAAKqD,OAAS,SAIzB,IAAI6L,GAAMzR,KAAK8O,GACdlC,EAAc2G,WAAavT,KAAK6f,IAAc9e,KAAKf,MAClDyR,IAAKA,EACL+N,KAAMA,EACNjd,KAAMA,EACNmK,QAASE,EACTkT,UAAW,WACT/f,EAAKqK,IAELrK,EAAK0b,EAAc,WACjBlZ,KAAMA,EACNgS,IAAK9C,IAEP5L,GAAYA,KAEdka,QAAS,SAAiBpc,GACxB5D,EAAK4M,EAAU,QAAS,mCAAoChJ,GAExDA,EAAMiZ,SACR7c,EAAKigB,GAAiBrc,EAAMiZ,SAG9B7c,EAAK0b,EAAc,WACjBlZ,KAAMA,EACNgS,IAAK9C,IAEP9N,EAAQA,GAAS,GAAI/C,OAAM,sDAC3BiF,GAAYA,EAASlC,QAK3Bsc,GAAc,SAASC,GAErB,GAAIzO,GAAMyO,EAAKzO,IAAM,IAAMnG,EAAU4U,EAAKV,MAEtCW,EAAmB,KACnBC,IAUJ,IARIF,EAAKxT,QAAQnE,UACf4X,EAAmBngB,KAAKqgB,GAAcH,EAAKxT,QAAQnE,UAGjD2X,EAAKxT,QAAQ4T,kBACfF,EAA2BpgB,KAAKqgB,GAAcH,EAAKxT,QAAQ4T,kBAGzDzU,IAAiB,CACnBuU,EAAyB3L,KAAOxN,EAAUiZ,EAAK3d,KAE/C,IAAIge,GAAsBtV,KAAgBjL,KAAKiJ,GAC3CuX,EAAevV,EAAYsV,EAAqBH,EAMpD,OAJID,KACFK,EAAajY,QAAU4X,GAGlBnY,EACJyY,MAAMhP,EAAK+O,GACXjH,KAAK,SAASC,GACb,GAAIA,EAASkH,GACXR,EAAKJ,WAAaI,EAAKJ,gBAClB,CACL,GAAInc,GAAQ,GAAI/C,OAAM,sBAAwB4Y,EAAST,OAGvDpV,GAAMiZ,QAAUpD,EAChB0G,EAAKH,SAAWG,EAAKH,QAAQpc,MAGhC,SAAS,WACRuc,EAAKH,SACHG,EAAKH,QAAQ,GAAInf,OAAM,6CAI/B,GAAIgc,GAAU5U,EAAQuQ,gBAAkB,GAAIvQ,GAAQuQ,cACpD,IAAKqE,EAAL,CAGA,GAAI+D,GAAU,mBAAqB/D,IAAqC,mBAAnBgE,eAEhDD,KAED,mBAAqB/D,GACvBA,EAAQ1D,mBAAqB,WAC3B,GAA2B,IAAvB0D,EAAQ9D,WAEL,GAAuB,MAAnB8D,EAAQ7D,OACjBmH,EAAKJ,WAAaI,EAAKJ,gBAClB,IAAII,EAAKH,QAAS,CACvB,GAAIrI,GAAM,GAAI9W,OAAM,sBAAwBgc,EAAQ7D,OACpDrB,GAAIkF,QAAUA,EACdsD,EAAKH,QAAQrI,MAIjBkF,EAAU,GAAIgE,gBAGdnP,EAAMA,EAAIoP,QAAQ,WAAY,IAG1BX,EAAKJ,YACPlD,EAAQkE,OAASZ,EAAKJ,WAEpBI,EAAKH,UACPnD,EAAQlZ,QAAU,WAChB,GAAIgU,GAAM,GAAI9W,OAAM,oCACpB8W,GAAIkF,QAAUA,EACdsD,EAAKH,QAAQrI,MAKnBkF,EAAQmE,KAAK,OAAQtP,GAEjB0O,GACFnV,EAAKmV,EAAkB,SAAStT,EAAK/J,GACnC8Z,EAAQoE,iBAAiBnU,EAAK/J,KAIlC8Z,EAAQqE,KAAKha,EAAUiZ,EAAK3d,UAG9B2e,GAAe,SAASC,GACtB,GAAIC,KAEJ,KAAK,GAAIvU,KAAOsU,GACd,GAAIA,EAAK7J,eAAezK,GAAM,CAC5B,GAAI/J,GAAQqe,EAAKtU,EACjBuU,GAAUvU,GAAwB,kBAAV/J,GAAuBA,IAAUA,EAI7D,MAAOse,IAGTC,EAAW,SAASzb,GAGhB5F,KAAK0J,EAAwB9D,KAC5B5F,KAAKwM,OAASxM,KAAK8H,EAAe0E,QAGnCjG,SAASvB,UAAUwB,MAAMzF,KACvBf,KAAK0J,EAAwB9D,GAC7B5F,KAAKyJ,KACFvD,MAAMnF,KAAKoF,UAAW,KAK/Bmb,EAAe,SAASzU,EAAK9I,GACvBoD,EAAYpD,SACP/D,MAAK6H,EAAegF,GAE3B7M,KAAK6H,EAAegF,GAAO5B,EAAYjL,KAAK6H,EAAegF,OAAY9I,KAM7E9D,EAAM+E,UAAUuc,QAAUthB,EAAM+E,UAAUuN,eAC1CtS,EAAM+E,UAAUwc,kBAAoBvhB,EAAM+E,UAAUiO,WAEpDxT,EAAOD,QAAUS,IAEdc,KAAKf,KAAuB,mBAAXF,QAAyBA,OAAyB,mBAATC,MAAuBA,KAAyB,mBAAXF,QAAyBA,aACxH4hB,GAAK,GAAGC,GAAK,GAAGrc,EAAI,EAAEG,EAAI,EAAEnC,EAAI,EAAEse,EAAI,IAAIve,GAAG,SAASlC,EAAQzB,EAAOD,IACxE,SAAWM,GAOX,GAAI8hB,GAAmB1gB,EAAQ,GAG3B8G,EACgB,mBAAXnI,QACHA,OACkB,mBAAXC,GAAyBA,EAAyB,mBAATC,MAAuBA,QACzE8hB,EAAS7Z,EAAQ/H,MAEjBA,EAAQ,GAAI2hB,EAQhB3hB,GAAM6hB,WAAa,WAEjB,MADA9Z,GAAQ/H,MAAQ4hB,EACT5hB,GAGTA,EAAM0T,YAENlU,EAAOD,QAAUS,EAoCjBR,EAAOD,QAAQuiB,OAASH,IAErB7gB,KAAKf,KAAuB,mBAAXF,QAAyBA,OAAyB,mBAATC,MAAuBA,KAAyB,mBAAXF,QAAyBA,aACxH4G,EAAI,IAAIpD,GAAG,SAASnC,EAAQzB,EAAOD,IACtC,SAAWM,GAQX,QAAS6K,GAASqX,GAChB,MAAuB,gBAATA,IAA8B,OAATA,EAKrC,QAAStX,GAAQ5H,GACf,OAAQiC,OAAOC,UAAUC,SAASlE,KAAK+B,IACrC,IAAK,iBACH,OAAO,CACT,KAAK,qBACH,OAAO,CACT,KAAK,wBACH,OAAO,CACT,SACE,MAAOA,aAAiBlC,QAI9B,QAAS2J,GAAazH,GACpB,MAAiD,wBAA1CiC,OAAOC,UAAUC,SAASlE,KAAK+B,GAGxC,QAAS0H,GAAW1H,GAClB,MAAiD,sBAA1CiC,OAAOC,UAAUC,SAASlE,KAAK+B,GAGxC,QAAS2H,GAAe3H,GACtB,MAAiD,0BAA1CiC,OAAOC,UAAUC,SAASlE,KAAK+B,GAGxC,QAASqE,GAAY6a,GACnB,MAAgB,UAATA,EAGT,QAASlb,GAAWkb,GAClB,MAAuB,kBAATA,GAGhB,QAASpX,GAAcoX,GACrB,MAAgD,oBAAzCjd,OAAOC,UAAUC,SAASlE,KAAKihB,GAGxC,QAASnX,GAASmX,GAChB,MAAgD,oBAAzCjd,OAAOC,UAAUC,SAASlE,KAAKihB,GAGxC,QAASlX,GAAQkX,GACf,MAAgD,mBAAzCjd,OAAOC,UAAUC,SAASlE,KAAKihB,GAGxC,QAASjX,GAAciX,GACrB,IAAKpX,EAAcoX,GAAO,OAAO,CAEjC,KAAK,GAAInN,KAAKmN,GACZ,GAAIA,EAAK1K,eAAezC,GACtB,OAAO,CAGX,QAAO,EAGT,QAASoN,KACP,IAEE,MADA,IAAIC,YAAW,KACR,EACP,MAAOhiB,GACP,OAAO,GAIX,QAASiiB,KACP,IAEE,MADA,IAAIC,UAAS,KACN,EACP,MAAOliB,GACP,OAAO,GAIX,QAASmiB,KACP,IAEE,MADA,IAAIC,cAAa,KACV,EACP,MAAOpiB,GACP,OAAO,GAIX,QAAS2L,KACP,KAAM,SAAW7D,IAAU,OAAO,CAElC,KAIE,MAHA,IAAIua,SACJ,GAAIlJ,SAAQ,IACZ,GAAImJ,WACG,EACP,MAAOtiB,GACP,OAAO,GAQX,QAASmJ,KACP,IAAKwC,IAAiB,OAAO,CAE7B,KAKE,MAHA,IAAIwN,SAAQ,cACVjQ,eAAgB,YAEX,EACP,MAAOlJ,GACP,OAAO,GAIX,QAASuiB,KACP,MAAwC,kBAA1BC,uBAGhB,QAASpgB,GAAgBuD,GACvB,QAASqN,GAAa3Q,EAAMsE,GAC1B,GAAI8b,GAAiB9c,EAAStD,IAASA,CACvC,OAAIsE,GACKA,EAAS8b,IAAmBA,EAE9BA,EAGT,MAAOzP,GAGT,QAASlI,GAAK+G,EAAKlM,GACjB,GAAIlF,GAAGsY,CAEP,IAAI9R,EAAY4K,EAAI/Q,QAClB,IAAKL,IAAKoR,GACJ3G,EAAO2G,EAAKpR,IACdkF,EAAS9E,KAAK,KAAMJ,EAAGoR,EAAIpR,QAK/B,IADAsY,EAAIlH,EAAI/Q,OAEN,IAAKL,EAAI,EAAGA,EAAIsY,EAAGtY,IACjBkF,EAAS9E,KAAK,KAAMJ,EAAGoR,EAAIpR,IAMnC,QAASsK,GAAY2X,EAAMC,GACzB,MAAKA,IAGL7X,EAAK6X,EAAM,SAAShW,EAAK/J,GACvB8f,EAAK/V,GAAO/J,IAEP8f,GALEA,EAgBX,QAASzX,GAAa4G,GACpB,QAAKhN,OAAO+d,UAGL/d,OAAO+d,SAAS/Q,GAGzB,QAAS7G,GAAS+P,EAAK/N,GACrB,GAAmB,gBAARA,GACT,KAAM,IAAItM,OAAM,yDAElB,OAAmB,gBAARqa,IAA4B,IAAR/N,EACtB+N,EAEFA,EAAIja,QAAUkM,EAAM+N,EAAMA,EAAI/X,OAAO,EAAGgK,GAAO,IAUxD,QAAS9B,GAAO2X,EAAQlW,GACtB,MAAO9H,QAAOC,UAAUsS,eAAevW,KAAKgiB,EAAQlW,GAGtD,QAASxB,GAAW2X,GAQlB,IALA,GAGEC,GAHEC,KACFviB,EAAI,EACJwiB,EAAMH,EAAShiB,OAGVL,EAAIwiB,EAAKxiB,IACdsiB,EAAUD,EAASriB,GACfkK,EAASoY,GAGXC,EAAQnW,KAAKkW,EAAQpC,QAAQ,8BAA+B,SACnDoC,GAAWA,EAAQG,QAE5BF,EAAQnW,KAAKkW,EAAQG,OAIzB,OAAO,IAAIC,QAAOH,EAAQI,KAAK,KAAM,KAGvC,QAAShY,GAAU/K,GACjB,GAAIgjB,KAIJ,OAHAvY,GAAKzK,EAAG,SAASsM,EAAK/J,GACpBygB,EAAMxW,KAAKiH,mBAAmBnH,GAAO,IAAMmH,mBAAmBlR,MAEzDygB,EAAMD,KAAK,KAMpB,QAAS3X,GAAS8F,GAChB,GAAmB,gBAARA,GAAkB,QAC7B,IAAI+R,GAAQ/R,EAAI+R,MAAM,kEAGlBC,EAAQD,EAAM,IAAM,GACpBE,EAAWF,EAAM,IAAM,EAC3B,QACE/M,SAAU+M,EAAM,GAChB9M,KAAM8M,EAAM,GACZjV,KAAMiV,EAAM,GACZ7M,SAAU6M,EAAM,GAAKC,EAAQC,GAGjC,QAASnY,KACP,GAAIoY,GAAS3b,EAAQ2b,QAAU3b,EAAQ4b,QAEvC,KAAKzc,EAAYwc,IAAWA,EAAOE,gBAAiB,CAGlD,GAAIC,GAAM,GAAIC,aAAY,EAC1BJ,GAAOE,gBAAgBC,GAGvBA,EAAI,GAAe,KAATA,EAAI,GAAc,MAE5BA,EAAI,GAAe,MAATA,EAAI,GAAe,KAE7B,IAAIE,GAAM,SAASC,GAEjB,IADA,GAAIC,GAAID,EAAIhf,SAAS,IACdif,EAAEljB,OAAS,GAChBkjB,EAAI,IAAMA,CAEZ,OAAOA,GAGT,OACEF,GAAIF,EAAI,IACRE,EAAIF,EAAI,IACRE,EAAIF,EAAI,IACRE,EAAIF,EAAI,IACRE,EAAIF,EAAI,IACRE,EAAIF,EAAI,IACRE,EAAIF,EAAI,IACRE,EAAIF,EAAI,IAIV,MAAO,mCAAmCjD,QAAQ,QAAS,SAASsD,GAClE,GAAI9jB,GAAqB,GAAhB4M,KAAK6R,SAAiB,EAC7BoF,EAAU,MAANC,EAAY9jB,EAAS,EAAJA,EAAW,CAClC,OAAO6jB,GAAEjf,SAAS,MAYxB,QAASuG,GAAiB4Y,GAWxB,IATA,GAOEC,GAPEC,EAAsB,EACxBC,EAAiB,GACjBC,KACAC,EAAS,EACTtB,EAAM,EACNuB,EAAY,MACZC,EAAYD,EAAU1jB,OAGjBojB,GAAQK,IAAWH,IACxBD,EAAUO,EAAoBR,KAMhB,SAAZC,GACCI,EAAS,GAAKtB,EAAMqB,EAAIxjB,OAAS2jB,EAAYN,EAAQrjB,QAAUujB,KAKlEC,EAAIzX,KAAKsX,GAETlB,GAAOkB,EAAQrjB,OACfojB,EAAOA,EAAKS,UAGd,OAAOL,GAAI5S,UAAU0R,KAAKoB,GAS5B,QAASE,GAAoBR,GAC3B,GACEU,GACAC,EACAlY,EACAmY,EACArkB,EALE6jB,IAOJ,KAAKJ,IAASA,EAAKtO,QACjB,MAAO,EAST,IANA0O,EAAIzX,KAAKqX,EAAKtO,QAAQR,eAClB8O,EAAKlc,IACPsc,EAAIzX,KAAK,IAAMqX,EAAKlc,IAGtB4c,EAAYV,EAAKU,UACbA,GAAaja,EAASia,GAExB,IADAC,EAAUD,EAAU3Y,MAAM,OACrBxL,EAAI,EAAGA,EAAIokB,EAAQ/jB,OAAQL,IAC9B6jB,EAAIzX,KAAK,IAAMgY,EAAQpkB,GAG3B,IAAIskB,IAAiB,OAAQ,OAAQ,QAAS,MAC9C,KAAKtkB,EAAI,EAAGA,EAAIskB,EAAcjkB,OAAQL,IACpCkM,EAAMoY,EAActkB,GACpBqkB,EAAOZ,EAAKc,aAAarY,GACrBmY,GACFR,EAAIzX,KAAK,IAAMF,EAAM,KAAOmY,EAAO,KAGvC,OAAOR,GAAIlB,KAAK,IAMlB,QAAS6B,GAAgB1kB,EAAG2kB,GAC1B,WAAY3kB,IAAM2kB,GAMpB,QAASC,GAAgB5kB,EAAG2kB,GAC1B,MAAOje,GAAY1G,IAAM0G,EAAYie,GAMvC,QAAS3Z,GAAgBqF,EAAKwU,GAC5B,OAAIH,EAAgBrU,EAAKwU,KAEzBxU,EAAMA,EAAInO,OAAO,GACjB2iB,EAAMA,EAAI3iB,OAAO,GAEbmO,EAAI/N,OAASuiB,EAAIviB,MAAQ+N,EAAIhO,QAAUwiB,EAAIxiB,SAG3CuiB,EAAgBvU,EAAIL,WAAY6U,EAAI7U,aAEjC/E,EAAiBoF,EAAIL,WAAY6U,EAAI7U,cAM9C,QAAS/E,GAAiB6Z,EAAQC,GAChC,GAAIL,EAAgBI,EAAQC,GAAS,OAAO,CAE5C,IAAIC,GAAUF,EAAO7T,OACjBgU,EAAUF,EAAO9T,MAGrB,IAAI+T,EAAQzkB,SAAW0kB,EAAQ1kB,OAAQ,OAAO,CAI9C,KAAK,GADDP,GAAG2kB,EACEzkB,EAAI,EAAGA,EAAI8kB,EAAQzkB,OAAQL,IAGlC,GAFAF,EAAIglB,EAAQ9kB,GACZykB,EAAIM,EAAQ/kB,GAEVF,EAAE0b,WAAaiJ,EAAEjJ,UACjB1b,EAAEkb,SAAWyJ,EAAEzJ,QACflb,EAAE4b,QAAU+I,EAAE/I,OACd5b,EAAE,cAAgB2kB,EAAE,YAEpB,OAAO,CAEX,QAAO,EAUT,QAASxZ,GAAKmG,EAAK1N,EAAMshB,EAAaC,GACpC,GAAW,MAAP7T,EAAJ,CACA,GAAIiF,GAAOjF,EAAI1N,EACf0N,GAAI1N,GAAQshB,EAAY3O,GACxBjF,EAAI1N,GAAMiL,GAAY,EACtByC,EAAI1N,GAAMoL,EAAWuH,EACjB4O,GACFA,EAAM7Y,MAAMgF,EAAK1N,EAAM2S,KAU3B,QAAS3Q,GAASwf,EAAOC,GACvB,IAAKhb,EAAQ+a,GAAQ,MAAO,EAI5B,KAAK,GAFDE,MAEKplB,EAAI,EAAGA,EAAIklB,EAAM7kB,OAAQL,IAChC,IACEolB,EAAOhZ,KAAKiZ,OAAOH,EAAMllB,KACzB,MAAOT,GACP6lB,EAAOhZ,KAAK,gCAIhB,MAAOgZ,GAAOzC,KAAKwC,GASrB,QAASG,GAAWnjB,GAClB,QAASojB,UAAUpjB,GAAOqJ,MAAM,SAASnL,OAG3C,QAASmlB,GAASrjB,GAChB,MAAOmjB,GAAWjf,KAAKC,UAAUnE,IAGnC,QAASsjB,GAAetjB,GACtB,GAAqB,gBAAVA,GAAoB,CAC7B,GAAIujB,GAAY,EAChB,OAAOnb,GAASpI,EAAOujB,GAClB,GACY,gBAAVvjB,IACU,iBAAVA,IACU,mBAAVA,GAEP,MAAOA,EAGT,IAAIC,GAAOgC,OAAOC,UAAUC,SAASlE,KAAK+B,EAG1C,OAAa,oBAATC,EAAmC,WAC1B,mBAATA,EAAkC,UACzB,sBAATA,EACKD,EAAMuB,KAAO,cAAgBvB,EAAMuB,KAAO,IAAM,aAElDvB,EAGT,QAASwjB,GAAgBxjB,EAAOyjB,GAC9B,MAAc,KAAVA,EAAoBH,EAAetjB,GAEnC8H,EAAc9H,GACTiC,OAAOmM,KAAKpO,GAAO0jB,OAAO,SAASC,EAAK5Z,GAE7C,MADA4Z,GAAI5Z,GAAOyZ,EAAgBxjB,EAAM+J,GAAM0Z,EAAQ,GACxCE,OAEAvP,MAAMpM,QAAQhI,GAChBA,EAAM4jB,IAAI,SAASC,GACxB,MAAOL,GAAgBK,EAAKJ,EAAQ,KAIjCH,EAAetjB,GAGxB,QAASiJ,GAAmBjK,EAAIykB,EAAOK,GACrC,IAAKhc,EAAc9I,GAAK,MAAOA,EAE/BykB,GAAyB,gBAAVA,GAAqBM,EAAgCN,EACpEK,EAA2B,gBAAVL,GAAqBO,EAA+BF,CAErE,IAAIG,GAAaT,EAAgBxkB,EAAIykB,EAErC,OAAIJ,GAASlf,EAAU8f,IAAeH,EAC7B7a,EAAmBjK,EAAIykB,EAAQ,GAGjCQ,EAGT,QAASjb,GAAwBoF,EAAMmV,GACrC,GAAoB,gBAATnV,IAAqC,gBAATA,GAAmB,MAAOA,GAAKjM,UACtE,KAAKiS,MAAMpM,QAAQoG,GAAO,MAAO,EAKjC,IAHAA,EAAOA,EAAK8V,OAAO,SAASna,GAC1B,MAAsB,gBAARA,KAEI,IAAhBqE,EAAKlQ,OAAc,MAAO,sBAG9B,IADAqlB,EAAiC,gBAAdA,GAAyBY,EAA4BZ,EACpEnV,EAAK,GAAGlQ,QAAUqlB,EAAW,MAAOnV,GAAK,EAE7C,KAAK,GAAIgW,GAAWhW,EAAKlQ,OAAQkmB,EAAW,EAAGA,IAAY,CACzD,GAAIH,GAAa7V,EAAKhL,MAAM,EAAGghB,GAAU5D,KAAK,KAC9C,MAAIyD,EAAW/lB,OAASqlB,GACxB,MAAIa,KAAahW,EAAKlQ,OAAe+lB,EAC9BA,EAAa,IAGtB,MAAO,GAGT,QAAS/a,GAAS6Z,EAAO7c,GAcvB,QAASme,GAAeC,GACtB,MAAItc,GAAQsc,GACHA,EAAYV,IAAI,SAASC,GAC9B,MAAOQ,GAAeR,KAItB/b,EAAcwc,GACTriB,OAAOmM,KAAKkW,GAAaZ,OAAO,SAASC,EAAKY,GAMnD,MAJEZ,GAAIY,GADFC,EAAehW,KAAK+V,GACbE,EAEAJ,EAAeC,EAAYC,IAE/BZ,OAIJW,EA/BT,IAAKtc,EAAQ9B,IAAkB8B,EAAQ9B,IAAyC,IAAxBA,EAAahI,OACnE,MAAO6kB,EAET,IAEI2B,GAFAF,EAAiBjc,EAAWrC,GAC5Bue,EAAe,UAGnB,KACEC,EAAYxgB,KAAK8L,MAAM7L,EAAU4e,IACjC,MAAO4B,GACP,MAAO5B,GAwBT,MAAOsB,GAAeK,GA5lBxB,GAAIvgB,GAAY/F,EAAQ,IAEpB8G,EACgB,mBAAXnI,QACHA,OACkB,mBAAXC,GAAyBA,EAAyB,mBAATC,MAAuBA,QA0dzE8mB,EAAgC,EAEhCC,EAA+B,MAC/BG,EAA4B,EA6HhCxnB,GAAOD,SACLmL,SAAUA,EACVD,QAASA,EACTH,aAAcA,EACdC,WAAYA,EACZC,eAAgBA,EAChBtD,YAAaA,EACbL,WAAYA,EACZ8D,cAAeA,EACfC,SAAUA,EACVC,QAASA,EACTC,cAAeA,EACfkX,mBAAoBA,EACpBE,iBAAkBA,EAClBE,qBAAsBA,EACtBxW,cAAeA,EACfxC,uBAAwBA,EACxBoZ,8BAA+BA,EAC/BngB,gBAAiBA,EACjB0I,KAAMA,EACNC,YAAaA,EACbC,SAAUA,EACVC,aAAcA,EACdC,OAAQA,EACRC,WAAYA,EACZC,UAAWA,EACXC,MAAOA,EACPC,iBAAkBA,EAClBoZ,oBAAqBA,EACrBnZ,gBAAiBA,EACjBC,iBAAkBA,EAClBC,SAAUA,EACVC,KAAMA,EACNvF,SAAUA,EACV0F,mBAAoBA,EACpBD,wBAAyBA,EACzBE,SAAUA,KAGTjL,KAAKf,KAAuB,mBAAXF,QAAyBA,OAAyB,mBAATC,MAAuBA,KAAyB,mBAAXF,QAAyBA,aACxH4hB,GAAK,KAAKE,GAAG,SAASzgB,EAAQzB,EAAOD,IACxC,SAAWM,GA+BX,QAAS4nB,KACP,MAAwB,mBAAbrb,WAAiD,MAArBA,SAASpC,SAAyB,GAClEoC,SAASpC,SAASE,KAG3B,QAASwd,KACP,MAAwB,mBAAbtb,WAAiD,MAArBA,SAASpC,SAAyB,GAClEoC,SAASpC,SAAS2d,OArC3B,GAAIniB,GAAQvE,EAAQ,GAYhBmJ,GACF7B,qBAAqB,EACrBgE,OAAO,GAILxE,EACgB,mBAAXnI,QACHA,OACkB,mBAAXC,GAAyBA,EAAyB,mBAATC,MAAuBA,QAGzE8nB,KAAY3hB,MACZ4hB,EAAmB,IAGnBC,EAAiB,yGAmDrB1d,GAASuD,OAAS,WAUhB,QAASC,GAAUma,GACjBC,IACAC,EAASnb,KAAKib,GAOhB,QAASG,GAAYH,GACnB,IAAK,GAAIrnB,GAAIunB,EAASlnB,OAAS,EAAGL,GAAK,IAAKA,EACtCunB,EAASvnB,KAAOqnB,GAClBE,EAASE,OAAOznB,EAAG,GAQzB,QAAS0nB,KACPC,IACAJ,KAOF,QAASK,GAAe5X,EAAO6X,GAC7B,GAAI9lB,GAAY,IAChB,KAAI8lB,GAAkBne,EAAS7B,oBAA/B,CAGA,IAAK,GAAI7H,KAAKunB,GACZ,GAAIA,EAAS5Q,eAAe3W,GAC1B,IACEunB,EAASvnB,GAAG6F,MAAM,MAAOmK,GAAOoK,OAAO8M,EAAO9mB,KAAKoF,UAAW,KAC9D,MAAOsiB,GACP/lB,EAAY+lB,EAKlB,GAAI/lB,EACF,KAAMA,IAiBV,QAASgmB,GAAsBtiB,EAAKqL,EAAKkX,EAAQC,EAAO9mB,GACtD,GAAI6O,GAAQ,KAERjO,EAAY+C,EAAM8E,aAAazI,GAAMA,EAAG6B,MAAQ7B,EAEhDkB,EAAUyC,EAAM8E,aAAanE,GAAOA,EAAIpD,QAAUoD,CAEtD,IAAIyiB,EACFxe,EAASuG,kBAAkBkY,oCACzBD,EACApX,EACAkX,EACA3lB,GAEF+lB,QACK,IAAIrmB,GAAa+C,EAAMiF,QAAQhI,GAMpCiO,EAAQtG,EAASuG,kBAAkBlO,GACnC6lB,EAAe5X,GAAO,OACjB,CACL,GAOIqY,GAPA/e,GACFwH,IAAKA,EACL2K,KAAMuM,EACNrM,OAAQsM,GAGNvkB,EAAO2K,MAGX,IAAkC,uBAA3B/J,SAASlE,KAAKiC,GAAgC,CACnD,GAAIgmB,GAAShmB,EAAQwgB,MAAMuE,EACvBiB,KACF3kB,EAAO2kB,EAAO,GACdhmB,EAAUgmB,EAAO,IAIrB/e,EAAS8E,KAAO+Y,EAEhBnX,GACEtM,KAAMA,EACNrB,QAASA,EACTyO,IAAKiW,IACL/W,OAAQ1G,IAEVse,EAAe5X,GAAO,GAGxB,QAAIsY,GACKA,EAAmBziB,MAAMxG,KAAMmG,WAM1C,QAAS8hB,KACHiB,IAGJD,EAAqBjhB,EAAQtE,QAC7BsE,EAAQtE,QAAUglB,EAClBQ,GAA2B,GAG7B,QAASZ,KACFY,IAGLlhB,EAAQtE,QAAUulB,EAClBC,GAA2B,EAC3BD,EAAqBja,QAGvB,QAAS+Z,KACP,GAAII,GAAsBN,EACxBO,EAAYC,CACdA,GAAW,KACXR,EAAqB,KACrBrV,EAAgB,KAChB+U,EAAe/hB,MAAM,MAAO2iB,GAAqB,GAAOpO,OAAOqO,IAUjE,QAASxb,GAAO9L,EAAIwnB,GAClB,GAAIrjB,GAAO4hB,EAAO9mB,KAAKoF,UAAW,EAClC,IAAI0iB,EAAoB,CACtB,GAAIrV,IAAkB1R,EACpB,MAEAinB,KAIJ,GAAIpY,GAAQtG,EAASuG,kBAAkB9O,EAevC,IAdA+mB,EAAqBlY,EACrB6C,EAAgB1R,EAChBunB,EAAWpjB,EAMX2O,WAAW,WACLpB,IAAkB1R,GACpBinB,KAEDpY,EAAM4Y,WAAa,IAAO,GAEzBD,KAAY,EACd,KAAMxnB,GA9LV,GA0DImnB,GAAoBC,EA1DpBhB,KACFmB,EAAW,KACX7V,EAAgB,KAChBqV,EAAqB,IAkMvB,OAHAjb,GAAOC,UAAYA,EACnBD,EAAOua,YAAcA,EACrBva,EAAO8B,UAAY2Y,EACZza,KAsDTvD,EAASuG,kBAAoB,WA4C3B,QAAS4Y,GAA+B1nB,GACtC,GAAwB,mBAAbA,GAAG6O,OAA0B7O,EAAG6O,MAA3C,CAiBA,IAAK,GALD8Y,GACAC,EACAC,EAZAjQ,EAAS,0IACTkQ,EAAQ,wHAGRC,EAAQ,6JAERC,EAAY,gDACZC,EAAa,gCACbC,EAAQloB,EAAG6O,MAAMxE,MAAM,MACvBwE,KAMKhQ,GAFO,sBAAsBkC,KAAKf,EAAGkB,SAEjC,GAAGiW,EAAI+Q,EAAMhpB,OAAQL,EAAIsY,IAAKtY,EAAG,CAC5C,GAAK+oB,EAAQhQ,EAAO7W,KAAKmnB,EAAMrpB,IAAM,CACnC,GAAIspB,GAAWP,EAAM,IAAqC,IAA/BA,EAAM,GAAGjR,QAAQ,UACxCyR,EAASR,EAAM,IAAmC,IAA7BA,EAAM,GAAGjR,QAAQ,OACtCyR,KAAWT,EAAWM,EAAWlnB,KAAK6mB,EAAM,OAE9CA,EAAM,GAAKD,EAAS,GACpBC,EAAM,GAAKD,EAAS,GACpBC,EAAM,GAAKD,EAAS,IAEtBE,GACElY,IAAMwY,EAAsB,KAAXP,EAAM,GACvB3a,KAAM2a,EAAM,IAAM5B,EAClB7hB,KAAMgkB,GAAYP,EAAM,OACxBtN,KAAMsN,EAAM,IAAMA,EAAM,GAAK,KAC7BpN,OAAQoN,EAAM,IAAMA,EAAM,GAAK,UAE5B,IAAKA,EAAQE,EAAM/mB,KAAKmnB,EAAMrpB,IACnCgpB,GACElY,IAAKiY,EAAM,GACX3a,KAAM2a,EAAM,IAAM5B,EAClB7hB,QACAmW,MAAOsN,EAAM,GACbpN,OAAQoN,EAAM,IAAMA,EAAM,GAAK,UAE5B,CAAA,KAAKA,EAAQG,EAAMhnB,KAAKmnB,EAAMrpB,KAsBnC,QArBA,IAAIupB,GAASR,EAAM,IAAMA,EAAM,GAAGjR,QAAQ,aACtCyR,KAAWT,EAAWK,EAAUjnB,KAAK6mB,EAAM,MAE7CA,EAAM,GAAKD,EAAS,GACpBC,EAAM,GAAKD,EAAS,GACpBC,EAAM,GAAK,MACI,IAAN/oB,GAAY+oB,EAAM,IAAiC,mBAApB5nB,GAAGqoB,eAK3CxZ,EAAM,GAAG2L,OAASxa,EAAGqoB,aAAe,GAEtCR,GACElY,IAAKiY,EAAM,GACX3a,KAAM2a,EAAM,IAAM5B,EAClB7hB,KAAMyjB,EAAM,GAAKA,EAAM,GAAGvd,MAAM,QAChCiQ,KAAMsN,EAAM,IAAMA,EAAM,GAAK;AAC7BpN,OAAQoN,EAAM,IAAMA,EAAM,GAAK,MAUnC,IAJKC,EAAQ5a,MAAQ4a,EAAQvN,OAC3BuN,EAAQ5a,KAAO+Y,GAGb6B,EAAQlY,KAAoC,UAA7BkY,EAAQlY,IAAIvO,OAAO,EAAG,GAAgB,CAMvD,GAAImK,GAAM,GAAIkL,eAKd,IAJAlL,EAAI0T,KAAK,MAAO4I,EAAQlY,KAAK,GAC7BpE,EAAI4T,KAAK,MAGU,MAAf5T,EAAI0L,OAAgB,CACtB,GAAIqK,GAAS/V,EAAI+c,cAAgB,EAIjChH,GAASA,EAAOld,WAGhB,IAAImkB,GAAajH,EAAOI,MAAM,+BAG9B,IAAI6G,EAAY,CACd,GAAIC,GAAmBD,EAAW,EAIC,OAA/BC,EAAiBC,OAAO,KAC1BD,EAAmB3C,IAAsB2C,EAAiBpkB,MAAM,IAKlEyjB,EAAQlY,IAAM6Y,EAAiBpkB,MAAM,QAK3CyK,EAAM5D,KAAK4c,GAGb,MAAKhZ,GAAM3P,QAKTqD,KAAMvC,EAAGuC,KACTrB,QAASlB,EAAGkB,QACZyO,IAAKiW,IACL/W,MAAOA,GAPA,MAwBX,QAASmY,GAAoCtN,EAAW/J,EAAKkX,EAAQ3lB,GACnE,GAAIwnB,IACF/Y,IAAKA,EACL2K,KAAMuM,EAGR,IAAI6B,EAAQ/Y,KAAO+Y,EAAQpO,KAAM,CAO/B,GANAZ,EAAU+N,YAAa,EAElBiB,EAAQzb,OACXyb,EAAQzb,KAAO+Y,GAGbtM,EAAU7K,MAAM3P,OAAS,GACvBwa,EAAU7K,MAAM,GAAGc,MAAQ+Y,EAAQ/Y,IAAK,CAC1C,GAAI+J,EAAU7K,MAAM,GAAGyL,OAASoO,EAAQpO,KACtC,OAAO,CACF,KACJZ,EAAU7K,MAAM,GAAGyL,MACpBZ,EAAU7K,MAAM,GAAG5B,OAASyb,EAAQzb,KAGpC,MADAyM,GAAU7K,MAAM,GAAGyL,KAAOoO,EAAQpO,MAC3B,EAOb,MAFAZ,GAAU7K,MAAM8Z,QAAQD,GACxBhP,EAAUkP,SAAU,GACb,EAKT,MAHElP,GAAU+N,YAAa,GAGlB,EAYT,QAASoB,GAAsC7oB,EAAIykB,GASjD,IACE,GALAmD,GACAkB,EALEC,EAAe,qEACjBla,KACAma,KACAC,GAAY,EAMRC,EAAOL,EAAsCM,OACjDD,IAASD,EACTC,EAAOA,EAAKC,OAEZ,GAAID,IAASpa,GAAqBoa,IAAS3gB,EAASuD,OAApD,CAkBA,GAbAgd,GACEnZ,IAAK,KACL1C,KAAM+Y,EACN1L,KAAM,KACNE,OAAQ,MAGN0O,EAAK3mB,KACPumB,EAAK7b,KAAOic,EAAK3mB,MACPqlB,EAAQmB,EAAahoB,KAAKmoB,EAAK/lB,eACzC2lB,EAAK7b,KAAO2a,EAAM,IAGK,mBAAdkB,GAAK7b,KACd,IACE6b,EAAK7b,KAAO2a,EAAM7D,MAAMqF,UAAU,EAAGxB,EAAM7D,MAAMpN,QAAQ,MACzD,MAAOvY,IAGP4qB,EAAM,GAAKE,GACbD,GAAY,EAEZD,EAAM,GAAKE,IAAQ,EAGrBra,EAAM5D,KAAK6d,GAGTrE,GAGF5V,EAAMyX,OAAO,EAAG7B,EAGlB,IAAIpU,IACF9N,KAAMvC,EAAGuC,KACTrB,QAASlB,EAAGkB,QACZyO,IAAKiW,IACL/W,MAAOA,EAQT,OANAmY,GACE3W,EACArQ,EAAGqpB,WAAarpB,EAAGspB,SACnBtpB,EAAGsa,MAAQta,EAAGupB,WACdvpB,EAAGkB,SAAWlB,EAAGwpB,aAEZnZ,EAQT,QAASvB,GAAkB9O,EAAIykB,GAC7B,GAAI5V,GAAQ,IACZ4V,GAAiB,MAATA,EAAgB,GAAKA,CAE7B,KAEE,GADA5V,EAAQ6Y,EAA+B1nB,GAErC,MAAO6O,GAET,MAAOzQ,GACP,GAAImK,EAASmC,MACX,KAAMtM,GAIV,IAEE,GADAyQ,EAAQga,EAAsC7oB,EAAIykB,EAAQ,GAExD,MAAO5V,GAET,MAAOzQ,GACP,GAAImK,EAASmC,MACX,KAAMtM,GAGV,OACEmE,KAAMvC,EAAGuC,KACTrB,QAASlB,EAAGkB,QACZyO,IAAKiW,KAOT,MAHA9W,GAAkBkY,oCAAsCA,EACxDlY,EAAkB4Y,+BAAiCA,EAE5C5Y,KAGTnR,EAAOD,QAAU6K,IAEdtJ,KAAKf,KAAuB,mBAAXF,QAAyBA,OAAyB,mBAATC,MAAuBA,KAAyB,mBAAXF,QAAyBA,aACxHwD,EAAI,IAAIoe,IAAI,SAASvgB,EAAQzB,EAAOD,GAevC,QAASiZ,GAAQ8S,EAAUC,GACzB,IAAK,GAAI7qB,GAAI,EAAGA,EAAI4qB,EAASvqB,SAAUL,EACrC,GAAI4qB,EAAS5qB,KAAO6qB,EAAQ,MAAO7qB,EAErC,UAGF,QAASsG,GAAU8K,EAAK0Z,EAAUC,EAAQC,GACxC,MAAO3kB,MAAKC,UAAU8K,EAAK6Z,EAAWH,EAAUE,GAAgBD,GAIlE,QAASG,GAAe/oB,GACtB,GAAI4U,IAEF/G,MAAO7N,EAAM6N,MACb3N,QAASF,EAAME,QACfqB,KAAMvB,EAAMuB,KAGd,KAAK,GAAI1D,KAAKmC,GACRiC,OAAOC,UAAUsS,eAAevW,KAAK+B,EAAOnC,KAC9C+W,EAAI/W,GAAKmC,EAAMnC,GAInB,OAAO+W,GAGT,QAASkU,GAAWH,EAAUE,GAC5B,GAAIhb,MACAO,IAWJ,OATqB,OAAjBya,IACFA,EAAgB,SAAS9e,EAAK/J,GAC5B,MAAI6N,GAAM,KAAO7N,EACR,eAEF,eAAiBoO,EAAKhL,MAAM,EAAGuS,EAAQ9H,EAAO7N,IAAQwgB,KAAK,KAAO,MAItE,SAASzW,EAAK/J,GACnB,GAAI6N,EAAM3P,OAAS,EAAG,CACpB,GAAI8qB,GAAUrT,EAAQ9H,EAAO3Q,OAC5B8rB,EAAUnb,EAAMyX,OAAO0D,EAAU,GAAKnb,EAAM5D,KAAK/M,OACjD8rB,EAAU5a,EAAKkX,OAAO0D,EAASC,EAAAA,EAAUlf,GAAOqE,EAAKnE,KAAKF,IAEtD4L,EAAQ9H,EAAO7N,KAClBA,EAAQ6oB,EAAc5qB,KAAKf,KAAM6M,EAAK/J,QAGxC6N,GAAM5D,KAAKjK,EAGb,OAAmB,OAAZ2oB,EACH3oB,YAAiBlC,OAAQirB,EAAe/oB,GAASA,EACjD2oB,EAAS1qB,KAAKf,KAAM6M,EAAK/J,IA5DjCtD,EAAUC,EAAOD,QAAUyH,EAC3BzH,EAAQwsB,aAAeJ,OA+DjBlK,IAAI,SAASxgB,EAAQzB,EAAOD,GAwBlC,QAASysB,GAAQC,EAAGC,GAClB,GAAIC,IAAW,MAAJF,IAAmB,MAAJC,GACtBE,GAAOH,GAAK,KAAOC,GAAK,KAAOC,GAAO,GAC1C,OAAQC,IAAO,GAAa,MAAND,EAMxB,QAASE,GAAcrI,EAAKsI,GAC1B,MAAQtI,IAAOsI,EAAQtI,IAAS,GAAKsI,EAMvC,QAASC,GAAOC,EAAGhsB,EAAG2kB,EAAG8G,EAAG5rB,EAAGH,GAC7B,MAAO8rB,GAAQK,EAAcL,EAAQA,EAAQxrB,EAAGgsB,GAAIR,EAAQC,EAAG/rB,IAAKG,GAAI8kB,GAE1E,QAASsH,GAAMjsB,EAAG2kB,EAAGjB,EAAGwI,EAAGT,EAAG5rB,EAAGH,GAC/B,MAAOqsB,GAAQpH,EAAIjB,GAAOiB,EAAIuH,EAAIlsB,EAAG2kB,EAAG8G,EAAG5rB,EAAGH,GAEhD,QAASysB,GAAMnsB,EAAG2kB,EAAGjB,EAAGwI,EAAGT,EAAG5rB,EAAGH,GAC/B,MAAOqsB,GAAQpH,EAAIuH,EAAMxI,GAAKwI,EAAIlsB,EAAG2kB,EAAG8G,EAAG5rB,EAAGH,GAEhD,QAAS0sB,GAAMpsB,EAAG2kB,EAAGjB,EAAGwI,EAAGT,EAAG5rB,EAAGH,GAC/B,MAAOqsB,GAAOpH,EAAIjB,EAAIwI,EAAGlsB,EAAG2kB,EAAG8G,EAAG5rB,EAAGH,GAEvC,QAAS2sB,GAAMrsB,EAAG2kB,EAAGjB,EAAGwI,EAAGT,EAAG5rB,EAAGH,GAC/B,MAAOqsB,GAAOrI,GAAKiB,GAAKuH,GAAIlsB,EAAG2kB,EAAG8G,EAAG5rB,EAAGH,GAM1C,QAAS4sB,GAAQb,EAAG/I,GAElB+I,EAAE/I,GAAO,IAAM,KAASA,EAAM,GAC9B+I,GAAK/I,EAAM,KAAQ,GAAM,GAAK,IAAMA,CAEpC,IAAIxiB,GACAqsB,EACAC,EACAC,EACAC,EACA1sB,EAAI,WACJ2kB,aACAjB,cACAwI,EAAI,SAER,KAAKhsB,EAAI,EAAGA,EAAIurB,EAAElrB,OAAQL,GAAK,GAC7BqsB,EAAOvsB,EACPwsB,EAAO7H,EACP8H,EAAO/I,EACPgJ,EAAOR,EAEPlsB,EAAIisB,EAAMjsB,EAAG2kB,EAAGjB,EAAGwI,EAAGT,EAAEvrB,GAAI,cAC5BgsB,EAAID,EAAMC,EAAGlsB,EAAG2kB,EAAGjB,EAAG+H,EAAEvrB,EAAI,GAAI,eAChCwjB,EAAIuI,EAAMvI,EAAGwI,EAAGlsB,EAAG2kB,EAAG8G,EAAEvrB,EAAI,GAAI,GAAI,WACpCykB,EAAIsH,EAAMtH,EAAGjB,EAAGwI,EAAGlsB,EAAGyrB,EAAEvrB,EAAI,GAAI,gBAChCF,EAAIisB,EAAMjsB,EAAG2kB,EAAGjB,EAAGwI,EAAGT,EAAEvrB,EAAI,GAAI,cAChCgsB,EAAID,EAAMC,EAAGlsB,EAAG2kB,EAAGjB,EAAG+H,EAAEvrB,EAAI,GAAI,GAAI,YACpCwjB,EAAIuI,EAAMvI,EAAGwI,EAAGlsB,EAAG2kB,EAAG8G,EAAEvrB,EAAI,GAAI,gBAChCykB,EAAIsH,EAAMtH,EAAGjB,EAAGwI,EAAGlsB,EAAGyrB,EAAEvrB,EAAI,GAAI,cAChCF,EAAIisB,EAAMjsB,EAAG2kB,EAAGjB,EAAGwI,EAAGT,EAAEvrB,EAAI,GAAI,EAAG,YACnCgsB,EAAID,EAAMC,EAAGlsB,EAAG2kB,EAAGjB,EAAG+H,EAAEvrB,EAAI,GAAI,gBAChCwjB,EAAIuI,EAAMvI,EAAGwI,EAAGlsB,EAAG2kB,EAAG8G,EAAEvrB,EAAI,IAAK,WACjCykB,EAAIsH,EAAMtH,EAAGjB,EAAGwI,EAAGlsB,EAAGyrB,EAAEvrB,EAAI,IAAK,gBACjCF,EAAIisB,EAAMjsB,EAAG2kB,EAAGjB,EAAGwI,EAAGT,EAAEvrB,EAAI,IAAK,EAAG,YACpCgsB,EAAID,EAAMC,EAAGlsB,EAAG2kB,EAAGjB,EAAG+H,EAAEvrB,EAAI,IAAK,cACjCwjB,EAAIuI,EAAMvI,EAAGwI,EAAGlsB,EAAG2kB,EAAG8G,EAAEvrB,EAAI,IAAK,gBACjCykB,EAAIsH,EAAMtH,EAAGjB,EAAGwI,EAAGlsB,EAAGyrB,EAAEvrB,EAAI,IAAK,GAAI,YAErCF,EAAImsB,EAAMnsB,EAAG2kB,EAAGjB,EAAGwI,EAAGT,EAAEvrB,EAAI,GAAI,cAChCgsB,EAAIC,EAAMD,EAAGlsB,EAAG2kB,EAAGjB,EAAG+H,EAAEvrB,EAAI,GAAI,eAChCwjB,EAAIyI,EAAMzI,EAAGwI,EAAGlsB,EAAG2kB,EAAG8G,EAAEvrB,EAAI,IAAK,GAAI,WACrCykB,EAAIwH,EAAMxH,EAAGjB,EAAGwI,EAAGlsB,EAAGyrB,EAAEvrB,GAAI,eAC5BF,EAAImsB,EAAMnsB,EAAG2kB,EAAGjB,EAAGwI,EAAGT,EAAEvrB,EAAI,GAAI,cAChCgsB,EAAIC,EAAMD,EAAGlsB,EAAG2kB,EAAGjB,EAAG+H,EAAEvrB,EAAI,IAAK,EAAG,UACpCwjB,EAAIyI,EAAMzI,EAAGwI,EAAGlsB,EAAG2kB,EAAG8G,EAAEvrB,EAAI,IAAK,eACjCykB,EAAIwH,EAAMxH,EAAGjB,EAAGwI,EAAGlsB,EAAGyrB,EAAEvrB,EAAI,GAAI,eAChCF,EAAImsB,EAAMnsB,EAAG2kB,EAAGjB,EAAGwI,EAAGT,EAAEvrB,EAAI,GAAI,EAAG,WACnCgsB,EAAIC,EAAMD,EAAGlsB,EAAG2kB,EAAGjB,EAAG+H,EAAEvrB,EAAI,IAAK,eACjCwjB,EAAIyI,EAAMzI,EAAGwI,EAAGlsB,EAAG2kB,EAAG8G,EAAEvrB,EAAI,GAAI,eAChCykB,EAAIwH,EAAMxH,EAAGjB,EAAGwI,EAAGlsB,EAAGyrB,EAAEvrB,EAAI,GAAI,GAAI,YACpCF,EAAImsB,EAAMnsB,EAAG2kB,EAAGjB,EAAGwI,EAAGT,EAAEvrB,EAAI,IAAK,eACjCgsB,EAAIC,EAAMD,EAAGlsB,EAAG2kB,EAAGjB,EAAG+H,EAAEvrB,EAAI,GAAI,aAChCwjB,EAAIyI,EAAMzI,EAAGwI,EAAGlsB,EAAG2kB,EAAG8G,EAAEvrB,EAAI,GAAI,GAAI,YACpCykB,EAAIwH,EAAMxH,EAAGjB,EAAGwI,EAAGlsB,EAAGyrB,EAAEvrB,EAAI,IAAK,gBAEjCF,EAAIosB,EAAMpsB,EAAG2kB,EAAGjB,EAAGwI,EAAGT,EAAEvrB,EAAI,GAAI,WAChCgsB,EAAIE,EAAMF,EAAGlsB,EAAG2kB,EAAGjB,EAAG+H,EAAEvrB,EAAI,GAAI,gBAChCwjB,EAAI0I,EAAM1I,EAAGwI,EAAGlsB,EAAG2kB,EAAG8G,EAAEvrB,EAAI,IAAK,GAAI,YACrCykB,EAAIyH,EAAMzH,EAAGjB,EAAGwI,EAAGlsB,EAAGyrB,EAAEvrB,EAAI,IAAK,cACjCF,EAAIosB,EAAMpsB,EAAG2kB,EAAGjB,EAAGwI,EAAGT,EAAEvrB,EAAI,GAAI,eAChCgsB,EAAIE,EAAMF,EAAGlsB,EAAG2kB,EAAGjB,EAAG+H,EAAEvrB,EAAI,GAAI,GAAI,YACpCwjB,EAAI0I,EAAM1I,EAAGwI,EAAGlsB,EAAG2kB,EAAG8G,EAAEvrB,EAAI,GAAI,eAChCykB,EAAIyH,EAAMzH,EAAGjB,EAAGwI,EAAGlsB,EAAGyrB,EAAEvrB,EAAI,IAAK,gBACjCF,EAAIosB,EAAMpsB,EAAG2kB,EAAGjB,EAAGwI,EAAGT,EAAEvrB,EAAI,IAAK,EAAG,WACpCgsB,EAAIE,EAAMF,EAAGlsB,EAAG2kB,EAAGjB,EAAG+H,EAAEvrB,GAAI,eAC5BwjB,EAAI0I,EAAM1I,EAAGwI,EAAGlsB,EAAG2kB,EAAG8G,EAAEvrB,EAAI,GAAI,eAChCykB,EAAIyH,EAAMzH,EAAGjB,EAAGwI,EAAGlsB,EAAGyrB,EAAEvrB,EAAI,GAAI,GAAI,UACpCF,EAAIosB,EAAMpsB,EAAG2kB,EAAGjB,EAAGwI,EAAGT,EAAEvrB,EAAI,GAAI,cAChCgsB,EAAIE,EAAMF,EAAGlsB,EAAG2kB,EAAGjB,EAAG+H,EAAEvrB,EAAI,IAAK,eACjCwjB,EAAI0I,EAAM1I,EAAGwI,EAAGlsB,EAAG2kB,EAAG8G,EAAEvrB,EAAI,IAAK,GAAI,WACrCykB,EAAIyH,EAAMzH,EAAGjB,EAAGwI,EAAGlsB,EAAGyrB,EAAEvrB,EAAI,GAAI,eAEhCF,EAAIqsB,EAAMrsB,EAAG2kB,EAAGjB,EAAGwI,EAAGT,EAAEvrB,GAAI,cAC5BgsB,EAAIG,EAAMH,EAAGlsB,EAAG2kB,EAAGjB,EAAG+H,EAAEvrB,EAAI,GAAI,GAAI,YACpCwjB,EAAI2I,EAAM3I,EAAGwI,EAAGlsB,EAAG2kB,EAAG8G,EAAEvrB,EAAI,IAAK,gBACjCykB,EAAI0H,EAAM1H,EAAGjB,EAAGwI,EAAGlsB,EAAGyrB,EAAEvrB,EAAI,GAAI,cAChCF,EAAIqsB,EAAMrsB,EAAG2kB,EAAGjB,EAAGwI,EAAGT,EAAEvrB,EAAI,IAAK,EAAG,YACpCgsB,EAAIG,EAAMH,EAAGlsB,EAAG2kB,EAAGjB,EAAG+H,EAAEvrB,EAAI,GAAI,gBAChCwjB,EAAI2I,EAAM3I,EAAGwI,EAAGlsB,EAAG2kB,EAAG8G,EAAEvrB,EAAI,IAAK,aACjCykB,EAAI0H,EAAM1H,EAAGjB,EAAGwI,EAAGlsB,EAAGyrB,EAAEvrB,EAAI,GAAI,gBAChCF,EAAIqsB,EAAMrsB,EAAG2kB,EAAGjB,EAAGwI,EAAGT,EAAEvrB,EAAI,GAAI,EAAG,YACnCgsB,EAAIG,EAAMH,EAAGlsB,EAAG2kB,EAAGjB,EAAG+H,EAAEvrB,EAAI,IAAK,cACjCwjB,EAAI2I,EAAM3I,EAAGwI,EAAGlsB,EAAG2kB,EAAG8G,EAAEvrB,EAAI,GAAI,gBAChCykB,EAAI0H,EAAM1H,EAAGjB,EAAGwI,EAAGlsB,EAAGyrB,EAAEvrB,EAAI,IAAK,GAAI,YACrCF,EAAIqsB,EAAMrsB,EAAG2kB,EAAGjB,EAAGwI,EAAGT,EAAEvrB,EAAI,GAAI,cAChCgsB,EAAIG,EAAMH,EAAGlsB,EAAG2kB,EAAGjB,EAAG+H,EAAEvrB,EAAI,IAAK,gBACjCwjB,EAAI2I,EAAM3I,EAAGwI,EAAGlsB,EAAG2kB,EAAG8G,EAAEvrB,EAAI,GAAI,GAAI,WACpCykB,EAAI0H,EAAM1H,EAAGjB,EAAGwI,EAAGlsB,EAAGyrB,EAAEvrB,EAAI,GAAI,eAEhCF,EAAIwrB,EAAQxrB,EAAGusB,GACf5H,EAAI6G,EAAQ7G,EAAG6H,GACf9I,EAAI8H,EAAQ9H,EAAG+I,GACfP,EAAIV,EAAQU,EAAGQ,EAEjB,QAAQ1sB,EAAG2kB,EAAGjB,EAAGwI,GAMnB,QAASS,GAAUvH,GACjB,GAAIllB,GACAolB,EAAS,GACTsH,EAA0B,GAAfxH,EAAM7kB,MACrB,KAAKL,EAAI,EAAGA,EAAI0sB,EAAU1sB,GAAK,EAC7BolB,GAAUC,OAAOsH,aAAczH,EAAMllB,GAAK,KAAQA,EAAI,GAAO,IAE/D,OAAOolB,GAOT,QAASwH,GAAU1H,GACjB,GAAIllB,GACAolB,IAEJ,KADAA,GAAQF,EAAM7kB,QAAU,GAAK,GAAKgO,OAC7BrO,EAAI,EAAGA,EAAIolB,EAAO/kB,OAAQL,GAAK,EAClColB,EAAOplB,GAAK,CAEd,IAAI6sB,GAAyB,EAAf3H,EAAM7kB,MACpB,KAAKL,EAAI,EAAGA,EAAI6sB,EAAS7sB,GAAK,EAC5BolB,EAAOplB,GAAK,KAAiC,IAA1BklB,EAAM4H,WAAW9sB,EAAI,KAAeA,EAAI,EAE7D,OAAOolB,GAMT,QAAS2H,GAAQptB,GACf,MAAO8sB,GAAUL,EAAQQ,EAAUjtB,GAAe,EAAXA,EAAEU,SAM3C,QAAS2sB,GAAY9gB,EAAKtK,GACxB,GAAI5B,GAIAwgB,EAHAyM,EAAOL,EAAU1gB,GACjBghB,KACAC,IAMJ,KAJAD,EAAK,IAAMC,EAAK,IAAM9e,OAClB4e,EAAK5sB,OAAS,KAChB4sB,EAAOb,EAAQa,EAAmB,EAAb/gB,EAAI7L,SAEtBL,EAAI,EAAGA,EAAI,GAAIA,GAAK,EACvBktB,EAAKltB,GAAe,UAAVitB,EAAKjtB,GACfmtB,EAAKntB,GAAe,WAAVitB,EAAKjtB,EAGjB,OADAwgB,GAAO4L,EAAQc,EAAK9S,OAAOwS,EAAUhrB,IAAQ,IAAoB,EAAdA,EAAKvB,QACjDosB,EAAUL,EAAQe,EAAK/S,OAAOoG,GAAO,MAM9C,QAAS4M,GAASlI,GAChB,GAEIqG,GACAvrB,EAHAqtB,EAAS,mBACTjI,EAAS,EAGb,KAAKplB,EAAI,EAAGA,EAAIklB,EAAM7kB,OAAQL,GAAK,EACjCurB,EAAIrG,EAAM4H,WAAW9sB,GACrBolB,GAAUiI,EAAOzD,OAAQ2B,IAAM,EAAK,IAAQ8B,EAAOzD,OAAW,GAAJ2B,EAE5D,OAAOnG,GAMT,QAASkI,GAAapI,GACpB,MAAOqI,UAASla,mBAAmB6R,IAMrC,QAASsI,GAAO7tB,GACd,MAAOotB,GAAQO,EAAa3tB,IAE9B,QAAS8tB,GAAO9tB,GACd,MAAOytB,GAASI,EAAO7tB,IAEzB,QAAS+tB,GAAWhH,EAAGsF,GACrB,MAAOgB,GAAYM,EAAa5G,GAAI4G,EAAatB,IAEnD,QAAS2B,GAAWjH,EAAGsF,GACrB,MAAOoB,GAASM,EAAWhH,EAAGsF,IAGhC,QAASriB,GAAIikB,EAAQ1hB,EAAK2hB,GACxB,MAAK3hB,GAMA2hB,EAGEH,EAAWxhB,EAAK0hB,GAFdD,EAAWzhB,EAAK0hB,GANlBC,EAGEL,EAAOI,GAFLH,EAAOG,GAUpB9uB,EAAOD,QAAU8K,YAEN,EAAE,EAAE,EAAE,IAAI","file":"raven.min.js"} \ No newline at end of file +{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","angularPlugin","angular","RavenProvider","$get","$window","ExceptionHandlerProvider","$provide","decorator","exceptionHandler","R","$delegate","ex","cause","captureException","extra","moduleName","provider","config","setDataCallback","wrappedCallback","data","_normalizeData","angularPattern","exception","values","matches","exec","value","type","message","angularDocs","substr","addPlugin","7","8","2","emberPlugin","Ember","_oldOnError","onerror","error","RSVP","on","reason","context","captureMessage","3","formatComponentName","vm","$root","name","_isVue","$options","_componentTag","__file","vuePlugin","Vue","errorHandler","info","metaData","Object","prototype","toString","componentName","propsData","lifecycleHook","4","RavenConfigError","constructor","5","utils","wrapMethod","console","level","callback","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","msg","safeJoin","logger","Function","apply","6","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","sanitizeKeys","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isErrorEvent","isDOMError","isDOMException","isError","isObject","isPlainObject","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","sanitize","wrapConsoleMethod","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","dsn","options","_logDebug","globalOptions","key","setDSN","push","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","func","undefined","wrap","_before","wrapped","deep","_ignoreNextOnError","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","U","event","unhandledPromiseRejection","C","_promiseRejectionHandler","bind","addEventListener","Q","removeEventListener","trimHeadFrames","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","V","currentOptions","exKeys","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","M","setTimeout","_","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","aa","evtName","_keypressTimeout","target","category","ca","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","da","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","D","_originalFunctionToString","E","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","F","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","S","builtin","T","G","installer","concat","H","str","m","allowSecretKey","K","port","B","W","stackInfo","_triggerEvent","_processException","lineno","Y","frame","_normalizeFrame","in_app","ha","stackInfoUrl","normalized","filename","line","colno","column","function","ga","prefixedMessage","culprit","ia","request","Referer","breadcrumbs","_trimBreadcrumbs","ja","urlProp","urlProps","ka","httpData","userAgent","User-Agent","referrer","z","_backoffDuration","_backoffStart","na","oa","current","last","pa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Z","baseData","project","platform","_getHttpData","serverName","server_name","_sanitizeData","forEach","random","_sendProcessedPayload","qa","sa","ra","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","ta","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","open","setRequestHeader","send","ua","hash","evaluated","A","$","setUser","setReleaseContext","10","11","9","RavenConstructor","_Raven","noConflict","Client","what","supportsErrorEvent","ErrorEvent","supportsDOMError","DOMError","supportsDOMException","DOMException","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","sanitizeMask","safeInput","o_O","getLocationHref","getLocationOrigin","origin","hostname","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","responseText","sourceMaps","sourceMapAddress","charAt","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","y","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","string","raw"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file diff --git a/dist/angular,ember/raven.js b/dist/angular,ember/raven.js index 0f5d364075da..c8769ae8f03f 100644 --- a/dist/angular,ember/raven.js +++ b/dist/angular,ember/raven.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.25.0 (80dffad) | github.com/getsentry/raven-js */ +/*! Raven.js 3.25.1 (b6f3c7a) | github.com/getsentry/raven-js */ /* * Includes TraceKit @@ -317,7 +317,7 @@ Raven.prototype = { // webpack (using a build step causes webpack #1617). Grunt verifies that // this value matches package.json during build. // See: https://github.com/getsentry/raven-js/issues/465 - VERSION: '3.25.0', + VERSION: '3.25.1', debug: false, @@ -1626,8 +1626,8 @@ Raven.prototype = { var hasPushAndReplaceState = !isChromePackagedApp && _window.history && - history.pushState && - history.replaceState; + _window.history.pushState && + _window.history.replaceState; if (autoBreadcrumbs.location && hasPushAndReplaceState) { // TODO: remove onpopstate handler on uninstall() var oldOnPopState = _window.onpopstate; @@ -1656,8 +1656,8 @@ Raven.prototype = { }; }; - fill(history, 'pushState', historyReplacementFunction, wrappedBuiltIns); - fill(history, 'replaceState', historyReplacementFunction, wrappedBuiltIns); + fill(_window.history, 'pushState', historyReplacementFunction, wrappedBuiltIns); + fill(_window.history, 'replaceState', historyReplacementFunction, wrappedBuiltIns); } if (autoBreadcrumbs.console && 'console' in _window && console.log) { @@ -1947,7 +1947,7 @@ Raven.prototype = { if (this._hasNavigator && _navigator.userAgent) { httpData.headers = { - 'User-Agent': navigator.userAgent + 'User-Agent': _navigator.userAgent }; } @@ -3122,6 +3122,16 @@ function getLocationHref() { function getLocationOrigin() { if (typeof document === 'undefined' || document.location == null) return ''; + + // Oh dear IE10... + if (!document.location.origin) { + document.location.origin = + document.location.protocol + + '//' + + document.location.hostname + + (document.location.port ? ':' + document.location.port : ''); + } + return document.location.origin; } diff --git a/dist/angular,ember/raven.min.js b/dist/angular,ember/raven.min.js index 7430a51a837e..6ffdbeda05a4 100644 --- a/dist/angular,ember/raven.min.js +++ b/dist/angular,ember/raven.min.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.25.0 (80dffad) | github.com/getsentry/raven-js */ -!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.Raven=a()}}(function(){return function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};b[g][0].call(k.exports,function(a){var c=b[g][1][a];return e(c?c:a)},k,k.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;gthis.l.maxBreadcrumbs&&this.v.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.s.push([a,b]),this.o&&this.G(),this},setUserContext:function(a){return this.k.user=a,this},setExtraContext:function(a){return this.$("extra",a),this},setTagsContext:function(a){return this.$("tags",a),this},clearContext:function(){return this.k={},this},getContext:function(){return JSON.parse(h(this.k))},setEnvironment:function(a){return this.l.environment=a,this},setRelease:function(a){return this.l.release=a,this},setDataCallback:function(a){var b=this.l.dataCallback;return this.l.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.l.breadcrumbCallback;return this.l.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.l.shouldSendCallback;return this.l.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.l.transport=a,this},lastException:function(){return this.e},lastEventId:function(){return this.g},isSetup:function(){return!!this.b&&(!!this.h||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.A("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=R.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(S){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.I;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.k.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.K(this.H(c)),h=S.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(S.head||S.body).appendChild(h)}},M:function(){var a=this;this.n+=1,setTimeout(function(){a.n-=1})},_:function(a,b){var c,d;if(this.c){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),S.createEvent?(c=S.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=S.createEventObject(),c.eventType=a);for(d in b)A(b,d)&&(c[d]=b[d]);if(S.createEvent)S.dispatchEvent(c);else try{S.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},aa:function(a){var b=this;return function(c){if(b.ba=null,b.w!==c){b.w=c;var d;try{d=E(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ca:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.ba;g||a.aa("input")(c),clearTimeout(g),a.ba=setTimeout(function(){a.ba=null},b)}}},da:function(a,b){var c=H(this.x.href),d=H(b),e=H(a);this.y=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},D:function(){var a=this;a.ea=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.N?a.ea.apply(this.P,arguments):a.ea.apply(this,arguments)}},R:function(){this.ea&&(Function.prototype.toString=this.ea)},E:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.da(b.y,c+""),a.apply(this,arguments)}};I(history,"pushState",j,d),I(history,"replaceState",j,d)}if(c.console&&"console"in R&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};w(["debug","info","warn","error","log"],function(a,b){O(console,b,k)})}},S:function(){for(var a;this.u.length;){a=this.u.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},T:function(){for(var a in this.r)this.q[a]=this.r[a]},G:function(){var a=this;w(this.s,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},H:function(a){var b=Q.exec(a),c={},d=7;try{for(;d--;)c[P[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.l.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},K:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},B:function(){this.n||this.W.apply(this,arguments)},W:function(a,b){var c=this.Y(a,b);this._("handle",{stackInfo:a,options:b}),this.ga(a.name,a.message,a.url,a.lineno,c,b)},Y:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(w(a.stack,function(b,e){var f=c.ha(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.v,0)}),this.k.user&&(a.user=this.k.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),a=this.qa(a),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||v(a[b]))&&delete a[b]}),s(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!v(a)&&(!s(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.na()?void this.A("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function F(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&l(b))for(c=b.split(/\s+/),f=0;fc?Q(a,b-1):d}function R(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?X:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function S(a,b){function c(a){return m(a)?a.map(function(a){return c(a)}):k(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!m(b)||m(b)&&0===b.length)return a;var d,e=A(b),f="********";try{d=JSON.parse(T(a))}catch(g){return a}return c(d)}var T=a(9),U="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},V=3,W=51200,X=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isDOMError:g,isDOMException:h,isUndefined:i,isFunction:j,isPlainObject:k,isString:l,isArray:m,isEmptyObject:n,supportsErrorEvent:o,supportsDOMError:p,supportsDOMException:q,supportsFetch:r,supportsReferrerPolicy:s,supportsPromiseRejectionEvent:t,wrappedCallback:u,each:v,objectMerge:w,truncate:y,objectFrozen:x,hasKey:z,joinRegExp:A,urlencode:B,uuid4:D,htmlTreeAsString:E,htmlElementAsString:F,isSameException:I,isSameStacktrace:J,parseUrl:C,fill:K,safeJoin:L,serializeException:Q,serializeKeysForMessage:R,sanitize:S}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{9:9}],8:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}function e(){return"undefined"==typeof document||null==document.location?"":document.location.origin}var f=a(7),g={collectWindowErrors:!0,debug:!1},h="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},i=[].slice,j="?",k=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;g.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function e(a,b){var c=null;if(!b||g.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(i.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,h,i){var l=null,m=f.isErrorEvent(i)?i.error:i,n=f.isErrorEvent(a)?a.message:a;if(v)g.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&f.isError(m))l=g.computeStackTrace(m),e(l,!0);else{var p,r={url:b,line:c,column:h},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(k);p&&(s=p[1],n=p[2])}r.func=j,l={name:s,message:n,url:d(),stack:[r]},e(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=h.onerror,h.onerror=l,r=!0)}function n(){r&&(h.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,e.apply(null,[a,!1].concat(b))}function p(a,b){var c=i.call(arguments,1);if(v){if(u===a)return;o()}var d=g.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),g.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,f,g=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,h=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,i=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,k=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,l=/\((\S*)(?::(\d+))(?::(\d+))\)/,m=a.stack.split("\n"),n=[],o=(/^(.*) is undefined$/.exec(a.message),0),p=m.length;o eval")>-1;r&&(b=k.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==o||c[5]||"undefined"==typeof a.columnNumber||(n[0].column=a.columnNumber+1),f={url:c[3],func:c[1]||j,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}if(!f.func&&f.line&&(f.func=j),f.url&&"blob:"===f.url.substr(0,5)){var s=new XMLHttpRequest;if(s.open("GET",f.url,!1),s.send(null),200===s.status){var t=s.responseText||"";t=t.slice(-300);var u=t.match(/\/\/# sourceMappingURL=(.*)$/);if(u){var v=u[1];"~"===v.charAt(0)&&(v=e()+v.slice(1)),f.url=v.slice(0,-4)}}}n.push(f)}return n.length?{name:a.name,message:a.message,url:d(),stack:n}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=j),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line, -!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,e){for(var h,i,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==f&&o!==g.report){if(i={url:null,func:j,line:null,column:null},o.name?i.func=o.name:(h=k.exec(o.toString()))&&(i.func=h[1]),"undefined"==typeof i.func)try{i.func=h.input.substring(0,h.input.indexOf("{"))}catch(p){}m[""+o]?n=!0:m[""+o]=!0,l.push(i)}e&&l.splice(0,e);var q={name:a.name,message:a.message,url:d(),stack:l};return b(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),q}function f(b,e){var f=null;e=null==e?0:+e;try{if(f=a(b))return f}catch(h){if(g.debug)throw h}try{if(f=c(b,e+1))return f}catch(h){if(g.debug)throw h}return{name:b.name,message:b.message,url:d()}}return f.augmentStackTraceWithInitialElement=b,f.computeStackTraceFromStackProp=a,f}(),b.exports=g}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{7:7}],9:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}],10:[function(a,b,c){function d(a,b){var c=(65535&a)+(65535&b),d=(a>>16)+(b>>16)+(c>>16);return d<<16|65535&c}function e(a,b){return a<>>32-b}function f(a,b,c,f,g,h){return d(e(d(d(b,a),d(f,h)),g),c)}function g(a,b,c,d,e,g,h){return f(b&c|~b&d,a,b,e,g,h)}function h(a,b,c,d,e,g,h){return f(b&d|c&~d,a,b,e,g,h)}function i(a,b,c,d,e,g,h){return f(b^c^d,a,b,e,g,h)}function j(a,b,c,d,e,g,h){return f(c^(b|~d),a,b,e,g,h)}function k(a,b){a[b>>5]|=128<>>9<<4)+14]=b;var c,e,f,k,l,m=1732584193,n=-271733879,o=-1732584194,p=271733878;for(c=0;c>5]>>>b%32&255);return c}function m(a){var b,c=[];for(c[(a.length>>2)-1]=void 0,b=0;b>5]|=(255&a.charCodeAt(b/8))<16&&(e=k(e,8*a.length)),c=0;c<16;c+=1)f[c]=909522486^e[c],g[c]=1549556828^e[c];return d=k(f.concat(m(b)),512+8*b.length),l(k(g.concat(d),640))}function p(a){var b,c,d="0123456789abcdef",e="";for(c=0;c>>4&15)+d.charAt(15&b);return e}function q(a){return unescape(encodeURIComponent(a))}function r(a){return n(q(a))}function s(a){return p(r(a))}function t(a,b){return o(q(a),q(b))}function u(a,b){return p(t(a,b))}function v(a,b,c){return b?c?t(b,a):u(b,a):c?r(a):s(a)}b.exports=v},{}]},{},[6,1,2])(6)}); +/*! Raven.js 3.25.1 (b6f3c7a) | github.com/getsentry/raven-js */ +!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.Raven=a()}}(function(){return function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};b[g][0].call(k.exports,function(a){var c=b[g][1][a];return e(c?c:a)},k,k.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;gthis.l.maxBreadcrumbs&&this.v.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.s.push([a,b]),this.o&&this.G(),this},setUserContext:function(a){return this.k.user=a,this},setExtraContext:function(a){return this.$("extra",a),this},setTagsContext:function(a){return this.$("tags",a),this},clearContext:function(){return this.k={},this},getContext:function(){return JSON.parse(h(this.k))},setEnvironment:function(a){return this.l.environment=a,this},setRelease:function(a){return this.l.release=a,this},setDataCallback:function(a){var b=this.l.dataCallback;return this.l.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.l.breadcrumbCallback;return this.l.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.l.shouldSendCallback;return this.l.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.l.transport=a,this},lastException:function(){return this.e},lastEventId:function(){return this.g},isSetup:function(){return!!this.b&&(!!this.h||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.A("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=R.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(S){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.I;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.k.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.K(this.H(c)),h=S.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(S.head||S.body).appendChild(h)}},M:function(){var a=this;this.n+=1,setTimeout(function(){a.n-=1})},_:function(a,b){var c,d;if(this.c){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),S.createEvent?(c=S.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=S.createEventObject(),c.eventType=a);for(d in b)A(b,d)&&(c[d]=b[d]);if(S.createEvent)S.dispatchEvent(c);else try{S.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},aa:function(a){var b=this;return function(c){if(b.ba=null,b.w!==c){b.w=c;var d;try{d=E(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ca:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.ba;g||a.aa("input")(c),clearTimeout(g),a.ba=setTimeout(function(){a.ba=null},b)}}},da:function(a,b){var c=H(this.x.href),d=H(b),e=H(a);this.y=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},D:function(){var a=this;a.ea=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.N?a.ea.apply(this.P,arguments):a.ea.apply(this,arguments)}},R:function(){this.ea&&(Function.prototype.toString=this.ea)},E:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.da(b.y,c+""),a.apply(this,arguments)}};I(R.history,"pushState",j,d),I(R.history,"replaceState",j,d)}if(c.console&&"console"in R&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};w(["debug","info","warn","error","log"],function(a,b){O(console,b,k)})}},S:function(){for(var a;this.u.length;){a=this.u.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},T:function(){for(var a in this.r)this.q[a]=this.r[a]},G:function(){var a=this;w(this.s,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},H:function(a){var b=Q.exec(a),c={},d=7;try{for(;d--;)c[P[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.l.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},K:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},B:function(){this.n||this.W.apply(this,arguments)},W:function(a,b){var c=this.Y(a,b);this._("handle",{stackInfo:a,options:b}),this.ga(a.name,a.message,a.url,a.lineno,c,b)},Y:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(w(a.stack,function(b,e){var f=c.ha(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.v,0)}),this.k.user&&(a.user=this.k.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),a=this.qa(a),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||v(a[b]))&&delete a[b]}),s(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!v(a)&&(!s(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.na()?void this.A("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function F(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&l(b))for(c=b.split(/\s+/),f=0;fc?Q(a,b-1):d}function R(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?X:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function S(a,b){function c(a){return m(a)?a.map(function(a){return c(a)}):k(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!m(b)||m(b)&&0===b.length)return a;var d,e=A(b),f="********";try{d=JSON.parse(T(a))}catch(g){return a}return c(d)}var T=a(9),U="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},V=3,W=51200,X=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isDOMError:g,isDOMException:h,isUndefined:i,isFunction:j,isPlainObject:k,isString:l,isArray:m,isEmptyObject:n,supportsErrorEvent:o,supportsDOMError:p,supportsDOMException:q,supportsFetch:r,supportsReferrerPolicy:s,supportsPromiseRejectionEvent:t,wrappedCallback:u,each:v,objectMerge:w,truncate:y,objectFrozen:x,hasKey:z,joinRegExp:A,urlencode:B,uuid4:D,htmlTreeAsString:E,htmlElementAsString:F,isSameException:I,isSameStacktrace:J,parseUrl:C,fill:K,safeJoin:L,serializeException:Q,serializeKeysForMessage:R,sanitize:S}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{9:9}],8:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}function e(){return"undefined"==typeof document||null==document.location?"":(document.location.origin||(document.location.origin=document.location.protocol+"//"+document.location.hostname+(document.location.port?":"+document.location.port:"")),document.location.origin)}var f=a(7),g={collectWindowErrors:!0,debug:!1},h="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},i=[].slice,j="?",k=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;g.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function e(a,b){var c=null;if(!b||g.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(i.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,h,i){var l=null,m=f.isErrorEvent(i)?i.error:i,n=f.isErrorEvent(a)?a.message:a;if(v)g.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&f.isError(m))l=g.computeStackTrace(m),e(l,!0);else{var p,r={url:b,line:c,column:h},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(k);p&&(s=p[1],n=p[2])}r.func=j,l={name:s,message:n,url:d(),stack:[r]},e(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=h.onerror,h.onerror=l,r=!0)}function n(){r&&(h.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,e.apply(null,[a,!1].concat(b))}function p(a,b){var c=i.call(arguments,1);if(v){if(u===a)return;o()}var d=g.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),g.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,f,g=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,h=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,i=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,k=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,l=/\((\S*)(?::(\d+))(?::(\d+))\)/,m=a.stack.split("\n"),n=[],o=(/^(.*) is undefined$/.exec(a.message),0),p=m.length;o eval")>-1;r&&(b=k.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==o||c[5]||"undefined"==typeof a.columnNumber||(n[0].column=a.columnNumber+1),f={url:c[3],func:c[1]||j,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}if(!f.func&&f.line&&(f.func=j),f.url&&"blob:"===f.url.substr(0,5)){var s=new XMLHttpRequest;if(s.open("GET",f.url,!1),s.send(null),200===s.status){var t=s.responseText||"";t=t.slice(-300);var u=t.match(/\/\/# sourceMappingURL=(.*)$/);if(u){var v=u[1];"~"===v.charAt(0)&&(v=e()+v.slice(1)),f.url=v.slice(0,-4)}}}n.push(f)}return n.length?{name:a.name,message:a.message,url:d(),stack:n}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1, +e.func||(e.func=j),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,e){for(var h,i,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==f&&o!==g.report){if(i={url:null,func:j,line:null,column:null},o.name?i.func=o.name:(h=k.exec(o.toString()))&&(i.func=h[1]),"undefined"==typeof i.func)try{i.func=h.input.substring(0,h.input.indexOf("{"))}catch(p){}m[""+o]?n=!0:m[""+o]=!0,l.push(i)}e&&l.splice(0,e);var q={name:a.name,message:a.message,url:d(),stack:l};return b(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),q}function f(b,e){var f=null;e=null==e?0:+e;try{if(f=a(b))return f}catch(h){if(g.debug)throw h}try{if(f=c(b,e+1))return f}catch(h){if(g.debug)throw h}return{name:b.name,message:b.message,url:d()}}return f.augmentStackTraceWithInitialElement=b,f.computeStackTraceFromStackProp=a,f}(),b.exports=g}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{7:7}],9:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}],10:[function(a,b,c){function d(a,b){var c=(65535&a)+(65535&b),d=(a>>16)+(b>>16)+(c>>16);return d<<16|65535&c}function e(a,b){return a<>>32-b}function f(a,b,c,f,g,h){return d(e(d(d(b,a),d(f,h)),g),c)}function g(a,b,c,d,e,g,h){return f(b&c|~b&d,a,b,e,g,h)}function h(a,b,c,d,e,g,h){return f(b&d|c&~d,a,b,e,g,h)}function i(a,b,c,d,e,g,h){return f(b^c^d,a,b,e,g,h)}function j(a,b,c,d,e,g,h){return f(c^(b|~d),a,b,e,g,h)}function k(a,b){a[b>>5]|=128<>>9<<4)+14]=b;var c,e,f,k,l,m=1732584193,n=-271733879,o=-1732584194,p=271733878;for(c=0;c>5]>>>b%32&255);return c}function m(a){var b,c=[];for(c[(a.length>>2)-1]=void 0,b=0;b>5]|=(255&a.charCodeAt(b/8))<16&&(e=k(e,8*a.length)),c=0;c<16;c+=1)f[c]=909522486^e[c],g[c]=1549556828^e[c];return d=k(f.concat(m(b)),512+8*b.length),l(k(g.concat(d),640))}function p(a){var b,c,d="0123456789abcdef",e="";for(c=0;c>>4&15)+d.charAt(15&b);return e}function q(a){return unescape(encodeURIComponent(a))}function r(a){return n(q(a))}function s(a){return p(r(a))}function t(a,b){return o(q(a),q(b))}function u(a,b){return p(t(a,b))}function v(a,b,c){return b?c?t(b,a):u(b,a):c?r(a):s(a)}b.exports=v},{}]},{},[6,1,2])(6)}); //# sourceMappingURL=raven.min.js.map \ No newline at end of file diff --git a/dist/angular,ember/raven.min.js.map b/dist/angular,ember/raven.min.js.map index d00e5a7b1287..4de78099e245 100644 --- a/dist/angular,ember/raven.min.js.map +++ b/dist/angular,ember/raven.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","angularPlugin","angular","RavenProvider","$get","$window","ExceptionHandlerProvider","$provide","decorator","exceptionHandler","R","$delegate","ex","cause","captureException","extra","moduleName","provider","config","setDataCallback","wrappedCallback","data","_normalizeData","angularPattern","exception","values","matches","exec","value","type","message","angularDocs","substr","addPlugin","6","7","2","emberPlugin","Ember","_oldOnError","onerror","error","RSVP","on","reason","context","captureMessage","3","RavenConfigError","name","prototype","constructor","4","utils","wrapMethod","console","level","callback","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","msg","safeJoin","logger","Function","apply","5","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","sanitizeKeys","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isErrorEvent","isDOMError","isDOMException","isError","isObject","isPlainObject","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","sanitize","wrapConsoleMethod","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","dsn","options","_logDebug","globalOptions","key","setDSN","push","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","toString","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","func","undefined","wrap","_before","wrapped","deep","_ignoreNextOnError","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","U","event","unhandledPromiseRejection","C","_promiseRejectionHandler","bind","addEventListener","Q","removeEventListener","trimHeadFrames","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","V","currentOptions","exKeys","Object","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","M","setTimeout","_","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","aa","evtName","_keypressTimeout","target","category","ca","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","da","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","D","_originalFunctionToString","E","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","F","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","S","builtin","T","G","installer","concat","H","str","m","allowSecretKey","K","port","B","W","stackInfo","_triggerEvent","_processException","lineno","Y","frame","_normalizeFrame","in_app","ha","stackInfoUrl","normalized","filename","line","colno","column","function","ga","prefixedMessage","culprit","ia","request","Referer","breadcrumbs","_trimBreadcrumbs","ja","urlProp","urlProps","ka","httpData","userAgent","User-Agent","referrer","z","_backoffDuration","_backoffStart","na","oa","current","last","pa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Z","baseData","project","platform","_getHttpData","serverName","server_name","_sanitizeData","forEach","random","_sendProcessedPayload","qa","sa","ra","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","ta","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","open","setRequestHeader","send","ua","hash","evaluated","A","$","setUser","setReleaseContext","10","8","9","RavenConstructor","_Raven","noConflict","Client","what","supportsErrorEvent","ErrorEvent","supportsDOMError","DOMError","supportsDOMException","DOMException","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","sanitizeMask","safeInput","o_O","getLocationHref","getLocationOrigin","origin","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","responseText","sourceMaps","sourceMapAddress","charAt","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","y","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","string","raw"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file +{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","angularPlugin","angular","RavenProvider","$get","$window","ExceptionHandlerProvider","$provide","decorator","exceptionHandler","R","$delegate","ex","cause","captureException","extra","moduleName","provider","config","setDataCallback","wrappedCallback","data","_normalizeData","angularPattern","exception","values","matches","exec","value","type","message","angularDocs","substr","addPlugin","6","7","2","emberPlugin","Ember","_oldOnError","onerror","error","RSVP","on","reason","context","captureMessage","3","RavenConfigError","name","prototype","constructor","4","utils","wrapMethod","console","level","callback","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","msg","safeJoin","logger","Function","apply","5","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","sanitizeKeys","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isErrorEvent","isDOMError","isDOMException","isError","isObject","isPlainObject","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","sanitize","wrapConsoleMethod","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","dsn","options","_logDebug","globalOptions","key","setDSN","push","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","toString","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","func","undefined","wrap","_before","wrapped","deep","_ignoreNextOnError","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","U","event","unhandledPromiseRejection","C","_promiseRejectionHandler","bind","addEventListener","Q","removeEventListener","trimHeadFrames","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","V","currentOptions","exKeys","Object","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","M","setTimeout","_","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","aa","evtName","_keypressTimeout","target","category","ca","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","da","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","D","_originalFunctionToString","E","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","F","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","S","builtin","T","G","installer","concat","H","str","m","allowSecretKey","K","port","B","W","stackInfo","_triggerEvent","_processException","lineno","Y","frame","_normalizeFrame","in_app","ha","stackInfoUrl","normalized","filename","line","colno","column","function","ga","prefixedMessage","culprit","ia","request","Referer","breadcrumbs","_trimBreadcrumbs","ja","urlProp","urlProps","ka","httpData","userAgent","User-Agent","referrer","z","_backoffDuration","_backoffStart","na","oa","current","last","pa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Z","baseData","project","platform","_getHttpData","serverName","server_name","_sanitizeData","forEach","random","_sendProcessedPayload","qa","sa","ra","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","ta","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","open","setRequestHeader","send","ua","hash","evaluated","A","$","setUser","setReleaseContext","10","8","9","RavenConstructor","_Raven","noConflict","Client","what","supportsErrorEvent","ErrorEvent","supportsDOMError","DOMError","supportsDOMException","DOMException","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","sanitizeMask","safeInput","o_O","getLocationHref","getLocationOrigin","origin","hostname","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","responseText","sourceMaps","sourceMapAddress","charAt","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","y","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","string","raw"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file diff --git a/dist/angular,require,vue/raven.js b/dist/angular,require,vue/raven.js index 92696212f67b..6eb6a906318e 100644 --- a/dist/angular,require,vue/raven.js +++ b/dist/angular,require,vue/raven.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.25.0 (80dffad) | github.com/getsentry/raven-js */ +/*! Raven.js 3.25.1 (b6f3c7a) | github.com/getsentry/raven-js */ /* * Includes TraceKit @@ -351,7 +351,7 @@ Raven.prototype = { // webpack (using a build step causes webpack #1617). Grunt verifies that // this value matches package.json during build. // See: https://github.com/getsentry/raven-js/issues/465 - VERSION: '3.25.0', + VERSION: '3.25.1', debug: false, @@ -1660,8 +1660,8 @@ Raven.prototype = { var hasPushAndReplaceState = !isChromePackagedApp && _window.history && - history.pushState && - history.replaceState; + _window.history.pushState && + _window.history.replaceState; if (autoBreadcrumbs.location && hasPushAndReplaceState) { // TODO: remove onpopstate handler on uninstall() var oldOnPopState = _window.onpopstate; @@ -1690,8 +1690,8 @@ Raven.prototype = { }; }; - fill(history, 'pushState', historyReplacementFunction, wrappedBuiltIns); - fill(history, 'replaceState', historyReplacementFunction, wrappedBuiltIns); + fill(_window.history, 'pushState', historyReplacementFunction, wrappedBuiltIns); + fill(_window.history, 'replaceState', historyReplacementFunction, wrappedBuiltIns); } if (autoBreadcrumbs.console && 'console' in _window && console.log) { @@ -1981,7 +1981,7 @@ Raven.prototype = { if (this._hasNavigator && _navigator.userAgent) { httpData.headers = { - 'User-Agent': navigator.userAgent + 'User-Agent': _navigator.userAgent }; } @@ -3156,6 +3156,16 @@ function getLocationHref() { function getLocationOrigin() { if (typeof document === 'undefined' || document.location == null) return ''; + + // Oh dear IE10... + if (!document.location.origin) { + document.location.origin = + document.location.protocol + + '//' + + document.location.hostname + + (document.location.port ? ':' + document.location.port : ''); + } + return document.location.origin; } diff --git a/dist/angular,require,vue/raven.min.js b/dist/angular,require,vue/raven.min.js index f265d203a787..76cfc523a46b 100644 --- a/dist/angular,require,vue/raven.min.js +++ b/dist/angular,require,vue/raven.min.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.25.0 (80dffad) | github.com/getsentry/raven-js */ -!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.Raven=a()}}(function(){var a;return function b(a,c,d){function e(g,h){if(!c[g]){if(!a[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};a[g][0].call(k.exports,function(b){var c=a[g][1][b];return e(c?c:b)},k,k.exports,b,a,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;g":"anonymous component")+(a._isVue&&a.$options.__file?" at "+a.$options.__file:"")}function e(a,b){if(b=b||window.Vue,b&&b.config){var c=b.config.errorHandler;b.config.errorHandler=function(b,e,f){var g={};"[object Object]"===Object.prototype.toString.call(e)&&(g.componentName=d(e),g.propsData=e.$options.propsData),"undefined"!=typeof f&&(g.lifecycleHook=f),a.captureException(b,{extra:g}),"function"==typeof c&&c.call(this,b,e,f)}}}b.exports=e,a(7).addPlugin(b.exports)},{7:7}],4:[function(a,b,c){function d(a){this.name="RavenConfigError",this.message=a}d.prototype=new Error,d.prototype.constructor=d,b.exports=d},{}],5:[function(a,b,c){var d=a(8),e=function(a,b,c){var e=a[b],f=a;if(b in a){var g="warn"===b?"warning":b;a[b]=function(){var a=[].slice.call(arguments),h=d.safeJoin(a," "),i={level:g,logger:"console",extra:{arguments:a}};"assert"===b?a[0]===!1&&(h="Assertion failed: "+(d.safeJoin(a.slice(1)," ")||"console.assert"),i.extra.arguments=a.slice(1),c&&c(h,i)):c&&c(h,i),e&&Function.prototype.apply.call(e,f,a)}}};b.exports={wrapMethod:e}},{8:8}],6:[function(a,b,c){(function(c){function d(){return+new Date}function e(a,b){return s(b)?function(c){return b(c,a)}:b}function f(){this.b=!("object"!=typeof JSON||!JSON.stringify),this.c=!r(S),this.d=!r(T),this.e=null,this.f=null,this.g=null,this.h=null,this.i=null,this.j=null,this.k={},this.l={release:R.SENTRY_RELEASE&&R.SENTRY_RELEASE.id,logger:"javascript",ignoreErrors:[],ignoreUrls:[],whitelistUrls:[],includePaths:[],headers:null,collectWindowErrors:!0,captureUnhandledRejections:!0,maxMessageLength:0,maxUrlLength:250,stackTraceLimit:50,autoBreadcrumbs:!0,instrument:!0,sampleRate:1,sanitizeKeys:[]},this.m={method:"POST",keepalive:!0,referrerPolicy:K()?"origin":""},this.n=0,this.o=!1,this.p=Error.stackTraceLimit,this.q=R.console||{},this.r={},this.s=[],this.t=d(),this.u=[],this.v=[],this.w=null,this.x=R.location,this.y=this.x&&this.x.href,this.z();for(var a in this.q)this.r[a]=this.q[a]}var g=a(9),h=a(10),i=a(11),j=a(4),k=a(8),l=k.isErrorEvent,m=k.isDOMError,n=k.isDOMException,o=k.isError,p=k.isObject,q=k.isPlainObject,r=k.isUndefined,s=k.isFunction,t=k.isString,u=k.isArray,v=k.isEmptyObject,w=k.each,x=k.objectMerge,y=k.truncate,z=k.objectFrozen,A=k.hasKey,B=k.joinRegExp,C=k.urlencode,D=k.uuid4,E=k.htmlTreeAsString,F=k.isSameException,G=k.isSameStacktrace,H=k.parseUrl,I=k.fill,J=k.supportsFetch,K=k.supportsReferrerPolicy,L=k.serializeKeysForMessage,M=k.serializeException,N=k.sanitize,O=a(5).wrapMethod,P="source protocol user pass host port path".split(" "),Q=/^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/,R="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},S=R.document,T=R.navigator;f.prototype={VERSION:"3.25.0",debug:!1,TraceKit:g,config:function(a,b){var c=this;if(c.h)return this.A("error","Error: Raven has already been configured"),c;if(!a)return c;var d=c.l;b&&w(b,function(a,b){"tags"===a||"extra"===a||"user"===a?c.k[a]=b:d[a]=b}),c.setDSN(a),d.ignoreErrors.push(/^Script error\.?$/),d.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/),d.ignoreErrors=B(d.ignoreErrors),d.ignoreUrls=!!d.ignoreUrls.length&&B(d.ignoreUrls),d.whitelistUrls=!!d.whitelistUrls.length&&B(d.whitelistUrls),d.includePaths=B(d.includePaths),d.maxBreadcrumbs=Math.max(0,Math.min(d.maxBreadcrumbs||100,100));var e={xhr:!0,console:!0,dom:!0,location:!0,sentry:!0},f=d.autoBreadcrumbs;"[object Object]"==={}.toString.call(f)?f=x(e,f):f!==!1&&(f=e),d.autoBreadcrumbs=f;var h={tryCatch:!0},i=d.instrument;return"[object Object]"==={}.toString.call(i)?i=x(h,i):i!==!1&&(i=h),d.instrument=i,g.collectWindowErrors=!!d.collectWindowErrors,c},install:function(){var a=this;return a.isSetup()&&!a.o&&(g.report.subscribe(function(){a.B.apply(a,arguments)}),a.l.captureUnhandledRejections&&a.C(),a.D(),a.l.instrument&&a.l.instrument.tryCatch&&a.E(),a.l.autoBreadcrumbs&&a.F(),a.G(),a.o=!0),Error.stackTraceLimit=a.l.stackTraceLimit,this},setDSN:function(a){var b=this,c=b.H(a),d=c.path.lastIndexOf("/"),e=c.path.substr(1,d);b.I=a,b.i=c.user,b.J=c.pass&&c.pass.substr(1),b.j=c.path.substr(d+1),b.h=b.K(c),b.L=b.h+"/"+e+"api/"+b.j+"/store/",this.z()},context:function(a,b,c){return s(a)&&(c=b||[],b=a,a=void 0),this.wrap(a,b).apply(this,c)},wrap:function(a,b,c){function d(){var d=[],f=arguments.length,g=!a||a&&a.deep!==!1;for(c&&s(c)&&c.apply(this,arguments);f--;)d[f]=g?e.wrap(a,arguments[f]):arguments[f];try{return b.apply(this,d)}catch(h){throw e.M(),e.captureException(h,a),h}}var e=this;if(r(b)&&!s(a))return a;if(s(a)&&(b=a,a=void 0),!s(b))return b;try{if(b.N)return b;if(b.O)return b.O}catch(f){return b}for(var g in b)A(b,g)&&(d[g]=b[g]);return d.prototype=b.prototype,b.O=d,d.N=!0,d.P=b,d},uninstall:function(){return g.report.uninstall(),this.Q(),this.R(),this.S(),this.T(),Error.stackTraceLimit=this.p,this.o=!1,this},U:function(a){this.A("debug","Raven caught unhandled promise rejection:",a),this.captureException(a.reason,{extra:{unhandledPromiseRejection:!0}})},C:function(){return this.U=this.U.bind(this),R.addEventListener&&R.addEventListener("unhandledrejection",this.U),this},Q:function(){return R.removeEventListener&&R.removeEventListener("unhandledrejection",this.U),this},captureException:function(a,b){if(b=x({trimHeadFrames:0},b?b:{}),l(a)&&a.error)a=a.error;else{if(m(a)||n(a)){var c=a.name||(m(a)?"DOMError":"DOMException"),d=a.message?c+": "+a.message:c;return this.captureMessage(d,x(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}))}if(o(a))a=a;else{if(!q(a))return this.captureMessage(a,x(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}));b=this.V(b,a),a=new Error(b.message)}}this.e=a;try{var e=g.computeStackTrace(a);this.W(e,b)}catch(f){if(a!==f)throw f}return this},V:function(a,b){var c=Object.keys(b).sort(),d=x(a,{message:"Non-Error exception captured with keys: "+L(c),fingerprint:[i(c)],extra:a.extra||{}});return d.extra.X=M(b),d},captureMessage:function(a,b){if(!this.l.ignoreErrors.test||!this.l.ignoreErrors.test(a)){b=b||{},a+="";var c,d=x({message:a},b);try{throw new Error(a)}catch(e){c=e}c.name=null;var f=g.computeStackTrace(c),h=u(f.stack)&&f.stack[1];h&&"Raven.captureException"===h.func&&(h=f.stack[2]);var i=h&&h.url||"";if((!this.l.ignoreUrls.test||!this.l.ignoreUrls.test(i))&&(!this.l.whitelistUrls.test||this.l.whitelistUrls.test(i))){if(this.l.stacktrace||b&&b.stacktrace){d.fingerprint=null==d.fingerprint?a:d.fingerprint,b=x({trimHeadFrames:0},b),b.trimHeadFrames+=1;var j=this.Y(f,b);d.stacktrace={frames:j.reverse()}}return d.fingerprint&&(d.fingerprint=u(d.fingerprint)?d.fingerprint:[d.fingerprint]),this.Z(d),this}}},captureBreadcrumb:function(a){var b=x({timestamp:d()/1e3},a);if(s(this.l.breadcrumbCallback)){var c=this.l.breadcrumbCallback(b);if(p(c)&&!v(c))b=c;else if(c===!1)return this}return this.v.push(b),this.v.length>this.l.maxBreadcrumbs&&this.v.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.s.push([a,b]),this.o&&this.G(),this},setUserContext:function(a){return this.k.user=a,this},setExtraContext:function(a){return this.$("extra",a),this},setTagsContext:function(a){return this.$("tags",a),this},clearContext:function(){return this.k={},this},getContext:function(){return JSON.parse(h(this.k))},setEnvironment:function(a){return this.l.environment=a,this},setRelease:function(a){return this.l.release=a,this},setDataCallback:function(a){var b=this.l.dataCallback;return this.l.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.l.breadcrumbCallback;return this.l.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.l.shouldSendCallback;return this.l.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.l.transport=a,this},lastException:function(){return this.e},lastEventId:function(){return this.g},isSetup:function(){return!!this.b&&(!!this.h||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.A("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=R.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(S){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.I;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.k.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.K(this.H(c)),h=S.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(S.head||S.body).appendChild(h)}},M:function(){var a=this;this.n+=1,setTimeout(function(){a.n-=1})},_:function(a,b){var c,d;if(this.c){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),S.createEvent?(c=S.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=S.createEventObject(),c.eventType=a);for(d in b)A(b,d)&&(c[d]=b[d]);if(S.createEvent)S.dispatchEvent(c);else try{S.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},aa:function(a){var b=this;return function(c){if(b.ba=null,b.w!==c){b.w=c;var d;try{d=E(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ca:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.ba;g||a.aa("input")(c),clearTimeout(g),a.ba=setTimeout(function(){a.ba=null},b)}}},da:function(a,b){var c=H(this.x.href),d=H(b),e=H(a);this.y=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},D:function(){var a=this;a.ea=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.N?a.ea.apply(this.P,arguments):a.ea.apply(this,arguments)}},R:function(){this.ea&&(Function.prototype.toString=this.ea)},E:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.da(b.y,c+""),a.apply(this,arguments)}};I(history,"pushState",j,d),I(history,"replaceState",j,d)}if(c.console&&"console"in R&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};w(["debug","info","warn","error","log"],function(a,b){O(console,b,k)})}},S:function(){for(var a;this.u.length;){a=this.u.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},T:function(){for(var a in this.r)this.q[a]=this.r[a]},G:function(){var a=this;w(this.s,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},H:function(a){var b=Q.exec(a),c={},d=7;try{for(;d--;)c[P[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.l.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},K:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},B:function(){this.n||this.W.apply(this,arguments)},W:function(a,b){var c=this.Y(a,b);this._("handle",{stackInfo:a,options:b}),this.ga(a.name,a.message,a.url,a.lineno,c,b)},Y:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(w(a.stack,function(b,e){var f=c.ha(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.v,0)}),this.k.user&&(a.user=this.k.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),a=this.qa(a),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||v(a[b]))&&delete a[b]}),s(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!v(a)&&(!s(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.na()?void this.A("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function F(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&l(b))for(c=b.split(/\s+/),f=0;fc?Q(a,b-1):d}function R(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?X:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function S(a,b){function c(a){return m(a)?a.map(function(a){return c(a)}):k(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!m(b)||m(b)&&0===b.length)return a;var d,e=A(b),f="********";try{d=JSON.parse(T(a))}catch(g){return a}return c(d)}var T=a(10),U="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},V=3,W=51200,X=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isDOMError:g,isDOMException:h,isUndefined:i,isFunction:j,isPlainObject:k,isString:l,isArray:m,isEmptyObject:n,supportsErrorEvent:o,supportsDOMError:p,supportsDOMException:q,supportsFetch:r,supportsReferrerPolicy:s,supportsPromiseRejectionEvent:t,wrappedCallback:u,each:v,objectMerge:w,truncate:y,objectFrozen:x,hasKey:z,joinRegExp:A,urlencode:B,uuid4:D,htmlTreeAsString:E,htmlElementAsString:F,isSameException:I,isSameStacktrace:J,parseUrl:C,fill:K,safeJoin:L,serializeException:Q,serializeKeysForMessage:R,sanitize:S}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{10:10}],9:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}function e(){return"undefined"==typeof document||null==document.location?"":document.location.origin}var f=a(8),g={collectWindowErrors:!0,debug:!1},h="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},i=[].slice,j="?",k=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;g.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function e(a,b){var c=null;if(!b||g.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(i.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,h,i){var l=null,m=f.isErrorEvent(i)?i.error:i,n=f.isErrorEvent(a)?a.message:a;if(v)g.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&f.isError(m))l=g.computeStackTrace(m),e(l,!0);else{var p,r={url:b,line:c,column:h},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(k);p&&(s=p[1],n=p[2])}r.func=j,l={name:s,message:n,url:d(),stack:[r]},e(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=h.onerror,h.onerror=l,r=!0)}function n(){r&&(h.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,e.apply(null,[a,!1].concat(b))}function p(a,b){var c=i.call(arguments,1);if(v){if(u===a)return;o()}var d=g.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),g.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,f,g=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,h=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,i=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,k=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,l=/\((\S*)(?::(\d+))(?::(\d+))\)/,m=a.stack.split("\n"),n=[],o=(/^(.*) is undefined$/.exec(a.message),0),p=m.length;o eval")>-1;r&&(b=k.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==o||c[5]||"undefined"==typeof a.columnNumber||(n[0].column=a.columnNumber+1),f={url:c[3],func:c[1]||j,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}if(!f.func&&f.line&&(f.func=j),f.url&&"blob:"===f.url.substr(0,5)){var s=new XMLHttpRequest;if(s.open("GET",f.url,!1),s.send(null),200===s.status){var t=s.responseText||"";t=t.slice(-300); -var u=t.match(/\/\/# sourceMappingURL=(.*)$/);if(u){var v=u[1];"~"===v.charAt(0)&&(v=e()+v.slice(1)),f.url=v.slice(0,-4)}}}n.push(f)}return n.length?{name:a.name,message:a.message,url:d(),stack:n}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=j),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,e){for(var h,i,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==f&&o!==g.report){if(i={url:null,func:j,line:null,column:null},o.name?i.func=o.name:(h=k.exec(o.toString()))&&(i.func=h[1]),"undefined"==typeof i.func)try{i.func=h.input.substring(0,h.input.indexOf("{"))}catch(p){}m[""+o]?n=!0:m[""+o]=!0,l.push(i)}e&&l.splice(0,e);var q={name:a.name,message:a.message,url:d(),stack:l};return b(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),q}function f(b,e){var f=null;e=null==e?0:+e;try{if(f=a(b))return f}catch(h){if(g.debug)throw h}try{if(f=c(b,e+1))return f}catch(h){if(g.debug)throw h}return{name:b.name,message:b.message,url:d()}}return f.augmentStackTraceWithInitialElement=b,f.computeStackTraceFromStackProp=a,f}(),b.exports=g}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{8:8}],10:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}],11:[function(a,b,c){function d(a,b){var c=(65535&a)+(65535&b),d=(a>>16)+(b>>16)+(c>>16);return d<<16|65535&c}function e(a,b){return a<>>32-b}function f(a,b,c,f,g,h){return d(e(d(d(b,a),d(f,h)),g),c)}function g(a,b,c,d,e,g,h){return f(b&c|~b&d,a,b,e,g,h)}function h(a,b,c,d,e,g,h){return f(b&d|c&~d,a,b,e,g,h)}function i(a,b,c,d,e,g,h){return f(b^c^d,a,b,e,g,h)}function j(a,b,c,d,e,g,h){return f(c^(b|~d),a,b,e,g,h)}function k(a,b){a[b>>5]|=128<>>9<<4)+14]=b;var c,e,f,k,l,m=1732584193,n=-271733879,o=-1732584194,p=271733878;for(c=0;c>5]>>>b%32&255);return c}function m(a){var b,c=[];for(c[(a.length>>2)-1]=void 0,b=0;b>5]|=(255&a.charCodeAt(b/8))<16&&(e=k(e,8*a.length)),c=0;c<16;c+=1)f[c]=909522486^e[c],g[c]=1549556828^e[c];return d=k(f.concat(m(b)),512+8*b.length),l(k(g.concat(d),640))}function p(a){var b,c,d="0123456789abcdef",e="";for(c=0;c>>4&15)+d.charAt(15&b);return e}function q(a){return unescape(encodeURIComponent(a))}function r(a){return n(q(a))}function s(a){return p(r(a))}function t(a,b){return o(q(a),q(b))}function u(a,b){return p(t(a,b))}function v(a,b,c){return b?c?t(b,a):u(b,a):c?r(a):s(a)}b.exports=v},{}]},{},[7,1,2,3])(7)}); +/*! Raven.js 3.25.1 (b6f3c7a) | github.com/getsentry/raven-js */ +!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.Raven=a()}}(function(){var a;return function b(a,c,d){function e(g,h){if(!c[g]){if(!a[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};a[g][0].call(k.exports,function(b){var c=a[g][1][b];return e(c?c:b)},k,k.exports,b,a,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;g":"anonymous component")+(a._isVue&&a.$options.__file?" at "+a.$options.__file:"")}function e(a,b){if(b=b||window.Vue,b&&b.config){var c=b.config.errorHandler;b.config.errorHandler=function(b,e,f){var g={};"[object Object]"===Object.prototype.toString.call(e)&&(g.componentName=d(e),g.propsData=e.$options.propsData),"undefined"!=typeof f&&(g.lifecycleHook=f),a.captureException(b,{extra:g}),"function"==typeof c&&c.call(this,b,e,f)}}}b.exports=e,a(7).addPlugin(b.exports)},{7:7}],4:[function(a,b,c){function d(a){this.name="RavenConfigError",this.message=a}d.prototype=new Error,d.prototype.constructor=d,b.exports=d},{}],5:[function(a,b,c){var d=a(8),e=function(a,b,c){var e=a[b],f=a;if(b in a){var g="warn"===b?"warning":b;a[b]=function(){var a=[].slice.call(arguments),h=d.safeJoin(a," "),i={level:g,logger:"console",extra:{arguments:a}};"assert"===b?a[0]===!1&&(h="Assertion failed: "+(d.safeJoin(a.slice(1)," ")||"console.assert"),i.extra.arguments=a.slice(1),c&&c(h,i)):c&&c(h,i),e&&Function.prototype.apply.call(e,f,a)}}};b.exports={wrapMethod:e}},{8:8}],6:[function(a,b,c){(function(c){function d(){return+new Date}function e(a,b){return s(b)?function(c){return b(c,a)}:b}function f(){this.b=!("object"!=typeof JSON||!JSON.stringify),this.c=!r(S),this.d=!r(T),this.e=null,this.f=null,this.g=null,this.h=null,this.i=null,this.j=null,this.k={},this.l={release:R.SENTRY_RELEASE&&R.SENTRY_RELEASE.id,logger:"javascript",ignoreErrors:[],ignoreUrls:[],whitelistUrls:[],includePaths:[],headers:null,collectWindowErrors:!0,captureUnhandledRejections:!0,maxMessageLength:0,maxUrlLength:250,stackTraceLimit:50,autoBreadcrumbs:!0,instrument:!0,sampleRate:1,sanitizeKeys:[]},this.m={method:"POST",keepalive:!0,referrerPolicy:K()?"origin":""},this.n=0,this.o=!1,this.p=Error.stackTraceLimit,this.q=R.console||{},this.r={},this.s=[],this.t=d(),this.u=[],this.v=[],this.w=null,this.x=R.location,this.y=this.x&&this.x.href,this.z();for(var a in this.q)this.r[a]=this.q[a]}var g=a(9),h=a(10),i=a(11),j=a(4),k=a(8),l=k.isErrorEvent,m=k.isDOMError,n=k.isDOMException,o=k.isError,p=k.isObject,q=k.isPlainObject,r=k.isUndefined,s=k.isFunction,t=k.isString,u=k.isArray,v=k.isEmptyObject,w=k.each,x=k.objectMerge,y=k.truncate,z=k.objectFrozen,A=k.hasKey,B=k.joinRegExp,C=k.urlencode,D=k.uuid4,E=k.htmlTreeAsString,F=k.isSameException,G=k.isSameStacktrace,H=k.parseUrl,I=k.fill,J=k.supportsFetch,K=k.supportsReferrerPolicy,L=k.serializeKeysForMessage,M=k.serializeException,N=k.sanitize,O=a(5).wrapMethod,P="source protocol user pass host port path".split(" "),Q=/^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/,R="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},S=R.document,T=R.navigator;f.prototype={VERSION:"3.25.1",debug:!1,TraceKit:g,config:function(a,b){var c=this;if(c.h)return this.A("error","Error: Raven has already been configured"),c;if(!a)return c;var d=c.l;b&&w(b,function(a,b){"tags"===a||"extra"===a||"user"===a?c.k[a]=b:d[a]=b}),c.setDSN(a),d.ignoreErrors.push(/^Script error\.?$/),d.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/),d.ignoreErrors=B(d.ignoreErrors),d.ignoreUrls=!!d.ignoreUrls.length&&B(d.ignoreUrls),d.whitelistUrls=!!d.whitelistUrls.length&&B(d.whitelistUrls),d.includePaths=B(d.includePaths),d.maxBreadcrumbs=Math.max(0,Math.min(d.maxBreadcrumbs||100,100));var e={xhr:!0,console:!0,dom:!0,location:!0,sentry:!0},f=d.autoBreadcrumbs;"[object Object]"==={}.toString.call(f)?f=x(e,f):f!==!1&&(f=e),d.autoBreadcrumbs=f;var h={tryCatch:!0},i=d.instrument;return"[object Object]"==={}.toString.call(i)?i=x(h,i):i!==!1&&(i=h),d.instrument=i,g.collectWindowErrors=!!d.collectWindowErrors,c},install:function(){var a=this;return a.isSetup()&&!a.o&&(g.report.subscribe(function(){a.B.apply(a,arguments)}),a.l.captureUnhandledRejections&&a.C(),a.D(),a.l.instrument&&a.l.instrument.tryCatch&&a.E(),a.l.autoBreadcrumbs&&a.F(),a.G(),a.o=!0),Error.stackTraceLimit=a.l.stackTraceLimit,this},setDSN:function(a){var b=this,c=b.H(a),d=c.path.lastIndexOf("/"),e=c.path.substr(1,d);b.I=a,b.i=c.user,b.J=c.pass&&c.pass.substr(1),b.j=c.path.substr(d+1),b.h=b.K(c),b.L=b.h+"/"+e+"api/"+b.j+"/store/",this.z()},context:function(a,b,c){return s(a)&&(c=b||[],b=a,a=void 0),this.wrap(a,b).apply(this,c)},wrap:function(a,b,c){function d(){var d=[],f=arguments.length,g=!a||a&&a.deep!==!1;for(c&&s(c)&&c.apply(this,arguments);f--;)d[f]=g?e.wrap(a,arguments[f]):arguments[f];try{return b.apply(this,d)}catch(h){throw e.M(),e.captureException(h,a),h}}var e=this;if(r(b)&&!s(a))return a;if(s(a)&&(b=a,a=void 0),!s(b))return b;try{if(b.N)return b;if(b.O)return b.O}catch(f){return b}for(var g in b)A(b,g)&&(d[g]=b[g]);return d.prototype=b.prototype,b.O=d,d.N=!0,d.P=b,d},uninstall:function(){return g.report.uninstall(),this.Q(),this.R(),this.S(),this.T(),Error.stackTraceLimit=this.p,this.o=!1,this},U:function(a){this.A("debug","Raven caught unhandled promise rejection:",a),this.captureException(a.reason,{extra:{unhandledPromiseRejection:!0}})},C:function(){return this.U=this.U.bind(this),R.addEventListener&&R.addEventListener("unhandledrejection",this.U),this},Q:function(){return R.removeEventListener&&R.removeEventListener("unhandledrejection",this.U),this},captureException:function(a,b){if(b=x({trimHeadFrames:0},b?b:{}),l(a)&&a.error)a=a.error;else{if(m(a)||n(a)){var c=a.name||(m(a)?"DOMError":"DOMException"),d=a.message?c+": "+a.message:c;return this.captureMessage(d,x(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}))}if(o(a))a=a;else{if(!q(a))return this.captureMessage(a,x(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}));b=this.V(b,a),a=new Error(b.message)}}this.e=a;try{var e=g.computeStackTrace(a);this.W(e,b)}catch(f){if(a!==f)throw f}return this},V:function(a,b){var c=Object.keys(b).sort(),d=x(a,{message:"Non-Error exception captured with keys: "+L(c),fingerprint:[i(c)],extra:a.extra||{}});return d.extra.X=M(b),d},captureMessage:function(a,b){if(!this.l.ignoreErrors.test||!this.l.ignoreErrors.test(a)){b=b||{},a+="";var c,d=x({message:a},b);try{throw new Error(a)}catch(e){c=e}c.name=null;var f=g.computeStackTrace(c),h=u(f.stack)&&f.stack[1];h&&"Raven.captureException"===h.func&&(h=f.stack[2]);var i=h&&h.url||"";if((!this.l.ignoreUrls.test||!this.l.ignoreUrls.test(i))&&(!this.l.whitelistUrls.test||this.l.whitelistUrls.test(i))){if(this.l.stacktrace||b&&b.stacktrace){d.fingerprint=null==d.fingerprint?a:d.fingerprint,b=x({trimHeadFrames:0},b),b.trimHeadFrames+=1;var j=this.Y(f,b);d.stacktrace={frames:j.reverse()}}return d.fingerprint&&(d.fingerprint=u(d.fingerprint)?d.fingerprint:[d.fingerprint]),this.Z(d),this}}},captureBreadcrumb:function(a){var b=x({timestamp:d()/1e3},a);if(s(this.l.breadcrumbCallback)){var c=this.l.breadcrumbCallback(b);if(p(c)&&!v(c))b=c;else if(c===!1)return this}return this.v.push(b),this.v.length>this.l.maxBreadcrumbs&&this.v.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.s.push([a,b]),this.o&&this.G(),this},setUserContext:function(a){return this.k.user=a,this},setExtraContext:function(a){return this.$("extra",a),this},setTagsContext:function(a){return this.$("tags",a),this},clearContext:function(){return this.k={},this},getContext:function(){return JSON.parse(h(this.k))},setEnvironment:function(a){return this.l.environment=a,this},setRelease:function(a){return this.l.release=a,this},setDataCallback:function(a){var b=this.l.dataCallback;return this.l.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.l.breadcrumbCallback;return this.l.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.l.shouldSendCallback;return this.l.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.l.transport=a,this},lastException:function(){return this.e},lastEventId:function(){return this.g},isSetup:function(){return!!this.b&&(!!this.h||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.A("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=R.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(S){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.I;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.k.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.K(this.H(c)),h=S.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(S.head||S.body).appendChild(h)}},M:function(){var a=this;this.n+=1,setTimeout(function(){a.n-=1})},_:function(a,b){var c,d;if(this.c){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),S.createEvent?(c=S.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=S.createEventObject(),c.eventType=a);for(d in b)A(b,d)&&(c[d]=b[d]);if(S.createEvent)S.dispatchEvent(c);else try{S.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},aa:function(a){var b=this;return function(c){if(b.ba=null,b.w!==c){b.w=c;var d;try{d=E(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ca:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.ba;g||a.aa("input")(c),clearTimeout(g),a.ba=setTimeout(function(){a.ba=null},b)}}},da:function(a,b){var c=H(this.x.href),d=H(b),e=H(a);this.y=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},D:function(){var a=this;a.ea=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.N?a.ea.apply(this.P,arguments):a.ea.apply(this,arguments)}},R:function(){this.ea&&(Function.prototype.toString=this.ea)},E:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.da(b.y,c+""),a.apply(this,arguments)}};I(R.history,"pushState",j,d),I(R.history,"replaceState",j,d)}if(c.console&&"console"in R&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};w(["debug","info","warn","error","log"],function(a,b){O(console,b,k)})}},S:function(){for(var a;this.u.length;){a=this.u.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},T:function(){for(var a in this.r)this.q[a]=this.r[a]},G:function(){var a=this;w(this.s,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},H:function(a){var b=Q.exec(a),c={},d=7;try{for(;d--;)c[P[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.l.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},K:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},B:function(){this.n||this.W.apply(this,arguments)},W:function(a,b){var c=this.Y(a,b);this._("handle",{stackInfo:a,options:b}),this.ga(a.name,a.message,a.url,a.lineno,c,b)},Y:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(w(a.stack,function(b,e){var f=c.ha(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.v,0)}),this.k.user&&(a.user=this.k.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),a=this.qa(a),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||v(a[b]))&&delete a[b]}),s(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!v(a)&&(!s(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.na()?void this.A("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function F(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&l(b))for(c=b.split(/\s+/),f=0;fc?Q(a,b-1):d}function R(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?X:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function S(a,b){function c(a){return m(a)?a.map(function(a){return c(a)}):k(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!m(b)||m(b)&&0===b.length)return a;var d,e=A(b),f="********";try{d=JSON.parse(T(a))}catch(g){return a}return c(d)}var T=a(10),U="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},V=3,W=51200,X=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isDOMError:g,isDOMException:h,isUndefined:i,isFunction:j,isPlainObject:k,isString:l,isArray:m,isEmptyObject:n,supportsErrorEvent:o,supportsDOMError:p,supportsDOMException:q,supportsFetch:r,supportsReferrerPolicy:s,supportsPromiseRejectionEvent:t,wrappedCallback:u,each:v,objectMerge:w,truncate:y,objectFrozen:x,hasKey:z,joinRegExp:A,urlencode:B,uuid4:D,htmlTreeAsString:E,htmlElementAsString:F,isSameException:I,isSameStacktrace:J,parseUrl:C,fill:K,safeJoin:L,serializeException:Q,serializeKeysForMessage:R,sanitize:S}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{10:10}],9:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}function e(){return"undefined"==typeof document||null==document.location?"":(document.location.origin||(document.location.origin=document.location.protocol+"//"+document.location.hostname+(document.location.port?":"+document.location.port:"")),document.location.origin)}var f=a(8),g={collectWindowErrors:!0,debug:!1},h="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},i=[].slice,j="?",k=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;g.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function e(a,b){var c=null;if(!b||g.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(i.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,h,i){var l=null,m=f.isErrorEvent(i)?i.error:i,n=f.isErrorEvent(a)?a.message:a;if(v)g.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&f.isError(m))l=g.computeStackTrace(m),e(l,!0);else{var p,r={url:b,line:c,column:h},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(k);p&&(s=p[1],n=p[2])}r.func=j,l={name:s,message:n,url:d(),stack:[r]},e(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=h.onerror,h.onerror=l,r=!0)}function n(){r&&(h.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,e.apply(null,[a,!1].concat(b))}function p(a,b){var c=i.call(arguments,1);if(v){if(u===a)return;o()}var d=g.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),g.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,f,g=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,h=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,i=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,k=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,l=/\((\S*)(?::(\d+))(?::(\d+))\)/,m=a.stack.split("\n"),n=[],o=(/^(.*) is undefined$/.exec(a.message),0),p=m.length;o eval")>-1;r&&(b=k.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==o||c[5]||"undefined"==typeof a.columnNumber||(n[0].column=a.columnNumber+1),f={url:c[3],func:c[1]||j,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}if(!f.func&&f.line&&(f.func=j), +f.url&&"blob:"===f.url.substr(0,5)){var s=new XMLHttpRequest;if(s.open("GET",f.url,!1),s.send(null),200===s.status){var t=s.responseText||"";t=t.slice(-300);var u=t.match(/\/\/# sourceMappingURL=(.*)$/);if(u){var v=u[1];"~"===v.charAt(0)&&(v=e()+v.slice(1)),f.url=v.slice(0,-4)}}}n.push(f)}return n.length?{name:a.name,message:a.message,url:d(),stack:n}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=j),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,e){for(var h,i,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==f&&o!==g.report){if(i={url:null,func:j,line:null,column:null},o.name?i.func=o.name:(h=k.exec(o.toString()))&&(i.func=h[1]),"undefined"==typeof i.func)try{i.func=h.input.substring(0,h.input.indexOf("{"))}catch(p){}m[""+o]?n=!0:m[""+o]=!0,l.push(i)}e&&l.splice(0,e);var q={name:a.name,message:a.message,url:d(),stack:l};return b(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),q}function f(b,e){var f=null;e=null==e?0:+e;try{if(f=a(b))return f}catch(h){if(g.debug)throw h}try{if(f=c(b,e+1))return f}catch(h){if(g.debug)throw h}return{name:b.name,message:b.message,url:d()}}return f.augmentStackTraceWithInitialElement=b,f.computeStackTraceFromStackProp=a,f}(),b.exports=g}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{8:8}],10:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}],11:[function(a,b,c){function d(a,b){var c=(65535&a)+(65535&b),d=(a>>16)+(b>>16)+(c>>16);return d<<16|65535&c}function e(a,b){return a<>>32-b}function f(a,b,c,f,g,h){return d(e(d(d(b,a),d(f,h)),g),c)}function g(a,b,c,d,e,g,h){return f(b&c|~b&d,a,b,e,g,h)}function h(a,b,c,d,e,g,h){return f(b&d|c&~d,a,b,e,g,h)}function i(a,b,c,d,e,g,h){return f(b^c^d,a,b,e,g,h)}function j(a,b,c,d,e,g,h){return f(c^(b|~d),a,b,e,g,h)}function k(a,b){a[b>>5]|=128<>>9<<4)+14]=b;var c,e,f,k,l,m=1732584193,n=-271733879,o=-1732584194,p=271733878;for(c=0;c>5]>>>b%32&255);return c}function m(a){var b,c=[];for(c[(a.length>>2)-1]=void 0,b=0;b>5]|=(255&a.charCodeAt(b/8))<16&&(e=k(e,8*a.length)),c=0;c<16;c+=1)f[c]=909522486^e[c],g[c]=1549556828^e[c];return d=k(f.concat(m(b)),512+8*b.length),l(k(g.concat(d),640))}function p(a){var b,c,d="0123456789abcdef",e="";for(c=0;c>>4&15)+d.charAt(15&b);return e}function q(a){return unescape(encodeURIComponent(a))}function r(a){return n(q(a))}function s(a){return p(r(a))}function t(a,b){return o(q(a),q(b))}function u(a,b){return p(t(a,b))}function v(a,b,c){return b?c?t(b,a):u(b,a):c?r(a):s(a)}b.exports=v},{}]},{},[7,1,2,3])(7)}); //# sourceMappingURL=raven.min.js.map \ No newline at end of file diff --git a/dist/angular,require,vue/raven.min.js.map b/dist/angular,require,vue/raven.min.js.map index 403d84b6189d..a9715501e553 100644 --- a/dist/angular,require,vue/raven.min.js.map +++ b/dist/angular,require,vue/raven.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","angularPlugin","angular","RavenProvider","$get","$window","ExceptionHandlerProvider","$provide","decorator","exceptionHandler","R","$delegate","ex","cause","captureException","extra","moduleName","provider","config","setDataCallback","wrappedCallback","data","_normalizeData","angularPattern","exception","values","matches","exec","value","type","message","angularDocs","substr","addPlugin","7","8","2","requirePlugin","wrap","deep","3","formatComponentName","vm","$root","name","_isVue","$options","_componentTag","__file","vuePlugin","Vue","_oldOnError","errorHandler","error","info","metaData","Object","prototype","toString","componentName","propsData","lifecycleHook","4","RavenConfigError","constructor","5","utils","wrapMethod","console","level","callback","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","msg","safeJoin","logger","Function","apply","6","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","sanitizeKeys","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isErrorEvent","isDOMError","isDOMException","isError","isObject","isPlainObject","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","sanitize","wrapConsoleMethod","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","dsn","options","_logDebug","globalOptions","key","setDSN","push","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","context","func","undefined","_before","wrapped","_ignoreNextOnError","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","U","event","reason","unhandledPromiseRejection","C","_promiseRejectionHandler","bind","addEventListener","Q","removeEventListener","trimHeadFrames","captureMessage","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","V","currentOptions","exKeys","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","M","setTimeout","_","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","aa","evtName","_keypressTimeout","target","category","ca","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","da","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","D","_originalFunctionToString","E","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","F","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","S","builtin","T","G","installer","concat","H","str","m","allowSecretKey","K","port","B","W","stackInfo","_triggerEvent","_processException","lineno","Y","frame","_normalizeFrame","in_app","ha","stackInfoUrl","normalized","filename","line","colno","column","function","ga","prefixedMessage","culprit","ia","request","Referer","breadcrumbs","_trimBreadcrumbs","ja","urlProp","urlProps","ka","httpData","userAgent","User-Agent","referrer","z","_backoffDuration","_backoffStart","na","oa","current","last","pa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Z","baseData","project","platform","_getHttpData","serverName","server_name","_sanitizeData","forEach","random","_sendProcessedPayload","qa","sa","ra","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","ta","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","onerror","open","setRequestHeader","send","ua","hash","evaluated","A","$","setUser","setReleaseContext","10","11","9","RavenConstructor","_Raven","noConflict","Client","what","supportsErrorEvent","ErrorEvent","supportsDOMError","DOMError","supportsDOMException","DOMException","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","sanitizeMask","safeInput","o_O","getLocationHref","getLocationOrigin","origin","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","responseText","sourceMaps","sourceMapAddress","charAt","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","y","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","string","raw"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file +{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","angularPlugin","angular","RavenProvider","$get","$window","ExceptionHandlerProvider","$provide","decorator","exceptionHandler","R","$delegate","ex","cause","captureException","extra","moduleName","provider","config","setDataCallback","wrappedCallback","data","_normalizeData","angularPattern","exception","values","matches","exec","value","type","message","angularDocs","substr","addPlugin","7","8","2","requirePlugin","wrap","deep","3","formatComponentName","vm","$root","name","_isVue","$options","_componentTag","__file","vuePlugin","Vue","_oldOnError","errorHandler","error","info","metaData","Object","prototype","toString","componentName","propsData","lifecycleHook","4","RavenConfigError","constructor","5","utils","wrapMethod","console","level","callback","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","msg","safeJoin","logger","Function","apply","6","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","sanitizeKeys","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isErrorEvent","isDOMError","isDOMException","isError","isObject","isPlainObject","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","sanitize","wrapConsoleMethod","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","dsn","options","_logDebug","globalOptions","key","setDSN","push","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","context","func","undefined","_before","wrapped","_ignoreNextOnError","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","U","event","reason","unhandledPromiseRejection","C","_promiseRejectionHandler","bind","addEventListener","Q","removeEventListener","trimHeadFrames","captureMessage","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","V","currentOptions","exKeys","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","M","setTimeout","_","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","aa","evtName","_keypressTimeout","target","category","ca","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","da","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","D","_originalFunctionToString","E","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","F","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","S","builtin","T","G","installer","concat","H","str","m","allowSecretKey","K","port","B","W","stackInfo","_triggerEvent","_processException","lineno","Y","frame","_normalizeFrame","in_app","ha","stackInfoUrl","normalized","filename","line","colno","column","function","ga","prefixedMessage","culprit","ia","request","Referer","breadcrumbs","_trimBreadcrumbs","ja","urlProp","urlProps","ka","httpData","userAgent","User-Agent","referrer","z","_backoffDuration","_backoffStart","na","oa","current","last","pa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Z","baseData","project","platform","_getHttpData","serverName","server_name","_sanitizeData","forEach","random","_sendProcessedPayload","qa","sa","ra","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","ta","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","onerror","open","setRequestHeader","send","ua","hash","evaluated","A","$","setUser","setReleaseContext","10","11","9","RavenConstructor","_Raven","noConflict","Client","what","supportsErrorEvent","ErrorEvent","supportsDOMError","DOMError","supportsDOMException","DOMException","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","sanitizeMask","safeInput","o_O","getLocationHref","getLocationOrigin","origin","hostname","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","responseText","sourceMaps","sourceMapAddress","charAt","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","y","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","string","raw"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file diff --git a/dist/angular,require/raven.js b/dist/angular,require/raven.js index 06e77a891bf2..6e8635cd1a1c 100644 --- a/dist/angular,require/raven.js +++ b/dist/angular,require/raven.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.25.0 (80dffad) | github.com/getsentry/raven-js */ +/*! Raven.js 3.25.1 (b6f3c7a) | github.com/getsentry/raven-js */ /* * Includes TraceKit @@ -301,7 +301,7 @@ Raven.prototype = { // webpack (using a build step causes webpack #1617). Grunt verifies that // this value matches package.json during build. // See: https://github.com/getsentry/raven-js/issues/465 - VERSION: '3.25.0', + VERSION: '3.25.1', debug: false, @@ -1610,8 +1610,8 @@ Raven.prototype = { var hasPushAndReplaceState = !isChromePackagedApp && _window.history && - history.pushState && - history.replaceState; + _window.history.pushState && + _window.history.replaceState; if (autoBreadcrumbs.location && hasPushAndReplaceState) { // TODO: remove onpopstate handler on uninstall() var oldOnPopState = _window.onpopstate; @@ -1640,8 +1640,8 @@ Raven.prototype = { }; }; - fill(history, 'pushState', historyReplacementFunction, wrappedBuiltIns); - fill(history, 'replaceState', historyReplacementFunction, wrappedBuiltIns); + fill(_window.history, 'pushState', historyReplacementFunction, wrappedBuiltIns); + fill(_window.history, 'replaceState', historyReplacementFunction, wrappedBuiltIns); } if (autoBreadcrumbs.console && 'console' in _window && console.log) { @@ -1931,7 +1931,7 @@ Raven.prototype = { if (this._hasNavigator && _navigator.userAgent) { httpData.headers = { - 'User-Agent': navigator.userAgent + 'User-Agent': _navigator.userAgent }; } @@ -3106,6 +3106,16 @@ function getLocationHref() { function getLocationOrigin() { if (typeof document === 'undefined' || document.location == null) return ''; + + // Oh dear IE10... + if (!document.location.origin) { + document.location.origin = + document.location.protocol + + '//' + + document.location.hostname + + (document.location.port ? ':' + document.location.port : ''); + } + return document.location.origin; } diff --git a/dist/angular,require/raven.min.js b/dist/angular,require/raven.min.js index 7fc9e0bd0e29..ddf46912ee13 100644 --- a/dist/angular,require/raven.min.js +++ b/dist/angular,require/raven.min.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.25.0 (80dffad) | github.com/getsentry/raven-js */ -!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.Raven=a()}}(function(){var a;return function b(a,c,d){function e(g,h){if(!c[g]){if(!a[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};a[g][0].call(k.exports,function(b){var c=a[g][1][b];return e(c?c:b)},k,k.exports,b,a,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;gthis.l.maxBreadcrumbs&&this.v.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.s.push([a,b]),this.o&&this.G(),this},setUserContext:function(a){return this.k.user=a,this},setExtraContext:function(a){return this.$("extra",a),this},setTagsContext:function(a){return this.$("tags",a),this},clearContext:function(){return this.k={},this},getContext:function(){return JSON.parse(h(this.k))},setEnvironment:function(a){return this.l.environment=a,this},setRelease:function(a){return this.l.release=a,this},setDataCallback:function(a){var b=this.l.dataCallback;return this.l.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.l.breadcrumbCallback;return this.l.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.l.shouldSendCallback;return this.l.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.l.transport=a,this},lastException:function(){return this.e},lastEventId:function(){return this.g},isSetup:function(){return!!this.b&&(!!this.h||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.A("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=R.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(S){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.I;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.k.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.K(this.H(c)),h=S.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(S.head||S.body).appendChild(h)}},M:function(){var a=this;this.n+=1,setTimeout(function(){a.n-=1})},_:function(a,b){var c,d;if(this.c){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),S.createEvent?(c=S.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=S.createEventObject(),c.eventType=a);for(d in b)A(b,d)&&(c[d]=b[d]);if(S.createEvent)S.dispatchEvent(c);else try{S.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},aa:function(a){var b=this;return function(c){if(b.ba=null,b.w!==c){b.w=c;var d;try{d=E(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ca:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.ba;g||a.aa("input")(c),clearTimeout(g),a.ba=setTimeout(function(){a.ba=null},b)}}},da:function(a,b){var c=H(this.x.href),d=H(b),e=H(a);this.y=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},D:function(){var a=this;a.ea=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.N?a.ea.apply(this.P,arguments):a.ea.apply(this,arguments)}},R:function(){this.ea&&(Function.prototype.toString=this.ea)},E:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.da(b.y,c+""),a.apply(this,arguments)}};I(history,"pushState",j,d),I(history,"replaceState",j,d)}if(c.console&&"console"in R&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};w(["debug","info","warn","error","log"],function(a,b){O(console,b,k)})}},S:function(){for(var a;this.u.length;){a=this.u.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},T:function(){for(var a in this.r)this.q[a]=this.r[a]},G:function(){var a=this;w(this.s,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},H:function(a){var b=Q.exec(a),c={},d=7;try{for(;d--;)c[P[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.l.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},K:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},B:function(){this.n||this.W.apply(this,arguments)},W:function(a,b){var c=this.Y(a,b);this._("handle",{stackInfo:a,options:b}),this.ga(a.name,a.message,a.url,a.lineno,c,b)},Y:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(w(a.stack,function(b,e){var f=c.ha(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.v,0)}),this.k.user&&(a.user=this.k.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),a=this.qa(a),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||v(a[b]))&&delete a[b]}),s(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!v(a)&&(!s(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.na()?void this.A("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function F(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&l(b))for(c=b.split(/\s+/),f=0;fc?Q(a,b-1):d}function R(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?X:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function S(a,b){function c(a){return m(a)?a.map(function(a){return c(a)}):k(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!m(b)||m(b)&&0===b.length)return a;var d,e=A(b),f="********";try{d=JSON.parse(T(a))}catch(g){return a}return c(d)}var T=a(9),U="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},V=3,W=51200,X=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isDOMError:g,isDOMException:h,isUndefined:i,isFunction:j,isPlainObject:k,isString:l,isArray:m,isEmptyObject:n,supportsErrorEvent:o,supportsDOMError:p,supportsDOMException:q,supportsFetch:r,supportsReferrerPolicy:s,supportsPromiseRejectionEvent:t,wrappedCallback:u,each:v,objectMerge:w,truncate:y,objectFrozen:x,hasKey:z,joinRegExp:A,urlencode:B,uuid4:D,htmlTreeAsString:E,htmlElementAsString:F,isSameException:I,isSameStacktrace:J,parseUrl:C,fill:K,safeJoin:L,serializeException:Q,serializeKeysForMessage:R,sanitize:S}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{9:9}],8:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}function e(){return"undefined"==typeof document||null==document.location?"":document.location.origin}var f=a(7),g={collectWindowErrors:!0,debug:!1},h="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},i=[].slice,j="?",k=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;g.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function e(a,b){var c=null;if(!b||g.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(i.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,h,i){var l=null,m=f.isErrorEvent(i)?i.error:i,n=f.isErrorEvent(a)?a.message:a;if(v)g.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&f.isError(m))l=g.computeStackTrace(m),e(l,!0);else{var p,r={url:b,line:c,column:h},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(k);p&&(s=p[1],n=p[2])}r.func=j,l={name:s,message:n,url:d(),stack:[r]},e(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=h.onerror,h.onerror=l,r=!0)}function n(){r&&(h.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,e.apply(null,[a,!1].concat(b))}function p(a,b){var c=i.call(arguments,1);if(v){if(u===a)return;o()}var d=g.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),g.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,f,g=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,h=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,i=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,k=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,l=/\((\S*)(?::(\d+))(?::(\d+))\)/,m=a.stack.split("\n"),n=[],o=(/^(.*) is undefined$/.exec(a.message),0),p=m.length;o eval")>-1;r&&(b=k.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==o||c[5]||"undefined"==typeof a.columnNumber||(n[0].column=a.columnNumber+1),f={url:c[3],func:c[1]||j,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}if(!f.func&&f.line&&(f.func=j),f.url&&"blob:"===f.url.substr(0,5)){var s=new XMLHttpRequest;if(s.open("GET",f.url,!1),s.send(null),200===s.status){var t=s.responseText||"";t=t.slice(-300);var u=t.match(/\/\/# sourceMappingURL=(.*)$/);if(u){var v=u[1];"~"===v.charAt(0)&&(v=e()+v.slice(1)),f.url=v.slice(0,-4)}}}n.push(f)}return n.length?{name:a.name,message:a.message,url:d(),stack:n}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=j),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,e){for(var h,i,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==f&&o!==g.report){ -if(i={url:null,func:j,line:null,column:null},o.name?i.func=o.name:(h=k.exec(o.toString()))&&(i.func=h[1]),"undefined"==typeof i.func)try{i.func=h.input.substring(0,h.input.indexOf("{"))}catch(p){}m[""+o]?n=!0:m[""+o]=!0,l.push(i)}e&&l.splice(0,e);var q={name:a.name,message:a.message,url:d(),stack:l};return b(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),q}function f(b,e){var f=null;e=null==e?0:+e;try{if(f=a(b))return f}catch(h){if(g.debug)throw h}try{if(f=c(b,e+1))return f}catch(h){if(g.debug)throw h}return{name:b.name,message:b.message,url:d()}}return f.augmentStackTraceWithInitialElement=b,f.computeStackTraceFromStackProp=a,f}(),b.exports=g}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{7:7}],9:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}],10:[function(a,b,c){function d(a,b){var c=(65535&a)+(65535&b),d=(a>>16)+(b>>16)+(c>>16);return d<<16|65535&c}function e(a,b){return a<>>32-b}function f(a,b,c,f,g,h){return d(e(d(d(b,a),d(f,h)),g),c)}function g(a,b,c,d,e,g,h){return f(b&c|~b&d,a,b,e,g,h)}function h(a,b,c,d,e,g,h){return f(b&d|c&~d,a,b,e,g,h)}function i(a,b,c,d,e,g,h){return f(b^c^d,a,b,e,g,h)}function j(a,b,c,d,e,g,h){return f(c^(b|~d),a,b,e,g,h)}function k(a,b){a[b>>5]|=128<>>9<<4)+14]=b;var c,e,f,k,l,m=1732584193,n=-271733879,o=-1732584194,p=271733878;for(c=0;c>5]>>>b%32&255);return c}function m(a){var b,c=[];for(c[(a.length>>2)-1]=void 0,b=0;b>5]|=(255&a.charCodeAt(b/8))<16&&(e=k(e,8*a.length)),c=0;c<16;c+=1)f[c]=909522486^e[c],g[c]=1549556828^e[c];return d=k(f.concat(m(b)),512+8*b.length),l(k(g.concat(d),640))}function p(a){var b,c,d="0123456789abcdef",e="";for(c=0;c>>4&15)+d.charAt(15&b);return e}function q(a){return unescape(encodeURIComponent(a))}function r(a){return n(q(a))}function s(a){return p(r(a))}function t(a,b){return o(q(a),q(b))}function u(a,b){return p(t(a,b))}function v(a,b,c){return b?c?t(b,a):u(b,a):c?r(a):s(a)}b.exports=v},{}]},{},[6,1,2])(6)}); +/*! Raven.js 3.25.1 (b6f3c7a) | github.com/getsentry/raven-js */ +!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.Raven=a()}}(function(){var a;return function b(a,c,d){function e(g,h){if(!c[g]){if(!a[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};a[g][0].call(k.exports,function(b){var c=a[g][1][b];return e(c?c:b)},k,k.exports,b,a,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;gthis.l.maxBreadcrumbs&&this.v.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.s.push([a,b]),this.o&&this.G(),this},setUserContext:function(a){return this.k.user=a,this},setExtraContext:function(a){return this.$("extra",a),this},setTagsContext:function(a){return this.$("tags",a),this},clearContext:function(){return this.k={},this},getContext:function(){return JSON.parse(h(this.k))},setEnvironment:function(a){return this.l.environment=a,this},setRelease:function(a){return this.l.release=a,this},setDataCallback:function(a){var b=this.l.dataCallback;return this.l.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.l.breadcrumbCallback;return this.l.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.l.shouldSendCallback;return this.l.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.l.transport=a,this},lastException:function(){return this.e},lastEventId:function(){return this.g},isSetup:function(){return!!this.b&&(!!this.h||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.A("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=R.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(S){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.I;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.k.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.K(this.H(c)),h=S.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(S.head||S.body).appendChild(h)}},M:function(){var a=this;this.n+=1,setTimeout(function(){a.n-=1})},_:function(a,b){var c,d;if(this.c){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),S.createEvent?(c=S.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=S.createEventObject(),c.eventType=a);for(d in b)A(b,d)&&(c[d]=b[d]);if(S.createEvent)S.dispatchEvent(c);else try{S.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},aa:function(a){var b=this;return function(c){if(b.ba=null,b.w!==c){b.w=c;var d;try{d=E(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ca:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.ba;g||a.aa("input")(c),clearTimeout(g),a.ba=setTimeout(function(){a.ba=null},b)}}},da:function(a,b){var c=H(this.x.href),d=H(b),e=H(a);this.y=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},D:function(){var a=this;a.ea=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.N?a.ea.apply(this.P,arguments):a.ea.apply(this,arguments)}},R:function(){this.ea&&(Function.prototype.toString=this.ea)},E:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.da(b.y,c+""),a.apply(this,arguments)}};I(R.history,"pushState",j,d),I(R.history,"replaceState",j,d)}if(c.console&&"console"in R&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};w(["debug","info","warn","error","log"],function(a,b){O(console,b,k)})}},S:function(){for(var a;this.u.length;){a=this.u.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},T:function(){for(var a in this.r)this.q[a]=this.r[a]},G:function(){var a=this;w(this.s,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},H:function(a){var b=Q.exec(a),c={},d=7;try{for(;d--;)c[P[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.l.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},K:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},B:function(){this.n||this.W.apply(this,arguments)},W:function(a,b){var c=this.Y(a,b);this._("handle",{stackInfo:a,options:b}),this.ga(a.name,a.message,a.url,a.lineno,c,b)},Y:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(w(a.stack,function(b,e){var f=c.ha(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.v,0)}),this.k.user&&(a.user=this.k.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),a=this.qa(a),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||v(a[b]))&&delete a[b]}),s(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!v(a)&&(!s(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.na()?void this.A("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function F(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&l(b))for(c=b.split(/\s+/),f=0;fc?Q(a,b-1):d}function R(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?X:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function S(a,b){function c(a){return m(a)?a.map(function(a){return c(a)}):k(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!m(b)||m(b)&&0===b.length)return a;var d,e=A(b),f="********";try{d=JSON.parse(T(a))}catch(g){return a}return c(d)}var T=a(9),U="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},V=3,W=51200,X=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isDOMError:g,isDOMException:h,isUndefined:i,isFunction:j,isPlainObject:k,isString:l,isArray:m,isEmptyObject:n,supportsErrorEvent:o,supportsDOMError:p,supportsDOMException:q,supportsFetch:r,supportsReferrerPolicy:s,supportsPromiseRejectionEvent:t,wrappedCallback:u,each:v,objectMerge:w,truncate:y,objectFrozen:x,hasKey:z,joinRegExp:A,urlencode:B,uuid4:D,htmlTreeAsString:E,htmlElementAsString:F,isSameException:I,isSameStacktrace:J,parseUrl:C,fill:K,safeJoin:L,serializeException:Q,serializeKeysForMessage:R,sanitize:S}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{9:9}],8:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}function e(){return"undefined"==typeof document||null==document.location?"":(document.location.origin||(document.location.origin=document.location.protocol+"//"+document.location.hostname+(document.location.port?":"+document.location.port:"")),document.location.origin)}var f=a(7),g={collectWindowErrors:!0,debug:!1},h="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},i=[].slice,j="?",k=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;g.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function e(a,b){var c=null;if(!b||g.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(i.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,h,i){var l=null,m=f.isErrorEvent(i)?i.error:i,n=f.isErrorEvent(a)?a.message:a;if(v)g.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&f.isError(m))l=g.computeStackTrace(m),e(l,!0);else{var p,r={url:b,line:c,column:h},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(k);p&&(s=p[1],n=p[2])}r.func=j,l={name:s,message:n,url:d(),stack:[r]},e(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=h.onerror,h.onerror=l,r=!0)}function n(){r&&(h.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,e.apply(null,[a,!1].concat(b))}function p(a,b){var c=i.call(arguments,1);if(v){if(u===a)return;o()}var d=g.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),g.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,f,g=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,h=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,i=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,k=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,l=/\((\S*)(?::(\d+))(?::(\d+))\)/,m=a.stack.split("\n"),n=[],o=(/^(.*) is undefined$/.exec(a.message),0),p=m.length;o eval")>-1;r&&(b=k.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==o||c[5]||"undefined"==typeof a.columnNumber||(n[0].column=a.columnNumber+1),f={url:c[3],func:c[1]||j,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}if(!f.func&&f.line&&(f.func=j),f.url&&"blob:"===f.url.substr(0,5)){var s=new XMLHttpRequest;if(s.open("GET",f.url,!1),s.send(null),200===s.status){var t=s.responseText||"";t=t.slice(-300);var u=t.match(/\/\/# sourceMappingURL=(.*)$/);if(u){var v=u[1];"~"===v.charAt(0)&&(v=e()+v.slice(1)),f.url=v.slice(0,-4)}}}n.push(f)}return n.length?{name:a.name,message:a.message,url:d(),stack:n}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=j),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e), +a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,e){for(var h,i,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==f&&o!==g.report){if(i={url:null,func:j,line:null,column:null},o.name?i.func=o.name:(h=k.exec(o.toString()))&&(i.func=h[1]),"undefined"==typeof i.func)try{i.func=h.input.substring(0,h.input.indexOf("{"))}catch(p){}m[""+o]?n=!0:m[""+o]=!0,l.push(i)}e&&l.splice(0,e);var q={name:a.name,message:a.message,url:d(),stack:l};return b(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),q}function f(b,e){var f=null;e=null==e?0:+e;try{if(f=a(b))return f}catch(h){if(g.debug)throw h}try{if(f=c(b,e+1))return f}catch(h){if(g.debug)throw h}return{name:b.name,message:b.message,url:d()}}return f.augmentStackTraceWithInitialElement=b,f.computeStackTraceFromStackProp=a,f}(),b.exports=g}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{7:7}],9:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}],10:[function(a,b,c){function d(a,b){var c=(65535&a)+(65535&b),d=(a>>16)+(b>>16)+(c>>16);return d<<16|65535&c}function e(a,b){return a<>>32-b}function f(a,b,c,f,g,h){return d(e(d(d(b,a),d(f,h)),g),c)}function g(a,b,c,d,e,g,h){return f(b&c|~b&d,a,b,e,g,h)}function h(a,b,c,d,e,g,h){return f(b&d|c&~d,a,b,e,g,h)}function i(a,b,c,d,e,g,h){return f(b^c^d,a,b,e,g,h)}function j(a,b,c,d,e,g,h){return f(c^(b|~d),a,b,e,g,h)}function k(a,b){a[b>>5]|=128<>>9<<4)+14]=b;var c,e,f,k,l,m=1732584193,n=-271733879,o=-1732584194,p=271733878;for(c=0;c>5]>>>b%32&255);return c}function m(a){var b,c=[];for(c[(a.length>>2)-1]=void 0,b=0;b>5]|=(255&a.charCodeAt(b/8))<16&&(e=k(e,8*a.length)),c=0;c<16;c+=1)f[c]=909522486^e[c],g[c]=1549556828^e[c];return d=k(f.concat(m(b)),512+8*b.length),l(k(g.concat(d),640))}function p(a){var b,c,d="0123456789abcdef",e="";for(c=0;c>>4&15)+d.charAt(15&b);return e}function q(a){return unescape(encodeURIComponent(a))}function r(a){return n(q(a))}function s(a){return p(r(a))}function t(a,b){return o(q(a),q(b))}function u(a,b){return p(t(a,b))}function v(a,b,c){return b?c?t(b,a):u(b,a):c?r(a):s(a)}b.exports=v},{}]},{},[6,1,2])(6)}); //# sourceMappingURL=raven.min.js.map \ No newline at end of file diff --git a/dist/angular,require/raven.min.js.map b/dist/angular,require/raven.min.js.map index 3b1cf79dd2cf..81c786cd0383 100644 --- a/dist/angular,require/raven.min.js.map +++ b/dist/angular,require/raven.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","angularPlugin","angular","RavenProvider","$get","$window","ExceptionHandlerProvider","$provide","decorator","exceptionHandler","R","$delegate","ex","cause","captureException","extra","moduleName","provider","config","setDataCallback","wrappedCallback","data","_normalizeData","angularPattern","exception","values","matches","exec","value","type","message","angularDocs","substr","addPlugin","6","7","2","requirePlugin","wrap","deep","3","RavenConfigError","name","prototype","constructor","4","utils","wrapMethod","console","level","callback","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","msg","safeJoin","logger","Function","apply","5","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","sanitizeKeys","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isErrorEvent","isDOMError","isDOMException","isError","isObject","isPlainObject","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","sanitize","wrapConsoleMethod","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","dsn","options","_logDebug","globalOptions","key","setDSN","push","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","toString","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","context","func","undefined","_before","wrapped","_ignoreNextOnError","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","U","event","reason","unhandledPromiseRejection","C","_promiseRejectionHandler","bind","addEventListener","Q","removeEventListener","trimHeadFrames","error","captureMessage","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","V","currentOptions","exKeys","Object","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","M","setTimeout","_","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","aa","evtName","_keypressTimeout","target","category","ca","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","da","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","D","_originalFunctionToString","E","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","F","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","S","builtin","T","G","installer","concat","H","str","m","allowSecretKey","K","port","B","W","stackInfo","_triggerEvent","_processException","lineno","Y","frame","_normalizeFrame","in_app","ha","stackInfoUrl","normalized","filename","line","colno","column","function","ga","prefixedMessage","culprit","ia","request","Referer","breadcrumbs","_trimBreadcrumbs","ja","urlProp","urlProps","ka","httpData","userAgent","User-Agent","referrer","z","_backoffDuration","_backoffStart","na","oa","current","last","pa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Z","baseData","project","platform","_getHttpData","serverName","server_name","_sanitizeData","forEach","random","_sendProcessedPayload","qa","sa","ra","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","ta","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","onerror","open","setRequestHeader","send","ua","hash","evaluated","A","$","setUser","setReleaseContext","10","8","9","RavenConstructor","_Raven","noConflict","Client","what","supportsErrorEvent","ErrorEvent","supportsDOMError","DOMError","supportsDOMException","DOMException","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","sanitizeMask","safeInput","o_O","getLocationHref","getLocationOrigin","origin","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","responseText","sourceMaps","sourceMapAddress","charAt","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","y","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","string","raw"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file +{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","angularPlugin","angular","RavenProvider","$get","$window","ExceptionHandlerProvider","$provide","decorator","exceptionHandler","R","$delegate","ex","cause","captureException","extra","moduleName","provider","config","setDataCallback","wrappedCallback","data","_normalizeData","angularPattern","exception","values","matches","exec","value","type","message","angularDocs","substr","addPlugin","6","7","2","requirePlugin","wrap","deep","3","RavenConfigError","name","prototype","constructor","4","utils","wrapMethod","console","level","callback","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","msg","safeJoin","logger","Function","apply","5","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","sanitizeKeys","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isErrorEvent","isDOMError","isDOMException","isError","isObject","isPlainObject","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","sanitize","wrapConsoleMethod","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","dsn","options","_logDebug","globalOptions","key","setDSN","push","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","toString","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","context","func","undefined","_before","wrapped","_ignoreNextOnError","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","U","event","reason","unhandledPromiseRejection","C","_promiseRejectionHandler","bind","addEventListener","Q","removeEventListener","trimHeadFrames","error","captureMessage","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","V","currentOptions","exKeys","Object","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","M","setTimeout","_","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","aa","evtName","_keypressTimeout","target","category","ca","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","da","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","D","_originalFunctionToString","E","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","F","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","S","builtin","T","G","installer","concat","H","str","m","allowSecretKey","K","port","B","W","stackInfo","_triggerEvent","_processException","lineno","Y","frame","_normalizeFrame","in_app","ha","stackInfoUrl","normalized","filename","line","colno","column","function","ga","prefixedMessage","culprit","ia","request","Referer","breadcrumbs","_trimBreadcrumbs","ja","urlProp","urlProps","ka","httpData","userAgent","User-Agent","referrer","z","_backoffDuration","_backoffStart","na","oa","current","last","pa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Z","baseData","project","platform","_getHttpData","serverName","server_name","_sanitizeData","forEach","random","_sendProcessedPayload","qa","sa","ra","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","ta","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","onerror","open","setRequestHeader","send","ua","hash","evaluated","A","$","setUser","setReleaseContext","10","8","9","RavenConstructor","_Raven","noConflict","Client","what","supportsErrorEvent","ErrorEvent","supportsDOMError","DOMError","supportsDOMException","DOMException","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","sanitizeMask","safeInput","o_O","getLocationHref","getLocationOrigin","origin","hostname","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","responseText","sourceMaps","sourceMapAddress","charAt","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","y","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","string","raw"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file diff --git a/dist/angular,vue/raven.js b/dist/angular,vue/raven.js index 7357e2517659..39a225ab752b 100644 --- a/dist/angular,vue/raven.js +++ b/dist/angular,vue/raven.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.25.0 (80dffad) | github.com/getsentry/raven-js */ +/*! Raven.js 3.25.1 (b6f3c7a) | github.com/getsentry/raven-js */ /* * Includes TraceKit @@ -334,7 +334,7 @@ Raven.prototype = { // webpack (using a build step causes webpack #1617). Grunt verifies that // this value matches package.json during build. // See: https://github.com/getsentry/raven-js/issues/465 - VERSION: '3.25.0', + VERSION: '3.25.1', debug: false, @@ -1643,8 +1643,8 @@ Raven.prototype = { var hasPushAndReplaceState = !isChromePackagedApp && _window.history && - history.pushState && - history.replaceState; + _window.history.pushState && + _window.history.replaceState; if (autoBreadcrumbs.location && hasPushAndReplaceState) { // TODO: remove onpopstate handler on uninstall() var oldOnPopState = _window.onpopstate; @@ -1673,8 +1673,8 @@ Raven.prototype = { }; }; - fill(history, 'pushState', historyReplacementFunction, wrappedBuiltIns); - fill(history, 'replaceState', historyReplacementFunction, wrappedBuiltIns); + fill(_window.history, 'pushState', historyReplacementFunction, wrappedBuiltIns); + fill(_window.history, 'replaceState', historyReplacementFunction, wrappedBuiltIns); } if (autoBreadcrumbs.console && 'console' in _window && console.log) { @@ -1964,7 +1964,7 @@ Raven.prototype = { if (this._hasNavigator && _navigator.userAgent) { httpData.headers = { - 'User-Agent': navigator.userAgent + 'User-Agent': _navigator.userAgent }; } @@ -3139,6 +3139,16 @@ function getLocationHref() { function getLocationOrigin() { if (typeof document === 'undefined' || document.location == null) return ''; + + // Oh dear IE10... + if (!document.location.origin) { + document.location.origin = + document.location.protocol + + '//' + + document.location.hostname + + (document.location.port ? ':' + document.location.port : ''); + } + return document.location.origin; } diff --git a/dist/angular,vue/raven.min.js b/dist/angular,vue/raven.min.js index 306cc87eba5c..8e7faa724a48 100644 --- a/dist/angular,vue/raven.min.js +++ b/dist/angular,vue/raven.min.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.25.0 (80dffad) | github.com/getsentry/raven-js */ -!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.Raven=a()}}(function(){return function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};b[g][0].call(k.exports,function(a){var c=b[g][1][a];return e(c?c:a)},k,k.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;g":"anonymous component")+(a._isVue&&a.$options.__file?" at "+a.$options.__file:"")}function e(a,b){if(b=b||window.Vue,b&&b.config){var c=b.config.errorHandler;b.config.errorHandler=function(b,e,f){var g={};"[object Object]"===Object.prototype.toString.call(e)&&(g.componentName=d(e),g.propsData=e.$options.propsData),"undefined"!=typeof f&&(g.lifecycleHook=f),a.captureException(b,{extra:g}),"function"==typeof c&&c.call(this,b,e,f)}}}b.exports=e,a(6).addPlugin(b.exports)},{6:6}],3:[function(a,b,c){function d(a){this.name="RavenConfigError",this.message=a}d.prototype=new Error,d.prototype.constructor=d,b.exports=d},{}],4:[function(a,b,c){var d=a(7),e=function(a,b,c){var e=a[b],f=a;if(b in a){var g="warn"===b?"warning":b;a[b]=function(){var a=[].slice.call(arguments),h=d.safeJoin(a," "),i={level:g,logger:"console",extra:{arguments:a}};"assert"===b?a[0]===!1&&(h="Assertion failed: "+(d.safeJoin(a.slice(1)," ")||"console.assert"),i.extra.arguments=a.slice(1),c&&c(h,i)):c&&c(h,i),e&&Function.prototype.apply.call(e,f,a)}}};b.exports={wrapMethod:e}},{7:7}],5:[function(a,b,c){(function(c){function d(){return+new Date}function e(a,b){return s(b)?function(c){return b(c,a)}:b}function f(){this.b=!("object"!=typeof JSON||!JSON.stringify),this.c=!r(S),this.d=!r(T),this.e=null,this.f=null,this.g=null,this.h=null,this.i=null,this.j=null,this.k={},this.l={release:R.SENTRY_RELEASE&&R.SENTRY_RELEASE.id,logger:"javascript",ignoreErrors:[],ignoreUrls:[],whitelistUrls:[],includePaths:[],headers:null,collectWindowErrors:!0,captureUnhandledRejections:!0,maxMessageLength:0,maxUrlLength:250,stackTraceLimit:50,autoBreadcrumbs:!0,instrument:!0,sampleRate:1,sanitizeKeys:[]},this.m={method:"POST",keepalive:!0,referrerPolicy:K()?"origin":""},this.n=0,this.o=!1,this.p=Error.stackTraceLimit,this.q=R.console||{},this.r={},this.s=[],this.t=d(),this.u=[],this.v=[],this.w=null,this.x=R.location,this.y=this.x&&this.x.href,this.z();for(var a in this.q)this.r[a]=this.q[a]}var g=a(8),h=a(9),i=a(10),j=a(3),k=a(7),l=k.isErrorEvent,m=k.isDOMError,n=k.isDOMException,o=k.isError,p=k.isObject,q=k.isPlainObject,r=k.isUndefined,s=k.isFunction,t=k.isString,u=k.isArray,v=k.isEmptyObject,w=k.each,x=k.objectMerge,y=k.truncate,z=k.objectFrozen,A=k.hasKey,B=k.joinRegExp,C=k.urlencode,D=k.uuid4,E=k.htmlTreeAsString,F=k.isSameException,G=k.isSameStacktrace,H=k.parseUrl,I=k.fill,J=k.supportsFetch,K=k.supportsReferrerPolicy,L=k.serializeKeysForMessage,M=k.serializeException,N=k.sanitize,O=a(4).wrapMethod,P="source protocol user pass host port path".split(" "),Q=/^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/,R="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},S=R.document,T=R.navigator;f.prototype={VERSION:"3.25.0",debug:!1,TraceKit:g,config:function(a,b){var c=this;if(c.h)return this.A("error","Error: Raven has already been configured"),c;if(!a)return c;var d=c.l;b&&w(b,function(a,b){"tags"===a||"extra"===a||"user"===a?c.k[a]=b:d[a]=b}),c.setDSN(a),d.ignoreErrors.push(/^Script error\.?$/),d.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/),d.ignoreErrors=B(d.ignoreErrors),d.ignoreUrls=!!d.ignoreUrls.length&&B(d.ignoreUrls),d.whitelistUrls=!!d.whitelistUrls.length&&B(d.whitelistUrls),d.includePaths=B(d.includePaths),d.maxBreadcrumbs=Math.max(0,Math.min(d.maxBreadcrumbs||100,100));var e={xhr:!0,console:!0,dom:!0,location:!0,sentry:!0},f=d.autoBreadcrumbs;"[object Object]"==={}.toString.call(f)?f=x(e,f):f!==!1&&(f=e),d.autoBreadcrumbs=f;var h={tryCatch:!0},i=d.instrument;return"[object Object]"==={}.toString.call(i)?i=x(h,i):i!==!1&&(i=h),d.instrument=i,g.collectWindowErrors=!!d.collectWindowErrors,c},install:function(){var a=this;return a.isSetup()&&!a.o&&(g.report.subscribe(function(){a.B.apply(a,arguments)}),a.l.captureUnhandledRejections&&a.C(),a.D(),a.l.instrument&&a.l.instrument.tryCatch&&a.E(),a.l.autoBreadcrumbs&&a.F(),a.G(),a.o=!0),Error.stackTraceLimit=a.l.stackTraceLimit,this},setDSN:function(a){var b=this,c=b.H(a),d=c.path.lastIndexOf("/"),e=c.path.substr(1,d);b.I=a,b.i=c.user,b.J=c.pass&&c.pass.substr(1),b.j=c.path.substr(d+1),b.h=b.K(c),b.L=b.h+"/"+e+"api/"+b.j+"/store/",this.z()},context:function(a,b,c){return s(a)&&(c=b||[],b=a,a=void 0),this.wrap(a,b).apply(this,c)},wrap:function(a,b,c){function d(){var d=[],f=arguments.length,g=!a||a&&a.deep!==!1;for(c&&s(c)&&c.apply(this,arguments);f--;)d[f]=g?e.wrap(a,arguments[f]):arguments[f];try{return b.apply(this,d)}catch(h){throw e.M(),e.captureException(h,a),h}}var e=this;if(r(b)&&!s(a))return a;if(s(a)&&(b=a,a=void 0),!s(b))return b;try{if(b.N)return b;if(b.O)return b.O}catch(f){return b}for(var g in b)A(b,g)&&(d[g]=b[g]);return d.prototype=b.prototype,b.O=d,d.N=!0,d.P=b,d},uninstall:function(){return g.report.uninstall(),this.Q(),this.R(),this.S(),this.T(),Error.stackTraceLimit=this.p,this.o=!1,this},U:function(a){this.A("debug","Raven caught unhandled promise rejection:",a),this.captureException(a.reason,{extra:{unhandledPromiseRejection:!0}})},C:function(){return this.U=this.U.bind(this),R.addEventListener&&R.addEventListener("unhandledrejection",this.U),this},Q:function(){return R.removeEventListener&&R.removeEventListener("unhandledrejection",this.U),this},captureException:function(a,b){if(b=x({trimHeadFrames:0},b?b:{}),l(a)&&a.error)a=a.error;else{if(m(a)||n(a)){var c=a.name||(m(a)?"DOMError":"DOMException"),d=a.message?c+": "+a.message:c;return this.captureMessage(d,x(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}))}if(o(a))a=a;else{if(!q(a))return this.captureMessage(a,x(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}));b=this.V(b,a),a=new Error(b.message)}}this.e=a;try{var e=g.computeStackTrace(a);this.W(e,b)}catch(f){if(a!==f)throw f}return this},V:function(a,b){var c=Object.keys(b).sort(),d=x(a,{message:"Non-Error exception captured with keys: "+L(c),fingerprint:[i(c)],extra:a.extra||{}});return d.extra.X=M(b),d},captureMessage:function(a,b){if(!this.l.ignoreErrors.test||!this.l.ignoreErrors.test(a)){b=b||{},a+="";var c,d=x({message:a},b);try{throw new Error(a)}catch(e){c=e}c.name=null;var f=g.computeStackTrace(c),h=u(f.stack)&&f.stack[1];h&&"Raven.captureException"===h.func&&(h=f.stack[2]);var i=h&&h.url||"";if((!this.l.ignoreUrls.test||!this.l.ignoreUrls.test(i))&&(!this.l.whitelistUrls.test||this.l.whitelistUrls.test(i))){if(this.l.stacktrace||b&&b.stacktrace){d.fingerprint=null==d.fingerprint?a:d.fingerprint,b=x({trimHeadFrames:0},b),b.trimHeadFrames+=1;var j=this.Y(f,b);d.stacktrace={frames:j.reverse()}}return d.fingerprint&&(d.fingerprint=u(d.fingerprint)?d.fingerprint:[d.fingerprint]),this.Z(d),this}}},captureBreadcrumb:function(a){var b=x({timestamp:d()/1e3},a);if(s(this.l.breadcrumbCallback)){var c=this.l.breadcrumbCallback(b);if(p(c)&&!v(c))b=c;else if(c===!1)return this}return this.v.push(b),this.v.length>this.l.maxBreadcrumbs&&this.v.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.s.push([a,b]),this.o&&this.G(),this},setUserContext:function(a){return this.k.user=a,this},setExtraContext:function(a){return this.$("extra",a),this},setTagsContext:function(a){return this.$("tags",a),this},clearContext:function(){return this.k={},this},getContext:function(){return JSON.parse(h(this.k))},setEnvironment:function(a){return this.l.environment=a,this},setRelease:function(a){return this.l.release=a,this},setDataCallback:function(a){var b=this.l.dataCallback;return this.l.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.l.breadcrumbCallback;return this.l.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.l.shouldSendCallback;return this.l.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.l.transport=a,this},lastException:function(){return this.e},lastEventId:function(){return this.g},isSetup:function(){return!!this.b&&(!!this.h||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.A("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=R.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(S){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.I;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.k.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.K(this.H(c)),h=S.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(S.head||S.body).appendChild(h)}},M:function(){var a=this;this.n+=1,setTimeout(function(){a.n-=1})},_:function(a,b){var c,d;if(this.c){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),S.createEvent?(c=S.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=S.createEventObject(),c.eventType=a);for(d in b)A(b,d)&&(c[d]=b[d]);if(S.createEvent)S.dispatchEvent(c);else try{S.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},aa:function(a){var b=this;return function(c){if(b.ba=null,b.w!==c){b.w=c;var d;try{d=E(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ca:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.ba;g||a.aa("input")(c),clearTimeout(g),a.ba=setTimeout(function(){a.ba=null},b)}}},da:function(a,b){var c=H(this.x.href),d=H(b),e=H(a);this.y=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},D:function(){var a=this;a.ea=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.N?a.ea.apply(this.P,arguments):a.ea.apply(this,arguments)}},R:function(){this.ea&&(Function.prototype.toString=this.ea)},E:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.da(b.y,c+""),a.apply(this,arguments)}};I(history,"pushState",j,d),I(history,"replaceState",j,d)}if(c.console&&"console"in R&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};w(["debug","info","warn","error","log"],function(a,b){O(console,b,k)})}},S:function(){for(var a;this.u.length;){a=this.u.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},T:function(){for(var a in this.r)this.q[a]=this.r[a]},G:function(){var a=this;w(this.s,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},H:function(a){var b=Q.exec(a),c={},d=7;try{for(;d--;)c[P[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.l.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},K:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},B:function(){this.n||this.W.apply(this,arguments)},W:function(a,b){var c=this.Y(a,b);this._("handle",{stackInfo:a,options:b}),this.ga(a.name,a.message,a.url,a.lineno,c,b)},Y:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(w(a.stack,function(b,e){var f=c.ha(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.v,0)}),this.k.user&&(a.user=this.k.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),a=this.qa(a),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||v(a[b]))&&delete a[b]}),s(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!v(a)&&(!s(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.na()?void this.A("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function F(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&l(b))for(c=b.split(/\s+/),f=0;fc?Q(a,b-1):d}function R(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?X:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function S(a,b){function c(a){return m(a)?a.map(function(a){return c(a)}):k(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!m(b)||m(b)&&0===b.length)return a;var d,e=A(b),f="********";try{d=JSON.parse(T(a))}catch(g){return a}return c(d)}var T=a(9),U="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},V=3,W=51200,X=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isDOMError:g,isDOMException:h,isUndefined:i,isFunction:j,isPlainObject:k,isString:l,isArray:m,isEmptyObject:n,supportsErrorEvent:o,supportsDOMError:p,supportsDOMException:q,supportsFetch:r,supportsReferrerPolicy:s,supportsPromiseRejectionEvent:t,wrappedCallback:u,each:v,objectMerge:w,truncate:y,objectFrozen:x,hasKey:z,joinRegExp:A,urlencode:B,uuid4:D,htmlTreeAsString:E,htmlElementAsString:F,isSameException:I,isSameStacktrace:J,parseUrl:C,fill:K,safeJoin:L,serializeException:Q,serializeKeysForMessage:R,sanitize:S}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{9:9}],8:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}function e(){return"undefined"==typeof document||null==document.location?"":document.location.origin}var f=a(7),g={collectWindowErrors:!0,debug:!1},h="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},i=[].slice,j="?",k=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;g.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function e(a,b){var c=null;if(!b||g.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(i.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,h,i){var l=null,m=f.isErrorEvent(i)?i.error:i,n=f.isErrorEvent(a)?a.message:a;if(v)g.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&f.isError(m))l=g.computeStackTrace(m),e(l,!0);else{var p,r={url:b,line:c,column:h},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(k);p&&(s=p[1],n=p[2])}r.func=j,l={name:s,message:n,url:d(),stack:[r]},e(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=h.onerror,h.onerror=l,r=!0)}function n(){r&&(h.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,e.apply(null,[a,!1].concat(b))}function p(a,b){var c=i.call(arguments,1);if(v){if(u===a)return;o()}var d=g.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),g.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,f,g=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,h=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,i=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,k=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,l=/\((\S*)(?::(\d+))(?::(\d+))\)/,m=a.stack.split("\n"),n=[],o=(/^(.*) is undefined$/.exec(a.message),0),p=m.length;o eval")>-1;r&&(b=k.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==o||c[5]||"undefined"==typeof a.columnNumber||(n[0].column=a.columnNumber+1),f={url:c[3],func:c[1]||j,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}if(!f.func&&f.line&&(f.func=j),f.url&&"blob:"===f.url.substr(0,5)){var s=new XMLHttpRequest;if(s.open("GET",f.url,!1),s.send(null),200===s.status){var t=s.responseText||"";t=t.slice(-300);var u=t.match(/\/\/# sourceMappingURL=(.*)$/);if(u){var v=u[1];"~"===v.charAt(0)&&(v=e()+v.slice(1)),f.url=v.slice(0,-4)}}}n.push(f)}return n.length?{name:a.name,message:a.message,url:d(),stack:n -}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=j),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,e){for(var h,i,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==f&&o!==g.report){if(i={url:null,func:j,line:null,column:null},o.name?i.func=o.name:(h=k.exec(o.toString()))&&(i.func=h[1]),"undefined"==typeof i.func)try{i.func=h.input.substring(0,h.input.indexOf("{"))}catch(p){}m[""+o]?n=!0:m[""+o]=!0,l.push(i)}e&&l.splice(0,e);var q={name:a.name,message:a.message,url:d(),stack:l};return b(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),q}function f(b,e){var f=null;e=null==e?0:+e;try{if(f=a(b))return f}catch(h){if(g.debug)throw h}try{if(f=c(b,e+1))return f}catch(h){if(g.debug)throw h}return{name:b.name,message:b.message,url:d()}}return f.augmentStackTraceWithInitialElement=b,f.computeStackTraceFromStackProp=a,f}(),b.exports=g}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{7:7}],9:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}],10:[function(a,b,c){function d(a,b){var c=(65535&a)+(65535&b),d=(a>>16)+(b>>16)+(c>>16);return d<<16|65535&c}function e(a,b){return a<>>32-b}function f(a,b,c,f,g,h){return d(e(d(d(b,a),d(f,h)),g),c)}function g(a,b,c,d,e,g,h){return f(b&c|~b&d,a,b,e,g,h)}function h(a,b,c,d,e,g,h){return f(b&d|c&~d,a,b,e,g,h)}function i(a,b,c,d,e,g,h){return f(b^c^d,a,b,e,g,h)}function j(a,b,c,d,e,g,h){return f(c^(b|~d),a,b,e,g,h)}function k(a,b){a[b>>5]|=128<>>9<<4)+14]=b;var c,e,f,k,l,m=1732584193,n=-271733879,o=-1732584194,p=271733878;for(c=0;c>5]>>>b%32&255);return c}function m(a){var b,c=[];for(c[(a.length>>2)-1]=void 0,b=0;b>5]|=(255&a.charCodeAt(b/8))<16&&(e=k(e,8*a.length)),c=0;c<16;c+=1)f[c]=909522486^e[c],g[c]=1549556828^e[c];return d=k(f.concat(m(b)),512+8*b.length),l(k(g.concat(d),640))}function p(a){var b,c,d="0123456789abcdef",e="";for(c=0;c>>4&15)+d.charAt(15&b);return e}function q(a){return unescape(encodeURIComponent(a))}function r(a){return n(q(a))}function s(a){return p(r(a))}function t(a,b){return o(q(a),q(b))}function u(a,b){return p(t(a,b))}function v(a,b,c){return b?c?t(b,a):u(b,a):c?r(a):s(a)}b.exports=v},{}]},{},[6,1,2])(6)}); +/*! Raven.js 3.25.1 (b6f3c7a) | github.com/getsentry/raven-js */ +!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.Raven=a()}}(function(){return function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};b[g][0].call(k.exports,function(a){var c=b[g][1][a];return e(c?c:a)},k,k.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;g":"anonymous component")+(a._isVue&&a.$options.__file?" at "+a.$options.__file:"")}function e(a,b){if(b=b||window.Vue,b&&b.config){var c=b.config.errorHandler;b.config.errorHandler=function(b,e,f){var g={};"[object Object]"===Object.prototype.toString.call(e)&&(g.componentName=d(e),g.propsData=e.$options.propsData),"undefined"!=typeof f&&(g.lifecycleHook=f),a.captureException(b,{extra:g}),"function"==typeof c&&c.call(this,b,e,f)}}}b.exports=e,a(6).addPlugin(b.exports)},{6:6}],3:[function(a,b,c){function d(a){this.name="RavenConfigError",this.message=a}d.prototype=new Error,d.prototype.constructor=d,b.exports=d},{}],4:[function(a,b,c){var d=a(7),e=function(a,b,c){var e=a[b],f=a;if(b in a){var g="warn"===b?"warning":b;a[b]=function(){var a=[].slice.call(arguments),h=d.safeJoin(a," "),i={level:g,logger:"console",extra:{arguments:a}};"assert"===b?a[0]===!1&&(h="Assertion failed: "+(d.safeJoin(a.slice(1)," ")||"console.assert"),i.extra.arguments=a.slice(1),c&&c(h,i)):c&&c(h,i),e&&Function.prototype.apply.call(e,f,a)}}};b.exports={wrapMethod:e}},{7:7}],5:[function(a,b,c){(function(c){function d(){return+new Date}function e(a,b){return s(b)?function(c){return b(c,a)}:b}function f(){this.b=!("object"!=typeof JSON||!JSON.stringify),this.c=!r(S),this.d=!r(T),this.e=null,this.f=null,this.g=null,this.h=null,this.i=null,this.j=null,this.k={},this.l={release:R.SENTRY_RELEASE&&R.SENTRY_RELEASE.id,logger:"javascript",ignoreErrors:[],ignoreUrls:[],whitelistUrls:[],includePaths:[],headers:null,collectWindowErrors:!0,captureUnhandledRejections:!0,maxMessageLength:0,maxUrlLength:250,stackTraceLimit:50,autoBreadcrumbs:!0,instrument:!0,sampleRate:1,sanitizeKeys:[]},this.m={method:"POST",keepalive:!0,referrerPolicy:K()?"origin":""},this.n=0,this.o=!1,this.p=Error.stackTraceLimit,this.q=R.console||{},this.r={},this.s=[],this.t=d(),this.u=[],this.v=[],this.w=null,this.x=R.location,this.y=this.x&&this.x.href,this.z();for(var a in this.q)this.r[a]=this.q[a]}var g=a(8),h=a(9),i=a(10),j=a(3),k=a(7),l=k.isErrorEvent,m=k.isDOMError,n=k.isDOMException,o=k.isError,p=k.isObject,q=k.isPlainObject,r=k.isUndefined,s=k.isFunction,t=k.isString,u=k.isArray,v=k.isEmptyObject,w=k.each,x=k.objectMerge,y=k.truncate,z=k.objectFrozen,A=k.hasKey,B=k.joinRegExp,C=k.urlencode,D=k.uuid4,E=k.htmlTreeAsString,F=k.isSameException,G=k.isSameStacktrace,H=k.parseUrl,I=k.fill,J=k.supportsFetch,K=k.supportsReferrerPolicy,L=k.serializeKeysForMessage,M=k.serializeException,N=k.sanitize,O=a(4).wrapMethod,P="source protocol user pass host port path".split(" "),Q=/^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/,R="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},S=R.document,T=R.navigator;f.prototype={VERSION:"3.25.1",debug:!1,TraceKit:g,config:function(a,b){var c=this;if(c.h)return this.A("error","Error: Raven has already been configured"),c;if(!a)return c;var d=c.l;b&&w(b,function(a,b){"tags"===a||"extra"===a||"user"===a?c.k[a]=b:d[a]=b}),c.setDSN(a),d.ignoreErrors.push(/^Script error\.?$/),d.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/),d.ignoreErrors=B(d.ignoreErrors),d.ignoreUrls=!!d.ignoreUrls.length&&B(d.ignoreUrls),d.whitelistUrls=!!d.whitelistUrls.length&&B(d.whitelistUrls),d.includePaths=B(d.includePaths),d.maxBreadcrumbs=Math.max(0,Math.min(d.maxBreadcrumbs||100,100));var e={xhr:!0,console:!0,dom:!0,location:!0,sentry:!0},f=d.autoBreadcrumbs;"[object Object]"==={}.toString.call(f)?f=x(e,f):f!==!1&&(f=e),d.autoBreadcrumbs=f;var h={tryCatch:!0},i=d.instrument;return"[object Object]"==={}.toString.call(i)?i=x(h,i):i!==!1&&(i=h),d.instrument=i,g.collectWindowErrors=!!d.collectWindowErrors,c},install:function(){var a=this;return a.isSetup()&&!a.o&&(g.report.subscribe(function(){a.B.apply(a,arguments)}),a.l.captureUnhandledRejections&&a.C(),a.D(),a.l.instrument&&a.l.instrument.tryCatch&&a.E(),a.l.autoBreadcrumbs&&a.F(),a.G(),a.o=!0),Error.stackTraceLimit=a.l.stackTraceLimit,this},setDSN:function(a){var b=this,c=b.H(a),d=c.path.lastIndexOf("/"),e=c.path.substr(1,d);b.I=a,b.i=c.user,b.J=c.pass&&c.pass.substr(1),b.j=c.path.substr(d+1),b.h=b.K(c),b.L=b.h+"/"+e+"api/"+b.j+"/store/",this.z()},context:function(a,b,c){return s(a)&&(c=b||[],b=a,a=void 0),this.wrap(a,b).apply(this,c)},wrap:function(a,b,c){function d(){var d=[],f=arguments.length,g=!a||a&&a.deep!==!1;for(c&&s(c)&&c.apply(this,arguments);f--;)d[f]=g?e.wrap(a,arguments[f]):arguments[f];try{return b.apply(this,d)}catch(h){throw e.M(),e.captureException(h,a),h}}var e=this;if(r(b)&&!s(a))return a;if(s(a)&&(b=a,a=void 0),!s(b))return b;try{if(b.N)return b;if(b.O)return b.O}catch(f){return b}for(var g in b)A(b,g)&&(d[g]=b[g]);return d.prototype=b.prototype,b.O=d,d.N=!0,d.P=b,d},uninstall:function(){return g.report.uninstall(),this.Q(),this.R(),this.S(),this.T(),Error.stackTraceLimit=this.p,this.o=!1,this},U:function(a){this.A("debug","Raven caught unhandled promise rejection:",a),this.captureException(a.reason,{extra:{unhandledPromiseRejection:!0}})},C:function(){return this.U=this.U.bind(this),R.addEventListener&&R.addEventListener("unhandledrejection",this.U),this},Q:function(){return R.removeEventListener&&R.removeEventListener("unhandledrejection",this.U),this},captureException:function(a,b){if(b=x({trimHeadFrames:0},b?b:{}),l(a)&&a.error)a=a.error;else{if(m(a)||n(a)){var c=a.name||(m(a)?"DOMError":"DOMException"),d=a.message?c+": "+a.message:c;return this.captureMessage(d,x(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}))}if(o(a))a=a;else{if(!q(a))return this.captureMessage(a,x(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}));b=this.V(b,a),a=new Error(b.message)}}this.e=a;try{var e=g.computeStackTrace(a);this.W(e,b)}catch(f){if(a!==f)throw f}return this},V:function(a,b){var c=Object.keys(b).sort(),d=x(a,{message:"Non-Error exception captured with keys: "+L(c),fingerprint:[i(c)],extra:a.extra||{}});return d.extra.X=M(b),d},captureMessage:function(a,b){if(!this.l.ignoreErrors.test||!this.l.ignoreErrors.test(a)){b=b||{},a+="";var c,d=x({message:a},b);try{throw new Error(a)}catch(e){c=e}c.name=null;var f=g.computeStackTrace(c),h=u(f.stack)&&f.stack[1];h&&"Raven.captureException"===h.func&&(h=f.stack[2]);var i=h&&h.url||"";if((!this.l.ignoreUrls.test||!this.l.ignoreUrls.test(i))&&(!this.l.whitelistUrls.test||this.l.whitelistUrls.test(i))){if(this.l.stacktrace||b&&b.stacktrace){d.fingerprint=null==d.fingerprint?a:d.fingerprint,b=x({trimHeadFrames:0},b),b.trimHeadFrames+=1;var j=this.Y(f,b);d.stacktrace={frames:j.reverse()}}return d.fingerprint&&(d.fingerprint=u(d.fingerprint)?d.fingerprint:[d.fingerprint]),this.Z(d),this}}},captureBreadcrumb:function(a){var b=x({timestamp:d()/1e3},a);if(s(this.l.breadcrumbCallback)){var c=this.l.breadcrumbCallback(b);if(p(c)&&!v(c))b=c;else if(c===!1)return this}return this.v.push(b),this.v.length>this.l.maxBreadcrumbs&&this.v.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.s.push([a,b]),this.o&&this.G(),this},setUserContext:function(a){return this.k.user=a,this},setExtraContext:function(a){return this.$("extra",a),this},setTagsContext:function(a){return this.$("tags",a),this},clearContext:function(){return this.k={},this},getContext:function(){return JSON.parse(h(this.k))},setEnvironment:function(a){return this.l.environment=a,this},setRelease:function(a){return this.l.release=a,this},setDataCallback:function(a){var b=this.l.dataCallback;return this.l.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.l.breadcrumbCallback;return this.l.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.l.shouldSendCallback;return this.l.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.l.transport=a,this},lastException:function(){return this.e},lastEventId:function(){return this.g},isSetup:function(){return!!this.b&&(!!this.h||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.A("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=R.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(S){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.I;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.k.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.K(this.H(c)),h=S.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(S.head||S.body).appendChild(h)}},M:function(){var a=this;this.n+=1,setTimeout(function(){a.n-=1})},_:function(a,b){var c,d;if(this.c){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),S.createEvent?(c=S.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=S.createEventObject(),c.eventType=a);for(d in b)A(b,d)&&(c[d]=b[d]);if(S.createEvent)S.dispatchEvent(c);else try{S.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},aa:function(a){var b=this;return function(c){if(b.ba=null,b.w!==c){b.w=c;var d;try{d=E(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ca:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.ba;g||a.aa("input")(c),clearTimeout(g),a.ba=setTimeout(function(){a.ba=null},b)}}},da:function(a,b){var c=H(this.x.href),d=H(b),e=H(a);this.y=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},D:function(){var a=this;a.ea=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.N?a.ea.apply(this.P,arguments):a.ea.apply(this,arguments)}},R:function(){this.ea&&(Function.prototype.toString=this.ea)},E:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.da(b.y,c+""),a.apply(this,arguments)}};I(R.history,"pushState",j,d),I(R.history,"replaceState",j,d)}if(c.console&&"console"in R&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};w(["debug","info","warn","error","log"],function(a,b){O(console,b,k)})}},S:function(){for(var a;this.u.length;){a=this.u.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},T:function(){for(var a in this.r)this.q[a]=this.r[a]},G:function(){var a=this;w(this.s,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},H:function(a){var b=Q.exec(a),c={},d=7;try{for(;d--;)c[P[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.l.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},K:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},B:function(){this.n||this.W.apply(this,arguments)},W:function(a,b){var c=this.Y(a,b);this._("handle",{stackInfo:a,options:b}),this.ga(a.name,a.message,a.url,a.lineno,c,b)},Y:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(w(a.stack,function(b,e){var f=c.ha(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.v,0)}),this.k.user&&(a.user=this.k.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),a=this.qa(a),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||v(a[b]))&&delete a[b]}),s(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!v(a)&&(!s(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.na()?void this.A("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function F(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&l(b))for(c=b.split(/\s+/),f=0;fc?Q(a,b-1):d}function R(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?X:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function S(a,b){function c(a){return m(a)?a.map(function(a){return c(a)}):k(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!m(b)||m(b)&&0===b.length)return a;var d,e=A(b),f="********";try{d=JSON.parse(T(a))}catch(g){return a}return c(d)}var T=a(9),U="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},V=3,W=51200,X=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isDOMError:g,isDOMException:h,isUndefined:i,isFunction:j,isPlainObject:k,isString:l,isArray:m,isEmptyObject:n,supportsErrorEvent:o,supportsDOMError:p,supportsDOMException:q,supportsFetch:r,supportsReferrerPolicy:s,supportsPromiseRejectionEvent:t,wrappedCallback:u,each:v,objectMerge:w,truncate:y,objectFrozen:x,hasKey:z,joinRegExp:A,urlencode:B,uuid4:D,htmlTreeAsString:E,htmlElementAsString:F,isSameException:I,isSameStacktrace:J,parseUrl:C,fill:K,safeJoin:L,serializeException:Q,serializeKeysForMessage:R,sanitize:S}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{9:9}],8:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}function e(){return"undefined"==typeof document||null==document.location?"":(document.location.origin||(document.location.origin=document.location.protocol+"//"+document.location.hostname+(document.location.port?":"+document.location.port:"")),document.location.origin)}var f=a(7),g={collectWindowErrors:!0,debug:!1},h="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},i=[].slice,j="?",k=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;g.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function e(a,b){var c=null;if(!b||g.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(i.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,h,i){var l=null,m=f.isErrorEvent(i)?i.error:i,n=f.isErrorEvent(a)?a.message:a;if(v)g.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&f.isError(m))l=g.computeStackTrace(m),e(l,!0);else{var p,r={url:b,line:c,column:h},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(k);p&&(s=p[1],n=p[2])}r.func=j,l={name:s,message:n,url:d(),stack:[r]},e(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=h.onerror,h.onerror=l,r=!0)}function n(){r&&(h.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,e.apply(null,[a,!1].concat(b))}function p(a,b){var c=i.call(arguments,1);if(v){if(u===a)return;o()}var d=g.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),g.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,f,g=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,h=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,i=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,k=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,l=/\((\S*)(?::(\d+))(?::(\d+))\)/,m=a.stack.split("\n"),n=[],o=(/^(.*) is undefined$/.exec(a.message),0),p=m.length;o eval")>-1;r&&(b=k.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==o||c[5]||"undefined"==typeof a.columnNumber||(n[0].column=a.columnNumber+1),f={url:c[3],func:c[1]||j,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}if(!f.func&&f.line&&(f.func=j),f.url&&"blob:"===f.url.substr(0,5)){var s=new XMLHttpRequest;if(s.open("GET",f.url,!1),s.send(null),200===s.status){var t=s.responseText||"";t=t.slice(-300);var u=t.match(/\/\/# sourceMappingURL=(.*)$/); +if(u){var v=u[1];"~"===v.charAt(0)&&(v=e()+v.slice(1)),f.url=v.slice(0,-4)}}}n.push(f)}return n.length?{name:a.name,message:a.message,url:d(),stack:n}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=j),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,e){for(var h,i,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==f&&o!==g.report){if(i={url:null,func:j,line:null,column:null},o.name?i.func=o.name:(h=k.exec(o.toString()))&&(i.func=h[1]),"undefined"==typeof i.func)try{i.func=h.input.substring(0,h.input.indexOf("{"))}catch(p){}m[""+o]?n=!0:m[""+o]=!0,l.push(i)}e&&l.splice(0,e);var q={name:a.name,message:a.message,url:d(),stack:l};return b(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),q}function f(b,e){var f=null;e=null==e?0:+e;try{if(f=a(b))return f}catch(h){if(g.debug)throw h}try{if(f=c(b,e+1))return f}catch(h){if(g.debug)throw h}return{name:b.name,message:b.message,url:d()}}return f.augmentStackTraceWithInitialElement=b,f.computeStackTraceFromStackProp=a,f}(),b.exports=g}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{7:7}],9:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}],10:[function(a,b,c){function d(a,b){var c=(65535&a)+(65535&b),d=(a>>16)+(b>>16)+(c>>16);return d<<16|65535&c}function e(a,b){return a<>>32-b}function f(a,b,c,f,g,h){return d(e(d(d(b,a),d(f,h)),g),c)}function g(a,b,c,d,e,g,h){return f(b&c|~b&d,a,b,e,g,h)}function h(a,b,c,d,e,g,h){return f(b&d|c&~d,a,b,e,g,h)}function i(a,b,c,d,e,g,h){return f(b^c^d,a,b,e,g,h)}function j(a,b,c,d,e,g,h){return f(c^(b|~d),a,b,e,g,h)}function k(a,b){a[b>>5]|=128<>>9<<4)+14]=b;var c,e,f,k,l,m=1732584193,n=-271733879,o=-1732584194,p=271733878;for(c=0;c>5]>>>b%32&255);return c}function m(a){var b,c=[];for(c[(a.length>>2)-1]=void 0,b=0;b>5]|=(255&a.charCodeAt(b/8))<16&&(e=k(e,8*a.length)),c=0;c<16;c+=1)f[c]=909522486^e[c],g[c]=1549556828^e[c];return d=k(f.concat(m(b)),512+8*b.length),l(k(g.concat(d),640))}function p(a){var b,c,d="0123456789abcdef",e="";for(c=0;c>>4&15)+d.charAt(15&b);return e}function q(a){return unescape(encodeURIComponent(a))}function r(a){return n(q(a))}function s(a){return p(r(a))}function t(a,b){return o(q(a),q(b))}function u(a,b){return p(t(a,b))}function v(a,b,c){return b?c?t(b,a):u(b,a):c?r(a):s(a)}b.exports=v},{}]},{},[6,1,2])(6)}); //# sourceMappingURL=raven.min.js.map \ No newline at end of file diff --git a/dist/angular,vue/raven.min.js.map b/dist/angular,vue/raven.min.js.map index fcf0dd039fd3..b58050881cb2 100644 --- a/dist/angular,vue/raven.min.js.map +++ b/dist/angular,vue/raven.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","angularPlugin","angular","RavenProvider","$get","$window","ExceptionHandlerProvider","$provide","decorator","exceptionHandler","R","$delegate","ex","cause","captureException","extra","moduleName","provider","config","setDataCallback","wrappedCallback","data","_normalizeData","angularPattern","exception","values","matches","exec","value","type","message","angularDocs","substr","addPlugin","6","7","2","formatComponentName","vm","$root","name","_isVue","$options","_componentTag","__file","vuePlugin","Vue","_oldOnError","errorHandler","error","info","metaData","Object","prototype","toString","componentName","propsData","lifecycleHook","3","RavenConfigError","constructor","4","utils","wrapMethod","console","level","callback","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","msg","safeJoin","logger","Function","apply","5","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","sanitizeKeys","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isErrorEvent","isDOMError","isDOMException","isError","isObject","isPlainObject","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","sanitize","wrapConsoleMethod","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","dsn","options","_logDebug","globalOptions","key","setDSN","push","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","context","func","undefined","wrap","_before","wrapped","deep","_ignoreNextOnError","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","U","event","reason","unhandledPromiseRejection","C","_promiseRejectionHandler","bind","addEventListener","Q","removeEventListener","trimHeadFrames","captureMessage","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","V","currentOptions","exKeys","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","M","setTimeout","_","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","aa","evtName","_keypressTimeout","target","category","ca","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","da","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","D","_originalFunctionToString","E","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","F","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","S","builtin","T","G","installer","concat","H","str","m","allowSecretKey","K","port","B","W","stackInfo","_triggerEvent","_processException","lineno","Y","frame","_normalizeFrame","in_app","ha","stackInfoUrl","normalized","filename","line","colno","column","function","ga","prefixedMessage","culprit","ia","request","Referer","breadcrumbs","_trimBreadcrumbs","ja","urlProp","urlProps","ka","httpData","userAgent","User-Agent","referrer","z","_backoffDuration","_backoffStart","na","oa","current","last","pa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Z","baseData","project","platform","_getHttpData","serverName","server_name","_sanitizeData","forEach","random","_sendProcessedPayload","qa","sa","ra","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","ta","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","onerror","open","setRequestHeader","send","ua","hash","evaluated","A","$","setUser","setReleaseContext","10","8","9","RavenConstructor","_Raven","noConflict","Client","what","supportsErrorEvent","ErrorEvent","supportsDOMError","DOMError","supportsDOMException","DOMException","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","sanitizeMask","safeInput","o_O","getLocationHref","getLocationOrigin","origin","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","responseText","sourceMaps","sourceMapAddress","charAt","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","y","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","string","raw"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file +{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","angularPlugin","angular","RavenProvider","$get","$window","ExceptionHandlerProvider","$provide","decorator","exceptionHandler","R","$delegate","ex","cause","captureException","extra","moduleName","provider","config","setDataCallback","wrappedCallback","data","_normalizeData","angularPattern","exception","values","matches","exec","value","type","message","angularDocs","substr","addPlugin","6","7","2","formatComponentName","vm","$root","name","_isVue","$options","_componentTag","__file","vuePlugin","Vue","_oldOnError","errorHandler","error","info","metaData","Object","prototype","toString","componentName","propsData","lifecycleHook","3","RavenConfigError","constructor","4","utils","wrapMethod","console","level","callback","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","msg","safeJoin","logger","Function","apply","5","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","sanitizeKeys","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isErrorEvent","isDOMError","isDOMException","isError","isObject","isPlainObject","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","sanitize","wrapConsoleMethod","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","dsn","options","_logDebug","globalOptions","key","setDSN","push","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","context","func","undefined","wrap","_before","wrapped","deep","_ignoreNextOnError","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","U","event","reason","unhandledPromiseRejection","C","_promiseRejectionHandler","bind","addEventListener","Q","removeEventListener","trimHeadFrames","captureMessage","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","V","currentOptions","exKeys","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","M","setTimeout","_","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","aa","evtName","_keypressTimeout","target","category","ca","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","da","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","D","_originalFunctionToString","E","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","F","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","S","builtin","T","G","installer","concat","H","str","m","allowSecretKey","K","port","B","W","stackInfo","_triggerEvent","_processException","lineno","Y","frame","_normalizeFrame","in_app","ha","stackInfoUrl","normalized","filename","line","colno","column","function","ga","prefixedMessage","culprit","ia","request","Referer","breadcrumbs","_trimBreadcrumbs","ja","urlProp","urlProps","ka","httpData","userAgent","User-Agent","referrer","z","_backoffDuration","_backoffStart","na","oa","current","last","pa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Z","baseData","project","platform","_getHttpData","serverName","server_name","_sanitizeData","forEach","random","_sendProcessedPayload","qa","sa","ra","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","ta","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","onerror","open","setRequestHeader","send","ua","hash","evaluated","A","$","setUser","setReleaseContext","10","8","9","RavenConstructor","_Raven","noConflict","Client","what","supportsErrorEvent","ErrorEvent","supportsDOMError","DOMError","supportsDOMException","DOMException","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","sanitizeMask","safeInput","o_O","getLocationHref","getLocationOrigin","origin","hostname","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","responseText","sourceMaps","sourceMapAddress","charAt","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","y","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","string","raw"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file diff --git a/dist/angular/raven.js b/dist/angular/raven.js index 3ba03b13c744..27b3d9ea0f81 100644 --- a/dist/angular/raven.js +++ b/dist/angular/raven.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.25.0 (80dffad) | github.com/getsentry/raven-js */ +/*! Raven.js 3.25.1 (b6f3c7a) | github.com/getsentry/raven-js */ /* * Includes TraceKit @@ -284,7 +284,7 @@ Raven.prototype = { // webpack (using a build step causes webpack #1617). Grunt verifies that // this value matches package.json during build. // See: https://github.com/getsentry/raven-js/issues/465 - VERSION: '3.25.0', + VERSION: '3.25.1', debug: false, @@ -1593,8 +1593,8 @@ Raven.prototype = { var hasPushAndReplaceState = !isChromePackagedApp && _window.history && - history.pushState && - history.replaceState; + _window.history.pushState && + _window.history.replaceState; if (autoBreadcrumbs.location && hasPushAndReplaceState) { // TODO: remove onpopstate handler on uninstall() var oldOnPopState = _window.onpopstate; @@ -1623,8 +1623,8 @@ Raven.prototype = { }; }; - fill(history, 'pushState', historyReplacementFunction, wrappedBuiltIns); - fill(history, 'replaceState', historyReplacementFunction, wrappedBuiltIns); + fill(_window.history, 'pushState', historyReplacementFunction, wrappedBuiltIns); + fill(_window.history, 'replaceState', historyReplacementFunction, wrappedBuiltIns); } if (autoBreadcrumbs.console && 'console' in _window && console.log) { @@ -1914,7 +1914,7 @@ Raven.prototype = { if (this._hasNavigator && _navigator.userAgent) { httpData.headers = { - 'User-Agent': navigator.userAgent + 'User-Agent': _navigator.userAgent }; } @@ -3089,6 +3089,16 @@ function getLocationHref() { function getLocationOrigin() { if (typeof document === 'undefined' || document.location == null) return ''; + + // Oh dear IE10... + if (!document.location.origin) { + document.location.origin = + document.location.protocol + + '//' + + document.location.hostname + + (document.location.port ? ':' + document.location.port : ''); + } + return document.location.origin; } diff --git a/dist/angular/raven.min.js b/dist/angular/raven.min.js index ea5006acb8c3..2a526d823fbe 100644 --- a/dist/angular/raven.min.js +++ b/dist/angular/raven.min.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.25.0 (80dffad) | github.com/getsentry/raven-js */ -!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.Raven=a()}}(function(){return function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};b[g][0].call(k.exports,function(a){var c=b[g][1][a];return e(c?c:a)},k,k.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;gthis.l.maxBreadcrumbs&&this.v.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.s.push([a,b]),this.o&&this.G(),this},setUserContext:function(a){return this.k.user=a,this},setExtraContext:function(a){return this.$("extra",a),this},setTagsContext:function(a){return this.$("tags",a),this},clearContext:function(){return this.k={},this},getContext:function(){return JSON.parse(h(this.k))},setEnvironment:function(a){return this.l.environment=a,this},setRelease:function(a){return this.l.release=a,this},setDataCallback:function(a){var b=this.l.dataCallback;return this.l.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.l.breadcrumbCallback;return this.l.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.l.shouldSendCallback;return this.l.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.l.transport=a,this},lastException:function(){return this.e},lastEventId:function(){return this.g},isSetup:function(){return!!this.b&&(!!this.h||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.A("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=R.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(S){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.I;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.k.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.K(this.H(c)),h=S.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(S.head||S.body).appendChild(h)}},M:function(){var a=this;this.n+=1,setTimeout(function(){a.n-=1})},_:function(a,b){var c,d;if(this.c){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),S.createEvent?(c=S.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=S.createEventObject(),c.eventType=a);for(d in b)A(b,d)&&(c[d]=b[d]);if(S.createEvent)S.dispatchEvent(c);else try{S.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},aa:function(a){var b=this;return function(c){if(b.ba=null,b.w!==c){b.w=c;var d;try{d=E(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ca:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.ba;g||a.aa("input")(c),clearTimeout(g),a.ba=setTimeout(function(){a.ba=null},b)}}},da:function(a,b){var c=H(this.x.href),d=H(b),e=H(a);this.y=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},D:function(){var a=this;a.ea=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.N?a.ea.apply(this.P,arguments):a.ea.apply(this,arguments)}},R:function(){this.ea&&(Function.prototype.toString=this.ea)},E:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.da(b.y,c+""),a.apply(this,arguments)}};I(history,"pushState",j,d),I(history,"replaceState",j,d)}if(c.console&&"console"in R&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};w(["debug","info","warn","error","log"],function(a,b){O(console,b,k)})}},S:function(){for(var a;this.u.length;){a=this.u.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},T:function(){for(var a in this.r)this.q[a]=this.r[a]},G:function(){var a=this;w(this.s,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},H:function(a){var b=Q.exec(a),c={},d=7;try{for(;d--;)c[P[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.l.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},K:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},B:function(){this.n||this.W.apply(this,arguments)},W:function(a,b){var c=this.Y(a,b);this._("handle",{stackInfo:a,options:b}),this.ga(a.name,a.message,a.url,a.lineno,c,b)},Y:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(w(a.stack,function(b,e){var f=c.ha(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.v,0)}),this.k.user&&(a.user=this.k.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),a=this.qa(a),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||v(a[b]))&&delete a[b]}),s(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!v(a)&&(!s(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.na()?void this.A("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function F(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&l(b))for(c=b.split(/\s+/),f=0;fc?Q(a,b-1):d}function R(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?X:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function S(a,b){function c(a){return m(a)?a.map(function(a){return c(a)}):k(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!m(b)||m(b)&&0===b.length)return a;var d,e=A(b),f="********";try{d=JSON.parse(T(a))}catch(g){return a}return c(d)}var T=a(8),U="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},V=3,W=51200,X=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isDOMError:g,isDOMException:h,isUndefined:i,isFunction:j,isPlainObject:k,isString:l,isArray:m,isEmptyObject:n,supportsErrorEvent:o,supportsDOMError:p,supportsDOMException:q,supportsFetch:r,supportsReferrerPolicy:s,supportsPromiseRejectionEvent:t,wrappedCallback:u,each:v,objectMerge:w,truncate:y,objectFrozen:x,hasKey:z,joinRegExp:A,urlencode:B,uuid4:D,htmlTreeAsString:E,htmlElementAsString:F,isSameException:I,isSameStacktrace:J,parseUrl:C,fill:K,safeJoin:L,serializeException:Q,serializeKeysForMessage:R,sanitize:S}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{8:8}],7:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}function e(){return"undefined"==typeof document||null==document.location?"":document.location.origin}var f=a(6),g={collectWindowErrors:!0,debug:!1},h="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},i=[].slice,j="?",k=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;g.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function e(a,b){var c=null;if(!b||g.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(i.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,h,i){var l=null,m=f.isErrorEvent(i)?i.error:i,n=f.isErrorEvent(a)?a.message:a;if(v)g.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&f.isError(m))l=g.computeStackTrace(m),e(l,!0);else{var p,r={url:b,line:c,column:h},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(k);p&&(s=p[1],n=p[2])}r.func=j,l={name:s,message:n,url:d(),stack:[r]},e(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=h.onerror,h.onerror=l,r=!0)}function n(){r&&(h.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,e.apply(null,[a,!1].concat(b))}function p(a,b){var c=i.call(arguments,1);if(v){if(u===a)return;o()}var d=g.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),g.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,f,g=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,h=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,i=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,k=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,l=/\((\S*)(?::(\d+))(?::(\d+))\)/,m=a.stack.split("\n"),n=[],o=(/^(.*) is undefined$/.exec(a.message),0),p=m.length;o eval")>-1;r&&(b=k.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==o||c[5]||"undefined"==typeof a.columnNumber||(n[0].column=a.columnNumber+1),f={url:c[3],func:c[1]||j,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}if(!f.func&&f.line&&(f.func=j),f.url&&"blob:"===f.url.substr(0,5)){var s=new XMLHttpRequest;if(s.open("GET",f.url,!1),s.send(null),200===s.status){var t=s.responseText||"";t=t.slice(-300);var u=t.match(/\/\/# sourceMappingURL=(.*)$/);if(u){var v=u[1];"~"===v.charAt(0)&&(v=e()+v.slice(1)),f.url=v.slice(0,-4)}}}n.push(f)}return n.length?{name:a.name,message:a.message,url:d(),stack:n}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=j),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,e){for(var h,i,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==f&&o!==g.report){if(i={url:null,func:j,line:null,column:null},o.name?i.func=o.name:(h=k.exec(o.toString()))&&(i.func=h[1]),"undefined"==typeof i.func)try{i.func=h.input.substring(0,h.input.indexOf("{")); -}catch(p){}m[""+o]?n=!0:m[""+o]=!0,l.push(i)}e&&l.splice(0,e);var q={name:a.name,message:a.message,url:d(),stack:l};return b(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),q}function f(b,e){var f=null;e=null==e?0:+e;try{if(f=a(b))return f}catch(h){if(g.debug)throw h}try{if(f=c(b,e+1))return f}catch(h){if(g.debug)throw h}return{name:b.name,message:b.message,url:d()}}return f.augmentStackTraceWithInitialElement=b,f.computeStackTraceFromStackProp=a,f}(),b.exports=g}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{6:6}],8:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}],9:[function(a,b,c){function d(a,b){var c=(65535&a)+(65535&b),d=(a>>16)+(b>>16)+(c>>16);return d<<16|65535&c}function e(a,b){return a<>>32-b}function f(a,b,c,f,g,h){return d(e(d(d(b,a),d(f,h)),g),c)}function g(a,b,c,d,e,g,h){return f(b&c|~b&d,a,b,e,g,h)}function h(a,b,c,d,e,g,h){return f(b&d|c&~d,a,b,e,g,h)}function i(a,b,c,d,e,g,h){return f(b^c^d,a,b,e,g,h)}function j(a,b,c,d,e,g,h){return f(c^(b|~d),a,b,e,g,h)}function k(a,b){a[b>>5]|=128<>>9<<4)+14]=b;var c,e,f,k,l,m=1732584193,n=-271733879,o=-1732584194,p=271733878;for(c=0;c>5]>>>b%32&255);return c}function m(a){var b,c=[];for(c[(a.length>>2)-1]=void 0,b=0;b>5]|=(255&a.charCodeAt(b/8))<16&&(e=k(e,8*a.length)),c=0;c<16;c+=1)f[c]=909522486^e[c],g[c]=1549556828^e[c];return d=k(f.concat(m(b)),512+8*b.length),l(k(g.concat(d),640))}function p(a){var b,c,d="0123456789abcdef",e="";for(c=0;c>>4&15)+d.charAt(15&b);return e}function q(a){return unescape(encodeURIComponent(a))}function r(a){return n(q(a))}function s(a){return p(r(a))}function t(a,b){return o(q(a),q(b))}function u(a,b){return p(t(a,b))}function v(a,b,c){return b?c?t(b,a):u(b,a):c?r(a):s(a)}b.exports=v},{}]},{},[5,1])(5)}); +/*! Raven.js 3.25.1 (b6f3c7a) | github.com/getsentry/raven-js */ +!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.Raven=a()}}(function(){return function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};b[g][0].call(k.exports,function(a){var c=b[g][1][a];return e(c?c:a)},k,k.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;gthis.l.maxBreadcrumbs&&this.v.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.s.push([a,b]),this.o&&this.G(),this},setUserContext:function(a){return this.k.user=a,this},setExtraContext:function(a){return this.$("extra",a),this},setTagsContext:function(a){return this.$("tags",a),this},clearContext:function(){return this.k={},this},getContext:function(){return JSON.parse(h(this.k))},setEnvironment:function(a){return this.l.environment=a,this},setRelease:function(a){return this.l.release=a,this},setDataCallback:function(a){var b=this.l.dataCallback;return this.l.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.l.breadcrumbCallback;return this.l.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.l.shouldSendCallback;return this.l.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.l.transport=a,this},lastException:function(){return this.e},lastEventId:function(){return this.g},isSetup:function(){return!!this.b&&(!!this.h||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.A("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=R.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(S){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.I;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.k.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.K(this.H(c)),h=S.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(S.head||S.body).appendChild(h)}},M:function(){var a=this;this.n+=1,setTimeout(function(){a.n-=1})},_:function(a,b){var c,d;if(this.c){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),S.createEvent?(c=S.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=S.createEventObject(),c.eventType=a);for(d in b)A(b,d)&&(c[d]=b[d]);if(S.createEvent)S.dispatchEvent(c);else try{S.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},aa:function(a){var b=this;return function(c){if(b.ba=null,b.w!==c){b.w=c;var d;try{d=E(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ca:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.ba;g||a.aa("input")(c),clearTimeout(g),a.ba=setTimeout(function(){a.ba=null},b)}}},da:function(a,b){var c=H(this.x.href),d=H(b),e=H(a);this.y=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},D:function(){var a=this;a.ea=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.N?a.ea.apply(this.P,arguments):a.ea.apply(this,arguments)}},R:function(){this.ea&&(Function.prototype.toString=this.ea)},E:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.da(b.y,c+""),a.apply(this,arguments)}};I(R.history,"pushState",j,d),I(R.history,"replaceState",j,d)}if(c.console&&"console"in R&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};w(["debug","info","warn","error","log"],function(a,b){O(console,b,k)})}},S:function(){for(var a;this.u.length;){a=this.u.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},T:function(){for(var a in this.r)this.q[a]=this.r[a]},G:function(){var a=this;w(this.s,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},H:function(a){var b=Q.exec(a),c={},d=7;try{for(;d--;)c[P[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.l.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},K:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},B:function(){this.n||this.W.apply(this,arguments)},W:function(a,b){var c=this.Y(a,b);this._("handle",{stackInfo:a,options:b}),this.ga(a.name,a.message,a.url,a.lineno,c,b)},Y:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(w(a.stack,function(b,e){var f=c.ha(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.v,0)}),this.k.user&&(a.user=this.k.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),a=this.qa(a),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||v(a[b]))&&delete a[b]}),s(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!v(a)&&(!s(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.na()?void this.A("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function F(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&l(b))for(c=b.split(/\s+/),f=0;fc?Q(a,b-1):d}function R(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?X:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function S(a,b){function c(a){return m(a)?a.map(function(a){return c(a)}):k(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!m(b)||m(b)&&0===b.length)return a;var d,e=A(b),f="********";try{d=JSON.parse(T(a))}catch(g){return a}return c(d)}var T=a(8),U="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},V=3,W=51200,X=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isDOMError:g,isDOMException:h,isUndefined:i,isFunction:j,isPlainObject:k,isString:l,isArray:m,isEmptyObject:n,supportsErrorEvent:o,supportsDOMError:p,supportsDOMException:q,supportsFetch:r,supportsReferrerPolicy:s,supportsPromiseRejectionEvent:t,wrappedCallback:u,each:v,objectMerge:w,truncate:y,objectFrozen:x,hasKey:z,joinRegExp:A,urlencode:B,uuid4:D,htmlTreeAsString:E,htmlElementAsString:F,isSameException:I,isSameStacktrace:J,parseUrl:C,fill:K,safeJoin:L,serializeException:Q,serializeKeysForMessage:R,sanitize:S}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{8:8}],7:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}function e(){return"undefined"==typeof document||null==document.location?"":(document.location.origin||(document.location.origin=document.location.protocol+"//"+document.location.hostname+(document.location.port?":"+document.location.port:"")),document.location.origin)}var f=a(6),g={collectWindowErrors:!0,debug:!1},h="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},i=[].slice,j="?",k=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;g.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function e(a,b){var c=null;if(!b||g.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(i.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,h,i){var l=null,m=f.isErrorEvent(i)?i.error:i,n=f.isErrorEvent(a)?a.message:a;if(v)g.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&f.isError(m))l=g.computeStackTrace(m),e(l,!0);else{var p,r={url:b,line:c,column:h},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(k);p&&(s=p[1],n=p[2])}r.func=j,l={name:s,message:n,url:d(),stack:[r]},e(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=h.onerror,h.onerror=l,r=!0)}function n(){r&&(h.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,e.apply(null,[a,!1].concat(b))}function p(a,b){var c=i.call(arguments,1);if(v){if(u===a)return;o()}var d=g.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),g.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,f,g=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,h=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,i=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,k=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,l=/\((\S*)(?::(\d+))(?::(\d+))\)/,m=a.stack.split("\n"),n=[],o=(/^(.*) is undefined$/.exec(a.message),0),p=m.length;o eval")>-1;r&&(b=k.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==o||c[5]||"undefined"==typeof a.columnNumber||(n[0].column=a.columnNumber+1),f={url:c[3],func:c[1]||j,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}if(!f.func&&f.line&&(f.func=j),f.url&&"blob:"===f.url.substr(0,5)){var s=new XMLHttpRequest;if(s.open("GET",f.url,!1),s.send(null),200===s.status){var t=s.responseText||"";t=t.slice(-300);var u=t.match(/\/\/# sourceMappingURL=(.*)$/);if(u){var v=u[1];"~"===v.charAt(0)&&(v=e()+v.slice(1)),f.url=v.slice(0,-4)}}}n.push(f)}return n.length?{name:a.name,message:a.message,url:d(),stack:n}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=j),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,e){for(var h,i,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==f&&o!==g.report){ +if(i={url:null,func:j,line:null,column:null},o.name?i.func=o.name:(h=k.exec(o.toString()))&&(i.func=h[1]),"undefined"==typeof i.func)try{i.func=h.input.substring(0,h.input.indexOf("{"))}catch(p){}m[""+o]?n=!0:m[""+o]=!0,l.push(i)}e&&l.splice(0,e);var q={name:a.name,message:a.message,url:d(),stack:l};return b(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),q}function f(b,e){var f=null;e=null==e?0:+e;try{if(f=a(b))return f}catch(h){if(g.debug)throw h}try{if(f=c(b,e+1))return f}catch(h){if(g.debug)throw h}return{name:b.name,message:b.message,url:d()}}return f.augmentStackTraceWithInitialElement=b,f.computeStackTraceFromStackProp=a,f}(),b.exports=g}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{6:6}],8:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}],9:[function(a,b,c){function d(a,b){var c=(65535&a)+(65535&b),d=(a>>16)+(b>>16)+(c>>16);return d<<16|65535&c}function e(a,b){return a<>>32-b}function f(a,b,c,f,g,h){return d(e(d(d(b,a),d(f,h)),g),c)}function g(a,b,c,d,e,g,h){return f(b&c|~b&d,a,b,e,g,h)}function h(a,b,c,d,e,g,h){return f(b&d|c&~d,a,b,e,g,h)}function i(a,b,c,d,e,g,h){return f(b^c^d,a,b,e,g,h)}function j(a,b,c,d,e,g,h){return f(c^(b|~d),a,b,e,g,h)}function k(a,b){a[b>>5]|=128<>>9<<4)+14]=b;var c,e,f,k,l,m=1732584193,n=-271733879,o=-1732584194,p=271733878;for(c=0;c>5]>>>b%32&255);return c}function m(a){var b,c=[];for(c[(a.length>>2)-1]=void 0,b=0;b>5]|=(255&a.charCodeAt(b/8))<16&&(e=k(e,8*a.length)),c=0;c<16;c+=1)f[c]=909522486^e[c],g[c]=1549556828^e[c];return d=k(f.concat(m(b)),512+8*b.length),l(k(g.concat(d),640))}function p(a){var b,c,d="0123456789abcdef",e="";for(c=0;c>>4&15)+d.charAt(15&b);return e}function q(a){return unescape(encodeURIComponent(a))}function r(a){return n(q(a))}function s(a){return p(r(a))}function t(a,b){return o(q(a),q(b))}function u(a,b){return p(t(a,b))}function v(a,b,c){return b?c?t(b,a):u(b,a):c?r(a):s(a)}b.exports=v},{}]},{},[5,1])(5)}); //# sourceMappingURL=raven.min.js.map \ No newline at end of file diff --git a/dist/angular/raven.min.js.map b/dist/angular/raven.min.js.map index 870e70f4888a..7a669c8846fa 100644 --- a/dist/angular/raven.min.js.map +++ b/dist/angular/raven.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","angularPlugin","angular","RavenProvider","$get","$window","ExceptionHandlerProvider","$provide","decorator","exceptionHandler","R","$delegate","ex","cause","captureException","extra","moduleName","provider","config","setDataCallback","wrappedCallback","data","_normalizeData","angularPattern","exception","values","matches","exec","value","type","message","angularDocs","substr","addPlugin","5","6","2","RavenConfigError","name","prototype","constructor","3","utils","wrapMethod","console","level","callback","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","msg","safeJoin","logger","Function","apply","4","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","sanitizeKeys","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isErrorEvent","isDOMError","isDOMException","isError","isObject","isPlainObject","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","sanitize","wrapConsoleMethod","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","dsn","options","_logDebug","globalOptions","key","setDSN","push","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","toString","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","context","func","undefined","wrap","_before","wrapped","deep","_ignoreNextOnError","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","U","event","reason","unhandledPromiseRejection","C","_promiseRejectionHandler","bind","addEventListener","Q","removeEventListener","trimHeadFrames","error","captureMessage","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","V","currentOptions","exKeys","Object","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","M","setTimeout","_","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","aa","evtName","_keypressTimeout","target","category","ca","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","da","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","D","_originalFunctionToString","E","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","F","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","S","builtin","T","G","installer","concat","H","str","m","allowSecretKey","K","port","B","W","stackInfo","_triggerEvent","_processException","lineno","Y","frame","_normalizeFrame","in_app","ha","stackInfoUrl","normalized","filename","line","colno","column","function","ga","prefixedMessage","culprit","ia","request","Referer","breadcrumbs","_trimBreadcrumbs","ja","urlProp","urlProps","ka","httpData","userAgent","User-Agent","referrer","z","_backoffDuration","_backoffStart","na","oa","current","last","pa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Z","baseData","project","platform","_getHttpData","serverName","server_name","_sanitizeData","forEach","random","_sendProcessedPayload","qa","sa","ra","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","ta","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","onerror","open","setRequestHeader","send","ua","hash","evaluated","A","$","setUser","setReleaseContext","7","8","9","RavenConstructor","_Raven","noConflict","Client","what","supportsErrorEvent","ErrorEvent","supportsDOMError","DOMError","supportsDOMException","DOMException","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","sanitizeMask","safeInput","o_O","getLocationHref","getLocationOrigin","origin","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","responseText","sourceMaps","sourceMapAddress","charAt","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","y","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","string","raw"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file +{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","angularPlugin","angular","RavenProvider","$get","$window","ExceptionHandlerProvider","$provide","decorator","exceptionHandler","R","$delegate","ex","cause","captureException","extra","moduleName","provider","config","setDataCallback","wrappedCallback","data","_normalizeData","angularPattern","exception","values","matches","exec","value","type","message","angularDocs","substr","addPlugin","5","6","2","RavenConfigError","name","prototype","constructor","3","utils","wrapMethod","console","level","callback","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","msg","safeJoin","logger","Function","apply","4","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","sanitizeKeys","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isErrorEvent","isDOMError","isDOMException","isError","isObject","isPlainObject","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","sanitize","wrapConsoleMethod","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","dsn","options","_logDebug","globalOptions","key","setDSN","push","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","toString","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","context","func","undefined","wrap","_before","wrapped","deep","_ignoreNextOnError","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","U","event","reason","unhandledPromiseRejection","C","_promiseRejectionHandler","bind","addEventListener","Q","removeEventListener","trimHeadFrames","error","captureMessage","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","V","currentOptions","exKeys","Object","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","M","setTimeout","_","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","aa","evtName","_keypressTimeout","target","category","ca","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","da","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","D","_originalFunctionToString","E","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","F","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","S","builtin","T","G","installer","concat","H","str","m","allowSecretKey","K","port","B","W","stackInfo","_triggerEvent","_processException","lineno","Y","frame","_normalizeFrame","in_app","ha","stackInfoUrl","normalized","filename","line","colno","column","function","ga","prefixedMessage","culprit","ia","request","Referer","breadcrumbs","_trimBreadcrumbs","ja","urlProp","urlProps","ka","httpData","userAgent","User-Agent","referrer","z","_backoffDuration","_backoffStart","na","oa","current","last","pa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Z","baseData","project","platform","_getHttpData","serverName","server_name","_sanitizeData","forEach","random","_sendProcessedPayload","qa","sa","ra","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","ta","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","onerror","open","setRequestHeader","send","ua","hash","evaluated","A","$","setUser","setReleaseContext","7","8","9","RavenConstructor","_Raven","noConflict","Client","what","supportsErrorEvent","ErrorEvent","supportsDOMError","DOMError","supportsDOMException","DOMException","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","sanitizeMask","safeInput","o_O","getLocationHref","getLocationOrigin","origin","hostname","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","responseText","sourceMaps","sourceMapAddress","charAt","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","y","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","string","raw"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file diff --git a/dist/console,ember,require,vue/raven.js b/dist/console,ember,require,vue/raven.js index e6e026fea0b6..608f9b0c2f61 100644 --- a/dist/console,ember,require,vue/raven.js +++ b/dist/console,ember,require,vue/raven.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.25.0 (80dffad) | github.com/getsentry/raven-js */ +/*! Raven.js 3.25.1 (b6f3c7a) | github.com/getsentry/raven-js */ /* * Includes TraceKit @@ -342,7 +342,7 @@ Raven.prototype = { // webpack (using a build step causes webpack #1617). Grunt verifies that // this value matches package.json during build. // See: https://github.com/getsentry/raven-js/issues/465 - VERSION: '3.25.0', + VERSION: '3.25.1', debug: false, @@ -1651,8 +1651,8 @@ Raven.prototype = { var hasPushAndReplaceState = !isChromePackagedApp && _window.history && - history.pushState && - history.replaceState; + _window.history.pushState && + _window.history.replaceState; if (autoBreadcrumbs.location && hasPushAndReplaceState) { // TODO: remove onpopstate handler on uninstall() var oldOnPopState = _window.onpopstate; @@ -1681,8 +1681,8 @@ Raven.prototype = { }; }; - fill(history, 'pushState', historyReplacementFunction, wrappedBuiltIns); - fill(history, 'replaceState', historyReplacementFunction, wrappedBuiltIns); + fill(_window.history, 'pushState', historyReplacementFunction, wrappedBuiltIns); + fill(_window.history, 'replaceState', historyReplacementFunction, wrappedBuiltIns); } if (autoBreadcrumbs.console && 'console' in _window && console.log) { @@ -1972,7 +1972,7 @@ Raven.prototype = { if (this._hasNavigator && _navigator.userAgent) { httpData.headers = { - 'User-Agent': navigator.userAgent + 'User-Agent': _navigator.userAgent }; } @@ -3147,6 +3147,16 @@ function getLocationHref() { function getLocationOrigin() { if (typeof document === 'undefined' || document.location == null) return ''; + + // Oh dear IE10... + if (!document.location.origin) { + document.location.origin = + document.location.protocol + + '//' + + document.location.hostname + + (document.location.port ? ':' + document.location.port : ''); + } + return document.location.origin; } diff --git a/dist/console,ember,require,vue/raven.min.js b/dist/console,ember,require,vue/raven.min.js index d057486fcb06..73058098c57c 100644 --- a/dist/console,ember,require,vue/raven.min.js +++ b/dist/console,ember,require,vue/raven.min.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.25.0 (80dffad) | github.com/getsentry/raven-js */ -!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.Raven=a()}}(function(){var a;return function b(a,c,d){function e(g,h){if(!c[g]){if(!a[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};a[g][0].call(k.exports,function(b){var c=a[g][1][b];return e(c?c:b)},k,k.exports,b,a,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;g":"anonymous component")+(a._isVue&&a.$options.__file?" at "+a.$options.__file:"")}function e(a,b){if(b=b||window.Vue,b&&b.config){var c=b.config.errorHandler;b.config.errorHandler=function(b,e,f){var g={};"[object Object]"===Object.prototype.toString.call(e)&&(g.componentName=d(e),g.propsData=e.$options.propsData),"undefined"!=typeof f&&(g.lifecycleHook=f),a.captureException(b,{extra:g}),"function"==typeof c&&c.call(this,b,e,f)}}}b.exports=e,a(8).addPlugin(b.exports)},{8:8}],5:[function(a,b,c){function d(a){this.name="RavenConfigError",this.message=a}d.prototype=new Error,d.prototype.constructor=d,b.exports=d},{}],6:[function(a,b,c){var d=a(9),e=function(a,b,c){var e=a[b],f=a;if(b in a){var g="warn"===b?"warning":b;a[b]=function(){var a=[].slice.call(arguments),h=d.safeJoin(a," "),i={level:g,logger:"console",extra:{arguments:a}};"assert"===b?a[0]===!1&&(h="Assertion failed: "+(d.safeJoin(a.slice(1)," ")||"console.assert"),i.extra.arguments=a.slice(1),c&&c(h,i)):c&&c(h,i),e&&Function.prototype.apply.call(e,f,a)}}};b.exports={wrapMethod:e}},{9:9}],7:[function(a,b,c){(function(c){function d(){return+new Date}function e(a,b){return s(b)?function(c){return b(c,a)}:b}function f(){this.a=!("object"!=typeof JSON||!JSON.stringify),this.b=!r(S),this.c=!r(T),this.d=null,this.e=null,this.f=null,this.g=null,this.h=null,this.i=null,this.j={},this.k={release:R.SENTRY_RELEASE&&R.SENTRY_RELEASE.id,logger:"javascript",ignoreErrors:[],ignoreUrls:[],whitelistUrls:[],includePaths:[],headers:null,collectWindowErrors:!0,captureUnhandledRejections:!0,maxMessageLength:0,maxUrlLength:250,stackTraceLimit:50,autoBreadcrumbs:!0,instrument:!0,sampleRate:1,sanitizeKeys:[]},this.l={method:"POST",keepalive:!0,referrerPolicy:K()?"origin":""},this.m=0,this.n=!1,this.o=Error.stackTraceLimit,this.p=R.console||{},this.q={},this.r=[],this.s=d(),this.t=[],this.u=[],this.v=null,this.w=R.location,this.x=this.w&&this.w.href,this.y();for(var a in this.p)this.q[a]=this.p[a]}var g=a(10),h=a(11),i=a(12),j=a(5),k=a(9),l=k.isErrorEvent,m=k.isDOMError,n=k.isDOMException,o=k.isError,p=k.isObject,q=k.isPlainObject,r=k.isUndefined,s=k.isFunction,t=k.isString,u=k.isArray,v=k.isEmptyObject,w=k.each,x=k.objectMerge,y=k.truncate,z=k.objectFrozen,A=k.hasKey,B=k.joinRegExp,C=k.urlencode,D=k.uuid4,E=k.htmlTreeAsString,F=k.isSameException,G=k.isSameStacktrace,H=k.parseUrl,I=k.fill,J=k.supportsFetch,K=k.supportsReferrerPolicy,L=k.serializeKeysForMessage,M=k.serializeException,N=k.sanitize,O=a(6).wrapMethod,P="source protocol user pass host port path".split(" "),Q=/^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/,R="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},S=R.document,T=R.navigator;f.prototype={VERSION:"3.25.0",debug:!1,TraceKit:g,config:function(a,b){var c=this;if(c.g)return this.z("error","Error: Raven has already been configured"),c;if(!a)return c;var d=c.k;b&&w(b,function(a,b){"tags"===a||"extra"===a||"user"===a?c.j[a]=b:d[a]=b}),c.setDSN(a),d.ignoreErrors.push(/^Script error\.?$/),d.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/),d.ignoreErrors=B(d.ignoreErrors),d.ignoreUrls=!!d.ignoreUrls.length&&B(d.ignoreUrls),d.whitelistUrls=!!d.whitelistUrls.length&&B(d.whitelistUrls),d.includePaths=B(d.includePaths),d.maxBreadcrumbs=Math.max(0,Math.min(d.maxBreadcrumbs||100,100));var e={xhr:!0,console:!0,dom:!0,location:!0,sentry:!0},f=d.autoBreadcrumbs;"[object Object]"==={}.toString.call(f)?f=x(e,f):f!==!1&&(f=e),d.autoBreadcrumbs=f;var h={tryCatch:!0},i=d.instrument;return"[object Object]"==={}.toString.call(i)?i=x(h,i):i!==!1&&(i=h),d.instrument=i,g.collectWindowErrors=!!d.collectWindowErrors,c},install:function(){var a=this;return a.isSetup()&&!a.n&&(g.report.subscribe(function(){a.A.apply(a,arguments)}),a.k.captureUnhandledRejections&&a.B(),a.C(),a.k.instrument&&a.k.instrument.tryCatch&&a.D(),a.k.autoBreadcrumbs&&a.E(),a.F(),a.n=!0),Error.stackTraceLimit=a.k.stackTraceLimit,this},setDSN:function(a){var b=this,c=b.G(a),d=c.path.lastIndexOf("/"),e=c.path.substr(1,d);b.H=a,b.h=c.user,b.I=c.pass&&c.pass.substr(1),b.i=c.path.substr(d+1),b.g=b.J(c),b.K=b.g+"/"+e+"api/"+b.i+"/store/",this.y()},context:function(a,b,c){return s(a)&&(c=b||[],b=a,a=void 0),this.wrap(a,b).apply(this,c)},wrap:function(a,b,c){function d(){var d=[],f=arguments.length,g=!a||a&&a.deep!==!1;for(c&&s(c)&&c.apply(this,arguments);f--;)d[f]=g?e.wrap(a,arguments[f]):arguments[f];try{return b.apply(this,d)}catch(h){throw e.L(),e.captureException(h,a),h}}var e=this;if(r(b)&&!s(a))return a;if(s(a)&&(b=a,a=void 0),!s(b))return b;try{if(b.M)return b;if(b.N)return b.N}catch(f){return b}for(var g in b)A(b,g)&&(d[g]=b[g]);return d.prototype=b.prototype,b.N=d,d.M=!0,d.O=b,d},uninstall:function(){return g.report.uninstall(),this.P(),this.Q(),this.R(),this.S(),Error.stackTraceLimit=this.o,this.n=!1,this},T:function(a){this.z("debug","Raven caught unhandled promise rejection:",a),this.captureException(a.reason,{extra:{unhandledPromiseRejection:!0}})},B:function(){return this.T=this.T.bind(this),R.addEventListener&&R.addEventListener("unhandledrejection",this.T),this},P:function(){return R.removeEventListener&&R.removeEventListener("unhandledrejection",this.T),this},captureException:function(a,b){if(b=x({trimHeadFrames:0},b?b:{}),l(a)&&a.error)a=a.error;else{if(m(a)||n(a)){var c=a.name||(m(a)?"DOMError":"DOMException"),d=a.message?c+": "+a.message:c;return this.captureMessage(d,x(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}))}if(o(a))a=a;else{if(!q(a))return this.captureMessage(a,x(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}));b=this.U(b,a),a=new Error(b.message)}}this.d=a;try{var e=g.computeStackTrace(a);this.V(e,b)}catch(f){if(a!==f)throw f}return this},U:function(a,b){var c=Object.keys(b).sort(),d=x(a,{message:"Non-Error exception captured with keys: "+L(c),fingerprint:[i(c)],extra:a.extra||{}});return d.extra.W=M(b),d},captureMessage:function(a,b){if(!this.k.ignoreErrors.test||!this.k.ignoreErrors.test(a)){b=b||{},a+="";var c,d=x({message:a},b);try{throw new Error(a)}catch(e){c=e}c.name=null;var f=g.computeStackTrace(c),h=u(f.stack)&&f.stack[1];h&&"Raven.captureException"===h.func&&(h=f.stack[2]);var i=h&&h.url||"";if((!this.k.ignoreUrls.test||!this.k.ignoreUrls.test(i))&&(!this.k.whitelistUrls.test||this.k.whitelistUrls.test(i))){if(this.k.stacktrace||b&&b.stacktrace){d.fingerprint=null==d.fingerprint?a:d.fingerprint,b=x({trimHeadFrames:0},b),b.trimHeadFrames+=1;var j=this.X(f,b);d.stacktrace={frames:j.reverse()}}return d.fingerprint&&(d.fingerprint=u(d.fingerprint)?d.fingerprint:[d.fingerprint]),this.Y(d),this}}},captureBreadcrumb:function(a){var b=x({timestamp:d()/1e3},a);if(s(this.k.breadcrumbCallback)){var c=this.k.breadcrumbCallback(b);if(p(c)&&!v(c))b=c;else if(c===!1)return this}return this.u.push(b),this.u.length>this.k.maxBreadcrumbs&&this.u.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.r.push([a,b]),this.n&&this.F(),this},setUserContext:function(a){return this.j.user=a,this},setExtraContext:function(a){return this.Z("extra",a),this},setTagsContext:function(a){return this.Z("tags",a),this},clearContext:function(){return this.j={},this},getContext:function(){return JSON.parse(h(this.j))},setEnvironment:function(a){return this.k.environment=a,this},setRelease:function(a){return this.k.release=a,this},setDataCallback:function(a){var b=this.k.dataCallback;return this.k.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.k.breadcrumbCallback;return this.k.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.k.shouldSendCallback;return this.k.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.k.transport=a,this},lastException:function(){return this.d},lastEventId:function(){return this.f},isSetup:function(){return!!this.a&&(!!this.g||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.z("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=R.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(S){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.H;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.j.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.J(this.G(c)),h=S.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(S.head||S.body).appendChild(h)}},L:function(){var a=this;this.m+=1,setTimeout(function(){a.m-=1})},$:function(a,b){var c,d;if(this.b){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),S.createEvent?(c=S.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=S.createEventObject(),c.eventType=a);for(d in b)A(b,d)&&(c[d]=b[d]);if(S.createEvent)S.dispatchEvent(c);else try{S.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},_:function(a){var b=this;return function(c){if(b.aa=null,b.v!==c){b.v=c;var d;try{d=E(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ba:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.aa;g||a._("input")(c),clearTimeout(g),a.aa=setTimeout(function(){a.aa=null},b)}}},ca:function(a,b){var c=H(this.w.href),d=H(b),e=H(a);this.x=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},C:function(){var a=this;a.da=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.M?a.da.apply(this.O,arguments):a.da.apply(this,arguments)}},Q:function(){this.da&&(Function.prototype.toString=this.da)},D:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.ca(b.x,c+""),a.apply(this,arguments)}};I(history,"pushState",j,d),I(history,"replaceState",j,d)}if(c.console&&"console"in R&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};w(["debug","info","warn","error","log"],function(a,b){O(console,b,k)})}},R:function(){for(var a;this.t.length;){a=this.t.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},S:function(){for(var a in this.q)this.p[a]=this.q[a]},F:function(){var a=this;w(this.r,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},G:function(a){var b=Q.exec(a),c={},d=7;try{for(;d--;)c[P[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.k.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},J:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},A:function(){this.m||this.V.apply(this,arguments)},V:function(a,b){var c=this.X(a,b);this.$("handle",{stackInfo:a,options:b}),this.fa(a.name,a.message,a.url,a.lineno,c,b)},X:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(w(a.stack,function(b,e){var f=c.ga(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.u,0)}),this.j.user&&(a.user=this.j.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),a=this.pa(a),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||v(a[b]))&&delete a[b]}),s(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!v(a)&&(!s(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.ma()?void this.z("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function F(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&l(b))for(c=b.split(/\s+/),f=0;fc?Q(a,b-1):d}function R(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?X:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function S(a,b){function c(a){return m(a)?a.map(function(a){return c(a)}):k(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!m(b)||m(b)&&0===b.length)return a;var d,e=A(b),f="********";try{d=JSON.parse(T(a))}catch(g){return a}return c(d)}var T=a(11),U="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},V=3,W=51200,X=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isDOMError:g,isDOMException:h,isUndefined:i,isFunction:j,isPlainObject:k,isString:l,isArray:m,isEmptyObject:n,supportsErrorEvent:o,supportsDOMError:p,supportsDOMException:q,supportsFetch:r,supportsReferrerPolicy:s,supportsPromiseRejectionEvent:t,wrappedCallback:u,each:v,objectMerge:w,truncate:y,objectFrozen:x,hasKey:z,joinRegExp:A,urlencode:B,uuid4:D,htmlTreeAsString:E,htmlElementAsString:F,isSameException:I,isSameStacktrace:J,parseUrl:C,fill:K,safeJoin:L,serializeException:Q,serializeKeysForMessage:R,sanitize:S}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{11:11}],10:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}function e(){return"undefined"==typeof document||null==document.location?"":document.location.origin}var f=a(9),g={collectWindowErrors:!0,debug:!1},h="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},i=[].slice,j="?",k=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;g.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function e(a,b){var c=null;if(!b||g.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(i.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,h,i){var l=null,m=f.isErrorEvent(i)?i.error:i,n=f.isErrorEvent(a)?a.message:a;if(v)g.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&f.isError(m))l=g.computeStackTrace(m),e(l,!0);else{var p,r={url:b,line:c,column:h},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(k);p&&(s=p[1],n=p[2])}r.func=j,l={name:s,message:n,url:d(),stack:[r]},e(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=h.onerror,h.onerror=l,r=!0)}function n(){r&&(h.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,e.apply(null,[a,!1].concat(b))}function p(a,b){var c=i.call(arguments,1);if(v){if(u===a)return;o()}var d=g.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),g.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,f,g=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,h=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,i=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,k=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,l=/\((\S*)(?::(\d+))(?::(\d+))\)/,m=a.stack.split("\n"),n=[],o=(/^(.*) is undefined$/.exec(a.message),0),p=m.length;o eval")>-1;r&&(b=k.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==o||c[5]||"undefined"==typeof a.columnNumber||(n[0].column=a.columnNumber+1),f={url:c[3],func:c[1]||j,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}if(!f.func&&f.line&&(f.func=j),f.url&&"blob:"===f.url.substr(0,5)){var s=new XMLHttpRequest;if(s.open("GET",f.url,!1),s.send(null),200===s.status){var t=s.responseText||"";t=t.slice(-300);var u=t.match(/\/\/# sourceMappingURL=(.*)$/); -if(u){var v=u[1];"~"===v.charAt(0)&&(v=e()+v.slice(1)),f.url=v.slice(0,-4)}}}n.push(f)}return n.length?{name:a.name,message:a.message,url:d(),stack:n}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=j),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,e){for(var h,i,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==f&&o!==g.report){if(i={url:null,func:j,line:null,column:null},o.name?i.func=o.name:(h=k.exec(o.toString()))&&(i.func=h[1]),"undefined"==typeof i.func)try{i.func=h.input.substring(0,h.input.indexOf("{"))}catch(p){}m[""+o]?n=!0:m[""+o]=!0,l.push(i)}e&&l.splice(0,e);var q={name:a.name,message:a.message,url:d(),stack:l};return b(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),q}function f(b,e){var f=null;e=null==e?0:+e;try{if(f=a(b))return f}catch(h){if(g.debug)throw h}try{if(f=c(b,e+1))return f}catch(h){if(g.debug)throw h}return{name:b.name,message:b.message,url:d()}}return f.augmentStackTraceWithInitialElement=b,f.computeStackTraceFromStackProp=a,f}(),b.exports=g}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{9:9}],11:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}],12:[function(a,b,c){function d(a,b){var c=(65535&a)+(65535&b),d=(a>>16)+(b>>16)+(c>>16);return d<<16|65535&c}function e(a,b){return a<>>32-b}function f(a,b,c,f,g,h){return d(e(d(d(b,a),d(f,h)),g),c)}function g(a,b,c,d,e,g,h){return f(b&c|~b&d,a,b,e,g,h)}function h(a,b,c,d,e,g,h){return f(b&d|c&~d,a,b,e,g,h)}function i(a,b,c,d,e,g,h){return f(b^c^d,a,b,e,g,h)}function j(a,b,c,d,e,g,h){return f(c^(b|~d),a,b,e,g,h)}function k(a,b){a[b>>5]|=128<>>9<<4)+14]=b;var c,e,f,k,l,m=1732584193,n=-271733879,o=-1732584194,p=271733878;for(c=0;c>5]>>>b%32&255);return c}function m(a){var b,c=[];for(c[(a.length>>2)-1]=void 0,b=0;b>5]|=(255&a.charCodeAt(b/8))<16&&(e=k(e,8*a.length)),c=0;c<16;c+=1)f[c]=909522486^e[c],g[c]=1549556828^e[c];return d=k(f.concat(m(b)),512+8*b.length),l(k(g.concat(d),640))}function p(a){var b,c,d="0123456789abcdef",e="";for(c=0;c>>4&15)+d.charAt(15&b);return e}function q(a){return unescape(encodeURIComponent(a))}function r(a){return n(q(a))}function s(a){return p(r(a))}function t(a,b){return o(q(a),q(b))}function u(a,b){return p(t(a,b))}function v(a,b,c){return b?c?t(b,a):u(b,a):c?r(a):s(a)}b.exports=v},{}]},{},[8,1,2,3,4])(8)}); +/*! Raven.js 3.25.1 (b6f3c7a) | github.com/getsentry/raven-js */ +!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.Raven=a()}}(function(){var a;return function b(a,c,d){function e(g,h){if(!c[g]){if(!a[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};a[g][0].call(k.exports,function(b){var c=a[g][1][b];return e(c?c:b)},k,k.exports,b,a,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;g":"anonymous component")+(a._isVue&&a.$options.__file?" at "+a.$options.__file:"")}function e(a,b){if(b=b||window.Vue,b&&b.config){var c=b.config.errorHandler;b.config.errorHandler=function(b,e,f){var g={};"[object Object]"===Object.prototype.toString.call(e)&&(g.componentName=d(e),g.propsData=e.$options.propsData),"undefined"!=typeof f&&(g.lifecycleHook=f),a.captureException(b,{extra:g}),"function"==typeof c&&c.call(this,b,e,f)}}}b.exports=e,a(8).addPlugin(b.exports)},{8:8}],5:[function(a,b,c){function d(a){this.name="RavenConfigError",this.message=a}d.prototype=new Error,d.prototype.constructor=d,b.exports=d},{}],6:[function(a,b,c){var d=a(9),e=function(a,b,c){var e=a[b],f=a;if(b in a){var g="warn"===b?"warning":b;a[b]=function(){var a=[].slice.call(arguments),h=d.safeJoin(a," "),i={level:g,logger:"console",extra:{arguments:a}};"assert"===b?a[0]===!1&&(h="Assertion failed: "+(d.safeJoin(a.slice(1)," ")||"console.assert"),i.extra.arguments=a.slice(1),c&&c(h,i)):c&&c(h,i),e&&Function.prototype.apply.call(e,f,a)}}};b.exports={wrapMethod:e}},{9:9}],7:[function(a,b,c){(function(c){function d(){return+new Date}function e(a,b){return s(b)?function(c){return b(c,a)}:b}function f(){this.a=!("object"!=typeof JSON||!JSON.stringify),this.b=!r(S),this.c=!r(T),this.d=null,this.e=null,this.f=null,this.g=null,this.h=null,this.i=null,this.j={},this.k={release:R.SENTRY_RELEASE&&R.SENTRY_RELEASE.id,logger:"javascript",ignoreErrors:[],ignoreUrls:[],whitelistUrls:[],includePaths:[],headers:null,collectWindowErrors:!0,captureUnhandledRejections:!0,maxMessageLength:0,maxUrlLength:250,stackTraceLimit:50,autoBreadcrumbs:!0,instrument:!0,sampleRate:1,sanitizeKeys:[]},this.l={method:"POST",keepalive:!0,referrerPolicy:K()?"origin":""},this.m=0,this.n=!1,this.o=Error.stackTraceLimit,this.p=R.console||{},this.q={},this.r=[],this.s=d(),this.t=[],this.u=[],this.v=null,this.w=R.location,this.x=this.w&&this.w.href,this.y();for(var a in this.p)this.q[a]=this.p[a]}var g=a(10),h=a(11),i=a(12),j=a(5),k=a(9),l=k.isErrorEvent,m=k.isDOMError,n=k.isDOMException,o=k.isError,p=k.isObject,q=k.isPlainObject,r=k.isUndefined,s=k.isFunction,t=k.isString,u=k.isArray,v=k.isEmptyObject,w=k.each,x=k.objectMerge,y=k.truncate,z=k.objectFrozen,A=k.hasKey,B=k.joinRegExp,C=k.urlencode,D=k.uuid4,E=k.htmlTreeAsString,F=k.isSameException,G=k.isSameStacktrace,H=k.parseUrl,I=k.fill,J=k.supportsFetch,K=k.supportsReferrerPolicy,L=k.serializeKeysForMessage,M=k.serializeException,N=k.sanitize,O=a(6).wrapMethod,P="source protocol user pass host port path".split(" "),Q=/^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/,R="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},S=R.document,T=R.navigator;f.prototype={VERSION:"3.25.1",debug:!1,TraceKit:g,config:function(a,b){var c=this;if(c.g)return this.z("error","Error: Raven has already been configured"),c;if(!a)return c;var d=c.k;b&&w(b,function(a,b){"tags"===a||"extra"===a||"user"===a?c.j[a]=b:d[a]=b}),c.setDSN(a),d.ignoreErrors.push(/^Script error\.?$/),d.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/),d.ignoreErrors=B(d.ignoreErrors),d.ignoreUrls=!!d.ignoreUrls.length&&B(d.ignoreUrls),d.whitelistUrls=!!d.whitelistUrls.length&&B(d.whitelistUrls),d.includePaths=B(d.includePaths),d.maxBreadcrumbs=Math.max(0,Math.min(d.maxBreadcrumbs||100,100));var e={xhr:!0,console:!0,dom:!0,location:!0,sentry:!0},f=d.autoBreadcrumbs;"[object Object]"==={}.toString.call(f)?f=x(e,f):f!==!1&&(f=e),d.autoBreadcrumbs=f;var h={tryCatch:!0},i=d.instrument;return"[object Object]"==={}.toString.call(i)?i=x(h,i):i!==!1&&(i=h),d.instrument=i,g.collectWindowErrors=!!d.collectWindowErrors,c},install:function(){var a=this;return a.isSetup()&&!a.n&&(g.report.subscribe(function(){a.A.apply(a,arguments)}),a.k.captureUnhandledRejections&&a.B(),a.C(),a.k.instrument&&a.k.instrument.tryCatch&&a.D(),a.k.autoBreadcrumbs&&a.E(),a.F(),a.n=!0),Error.stackTraceLimit=a.k.stackTraceLimit,this},setDSN:function(a){var b=this,c=b.G(a),d=c.path.lastIndexOf("/"),e=c.path.substr(1,d);b.H=a,b.h=c.user,b.I=c.pass&&c.pass.substr(1),b.i=c.path.substr(d+1),b.g=b.J(c),b.K=b.g+"/"+e+"api/"+b.i+"/store/",this.y()},context:function(a,b,c){return s(a)&&(c=b||[],b=a,a=void 0),this.wrap(a,b).apply(this,c)},wrap:function(a,b,c){function d(){var d=[],f=arguments.length,g=!a||a&&a.deep!==!1;for(c&&s(c)&&c.apply(this,arguments);f--;)d[f]=g?e.wrap(a,arguments[f]):arguments[f];try{return b.apply(this,d)}catch(h){throw e.L(),e.captureException(h,a),h}}var e=this;if(r(b)&&!s(a))return a;if(s(a)&&(b=a,a=void 0),!s(b))return b;try{if(b.M)return b;if(b.N)return b.N}catch(f){return b}for(var g in b)A(b,g)&&(d[g]=b[g]);return d.prototype=b.prototype,b.N=d,d.M=!0,d.O=b,d},uninstall:function(){return g.report.uninstall(),this.P(),this.Q(),this.R(),this.S(),Error.stackTraceLimit=this.o,this.n=!1,this},T:function(a){this.z("debug","Raven caught unhandled promise rejection:",a),this.captureException(a.reason,{extra:{unhandledPromiseRejection:!0}})},B:function(){return this.T=this.T.bind(this),R.addEventListener&&R.addEventListener("unhandledrejection",this.T),this},P:function(){return R.removeEventListener&&R.removeEventListener("unhandledrejection",this.T),this},captureException:function(a,b){if(b=x({trimHeadFrames:0},b?b:{}),l(a)&&a.error)a=a.error;else{if(m(a)||n(a)){var c=a.name||(m(a)?"DOMError":"DOMException"),d=a.message?c+": "+a.message:c;return this.captureMessage(d,x(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}))}if(o(a))a=a;else{if(!q(a))return this.captureMessage(a,x(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}));b=this.U(b,a),a=new Error(b.message)}}this.d=a;try{var e=g.computeStackTrace(a);this.V(e,b)}catch(f){if(a!==f)throw f}return this},U:function(a,b){var c=Object.keys(b).sort(),d=x(a,{message:"Non-Error exception captured with keys: "+L(c),fingerprint:[i(c)],extra:a.extra||{}});return d.extra.W=M(b),d},captureMessage:function(a,b){if(!this.k.ignoreErrors.test||!this.k.ignoreErrors.test(a)){b=b||{},a+="";var c,d=x({message:a},b);try{throw new Error(a)}catch(e){c=e}c.name=null;var f=g.computeStackTrace(c),h=u(f.stack)&&f.stack[1];h&&"Raven.captureException"===h.func&&(h=f.stack[2]);var i=h&&h.url||"";if((!this.k.ignoreUrls.test||!this.k.ignoreUrls.test(i))&&(!this.k.whitelistUrls.test||this.k.whitelistUrls.test(i))){if(this.k.stacktrace||b&&b.stacktrace){d.fingerprint=null==d.fingerprint?a:d.fingerprint,b=x({trimHeadFrames:0},b),b.trimHeadFrames+=1;var j=this.X(f,b);d.stacktrace={frames:j.reverse()}}return d.fingerprint&&(d.fingerprint=u(d.fingerprint)?d.fingerprint:[d.fingerprint]),this.Y(d),this}}},captureBreadcrumb:function(a){var b=x({timestamp:d()/1e3},a);if(s(this.k.breadcrumbCallback)){var c=this.k.breadcrumbCallback(b);if(p(c)&&!v(c))b=c;else if(c===!1)return this}return this.u.push(b),this.u.length>this.k.maxBreadcrumbs&&this.u.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.r.push([a,b]),this.n&&this.F(),this},setUserContext:function(a){return this.j.user=a,this},setExtraContext:function(a){return this.Z("extra",a),this},setTagsContext:function(a){return this.Z("tags",a),this},clearContext:function(){return this.j={},this},getContext:function(){return JSON.parse(h(this.j))},setEnvironment:function(a){return this.k.environment=a,this},setRelease:function(a){return this.k.release=a,this},setDataCallback:function(a){var b=this.k.dataCallback;return this.k.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.k.breadcrumbCallback;return this.k.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.k.shouldSendCallback;return this.k.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.k.transport=a,this},lastException:function(){return this.d},lastEventId:function(){return this.f},isSetup:function(){return!!this.a&&(!!this.g||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.z("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=R.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(S){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.H;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.j.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.J(this.G(c)),h=S.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(S.head||S.body).appendChild(h)}},L:function(){var a=this;this.m+=1,setTimeout(function(){a.m-=1})},$:function(a,b){var c,d;if(this.b){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),S.createEvent?(c=S.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=S.createEventObject(),c.eventType=a);for(d in b)A(b,d)&&(c[d]=b[d]);if(S.createEvent)S.dispatchEvent(c);else try{S.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},_:function(a){var b=this;return function(c){if(b.aa=null,b.v!==c){b.v=c;var d;try{d=E(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ba:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.aa;g||a._("input")(c),clearTimeout(g),a.aa=setTimeout(function(){a.aa=null},b)}}},ca:function(a,b){var c=H(this.w.href),d=H(b),e=H(a);this.x=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},C:function(){var a=this;a.da=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.M?a.da.apply(this.O,arguments):a.da.apply(this,arguments)}},Q:function(){this.da&&(Function.prototype.toString=this.da)},D:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.ca(b.x,c+""),a.apply(this,arguments)}};I(R.history,"pushState",j,d),I(R.history,"replaceState",j,d)}if(c.console&&"console"in R&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};w(["debug","info","warn","error","log"],function(a,b){O(console,b,k)})}},R:function(){for(var a;this.t.length;){a=this.t.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},S:function(){for(var a in this.q)this.p[a]=this.q[a]},F:function(){var a=this;w(this.r,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},G:function(a){var b=Q.exec(a),c={},d=7;try{for(;d--;)c[P[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.k.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},J:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},A:function(){this.m||this.V.apply(this,arguments)},V:function(a,b){var c=this.X(a,b);this.$("handle",{stackInfo:a,options:b}),this.fa(a.name,a.message,a.url,a.lineno,c,b)},X:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(w(a.stack,function(b,e){var f=c.ga(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.u,0)}),this.j.user&&(a.user=this.j.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),a=this.pa(a),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||v(a[b]))&&delete a[b]}),s(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!v(a)&&(!s(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.ma()?void this.z("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function F(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&l(b))for(c=b.split(/\s+/),f=0;fc?Q(a,b-1):d}function R(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?X:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function S(a,b){function c(a){return m(a)?a.map(function(a){return c(a)}):k(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!m(b)||m(b)&&0===b.length)return a;var d,e=A(b),f="********";try{d=JSON.parse(T(a))}catch(g){return a}return c(d)}var T=a(11),U="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},V=3,W=51200,X=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isDOMError:g,isDOMException:h,isUndefined:i,isFunction:j,isPlainObject:k,isString:l,isArray:m,isEmptyObject:n,supportsErrorEvent:o,supportsDOMError:p,supportsDOMException:q,supportsFetch:r,supportsReferrerPolicy:s,supportsPromiseRejectionEvent:t,wrappedCallback:u,each:v,objectMerge:w,truncate:y,objectFrozen:x,hasKey:z,joinRegExp:A,urlencode:B,uuid4:D,htmlTreeAsString:E,htmlElementAsString:F,isSameException:I,isSameStacktrace:J,parseUrl:C,fill:K,safeJoin:L,serializeException:Q,serializeKeysForMessage:R,sanitize:S}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{11:11}],10:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}function e(){return"undefined"==typeof document||null==document.location?"":(document.location.origin||(document.location.origin=document.location.protocol+"//"+document.location.hostname+(document.location.port?":"+document.location.port:"")),document.location.origin)}var f=a(9),g={collectWindowErrors:!0,debug:!1},h="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},i=[].slice,j="?",k=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;g.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function e(a,b){var c=null;if(!b||g.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(i.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,h,i){var l=null,m=f.isErrorEvent(i)?i.error:i,n=f.isErrorEvent(a)?a.message:a;if(v)g.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&f.isError(m))l=g.computeStackTrace(m),e(l,!0);else{var p,r={url:b,line:c,column:h},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(k);p&&(s=p[1],n=p[2])}r.func=j,l={name:s,message:n,url:d(),stack:[r]},e(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=h.onerror,h.onerror=l,r=!0)}function n(){r&&(h.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,e.apply(null,[a,!1].concat(b))}function p(a,b){var c=i.call(arguments,1);if(v){if(u===a)return;o()}var d=g.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),g.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,f,g=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,h=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,i=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,k=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,l=/\((\S*)(?::(\d+))(?::(\d+))\)/,m=a.stack.split("\n"),n=[],o=(/^(.*) is undefined$/.exec(a.message),0),p=m.length;o eval")>-1;r&&(b=k.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==o||c[5]||"undefined"==typeof a.columnNumber||(n[0].column=a.columnNumber+1),f={url:c[3],func:c[1]||j,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}if(!f.func&&f.line&&(f.func=j),f.url&&"blob:"===f.url.substr(0,5)){ +var s=new XMLHttpRequest;if(s.open("GET",f.url,!1),s.send(null),200===s.status){var t=s.responseText||"";t=t.slice(-300);var u=t.match(/\/\/# sourceMappingURL=(.*)$/);if(u){var v=u[1];"~"===v.charAt(0)&&(v=e()+v.slice(1)),f.url=v.slice(0,-4)}}}n.push(f)}return n.length?{name:a.name,message:a.message,url:d(),stack:n}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=j),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,e){for(var h,i,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==f&&o!==g.report){if(i={url:null,func:j,line:null,column:null},o.name?i.func=o.name:(h=k.exec(o.toString()))&&(i.func=h[1]),"undefined"==typeof i.func)try{i.func=h.input.substring(0,h.input.indexOf("{"))}catch(p){}m[""+o]?n=!0:m[""+o]=!0,l.push(i)}e&&l.splice(0,e);var q={name:a.name,message:a.message,url:d(),stack:l};return b(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),q}function f(b,e){var f=null;e=null==e?0:+e;try{if(f=a(b))return f}catch(h){if(g.debug)throw h}try{if(f=c(b,e+1))return f}catch(h){if(g.debug)throw h}return{name:b.name,message:b.message,url:d()}}return f.augmentStackTraceWithInitialElement=b,f.computeStackTraceFromStackProp=a,f}(),b.exports=g}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{9:9}],11:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}],12:[function(a,b,c){function d(a,b){var c=(65535&a)+(65535&b),d=(a>>16)+(b>>16)+(c>>16);return d<<16|65535&c}function e(a,b){return a<>>32-b}function f(a,b,c,f,g,h){return d(e(d(d(b,a),d(f,h)),g),c)}function g(a,b,c,d,e,g,h){return f(b&c|~b&d,a,b,e,g,h)}function h(a,b,c,d,e,g,h){return f(b&d|c&~d,a,b,e,g,h)}function i(a,b,c,d,e,g,h){return f(b^c^d,a,b,e,g,h)}function j(a,b,c,d,e,g,h){return f(c^(b|~d),a,b,e,g,h)}function k(a,b){a[b>>5]|=128<>>9<<4)+14]=b;var c,e,f,k,l,m=1732584193,n=-271733879,o=-1732584194,p=271733878;for(c=0;c>5]>>>b%32&255);return c}function m(a){var b,c=[];for(c[(a.length>>2)-1]=void 0,b=0;b>5]|=(255&a.charCodeAt(b/8))<16&&(e=k(e,8*a.length)),c=0;c<16;c+=1)f[c]=909522486^e[c],g[c]=1549556828^e[c];return d=k(f.concat(m(b)),512+8*b.length),l(k(g.concat(d),640))}function p(a){var b,c,d="0123456789abcdef",e="";for(c=0;c>>4&15)+d.charAt(15&b);return e}function q(a){return unescape(encodeURIComponent(a))}function r(a){return n(q(a))}function s(a){return p(r(a))}function t(a,b){return o(q(a),q(b))}function u(a,b){return p(t(a,b))}function v(a,b,c){return b?c?t(b,a):u(b,a):c?r(a):s(a)}b.exports=v},{}]},{},[8,1,2,3,4])(8)}); //# sourceMappingURL=raven.min.js.map \ No newline at end of file diff --git a/dist/console,ember,require,vue/raven.min.js.map b/dist/console,ember,require,vue/raven.min.js.map index d9a3b363103a..cf268821b343 100644 --- a/dist/console,ember,require,vue/raven.min.js.map +++ b/dist/console,ember,require,vue/raven.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","consolePlugin","console","pluginOptions","logLevels","levels","push","callback","msg","data","captureMessage","level","pop","wrapConsoleMethod","wrapMethod","addPlugin","6","8","2","emberPlugin","Ember","_oldOnError","onerror","error","captureException","RSVP","on","reason","extra","context","3","requirePlugin","wrap","deep","4","formatComponentName","vm","$root","name","_isVue","$options","_componentTag","__file","vuePlugin","Vue","config","errorHandler","info","metaData","Object","prototype","toString","componentName","propsData","lifecycleHook","5","RavenConfigError","message","constructor","utils","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","safeJoin","logger","Function","apply","9","7","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","sanitizeKeys","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isErrorEvent","isDOMError","isDOMException","isError","isObject","isPlainObject","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","sanitize","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","dsn","options","_logDebug","globalOptions","key","value","setDSN","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","substr","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","func","undefined","_before","wrapped","_ignoreNextOnError","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","T","event","unhandledPromiseRejection","B","_promiseRejectionHandler","bind","addEventListener","P","removeEventListener","ex","trimHeadFrames","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","U","currentOptions","exKeys","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","setDataCallback","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","L","setTimeout","$","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","_","evtName","_keypressTimeout","target","category","ba","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","ca","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","C","_originalFunctionToString","Q","D","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","type","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","E","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","R","builtin","S","F","installer","concat","G","str","m","exec","allowSecretKey","J","port","A","V","stackInfo","_triggerEvent","_processException","lineno","X","frame","_normalizeFrame","in_app","ga","stackInfoUrl","normalized","filename","line","colno","column","function","fa","prefixedMessage","exception","values","culprit","ha","request","Referer","breadcrumbs","_trimBreadcrumbs","ia","urlProp","urlProps","ja","httpData","userAgent","User-Agent","referrer","y","_backoffDuration","_backoffStart","ma","na","current","last","oa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Y","baseData","project","platform","_getHttpData","serverName","server_name","_sanitizeData","forEach","random","_sendProcessedPayload","pa","ra","qa","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","sa","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","open","setRequestHeader","send","ta","hash","evaluated","z","Z","setUser","setReleaseContext","10","11","12","RavenConstructor","_Raven","noConflict","Client","what","supportsErrorEvent","ErrorEvent","supportsDOMError","DOMError","supportsDOMException","DOMException","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","wrappedCallback","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","sanitizeMask","safeInput","o_O","getLocationHref","getLocationOrigin","origin","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","responseText","sourceMaps","sourceMapAddress","charAt","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","string","raw"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file +{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","consolePlugin","console","pluginOptions","logLevels","levels","push","callback","msg","data","captureMessage","level","pop","wrapConsoleMethod","wrapMethod","addPlugin","6","8","2","emberPlugin","Ember","_oldOnError","onerror","error","captureException","RSVP","on","reason","extra","context","3","requirePlugin","wrap","deep","4","formatComponentName","vm","$root","name","_isVue","$options","_componentTag","__file","vuePlugin","Vue","config","errorHandler","info","metaData","Object","prototype","toString","componentName","propsData","lifecycleHook","5","RavenConfigError","message","constructor","utils","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","safeJoin","logger","Function","apply","9","7","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","sanitizeKeys","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isErrorEvent","isDOMError","isDOMException","isError","isObject","isPlainObject","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","sanitize","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","dsn","options","_logDebug","globalOptions","key","value","setDSN","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","substr","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","func","undefined","_before","wrapped","_ignoreNextOnError","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","T","event","unhandledPromiseRejection","B","_promiseRejectionHandler","bind","addEventListener","P","removeEventListener","ex","trimHeadFrames","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","U","currentOptions","exKeys","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","setDataCallback","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","L","setTimeout","$","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","_","evtName","_keypressTimeout","target","category","ba","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","ca","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","C","_originalFunctionToString","Q","D","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","type","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","E","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","R","builtin","S","F","installer","concat","G","str","m","exec","allowSecretKey","J","port","A","V","stackInfo","_triggerEvent","_processException","lineno","X","frame","_normalizeFrame","in_app","ga","stackInfoUrl","normalized","filename","line","colno","column","function","fa","prefixedMessage","exception","values","culprit","ha","request","Referer","breadcrumbs","_trimBreadcrumbs","ia","urlProp","urlProps","ja","httpData","userAgent","User-Agent","referrer","y","_backoffDuration","_backoffStart","ma","na","current","last","oa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Y","baseData","project","platform","_getHttpData","serverName","server_name","_sanitizeData","forEach","random","_sendProcessedPayload","pa","ra","qa","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","sa","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","open","setRequestHeader","send","ta","hash","evaluated","z","Z","setUser","setReleaseContext","10","11","12","RavenConstructor","_Raven","noConflict","Client","what","supportsErrorEvent","ErrorEvent","supportsDOMError","DOMError","supportsDOMException","DOMException","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","wrappedCallback","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","sanitizeMask","safeInput","o_O","getLocationHref","getLocationOrigin","origin","hostname","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","responseText","sourceMaps","sourceMapAddress","charAt","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","string","raw"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file diff --git a/dist/console,ember,require/raven.js b/dist/console,ember,require/raven.js index c3aa745d09ac..43bb81981a6e 100644 --- a/dist/console,ember,require/raven.js +++ b/dist/console,ember,require/raven.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.25.0 (80dffad) | github.com/getsentry/raven-js */ +/*! Raven.js 3.25.1 (b6f3c7a) | github.com/getsentry/raven-js */ /* * Includes TraceKit @@ -292,7 +292,7 @@ Raven.prototype = { // webpack (using a build step causes webpack #1617). Grunt verifies that // this value matches package.json during build. // See: https://github.com/getsentry/raven-js/issues/465 - VERSION: '3.25.0', + VERSION: '3.25.1', debug: false, @@ -1601,8 +1601,8 @@ Raven.prototype = { var hasPushAndReplaceState = !isChromePackagedApp && _window.history && - history.pushState && - history.replaceState; + _window.history.pushState && + _window.history.replaceState; if (autoBreadcrumbs.location && hasPushAndReplaceState) { // TODO: remove onpopstate handler on uninstall() var oldOnPopState = _window.onpopstate; @@ -1631,8 +1631,8 @@ Raven.prototype = { }; }; - fill(history, 'pushState', historyReplacementFunction, wrappedBuiltIns); - fill(history, 'replaceState', historyReplacementFunction, wrappedBuiltIns); + fill(_window.history, 'pushState', historyReplacementFunction, wrappedBuiltIns); + fill(_window.history, 'replaceState', historyReplacementFunction, wrappedBuiltIns); } if (autoBreadcrumbs.console && 'console' in _window && console.log) { @@ -1922,7 +1922,7 @@ Raven.prototype = { if (this._hasNavigator && _navigator.userAgent) { httpData.headers = { - 'User-Agent': navigator.userAgent + 'User-Agent': _navigator.userAgent }; } @@ -3097,6 +3097,16 @@ function getLocationHref() { function getLocationOrigin() { if (typeof document === 'undefined' || document.location == null) return ''; + + // Oh dear IE10... + if (!document.location.origin) { + document.location.origin = + document.location.protocol + + '//' + + document.location.hostname + + (document.location.port ? ':' + document.location.port : ''); + } + return document.location.origin; } diff --git a/dist/console,ember,require/raven.min.js b/dist/console,ember,require/raven.min.js index 2875ae0eaac0..7899758f00a6 100644 --- a/dist/console,ember,require/raven.min.js +++ b/dist/console,ember,require/raven.min.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.25.0 (80dffad) | github.com/getsentry/raven-js */ -!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.Raven=a()}}(function(){var a;return function b(a,c,d){function e(g,h){if(!c[g]){if(!a[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};a[g][0].call(k.exports,function(b){var c=a[g][1][b];return e(c?c:b)},k,k.exports,b,a,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;gthis.k.maxBreadcrumbs&&this.u.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.r.push([a,b]),this.n&&this.F(),this},setUserContext:function(a){return this.j.user=a,this},setExtraContext:function(a){return this.Z("extra",a),this},setTagsContext:function(a){return this.Z("tags",a),this},clearContext:function(){return this.j={},this},getContext:function(){return JSON.parse(h(this.j))},setEnvironment:function(a){return this.k.environment=a,this},setRelease:function(a){return this.k.release=a,this},setDataCallback:function(a){var b=this.k.dataCallback;return this.k.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.k.breadcrumbCallback;return this.k.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.k.shouldSendCallback;return this.k.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.k.transport=a,this},lastException:function(){return this.d},lastEventId:function(){return this.f},isSetup:function(){return!!this.a&&(!!this.g||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.z("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=R.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(S){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.H;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.j.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.J(this.G(c)),h=S.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(S.head||S.body).appendChild(h)}},L:function(){var a=this;this.m+=1,setTimeout(function(){a.m-=1})},$:function(a,b){var c,d;if(this.b){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),S.createEvent?(c=S.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=S.createEventObject(),c.eventType=a);for(d in b)A(b,d)&&(c[d]=b[d]);if(S.createEvent)S.dispatchEvent(c);else try{S.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},_:function(a){var b=this;return function(c){if(b.aa=null,b.v!==c){b.v=c;var d;try{d=E(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ba:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.aa;g||a._("input")(c),clearTimeout(g),a.aa=setTimeout(function(){a.aa=null},b)}}},ca:function(a,b){var c=H(this.w.href),d=H(b),e=H(a);this.x=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},C:function(){var a=this;a.da=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.M?a.da.apply(this.O,arguments):a.da.apply(this,arguments)}},Q:function(){this.da&&(Function.prototype.toString=this.da)},D:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.ca(b.x,c+""),a.apply(this,arguments)}};I(history,"pushState",j,d),I(history,"replaceState",j,d)}if(c.console&&"console"in R&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};w(["debug","info","warn","error","log"],function(a,b){O(console,b,k)})}},R:function(){for(var a;this.t.length;){a=this.t.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},S:function(){for(var a in this.q)this.p[a]=this.q[a]},F:function(){var a=this;w(this.r,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},G:function(a){var b=Q.exec(a),c={},d=7;try{for(;d--;)c[P[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.k.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},J:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},A:function(){this.m||this.V.apply(this,arguments)},V:function(a,b){var c=this.X(a,b);this.$("handle",{stackInfo:a,options:b}),this.fa(a.name,a.message,a.url,a.lineno,c,b)},X:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(w(a.stack,function(b,e){var f=c.ga(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.u,0)}),this.j.user&&(a.user=this.j.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),a=this.pa(a),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||v(a[b]))&&delete a[b]}),s(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!v(a)&&(!s(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.ma()?void this.z("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function F(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&l(b))for(c=b.split(/\s+/),f=0;fc?Q(a,b-1):d}function R(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?X:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function S(a,b){function c(a){return m(a)?a.map(function(a){return c(a)}):k(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!m(b)||m(b)&&0===b.length)return a;var d,e=A(b),f="********";try{d=JSON.parse(T(a))}catch(g){return a}return c(d)}var T=a(10),U="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},V=3,W=51200,X=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isDOMError:g,isDOMException:h,isUndefined:i,isFunction:j,isPlainObject:k,isString:l,isArray:m,isEmptyObject:n,supportsErrorEvent:o,supportsDOMError:p,supportsDOMException:q,supportsFetch:r,supportsReferrerPolicy:s,supportsPromiseRejectionEvent:t,wrappedCallback:u,each:v,objectMerge:w,truncate:y,objectFrozen:x,hasKey:z,joinRegExp:A,urlencode:B,uuid4:D,htmlTreeAsString:E,htmlElementAsString:F,isSameException:I,isSameStacktrace:J,parseUrl:C,fill:K,safeJoin:L,serializeException:Q,serializeKeysForMessage:R,sanitize:S}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{10:10}],9:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}function e(){return"undefined"==typeof document||null==document.location?"":document.location.origin}var f=a(8),g={collectWindowErrors:!0,debug:!1},h="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},i=[].slice,j="?",k=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;g.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function e(a,b){var c=null;if(!b||g.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(i.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,h,i){var l=null,m=f.isErrorEvent(i)?i.error:i,n=f.isErrorEvent(a)?a.message:a;if(v)g.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&f.isError(m))l=g.computeStackTrace(m),e(l,!0);else{var p,r={url:b,line:c,column:h},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(k);p&&(s=p[1],n=p[2])}r.func=j,l={name:s,message:n,url:d(),stack:[r]},e(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=h.onerror,h.onerror=l,r=!0)}function n(){r&&(h.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,e.apply(null,[a,!1].concat(b))}function p(a,b){var c=i.call(arguments,1);if(v){if(u===a)return;o()}var d=g.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),g.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,f,g=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,h=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,i=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,k=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,l=/\((\S*)(?::(\d+))(?::(\d+))\)/,m=a.stack.split("\n"),n=[],o=(/^(.*) is undefined$/.exec(a.message),0),p=m.length;o eval")>-1;r&&(b=k.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==o||c[5]||"undefined"==typeof a.columnNumber||(n[0].column=a.columnNumber+1),f={url:c[3],func:c[1]||j,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}if(!f.func&&f.line&&(f.func=j),f.url&&"blob:"===f.url.substr(0,5)){var s=new XMLHttpRequest;if(s.open("GET",f.url,!1),s.send(null),200===s.status){var t=s.responseText||"";t=t.slice(-300);var u=t.match(/\/\/# sourceMappingURL=(.*)$/);if(u){var v=u[1];"~"===v.charAt(0)&&(v=e()+v.slice(1)),f.url=v.slice(0,-4)}}}n.push(f)}return n.length?{name:a.name,message:a.message,url:d(),stack:n}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=j),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,e){for(var h,i,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==f&&o!==g.report){ -if(i={url:null,func:j,line:null,column:null},o.name?i.func=o.name:(h=k.exec(o.toString()))&&(i.func=h[1]),"undefined"==typeof i.func)try{i.func=h.input.substring(0,h.input.indexOf("{"))}catch(p){}m[""+o]?n=!0:m[""+o]=!0,l.push(i)}e&&l.splice(0,e);var q={name:a.name,message:a.message,url:d(),stack:l};return b(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),q}function f(b,e){var f=null;e=null==e?0:+e;try{if(f=a(b))return f}catch(h){if(g.debug)throw h}try{if(f=c(b,e+1))return f}catch(h){if(g.debug)throw h}return{name:b.name,message:b.message,url:d()}}return f.augmentStackTraceWithInitialElement=b,f.computeStackTraceFromStackProp=a,f}(),b.exports=g}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{8:8}],10:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}],11:[function(a,b,c){function d(a,b){var c=(65535&a)+(65535&b),d=(a>>16)+(b>>16)+(c>>16);return d<<16|65535&c}function e(a,b){return a<>>32-b}function f(a,b,c,f,g,h){return d(e(d(d(b,a),d(f,h)),g),c)}function g(a,b,c,d,e,g,h){return f(b&c|~b&d,a,b,e,g,h)}function h(a,b,c,d,e,g,h){return f(b&d|c&~d,a,b,e,g,h)}function i(a,b,c,d,e,g,h){return f(b^c^d,a,b,e,g,h)}function j(a,b,c,d,e,g,h){return f(c^(b|~d),a,b,e,g,h)}function k(a,b){a[b>>5]|=128<>>9<<4)+14]=b;var c,e,f,k,l,m=1732584193,n=-271733879,o=-1732584194,p=271733878;for(c=0;c>5]>>>b%32&255);return c}function m(a){var b,c=[];for(c[(a.length>>2)-1]=void 0,b=0;b>5]|=(255&a.charCodeAt(b/8))<16&&(e=k(e,8*a.length)),c=0;c<16;c+=1)f[c]=909522486^e[c],g[c]=1549556828^e[c];return d=k(f.concat(m(b)),512+8*b.length),l(k(g.concat(d),640))}function p(a){var b,c,d="0123456789abcdef",e="";for(c=0;c>>4&15)+d.charAt(15&b);return e}function q(a){return unescape(encodeURIComponent(a))}function r(a){return n(q(a))}function s(a){return p(r(a))}function t(a,b){return o(q(a),q(b))}function u(a,b){return p(t(a,b))}function v(a,b,c){return b?c?t(b,a):u(b,a):c?r(a):s(a)}b.exports=v},{}]},{},[7,1,2,3])(7)}); +/*! Raven.js 3.25.1 (b6f3c7a) | github.com/getsentry/raven-js */ +!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.Raven=a()}}(function(){var a;return function b(a,c,d){function e(g,h){if(!c[g]){if(!a[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};a[g][0].call(k.exports,function(b){var c=a[g][1][b];return e(c?c:b)},k,k.exports,b,a,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;gthis.k.maxBreadcrumbs&&this.u.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.r.push([a,b]),this.n&&this.F(),this},setUserContext:function(a){return this.j.user=a,this},setExtraContext:function(a){return this.Z("extra",a),this},setTagsContext:function(a){return this.Z("tags",a),this},clearContext:function(){return this.j={},this},getContext:function(){return JSON.parse(h(this.j))},setEnvironment:function(a){return this.k.environment=a,this},setRelease:function(a){return this.k.release=a,this},setDataCallback:function(a){var b=this.k.dataCallback;return this.k.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.k.breadcrumbCallback;return this.k.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.k.shouldSendCallback;return this.k.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.k.transport=a,this},lastException:function(){return this.d},lastEventId:function(){return this.f},isSetup:function(){return!!this.a&&(!!this.g||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.z("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=R.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(S){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.H;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.j.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.J(this.G(c)),h=S.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(S.head||S.body).appendChild(h)}},L:function(){var a=this;this.m+=1,setTimeout(function(){a.m-=1})},$:function(a,b){var c,d;if(this.b){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),S.createEvent?(c=S.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=S.createEventObject(),c.eventType=a);for(d in b)A(b,d)&&(c[d]=b[d]);if(S.createEvent)S.dispatchEvent(c);else try{S.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},_:function(a){var b=this;return function(c){if(b.aa=null,b.v!==c){b.v=c;var d;try{d=E(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ba:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.aa;g||a._("input")(c),clearTimeout(g),a.aa=setTimeout(function(){a.aa=null},b)}}},ca:function(a,b){var c=H(this.w.href),d=H(b),e=H(a);this.x=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},C:function(){var a=this;a.da=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.M?a.da.apply(this.O,arguments):a.da.apply(this,arguments)}},Q:function(){this.da&&(Function.prototype.toString=this.da)},D:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.ca(b.x,c+""),a.apply(this,arguments)}};I(R.history,"pushState",j,d),I(R.history,"replaceState",j,d)}if(c.console&&"console"in R&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};w(["debug","info","warn","error","log"],function(a,b){O(console,b,k)})}},R:function(){for(var a;this.t.length;){a=this.t.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},S:function(){for(var a in this.q)this.p[a]=this.q[a]},F:function(){var a=this;w(this.r,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},G:function(a){var b=Q.exec(a),c={},d=7;try{for(;d--;)c[P[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.k.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},J:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},A:function(){this.m||this.V.apply(this,arguments)},V:function(a,b){var c=this.X(a,b);this.$("handle",{stackInfo:a,options:b}),this.fa(a.name,a.message,a.url,a.lineno,c,b)},X:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(w(a.stack,function(b,e){var f=c.ga(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.u,0)}),this.j.user&&(a.user=this.j.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),a=this.pa(a),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||v(a[b]))&&delete a[b]}),s(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!v(a)&&(!s(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.ma()?void this.z("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function F(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&l(b))for(c=b.split(/\s+/),f=0;fc?Q(a,b-1):d}function R(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?X:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function S(a,b){function c(a){return m(a)?a.map(function(a){return c(a)}):k(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!m(b)||m(b)&&0===b.length)return a;var d,e=A(b),f="********";try{d=JSON.parse(T(a))}catch(g){return a}return c(d)}var T=a(10),U="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},V=3,W=51200,X=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isDOMError:g,isDOMException:h,isUndefined:i,isFunction:j,isPlainObject:k,isString:l,isArray:m,isEmptyObject:n,supportsErrorEvent:o,supportsDOMError:p,supportsDOMException:q,supportsFetch:r,supportsReferrerPolicy:s,supportsPromiseRejectionEvent:t,wrappedCallback:u,each:v,objectMerge:w,truncate:y,objectFrozen:x,hasKey:z,joinRegExp:A,urlencode:B,uuid4:D,htmlTreeAsString:E,htmlElementAsString:F,isSameException:I,isSameStacktrace:J,parseUrl:C,fill:K,safeJoin:L,serializeException:Q,serializeKeysForMessage:R,sanitize:S}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{10:10}],9:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}function e(){return"undefined"==typeof document||null==document.location?"":(document.location.origin||(document.location.origin=document.location.protocol+"//"+document.location.hostname+(document.location.port?":"+document.location.port:"")),document.location.origin)}var f=a(8),g={collectWindowErrors:!0,debug:!1},h="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},i=[].slice,j="?",k=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;g.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function e(a,b){var c=null;if(!b||g.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(i.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,h,i){var l=null,m=f.isErrorEvent(i)?i.error:i,n=f.isErrorEvent(a)?a.message:a;if(v)g.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&f.isError(m))l=g.computeStackTrace(m),e(l,!0);else{var p,r={url:b,line:c,column:h},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(k);p&&(s=p[1],n=p[2])}r.func=j,l={name:s,message:n,url:d(),stack:[r]},e(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=h.onerror,h.onerror=l,r=!0)}function n(){r&&(h.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,e.apply(null,[a,!1].concat(b))}function p(a,b){var c=i.call(arguments,1);if(v){if(u===a)return;o()}var d=g.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),g.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,f,g=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,h=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,i=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,k=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,l=/\((\S*)(?::(\d+))(?::(\d+))\)/,m=a.stack.split("\n"),n=[],o=(/^(.*) is undefined$/.exec(a.message),0),p=m.length;o eval")>-1;r&&(b=k.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==o||c[5]||"undefined"==typeof a.columnNumber||(n[0].column=a.columnNumber+1),f={url:c[3],func:c[1]||j,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}if(!f.func&&f.line&&(f.func=j),f.url&&"blob:"===f.url.substr(0,5)){var s=new XMLHttpRequest;if(s.open("GET",f.url,!1),s.send(null),200===s.status){var t=s.responseText||"";t=t.slice(-300);var u=t.match(/\/\/# sourceMappingURL=(.*)$/);if(u){var v=u[1];"~"===v.charAt(0)&&(v=e()+v.slice(1)),f.url=v.slice(0,-4)}}}n.push(f)}return n.length?{name:a.name,message:a.message,url:d(),stack:n}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=j),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0, +!1}function c(a,e){for(var h,i,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==f&&o!==g.report){if(i={url:null,func:j,line:null,column:null},o.name?i.func=o.name:(h=k.exec(o.toString()))&&(i.func=h[1]),"undefined"==typeof i.func)try{i.func=h.input.substring(0,h.input.indexOf("{"))}catch(p){}m[""+o]?n=!0:m[""+o]=!0,l.push(i)}e&&l.splice(0,e);var q={name:a.name,message:a.message,url:d(),stack:l};return b(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),q}function f(b,e){var f=null;e=null==e?0:+e;try{if(f=a(b))return f}catch(h){if(g.debug)throw h}try{if(f=c(b,e+1))return f}catch(h){if(g.debug)throw h}return{name:b.name,message:b.message,url:d()}}return f.augmentStackTraceWithInitialElement=b,f.computeStackTraceFromStackProp=a,f}(),b.exports=g}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{8:8}],10:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}],11:[function(a,b,c){function d(a,b){var c=(65535&a)+(65535&b),d=(a>>16)+(b>>16)+(c>>16);return d<<16|65535&c}function e(a,b){return a<>>32-b}function f(a,b,c,f,g,h){return d(e(d(d(b,a),d(f,h)),g),c)}function g(a,b,c,d,e,g,h){return f(b&c|~b&d,a,b,e,g,h)}function h(a,b,c,d,e,g,h){return f(b&d|c&~d,a,b,e,g,h)}function i(a,b,c,d,e,g,h){return f(b^c^d,a,b,e,g,h)}function j(a,b,c,d,e,g,h){return f(c^(b|~d),a,b,e,g,h)}function k(a,b){a[b>>5]|=128<>>9<<4)+14]=b;var c,e,f,k,l,m=1732584193,n=-271733879,o=-1732584194,p=271733878;for(c=0;c>5]>>>b%32&255);return c}function m(a){var b,c=[];for(c[(a.length>>2)-1]=void 0,b=0;b>5]|=(255&a.charCodeAt(b/8))<16&&(e=k(e,8*a.length)),c=0;c<16;c+=1)f[c]=909522486^e[c],g[c]=1549556828^e[c];return d=k(f.concat(m(b)),512+8*b.length),l(k(g.concat(d),640))}function p(a){var b,c,d="0123456789abcdef",e="";for(c=0;c>>4&15)+d.charAt(15&b);return e}function q(a){return unescape(encodeURIComponent(a))}function r(a){return n(q(a))}function s(a){return p(r(a))}function t(a,b){return o(q(a),q(b))}function u(a,b){return p(t(a,b))}function v(a,b,c){return b?c?t(b,a):u(b,a):c?r(a):s(a)}b.exports=v},{}]},{},[7,1,2,3])(7)}); //# sourceMappingURL=raven.min.js.map \ No newline at end of file diff --git a/dist/console,ember,require/raven.min.js.map b/dist/console,ember,require/raven.min.js.map index 08aaa27a845a..df4ef6313a92 100644 --- a/dist/console,ember,require/raven.min.js.map +++ b/dist/console,ember,require/raven.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","consolePlugin","console","pluginOptions","logLevels","levels","push","callback","msg","data","captureMessage","level","pop","wrapConsoleMethod","wrapMethod","addPlugin","5","7","2","emberPlugin","Ember","_oldOnError","onerror","error","captureException","RSVP","on","reason","extra","context","3","requirePlugin","wrap","deep","4","RavenConfigError","message","name","prototype","constructor","utils","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","safeJoin","logger","Function","apply","8","6","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","sanitizeKeys","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isErrorEvent","isDOMError","isDOMException","isError","isObject","isPlainObject","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","sanitize","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","config","dsn","options","_logDebug","globalOptions","key","value","setDSN","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","toString","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","substr","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","func","undefined","_before","wrapped","_ignoreNextOnError","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","T","event","unhandledPromiseRejection","B","_promiseRejectionHandler","bind","addEventListener","P","removeEventListener","ex","trimHeadFrames","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","U","currentOptions","exKeys","Object","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","setDataCallback","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","L","setTimeout","$","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","_","evtName","_keypressTimeout","target","category","ba","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","ca","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","C","_originalFunctionToString","Q","D","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","type","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","E","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","R","builtin","S","F","installer","concat","G","str","m","exec","allowSecretKey","J","port","A","V","stackInfo","_triggerEvent","_processException","lineno","X","frame","_normalizeFrame","in_app","ga","stackInfoUrl","normalized","filename","line","colno","column","function","fa","prefixedMessage","exception","values","culprit","ha","request","Referer","breadcrumbs","_trimBreadcrumbs","ia","urlProp","urlProps","ja","httpData","userAgent","User-Agent","referrer","y","_backoffDuration","_backoffStart","ma","na","current","last","oa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Y","baseData","project","platform","_getHttpData","serverName","server_name","_sanitizeData","forEach","random","_sendProcessedPayload","pa","ra","qa","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","sa","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","open","setRequestHeader","send","ta","hash","evaluated","z","Z","setUser","setReleaseContext","10","11","9","RavenConstructor","_Raven","noConflict","Client","what","supportsErrorEvent","ErrorEvent","supportsDOMError","DOMError","supportsDOMException","DOMException","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","wrappedCallback","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","sanitizeMask","safeInput","o_O","getLocationHref","getLocationOrigin","origin","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","responseText","sourceMaps","sourceMapAddress","charAt","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","string","raw"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file +{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","consolePlugin","console","pluginOptions","logLevels","levels","push","callback","msg","data","captureMessage","level","pop","wrapConsoleMethod","wrapMethod","addPlugin","5","7","2","emberPlugin","Ember","_oldOnError","onerror","error","captureException","RSVP","on","reason","extra","context","3","requirePlugin","wrap","deep","4","RavenConfigError","message","name","prototype","constructor","utils","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","safeJoin","logger","Function","apply","8","6","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","sanitizeKeys","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isErrorEvent","isDOMError","isDOMException","isError","isObject","isPlainObject","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","sanitize","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","config","dsn","options","_logDebug","globalOptions","key","value","setDSN","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","toString","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","substr","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","func","undefined","_before","wrapped","_ignoreNextOnError","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","T","event","unhandledPromiseRejection","B","_promiseRejectionHandler","bind","addEventListener","P","removeEventListener","ex","trimHeadFrames","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","U","currentOptions","exKeys","Object","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","setDataCallback","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","L","setTimeout","$","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","_","evtName","_keypressTimeout","target","category","ba","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","ca","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","C","_originalFunctionToString","Q","D","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","type","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","E","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","R","builtin","S","F","installer","concat","G","str","m","exec","allowSecretKey","J","port","A","V","stackInfo","_triggerEvent","_processException","lineno","X","frame","_normalizeFrame","in_app","ga","stackInfoUrl","normalized","filename","line","colno","column","function","fa","prefixedMessage","exception","values","culprit","ha","request","Referer","breadcrumbs","_trimBreadcrumbs","ia","urlProp","urlProps","ja","httpData","userAgent","User-Agent","referrer","y","_backoffDuration","_backoffStart","ma","na","current","last","oa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Y","baseData","project","platform","_getHttpData","serverName","server_name","_sanitizeData","forEach","random","_sendProcessedPayload","pa","ra","qa","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","sa","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","open","setRequestHeader","send","ta","hash","evaluated","z","Z","setUser","setReleaseContext","10","11","9","RavenConstructor","_Raven","noConflict","Client","what","supportsErrorEvent","ErrorEvent","supportsDOMError","DOMError","supportsDOMException","DOMException","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","wrappedCallback","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","sanitizeMask","safeInput","o_O","getLocationHref","getLocationOrigin","origin","hostname","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","responseText","sourceMaps","sourceMapAddress","charAt","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","string","raw"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file diff --git a/dist/console,ember,vue/raven.js b/dist/console,ember,vue/raven.js index e572838e51a3..afc1121e2215 100644 --- a/dist/console,ember,vue/raven.js +++ b/dist/console,ember,vue/raven.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.25.0 (80dffad) | github.com/getsentry/raven-js */ +/*! Raven.js 3.25.1 (b6f3c7a) | github.com/getsentry/raven-js */ /* * Includes TraceKit @@ -325,7 +325,7 @@ Raven.prototype = { // webpack (using a build step causes webpack #1617). Grunt verifies that // this value matches package.json during build. // See: https://github.com/getsentry/raven-js/issues/465 - VERSION: '3.25.0', + VERSION: '3.25.1', debug: false, @@ -1634,8 +1634,8 @@ Raven.prototype = { var hasPushAndReplaceState = !isChromePackagedApp && _window.history && - history.pushState && - history.replaceState; + _window.history.pushState && + _window.history.replaceState; if (autoBreadcrumbs.location && hasPushAndReplaceState) { // TODO: remove onpopstate handler on uninstall() var oldOnPopState = _window.onpopstate; @@ -1664,8 +1664,8 @@ Raven.prototype = { }; }; - fill(history, 'pushState', historyReplacementFunction, wrappedBuiltIns); - fill(history, 'replaceState', historyReplacementFunction, wrappedBuiltIns); + fill(_window.history, 'pushState', historyReplacementFunction, wrappedBuiltIns); + fill(_window.history, 'replaceState', historyReplacementFunction, wrappedBuiltIns); } if (autoBreadcrumbs.console && 'console' in _window && console.log) { @@ -1955,7 +1955,7 @@ Raven.prototype = { if (this._hasNavigator && _navigator.userAgent) { httpData.headers = { - 'User-Agent': navigator.userAgent + 'User-Agent': _navigator.userAgent }; } @@ -3130,6 +3130,16 @@ function getLocationHref() { function getLocationOrigin() { if (typeof document === 'undefined' || document.location == null) return ''; + + // Oh dear IE10... + if (!document.location.origin) { + document.location.origin = + document.location.protocol + + '//' + + document.location.hostname + + (document.location.port ? ':' + document.location.port : ''); + } + return document.location.origin; } diff --git a/dist/console,ember,vue/raven.min.js b/dist/console,ember,vue/raven.min.js index a8544868cea2..db97c91490e9 100644 --- a/dist/console,ember,vue/raven.min.js +++ b/dist/console,ember,vue/raven.min.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.25.0 (80dffad) | github.com/getsentry/raven-js */ -!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.Raven=a()}}(function(){return function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};b[g][0].call(k.exports,function(a){var c=b[g][1][a];return e(c?c:a)},k,k.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;g":"anonymous component")+(a._isVue&&a.$options.__file?" at "+a.$options.__file:"")}function e(a,b){if(b=b||window.Vue,b&&b.config){var c=b.config.errorHandler;b.config.errorHandler=function(b,e,f){var g={};"[object Object]"===Object.prototype.toString.call(e)&&(g.componentName=d(e),g.propsData=e.$options.propsData),"undefined"!=typeof f&&(g.lifecycleHook=f),a.captureException(b,{extra:g}),"function"==typeof c&&c.call(this,b,e,f)}}}b.exports=e,a(7).addPlugin(b.exports)},{7:7}],4:[function(a,b,c){function d(a){this.name="RavenConfigError",this.message=a}d.prototype=new Error,d.prototype.constructor=d,b.exports=d},{}],5:[function(a,b,c){var d=a(8),e=function(a,b,c){var e=a[b],f=a;if(b in a){var g="warn"===b?"warning":b;a[b]=function(){var a=[].slice.call(arguments),h=d.safeJoin(a," "),i={level:g,logger:"console",extra:{arguments:a}};"assert"===b?a[0]===!1&&(h="Assertion failed: "+(d.safeJoin(a.slice(1)," ")||"console.assert"),i.extra.arguments=a.slice(1),c&&c(h,i)):c&&c(h,i),e&&Function.prototype.apply.call(e,f,a)}}};b.exports={wrapMethod:e}},{8:8}],6:[function(a,b,c){(function(c){function d(){return+new Date}function e(a,b){return s(b)?function(c){return b(c,a)}:b}function f(){this.a=!("object"!=typeof JSON||!JSON.stringify),this.b=!r(S),this.c=!r(T),this.d=null,this.e=null,this.f=null,this.g=null,this.h=null,this.i=null,this.j={},this.k={release:R.SENTRY_RELEASE&&R.SENTRY_RELEASE.id,logger:"javascript",ignoreErrors:[],ignoreUrls:[],whitelistUrls:[],includePaths:[],headers:null,collectWindowErrors:!0,captureUnhandledRejections:!0,maxMessageLength:0,maxUrlLength:250,stackTraceLimit:50,autoBreadcrumbs:!0,instrument:!0,sampleRate:1,sanitizeKeys:[]},this.l={method:"POST",keepalive:!0,referrerPolicy:K()?"origin":""},this.m=0,this.n=!1,this.o=Error.stackTraceLimit,this.p=R.console||{},this.q={},this.r=[],this.s=d(),this.t=[],this.u=[],this.v=null,this.w=R.location,this.x=this.w&&this.w.href,this.y();for(var a in this.p)this.q[a]=this.p[a]}var g=a(9),h=a(10),i=a(11),j=a(4),k=a(8),l=k.isErrorEvent,m=k.isDOMError,n=k.isDOMException,o=k.isError,p=k.isObject,q=k.isPlainObject,r=k.isUndefined,s=k.isFunction,t=k.isString,u=k.isArray,v=k.isEmptyObject,w=k.each,x=k.objectMerge,y=k.truncate,z=k.objectFrozen,A=k.hasKey,B=k.joinRegExp,C=k.urlencode,D=k.uuid4,E=k.htmlTreeAsString,F=k.isSameException,G=k.isSameStacktrace,H=k.parseUrl,I=k.fill,J=k.supportsFetch,K=k.supportsReferrerPolicy,L=k.serializeKeysForMessage,M=k.serializeException,N=k.sanitize,O=a(5).wrapMethod,P="source protocol user pass host port path".split(" "),Q=/^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/,R="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},S=R.document,T=R.navigator;f.prototype={VERSION:"3.25.0",debug:!1,TraceKit:g,config:function(a,b){var c=this;if(c.g)return this.z("error","Error: Raven has already been configured"),c;if(!a)return c;var d=c.k;b&&w(b,function(a,b){"tags"===a||"extra"===a||"user"===a?c.j[a]=b:d[a]=b}),c.setDSN(a),d.ignoreErrors.push(/^Script error\.?$/),d.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/),d.ignoreErrors=B(d.ignoreErrors),d.ignoreUrls=!!d.ignoreUrls.length&&B(d.ignoreUrls),d.whitelistUrls=!!d.whitelistUrls.length&&B(d.whitelistUrls),d.includePaths=B(d.includePaths),d.maxBreadcrumbs=Math.max(0,Math.min(d.maxBreadcrumbs||100,100));var e={xhr:!0,console:!0,dom:!0,location:!0,sentry:!0},f=d.autoBreadcrumbs;"[object Object]"==={}.toString.call(f)?f=x(e,f):f!==!1&&(f=e),d.autoBreadcrumbs=f;var h={tryCatch:!0},i=d.instrument;return"[object Object]"==={}.toString.call(i)?i=x(h,i):i!==!1&&(i=h),d.instrument=i,g.collectWindowErrors=!!d.collectWindowErrors,c},install:function(){var a=this;return a.isSetup()&&!a.n&&(g.report.subscribe(function(){a.A.apply(a,arguments)}),a.k.captureUnhandledRejections&&a.B(),a.C(),a.k.instrument&&a.k.instrument.tryCatch&&a.D(),a.k.autoBreadcrumbs&&a.E(),a.F(),a.n=!0),Error.stackTraceLimit=a.k.stackTraceLimit,this},setDSN:function(a){var b=this,c=b.G(a),d=c.path.lastIndexOf("/"),e=c.path.substr(1,d);b.H=a,b.h=c.user,b.I=c.pass&&c.pass.substr(1),b.i=c.path.substr(d+1),b.g=b.J(c),b.K=b.g+"/"+e+"api/"+b.i+"/store/",this.y()},context:function(a,b,c){return s(a)&&(c=b||[],b=a,a=void 0),this.wrap(a,b).apply(this,c)},wrap:function(a,b,c){function d(){var d=[],f=arguments.length,g=!a||a&&a.deep!==!1;for(c&&s(c)&&c.apply(this,arguments);f--;)d[f]=g?e.wrap(a,arguments[f]):arguments[f];try{return b.apply(this,d)}catch(h){throw e.L(),e.captureException(h,a),h}}var e=this;if(r(b)&&!s(a))return a;if(s(a)&&(b=a,a=void 0),!s(b))return b;try{if(b.M)return b;if(b.N)return b.N}catch(f){return b}for(var g in b)A(b,g)&&(d[g]=b[g]);return d.prototype=b.prototype,b.N=d,d.M=!0,d.O=b,d},uninstall:function(){return g.report.uninstall(),this.P(),this.Q(),this.R(),this.S(),Error.stackTraceLimit=this.o,this.n=!1,this},T:function(a){this.z("debug","Raven caught unhandled promise rejection:",a),this.captureException(a.reason,{extra:{unhandledPromiseRejection:!0}})},B:function(){return this.T=this.T.bind(this),R.addEventListener&&R.addEventListener("unhandledrejection",this.T),this},P:function(){return R.removeEventListener&&R.removeEventListener("unhandledrejection",this.T),this},captureException:function(a,b){if(b=x({trimHeadFrames:0},b?b:{}),l(a)&&a.error)a=a.error;else{if(m(a)||n(a)){var c=a.name||(m(a)?"DOMError":"DOMException"),d=a.message?c+": "+a.message:c;return this.captureMessage(d,x(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}))}if(o(a))a=a;else{if(!q(a))return this.captureMessage(a,x(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}));b=this.U(b,a),a=new Error(b.message)}}this.d=a;try{var e=g.computeStackTrace(a);this.V(e,b)}catch(f){if(a!==f)throw f}return this},U:function(a,b){var c=Object.keys(b).sort(),d=x(a,{message:"Non-Error exception captured with keys: "+L(c),fingerprint:[i(c)],extra:a.extra||{}});return d.extra.W=M(b),d},captureMessage:function(a,b){if(!this.k.ignoreErrors.test||!this.k.ignoreErrors.test(a)){b=b||{},a+="";var c,d=x({message:a},b);try{throw new Error(a)}catch(e){c=e}c.name=null;var f=g.computeStackTrace(c),h=u(f.stack)&&f.stack[1];h&&"Raven.captureException"===h.func&&(h=f.stack[2]);var i=h&&h.url||"";if((!this.k.ignoreUrls.test||!this.k.ignoreUrls.test(i))&&(!this.k.whitelistUrls.test||this.k.whitelistUrls.test(i))){if(this.k.stacktrace||b&&b.stacktrace){d.fingerprint=null==d.fingerprint?a:d.fingerprint,b=x({trimHeadFrames:0},b),b.trimHeadFrames+=1;var j=this.X(f,b);d.stacktrace={frames:j.reverse()}}return d.fingerprint&&(d.fingerprint=u(d.fingerprint)?d.fingerprint:[d.fingerprint]),this.Y(d),this}}},captureBreadcrumb:function(a){var b=x({timestamp:d()/1e3},a);if(s(this.k.breadcrumbCallback)){var c=this.k.breadcrumbCallback(b);if(p(c)&&!v(c))b=c;else if(c===!1)return this}return this.u.push(b),this.u.length>this.k.maxBreadcrumbs&&this.u.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.r.push([a,b]),this.n&&this.F(),this},setUserContext:function(a){return this.j.user=a,this},setExtraContext:function(a){return this.Z("extra",a),this},setTagsContext:function(a){return this.Z("tags",a),this},clearContext:function(){return this.j={},this},getContext:function(){return JSON.parse(h(this.j))},setEnvironment:function(a){return this.k.environment=a,this},setRelease:function(a){return this.k.release=a,this},setDataCallback:function(a){var b=this.k.dataCallback;return this.k.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.k.breadcrumbCallback;return this.k.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.k.shouldSendCallback;return this.k.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.k.transport=a,this},lastException:function(){return this.d},lastEventId:function(){return this.f},isSetup:function(){return!!this.a&&(!!this.g||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.z("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=R.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(S){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.H;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.j.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.J(this.G(c)),h=S.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(S.head||S.body).appendChild(h)}},L:function(){var a=this;this.m+=1,setTimeout(function(){a.m-=1})},$:function(a,b){var c,d;if(this.b){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),S.createEvent?(c=S.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=S.createEventObject(),c.eventType=a);for(d in b)A(b,d)&&(c[d]=b[d]);if(S.createEvent)S.dispatchEvent(c);else try{S.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},_:function(a){var b=this;return function(c){if(b.aa=null,b.v!==c){b.v=c;var d;try{d=E(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ba:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.aa;g||a._("input")(c),clearTimeout(g),a.aa=setTimeout(function(){a.aa=null},b)}}},ca:function(a,b){var c=H(this.w.href),d=H(b),e=H(a);this.x=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},C:function(){var a=this;a.da=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.M?a.da.apply(this.O,arguments):a.da.apply(this,arguments)}},Q:function(){this.da&&(Function.prototype.toString=this.da)},D:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.ca(b.x,c+""),a.apply(this,arguments)}};I(history,"pushState",j,d),I(history,"replaceState",j,d)}if(c.console&&"console"in R&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};w(["debug","info","warn","error","log"],function(a,b){O(console,b,k)})}},R:function(){for(var a;this.t.length;){a=this.t.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},S:function(){for(var a in this.q)this.p[a]=this.q[a]},F:function(){var a=this;w(this.r,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},G:function(a){var b=Q.exec(a),c={},d=7;try{for(;d--;)c[P[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.k.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},J:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},A:function(){this.m||this.V.apply(this,arguments)},V:function(a,b){var c=this.X(a,b);this.$("handle",{stackInfo:a,options:b}),this.fa(a.name,a.message,a.url,a.lineno,c,b)},X:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(w(a.stack,function(b,e){var f=c.ga(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.u,0)}),this.j.user&&(a.user=this.j.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),a=this.pa(a),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||v(a[b]))&&delete a[b]}),s(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!v(a)&&(!s(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.ma()?void this.z("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function F(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&l(b))for(c=b.split(/\s+/),f=0;fc?Q(a,b-1):d}function R(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?X:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function S(a,b){function c(a){return m(a)?a.map(function(a){return c(a)}):k(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!m(b)||m(b)&&0===b.length)return a;var d,e=A(b),f="********";try{d=JSON.parse(T(a))}catch(g){return a}return c(d)}var T=a(10),U="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},V=3,W=51200,X=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isDOMError:g,isDOMException:h,isUndefined:i,isFunction:j,isPlainObject:k,isString:l,isArray:m,isEmptyObject:n,supportsErrorEvent:o,supportsDOMError:p,supportsDOMException:q,supportsFetch:r,supportsReferrerPolicy:s,supportsPromiseRejectionEvent:t,wrappedCallback:u,each:v,objectMerge:w,truncate:y,objectFrozen:x,hasKey:z,joinRegExp:A,urlencode:B,uuid4:D,htmlTreeAsString:E,htmlElementAsString:F,isSameException:I,isSameStacktrace:J,parseUrl:C,fill:K,safeJoin:L,serializeException:Q,serializeKeysForMessage:R,sanitize:S}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{10:10}],9:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}function e(){return"undefined"==typeof document||null==document.location?"":document.location.origin}var f=a(8),g={collectWindowErrors:!0,debug:!1},h="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},i=[].slice,j="?",k=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;g.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function e(a,b){var c=null;if(!b||g.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(i.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,h,i){var l=null,m=f.isErrorEvent(i)?i.error:i,n=f.isErrorEvent(a)?a.message:a;if(v)g.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&f.isError(m))l=g.computeStackTrace(m),e(l,!0);else{var p,r={url:b,line:c,column:h},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(k);p&&(s=p[1],n=p[2])}r.func=j,l={name:s,message:n,url:d(),stack:[r]},e(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=h.onerror,h.onerror=l,r=!0)}function n(){r&&(h.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,e.apply(null,[a,!1].concat(b))}function p(a,b){var c=i.call(arguments,1);if(v){if(u===a)return;o()}var d=g.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),g.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,f,g=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,h=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,i=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,k=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,l=/\((\S*)(?::(\d+))(?::(\d+))\)/,m=a.stack.split("\n"),n=[],o=(/^(.*) is undefined$/.exec(a.message),0),p=m.length;o eval")>-1;r&&(b=k.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==o||c[5]||"undefined"==typeof a.columnNumber||(n[0].column=a.columnNumber+1),f={url:c[3],func:c[1]||j,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}if(!f.func&&f.line&&(f.func=j),f.url&&"blob:"===f.url.substr(0,5)){var s=new XMLHttpRequest;if(s.open("GET",f.url,!1),s.send(null),200===s.status){var t=s.responseText||"";t=t.slice(-300);var u=t.match(/\/\/# sourceMappingURL=(.*)$/);if(u){var v=u[1];"~"===v.charAt(0)&&(v=e()+v.slice(1)),f.url=v.slice(0,-4)}}}n.push(f)}return n.length?{name:a.name,message:a.message,url:d(),stack:n}:null}}function b(a,b,c,d){ -var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=j),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,e){for(var h,i,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==f&&o!==g.report){if(i={url:null,func:j,line:null,column:null},o.name?i.func=o.name:(h=k.exec(o.toString()))&&(i.func=h[1]),"undefined"==typeof i.func)try{i.func=h.input.substring(0,h.input.indexOf("{"))}catch(p){}m[""+o]?n=!0:m[""+o]=!0,l.push(i)}e&&l.splice(0,e);var q={name:a.name,message:a.message,url:d(),stack:l};return b(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),q}function f(b,e){var f=null;e=null==e?0:+e;try{if(f=a(b))return f}catch(h){if(g.debug)throw h}try{if(f=c(b,e+1))return f}catch(h){if(g.debug)throw h}return{name:b.name,message:b.message,url:d()}}return f.augmentStackTraceWithInitialElement=b,f.computeStackTraceFromStackProp=a,f}(),b.exports=g}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{8:8}],10:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}],11:[function(a,b,c){function d(a,b){var c=(65535&a)+(65535&b),d=(a>>16)+(b>>16)+(c>>16);return d<<16|65535&c}function e(a,b){return a<>>32-b}function f(a,b,c,f,g,h){return d(e(d(d(b,a),d(f,h)),g),c)}function g(a,b,c,d,e,g,h){return f(b&c|~b&d,a,b,e,g,h)}function h(a,b,c,d,e,g,h){return f(b&d|c&~d,a,b,e,g,h)}function i(a,b,c,d,e,g,h){return f(b^c^d,a,b,e,g,h)}function j(a,b,c,d,e,g,h){return f(c^(b|~d),a,b,e,g,h)}function k(a,b){a[b>>5]|=128<>>9<<4)+14]=b;var c,e,f,k,l,m=1732584193,n=-271733879,o=-1732584194,p=271733878;for(c=0;c>5]>>>b%32&255);return c}function m(a){var b,c=[];for(c[(a.length>>2)-1]=void 0,b=0;b>5]|=(255&a.charCodeAt(b/8))<16&&(e=k(e,8*a.length)),c=0;c<16;c+=1)f[c]=909522486^e[c],g[c]=1549556828^e[c];return d=k(f.concat(m(b)),512+8*b.length),l(k(g.concat(d),640))}function p(a){var b,c,d="0123456789abcdef",e="";for(c=0;c>>4&15)+d.charAt(15&b);return e}function q(a){return unescape(encodeURIComponent(a))}function r(a){return n(q(a))}function s(a){return p(r(a))}function t(a,b){return o(q(a),q(b))}function u(a,b){return p(t(a,b))}function v(a,b,c){return b?c?t(b,a):u(b,a):c?r(a):s(a)}b.exports=v},{}]},{},[7,1,2,3])(7)}); +/*! Raven.js 3.25.1 (b6f3c7a) | github.com/getsentry/raven-js */ +!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.Raven=a()}}(function(){return function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};b[g][0].call(k.exports,function(a){var c=b[g][1][a];return e(c?c:a)},k,k.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;g":"anonymous component")+(a._isVue&&a.$options.__file?" at "+a.$options.__file:"")}function e(a,b){if(b=b||window.Vue,b&&b.config){var c=b.config.errorHandler;b.config.errorHandler=function(b,e,f){var g={};"[object Object]"===Object.prototype.toString.call(e)&&(g.componentName=d(e),g.propsData=e.$options.propsData),"undefined"!=typeof f&&(g.lifecycleHook=f),a.captureException(b,{extra:g}),"function"==typeof c&&c.call(this,b,e,f)}}}b.exports=e,a(7).addPlugin(b.exports)},{7:7}],4:[function(a,b,c){function d(a){this.name="RavenConfigError",this.message=a}d.prototype=new Error,d.prototype.constructor=d,b.exports=d},{}],5:[function(a,b,c){var d=a(8),e=function(a,b,c){var e=a[b],f=a;if(b in a){var g="warn"===b?"warning":b;a[b]=function(){var a=[].slice.call(arguments),h=d.safeJoin(a," "),i={level:g,logger:"console",extra:{arguments:a}};"assert"===b?a[0]===!1&&(h="Assertion failed: "+(d.safeJoin(a.slice(1)," ")||"console.assert"),i.extra.arguments=a.slice(1),c&&c(h,i)):c&&c(h,i),e&&Function.prototype.apply.call(e,f,a)}}};b.exports={wrapMethod:e}},{8:8}],6:[function(a,b,c){(function(c){function d(){return+new Date}function e(a,b){return s(b)?function(c){return b(c,a)}:b}function f(){this.a=!("object"!=typeof JSON||!JSON.stringify),this.b=!r(S),this.c=!r(T),this.d=null,this.e=null,this.f=null,this.g=null,this.h=null,this.i=null,this.j={},this.k={release:R.SENTRY_RELEASE&&R.SENTRY_RELEASE.id,logger:"javascript",ignoreErrors:[],ignoreUrls:[],whitelistUrls:[],includePaths:[],headers:null,collectWindowErrors:!0,captureUnhandledRejections:!0,maxMessageLength:0,maxUrlLength:250,stackTraceLimit:50,autoBreadcrumbs:!0,instrument:!0,sampleRate:1,sanitizeKeys:[]},this.l={method:"POST",keepalive:!0,referrerPolicy:K()?"origin":""},this.m=0,this.n=!1,this.o=Error.stackTraceLimit,this.p=R.console||{},this.q={},this.r=[],this.s=d(),this.t=[],this.u=[],this.v=null,this.w=R.location,this.x=this.w&&this.w.href,this.y();for(var a in this.p)this.q[a]=this.p[a]}var g=a(9),h=a(10),i=a(11),j=a(4),k=a(8),l=k.isErrorEvent,m=k.isDOMError,n=k.isDOMException,o=k.isError,p=k.isObject,q=k.isPlainObject,r=k.isUndefined,s=k.isFunction,t=k.isString,u=k.isArray,v=k.isEmptyObject,w=k.each,x=k.objectMerge,y=k.truncate,z=k.objectFrozen,A=k.hasKey,B=k.joinRegExp,C=k.urlencode,D=k.uuid4,E=k.htmlTreeAsString,F=k.isSameException,G=k.isSameStacktrace,H=k.parseUrl,I=k.fill,J=k.supportsFetch,K=k.supportsReferrerPolicy,L=k.serializeKeysForMessage,M=k.serializeException,N=k.sanitize,O=a(5).wrapMethod,P="source protocol user pass host port path".split(" "),Q=/^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/,R="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},S=R.document,T=R.navigator;f.prototype={VERSION:"3.25.1",debug:!1,TraceKit:g,config:function(a,b){var c=this;if(c.g)return this.z("error","Error: Raven has already been configured"),c;if(!a)return c;var d=c.k;b&&w(b,function(a,b){"tags"===a||"extra"===a||"user"===a?c.j[a]=b:d[a]=b}),c.setDSN(a),d.ignoreErrors.push(/^Script error\.?$/),d.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/),d.ignoreErrors=B(d.ignoreErrors),d.ignoreUrls=!!d.ignoreUrls.length&&B(d.ignoreUrls),d.whitelistUrls=!!d.whitelistUrls.length&&B(d.whitelistUrls),d.includePaths=B(d.includePaths),d.maxBreadcrumbs=Math.max(0,Math.min(d.maxBreadcrumbs||100,100));var e={xhr:!0,console:!0,dom:!0,location:!0,sentry:!0},f=d.autoBreadcrumbs;"[object Object]"==={}.toString.call(f)?f=x(e,f):f!==!1&&(f=e),d.autoBreadcrumbs=f;var h={tryCatch:!0},i=d.instrument;return"[object Object]"==={}.toString.call(i)?i=x(h,i):i!==!1&&(i=h),d.instrument=i,g.collectWindowErrors=!!d.collectWindowErrors,c},install:function(){var a=this;return a.isSetup()&&!a.n&&(g.report.subscribe(function(){a.A.apply(a,arguments)}),a.k.captureUnhandledRejections&&a.B(),a.C(),a.k.instrument&&a.k.instrument.tryCatch&&a.D(),a.k.autoBreadcrumbs&&a.E(),a.F(),a.n=!0),Error.stackTraceLimit=a.k.stackTraceLimit,this},setDSN:function(a){var b=this,c=b.G(a),d=c.path.lastIndexOf("/"),e=c.path.substr(1,d);b.H=a,b.h=c.user,b.I=c.pass&&c.pass.substr(1),b.i=c.path.substr(d+1),b.g=b.J(c),b.K=b.g+"/"+e+"api/"+b.i+"/store/",this.y()},context:function(a,b,c){return s(a)&&(c=b||[],b=a,a=void 0),this.wrap(a,b).apply(this,c)},wrap:function(a,b,c){function d(){var d=[],f=arguments.length,g=!a||a&&a.deep!==!1;for(c&&s(c)&&c.apply(this,arguments);f--;)d[f]=g?e.wrap(a,arguments[f]):arguments[f];try{return b.apply(this,d)}catch(h){throw e.L(),e.captureException(h,a),h}}var e=this;if(r(b)&&!s(a))return a;if(s(a)&&(b=a,a=void 0),!s(b))return b;try{if(b.M)return b;if(b.N)return b.N}catch(f){return b}for(var g in b)A(b,g)&&(d[g]=b[g]);return d.prototype=b.prototype,b.N=d,d.M=!0,d.O=b,d},uninstall:function(){return g.report.uninstall(),this.P(),this.Q(),this.R(),this.S(),Error.stackTraceLimit=this.o,this.n=!1,this},T:function(a){this.z("debug","Raven caught unhandled promise rejection:",a),this.captureException(a.reason,{extra:{unhandledPromiseRejection:!0}})},B:function(){return this.T=this.T.bind(this),R.addEventListener&&R.addEventListener("unhandledrejection",this.T),this},P:function(){return R.removeEventListener&&R.removeEventListener("unhandledrejection",this.T),this},captureException:function(a,b){if(b=x({trimHeadFrames:0},b?b:{}),l(a)&&a.error)a=a.error;else{if(m(a)||n(a)){var c=a.name||(m(a)?"DOMError":"DOMException"),d=a.message?c+": "+a.message:c;return this.captureMessage(d,x(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}))}if(o(a))a=a;else{if(!q(a))return this.captureMessage(a,x(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}));b=this.U(b,a),a=new Error(b.message)}}this.d=a;try{var e=g.computeStackTrace(a);this.V(e,b)}catch(f){if(a!==f)throw f}return this},U:function(a,b){var c=Object.keys(b).sort(),d=x(a,{message:"Non-Error exception captured with keys: "+L(c),fingerprint:[i(c)],extra:a.extra||{}});return d.extra.W=M(b),d},captureMessage:function(a,b){if(!this.k.ignoreErrors.test||!this.k.ignoreErrors.test(a)){b=b||{},a+="";var c,d=x({message:a},b);try{throw new Error(a)}catch(e){c=e}c.name=null;var f=g.computeStackTrace(c),h=u(f.stack)&&f.stack[1];h&&"Raven.captureException"===h.func&&(h=f.stack[2]);var i=h&&h.url||"";if((!this.k.ignoreUrls.test||!this.k.ignoreUrls.test(i))&&(!this.k.whitelistUrls.test||this.k.whitelistUrls.test(i))){if(this.k.stacktrace||b&&b.stacktrace){d.fingerprint=null==d.fingerprint?a:d.fingerprint,b=x({trimHeadFrames:0},b),b.trimHeadFrames+=1;var j=this.X(f,b);d.stacktrace={frames:j.reverse()}}return d.fingerprint&&(d.fingerprint=u(d.fingerprint)?d.fingerprint:[d.fingerprint]),this.Y(d),this}}},captureBreadcrumb:function(a){var b=x({timestamp:d()/1e3},a);if(s(this.k.breadcrumbCallback)){var c=this.k.breadcrumbCallback(b);if(p(c)&&!v(c))b=c;else if(c===!1)return this}return this.u.push(b),this.u.length>this.k.maxBreadcrumbs&&this.u.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.r.push([a,b]),this.n&&this.F(),this},setUserContext:function(a){return this.j.user=a,this},setExtraContext:function(a){return this.Z("extra",a),this},setTagsContext:function(a){return this.Z("tags",a),this},clearContext:function(){return this.j={},this},getContext:function(){return JSON.parse(h(this.j))},setEnvironment:function(a){return this.k.environment=a,this},setRelease:function(a){return this.k.release=a,this},setDataCallback:function(a){var b=this.k.dataCallback;return this.k.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.k.breadcrumbCallback;return this.k.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.k.shouldSendCallback;return this.k.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.k.transport=a,this},lastException:function(){return this.d},lastEventId:function(){return this.f},isSetup:function(){return!!this.a&&(!!this.g||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.z("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=R.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(S){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.H;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.j.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.J(this.G(c)),h=S.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(S.head||S.body).appendChild(h)}},L:function(){var a=this;this.m+=1,setTimeout(function(){a.m-=1})},$:function(a,b){var c,d;if(this.b){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),S.createEvent?(c=S.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=S.createEventObject(),c.eventType=a);for(d in b)A(b,d)&&(c[d]=b[d]);if(S.createEvent)S.dispatchEvent(c);else try{S.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},_:function(a){var b=this;return function(c){if(b.aa=null,b.v!==c){b.v=c;var d;try{d=E(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ba:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.aa;g||a._("input")(c),clearTimeout(g),a.aa=setTimeout(function(){a.aa=null},b)}}},ca:function(a,b){var c=H(this.w.href),d=H(b),e=H(a);this.x=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},C:function(){var a=this;a.da=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.M?a.da.apply(this.O,arguments):a.da.apply(this,arguments)}},Q:function(){this.da&&(Function.prototype.toString=this.da)},D:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.ca(b.x,c+""),a.apply(this,arguments)}};I(R.history,"pushState",j,d),I(R.history,"replaceState",j,d)}if(c.console&&"console"in R&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};w(["debug","info","warn","error","log"],function(a,b){O(console,b,k)})}},R:function(){for(var a;this.t.length;){a=this.t.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},S:function(){for(var a in this.q)this.p[a]=this.q[a]},F:function(){var a=this;w(this.r,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},G:function(a){var b=Q.exec(a),c={},d=7;try{for(;d--;)c[P[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.k.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},J:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},A:function(){this.m||this.V.apply(this,arguments)},V:function(a,b){var c=this.X(a,b);this.$("handle",{stackInfo:a,options:b}),this.fa(a.name,a.message,a.url,a.lineno,c,b)},X:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(w(a.stack,function(b,e){var f=c.ga(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.u,0)}),this.j.user&&(a.user=this.j.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),a=this.pa(a),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||v(a[b]))&&delete a[b]}),s(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!v(a)&&(!s(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.ma()?void this.z("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function F(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&l(b))for(c=b.split(/\s+/),f=0;fc?Q(a,b-1):d}function R(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?X:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function S(a,b){function c(a){return m(a)?a.map(function(a){return c(a)}):k(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!m(b)||m(b)&&0===b.length)return a;var d,e=A(b),f="********";try{d=JSON.parse(T(a))}catch(g){return a}return c(d)}var T=a(10),U="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},V=3,W=51200,X=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isDOMError:g,isDOMException:h,isUndefined:i,isFunction:j,isPlainObject:k,isString:l,isArray:m,isEmptyObject:n,supportsErrorEvent:o,supportsDOMError:p,supportsDOMException:q,supportsFetch:r,supportsReferrerPolicy:s,supportsPromiseRejectionEvent:t,wrappedCallback:u,each:v,objectMerge:w,truncate:y,objectFrozen:x,hasKey:z,joinRegExp:A,urlencode:B,uuid4:D,htmlTreeAsString:E,htmlElementAsString:F,isSameException:I,isSameStacktrace:J,parseUrl:C,fill:K,safeJoin:L,serializeException:Q,serializeKeysForMessage:R,sanitize:S}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{10:10}],9:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}function e(){return"undefined"==typeof document||null==document.location?"":(document.location.origin||(document.location.origin=document.location.protocol+"//"+document.location.hostname+(document.location.port?":"+document.location.port:"")),document.location.origin)}var f=a(8),g={collectWindowErrors:!0,debug:!1},h="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},i=[].slice,j="?",k=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;g.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function e(a,b){var c=null;if(!b||g.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(i.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,h,i){var l=null,m=f.isErrorEvent(i)?i.error:i,n=f.isErrorEvent(a)?a.message:a;if(v)g.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&f.isError(m))l=g.computeStackTrace(m),e(l,!0);else{var p,r={url:b,line:c,column:h},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(k);p&&(s=p[1],n=p[2])}r.func=j,l={name:s,message:n,url:d(),stack:[r]},e(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=h.onerror,h.onerror=l,r=!0)}function n(){r&&(h.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,e.apply(null,[a,!1].concat(b))}function p(a,b){var c=i.call(arguments,1);if(v){if(u===a)return;o()}var d=g.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),g.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,f,g=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,h=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,i=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,k=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,l=/\((\S*)(?::(\d+))(?::(\d+))\)/,m=a.stack.split("\n"),n=[],o=(/^(.*) is undefined$/.exec(a.message),0),p=m.length;o eval")>-1;r&&(b=k.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==o||c[5]||"undefined"==typeof a.columnNumber||(n[0].column=a.columnNumber+1),f={url:c[3],func:c[1]||j,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}if(!f.func&&f.line&&(f.func=j),f.url&&"blob:"===f.url.substr(0,5)){var s=new XMLHttpRequest;if(s.open("GET",f.url,!1),s.send(null),200===s.status){var t=s.responseText||"";t=t.slice(-300);var u=t.match(/\/\/# sourceMappingURL=(.*)$/);if(u){var v=u[1]; +"~"===v.charAt(0)&&(v=e()+v.slice(1)),f.url=v.slice(0,-4)}}}n.push(f)}return n.length?{name:a.name,message:a.message,url:d(),stack:n}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=j),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,e){for(var h,i,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==f&&o!==g.report){if(i={url:null,func:j,line:null,column:null},o.name?i.func=o.name:(h=k.exec(o.toString()))&&(i.func=h[1]),"undefined"==typeof i.func)try{i.func=h.input.substring(0,h.input.indexOf("{"))}catch(p){}m[""+o]?n=!0:m[""+o]=!0,l.push(i)}e&&l.splice(0,e);var q={name:a.name,message:a.message,url:d(),stack:l};return b(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),q}function f(b,e){var f=null;e=null==e?0:+e;try{if(f=a(b))return f}catch(h){if(g.debug)throw h}try{if(f=c(b,e+1))return f}catch(h){if(g.debug)throw h}return{name:b.name,message:b.message,url:d()}}return f.augmentStackTraceWithInitialElement=b,f.computeStackTraceFromStackProp=a,f}(),b.exports=g}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{8:8}],10:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}],11:[function(a,b,c){function d(a,b){var c=(65535&a)+(65535&b),d=(a>>16)+(b>>16)+(c>>16);return d<<16|65535&c}function e(a,b){return a<>>32-b}function f(a,b,c,f,g,h){return d(e(d(d(b,a),d(f,h)),g),c)}function g(a,b,c,d,e,g,h){return f(b&c|~b&d,a,b,e,g,h)}function h(a,b,c,d,e,g,h){return f(b&d|c&~d,a,b,e,g,h)}function i(a,b,c,d,e,g,h){return f(b^c^d,a,b,e,g,h)}function j(a,b,c,d,e,g,h){return f(c^(b|~d),a,b,e,g,h)}function k(a,b){a[b>>5]|=128<>>9<<4)+14]=b;var c,e,f,k,l,m=1732584193,n=-271733879,o=-1732584194,p=271733878;for(c=0;c>5]>>>b%32&255);return c}function m(a){var b,c=[];for(c[(a.length>>2)-1]=void 0,b=0;b>5]|=(255&a.charCodeAt(b/8))<16&&(e=k(e,8*a.length)),c=0;c<16;c+=1)f[c]=909522486^e[c],g[c]=1549556828^e[c];return d=k(f.concat(m(b)),512+8*b.length),l(k(g.concat(d),640))}function p(a){var b,c,d="0123456789abcdef",e="";for(c=0;c>>4&15)+d.charAt(15&b);return e}function q(a){return unescape(encodeURIComponent(a))}function r(a){return n(q(a))}function s(a){return p(r(a))}function t(a,b){return o(q(a),q(b))}function u(a,b){return p(t(a,b))}function v(a,b,c){return b?c?t(b,a):u(b,a):c?r(a):s(a)}b.exports=v},{}]},{},[7,1,2,3])(7)}); //# sourceMappingURL=raven.min.js.map \ No newline at end of file diff --git a/dist/console,ember,vue/raven.min.js.map b/dist/console,ember,vue/raven.min.js.map index c9d6087e5412..2fa6666d288d 100644 --- a/dist/console,ember,vue/raven.min.js.map +++ b/dist/console,ember,vue/raven.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","consolePlugin","console","pluginOptions","logLevels","levels","push","callback","msg","data","captureMessage","level","pop","wrapConsoleMethod","wrapMethod","addPlugin","5","7","2","emberPlugin","Ember","_oldOnError","onerror","error","captureException","RSVP","on","reason","extra","context","3","formatComponentName","vm","$root","name","_isVue","$options","_componentTag","__file","vuePlugin","Vue","config","errorHandler","info","metaData","Object","prototype","toString","componentName","propsData","lifecycleHook","4","RavenConfigError","message","constructor","utils","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","safeJoin","logger","Function","apply","8","6","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","sanitizeKeys","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isErrorEvent","isDOMError","isDOMException","isError","isObject","isPlainObject","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","sanitize","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","dsn","options","_logDebug","globalOptions","key","value","setDSN","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","substr","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","func","undefined","wrap","_before","wrapped","deep","_ignoreNextOnError","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","T","event","unhandledPromiseRejection","B","_promiseRejectionHandler","bind","addEventListener","P","removeEventListener","ex","trimHeadFrames","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","U","currentOptions","exKeys","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","setDataCallback","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","L","setTimeout","$","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","_","evtName","_keypressTimeout","target","category","ba","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","ca","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","C","_originalFunctionToString","Q","D","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","type","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","E","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","R","builtin","S","F","installer","concat","G","str","m","exec","allowSecretKey","J","port","A","V","stackInfo","_triggerEvent","_processException","lineno","X","frame","_normalizeFrame","in_app","ga","stackInfoUrl","normalized","filename","line","colno","column","function","fa","prefixedMessage","exception","values","culprit","ha","request","Referer","breadcrumbs","_trimBreadcrumbs","ia","urlProp","urlProps","ja","httpData","userAgent","User-Agent","referrer","y","_backoffDuration","_backoffStart","ma","na","current","last","oa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Y","baseData","project","platform","_getHttpData","serverName","server_name","_sanitizeData","forEach","random","_sendProcessedPayload","pa","ra","qa","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","sa","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","open","setRequestHeader","send","ta","hash","evaluated","z","Z","setUser","setReleaseContext","10","11","9","RavenConstructor","_Raven","noConflict","Client","what","supportsErrorEvent","ErrorEvent","supportsDOMError","DOMError","supportsDOMException","DOMException","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","wrappedCallback","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","sanitizeMask","safeInput","o_O","getLocationHref","getLocationOrigin","origin","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","responseText","sourceMaps","sourceMapAddress","charAt","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","string","raw"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file +{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","consolePlugin","console","pluginOptions","logLevels","levels","push","callback","msg","data","captureMessage","level","pop","wrapConsoleMethod","wrapMethod","addPlugin","5","7","2","emberPlugin","Ember","_oldOnError","onerror","error","captureException","RSVP","on","reason","extra","context","3","formatComponentName","vm","$root","name","_isVue","$options","_componentTag","__file","vuePlugin","Vue","config","errorHandler","info","metaData","Object","prototype","toString","componentName","propsData","lifecycleHook","4","RavenConfigError","message","constructor","utils","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","safeJoin","logger","Function","apply","8","6","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","sanitizeKeys","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isErrorEvent","isDOMError","isDOMException","isError","isObject","isPlainObject","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","sanitize","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","dsn","options","_logDebug","globalOptions","key","value","setDSN","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","substr","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","func","undefined","wrap","_before","wrapped","deep","_ignoreNextOnError","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","T","event","unhandledPromiseRejection","B","_promiseRejectionHandler","bind","addEventListener","P","removeEventListener","ex","trimHeadFrames","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","U","currentOptions","exKeys","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","setDataCallback","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","L","setTimeout","$","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","_","evtName","_keypressTimeout","target","category","ba","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","ca","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","C","_originalFunctionToString","Q","D","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","type","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","E","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","R","builtin","S","F","installer","concat","G","str","m","exec","allowSecretKey","J","port","A","V","stackInfo","_triggerEvent","_processException","lineno","X","frame","_normalizeFrame","in_app","ga","stackInfoUrl","normalized","filename","line","colno","column","function","fa","prefixedMessage","exception","values","culprit","ha","request","Referer","breadcrumbs","_trimBreadcrumbs","ia","urlProp","urlProps","ja","httpData","userAgent","User-Agent","referrer","y","_backoffDuration","_backoffStart","ma","na","current","last","oa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Y","baseData","project","platform","_getHttpData","serverName","server_name","_sanitizeData","forEach","random","_sendProcessedPayload","pa","ra","qa","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","sa","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","open","setRequestHeader","send","ta","hash","evaluated","z","Z","setUser","setReleaseContext","10","11","9","RavenConstructor","_Raven","noConflict","Client","what","supportsErrorEvent","ErrorEvent","supportsDOMError","DOMError","supportsDOMException","DOMException","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","wrappedCallback","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","sanitizeMask","safeInput","o_O","getLocationHref","getLocationOrigin","origin","hostname","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","responseText","sourceMaps","sourceMapAddress","charAt","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","string","raw"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file diff --git a/dist/console,ember/raven.js b/dist/console,ember/raven.js index a7444c1a9967..8e3af174ec15 100644 --- a/dist/console,ember/raven.js +++ b/dist/console,ember/raven.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.25.0 (80dffad) | github.com/getsentry/raven-js */ +/*! Raven.js 3.25.1 (b6f3c7a) | github.com/getsentry/raven-js */ /* * Includes TraceKit @@ -275,7 +275,7 @@ Raven.prototype = { // webpack (using a build step causes webpack #1617). Grunt verifies that // this value matches package.json during build. // See: https://github.com/getsentry/raven-js/issues/465 - VERSION: '3.25.0', + VERSION: '3.25.1', debug: false, @@ -1584,8 +1584,8 @@ Raven.prototype = { var hasPushAndReplaceState = !isChromePackagedApp && _window.history && - history.pushState && - history.replaceState; + _window.history.pushState && + _window.history.replaceState; if (autoBreadcrumbs.location && hasPushAndReplaceState) { // TODO: remove onpopstate handler on uninstall() var oldOnPopState = _window.onpopstate; @@ -1614,8 +1614,8 @@ Raven.prototype = { }; }; - fill(history, 'pushState', historyReplacementFunction, wrappedBuiltIns); - fill(history, 'replaceState', historyReplacementFunction, wrappedBuiltIns); + fill(_window.history, 'pushState', historyReplacementFunction, wrappedBuiltIns); + fill(_window.history, 'replaceState', historyReplacementFunction, wrappedBuiltIns); } if (autoBreadcrumbs.console && 'console' in _window && console.log) { @@ -1905,7 +1905,7 @@ Raven.prototype = { if (this._hasNavigator && _navigator.userAgent) { httpData.headers = { - 'User-Agent': navigator.userAgent + 'User-Agent': _navigator.userAgent }; } @@ -3080,6 +3080,16 @@ function getLocationHref() { function getLocationOrigin() { if (typeof document === 'undefined' || document.location == null) return ''; + + // Oh dear IE10... + if (!document.location.origin) { + document.location.origin = + document.location.protocol + + '//' + + document.location.hostname + + (document.location.port ? ':' + document.location.port : ''); + } + return document.location.origin; } diff --git a/dist/console,ember/raven.min.js b/dist/console,ember/raven.min.js index 2289dceeaa80..895c659a1c3f 100644 --- a/dist/console,ember/raven.min.js +++ b/dist/console,ember/raven.min.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.25.0 (80dffad) | github.com/getsentry/raven-js */ -!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.Raven=a()}}(function(){return function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};b[g][0].call(k.exports,function(a){var c=b[g][1][a];return e(c?c:a)},k,k.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;gthis.k.maxBreadcrumbs&&this.u.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.r.push([a,b]),this.n&&this.F(),this},setUserContext:function(a){return this.j.user=a,this},setExtraContext:function(a){return this.Z("extra",a),this},setTagsContext:function(a){return this.Z("tags",a),this},clearContext:function(){return this.j={},this},getContext:function(){return JSON.parse(h(this.j))},setEnvironment:function(a){return this.k.environment=a,this},setRelease:function(a){return this.k.release=a,this},setDataCallback:function(a){var b=this.k.dataCallback;return this.k.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.k.breadcrumbCallback;return this.k.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.k.shouldSendCallback;return this.k.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.k.transport=a,this},lastException:function(){return this.d},lastEventId:function(){return this.f},isSetup:function(){return!!this.a&&(!!this.g||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.z("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=R.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(S){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.H;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.j.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.J(this.G(c)),h=S.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(S.head||S.body).appendChild(h)}},L:function(){var a=this;this.m+=1,setTimeout(function(){a.m-=1})},$:function(a,b){var c,d;if(this.b){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),S.createEvent?(c=S.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=S.createEventObject(),c.eventType=a);for(d in b)A(b,d)&&(c[d]=b[d]);if(S.createEvent)S.dispatchEvent(c);else try{S.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},_:function(a){var b=this;return function(c){if(b.aa=null,b.v!==c){b.v=c;var d;try{d=E(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ba:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.aa;g||a._("input")(c),clearTimeout(g),a.aa=setTimeout(function(){a.aa=null},b)}}},ca:function(a,b){var c=H(this.w.href),d=H(b),e=H(a);this.x=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},C:function(){var a=this;a.da=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.M?a.da.apply(this.O,arguments):a.da.apply(this,arguments)}},Q:function(){this.da&&(Function.prototype.toString=this.da)},D:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.ca(b.x,c+""),a.apply(this,arguments)}};I(history,"pushState",j,d),I(history,"replaceState",j,d)}if(c.console&&"console"in R&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};w(["debug","info","warn","error","log"],function(a,b){O(console,b,k)})}},R:function(){for(var a;this.t.length;){a=this.t.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},S:function(){for(var a in this.q)this.p[a]=this.q[a]},F:function(){var a=this;w(this.r,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},G:function(a){var b=Q.exec(a),c={},d=7;try{for(;d--;)c[P[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.k.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},J:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},A:function(){this.m||this.V.apply(this,arguments)},V:function(a,b){var c=this.X(a,b);this.$("handle",{stackInfo:a,options:b}),this.fa(a.name,a.message,a.url,a.lineno,c,b)},X:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(w(a.stack,function(b,e){var f=c.ga(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.u,0)}),this.j.user&&(a.user=this.j.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),a=this.pa(a),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||v(a[b]))&&delete a[b]}),s(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!v(a)&&(!s(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.ma()?void this.z("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function F(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&l(b))for(c=b.split(/\s+/),f=0;fc?Q(a,b-1):d}function R(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?X:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function S(a,b){function c(a){return m(a)?a.map(function(a){return c(a)}):k(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!m(b)||m(b)&&0===b.length)return a;var d,e=A(b),f="********";try{d=JSON.parse(T(a))}catch(g){return a}return c(d)}var T=a(9),U="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},V=3,W=51200,X=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isDOMError:g,isDOMException:h,isUndefined:i,isFunction:j,isPlainObject:k,isString:l,isArray:m,isEmptyObject:n,supportsErrorEvent:o,supportsDOMError:p,supportsDOMException:q,supportsFetch:r,supportsReferrerPolicy:s,supportsPromiseRejectionEvent:t,wrappedCallback:u,each:v,objectMerge:w,truncate:y,objectFrozen:x,hasKey:z,joinRegExp:A,urlencode:B,uuid4:D,htmlTreeAsString:E,htmlElementAsString:F,isSameException:I,isSameStacktrace:J,parseUrl:C,fill:K,safeJoin:L,serializeException:Q,serializeKeysForMessage:R,sanitize:S}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{9:9}],8:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}function e(){return"undefined"==typeof document||null==document.location?"":document.location.origin}var f=a(7),g={collectWindowErrors:!0,debug:!1},h="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},i=[].slice,j="?",k=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;g.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function e(a,b){var c=null;if(!b||g.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(i.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,h,i){var l=null,m=f.isErrorEvent(i)?i.error:i,n=f.isErrorEvent(a)?a.message:a;if(v)g.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&f.isError(m))l=g.computeStackTrace(m),e(l,!0);else{var p,r={url:b,line:c,column:h},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(k);p&&(s=p[1],n=p[2])}r.func=j,l={name:s,message:n,url:d(),stack:[r]},e(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=h.onerror,h.onerror=l,r=!0)}function n(){r&&(h.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,e.apply(null,[a,!1].concat(b))}function p(a,b){var c=i.call(arguments,1);if(v){if(u===a)return;o()}var d=g.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),g.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,f,g=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,h=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,i=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,k=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,l=/\((\S*)(?::(\d+))(?::(\d+))\)/,m=a.stack.split("\n"),n=[],o=(/^(.*) is undefined$/.exec(a.message),0),p=m.length;o eval")>-1;r&&(b=k.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==o||c[5]||"undefined"==typeof a.columnNumber||(n[0].column=a.columnNumber+1),f={url:c[3],func:c[1]||j,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}if(!f.func&&f.line&&(f.func=j),f.url&&"blob:"===f.url.substr(0,5)){var s=new XMLHttpRequest;if(s.open("GET",f.url,!1),s.send(null),200===s.status){var t=s.responseText||"";t=t.slice(-300);var u=t.match(/\/\/# sourceMappingURL=(.*)$/);if(u){var v=u[1];"~"===v.charAt(0)&&(v=e()+v.slice(1)),f.url=v.slice(0,-4)}}}n.push(f)}return n.length?{name:a.name,message:a.message,url:d(),stack:n}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=j),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,e){for(var h,i,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==f&&o!==g.report){if(i={url:null,func:j,line:null,column:null},o.name?i.func=o.name:(h=k.exec(o.toString()))&&(i.func=h[1]),"undefined"==typeof i.func)try{i.func=h.input.substring(0,h.input.indexOf("{")); -}catch(p){}m[""+o]?n=!0:m[""+o]=!0,l.push(i)}e&&l.splice(0,e);var q={name:a.name,message:a.message,url:d(),stack:l};return b(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),q}function f(b,e){var f=null;e=null==e?0:+e;try{if(f=a(b))return f}catch(h){if(g.debug)throw h}try{if(f=c(b,e+1))return f}catch(h){if(g.debug)throw h}return{name:b.name,message:b.message,url:d()}}return f.augmentStackTraceWithInitialElement=b,f.computeStackTraceFromStackProp=a,f}(),b.exports=g}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{7:7}],9:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}],10:[function(a,b,c){function d(a,b){var c=(65535&a)+(65535&b),d=(a>>16)+(b>>16)+(c>>16);return d<<16|65535&c}function e(a,b){return a<>>32-b}function f(a,b,c,f,g,h){return d(e(d(d(b,a),d(f,h)),g),c)}function g(a,b,c,d,e,g,h){return f(b&c|~b&d,a,b,e,g,h)}function h(a,b,c,d,e,g,h){return f(b&d|c&~d,a,b,e,g,h)}function i(a,b,c,d,e,g,h){return f(b^c^d,a,b,e,g,h)}function j(a,b,c,d,e,g,h){return f(c^(b|~d),a,b,e,g,h)}function k(a,b){a[b>>5]|=128<>>9<<4)+14]=b;var c,e,f,k,l,m=1732584193,n=-271733879,o=-1732584194,p=271733878;for(c=0;c>5]>>>b%32&255);return c}function m(a){var b,c=[];for(c[(a.length>>2)-1]=void 0,b=0;b>5]|=(255&a.charCodeAt(b/8))<16&&(e=k(e,8*a.length)),c=0;c<16;c+=1)f[c]=909522486^e[c],g[c]=1549556828^e[c];return d=k(f.concat(m(b)),512+8*b.length),l(k(g.concat(d),640))}function p(a){var b,c,d="0123456789abcdef",e="";for(c=0;c>>4&15)+d.charAt(15&b);return e}function q(a){return unescape(encodeURIComponent(a))}function r(a){return n(q(a))}function s(a){return p(r(a))}function t(a,b){return o(q(a),q(b))}function u(a,b){return p(t(a,b))}function v(a,b,c){return b?c?t(b,a):u(b,a):c?r(a):s(a)}b.exports=v},{}]},{},[6,1,2])(6)}); +/*! Raven.js 3.25.1 (b6f3c7a) | github.com/getsentry/raven-js */ +!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.Raven=a()}}(function(){return function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};b[g][0].call(k.exports,function(a){var c=b[g][1][a];return e(c?c:a)},k,k.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;gthis.k.maxBreadcrumbs&&this.u.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.r.push([a,b]),this.n&&this.F(),this},setUserContext:function(a){return this.j.user=a,this},setExtraContext:function(a){return this.Z("extra",a),this},setTagsContext:function(a){return this.Z("tags",a),this},clearContext:function(){return this.j={},this},getContext:function(){return JSON.parse(h(this.j))},setEnvironment:function(a){return this.k.environment=a,this},setRelease:function(a){return this.k.release=a,this},setDataCallback:function(a){var b=this.k.dataCallback;return this.k.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.k.breadcrumbCallback;return this.k.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.k.shouldSendCallback;return this.k.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.k.transport=a,this},lastException:function(){return this.d},lastEventId:function(){return this.f},isSetup:function(){return!!this.a&&(!!this.g||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.z("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=R.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(S){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.H;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.j.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.J(this.G(c)),h=S.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(S.head||S.body).appendChild(h)}},L:function(){var a=this;this.m+=1,setTimeout(function(){a.m-=1})},$:function(a,b){var c,d;if(this.b){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),S.createEvent?(c=S.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=S.createEventObject(),c.eventType=a);for(d in b)A(b,d)&&(c[d]=b[d]);if(S.createEvent)S.dispatchEvent(c);else try{S.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},_:function(a){var b=this;return function(c){if(b.aa=null,b.v!==c){b.v=c;var d;try{d=E(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ba:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.aa;g||a._("input")(c),clearTimeout(g),a.aa=setTimeout(function(){a.aa=null},b)}}},ca:function(a,b){var c=H(this.w.href),d=H(b),e=H(a);this.x=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},C:function(){var a=this;a.da=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.M?a.da.apply(this.O,arguments):a.da.apply(this,arguments)}},Q:function(){this.da&&(Function.prototype.toString=this.da)},D:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.ca(b.x,c+""),a.apply(this,arguments)}};I(R.history,"pushState",j,d),I(R.history,"replaceState",j,d)}if(c.console&&"console"in R&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};w(["debug","info","warn","error","log"],function(a,b){O(console,b,k)})}},R:function(){for(var a;this.t.length;){a=this.t.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},S:function(){for(var a in this.q)this.p[a]=this.q[a]},F:function(){var a=this;w(this.r,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},G:function(a){var b=Q.exec(a),c={},d=7;try{for(;d--;)c[P[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.k.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},J:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},A:function(){this.m||this.V.apply(this,arguments)},V:function(a,b){var c=this.X(a,b);this.$("handle",{stackInfo:a,options:b}),this.fa(a.name,a.message,a.url,a.lineno,c,b)},X:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(w(a.stack,function(b,e){var f=c.ga(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.u,0)}),this.j.user&&(a.user=this.j.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),a=this.pa(a),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||v(a[b]))&&delete a[b]}),s(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!v(a)&&(!s(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.ma()?void this.z("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function F(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&l(b))for(c=b.split(/\s+/),f=0;fc?Q(a,b-1):d}function R(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?X:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function S(a,b){function c(a){return m(a)?a.map(function(a){return c(a)}):k(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!m(b)||m(b)&&0===b.length)return a;var d,e=A(b),f="********";try{d=JSON.parse(T(a))}catch(g){return a}return c(d)}var T=a(9),U="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},V=3,W=51200,X=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isDOMError:g,isDOMException:h,isUndefined:i,isFunction:j,isPlainObject:k,isString:l,isArray:m,isEmptyObject:n,supportsErrorEvent:o,supportsDOMError:p,supportsDOMException:q,supportsFetch:r,supportsReferrerPolicy:s,supportsPromiseRejectionEvent:t,wrappedCallback:u,each:v,objectMerge:w,truncate:y,objectFrozen:x,hasKey:z,joinRegExp:A,urlencode:B,uuid4:D,htmlTreeAsString:E,htmlElementAsString:F,isSameException:I,isSameStacktrace:J,parseUrl:C,fill:K,safeJoin:L,serializeException:Q,serializeKeysForMessage:R,sanitize:S}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{9:9}],8:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}function e(){return"undefined"==typeof document||null==document.location?"":(document.location.origin||(document.location.origin=document.location.protocol+"//"+document.location.hostname+(document.location.port?":"+document.location.port:"")),document.location.origin)}var f=a(7),g={collectWindowErrors:!0,debug:!1},h="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},i=[].slice,j="?",k=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;g.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function e(a,b){var c=null;if(!b||g.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(i.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,h,i){var l=null,m=f.isErrorEvent(i)?i.error:i,n=f.isErrorEvent(a)?a.message:a;if(v)g.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&f.isError(m))l=g.computeStackTrace(m),e(l,!0);else{var p,r={url:b,line:c,column:h},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(k);p&&(s=p[1],n=p[2])}r.func=j,l={name:s,message:n,url:d(),stack:[r]},e(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=h.onerror,h.onerror=l,r=!0)}function n(){r&&(h.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,e.apply(null,[a,!1].concat(b))}function p(a,b){var c=i.call(arguments,1);if(v){if(u===a)return;o()}var d=g.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),g.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,f,g=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,h=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,i=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,k=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,l=/\((\S*)(?::(\d+))(?::(\d+))\)/,m=a.stack.split("\n"),n=[],o=(/^(.*) is undefined$/.exec(a.message),0),p=m.length;o eval")>-1;r&&(b=k.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==o||c[5]||"undefined"==typeof a.columnNumber||(n[0].column=a.columnNumber+1),f={url:c[3],func:c[1]||j,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}if(!f.func&&f.line&&(f.func=j),f.url&&"blob:"===f.url.substr(0,5)){var s=new XMLHttpRequest;if(s.open("GET",f.url,!1),s.send(null),200===s.status){var t=s.responseText||"";t=t.slice(-300);var u=t.match(/\/\/# sourceMappingURL=(.*)$/);if(u){var v=u[1];"~"===v.charAt(0)&&(v=e()+v.slice(1)),f.url=v.slice(0,-4)}}}n.push(f)}return n.length?{name:a.name,message:a.message,url:d(),stack:n}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=j),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,e){for(var h,i,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==f&&o!==g.report){if(i={url:null, +func:j,line:null,column:null},o.name?i.func=o.name:(h=k.exec(o.toString()))&&(i.func=h[1]),"undefined"==typeof i.func)try{i.func=h.input.substring(0,h.input.indexOf("{"))}catch(p){}m[""+o]?n=!0:m[""+o]=!0,l.push(i)}e&&l.splice(0,e);var q={name:a.name,message:a.message,url:d(),stack:l};return b(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),q}function f(b,e){var f=null;e=null==e?0:+e;try{if(f=a(b))return f}catch(h){if(g.debug)throw h}try{if(f=c(b,e+1))return f}catch(h){if(g.debug)throw h}return{name:b.name,message:b.message,url:d()}}return f.augmentStackTraceWithInitialElement=b,f.computeStackTraceFromStackProp=a,f}(),b.exports=g}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{7:7}],9:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}],10:[function(a,b,c){function d(a,b){var c=(65535&a)+(65535&b),d=(a>>16)+(b>>16)+(c>>16);return d<<16|65535&c}function e(a,b){return a<>>32-b}function f(a,b,c,f,g,h){return d(e(d(d(b,a),d(f,h)),g),c)}function g(a,b,c,d,e,g,h){return f(b&c|~b&d,a,b,e,g,h)}function h(a,b,c,d,e,g,h){return f(b&d|c&~d,a,b,e,g,h)}function i(a,b,c,d,e,g,h){return f(b^c^d,a,b,e,g,h)}function j(a,b,c,d,e,g,h){return f(c^(b|~d),a,b,e,g,h)}function k(a,b){a[b>>5]|=128<>>9<<4)+14]=b;var c,e,f,k,l,m=1732584193,n=-271733879,o=-1732584194,p=271733878;for(c=0;c>5]>>>b%32&255);return c}function m(a){var b,c=[];for(c[(a.length>>2)-1]=void 0,b=0;b>5]|=(255&a.charCodeAt(b/8))<16&&(e=k(e,8*a.length)),c=0;c<16;c+=1)f[c]=909522486^e[c],g[c]=1549556828^e[c];return d=k(f.concat(m(b)),512+8*b.length),l(k(g.concat(d),640))}function p(a){var b,c,d="0123456789abcdef",e="";for(c=0;c>>4&15)+d.charAt(15&b);return e}function q(a){return unescape(encodeURIComponent(a))}function r(a){return n(q(a))}function s(a){return p(r(a))}function t(a,b){return o(q(a),q(b))}function u(a,b){return p(t(a,b))}function v(a,b,c){return b?c?t(b,a):u(b,a):c?r(a):s(a)}b.exports=v},{}]},{},[6,1,2])(6)}); //# sourceMappingURL=raven.min.js.map \ No newline at end of file diff --git a/dist/console,ember/raven.min.js.map b/dist/console,ember/raven.min.js.map index 112f6b2a5a00..935440a7f613 100644 --- a/dist/console,ember/raven.min.js.map +++ b/dist/console,ember/raven.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","consolePlugin","console","pluginOptions","logLevels","levels","push","callback","msg","data","captureMessage","level","pop","wrapConsoleMethod","wrapMethod","addPlugin","4","6","2","emberPlugin","Ember","_oldOnError","onerror","error","captureException","RSVP","on","reason","extra","context","3","RavenConfigError","message","name","prototype","constructor","utils","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","safeJoin","logger","Function","apply","7","5","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","sanitizeKeys","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isErrorEvent","isDOMError","isDOMException","isError","isObject","isPlainObject","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","sanitize","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","config","dsn","options","_logDebug","globalOptions","key","value","setDSN","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","toString","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","substr","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","func","undefined","wrap","_before","wrapped","deep","_ignoreNextOnError","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","T","event","unhandledPromiseRejection","B","_promiseRejectionHandler","bind","addEventListener","P","removeEventListener","ex","trimHeadFrames","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","U","currentOptions","exKeys","Object","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","setDataCallback","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","L","setTimeout","$","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","_","evtName","_keypressTimeout","target","category","ba","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","ca","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","C","_originalFunctionToString","Q","D","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","type","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","E","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","R","builtin","S","F","installer","concat","G","str","m","exec","allowSecretKey","J","port","A","V","stackInfo","_triggerEvent","_processException","lineno","X","frame","_normalizeFrame","in_app","ga","stackInfoUrl","normalized","filename","line","colno","column","function","fa","prefixedMessage","exception","values","culprit","ha","request","Referer","breadcrumbs","_trimBreadcrumbs","ia","urlProp","urlProps","ja","httpData","userAgent","User-Agent","referrer","y","_backoffDuration","_backoffStart","ma","na","current","last","oa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Y","baseData","project","platform","_getHttpData","serverName","server_name","_sanitizeData","forEach","random","_sendProcessedPayload","pa","ra","qa","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","sa","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","open","setRequestHeader","send","ta","hash","evaluated","z","Z","setUser","setReleaseContext","10","8","9","RavenConstructor","_Raven","noConflict","Client","what","supportsErrorEvent","ErrorEvent","supportsDOMError","DOMError","supportsDOMException","DOMException","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","wrappedCallback","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","sanitizeMask","safeInput","o_O","getLocationHref","getLocationOrigin","origin","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","responseText","sourceMaps","sourceMapAddress","charAt","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","string","raw"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file +{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","consolePlugin","console","pluginOptions","logLevels","levels","push","callback","msg","data","captureMessage","level","pop","wrapConsoleMethod","wrapMethod","addPlugin","4","6","2","emberPlugin","Ember","_oldOnError","onerror","error","captureException","RSVP","on","reason","extra","context","3","RavenConfigError","message","name","prototype","constructor","utils","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","safeJoin","logger","Function","apply","7","5","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","sanitizeKeys","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isErrorEvent","isDOMError","isDOMException","isError","isObject","isPlainObject","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","sanitize","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","config","dsn","options","_logDebug","globalOptions","key","value","setDSN","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","toString","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","substr","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","func","undefined","wrap","_before","wrapped","deep","_ignoreNextOnError","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","T","event","unhandledPromiseRejection","B","_promiseRejectionHandler","bind","addEventListener","P","removeEventListener","ex","trimHeadFrames","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","U","currentOptions","exKeys","Object","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","setDataCallback","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","L","setTimeout","$","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","_","evtName","_keypressTimeout","target","category","ba","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","ca","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","C","_originalFunctionToString","Q","D","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","type","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","E","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","R","builtin","S","F","installer","concat","G","str","m","exec","allowSecretKey","J","port","A","V","stackInfo","_triggerEvent","_processException","lineno","X","frame","_normalizeFrame","in_app","ga","stackInfoUrl","normalized","filename","line","colno","column","function","fa","prefixedMessage","exception","values","culprit","ha","request","Referer","breadcrumbs","_trimBreadcrumbs","ia","urlProp","urlProps","ja","httpData","userAgent","User-Agent","referrer","y","_backoffDuration","_backoffStart","ma","na","current","last","oa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Y","baseData","project","platform","_getHttpData","serverName","server_name","_sanitizeData","forEach","random","_sendProcessedPayload","pa","ra","qa","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","sa","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","open","setRequestHeader","send","ta","hash","evaluated","z","Z","setUser","setReleaseContext","10","8","9","RavenConstructor","_Raven","noConflict","Client","what","supportsErrorEvent","ErrorEvent","supportsDOMError","DOMError","supportsDOMException","DOMException","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","wrappedCallback","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","sanitizeMask","safeInput","o_O","getLocationHref","getLocationOrigin","origin","hostname","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","responseText","sourceMaps","sourceMapAddress","charAt","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","string","raw"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file diff --git a/dist/console,require,vue/raven.js b/dist/console,require,vue/raven.js index 0213037be77e..f2bae8a94abf 100644 --- a/dist/console,require,vue/raven.js +++ b/dist/console,require,vue/raven.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.25.0 (80dffad) | github.com/getsentry/raven-js */ +/*! Raven.js 3.25.1 (b6f3c7a) | github.com/getsentry/raven-js */ /* * Includes TraceKit @@ -309,7 +309,7 @@ Raven.prototype = { // webpack (using a build step causes webpack #1617). Grunt verifies that // this value matches package.json during build. // See: https://github.com/getsentry/raven-js/issues/465 - VERSION: '3.25.0', + VERSION: '3.25.1', debug: false, @@ -1618,8 +1618,8 @@ Raven.prototype = { var hasPushAndReplaceState = !isChromePackagedApp && _window.history && - history.pushState && - history.replaceState; + _window.history.pushState && + _window.history.replaceState; if (autoBreadcrumbs.location && hasPushAndReplaceState) { // TODO: remove onpopstate handler on uninstall() var oldOnPopState = _window.onpopstate; @@ -1648,8 +1648,8 @@ Raven.prototype = { }; }; - fill(history, 'pushState', historyReplacementFunction, wrappedBuiltIns); - fill(history, 'replaceState', historyReplacementFunction, wrappedBuiltIns); + fill(_window.history, 'pushState', historyReplacementFunction, wrappedBuiltIns); + fill(_window.history, 'replaceState', historyReplacementFunction, wrappedBuiltIns); } if (autoBreadcrumbs.console && 'console' in _window && console.log) { @@ -1939,7 +1939,7 @@ Raven.prototype = { if (this._hasNavigator && _navigator.userAgent) { httpData.headers = { - 'User-Agent': navigator.userAgent + 'User-Agent': _navigator.userAgent }; } @@ -3114,6 +3114,16 @@ function getLocationHref() { function getLocationOrigin() { if (typeof document === 'undefined' || document.location == null) return ''; + + // Oh dear IE10... + if (!document.location.origin) { + document.location.origin = + document.location.protocol + + '//' + + document.location.hostname + + (document.location.port ? ':' + document.location.port : ''); + } + return document.location.origin; } diff --git a/dist/console,require,vue/raven.min.js b/dist/console,require,vue/raven.min.js index 5ea216be2253..60231818183c 100644 --- a/dist/console,require,vue/raven.min.js +++ b/dist/console,require,vue/raven.min.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.25.0 (80dffad) | github.com/getsentry/raven-js */ -!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.Raven=a()}}(function(){var a;return function b(a,c,d){function e(g,h){if(!c[g]){if(!a[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};a[g][0].call(k.exports,function(b){var c=a[g][1][b];return e(c?c:b)},k,k.exports,b,a,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;g":"anonymous component")+(a._isVue&&a.$options.__file?" at "+a.$options.__file:"")}function e(a,b){if(b=b||window.Vue,b&&b.config){var c=b.config.errorHandler;b.config.errorHandler=function(b,e,f){var g={};"[object Object]"===Object.prototype.toString.call(e)&&(g.componentName=d(e),g.propsData=e.$options.propsData),"undefined"!=typeof f&&(g.lifecycleHook=f),a.captureException(b,{extra:g}),"function"==typeof c&&c.call(this,b,e,f)}}}b.exports=e,a(7).addPlugin(b.exports)},{7:7}],4:[function(a,b,c){function d(a){this.name="RavenConfigError",this.message=a}d.prototype=new Error,d.prototype.constructor=d,b.exports=d},{}],5:[function(a,b,c){var d=a(8),e=function(a,b,c){var e=a[b],f=a;if(b in a){var g="warn"===b?"warning":b;a[b]=function(){var a=[].slice.call(arguments),h=d.safeJoin(a," "),i={level:g,logger:"console",extra:{arguments:a}};"assert"===b?a[0]===!1&&(h="Assertion failed: "+(d.safeJoin(a.slice(1)," ")||"console.assert"),i.extra.arguments=a.slice(1),c&&c(h,i)):c&&c(h,i),e&&Function.prototype.apply.call(e,f,a)}}};b.exports={wrapMethod:e}},{8:8}],6:[function(a,b,c){(function(c){function d(){return+new Date}function e(a,b){return s(b)?function(c){return b(c,a)}:b}function f(){this.a=!("object"!=typeof JSON||!JSON.stringify),this.b=!r(S),this.c=!r(T),this.d=null,this.e=null,this.f=null,this.g=null,this.h=null,this.i=null,this.j={},this.k={release:R.SENTRY_RELEASE&&R.SENTRY_RELEASE.id,logger:"javascript",ignoreErrors:[],ignoreUrls:[],whitelistUrls:[],includePaths:[],headers:null,collectWindowErrors:!0,captureUnhandledRejections:!0,maxMessageLength:0,maxUrlLength:250,stackTraceLimit:50,autoBreadcrumbs:!0,instrument:!0,sampleRate:1,sanitizeKeys:[]},this.l={method:"POST",keepalive:!0,referrerPolicy:K()?"origin":""},this.m=0,this.n=!1,this.o=Error.stackTraceLimit,this.p=R.console||{},this.q={},this.r=[],this.s=d(),this.t=[],this.u=[],this.v=null,this.w=R.location,this.x=this.w&&this.w.href,this.y();for(var a in this.p)this.q[a]=this.p[a]}var g=a(9),h=a(10),i=a(11),j=a(4),k=a(8),l=k.isErrorEvent,m=k.isDOMError,n=k.isDOMException,o=k.isError,p=k.isObject,q=k.isPlainObject,r=k.isUndefined,s=k.isFunction,t=k.isString,u=k.isArray,v=k.isEmptyObject,w=k.each,x=k.objectMerge,y=k.truncate,z=k.objectFrozen,A=k.hasKey,B=k.joinRegExp,C=k.urlencode,D=k.uuid4,E=k.htmlTreeAsString,F=k.isSameException,G=k.isSameStacktrace,H=k.parseUrl,I=k.fill,J=k.supportsFetch,K=k.supportsReferrerPolicy,L=k.serializeKeysForMessage,M=k.serializeException,N=k.sanitize,O=a(5).wrapMethod,P="source protocol user pass host port path".split(" "),Q=/^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/,R="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},S=R.document,T=R.navigator;f.prototype={VERSION:"3.25.0",debug:!1,TraceKit:g,config:function(a,b){var c=this;if(c.g)return this.z("error","Error: Raven has already been configured"),c;if(!a)return c;var d=c.k;b&&w(b,function(a,b){"tags"===a||"extra"===a||"user"===a?c.j[a]=b:d[a]=b}),c.setDSN(a),d.ignoreErrors.push(/^Script error\.?$/),d.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/),d.ignoreErrors=B(d.ignoreErrors),d.ignoreUrls=!!d.ignoreUrls.length&&B(d.ignoreUrls),d.whitelistUrls=!!d.whitelistUrls.length&&B(d.whitelistUrls),d.includePaths=B(d.includePaths),d.maxBreadcrumbs=Math.max(0,Math.min(d.maxBreadcrumbs||100,100));var e={xhr:!0,console:!0,dom:!0,location:!0,sentry:!0},f=d.autoBreadcrumbs;"[object Object]"==={}.toString.call(f)?f=x(e,f):f!==!1&&(f=e),d.autoBreadcrumbs=f;var h={tryCatch:!0},i=d.instrument;return"[object Object]"==={}.toString.call(i)?i=x(h,i):i!==!1&&(i=h),d.instrument=i,g.collectWindowErrors=!!d.collectWindowErrors,c},install:function(){var a=this;return a.isSetup()&&!a.n&&(g.report.subscribe(function(){a.A.apply(a,arguments)}),a.k.captureUnhandledRejections&&a.B(),a.C(),a.k.instrument&&a.k.instrument.tryCatch&&a.D(),a.k.autoBreadcrumbs&&a.E(),a.F(),a.n=!0),Error.stackTraceLimit=a.k.stackTraceLimit,this},setDSN:function(a){var b=this,c=b.G(a),d=c.path.lastIndexOf("/"),e=c.path.substr(1,d);b.H=a,b.h=c.user,b.I=c.pass&&c.pass.substr(1),b.i=c.path.substr(d+1),b.g=b.J(c),b.K=b.g+"/"+e+"api/"+b.i+"/store/",this.y()},context:function(a,b,c){return s(a)&&(c=b||[],b=a,a=void 0),this.wrap(a,b).apply(this,c)},wrap:function(a,b,c){function d(){var d=[],f=arguments.length,g=!a||a&&a.deep!==!1;for(c&&s(c)&&c.apply(this,arguments);f--;)d[f]=g?e.wrap(a,arguments[f]):arguments[f];try{return b.apply(this,d)}catch(h){throw e.L(),e.captureException(h,a),h}}var e=this;if(r(b)&&!s(a))return a;if(s(a)&&(b=a,a=void 0),!s(b))return b;try{if(b.M)return b;if(b.N)return b.N}catch(f){return b}for(var g in b)A(b,g)&&(d[g]=b[g]);return d.prototype=b.prototype,b.N=d,d.M=!0,d.O=b,d},uninstall:function(){return g.report.uninstall(),this.P(),this.Q(),this.R(),this.S(),Error.stackTraceLimit=this.o,this.n=!1,this},T:function(a){this.z("debug","Raven caught unhandled promise rejection:",a),this.captureException(a.reason,{extra:{unhandledPromiseRejection:!0}})},B:function(){return this.T=this.T.bind(this),R.addEventListener&&R.addEventListener("unhandledrejection",this.T),this},P:function(){return R.removeEventListener&&R.removeEventListener("unhandledrejection",this.T),this},captureException:function(a,b){if(b=x({trimHeadFrames:0},b?b:{}),l(a)&&a.error)a=a.error;else{if(m(a)||n(a)){var c=a.name||(m(a)?"DOMError":"DOMException"),d=a.message?c+": "+a.message:c;return this.captureMessage(d,x(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}))}if(o(a))a=a;else{if(!q(a))return this.captureMessage(a,x(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}));b=this.U(b,a),a=new Error(b.message)}}this.d=a;try{var e=g.computeStackTrace(a);this.V(e,b)}catch(f){if(a!==f)throw f}return this},U:function(a,b){var c=Object.keys(b).sort(),d=x(a,{message:"Non-Error exception captured with keys: "+L(c),fingerprint:[i(c)],extra:a.extra||{}});return d.extra.W=M(b),d},captureMessage:function(a,b){if(!this.k.ignoreErrors.test||!this.k.ignoreErrors.test(a)){b=b||{},a+="";var c,d=x({message:a},b);try{throw new Error(a)}catch(e){c=e}c.name=null;var f=g.computeStackTrace(c),h=u(f.stack)&&f.stack[1];h&&"Raven.captureException"===h.func&&(h=f.stack[2]);var i=h&&h.url||"";if((!this.k.ignoreUrls.test||!this.k.ignoreUrls.test(i))&&(!this.k.whitelistUrls.test||this.k.whitelistUrls.test(i))){if(this.k.stacktrace||b&&b.stacktrace){d.fingerprint=null==d.fingerprint?a:d.fingerprint,b=x({trimHeadFrames:0},b),b.trimHeadFrames+=1;var j=this.X(f,b);d.stacktrace={frames:j.reverse()}}return d.fingerprint&&(d.fingerprint=u(d.fingerprint)?d.fingerprint:[d.fingerprint]),this.Y(d),this}}},captureBreadcrumb:function(a){var b=x({timestamp:d()/1e3},a);if(s(this.k.breadcrumbCallback)){var c=this.k.breadcrumbCallback(b);if(p(c)&&!v(c))b=c;else if(c===!1)return this}return this.u.push(b),this.u.length>this.k.maxBreadcrumbs&&this.u.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.r.push([a,b]),this.n&&this.F(),this},setUserContext:function(a){return this.j.user=a,this},setExtraContext:function(a){return this.Z("extra",a),this},setTagsContext:function(a){return this.Z("tags",a),this},clearContext:function(){return this.j={},this},getContext:function(){return JSON.parse(h(this.j))},setEnvironment:function(a){return this.k.environment=a,this},setRelease:function(a){return this.k.release=a,this},setDataCallback:function(a){var b=this.k.dataCallback;return this.k.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.k.breadcrumbCallback;return this.k.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.k.shouldSendCallback;return this.k.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.k.transport=a,this},lastException:function(){return this.d},lastEventId:function(){return this.f},isSetup:function(){return!!this.a&&(!!this.g||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.z("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=R.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(S){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.H;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.j.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.J(this.G(c)),h=S.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(S.head||S.body).appendChild(h)}},L:function(){var a=this;this.m+=1,setTimeout(function(){a.m-=1})},$:function(a,b){var c,d;if(this.b){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),S.createEvent?(c=S.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=S.createEventObject(),c.eventType=a);for(d in b)A(b,d)&&(c[d]=b[d]);if(S.createEvent)S.dispatchEvent(c);else try{S.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},_:function(a){var b=this;return function(c){if(b.aa=null,b.v!==c){b.v=c;var d;try{d=E(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ba:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.aa;g||a._("input")(c),clearTimeout(g),a.aa=setTimeout(function(){a.aa=null},b)}}},ca:function(a,b){var c=H(this.w.href),d=H(b),e=H(a);this.x=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},C:function(){var a=this;a.da=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.M?a.da.apply(this.O,arguments):a.da.apply(this,arguments)}},Q:function(){this.da&&(Function.prototype.toString=this.da)},D:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.ca(b.x,c+""),a.apply(this,arguments)}};I(history,"pushState",j,d),I(history,"replaceState",j,d)}if(c.console&&"console"in R&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};w(["debug","info","warn","error","log"],function(a,b){O(console,b,k)})}},R:function(){for(var a;this.t.length;){a=this.t.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},S:function(){for(var a in this.q)this.p[a]=this.q[a]},F:function(){var a=this;w(this.r,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},G:function(a){var b=Q.exec(a),c={},d=7;try{for(;d--;)c[P[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.k.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},J:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},A:function(){this.m||this.V.apply(this,arguments)},V:function(a,b){var c=this.X(a,b);this.$("handle",{stackInfo:a,options:b}),this.fa(a.name,a.message,a.url,a.lineno,c,b)},X:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(w(a.stack,function(b,e){var f=c.ga(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.u,0)}),this.j.user&&(a.user=this.j.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),a=this.pa(a),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||v(a[b]))&&delete a[b]}),s(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!v(a)&&(!s(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.ma()?void this.z("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function F(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&l(b))for(c=b.split(/\s+/),f=0;fc?Q(a,b-1):d}function R(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?X:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function S(a,b){function c(a){return m(a)?a.map(function(a){return c(a)}):k(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!m(b)||m(b)&&0===b.length)return a;var d,e=A(b),f="********";try{d=JSON.parse(T(a))}catch(g){return a}return c(d)}var T=a(10),U="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},V=3,W=51200,X=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isDOMError:g,isDOMException:h,isUndefined:i,isFunction:j,isPlainObject:k,isString:l,isArray:m,isEmptyObject:n,supportsErrorEvent:o,supportsDOMError:p,supportsDOMException:q,supportsFetch:r,supportsReferrerPolicy:s,supportsPromiseRejectionEvent:t,wrappedCallback:u,each:v,objectMerge:w,truncate:y,objectFrozen:x,hasKey:z,joinRegExp:A,urlencode:B,uuid4:D,htmlTreeAsString:E,htmlElementAsString:F,isSameException:I,isSameStacktrace:J,parseUrl:C,fill:K,safeJoin:L,serializeException:Q,serializeKeysForMessage:R,sanitize:S}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{10:10}],9:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}function e(){return"undefined"==typeof document||null==document.location?"":document.location.origin}var f=a(8),g={collectWindowErrors:!0,debug:!1},h="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},i=[].slice,j="?",k=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;g.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function e(a,b){var c=null;if(!b||g.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(i.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,h,i){var l=null,m=f.isErrorEvent(i)?i.error:i,n=f.isErrorEvent(a)?a.message:a;if(v)g.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&f.isError(m))l=g.computeStackTrace(m),e(l,!0);else{var p,r={url:b,line:c,column:h},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(k);p&&(s=p[1],n=p[2])}r.func=j,l={name:s,message:n,url:d(),stack:[r]},e(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=h.onerror,h.onerror=l,r=!0)}function n(){r&&(h.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,e.apply(null,[a,!1].concat(b))}function p(a,b){var c=i.call(arguments,1);if(v){if(u===a)return;o()}var d=g.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),g.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,f,g=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,h=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,i=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,k=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,l=/\((\S*)(?::(\d+))(?::(\d+))\)/,m=a.stack.split("\n"),n=[],o=(/^(.*) is undefined$/.exec(a.message),0),p=m.length;o eval")>-1;r&&(b=k.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==o||c[5]||"undefined"==typeof a.columnNumber||(n[0].column=a.columnNumber+1),f={url:c[3],func:c[1]||j,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}if(!f.func&&f.line&&(f.func=j),f.url&&"blob:"===f.url.substr(0,5)){var s=new XMLHttpRequest;if(s.open("GET",f.url,!1),s.send(null),200===s.status){var t=s.responseText||"";t=t.slice(-300);var u=t.match(/\/\/# sourceMappingURL=(.*)$/);if(u){var v=u[1];"~"===v.charAt(0)&&(v=e()+v.slice(1)),f.url=v.slice(0,-4)}}}n.push(f)}return n.length?{name:a.name,message:a.message,url:d(),stack:n}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=j),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line, -!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,e){for(var h,i,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==f&&o!==g.report){if(i={url:null,func:j,line:null,column:null},o.name?i.func=o.name:(h=k.exec(o.toString()))&&(i.func=h[1]),"undefined"==typeof i.func)try{i.func=h.input.substring(0,h.input.indexOf("{"))}catch(p){}m[""+o]?n=!0:m[""+o]=!0,l.push(i)}e&&l.splice(0,e);var q={name:a.name,message:a.message,url:d(),stack:l};return b(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),q}function f(b,e){var f=null;e=null==e?0:+e;try{if(f=a(b))return f}catch(h){if(g.debug)throw h}try{if(f=c(b,e+1))return f}catch(h){if(g.debug)throw h}return{name:b.name,message:b.message,url:d()}}return f.augmentStackTraceWithInitialElement=b,f.computeStackTraceFromStackProp=a,f}(),b.exports=g}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{8:8}],10:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}],11:[function(a,b,c){function d(a,b){var c=(65535&a)+(65535&b),d=(a>>16)+(b>>16)+(c>>16);return d<<16|65535&c}function e(a,b){return a<>>32-b}function f(a,b,c,f,g,h){return d(e(d(d(b,a),d(f,h)),g),c)}function g(a,b,c,d,e,g,h){return f(b&c|~b&d,a,b,e,g,h)}function h(a,b,c,d,e,g,h){return f(b&d|c&~d,a,b,e,g,h)}function i(a,b,c,d,e,g,h){return f(b^c^d,a,b,e,g,h)}function j(a,b,c,d,e,g,h){return f(c^(b|~d),a,b,e,g,h)}function k(a,b){a[b>>5]|=128<>>9<<4)+14]=b;var c,e,f,k,l,m=1732584193,n=-271733879,o=-1732584194,p=271733878;for(c=0;c>5]>>>b%32&255);return c}function m(a){var b,c=[];for(c[(a.length>>2)-1]=void 0,b=0;b>5]|=(255&a.charCodeAt(b/8))<16&&(e=k(e,8*a.length)),c=0;c<16;c+=1)f[c]=909522486^e[c],g[c]=1549556828^e[c];return d=k(f.concat(m(b)),512+8*b.length),l(k(g.concat(d),640))}function p(a){var b,c,d="0123456789abcdef",e="";for(c=0;c>>4&15)+d.charAt(15&b);return e}function q(a){return unescape(encodeURIComponent(a))}function r(a){return n(q(a))}function s(a){return p(r(a))}function t(a,b){return o(q(a),q(b))}function u(a,b){return p(t(a,b))}function v(a,b,c){return b?c?t(b,a):u(b,a):c?r(a):s(a)}b.exports=v},{}]},{},[7,1,2,3])(7)}); +/*! Raven.js 3.25.1 (b6f3c7a) | github.com/getsentry/raven-js */ +!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.Raven=a()}}(function(){var a;return function b(a,c,d){function e(g,h){if(!c[g]){if(!a[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};a[g][0].call(k.exports,function(b){var c=a[g][1][b];return e(c?c:b)},k,k.exports,b,a,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;g":"anonymous component")+(a._isVue&&a.$options.__file?" at "+a.$options.__file:"")}function e(a,b){if(b=b||window.Vue,b&&b.config){var c=b.config.errorHandler;b.config.errorHandler=function(b,e,f){var g={};"[object Object]"===Object.prototype.toString.call(e)&&(g.componentName=d(e),g.propsData=e.$options.propsData),"undefined"!=typeof f&&(g.lifecycleHook=f),a.captureException(b,{extra:g}),"function"==typeof c&&c.call(this,b,e,f)}}}b.exports=e,a(7).addPlugin(b.exports)},{7:7}],4:[function(a,b,c){function d(a){this.name="RavenConfigError",this.message=a}d.prototype=new Error,d.prototype.constructor=d,b.exports=d},{}],5:[function(a,b,c){var d=a(8),e=function(a,b,c){var e=a[b],f=a;if(b in a){var g="warn"===b?"warning":b;a[b]=function(){var a=[].slice.call(arguments),h=d.safeJoin(a," "),i={level:g,logger:"console",extra:{arguments:a}};"assert"===b?a[0]===!1&&(h="Assertion failed: "+(d.safeJoin(a.slice(1)," ")||"console.assert"),i.extra.arguments=a.slice(1),c&&c(h,i)):c&&c(h,i),e&&Function.prototype.apply.call(e,f,a)}}};b.exports={wrapMethod:e}},{8:8}],6:[function(a,b,c){(function(c){function d(){return+new Date}function e(a,b){return s(b)?function(c){return b(c,a)}:b}function f(){this.a=!("object"!=typeof JSON||!JSON.stringify),this.b=!r(S),this.c=!r(T),this.d=null,this.e=null,this.f=null,this.g=null,this.h=null,this.i=null,this.j={},this.k={release:R.SENTRY_RELEASE&&R.SENTRY_RELEASE.id,logger:"javascript",ignoreErrors:[],ignoreUrls:[],whitelistUrls:[],includePaths:[],headers:null,collectWindowErrors:!0,captureUnhandledRejections:!0,maxMessageLength:0,maxUrlLength:250,stackTraceLimit:50,autoBreadcrumbs:!0,instrument:!0,sampleRate:1,sanitizeKeys:[]},this.l={method:"POST",keepalive:!0,referrerPolicy:K()?"origin":""},this.m=0,this.n=!1,this.o=Error.stackTraceLimit,this.p=R.console||{},this.q={},this.r=[],this.s=d(),this.t=[],this.u=[],this.v=null,this.w=R.location,this.x=this.w&&this.w.href,this.y();for(var a in this.p)this.q[a]=this.p[a]}var g=a(9),h=a(10),i=a(11),j=a(4),k=a(8),l=k.isErrorEvent,m=k.isDOMError,n=k.isDOMException,o=k.isError,p=k.isObject,q=k.isPlainObject,r=k.isUndefined,s=k.isFunction,t=k.isString,u=k.isArray,v=k.isEmptyObject,w=k.each,x=k.objectMerge,y=k.truncate,z=k.objectFrozen,A=k.hasKey,B=k.joinRegExp,C=k.urlencode,D=k.uuid4,E=k.htmlTreeAsString,F=k.isSameException,G=k.isSameStacktrace,H=k.parseUrl,I=k.fill,J=k.supportsFetch,K=k.supportsReferrerPolicy,L=k.serializeKeysForMessage,M=k.serializeException,N=k.sanitize,O=a(5).wrapMethod,P="source protocol user pass host port path".split(" "),Q=/^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/,R="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},S=R.document,T=R.navigator;f.prototype={VERSION:"3.25.1",debug:!1,TraceKit:g,config:function(a,b){var c=this;if(c.g)return this.z("error","Error: Raven has already been configured"),c;if(!a)return c;var d=c.k;b&&w(b,function(a,b){"tags"===a||"extra"===a||"user"===a?c.j[a]=b:d[a]=b}),c.setDSN(a),d.ignoreErrors.push(/^Script error\.?$/),d.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/),d.ignoreErrors=B(d.ignoreErrors),d.ignoreUrls=!!d.ignoreUrls.length&&B(d.ignoreUrls),d.whitelistUrls=!!d.whitelistUrls.length&&B(d.whitelistUrls),d.includePaths=B(d.includePaths),d.maxBreadcrumbs=Math.max(0,Math.min(d.maxBreadcrumbs||100,100));var e={xhr:!0,console:!0,dom:!0,location:!0,sentry:!0},f=d.autoBreadcrumbs;"[object Object]"==={}.toString.call(f)?f=x(e,f):f!==!1&&(f=e),d.autoBreadcrumbs=f;var h={tryCatch:!0},i=d.instrument;return"[object Object]"==={}.toString.call(i)?i=x(h,i):i!==!1&&(i=h),d.instrument=i,g.collectWindowErrors=!!d.collectWindowErrors,c},install:function(){var a=this;return a.isSetup()&&!a.n&&(g.report.subscribe(function(){a.A.apply(a,arguments)}),a.k.captureUnhandledRejections&&a.B(),a.C(),a.k.instrument&&a.k.instrument.tryCatch&&a.D(),a.k.autoBreadcrumbs&&a.E(),a.F(),a.n=!0),Error.stackTraceLimit=a.k.stackTraceLimit,this},setDSN:function(a){var b=this,c=b.G(a),d=c.path.lastIndexOf("/"),e=c.path.substr(1,d);b.H=a,b.h=c.user,b.I=c.pass&&c.pass.substr(1),b.i=c.path.substr(d+1),b.g=b.J(c),b.K=b.g+"/"+e+"api/"+b.i+"/store/",this.y()},context:function(a,b,c){return s(a)&&(c=b||[],b=a,a=void 0),this.wrap(a,b).apply(this,c)},wrap:function(a,b,c){function d(){var d=[],f=arguments.length,g=!a||a&&a.deep!==!1;for(c&&s(c)&&c.apply(this,arguments);f--;)d[f]=g?e.wrap(a,arguments[f]):arguments[f];try{return b.apply(this,d)}catch(h){throw e.L(),e.captureException(h,a),h}}var e=this;if(r(b)&&!s(a))return a;if(s(a)&&(b=a,a=void 0),!s(b))return b;try{if(b.M)return b;if(b.N)return b.N}catch(f){return b}for(var g in b)A(b,g)&&(d[g]=b[g]);return d.prototype=b.prototype,b.N=d,d.M=!0,d.O=b,d},uninstall:function(){return g.report.uninstall(),this.P(),this.Q(),this.R(),this.S(),Error.stackTraceLimit=this.o,this.n=!1,this},T:function(a){this.z("debug","Raven caught unhandled promise rejection:",a),this.captureException(a.reason,{extra:{unhandledPromiseRejection:!0}})},B:function(){return this.T=this.T.bind(this),R.addEventListener&&R.addEventListener("unhandledrejection",this.T),this},P:function(){return R.removeEventListener&&R.removeEventListener("unhandledrejection",this.T),this},captureException:function(a,b){if(b=x({trimHeadFrames:0},b?b:{}),l(a)&&a.error)a=a.error;else{if(m(a)||n(a)){var c=a.name||(m(a)?"DOMError":"DOMException"),d=a.message?c+": "+a.message:c;return this.captureMessage(d,x(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}))}if(o(a))a=a;else{if(!q(a))return this.captureMessage(a,x(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}));b=this.U(b,a),a=new Error(b.message)}}this.d=a;try{var e=g.computeStackTrace(a);this.V(e,b)}catch(f){if(a!==f)throw f}return this},U:function(a,b){var c=Object.keys(b).sort(),d=x(a,{message:"Non-Error exception captured with keys: "+L(c),fingerprint:[i(c)],extra:a.extra||{}});return d.extra.W=M(b),d},captureMessage:function(a,b){if(!this.k.ignoreErrors.test||!this.k.ignoreErrors.test(a)){b=b||{},a+="";var c,d=x({message:a},b);try{throw new Error(a)}catch(e){c=e}c.name=null;var f=g.computeStackTrace(c),h=u(f.stack)&&f.stack[1];h&&"Raven.captureException"===h.func&&(h=f.stack[2]);var i=h&&h.url||"";if((!this.k.ignoreUrls.test||!this.k.ignoreUrls.test(i))&&(!this.k.whitelistUrls.test||this.k.whitelistUrls.test(i))){if(this.k.stacktrace||b&&b.stacktrace){d.fingerprint=null==d.fingerprint?a:d.fingerprint,b=x({trimHeadFrames:0},b),b.trimHeadFrames+=1;var j=this.X(f,b);d.stacktrace={frames:j.reverse()}}return d.fingerprint&&(d.fingerprint=u(d.fingerprint)?d.fingerprint:[d.fingerprint]),this.Y(d),this}}},captureBreadcrumb:function(a){var b=x({timestamp:d()/1e3},a);if(s(this.k.breadcrumbCallback)){var c=this.k.breadcrumbCallback(b);if(p(c)&&!v(c))b=c;else if(c===!1)return this}return this.u.push(b),this.u.length>this.k.maxBreadcrumbs&&this.u.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.r.push([a,b]),this.n&&this.F(),this},setUserContext:function(a){return this.j.user=a,this},setExtraContext:function(a){return this.Z("extra",a),this},setTagsContext:function(a){return this.Z("tags",a),this},clearContext:function(){return this.j={},this},getContext:function(){return JSON.parse(h(this.j))},setEnvironment:function(a){return this.k.environment=a,this},setRelease:function(a){return this.k.release=a,this},setDataCallback:function(a){var b=this.k.dataCallback;return this.k.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.k.breadcrumbCallback;return this.k.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.k.shouldSendCallback;return this.k.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.k.transport=a,this},lastException:function(){return this.d},lastEventId:function(){return this.f},isSetup:function(){return!!this.a&&(!!this.g||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.z("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=R.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(S){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.H;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.j.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.J(this.G(c)),h=S.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(S.head||S.body).appendChild(h)}},L:function(){var a=this;this.m+=1,setTimeout(function(){a.m-=1})},$:function(a,b){var c,d;if(this.b){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),S.createEvent?(c=S.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=S.createEventObject(),c.eventType=a);for(d in b)A(b,d)&&(c[d]=b[d]);if(S.createEvent)S.dispatchEvent(c);else try{S.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},_:function(a){var b=this;return function(c){if(b.aa=null,b.v!==c){b.v=c;var d;try{d=E(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ba:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.aa;g||a._("input")(c),clearTimeout(g),a.aa=setTimeout(function(){a.aa=null},b)}}},ca:function(a,b){var c=H(this.w.href),d=H(b),e=H(a);this.x=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},C:function(){var a=this;a.da=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.M?a.da.apply(this.O,arguments):a.da.apply(this,arguments)}},Q:function(){this.da&&(Function.prototype.toString=this.da)},D:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.ca(b.x,c+""),a.apply(this,arguments)}};I(R.history,"pushState",j,d),I(R.history,"replaceState",j,d)}if(c.console&&"console"in R&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};w(["debug","info","warn","error","log"],function(a,b){O(console,b,k)})}},R:function(){for(var a;this.t.length;){a=this.t.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},S:function(){for(var a in this.q)this.p[a]=this.q[a]},F:function(){var a=this;w(this.r,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},G:function(a){var b=Q.exec(a),c={},d=7;try{for(;d--;)c[P[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.k.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},J:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},A:function(){this.m||this.V.apply(this,arguments)},V:function(a,b){var c=this.X(a,b);this.$("handle",{stackInfo:a,options:b}),this.fa(a.name,a.message,a.url,a.lineno,c,b)},X:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(w(a.stack,function(b,e){var f=c.ga(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.u,0)}),this.j.user&&(a.user=this.j.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),a=this.pa(a),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||v(a[b]))&&delete a[b]}),s(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!v(a)&&(!s(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.ma()?void this.z("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function F(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&l(b))for(c=b.split(/\s+/),f=0;fc?Q(a,b-1):d}function R(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?X:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function S(a,b){function c(a){return m(a)?a.map(function(a){return c(a)}):k(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!m(b)||m(b)&&0===b.length)return a;var d,e=A(b),f="********";try{d=JSON.parse(T(a))}catch(g){return a}return c(d)}var T=a(10),U="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},V=3,W=51200,X=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isDOMError:g,isDOMException:h,isUndefined:i,isFunction:j,isPlainObject:k,isString:l,isArray:m,isEmptyObject:n,supportsErrorEvent:o,supportsDOMError:p,supportsDOMException:q,supportsFetch:r,supportsReferrerPolicy:s,supportsPromiseRejectionEvent:t,wrappedCallback:u,each:v,objectMerge:w,truncate:y,objectFrozen:x,hasKey:z,joinRegExp:A,urlencode:B,uuid4:D,htmlTreeAsString:E,htmlElementAsString:F,isSameException:I,isSameStacktrace:J,parseUrl:C,fill:K,safeJoin:L,serializeException:Q,serializeKeysForMessage:R,sanitize:S}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{10:10}],9:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}function e(){return"undefined"==typeof document||null==document.location?"":(document.location.origin||(document.location.origin=document.location.protocol+"//"+document.location.hostname+(document.location.port?":"+document.location.port:"")),document.location.origin)}var f=a(8),g={collectWindowErrors:!0,debug:!1},h="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},i=[].slice,j="?",k=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;g.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function e(a,b){var c=null;if(!b||g.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(i.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,h,i){var l=null,m=f.isErrorEvent(i)?i.error:i,n=f.isErrorEvent(a)?a.message:a;if(v)g.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&f.isError(m))l=g.computeStackTrace(m),e(l,!0);else{var p,r={url:b,line:c,column:h},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(k);p&&(s=p[1],n=p[2])}r.func=j,l={name:s,message:n,url:d(),stack:[r]},e(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=h.onerror,h.onerror=l,r=!0)}function n(){r&&(h.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,e.apply(null,[a,!1].concat(b))}function p(a,b){var c=i.call(arguments,1);if(v){if(u===a)return;o()}var d=g.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),g.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,f,g=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,h=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,i=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,k=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,l=/\((\S*)(?::(\d+))(?::(\d+))\)/,m=a.stack.split("\n"),n=[],o=(/^(.*) is undefined$/.exec(a.message),0),p=m.length;o eval")>-1;r&&(b=k.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==o||c[5]||"undefined"==typeof a.columnNumber||(n[0].column=a.columnNumber+1),f={url:c[3],func:c[1]||j,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}if(!f.func&&f.line&&(f.func=j),f.url&&"blob:"===f.url.substr(0,5)){var s=new XMLHttpRequest;if(s.open("GET",f.url,!1),s.send(null),200===s.status){var t=s.responseText||"";t=t.slice(-300);var u=t.match(/\/\/# sourceMappingURL=(.*)$/);if(u){var v=u[1];"~"===v.charAt(0)&&(v=e()+v.slice(1)),f.url=v.slice(0,-4)}}}n.push(f)}return n.length?{name:a.name,message:a.message,url:d(),stack:n}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1, +e.func||(e.func=j),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,e){for(var h,i,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==f&&o!==g.report){if(i={url:null,func:j,line:null,column:null},o.name?i.func=o.name:(h=k.exec(o.toString()))&&(i.func=h[1]),"undefined"==typeof i.func)try{i.func=h.input.substring(0,h.input.indexOf("{"))}catch(p){}m[""+o]?n=!0:m[""+o]=!0,l.push(i)}e&&l.splice(0,e);var q={name:a.name,message:a.message,url:d(),stack:l};return b(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),q}function f(b,e){var f=null;e=null==e?0:+e;try{if(f=a(b))return f}catch(h){if(g.debug)throw h}try{if(f=c(b,e+1))return f}catch(h){if(g.debug)throw h}return{name:b.name,message:b.message,url:d()}}return f.augmentStackTraceWithInitialElement=b,f.computeStackTraceFromStackProp=a,f}(),b.exports=g}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{8:8}],10:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}],11:[function(a,b,c){function d(a,b){var c=(65535&a)+(65535&b),d=(a>>16)+(b>>16)+(c>>16);return d<<16|65535&c}function e(a,b){return a<>>32-b}function f(a,b,c,f,g,h){return d(e(d(d(b,a),d(f,h)),g),c)}function g(a,b,c,d,e,g,h){return f(b&c|~b&d,a,b,e,g,h)}function h(a,b,c,d,e,g,h){return f(b&d|c&~d,a,b,e,g,h)}function i(a,b,c,d,e,g,h){return f(b^c^d,a,b,e,g,h)}function j(a,b,c,d,e,g,h){return f(c^(b|~d),a,b,e,g,h)}function k(a,b){a[b>>5]|=128<>>9<<4)+14]=b;var c,e,f,k,l,m=1732584193,n=-271733879,o=-1732584194,p=271733878;for(c=0;c>5]>>>b%32&255);return c}function m(a){var b,c=[];for(c[(a.length>>2)-1]=void 0,b=0;b>5]|=(255&a.charCodeAt(b/8))<16&&(e=k(e,8*a.length)),c=0;c<16;c+=1)f[c]=909522486^e[c],g[c]=1549556828^e[c];return d=k(f.concat(m(b)),512+8*b.length),l(k(g.concat(d),640))}function p(a){var b,c,d="0123456789abcdef",e="";for(c=0;c>>4&15)+d.charAt(15&b);return e}function q(a){return unescape(encodeURIComponent(a))}function r(a){return n(q(a))}function s(a){return p(r(a))}function t(a,b){return o(q(a),q(b))}function u(a,b){return p(t(a,b))}function v(a,b,c){return b?c?t(b,a):u(b,a):c?r(a):s(a)}b.exports=v},{}]},{},[7,1,2,3])(7)}); //# sourceMappingURL=raven.min.js.map \ No newline at end of file diff --git a/dist/console,require,vue/raven.min.js.map b/dist/console,require,vue/raven.min.js.map index b22f8ec1c8dc..4c14b0e02c44 100644 --- a/dist/console,require,vue/raven.min.js.map +++ b/dist/console,require,vue/raven.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","consolePlugin","console","pluginOptions","logLevels","levels","push","callback","msg","data","captureMessage","level","pop","wrapConsoleMethod","wrapMethod","addPlugin","5","7","2","requirePlugin","wrap","deep","3","formatComponentName","vm","$root","name","_isVue","$options","_componentTag","__file","vuePlugin","Vue","config","_oldOnError","errorHandler","error","info","metaData","Object","prototype","toString","componentName","propsData","lifecycleHook","captureException","extra","4","RavenConfigError","message","constructor","utils","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","safeJoin","logger","Function","apply","8","6","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","sanitizeKeys","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isErrorEvent","isDOMError","isDOMException","isError","isObject","isPlainObject","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","sanitize","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","dsn","options","_logDebug","globalOptions","key","value","setDSN","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","substr","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","context","func","undefined","_before","wrapped","_ignoreNextOnError","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","T","event","reason","unhandledPromiseRejection","B","_promiseRejectionHandler","bind","addEventListener","P","removeEventListener","ex","trimHeadFrames","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","U","currentOptions","exKeys","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","setDataCallback","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","L","setTimeout","$","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","_","evtName","_keypressTimeout","target","category","ba","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","ca","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","C","_originalFunctionToString","Q","D","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","type","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","E","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","R","builtin","S","F","installer","concat","G","str","m","exec","allowSecretKey","J","port","A","V","stackInfo","_triggerEvent","_processException","lineno","X","frame","_normalizeFrame","in_app","ga","stackInfoUrl","normalized","filename","line","colno","column","function","fa","prefixedMessage","exception","values","culprit","ha","request","Referer","breadcrumbs","_trimBreadcrumbs","ia","urlProp","urlProps","ja","httpData","userAgent","User-Agent","referrer","y","_backoffDuration","_backoffStart","ma","na","current","last","oa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Y","baseData","project","platform","_getHttpData","serverName","server_name","_sanitizeData","forEach","random","_sendProcessedPayload","pa","ra","qa","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","sa","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","onerror","open","setRequestHeader","send","ta","hash","evaluated","z","Z","setUser","setReleaseContext","10","11","9","RavenConstructor","_Raven","noConflict","Client","what","supportsErrorEvent","ErrorEvent","supportsDOMError","DOMError","supportsDOMException","DOMException","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","wrappedCallback","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","sanitizeMask","safeInput","o_O","getLocationHref","getLocationOrigin","origin","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","responseText","sourceMaps","sourceMapAddress","charAt","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","string","raw"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file +{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","consolePlugin","console","pluginOptions","logLevels","levels","push","callback","msg","data","captureMessage","level","pop","wrapConsoleMethod","wrapMethod","addPlugin","5","7","2","requirePlugin","wrap","deep","3","formatComponentName","vm","$root","name","_isVue","$options","_componentTag","__file","vuePlugin","Vue","config","_oldOnError","errorHandler","error","info","metaData","Object","prototype","toString","componentName","propsData","lifecycleHook","captureException","extra","4","RavenConfigError","message","constructor","utils","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","safeJoin","logger","Function","apply","8","6","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","sanitizeKeys","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isErrorEvent","isDOMError","isDOMException","isError","isObject","isPlainObject","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","sanitize","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","dsn","options","_logDebug","globalOptions","key","value","setDSN","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","substr","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","context","func","undefined","_before","wrapped","_ignoreNextOnError","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","T","event","reason","unhandledPromiseRejection","B","_promiseRejectionHandler","bind","addEventListener","P","removeEventListener","ex","trimHeadFrames","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","U","currentOptions","exKeys","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","setDataCallback","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","L","setTimeout","$","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","_","evtName","_keypressTimeout","target","category","ba","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","ca","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","C","_originalFunctionToString","Q","D","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","type","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","E","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","R","builtin","S","F","installer","concat","G","str","m","exec","allowSecretKey","J","port","A","V","stackInfo","_triggerEvent","_processException","lineno","X","frame","_normalizeFrame","in_app","ga","stackInfoUrl","normalized","filename","line","colno","column","function","fa","prefixedMessage","exception","values","culprit","ha","request","Referer","breadcrumbs","_trimBreadcrumbs","ia","urlProp","urlProps","ja","httpData","userAgent","User-Agent","referrer","y","_backoffDuration","_backoffStart","ma","na","current","last","oa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Y","baseData","project","platform","_getHttpData","serverName","server_name","_sanitizeData","forEach","random","_sendProcessedPayload","pa","ra","qa","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","sa","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","onerror","open","setRequestHeader","send","ta","hash","evaluated","z","Z","setUser","setReleaseContext","10","11","9","RavenConstructor","_Raven","noConflict","Client","what","supportsErrorEvent","ErrorEvent","supportsDOMError","DOMError","supportsDOMException","DOMException","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","wrappedCallback","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","sanitizeMask","safeInput","o_O","getLocationHref","getLocationOrigin","origin","hostname","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","responseText","sourceMaps","sourceMapAddress","charAt","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","string","raw"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file diff --git a/dist/console,require/raven.js b/dist/console,require/raven.js index ae3194869ca9..45998aa7aa9a 100644 --- a/dist/console,require/raven.js +++ b/dist/console,require/raven.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.25.0 (80dffad) | github.com/getsentry/raven-js */ +/*! Raven.js 3.25.1 (b6f3c7a) | github.com/getsentry/raven-js */ /* * Includes TraceKit @@ -259,7 +259,7 @@ Raven.prototype = { // webpack (using a build step causes webpack #1617). Grunt verifies that // this value matches package.json during build. // See: https://github.com/getsentry/raven-js/issues/465 - VERSION: '3.25.0', + VERSION: '3.25.1', debug: false, @@ -1568,8 +1568,8 @@ Raven.prototype = { var hasPushAndReplaceState = !isChromePackagedApp && _window.history && - history.pushState && - history.replaceState; + _window.history.pushState && + _window.history.replaceState; if (autoBreadcrumbs.location && hasPushAndReplaceState) { // TODO: remove onpopstate handler on uninstall() var oldOnPopState = _window.onpopstate; @@ -1598,8 +1598,8 @@ Raven.prototype = { }; }; - fill(history, 'pushState', historyReplacementFunction, wrappedBuiltIns); - fill(history, 'replaceState', historyReplacementFunction, wrappedBuiltIns); + fill(_window.history, 'pushState', historyReplacementFunction, wrappedBuiltIns); + fill(_window.history, 'replaceState', historyReplacementFunction, wrappedBuiltIns); } if (autoBreadcrumbs.console && 'console' in _window && console.log) { @@ -1889,7 +1889,7 @@ Raven.prototype = { if (this._hasNavigator && _navigator.userAgent) { httpData.headers = { - 'User-Agent': navigator.userAgent + 'User-Agent': _navigator.userAgent }; } @@ -3064,6 +3064,16 @@ function getLocationHref() { function getLocationOrigin() { if (typeof document === 'undefined' || document.location == null) return ''; + + // Oh dear IE10... + if (!document.location.origin) { + document.location.origin = + document.location.protocol + + '//' + + document.location.hostname + + (document.location.port ? ':' + document.location.port : ''); + } + return document.location.origin; } diff --git a/dist/console,require/raven.min.js b/dist/console,require/raven.min.js index 79e9af2a36c0..b8abfb2d5294 100644 --- a/dist/console,require/raven.min.js +++ b/dist/console,require/raven.min.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.25.0 (80dffad) | github.com/getsentry/raven-js */ -!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.Raven=a()}}(function(){var a;return function b(a,c,d){function e(g,h){if(!c[g]){if(!a[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};a[g][0].call(k.exports,function(b){var c=a[g][1][b];return e(c?c:b)},k,k.exports,b,a,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;gthis.k.maxBreadcrumbs&&this.u.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.r.push([a,b]),this.n&&this.F(),this},setUserContext:function(a){return this.j.user=a,this},setExtraContext:function(a){return this.Z("extra",a),this},setTagsContext:function(a){return this.Z("tags",a),this},clearContext:function(){return this.j={},this},getContext:function(){return JSON.parse(h(this.j))},setEnvironment:function(a){return this.k.environment=a,this},setRelease:function(a){return this.k.release=a,this},setDataCallback:function(a){var b=this.k.dataCallback;return this.k.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.k.breadcrumbCallback;return this.k.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.k.shouldSendCallback;return this.k.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.k.transport=a,this},lastException:function(){return this.d},lastEventId:function(){return this.f},isSetup:function(){return!!this.a&&(!!this.g||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.z("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=R.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(S){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.H;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.j.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.J(this.G(c)),h=S.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(S.head||S.body).appendChild(h)}},L:function(){var a=this;this.m+=1,setTimeout(function(){a.m-=1})},$:function(a,b){var c,d;if(this.b){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),S.createEvent?(c=S.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=S.createEventObject(),c.eventType=a);for(d in b)A(b,d)&&(c[d]=b[d]);if(S.createEvent)S.dispatchEvent(c);else try{S.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},_:function(a){var b=this;return function(c){if(b.aa=null,b.v!==c){b.v=c;var d;try{d=E(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ba:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.aa;g||a._("input")(c),clearTimeout(g),a.aa=setTimeout(function(){a.aa=null},b)}}},ca:function(a,b){var c=H(this.w.href),d=H(b),e=H(a);this.x=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},C:function(){var a=this;a.da=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.M?a.da.apply(this.O,arguments):a.da.apply(this,arguments)}},Q:function(){this.da&&(Function.prototype.toString=this.da)},D:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.ca(b.x,c+""),a.apply(this,arguments)}};I(history,"pushState",j,d),I(history,"replaceState",j,d)}if(c.console&&"console"in R&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};w(["debug","info","warn","error","log"],function(a,b){O(console,b,k)})}},R:function(){for(var a;this.t.length;){a=this.t.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},S:function(){for(var a in this.q)this.p[a]=this.q[a]},F:function(){var a=this;w(this.r,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},G:function(a){var b=Q.exec(a),c={},d=7;try{for(;d--;)c[P[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.k.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},J:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},A:function(){this.m||this.V.apply(this,arguments)},V:function(a,b){var c=this.X(a,b);this.$("handle",{stackInfo:a,options:b}),this.fa(a.name,a.message,a.url,a.lineno,c,b)},X:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(w(a.stack,function(b,e){var f=c.ga(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.u,0)}),this.j.user&&(a.user=this.j.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),a=this.pa(a),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||v(a[b]))&&delete a[b]}),s(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!v(a)&&(!s(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.ma()?void this.z("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function F(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&l(b))for(c=b.split(/\s+/),f=0;fc?Q(a,b-1):d}function R(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?X:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function S(a,b){function c(a){return m(a)?a.map(function(a){return c(a)}):k(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!m(b)||m(b)&&0===b.length)return a;var d,e=A(b),f="********";try{d=JSON.parse(T(a))}catch(g){return a}return c(d)}var T=a(9),U="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},V=3,W=51200,X=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isDOMError:g,isDOMException:h,isUndefined:i,isFunction:j,isPlainObject:k,isString:l,isArray:m,isEmptyObject:n,supportsErrorEvent:o,supportsDOMError:p,supportsDOMException:q,supportsFetch:r,supportsReferrerPolicy:s,supportsPromiseRejectionEvent:t,wrappedCallback:u,each:v,objectMerge:w,truncate:y,objectFrozen:x,hasKey:z,joinRegExp:A,urlencode:B,uuid4:D,htmlTreeAsString:E,htmlElementAsString:F,isSameException:I,isSameStacktrace:J,parseUrl:C,fill:K,safeJoin:L,serializeException:Q,serializeKeysForMessage:R,sanitize:S}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{9:9}],8:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}function e(){return"undefined"==typeof document||null==document.location?"":document.location.origin}var f=a(7),g={collectWindowErrors:!0,debug:!1},h="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},i=[].slice,j="?",k=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;g.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function e(a,b){var c=null;if(!b||g.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(i.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,h,i){var l=null,m=f.isErrorEvent(i)?i.error:i,n=f.isErrorEvent(a)?a.message:a;if(v)g.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&f.isError(m))l=g.computeStackTrace(m),e(l,!0);else{var p,r={url:b,line:c,column:h},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(k);p&&(s=p[1],n=p[2])}r.func=j,l={name:s,message:n,url:d(),stack:[r]},e(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=h.onerror,h.onerror=l,r=!0)}function n(){r&&(h.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,e.apply(null,[a,!1].concat(b))}function p(a,b){var c=i.call(arguments,1);if(v){if(u===a)return;o()}var d=g.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),g.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,f,g=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,h=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,i=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,k=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,l=/\((\S*)(?::(\d+))(?::(\d+))\)/,m=a.stack.split("\n"),n=[],o=(/^(.*) is undefined$/.exec(a.message),0),p=m.length;o eval")>-1;r&&(b=k.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==o||c[5]||"undefined"==typeof a.columnNumber||(n[0].column=a.columnNumber+1),f={url:c[3],func:c[1]||j,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}if(!f.func&&f.line&&(f.func=j),f.url&&"blob:"===f.url.substr(0,5)){var s=new XMLHttpRequest;if(s.open("GET",f.url,!1),s.send(null),200===s.status){var t=s.responseText||"";t=t.slice(-300);var u=t.match(/\/\/# sourceMappingURL=(.*)$/);if(u){var v=u[1];"~"===v.charAt(0)&&(v=e()+v.slice(1)),f.url=v.slice(0,-4)}}}n.push(f)}return n.length?{name:a.name,message:a.message,url:d(),stack:n}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=j),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,e){for(var h,i,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==f&&o!==g.report){if(i={url:null,func:j,line:null,column:null},o.name?i.func=o.name:(h=k.exec(o.toString()))&&(i.func=h[1]),"undefined"==typeof i.func)try{i.func=h.input.substring(0,h.input.indexOf("{"))}catch(p){}m[""+o]?n=!0:m[""+o]=!0,l.push(i)}e&&l.splice(0,e);var q={name:a.name,message:a.message,url:d(),stack:l};return b(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),q}function f(b,e){ -var f=null;e=null==e?0:+e;try{if(f=a(b))return f}catch(h){if(g.debug)throw h}try{if(f=c(b,e+1))return f}catch(h){if(g.debug)throw h}return{name:b.name,message:b.message,url:d()}}return f.augmentStackTraceWithInitialElement=b,f.computeStackTraceFromStackProp=a,f}(),b.exports=g}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{7:7}],9:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}],10:[function(a,b,c){function d(a,b){var c=(65535&a)+(65535&b),d=(a>>16)+(b>>16)+(c>>16);return d<<16|65535&c}function e(a,b){return a<>>32-b}function f(a,b,c,f,g,h){return d(e(d(d(b,a),d(f,h)),g),c)}function g(a,b,c,d,e,g,h){return f(b&c|~b&d,a,b,e,g,h)}function h(a,b,c,d,e,g,h){return f(b&d|c&~d,a,b,e,g,h)}function i(a,b,c,d,e,g,h){return f(b^c^d,a,b,e,g,h)}function j(a,b,c,d,e,g,h){return f(c^(b|~d),a,b,e,g,h)}function k(a,b){a[b>>5]|=128<>>9<<4)+14]=b;var c,e,f,k,l,m=1732584193,n=-271733879,o=-1732584194,p=271733878;for(c=0;c>5]>>>b%32&255);return c}function m(a){var b,c=[];for(c[(a.length>>2)-1]=void 0,b=0;b>5]|=(255&a.charCodeAt(b/8))<16&&(e=k(e,8*a.length)),c=0;c<16;c+=1)f[c]=909522486^e[c],g[c]=1549556828^e[c];return d=k(f.concat(m(b)),512+8*b.length),l(k(g.concat(d),640))}function p(a){var b,c,d="0123456789abcdef",e="";for(c=0;c>>4&15)+d.charAt(15&b);return e}function q(a){return unescape(encodeURIComponent(a))}function r(a){return n(q(a))}function s(a){return p(r(a))}function t(a,b){return o(q(a),q(b))}function u(a,b){return p(t(a,b))}function v(a,b,c){return b?c?t(b,a):u(b,a):c?r(a):s(a)}b.exports=v},{}]},{},[6,1,2])(6)}); +/*! Raven.js 3.25.1 (b6f3c7a) | github.com/getsentry/raven-js */ +!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.Raven=a()}}(function(){var a;return function b(a,c,d){function e(g,h){if(!c[g]){if(!a[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};a[g][0].call(k.exports,function(b){var c=a[g][1][b];return e(c?c:b)},k,k.exports,b,a,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;gthis.k.maxBreadcrumbs&&this.u.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.r.push([a,b]),this.n&&this.F(),this},setUserContext:function(a){return this.j.user=a,this},setExtraContext:function(a){return this.Z("extra",a),this},setTagsContext:function(a){return this.Z("tags",a),this},clearContext:function(){return this.j={},this},getContext:function(){return JSON.parse(h(this.j))},setEnvironment:function(a){return this.k.environment=a,this},setRelease:function(a){return this.k.release=a,this},setDataCallback:function(a){var b=this.k.dataCallback;return this.k.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.k.breadcrumbCallback;return this.k.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.k.shouldSendCallback;return this.k.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.k.transport=a,this},lastException:function(){return this.d},lastEventId:function(){return this.f},isSetup:function(){return!!this.a&&(!!this.g||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.z("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=R.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(S){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.H;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.j.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.J(this.G(c)),h=S.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(S.head||S.body).appendChild(h)}},L:function(){var a=this;this.m+=1,setTimeout(function(){a.m-=1})},$:function(a,b){var c,d;if(this.b){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),S.createEvent?(c=S.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=S.createEventObject(),c.eventType=a);for(d in b)A(b,d)&&(c[d]=b[d]);if(S.createEvent)S.dispatchEvent(c);else try{S.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},_:function(a){var b=this;return function(c){if(b.aa=null,b.v!==c){b.v=c;var d;try{d=E(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ba:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.aa;g||a._("input")(c),clearTimeout(g),a.aa=setTimeout(function(){a.aa=null},b)}}},ca:function(a,b){var c=H(this.w.href),d=H(b),e=H(a);this.x=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},C:function(){var a=this;a.da=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.M?a.da.apply(this.O,arguments):a.da.apply(this,arguments)}},Q:function(){this.da&&(Function.prototype.toString=this.da)},D:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.ca(b.x,c+""),a.apply(this,arguments)}};I(R.history,"pushState",j,d),I(R.history,"replaceState",j,d)}if(c.console&&"console"in R&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};w(["debug","info","warn","error","log"],function(a,b){O(console,b,k)})}},R:function(){for(var a;this.t.length;){a=this.t.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},S:function(){for(var a in this.q)this.p[a]=this.q[a]},F:function(){var a=this;w(this.r,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},G:function(a){var b=Q.exec(a),c={},d=7;try{for(;d--;)c[P[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.k.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},J:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},A:function(){this.m||this.V.apply(this,arguments)},V:function(a,b){var c=this.X(a,b);this.$("handle",{stackInfo:a,options:b}),this.fa(a.name,a.message,a.url,a.lineno,c,b)},X:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(w(a.stack,function(b,e){var f=c.ga(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.u,0)}),this.j.user&&(a.user=this.j.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),a=this.pa(a),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||v(a[b]))&&delete a[b]}),s(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!v(a)&&(!s(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.ma()?void this.z("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function F(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&l(b))for(c=b.split(/\s+/),f=0;fc?Q(a,b-1):d}function R(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?X:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function S(a,b){function c(a){return m(a)?a.map(function(a){return c(a)}):k(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!m(b)||m(b)&&0===b.length)return a;var d,e=A(b),f="********";try{d=JSON.parse(T(a))}catch(g){return a}return c(d)}var T=a(9),U="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},V=3,W=51200,X=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isDOMError:g,isDOMException:h,isUndefined:i,isFunction:j,isPlainObject:k,isString:l,isArray:m,isEmptyObject:n,supportsErrorEvent:o,supportsDOMError:p,supportsDOMException:q,supportsFetch:r,supportsReferrerPolicy:s,supportsPromiseRejectionEvent:t,wrappedCallback:u,each:v,objectMerge:w,truncate:y,objectFrozen:x,hasKey:z,joinRegExp:A,urlencode:B,uuid4:D,htmlTreeAsString:E,htmlElementAsString:F,isSameException:I,isSameStacktrace:J,parseUrl:C,fill:K,safeJoin:L,serializeException:Q,serializeKeysForMessage:R,sanitize:S}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{9:9}],8:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}function e(){return"undefined"==typeof document||null==document.location?"":(document.location.origin||(document.location.origin=document.location.protocol+"//"+document.location.hostname+(document.location.port?":"+document.location.port:"")),document.location.origin)}var f=a(7),g={collectWindowErrors:!0,debug:!1},h="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},i=[].slice,j="?",k=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;g.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function e(a,b){var c=null;if(!b||g.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(i.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,h,i){var l=null,m=f.isErrorEvent(i)?i.error:i,n=f.isErrorEvent(a)?a.message:a;if(v)g.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&f.isError(m))l=g.computeStackTrace(m),e(l,!0);else{var p,r={url:b,line:c,column:h},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(k);p&&(s=p[1],n=p[2])}r.func=j,l={name:s,message:n,url:d(),stack:[r]},e(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=h.onerror,h.onerror=l,r=!0)}function n(){r&&(h.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,e.apply(null,[a,!1].concat(b))}function p(a,b){var c=i.call(arguments,1);if(v){if(u===a)return;o()}var d=g.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),g.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,f,g=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,h=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,i=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,k=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,l=/\((\S*)(?::(\d+))(?::(\d+))\)/,m=a.stack.split("\n"),n=[],o=(/^(.*) is undefined$/.exec(a.message),0),p=m.length;o eval")>-1;r&&(b=k.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==o||c[5]||"undefined"==typeof a.columnNumber||(n[0].column=a.columnNumber+1),f={url:c[3],func:c[1]||j,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}if(!f.func&&f.line&&(f.func=j),f.url&&"blob:"===f.url.substr(0,5)){var s=new XMLHttpRequest;if(s.open("GET",f.url,!1),s.send(null),200===s.status){var t=s.responseText||"";t=t.slice(-300);var u=t.match(/\/\/# sourceMappingURL=(.*)$/);if(u){var v=u[1];"~"===v.charAt(0)&&(v=e()+v.slice(1)),f.url=v.slice(0,-4)}}}n.push(f)}return n.length?{name:a.name,message:a.message,url:d(),stack:n}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=j),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,e){for(var h,i,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==f&&o!==g.report){if(i={url:null,func:j,line:null,column:null},o.name?i.func=o.name:(h=k.exec(o.toString()))&&(i.func=h[1]),"undefined"==typeof i.func)try{i.func=h.input.substring(0,h.input.indexOf("{"))}catch(p){}m[""+o]?n=!0:m[""+o]=!0,l.push(i); +}e&&l.splice(0,e);var q={name:a.name,message:a.message,url:d(),stack:l};return b(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),q}function f(b,e){var f=null;e=null==e?0:+e;try{if(f=a(b))return f}catch(h){if(g.debug)throw h}try{if(f=c(b,e+1))return f}catch(h){if(g.debug)throw h}return{name:b.name,message:b.message,url:d()}}return f.augmentStackTraceWithInitialElement=b,f.computeStackTraceFromStackProp=a,f}(),b.exports=g}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{7:7}],9:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}],10:[function(a,b,c){function d(a,b){var c=(65535&a)+(65535&b),d=(a>>16)+(b>>16)+(c>>16);return d<<16|65535&c}function e(a,b){return a<>>32-b}function f(a,b,c,f,g,h){return d(e(d(d(b,a),d(f,h)),g),c)}function g(a,b,c,d,e,g,h){return f(b&c|~b&d,a,b,e,g,h)}function h(a,b,c,d,e,g,h){return f(b&d|c&~d,a,b,e,g,h)}function i(a,b,c,d,e,g,h){return f(b^c^d,a,b,e,g,h)}function j(a,b,c,d,e,g,h){return f(c^(b|~d),a,b,e,g,h)}function k(a,b){a[b>>5]|=128<>>9<<4)+14]=b;var c,e,f,k,l,m=1732584193,n=-271733879,o=-1732584194,p=271733878;for(c=0;c>5]>>>b%32&255);return c}function m(a){var b,c=[];for(c[(a.length>>2)-1]=void 0,b=0;b>5]|=(255&a.charCodeAt(b/8))<16&&(e=k(e,8*a.length)),c=0;c<16;c+=1)f[c]=909522486^e[c],g[c]=1549556828^e[c];return d=k(f.concat(m(b)),512+8*b.length),l(k(g.concat(d),640))}function p(a){var b,c,d="0123456789abcdef",e="";for(c=0;c>>4&15)+d.charAt(15&b);return e}function q(a){return unescape(encodeURIComponent(a))}function r(a){return n(q(a))}function s(a){return p(r(a))}function t(a,b){return o(q(a),q(b))}function u(a,b){return p(t(a,b))}function v(a,b,c){return b?c?t(b,a):u(b,a):c?r(a):s(a)}b.exports=v},{}]},{},[6,1,2])(6)}); //# sourceMappingURL=raven.min.js.map \ No newline at end of file diff --git a/dist/console,require/raven.min.js.map b/dist/console,require/raven.min.js.map index 97ff83e8fcb1..5f10bdc5eede 100644 --- a/dist/console,require/raven.min.js.map +++ b/dist/console,require/raven.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","consolePlugin","console","pluginOptions","logLevels","levels","push","callback","msg","data","captureMessage","level","pop","wrapConsoleMethod","wrapMethod","addPlugin","4","6","2","requirePlugin","wrap","deep","3","RavenConfigError","message","name","prototype","constructor","utils","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","safeJoin","logger","extra","Function","apply","7","5","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","sanitizeKeys","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isErrorEvent","isDOMError","isDOMException","isError","isObject","isPlainObject","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","sanitize","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","config","dsn","options","_logDebug","globalOptions","key","value","setDSN","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","toString","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","substr","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","context","func","undefined","_before","wrapped","_ignoreNextOnError","captureException","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","T","event","reason","unhandledPromiseRejection","B","_promiseRejectionHandler","bind","addEventListener","P","removeEventListener","ex","trimHeadFrames","error","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","U","currentOptions","exKeys","Object","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","setDataCallback","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","L","setTimeout","$","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","_","evtName","_keypressTimeout","target","category","ba","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","ca","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","C","_originalFunctionToString","Q","D","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","type","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","E","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","R","builtin","S","F","installer","concat","G","str","m","exec","allowSecretKey","J","port","A","V","stackInfo","_triggerEvent","_processException","lineno","X","frame","_normalizeFrame","in_app","ga","stackInfoUrl","normalized","filename","line","colno","column","function","fa","prefixedMessage","exception","values","culprit","ha","request","Referer","breadcrumbs","_trimBreadcrumbs","ia","urlProp","urlProps","ja","httpData","userAgent","User-Agent","referrer","y","_backoffDuration","_backoffStart","ma","na","current","last","oa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Y","baseData","project","platform","_getHttpData","serverName","server_name","_sanitizeData","forEach","random","_sendProcessedPayload","pa","ra","qa","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","sa","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","onerror","open","setRequestHeader","send","ta","hash","evaluated","z","Z","setUser","setReleaseContext","10","8","9","RavenConstructor","_Raven","noConflict","Client","what","supportsErrorEvent","ErrorEvent","supportsDOMError","DOMError","supportsDOMException","DOMException","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","wrappedCallback","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","sanitizeMask","safeInput","o_O","getLocationHref","getLocationOrigin","origin","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","responseText","sourceMaps","sourceMapAddress","charAt","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","string","raw"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file +{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","consolePlugin","console","pluginOptions","logLevels","levels","push","callback","msg","data","captureMessage","level","pop","wrapConsoleMethod","wrapMethod","addPlugin","4","6","2","requirePlugin","wrap","deep","3","RavenConfigError","message","name","prototype","constructor","utils","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","safeJoin","logger","extra","Function","apply","7","5","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","sanitizeKeys","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isErrorEvent","isDOMError","isDOMException","isError","isObject","isPlainObject","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","sanitize","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","config","dsn","options","_logDebug","globalOptions","key","value","setDSN","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","toString","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","substr","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","context","func","undefined","_before","wrapped","_ignoreNextOnError","captureException","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","T","event","reason","unhandledPromiseRejection","B","_promiseRejectionHandler","bind","addEventListener","P","removeEventListener","ex","trimHeadFrames","error","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","U","currentOptions","exKeys","Object","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","setDataCallback","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","L","setTimeout","$","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","_","evtName","_keypressTimeout","target","category","ba","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","ca","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","C","_originalFunctionToString","Q","D","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","type","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","E","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","R","builtin","S","F","installer","concat","G","str","m","exec","allowSecretKey","J","port","A","V","stackInfo","_triggerEvent","_processException","lineno","X","frame","_normalizeFrame","in_app","ga","stackInfoUrl","normalized","filename","line","colno","column","function","fa","prefixedMessage","exception","values","culprit","ha","request","Referer","breadcrumbs","_trimBreadcrumbs","ia","urlProp","urlProps","ja","httpData","userAgent","User-Agent","referrer","y","_backoffDuration","_backoffStart","ma","na","current","last","oa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Y","baseData","project","platform","_getHttpData","serverName","server_name","_sanitizeData","forEach","random","_sendProcessedPayload","pa","ra","qa","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","sa","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","onerror","open","setRequestHeader","send","ta","hash","evaluated","z","Z","setUser","setReleaseContext","10","8","9","RavenConstructor","_Raven","noConflict","Client","what","supportsErrorEvent","ErrorEvent","supportsDOMError","DOMError","supportsDOMException","DOMException","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","wrappedCallback","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","sanitizeMask","safeInput","o_O","getLocationHref","getLocationOrigin","origin","hostname","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","responseText","sourceMaps","sourceMapAddress","charAt","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","string","raw"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file diff --git a/dist/console,vue/raven.js b/dist/console,vue/raven.js index 71fa4a521fe0..fa0c5afb1555 100644 --- a/dist/console,vue/raven.js +++ b/dist/console,vue/raven.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.25.0 (80dffad) | github.com/getsentry/raven-js */ +/*! Raven.js 3.25.1 (b6f3c7a) | github.com/getsentry/raven-js */ /* * Includes TraceKit @@ -292,7 +292,7 @@ Raven.prototype = { // webpack (using a build step causes webpack #1617). Grunt verifies that // this value matches package.json during build. // See: https://github.com/getsentry/raven-js/issues/465 - VERSION: '3.25.0', + VERSION: '3.25.1', debug: false, @@ -1601,8 +1601,8 @@ Raven.prototype = { var hasPushAndReplaceState = !isChromePackagedApp && _window.history && - history.pushState && - history.replaceState; + _window.history.pushState && + _window.history.replaceState; if (autoBreadcrumbs.location && hasPushAndReplaceState) { // TODO: remove onpopstate handler on uninstall() var oldOnPopState = _window.onpopstate; @@ -1631,8 +1631,8 @@ Raven.prototype = { }; }; - fill(history, 'pushState', historyReplacementFunction, wrappedBuiltIns); - fill(history, 'replaceState', historyReplacementFunction, wrappedBuiltIns); + fill(_window.history, 'pushState', historyReplacementFunction, wrappedBuiltIns); + fill(_window.history, 'replaceState', historyReplacementFunction, wrappedBuiltIns); } if (autoBreadcrumbs.console && 'console' in _window && console.log) { @@ -1922,7 +1922,7 @@ Raven.prototype = { if (this._hasNavigator && _navigator.userAgent) { httpData.headers = { - 'User-Agent': navigator.userAgent + 'User-Agent': _navigator.userAgent }; } @@ -3097,6 +3097,16 @@ function getLocationHref() { function getLocationOrigin() { if (typeof document === 'undefined' || document.location == null) return ''; + + // Oh dear IE10... + if (!document.location.origin) { + document.location.origin = + document.location.protocol + + '//' + + document.location.hostname + + (document.location.port ? ':' + document.location.port : ''); + } + return document.location.origin; } diff --git a/dist/console,vue/raven.min.js b/dist/console,vue/raven.min.js index b530b2645ff2..8bab3ef743f6 100644 --- a/dist/console,vue/raven.min.js +++ b/dist/console,vue/raven.min.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.25.0 (80dffad) | github.com/getsentry/raven-js */ -!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.Raven=a()}}(function(){return function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};b[g][0].call(k.exports,function(a){var c=b[g][1][a];return e(c?c:a)},k,k.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;g":"anonymous component")+(a._isVue&&a.$options.__file?" at "+a.$options.__file:"")}function e(a,b){if(b=b||window.Vue,b&&b.config){var c=b.config.errorHandler;b.config.errorHandler=function(b,e,f){var g={};"[object Object]"===Object.prototype.toString.call(e)&&(g.componentName=d(e),g.propsData=e.$options.propsData),"undefined"!=typeof f&&(g.lifecycleHook=f),a.captureException(b,{extra:g}),"function"==typeof c&&c.call(this,b,e,f)}}}b.exports=e,a(6).addPlugin(b.exports)},{6:6}],3:[function(a,b,c){function d(a){this.name="RavenConfigError",this.message=a}d.prototype=new Error,d.prototype.constructor=d,b.exports=d},{}],4:[function(a,b,c){var d=a(7),e=function(a,b,c){var e=a[b],f=a;if(b in a){var g="warn"===b?"warning":b;a[b]=function(){var a=[].slice.call(arguments),h=d.safeJoin(a," "),i={level:g,logger:"console",extra:{arguments:a}};"assert"===b?a[0]===!1&&(h="Assertion failed: "+(d.safeJoin(a.slice(1)," ")||"console.assert"),i.extra.arguments=a.slice(1),c&&c(h,i)):c&&c(h,i),e&&Function.prototype.apply.call(e,f,a)}}};b.exports={wrapMethod:e}},{7:7}],5:[function(a,b,c){(function(c){function d(){return+new Date}function e(a,b){return s(b)?function(c){return b(c,a)}:b}function f(){this.a=!("object"!=typeof JSON||!JSON.stringify),this.b=!r(S),this.c=!r(T),this.d=null,this.e=null,this.f=null,this.g=null,this.h=null,this.i=null,this.j={},this.k={release:R.SENTRY_RELEASE&&R.SENTRY_RELEASE.id,logger:"javascript",ignoreErrors:[],ignoreUrls:[],whitelistUrls:[],includePaths:[],headers:null,collectWindowErrors:!0,captureUnhandledRejections:!0,maxMessageLength:0,maxUrlLength:250,stackTraceLimit:50,autoBreadcrumbs:!0,instrument:!0,sampleRate:1,sanitizeKeys:[]},this.l={method:"POST",keepalive:!0,referrerPolicy:K()?"origin":""},this.m=0,this.n=!1,this.o=Error.stackTraceLimit,this.p=R.console||{},this.q={},this.r=[],this.s=d(),this.t=[],this.u=[],this.v=null,this.w=R.location,this.x=this.w&&this.w.href,this.y();for(var a in this.p)this.q[a]=this.p[a]}var g=a(8),h=a(9),i=a(10),j=a(3),k=a(7),l=k.isErrorEvent,m=k.isDOMError,n=k.isDOMException,o=k.isError,p=k.isObject,q=k.isPlainObject,r=k.isUndefined,s=k.isFunction,t=k.isString,u=k.isArray,v=k.isEmptyObject,w=k.each,x=k.objectMerge,y=k.truncate,z=k.objectFrozen,A=k.hasKey,B=k.joinRegExp,C=k.urlencode,D=k.uuid4,E=k.htmlTreeAsString,F=k.isSameException,G=k.isSameStacktrace,H=k.parseUrl,I=k.fill,J=k.supportsFetch,K=k.supportsReferrerPolicy,L=k.serializeKeysForMessage,M=k.serializeException,N=k.sanitize,O=a(4).wrapMethod,P="source protocol user pass host port path".split(" "),Q=/^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/,R="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},S=R.document,T=R.navigator;f.prototype={VERSION:"3.25.0",debug:!1,TraceKit:g,config:function(a,b){var c=this;if(c.g)return this.z("error","Error: Raven has already been configured"),c;if(!a)return c;var d=c.k;b&&w(b,function(a,b){"tags"===a||"extra"===a||"user"===a?c.j[a]=b:d[a]=b}),c.setDSN(a),d.ignoreErrors.push(/^Script error\.?$/),d.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/),d.ignoreErrors=B(d.ignoreErrors),d.ignoreUrls=!!d.ignoreUrls.length&&B(d.ignoreUrls),d.whitelistUrls=!!d.whitelistUrls.length&&B(d.whitelistUrls),d.includePaths=B(d.includePaths),d.maxBreadcrumbs=Math.max(0,Math.min(d.maxBreadcrumbs||100,100));var e={xhr:!0,console:!0,dom:!0,location:!0,sentry:!0},f=d.autoBreadcrumbs;"[object Object]"==={}.toString.call(f)?f=x(e,f):f!==!1&&(f=e),d.autoBreadcrumbs=f;var h={tryCatch:!0},i=d.instrument;return"[object Object]"==={}.toString.call(i)?i=x(h,i):i!==!1&&(i=h),d.instrument=i,g.collectWindowErrors=!!d.collectWindowErrors,c},install:function(){var a=this;return a.isSetup()&&!a.n&&(g.report.subscribe(function(){a.A.apply(a,arguments)}),a.k.captureUnhandledRejections&&a.B(),a.C(),a.k.instrument&&a.k.instrument.tryCatch&&a.D(),a.k.autoBreadcrumbs&&a.E(),a.F(),a.n=!0),Error.stackTraceLimit=a.k.stackTraceLimit,this},setDSN:function(a){var b=this,c=b.G(a),d=c.path.lastIndexOf("/"),e=c.path.substr(1,d);b.H=a,b.h=c.user,b.I=c.pass&&c.pass.substr(1),b.i=c.path.substr(d+1),b.g=b.J(c),b.K=b.g+"/"+e+"api/"+b.i+"/store/",this.y()},context:function(a,b,c){return s(a)&&(c=b||[],b=a,a=void 0),this.wrap(a,b).apply(this,c)},wrap:function(a,b,c){function d(){var d=[],f=arguments.length,g=!a||a&&a.deep!==!1;for(c&&s(c)&&c.apply(this,arguments);f--;)d[f]=g?e.wrap(a,arguments[f]):arguments[f];try{return b.apply(this,d)}catch(h){throw e.L(),e.captureException(h,a),h}}var e=this;if(r(b)&&!s(a))return a;if(s(a)&&(b=a,a=void 0),!s(b))return b;try{if(b.M)return b;if(b.N)return b.N}catch(f){return b}for(var g in b)A(b,g)&&(d[g]=b[g]);return d.prototype=b.prototype,b.N=d,d.M=!0,d.O=b,d},uninstall:function(){return g.report.uninstall(),this.P(),this.Q(),this.R(),this.S(),Error.stackTraceLimit=this.o,this.n=!1,this},T:function(a){this.z("debug","Raven caught unhandled promise rejection:",a),this.captureException(a.reason,{extra:{unhandledPromiseRejection:!0}})},B:function(){return this.T=this.T.bind(this),R.addEventListener&&R.addEventListener("unhandledrejection",this.T),this},P:function(){return R.removeEventListener&&R.removeEventListener("unhandledrejection",this.T),this},captureException:function(a,b){if(b=x({trimHeadFrames:0},b?b:{}),l(a)&&a.error)a=a.error;else{if(m(a)||n(a)){var c=a.name||(m(a)?"DOMError":"DOMException"),d=a.message?c+": "+a.message:c;return this.captureMessage(d,x(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}))}if(o(a))a=a;else{if(!q(a))return this.captureMessage(a,x(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}));b=this.U(b,a),a=new Error(b.message)}}this.d=a;try{var e=g.computeStackTrace(a);this.V(e,b)}catch(f){if(a!==f)throw f}return this},U:function(a,b){var c=Object.keys(b).sort(),d=x(a,{message:"Non-Error exception captured with keys: "+L(c),fingerprint:[i(c)],extra:a.extra||{}});return d.extra.W=M(b),d},captureMessage:function(a,b){if(!this.k.ignoreErrors.test||!this.k.ignoreErrors.test(a)){b=b||{},a+="";var c,d=x({message:a},b);try{throw new Error(a)}catch(e){c=e}c.name=null;var f=g.computeStackTrace(c),h=u(f.stack)&&f.stack[1];h&&"Raven.captureException"===h.func&&(h=f.stack[2]);var i=h&&h.url||"";if((!this.k.ignoreUrls.test||!this.k.ignoreUrls.test(i))&&(!this.k.whitelistUrls.test||this.k.whitelistUrls.test(i))){if(this.k.stacktrace||b&&b.stacktrace){d.fingerprint=null==d.fingerprint?a:d.fingerprint,b=x({trimHeadFrames:0},b),b.trimHeadFrames+=1;var j=this.X(f,b);d.stacktrace={frames:j.reverse()}}return d.fingerprint&&(d.fingerprint=u(d.fingerprint)?d.fingerprint:[d.fingerprint]),this.Y(d),this}}},captureBreadcrumb:function(a){var b=x({timestamp:d()/1e3},a);if(s(this.k.breadcrumbCallback)){var c=this.k.breadcrumbCallback(b);if(p(c)&&!v(c))b=c;else if(c===!1)return this}return this.u.push(b),this.u.length>this.k.maxBreadcrumbs&&this.u.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.r.push([a,b]),this.n&&this.F(),this},setUserContext:function(a){return this.j.user=a,this},setExtraContext:function(a){return this.Z("extra",a),this},setTagsContext:function(a){return this.Z("tags",a),this},clearContext:function(){return this.j={},this},getContext:function(){return JSON.parse(h(this.j))},setEnvironment:function(a){return this.k.environment=a,this},setRelease:function(a){return this.k.release=a,this},setDataCallback:function(a){var b=this.k.dataCallback;return this.k.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.k.breadcrumbCallback;return this.k.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.k.shouldSendCallback;return this.k.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.k.transport=a,this},lastException:function(){return this.d},lastEventId:function(){return this.f},isSetup:function(){return!!this.a&&(!!this.g||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.z("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=R.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(S){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.H;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.j.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.J(this.G(c)),h=S.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(S.head||S.body).appendChild(h)}},L:function(){var a=this;this.m+=1,setTimeout(function(){a.m-=1})},$:function(a,b){var c,d;if(this.b){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),S.createEvent?(c=S.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=S.createEventObject(),c.eventType=a);for(d in b)A(b,d)&&(c[d]=b[d]);if(S.createEvent)S.dispatchEvent(c);else try{S.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},_:function(a){var b=this;return function(c){if(b.aa=null,b.v!==c){b.v=c;var d;try{d=E(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ba:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.aa;g||a._("input")(c),clearTimeout(g),a.aa=setTimeout(function(){a.aa=null},b)}}},ca:function(a,b){var c=H(this.w.href),d=H(b),e=H(a);this.x=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},C:function(){var a=this;a.da=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.M?a.da.apply(this.O,arguments):a.da.apply(this,arguments)}},Q:function(){this.da&&(Function.prototype.toString=this.da)},D:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.ca(b.x,c+""),a.apply(this,arguments)}};I(history,"pushState",j,d),I(history,"replaceState",j,d)}if(c.console&&"console"in R&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};w(["debug","info","warn","error","log"],function(a,b){O(console,b,k)})}},R:function(){for(var a;this.t.length;){a=this.t.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},S:function(){for(var a in this.q)this.p[a]=this.q[a]},F:function(){var a=this;w(this.r,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},G:function(a){var b=Q.exec(a),c={},d=7;try{for(;d--;)c[P[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.k.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},J:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},A:function(){this.m||this.V.apply(this,arguments)},V:function(a,b){var c=this.X(a,b);this.$("handle",{stackInfo:a,options:b}),this.fa(a.name,a.message,a.url,a.lineno,c,b)},X:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(w(a.stack,function(b,e){var f=c.ga(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.u,0)}),this.j.user&&(a.user=this.j.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),a=this.pa(a),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||v(a[b]))&&delete a[b]}),s(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!v(a)&&(!s(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.ma()?void this.z("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function F(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&l(b))for(c=b.split(/\s+/),f=0;fc?Q(a,b-1):d}function R(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?X:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function S(a,b){function c(a){return m(a)?a.map(function(a){return c(a)}):k(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!m(b)||m(b)&&0===b.length)return a;var d,e=A(b),f="********";try{d=JSON.parse(T(a))}catch(g){return a}return c(d)}var T=a(9),U="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},V=3,W=51200,X=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isDOMError:g,isDOMException:h,isUndefined:i,isFunction:j,isPlainObject:k,isString:l,isArray:m,isEmptyObject:n,supportsErrorEvent:o,supportsDOMError:p,supportsDOMException:q,supportsFetch:r,supportsReferrerPolicy:s,supportsPromiseRejectionEvent:t,wrappedCallback:u,each:v,objectMerge:w,truncate:y,objectFrozen:x,hasKey:z,joinRegExp:A,urlencode:B,uuid4:D,htmlTreeAsString:E,htmlElementAsString:F,isSameException:I,isSameStacktrace:J,parseUrl:C,fill:K,safeJoin:L,serializeException:Q,serializeKeysForMessage:R,sanitize:S}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{9:9}],8:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}function e(){return"undefined"==typeof document||null==document.location?"":document.location.origin}var f=a(7),g={collectWindowErrors:!0,debug:!1},h="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},i=[].slice,j="?",k=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;g.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function e(a,b){var c=null;if(!b||g.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(i.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,h,i){var l=null,m=f.isErrorEvent(i)?i.error:i,n=f.isErrorEvent(a)?a.message:a;if(v)g.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&f.isError(m))l=g.computeStackTrace(m),e(l,!0);else{var p,r={url:b,line:c,column:h},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(k);p&&(s=p[1],n=p[2])}r.func=j,l={name:s,message:n,url:d(),stack:[r]},e(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=h.onerror,h.onerror=l,r=!0)}function n(){r&&(h.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,e.apply(null,[a,!1].concat(b))}function p(a,b){var c=i.call(arguments,1);if(v){if(u===a)return;o()}var d=g.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),g.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,f,g=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,h=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,i=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,k=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,l=/\((\S*)(?::(\d+))(?::(\d+))\)/,m=a.stack.split("\n"),n=[],o=(/^(.*) is undefined$/.exec(a.message),0),p=m.length;o eval")>-1;r&&(b=k.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==o||c[5]||"undefined"==typeof a.columnNumber||(n[0].column=a.columnNumber+1),f={url:c[3],func:c[1]||j,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}if(!f.func&&f.line&&(f.func=j),f.url&&"blob:"===f.url.substr(0,5)){var s=new XMLHttpRequest;if(s.open("GET",f.url,!1),s.send(null),200===s.status){var t=s.responseText||"";t=t.slice(-300);var u=t.match(/\/\/# sourceMappingURL=(.*)$/);if(u){var v=u[1];"~"===v.charAt(0)&&(v=e()+v.slice(1)),f.url=v.slice(0,-4)}}}n.push(f)}return n.length?{name:a.name,message:a.message,url:d(),stack:n}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=j),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,e){for(var h,i,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==f&&o!==g.report){ -if(i={url:null,func:j,line:null,column:null},o.name?i.func=o.name:(h=k.exec(o.toString()))&&(i.func=h[1]),"undefined"==typeof i.func)try{i.func=h.input.substring(0,h.input.indexOf("{"))}catch(p){}m[""+o]?n=!0:m[""+o]=!0,l.push(i)}e&&l.splice(0,e);var q={name:a.name,message:a.message,url:d(),stack:l};return b(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),q}function f(b,e){var f=null;e=null==e?0:+e;try{if(f=a(b))return f}catch(h){if(g.debug)throw h}try{if(f=c(b,e+1))return f}catch(h){if(g.debug)throw h}return{name:b.name,message:b.message,url:d()}}return f.augmentStackTraceWithInitialElement=b,f.computeStackTraceFromStackProp=a,f}(),b.exports=g}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{7:7}],9:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}],10:[function(a,b,c){function d(a,b){var c=(65535&a)+(65535&b),d=(a>>16)+(b>>16)+(c>>16);return d<<16|65535&c}function e(a,b){return a<>>32-b}function f(a,b,c,f,g,h){return d(e(d(d(b,a),d(f,h)),g),c)}function g(a,b,c,d,e,g,h){return f(b&c|~b&d,a,b,e,g,h)}function h(a,b,c,d,e,g,h){return f(b&d|c&~d,a,b,e,g,h)}function i(a,b,c,d,e,g,h){return f(b^c^d,a,b,e,g,h)}function j(a,b,c,d,e,g,h){return f(c^(b|~d),a,b,e,g,h)}function k(a,b){a[b>>5]|=128<>>9<<4)+14]=b;var c,e,f,k,l,m=1732584193,n=-271733879,o=-1732584194,p=271733878;for(c=0;c>5]>>>b%32&255);return c}function m(a){var b,c=[];for(c[(a.length>>2)-1]=void 0,b=0;b>5]|=(255&a.charCodeAt(b/8))<16&&(e=k(e,8*a.length)),c=0;c<16;c+=1)f[c]=909522486^e[c],g[c]=1549556828^e[c];return d=k(f.concat(m(b)),512+8*b.length),l(k(g.concat(d),640))}function p(a){var b,c,d="0123456789abcdef",e="";for(c=0;c>>4&15)+d.charAt(15&b);return e}function q(a){return unescape(encodeURIComponent(a))}function r(a){return n(q(a))}function s(a){return p(r(a))}function t(a,b){return o(q(a),q(b))}function u(a,b){return p(t(a,b))}function v(a,b,c){return b?c?t(b,a):u(b,a):c?r(a):s(a)}b.exports=v},{}]},{},[6,1,2])(6)}); +/*! Raven.js 3.25.1 (b6f3c7a) | github.com/getsentry/raven-js */ +!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.Raven=a()}}(function(){return function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};b[g][0].call(k.exports,function(a){var c=b[g][1][a];return e(c?c:a)},k,k.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;g":"anonymous component")+(a._isVue&&a.$options.__file?" at "+a.$options.__file:"")}function e(a,b){if(b=b||window.Vue,b&&b.config){var c=b.config.errorHandler;b.config.errorHandler=function(b,e,f){var g={};"[object Object]"===Object.prototype.toString.call(e)&&(g.componentName=d(e),g.propsData=e.$options.propsData),"undefined"!=typeof f&&(g.lifecycleHook=f),a.captureException(b,{extra:g}),"function"==typeof c&&c.call(this,b,e,f)}}}b.exports=e,a(6).addPlugin(b.exports)},{6:6}],3:[function(a,b,c){function d(a){this.name="RavenConfigError",this.message=a}d.prototype=new Error,d.prototype.constructor=d,b.exports=d},{}],4:[function(a,b,c){var d=a(7),e=function(a,b,c){var e=a[b],f=a;if(b in a){var g="warn"===b?"warning":b;a[b]=function(){var a=[].slice.call(arguments),h=d.safeJoin(a," "),i={level:g,logger:"console",extra:{arguments:a}};"assert"===b?a[0]===!1&&(h="Assertion failed: "+(d.safeJoin(a.slice(1)," ")||"console.assert"),i.extra.arguments=a.slice(1),c&&c(h,i)):c&&c(h,i),e&&Function.prototype.apply.call(e,f,a)}}};b.exports={wrapMethod:e}},{7:7}],5:[function(a,b,c){(function(c){function d(){return+new Date}function e(a,b){return s(b)?function(c){return b(c,a)}:b}function f(){this.a=!("object"!=typeof JSON||!JSON.stringify),this.b=!r(S),this.c=!r(T),this.d=null,this.e=null,this.f=null,this.g=null,this.h=null,this.i=null,this.j={},this.k={release:R.SENTRY_RELEASE&&R.SENTRY_RELEASE.id,logger:"javascript",ignoreErrors:[],ignoreUrls:[],whitelistUrls:[],includePaths:[],headers:null,collectWindowErrors:!0,captureUnhandledRejections:!0,maxMessageLength:0,maxUrlLength:250,stackTraceLimit:50,autoBreadcrumbs:!0,instrument:!0,sampleRate:1,sanitizeKeys:[]},this.l={method:"POST",keepalive:!0,referrerPolicy:K()?"origin":""},this.m=0,this.n=!1,this.o=Error.stackTraceLimit,this.p=R.console||{},this.q={},this.r=[],this.s=d(),this.t=[],this.u=[],this.v=null,this.w=R.location,this.x=this.w&&this.w.href,this.y();for(var a in this.p)this.q[a]=this.p[a]}var g=a(8),h=a(9),i=a(10),j=a(3),k=a(7),l=k.isErrorEvent,m=k.isDOMError,n=k.isDOMException,o=k.isError,p=k.isObject,q=k.isPlainObject,r=k.isUndefined,s=k.isFunction,t=k.isString,u=k.isArray,v=k.isEmptyObject,w=k.each,x=k.objectMerge,y=k.truncate,z=k.objectFrozen,A=k.hasKey,B=k.joinRegExp,C=k.urlencode,D=k.uuid4,E=k.htmlTreeAsString,F=k.isSameException,G=k.isSameStacktrace,H=k.parseUrl,I=k.fill,J=k.supportsFetch,K=k.supportsReferrerPolicy,L=k.serializeKeysForMessage,M=k.serializeException,N=k.sanitize,O=a(4).wrapMethod,P="source protocol user pass host port path".split(" "),Q=/^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/,R="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},S=R.document,T=R.navigator;f.prototype={VERSION:"3.25.1",debug:!1,TraceKit:g,config:function(a,b){var c=this;if(c.g)return this.z("error","Error: Raven has already been configured"),c;if(!a)return c;var d=c.k;b&&w(b,function(a,b){"tags"===a||"extra"===a||"user"===a?c.j[a]=b:d[a]=b}),c.setDSN(a),d.ignoreErrors.push(/^Script error\.?$/),d.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/),d.ignoreErrors=B(d.ignoreErrors),d.ignoreUrls=!!d.ignoreUrls.length&&B(d.ignoreUrls),d.whitelistUrls=!!d.whitelistUrls.length&&B(d.whitelistUrls),d.includePaths=B(d.includePaths),d.maxBreadcrumbs=Math.max(0,Math.min(d.maxBreadcrumbs||100,100));var e={xhr:!0,console:!0,dom:!0,location:!0,sentry:!0},f=d.autoBreadcrumbs;"[object Object]"==={}.toString.call(f)?f=x(e,f):f!==!1&&(f=e),d.autoBreadcrumbs=f;var h={tryCatch:!0},i=d.instrument;return"[object Object]"==={}.toString.call(i)?i=x(h,i):i!==!1&&(i=h),d.instrument=i,g.collectWindowErrors=!!d.collectWindowErrors,c},install:function(){var a=this;return a.isSetup()&&!a.n&&(g.report.subscribe(function(){a.A.apply(a,arguments)}),a.k.captureUnhandledRejections&&a.B(),a.C(),a.k.instrument&&a.k.instrument.tryCatch&&a.D(),a.k.autoBreadcrumbs&&a.E(),a.F(),a.n=!0),Error.stackTraceLimit=a.k.stackTraceLimit,this},setDSN:function(a){var b=this,c=b.G(a),d=c.path.lastIndexOf("/"),e=c.path.substr(1,d);b.H=a,b.h=c.user,b.I=c.pass&&c.pass.substr(1),b.i=c.path.substr(d+1),b.g=b.J(c),b.K=b.g+"/"+e+"api/"+b.i+"/store/",this.y()},context:function(a,b,c){return s(a)&&(c=b||[],b=a,a=void 0),this.wrap(a,b).apply(this,c)},wrap:function(a,b,c){function d(){var d=[],f=arguments.length,g=!a||a&&a.deep!==!1;for(c&&s(c)&&c.apply(this,arguments);f--;)d[f]=g?e.wrap(a,arguments[f]):arguments[f];try{return b.apply(this,d)}catch(h){throw e.L(),e.captureException(h,a),h}}var e=this;if(r(b)&&!s(a))return a;if(s(a)&&(b=a,a=void 0),!s(b))return b;try{if(b.M)return b;if(b.N)return b.N}catch(f){return b}for(var g in b)A(b,g)&&(d[g]=b[g]);return d.prototype=b.prototype,b.N=d,d.M=!0,d.O=b,d},uninstall:function(){return g.report.uninstall(),this.P(),this.Q(),this.R(),this.S(),Error.stackTraceLimit=this.o,this.n=!1,this},T:function(a){this.z("debug","Raven caught unhandled promise rejection:",a),this.captureException(a.reason,{extra:{unhandledPromiseRejection:!0}})},B:function(){return this.T=this.T.bind(this),R.addEventListener&&R.addEventListener("unhandledrejection",this.T),this},P:function(){return R.removeEventListener&&R.removeEventListener("unhandledrejection",this.T),this},captureException:function(a,b){if(b=x({trimHeadFrames:0},b?b:{}),l(a)&&a.error)a=a.error;else{if(m(a)||n(a)){var c=a.name||(m(a)?"DOMError":"DOMException"),d=a.message?c+": "+a.message:c;return this.captureMessage(d,x(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}))}if(o(a))a=a;else{if(!q(a))return this.captureMessage(a,x(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}));b=this.U(b,a),a=new Error(b.message)}}this.d=a;try{var e=g.computeStackTrace(a);this.V(e,b)}catch(f){if(a!==f)throw f}return this},U:function(a,b){var c=Object.keys(b).sort(),d=x(a,{message:"Non-Error exception captured with keys: "+L(c),fingerprint:[i(c)],extra:a.extra||{}});return d.extra.W=M(b),d},captureMessage:function(a,b){if(!this.k.ignoreErrors.test||!this.k.ignoreErrors.test(a)){b=b||{},a+="";var c,d=x({message:a},b);try{throw new Error(a)}catch(e){c=e}c.name=null;var f=g.computeStackTrace(c),h=u(f.stack)&&f.stack[1];h&&"Raven.captureException"===h.func&&(h=f.stack[2]);var i=h&&h.url||"";if((!this.k.ignoreUrls.test||!this.k.ignoreUrls.test(i))&&(!this.k.whitelistUrls.test||this.k.whitelistUrls.test(i))){if(this.k.stacktrace||b&&b.stacktrace){d.fingerprint=null==d.fingerprint?a:d.fingerprint,b=x({trimHeadFrames:0},b),b.trimHeadFrames+=1;var j=this.X(f,b);d.stacktrace={frames:j.reverse()}}return d.fingerprint&&(d.fingerprint=u(d.fingerprint)?d.fingerprint:[d.fingerprint]),this.Y(d),this}}},captureBreadcrumb:function(a){var b=x({timestamp:d()/1e3},a);if(s(this.k.breadcrumbCallback)){var c=this.k.breadcrumbCallback(b);if(p(c)&&!v(c))b=c;else if(c===!1)return this}return this.u.push(b),this.u.length>this.k.maxBreadcrumbs&&this.u.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.r.push([a,b]),this.n&&this.F(),this},setUserContext:function(a){return this.j.user=a,this},setExtraContext:function(a){return this.Z("extra",a),this},setTagsContext:function(a){return this.Z("tags",a),this},clearContext:function(){return this.j={},this},getContext:function(){return JSON.parse(h(this.j))},setEnvironment:function(a){return this.k.environment=a,this},setRelease:function(a){return this.k.release=a,this},setDataCallback:function(a){var b=this.k.dataCallback;return this.k.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.k.breadcrumbCallback;return this.k.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.k.shouldSendCallback;return this.k.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.k.transport=a,this},lastException:function(){return this.d},lastEventId:function(){return this.f},isSetup:function(){return!!this.a&&(!!this.g||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.z("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=R.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(S){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.H;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.j.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.J(this.G(c)),h=S.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(S.head||S.body).appendChild(h)}},L:function(){var a=this;this.m+=1,setTimeout(function(){a.m-=1})},$:function(a,b){var c,d;if(this.b){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),S.createEvent?(c=S.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=S.createEventObject(),c.eventType=a);for(d in b)A(b,d)&&(c[d]=b[d]);if(S.createEvent)S.dispatchEvent(c);else try{S.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},_:function(a){var b=this;return function(c){if(b.aa=null,b.v!==c){b.v=c;var d;try{d=E(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ba:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.aa;g||a._("input")(c),clearTimeout(g),a.aa=setTimeout(function(){a.aa=null},b)}}},ca:function(a,b){var c=H(this.w.href),d=H(b),e=H(a);this.x=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},C:function(){var a=this;a.da=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.M?a.da.apply(this.O,arguments):a.da.apply(this,arguments)}},Q:function(){this.da&&(Function.prototype.toString=this.da)},D:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.ca(b.x,c+""),a.apply(this,arguments)}};I(R.history,"pushState",j,d),I(R.history,"replaceState",j,d)}if(c.console&&"console"in R&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};w(["debug","info","warn","error","log"],function(a,b){O(console,b,k)})}},R:function(){for(var a;this.t.length;){a=this.t.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},S:function(){for(var a in this.q)this.p[a]=this.q[a]},F:function(){var a=this;w(this.r,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},G:function(a){var b=Q.exec(a),c={},d=7;try{for(;d--;)c[P[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.k.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},J:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},A:function(){this.m||this.V.apply(this,arguments)},V:function(a,b){var c=this.X(a,b);this.$("handle",{stackInfo:a,options:b}),this.fa(a.name,a.message,a.url,a.lineno,c,b)},X:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(w(a.stack,function(b,e){var f=c.ga(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.u,0)}),this.j.user&&(a.user=this.j.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),a=this.pa(a),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||v(a[b]))&&delete a[b]}),s(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!v(a)&&(!s(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.ma()?void this.z("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function F(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&l(b))for(c=b.split(/\s+/),f=0;fc?Q(a,b-1):d}function R(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?X:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function S(a,b){function c(a){return m(a)?a.map(function(a){return c(a)}):k(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!m(b)||m(b)&&0===b.length)return a;var d,e=A(b),f="********";try{d=JSON.parse(T(a))}catch(g){return a}return c(d)}var T=a(9),U="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},V=3,W=51200,X=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isDOMError:g,isDOMException:h,isUndefined:i,isFunction:j,isPlainObject:k,isString:l,isArray:m,isEmptyObject:n,supportsErrorEvent:o,supportsDOMError:p,supportsDOMException:q,supportsFetch:r,supportsReferrerPolicy:s,supportsPromiseRejectionEvent:t,wrappedCallback:u,each:v,objectMerge:w,truncate:y,objectFrozen:x,hasKey:z,joinRegExp:A,urlencode:B,uuid4:D,htmlTreeAsString:E,htmlElementAsString:F,isSameException:I,isSameStacktrace:J,parseUrl:C,fill:K,safeJoin:L,serializeException:Q,serializeKeysForMessage:R,sanitize:S}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{9:9}],8:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}function e(){return"undefined"==typeof document||null==document.location?"":(document.location.origin||(document.location.origin=document.location.protocol+"//"+document.location.hostname+(document.location.port?":"+document.location.port:"")),document.location.origin)}var f=a(7),g={collectWindowErrors:!0,debug:!1},h="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},i=[].slice,j="?",k=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;g.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function e(a,b){var c=null;if(!b||g.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(i.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,h,i){var l=null,m=f.isErrorEvent(i)?i.error:i,n=f.isErrorEvent(a)?a.message:a;if(v)g.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&f.isError(m))l=g.computeStackTrace(m),e(l,!0);else{var p,r={url:b,line:c,column:h},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(k);p&&(s=p[1],n=p[2])}r.func=j,l={name:s,message:n,url:d(),stack:[r]},e(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=h.onerror,h.onerror=l,r=!0)}function n(){r&&(h.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,e.apply(null,[a,!1].concat(b))}function p(a,b){var c=i.call(arguments,1);if(v){if(u===a)return;o()}var d=g.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),g.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,f,g=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,h=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,i=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,k=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,l=/\((\S*)(?::(\d+))(?::(\d+))\)/,m=a.stack.split("\n"),n=[],o=(/^(.*) is undefined$/.exec(a.message),0),p=m.length;o eval")>-1;r&&(b=k.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==o||c[5]||"undefined"==typeof a.columnNumber||(n[0].column=a.columnNumber+1),f={url:c[3],func:c[1]||j,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}if(!f.func&&f.line&&(f.func=j),f.url&&"blob:"===f.url.substr(0,5)){var s=new XMLHttpRequest;if(s.open("GET",f.url,!1),s.send(null),200===s.status){var t=s.responseText||"";t=t.slice(-300);var u=t.match(/\/\/# sourceMappingURL=(.*)$/);if(u){var v=u[1];"~"===v.charAt(0)&&(v=e()+v.slice(1)),f.url=v.slice(0,-4)}}}n.push(f)}return n.length?{name:a.name,message:a.message,url:d(),stack:n}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=j),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e), +a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,e){for(var h,i,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==f&&o!==g.report){if(i={url:null,func:j,line:null,column:null},o.name?i.func=o.name:(h=k.exec(o.toString()))&&(i.func=h[1]),"undefined"==typeof i.func)try{i.func=h.input.substring(0,h.input.indexOf("{"))}catch(p){}m[""+o]?n=!0:m[""+o]=!0,l.push(i)}e&&l.splice(0,e);var q={name:a.name,message:a.message,url:d(),stack:l};return b(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),q}function f(b,e){var f=null;e=null==e?0:+e;try{if(f=a(b))return f}catch(h){if(g.debug)throw h}try{if(f=c(b,e+1))return f}catch(h){if(g.debug)throw h}return{name:b.name,message:b.message,url:d()}}return f.augmentStackTraceWithInitialElement=b,f.computeStackTraceFromStackProp=a,f}(),b.exports=g}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{7:7}],9:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}],10:[function(a,b,c){function d(a,b){var c=(65535&a)+(65535&b),d=(a>>16)+(b>>16)+(c>>16);return d<<16|65535&c}function e(a,b){return a<>>32-b}function f(a,b,c,f,g,h){return d(e(d(d(b,a),d(f,h)),g),c)}function g(a,b,c,d,e,g,h){return f(b&c|~b&d,a,b,e,g,h)}function h(a,b,c,d,e,g,h){return f(b&d|c&~d,a,b,e,g,h)}function i(a,b,c,d,e,g,h){return f(b^c^d,a,b,e,g,h)}function j(a,b,c,d,e,g,h){return f(c^(b|~d),a,b,e,g,h)}function k(a,b){a[b>>5]|=128<>>9<<4)+14]=b;var c,e,f,k,l,m=1732584193,n=-271733879,o=-1732584194,p=271733878;for(c=0;c>5]>>>b%32&255);return c}function m(a){var b,c=[];for(c[(a.length>>2)-1]=void 0,b=0;b>5]|=(255&a.charCodeAt(b/8))<16&&(e=k(e,8*a.length)),c=0;c<16;c+=1)f[c]=909522486^e[c],g[c]=1549556828^e[c];return d=k(f.concat(m(b)),512+8*b.length),l(k(g.concat(d),640))}function p(a){var b,c,d="0123456789abcdef",e="";for(c=0;c>>4&15)+d.charAt(15&b);return e}function q(a){return unescape(encodeURIComponent(a))}function r(a){return n(q(a))}function s(a){return p(r(a))}function t(a,b){return o(q(a),q(b))}function u(a,b){return p(t(a,b))}function v(a,b,c){return b?c?t(b,a):u(b,a):c?r(a):s(a)}b.exports=v},{}]},{},[6,1,2])(6)}); //# sourceMappingURL=raven.min.js.map \ No newline at end of file diff --git a/dist/console,vue/raven.min.js.map b/dist/console,vue/raven.min.js.map index 9a7c7ae4ce17..5a4fd8781302 100644 --- a/dist/console,vue/raven.min.js.map +++ b/dist/console,vue/raven.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","consolePlugin","console","pluginOptions","logLevels","levels","push","callback","msg","data","captureMessage","level","pop","wrapConsoleMethod","wrapMethod","addPlugin","4","6","2","formatComponentName","vm","$root","name","_isVue","$options","_componentTag","__file","vuePlugin","Vue","config","_oldOnError","errorHandler","error","info","metaData","Object","prototype","toString","componentName","propsData","lifecycleHook","captureException","extra","3","RavenConfigError","message","constructor","utils","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","safeJoin","logger","Function","apply","7","5","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","sanitizeKeys","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isErrorEvent","isDOMError","isDOMException","isError","isObject","isPlainObject","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","sanitize","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","dsn","options","_logDebug","globalOptions","key","value","setDSN","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","substr","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","context","func","undefined","wrap","_before","wrapped","deep","_ignoreNextOnError","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","T","event","reason","unhandledPromiseRejection","B","_promiseRejectionHandler","bind","addEventListener","P","removeEventListener","ex","trimHeadFrames","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","U","currentOptions","exKeys","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","setDataCallback","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","L","setTimeout","$","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","_","evtName","_keypressTimeout","target","category","ba","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","ca","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","C","_originalFunctionToString","Q","D","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","type","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","E","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","R","builtin","S","F","installer","concat","G","str","m","exec","allowSecretKey","J","port","A","V","stackInfo","_triggerEvent","_processException","lineno","X","frame","_normalizeFrame","in_app","ga","stackInfoUrl","normalized","filename","line","colno","column","function","fa","prefixedMessage","exception","values","culprit","ha","request","Referer","breadcrumbs","_trimBreadcrumbs","ia","urlProp","urlProps","ja","httpData","userAgent","User-Agent","referrer","y","_backoffDuration","_backoffStart","ma","na","current","last","oa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Y","baseData","project","platform","_getHttpData","serverName","server_name","_sanitizeData","forEach","random","_sendProcessedPayload","pa","ra","qa","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","sa","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","onerror","open","setRequestHeader","send","ta","hash","evaluated","z","Z","setUser","setReleaseContext","10","8","9","RavenConstructor","_Raven","noConflict","Client","what","supportsErrorEvent","ErrorEvent","supportsDOMError","DOMError","supportsDOMException","DOMException","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","wrappedCallback","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","sanitizeMask","safeInput","o_O","getLocationHref","getLocationOrigin","origin","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","responseText","sourceMaps","sourceMapAddress","charAt","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","string","raw"],"mappings":";CAYA,SAAUA,GAAG,GAAoB,gBAAVC,UAAoC,mBAATC,QAAsBA,OAAOD,QAAQD,QAAS,IAAmB,kBAATG,SAAqBA,OAAOC,IAAKD,UAAUH,OAAO,CAAC,GAAIK,EAAkCA,GAAb,mBAATC,QAAwBA,OAA+B,mBAATC,QAAwBA,OAA6B,mBAAPC,MAAsBA,KAAYC,KAAKJ,EAAEK,MAAQV,MAAO,WAAqC,MAAO,SAAUW,GAAEC,EAAEC,EAAEC,GAAG,QAASC,GAAEC,EAAEC,GAAG,IAAIJ,EAAEG,GAAG,CAAC,IAAIJ,EAAEI,GAAG,CAAC,GAAIE,GAAkB,kBAATC,UAAqBA,OAAQ,KAAIF,GAAGC,EAAE,MAAOA,GAAEF,GAAE,EAAI,IAAGI,EAAE,MAAOA,GAAEJ,GAAE,EAAI,IAAIhB,GAAE,GAAIqB,OAAM,uBAAuBL,EAAE,IAAK,MAAMhB,GAAEsB,KAAK,mBAAmBtB,EAAE,GAAIuB,GAAEV,EAAEG,IAAIf,WAAYW,GAAEI,GAAG,GAAGQ,KAAKD,EAAEtB,QAAQ,SAASU,GAAG,GAAIE,GAAED,EAAEI,GAAG,GAAGL,EAAG,OAAOI,GAAEF,EAAEA,EAAEF,IAAIY,EAAEA,EAAEtB,QAAQU,EAAEC,EAAEC,EAAEC,GAAG,MAAOD,GAAEG,GAAGf,QAAkD,IAAI,GAA1CmB,GAAkB,kBAATD,UAAqBA,QAAgBH,EAAE,EAAEA,EAAEF,EAAEW,OAAOT,IAAID,EAAED,EAAEE,GAAI,OAAOD,KAAKW,GAAG,SAASC,EAAQzB,EAAOD,GAcp0B,QAAS2B,GAAclB,EAAOmB,EAASC,GACrCD,EAAUA,GAAWvB,OAAOuB,YAC5BC,EAAgBA,KAEhB,IAAIC,GAAYD,EAAcE,SAAW,QAAS,OAAQ,OAAQ,QAC9D,WAAYH,IAASE,EAAUE,KAAK,SAOxC,KALA,GAAIC,GAAW,SAASC,EAAKC,GAC3B1B,EAAM2B,eAAeF,EAAKC,IAGxBE,EAAQP,EAAUQ,MACfD,GACLE,EAAkBX,EAASS,EAAOJ,GAClCI,EAAQP,EAAUQ,MAhBtB,GAAIC,GAAoBb,EAAQ,GAAGc,UAoBnCvC,GAAOD,QAAU2B,EAEjBD,EAAQ,GAAGe,UAAUxC,EAAOD,WACzB0C,EAAI,EAAEC,EAAI,IAAIC,GAAG,SAASlB,EAAQzB,EAAOD,GAM5C,QAAS6C,GAAoBC,GAC3B,GAAIA,EAAGC,QAAUD,EACf,MAAO,eAET,IAAIE,GAAOF,EAAGG,OAASH,EAAGI,SAASF,MAAQF,EAAGI,SAASC,cAAgBL,EAAGE,IAC1E,QACGA,EAAO,cAAgBA,EAAO,IAAM,wBACpCF,EAAGG,QAAUH,EAAGI,SAASE,OAAS,OAASN,EAAGI,SAASE,OAAS,IAIrE,QAASC,GAAU5C,EAAO6C,GAIxB,GAHAA,EAAMA,GAAOjD,OAAOiD,IAGfA,GAAQA,EAAIC,OAAjB,CAEA,GAAIC,GAAcF,EAAIC,OAAOE,YAC7BH,GAAIC,OAAOE,aAAe,SAAyBC,EAAOZ,EAAIa,GAC5D,GAAIC,KAGuC,qBAAvCC,OAAOC,UAAUC,SAASxC,KAAKuB,KACjCc,EAASI,cAAgBnB,EAAoBC,GAC7Cc,EAASK,UAAYnB,EAAGI,SAASe,WAGf,mBAATN,KACTC,EAASM,cAAgBP,GAG3BlD,EAAM0D,iBAAiBT,GACrBU,MAAOR,IAGkB,kBAAhBJ,IACTA,EAAYjC,KAAKf,KAAMkD,EAAOZ,EAAIa,KAKxC1D,EAAOD,QAAUqD,EAEjB3B,EAAQ,GAAGe,UAAUxC,EAAOD,WACzB2C,EAAI,IAAI0B,GAAG,SAAS3C,EAAQzB,EAAOD,GACtC,QAASsE,GAAiBC,GACxB/D,KAAKwC,KAAO,mBACZxC,KAAK+D,QAAUA,EAEjBD,EAAiBR,UAAY,GAAI1C,OACjCkD,EAAiBR,UAAUU,YAAcF,EAEzCrE,EAAOD,QAAUsE,OAEX5B,GAAG,SAAShB,EAAQzB,EAAOD,GACjC,GAAIyE,GAAQ/C,EAAQ,GAEhBc,EAAa,SAASZ,EAASS,EAAOJ,GACxC,GAAIyC,GAAuB9C,EAAQS,GAC/BsC,EAAkB/C,CAEtB,IAAMS,IAAST,GAAf,CAIA,GAAIgD,GAAwB,SAAVvC,EAAmB,UAAYA,CAEjDT,GAAQS,GAAS,WACf,GAAIwC,MAAUC,MAAMvD,KAAKwD,WAErB7C,EAAMuC,EAAMO,SAASH,EAAM,KAC3B1C,GAAQE,MAAOuC,EAAaK,OAAQ,UAAWb,OAAQW,UAAWF,GAExD,YAAVxC,EACEwC,EAAK,MAAO,IAEd3C,EACE,sBAAwBuC,EAAMO,SAASH,EAAKC,MAAM,GAAI,MAAQ,kBAChE3C,EAAKiC,MAAMW,UAAYF,EAAKC,MAAM,GAClC7C,GAAYA,EAASC,EAAKC,IAG5BF,GAAYA,EAASC,EAAKC,GAIxBuC,GAGFQ,SAASpB,UAAUqB,MAAM5D,KAAKmD,EAAsBC,EAAiBE,KAK3E5E,GAAOD,SACLwC,WAAYA,KAGX4C,EAAI,IAAIC,GAAG,SAAS3D,EAAQzB,EAAOD,IACtC,SAAWM,GA4CX,QAASgF,KACP,OAAQ,GAAIC,MAWd,QAASC,GAAqBC,EAAUxD,GACtC,MAAOyD,GAAWzD,GACd,SAASE,GACP,MAAOF,GAASE,EAAMsD,IAExBxD,EAMN,QAASxB,KACPD,KAAKmF,IAA8B,gBAATC,QAAqBA,KAAKC,WAEpDrF,KAAKsF,GAAgBC,EAAYC,GACjCxF,KAAKyF,GAAiBF,EAAYG,GAClC1F,KAAK2F,EAAyB,KAC9B3F,KAAK4F,EAAY,KACjB5F,KAAK6F,EAAe,KACpB7F,KAAK8F,EAAgB,KACrB9F,KAAK+F,EAAa,KAClB/F,KAAKgG,EAAiB,KACtBhG,KAAKiG,KACLjG,KAAKkG,GAEHC,QAASC,EAAQC,gBAAkBD,EAAQC,eAAeC,GAC1D7B,OAAQ,aACR8B,gBACAC,cACAC,iBACAC,gBACAC,QAAS,KACTC,qBAAqB,EACrBC,4BAA4B,EAC5BC,iBAAkB,EAElBC,aAAc,IACdC,gBAAiB,GACjBC,iBAAiB,EACjBC,YAAY,EACZC,WAAY,EACZC,iBAEFpH,KAAKqH,GACHC,OAAQ,OACRC,WAAW,EAKXC,eAAgBC,IAA2B,SAAW,IAExDzH,KAAK0H,EAAiB,EACtB1H,KAAK2H,GAAoB,EACzB3H,KAAK4H,EAAgChH,MAAMoG,gBAG3ChH,KAAK6H,EAAmBzB,EAAQhF,YAChCpB,KAAK8H,KACL9H,KAAK+H,KACL/H,KAAKgI,EAAalD,IAClB9E,KAAKiI,KACLjI,KAAKkI,KACLlI,KAAKmI,EAAqB,KAE1BnI,KAAKoI,EAAYhC,EAAQiC,SACzBrI,KAAKsI,EAAYtI,KAAKoI,GAAapI,KAAKoI,EAAUG,KAClDvI,KAAKwI,GAGL,KAAK,GAAIlB,KAAUtH,MAAK6H,EACtB7H,KAAK8H,EAAwBR,GAAUtH,KAAK6H,EAAiBP,GA5HjE,GAAImB,GAAWvH,EAAQ,GACnBmE,EAAYnE,EAAQ,GACpBwH,EAAMxH,EAAQ,IACd4C,EAAmB5C,EAAQ,GAE3B+C,EAAQ/C,EAAQ,GAChByH,EAAe1E,EAAM0E,aACrBC,EAAa3E,EAAM2E,WACnBC,EAAiB5E,EAAM4E,eACvBC,EAAU7E,EAAM6E,QAChBC,EAAW9E,EAAM8E,SACjBC,EAAgB/E,EAAM+E,cACtBzD,EAActB,EAAMsB,YACpBL,EAAajB,EAAMiB,WACnB+D,EAAWhF,EAAMgF,SACjBC,EAAUjF,EAAMiF,QAChBC,EAAgBlF,EAAMkF,cACtBC,EAAOnF,EAAMmF,KACbC,EAAcpF,EAAMoF,YACpBC,EAAWrF,EAAMqF,SACjBC,EAAetF,EAAMsF,aACrBC,EAASvF,EAAMuF,OACfC,EAAaxF,EAAMwF,WACnBC,EAAYzF,EAAMyF,UAClBC,EAAQ1F,EAAM0F,MACdC,EAAmB3F,EAAM2F,iBACzBC,EAAkB5F,EAAM4F,gBACxBC,EAAmB7F,EAAM6F,iBACzBC,EAAW9F,EAAM8F,SACjBC,EAAO/F,EAAM+F,KACbC,EAAgBhG,EAAMgG,cACtBxC,EAAyBxD,EAAMwD,uBAC/ByC,EAA0BjG,EAAMiG,wBAChCC,EAAqBlG,EAAMkG,mBAC3BC,EAAWnG,EAAMmG,SAEjBrI,EAAoBb,EAAQ,GAAGc,WAE/BqI,EAAU,2CAA2CC,MAAM,KAC7DC,EAAa,gEAOXnE,EACgB,mBAAXvG,QACHA,OACkB,mBAAXC,GAAyBA,EAAyB,mBAATC,MAAuBA,QACzEyF,EAAYY,EAAQoE,SACpB9E,EAAaU,EAAQqE,SAmFzBxK,GAAMqD,WAKJoH,QAAS,SAETC,OAAO,EAEPlC,SAAUA,EASV1F,OAAQ,SAAS6H,EAAKC,GACpB,GAAI9K,GAAOC,IAEX,IAAID,EAAK+F,EAEP,MADA9F,MAAK8K,EAAU,QAAS,4CACjB/K,CAET,KAAK6K,EAAK,MAAO7K,EAEjB,IAAIgL,GAAgBhL,EAAKmG,CAGrB2E,IACFzB,EAAKyB,EAAS,SAASG,EAAKC,GAEd,SAARD,GAA0B,UAARA,GAA2B,SAARA,EACvCjL,EAAKkG,EAAe+E,GAAOC,EAE3BF,EAAcC,GAAOC,IAK3BlL,EAAKmL,OAAON,GAIZG,EAAcxE,aAAa/E,KAAK,qBAChCuJ,EAAcxE,aAAa/E,KAAK,iDAGhCuJ,EAAcxE,aAAekD,EAAWsB,EAAcxE,cACtDwE,EAAcvE,aAAauE,EAAcvE,WAAWxF,QAChDyI,EAAWsB,EAAcvE,YAE7BuE,EAActE,gBAAgBsE,EAActE,cAAczF,QACtDyI,EAAWsB,EAActE,eAE7BsE,EAAcrE,aAAe+C,EAAWsB,EAAcrE,cACtDqE,EAAcI,eAAiBC,KAAKC,IAClC,EACAD,KAAKE,IAAIP,EAAcI,gBAAkB,IAAK,KAGhD,IAAII,IACFC,KAAK,EACLpK,SAAS,EACTqK,KAAK,EACLpD,UAAU,EACVqD,QAAQ,GAGNzE,EAAkB8D,EAAc9D,eACM,wBAAnC1D,SAASxC,KAAKkG,GACnBA,EAAkBoC,EAAYkC,EAAwBtE,GAC7CA,KAAoB,IAC7BA,EAAkBsE,GAEpBR,EAAc9D,gBAAkBA,CAEhC,IAAI0E,IACFC,UAAU,GAGR1E,EAAa6D,EAAc7D,UAW/B,OAVqC,uBAA9B3D,SAASxC,KAAKmG,GACnBA,EAAamC,EAAYsC,EAAoBzE,GACpCA,KAAe,IACxBA,EAAayE,GAEfZ,EAAc7D,WAAaA,EAE3BuB,EAAS7B,sBAAwBmE,EAAcnE,oBAGxC7G,GAWT8L,QAAS,WACP,GAAI9L,GAAOC,IAyBX,OAxBID,GAAK+L,YAAc/L,EAAK4H,IAC1Bc,EAASsD,OAAOC,UAAU,WACxBjM,EAAKkM,EAAwBtH,MAAM5E,EAAMwE,aAGvCxE,EAAKmG,EAAeW,4BACtB9G,EAAKmM,IAGPnM,EAAKoM,IAEDpM,EAAKmG,EAAegB,YAAcnH,EAAKmG,EAAegB,WAAW0E,UACnE7L,EAAKqM,IAGHrM,EAAKmG,EAAee,iBAAiBlH,EAAKsM,IAG9CtM,EAAKuM,IAELvM,EAAK4H,GAAoB,GAG3B/G,MAAMoG,gBAAkBjH,EAAKmG,EAAec,gBACrChH,MAQTkL,OAAQ,SAASN,GACf,GAAI7K,GAAOC,KACTuM,EAAMxM,EAAKyM,EAAU5B,GACrB6B,EAAYF,EAAIG,KAAKC,YAAY,KACjCD,EAAOH,EAAIG,KAAKE,OAAO,EAAGH,EAE5B1M,GAAK8M,EAAOjC,EACZ7K,EAAKgG,EAAawG,EAAIO,KACtB/M,EAAKgN,EAAgBR,EAAIS,MAAQT,EAAIS,KAAKJ,OAAO,GACjD7M,EAAKiG,EAAiBuG,EAAIG,KAAKE,OAAOH,EAAY,GAElD1M,EAAK+F,EAAgB/F,EAAKkN,EAAiBV,GAE3CxM,EAAKmN,EACHnN,EAAK+F,EAAgB,IAAM4G,EAAO,OAAS3M,EAAKiG,EAAiB,UAInEhG,KAAKwI,KAWP2E,QAAS,SAAStC,EAASuC,EAAM/I,GAO/B,MANIa,GAAW2F,KACbxG,EAAO+I,MACPA,EAAOvC,EACPA,EAAUwC,QAGLrN,KAAKsN,KAAKzC,EAASuC,GAAMzI,MAAM3E,KAAMqE,IAW9CiJ,KAAM,SAASzC,EAASuC,EAAMG,GAqC5B,QAASC,KACP,GAAInJ,MACF1D,EAAI4D,UAAUvD,OACdyM,GAAQ5C,GAAYA,GAAWA,EAAQ4C,QAAS,CAQlD,KANIF,GAAWrI,EAAWqI,IACxBA,EAAQ5I,MAAM3E,KAAMuE,WAKf5D,KAAK0D,EAAK1D,GAAK8M,EAAO1N,EAAKuN,KAAKzC,EAAStG,UAAU5D,IAAM4D,UAAU5D,EAE1E,KAKE,MAAOyM,GAAKzI,MAAM3E,KAAMqE,GACxB,MAAOnE,GAGP,KAFAH,GAAK2N,IACL3N,EAAK4D,iBAAiBzD,EAAG2K,GACnB3K,GA1DV,GAAIH,GAAOC,IAGX,IAAIuF,EAAY6H,KAAUlI,EAAW2F,GACnC,MAAOA,EAWT,IAPI3F,EAAW2F,KACbuC,EAAOvC,EACPA,EAAUwC,SAKPnI,EAAWkI,GACd,MAAOA,EAIT,KACE,GAAIA,EAAKO,EACP,MAAOP,EAIT,IAAIA,EAAKQ,EACP,MAAOR,GAAKQ,EAEd,MAAO1N,GAIP,MAAOkN,GA8BT,IAAK,GAAIS,KAAYT,GACf5D,EAAO4D,EAAMS,KACfL,EAAQK,GAAYT,EAAKS,GAW7B,OARAL,GAAQlK,UAAY8J,EAAK9J,UAEzB8J,EAAKQ,EAAoBJ,EAGzBA,EAAQG,GAAY,EACpBH,EAAQM,EAAWV,EAEZI,GAQTO,UAAW,WAWT,MAVAtF,GAASsD,OAAOgC,YAEhB/N,KAAKgO,IACLhO,KAAKiO,IACLjO,KAAKkO,IACLlO,KAAKmO,IAELvN,MAAMoG,gBAAkBhH,KAAK4H,EAC7B5H,KAAK2H,GAAoB,EAElB3H,MAWToO,EAA0B,SAASC,GACjCrO,KAAK8K,EAAU,QAAS,4CAA6CuD,GACrErO,KAAK2D,iBAAiB0K,EAAMC,QAC1B1K,OACE2K,2BAA2B,MAUjCC,EAAgC,WAI9B,MAHAxO,MAAKyO,EAA2BzO,KAAKyO,EAAyBC,KAAK1O,MACnEoG,EAAQuI,kBACNvI,EAAQuI,iBAAiB,qBAAsB3O,KAAKyO,GAC/CzO,MAQT4O,EAAgC,WAG9B,MAFAxI,GAAQyI,qBACNzI,EAAQyI,oBAAoB,qBAAsB7O,KAAKyO,GAClDzO,MAUT2D,iBAAkB,SAASmL,EAAIjE,GAG7B,GAFAA,EAAUxB,GAAa0F,eAAgB,GAAIlE,EAAUA,MAEjDlC,EAAamG,IAAOA,EAAG5L,MAEzB4L,EAAKA,EAAG5L,UACH,CAAA,GAAI0F,EAAWkG,IAAOjG,EAAeiG,GAAK,CAK/C,GAAItM,GAAOsM,EAAGtM,OAASoG,EAAWkG,GAAM,WAAa,gBACjD/K,EAAU+K,EAAG/K,QAAUvB,EAAO,KAAOsM,EAAG/K,QAAUvB,CAEtD,OAAOxC,MAAK4B,eACVmC,EACAsF,EAAYwB,GAGVmE,YAAY,EACZD,eAAgBlE,EAAQkE,eAAiB,KAGxC,GAAIjG,EAAQgG,GAEjBA,EAAKA,MACA,CAAA,IAAI9F,EAAc8F,GAavB,MAAO9O,MAAK4B,eACVkN,EACAzF,EAAYwB,GACVmE,YAAY,EACZD,eAAgBlE,EAAQkE,eAAiB,IAb7ClE,GAAU7K,KAAKiP,EAA2CpE,EAASiE,GACnEA,EAAK,GAAIlO,OAAMiK,EAAQ9G,UAkBzB/D,KAAK2F,EAAyBmJ,CAO9B,KACE,GAAII,GAAQzG,EAAS0G,kBAAkBL,EACvC9O,MAAKoP,EAAiBF,EAAOrE,GAC7B,MAAOwE,GACP,GAAIP,IAAOO,EACT,KAAMA,GAIV,MAAOrP,OAGTsP,EAA4C,SAASC,EAAgBT,GACnE,GAAIU,GAASnM,OAAOoM,KAAKX,GAAIY,OACzB7E,EAAUxB,EAAYkG,GACxBxL,QACE,2CAA6CmG,EAAwBsF,GACvEG,aAAcjH,EAAI8G,IAClB5L,MAAO2L,EAAe3L,WAIxB,OAFAiH,GAAQjH,MAAMgM,EAAiBzF,EAAmB2E,GAE3CjE,GAUTjJ,eAAgB,SAASF,EAAKmJ,GAI5B,IACI7K,KAAKkG,EAAeK,aAAasJ,OACnC7P,KAAKkG,EAAeK,aAAasJ,KAAKnO,GAFxC,CAOAmJ,EAAUA,MACVnJ,GAAY,EAEZ,IAOIoN,GAPAnN,EAAO0H,GAEPtF,QAASrC,GAEXmJ,EAQF,KACE,KAAM,IAAIjK,OAAMc,GAChB,MAAO2N,GACPP,EAAKO,EAIPP,EAAGtM,KAAO,IACV,IAAI0M,GAAQzG,EAAS0G,kBAAkBL,GAGnCgB,EAAc5G,EAAQgG,EAAMA,QAAUA,EAAMA,MAAM,EAKlDY,IAAoC,2BAArBA,EAAY1C,OAC7B0C,EAAcZ,EAAMA,MAAM,GAG5B,IAAIa,GAAWD,GAAeA,EAAYE,KAAQ,EAElD,MACIhQ,KAAKkG,EAAeM,WAAWqJ,OACjC7P,KAAKkG,EAAeM,WAAWqJ,KAAKE,OAMlC/P,KAAKkG,EAAeO,cAAcoJ,MACnC7P,KAAKkG,EAAeO,cAAcoJ,KAAKE,IAF1C,CAOA,GAAI/P,KAAKkG,EAAe8I,YAAenE,GAAWA,EAAQmE,WAAa,CAErErN,EAAKgO,YAAkC,MAApBhO,EAAKgO,YAAsBjO,EAAMC,EAAKgO,YAEzD9E,EAAUxB,GAEN0F,eAAgB,GAElBlE,GAMFA,EAAQkE,gBAAkB,CAE1B,IAAIkB,GAASjQ,KAAKkQ,EAAehB,EAAOrE,EACxClJ,GAAKqN,YAEHiB,OAAQA,EAAOE,WAcnB,MATIxO,GAAKgO,cACPhO,EAAKgO,YAAczG,EAAQvH,EAAKgO,aAC5BhO,EAAKgO,aACJhO,EAAKgO,cAIZ3P,KAAKoQ,EAAMzO,GAEJ3B,QAGTqQ,kBAAmB,SAASC,GAC1B,GAAIC,GAAQlH,GAERmH,UAAW1L,IAAQ,KAErBwL,EAGF,IAAIpL,EAAWlF,KAAKkG,EAAeuK,oBAAqB,CACtD,GAAIC,GAAS1Q,KAAKkG,EAAeuK,mBAAmBF,EAEpD,IAAIxH,EAAS2H,KAAYvH,EAAcuH,GACrCH,EAAQG,MACH,IAAIA,KAAW,EACpB,MAAO1Q,MAQX,MAJAA,MAAKkI,EAAa1G,KAAK+O,GACnBvQ,KAAKkI,EAAalH,OAAShB,KAAKkG,EAAeiF,gBACjDnL,KAAKkI,EAAayI,QAEb3Q,MAGTiC,UAAW,SAAS2O,GAClB,GAAIC,MAAgBvM,MAAMvD,KAAKwD,UAAW,EAO1C,OALAvE,MAAK+H,EAASvG,MAAMoP,EAAQC,IACxB7Q,KAAK2H,GACP3H,KAAKsM,IAGAtM,MAST8Q,eAAgB,SAAShE,GAIvB,MAFA9M,MAAKiG,EAAe6G,KAAOA,EAEpB9M,MAST+Q,gBAAiB,SAASnN,GAGxB,MAFA5D,MAAKgR,EAAc,QAASpN,GAErB5D,MASTiR,eAAgB,SAASC,GAGvB,MAFAlR,MAAKgR,EAAc,OAAQE,GAEpBlR,MAQTmR,aAAc,WAGZ,MAFAnR,MAAKiG,KAEEjG,MAQToR,WAAY,WAEV,MAAOhM,MAAKiM,MAAMhM,EAAUrF,KAAKiG,KASnCqL,eAAgB,SAASC,GAGvB,MAFAvR,MAAKkG,EAAeqL,YAAcA,EAE3BvR,MASTwR,WAAY,SAASrL,GAGnB,MAFAnG,MAAKkG,EAAeC,QAAUA,EAEvBnG,MAUTyR,gBAAiB,SAAShQ,GACxB,GAAIwD,GAAWjF,KAAKkG,EAAewL,YAEnC,OADA1R,MAAKkG,EAAewL,aAAe1M,EAAqBC,EAAUxD,GAC3DzB,MAUT2R,sBAAuB,SAASlQ,GAC9B,GAAIwD,GAAWjF,KAAKkG,EAAeuK,kBAEnC,OADAzQ,MAAKkG,EAAeuK,mBAAqBzL,EAAqBC,EAAUxD,GACjEzB,MAUT4R,sBAAuB,SAASnQ,GAC9B,GAAIwD,GAAWjF,KAAKkG,EAAe2L,kBAEnC,OADA7R,MAAKkG,EAAe2L,mBAAqB7M,EAAqBC,EAAUxD,GACjEzB,MAYT8R,aAAc,SAASC,GAGrB,MAFA/R,MAAKkG,EAAe6L,UAAYA,EAEzB/R,MAQTgS,cAAe,WACb,MAAOhS,MAAK2F,GAQdsM,YAAa,WACX,MAAOjS,MAAK6F,GAQdiG,QAAS,WACP,QAAK9L,KAAKmF,MACLnF,KAAK8F,IACH9F,KAAKkS,0BACRlS,KAAKkS,yBAA0B,EAC/BlS,KAAK8K,EAAU,QAAS,2CAEnB,KAKXqH,UAAW,WAIT,GAAIC,GAAchM,EAAQgM,WACtBA,IACFpS,KAAK+C,OAAOqP,EAAYxH,IAAKwH,EAAYrP,QAAQ8I,WAIrDwG,iBAAkB,SAASxH,GACzB,GACGrF,EADH,CAKAqF,EAAUA,KAEV,IAAIoH,GAAcpH,EAAQyH,SAAWtS,KAAKiS,aAC1C,KAAKA,EACH,KAAM,IAAInO,GAAiB,kBAG7B,IAAI8G,GAAMC,EAAQD,KAAO5K,KAAK6M,CAC9B,KAAKjC,EACH,KAAM,IAAI9G,GAAiB,cAG7B,IAAIyO,GAASC,mBACTC,EAAK,EACTA,IAAM,YAAcF,EAAON,GAC3BQ,GAAM,QAAUF,EAAO3H,EAEvB,IAAIkC,GAAOjC,EAAQiC,MAAQ9M,KAAKiG,EAAe6G,IAC3CA,KACEA,EAAKtK,OAAMiQ,GAAM,SAAWF,EAAOzF,EAAKtK,OACxCsK,EAAK4F,QAAOD,GAAM,UAAYF,EAAOzF,EAAK4F,QAGhD,IAAIC,GAAe3S,KAAKiN,EAAiBjN,KAAKwM,EAAU5B,IAEpDgI,EAASpN,EAAUqN,cAAc,SACrCD,GAAOE,OAAQ,EACfF,EAAOG,IAAMJ,EAAe,yBAA2BF,GACtDjN,EAAUwN,MAAQxN,EAAUyN,MAAMC,YAAYN,KAIjDO,EAAoB,WAClB,GAAIpT,GAAOC,IACXA,MAAK0H,GAAkB,EACvB0L,WAAW,WAETrT,EAAK2H,GAAkB,KAI3B2L,EAAe,SAASC,EAAWzI,GAEjC,GAAI0I,GAAKvI,CAET,IAAKhL,KAAKsF,EAAV,CAEAuF,EAAUA,MAEVyI,EAAY,QAAUA,EAAU1G,OAAO,EAAG,GAAG4G,cAAgBF,EAAU1G,OAAO,GAE1EpH,EAAUiO,aACZF,EAAM/N,EAAUiO,YAAY,cAC5BF,EAAIG,UAAUJ,GAAW,GAAM,KAE/BC,EAAM/N,EAAUmO,oBAChBJ,EAAID,UAAYA,EAGlB,KAAKtI,IAAOH,GACNrB,EAAOqB,EAASG,KAClBuI,EAAIvI,GAAOH,EAAQG,GAGvB,IAAIxF,EAAUiO,YAEZjO,EAAUoO,cAAcL,OAIxB,KACE/N,EAAUqO,UAAU,KAAON,EAAID,UAAUQ,cAAeP,GACxD,MAAOrT,OAYb6T,EAAyB,SAASC,GAChC,GAAIjU,GAAOC,IACX,OAAO,UAASuT,GASd,GALAxT,EAAKkU,GAAmB,KAKpBlU,EAAKoI,IAAuBoL,EAAhC,CAEAxT,EAAKoI,EAAqBoL,CAM1B,IAAIW,EACJ,KACEA,EAAStK,EAAiB2J,EAAIW,QAC9B,MAAOhU,GACPgU,EAAS,YAGXnU,EAAKsQ,mBACH8D,SAAU,MAAQH,EAClBjQ,QAASmQ,OAUfE,GAAuB,WACrB,GAAIrU,GAAOC,KACTqU,EAAmB,GAKrB,OAAO,UAASd,GACd,GAAIW,EACJ,KACEA,EAASX,EAAIW,OACb,MAAOhU,GAGP,OAEF,GAAIoU,GAAUJ,GAAUA,EAAOI,OAK/B,IACGA,IACY,UAAZA,GAAmC,aAAZA,GAA2BJ,EAAOK,mBAF5D,CAQA,GAAIC,GAAUzU,EAAKkU,EACdO,IACHzU,EAAK0U,EAAwB,SAASlB,GAExCmB,aAAaF,GACbzU,EAAKkU,GAAmBb,WAAW,WACjCrT,EAAKkU,GAAmB,MACvBI,MAUPM,GAAmB,SAASC,EAAMC,GAChC,GAAIC,GAAY/K,EAAS/J,KAAKoI,EAAUG,MACpCwM,EAAWhL,EAAS8K,GACpBG,EAAajL,EAAS6K,EAK1B5U,MAAKsI,EAAYuM,EAIbC,EAAUG,WAAaF,EAASE,UAAYH,EAAUI,OAASH,EAASG,OAC1EL,EAAKE,EAASI,UACZL,EAAUG,WAAaD,EAAWC,UAAYH,EAAUI,OAASF,EAAWE,OAC9EN,EAAOI,EAAWG,UAEpBnV,KAAKqQ,mBACH8D,SAAU,aACVxS,MACEkT,GAAIA,EACJD,KAAMA,MAKZQ,EAAwB,WACtB,GAAIrV,GAAOC,IACXD,GAAKsV,GAA4B3Q,SAASpB,UAAUC,SAEpDmB,SAASpB,UAAUC,SAAW,WAC5B,MAAoB,kBAATvD,OAAuBA,KAAK2N,EAC9B5N,EAAKsV,GAA0B1Q,MAAM3E,KAAK8N,EAAUvJ,WAEtDxE,EAAKsV,GAA0B1Q,MAAM3E,KAAMuE,aAItD+Q,EAA0B,WACpBtV,KAAKqV,KAEP3Q,SAASpB,UAAUC,SAAWvD,KAAKqV,KAQvCE,EAAqB,WAKnB,QAASC,GAAWC,GAClB,MAAO,UAASC,EAAIvV,GAKlB,IAAK,GADDkE,GAAO,GAAIsR,OAAMpR,UAAUvD,QACtBL,EAAI,EAAGA,EAAI0D,EAAKrD,SAAUL,EACjC0D,EAAK1D,GAAK4D,UAAU5D,EAEtB,IAAIiV,GAAmBvR,EAAK,EAQ5B,OAPIa,GAAW0Q,KACbvR,EAAK,GAAKtE,EAAKuN,KAAKsI,IAMlBH,EAAK9Q,MACA8Q,EAAK9Q,MAAM3E,KAAMqE,GAEjBoR,EAAKpR,EAAK,GAAIA,EAAK,KAOhC,QAASwR,GAAgB/V,GACvB,GAAIgW,GAAQ1P,EAAQtG,IAAWsG,EAAQtG,GAAQwD,SAC3CwS,IAASA,EAAMC,gBAAkBD,EAAMC,eAAe,sBACxD/L,EACE8L,EACA,mBACA,SAASL,GACP,MAAO,UAASzB,EAAS0B,EAAIM,EAASC,GAEpC,IACMP,GAAMA,EAAGQ,cACXR,EAAGQ,YAAcnW,EAAKuN,KAAKoI,EAAGQ,cAEhC,MAAOC,IAMT,GAAIC,GAAQC,EAAcC,CA6B1B,OA1BErP,IACAA,EAAgBwE,MACJ,gBAAX3L,GAAuC,SAAXA,KAI7BuW,EAAetW,EAAK0U,EAAwB,SAC5C6B,EAAkBvW,EAAKwW,KACvBH,EAAS,SAAS7C,GAIhB,GAAKA,EAAL,CAEA,GAAID,EACJ,KACEA,EAAYC,EAAIiD,KAChB,MAAOtW,GAGP,OAEF,MAAkB,UAAdoT,EAA8B+C,EAAa9C,GACxB,aAAdD,EAAiCgD,EAAgB/C,GAArD,UAGFkC,EAAK1U,KACVf,KACAgU,EACAjU,EAAKuN,KAAKoI,EAAIrI,OAAW+I,GACzBJ,EACAC,KAINQ,GAEFzM,EACE8L,EACA,sBACA,SAASL,GACP,MAAO,UAASlC,EAAKmC,EAAIM,EAASC,GAChC,IACEP,EAAKA,IAAOA,EAAG9H,EAAoB8H,EAAG9H,EAAoB8H,GAC1D,MAAOxV,IAGT,MAAOuV,GAAK1U,KAAKf,KAAMuT,EAAKmC,EAAIM,EAASC,KAG7CQ,IAvGN,GAAI1W,GAAOC,KAEPyW,EAAkB1W,EAAKkI,EA2BvBhB,EAAkBjH,KAAKkG,EAAee,eA+E1C+C,GAAK5D,EAAS,aAAcoP,EAAYiB,GACxCzM,EAAK5D,EAAS,cAAeoP,EAAYiB,GACrCrQ,EAAQsQ,uBACV1M,EACE5D,EACA,wBACA,SAASqP,GACP,MAAO,UAASkB,GACd,MAAOlB,GAAK1V,EAAKuN,KAAKqJ,MAG1BF,EAqCJ,KAAK,GA/BDG,IACF,cACA,SACA,OACA,mBACA,iBACA,oBACA,kBACA,cACA,aACA,qBACA,cACA,aACA,iBACA,eACA,kBACA,cACA,cACA,eACA,qBACA,SACA,YACA,eACA,gBACA,YACA,kBACA,SACA,iBACA,4BACA,wBAEOjW,EAAI,EAAGA,EAAIiW,EAAa5V,OAAQL,IACvCkV,EAAgBe,EAAajW,KAajCkW,EAAwB,WAMtB,QAASC,GAASC,EAAMvL,GAClBuL,IAAQvL,IAAOtG,EAAWsG,EAAIuL,KAChC/M,EAAKwB,EAAKuL,EAAM,SAAStB,GACvB,MAAO1V,GAAKuN,KAAKmI,KARvB,GAAI1V,GAAOC,KACPiH,EAAkBjH,KAAKkG,EAAee,gBAEtCwP,EAAkB1W,EAAKkI,CAU3B,IAAIhB,EAAgBuE,KAAO,kBAAoBpF,GAAS,CACtD,GAAI4Q,GAAW5Q,EAAQ6Q,gBAAkB7Q,EAAQ6Q,eAAe3T,SAChE0G,GACEgN,EACA,OACA,SAASE,GACP,MAAO,UAAS5P,EAAQ0I,GAYtB,MARI/G,GAAS+G,IAAQA,EAAImH,QAAQpX,EAAKgG,UACpC/F,KAAKoX,IACH9P,OAAQA,EACR0I,IAAKA,EACLqH,YAAa,OAIVH,EAASvS,MAAM3E,KAAMuE,aAGhCkS,GAGFzM,EACEgN,EACA,OACA,SAASM,GACP,MAAO,YAIL,QAASC,KACP,GAAI/L,EAAI4L,IAAkC,IAAnB5L,EAAIgM,WAAkB,CAC3C,IAGEhM,EAAI4L,GAAYC,YAAc7L,EAAIiM,OAClC,MAAOvX,IAITH,EAAKsQ,mBACHmG,KAAM,OACNrC,SAAU,MACVxS,KAAM6J,EAAI4L,MAMhB,IAAK,GArBD5L,GAAMxL,KAoBN0X,GAAS,SAAU,UAAW,cACzBC,EAAI,EAAGA,EAAID,EAAM1W,OAAQ2W,IAChCb,EAASY,EAAMC,GAAInM,EAiBrB,OAdI,sBAAwBA,IAAOtG,EAAWsG,EAAIoM,oBAChD5N,EACEwB,EACA,qBACA,SAASiK,GACP,MAAO1V,GAAKuN,KAAKmI,EAAMpI,OAAWkK,KAMtC/L,EAAIoM,mBAAqBL,EAGpBD,EAAS3S,MAAM3E,KAAMuE,aAGhCkS,GAIAxP,EAAgBuE,KAAOvB,KACzBD,EACE5D,EACA,QACA,SAASyR,GACP,MAAO,YAKL,IAAK,GADDxT,GAAO,GAAIsR,OAAMpR,UAAUvD,QACtBL,EAAI,EAAGA,EAAI0D,EAAKrD,SAAUL,EACjC0D,EAAK1D,GAAK4D,UAAU5D,EAGtB,IAEIqP,GAFA8H,EAAazT,EAAK,GAClBiD,EAAS,KAeb,IAZ0B,gBAAfwQ,GACT9H,EAAM8H,EACG,WAAa1R,IAAW0R,YAAsB1R,GAAQ2R,SAC/D/H,EAAM8H,EAAW9H,IACb8H,EAAWxQ,SACbA,EAASwQ,EAAWxQ,SAGtB0I,EAAM,GAAK8H,EAIT9H,EAAImH,QAAQpX,EAAKgG,QACnB,MAAO8R,GAAUlT,MAAM3E,KAAMqE,EAG3BA,GAAK,IAAMA,EAAK,GAAGiD,SACrBA,EAASjD,EAAK,GAAGiD,OAGnB,IAAI0Q,IACF1Q,OAAQA,EACR0I,IAAKA,EACLqH,YAAa,KAGf,OAAOQ,GACJlT,MAAM3E,KAAMqE,GACZ4T,KAAK,SAASC,GASb,MARAF,GAAUX,YAAca,EAAST,OAEjC1X,EAAKsQ,mBACHmG,KAAM,OACNrC,SAAU,QACVxS,KAAMqW,IAGDE,IAER,SAAS,SAAS/B,GASjB,KAPApW,GAAKsQ,mBACHmG,KAAM,OACNrC,SAAU,QACVxS,KAAMqW,EACNnW,MAAO,UAGHsU,MAIdM,GAMAxP,EAAgBwE,KAAOzL,KAAKsF,IAC1BE,EAAUmJ,kBACZnJ,EAAUmJ,iBAAiB,QAAS5O,EAAK0U,EAAwB,UAAU,GAC3EjP,EAAUmJ,iBAAiB,WAAY5O,EAAKwW,MAAyB,IAC5D/Q,EAAU2S,cAEnB3S,EAAU2S,YAAY,UAAWpY,EAAK0U,EAAwB,UAC9DjP,EAAU2S,YAAY,aAAcpY,EAAKwW,OAQ7C,IAAI6B,GAAShS,EAAQgS,OACjBC,EAAsBD,GAAUA,EAAOE,KAAOF,EAAOE,IAAIC,QACzDC,GACDH,GACDjS,EAAQqS,SACRA,QAAQC,WACRD,QAAQE,YACV,IAAI1R,EAAgBoB,UAAYmQ,EAAwB,CAEtD,GAAII,GAAgBxS,EAAQyS,UAC5BzS,GAAQyS,WAAa,WACnB,GAAIC,GAAc/Y,EAAKqI,EAAUG,IAGjC,IAFAxI,EAAKgZ,GAAkBhZ,EAAKuI,EAAWwQ,GAEnCF,EACF,MAAOA,GAAcjU,MAAM3E,KAAMuE,WAIrC,IAAIyU,GAA6B,SAASC,GAGxC,MAAO,YACL,GAAIjJ,GAAMzL,UAAUvD,OAAS,EAAIuD,UAAU,GAAK8I,MAQhD,OALI2C,IAEFjQ,EAAKgZ,GAAkBhZ,EAAKuI,EAAW0H,EAAM,IAGxCiJ,EAAiBtU,MAAM3E,KAAMuE,YAIxCyF,GAAKyO,QAAS,YAAaO,EAA4BvC,GACvDzM,EAAKyO,QAAS,eAAgBO,EAA4BvC,GAG5D,GAAIxP,EAAgB7F,SAAW,WAAagF,IAAWhF,QAAQ8X,IAAK,CAElE,GAAIC,GAAwB,SAASzX,EAAKC,GACxC5B,EAAKsQ,mBACHtM,QAASrC,EACTG,MAAOF,EAAKE,MACZsS,SAAU,YAId/K,IAAM,QAAS,OAAQ,OAAQ,QAAS,OAAQ,SAAS2K,EAAGlS,GAC1DE,EAAkBX,QAASS,EAAOsX,OAKxCC,EAAkB,WAGhB,IADA,GAAIC,GACGrZ,KAAKiI,EAAiBjH,QAAQ,CACnCqY,EAAUrZ,KAAKiI,EAAiB0I,OAEhC,IAAIL,GAAM+I,EAAQ,GAChB7W,EAAO6W,EAAQ,GACf5D,EAAO4D,EAAQ,EAEjB/I,GAAI9N,GAAQiT,IAIhB6D,EAAiB,WAEf,IAAK,GAAIhS,KAAUtH,MAAK8H,EACtB9H,KAAK6H,EAAiBP,GAAUtH,KAAK8H,EAAwBR,IAIjEiS,EAAe,WACb,GAAIxZ,GAAOC,IAGXoJ,GAAKpJ,KAAK+H,EAAU,SAASgM,EAAGnD,GAC9B,GAAI4I,GAAY5I,EAAO,GACnBvM,EAAOuM,EAAO,EAClB4I,GAAU7U,MAAM5E,GAAOA,GAAM0Z,OAAOpV,OAIxCqV,EAAW,SAASC,GAClB,GAAIC,GAAIrP,EAAWsP,KAAKF,GACtB/O,KACAjK,EAAI,CAEN,KACE,KAAOA,KAAKiK,EAAIP,EAAQ1J,IAAMiZ,EAAEjZ,IAAM,GACtC,MAAOT,GACP,KAAM,IAAI4D,GAAiB,gBAAkB6V,GAG/C,GAAI/O,EAAIoC,OAAShN,KAAKkG,EAAe4T,eACnC,KAAM,IAAIhW,GACR,iFAIJ,OAAO8G,IAGTmP,EAAkB,SAASxN,GAEzB,GAAIoG,GAAe,KAAOpG,EAAI2I,MAAQ3I,EAAIyN,KAAO,IAAMzN,EAAIyN,KAAO,GAKlE,OAHIzN,GAAI0I,WACNtC,EAAepG,EAAI0I,SAAW,IAAMtC,GAE/BA,GAGTsH,EAAyB,WAElBja,KAAK0H,GACR1H,KAAKoP,EAAiBzK,MAAM3E,KAAMuE,YAItC2V,EAAkB,SAASC,EAAWtP,GACpC,GAAIoF,GAASjQ,KAAKkQ,EAAeiK,EAAWtP,EAE5C7K,MAAKoa,EAAc,UACjBD,UAAWA,EACXtP,QAASA,IAGX7K,KAAKqa,GACHF,EAAU3X,KACV2X,EAAUpW,QACVoW,EAAUnK,IACVmK,EAAUG,OACVrK,EACApF,IAIJ0P,EAAgB,SAASJ,EAAWtP,GAClC,GAAI9K,GAAOC,KACPiQ,IACJ,IAAIkK,EAAUjL,OAASiL,EAAUjL,MAAMlO,SACrCoI,EAAK+Q,EAAUjL,MAAO,SAASvO,EAAGuO,GAChC,GAAIsL,GAAQza,EAAK0a,GAAgBvL,EAAOiL,EAAUnK,IAC9CwK,IACFvK,EAAOzO,KAAKgZ,KAKZ3P,GAAWA,EAAQkE,gBACrB,IAAK,GAAI4I,GAAI,EAAGA,EAAI9M,EAAQkE,gBAAkB4I,EAAI1H,EAAOjP,OAAQ2W,IAC/D1H,EAAO0H,GAAG+C,QAAS,CAKzB,OADAzK,GAASA,EAAO3L,MAAM,EAAGtE,KAAKkG,EAAec,kBAI/C2T,GAAiB,SAASH,EAAOI,GAE/B,GAAIC,IACFC,SAAUN,EAAMxK,IAChBsK,OAAQE,EAAMO,KACdC,MAAOR,EAAMS,OACbC,WAAUV,EAAMpN,MAAQ,IAuB1B,OAfKoN,GAAMxK,MACT6K,EAAWC,SAAWF,GAGxBC,EAAWH,SAGN1a,KAAKkG,EAAeQ,aAAamJ,OACjC7P,KAAKkG,EAAeQ,aAAamJ,KAAKgL,EAAWC,WAEpD,qBAAqBjL,KAAKgL,EAAW,cAErC,qBAAqBhL,KAAKgL,EAAWC,WAGhCD,GAGTM,GAAmB,SAAS3E,EAAMzS,EAASgM,EAASuK,EAAQrK,EAAQpF,GAClE,GAAIuQ,IAAmB5E,EAAOA,EAAO,KAAO,KAAOzS,GAAW,GAC9D,KACI/D,KAAKkG,EAAeK,aAAasJ,OAClC7P,KAAKkG,EAAeK,aAAasJ,KAAK9L,KACrC/D,KAAKkG,EAAeK,aAAasJ,KAAKuL,GAH1C,CAQA,GAAIpM,EAoBJ,IAlBIiB,GAAUA,EAAOjP,QACnB+O,EAAUE,EAAO,GAAG6K,UAAY/K,EAGhCE,EAAOE,UACPnB,GAAciB,OAAQA,IACbF,IACTf,GACEiB,SAEI6K,SAAU/K,EACVuK,OAAQA,EACRI,QAAQ,QAOZ1a,KAAKkG,EAAeM,WAAWqJ,OACjC7P,KAAKkG,EAAeM,WAAWqJ,KAAKE,OAMlC/P,KAAKkG,EAAeO,cAAcoJ,MACnC7P,KAAKkG,EAAeO,cAAcoJ,KAAKE,IAF1C,CAOA,GAAIpO,GAAO0H,GAGPgS,WACEC,SAEI9E,KAAMA,EACNvL,MAAOlH,EACPiL,WAAYA,KAIlBuM,QAASxL,GAEXlF,EAIF7K,MAAKoQ,EAAMzO,MAGb6Z,GAAa,SAAS7Z,GAGpB,GAAI0J,GAAMrL,KAAKkG,EAAeY,gBAI9B,IAHInF,EAAKoC,UACPpC,EAAKoC,QAAUuF,EAAS3H,EAAKoC,QAASsH,IAEpC1J,EAAK0Z,UAAW,CAClB,GAAIA,GAAY1Z,EAAK0Z,UAAUC,OAAO,EACtCD,GAAUpQ,MAAQ3B,EAAS+R,EAAUpQ,MAAOI,GAG9C,GAAIoQ,GAAU9Z,EAAK8Z,OAanB,OAZIA,KACEA,EAAQzL,MACVyL,EAAQzL,IAAM1G,EAASmS,EAAQzL,IAAKhQ,KAAKkG,EAAea,eAEtD0U,EAAQC,UACVD,EAAQC,QAAUpS,EAASmS,EAAQC,QAAS1b,KAAKkG,EAAea,gBAIhEpF,EAAKga,aAAeha,EAAKga,YAAYL,QACvCtb,KAAK4b,GAAiBja,EAAKga,aAEtBha,GAMTka,GAAkB,SAASF,GAQzB,IAAK,GAJHG,GACAvL,EACA5O,EAHEoa,GAAY,KAAM,OAAQ,OAKrBpb,EAAI,EAAGA,EAAIgb,EAAYL,OAAOta,SAAUL,EAE/C,GADA4P,EAAQoL,EAAYL,OAAO3a,GAExB4P,EAAMwF,eAAe,SACrBhN,EAASwH,EAAM5O,QAChB4H,EAAagH,EAAM5O,MAHrB,CAOAA,EAAO0H,KAAgBkH,EAAM5O,KAC7B,KAAK,GAAIgW,GAAI,EAAGA,EAAIoE,EAAS/a,SAAU2W,EACrCmE,EAAUC,EAASpE,GACfhW,EAAKoU,eAAe+F,IAAYna,EAAKma,KACvCna,EAAKma,GAAWxS,EAAS3H,EAAKma,GAAU9b,KAAKkG,EAAea,cAGhE4U,GAAYL,OAAO3a,GAAGgB,KAAOA,IAIjCqa,GAAc,WACZ,GAAKhc,KAAKyF,GAAkBzF,KAAKsF,EAAjC,CACA,GAAI2W,KAkBJ,OAhBIjc,MAAKyF,GAAiBC,EAAWwW,YACnCD,EAAStV,SACPwV,aAAc1R,UAAUyR,YAKxB9V,EAAQiC,UAAYjC,EAAQiC,SAASE,OACvC0T,EAASjM,IAAM5J,EAAQiC,SAASE,MAG9BvI,KAAKsF,GAAgBE,EAAU4W,WAC5BH,EAAStV,UAASsV,EAAStV,YAChCsV,EAAStV,QAAQ+U,QAAUlW,EAAU4W,UAGhCH,IAGTI,EAAe,WACbrc,KAAKsc,GAAmB,EACxBtc,KAAKuc,GAAgB,MAGvBC,GAAgB,WACd,MAAOxc,MAAKsc,IAAoBxX,IAAQ9E,KAAKuc,GAAgBvc,KAAKsc,IAYpEG,GAAe,SAASC,GACtB,GAAIC,GAAO3c,KAAK4F,CAEhB,UACG+W,GACDD,EAAQ3Y,UAAY4Y,EAAK5Y,SACzB2Y,EAAQnB,UAAYoB,EAAKpB,WAKvBmB,EAAQ1N,YAAc2N,EAAK3N,WACtBlF,EAAiB4S,EAAQ1N,WAAY2N,EAAK3N,aACxC0N,EAAQrB,YAAasB,EAAKtB,WAE5BxR,EAAgB6S,EAAQrB,UAAWsB,EAAKtB,aAMnDuB,GAAkB,SAASnB,GAEzB,IAAIzb,KAAK6c,KAAT,CAIA,GAAIpF,GAASgE,EAAQhE,MAKrB,IAAiB,MAAXA,GAA6B,MAAXA,GAA6B,MAAXA,EAA1C,CAEA,GAAIqF,EACJ,KAIIA,EADE7S,IACMwR,EAAQ9U,QAAQoW,IAAI,eAEpBtB,EAAQuB,kBAAkB,eAIpCF,EAA8B,IAAtBG,SAASH,EAAO,IACxB,MAAO5c,IAITF,KAAKsc,GAAmBQ,EAEpBA,EAEwB,EAAxB9c,KAAKsc,IAAwB,IAEjCtc,KAAKuc,GAAgBzX,OAGvBoY,EAAO,SAASvb,GACd,GAAIoJ,GAAgB/K,KAAKkG,EAErBiX,GACAC,QAASpd,KAAKgG,EACdvB,OAAQsG,EAActG,OACtB4Y,SAAU,cAEZpB,EAAWjc,KAAKsd,IAsDlB,IApDIrB,IACFkB,EAAS1B,QAAUQ,GAIjBta,EAAKoN,sBAAuBpN,GAAKoN,eAErCpN,EAAO0H,EAAY8T,EAAUxb,GAG7BA,EAAKuP,KAAO7H,EAAYA,KAAgBrJ,KAAKiG,EAAeiL,MAAOvP,EAAKuP,MACxEvP,EAAKiC,MAAQyF,EAAYA,KAAgBrJ,KAAKiG,EAAerC,OAAQjC,EAAKiC,OAG1EjC,EAAKiC,MAAM,oBAAsBkB,IAAQ9E,KAAKgI,EAE1ChI,KAAKkI,GAAgBlI,KAAKkI,EAAalH,OAAS,IAGlDW,EAAKga,aACHL,UAAWhX,MAAMvD,KAAKf,KAAKkI,EAAc,KAIzClI,KAAKiG,EAAe6G,OAEtBnL,EAAKmL,KAAO9M,KAAKiG,EAAe6G,MAI9B/B,EAAcwG,cAAa5P,EAAK4P,YAAcxG,EAAcwG,aAG5DxG,EAAc5E,UAASxE,EAAKwE,QAAU4E,EAAc5E,SAGpD4E,EAAcwS,aAAY5b,EAAK6b,YAAczS,EAAcwS,YAE/D5b,EAAO3B,KAAKyd,GAAc9b,GAG1B0B,OAAOoM,KAAK9N,GAAM+b,QAAQ,SAAS1S,IAChB,MAAbrJ,EAAKqJ,IAA8B,KAAdrJ,EAAKqJ,IAAe7B,EAAcxH,EAAKqJ,YACvDrJ,GAAKqJ,KAIZ9F,EAAW6F,EAAc2G,gBAC3B/P,EAAOoJ,EAAc2G,aAAa/P,IAASA,GAIxCA,IAAQwH,EAAcxH,MAMzBuD,EAAW6F,EAAc8G,qBACxB9G,EAAc8G,mBAAmBlQ,IAOpC,MAAI3B,MAAK6c,SACP7c,MAAK8K,EAAU,OAAQ,uCAAwCnJ,QAIzB,gBAA7BoJ,GAAc5D,WACnBiE,KAAKuS,SAAW5S,EAAc5D,YAChCnH,KAAK4d,GAAsBjc,GAG7B3B,KAAK4d,GAAsBjc,KAI/Bkc,GAAe,SAASlc,GACtB,MAAOyI,GAASzI,EAAM3B,KAAKkG,EAAekB,eAG5C0W,GAAU,WACR,MAAOnU,MAGToU,GAAuB,SAASpc,EAAMF,GACpC,GAAI1B,GAAOC,KACP+K,EAAgB/K,KAAKkG,CAEzB,IAAKlG,KAAK8L,UAAV,CAQA,GALAnK,EAAO3B,KAAKge,GAAYrc,IAKnB3B,KAAKkG,EAAe+X,iBAAmBje,KAAKke,GAAcvc,GAE7D,WADA3B,MAAK8K,EAAU,OAAQ,+BAAgCnJ,EAOzD3B,MAAK6F,EAAelE,EAAKwc,WAAaxc,EAAKwc,SAAWne,KAAKoe,MAG3Dpe,KAAK4F,EAAYjE,EAEjB3B,KAAK8K,EAAU,QAAS,uBAAwBnJ,EAEhD,IAAI0c,IACFC,eAAgB,IAChBC,cAAe,YAAcve,KAAK0K,QAClC8T,WAAYxe,KAAK+F,EAGf/F,MAAK+M,IACPsR,EAAKI,cAAgBze,KAAK+M,EAG5B,IAAIsO,GAAY1Z,EAAK0Z,WAAa1Z,EAAK0Z,UAAUC,OAAO,EAItDtb,MAAKkG,EAAee,iBACpBjH,KAAKkG,EAAee,gBAAgByE,QAEpC1L,KAAKqQ,mBACH8D,SAAU,SACVpQ,QAASsX,GACJA,EAAU7E,KAAO6E,EAAU7E,KAAO,KAAO,IAAM6E,EAAUpQ,MAC1DtJ,EAAKoC,QACToa,SAAUxc,EAAKwc,SACftc,MAAOF,EAAKE,OAAS,SAIzB,IAAImO,GAAMhQ,KAAKkN,GACdnC,EAAcgH,WAAa/R,KAAK0e,IAAc3d,KAAKf,MAClDgQ,IAAKA,EACLqO,KAAMA,EACN1c,KAAMA,EACNkJ,QAASE,EACT4T,UAAW,WACT5e,EAAKyI,IAELzI,EAAKqa,EAAc,WACjBzY,KAAMA,EACNoR,IAAK/C,IAEPvO,GAAYA,KAEdmd,QAAS,SAAiB1b,GACxBnD,EAAK+K,EAAU,QAAS,mCAAoC5H,GAExDA,EAAMuY,SACR1b,EAAK8e,GAAiB3b,EAAMuY,SAG9B1b,EAAKqa,EAAc,WACjBzY,KAAMA,EACNoR,IAAK/C,IAEP9M,EAAQA,GAAS,GAAItC,OAAM,sDAC3Ba,GAAYA,EAASyB,QAK3B4b,GAAc,SAASC,GAErB,GAAI/O,GAAM+O,EAAK/O,IAAM,IAAMtG,EAAUqV,EAAKV,MAEtCW,EAAmB,KACnBC,IAUJ,IARIF,EAAKlU,QAAQlE,UACfqY,EAAmBhf,KAAKkf,GAAcH,EAAKlU,QAAQlE,UAGjDoY,EAAKlU,QAAQsU,kBACfF,EAA2Bjf,KAAKkf,GAAcH,EAAKlU,QAAQsU,kBAGzDlV,IAAiB,CACnBgV,EAAyBhM,KAAO5N,EAAU0Z,EAAKpd,KAE/C,IAAIyd,GAAsB/V,KAAgBrJ,KAAKqH,GAC3CgY,EAAehW,EAAY+V,EAAqBH,EAMpD,OAJID,KACFK,EAAa1Y,QAAUqY,GAGlB5Y,EACJkZ,MAAMtP,EAAKqP,GACXpH,KAAK,SAASC,GACb,GAAIA,EAASqH,GACXR,EAAKJ,WAAaI,EAAKJ,gBAClB,CACL,GAAIzb,GAAQ,GAAItC,OAAM,sBAAwBsX,EAAST,OAGvDvU,GAAMuY,QAAUvD,EAChB6G,EAAKH,SAAWG,EAAKH,QAAQ1b,MAGhC,SAAS,WACR6b,EAAKH,SACHG,EAAKH,QAAQ,GAAIhe,OAAM,6CAI/B,GAAI6a,GAAUrV,EAAQ6Q,gBAAkB,GAAI7Q,GAAQ6Q,cACpD,IAAKwE,EAAL,CAGA,GAAI+D,GAAU,mBAAqB/D,IAAqC,mBAAnBgE,eAEhDD,KAED,mBAAqB/D,GACvBA,EAAQ7D,mBAAqB,WAC3B,GAA2B,IAAvB6D,EAAQjE,WAEL,GAAuB,MAAnBiE,EAAQhE,OACjBsH,EAAKJ,WAAaI,EAAKJ,gBAClB,IAAII,EAAKH,QAAS,CACvB,GAAIzI,GAAM,GAAIvV,OAAM,sBAAwB6a,EAAQhE,OACpDtB,GAAIsF,QAAUA,EACdsD,EAAKH,QAAQzI,MAIjBsF,EAAU,GAAIgE,gBAGdzP,EAAMA,EAAI0P,QAAQ,WAAY,IAG1BX,EAAKJ,YACPlD,EAAQkE,OAASZ,EAAKJ,WAEpBI,EAAKH,UACPnD,EAAQmE,QAAU,WAChB,GAAIzJ,GAAM,GAAIvV,OAAM,oCACpBuV,GAAIsF,QAAUA,EACdsD,EAAKH,QAAQzI,MAKnBsF,EAAQoE,KAAK,OAAQ7P,GAEjBgP,GACF5V,EAAK4V,EAAkB,SAAShU,EAAKC,GACnCwQ,EAAQqE,iBAAiB9U,EAAKC,KAIlCwQ,EAAQsE,KAAK1a,EAAU0Z,EAAKpd,UAG9Bqe,GAAe,SAASC,GACtB,GAAIC,KAEJ,KAAK,GAAIlV,KAAOiV,GACd,GAAIA,EAAKlK,eAAe/K,GAAM,CAC5B,GAAIC,GAAQgV,EAAKjV,EACjBkV,GAAUlV,GAAwB,kBAAVC,GAAuBA,IAAUA,EAI7D,MAAOiV,IAGTC,EAAW,SAASte,GAGhB7B,KAAK8H,EAAwBjG,KAC5B7B,KAAK2K,OAAS3K,KAAKkG,EAAeyE,QAGnCjG,SAASpB,UAAUqB,MAAM5D,KACvBf,KAAK8H,EAAwBjG,GAC7B7B,KAAK6H,KACFvD,MAAMvD,KAAKwD,UAAW,KAK/B6b,EAAe,SAASpV,EAAKmC,GACvB5H,EAAY4H,SACPnN,MAAKiG,EAAe+E,GAE3BhL,KAAKiG,EAAe+E,GAAO3B,EAAYrJ,KAAKiG,EAAe+E,OAAYmC,KAM7ElN,EAAMqD,UAAU+c,QAAUpgB,EAAMqD,UAAUwN,eAC1C7Q,EAAMqD,UAAUgd,kBAAoBrgB,EAAMqD,UAAUkO,WAEpD/R,EAAOD,QAAUS,IAEdc,KAAKf,KAAuB,mBAAXF,QAAyBA,OAAyB,mBAATC,MAAuBA,KAAyB,mBAAXF,QAAyBA,aACxH0gB,GAAK,GAAG1c,EAAI,EAAE3B,EAAI,EAAE0C,EAAI,EAAE4b,EAAI,EAAEC,EAAI,IAAIte,GAAG,SAASjB,EAAQzB,EAAOD,IACtE,SAAWM,GAOX,GAAI4gB,GAAmBxf,EAAQ,GAG3BkF,EACgB,mBAAXvG,QACHA,OACkB,mBAAXC,GAAyBA,EAAyB,mBAATC,MAAuBA,QACzE4gB,EAASva,EAAQnG,MAEjBA,EAAQ,GAAIygB,EAQhBzgB,GAAM2gB,WAAa,WAEjB,MADAxa,GAAQnG,MAAQ0gB,EACT1gB,GAGTA,EAAMkS,YAEN1S,EAAOD,QAAUS,EAoCjBR,EAAOD,QAAQqhB,OAASH,IAErB3f,KAAKf,KAAuB,mBAAXF,QAAyBA,OAAyB,mBAATC,MAAuBA,KAAyB,mBAAXF,QAAyBA,aACxHgF,EAAI,IAAID,GAAG,SAAS1D,EAAQzB,EAAOD,IACtC,SAAWM,GAQX,QAASiJ,GAAS+X,GAChB,MAAuB,gBAATA,IAA8B,OAATA,EAKrC,QAAShY,GAAQmC,GACf,OAAQ5H,OAAOC,UAAUC,SAASxC,KAAKkK,IACrC,IAAK,iBACH,OAAO,CACT,KAAK,qBACH,OAAO,CACT,KAAK,wBACH,OAAO,CACT,SACE,MAAOA,aAAiBrK,QAI9B,QAAS+H,GAAasC,GACpB,MAAiD,wBAA1C5H,OAAOC,UAAUC,SAASxC,KAAKkK,GAGxC,QAASrC,GAAWqC,GAClB,MAAiD,sBAA1C5H,OAAOC,UAAUC,SAASxC,KAAKkK,GAGxC,QAASpC,GAAeoC,GACtB,MAAiD,0BAA1C5H,OAAOC,UAAUC,SAASxC,KAAKkK,GAGxC,QAAS1F,GAAYub,GACnB,MAAgB,UAATA,EAGT,QAAS5b,GAAW4b,GAClB,MAAuB,kBAATA,GAGhB,QAAS9X,GAAc8X,GACrB,MAAgD,oBAAzCzd,OAAOC,UAAUC,SAASxC,KAAK+f,GAGxC,QAAS7X,GAAS6X,GAChB,MAAgD,oBAAzCzd,OAAOC,UAAUC,SAASxC,KAAK+f,GAGxC,QAAS5X,GAAQ4X,GACf,MAAgD,mBAAzCzd,OAAOC,UAAUC,SAASxC,KAAK+f,GAGxC,QAAS3X,GAAc2X,GACrB,IAAK9X,EAAc8X,GAAO,OAAO,CAEjC,KAAK,GAAI/M,KAAK+M,GACZ,GAAIA,EAAK/K,eAAehC,GACtB,OAAO,CAGX,QAAO,EAGT,QAASgN,KACP,IAEE,MADA,IAAIC,YAAW,KACR,EACP,MAAO9gB,GACP,OAAO,GAIX,QAAS+gB,KACP,IAEE,MADA,IAAIC,UAAS,KACN,EACP,MAAOhhB,GACP,OAAO,GAIX,QAASihB,KACP,IAEE,MADA,IAAIC,cAAa,KACV,EACP,MAAOlhB,GACP,OAAO,GAIX,QAAS+J,KACP,KAAM,SAAW7D,IAAU,OAAO,CAElC,KAIE,MAHA,IAAIib,SACJ,GAAItJ,SAAQ,IACZ,GAAIuJ,WACG,EACP,MAAOphB,GACP,OAAO,GAQX,QAASuH,KACP,IAAKwC,IAAiB,OAAO,CAE7B,KAKE,MAHA,IAAI8N,SAAQ,cACVvQ,eAAgB,YAEX,EACP,MAAOtH,GACP,OAAO,GAIX,QAASqhB,KACP,MAAwC,kBAA1BC,uBAGhB,QAASC,GAAgBhgB,GACvB,QAASiQ,GAAa/P,EAAMsD,GAC1B,GAAIyc,GAAiBjgB,EAASE,IAASA,CACvC,OAAIsD,GACKA,EAASyc,IAAmBA,EAE9BA,EAGT,MAAOhQ,GAGT,QAAStI,GAAKkH,EAAK7O,GACjB,GAAId,GAAGgX,CAEP,IAAIpS,EAAY+K,EAAItP,QAClB,IAAKL,IAAK2P,GACJ9G,EAAO8G,EAAK3P,IACdc,EAASV,KAAK,KAAMJ,EAAG2P,EAAI3P,QAK/B,IADAgX,EAAIrH,EAAItP,OAEN,IAAKL,EAAI,EAAGA,EAAIgX,EAAGhX,IACjBc,EAASV,KAAK,KAAMJ,EAAG2P,EAAI3P,IAMnC,QAAS0I,GAAYsY,EAAMC,GACzB,MAAKA,IAGLxY,EAAKwY,EAAM,SAAS5W,EAAKC,GACvB0W,EAAK3W,GAAOC,IAEP0W,GALEA,EAgBX,QAASpY,GAAa+G,GACpB,QAAKjN,OAAOwe,UAGLxe,OAAOwe,SAASvR,GAGzB,QAAShH,GAASqQ,EAAKtO,GACrB,GAAmB,gBAARA,GACT,KAAM,IAAIzK,OAAM,yDAElB,OAAmB,gBAAR+Y,IAA4B,IAARtO,EACtBsO,EAEFA,EAAI3Y,QAAUqK,EAAMsO,EAAMA,EAAI/M,OAAO,EAAGvB,GAAO,IAUxD,QAAS7B,GAAOsY,EAAQ9W,GACtB,MAAO3H,QAAOC,UAAUyS,eAAehV,KAAK+gB,EAAQ9W,GAGtD,QAASvB,GAAWsY,GAQlB,IALA,GAGEC,GAHEC,KACFthB,EAAI,EACJuhB,EAAMH,EAAS/gB,OAGVL,EAAIuhB,EAAKvhB,IACdqhB,EAAUD,EAASphB,GACfsI,EAAS+Y,GAGXC,EAAQzgB,KAAKwgB,EAAQtC,QAAQ,8BAA+B,SACnDsC,GAAWA,EAAQG,QAE5BF,EAAQzgB,KAAKwgB,EAAQG,OAIzB,OAAO,IAAIC,QAAOH,EAAQI,KAAK,KAAM,KAGvC,QAAS3Y,GAAUnJ,GACjB,GAAI+hB,KAIJ,OAHAlZ,GAAK7I,EAAG,SAASyK,EAAKC,GACpBqX,EAAM9gB,KAAKgR,mBAAmBxH,GAAO,IAAMwH,mBAAmBvH,MAEzDqX,EAAMD,KAAK,KAMpB,QAAStY,GAASiG,GAChB,GAAmB,gBAARA,GAAkB,QAC7B,IAAIuS,GAAQvS,EAAIuS,MAAM,kEAGlBC,EAAQD,EAAM,IAAM,GACpBE,EAAWF,EAAM,IAAM,EAC3B,QACEtN,SAAUsN,EAAM,GAChBrN,KAAMqN,EAAM,GACZ7V,KAAM6V,EAAM,GACZpN,SAAUoN,EAAM,GAAKC,EAAQC,GAGjC,QAAS9Y,KACP,GAAI+Y,GAAStc,EAAQsc,QAAUtc,EAAQuc,QAEvC,KAAKpd,EAAYmd,IAAWA,EAAOE,gBAAiB,CAGlD,GAAIC,GAAM,GAAIC,aAAY,EAC1BJ,GAAOE,gBAAgBC,GAGvBA,EAAI,GAAe,KAATA,EAAI,GAAc,MAE5BA,EAAI,GAAe,MAATA,EAAI,GAAe,KAE7B,IAAIE,GAAM,SAASC,GAEjB,IADA,GAAIC,GAAID,EAAIzf,SAAS,IACd0f,EAAEjiB,OAAS,GAChBiiB,EAAI,IAAMA,CAEZ,OAAOA,GAGT,OACEF,GAAIF,EAAI,IACRE,EAAIF,EAAI,IACRE,EAAIF,EAAI,IACRE,EAAIF,EAAI,IACRE,EAAIF,EAAI,IACRE,EAAIF,EAAI,IACRE,EAAIF,EAAI,IACRE,EAAIF,EAAI,IAIV,MAAO,mCAAmCnD,QAAQ,QAAS,SAASwD,GAClE,GAAI7iB,GAAqB,GAAhB+K,KAAKuS,SAAiB,EAC7BsF,EAAU,MAANC,EAAY7iB,EAAS,EAAJA,EAAW,CAClC,OAAO4iB,GAAE1f,SAAS,MAYxB,QAASqG,GAAiBuZ,GAWxB,IATA,GAOEC,GAPEC,EAAsB,EACxBC,EAAiB,GACjBC,KACAC,EAAS,EACTtB,EAAM,EACNuB,EAAY,MACZC,EAAYD,EAAUziB,OAGjBmiB,GAAQK,IAAWH,IACxBD,EAAUO,EAAoBR,KAMhB,SAAZC,GACCI,EAAS,GAAKtB,EAAMqB,EAAIviB,OAAS0iB,EAAYN,EAAQpiB,QAAUsiB,KAKlEC,EAAI/hB,KAAK4hB,GAETlB,GAAOkB,EAAQpiB,OACfmiB,EAAOA,EAAKS,UAGd,OAAOL,GAAIpT,UAAUkS,KAAKoB,GAS5B,QAASE,GAAoBR,GAC3B,GACEU,GACAC,EACA9Y,EACA+Y,EACApjB,EALE4iB,IAOJ,KAAKJ,IAASA,EAAK7O,QACjB,MAAO,EAST,IANAiP,EAAI/hB,KAAK2hB,EAAK7O,QAAQR,eAClBqP,EAAK7c,IACPid,EAAI/hB,KAAK,IAAM2hB,EAAK7c,IAGtBud,EAAYV,EAAKU,UACbA,GAAa5a,EAAS4a,GAExB,IADAC,EAAUD,EAAUvZ,MAAM,OACrB3J,EAAI,EAAGA,EAAImjB,EAAQ9iB,OAAQL,IAC9B4iB,EAAI/hB,KAAK,IAAMsiB,EAAQnjB,GAG3B,IAAIqjB,IAAiB,OAAQ,OAAQ,QAAS,MAC9C,KAAKrjB,EAAI,EAAGA,EAAIqjB,EAAchjB,OAAQL,IACpCqK,EAAMgZ,EAAcrjB,GACpBojB,EAAOZ,EAAKc,aAAajZ,GACrB+Y,GACFR,EAAI/hB,KAAK,IAAMwJ,EAAM,KAAO+Y,EAAO,KAGvC,OAAOR,GAAIlB,KAAK,IAMlB,QAAS6B,GAAgBzjB,EAAG0jB,GAC1B,WAAY1jB,IAAM0jB,GAMpB,QAASC,GAAgB3jB,EAAG0jB,GAC1B,MAAO5e,GAAY9E,IAAM8E,EAAY4e,GAMvC,QAASta,GAAgBwF,EAAKgV,GAC5B,OAAIH,EAAgB7U,EAAKgV,KAEzBhV,EAAMA,EAAIiM,OAAO,GACjB+I,EAAMA,EAAI/I,OAAO,GAEbjM,EAAImH,OAAS6N,EAAI7N,MAAQnH,EAAIpE,QAAUoZ,EAAIpZ,SAG3CmZ,EAAgB/U,EAAIL,WAAYqV,EAAIrV,aAEjClF,EAAiBuF,EAAIL,WAAYqV,EAAIrV,cAM9C,QAASlF,GAAiBwa,EAAQC,GAChC,GAAIL,EAAgBI,EAAQC,GAAS,OAAO,CAE5C,IAAIC,GAAUF,EAAOrU,OACjBwU,EAAUF,EAAOtU,MAGrB,IAAIuU,EAAQxjB,SAAWyjB,EAAQzjB,OAAQ,OAAO,CAI9C,KAAK,GADDP,GAAG0jB,EACExjB,EAAI,EAAGA,EAAI6jB,EAAQxjB,OAAQL,IAGlC,GAFAF,EAAI+jB,EAAQ7jB,GACZwjB,EAAIM,EAAQ9jB,GAEVF,EAAEqa,WAAaqJ,EAAErJ,UACjBra,EAAE6Z,SAAW6J,EAAE7J,QACf7Z,EAAEua,QAAUmJ,EAAEnJ,OACdva,EAAE,cAAgB0jB,EAAE,YAEpB,OAAO,CAEX,QAAO,EAUT,QAASna,GAAKsG,EAAK9N,EAAMkiB,EAAaC,GACpC,GAAW,MAAPrU,EAAJ,CACA,GAAImF,GAAOnF,EAAI9N,EACf8N,GAAI9N,GAAQkiB,EAAYjP,GACxBnF,EAAI9N,GAAMmL,GAAY,EACtB2C,EAAI9N,GAAMsL,EAAW2H,EACjBkP,GACFA,EAAMnjB,MAAM8O,EAAK9N,EAAMiT,KAU3B,QAASjR,GAASogB,EAAOC,GACvB,IAAK3b,EAAQ0b,GAAQ,MAAO,EAI5B,KAAK,GAFDE,MAEKnkB,EAAI,EAAGA,EAAIikB,EAAM5jB,OAAQL,IAChC,IACEmkB,EAAOtjB,KAAKujB,OAAOH,EAAMjkB,KACzB,MAAOT,GACP4kB,EAAOtjB,KAAK,gCAIhB,MAAOsjB,GAAOzC,KAAKwC,GASrB,QAASG,GAAW/Z,GAClB,QAASga,UAAUha,GAAOX,MAAM,SAAStJ,OAG3C,QAASkkB,GAASja,GAChB,MAAO+Z,GAAW5f,KAAKC,UAAU4F,IAGnC,QAASka,GAAela,GACtB,GAAqB,gBAAVA,GAAoB,CAC7B,GAAIma,GAAY,EAChB,OAAO9b,GAAS2B,EAAOma,GAClB,GACY,gBAAVna,IACU,iBAAVA,IACU,mBAAVA,GAEP,MAAOA,EAGT,IAAIuL,GAAOnT,OAAOC,UAAUC,SAASxC,KAAKkK,EAG1C,OAAa,oBAATuL,EAAmC,WAC1B,mBAATA,EAAkC,UACzB,sBAATA,EACKvL,EAAMzI,KAAO,cAAgByI,EAAMzI,KAAO,IAAM,aAElDyI,EAGT,QAASoa,GAAgBpa,EAAOqa,GAC9B,MAAc,KAAVA,EAAoBH,EAAela,GAEnCjC,EAAciC,GACT5H,OAAOoM,KAAKxE,GAAOsa,OAAO,SAASC,EAAKxa,GAE7C,MADAwa,GAAIxa,GAAOqa,EAAgBpa,EAAMD,GAAMsa,EAAQ,GACxCE,OAEA7P,MAAMzM,QAAQ+B,GAChBA,EAAMwa,IAAI,SAASC,GACxB,MAAOL,GAAgBK,EAAKJ,EAAQ,KAIjCH,EAAela,GAGxB,QAASd,GAAmB2E,EAAIwW,EAAOK,GACrC,IAAK3c,EAAc8F,GAAK,MAAOA,EAE/BwW,GAAyB,gBAAVA,GAAqBM,EAAgCN,EACpEK,EAA2B,gBAAVL,GAAqBO,EAA+BF,CAErE,IAAIG,GAAaT,EAAgBvW,EAAIwW,EAErC,OAAIJ,GAAS7f,EAAUygB,IAAeH,EAC7Bxb,EAAmB2E,EAAIwW,EAAQ,GAGjCQ,EAGT,QAAS5b,GAAwBuF,EAAM2V,GACrC,GAAoB,gBAAT3V,IAAqC,gBAATA,GAAmB,MAAOA,GAAKlM,UACtE,KAAKoS,MAAMzM,QAAQuG,GAAO,MAAO,EAKjC,IAHAA,EAAOA,EAAKsW,OAAO,SAAS/a,GAC1B,MAAsB,gBAARA,KAEI,IAAhByE,EAAKzO,OAAc,MAAO,sBAG9B,IADAokB,EAAiC,gBAAdA,GAAyBY,EAA4BZ,EACpE3V,EAAK,GAAGzO,QAAUokB,EAAW,MAAO3V,GAAK,EAE7C,KAAK,GAAIwW,GAAWxW,EAAKzO,OAAQilB,EAAW,EAAGA,IAAY,CACzD,GAAIH,GAAarW,EAAKnL,MAAM,EAAG2hB,GAAU5D,KAAK,KAC9C,MAAIyD,EAAW9kB,OAASokB,GACxB,MAAIa,KAAaxW,EAAKzO,OAAe8kB,EAC9BA,EAAa,IAGtB,MAAO,GAGT,QAAS1b,GAASwa,EAAOxd,GAcvB,QAAS8e,GAAeC,GACtB,MAAIjd,GAAQid,GACHA,EAAYV,IAAI,SAASC,GAC9B,MAAOQ,GAAeR,KAItB1c,EAAcmd,GACT9iB,OAAOoM,KAAK0W,GAAaZ,OAAO,SAASC,EAAKY,GAMnD,MAJEZ,GAAIY,GADFC,EAAexW,KAAKuW,GACbE,EAEAJ,EAAeC,EAAYC,IAE/BZ,OAIJW,EA/BT,IAAKjd,EAAQ9B,IAAkB8B,EAAQ9B,IAAyC,IAAxBA,EAAapG,OACnE,MAAO4jB,EAET,IAEI2B,GAFAF,EAAiB5c,EAAWrC,GAC5Bkf,EAAe,UAGnB,KACEC,EAAYnhB,KAAKiM,MAAMhM,EAAUuf,IACjC,MAAO4B,GACP,MAAO5B,GAwBT,MAAOsB,GAAeK,GA5lBxB,GAAIlhB,GAAYnE,EAAQ,GAEpBkF,EACgB,mBAAXvG,QACHA,OACkB,mBAAXC,GAAyBA,EAAyB,mBAATC,MAAuBA,QA0dzE6lB,EAAgC,EAEhCC,EAA+B,MAC/BG,EAA4B,EA6HhCvmB,GAAOD,SACLuJ,SAAUA,EACVD,QAASA,EACTH,aAAcA,EACdC,WAAYA,EACZC,eAAgBA,EAChBtD,YAAaA,EACbL,WAAYA,EACZ8D,cAAeA,EACfC,SAAUA,EACVC,QAASA,EACTC,cAAeA,EACf4X,mBAAoBA,EACpBE,iBAAkBA,EAClBE,qBAAsBA,EACtBlX,cAAeA,EACfxC,uBAAwBA,EACxB8Z,8BAA+BA,EAC/BE,gBAAiBA,EACjBrY,KAAMA,EACNC,YAAaA,EACbC,SAAUA,EACVC,aAAcA,EACdC,OAAQA,EACRC,WAAYA,EACZC,UAAWA,EACXC,MAAOA,EACPC,iBAAkBA,EAClB+Z,oBAAqBA,EACrB9Z,gBAAiBA,EACjBC,iBAAkBA,EAClBC,SAAUA,EACVC,KAAMA,EACNxF,SAAUA,EACV2F,mBAAoBA,EACpBD,wBAAyBA,EACzBE,SAAUA,KAGTrJ,KAAKf,KAAuB,mBAAXF,QAAyBA,OAAyB,mBAATC,MAAuBA,KAAyB,mBAAXF,QAAyBA,aACxH4gB,EAAI,IAAID,GAAG,SAAStf,EAAQzB,EAAOD,IACtC,SAAWM,GA+BX,QAAS2mB,KACP,MAAwB,mBAAbjc,WAAiD,MAArBA,SAASnC,SAAyB,GAClEmC,SAASnC,SAASE,KAG3B,QAASme,KACP,MAAwB,mBAAblc,WAAiD,MAArBA,SAASnC,SAAyB,GAClEmC,SAASnC,SAASse,OArC3B,GAAI1iB,GAAQ/C,EAAQ,GAYhBuH,GACF7B,qBAAqB,EACrB+D,OAAO,GAILvE,EACgB,mBAAXvG,QACHA,OACkB,mBAAXC,GAAyBA,EAAyB,mBAATC,MAAuBA,QAGzE6mB,KAAYtiB,MACZuiB,EAAmB,IAGnBC,EAAiB,yGAmDrBre,GAASsD,OAAS,WAUhB,QAASC,GAAU+a,GACjBC,IACAC,EAASzlB,KAAKulB,GAOhB,QAASG,GAAYH,GACnB,IAAK,GAAIpmB,GAAIsmB,EAASjmB,OAAS,EAAGL,GAAK,IAAKA,EACtCsmB,EAAStmB,KAAOomB,GAClBE,EAASE,OAAOxmB,EAAG,GAQzB,QAASymB,KACPC,IACAJ,KAOF,QAASK,GAAepY,EAAOqY,GAC7B,GAAIlM,GAAY,IAChB,KAAIkM,GAAkB9e,EAAS7B,oBAA/B,CAGA,IAAK,GAAIjG,KAAKsmB,GACZ,GAAIA,EAASlR,eAAepV,GAC1B,IACEsmB,EAAStmB,GAAGgE,MAAM,MAAOuK,GAAOuK,OAAOmN,EAAO7lB,KAAKwD,UAAW,KAC9D,MAAOijB,GACPnM,EAAYmM,EAKlB,GAAInM,EACF,KAAMA,IAiBV,QAASoM,GAAsB/lB,EAAKsO,EAAK0X,EAAQC,EAAO7Y,GACtD,GAAII,GAAQ,KAERmM,EAAYpX,EAAM0E,aAAamG,GAAMA,EAAG5L,MAAQ4L,EAEhD/K,EAAUE,EAAM0E,aAAajH,GAAOA,EAAIqC,QAAUrC,CAEtD,IAAIkmB,EACFnf,EAAS0G,kBAAkB0Y,oCACzBD,EACA5X,EACA0X,EACA3jB,GAEF+jB,QACK,IAAIzM,GAAapX,EAAM6E,QAAQuS,GAMpCnM,EAAQzG,EAAS0G,kBAAkBkM,GACnCiM,EAAepY,GAAO,OACjB,CACL,GAOI6Y,GAPA1f,GACF2H,IAAKA,EACL+K,KAAM2M,EACNzM,OAAQ0M,GAGNnlB,EAAO6K,MAGX,IAAkC,uBAA3B9J,SAASxC,KAAKgD,GAAgC,CACnD,GAAIgkB,GAAShkB,EAAQwe,MAAMuE,EACvBiB,KACFvlB,EAAOulB,EAAO,GACdhkB,EAAUgkB,EAAO,IAIrB1f,EAAS+E,KAAOyZ,EAEhB3X,GACE1M,KAAMA,EACNuB,QAASA,EACTiM,IAAKyW,IACLvX,OAAQ7G,IAEVif,EAAepY,GAAO,GAGxB,QAAI8Y,GACKA,EAAmBrjB,MAAM3E,KAAMuE,WAM1C,QAASyiB,KACHiB,IAGJD,EAAqB5hB,EAAQwZ,QAC7BxZ,EAAQwZ,QAAU6H,EAClBQ,GAA2B,GAG7B,QAASZ,KACFY,IAGL7hB,EAAQwZ,QAAUoI,EAClBC,GAA2B,EAC3BD,EAAqB3a,QAGvB,QAASya,KACP,GAAII,GAAsBN,EACxBO,EAAYC,CACdA,GAAW,KACXR,EAAqB,KACrB5V,EAAgB,KAChBsV,EAAe3iB,MAAM,MAAOujB,GAAqB,GAAOzO,OAAO0O,IAUjE,QAASpc,GAAO+C,EAAIuZ,GAClB,GAAIhkB,GAAOuiB,EAAO7lB,KAAKwD,UAAW,EAClC,IAAIqjB,EAAoB,CACtB,GAAI5V,IAAkBlD,EACpB,MAEAgZ,KAIJ,GAAI5Y,GAAQzG,EAAS0G,kBAAkBL,EAevC,IAdA8Y,EAAqB1Y,EACrB8C,EAAgBlD,EAChBsZ,EAAW/jB,EAMX+O,WAAW,WACLpB,IAAkBlD,GACpBgZ,KAED5Y,EAAMoZ,WAAa,IAAO,GAEzBD,KAAY,EACd,KAAMvZ,GA9LV,GA0DIkZ,GAAoBC,EA1DpBhB,KACFmB,EAAW,KACXpW,EAAgB,KAChB4V,EAAqB,IAkMvB,OAHA7b,GAAOC,UAAYA,EACnBD,EAAOmb,YAAcA,EACrBnb,EAAOgC,UAAYqZ,EACZrb,KAsDTtD,EAAS0G,kBAAoB,WA4C3B,QAASoZ,GAA+BzZ,GACtC,GAAwB,mBAAbA,GAAGI,OAA0BJ,EAAGI,MAA3C,CAiBA,IAAK,GALDsZ,GACAC,EACAC,EAZAtQ,EAAS,0IACTuQ,EAAQ,wHAGRC,EAAQ,6JAERC,EAAY,gDACZC,EAAa,gCACbC,EAAQja,EAAGI,MAAM5E,MAAM,MACvB4E,KAMKvO,GAFO,sBAAsBkZ,KAAK/K,EAAG/K,SAEjC,GAAG4T,EAAIoR,EAAM/nB,OAAQL,EAAIgX,IAAKhX,EAAG,CAC5C,GAAK8nB,EAAQrQ,EAAOyB,KAAKkP,EAAMpoB,IAAM,CACnC,GAAIqoB,GAAWP,EAAM,IAAqC,IAA/BA,EAAM,GAAGtR,QAAQ,UACxC8R,EAASR,EAAM,IAAmC,IAA7BA,EAAM,GAAGtR,QAAQ,OACtC8R,KAAWT,EAAWM,EAAWjP,KAAK4O,EAAM,OAE9CA,EAAM,GAAKD,EAAS,GACpBC,EAAM,GAAKD,EAAS,GACpBC,EAAM,GAAKD,EAAS,IAEtBE,GACE1Y,IAAMgZ,EAAsB,KAAXP,EAAM,GACvBrb,KAAMqb,EAAM,IAAM5B,EAClBxiB,KAAM2kB,GAAYP,EAAM,OACxB1N,KAAM0N,EAAM,IAAMA,EAAM,GAAK,KAC7BxN,OAAQwN,EAAM,IAAMA,EAAM,GAAK,UAE5B,IAAKA,EAAQE,EAAM9O,KAAKkP,EAAMpoB,IACnC+nB,GACE1Y,IAAKyY,EAAM,GACXrb,KAAMqb,EAAM,IAAM5B,EAClBxiB,QACA0W,MAAO0N,EAAM,GACbxN,OAAQwN,EAAM,IAAMA,EAAM,GAAK,UAE5B,CAAA,KAAKA,EAAQG,EAAM/O,KAAKkP,EAAMpoB,KAsBnC,QArBA,IAAIsoB,GAASR,EAAM,IAAMA,EAAM,GAAGtR,QAAQ,aACtC8R,KAAWT,EAAWK,EAAUhP,KAAK4O,EAAM,MAE7CA,EAAM,GAAKD,EAAS,GACpBC,EAAM,GAAKD,EAAS,GACpBC,EAAM,GAAK,MACI,IAAN9nB,GAAY8nB,EAAM,IAAiC,mBAApB3Z,GAAGoa,eAK3Cha,EAAM,GAAG+L,OAASnM,EAAGoa,aAAe,GAEtCR,GACE1Y,IAAKyY,EAAM,GACXrb,KAAMqb,EAAM,IAAM5B,EAClBxiB,KAAMokB,EAAM,GAAKA,EAAM,GAAGne,MAAM,QAChCyQ,KAAM0N,EAAM,IAAMA,EAAM,GAAK,KAC7BxN,OAAQwN,EAAM,IAAMA,EAAM,GAAK,MAUnC,IAJKC,EAAQtb,MAAQsb,EAAQ3N,OAC3B2N,EAAQtb,KAAOyZ,GAGb6B,EAAQ1Y,KAAoC,UAA7B0Y,EAAQ1Y,IAAIpD,OAAO,EAAG,GAAgB,CAMvD,GAAIpB,GAAM,GAAIyL,eAKd,IAJAzL,EAAIqU,KAAK,MAAO6I,EAAQ1Y,KAAK,GAC7BxE,EAAIuU,KAAK,MAGU,MAAfvU,EAAIiM,OAAgB,CACtB,GAAI0K,GAAS3W,EAAI2d,cAAgB,EAIjChH,GAASA,EAAO7d,WAGhB,IAAI8kB,GAAajH,EAAOI,MAAM,+BAG9B,IAAI6G,EAAY,CACd,GAAIC,GAAmBD,EAAW,EAIC,OAA/BC,EAAiBC,OAAO,KAC1BD,EAAmB3C,IAAsB2C,EAAiB/kB,MAAM,IAKlEokB,EAAQ1Y,IAAMqZ,EAAiB/kB,MAAM,QAK3C4K,EAAM1N,KAAKknB,GAGb,MAAKxZ,GAAMlO,QAKTwB,KAAMsM,EAAGtM,KACTuB,QAAS+K,EAAG/K,QACZiM,IAAKyW,IACLvX,MAAOA,GAPA,MAwBX,QAAS2Y,GAAoC1N,EAAWnK,EAAK0X,EAAQ3jB,GACnE,GAAIwlB,IACFvZ,IAAKA,EACL+K,KAAM2M,EAGR,IAAI6B,EAAQvZ,KAAOuZ,EAAQxO,KAAM,CAO/B,GANAZ,EAAUmO,YAAa,EAElBiB,EAAQnc,OACXmc,EAAQnc,KAAOyZ,GAGb1M,EAAUjL,MAAMlO,OAAS,GACvBmZ,EAAUjL,MAAM,GAAGc,MAAQuZ,EAAQvZ,IAAK,CAC1C,GAAImK,EAAUjL,MAAM,GAAG6L,OAASwO,EAAQxO,KACtC,OAAO,CACF,KACJZ,EAAUjL,MAAM,GAAG6L,MACpBZ,EAAUjL,MAAM,GAAG9B,OAASmc,EAAQnc,KAGpC,MADA+M,GAAUjL,MAAM,GAAG6L,KAAOwO,EAAQxO,MAC3B,EAOb,MAFAZ,GAAUjL,MAAMsa,QAAQD,GACxBpP,EAAUsP,SAAU,GACb,EAKT,MAHEtP,GAAUmO,YAAa,GAGlB,EAYT,QAASoB,GAAsC5a,EAAIwW,GASjD,IACE,GALAmD,GACAkB,EALEC,EAAe,qEACjB1a,KACA2a,KACAC,GAAY,EAMRC,EAAOL,EAAsCM,OACjDD,IAASD,EACTC,EAAOA,EAAKC,OAEZ,GAAID,IAAS5a,GAAqB4a,IAASthB,EAASsD,OAApD;AAkBA,GAbA4d,GACE3Z,IAAK,KACL5C,KAAMyZ,EACN9L,KAAM,KACNE,OAAQ,MAGN8O,EAAKvnB,KACPmnB,EAAKvc,KAAO2c,EAAKvnB,MACPimB,EAAQmB,EAAa/P,KAAKkQ,EAAKxmB,eACzComB,EAAKvc,KAAOqb,EAAM,IAGK,mBAAdkB,GAAKvc,KACd,IACEuc,EAAKvc,KAAOqb,EAAM7D,MAAMqF,UAAU,EAAGxB,EAAM7D,MAAMzN,QAAQ,MACzD,MAAOjX,IAGP2pB,EAAM,GAAKE,GACbD,GAAY,EAEZD,EAAM,GAAKE,IAAQ,EAGrB7a,EAAM1N,KAAKmoB,GAGTrE,GAGFpW,EAAMiY,OAAO,EAAG7B,EAGlB,IAAI5U,IACFlO,KAAMsM,EAAGtM,KACTuB,QAAS+K,EAAG/K,QACZiM,IAAKyW,IACLvX,MAAOA,EAQT,OANA2Y,GACEnX,EACA5B,EAAGob,WAAapb,EAAGqb,SACnBrb,EAAGiM,MAAQjM,EAAGsb,WACdtb,EAAG/K,SAAW+K,EAAGub,aAEZ3Z,EAQT,QAASvB,GAAkBL,EAAIwW,GAC7B,GAAIpW,GAAQ,IACZoW,GAAiB,MAATA,EAAgB,GAAKA,CAE7B,KAEE,GADApW,EAAQqZ,EAA+BzZ,GAErC,MAAOI,GAET,MAAOhP,GACP,GAAIuI,EAASkC,MACX,KAAMzK,GAIV,IAEE,GADAgP,EAAQwa,EAAsC5a,EAAIwW,EAAQ,GAExD,MAAOpW,GAET,MAAOhP,GACP,GAAIuI,EAASkC,MACX,KAAMzK,GAGV,OACEsC,KAAMsM,EAAGtM,KACTuB,QAAS+K,EAAG/K,QACZiM,IAAKyW,KAOT,MAHAtX,GAAkB0Y,oCAAsCA,EACxD1Y,EAAkBoZ,+BAAiCA,EAE5CpZ,KAGT1P,EAAOD,QAAUiJ,IAEd1H,KAAKf,KAAuB,mBAAXF,QAAyBA,OAAyB,mBAATC,MAAuBA,KAAyB,mBAAXF,QAAyBA,aACxH+E,EAAI,IAAI6b,GAAG,SAASvf,EAAQzB,EAAOD,GAetC,QAAS2X,GAAQmT,EAAUC,GACzB,IAAK,GAAI5pB,GAAI,EAAGA,EAAI2pB,EAAStpB,SAAUL,EACrC,GAAI2pB,EAAS3pB,KAAO4pB,EAAQ,MAAO5pB,EAErC,UAGF,QAAS0E,GAAUiL,EAAKka,EAAUC,EAAQC,GACxC,MAAOtlB,MAAKC,UAAUiL,EAAKqa,EAAWH,EAAUE,GAAgBD,GAIlE,QAASG,GAAe3f,GACtB,GAAIkL,IAEFjH,MAAOjE,EAAMiE,MACbnL,QAASkH,EAAMlH,QACfvB,KAAMyI,EAAMzI,KAGd,KAAK,GAAI7B,KAAKsK,GACR5H,OAAOC,UAAUyS,eAAehV,KAAKkK,EAAOtK,KAC9CwV,EAAIxV,GAAKsK,EAAMtK,GAInB,OAAOwV,GAGT,QAASwU,GAAWH,EAAUE,GAC5B,GAAIxb,MACAO,IAWJ,OATqB,OAAjBib,IACFA,EAAgB,SAAS1f,EAAKC,GAC5B,MAAIiE,GAAM,KAAOjE,EACR,eAEF,eAAiBwE,EAAKnL,MAAM,EAAG6S,EAAQjI,EAAOjE,IAAQoX,KAAK,KAAO,MAItE,SAASrX,EAAKC,GACnB,GAAIiE,EAAMlO,OAAS,EAAG,CACpB,GAAI6pB,GAAU1T,EAAQjI,EAAOlP,OAC5B6qB,EAAU3b,EAAMiY,OAAO0D,EAAU,GAAK3b,EAAM1N,KAAKxB,OACjD6qB,EAAUpb,EAAK0X,OAAO0D,EAASC,EAAAA,EAAU9f,GAAOyE,EAAKjO,KAAKwJ,IAEtDmM,EAAQjI,EAAOjE,KAClBA,EAAQyf,EAAc3pB,KAAKf,KAAMgL,EAAKC,QAGxCiE,GAAM1N,KAAKyJ,EAGb,OAAmB,OAAZuf,EACHvf,YAAiBrK,OAAQgqB,EAAe3f,GAASA,EACjDuf,EAASzpB,KAAKf,KAAMgL,EAAKC,IA5DjCzL,EAAUC,EAAOD,QAAU6F,EAC3B7F,EAAQurB,aAAeJ,OA+DjBpK,IAAI,SAASrf,EAAQzB,EAAOD,GAwBlC,QAASwrB,GAAQC,EAAG5O,GAClB,GAAI6O,IAAW,MAAJD,IAAmB,MAAJ5O,GACtB8O,GAAOF,GAAK,KAAO5O,GAAK,KAAO6O,GAAO,GAC1C,OAAQC,IAAO,GAAa,MAAND,EAMxB,QAASE,GAAcpI,EAAKqI,GAC1B,MAAQrI,IAAOqI,EAAQrI,IAAS,GAAKqI,EAMvC,QAASC,GAAOC,EAAG9qB,EAAG0jB,EAAG8G,EAAG3qB,EAAGH,GAC7B,MAAO6qB,GAAQI,EAAcJ,EAAQA,EAAQvqB,EAAG8qB,GAAIP,EAAQC,EAAG9qB,IAAKG,GAAI6jB,GAE1E,QAASqH,GAAM/qB,EAAG0jB,EAAGjB,EAAGuI,EAAGR,EAAG3qB,EAAGH,GAC/B,MAAOmrB,GAAQnH,EAAIjB,GAAOiB,EAAIsH,EAAIhrB,EAAG0jB,EAAG8G,EAAG3qB,EAAGH,GAEhD,QAASurB,GAAMjrB,EAAG0jB,EAAGjB,EAAGuI,EAAGR,EAAG3qB,EAAGH,GAC/B,MAAOmrB,GAAQnH,EAAIsH,EAAMvI,GAAKuI,EAAIhrB,EAAG0jB,EAAG8G,EAAG3qB,EAAGH,GAEhD,QAASwrB,GAAMlrB,EAAG0jB,EAAGjB,EAAGuI,EAAGR,EAAG3qB,EAAGH,GAC/B,MAAOmrB,GAAOnH,EAAIjB,EAAIuI,EAAGhrB,EAAG0jB,EAAG8G,EAAG3qB,EAAGH,GAEvC,QAASyrB,GAAMnrB,EAAG0jB,EAAGjB,EAAGuI,EAAGR,EAAG3qB,EAAGH,GAC/B,MAAOmrB,GAAOpI,GAAKiB,GAAKsH,GAAIhrB,EAAG0jB,EAAG8G,EAAG3qB,EAAGH,GAM1C,QAAS0rB,GAAQZ,EAAG/I,GAElB+I,EAAE/I,GAAO,IAAM,KAASA,EAAM,GAC9B+I,GAAK/I,EAAM,KAAQ,GAAM,GAAK,IAAMA,CAEpC,IAAIvhB,GACAmrB,EACAC,EACAC,EACAC,EACAxrB,EAAI,WACJ0jB,aACAjB,cACAuI,EAAI,SAER,KAAK9qB,EAAI,EAAGA,EAAIsqB,EAAEjqB,OAAQL,GAAK,GAC7BmrB,EAAOrrB,EACPsrB,EAAO5H,EACP6H,EAAO9I,EACP+I,EAAOR,EAEPhrB,EAAI+qB,EAAM/qB,EAAG0jB,EAAGjB,EAAGuI,EAAGR,EAAEtqB,GAAI,cAC5B8qB,EAAID,EAAMC,EAAGhrB,EAAG0jB,EAAGjB,EAAG+H,EAAEtqB,EAAI,GAAI,eAChCuiB,EAAIsI,EAAMtI,EAAGuI,EAAGhrB,EAAG0jB,EAAG8G,EAAEtqB,EAAI,GAAI,GAAI,WACpCwjB,EAAIqH,EAAMrH,EAAGjB,EAAGuI,EAAGhrB,EAAGwqB,EAAEtqB,EAAI,GAAI,gBAChCF,EAAI+qB,EAAM/qB,EAAG0jB,EAAGjB,EAAGuI,EAAGR,EAAEtqB,EAAI,GAAI,cAChC8qB,EAAID,EAAMC,EAAGhrB,EAAG0jB,EAAGjB,EAAG+H,EAAEtqB,EAAI,GAAI,GAAI,YACpCuiB,EAAIsI,EAAMtI,EAAGuI,EAAGhrB,EAAG0jB,EAAG8G,EAAEtqB,EAAI,GAAI,gBAChCwjB,EAAIqH,EAAMrH,EAAGjB,EAAGuI,EAAGhrB,EAAGwqB,EAAEtqB,EAAI,GAAI,cAChCF,EAAI+qB,EAAM/qB,EAAG0jB,EAAGjB,EAAGuI,EAAGR,EAAEtqB,EAAI,GAAI,EAAG,YACnC8qB,EAAID,EAAMC,EAAGhrB,EAAG0jB,EAAGjB,EAAG+H,EAAEtqB,EAAI,GAAI,gBAChCuiB,EAAIsI,EAAMtI,EAAGuI,EAAGhrB,EAAG0jB,EAAG8G,EAAEtqB,EAAI,IAAK,WACjCwjB,EAAIqH,EAAMrH,EAAGjB,EAAGuI,EAAGhrB,EAAGwqB,EAAEtqB,EAAI,IAAK,gBACjCF,EAAI+qB,EAAM/qB,EAAG0jB,EAAGjB,EAAGuI,EAAGR,EAAEtqB,EAAI,IAAK,EAAG,YACpC8qB,EAAID,EAAMC,EAAGhrB,EAAG0jB,EAAGjB,EAAG+H,EAAEtqB,EAAI,IAAK,cACjCuiB,EAAIsI,EAAMtI,EAAGuI,EAAGhrB,EAAG0jB,EAAG8G,EAAEtqB,EAAI,IAAK,gBACjCwjB,EAAIqH,EAAMrH,EAAGjB,EAAGuI,EAAGhrB,EAAGwqB,EAAEtqB,EAAI,IAAK,GAAI,YAErCF,EAAIirB,EAAMjrB,EAAG0jB,EAAGjB,EAAGuI,EAAGR,EAAEtqB,EAAI,GAAI,cAChC8qB,EAAIC,EAAMD,EAAGhrB,EAAG0jB,EAAGjB,EAAG+H,EAAEtqB,EAAI,GAAI,eAChCuiB,EAAIwI,EAAMxI,EAAGuI,EAAGhrB,EAAG0jB,EAAG8G,EAAEtqB,EAAI,IAAK,GAAI,WACrCwjB,EAAIuH,EAAMvH,EAAGjB,EAAGuI,EAAGhrB,EAAGwqB,EAAEtqB,GAAI,eAC5BF,EAAIirB,EAAMjrB,EAAG0jB,EAAGjB,EAAGuI,EAAGR,EAAEtqB,EAAI,GAAI,cAChC8qB,EAAIC,EAAMD,EAAGhrB,EAAG0jB,EAAGjB,EAAG+H,EAAEtqB,EAAI,IAAK,EAAG,UACpCuiB,EAAIwI,EAAMxI,EAAGuI,EAAGhrB,EAAG0jB,EAAG8G,EAAEtqB,EAAI,IAAK,eACjCwjB,EAAIuH,EAAMvH,EAAGjB,EAAGuI,EAAGhrB,EAAGwqB,EAAEtqB,EAAI,GAAI,eAChCF,EAAIirB,EAAMjrB,EAAG0jB,EAAGjB,EAAGuI,EAAGR,EAAEtqB,EAAI,GAAI,EAAG,WACnC8qB,EAAIC,EAAMD,EAAGhrB,EAAG0jB,EAAGjB,EAAG+H,EAAEtqB,EAAI,IAAK,eACjCuiB,EAAIwI,EAAMxI,EAAGuI,EAAGhrB,EAAG0jB,EAAG8G,EAAEtqB,EAAI,GAAI,eAChCwjB,EAAIuH,EAAMvH,EAAGjB,EAAGuI,EAAGhrB,EAAGwqB,EAAEtqB,EAAI,GAAI,GAAI,YACpCF,EAAIirB,EAAMjrB,EAAG0jB,EAAGjB,EAAGuI,EAAGR,EAAEtqB,EAAI,IAAK,eACjC8qB,EAAIC,EAAMD,EAAGhrB,EAAG0jB,EAAGjB,EAAG+H,EAAEtqB,EAAI,GAAI,aAChCuiB,EAAIwI,EAAMxI,EAAGuI,EAAGhrB,EAAG0jB,EAAG8G,EAAEtqB,EAAI,GAAI,GAAI,YACpCwjB,EAAIuH,EAAMvH,EAAGjB,EAAGuI,EAAGhrB,EAAGwqB,EAAEtqB,EAAI,IAAK,gBAEjCF,EAAIkrB,EAAMlrB,EAAG0jB,EAAGjB,EAAGuI,EAAGR,EAAEtqB,EAAI,GAAI,WAChC8qB,EAAIE,EAAMF,EAAGhrB,EAAG0jB,EAAGjB,EAAG+H,EAAEtqB,EAAI,GAAI,gBAChCuiB,EAAIyI,EAAMzI,EAAGuI,EAAGhrB,EAAG0jB,EAAG8G,EAAEtqB,EAAI,IAAK,GAAI,YACrCwjB,EAAIwH,EAAMxH,EAAGjB,EAAGuI,EAAGhrB,EAAGwqB,EAAEtqB,EAAI,IAAK,cACjCF,EAAIkrB,EAAMlrB,EAAG0jB,EAAGjB,EAAGuI,EAAGR,EAAEtqB,EAAI,GAAI,eAChC8qB,EAAIE,EAAMF,EAAGhrB,EAAG0jB,EAAGjB,EAAG+H,EAAEtqB,EAAI,GAAI,GAAI,YACpCuiB,EAAIyI,EAAMzI,EAAGuI,EAAGhrB,EAAG0jB,EAAG8G,EAAEtqB,EAAI,GAAI,eAChCwjB,EAAIwH,EAAMxH,EAAGjB,EAAGuI,EAAGhrB,EAAGwqB,EAAEtqB,EAAI,IAAK,gBACjCF,EAAIkrB,EAAMlrB,EAAG0jB,EAAGjB,EAAGuI,EAAGR,EAAEtqB,EAAI,IAAK,EAAG,WACpC8qB,EAAIE,EAAMF,EAAGhrB,EAAG0jB,EAAGjB,EAAG+H,EAAEtqB,GAAI,eAC5BuiB,EAAIyI,EAAMzI,EAAGuI,EAAGhrB,EAAG0jB,EAAG8G,EAAEtqB,EAAI,GAAI,eAChCwjB,EAAIwH,EAAMxH,EAAGjB,EAAGuI,EAAGhrB,EAAGwqB,EAAEtqB,EAAI,GAAI,GAAI,UACpCF,EAAIkrB,EAAMlrB,EAAG0jB,EAAGjB,EAAGuI,EAAGR,EAAEtqB,EAAI,GAAI,cAChC8qB,EAAIE,EAAMF,EAAGhrB,EAAG0jB,EAAGjB,EAAG+H,EAAEtqB,EAAI,IAAK,eACjCuiB,EAAIyI,EAAMzI,EAAGuI,EAAGhrB,EAAG0jB,EAAG8G,EAAEtqB,EAAI,IAAK,GAAI,WACrCwjB,EAAIwH,EAAMxH,EAAGjB,EAAGuI,EAAGhrB,EAAGwqB,EAAEtqB,EAAI,GAAI,eAEhCF,EAAImrB,EAAMnrB,EAAG0jB,EAAGjB,EAAGuI,EAAGR,EAAEtqB,GAAI,cAC5B8qB,EAAIG,EAAMH,EAAGhrB,EAAG0jB,EAAGjB,EAAG+H,EAAEtqB,EAAI,GAAI,GAAI,YACpCuiB,EAAI0I,EAAM1I,EAAGuI,EAAGhrB,EAAG0jB,EAAG8G,EAAEtqB,EAAI,IAAK,gBACjCwjB,EAAIyH,EAAMzH,EAAGjB,EAAGuI,EAAGhrB,EAAGwqB,EAAEtqB,EAAI,GAAI,cAChCF,EAAImrB,EAAMnrB,EAAG0jB,EAAGjB,EAAGuI,EAAGR,EAAEtqB,EAAI,IAAK,EAAG,YACpC8qB,EAAIG,EAAMH,EAAGhrB,EAAG0jB,EAAGjB,EAAG+H,EAAEtqB,EAAI,GAAI,gBAChCuiB,EAAI0I,EAAM1I,EAAGuI,EAAGhrB,EAAG0jB,EAAG8G,EAAEtqB,EAAI,IAAK,aACjCwjB,EAAIyH,EAAMzH,EAAGjB,EAAGuI,EAAGhrB,EAAGwqB,EAAEtqB,EAAI,GAAI,gBAChCF,EAAImrB,EAAMnrB,EAAG0jB,EAAGjB,EAAGuI,EAAGR,EAAEtqB,EAAI,GAAI,EAAG,YACnC8qB,EAAIG,EAAMH,EAAGhrB,EAAG0jB,EAAGjB,EAAG+H,EAAEtqB,EAAI,IAAK,cACjCuiB,EAAI0I,EAAM1I,EAAGuI,EAAGhrB,EAAG0jB,EAAG8G,EAAEtqB,EAAI,GAAI,gBAChCwjB,EAAIyH,EAAMzH,EAAGjB,EAAGuI,EAAGhrB,EAAGwqB,EAAEtqB,EAAI,IAAK,GAAI,YACrCF,EAAImrB,EAAMnrB,EAAG0jB,EAAGjB,EAAGuI,EAAGR,EAAEtqB,EAAI,GAAI,cAChC8qB,EAAIG,EAAMH,EAAGhrB,EAAG0jB,EAAGjB,EAAG+H,EAAEtqB,EAAI,IAAK,gBACjCuiB,EAAI0I,EAAM1I,EAAGuI,EAAGhrB,EAAG0jB,EAAG8G,EAAEtqB,EAAI,GAAI,GAAI,WACpCwjB,EAAIyH,EAAMzH,EAAGjB,EAAGuI,EAAGhrB,EAAGwqB,EAAEtqB,EAAI,GAAI,eAEhCF,EAAIuqB,EAAQvqB,EAAGqrB,GACf3H,EAAI6G,EAAQ7G,EAAG4H,GACf7I,EAAI8H,EAAQ9H,EAAG8I,GACfP,EAAIT,EAAQS,EAAGQ,EAEjB,QAAQxrB,EAAG0jB,EAAGjB,EAAGuI,GAMnB,QAASS,GAAUtH,GACjB,GAAIjkB,GACAmkB,EAAS,GACTqH,EAA0B,GAAfvH,EAAM5jB,MACrB,KAAKL,EAAI,EAAGA,EAAIwrB,EAAUxrB,GAAK,EAC7BmkB,GAAUC,OAAOqH,aAAcxH,EAAMjkB,GAAK,KAAQA,EAAI,GAAO,IAE/D,OAAOmkB,GAOT,QAASuH,GAAUzH,GACjB,GAAIjkB,GACAmkB,IAEJ,KADAA,GAAQF,EAAM5jB,QAAU,GAAK,GAAKqM,OAC7B1M,EAAI,EAAGA,EAAImkB,EAAO9jB,OAAQL,GAAK,EAClCmkB,EAAOnkB,GAAK,CAEd,IAAI2rB,GAAyB,EAAf1H,EAAM5jB,MACpB,KAAKL,EAAI,EAAGA,EAAI2rB,EAAS3rB,GAAK,EAC5BmkB,EAAOnkB,GAAK,KAAiC,IAA1BikB,EAAM2H,WAAW5rB,EAAI,KAAeA,EAAI,EAE7D,OAAOmkB,GAMT,QAAS0H,GAAQlsB,GACf,MAAO4rB,GAAUL,EAAQQ,EAAU/rB,GAAe,EAAXA,EAAEU,SAM3C,QAASyrB,GAAYzhB,EAAKrJ,GACxB,GAAIhB,GAIAsf,EAHAyM,EAAOL,EAAUrhB,GACjB2hB,KACAC,IAMJ,KAJAD,EAAK,IAAMC,EAAK,IAAMvf,OAClBqf,EAAK1rB,OAAS,KAChB0rB,EAAOb,EAAQa,EAAmB,EAAb1hB,EAAIhK,SAEtBL,EAAI,EAAGA,EAAI,GAAIA,GAAK,EACvBgsB,EAAKhsB,GAAe,UAAV+rB,EAAK/rB,GACfisB,EAAKjsB,GAAe,WAAV+rB,EAAK/rB,EAGjB,OADAsf,GAAO4L,EAAQc,EAAKlT,OAAO4S,EAAU1qB,IAAQ,IAAoB,EAAdA,EAAKX,QACjDkrB,EAAUL,EAAQe,EAAKnT,OAAOwG,GAAO,MAM9C,QAAS4M,GAASjI,GAChB,GAEIqG,GACAtqB,EAHAmsB,EAAS,mBACThI,EAAS,EAGb,KAAKnkB,EAAI,EAAGA,EAAIikB,EAAM5jB,OAAQL,GAAK,EACjCsqB,EAAIrG,EAAM2H,WAAW5rB,GACrBmkB,GAAUgI,EAAOxD,OAAQ2B,IAAM,EAAK,IAAQ6B,EAAOxD,OAAW,GAAJ2B,EAE5D,OAAOnG,GAMT,QAASiI,GAAanI,GACpB,MAAOoI,UAASxa,mBAAmBoS,IAMrC,QAASqI,GAAO3sB,GACd,MAAOksB,GAAQO,EAAazsB,IAE9B,QAAS4sB,GAAO5sB,GACd,MAAOusB,GAASI,EAAO3sB,IAEzB,QAAS6sB,GAAW/G,EAAGqF,GACrB,MAAOgB,GAAYM,EAAa3G,GAAI2G,EAAatB,IAEnD,QAAS2B,GAAWhH,EAAGqF,GACrB,MAAOoB,GAASM,EAAW/G,EAAGqF,IAGhC,QAAS/iB,GAAI2kB,EAAQriB,EAAKsiB,GACxB,MAAKtiB,GAMAsiB,EAGEH,EAAWniB,EAAKqiB,GAFdD,EAAWpiB,EAAKqiB,GANlBC,EAGEL,EAAOI,GAFLH,EAAOG,GAUpB5tB,EAAOD,QAAUkJ,YAEN,EAAE,EAAE,IAAI","file":"raven.min.js"} \ No newline at end of file +{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","consolePlugin","console","pluginOptions","logLevels","levels","push","callback","msg","data","captureMessage","level","pop","wrapConsoleMethod","wrapMethod","addPlugin","4","6","2","formatComponentName","vm","$root","name","_isVue","$options","_componentTag","__file","vuePlugin","Vue","config","_oldOnError","errorHandler","error","info","metaData","Object","prototype","toString","componentName","propsData","lifecycleHook","captureException","extra","3","RavenConfigError","message","constructor","utils","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","safeJoin","logger","Function","apply","7","5","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","sanitizeKeys","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isErrorEvent","isDOMError","isDOMException","isError","isObject","isPlainObject","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","sanitize","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","dsn","options","_logDebug","globalOptions","key","value","setDSN","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","substr","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","context","func","undefined","wrap","_before","wrapped","deep","_ignoreNextOnError","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","T","event","reason","unhandledPromiseRejection","B","_promiseRejectionHandler","bind","addEventListener","P","removeEventListener","ex","trimHeadFrames","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","U","currentOptions","exKeys","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","setDataCallback","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","L","setTimeout","$","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","_","evtName","_keypressTimeout","target","category","ba","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","ca","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","C","_originalFunctionToString","Q","D","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","type","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","E","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","R","builtin","S","F","installer","concat","G","str","m","exec","allowSecretKey","J","port","A","V","stackInfo","_triggerEvent","_processException","lineno","X","frame","_normalizeFrame","in_app","ga","stackInfoUrl","normalized","filename","line","colno","column","function","fa","prefixedMessage","exception","values","culprit","ha","request","Referer","breadcrumbs","_trimBreadcrumbs","ia","urlProp","urlProps","ja","httpData","userAgent","User-Agent","referrer","y","_backoffDuration","_backoffStart","ma","na","current","last","oa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Y","baseData","project","platform","_getHttpData","serverName","server_name","_sanitizeData","forEach","random","_sendProcessedPayload","pa","ra","qa","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","sa","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","onerror","open","setRequestHeader","send","ta","hash","evaluated","z","Z","setUser","setReleaseContext","10","8","9","RavenConstructor","_Raven","noConflict","Client","what","supportsErrorEvent","ErrorEvent","supportsDOMError","DOMError","supportsDOMException","DOMException","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","wrappedCallback","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","sanitizeMask","safeInput","o_O","getLocationHref","getLocationOrigin","origin","hostname","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","responseText","sourceMaps","sourceMapAddress","charAt","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","string","raw"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file diff --git a/dist/console/raven.js b/dist/console/raven.js index c1bd3294c35f..43e374832bd0 100644 --- a/dist/console/raven.js +++ b/dist/console/raven.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.25.0 (80dffad) | github.com/getsentry/raven-js */ +/*! Raven.js 3.25.1 (b6f3c7a) | github.com/getsentry/raven-js */ /* * Includes TraceKit @@ -242,7 +242,7 @@ Raven.prototype = { // webpack (using a build step causes webpack #1617). Grunt verifies that // this value matches package.json during build. // See: https://github.com/getsentry/raven-js/issues/465 - VERSION: '3.25.0', + VERSION: '3.25.1', debug: false, @@ -1551,8 +1551,8 @@ Raven.prototype = { var hasPushAndReplaceState = !isChromePackagedApp && _window.history && - history.pushState && - history.replaceState; + _window.history.pushState && + _window.history.replaceState; if (autoBreadcrumbs.location && hasPushAndReplaceState) { // TODO: remove onpopstate handler on uninstall() var oldOnPopState = _window.onpopstate; @@ -1581,8 +1581,8 @@ Raven.prototype = { }; }; - fill(history, 'pushState', historyReplacementFunction, wrappedBuiltIns); - fill(history, 'replaceState', historyReplacementFunction, wrappedBuiltIns); + fill(_window.history, 'pushState', historyReplacementFunction, wrappedBuiltIns); + fill(_window.history, 'replaceState', historyReplacementFunction, wrappedBuiltIns); } if (autoBreadcrumbs.console && 'console' in _window && console.log) { @@ -1872,7 +1872,7 @@ Raven.prototype = { if (this._hasNavigator && _navigator.userAgent) { httpData.headers = { - 'User-Agent': navigator.userAgent + 'User-Agent': _navigator.userAgent }; } @@ -3047,6 +3047,16 @@ function getLocationHref() { function getLocationOrigin() { if (typeof document === 'undefined' || document.location == null) return ''; + + // Oh dear IE10... + if (!document.location.origin) { + document.location.origin = + document.location.protocol + + '//' + + document.location.hostname + + (document.location.port ? ':' + document.location.port : ''); + } + return document.location.origin; } diff --git a/dist/console/raven.min.js b/dist/console/raven.min.js index b55d8aed05c4..d383590501a3 100644 --- a/dist/console/raven.min.js +++ b/dist/console/raven.min.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.25.0 (80dffad) | github.com/getsentry/raven-js */ -!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.Raven=a()}}(function(){return function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};b[g][0].call(k.exports,function(a){var c=b[g][1][a];return e(c?c:a)},k,k.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;gthis.k.maxBreadcrumbs&&this.u.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.r.push([a,b]),this.n&&this.F(),this},setUserContext:function(a){return this.j.user=a,this},setExtraContext:function(a){return this.Z("extra",a),this},setTagsContext:function(a){return this.Z("tags",a),this},clearContext:function(){return this.j={},this},getContext:function(){return JSON.parse(h(this.j))},setEnvironment:function(a){return this.k.environment=a,this},setRelease:function(a){return this.k.release=a,this},setDataCallback:function(a){var b=this.k.dataCallback;return this.k.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.k.breadcrumbCallback;return this.k.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.k.shouldSendCallback;return this.k.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.k.transport=a,this},lastException:function(){return this.d},lastEventId:function(){return this.f},isSetup:function(){return!!this.a&&(!!this.g||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.z("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=R.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(S){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.H;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.j.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.J(this.G(c)),h=S.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(S.head||S.body).appendChild(h)}},L:function(){var a=this;this.m+=1,setTimeout(function(){a.m-=1})},$:function(a,b){var c,d;if(this.b){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),S.createEvent?(c=S.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=S.createEventObject(),c.eventType=a);for(d in b)A(b,d)&&(c[d]=b[d]);if(S.createEvent)S.dispatchEvent(c);else try{S.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},_:function(a){var b=this;return function(c){if(b.aa=null,b.v!==c){b.v=c;var d;try{d=E(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ba:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.aa;g||a._("input")(c),clearTimeout(g),a.aa=setTimeout(function(){a.aa=null},b)}}},ca:function(a,b){var c=H(this.w.href),d=H(b),e=H(a);this.x=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},C:function(){var a=this;a.da=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.M?a.da.apply(this.O,arguments):a.da.apply(this,arguments)}},Q:function(){this.da&&(Function.prototype.toString=this.da)},D:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.ca(b.x,c+""),a.apply(this,arguments)}};I(history,"pushState",j,d),I(history,"replaceState",j,d)}if(c.console&&"console"in R&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};w(["debug","info","warn","error","log"],function(a,b){O(console,b,k)})}},R:function(){for(var a;this.t.length;){a=this.t.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},S:function(){for(var a in this.q)this.p[a]=this.q[a]},F:function(){var a=this;w(this.r,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},G:function(a){var b=Q.exec(a),c={},d=7;try{for(;d--;)c[P[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.k.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},J:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},A:function(){this.m||this.V.apply(this,arguments)},V:function(a,b){var c=this.X(a,b);this.$("handle",{stackInfo:a,options:b}),this.fa(a.name,a.message,a.url,a.lineno,c,b)},X:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(w(a.stack,function(b,e){var f=c.ga(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.u,0)}),this.j.user&&(a.user=this.j.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),a=this.pa(a),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||v(a[b]))&&delete a[b]}),s(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!v(a)&&(!s(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.ma()?void this.z("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function F(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&l(b))for(c=b.split(/\s+/),f=0;fc?Q(a,b-1):d}function R(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?X:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function S(a,b){function c(a){return m(a)?a.map(function(a){return c(a)}):k(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!m(b)||m(b)&&0===b.length)return a;var d,e=A(b),f="********";try{d=JSON.parse(T(a))}catch(g){return a}return c(d)}var T=a(8),U="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},V=3,W=51200,X=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isDOMError:g,isDOMException:h,isUndefined:i,isFunction:j,isPlainObject:k,isString:l,isArray:m,isEmptyObject:n,supportsErrorEvent:o,supportsDOMError:p,supportsDOMException:q,supportsFetch:r,supportsReferrerPolicy:s,supportsPromiseRejectionEvent:t,wrappedCallback:u,each:v,objectMerge:w,truncate:y,objectFrozen:x,hasKey:z,joinRegExp:A,urlencode:B,uuid4:D,htmlTreeAsString:E,htmlElementAsString:F,isSameException:I,isSameStacktrace:J,parseUrl:C,fill:K,safeJoin:L,serializeException:Q,serializeKeysForMessage:R,sanitize:S}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{8:8}],7:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}function e(){return"undefined"==typeof document||null==document.location?"":document.location.origin}var f=a(6),g={collectWindowErrors:!0,debug:!1},h="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},i=[].slice,j="?",k=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;g.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function e(a,b){var c=null;if(!b||g.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(i.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,h,i){var l=null,m=f.isErrorEvent(i)?i.error:i,n=f.isErrorEvent(a)?a.message:a;if(v)g.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&f.isError(m))l=g.computeStackTrace(m),e(l,!0);else{var p,r={url:b,line:c,column:h},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(k);p&&(s=p[1],n=p[2])}r.func=j,l={name:s,message:n,url:d(),stack:[r]},e(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=h.onerror,h.onerror=l,r=!0)}function n(){r&&(h.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,e.apply(null,[a,!1].concat(b))}function p(a,b){var c=i.call(arguments,1);if(v){if(u===a)return;o()}var d=g.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),g.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,f,g=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,h=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,i=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,k=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,l=/\((\S*)(?::(\d+))(?::(\d+))\)/,m=a.stack.split("\n"),n=[],o=(/^(.*) is undefined$/.exec(a.message),0),p=m.length;o eval")>-1;r&&(b=k.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==o||c[5]||"undefined"==typeof a.columnNumber||(n[0].column=a.columnNumber+1),f={url:c[3],func:c[1]||j,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}if(!f.func&&f.line&&(f.func=j),f.url&&"blob:"===f.url.substr(0,5)){var s=new XMLHttpRequest;if(s.open("GET",f.url,!1),s.send(null),200===s.status){var t=s.responseText||"";t=t.slice(-300);var u=t.match(/\/\/# sourceMappingURL=(.*)$/);if(u){var v=u[1];"~"===v.charAt(0)&&(v=e()+v.slice(1)),f.url=v.slice(0,-4)}}}n.push(f)}return n.length?{name:a.name,message:a.message,url:d(),stack:n}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=j),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,e){for(var h,i,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==f&&o!==g.report){if(i={url:null,func:j,line:null,column:null},o.name?i.func=o.name:(h=k.exec(o.toString()))&&(i.func=h[1]),"undefined"==typeof i.func)try{i.func=h.input.substring(0,h.input.indexOf("{"))}catch(p){}m[""+o]?n=!0:m[""+o]=!0,l.push(i)}e&&l.splice(0,e);var q={name:a.name,message:a.message,url:d(),stack:l};return b(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),q}function f(b,e){var f=null;e=null==e?0:+e;try{if(f=a(b))return f}catch(h){if(g.debug)throw h}try{if(f=c(b,e+1))return f}catch(h){if(g.debug)throw h}return{name:b.name,message:b.message,url:d()}}return f.augmentStackTraceWithInitialElement=b, -f.computeStackTraceFromStackProp=a,f}(),b.exports=g}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{6:6}],8:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}],9:[function(a,b,c){function d(a,b){var c=(65535&a)+(65535&b),d=(a>>16)+(b>>16)+(c>>16);return d<<16|65535&c}function e(a,b){return a<>>32-b}function f(a,b,c,f,g,h){return d(e(d(d(b,a),d(f,h)),g),c)}function g(a,b,c,d,e,g,h){return f(b&c|~b&d,a,b,e,g,h)}function h(a,b,c,d,e,g,h){return f(b&d|c&~d,a,b,e,g,h)}function i(a,b,c,d,e,g,h){return f(b^c^d,a,b,e,g,h)}function j(a,b,c,d,e,g,h){return f(c^(b|~d),a,b,e,g,h)}function k(a,b){a[b>>5]|=128<>>9<<4)+14]=b;var c,e,f,k,l,m=1732584193,n=-271733879,o=-1732584194,p=271733878;for(c=0;c>5]>>>b%32&255);return c}function m(a){var b,c=[];for(c[(a.length>>2)-1]=void 0,b=0;b>5]|=(255&a.charCodeAt(b/8))<16&&(e=k(e,8*a.length)),c=0;c<16;c+=1)f[c]=909522486^e[c],g[c]=1549556828^e[c];return d=k(f.concat(m(b)),512+8*b.length),l(k(g.concat(d),640))}function p(a){var b,c,d="0123456789abcdef",e="";for(c=0;c>>4&15)+d.charAt(15&b);return e}function q(a){return unescape(encodeURIComponent(a))}function r(a){return n(q(a))}function s(a){return p(r(a))}function t(a,b){return o(q(a),q(b))}function u(a,b){return p(t(a,b))}function v(a,b,c){return b?c?t(b,a):u(b,a):c?r(a):s(a)}b.exports=v},{}]},{},[5,1])(5)}); +/*! Raven.js 3.25.1 (b6f3c7a) | github.com/getsentry/raven-js */ +!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.Raven=a()}}(function(){return function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};b[g][0].call(k.exports,function(a){var c=b[g][1][a];return e(c?c:a)},k,k.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;gthis.k.maxBreadcrumbs&&this.u.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.r.push([a,b]),this.n&&this.F(),this},setUserContext:function(a){return this.j.user=a,this},setExtraContext:function(a){return this.Z("extra",a),this},setTagsContext:function(a){return this.Z("tags",a),this},clearContext:function(){return this.j={},this},getContext:function(){return JSON.parse(h(this.j))},setEnvironment:function(a){return this.k.environment=a,this},setRelease:function(a){return this.k.release=a,this},setDataCallback:function(a){var b=this.k.dataCallback;return this.k.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.k.breadcrumbCallback;return this.k.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.k.shouldSendCallback;return this.k.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.k.transport=a,this},lastException:function(){return this.d},lastEventId:function(){return this.f},isSetup:function(){return!!this.a&&(!!this.g||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.z("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=R.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(S){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.H;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.j.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.J(this.G(c)),h=S.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(S.head||S.body).appendChild(h)}},L:function(){var a=this;this.m+=1,setTimeout(function(){a.m-=1})},$:function(a,b){var c,d;if(this.b){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),S.createEvent?(c=S.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=S.createEventObject(),c.eventType=a);for(d in b)A(b,d)&&(c[d]=b[d]);if(S.createEvent)S.dispatchEvent(c);else try{S.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},_:function(a){var b=this;return function(c){if(b.aa=null,b.v!==c){b.v=c;var d;try{d=E(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ba:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.aa;g||a._("input")(c),clearTimeout(g),a.aa=setTimeout(function(){a.aa=null},b)}}},ca:function(a,b){var c=H(this.w.href),d=H(b),e=H(a);this.x=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},C:function(){var a=this;a.da=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.M?a.da.apply(this.O,arguments):a.da.apply(this,arguments)}},Q:function(){this.da&&(Function.prototype.toString=this.da)},D:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.ca(b.x,c+""),a.apply(this,arguments)}};I(R.history,"pushState",j,d),I(R.history,"replaceState",j,d)}if(c.console&&"console"in R&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};w(["debug","info","warn","error","log"],function(a,b){O(console,b,k)})}},R:function(){for(var a;this.t.length;){a=this.t.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},S:function(){for(var a in this.q)this.p[a]=this.q[a]},F:function(){var a=this;w(this.r,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},G:function(a){var b=Q.exec(a),c={},d=7;try{for(;d--;)c[P[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.k.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},J:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},A:function(){this.m||this.V.apply(this,arguments)},V:function(a,b){var c=this.X(a,b);this.$("handle",{stackInfo:a,options:b}),this.fa(a.name,a.message,a.url,a.lineno,c,b)},X:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(w(a.stack,function(b,e){var f=c.ga(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.u,0)}),this.j.user&&(a.user=this.j.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),a=this.pa(a),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||v(a[b]))&&delete a[b]}),s(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!v(a)&&(!s(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.ma()?void this.z("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function F(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&l(b))for(c=b.split(/\s+/),f=0;fc?Q(a,b-1):d}function R(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?X:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function S(a,b){function c(a){return m(a)?a.map(function(a){return c(a)}):k(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!m(b)||m(b)&&0===b.length)return a;var d,e=A(b),f="********";try{d=JSON.parse(T(a))}catch(g){return a}return c(d)}var T=a(8),U="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},V=3,W=51200,X=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isDOMError:g,isDOMException:h,isUndefined:i,isFunction:j,isPlainObject:k,isString:l,isArray:m,isEmptyObject:n,supportsErrorEvent:o,supportsDOMError:p,supportsDOMException:q,supportsFetch:r,supportsReferrerPolicy:s,supportsPromiseRejectionEvent:t,wrappedCallback:u,each:v,objectMerge:w,truncate:y,objectFrozen:x,hasKey:z,joinRegExp:A,urlencode:B,uuid4:D,htmlTreeAsString:E,htmlElementAsString:F,isSameException:I,isSameStacktrace:J,parseUrl:C,fill:K,safeJoin:L,serializeException:Q,serializeKeysForMessage:R,sanitize:S}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{8:8}],7:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}function e(){return"undefined"==typeof document||null==document.location?"":(document.location.origin||(document.location.origin=document.location.protocol+"//"+document.location.hostname+(document.location.port?":"+document.location.port:"")),document.location.origin)}var f=a(6),g={collectWindowErrors:!0,debug:!1},h="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},i=[].slice,j="?",k=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;g.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function e(a,b){var c=null;if(!b||g.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(i.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,h,i){var l=null,m=f.isErrorEvent(i)?i.error:i,n=f.isErrorEvent(a)?a.message:a;if(v)g.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&f.isError(m))l=g.computeStackTrace(m),e(l,!0);else{var p,r={url:b,line:c,column:h},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(k);p&&(s=p[1],n=p[2])}r.func=j,l={name:s,message:n,url:d(),stack:[r]},e(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=h.onerror,h.onerror=l,r=!0)}function n(){r&&(h.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,e.apply(null,[a,!1].concat(b))}function p(a,b){var c=i.call(arguments,1);if(v){if(u===a)return;o()}var d=g.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),g.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,f,g=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,h=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,i=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,k=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,l=/\((\S*)(?::(\d+))(?::(\d+))\)/,m=a.stack.split("\n"),n=[],o=(/^(.*) is undefined$/.exec(a.message),0),p=m.length;o eval")>-1;r&&(b=k.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==o||c[5]||"undefined"==typeof a.columnNumber||(n[0].column=a.columnNumber+1),f={url:c[3],func:c[1]||j,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}if(!f.func&&f.line&&(f.func=j),f.url&&"blob:"===f.url.substr(0,5)){var s=new XMLHttpRequest;if(s.open("GET",f.url,!1),s.send(null),200===s.status){var t=s.responseText||"";t=t.slice(-300);var u=t.match(/\/\/# sourceMappingURL=(.*)$/);if(u){var v=u[1];"~"===v.charAt(0)&&(v=e()+v.slice(1)),f.url=v.slice(0,-4)}}}n.push(f)}return n.length?{name:a.name,message:a.message,url:d(),stack:n}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=j),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,e){for(var h,i,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==f&&o!==g.report){if(i={url:null,func:j,line:null,column:null},o.name?i.func=o.name:(h=k.exec(o.toString()))&&(i.func=h[1]),"undefined"==typeof i.func)try{i.func=h.input.substring(0,h.input.indexOf("{"))}catch(p){}m[""+o]?n=!0:m[""+o]=!0,l.push(i)}e&&l.splice(0,e);var q={name:a.name,message:a.message,url:d(),stack:l};return b(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),q}function f(b,e){var f=null;e=null==e?0:+e; +try{if(f=a(b))return f}catch(h){if(g.debug)throw h}try{if(f=c(b,e+1))return f}catch(h){if(g.debug)throw h}return{name:b.name,message:b.message,url:d()}}return f.augmentStackTraceWithInitialElement=b,f.computeStackTraceFromStackProp=a,f}(),b.exports=g}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{6:6}],8:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}],9:[function(a,b,c){function d(a,b){var c=(65535&a)+(65535&b),d=(a>>16)+(b>>16)+(c>>16);return d<<16|65535&c}function e(a,b){return a<>>32-b}function f(a,b,c,f,g,h){return d(e(d(d(b,a),d(f,h)),g),c)}function g(a,b,c,d,e,g,h){return f(b&c|~b&d,a,b,e,g,h)}function h(a,b,c,d,e,g,h){return f(b&d|c&~d,a,b,e,g,h)}function i(a,b,c,d,e,g,h){return f(b^c^d,a,b,e,g,h)}function j(a,b,c,d,e,g,h){return f(c^(b|~d),a,b,e,g,h)}function k(a,b){a[b>>5]|=128<>>9<<4)+14]=b;var c,e,f,k,l,m=1732584193,n=-271733879,o=-1732584194,p=271733878;for(c=0;c>5]>>>b%32&255);return c}function m(a){var b,c=[];for(c[(a.length>>2)-1]=void 0,b=0;b>5]|=(255&a.charCodeAt(b/8))<16&&(e=k(e,8*a.length)),c=0;c<16;c+=1)f[c]=909522486^e[c],g[c]=1549556828^e[c];return d=k(f.concat(m(b)),512+8*b.length),l(k(g.concat(d),640))}function p(a){var b,c,d="0123456789abcdef",e="";for(c=0;c>>4&15)+d.charAt(15&b);return e}function q(a){return unescape(encodeURIComponent(a))}function r(a){return n(q(a))}function s(a){return p(r(a))}function t(a,b){return o(q(a),q(b))}function u(a,b){return p(t(a,b))}function v(a,b,c){return b?c?t(b,a):u(b,a):c?r(a):s(a)}b.exports=v},{}]},{},[5,1])(5)}); //# sourceMappingURL=raven.min.js.map \ No newline at end of file diff --git a/dist/console/raven.min.js.map b/dist/console/raven.min.js.map index 9b6ab6386485..b58ce338f87c 100644 --- a/dist/console/raven.min.js.map +++ b/dist/console/raven.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","consolePlugin","console","pluginOptions","logLevels","levels","push","callback","msg","data","captureMessage","level","pop","wrapConsoleMethod","wrapMethod","addPlugin","3","5","2","RavenConfigError","message","name","prototype","constructor","utils","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","safeJoin","logger","extra","Function","apply","6","4","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","sanitizeKeys","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isErrorEvent","isDOMError","isDOMException","isError","isObject","isPlainObject","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","sanitize","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","config","dsn","options","_logDebug","globalOptions","key","value","setDSN","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","toString","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","substr","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","context","func","undefined","wrap","_before","wrapped","deep","_ignoreNextOnError","captureException","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","T","event","reason","unhandledPromiseRejection","B","_promiseRejectionHandler","bind","addEventListener","P","removeEventListener","ex","trimHeadFrames","error","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","U","currentOptions","exKeys","Object","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","setDataCallback","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","L","setTimeout","$","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","_","evtName","_keypressTimeout","target","category","ba","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","ca","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","C","_originalFunctionToString","Q","D","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","type","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","E","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","R","builtin","S","F","installer","concat","G","str","m","exec","allowSecretKey","J","port","A","V","stackInfo","_triggerEvent","_processException","lineno","X","frame","_normalizeFrame","in_app","ga","stackInfoUrl","normalized","filename","line","colno","column","function","fa","prefixedMessage","exception","values","culprit","ha","request","Referer","breadcrumbs","_trimBreadcrumbs","ia","urlProp","urlProps","ja","httpData","userAgent","User-Agent","referrer","y","_backoffDuration","_backoffStart","ma","na","current","last","oa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Y","baseData","project","platform","_getHttpData","serverName","server_name","_sanitizeData","forEach","random","_sendProcessedPayload","pa","ra","qa","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","sa","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","onerror","open","setRequestHeader","send","ta","hash","evaluated","z","Z","setUser","setReleaseContext","7","8","9","RavenConstructor","_Raven","noConflict","Client","what","supportsErrorEvent","ErrorEvent","supportsDOMError","DOMError","supportsDOMException","DOMException","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","wrappedCallback","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","sanitizeMask","safeInput","o_O","getLocationHref","getLocationOrigin","origin","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","responseText","sourceMaps","sourceMapAddress","charAt","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","string","raw"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file +{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","consolePlugin","console","pluginOptions","logLevels","levels","push","callback","msg","data","captureMessage","level","pop","wrapConsoleMethod","wrapMethod","addPlugin","3","5","2","RavenConfigError","message","name","prototype","constructor","utils","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","safeJoin","logger","extra","Function","apply","6","4","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","sanitizeKeys","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isErrorEvent","isDOMError","isDOMException","isError","isObject","isPlainObject","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","sanitize","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","config","dsn","options","_logDebug","globalOptions","key","value","setDSN","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","toString","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","substr","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","context","func","undefined","wrap","_before","wrapped","deep","_ignoreNextOnError","captureException","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","T","event","reason","unhandledPromiseRejection","B","_promiseRejectionHandler","bind","addEventListener","P","removeEventListener","ex","trimHeadFrames","error","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","U","currentOptions","exKeys","Object","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","setDataCallback","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","L","setTimeout","$","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","_","evtName","_keypressTimeout","target","category","ba","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","ca","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","C","_originalFunctionToString","Q","D","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","type","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","E","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","R","builtin","S","F","installer","concat","G","str","m","exec","allowSecretKey","J","port","A","V","stackInfo","_triggerEvent","_processException","lineno","X","frame","_normalizeFrame","in_app","ga","stackInfoUrl","normalized","filename","line","colno","column","function","fa","prefixedMessage","exception","values","culprit","ha","request","Referer","breadcrumbs","_trimBreadcrumbs","ia","urlProp","urlProps","ja","httpData","userAgent","User-Agent","referrer","y","_backoffDuration","_backoffStart","ma","na","current","last","oa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Y","baseData","project","platform","_getHttpData","serverName","server_name","_sanitizeData","forEach","random","_sendProcessedPayload","pa","ra","qa","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","sa","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","onerror","open","setRequestHeader","send","ta","hash","evaluated","z","Z","setUser","setReleaseContext","7","8","9","RavenConstructor","_Raven","noConflict","Client","what","supportsErrorEvent","ErrorEvent","supportsDOMError","DOMError","supportsDOMException","DOMException","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","wrappedCallback","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","sanitizeMask","safeInput","o_O","getLocationHref","getLocationOrigin","origin","hostname","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","responseText","sourceMaps","sourceMapAddress","charAt","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","string","raw"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file diff --git a/dist/ember,require,vue/raven.js b/dist/ember,require,vue/raven.js index 967f3f33e755..d418f04cea8d 100644 --- a/dist/ember,require,vue/raven.js +++ b/dist/ember,require,vue/raven.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.25.0 (80dffad) | github.com/getsentry/raven-js */ +/*! Raven.js 3.25.1 (b6f3c7a) | github.com/getsentry/raven-js */ /* * Includes TraceKit @@ -307,7 +307,7 @@ Raven.prototype = { // webpack (using a build step causes webpack #1617). Grunt verifies that // this value matches package.json during build. // See: https://github.com/getsentry/raven-js/issues/465 - VERSION: '3.25.0', + VERSION: '3.25.1', debug: false, @@ -1616,8 +1616,8 @@ Raven.prototype = { var hasPushAndReplaceState = !isChromePackagedApp && _window.history && - history.pushState && - history.replaceState; + _window.history.pushState && + _window.history.replaceState; if (autoBreadcrumbs.location && hasPushAndReplaceState) { // TODO: remove onpopstate handler on uninstall() var oldOnPopState = _window.onpopstate; @@ -1646,8 +1646,8 @@ Raven.prototype = { }; }; - fill(history, 'pushState', historyReplacementFunction, wrappedBuiltIns); - fill(history, 'replaceState', historyReplacementFunction, wrappedBuiltIns); + fill(_window.history, 'pushState', historyReplacementFunction, wrappedBuiltIns); + fill(_window.history, 'replaceState', historyReplacementFunction, wrappedBuiltIns); } if (autoBreadcrumbs.console && 'console' in _window && console.log) { @@ -1937,7 +1937,7 @@ Raven.prototype = { if (this._hasNavigator && _navigator.userAgent) { httpData.headers = { - 'User-Agent': navigator.userAgent + 'User-Agent': _navigator.userAgent }; } @@ -3112,6 +3112,16 @@ function getLocationHref() { function getLocationOrigin() { if (typeof document === 'undefined' || document.location == null) return ''; + + // Oh dear IE10... + if (!document.location.origin) { + document.location.origin = + document.location.protocol + + '//' + + document.location.hostname + + (document.location.port ? ':' + document.location.port : ''); + } + return document.location.origin; } diff --git a/dist/ember,require,vue/raven.min.js b/dist/ember,require,vue/raven.min.js index dab27d8de915..852555cdc8c2 100644 --- a/dist/ember,require,vue/raven.min.js +++ b/dist/ember,require,vue/raven.min.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.25.0 (80dffad) | github.com/getsentry/raven-js */ -!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.Raven=a()}}(function(){var a;return function b(a,c,d){function e(g,h){if(!c[g]){if(!a[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};a[g][0].call(k.exports,function(b){var c=a[g][1][b];return e(c?c:b)},k,k.exports,b,a,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;g":"anonymous component")+(a._isVue&&a.$options.__file?" at "+a.$options.__file:"")}function e(a,b){if(b=b||window.Vue,b&&b.config){var c=b.config.errorHandler;b.config.errorHandler=function(b,e,f){var g={};"[object Object]"===Object.prototype.toString.call(e)&&(g.componentName=d(e),g.propsData=e.$options.propsData),"undefined"!=typeof f&&(g.lifecycleHook=f),a.captureException(b,{extra:g}),"function"==typeof c&&c.call(this,b,e,f)}}}b.exports=e,a(7).addPlugin(b.exports)},{7:7}],4:[function(a,b,c){function d(a){this.name="RavenConfigError",this.message=a}d.prototype=new Error,d.prototype.constructor=d,b.exports=d},{}],5:[function(a,b,c){var d=a(8),e=function(a,b,c){var e=a[b],f=a;if(b in a){var g="warn"===b?"warning":b;a[b]=function(){var a=[].slice.call(arguments),h=d.safeJoin(a," "),i={level:g,logger:"console",extra:{arguments:a}};"assert"===b?a[0]===!1&&(h="Assertion failed: "+(d.safeJoin(a.slice(1)," ")||"console.assert"),i.extra.arguments=a.slice(1),c&&c(h,i)):c&&c(h,i),e&&Function.prototype.apply.call(e,f,a)}}};b.exports={wrapMethod:e}},{8:8}],6:[function(a,b,c){(function(c){function d(){return+new Date}function e(a,b){return s(b)?function(c){return b(c,a)}:b}function f(){this.a=!("object"!=typeof JSON||!JSON.stringify),this.b=!r(S),this.c=!r(T),this.d=null,this.e=null,this.f=null,this.g=null,this.h=null,this.i=null,this.j={},this.k={release:R.SENTRY_RELEASE&&R.SENTRY_RELEASE.id,logger:"javascript",ignoreErrors:[],ignoreUrls:[],whitelistUrls:[],includePaths:[],headers:null,collectWindowErrors:!0,captureUnhandledRejections:!0,maxMessageLength:0,maxUrlLength:250,stackTraceLimit:50,autoBreadcrumbs:!0,instrument:!0,sampleRate:1,sanitizeKeys:[]},this.l={method:"POST",keepalive:!0,referrerPolicy:K()?"origin":""},this.m=0,this.n=!1,this.o=Error.stackTraceLimit,this.p=R.console||{},this.q={},this.r=[],this.s=d(),this.t=[],this.u=[],this.v=null,this.w=R.location,this.x=this.w&&this.w.href,this.y();for(var a in this.p)this.q[a]=this.p[a]}var g=a(9),h=a(10),i=a(11),j=a(4),k=a(8),l=k.isErrorEvent,m=k.isDOMError,n=k.isDOMException,o=k.isError,p=k.isObject,q=k.isPlainObject,r=k.isUndefined,s=k.isFunction,t=k.isString,u=k.isArray,v=k.isEmptyObject,w=k.each,x=k.objectMerge,y=k.truncate,z=k.objectFrozen,A=k.hasKey,B=k.joinRegExp,C=k.urlencode,D=k.uuid4,E=k.htmlTreeAsString,F=k.isSameException,G=k.isSameStacktrace,H=k.parseUrl,I=k.fill,J=k.supportsFetch,K=k.supportsReferrerPolicy,L=k.serializeKeysForMessage,M=k.serializeException,N=k.sanitize,O=a(5).wrapMethod,P="source protocol user pass host port path".split(" "),Q=/^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/,R="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},S=R.document,T=R.navigator;f.prototype={VERSION:"3.25.0",debug:!1,TraceKit:g,config:function(a,b){var c=this;if(c.g)return this.z("error","Error: Raven has already been configured"),c;if(!a)return c;var d=c.k;b&&w(b,function(a,b){"tags"===a||"extra"===a||"user"===a?c.j[a]=b:d[a]=b}),c.setDSN(a),d.ignoreErrors.push(/^Script error\.?$/),d.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/),d.ignoreErrors=B(d.ignoreErrors),d.ignoreUrls=!!d.ignoreUrls.length&&B(d.ignoreUrls),d.whitelistUrls=!!d.whitelistUrls.length&&B(d.whitelistUrls),d.includePaths=B(d.includePaths),d.maxBreadcrumbs=Math.max(0,Math.min(d.maxBreadcrumbs||100,100));var e={xhr:!0,console:!0,dom:!0,location:!0,sentry:!0},f=d.autoBreadcrumbs;"[object Object]"==={}.toString.call(f)?f=x(e,f):f!==!1&&(f=e),d.autoBreadcrumbs=f;var h={tryCatch:!0},i=d.instrument;return"[object Object]"==={}.toString.call(i)?i=x(h,i):i!==!1&&(i=h),d.instrument=i,g.collectWindowErrors=!!d.collectWindowErrors,c},install:function(){var a=this;return a.isSetup()&&!a.n&&(g.report.subscribe(function(){a.A.apply(a,arguments)}),a.k.captureUnhandledRejections&&a.B(),a.C(),a.k.instrument&&a.k.instrument.tryCatch&&a.D(),a.k.autoBreadcrumbs&&a.E(),a.F(),a.n=!0),Error.stackTraceLimit=a.k.stackTraceLimit,this},setDSN:function(a){var b=this,c=b.G(a),d=c.path.lastIndexOf("/"),e=c.path.substr(1,d);b.H=a,b.h=c.user,b.I=c.pass&&c.pass.substr(1),b.i=c.path.substr(d+1),b.g=b.J(c),b.K=b.g+"/"+e+"api/"+b.i+"/store/",this.y()},context:function(a,b,c){return s(a)&&(c=b||[],b=a,a=void 0),this.wrap(a,b).apply(this,c)},wrap:function(a,b,c){function d(){var d=[],f=arguments.length,g=!a||a&&a.deep!==!1;for(c&&s(c)&&c.apply(this,arguments);f--;)d[f]=g?e.wrap(a,arguments[f]):arguments[f];try{return b.apply(this,d)}catch(h){throw e.L(),e.captureException(h,a),h}}var e=this;if(r(b)&&!s(a))return a;if(s(a)&&(b=a,a=void 0),!s(b))return b;try{if(b.M)return b;if(b.N)return b.N}catch(f){return b}for(var g in b)A(b,g)&&(d[g]=b[g]);return d.prototype=b.prototype,b.N=d,d.M=!0,d.O=b,d},uninstall:function(){return g.report.uninstall(),this.P(),this.Q(),this.R(),this.S(),Error.stackTraceLimit=this.o,this.n=!1,this},T:function(a){this.z("debug","Raven caught unhandled promise rejection:",a),this.captureException(a.reason,{extra:{unhandledPromiseRejection:!0}})},B:function(){return this.T=this.T.bind(this),R.addEventListener&&R.addEventListener("unhandledrejection",this.T),this},P:function(){return R.removeEventListener&&R.removeEventListener("unhandledrejection",this.T),this},captureException:function(a,b){if(b=x({trimHeadFrames:0},b?b:{}),l(a)&&a.error)a=a.error;else{if(m(a)||n(a)){var c=a.name||(m(a)?"DOMError":"DOMException"),d=a.message?c+": "+a.message:c;return this.captureMessage(d,x(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}))}if(o(a))a=a;else{if(!q(a))return this.captureMessage(a,x(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}));b=this.U(b,a),a=new Error(b.message)}}this.d=a;try{var e=g.computeStackTrace(a);this.V(e,b)}catch(f){if(a!==f)throw f}return this},U:function(a,b){var c=Object.keys(b).sort(),d=x(a,{message:"Non-Error exception captured with keys: "+L(c),fingerprint:[i(c)],extra:a.extra||{}});return d.extra.W=M(b),d},captureMessage:function(a,b){if(!this.k.ignoreErrors.test||!this.k.ignoreErrors.test(a)){b=b||{},a+="";var c,d=x({message:a},b);try{throw new Error(a)}catch(e){c=e}c.name=null;var f=g.computeStackTrace(c),h=u(f.stack)&&f.stack[1];h&&"Raven.captureException"===h.func&&(h=f.stack[2]);var i=h&&h.url||"";if((!this.k.ignoreUrls.test||!this.k.ignoreUrls.test(i))&&(!this.k.whitelistUrls.test||this.k.whitelistUrls.test(i))){if(this.k.stacktrace||b&&b.stacktrace){d.fingerprint=null==d.fingerprint?a:d.fingerprint,b=x({trimHeadFrames:0},b),b.trimHeadFrames+=1;var j=this.X(f,b);d.stacktrace={frames:j.reverse()}}return d.fingerprint&&(d.fingerprint=u(d.fingerprint)?d.fingerprint:[d.fingerprint]),this.Y(d),this}}},captureBreadcrumb:function(a){var b=x({timestamp:d()/1e3},a);if(s(this.k.breadcrumbCallback)){var c=this.k.breadcrumbCallback(b);if(p(c)&&!v(c))b=c;else if(c===!1)return this}return this.u.push(b),this.u.length>this.k.maxBreadcrumbs&&this.u.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.r.push([a,b]),this.n&&this.F(),this},setUserContext:function(a){return this.j.user=a,this},setExtraContext:function(a){return this.Z("extra",a),this},setTagsContext:function(a){return this.Z("tags",a),this},clearContext:function(){return this.j={},this},getContext:function(){return JSON.parse(h(this.j))},setEnvironment:function(a){return this.k.environment=a,this},setRelease:function(a){return this.k.release=a,this},setDataCallback:function(a){var b=this.k.dataCallback;return this.k.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.k.breadcrumbCallback;return this.k.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.k.shouldSendCallback;return this.k.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.k.transport=a,this},lastException:function(){return this.d},lastEventId:function(){return this.f},isSetup:function(){return!!this.a&&(!!this.g||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.z("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=R.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(S){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.H;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.j.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.J(this.G(c)),h=S.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(S.head||S.body).appendChild(h)}},L:function(){var a=this;this.m+=1,setTimeout(function(){a.m-=1})},$:function(a,b){var c,d;if(this.b){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),S.createEvent?(c=S.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=S.createEventObject(),c.eventType=a);for(d in b)A(b,d)&&(c[d]=b[d]);if(S.createEvent)S.dispatchEvent(c);else try{S.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},_:function(a){var b=this;return function(c){if(b.aa=null,b.v!==c){b.v=c;var d;try{d=E(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ba:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.aa;g||a._("input")(c),clearTimeout(g),a.aa=setTimeout(function(){a.aa=null},b)}}},ca:function(a,b){var c=H(this.w.href),d=H(b),e=H(a);this.x=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},C:function(){var a=this;a.da=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.M?a.da.apply(this.O,arguments):a.da.apply(this,arguments)}},Q:function(){this.da&&(Function.prototype.toString=this.da)},D:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.ca(b.x,c+""),a.apply(this,arguments)}};I(history,"pushState",j,d),I(history,"replaceState",j,d)}if(c.console&&"console"in R&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};w(["debug","info","warn","error","log"],function(a,b){O(console,b,k)})}},R:function(){for(var a;this.t.length;){a=this.t.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},S:function(){for(var a in this.q)this.p[a]=this.q[a]},F:function(){var a=this;w(this.r,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},G:function(a){var b=Q.exec(a),c={},d=7;try{for(;d--;)c[P[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.k.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},J:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},A:function(){this.m||this.V.apply(this,arguments)},V:function(a,b){var c=this.X(a,b);this.$("handle",{stackInfo:a,options:b}),this.fa(a.name,a.message,a.url,a.lineno,c,b)},X:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(w(a.stack,function(b,e){var f=c.ga(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.u,0)}),this.j.user&&(a.user=this.j.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),a=this.pa(a),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||v(a[b]))&&delete a[b]}),s(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!v(a)&&(!s(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.ma()?void this.z("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function F(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&l(b))for(c=b.split(/\s+/),f=0;fc?Q(a,b-1):d}function R(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?X:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function S(a,b){function c(a){return m(a)?a.map(function(a){return c(a)}):k(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!m(b)||m(b)&&0===b.length)return a;var d,e=A(b),f="********";try{d=JSON.parse(T(a))}catch(g){return a}return c(d)}var T=a(10),U="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},V=3,W=51200,X=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isDOMError:g,isDOMException:h,isUndefined:i,isFunction:j,isPlainObject:k,isString:l,isArray:m,isEmptyObject:n,supportsErrorEvent:o,supportsDOMError:p,supportsDOMException:q,supportsFetch:r,supportsReferrerPolicy:s,supportsPromiseRejectionEvent:t,wrappedCallback:u,each:v,objectMerge:w,truncate:y,objectFrozen:x,hasKey:z,joinRegExp:A,urlencode:B,uuid4:D,htmlTreeAsString:E,htmlElementAsString:F,isSameException:I,isSameStacktrace:J,parseUrl:C,fill:K,safeJoin:L,serializeException:Q,serializeKeysForMessage:R,sanitize:S}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{10:10}],9:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}function e(){return"undefined"==typeof document||null==document.location?"":document.location.origin}var f=a(8),g={collectWindowErrors:!0,debug:!1},h="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},i=[].slice,j="?",k=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;g.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function e(a,b){var c=null;if(!b||g.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(i.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,h,i){var l=null,m=f.isErrorEvent(i)?i.error:i,n=f.isErrorEvent(a)?a.message:a;if(v)g.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&f.isError(m))l=g.computeStackTrace(m),e(l,!0);else{var p,r={url:b,line:c,column:h},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(k);p&&(s=p[1],n=p[2])}r.func=j,l={name:s,message:n,url:d(),stack:[r]},e(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=h.onerror,h.onerror=l,r=!0)}function n(){r&&(h.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,e.apply(null,[a,!1].concat(b))}function p(a,b){var c=i.call(arguments,1);if(v){if(u===a)return;o()}var d=g.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),g.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,f,g=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,h=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,i=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,k=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,l=/\((\S*)(?::(\d+))(?::(\d+))\)/,m=a.stack.split("\n"),n=[],o=(/^(.*) is undefined$/.exec(a.message),0),p=m.length;o eval")>-1;r&&(b=k.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==o||c[5]||"undefined"==typeof a.columnNumber||(n[0].column=a.columnNumber+1),f={url:c[3],func:c[1]||j,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}if(!f.func&&f.line&&(f.func=j),f.url&&"blob:"===f.url.substr(0,5)){var s=new XMLHttpRequest;if(s.open("GET",f.url,!1),s.send(null),200===s.status){var t=s.responseText||"";t=t.slice(-300);var u=t.match(/\/\/# sourceMappingURL=(.*)$/);if(u){var v=u[1];"~"===v.charAt(0)&&(v=e()+v.slice(1)),f.url=v.slice(0,-4)}}}n.push(f)}return n.length?{name:a.name,message:a.message,url:d(),stack:n}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=j),a.stack.length>0&&a.stack[0].url===e.url){ -if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,e){for(var h,i,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==f&&o!==g.report){if(i={url:null,func:j,line:null,column:null},o.name?i.func=o.name:(h=k.exec(o.toString()))&&(i.func=h[1]),"undefined"==typeof i.func)try{i.func=h.input.substring(0,h.input.indexOf("{"))}catch(p){}m[""+o]?n=!0:m[""+o]=!0,l.push(i)}e&&l.splice(0,e);var q={name:a.name,message:a.message,url:d(),stack:l};return b(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),q}function f(b,e){var f=null;e=null==e?0:+e;try{if(f=a(b))return f}catch(h){if(g.debug)throw h}try{if(f=c(b,e+1))return f}catch(h){if(g.debug)throw h}return{name:b.name,message:b.message,url:d()}}return f.augmentStackTraceWithInitialElement=b,f.computeStackTraceFromStackProp=a,f}(),b.exports=g}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{8:8}],10:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}],11:[function(a,b,c){function d(a,b){var c=(65535&a)+(65535&b),d=(a>>16)+(b>>16)+(c>>16);return d<<16|65535&c}function e(a,b){return a<>>32-b}function f(a,b,c,f,g,h){return d(e(d(d(b,a),d(f,h)),g),c)}function g(a,b,c,d,e,g,h){return f(b&c|~b&d,a,b,e,g,h)}function h(a,b,c,d,e,g,h){return f(b&d|c&~d,a,b,e,g,h)}function i(a,b,c,d,e,g,h){return f(b^c^d,a,b,e,g,h)}function j(a,b,c,d,e,g,h){return f(c^(b|~d),a,b,e,g,h)}function k(a,b){a[b>>5]|=128<>>9<<4)+14]=b;var c,e,f,k,l,m=1732584193,n=-271733879,o=-1732584194,p=271733878;for(c=0;c>5]>>>b%32&255);return c}function m(a){var b,c=[];for(c[(a.length>>2)-1]=void 0,b=0;b>5]|=(255&a.charCodeAt(b/8))<16&&(e=k(e,8*a.length)),c=0;c<16;c+=1)f[c]=909522486^e[c],g[c]=1549556828^e[c];return d=k(f.concat(m(b)),512+8*b.length),l(k(g.concat(d),640))}function p(a){var b,c,d="0123456789abcdef",e="";for(c=0;c>>4&15)+d.charAt(15&b);return e}function q(a){return unescape(encodeURIComponent(a))}function r(a){return n(q(a))}function s(a){return p(r(a))}function t(a,b){return o(q(a),q(b))}function u(a,b){return p(t(a,b))}function v(a,b,c){return b?c?t(b,a):u(b,a):c?r(a):s(a)}b.exports=v},{}]},{},[7,1,2,3])(7)}); +/*! Raven.js 3.25.1 (b6f3c7a) | github.com/getsentry/raven-js */ +!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.Raven=a()}}(function(){var a;return function b(a,c,d){function e(g,h){if(!c[g]){if(!a[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};a[g][0].call(k.exports,function(b){var c=a[g][1][b];return e(c?c:b)},k,k.exports,b,a,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;g":"anonymous component")+(a._isVue&&a.$options.__file?" at "+a.$options.__file:"")}function e(a,b){if(b=b||window.Vue,b&&b.config){var c=b.config.errorHandler;b.config.errorHandler=function(b,e,f){var g={};"[object Object]"===Object.prototype.toString.call(e)&&(g.componentName=d(e),g.propsData=e.$options.propsData),"undefined"!=typeof f&&(g.lifecycleHook=f),a.captureException(b,{extra:g}),"function"==typeof c&&c.call(this,b,e,f)}}}b.exports=e,a(7).addPlugin(b.exports)},{7:7}],4:[function(a,b,c){function d(a){this.name="RavenConfigError",this.message=a}d.prototype=new Error,d.prototype.constructor=d,b.exports=d},{}],5:[function(a,b,c){var d=a(8),e=function(a,b,c){var e=a[b],f=a;if(b in a){var g="warn"===b?"warning":b;a[b]=function(){var a=[].slice.call(arguments),h=d.safeJoin(a," "),i={level:g,logger:"console",extra:{arguments:a}};"assert"===b?a[0]===!1&&(h="Assertion failed: "+(d.safeJoin(a.slice(1)," ")||"console.assert"),i.extra.arguments=a.slice(1),c&&c(h,i)):c&&c(h,i),e&&Function.prototype.apply.call(e,f,a)}}};b.exports={wrapMethod:e}},{8:8}],6:[function(a,b,c){(function(c){function d(){return+new Date}function e(a,b){return s(b)?function(c){return b(c,a)}:b}function f(){this.a=!("object"!=typeof JSON||!JSON.stringify),this.b=!r(S),this.c=!r(T),this.d=null,this.e=null,this.f=null,this.g=null,this.h=null,this.i=null,this.j={},this.k={release:R.SENTRY_RELEASE&&R.SENTRY_RELEASE.id,logger:"javascript",ignoreErrors:[],ignoreUrls:[],whitelistUrls:[],includePaths:[],headers:null,collectWindowErrors:!0,captureUnhandledRejections:!0,maxMessageLength:0,maxUrlLength:250,stackTraceLimit:50,autoBreadcrumbs:!0,instrument:!0,sampleRate:1,sanitizeKeys:[]},this.l={method:"POST",keepalive:!0,referrerPolicy:K()?"origin":""},this.m=0,this.n=!1,this.o=Error.stackTraceLimit,this.p=R.console||{},this.q={},this.r=[],this.s=d(),this.t=[],this.u=[],this.v=null,this.w=R.location,this.x=this.w&&this.w.href,this.y();for(var a in this.p)this.q[a]=this.p[a]}var g=a(9),h=a(10),i=a(11),j=a(4),k=a(8),l=k.isErrorEvent,m=k.isDOMError,n=k.isDOMException,o=k.isError,p=k.isObject,q=k.isPlainObject,r=k.isUndefined,s=k.isFunction,t=k.isString,u=k.isArray,v=k.isEmptyObject,w=k.each,x=k.objectMerge,y=k.truncate,z=k.objectFrozen,A=k.hasKey,B=k.joinRegExp,C=k.urlencode,D=k.uuid4,E=k.htmlTreeAsString,F=k.isSameException,G=k.isSameStacktrace,H=k.parseUrl,I=k.fill,J=k.supportsFetch,K=k.supportsReferrerPolicy,L=k.serializeKeysForMessage,M=k.serializeException,N=k.sanitize,O=a(5).wrapMethod,P="source protocol user pass host port path".split(" "),Q=/^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/,R="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},S=R.document,T=R.navigator;f.prototype={VERSION:"3.25.1",debug:!1,TraceKit:g,config:function(a,b){var c=this;if(c.g)return this.z("error","Error: Raven has already been configured"),c;if(!a)return c;var d=c.k;b&&w(b,function(a,b){"tags"===a||"extra"===a||"user"===a?c.j[a]=b:d[a]=b}),c.setDSN(a),d.ignoreErrors.push(/^Script error\.?$/),d.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/),d.ignoreErrors=B(d.ignoreErrors),d.ignoreUrls=!!d.ignoreUrls.length&&B(d.ignoreUrls),d.whitelistUrls=!!d.whitelistUrls.length&&B(d.whitelistUrls),d.includePaths=B(d.includePaths),d.maxBreadcrumbs=Math.max(0,Math.min(d.maxBreadcrumbs||100,100));var e={xhr:!0,console:!0,dom:!0,location:!0,sentry:!0},f=d.autoBreadcrumbs;"[object Object]"==={}.toString.call(f)?f=x(e,f):f!==!1&&(f=e),d.autoBreadcrumbs=f;var h={tryCatch:!0},i=d.instrument;return"[object Object]"==={}.toString.call(i)?i=x(h,i):i!==!1&&(i=h),d.instrument=i,g.collectWindowErrors=!!d.collectWindowErrors,c},install:function(){var a=this;return a.isSetup()&&!a.n&&(g.report.subscribe(function(){a.A.apply(a,arguments)}),a.k.captureUnhandledRejections&&a.B(),a.C(),a.k.instrument&&a.k.instrument.tryCatch&&a.D(),a.k.autoBreadcrumbs&&a.E(),a.F(),a.n=!0),Error.stackTraceLimit=a.k.stackTraceLimit,this},setDSN:function(a){var b=this,c=b.G(a),d=c.path.lastIndexOf("/"),e=c.path.substr(1,d);b.H=a,b.h=c.user,b.I=c.pass&&c.pass.substr(1),b.i=c.path.substr(d+1),b.g=b.J(c),b.K=b.g+"/"+e+"api/"+b.i+"/store/",this.y()},context:function(a,b,c){return s(a)&&(c=b||[],b=a,a=void 0),this.wrap(a,b).apply(this,c)},wrap:function(a,b,c){function d(){var d=[],f=arguments.length,g=!a||a&&a.deep!==!1;for(c&&s(c)&&c.apply(this,arguments);f--;)d[f]=g?e.wrap(a,arguments[f]):arguments[f];try{return b.apply(this,d)}catch(h){throw e.L(),e.captureException(h,a),h}}var e=this;if(r(b)&&!s(a))return a;if(s(a)&&(b=a,a=void 0),!s(b))return b;try{if(b.M)return b;if(b.N)return b.N}catch(f){return b}for(var g in b)A(b,g)&&(d[g]=b[g]);return d.prototype=b.prototype,b.N=d,d.M=!0,d.O=b,d},uninstall:function(){return g.report.uninstall(),this.P(),this.Q(),this.R(),this.S(),Error.stackTraceLimit=this.o,this.n=!1,this},T:function(a){this.z("debug","Raven caught unhandled promise rejection:",a),this.captureException(a.reason,{extra:{unhandledPromiseRejection:!0}})},B:function(){return this.T=this.T.bind(this),R.addEventListener&&R.addEventListener("unhandledrejection",this.T),this},P:function(){return R.removeEventListener&&R.removeEventListener("unhandledrejection",this.T),this},captureException:function(a,b){if(b=x({trimHeadFrames:0},b?b:{}),l(a)&&a.error)a=a.error;else{if(m(a)||n(a)){var c=a.name||(m(a)?"DOMError":"DOMException"),d=a.message?c+": "+a.message:c;return this.captureMessage(d,x(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}))}if(o(a))a=a;else{if(!q(a))return this.captureMessage(a,x(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}));b=this.U(b,a),a=new Error(b.message)}}this.d=a;try{var e=g.computeStackTrace(a);this.V(e,b)}catch(f){if(a!==f)throw f}return this},U:function(a,b){var c=Object.keys(b).sort(),d=x(a,{message:"Non-Error exception captured with keys: "+L(c),fingerprint:[i(c)],extra:a.extra||{}});return d.extra.W=M(b),d},captureMessage:function(a,b){if(!this.k.ignoreErrors.test||!this.k.ignoreErrors.test(a)){b=b||{},a+="";var c,d=x({message:a},b);try{throw new Error(a)}catch(e){c=e}c.name=null;var f=g.computeStackTrace(c),h=u(f.stack)&&f.stack[1];h&&"Raven.captureException"===h.func&&(h=f.stack[2]);var i=h&&h.url||"";if((!this.k.ignoreUrls.test||!this.k.ignoreUrls.test(i))&&(!this.k.whitelistUrls.test||this.k.whitelistUrls.test(i))){if(this.k.stacktrace||b&&b.stacktrace){d.fingerprint=null==d.fingerprint?a:d.fingerprint,b=x({trimHeadFrames:0},b),b.trimHeadFrames+=1;var j=this.X(f,b);d.stacktrace={frames:j.reverse()}}return d.fingerprint&&(d.fingerprint=u(d.fingerprint)?d.fingerprint:[d.fingerprint]),this.Y(d),this}}},captureBreadcrumb:function(a){var b=x({timestamp:d()/1e3},a);if(s(this.k.breadcrumbCallback)){var c=this.k.breadcrumbCallback(b);if(p(c)&&!v(c))b=c;else if(c===!1)return this}return this.u.push(b),this.u.length>this.k.maxBreadcrumbs&&this.u.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.r.push([a,b]),this.n&&this.F(),this},setUserContext:function(a){return this.j.user=a,this},setExtraContext:function(a){return this.Z("extra",a),this},setTagsContext:function(a){return this.Z("tags",a),this},clearContext:function(){return this.j={},this},getContext:function(){return JSON.parse(h(this.j))},setEnvironment:function(a){return this.k.environment=a,this},setRelease:function(a){return this.k.release=a,this},setDataCallback:function(a){var b=this.k.dataCallback;return this.k.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.k.breadcrumbCallback;return this.k.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.k.shouldSendCallback;return this.k.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.k.transport=a,this},lastException:function(){return this.d},lastEventId:function(){return this.f},isSetup:function(){return!!this.a&&(!!this.g||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.z("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=R.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(S){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.H;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.j.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.J(this.G(c)),h=S.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(S.head||S.body).appendChild(h)}},L:function(){var a=this;this.m+=1,setTimeout(function(){a.m-=1})},$:function(a,b){var c,d;if(this.b){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),S.createEvent?(c=S.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=S.createEventObject(),c.eventType=a);for(d in b)A(b,d)&&(c[d]=b[d]);if(S.createEvent)S.dispatchEvent(c);else try{S.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},_:function(a){var b=this;return function(c){if(b.aa=null,b.v!==c){b.v=c;var d;try{d=E(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ba:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.aa;g||a._("input")(c),clearTimeout(g),a.aa=setTimeout(function(){a.aa=null},b)}}},ca:function(a,b){var c=H(this.w.href),d=H(b),e=H(a);this.x=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},C:function(){var a=this;a.da=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.M?a.da.apply(this.O,arguments):a.da.apply(this,arguments)}},Q:function(){this.da&&(Function.prototype.toString=this.da)},D:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.ca(b.x,c+""),a.apply(this,arguments)}};I(R.history,"pushState",j,d),I(R.history,"replaceState",j,d)}if(c.console&&"console"in R&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};w(["debug","info","warn","error","log"],function(a,b){O(console,b,k)})}},R:function(){for(var a;this.t.length;){a=this.t.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},S:function(){for(var a in this.q)this.p[a]=this.q[a]},F:function(){var a=this;w(this.r,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},G:function(a){var b=Q.exec(a),c={},d=7;try{for(;d--;)c[P[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.k.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},J:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},A:function(){this.m||this.V.apply(this,arguments)},V:function(a,b){var c=this.X(a,b);this.$("handle",{stackInfo:a,options:b}),this.fa(a.name,a.message,a.url,a.lineno,c,b)},X:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(w(a.stack,function(b,e){var f=c.ga(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.u,0)}),this.j.user&&(a.user=this.j.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),a=this.pa(a),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||v(a[b]))&&delete a[b]}),s(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!v(a)&&(!s(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.ma()?void this.z("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function F(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&l(b))for(c=b.split(/\s+/),f=0;fc?Q(a,b-1):d}function R(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?X:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function S(a,b){function c(a){return m(a)?a.map(function(a){return c(a)}):k(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!m(b)||m(b)&&0===b.length)return a;var d,e=A(b),f="********";try{d=JSON.parse(T(a))}catch(g){return a}return c(d)}var T=a(10),U="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},V=3,W=51200,X=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isDOMError:g,isDOMException:h,isUndefined:i,isFunction:j,isPlainObject:k,isString:l,isArray:m,isEmptyObject:n,supportsErrorEvent:o,supportsDOMError:p,supportsDOMException:q,supportsFetch:r,supportsReferrerPolicy:s,supportsPromiseRejectionEvent:t,wrappedCallback:u,each:v,objectMerge:w,truncate:y,objectFrozen:x,hasKey:z,joinRegExp:A,urlencode:B,uuid4:D,htmlTreeAsString:E,htmlElementAsString:F,isSameException:I,isSameStacktrace:J,parseUrl:C,fill:K,safeJoin:L,serializeException:Q,serializeKeysForMessage:R,sanitize:S}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{10:10}],9:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}function e(){return"undefined"==typeof document||null==document.location?"":(document.location.origin||(document.location.origin=document.location.protocol+"//"+document.location.hostname+(document.location.port?":"+document.location.port:"")),document.location.origin)}var f=a(8),g={collectWindowErrors:!0,debug:!1},h="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},i=[].slice,j="?",k=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;g.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function e(a,b){var c=null;if(!b||g.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(i.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,h,i){var l=null,m=f.isErrorEvent(i)?i.error:i,n=f.isErrorEvent(a)?a.message:a;if(v)g.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&f.isError(m))l=g.computeStackTrace(m),e(l,!0);else{var p,r={url:b,line:c,column:h},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(k);p&&(s=p[1],n=p[2])}r.func=j,l={name:s,message:n,url:d(),stack:[r]},e(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=h.onerror,h.onerror=l,r=!0)}function n(){r&&(h.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,e.apply(null,[a,!1].concat(b))}function p(a,b){var c=i.call(arguments,1);if(v){if(u===a)return;o()}var d=g.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),g.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,f,g=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,h=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,i=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,k=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,l=/\((\S*)(?::(\d+))(?::(\d+))\)/,m=a.stack.split("\n"),n=[],o=(/^(.*) is undefined$/.exec(a.message),0),p=m.length;o eval")>-1;r&&(b=k.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==o||c[5]||"undefined"==typeof a.columnNumber||(n[0].column=a.columnNumber+1),f={url:c[3],func:c[1]||j,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}if(!f.func&&f.line&&(f.func=j),f.url&&"blob:"===f.url.substr(0,5)){var s=new XMLHttpRequest;if(s.open("GET",f.url,!1),s.send(null),200===s.status){var t=s.responseText||"";t=t.slice(-300);var u=t.match(/\/\/# sourceMappingURL=(.*)$/);if(u){var v=u[1];"~"===v.charAt(0)&&(v=e()+v.slice(1)),f.url=v.slice(0,-4)}}}n.push(f)}return n.length?{name:a.name,message:a.message, +url:d(),stack:n}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=j),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,e){for(var h,i,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==f&&o!==g.report){if(i={url:null,func:j,line:null,column:null},o.name?i.func=o.name:(h=k.exec(o.toString()))&&(i.func=h[1]),"undefined"==typeof i.func)try{i.func=h.input.substring(0,h.input.indexOf("{"))}catch(p){}m[""+o]?n=!0:m[""+o]=!0,l.push(i)}e&&l.splice(0,e);var q={name:a.name,message:a.message,url:d(),stack:l};return b(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),q}function f(b,e){var f=null;e=null==e?0:+e;try{if(f=a(b))return f}catch(h){if(g.debug)throw h}try{if(f=c(b,e+1))return f}catch(h){if(g.debug)throw h}return{name:b.name,message:b.message,url:d()}}return f.augmentStackTraceWithInitialElement=b,f.computeStackTraceFromStackProp=a,f}(),b.exports=g}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{8:8}],10:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}],11:[function(a,b,c){function d(a,b){var c=(65535&a)+(65535&b),d=(a>>16)+(b>>16)+(c>>16);return d<<16|65535&c}function e(a,b){return a<>>32-b}function f(a,b,c,f,g,h){return d(e(d(d(b,a),d(f,h)),g),c)}function g(a,b,c,d,e,g,h){return f(b&c|~b&d,a,b,e,g,h)}function h(a,b,c,d,e,g,h){return f(b&d|c&~d,a,b,e,g,h)}function i(a,b,c,d,e,g,h){return f(b^c^d,a,b,e,g,h)}function j(a,b,c,d,e,g,h){return f(c^(b|~d),a,b,e,g,h)}function k(a,b){a[b>>5]|=128<>>9<<4)+14]=b;var c,e,f,k,l,m=1732584193,n=-271733879,o=-1732584194,p=271733878;for(c=0;c>5]>>>b%32&255);return c}function m(a){var b,c=[];for(c[(a.length>>2)-1]=void 0,b=0;b>5]|=(255&a.charCodeAt(b/8))<16&&(e=k(e,8*a.length)),c=0;c<16;c+=1)f[c]=909522486^e[c],g[c]=1549556828^e[c];return d=k(f.concat(m(b)),512+8*b.length),l(k(g.concat(d),640))}function p(a){var b,c,d="0123456789abcdef",e="";for(c=0;c>>4&15)+d.charAt(15&b);return e}function q(a){return unescape(encodeURIComponent(a))}function r(a){return n(q(a))}function s(a){return p(r(a))}function t(a,b){return o(q(a),q(b))}function u(a,b){return p(t(a,b))}function v(a,b,c){return b?c?t(b,a):u(b,a):c?r(a):s(a)}b.exports=v},{}]},{},[7,1,2,3])(7)}); //# sourceMappingURL=raven.min.js.map \ No newline at end of file diff --git a/dist/ember,require,vue/raven.min.js.map b/dist/ember,require,vue/raven.min.js.map index 7a4c0f02e7c3..6efd12d10baa 100644 --- a/dist/ember,require,vue/raven.min.js.map +++ b/dist/ember,require,vue/raven.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","emberPlugin","Ember","_oldOnError","onerror","error","captureException","RSVP","on","reason","extra","context","captureMessage","addPlugin","7","2","requirePlugin","wrap","deep","3","formatComponentName","vm","$root","name","_isVue","$options","_componentTag","__file","vuePlugin","Vue","config","errorHandler","info","metaData","Object","prototype","toString","componentName","propsData","lifecycleHook","4","RavenConfigError","message","constructor","5","utils","wrapMethod","console","level","callback","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","msg","safeJoin","data","logger","Function","apply","8","6","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","sanitizeKeys","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isErrorEvent","isDOMError","isDOMException","isError","isObject","isPlainObject","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","sanitize","wrapConsoleMethod","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","dsn","options","_logDebug","globalOptions","key","value","setDSN","push","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","substr","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","func","undefined","_before","wrapped","_ignoreNextOnError","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","T","event","unhandledPromiseRejection","B","_promiseRejectionHandler","bind","addEventListener","P","removeEventListener","ex","trimHeadFrames","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","U","currentOptions","exKeys","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","setDataCallback","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","L","setTimeout","$","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","_","evtName","_keypressTimeout","target","category","ba","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","ca","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","C","_originalFunctionToString","Q","D","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","type","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","E","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","R","builtin","S","F","installer","concat","G","str","m","exec","allowSecretKey","J","port","A","V","stackInfo","_triggerEvent","_processException","lineno","X","frame","_normalizeFrame","in_app","ga","stackInfoUrl","normalized","filename","line","colno","column","function","fa","prefixedMessage","exception","values","culprit","ha","request","Referer","breadcrumbs","_trimBreadcrumbs","ia","urlProp","urlProps","ja","httpData","userAgent","User-Agent","referrer","y","_backoffDuration","_backoffStart","ma","na","current","last","oa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Y","baseData","project","platform","_getHttpData","serverName","server_name","_sanitizeData","forEach","random","_sendProcessedPayload","pa","ra","qa","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","sa","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","open","setRequestHeader","send","ta","hash","evaluated","z","Z","setUser","setReleaseContext","10","11","9","RavenConstructor","_Raven","noConflict","Client","what","supportsErrorEvent","ErrorEvent","supportsDOMError","DOMError","supportsDOMException","DOMException","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","wrappedCallback","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","sanitizeMask","safeInput","o_O","getLocationHref","getLocationOrigin","origin","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","responseText","sourceMaps","sourceMapAddress","charAt","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","string","raw"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file +{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","emberPlugin","Ember","_oldOnError","onerror","error","captureException","RSVP","on","reason","extra","context","captureMessage","addPlugin","7","2","requirePlugin","wrap","deep","3","formatComponentName","vm","$root","name","_isVue","$options","_componentTag","__file","vuePlugin","Vue","config","errorHandler","info","metaData","Object","prototype","toString","componentName","propsData","lifecycleHook","4","RavenConfigError","message","constructor","5","utils","wrapMethod","console","level","callback","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","msg","safeJoin","data","logger","Function","apply","8","6","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","sanitizeKeys","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isErrorEvent","isDOMError","isDOMException","isError","isObject","isPlainObject","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","sanitize","wrapConsoleMethod","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","dsn","options","_logDebug","globalOptions","key","value","setDSN","push","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","substr","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","func","undefined","_before","wrapped","_ignoreNextOnError","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","T","event","unhandledPromiseRejection","B","_promiseRejectionHandler","bind","addEventListener","P","removeEventListener","ex","trimHeadFrames","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","U","currentOptions","exKeys","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","setDataCallback","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","L","setTimeout","$","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","_","evtName","_keypressTimeout","target","category","ba","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","ca","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","C","_originalFunctionToString","Q","D","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","type","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","E","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","R","builtin","S","F","installer","concat","G","str","m","exec","allowSecretKey","J","port","A","V","stackInfo","_triggerEvent","_processException","lineno","X","frame","_normalizeFrame","in_app","ga","stackInfoUrl","normalized","filename","line","colno","column","function","fa","prefixedMessage","exception","values","culprit","ha","request","Referer","breadcrumbs","_trimBreadcrumbs","ia","urlProp","urlProps","ja","httpData","userAgent","User-Agent","referrer","y","_backoffDuration","_backoffStart","ma","na","current","last","oa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Y","baseData","project","platform","_getHttpData","serverName","server_name","_sanitizeData","forEach","random","_sendProcessedPayload","pa","ra","qa","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","sa","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","open","setRequestHeader","send","ta","hash","evaluated","z","Z","setUser","setReleaseContext","10","11","9","RavenConstructor","_Raven","noConflict","Client","what","supportsErrorEvent","ErrorEvent","supportsDOMError","DOMError","supportsDOMException","DOMException","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","wrappedCallback","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","sanitizeMask","safeInput","o_O","getLocationHref","getLocationOrigin","origin","hostname","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","responseText","sourceMaps","sourceMapAddress","charAt","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","string","raw"],"mappings":";CAYA,SAAUA,GAAG,GAAoB,gBAAVC,UAAoC,mBAATC,QAAsBA,OAAOD,QAAQD,QAAS,IAAmB,kBAATG,SAAqBA,OAAOC,IAAKD,UAAUH,OAAO,CAAC,GAAIK,EAAkCA,GAAb,mBAATC,QAAwBA,OAA+B,mBAATC,QAAwBA,OAA6B,mBAAPC,MAAsBA,KAAYC,KAAKJ,EAAEK,MAAQV,MAAO,WAAW,GAAIG,EAAsB,OAAO,SAAUQ,GAAEC,EAAEC,EAAEC,GAAG,QAASC,GAAEC,EAAEC,GAAG,IAAIJ,EAAEG,GAAG,CAAC,IAAIJ,EAAEI,GAAG,CAAC,GAAIE,GAAkB,kBAATC,UAAqBA,OAAQ,KAAIF,GAAGC,EAAE,MAAOA,GAAEF,GAAE,EAAI,IAAGI,EAAE,MAAOA,GAAEJ,GAAE,EAAI,IAAIhB,GAAE,GAAIqB,OAAM,uBAAuBL,EAAE,IAAK,MAAMhB,GAAEsB,KAAK,mBAAmBtB,EAAE,GAAIuB,GAAEV,EAAEG,IAAIf,WAAYW,GAAEI,GAAG,GAAGQ,KAAKD,EAAEtB,QAAQ,SAASU,GAAG,GAAIE,GAAED,EAAEI,GAAG,GAAGL,EAAG,OAAOI,GAAEF,EAAEA,EAAEF,IAAIY,EAAEA,EAAEtB,QAAQU,EAAEC,EAAEC,EAAEC,GAAG,MAAOD,GAAEG,GAAGf,QAAkD,IAAI,GAA1CmB,GAAkB,kBAATD,UAAqBA,QAAgBH,EAAE,EAAEA,EAAEF,EAAEW,OAAOT,IAAID,EAAED,EAAEE,GAAI,OAAOD,KAAKW,GAAG,SAASC,EAAQzB,EAAOD,GAMp0B,QAAS2B,GAAYlB,EAAOmB,GAI1B,GAHAA,EAAQA,GAASvB,OAAOuB,MAGxB,CAEA,GAAIC,GAAcD,EAAME,OACxBF,GAAME,QAAU,SAAsBC,GACpCtB,EAAMuB,iBAAiBD,GACI,kBAAhBF,IACTA,EAAYN,KAAKf,KAAMuB,IAG3BH,EAAMK,KAAKC,GAAG,QAAS,SAASC,GAC1BA,YAAkBf,OACpBX,EAAMuB,iBAAiBG,GACrBC,OAAQC,QAAS,sCAGnB5B,EAAM6B,eAAe,oCAAqCF,OAAQD,OAAQA,QAKhFlC,EAAOD,QAAU2B,EAEjBD,EAAQ,GAAGa,UAAUtC,EAAOD,WACzBwC,EAAI,IAAIC,GAAG,SAASf,EAAQzB,EAAOD,GAOtC,QAAS0C,GAAcjC,GACC,kBAAXP,IAAyBA,EAAOC,MACzCE,OAAOH,OAASO,EAAMkC,MAAMC,MAAM,GAAQ1C,GAC1CG,OAAOa,QAAUT,EAAMkC,MAAMC,MAAM,GAAQlB,IAI/CzB,EAAOD,QAAU0C,EAEjBhB,EAAQ,GAAGa,UAAUtC,EAAOD,WACzBwC,EAAI,IAAIK,GAAG,SAASnB,EAAQzB,EAAOD,GAMtC,QAAS8C,GAAoBC,GAC3B,GAAIA,EAAGC,QAAUD,EACf,MAAO,eAET,IAAIE,GAAOF,EAAGG,OAASH,EAAGI,SAASF,MAAQF,EAAGI,SAASC,cAAgBL,EAAGE,IAC1E,QACGA,EAAO,cAAgBA,EAAO,IAAM,wBACpCF,EAAGG,QAAUH,EAAGI,SAASE,OAAS,OAASN,EAAGI,SAASE,OAAS,IAIrE,QAASC,GAAU7C,EAAO8C,GAIxB,GAHAA,EAAMA,GAAOlD,OAAOkD,IAGfA,GAAQA,EAAIC,OAAjB,CAEA,GAAI3B,GAAc0B,EAAIC,OAAOC,YAC7BF,GAAIC,OAAOC,aAAe,SAAyB1B,EAAOgB,EAAIW,GAC5D,GAAIC,KAGuC,qBAAvCC,OAAOC,UAAUC,SAASvC,KAAKwB,KACjCY,EAASI,cAAgBjB,EAAoBC,GAC7CY,EAASK,UAAYjB,EAAGI,SAASa,WAGf,mBAATN,KACTC,EAASM,cAAgBP,GAG3BjD,EAAMuB,iBAAiBD,GACrBK,MAAOuB,IAGkB,kBAAhB9B,IACTA,EAAYN,KAAKf,KAAMuB,EAAOgB,EAAIW,KAKxCzD,EAAOD,QAAUsD,EAEjB5B,EAAQ,GAAGa,UAAUtC,EAAOD,WACzBwC,EAAI,IAAI0B,GAAG,SAASxC,EAAQzB,EAAOD,GACtC,QAASmE,GAAiBC,GACxB5D,KAAKyC,KAAO,mBACZzC,KAAK4D,QAAUA,EAEjBD,EAAiBN,UAAY,GAAIzC,OACjC+C,EAAiBN,UAAUQ,YAAcF,EAEzClE,EAAOD,QAAUmE,OAEXG,GAAG,SAAS5C,EAAQzB,EAAOD,GACjC,GAAIuE,GAAQ7C,EAAQ,GAEhB8C,EAAa,SAASC,EAASC,EAAOC,GACxC,GAAIC,GAAuBH,EAAQC,GAC/BG,EAAkBJ,CAEtB,IAAMC,IAASD,GAAf,CAIA,GAAIK,GAAwB,SAAVJ,EAAmB,UAAYA,CAEjDD,GAAQC,GAAS,WACf,GAAIK,MAAUC,MAAMzD,KAAK0D,WAErBC,EAAMX,EAAMY,SAASJ,EAAM,KAC3BK,GAAQV,MAAOI,EAAaO,OAAQ,UAAWjD,OAAQ6C,UAAWF,GAExD,YAAVL,EACEK,EAAK,MAAO,IAEdG,EACE,sBAAwBX,EAAMY,SAASJ,EAAKC,MAAM,GAAI,MAAQ,kBAChEI,EAAKhD,MAAM6C,UAAYF,EAAKC,MAAM,GAClCL,GAAYA,EAASO,EAAKE,IAG5BT,GAAYA,EAASO,EAAKE,GAIxBR,GAGFU,SAASzB,UAAU0B,MAAMhE,KAAKqD,EAAsBC,EAAiBE,KAK3E9E,GAAOD,SACLwE,WAAYA,KAGXgB,EAAI,IAAIC,GAAG,SAAS/D,EAAQzB,EAAOD,IACtC,SAAWM,GA4CX,QAASoF,KACP,OAAQ,GAAIC,MAWd,QAASC,GAAqBC,EAAUlB,GACtC,MAAOmB,GAAWnB,GACd,SAASS,GACP,MAAOT,GAASS,EAAMS,IAExBlB,EAMN,QAASlE,KACPD,KAAKuF,IAA8B,gBAATC,QAAqBA,KAAKC,WAEpDzF,KAAK0F,GAAgBC,EAAYC,GACjC5F,KAAK6F,GAAiBF,EAAYG,GAClC9F,KAAK+F,EAAyB,KAC9B/F,KAAKgG,EAAY,KACjBhG,KAAKiG,EAAe,KACpBjG,KAAKkG,EAAgB,KACrBlG,KAAKmG,EAAa,KAClBnG,KAAKoG,EAAiB,KACtBpG,KAAKqG,KACLrG,KAAKsG,GAEHC,QAASC,EAAQC,gBAAkBD,EAAQC,eAAeC,GAC1D7B,OAAQ,aACR8B,gBACAC,cACAC,iBACAC,gBACAC,QAAS,KACTC,qBAAqB,EACrBC,4BAA4B,EAC5BC,iBAAkB,EAElBC,aAAc,IACdC,gBAAiB,GACjBC,iBAAiB,EACjBC,YAAY,EACZC,WAAY,EACZC,iBAEFxH,KAAKyH,GACHC,OAAQ,OACRC,WAAW,EAKXC,eAAgBC,IAA2B,SAAW,IAExD7H,KAAK8H,EAAiB,EACtB9H,KAAK+H,GAAoB,EACzB/H,KAAKgI,EAAgCpH,MAAMwG,gBAG3CpH,KAAKiI,EAAmBzB,EAAQvC,YAChCjE,KAAKkI,KACLlI,KAAKmI,KACLnI,KAAKoI,EAAalD,IAClBlF,KAAKqI,KACLrI,KAAKsI,KACLtI,KAAKuI,EAAqB,KAE1BvI,KAAKwI,EAAYhC,EAAQiC,SACzBzI,KAAK0I,EAAY1I,KAAKwI,GAAaxI,KAAKwI,EAAUG,KAClD3I,KAAK4I,GAGL,KAAK,GAAIlB,KAAU1H,MAAKiI,EACtBjI,KAAKkI,EAAwBR,GAAU1H,KAAKiI,EAAiBP,GA5HjE,GAAImB,GAAW3H,EAAQ,GACnBuE,EAAYvE,EAAQ,IACpB4H,EAAM5H,EAAQ,IACdyC,EAAmBzC,EAAQ,GAE3B6C,EAAQ7C,EAAQ,GAChB6H,EAAehF,EAAMgF,aACrBC,EAAajF,EAAMiF,WACnBC,EAAiBlF,EAAMkF,eACvBC,EAAUnF,EAAMmF,QAChBC,EAAWpF,EAAMoF,SACjBC,EAAgBrF,EAAMqF,cACtBzD,EAAc5B,EAAM4B,YACpBL,EAAavB,EAAMuB,WACnB+D,EAAWtF,EAAMsF,SACjBC,EAAUvF,EAAMuF,QAChBC,EAAgBxF,EAAMwF,cACtBC,EAAOzF,EAAMyF,KACbC,EAAc1F,EAAM0F,YACpBC,EAAW3F,EAAM2F,SACjBC,EAAe5F,EAAM4F,aACrBC,EAAS7F,EAAM6F,OACfC,EAAa9F,EAAM8F,WACnBC,EAAY/F,EAAM+F,UAClBC,EAAQhG,EAAMgG,MACdC,EAAmBjG,EAAMiG,iBACzBC,EAAkBlG,EAAMkG,gBACxBC,EAAmBnG,EAAMmG,iBACzBC,EAAWpG,EAAMoG,SACjBC,EAAOrG,EAAMqG,KACbC,EAAgBtG,EAAMsG,cACtBxC,EAAyB9D,EAAM8D,uBAC/ByC,EAA0BvG,EAAMuG,wBAChCC,EAAqBxG,EAAMwG,mBAC3BC,EAAWzG,EAAMyG,SAEjBC,EAAoBvJ,EAAQ,GAAG8C,WAE/B0G,EAAU,2CAA2CC,MAAM,KAC7DC,EAAa,gEAOXpE,EACgB,mBAAX3G,QACHA,OACkB,mBAAXC,GAAyBA,EAAyB,mBAATC,MAAuBA,QACzE6F,EAAYY,EAAQqE,SACpB/E,EAAaU,EAAQsE,SAmFzB7K,GAAMoD,WAKJ0H,QAAS,SAETC,OAAO,EAEPnC,SAAUA,EASV7F,OAAQ,SAASiI,EAAKC,GACpB,GAAInL,GAAOC,IAEX,IAAID,EAAKmG,EAEP,MADAlG,MAAKmL,EAAU,QAAS,4CACjBpL,CAET,KAAKkL,EAAK,MAAOlL,EAEjB,IAAIqL,GAAgBrL,EAAKuG,CAGrB4E,IACF1B,EAAK0B,EAAS,SAASG,EAAKC,GAEd,SAARD,GAA0B,UAARA,GAA2B,SAARA,EACvCtL,EAAKsG,EAAegF,GAAOC,EAE3BF,EAAcC,GAAOC,IAK3BvL,EAAKwL,OAAON,GAIZG,EAAczE,aAAa6E,KAAK,qBAChCJ,EAAczE,aAAa6E,KAAK,iDAGhCJ,EAAczE,aAAekD,EAAWuB,EAAczE,cACtDyE,EAAcxE,aAAawE,EAAcxE,WAAW5F,QAChD6I,EAAWuB,EAAcxE,YAE7BwE,EAAcvE,gBAAgBuE,EAAcvE,cAAc7F,QACtD6I,EAAWuB,EAAcvE,eAE7BuE,EAActE,aAAe+C,EAAWuB,EAActE,cACtDsE,EAAcK,eAAiBC,KAAKC,IAClC,EACAD,KAAKE,IAAIR,EAAcK,gBAAkB,IAAK,KAGhD,IAAII,IACFC,KAAK,EACL7H,SAAS,EACT8H,KAAK,EACLtD,UAAU,EACVuD,QAAQ,GAGN3E,EAAkB+D,EAAc/D,eACM,wBAAnC/D,SAASvC,KAAKsG,GACnBA,EAAkBoC,EAAYoC,EAAwBxE,GAC7CA,KAAoB,IAC7BA,EAAkBwE,GAEpBT,EAAc/D,gBAAkBA,CAEhC,IAAI4E,IACFC,UAAU,GAGR5E,EAAa8D,EAAc9D,UAW/B,OAVqC,uBAA9BhE,SAASvC,KAAKuG,GACnBA,EAAamC,EAAYwC,EAAoB3E,GACpCA,KAAe,IACxBA,EAAa2E,GAEfb,EAAc9D,WAAaA,EAE3BuB,EAAS7B,sBAAwBoE,EAAcpE,oBAGxCjH,GAWToM,QAAS,WACP,GAAIpM,GAAOC,IAyBX,OAxBID,GAAKqM,YAAcrM,EAAKgI,IAC1Bc,EAASwD,OAAOC,UAAU,WACxBvM,EAAKwM,EAAwBxH,MAAMhF,EAAM0E,aAGvC1E,EAAKuG,EAAeW,4BACtBlH,EAAKyM,IAGPzM,EAAK0M,IAED1M,EAAKuG,EAAegB,YAAcvH,EAAKuG,EAAegB,WAAW4E,UACnEnM,EAAK2M,IAGH3M,EAAKuG,EAAee,iBAAiBtH,EAAK4M,IAG9C5M,EAAK6M,IAEL7M,EAAKgI,GAAoB,GAG3BnH,MAAMwG,gBAAkBrH,EAAKuG,EAAec,gBACrCpH,MAQTuL,OAAQ,SAASN,GACf,GAAIlL,GAAOC,KACT6M,EAAM9M,EAAK+M,EAAU7B,GACrB8B,EAAYF,EAAIG,KAAKC,YAAY,KACjCD,EAAOH,EAAIG,KAAKE,OAAO,EAAGH,EAE5BhN,GAAKoN,EAAOlC,EACZlL,EAAKoG,EAAa0G,EAAIO,KACtBrN,EAAKsN,EAAgBR,EAAIS,MAAQT,EAAIS,KAAKJ,OAAO,GACjDnN,EAAKqG,EAAiByG,EAAIG,KAAKE,OAAOH,EAAY,GAElDhN,EAAKmG,EAAgBnG,EAAKwN,EAAiBV,GAE3C9M,EAAKyN,EACHzN,EAAKmG,EAAgB,IAAM8G,EAAO,OAASjN,EAAKqG,EAAiB,UAInEpG,KAAK4I,KAWP/G,QAAS,SAASqJ,EAASuC,EAAMlJ,GAO/B,MANIe,GAAW4F,KACb3G,EAAOkJ,MACPA,EAAOvC,EACPA,EAAUwC,QAGL1N,KAAKmC,KAAK+I,EAASuC,GAAM1I,MAAM/E,KAAMuE,IAW9CpC,KAAM,SAAS+I,EAASuC,EAAME,GAqC5B,QAASC,KACP,GAAIrJ,MACF5D,EAAI8D,UAAUzD,OACdoB,GAAQ8I,GAAYA,GAAWA,EAAQ9I,QAAS,CAQlD,KANIuL,GAAWrI,EAAWqI,IACxBA,EAAQ5I,MAAM/E,KAAMyE,WAKf9D,KAAK4D,EAAK5D,GAAKyB,EAAOrC,EAAKoC,KAAK+I,EAASzG,UAAU9D,IAAM8D,UAAU9D,EAE1E,KAKE,MAAO8M,GAAK1I,MAAM/E,KAAMuE,GACxB,MAAOrE,GAGP,KAFAH,GAAK8N,IACL9N,EAAKyB,iBAAiBtB,EAAGgL,GACnBhL,GA1DV,GAAIH,GAAOC,IAGX,IAAI2F,EAAY8H,KAAUnI,EAAW4F,GACnC,MAAOA,EAWT,IAPI5F,EAAW4F,KACbuC,EAAOvC,EACPA,EAAUwC,SAKPpI,EAAWmI,GACd,MAAOA,EAIT,KACE,GAAIA,EAAKK,EACP,MAAOL,EAIT,IAAIA,EAAKM,EACP,MAAON,GAAKM,EAEd,MAAO7N,GAIP,MAAOuN,GA8BT,IAAK,GAAIO,KAAYP,GACf7D,EAAO6D,EAAMO,KACfJ,EAAQI,GAAYP,EAAKO,GAW7B,OARAJ,GAAQvK,UAAYoK,EAAKpK,UAEzBoK,EAAKM,EAAoBH,EAGzBA,EAAQE,GAAY,EACpBF,EAAQK,EAAWR,EAEZG,GAQTM,UAAW,WAWT,MAVArF,GAASwD,OAAO6B,YAEhBlO,KAAKmO,IACLnO,KAAKoO,IACLpO,KAAKqO,IACLrO,KAAKsO,IAEL1N,MAAMwG,gBAAkBpH,KAAKgI,EAC7BhI,KAAK+H,GAAoB,EAElB/H,MAWTuO,EAA0B,SAASC,GACjCxO,KAAKmL,EAAU,QAAS,4CAA6CqD,GACrExO,KAAKwB,iBAAiBgN,EAAM7M,QAC1BC,OACE6M,2BAA2B,MAUjCC,EAAgC,WAI9B,MAHA1O,MAAK2O,EAA2B3O,KAAK2O,EAAyBC,KAAK5O,MACnEwG,EAAQqI,kBACNrI,EAAQqI,iBAAiB,qBAAsB7O,KAAK2O,GAC/C3O,MAQT8O,EAAgC,WAG9B,MAFAtI,GAAQuI,qBACNvI,EAAQuI,oBAAoB,qBAAsB/O,KAAK2O,GAClD3O,MAUTwB,iBAAkB,SAASwN,EAAI9D,GAG7B,GAFAA,EAAUzB,GAAawF,eAAgB,GAAI/D,EAAUA,MAEjDnC,EAAaiG,IAAOA,EAAGzN,MAEzByN,EAAKA,EAAGzN,UACH,CAAA,GAAIyH,EAAWgG,IAAO/F,EAAe+F,GAAK,CAK/C,GAAIvM,GAAOuM,EAAGvM,OAASuG,EAAWgG,GAAM,WAAa,gBACjDpL,EAAUoL,EAAGpL,QAAUnB,EAAO,KAAOuM,EAAGpL,QAAUnB,CAEtD,OAAOzC,MAAK8B,eACV8B,EACA6F,EAAYyB,GAGVgE,YAAY,EACZD,eAAgB/D,EAAQ+D,eAAiB,KAGxC,GAAI/F,EAAQ8F,GAEjBA,EAAKA,MACA,CAAA,IAAI5F,EAAc4F,GAavB,MAAOhP,MAAK8B,eACVkN,EACAvF,EAAYyB,GACVgE,YAAY,EACZD,eAAgB/D,EAAQ+D,eAAiB,IAb7C/D,GAAUlL,KAAKmP,EAA2CjE,EAAS8D,GACnEA,EAAK,GAAIpO,OAAMsK,EAAQtH,UAkBzB5D,KAAK+F,EAAyBiJ,CAO9B,KACE,GAAII,GAAQvG,EAASwG,kBAAkBL,EACvChP,MAAKsP,EAAiBF,EAAOlE,GAC7B,MAAOqE,GACP,GAAIP,IAAOO,EACT,KAAMA,GAIV,MAAOvP,OAGTwP,EAA4C,SAASC,EAAgBT,GACnE,GAAIU,GAAStM,OAAOuM,KAAKX,GAAIY,OACzB1E,EAAUzB,EAAYgG,GACxB7L,QACE,2CAA6C0G,EAAwBoF,GACvEG,aAAc/G,EAAI4G,IAClB9N,MAAO6N,EAAe7N,WAIxB,OAFAsJ,GAAQtJ,MAAMkO,EAAiBvF,EAAmByE,GAE3C9D,GAUTpJ,eAAgB,SAAS4C,EAAKwG,GAI5B,IACIlL,KAAKsG,EAAeK,aAAaoJ,OACnC/P,KAAKsG,EAAeK,aAAaoJ,KAAKrL,GAFxC,CAOAwG,EAAUA,MACVxG,GAAY,EAEZ,IAOIsK,GAPApK,EAAO6E,GAEP7F,QAASc,GAEXwG,EAQF,KACE,KAAM,IAAItK,OAAM8D,GAChB,MAAO6K,GACPP,EAAKO,EAIPP,EAAGvM,KAAO,IACV,IAAI2M,GAAQvG,EAASwG,kBAAkBL,GAGnCgB,EAAc1G,EAAQ8F,EAAMA,QAAUA,EAAMA,MAAM,EAKlDY,IAAoC,2BAArBA,EAAYvC,OAC7BuC,EAAcZ,EAAMA,MAAM,GAG5B,IAAIa,GAAWD,GAAeA,EAAYE,KAAQ,EAElD,MACIlQ,KAAKsG,EAAeM,WAAWmJ,OACjC/P,KAAKsG,EAAeM,WAAWmJ,KAAKE,OAMlCjQ,KAAKsG,EAAeO,cAAckJ,MACnC/P,KAAKsG,EAAeO,cAAckJ,KAAKE,IAF1C,CAOA,GAAIjQ,KAAKsG,EAAe4I,YAAehE,GAAWA,EAAQgE,WAAa,CAErEtK,EAAKiL,YAAkC,MAApBjL,EAAKiL,YAAsBnL,EAAME,EAAKiL,YAEzD3E,EAAUzB,GAENwF,eAAgB,GAElB/D,GAMFA,EAAQ+D,gBAAkB,CAE1B,IAAIkB,GAASnQ,KAAKoQ,EAAehB,EAAOlE,EACxCtG,GAAKsK,YAEHiB,OAAQA,EAAOE,WAcnB,MATIzL,GAAKiL,cACPjL,EAAKiL,YAAcvG,EAAQ1E,EAAKiL,aAC5BjL,EAAKiL,aACJjL,EAAKiL,cAIZ7P,KAAKsQ,EAAM1L,GAEJ5E,QAGTuQ,kBAAmB,SAASC,GAC1B,GAAIC,GAAQhH,GAERiH,UAAWxL,IAAQ,KAErBsL,EAGF,IAAIlL,EAAWtF,KAAKsG,EAAeqK,oBAAqB,CACtD,GAAIC,GAAS5Q,KAAKsG,EAAeqK,mBAAmBF,EAEpD,IAAItH,EAASyH,KAAYrH,EAAcqH,GACrCH,EAAQG,MACH,IAAIA,KAAW,EACpB,MAAO5Q,MAQX,MAJAA,MAAKsI,EAAakD,KAAKiF,GACnBzQ,KAAKsI,EAAatH,OAAShB,KAAKsG,EAAemF,gBACjDzL,KAAKsI,EAAauI,QAEb7Q,MAGT+B,UAAW,SAAS+O,GAClB,GAAIC,MAAgBvM,MAAMzD,KAAK0D,UAAW,EAO1C,OALAzE,MAAKmI,EAASqD,MAAMsF,EAAQC,IACxB/Q,KAAK+H,GACP/H,KAAK4M,IAGA5M,MASTgR,eAAgB,SAAS5D,GAIvB,MAFApN,MAAKqG,EAAe+G,KAAOA,EAEpBpN,MASTiR,gBAAiB,SAASrP,GAGxB,MAFA5B,MAAKkR,EAAc,QAAStP,GAErB5B,MASTmR,eAAgB,SAASC,GAGvB,MAFApR,MAAKkR,EAAc,OAAQE,GAEpBpR,MAQTqR,aAAc,WAGZ,MAFArR,MAAKqG,KAEErG,MAQTsR,WAAY,WAEV,MAAO9L,MAAK+L,MAAM9L,EAAUzF,KAAKqG,KASnCmL,eAAgB,SAASC,GAGvB,MAFAzR,MAAKsG,EAAemL,YAAcA,EAE3BzR,MAST0R,WAAY,SAASnL,GAGnB,MAFAvG,MAAKsG,EAAeC,QAAUA,EAEvBvG,MAUT2R,gBAAiB,SAASxN,GACxB,GAAIkB,GAAWrF,KAAKsG,EAAesL,YAEnC,OADA5R,MAAKsG,EAAesL,aAAexM,EAAqBC,EAAUlB,GAC3DnE,MAUT6R,sBAAuB,SAAS1N,GAC9B,GAAIkB,GAAWrF,KAAKsG,EAAeqK,kBAEnC,OADA3Q,MAAKsG,EAAeqK,mBAAqBvL,EAAqBC,EAAUlB,GACjEnE,MAUT8R,sBAAuB,SAAS3N,GAC9B,GAAIkB,GAAWrF,KAAKsG,EAAeyL,kBAEnC,OADA/R,MAAKsG,EAAeyL,mBAAqB3M,EAAqBC,EAAUlB,GACjEnE,MAYTgS,aAAc,SAASC,GAGrB,MAFAjS,MAAKsG,EAAe2L,UAAYA,EAEzBjS,MAQTkS,cAAe,WACb,MAAOlS,MAAK+F,GAQdoM,YAAa,WACX,MAAOnS,MAAKiG,GAQdmG,QAAS,WACP,QAAKpM,KAAKuF,MACLvF,KAAKkG,IACHlG,KAAKoS,0BACRpS,KAAKoS,yBAA0B,EAC/BpS,KAAKmL,EAAU,QAAS,2CAEnB,KAKXkH,UAAW,WAIT,GAAIC,GAAc9L,EAAQ8L,WACtBA,IACFtS,KAAKgD,OAAOsP,EAAYrH,IAAKqH,EAAYtP,QAAQmJ,WAIrDoG,iBAAkB,SAASrH,GACzB,GACGtF,EADH,CAKAsF,EAAUA,KAEV,IAAIiH,GAAcjH,EAAQsH,SAAWxS,KAAKmS,aAC1C,KAAKA,EACH,KAAM,IAAIxO,GAAiB,kBAG7B,IAAIsH,GAAMC,EAAQD,KAAOjL,KAAKmN,CAC9B,KAAKlC,EACH,KAAM,IAAItH,GAAiB,cAG7B,IAAI8O,GAASC,mBACTC,EAAK,EACTA,IAAM,YAAcF,EAAON,GAC3BQ,GAAM,QAAUF,EAAOxH,EAEvB,IAAImC,GAAOlC,EAAQkC,MAAQpN,KAAKqG,EAAe+G,IAC3CA,KACEA,EAAK3K,OAAMkQ,GAAM,SAAWF,EAAOrF,EAAK3K,OACxC2K,EAAKwF,QAAOD,GAAM,UAAYF,EAAOrF,EAAKwF,QAGhD,IAAIC,GAAe7S,KAAKuN,EAAiBvN,KAAK8M,EAAU7B,IAEpD6H,EAASlN,EAAUmN,cAAc,SACrCD,GAAOE,OAAQ,EACfF,EAAOG,IAAMJ,EAAe,yBAA2BF,GACtD/M,EAAUsN,MAAQtN,EAAUuN,MAAMC,YAAYN,KAIjDO,EAAoB,WAClB,GAAItT,GAAOC,IACXA,MAAK8H,GAAkB,EACvBwL,WAAW,WAETvT,EAAK+H,GAAkB,KAI3ByL,EAAe,SAASC,EAAWtI,GAEjC,GAAIuI,GAAKpI,CAET,IAAKrL,KAAK0F,EAAV,CAEAwF,EAAUA,MAEVsI,EAAY,QAAUA,EAAUtG,OAAO,EAAG,GAAGwG,cAAgBF,EAAUtG,OAAO,GAE1EtH,EAAU+N,aACZF,EAAM7N,EAAU+N,YAAY,cAC5BF,EAAIG,UAAUJ,GAAW,GAAM,KAE/BC,EAAM7N,EAAUiO,oBAChBJ,EAAID,UAAYA,EAGlB,KAAKnI,IAAOH,GACNtB,EAAOsB,EAASG,KAClBoI,EAAIpI,GAAOH,EAAQG,GAGvB,IAAIzF,EAAU+N,YAEZ/N,EAAUkO,cAAcL,OAIxB,KACE7N,EAAUmO,UAAU,KAAON,EAAID,UAAUQ,cAAeP,GACxD,MAAOvT,OAYb+T,EAAyB,SAASC,GAChC,GAAInU,GAAOC,IACX,OAAO,UAASyT,GASd,GALA1T,EAAKoU,GAAmB,KAKpBpU,EAAKwI,IAAuBkL,EAAhC,CAEA1T,EAAKwI,EAAqBkL,CAM1B,IAAIW,EACJ,KACEA,EAASpK,EAAiByJ,EAAIW,QAC9B,MAAOlU,GACPkU,EAAS,YAGXrU,EAAKwQ,mBACH8D,SAAU,MAAQH,EAClBtQ,QAASwQ,OAUfE,GAAuB,WACrB,GAAIvU,GAAOC,KACTuU,EAAmB,GAKrB,OAAO,UAASd,GACd,GAAIW,EACJ,KACEA,EAASX,EAAIW,OACb,MAAOlU,GAGP,OAEF,GAAIsU,GAAUJ,GAAUA,EAAOI,OAK/B,IACGA,IACY,UAAZA,GAAmC,aAAZA,GAA2BJ,EAAOK,mBAF5D,CAQA,GAAIC,GAAU3U,EAAKoU,EACdO,IACH3U,EAAK4U,EAAwB,SAASlB,GAExCmB,aAAaF,GACb3U,EAAKoU,GAAmBb,WAAW,WACjCvT,EAAKoU,GAAmB,MACvBI,MAUPM,GAAmB,SAASC,EAAMC,GAChC,GAAIC,GAAY7K,EAASnK,KAAKwI,EAAUG,MACpCsM,EAAW9K,EAAS4K,GACpBG,EAAa/K,EAAS2K,EAK1B9U,MAAK0I,EAAYqM,EAIbC,EAAUG,WAAaF,EAASE,UAAYH,EAAUI,OAASH,EAASG,OAC1EL,EAAKE,EAASI,UACZL,EAAUG,WAAaD,EAAWC,UAAYH,EAAUI,OAASF,EAAWE,OAC9EN,EAAOI,EAAWG,UAEpBrV,KAAKuQ,mBACH8D,SAAU,aACVzP,MACEmQ,GAAIA,EACJD,KAAMA,MAKZQ,EAAwB,WACtB,GAAIvV,GAAOC,IACXD,GAAKwV,GAA4BzQ,SAASzB,UAAUC,SAEpDwB,SAASzB,UAAUC,SAAW,WAC5B,MAAoB,kBAATtD,OAAuBA,KAAK8N,EAC9B/N,EAAKwV,GAA0BxQ,MAAM/E,KAAKiO,EAAUxJ,WAEtD1E,EAAKwV,GAA0BxQ,MAAM/E,KAAMyE,aAItD+Q,EAA0B,WACpBxV,KAAKuV,KAEPzQ,SAASzB,UAAUC,SAAWtD,KAAKuV,KAQvCE,EAAqB,WAKnB,QAASC,GAAWC,GAClB,MAAO,UAASC,EAAIzV,GAKlB,IAAK,GADDoE,GAAO,GAAIsR,OAAMpR,UAAUzD,QACtBL,EAAI,EAAGA,EAAI4D,EAAKvD,SAAUL,EACjC4D,EAAK5D,GAAK8D,UAAU9D,EAEtB,IAAImV,GAAmBvR,EAAK,EAQ5B,OAPIe,GAAWwQ,KACbvR,EAAK,GAAKxE,EAAKoC,KAAK2T,IAMlBH,EAAK5Q,MACA4Q,EAAK5Q,MAAM/E,KAAMuE,GAEjBoR,EAAKpR,EAAK,GAAIA,EAAK,KAOhC,QAASwR,GAAgBjW,GACvB,GAAIkW,GAAQxP,EAAQ1G,IAAW0G,EAAQ1G,GAAQuD,SAC3C2S,IAASA,EAAMC,gBAAkBD,EAAMC,eAAe,sBACxD7L,EACE4L,EACA,mBACA,SAASL,GACP,MAAO,UAASzB,EAAS0B,EAAIM,EAASC,GAEpC,IACMP,GAAMA,EAAGQ,cACXR,EAAGQ,YAAcrW,EAAKoC,KAAKyT,EAAGQ,cAEhC,MAAOC,IAMT,GAAIC,GAAQC,EAAcC,CA6B1B,OA1BEnP,IACAA,EAAgB0E,MACJ,gBAAXjM,GAAuC,SAAXA,KAI7ByW,EAAexW,EAAK4U,EAAwB,SAC5C6B,EAAkBzW,EAAK0W,KACvBH,EAAS,SAAS7C,GAIhB,GAAKA,EAAL,CAEA,GAAID,EACJ,KACEA,EAAYC,EAAIiD,KAChB,MAAOxW,GAGP,OAEF,MAAkB,UAAdsT,EAA8B+C,EAAa9C,GACxB,aAAdD,EAAiCgD,EAAgB/C,GAArD,UAGFkC,EAAK5U,KACVf,KACAkU,EACAnU,EAAKoC,KAAKyT,EAAIlI,OAAW4I,GACzBJ,EACAC,KAINQ,GAEFvM,EACE4L,EACA,sBACA,SAASL,GACP,MAAO,UAASlC,EAAKmC,EAAIM,EAASC,GAChC,IACEP,EAAKA,IAAOA,EAAG7H,EAAoB6H,EAAG7H,EAAoB6H,GAC1D,MAAO1V,IAGT,MAAOyV,GAAK5U,KAAKf,KAAMyT,EAAKmC,EAAIM,EAASC,KAG7CQ,IAvGN,GAAI5W,GAAOC,KAEP2W,EAAkB5W,EAAKsI,EA2BvBhB,EAAkBrH,KAAKsG,EAAee,eA+E1C+C,GAAK5D,EAAS,aAAckP,EAAYiB,GACxCvM,EAAK5D,EAAS,cAAekP,EAAYiB,GACrCnQ,EAAQoQ,uBACVxM,EACE5D,EACA,wBACA,SAASmP,GACP,MAAO,UAASkB,GACd,MAAOlB,GAAK5V,EAAKoC,KAAK0U,MAG1BF,EAqCJ,KAAK,GA/BDG,IACF,cACA,SACA,OACA,mBACA,iBACA,oBACA,kBACA,cACA,aACA,qBACA,cACA,aACA,iBACA,eACA,kBACA,cACA,cACA,eACA,qBACA,SACA,YACA,eACA,gBACA,YACA,kBACA,SACA,iBACA,4BACA,wBAEOnW,EAAI,EAAGA,EAAImW,EAAa9V,OAAQL,IACvCoV,EAAgBe,EAAanW,KAajCoW,EAAwB,WAMtB,QAASC,GAASC,EAAMnL,GAClBmL,IAAQnL,IAAOxG,EAAWwG,EAAImL,KAChC7M,EAAK0B,EAAKmL,EAAM,SAAStB,GACvB,MAAO5V,GAAKoC,KAAKwT,KARvB,GAAI5V,GAAOC,KACPqH,EAAkBrH,KAAKsG,EAAee,gBAEtCsP,EAAkB5W,EAAKsI,CAU3B,IAAIhB,EAAgByE,KAAO,kBAAoBtF,GAAS,CACtD,GAAI0Q,GAAW1Q,EAAQ2Q,gBAAkB3Q,EAAQ2Q,eAAe9T,SAChE+G,GACE8M,EACA,OACA,SAASE,GACP,MAAO,UAAS1P,EAAQwI,GAYtB,MARI7G,GAAS6G,IAAQA,EAAImH,QAAQtX,EAAKoG,UACpCnG,KAAKsX,IACH5P,OAAQA,EACRwI,IAAKA,EACLqH,YAAa,OAIVH,EAASrS,MAAM/E,KAAMyE,aAGhCkS,GAGFvM,EACE8M,EACA,OACA,SAASM,GACP,MAAO,YAIL,QAASC,KACP,GAAI3L,EAAIwL,IAAkC,IAAnBxL,EAAI4L,WAAkB,CAC3C,IAGE5L,EAAIwL,GAAYC,YAAczL,EAAI6L,OAClC,MAAOzX,IAITH,EAAKwQ,mBACHmG,KAAM,OACNrC,SAAU,MACVzP,KAAMkH,EAAIwL,MAMhB,IAAK,GArBDxL,GAAM9L,KAoBN4X,GAAS,SAAU,UAAW,cACzBC,EAAI,EAAGA,EAAID,EAAM5W,OAAQ6W,IAChCb,EAASY,EAAMC,GAAI/L,EAiBrB,OAdI,sBAAwBA,IAAOxG,EAAWwG,EAAIgM,oBAChD1N,EACE0B,EACA,qBACA,SAAS6J,GACP,MAAO5V,GAAKoC,KAAKwT,EAAMjI,OAAW+J,KAMtC3L,EAAIgM,mBAAqBL,EAGpBD,EAASzS,MAAM/E,KAAMyE,aAGhCkS,GAIAtP,EAAgByE,KAAOzB,KACzBD,EACE5D,EACA,QACA,SAASuR,GACP,MAAO,YAKL,IAAK,GADDxT,GAAO,GAAIsR,OAAMpR,UAAUzD,QACtBL,EAAI,EAAGA,EAAI4D,EAAKvD,SAAUL,EACjC4D,EAAK5D,GAAK8D,UAAU9D,EAGtB,IAEIuP,GAFA8H,EAAazT,EAAK,GAClBmD,EAAS,KAeb,IAZ0B,gBAAfsQ,GACT9H,EAAM8H,EACG,WAAaxR,IAAWwR,YAAsBxR,GAAQyR,SAC/D/H,EAAM8H,EAAW9H,IACb8H,EAAWtQ,SACbA,EAASsQ,EAAWtQ,SAGtBwI,EAAM,GAAK8H,EAIT9H,EAAImH,QAAQtX,EAAKoG,QACnB,MAAO4R,GAAUhT,MAAM/E,KAAMuE,EAG3BA,GAAK,IAAMA,EAAK,GAAGmD,SACrBA,EAASnD,EAAK,GAAGmD,OAGnB,IAAIwQ,IACFxQ,OAAQA,EACRwI,IAAKA,EACLqH,YAAa,KAGf,OAAOQ,GACJhT,MAAM/E,KAAMuE,GACZ4T,KAAK,SAASC,GASb,MARAF,GAAUX,YAAca,EAAST,OAEjC5X,EAAKwQ,mBACHmG,KAAM,OACNrC,SAAU,QACVzP,KAAMsT,IAGDE,IAER,SAAS,SAAS/B,GASjB,KAPAtW,GAAKwQ,mBACHmG,KAAM,OACNrC,SAAU,QACVzP,KAAMsT,EACNhU,MAAO,UAGHmS,MAIdM,GAMAtP,EAAgB0E,KAAO/L,KAAK0F,IAC1BE,EAAUiJ,kBACZjJ,EAAUiJ,iBAAiB,QAAS9O,EAAK4U,EAAwB,UAAU,GAC3E/O,EAAUiJ,iBAAiB,WAAY9O,EAAK0W,MAAyB,IAC5D7Q,EAAUyS,cAEnBzS,EAAUyS,YAAY,UAAWtY,EAAK4U,EAAwB,UAC9D/O,EAAUyS,YAAY,aAActY,EAAK0W,OAQ7C,IAAI6B,GAAS9R,EAAQ8R,OACjBC,EAAsBD,GAAUA,EAAOE,KAAOF,EAAOE,IAAIC,QACzDC,GACDH,GACD/R,EAAQmS,SACRnS,EAAQmS,QAAQC,WAChBpS,EAAQmS,QAAQE,YAClB,IAAIxR,EAAgBoB,UAAYiQ,EAAwB,CAEtD,GAAII,GAAgBtS,EAAQuS,UAC5BvS,GAAQuS,WAAa,WACnB,GAAIC,GAAcjZ,EAAKyI,EAAUG,IAGjC,IAFA5I,EAAKkZ,GAAkBlZ,EAAK2I,EAAWsQ,GAEnCF,EACF,MAAOA,GAAc/T,MAAM/E,KAAMyE,WAIrC,IAAIyU,GAA6B,SAASC,GAGxC,MAAO,YACL,GAAIjJ,GAAMzL,UAAUzD,OAAS,EAAIyD,UAAU,GAAKiJ,MAQhD,OALIwC,IAEFnQ,EAAKkZ,GAAkBlZ,EAAK2I,EAAWwH,EAAM,IAGxCiJ,EAAiBpU,MAAM/E,KAAMyE,YAIxC2F,GAAK5D,EAAQmS,QAAS,YAAaO,EAA4BvC,GAC/DvM,EAAK5D,EAAQmS,QAAS,eAAgBO,EAA4BvC,GAGpE,GAAItP,EAAgBpD,SAAW,WAAauC,IAAWvC,QAAQmV,IAAK,CAElE,GAAIC,GAAwB,SAAS3U,EAAKE,GACxC7E,EAAKwQ,mBACH3M,QAASc,EACTR,MAAOU,EAAKV,MACZmQ,SAAU,YAId7K,IAAM,QAAS,OAAQ,OAAQ,QAAS,OAAQ,SAASyK,EAAG/P,GAC1DuG,EAAkBxG,QAASC,EAAOmV,OAKxCC,EAAkB,WAGhB,IADA,GAAIC,GACGvZ,KAAKqI,EAAiBrH,QAAQ,CACnCuY,EAAUvZ,KAAKqI,EAAiBwI,OAEhC,IAAIL,GAAM+I,EAAQ,GAChB9W,EAAO8W,EAAQ,GACf5D,EAAO4D,EAAQ,EAEjB/I,GAAI/N,GAAQkT,IAIhB6D,EAAiB,WAEf,IAAK,GAAI9R,KAAU1H,MAAKkI,EACtBlI,KAAKiI,EAAiBP,GAAU1H,KAAKkI,EAAwBR,IAIjE+R,EAAe,WACb,GAAI1Z,GAAOC,IAGXwJ,GAAKxJ,KAAKmI,EAAU,SAAS8L,EAAGnD,GAC9B,GAAI4I,GAAY5I,EAAO,GACnBvM,EAAOuM,EAAO,EAClB4I,GAAU3U,MAAMhF,GAAOA,GAAM4Z,OAAOpV,OAIxCqV,EAAW,SAASC,GAClB,GAAIC,GAAIlP,EAAWmP,KAAKF,GACtB5O,KACAtK,EAAI,CAEN,KACE,KAAOA,KAAKsK,EAAIP,EAAQ/J,IAAMmZ,EAAEnZ,IAAM,GACtC,MAAOT,GACP,KAAM,IAAIyD,GAAiB,gBAAkBkW,GAG/C,GAAI5O,EAAIqC,OAAStN,KAAKsG,EAAe0T,eACnC,KAAM,IAAIrW,GACR,iFAIJ,OAAOsH,IAGTgP,EAAkB,SAASpN,GAEzB,GAAIgG,GAAe,KAAOhG,EAAIuI,MAAQvI,EAAIqN,KAAO,IAAMrN,EAAIqN,KAAO,GAKlE,OAHIrN,GAAIsI,WACNtC,EAAehG,EAAIsI,SAAW,IAAMtC,GAE/BA,GAGTsH,EAAyB,WAElBna,KAAK8H,GACR9H,KAAKsP,EAAiBvK,MAAM/E,KAAMyE,YAItC2V,EAAkB,SAASC,EAAWnP,GACpC,GAAIiF,GAASnQ,KAAKoQ,EAAeiK,EAAWnP,EAE5ClL,MAAKsa,EAAc,UACjBD,UAAWA,EACXnP,QAASA,IAGXlL,KAAKua,GACHF,EAAU5X,KACV4X,EAAUzW,QACVyW,EAAUnK,IACVmK,EAAUG,OACVrK,EACAjF,IAIJuP,EAAgB,SAASJ,EAAWnP,GAClC,GAAInL,GAAOC,KACPmQ,IACJ,IAAIkK,EAAUjL,OAASiL,EAAUjL,MAAMpO,SACrCwI,EAAK6Q,EAAUjL,MAAO,SAASzO,EAAGyO,GAChC,GAAIsL,GAAQ3a,EAAK4a,GAAgBvL,EAAOiL,EAAUnK,IAC9CwK,IACFvK,EAAO3E,KAAKkP,KAKZxP,GAAWA,EAAQ+D,gBACrB,IAAK,GAAI4I,GAAI,EAAGA,EAAI3M,EAAQ+D,gBAAkB4I,EAAI1H,EAAOnP,OAAQ6W,IAC/D1H,EAAO0H,GAAG+C,QAAS,CAKzB,OADAzK,GAASA,EAAO3L,MAAM,EAAGxE,KAAKsG,EAAec,kBAI/CyT,GAAiB,SAASH,EAAOI,GAE/B,GAAIC,IACFC,SAAUN,EAAMxK,IAChBsK,OAAQE,EAAMO,KACdC,MAAOR,EAAMS,OACbC,WAAUV,EAAMjN,MAAQ,IAuB1B,OAfKiN,GAAMxK,MACT6K,EAAWC,SAAWF,GAGxBC,EAAWH,SAGN5a,KAAKsG,EAAeQ,aAAaiJ,OACjC/P,KAAKsG,EAAeQ,aAAaiJ,KAAKgL,EAAWC,WAEpD,qBAAqBjL,KAAKgL,EAAW,cAErC,qBAAqBhL,KAAKgL,EAAWC,WAGhCD,GAGTM,GAAmB,SAAS3E,EAAM9S,EAASqM,EAASuK,EAAQrK,EAAQjF,GAClE,GAAIoQ,IAAmB5E,EAAOA,EAAO,KAAO,KAAO9S,GAAW,GAC9D,KACI5D,KAAKsG,EAAeK,aAAaoJ,OAClC/P,KAAKsG,EAAeK,aAAaoJ,KAAKnM,KACrC5D,KAAKsG,EAAeK,aAAaoJ,KAAKuL,GAH1C,CAQA,GAAIpM,EAoBJ,IAlBIiB,GAAUA,EAAOnP,QACnBiP,EAAUE,EAAO,GAAG6K,UAAY/K,EAGhCE,EAAOE,UACPnB,GAAciB,OAAQA,IACbF,IACTf,GACEiB,SAEI6K,SAAU/K,EACVuK,OAAQA,EACRI,QAAQ,QAOZ5a,KAAKsG,EAAeM,WAAWmJ,OACjC/P,KAAKsG,EAAeM,WAAWmJ,KAAKE,OAMlCjQ,KAAKsG,EAAeO,cAAckJ,MACnC/P,KAAKsG,EAAeO,cAAckJ,KAAKE,IAF1C,CAOA,GAAIrL,GAAO6E,GAGP8R,WACEC,SAEI9E,KAAMA,EACNpL,MAAO1H,EACPsL,WAAYA,KAIlBuM,QAASxL,GAEX/E,EAIFlL,MAAKsQ,EAAM1L,MAGb8W,GAAa,SAAS9W,GAGpB,GAAI+G,GAAM3L,KAAKsG,EAAeY,gBAI9B,IAHItC,EAAKhB,UACPgB,EAAKhB,QAAU8F,EAAS9E,EAAKhB,QAAS+H,IAEpC/G,EAAK2W,UAAW,CAClB,GAAIA,GAAY3W,EAAK2W,UAAUC,OAAO,EACtCD,GAAUjQ,MAAQ5B,EAAS6R,EAAUjQ,MAAOK,GAG9C,GAAIgQ,GAAU/W,EAAK+W,OAanB,OAZIA,KACEA,EAAQzL,MACVyL,EAAQzL,IAAMxG,EAASiS,EAAQzL,IAAKlQ,KAAKsG,EAAea,eAEtDwU,EAAQC,UACVD,EAAQC,QAAUlS,EAASiS,EAAQC,QAAS5b,KAAKsG,EAAea,gBAIhEvC,EAAKiX,aAAejX,EAAKiX,YAAYL,QACvCxb,KAAK8b,GAAiBlX,EAAKiX,aAEtBjX,GAMTmX,GAAkB,SAASF,GAQzB,IAAK,GAJHG,GACAvL,EACA7L,EAHEqX,GAAY,KAAM,OAAQ,OAKrBtb,EAAI,EAAGA,EAAIkb,EAAYL,OAAOxa,SAAUL,EAE/C,GADA8P,EAAQoL,EAAYL,OAAO7a,GAExB8P,EAAMwF,eAAe,SACrB9M,EAASsH,EAAM7L,QAChB+E,EAAa8G,EAAM7L,MAHrB,CAOAA,EAAO6E,KAAgBgH,EAAM7L,KAC7B,KAAK,GAAIiT,GAAI,EAAGA,EAAIoE,EAASjb,SAAU6W,EACrCmE,EAAUC,EAASpE,GACfjT,EAAKqR,eAAe+F,IAAYpX,EAAKoX,KACvCpX,EAAKoX,GAAWtS,EAAS9E,EAAKoX,GAAUhc,KAAKsG,EAAea,cAGhE0U,GAAYL,OAAO7a,GAAGiE,KAAOA,IAIjCsX,GAAc,WACZ,GAAKlc,KAAK6F,GAAkB7F,KAAK0F,EAAjC,CACA,GAAIyW,KAkBJ,OAhBInc,MAAK6F,GAAiBC,EAAWsW,YACnCD,EAASpV,SACPsV,aAAcvW,EAAWsW,YAKzB5V,EAAQiC,UAAYjC,EAAQiC,SAASE,OACvCwT,EAASjM,IAAM1J,EAAQiC,SAASE,MAG9B3I,KAAK0F,GAAgBE,EAAU0W,WAC5BH,EAASpV,UAASoV,EAASpV,YAChCoV,EAASpV,QAAQ6U,QAAUhW,EAAU0W,UAGhCH,IAGTI,EAAe,WACbvc,KAAKwc,GAAmB,EACxBxc,KAAKyc,GAAgB,MAGvBC,GAAgB,WACd,MAAO1c,MAAKwc,IAAoBtX,IAAQlF,KAAKyc,GAAgBzc,KAAKwc,IAYpEG,GAAe,SAASC,GACtB,GAAIC,GAAO7c,KAAKgG,CAEhB,UACG6W,GACDD,EAAQhZ,UAAYiZ,EAAKjZ,SACzBgZ,EAAQnB,UAAYoB,EAAKpB,WAKvBmB,EAAQ1N,YAAc2N,EAAK3N,WACtBhF,EAAiB0S,EAAQ1N,WAAY2N,EAAK3N,aACxC0N,EAAQrB,YAAasB,EAAKtB,WAE5BtR,EAAgB2S,EAAQrB,UAAWsB,EAAKtB,aAMnDuB,GAAkB,SAASnB,GAEzB,IAAI3b,KAAK+c,KAAT,CAIA,GAAIpF,GAASgE,EAAQhE,MAKrB,IAAiB,MAAXA,GAA6B,MAAXA,GAA6B,MAAXA,EAA1C,CAEA,GAAIqF,EACJ,KAIIA,EADE3S,IACMsR,EAAQ5U,QAAQkW,IAAI,eAEpBtB,EAAQuB,kBAAkB,eAIpCF,EAA8B,IAAtBG,SAASH,EAAO,IACxB,MAAO9c,IAITF,KAAKwc,GAAmBQ,EAEpBA,EAEwB,EAAxBhd,KAAKwc,IAAwB,IAEjCxc,KAAKyc,GAAgBvX,OAGvBkY,EAAO,SAASxY,GACd,GAAIwG,GAAgBpL,KAAKsG,EAErB+W,GACAC,QAAStd,KAAKoG,EACdvB,OAAQuG,EAAcvG,OACtB0Y,SAAU,cAEZpB,EAAWnc,KAAKwd,IAsDlB,IApDIrB,IACFkB,EAAS1B,QAAUQ,GAIjBvX,EAAKqK,sBAAuBrK,GAAKqK,eAErCrK,EAAO6E,EAAY4T,EAAUzY,GAG7BA,EAAKwM,KAAO3H,EAAYA,KAAgBzJ,KAAKqG,EAAe+K,MAAOxM,EAAKwM,MACxExM,EAAKhD,MAAQ6H,EAAYA,KAAgBzJ,KAAKqG,EAAezE,OAAQgD,EAAKhD,OAG1EgD,EAAKhD,MAAM,oBAAsBsD,IAAQlF,KAAKoI,EAE1CpI,KAAKsI,GAAgBtI,KAAKsI,EAAatH,OAAS,IAGlD4D,EAAKiX,aACHL,UAAWhX,MAAMzD,KAAKf,KAAKsI,EAAc,KAIzCtI,KAAKqG,EAAe+G,OAEtBxI,EAAKwI,KAAOpN,KAAKqG,EAAe+G,MAI9BhC,EAAcqG,cAAa7M,EAAK6M,YAAcrG,EAAcqG,aAG5DrG,EAAc7E,UAAS3B,EAAK2B,QAAU6E,EAAc7E,SAGpD6E,EAAcqS,aAAY7Y,EAAK8Y,YAActS,EAAcqS,YAE/D7Y,EAAO5E,KAAK2d,GAAc/Y,GAG1BxB,OAAOuM,KAAK/K,GAAMgZ,QAAQ,SAASvS,IAChB,MAAbzG,EAAKyG,IAA8B,KAAdzG,EAAKyG,IAAe9B,EAAc3E,EAAKyG,YACvDzG,GAAKyG,KAIZ/F,EAAW8F,EAAcwG,gBAC3BhN,EAAOwG,EAAcwG,aAAahN,IAASA,GAIxCA,IAAQ2E,EAAc3E,MAMzBU,EAAW8F,EAAc2G,qBACxB3G,EAAc2G,mBAAmBnN,IAOpC,MAAI5E,MAAK+c,SACP/c,MAAKmL,EAAU,OAAQ,uCAAwCvG,QAIzB,gBAA7BwG,GAAc7D,WACnBmE,KAAKmS,SAAWzS,EAAc7D,YAChCvH,KAAK8d,GAAsBlZ,GAG7B5E,KAAK8d,GAAsBlZ,KAI/BmZ,GAAe,SAASnZ,GACtB,MAAO4F,GAAS5F,EAAM5E,KAAKsG,EAAekB,eAG5CwW,GAAU,WACR,MAAOjU,MAGTkU,GAAuB,SAASrZ,EAAMT,GACpC,GAAIpE,GAAOC,KACPoL,EAAgBpL,KAAKsG,CAEzB,IAAKtG,KAAKoM,UAAV,CAQA,GALAxH,EAAO5E,KAAKke,GAAYtZ,IAKnB5E,KAAKsG,EAAe6X,iBAAmBne,KAAKoe,GAAcxZ,GAE7D,WADA5E,MAAKmL,EAAU,OAAQ,+BAAgCvG,EAOzD5E,MAAKiG,EAAerB,EAAKyZ,WAAazZ,EAAKyZ,SAAWre,KAAKse,MAG3Dte,KAAKgG,EAAYpB,EAEjB5E,KAAKmL,EAAU,QAAS,uBAAwBvG,EAEhD,IAAI2Z,IACFC,eAAgB,IAChBC,cAAe,YAAcze,KAAK+K,QAClC2T,WAAY1e,KAAKmG,EAGfnG,MAAKqN,IACPkR,EAAKI,cAAgB3e,KAAKqN,EAG5B,IAAIkO,GAAY3W,EAAK2W,WAAa3W,EAAK2W,UAAUC,OAAO,EAItDxb,MAAKsG,EAAee,iBACpBrH,KAAKsG,EAAee,gBAAgB2E,QAEpChM,KAAKuQ,mBACH8D,SAAU,SACVzQ,QAAS2X,GACJA,EAAU7E,KAAO6E,EAAU7E,KAAO,KAAO,IAAM6E,EAAUjQ,MAC1D1G,EAAKhB,QACTya,SAAUzZ,EAAKyZ,SACfna,MAAOU,EAAKV,OAAS,SAIzB,IAAIgM,GAAMlQ,KAAKwN,GACdpC,EAAc6G,WAAajS,KAAK4e,IAAc7d,KAAKf,MAClDkQ,IAAKA,EACLqO,KAAMA,EACN3Z,KAAMA,EACNsG,QAASE,EACTyT,UAAW,WACT9e,EAAK6I,IAEL7I,EAAKua,EAAc,WACjB1V,KAAMA,EACNqO,IAAK/C,IAEP/L,GAAYA,KAEd2a,QAAS,SAAiBvd,GACxBxB,EAAKoL,EAAU,QAAS,mCAAoC5J,GAExDA,EAAMoa,SACR5b,EAAKgf,GAAiBxd,EAAMoa,SAG9B5b,EAAKua,EAAc,WACjB1V,KAAMA,EACNqO,IAAK/C,IAEP3O,EAAQA,GAAS,GAAIX,OAAM,sDAC3BuD,GAAYA,EAAS5C,QAK3Byd,GAAc,SAASC,GAErB,GAAI/O,GAAM+O,EAAK/O,IAAM,IAAMpG,EAAUmV,EAAKV,MAEtCW,EAAmB,KACnBC,IAUJ,IARIF,EAAK/T,QAAQnE,UACfmY,EAAmBlf,KAAKof,GAAcH,EAAK/T,QAAQnE,UAGjDkY,EAAK/T,QAAQmU,kBACfF,EAA2Bnf,KAAKof,GAAcH,EAAK/T,QAAQmU,kBAGzDhV,IAAiB,CACnB8U,EAAyBhM,KAAO1N,EAAUwZ,EAAKra,KAE/C,IAAI0a,GAAsB7V,KAAgBzJ,KAAKyH,GAC3C8X,EAAe9V,EAAY6V,EAAqBH,EAMpD,OAJID,KACFK,EAAaxY,QAAUmY,GAGlB1Y,EACJgZ,MAAMtP,EAAKqP,GACXpH,KAAK,SAASC,GACb,GAAIA,EAASqH,GACXR,EAAKJ,WAAaI,EAAKJ,gBAClB,CACL,GAAItd,GAAQ,GAAIX,OAAM,sBAAwBwX,EAAST,OAGvDpW,GAAMoa,QAAUvD,EAChB6G,EAAKH,SAAWG,EAAKH,QAAQvd,MAGhC,SAAS,WACR0d,EAAKH,SACHG,EAAKH,QAAQ,GAAIle,OAAM,6CAI/B,GAAI+a,GAAUnV,EAAQ2Q,gBAAkB,GAAI3Q,GAAQ2Q,cACpD,IAAKwE,EAAL,CAGA,GAAI+D,GAAU,mBAAqB/D,IAAqC,mBAAnBgE,eAEhDD,KAED,mBAAqB/D,GACvBA,EAAQ7D,mBAAqB,WAC3B,GAA2B,IAAvB6D,EAAQjE,WAEL,GAAuB,MAAnBiE,EAAQhE,OACjBsH,EAAKJ,WAAaI,EAAKJ,gBAClB,IAAII,EAAKH,QAAS,CACvB,GAAIzI,GAAM,GAAIzV,OAAM,sBAAwB+a,EAAQhE,OACpDtB,GAAIsF,QAAUA,EACdsD,EAAKH,QAAQzI,MAIjBsF,EAAU,GAAIgE,gBAGdzP,EAAMA,EAAI0P,QAAQ,WAAY,IAG1BX,EAAKJ,YACPlD,EAAQkE,OAASZ,EAAKJ,WAEpBI,EAAKH,UACPnD,EAAQra,QAAU,WAChB,GAAI+U,GAAM,GAAIzV,OAAM,oCACpByV,GAAIsF,QAAUA,EACdsD,EAAKH,QAAQzI,MAKnBsF,EAAQmE,KAAK,OAAQ5P,GAEjBgP,GACF1V,EAAK0V,EAAkB,SAAS7T,EAAKC,GACnCqQ,EAAQoE,iBAAiB1U,EAAKC,KAIlCqQ,EAAQqE,KAAKva,EAAUwZ,EAAKra,UAG9Bqb,GAAe,SAASC,GACtB,GAAIC,KAEJ,KAAK,GAAI9U,KAAO6U,GACd,GAAIA,EAAKjK,eAAe5K,GAAM,CAC5B,GAAIC,GAAQ4U,EAAK7U,EACjB8U,GAAU9U,GAAwB,kBAAVC,GAAuBA,IAAUA,EAI7D,MAAO6U,IAGTC,EAAW,SAASlc,GAGhBlE,KAAKkI,EAAwBhE,KAC5BlE,KAAKgL,OAAShL,KAAKsG,EAAe0E,QAGnClG,SAASzB,UAAU0B,MAAMhE,KACvBf,KAAKkI,EAAwBhE,GAC7BlE,KAAKiI,KACFzD,MAAMzD,KAAK0D,UAAW,KAK/B4b,EAAe,SAAShV,EAAKxJ,GACvB8D,EAAY9D,SACP7B,MAAKqG,EAAegF,GAE3BrL,KAAKqG,EAAegF,GAAO5B,EAAYzJ,KAAKqG,EAAegF,OAAYxJ,KAM7E5B,EAAMoD,UAAUid,QAAUrgB,EAAMoD,UAAU2N,eAC1C/Q,EAAMoD,UAAUkd,kBAAoBtgB,EAAMoD,UAAUqO,WAEpDjS,EAAOD,QAAUS,IAEdc,KAAKf,KAAuB,mBAAXF,QAAyBA,OAAyB,mBAATC,MAAuBA,KAAyB,mBAAXF,QAAyBA,aACxH2gB,GAAK,GAAGC,GAAK,GAAG/c,EAAI,EAAEI,EAAI,EAAEkB,EAAI,EAAE0b,EAAI,IAAI1e,GAAG,SAASd,EAAQzB,EAAOD,IACxE,SAAWM,GAOX,GAAI6gB,GAAmBzf,EAAQ,GAG3BsF,EACgB,mBAAX3G,QACHA,OACkB,mBAAXC,GAAyBA,EAAyB,mBAATC,MAAuBA,QACzE6gB,EAASpa,EAAQvG,MAEjBA,EAAQ,GAAI0gB,EAQhB1gB,GAAM4gB,WAAa,WAEjB,MADAra,GAAQvG,MAAQ2gB,EACT3gB,GAGTA,EAAMoS,YAEN5S,EAAOD,QAAUS,EAoCjBR,EAAOD,QAAQshB,OAASH,IAErB5f,KAAKf,KAAuB,mBAAXF,QAAyBA,OAAyB,mBAATC,MAAuBA,KAAyB,mBAAXF,QAAyBA,aACxHoF,EAAI,IAAID,GAAG,SAAS9D,EAAQzB,EAAOD,IACtC,SAAWM,GAQX,QAASqJ,GAAS4X,GAChB,MAAuB,gBAATA,IAA8B,OAATA,EAKrC,QAAS7X,GAAQoC,GACf,OAAQlI,OAAOC,UAAUC,SAASvC,KAAKuK,IACrC,IAAK,iBACH,OAAO,CACT,KAAK,qBACH,OAAO,CACT,KAAK,wBACH,OAAO,CACT,SACE,MAAOA,aAAiB1K,QAI9B,QAASmI,GAAauC,GACpB,MAAiD,wBAA1ClI,OAAOC,UAAUC,SAASvC,KAAKuK,GAGxC,QAAStC,GAAWsC,GAClB,MAAiD,sBAA1ClI,OAAOC,UAAUC,SAASvC,KAAKuK,GAGxC,QAASrC,GAAeqC,GACtB,MAAiD,0BAA1ClI,OAAOC,UAAUC,SAASvC,KAAKuK,GAGxC,QAAS3F,GAAYob,GACnB,MAAgB,UAATA,EAGT,QAASzb,GAAWyb,GAClB,MAAuB,kBAATA,GAGhB,QAAS3X,GAAc2X,GACrB,MAAgD,oBAAzC3d,OAAOC,UAAUC,SAASvC,KAAKggB,GAGxC,QAAS1X,GAAS0X,GAChB,MAAgD,oBAAzC3d,OAAOC,UAAUC,SAASvC,KAAKggB,GAGxC,QAASzX,GAAQyX,GACf,MAAgD,mBAAzC3d,OAAOC,UAAUC,SAASvC,KAAKggB,GAGxC,QAASxX,GAAcwX,GACrB,IAAK3X,EAAc2X,GAAO,OAAO,CAEjC,KAAK,GAAI9M,KAAK8M,GACZ,GAAIA,EAAK9K,eAAehC,GACtB,OAAO,CAGX,QAAO,EAGT,QAAS+M,KACP,IAEE,MADA,IAAIC,YAAW,KACR,EACP,MAAO/gB,GACP,OAAO,GAIX,QAASghB,KACP,IAEE,MADA,IAAIC,UAAS,KACN,EACP,MAAOjhB,GACP,OAAO,GAIX,QAASkhB,KACP,IAEE,MADA,IAAIC,cAAa,KACV,EACP,MAAOnhB,GACP,OAAO,GAIX,QAASmK,KACP,KAAM,SAAW7D,IAAU,OAAO,CAElC,KAIE,MAHA,IAAI8a,SACJ,GAAIrJ,SAAQ,IACZ,GAAIsJ,WACG,EACP,MAAOrhB,GACP,OAAO,GAQX,QAAS2H,KACP,IAAKwC,IAAiB,OAAO,CAE7B,KAKE,MAHA,IAAI4N,SAAQ,cACVrQ,eAAgB,YAEX,EACP,MAAO1H,GACP,OAAO,GAIX,QAASshB,KACP,MAAwC,kBAA1BC,uBAGhB,QAASC,GAAgBvd,GACvB,QAASyN,GAAahN,EAAMS,GAC1B,GAAIsc,GAAiBxd,EAASS,IAASA,CACvC,OAAIS,GACKA,EAASsc,IAAmBA,EAE9BA,EAGT,MAAO/P,GAGT,QAASpI,GAAKgH,EAAKrM,GACjB,GAAIxD,GAAGkX,CAEP,IAAIlS,EAAY6K,EAAIxP,QAClB,IAAKL,IAAK6P,GACJ5G,EAAO4G,EAAK7P,IACdwD,EAASpD,KAAK,KAAMJ,EAAG6P,EAAI7P,QAK/B,IADAkX,EAAIrH,EAAIxP,OAEN,IAAKL,EAAI,EAAGA,EAAIkX,EAAGlX,IACjBwD,EAASpD,KAAK,KAAMJ,EAAG6P,EAAI7P,IAMnC,QAAS8I,GAAYmY,EAAMC,GACzB,MAAKA,IAGLrY,EAAKqY,EAAM,SAASxW,EAAKC,GACvBsW,EAAKvW,GAAOC,IAEPsW,GALEA,EAgBX,QAASjY,GAAa6G,GACpB,QAAKpN,OAAO0e,UAGL1e,OAAO0e,SAAStR,GAGzB,QAAS9G,GAASmQ,EAAKlO,GACrB,GAAmB,gBAARA,GACT,KAAM,IAAI/K,OAAM,yDAElB,OAAmB,gBAARiZ,IAA4B,IAARlO,EACtBkO,EAEFA,EAAI7Y,QAAU2K,EAAMkO,EAAMA,EAAI3M,OAAO,EAAGvB,GAAO,IAUxD,QAAS/B,GAAOmY,EAAQ1W,GACtB,MAAOjI,QAAOC,UAAU4S,eAAelV,KAAKghB,EAAQ1W,GAGtD,QAASxB,GAAWmY,GAQlB,IALA,GAGEC,GAHEC,KACFvhB,EAAI,EACJwhB,EAAMH,EAAShhB,OAGVL,EAAIwhB,EAAKxhB,IACdshB,EAAUD,EAASrhB,GACf0I,EAAS4Y,GAGXC,EAAQ1W,KAAKyW,EAAQrC,QAAQ,8BAA+B,SACnDqC,GAAWA,EAAQG,QAE5BF,EAAQ1W,KAAKyW,EAAQG,OAIzB,OAAO,IAAIC,QAAOH,EAAQI,KAAK,KAAM,KAGvC,QAASxY,GAAUvJ,GACjB,GAAIgiB,KAIJ,OAHA/Y,GAAKjJ,EAAG,SAAS8K,EAAKC,GACpBiX,EAAM/W,KAAKkH,mBAAmBrH,GAAO,IAAMqH,mBAAmBpH,MAEzDiX,EAAMD,KAAK,KAMpB,QAASnY,GAAS+F,GAChB,GAAmB,gBAARA,GAAkB,QAC7B,IAAIsS,GAAQtS,EAAIsS,MAAM,kEAGlBC,EAAQD,EAAM,IAAM,GACpBE,EAAWF,EAAM,IAAM,EAC3B,QACErN,SAAUqN,EAAM,GAChBpN,KAAMoN,EAAM,GACZxV,KAAMwV,EAAM,GACZnN,SAAUmN,EAAM,GAAKC,EAAQC,GAGjC,QAAS3Y,KACP,GAAI4Y,GAASnc,EAAQmc,QAAUnc,EAAQoc,QAEvC,KAAKjd,EAAYgd,IAAWA,EAAOE,gBAAiB,CAGlD,GAAIC,GAAM,GAAIC,aAAY,EAC1BJ,GAAOE,gBAAgBC,GAGvBA,EAAI,GAAe,KAATA,EAAI,GAAc,MAE5BA,EAAI,GAAe,MAATA,EAAI,GAAe,KAE7B,IAAIE,GAAM,SAASC,GAEjB,IADA,GAAIC,GAAID,EAAI3f,SAAS,IACd4f,EAAEliB,OAAS,GAChBkiB,EAAI,IAAMA,CAEZ,OAAOA,GAGT,OACEF,GAAIF,EAAI,IACRE,EAAIF,EAAI,IACRE,EAAIF,EAAI,IACRE,EAAIF,EAAI,IACRE,EAAIF,EAAI,IACRE,EAAIF,EAAI,IACRE,EAAIF,EAAI,IACRE,EAAIF,EAAI,IAIV,MAAO,mCAAmClD,QAAQ,QAAS,SAASuD,GAClE,GAAI9iB,GAAqB,GAAhBqL,KAAKmS,SAAiB,EAC7BqF,EAAU,MAANC,EAAY9iB,EAAS,EAAJA,EAAW,CAClC,OAAO6iB,GAAE5f,SAAS,MAYxB,QAAS0G,GAAiBoZ,GAWxB,IATA,GAOEC,GAPEC,EAAsB,EACxBC,EAAiB,GACjBC,KACAC,EAAS,EACTtB,EAAM,EACNuB,EAAY,MACZC,EAAYD,EAAU1iB,OAGjBoiB,GAAQK,IAAWH,IACxBD,EAAUO,EAAoBR,KAMhB,SAAZC,GACCI,EAAS,GAAKtB,EAAMqB,EAAIxiB,OAAS2iB,EAAYN,EAAQriB,QAAUuiB,KAKlEC,EAAIhY,KAAK6X,GAETlB,GAAOkB,EAAQriB,OACfoiB,EAAOA,EAAKS,UAGd,OAAOL,GAAInT,UAAUiS,KAAKoB,GAS5B,QAASE,GAAoBR,GAC3B,GACEU,GACAC,EACA1Y,EACA2Y,EACArjB,EALE6iB,IAOJ,KAAKJ,IAASA,EAAK5O,QACjB,MAAO,EAST,IANAgP,EAAIhY,KAAK4X,EAAK5O,QAAQR,eAClBoP,EAAK1c,IACP8c,EAAIhY,KAAK,IAAM4X,EAAK1c,IAGtBod,EAAYV,EAAKU,UACbA,GAAaza,EAASya,GAExB,IADAC,EAAUD,EAAUnZ,MAAM,OACrBhK,EAAI,EAAGA,EAAIojB,EAAQ/iB,OAAQL,IAC9B6iB,EAAIhY,KAAK,IAAMuY,EAAQpjB,GAG3B,IAAIsjB,IAAiB,OAAQ,OAAQ,QAAS,MAC9C,KAAKtjB,EAAI,EAAGA,EAAIsjB,EAAcjjB,OAAQL,IACpC0K,EAAM4Y,EAActjB,GACpBqjB,EAAOZ,EAAKc,aAAa7Y,GACrB2Y,GACFR,EAAIhY,KAAK,IAAMH,EAAM,KAAO2Y,EAAO,KAGvC,OAAOR,GAAIlB,KAAK,IAMlB,QAAS6B,GAAgB1jB,EAAG2jB,GAC1B,WAAY3jB,IAAM2jB,GAMpB,QAASC,GAAgB5jB,EAAG2jB,GAC1B,MAAOze,GAAYlF,IAAMkF,EAAYye,GAMvC,QAASna,GAAgBsF,EAAK+U,GAC5B,OAAIH,EAAgB5U,EAAK+U,KAEzB/U,EAAMA,EAAIiM,OAAO,GACjB8I,EAAMA,EAAI9I,OAAO,GAEbjM,EAAImH,OAAS4N,EAAI5N,MAAQnH,EAAIjE,QAAUgZ,EAAIhZ,SAG3C+Y,EAAgB9U,EAAIL,WAAYoV,EAAIpV,aAEjChF,EAAiBqF,EAAIL,WAAYoV,EAAIpV,cAM9C,QAAShF,GAAiBqa,EAAQC,GAChC,GAAIL,EAAgBI,EAAQC,GAAS,OAAO,CAE5C,IAAIC,GAAUF,EAAOpU,OACjBuU,EAAUF,EAAOrU,MAGrB,IAAIsU,EAAQzjB,SAAW0jB,EAAQ1jB,OAAQ,OAAO,CAI9C,KAAK,GADDP,GAAG2jB,EACEzjB,EAAI,EAAGA,EAAI8jB,EAAQzjB,OAAQL,IAGlC,GAFAF,EAAIgkB,EAAQ9jB,GACZyjB,EAAIM,EAAQ/jB,GAEVF,EAAEua,WAAaoJ,EAAEpJ,UACjBva,EAAE+Z,SAAW4J,EAAE5J,QACf/Z,EAAEya,QAAUkJ,EAAElJ,OACdza,EAAE,cAAgB2jB,EAAE,YAEpB,OAAO,CAEX,QAAO,EAUT,QAASha,GAAKoG,EAAK/N,EAAMkiB,EAAaC,GACpC,GAAW,MAAPpU,EAAJ,CACA,GAAImF,GAAOnF,EAAI/N,EACf+N,GAAI/N,GAAQkiB,EAAYhP,GACxBnF,EAAI/N,GAAMqL,GAAY,EACtB0C,EAAI/N,GAAMwL,EAAW0H,EACjBiP,GACFA,EAAMpZ,MAAMgF,EAAK/N,EAAMkT,KAU3B,QAAShR,GAASkgB,EAAOC,GACvB,IAAKxb,EAAQub,GAAQ,MAAO,EAI5B,KAAK,GAFDE,MAEKpkB,EAAI,EAAGA,EAAIkkB,EAAM7jB,OAAQL,IAChC,IACEokB,EAAOvZ,KAAKwZ,OAAOH,EAAMlkB,KACzB,MAAOT,GACP6kB,EAAOvZ,KAAK,gCAIhB,MAAOuZ,GAAOzC,KAAKwC,GASrB,QAASG,GAAW3Z,GAClB,QAAS4Z,UAAU5Z,GAAOX,MAAM,SAAS3J,OAG3C,QAASmkB,GAAS7Z,GAChB,MAAO2Z,GAAWzf,KAAKC,UAAU6F,IAGnC,QAAS8Z,GAAe9Z,GACtB,GAAqB,gBAAVA,GAAoB,CAC7B,GAAI+Z,GAAY,EAChB,OAAO3b,GAAS4B,EAAO+Z,GAClB,GACY,gBAAV/Z,IACU,iBAAVA,IACU,mBAAVA,GAEP,MAAOA,EAGT,IAAIoL,GAAOtT,OAAOC,UAAUC,SAASvC,KAAKuK,EAG1C,OAAa,oBAAToL,EAAmC,WAC1B,mBAATA,EAAkC,UACzB,sBAATA,EACKpL,EAAM7I,KAAO,cAAgB6I,EAAM7I,KAAO,IAAM,aAElD6I,EAGT,QAASga,GAAgBha,EAAOia,GAC9B,MAAc,KAAVA,EAAoBH,EAAe9Z,GAEnClC,EAAckC,GACTlI,OAAOuM,KAAKrE,GAAOka,OAAO,SAASC,EAAKpa,GAE7C,MADAoa,GAAIpa,GAAOia,EAAgBha,EAAMD,GAAMka,EAAQ,GACxCE,OAEA5P,MAAMvM,QAAQgC,GAChBA,EAAMoa,IAAI,SAASC,GACxB,MAAOL,GAAgBK,EAAKJ,EAAQ,KAIjCH,EAAe9Z,GAGxB,QAASf,GAAmByE,EAAIuW,EAAOK,GACrC,IAAKxc,EAAc4F,GAAK,MAAOA,EAE/BuW,GAAyB,gBAAVA,GAAqBM,EAAgCN,EACpEK,EAA2B,gBAAVL,GAAqBO,EAA+BF,CAErE,IAAIG,GAAaT,EAAgBtW,EAAIuW,EAErC,OAAIJ,GAAS1f,EAAUsgB,IAAeH,EAC7Brb,EAAmByE,EAAIuW,EAAQ,GAGjCQ,EAGT,QAASzb,GAAwBqF,EAAM0V,GACrC,GAAoB,gBAAT1V,IAAqC,gBAATA,GAAmB,MAAOA,GAAKrM,UACtE,KAAKuS,MAAMvM,QAAQqG,GAAO,MAAO,EAKjC,IAHAA,EAAOA,EAAKqW,OAAO,SAAS3a,GAC1B,MAAsB,gBAARA,KAEI,IAAhBsE,EAAK3O,OAAc,MAAO,sBAG9B,IADAqkB,EAAiC,gBAAdA,GAAyBY,EAA4BZ,EACpE1V,EAAK,GAAG3O,QAAUqkB,EAAW,MAAO1V,GAAK,EAE7C,KAAK,GAAIuW,GAAWvW,EAAK3O,OAAQklB,EAAW,EAAGA,IAAY,CACzD,GAAIH,GAAapW,EAAKnL,MAAM,EAAG0hB,GAAU5D,KAAK,KAC9C,MAAIyD,EAAW/kB,OAASqkB,GACxB,MAAIa,KAAavW,EAAK3O,OAAe+kB,EAC9BA,EAAa,IAGtB,MAAO,GAGT,QAASvb,GAASqa,EAAOrd,GAcvB,QAAS2e,GAAeC,GACtB,MAAI9c,GAAQ8c,GACHA,EAAYV,IAAI,SAASC,GAC9B,MAAOQ,GAAeR,KAItBvc,EAAcgd,GACThjB,OAAOuM,KAAKyW,GAAaZ,OAAO,SAASC,EAAKY,GAMnD,MAJEZ,GAAIY,GADFC,EAAevW,KAAKsW,GACbE,EAEAJ,EAAeC,EAAYC,IAE/BZ,OAIJW,EA/BT,IAAK9c,EAAQ9B,IAAkB8B,EAAQ9B,IAAyC,IAAxBA,EAAaxG,OACnE,MAAO6jB,EAET,IAEI2B,GAFAF,EAAiBzc,EAAWrC,GAC5B+e,EAAe,UAGnB,KACEC,EAAYhhB,KAAK+L,MAAM9L,EAAUof,IACjC,MAAO4B,GACP,MAAO5B,GAwBT,MAAOsB,GAAeK,GA5lBxB,GAAI/gB,GAAYvE,EAAQ,IAEpBsF,EACgB,mBAAX3G,QACHA,OACkB,mBAAXC,GAAyBA,EAAyB,mBAATC,MAAuBA,QA0dzE8lB,EAAgC,EAEhCC,EAA+B,MAC/BG,EAA4B,EA6HhCxmB,GAAOD,SACL2J,SAAUA,EACVD,QAASA,EACTH,aAAcA,EACdC,WAAYA,EACZC,eAAgBA,EAChBtD,YAAaA,EACbL,WAAYA,EACZ8D,cAAeA,EACfC,SAAUA,EACVC,QAASA,EACTC,cAAeA,EACfyX,mBAAoBA,EACpBE,iBAAkBA,EAClBE,qBAAsBA,EACtB/W,cAAeA,EACfxC,uBAAwBA,EACxB2Z,8BAA+BA,EAC/BE,gBAAiBA,EACjBlY,KAAMA,EACNC,YAAaA,EACbC,SAAUA,EACVC,aAAcA,EACdC,OAAQA,EACRC,WAAYA,EACZC,UAAWA,EACXC,MAAOA,EACPC,iBAAkBA,EAClB4Z,oBAAqBA,EACrB3Z,gBAAiBA,EACjBC,iBAAkBA,EAClBC,SAAUA,EACVC,KAAMA,EACNzF,SAAUA,EACV4F,mBAAoBA,EACpBD,wBAAyBA,EACzBE,SAAUA,KAGTzJ,KAAKf,KAAuB,mBAAXF,QAAyBA,OAAyB,mBAATC,MAAuBA,KAAyB,mBAAXF,QAAyBA,aACxH2gB,GAAK,KAAKE,GAAG,SAASxf,EAAQzB,EAAOD,IACxC,SAAWM,GA+BX,QAAS4mB,KACP,MAAwB,mBAAb7b,WAAiD,MAArBA,SAASpC,SAAyB,GAClEoC,SAASpC,SAASE,KAG3B,QAASge,KACP,MAAwB,mBAAb9b,WAAiD,MAArBA,SAASpC,SAAyB,IAGpEoC,SAASpC,SAASme,SACrB/b,SAASpC,SAASme,OAChB/b,SAASpC,SAAS0M,SAClB,KACAtK,SAASpC,SAASoe,UACjBhc,SAASpC,SAASyR,KAAO,IAAMrP,SAASpC,SAASyR,KAAO,KAGtDrP,SAASpC,SAASme,QA/C3B,GAAI7iB,GAAQ7C,EAAQ,GAYhB2H,GACF7B,qBAAqB,EACrBgE,OAAO,GAILxE,EACgB,mBAAX3G,QACHA,OACkB,mBAAXC,GAAyBA,EAAyB,mBAATC,MAAuBA,QAGzE+mB,KAAYtiB,MACZuiB,EAAmB,IAGnBC,EAAiB,yGA6DrBne,GAASwD,OAAS,WAUhB,QAASC,GAAU2a,GACjBC,IACAC,EAAS3b,KAAKyb,GAOhB,QAASG,GAAYH,GACnB,IAAK,GAAItmB,GAAIwmB,EAASnmB,OAAS,EAAGL,GAAK,IAAKA,EACtCwmB,EAASxmB,KAAOsmB,GAClBE,EAASE,OAAO1mB,EAAG,GAQzB,QAAS2mB,KACPC,IACAJ,KAOF,QAASK,GAAepY,EAAOqY,GAC7B,GAAIlM,GAAY,IAChB,KAAIkM,GAAkB5e,EAAS7B,oBAA/B,CAGA,IAAK,GAAIrG,KAAKwmB,GACZ,GAAIA,EAASlR,eAAetV,GAC1B,IACEwmB,EAASxmB,GAAGoE,MAAM,MAAOqK,GAAOuK,OAAOmN,EAAO/lB,KAAK0D,UAAW,KAC9D,MAAOijB,GACPnM,EAAYmM,EAKlB,GAAInM,EACF,KAAMA,IAiBV,QAASoM,GAAsBjjB,EAAKwL,EAAK0X,EAAQC,EAAO7Y,GACtD,GAAII,GAAQ,KAERmM,EAAYxX,EAAMgF,aAAaiG,GAAMA,EAAGzN,MAAQyN,EAEhDpL,EAAUG,EAAMgF,aAAarE,GAAOA,EAAId,QAAUc,CAEtD,IAAIojB,EACFjf,EAASwG,kBAAkB0Y,oCACzBD,EACA5X,EACA0X,EACAhkB,GAEFokB,QACK,IAAIzM,GAAaxX,EAAMmF,QAAQqS,GAMpCnM,EAAQvG,EAASwG,kBAAkBkM,GACnCiM,EAAepY,GAAO,OACjB,CACL,GAOI6Y,GAPAxf,GACFyH,IAAKA,EACL+K,KAAM2M,EACNzM,OAAQ0M,GAGNplB,EAAOiL,MAGX,IAAkC,uBAA3BpK,SAASvC,KAAK6C,GAAgC,CACnD,GAAIqkB,GAASrkB,EAAQ4e,MAAMwE,EACvBiB,KACFxlB,EAAOwlB,EAAO,GACdrkB,EAAUqkB,EAAO,IAIrBxf,EAASgF,KAAOsZ,EAEhB3X,GACE3M,KAAMA,EACNmB,QAASA,EACTsM,IAAKwW,IACLtX,OAAQ3G,IAEV+e,EAAepY,GAAO,GAGxB,QAAI8Y,GACKA,EAAmBnjB,MAAM/E,KAAMyE,WAM1C,QAASyiB,KACHiB,IAGJD,EAAqB1hB,EAAQlF,QAC7BkF,EAAQlF,QAAUqmB,EAClBQ,GAA2B,GAG7B,QAASZ,KACFY,IAGL3hB,EAAQlF,QAAU4mB,EAClBC,GAA2B,EAC3BD,EAAqBxa,QAGvB,QAASsa,KACP,GAAII,GAAsBN,EACxBO,EAAYC,CACdA,GAAW,KACXR,EAAqB,KACrB5V,EAAgB,KAChBsV,EAAeziB,MAAM,MAAOqjB,GAAqB,GAAOzO,OAAO0O,IAUjE,QAAShc,GAAO2C,EAAIuZ,GAClB,GAAIhkB,GAAOuiB,EAAO/lB,KAAK0D,UAAW,EAClC,IAAIqjB,EAAoB,CACtB,GAAI5V,IAAkBlD,EACpB,MAEAgZ,KAIJ,GAAI5Y,GAAQvG,EAASwG,kBAAkBL,EAevC,IAdA8Y,EAAqB1Y,EACrB8C,EAAgBlD,EAChBsZ,EAAW/jB,EAMX+O,WAAW,WACLpB,IAAkBlD,GACpBgZ,KAED5Y,EAAMoZ,WAAa,IAAO,GAEzBD,KAAY,EACd,KAAMvZ,GA9LV,GA0DIkZ,GAAoBC,EA1DpBhB,KACFmB,EAAW,KACXpW,EAAgB,KAChB4V,EAAqB,IAkMvB,OAHAzb,GAAOC,UAAYA,EACnBD,EAAO+a,YAAcA,EACrB/a,EAAO6B,UAAYoZ,EACZjb,KAsDTxD,EAASwG,kBAAoB,WA4C3B,QAASoZ,GAA+BzZ,GACtC,GAAwB,mBAAbA,GAAGI,OAA0BJ,EAAGI,MAA3C,CAiBA,IAAK,GALDsZ,GACAC,EACAC,EAZAtQ,EAAS,0IACTuQ,EAAQ,wHAGRC,EAAQ,6JAERC,EAAY,gDACZC,EAAa,gCACbC,EAAQja,EAAGI,MAAMzE,MAAM,MACvByE,KAMKzO,GAFO,sBAAsBoZ,KAAK/K,EAAGpL,SAEjC,GAAGiU,EAAIoR,EAAMjoB,OAAQL,EAAIkX,IAAKlX,EAAG,CAC5C,GAAKgoB,EAAQrQ,EAAOyB,KAAKkP,EAAMtoB,IAAM,CACnC,GAAIuoB,GAAWP,EAAM,IAAqC,IAA/BA,EAAM,GAAGtR,QAAQ,UACxC8R,EAASR,EAAM,IAAmC,IAA7BA,EAAM,GAAGtR,QAAQ,OACtC8R,KAAWT,EAAWM,EAAWjP,KAAK4O,EAAM,OAE9CA,EAAM,GAAKD,EAAS,GACpBC,EAAM,GAAKD,EAAS,GACpBC,EAAM,GAAKD,EAAS,IAEtBE,GACE1Y,IAAMgZ,EAAsB,KAAXP,EAAM,GACvBlb,KAAMkb,EAAM,IAAM5B,EAClBxiB,KAAM2kB,GAAYP,EAAM,OACxB1N,KAAM0N,EAAM,IAAMA,EAAM,GAAK,KAC7BxN,OAAQwN,EAAM,IAAMA,EAAM,GAAK,UAE5B,IAAKA,EAAQE,EAAM9O,KAAKkP,EAAMtoB,IACnCioB,GACE1Y,IAAKyY,EAAM,GACXlb,KAAMkb,EAAM,IAAM5B,EAClBxiB,QACA0W,MAAO0N,EAAM,GACbxN,OAAQwN,EAAM,IAAMA,EAAM,GAAK,UAE5B,CAAA,KAAKA,EAAQG,EAAM/O,KAAKkP,EAAMtoB,KAsBnC,QArBA,IAAIwoB,GAASR,EAAM,IAAMA,EAAM,GAAGtR,QAAQ,aACtC8R,KAAWT,EAAWK,EAAUhP,KAAK4O,EAAM,MAE7CA,EAAM,GAAKD,EAAS,GACpBC,EAAM,GAAKD,EAAS,GACpBC,EAAM,GAAK,MACI,IAANhoB,GAAYgoB,EAAM,IAAiC,mBAApB3Z,GAAGoa,eAK3Cha,EAAM,GAAG+L,OAASnM,EAAGoa,aAAe,GAEtCR,GACE1Y,IAAKyY,EAAM,GACXlb,KAAMkb,EAAM,IAAM5B,EAClBxiB,KAAMokB,EAAM,GAAKA,EAAM,GAAGhe,MAAM,QAChCsQ,KAAM0N,EAAM,IAAMA,EAAM,GAAK,KAC7BxN,OAAQwN,EAAM,IAAMA,EAAM,GAAK,MAUnC,IAJKC,EAAQnb,MAAQmb,EAAQ3N,OAC3B2N,EAAQnb,KAAOsZ,GAGb6B,EAAQ1Y,KAAoC,UAA7B0Y,EAAQ1Y,IAAIhD,OAAO,EAAG,GAAgB,CAMvD,GAAIpB,GAAM,GAAIqL,eAKd,IAJArL,EAAIgU,KAAK,MAAO8I,EAAQ1Y,KAAK,GAC7BpE,EAAIkU,KAAK,MAGU,MAAflU,EAAI6L,OAAgB,CACtB,GAAIyK,GAAStW,EAAIud,cAAgB,EAIjCjH,GAASA,EAAO5d,WAGhB,IAAI8kB,GAAalH,EAAOI,MAAM,+BAG9B,IAAI8G,EAAY,CACd,GAAIC,GAAmBD,EAAW,EAIC,OAA/BC,EAAiBC,OAAO,KAC1BD,EAAmB5C,IAAsB4C,EAAiB/kB,MAAM,IAKlEokB,EAAQ1Y,IAAMqZ,EAAiB/kB,MAAM,QAK3C4K,EAAM5D,KAAKod,GAGb,MAAKxZ,GAAMpO,QAKTyB,KAAMuM,EAAGvM,KACTmB,QAASoL,EAAGpL;AACZsM,IAAKwW,IACLtX,MAAOA,GAPA,MAwBX,QAAS2Y,GAAoC1N,EAAWnK,EAAK0X,EAAQhkB,GACnE,GAAI6lB,IACFvZ,IAAKA,EACL+K,KAAM2M,EAGR,IAAI6B,EAAQvZ,KAAOuZ,EAAQxO,KAAM,CAO/B,GANAZ,EAAUmO,YAAa,EAElBiB,EAAQhc,OACXgc,EAAQhc,KAAOsZ,GAGb1M,EAAUjL,MAAMpO,OAAS,GACvBqZ,EAAUjL,MAAM,GAAGc,MAAQuZ,EAAQvZ,IAAK,CAC1C,GAAImK,EAAUjL,MAAM,GAAG6L,OAASwO,EAAQxO,KACtC,OAAO,CACF,KACJZ,EAAUjL,MAAM,GAAG6L,MACpBZ,EAAUjL,MAAM,GAAG3B,OAASgc,EAAQhc,KAGpC,MADA4M,GAAUjL,MAAM,GAAG6L,KAAOwO,EAAQxO,MAC3B,EAOb,MAFAZ,GAAUjL,MAAMsa,QAAQD,GACxBpP,EAAUsP,SAAU,GACb,EAKT,MAHEtP,GAAUmO,YAAa,GAGlB,EAYT,QAASoB,GAAsC5a,EAAIuW,GASjD,IACE,GALAoD,GACAkB,EALEC,EAAe,qEACjB1a,KACA2a,KACAC,GAAY,EAMRC,EAAOL,EAAsCM,OACjDD,IAASD,EACTC,EAAOA,EAAKC,OAEZ,GAAID,IAAS5a,GAAqB4a,IAASphB,EAASwD,OAApD,CAkBA,GAbAwd,GACE3Z,IAAK,KACLzC,KAAMsZ,EACN9L,KAAM,KACNE,OAAQ,MAGN8O,EAAKxnB,KACPonB,EAAKpc,KAAOwc,EAAKxnB,MACPkmB,EAAQmB,EAAa/P,KAAKkQ,EAAK3mB,eACzCumB,EAAKpc,KAAOkb,EAAM,IAGK,mBAAdkB,GAAKpc,KACd,IACEoc,EAAKpc,KAAOkb,EAAM9D,MAAMsF,UAAU,EAAGxB,EAAM9D,MAAMxN,QAAQ,MACzD,MAAOnX,IAGP6pB,EAAM,GAAKE,GACbD,GAAY,EAEZD,EAAM,GAAKE,IAAQ,EAGrB7a,EAAM5D,KAAKqe,GAGTtE,GAGFnW,EAAMiY,OAAO,EAAG9B,EAGlB,IAAI3U,IACFnO,KAAMuM,EAAGvM,KACTmB,QAASoL,EAAGpL,QACZsM,IAAKwW,IACLtX,MAAOA,EAQT,OANA2Y,GACEnX,EACA5B,EAAGob,WAAapb,EAAGqb,SACnBrb,EAAGiM,MAAQjM,EAAGsb,WACdtb,EAAGpL,SAAWoL,EAAGub,aAEZ3Z,EAQT,QAASvB,GAAkBL,EAAIuW,GAC7B,GAAInW,GAAQ,IACZmW,GAAiB,MAATA,EAAgB,GAAKA,CAE7B,KAEE,GADAnW,EAAQqZ,EAA+BzZ,GAErC,MAAOI,GAET,MAAOlP,GACP,GAAI2I,EAASmC,MACX,KAAM9K,GAIV,IAEE,GADAkP,EAAQwa,EAAsC5a,EAAIuW,EAAQ,GAExD,MAAOnW,GAET,MAAOlP,GACP,GAAI2I,EAASmC,MACX,KAAM9K,GAGV,OACEuC,KAAMuM,EAAGvM,KACTmB,QAASoL,EAAGpL,QACZsM,IAAKwW,KAOT,MAHArX,GAAkB0Y,oCAAsCA,EACxD1Y,EAAkBoZ,+BAAiCA,EAE5CpZ,KAGT5P,EAAOD,QAAUqJ,IAEd9H,KAAKf,KAAuB,mBAAXF,QAAyBA,OAAyB,mBAATC,MAAuBA,KAAyB,mBAAXF,QAAyBA,aACxHmF,EAAI,IAAIwb,IAAI,SAAStf,EAAQzB,EAAOD,GAevC,QAAS6X,GAAQmT,EAAUC,GACzB,IAAK,GAAI9pB,GAAI,EAAGA,EAAI6pB,EAASxpB,SAAUL,EACrC,GAAI6pB,EAAS7pB,KAAO8pB,EAAQ,MAAO9pB,EAErC,UAGF,QAAS8E,GAAU+K,EAAKka,EAAUC,EAAQC,GACxC,MAAOplB,MAAKC,UAAU+K,EAAKqa,EAAWH,EAAUE,GAAgBD,GAIlE,QAASG,GAAexf,GACtB,GAAI+K,IAEFjH,MAAO9D,EAAM8D,MACbxL,QAAS0H,EAAM1H,QACfnB,KAAM6I,EAAM7I,KAGd,KAAK,GAAI9B,KAAK2K,GACRlI,OAAOC,UAAU4S,eAAelV,KAAKuK,EAAO3K,KAC9C0V,EAAI1V,GAAK2K,EAAM3K,GAInB,OAAO0V,GAGT,QAASwU,GAAWH,EAAUE,GAC5B,GAAIxb,MACAO,IAWJ,OATqB,OAAjBib,IACFA,EAAgB,SAASvf,EAAKC,GAC5B,MAAI8D,GAAM,KAAO9D,EACR,eAEF,eAAiBqE,EAAKnL,MAAM,EAAG6S,EAAQjI,EAAO9D,IAAQgX,KAAK,KAAO,MAItE,SAASjX,EAAKC,GACnB,GAAI8D,EAAMpO,OAAS,EAAG,CACpB,GAAI+pB,GAAU1T,EAAQjI,EAAOpP,OAC5B+qB,EAAU3b,EAAMiY,OAAO0D,EAAU,GAAK3b,EAAM5D,KAAKxL,OACjD+qB,EAAUpb,EAAK0X,OAAO0D,EAASC,EAAAA,EAAU3f,GAAOsE,EAAKnE,KAAKH,IAEtDgM,EAAQjI,EAAO9D,KAClBA,EAAQsf,EAAc7pB,KAAKf,KAAMqL,EAAKC,QAGxC8D,GAAM5D,KAAKF,EAGb,OAAmB,OAAZof,EACHpf,YAAiB1K,OAAQkqB,EAAexf,GAASA,EACjDof,EAAS3pB,KAAKf,KAAMqL,EAAKC,IA5DjC9L,EAAUC,EAAOD,QAAUiG,EAC3BjG,EAAQyrB,aAAeJ,OA+DjBpK,IAAI,SAASvf,EAAQzB,EAAOD,GAwBlC,QAAS0rB,GAAQC,EAAG5O,GAClB,GAAI6O,IAAW,MAAJD,IAAmB,MAAJ5O,GACtB8O,GAAOF,GAAK,KAAO5O,GAAK,KAAO6O,GAAO,GAC1C,OAAQC,IAAO,GAAa,MAAND,EAMxB,QAASE,GAAcrI,EAAKsI,GAC1B,MAAQtI,IAAOsI,EAAQtI,IAAS,GAAKsI,EAMvC,QAASC,GAAOC,EAAGhrB,EAAG2jB,EAAG+G,EAAG7qB,EAAGH,GAC7B,MAAO+qB,GAAQI,EAAcJ,EAAQA,EAAQzqB,EAAGgrB,GAAIP,EAAQC,EAAGhrB,IAAKG,GAAI8jB,GAE1E,QAASsH,GAAMjrB,EAAG2jB,EAAGjB,EAAGwI,EAAGR,EAAG7qB,EAAGH,GAC/B,MAAOqrB,GAAQpH,EAAIjB,GAAOiB,EAAIuH,EAAIlrB,EAAG2jB,EAAG+G,EAAG7qB,EAAGH,GAEhD,QAASyrB,GAAMnrB,EAAG2jB,EAAGjB,EAAGwI,EAAGR,EAAG7qB,EAAGH,GAC/B,MAAOqrB,GAAQpH,EAAIuH,EAAMxI,GAAKwI,EAAIlrB,EAAG2jB,EAAG+G,EAAG7qB,EAAGH,GAEhD,QAAS0rB,GAAMprB,EAAG2jB,EAAGjB,EAAGwI,EAAGR,EAAG7qB,EAAGH,GAC/B,MAAOqrB,GAAOpH,EAAIjB,EAAIwI,EAAGlrB,EAAG2jB,EAAG+G,EAAG7qB,EAAGH,GAEvC,QAAS2rB,GAAMrrB,EAAG2jB,EAAGjB,EAAGwI,EAAGR,EAAG7qB,EAAGH,GAC/B,MAAOqrB,GAAOrI,GAAKiB,GAAKuH,GAAIlrB,EAAG2jB,EAAG+G,EAAG7qB,EAAGH,GAM1C,QAAS4rB,GAAQZ,EAAGhJ,GAElBgJ,EAAEhJ,GAAO,IAAM,KAASA,EAAM,GAC9BgJ,GAAKhJ,EAAM,KAAQ,GAAM,GAAK,IAAMA,CAEpC,IAAIxhB,GACAqrB,EACAC,EACAC,EACAC,EACA1rB,EAAI,WACJ2jB,aACAjB,cACAwI,EAAI,SAER,KAAKhrB,EAAI,EAAGA,EAAIwqB,EAAEnqB,OAAQL,GAAK,GAC7BqrB,EAAOvrB,EACPwrB,EAAO7H,EACP8H,EAAO/I,EACPgJ,EAAOR,EAEPlrB,EAAIirB,EAAMjrB,EAAG2jB,EAAGjB,EAAGwI,EAAGR,EAAExqB,GAAI,cAC5BgrB,EAAID,EAAMC,EAAGlrB,EAAG2jB,EAAGjB,EAAGgI,EAAExqB,EAAI,GAAI,eAChCwiB,EAAIuI,EAAMvI,EAAGwI,EAAGlrB,EAAG2jB,EAAG+G,EAAExqB,EAAI,GAAI,GAAI,WACpCyjB,EAAIsH,EAAMtH,EAAGjB,EAAGwI,EAAGlrB,EAAG0qB,EAAExqB,EAAI,GAAI,gBAChCF,EAAIirB,EAAMjrB,EAAG2jB,EAAGjB,EAAGwI,EAAGR,EAAExqB,EAAI,GAAI,cAChCgrB,EAAID,EAAMC,EAAGlrB,EAAG2jB,EAAGjB,EAAGgI,EAAExqB,EAAI,GAAI,GAAI,YACpCwiB,EAAIuI,EAAMvI,EAAGwI,EAAGlrB,EAAG2jB,EAAG+G,EAAExqB,EAAI,GAAI,gBAChCyjB,EAAIsH,EAAMtH,EAAGjB,EAAGwI,EAAGlrB,EAAG0qB,EAAExqB,EAAI,GAAI,cAChCF,EAAIirB,EAAMjrB,EAAG2jB,EAAGjB,EAAGwI,EAAGR,EAAExqB,EAAI,GAAI,EAAG,YACnCgrB,EAAID,EAAMC,EAAGlrB,EAAG2jB,EAAGjB,EAAGgI,EAAExqB,EAAI,GAAI,gBAChCwiB,EAAIuI,EAAMvI,EAAGwI,EAAGlrB,EAAG2jB,EAAG+G,EAAExqB,EAAI,IAAK,WACjCyjB,EAAIsH,EAAMtH,EAAGjB,EAAGwI,EAAGlrB,EAAG0qB,EAAExqB,EAAI,IAAK,gBACjCF,EAAIirB,EAAMjrB,EAAG2jB,EAAGjB,EAAGwI,EAAGR,EAAExqB,EAAI,IAAK,EAAG,YACpCgrB,EAAID,EAAMC,EAAGlrB,EAAG2jB,EAAGjB,EAAGgI,EAAExqB,EAAI,IAAK,cACjCwiB,EAAIuI,EAAMvI,EAAGwI,EAAGlrB,EAAG2jB,EAAG+G,EAAExqB,EAAI,IAAK,gBACjCyjB,EAAIsH,EAAMtH,EAAGjB,EAAGwI,EAAGlrB,EAAG0qB,EAAExqB,EAAI,IAAK,GAAI,YAErCF,EAAImrB,EAAMnrB,EAAG2jB,EAAGjB,EAAGwI,EAAGR,EAAExqB,EAAI,GAAI,cAChCgrB,EAAIC,EAAMD,EAAGlrB,EAAG2jB,EAAGjB,EAAGgI,EAAExqB,EAAI,GAAI,eAChCwiB,EAAIyI,EAAMzI,EAAGwI,EAAGlrB,EAAG2jB,EAAG+G,EAAExqB,EAAI,IAAK,GAAI,WACrCyjB,EAAIwH,EAAMxH,EAAGjB,EAAGwI,EAAGlrB,EAAG0qB,EAAExqB,GAAI,eAC5BF,EAAImrB,EAAMnrB,EAAG2jB,EAAGjB,EAAGwI,EAAGR,EAAExqB,EAAI,GAAI,cAChCgrB,EAAIC,EAAMD,EAAGlrB,EAAG2jB,EAAGjB,EAAGgI,EAAExqB,EAAI,IAAK,EAAG,UACpCwiB,EAAIyI,EAAMzI,EAAGwI,EAAGlrB,EAAG2jB,EAAG+G,EAAExqB,EAAI,IAAK,eACjCyjB,EAAIwH,EAAMxH,EAAGjB,EAAGwI,EAAGlrB,EAAG0qB,EAAExqB,EAAI,GAAI,eAChCF,EAAImrB,EAAMnrB,EAAG2jB,EAAGjB,EAAGwI,EAAGR,EAAExqB,EAAI,GAAI,EAAG,WACnCgrB,EAAIC,EAAMD,EAAGlrB,EAAG2jB,EAAGjB,EAAGgI,EAAExqB,EAAI,IAAK,eACjCwiB,EAAIyI,EAAMzI,EAAGwI,EAAGlrB,EAAG2jB,EAAG+G,EAAExqB,EAAI,GAAI,eAChCyjB,EAAIwH,EAAMxH,EAAGjB,EAAGwI,EAAGlrB,EAAG0qB,EAAExqB,EAAI,GAAI,GAAI,YACpCF,EAAImrB,EAAMnrB,EAAG2jB,EAAGjB,EAAGwI,EAAGR,EAAExqB,EAAI,IAAK,eACjCgrB,EAAIC,EAAMD,EAAGlrB,EAAG2jB,EAAGjB,EAAGgI,EAAExqB,EAAI,GAAI,aAChCwiB,EAAIyI,EAAMzI,EAAGwI,EAAGlrB,EAAG2jB,EAAG+G,EAAExqB,EAAI,GAAI,GAAI,YACpCyjB,EAAIwH,EAAMxH,EAAGjB,EAAGwI,EAAGlrB,EAAG0qB,EAAExqB,EAAI,IAAK,gBAEjCF,EAAIorB,EAAMprB,EAAG2jB,EAAGjB,EAAGwI,EAAGR,EAAExqB,EAAI,GAAI,WAChCgrB,EAAIE,EAAMF,EAAGlrB,EAAG2jB,EAAGjB,EAAGgI,EAAExqB,EAAI,GAAI,gBAChCwiB,EAAI0I,EAAM1I,EAAGwI,EAAGlrB,EAAG2jB,EAAG+G,EAAExqB,EAAI,IAAK,GAAI,YACrCyjB,EAAIyH,EAAMzH,EAAGjB,EAAGwI,EAAGlrB,EAAG0qB,EAAExqB,EAAI,IAAK,cACjCF,EAAIorB,EAAMprB,EAAG2jB,EAAGjB,EAAGwI,EAAGR,EAAExqB,EAAI,GAAI,eAChCgrB,EAAIE,EAAMF,EAAGlrB,EAAG2jB,EAAGjB,EAAGgI,EAAExqB,EAAI,GAAI,GAAI,YACpCwiB,EAAI0I,EAAM1I,EAAGwI,EAAGlrB,EAAG2jB,EAAG+G,EAAExqB,EAAI,GAAI,eAChCyjB,EAAIyH,EAAMzH,EAAGjB,EAAGwI,EAAGlrB,EAAG0qB,EAAExqB,EAAI,IAAK,gBACjCF,EAAIorB,EAAMprB,EAAG2jB,EAAGjB,EAAGwI,EAAGR,EAAExqB,EAAI,IAAK,EAAG,WACpCgrB,EAAIE,EAAMF,EAAGlrB,EAAG2jB,EAAGjB,EAAGgI,EAAExqB,GAAI,eAC5BwiB,EAAI0I,EAAM1I,EAAGwI,EAAGlrB,EAAG2jB,EAAG+G,EAAExqB,EAAI,GAAI,eAChCyjB,EAAIyH,EAAMzH,EAAGjB,EAAGwI,EAAGlrB,EAAG0qB,EAAExqB,EAAI,GAAI,GAAI,UACpCF,EAAIorB,EAAMprB,EAAG2jB,EAAGjB,EAAGwI,EAAGR,EAAExqB,EAAI,GAAI,cAChCgrB,EAAIE,EAAMF,EAAGlrB,EAAG2jB,EAAGjB,EAAGgI,EAAExqB,EAAI,IAAK,eACjCwiB,EAAI0I,EAAM1I,EAAGwI,EAAGlrB,EAAG2jB,EAAG+G,EAAExqB,EAAI,IAAK,GAAI,WACrCyjB,EAAIyH,EAAMzH,EAAGjB,EAAGwI,EAAGlrB,EAAG0qB,EAAExqB,EAAI,GAAI,eAEhCF,EAAIqrB,EAAMrrB,EAAG2jB,EAAGjB,EAAGwI,EAAGR,EAAExqB,GAAI,cAC5BgrB,EAAIG,EAAMH,EAAGlrB,EAAG2jB,EAAGjB,EAAGgI,EAAExqB,EAAI,GAAI,GAAI,YACpCwiB,EAAI2I,EAAM3I,EAAGwI,EAAGlrB,EAAG2jB,EAAG+G,EAAExqB,EAAI,IAAK,gBACjCyjB,EAAI0H,EAAM1H,EAAGjB,EAAGwI,EAAGlrB,EAAG0qB,EAAExqB,EAAI,GAAI,cAChCF,EAAIqrB,EAAMrrB,EAAG2jB,EAAGjB,EAAGwI,EAAGR,EAAExqB,EAAI,IAAK,EAAG,YACpCgrB,EAAIG,EAAMH,EAAGlrB,EAAG2jB,EAAGjB,EAAGgI,EAAExqB,EAAI,GAAI,gBAChCwiB,EAAI2I,EAAM3I,EAAGwI,EAAGlrB,EAAG2jB,EAAG+G,EAAExqB,EAAI,IAAK,aACjCyjB,EAAI0H,EAAM1H,EAAGjB,EAAGwI,EAAGlrB,EAAG0qB,EAAExqB,EAAI,GAAI,gBAChCF,EAAIqrB,EAAMrrB,EAAG2jB,EAAGjB,EAAGwI,EAAGR,EAAExqB,EAAI,GAAI,EAAG,YACnCgrB,EAAIG,EAAMH,EAAGlrB,EAAG2jB,EAAGjB,EAAGgI,EAAExqB,EAAI,IAAK,cACjCwiB,EAAI2I,EAAM3I,EAAGwI,EAAGlrB,EAAG2jB,EAAG+G,EAAExqB,EAAI,GAAI,gBAChCyjB,EAAI0H,EAAM1H,EAAGjB,EAAGwI,EAAGlrB,EAAG0qB,EAAExqB,EAAI,IAAK,GAAI,YACrCF,EAAIqrB,EAAMrrB,EAAG2jB,EAAGjB,EAAGwI,EAAGR,EAAExqB,EAAI,GAAI,cAChCgrB,EAAIG,EAAMH,EAAGlrB,EAAG2jB,EAAGjB,EAAGgI,EAAExqB,EAAI,IAAK,gBACjCwiB,EAAI2I,EAAM3I,EAAGwI,EAAGlrB,EAAG2jB,EAAG+G,EAAExqB,EAAI,GAAI,GAAI,WACpCyjB,EAAI0H,EAAM1H,EAAGjB,EAAGwI,EAAGlrB,EAAG0qB,EAAExqB,EAAI,GAAI,eAEhCF,EAAIyqB,EAAQzqB,EAAGurB,GACf5H,EAAI8G,EAAQ9G,EAAG6H,GACf9I,EAAI+H,EAAQ/H,EAAG+I,GACfP,EAAIT,EAAQS,EAAGQ,EAEjB,QAAQ1rB,EAAG2jB,EAAGjB,EAAGwI,GAMnB,QAASS,GAAUvH,GACjB,GAAIlkB,GACAokB,EAAS,GACTsH,EAA0B,GAAfxH,EAAM7jB,MACrB,KAAKL,EAAI,EAAGA,EAAI0rB,EAAU1rB,GAAK,EAC7BokB,GAAUC,OAAOsH,aAAczH,EAAMlkB,GAAK,KAAQA,EAAI,GAAO,IAE/D,OAAOokB,GAOT,QAASwH,GAAU1H,GACjB,GAAIlkB,GACAokB,IAEJ,KADAA,GAAQF,EAAM7jB,QAAU,GAAK,GAAK0M,OAC7B/M,EAAI,EAAGA,EAAIokB,EAAO/jB,OAAQL,GAAK,EAClCokB,EAAOpkB,GAAK,CAEd,IAAI6rB,GAAyB,EAAf3H,EAAM7jB,MACpB,KAAKL,EAAI,EAAGA,EAAI6rB,EAAS7rB,GAAK,EAC5BokB,EAAOpkB,GAAK,KAAiC,IAA1BkkB,EAAM4H,WAAW9rB,EAAI,KAAeA,EAAI,EAE7D,OAAOokB,GAMT,QAAS2H,GAAQpsB,GACf,MAAO8rB,GAAUL,EAAQQ,EAAUjsB,GAAe,EAAXA,EAAEU,SAM3C,QAAS2rB,GAAYthB,EAAKzG,GACxB,GAAIjE,GAIAuf,EAHA0M,EAAOL,EAAUlhB,GACjBwhB,KACAC,IAMJ,KAJAD,EAAK,IAAMC,EAAK,IAAMpf,OAClBkf,EAAK5rB,OAAS,KAChB4rB,EAAOb,EAAQa,EAAmB,EAAbvhB,EAAIrK,SAEtBL,EAAI,EAAGA,EAAI,GAAIA,GAAK,EACvBksB,EAAKlsB,GAAe,UAAVisB,EAAKjsB,GACfmsB,EAAKnsB,GAAe,WAAVisB,EAAKjsB,EAGjB,OADAuf,GAAO6L,EAAQc,EAAKlT,OAAO4S,EAAU3nB,IAAQ,IAAoB,EAAdA,EAAK5D,QACjDorB,EAAUL,EAAQe,EAAKnT,OAAOuG,GAAO,MAM9C,QAAS6M,GAASlI,GAChB,GAEIsG,GACAxqB,EAHAqsB,EAAS,mBACTjI,EAAS,EAGb,KAAKpkB,EAAI,EAAGA,EAAIkkB,EAAM7jB,OAAQL,GAAK,EACjCwqB,EAAItG,EAAM4H,WAAW9rB,GACrBokB,GAAUiI,EAAOxD,OAAQ2B,IAAM,EAAK,IAAQ6B,EAAOxD,OAAW,GAAJ2B,EAE5D,OAAOpG,GAMT,QAASkI,GAAapI,GACpB,MAAOqI,UAASxa,mBAAmBmS,IAMrC,QAASsI,GAAO7sB,GACd,MAAOosB,GAAQO,EAAa3sB,IAE9B,QAAS8sB,GAAO9sB,GACd,MAAOysB,GAASI,EAAO7sB,IAEzB,QAAS+sB,GAAWhH,EAAGsF,GACrB,MAAOgB,GAAYM,EAAa5G,GAAI4G,EAAatB,IAEnD,QAAS2B,GAAWjH,EAAGsF,GACrB,MAAOoB,GAASM,EAAWhH,EAAGsF,IAGhC,QAAS7iB,GAAIykB,EAAQliB,EAAKmiB,GACxB,MAAKniB,GAMAmiB,EAGEH,EAAWhiB,EAAKkiB,GAFdD,EAAWjiB,EAAKkiB,GANlBC,EAGEL,EAAOI,GAFLH,EAAOG,GAUpB9tB,EAAOD,QAAUsJ,YAEN,EAAE,EAAE,EAAE,IAAI","file":"raven.min.js"} \ No newline at end of file diff --git a/dist/ember,require/raven.js b/dist/ember,require/raven.js index ad42a64c84c8..085add5796a1 100644 --- a/dist/ember,require/raven.js +++ b/dist/ember,require/raven.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.25.0 (80dffad) | github.com/getsentry/raven-js */ +/*! Raven.js 3.25.1 (b6f3c7a) | github.com/getsentry/raven-js */ /* * Includes TraceKit @@ -257,7 +257,7 @@ Raven.prototype = { // webpack (using a build step causes webpack #1617). Grunt verifies that // this value matches package.json during build. // See: https://github.com/getsentry/raven-js/issues/465 - VERSION: '3.25.0', + VERSION: '3.25.1', debug: false, @@ -1566,8 +1566,8 @@ Raven.prototype = { var hasPushAndReplaceState = !isChromePackagedApp && _window.history && - history.pushState && - history.replaceState; + _window.history.pushState && + _window.history.replaceState; if (autoBreadcrumbs.location && hasPushAndReplaceState) { // TODO: remove onpopstate handler on uninstall() var oldOnPopState = _window.onpopstate; @@ -1596,8 +1596,8 @@ Raven.prototype = { }; }; - fill(history, 'pushState', historyReplacementFunction, wrappedBuiltIns); - fill(history, 'replaceState', historyReplacementFunction, wrappedBuiltIns); + fill(_window.history, 'pushState', historyReplacementFunction, wrappedBuiltIns); + fill(_window.history, 'replaceState', historyReplacementFunction, wrappedBuiltIns); } if (autoBreadcrumbs.console && 'console' in _window && console.log) { @@ -1887,7 +1887,7 @@ Raven.prototype = { if (this._hasNavigator && _navigator.userAgent) { httpData.headers = { - 'User-Agent': navigator.userAgent + 'User-Agent': _navigator.userAgent }; } @@ -3062,6 +3062,16 @@ function getLocationHref() { function getLocationOrigin() { if (typeof document === 'undefined' || document.location == null) return ''; + + // Oh dear IE10... + if (!document.location.origin) { + document.location.origin = + document.location.protocol + + '//' + + document.location.hostname + + (document.location.port ? ':' + document.location.port : ''); + } + return document.location.origin; } diff --git a/dist/ember,require/raven.min.js b/dist/ember,require/raven.min.js index b36a4672c9fe..357788a82b33 100644 --- a/dist/ember,require/raven.min.js +++ b/dist/ember,require/raven.min.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.25.0 (80dffad) | github.com/getsentry/raven-js */ -!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.Raven=a()}}(function(){var a;return function b(a,c,d){function e(g,h){if(!c[g]){if(!a[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};a[g][0].call(k.exports,function(b){var c=a[g][1][b];return e(c?c:b)},k,k.exports,b,a,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;gthis.k.maxBreadcrumbs&&this.u.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.r.push([a,b]),this.n&&this.F(),this},setUserContext:function(a){return this.j.user=a,this},setExtraContext:function(a){return this.Z("extra",a),this},setTagsContext:function(a){return this.Z("tags",a),this},clearContext:function(){return this.j={},this},getContext:function(){return JSON.parse(h(this.j))},setEnvironment:function(a){return this.k.environment=a,this},setRelease:function(a){return this.k.release=a,this},setDataCallback:function(a){var b=this.k.dataCallback;return this.k.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.k.breadcrumbCallback;return this.k.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.k.shouldSendCallback;return this.k.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.k.transport=a,this},lastException:function(){return this.d},lastEventId:function(){return this.f},isSetup:function(){return!!this.a&&(!!this.g||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.z("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=R.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(S){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.H;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.j.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.J(this.G(c)),h=S.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(S.head||S.body).appendChild(h)}},L:function(){var a=this;this.m+=1,setTimeout(function(){a.m-=1})},$:function(a,b){var c,d;if(this.b){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),S.createEvent?(c=S.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=S.createEventObject(),c.eventType=a);for(d in b)A(b,d)&&(c[d]=b[d]);if(S.createEvent)S.dispatchEvent(c);else try{S.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},_:function(a){var b=this;return function(c){if(b.aa=null,b.v!==c){b.v=c;var d;try{d=E(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ba:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.aa;g||a._("input")(c),clearTimeout(g),a.aa=setTimeout(function(){a.aa=null},b)}}},ca:function(a,b){var c=H(this.w.href),d=H(b),e=H(a);this.x=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},C:function(){var a=this;a.da=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.M?a.da.apply(this.O,arguments):a.da.apply(this,arguments)}},Q:function(){this.da&&(Function.prototype.toString=this.da)},D:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.ca(b.x,c+""),a.apply(this,arguments)}};I(history,"pushState",j,d),I(history,"replaceState",j,d)}if(c.console&&"console"in R&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};w(["debug","info","warn","error","log"],function(a,b){O(console,b,k)})}},R:function(){for(var a;this.t.length;){a=this.t.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},S:function(){for(var a in this.q)this.p[a]=this.q[a]},F:function(){var a=this;w(this.r,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},G:function(a){var b=Q.exec(a),c={},d=7;try{for(;d--;)c[P[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.k.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},J:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},A:function(){this.m||this.V.apply(this,arguments)},V:function(a,b){var c=this.X(a,b);this.$("handle",{stackInfo:a,options:b}),this.fa(a.name,a.message,a.url,a.lineno,c,b)},X:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(w(a.stack,function(b,e){var f=c.ga(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.u,0)}),this.j.user&&(a.user=this.j.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),a=this.pa(a),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||v(a[b]))&&delete a[b]}),s(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!v(a)&&(!s(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.ma()?void this.z("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function F(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&l(b))for(c=b.split(/\s+/),f=0;fc?Q(a,b-1):d}function R(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?X:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function S(a,b){function c(a){return m(a)?a.map(function(a){return c(a)}):k(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!m(b)||m(b)&&0===b.length)return a;var d,e=A(b),f="********";try{d=JSON.parse(T(a))}catch(g){return a}return c(d)}var T=a(9),U="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},V=3,W=51200,X=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isDOMError:g,isDOMException:h,isUndefined:i,isFunction:j,isPlainObject:k,isString:l,isArray:m,isEmptyObject:n,supportsErrorEvent:o,supportsDOMError:p,supportsDOMException:q,supportsFetch:r,supportsReferrerPolicy:s,supportsPromiseRejectionEvent:t,wrappedCallback:u,each:v,objectMerge:w,truncate:y,objectFrozen:x,hasKey:z,joinRegExp:A,urlencode:B,uuid4:D,htmlTreeAsString:E,htmlElementAsString:F,isSameException:I,isSameStacktrace:J,parseUrl:C,fill:K,safeJoin:L,serializeException:Q,serializeKeysForMessage:R,sanitize:S}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{9:9}],8:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}function e(){return"undefined"==typeof document||null==document.location?"":document.location.origin}var f=a(7),g={collectWindowErrors:!0,debug:!1},h="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},i=[].slice,j="?",k=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;g.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function e(a,b){var c=null;if(!b||g.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(i.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,h,i){var l=null,m=f.isErrorEvent(i)?i.error:i,n=f.isErrorEvent(a)?a.message:a;if(v)g.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&f.isError(m))l=g.computeStackTrace(m),e(l,!0);else{var p,r={url:b,line:c,column:h},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(k);p&&(s=p[1],n=p[2])}r.func=j,l={name:s,message:n,url:d(),stack:[r]},e(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=h.onerror,h.onerror=l,r=!0)}function n(){r&&(h.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,e.apply(null,[a,!1].concat(b))}function p(a,b){var c=i.call(arguments,1);if(v){if(u===a)return;o()}var d=g.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),g.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,f,g=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,h=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,i=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,k=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,l=/\((\S*)(?::(\d+))(?::(\d+))\)/,m=a.stack.split("\n"),n=[],o=(/^(.*) is undefined$/.exec(a.message),0),p=m.length;o eval")>-1;r&&(b=k.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==o||c[5]||"undefined"==typeof a.columnNumber||(n[0].column=a.columnNumber+1),f={url:c[3],func:c[1]||j,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}if(!f.func&&f.line&&(f.func=j),f.url&&"blob:"===f.url.substr(0,5)){var s=new XMLHttpRequest;if(s.open("GET",f.url,!1),s.send(null),200===s.status){var t=s.responseText||"";t=t.slice(-300);var u=t.match(/\/\/# sourceMappingURL=(.*)$/);if(u){var v=u[1];"~"===v.charAt(0)&&(v=e()+v.slice(1)),f.url=v.slice(0,-4)}}}n.push(f)}return n.length?{name:a.name,message:a.message,url:d(),stack:n}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=j),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,e){for(var h,i,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==f&&o!==g.report){if(i={url:null,func:j,line:null,column:null},o.name?i.func=o.name:(h=k.exec(o.toString()))&&(i.func=h[1]),"undefined"==typeof i.func)try{i.func=h.input.substring(0,h.input.indexOf("{"))}catch(p){}m[""+o]?n=!0:m[""+o]=!0,l.push(i)}e&&l.splice(0,e);var q={name:a.name,message:a.message,url:d(), -stack:l};return b(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),q}function f(b,e){var f=null;e=null==e?0:+e;try{if(f=a(b))return f}catch(h){if(g.debug)throw h}try{if(f=c(b,e+1))return f}catch(h){if(g.debug)throw h}return{name:b.name,message:b.message,url:d()}}return f.augmentStackTraceWithInitialElement=b,f.computeStackTraceFromStackProp=a,f}(),b.exports=g}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{7:7}],9:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}],10:[function(a,b,c){function d(a,b){var c=(65535&a)+(65535&b),d=(a>>16)+(b>>16)+(c>>16);return d<<16|65535&c}function e(a,b){return a<>>32-b}function f(a,b,c,f,g,h){return d(e(d(d(b,a),d(f,h)),g),c)}function g(a,b,c,d,e,g,h){return f(b&c|~b&d,a,b,e,g,h)}function h(a,b,c,d,e,g,h){return f(b&d|c&~d,a,b,e,g,h)}function i(a,b,c,d,e,g,h){return f(b^c^d,a,b,e,g,h)}function j(a,b,c,d,e,g,h){return f(c^(b|~d),a,b,e,g,h)}function k(a,b){a[b>>5]|=128<>>9<<4)+14]=b;var c,e,f,k,l,m=1732584193,n=-271733879,o=-1732584194,p=271733878;for(c=0;c>5]>>>b%32&255);return c}function m(a){var b,c=[];for(c[(a.length>>2)-1]=void 0,b=0;b>5]|=(255&a.charCodeAt(b/8))<16&&(e=k(e,8*a.length)),c=0;c<16;c+=1)f[c]=909522486^e[c],g[c]=1549556828^e[c];return d=k(f.concat(m(b)),512+8*b.length),l(k(g.concat(d),640))}function p(a){var b,c,d="0123456789abcdef",e="";for(c=0;c>>4&15)+d.charAt(15&b);return e}function q(a){return unescape(encodeURIComponent(a))}function r(a){return n(q(a))}function s(a){return p(r(a))}function t(a,b){return o(q(a),q(b))}function u(a,b){return p(t(a,b))}function v(a,b,c){return b?c?t(b,a):u(b,a):c?r(a):s(a)}b.exports=v},{}]},{},[6,1,2])(6)}); +/*! Raven.js 3.25.1 (b6f3c7a) | github.com/getsentry/raven-js */ +!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.Raven=a()}}(function(){var a;return function b(a,c,d){function e(g,h){if(!c[g]){if(!a[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};a[g][0].call(k.exports,function(b){var c=a[g][1][b];return e(c?c:b)},k,k.exports,b,a,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;gthis.k.maxBreadcrumbs&&this.u.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.r.push([a,b]),this.n&&this.F(),this},setUserContext:function(a){return this.j.user=a,this},setExtraContext:function(a){return this.Z("extra",a),this},setTagsContext:function(a){return this.Z("tags",a),this},clearContext:function(){return this.j={},this},getContext:function(){return JSON.parse(h(this.j))},setEnvironment:function(a){return this.k.environment=a,this},setRelease:function(a){return this.k.release=a,this},setDataCallback:function(a){var b=this.k.dataCallback;return this.k.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.k.breadcrumbCallback;return this.k.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.k.shouldSendCallback;return this.k.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.k.transport=a,this},lastException:function(){return this.d},lastEventId:function(){return this.f},isSetup:function(){return!!this.a&&(!!this.g||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.z("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=R.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(S){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.H;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.j.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.J(this.G(c)),h=S.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(S.head||S.body).appendChild(h)}},L:function(){var a=this;this.m+=1,setTimeout(function(){a.m-=1})},$:function(a,b){var c,d;if(this.b){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),S.createEvent?(c=S.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=S.createEventObject(),c.eventType=a);for(d in b)A(b,d)&&(c[d]=b[d]);if(S.createEvent)S.dispatchEvent(c);else try{S.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},_:function(a){var b=this;return function(c){if(b.aa=null,b.v!==c){b.v=c;var d;try{d=E(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ba:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.aa;g||a._("input")(c),clearTimeout(g),a.aa=setTimeout(function(){a.aa=null},b)}}},ca:function(a,b){var c=H(this.w.href),d=H(b),e=H(a);this.x=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},C:function(){var a=this;a.da=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.M?a.da.apply(this.O,arguments):a.da.apply(this,arguments)}},Q:function(){this.da&&(Function.prototype.toString=this.da)},D:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.ca(b.x,c+""),a.apply(this,arguments)}};I(R.history,"pushState",j,d),I(R.history,"replaceState",j,d)}if(c.console&&"console"in R&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};w(["debug","info","warn","error","log"],function(a,b){O(console,b,k)})}},R:function(){for(var a;this.t.length;){a=this.t.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},S:function(){for(var a in this.q)this.p[a]=this.q[a]},F:function(){var a=this;w(this.r,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},G:function(a){var b=Q.exec(a),c={},d=7;try{for(;d--;)c[P[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.k.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},J:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},A:function(){this.m||this.V.apply(this,arguments)},V:function(a,b){var c=this.X(a,b);this.$("handle",{stackInfo:a,options:b}),this.fa(a.name,a.message,a.url,a.lineno,c,b)},X:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(w(a.stack,function(b,e){var f=c.ga(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.u,0)}),this.j.user&&(a.user=this.j.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),a=this.pa(a),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||v(a[b]))&&delete a[b]}),s(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!v(a)&&(!s(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.ma()?void this.z("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function F(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&l(b))for(c=b.split(/\s+/),f=0;fc?Q(a,b-1):d}function R(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?X:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function S(a,b){function c(a){return m(a)?a.map(function(a){return c(a)}):k(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!m(b)||m(b)&&0===b.length)return a;var d,e=A(b),f="********";try{d=JSON.parse(T(a))}catch(g){return a}return c(d)}var T=a(9),U="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},V=3,W=51200,X=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isDOMError:g,isDOMException:h,isUndefined:i,isFunction:j,isPlainObject:k,isString:l,isArray:m,isEmptyObject:n,supportsErrorEvent:o,supportsDOMError:p,supportsDOMException:q,supportsFetch:r,supportsReferrerPolicy:s,supportsPromiseRejectionEvent:t,wrappedCallback:u,each:v,objectMerge:w,truncate:y,objectFrozen:x,hasKey:z,joinRegExp:A,urlencode:B,uuid4:D,htmlTreeAsString:E,htmlElementAsString:F,isSameException:I,isSameStacktrace:J,parseUrl:C,fill:K,safeJoin:L,serializeException:Q,serializeKeysForMessage:R,sanitize:S}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{9:9}],8:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}function e(){return"undefined"==typeof document||null==document.location?"":(document.location.origin||(document.location.origin=document.location.protocol+"//"+document.location.hostname+(document.location.port?":"+document.location.port:"")),document.location.origin)}var f=a(7),g={collectWindowErrors:!0,debug:!1},h="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},i=[].slice,j="?",k=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;g.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function e(a,b){var c=null;if(!b||g.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(i.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,h,i){var l=null,m=f.isErrorEvent(i)?i.error:i,n=f.isErrorEvent(a)?a.message:a;if(v)g.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&f.isError(m))l=g.computeStackTrace(m),e(l,!0);else{var p,r={url:b,line:c,column:h},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(k);p&&(s=p[1],n=p[2])}r.func=j,l={name:s,message:n,url:d(),stack:[r]},e(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=h.onerror,h.onerror=l,r=!0)}function n(){r&&(h.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,e.apply(null,[a,!1].concat(b))}function p(a,b){var c=i.call(arguments,1);if(v){if(u===a)return;o()}var d=g.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),g.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,f,g=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,h=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,i=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,k=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,l=/\((\S*)(?::(\d+))(?::(\d+))\)/,m=a.stack.split("\n"),n=[],o=(/^(.*) is undefined$/.exec(a.message),0),p=m.length;o eval")>-1;r&&(b=k.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==o||c[5]||"undefined"==typeof a.columnNumber||(n[0].column=a.columnNumber+1),f={url:c[3],func:c[1]||j,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}if(!f.func&&f.line&&(f.func=j),f.url&&"blob:"===f.url.substr(0,5)){var s=new XMLHttpRequest;if(s.open("GET",f.url,!1),s.send(null),200===s.status){var t=s.responseText||"";t=t.slice(-300);var u=t.match(/\/\/# sourceMappingURL=(.*)$/);if(u){var v=u[1];"~"===v.charAt(0)&&(v=e()+v.slice(1)),f.url=v.slice(0,-4)}}}n.push(f)}return n.length?{name:a.name,message:a.message,url:d(),stack:n}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=j),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,e){for(var h,i,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==f&&o!==g.report){if(i={url:null,func:j,line:null,column:null},o.name?i.func=o.name:(h=k.exec(o.toString()))&&(i.func=h[1]),"undefined"==typeof i.func)try{ +i.func=h.input.substring(0,h.input.indexOf("{"))}catch(p){}m[""+o]?n=!0:m[""+o]=!0,l.push(i)}e&&l.splice(0,e);var q={name:a.name,message:a.message,url:d(),stack:l};return b(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),q}function f(b,e){var f=null;e=null==e?0:+e;try{if(f=a(b))return f}catch(h){if(g.debug)throw h}try{if(f=c(b,e+1))return f}catch(h){if(g.debug)throw h}return{name:b.name,message:b.message,url:d()}}return f.augmentStackTraceWithInitialElement=b,f.computeStackTraceFromStackProp=a,f}(),b.exports=g}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{7:7}],9:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}],10:[function(a,b,c){function d(a,b){var c=(65535&a)+(65535&b),d=(a>>16)+(b>>16)+(c>>16);return d<<16|65535&c}function e(a,b){return a<>>32-b}function f(a,b,c,f,g,h){return d(e(d(d(b,a),d(f,h)),g),c)}function g(a,b,c,d,e,g,h){return f(b&c|~b&d,a,b,e,g,h)}function h(a,b,c,d,e,g,h){return f(b&d|c&~d,a,b,e,g,h)}function i(a,b,c,d,e,g,h){return f(b^c^d,a,b,e,g,h)}function j(a,b,c,d,e,g,h){return f(c^(b|~d),a,b,e,g,h)}function k(a,b){a[b>>5]|=128<>>9<<4)+14]=b;var c,e,f,k,l,m=1732584193,n=-271733879,o=-1732584194,p=271733878;for(c=0;c>5]>>>b%32&255);return c}function m(a){var b,c=[];for(c[(a.length>>2)-1]=void 0,b=0;b>5]|=(255&a.charCodeAt(b/8))<16&&(e=k(e,8*a.length)),c=0;c<16;c+=1)f[c]=909522486^e[c],g[c]=1549556828^e[c];return d=k(f.concat(m(b)),512+8*b.length),l(k(g.concat(d),640))}function p(a){var b,c,d="0123456789abcdef",e="";for(c=0;c>>4&15)+d.charAt(15&b);return e}function q(a){return unescape(encodeURIComponent(a))}function r(a){return n(q(a))}function s(a){return p(r(a))}function t(a,b){return o(q(a),q(b))}function u(a,b){return p(t(a,b))}function v(a,b,c){return b?c?t(b,a):u(b,a):c?r(a):s(a)}b.exports=v},{}]},{},[6,1,2])(6)}); //# sourceMappingURL=raven.min.js.map \ No newline at end of file diff --git a/dist/ember,require/raven.min.js.map b/dist/ember,require/raven.min.js.map index 3dd184233df0..d3f0b329484e 100644 --- a/dist/ember,require/raven.min.js.map +++ b/dist/ember,require/raven.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","emberPlugin","Ember","_oldOnError","onerror","error","captureException","RSVP","on","reason","extra","context","captureMessage","addPlugin","6","2","requirePlugin","wrap","deep","3","RavenConfigError","message","name","prototype","constructor","4","utils","wrapMethod","console","level","callback","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","msg","safeJoin","data","logger","Function","apply","7","5","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","sanitizeKeys","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isErrorEvent","isDOMError","isDOMException","isError","isObject","isPlainObject","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","sanitize","wrapConsoleMethod","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","config","dsn","options","_logDebug","globalOptions","key","value","setDSN","push","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","toString","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","substr","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","func","undefined","_before","wrapped","_ignoreNextOnError","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","T","event","unhandledPromiseRejection","B","_promiseRejectionHandler","bind","addEventListener","P","removeEventListener","ex","trimHeadFrames","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","U","currentOptions","exKeys","Object","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","setDataCallback","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","L","setTimeout","$","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","_","evtName","_keypressTimeout","target","category","ba","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","ca","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","C","_originalFunctionToString","Q","D","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","type","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","E","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","R","builtin","S","F","installer","concat","G","str","m","exec","allowSecretKey","J","port","A","V","stackInfo","_triggerEvent","_processException","lineno","X","frame","_normalizeFrame","in_app","ga","stackInfoUrl","normalized","filename","line","colno","column","function","fa","prefixedMessage","exception","values","culprit","ha","request","Referer","breadcrumbs","_trimBreadcrumbs","ia","urlProp","urlProps","ja","httpData","userAgent","User-Agent","referrer","y","_backoffDuration","_backoffStart","ma","na","current","last","oa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Y","baseData","project","platform","_getHttpData","serverName","server_name","_sanitizeData","forEach","random","_sendProcessedPayload","pa","ra","qa","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","sa","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","open","setRequestHeader","send","ta","hash","evaluated","z","Z","setUser","setReleaseContext","10","8","9","RavenConstructor","_Raven","noConflict","Client","what","supportsErrorEvent","ErrorEvent","supportsDOMError","DOMError","supportsDOMException","DOMException","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","wrappedCallback","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","sanitizeMask","safeInput","o_O","getLocationHref","getLocationOrigin","origin","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","responseText","sourceMaps","sourceMapAddress","charAt","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","string","raw"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file +{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","emberPlugin","Ember","_oldOnError","onerror","error","captureException","RSVP","on","reason","extra","context","captureMessage","addPlugin","6","2","requirePlugin","wrap","deep","3","RavenConfigError","message","name","prototype","constructor","4","utils","wrapMethod","console","level","callback","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","msg","safeJoin","data","logger","Function","apply","7","5","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","sanitizeKeys","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isErrorEvent","isDOMError","isDOMException","isError","isObject","isPlainObject","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","sanitize","wrapConsoleMethod","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","config","dsn","options","_logDebug","globalOptions","key","value","setDSN","push","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","toString","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","substr","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","func","undefined","_before","wrapped","_ignoreNextOnError","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","T","event","unhandledPromiseRejection","B","_promiseRejectionHandler","bind","addEventListener","P","removeEventListener","ex","trimHeadFrames","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","U","currentOptions","exKeys","Object","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","setDataCallback","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","L","setTimeout","$","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","_","evtName","_keypressTimeout","target","category","ba","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","ca","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","C","_originalFunctionToString","Q","D","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","type","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","E","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","R","builtin","S","F","installer","concat","G","str","m","exec","allowSecretKey","J","port","A","V","stackInfo","_triggerEvent","_processException","lineno","X","frame","_normalizeFrame","in_app","ga","stackInfoUrl","normalized","filename","line","colno","column","function","fa","prefixedMessage","exception","values","culprit","ha","request","Referer","breadcrumbs","_trimBreadcrumbs","ia","urlProp","urlProps","ja","httpData","userAgent","User-Agent","referrer","y","_backoffDuration","_backoffStart","ma","na","current","last","oa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Y","baseData","project","platform","_getHttpData","serverName","server_name","_sanitizeData","forEach","random","_sendProcessedPayload","pa","ra","qa","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","sa","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","open","setRequestHeader","send","ta","hash","evaluated","z","Z","setUser","setReleaseContext","10","8","9","RavenConstructor","_Raven","noConflict","Client","what","supportsErrorEvent","ErrorEvent","supportsDOMError","DOMError","supportsDOMException","DOMException","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","wrappedCallback","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","sanitizeMask","safeInput","o_O","getLocationHref","getLocationOrigin","origin","hostname","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","responseText","sourceMaps","sourceMapAddress","charAt","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","string","raw"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file diff --git a/dist/ember,vue/raven.js b/dist/ember,vue/raven.js index 43abbf26c4db..e36450c0aac1 100644 --- a/dist/ember,vue/raven.js +++ b/dist/ember,vue/raven.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.25.0 (80dffad) | github.com/getsentry/raven-js */ +/*! Raven.js 3.25.1 (b6f3c7a) | github.com/getsentry/raven-js */ /* * Includes TraceKit @@ -290,7 +290,7 @@ Raven.prototype = { // webpack (using a build step causes webpack #1617). Grunt verifies that // this value matches package.json during build. // See: https://github.com/getsentry/raven-js/issues/465 - VERSION: '3.25.0', + VERSION: '3.25.1', debug: false, @@ -1599,8 +1599,8 @@ Raven.prototype = { var hasPushAndReplaceState = !isChromePackagedApp && _window.history && - history.pushState && - history.replaceState; + _window.history.pushState && + _window.history.replaceState; if (autoBreadcrumbs.location && hasPushAndReplaceState) { // TODO: remove onpopstate handler on uninstall() var oldOnPopState = _window.onpopstate; @@ -1629,8 +1629,8 @@ Raven.prototype = { }; }; - fill(history, 'pushState', historyReplacementFunction, wrappedBuiltIns); - fill(history, 'replaceState', historyReplacementFunction, wrappedBuiltIns); + fill(_window.history, 'pushState', historyReplacementFunction, wrappedBuiltIns); + fill(_window.history, 'replaceState', historyReplacementFunction, wrappedBuiltIns); } if (autoBreadcrumbs.console && 'console' in _window && console.log) { @@ -1920,7 +1920,7 @@ Raven.prototype = { if (this._hasNavigator && _navigator.userAgent) { httpData.headers = { - 'User-Agent': navigator.userAgent + 'User-Agent': _navigator.userAgent }; } @@ -3095,6 +3095,16 @@ function getLocationHref() { function getLocationOrigin() { if (typeof document === 'undefined' || document.location == null) return ''; + + // Oh dear IE10... + if (!document.location.origin) { + document.location.origin = + document.location.protocol + + '//' + + document.location.hostname + + (document.location.port ? ':' + document.location.port : ''); + } + return document.location.origin; } diff --git a/dist/ember,vue/raven.min.js b/dist/ember,vue/raven.min.js index 7738aa40c553..b7a9ac85ac00 100644 --- a/dist/ember,vue/raven.min.js +++ b/dist/ember,vue/raven.min.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.25.0 (80dffad) | github.com/getsentry/raven-js */ -!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.Raven=a()}}(function(){return function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};b[g][0].call(k.exports,function(a){var c=b[g][1][a];return e(c?c:a)},k,k.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;g":"anonymous component")+(a._isVue&&a.$options.__file?" at "+a.$options.__file:"")}function e(a,b){if(b=b||window.Vue,b&&b.config){var c=b.config.errorHandler;b.config.errorHandler=function(b,e,f){var g={};"[object Object]"===Object.prototype.toString.call(e)&&(g.componentName=d(e),g.propsData=e.$options.propsData),"undefined"!=typeof f&&(g.lifecycleHook=f),a.captureException(b,{extra:g}),"function"==typeof c&&c.call(this,b,e,f)}}}b.exports=e,a(6).addPlugin(b.exports)},{6:6}],3:[function(a,b,c){function d(a){this.name="RavenConfigError",this.message=a}d.prototype=new Error,d.prototype.constructor=d,b.exports=d},{}],4:[function(a,b,c){var d=a(7),e=function(a,b,c){var e=a[b],f=a;if(b in a){var g="warn"===b?"warning":b;a[b]=function(){var a=[].slice.call(arguments),h=d.safeJoin(a," "),i={level:g,logger:"console",extra:{arguments:a}};"assert"===b?a[0]===!1&&(h="Assertion failed: "+(d.safeJoin(a.slice(1)," ")||"console.assert"),i.extra.arguments=a.slice(1),c&&c(h,i)):c&&c(h,i),e&&Function.prototype.apply.call(e,f,a)}}};b.exports={wrapMethod:e}},{7:7}],5:[function(a,b,c){(function(c){function d(){return+new Date}function e(a,b){return s(b)?function(c){return b(c,a)}:b}function f(){this.a=!("object"!=typeof JSON||!JSON.stringify),this.b=!r(S),this.c=!r(T),this.d=null,this.e=null,this.f=null,this.g=null,this.h=null,this.i=null,this.j={},this.k={release:R.SENTRY_RELEASE&&R.SENTRY_RELEASE.id,logger:"javascript",ignoreErrors:[],ignoreUrls:[],whitelistUrls:[],includePaths:[],headers:null,collectWindowErrors:!0,captureUnhandledRejections:!0,maxMessageLength:0,maxUrlLength:250,stackTraceLimit:50,autoBreadcrumbs:!0,instrument:!0,sampleRate:1,sanitizeKeys:[]},this.l={method:"POST",keepalive:!0,referrerPolicy:K()?"origin":""},this.m=0,this.n=!1,this.o=Error.stackTraceLimit,this.p=R.console||{},this.q={},this.r=[],this.s=d(),this.t=[],this.u=[],this.v=null,this.w=R.location,this.x=this.w&&this.w.href,this.y();for(var a in this.p)this.q[a]=this.p[a]}var g=a(8),h=a(9),i=a(10),j=a(3),k=a(7),l=k.isErrorEvent,m=k.isDOMError,n=k.isDOMException,o=k.isError,p=k.isObject,q=k.isPlainObject,r=k.isUndefined,s=k.isFunction,t=k.isString,u=k.isArray,v=k.isEmptyObject,w=k.each,x=k.objectMerge,y=k.truncate,z=k.objectFrozen,A=k.hasKey,B=k.joinRegExp,C=k.urlencode,D=k.uuid4,E=k.htmlTreeAsString,F=k.isSameException,G=k.isSameStacktrace,H=k.parseUrl,I=k.fill,J=k.supportsFetch,K=k.supportsReferrerPolicy,L=k.serializeKeysForMessage,M=k.serializeException,N=k.sanitize,O=a(4).wrapMethod,P="source protocol user pass host port path".split(" "),Q=/^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/,R="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},S=R.document,T=R.navigator;f.prototype={VERSION:"3.25.0",debug:!1,TraceKit:g,config:function(a,b){var c=this;if(c.g)return this.z("error","Error: Raven has already been configured"),c;if(!a)return c;var d=c.k;b&&w(b,function(a,b){"tags"===a||"extra"===a||"user"===a?c.j[a]=b:d[a]=b}),c.setDSN(a),d.ignoreErrors.push(/^Script error\.?$/),d.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/),d.ignoreErrors=B(d.ignoreErrors),d.ignoreUrls=!!d.ignoreUrls.length&&B(d.ignoreUrls),d.whitelistUrls=!!d.whitelistUrls.length&&B(d.whitelistUrls),d.includePaths=B(d.includePaths),d.maxBreadcrumbs=Math.max(0,Math.min(d.maxBreadcrumbs||100,100));var e={xhr:!0,console:!0,dom:!0,location:!0,sentry:!0},f=d.autoBreadcrumbs;"[object Object]"==={}.toString.call(f)?f=x(e,f):f!==!1&&(f=e),d.autoBreadcrumbs=f;var h={tryCatch:!0},i=d.instrument;return"[object Object]"==={}.toString.call(i)?i=x(h,i):i!==!1&&(i=h),d.instrument=i,g.collectWindowErrors=!!d.collectWindowErrors,c},install:function(){var a=this;return a.isSetup()&&!a.n&&(g.report.subscribe(function(){a.A.apply(a,arguments)}),a.k.captureUnhandledRejections&&a.B(),a.C(),a.k.instrument&&a.k.instrument.tryCatch&&a.D(),a.k.autoBreadcrumbs&&a.E(),a.F(),a.n=!0),Error.stackTraceLimit=a.k.stackTraceLimit,this},setDSN:function(a){var b=this,c=b.G(a),d=c.path.lastIndexOf("/"),e=c.path.substr(1,d);b.H=a,b.h=c.user,b.I=c.pass&&c.pass.substr(1),b.i=c.path.substr(d+1),b.g=b.J(c),b.K=b.g+"/"+e+"api/"+b.i+"/store/",this.y()},context:function(a,b,c){return s(a)&&(c=b||[],b=a,a=void 0),this.wrap(a,b).apply(this,c)},wrap:function(a,b,c){function d(){var d=[],f=arguments.length,g=!a||a&&a.deep!==!1;for(c&&s(c)&&c.apply(this,arguments);f--;)d[f]=g?e.wrap(a,arguments[f]):arguments[f];try{return b.apply(this,d)}catch(h){throw e.L(),e.captureException(h,a),h}}var e=this;if(r(b)&&!s(a))return a;if(s(a)&&(b=a,a=void 0),!s(b))return b;try{if(b.M)return b;if(b.N)return b.N}catch(f){return b}for(var g in b)A(b,g)&&(d[g]=b[g]);return d.prototype=b.prototype,b.N=d,d.M=!0,d.O=b,d},uninstall:function(){return g.report.uninstall(),this.P(),this.Q(),this.R(),this.S(),Error.stackTraceLimit=this.o,this.n=!1,this},T:function(a){this.z("debug","Raven caught unhandled promise rejection:",a),this.captureException(a.reason,{extra:{unhandledPromiseRejection:!0}})},B:function(){return this.T=this.T.bind(this),R.addEventListener&&R.addEventListener("unhandledrejection",this.T),this},P:function(){return R.removeEventListener&&R.removeEventListener("unhandledrejection",this.T),this},captureException:function(a,b){if(b=x({trimHeadFrames:0},b?b:{}),l(a)&&a.error)a=a.error;else{if(m(a)||n(a)){var c=a.name||(m(a)?"DOMError":"DOMException"),d=a.message?c+": "+a.message:c;return this.captureMessage(d,x(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}))}if(o(a))a=a;else{if(!q(a))return this.captureMessage(a,x(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}));b=this.U(b,a),a=new Error(b.message)}}this.d=a;try{var e=g.computeStackTrace(a);this.V(e,b)}catch(f){if(a!==f)throw f}return this},U:function(a,b){var c=Object.keys(b).sort(),d=x(a,{message:"Non-Error exception captured with keys: "+L(c),fingerprint:[i(c)],extra:a.extra||{}});return d.extra.W=M(b),d},captureMessage:function(a,b){if(!this.k.ignoreErrors.test||!this.k.ignoreErrors.test(a)){b=b||{},a+="";var c,d=x({message:a},b);try{throw new Error(a)}catch(e){c=e}c.name=null;var f=g.computeStackTrace(c),h=u(f.stack)&&f.stack[1];h&&"Raven.captureException"===h.func&&(h=f.stack[2]);var i=h&&h.url||"";if((!this.k.ignoreUrls.test||!this.k.ignoreUrls.test(i))&&(!this.k.whitelistUrls.test||this.k.whitelistUrls.test(i))){if(this.k.stacktrace||b&&b.stacktrace){d.fingerprint=null==d.fingerprint?a:d.fingerprint,b=x({trimHeadFrames:0},b),b.trimHeadFrames+=1;var j=this.X(f,b);d.stacktrace={frames:j.reverse()}}return d.fingerprint&&(d.fingerprint=u(d.fingerprint)?d.fingerprint:[d.fingerprint]),this.Y(d),this}}},captureBreadcrumb:function(a){var b=x({timestamp:d()/1e3},a);if(s(this.k.breadcrumbCallback)){var c=this.k.breadcrumbCallback(b);if(p(c)&&!v(c))b=c;else if(c===!1)return this}return this.u.push(b),this.u.length>this.k.maxBreadcrumbs&&this.u.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.r.push([a,b]),this.n&&this.F(),this},setUserContext:function(a){return this.j.user=a,this},setExtraContext:function(a){return this.Z("extra",a),this},setTagsContext:function(a){return this.Z("tags",a),this},clearContext:function(){return this.j={},this},getContext:function(){return JSON.parse(h(this.j))},setEnvironment:function(a){return this.k.environment=a,this},setRelease:function(a){return this.k.release=a,this},setDataCallback:function(a){var b=this.k.dataCallback;return this.k.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.k.breadcrumbCallback;return this.k.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.k.shouldSendCallback;return this.k.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.k.transport=a,this},lastException:function(){return this.d},lastEventId:function(){return this.f},isSetup:function(){return!!this.a&&(!!this.g||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.z("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=R.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(S){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.H;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.j.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.J(this.G(c)),h=S.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(S.head||S.body).appendChild(h)}},L:function(){var a=this;this.m+=1,setTimeout(function(){a.m-=1})},$:function(a,b){var c,d;if(this.b){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),S.createEvent?(c=S.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=S.createEventObject(),c.eventType=a);for(d in b)A(b,d)&&(c[d]=b[d]);if(S.createEvent)S.dispatchEvent(c);else try{S.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},_:function(a){var b=this;return function(c){if(b.aa=null,b.v!==c){b.v=c;var d;try{d=E(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ba:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.aa;g||a._("input")(c),clearTimeout(g),a.aa=setTimeout(function(){a.aa=null},b)}}},ca:function(a,b){var c=H(this.w.href),d=H(b),e=H(a);this.x=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},C:function(){var a=this;a.da=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.M?a.da.apply(this.O,arguments):a.da.apply(this,arguments)}},Q:function(){this.da&&(Function.prototype.toString=this.da)},D:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.ca(b.x,c+""),a.apply(this,arguments)}};I(history,"pushState",j,d),I(history,"replaceState",j,d)}if(c.console&&"console"in R&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};w(["debug","info","warn","error","log"],function(a,b){O(console,b,k)})}},R:function(){for(var a;this.t.length;){a=this.t.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},S:function(){for(var a in this.q)this.p[a]=this.q[a]},F:function(){var a=this;w(this.r,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},G:function(a){var b=Q.exec(a),c={},d=7;try{for(;d--;)c[P[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.k.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},J:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},A:function(){this.m||this.V.apply(this,arguments)},V:function(a,b){var c=this.X(a,b);this.$("handle",{stackInfo:a,options:b}),this.fa(a.name,a.message,a.url,a.lineno,c,b)},X:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(w(a.stack,function(b,e){var f=c.ga(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.u,0)}),this.j.user&&(a.user=this.j.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),a=this.pa(a),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||v(a[b]))&&delete a[b]}),s(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!v(a)&&(!s(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.ma()?void this.z("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function F(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&l(b))for(c=b.split(/\s+/),f=0;fc?Q(a,b-1):d}function R(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?X:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function S(a,b){function c(a){return m(a)?a.map(function(a){return c(a)}):k(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!m(b)||m(b)&&0===b.length)return a;var d,e=A(b),f="********";try{d=JSON.parse(T(a))}catch(g){return a}return c(d)}var T=a(9),U="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},V=3,W=51200,X=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isDOMError:g,isDOMException:h,isUndefined:i,isFunction:j,isPlainObject:k,isString:l,isArray:m,isEmptyObject:n,supportsErrorEvent:o,supportsDOMError:p,supportsDOMException:q,supportsFetch:r,supportsReferrerPolicy:s,supportsPromiseRejectionEvent:t,wrappedCallback:u,each:v,objectMerge:w,truncate:y,objectFrozen:x,hasKey:z,joinRegExp:A,urlencode:B,uuid4:D,htmlTreeAsString:E,htmlElementAsString:F,isSameException:I,isSameStacktrace:J,parseUrl:C,fill:K,safeJoin:L,serializeException:Q,serializeKeysForMessage:R,sanitize:S}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{9:9}],8:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}function e(){return"undefined"==typeof document||null==document.location?"":document.location.origin}var f=a(7),g={collectWindowErrors:!0,debug:!1},h="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},i=[].slice,j="?",k=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;g.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function e(a,b){var c=null;if(!b||g.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(i.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,h,i){var l=null,m=f.isErrorEvent(i)?i.error:i,n=f.isErrorEvent(a)?a.message:a;if(v)g.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&f.isError(m))l=g.computeStackTrace(m),e(l,!0);else{var p,r={url:b,line:c,column:h},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(k);p&&(s=p[1],n=p[2])}r.func=j,l={name:s,message:n,url:d(),stack:[r]},e(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=h.onerror,h.onerror=l,r=!0)}function n(){r&&(h.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,e.apply(null,[a,!1].concat(b))}function p(a,b){var c=i.call(arguments,1);if(v){if(u===a)return;o()}var d=g.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),g.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,f,g=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,h=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,i=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,k=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,l=/\((\S*)(?::(\d+))(?::(\d+))\)/,m=a.stack.split("\n"),n=[],o=(/^(.*) is undefined$/.exec(a.message),0),p=m.length;o eval")>-1;r&&(b=k.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==o||c[5]||"undefined"==typeof a.columnNumber||(n[0].column=a.columnNumber+1),f={url:c[3],func:c[1]||j,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}if(!f.func&&f.line&&(f.func=j),f.url&&"blob:"===f.url.substr(0,5)){var s=new XMLHttpRequest;if(s.open("GET",f.url,!1),s.send(null),200===s.status){var t=s.responseText||"";t=t.slice(-300);var u=t.match(/\/\/# sourceMappingURL=(.*)$/);if(u){var v=u[1];"~"===v.charAt(0)&&(v=e()+v.slice(1)),f.url=v.slice(0,-4)}}}n.push(f)}return n.length?{name:a.name,message:a.message,url:d(),stack:n}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=j),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,e){ -for(var h,i,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==f&&o!==g.report){if(i={url:null,func:j,line:null,column:null},o.name?i.func=o.name:(h=k.exec(o.toString()))&&(i.func=h[1]),"undefined"==typeof i.func)try{i.func=h.input.substring(0,h.input.indexOf("{"))}catch(p){}m[""+o]?n=!0:m[""+o]=!0,l.push(i)}e&&l.splice(0,e);var q={name:a.name,message:a.message,url:d(),stack:l};return b(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),q}function f(b,e){var f=null;e=null==e?0:+e;try{if(f=a(b))return f}catch(h){if(g.debug)throw h}try{if(f=c(b,e+1))return f}catch(h){if(g.debug)throw h}return{name:b.name,message:b.message,url:d()}}return f.augmentStackTraceWithInitialElement=b,f.computeStackTraceFromStackProp=a,f}(),b.exports=g}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{7:7}],9:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}],10:[function(a,b,c){function d(a,b){var c=(65535&a)+(65535&b),d=(a>>16)+(b>>16)+(c>>16);return d<<16|65535&c}function e(a,b){return a<>>32-b}function f(a,b,c,f,g,h){return d(e(d(d(b,a),d(f,h)),g),c)}function g(a,b,c,d,e,g,h){return f(b&c|~b&d,a,b,e,g,h)}function h(a,b,c,d,e,g,h){return f(b&d|c&~d,a,b,e,g,h)}function i(a,b,c,d,e,g,h){return f(b^c^d,a,b,e,g,h)}function j(a,b,c,d,e,g,h){return f(c^(b|~d),a,b,e,g,h)}function k(a,b){a[b>>5]|=128<>>9<<4)+14]=b;var c,e,f,k,l,m=1732584193,n=-271733879,o=-1732584194,p=271733878;for(c=0;c>5]>>>b%32&255);return c}function m(a){var b,c=[];for(c[(a.length>>2)-1]=void 0,b=0;b>5]|=(255&a.charCodeAt(b/8))<16&&(e=k(e,8*a.length)),c=0;c<16;c+=1)f[c]=909522486^e[c],g[c]=1549556828^e[c];return d=k(f.concat(m(b)),512+8*b.length),l(k(g.concat(d),640))}function p(a){var b,c,d="0123456789abcdef",e="";for(c=0;c>>4&15)+d.charAt(15&b);return e}function q(a){return unescape(encodeURIComponent(a))}function r(a){return n(q(a))}function s(a){return p(r(a))}function t(a,b){return o(q(a),q(b))}function u(a,b){return p(t(a,b))}function v(a,b,c){return b?c?t(b,a):u(b,a):c?r(a):s(a)}b.exports=v},{}]},{},[6,1,2])(6)}); +/*! Raven.js 3.25.1 (b6f3c7a) | github.com/getsentry/raven-js */ +!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.Raven=a()}}(function(){return function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};b[g][0].call(k.exports,function(a){var c=b[g][1][a];return e(c?c:a)},k,k.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;g":"anonymous component")+(a._isVue&&a.$options.__file?" at "+a.$options.__file:"")}function e(a,b){if(b=b||window.Vue,b&&b.config){var c=b.config.errorHandler;b.config.errorHandler=function(b,e,f){var g={};"[object Object]"===Object.prototype.toString.call(e)&&(g.componentName=d(e),g.propsData=e.$options.propsData),"undefined"!=typeof f&&(g.lifecycleHook=f),a.captureException(b,{extra:g}),"function"==typeof c&&c.call(this,b,e,f)}}}b.exports=e,a(6).addPlugin(b.exports)},{6:6}],3:[function(a,b,c){function d(a){this.name="RavenConfigError",this.message=a}d.prototype=new Error,d.prototype.constructor=d,b.exports=d},{}],4:[function(a,b,c){var d=a(7),e=function(a,b,c){var e=a[b],f=a;if(b in a){var g="warn"===b?"warning":b;a[b]=function(){var a=[].slice.call(arguments),h=d.safeJoin(a," "),i={level:g,logger:"console",extra:{arguments:a}};"assert"===b?a[0]===!1&&(h="Assertion failed: "+(d.safeJoin(a.slice(1)," ")||"console.assert"),i.extra.arguments=a.slice(1),c&&c(h,i)):c&&c(h,i),e&&Function.prototype.apply.call(e,f,a)}}};b.exports={wrapMethod:e}},{7:7}],5:[function(a,b,c){(function(c){function d(){return+new Date}function e(a,b){return s(b)?function(c){return b(c,a)}:b}function f(){this.a=!("object"!=typeof JSON||!JSON.stringify),this.b=!r(S),this.c=!r(T),this.d=null,this.e=null,this.f=null,this.g=null,this.h=null,this.i=null,this.j={},this.k={release:R.SENTRY_RELEASE&&R.SENTRY_RELEASE.id,logger:"javascript",ignoreErrors:[],ignoreUrls:[],whitelistUrls:[],includePaths:[],headers:null,collectWindowErrors:!0,captureUnhandledRejections:!0,maxMessageLength:0,maxUrlLength:250,stackTraceLimit:50,autoBreadcrumbs:!0,instrument:!0,sampleRate:1,sanitizeKeys:[]},this.l={method:"POST",keepalive:!0,referrerPolicy:K()?"origin":""},this.m=0,this.n=!1,this.o=Error.stackTraceLimit,this.p=R.console||{},this.q={},this.r=[],this.s=d(),this.t=[],this.u=[],this.v=null,this.w=R.location,this.x=this.w&&this.w.href,this.y();for(var a in this.p)this.q[a]=this.p[a]}var g=a(8),h=a(9),i=a(10),j=a(3),k=a(7),l=k.isErrorEvent,m=k.isDOMError,n=k.isDOMException,o=k.isError,p=k.isObject,q=k.isPlainObject,r=k.isUndefined,s=k.isFunction,t=k.isString,u=k.isArray,v=k.isEmptyObject,w=k.each,x=k.objectMerge,y=k.truncate,z=k.objectFrozen,A=k.hasKey,B=k.joinRegExp,C=k.urlencode,D=k.uuid4,E=k.htmlTreeAsString,F=k.isSameException,G=k.isSameStacktrace,H=k.parseUrl,I=k.fill,J=k.supportsFetch,K=k.supportsReferrerPolicy,L=k.serializeKeysForMessage,M=k.serializeException,N=k.sanitize,O=a(4).wrapMethod,P="source protocol user pass host port path".split(" "),Q=/^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/,R="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},S=R.document,T=R.navigator;f.prototype={VERSION:"3.25.1",debug:!1,TraceKit:g,config:function(a,b){var c=this;if(c.g)return this.z("error","Error: Raven has already been configured"),c;if(!a)return c;var d=c.k;b&&w(b,function(a,b){"tags"===a||"extra"===a||"user"===a?c.j[a]=b:d[a]=b}),c.setDSN(a),d.ignoreErrors.push(/^Script error\.?$/),d.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/),d.ignoreErrors=B(d.ignoreErrors),d.ignoreUrls=!!d.ignoreUrls.length&&B(d.ignoreUrls),d.whitelistUrls=!!d.whitelistUrls.length&&B(d.whitelistUrls),d.includePaths=B(d.includePaths),d.maxBreadcrumbs=Math.max(0,Math.min(d.maxBreadcrumbs||100,100));var e={xhr:!0,console:!0,dom:!0,location:!0,sentry:!0},f=d.autoBreadcrumbs;"[object Object]"==={}.toString.call(f)?f=x(e,f):f!==!1&&(f=e),d.autoBreadcrumbs=f;var h={tryCatch:!0},i=d.instrument;return"[object Object]"==={}.toString.call(i)?i=x(h,i):i!==!1&&(i=h),d.instrument=i,g.collectWindowErrors=!!d.collectWindowErrors,c},install:function(){var a=this;return a.isSetup()&&!a.n&&(g.report.subscribe(function(){a.A.apply(a,arguments)}),a.k.captureUnhandledRejections&&a.B(),a.C(),a.k.instrument&&a.k.instrument.tryCatch&&a.D(),a.k.autoBreadcrumbs&&a.E(),a.F(),a.n=!0),Error.stackTraceLimit=a.k.stackTraceLimit,this},setDSN:function(a){var b=this,c=b.G(a),d=c.path.lastIndexOf("/"),e=c.path.substr(1,d);b.H=a,b.h=c.user,b.I=c.pass&&c.pass.substr(1),b.i=c.path.substr(d+1),b.g=b.J(c),b.K=b.g+"/"+e+"api/"+b.i+"/store/",this.y()},context:function(a,b,c){return s(a)&&(c=b||[],b=a,a=void 0),this.wrap(a,b).apply(this,c)},wrap:function(a,b,c){function d(){var d=[],f=arguments.length,g=!a||a&&a.deep!==!1;for(c&&s(c)&&c.apply(this,arguments);f--;)d[f]=g?e.wrap(a,arguments[f]):arguments[f];try{return b.apply(this,d)}catch(h){throw e.L(),e.captureException(h,a),h}}var e=this;if(r(b)&&!s(a))return a;if(s(a)&&(b=a,a=void 0),!s(b))return b;try{if(b.M)return b;if(b.N)return b.N}catch(f){return b}for(var g in b)A(b,g)&&(d[g]=b[g]);return d.prototype=b.prototype,b.N=d,d.M=!0,d.O=b,d},uninstall:function(){return g.report.uninstall(),this.P(),this.Q(),this.R(),this.S(),Error.stackTraceLimit=this.o,this.n=!1,this},T:function(a){this.z("debug","Raven caught unhandled promise rejection:",a),this.captureException(a.reason,{extra:{unhandledPromiseRejection:!0}})},B:function(){return this.T=this.T.bind(this),R.addEventListener&&R.addEventListener("unhandledrejection",this.T),this},P:function(){return R.removeEventListener&&R.removeEventListener("unhandledrejection",this.T),this},captureException:function(a,b){if(b=x({trimHeadFrames:0},b?b:{}),l(a)&&a.error)a=a.error;else{if(m(a)||n(a)){var c=a.name||(m(a)?"DOMError":"DOMException"),d=a.message?c+": "+a.message:c;return this.captureMessage(d,x(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}))}if(o(a))a=a;else{if(!q(a))return this.captureMessage(a,x(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}));b=this.U(b,a),a=new Error(b.message)}}this.d=a;try{var e=g.computeStackTrace(a);this.V(e,b)}catch(f){if(a!==f)throw f}return this},U:function(a,b){var c=Object.keys(b).sort(),d=x(a,{message:"Non-Error exception captured with keys: "+L(c),fingerprint:[i(c)],extra:a.extra||{}});return d.extra.W=M(b),d},captureMessage:function(a,b){if(!this.k.ignoreErrors.test||!this.k.ignoreErrors.test(a)){b=b||{},a+="";var c,d=x({message:a},b);try{throw new Error(a)}catch(e){c=e}c.name=null;var f=g.computeStackTrace(c),h=u(f.stack)&&f.stack[1];h&&"Raven.captureException"===h.func&&(h=f.stack[2]);var i=h&&h.url||"";if((!this.k.ignoreUrls.test||!this.k.ignoreUrls.test(i))&&(!this.k.whitelistUrls.test||this.k.whitelistUrls.test(i))){if(this.k.stacktrace||b&&b.stacktrace){d.fingerprint=null==d.fingerprint?a:d.fingerprint,b=x({trimHeadFrames:0},b),b.trimHeadFrames+=1;var j=this.X(f,b);d.stacktrace={frames:j.reverse()}}return d.fingerprint&&(d.fingerprint=u(d.fingerprint)?d.fingerprint:[d.fingerprint]),this.Y(d),this}}},captureBreadcrumb:function(a){var b=x({timestamp:d()/1e3},a);if(s(this.k.breadcrumbCallback)){var c=this.k.breadcrumbCallback(b);if(p(c)&&!v(c))b=c;else if(c===!1)return this}return this.u.push(b),this.u.length>this.k.maxBreadcrumbs&&this.u.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.r.push([a,b]),this.n&&this.F(),this},setUserContext:function(a){return this.j.user=a,this},setExtraContext:function(a){return this.Z("extra",a),this},setTagsContext:function(a){return this.Z("tags",a),this},clearContext:function(){return this.j={},this},getContext:function(){return JSON.parse(h(this.j))},setEnvironment:function(a){return this.k.environment=a,this},setRelease:function(a){return this.k.release=a,this},setDataCallback:function(a){var b=this.k.dataCallback;return this.k.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.k.breadcrumbCallback;return this.k.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.k.shouldSendCallback;return this.k.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.k.transport=a,this},lastException:function(){return this.d},lastEventId:function(){return this.f},isSetup:function(){return!!this.a&&(!!this.g||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.z("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=R.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(S){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.H;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.j.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.J(this.G(c)),h=S.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(S.head||S.body).appendChild(h)}},L:function(){var a=this;this.m+=1,setTimeout(function(){a.m-=1})},$:function(a,b){var c,d;if(this.b){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),S.createEvent?(c=S.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=S.createEventObject(),c.eventType=a);for(d in b)A(b,d)&&(c[d]=b[d]);if(S.createEvent)S.dispatchEvent(c);else try{S.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},_:function(a){var b=this;return function(c){if(b.aa=null,b.v!==c){b.v=c;var d;try{d=E(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ba:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.aa;g||a._("input")(c),clearTimeout(g),a.aa=setTimeout(function(){a.aa=null},b)}}},ca:function(a,b){var c=H(this.w.href),d=H(b),e=H(a);this.x=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},C:function(){var a=this;a.da=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.M?a.da.apply(this.O,arguments):a.da.apply(this,arguments)}},Q:function(){this.da&&(Function.prototype.toString=this.da)},D:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.ca(b.x,c+""),a.apply(this,arguments)}};I(R.history,"pushState",j,d),I(R.history,"replaceState",j,d)}if(c.console&&"console"in R&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};w(["debug","info","warn","error","log"],function(a,b){O(console,b,k)})}},R:function(){for(var a;this.t.length;){a=this.t.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},S:function(){for(var a in this.q)this.p[a]=this.q[a]},F:function(){var a=this;w(this.r,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},G:function(a){var b=Q.exec(a),c={},d=7;try{for(;d--;)c[P[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.k.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},J:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},A:function(){this.m||this.V.apply(this,arguments)},V:function(a,b){var c=this.X(a,b);this.$("handle",{stackInfo:a,options:b}),this.fa(a.name,a.message,a.url,a.lineno,c,b)},X:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(w(a.stack,function(b,e){var f=c.ga(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.u,0)}),this.j.user&&(a.user=this.j.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),a=this.pa(a),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||v(a[b]))&&delete a[b]}),s(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!v(a)&&(!s(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.ma()?void this.z("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function F(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&l(b))for(c=b.split(/\s+/),f=0;fc?Q(a,b-1):d}function R(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?X:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function S(a,b){function c(a){return m(a)?a.map(function(a){return c(a)}):k(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!m(b)||m(b)&&0===b.length)return a;var d,e=A(b),f="********";try{d=JSON.parse(T(a))}catch(g){return a}return c(d)}var T=a(9),U="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},V=3,W=51200,X=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isDOMError:g,isDOMException:h,isUndefined:i,isFunction:j,isPlainObject:k,isString:l,isArray:m,isEmptyObject:n,supportsErrorEvent:o,supportsDOMError:p,supportsDOMException:q,supportsFetch:r,supportsReferrerPolicy:s,supportsPromiseRejectionEvent:t,wrappedCallback:u,each:v,objectMerge:w,truncate:y,objectFrozen:x,hasKey:z,joinRegExp:A,urlencode:B,uuid4:D,htmlTreeAsString:E,htmlElementAsString:F,isSameException:I,isSameStacktrace:J,parseUrl:C,fill:K,safeJoin:L,serializeException:Q,serializeKeysForMessage:R,sanitize:S}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{9:9}],8:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}function e(){return"undefined"==typeof document||null==document.location?"":(document.location.origin||(document.location.origin=document.location.protocol+"//"+document.location.hostname+(document.location.port?":"+document.location.port:"")),document.location.origin)}var f=a(7),g={collectWindowErrors:!0,debug:!1},h="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},i=[].slice,j="?",k=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;g.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function e(a,b){var c=null;if(!b||g.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(i.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,h,i){var l=null,m=f.isErrorEvent(i)?i.error:i,n=f.isErrorEvent(a)?a.message:a;if(v)g.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&f.isError(m))l=g.computeStackTrace(m),e(l,!0);else{var p,r={url:b,line:c,column:h},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(k);p&&(s=p[1],n=p[2])}r.func=j,l={name:s,message:n,url:d(),stack:[r]},e(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=h.onerror,h.onerror=l,r=!0)}function n(){r&&(h.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,e.apply(null,[a,!1].concat(b))}function p(a,b){var c=i.call(arguments,1);if(v){if(u===a)return;o()}var d=g.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),g.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,f,g=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,h=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,i=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,k=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,l=/\((\S*)(?::(\d+))(?::(\d+))\)/,m=a.stack.split("\n"),n=[],o=(/^(.*) is undefined$/.exec(a.message),0),p=m.length;o eval")>-1;r&&(b=k.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==o||c[5]||"undefined"==typeof a.columnNumber||(n[0].column=a.columnNumber+1),f={url:c[3],func:c[1]||j,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}if(!f.func&&f.line&&(f.func=j),f.url&&"blob:"===f.url.substr(0,5)){var s=new XMLHttpRequest;if(s.open("GET",f.url,!1),s.send(null),200===s.status){var t=s.responseText||"";t=t.slice(-300);var u=t.match(/\/\/# sourceMappingURL=(.*)$/);if(u){var v=u[1];"~"===v.charAt(0)&&(v=e()+v.slice(1)),f.url=v.slice(0,-4)}}}n.push(f)}return n.length?{name:a.name,message:a.message,url:d(),stack:n}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=j),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1; +if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,e){for(var h,i,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==f&&o!==g.report){if(i={url:null,func:j,line:null,column:null},o.name?i.func=o.name:(h=k.exec(o.toString()))&&(i.func=h[1]),"undefined"==typeof i.func)try{i.func=h.input.substring(0,h.input.indexOf("{"))}catch(p){}m[""+o]?n=!0:m[""+o]=!0,l.push(i)}e&&l.splice(0,e);var q={name:a.name,message:a.message,url:d(),stack:l};return b(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),q}function f(b,e){var f=null;e=null==e?0:+e;try{if(f=a(b))return f}catch(h){if(g.debug)throw h}try{if(f=c(b,e+1))return f}catch(h){if(g.debug)throw h}return{name:b.name,message:b.message,url:d()}}return f.augmentStackTraceWithInitialElement=b,f.computeStackTraceFromStackProp=a,f}(),b.exports=g}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{7:7}],9:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}],10:[function(a,b,c){function d(a,b){var c=(65535&a)+(65535&b),d=(a>>16)+(b>>16)+(c>>16);return d<<16|65535&c}function e(a,b){return a<>>32-b}function f(a,b,c,f,g,h){return d(e(d(d(b,a),d(f,h)),g),c)}function g(a,b,c,d,e,g,h){return f(b&c|~b&d,a,b,e,g,h)}function h(a,b,c,d,e,g,h){return f(b&d|c&~d,a,b,e,g,h)}function i(a,b,c,d,e,g,h){return f(b^c^d,a,b,e,g,h)}function j(a,b,c,d,e,g,h){return f(c^(b|~d),a,b,e,g,h)}function k(a,b){a[b>>5]|=128<>>9<<4)+14]=b;var c,e,f,k,l,m=1732584193,n=-271733879,o=-1732584194,p=271733878;for(c=0;c>5]>>>b%32&255);return c}function m(a){var b,c=[];for(c[(a.length>>2)-1]=void 0,b=0;b>5]|=(255&a.charCodeAt(b/8))<16&&(e=k(e,8*a.length)),c=0;c<16;c+=1)f[c]=909522486^e[c],g[c]=1549556828^e[c];return d=k(f.concat(m(b)),512+8*b.length),l(k(g.concat(d),640))}function p(a){var b,c,d="0123456789abcdef",e="";for(c=0;c>>4&15)+d.charAt(15&b);return e}function q(a){return unescape(encodeURIComponent(a))}function r(a){return n(q(a))}function s(a){return p(r(a))}function t(a,b){return o(q(a),q(b))}function u(a,b){return p(t(a,b))}function v(a,b,c){return b?c?t(b,a):u(b,a):c?r(a):s(a)}b.exports=v},{}]},{},[6,1,2])(6)}); //# sourceMappingURL=raven.min.js.map \ No newline at end of file diff --git a/dist/ember,vue/raven.min.js.map b/dist/ember,vue/raven.min.js.map index 1e7dcbe2309d..54895b564e5d 100644 --- a/dist/ember,vue/raven.min.js.map +++ b/dist/ember,vue/raven.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","emberPlugin","Ember","_oldOnError","onerror","error","captureException","RSVP","on","reason","extra","context","captureMessage","addPlugin","6","2","formatComponentName","vm","$root","name","_isVue","$options","_componentTag","__file","vuePlugin","Vue","config","errorHandler","info","metaData","Object","prototype","toString","componentName","propsData","lifecycleHook","3","RavenConfigError","message","constructor","4","utils","wrapMethod","console","level","callback","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","msg","safeJoin","data","logger","Function","apply","7","5","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","sanitizeKeys","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isErrorEvent","isDOMError","isDOMException","isError","isObject","isPlainObject","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","sanitize","wrapConsoleMethod","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","dsn","options","_logDebug","globalOptions","key","value","setDSN","push","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","substr","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","func","undefined","wrap","_before","wrapped","deep","_ignoreNextOnError","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","T","event","unhandledPromiseRejection","B","_promiseRejectionHandler","bind","addEventListener","P","removeEventListener","ex","trimHeadFrames","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","U","currentOptions","exKeys","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","setDataCallback","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","L","setTimeout","$","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","_","evtName","_keypressTimeout","target","category","ba","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","ca","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","C","_originalFunctionToString","Q","D","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","type","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","E","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","R","builtin","S","F","installer","concat","G","str","m","exec","allowSecretKey","J","port","A","V","stackInfo","_triggerEvent","_processException","lineno","X","frame","_normalizeFrame","in_app","ga","stackInfoUrl","normalized","filename","line","colno","column","function","fa","prefixedMessage","exception","values","culprit","ha","request","Referer","breadcrumbs","_trimBreadcrumbs","ia","urlProp","urlProps","ja","httpData","userAgent","User-Agent","referrer","y","_backoffDuration","_backoffStart","ma","na","current","last","oa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Y","baseData","project","platform","_getHttpData","serverName","server_name","_sanitizeData","forEach","random","_sendProcessedPayload","pa","ra","qa","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","sa","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","open","setRequestHeader","send","ta","hash","evaluated","z","Z","setUser","setReleaseContext","10","8","9","RavenConstructor","_Raven","noConflict","Client","what","supportsErrorEvent","ErrorEvent","supportsDOMError","DOMError","supportsDOMException","DOMException","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","wrappedCallback","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","sanitizeMask","safeInput","o_O","getLocationHref","getLocationOrigin","origin","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","responseText","sourceMaps","sourceMapAddress","charAt","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","string","raw"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file +{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","emberPlugin","Ember","_oldOnError","onerror","error","captureException","RSVP","on","reason","extra","context","captureMessage","addPlugin","6","2","formatComponentName","vm","$root","name","_isVue","$options","_componentTag","__file","vuePlugin","Vue","config","errorHandler","info","metaData","Object","prototype","toString","componentName","propsData","lifecycleHook","3","RavenConfigError","message","constructor","4","utils","wrapMethod","console","level","callback","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","msg","safeJoin","data","logger","Function","apply","7","5","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","sanitizeKeys","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isErrorEvent","isDOMError","isDOMException","isError","isObject","isPlainObject","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","sanitize","wrapConsoleMethod","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","dsn","options","_logDebug","globalOptions","key","value","setDSN","push","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","substr","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","func","undefined","wrap","_before","wrapped","deep","_ignoreNextOnError","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","T","event","unhandledPromiseRejection","B","_promiseRejectionHandler","bind","addEventListener","P","removeEventListener","ex","trimHeadFrames","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","U","currentOptions","exKeys","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","setDataCallback","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","L","setTimeout","$","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","_","evtName","_keypressTimeout","target","category","ba","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","ca","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","C","_originalFunctionToString","Q","D","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","type","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","E","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","R","builtin","S","F","installer","concat","G","str","m","exec","allowSecretKey","J","port","A","V","stackInfo","_triggerEvent","_processException","lineno","X","frame","_normalizeFrame","in_app","ga","stackInfoUrl","normalized","filename","line","colno","column","function","fa","prefixedMessage","exception","values","culprit","ha","request","Referer","breadcrumbs","_trimBreadcrumbs","ia","urlProp","urlProps","ja","httpData","userAgent","User-Agent","referrer","y","_backoffDuration","_backoffStart","ma","na","current","last","oa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Y","baseData","project","platform","_getHttpData","serverName","server_name","_sanitizeData","forEach","random","_sendProcessedPayload","pa","ra","qa","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","sa","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","open","setRequestHeader","send","ta","hash","evaluated","z","Z","setUser","setReleaseContext","10","8","9","RavenConstructor","_Raven","noConflict","Client","what","supportsErrorEvent","ErrorEvent","supportsDOMError","DOMError","supportsDOMException","DOMException","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","wrappedCallback","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","sanitizeMask","safeInput","o_O","getLocationHref","getLocationOrigin","origin","hostname","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","responseText","sourceMaps","sourceMapAddress","charAt","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","string","raw"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file diff --git a/dist/ember/raven.js b/dist/ember/raven.js index 56fb053a2492..38d2fa6ae98e 100644 --- a/dist/ember/raven.js +++ b/dist/ember/raven.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.25.0 (80dffad) | github.com/getsentry/raven-js */ +/*! Raven.js 3.25.1 (b6f3c7a) | github.com/getsentry/raven-js */ /* * Includes TraceKit @@ -240,7 +240,7 @@ Raven.prototype = { // webpack (using a build step causes webpack #1617). Grunt verifies that // this value matches package.json during build. // See: https://github.com/getsentry/raven-js/issues/465 - VERSION: '3.25.0', + VERSION: '3.25.1', debug: false, @@ -1549,8 +1549,8 @@ Raven.prototype = { var hasPushAndReplaceState = !isChromePackagedApp && _window.history && - history.pushState && - history.replaceState; + _window.history.pushState && + _window.history.replaceState; if (autoBreadcrumbs.location && hasPushAndReplaceState) { // TODO: remove onpopstate handler on uninstall() var oldOnPopState = _window.onpopstate; @@ -1579,8 +1579,8 @@ Raven.prototype = { }; }; - fill(history, 'pushState', historyReplacementFunction, wrappedBuiltIns); - fill(history, 'replaceState', historyReplacementFunction, wrappedBuiltIns); + fill(_window.history, 'pushState', historyReplacementFunction, wrappedBuiltIns); + fill(_window.history, 'replaceState', historyReplacementFunction, wrappedBuiltIns); } if (autoBreadcrumbs.console && 'console' in _window && console.log) { @@ -1870,7 +1870,7 @@ Raven.prototype = { if (this._hasNavigator && _navigator.userAgent) { httpData.headers = { - 'User-Agent': navigator.userAgent + 'User-Agent': _navigator.userAgent }; } @@ -3045,6 +3045,16 @@ function getLocationHref() { function getLocationOrigin() { if (typeof document === 'undefined' || document.location == null) return ''; + + // Oh dear IE10... + if (!document.location.origin) { + document.location.origin = + document.location.protocol + + '//' + + document.location.hostname + + (document.location.port ? ':' + document.location.port : ''); + } + return document.location.origin; } diff --git a/dist/ember/raven.min.js b/dist/ember/raven.min.js index b6d5a2b83ffc..19887e91db9c 100644 --- a/dist/ember/raven.min.js +++ b/dist/ember/raven.min.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.25.0 (80dffad) | github.com/getsentry/raven-js */ -!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.Raven=a()}}(function(){return function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};b[g][0].call(k.exports,function(a){var c=b[g][1][a];return e(c?c:a)},k,k.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;gthis.k.maxBreadcrumbs&&this.u.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.r.push([a,b]),this.n&&this.F(),this},setUserContext:function(a){return this.j.user=a,this},setExtraContext:function(a){return this.Z("extra",a),this},setTagsContext:function(a){return this.Z("tags",a),this},clearContext:function(){return this.j={},this},getContext:function(){return JSON.parse(h(this.j))},setEnvironment:function(a){return this.k.environment=a,this},setRelease:function(a){return this.k.release=a,this},setDataCallback:function(a){var b=this.k.dataCallback;return this.k.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.k.breadcrumbCallback;return this.k.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.k.shouldSendCallback;return this.k.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.k.transport=a,this},lastException:function(){return this.d},lastEventId:function(){return this.f},isSetup:function(){return!!this.a&&(!!this.g||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.z("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=R.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(S){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.H;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.j.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.J(this.G(c)),h=S.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(S.head||S.body).appendChild(h)}},L:function(){var a=this;this.m+=1,setTimeout(function(){a.m-=1})},$:function(a,b){var c,d;if(this.b){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),S.createEvent?(c=S.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=S.createEventObject(),c.eventType=a);for(d in b)A(b,d)&&(c[d]=b[d]);if(S.createEvent)S.dispatchEvent(c);else try{S.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},_:function(a){var b=this;return function(c){if(b.aa=null,b.v!==c){b.v=c;var d;try{d=E(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ba:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.aa;g||a._("input")(c),clearTimeout(g),a.aa=setTimeout(function(){a.aa=null},b)}}},ca:function(a,b){var c=H(this.w.href),d=H(b),e=H(a);this.x=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},C:function(){var a=this;a.da=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.M?a.da.apply(this.O,arguments):a.da.apply(this,arguments)}},Q:function(){this.da&&(Function.prototype.toString=this.da)},D:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.ca(b.x,c+""),a.apply(this,arguments)}};I(history,"pushState",j,d),I(history,"replaceState",j,d)}if(c.console&&"console"in R&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};w(["debug","info","warn","error","log"],function(a,b){O(console,b,k)})}},R:function(){for(var a;this.t.length;){a=this.t.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},S:function(){for(var a in this.q)this.p[a]=this.q[a]},F:function(){var a=this;w(this.r,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},G:function(a){var b=Q.exec(a),c={},d=7;try{for(;d--;)c[P[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.k.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},J:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},A:function(){this.m||this.V.apply(this,arguments)},V:function(a,b){var c=this.X(a,b);this.$("handle",{stackInfo:a,options:b}),this.fa(a.name,a.message,a.url,a.lineno,c,b)},X:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(w(a.stack,function(b,e){var f=c.ga(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.u,0)}),this.j.user&&(a.user=this.j.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),a=this.pa(a),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||v(a[b]))&&delete a[b]}),s(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!v(a)&&(!s(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.ma()?void this.z("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function F(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&l(b))for(c=b.split(/\s+/),f=0;fc?Q(a,b-1):d}function R(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?X:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function S(a,b){function c(a){return m(a)?a.map(function(a){return c(a)}):k(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!m(b)||m(b)&&0===b.length)return a;var d,e=A(b),f="********";try{d=JSON.parse(T(a))}catch(g){return a}return c(d)}var T=a(8),U="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},V=3,W=51200,X=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isDOMError:g,isDOMException:h,isUndefined:i,isFunction:j,isPlainObject:k,isString:l,isArray:m,isEmptyObject:n,supportsErrorEvent:o,supportsDOMError:p,supportsDOMException:q,supportsFetch:r,supportsReferrerPolicy:s,supportsPromiseRejectionEvent:t,wrappedCallback:u,each:v,objectMerge:w,truncate:y,objectFrozen:x,hasKey:z,joinRegExp:A,urlencode:B,uuid4:D,htmlTreeAsString:E,htmlElementAsString:F,isSameException:I,isSameStacktrace:J,parseUrl:C,fill:K,safeJoin:L,serializeException:Q,serializeKeysForMessage:R,sanitize:S}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{8:8}],7:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}function e(){return"undefined"==typeof document||null==document.location?"":document.location.origin}var f=a(6),g={collectWindowErrors:!0,debug:!1},h="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},i=[].slice,j="?",k=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;g.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function e(a,b){var c=null;if(!b||g.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(i.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,h,i){var l=null,m=f.isErrorEvent(i)?i.error:i,n=f.isErrorEvent(a)?a.message:a;if(v)g.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&f.isError(m))l=g.computeStackTrace(m),e(l,!0);else{var p,r={url:b,line:c,column:h},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(k);p&&(s=p[1],n=p[2])}r.func=j,l={name:s,message:n,url:d(),stack:[r]},e(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=h.onerror,h.onerror=l,r=!0)}function n(){r&&(h.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,e.apply(null,[a,!1].concat(b))}function p(a,b){var c=i.call(arguments,1);if(v){if(u===a)return;o()}var d=g.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),g.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,f,g=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,h=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,i=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,k=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,l=/\((\S*)(?::(\d+))(?::(\d+))\)/,m=a.stack.split("\n"),n=[],o=(/^(.*) is undefined$/.exec(a.message),0),p=m.length;o eval")>-1;r&&(b=k.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==o||c[5]||"undefined"==typeof a.columnNumber||(n[0].column=a.columnNumber+1),f={url:c[3],func:c[1]||j,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}if(!f.func&&f.line&&(f.func=j),f.url&&"blob:"===f.url.substr(0,5)){var s=new XMLHttpRequest;if(s.open("GET",f.url,!1),s.send(null),200===s.status){var t=s.responseText||"";t=t.slice(-300);var u=t.match(/\/\/# sourceMappingURL=(.*)$/);if(u){var v=u[1];"~"===v.charAt(0)&&(v=e()+v.slice(1)),f.url=v.slice(0,-4)}}}n.push(f)}return n.length?{name:a.name,message:a.message,url:d(),stack:n}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=j),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,e){for(var h,i,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==f&&o!==g.report){if(i={url:null,func:j,line:null,column:null},o.name?i.func=o.name:(h=k.exec(o.toString()))&&(i.func=h[1]),"undefined"==typeof i.func)try{i.func=h.input.substring(0,h.input.indexOf("{"))}catch(p){}m[""+o]?n=!0:m[""+o]=!0,l.push(i)}e&&l.splice(0,e);var q={name:a.name,message:a.message,url:d(),stack:l};return b(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),q}function f(b,e){var f=null;e=null==e?0:+e;try{if(f=a(b))return f}catch(h){if(g.debug)throw h}try{ -if(f=c(b,e+1))return f}catch(h){if(g.debug)throw h}return{name:b.name,message:b.message,url:d()}}return f.augmentStackTraceWithInitialElement=b,f.computeStackTraceFromStackProp=a,f}(),b.exports=g}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{6:6}],8:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}],9:[function(a,b,c){function d(a,b){var c=(65535&a)+(65535&b),d=(a>>16)+(b>>16)+(c>>16);return d<<16|65535&c}function e(a,b){return a<>>32-b}function f(a,b,c,f,g,h){return d(e(d(d(b,a),d(f,h)),g),c)}function g(a,b,c,d,e,g,h){return f(b&c|~b&d,a,b,e,g,h)}function h(a,b,c,d,e,g,h){return f(b&d|c&~d,a,b,e,g,h)}function i(a,b,c,d,e,g,h){return f(b^c^d,a,b,e,g,h)}function j(a,b,c,d,e,g,h){return f(c^(b|~d),a,b,e,g,h)}function k(a,b){a[b>>5]|=128<>>9<<4)+14]=b;var c,e,f,k,l,m=1732584193,n=-271733879,o=-1732584194,p=271733878;for(c=0;c>5]>>>b%32&255);return c}function m(a){var b,c=[];for(c[(a.length>>2)-1]=void 0,b=0;b>5]|=(255&a.charCodeAt(b/8))<16&&(e=k(e,8*a.length)),c=0;c<16;c+=1)f[c]=909522486^e[c],g[c]=1549556828^e[c];return d=k(f.concat(m(b)),512+8*b.length),l(k(g.concat(d),640))}function p(a){var b,c,d="0123456789abcdef",e="";for(c=0;c>>4&15)+d.charAt(15&b);return e}function q(a){return unescape(encodeURIComponent(a))}function r(a){return n(q(a))}function s(a){return p(r(a))}function t(a,b){return o(q(a),q(b))}function u(a,b){return p(t(a,b))}function v(a,b,c){return b?c?t(b,a):u(b,a):c?r(a):s(a)}b.exports=v},{}]},{},[5,1])(5)}); +/*! Raven.js 3.25.1 (b6f3c7a) | github.com/getsentry/raven-js */ +!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.Raven=a()}}(function(){return function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};b[g][0].call(k.exports,function(a){var c=b[g][1][a];return e(c?c:a)},k,k.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;gthis.k.maxBreadcrumbs&&this.u.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.r.push([a,b]),this.n&&this.F(),this},setUserContext:function(a){return this.j.user=a,this},setExtraContext:function(a){return this.Z("extra",a),this},setTagsContext:function(a){return this.Z("tags",a),this},clearContext:function(){return this.j={},this},getContext:function(){return JSON.parse(h(this.j))},setEnvironment:function(a){return this.k.environment=a,this},setRelease:function(a){return this.k.release=a,this},setDataCallback:function(a){var b=this.k.dataCallback;return this.k.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.k.breadcrumbCallback;return this.k.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.k.shouldSendCallback;return this.k.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.k.transport=a,this},lastException:function(){return this.d},lastEventId:function(){return this.f},isSetup:function(){return!!this.a&&(!!this.g||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.z("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=R.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(S){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.H;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.j.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.J(this.G(c)),h=S.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(S.head||S.body).appendChild(h)}},L:function(){var a=this;this.m+=1,setTimeout(function(){a.m-=1})},$:function(a,b){var c,d;if(this.b){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),S.createEvent?(c=S.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=S.createEventObject(),c.eventType=a);for(d in b)A(b,d)&&(c[d]=b[d]);if(S.createEvent)S.dispatchEvent(c);else try{S.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},_:function(a){var b=this;return function(c){if(b.aa=null,b.v!==c){b.v=c;var d;try{d=E(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ba:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.aa;g||a._("input")(c),clearTimeout(g),a.aa=setTimeout(function(){a.aa=null},b)}}},ca:function(a,b){var c=H(this.w.href),d=H(b),e=H(a);this.x=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},C:function(){var a=this;a.da=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.M?a.da.apply(this.O,arguments):a.da.apply(this,arguments)}},Q:function(){this.da&&(Function.prototype.toString=this.da)},D:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.ca(b.x,c+""),a.apply(this,arguments)}};I(R.history,"pushState",j,d),I(R.history,"replaceState",j,d)}if(c.console&&"console"in R&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};w(["debug","info","warn","error","log"],function(a,b){O(console,b,k)})}},R:function(){for(var a;this.t.length;){a=this.t.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},S:function(){for(var a in this.q)this.p[a]=this.q[a]},F:function(){var a=this;w(this.r,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},G:function(a){var b=Q.exec(a),c={},d=7;try{for(;d--;)c[P[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.k.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},J:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},A:function(){this.m||this.V.apply(this,arguments)},V:function(a,b){var c=this.X(a,b);this.$("handle",{stackInfo:a,options:b}),this.fa(a.name,a.message,a.url,a.lineno,c,b)},X:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(w(a.stack,function(b,e){var f=c.ga(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.u,0)}),this.j.user&&(a.user=this.j.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),a=this.pa(a),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||v(a[b]))&&delete a[b]}),s(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!v(a)&&(!s(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.ma()?void this.z("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function F(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&l(b))for(c=b.split(/\s+/),f=0;fc?Q(a,b-1):d}function R(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?X:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function S(a,b){function c(a){return m(a)?a.map(function(a){return c(a)}):k(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!m(b)||m(b)&&0===b.length)return a;var d,e=A(b),f="********";try{d=JSON.parse(T(a))}catch(g){return a}return c(d)}var T=a(8),U="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},V=3,W=51200,X=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isDOMError:g,isDOMException:h,isUndefined:i,isFunction:j,isPlainObject:k,isString:l,isArray:m,isEmptyObject:n,supportsErrorEvent:o,supportsDOMError:p,supportsDOMException:q,supportsFetch:r,supportsReferrerPolicy:s,supportsPromiseRejectionEvent:t,wrappedCallback:u,each:v,objectMerge:w,truncate:y,objectFrozen:x,hasKey:z,joinRegExp:A,urlencode:B,uuid4:D,htmlTreeAsString:E,htmlElementAsString:F,isSameException:I,isSameStacktrace:J,parseUrl:C,fill:K,safeJoin:L,serializeException:Q,serializeKeysForMessage:R,sanitize:S}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{8:8}],7:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}function e(){return"undefined"==typeof document||null==document.location?"":(document.location.origin||(document.location.origin=document.location.protocol+"//"+document.location.hostname+(document.location.port?":"+document.location.port:"")),document.location.origin)}var f=a(6),g={collectWindowErrors:!0,debug:!1},h="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},i=[].slice,j="?",k=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;g.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function e(a,b){var c=null;if(!b||g.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(i.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,h,i){var l=null,m=f.isErrorEvent(i)?i.error:i,n=f.isErrorEvent(a)?a.message:a;if(v)g.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&f.isError(m))l=g.computeStackTrace(m),e(l,!0);else{var p,r={url:b,line:c,column:h},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(k);p&&(s=p[1],n=p[2])}r.func=j,l={name:s,message:n,url:d(),stack:[r]},e(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=h.onerror,h.onerror=l,r=!0)}function n(){r&&(h.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,e.apply(null,[a,!1].concat(b))}function p(a,b){var c=i.call(arguments,1);if(v){if(u===a)return;o()}var d=g.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),g.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,f,g=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,h=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,i=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,k=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,l=/\((\S*)(?::(\d+))(?::(\d+))\)/,m=a.stack.split("\n"),n=[],o=(/^(.*) is undefined$/.exec(a.message),0),p=m.length;o eval")>-1;r&&(b=k.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==o||c[5]||"undefined"==typeof a.columnNumber||(n[0].column=a.columnNumber+1),f={url:c[3],func:c[1]||j,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}if(!f.func&&f.line&&(f.func=j),f.url&&"blob:"===f.url.substr(0,5)){var s=new XMLHttpRequest;if(s.open("GET",f.url,!1),s.send(null),200===s.status){var t=s.responseText||"";t=t.slice(-300);var u=t.match(/\/\/# sourceMappingURL=(.*)$/);if(u){var v=u[1];"~"===v.charAt(0)&&(v=e()+v.slice(1)),f.url=v.slice(0,-4)}}}n.push(f)}return n.length?{name:a.name,message:a.message,url:d(),stack:n}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=j),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,e){for(var h,i,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==f&&o!==g.report){if(i={url:null,func:j,line:null,column:null},o.name?i.func=o.name:(h=k.exec(o.toString()))&&(i.func=h[1]),"undefined"==typeof i.func)try{i.func=h.input.substring(0,h.input.indexOf("{"))}catch(p){}m[""+o]?n=!0:m[""+o]=!0,l.push(i)}e&&l.splice(0,e);var q={name:a.name,message:a.message,url:d(),stack:l};return b(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description), +q}function f(b,e){var f=null;e=null==e?0:+e;try{if(f=a(b))return f}catch(h){if(g.debug)throw h}try{if(f=c(b,e+1))return f}catch(h){if(g.debug)throw h}return{name:b.name,message:b.message,url:d()}}return f.augmentStackTraceWithInitialElement=b,f.computeStackTraceFromStackProp=a,f}(),b.exports=g}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{6:6}],8:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}],9:[function(a,b,c){function d(a,b){var c=(65535&a)+(65535&b),d=(a>>16)+(b>>16)+(c>>16);return d<<16|65535&c}function e(a,b){return a<>>32-b}function f(a,b,c,f,g,h){return d(e(d(d(b,a),d(f,h)),g),c)}function g(a,b,c,d,e,g,h){return f(b&c|~b&d,a,b,e,g,h)}function h(a,b,c,d,e,g,h){return f(b&d|c&~d,a,b,e,g,h)}function i(a,b,c,d,e,g,h){return f(b^c^d,a,b,e,g,h)}function j(a,b,c,d,e,g,h){return f(c^(b|~d),a,b,e,g,h)}function k(a,b){a[b>>5]|=128<>>9<<4)+14]=b;var c,e,f,k,l,m=1732584193,n=-271733879,o=-1732584194,p=271733878;for(c=0;c>5]>>>b%32&255);return c}function m(a){var b,c=[];for(c[(a.length>>2)-1]=void 0,b=0;b>5]|=(255&a.charCodeAt(b/8))<16&&(e=k(e,8*a.length)),c=0;c<16;c+=1)f[c]=909522486^e[c],g[c]=1549556828^e[c];return d=k(f.concat(m(b)),512+8*b.length),l(k(g.concat(d),640))}function p(a){var b,c,d="0123456789abcdef",e="";for(c=0;c>>4&15)+d.charAt(15&b);return e}function q(a){return unescape(encodeURIComponent(a))}function r(a){return n(q(a))}function s(a){return p(r(a))}function t(a,b){return o(q(a),q(b))}function u(a,b){return p(t(a,b))}function v(a,b,c){return b?c?t(b,a):u(b,a):c?r(a):s(a)}b.exports=v},{}]},{},[5,1])(5)}); //# sourceMappingURL=raven.min.js.map \ No newline at end of file diff --git a/dist/ember/raven.min.js.map b/dist/ember/raven.min.js.map index 9706de78ff90..0e2433f72129 100644 --- a/dist/ember/raven.min.js.map +++ b/dist/ember/raven.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","emberPlugin","Ember","_oldOnError","onerror","error","captureException","RSVP","on","reason","extra","context","captureMessage","addPlugin","5","2","RavenConfigError","message","name","prototype","constructor","3","utils","wrapMethod","console","level","callback","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","msg","safeJoin","data","logger","Function","apply","6","4","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","sanitizeKeys","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isErrorEvent","isDOMError","isDOMException","isError","isObject","isPlainObject","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","sanitize","wrapConsoleMethod","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","config","dsn","options","_logDebug","globalOptions","key","value","setDSN","push","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","toString","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","substr","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","func","undefined","wrap","_before","wrapped","deep","_ignoreNextOnError","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","T","event","unhandledPromiseRejection","B","_promiseRejectionHandler","bind","addEventListener","P","removeEventListener","ex","trimHeadFrames","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","U","currentOptions","exKeys","Object","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","setDataCallback","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","L","setTimeout","$","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","_","evtName","_keypressTimeout","target","category","ba","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","ca","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","C","_originalFunctionToString","Q","D","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","type","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","E","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","R","builtin","S","F","installer","concat","G","str","m","exec","allowSecretKey","J","port","A","V","stackInfo","_triggerEvent","_processException","lineno","X","frame","_normalizeFrame","in_app","ga","stackInfoUrl","normalized","filename","line","colno","column","function","fa","prefixedMessage","exception","values","culprit","ha","request","Referer","breadcrumbs","_trimBreadcrumbs","ia","urlProp","urlProps","ja","httpData","userAgent","User-Agent","referrer","y","_backoffDuration","_backoffStart","ma","na","current","last","oa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Y","baseData","project","platform","_getHttpData","serverName","server_name","_sanitizeData","forEach","random","_sendProcessedPayload","pa","ra","qa","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","sa","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","open","setRequestHeader","send","ta","hash","evaluated","z","Z","setUser","setReleaseContext","7","8","9","RavenConstructor","_Raven","noConflict","Client","what","supportsErrorEvent","ErrorEvent","supportsDOMError","DOMError","supportsDOMException","DOMException","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","wrappedCallback","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","sanitizeMask","safeInput","o_O","getLocationHref","getLocationOrigin","origin","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","responseText","sourceMaps","sourceMapAddress","charAt","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","string","raw"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file +{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","emberPlugin","Ember","_oldOnError","onerror","error","captureException","RSVP","on","reason","extra","context","captureMessage","addPlugin","5","2","RavenConfigError","message","name","prototype","constructor","3","utils","wrapMethod","console","level","callback","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","msg","safeJoin","data","logger","Function","apply","6","4","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","sanitizeKeys","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isErrorEvent","isDOMError","isDOMException","isError","isObject","isPlainObject","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","sanitize","wrapConsoleMethod","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","config","dsn","options","_logDebug","globalOptions","key","value","setDSN","push","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","toString","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","substr","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","func","undefined","wrap","_before","wrapped","deep","_ignoreNextOnError","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","T","event","unhandledPromiseRejection","B","_promiseRejectionHandler","bind","addEventListener","P","removeEventListener","ex","trimHeadFrames","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","U","currentOptions","exKeys","Object","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","setDataCallback","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","L","setTimeout","$","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","_","evtName","_keypressTimeout","target","category","ba","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","ca","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","C","_originalFunctionToString","Q","D","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","type","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","E","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","R","builtin","S","F","installer","concat","G","str","m","exec","allowSecretKey","J","port","A","V","stackInfo","_triggerEvent","_processException","lineno","X","frame","_normalizeFrame","in_app","ga","stackInfoUrl","normalized","filename","line","colno","column","function","fa","prefixedMessage","exception","values","culprit","ha","request","Referer","breadcrumbs","_trimBreadcrumbs","ia","urlProp","urlProps","ja","httpData","userAgent","User-Agent","referrer","y","_backoffDuration","_backoffStart","ma","na","current","last","oa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Y","baseData","project","platform","_getHttpData","serverName","server_name","_sanitizeData","forEach","random","_sendProcessedPayload","pa","ra","qa","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","sa","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","open","setRequestHeader","send","ta","hash","evaluated","z","Z","setUser","setReleaseContext","7","8","9","RavenConstructor","_Raven","noConflict","Client","what","supportsErrorEvent","ErrorEvent","supportsDOMError","DOMError","supportsDOMException","DOMException","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","wrappedCallback","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","sanitizeMask","safeInput","o_O","getLocationHref","getLocationOrigin","origin","hostname","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","responseText","sourceMaps","sourceMapAddress","charAt","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","string","raw"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file diff --git a/dist/plugins/angular.js b/dist/plugins/angular.js new file mode 100644 index 000000000000..17cc869a7b97 --- /dev/null +++ b/dist/plugins/angular.js @@ -0,0 +1,815 @@ +/*! Raven.js 3.25.1 (b6f3c7a) | github.com/getsentry/raven-js */ + +/* + * Includes TraceKit + * https://github.com/getsentry/TraceKit + * + * Copyright 2018 Matt Robenolt and other contributors + * Released under the BSD license + * https://github.com/getsentry/raven-js/blob/master/LICENSE + * + */ + +(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=(g.Raven||(g.Raven = {}));g=(g.Plugins||(g.Plugins = {}));g.Angular = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o href parsing trick because React Native and other +// environments where DOM might not be available +function parseUrl(url) { + if (typeof url !== 'string') return {}; + var match = url.match(/^(([^:\/?#]+):)?(\/\/([^\/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?$/); + + // coerce to undefined values to empty string so we don't get 'undefined' + var query = match[6] || ''; + var fragment = match[8] || ''; + return { + protocol: match[2], + host: match[4], + path: match[5], + relative: match[5] + query + fragment // everything minus origin + }; +} +function uuid4() { + var crypto = _window.crypto || _window.msCrypto; + + if (!isUndefined(crypto) && crypto.getRandomValues) { + // Use window.crypto API if available + // eslint-disable-next-line no-undef + var arr = new Uint16Array(8); + crypto.getRandomValues(arr); + + // set 4 in byte 7 + arr[3] = (arr[3] & 0xfff) | 0x4000; + // set 2 most significant bits of byte 9 to '10' + arr[4] = (arr[4] & 0x3fff) | 0x8000; + + var pad = function(num) { + var v = num.toString(16); + while (v.length < 4) { + v = '0' + v; + } + return v; + }; + + return ( + pad(arr[0]) + + pad(arr[1]) + + pad(arr[2]) + + pad(arr[3]) + + pad(arr[4]) + + pad(arr[5]) + + pad(arr[6]) + + pad(arr[7]) + ); + } else { + // http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/2117523#2117523 + return 'xxxxxxxxxxxx4xxxyxxxxxxxxxxxxxxx'.replace(/[xy]/g, function(c) { + var r = (Math.random() * 16) | 0, + v = c === 'x' ? r : (r & 0x3) | 0x8; + return v.toString(16); + }); + } +} + +/** + * Given a child DOM element, returns a query-selector statement describing that + * and its ancestors + * e.g. [HTMLElement] => body > div > input#foo.btn[name=baz] + * @param elem + * @returns {string} + */ +function htmlTreeAsString(elem) { + /* eslint no-extra-parens:0*/ + var MAX_TRAVERSE_HEIGHT = 5, + MAX_OUTPUT_LEN = 80, + out = [], + height = 0, + len = 0, + separator = ' > ', + sepLength = separator.length, + nextStr; + + while (elem && height++ < MAX_TRAVERSE_HEIGHT) { + nextStr = htmlElementAsString(elem); + // bail out if + // - nextStr is the 'html' element + // - the length of the string that would be created exceeds MAX_OUTPUT_LEN + // (ignore this limit if we are on the first iteration) + if ( + nextStr === 'html' || + (height > 1 && len + out.length * sepLength + nextStr.length >= MAX_OUTPUT_LEN) + ) { + break; + } + + out.push(nextStr); + + len += nextStr.length; + elem = elem.parentNode; + } + + return out.reverse().join(separator); +} + +/** + * Returns a simple, query-selector representation of a DOM element + * e.g. [HTMLElement] => input#foo.btn[name=baz] + * @param HTMLElement + * @returns {string} + */ +function htmlElementAsString(elem) { + var out = [], + className, + classes, + key, + attr, + i; + + if (!elem || !elem.tagName) { + return ''; + } + + out.push(elem.tagName.toLowerCase()); + if (elem.id) { + out.push('#' + elem.id); + } + + className = elem.className; + if (className && isString(className)) { + classes = className.split(/\s+/); + for (i = 0; i < classes.length; i++) { + out.push('.' + classes[i]); + } + } + var attrWhitelist = ['type', 'name', 'title', 'alt']; + for (i = 0; i < attrWhitelist.length; i++) { + key = attrWhitelist[i]; + attr = elem.getAttribute(key); + if (attr) { + out.push('[' + key + '="' + attr + '"]'); + } + } + return out.join(''); +} + +/** + * Returns true if either a OR b is truthy, but not both + */ +function isOnlyOneTruthy(a, b) { + return !!(!!a ^ !!b); +} + +/** + * Returns true if both parameters are undefined + */ +function isBothUndefined(a, b) { + return isUndefined(a) && isUndefined(b); +} + +/** + * Returns true if the two input exception interfaces have the same content + */ +function isSameException(ex1, ex2) { + if (isOnlyOneTruthy(ex1, ex2)) return false; + + ex1 = ex1.values[0]; + ex2 = ex2.values[0]; + + if (ex1.type !== ex2.type || ex1.value !== ex2.value) return false; + + // in case both stacktraces are undefined, we can't decide so default to false + if (isBothUndefined(ex1.stacktrace, ex2.stacktrace)) return false; + + return isSameStacktrace(ex1.stacktrace, ex2.stacktrace); +} + +/** + * Returns true if the two input stack trace interfaces have the same content + */ +function isSameStacktrace(stack1, stack2) { + if (isOnlyOneTruthy(stack1, stack2)) return false; + + var frames1 = stack1.frames; + var frames2 = stack2.frames; + + // Exit early if frame count differs + if (frames1.length !== frames2.length) return false; + + // Iterate through every frame; bail out if anything differs + var a, b; + for (var i = 0; i < frames1.length; i++) { + a = frames1[i]; + b = frames2[i]; + if ( + a.filename !== b.filename || + a.lineno !== b.lineno || + a.colno !== b.colno || + a['function'] !== b['function'] + ) + return false; + } + return true; +} + +/** + * Polyfill a method + * @param obj object e.g. `document` + * @param name method name present on object e.g. `addEventListener` + * @param replacement replacement function + * @param track {optional} record instrumentation to an array + */ +function fill(obj, name, replacement, track) { + if (obj == null) return; + var orig = obj[name]; + obj[name] = replacement(orig); + obj[name].__raven__ = true; + obj[name].__orig__ = orig; + if (track) { + track.push([obj, name, orig]); + } +} + +/** + * Join values in array + * @param input array of values to be joined together + * @param delimiter string to be placed in-between values + * @returns {string} + */ +function safeJoin(input, delimiter) { + if (!isArray(input)) return ''; + + var output = []; + + for (var i = 0; i < input.length; i++) { + try { + output.push(String(input[i])); + } catch (e) { + output.push('[value cannot be serialized]'); + } + } + + return output.join(delimiter); +} + +// Default Node.js REPL depth +var MAX_SERIALIZE_EXCEPTION_DEPTH = 3; +// 50kB, as 100kB is max payload size, so half sounds reasonable +var MAX_SERIALIZE_EXCEPTION_SIZE = 50 * 1024; +var MAX_SERIALIZE_KEYS_LENGTH = 40; + +function utf8Length(value) { + return ~-encodeURI(value).split(/%..|./).length; +} + +function jsonSize(value) { + return utf8Length(JSON.stringify(value)); +} + +function serializeValue(value) { + if (typeof value === 'string') { + var maxLength = 40; + return truncate(value, maxLength); + } else if ( + typeof value === 'number' || + typeof value === 'boolean' || + typeof value === 'undefined' + ) { + return value; + } + + var type = Object.prototype.toString.call(value); + + // Node.js REPL notation + if (type === '[object Object]') return '[Object]'; + if (type === '[object Array]') return '[Array]'; + if (type === '[object Function]') + return value.name ? '[Function: ' + value.name + ']' : '[Function]'; + + return value; +} + +function serializeObject(value, depth) { + if (depth === 0) return serializeValue(value); + + if (isPlainObject(value)) { + return Object.keys(value).reduce(function(acc, key) { + acc[key] = serializeObject(value[key], depth - 1); + return acc; + }, {}); + } else if (Array.isArray(value)) { + return value.map(function(val) { + return serializeObject(val, depth - 1); + }); + } + + return serializeValue(value); +} + +function serializeException(ex, depth, maxSize) { + if (!isPlainObject(ex)) return ex; + + depth = typeof depth !== 'number' ? MAX_SERIALIZE_EXCEPTION_DEPTH : depth; + maxSize = typeof depth !== 'number' ? MAX_SERIALIZE_EXCEPTION_SIZE : maxSize; + + var serialized = serializeObject(ex, depth); + + if (jsonSize(stringify(serialized)) > maxSize) { + return serializeException(ex, depth - 1); + } + + return serialized; +} + +function serializeKeysForMessage(keys, maxLength) { + if (typeof keys === 'number' || typeof keys === 'string') return keys.toString(); + if (!Array.isArray(keys)) return ''; + + keys = keys.filter(function(key) { + return typeof key === 'string'; + }); + if (keys.length === 0) return '[object has no keys]'; + + maxLength = typeof maxLength !== 'number' ? MAX_SERIALIZE_KEYS_LENGTH : maxLength; + if (keys[0].length >= maxLength) return keys[0]; + + for (var usedKeys = keys.length; usedKeys > 0; usedKeys--) { + var serialized = keys.slice(0, usedKeys).join(', '); + if (serialized.length > maxLength) continue; + if (usedKeys === keys.length) return serialized; + return serialized + '\u2026'; + } + + return ''; +} + +function sanitize(input, sanitizeKeys) { + if (!isArray(sanitizeKeys) || (isArray(sanitizeKeys) && sanitizeKeys.length === 0)) + return input; + + var sanitizeRegExp = joinRegExp(sanitizeKeys); + var sanitizeMask = '********'; + var safeInput; + + try { + safeInput = JSON.parse(stringify(input)); + } catch (o_O) { + return input; + } + + function sanitizeWorker(workerInput) { + if (isArray(workerInput)) { + return workerInput.map(function(val) { + return sanitizeWorker(val); + }); + } + + if (isPlainObject(workerInput)) { + return Object.keys(workerInput).reduce(function(acc, k) { + if (sanitizeRegExp.test(k)) { + acc[k] = sanitizeMask; + } else { + acc[k] = sanitizeWorker(workerInput[k]); + } + return acc; + }, {}); + } + + return workerInput; + } + + return sanitizeWorker(safeInput); +} + +module.exports = { + isObject: isObject, + isError: isError, + isErrorEvent: isErrorEvent, + isDOMError: isDOMError, + isDOMException: isDOMException, + isUndefined: isUndefined, + isFunction: isFunction, + isPlainObject: isPlainObject, + isString: isString, + isArray: isArray, + isEmptyObject: isEmptyObject, + supportsErrorEvent: supportsErrorEvent, + supportsDOMError: supportsDOMError, + supportsDOMException: supportsDOMException, + supportsFetch: supportsFetch, + supportsReferrerPolicy: supportsReferrerPolicy, + supportsPromiseRejectionEvent: supportsPromiseRejectionEvent, + wrappedCallback: wrappedCallback, + each: each, + objectMerge: objectMerge, + truncate: truncate, + objectFrozen: objectFrozen, + hasKey: hasKey, + joinRegExp: joinRegExp, + urlencode: urlencode, + uuid4: uuid4, + htmlTreeAsString: htmlTreeAsString, + htmlElementAsString: htmlElementAsString, + isSameException: isSameException, + isSameStacktrace: isSameStacktrace, + parseUrl: parseUrl, + fill: fill, + safeJoin: safeJoin, + serializeException: serializeException, + serializeKeysForMessage: serializeKeysForMessage, + sanitize: sanitize +}; + +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"3":3}],3:[function(_dereq_,module,exports){ +/* + json-stringify-safe + Like JSON.stringify, but doesn't throw on circular references. + + Originally forked from https://github.com/isaacs/json-stringify-safe + version 5.0.1 on 3/8/2017 and modified to handle Errors serialization + and IE8 compatibility. Tests for this are in test/vendor. + + ISC license: https://github.com/isaacs/json-stringify-safe/blob/master/LICENSE +*/ + +exports = module.exports = stringify; +exports.getSerialize = serializer; + +function indexOf(haystack, needle) { + for (var i = 0; i < haystack.length; ++i) { + if (haystack[i] === needle) return i; + } + return -1; +} + +function stringify(obj, replacer, spaces, cycleReplacer) { + return JSON.stringify(obj, serializer(replacer, cycleReplacer), spaces); +} + +// https://github.com/ftlabs/js-abbreviate/blob/fa709e5f139e7770a71827b1893f22418097fbda/index.js#L95-L106 +function stringifyError(value) { + var err = { + // These properties are implemented as magical getters and don't show up in for in + stack: value.stack, + message: value.message, + name: value.name + }; + + for (var i in value) { + if (Object.prototype.hasOwnProperty.call(value, i)) { + err[i] = value[i]; + } + } + + return err; +} + +function serializer(replacer, cycleReplacer) { + var stack = []; + var keys = []; + + if (cycleReplacer == null) { + cycleReplacer = function(key, value) { + if (stack[0] === value) { + return '[Circular ~]'; + } + return '[Circular ~.' + keys.slice(0, indexOf(stack, value)).join('.') + ']'; + }; + } + + return function(key, value) { + if (stack.length > 0) { + var thisPos = indexOf(stack, this); + ~thisPos ? stack.splice(thisPos + 1) : stack.push(this); + ~thisPos ? keys.splice(thisPos, Infinity, key) : keys.push(key); + + if (~indexOf(stack, value)) { + value = cycleReplacer.call(this, key, value); + } + } else { + stack.push(value); + } + + return replacer == null + ? value instanceof Error ? stringifyError(value) : value + : replacer.call(this, key, value); + }; +} + +},{}]},{},[1])(1) +}); \ No newline at end of file diff --git a/dist/plugins/angular.min.js b/dist/plugins/angular.min.js new file mode 100644 index 000000000000..aeb57a6e6c63 --- /dev/null +++ b/dist/plugins/angular.min.js @@ -0,0 +1,3 @@ +/*! Raven.js 3.25.1 (b6f3c7a) | github.com/getsentry/raven-js */ +!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b=b.Raven||(b.Raven={}),b=b.Plugins||(b.Plugins={}),b.Angular=a()}}(function(){return function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};b[g][0].call(k.exports,function(a){var c=b[g][1][a];return e(c?c:a)},k,k.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;g ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function F(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&l(b))for(c=b.split(/\s+/),f=0;fc?Q(a,b-1):d}function R(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?X:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function S(a,b){function c(a){return m(a)?a.map(function(a){return c(a)}):k(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!m(b)||m(b)&&0===b.length)return a;var d,e=A(b),f="********";try{d=JSON.parse(T(a))}catch(g){return a}return c(d)}var T=a(3),U="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},V=3,W=51200,X=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isDOMError:g,isDOMException:h,isUndefined:i,isFunction:j,isPlainObject:k,isString:l,isArray:m,isEmptyObject:n,supportsErrorEvent:o,supportsDOMError:p,supportsDOMException:q,supportsFetch:r,supportsReferrerPolicy:s,supportsPromiseRejectionEvent:t,wrappedCallback:u,each:v,objectMerge:w,truncate:y,objectFrozen:x,hasKey:z,joinRegExp:A,urlencode:B,uuid4:D,htmlTreeAsString:E,htmlElementAsString:F,isSameException:I,isSameStacktrace:J,parseUrl:C,fill:K,safeJoin:L,serializeException:Q,serializeKeysForMessage:R,sanitize:S}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{3:3}],3:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}]},{},[1])(1)}); +//# sourceMappingURL=angular.min.js.map \ No newline at end of file diff --git a/dist/plugins/angular.min.js.map b/dist/plugins/angular.min.js.map new file mode 100644 index 000000000000..ecb3c731c4a9 --- /dev/null +++ b/dist/plugins/angular.min.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["angular.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","Plugins","Angular","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","angularPlugin","angular","RavenProvider","$get","$window","ExceptionHandlerProvider","$provide","decorator","exceptionHandler","R","$delegate","ex","cause","captureException","extra","moduleName","provider","config","setDataCallback","wrappedCallback","data","_normalizeData","angularPattern","exception","values","matches","exec","value","type","message","angularDocs","substr","2","isObject","what","isError","Object","prototype","toString","isErrorEvent","isDOMError","isDOMException","isUndefined","isFunction","isPlainObject","isString","isArray","isEmptyObject","_","hasOwnProperty","supportsErrorEvent","ErrorEvent","supportsDOMError","DOMError","supportsDOMException","DOMException","supportsFetch","_window","Headers","Request","Response","supportsReferrerPolicy","referrerPolicy","supportsPromiseRejectionEvent","PromiseRejectionEvent","callback","dataCallback","original","normalizedData","each","obj","j","hasKey","objectMerge","obj1","obj2","key","objectFrozen","isFrozen","truncate","str","max","object","joinRegExp","patterns","pattern","sources","len","push","replace","source","RegExp","join","urlencode","pairs","encodeURIComponent","parseUrl","url","match","query","fragment","protocol","host","path","relative","uuid4","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","Math","random","htmlTreeAsString","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","reverse","className","classes","attr","tagName","toLowerCase","id","split","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","isSameException","ex1","ex2","stacktrace","isSameStacktrace","stack1","stack2","frames1","frames","frames2","filename","lineno","colno","fill","name","replacement","track","orig","__raven__","__orig__","safeJoin","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","JSON","stringify","serializeValue","maxLength","serializeObject","depth","keys","reduce","acc","Array","map","val","serializeException","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","serializeKeysForMessage","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","slice","sanitize","sanitizeKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","test","sanitizeMask","safeInput","parse","o_O","3","indexOf","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","err","stack","thisPos","splice","Infinity","getSerialize"],"mappings":"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","file":"angular.min.js"} \ No newline at end of file diff --git a/dist/plugins/console.js b/dist/plugins/console.js new file mode 100644 index 000000000000..91b3b2a36f20 --- /dev/null +++ b/dist/plugins/console.js @@ -0,0 +1,817 @@ +/*! Raven.js 3.25.1 (b6f3c7a) | github.com/getsentry/raven-js */ + +/* + * Includes TraceKit + * https://github.com/getsentry/TraceKit + * + * Copyright 2018 Matt Robenolt and other contributors + * Released under the BSD license + * https://github.com/getsentry/raven-js/blob/master/LICENSE + * + */ + +(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=(g.Raven||(g.Raven = {}));g=(g.Plugins||(g.Plugins = {}));g.Console = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o href parsing trick because React Native and other +// environments where DOM might not be available +function parseUrl(url) { + if (typeof url !== 'string') return {}; + var match = url.match(/^(([^:\/?#]+):)?(\/\/([^\/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?$/); + + // coerce to undefined values to empty string so we don't get 'undefined' + var query = match[6] || ''; + var fragment = match[8] || ''; + return { + protocol: match[2], + host: match[4], + path: match[5], + relative: match[5] + query + fragment // everything minus origin + }; +} +function uuid4() { + var crypto = _window.crypto || _window.msCrypto; + + if (!isUndefined(crypto) && crypto.getRandomValues) { + // Use window.crypto API if available + // eslint-disable-next-line no-undef + var arr = new Uint16Array(8); + crypto.getRandomValues(arr); + + // set 4 in byte 7 + arr[3] = (arr[3] & 0xfff) | 0x4000; + // set 2 most significant bits of byte 9 to '10' + arr[4] = (arr[4] & 0x3fff) | 0x8000; + + var pad = function(num) { + var v = num.toString(16); + while (v.length < 4) { + v = '0' + v; + } + return v; + }; + + return ( + pad(arr[0]) + + pad(arr[1]) + + pad(arr[2]) + + pad(arr[3]) + + pad(arr[4]) + + pad(arr[5]) + + pad(arr[6]) + + pad(arr[7]) + ); + } else { + // http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/2117523#2117523 + return 'xxxxxxxxxxxx4xxxyxxxxxxxxxxxxxxx'.replace(/[xy]/g, function(c) { + var r = (Math.random() * 16) | 0, + v = c === 'x' ? r : (r & 0x3) | 0x8; + return v.toString(16); + }); + } +} + +/** + * Given a child DOM element, returns a query-selector statement describing that + * and its ancestors + * e.g. [HTMLElement] => body > div > input#foo.btn[name=baz] + * @param elem + * @returns {string} + */ +function htmlTreeAsString(elem) { + /* eslint no-extra-parens:0*/ + var MAX_TRAVERSE_HEIGHT = 5, + MAX_OUTPUT_LEN = 80, + out = [], + height = 0, + len = 0, + separator = ' > ', + sepLength = separator.length, + nextStr; + + while (elem && height++ < MAX_TRAVERSE_HEIGHT) { + nextStr = htmlElementAsString(elem); + // bail out if + // - nextStr is the 'html' element + // - the length of the string that would be created exceeds MAX_OUTPUT_LEN + // (ignore this limit if we are on the first iteration) + if ( + nextStr === 'html' || + (height > 1 && len + out.length * sepLength + nextStr.length >= MAX_OUTPUT_LEN) + ) { + break; + } + + out.push(nextStr); + + len += nextStr.length; + elem = elem.parentNode; + } + + return out.reverse().join(separator); +} + +/** + * Returns a simple, query-selector representation of a DOM element + * e.g. [HTMLElement] => input#foo.btn[name=baz] + * @param HTMLElement + * @returns {string} + */ +function htmlElementAsString(elem) { + var out = [], + className, + classes, + key, + attr, + i; + + if (!elem || !elem.tagName) { + return ''; + } + + out.push(elem.tagName.toLowerCase()); + if (elem.id) { + out.push('#' + elem.id); + } + + className = elem.className; + if (className && isString(className)) { + classes = className.split(/\s+/); + for (i = 0; i < classes.length; i++) { + out.push('.' + classes[i]); + } + } + var attrWhitelist = ['type', 'name', 'title', 'alt']; + for (i = 0; i < attrWhitelist.length; i++) { + key = attrWhitelist[i]; + attr = elem.getAttribute(key); + if (attr) { + out.push('[' + key + '="' + attr + '"]'); + } + } + return out.join(''); +} + +/** + * Returns true if either a OR b is truthy, but not both + */ +function isOnlyOneTruthy(a, b) { + return !!(!!a ^ !!b); +} + +/** + * Returns true if both parameters are undefined + */ +function isBothUndefined(a, b) { + return isUndefined(a) && isUndefined(b); +} + +/** + * Returns true if the two input exception interfaces have the same content + */ +function isSameException(ex1, ex2) { + if (isOnlyOneTruthy(ex1, ex2)) return false; + + ex1 = ex1.values[0]; + ex2 = ex2.values[0]; + + if (ex1.type !== ex2.type || ex1.value !== ex2.value) return false; + + // in case both stacktraces are undefined, we can't decide so default to false + if (isBothUndefined(ex1.stacktrace, ex2.stacktrace)) return false; + + return isSameStacktrace(ex1.stacktrace, ex2.stacktrace); +} + +/** + * Returns true if the two input stack trace interfaces have the same content + */ +function isSameStacktrace(stack1, stack2) { + if (isOnlyOneTruthy(stack1, stack2)) return false; + + var frames1 = stack1.frames; + var frames2 = stack2.frames; + + // Exit early if frame count differs + if (frames1.length !== frames2.length) return false; + + // Iterate through every frame; bail out if anything differs + var a, b; + for (var i = 0; i < frames1.length; i++) { + a = frames1[i]; + b = frames2[i]; + if ( + a.filename !== b.filename || + a.lineno !== b.lineno || + a.colno !== b.colno || + a['function'] !== b['function'] + ) + return false; + } + return true; +} + +/** + * Polyfill a method + * @param obj object e.g. `document` + * @param name method name present on object e.g. `addEventListener` + * @param replacement replacement function + * @param track {optional} record instrumentation to an array + */ +function fill(obj, name, replacement, track) { + if (obj == null) return; + var orig = obj[name]; + obj[name] = replacement(orig); + obj[name].__raven__ = true; + obj[name].__orig__ = orig; + if (track) { + track.push([obj, name, orig]); + } +} + +/** + * Join values in array + * @param input array of values to be joined together + * @param delimiter string to be placed in-between values + * @returns {string} + */ +function safeJoin(input, delimiter) { + if (!isArray(input)) return ''; + + var output = []; + + for (var i = 0; i < input.length; i++) { + try { + output.push(String(input[i])); + } catch (e) { + output.push('[value cannot be serialized]'); + } + } + + return output.join(delimiter); +} + +// Default Node.js REPL depth +var MAX_SERIALIZE_EXCEPTION_DEPTH = 3; +// 50kB, as 100kB is max payload size, so half sounds reasonable +var MAX_SERIALIZE_EXCEPTION_SIZE = 50 * 1024; +var MAX_SERIALIZE_KEYS_LENGTH = 40; + +function utf8Length(value) { + return ~-encodeURI(value).split(/%..|./).length; +} + +function jsonSize(value) { + return utf8Length(JSON.stringify(value)); +} + +function serializeValue(value) { + if (typeof value === 'string') { + var maxLength = 40; + return truncate(value, maxLength); + } else if ( + typeof value === 'number' || + typeof value === 'boolean' || + typeof value === 'undefined' + ) { + return value; + } + + var type = Object.prototype.toString.call(value); + + // Node.js REPL notation + if (type === '[object Object]') return '[Object]'; + if (type === '[object Array]') return '[Array]'; + if (type === '[object Function]') + return value.name ? '[Function: ' + value.name + ']' : '[Function]'; + + return value; +} + +function serializeObject(value, depth) { + if (depth === 0) return serializeValue(value); + + if (isPlainObject(value)) { + return Object.keys(value).reduce(function(acc, key) { + acc[key] = serializeObject(value[key], depth - 1); + return acc; + }, {}); + } else if (Array.isArray(value)) { + return value.map(function(val) { + return serializeObject(val, depth - 1); + }); + } + + return serializeValue(value); +} + +function serializeException(ex, depth, maxSize) { + if (!isPlainObject(ex)) return ex; + + depth = typeof depth !== 'number' ? MAX_SERIALIZE_EXCEPTION_DEPTH : depth; + maxSize = typeof depth !== 'number' ? MAX_SERIALIZE_EXCEPTION_SIZE : maxSize; + + var serialized = serializeObject(ex, depth); + + if (jsonSize(stringify(serialized)) > maxSize) { + return serializeException(ex, depth - 1); + } + + return serialized; +} + +function serializeKeysForMessage(keys, maxLength) { + if (typeof keys === 'number' || typeof keys === 'string') return keys.toString(); + if (!Array.isArray(keys)) return ''; + + keys = keys.filter(function(key) { + return typeof key === 'string'; + }); + if (keys.length === 0) return '[object has no keys]'; + + maxLength = typeof maxLength !== 'number' ? MAX_SERIALIZE_KEYS_LENGTH : maxLength; + if (keys[0].length >= maxLength) return keys[0]; + + for (var usedKeys = keys.length; usedKeys > 0; usedKeys--) { + var serialized = keys.slice(0, usedKeys).join(', '); + if (serialized.length > maxLength) continue; + if (usedKeys === keys.length) return serialized; + return serialized + '\u2026'; + } + + return ''; +} + +function sanitize(input, sanitizeKeys) { + if (!isArray(sanitizeKeys) || (isArray(sanitizeKeys) && sanitizeKeys.length === 0)) + return input; + + var sanitizeRegExp = joinRegExp(sanitizeKeys); + var sanitizeMask = '********'; + var safeInput; + + try { + safeInput = JSON.parse(stringify(input)); + } catch (o_O) { + return input; + } + + function sanitizeWorker(workerInput) { + if (isArray(workerInput)) { + return workerInput.map(function(val) { + return sanitizeWorker(val); + }); + } + + if (isPlainObject(workerInput)) { + return Object.keys(workerInput).reduce(function(acc, k) { + if (sanitizeRegExp.test(k)) { + acc[k] = sanitizeMask; + } else { + acc[k] = sanitizeWorker(workerInput[k]); + } + return acc; + }, {}); + } + + return workerInput; + } + + return sanitizeWorker(safeInput); +} + +module.exports = { + isObject: isObject, + isError: isError, + isErrorEvent: isErrorEvent, + isDOMError: isDOMError, + isDOMException: isDOMException, + isUndefined: isUndefined, + isFunction: isFunction, + isPlainObject: isPlainObject, + isString: isString, + isArray: isArray, + isEmptyObject: isEmptyObject, + supportsErrorEvent: supportsErrorEvent, + supportsDOMError: supportsDOMError, + supportsDOMException: supportsDOMException, + supportsFetch: supportsFetch, + supportsReferrerPolicy: supportsReferrerPolicy, + supportsPromiseRejectionEvent: supportsPromiseRejectionEvent, + wrappedCallback: wrappedCallback, + each: each, + objectMerge: objectMerge, + truncate: truncate, + objectFrozen: objectFrozen, + hasKey: hasKey, + joinRegExp: joinRegExp, + urlencode: urlencode, + uuid4: uuid4, + htmlTreeAsString: htmlTreeAsString, + htmlElementAsString: htmlElementAsString, + isSameException: isSameException, + isSameStacktrace: isSameStacktrace, + parseUrl: parseUrl, + fill: fill, + safeJoin: safeJoin, + serializeException: serializeException, + serializeKeysForMessage: serializeKeysForMessage, + sanitize: sanitize +}; + +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"4":4}],4:[function(_dereq_,module,exports){ +/* + json-stringify-safe + Like JSON.stringify, but doesn't throw on circular references. + + Originally forked from https://github.com/isaacs/json-stringify-safe + version 5.0.1 on 3/8/2017 and modified to handle Errors serialization + and IE8 compatibility. Tests for this are in test/vendor. + + ISC license: https://github.com/isaacs/json-stringify-safe/blob/master/LICENSE +*/ + +exports = module.exports = stringify; +exports.getSerialize = serializer; + +function indexOf(haystack, needle) { + for (var i = 0; i < haystack.length; ++i) { + if (haystack[i] === needle) return i; + } + return -1; +} + +function stringify(obj, replacer, spaces, cycleReplacer) { + return JSON.stringify(obj, serializer(replacer, cycleReplacer), spaces); +} + +// https://github.com/ftlabs/js-abbreviate/blob/fa709e5f139e7770a71827b1893f22418097fbda/index.js#L95-L106 +function stringifyError(value) { + var err = { + // These properties are implemented as magical getters and don't show up in for in + stack: value.stack, + message: value.message, + name: value.name + }; + + for (var i in value) { + if (Object.prototype.hasOwnProperty.call(value, i)) { + err[i] = value[i]; + } + } + + return err; +} + +function serializer(replacer, cycleReplacer) { + var stack = []; + var keys = []; + + if (cycleReplacer == null) { + cycleReplacer = function(key, value) { + if (stack[0] === value) { + return '[Circular ~]'; + } + return '[Circular ~.' + keys.slice(0, indexOf(stack, value)).join('.') + ']'; + }; + } + + return function(key, value) { + if (stack.length > 0) { + var thisPos = indexOf(stack, this); + ~thisPos ? stack.splice(thisPos + 1) : stack.push(this); + ~thisPos ? keys.splice(thisPos, Infinity, key) : keys.push(key); + + if (~indexOf(stack, value)) { + value = cycleReplacer.call(this, key, value); + } + } else { + stack.push(value); + } + + return replacer == null + ? value instanceof Error ? stringifyError(value) : value + : replacer.call(this, key, value); + }; +} + +},{}]},{},[1])(1) +}); \ No newline at end of file diff --git a/dist/plugins/console.min.js b/dist/plugins/console.min.js new file mode 100644 index 000000000000..1337a1d601a0 --- /dev/null +++ b/dist/plugins/console.min.js @@ -0,0 +1,3 @@ +/*! Raven.js 3.25.1 (b6f3c7a) | github.com/getsentry/raven-js */ +!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b=b.Raven||(b.Raven={}),b=b.Plugins||(b.Plugins={}),b.Console=a()}}(function(){return function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};b[g][0].call(k.exports,function(a){var c=b[g][1][a];return e(c?c:a)},k,k.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;g ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function F(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&l(b))for(c=b.split(/\s+/),f=0;fc?Q(a,b-1):d}function R(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?X:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function S(a,b){function c(a){return m(a)?a.map(function(a){return c(a)}):k(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!m(b)||m(b)&&0===b.length)return a;var d,e=A(b),f="********";try{d=JSON.parse(T(a))}catch(g){return a}return c(d)}var T=a(4),U="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},V=3,W=51200,X=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isDOMError:g,isDOMException:h,isUndefined:i,isFunction:j,isPlainObject:k,isString:l,isArray:m,isEmptyObject:n,supportsErrorEvent:o,supportsDOMError:p,supportsDOMException:q,supportsFetch:r,supportsReferrerPolicy:s,supportsPromiseRejectionEvent:t,wrappedCallback:u,each:v,objectMerge:w,truncate:y,objectFrozen:x,hasKey:z,joinRegExp:A,urlencode:B,uuid4:D,htmlTreeAsString:E,htmlElementAsString:F,isSameException:I,isSameStacktrace:J,parseUrl:C,fill:K,safeJoin:L,serializeException:Q,serializeKeysForMessage:R,sanitize:S}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{4:4}],4:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}]},{},[1])(1)}); +//# sourceMappingURL=console.min.js.map \ No newline at end of file diff --git a/dist/plugins/console.min.js.map b/dist/plugins/console.min.js.map new file mode 100644 index 000000000000..99dce1fac727 --- /dev/null +++ b/dist/plugins/console.min.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["console.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","Plugins","Console","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","consolePlugin","console","pluginOptions","logLevels","levels","push","callback","msg","data","captureMessage","level","pop","wrapConsoleMethod","wrapMethod","2","utils","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","safeJoin","logger","extra","Function","prototype","apply","3","isObject","what","isError","value","Object","toString","isErrorEvent","isDOMError","isDOMException","isUndefined","isFunction","isPlainObject","isString","isArray","isEmptyObject","_","hasOwnProperty","supportsErrorEvent","ErrorEvent","supportsDOMError","DOMError","supportsDOMException","DOMException","supportsFetch","_window","Headers","Request","Response","supportsReferrerPolicy","referrerPolicy","supportsPromiseRejectionEvent","PromiseRejectionEvent","wrappedCallback","dataCallback","original","normalizedData","each","obj","j","hasKey","objectMerge","obj1","obj2","key","objectFrozen","isFrozen","truncate","str","max","substr","object","joinRegExp","patterns","pattern","sources","len","replace","source","RegExp","join","urlencode","pairs","encodeURIComponent","parseUrl","url","match","query","fragment","protocol","host","path","relative","uuid4","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","Math","random","htmlTreeAsString","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","reverse","className","classes","attr","tagName","toLowerCase","id","split","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","isSameException","ex1","ex2","values","type","stacktrace","isSameStacktrace","stack1","stack2","frames1","frames","frames2","filename","lineno","colno","fill","name","replacement","track","orig","__raven__","__orig__","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","JSON","stringify","serializeValue","maxLength","serializeObject","depth","keys","reduce","acc","Array","map","val","serializeException","ex","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","serializeKeysForMessage","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitize","sanitizeKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","test","sanitizeMask","safeInput","parse","o_O","4","indexOf","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","err","stack","message","thisPos","splice","Infinity","getSerialize"],"mappings":"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","file":"console.min.js"} \ No newline at end of file diff --git a/dist/plugins/ember.js b/dist/plugins/ember.js new file mode 100644 index 000000000000..4eeb0262b5ca --- /dev/null +++ b/dist/plugins/ember.js @@ -0,0 +1,46 @@ +/*! Raven.js 3.25.1 (b6f3c7a) | github.com/getsentry/raven-js */ + +/* + * Includes TraceKit + * https://github.com/getsentry/TraceKit + * + * Copyright 2018 Matt Robenolt and other contributors + * Released under the BSD license + * https://github.com/getsentry/raven-js/blob/master/LICENSE + * + */ + +(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=(g.Raven||(g.Raven = {}));g=(g.Plugins||(g.Plugins = {}));g.Ember = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o' : 'anonymous component') + + (vm._isVue && vm.$options.__file ? ' at ' + vm.$options.__file : '') + ); +} + +function vuePlugin(Raven, Vue) { + Vue = Vue || window.Vue; + + // quit if Vue isn't on the page + if (!Vue || !Vue.config) return; + + var _oldOnError = Vue.config.errorHandler; + Vue.config.errorHandler = function VueErrorHandler(error, vm, info) { + var metaData = {}; + + // vm and lifecycleHook are not always available + if (Object.prototype.toString.call(vm) === '[object Object]') { + metaData.componentName = formatComponentName(vm); + metaData.propsData = vm.$options.propsData; + } + + if (typeof info !== 'undefined') { + metaData.lifecycleHook = info; + } + + Raven.captureException(error, { + extra: metaData + }); + + if (typeof _oldOnError === 'function') { + _oldOnError.call(this, error, vm, info); + } + }; +} + +module.exports = vuePlugin; + +},{}]},{},[1])(1) +}); \ No newline at end of file diff --git a/dist/plugins/vue.min.js b/dist/plugins/vue.min.js new file mode 100644 index 000000000000..23d1997d1ad0 --- /dev/null +++ b/dist/plugins/vue.min.js @@ -0,0 +1,3 @@ +/*! Raven.js 3.25.1 (b6f3c7a) | github.com/getsentry/raven-js */ +!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b=b.Raven||(b.Raven={}),b=b.Plugins||(b.Plugins={}),b.Vue=a()}}(function(){return function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};b[g][0].call(k.exports,function(a){var c=b[g][1][a];return e(c?c:a)},k,k.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;g":"anonymous component")+(a._isVue&&a.$options.__file?" at "+a.$options.__file:"")}function e(a,b){if(b=b||window.Vue,b&&b.config){var c=b.config.errorHandler;b.config.errorHandler=function(b,e,f){var g={};"[object Object]"===Object.prototype.toString.call(e)&&(g.componentName=d(e),g.propsData=e.$options.propsData),"undefined"!=typeof f&&(g.lifecycleHook=f),a.captureException(b,{extra:g}),"function"==typeof c&&c.call(this,b,e,f)}}}b.exports=e},{}]},{},[1])(1)}); +//# sourceMappingURL=vue.min.js.map \ No newline at end of file diff --git a/dist/plugins/vue.min.js.map b/dist/plugins/vue.min.js.map new file mode 100644 index 000000000000..f263c96e5eb5 --- /dev/null +++ b/dist/plugins/vue.min.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["vue.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","Plugins","Vue","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","formatComponentName","vm","$root","name","_isVue","$options","_componentTag","__file","vuePlugin","config","_oldOnError","errorHandler","error","info","metaData","Object","prototype","toString","componentName","propsData","lifecycleHook","captureException","extra"],"mappings":";CAYA,SAAUA,GAAG,GAAoB,gBAAVC,UAAoC,mBAATC,QAAsBA,OAAOD,QAAQD,QAAS,IAAmB,kBAATG,SAAqBA,OAAOC,IAAKD,UAAUH,OAAO,CAAC,GAAIK,EAAkCA,GAAb,mBAATC,QAAwBA,OAA+B,mBAATC,QAAwBA,OAA6B,mBAAPC,MAAsBA,KAAYC,KAAKJ,EAAGA,EAAEK,QAAQL,EAAEK,UAAaL,EAAGA,EAAEM,UAAUN,EAAEM,YAAeN,EAAEO,IAAMZ,MAAO,WAAqC,MAAO,SAAUa,GAAEC,EAAEC,EAAEC,GAAG,QAASC,GAAEC,EAAEC,GAAG,IAAIJ,EAAEG,GAAG,CAAC,IAAIJ,EAAEI,GAAG,CAAC,GAAIE,GAAkB,kBAATC,UAAqBA,OAAQ,KAAIF,GAAGC,EAAE,MAAOA,GAAEF,GAAE,EAAI,IAAGI,EAAE,MAAOA,GAAEJ,GAAE,EAAI,IAAIlB,GAAE,GAAIuB,OAAM,uBAAuBL,EAAE,IAAK,MAAMlB,GAAEwB,KAAK,mBAAmBxB,EAAE,GAAIyB,GAAEV,EAAEG,IAAIjB,WAAYa,GAAEI,GAAG,GAAGQ,KAAKD,EAAExB,QAAQ,SAASY,GAAG,GAAIE,GAAED,EAAEI,GAAG,GAAGL,EAAG,OAAOI,GAAEF,EAAEA,EAAEF,IAAIY,EAAEA,EAAExB,QAAQY,EAAEC,EAAEC,EAAEC,GAAG,MAAOD,GAAEG,GAAGjB,QAAkD,IAAI,GAA1CqB,GAAkB,kBAATD,UAAqBA,QAAgBH,EAAE,EAAEA,EAAEF,EAAEW,OAAOT,IAAID,EAAED,EAAEE,GAAI,OAAOD,KAAKW,GAAG,SAASC,EAAQ3B,EAAOD,GAM93B,QAAS6B,GAAoBC,GAC3B,GAAIA,EAAGC,QAAUD,EACf,MAAO,eAET,IAAIE,GAAOF,EAAGG,OAASH,EAAGI,SAASF,MAAQF,EAAGI,SAASC,cAAgBL,EAAGE,IAC1E,QACGA,EAAO,cAAgBA,EAAO,IAAM,wBACpCF,EAAGG,QAAUH,EAAGI,SAASE,OAAS,OAASN,EAAGI,SAASE,OAAS,IAIrE,QAASC,GAAU5B,EAAOE,GAIxB,GAHAA,EAAMA,GAAON,OAAOM,IAGfA,GAAQA,EAAI2B,OAAjB,CAEA,GAAIC,GAAc5B,EAAI2B,OAAOE,YAC7B7B,GAAI2B,OAAOE,aAAe,SAAyBC,EAAOX,EAAIY,GAC5D,GAAIC,KAGuC,qBAAvCC,OAAOC,UAAUC,SAASrB,KAAKK,KACjCa,EAASI,cAAgBlB,EAAoBC,GAC7Ca,EAASK,UAAYlB,EAAGI,SAASc,WAGf,mBAATN,KACTC,EAASM,cAAgBP,GAG3BjC,EAAMyC,iBAAiBT,GACrBU,MAAOR,IAGkB,kBAAhBJ,IACTA,EAAYd,KAAKjB,KAAMiC,EAAOX,EAAIY,KAKxCzC,EAAOD,QAAUqC,YAEN,IAAI","file":"vue.min.js"} \ No newline at end of file diff --git a/dist/raven.js b/dist/raven.js index 5919ae68b0fd..e3eb41efbb9f 100644 --- a/dist/raven.js +++ b/dist/raven.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.25.0 (80dffad) | github.com/getsentry/raven-js */ +/*! Raven.js 3.25.1 (b6f3c7a) | github.com/getsentry/raven-js */ /* * Includes TraceKit @@ -207,7 +207,7 @@ Raven.prototype = { // webpack (using a build step causes webpack #1617). Grunt verifies that // this value matches package.json during build. // See: https://github.com/getsentry/raven-js/issues/465 - VERSION: '3.25.0', + VERSION: '3.25.1', debug: false, @@ -1516,8 +1516,8 @@ Raven.prototype = { var hasPushAndReplaceState = !isChromePackagedApp && _window.history && - history.pushState && - history.replaceState; + _window.history.pushState && + _window.history.replaceState; if (autoBreadcrumbs.location && hasPushAndReplaceState) { // TODO: remove onpopstate handler on uninstall() var oldOnPopState = _window.onpopstate; @@ -1546,8 +1546,8 @@ Raven.prototype = { }; }; - fill(history, 'pushState', historyReplacementFunction, wrappedBuiltIns); - fill(history, 'replaceState', historyReplacementFunction, wrappedBuiltIns); + fill(_window.history, 'pushState', historyReplacementFunction, wrappedBuiltIns); + fill(_window.history, 'replaceState', historyReplacementFunction, wrappedBuiltIns); } if (autoBreadcrumbs.console && 'console' in _window && console.log) { @@ -1837,7 +1837,7 @@ Raven.prototype = { if (this._hasNavigator && _navigator.userAgent) { httpData.headers = { - 'User-Agent': navigator.userAgent + 'User-Agent': _navigator.userAgent }; } @@ -3012,6 +3012,16 @@ function getLocationHref() { function getLocationOrigin() { if (typeof document === 'undefined' || document.location == null) return ''; + + // Oh dear IE10... + if (!document.location.origin) { + document.location.origin = + document.location.protocol + + '//' + + document.location.hostname + + (document.location.port ? ':' + document.location.port : ''); + } + return document.location.origin; } diff --git a/dist/raven.min.js b/dist/raven.min.js index 021c5b353549..f9cd97b4a450 100644 --- a/dist/raven.min.js +++ b/dist/raven.min.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.25.0 (80dffad) | github.com/getsentry/raven-js */ -!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.Raven=a()}}(function(){return function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};b[g][0].call(k.exports,function(a){var c=b[g][1][a];return e(c?c:a)},k,k.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;gthis.k.maxBreadcrumbs&&this.u.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.r.push([a,b]),this.n&&this.F(),this},setUserContext:function(a){return this.j.user=a,this},setExtraContext:function(a){return this.Z("extra",a),this},setTagsContext:function(a){return this.Z("tags",a),this},clearContext:function(){return this.j={},this},getContext:function(){return JSON.parse(h(this.j))},setEnvironment:function(a){return this.k.environment=a,this},setRelease:function(a){return this.k.release=a,this},setDataCallback:function(a){var b=this.k.dataCallback;return this.k.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.k.breadcrumbCallback;return this.k.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.k.shouldSendCallback;return this.k.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.k.transport=a,this},lastException:function(){return this.d},lastEventId:function(){return this.f},isSetup:function(){return!!this.a&&(!!this.g||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.z("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=R.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(S){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.H;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.j.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.J(this.G(c)),h=S.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(S.head||S.body).appendChild(h)}},L:function(){var a=this;this.m+=1,setTimeout(function(){a.m-=1})},$:function(a,b){var c,d;if(this.b){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),S.createEvent?(c=S.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=S.createEventObject(),c.eventType=a);for(d in b)A(b,d)&&(c[d]=b[d]);if(S.createEvent)S.dispatchEvent(c);else try{S.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},_:function(a){var b=this;return function(c){if(b.aa=null,b.v!==c){b.v=c;var d;try{d=E(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ba:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.aa;g||a._("input")(c),clearTimeout(g),a.aa=setTimeout(function(){a.aa=null},b)}}},ca:function(a,b){var c=H(this.w.href),d=H(b),e=H(a);this.x=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},C:function(){var a=this;a.da=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.M?a.da.apply(this.O,arguments):a.da.apply(this,arguments)}},Q:function(){this.da&&(Function.prototype.toString=this.da)},D:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.ca(b.x,c+""),a.apply(this,arguments)}};I(history,"pushState",j,d),I(history,"replaceState",j,d)}if(c.console&&"console"in R&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};w(["debug","info","warn","error","log"],function(a,b){O(console,b,k)})}},R:function(){for(var a;this.t.length;){a=this.t.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},S:function(){for(var a in this.q)this.p[a]=this.q[a]},F:function(){var a=this;w(this.r,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},G:function(a){var b=Q.exec(a),c={},d=7;try{for(;d--;)c[P[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.k.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},J:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},A:function(){this.m||this.V.apply(this,arguments)},V:function(a,b){var c=this.X(a,b);this.$("handle",{stackInfo:a,options:b}),this.fa(a.name,a.message,a.url,a.lineno,c,b)},X:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(w(a.stack,function(b,e){var f=c.ga(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.u,0)}),this.j.user&&(a.user=this.j.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),a=this.pa(a),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||v(a[b]))&&delete a[b]}),s(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!v(a)&&(!s(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.ma()?void this.z("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function F(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&l(b))for(c=b.split(/\s+/),f=0;fc?Q(a,b-1):d}function R(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?X:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function S(a,b){function c(a){return m(a)?a.map(function(a){return c(a)}):k(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!m(b)||m(b)&&0===b.length)return a;var d,e=A(b),f="********";try{d=JSON.parse(T(a))}catch(g){return a}return c(d)}var T=a(7),U="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},V=3,W=51200,X=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isDOMError:g,isDOMException:h,isUndefined:i,isFunction:j,isPlainObject:k,isString:l,isArray:m,isEmptyObject:n,supportsErrorEvent:o,supportsDOMError:p,supportsDOMException:q,supportsFetch:r,supportsReferrerPolicy:s,supportsPromiseRejectionEvent:t,wrappedCallback:u,each:v,objectMerge:w,truncate:y,objectFrozen:x,hasKey:z,joinRegExp:A,urlencode:B,uuid4:D,htmlTreeAsString:E,htmlElementAsString:F,isSameException:I,isSameStacktrace:J,parseUrl:C,fill:K,safeJoin:L,serializeException:Q,serializeKeysForMessage:R,sanitize:S}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{7:7}],6:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}function e(){return"undefined"==typeof document||null==document.location?"":document.location.origin}var f=a(5),g={collectWindowErrors:!0,debug:!1},h="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},i=[].slice,j="?",k=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;g.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function e(a,b){var c=null;if(!b||g.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(i.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,h,i){var l=null,m=f.isErrorEvent(i)?i.error:i,n=f.isErrorEvent(a)?a.message:a;if(v)g.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&f.isError(m))l=g.computeStackTrace(m),e(l,!0);else{var p,r={url:b,line:c,column:h},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(k);p&&(s=p[1],n=p[2])}r.func=j,l={name:s,message:n,url:d(),stack:[r]},e(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=h.onerror,h.onerror=l,r=!0)}function n(){r&&(h.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,e.apply(null,[a,!1].concat(b))}function p(a,b){var c=i.call(arguments,1);if(v){if(u===a)return;o()}var d=g.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),g.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,f,g=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,h=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,i=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,k=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,l=/\((\S*)(?::(\d+))(?::(\d+))\)/,m=a.stack.split("\n"),n=[],o=(/^(.*) is undefined$/.exec(a.message),0),p=m.length;o eval")>-1;r&&(b=k.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==o||c[5]||"undefined"==typeof a.columnNumber||(n[0].column=a.columnNumber+1),f={url:c[3],func:c[1]||j,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}if(!f.func&&f.line&&(f.func=j),f.url&&"blob:"===f.url.substr(0,5)){var s=new XMLHttpRequest;if(s.open("GET",f.url,!1),s.send(null),200===s.status){var t=s.responseText||"";t=t.slice(-300);var u=t.match(/\/\/# sourceMappingURL=(.*)$/);if(u){var v=u[1];"~"===v.charAt(0)&&(v=e()+v.slice(1)),f.url=v.slice(0,-4)}}}n.push(f)}return n.length?{name:a.name,message:a.message,url:d(),stack:n}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=j),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,e){for(var h,i,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==f&&o!==g.report){if(i={url:null,func:j,line:null,column:null},o.name?i.func=o.name:(h=k.exec(o.toString()))&&(i.func=h[1]),"undefined"==typeof i.func)try{i.func=h.input.substring(0,h.input.indexOf("{"))}catch(p){}m[""+o]?n=!0:m[""+o]=!0,l.push(i)}e&&l.splice(0,e);var q={name:a.name,message:a.message,url:d(),stack:l};return b(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),q}function f(b,e){var f=null;e=null==e?0:+e;try{if(f=a(b))return f}catch(h){if(g.debug)throw h}try{if(f=c(b,e+1))return f}catch(h){if(g.debug)throw h}return{name:b.name,message:b.message,url:d()}}return f.augmentStackTraceWithInitialElement=b,f.computeStackTraceFromStackProp=a,f}(),b.exports=g}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{5:5}],7:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}],8:[function(a,b,c){function d(a,b){var c=(65535&a)+(65535&b),d=(a>>16)+(b>>16)+(c>>16);return d<<16|65535&c}function e(a,b){return a<>>32-b}function f(a,b,c,f,g,h){return d(e(d(d(b,a),d(f,h)),g),c)}function g(a,b,c,d,e,g,h){return f(b&c|~b&d,a,b,e,g,h)}function h(a,b,c,d,e,g,h){return f(b&d|c&~d,a,b,e,g,h)}function i(a,b,c,d,e,g,h){return f(b^c^d,a,b,e,g,h)}function j(a,b,c,d,e,g,h){return f(c^(b|~d),a,b,e,g,h)}function k(a,b){a[b>>5]|=128<>>9<<4)+14]=b;var c,e,f,k,l,m=1732584193,n=-271733879,o=-1732584194,p=271733878;for(c=0;c>5]>>>b%32&255);return c}function m(a){var b,c=[];for(c[(a.length>>2)-1]=void 0,b=0;b>5]|=(255&a.charCodeAt(b/8))<16&&(e=k(e,8*a.length)),c=0;c<16;c+=1)f[c]=909522486^e[c],g[c]=1549556828^e[c];return d=k(f.concat(m(b)),512+8*b.length),l(k(g.concat(d),640))}function p(a){var b,c,d="0123456789abcdef",e="";for(c=0;c>>4&15)+d.charAt(15&b);return e}function q(a){return unescape(encodeURIComponent(a))}function r(a){return n(q(a))}function s(a){return p(r(a))}function t(a,b){return o(q(a),q(b))}function u(a,b){return p(t(a,b))}function v(a,b,c){return b?c?t(b,a):u(b,a):c?r(a):s(a)}b.exports=v},{}]},{},[4])(4)}); +/*! Raven.js 3.25.1 (b6f3c7a) | github.com/getsentry/raven-js */ +!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.Raven=a()}}(function(){return function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};b[g][0].call(k.exports,function(a){var c=b[g][1][a];return e(c?c:a)},k,k.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;gthis.k.maxBreadcrumbs&&this.u.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.r.push([a,b]),this.n&&this.F(),this},setUserContext:function(a){return this.j.user=a,this},setExtraContext:function(a){return this.Z("extra",a),this},setTagsContext:function(a){return this.Z("tags",a),this},clearContext:function(){return this.j={},this},getContext:function(){return JSON.parse(h(this.j))},setEnvironment:function(a){return this.k.environment=a,this},setRelease:function(a){return this.k.release=a,this},setDataCallback:function(a){var b=this.k.dataCallback;return this.k.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.k.breadcrumbCallback;return this.k.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.k.shouldSendCallback;return this.k.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.k.transport=a,this},lastException:function(){return this.d},lastEventId:function(){return this.f},isSetup:function(){return!!this.a&&(!!this.g||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.z("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=R.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(S){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.H;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.j.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.J(this.G(c)),h=S.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(S.head||S.body).appendChild(h)}},L:function(){var a=this;this.m+=1,setTimeout(function(){a.m-=1})},$:function(a,b){var c,d;if(this.b){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),S.createEvent?(c=S.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=S.createEventObject(),c.eventType=a);for(d in b)A(b,d)&&(c[d]=b[d]);if(S.createEvent)S.dispatchEvent(c);else try{S.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},_:function(a){var b=this;return function(c){if(b.aa=null,b.v!==c){b.v=c;var d;try{d=E(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ba:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.aa;g||a._("input")(c),clearTimeout(g),a.aa=setTimeout(function(){a.aa=null},b)}}},ca:function(a,b){var c=H(this.w.href),d=H(b),e=H(a);this.x=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},C:function(){var a=this;a.da=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.M?a.da.apply(this.O,arguments):a.da.apply(this,arguments)}},Q:function(){this.da&&(Function.prototype.toString=this.da)},D:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.ca(b.x,c+""),a.apply(this,arguments)}};I(R.history,"pushState",j,d),I(R.history,"replaceState",j,d)}if(c.console&&"console"in R&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};w(["debug","info","warn","error","log"],function(a,b){O(console,b,k)})}},R:function(){for(var a;this.t.length;){a=this.t.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},S:function(){for(var a in this.q)this.p[a]=this.q[a]},F:function(){var a=this;w(this.r,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},G:function(a){var b=Q.exec(a),c={},d=7;try{for(;d--;)c[P[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.k.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},J:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},A:function(){this.m||this.V.apply(this,arguments)},V:function(a,b){var c=this.X(a,b);this.$("handle",{stackInfo:a,options:b}),this.fa(a.name,a.message,a.url,a.lineno,c,b)},X:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(w(a.stack,function(b,e){var f=c.ga(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.u,0)}),this.j.user&&(a.user=this.j.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),a=this.pa(a),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||v(a[b]))&&delete a[b]}),s(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!v(a)&&(!s(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.ma()?void this.z("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function F(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&l(b))for(c=b.split(/\s+/),f=0;fc?Q(a,b-1):d}function R(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?X:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function S(a,b){function c(a){return m(a)?a.map(function(a){return c(a)}):k(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!m(b)||m(b)&&0===b.length)return a;var d,e=A(b),f="********";try{d=JSON.parse(T(a))}catch(g){return a}return c(d)}var T=a(7),U="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},V=3,W=51200,X=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isDOMError:g,isDOMException:h,isUndefined:i,isFunction:j,isPlainObject:k,isString:l,isArray:m,isEmptyObject:n,supportsErrorEvent:o,supportsDOMError:p,supportsDOMException:q,supportsFetch:r,supportsReferrerPolicy:s,supportsPromiseRejectionEvent:t,wrappedCallback:u,each:v,objectMerge:w,truncate:y,objectFrozen:x,hasKey:z,joinRegExp:A,urlencode:B,uuid4:D,htmlTreeAsString:E,htmlElementAsString:F,isSameException:I,isSameStacktrace:J,parseUrl:C,fill:K,safeJoin:L,serializeException:Q,serializeKeysForMessage:R,sanitize:S}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{7:7}],6:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}function e(){return"undefined"==typeof document||null==document.location?"":(document.location.origin||(document.location.origin=document.location.protocol+"//"+document.location.hostname+(document.location.port?":"+document.location.port:"")),document.location.origin)}var f=a(5),g={collectWindowErrors:!0,debug:!1},h="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},i=[].slice,j="?",k=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;g.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function e(a,b){var c=null;if(!b||g.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(i.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,h,i){var l=null,m=f.isErrorEvent(i)?i.error:i,n=f.isErrorEvent(a)?a.message:a;if(v)g.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&f.isError(m))l=g.computeStackTrace(m),e(l,!0);else{var p,r={url:b,line:c,column:h},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(k);p&&(s=p[1],n=p[2])}r.func=j,l={name:s,message:n,url:d(),stack:[r]},e(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=h.onerror,h.onerror=l,r=!0)}function n(){r&&(h.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,e.apply(null,[a,!1].concat(b))}function p(a,b){var c=i.call(arguments,1);if(v){if(u===a)return;o()}var d=g.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),g.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,f,g=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,h=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,i=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,k=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,l=/\((\S*)(?::(\d+))(?::(\d+))\)/,m=a.stack.split("\n"),n=[],o=(/^(.*) is undefined$/.exec(a.message),0),p=m.length;o eval")>-1;r&&(b=k.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==o||c[5]||"undefined"==typeof a.columnNumber||(n[0].column=a.columnNumber+1),f={url:c[3],func:c[1]||j,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}if(!f.func&&f.line&&(f.func=j),f.url&&"blob:"===f.url.substr(0,5)){var s=new XMLHttpRequest;if(s.open("GET",f.url,!1),s.send(null),200===s.status){var t=s.responseText||"";t=t.slice(-300);var u=t.match(/\/\/# sourceMappingURL=(.*)$/);if(u){var v=u[1];"~"===v.charAt(0)&&(v=e()+v.slice(1)),f.url=v.slice(0,-4)}}}n.push(f)}return n.length?{name:a.name,message:a.message,url:d(),stack:n}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=j),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,e){for(var h,i,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==f&&o!==g.report){if(i={url:null,func:j,line:null,column:null},o.name?i.func=o.name:(h=k.exec(o.toString()))&&(i.func=h[1]),"undefined"==typeof i.func)try{i.func=h.input.substring(0,h.input.indexOf("{"))}catch(p){}m[""+o]?n=!0:m[""+o]=!0,l.push(i)}e&&l.splice(0,e);var q={name:a.name,message:a.message,url:d(),stack:l};return b(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),q}function f(b,e){var f=null;e=null==e?0:+e;try{if(f=a(b))return f}catch(h){if(g.debug)throw h}try{if(f=c(b,e+1))return f}catch(h){if(g.debug)throw h}return{name:b.name,message:b.message,url:d()}}return f.augmentStackTraceWithInitialElement=b,f.computeStackTraceFromStackProp=a,f}(),b.exports=g}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{}); +},{5:5}],7:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}],8:[function(a,b,c){function d(a,b){var c=(65535&a)+(65535&b),d=(a>>16)+(b>>16)+(c>>16);return d<<16|65535&c}function e(a,b){return a<>>32-b}function f(a,b,c,f,g,h){return d(e(d(d(b,a),d(f,h)),g),c)}function g(a,b,c,d,e,g,h){return f(b&c|~b&d,a,b,e,g,h)}function h(a,b,c,d,e,g,h){return f(b&d|c&~d,a,b,e,g,h)}function i(a,b,c,d,e,g,h){return f(b^c^d,a,b,e,g,h)}function j(a,b,c,d,e,g,h){return f(c^(b|~d),a,b,e,g,h)}function k(a,b){a[b>>5]|=128<>>9<<4)+14]=b;var c,e,f,k,l,m=1732584193,n=-271733879,o=-1732584194,p=271733878;for(c=0;c>5]>>>b%32&255);return c}function m(a){var b,c=[];for(c[(a.length>>2)-1]=void 0,b=0;b>5]|=(255&a.charCodeAt(b/8))<16&&(e=k(e,8*a.length)),c=0;c<16;c+=1)f[c]=909522486^e[c],g[c]=1549556828^e[c];return d=k(f.concat(m(b)),512+8*b.length),l(k(g.concat(d),640))}function p(a){var b,c,d="0123456789abcdef",e="";for(c=0;c>>4&15)+d.charAt(15&b);return e}function q(a){return unescape(encodeURIComponent(a))}function r(a){return n(q(a))}function s(a){return p(r(a))}function t(a,b){return o(q(a),q(b))}function u(a,b){return p(t(a,b))}function v(a,b,c){return b?c?t(b,a):u(b,a):c?r(a):s(a)}b.exports=v},{}]},{},[4])(4)}); //# sourceMappingURL=raven.min.js.map \ No newline at end of file diff --git a/dist/raven.min.js.map b/dist/raven.min.js.map index aa94ff58f511..90452f2145fb 100644 --- a/dist/raven.min.js.map +++ b/dist/raven.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","RavenConfigError","message","name","prototype","constructor","2","utils","wrapMethod","console","level","callback","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","msg","safeJoin","data","logger","extra","Function","apply","5","3","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","sanitizeKeys","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isErrorEvent","isDOMError","isDOMException","isError","isObject","isPlainObject","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","sanitize","wrapConsoleMethod","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","config","dsn","options","_logDebug","globalOptions","key","value","setDSN","push","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","toString","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","substr","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","context","func","undefined","wrap","_before","wrapped","deep","_ignoreNextOnError","captureException","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","T","event","reason","unhandledPromiseRejection","B","_promiseRejectionHandler","bind","addEventListener","P","removeEventListener","ex","trimHeadFrames","error","captureMessage","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","U","currentOptions","exKeys","Object","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","addPlugin","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","setDataCallback","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","L","setTimeout","$","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","_","evtName","_keypressTimeout","target","category","ba","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","ca","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","C","_originalFunctionToString","Q","D","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","type","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","E","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","R","builtin","S","F","installer","concat","G","str","m","exec","allowSecretKey","J","port","A","V","stackInfo","_triggerEvent","_processException","lineno","X","frame","_normalizeFrame","in_app","ga","stackInfoUrl","normalized","filename","line","colno","column","function","fa","prefixedMessage","exception","values","culprit","ha","request","Referer","breadcrumbs","_trimBreadcrumbs","ia","urlProp","urlProps","ja","httpData","userAgent","User-Agent","referrer","y","_backoffDuration","_backoffStart","ma","na","current","last","oa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Y","baseData","project","platform","_getHttpData","serverName","server_name","_sanitizeData","forEach","random","_sendProcessedPayload","pa","ra","qa","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","sa","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","onerror","open","setRequestHeader","send","ta","hash","evaluated","z","Z","setUser","setReleaseContext","6","7","8","4","RavenConstructor","_Raven","noConflict","Client","what","supportsErrorEvent","ErrorEvent","supportsDOMError","DOMError","supportsDOMException","DOMException","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","wrappedCallback","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","sanitizeMask","safeInput","o_O","getLocationHref","getLocationOrigin","origin","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","responseText","sourceMaps","sourceMapAddress","charAt","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","string","raw"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file +{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","RavenConfigError","message","name","prototype","constructor","2","utils","wrapMethod","console","level","callback","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","msg","safeJoin","data","logger","extra","Function","apply","5","3","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","sanitizeKeys","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isErrorEvent","isDOMError","isDOMException","isError","isObject","isPlainObject","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","sanitize","wrapConsoleMethod","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","config","dsn","options","_logDebug","globalOptions","key","value","setDSN","push","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","toString","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","substr","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","context","func","undefined","wrap","_before","wrapped","deep","_ignoreNextOnError","captureException","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","T","event","reason","unhandledPromiseRejection","B","_promiseRejectionHandler","bind","addEventListener","P","removeEventListener","ex","trimHeadFrames","error","captureMessage","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","U","currentOptions","exKeys","Object","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","addPlugin","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","setDataCallback","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","L","setTimeout","$","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","_","evtName","_keypressTimeout","target","category","ba","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","ca","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","C","_originalFunctionToString","Q","D","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","type","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","E","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","R","builtin","S","F","installer","concat","G","str","m","exec","allowSecretKey","J","port","A","V","stackInfo","_triggerEvent","_processException","lineno","X","frame","_normalizeFrame","in_app","ga","stackInfoUrl","normalized","filename","line","colno","column","function","fa","prefixedMessage","exception","values","culprit","ha","request","Referer","breadcrumbs","_trimBreadcrumbs","ia","urlProp","urlProps","ja","httpData","userAgent","User-Agent","referrer","y","_backoffDuration","_backoffStart","ma","na","current","last","oa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Y","baseData","project","platform","_getHttpData","serverName","server_name","_sanitizeData","forEach","random","_sendProcessedPayload","pa","ra","qa","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","sa","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","onerror","open","setRequestHeader","send","ta","hash","evaluated","z","Z","setUser","setReleaseContext","6","7","8","4","RavenConstructor","_Raven","noConflict","Client","what","supportsErrorEvent","ErrorEvent","supportsDOMError","DOMError","supportsDOMException","DOMException","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","wrappedCallback","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","sanitizeMask","safeInput","o_O","getLocationHref","getLocationOrigin","origin","hostname","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","responseText","sourceMaps","sourceMapAddress","charAt","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","string","raw"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file diff --git a/dist/require,vue/raven.js b/dist/require,vue/raven.js index a7ed193f5efe..8a4caafc379a 100644 --- a/dist/require,vue/raven.js +++ b/dist/require,vue/raven.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.25.0 (80dffad) | github.com/getsentry/raven-js */ +/*! Raven.js 3.25.1 (b6f3c7a) | github.com/getsentry/raven-js */ /* * Includes TraceKit @@ -274,7 +274,7 @@ Raven.prototype = { // webpack (using a build step causes webpack #1617). Grunt verifies that // this value matches package.json during build. // See: https://github.com/getsentry/raven-js/issues/465 - VERSION: '3.25.0', + VERSION: '3.25.1', debug: false, @@ -1583,8 +1583,8 @@ Raven.prototype = { var hasPushAndReplaceState = !isChromePackagedApp && _window.history && - history.pushState && - history.replaceState; + _window.history.pushState && + _window.history.replaceState; if (autoBreadcrumbs.location && hasPushAndReplaceState) { // TODO: remove onpopstate handler on uninstall() var oldOnPopState = _window.onpopstate; @@ -1613,8 +1613,8 @@ Raven.prototype = { }; }; - fill(history, 'pushState', historyReplacementFunction, wrappedBuiltIns); - fill(history, 'replaceState', historyReplacementFunction, wrappedBuiltIns); + fill(_window.history, 'pushState', historyReplacementFunction, wrappedBuiltIns); + fill(_window.history, 'replaceState', historyReplacementFunction, wrappedBuiltIns); } if (autoBreadcrumbs.console && 'console' in _window && console.log) { @@ -1904,7 +1904,7 @@ Raven.prototype = { if (this._hasNavigator && _navigator.userAgent) { httpData.headers = { - 'User-Agent': navigator.userAgent + 'User-Agent': _navigator.userAgent }; } @@ -3079,6 +3079,16 @@ function getLocationHref() { function getLocationOrigin() { if (typeof document === 'undefined' || document.location == null) return ''; + + // Oh dear IE10... + if (!document.location.origin) { + document.location.origin = + document.location.protocol + + '//' + + document.location.hostname + + (document.location.port ? ':' + document.location.port : ''); + } + return document.location.origin; } diff --git a/dist/require,vue/raven.min.js b/dist/require,vue/raven.min.js index c563391d4c2b..1664d756d922 100644 --- a/dist/require,vue/raven.min.js +++ b/dist/require,vue/raven.min.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.25.0 (80dffad) | github.com/getsentry/raven-js */ -!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.Raven=a()}}(function(){var a;return function b(a,c,d){function e(g,h){if(!c[g]){if(!a[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};a[g][0].call(k.exports,function(b){var c=a[g][1][b];return e(c?c:b)},k,k.exports,b,a,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;g":"anonymous component")+(a._isVue&&a.$options.__file?" at "+a.$options.__file:"")}function e(a,b){if(b=b||window.Vue,b&&b.config){var c=b.config.errorHandler;b.config.errorHandler=function(b,e,f){var g={};"[object Object]"===Object.prototype.toString.call(e)&&(g.componentName=d(e),g.propsData=e.$options.propsData),"undefined"!=typeof f&&(g.lifecycleHook=f),a.captureException(b,{extra:g}),"function"==typeof c&&c.call(this,b,e,f)}}}b.exports=e,a(6).addPlugin(b.exports)},{6:6}],3:[function(a,b,c){function d(a){this.name="RavenConfigError",this.message=a}d.prototype=new Error,d.prototype.constructor=d,b.exports=d},{}],4:[function(a,b,c){var d=a(7),e=function(a,b,c){var e=a[b],f=a;if(b in a){var g="warn"===b?"warning":b;a[b]=function(){var a=[].slice.call(arguments),h=d.safeJoin(a," "),i={level:g,logger:"console",extra:{arguments:a}};"assert"===b?a[0]===!1&&(h="Assertion failed: "+(d.safeJoin(a.slice(1)," ")||"console.assert"),i.extra.arguments=a.slice(1),c&&c(h,i)):c&&c(h,i),e&&Function.prototype.apply.call(e,f,a)}}};b.exports={wrapMethod:e}},{7:7}],5:[function(a,b,c){(function(c){function d(){return+new Date}function e(a,b){return s(b)?function(c){return b(c,a)}:b}function f(){this.a=!("object"!=typeof JSON||!JSON.stringify),this.b=!r(S),this.c=!r(T),this.d=null,this.e=null,this.f=null,this.g=null,this.h=null,this.i=null,this.j={},this.k={release:R.SENTRY_RELEASE&&R.SENTRY_RELEASE.id,logger:"javascript",ignoreErrors:[],ignoreUrls:[],whitelistUrls:[],includePaths:[],headers:null,collectWindowErrors:!0,captureUnhandledRejections:!0,maxMessageLength:0,maxUrlLength:250,stackTraceLimit:50,autoBreadcrumbs:!0,instrument:!0,sampleRate:1,sanitizeKeys:[]},this.l={method:"POST",keepalive:!0,referrerPolicy:K()?"origin":""},this.m=0,this.n=!1,this.o=Error.stackTraceLimit,this.p=R.console||{},this.q={},this.r=[],this.s=d(),this.t=[],this.u=[],this.v=null,this.w=R.location,this.x=this.w&&this.w.href,this.y();for(var a in this.p)this.q[a]=this.p[a]}var g=a(8),h=a(9),i=a(10),j=a(3),k=a(7),l=k.isErrorEvent,m=k.isDOMError,n=k.isDOMException,o=k.isError,p=k.isObject,q=k.isPlainObject,r=k.isUndefined,s=k.isFunction,t=k.isString,u=k.isArray,v=k.isEmptyObject,w=k.each,x=k.objectMerge,y=k.truncate,z=k.objectFrozen,A=k.hasKey,B=k.joinRegExp,C=k.urlencode,D=k.uuid4,E=k.htmlTreeAsString,F=k.isSameException,G=k.isSameStacktrace,H=k.parseUrl,I=k.fill,J=k.supportsFetch,K=k.supportsReferrerPolicy,L=k.serializeKeysForMessage,M=k.serializeException,N=k.sanitize,O=a(4).wrapMethod,P="source protocol user pass host port path".split(" "),Q=/^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/,R="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},S=R.document,T=R.navigator;f.prototype={VERSION:"3.25.0",debug:!1,TraceKit:g,config:function(a,b){var c=this;if(c.g)return this.z("error","Error: Raven has already been configured"),c;if(!a)return c;var d=c.k;b&&w(b,function(a,b){"tags"===a||"extra"===a||"user"===a?c.j[a]=b:d[a]=b}),c.setDSN(a),d.ignoreErrors.push(/^Script error\.?$/),d.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/),d.ignoreErrors=B(d.ignoreErrors),d.ignoreUrls=!!d.ignoreUrls.length&&B(d.ignoreUrls),d.whitelistUrls=!!d.whitelistUrls.length&&B(d.whitelistUrls),d.includePaths=B(d.includePaths),d.maxBreadcrumbs=Math.max(0,Math.min(d.maxBreadcrumbs||100,100));var e={xhr:!0,console:!0,dom:!0,location:!0,sentry:!0},f=d.autoBreadcrumbs;"[object Object]"==={}.toString.call(f)?f=x(e,f):f!==!1&&(f=e),d.autoBreadcrumbs=f;var h={tryCatch:!0},i=d.instrument;return"[object Object]"==={}.toString.call(i)?i=x(h,i):i!==!1&&(i=h),d.instrument=i,g.collectWindowErrors=!!d.collectWindowErrors,c},install:function(){var a=this;return a.isSetup()&&!a.n&&(g.report.subscribe(function(){a.A.apply(a,arguments)}),a.k.captureUnhandledRejections&&a.B(),a.C(),a.k.instrument&&a.k.instrument.tryCatch&&a.D(),a.k.autoBreadcrumbs&&a.E(),a.F(),a.n=!0),Error.stackTraceLimit=a.k.stackTraceLimit,this},setDSN:function(a){var b=this,c=b.G(a),d=c.path.lastIndexOf("/"),e=c.path.substr(1,d);b.H=a,b.h=c.user,b.I=c.pass&&c.pass.substr(1),b.i=c.path.substr(d+1),b.g=b.J(c),b.K=b.g+"/"+e+"api/"+b.i+"/store/",this.y()},context:function(a,b,c){return s(a)&&(c=b||[],b=a,a=void 0),this.wrap(a,b).apply(this,c)},wrap:function(a,b,c){function d(){var d=[],f=arguments.length,g=!a||a&&a.deep!==!1;for(c&&s(c)&&c.apply(this,arguments);f--;)d[f]=g?e.wrap(a,arguments[f]):arguments[f];try{return b.apply(this,d)}catch(h){throw e.L(),e.captureException(h,a),h}}var e=this;if(r(b)&&!s(a))return a;if(s(a)&&(b=a,a=void 0),!s(b))return b;try{if(b.M)return b;if(b.N)return b.N}catch(f){return b}for(var g in b)A(b,g)&&(d[g]=b[g]);return d.prototype=b.prototype,b.N=d,d.M=!0,d.O=b,d},uninstall:function(){return g.report.uninstall(),this.P(),this.Q(),this.R(),this.S(),Error.stackTraceLimit=this.o,this.n=!1,this},T:function(a){this.z("debug","Raven caught unhandled promise rejection:",a),this.captureException(a.reason,{extra:{unhandledPromiseRejection:!0}})},B:function(){return this.T=this.T.bind(this),R.addEventListener&&R.addEventListener("unhandledrejection",this.T),this},P:function(){return R.removeEventListener&&R.removeEventListener("unhandledrejection",this.T),this},captureException:function(a,b){if(b=x({trimHeadFrames:0},b?b:{}),l(a)&&a.error)a=a.error;else{if(m(a)||n(a)){var c=a.name||(m(a)?"DOMError":"DOMException"),d=a.message?c+": "+a.message:c;return this.captureMessage(d,x(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}))}if(o(a))a=a;else{if(!q(a))return this.captureMessage(a,x(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}));b=this.U(b,a),a=new Error(b.message)}}this.d=a;try{var e=g.computeStackTrace(a);this.V(e,b)}catch(f){if(a!==f)throw f}return this},U:function(a,b){var c=Object.keys(b).sort(),d=x(a,{message:"Non-Error exception captured with keys: "+L(c),fingerprint:[i(c)],extra:a.extra||{}});return d.extra.W=M(b),d},captureMessage:function(a,b){if(!this.k.ignoreErrors.test||!this.k.ignoreErrors.test(a)){b=b||{},a+="";var c,d=x({message:a},b);try{throw new Error(a)}catch(e){c=e}c.name=null;var f=g.computeStackTrace(c),h=u(f.stack)&&f.stack[1];h&&"Raven.captureException"===h.func&&(h=f.stack[2]);var i=h&&h.url||"";if((!this.k.ignoreUrls.test||!this.k.ignoreUrls.test(i))&&(!this.k.whitelistUrls.test||this.k.whitelistUrls.test(i))){if(this.k.stacktrace||b&&b.stacktrace){d.fingerprint=null==d.fingerprint?a:d.fingerprint,b=x({trimHeadFrames:0},b),b.trimHeadFrames+=1;var j=this.X(f,b);d.stacktrace={frames:j.reverse()}}return d.fingerprint&&(d.fingerprint=u(d.fingerprint)?d.fingerprint:[d.fingerprint]),this.Y(d),this}}},captureBreadcrumb:function(a){var b=x({timestamp:d()/1e3},a);if(s(this.k.breadcrumbCallback)){var c=this.k.breadcrumbCallback(b);if(p(c)&&!v(c))b=c;else if(c===!1)return this}return this.u.push(b),this.u.length>this.k.maxBreadcrumbs&&this.u.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.r.push([a,b]),this.n&&this.F(),this},setUserContext:function(a){return this.j.user=a,this},setExtraContext:function(a){return this.Z("extra",a),this},setTagsContext:function(a){return this.Z("tags",a),this},clearContext:function(){return this.j={},this},getContext:function(){return JSON.parse(h(this.j))},setEnvironment:function(a){return this.k.environment=a,this},setRelease:function(a){return this.k.release=a,this},setDataCallback:function(a){var b=this.k.dataCallback;return this.k.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.k.breadcrumbCallback;return this.k.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.k.shouldSendCallback;return this.k.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.k.transport=a,this},lastException:function(){return this.d},lastEventId:function(){return this.f},isSetup:function(){return!!this.a&&(!!this.g||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.z("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=R.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(S){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.H;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.j.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.J(this.G(c)),h=S.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(S.head||S.body).appendChild(h)}},L:function(){var a=this;this.m+=1,setTimeout(function(){a.m-=1})},$:function(a,b){var c,d;if(this.b){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),S.createEvent?(c=S.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=S.createEventObject(),c.eventType=a);for(d in b)A(b,d)&&(c[d]=b[d]);if(S.createEvent)S.dispatchEvent(c);else try{S.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},_:function(a){var b=this;return function(c){if(b.aa=null,b.v!==c){b.v=c;var d;try{d=E(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ba:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.aa;g||a._("input")(c),clearTimeout(g),a.aa=setTimeout(function(){a.aa=null},b)}}},ca:function(a,b){var c=H(this.w.href),d=H(b),e=H(a);this.x=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},C:function(){var a=this;a.da=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.M?a.da.apply(this.O,arguments):a.da.apply(this,arguments)}},Q:function(){this.da&&(Function.prototype.toString=this.da)},D:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.ca(b.x,c+""),a.apply(this,arguments)}};I(history,"pushState",j,d),I(history,"replaceState",j,d)}if(c.console&&"console"in R&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};w(["debug","info","warn","error","log"],function(a,b){O(console,b,k)})}},R:function(){for(var a;this.t.length;){a=this.t.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},S:function(){for(var a in this.q)this.p[a]=this.q[a]},F:function(){var a=this;w(this.r,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},G:function(a){var b=Q.exec(a),c={},d=7;try{for(;d--;)c[P[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.k.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},J:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},A:function(){this.m||this.V.apply(this,arguments)},V:function(a,b){var c=this.X(a,b);this.$("handle",{stackInfo:a,options:b}),this.fa(a.name,a.message,a.url,a.lineno,c,b)},X:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(w(a.stack,function(b,e){var f=c.ga(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.u,0)}),this.j.user&&(a.user=this.j.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),a=this.pa(a),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||v(a[b]))&&delete a[b]}),s(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!v(a)&&(!s(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.ma()?void this.z("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function F(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&l(b))for(c=b.split(/\s+/),f=0;fc?Q(a,b-1):d}function R(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?X:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function S(a,b){function c(a){return m(a)?a.map(function(a){return c(a)}):k(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!m(b)||m(b)&&0===b.length)return a;var d,e=A(b),f="********";try{d=JSON.parse(T(a))}catch(g){return a}return c(d)}var T=a(9),U="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},V=3,W=51200,X=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isDOMError:g,isDOMException:h,isUndefined:i,isFunction:j,isPlainObject:k,isString:l,isArray:m,isEmptyObject:n,supportsErrorEvent:o,supportsDOMError:p,supportsDOMException:q,supportsFetch:r,supportsReferrerPolicy:s,supportsPromiseRejectionEvent:t,wrappedCallback:u,each:v,objectMerge:w,truncate:y,objectFrozen:x,hasKey:z,joinRegExp:A,urlencode:B,uuid4:D,htmlTreeAsString:E,htmlElementAsString:F,isSameException:I,isSameStacktrace:J,parseUrl:C,fill:K,safeJoin:L,serializeException:Q,serializeKeysForMessage:R,sanitize:S}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{9:9}],8:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}function e(){return"undefined"==typeof document||null==document.location?"":document.location.origin}var f=a(7),g={collectWindowErrors:!0,debug:!1},h="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},i=[].slice,j="?",k=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;g.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function e(a,b){var c=null;if(!b||g.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(i.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,h,i){var l=null,m=f.isErrorEvent(i)?i.error:i,n=f.isErrorEvent(a)?a.message:a;if(v)g.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&f.isError(m))l=g.computeStackTrace(m),e(l,!0);else{var p,r={url:b,line:c,column:h},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(k);p&&(s=p[1],n=p[2])}r.func=j,l={name:s,message:n,url:d(),stack:[r]},e(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=h.onerror,h.onerror=l,r=!0)}function n(){r&&(h.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,e.apply(null,[a,!1].concat(b))}function p(a,b){var c=i.call(arguments,1);if(v){if(u===a)return;o()}var d=g.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),g.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,f,g=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,h=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,i=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,k=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,l=/\((\S*)(?::(\d+))(?::(\d+))\)/,m=a.stack.split("\n"),n=[],o=(/^(.*) is undefined$/.exec(a.message),0),p=m.length;o eval")>-1;r&&(b=k.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==o||c[5]||"undefined"==typeof a.columnNumber||(n[0].column=a.columnNumber+1),f={url:c[3],func:c[1]||j,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}if(!f.func&&f.line&&(f.func=j),f.url&&"blob:"===f.url.substr(0,5)){var s=new XMLHttpRequest;if(s.open("GET",f.url,!1),s.send(null),200===s.status){var t=s.responseText||"";t=t.slice(-300);var u=t.match(/\/\/# sourceMappingURL=(.*)$/);if(u){var v=u[1];"~"===v.charAt(0)&&(v=e()+v.slice(1)),f.url=v.slice(0,-4)}}}n.push(f)}return n.length?{name:a.name,message:a.message,url:d(),stack:n}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=j),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,e){for(var h,i,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==f&&o!==g.report){if(i={url:null,func:j,line:null,column:null},o.name?i.func=o.name:(h=k.exec(o.toString()))&&(i.func=h[1]), -"undefined"==typeof i.func)try{i.func=h.input.substring(0,h.input.indexOf("{"))}catch(p){}m[""+o]?n=!0:m[""+o]=!0,l.push(i)}e&&l.splice(0,e);var q={name:a.name,message:a.message,url:d(),stack:l};return b(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),q}function f(b,e){var f=null;e=null==e?0:+e;try{if(f=a(b))return f}catch(h){if(g.debug)throw h}try{if(f=c(b,e+1))return f}catch(h){if(g.debug)throw h}return{name:b.name,message:b.message,url:d()}}return f.augmentStackTraceWithInitialElement=b,f.computeStackTraceFromStackProp=a,f}(),b.exports=g}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{7:7}],9:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}],10:[function(a,b,c){function d(a,b){var c=(65535&a)+(65535&b),d=(a>>16)+(b>>16)+(c>>16);return d<<16|65535&c}function e(a,b){return a<>>32-b}function f(a,b,c,f,g,h){return d(e(d(d(b,a),d(f,h)),g),c)}function g(a,b,c,d,e,g,h){return f(b&c|~b&d,a,b,e,g,h)}function h(a,b,c,d,e,g,h){return f(b&d|c&~d,a,b,e,g,h)}function i(a,b,c,d,e,g,h){return f(b^c^d,a,b,e,g,h)}function j(a,b,c,d,e,g,h){return f(c^(b|~d),a,b,e,g,h)}function k(a,b){a[b>>5]|=128<>>9<<4)+14]=b;var c,e,f,k,l,m=1732584193,n=-271733879,o=-1732584194,p=271733878;for(c=0;c>5]>>>b%32&255);return c}function m(a){var b,c=[];for(c[(a.length>>2)-1]=void 0,b=0;b>5]|=(255&a.charCodeAt(b/8))<16&&(e=k(e,8*a.length)),c=0;c<16;c+=1)f[c]=909522486^e[c],g[c]=1549556828^e[c];return d=k(f.concat(m(b)),512+8*b.length),l(k(g.concat(d),640))}function p(a){var b,c,d="0123456789abcdef",e="";for(c=0;c>>4&15)+d.charAt(15&b);return e}function q(a){return unescape(encodeURIComponent(a))}function r(a){return n(q(a))}function s(a){return p(r(a))}function t(a,b){return o(q(a),q(b))}function u(a,b){return p(t(a,b))}function v(a,b,c){return b?c?t(b,a):u(b,a):c?r(a):s(a)}b.exports=v},{}]},{},[6,1,2])(6)}); +/*! Raven.js 3.25.1 (b6f3c7a) | github.com/getsentry/raven-js */ +!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.Raven=a()}}(function(){var a;return function b(a,c,d){function e(g,h){if(!c[g]){if(!a[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};a[g][0].call(k.exports,function(b){var c=a[g][1][b];return e(c?c:b)},k,k.exports,b,a,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;g":"anonymous component")+(a._isVue&&a.$options.__file?" at "+a.$options.__file:"")}function e(a,b){if(b=b||window.Vue,b&&b.config){var c=b.config.errorHandler;b.config.errorHandler=function(b,e,f){var g={};"[object Object]"===Object.prototype.toString.call(e)&&(g.componentName=d(e),g.propsData=e.$options.propsData),"undefined"!=typeof f&&(g.lifecycleHook=f),a.captureException(b,{extra:g}),"function"==typeof c&&c.call(this,b,e,f)}}}b.exports=e,a(6).addPlugin(b.exports)},{6:6}],3:[function(a,b,c){function d(a){this.name="RavenConfigError",this.message=a}d.prototype=new Error,d.prototype.constructor=d,b.exports=d},{}],4:[function(a,b,c){var d=a(7),e=function(a,b,c){var e=a[b],f=a;if(b in a){var g="warn"===b?"warning":b;a[b]=function(){var a=[].slice.call(arguments),h=d.safeJoin(a," "),i={level:g,logger:"console",extra:{arguments:a}};"assert"===b?a[0]===!1&&(h="Assertion failed: "+(d.safeJoin(a.slice(1)," ")||"console.assert"),i.extra.arguments=a.slice(1),c&&c(h,i)):c&&c(h,i),e&&Function.prototype.apply.call(e,f,a)}}};b.exports={wrapMethod:e}},{7:7}],5:[function(a,b,c){(function(c){function d(){return+new Date}function e(a,b){return s(b)?function(c){return b(c,a)}:b}function f(){this.a=!("object"!=typeof JSON||!JSON.stringify),this.b=!r(S),this.c=!r(T),this.d=null,this.e=null,this.f=null,this.g=null,this.h=null,this.i=null,this.j={},this.k={release:R.SENTRY_RELEASE&&R.SENTRY_RELEASE.id,logger:"javascript",ignoreErrors:[],ignoreUrls:[],whitelistUrls:[],includePaths:[],headers:null,collectWindowErrors:!0,captureUnhandledRejections:!0,maxMessageLength:0,maxUrlLength:250,stackTraceLimit:50,autoBreadcrumbs:!0,instrument:!0,sampleRate:1,sanitizeKeys:[]},this.l={method:"POST",keepalive:!0,referrerPolicy:K()?"origin":""},this.m=0,this.n=!1,this.o=Error.stackTraceLimit,this.p=R.console||{},this.q={},this.r=[],this.s=d(),this.t=[],this.u=[],this.v=null,this.w=R.location,this.x=this.w&&this.w.href,this.y();for(var a in this.p)this.q[a]=this.p[a]}var g=a(8),h=a(9),i=a(10),j=a(3),k=a(7),l=k.isErrorEvent,m=k.isDOMError,n=k.isDOMException,o=k.isError,p=k.isObject,q=k.isPlainObject,r=k.isUndefined,s=k.isFunction,t=k.isString,u=k.isArray,v=k.isEmptyObject,w=k.each,x=k.objectMerge,y=k.truncate,z=k.objectFrozen,A=k.hasKey,B=k.joinRegExp,C=k.urlencode,D=k.uuid4,E=k.htmlTreeAsString,F=k.isSameException,G=k.isSameStacktrace,H=k.parseUrl,I=k.fill,J=k.supportsFetch,K=k.supportsReferrerPolicy,L=k.serializeKeysForMessage,M=k.serializeException,N=k.sanitize,O=a(4).wrapMethod,P="source protocol user pass host port path".split(" "),Q=/^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/,R="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},S=R.document,T=R.navigator;f.prototype={VERSION:"3.25.1",debug:!1,TraceKit:g,config:function(a,b){var c=this;if(c.g)return this.z("error","Error: Raven has already been configured"),c;if(!a)return c;var d=c.k;b&&w(b,function(a,b){"tags"===a||"extra"===a||"user"===a?c.j[a]=b:d[a]=b}),c.setDSN(a),d.ignoreErrors.push(/^Script error\.?$/),d.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/),d.ignoreErrors=B(d.ignoreErrors),d.ignoreUrls=!!d.ignoreUrls.length&&B(d.ignoreUrls),d.whitelistUrls=!!d.whitelistUrls.length&&B(d.whitelistUrls),d.includePaths=B(d.includePaths),d.maxBreadcrumbs=Math.max(0,Math.min(d.maxBreadcrumbs||100,100));var e={xhr:!0,console:!0,dom:!0,location:!0,sentry:!0},f=d.autoBreadcrumbs;"[object Object]"==={}.toString.call(f)?f=x(e,f):f!==!1&&(f=e),d.autoBreadcrumbs=f;var h={tryCatch:!0},i=d.instrument;return"[object Object]"==={}.toString.call(i)?i=x(h,i):i!==!1&&(i=h),d.instrument=i,g.collectWindowErrors=!!d.collectWindowErrors,c},install:function(){var a=this;return a.isSetup()&&!a.n&&(g.report.subscribe(function(){a.A.apply(a,arguments)}),a.k.captureUnhandledRejections&&a.B(),a.C(),a.k.instrument&&a.k.instrument.tryCatch&&a.D(),a.k.autoBreadcrumbs&&a.E(),a.F(),a.n=!0),Error.stackTraceLimit=a.k.stackTraceLimit,this},setDSN:function(a){var b=this,c=b.G(a),d=c.path.lastIndexOf("/"),e=c.path.substr(1,d);b.H=a,b.h=c.user,b.I=c.pass&&c.pass.substr(1),b.i=c.path.substr(d+1),b.g=b.J(c),b.K=b.g+"/"+e+"api/"+b.i+"/store/",this.y()},context:function(a,b,c){return s(a)&&(c=b||[],b=a,a=void 0),this.wrap(a,b).apply(this,c)},wrap:function(a,b,c){function d(){var d=[],f=arguments.length,g=!a||a&&a.deep!==!1;for(c&&s(c)&&c.apply(this,arguments);f--;)d[f]=g?e.wrap(a,arguments[f]):arguments[f];try{return b.apply(this,d)}catch(h){throw e.L(),e.captureException(h,a),h}}var e=this;if(r(b)&&!s(a))return a;if(s(a)&&(b=a,a=void 0),!s(b))return b;try{if(b.M)return b;if(b.N)return b.N}catch(f){return b}for(var g in b)A(b,g)&&(d[g]=b[g]);return d.prototype=b.prototype,b.N=d,d.M=!0,d.O=b,d},uninstall:function(){return g.report.uninstall(),this.P(),this.Q(),this.R(),this.S(),Error.stackTraceLimit=this.o,this.n=!1,this},T:function(a){this.z("debug","Raven caught unhandled promise rejection:",a),this.captureException(a.reason,{extra:{unhandledPromiseRejection:!0}})},B:function(){return this.T=this.T.bind(this),R.addEventListener&&R.addEventListener("unhandledrejection",this.T),this},P:function(){return R.removeEventListener&&R.removeEventListener("unhandledrejection",this.T),this},captureException:function(a,b){if(b=x({trimHeadFrames:0},b?b:{}),l(a)&&a.error)a=a.error;else{if(m(a)||n(a)){var c=a.name||(m(a)?"DOMError":"DOMException"),d=a.message?c+": "+a.message:c;return this.captureMessage(d,x(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}))}if(o(a))a=a;else{if(!q(a))return this.captureMessage(a,x(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}));b=this.U(b,a),a=new Error(b.message)}}this.d=a;try{var e=g.computeStackTrace(a);this.V(e,b)}catch(f){if(a!==f)throw f}return this},U:function(a,b){var c=Object.keys(b).sort(),d=x(a,{message:"Non-Error exception captured with keys: "+L(c),fingerprint:[i(c)],extra:a.extra||{}});return d.extra.W=M(b),d},captureMessage:function(a,b){if(!this.k.ignoreErrors.test||!this.k.ignoreErrors.test(a)){b=b||{},a+="";var c,d=x({message:a},b);try{throw new Error(a)}catch(e){c=e}c.name=null;var f=g.computeStackTrace(c),h=u(f.stack)&&f.stack[1];h&&"Raven.captureException"===h.func&&(h=f.stack[2]);var i=h&&h.url||"";if((!this.k.ignoreUrls.test||!this.k.ignoreUrls.test(i))&&(!this.k.whitelistUrls.test||this.k.whitelistUrls.test(i))){if(this.k.stacktrace||b&&b.stacktrace){d.fingerprint=null==d.fingerprint?a:d.fingerprint,b=x({trimHeadFrames:0},b),b.trimHeadFrames+=1;var j=this.X(f,b);d.stacktrace={frames:j.reverse()}}return d.fingerprint&&(d.fingerprint=u(d.fingerprint)?d.fingerprint:[d.fingerprint]),this.Y(d),this}}},captureBreadcrumb:function(a){var b=x({timestamp:d()/1e3},a);if(s(this.k.breadcrumbCallback)){var c=this.k.breadcrumbCallback(b);if(p(c)&&!v(c))b=c;else if(c===!1)return this}return this.u.push(b),this.u.length>this.k.maxBreadcrumbs&&this.u.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.r.push([a,b]),this.n&&this.F(),this},setUserContext:function(a){return this.j.user=a,this},setExtraContext:function(a){return this.Z("extra",a),this},setTagsContext:function(a){return this.Z("tags",a),this},clearContext:function(){return this.j={},this},getContext:function(){return JSON.parse(h(this.j))},setEnvironment:function(a){return this.k.environment=a,this},setRelease:function(a){return this.k.release=a,this},setDataCallback:function(a){var b=this.k.dataCallback;return this.k.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.k.breadcrumbCallback;return this.k.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.k.shouldSendCallback;return this.k.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.k.transport=a,this},lastException:function(){return this.d},lastEventId:function(){return this.f},isSetup:function(){return!!this.a&&(!!this.g||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.z("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=R.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(S){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.H;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.j.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.J(this.G(c)),h=S.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(S.head||S.body).appendChild(h)}},L:function(){var a=this;this.m+=1,setTimeout(function(){a.m-=1})},$:function(a,b){var c,d;if(this.b){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),S.createEvent?(c=S.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=S.createEventObject(),c.eventType=a);for(d in b)A(b,d)&&(c[d]=b[d]);if(S.createEvent)S.dispatchEvent(c);else try{S.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},_:function(a){var b=this;return function(c){if(b.aa=null,b.v!==c){b.v=c;var d;try{d=E(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ba:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.aa;g||a._("input")(c),clearTimeout(g),a.aa=setTimeout(function(){a.aa=null},b)}}},ca:function(a,b){var c=H(this.w.href),d=H(b),e=H(a);this.x=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},C:function(){var a=this;a.da=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.M?a.da.apply(this.O,arguments):a.da.apply(this,arguments)}},Q:function(){this.da&&(Function.prototype.toString=this.da)},D:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.ca(b.x,c+""),a.apply(this,arguments)}};I(R.history,"pushState",j,d),I(R.history,"replaceState",j,d)}if(c.console&&"console"in R&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};w(["debug","info","warn","error","log"],function(a,b){O(console,b,k)})}},R:function(){for(var a;this.t.length;){a=this.t.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},S:function(){for(var a in this.q)this.p[a]=this.q[a]},F:function(){var a=this;w(this.r,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},G:function(a){var b=Q.exec(a),c={},d=7;try{for(;d--;)c[P[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.k.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},J:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},A:function(){this.m||this.V.apply(this,arguments)},V:function(a,b){var c=this.X(a,b);this.$("handle",{stackInfo:a,options:b}),this.fa(a.name,a.message,a.url,a.lineno,c,b)},X:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(w(a.stack,function(b,e){var f=c.ga(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.u,0)}),this.j.user&&(a.user=this.j.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),a=this.pa(a),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||v(a[b]))&&delete a[b]}),s(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!v(a)&&(!s(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.ma()?void this.z("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function F(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&l(b))for(c=b.split(/\s+/),f=0;fc?Q(a,b-1):d}function R(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?X:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function S(a,b){function c(a){return m(a)?a.map(function(a){return c(a)}):k(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!m(b)||m(b)&&0===b.length)return a;var d,e=A(b),f="********";try{d=JSON.parse(T(a))}catch(g){return a}return c(d)}var T=a(9),U="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},V=3,W=51200,X=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isDOMError:g,isDOMException:h,isUndefined:i,isFunction:j,isPlainObject:k,isString:l,isArray:m,isEmptyObject:n,supportsErrorEvent:o,supportsDOMError:p,supportsDOMException:q,supportsFetch:r,supportsReferrerPolicy:s,supportsPromiseRejectionEvent:t,wrappedCallback:u,each:v,objectMerge:w,truncate:y,objectFrozen:x,hasKey:z,joinRegExp:A,urlencode:B,uuid4:D,htmlTreeAsString:E,htmlElementAsString:F,isSameException:I,isSameStacktrace:J,parseUrl:C,fill:K,safeJoin:L,serializeException:Q,serializeKeysForMessage:R,sanitize:S}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{9:9}],8:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}function e(){return"undefined"==typeof document||null==document.location?"":(document.location.origin||(document.location.origin=document.location.protocol+"//"+document.location.hostname+(document.location.port?":"+document.location.port:"")),document.location.origin)}var f=a(7),g={collectWindowErrors:!0,debug:!1},h="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},i=[].slice,j="?",k=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;g.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function e(a,b){var c=null;if(!b||g.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(i.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,h,i){var l=null,m=f.isErrorEvent(i)?i.error:i,n=f.isErrorEvent(a)?a.message:a;if(v)g.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&f.isError(m))l=g.computeStackTrace(m),e(l,!0);else{var p,r={url:b,line:c,column:h},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(k);p&&(s=p[1],n=p[2])}r.func=j,l={name:s,message:n,url:d(),stack:[r]},e(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=h.onerror,h.onerror=l,r=!0)}function n(){r&&(h.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,e.apply(null,[a,!1].concat(b))}function p(a,b){var c=i.call(arguments,1);if(v){if(u===a)return;o()}var d=g.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),g.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,f,g=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,h=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,i=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,k=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,l=/\((\S*)(?::(\d+))(?::(\d+))\)/,m=a.stack.split("\n"),n=[],o=(/^(.*) is undefined$/.exec(a.message),0),p=m.length;o eval")>-1;r&&(b=k.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==o||c[5]||"undefined"==typeof a.columnNumber||(n[0].column=a.columnNumber+1),f={url:c[3],func:c[1]||j,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}if(!f.func&&f.line&&(f.func=j),f.url&&"blob:"===f.url.substr(0,5)){var s=new XMLHttpRequest;if(s.open("GET",f.url,!1),s.send(null),200===s.status){var t=s.responseText||"";t=t.slice(-300);var u=t.match(/\/\/# sourceMappingURL=(.*)$/);if(u){var v=u[1];"~"===v.charAt(0)&&(v=e()+v.slice(1)),f.url=v.slice(0,-4)}}}n.push(f)}return n.length?{name:a.name,message:a.message,url:d(),stack:n}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=j),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,e){for(var h,i,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==f&&o!==g.report){ +if(i={url:null,func:j,line:null,column:null},o.name?i.func=o.name:(h=k.exec(o.toString()))&&(i.func=h[1]),"undefined"==typeof i.func)try{i.func=h.input.substring(0,h.input.indexOf("{"))}catch(p){}m[""+o]?n=!0:m[""+o]=!0,l.push(i)}e&&l.splice(0,e);var q={name:a.name,message:a.message,url:d(),stack:l};return b(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),q}function f(b,e){var f=null;e=null==e?0:+e;try{if(f=a(b))return f}catch(h){if(g.debug)throw h}try{if(f=c(b,e+1))return f}catch(h){if(g.debug)throw h}return{name:b.name,message:b.message,url:d()}}return f.augmentStackTraceWithInitialElement=b,f.computeStackTraceFromStackProp=a,f}(),b.exports=g}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{7:7}],9:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}],10:[function(a,b,c){function d(a,b){var c=(65535&a)+(65535&b),d=(a>>16)+(b>>16)+(c>>16);return d<<16|65535&c}function e(a,b){return a<>>32-b}function f(a,b,c,f,g,h){return d(e(d(d(b,a),d(f,h)),g),c)}function g(a,b,c,d,e,g,h){return f(b&c|~b&d,a,b,e,g,h)}function h(a,b,c,d,e,g,h){return f(b&d|c&~d,a,b,e,g,h)}function i(a,b,c,d,e,g,h){return f(b^c^d,a,b,e,g,h)}function j(a,b,c,d,e,g,h){return f(c^(b|~d),a,b,e,g,h)}function k(a,b){a[b>>5]|=128<>>9<<4)+14]=b;var c,e,f,k,l,m=1732584193,n=-271733879,o=-1732584194,p=271733878;for(c=0;c>5]>>>b%32&255);return c}function m(a){var b,c=[];for(c[(a.length>>2)-1]=void 0,b=0;b>5]|=(255&a.charCodeAt(b/8))<16&&(e=k(e,8*a.length)),c=0;c<16;c+=1)f[c]=909522486^e[c],g[c]=1549556828^e[c];return d=k(f.concat(m(b)),512+8*b.length),l(k(g.concat(d),640))}function p(a){var b,c,d="0123456789abcdef",e="";for(c=0;c>>4&15)+d.charAt(15&b);return e}function q(a){return unescape(encodeURIComponent(a))}function r(a){return n(q(a))}function s(a){return p(r(a))}function t(a,b){return o(q(a),q(b))}function u(a,b){return p(t(a,b))}function v(a,b,c){return b?c?t(b,a):u(b,a):c?r(a):s(a)}b.exports=v},{}]},{},[6,1,2])(6)}); //# sourceMappingURL=raven.min.js.map \ No newline at end of file diff --git a/dist/require,vue/raven.min.js.map b/dist/require,vue/raven.min.js.map index 6ff7d550d9e6..0113b4250c02 100644 --- a/dist/require,vue/raven.min.js.map +++ b/dist/require,vue/raven.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","requirePlugin","wrap","deep","addPlugin","6","2","formatComponentName","vm","$root","name","_isVue","$options","_componentTag","__file","vuePlugin","Vue","config","_oldOnError","errorHandler","error","info","metaData","Object","prototype","toString","componentName","propsData","lifecycleHook","captureException","extra","3","RavenConfigError","message","constructor","4","utils","wrapMethod","console","level","callback","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","msg","safeJoin","data","logger","Function","apply","7","5","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","sanitizeKeys","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isErrorEvent","isDOMError","isDOMException","isError","isObject","isPlainObject","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","sanitize","wrapConsoleMethod","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","dsn","options","_logDebug","globalOptions","key","value","setDSN","push","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","substr","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","context","func","undefined","_before","wrapped","_ignoreNextOnError","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","T","event","reason","unhandledPromiseRejection","B","_promiseRejectionHandler","bind","addEventListener","P","removeEventListener","ex","trimHeadFrames","captureMessage","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","U","currentOptions","exKeys","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","setDataCallback","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","L","setTimeout","$","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","_","evtName","_keypressTimeout","target","category","ba","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","ca","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","C","_originalFunctionToString","Q","D","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","type","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","E","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","R","builtin","S","F","installer","concat","G","str","m","exec","allowSecretKey","J","port","A","V","stackInfo","_triggerEvent","_processException","lineno","X","frame","_normalizeFrame","in_app","ga","stackInfoUrl","normalized","filename","line","colno","column","function","fa","prefixedMessage","exception","values","culprit","ha","request","Referer","breadcrumbs","_trimBreadcrumbs","ia","urlProp","urlProps","ja","httpData","userAgent","User-Agent","referrer","y","_backoffDuration","_backoffStart","ma","na","current","last","oa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Y","baseData","project","platform","_getHttpData","serverName","server_name","_sanitizeData","forEach","random","_sendProcessedPayload","pa","ra","qa","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","sa","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","onerror","open","setRequestHeader","send","ta","hash","evaluated","z","Z","setUser","setReleaseContext","10","8","9","RavenConstructor","_Raven","noConflict","Client","what","supportsErrorEvent","ErrorEvent","supportsDOMError","DOMError","supportsDOMException","DOMException","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","wrappedCallback","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","sanitizeMask","safeInput","o_O","getLocationHref","getLocationOrigin","origin","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","responseText","sourceMaps","sourceMapAddress","charAt","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","string","raw"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file +{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","requirePlugin","wrap","deep","addPlugin","6","2","formatComponentName","vm","$root","name","_isVue","$options","_componentTag","__file","vuePlugin","Vue","config","_oldOnError","errorHandler","error","info","metaData","Object","prototype","toString","componentName","propsData","lifecycleHook","captureException","extra","3","RavenConfigError","message","constructor","4","utils","wrapMethod","console","level","callback","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","msg","safeJoin","data","logger","Function","apply","7","5","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","sanitizeKeys","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isErrorEvent","isDOMError","isDOMException","isError","isObject","isPlainObject","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","sanitize","wrapConsoleMethod","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","dsn","options","_logDebug","globalOptions","key","value","setDSN","push","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","substr","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","context","func","undefined","_before","wrapped","_ignoreNextOnError","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","T","event","reason","unhandledPromiseRejection","B","_promiseRejectionHandler","bind","addEventListener","P","removeEventListener","ex","trimHeadFrames","captureMessage","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","U","currentOptions","exKeys","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","setDataCallback","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","L","setTimeout","$","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","_","evtName","_keypressTimeout","target","category","ba","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","ca","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","C","_originalFunctionToString","Q","D","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","type","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","E","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","R","builtin","S","F","installer","concat","G","str","m","exec","allowSecretKey","J","port","A","V","stackInfo","_triggerEvent","_processException","lineno","X","frame","_normalizeFrame","in_app","ga","stackInfoUrl","normalized","filename","line","colno","column","function","fa","prefixedMessage","exception","values","culprit","ha","request","Referer","breadcrumbs","_trimBreadcrumbs","ia","urlProp","urlProps","ja","httpData","userAgent","User-Agent","referrer","y","_backoffDuration","_backoffStart","ma","na","current","last","oa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Y","baseData","project","platform","_getHttpData","serverName","server_name","_sanitizeData","forEach","random","_sendProcessedPayload","pa","ra","qa","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","sa","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","onerror","open","setRequestHeader","send","ta","hash","evaluated","z","Z","setUser","setReleaseContext","10","8","9","RavenConstructor","_Raven","noConflict","Client","what","supportsErrorEvent","ErrorEvent","supportsDOMError","DOMError","supportsDOMException","DOMException","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","wrappedCallback","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","sanitizeMask","safeInput","o_O","getLocationHref","getLocationOrigin","origin","hostname","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","responseText","sourceMaps","sourceMapAddress","charAt","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","string","raw"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file diff --git a/dist/require/raven.js b/dist/require/raven.js index d53daf356439..aa29ce0567f3 100644 --- a/dist/require/raven.js +++ b/dist/require/raven.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.25.0 (80dffad) | github.com/getsentry/raven-js */ +/*! Raven.js 3.25.1 (b6f3c7a) | github.com/getsentry/raven-js */ /* * Includes TraceKit @@ -224,7 +224,7 @@ Raven.prototype = { // webpack (using a build step causes webpack #1617). Grunt verifies that // this value matches package.json during build. // See: https://github.com/getsentry/raven-js/issues/465 - VERSION: '3.25.0', + VERSION: '3.25.1', debug: false, @@ -1533,8 +1533,8 @@ Raven.prototype = { var hasPushAndReplaceState = !isChromePackagedApp && _window.history && - history.pushState && - history.replaceState; + _window.history.pushState && + _window.history.replaceState; if (autoBreadcrumbs.location && hasPushAndReplaceState) { // TODO: remove onpopstate handler on uninstall() var oldOnPopState = _window.onpopstate; @@ -1563,8 +1563,8 @@ Raven.prototype = { }; }; - fill(history, 'pushState', historyReplacementFunction, wrappedBuiltIns); - fill(history, 'replaceState', historyReplacementFunction, wrappedBuiltIns); + fill(_window.history, 'pushState', historyReplacementFunction, wrappedBuiltIns); + fill(_window.history, 'replaceState', historyReplacementFunction, wrappedBuiltIns); } if (autoBreadcrumbs.console && 'console' in _window && console.log) { @@ -1854,7 +1854,7 @@ Raven.prototype = { if (this._hasNavigator && _navigator.userAgent) { httpData.headers = { - 'User-Agent': navigator.userAgent + 'User-Agent': _navigator.userAgent }; } @@ -3029,6 +3029,16 @@ function getLocationHref() { function getLocationOrigin() { if (typeof document === 'undefined' || document.location == null) return ''; + + // Oh dear IE10... + if (!document.location.origin) { + document.location.origin = + document.location.protocol + + '//' + + document.location.hostname + + (document.location.port ? ':' + document.location.port : ''); + } + return document.location.origin; } diff --git a/dist/require/raven.min.js b/dist/require/raven.min.js index 3b00efd4c78f..d7dd3457a545 100644 --- a/dist/require/raven.min.js +++ b/dist/require/raven.min.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.25.0 (80dffad) | github.com/getsentry/raven-js */ -!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.Raven=a()}}(function(){var a;return function b(a,c,d){function e(g,h){if(!c[g]){if(!a[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};a[g][0].call(k.exports,function(b){var c=a[g][1][b];return e(c?c:b)},k,k.exports,b,a,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;gthis.k.maxBreadcrumbs&&this.u.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.r.push([a,b]),this.n&&this.F(),this},setUserContext:function(a){return this.j.user=a,this},setExtraContext:function(a){return this.Z("extra",a),this},setTagsContext:function(a){return this.Z("tags",a),this},clearContext:function(){return this.j={},this},getContext:function(){return JSON.parse(h(this.j))},setEnvironment:function(a){return this.k.environment=a,this},setRelease:function(a){return this.k.release=a,this},setDataCallback:function(a){var b=this.k.dataCallback;return this.k.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.k.breadcrumbCallback;return this.k.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.k.shouldSendCallback;return this.k.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.k.transport=a,this},lastException:function(){return this.d},lastEventId:function(){return this.f},isSetup:function(){return!!this.a&&(!!this.g||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.z("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=R.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(S){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.H;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.j.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.J(this.G(c)),h=S.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(S.head||S.body).appendChild(h)}},L:function(){var a=this;this.m+=1,setTimeout(function(){a.m-=1})},$:function(a,b){var c,d;if(this.b){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),S.createEvent?(c=S.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=S.createEventObject(),c.eventType=a);for(d in b)A(b,d)&&(c[d]=b[d]);if(S.createEvent)S.dispatchEvent(c);else try{S.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},_:function(a){var b=this;return function(c){if(b.aa=null,b.v!==c){b.v=c;var d;try{d=E(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ba:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.aa;g||a._("input")(c),clearTimeout(g),a.aa=setTimeout(function(){a.aa=null},b)}}},ca:function(a,b){var c=H(this.w.href),d=H(b),e=H(a);this.x=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},C:function(){var a=this;a.da=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.M?a.da.apply(this.O,arguments):a.da.apply(this,arguments)}},Q:function(){this.da&&(Function.prototype.toString=this.da)},D:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.ca(b.x,c+""),a.apply(this,arguments)}};I(history,"pushState",j,d),I(history,"replaceState",j,d)}if(c.console&&"console"in R&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};w(["debug","info","warn","error","log"],function(a,b){O(console,b,k)})}},R:function(){for(var a;this.t.length;){a=this.t.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},S:function(){for(var a in this.q)this.p[a]=this.q[a]},F:function(){var a=this;w(this.r,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},G:function(a){var b=Q.exec(a),c={},d=7;try{for(;d--;)c[P[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.k.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},J:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},A:function(){this.m||this.V.apply(this,arguments)},V:function(a,b){var c=this.X(a,b);this.$("handle",{stackInfo:a,options:b}),this.fa(a.name,a.message,a.url,a.lineno,c,b)},X:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(w(a.stack,function(b,e){var f=c.ga(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.u,0)}),this.j.user&&(a.user=this.j.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),a=this.pa(a),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||v(a[b]))&&delete a[b]}),s(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!v(a)&&(!s(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.ma()?void this.z("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function F(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&l(b))for(c=b.split(/\s+/),f=0;fc?Q(a,b-1):d}function R(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?X:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function S(a,b){function c(a){return m(a)?a.map(function(a){return c(a)}):k(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!m(b)||m(b)&&0===b.length)return a;var d,e=A(b),f="********";try{d=JSON.parse(T(a))}catch(g){return a}return c(d)}var T=a(8),U="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},V=3,W=51200,X=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isDOMError:g,isDOMException:h,isUndefined:i,isFunction:j,isPlainObject:k,isString:l,isArray:m,isEmptyObject:n,supportsErrorEvent:o,supportsDOMError:p,supportsDOMException:q,supportsFetch:r,supportsReferrerPolicy:s,supportsPromiseRejectionEvent:t,wrappedCallback:u,each:v,objectMerge:w,truncate:y,objectFrozen:x,hasKey:z,joinRegExp:A,urlencode:B,uuid4:D,htmlTreeAsString:E,htmlElementAsString:F,isSameException:I,isSameStacktrace:J,parseUrl:C,fill:K,safeJoin:L,serializeException:Q,serializeKeysForMessage:R,sanitize:S}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{8:8}],7:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}function e(){return"undefined"==typeof document||null==document.location?"":document.location.origin}var f=a(6),g={collectWindowErrors:!0,debug:!1},h="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},i=[].slice,j="?",k=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;g.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function e(a,b){var c=null;if(!b||g.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(i.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,h,i){var l=null,m=f.isErrorEvent(i)?i.error:i,n=f.isErrorEvent(a)?a.message:a;if(v)g.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&f.isError(m))l=g.computeStackTrace(m),e(l,!0);else{var p,r={url:b,line:c,column:h},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(k);p&&(s=p[1],n=p[2])}r.func=j,l={name:s,message:n,url:d(),stack:[r]},e(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=h.onerror,h.onerror=l,r=!0)}function n(){r&&(h.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,e.apply(null,[a,!1].concat(b))}function p(a,b){var c=i.call(arguments,1);if(v){if(u===a)return;o()}var d=g.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),g.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,f,g=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,h=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,i=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,k=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,l=/\((\S*)(?::(\d+))(?::(\d+))\)/,m=a.stack.split("\n"),n=[],o=(/^(.*) is undefined$/.exec(a.message),0),p=m.length;o eval")>-1;r&&(b=k.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==o||c[5]||"undefined"==typeof a.columnNumber||(n[0].column=a.columnNumber+1),f={url:c[3],func:c[1]||j,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}if(!f.func&&f.line&&(f.func=j),f.url&&"blob:"===f.url.substr(0,5)){var s=new XMLHttpRequest;if(s.open("GET",f.url,!1),s.send(null),200===s.status){var t=s.responseText||"";t=t.slice(-300);var u=t.match(/\/\/# sourceMappingURL=(.*)$/);if(u){var v=u[1];"~"===v.charAt(0)&&(v=e()+v.slice(1)),f.url=v.slice(0,-4)}}}n.push(f)}return n.length?{name:a.name,message:a.message,url:d(),stack:n}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=j),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,e){for(var h,i,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==f&&o!==g.report){if(i={url:null,func:j,line:null,column:null},o.name?i.func=o.name:(h=k.exec(o.toString()))&&(i.func=h[1]),"undefined"==typeof i.func)try{i.func=h.input.substring(0,h.input.indexOf("{"))}catch(p){}m[""+o]?n=!0:m[""+o]=!0,l.push(i)}e&&l.splice(0,e);var q={name:a.name,message:a.message,url:d(),stack:l};return b(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),q}function f(b,e){var f=null;e=null==e?0:+e;try{if(f=a(b))return f}catch(h){if(g.debug)throw h}try{if(f=c(b,e+1))return f}catch(h){if(g.debug)throw h}return{name:b.name,message:b.message,url:d()}}return f.augmentStackTraceWithInitialElement=b,f.computeStackTraceFromStackProp=a,f}(),b.exports=g}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{}); -},{6:6}],8:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}],9:[function(a,b,c){function d(a,b){var c=(65535&a)+(65535&b),d=(a>>16)+(b>>16)+(c>>16);return d<<16|65535&c}function e(a,b){return a<>>32-b}function f(a,b,c,f,g,h){return d(e(d(d(b,a),d(f,h)),g),c)}function g(a,b,c,d,e,g,h){return f(b&c|~b&d,a,b,e,g,h)}function h(a,b,c,d,e,g,h){return f(b&d|c&~d,a,b,e,g,h)}function i(a,b,c,d,e,g,h){return f(b^c^d,a,b,e,g,h)}function j(a,b,c,d,e,g,h){return f(c^(b|~d),a,b,e,g,h)}function k(a,b){a[b>>5]|=128<>>9<<4)+14]=b;var c,e,f,k,l,m=1732584193,n=-271733879,o=-1732584194,p=271733878;for(c=0;c>5]>>>b%32&255);return c}function m(a){var b,c=[];for(c[(a.length>>2)-1]=void 0,b=0;b>5]|=(255&a.charCodeAt(b/8))<16&&(e=k(e,8*a.length)),c=0;c<16;c+=1)f[c]=909522486^e[c],g[c]=1549556828^e[c];return d=k(f.concat(m(b)),512+8*b.length),l(k(g.concat(d),640))}function p(a){var b,c,d="0123456789abcdef",e="";for(c=0;c>>4&15)+d.charAt(15&b);return e}function q(a){return unescape(encodeURIComponent(a))}function r(a){return n(q(a))}function s(a){return p(r(a))}function t(a,b){return o(q(a),q(b))}function u(a,b){return p(t(a,b))}function v(a,b,c){return b?c?t(b,a):u(b,a):c?r(a):s(a)}b.exports=v},{}]},{},[5,1])(5)}); +/*! Raven.js 3.25.1 (b6f3c7a) | github.com/getsentry/raven-js */ +!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.Raven=a()}}(function(){var a;return function b(a,c,d){function e(g,h){if(!c[g]){if(!a[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};a[g][0].call(k.exports,function(b){var c=a[g][1][b];return e(c?c:b)},k,k.exports,b,a,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;gthis.k.maxBreadcrumbs&&this.u.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.r.push([a,b]),this.n&&this.F(),this},setUserContext:function(a){return this.j.user=a,this},setExtraContext:function(a){return this.Z("extra",a),this},setTagsContext:function(a){return this.Z("tags",a),this},clearContext:function(){return this.j={},this},getContext:function(){return JSON.parse(h(this.j))},setEnvironment:function(a){return this.k.environment=a,this},setRelease:function(a){return this.k.release=a,this},setDataCallback:function(a){var b=this.k.dataCallback;return this.k.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.k.breadcrumbCallback;return this.k.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.k.shouldSendCallback;return this.k.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.k.transport=a,this},lastException:function(){return this.d},lastEventId:function(){return this.f},isSetup:function(){return!!this.a&&(!!this.g||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.z("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=R.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(S){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.H;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.j.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.J(this.G(c)),h=S.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(S.head||S.body).appendChild(h)}},L:function(){var a=this;this.m+=1,setTimeout(function(){a.m-=1})},$:function(a,b){var c,d;if(this.b){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),S.createEvent?(c=S.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=S.createEventObject(),c.eventType=a);for(d in b)A(b,d)&&(c[d]=b[d]);if(S.createEvent)S.dispatchEvent(c);else try{S.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},_:function(a){var b=this;return function(c){if(b.aa=null,b.v!==c){b.v=c;var d;try{d=E(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ba:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.aa;g||a._("input")(c),clearTimeout(g),a.aa=setTimeout(function(){a.aa=null},b)}}},ca:function(a,b){var c=H(this.w.href),d=H(b),e=H(a);this.x=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},C:function(){var a=this;a.da=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.M?a.da.apply(this.O,arguments):a.da.apply(this,arguments)}},Q:function(){this.da&&(Function.prototype.toString=this.da)},D:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.ca(b.x,c+""),a.apply(this,arguments)}};I(R.history,"pushState",j,d),I(R.history,"replaceState",j,d)}if(c.console&&"console"in R&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};w(["debug","info","warn","error","log"],function(a,b){O(console,b,k)})}},R:function(){for(var a;this.t.length;){a=this.t.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},S:function(){for(var a in this.q)this.p[a]=this.q[a]},F:function(){var a=this;w(this.r,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},G:function(a){var b=Q.exec(a),c={},d=7;try{for(;d--;)c[P[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.k.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},J:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},A:function(){this.m||this.V.apply(this,arguments)},V:function(a,b){var c=this.X(a,b);this.$("handle",{stackInfo:a,options:b}),this.fa(a.name,a.message,a.url,a.lineno,c,b)},X:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(w(a.stack,function(b,e){var f=c.ga(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.u,0)}),this.j.user&&(a.user=this.j.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),a=this.pa(a),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||v(a[b]))&&delete a[b]}),s(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!v(a)&&(!s(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.ma()?void this.z("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function F(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&l(b))for(c=b.split(/\s+/),f=0;fc?Q(a,b-1):d}function R(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?X:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function S(a,b){function c(a){return m(a)?a.map(function(a){return c(a)}):k(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!m(b)||m(b)&&0===b.length)return a;var d,e=A(b),f="********";try{d=JSON.parse(T(a))}catch(g){return a}return c(d)}var T=a(8),U="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},V=3,W=51200,X=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isDOMError:g,isDOMException:h,isUndefined:i,isFunction:j,isPlainObject:k,isString:l,isArray:m,isEmptyObject:n,supportsErrorEvent:o,supportsDOMError:p,supportsDOMException:q,supportsFetch:r,supportsReferrerPolicy:s,supportsPromiseRejectionEvent:t,wrappedCallback:u,each:v,objectMerge:w,truncate:y,objectFrozen:x,hasKey:z,joinRegExp:A,urlencode:B,uuid4:D,htmlTreeAsString:E,htmlElementAsString:F,isSameException:I,isSameStacktrace:J,parseUrl:C,fill:K,safeJoin:L,serializeException:Q,serializeKeysForMessage:R,sanitize:S}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{8:8}],7:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}function e(){return"undefined"==typeof document||null==document.location?"":(document.location.origin||(document.location.origin=document.location.protocol+"//"+document.location.hostname+(document.location.port?":"+document.location.port:"")),document.location.origin)}var f=a(6),g={collectWindowErrors:!0,debug:!1},h="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},i=[].slice,j="?",k=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;g.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function e(a,b){var c=null;if(!b||g.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(i.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,h,i){var l=null,m=f.isErrorEvent(i)?i.error:i,n=f.isErrorEvent(a)?a.message:a;if(v)g.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&f.isError(m))l=g.computeStackTrace(m),e(l,!0);else{var p,r={url:b,line:c,column:h},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(k);p&&(s=p[1],n=p[2])}r.func=j,l={name:s,message:n,url:d(),stack:[r]},e(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=h.onerror,h.onerror=l,r=!0)}function n(){r&&(h.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,e.apply(null,[a,!1].concat(b))}function p(a,b){var c=i.call(arguments,1);if(v){if(u===a)return;o()}var d=g.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),g.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,f,g=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,h=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,i=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,k=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,l=/\((\S*)(?::(\d+))(?::(\d+))\)/,m=a.stack.split("\n"),n=[],o=(/^(.*) is undefined$/.exec(a.message),0),p=m.length;o eval")>-1;r&&(b=k.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==o||c[5]||"undefined"==typeof a.columnNumber||(n[0].column=a.columnNumber+1),f={url:c[3],func:c[1]||j,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}if(!f.func&&f.line&&(f.func=j),f.url&&"blob:"===f.url.substr(0,5)){var s=new XMLHttpRequest;if(s.open("GET",f.url,!1),s.send(null),200===s.status){var t=s.responseText||"";t=t.slice(-300);var u=t.match(/\/\/# sourceMappingURL=(.*)$/);if(u){var v=u[1];"~"===v.charAt(0)&&(v=e()+v.slice(1)),f.url=v.slice(0,-4)}}}n.push(f)}return n.length?{name:a.name,message:a.message,url:d(),stack:n}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=j),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,e){for(var h,i,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==f&&o!==g.report){if(i={url:null,func:j,line:null,column:null},o.name?i.func=o.name:(h=k.exec(o.toString()))&&(i.func=h[1]),"undefined"==typeof i.func)try{i.func=h.input.substring(0,h.input.indexOf("{"))}catch(p){}m[""+o]?n=!0:m[""+o]=!0,l.push(i)}e&&l.splice(0,e);var q={name:a.name,message:a.message,url:d(),stack:l};return b(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),q}function f(b,e){var f=null;e=null==e?0:+e;try{if(f=a(b))return f}catch(h){if(g.debug)throw h}try{if(f=c(b,e+1))return f}catch(h){if(g.debug)throw h; +}return{name:b.name,message:b.message,url:d()}}return f.augmentStackTraceWithInitialElement=b,f.computeStackTraceFromStackProp=a,f}(),b.exports=g}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{6:6}],8:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}],9:[function(a,b,c){function d(a,b){var c=(65535&a)+(65535&b),d=(a>>16)+(b>>16)+(c>>16);return d<<16|65535&c}function e(a,b){return a<>>32-b}function f(a,b,c,f,g,h){return d(e(d(d(b,a),d(f,h)),g),c)}function g(a,b,c,d,e,g,h){return f(b&c|~b&d,a,b,e,g,h)}function h(a,b,c,d,e,g,h){return f(b&d|c&~d,a,b,e,g,h)}function i(a,b,c,d,e,g,h){return f(b^c^d,a,b,e,g,h)}function j(a,b,c,d,e,g,h){return f(c^(b|~d),a,b,e,g,h)}function k(a,b){a[b>>5]|=128<>>9<<4)+14]=b;var c,e,f,k,l,m=1732584193,n=-271733879,o=-1732584194,p=271733878;for(c=0;c>5]>>>b%32&255);return c}function m(a){var b,c=[];for(c[(a.length>>2)-1]=void 0,b=0;b>5]|=(255&a.charCodeAt(b/8))<16&&(e=k(e,8*a.length)),c=0;c<16;c+=1)f[c]=909522486^e[c],g[c]=1549556828^e[c];return d=k(f.concat(m(b)),512+8*b.length),l(k(g.concat(d),640))}function p(a){var b,c,d="0123456789abcdef",e="";for(c=0;c>>4&15)+d.charAt(15&b);return e}function q(a){return unescape(encodeURIComponent(a))}function r(a){return n(q(a))}function s(a){return p(r(a))}function t(a,b){return o(q(a),q(b))}function u(a,b){return p(t(a,b))}function v(a,b,c){return b?c?t(b,a):u(b,a):c?r(a):s(a)}b.exports=v},{}]},{},[5,1])(5)}); //# sourceMappingURL=raven.min.js.map \ No newline at end of file diff --git a/dist/require/raven.min.js.map b/dist/require/raven.min.js.map index 89cebee3c863..05cbe9a4cacf 100644 --- a/dist/require/raven.min.js.map +++ b/dist/require/raven.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","requirePlugin","wrap","deep","addPlugin","5","2","RavenConfigError","message","name","prototype","constructor","3","utils","wrapMethod","console","level","callback","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","msg","safeJoin","data","logger","extra","Function","apply","6","4","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","sanitizeKeys","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isErrorEvent","isDOMError","isDOMException","isError","isObject","isPlainObject","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","sanitize","wrapConsoleMethod","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","config","dsn","options","_logDebug","globalOptions","key","value","setDSN","push","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","toString","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","substr","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","context","func","undefined","_before","wrapped","_ignoreNextOnError","captureException","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","T","event","reason","unhandledPromiseRejection","B","_promiseRejectionHandler","bind","addEventListener","P","removeEventListener","ex","trimHeadFrames","error","captureMessage","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","U","currentOptions","exKeys","Object","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","setDataCallback","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","L","setTimeout","$","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","_","evtName","_keypressTimeout","target","category","ba","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","ca","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","C","_originalFunctionToString","Q","D","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","type","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","E","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","R","builtin","S","F","installer","concat","G","str","m","exec","allowSecretKey","J","port","A","V","stackInfo","_triggerEvent","_processException","lineno","X","frame","_normalizeFrame","in_app","ga","stackInfoUrl","normalized","filename","line","colno","column","function","fa","prefixedMessage","exception","values","culprit","ha","request","Referer","breadcrumbs","_trimBreadcrumbs","ia","urlProp","urlProps","ja","httpData","userAgent","User-Agent","referrer","y","_backoffDuration","_backoffStart","ma","na","current","last","oa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Y","baseData","project","platform","_getHttpData","serverName","server_name","_sanitizeData","forEach","random","_sendProcessedPayload","pa","ra","qa","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","sa","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","onerror","open","setRequestHeader","send","ta","hash","evaluated","z","Z","setUser","setReleaseContext","7","8","9","RavenConstructor","_Raven","noConflict","Client","what","supportsErrorEvent","ErrorEvent","supportsDOMError","DOMError","supportsDOMException","DOMException","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","wrappedCallback","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","sanitizeMask","safeInput","o_O","getLocationHref","getLocationOrigin","origin","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","responseText","sourceMaps","sourceMapAddress","charAt","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","string","raw"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file +{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","requirePlugin","wrap","deep","addPlugin","5","2","RavenConfigError","message","name","prototype","constructor","3","utils","wrapMethod","console","level","callback","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","msg","safeJoin","data","logger","extra","Function","apply","6","4","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","sanitizeKeys","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isErrorEvent","isDOMError","isDOMException","isError","isObject","isPlainObject","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","sanitize","wrapConsoleMethod","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","config","dsn","options","_logDebug","globalOptions","key","value","setDSN","push","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","toString","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","substr","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","context","func","undefined","_before","wrapped","_ignoreNextOnError","captureException","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","T","event","reason","unhandledPromiseRejection","B","_promiseRejectionHandler","bind","addEventListener","P","removeEventListener","ex","trimHeadFrames","error","captureMessage","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","U","currentOptions","exKeys","Object","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","setDataCallback","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","L","setTimeout","$","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","_","evtName","_keypressTimeout","target","category","ba","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","ca","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","C","_originalFunctionToString","Q","D","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","type","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","E","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","R","builtin","S","F","installer","concat","G","str","m","exec","allowSecretKey","J","port","A","V","stackInfo","_triggerEvent","_processException","lineno","X","frame","_normalizeFrame","in_app","ga","stackInfoUrl","normalized","filename","line","colno","column","function","fa","prefixedMessage","exception","values","culprit","ha","request","Referer","breadcrumbs","_trimBreadcrumbs","ia","urlProp","urlProps","ja","httpData","userAgent","User-Agent","referrer","y","_backoffDuration","_backoffStart","ma","na","current","last","oa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Y","baseData","project","platform","_getHttpData","serverName","server_name","_sanitizeData","forEach","random","_sendProcessedPayload","pa","ra","qa","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","sa","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","onerror","open","setRequestHeader","send","ta","hash","evaluated","z","Z","setUser","setReleaseContext","7","8","9","RavenConstructor","_Raven","noConflict","Client","what","supportsErrorEvent","ErrorEvent","supportsDOMError","DOMError","supportsDOMException","DOMException","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","wrappedCallback","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","sanitizeMask","safeInput","o_O","getLocationHref","getLocationOrigin","origin","hostname","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","responseText","sourceMaps","sourceMapAddress","charAt","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","string","raw"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file diff --git a/dist/sri.json b/dist/sri.json index 7b1204ac237e..3b46bc8f329c 100644 --- a/dist/sri.json +++ b/dist/sri.json @@ -1,578 +1,20 @@ { - "@build/angular,console,ember,require,vue/raven.js": { + "@dist/raven.js": { "hashes": { - "sha256": "kpn4jnnlAoVjeieiROJKLErsp4LStSfiee2DRONZ7wQ=", - "sha512": "EUdN1KxIw4yN4s0bJuVsT4Bjic0FAsdwLdalqZN6ermGCOCEhabs/UBjmCbzEJ9+LH6OAixT3+RHkaDuyqMlvQ==" + "sha256": "nOK5CiXjNxCdlH/653GY4VD01NjvEzYS03YP3ihd+P4=", + "sha512": "EfmQv6a8YntEg4a6bcyKMFKR03CbM3K2t+iLFzZlVW1627yi/r0kngNj+7Fqdejn1+s/wGOyKmIJi6VlCtXDYQ==" }, "type": null, - "integrity": "sha256-kpn4jnnlAoVjeieiROJKLErsp4LStSfiee2DRONZ7wQ= sha512-EUdN1KxIw4yN4s0bJuVsT4Bjic0FAsdwLdalqZN6ermGCOCEhabs/UBjmCbzEJ9+LH6OAixT3+RHkaDuyqMlvQ==", - "path": "build/angular,console,ember,require,vue/raven.js" + "integrity": "sha256-nOK5CiXjNxCdlH/653GY4VD01NjvEzYS03YP3ihd+P4= sha512-EfmQv6a8YntEg4a6bcyKMFKR03CbM3K2t+iLFzZlVW1627yi/r0kngNj+7Fqdejn1+s/wGOyKmIJi6VlCtXDYQ==", + "path": "dist/raven.js" }, - "@build/angular,console,ember,require,vue/raven.min.js": { + "@dist/raven.min.js": { "hashes": { - "sha256": "eiFXJQheKYYtWm8mJbtjAVkdZfSRX+QkBF58ajsieFw=", - "sha512": "qnxxlHajcEwKMCCLWOcv2Tge5qlivCtc8vzjO5ioWcUMpUbMJlIxL6TQJAMGwHRvvqHqBljc9vxgm+SZb9zIhw==" + "sha256": "1zNq1n53B28kCJcIRi1+VN2Y+3/NrNBDH+hx5PiE0yg=", + "sha512": "nMKRkZ6Po8gjj2suKnMfcAeV/sd7FlskIa8vUd3vqrANsVBvo8uqeff9L2saHv8EXQRLa9LiexpJeK/cJ1mJVg==" }, "type": null, - "integrity": "sha256-eiFXJQheKYYtWm8mJbtjAVkdZfSRX+QkBF58ajsieFw= sha512-qnxxlHajcEwKMCCLWOcv2Tge5qlivCtc8vzjO5ioWcUMpUbMJlIxL6TQJAMGwHRvvqHqBljc9vxgm+SZb9zIhw==", - "path": "build/angular,console,ember,require,vue/raven.min.js" - }, - "@build/angular,console,ember,require/raven.js": { - "hashes": { - "sha256": "xtEeUV5eQGLxMOFeUpEJ8W9aJrlDdmNXA6kkGH+Dwu0=", - "sha512": "IA8gze5xuLkl4obQ/9+M7kN3AUK/aJNsUoDQaiwkasA/rTo20VIJt1yBSn4BPYkUSS+bgq0e/xvRBxR666tsYw==" - }, - "type": null, - "integrity": "sha256-xtEeUV5eQGLxMOFeUpEJ8W9aJrlDdmNXA6kkGH+Dwu0= sha512-IA8gze5xuLkl4obQ/9+M7kN3AUK/aJNsUoDQaiwkasA/rTo20VIJt1yBSn4BPYkUSS+bgq0e/xvRBxR666tsYw==", - "path": "build/angular,console,ember,require/raven.js" - }, - "@build/angular,console,ember,require/raven.min.js": { - "hashes": { - "sha256": "XxGWYHuk5VtdfbWVGrb1P8HesUE2hfw+PzCaFhwxpwM=", - "sha512": "mCXqB7VhW9VKQVBBgwAWQSUZo6/rufhpQwqy18IL51GwuDJarCxl6g6VUON8ffy/ThlK3VsHuePNHtd2OaBTiA==" - }, - "type": null, - "integrity": "sha256-XxGWYHuk5VtdfbWVGrb1P8HesUE2hfw+PzCaFhwxpwM= sha512-mCXqB7VhW9VKQVBBgwAWQSUZo6/rufhpQwqy18IL51GwuDJarCxl6g6VUON8ffy/ThlK3VsHuePNHtd2OaBTiA==", - "path": "build/angular,console,ember,require/raven.min.js" - }, - "@build/angular,console,ember,vue/raven.js": { - "hashes": { - "sha256": "IMpm/ZHEtqKPxQCxySiQPT7j5fEqwKWRHmC+fL+id3M=", - "sha512": "gTZVuZDAGNAR8uSrrfwCvoJgvIwStPFyxbA6j6EKPrnJjL6u4PQQx1xTYHLiv92jQEJCSCxoHOPDt/ew7vLcig==" - }, - "type": null, - "integrity": "sha256-IMpm/ZHEtqKPxQCxySiQPT7j5fEqwKWRHmC+fL+id3M= sha512-gTZVuZDAGNAR8uSrrfwCvoJgvIwStPFyxbA6j6EKPrnJjL6u4PQQx1xTYHLiv92jQEJCSCxoHOPDt/ew7vLcig==", - "path": "build/angular,console,ember,vue/raven.js" - }, - "@build/angular,console,ember,vue/raven.min.js": { - "hashes": { - "sha256": "V3jg1RHC4yqBvBXXQLMMb02eEk4WeG0/LI96TsUYQOk=", - "sha512": "Cp+6dPGZmArZYMPpNPuN70lcfvAsQHYSZRpvUI5JKU3UEoeYglOGtaQ83Ar4Wmhm0FUaC8NQaQJK34NV5uHJFg==" - }, - "type": null, - "integrity": "sha256-V3jg1RHC4yqBvBXXQLMMb02eEk4WeG0/LI96TsUYQOk= sha512-Cp+6dPGZmArZYMPpNPuN70lcfvAsQHYSZRpvUI5JKU3UEoeYglOGtaQ83Ar4Wmhm0FUaC8NQaQJK34NV5uHJFg==", - "path": "build/angular,console,ember,vue/raven.min.js" - }, - "@build/angular,console,ember/raven.js": { - "hashes": { - "sha256": "3aJuTbQkWA8d1/JO0DXpuTe5lkSGQltWvnKoPG/M+2U=", - "sha512": "zNDmOXmUSEYdD5gFrAjQezzdlVn9iTDlKQDMFTgmxcdJBm+9XNUz7spHiaxqzh/uRQUzSNn5hwUkhmk1H+0GlA==" - }, - "type": null, - "integrity": "sha256-3aJuTbQkWA8d1/JO0DXpuTe5lkSGQltWvnKoPG/M+2U= sha512-zNDmOXmUSEYdD5gFrAjQezzdlVn9iTDlKQDMFTgmxcdJBm+9XNUz7spHiaxqzh/uRQUzSNn5hwUkhmk1H+0GlA==", - "path": "build/angular,console,ember/raven.js" - }, - "@build/angular,console,ember/raven.min.js": { - "hashes": { - "sha256": "FtKUP/0A0F9gYQURN7hEXveLnX1QsaojnG0RKKgFXT0=", - "sha512": "AV+64bujzcQuFMWwyi3uk6mXFUP9dIS5TofeooBBsAUiFp+rQaE/EX7wompPdbdWEeGwqztOz7s3k1V30bMLzw==" - }, - "type": null, - "integrity": "sha256-FtKUP/0A0F9gYQURN7hEXveLnX1QsaojnG0RKKgFXT0= sha512-AV+64bujzcQuFMWwyi3uk6mXFUP9dIS5TofeooBBsAUiFp+rQaE/EX7wompPdbdWEeGwqztOz7s3k1V30bMLzw==", - "path": "build/angular,console,ember/raven.min.js" - }, - "@build/angular,console,require,vue/raven.js": { - "hashes": { - "sha256": "DEcdiWvcMRMb04LyU93B07BH+VjT60wfDu3EJXLOtI0=", - "sha512": "IODp2I4+okWdpvCb7ZPJaV3bz0JCvu6foRZoCF2jDC2Y3S65olTLLmZN4P6Yk5GdZkcRDUa7MCeRH9bUOweP+Q==" - }, - "type": null, - "integrity": "sha256-DEcdiWvcMRMb04LyU93B07BH+VjT60wfDu3EJXLOtI0= sha512-IODp2I4+okWdpvCb7ZPJaV3bz0JCvu6foRZoCF2jDC2Y3S65olTLLmZN4P6Yk5GdZkcRDUa7MCeRH9bUOweP+Q==", - "path": "build/angular,console,require,vue/raven.js" - }, - "@build/angular,console,require,vue/raven.min.js": { - "hashes": { - "sha256": "8gTgi5Sd70Mgzt1aoIh8u3FSFuub7aGOm7iac0R4Hj0=", - "sha512": "toHhC0jJ31K2QeGC+TPTx/IVvZ3bXB0KBrC5txoC4dOZ403gX55oiejEvqm0FEaodG9xXCnGkpSQMpVGwwGGHQ==" - }, - "type": null, - "integrity": "sha256-8gTgi5Sd70Mgzt1aoIh8u3FSFuub7aGOm7iac0R4Hj0= sha512-toHhC0jJ31K2QeGC+TPTx/IVvZ3bXB0KBrC5txoC4dOZ403gX55oiejEvqm0FEaodG9xXCnGkpSQMpVGwwGGHQ==", - "path": "build/angular,console,require,vue/raven.min.js" - }, - "@build/angular,console,require/raven.js": { - "hashes": { - "sha256": "xxJTANeN2ewU3gw3Ykt6OQL0v42ZsgNuFDYhNslT68k=", - "sha512": "I73UBRoPG+KtXvQZ9uFllDjMe0PMU0rngYsydMLkhWNqQ19K9XWuES0dRobSw52Nz97QEzTrDrINtd7TLKlafw==" - }, - "type": null, - "integrity": "sha256-xxJTANeN2ewU3gw3Ykt6OQL0v42ZsgNuFDYhNslT68k= sha512-I73UBRoPG+KtXvQZ9uFllDjMe0PMU0rngYsydMLkhWNqQ19K9XWuES0dRobSw52Nz97QEzTrDrINtd7TLKlafw==", - "path": "build/angular,console,require/raven.js" - }, - "@build/angular,console,require/raven.min.js": { - "hashes": { - "sha256": "IfYImT+baBjLMMOK9d0Mq0TGvpy6dPTil4PsrL1AEjM=", - "sha512": "WNZAuy2mvpKevstJsIPdwz5x5cFeHJW/Siak15GTutM6MYLFpmUK6JeVK/DTWhgRSy/DoGARDk8SLboxNn/UUg==" - }, - "type": null, - "integrity": "sha256-IfYImT+baBjLMMOK9d0Mq0TGvpy6dPTil4PsrL1AEjM= sha512-WNZAuy2mvpKevstJsIPdwz5x5cFeHJW/Siak15GTutM6MYLFpmUK6JeVK/DTWhgRSy/DoGARDk8SLboxNn/UUg==", - "path": "build/angular,console,require/raven.min.js" - }, - "@build/angular,console,vue/raven.js": { - "hashes": { - "sha256": "MBFtso1Zxv8Sw8oa195LLeGmnUpK8YQS10duzUVedoo=", - "sha512": "OPibR51JjYDzPaiDemJmpijgkZs/TNSpam4hf96PuAAa/O+atYeovIYpzQ5ukD8h/PnMnUfwQC/0OpTQJ3b69A==" - }, - "type": null, - "integrity": "sha256-MBFtso1Zxv8Sw8oa195LLeGmnUpK8YQS10duzUVedoo= sha512-OPibR51JjYDzPaiDemJmpijgkZs/TNSpam4hf96PuAAa/O+atYeovIYpzQ5ukD8h/PnMnUfwQC/0OpTQJ3b69A==", - "path": "build/angular,console,vue/raven.js" - }, - "@build/angular,console,vue/raven.min.js": { - "hashes": { - "sha256": "2TXBGfQkSd9Kk2IctChKnY4CSOj7LUKMTfgZuBXM7A0=", - "sha512": "RhA7eWbH6Q5MccSdPVlZlhZL+pE5NO0EjSIb7cwZUx+O6i/wJbnWD+ky9xJxZPtlId8rYGCHP0ZvwlJDjRifTw==" - }, - "type": null, - "integrity": "sha256-2TXBGfQkSd9Kk2IctChKnY4CSOj7LUKMTfgZuBXM7A0= sha512-RhA7eWbH6Q5MccSdPVlZlhZL+pE5NO0EjSIb7cwZUx+O6i/wJbnWD+ky9xJxZPtlId8rYGCHP0ZvwlJDjRifTw==", - "path": "build/angular,console,vue/raven.min.js" - }, - "@build/angular,console/raven.js": { - "hashes": { - "sha256": "sq1ig8uLi2NFAsRSF8qji7aCXkpQ1z/eNhvDNXkEJfM=", - "sha512": "oZHVS3C8nYScJb1A1xKZOXKJHqHLuSEXaPZmd4cmdUyHFMrh4f1fdD5agwDHJIxMs510zRw7kZljkKycqgeoNA==" - }, - "type": null, - "integrity": "sha256-sq1ig8uLi2NFAsRSF8qji7aCXkpQ1z/eNhvDNXkEJfM= sha512-oZHVS3C8nYScJb1A1xKZOXKJHqHLuSEXaPZmd4cmdUyHFMrh4f1fdD5agwDHJIxMs510zRw7kZljkKycqgeoNA==", - "path": "build/angular,console/raven.js" - }, - "@build/angular,console/raven.min.js": { - "hashes": { - "sha256": "98Jhjk+kjvXd7ZynWkHzCVQqvMLjzDNKUQTzztmc70k=", - "sha512": "kvW8BmEwKzI9F53Iu8L7qDpes7WGzJxUlo/KlU3kTNZMw0+gncumkMTeQykL5S+aohzCc7iTWCUjMkaukjgHpw==" - }, - "type": null, - "integrity": "sha256-98Jhjk+kjvXd7ZynWkHzCVQqvMLjzDNKUQTzztmc70k= sha512-kvW8BmEwKzI9F53Iu8L7qDpes7WGzJxUlo/KlU3kTNZMw0+gncumkMTeQykL5S+aohzCc7iTWCUjMkaukjgHpw==", - "path": "build/angular,console/raven.min.js" - }, - "@build/angular,ember,require,vue/raven.js": { - "hashes": { - "sha256": "vxO7zIQPXNiVJh3Xy9L54rOs6JqYU2/gEQjn7N7qieA=", - "sha512": "YJ5qTS6zS4aUpIonZjTVYFOcmT/If7U+1eGEUd1/OG2pxDrk2z65pfRarOTjPIyRuppVgLDdBmaNHHCX+sJUEg==" - }, - "type": null, - "integrity": "sha256-vxO7zIQPXNiVJh3Xy9L54rOs6JqYU2/gEQjn7N7qieA= sha512-YJ5qTS6zS4aUpIonZjTVYFOcmT/If7U+1eGEUd1/OG2pxDrk2z65pfRarOTjPIyRuppVgLDdBmaNHHCX+sJUEg==", - "path": "build/angular,ember,require,vue/raven.js" - }, - "@build/angular,ember,require,vue/raven.min.js": { - "hashes": { - "sha256": "A3AQNTa6j3h16xPz3gDPm9HSRHJLGLGWSnFewioLr5U=", - "sha512": "n6VwMoWMR2vrXFKAwiMfK5wG9gvOcuFinFIy50DOSkbsBVwXaAoemDWnhmJ/8P8FZc3MGqGWGM2ZUYJMBDpW6g==" - }, - "type": null, - "integrity": "sha256-A3AQNTa6j3h16xPz3gDPm9HSRHJLGLGWSnFewioLr5U= sha512-n6VwMoWMR2vrXFKAwiMfK5wG9gvOcuFinFIy50DOSkbsBVwXaAoemDWnhmJ/8P8FZc3MGqGWGM2ZUYJMBDpW6g==", - "path": "build/angular,ember,require,vue/raven.min.js" - }, - "@build/angular,ember,require/raven.js": { - "hashes": { - "sha256": "Rjs1YP6U19kODUU49ab2LZ30UpQvnmIhGxbVbfNCfeA=", - "sha512": "IPnMyqal69vjxKpwClfvzCuOTbH73rTJ+Qd8wtKDHj+eHUS+vYvCqHT7FgOgqmfqFAUx0gqYAUmuJqKcfyzMqw==" - }, - "type": null, - "integrity": "sha256-Rjs1YP6U19kODUU49ab2LZ30UpQvnmIhGxbVbfNCfeA= sha512-IPnMyqal69vjxKpwClfvzCuOTbH73rTJ+Qd8wtKDHj+eHUS+vYvCqHT7FgOgqmfqFAUx0gqYAUmuJqKcfyzMqw==", - "path": "build/angular,ember,require/raven.js" - }, - "@build/angular,ember,require/raven.min.js": { - "hashes": { - "sha256": "/r6Nz9OefjhmfDHpvRvrvumUWAURgbUawBSpXvlL4e8=", - "sha512": "7EkoN19mnWOqiFtwZ8RHKG47Gl3LODZmOtd3mKzq94z+xxLEAG28HM2FCTaA4UPFw1+r48LF2SyQa0MLl3CTcw==" - }, - "type": null, - "integrity": "sha256-/r6Nz9OefjhmfDHpvRvrvumUWAURgbUawBSpXvlL4e8= sha512-7EkoN19mnWOqiFtwZ8RHKG47Gl3LODZmOtd3mKzq94z+xxLEAG28HM2FCTaA4UPFw1+r48LF2SyQa0MLl3CTcw==", - "path": "build/angular,ember,require/raven.min.js" - }, - "@build/angular,ember,vue/raven.js": { - "hashes": { - "sha256": "IEBXK+TRKfOwTvEC2B/KZNOeHkllwfe+ztgq5Ih5tR4=", - "sha512": "yhQViQ+RVdOLsrbZ2FvrFSZk2HglTNkr6IBkuylZLfQy62g//aaaknUuUNkUTapS+fQH6UG4D5wHd4VdZWJvpw==" - }, - "type": null, - "integrity": "sha256-IEBXK+TRKfOwTvEC2B/KZNOeHkllwfe+ztgq5Ih5tR4= sha512-yhQViQ+RVdOLsrbZ2FvrFSZk2HglTNkr6IBkuylZLfQy62g//aaaknUuUNkUTapS+fQH6UG4D5wHd4VdZWJvpw==", - "path": "build/angular,ember,vue/raven.js" - }, - "@build/angular,ember,vue/raven.min.js": { - "hashes": { - "sha256": "F0O+lNYTWqdsVnuzqHYFqPVU1i+BEWaBUsVCPO6Sp3M=", - "sha512": "U7ay7T/fq6DdF0oP29GY/jnFEzdJzsdqL/HC3aTVZaOECXI7yAtZ2WFTpggcTtqVQqurzdMFyEokpixVVyKxFQ==" - }, - "type": null, - "integrity": "sha256-F0O+lNYTWqdsVnuzqHYFqPVU1i+BEWaBUsVCPO6Sp3M= sha512-U7ay7T/fq6DdF0oP29GY/jnFEzdJzsdqL/HC3aTVZaOECXI7yAtZ2WFTpggcTtqVQqurzdMFyEokpixVVyKxFQ==", - "path": "build/angular,ember,vue/raven.min.js" - }, - "@build/angular,ember/raven.js": { - "hashes": { - "sha256": "Xx/Hv+vp/R/Oz3UXCTazRLDHqwGZ/TUsTNSJB/+pQk8=", - "sha512": "wFHj28aT09JoVJs9uhpjM+EYxBn3p7bsBItx04HJRKCR7/OQtqv2AP10ZtkVZuflPrlPlTzXe10InX9ZPwuoVQ==" - }, - "type": null, - "integrity": "sha256-Xx/Hv+vp/R/Oz3UXCTazRLDHqwGZ/TUsTNSJB/+pQk8= sha512-wFHj28aT09JoVJs9uhpjM+EYxBn3p7bsBItx04HJRKCR7/OQtqv2AP10ZtkVZuflPrlPlTzXe10InX9ZPwuoVQ==", - "path": "build/angular,ember/raven.js" - }, - "@build/angular,ember/raven.min.js": { - "hashes": { - "sha256": "5S4YRy2MxDvoHckJg7EhCoohGt7htQ/t4SUMIli4FRo=", - "sha512": "afSPKBXM4ozA0K8wR5gmpnj0QithnqBpQKrNHGm18PSBM3N8Ec6HIQkubjtVoT2pMMwb7XcUmdC+d3jixUP+tg==" - }, - "type": null, - "integrity": "sha256-5S4YRy2MxDvoHckJg7EhCoohGt7htQ/t4SUMIli4FRo= sha512-afSPKBXM4ozA0K8wR5gmpnj0QithnqBpQKrNHGm18PSBM3N8Ec6HIQkubjtVoT2pMMwb7XcUmdC+d3jixUP+tg==", - "path": "build/angular,ember/raven.min.js" - }, - "@build/angular,require,vue/raven.js": { - "hashes": { - "sha256": "Svrt2t8PPwaRUuOF++RLwTxi6CUPyWX9/TtAd8yx8o8=", - "sha512": "2xQmfCzEFq/RCkjlVM2oFX7okxQ2nO4RtHD07okXrOjQUjkBFA25ntrFQrJjuhnxs5rbFWXMBx5dqpRTAuragw==" - }, - "type": null, - "integrity": "sha256-Svrt2t8PPwaRUuOF++RLwTxi6CUPyWX9/TtAd8yx8o8= sha512-2xQmfCzEFq/RCkjlVM2oFX7okxQ2nO4RtHD07okXrOjQUjkBFA25ntrFQrJjuhnxs5rbFWXMBx5dqpRTAuragw==", - "path": "build/angular,require,vue/raven.js" - }, - "@build/angular,require,vue/raven.min.js": { - "hashes": { - "sha256": "DbLpoNsLDitZo1xbYWuJKdCC49mYsQPfgbV6ZE562jg=", - "sha512": "tkjc3zwEtngQZg8P6BsRMZ4nUs5OJtgKDVxgaC6d0kvMhaAiMvQue9SB51ChzHwSBsaj977VRUUQ6hmh87l+Lg==" - }, - "type": null, - "integrity": "sha256-DbLpoNsLDitZo1xbYWuJKdCC49mYsQPfgbV6ZE562jg= sha512-tkjc3zwEtngQZg8P6BsRMZ4nUs5OJtgKDVxgaC6d0kvMhaAiMvQue9SB51ChzHwSBsaj977VRUUQ6hmh87l+Lg==", - "path": "build/angular,require,vue/raven.min.js" - }, - "@build/angular,require/raven.js": { - "hashes": { - "sha256": "AZyYJHX9urVxddbKrap94lkz371zPAIm8JziOBRrauY=", - "sha512": "ctFjpbGbLgwcxKJ1RIOvMkltBlqsNG4/DIxd+7NqQv4KiPU9WQyOMv0mW6wwfSogvviA/sR5b2rgGG5PUAnmfg==" - }, - "type": null, - "integrity": "sha256-AZyYJHX9urVxddbKrap94lkz371zPAIm8JziOBRrauY= sha512-ctFjpbGbLgwcxKJ1RIOvMkltBlqsNG4/DIxd+7NqQv4KiPU9WQyOMv0mW6wwfSogvviA/sR5b2rgGG5PUAnmfg==", - "path": "build/angular,require/raven.js" - }, - "@build/angular,require/raven.min.js": { - "hashes": { - "sha256": "JGPo9+0gl3s9ojEVCQlVSZPBPBKOgYDLLB6UOYE54Lc=", - "sha512": "K92+aX4GOSCyYf9nqleTP5ojN/W4fbjOC7ZZVy+DzXHUXOLGiJdz6r/y/iVeaJTYzw1r0fdcUUl8ImcYQQ2yaQ==" - }, - "type": null, - "integrity": "sha256-JGPo9+0gl3s9ojEVCQlVSZPBPBKOgYDLLB6UOYE54Lc= sha512-K92+aX4GOSCyYf9nqleTP5ojN/W4fbjOC7ZZVy+DzXHUXOLGiJdz6r/y/iVeaJTYzw1r0fdcUUl8ImcYQQ2yaQ==", - "path": "build/angular,require/raven.min.js" - }, - "@build/angular,vue/raven.js": { - "hashes": { - "sha256": "KLhpG4TDGHLbEdnLnL1bDGN+5zPyUMAw0yUIJpX0pP4=", - "sha512": "EURZldfD3Hisrxykp4p93u/zo86ZVo8Nn6teupNCVxDlexu40AqLby5fFp6yzytPo4lifdtRQV+WFoWaLLuLwg==" - }, - "type": null, - "integrity": "sha256-KLhpG4TDGHLbEdnLnL1bDGN+5zPyUMAw0yUIJpX0pP4= sha512-EURZldfD3Hisrxykp4p93u/zo86ZVo8Nn6teupNCVxDlexu40AqLby5fFp6yzytPo4lifdtRQV+WFoWaLLuLwg==", - "path": "build/angular,vue/raven.js" - }, - "@build/angular,vue/raven.min.js": { - "hashes": { - "sha256": "OkUKUPjfU+xGqCQC63r9bj2aQJitGR/psNBJceeHDPs=", - "sha512": "CynPq7bMQZ8GRacbCRfVgyd1sfsNdPgYXQ5GgLJYy6uG0gG9nWTm2RzBc8vrb/3942z5oN0KpoQH/5E/baLONQ==" - }, - "type": null, - "integrity": "sha256-OkUKUPjfU+xGqCQC63r9bj2aQJitGR/psNBJceeHDPs= sha512-CynPq7bMQZ8GRacbCRfVgyd1sfsNdPgYXQ5GgLJYy6uG0gG9nWTm2RzBc8vrb/3942z5oN0KpoQH/5E/baLONQ==", - "path": "build/angular,vue/raven.min.js" - }, - "@build/angular/raven.js": { - "hashes": { - "sha256": "m1THu0jWmyaQeJzO61tAKrSS5vZeUaFGn16fSXiYEUI=", - "sha512": "8l8Qeh+DXi43XIzurIWay1cBCqN46EjjUvzDOKR4tIvO1ZDZH2JEqJUmiE8e/v6tkAhxS4VBj7Lf7sttiKuepw==" - }, - "type": null, - "integrity": "sha256-m1THu0jWmyaQeJzO61tAKrSS5vZeUaFGn16fSXiYEUI= sha512-8l8Qeh+DXi43XIzurIWay1cBCqN46EjjUvzDOKR4tIvO1ZDZH2JEqJUmiE8e/v6tkAhxS4VBj7Lf7sttiKuepw==", - "path": "build/angular/raven.js" - }, - "@build/angular/raven.min.js": { - "hashes": { - "sha256": "sHhNT4DsAVGj/sW8ZZ84FG0eYByIt58xfNxnEIXDEJw=", - "sha512": "wdt78XujvltsjwJNYWtUU9doKFTlB2qZG4ztITo90vdEH8BrfaKoxea1lDZ05Y8t+PERTst0Umv5/4/226EH0A==" - }, - "type": null, - "integrity": "sha256-sHhNT4DsAVGj/sW8ZZ84FG0eYByIt58xfNxnEIXDEJw= sha512-wdt78XujvltsjwJNYWtUU9doKFTlB2qZG4ztITo90vdEH8BrfaKoxea1lDZ05Y8t+PERTst0Umv5/4/226EH0A==", - "path": "build/angular/raven.min.js" - }, - "@build/console,ember,require,vue/raven.js": { - "hashes": { - "sha256": "leHqY1aZ3XJBN4HXyPacHERwqCDFS4Hj33eJNoRq8Yk=", - "sha512": "d5FlCHlYNCQTcS1OdCNR/Q/fTVIdSZDnHPtdwWl8Hxi4uqbhrnS2nRAN1CW5p30uwWvK5JA2/Dvr+MaQ3GEGbw==" - }, - "type": null, - "integrity": "sha256-leHqY1aZ3XJBN4HXyPacHERwqCDFS4Hj33eJNoRq8Yk= sha512-d5FlCHlYNCQTcS1OdCNR/Q/fTVIdSZDnHPtdwWl8Hxi4uqbhrnS2nRAN1CW5p30uwWvK5JA2/Dvr+MaQ3GEGbw==", - "path": "build/console,ember,require,vue/raven.js" - }, - "@build/console,ember,require,vue/raven.min.js": { - "hashes": { - "sha256": "ikHSVPxmREotKyglA7Cm+FlvDlTpCNOCunYwVgg/MS4=", - "sha512": "SNNf49i7VSg//0XbkkR7afMDkNwcm9ghAKiPa1l+6QAlLO12raVqJhqMECQwJo1wgP+sDj/v+HfpB9PUeuvv/Q==" - }, - "type": null, - "integrity": "sha256-ikHSVPxmREotKyglA7Cm+FlvDlTpCNOCunYwVgg/MS4= sha512-SNNf49i7VSg//0XbkkR7afMDkNwcm9ghAKiPa1l+6QAlLO12raVqJhqMECQwJo1wgP+sDj/v+HfpB9PUeuvv/Q==", - "path": "build/console,ember,require,vue/raven.min.js" - }, - "@build/console,ember,require/raven.js": { - "hashes": { - "sha256": "UYCAnSfDe7r6lXwyF2HqrgMyfGgHex7O4VHrPvFZBcs=", - "sha512": "xbivgUDXKdltRr9vTEY7KbvyZdjQH/eu0Jx+rs37+++e/HXkFMaWHPMABQKCYZMFUujdhpZ1A/mkGtlbOSW5sg==" - }, - "type": null, - "integrity": "sha256-UYCAnSfDe7r6lXwyF2HqrgMyfGgHex7O4VHrPvFZBcs= sha512-xbivgUDXKdltRr9vTEY7KbvyZdjQH/eu0Jx+rs37+++e/HXkFMaWHPMABQKCYZMFUujdhpZ1A/mkGtlbOSW5sg==", - "path": "build/console,ember,require/raven.js" - }, - "@build/console,ember,require/raven.min.js": { - "hashes": { - "sha256": "kwC7n9cZJDk4YHu3l4LfzyBAVyMsUizEn/TY7JmGxzA=", - "sha512": "lsC1BO2y3L+cV/awTIAG1L5RzS3vtVegfm97bAR9Uf/tGIdjGj1z6zwQARbU8EVFk+DTWh9LM6h0cYwwf5zcfA==" - }, - "type": null, - "integrity": "sha256-kwC7n9cZJDk4YHu3l4LfzyBAVyMsUizEn/TY7JmGxzA= sha512-lsC1BO2y3L+cV/awTIAG1L5RzS3vtVegfm97bAR9Uf/tGIdjGj1z6zwQARbU8EVFk+DTWh9LM6h0cYwwf5zcfA==", - "path": "build/console,ember,require/raven.min.js" - }, - "@build/console,ember,vue/raven.js": { - "hashes": { - "sha256": "hNtx9UH50PX1+C8v1yxx23or8Do137Hgc7iZMUVXtZU=", - "sha512": "jDrf3qotxWGqGpc/9O9SVZV+LBCAbYrOtC9pwzWS0GQSqW96MY71OQ1PzrYFy4pLMmjqKV1g6FPE3TsOQiMfgA==" - }, - "type": null, - "integrity": "sha256-hNtx9UH50PX1+C8v1yxx23or8Do137Hgc7iZMUVXtZU= sha512-jDrf3qotxWGqGpc/9O9SVZV+LBCAbYrOtC9pwzWS0GQSqW96MY71OQ1PzrYFy4pLMmjqKV1g6FPE3TsOQiMfgA==", - "path": "build/console,ember,vue/raven.js" - }, - "@build/console,ember,vue/raven.min.js": { - "hashes": { - "sha256": "7m4Br5uX3SKEGHpfbwKIFUUrT9zjUKBUhtgukmNIkJ8=", - "sha512": "AKGMcDFyB8ttU6UH1C20u7KxwJSLyW43tMZ6i4foDTa9FEK+vJy5CVmTlleEcunODK6Q7PmdK8OTV3QeUuay1w==" - }, - "type": null, - "integrity": "sha256-7m4Br5uX3SKEGHpfbwKIFUUrT9zjUKBUhtgukmNIkJ8= sha512-AKGMcDFyB8ttU6UH1C20u7KxwJSLyW43tMZ6i4foDTa9FEK+vJy5CVmTlleEcunODK6Q7PmdK8OTV3QeUuay1w==", - "path": "build/console,ember,vue/raven.min.js" - }, - "@build/console,ember/raven.js": { - "hashes": { - "sha256": "fISCOeWtR3JwqaCFfBe6lzbJKlQPpeRy3n4jKQ017Yc=", - "sha512": "Z+Os37ihrAEVRecs+ympQvPT0jQ818zJklm/KXzlciZRrgQwL83j6Ecq55JECyA0ElKkRRWm+7UIKbDl8P9EYA==" - }, - "type": null, - "integrity": "sha256-fISCOeWtR3JwqaCFfBe6lzbJKlQPpeRy3n4jKQ017Yc= sha512-Z+Os37ihrAEVRecs+ympQvPT0jQ818zJklm/KXzlciZRrgQwL83j6Ecq55JECyA0ElKkRRWm+7UIKbDl8P9EYA==", - "path": "build/console,ember/raven.js" - }, - "@build/console,ember/raven.min.js": { - "hashes": { - "sha256": "Cz5pl+PXh3g2XGM7YIkS5fIYkbcLw+AgbN5+fpA7ooU=", - "sha512": "kIfFCXoSZ/c1f72xFsZV4mVhX9pZq7A5zh2vGDSvUo5T7Im6pf4pmXA3sNXGFu1HqJRi0OeGXIAq7h2KyAhQVg==" - }, - "type": null, - "integrity": "sha256-Cz5pl+PXh3g2XGM7YIkS5fIYkbcLw+AgbN5+fpA7ooU= sha512-kIfFCXoSZ/c1f72xFsZV4mVhX9pZq7A5zh2vGDSvUo5T7Im6pf4pmXA3sNXGFu1HqJRi0OeGXIAq7h2KyAhQVg==", - "path": "build/console,ember/raven.min.js" - }, - "@build/console,require,vue/raven.js": { - "hashes": { - "sha256": "/ZRQVuuSl0oQ+Dn6cmC7OX1q3w1cvAHBrgQ9XOEa3vQ=", - "sha512": "6OPkvnvy4/gXFPsC97RwnwhAAWNRzM+V00spQti+E78EwcBoZQIcyFEbSfcz1ENqzHn7lxJDZDHRIZqKtkpzHg==" - }, - "type": null, - "integrity": "sha256-/ZRQVuuSl0oQ+Dn6cmC7OX1q3w1cvAHBrgQ9XOEa3vQ= sha512-6OPkvnvy4/gXFPsC97RwnwhAAWNRzM+V00spQti+E78EwcBoZQIcyFEbSfcz1ENqzHn7lxJDZDHRIZqKtkpzHg==", - "path": "build/console,require,vue/raven.js" - }, - "@build/console,require,vue/raven.min.js": { - "hashes": { - "sha256": "cE8j2s3KzVFGkzzOwhSw+B6CLBcLuvZ86Pb64om9N1o=", - "sha512": "le/QB0m9ylgf6RFd5kItBu43LoDk/kACV4EI8G2/HNB2h+urCMdXfzEgJGH3Z64tNX0fOs4bMqDcP1o6fbey0Q==" - }, - "type": null, - "integrity": "sha256-cE8j2s3KzVFGkzzOwhSw+B6CLBcLuvZ86Pb64om9N1o= sha512-le/QB0m9ylgf6RFd5kItBu43LoDk/kACV4EI8G2/HNB2h+urCMdXfzEgJGH3Z64tNX0fOs4bMqDcP1o6fbey0Q==", - "path": "build/console,require,vue/raven.min.js" - }, - "@build/console,require/raven.js": { - "hashes": { - "sha256": "qUUN7U9H/ZECADSZC5omFFiv/ZA3WD1vXPefa2mHZec=", - "sha512": "5uJ75aRaCoyYkV/prDyABJD7X7AE0Nr7oCWMf6VVEaGca2sw16eK+bUOXs952snFROp+uMtXaq/w/BeAD+FZqg==" - }, - "type": null, - "integrity": "sha256-qUUN7U9H/ZECADSZC5omFFiv/ZA3WD1vXPefa2mHZec= sha512-5uJ75aRaCoyYkV/prDyABJD7X7AE0Nr7oCWMf6VVEaGca2sw16eK+bUOXs952snFROp+uMtXaq/w/BeAD+FZqg==", - "path": "build/console,require/raven.js" - }, - "@build/console,require/raven.min.js": { - "hashes": { - "sha256": "Pns6oPcDJLvtIUiemzpSs0o682gWvgKUSRWKdq72NC0=", - "sha512": "1WeNXOPCorrq27Nl4mpXdnp+UXvCDs2So9XRUii65dcoLdxrIxww6wp82egj8HbwZ4E1SxJrH1G/+bEge/wlTw==" - }, - "type": null, - "integrity": "sha256-Pns6oPcDJLvtIUiemzpSs0o682gWvgKUSRWKdq72NC0= sha512-1WeNXOPCorrq27Nl4mpXdnp+UXvCDs2So9XRUii65dcoLdxrIxww6wp82egj8HbwZ4E1SxJrH1G/+bEge/wlTw==", - "path": "build/console,require/raven.min.js" - }, - "@build/console,vue/raven.js": { - "hashes": { - "sha256": "FZATUT1Y5YMcevLJMxrFGMAboeKYjpTRGSTQvQc/Cf8=", - "sha512": "+e6jVO+9sh4EnK1NQ0HKMZ6o0kj9/2/E0JRe2HyKkXNlG4X8omB20h3AH+sPORKhI7Af3Lq6MzDF6UwmV3MItA==" - }, - "type": null, - "integrity": "sha256-FZATUT1Y5YMcevLJMxrFGMAboeKYjpTRGSTQvQc/Cf8= sha512-+e6jVO+9sh4EnK1NQ0HKMZ6o0kj9/2/E0JRe2HyKkXNlG4X8omB20h3AH+sPORKhI7Af3Lq6MzDF6UwmV3MItA==", - "path": "build/console,vue/raven.js" - }, - "@build/console,vue/raven.min.js": { - "hashes": { - "sha256": "w27SsEGy5YHX9ATEjXa/3nJAHKwDoThM+J4YhXgbT3o=", - "sha512": "Acz5v6P/JhI/1a6XahdujMJBJwOnb15J6M3OgSIQpnpOXMOar2yQarKos1C6cRdiZIZj1GzT1yaLcARoHsq4Aw==" - }, - "type": null, - "integrity": "sha256-w27SsEGy5YHX9ATEjXa/3nJAHKwDoThM+J4YhXgbT3o= sha512-Acz5v6P/JhI/1a6XahdujMJBJwOnb15J6M3OgSIQpnpOXMOar2yQarKos1C6cRdiZIZj1GzT1yaLcARoHsq4Aw==", - "path": "build/console,vue/raven.min.js" - }, - "@build/console/raven.js": { - "hashes": { - "sha256": "x4ziIYQIsl7VjCgDXblhl/SbVuN4ikA9igKLdLCYv0Q=", - "sha512": "OssZrDrpgrA6NUStkxvogQlyN18sRkGKuahNdspvtnzJeFnB/P4lG7U6agL1kpWYrNwIP8gLB2Aw5gG3wVY2tA==" - }, - "type": null, - "integrity": "sha256-x4ziIYQIsl7VjCgDXblhl/SbVuN4ikA9igKLdLCYv0Q= sha512-OssZrDrpgrA6NUStkxvogQlyN18sRkGKuahNdspvtnzJeFnB/P4lG7U6agL1kpWYrNwIP8gLB2Aw5gG3wVY2tA==", - "path": "build/console/raven.js" - }, - "@build/console/raven.min.js": { - "hashes": { - "sha256": "NZguKocRCjVjt8N7jALyJZeyUmUUU+XaKmqN1LFXQ6I=", - "sha512": "xcLeEEDpoEc64JBopCNwC25486HAftqxb1y8zFXQ+8D8yHYT47B7/EN+8bs63eANB1nGXi1jkhlVjzFsrd3o1Q==" - }, - "type": null, - "integrity": "sha256-NZguKocRCjVjt8N7jALyJZeyUmUUU+XaKmqN1LFXQ6I= sha512-xcLeEEDpoEc64JBopCNwC25486HAftqxb1y8zFXQ+8D8yHYT47B7/EN+8bs63eANB1nGXi1jkhlVjzFsrd3o1Q==", - "path": "build/console/raven.min.js" - }, - "@build/ember,require,vue/raven.js": { - "hashes": { - "sha256": "L/b+GU7slC6JvLhiRMnjcSEH6cmJQHDrxRgsvzCFvpg=", - "sha512": "qo3KvKGxEsc9hO4NtO+sYbchSg3WA/5KqCX69tQjnlOivUMs1TOr+AcZ99rA9TbSazlqGSPe8EYCcNQ+PROY+A==" - }, - "type": null, - "integrity": "sha256-L/b+GU7slC6JvLhiRMnjcSEH6cmJQHDrxRgsvzCFvpg= sha512-qo3KvKGxEsc9hO4NtO+sYbchSg3WA/5KqCX69tQjnlOivUMs1TOr+AcZ99rA9TbSazlqGSPe8EYCcNQ+PROY+A==", - "path": "build/ember,require,vue/raven.js" - }, - "@build/ember,require,vue/raven.min.js": { - "hashes": { - "sha256": "D6Ojt49Y9eVw3xVU/FGLjh54ekfeVFE72+dtRY/O2uM=", - "sha512": "QNcw5nlzcnrt+vDBSWerL7bhZG9zK99GQrSzM5YKWgDaIH2/iYAd14krUhOnEzFzv2+/fVQK/wtn0wQ1rfGj8Q==" - }, - "type": null, - "integrity": "sha256-D6Ojt49Y9eVw3xVU/FGLjh54ekfeVFE72+dtRY/O2uM= sha512-QNcw5nlzcnrt+vDBSWerL7bhZG9zK99GQrSzM5YKWgDaIH2/iYAd14krUhOnEzFzv2+/fVQK/wtn0wQ1rfGj8Q==", - "path": "build/ember,require,vue/raven.min.js" - }, - "@build/ember,require/raven.js": { - "hashes": { - "sha256": "aK3o8TNP2AjDFmeNy9EkOlG2x0Tx+0/hqczoAv+ioe4=", - "sha512": "rod/aIsbrUzgWoqzlN/ELyN7injQFlDT8bAfss93n6iO9uPU6v6ksjAEa6aA1HToAd+C5d3L1U3rl10ajzNljg==" - }, - "type": null, - "integrity": "sha256-aK3o8TNP2AjDFmeNy9EkOlG2x0Tx+0/hqczoAv+ioe4= sha512-rod/aIsbrUzgWoqzlN/ELyN7injQFlDT8bAfss93n6iO9uPU6v6ksjAEa6aA1HToAd+C5d3L1U3rl10ajzNljg==", - "path": "build/ember,require/raven.js" - }, - "@build/ember,require/raven.min.js": { - "hashes": { - "sha256": "offckhtUj0vUbpniwyvMBruq2knwvJ3chC00pGAf8Tc=", - "sha512": "fVu0o8ZKrEIDjfGN0kjaC7o6tRFCxmd1lJpmqv+D0kYcNBWcxbtnizEghhRkKDEZ3YoY8EXPw8GiowlxkWBh7Q==" - }, - "type": null, - "integrity": "sha256-offckhtUj0vUbpniwyvMBruq2knwvJ3chC00pGAf8Tc= sha512-fVu0o8ZKrEIDjfGN0kjaC7o6tRFCxmd1lJpmqv+D0kYcNBWcxbtnizEghhRkKDEZ3YoY8EXPw8GiowlxkWBh7Q==", - "path": "build/ember,require/raven.min.js" - }, - "@build/ember,vue/raven.js": { - "hashes": { - "sha256": "exDef/tGRBDTPKr0++VX8EGAU3JeRxMRTONZuoHL+dw=", - "sha512": "ALILhGPjEaCzXpW3r6nhrqRexP9aIkVlmDj00MZBCi8NnS5oFfGNYxvw33gQvGI1w0jRJnSTG8imtx5CdLDwqg==" - }, - "type": null, - "integrity": "sha256-exDef/tGRBDTPKr0++VX8EGAU3JeRxMRTONZuoHL+dw= sha512-ALILhGPjEaCzXpW3r6nhrqRexP9aIkVlmDj00MZBCi8NnS5oFfGNYxvw33gQvGI1w0jRJnSTG8imtx5CdLDwqg==", - "path": "build/ember,vue/raven.js" - }, - "@build/ember,vue/raven.min.js": { - "hashes": { - "sha256": "wuS+YLfrLYAcWHoNMycXFHK1wdSehY/LNpMyTI/ZHdo=", - "sha512": "wVlSXLDV+XsezZZyBAKNWbOuQuhDxlNCbSDOgBEFzR2FYI0CBH02Ye96AwxtpN8+60gnQPQX32Oju0aSwv27vw==" - }, - "type": null, - "integrity": "sha256-wuS+YLfrLYAcWHoNMycXFHK1wdSehY/LNpMyTI/ZHdo= sha512-wVlSXLDV+XsezZZyBAKNWbOuQuhDxlNCbSDOgBEFzR2FYI0CBH02Ye96AwxtpN8+60gnQPQX32Oju0aSwv27vw==", - "path": "build/ember,vue/raven.min.js" - }, - "@build/ember/raven.js": { - "hashes": { - "sha256": "E1LybardftuUJYf6RVqENA98KONw198pXOE/0XKIERg=", - "sha512": "BAs+ZLbQZoyHfgdOp4ydjhDgqsq+QFT4ATsepFA6AFhncROyZDGIb+hFHwJTOoGPAq2WQ4NY2aKzjwPICT+jeA==" - }, - "type": null, - "integrity": "sha256-E1LybardftuUJYf6RVqENA98KONw198pXOE/0XKIERg= sha512-BAs+ZLbQZoyHfgdOp4ydjhDgqsq+QFT4ATsepFA6AFhncROyZDGIb+hFHwJTOoGPAq2WQ4NY2aKzjwPICT+jeA==", - "path": "build/ember/raven.js" - }, - "@build/ember/raven.min.js": { - "hashes": { - "sha256": "YKRGbWJmOgXXv07l+exCz/dOkQOs0FYi9l+PEIxtD5k=", - "sha512": "Q79RNgzKXrGeJWrh2EjspgmjBVsGhq4btI5ImTtTQqL9Y9xrUl7LeRPv/S+wPF44oDCWMmoYoJdQxjt3tIxmPQ==" - }, - "type": null, - "integrity": "sha256-YKRGbWJmOgXXv07l+exCz/dOkQOs0FYi9l+PEIxtD5k= sha512-Q79RNgzKXrGeJWrh2EjspgmjBVsGhq4btI5ImTtTQqL9Y9xrUl7LeRPv/S+wPF44oDCWMmoYoJdQxjt3tIxmPQ==", - "path": "build/ember/raven.min.js" - }, - "@build/raven.js": { - "hashes": { - "sha256": "SjPjty/KY+/wRri+a6h29idUVnjsjBUHUqxZyjkaIHc=", - "sha512": "xv32+sqApEjd61xwUqo0MPg06FOKoOB+UbnMxJdBfsxIEkdGihZC4IGoFsfxXU5GMG52ZEtbySwSl3Yg5LMDqA==" - }, - "type": null, - "integrity": "sha256-SjPjty/KY+/wRri+a6h29idUVnjsjBUHUqxZyjkaIHc= sha512-xv32+sqApEjd61xwUqo0MPg06FOKoOB+UbnMxJdBfsxIEkdGihZC4IGoFsfxXU5GMG52ZEtbySwSl3Yg5LMDqA==", - "path": "build/raven.js" - }, - "@build/raven.min.js": { - "hashes": { - "sha256": "2TUqXq260UlXHDKQoX/RpTVZfTfn2IWkg7TwrR/auAM=", - "sha512": "PcpcIpldTtVGSpIfMuHKlrGbzPkX3qGy10cgrAxVv0kYDr82/EYRSMfgPfJQbpSOs9xzExkqzNULGhffmntvyA==" - }, - "type": null, - "integrity": "sha256-2TUqXq260UlXHDKQoX/RpTVZfTfn2IWkg7TwrR/auAM= sha512-PcpcIpldTtVGSpIfMuHKlrGbzPkX3qGy10cgrAxVv0kYDr82/EYRSMfgPfJQbpSOs9xzExkqzNULGhffmntvyA==", - "path": "build/raven.min.js" - }, - "@build/require,vue/raven.js": { - "hashes": { - "sha256": "S5T+Jzzn3W84/O3JM2MaP9n2hSiBgQ2AVZ/uOUQfr5E=", - "sha512": "YSsbnyG89AzFOIFHBHm6jBhtzvXvai6mlQU4snhmScyAVO4Hon9IBNV93YyecVkTaxemWCukehx9tFHutrnd6A==" - }, - "type": null, - "integrity": "sha256-S5T+Jzzn3W84/O3JM2MaP9n2hSiBgQ2AVZ/uOUQfr5E= sha512-YSsbnyG89AzFOIFHBHm6jBhtzvXvai6mlQU4snhmScyAVO4Hon9IBNV93YyecVkTaxemWCukehx9tFHutrnd6A==", - "path": "build/require,vue/raven.js" - }, - "@build/require,vue/raven.min.js": { - "hashes": { - "sha256": "iFwyDH3GlmbUr/DqbsLHct9I4/PTcHYSO3gAHZhJUUE=", - "sha512": "DDXSNc1Snj010bIGNyse9sKxwsaixuhoJE6BrdiT4kU1zfJuCRQoNStst6JKw18Eo//XHWwkQO+4Zt433MtK3w==" - }, - "type": null, - "integrity": "sha256-iFwyDH3GlmbUr/DqbsLHct9I4/PTcHYSO3gAHZhJUUE= sha512-DDXSNc1Snj010bIGNyse9sKxwsaixuhoJE6BrdiT4kU1zfJuCRQoNStst6JKw18Eo//XHWwkQO+4Zt433MtK3w==", - "path": "build/require,vue/raven.min.js" - }, - "@build/require/raven.js": { - "hashes": { - "sha256": "KehLMfbyOXuJd7+9DAQxez7A9Or4687Oemqwf/kWOLE=", - "sha512": "BC1vBkqN8pca+2BY01f66oRTklqhNF1IKLYTJXyPSgZWVovuILNNuebkjtn475KDB5rM9VmdWeQ+AmqtClkGKw==" - }, - "type": null, - "integrity": "sha256-KehLMfbyOXuJd7+9DAQxez7A9Or4687Oemqwf/kWOLE= sha512-BC1vBkqN8pca+2BY01f66oRTklqhNF1IKLYTJXyPSgZWVovuILNNuebkjtn475KDB5rM9VmdWeQ+AmqtClkGKw==", - "path": "build/require/raven.js" - }, - "@build/require/raven.min.js": { - "hashes": { - "sha256": "hneJb35fyLHQaBh7bI0EYsceZCcmeu2f+gIPwN/r6D4=", - "sha512": "hEhGDh565EwwXPaa3gz1GspFs2hoqCZI+Rezh57SuofZ7bEshj79MDPCXj9wlVmCX/UpW0Wy0zD4XAkLiiOmLw==" - }, - "type": null, - "integrity": "sha256-hneJb35fyLHQaBh7bI0EYsceZCcmeu2f+gIPwN/r6D4= sha512-hEhGDh565EwwXPaa3gz1GspFs2hoqCZI+Rezh57SuofZ7bEshj79MDPCXj9wlVmCX/UpW0Wy0zD4XAkLiiOmLw==", - "path": "build/require/raven.min.js" - }, - "@build/vue/raven.js": { - "hashes": { - "sha256": "zSPt4xF/gVYvxoisai1aSo5QtkLfFqtHU9+BvfoLWWs=", - "sha512": "8//PeZQlVezbhIh6fqCPSMLENX6e6usmi+EmFQYq/+JDOMlQJCSBTeX+FOFDI5U8BD+nixPZo9/ExI3fGchPhw==" - }, - "type": null, - "integrity": "sha256-zSPt4xF/gVYvxoisai1aSo5QtkLfFqtHU9+BvfoLWWs= sha512-8//PeZQlVezbhIh6fqCPSMLENX6e6usmi+EmFQYq/+JDOMlQJCSBTeX+FOFDI5U8BD+nixPZo9/ExI3fGchPhw==", - "path": "build/vue/raven.js" - }, - "@build/vue/raven.min.js": { - "hashes": { - "sha256": "idTHFO7u/2mKPRzgjdJksruaJ92hTK2Gc+n/AU7ECn0=", - "sha512": "ag/76jayQNoSDVFDqQ5+X9dp36BmS3JWK96t7uw9bFm6xeY0pwEQluUDqcG25P7S+P/MdyGRydK+SKfjVrGASQ==" - }, - "type": null, - "integrity": "sha256-idTHFO7u/2mKPRzgjdJksruaJ92hTK2Gc+n/AU7ECn0= sha512-ag/76jayQNoSDVFDqQ5+X9dp36BmS3JWK96t7uw9bFm6xeY0pwEQluUDqcG25P7S+P/MdyGRydK+SKfjVrGASQ==", - "path": "build/vue/raven.min.js" + "integrity": "sha256-1zNq1n53B28kCJcIRi1+VN2Y+3/NrNBDH+hx5PiE0yg= sha512-nMKRkZ6Po8gjj2suKnMfcAeV/sd7FlskIa8vUd3vqrANsVBvo8uqeff9L2saHv8EXQRLa9LiexpJeK/cJ1mJVg==", + "path": "dist/raven.min.js" } } \ No newline at end of file diff --git a/dist/vue/raven.js b/dist/vue/raven.js index 6b97483e21b6..8ed49da21bf8 100644 --- a/dist/vue/raven.js +++ b/dist/vue/raven.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.25.0 (80dffad) | github.com/getsentry/raven-js */ +/*! Raven.js 3.25.1 (b6f3c7a) | github.com/getsentry/raven-js */ /* * Includes TraceKit @@ -257,7 +257,7 @@ Raven.prototype = { // webpack (using a build step causes webpack #1617). Grunt verifies that // this value matches package.json during build. // See: https://github.com/getsentry/raven-js/issues/465 - VERSION: '3.25.0', + VERSION: '3.25.1', debug: false, @@ -1566,8 +1566,8 @@ Raven.prototype = { var hasPushAndReplaceState = !isChromePackagedApp && _window.history && - history.pushState && - history.replaceState; + _window.history.pushState && + _window.history.replaceState; if (autoBreadcrumbs.location && hasPushAndReplaceState) { // TODO: remove onpopstate handler on uninstall() var oldOnPopState = _window.onpopstate; @@ -1596,8 +1596,8 @@ Raven.prototype = { }; }; - fill(history, 'pushState', historyReplacementFunction, wrappedBuiltIns); - fill(history, 'replaceState', historyReplacementFunction, wrappedBuiltIns); + fill(_window.history, 'pushState', historyReplacementFunction, wrappedBuiltIns); + fill(_window.history, 'replaceState', historyReplacementFunction, wrappedBuiltIns); } if (autoBreadcrumbs.console && 'console' in _window && console.log) { @@ -1887,7 +1887,7 @@ Raven.prototype = { if (this._hasNavigator && _navigator.userAgent) { httpData.headers = { - 'User-Agent': navigator.userAgent + 'User-Agent': _navigator.userAgent }; } @@ -3062,6 +3062,16 @@ function getLocationHref() { function getLocationOrigin() { if (typeof document === 'undefined' || document.location == null) return ''; + + // Oh dear IE10... + if (!document.location.origin) { + document.location.origin = + document.location.protocol + + '//' + + document.location.hostname + + (document.location.port ? ':' + document.location.port : ''); + } + return document.location.origin; } diff --git a/dist/vue/raven.min.js b/dist/vue/raven.min.js index 72b109575515..5bd051eb9fa2 100644 --- a/dist/vue/raven.min.js +++ b/dist/vue/raven.min.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.25.0 (80dffad) | github.com/getsentry/raven-js */ -!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.Raven=a()}}(function(){return function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};b[g][0].call(k.exports,function(a){var c=b[g][1][a];return e(c?c:a)},k,k.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;g":"anonymous component")+(a._isVue&&a.$options.__file?" at "+a.$options.__file:"")}function e(a,b){if(b=b||window.Vue,b&&b.config){var c=b.config.errorHandler;b.config.errorHandler=function(b,e,f){var g={};"[object Object]"===Object.prototype.toString.call(e)&&(g.componentName=d(e),g.propsData=e.$options.propsData),"undefined"!=typeof f&&(g.lifecycleHook=f),a.captureException(b,{extra:g}),"function"==typeof c&&c.call(this,b,e,f)}}}b.exports=e,a(5).addPlugin(b.exports)},{5:5}],2:[function(a,b,c){function d(a){this.name="RavenConfigError",this.message=a}d.prototype=new Error,d.prototype.constructor=d,b.exports=d},{}],3:[function(a,b,c){var d=a(6),e=function(a,b,c){var e=a[b],f=a;if(b in a){var g="warn"===b?"warning":b;a[b]=function(){var a=[].slice.call(arguments),h=d.safeJoin(a," "),i={level:g,logger:"console",extra:{arguments:a}};"assert"===b?a[0]===!1&&(h="Assertion failed: "+(d.safeJoin(a.slice(1)," ")||"console.assert"),i.extra.arguments=a.slice(1),c&&c(h,i)):c&&c(h,i),e&&Function.prototype.apply.call(e,f,a)}}};b.exports={wrapMethod:e}},{6:6}],4:[function(a,b,c){(function(c){function d(){return+new Date}function e(a,b){return s(b)?function(c){return b(c,a)}:b}function f(){this.a=!("object"!=typeof JSON||!JSON.stringify),this.b=!r(S),this.c=!r(T),this.d=null,this.e=null,this.f=null,this.g=null,this.h=null,this.i=null,this.j={},this.k={release:R.SENTRY_RELEASE&&R.SENTRY_RELEASE.id,logger:"javascript",ignoreErrors:[],ignoreUrls:[],whitelistUrls:[],includePaths:[],headers:null,collectWindowErrors:!0,captureUnhandledRejections:!0,maxMessageLength:0,maxUrlLength:250,stackTraceLimit:50,autoBreadcrumbs:!0,instrument:!0,sampleRate:1,sanitizeKeys:[]},this.l={method:"POST",keepalive:!0,referrerPolicy:K()?"origin":""},this.m=0,this.n=!1,this.o=Error.stackTraceLimit,this.p=R.console||{},this.q={},this.r=[],this.s=d(),this.t=[],this.u=[],this.v=null,this.w=R.location,this.x=this.w&&this.w.href,this.y();for(var a in this.p)this.q[a]=this.p[a]}var g=a(7),h=a(8),i=a(9),j=a(2),k=a(6),l=k.isErrorEvent,m=k.isDOMError,n=k.isDOMException,o=k.isError,p=k.isObject,q=k.isPlainObject,r=k.isUndefined,s=k.isFunction,t=k.isString,u=k.isArray,v=k.isEmptyObject,w=k.each,x=k.objectMerge,y=k.truncate,z=k.objectFrozen,A=k.hasKey,B=k.joinRegExp,C=k.urlencode,D=k.uuid4,E=k.htmlTreeAsString,F=k.isSameException,G=k.isSameStacktrace,H=k.parseUrl,I=k.fill,J=k.supportsFetch,K=k.supportsReferrerPolicy,L=k.serializeKeysForMessage,M=k.serializeException,N=k.sanitize,O=a(3).wrapMethod,P="source protocol user pass host port path".split(" "),Q=/^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/,R="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},S=R.document,T=R.navigator;f.prototype={VERSION:"3.25.0",debug:!1,TraceKit:g,config:function(a,b){var c=this;if(c.g)return this.z("error","Error: Raven has already been configured"),c;if(!a)return c;var d=c.k;b&&w(b,function(a,b){"tags"===a||"extra"===a||"user"===a?c.j[a]=b:d[a]=b}),c.setDSN(a),d.ignoreErrors.push(/^Script error\.?$/),d.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/),d.ignoreErrors=B(d.ignoreErrors),d.ignoreUrls=!!d.ignoreUrls.length&&B(d.ignoreUrls),d.whitelistUrls=!!d.whitelistUrls.length&&B(d.whitelistUrls),d.includePaths=B(d.includePaths),d.maxBreadcrumbs=Math.max(0,Math.min(d.maxBreadcrumbs||100,100));var e={xhr:!0,console:!0,dom:!0,location:!0,sentry:!0},f=d.autoBreadcrumbs;"[object Object]"==={}.toString.call(f)?f=x(e,f):f!==!1&&(f=e),d.autoBreadcrumbs=f;var h={tryCatch:!0},i=d.instrument;return"[object Object]"==={}.toString.call(i)?i=x(h,i):i!==!1&&(i=h),d.instrument=i,g.collectWindowErrors=!!d.collectWindowErrors,c},install:function(){var a=this;return a.isSetup()&&!a.n&&(g.report.subscribe(function(){a.A.apply(a,arguments)}),a.k.captureUnhandledRejections&&a.B(),a.C(),a.k.instrument&&a.k.instrument.tryCatch&&a.D(),a.k.autoBreadcrumbs&&a.E(),a.F(),a.n=!0),Error.stackTraceLimit=a.k.stackTraceLimit,this},setDSN:function(a){var b=this,c=b.G(a),d=c.path.lastIndexOf("/"),e=c.path.substr(1,d);b.H=a,b.h=c.user,b.I=c.pass&&c.pass.substr(1),b.i=c.path.substr(d+1),b.g=b.J(c),b.K=b.g+"/"+e+"api/"+b.i+"/store/",this.y()},context:function(a,b,c){return s(a)&&(c=b||[],b=a,a=void 0),this.wrap(a,b).apply(this,c)},wrap:function(a,b,c){function d(){var d=[],f=arguments.length,g=!a||a&&a.deep!==!1;for(c&&s(c)&&c.apply(this,arguments);f--;)d[f]=g?e.wrap(a,arguments[f]):arguments[f];try{return b.apply(this,d)}catch(h){throw e.L(),e.captureException(h,a),h}}var e=this;if(r(b)&&!s(a))return a;if(s(a)&&(b=a,a=void 0),!s(b))return b;try{if(b.M)return b;if(b.N)return b.N}catch(f){return b}for(var g in b)A(b,g)&&(d[g]=b[g]);return d.prototype=b.prototype,b.N=d,d.M=!0,d.O=b,d},uninstall:function(){return g.report.uninstall(),this.P(),this.Q(),this.R(),this.S(),Error.stackTraceLimit=this.o,this.n=!1,this},T:function(a){this.z("debug","Raven caught unhandled promise rejection:",a),this.captureException(a.reason,{extra:{unhandledPromiseRejection:!0}})},B:function(){return this.T=this.T.bind(this),R.addEventListener&&R.addEventListener("unhandledrejection",this.T),this},P:function(){return R.removeEventListener&&R.removeEventListener("unhandledrejection",this.T),this},captureException:function(a,b){if(b=x({trimHeadFrames:0},b?b:{}),l(a)&&a.error)a=a.error;else{if(m(a)||n(a)){var c=a.name||(m(a)?"DOMError":"DOMException"),d=a.message?c+": "+a.message:c;return this.captureMessage(d,x(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}))}if(o(a))a=a;else{if(!q(a))return this.captureMessage(a,x(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}));b=this.U(b,a),a=new Error(b.message)}}this.d=a;try{var e=g.computeStackTrace(a);this.V(e,b)}catch(f){if(a!==f)throw f}return this},U:function(a,b){var c=Object.keys(b).sort(),d=x(a,{message:"Non-Error exception captured with keys: "+L(c),fingerprint:[i(c)],extra:a.extra||{}});return d.extra.W=M(b),d},captureMessage:function(a,b){if(!this.k.ignoreErrors.test||!this.k.ignoreErrors.test(a)){b=b||{},a+="";var c,d=x({message:a},b);try{throw new Error(a)}catch(e){c=e}c.name=null;var f=g.computeStackTrace(c),h=u(f.stack)&&f.stack[1];h&&"Raven.captureException"===h.func&&(h=f.stack[2]);var i=h&&h.url||"";if((!this.k.ignoreUrls.test||!this.k.ignoreUrls.test(i))&&(!this.k.whitelistUrls.test||this.k.whitelistUrls.test(i))){if(this.k.stacktrace||b&&b.stacktrace){d.fingerprint=null==d.fingerprint?a:d.fingerprint,b=x({trimHeadFrames:0},b),b.trimHeadFrames+=1;var j=this.X(f,b);d.stacktrace={frames:j.reverse()}}return d.fingerprint&&(d.fingerprint=u(d.fingerprint)?d.fingerprint:[d.fingerprint]),this.Y(d),this}}},captureBreadcrumb:function(a){var b=x({timestamp:d()/1e3},a);if(s(this.k.breadcrumbCallback)){var c=this.k.breadcrumbCallback(b);if(p(c)&&!v(c))b=c;else if(c===!1)return this}return this.u.push(b),this.u.length>this.k.maxBreadcrumbs&&this.u.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.r.push([a,b]),this.n&&this.F(),this},setUserContext:function(a){return this.j.user=a,this},setExtraContext:function(a){return this.Z("extra",a),this},setTagsContext:function(a){return this.Z("tags",a),this},clearContext:function(){return this.j={},this},getContext:function(){return JSON.parse(h(this.j))},setEnvironment:function(a){return this.k.environment=a,this},setRelease:function(a){return this.k.release=a,this},setDataCallback:function(a){var b=this.k.dataCallback;return this.k.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.k.breadcrumbCallback;return this.k.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.k.shouldSendCallback;return this.k.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.k.transport=a,this},lastException:function(){return this.d},lastEventId:function(){return this.f},isSetup:function(){return!!this.a&&(!!this.g||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.z("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=R.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(S){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.H;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.j.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.J(this.G(c)),h=S.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(S.head||S.body).appendChild(h)}},L:function(){var a=this;this.m+=1,setTimeout(function(){a.m-=1})},$:function(a,b){var c,d;if(this.b){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),S.createEvent?(c=S.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=S.createEventObject(),c.eventType=a);for(d in b)A(b,d)&&(c[d]=b[d]);if(S.createEvent)S.dispatchEvent(c);else try{S.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},_:function(a){var b=this;return function(c){if(b.aa=null,b.v!==c){b.v=c;var d;try{d=E(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ba:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.aa;g||a._("input")(c),clearTimeout(g),a.aa=setTimeout(function(){a.aa=null},b)}}},ca:function(a,b){var c=H(this.w.href),d=H(b),e=H(a);this.x=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},C:function(){var a=this;a.da=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.M?a.da.apply(this.O,arguments):a.da.apply(this,arguments)}},Q:function(){this.da&&(Function.prototype.toString=this.da)},D:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.ca(b.x,c+""),a.apply(this,arguments)}};I(history,"pushState",j,d),I(history,"replaceState",j,d)}if(c.console&&"console"in R&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};w(["debug","info","warn","error","log"],function(a,b){O(console,b,k)})}},R:function(){for(var a;this.t.length;){a=this.t.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},S:function(){for(var a in this.q)this.p[a]=this.q[a]},F:function(){var a=this;w(this.r,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},G:function(a){var b=Q.exec(a),c={},d=7;try{for(;d--;)c[P[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.k.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},J:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},A:function(){this.m||this.V.apply(this,arguments)},V:function(a,b){var c=this.X(a,b);this.$("handle",{stackInfo:a,options:b}),this.fa(a.name,a.message,a.url,a.lineno,c,b)},X:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(w(a.stack,function(b,e){var f=c.ga(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.u,0)}),this.j.user&&(a.user=this.j.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),a=this.pa(a),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||v(a[b]))&&delete a[b]}),s(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!v(a)&&(!s(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.ma()?void this.z("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function F(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&l(b))for(c=b.split(/\s+/),f=0;fc?Q(a,b-1):d}function R(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?X:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function S(a,b){function c(a){return m(a)?a.map(function(a){return c(a)}):k(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!m(b)||m(b)&&0===b.length)return a;var d,e=A(b),f="********";try{d=JSON.parse(T(a))}catch(g){return a}return c(d)}var T=a(8),U="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},V=3,W=51200,X=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isDOMError:g,isDOMException:h,isUndefined:i,isFunction:j,isPlainObject:k,isString:l,isArray:m,isEmptyObject:n,supportsErrorEvent:o,supportsDOMError:p,supportsDOMException:q,supportsFetch:r,supportsReferrerPolicy:s,supportsPromiseRejectionEvent:t,wrappedCallback:u,each:v,objectMerge:w,truncate:y,objectFrozen:x,hasKey:z,joinRegExp:A,urlencode:B,uuid4:D,htmlTreeAsString:E,htmlElementAsString:F,isSameException:I,isSameStacktrace:J,parseUrl:C,fill:K,safeJoin:L,serializeException:Q,serializeKeysForMessage:R,sanitize:S}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{8:8}],7:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}function e(){return"undefined"==typeof document||null==document.location?"":document.location.origin}var f=a(6),g={collectWindowErrors:!0,debug:!1},h="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},i=[].slice,j="?",k=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;g.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function e(a,b){var c=null;if(!b||g.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(i.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,h,i){var l=null,m=f.isErrorEvent(i)?i.error:i,n=f.isErrorEvent(a)?a.message:a;if(v)g.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&f.isError(m))l=g.computeStackTrace(m),e(l,!0);else{var p,r={url:b,line:c,column:h},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(k);p&&(s=p[1],n=p[2])}r.func=j,l={name:s,message:n,url:d(),stack:[r]},e(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=h.onerror,h.onerror=l,r=!0)}function n(){r&&(h.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,e.apply(null,[a,!1].concat(b))}function p(a,b){var c=i.call(arguments,1);if(v){if(u===a)return;o()}var d=g.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),g.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,f,g=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,h=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,i=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,k=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,l=/\((\S*)(?::(\d+))(?::(\d+))\)/,m=a.stack.split("\n"),n=[],o=(/^(.*) is undefined$/.exec(a.message),0),p=m.length;o eval")>-1;r&&(b=k.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==o||c[5]||"undefined"==typeof a.columnNumber||(n[0].column=a.columnNumber+1),f={url:c[3],func:c[1]||j,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}if(!f.func&&f.line&&(f.func=j),f.url&&"blob:"===f.url.substr(0,5)){var s=new XMLHttpRequest;if(s.open("GET",f.url,!1),s.send(null),200===s.status){var t=s.responseText||"";t=t.slice(-300);var u=t.match(/\/\/# sourceMappingURL=(.*)$/);if(u){var v=u[1];"~"===v.charAt(0)&&(v=e()+v.slice(1)),f.url=v.slice(0,-4)}}}n.push(f)}return n.length?{name:a.name,message:a.message,url:d(),stack:n}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=j),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,e){for(var h,i,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==f&&o!==g.report){if(i={url:null,func:j,line:null,column:null},o.name?i.func=o.name:(h=k.exec(o.toString()))&&(i.func=h[1]),"undefined"==typeof i.func)try{i.func=h.input.substring(0,h.input.indexOf("{"))}catch(p){}m[""+o]?n=!0:m[""+o]=!0,l.push(i)}e&&l.splice(0,e); -var q={name:a.name,message:a.message,url:d(),stack:l};return b(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),q}function f(b,e){var f=null;e=null==e?0:+e;try{if(f=a(b))return f}catch(h){if(g.debug)throw h}try{if(f=c(b,e+1))return f}catch(h){if(g.debug)throw h}return{name:b.name,message:b.message,url:d()}}return f.augmentStackTraceWithInitialElement=b,f.computeStackTraceFromStackProp=a,f}(),b.exports=g}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{6:6}],8:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}],9:[function(a,b,c){function d(a,b){var c=(65535&a)+(65535&b),d=(a>>16)+(b>>16)+(c>>16);return d<<16|65535&c}function e(a,b){return a<>>32-b}function f(a,b,c,f,g,h){return d(e(d(d(b,a),d(f,h)),g),c)}function g(a,b,c,d,e,g,h){return f(b&c|~b&d,a,b,e,g,h)}function h(a,b,c,d,e,g,h){return f(b&d|c&~d,a,b,e,g,h)}function i(a,b,c,d,e,g,h){return f(b^c^d,a,b,e,g,h)}function j(a,b,c,d,e,g,h){return f(c^(b|~d),a,b,e,g,h)}function k(a,b){a[b>>5]|=128<>>9<<4)+14]=b;var c,e,f,k,l,m=1732584193,n=-271733879,o=-1732584194,p=271733878;for(c=0;c>5]>>>b%32&255);return c}function m(a){var b,c=[];for(c[(a.length>>2)-1]=void 0,b=0;b>5]|=(255&a.charCodeAt(b/8))<16&&(e=k(e,8*a.length)),c=0;c<16;c+=1)f[c]=909522486^e[c],g[c]=1549556828^e[c];return d=k(f.concat(m(b)),512+8*b.length),l(k(g.concat(d),640))}function p(a){var b,c,d="0123456789abcdef",e="";for(c=0;c>>4&15)+d.charAt(15&b);return e}function q(a){return unescape(encodeURIComponent(a))}function r(a){return n(q(a))}function s(a){return p(r(a))}function t(a,b){return o(q(a),q(b))}function u(a,b){return p(t(a,b))}function v(a,b,c){return b?c?t(b,a):u(b,a):c?r(a):s(a)}b.exports=v},{}]},{},[5,1])(5)}); +/*! Raven.js 3.25.1 (b6f3c7a) | github.com/getsentry/raven-js */ +!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.Raven=a()}}(function(){return function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};b[g][0].call(k.exports,function(a){var c=b[g][1][a];return e(c?c:a)},k,k.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;g":"anonymous component")+(a._isVue&&a.$options.__file?" at "+a.$options.__file:"")}function e(a,b){if(b=b||window.Vue,b&&b.config){var c=b.config.errorHandler;b.config.errorHandler=function(b,e,f){var g={};"[object Object]"===Object.prototype.toString.call(e)&&(g.componentName=d(e),g.propsData=e.$options.propsData),"undefined"!=typeof f&&(g.lifecycleHook=f),a.captureException(b,{extra:g}),"function"==typeof c&&c.call(this,b,e,f)}}}b.exports=e,a(5).addPlugin(b.exports)},{5:5}],2:[function(a,b,c){function d(a){this.name="RavenConfigError",this.message=a}d.prototype=new Error,d.prototype.constructor=d,b.exports=d},{}],3:[function(a,b,c){var d=a(6),e=function(a,b,c){var e=a[b],f=a;if(b in a){var g="warn"===b?"warning":b;a[b]=function(){var a=[].slice.call(arguments),h=d.safeJoin(a," "),i={level:g,logger:"console",extra:{arguments:a}};"assert"===b?a[0]===!1&&(h="Assertion failed: "+(d.safeJoin(a.slice(1)," ")||"console.assert"),i.extra.arguments=a.slice(1),c&&c(h,i)):c&&c(h,i),e&&Function.prototype.apply.call(e,f,a)}}};b.exports={wrapMethod:e}},{6:6}],4:[function(a,b,c){(function(c){function d(){return+new Date}function e(a,b){return s(b)?function(c){return b(c,a)}:b}function f(){this.a=!("object"!=typeof JSON||!JSON.stringify),this.b=!r(S),this.c=!r(T),this.d=null,this.e=null,this.f=null,this.g=null,this.h=null,this.i=null,this.j={},this.k={release:R.SENTRY_RELEASE&&R.SENTRY_RELEASE.id,logger:"javascript",ignoreErrors:[],ignoreUrls:[],whitelistUrls:[],includePaths:[],headers:null,collectWindowErrors:!0,captureUnhandledRejections:!0,maxMessageLength:0,maxUrlLength:250,stackTraceLimit:50,autoBreadcrumbs:!0,instrument:!0,sampleRate:1,sanitizeKeys:[]},this.l={method:"POST",keepalive:!0,referrerPolicy:K()?"origin":""},this.m=0,this.n=!1,this.o=Error.stackTraceLimit,this.p=R.console||{},this.q={},this.r=[],this.s=d(),this.t=[],this.u=[],this.v=null,this.w=R.location,this.x=this.w&&this.w.href,this.y();for(var a in this.p)this.q[a]=this.p[a]}var g=a(7),h=a(8),i=a(9),j=a(2),k=a(6),l=k.isErrorEvent,m=k.isDOMError,n=k.isDOMException,o=k.isError,p=k.isObject,q=k.isPlainObject,r=k.isUndefined,s=k.isFunction,t=k.isString,u=k.isArray,v=k.isEmptyObject,w=k.each,x=k.objectMerge,y=k.truncate,z=k.objectFrozen,A=k.hasKey,B=k.joinRegExp,C=k.urlencode,D=k.uuid4,E=k.htmlTreeAsString,F=k.isSameException,G=k.isSameStacktrace,H=k.parseUrl,I=k.fill,J=k.supportsFetch,K=k.supportsReferrerPolicy,L=k.serializeKeysForMessage,M=k.serializeException,N=k.sanitize,O=a(3).wrapMethod,P="source protocol user pass host port path".split(" "),Q=/^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/,R="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},S=R.document,T=R.navigator;f.prototype={VERSION:"3.25.1",debug:!1,TraceKit:g,config:function(a,b){var c=this;if(c.g)return this.z("error","Error: Raven has already been configured"),c;if(!a)return c;var d=c.k;b&&w(b,function(a,b){"tags"===a||"extra"===a||"user"===a?c.j[a]=b:d[a]=b}),c.setDSN(a),d.ignoreErrors.push(/^Script error\.?$/),d.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/),d.ignoreErrors=B(d.ignoreErrors),d.ignoreUrls=!!d.ignoreUrls.length&&B(d.ignoreUrls),d.whitelistUrls=!!d.whitelistUrls.length&&B(d.whitelistUrls),d.includePaths=B(d.includePaths),d.maxBreadcrumbs=Math.max(0,Math.min(d.maxBreadcrumbs||100,100));var e={xhr:!0,console:!0,dom:!0,location:!0,sentry:!0},f=d.autoBreadcrumbs;"[object Object]"==={}.toString.call(f)?f=x(e,f):f!==!1&&(f=e),d.autoBreadcrumbs=f;var h={tryCatch:!0},i=d.instrument;return"[object Object]"==={}.toString.call(i)?i=x(h,i):i!==!1&&(i=h),d.instrument=i,g.collectWindowErrors=!!d.collectWindowErrors,c},install:function(){var a=this;return a.isSetup()&&!a.n&&(g.report.subscribe(function(){a.A.apply(a,arguments)}),a.k.captureUnhandledRejections&&a.B(),a.C(),a.k.instrument&&a.k.instrument.tryCatch&&a.D(),a.k.autoBreadcrumbs&&a.E(),a.F(),a.n=!0),Error.stackTraceLimit=a.k.stackTraceLimit,this},setDSN:function(a){var b=this,c=b.G(a),d=c.path.lastIndexOf("/"),e=c.path.substr(1,d);b.H=a,b.h=c.user,b.I=c.pass&&c.pass.substr(1),b.i=c.path.substr(d+1),b.g=b.J(c),b.K=b.g+"/"+e+"api/"+b.i+"/store/",this.y()},context:function(a,b,c){return s(a)&&(c=b||[],b=a,a=void 0),this.wrap(a,b).apply(this,c)},wrap:function(a,b,c){function d(){var d=[],f=arguments.length,g=!a||a&&a.deep!==!1;for(c&&s(c)&&c.apply(this,arguments);f--;)d[f]=g?e.wrap(a,arguments[f]):arguments[f];try{return b.apply(this,d)}catch(h){throw e.L(),e.captureException(h,a),h}}var e=this;if(r(b)&&!s(a))return a;if(s(a)&&(b=a,a=void 0),!s(b))return b;try{if(b.M)return b;if(b.N)return b.N}catch(f){return b}for(var g in b)A(b,g)&&(d[g]=b[g]);return d.prototype=b.prototype,b.N=d,d.M=!0,d.O=b,d},uninstall:function(){return g.report.uninstall(),this.P(),this.Q(),this.R(),this.S(),Error.stackTraceLimit=this.o,this.n=!1,this},T:function(a){this.z("debug","Raven caught unhandled promise rejection:",a),this.captureException(a.reason,{extra:{unhandledPromiseRejection:!0}})},B:function(){return this.T=this.T.bind(this),R.addEventListener&&R.addEventListener("unhandledrejection",this.T),this},P:function(){return R.removeEventListener&&R.removeEventListener("unhandledrejection",this.T),this},captureException:function(a,b){if(b=x({trimHeadFrames:0},b?b:{}),l(a)&&a.error)a=a.error;else{if(m(a)||n(a)){var c=a.name||(m(a)?"DOMError":"DOMException"),d=a.message?c+": "+a.message:c;return this.captureMessage(d,x(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}))}if(o(a))a=a;else{if(!q(a))return this.captureMessage(a,x(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}));b=this.U(b,a),a=new Error(b.message)}}this.d=a;try{var e=g.computeStackTrace(a);this.V(e,b)}catch(f){if(a!==f)throw f}return this},U:function(a,b){var c=Object.keys(b).sort(),d=x(a,{message:"Non-Error exception captured with keys: "+L(c),fingerprint:[i(c)],extra:a.extra||{}});return d.extra.W=M(b),d},captureMessage:function(a,b){if(!this.k.ignoreErrors.test||!this.k.ignoreErrors.test(a)){b=b||{},a+="";var c,d=x({message:a},b);try{throw new Error(a)}catch(e){c=e}c.name=null;var f=g.computeStackTrace(c),h=u(f.stack)&&f.stack[1];h&&"Raven.captureException"===h.func&&(h=f.stack[2]);var i=h&&h.url||"";if((!this.k.ignoreUrls.test||!this.k.ignoreUrls.test(i))&&(!this.k.whitelistUrls.test||this.k.whitelistUrls.test(i))){if(this.k.stacktrace||b&&b.stacktrace){d.fingerprint=null==d.fingerprint?a:d.fingerprint,b=x({trimHeadFrames:0},b),b.trimHeadFrames+=1;var j=this.X(f,b);d.stacktrace={frames:j.reverse()}}return d.fingerprint&&(d.fingerprint=u(d.fingerprint)?d.fingerprint:[d.fingerprint]),this.Y(d),this}}},captureBreadcrumb:function(a){var b=x({timestamp:d()/1e3},a);if(s(this.k.breadcrumbCallback)){var c=this.k.breadcrumbCallback(b);if(p(c)&&!v(c))b=c;else if(c===!1)return this}return this.u.push(b),this.u.length>this.k.maxBreadcrumbs&&this.u.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.r.push([a,b]),this.n&&this.F(),this},setUserContext:function(a){return this.j.user=a,this},setExtraContext:function(a){return this.Z("extra",a),this},setTagsContext:function(a){return this.Z("tags",a),this},clearContext:function(){return this.j={},this},getContext:function(){return JSON.parse(h(this.j))},setEnvironment:function(a){return this.k.environment=a,this},setRelease:function(a){return this.k.release=a,this},setDataCallback:function(a){var b=this.k.dataCallback;return this.k.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.k.breadcrumbCallback;return this.k.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.k.shouldSendCallback;return this.k.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.k.transport=a,this},lastException:function(){return this.d},lastEventId:function(){return this.f},isSetup:function(){return!!this.a&&(!!this.g||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.z("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=R.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(S){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.H;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.j.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.J(this.G(c)),h=S.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(S.head||S.body).appendChild(h)}},L:function(){var a=this;this.m+=1,setTimeout(function(){a.m-=1})},$:function(a,b){var c,d;if(this.b){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),S.createEvent?(c=S.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=S.createEventObject(),c.eventType=a);for(d in b)A(b,d)&&(c[d]=b[d]);if(S.createEvent)S.dispatchEvent(c);else try{S.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},_:function(a){var b=this;return function(c){if(b.aa=null,b.v!==c){b.v=c;var d;try{d=E(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ba:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.aa;g||a._("input")(c),clearTimeout(g),a.aa=setTimeout(function(){a.aa=null},b)}}},ca:function(a,b){var c=H(this.w.href),d=H(b),e=H(a);this.x=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},C:function(){var a=this;a.da=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.M?a.da.apply(this.O,arguments):a.da.apply(this,arguments)}},Q:function(){this.da&&(Function.prototype.toString=this.da)},D:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.ca(b.x,c+""),a.apply(this,arguments)}};I(R.history,"pushState",j,d),I(R.history,"replaceState",j,d)}if(c.console&&"console"in R&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};w(["debug","info","warn","error","log"],function(a,b){O(console,b,k)})}},R:function(){for(var a;this.t.length;){a=this.t.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},S:function(){for(var a in this.q)this.p[a]=this.q[a]},F:function(){var a=this;w(this.r,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},G:function(a){var b=Q.exec(a),c={},d=7;try{for(;d--;)c[P[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.k.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},J:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},A:function(){this.m||this.V.apply(this,arguments)},V:function(a,b){var c=this.X(a,b);this.$("handle",{stackInfo:a,options:b}),this.fa(a.name,a.message,a.url,a.lineno,c,b)},X:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(w(a.stack,function(b,e){var f=c.ga(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.u,0)}),this.j.user&&(a.user=this.j.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),a=this.pa(a),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||v(a[b]))&&delete a[b]}),s(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!v(a)&&(!s(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.ma()?void this.z("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function F(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&l(b))for(c=b.split(/\s+/),f=0;fc?Q(a,b-1):d}function R(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?X:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function S(a,b){function c(a){return m(a)?a.map(function(a){return c(a)}):k(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!m(b)||m(b)&&0===b.length)return a;var d,e=A(b),f="********";try{d=JSON.parse(T(a))}catch(g){return a}return c(d)}var T=a(8),U="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},V=3,W=51200,X=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isDOMError:g,isDOMException:h,isUndefined:i,isFunction:j,isPlainObject:k,isString:l,isArray:m,isEmptyObject:n,supportsErrorEvent:o,supportsDOMError:p,supportsDOMException:q,supportsFetch:r,supportsReferrerPolicy:s,supportsPromiseRejectionEvent:t,wrappedCallback:u,each:v,objectMerge:w,truncate:y,objectFrozen:x,hasKey:z,joinRegExp:A,urlencode:B,uuid4:D,htmlTreeAsString:E,htmlElementAsString:F,isSameException:I,isSameStacktrace:J,parseUrl:C,fill:K,safeJoin:L,serializeException:Q,serializeKeysForMessage:R,sanitize:S}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{8:8}],7:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}function e(){return"undefined"==typeof document||null==document.location?"":(document.location.origin||(document.location.origin=document.location.protocol+"//"+document.location.hostname+(document.location.port?":"+document.location.port:"")),document.location.origin)}var f=a(6),g={collectWindowErrors:!0,debug:!1},h="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},i=[].slice,j="?",k=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;g.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function e(a,b){var c=null;if(!b||g.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(i.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,h,i){var l=null,m=f.isErrorEvent(i)?i.error:i,n=f.isErrorEvent(a)?a.message:a;if(v)g.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&f.isError(m))l=g.computeStackTrace(m),e(l,!0);else{var p,r={url:b,line:c,column:h},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(k);p&&(s=p[1],n=p[2])}r.func=j,l={name:s,message:n,url:d(),stack:[r]},e(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=h.onerror,h.onerror=l,r=!0)}function n(){r&&(h.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,e.apply(null,[a,!1].concat(b))}function p(a,b){var c=i.call(arguments,1);if(v){if(u===a)return;o()}var d=g.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),g.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,f,g=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,h=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,i=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,k=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,l=/\((\S*)(?::(\d+))(?::(\d+))\)/,m=a.stack.split("\n"),n=[],o=(/^(.*) is undefined$/.exec(a.message),0),p=m.length;o eval")>-1;r&&(b=k.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==o||c[5]||"undefined"==typeof a.columnNumber||(n[0].column=a.columnNumber+1),f={url:c[3],func:c[1]||j,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}if(!f.func&&f.line&&(f.func=j),f.url&&"blob:"===f.url.substr(0,5)){var s=new XMLHttpRequest;if(s.open("GET",f.url,!1),s.send(null),200===s.status){var t=s.responseText||"";t=t.slice(-300);var u=t.match(/\/\/# sourceMappingURL=(.*)$/);if(u){var v=u[1];"~"===v.charAt(0)&&(v=e()+v.slice(1)),f.url=v.slice(0,-4)}}}n.push(f)}return n.length?{name:a.name,message:a.message,url:d(),stack:n}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=j),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,e){for(var h,i,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==f&&o!==g.report){if(i={url:null,func:j,line:null,column:null},o.name?i.func=o.name:(h=k.exec(o.toString()))&&(i.func=h[1]), +"undefined"==typeof i.func)try{i.func=h.input.substring(0,h.input.indexOf("{"))}catch(p){}m[""+o]?n=!0:m[""+o]=!0,l.push(i)}e&&l.splice(0,e);var q={name:a.name,message:a.message,url:d(),stack:l};return b(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),q}function f(b,e){var f=null;e=null==e?0:+e;try{if(f=a(b))return f}catch(h){if(g.debug)throw h}try{if(f=c(b,e+1))return f}catch(h){if(g.debug)throw h}return{name:b.name,message:b.message,url:d()}}return f.augmentStackTraceWithInitialElement=b,f.computeStackTraceFromStackProp=a,f}(),b.exports=g}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{6:6}],8:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}],9:[function(a,b,c){function d(a,b){var c=(65535&a)+(65535&b),d=(a>>16)+(b>>16)+(c>>16);return d<<16|65535&c}function e(a,b){return a<>>32-b}function f(a,b,c,f,g,h){return d(e(d(d(b,a),d(f,h)),g),c)}function g(a,b,c,d,e,g,h){return f(b&c|~b&d,a,b,e,g,h)}function h(a,b,c,d,e,g,h){return f(b&d|c&~d,a,b,e,g,h)}function i(a,b,c,d,e,g,h){return f(b^c^d,a,b,e,g,h)}function j(a,b,c,d,e,g,h){return f(c^(b|~d),a,b,e,g,h)}function k(a,b){a[b>>5]|=128<>>9<<4)+14]=b;var c,e,f,k,l,m=1732584193,n=-271733879,o=-1732584194,p=271733878;for(c=0;c>5]>>>b%32&255);return c}function m(a){var b,c=[];for(c[(a.length>>2)-1]=void 0,b=0;b>5]|=(255&a.charCodeAt(b/8))<16&&(e=k(e,8*a.length)),c=0;c<16;c+=1)f[c]=909522486^e[c],g[c]=1549556828^e[c];return d=k(f.concat(m(b)),512+8*b.length),l(k(g.concat(d),640))}function p(a){var b,c,d="0123456789abcdef",e="";for(c=0;c>>4&15)+d.charAt(15&b);return e}function q(a){return unescape(encodeURIComponent(a))}function r(a){return n(q(a))}function s(a){return p(r(a))}function t(a,b){return o(q(a),q(b))}function u(a,b){return p(t(a,b))}function v(a,b,c){return b?c?t(b,a):u(b,a):c?r(a):s(a)}b.exports=v},{}]},{},[5,1])(5)}); //# sourceMappingURL=raven.min.js.map \ No newline at end of file diff --git a/dist/vue/raven.min.js.map b/dist/vue/raven.min.js.map index 8ac81d20a06d..c91b109a4c09 100644 --- a/dist/vue/raven.min.js.map +++ b/dist/vue/raven.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","formatComponentName","vm","$root","name","_isVue","$options","_componentTag","__file","vuePlugin","Vue","config","_oldOnError","errorHandler","error","info","metaData","Object","prototype","toString","componentName","propsData","lifecycleHook","captureException","extra","addPlugin","5","2","RavenConfigError","message","constructor","3","utils","wrapMethod","console","level","callback","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","msg","safeJoin","data","logger","Function","apply","6","4","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","sanitizeKeys","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isErrorEvent","isDOMError","isDOMException","isError","isObject","isPlainObject","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","sanitize","wrapConsoleMethod","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","dsn","options","_logDebug","globalOptions","key","value","setDSN","push","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","substr","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","context","func","undefined","wrap","_before","wrapped","deep","_ignoreNextOnError","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","T","event","reason","unhandledPromiseRejection","B","_promiseRejectionHandler","bind","addEventListener","P","removeEventListener","ex","trimHeadFrames","captureMessage","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","U","currentOptions","exKeys","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","setDataCallback","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","L","setTimeout","$","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","_","evtName","_keypressTimeout","target","category","ba","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","ca","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","C","_originalFunctionToString","Q","D","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","type","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","E","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","R","builtin","S","F","installer","concat","G","str","m","exec","allowSecretKey","J","port","A","V","stackInfo","_triggerEvent","_processException","lineno","X","frame","_normalizeFrame","in_app","ga","stackInfoUrl","normalized","filename","line","colno","column","function","fa","prefixedMessage","exception","values","culprit","ha","request","Referer","breadcrumbs","_trimBreadcrumbs","ia","urlProp","urlProps","ja","httpData","userAgent","User-Agent","referrer","y","_backoffDuration","_backoffStart","ma","na","current","last","oa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Y","baseData","project","platform","_getHttpData","serverName","server_name","_sanitizeData","forEach","random","_sendProcessedPayload","pa","ra","qa","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","sa","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","onerror","open","setRequestHeader","send","ta","hash","evaluated","z","Z","setUser","setReleaseContext","7","8","9","RavenConstructor","_Raven","noConflict","Client","what","supportsErrorEvent","ErrorEvent","supportsDOMError","DOMError","supportsDOMException","DOMException","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","wrappedCallback","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","sanitizeMask","safeInput","o_O","getLocationHref","getLocationOrigin","origin","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","responseText","sourceMaps","sourceMapAddress","charAt","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","string","raw"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file +{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","formatComponentName","vm","$root","name","_isVue","$options","_componentTag","__file","vuePlugin","Vue","config","_oldOnError","errorHandler","error","info","metaData","Object","prototype","toString","componentName","propsData","lifecycleHook","captureException","extra","addPlugin","5","2","RavenConfigError","message","constructor","3","utils","wrapMethod","console","level","callback","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","msg","safeJoin","data","logger","Function","apply","6","4","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","sanitizeKeys","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isErrorEvent","isDOMError","isDOMException","isError","isObject","isPlainObject","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","sanitize","wrapConsoleMethod","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","dsn","options","_logDebug","globalOptions","key","value","setDSN","push","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","substr","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","context","func","undefined","wrap","_before","wrapped","deep","_ignoreNextOnError","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","T","event","reason","unhandledPromiseRejection","B","_promiseRejectionHandler","bind","addEventListener","P","removeEventListener","ex","trimHeadFrames","captureMessage","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","U","currentOptions","exKeys","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","setDataCallback","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","L","setTimeout","$","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","_","evtName","_keypressTimeout","target","category","ba","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","ca","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","C","_originalFunctionToString","Q","D","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","type","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","E","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","R","builtin","S","F","installer","concat","G","str","m","exec","allowSecretKey","J","port","A","V","stackInfo","_triggerEvent","_processException","lineno","X","frame","_normalizeFrame","in_app","ga","stackInfoUrl","normalized","filename","line","colno","column","function","fa","prefixedMessage","exception","values","culprit","ha","request","Referer","breadcrumbs","_trimBreadcrumbs","ia","urlProp","urlProps","ja","httpData","userAgent","User-Agent","referrer","y","_backoffDuration","_backoffStart","ma","na","current","last","oa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Y","baseData","project","platform","_getHttpData","serverName","server_name","_sanitizeData","forEach","random","_sendProcessedPayload","pa","ra","qa","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","sa","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","onerror","open","setRequestHeader","send","ta","hash","evaluated","z","Z","setUser","setReleaseContext","7","8","9","RavenConstructor","_Raven","noConflict","Client","what","supportsErrorEvent","ErrorEvent","supportsDOMError","DOMError","supportsDOMException","DOMException","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","wrappedCallback","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","sanitizeMask","safeInput","o_O","getLocationHref","getLocationOrigin","origin","hostname","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","responseText","sourceMaps","sourceMapAddress","charAt","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","string","raw"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file diff --git a/docs/sentry-doc-config.json b/docs/sentry-doc-config.json index cbc04efe1219..bbf147fc5935 100644 --- a/docs/sentry-doc-config.json +++ b/docs/sentry-doc-config.json @@ -66,6 +66,6 @@ } }, "vars": { - "RAVEN_VERSION": "3.25.0" + "RAVEN_VERSION": "3.25.1" } } diff --git a/package.json b/package.json index b18e4df799ae..a741b1b75a45 100644 --- a/package.json +++ b/package.json @@ -9,7 +9,7 @@ "raven", "sentry" ], - "version": "3.25.0", + "version": "3.25.1", "repository": "git://github.com/getsentry/raven-js.git", "license": "BSD-2-Clause", "homepage": "https://github.com/getsentry/raven-js", diff --git a/src/raven.js b/src/raven.js index 7c8552d565aa..6037a62037c9 100644 --- a/src/raven.js +++ b/src/raven.js @@ -139,7 +139,7 @@ Raven.prototype = { // webpack (using a build step causes webpack #1617). Grunt verifies that // this value matches package.json during build. // See: https://github.com/getsentry/raven-js/issues/465 - VERSION: '3.25.0', + VERSION: '3.25.1', debug: false, diff --git a/test/raven.test.js b/test/raven.test.js index 1dd3c3d819b3..308667fa891b 100644 --- a/test/raven.test.js +++ b/test/raven.test.js @@ -1370,7 +1370,7 @@ describe('globals', function() { extra: {'session:duration': 100} }); assert.deepEqual(opts.auth, { - sentry_client: 'raven-js/3.25.0', + sentry_client: 'raven-js/3.25.1', sentry_key: 'abc', sentry_version: '7' }); @@ -1417,7 +1417,7 @@ describe('globals', function() { extra: {'session:duration': 100} }); assert.deepEqual(opts.auth, { - sentry_client: 'raven-js/3.25.0', + sentry_client: 'raven-js/3.25.1', sentry_key: 'abc', sentry_secret: 'def', sentry_version: '7' From 166546bb5075937076cae9b57ccbda544b8b0e6f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kamil=20Og=C3=B3rek?= Date: Fri, 11 May 2018 12:53:22 +0200 Subject: [PATCH 54/75] build: uglify during build, not during dist task --- Gruntfile.js | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/Gruntfile.js b/Gruntfile.js index ecc3a54aa094..20c650bab5f5 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -307,14 +307,20 @@ module.exports = function(grunt) { // Build tasks grunt.registerTask('_prep', ['clean', 'gitinfo', 'version']); - grunt.registerTask('build', ['_prep', 'build.core', 'build.plugins', 'sri:build']); + grunt.registerTask('build', [ + '_prep', + 'build.core', + 'build.plugins', + 'uglify', + 'sri:build' + ]); grunt.registerTask('build.test', ['_prep', 'build.core', 'browserify:test']); grunt.registerTask('build.core', ['browserify:core']); grunt.registerTask( 'build.plugins', browserifyPluginTaskNames.concat('browserify:plugins-combined') ); - grunt.registerTask('dist', ['build', 'uglify', 'copy:dist', 'sri:dist']); + grunt.registerTask('dist', ['build', 'copy:dist', 'sri:dist']); grunt.registerTask('publish', ['build', 's3']); grunt.registerTask('test:ci', ['config:ci', 'build.test']); }; From 30b6d4ec12d8fefbea55beffa5b866e4f38c6bda Mon Sep 17 00:00:00 2001 From: Jan Michael Auer Date: Tue, 15 May 2018 11:06:08 +0200 Subject: [PATCH 55/75] ref: Emit transaction instead of culprit (#1330) --- plugins/react-native.js | 6 +- src/raven.js | 10 ++- test/plugins/angular.test.js | 4 +- test/plugins/react-native.test.js | 122 ++++++++++++++++++++++++++++++ test/raven.test.js | 18 ++--- 5 files changed, 145 insertions(+), 15 deletions(-) diff --git a/plugins/react-native.js b/plugins/react-native.js index 1c5f2f4e5ef8..1f22ee64be4b 100644 --- a/plugins/react-native.js +++ b/plugins/react-native.js @@ -218,7 +218,7 @@ reactNativePlugin._transport = function(options) { }; /** - * Strip device-specific IDs found in culprit and frame filenames + * Strip device-specific IDs found in transaction and frame filenames * when running React Native applications on a physical device. */ reactNativePlugin._normalizeData = function(data, pathStripRe) { @@ -230,6 +230,10 @@ reactNativePlugin._normalizeData = function(data, pathStripRe) { data.culprit = normalizeUrl(data.culprit, pathStripRe); } + if (data.transaction) { + data.transaction = normalizeUrl(data.transaction, pathStripRe); + } + // NOTE: if data.exception exists, exception.values and exception.values[0] are // guaranteed to exist var stacktrace = diff --git a/src/raven.js b/src/raven.js index 6037a62037c9..182e3aeaf44f 100644 --- a/src/raven.js +++ b/src/raven.js @@ -49,7 +49,11 @@ function now() { var _window = typeof window !== 'undefined' ? window - : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; + : typeof global !== 'undefined' + ? global + : typeof self !== 'undefined' + ? self + : {}; var _document = _window.document; var _navigator = _window.navigator; @@ -1695,7 +1699,7 @@ Raven.prototype = { } ] }, - culprit: fileurl + transaction: fileurl }, options ); @@ -1810,7 +1814,7 @@ Raven.prototype = { if ( !last || current.message !== last.message || // defined for captureMessage - current.culprit !== last.culprit // defined for captureException/onerror + current.transaction !== last.transaction // defined for captureException/onerror ) return false; diff --git a/test/plugins/angular.test.js b/test/plugins/angular.test.js index 9e76f4c60408..c6b29449708e 100644 --- a/test/plugins/angular.test.js +++ b/test/plugins/angular.test.js @@ -15,7 +15,7 @@ describe('Angular plugin', function() { logger: 'javascript', platform: 'javascript', - culprit: 'http://example.org/app.js', + transaction: 'http://example.org/app.js', message: 'Error: crap', exception: { type: 'Error', @@ -50,7 +50,7 @@ describe('Angular plugin', function() { logger: 'javascript', platform: 'javascript', - culprit: 'http://example.org/app.js', + transaction: 'http://example.org/app.js', message: 'Error: crap', exception: { type: 'Error', diff --git a/test/plugins/react-native.test.js b/test/plugins/react-native.test.js index e1b3a0a9788e..3f352582cdf1 100644 --- a/test/plugins/react-native.test.js +++ b/test/plugins/react-native.test.js @@ -136,6 +136,128 @@ describe('React Native plugin', function() { assert.equal(frames[0].filename, '/file1.js'); assert.equal(frames[1].filename, '/file2.js'); }); + + it('should normalize transaction and frame filenames/URLs from .app directory', function() { + var data = { + project: '2', + logger: 'javascript', + platform: 'javascript', + + transaction: + 'file:///var/mobile/Containers/Bundle/Application/ABC/123.app/app.js', + message: 'Error: crap', + exception: { + type: 'Error', + values: [ + { + stacktrace: { + frames: [ + { + filename: + 'file:///var/containers/Bundle/Application/ABC/123.app/file1.js', + lineno: 10, + colno: 11, + function: 'broken' + }, + { + filename: + 'file:///var/mobile/Containers/Bundle/Application/ABC/123.app/file2.js', + lineno: 12, + colno: 13, + function: 'lol' + } + ] + } + } + ] + } + }; + reactNativePlugin._normalizeData(data); + + assert.equal(data.transaction, '/app.js'); + var frames = data.exception.values[0].stacktrace.frames; + assert.equal(frames[0].filename, '/file1.js'); + assert.equal(frames[1].filename, '/file2.js'); + }); + + it('should normalize transaction and frame filenames/URLs from stacktrace interface', function() { + var data = { + project: '2', + logger: 'javascript', + platform: 'javascript', + + transaction: + 'file:///var/mobile/Containers/Bundle/Application/ABC/123.app/app.js', + message: 'Error: crap', + + stacktrace: { + frames: [ + { + filename: 'file:///var/containers/Bundle/Application/ABC/123.app/file1.js', + lineno: 10, + colno: 11, + function: 'broken' + }, + { + filename: + 'file:///var/mobile/Containers/Bundle/Application/ABC/123.app/file2.js', + lineno: 12, + colno: 13, + function: 'lol' + } + ] + } + }; + reactNativePlugin._normalizeData(data); + + assert.equal(data.transaction, '/app.js'); + var frames = data.stacktrace.frames; + assert.equal(frames[0].filename, '/file1.js'); + assert.equal(frames[1].filename, '/file2.js'); + }); + + it('should normalize transaction and frame filenames/URLs from CodePush', function() { + var data = { + project: '2', + logger: 'javascript', + platform: 'javascript', + + transaction: + 'file:///var/mobile/Containers/Data/Application/ABC/Library/Application%20Support/CodePush/CDE/CodePush/app.js', + message: 'Error: crap', + exception: { + type: 'Error', + values: [ + { + stacktrace: { + frames: [ + { + filename: + 'file:///var/mobile/Containers/Data/Application/ABC/Library/Application%20Support/CodePush/CDE/CodePush/file1.js', + lineno: 10, + colno: 11, + function: 'broken' + }, + { + filename: + 'file:///var/mobile/Containers/Data/Application/ABC/Library/Application%20Support/CodePush/CDE/CodePush/file2.js', + lineno: 12, + colno: 13, + function: 'lol' + } + ] + } + } + ] + } + }; + reactNativePlugin._normalizeData(data); + + assert.equal(data.transaction, '/app.js'); + var frames = data.exception.values[0].stacktrace.frames; + assert.equal(frames[0].filename, '/file1.js'); + assert.equal(frames[1].filename, '/file2.js'); + }); }); describe('_transport()', function() { diff --git a/test/raven.test.js b/test/raven.test.js index 308667fa891b..84178e1b8363 100644 --- a/test/raven.test.js +++ b/test/raven.test.js @@ -648,7 +648,7 @@ describe('globals', function() { } ] }, - culprit: 'http://example.com/file1.js' + transaction: 'http://example.com/file1.js' } ]); @@ -666,7 +666,7 @@ describe('globals', function() { } ] }, - culprit: 'http://example.com/file1.js' + transaction: 'http://example.com/file1.js' } ]); @@ -686,7 +686,7 @@ describe('globals', function() { } ] }, - culprit: 'http://example.com/file1.js', + transaction: 'http://example.com/file1.js', extra: 'awesome' } ]); @@ -722,7 +722,7 @@ describe('globals', function() { } ] }, - culprit: 'http://example.com/override.js' + transaction: 'http://example.com/override.js' } ]); @@ -753,7 +753,7 @@ describe('globals', function() { } ] }, - culprit: 'http://example.com/override.js' + transaction: 'http://example.com/override.js' } ]); @@ -779,7 +779,7 @@ describe('globals', function() { } ] }, - culprit: 'http://example.com/override.js', + transaction: 'http://example.com/override.js', extra: 'awesome' } ]); @@ -2071,7 +2071,7 @@ describe('globals', function() { pre_context: ['line4'] }] }, - culprit: 'http://example.com', + transaction: 'http://example.com', message: 'Error: pickleRick', foo: 'bar' }]); @@ -3805,7 +3805,7 @@ describe('Raven (private methods)', function() { describe('from captureException/onerror', function() { beforeEach(function() { Raven._lastData = { - culprit: 'https://example.com/js/foo.js', + transaction: 'https://example.com/js/foo.js', exception: { type: 'TypeError', value: 'foo is not defined', @@ -3834,7 +3834,7 @@ describe('Raven (private methods)', function() { it('should return false for different exceptions', function() { var data = JSON.parse(JSON.stringify(Raven._lastData)); // copy - data.culprit = 'https://example.com/js/bar.js'; + data.transaction = 'https://example.com/js/bar.js'; assert.isFalse(Raven._isRepeatData(data)); data = JSON.parse(JSON.stringify(Raven._lastData)); // copy From d5e44e2cf87ccecefc9a07bc460f403b3a0f46fd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kamil=20Og=C3=B3rek?= Date: Thu, 17 May 2018 10:31:11 +0200 Subject: [PATCH 56/75] 3.25.2 --- CHANGELOG.md | 4 ++++ bower.json | 2 +- dist/angular,console,ember,require,vue/raven.js | 14 +++++++++----- .../angular,console,ember,require,vue/raven.min.js | 4 ++-- .../raven.min.js.map | 2 +- dist/angular,console,ember,require/raven.js | 14 +++++++++----- dist/angular,console,ember,require/raven.min.js | 6 +++--- .../angular,console,ember,require/raven.min.js.map | 2 +- dist/angular,console,ember,vue/raven.js | 14 +++++++++----- dist/angular,console,ember,vue/raven.min.js | 6 +++--- dist/angular,console,ember,vue/raven.min.js.map | 2 +- dist/angular,console,ember/raven.js | 14 +++++++++----- dist/angular,console,ember/raven.min.js | 4 ++-- dist/angular,console,ember/raven.min.js.map | 2 +- dist/angular,console,require,vue/raven.js | 14 +++++++++----- dist/angular,console,require,vue/raven.min.js | 4 ++-- dist/angular,console,require,vue/raven.min.js.map | 2 +- dist/angular,console,require/raven.js | 14 +++++++++----- dist/angular,console,require/raven.min.js | 6 +++--- dist/angular,console,require/raven.min.js.map | 2 +- dist/angular,console,vue/raven.js | 14 +++++++++----- dist/angular,console,vue/raven.min.js | 6 +++--- dist/angular,console,vue/raven.min.js.map | 2 +- dist/angular,console/raven.js | 14 +++++++++----- dist/angular,console/raven.min.js | 4 ++-- dist/angular,console/raven.min.js.map | 2 +- dist/angular,ember,require,vue/raven.js | 14 +++++++++----- dist/angular,ember,require,vue/raven.min.js | 6 +++--- dist/angular,ember,require,vue/raven.min.js.map | 2 +- dist/angular,ember,require/raven.js | 14 +++++++++----- dist/angular,ember,require/raven.min.js | 6 +++--- dist/angular,ember,require/raven.min.js.map | 2 +- dist/angular,ember,vue/raven.js | 14 +++++++++----- dist/angular,ember,vue/raven.min.js | 6 +++--- dist/angular,ember,vue/raven.min.js.map | 2 +- dist/angular,ember/raven.js | 14 +++++++++----- dist/angular,ember/raven.min.js | 6 +++--- dist/angular,ember/raven.min.js.map | 2 +- dist/angular,require,vue/raven.js | 14 +++++++++----- dist/angular,require,vue/raven.min.js | 4 ++-- dist/angular,require,vue/raven.min.js.map | 2 +- dist/angular,require/raven.js | 14 +++++++++----- dist/angular,require/raven.min.js | 4 ++-- dist/angular,require/raven.min.js.map | 2 +- dist/angular,vue/raven.js | 14 +++++++++----- dist/angular,vue/raven.min.js | 4 ++-- dist/angular,vue/raven.min.js.map | 2 +- dist/angular/raven.js | 14 +++++++++----- dist/angular/raven.min.js | 4 ++-- dist/angular/raven.min.js.map | 2 +- dist/console,ember,require,vue/raven.js | 14 +++++++++----- dist/console,ember,require,vue/raven.min.js | 4 ++-- dist/console,ember,require,vue/raven.min.js.map | 2 +- dist/console,ember,require/raven.js | 14 +++++++++----- dist/console,ember,require/raven.min.js | 6 +++--- dist/console,ember,require/raven.min.js.map | 2 +- dist/console,ember,vue/raven.js | 14 +++++++++----- dist/console,ember,vue/raven.min.js | 6 +++--- dist/console,ember,vue/raven.min.js.map | 2 +- dist/console,ember/raven.js | 14 +++++++++----- dist/console,ember/raven.min.js | 6 +++--- dist/console,ember/raven.min.js.map | 2 +- dist/console,require,vue/raven.js | 14 +++++++++----- dist/console,require,vue/raven.min.js | 6 +++--- dist/console,require,vue/raven.min.js.map | 2 +- dist/console,require/raven.js | 14 +++++++++----- dist/console,require/raven.min.js | 6 +++--- dist/console,require/raven.min.js.map | 2 +- dist/console,vue/raven.js | 14 +++++++++----- dist/console,vue/raven.min.js | 6 +++--- dist/console,vue/raven.min.js.map | 2 +- dist/console/raven.js | 14 +++++++++----- dist/console/raven.min.js | 6 +++--- dist/console/raven.min.js.map | 2 +- dist/ember,require,vue/raven.js | 14 +++++++++----- dist/ember,require,vue/raven.min.js | 6 +++--- dist/ember,require,vue/raven.min.js.map | 2 +- dist/ember,require/raven.js | 14 +++++++++----- dist/ember,require/raven.min.js | 4 ++-- dist/ember,require/raven.min.js.map | 2 +- dist/ember,vue/raven.js | 14 +++++++++----- dist/ember,vue/raven.min.js | 4 ++-- dist/ember,vue/raven.min.js.map | 2 +- dist/ember/raven.js | 14 +++++++++----- dist/ember/raven.min.js | 6 +++--- dist/ember/raven.min.js.map | 2 +- dist/plugins/angular.js | 2 +- dist/plugins/angular.min.js | 2 +- dist/plugins/console.js | 2 +- dist/plugins/console.min.js | 2 +- dist/plugins/ember.js | 2 +- dist/plugins/ember.min.js | 2 +- dist/plugins/require.js | 2 +- dist/plugins/require.min.js | 2 +- dist/plugins/vue.js | 2 +- dist/plugins/vue.min.js | 2 +- dist/raven.js | 14 +++++++++----- dist/raven.min.js | 4 ++-- dist/raven.min.js.map | 2 +- dist/require,vue/raven.js | 14 +++++++++----- dist/require,vue/raven.min.js | 4 ++-- dist/require,vue/raven.min.js.map | 2 +- dist/require/raven.js | 14 +++++++++----- dist/require/raven.min.js | 6 +++--- dist/require/raven.min.js.map | 2 +- dist/sri.json | 12 ++++++------ dist/vue/raven.js | 14 +++++++++----- dist/vue/raven.min.js | 4 ++-- dist/vue/raven.min.js.map | 2 +- docs/sentry-doc-config.json | 2 +- package.json | 2 +- src/raven.js | 8 ++------ test/raven.test.js | 4 ++-- 113 files changed, 429 insertions(+), 301 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index e11d3c4a6ed3..4bd0ea562927 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,9 @@ # Changelog +## 3.25.2 + +* REF: Emit transaction instead of culprit (#1330) + ## 3.25.1 * BUILD: fix missing plugins in dist directory and simplify grunt build (#1327) diff --git a/bower.json b/bower.json index c8b09649dcd4..38e3f1f9ee8a 100644 --- a/bower.json +++ b/bower.json @@ -1,6 +1,6 @@ { "name": "raven-js", - "version": "3.25.1", + "version": "3.25.2", "dependencies": {}, "main": "dist/raven.js", "ignore": [ diff --git a/dist/angular,console,ember,require,vue/raven.js b/dist/angular,console,ember,require,vue/raven.js index df24093f90fc..e73c76bd4a9c 100644 --- a/dist/angular,console,ember,require,vue/raven.js +++ b/dist/angular,console,ember,require,vue/raven.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.25.1 (b6f3c7a) | github.com/getsentry/raven-js */ +/*! Raven.js 3.25.2 (30b6d4e) | github.com/getsentry/raven-js */ /* * Includes TraceKit @@ -329,7 +329,11 @@ function now() { var _window = typeof window !== 'undefined' ? window - : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; + : typeof global !== 'undefined' + ? global + : typeof self !== 'undefined' + ? self + : {}; var _document = _window.document; var _navigator = _window.navigator; @@ -419,7 +423,7 @@ Raven.prototype = { // webpack (using a build step causes webpack #1617). Grunt verifies that // this value matches package.json during build. // See: https://github.com/getsentry/raven-js/issues/465 - VERSION: '3.25.1', + VERSION: '3.25.2', debug: false, @@ -1975,7 +1979,7 @@ Raven.prototype = { } ] }, - culprit: fileurl + transaction: fileurl }, options ); @@ -2090,7 +2094,7 @@ Raven.prototype = { if ( !last || current.message !== last.message || // defined for captureMessage - current.culprit !== last.culprit // defined for captureException/onerror + current.transaction !== last.transaction // defined for captureException/onerror ) return false; diff --git a/dist/angular,console,ember,require,vue/raven.min.js b/dist/angular,console,ember,require,vue/raven.min.js index 735869d6b4b8..6ea65d866777 100644 --- a/dist/angular,console,ember,require,vue/raven.min.js +++ b/dist/angular,console,ember,require,vue/raven.min.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.25.1 (b6f3c7a) | github.com/getsentry/raven-js */ -!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.Raven=a()}}(function(){var a;return function b(a,c,d){function e(g,h){if(!c[g]){if(!a[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};a[g][0].call(k.exports,function(b){var c=a[g][1][b];return e(c?c:b)},k,k.exports,b,a,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;g":"anonymous component")+(a._isVue&&a.$options.__file?" at "+a.$options.__file:"")}function e(a,b){if(b=b||window.Vue,b&&b.config){var c=b.config.errorHandler;b.config.errorHandler=function(b,e,f){var g={};"[object Object]"===Object.prototype.toString.call(e)&&(g.componentName=d(e),g.propsData=e.$options.propsData),"undefined"!=typeof f&&(g.lifecycleHook=f),a.captureException(b,{extra:g}),"function"==typeof c&&c.call(this,b,e,f)}}}b.exports=e,a(9).addPlugin(b.exports)},{9:9}],6:[function(a,b,c){function d(a){this.name="RavenConfigError",this.message=a}d.prototype=new Error,d.prototype.constructor=d,b.exports=d},{}],7:[function(a,b,c){var d=a(10),e=function(a,b,c){var e=a[b],f=a;if(b in a){var g="warn"===b?"warning":b;a[b]=function(){var a=[].slice.call(arguments),h=d.safeJoin(a," "),i={level:g,logger:"console",extra:{arguments:a}};"assert"===b?a[0]===!1&&(h="Assertion failed: "+(d.safeJoin(a.slice(1)," ")||"console.assert"),i.extra.arguments=a.slice(1),c&&c(h,i)):c&&c(h,i),e&&Function.prototype.apply.call(e,f,a)}}};b.exports={wrapMethod:e}},{10:10}],8:[function(a,b,c){(function(c){function d(){return+new Date}function e(a,b){return s(b)?function(c){return b(c,a)}:b}function f(){this.b=!("object"!=typeof JSON||!JSON.stringify),this.c=!r(S),this.d=!r(T),this.e=null,this.f=null,this.g=null,this.h=null,this.i=null,this.j=null,this.k={},this.l={release:R.SENTRY_RELEASE&&R.SENTRY_RELEASE.id,logger:"javascript",ignoreErrors:[],ignoreUrls:[],whitelistUrls:[],includePaths:[],headers:null,collectWindowErrors:!0,captureUnhandledRejections:!0,maxMessageLength:0,maxUrlLength:250,stackTraceLimit:50,autoBreadcrumbs:!0,instrument:!0,sampleRate:1,sanitizeKeys:[]},this.m={method:"POST",keepalive:!0,referrerPolicy:K()?"origin":""},this.n=0,this.o=!1,this.p=Error.stackTraceLimit,this.q=R.console||{},this.r={},this.s=[],this.t=d(),this.u=[],this.v=[],this.w=null,this.x=R.location,this.y=this.x&&this.x.href,this.z();for(var a in this.q)this.r[a]=this.q[a]}var g=a(11),h=a(12),i=a(13),j=a(6),k=a(10),l=k.isErrorEvent,m=k.isDOMError,n=k.isDOMException,o=k.isError,p=k.isObject,q=k.isPlainObject,r=k.isUndefined,s=k.isFunction,t=k.isString,u=k.isArray,v=k.isEmptyObject,w=k.each,x=k.objectMerge,y=k.truncate,z=k.objectFrozen,A=k.hasKey,B=k.joinRegExp,C=k.urlencode,D=k.uuid4,E=k.htmlTreeAsString,F=k.isSameException,G=k.isSameStacktrace,H=k.parseUrl,I=k.fill,J=k.supportsFetch,K=k.supportsReferrerPolicy,L=k.serializeKeysForMessage,M=k.serializeException,N=k.sanitize,O=a(7).wrapMethod,P="source protocol user pass host port path".split(" "),Q=/^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/,R="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},S=R.document,T=R.navigator;f.prototype={VERSION:"3.25.1",debug:!1,TraceKit:g,config:function(a,b){var c=this;if(c.h)return this.A("error","Error: Raven has already been configured"),c;if(!a)return c;var d=c.l;b&&w(b,function(a,b){"tags"===a||"extra"===a||"user"===a?c.k[a]=b:d[a]=b}),c.setDSN(a),d.ignoreErrors.push(/^Script error\.?$/),d.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/),d.ignoreErrors=B(d.ignoreErrors),d.ignoreUrls=!!d.ignoreUrls.length&&B(d.ignoreUrls),d.whitelistUrls=!!d.whitelistUrls.length&&B(d.whitelistUrls),d.includePaths=B(d.includePaths),d.maxBreadcrumbs=Math.max(0,Math.min(d.maxBreadcrumbs||100,100));var e={xhr:!0,console:!0,dom:!0,location:!0,sentry:!0},f=d.autoBreadcrumbs;"[object Object]"==={}.toString.call(f)?f=x(e,f):f!==!1&&(f=e),d.autoBreadcrumbs=f;var h={tryCatch:!0},i=d.instrument;return"[object Object]"==={}.toString.call(i)?i=x(h,i):i!==!1&&(i=h),d.instrument=i,g.collectWindowErrors=!!d.collectWindowErrors,c},install:function(){var a=this;return a.isSetup()&&!a.o&&(g.report.subscribe(function(){a.B.apply(a,arguments)}),a.l.captureUnhandledRejections&&a.C(),a.D(),a.l.instrument&&a.l.instrument.tryCatch&&a.E(),a.l.autoBreadcrumbs&&a.F(),a.G(),a.o=!0),Error.stackTraceLimit=a.l.stackTraceLimit,this},setDSN:function(a){var b=this,c=b.H(a),d=c.path.lastIndexOf("/"),e=c.path.substr(1,d);b.I=a,b.i=c.user,b.J=c.pass&&c.pass.substr(1),b.j=c.path.substr(d+1),b.h=b.K(c),b.L=b.h+"/"+e+"api/"+b.j+"/store/",this.z()},context:function(a,b,c){return s(a)&&(c=b||[],b=a,a=void 0),this.wrap(a,b).apply(this,c)},wrap:function(a,b,c){function d(){var d=[],f=arguments.length,g=!a||a&&a.deep!==!1;for(c&&s(c)&&c.apply(this,arguments);f--;)d[f]=g?e.wrap(a,arguments[f]):arguments[f];try{return b.apply(this,d)}catch(h){throw e.M(),e.captureException(h,a),h}}var e=this;if(r(b)&&!s(a))return a;if(s(a)&&(b=a,a=void 0),!s(b))return b;try{if(b.N)return b;if(b.O)return b.O}catch(f){return b}for(var g in b)A(b,g)&&(d[g]=b[g]);return d.prototype=b.prototype,b.O=d,d.N=!0,d.P=b,d},uninstall:function(){return g.report.uninstall(),this.Q(),this.R(),this.S(),this.T(),Error.stackTraceLimit=this.p,this.o=!1,this},U:function(a){this.A("debug","Raven caught unhandled promise rejection:",a),this.captureException(a.reason,{extra:{unhandledPromiseRejection:!0}})},C:function(){return this.U=this.U.bind(this),R.addEventListener&&R.addEventListener("unhandledrejection",this.U),this},Q:function(){return R.removeEventListener&&R.removeEventListener("unhandledrejection",this.U),this},captureException:function(a,b){if(b=x({trimHeadFrames:0},b?b:{}),l(a)&&a.error)a=a.error;else{if(m(a)||n(a)){var c=a.name||(m(a)?"DOMError":"DOMException"),d=a.message?c+": "+a.message:c;return this.captureMessage(d,x(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}))}if(o(a))a=a;else{if(!q(a))return this.captureMessage(a,x(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}));b=this.V(b,a),a=new Error(b.message)}}this.e=a;try{var e=g.computeStackTrace(a);this.W(e,b)}catch(f){if(a!==f)throw f}return this},V:function(a,b){var c=Object.keys(b).sort(),d=x(a,{message:"Non-Error exception captured with keys: "+L(c),fingerprint:[i(c)],extra:a.extra||{}});return d.extra.X=M(b),d},captureMessage:function(a,b){if(!this.l.ignoreErrors.test||!this.l.ignoreErrors.test(a)){b=b||{},a+="";var c,d=x({message:a},b);try{throw new Error(a)}catch(e){c=e}c.name=null;var f=g.computeStackTrace(c),h=u(f.stack)&&f.stack[1];h&&"Raven.captureException"===h.func&&(h=f.stack[2]);var i=h&&h.url||"";if((!this.l.ignoreUrls.test||!this.l.ignoreUrls.test(i))&&(!this.l.whitelistUrls.test||this.l.whitelistUrls.test(i))){if(this.l.stacktrace||b&&b.stacktrace){d.fingerprint=null==d.fingerprint?a:d.fingerprint,b=x({trimHeadFrames:0},b),b.trimHeadFrames+=1;var j=this.Y(f,b);d.stacktrace={frames:j.reverse()}}return d.fingerprint&&(d.fingerprint=u(d.fingerprint)?d.fingerprint:[d.fingerprint]),this.Z(d),this}}},captureBreadcrumb:function(a){var b=x({timestamp:d()/1e3},a);if(s(this.l.breadcrumbCallback)){var c=this.l.breadcrumbCallback(b);if(p(c)&&!v(c))b=c;else if(c===!1)return this}return this.v.push(b),this.v.length>this.l.maxBreadcrumbs&&this.v.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.s.push([a,b]),this.o&&this.G(),this},setUserContext:function(a){return this.k.user=a,this},setExtraContext:function(a){return this.$("extra",a),this},setTagsContext:function(a){return this.$("tags",a),this},clearContext:function(){return this.k={},this},getContext:function(){return JSON.parse(h(this.k))},setEnvironment:function(a){return this.l.environment=a,this},setRelease:function(a){return this.l.release=a,this},setDataCallback:function(a){var b=this.l.dataCallback;return this.l.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.l.breadcrumbCallback;return this.l.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.l.shouldSendCallback;return this.l.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.l.transport=a,this},lastException:function(){return this.e},lastEventId:function(){return this.g},isSetup:function(){return!!this.b&&(!!this.h||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.A("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=R.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(S){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.I;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.k.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.K(this.H(c)),h=S.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(S.head||S.body).appendChild(h)}},M:function(){var a=this;this.n+=1,setTimeout(function(){a.n-=1})},_:function(a,b){var c,d;if(this.c){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),S.createEvent?(c=S.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=S.createEventObject(),c.eventType=a);for(d in b)A(b,d)&&(c[d]=b[d]);if(S.createEvent)S.dispatchEvent(c);else try{S.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},aa:function(a){var b=this;return function(c){if(b.ba=null,b.w!==c){b.w=c;var d;try{d=E(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ca:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.ba;g||a.aa("input")(c),clearTimeout(g),a.ba=setTimeout(function(){a.ba=null},b)}}},da:function(a,b){var c=H(this.x.href),d=H(b),e=H(a);this.y=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},D:function(){var a=this;a.ea=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.N?a.ea.apply(this.P,arguments):a.ea.apply(this,arguments)}},R:function(){this.ea&&(Function.prototype.toString=this.ea)},E:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.da(b.y,c+""),a.apply(this,arguments)}};I(R.history,"pushState",j,d),I(R.history,"replaceState",j,d)}if(c.console&&"console"in R&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};w(["debug","info","warn","error","log"],function(a,b){O(console,b,k)})}},S:function(){for(var a;this.u.length;){a=this.u.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},T:function(){for(var a in this.r)this.q[a]=this.r[a]},G:function(){var a=this;w(this.s,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},H:function(a){var b=Q.exec(a),c={},d=7;try{for(;d--;)c[P[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.l.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},K:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},B:function(){this.n||this.W.apply(this,arguments)},W:function(a,b){var c=this.Y(a,b);this._("handle",{stackInfo:a,options:b}),this.ga(a.name,a.message,a.url,a.lineno,c,b)},Y:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(w(a.stack,function(b,e){var f=c.ha(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.v,0)}),this.k.user&&(a.user=this.k.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),a=this.qa(a),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||v(a[b]))&&delete a[b]}),s(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!v(a)&&(!s(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.na()?void this.A("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function F(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&l(b))for(c=b.split(/\s+/),f=0;fc?Q(a,b-1):d}function R(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?X:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function S(a,b){function c(a){return m(a)?a.map(function(a){return c(a)}):k(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!m(b)||m(b)&&0===b.length)return a;var d,e=A(b),f="********";try{d=JSON.parse(T(a))}catch(g){return a}return c(d)}var T=a(12),U="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},V=3,W=51200,X=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isDOMError:g,isDOMException:h,isUndefined:i,isFunction:j,isPlainObject:k,isString:l,isArray:m,isEmptyObject:n,supportsErrorEvent:o,supportsDOMError:p,supportsDOMException:q,supportsFetch:r,supportsReferrerPolicy:s,supportsPromiseRejectionEvent:t,wrappedCallback:u,each:v,objectMerge:w,truncate:y,objectFrozen:x,hasKey:z,joinRegExp:A,urlencode:B,uuid4:D,htmlTreeAsString:E,htmlElementAsString:F,isSameException:I,isSameStacktrace:J,parseUrl:C,fill:K,safeJoin:L,serializeException:Q,serializeKeysForMessage:R,sanitize:S}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{12:12}],11:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}function e(){return"undefined"==typeof document||null==document.location?"":(document.location.origin||(document.location.origin=document.location.protocol+"//"+document.location.hostname+(document.location.port?":"+document.location.port:"")),document.location.origin)}var f=a(10),g={collectWindowErrors:!0,debug:!1},h="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},i=[].slice,j="?",k=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;g.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function e(a,b){var c=null;if(!b||g.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(i.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,h,i){var l=null,m=f.isErrorEvent(i)?i.error:i,n=f.isErrorEvent(a)?a.message:a;if(v)g.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&f.isError(m))l=g.computeStackTrace(m),e(l,!0);else{var p,r={url:b,line:c,column:h},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(k);p&&(s=p[1],n=p[2])}r.func=j,l={name:s,message:n,url:d(),stack:[r]},e(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=h.onerror,h.onerror=l,r=!0)}function n(){r&&(h.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,e.apply(null,[a,!1].concat(b))}function p(a,b){var c=i.call(arguments,1);if(v){if(u===a)return;o()}var d=g.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),g.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,f,g=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,h=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,i=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,k=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,l=/\((\S*)(?::(\d+))(?::(\d+))\)/,m=a.stack.split("\n"),n=[],o=(/^(.*) is undefined$/.exec(a.message), +/*! Raven.js 3.25.2 (30b6d4e) | github.com/getsentry/raven-js */ +!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.Raven=a()}}(function(){var a;return function b(a,c,d){function e(g,h){if(!c[g]){if(!a[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};a[g][0].call(k.exports,function(b){var c=a[g][1][b];return e(c?c:b)},k,k.exports,b,a,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;g":"anonymous component")+(a._isVue&&a.$options.__file?" at "+a.$options.__file:"")}function e(a,b){if(b=b||window.Vue,b&&b.config){var c=b.config.errorHandler;b.config.errorHandler=function(b,e,f){var g={};"[object Object]"===Object.prototype.toString.call(e)&&(g.componentName=d(e),g.propsData=e.$options.propsData),"undefined"!=typeof f&&(g.lifecycleHook=f),a.captureException(b,{extra:g}),"function"==typeof c&&c.call(this,b,e,f)}}}b.exports=e,a(9).addPlugin(b.exports)},{9:9}],6:[function(a,b,c){function d(a){this.name="RavenConfigError",this.message=a}d.prototype=new Error,d.prototype.constructor=d,b.exports=d},{}],7:[function(a,b,c){var d=a(10),e=function(a,b,c){var e=a[b],f=a;if(b in a){var g="warn"===b?"warning":b;a[b]=function(){var a=[].slice.call(arguments),h=d.safeJoin(a," "),i={level:g,logger:"console",extra:{arguments:a}};"assert"===b?a[0]===!1&&(h="Assertion failed: "+(d.safeJoin(a.slice(1)," ")||"console.assert"),i.extra.arguments=a.slice(1),c&&c(h,i)):c&&c(h,i),e&&Function.prototype.apply.call(e,f,a)}}};b.exports={wrapMethod:e}},{10:10}],8:[function(a,b,c){(function(c){function d(){return+new Date}function e(a,b){return s(b)?function(c){return b(c,a)}:b}function f(){this.b=!("object"!=typeof JSON||!JSON.stringify),this.c=!r(S),this.d=!r(T),this.e=null,this.f=null,this.g=null,this.h=null,this.i=null,this.j=null,this.k={},this.l={release:R.SENTRY_RELEASE&&R.SENTRY_RELEASE.id,logger:"javascript",ignoreErrors:[],ignoreUrls:[],whitelistUrls:[],includePaths:[],headers:null,collectWindowErrors:!0,captureUnhandledRejections:!0,maxMessageLength:0,maxUrlLength:250,stackTraceLimit:50,autoBreadcrumbs:!0,instrument:!0,sampleRate:1,sanitizeKeys:[]},this.m={method:"POST",keepalive:!0,referrerPolicy:K()?"origin":""},this.n=0,this.o=!1,this.p=Error.stackTraceLimit,this.q=R.console||{},this.r={},this.s=[],this.t=d(),this.u=[],this.v=[],this.w=null,this.x=R.location,this.y=this.x&&this.x.href,this.z();for(var a in this.q)this.r[a]=this.q[a]}var g=a(11),h=a(12),i=a(13),j=a(6),k=a(10),l=k.isErrorEvent,m=k.isDOMError,n=k.isDOMException,o=k.isError,p=k.isObject,q=k.isPlainObject,r=k.isUndefined,s=k.isFunction,t=k.isString,u=k.isArray,v=k.isEmptyObject,w=k.each,x=k.objectMerge,y=k.truncate,z=k.objectFrozen,A=k.hasKey,B=k.joinRegExp,C=k.urlencode,D=k.uuid4,E=k.htmlTreeAsString,F=k.isSameException,G=k.isSameStacktrace,H=k.parseUrl,I=k.fill,J=k.supportsFetch,K=k.supportsReferrerPolicy,L=k.serializeKeysForMessage,M=k.serializeException,N=k.sanitize,O=a(7).wrapMethod,P="source protocol user pass host port path".split(" "),Q=/^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/,R="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},S=R.document,T=R.navigator;f.prototype={VERSION:"3.25.2",debug:!1,TraceKit:g,config:function(a,b){var c=this;if(c.h)return this.A("error","Error: Raven has already been configured"),c;if(!a)return c;var d=c.l;b&&w(b,function(a,b){"tags"===a||"extra"===a||"user"===a?c.k[a]=b:d[a]=b}),c.setDSN(a),d.ignoreErrors.push(/^Script error\.?$/),d.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/),d.ignoreErrors=B(d.ignoreErrors),d.ignoreUrls=!!d.ignoreUrls.length&&B(d.ignoreUrls),d.whitelistUrls=!!d.whitelistUrls.length&&B(d.whitelistUrls),d.includePaths=B(d.includePaths),d.maxBreadcrumbs=Math.max(0,Math.min(d.maxBreadcrumbs||100,100));var e={xhr:!0,console:!0,dom:!0,location:!0,sentry:!0},f=d.autoBreadcrumbs;"[object Object]"==={}.toString.call(f)?f=x(e,f):f!==!1&&(f=e),d.autoBreadcrumbs=f;var h={tryCatch:!0},i=d.instrument;return"[object Object]"==={}.toString.call(i)?i=x(h,i):i!==!1&&(i=h),d.instrument=i,g.collectWindowErrors=!!d.collectWindowErrors,c},install:function(){var a=this;return a.isSetup()&&!a.o&&(g.report.subscribe(function(){a.B.apply(a,arguments)}),a.l.captureUnhandledRejections&&a.C(),a.D(),a.l.instrument&&a.l.instrument.tryCatch&&a.E(),a.l.autoBreadcrumbs&&a.F(),a.G(),a.o=!0),Error.stackTraceLimit=a.l.stackTraceLimit,this},setDSN:function(a){var b=this,c=b.H(a),d=c.path.lastIndexOf("/"),e=c.path.substr(1,d);b.I=a,b.i=c.user,b.J=c.pass&&c.pass.substr(1),b.j=c.path.substr(d+1),b.h=b.K(c),b.L=b.h+"/"+e+"api/"+b.j+"/store/",this.z()},context:function(a,b,c){return s(a)&&(c=b||[],b=a,a=void 0),this.wrap(a,b).apply(this,c)},wrap:function(a,b,c){function d(){var d=[],f=arguments.length,g=!a||a&&a.deep!==!1;for(c&&s(c)&&c.apply(this,arguments);f--;)d[f]=g?e.wrap(a,arguments[f]):arguments[f];try{return b.apply(this,d)}catch(h){throw e.M(),e.captureException(h,a),h}}var e=this;if(r(b)&&!s(a))return a;if(s(a)&&(b=a,a=void 0),!s(b))return b;try{if(b.N)return b;if(b.O)return b.O}catch(f){return b}for(var g in b)A(b,g)&&(d[g]=b[g]);return d.prototype=b.prototype,b.O=d,d.N=!0,d.P=b,d},uninstall:function(){return g.report.uninstall(),this.Q(),this.R(),this.S(),this.T(),Error.stackTraceLimit=this.p,this.o=!1,this},U:function(a){this.A("debug","Raven caught unhandled promise rejection:",a),this.captureException(a.reason,{extra:{unhandledPromiseRejection:!0}})},C:function(){return this.U=this.U.bind(this),R.addEventListener&&R.addEventListener("unhandledrejection",this.U),this},Q:function(){return R.removeEventListener&&R.removeEventListener("unhandledrejection",this.U),this},captureException:function(a,b){if(b=x({trimHeadFrames:0},b?b:{}),l(a)&&a.error)a=a.error;else{if(m(a)||n(a)){var c=a.name||(m(a)?"DOMError":"DOMException"),d=a.message?c+": "+a.message:c;return this.captureMessage(d,x(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}))}if(o(a))a=a;else{if(!q(a))return this.captureMessage(a,x(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}));b=this.V(b,a),a=new Error(b.message)}}this.e=a;try{var e=g.computeStackTrace(a);this.W(e,b)}catch(f){if(a!==f)throw f}return this},V:function(a,b){var c=Object.keys(b).sort(),d=x(a,{message:"Non-Error exception captured with keys: "+L(c),fingerprint:[i(c)],extra:a.extra||{}});return d.extra.X=M(b),d},captureMessage:function(a,b){if(!this.l.ignoreErrors.test||!this.l.ignoreErrors.test(a)){b=b||{},a+="";var c,d=x({message:a},b);try{throw new Error(a)}catch(e){c=e}c.name=null;var f=g.computeStackTrace(c),h=u(f.stack)&&f.stack[1];h&&"Raven.captureException"===h.func&&(h=f.stack[2]);var i=h&&h.url||"";if((!this.l.ignoreUrls.test||!this.l.ignoreUrls.test(i))&&(!this.l.whitelistUrls.test||this.l.whitelistUrls.test(i))){if(this.l.stacktrace||b&&b.stacktrace){d.fingerprint=null==d.fingerprint?a:d.fingerprint,b=x({trimHeadFrames:0},b),b.trimHeadFrames+=1;var j=this.Y(f,b);d.stacktrace={frames:j.reverse()}}return d.fingerprint&&(d.fingerprint=u(d.fingerprint)?d.fingerprint:[d.fingerprint]),this.Z(d),this}}},captureBreadcrumb:function(a){var b=x({timestamp:d()/1e3},a);if(s(this.l.breadcrumbCallback)){var c=this.l.breadcrumbCallback(b);if(p(c)&&!v(c))b=c;else if(c===!1)return this}return this.v.push(b),this.v.length>this.l.maxBreadcrumbs&&this.v.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.s.push([a,b]),this.o&&this.G(),this},setUserContext:function(a){return this.k.user=a,this},setExtraContext:function(a){return this.$("extra",a),this},setTagsContext:function(a){return this.$("tags",a),this},clearContext:function(){return this.k={},this},getContext:function(){return JSON.parse(h(this.k))},setEnvironment:function(a){return this.l.environment=a,this},setRelease:function(a){return this.l.release=a,this},setDataCallback:function(a){var b=this.l.dataCallback;return this.l.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.l.breadcrumbCallback;return this.l.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.l.shouldSendCallback;return this.l.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.l.transport=a,this},lastException:function(){return this.e},lastEventId:function(){return this.g},isSetup:function(){return!!this.b&&(!!this.h||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.A("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=R.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(S){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.I;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.k.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.K(this.H(c)),h=S.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(S.head||S.body).appendChild(h)}},M:function(){var a=this;this.n+=1,setTimeout(function(){a.n-=1})},_:function(a,b){var c,d;if(this.c){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),S.createEvent?(c=S.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=S.createEventObject(),c.eventType=a);for(d in b)A(b,d)&&(c[d]=b[d]);if(S.createEvent)S.dispatchEvent(c);else try{S.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},aa:function(a){var b=this;return function(c){if(b.ba=null,b.w!==c){b.w=c;var d;try{d=E(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ca:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.ba;g||a.aa("input")(c),clearTimeout(g),a.ba=setTimeout(function(){a.ba=null},b)}}},da:function(a,b){var c=H(this.x.href),d=H(b),e=H(a);this.y=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},D:function(){var a=this;a.ea=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.N?a.ea.apply(this.P,arguments):a.ea.apply(this,arguments)}},R:function(){this.ea&&(Function.prototype.toString=this.ea)},E:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.da(b.y,c+""),a.apply(this,arguments)}};I(R.history,"pushState",j,d),I(R.history,"replaceState",j,d)}if(c.console&&"console"in R&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};w(["debug","info","warn","error","log"],function(a,b){O(console,b,k)})}},S:function(){for(var a;this.u.length;){a=this.u.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},T:function(){for(var a in this.r)this.q[a]=this.r[a]},G:function(){var a=this;w(this.s,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},H:function(a){var b=Q.exec(a),c={},d=7;try{for(;d--;)c[P[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.l.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},K:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},B:function(){this.n||this.W.apply(this,arguments)},W:function(a,b){var c=this.Y(a,b);this._("handle",{stackInfo:a,options:b}),this.ga(a.name,a.message,a.url,a.lineno,c,b)},Y:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(w(a.stack,function(b,e){var f=c.ha(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.v,0)}),this.k.user&&(a.user=this.k.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),a=this.qa(a),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||v(a[b]))&&delete a[b]}),s(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!v(a)&&(!s(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.na()?void this.A("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function F(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&l(b))for(c=b.split(/\s+/),f=0;fc?Q(a,b-1):d}function R(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?X:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function S(a,b){function c(a){return m(a)?a.map(function(a){return c(a)}):k(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!m(b)||m(b)&&0===b.length)return a;var d,e=A(b),f="********";try{d=JSON.parse(T(a))}catch(g){return a}return c(d)}var T=a(12),U="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},V=3,W=51200,X=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isDOMError:g,isDOMException:h,isUndefined:i,isFunction:j,isPlainObject:k,isString:l,isArray:m,isEmptyObject:n,supportsErrorEvent:o,supportsDOMError:p,supportsDOMException:q,supportsFetch:r,supportsReferrerPolicy:s,supportsPromiseRejectionEvent:t,wrappedCallback:u,each:v,objectMerge:w,truncate:y,objectFrozen:x,hasKey:z,joinRegExp:A,urlencode:B,uuid4:D,htmlTreeAsString:E,htmlElementAsString:F,isSameException:I,isSameStacktrace:J,parseUrl:C,fill:K,safeJoin:L,serializeException:Q,serializeKeysForMessage:R,sanitize:S}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{12:12}],11:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}function e(){return"undefined"==typeof document||null==document.location?"":(document.location.origin||(document.location.origin=document.location.protocol+"//"+document.location.hostname+(document.location.port?":"+document.location.port:"")),document.location.origin)}var f=a(10),g={collectWindowErrors:!0,debug:!1},h="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},i=[].slice,j="?",k=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;g.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function e(a,b){var c=null;if(!b||g.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(i.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,h,i){var l=null,m=f.isErrorEvent(i)?i.error:i,n=f.isErrorEvent(a)?a.message:a;if(v)g.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&f.isError(m))l=g.computeStackTrace(m),e(l,!0);else{var p,r={url:b,line:c,column:h},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(k);p&&(s=p[1],n=p[2])}r.func=j,l={name:s,message:n,url:d(),stack:[r]},e(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=h.onerror,h.onerror=l,r=!0)}function n(){r&&(h.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,e.apply(null,[a,!1].concat(b))}function p(a,b){var c=i.call(arguments,1);if(v){if(u===a)return;o()}var d=g.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),g.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,f,g=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,h=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,i=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,k=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,l=/\((\S*)(?::(\d+))(?::(\d+))\)/,m=a.stack.split("\n"),n=[],o=(/^(.*) is undefined$/.exec(a.message), 0),p=m.length;o eval")>-1;r&&(b=k.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==o||c[5]||"undefined"==typeof a.columnNumber||(n[0].column=a.columnNumber+1),f={url:c[3],func:c[1]||j,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}if(!f.func&&f.line&&(f.func=j),f.url&&"blob:"===f.url.substr(0,5)){var s=new XMLHttpRequest;if(s.open("GET",f.url,!1),s.send(null),200===s.status){var t=s.responseText||"";t=t.slice(-300);var u=t.match(/\/\/# sourceMappingURL=(.*)$/);if(u){var v=u[1];"~"===v.charAt(0)&&(v=e()+v.slice(1)),f.url=v.slice(0,-4)}}}n.push(f)}return n.length?{name:a.name,message:a.message,url:d(),stack:n}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=j),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,e){for(var h,i,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==f&&o!==g.report){if(i={url:null,func:j,line:null,column:null},o.name?i.func=o.name:(h=k.exec(o.toString()))&&(i.func=h[1]),"undefined"==typeof i.func)try{i.func=h.input.substring(0,h.input.indexOf("{"))}catch(p){}m[""+o]?n=!0:m[""+o]=!0,l.push(i)}e&&l.splice(0,e);var q={name:a.name,message:a.message,url:d(),stack:l};return b(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),q}function f(b,e){var f=null;e=null==e?0:+e;try{if(f=a(b))return f}catch(h){if(g.debug)throw h}try{if(f=c(b,e+1))return f}catch(h){if(g.debug)throw h}return{name:b.name,message:b.message,url:d()}}return f.augmentStackTraceWithInitialElement=b,f.computeStackTraceFromStackProp=a,f}(),b.exports=g}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{10:10}],12:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}],13:[function(a,b,c){function d(a,b){var c=(65535&a)+(65535&b),d=(a>>16)+(b>>16)+(c>>16);return d<<16|65535&c}function e(a,b){return a<>>32-b}function f(a,b,c,f,g,h){return d(e(d(d(b,a),d(f,h)),g),c)}function g(a,b,c,d,e,g,h){return f(b&c|~b&d,a,b,e,g,h)}function h(a,b,c,d,e,g,h){return f(b&d|c&~d,a,b,e,g,h)}function i(a,b,c,d,e,g,h){return f(b^c^d,a,b,e,g,h)}function j(a,b,c,d,e,g,h){return f(c^(b|~d),a,b,e,g,h)}function k(a,b){a[b>>5]|=128<>>9<<4)+14]=b;var c,e,f,k,l,m=1732584193,n=-271733879,o=-1732584194,p=271733878;for(c=0;c>5]>>>b%32&255);return c}function m(a){var b,c=[];for(c[(a.length>>2)-1]=void 0,b=0;b>5]|=(255&a.charCodeAt(b/8))<16&&(e=k(e,8*a.length)),c=0;c<16;c+=1)f[c]=909522486^e[c],g[c]=1549556828^e[c];return d=k(f.concat(m(b)),512+8*b.length),l(k(g.concat(d),640))}function p(a){var b,c,d="0123456789abcdef",e="";for(c=0;c>>4&15)+d.charAt(15&b);return e}function q(a){return unescape(encodeURIComponent(a))}function r(a){return n(q(a))}function s(a){return p(r(a))}function t(a,b){return o(q(a),q(b))}function u(a,b){return p(t(a,b))}function v(a,b,c){return b?c?t(b,a):u(b,a):c?r(a):s(a)}b.exports=v},{}]},{},[9,1,2,3,4,5])(9)}); //# sourceMappingURL=raven.min.js.map \ No newline at end of file diff --git a/dist/angular,console,ember,require,vue/raven.min.js.map b/dist/angular,console,ember,require,vue/raven.min.js.map index 12e0c1bae465..482791ea468e 100644 --- a/dist/angular,console,ember,require,vue/raven.min.js.map +++ b/dist/angular,console,ember,require,vue/raven.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","angularPlugin","angular","RavenProvider","$get","$window","ExceptionHandlerProvider","$provide","decorator","exceptionHandler","R","$delegate","ex","cause","captureException","extra","moduleName","provider","config","setDataCallback","wrappedCallback","data","_normalizeData","angularPattern","exception","values","matches","exec","value","type","message","angularDocs","substr","addPlugin","10","9","2","consolePlugin","console","pluginOptions","logLevels","levels","push","callback","msg","captureMessage","level","pop","wrapConsoleMethod","wrapMethod","7","3","emberPlugin","Ember","_oldOnError","onerror","error","RSVP","on","reason","context","4","requirePlugin","wrap","deep","5","formatComponentName","vm","$root","name","_isVue","$options","_componentTag","__file","vuePlugin","Vue","errorHandler","info","metaData","Object","prototype","toString","componentName","propsData","lifecycleHook","6","RavenConfigError","constructor","utils","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","safeJoin","logger","Function","apply","8","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","sanitizeKeys","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isErrorEvent","isDOMError","isDOMException","isError","isObject","isPlainObject","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","sanitize","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","dsn","options","_logDebug","globalOptions","key","setDSN","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","func","undefined","_before","wrapped","_ignoreNextOnError","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","U","event","unhandledPromiseRejection","C","_promiseRejectionHandler","bind","addEventListener","Q","removeEventListener","trimHeadFrames","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","V","currentOptions","exKeys","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","M","setTimeout","_","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","aa","evtName","_keypressTimeout","target","category","ca","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","da","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","D","_originalFunctionToString","E","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","F","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","S","builtin","T","G","installer","concat","H","str","m","allowSecretKey","K","port","B","W","stackInfo","_triggerEvent","_processException","lineno","Y","frame","_normalizeFrame","in_app","ha","stackInfoUrl","normalized","filename","line","colno","column","function","ga","prefixedMessage","culprit","ia","request","Referer","breadcrumbs","_trimBreadcrumbs","ja","urlProp","urlProps","ka","httpData","userAgent","User-Agent","referrer","z","_backoffDuration","_backoffStart","na","oa","current","last","pa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Z","baseData","project","platform","_getHttpData","serverName","server_name","_sanitizeData","forEach","random","_sendProcessedPayload","qa","sa","ra","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","ta","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","open","setRequestHeader","send","ua","hash","evaluated","A","$","setUser","setReleaseContext","11","12","13","RavenConstructor","_Raven","noConflict","Client","what","supportsErrorEvent","ErrorEvent","supportsDOMError","DOMError","supportsDOMException","DOMException","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","sanitizeMask","safeInput","o_O","getLocationHref","getLocationOrigin","origin","hostname","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","responseText","sourceMaps","sourceMapAddress","charAt","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","y","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","string","raw"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file +{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","angularPlugin","angular","RavenProvider","$get","$window","ExceptionHandlerProvider","$provide","decorator","exceptionHandler","R","$delegate","ex","cause","captureException","extra","moduleName","provider","config","setDataCallback","wrappedCallback","data","_normalizeData","angularPattern","exception","values","matches","exec","value","type","message","angularDocs","substr","addPlugin","10","9","2","consolePlugin","console","pluginOptions","logLevels","levels","push","callback","msg","captureMessage","level","pop","wrapConsoleMethod","wrapMethod","7","3","emberPlugin","Ember","_oldOnError","onerror","error","RSVP","on","reason","context","4","requirePlugin","wrap","deep","5","formatComponentName","vm","$root","name","_isVue","$options","_componentTag","__file","vuePlugin","Vue","errorHandler","info","metaData","Object","prototype","toString","componentName","propsData","lifecycleHook","6","RavenConfigError","constructor","utils","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","safeJoin","logger","Function","apply","8","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","sanitizeKeys","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isErrorEvent","isDOMError","isDOMException","isError","isObject","isPlainObject","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","sanitize","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","dsn","options","_logDebug","globalOptions","key","setDSN","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","func","undefined","_before","wrapped","_ignoreNextOnError","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","U","event","unhandledPromiseRejection","C","_promiseRejectionHandler","bind","addEventListener","Q","removeEventListener","trimHeadFrames","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","V","currentOptions","exKeys","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","M","setTimeout","_","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","aa","evtName","_keypressTimeout","target","category","ca","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","da","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","D","_originalFunctionToString","E","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","F","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","S","builtin","T","G","installer","concat","H","str","m","allowSecretKey","K","port","B","W","stackInfo","_triggerEvent","_processException","lineno","Y","frame","_normalizeFrame","in_app","ha","stackInfoUrl","normalized","filename","line","colno","column","function","ga","prefixedMessage","transaction","ia","request","Referer","breadcrumbs","_trimBreadcrumbs","ja","urlProp","urlProps","ka","httpData","userAgent","User-Agent","referrer","z","_backoffDuration","_backoffStart","na","oa","current","last","pa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Z","baseData","project","platform","_getHttpData","serverName","server_name","_sanitizeData","forEach","random","_sendProcessedPayload","qa","sa","ra","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","ta","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","open","setRequestHeader","send","ua","hash","evaluated","A","$","setUser","setReleaseContext","11","12","13","RavenConstructor","_Raven","noConflict","Client","what","supportsErrorEvent","ErrorEvent","supportsDOMError","DOMError","supportsDOMException","DOMException","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","sanitizeMask","safeInput","o_O","getLocationHref","getLocationOrigin","origin","hostname","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","responseText","sourceMaps","sourceMapAddress","charAt","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","y","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","string","raw"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file diff --git a/dist/angular,console,ember,require/raven.js b/dist/angular,console,ember,require/raven.js index a55d0c68f4e2..fc4268ab274f 100644 --- a/dist/angular,console,ember,require/raven.js +++ b/dist/angular,console,ember,require/raven.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.25.1 (b6f3c7a) | github.com/getsentry/raven-js */ +/*! Raven.js 3.25.2 (30b6d4e) | github.com/getsentry/raven-js */ /* * Includes TraceKit @@ -279,7 +279,11 @@ function now() { var _window = typeof window !== 'undefined' ? window - : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; + : typeof global !== 'undefined' + ? global + : typeof self !== 'undefined' + ? self + : {}; var _document = _window.document; var _navigator = _window.navigator; @@ -369,7 +373,7 @@ Raven.prototype = { // webpack (using a build step causes webpack #1617). Grunt verifies that // this value matches package.json during build. // See: https://github.com/getsentry/raven-js/issues/465 - VERSION: '3.25.1', + VERSION: '3.25.2', debug: false, @@ -1925,7 +1929,7 @@ Raven.prototype = { } ] }, - culprit: fileurl + transaction: fileurl }, options ); @@ -2040,7 +2044,7 @@ Raven.prototype = { if ( !last || current.message !== last.message || // defined for captureMessage - current.culprit !== last.culprit // defined for captureException/onerror + current.transaction !== last.transaction // defined for captureException/onerror ) return false; diff --git a/dist/angular,console,ember,require/raven.min.js b/dist/angular,console,ember,require/raven.min.js index 4b3ca7cb11e4..7673bdea749b 100644 --- a/dist/angular,console,ember,require/raven.min.js +++ b/dist/angular,console,ember,require/raven.min.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.25.1 (b6f3c7a) | github.com/getsentry/raven-js */ -!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.Raven=a()}}(function(){var a;return function b(a,c,d){function e(g,h){if(!c[g]){if(!a[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};a[g][0].call(k.exports,function(b){var c=a[g][1][b];return e(c?c:b)},k,k.exports,b,a,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;gthis.l.maxBreadcrumbs&&this.v.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.s.push([a,b]),this.o&&this.G(),this},setUserContext:function(a){return this.k.user=a,this},setExtraContext:function(a){return this.$("extra",a),this},setTagsContext:function(a){return this.$("tags",a),this},clearContext:function(){return this.k={},this},getContext:function(){return JSON.parse(h(this.k))},setEnvironment:function(a){return this.l.environment=a,this},setRelease:function(a){return this.l.release=a,this},setDataCallback:function(a){var b=this.l.dataCallback;return this.l.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.l.breadcrumbCallback;return this.l.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.l.shouldSendCallback;return this.l.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.l.transport=a,this},lastException:function(){return this.e},lastEventId:function(){return this.g},isSetup:function(){return!!this.b&&(!!this.h||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.A("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=R.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(S){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.I;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.k.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.K(this.H(c)),h=S.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(S.head||S.body).appendChild(h)}},M:function(){var a=this;this.n+=1,setTimeout(function(){a.n-=1})},_:function(a,b){var c,d;if(this.c){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),S.createEvent?(c=S.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=S.createEventObject(),c.eventType=a);for(d in b)A(b,d)&&(c[d]=b[d]);if(S.createEvent)S.dispatchEvent(c);else try{S.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},aa:function(a){var b=this;return function(c){if(b.ba=null,b.w!==c){b.w=c;var d;try{d=E(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ca:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.ba;g||a.aa("input")(c),clearTimeout(g),a.ba=setTimeout(function(){a.ba=null},b)}}},da:function(a,b){var c=H(this.x.href),d=H(b),e=H(a);this.y=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},D:function(){var a=this;a.ea=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.N?a.ea.apply(this.P,arguments):a.ea.apply(this,arguments)}},R:function(){this.ea&&(Function.prototype.toString=this.ea)},E:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.da(b.y,c+""),a.apply(this,arguments)}};I(R.history,"pushState",j,d),I(R.history,"replaceState",j,d)}if(c.console&&"console"in R&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};w(["debug","info","warn","error","log"],function(a,b){O(console,b,k)})}},S:function(){for(var a;this.u.length;){a=this.u.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},T:function(){for(var a in this.r)this.q[a]=this.r[a]},G:function(){var a=this;w(this.s,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},H:function(a){var b=Q.exec(a),c={},d=7;try{for(;d--;)c[P[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.l.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},K:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},B:function(){this.n||this.W.apply(this,arguments)},W:function(a,b){var c=this.Y(a,b);this._("handle",{stackInfo:a,options:b}),this.ga(a.name,a.message,a.url,a.lineno,c,b)},Y:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(w(a.stack,function(b,e){var f=c.ha(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.v,0)}),this.k.user&&(a.user=this.k.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),a=this.qa(a),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||v(a[b]))&&delete a[b]}),s(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!v(a)&&(!s(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.na()?void this.A("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function F(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&l(b))for(c=b.split(/\s+/),f=0;fc?Q(a,b-1):d}function R(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?X:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function S(a,b){function c(a){return m(a)?a.map(function(a){return c(a)}):k(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!m(b)||m(b)&&0===b.length)return a;var d,e=A(b),f="********";try{d=JSON.parse(T(a))}catch(g){return a}return c(d)}var T=a(11),U="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},V=3,W=51200,X=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isDOMError:g,isDOMException:h,isUndefined:i,isFunction:j,isPlainObject:k,isString:l,isArray:m,isEmptyObject:n,supportsErrorEvent:o,supportsDOMError:p,supportsDOMException:q,supportsFetch:r,supportsReferrerPolicy:s,supportsPromiseRejectionEvent:t,wrappedCallback:u,each:v,objectMerge:w,truncate:y,objectFrozen:x,hasKey:z,joinRegExp:A,urlencode:B,uuid4:D,htmlTreeAsString:E,htmlElementAsString:F,isSameException:I,isSameStacktrace:J,parseUrl:C,fill:K,safeJoin:L,serializeException:Q,serializeKeysForMessage:R,sanitize:S}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{11:11}],10:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}function e(){return"undefined"==typeof document||null==document.location?"":(document.location.origin||(document.location.origin=document.location.protocol+"//"+document.location.hostname+(document.location.port?":"+document.location.port:"")),document.location.origin)}var f=a(9),g={collectWindowErrors:!0,debug:!1},h="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},i=[].slice,j="?",k=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;g.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function e(a,b){var c=null;if(!b||g.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(i.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,h,i){var l=null,m=f.isErrorEvent(i)?i.error:i,n=f.isErrorEvent(a)?a.message:a;if(v)g.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&f.isError(m))l=g.computeStackTrace(m),e(l,!0);else{var p,r={url:b,line:c,column:h},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(k);p&&(s=p[1],n=p[2])}r.func=j,l={name:s,message:n,url:d(),stack:[r]},e(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=h.onerror,h.onerror=l,r=!0)}function n(){r&&(h.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,e.apply(null,[a,!1].concat(b))}function p(a,b){var c=i.call(arguments,1);if(v){if(u===a)return;o()}var d=g.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),g.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,f,g=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,h=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,i=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,k=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,l=/\((\S*)(?::(\d+))(?::(\d+))\)/,m=a.stack.split("\n"),n=[],o=(/^(.*) is undefined$/.exec(a.message),0),p=m.length;o eval")>-1;r&&(b=k.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==o||c[5]||"undefined"==typeof a.columnNumber||(n[0].column=a.columnNumber+1),f={url:c[3],func:c[1]||j,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null, -column:c[5]?+c[5]:null}}if(!f.func&&f.line&&(f.func=j),f.url&&"blob:"===f.url.substr(0,5)){var s=new XMLHttpRequest;if(s.open("GET",f.url,!1),s.send(null),200===s.status){var t=s.responseText||"";t=t.slice(-300);var u=t.match(/\/\/# sourceMappingURL=(.*)$/);if(u){var v=u[1];"~"===v.charAt(0)&&(v=e()+v.slice(1)),f.url=v.slice(0,-4)}}}n.push(f)}return n.length?{name:a.name,message:a.message,url:d(),stack:n}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=j),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,e){for(var h,i,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==f&&o!==g.report){if(i={url:null,func:j,line:null,column:null},o.name?i.func=o.name:(h=k.exec(o.toString()))&&(i.func=h[1]),"undefined"==typeof i.func)try{i.func=h.input.substring(0,h.input.indexOf("{"))}catch(p){}m[""+o]?n=!0:m[""+o]=!0,l.push(i)}e&&l.splice(0,e);var q={name:a.name,message:a.message,url:d(),stack:l};return b(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),q}function f(b,e){var f=null;e=null==e?0:+e;try{if(f=a(b))return f}catch(h){if(g.debug)throw h}try{if(f=c(b,e+1))return f}catch(h){if(g.debug)throw h}return{name:b.name,message:b.message,url:d()}}return f.augmentStackTraceWithInitialElement=b,f.computeStackTraceFromStackProp=a,f}(),b.exports=g}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{9:9}],11:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}],12:[function(a,b,c){function d(a,b){var c=(65535&a)+(65535&b),d=(a>>16)+(b>>16)+(c>>16);return d<<16|65535&c}function e(a,b){return a<>>32-b}function f(a,b,c,f,g,h){return d(e(d(d(b,a),d(f,h)),g),c)}function g(a,b,c,d,e,g,h){return f(b&c|~b&d,a,b,e,g,h)}function h(a,b,c,d,e,g,h){return f(b&d|c&~d,a,b,e,g,h)}function i(a,b,c,d,e,g,h){return f(b^c^d,a,b,e,g,h)}function j(a,b,c,d,e,g,h){return f(c^(b|~d),a,b,e,g,h)}function k(a,b){a[b>>5]|=128<>>9<<4)+14]=b;var c,e,f,k,l,m=1732584193,n=-271733879,o=-1732584194,p=271733878;for(c=0;c>5]>>>b%32&255);return c}function m(a){var b,c=[];for(c[(a.length>>2)-1]=void 0,b=0;b>5]|=(255&a.charCodeAt(b/8))<16&&(e=k(e,8*a.length)),c=0;c<16;c+=1)f[c]=909522486^e[c],g[c]=1549556828^e[c];return d=k(f.concat(m(b)),512+8*b.length),l(k(g.concat(d),640))}function p(a){var b,c,d="0123456789abcdef",e="";for(c=0;c>>4&15)+d.charAt(15&b);return e}function q(a){return unescape(encodeURIComponent(a))}function r(a){return n(q(a))}function s(a){return p(r(a))}function t(a,b){return o(q(a),q(b))}function u(a,b){return p(t(a,b))}function v(a,b,c){return b?c?t(b,a):u(b,a):c?r(a):s(a)}b.exports=v},{}]},{},[8,1,2,3,4])(8)}); +/*! Raven.js 3.25.2 (30b6d4e) | github.com/getsentry/raven-js */ +!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.Raven=a()}}(function(){var a;return function b(a,c,d){function e(g,h){if(!c[g]){if(!a[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};a[g][0].call(k.exports,function(b){var c=a[g][1][b];return e(c?c:b)},k,k.exports,b,a,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;gthis.l.maxBreadcrumbs&&this.v.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.s.push([a,b]),this.o&&this.G(),this},setUserContext:function(a){return this.k.user=a,this},setExtraContext:function(a){return this.$("extra",a),this},setTagsContext:function(a){return this.$("tags",a),this},clearContext:function(){return this.k={},this},getContext:function(){return JSON.parse(h(this.k))},setEnvironment:function(a){return this.l.environment=a,this},setRelease:function(a){return this.l.release=a,this},setDataCallback:function(a){var b=this.l.dataCallback;return this.l.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.l.breadcrumbCallback;return this.l.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.l.shouldSendCallback;return this.l.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.l.transport=a,this},lastException:function(){return this.e},lastEventId:function(){return this.g},isSetup:function(){return!!this.b&&(!!this.h||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.A("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=R.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(S){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.I;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.k.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.K(this.H(c)),h=S.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(S.head||S.body).appendChild(h)}},M:function(){var a=this;this.n+=1,setTimeout(function(){a.n-=1})},_:function(a,b){var c,d;if(this.c){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),S.createEvent?(c=S.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=S.createEventObject(),c.eventType=a);for(d in b)A(b,d)&&(c[d]=b[d]);if(S.createEvent)S.dispatchEvent(c);else try{S.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},aa:function(a){var b=this;return function(c){if(b.ba=null,b.w!==c){b.w=c;var d;try{d=E(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ca:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.ba;g||a.aa("input")(c),clearTimeout(g),a.ba=setTimeout(function(){a.ba=null},b)}}},da:function(a,b){var c=H(this.x.href),d=H(b),e=H(a);this.y=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},D:function(){var a=this;a.ea=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.N?a.ea.apply(this.P,arguments):a.ea.apply(this,arguments)}},R:function(){this.ea&&(Function.prototype.toString=this.ea)},E:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.da(b.y,c+""),a.apply(this,arguments)}};I(R.history,"pushState",j,d),I(R.history,"replaceState",j,d)}if(c.console&&"console"in R&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};w(["debug","info","warn","error","log"],function(a,b){O(console,b,k)})}},S:function(){for(var a;this.u.length;){a=this.u.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},T:function(){for(var a in this.r)this.q[a]=this.r[a]},G:function(){var a=this;w(this.s,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},H:function(a){var b=Q.exec(a),c={},d=7;try{for(;d--;)c[P[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.l.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},K:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},B:function(){this.n||this.W.apply(this,arguments)},W:function(a,b){var c=this.Y(a,b);this._("handle",{stackInfo:a,options:b}),this.ga(a.name,a.message,a.url,a.lineno,c,b)},Y:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(w(a.stack,function(b,e){var f=c.ha(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.v,0)}),this.k.user&&(a.user=this.k.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),a=this.qa(a),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||v(a[b]))&&delete a[b]}),s(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!v(a)&&(!s(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.na()?void this.A("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function F(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&l(b))for(c=b.split(/\s+/),f=0;fc?Q(a,b-1):d}function R(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?X:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function S(a,b){function c(a){return m(a)?a.map(function(a){return c(a)}):k(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!m(b)||m(b)&&0===b.length)return a;var d,e=A(b),f="********";try{d=JSON.parse(T(a))}catch(g){return a}return c(d)}var T=a(11),U="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},V=3,W=51200,X=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isDOMError:g,isDOMException:h,isUndefined:i,isFunction:j,isPlainObject:k,isString:l,isArray:m,isEmptyObject:n,supportsErrorEvent:o,supportsDOMError:p,supportsDOMException:q,supportsFetch:r,supportsReferrerPolicy:s,supportsPromiseRejectionEvent:t,wrappedCallback:u,each:v,objectMerge:w,truncate:y,objectFrozen:x,hasKey:z,joinRegExp:A,urlencode:B,uuid4:D,htmlTreeAsString:E,htmlElementAsString:F,isSameException:I,isSameStacktrace:J,parseUrl:C,fill:K,safeJoin:L,serializeException:Q,serializeKeysForMessage:R,sanitize:S}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{11:11}],10:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}function e(){return"undefined"==typeof document||null==document.location?"":(document.location.origin||(document.location.origin=document.location.protocol+"//"+document.location.hostname+(document.location.port?":"+document.location.port:"")),document.location.origin)}var f=a(9),g={collectWindowErrors:!0,debug:!1},h="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},i=[].slice,j="?",k=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;g.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function e(a,b){var c=null;if(!b||g.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(i.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,h,i){var l=null,m=f.isErrorEvent(i)?i.error:i,n=f.isErrorEvent(a)?a.message:a;if(v)g.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&f.isError(m))l=g.computeStackTrace(m),e(l,!0);else{var p,r={url:b,line:c,column:h},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(k);p&&(s=p[1],n=p[2])}r.func=j,l={name:s,message:n,url:d(),stack:[r]},e(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=h.onerror,h.onerror=l,r=!0)}function n(){r&&(h.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,e.apply(null,[a,!1].concat(b))}function p(a,b){var c=i.call(arguments,1);if(v){if(u===a)return;o()}var d=g.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),g.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,f,g=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,h=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,i=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,k=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,l=/\((\S*)(?::(\d+))(?::(\d+))\)/,m=a.stack.split("\n"),n=[],o=(/^(.*) is undefined$/.exec(a.message),0),p=m.length;o eval")>-1;r&&(b=k.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==o||c[5]||"undefined"==typeof a.columnNumber||(n[0].column=a.columnNumber+1),f={url:c[3],func:c[1]||j,args:c[2]?c[2].split(","):[], +line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}if(!f.func&&f.line&&(f.func=j),f.url&&"blob:"===f.url.substr(0,5)){var s=new XMLHttpRequest;if(s.open("GET",f.url,!1),s.send(null),200===s.status){var t=s.responseText||"";t=t.slice(-300);var u=t.match(/\/\/# sourceMappingURL=(.*)$/);if(u){var v=u[1];"~"===v.charAt(0)&&(v=e()+v.slice(1)),f.url=v.slice(0,-4)}}}n.push(f)}return n.length?{name:a.name,message:a.message,url:d(),stack:n}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=j),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,e){for(var h,i,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==f&&o!==g.report){if(i={url:null,func:j,line:null,column:null},o.name?i.func=o.name:(h=k.exec(o.toString()))&&(i.func=h[1]),"undefined"==typeof i.func)try{i.func=h.input.substring(0,h.input.indexOf("{"))}catch(p){}m[""+o]?n=!0:m[""+o]=!0,l.push(i)}e&&l.splice(0,e);var q={name:a.name,message:a.message,url:d(),stack:l};return b(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),q}function f(b,e){var f=null;e=null==e?0:+e;try{if(f=a(b))return f}catch(h){if(g.debug)throw h}try{if(f=c(b,e+1))return f}catch(h){if(g.debug)throw h}return{name:b.name,message:b.message,url:d()}}return f.augmentStackTraceWithInitialElement=b,f.computeStackTraceFromStackProp=a,f}(),b.exports=g}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{9:9}],11:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}],12:[function(a,b,c){function d(a,b){var c=(65535&a)+(65535&b),d=(a>>16)+(b>>16)+(c>>16);return d<<16|65535&c}function e(a,b){return a<>>32-b}function f(a,b,c,f,g,h){return d(e(d(d(b,a),d(f,h)),g),c)}function g(a,b,c,d,e,g,h){return f(b&c|~b&d,a,b,e,g,h)}function h(a,b,c,d,e,g,h){return f(b&d|c&~d,a,b,e,g,h)}function i(a,b,c,d,e,g,h){return f(b^c^d,a,b,e,g,h)}function j(a,b,c,d,e,g,h){return f(c^(b|~d),a,b,e,g,h)}function k(a,b){a[b>>5]|=128<>>9<<4)+14]=b;var c,e,f,k,l,m=1732584193,n=-271733879,o=-1732584194,p=271733878;for(c=0;c>5]>>>b%32&255);return c}function m(a){var b,c=[];for(c[(a.length>>2)-1]=void 0,b=0;b>5]|=(255&a.charCodeAt(b/8))<16&&(e=k(e,8*a.length)),c=0;c<16;c+=1)f[c]=909522486^e[c],g[c]=1549556828^e[c];return d=k(f.concat(m(b)),512+8*b.length),l(k(g.concat(d),640))}function p(a){var b,c,d="0123456789abcdef",e="";for(c=0;c>>4&15)+d.charAt(15&b);return e}function q(a){return unescape(encodeURIComponent(a))}function r(a){return n(q(a))}function s(a){return p(r(a))}function t(a,b){return o(q(a),q(b))}function u(a,b){return p(t(a,b))}function v(a,b,c){return b?c?t(b,a):u(b,a):c?r(a):s(a)}b.exports=v},{}]},{},[8,1,2,3,4])(8)}); //# sourceMappingURL=raven.min.js.map \ No newline at end of file diff --git a/dist/angular,console,ember,require/raven.min.js.map b/dist/angular,console,ember,require/raven.min.js.map index cdb2e83a9a5a..e14b4d6d0bd4 100644 --- a/dist/angular,console,ember,require/raven.min.js.map +++ b/dist/angular,console,ember,require/raven.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","angularPlugin","angular","RavenProvider","$get","$window","ExceptionHandlerProvider","$provide","decorator","exceptionHandler","R","$delegate","ex","cause","captureException","extra","moduleName","provider","config","setDataCallback","wrappedCallback","data","_normalizeData","angularPattern","exception","values","matches","exec","value","type","message","angularDocs","substr","addPlugin","8","9","2","consolePlugin","console","pluginOptions","logLevels","levels","push","callback","msg","captureMessage","level","pop","wrapConsoleMethod","wrapMethod","6","3","emberPlugin","Ember","_oldOnError","onerror","error","RSVP","on","reason","context","4","requirePlugin","wrap","deep","5","RavenConfigError","name","prototype","constructor","utils","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","safeJoin","logger","Function","apply","7","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","sanitizeKeys","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isErrorEvent","isDOMError","isDOMException","isError","isObject","isPlainObject","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","sanitize","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","dsn","options","_logDebug","globalOptions","key","setDSN","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","toString","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","func","undefined","_before","wrapped","_ignoreNextOnError","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","U","event","unhandledPromiseRejection","C","_promiseRejectionHandler","bind","addEventListener","Q","removeEventListener","trimHeadFrames","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","V","currentOptions","exKeys","Object","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","M","setTimeout","_","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","aa","evtName","_keypressTimeout","target","category","ca","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","da","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","D","_originalFunctionToString","E","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","F","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","S","builtin","T","G","installer","concat","H","str","m","allowSecretKey","K","port","B","W","stackInfo","_triggerEvent","_processException","lineno","Y","frame","_normalizeFrame","in_app","ha","stackInfoUrl","normalized","filename","line","colno","column","function","ga","prefixedMessage","culprit","ia","request","Referer","breadcrumbs","_trimBreadcrumbs","ja","urlProp","urlProps","ka","httpData","userAgent","User-Agent","referrer","z","_backoffDuration","_backoffStart","na","oa","current","last","pa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Z","baseData","project","platform","_getHttpData","serverName","server_name","_sanitizeData","forEach","random","_sendProcessedPayload","qa","sa","ra","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","ta","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","open","setRequestHeader","send","ua","hash","evaluated","A","$","setUser","setReleaseContext","10","11","12","RavenConstructor","_Raven","noConflict","Client","what","supportsErrorEvent","ErrorEvent","supportsDOMError","DOMError","supportsDOMException","DOMException","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","sanitizeMask","safeInput","o_O","getLocationHref","getLocationOrigin","origin","hostname","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","responseText","sourceMaps","sourceMapAddress","charAt","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","y","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","string","raw"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file +{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","angularPlugin","angular","RavenProvider","$get","$window","ExceptionHandlerProvider","$provide","decorator","exceptionHandler","R","$delegate","ex","cause","captureException","extra","moduleName","provider","config","setDataCallback","wrappedCallback","data","_normalizeData","angularPattern","exception","values","matches","exec","value","type","message","angularDocs","substr","addPlugin","8","9","2","consolePlugin","console","pluginOptions","logLevels","levels","push","callback","msg","captureMessage","level","pop","wrapConsoleMethod","wrapMethod","6","3","emberPlugin","Ember","_oldOnError","onerror","error","RSVP","on","reason","context","4","requirePlugin","wrap","deep","5","RavenConfigError","name","prototype","constructor","utils","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","safeJoin","logger","Function","apply","7","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","sanitizeKeys","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isErrorEvent","isDOMError","isDOMException","isError","isObject","isPlainObject","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","sanitize","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","dsn","options","_logDebug","globalOptions","key","setDSN","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","toString","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","func","undefined","_before","wrapped","_ignoreNextOnError","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","U","event","unhandledPromiseRejection","C","_promiseRejectionHandler","bind","addEventListener","Q","removeEventListener","trimHeadFrames","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","V","currentOptions","exKeys","Object","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","M","setTimeout","_","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","aa","evtName","_keypressTimeout","target","category","ca","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","da","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","D","_originalFunctionToString","E","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","F","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","S","builtin","T","G","installer","concat","H","str","m","allowSecretKey","K","port","B","W","stackInfo","_triggerEvent","_processException","lineno","Y","frame","_normalizeFrame","in_app","ha","stackInfoUrl","normalized","filename","line","colno","column","function","ga","prefixedMessage","transaction","ia","request","Referer","breadcrumbs","_trimBreadcrumbs","ja","urlProp","urlProps","ka","httpData","userAgent","User-Agent","referrer","z","_backoffDuration","_backoffStart","na","oa","current","last","pa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Z","baseData","project","platform","_getHttpData","serverName","server_name","_sanitizeData","forEach","random","_sendProcessedPayload","qa","sa","ra","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","ta","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","open","setRequestHeader","send","ua","hash","evaluated","A","$","setUser","setReleaseContext","10","11","12","RavenConstructor","_Raven","noConflict","Client","what","supportsErrorEvent","ErrorEvent","supportsDOMError","DOMError","supportsDOMException","DOMException","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","sanitizeMask","safeInput","o_O","getLocationHref","getLocationOrigin","origin","hostname","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","responseText","sourceMaps","sourceMapAddress","charAt","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","y","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","string","raw"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file diff --git a/dist/angular,console,ember,vue/raven.js b/dist/angular,console,ember,vue/raven.js index f757920c84cd..0d10c7b44faf 100644 --- a/dist/angular,console,ember,vue/raven.js +++ b/dist/angular,console,ember,vue/raven.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.25.1 (b6f3c7a) | github.com/getsentry/raven-js */ +/*! Raven.js 3.25.2 (30b6d4e) | github.com/getsentry/raven-js */ /* * Includes TraceKit @@ -312,7 +312,11 @@ function now() { var _window = typeof window !== 'undefined' ? window - : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; + : typeof global !== 'undefined' + ? global + : typeof self !== 'undefined' + ? self + : {}; var _document = _window.document; var _navigator = _window.navigator; @@ -402,7 +406,7 @@ Raven.prototype = { // webpack (using a build step causes webpack #1617). Grunt verifies that // this value matches package.json during build. // See: https://github.com/getsentry/raven-js/issues/465 - VERSION: '3.25.1', + VERSION: '3.25.2', debug: false, @@ -1958,7 +1962,7 @@ Raven.prototype = { } ] }, - culprit: fileurl + transaction: fileurl }, options ); @@ -2073,7 +2077,7 @@ Raven.prototype = { if ( !last || current.message !== last.message || // defined for captureMessage - current.culprit !== last.culprit // defined for captureException/onerror + current.transaction !== last.transaction // defined for captureException/onerror ) return false; diff --git a/dist/angular,console,ember,vue/raven.min.js b/dist/angular,console,ember,vue/raven.min.js index 1e7dd6df2878..758649cc0b32 100644 --- a/dist/angular,console,ember,vue/raven.min.js +++ b/dist/angular,console,ember,vue/raven.min.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.25.1 (b6f3c7a) | github.com/getsentry/raven-js */ -!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.Raven=a()}}(function(){return function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};b[g][0].call(k.exports,function(a){var c=b[g][1][a];return e(c?c:a)},k,k.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;g":"anonymous component")+(a._isVue&&a.$options.__file?" at "+a.$options.__file:"")}function e(a,b){if(b=b||window.Vue,b&&b.config){var c=b.config.errorHandler;b.config.errorHandler=function(b,e,f){var g={};"[object Object]"===Object.prototype.toString.call(e)&&(g.componentName=d(e),g.propsData=e.$options.propsData),"undefined"!=typeof f&&(g.lifecycleHook=f),a.captureException(b,{extra:g}),"function"==typeof c&&c.call(this,b,e,f)}}}b.exports=e,a(8).addPlugin(b.exports)},{8:8}],5:[function(a,b,c){function d(a){this.name="RavenConfigError",this.message=a}d.prototype=new Error,d.prototype.constructor=d,b.exports=d},{}],6:[function(a,b,c){var d=a(9),e=function(a,b,c){var e=a[b],f=a;if(b in a){var g="warn"===b?"warning":b;a[b]=function(){var a=[].slice.call(arguments),h=d.safeJoin(a," "),i={level:g,logger:"console",extra:{arguments:a}};"assert"===b?a[0]===!1&&(h="Assertion failed: "+(d.safeJoin(a.slice(1)," ")||"console.assert"),i.extra.arguments=a.slice(1),c&&c(h,i)):c&&c(h,i),e&&Function.prototype.apply.call(e,f,a)}}};b.exports={wrapMethod:e}},{9:9}],7:[function(a,b,c){(function(c){function d(){return+new Date}function e(a,b){return s(b)?function(c){return b(c,a)}:b}function f(){this.b=!("object"!=typeof JSON||!JSON.stringify),this.c=!r(S),this.d=!r(T),this.e=null,this.f=null,this.g=null,this.h=null,this.i=null,this.j=null,this.k={},this.l={release:R.SENTRY_RELEASE&&R.SENTRY_RELEASE.id,logger:"javascript",ignoreErrors:[],ignoreUrls:[],whitelistUrls:[],includePaths:[],headers:null,collectWindowErrors:!0,captureUnhandledRejections:!0,maxMessageLength:0,maxUrlLength:250,stackTraceLimit:50,autoBreadcrumbs:!0,instrument:!0,sampleRate:1,sanitizeKeys:[]},this.m={method:"POST",keepalive:!0,referrerPolicy:K()?"origin":""},this.n=0,this.o=!1,this.p=Error.stackTraceLimit,this.q=R.console||{},this.r={},this.s=[],this.t=d(),this.u=[],this.v=[],this.w=null,this.x=R.location,this.y=this.x&&this.x.href,this.z();for(var a in this.q)this.r[a]=this.q[a]}var g=a(10),h=a(11),i=a(12),j=a(5),k=a(9),l=k.isErrorEvent,m=k.isDOMError,n=k.isDOMException,o=k.isError,p=k.isObject,q=k.isPlainObject,r=k.isUndefined,s=k.isFunction,t=k.isString,u=k.isArray,v=k.isEmptyObject,w=k.each,x=k.objectMerge,y=k.truncate,z=k.objectFrozen,A=k.hasKey,B=k.joinRegExp,C=k.urlencode,D=k.uuid4,E=k.htmlTreeAsString,F=k.isSameException,G=k.isSameStacktrace,H=k.parseUrl,I=k.fill,J=k.supportsFetch,K=k.supportsReferrerPolicy,L=k.serializeKeysForMessage,M=k.serializeException,N=k.sanitize,O=a(6).wrapMethod,P="source protocol user pass host port path".split(" "),Q=/^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/,R="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},S=R.document,T=R.navigator;f.prototype={VERSION:"3.25.1",debug:!1,TraceKit:g,config:function(a,b){var c=this;if(c.h)return this.A("error","Error: Raven has already been configured"),c;if(!a)return c;var d=c.l;b&&w(b,function(a,b){"tags"===a||"extra"===a||"user"===a?c.k[a]=b:d[a]=b}),c.setDSN(a),d.ignoreErrors.push(/^Script error\.?$/),d.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/),d.ignoreErrors=B(d.ignoreErrors),d.ignoreUrls=!!d.ignoreUrls.length&&B(d.ignoreUrls),d.whitelistUrls=!!d.whitelistUrls.length&&B(d.whitelistUrls),d.includePaths=B(d.includePaths),d.maxBreadcrumbs=Math.max(0,Math.min(d.maxBreadcrumbs||100,100));var e={xhr:!0,console:!0,dom:!0,location:!0,sentry:!0},f=d.autoBreadcrumbs;"[object Object]"==={}.toString.call(f)?f=x(e,f):f!==!1&&(f=e),d.autoBreadcrumbs=f;var h={tryCatch:!0},i=d.instrument;return"[object Object]"==={}.toString.call(i)?i=x(h,i):i!==!1&&(i=h),d.instrument=i,g.collectWindowErrors=!!d.collectWindowErrors,c},install:function(){var a=this;return a.isSetup()&&!a.o&&(g.report.subscribe(function(){a.B.apply(a,arguments)}),a.l.captureUnhandledRejections&&a.C(),a.D(),a.l.instrument&&a.l.instrument.tryCatch&&a.E(),a.l.autoBreadcrumbs&&a.F(),a.G(),a.o=!0),Error.stackTraceLimit=a.l.stackTraceLimit,this},setDSN:function(a){var b=this,c=b.H(a),d=c.path.lastIndexOf("/"),e=c.path.substr(1,d);b.I=a,b.i=c.user,b.J=c.pass&&c.pass.substr(1),b.j=c.path.substr(d+1),b.h=b.K(c),b.L=b.h+"/"+e+"api/"+b.j+"/store/",this.z()},context:function(a,b,c){return s(a)&&(c=b||[],b=a,a=void 0),this.wrap(a,b).apply(this,c)},wrap:function(a,b,c){function d(){var d=[],f=arguments.length,g=!a||a&&a.deep!==!1;for(c&&s(c)&&c.apply(this,arguments);f--;)d[f]=g?e.wrap(a,arguments[f]):arguments[f];try{return b.apply(this,d)}catch(h){throw e.M(),e.captureException(h,a),h}}var e=this;if(r(b)&&!s(a))return a;if(s(a)&&(b=a,a=void 0),!s(b))return b;try{if(b.N)return b;if(b.O)return b.O}catch(f){return b}for(var g in b)A(b,g)&&(d[g]=b[g]);return d.prototype=b.prototype,b.O=d,d.N=!0,d.P=b,d},uninstall:function(){return g.report.uninstall(),this.Q(),this.R(),this.S(),this.T(),Error.stackTraceLimit=this.p,this.o=!1,this},U:function(a){this.A("debug","Raven caught unhandled promise rejection:",a),this.captureException(a.reason,{extra:{unhandledPromiseRejection:!0}})},C:function(){return this.U=this.U.bind(this),R.addEventListener&&R.addEventListener("unhandledrejection",this.U),this},Q:function(){return R.removeEventListener&&R.removeEventListener("unhandledrejection",this.U),this},captureException:function(a,b){if(b=x({trimHeadFrames:0},b?b:{}),l(a)&&a.error)a=a.error;else{if(m(a)||n(a)){var c=a.name||(m(a)?"DOMError":"DOMException"),d=a.message?c+": "+a.message:c;return this.captureMessage(d,x(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}))}if(o(a))a=a;else{if(!q(a))return this.captureMessage(a,x(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}));b=this.V(b,a),a=new Error(b.message)}}this.e=a;try{var e=g.computeStackTrace(a);this.W(e,b)}catch(f){if(a!==f)throw f}return this},V:function(a,b){var c=Object.keys(b).sort(),d=x(a,{message:"Non-Error exception captured with keys: "+L(c),fingerprint:[i(c)],extra:a.extra||{}});return d.extra.X=M(b),d},captureMessage:function(a,b){if(!this.l.ignoreErrors.test||!this.l.ignoreErrors.test(a)){b=b||{},a+="";var c,d=x({message:a},b);try{throw new Error(a)}catch(e){c=e}c.name=null;var f=g.computeStackTrace(c),h=u(f.stack)&&f.stack[1];h&&"Raven.captureException"===h.func&&(h=f.stack[2]);var i=h&&h.url||"";if((!this.l.ignoreUrls.test||!this.l.ignoreUrls.test(i))&&(!this.l.whitelistUrls.test||this.l.whitelistUrls.test(i))){if(this.l.stacktrace||b&&b.stacktrace){d.fingerprint=null==d.fingerprint?a:d.fingerprint,b=x({trimHeadFrames:0},b),b.trimHeadFrames+=1;var j=this.Y(f,b);d.stacktrace={frames:j.reverse()}}return d.fingerprint&&(d.fingerprint=u(d.fingerprint)?d.fingerprint:[d.fingerprint]),this.Z(d),this}}},captureBreadcrumb:function(a){var b=x({timestamp:d()/1e3},a);if(s(this.l.breadcrumbCallback)){var c=this.l.breadcrumbCallback(b);if(p(c)&&!v(c))b=c;else if(c===!1)return this}return this.v.push(b),this.v.length>this.l.maxBreadcrumbs&&this.v.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.s.push([a,b]),this.o&&this.G(),this},setUserContext:function(a){return this.k.user=a,this},setExtraContext:function(a){return this.$("extra",a),this},setTagsContext:function(a){return this.$("tags",a),this},clearContext:function(){return this.k={},this},getContext:function(){return JSON.parse(h(this.k))},setEnvironment:function(a){return this.l.environment=a,this},setRelease:function(a){return this.l.release=a,this},setDataCallback:function(a){var b=this.l.dataCallback;return this.l.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.l.breadcrumbCallback;return this.l.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.l.shouldSendCallback;return this.l.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.l.transport=a,this},lastException:function(){return this.e},lastEventId:function(){return this.g},isSetup:function(){return!!this.b&&(!!this.h||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.A("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=R.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(S){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.I;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.k.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.K(this.H(c)),h=S.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(S.head||S.body).appendChild(h)}},M:function(){var a=this;this.n+=1,setTimeout(function(){a.n-=1})},_:function(a,b){var c,d;if(this.c){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),S.createEvent?(c=S.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=S.createEventObject(),c.eventType=a);for(d in b)A(b,d)&&(c[d]=b[d]);if(S.createEvent)S.dispatchEvent(c);else try{S.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},aa:function(a){var b=this;return function(c){if(b.ba=null,b.w!==c){b.w=c;var d;try{d=E(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ca:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.ba;g||a.aa("input")(c),clearTimeout(g),a.ba=setTimeout(function(){a.ba=null},b)}}},da:function(a,b){var c=H(this.x.href),d=H(b),e=H(a);this.y=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},D:function(){var a=this;a.ea=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.N?a.ea.apply(this.P,arguments):a.ea.apply(this,arguments)}},R:function(){this.ea&&(Function.prototype.toString=this.ea)},E:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.da(b.y,c+""),a.apply(this,arguments)}};I(R.history,"pushState",j,d),I(R.history,"replaceState",j,d)}if(c.console&&"console"in R&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};w(["debug","info","warn","error","log"],function(a,b){O(console,b,k)})}},S:function(){for(var a;this.u.length;){a=this.u.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},T:function(){for(var a in this.r)this.q[a]=this.r[a]},G:function(){var a=this;w(this.s,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},H:function(a){var b=Q.exec(a),c={},d=7;try{for(;d--;)c[P[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.l.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},K:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},B:function(){this.n||this.W.apply(this,arguments)},W:function(a,b){var c=this.Y(a,b);this._("handle",{stackInfo:a,options:b}),this.ga(a.name,a.message,a.url,a.lineno,c,b)},Y:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(w(a.stack,function(b,e){var f=c.ha(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.v,0)}),this.k.user&&(a.user=this.k.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),a=this.qa(a),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||v(a[b]))&&delete a[b]}),s(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!v(a)&&(!s(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.na()?void this.A("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function F(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&l(b))for(c=b.split(/\s+/),f=0;fc?Q(a,b-1):d}function R(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?X:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function S(a,b){function c(a){return m(a)?a.map(function(a){return c(a)}):k(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!m(b)||m(b)&&0===b.length)return a;var d,e=A(b),f="********";try{d=JSON.parse(T(a))}catch(g){return a}return c(d)}var T=a(11),U="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},V=3,W=51200,X=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isDOMError:g,isDOMException:h,isUndefined:i,isFunction:j,isPlainObject:k,isString:l,isArray:m,isEmptyObject:n,supportsErrorEvent:o,supportsDOMError:p,supportsDOMException:q,supportsFetch:r,supportsReferrerPolicy:s,supportsPromiseRejectionEvent:t,wrappedCallback:u,each:v,objectMerge:w,truncate:y,objectFrozen:x,hasKey:z,joinRegExp:A,urlencode:B,uuid4:D,htmlTreeAsString:E,htmlElementAsString:F,isSameException:I,isSameStacktrace:J,parseUrl:C,fill:K,safeJoin:L,serializeException:Q,serializeKeysForMessage:R,sanitize:S}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{11:11}],10:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}function e(){return"undefined"==typeof document||null==document.location?"":(document.location.origin||(document.location.origin=document.location.protocol+"//"+document.location.hostname+(document.location.port?":"+document.location.port:"")),document.location.origin)}var f=a(9),g={collectWindowErrors:!0,debug:!1},h="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},i=[].slice,j="?",k=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;g.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function e(a,b){var c=null;if(!b||g.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(i.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,h,i){var l=null,m=f.isErrorEvent(i)?i.error:i,n=f.isErrorEvent(a)?a.message:a;if(v)g.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&f.isError(m))l=g.computeStackTrace(m),e(l,!0);else{var p,r={url:b,line:c,column:h},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(k);p&&(s=p[1],n=p[2])}r.func=j,l={name:s,message:n,url:d(),stack:[r]},e(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=h.onerror,h.onerror=l,r=!0)}function n(){r&&(h.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,e.apply(null,[a,!1].concat(b))}function p(a,b){var c=i.call(arguments,1);if(v){if(u===a)return;o()}var d=g.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),g.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,f,g=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,h=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,i=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,k=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,l=/\((\S*)(?::(\d+))(?::(\d+))\)/,m=a.stack.split("\n"),n=[],o=(/^(.*) is undefined$/.exec(a.message),0),p=m.length;o eval")>-1;r&&(b=k.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==o||c[5]||"undefined"==typeof a.columnNumber||(n[0].column=a.columnNumber+1),f={url:c[3],func:c[1]||j,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}if(!f.func&&f.line&&(f.func=j),f.url&&"blob:"===f.url.substr(0,5)){var s=new XMLHttpRequest;if(s.open("GET",f.url,!1),s.send(null),200===s.status){var t=s.responseText||"";t=t.slice(-300);var u=t.match(/\/\/# sourceMappingURL=(.*)$/);if(u){var v=u[1];"~"===v.charAt(0)&&(v=e()+v.slice(1)),f.url=v.slice(0,-4)}}}n.push(f)}return n.length?{name:a.name,message:a.message,url:d(),stack:n}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=j),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,e){for(var h,i,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==f&&o!==g.report){if(i={url:null,func:j,line:null,column:null},o.name?i.func=o.name:(h=k.exec(o.toString()))&&(i.func=h[1]),"undefined"==typeof i.func)try{i.func=h.input.substring(0,h.input.indexOf("{"))}catch(p){}m[""+o]?n=!0:m[""+o]=!0,l.push(i)}e&&l.splice(0,e);var q={name:a.name,message:a.message,url:d(),stack:l};return b(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),q}function f(b,e){var f=null;e=null==e?0:+e;try{if(f=a(b))return f}catch(h){if(g.debug)throw h}try{if(f=c(b,e+1))return f}catch(h){if(g.debug)throw h}return{name:b.name,message:b.message,url:d()}}return f.augmentStackTraceWithInitialElement=b,f.computeStackTraceFromStackProp=a,f}(),b.exports=g}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{9:9}],11:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}],12:[function(a,b,c){function d(a,b){var c=(65535&a)+(65535&b),d=(a>>16)+(b>>16)+(c>>16);return d<<16|65535&c}function e(a,b){return a<>>32-b}function f(a,b,c,f,g,h){return d(e(d(d(b,a),d(f,h)),g),c)}function g(a,b,c,d,e,g,h){return f(b&c|~b&d,a,b,e,g,h)}function h(a,b,c,d,e,g,h){return f(b&d|c&~d,a,b,e,g,h)}function i(a,b,c,d,e,g,h){return f(b^c^d,a,b,e,g,h)}function j(a,b,c,d,e,g,h){return f(c^(b|~d),a,b,e,g,h)}function k(a,b){a[b>>5]|=128<>>9<<4)+14]=b;var c,e,f,k,l,m=1732584193,n=-271733879,o=-1732584194,p=271733878;for(c=0;c>5]>>>b%32&255);return c}function m(a){var b,c=[];for(c[(a.length>>2)-1]=void 0,b=0;b>5]|=(255&a.charCodeAt(b/8))<16&&(e=k(e,8*a.length)),c=0;c<16;c+=1)f[c]=909522486^e[c],g[c]=1549556828^e[c];return d=k(f.concat(m(b)),512+8*b.length),l(k(g.concat(d),640))}function p(a){var b,c,d="0123456789abcdef",e="";for(c=0;c>>4&15)+d.charAt(15&b);return e}function q(a){return unescape(encodeURIComponent(a))}function r(a){return n(q(a))}function s(a){return p(r(a))}function t(a,b){return o(q(a),q(b))}function u(a,b){return p(t(a,b))}function v(a,b,c){return b?c?t(b,a):u(b,a):c?r(a):s(a)}b.exports=v},{}]},{},[8,1,2,3,4])(8)}); +/*! Raven.js 3.25.2 (30b6d4e) | github.com/getsentry/raven-js */ +!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.Raven=a()}}(function(){return function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};b[g][0].call(k.exports,function(a){var c=b[g][1][a];return e(c?c:a)},k,k.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;g":"anonymous component")+(a._isVue&&a.$options.__file?" at "+a.$options.__file:"")}function e(a,b){if(b=b||window.Vue,b&&b.config){var c=b.config.errorHandler;b.config.errorHandler=function(b,e,f){var g={};"[object Object]"===Object.prototype.toString.call(e)&&(g.componentName=d(e),g.propsData=e.$options.propsData),"undefined"!=typeof f&&(g.lifecycleHook=f),a.captureException(b,{extra:g}),"function"==typeof c&&c.call(this,b,e,f)}}}b.exports=e,a(8).addPlugin(b.exports)},{8:8}],5:[function(a,b,c){function d(a){this.name="RavenConfigError",this.message=a}d.prototype=new Error,d.prototype.constructor=d,b.exports=d},{}],6:[function(a,b,c){var d=a(9),e=function(a,b,c){var e=a[b],f=a;if(b in a){var g="warn"===b?"warning":b;a[b]=function(){var a=[].slice.call(arguments),h=d.safeJoin(a," "),i={level:g,logger:"console",extra:{arguments:a}};"assert"===b?a[0]===!1&&(h="Assertion failed: "+(d.safeJoin(a.slice(1)," ")||"console.assert"),i.extra.arguments=a.slice(1),c&&c(h,i)):c&&c(h,i),e&&Function.prototype.apply.call(e,f,a)}}};b.exports={wrapMethod:e}},{9:9}],7:[function(a,b,c){(function(c){function d(){return+new Date}function e(a,b){return s(b)?function(c){return b(c,a)}:b}function f(){this.b=!("object"!=typeof JSON||!JSON.stringify),this.c=!r(S),this.d=!r(T),this.e=null,this.f=null,this.g=null,this.h=null,this.i=null,this.j=null,this.k={},this.l={release:R.SENTRY_RELEASE&&R.SENTRY_RELEASE.id,logger:"javascript",ignoreErrors:[],ignoreUrls:[],whitelistUrls:[],includePaths:[],headers:null,collectWindowErrors:!0,captureUnhandledRejections:!0,maxMessageLength:0,maxUrlLength:250,stackTraceLimit:50,autoBreadcrumbs:!0,instrument:!0,sampleRate:1,sanitizeKeys:[]},this.m={method:"POST",keepalive:!0,referrerPolicy:K()?"origin":""},this.n=0,this.o=!1,this.p=Error.stackTraceLimit,this.q=R.console||{},this.r={},this.s=[],this.t=d(),this.u=[],this.v=[],this.w=null,this.x=R.location,this.y=this.x&&this.x.href,this.z();for(var a in this.q)this.r[a]=this.q[a]}var g=a(10),h=a(11),i=a(12),j=a(5),k=a(9),l=k.isErrorEvent,m=k.isDOMError,n=k.isDOMException,o=k.isError,p=k.isObject,q=k.isPlainObject,r=k.isUndefined,s=k.isFunction,t=k.isString,u=k.isArray,v=k.isEmptyObject,w=k.each,x=k.objectMerge,y=k.truncate,z=k.objectFrozen,A=k.hasKey,B=k.joinRegExp,C=k.urlencode,D=k.uuid4,E=k.htmlTreeAsString,F=k.isSameException,G=k.isSameStacktrace,H=k.parseUrl,I=k.fill,J=k.supportsFetch,K=k.supportsReferrerPolicy,L=k.serializeKeysForMessage,M=k.serializeException,N=k.sanitize,O=a(6).wrapMethod,P="source protocol user pass host port path".split(" "),Q=/^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/,R="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},S=R.document,T=R.navigator;f.prototype={VERSION:"3.25.2",debug:!1,TraceKit:g,config:function(a,b){var c=this;if(c.h)return this.A("error","Error: Raven has already been configured"),c;if(!a)return c;var d=c.l;b&&w(b,function(a,b){"tags"===a||"extra"===a||"user"===a?c.k[a]=b:d[a]=b}),c.setDSN(a),d.ignoreErrors.push(/^Script error\.?$/),d.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/),d.ignoreErrors=B(d.ignoreErrors),d.ignoreUrls=!!d.ignoreUrls.length&&B(d.ignoreUrls),d.whitelistUrls=!!d.whitelistUrls.length&&B(d.whitelistUrls),d.includePaths=B(d.includePaths),d.maxBreadcrumbs=Math.max(0,Math.min(d.maxBreadcrumbs||100,100));var e={xhr:!0,console:!0,dom:!0,location:!0,sentry:!0},f=d.autoBreadcrumbs;"[object Object]"==={}.toString.call(f)?f=x(e,f):f!==!1&&(f=e),d.autoBreadcrumbs=f;var h={tryCatch:!0},i=d.instrument;return"[object Object]"==={}.toString.call(i)?i=x(h,i):i!==!1&&(i=h),d.instrument=i,g.collectWindowErrors=!!d.collectWindowErrors,c},install:function(){var a=this;return a.isSetup()&&!a.o&&(g.report.subscribe(function(){a.B.apply(a,arguments)}),a.l.captureUnhandledRejections&&a.C(),a.D(),a.l.instrument&&a.l.instrument.tryCatch&&a.E(),a.l.autoBreadcrumbs&&a.F(),a.G(),a.o=!0),Error.stackTraceLimit=a.l.stackTraceLimit,this},setDSN:function(a){var b=this,c=b.H(a),d=c.path.lastIndexOf("/"),e=c.path.substr(1,d);b.I=a,b.i=c.user,b.J=c.pass&&c.pass.substr(1),b.j=c.path.substr(d+1),b.h=b.K(c),b.L=b.h+"/"+e+"api/"+b.j+"/store/",this.z()},context:function(a,b,c){return s(a)&&(c=b||[],b=a,a=void 0),this.wrap(a,b).apply(this,c)},wrap:function(a,b,c){function d(){var d=[],f=arguments.length,g=!a||a&&a.deep!==!1;for(c&&s(c)&&c.apply(this,arguments);f--;)d[f]=g?e.wrap(a,arguments[f]):arguments[f];try{return b.apply(this,d)}catch(h){throw e.M(),e.captureException(h,a),h}}var e=this;if(r(b)&&!s(a))return a;if(s(a)&&(b=a,a=void 0),!s(b))return b;try{if(b.N)return b;if(b.O)return b.O}catch(f){return b}for(var g in b)A(b,g)&&(d[g]=b[g]);return d.prototype=b.prototype,b.O=d,d.N=!0,d.P=b,d},uninstall:function(){return g.report.uninstall(),this.Q(),this.R(),this.S(),this.T(),Error.stackTraceLimit=this.p,this.o=!1,this},U:function(a){this.A("debug","Raven caught unhandled promise rejection:",a),this.captureException(a.reason,{extra:{unhandledPromiseRejection:!0}})},C:function(){return this.U=this.U.bind(this),R.addEventListener&&R.addEventListener("unhandledrejection",this.U),this},Q:function(){return R.removeEventListener&&R.removeEventListener("unhandledrejection",this.U),this},captureException:function(a,b){if(b=x({trimHeadFrames:0},b?b:{}),l(a)&&a.error)a=a.error;else{if(m(a)||n(a)){var c=a.name||(m(a)?"DOMError":"DOMException"),d=a.message?c+": "+a.message:c;return this.captureMessage(d,x(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}))}if(o(a))a=a;else{if(!q(a))return this.captureMessage(a,x(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}));b=this.V(b,a),a=new Error(b.message)}}this.e=a;try{var e=g.computeStackTrace(a);this.W(e,b)}catch(f){if(a!==f)throw f}return this},V:function(a,b){var c=Object.keys(b).sort(),d=x(a,{message:"Non-Error exception captured with keys: "+L(c),fingerprint:[i(c)],extra:a.extra||{}});return d.extra.X=M(b),d},captureMessage:function(a,b){if(!this.l.ignoreErrors.test||!this.l.ignoreErrors.test(a)){b=b||{},a+="";var c,d=x({message:a},b);try{throw new Error(a)}catch(e){c=e}c.name=null;var f=g.computeStackTrace(c),h=u(f.stack)&&f.stack[1];h&&"Raven.captureException"===h.func&&(h=f.stack[2]);var i=h&&h.url||"";if((!this.l.ignoreUrls.test||!this.l.ignoreUrls.test(i))&&(!this.l.whitelistUrls.test||this.l.whitelistUrls.test(i))){if(this.l.stacktrace||b&&b.stacktrace){d.fingerprint=null==d.fingerprint?a:d.fingerprint,b=x({trimHeadFrames:0},b),b.trimHeadFrames+=1;var j=this.Y(f,b);d.stacktrace={frames:j.reverse()}}return d.fingerprint&&(d.fingerprint=u(d.fingerprint)?d.fingerprint:[d.fingerprint]),this.Z(d),this}}},captureBreadcrumb:function(a){var b=x({timestamp:d()/1e3},a);if(s(this.l.breadcrumbCallback)){var c=this.l.breadcrumbCallback(b);if(p(c)&&!v(c))b=c;else if(c===!1)return this}return this.v.push(b),this.v.length>this.l.maxBreadcrumbs&&this.v.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.s.push([a,b]),this.o&&this.G(),this},setUserContext:function(a){return this.k.user=a,this},setExtraContext:function(a){return this.$("extra",a),this},setTagsContext:function(a){return this.$("tags",a),this},clearContext:function(){return this.k={},this},getContext:function(){return JSON.parse(h(this.k))},setEnvironment:function(a){return this.l.environment=a,this},setRelease:function(a){return this.l.release=a,this},setDataCallback:function(a){var b=this.l.dataCallback;return this.l.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.l.breadcrumbCallback;return this.l.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.l.shouldSendCallback;return this.l.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.l.transport=a,this},lastException:function(){return this.e},lastEventId:function(){return this.g},isSetup:function(){return!!this.b&&(!!this.h||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.A("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=R.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(S){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.I;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.k.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.K(this.H(c)),h=S.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(S.head||S.body).appendChild(h)}},M:function(){var a=this;this.n+=1,setTimeout(function(){a.n-=1})},_:function(a,b){var c,d;if(this.c){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),S.createEvent?(c=S.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=S.createEventObject(),c.eventType=a);for(d in b)A(b,d)&&(c[d]=b[d]);if(S.createEvent)S.dispatchEvent(c);else try{S.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},aa:function(a){var b=this;return function(c){if(b.ba=null,b.w!==c){b.w=c;var d;try{d=E(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ca:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.ba;g||a.aa("input")(c),clearTimeout(g),a.ba=setTimeout(function(){a.ba=null},b)}}},da:function(a,b){var c=H(this.x.href),d=H(b),e=H(a);this.y=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},D:function(){var a=this;a.ea=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.N?a.ea.apply(this.P,arguments):a.ea.apply(this,arguments)}},R:function(){this.ea&&(Function.prototype.toString=this.ea)},E:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.da(b.y,c+""),a.apply(this,arguments)}};I(R.history,"pushState",j,d),I(R.history,"replaceState",j,d)}if(c.console&&"console"in R&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};w(["debug","info","warn","error","log"],function(a,b){O(console,b,k)})}},S:function(){for(var a;this.u.length;){a=this.u.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},T:function(){for(var a in this.r)this.q[a]=this.r[a]},G:function(){var a=this;w(this.s,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},H:function(a){var b=Q.exec(a),c={},d=7;try{for(;d--;)c[P[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.l.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},K:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},B:function(){this.n||this.W.apply(this,arguments)},W:function(a,b){var c=this.Y(a,b);this._("handle",{stackInfo:a,options:b}),this.ga(a.name,a.message,a.url,a.lineno,c,b)},Y:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(w(a.stack,function(b,e){var f=c.ha(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.v,0)}),this.k.user&&(a.user=this.k.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),a=this.qa(a),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||v(a[b]))&&delete a[b]}),s(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!v(a)&&(!s(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.na()?void this.A("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function F(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&l(b))for(c=b.split(/\s+/),f=0;fc?Q(a,b-1):d}function R(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?X:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function S(a,b){function c(a){return m(a)?a.map(function(a){return c(a)}):k(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!m(b)||m(b)&&0===b.length)return a;var d,e=A(b),f="********";try{d=JSON.parse(T(a))}catch(g){return a}return c(d)}var T=a(11),U="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},V=3,W=51200,X=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isDOMError:g,isDOMException:h,isUndefined:i,isFunction:j,isPlainObject:k,isString:l,isArray:m,isEmptyObject:n,supportsErrorEvent:o,supportsDOMError:p,supportsDOMException:q,supportsFetch:r,supportsReferrerPolicy:s,supportsPromiseRejectionEvent:t,wrappedCallback:u,each:v,objectMerge:w,truncate:y,objectFrozen:x,hasKey:z,joinRegExp:A,urlencode:B,uuid4:D,htmlTreeAsString:E,htmlElementAsString:F,isSameException:I,isSameStacktrace:J,parseUrl:C,fill:K,safeJoin:L,serializeException:Q,serializeKeysForMessage:R,sanitize:S}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{11:11}],10:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}function e(){return"undefined"==typeof document||null==document.location?"":(document.location.origin||(document.location.origin=document.location.protocol+"//"+document.location.hostname+(document.location.port?":"+document.location.port:"")),document.location.origin)}var f=a(9),g={collectWindowErrors:!0,debug:!1},h="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},i=[].slice,j="?",k=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;g.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function e(a,b){var c=null;if(!b||g.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(i.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,h,i){var l=null,m=f.isErrorEvent(i)?i.error:i,n=f.isErrorEvent(a)?a.message:a;if(v)g.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&f.isError(m))l=g.computeStackTrace(m),e(l,!0);else{var p,r={url:b,line:c,column:h},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(k);p&&(s=p[1],n=p[2])}r.func=j,l={name:s,message:n,url:d(),stack:[r]},e(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=h.onerror,h.onerror=l,r=!0)}function n(){r&&(h.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,e.apply(null,[a,!1].concat(b))}function p(a,b){var c=i.call(arguments,1);if(v){if(u===a)return;o()}var d=g.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),g.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,f,g=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,h=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,i=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,k=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,l=/\((\S*)(?::(\d+))(?::(\d+))\)/,m=a.stack.split("\n"),n=[],o=(/^(.*) is undefined$/.exec(a.message),0),p=m.length;o eval")>-1;r&&(b=k.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==o||c[5]||"undefined"==typeof a.columnNumber||(n[0].column=a.columnNumber+1),f={url:c[3],func:c[1]||j,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}if(!f.func&&f.line&&(f.func=j),f.url&&"blob:"===f.url.substr(0,5)){var s=new XMLHttpRequest;if(s.open("GET",f.url,!1),s.send(null),200===s.status){var t=s.responseText||"";t=t.slice(-300);var u=t.match(/\/\/# sourceMappingURL=(.*)$/);if(u){var v=u[1];"~"===v.charAt(0)&&(v=e()+v.slice(1)),f.url=v.slice(0,-4)}}}n.push(f)}return n.length?{name:a.name,message:a.message,url:d(),stack:n}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=j),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,e){for(var h,i,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==f&&o!==g.report){if(i={url:null,func:j,line:null,column:null},o.name?i.func=o.name:(h=k.exec(o.toString()))&&(i.func=h[1]),"undefined"==typeof i.func)try{i.func=h.input.substring(0,h.input.indexOf("{"))}catch(p){}m[""+o]?n=!0:m[""+o]=!0,l.push(i)}e&&l.splice(0,e);var q={name:a.name,message:a.message,url:d(),stack:l};return b(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),q}function f(b,e){var f=null;e=null==e?0:+e;try{if(f=a(b))return f}catch(h){if(g.debug)throw h}try{if(f=c(b,e+1))return f}catch(h){if(g.debug)throw h}return{name:b.name,message:b.message,url:d()}}return f.augmentStackTraceWithInitialElement=b,f.computeStackTraceFromStackProp=a,f}(),b.exports=g}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{9:9}],11:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}],12:[function(a,b,c){function d(a,b){var c=(65535&a)+(65535&b),d=(a>>16)+(b>>16)+(c>>16);return d<<16|65535&c}function e(a,b){return a<>>32-b}function f(a,b,c,f,g,h){return d(e(d(d(b,a),d(f,h)),g),c)}function g(a,b,c,d,e,g,h){return f(b&c|~b&d,a,b,e,g,h)}function h(a,b,c,d,e,g,h){return f(b&d|c&~d,a,b,e,g,h)}function i(a,b,c,d,e,g,h){return f(b^c^d,a,b,e,g,h)}function j(a,b,c,d,e,g,h){return f(c^(b|~d),a,b,e,g,h)}function k(a,b){a[b>>5]|=128<>>9<<4)+14]=b;var c,e,f,k,l,m=1732584193,n=-271733879,o=-1732584194,p=271733878;for(c=0;c>5]>>>b%32&255);return c}function m(a){var b,c=[];for(c[(a.length>>2)-1]=void 0,b=0;b>5]|=(255&a.charCodeAt(b/8))<16&&(e=k(e,8*a.length)),c=0;c<16;c+=1)f[c]=909522486^e[c],g[c]=1549556828^e[c];return d=k(f.concat(m(b)),512+8*b.length),l(k(g.concat(d),640))}function p(a){var b,c,d="0123456789abcdef",e="";for(c=0;c>>4&15)+d.charAt(15&b);return e}function q(a){return unescape(encodeURIComponent(a))}function r(a){return n(q(a))}function s(a){return p(r(a))}function t(a,b){return o(q(a),q(b))}function u(a,b){return p(t(a,b))}function v(a,b,c){return b?c?t(b,a):u(b,a):c?r(a):s(a)}b.exports=v},{}]},{},[8,1,2,3,4])(8)}); //# sourceMappingURL=raven.min.js.map \ No newline at end of file diff --git a/dist/angular,console,ember,vue/raven.min.js.map b/dist/angular,console,ember,vue/raven.min.js.map index db0c77085fb8..01d0c11c4c2f 100644 --- a/dist/angular,console,ember,vue/raven.min.js.map +++ b/dist/angular,console,ember,vue/raven.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","angularPlugin","angular","RavenProvider","$get","$window","ExceptionHandlerProvider","$provide","decorator","exceptionHandler","R","$delegate","ex","cause","captureException","extra","moduleName","provider","config","setDataCallback","wrappedCallback","data","_normalizeData","angularPattern","exception","values","matches","exec","value","type","message","angularDocs","substr","addPlugin","8","9","2","consolePlugin","console","pluginOptions","logLevels","levels","push","callback","msg","captureMessage","level","pop","wrapConsoleMethod","wrapMethod","6","3","emberPlugin","Ember","_oldOnError","onerror","error","RSVP","on","reason","context","4","formatComponentName","vm","$root","name","_isVue","$options","_componentTag","__file","vuePlugin","Vue","errorHandler","info","metaData","Object","prototype","toString","componentName","propsData","lifecycleHook","5","RavenConfigError","constructor","utils","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","safeJoin","logger","Function","apply","7","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","sanitizeKeys","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isErrorEvent","isDOMError","isDOMException","isError","isObject","isPlainObject","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","sanitize","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","dsn","options","_logDebug","globalOptions","key","setDSN","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","func","undefined","wrap","_before","wrapped","deep","_ignoreNextOnError","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","U","event","unhandledPromiseRejection","C","_promiseRejectionHandler","bind","addEventListener","Q","removeEventListener","trimHeadFrames","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","V","currentOptions","exKeys","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","M","setTimeout","_","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","aa","evtName","_keypressTimeout","target","category","ca","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","da","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","D","_originalFunctionToString","E","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","F","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","S","builtin","T","G","installer","concat","H","str","m","allowSecretKey","K","port","B","W","stackInfo","_triggerEvent","_processException","lineno","Y","frame","_normalizeFrame","in_app","ha","stackInfoUrl","normalized","filename","line","colno","column","function","ga","prefixedMessage","culprit","ia","request","Referer","breadcrumbs","_trimBreadcrumbs","ja","urlProp","urlProps","ka","httpData","userAgent","User-Agent","referrer","z","_backoffDuration","_backoffStart","na","oa","current","last","pa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Z","baseData","project","platform","_getHttpData","serverName","server_name","_sanitizeData","forEach","random","_sendProcessedPayload","qa","sa","ra","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","ta","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","open","setRequestHeader","send","ua","hash","evaluated","A","$","setUser","setReleaseContext","10","11","12","RavenConstructor","_Raven","noConflict","Client","what","supportsErrorEvent","ErrorEvent","supportsDOMError","DOMError","supportsDOMException","DOMException","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","sanitizeMask","safeInput","o_O","getLocationHref","getLocationOrigin","origin","hostname","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","responseText","sourceMaps","sourceMapAddress","charAt","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","y","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","string","raw"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file +{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","angularPlugin","angular","RavenProvider","$get","$window","ExceptionHandlerProvider","$provide","decorator","exceptionHandler","R","$delegate","ex","cause","captureException","extra","moduleName","provider","config","setDataCallback","wrappedCallback","data","_normalizeData","angularPattern","exception","values","matches","exec","value","type","message","angularDocs","substr","addPlugin","8","9","2","consolePlugin","console","pluginOptions","logLevels","levels","push","callback","msg","captureMessage","level","pop","wrapConsoleMethod","wrapMethod","6","3","emberPlugin","Ember","_oldOnError","onerror","error","RSVP","on","reason","context","4","formatComponentName","vm","$root","name","_isVue","$options","_componentTag","__file","vuePlugin","Vue","errorHandler","info","metaData","Object","prototype","toString","componentName","propsData","lifecycleHook","5","RavenConfigError","constructor","utils","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","safeJoin","logger","Function","apply","7","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","sanitizeKeys","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isErrorEvent","isDOMError","isDOMException","isError","isObject","isPlainObject","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","sanitize","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","dsn","options","_logDebug","globalOptions","key","setDSN","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","func","undefined","wrap","_before","wrapped","deep","_ignoreNextOnError","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","U","event","unhandledPromiseRejection","C","_promiseRejectionHandler","bind","addEventListener","Q","removeEventListener","trimHeadFrames","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","V","currentOptions","exKeys","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","M","setTimeout","_","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","aa","evtName","_keypressTimeout","target","category","ca","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","da","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","D","_originalFunctionToString","E","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","F","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","S","builtin","T","G","installer","concat","H","str","m","allowSecretKey","K","port","B","W","stackInfo","_triggerEvent","_processException","lineno","Y","frame","_normalizeFrame","in_app","ha","stackInfoUrl","normalized","filename","line","colno","column","function","ga","prefixedMessage","transaction","ia","request","Referer","breadcrumbs","_trimBreadcrumbs","ja","urlProp","urlProps","ka","httpData","userAgent","User-Agent","referrer","z","_backoffDuration","_backoffStart","na","oa","current","last","pa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Z","baseData","project","platform","_getHttpData","serverName","server_name","_sanitizeData","forEach","random","_sendProcessedPayload","qa","sa","ra","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","ta","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","open","setRequestHeader","send","ua","hash","evaluated","A","$","setUser","setReleaseContext","10","11","12","RavenConstructor","_Raven","noConflict","Client","what","supportsErrorEvent","ErrorEvent","supportsDOMError","DOMError","supportsDOMException","DOMException","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","sanitizeMask","safeInput","o_O","getLocationHref","getLocationOrigin","origin","hostname","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","responseText","sourceMaps","sourceMapAddress","charAt","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","y","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","string","raw"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file diff --git a/dist/angular,console,ember/raven.js b/dist/angular,console,ember/raven.js index defe582e7b67..05bfcb6e2499 100644 --- a/dist/angular,console,ember/raven.js +++ b/dist/angular,console,ember/raven.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.25.1 (b6f3c7a) | github.com/getsentry/raven-js */ +/*! Raven.js 3.25.2 (30b6d4e) | github.com/getsentry/raven-js */ /* * Includes TraceKit @@ -262,7 +262,11 @@ function now() { var _window = typeof window !== 'undefined' ? window - : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; + : typeof global !== 'undefined' + ? global + : typeof self !== 'undefined' + ? self + : {}; var _document = _window.document; var _navigator = _window.navigator; @@ -352,7 +356,7 @@ Raven.prototype = { // webpack (using a build step causes webpack #1617). Grunt verifies that // this value matches package.json during build. // See: https://github.com/getsentry/raven-js/issues/465 - VERSION: '3.25.1', + VERSION: '3.25.2', debug: false, @@ -1908,7 +1912,7 @@ Raven.prototype = { } ] }, - culprit: fileurl + transaction: fileurl }, options ); @@ -2023,7 +2027,7 @@ Raven.prototype = { if ( !last || current.message !== last.message || // defined for captureMessage - current.culprit !== last.culprit // defined for captureException/onerror + current.transaction !== last.transaction // defined for captureException/onerror ) return false; diff --git a/dist/angular,console,ember/raven.min.js b/dist/angular,console,ember/raven.min.js index 0608253c43e6..0553c597f03f 100644 --- a/dist/angular,console,ember/raven.min.js +++ b/dist/angular,console,ember/raven.min.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.25.1 (b6f3c7a) | github.com/getsentry/raven-js */ -!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.Raven=a()}}(function(){return function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};b[g][0].call(k.exports,function(a){var c=b[g][1][a];return e(c?c:a)},k,k.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;gthis.l.maxBreadcrumbs&&this.v.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.s.push([a,b]),this.o&&this.G(),this},setUserContext:function(a){return this.k.user=a,this},setExtraContext:function(a){return this.$("extra",a),this},setTagsContext:function(a){return this.$("tags",a),this},clearContext:function(){return this.k={},this},getContext:function(){return JSON.parse(h(this.k))},setEnvironment:function(a){return this.l.environment=a,this},setRelease:function(a){return this.l.release=a,this},setDataCallback:function(a){var b=this.l.dataCallback;return this.l.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.l.breadcrumbCallback;return this.l.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.l.shouldSendCallback;return this.l.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.l.transport=a,this},lastException:function(){return this.e},lastEventId:function(){return this.g},isSetup:function(){return!!this.b&&(!!this.h||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.A("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=R.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(S){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.I;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.k.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.K(this.H(c)),h=S.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(S.head||S.body).appendChild(h)}},M:function(){var a=this;this.n+=1,setTimeout(function(){a.n-=1})},_:function(a,b){var c,d;if(this.c){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),S.createEvent?(c=S.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=S.createEventObject(),c.eventType=a);for(d in b)A(b,d)&&(c[d]=b[d]);if(S.createEvent)S.dispatchEvent(c);else try{S.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},aa:function(a){var b=this;return function(c){if(b.ba=null,b.w!==c){b.w=c;var d;try{d=E(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ca:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.ba;g||a.aa("input")(c),clearTimeout(g),a.ba=setTimeout(function(){a.ba=null},b)}}},da:function(a,b){var c=H(this.x.href),d=H(b),e=H(a);this.y=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},D:function(){var a=this;a.ea=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.N?a.ea.apply(this.P,arguments):a.ea.apply(this,arguments)}},R:function(){this.ea&&(Function.prototype.toString=this.ea)},E:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.da(b.y,c+""),a.apply(this,arguments)}};I(R.history,"pushState",j,d),I(R.history,"replaceState",j,d)}if(c.console&&"console"in R&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};w(["debug","info","warn","error","log"],function(a,b){O(console,b,k)})}},S:function(){for(var a;this.u.length;){a=this.u.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},T:function(){for(var a in this.r)this.q[a]=this.r[a]},G:function(){var a=this;w(this.s,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},H:function(a){var b=Q.exec(a),c={},d=7;try{for(;d--;)c[P[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.l.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},K:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},B:function(){this.n||this.W.apply(this,arguments)},W:function(a,b){var c=this.Y(a,b);this._("handle",{stackInfo:a,options:b}),this.ga(a.name,a.message,a.url,a.lineno,c,b)},Y:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(w(a.stack,function(b,e){var f=c.ha(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.v,0)}),this.k.user&&(a.user=this.k.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),a=this.qa(a),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||v(a[b]))&&delete a[b]}),s(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!v(a)&&(!s(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.na()?void this.A("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function F(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&l(b))for(c=b.split(/\s+/),f=0;fc?Q(a,b-1):d}function R(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?X:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function S(a,b){function c(a){return m(a)?a.map(function(a){return c(a)}):k(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!m(b)||m(b)&&0===b.length)return a;var d,e=A(b),f="********";try{d=JSON.parse(T(a))}catch(g){return a}return c(d)}var T=a(10),U="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},V=3,W=51200,X=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isDOMError:g,isDOMException:h,isUndefined:i,isFunction:j,isPlainObject:k,isString:l,isArray:m,isEmptyObject:n,supportsErrorEvent:o,supportsDOMError:p,supportsDOMException:q,supportsFetch:r,supportsReferrerPolicy:s,supportsPromiseRejectionEvent:t,wrappedCallback:u,each:v,objectMerge:w,truncate:y,objectFrozen:x,hasKey:z,joinRegExp:A,urlencode:B,uuid4:D,htmlTreeAsString:E,htmlElementAsString:F,isSameException:I,isSameStacktrace:J,parseUrl:C,fill:K,safeJoin:L,serializeException:Q,serializeKeysForMessage:R,sanitize:S}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{10:10}],9:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}function e(){return"undefined"==typeof document||null==document.location?"":(document.location.origin||(document.location.origin=document.location.protocol+"//"+document.location.hostname+(document.location.port?":"+document.location.port:"")),document.location.origin)}var f=a(8),g={collectWindowErrors:!0,debug:!1},h="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},i=[].slice,j="?",k=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;g.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function e(a,b){var c=null;if(!b||g.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(i.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,h,i){var l=null,m=f.isErrorEvent(i)?i.error:i,n=f.isErrorEvent(a)?a.message:a;if(v)g.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&f.isError(m))l=g.computeStackTrace(m),e(l,!0);else{var p,r={url:b,line:c,column:h},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(k);p&&(s=p[1],n=p[2])}r.func=j,l={name:s,message:n,url:d(),stack:[r]},e(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=h.onerror,h.onerror=l,r=!0)}function n(){r&&(h.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,e.apply(null,[a,!1].concat(b))}function p(a,b){var c=i.call(arguments,1);if(v){if(u===a)return;o()}var d=g.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),g.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,f,g=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,h=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,i=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,k=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,l=/\((\S*)(?::(\d+))(?::(\d+))\)/,m=a.stack.split("\n"),n=[],o=(/^(.*) is undefined$/.exec(a.message),0),p=m.length;o eval")>-1;r&&(b=k.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==o||c[5]||"undefined"==typeof a.columnNumber||(n[0].column=a.columnNumber+1),f={url:c[3],func:c[1]||j,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}if(!f.func&&f.line&&(f.func=j),f.url&&"blob:"===f.url.substr(0,5)){var s=new XMLHttpRequest;if(s.open("GET",f.url,!1),s.send(null),200===s.status){ +/*! Raven.js 3.25.2 (30b6d4e) | github.com/getsentry/raven-js */ +!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.Raven=a()}}(function(){return function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};b[g][0].call(k.exports,function(a){var c=b[g][1][a];return e(c?c:a)},k,k.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;gthis.l.maxBreadcrumbs&&this.v.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.s.push([a,b]),this.o&&this.G(),this},setUserContext:function(a){return this.k.user=a,this},setExtraContext:function(a){return this.$("extra",a),this},setTagsContext:function(a){return this.$("tags",a),this},clearContext:function(){return this.k={},this},getContext:function(){return JSON.parse(h(this.k))},setEnvironment:function(a){return this.l.environment=a,this},setRelease:function(a){return this.l.release=a,this},setDataCallback:function(a){var b=this.l.dataCallback;return this.l.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.l.breadcrumbCallback;return this.l.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.l.shouldSendCallback;return this.l.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.l.transport=a,this},lastException:function(){return this.e},lastEventId:function(){return this.g},isSetup:function(){return!!this.b&&(!!this.h||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.A("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=R.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(S){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.I;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.k.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.K(this.H(c)),h=S.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(S.head||S.body).appendChild(h)}},M:function(){var a=this;this.n+=1,setTimeout(function(){a.n-=1})},_:function(a,b){var c,d;if(this.c){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),S.createEvent?(c=S.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=S.createEventObject(),c.eventType=a);for(d in b)A(b,d)&&(c[d]=b[d]);if(S.createEvent)S.dispatchEvent(c);else try{S.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},aa:function(a){var b=this;return function(c){if(b.ba=null,b.w!==c){b.w=c;var d;try{d=E(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ca:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.ba;g||a.aa("input")(c),clearTimeout(g),a.ba=setTimeout(function(){a.ba=null},b)}}},da:function(a,b){var c=H(this.x.href),d=H(b),e=H(a);this.y=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},D:function(){var a=this;a.ea=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.N?a.ea.apply(this.P,arguments):a.ea.apply(this,arguments)}},R:function(){this.ea&&(Function.prototype.toString=this.ea)},E:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.da(b.y,c+""),a.apply(this,arguments)}};I(R.history,"pushState",j,d),I(R.history,"replaceState",j,d)}if(c.console&&"console"in R&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};w(["debug","info","warn","error","log"],function(a,b){O(console,b,k)})}},S:function(){for(var a;this.u.length;){a=this.u.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},T:function(){for(var a in this.r)this.q[a]=this.r[a]},G:function(){var a=this;w(this.s,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},H:function(a){var b=Q.exec(a),c={},d=7;try{for(;d--;)c[P[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.l.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},K:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},B:function(){this.n||this.W.apply(this,arguments)},W:function(a,b){var c=this.Y(a,b);this._("handle",{stackInfo:a,options:b}),this.ga(a.name,a.message,a.url,a.lineno,c,b)},Y:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(w(a.stack,function(b,e){var f=c.ha(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.v,0)}),this.k.user&&(a.user=this.k.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),a=this.qa(a),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||v(a[b]))&&delete a[b]}),s(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!v(a)&&(!s(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.na()?void this.A("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function F(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&l(b))for(c=b.split(/\s+/),f=0;fc?Q(a,b-1):d}function R(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?X:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function S(a,b){function c(a){return m(a)?a.map(function(a){return c(a)}):k(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!m(b)||m(b)&&0===b.length)return a;var d,e=A(b),f="********";try{d=JSON.parse(T(a))}catch(g){return a}return c(d)}var T=a(10),U="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},V=3,W=51200,X=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isDOMError:g,isDOMException:h,isUndefined:i,isFunction:j,isPlainObject:k,isString:l,isArray:m,isEmptyObject:n,supportsErrorEvent:o,supportsDOMError:p,supportsDOMException:q,supportsFetch:r,supportsReferrerPolicy:s,supportsPromiseRejectionEvent:t,wrappedCallback:u,each:v,objectMerge:w,truncate:y,objectFrozen:x,hasKey:z,joinRegExp:A,urlencode:B,uuid4:D,htmlTreeAsString:E,htmlElementAsString:F,isSameException:I,isSameStacktrace:J,parseUrl:C,fill:K,safeJoin:L,serializeException:Q,serializeKeysForMessage:R,sanitize:S}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{10:10}],9:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}function e(){return"undefined"==typeof document||null==document.location?"":(document.location.origin||(document.location.origin=document.location.protocol+"//"+document.location.hostname+(document.location.port?":"+document.location.port:"")),document.location.origin)}var f=a(8),g={collectWindowErrors:!0,debug:!1},h="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},i=[].slice,j="?",k=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;g.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function e(a,b){var c=null;if(!b||g.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(i.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,h,i){var l=null,m=f.isErrorEvent(i)?i.error:i,n=f.isErrorEvent(a)?a.message:a;if(v)g.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&f.isError(m))l=g.computeStackTrace(m),e(l,!0);else{var p,r={url:b,line:c,column:h},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(k);p&&(s=p[1],n=p[2])}r.func=j,l={name:s,message:n,url:d(),stack:[r]},e(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=h.onerror,h.onerror=l,r=!0)}function n(){r&&(h.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,e.apply(null,[a,!1].concat(b))}function p(a,b){var c=i.call(arguments,1);if(v){if(u===a)return;o()}var d=g.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),g.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,f,g=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,h=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,i=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,k=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,l=/\((\S*)(?::(\d+))(?::(\d+))\)/,m=a.stack.split("\n"),n=[],o=(/^(.*) is undefined$/.exec(a.message),0),p=m.length;o eval")>-1;r&&(b=k.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==o||c[5]||"undefined"==typeof a.columnNumber||(n[0].column=a.columnNumber+1),f={url:c[3],func:c[1]||j,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}if(!f.func&&f.line&&(f.func=j),f.url&&"blob:"===f.url.substr(0,5)){var s=new XMLHttpRequest;if(s.open("GET",f.url,!1),s.send(null),200===s.status){ var t=s.responseText||"";t=t.slice(-300);var u=t.match(/\/\/# sourceMappingURL=(.*)$/);if(u){var v=u[1];"~"===v.charAt(0)&&(v=e()+v.slice(1)),f.url=v.slice(0,-4)}}}n.push(f)}return n.length?{name:a.name,message:a.message,url:d(),stack:n}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=j),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,e){for(var h,i,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==f&&o!==g.report){if(i={url:null,func:j,line:null,column:null},o.name?i.func=o.name:(h=k.exec(o.toString()))&&(i.func=h[1]),"undefined"==typeof i.func)try{i.func=h.input.substring(0,h.input.indexOf("{"))}catch(p){}m[""+o]?n=!0:m[""+o]=!0,l.push(i)}e&&l.splice(0,e);var q={name:a.name,message:a.message,url:d(),stack:l};return b(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),q}function f(b,e){var f=null;e=null==e?0:+e;try{if(f=a(b))return f}catch(h){if(g.debug)throw h}try{if(f=c(b,e+1))return f}catch(h){if(g.debug)throw h}return{name:b.name,message:b.message,url:d()}}return f.augmentStackTraceWithInitialElement=b,f.computeStackTraceFromStackProp=a,f}(),b.exports=g}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{8:8}],10:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}],11:[function(a,b,c){function d(a,b){var c=(65535&a)+(65535&b),d=(a>>16)+(b>>16)+(c>>16);return d<<16|65535&c}function e(a,b){return a<>>32-b}function f(a,b,c,f,g,h){return d(e(d(d(b,a),d(f,h)),g),c)}function g(a,b,c,d,e,g,h){return f(b&c|~b&d,a,b,e,g,h)}function h(a,b,c,d,e,g,h){return f(b&d|c&~d,a,b,e,g,h)}function i(a,b,c,d,e,g,h){return f(b^c^d,a,b,e,g,h)}function j(a,b,c,d,e,g,h){return f(c^(b|~d),a,b,e,g,h)}function k(a,b){a[b>>5]|=128<>>9<<4)+14]=b;var c,e,f,k,l,m=1732584193,n=-271733879,o=-1732584194,p=271733878;for(c=0;c>5]>>>b%32&255);return c}function m(a){var b,c=[];for(c[(a.length>>2)-1]=void 0,b=0;b>5]|=(255&a.charCodeAt(b/8))<16&&(e=k(e,8*a.length)),c=0;c<16;c+=1)f[c]=909522486^e[c],g[c]=1549556828^e[c];return d=k(f.concat(m(b)),512+8*b.length),l(k(g.concat(d),640))}function p(a){var b,c,d="0123456789abcdef",e="";for(c=0;c>>4&15)+d.charAt(15&b);return e}function q(a){return unescape(encodeURIComponent(a))}function r(a){return n(q(a))}function s(a){return p(r(a))}function t(a,b){return o(q(a),q(b))}function u(a,b){return p(t(a,b))}function v(a,b,c){return b?c?t(b,a):u(b,a):c?r(a):s(a)}b.exports=v},{}]},{},[7,1,2,3])(7)}); //# sourceMappingURL=raven.min.js.map \ No newline at end of file diff --git a/dist/angular,console,ember/raven.min.js.map b/dist/angular,console,ember/raven.min.js.map index cbb3fa1ebe54..4a8c573bceb5 100644 --- a/dist/angular,console,ember/raven.min.js.map +++ b/dist/angular,console,ember/raven.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","angularPlugin","angular","RavenProvider","$get","$window","ExceptionHandlerProvider","$provide","decorator","exceptionHandler","R","$delegate","ex","cause","captureException","extra","moduleName","provider","config","setDataCallback","wrappedCallback","data","_normalizeData","angularPattern","exception","values","matches","exec","value","type","message","angularDocs","substr","addPlugin","7","8","2","consolePlugin","console","pluginOptions","logLevels","levels","push","callback","msg","captureMessage","level","pop","wrapConsoleMethod","wrapMethod","5","3","emberPlugin","Ember","_oldOnError","onerror","error","RSVP","on","reason","context","4","RavenConfigError","name","prototype","constructor","utils","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","safeJoin","logger","Function","apply","6","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","sanitizeKeys","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isErrorEvent","isDOMError","isDOMException","isError","isObject","isPlainObject","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","sanitize","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","dsn","options","_logDebug","globalOptions","key","setDSN","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","toString","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","func","undefined","wrap","_before","wrapped","deep","_ignoreNextOnError","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","U","event","unhandledPromiseRejection","C","_promiseRejectionHandler","bind","addEventListener","Q","removeEventListener","trimHeadFrames","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","V","currentOptions","exKeys","Object","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","M","setTimeout","_","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","aa","evtName","_keypressTimeout","target","category","ca","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","da","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","D","_originalFunctionToString","E","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","F","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","S","builtin","T","G","installer","concat","H","str","m","allowSecretKey","K","port","B","W","stackInfo","_triggerEvent","_processException","lineno","Y","frame","_normalizeFrame","in_app","ha","stackInfoUrl","normalized","filename","line","colno","column","function","ga","prefixedMessage","culprit","ia","request","Referer","breadcrumbs","_trimBreadcrumbs","ja","urlProp","urlProps","ka","httpData","userAgent","User-Agent","referrer","z","_backoffDuration","_backoffStart","na","oa","current","last","pa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Z","baseData","project","platform","_getHttpData","serverName","server_name","_sanitizeData","forEach","random","_sendProcessedPayload","qa","sa","ra","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","ta","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","open","setRequestHeader","send","ua","hash","evaluated","A","$","setUser","setReleaseContext","10","11","9","RavenConstructor","_Raven","noConflict","Client","what","supportsErrorEvent","ErrorEvent","supportsDOMError","DOMError","supportsDOMException","DOMException","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","sanitizeMask","safeInput","o_O","getLocationHref","getLocationOrigin","origin","hostname","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","responseText","sourceMaps","sourceMapAddress","charAt","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","y","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","string","raw"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file +{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","angularPlugin","angular","RavenProvider","$get","$window","ExceptionHandlerProvider","$provide","decorator","exceptionHandler","R","$delegate","ex","cause","captureException","extra","moduleName","provider","config","setDataCallback","wrappedCallback","data","_normalizeData","angularPattern","exception","values","matches","exec","value","type","message","angularDocs","substr","addPlugin","7","8","2","consolePlugin","console","pluginOptions","logLevels","levels","push","callback","msg","captureMessage","level","pop","wrapConsoleMethod","wrapMethod","5","3","emberPlugin","Ember","_oldOnError","onerror","error","RSVP","on","reason","context","4","RavenConfigError","name","prototype","constructor","utils","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","safeJoin","logger","Function","apply","6","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","sanitizeKeys","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isErrorEvent","isDOMError","isDOMException","isError","isObject","isPlainObject","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","sanitize","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","dsn","options","_logDebug","globalOptions","key","setDSN","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","toString","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","func","undefined","wrap","_before","wrapped","deep","_ignoreNextOnError","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","U","event","unhandledPromiseRejection","C","_promiseRejectionHandler","bind","addEventListener","Q","removeEventListener","trimHeadFrames","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","V","currentOptions","exKeys","Object","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","M","setTimeout","_","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","aa","evtName","_keypressTimeout","target","category","ca","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","da","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","D","_originalFunctionToString","E","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","F","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","S","builtin","T","G","installer","concat","H","str","m","allowSecretKey","K","port","B","W","stackInfo","_triggerEvent","_processException","lineno","Y","frame","_normalizeFrame","in_app","ha","stackInfoUrl","normalized","filename","line","colno","column","function","ga","prefixedMessage","transaction","ia","request","Referer","breadcrumbs","_trimBreadcrumbs","ja","urlProp","urlProps","ka","httpData","userAgent","User-Agent","referrer","z","_backoffDuration","_backoffStart","na","oa","current","last","pa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Z","baseData","project","platform","_getHttpData","serverName","server_name","_sanitizeData","forEach","random","_sendProcessedPayload","qa","sa","ra","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","ta","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","open","setRequestHeader","send","ua","hash","evaluated","A","$","setUser","setReleaseContext","10","11","9","RavenConstructor","_Raven","noConflict","Client","what","supportsErrorEvent","ErrorEvent","supportsDOMError","DOMError","supportsDOMException","DOMException","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","sanitizeMask","safeInput","o_O","getLocationHref","getLocationOrigin","origin","hostname","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","responseText","sourceMaps","sourceMapAddress","charAt","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","y","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","string","raw"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file diff --git a/dist/angular,console,require,vue/raven.js b/dist/angular,console,require,vue/raven.js index 7810acc44916..1256d4341043 100644 --- a/dist/angular,console,require,vue/raven.js +++ b/dist/angular,console,require,vue/raven.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.25.1 (b6f3c7a) | github.com/getsentry/raven-js */ +/*! Raven.js 3.25.2 (30b6d4e) | github.com/getsentry/raven-js */ /* * Includes TraceKit @@ -296,7 +296,11 @@ function now() { var _window = typeof window !== 'undefined' ? window - : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; + : typeof global !== 'undefined' + ? global + : typeof self !== 'undefined' + ? self + : {}; var _document = _window.document; var _navigator = _window.navigator; @@ -386,7 +390,7 @@ Raven.prototype = { // webpack (using a build step causes webpack #1617). Grunt verifies that // this value matches package.json during build. // See: https://github.com/getsentry/raven-js/issues/465 - VERSION: '3.25.1', + VERSION: '3.25.2', debug: false, @@ -1942,7 +1946,7 @@ Raven.prototype = { } ] }, - culprit: fileurl + transaction: fileurl }, options ); @@ -2057,7 +2061,7 @@ Raven.prototype = { if ( !last || current.message !== last.message || // defined for captureMessage - current.culprit !== last.culprit // defined for captureException/onerror + current.transaction !== last.transaction // defined for captureException/onerror ) return false; diff --git a/dist/angular,console,require,vue/raven.min.js b/dist/angular,console,require,vue/raven.min.js index 8665d0a65e75..b3a974234f57 100644 --- a/dist/angular,console,require,vue/raven.min.js +++ b/dist/angular,console,require,vue/raven.min.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.25.1 (b6f3c7a) | github.com/getsentry/raven-js */ -!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.Raven=a()}}(function(){var a;return function b(a,c,d){function e(g,h){if(!c[g]){if(!a[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};a[g][0].call(k.exports,function(b){var c=a[g][1][b];return e(c?c:b)},k,k.exports,b,a,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;g":"anonymous component")+(a._isVue&&a.$options.__file?" at "+a.$options.__file:"")}function e(a,b){if(b=b||window.Vue,b&&b.config){var c=b.config.errorHandler;b.config.errorHandler=function(b,e,f){var g={};"[object Object]"===Object.prototype.toString.call(e)&&(g.componentName=d(e),g.propsData=e.$options.propsData),"undefined"!=typeof f&&(g.lifecycleHook=f),a.captureException(b,{extra:g}),"function"==typeof c&&c.call(this,b,e,f)}}}b.exports=e,a(8).addPlugin(b.exports)},{8:8}],5:[function(a,b,c){function d(a){this.name="RavenConfigError",this.message=a}d.prototype=new Error,d.prototype.constructor=d,b.exports=d},{}],6:[function(a,b,c){var d=a(9),e=function(a,b,c){var e=a[b],f=a;if(b in a){var g="warn"===b?"warning":b;a[b]=function(){var a=[].slice.call(arguments),h=d.safeJoin(a," "),i={level:g,logger:"console",extra:{arguments:a}};"assert"===b?a[0]===!1&&(h="Assertion failed: "+(d.safeJoin(a.slice(1)," ")||"console.assert"),i.extra.arguments=a.slice(1),c&&c(h,i)):c&&c(h,i),e&&Function.prototype.apply.call(e,f,a)}}};b.exports={wrapMethod:e}},{9:9}],7:[function(a,b,c){(function(c){function d(){return+new Date}function e(a,b){return s(b)?function(c){return b(c,a)}:b}function f(){this.b=!("object"!=typeof JSON||!JSON.stringify),this.c=!r(S),this.d=!r(T),this.e=null,this.f=null,this.g=null,this.h=null,this.i=null,this.j=null,this.k={},this.l={release:R.SENTRY_RELEASE&&R.SENTRY_RELEASE.id,logger:"javascript",ignoreErrors:[],ignoreUrls:[],whitelistUrls:[],includePaths:[],headers:null,collectWindowErrors:!0,captureUnhandledRejections:!0,maxMessageLength:0,maxUrlLength:250,stackTraceLimit:50,autoBreadcrumbs:!0,instrument:!0,sampleRate:1,sanitizeKeys:[]},this.m={method:"POST",keepalive:!0,referrerPolicy:K()?"origin":""},this.n=0,this.o=!1,this.p=Error.stackTraceLimit,this.q=R.console||{},this.r={},this.s=[],this.t=d(),this.u=[],this.v=[],this.w=null,this.x=R.location,this.y=this.x&&this.x.href,this.z();for(var a in this.q)this.r[a]=this.q[a]}var g=a(10),h=a(11),i=a(12),j=a(5),k=a(9),l=k.isErrorEvent,m=k.isDOMError,n=k.isDOMException,o=k.isError,p=k.isObject,q=k.isPlainObject,r=k.isUndefined,s=k.isFunction,t=k.isString,u=k.isArray,v=k.isEmptyObject,w=k.each,x=k.objectMerge,y=k.truncate,z=k.objectFrozen,A=k.hasKey,B=k.joinRegExp,C=k.urlencode,D=k.uuid4,E=k.htmlTreeAsString,F=k.isSameException,G=k.isSameStacktrace,H=k.parseUrl,I=k.fill,J=k.supportsFetch,K=k.supportsReferrerPolicy,L=k.serializeKeysForMessage,M=k.serializeException,N=k.sanitize,O=a(6).wrapMethod,P="source protocol user pass host port path".split(" "),Q=/^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/,R="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},S=R.document,T=R.navigator;f.prototype={VERSION:"3.25.1",debug:!1,TraceKit:g,config:function(a,b){var c=this;if(c.h)return this.A("error","Error: Raven has already been configured"),c;if(!a)return c;var d=c.l;b&&w(b,function(a,b){"tags"===a||"extra"===a||"user"===a?c.k[a]=b:d[a]=b}),c.setDSN(a),d.ignoreErrors.push(/^Script error\.?$/),d.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/),d.ignoreErrors=B(d.ignoreErrors),d.ignoreUrls=!!d.ignoreUrls.length&&B(d.ignoreUrls),d.whitelistUrls=!!d.whitelistUrls.length&&B(d.whitelistUrls),d.includePaths=B(d.includePaths),d.maxBreadcrumbs=Math.max(0,Math.min(d.maxBreadcrumbs||100,100));var e={xhr:!0,console:!0,dom:!0,location:!0,sentry:!0},f=d.autoBreadcrumbs;"[object Object]"==={}.toString.call(f)?f=x(e,f):f!==!1&&(f=e),d.autoBreadcrumbs=f;var h={tryCatch:!0},i=d.instrument;return"[object Object]"==={}.toString.call(i)?i=x(h,i):i!==!1&&(i=h),d.instrument=i,g.collectWindowErrors=!!d.collectWindowErrors,c},install:function(){var a=this;return a.isSetup()&&!a.o&&(g.report.subscribe(function(){a.B.apply(a,arguments)}),a.l.captureUnhandledRejections&&a.C(),a.D(),a.l.instrument&&a.l.instrument.tryCatch&&a.E(),a.l.autoBreadcrumbs&&a.F(),a.G(),a.o=!0),Error.stackTraceLimit=a.l.stackTraceLimit,this},setDSN:function(a){var b=this,c=b.H(a),d=c.path.lastIndexOf("/"),e=c.path.substr(1,d);b.I=a,b.i=c.user,b.J=c.pass&&c.pass.substr(1),b.j=c.path.substr(d+1),b.h=b.K(c),b.L=b.h+"/"+e+"api/"+b.j+"/store/",this.z()},context:function(a,b,c){return s(a)&&(c=b||[],b=a,a=void 0),this.wrap(a,b).apply(this,c)},wrap:function(a,b,c){function d(){var d=[],f=arguments.length,g=!a||a&&a.deep!==!1;for(c&&s(c)&&c.apply(this,arguments);f--;)d[f]=g?e.wrap(a,arguments[f]):arguments[f];try{return b.apply(this,d)}catch(h){throw e.M(),e.captureException(h,a),h}}var e=this;if(r(b)&&!s(a))return a;if(s(a)&&(b=a,a=void 0),!s(b))return b;try{if(b.N)return b;if(b.O)return b.O}catch(f){return b}for(var g in b)A(b,g)&&(d[g]=b[g]);return d.prototype=b.prototype,b.O=d,d.N=!0,d.P=b,d},uninstall:function(){return g.report.uninstall(),this.Q(),this.R(),this.S(),this.T(),Error.stackTraceLimit=this.p,this.o=!1,this},U:function(a){this.A("debug","Raven caught unhandled promise rejection:",a),this.captureException(a.reason,{extra:{unhandledPromiseRejection:!0}})},C:function(){return this.U=this.U.bind(this),R.addEventListener&&R.addEventListener("unhandledrejection",this.U),this},Q:function(){return R.removeEventListener&&R.removeEventListener("unhandledrejection",this.U),this},captureException:function(a,b){if(b=x({trimHeadFrames:0},b?b:{}),l(a)&&a.error)a=a.error;else{if(m(a)||n(a)){var c=a.name||(m(a)?"DOMError":"DOMException"),d=a.message?c+": "+a.message:c;return this.captureMessage(d,x(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}))}if(o(a))a=a;else{if(!q(a))return this.captureMessage(a,x(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}));b=this.V(b,a),a=new Error(b.message)}}this.e=a;try{var e=g.computeStackTrace(a);this.W(e,b)}catch(f){if(a!==f)throw f}return this},V:function(a,b){var c=Object.keys(b).sort(),d=x(a,{message:"Non-Error exception captured with keys: "+L(c),fingerprint:[i(c)],extra:a.extra||{}});return d.extra.X=M(b),d},captureMessage:function(a,b){if(!this.l.ignoreErrors.test||!this.l.ignoreErrors.test(a)){b=b||{},a+="";var c,d=x({message:a},b);try{throw new Error(a)}catch(e){c=e}c.name=null;var f=g.computeStackTrace(c),h=u(f.stack)&&f.stack[1];h&&"Raven.captureException"===h.func&&(h=f.stack[2]);var i=h&&h.url||"";if((!this.l.ignoreUrls.test||!this.l.ignoreUrls.test(i))&&(!this.l.whitelistUrls.test||this.l.whitelistUrls.test(i))){if(this.l.stacktrace||b&&b.stacktrace){d.fingerprint=null==d.fingerprint?a:d.fingerprint,b=x({trimHeadFrames:0},b),b.trimHeadFrames+=1;var j=this.Y(f,b);d.stacktrace={frames:j.reverse()}}return d.fingerprint&&(d.fingerprint=u(d.fingerprint)?d.fingerprint:[d.fingerprint]),this.Z(d),this}}},captureBreadcrumb:function(a){var b=x({timestamp:d()/1e3},a);if(s(this.l.breadcrumbCallback)){var c=this.l.breadcrumbCallback(b);if(p(c)&&!v(c))b=c;else if(c===!1)return this}return this.v.push(b),this.v.length>this.l.maxBreadcrumbs&&this.v.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.s.push([a,b]),this.o&&this.G(),this},setUserContext:function(a){return this.k.user=a,this},setExtraContext:function(a){return this.$("extra",a),this},setTagsContext:function(a){return this.$("tags",a),this},clearContext:function(){return this.k={},this},getContext:function(){return JSON.parse(h(this.k))},setEnvironment:function(a){return this.l.environment=a,this},setRelease:function(a){return this.l.release=a,this},setDataCallback:function(a){var b=this.l.dataCallback;return this.l.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.l.breadcrumbCallback;return this.l.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.l.shouldSendCallback;return this.l.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.l.transport=a,this},lastException:function(){return this.e},lastEventId:function(){return this.g},isSetup:function(){return!!this.b&&(!!this.h||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.A("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=R.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(S){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.I;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.k.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.K(this.H(c)),h=S.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(S.head||S.body).appendChild(h)}},M:function(){var a=this;this.n+=1,setTimeout(function(){a.n-=1})},_:function(a,b){var c,d;if(this.c){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),S.createEvent?(c=S.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=S.createEventObject(),c.eventType=a);for(d in b)A(b,d)&&(c[d]=b[d]);if(S.createEvent)S.dispatchEvent(c);else try{S.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},aa:function(a){var b=this;return function(c){if(b.ba=null,b.w!==c){b.w=c;var d;try{d=E(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ca:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.ba;g||a.aa("input")(c),clearTimeout(g),a.ba=setTimeout(function(){a.ba=null},b)}}},da:function(a,b){var c=H(this.x.href),d=H(b),e=H(a);this.y=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},D:function(){var a=this;a.ea=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.N?a.ea.apply(this.P,arguments):a.ea.apply(this,arguments)}},R:function(){this.ea&&(Function.prototype.toString=this.ea)},E:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.da(b.y,c+""),a.apply(this,arguments)}};I(R.history,"pushState",j,d),I(R.history,"replaceState",j,d)}if(c.console&&"console"in R&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};w(["debug","info","warn","error","log"],function(a,b){O(console,b,k)})}},S:function(){for(var a;this.u.length;){a=this.u.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},T:function(){for(var a in this.r)this.q[a]=this.r[a]},G:function(){var a=this;w(this.s,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},H:function(a){var b=Q.exec(a),c={},d=7;try{for(;d--;)c[P[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.l.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},K:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},B:function(){this.n||this.W.apply(this,arguments)},W:function(a,b){var c=this.Y(a,b);this._("handle",{stackInfo:a,options:b}),this.ga(a.name,a.message,a.url,a.lineno,c,b)},Y:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(w(a.stack,function(b,e){var f=c.ha(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.v,0)}),this.k.user&&(a.user=this.k.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),a=this.qa(a),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||v(a[b]))&&delete a[b]}),s(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!v(a)&&(!s(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.na()?void this.A("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function F(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&l(b))for(c=b.split(/\s+/),f=0;fc?Q(a,b-1):d}function R(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?X:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function S(a,b){function c(a){return m(a)?a.map(function(a){return c(a)}):k(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!m(b)||m(b)&&0===b.length)return a;var d,e=A(b),f="********";try{d=JSON.parse(T(a))}catch(g){return a}return c(d)}var T=a(11),U="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},V=3,W=51200,X=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isDOMError:g,isDOMException:h,isUndefined:i,isFunction:j,isPlainObject:k,isString:l,isArray:m,isEmptyObject:n,supportsErrorEvent:o,supportsDOMError:p,supportsDOMException:q,supportsFetch:r,supportsReferrerPolicy:s,supportsPromiseRejectionEvent:t,wrappedCallback:u,each:v,objectMerge:w,truncate:y,objectFrozen:x,hasKey:z,joinRegExp:A,urlencode:B,uuid4:D,htmlTreeAsString:E,htmlElementAsString:F,isSameException:I,isSameStacktrace:J,parseUrl:C,fill:K,safeJoin:L,serializeException:Q,serializeKeysForMessage:R,sanitize:S}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{11:11}],10:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}function e(){return"undefined"==typeof document||null==document.location?"":(document.location.origin||(document.location.origin=document.location.protocol+"//"+document.location.hostname+(document.location.port?":"+document.location.port:"")),document.location.origin)}var f=a(9),g={collectWindowErrors:!0,debug:!1},h="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},i=[].slice,j="?",k=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;g.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function e(a,b){var c=null;if(!b||g.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(i.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,h,i){var l=null,m=f.isErrorEvent(i)?i.error:i,n=f.isErrorEvent(a)?a.message:a;if(v)g.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&f.isError(m))l=g.computeStackTrace(m),e(l,!0);else{var p,r={url:b,line:c,column:h},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(k);p&&(s=p[1],n=p[2])}r.func=j,l={name:s,message:n,url:d(),stack:[r]},e(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=h.onerror,h.onerror=l,r=!0)}function n(){r&&(h.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,e.apply(null,[a,!1].concat(b))}function p(a,b){var c=i.call(arguments,1);if(v){if(u===a)return;o()}var d=g.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),g.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,f,g=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,h=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,i=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,k=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,l=/\((\S*)(?::(\d+))(?::(\d+))\)/,m=a.stack.split("\n"),n=[],o=(/^(.*) is undefined$/.exec(a.message),0),p=m.length;o":"anonymous component")+(a._isVue&&a.$options.__file?" at "+a.$options.__file:"")}function e(a,b){if(b=b||window.Vue,b&&b.config){var c=b.config.errorHandler;b.config.errorHandler=function(b,e,f){var g={};"[object Object]"===Object.prototype.toString.call(e)&&(g.componentName=d(e),g.propsData=e.$options.propsData),"undefined"!=typeof f&&(g.lifecycleHook=f),a.captureException(b,{extra:g}),"function"==typeof c&&c.call(this,b,e,f)}}}b.exports=e,a(8).addPlugin(b.exports)},{8:8}],5:[function(a,b,c){function d(a){this.name="RavenConfigError",this.message=a}d.prototype=new Error,d.prototype.constructor=d,b.exports=d},{}],6:[function(a,b,c){var d=a(9),e=function(a,b,c){var e=a[b],f=a;if(b in a){var g="warn"===b?"warning":b;a[b]=function(){var a=[].slice.call(arguments),h=d.safeJoin(a," "),i={level:g,logger:"console",extra:{arguments:a}};"assert"===b?a[0]===!1&&(h="Assertion failed: "+(d.safeJoin(a.slice(1)," ")||"console.assert"),i.extra.arguments=a.slice(1),c&&c(h,i)):c&&c(h,i),e&&Function.prototype.apply.call(e,f,a)}}};b.exports={wrapMethod:e}},{9:9}],7:[function(a,b,c){(function(c){function d(){return+new Date}function e(a,b){return s(b)?function(c){return b(c,a)}:b}function f(){this.b=!("object"!=typeof JSON||!JSON.stringify),this.c=!r(S),this.d=!r(T),this.e=null,this.f=null,this.g=null,this.h=null,this.i=null,this.j=null,this.k={},this.l={release:R.SENTRY_RELEASE&&R.SENTRY_RELEASE.id,logger:"javascript",ignoreErrors:[],ignoreUrls:[],whitelistUrls:[],includePaths:[],headers:null,collectWindowErrors:!0,captureUnhandledRejections:!0,maxMessageLength:0,maxUrlLength:250,stackTraceLimit:50,autoBreadcrumbs:!0,instrument:!0,sampleRate:1,sanitizeKeys:[]},this.m={method:"POST",keepalive:!0,referrerPolicy:K()?"origin":""},this.n=0,this.o=!1,this.p=Error.stackTraceLimit,this.q=R.console||{},this.r={},this.s=[],this.t=d(),this.u=[],this.v=[],this.w=null,this.x=R.location,this.y=this.x&&this.x.href,this.z();for(var a in this.q)this.r[a]=this.q[a]}var g=a(10),h=a(11),i=a(12),j=a(5),k=a(9),l=k.isErrorEvent,m=k.isDOMError,n=k.isDOMException,o=k.isError,p=k.isObject,q=k.isPlainObject,r=k.isUndefined,s=k.isFunction,t=k.isString,u=k.isArray,v=k.isEmptyObject,w=k.each,x=k.objectMerge,y=k.truncate,z=k.objectFrozen,A=k.hasKey,B=k.joinRegExp,C=k.urlencode,D=k.uuid4,E=k.htmlTreeAsString,F=k.isSameException,G=k.isSameStacktrace,H=k.parseUrl,I=k.fill,J=k.supportsFetch,K=k.supportsReferrerPolicy,L=k.serializeKeysForMessage,M=k.serializeException,N=k.sanitize,O=a(6).wrapMethod,P="source protocol user pass host port path".split(" "),Q=/^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/,R="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},S=R.document,T=R.navigator;f.prototype={VERSION:"3.25.2",debug:!1,TraceKit:g,config:function(a,b){var c=this;if(c.h)return this.A("error","Error: Raven has already been configured"),c;if(!a)return c;var d=c.l;b&&w(b,function(a,b){"tags"===a||"extra"===a||"user"===a?c.k[a]=b:d[a]=b}),c.setDSN(a),d.ignoreErrors.push(/^Script error\.?$/),d.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/),d.ignoreErrors=B(d.ignoreErrors),d.ignoreUrls=!!d.ignoreUrls.length&&B(d.ignoreUrls),d.whitelistUrls=!!d.whitelistUrls.length&&B(d.whitelistUrls),d.includePaths=B(d.includePaths),d.maxBreadcrumbs=Math.max(0,Math.min(d.maxBreadcrumbs||100,100));var e={xhr:!0,console:!0,dom:!0,location:!0,sentry:!0},f=d.autoBreadcrumbs;"[object Object]"==={}.toString.call(f)?f=x(e,f):f!==!1&&(f=e),d.autoBreadcrumbs=f;var h={tryCatch:!0},i=d.instrument;return"[object Object]"==={}.toString.call(i)?i=x(h,i):i!==!1&&(i=h),d.instrument=i,g.collectWindowErrors=!!d.collectWindowErrors,c},install:function(){var a=this;return a.isSetup()&&!a.o&&(g.report.subscribe(function(){a.B.apply(a,arguments)}),a.l.captureUnhandledRejections&&a.C(),a.D(),a.l.instrument&&a.l.instrument.tryCatch&&a.E(),a.l.autoBreadcrumbs&&a.F(),a.G(),a.o=!0),Error.stackTraceLimit=a.l.stackTraceLimit,this},setDSN:function(a){var b=this,c=b.H(a),d=c.path.lastIndexOf("/"),e=c.path.substr(1,d);b.I=a,b.i=c.user,b.J=c.pass&&c.pass.substr(1),b.j=c.path.substr(d+1),b.h=b.K(c),b.L=b.h+"/"+e+"api/"+b.j+"/store/",this.z()},context:function(a,b,c){return s(a)&&(c=b||[],b=a,a=void 0),this.wrap(a,b).apply(this,c)},wrap:function(a,b,c){function d(){var d=[],f=arguments.length,g=!a||a&&a.deep!==!1;for(c&&s(c)&&c.apply(this,arguments);f--;)d[f]=g?e.wrap(a,arguments[f]):arguments[f];try{return b.apply(this,d)}catch(h){throw e.M(),e.captureException(h,a),h}}var e=this;if(r(b)&&!s(a))return a;if(s(a)&&(b=a,a=void 0),!s(b))return b;try{if(b.N)return b;if(b.O)return b.O}catch(f){return b}for(var g in b)A(b,g)&&(d[g]=b[g]);return d.prototype=b.prototype,b.O=d,d.N=!0,d.P=b,d},uninstall:function(){return g.report.uninstall(),this.Q(),this.R(),this.S(),this.T(),Error.stackTraceLimit=this.p,this.o=!1,this},U:function(a){this.A("debug","Raven caught unhandled promise rejection:",a),this.captureException(a.reason,{extra:{unhandledPromiseRejection:!0}})},C:function(){return this.U=this.U.bind(this),R.addEventListener&&R.addEventListener("unhandledrejection",this.U),this},Q:function(){return R.removeEventListener&&R.removeEventListener("unhandledrejection",this.U),this},captureException:function(a,b){if(b=x({trimHeadFrames:0},b?b:{}),l(a)&&a.error)a=a.error;else{if(m(a)||n(a)){var c=a.name||(m(a)?"DOMError":"DOMException"),d=a.message?c+": "+a.message:c;return this.captureMessage(d,x(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}))}if(o(a))a=a;else{if(!q(a))return this.captureMessage(a,x(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}));b=this.V(b,a),a=new Error(b.message)}}this.e=a;try{var e=g.computeStackTrace(a);this.W(e,b)}catch(f){if(a!==f)throw f}return this},V:function(a,b){var c=Object.keys(b).sort(),d=x(a,{message:"Non-Error exception captured with keys: "+L(c),fingerprint:[i(c)],extra:a.extra||{}});return d.extra.X=M(b),d},captureMessage:function(a,b){if(!this.l.ignoreErrors.test||!this.l.ignoreErrors.test(a)){b=b||{},a+="";var c,d=x({message:a},b);try{throw new Error(a)}catch(e){c=e}c.name=null;var f=g.computeStackTrace(c),h=u(f.stack)&&f.stack[1];h&&"Raven.captureException"===h.func&&(h=f.stack[2]);var i=h&&h.url||"";if((!this.l.ignoreUrls.test||!this.l.ignoreUrls.test(i))&&(!this.l.whitelistUrls.test||this.l.whitelistUrls.test(i))){if(this.l.stacktrace||b&&b.stacktrace){d.fingerprint=null==d.fingerprint?a:d.fingerprint,b=x({trimHeadFrames:0},b),b.trimHeadFrames+=1;var j=this.Y(f,b);d.stacktrace={frames:j.reverse()}}return d.fingerprint&&(d.fingerprint=u(d.fingerprint)?d.fingerprint:[d.fingerprint]),this.Z(d),this}}},captureBreadcrumb:function(a){var b=x({timestamp:d()/1e3},a);if(s(this.l.breadcrumbCallback)){var c=this.l.breadcrumbCallback(b);if(p(c)&&!v(c))b=c;else if(c===!1)return this}return this.v.push(b),this.v.length>this.l.maxBreadcrumbs&&this.v.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.s.push([a,b]),this.o&&this.G(),this},setUserContext:function(a){return this.k.user=a,this},setExtraContext:function(a){return this.$("extra",a),this},setTagsContext:function(a){return this.$("tags",a),this},clearContext:function(){return this.k={},this},getContext:function(){return JSON.parse(h(this.k))},setEnvironment:function(a){return this.l.environment=a,this},setRelease:function(a){return this.l.release=a,this},setDataCallback:function(a){var b=this.l.dataCallback;return this.l.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.l.breadcrumbCallback;return this.l.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.l.shouldSendCallback;return this.l.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.l.transport=a,this},lastException:function(){return this.e},lastEventId:function(){return this.g},isSetup:function(){return!!this.b&&(!!this.h||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.A("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=R.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(S){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.I;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.k.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.K(this.H(c)),h=S.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(S.head||S.body).appendChild(h)}},M:function(){var a=this;this.n+=1,setTimeout(function(){a.n-=1})},_:function(a,b){var c,d;if(this.c){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),S.createEvent?(c=S.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=S.createEventObject(),c.eventType=a);for(d in b)A(b,d)&&(c[d]=b[d]);if(S.createEvent)S.dispatchEvent(c);else try{S.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},aa:function(a){var b=this;return function(c){if(b.ba=null,b.w!==c){b.w=c;var d;try{d=E(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ca:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.ba;g||a.aa("input")(c),clearTimeout(g),a.ba=setTimeout(function(){a.ba=null},b)}}},da:function(a,b){var c=H(this.x.href),d=H(b),e=H(a);this.y=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},D:function(){var a=this;a.ea=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.N?a.ea.apply(this.P,arguments):a.ea.apply(this,arguments)}},R:function(){this.ea&&(Function.prototype.toString=this.ea)},E:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.da(b.y,c+""),a.apply(this,arguments)}};I(R.history,"pushState",j,d),I(R.history,"replaceState",j,d)}if(c.console&&"console"in R&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};w(["debug","info","warn","error","log"],function(a,b){O(console,b,k)})}},S:function(){for(var a;this.u.length;){a=this.u.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},T:function(){for(var a in this.r)this.q[a]=this.r[a]},G:function(){var a=this;w(this.s,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},H:function(a){var b=Q.exec(a),c={},d=7;try{for(;d--;)c[P[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.l.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},K:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},B:function(){this.n||this.W.apply(this,arguments)},W:function(a,b){var c=this.Y(a,b);this._("handle",{stackInfo:a,options:b}),this.ga(a.name,a.message,a.url,a.lineno,c,b)},Y:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(w(a.stack,function(b,e){var f=c.ha(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.v,0)}),this.k.user&&(a.user=this.k.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),a=this.qa(a),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||v(a[b]))&&delete a[b]}),s(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!v(a)&&(!s(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.na()?void this.A("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function F(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&l(b))for(c=b.split(/\s+/),f=0;fc?Q(a,b-1):d}function R(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?X:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function S(a,b){function c(a){return m(a)?a.map(function(a){return c(a)}):k(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!m(b)||m(b)&&0===b.length)return a;var d,e=A(b),f="********";try{d=JSON.parse(T(a))}catch(g){return a}return c(d)}var T=a(11),U="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},V=3,W=51200,X=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isDOMError:g,isDOMException:h,isUndefined:i,isFunction:j,isPlainObject:k,isString:l,isArray:m,isEmptyObject:n,supportsErrorEvent:o,supportsDOMError:p,supportsDOMException:q,supportsFetch:r,supportsReferrerPolicy:s,supportsPromiseRejectionEvent:t,wrappedCallback:u,each:v,objectMerge:w,truncate:y,objectFrozen:x,hasKey:z,joinRegExp:A,urlencode:B,uuid4:D,htmlTreeAsString:E,htmlElementAsString:F,isSameException:I,isSameStacktrace:J,parseUrl:C,fill:K,safeJoin:L,serializeException:Q,serializeKeysForMessage:R,sanitize:S}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{11:11}],10:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}function e(){return"undefined"==typeof document||null==document.location?"":(document.location.origin||(document.location.origin=document.location.protocol+"//"+document.location.hostname+(document.location.port?":"+document.location.port:"")),document.location.origin)}var f=a(9),g={collectWindowErrors:!0,debug:!1},h="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},i=[].slice,j="?",k=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;g.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function e(a,b){var c=null;if(!b||g.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(i.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,h,i){var l=null,m=f.isErrorEvent(i)?i.error:i,n=f.isErrorEvent(a)?a.message:a;if(v)g.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&f.isError(m))l=g.computeStackTrace(m),e(l,!0);else{var p,r={url:b,line:c,column:h},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(k);p&&(s=p[1],n=p[2])}r.func=j,l={name:s,message:n,url:d(),stack:[r]},e(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=h.onerror,h.onerror=l,r=!0)}function n(){r&&(h.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,e.apply(null,[a,!1].concat(b))}function p(a,b){var c=i.call(arguments,1);if(v){if(u===a)return;o()}var d=g.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),g.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,f,g=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,h=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,i=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,k=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,l=/\((\S*)(?::(\d+))(?::(\d+))\)/,m=a.stack.split("\n"),n=[],o=(/^(.*) is undefined$/.exec(a.message),0),p=m.length;o eval")>-1;r&&(b=k.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==o||c[5]||"undefined"==typeof a.columnNumber||(n[0].column=a.columnNumber+1),f={url:c[3],func:c[1]||j,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}if(!f.func&&f.line&&(f.func=j),f.url&&"blob:"===f.url.substr(0,5)){var s=new XMLHttpRequest;if(s.open("GET",f.url,!1),s.send(null),200===s.status){var t=s.responseText||"";t=t.slice(-300);var u=t.match(/\/\/# sourceMappingURL=(.*)$/);if(u){var v=u[1];"~"===v.charAt(0)&&(v=e()+v.slice(1)),f.url=v.slice(0,-4)}}}n.push(f)}return n.length?{name:a.name,message:a.message,url:d(),stack:n}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=j),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,e){for(var h,i,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==f&&o!==g.report){if(i={url:null,func:j,line:null,column:null},o.name?i.func=o.name:(h=k.exec(o.toString()))&&(i.func=h[1]),"undefined"==typeof i.func)try{i.func=h.input.substring(0,h.input.indexOf("{"))}catch(p){}m[""+o]?n=!0:m[""+o]=!0,l.push(i)}e&&l.splice(0,e);var q={name:a.name,message:a.message,url:d(),stack:l};return b(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),q}function f(b,e){var f=null;e=null==e?0:+e;try{if(f=a(b))return f}catch(h){if(g.debug)throw h}try{if(f=c(b,e+1))return f}catch(h){if(g.debug)throw h}return{name:b.name,message:b.message,url:d()}}return f.augmentStackTraceWithInitialElement=b,f.computeStackTraceFromStackProp=a,f}(),b.exports=g}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{9:9}],11:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}],12:[function(a,b,c){function d(a,b){var c=(65535&a)+(65535&b),d=(a>>16)+(b>>16)+(c>>16);return d<<16|65535&c}function e(a,b){return a<>>32-b}function f(a,b,c,f,g,h){return d(e(d(d(b,a),d(f,h)),g),c)}function g(a,b,c,d,e,g,h){return f(b&c|~b&d,a,b,e,g,h)}function h(a,b,c,d,e,g,h){return f(b&d|c&~d,a,b,e,g,h)}function i(a,b,c,d,e,g,h){return f(b^c^d,a,b,e,g,h)}function j(a,b,c,d,e,g,h){return f(c^(b|~d),a,b,e,g,h)}function k(a,b){a[b>>5]|=128<>>9<<4)+14]=b;var c,e,f,k,l,m=1732584193,n=-271733879,o=-1732584194,p=271733878;for(c=0;c>5]>>>b%32&255);return c}function m(a){var b,c=[];for(c[(a.length>>2)-1]=void 0,b=0;b>5]|=(255&a.charCodeAt(b/8))<16&&(e=k(e,8*a.length)),c=0;c<16;c+=1)f[c]=909522486^e[c],g[c]=1549556828^e[c];return d=k(f.concat(m(b)),512+8*b.length),l(k(g.concat(d),640))}function p(a){var b,c,d="0123456789abcdef",e="";for(c=0;c>>4&15)+d.charAt(15&b);return e}function q(a){return unescape(encodeURIComponent(a))}function r(a){return n(q(a))}function s(a){return p(r(a))}function t(a,b){return o(q(a),q(b))}function u(a,b){return p(t(a,b))}function v(a,b,c){return b?c?t(b,a):u(b,a):c?r(a):s(a)}b.exports=v},{}]},{},[8,1,2,3,4])(8)}); //# sourceMappingURL=raven.min.js.map \ No newline at end of file diff --git a/dist/angular,console,require,vue/raven.min.js.map b/dist/angular,console,require,vue/raven.min.js.map index d1debb488689..8417907bb4e5 100644 --- a/dist/angular,console,require,vue/raven.min.js.map +++ b/dist/angular,console,require,vue/raven.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","angularPlugin","angular","RavenProvider","$get","$window","ExceptionHandlerProvider","$provide","decorator","exceptionHandler","R","$delegate","ex","cause","captureException","extra","moduleName","provider","config","setDataCallback","wrappedCallback","data","_normalizeData","angularPattern","exception","values","matches","exec","value","type","message","angularDocs","substr","addPlugin","8","9","2","consolePlugin","console","pluginOptions","logLevels","levels","push","callback","msg","captureMessage","level","pop","wrapConsoleMethod","wrapMethod","6","3","requirePlugin","wrap","deep","4","formatComponentName","vm","$root","name","_isVue","$options","_componentTag","__file","vuePlugin","Vue","_oldOnError","errorHandler","error","info","metaData","Object","prototype","toString","componentName","propsData","lifecycleHook","5","RavenConfigError","constructor","utils","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","safeJoin","logger","Function","apply","7","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","sanitizeKeys","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isErrorEvent","isDOMError","isDOMException","isError","isObject","isPlainObject","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","sanitize","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","dsn","options","_logDebug","globalOptions","key","setDSN","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","context","func","undefined","_before","wrapped","_ignoreNextOnError","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","U","event","reason","unhandledPromiseRejection","C","_promiseRejectionHandler","bind","addEventListener","Q","removeEventListener","trimHeadFrames","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","V","currentOptions","exKeys","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","M","setTimeout","_","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","aa","evtName","_keypressTimeout","target","category","ca","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","da","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","D","_originalFunctionToString","E","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","F","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","S","builtin","T","G","installer","concat","H","str","m","allowSecretKey","K","port","B","W","stackInfo","_triggerEvent","_processException","lineno","Y","frame","_normalizeFrame","in_app","ha","stackInfoUrl","normalized","filename","line","colno","column","function","ga","prefixedMessage","culprit","ia","request","Referer","breadcrumbs","_trimBreadcrumbs","ja","urlProp","urlProps","ka","httpData","userAgent","User-Agent","referrer","z","_backoffDuration","_backoffStart","na","oa","current","last","pa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Z","baseData","project","platform","_getHttpData","serverName","server_name","_sanitizeData","forEach","random","_sendProcessedPayload","qa","sa","ra","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","ta","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","onerror","open","setRequestHeader","send","ua","hash","evaluated","A","$","setUser","setReleaseContext","10","11","12","RavenConstructor","_Raven","noConflict","Client","what","supportsErrorEvent","ErrorEvent","supportsDOMError","DOMError","supportsDOMException","DOMException","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","sanitizeMask","safeInput","o_O","getLocationHref","getLocationOrigin","origin","hostname","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","responseText","sourceMaps","sourceMapAddress","charAt","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","y","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","string","raw"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file +{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","angularPlugin","angular","RavenProvider","$get","$window","ExceptionHandlerProvider","$provide","decorator","exceptionHandler","R","$delegate","ex","cause","captureException","extra","moduleName","provider","config","setDataCallback","wrappedCallback","data","_normalizeData","angularPattern","exception","values","matches","exec","value","type","message","angularDocs","substr","addPlugin","8","9","2","consolePlugin","console","pluginOptions","logLevels","levels","push","callback","msg","captureMessage","level","pop","wrapConsoleMethod","wrapMethod","6","3","requirePlugin","wrap","deep","4","formatComponentName","vm","$root","name","_isVue","$options","_componentTag","__file","vuePlugin","Vue","_oldOnError","errorHandler","error","info","metaData","Object","prototype","toString","componentName","propsData","lifecycleHook","5","RavenConfigError","constructor","utils","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","safeJoin","logger","Function","apply","7","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","sanitizeKeys","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isErrorEvent","isDOMError","isDOMException","isError","isObject","isPlainObject","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","sanitize","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","dsn","options","_logDebug","globalOptions","key","setDSN","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","context","func","undefined","_before","wrapped","_ignoreNextOnError","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","U","event","reason","unhandledPromiseRejection","C","_promiseRejectionHandler","bind","addEventListener","Q","removeEventListener","trimHeadFrames","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","V","currentOptions","exKeys","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","M","setTimeout","_","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","aa","evtName","_keypressTimeout","target","category","ca","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","da","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","D","_originalFunctionToString","E","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","F","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","S","builtin","T","G","installer","concat","H","str","m","allowSecretKey","K","port","B","W","stackInfo","_triggerEvent","_processException","lineno","Y","frame","_normalizeFrame","in_app","ha","stackInfoUrl","normalized","filename","line","colno","column","function","ga","prefixedMessage","transaction","ia","request","Referer","breadcrumbs","_trimBreadcrumbs","ja","urlProp","urlProps","ka","httpData","userAgent","User-Agent","referrer","z","_backoffDuration","_backoffStart","na","oa","current","last","pa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Z","baseData","project","platform","_getHttpData","serverName","server_name","_sanitizeData","forEach","random","_sendProcessedPayload","qa","sa","ra","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","ta","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","onerror","open","setRequestHeader","send","ua","hash","evaluated","A","$","setUser","setReleaseContext","10","11","12","RavenConstructor","_Raven","noConflict","Client","what","supportsErrorEvent","ErrorEvent","supportsDOMError","DOMError","supportsDOMException","DOMException","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","sanitizeMask","safeInput","o_O","getLocationHref","getLocationOrigin","origin","hostname","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","responseText","sourceMaps","sourceMapAddress","charAt","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","y","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","string","raw"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file diff --git a/dist/angular,console,require/raven.js b/dist/angular,console,require/raven.js index 6ec82a09a127..8cfe6da0a7b8 100644 --- a/dist/angular,console,require/raven.js +++ b/dist/angular,console,require/raven.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.25.1 (b6f3c7a) | github.com/getsentry/raven-js */ +/*! Raven.js 3.25.2 (30b6d4e) | github.com/getsentry/raven-js */ /* * Includes TraceKit @@ -246,7 +246,11 @@ function now() { var _window = typeof window !== 'undefined' ? window - : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; + : typeof global !== 'undefined' + ? global + : typeof self !== 'undefined' + ? self + : {}; var _document = _window.document; var _navigator = _window.navigator; @@ -336,7 +340,7 @@ Raven.prototype = { // webpack (using a build step causes webpack #1617). Grunt verifies that // this value matches package.json during build. // See: https://github.com/getsentry/raven-js/issues/465 - VERSION: '3.25.1', + VERSION: '3.25.2', debug: false, @@ -1892,7 +1896,7 @@ Raven.prototype = { } ] }, - culprit: fileurl + transaction: fileurl }, options ); @@ -2007,7 +2011,7 @@ Raven.prototype = { if ( !last || current.message !== last.message || // defined for captureMessage - current.culprit !== last.culprit // defined for captureException/onerror + current.transaction !== last.transaction // defined for captureException/onerror ) return false; diff --git a/dist/angular,console,require/raven.min.js b/dist/angular,console,require/raven.min.js index b21fe9480db1..adc0e34af671 100644 --- a/dist/angular,console,require/raven.min.js +++ b/dist/angular,console,require/raven.min.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.25.1 (b6f3c7a) | github.com/getsentry/raven-js */ -!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.Raven=a()}}(function(){var a;return function b(a,c,d){function e(g,h){if(!c[g]){if(!a[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};a[g][0].call(k.exports,function(b){var c=a[g][1][b];return e(c?c:b)},k,k.exports,b,a,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;gthis.l.maxBreadcrumbs&&this.v.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.s.push([a,b]),this.o&&this.G(),this},setUserContext:function(a){return this.k.user=a,this},setExtraContext:function(a){return this.$("extra",a),this},setTagsContext:function(a){return this.$("tags",a),this},clearContext:function(){return this.k={},this},getContext:function(){return JSON.parse(h(this.k))},setEnvironment:function(a){return this.l.environment=a,this},setRelease:function(a){return this.l.release=a,this},setDataCallback:function(a){var b=this.l.dataCallback;return this.l.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.l.breadcrumbCallback;return this.l.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.l.shouldSendCallback;return this.l.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.l.transport=a,this},lastException:function(){return this.e},lastEventId:function(){return this.g},isSetup:function(){return!!this.b&&(!!this.h||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.A("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=R.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(S){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.I;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.k.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.K(this.H(c)),h=S.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(S.head||S.body).appendChild(h)}},M:function(){var a=this;this.n+=1,setTimeout(function(){a.n-=1})},_:function(a,b){var c,d;if(this.c){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),S.createEvent?(c=S.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=S.createEventObject(),c.eventType=a);for(d in b)A(b,d)&&(c[d]=b[d]);if(S.createEvent)S.dispatchEvent(c);else try{S.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},aa:function(a){var b=this;return function(c){if(b.ba=null,b.w!==c){b.w=c;var d;try{d=E(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ca:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.ba;g||a.aa("input")(c),clearTimeout(g),a.ba=setTimeout(function(){a.ba=null},b)}}},da:function(a,b){var c=H(this.x.href),d=H(b),e=H(a);this.y=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},D:function(){var a=this;a.ea=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.N?a.ea.apply(this.P,arguments):a.ea.apply(this,arguments)}},R:function(){this.ea&&(Function.prototype.toString=this.ea)},E:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.da(b.y,c+""),a.apply(this,arguments)}};I(R.history,"pushState",j,d),I(R.history,"replaceState",j,d)}if(c.console&&"console"in R&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};w(["debug","info","warn","error","log"],function(a,b){O(console,b,k)})}},S:function(){for(var a;this.u.length;){a=this.u.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},T:function(){for(var a in this.r)this.q[a]=this.r[a]},G:function(){var a=this;w(this.s,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},H:function(a){var b=Q.exec(a),c={},d=7;try{for(;d--;)c[P[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.l.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},K:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},B:function(){this.n||this.W.apply(this,arguments)},W:function(a,b){var c=this.Y(a,b);this._("handle",{stackInfo:a,options:b}),this.ga(a.name,a.message,a.url,a.lineno,c,b)},Y:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(w(a.stack,function(b,e){var f=c.ha(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.v,0)}),this.k.user&&(a.user=this.k.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),a=this.qa(a),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||v(a[b]))&&delete a[b]}),s(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!v(a)&&(!s(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.na()?void this.A("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function F(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&l(b))for(c=b.split(/\s+/),f=0;fc?Q(a,b-1):d}function R(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?X:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function S(a,b){function c(a){return m(a)?a.map(function(a){return c(a)}):k(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!m(b)||m(b)&&0===b.length)return a;var d,e=A(b),f="********";try{d=JSON.parse(T(a))}catch(g){return a}return c(d)}var T=a(10),U="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},V=3,W=51200,X=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isDOMError:g,isDOMException:h,isUndefined:i,isFunction:j,isPlainObject:k,isString:l,isArray:m,isEmptyObject:n,supportsErrorEvent:o,supportsDOMError:p,supportsDOMException:q,supportsFetch:r,supportsReferrerPolicy:s,supportsPromiseRejectionEvent:t,wrappedCallback:u,each:v,objectMerge:w,truncate:y,objectFrozen:x,hasKey:z,joinRegExp:A,urlencode:B,uuid4:D,htmlTreeAsString:E,htmlElementAsString:F,isSameException:I,isSameStacktrace:J,parseUrl:C,fill:K,safeJoin:L,serializeException:Q,serializeKeysForMessage:R,sanitize:S}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{10:10}],9:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}function e(){return"undefined"==typeof document||null==document.location?"":(document.location.origin||(document.location.origin=document.location.protocol+"//"+document.location.hostname+(document.location.port?":"+document.location.port:"")),document.location.origin)}var f=a(8),g={collectWindowErrors:!0,debug:!1},h="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},i=[].slice,j="?",k=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;g.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function e(a,b){var c=null;if(!b||g.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(i.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,h,i){var l=null,m=f.isErrorEvent(i)?i.error:i,n=f.isErrorEvent(a)?a.message:a;if(v)g.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&f.isError(m))l=g.computeStackTrace(m),e(l,!0);else{var p,r={url:b,line:c,column:h},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(k);p&&(s=p[1],n=p[2])}r.func=j,l={name:s,message:n,url:d(),stack:[r]},e(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=h.onerror,h.onerror=l,r=!0)}function n(){r&&(h.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,e.apply(null,[a,!1].concat(b))}function p(a,b){var c=i.call(arguments,1);if(v){if(u===a)return;o()}var d=g.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),g.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,f,g=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,h=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,i=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,k=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,l=/\((\S*)(?::(\d+))(?::(\d+))\)/,m=a.stack.split("\n"),n=[],o=(/^(.*) is undefined$/.exec(a.message),0),p=m.length;o eval")>-1;r&&(b=k.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==o||c[5]||"undefined"==typeof a.columnNumber||(n[0].column=a.columnNumber+1),f={url:c[3],func:c[1]||j,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}if(!f.func&&f.line&&(f.func=j),f.url&&"blob:"===f.url.substr(0,5)){var s=new XMLHttpRequest;if(s.open("GET",f.url,!1),s.send(null),200===s.status){var t=s.responseText||"";t=t.slice(-300);var u=t.match(/\/\/# sourceMappingURL=(.*)$/);if(u){var v=u[1];"~"===v.charAt(0)&&(v=e()+v.slice(1)),f.url=v.slice(0,-4)}}}n.push(f)}return n.length?{name:a.name,message:a.message, -url:d(),stack:n}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=j),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,e){for(var h,i,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==f&&o!==g.report){if(i={url:null,func:j,line:null,column:null},o.name?i.func=o.name:(h=k.exec(o.toString()))&&(i.func=h[1]),"undefined"==typeof i.func)try{i.func=h.input.substring(0,h.input.indexOf("{"))}catch(p){}m[""+o]?n=!0:m[""+o]=!0,l.push(i)}e&&l.splice(0,e);var q={name:a.name,message:a.message,url:d(),stack:l};return b(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),q}function f(b,e){var f=null;e=null==e?0:+e;try{if(f=a(b))return f}catch(h){if(g.debug)throw h}try{if(f=c(b,e+1))return f}catch(h){if(g.debug)throw h}return{name:b.name,message:b.message,url:d()}}return f.augmentStackTraceWithInitialElement=b,f.computeStackTraceFromStackProp=a,f}(),b.exports=g}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{8:8}],10:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}],11:[function(a,b,c){function d(a,b){var c=(65535&a)+(65535&b),d=(a>>16)+(b>>16)+(c>>16);return d<<16|65535&c}function e(a,b){return a<>>32-b}function f(a,b,c,f,g,h){return d(e(d(d(b,a),d(f,h)),g),c)}function g(a,b,c,d,e,g,h){return f(b&c|~b&d,a,b,e,g,h)}function h(a,b,c,d,e,g,h){return f(b&d|c&~d,a,b,e,g,h)}function i(a,b,c,d,e,g,h){return f(b^c^d,a,b,e,g,h)}function j(a,b,c,d,e,g,h){return f(c^(b|~d),a,b,e,g,h)}function k(a,b){a[b>>5]|=128<>>9<<4)+14]=b;var c,e,f,k,l,m=1732584193,n=-271733879,o=-1732584194,p=271733878;for(c=0;c>5]>>>b%32&255);return c}function m(a){var b,c=[];for(c[(a.length>>2)-1]=void 0,b=0;b>5]|=(255&a.charCodeAt(b/8))<16&&(e=k(e,8*a.length)),c=0;c<16;c+=1)f[c]=909522486^e[c],g[c]=1549556828^e[c];return d=k(f.concat(m(b)),512+8*b.length),l(k(g.concat(d),640))}function p(a){var b,c,d="0123456789abcdef",e="";for(c=0;c>>4&15)+d.charAt(15&b);return e}function q(a){return unescape(encodeURIComponent(a))}function r(a){return n(q(a))}function s(a){return p(r(a))}function t(a,b){return o(q(a),q(b))}function u(a,b){return p(t(a,b))}function v(a,b,c){return b?c?t(b,a):u(b,a):c?r(a):s(a)}b.exports=v},{}]},{},[7,1,2,3])(7)}); +/*! Raven.js 3.25.2 (30b6d4e) | github.com/getsentry/raven-js */ +!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.Raven=a()}}(function(){var a;return function b(a,c,d){function e(g,h){if(!c[g]){if(!a[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};a[g][0].call(k.exports,function(b){var c=a[g][1][b];return e(c?c:b)},k,k.exports,b,a,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;gthis.l.maxBreadcrumbs&&this.v.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.s.push([a,b]),this.o&&this.G(),this},setUserContext:function(a){return this.k.user=a,this},setExtraContext:function(a){return this.$("extra",a),this},setTagsContext:function(a){return this.$("tags",a),this},clearContext:function(){return this.k={},this},getContext:function(){return JSON.parse(h(this.k))},setEnvironment:function(a){return this.l.environment=a,this},setRelease:function(a){return this.l.release=a,this},setDataCallback:function(a){var b=this.l.dataCallback;return this.l.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.l.breadcrumbCallback;return this.l.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.l.shouldSendCallback;return this.l.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.l.transport=a,this},lastException:function(){return this.e},lastEventId:function(){return this.g},isSetup:function(){return!!this.b&&(!!this.h||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.A("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=R.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(S){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.I;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.k.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.K(this.H(c)),h=S.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(S.head||S.body).appendChild(h)}},M:function(){var a=this;this.n+=1,setTimeout(function(){a.n-=1})},_:function(a,b){var c,d;if(this.c){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),S.createEvent?(c=S.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=S.createEventObject(),c.eventType=a);for(d in b)A(b,d)&&(c[d]=b[d]);if(S.createEvent)S.dispatchEvent(c);else try{S.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},aa:function(a){var b=this;return function(c){if(b.ba=null,b.w!==c){b.w=c;var d;try{d=E(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ca:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.ba;g||a.aa("input")(c),clearTimeout(g),a.ba=setTimeout(function(){a.ba=null},b)}}},da:function(a,b){var c=H(this.x.href),d=H(b),e=H(a);this.y=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},D:function(){var a=this;a.ea=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.N?a.ea.apply(this.P,arguments):a.ea.apply(this,arguments)}},R:function(){this.ea&&(Function.prototype.toString=this.ea)},E:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.da(b.y,c+""),a.apply(this,arguments)}};I(R.history,"pushState",j,d),I(R.history,"replaceState",j,d)}if(c.console&&"console"in R&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};w(["debug","info","warn","error","log"],function(a,b){O(console,b,k)})}},S:function(){for(var a;this.u.length;){a=this.u.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},T:function(){for(var a in this.r)this.q[a]=this.r[a]},G:function(){var a=this;w(this.s,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},H:function(a){var b=Q.exec(a),c={},d=7;try{for(;d--;)c[P[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.l.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},K:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},B:function(){this.n||this.W.apply(this,arguments)},W:function(a,b){var c=this.Y(a,b);this._("handle",{stackInfo:a,options:b}),this.ga(a.name,a.message,a.url,a.lineno,c,b)},Y:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(w(a.stack,function(b,e){var f=c.ha(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.v,0)}),this.k.user&&(a.user=this.k.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),a=this.qa(a),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||v(a[b]))&&delete a[b]}),s(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!v(a)&&(!s(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.na()?void this.A("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function F(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&l(b))for(c=b.split(/\s+/),f=0;fc?Q(a,b-1):d}function R(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?X:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function S(a,b){function c(a){return m(a)?a.map(function(a){return c(a)}):k(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!m(b)||m(b)&&0===b.length)return a;var d,e=A(b),f="********";try{d=JSON.parse(T(a))}catch(g){return a}return c(d)}var T=a(10),U="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},V=3,W=51200,X=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isDOMError:g,isDOMException:h,isUndefined:i,isFunction:j,isPlainObject:k,isString:l,isArray:m,isEmptyObject:n,supportsErrorEvent:o,supportsDOMError:p,supportsDOMException:q,supportsFetch:r,supportsReferrerPolicy:s,supportsPromiseRejectionEvent:t,wrappedCallback:u,each:v,objectMerge:w,truncate:y,objectFrozen:x,hasKey:z,joinRegExp:A,urlencode:B,uuid4:D,htmlTreeAsString:E,htmlElementAsString:F,isSameException:I,isSameStacktrace:J,parseUrl:C,fill:K,safeJoin:L,serializeException:Q,serializeKeysForMessage:R,sanitize:S}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{10:10}],9:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}function e(){return"undefined"==typeof document||null==document.location?"":(document.location.origin||(document.location.origin=document.location.protocol+"//"+document.location.hostname+(document.location.port?":"+document.location.port:"")),document.location.origin)}var f=a(8),g={collectWindowErrors:!0,debug:!1},h="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},i=[].slice,j="?",k=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;g.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function e(a,b){var c=null;if(!b||g.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(i.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,h,i){var l=null,m=f.isErrorEvent(i)?i.error:i,n=f.isErrorEvent(a)?a.message:a;if(v)g.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&f.isError(m))l=g.computeStackTrace(m),e(l,!0);else{var p,r={url:b,line:c,column:h},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(k);p&&(s=p[1],n=p[2])}r.func=j,l={name:s,message:n,url:d(),stack:[r]},e(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=h.onerror,h.onerror=l,r=!0)}function n(){r&&(h.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,e.apply(null,[a,!1].concat(b))}function p(a,b){var c=i.call(arguments,1);if(v){if(u===a)return;o()}var d=g.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),g.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,f,g=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,h=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,i=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,k=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,l=/\((\S*)(?::(\d+))(?::(\d+))\)/,m=a.stack.split("\n"),n=[],o=(/^(.*) is undefined$/.exec(a.message),0),p=m.length;o eval")>-1;r&&(b=k.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==o||c[5]||"undefined"==typeof a.columnNumber||(n[0].column=a.columnNumber+1),f={url:c[3],func:c[1]||j,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}if(!f.func&&f.line&&(f.func=j),f.url&&"blob:"===f.url.substr(0,5)){var s=new XMLHttpRequest;if(s.open("GET",f.url,!1),s.send(null),200===s.status){var t=s.responseText||"";t=t.slice(-300);var u=t.match(/\/\/# sourceMappingURL=(.*)$/);if(u){var v=u[1];"~"===v.charAt(0)&&(v=e()+v.slice(1)),f.url=v.slice(0,-4)}}}n.push(f)}return n.length?{name:a.name, +message:a.message,url:d(),stack:n}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=j),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,e){for(var h,i,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==f&&o!==g.report){if(i={url:null,func:j,line:null,column:null},o.name?i.func=o.name:(h=k.exec(o.toString()))&&(i.func=h[1]),"undefined"==typeof i.func)try{i.func=h.input.substring(0,h.input.indexOf("{"))}catch(p){}m[""+o]?n=!0:m[""+o]=!0,l.push(i)}e&&l.splice(0,e);var q={name:a.name,message:a.message,url:d(),stack:l};return b(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),q}function f(b,e){var f=null;e=null==e?0:+e;try{if(f=a(b))return f}catch(h){if(g.debug)throw h}try{if(f=c(b,e+1))return f}catch(h){if(g.debug)throw h}return{name:b.name,message:b.message,url:d()}}return f.augmentStackTraceWithInitialElement=b,f.computeStackTraceFromStackProp=a,f}(),b.exports=g}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{8:8}],10:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}],11:[function(a,b,c){function d(a,b){var c=(65535&a)+(65535&b),d=(a>>16)+(b>>16)+(c>>16);return d<<16|65535&c}function e(a,b){return a<>>32-b}function f(a,b,c,f,g,h){return d(e(d(d(b,a),d(f,h)),g),c)}function g(a,b,c,d,e,g,h){return f(b&c|~b&d,a,b,e,g,h)}function h(a,b,c,d,e,g,h){return f(b&d|c&~d,a,b,e,g,h)}function i(a,b,c,d,e,g,h){return f(b^c^d,a,b,e,g,h)}function j(a,b,c,d,e,g,h){return f(c^(b|~d),a,b,e,g,h)}function k(a,b){a[b>>5]|=128<>>9<<4)+14]=b;var c,e,f,k,l,m=1732584193,n=-271733879,o=-1732584194,p=271733878;for(c=0;c>5]>>>b%32&255);return c}function m(a){var b,c=[];for(c[(a.length>>2)-1]=void 0,b=0;b>5]|=(255&a.charCodeAt(b/8))<16&&(e=k(e,8*a.length)),c=0;c<16;c+=1)f[c]=909522486^e[c],g[c]=1549556828^e[c];return d=k(f.concat(m(b)),512+8*b.length),l(k(g.concat(d),640))}function p(a){var b,c,d="0123456789abcdef",e="";for(c=0;c>>4&15)+d.charAt(15&b);return e}function q(a){return unescape(encodeURIComponent(a))}function r(a){return n(q(a))}function s(a){return p(r(a))}function t(a,b){return o(q(a),q(b))}function u(a,b){return p(t(a,b))}function v(a,b,c){return b?c?t(b,a):u(b,a):c?r(a):s(a)}b.exports=v},{}]},{},[7,1,2,3])(7)}); //# sourceMappingURL=raven.min.js.map \ No newline at end of file diff --git a/dist/angular,console,require/raven.min.js.map b/dist/angular,console,require/raven.min.js.map index 48a08106f413..9a67103a716b 100644 --- a/dist/angular,console,require/raven.min.js.map +++ b/dist/angular,console,require/raven.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","angularPlugin","angular","RavenProvider","$get","$window","ExceptionHandlerProvider","$provide","decorator","exceptionHandler","R","$delegate","ex","cause","captureException","extra","moduleName","provider","config","setDataCallback","wrappedCallback","data","_normalizeData","angularPattern","exception","values","matches","exec","value","type","message","angularDocs","substr","addPlugin","7","8","2","consolePlugin","console","pluginOptions","logLevels","levels","push","callback","msg","captureMessage","level","pop","wrapConsoleMethod","wrapMethod","5","3","requirePlugin","wrap","deep","4","RavenConfigError","name","prototype","constructor","utils","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","safeJoin","logger","Function","apply","6","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","sanitizeKeys","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isErrorEvent","isDOMError","isDOMException","isError","isObject","isPlainObject","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","sanitize","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","dsn","options","_logDebug","globalOptions","key","setDSN","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","toString","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","context","func","undefined","_before","wrapped","_ignoreNextOnError","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","U","event","reason","unhandledPromiseRejection","C","_promiseRejectionHandler","bind","addEventListener","Q","removeEventListener","trimHeadFrames","error","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","V","currentOptions","exKeys","Object","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","M","setTimeout","_","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","aa","evtName","_keypressTimeout","target","category","ca","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","da","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","D","_originalFunctionToString","E","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","F","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","S","builtin","T","G","installer","concat","H","str","m","allowSecretKey","K","port","B","W","stackInfo","_triggerEvent","_processException","lineno","Y","frame","_normalizeFrame","in_app","ha","stackInfoUrl","normalized","filename","line","colno","column","function","ga","prefixedMessage","culprit","ia","request","Referer","breadcrumbs","_trimBreadcrumbs","ja","urlProp","urlProps","ka","httpData","userAgent","User-Agent","referrer","z","_backoffDuration","_backoffStart","na","oa","current","last","pa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Z","baseData","project","platform","_getHttpData","serverName","server_name","_sanitizeData","forEach","random","_sendProcessedPayload","qa","sa","ra","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","ta","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","onerror","open","setRequestHeader","send","ua","hash","evaluated","A","$","setUser","setReleaseContext","10","11","9","RavenConstructor","_Raven","noConflict","Client","what","supportsErrorEvent","ErrorEvent","supportsDOMError","DOMError","supportsDOMException","DOMException","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","sanitizeMask","safeInput","o_O","getLocationHref","getLocationOrigin","origin","hostname","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","responseText","sourceMaps","sourceMapAddress","charAt","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","y","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","string","raw"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file +{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","angularPlugin","angular","RavenProvider","$get","$window","ExceptionHandlerProvider","$provide","decorator","exceptionHandler","R","$delegate","ex","cause","captureException","extra","moduleName","provider","config","setDataCallback","wrappedCallback","data","_normalizeData","angularPattern","exception","values","matches","exec","value","type","message","angularDocs","substr","addPlugin","7","8","2","consolePlugin","console","pluginOptions","logLevels","levels","push","callback","msg","captureMessage","level","pop","wrapConsoleMethod","wrapMethod","5","3","requirePlugin","wrap","deep","4","RavenConfigError","name","prototype","constructor","utils","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","safeJoin","logger","Function","apply","6","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","sanitizeKeys","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isErrorEvent","isDOMError","isDOMException","isError","isObject","isPlainObject","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","sanitize","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","dsn","options","_logDebug","globalOptions","key","setDSN","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","toString","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","context","func","undefined","_before","wrapped","_ignoreNextOnError","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","U","event","reason","unhandledPromiseRejection","C","_promiseRejectionHandler","bind","addEventListener","Q","removeEventListener","trimHeadFrames","error","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","V","currentOptions","exKeys","Object","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","M","setTimeout","_","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","aa","evtName","_keypressTimeout","target","category","ca","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","da","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","D","_originalFunctionToString","E","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","F","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","S","builtin","T","G","installer","concat","H","str","m","allowSecretKey","K","port","B","W","stackInfo","_triggerEvent","_processException","lineno","Y","frame","_normalizeFrame","in_app","ha","stackInfoUrl","normalized","filename","line","colno","column","function","ga","prefixedMessage","transaction","ia","request","Referer","breadcrumbs","_trimBreadcrumbs","ja","urlProp","urlProps","ka","httpData","userAgent","User-Agent","referrer","z","_backoffDuration","_backoffStart","na","oa","current","last","pa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Z","baseData","project","platform","_getHttpData","serverName","server_name","_sanitizeData","forEach","random","_sendProcessedPayload","qa","sa","ra","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","ta","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","onerror","open","setRequestHeader","send","ua","hash","evaluated","A","$","setUser","setReleaseContext","10","11","9","RavenConstructor","_Raven","noConflict","Client","what","supportsErrorEvent","ErrorEvent","supportsDOMError","DOMError","supportsDOMException","DOMException","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","sanitizeMask","safeInput","o_O","getLocationHref","getLocationOrigin","origin","hostname","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","responseText","sourceMaps","sourceMapAddress","charAt","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","y","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","string","raw"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file diff --git a/dist/angular,console,vue/raven.js b/dist/angular,console,vue/raven.js index 6dbf32c5c18e..5dd6314684e9 100644 --- a/dist/angular,console,vue/raven.js +++ b/dist/angular,console,vue/raven.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.25.1 (b6f3c7a) | github.com/getsentry/raven-js */ +/*! Raven.js 3.25.2 (30b6d4e) | github.com/getsentry/raven-js */ /* * Includes TraceKit @@ -279,7 +279,11 @@ function now() { var _window = typeof window !== 'undefined' ? window - : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; + : typeof global !== 'undefined' + ? global + : typeof self !== 'undefined' + ? self + : {}; var _document = _window.document; var _navigator = _window.navigator; @@ -369,7 +373,7 @@ Raven.prototype = { // webpack (using a build step causes webpack #1617). Grunt verifies that // this value matches package.json during build. // See: https://github.com/getsentry/raven-js/issues/465 - VERSION: '3.25.1', + VERSION: '3.25.2', debug: false, @@ -1925,7 +1929,7 @@ Raven.prototype = { } ] }, - culprit: fileurl + transaction: fileurl }, options ); @@ -2040,7 +2044,7 @@ Raven.prototype = { if ( !last || current.message !== last.message || // defined for captureMessage - current.culprit !== last.culprit // defined for captureException/onerror + current.transaction !== last.transaction // defined for captureException/onerror ) return false; diff --git a/dist/angular,console,vue/raven.min.js b/dist/angular,console,vue/raven.min.js index 42e9d897fa2e..399e8ca7ad23 100644 --- a/dist/angular,console,vue/raven.min.js +++ b/dist/angular,console,vue/raven.min.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.25.1 (b6f3c7a) | github.com/getsentry/raven-js */ -!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.Raven=a()}}(function(){return function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};b[g][0].call(k.exports,function(a){var c=b[g][1][a];return e(c?c:a)},k,k.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;g":"anonymous component")+(a._isVue&&a.$options.__file?" at "+a.$options.__file:"")}function e(a,b){if(b=b||window.Vue,b&&b.config){var c=b.config.errorHandler;b.config.errorHandler=function(b,e,f){var g={};"[object Object]"===Object.prototype.toString.call(e)&&(g.componentName=d(e),g.propsData=e.$options.propsData),"undefined"!=typeof f&&(g.lifecycleHook=f),a.captureException(b,{extra:g}),"function"==typeof c&&c.call(this,b,e,f)}}}b.exports=e,a(7).addPlugin(b.exports)},{7:7}],4:[function(a,b,c){function d(a){this.name="RavenConfigError",this.message=a}d.prototype=new Error,d.prototype.constructor=d,b.exports=d},{}],5:[function(a,b,c){var d=a(8),e=function(a,b,c){var e=a[b],f=a;if(b in a){var g="warn"===b?"warning":b;a[b]=function(){var a=[].slice.call(arguments),h=d.safeJoin(a," "),i={level:g,logger:"console",extra:{arguments:a}};"assert"===b?a[0]===!1&&(h="Assertion failed: "+(d.safeJoin(a.slice(1)," ")||"console.assert"),i.extra.arguments=a.slice(1),c&&c(h,i)):c&&c(h,i),e&&Function.prototype.apply.call(e,f,a)}}};b.exports={wrapMethod:e}},{8:8}],6:[function(a,b,c){(function(c){function d(){return+new Date}function e(a,b){return s(b)?function(c){return b(c,a)}:b}function f(){this.b=!("object"!=typeof JSON||!JSON.stringify),this.c=!r(S),this.d=!r(T),this.e=null,this.f=null,this.g=null,this.h=null,this.i=null,this.j=null,this.k={},this.l={release:R.SENTRY_RELEASE&&R.SENTRY_RELEASE.id,logger:"javascript",ignoreErrors:[],ignoreUrls:[],whitelistUrls:[],includePaths:[],headers:null,collectWindowErrors:!0,captureUnhandledRejections:!0,maxMessageLength:0,maxUrlLength:250,stackTraceLimit:50,autoBreadcrumbs:!0,instrument:!0,sampleRate:1,sanitizeKeys:[]},this.m={method:"POST",keepalive:!0,referrerPolicy:K()?"origin":""},this.n=0,this.o=!1,this.p=Error.stackTraceLimit,this.q=R.console||{},this.r={},this.s=[],this.t=d(),this.u=[],this.v=[],this.w=null,this.x=R.location,this.y=this.x&&this.x.href,this.z();for(var a in this.q)this.r[a]=this.q[a]}var g=a(9),h=a(10),i=a(11),j=a(4),k=a(8),l=k.isErrorEvent,m=k.isDOMError,n=k.isDOMException,o=k.isError,p=k.isObject,q=k.isPlainObject,r=k.isUndefined,s=k.isFunction,t=k.isString,u=k.isArray,v=k.isEmptyObject,w=k.each,x=k.objectMerge,y=k.truncate,z=k.objectFrozen,A=k.hasKey,B=k.joinRegExp,C=k.urlencode,D=k.uuid4,E=k.htmlTreeAsString,F=k.isSameException,G=k.isSameStacktrace,H=k.parseUrl,I=k.fill,J=k.supportsFetch,K=k.supportsReferrerPolicy,L=k.serializeKeysForMessage,M=k.serializeException,N=k.sanitize,O=a(5).wrapMethod,P="source protocol user pass host port path".split(" "),Q=/^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/,R="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},S=R.document,T=R.navigator;f.prototype={VERSION:"3.25.1",debug:!1,TraceKit:g,config:function(a,b){var c=this;if(c.h)return this.A("error","Error: Raven has already been configured"),c;if(!a)return c;var d=c.l;b&&w(b,function(a,b){"tags"===a||"extra"===a||"user"===a?c.k[a]=b:d[a]=b}),c.setDSN(a),d.ignoreErrors.push(/^Script error\.?$/),d.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/),d.ignoreErrors=B(d.ignoreErrors),d.ignoreUrls=!!d.ignoreUrls.length&&B(d.ignoreUrls),d.whitelistUrls=!!d.whitelistUrls.length&&B(d.whitelistUrls),d.includePaths=B(d.includePaths),d.maxBreadcrumbs=Math.max(0,Math.min(d.maxBreadcrumbs||100,100));var e={xhr:!0,console:!0,dom:!0,location:!0,sentry:!0},f=d.autoBreadcrumbs;"[object Object]"==={}.toString.call(f)?f=x(e,f):f!==!1&&(f=e),d.autoBreadcrumbs=f;var h={tryCatch:!0},i=d.instrument;return"[object Object]"==={}.toString.call(i)?i=x(h,i):i!==!1&&(i=h),d.instrument=i,g.collectWindowErrors=!!d.collectWindowErrors,c},install:function(){var a=this;return a.isSetup()&&!a.o&&(g.report.subscribe(function(){a.B.apply(a,arguments)}),a.l.captureUnhandledRejections&&a.C(),a.D(),a.l.instrument&&a.l.instrument.tryCatch&&a.E(),a.l.autoBreadcrumbs&&a.F(),a.G(),a.o=!0),Error.stackTraceLimit=a.l.stackTraceLimit,this},setDSN:function(a){var b=this,c=b.H(a),d=c.path.lastIndexOf("/"),e=c.path.substr(1,d);b.I=a,b.i=c.user,b.J=c.pass&&c.pass.substr(1),b.j=c.path.substr(d+1),b.h=b.K(c),b.L=b.h+"/"+e+"api/"+b.j+"/store/",this.z()},context:function(a,b,c){return s(a)&&(c=b||[],b=a,a=void 0),this.wrap(a,b).apply(this,c)},wrap:function(a,b,c){function d(){var d=[],f=arguments.length,g=!a||a&&a.deep!==!1;for(c&&s(c)&&c.apply(this,arguments);f--;)d[f]=g?e.wrap(a,arguments[f]):arguments[f];try{return b.apply(this,d)}catch(h){throw e.M(),e.captureException(h,a),h}}var e=this;if(r(b)&&!s(a))return a;if(s(a)&&(b=a,a=void 0),!s(b))return b;try{if(b.N)return b;if(b.O)return b.O}catch(f){return b}for(var g in b)A(b,g)&&(d[g]=b[g]);return d.prototype=b.prototype,b.O=d,d.N=!0,d.P=b,d},uninstall:function(){return g.report.uninstall(),this.Q(),this.R(),this.S(),this.T(),Error.stackTraceLimit=this.p,this.o=!1,this},U:function(a){this.A("debug","Raven caught unhandled promise rejection:",a),this.captureException(a.reason,{extra:{unhandledPromiseRejection:!0}})},C:function(){return this.U=this.U.bind(this),R.addEventListener&&R.addEventListener("unhandledrejection",this.U),this},Q:function(){return R.removeEventListener&&R.removeEventListener("unhandledrejection",this.U),this},captureException:function(a,b){if(b=x({trimHeadFrames:0},b?b:{}),l(a)&&a.error)a=a.error;else{if(m(a)||n(a)){var c=a.name||(m(a)?"DOMError":"DOMException"),d=a.message?c+": "+a.message:c;return this.captureMessage(d,x(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}))}if(o(a))a=a;else{if(!q(a))return this.captureMessage(a,x(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}));b=this.V(b,a),a=new Error(b.message)}}this.e=a;try{var e=g.computeStackTrace(a);this.W(e,b)}catch(f){if(a!==f)throw f}return this},V:function(a,b){var c=Object.keys(b).sort(),d=x(a,{message:"Non-Error exception captured with keys: "+L(c),fingerprint:[i(c)],extra:a.extra||{}});return d.extra.X=M(b),d},captureMessage:function(a,b){if(!this.l.ignoreErrors.test||!this.l.ignoreErrors.test(a)){b=b||{},a+="";var c,d=x({message:a},b);try{throw new Error(a)}catch(e){c=e}c.name=null;var f=g.computeStackTrace(c),h=u(f.stack)&&f.stack[1];h&&"Raven.captureException"===h.func&&(h=f.stack[2]);var i=h&&h.url||"";if((!this.l.ignoreUrls.test||!this.l.ignoreUrls.test(i))&&(!this.l.whitelistUrls.test||this.l.whitelistUrls.test(i))){if(this.l.stacktrace||b&&b.stacktrace){d.fingerprint=null==d.fingerprint?a:d.fingerprint,b=x({trimHeadFrames:0},b),b.trimHeadFrames+=1;var j=this.Y(f,b);d.stacktrace={frames:j.reverse()}}return d.fingerprint&&(d.fingerprint=u(d.fingerprint)?d.fingerprint:[d.fingerprint]),this.Z(d),this}}},captureBreadcrumb:function(a){var b=x({timestamp:d()/1e3},a);if(s(this.l.breadcrumbCallback)){var c=this.l.breadcrumbCallback(b);if(p(c)&&!v(c))b=c;else if(c===!1)return this}return this.v.push(b),this.v.length>this.l.maxBreadcrumbs&&this.v.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.s.push([a,b]),this.o&&this.G(),this},setUserContext:function(a){return this.k.user=a,this},setExtraContext:function(a){return this.$("extra",a),this},setTagsContext:function(a){return this.$("tags",a),this},clearContext:function(){return this.k={},this},getContext:function(){return JSON.parse(h(this.k))},setEnvironment:function(a){return this.l.environment=a,this},setRelease:function(a){return this.l.release=a,this},setDataCallback:function(a){var b=this.l.dataCallback;return this.l.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.l.breadcrumbCallback;return this.l.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.l.shouldSendCallback;return this.l.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.l.transport=a,this},lastException:function(){return this.e},lastEventId:function(){return this.g},isSetup:function(){return!!this.b&&(!!this.h||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.A("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=R.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(S){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.I;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.k.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.K(this.H(c)),h=S.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(S.head||S.body).appendChild(h)}},M:function(){var a=this;this.n+=1,setTimeout(function(){a.n-=1})},_:function(a,b){var c,d;if(this.c){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),S.createEvent?(c=S.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=S.createEventObject(),c.eventType=a);for(d in b)A(b,d)&&(c[d]=b[d]);if(S.createEvent)S.dispatchEvent(c);else try{S.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},aa:function(a){var b=this;return function(c){if(b.ba=null,b.w!==c){b.w=c;var d;try{d=E(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ca:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.ba;g||a.aa("input")(c),clearTimeout(g),a.ba=setTimeout(function(){a.ba=null},b)}}},da:function(a,b){var c=H(this.x.href),d=H(b),e=H(a);this.y=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},D:function(){var a=this;a.ea=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.N?a.ea.apply(this.P,arguments):a.ea.apply(this,arguments)}},R:function(){this.ea&&(Function.prototype.toString=this.ea)},E:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.da(b.y,c+""),a.apply(this,arguments)}};I(R.history,"pushState",j,d),I(R.history,"replaceState",j,d)}if(c.console&&"console"in R&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};w(["debug","info","warn","error","log"],function(a,b){O(console,b,k)})}},S:function(){for(var a;this.u.length;){a=this.u.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},T:function(){for(var a in this.r)this.q[a]=this.r[a]},G:function(){var a=this;w(this.s,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},H:function(a){var b=Q.exec(a),c={},d=7;try{for(;d--;)c[P[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.l.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},K:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},B:function(){this.n||this.W.apply(this,arguments)},W:function(a,b){var c=this.Y(a,b);this._("handle",{stackInfo:a,options:b}),this.ga(a.name,a.message,a.url,a.lineno,c,b)},Y:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(w(a.stack,function(b,e){var f=c.ha(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.v,0)}),this.k.user&&(a.user=this.k.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),a=this.qa(a),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||v(a[b]))&&delete a[b]}),s(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!v(a)&&(!s(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.na()?void this.A("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function F(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&l(b))for(c=b.split(/\s+/),f=0;fc?Q(a,b-1):d}function R(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?X:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function S(a,b){function c(a){return m(a)?a.map(function(a){return c(a)}):k(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!m(b)||m(b)&&0===b.length)return a;var d,e=A(b),f="********";try{d=JSON.parse(T(a))}catch(g){return a}return c(d)}var T=a(10),U="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},V=3,W=51200,X=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isDOMError:g,isDOMException:h,isUndefined:i,isFunction:j,isPlainObject:k,isString:l,isArray:m,isEmptyObject:n,supportsErrorEvent:o,supportsDOMError:p,supportsDOMException:q,supportsFetch:r,supportsReferrerPolicy:s,supportsPromiseRejectionEvent:t,wrappedCallback:u,each:v,objectMerge:w,truncate:y,objectFrozen:x,hasKey:z,joinRegExp:A,urlencode:B,uuid4:D,htmlTreeAsString:E,htmlElementAsString:F,isSameException:I,isSameStacktrace:J,parseUrl:C,fill:K,safeJoin:L,serializeException:Q,serializeKeysForMessage:R,sanitize:S}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{10:10}],9:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}function e(){return"undefined"==typeof document||null==document.location?"":(document.location.origin||(document.location.origin=document.location.protocol+"//"+document.location.hostname+(document.location.port?":"+document.location.port:"")),document.location.origin)}var f=a(8),g={collectWindowErrors:!0,debug:!1},h="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},i=[].slice,j="?",k=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;g.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function e(a,b){var c=null;if(!b||g.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(i.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,h,i){var l=null,m=f.isErrorEvent(i)?i.error:i,n=f.isErrorEvent(a)?a.message:a;if(v)g.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&f.isError(m))l=g.computeStackTrace(m),e(l,!0);else{var p,r={url:b,line:c,column:h},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(k);p&&(s=p[1],n=p[2])}r.func=j,l={name:s,message:n,url:d(),stack:[r]},e(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=h.onerror,h.onerror=l,r=!0)}function n(){r&&(h.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,e.apply(null,[a,!1].concat(b))}function p(a,b){var c=i.call(arguments,1);if(v){if(u===a)return;o()}var d=g.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),g.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,f,g=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,h=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,i=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,k=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,l=/\((\S*)(?::(\d+))(?::(\d+))\)/,m=a.stack.split("\n"),n=[],o=(/^(.*) is undefined$/.exec(a.message),0),p=m.length;o eval")>-1;r&&(b=k.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==o||c[5]||"undefined"==typeof a.columnNumber||(n[0].column=a.columnNumber+1),f={ -url:c[3],func:c[1]||j,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}if(!f.func&&f.line&&(f.func=j),f.url&&"blob:"===f.url.substr(0,5)){var s=new XMLHttpRequest;if(s.open("GET",f.url,!1),s.send(null),200===s.status){var t=s.responseText||"";t=t.slice(-300);var u=t.match(/\/\/# sourceMappingURL=(.*)$/);if(u){var v=u[1];"~"===v.charAt(0)&&(v=e()+v.slice(1)),f.url=v.slice(0,-4)}}}n.push(f)}return n.length?{name:a.name,message:a.message,url:d(),stack:n}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=j),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,e){for(var h,i,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==f&&o!==g.report){if(i={url:null,func:j,line:null,column:null},o.name?i.func=o.name:(h=k.exec(o.toString()))&&(i.func=h[1]),"undefined"==typeof i.func)try{i.func=h.input.substring(0,h.input.indexOf("{"))}catch(p){}m[""+o]?n=!0:m[""+o]=!0,l.push(i)}e&&l.splice(0,e);var q={name:a.name,message:a.message,url:d(),stack:l};return b(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),q}function f(b,e){var f=null;e=null==e?0:+e;try{if(f=a(b))return f}catch(h){if(g.debug)throw h}try{if(f=c(b,e+1))return f}catch(h){if(g.debug)throw h}return{name:b.name,message:b.message,url:d()}}return f.augmentStackTraceWithInitialElement=b,f.computeStackTraceFromStackProp=a,f}(),b.exports=g}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{8:8}],10:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}],11:[function(a,b,c){function d(a,b){var c=(65535&a)+(65535&b),d=(a>>16)+(b>>16)+(c>>16);return d<<16|65535&c}function e(a,b){return a<>>32-b}function f(a,b,c,f,g,h){return d(e(d(d(b,a),d(f,h)),g),c)}function g(a,b,c,d,e,g,h){return f(b&c|~b&d,a,b,e,g,h)}function h(a,b,c,d,e,g,h){return f(b&d|c&~d,a,b,e,g,h)}function i(a,b,c,d,e,g,h){return f(b^c^d,a,b,e,g,h)}function j(a,b,c,d,e,g,h){return f(c^(b|~d),a,b,e,g,h)}function k(a,b){a[b>>5]|=128<>>9<<4)+14]=b;var c,e,f,k,l,m=1732584193,n=-271733879,o=-1732584194,p=271733878;for(c=0;c>5]>>>b%32&255);return c}function m(a){var b,c=[];for(c[(a.length>>2)-1]=void 0,b=0;b>5]|=(255&a.charCodeAt(b/8))<16&&(e=k(e,8*a.length)),c=0;c<16;c+=1)f[c]=909522486^e[c],g[c]=1549556828^e[c];return d=k(f.concat(m(b)),512+8*b.length),l(k(g.concat(d),640))}function p(a){var b,c,d="0123456789abcdef",e="";for(c=0;c>>4&15)+d.charAt(15&b);return e}function q(a){return unescape(encodeURIComponent(a))}function r(a){return n(q(a))}function s(a){return p(r(a))}function t(a,b){return o(q(a),q(b))}function u(a,b){return p(t(a,b))}function v(a,b,c){return b?c?t(b,a):u(b,a):c?r(a):s(a)}b.exports=v},{}]},{},[7,1,2,3])(7)}); +/*! Raven.js 3.25.2 (30b6d4e) | github.com/getsentry/raven-js */ +!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.Raven=a()}}(function(){return function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};b[g][0].call(k.exports,function(a){var c=b[g][1][a];return e(c?c:a)},k,k.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;g":"anonymous component")+(a._isVue&&a.$options.__file?" at "+a.$options.__file:"")}function e(a,b){if(b=b||window.Vue,b&&b.config){var c=b.config.errorHandler;b.config.errorHandler=function(b,e,f){var g={};"[object Object]"===Object.prototype.toString.call(e)&&(g.componentName=d(e),g.propsData=e.$options.propsData),"undefined"!=typeof f&&(g.lifecycleHook=f),a.captureException(b,{extra:g}),"function"==typeof c&&c.call(this,b,e,f)}}}b.exports=e,a(7).addPlugin(b.exports)},{7:7}],4:[function(a,b,c){function d(a){this.name="RavenConfigError",this.message=a}d.prototype=new Error,d.prototype.constructor=d,b.exports=d},{}],5:[function(a,b,c){var d=a(8),e=function(a,b,c){var e=a[b],f=a;if(b in a){var g="warn"===b?"warning":b;a[b]=function(){var a=[].slice.call(arguments),h=d.safeJoin(a," "),i={level:g,logger:"console",extra:{arguments:a}};"assert"===b?a[0]===!1&&(h="Assertion failed: "+(d.safeJoin(a.slice(1)," ")||"console.assert"),i.extra.arguments=a.slice(1),c&&c(h,i)):c&&c(h,i),e&&Function.prototype.apply.call(e,f,a)}}};b.exports={wrapMethod:e}},{8:8}],6:[function(a,b,c){(function(c){function d(){return+new Date}function e(a,b){return s(b)?function(c){return b(c,a)}:b}function f(){this.b=!("object"!=typeof JSON||!JSON.stringify),this.c=!r(S),this.d=!r(T),this.e=null,this.f=null,this.g=null,this.h=null,this.i=null,this.j=null,this.k={},this.l={release:R.SENTRY_RELEASE&&R.SENTRY_RELEASE.id,logger:"javascript",ignoreErrors:[],ignoreUrls:[],whitelistUrls:[],includePaths:[],headers:null,collectWindowErrors:!0,captureUnhandledRejections:!0,maxMessageLength:0,maxUrlLength:250,stackTraceLimit:50,autoBreadcrumbs:!0,instrument:!0,sampleRate:1,sanitizeKeys:[]},this.m={method:"POST",keepalive:!0,referrerPolicy:K()?"origin":""},this.n=0,this.o=!1,this.p=Error.stackTraceLimit,this.q=R.console||{},this.r={},this.s=[],this.t=d(),this.u=[],this.v=[],this.w=null,this.x=R.location,this.y=this.x&&this.x.href,this.z();for(var a in this.q)this.r[a]=this.q[a]}var g=a(9),h=a(10),i=a(11),j=a(4),k=a(8),l=k.isErrorEvent,m=k.isDOMError,n=k.isDOMException,o=k.isError,p=k.isObject,q=k.isPlainObject,r=k.isUndefined,s=k.isFunction,t=k.isString,u=k.isArray,v=k.isEmptyObject,w=k.each,x=k.objectMerge,y=k.truncate,z=k.objectFrozen,A=k.hasKey,B=k.joinRegExp,C=k.urlencode,D=k.uuid4,E=k.htmlTreeAsString,F=k.isSameException,G=k.isSameStacktrace,H=k.parseUrl,I=k.fill,J=k.supportsFetch,K=k.supportsReferrerPolicy,L=k.serializeKeysForMessage,M=k.serializeException,N=k.sanitize,O=a(5).wrapMethod,P="source protocol user pass host port path".split(" "),Q=/^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/,R="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},S=R.document,T=R.navigator;f.prototype={VERSION:"3.25.2",debug:!1,TraceKit:g,config:function(a,b){var c=this;if(c.h)return this.A("error","Error: Raven has already been configured"),c;if(!a)return c;var d=c.l;b&&w(b,function(a,b){"tags"===a||"extra"===a||"user"===a?c.k[a]=b:d[a]=b}),c.setDSN(a),d.ignoreErrors.push(/^Script error\.?$/),d.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/),d.ignoreErrors=B(d.ignoreErrors),d.ignoreUrls=!!d.ignoreUrls.length&&B(d.ignoreUrls),d.whitelistUrls=!!d.whitelistUrls.length&&B(d.whitelistUrls),d.includePaths=B(d.includePaths),d.maxBreadcrumbs=Math.max(0,Math.min(d.maxBreadcrumbs||100,100));var e={xhr:!0,console:!0,dom:!0,location:!0,sentry:!0},f=d.autoBreadcrumbs;"[object Object]"==={}.toString.call(f)?f=x(e,f):f!==!1&&(f=e),d.autoBreadcrumbs=f;var h={tryCatch:!0},i=d.instrument;return"[object Object]"==={}.toString.call(i)?i=x(h,i):i!==!1&&(i=h),d.instrument=i,g.collectWindowErrors=!!d.collectWindowErrors,c},install:function(){var a=this;return a.isSetup()&&!a.o&&(g.report.subscribe(function(){a.B.apply(a,arguments)}),a.l.captureUnhandledRejections&&a.C(),a.D(),a.l.instrument&&a.l.instrument.tryCatch&&a.E(),a.l.autoBreadcrumbs&&a.F(),a.G(),a.o=!0),Error.stackTraceLimit=a.l.stackTraceLimit,this},setDSN:function(a){var b=this,c=b.H(a),d=c.path.lastIndexOf("/"),e=c.path.substr(1,d);b.I=a,b.i=c.user,b.J=c.pass&&c.pass.substr(1),b.j=c.path.substr(d+1),b.h=b.K(c),b.L=b.h+"/"+e+"api/"+b.j+"/store/",this.z()},context:function(a,b,c){return s(a)&&(c=b||[],b=a,a=void 0),this.wrap(a,b).apply(this,c)},wrap:function(a,b,c){function d(){var d=[],f=arguments.length,g=!a||a&&a.deep!==!1;for(c&&s(c)&&c.apply(this,arguments);f--;)d[f]=g?e.wrap(a,arguments[f]):arguments[f];try{return b.apply(this,d)}catch(h){throw e.M(),e.captureException(h,a),h}}var e=this;if(r(b)&&!s(a))return a;if(s(a)&&(b=a,a=void 0),!s(b))return b;try{if(b.N)return b;if(b.O)return b.O}catch(f){return b}for(var g in b)A(b,g)&&(d[g]=b[g]);return d.prototype=b.prototype,b.O=d,d.N=!0,d.P=b,d},uninstall:function(){return g.report.uninstall(),this.Q(),this.R(),this.S(),this.T(),Error.stackTraceLimit=this.p,this.o=!1,this},U:function(a){this.A("debug","Raven caught unhandled promise rejection:",a),this.captureException(a.reason,{extra:{unhandledPromiseRejection:!0}})},C:function(){return this.U=this.U.bind(this),R.addEventListener&&R.addEventListener("unhandledrejection",this.U),this},Q:function(){return R.removeEventListener&&R.removeEventListener("unhandledrejection",this.U),this},captureException:function(a,b){if(b=x({trimHeadFrames:0},b?b:{}),l(a)&&a.error)a=a.error;else{if(m(a)||n(a)){var c=a.name||(m(a)?"DOMError":"DOMException"),d=a.message?c+": "+a.message:c;return this.captureMessage(d,x(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}))}if(o(a))a=a;else{if(!q(a))return this.captureMessage(a,x(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}));b=this.V(b,a),a=new Error(b.message)}}this.e=a;try{var e=g.computeStackTrace(a);this.W(e,b)}catch(f){if(a!==f)throw f}return this},V:function(a,b){var c=Object.keys(b).sort(),d=x(a,{message:"Non-Error exception captured with keys: "+L(c),fingerprint:[i(c)],extra:a.extra||{}});return d.extra.X=M(b),d},captureMessage:function(a,b){if(!this.l.ignoreErrors.test||!this.l.ignoreErrors.test(a)){b=b||{},a+="";var c,d=x({message:a},b);try{throw new Error(a)}catch(e){c=e}c.name=null;var f=g.computeStackTrace(c),h=u(f.stack)&&f.stack[1];h&&"Raven.captureException"===h.func&&(h=f.stack[2]);var i=h&&h.url||"";if((!this.l.ignoreUrls.test||!this.l.ignoreUrls.test(i))&&(!this.l.whitelistUrls.test||this.l.whitelistUrls.test(i))){if(this.l.stacktrace||b&&b.stacktrace){d.fingerprint=null==d.fingerprint?a:d.fingerprint,b=x({trimHeadFrames:0},b),b.trimHeadFrames+=1;var j=this.Y(f,b);d.stacktrace={frames:j.reverse()}}return d.fingerprint&&(d.fingerprint=u(d.fingerprint)?d.fingerprint:[d.fingerprint]),this.Z(d),this}}},captureBreadcrumb:function(a){var b=x({timestamp:d()/1e3},a);if(s(this.l.breadcrumbCallback)){var c=this.l.breadcrumbCallback(b);if(p(c)&&!v(c))b=c;else if(c===!1)return this}return this.v.push(b),this.v.length>this.l.maxBreadcrumbs&&this.v.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.s.push([a,b]),this.o&&this.G(),this},setUserContext:function(a){return this.k.user=a,this},setExtraContext:function(a){return this.$("extra",a),this},setTagsContext:function(a){return this.$("tags",a),this},clearContext:function(){return this.k={},this},getContext:function(){return JSON.parse(h(this.k))},setEnvironment:function(a){return this.l.environment=a,this},setRelease:function(a){return this.l.release=a,this},setDataCallback:function(a){var b=this.l.dataCallback;return this.l.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.l.breadcrumbCallback;return this.l.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.l.shouldSendCallback;return this.l.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.l.transport=a,this},lastException:function(){return this.e},lastEventId:function(){return this.g},isSetup:function(){return!!this.b&&(!!this.h||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.A("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=R.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(S){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.I;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.k.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.K(this.H(c)),h=S.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(S.head||S.body).appendChild(h)}},M:function(){var a=this;this.n+=1,setTimeout(function(){a.n-=1})},_:function(a,b){var c,d;if(this.c){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),S.createEvent?(c=S.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=S.createEventObject(),c.eventType=a);for(d in b)A(b,d)&&(c[d]=b[d]);if(S.createEvent)S.dispatchEvent(c);else try{S.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},aa:function(a){var b=this;return function(c){if(b.ba=null,b.w!==c){b.w=c;var d;try{d=E(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ca:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.ba;g||a.aa("input")(c),clearTimeout(g),a.ba=setTimeout(function(){a.ba=null},b)}}},da:function(a,b){var c=H(this.x.href),d=H(b),e=H(a);this.y=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},D:function(){var a=this;a.ea=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.N?a.ea.apply(this.P,arguments):a.ea.apply(this,arguments)}},R:function(){this.ea&&(Function.prototype.toString=this.ea)},E:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.da(b.y,c+""),a.apply(this,arguments)}};I(R.history,"pushState",j,d),I(R.history,"replaceState",j,d)}if(c.console&&"console"in R&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};w(["debug","info","warn","error","log"],function(a,b){O(console,b,k)})}},S:function(){for(var a;this.u.length;){a=this.u.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},T:function(){for(var a in this.r)this.q[a]=this.r[a]},G:function(){var a=this;w(this.s,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},H:function(a){var b=Q.exec(a),c={},d=7;try{for(;d--;)c[P[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.l.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},K:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},B:function(){this.n||this.W.apply(this,arguments)},W:function(a,b){var c=this.Y(a,b);this._("handle",{stackInfo:a,options:b}),this.ga(a.name,a.message,a.url,a.lineno,c,b)},Y:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(w(a.stack,function(b,e){var f=c.ha(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.v,0)}),this.k.user&&(a.user=this.k.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),a=this.qa(a),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||v(a[b]))&&delete a[b]}),s(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!v(a)&&(!s(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.na()?void this.A("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function F(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&l(b))for(c=b.split(/\s+/),f=0;fc?Q(a,b-1):d}function R(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?X:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function S(a,b){function c(a){return m(a)?a.map(function(a){return c(a)}):k(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!m(b)||m(b)&&0===b.length)return a;var d,e=A(b),f="********";try{d=JSON.parse(T(a))}catch(g){return a}return c(d)}var T=a(10),U="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},V=3,W=51200,X=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isDOMError:g,isDOMException:h,isUndefined:i,isFunction:j,isPlainObject:k,isString:l,isArray:m,isEmptyObject:n,supportsErrorEvent:o,supportsDOMError:p,supportsDOMException:q,supportsFetch:r,supportsReferrerPolicy:s,supportsPromiseRejectionEvent:t,wrappedCallback:u,each:v,objectMerge:w,truncate:y,objectFrozen:x,hasKey:z,joinRegExp:A,urlencode:B,uuid4:D,htmlTreeAsString:E,htmlElementAsString:F,isSameException:I,isSameStacktrace:J,parseUrl:C,fill:K,safeJoin:L,serializeException:Q,serializeKeysForMessage:R,sanitize:S}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{10:10}],9:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}function e(){return"undefined"==typeof document||null==document.location?"":(document.location.origin||(document.location.origin=document.location.protocol+"//"+document.location.hostname+(document.location.port?":"+document.location.port:"")),document.location.origin)}var f=a(8),g={collectWindowErrors:!0,debug:!1},h="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},i=[].slice,j="?",k=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;g.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function e(a,b){var c=null;if(!b||g.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(i.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,h,i){var l=null,m=f.isErrorEvent(i)?i.error:i,n=f.isErrorEvent(a)?a.message:a;if(v)g.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&f.isError(m))l=g.computeStackTrace(m),e(l,!0);else{var p,r={url:b,line:c,column:h},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(k);p&&(s=p[1],n=p[2])}r.func=j,l={name:s,message:n,url:d(),stack:[r]},e(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=h.onerror,h.onerror=l,r=!0)}function n(){r&&(h.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,e.apply(null,[a,!1].concat(b))}function p(a,b){var c=i.call(arguments,1);if(v){if(u===a)return;o()}var d=g.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),g.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,f,g=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,h=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,i=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,k=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,l=/\((\S*)(?::(\d+))(?::(\d+))\)/,m=a.stack.split("\n"),n=[],o=(/^(.*) is undefined$/.exec(a.message),0),p=m.length;o eval")>-1;r&&(b=k.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==o||c[5]||"undefined"==typeof a.columnNumber||(n[0].column=a.columnNumber+1), +f={url:c[3],func:c[1]||j,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}if(!f.func&&f.line&&(f.func=j),f.url&&"blob:"===f.url.substr(0,5)){var s=new XMLHttpRequest;if(s.open("GET",f.url,!1),s.send(null),200===s.status){var t=s.responseText||"";t=t.slice(-300);var u=t.match(/\/\/# sourceMappingURL=(.*)$/);if(u){var v=u[1];"~"===v.charAt(0)&&(v=e()+v.slice(1)),f.url=v.slice(0,-4)}}}n.push(f)}return n.length?{name:a.name,message:a.message,url:d(),stack:n}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=j),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,e){for(var h,i,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==f&&o!==g.report){if(i={url:null,func:j,line:null,column:null},o.name?i.func=o.name:(h=k.exec(o.toString()))&&(i.func=h[1]),"undefined"==typeof i.func)try{i.func=h.input.substring(0,h.input.indexOf("{"))}catch(p){}m[""+o]?n=!0:m[""+o]=!0,l.push(i)}e&&l.splice(0,e);var q={name:a.name,message:a.message,url:d(),stack:l};return b(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),q}function f(b,e){var f=null;e=null==e?0:+e;try{if(f=a(b))return f}catch(h){if(g.debug)throw h}try{if(f=c(b,e+1))return f}catch(h){if(g.debug)throw h}return{name:b.name,message:b.message,url:d()}}return f.augmentStackTraceWithInitialElement=b,f.computeStackTraceFromStackProp=a,f}(),b.exports=g}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{8:8}],10:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}],11:[function(a,b,c){function d(a,b){var c=(65535&a)+(65535&b),d=(a>>16)+(b>>16)+(c>>16);return d<<16|65535&c}function e(a,b){return a<>>32-b}function f(a,b,c,f,g,h){return d(e(d(d(b,a),d(f,h)),g),c)}function g(a,b,c,d,e,g,h){return f(b&c|~b&d,a,b,e,g,h)}function h(a,b,c,d,e,g,h){return f(b&d|c&~d,a,b,e,g,h)}function i(a,b,c,d,e,g,h){return f(b^c^d,a,b,e,g,h)}function j(a,b,c,d,e,g,h){return f(c^(b|~d),a,b,e,g,h)}function k(a,b){a[b>>5]|=128<>>9<<4)+14]=b;var c,e,f,k,l,m=1732584193,n=-271733879,o=-1732584194,p=271733878;for(c=0;c>5]>>>b%32&255);return c}function m(a){var b,c=[];for(c[(a.length>>2)-1]=void 0,b=0;b>5]|=(255&a.charCodeAt(b/8))<16&&(e=k(e,8*a.length)),c=0;c<16;c+=1)f[c]=909522486^e[c],g[c]=1549556828^e[c];return d=k(f.concat(m(b)),512+8*b.length),l(k(g.concat(d),640))}function p(a){var b,c,d="0123456789abcdef",e="";for(c=0;c>>4&15)+d.charAt(15&b);return e}function q(a){return unescape(encodeURIComponent(a))}function r(a){return n(q(a))}function s(a){return p(r(a))}function t(a,b){return o(q(a),q(b))}function u(a,b){return p(t(a,b))}function v(a,b,c){return b?c?t(b,a):u(b,a):c?r(a):s(a)}b.exports=v},{}]},{},[7,1,2,3])(7)}); //# sourceMappingURL=raven.min.js.map \ No newline at end of file diff --git a/dist/angular,console,vue/raven.min.js.map b/dist/angular,console,vue/raven.min.js.map index 8a479c2c6980..ccc07160794a 100644 --- a/dist/angular,console,vue/raven.min.js.map +++ b/dist/angular,console,vue/raven.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","angularPlugin","angular","RavenProvider","$get","$window","ExceptionHandlerProvider","$provide","decorator","exceptionHandler","R","$delegate","ex","cause","captureException","extra","moduleName","provider","config","setDataCallback","wrappedCallback","data","_normalizeData","angularPattern","exception","values","matches","exec","value","type","message","angularDocs","substr","addPlugin","7","8","2","consolePlugin","console","pluginOptions","logLevels","levels","push","callback","msg","captureMessage","level","pop","wrapConsoleMethod","wrapMethod","5","3","formatComponentName","vm","$root","name","_isVue","$options","_componentTag","__file","vuePlugin","Vue","_oldOnError","errorHandler","error","info","metaData","Object","prototype","toString","componentName","propsData","lifecycleHook","4","RavenConfigError","constructor","utils","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","safeJoin","logger","Function","apply","6","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","sanitizeKeys","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isErrorEvent","isDOMError","isDOMException","isError","isObject","isPlainObject","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","sanitize","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","dsn","options","_logDebug","globalOptions","key","setDSN","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","context","func","undefined","wrap","_before","wrapped","deep","_ignoreNextOnError","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","U","event","reason","unhandledPromiseRejection","C","_promiseRejectionHandler","bind","addEventListener","Q","removeEventListener","trimHeadFrames","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","V","currentOptions","exKeys","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","M","setTimeout","_","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","aa","evtName","_keypressTimeout","target","category","ca","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","da","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","D","_originalFunctionToString","E","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","F","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","S","builtin","T","G","installer","concat","H","str","m","allowSecretKey","K","port","B","W","stackInfo","_triggerEvent","_processException","lineno","Y","frame","_normalizeFrame","in_app","ha","stackInfoUrl","normalized","filename","line","colno","column","function","ga","prefixedMessage","culprit","ia","request","Referer","breadcrumbs","_trimBreadcrumbs","ja","urlProp","urlProps","ka","httpData","userAgent","User-Agent","referrer","z","_backoffDuration","_backoffStart","na","oa","current","last","pa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Z","baseData","project","platform","_getHttpData","serverName","server_name","_sanitizeData","forEach","random","_sendProcessedPayload","qa","sa","ra","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","ta","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","onerror","open","setRequestHeader","send","ua","hash","evaluated","A","$","setUser","setReleaseContext","10","11","9","RavenConstructor","_Raven","noConflict","Client","what","supportsErrorEvent","ErrorEvent","supportsDOMError","DOMError","supportsDOMException","DOMException","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","sanitizeMask","safeInput","o_O","getLocationHref","getLocationOrigin","origin","hostname","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","responseText","sourceMaps","sourceMapAddress","charAt","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","y","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","string","raw"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file +{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","angularPlugin","angular","RavenProvider","$get","$window","ExceptionHandlerProvider","$provide","decorator","exceptionHandler","R","$delegate","ex","cause","captureException","extra","moduleName","provider","config","setDataCallback","wrappedCallback","data","_normalizeData","angularPattern","exception","values","matches","exec","value","type","message","angularDocs","substr","addPlugin","7","8","2","consolePlugin","console","pluginOptions","logLevels","levels","push","callback","msg","captureMessage","level","pop","wrapConsoleMethod","wrapMethod","5","3","formatComponentName","vm","$root","name","_isVue","$options","_componentTag","__file","vuePlugin","Vue","_oldOnError","errorHandler","error","info","metaData","Object","prototype","toString","componentName","propsData","lifecycleHook","4","RavenConfigError","constructor","utils","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","safeJoin","logger","Function","apply","6","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","sanitizeKeys","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isErrorEvent","isDOMError","isDOMException","isError","isObject","isPlainObject","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","sanitize","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","dsn","options","_logDebug","globalOptions","key","setDSN","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","context","func","undefined","wrap","_before","wrapped","deep","_ignoreNextOnError","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","U","event","reason","unhandledPromiseRejection","C","_promiseRejectionHandler","bind","addEventListener","Q","removeEventListener","trimHeadFrames","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","V","currentOptions","exKeys","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","M","setTimeout","_","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","aa","evtName","_keypressTimeout","target","category","ca","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","da","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","D","_originalFunctionToString","E","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","F","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","S","builtin","T","G","installer","concat","H","str","m","allowSecretKey","K","port","B","W","stackInfo","_triggerEvent","_processException","lineno","Y","frame","_normalizeFrame","in_app","ha","stackInfoUrl","normalized","filename","line","colno","column","function","ga","prefixedMessage","transaction","ia","request","Referer","breadcrumbs","_trimBreadcrumbs","ja","urlProp","urlProps","ka","httpData","userAgent","User-Agent","referrer","z","_backoffDuration","_backoffStart","na","oa","current","last","pa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Z","baseData","project","platform","_getHttpData","serverName","server_name","_sanitizeData","forEach","random","_sendProcessedPayload","qa","sa","ra","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","ta","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","onerror","open","setRequestHeader","send","ua","hash","evaluated","A","$","setUser","setReleaseContext","10","11","9","RavenConstructor","_Raven","noConflict","Client","what","supportsErrorEvent","ErrorEvent","supportsDOMError","DOMError","supportsDOMException","DOMException","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","sanitizeMask","safeInput","o_O","getLocationHref","getLocationOrigin","origin","hostname","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","responseText","sourceMaps","sourceMapAddress","charAt","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","y","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","string","raw"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file diff --git a/dist/angular,console/raven.js b/dist/angular,console/raven.js index c753c842e8e8..5a61fc5e767f 100644 --- a/dist/angular,console/raven.js +++ b/dist/angular,console/raven.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.25.1 (b6f3c7a) | github.com/getsentry/raven-js */ +/*! Raven.js 3.25.2 (30b6d4e) | github.com/getsentry/raven-js */ /* * Includes TraceKit @@ -229,7 +229,11 @@ function now() { var _window = typeof window !== 'undefined' ? window - : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; + : typeof global !== 'undefined' + ? global + : typeof self !== 'undefined' + ? self + : {}; var _document = _window.document; var _navigator = _window.navigator; @@ -319,7 +323,7 @@ Raven.prototype = { // webpack (using a build step causes webpack #1617). Grunt verifies that // this value matches package.json during build. // See: https://github.com/getsentry/raven-js/issues/465 - VERSION: '3.25.1', + VERSION: '3.25.2', debug: false, @@ -1875,7 +1879,7 @@ Raven.prototype = { } ] }, - culprit: fileurl + transaction: fileurl }, options ); @@ -1990,7 +1994,7 @@ Raven.prototype = { if ( !last || current.message !== last.message || // defined for captureMessage - current.culprit !== last.culprit // defined for captureException/onerror + current.transaction !== last.transaction // defined for captureException/onerror ) return false; diff --git a/dist/angular,console/raven.min.js b/dist/angular,console/raven.min.js index ec05ba7cffde..67c09e7f45cc 100644 --- a/dist/angular,console/raven.min.js +++ b/dist/angular,console/raven.min.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.25.1 (b6f3c7a) | github.com/getsentry/raven-js */ -!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.Raven=a()}}(function(){return function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};b[g][0].call(k.exports,function(a){var c=b[g][1][a];return e(c?c:a)},k,k.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;gthis.l.maxBreadcrumbs&&this.v.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.s.push([a,b]),this.o&&this.G(),this},setUserContext:function(a){return this.k.user=a,this},setExtraContext:function(a){return this.$("extra",a),this},setTagsContext:function(a){return this.$("tags",a),this},clearContext:function(){return this.k={},this},getContext:function(){return JSON.parse(h(this.k))},setEnvironment:function(a){return this.l.environment=a,this},setRelease:function(a){return this.l.release=a,this},setDataCallback:function(a){var b=this.l.dataCallback;return this.l.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.l.breadcrumbCallback;return this.l.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.l.shouldSendCallback;return this.l.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.l.transport=a,this},lastException:function(){return this.e},lastEventId:function(){return this.g},isSetup:function(){return!!this.b&&(!!this.h||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.A("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=R.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(S){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.I;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.k.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.K(this.H(c)),h=S.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(S.head||S.body).appendChild(h)}},M:function(){var a=this;this.n+=1,setTimeout(function(){a.n-=1})},_:function(a,b){var c,d;if(this.c){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),S.createEvent?(c=S.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=S.createEventObject(),c.eventType=a);for(d in b)A(b,d)&&(c[d]=b[d]);if(S.createEvent)S.dispatchEvent(c);else try{S.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},aa:function(a){var b=this;return function(c){if(b.ba=null,b.w!==c){b.w=c;var d;try{d=E(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ca:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.ba;g||a.aa("input")(c),clearTimeout(g),a.ba=setTimeout(function(){a.ba=null},b)}}},da:function(a,b){var c=H(this.x.href),d=H(b),e=H(a);this.y=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},D:function(){var a=this;a.ea=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.N?a.ea.apply(this.P,arguments):a.ea.apply(this,arguments)}},R:function(){this.ea&&(Function.prototype.toString=this.ea)},E:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.da(b.y,c+""),a.apply(this,arguments)}};I(R.history,"pushState",j,d),I(R.history,"replaceState",j,d)}if(c.console&&"console"in R&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};w(["debug","info","warn","error","log"],function(a,b){O(console,b,k)})}},S:function(){for(var a;this.u.length;){a=this.u.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},T:function(){for(var a in this.r)this.q[a]=this.r[a]},G:function(){var a=this;w(this.s,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},H:function(a){var b=Q.exec(a),c={},d=7;try{for(;d--;)c[P[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.l.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},K:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},B:function(){this.n||this.W.apply(this,arguments)},W:function(a,b){var c=this.Y(a,b);this._("handle",{stackInfo:a,options:b}),this.ga(a.name,a.message,a.url,a.lineno,c,b)},Y:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(w(a.stack,function(b,e){var f=c.ha(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.v,0)}),this.k.user&&(a.user=this.k.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),a=this.qa(a),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||v(a[b]))&&delete a[b]}),s(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!v(a)&&(!s(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.na()?void this.A("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function F(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&l(b))for(c=b.split(/\s+/),f=0;fc?Q(a,b-1):d}function R(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?X:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function S(a,b){function c(a){return m(a)?a.map(function(a){return c(a)}):k(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!m(b)||m(b)&&0===b.length)return a;var d,e=A(b),f="********";try{d=JSON.parse(T(a))}catch(g){return a}return c(d)}var T=a(9),U="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},V=3,W=51200,X=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isDOMError:g,isDOMException:h,isUndefined:i,isFunction:j,isPlainObject:k,isString:l,isArray:m,isEmptyObject:n,supportsErrorEvent:o,supportsDOMError:p,supportsDOMException:q,supportsFetch:r,supportsReferrerPolicy:s,supportsPromiseRejectionEvent:t,wrappedCallback:u,each:v,objectMerge:w,truncate:y,objectFrozen:x,hasKey:z,joinRegExp:A,urlencode:B,uuid4:D,htmlTreeAsString:E,htmlElementAsString:F,isSameException:I,isSameStacktrace:J,parseUrl:C,fill:K,safeJoin:L,serializeException:Q,serializeKeysForMessage:R,sanitize:S}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{9:9}],8:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}function e(){return"undefined"==typeof document||null==document.location?"":(document.location.origin||(document.location.origin=document.location.protocol+"//"+document.location.hostname+(document.location.port?":"+document.location.port:"")),document.location.origin)}var f=a(7),g={collectWindowErrors:!0,debug:!1},h="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},i=[].slice,j="?",k=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;g.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function e(a,b){var c=null;if(!b||g.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(i.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,h,i){var l=null,m=f.isErrorEvent(i)?i.error:i,n=f.isErrorEvent(a)?a.message:a;if(v)g.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&f.isError(m))l=g.computeStackTrace(m),e(l,!0);else{var p,r={url:b,line:c,column:h},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(k);p&&(s=p[1],n=p[2])}r.func=j,l={name:s,message:n,url:d(),stack:[r]},e(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=h.onerror,h.onerror=l,r=!0)}function n(){r&&(h.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,e.apply(null,[a,!1].concat(b))}function p(a,b){var c=i.call(arguments,1);if(v){if(u===a)return;o()}var d=g.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),g.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,f,g=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,h=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,i=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,k=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,l=/\((\S*)(?::(\d+))(?::(\d+))\)/,m=a.stack.split("\n"),n=[],o=(/^(.*) is undefined$/.exec(a.message),0),p=m.length;o eval")>-1;r&&(b=k.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==o||c[5]||"undefined"==typeof a.columnNumber||(n[0].column=a.columnNumber+1),f={url:c[3],func:c[1]||j,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}if(!f.func&&f.line&&(f.func=j),f.url&&"blob:"===f.url.substr(0,5)){var s=new XMLHttpRequest;if(s.open("GET",f.url,!1),s.send(null),200===s.status){var t=s.responseText||"";t=t.slice(-300);var u=t.match(/\/\/# sourceMappingURL=(.*)$/);if(u){var v=u[1];"~"===v.charAt(0)&&(v=e()+v.slice(1)),f.url=v.slice(0,-4)}}}n.push(f)}return n.length?{name:a.name,message:a.message,url:d(),stack:n}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=j),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1; +/*! Raven.js 3.25.2 (30b6d4e) | github.com/getsentry/raven-js */ +!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.Raven=a()}}(function(){return function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};b[g][0].call(k.exports,function(a){var c=b[g][1][a];return e(c?c:a)},k,k.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;gthis.l.maxBreadcrumbs&&this.v.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.s.push([a,b]),this.o&&this.G(),this},setUserContext:function(a){return this.k.user=a,this},setExtraContext:function(a){return this.$("extra",a),this},setTagsContext:function(a){return this.$("tags",a),this},clearContext:function(){return this.k={},this},getContext:function(){return JSON.parse(h(this.k))},setEnvironment:function(a){return this.l.environment=a,this},setRelease:function(a){return this.l.release=a,this},setDataCallback:function(a){var b=this.l.dataCallback;return this.l.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.l.breadcrumbCallback;return this.l.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.l.shouldSendCallback;return this.l.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.l.transport=a,this},lastException:function(){return this.e},lastEventId:function(){return this.g},isSetup:function(){return!!this.b&&(!!this.h||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.A("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=R.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(S){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.I;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.k.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.K(this.H(c)),h=S.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(S.head||S.body).appendChild(h)}},M:function(){var a=this;this.n+=1,setTimeout(function(){a.n-=1})},_:function(a,b){var c,d;if(this.c){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),S.createEvent?(c=S.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=S.createEventObject(),c.eventType=a);for(d in b)A(b,d)&&(c[d]=b[d]);if(S.createEvent)S.dispatchEvent(c);else try{S.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},aa:function(a){var b=this;return function(c){if(b.ba=null,b.w!==c){b.w=c;var d;try{d=E(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ca:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.ba;g||a.aa("input")(c),clearTimeout(g),a.ba=setTimeout(function(){a.ba=null},b)}}},da:function(a,b){var c=H(this.x.href),d=H(b),e=H(a);this.y=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},D:function(){var a=this;a.ea=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.N?a.ea.apply(this.P,arguments):a.ea.apply(this,arguments)}},R:function(){this.ea&&(Function.prototype.toString=this.ea)},E:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.da(b.y,c+""),a.apply(this,arguments)}};I(R.history,"pushState",j,d),I(R.history,"replaceState",j,d)}if(c.console&&"console"in R&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};w(["debug","info","warn","error","log"],function(a,b){O(console,b,k)})}},S:function(){for(var a;this.u.length;){a=this.u.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},T:function(){for(var a in this.r)this.q[a]=this.r[a]},G:function(){var a=this;w(this.s,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},H:function(a){var b=Q.exec(a),c={},d=7;try{for(;d--;)c[P[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.l.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},K:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},B:function(){this.n||this.W.apply(this,arguments)},W:function(a,b){var c=this.Y(a,b);this._("handle",{stackInfo:a,options:b}),this.ga(a.name,a.message,a.url,a.lineno,c,b)},Y:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(w(a.stack,function(b,e){var f=c.ha(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.v,0)}),this.k.user&&(a.user=this.k.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),a=this.qa(a),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||v(a[b]))&&delete a[b]}),s(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!v(a)&&(!s(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.na()?void this.A("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function F(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&l(b))for(c=b.split(/\s+/),f=0;fc?Q(a,b-1):d}function R(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?X:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function S(a,b){function c(a){return m(a)?a.map(function(a){return c(a)}):k(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!m(b)||m(b)&&0===b.length)return a;var d,e=A(b),f="********";try{d=JSON.parse(T(a))}catch(g){return a}return c(d)}var T=a(9),U="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},V=3,W=51200,X=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isDOMError:g,isDOMException:h,isUndefined:i,isFunction:j,isPlainObject:k,isString:l,isArray:m,isEmptyObject:n,supportsErrorEvent:o,supportsDOMError:p,supportsDOMException:q,supportsFetch:r,supportsReferrerPolicy:s,supportsPromiseRejectionEvent:t,wrappedCallback:u,each:v,objectMerge:w,truncate:y,objectFrozen:x,hasKey:z,joinRegExp:A,urlencode:B,uuid4:D,htmlTreeAsString:E,htmlElementAsString:F,isSameException:I,isSameStacktrace:J,parseUrl:C,fill:K,safeJoin:L,serializeException:Q,serializeKeysForMessage:R,sanitize:S}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{9:9}],8:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}function e(){return"undefined"==typeof document||null==document.location?"":(document.location.origin||(document.location.origin=document.location.protocol+"//"+document.location.hostname+(document.location.port?":"+document.location.port:"")),document.location.origin)}var f=a(7),g={collectWindowErrors:!0,debug:!1},h="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},i=[].slice,j="?",k=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;g.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function e(a,b){var c=null;if(!b||g.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(i.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,h,i){var l=null,m=f.isErrorEvent(i)?i.error:i,n=f.isErrorEvent(a)?a.message:a;if(v)g.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&f.isError(m))l=g.computeStackTrace(m),e(l,!0);else{var p,r={url:b,line:c,column:h},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(k);p&&(s=p[1],n=p[2])}r.func=j,l={name:s,message:n,url:d(),stack:[r]},e(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=h.onerror,h.onerror=l,r=!0)}function n(){r&&(h.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,e.apply(null,[a,!1].concat(b))}function p(a,b){var c=i.call(arguments,1);if(v){if(u===a)return;o()}var d=g.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),g.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,f,g=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,h=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,i=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,k=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,l=/\((\S*)(?::(\d+))(?::(\d+))\)/,m=a.stack.split("\n"),n=[],o=(/^(.*) is undefined$/.exec(a.message),0),p=m.length;o eval")>-1;r&&(b=k.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==o||c[5]||"undefined"==typeof a.columnNumber||(n[0].column=a.columnNumber+1),f={url:c[3],func:c[1]||j,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}if(!f.func&&f.line&&(f.func=j),f.url&&"blob:"===f.url.substr(0,5)){var s=new XMLHttpRequest;if(s.open("GET",f.url,!1),s.send(null),200===s.status){var t=s.responseText||"";t=t.slice(-300);var u=t.match(/\/\/# sourceMappingURL=(.*)$/);if(u){var v=u[1];"~"===v.charAt(0)&&(v=e()+v.slice(1)),f.url=v.slice(0,-4)}}}n.push(f)}return n.length?{name:a.name,message:a.message,url:d(),stack:n}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=j),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1; if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,e){for(var h,i,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==f&&o!==g.report){if(i={url:null,func:j,line:null,column:null},o.name?i.func=o.name:(h=k.exec(o.toString()))&&(i.func=h[1]),"undefined"==typeof i.func)try{i.func=h.input.substring(0,h.input.indexOf("{"))}catch(p){}m[""+o]?n=!0:m[""+o]=!0,l.push(i)}e&&l.splice(0,e);var q={name:a.name,message:a.message,url:d(),stack:l};return b(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),q}function f(b,e){var f=null;e=null==e?0:+e;try{if(f=a(b))return f}catch(h){if(g.debug)throw h}try{if(f=c(b,e+1))return f}catch(h){if(g.debug)throw h}return{name:b.name,message:b.message,url:d()}}return f.augmentStackTraceWithInitialElement=b,f.computeStackTraceFromStackProp=a,f}(),b.exports=g}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{7:7}],9:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}],10:[function(a,b,c){function d(a,b){var c=(65535&a)+(65535&b),d=(a>>16)+(b>>16)+(c>>16);return d<<16|65535&c}function e(a,b){return a<>>32-b}function f(a,b,c,f,g,h){return d(e(d(d(b,a),d(f,h)),g),c)}function g(a,b,c,d,e,g,h){return f(b&c|~b&d,a,b,e,g,h)}function h(a,b,c,d,e,g,h){return f(b&d|c&~d,a,b,e,g,h)}function i(a,b,c,d,e,g,h){return f(b^c^d,a,b,e,g,h)}function j(a,b,c,d,e,g,h){return f(c^(b|~d),a,b,e,g,h)}function k(a,b){a[b>>5]|=128<>>9<<4)+14]=b;var c,e,f,k,l,m=1732584193,n=-271733879,o=-1732584194,p=271733878;for(c=0;c>5]>>>b%32&255);return c}function m(a){var b,c=[];for(c[(a.length>>2)-1]=void 0,b=0;b>5]|=(255&a.charCodeAt(b/8))<16&&(e=k(e,8*a.length)),c=0;c<16;c+=1)f[c]=909522486^e[c],g[c]=1549556828^e[c];return d=k(f.concat(m(b)),512+8*b.length),l(k(g.concat(d),640))}function p(a){var b,c,d="0123456789abcdef",e="";for(c=0;c>>4&15)+d.charAt(15&b);return e}function q(a){return unescape(encodeURIComponent(a))}function r(a){return n(q(a))}function s(a){return p(r(a))}function t(a,b){return o(q(a),q(b))}function u(a,b){return p(t(a,b))}function v(a,b,c){return b?c?t(b,a):u(b,a):c?r(a):s(a)}b.exports=v},{}]},{},[6,1,2])(6)}); //# sourceMappingURL=raven.min.js.map \ No newline at end of file diff --git a/dist/angular,console/raven.min.js.map b/dist/angular,console/raven.min.js.map index 367a5f9cef5a..2746aeeab26a 100644 --- a/dist/angular,console/raven.min.js.map +++ b/dist/angular,console/raven.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","angularPlugin","angular","RavenProvider","$get","$window","ExceptionHandlerProvider","$provide","decorator","exceptionHandler","R","$delegate","ex","cause","captureException","extra","moduleName","provider","config","setDataCallback","wrappedCallback","data","_normalizeData","angularPattern","exception","values","matches","exec","value","type","message","angularDocs","substr","addPlugin","6","7","2","consolePlugin","console","pluginOptions","logLevels","levels","push","callback","msg","captureMessage","level","pop","wrapConsoleMethod","wrapMethod","4","3","RavenConfigError","name","prototype","constructor","utils","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","safeJoin","logger","Function","apply","5","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","sanitizeKeys","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isErrorEvent","isDOMError","isDOMException","isError","isObject","isPlainObject","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","sanitize","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","dsn","options","_logDebug","globalOptions","key","setDSN","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","toString","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","context","func","undefined","wrap","_before","wrapped","deep","_ignoreNextOnError","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","U","event","reason","unhandledPromiseRejection","C","_promiseRejectionHandler","bind","addEventListener","Q","removeEventListener","trimHeadFrames","error","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","V","currentOptions","exKeys","Object","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","M","setTimeout","_","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","aa","evtName","_keypressTimeout","target","category","ca","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","da","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","D","_originalFunctionToString","E","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","F","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","S","builtin","T","G","installer","concat","H","str","m","allowSecretKey","K","port","B","W","stackInfo","_triggerEvent","_processException","lineno","Y","frame","_normalizeFrame","in_app","ha","stackInfoUrl","normalized","filename","line","colno","column","function","ga","prefixedMessage","culprit","ia","request","Referer","breadcrumbs","_trimBreadcrumbs","ja","urlProp","urlProps","ka","httpData","userAgent","User-Agent","referrer","z","_backoffDuration","_backoffStart","na","oa","current","last","pa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Z","baseData","project","platform","_getHttpData","serverName","server_name","_sanitizeData","forEach","random","_sendProcessedPayload","qa","sa","ra","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","ta","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","onerror","open","setRequestHeader","send","ua","hash","evaluated","A","$","setUser","setReleaseContext","10","8","9","RavenConstructor","_Raven","noConflict","Client","what","supportsErrorEvent","ErrorEvent","supportsDOMError","DOMError","supportsDOMException","DOMException","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","sanitizeMask","safeInput","o_O","getLocationHref","getLocationOrigin","origin","hostname","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","responseText","sourceMaps","sourceMapAddress","charAt","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","y","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","string","raw"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file +{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","angularPlugin","angular","RavenProvider","$get","$window","ExceptionHandlerProvider","$provide","decorator","exceptionHandler","R","$delegate","ex","cause","captureException","extra","moduleName","provider","config","setDataCallback","wrappedCallback","data","_normalizeData","angularPattern","exception","values","matches","exec","value","type","message","angularDocs","substr","addPlugin","6","7","2","consolePlugin","console","pluginOptions","logLevels","levels","push","callback","msg","captureMessage","level","pop","wrapConsoleMethod","wrapMethod","4","3","RavenConfigError","name","prototype","constructor","utils","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","safeJoin","logger","Function","apply","5","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","sanitizeKeys","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isErrorEvent","isDOMError","isDOMException","isError","isObject","isPlainObject","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","sanitize","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","dsn","options","_logDebug","globalOptions","key","setDSN","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","toString","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","context","func","undefined","wrap","_before","wrapped","deep","_ignoreNextOnError","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","U","event","reason","unhandledPromiseRejection","C","_promiseRejectionHandler","bind","addEventListener","Q","removeEventListener","trimHeadFrames","error","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","V","currentOptions","exKeys","Object","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","M","setTimeout","_","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","aa","evtName","_keypressTimeout","target","category","ca","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","da","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","D","_originalFunctionToString","E","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","F","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","S","builtin","T","G","installer","concat","H","str","m","allowSecretKey","K","port","B","W","stackInfo","_triggerEvent","_processException","lineno","Y","frame","_normalizeFrame","in_app","ha","stackInfoUrl","normalized","filename","line","colno","column","function","ga","prefixedMessage","transaction","ia","request","Referer","breadcrumbs","_trimBreadcrumbs","ja","urlProp","urlProps","ka","httpData","userAgent","User-Agent","referrer","z","_backoffDuration","_backoffStart","na","oa","current","last","pa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Z","baseData","project","platform","_getHttpData","serverName","server_name","_sanitizeData","forEach","random","_sendProcessedPayload","qa","sa","ra","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","ta","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","onerror","open","setRequestHeader","send","ua","hash","evaluated","A","$","setUser","setReleaseContext","10","8","9","RavenConstructor","_Raven","noConflict","Client","what","supportsErrorEvent","ErrorEvent","supportsDOMError","DOMError","supportsDOMException","DOMException","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","sanitizeMask","safeInput","o_O","getLocationHref","getLocationOrigin","origin","hostname","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","responseText","sourceMaps","sourceMapAddress","charAt","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","y","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","string","raw"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file diff --git a/dist/angular,ember,require,vue/raven.js b/dist/angular,ember,require,vue/raven.js index d8d40428e497..1a82503e2ea2 100644 --- a/dist/angular,ember,require,vue/raven.js +++ b/dist/angular,ember,require,vue/raven.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.25.1 (b6f3c7a) | github.com/getsentry/raven-js */ +/*! Raven.js 3.25.2 (30b6d4e) | github.com/getsentry/raven-js */ /* * Includes TraceKit @@ -294,7 +294,11 @@ function now() { var _window = typeof window !== 'undefined' ? window - : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; + : typeof global !== 'undefined' + ? global + : typeof self !== 'undefined' + ? self + : {}; var _document = _window.document; var _navigator = _window.navigator; @@ -384,7 +388,7 @@ Raven.prototype = { // webpack (using a build step causes webpack #1617). Grunt verifies that // this value matches package.json during build. // See: https://github.com/getsentry/raven-js/issues/465 - VERSION: '3.25.1', + VERSION: '3.25.2', debug: false, @@ -1940,7 +1944,7 @@ Raven.prototype = { } ] }, - culprit: fileurl + transaction: fileurl }, options ); @@ -2055,7 +2059,7 @@ Raven.prototype = { if ( !last || current.message !== last.message || // defined for captureMessage - current.culprit !== last.culprit // defined for captureException/onerror + current.transaction !== last.transaction // defined for captureException/onerror ) return false; diff --git a/dist/angular,ember,require,vue/raven.min.js b/dist/angular,ember,require,vue/raven.min.js index 309a90e1eb6b..c00e723a9132 100644 --- a/dist/angular,ember,require,vue/raven.min.js +++ b/dist/angular,ember,require,vue/raven.min.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.25.1 (b6f3c7a) | github.com/getsentry/raven-js */ -!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.Raven=a()}}(function(){var a;return function b(a,c,d){function e(g,h){if(!c[g]){if(!a[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};a[g][0].call(k.exports,function(b){var c=a[g][1][b];return e(c?c:b)},k,k.exports,b,a,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;g":"anonymous component")+(a._isVue&&a.$options.__file?" at "+a.$options.__file:"")}function e(a,b){if(b=b||window.Vue,b&&b.config){var c=b.config.errorHandler;b.config.errorHandler=function(b,e,f){var g={};"[object Object]"===Object.prototype.toString.call(e)&&(g.componentName=d(e),g.propsData=e.$options.propsData),"undefined"!=typeof f&&(g.lifecycleHook=f),a.captureException(b,{extra:g}),"function"==typeof c&&c.call(this,b,e,f)}}}b.exports=e,a(8).addPlugin(b.exports)},{8:8}],5:[function(a,b,c){function d(a){this.name="RavenConfigError",this.message=a}d.prototype=new Error,d.prototype.constructor=d,b.exports=d},{}],6:[function(a,b,c){var d=a(9),e=function(a,b,c){var e=a[b],f=a;if(b in a){var g="warn"===b?"warning":b;a[b]=function(){var a=[].slice.call(arguments),h=d.safeJoin(a," "),i={level:g,logger:"console",extra:{arguments:a}};"assert"===b?a[0]===!1&&(h="Assertion failed: "+(d.safeJoin(a.slice(1)," ")||"console.assert"),i.extra.arguments=a.slice(1),c&&c(h,i)):c&&c(h,i),e&&Function.prototype.apply.call(e,f,a)}}};b.exports={wrapMethod:e}},{9:9}],7:[function(a,b,c){(function(c){function d(){return+new Date}function e(a,b){return s(b)?function(c){return b(c,a)}:b}function f(){this.b=!("object"!=typeof JSON||!JSON.stringify),this.c=!r(S),this.d=!r(T),this.e=null,this.f=null,this.g=null,this.h=null,this.i=null,this.j=null,this.k={},this.l={release:R.SENTRY_RELEASE&&R.SENTRY_RELEASE.id,logger:"javascript",ignoreErrors:[],ignoreUrls:[],whitelistUrls:[],includePaths:[],headers:null,collectWindowErrors:!0,captureUnhandledRejections:!0,maxMessageLength:0,maxUrlLength:250,stackTraceLimit:50,autoBreadcrumbs:!0,instrument:!0,sampleRate:1,sanitizeKeys:[]},this.m={method:"POST",keepalive:!0,referrerPolicy:K()?"origin":""},this.n=0,this.o=!1,this.p=Error.stackTraceLimit,this.q=R.console||{},this.r={},this.s=[],this.t=d(),this.u=[],this.v=[],this.w=null,this.x=R.location,this.y=this.x&&this.x.href,this.z();for(var a in this.q)this.r[a]=this.q[a]}var g=a(10),h=a(11),i=a(12),j=a(5),k=a(9),l=k.isErrorEvent,m=k.isDOMError,n=k.isDOMException,o=k.isError,p=k.isObject,q=k.isPlainObject,r=k.isUndefined,s=k.isFunction,t=k.isString,u=k.isArray,v=k.isEmptyObject,w=k.each,x=k.objectMerge,y=k.truncate,z=k.objectFrozen,A=k.hasKey,B=k.joinRegExp,C=k.urlencode,D=k.uuid4,E=k.htmlTreeAsString,F=k.isSameException,G=k.isSameStacktrace,H=k.parseUrl,I=k.fill,J=k.supportsFetch,K=k.supportsReferrerPolicy,L=k.serializeKeysForMessage,M=k.serializeException,N=k.sanitize,O=a(6).wrapMethod,P="source protocol user pass host port path".split(" "),Q=/^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/,R="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},S=R.document,T=R.navigator;f.prototype={VERSION:"3.25.1",debug:!1,TraceKit:g,config:function(a,b){var c=this;if(c.h)return this.A("error","Error: Raven has already been configured"),c;if(!a)return c;var d=c.l;b&&w(b,function(a,b){"tags"===a||"extra"===a||"user"===a?c.k[a]=b:d[a]=b}),c.setDSN(a),d.ignoreErrors.push(/^Script error\.?$/),d.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/),d.ignoreErrors=B(d.ignoreErrors),d.ignoreUrls=!!d.ignoreUrls.length&&B(d.ignoreUrls),d.whitelistUrls=!!d.whitelistUrls.length&&B(d.whitelistUrls),d.includePaths=B(d.includePaths),d.maxBreadcrumbs=Math.max(0,Math.min(d.maxBreadcrumbs||100,100));var e={xhr:!0,console:!0,dom:!0,location:!0,sentry:!0},f=d.autoBreadcrumbs;"[object Object]"==={}.toString.call(f)?f=x(e,f):f!==!1&&(f=e),d.autoBreadcrumbs=f;var h={tryCatch:!0},i=d.instrument;return"[object Object]"==={}.toString.call(i)?i=x(h,i):i!==!1&&(i=h),d.instrument=i,g.collectWindowErrors=!!d.collectWindowErrors,c},install:function(){var a=this;return a.isSetup()&&!a.o&&(g.report.subscribe(function(){a.B.apply(a,arguments)}),a.l.captureUnhandledRejections&&a.C(),a.D(),a.l.instrument&&a.l.instrument.tryCatch&&a.E(),a.l.autoBreadcrumbs&&a.F(),a.G(),a.o=!0),Error.stackTraceLimit=a.l.stackTraceLimit,this},setDSN:function(a){var b=this,c=b.H(a),d=c.path.lastIndexOf("/"),e=c.path.substr(1,d);b.I=a,b.i=c.user,b.J=c.pass&&c.pass.substr(1),b.j=c.path.substr(d+1),b.h=b.K(c),b.L=b.h+"/"+e+"api/"+b.j+"/store/",this.z()},context:function(a,b,c){return s(a)&&(c=b||[],b=a,a=void 0),this.wrap(a,b).apply(this,c)},wrap:function(a,b,c){function d(){var d=[],f=arguments.length,g=!a||a&&a.deep!==!1;for(c&&s(c)&&c.apply(this,arguments);f--;)d[f]=g?e.wrap(a,arguments[f]):arguments[f];try{return b.apply(this,d)}catch(h){throw e.M(),e.captureException(h,a),h}}var e=this;if(r(b)&&!s(a))return a;if(s(a)&&(b=a,a=void 0),!s(b))return b;try{if(b.N)return b;if(b.O)return b.O}catch(f){return b}for(var g in b)A(b,g)&&(d[g]=b[g]);return d.prototype=b.prototype,b.O=d,d.N=!0,d.P=b,d},uninstall:function(){return g.report.uninstall(),this.Q(),this.R(),this.S(),this.T(),Error.stackTraceLimit=this.p,this.o=!1,this},U:function(a){this.A("debug","Raven caught unhandled promise rejection:",a),this.captureException(a.reason,{extra:{unhandledPromiseRejection:!0}})},C:function(){return this.U=this.U.bind(this),R.addEventListener&&R.addEventListener("unhandledrejection",this.U),this},Q:function(){return R.removeEventListener&&R.removeEventListener("unhandledrejection",this.U),this},captureException:function(a,b){if(b=x({trimHeadFrames:0},b?b:{}),l(a)&&a.error)a=a.error;else{if(m(a)||n(a)){var c=a.name||(m(a)?"DOMError":"DOMException"),d=a.message?c+": "+a.message:c;return this.captureMessage(d,x(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}))}if(o(a))a=a;else{if(!q(a))return this.captureMessage(a,x(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}));b=this.V(b,a),a=new Error(b.message)}}this.e=a;try{var e=g.computeStackTrace(a);this.W(e,b)}catch(f){if(a!==f)throw f}return this},V:function(a,b){var c=Object.keys(b).sort(),d=x(a,{message:"Non-Error exception captured with keys: "+L(c),fingerprint:[i(c)],extra:a.extra||{}});return d.extra.X=M(b),d},captureMessage:function(a,b){if(!this.l.ignoreErrors.test||!this.l.ignoreErrors.test(a)){b=b||{},a+="";var c,d=x({message:a},b);try{throw new Error(a)}catch(e){c=e}c.name=null;var f=g.computeStackTrace(c),h=u(f.stack)&&f.stack[1];h&&"Raven.captureException"===h.func&&(h=f.stack[2]);var i=h&&h.url||"";if((!this.l.ignoreUrls.test||!this.l.ignoreUrls.test(i))&&(!this.l.whitelistUrls.test||this.l.whitelistUrls.test(i))){if(this.l.stacktrace||b&&b.stacktrace){d.fingerprint=null==d.fingerprint?a:d.fingerprint,b=x({trimHeadFrames:0},b),b.trimHeadFrames+=1;var j=this.Y(f,b);d.stacktrace={frames:j.reverse()}}return d.fingerprint&&(d.fingerprint=u(d.fingerprint)?d.fingerprint:[d.fingerprint]),this.Z(d),this}}},captureBreadcrumb:function(a){var b=x({timestamp:d()/1e3},a);if(s(this.l.breadcrumbCallback)){var c=this.l.breadcrumbCallback(b);if(p(c)&&!v(c))b=c;else if(c===!1)return this}return this.v.push(b),this.v.length>this.l.maxBreadcrumbs&&this.v.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.s.push([a,b]),this.o&&this.G(),this},setUserContext:function(a){return this.k.user=a,this},setExtraContext:function(a){return this.$("extra",a),this},setTagsContext:function(a){return this.$("tags",a),this},clearContext:function(){return this.k={},this},getContext:function(){return JSON.parse(h(this.k))},setEnvironment:function(a){return this.l.environment=a,this},setRelease:function(a){return this.l.release=a,this},setDataCallback:function(a){var b=this.l.dataCallback;return this.l.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.l.breadcrumbCallback;return this.l.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.l.shouldSendCallback;return this.l.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.l.transport=a,this},lastException:function(){return this.e},lastEventId:function(){return this.g},isSetup:function(){return!!this.b&&(!!this.h||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.A("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=R.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(S){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.I;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.k.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.K(this.H(c)),h=S.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(S.head||S.body).appendChild(h)}},M:function(){var a=this;this.n+=1,setTimeout(function(){a.n-=1})},_:function(a,b){var c,d;if(this.c){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),S.createEvent?(c=S.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=S.createEventObject(),c.eventType=a);for(d in b)A(b,d)&&(c[d]=b[d]);if(S.createEvent)S.dispatchEvent(c);else try{S.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},aa:function(a){var b=this;return function(c){if(b.ba=null,b.w!==c){b.w=c;var d;try{d=E(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ca:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.ba;g||a.aa("input")(c),clearTimeout(g),a.ba=setTimeout(function(){a.ba=null},b)}}},da:function(a,b){var c=H(this.x.href),d=H(b),e=H(a);this.y=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},D:function(){var a=this;a.ea=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.N?a.ea.apply(this.P,arguments):a.ea.apply(this,arguments)}},R:function(){this.ea&&(Function.prototype.toString=this.ea)},E:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.da(b.y,c+""),a.apply(this,arguments)}};I(R.history,"pushState",j,d),I(R.history,"replaceState",j,d)}if(c.console&&"console"in R&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};w(["debug","info","warn","error","log"],function(a,b){O(console,b,k)})}},S:function(){for(var a;this.u.length;){a=this.u.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},T:function(){for(var a in this.r)this.q[a]=this.r[a]},G:function(){var a=this;w(this.s,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},H:function(a){var b=Q.exec(a),c={},d=7;try{for(;d--;)c[P[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.l.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},K:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},B:function(){this.n||this.W.apply(this,arguments)},W:function(a,b){var c=this.Y(a,b);this._("handle",{stackInfo:a,options:b}),this.ga(a.name,a.message,a.url,a.lineno,c,b)},Y:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(w(a.stack,function(b,e){var f=c.ha(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.v,0)}),this.k.user&&(a.user=this.k.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),a=this.qa(a),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||v(a[b]))&&delete a[b]}),s(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!v(a)&&(!s(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.na()?void this.A("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function F(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&l(b))for(c=b.split(/\s+/),f=0;fc?Q(a,b-1):d}function R(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?X:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function S(a,b){function c(a){return m(a)?a.map(function(a){return c(a)}):k(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!m(b)||m(b)&&0===b.length)return a;var d,e=A(b),f="********";try{d=JSON.parse(T(a))}catch(g){return a}return c(d)}var T=a(11),U="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},V=3,W=51200,X=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isDOMError:g,isDOMException:h,isUndefined:i,isFunction:j,isPlainObject:k,isString:l,isArray:m,isEmptyObject:n,supportsErrorEvent:o,supportsDOMError:p,supportsDOMException:q,supportsFetch:r,supportsReferrerPolicy:s,supportsPromiseRejectionEvent:t,wrappedCallback:u,each:v,objectMerge:w,truncate:y,objectFrozen:x,hasKey:z,joinRegExp:A,urlencode:B,uuid4:D,htmlTreeAsString:E,htmlElementAsString:F,isSameException:I,isSameStacktrace:J,parseUrl:C,fill:K,safeJoin:L,serializeException:Q,serializeKeysForMessage:R,sanitize:S}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{11:11}],10:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}function e(){return"undefined"==typeof document||null==document.location?"":(document.location.origin||(document.location.origin=document.location.protocol+"//"+document.location.hostname+(document.location.port?":"+document.location.port:"")),document.location.origin)}var f=a(9),g={collectWindowErrors:!0,debug:!1},h="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},i=[].slice,j="?",k=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;g.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function e(a,b){var c=null;if(!b||g.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(i.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,h,i){var l=null,m=f.isErrorEvent(i)?i.error:i,n=f.isErrorEvent(a)?a.message:a;if(v)g.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&f.isError(m))l=g.computeStackTrace(m),e(l,!0);else{var p,r={url:b,line:c,column:h},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(k);p&&(s=p[1],n=p[2])}r.func=j,l={name:s,message:n,url:d(),stack:[r]},e(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=h.onerror,h.onerror=l,r=!0)}function n(){r&&(h.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,e.apply(null,[a,!1].concat(b))}function p(a,b){var c=i.call(arguments,1);if(v){if(u===a)return;o()}var d=g.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),g.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,f,g=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,h=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,i=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,k=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,l=/\((\S*)(?::(\d+))(?::(\d+))\)/,m=a.stack.split("\n"),n=[],o=(/^(.*) is undefined$/.exec(a.message),0),p=m.length;o eval")>-1;r&&(b=k.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==o||c[5]||"undefined"==typeof a.columnNumber||(n[0].column=a.columnNumber+1),f={url:c[3],func:c[1]||j,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}if(!f.func&&f.line&&(f.func=j),f.url&&"blob:"===f.url.substr(0,5)){var s=new XMLHttpRequest;if(s.open("GET",f.url,!1),s.send(null),200===s.status){var t=s.responseText||"";t=t.slice(-300);var u=t.match(/\/\/# sourceMappingURL=(.*)$/);if(u){var v=u[1];"~"===v.charAt(0)&&(v=e()+v.slice(1)),f.url=v.slice(0,-4)}}}n.push(f)}return n.length?{name:a.name,message:a.message,url:d(),stack:n}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=j),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,e){for(var h,i,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==f&&o!==g.report){if(i={url:null,func:j,line:null,column:null},o.name?i.func=o.name:(h=k.exec(o.toString()))&&(i.func=h[1]),"undefined"==typeof i.func)try{i.func=h.input.substring(0,h.input.indexOf("{"))}catch(p){}m[""+o]?n=!0:m[""+o]=!0,l.push(i)}e&&l.splice(0,e);var q={name:a.name,message:a.message,url:d(),stack:l};return b(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),q}function f(b,e){var f=null;e=null==e?0:+e;try{if(f=a(b))return f}catch(h){if(g.debug)throw h}try{if(f=c(b,e+1))return f}catch(h){if(g.debug)throw h}return{name:b.name,message:b.message,url:d()}}return f.augmentStackTraceWithInitialElement=b,f.computeStackTraceFromStackProp=a,f}(),b.exports=g}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{9:9}],11:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}],12:[function(a,b,c){function d(a,b){var c=(65535&a)+(65535&b),d=(a>>16)+(b>>16)+(c>>16);return d<<16|65535&c}function e(a,b){return a<>>32-b}function f(a,b,c,f,g,h){return d(e(d(d(b,a),d(f,h)),g),c)}function g(a,b,c,d,e,g,h){return f(b&c|~b&d,a,b,e,g,h)}function h(a,b,c,d,e,g,h){return f(b&d|c&~d,a,b,e,g,h)}function i(a,b,c,d,e,g,h){return f(b^c^d,a,b,e,g,h)}function j(a,b,c,d,e,g,h){return f(c^(b|~d),a,b,e,g,h)}function k(a,b){a[b>>5]|=128<>>9<<4)+14]=b;var c,e,f,k,l,m=1732584193,n=-271733879,o=-1732584194,p=271733878;for(c=0;c>5]>>>b%32&255);return c}function m(a){var b,c=[];for(c[(a.length>>2)-1]=void 0,b=0;b>5]|=(255&a.charCodeAt(b/8))<16&&(e=k(e,8*a.length)),c=0;c<16;c+=1)f[c]=909522486^e[c],g[c]=1549556828^e[c];return d=k(f.concat(m(b)),512+8*b.length),l(k(g.concat(d),640))}function p(a){var b,c,d="0123456789abcdef",e="";for(c=0;c>>4&15)+d.charAt(15&b);return e}function q(a){return unescape(encodeURIComponent(a))}function r(a){return n(q(a))}function s(a){return p(r(a))}function t(a,b){return o(q(a),q(b))}function u(a,b){return p(t(a,b))}function v(a,b,c){return b?c?t(b,a):u(b,a):c?r(a):s(a)}b.exports=v},{}]},{},[8,1,2,3,4])(8)}); +/*! Raven.js 3.25.2 (30b6d4e) | github.com/getsentry/raven-js */ +!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.Raven=a()}}(function(){var a;return function b(a,c,d){function e(g,h){if(!c[g]){if(!a[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};a[g][0].call(k.exports,function(b){var c=a[g][1][b];return e(c?c:b)},k,k.exports,b,a,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;g":"anonymous component")+(a._isVue&&a.$options.__file?" at "+a.$options.__file:"")}function e(a,b){if(b=b||window.Vue,b&&b.config){var c=b.config.errorHandler;b.config.errorHandler=function(b,e,f){var g={};"[object Object]"===Object.prototype.toString.call(e)&&(g.componentName=d(e),g.propsData=e.$options.propsData),"undefined"!=typeof f&&(g.lifecycleHook=f),a.captureException(b,{extra:g}),"function"==typeof c&&c.call(this,b,e,f)}}}b.exports=e,a(8).addPlugin(b.exports)},{8:8}],5:[function(a,b,c){function d(a){this.name="RavenConfigError",this.message=a}d.prototype=new Error,d.prototype.constructor=d,b.exports=d},{}],6:[function(a,b,c){var d=a(9),e=function(a,b,c){var e=a[b],f=a;if(b in a){var g="warn"===b?"warning":b;a[b]=function(){var a=[].slice.call(arguments),h=d.safeJoin(a," "),i={level:g,logger:"console",extra:{arguments:a}};"assert"===b?a[0]===!1&&(h="Assertion failed: "+(d.safeJoin(a.slice(1)," ")||"console.assert"),i.extra.arguments=a.slice(1),c&&c(h,i)):c&&c(h,i),e&&Function.prototype.apply.call(e,f,a)}}};b.exports={wrapMethod:e}},{9:9}],7:[function(a,b,c){(function(c){function d(){return+new Date}function e(a,b){return s(b)?function(c){return b(c,a)}:b}function f(){this.b=!("object"!=typeof JSON||!JSON.stringify),this.c=!r(S),this.d=!r(T),this.e=null,this.f=null,this.g=null,this.h=null,this.i=null,this.j=null,this.k={},this.l={release:R.SENTRY_RELEASE&&R.SENTRY_RELEASE.id,logger:"javascript",ignoreErrors:[],ignoreUrls:[],whitelistUrls:[],includePaths:[],headers:null,collectWindowErrors:!0,captureUnhandledRejections:!0,maxMessageLength:0,maxUrlLength:250,stackTraceLimit:50,autoBreadcrumbs:!0,instrument:!0,sampleRate:1,sanitizeKeys:[]},this.m={method:"POST",keepalive:!0,referrerPolicy:K()?"origin":""},this.n=0,this.o=!1,this.p=Error.stackTraceLimit,this.q=R.console||{},this.r={},this.s=[],this.t=d(),this.u=[],this.v=[],this.w=null,this.x=R.location,this.y=this.x&&this.x.href,this.z();for(var a in this.q)this.r[a]=this.q[a]}var g=a(10),h=a(11),i=a(12),j=a(5),k=a(9),l=k.isErrorEvent,m=k.isDOMError,n=k.isDOMException,o=k.isError,p=k.isObject,q=k.isPlainObject,r=k.isUndefined,s=k.isFunction,t=k.isString,u=k.isArray,v=k.isEmptyObject,w=k.each,x=k.objectMerge,y=k.truncate,z=k.objectFrozen,A=k.hasKey,B=k.joinRegExp,C=k.urlencode,D=k.uuid4,E=k.htmlTreeAsString,F=k.isSameException,G=k.isSameStacktrace,H=k.parseUrl,I=k.fill,J=k.supportsFetch,K=k.supportsReferrerPolicy,L=k.serializeKeysForMessage,M=k.serializeException,N=k.sanitize,O=a(6).wrapMethod,P="source protocol user pass host port path".split(" "),Q=/^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/,R="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},S=R.document,T=R.navigator;f.prototype={VERSION:"3.25.2",debug:!1,TraceKit:g,config:function(a,b){var c=this;if(c.h)return this.A("error","Error: Raven has already been configured"),c;if(!a)return c;var d=c.l;b&&w(b,function(a,b){"tags"===a||"extra"===a||"user"===a?c.k[a]=b:d[a]=b}),c.setDSN(a),d.ignoreErrors.push(/^Script error\.?$/),d.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/),d.ignoreErrors=B(d.ignoreErrors),d.ignoreUrls=!!d.ignoreUrls.length&&B(d.ignoreUrls),d.whitelistUrls=!!d.whitelistUrls.length&&B(d.whitelistUrls),d.includePaths=B(d.includePaths),d.maxBreadcrumbs=Math.max(0,Math.min(d.maxBreadcrumbs||100,100));var e={xhr:!0,console:!0,dom:!0,location:!0,sentry:!0},f=d.autoBreadcrumbs;"[object Object]"==={}.toString.call(f)?f=x(e,f):f!==!1&&(f=e),d.autoBreadcrumbs=f;var h={tryCatch:!0},i=d.instrument;return"[object Object]"==={}.toString.call(i)?i=x(h,i):i!==!1&&(i=h),d.instrument=i,g.collectWindowErrors=!!d.collectWindowErrors,c},install:function(){var a=this;return a.isSetup()&&!a.o&&(g.report.subscribe(function(){a.B.apply(a,arguments)}),a.l.captureUnhandledRejections&&a.C(),a.D(),a.l.instrument&&a.l.instrument.tryCatch&&a.E(),a.l.autoBreadcrumbs&&a.F(),a.G(),a.o=!0),Error.stackTraceLimit=a.l.stackTraceLimit,this},setDSN:function(a){var b=this,c=b.H(a),d=c.path.lastIndexOf("/"),e=c.path.substr(1,d);b.I=a,b.i=c.user,b.J=c.pass&&c.pass.substr(1),b.j=c.path.substr(d+1),b.h=b.K(c),b.L=b.h+"/"+e+"api/"+b.j+"/store/",this.z()},context:function(a,b,c){return s(a)&&(c=b||[],b=a,a=void 0),this.wrap(a,b).apply(this,c)},wrap:function(a,b,c){function d(){var d=[],f=arguments.length,g=!a||a&&a.deep!==!1;for(c&&s(c)&&c.apply(this,arguments);f--;)d[f]=g?e.wrap(a,arguments[f]):arguments[f];try{return b.apply(this,d)}catch(h){throw e.M(),e.captureException(h,a),h}}var e=this;if(r(b)&&!s(a))return a;if(s(a)&&(b=a,a=void 0),!s(b))return b;try{if(b.N)return b;if(b.O)return b.O}catch(f){return b}for(var g in b)A(b,g)&&(d[g]=b[g]);return d.prototype=b.prototype,b.O=d,d.N=!0,d.P=b,d},uninstall:function(){return g.report.uninstall(),this.Q(),this.R(),this.S(),this.T(),Error.stackTraceLimit=this.p,this.o=!1,this},U:function(a){this.A("debug","Raven caught unhandled promise rejection:",a),this.captureException(a.reason,{extra:{unhandledPromiseRejection:!0}})},C:function(){return this.U=this.U.bind(this),R.addEventListener&&R.addEventListener("unhandledrejection",this.U),this},Q:function(){return R.removeEventListener&&R.removeEventListener("unhandledrejection",this.U),this},captureException:function(a,b){if(b=x({trimHeadFrames:0},b?b:{}),l(a)&&a.error)a=a.error;else{if(m(a)||n(a)){var c=a.name||(m(a)?"DOMError":"DOMException"),d=a.message?c+": "+a.message:c;return this.captureMessage(d,x(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}))}if(o(a))a=a;else{if(!q(a))return this.captureMessage(a,x(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}));b=this.V(b,a),a=new Error(b.message)}}this.e=a;try{var e=g.computeStackTrace(a);this.W(e,b)}catch(f){if(a!==f)throw f}return this},V:function(a,b){var c=Object.keys(b).sort(),d=x(a,{message:"Non-Error exception captured with keys: "+L(c),fingerprint:[i(c)],extra:a.extra||{}});return d.extra.X=M(b),d},captureMessage:function(a,b){if(!this.l.ignoreErrors.test||!this.l.ignoreErrors.test(a)){b=b||{},a+="";var c,d=x({message:a},b);try{throw new Error(a)}catch(e){c=e}c.name=null;var f=g.computeStackTrace(c),h=u(f.stack)&&f.stack[1];h&&"Raven.captureException"===h.func&&(h=f.stack[2]);var i=h&&h.url||"";if((!this.l.ignoreUrls.test||!this.l.ignoreUrls.test(i))&&(!this.l.whitelistUrls.test||this.l.whitelistUrls.test(i))){if(this.l.stacktrace||b&&b.stacktrace){d.fingerprint=null==d.fingerprint?a:d.fingerprint,b=x({trimHeadFrames:0},b),b.trimHeadFrames+=1;var j=this.Y(f,b);d.stacktrace={frames:j.reverse()}}return d.fingerprint&&(d.fingerprint=u(d.fingerprint)?d.fingerprint:[d.fingerprint]),this.Z(d),this}}},captureBreadcrumb:function(a){var b=x({timestamp:d()/1e3},a);if(s(this.l.breadcrumbCallback)){var c=this.l.breadcrumbCallback(b);if(p(c)&&!v(c))b=c;else if(c===!1)return this}return this.v.push(b),this.v.length>this.l.maxBreadcrumbs&&this.v.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.s.push([a,b]),this.o&&this.G(),this},setUserContext:function(a){return this.k.user=a,this},setExtraContext:function(a){return this.$("extra",a),this},setTagsContext:function(a){return this.$("tags",a),this},clearContext:function(){return this.k={},this},getContext:function(){return JSON.parse(h(this.k))},setEnvironment:function(a){return this.l.environment=a,this},setRelease:function(a){return this.l.release=a,this},setDataCallback:function(a){var b=this.l.dataCallback;return this.l.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.l.breadcrumbCallback;return this.l.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.l.shouldSendCallback;return this.l.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.l.transport=a,this},lastException:function(){return this.e},lastEventId:function(){return this.g},isSetup:function(){return!!this.b&&(!!this.h||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.A("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=R.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(S){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.I;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.k.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.K(this.H(c)),h=S.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(S.head||S.body).appendChild(h)}},M:function(){var a=this;this.n+=1,setTimeout(function(){a.n-=1})},_:function(a,b){var c,d;if(this.c){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),S.createEvent?(c=S.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=S.createEventObject(),c.eventType=a);for(d in b)A(b,d)&&(c[d]=b[d]);if(S.createEvent)S.dispatchEvent(c);else try{S.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},aa:function(a){var b=this;return function(c){if(b.ba=null,b.w!==c){b.w=c;var d;try{d=E(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ca:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.ba;g||a.aa("input")(c),clearTimeout(g),a.ba=setTimeout(function(){a.ba=null},b)}}},da:function(a,b){var c=H(this.x.href),d=H(b),e=H(a);this.y=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},D:function(){var a=this;a.ea=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.N?a.ea.apply(this.P,arguments):a.ea.apply(this,arguments)}},R:function(){this.ea&&(Function.prototype.toString=this.ea)},E:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.da(b.y,c+""),a.apply(this,arguments)}};I(R.history,"pushState",j,d),I(R.history,"replaceState",j,d)}if(c.console&&"console"in R&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};w(["debug","info","warn","error","log"],function(a,b){O(console,b,k)})}},S:function(){for(var a;this.u.length;){a=this.u.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},T:function(){for(var a in this.r)this.q[a]=this.r[a]},G:function(){var a=this;w(this.s,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},H:function(a){var b=Q.exec(a),c={},d=7;try{for(;d--;)c[P[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.l.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},K:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},B:function(){this.n||this.W.apply(this,arguments)},W:function(a,b){var c=this.Y(a,b);this._("handle",{stackInfo:a,options:b}),this.ga(a.name,a.message,a.url,a.lineno,c,b)},Y:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(w(a.stack,function(b,e){var f=c.ha(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.v,0)}),this.k.user&&(a.user=this.k.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),a=this.qa(a),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||v(a[b]))&&delete a[b]}),s(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!v(a)&&(!s(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.na()?void this.A("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function F(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&l(b))for(c=b.split(/\s+/),f=0;fc?Q(a,b-1):d}function R(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?X:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function S(a,b){function c(a){return m(a)?a.map(function(a){return c(a)}):k(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!m(b)||m(b)&&0===b.length)return a;var d,e=A(b),f="********";try{d=JSON.parse(T(a))}catch(g){return a}return c(d)}var T=a(11),U="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},V=3,W=51200,X=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isDOMError:g,isDOMException:h,isUndefined:i,isFunction:j,isPlainObject:k,isString:l,isArray:m,isEmptyObject:n,supportsErrorEvent:o,supportsDOMError:p,supportsDOMException:q,supportsFetch:r,supportsReferrerPolicy:s,supportsPromiseRejectionEvent:t,wrappedCallback:u,each:v,objectMerge:w,truncate:y,objectFrozen:x,hasKey:z,joinRegExp:A,urlencode:B,uuid4:D,htmlTreeAsString:E,htmlElementAsString:F,isSameException:I,isSameStacktrace:J,parseUrl:C,fill:K,safeJoin:L,serializeException:Q,serializeKeysForMessage:R,sanitize:S}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{11:11}],10:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}function e(){return"undefined"==typeof document||null==document.location?"":(document.location.origin||(document.location.origin=document.location.protocol+"//"+document.location.hostname+(document.location.port?":"+document.location.port:"")),document.location.origin)}var f=a(9),g={collectWindowErrors:!0,debug:!1},h="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},i=[].slice,j="?",k=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;g.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function e(a,b){var c=null;if(!b||g.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(i.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,h,i){var l=null,m=f.isErrorEvent(i)?i.error:i,n=f.isErrorEvent(a)?a.message:a;if(v)g.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&f.isError(m))l=g.computeStackTrace(m),e(l,!0);else{var p,r={url:b,line:c,column:h},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(k);p&&(s=p[1],n=p[2])}r.func=j,l={name:s,message:n,url:d(),stack:[r]},e(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=h.onerror,h.onerror=l,r=!0)}function n(){r&&(h.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,e.apply(null,[a,!1].concat(b))}function p(a,b){var c=i.call(arguments,1);if(v){if(u===a)return;o()}var d=g.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),g.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,f,g=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,h=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,i=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,k=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,l=/\((\S*)(?::(\d+))(?::(\d+))\)/,m=a.stack.split("\n"),n=[],o=(/^(.*) is undefined$/.exec(a.message),0),p=m.length;o eval")>-1;r&&(b=k.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==o||c[5]||"undefined"==typeof a.columnNumber||(n[0].column=a.columnNumber+1),f={url:c[3],func:c[1]||j,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}if(!f.func&&f.line&&(f.func=j),f.url&&"blob:"===f.url.substr(0,5)){var s=new XMLHttpRequest;if(s.open("GET",f.url,!1),s.send(null),200===s.status){var t=s.responseText||"";t=t.slice(-300);var u=t.match(/\/\/# sourceMappingURL=(.*)$/);if(u){var v=u[1];"~"===v.charAt(0)&&(v=e()+v.slice(1)),f.url=v.slice(0,-4)}}}n.push(f)}return n.length?{name:a.name,message:a.message,url:d(),stack:n}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=j),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,e){for(var h,i,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==f&&o!==g.report){if(i={url:null,func:j,line:null,column:null},o.name?i.func=o.name:(h=k.exec(o.toString()))&&(i.func=h[1]),"undefined"==typeof i.func)try{i.func=h.input.substring(0,h.input.indexOf("{"))}catch(p){}m[""+o]?n=!0:m[""+o]=!0,l.push(i)}e&&l.splice(0,e);var q={name:a.name,message:a.message,url:d(),stack:l};return b(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),q}function f(b,e){var f=null;e=null==e?0:+e;try{if(f=a(b))return f}catch(h){if(g.debug)throw h}try{if(f=c(b,e+1))return f}catch(h){if(g.debug)throw h}return{name:b.name,message:b.message,url:d()}}return f.augmentStackTraceWithInitialElement=b,f.computeStackTraceFromStackProp=a,f}(),b.exports=g}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{9:9}],11:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}],12:[function(a,b,c){function d(a,b){var c=(65535&a)+(65535&b),d=(a>>16)+(b>>16)+(c>>16);return d<<16|65535&c}function e(a,b){return a<>>32-b}function f(a,b,c,f,g,h){return d(e(d(d(b,a),d(f,h)),g),c)}function g(a,b,c,d,e,g,h){return f(b&c|~b&d,a,b,e,g,h)}function h(a,b,c,d,e,g,h){return f(b&d|c&~d,a,b,e,g,h)}function i(a,b,c,d,e,g,h){return f(b^c^d,a,b,e,g,h)}function j(a,b,c,d,e,g,h){return f(c^(b|~d),a,b,e,g,h)}function k(a,b){a[b>>5]|=128<>>9<<4)+14]=b;var c,e,f,k,l,m=1732584193,n=-271733879,o=-1732584194,p=271733878;for(c=0;c>5]>>>b%32&255);return c}function m(a){var b,c=[];for(c[(a.length>>2)-1]=void 0,b=0;b>5]|=(255&a.charCodeAt(b/8))<16&&(e=k(e,8*a.length)),c=0;c<16;c+=1)f[c]=909522486^e[c],g[c]=1549556828^e[c];return d=k(f.concat(m(b)),512+8*b.length),l(k(g.concat(d),640))}function p(a){var b,c,d="0123456789abcdef",e="";for(c=0;c>>4&15)+d.charAt(15&b);return e}function q(a){return unescape(encodeURIComponent(a))}function r(a){return n(q(a))}function s(a){return p(r(a))}function t(a,b){return o(q(a),q(b))}function u(a,b){return p(t(a,b))}function v(a,b,c){return b?c?t(b,a):u(b,a):c?r(a):s(a)}b.exports=v},{}]},{},[8,1,2,3,4])(8)}); //# sourceMappingURL=raven.min.js.map \ No newline at end of file diff --git a/dist/angular,ember,require,vue/raven.min.js.map b/dist/angular,ember,require,vue/raven.min.js.map index 4d2c2f314cba..84cb20bd2db6 100644 --- a/dist/angular,ember,require,vue/raven.min.js.map +++ b/dist/angular,ember,require,vue/raven.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","angularPlugin","angular","RavenProvider","$get","$window","ExceptionHandlerProvider","$provide","decorator","exceptionHandler","R","$delegate","ex","cause","captureException","extra","moduleName","provider","config","setDataCallback","wrappedCallback","data","_normalizeData","angularPattern","exception","values","matches","exec","value","type","message","angularDocs","substr","addPlugin","8","9","2","emberPlugin","Ember","_oldOnError","onerror","error","RSVP","on","reason","context","captureMessage","3","requirePlugin","wrap","deep","4","formatComponentName","vm","$root","name","_isVue","$options","_componentTag","__file","vuePlugin","Vue","errorHandler","info","metaData","Object","prototype","toString","componentName","propsData","lifecycleHook","5","RavenConfigError","constructor","6","utils","wrapMethod","console","level","callback","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","msg","safeJoin","logger","Function","apply","7","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","sanitizeKeys","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isErrorEvent","isDOMError","isDOMException","isError","isObject","isPlainObject","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","sanitize","wrapConsoleMethod","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","dsn","options","_logDebug","globalOptions","key","setDSN","push","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","func","undefined","_before","wrapped","_ignoreNextOnError","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","U","event","unhandledPromiseRejection","C","_promiseRejectionHandler","bind","addEventListener","Q","removeEventListener","trimHeadFrames","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","V","currentOptions","exKeys","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","M","setTimeout","_","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","aa","evtName","_keypressTimeout","target","category","ca","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","da","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","D","_originalFunctionToString","E","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","F","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","S","builtin","T","G","installer","concat","H","str","m","allowSecretKey","K","port","B","W","stackInfo","_triggerEvent","_processException","lineno","Y","frame","_normalizeFrame","in_app","ha","stackInfoUrl","normalized","filename","line","colno","column","function","ga","prefixedMessage","culprit","ia","request","Referer","breadcrumbs","_trimBreadcrumbs","ja","urlProp","urlProps","ka","httpData","userAgent","User-Agent","referrer","z","_backoffDuration","_backoffStart","na","oa","current","last","pa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Z","baseData","project","platform","_getHttpData","serverName","server_name","_sanitizeData","forEach","random","_sendProcessedPayload","qa","sa","ra","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","ta","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","open","setRequestHeader","send","ua","hash","evaluated","A","$","setUser","setReleaseContext","10","11","12","RavenConstructor","_Raven","noConflict","Client","what","supportsErrorEvent","ErrorEvent","supportsDOMError","DOMError","supportsDOMException","DOMException","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","sanitizeMask","safeInput","o_O","getLocationHref","getLocationOrigin","origin","hostname","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","responseText","sourceMaps","sourceMapAddress","charAt","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","y","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","string","raw"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file +{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","angularPlugin","angular","RavenProvider","$get","$window","ExceptionHandlerProvider","$provide","decorator","exceptionHandler","R","$delegate","ex","cause","captureException","extra","moduleName","provider","config","setDataCallback","wrappedCallback","data","_normalizeData","angularPattern","exception","values","matches","exec","value","type","message","angularDocs","substr","addPlugin","8","9","2","emberPlugin","Ember","_oldOnError","onerror","error","RSVP","on","reason","context","captureMessage","3","requirePlugin","wrap","deep","4","formatComponentName","vm","$root","name","_isVue","$options","_componentTag","__file","vuePlugin","Vue","errorHandler","info","metaData","Object","prototype","toString","componentName","propsData","lifecycleHook","5","RavenConfigError","constructor","6","utils","wrapMethod","console","level","callback","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","msg","safeJoin","logger","Function","apply","7","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","sanitizeKeys","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isErrorEvent","isDOMError","isDOMException","isError","isObject","isPlainObject","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","sanitize","wrapConsoleMethod","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","dsn","options","_logDebug","globalOptions","key","setDSN","push","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","func","undefined","_before","wrapped","_ignoreNextOnError","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","U","event","unhandledPromiseRejection","C","_promiseRejectionHandler","bind","addEventListener","Q","removeEventListener","trimHeadFrames","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","V","currentOptions","exKeys","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","M","setTimeout","_","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","aa","evtName","_keypressTimeout","target","category","ca","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","da","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","D","_originalFunctionToString","E","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","F","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","S","builtin","T","G","installer","concat","H","str","m","allowSecretKey","K","port","B","W","stackInfo","_triggerEvent","_processException","lineno","Y","frame","_normalizeFrame","in_app","ha","stackInfoUrl","normalized","filename","line","colno","column","function","ga","prefixedMessage","transaction","ia","request","Referer","breadcrumbs","_trimBreadcrumbs","ja","urlProp","urlProps","ka","httpData","userAgent","User-Agent","referrer","z","_backoffDuration","_backoffStart","na","oa","current","last","pa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Z","baseData","project","platform","_getHttpData","serverName","server_name","_sanitizeData","forEach","random","_sendProcessedPayload","qa","sa","ra","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","ta","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","open","setRequestHeader","send","ua","hash","evaluated","A","$","setUser","setReleaseContext","10","11","12","RavenConstructor","_Raven","noConflict","Client","what","supportsErrorEvent","ErrorEvent","supportsDOMError","DOMError","supportsDOMException","DOMException","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","sanitizeMask","safeInput","o_O","getLocationHref","getLocationOrigin","origin","hostname","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","responseText","sourceMaps","sourceMapAddress","charAt","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","y","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","string","raw"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file diff --git a/dist/angular,ember,require/raven.js b/dist/angular,ember,require/raven.js index 4acf48bb5c3a..ec05cb0764ed 100644 --- a/dist/angular,ember,require/raven.js +++ b/dist/angular,ember,require/raven.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.25.1 (b6f3c7a) | github.com/getsentry/raven-js */ +/*! Raven.js 3.25.2 (30b6d4e) | github.com/getsentry/raven-js */ /* * Includes TraceKit @@ -244,7 +244,11 @@ function now() { var _window = typeof window !== 'undefined' ? window - : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; + : typeof global !== 'undefined' + ? global + : typeof self !== 'undefined' + ? self + : {}; var _document = _window.document; var _navigator = _window.navigator; @@ -334,7 +338,7 @@ Raven.prototype = { // webpack (using a build step causes webpack #1617). Grunt verifies that // this value matches package.json during build. // See: https://github.com/getsentry/raven-js/issues/465 - VERSION: '3.25.1', + VERSION: '3.25.2', debug: false, @@ -1890,7 +1894,7 @@ Raven.prototype = { } ] }, - culprit: fileurl + transaction: fileurl }, options ); @@ -2005,7 +2009,7 @@ Raven.prototype = { if ( !last || current.message !== last.message || // defined for captureMessage - current.culprit !== last.culprit // defined for captureException/onerror + current.transaction !== last.transaction // defined for captureException/onerror ) return false; diff --git a/dist/angular,ember,require/raven.min.js b/dist/angular,ember,require/raven.min.js index 84a691b4bcfc..35a9353bcc37 100644 --- a/dist/angular,ember,require/raven.min.js +++ b/dist/angular,ember,require/raven.min.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.25.1 (b6f3c7a) | github.com/getsentry/raven-js */ -!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.Raven=a()}}(function(){var a;return function b(a,c,d){function e(g,h){if(!c[g]){if(!a[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};a[g][0].call(k.exports,function(b){var c=a[g][1][b];return e(c?c:b)},k,k.exports,b,a,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;gthis.l.maxBreadcrumbs&&this.v.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.s.push([a,b]),this.o&&this.G(),this},setUserContext:function(a){return this.k.user=a,this},setExtraContext:function(a){return this.$("extra",a),this},setTagsContext:function(a){return this.$("tags",a),this},clearContext:function(){return this.k={},this},getContext:function(){return JSON.parse(h(this.k))},setEnvironment:function(a){return this.l.environment=a,this},setRelease:function(a){return this.l.release=a,this},setDataCallback:function(a){var b=this.l.dataCallback;return this.l.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.l.breadcrumbCallback;return this.l.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.l.shouldSendCallback;return this.l.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.l.transport=a,this},lastException:function(){return this.e},lastEventId:function(){return this.g},isSetup:function(){return!!this.b&&(!!this.h||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.A("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=R.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(S){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.I;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.k.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.K(this.H(c)),h=S.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(S.head||S.body).appendChild(h)}},M:function(){var a=this;this.n+=1,setTimeout(function(){a.n-=1})},_:function(a,b){var c,d;if(this.c){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),S.createEvent?(c=S.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=S.createEventObject(),c.eventType=a);for(d in b)A(b,d)&&(c[d]=b[d]);if(S.createEvent)S.dispatchEvent(c);else try{S.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},aa:function(a){var b=this;return function(c){if(b.ba=null,b.w!==c){b.w=c;var d;try{d=E(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ca:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.ba;g||a.aa("input")(c),clearTimeout(g),a.ba=setTimeout(function(){a.ba=null},b)}}},da:function(a,b){var c=H(this.x.href),d=H(b),e=H(a);this.y=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},D:function(){var a=this;a.ea=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.N?a.ea.apply(this.P,arguments):a.ea.apply(this,arguments)}},R:function(){this.ea&&(Function.prototype.toString=this.ea)},E:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.da(b.y,c+""),a.apply(this,arguments)}};I(R.history,"pushState",j,d),I(R.history,"replaceState",j,d)}if(c.console&&"console"in R&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};w(["debug","info","warn","error","log"],function(a,b){O(console,b,k)})}},S:function(){for(var a;this.u.length;){a=this.u.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},T:function(){for(var a in this.r)this.q[a]=this.r[a]},G:function(){var a=this;w(this.s,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},H:function(a){var b=Q.exec(a),c={},d=7;try{for(;d--;)c[P[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.l.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},K:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},B:function(){this.n||this.W.apply(this,arguments)},W:function(a,b){var c=this.Y(a,b);this._("handle",{stackInfo:a,options:b}),this.ga(a.name,a.message,a.url,a.lineno,c,b)},Y:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(w(a.stack,function(b,e){var f=c.ha(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.v,0)}),this.k.user&&(a.user=this.k.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),a=this.qa(a),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||v(a[b]))&&delete a[b]}),s(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!v(a)&&(!s(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.na()?void this.A("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function F(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&l(b))for(c=b.split(/\s+/),f=0;fc?Q(a,b-1):d}function R(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?X:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function S(a,b){function c(a){return m(a)?a.map(function(a){return c(a)}):k(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!m(b)||m(b)&&0===b.length)return a;var d,e=A(b),f="********";try{d=JSON.parse(T(a))}catch(g){return a}return c(d)}var T=a(10),U="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},V=3,W=51200,X=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isDOMError:g,isDOMException:h,isUndefined:i,isFunction:j,isPlainObject:k,isString:l,isArray:m,isEmptyObject:n,supportsErrorEvent:o,supportsDOMError:p,supportsDOMException:q,supportsFetch:r,supportsReferrerPolicy:s,supportsPromiseRejectionEvent:t,wrappedCallback:u,each:v,objectMerge:w,truncate:y,objectFrozen:x,hasKey:z,joinRegExp:A,urlencode:B,uuid4:D,htmlTreeAsString:E,htmlElementAsString:F,isSameException:I,isSameStacktrace:J,parseUrl:C,fill:K,safeJoin:L,serializeException:Q,serializeKeysForMessage:R,sanitize:S}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{10:10}],9:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}function e(){return"undefined"==typeof document||null==document.location?"":(document.location.origin||(document.location.origin=document.location.protocol+"//"+document.location.hostname+(document.location.port?":"+document.location.port:"")),document.location.origin)}var f=a(8),g={collectWindowErrors:!0,debug:!1},h="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},i=[].slice,j="?",k=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;g.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function e(a,b){var c=null;if(!b||g.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(i.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,h,i){var l=null,m=f.isErrorEvent(i)?i.error:i,n=f.isErrorEvent(a)?a.message:a;if(v)g.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&f.isError(m))l=g.computeStackTrace(m),e(l,!0);else{var p,r={url:b,line:c,column:h},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(k);p&&(s=p[1],n=p[2])}r.func=j,l={name:s,message:n,url:d(),stack:[r]},e(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=h.onerror,h.onerror=l,r=!0)}function n(){r&&(h.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,e.apply(null,[a,!1].concat(b))}function p(a,b){var c=i.call(arguments,1);if(v){if(u===a)return;o()}var d=g.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),g.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,f,g=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,h=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,i=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,k=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,l=/\((\S*)(?::(\d+))(?::(\d+))\)/,m=a.stack.split("\n"),n=[],o=(/^(.*) is undefined$/.exec(a.message),0),p=m.length;o eval")>-1;r&&(b=k.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==o||c[5]||"undefined"==typeof a.columnNumber||(n[0].column=a.columnNumber+1),f={url:c[3],func:c[1]||j,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}if(!f.func&&f.line&&(f.func=j),f.url&&"blob:"===f.url.substr(0,5)){var s=new XMLHttpRequest;if(s.open("GET",f.url,!1),s.send(null),200===s.status){var t=s.responseText||"";t=t.slice(-300);var u=t.match(/\/\/# sourceMappingURL=(.*)$/);if(u){var v=u[1];"~"===v.charAt(0)&&(v=e()+v.slice(1)), -f.url=v.slice(0,-4)}}}n.push(f)}return n.length?{name:a.name,message:a.message,url:d(),stack:n}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=j),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,e){for(var h,i,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==f&&o!==g.report){if(i={url:null,func:j,line:null,column:null},o.name?i.func=o.name:(h=k.exec(o.toString()))&&(i.func=h[1]),"undefined"==typeof i.func)try{i.func=h.input.substring(0,h.input.indexOf("{"))}catch(p){}m[""+o]?n=!0:m[""+o]=!0,l.push(i)}e&&l.splice(0,e);var q={name:a.name,message:a.message,url:d(),stack:l};return b(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),q}function f(b,e){var f=null;e=null==e?0:+e;try{if(f=a(b))return f}catch(h){if(g.debug)throw h}try{if(f=c(b,e+1))return f}catch(h){if(g.debug)throw h}return{name:b.name,message:b.message,url:d()}}return f.augmentStackTraceWithInitialElement=b,f.computeStackTraceFromStackProp=a,f}(),b.exports=g}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{8:8}],10:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}],11:[function(a,b,c){function d(a,b){var c=(65535&a)+(65535&b),d=(a>>16)+(b>>16)+(c>>16);return d<<16|65535&c}function e(a,b){return a<>>32-b}function f(a,b,c,f,g,h){return d(e(d(d(b,a),d(f,h)),g),c)}function g(a,b,c,d,e,g,h){return f(b&c|~b&d,a,b,e,g,h)}function h(a,b,c,d,e,g,h){return f(b&d|c&~d,a,b,e,g,h)}function i(a,b,c,d,e,g,h){return f(b^c^d,a,b,e,g,h)}function j(a,b,c,d,e,g,h){return f(c^(b|~d),a,b,e,g,h)}function k(a,b){a[b>>5]|=128<>>9<<4)+14]=b;var c,e,f,k,l,m=1732584193,n=-271733879,o=-1732584194,p=271733878;for(c=0;c>5]>>>b%32&255);return c}function m(a){var b,c=[];for(c[(a.length>>2)-1]=void 0,b=0;b>5]|=(255&a.charCodeAt(b/8))<16&&(e=k(e,8*a.length)),c=0;c<16;c+=1)f[c]=909522486^e[c],g[c]=1549556828^e[c];return d=k(f.concat(m(b)),512+8*b.length),l(k(g.concat(d),640))}function p(a){var b,c,d="0123456789abcdef",e="";for(c=0;c>>4&15)+d.charAt(15&b);return e}function q(a){return unescape(encodeURIComponent(a))}function r(a){return n(q(a))}function s(a){return p(r(a))}function t(a,b){return o(q(a),q(b))}function u(a,b){return p(t(a,b))}function v(a,b,c){return b?c?t(b,a):u(b,a):c?r(a):s(a)}b.exports=v},{}]},{},[7,1,2,3])(7)}); +/*! Raven.js 3.25.2 (30b6d4e) | github.com/getsentry/raven-js */ +!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.Raven=a()}}(function(){var a;return function b(a,c,d){function e(g,h){if(!c[g]){if(!a[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};a[g][0].call(k.exports,function(b){var c=a[g][1][b];return e(c?c:b)},k,k.exports,b,a,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;gthis.l.maxBreadcrumbs&&this.v.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.s.push([a,b]),this.o&&this.G(),this},setUserContext:function(a){return this.k.user=a,this},setExtraContext:function(a){return this.$("extra",a),this},setTagsContext:function(a){return this.$("tags",a),this},clearContext:function(){return this.k={},this},getContext:function(){return JSON.parse(h(this.k))},setEnvironment:function(a){return this.l.environment=a,this},setRelease:function(a){return this.l.release=a,this},setDataCallback:function(a){var b=this.l.dataCallback;return this.l.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.l.breadcrumbCallback;return this.l.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.l.shouldSendCallback;return this.l.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.l.transport=a,this},lastException:function(){return this.e},lastEventId:function(){return this.g},isSetup:function(){return!!this.b&&(!!this.h||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.A("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=R.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(S){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.I;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.k.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.K(this.H(c)),h=S.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(S.head||S.body).appendChild(h)}},M:function(){var a=this;this.n+=1,setTimeout(function(){a.n-=1})},_:function(a,b){var c,d;if(this.c){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),S.createEvent?(c=S.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=S.createEventObject(),c.eventType=a);for(d in b)A(b,d)&&(c[d]=b[d]);if(S.createEvent)S.dispatchEvent(c);else try{S.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},aa:function(a){var b=this;return function(c){if(b.ba=null,b.w!==c){b.w=c;var d;try{d=E(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ca:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.ba;g||a.aa("input")(c),clearTimeout(g),a.ba=setTimeout(function(){a.ba=null},b)}}},da:function(a,b){var c=H(this.x.href),d=H(b),e=H(a);this.y=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},D:function(){var a=this;a.ea=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.N?a.ea.apply(this.P,arguments):a.ea.apply(this,arguments)}},R:function(){this.ea&&(Function.prototype.toString=this.ea)},E:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.da(b.y,c+""),a.apply(this,arguments)}};I(R.history,"pushState",j,d),I(R.history,"replaceState",j,d)}if(c.console&&"console"in R&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};w(["debug","info","warn","error","log"],function(a,b){O(console,b,k)})}},S:function(){for(var a;this.u.length;){a=this.u.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},T:function(){for(var a in this.r)this.q[a]=this.r[a]},G:function(){var a=this;w(this.s,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},H:function(a){var b=Q.exec(a),c={},d=7;try{for(;d--;)c[P[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.l.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},K:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},B:function(){this.n||this.W.apply(this,arguments)},W:function(a,b){var c=this.Y(a,b);this._("handle",{stackInfo:a,options:b}),this.ga(a.name,a.message,a.url,a.lineno,c,b)},Y:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(w(a.stack,function(b,e){var f=c.ha(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.v,0)}),this.k.user&&(a.user=this.k.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),a=this.qa(a),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||v(a[b]))&&delete a[b]}),s(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!v(a)&&(!s(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.na()?void this.A("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function F(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&l(b))for(c=b.split(/\s+/),f=0;fc?Q(a,b-1):d}function R(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?X:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function S(a,b){function c(a){return m(a)?a.map(function(a){return c(a)}):k(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!m(b)||m(b)&&0===b.length)return a;var d,e=A(b),f="********";try{d=JSON.parse(T(a))}catch(g){return a}return c(d)}var T=a(10),U="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},V=3,W=51200,X=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isDOMError:g,isDOMException:h,isUndefined:i,isFunction:j,isPlainObject:k,isString:l,isArray:m,isEmptyObject:n,supportsErrorEvent:o,supportsDOMError:p,supportsDOMException:q,supportsFetch:r,supportsReferrerPolicy:s,supportsPromiseRejectionEvent:t,wrappedCallback:u,each:v,objectMerge:w,truncate:y,objectFrozen:x,hasKey:z,joinRegExp:A,urlencode:B,uuid4:D,htmlTreeAsString:E,htmlElementAsString:F,isSameException:I,isSameStacktrace:J,parseUrl:C,fill:K,safeJoin:L,serializeException:Q,serializeKeysForMessage:R,sanitize:S}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{10:10}],9:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}function e(){return"undefined"==typeof document||null==document.location?"":(document.location.origin||(document.location.origin=document.location.protocol+"//"+document.location.hostname+(document.location.port?":"+document.location.port:"")),document.location.origin)}var f=a(8),g={collectWindowErrors:!0,debug:!1},h="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},i=[].slice,j="?",k=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;g.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function e(a,b){var c=null;if(!b||g.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(i.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,h,i){var l=null,m=f.isErrorEvent(i)?i.error:i,n=f.isErrorEvent(a)?a.message:a;if(v)g.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&f.isError(m))l=g.computeStackTrace(m),e(l,!0);else{var p,r={url:b,line:c,column:h},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(k);p&&(s=p[1],n=p[2])}r.func=j,l={name:s,message:n,url:d(),stack:[r]},e(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=h.onerror,h.onerror=l,r=!0)}function n(){r&&(h.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,e.apply(null,[a,!1].concat(b))}function p(a,b){var c=i.call(arguments,1);if(v){if(u===a)return;o()}var d=g.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),g.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,f,g=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,h=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,i=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,k=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,l=/\((\S*)(?::(\d+))(?::(\d+))\)/,m=a.stack.split("\n"),n=[],o=(/^(.*) is undefined$/.exec(a.message),0),p=m.length;o eval")>-1;r&&(b=k.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==o||c[5]||"undefined"==typeof a.columnNumber||(n[0].column=a.columnNumber+1),f={url:c[3],func:c[1]||j,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}if(!f.func&&f.line&&(f.func=j),f.url&&"blob:"===f.url.substr(0,5)){var s=new XMLHttpRequest;if(s.open("GET",f.url,!1),s.send(null),200===s.status){var t=s.responseText||"";t=t.slice(-300);var u=t.match(/\/\/# sourceMappingURL=(.*)$/);if(u){var v=u[1]; +"~"===v.charAt(0)&&(v=e()+v.slice(1)),f.url=v.slice(0,-4)}}}n.push(f)}return n.length?{name:a.name,message:a.message,url:d(),stack:n}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=j),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,e){for(var h,i,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==f&&o!==g.report){if(i={url:null,func:j,line:null,column:null},o.name?i.func=o.name:(h=k.exec(o.toString()))&&(i.func=h[1]),"undefined"==typeof i.func)try{i.func=h.input.substring(0,h.input.indexOf("{"))}catch(p){}m[""+o]?n=!0:m[""+o]=!0,l.push(i)}e&&l.splice(0,e);var q={name:a.name,message:a.message,url:d(),stack:l};return b(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),q}function f(b,e){var f=null;e=null==e?0:+e;try{if(f=a(b))return f}catch(h){if(g.debug)throw h}try{if(f=c(b,e+1))return f}catch(h){if(g.debug)throw h}return{name:b.name,message:b.message,url:d()}}return f.augmentStackTraceWithInitialElement=b,f.computeStackTraceFromStackProp=a,f}(),b.exports=g}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{8:8}],10:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}],11:[function(a,b,c){function d(a,b){var c=(65535&a)+(65535&b),d=(a>>16)+(b>>16)+(c>>16);return d<<16|65535&c}function e(a,b){return a<>>32-b}function f(a,b,c,f,g,h){return d(e(d(d(b,a),d(f,h)),g),c)}function g(a,b,c,d,e,g,h){return f(b&c|~b&d,a,b,e,g,h)}function h(a,b,c,d,e,g,h){return f(b&d|c&~d,a,b,e,g,h)}function i(a,b,c,d,e,g,h){return f(b^c^d,a,b,e,g,h)}function j(a,b,c,d,e,g,h){return f(c^(b|~d),a,b,e,g,h)}function k(a,b){a[b>>5]|=128<>>9<<4)+14]=b;var c,e,f,k,l,m=1732584193,n=-271733879,o=-1732584194,p=271733878;for(c=0;c>5]>>>b%32&255);return c}function m(a){var b,c=[];for(c[(a.length>>2)-1]=void 0,b=0;b>5]|=(255&a.charCodeAt(b/8))<16&&(e=k(e,8*a.length)),c=0;c<16;c+=1)f[c]=909522486^e[c],g[c]=1549556828^e[c];return d=k(f.concat(m(b)),512+8*b.length),l(k(g.concat(d),640))}function p(a){var b,c,d="0123456789abcdef",e="";for(c=0;c>>4&15)+d.charAt(15&b);return e}function q(a){return unescape(encodeURIComponent(a))}function r(a){return n(q(a))}function s(a){return p(r(a))}function t(a,b){return o(q(a),q(b))}function u(a,b){return p(t(a,b))}function v(a,b,c){return b?c?t(b,a):u(b,a):c?r(a):s(a)}b.exports=v},{}]},{},[7,1,2,3])(7)}); //# sourceMappingURL=raven.min.js.map \ No newline at end of file diff --git a/dist/angular,ember,require/raven.min.js.map b/dist/angular,ember,require/raven.min.js.map index 6eabbf5fef0a..8477e1f8b253 100644 --- a/dist/angular,ember,require/raven.min.js.map +++ b/dist/angular,ember,require/raven.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","angularPlugin","angular","RavenProvider","$get","$window","ExceptionHandlerProvider","$provide","decorator","exceptionHandler","R","$delegate","ex","cause","captureException","extra","moduleName","provider","config","setDataCallback","wrappedCallback","data","_normalizeData","angularPattern","exception","values","matches","exec","value","type","message","angularDocs","substr","addPlugin","7","8","2","emberPlugin","Ember","_oldOnError","onerror","error","RSVP","on","reason","context","captureMessage","3","requirePlugin","wrap","deep","4","RavenConfigError","name","prototype","constructor","5","utils","wrapMethod","console","level","callback","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","msg","safeJoin","logger","Function","apply","6","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","sanitizeKeys","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isErrorEvent","isDOMError","isDOMException","isError","isObject","isPlainObject","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","sanitize","wrapConsoleMethod","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","dsn","options","_logDebug","globalOptions","key","setDSN","push","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","toString","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","func","undefined","_before","wrapped","_ignoreNextOnError","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","U","event","unhandledPromiseRejection","C","_promiseRejectionHandler","bind","addEventListener","Q","removeEventListener","trimHeadFrames","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","V","currentOptions","exKeys","Object","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","M","setTimeout","_","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","aa","evtName","_keypressTimeout","target","category","ca","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","da","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","D","_originalFunctionToString","E","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","F","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","S","builtin","T","G","installer","concat","H","str","m","allowSecretKey","K","port","B","W","stackInfo","_triggerEvent","_processException","lineno","Y","frame","_normalizeFrame","in_app","ha","stackInfoUrl","normalized","filename","line","colno","column","function","ga","prefixedMessage","culprit","ia","request","Referer","breadcrumbs","_trimBreadcrumbs","ja","urlProp","urlProps","ka","httpData","userAgent","User-Agent","referrer","z","_backoffDuration","_backoffStart","na","oa","current","last","pa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Z","baseData","project","platform","_getHttpData","serverName","server_name","_sanitizeData","forEach","random","_sendProcessedPayload","qa","sa","ra","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","ta","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","open","setRequestHeader","send","ua","hash","evaluated","A","$","setUser","setReleaseContext","10","11","9","RavenConstructor","_Raven","noConflict","Client","what","supportsErrorEvent","ErrorEvent","supportsDOMError","DOMError","supportsDOMException","DOMException","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","sanitizeMask","safeInput","o_O","getLocationHref","getLocationOrigin","origin","hostname","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","responseText","sourceMaps","sourceMapAddress","charAt","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","y","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","string","raw"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file +{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","angularPlugin","angular","RavenProvider","$get","$window","ExceptionHandlerProvider","$provide","decorator","exceptionHandler","R","$delegate","ex","cause","captureException","extra","moduleName","provider","config","setDataCallback","wrappedCallback","data","_normalizeData","angularPattern","exception","values","matches","exec","value","type","message","angularDocs","substr","addPlugin","7","8","2","emberPlugin","Ember","_oldOnError","onerror","error","RSVP","on","reason","context","captureMessage","3","requirePlugin","wrap","deep","4","RavenConfigError","name","prototype","constructor","5","utils","wrapMethod","console","level","callback","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","msg","safeJoin","logger","Function","apply","6","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","sanitizeKeys","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isErrorEvent","isDOMError","isDOMException","isError","isObject","isPlainObject","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","sanitize","wrapConsoleMethod","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","dsn","options","_logDebug","globalOptions","key","setDSN","push","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","toString","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","func","undefined","_before","wrapped","_ignoreNextOnError","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","U","event","unhandledPromiseRejection","C","_promiseRejectionHandler","bind","addEventListener","Q","removeEventListener","trimHeadFrames","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","V","currentOptions","exKeys","Object","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","M","setTimeout","_","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","aa","evtName","_keypressTimeout","target","category","ca","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","da","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","D","_originalFunctionToString","E","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","F","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","S","builtin","T","G","installer","concat","H","str","m","allowSecretKey","K","port","B","W","stackInfo","_triggerEvent","_processException","lineno","Y","frame","_normalizeFrame","in_app","ha","stackInfoUrl","normalized","filename","line","colno","column","function","ga","prefixedMessage","transaction","ia","request","Referer","breadcrumbs","_trimBreadcrumbs","ja","urlProp","urlProps","ka","httpData","userAgent","User-Agent","referrer","z","_backoffDuration","_backoffStart","na","oa","current","last","pa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Z","baseData","project","platform","_getHttpData","serverName","server_name","_sanitizeData","forEach","random","_sendProcessedPayload","qa","sa","ra","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","ta","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","open","setRequestHeader","send","ua","hash","evaluated","A","$","setUser","setReleaseContext","10","11","9","RavenConstructor","_Raven","noConflict","Client","what","supportsErrorEvent","ErrorEvent","supportsDOMError","DOMError","supportsDOMException","DOMException","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","sanitizeMask","safeInput","o_O","getLocationHref","getLocationOrigin","origin","hostname","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","responseText","sourceMaps","sourceMapAddress","charAt","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","y","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","string","raw"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file diff --git a/dist/angular,ember,vue/raven.js b/dist/angular,ember,vue/raven.js index f243e0a7da2d..99fb5e69e880 100644 --- a/dist/angular,ember,vue/raven.js +++ b/dist/angular,ember,vue/raven.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.25.1 (b6f3c7a) | github.com/getsentry/raven-js */ +/*! Raven.js 3.25.2 (30b6d4e) | github.com/getsentry/raven-js */ /* * Includes TraceKit @@ -277,7 +277,11 @@ function now() { var _window = typeof window !== 'undefined' ? window - : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; + : typeof global !== 'undefined' + ? global + : typeof self !== 'undefined' + ? self + : {}; var _document = _window.document; var _navigator = _window.navigator; @@ -367,7 +371,7 @@ Raven.prototype = { // webpack (using a build step causes webpack #1617). Grunt verifies that // this value matches package.json during build. // See: https://github.com/getsentry/raven-js/issues/465 - VERSION: '3.25.1', + VERSION: '3.25.2', debug: false, @@ -1923,7 +1927,7 @@ Raven.prototype = { } ] }, - culprit: fileurl + transaction: fileurl }, options ); @@ -2038,7 +2042,7 @@ Raven.prototype = { if ( !last || current.message !== last.message || // defined for captureMessage - current.culprit !== last.culprit // defined for captureException/onerror + current.transaction !== last.transaction // defined for captureException/onerror ) return false; diff --git a/dist/angular,ember,vue/raven.min.js b/dist/angular,ember,vue/raven.min.js index 32a9ffe8121b..f1108c4eddd4 100644 --- a/dist/angular,ember,vue/raven.min.js +++ b/dist/angular,ember,vue/raven.min.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.25.1 (b6f3c7a) | github.com/getsentry/raven-js */ -!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.Raven=a()}}(function(){return function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};b[g][0].call(k.exports,function(a){var c=b[g][1][a];return e(c?c:a)},k,k.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;g":"anonymous component")+(a._isVue&&a.$options.__file?" at "+a.$options.__file:"")}function e(a,b){if(b=b||window.Vue,b&&b.config){var c=b.config.errorHandler;b.config.errorHandler=function(b,e,f){var g={};"[object Object]"===Object.prototype.toString.call(e)&&(g.componentName=d(e),g.propsData=e.$options.propsData),"undefined"!=typeof f&&(g.lifecycleHook=f),a.captureException(b,{extra:g}),"function"==typeof c&&c.call(this,b,e,f)}}}b.exports=e,a(7).addPlugin(b.exports)},{7:7}],4:[function(a,b,c){function d(a){this.name="RavenConfigError",this.message=a}d.prototype=new Error,d.prototype.constructor=d,b.exports=d},{}],5:[function(a,b,c){var d=a(8),e=function(a,b,c){var e=a[b],f=a;if(b in a){var g="warn"===b?"warning":b;a[b]=function(){var a=[].slice.call(arguments),h=d.safeJoin(a," "),i={level:g,logger:"console",extra:{arguments:a}};"assert"===b?a[0]===!1&&(h="Assertion failed: "+(d.safeJoin(a.slice(1)," ")||"console.assert"),i.extra.arguments=a.slice(1),c&&c(h,i)):c&&c(h,i),e&&Function.prototype.apply.call(e,f,a)}}};b.exports={wrapMethod:e}},{8:8}],6:[function(a,b,c){(function(c){function d(){return+new Date}function e(a,b){return s(b)?function(c){return b(c,a)}:b}function f(){this.b=!("object"!=typeof JSON||!JSON.stringify),this.c=!r(S),this.d=!r(T),this.e=null,this.f=null,this.g=null,this.h=null,this.i=null,this.j=null,this.k={},this.l={release:R.SENTRY_RELEASE&&R.SENTRY_RELEASE.id,logger:"javascript",ignoreErrors:[],ignoreUrls:[],whitelistUrls:[],includePaths:[],headers:null,collectWindowErrors:!0,captureUnhandledRejections:!0,maxMessageLength:0,maxUrlLength:250,stackTraceLimit:50,autoBreadcrumbs:!0,instrument:!0,sampleRate:1,sanitizeKeys:[]},this.m={method:"POST",keepalive:!0,referrerPolicy:K()?"origin":""},this.n=0,this.o=!1,this.p=Error.stackTraceLimit,this.q=R.console||{},this.r={},this.s=[],this.t=d(),this.u=[],this.v=[],this.w=null,this.x=R.location,this.y=this.x&&this.x.href,this.z();for(var a in this.q)this.r[a]=this.q[a]}var g=a(9),h=a(10),i=a(11),j=a(4),k=a(8),l=k.isErrorEvent,m=k.isDOMError,n=k.isDOMException,o=k.isError,p=k.isObject,q=k.isPlainObject,r=k.isUndefined,s=k.isFunction,t=k.isString,u=k.isArray,v=k.isEmptyObject,w=k.each,x=k.objectMerge,y=k.truncate,z=k.objectFrozen,A=k.hasKey,B=k.joinRegExp,C=k.urlencode,D=k.uuid4,E=k.htmlTreeAsString,F=k.isSameException,G=k.isSameStacktrace,H=k.parseUrl,I=k.fill,J=k.supportsFetch,K=k.supportsReferrerPolicy,L=k.serializeKeysForMessage,M=k.serializeException,N=k.sanitize,O=a(5).wrapMethod,P="source protocol user pass host port path".split(" "),Q=/^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/,R="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},S=R.document,T=R.navigator;f.prototype={VERSION:"3.25.1",debug:!1,TraceKit:g,config:function(a,b){var c=this;if(c.h)return this.A("error","Error: Raven has already been configured"),c;if(!a)return c;var d=c.l;b&&w(b,function(a,b){"tags"===a||"extra"===a||"user"===a?c.k[a]=b:d[a]=b}),c.setDSN(a),d.ignoreErrors.push(/^Script error\.?$/),d.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/),d.ignoreErrors=B(d.ignoreErrors),d.ignoreUrls=!!d.ignoreUrls.length&&B(d.ignoreUrls),d.whitelistUrls=!!d.whitelistUrls.length&&B(d.whitelistUrls),d.includePaths=B(d.includePaths),d.maxBreadcrumbs=Math.max(0,Math.min(d.maxBreadcrumbs||100,100));var e={xhr:!0,console:!0,dom:!0,location:!0,sentry:!0},f=d.autoBreadcrumbs;"[object Object]"==={}.toString.call(f)?f=x(e,f):f!==!1&&(f=e),d.autoBreadcrumbs=f;var h={tryCatch:!0},i=d.instrument;return"[object Object]"==={}.toString.call(i)?i=x(h,i):i!==!1&&(i=h),d.instrument=i,g.collectWindowErrors=!!d.collectWindowErrors,c},install:function(){var a=this;return a.isSetup()&&!a.o&&(g.report.subscribe(function(){a.B.apply(a,arguments)}),a.l.captureUnhandledRejections&&a.C(),a.D(),a.l.instrument&&a.l.instrument.tryCatch&&a.E(),a.l.autoBreadcrumbs&&a.F(),a.G(),a.o=!0),Error.stackTraceLimit=a.l.stackTraceLimit,this},setDSN:function(a){var b=this,c=b.H(a),d=c.path.lastIndexOf("/"),e=c.path.substr(1,d);b.I=a,b.i=c.user,b.J=c.pass&&c.pass.substr(1),b.j=c.path.substr(d+1),b.h=b.K(c),b.L=b.h+"/"+e+"api/"+b.j+"/store/",this.z()},context:function(a,b,c){return s(a)&&(c=b||[],b=a,a=void 0),this.wrap(a,b).apply(this,c)},wrap:function(a,b,c){function d(){var d=[],f=arguments.length,g=!a||a&&a.deep!==!1;for(c&&s(c)&&c.apply(this,arguments);f--;)d[f]=g?e.wrap(a,arguments[f]):arguments[f];try{return b.apply(this,d)}catch(h){throw e.M(),e.captureException(h,a),h}}var e=this;if(r(b)&&!s(a))return a;if(s(a)&&(b=a,a=void 0),!s(b))return b;try{if(b.N)return b;if(b.O)return b.O}catch(f){return b}for(var g in b)A(b,g)&&(d[g]=b[g]);return d.prototype=b.prototype,b.O=d,d.N=!0,d.P=b,d},uninstall:function(){return g.report.uninstall(),this.Q(),this.R(),this.S(),this.T(),Error.stackTraceLimit=this.p,this.o=!1,this},U:function(a){this.A("debug","Raven caught unhandled promise rejection:",a),this.captureException(a.reason,{extra:{unhandledPromiseRejection:!0}})},C:function(){return this.U=this.U.bind(this),R.addEventListener&&R.addEventListener("unhandledrejection",this.U),this},Q:function(){return R.removeEventListener&&R.removeEventListener("unhandledrejection",this.U),this},captureException:function(a,b){if(b=x({trimHeadFrames:0},b?b:{}),l(a)&&a.error)a=a.error;else{if(m(a)||n(a)){var c=a.name||(m(a)?"DOMError":"DOMException"),d=a.message?c+": "+a.message:c;return this.captureMessage(d,x(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}))}if(o(a))a=a;else{if(!q(a))return this.captureMessage(a,x(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}));b=this.V(b,a),a=new Error(b.message)}}this.e=a;try{var e=g.computeStackTrace(a);this.W(e,b)}catch(f){if(a!==f)throw f}return this},V:function(a,b){var c=Object.keys(b).sort(),d=x(a,{message:"Non-Error exception captured with keys: "+L(c),fingerprint:[i(c)],extra:a.extra||{}});return d.extra.X=M(b),d},captureMessage:function(a,b){if(!this.l.ignoreErrors.test||!this.l.ignoreErrors.test(a)){b=b||{},a+="";var c,d=x({message:a},b);try{throw new Error(a)}catch(e){c=e}c.name=null;var f=g.computeStackTrace(c),h=u(f.stack)&&f.stack[1];h&&"Raven.captureException"===h.func&&(h=f.stack[2]);var i=h&&h.url||"";if((!this.l.ignoreUrls.test||!this.l.ignoreUrls.test(i))&&(!this.l.whitelistUrls.test||this.l.whitelistUrls.test(i))){if(this.l.stacktrace||b&&b.stacktrace){d.fingerprint=null==d.fingerprint?a:d.fingerprint,b=x({trimHeadFrames:0},b),b.trimHeadFrames+=1;var j=this.Y(f,b);d.stacktrace={frames:j.reverse()}}return d.fingerprint&&(d.fingerprint=u(d.fingerprint)?d.fingerprint:[d.fingerprint]),this.Z(d),this}}},captureBreadcrumb:function(a){var b=x({timestamp:d()/1e3},a);if(s(this.l.breadcrumbCallback)){var c=this.l.breadcrumbCallback(b);if(p(c)&&!v(c))b=c;else if(c===!1)return this}return this.v.push(b),this.v.length>this.l.maxBreadcrumbs&&this.v.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.s.push([a,b]),this.o&&this.G(),this},setUserContext:function(a){return this.k.user=a,this},setExtraContext:function(a){return this.$("extra",a),this},setTagsContext:function(a){return this.$("tags",a),this},clearContext:function(){return this.k={},this},getContext:function(){return JSON.parse(h(this.k))},setEnvironment:function(a){return this.l.environment=a,this},setRelease:function(a){return this.l.release=a,this},setDataCallback:function(a){var b=this.l.dataCallback;return this.l.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.l.breadcrumbCallback;return this.l.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.l.shouldSendCallback;return this.l.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.l.transport=a,this},lastException:function(){return this.e},lastEventId:function(){return this.g},isSetup:function(){return!!this.b&&(!!this.h||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.A("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=R.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(S){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.I;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.k.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.K(this.H(c)),h=S.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(S.head||S.body).appendChild(h)}},M:function(){var a=this;this.n+=1,setTimeout(function(){a.n-=1})},_:function(a,b){var c,d;if(this.c){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),S.createEvent?(c=S.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=S.createEventObject(),c.eventType=a);for(d in b)A(b,d)&&(c[d]=b[d]);if(S.createEvent)S.dispatchEvent(c);else try{S.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},aa:function(a){var b=this;return function(c){if(b.ba=null,b.w!==c){b.w=c;var d;try{d=E(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ca:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.ba;g||a.aa("input")(c),clearTimeout(g),a.ba=setTimeout(function(){a.ba=null},b)}}},da:function(a,b){var c=H(this.x.href),d=H(b),e=H(a);this.y=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},D:function(){var a=this;a.ea=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.N?a.ea.apply(this.P,arguments):a.ea.apply(this,arguments)}},R:function(){this.ea&&(Function.prototype.toString=this.ea)},E:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.da(b.y,c+""),a.apply(this,arguments)}};I(R.history,"pushState",j,d),I(R.history,"replaceState",j,d)}if(c.console&&"console"in R&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};w(["debug","info","warn","error","log"],function(a,b){O(console,b,k)})}},S:function(){for(var a;this.u.length;){a=this.u.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},T:function(){for(var a in this.r)this.q[a]=this.r[a]},G:function(){var a=this;w(this.s,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},H:function(a){var b=Q.exec(a),c={},d=7;try{for(;d--;)c[P[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.l.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},K:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},B:function(){this.n||this.W.apply(this,arguments)},W:function(a,b){var c=this.Y(a,b);this._("handle",{stackInfo:a,options:b}),this.ga(a.name,a.message,a.url,a.lineno,c,b)},Y:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(w(a.stack,function(b,e){var f=c.ha(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.v,0)}),this.k.user&&(a.user=this.k.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),a=this.qa(a),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||v(a[b]))&&delete a[b]}),s(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!v(a)&&(!s(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.na()?void this.A("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function F(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&l(b))for(c=b.split(/\s+/),f=0;fc?Q(a,b-1):d}function R(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?X:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function S(a,b){function c(a){return m(a)?a.map(function(a){return c(a)}):k(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!m(b)||m(b)&&0===b.length)return a;var d,e=A(b),f="********";try{d=JSON.parse(T(a))}catch(g){return a}return c(d)}var T=a(10),U="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},V=3,W=51200,X=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isDOMError:g,isDOMException:h,isUndefined:i,isFunction:j,isPlainObject:k,isString:l,isArray:m,isEmptyObject:n,supportsErrorEvent:o,supportsDOMError:p,supportsDOMException:q,supportsFetch:r,supportsReferrerPolicy:s,supportsPromiseRejectionEvent:t,wrappedCallback:u,each:v,objectMerge:w,truncate:y,objectFrozen:x,hasKey:z,joinRegExp:A,urlencode:B,uuid4:D,htmlTreeAsString:E,htmlElementAsString:F,isSameException:I,isSameStacktrace:J,parseUrl:C,fill:K,safeJoin:L,serializeException:Q,serializeKeysForMessage:R,sanitize:S}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{10:10}],9:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}function e(){return"undefined"==typeof document||null==document.location?"":(document.location.origin||(document.location.origin=document.location.protocol+"//"+document.location.hostname+(document.location.port?":"+document.location.port:"")),document.location.origin)}var f=a(8),g={collectWindowErrors:!0,debug:!1},h="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},i=[].slice,j="?",k=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;g.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function e(a,b){var c=null;if(!b||g.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(i.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,h,i){var l=null,m=f.isErrorEvent(i)?i.error:i,n=f.isErrorEvent(a)?a.message:a;if(v)g.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&f.isError(m))l=g.computeStackTrace(m),e(l,!0);else{var p,r={url:b,line:c,column:h},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(k);p&&(s=p[1],n=p[2])}r.func=j,l={name:s,message:n,url:d(),stack:[r]},e(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=h.onerror,h.onerror=l,r=!0)}function n(){r&&(h.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,e.apply(null,[a,!1].concat(b))}function p(a,b){var c=i.call(arguments,1);if(v){if(u===a)return;o()}var d=g.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),g.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,f,g=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,h=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,i=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,k=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,l=/\((\S*)(?::(\d+))(?::(\d+))\)/,m=a.stack.split("\n"),n=[],o=(/^(.*) is undefined$/.exec(a.message),0),p=m.length;o eval")>-1;r&&(b=k.exec(c[3]))?(c[3]=b[1],c[4]=b[2], -c[5]=null):0!==o||c[5]||"undefined"==typeof a.columnNumber||(n[0].column=a.columnNumber+1),f={url:c[3],func:c[1]||j,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}if(!f.func&&f.line&&(f.func=j),f.url&&"blob:"===f.url.substr(0,5)){var s=new XMLHttpRequest;if(s.open("GET",f.url,!1),s.send(null),200===s.status){var t=s.responseText||"";t=t.slice(-300);var u=t.match(/\/\/# sourceMappingURL=(.*)$/);if(u){var v=u[1];"~"===v.charAt(0)&&(v=e()+v.slice(1)),f.url=v.slice(0,-4)}}}n.push(f)}return n.length?{name:a.name,message:a.message,url:d(),stack:n}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=j),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,e){for(var h,i,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==f&&o!==g.report){if(i={url:null,func:j,line:null,column:null},o.name?i.func=o.name:(h=k.exec(o.toString()))&&(i.func=h[1]),"undefined"==typeof i.func)try{i.func=h.input.substring(0,h.input.indexOf("{"))}catch(p){}m[""+o]?n=!0:m[""+o]=!0,l.push(i)}e&&l.splice(0,e);var q={name:a.name,message:a.message,url:d(),stack:l};return b(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),q}function f(b,e){var f=null;e=null==e?0:+e;try{if(f=a(b))return f}catch(h){if(g.debug)throw h}try{if(f=c(b,e+1))return f}catch(h){if(g.debug)throw h}return{name:b.name,message:b.message,url:d()}}return f.augmentStackTraceWithInitialElement=b,f.computeStackTraceFromStackProp=a,f}(),b.exports=g}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{8:8}],10:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}],11:[function(a,b,c){function d(a,b){var c=(65535&a)+(65535&b),d=(a>>16)+(b>>16)+(c>>16);return d<<16|65535&c}function e(a,b){return a<>>32-b}function f(a,b,c,f,g,h){return d(e(d(d(b,a),d(f,h)),g),c)}function g(a,b,c,d,e,g,h){return f(b&c|~b&d,a,b,e,g,h)}function h(a,b,c,d,e,g,h){return f(b&d|c&~d,a,b,e,g,h)}function i(a,b,c,d,e,g,h){return f(b^c^d,a,b,e,g,h)}function j(a,b,c,d,e,g,h){return f(c^(b|~d),a,b,e,g,h)}function k(a,b){a[b>>5]|=128<>>9<<4)+14]=b;var c,e,f,k,l,m=1732584193,n=-271733879,o=-1732584194,p=271733878;for(c=0;c>5]>>>b%32&255);return c}function m(a){var b,c=[];for(c[(a.length>>2)-1]=void 0,b=0;b>5]|=(255&a.charCodeAt(b/8))<16&&(e=k(e,8*a.length)),c=0;c<16;c+=1)f[c]=909522486^e[c],g[c]=1549556828^e[c];return d=k(f.concat(m(b)),512+8*b.length),l(k(g.concat(d),640))}function p(a){var b,c,d="0123456789abcdef",e="";for(c=0;c>>4&15)+d.charAt(15&b);return e}function q(a){return unescape(encodeURIComponent(a))}function r(a){return n(q(a))}function s(a){return p(r(a))}function t(a,b){return o(q(a),q(b))}function u(a,b){return p(t(a,b))}function v(a,b,c){return b?c?t(b,a):u(b,a):c?r(a):s(a)}b.exports=v},{}]},{},[7,1,2,3])(7)}); +/*! Raven.js 3.25.2 (30b6d4e) | github.com/getsentry/raven-js */ +!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.Raven=a()}}(function(){return function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};b[g][0].call(k.exports,function(a){var c=b[g][1][a];return e(c?c:a)},k,k.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;g":"anonymous component")+(a._isVue&&a.$options.__file?" at "+a.$options.__file:"")}function e(a,b){if(b=b||window.Vue,b&&b.config){var c=b.config.errorHandler;b.config.errorHandler=function(b,e,f){var g={};"[object Object]"===Object.prototype.toString.call(e)&&(g.componentName=d(e),g.propsData=e.$options.propsData),"undefined"!=typeof f&&(g.lifecycleHook=f),a.captureException(b,{extra:g}),"function"==typeof c&&c.call(this,b,e,f)}}}b.exports=e,a(7).addPlugin(b.exports)},{7:7}],4:[function(a,b,c){function d(a){this.name="RavenConfigError",this.message=a}d.prototype=new Error,d.prototype.constructor=d,b.exports=d},{}],5:[function(a,b,c){var d=a(8),e=function(a,b,c){var e=a[b],f=a;if(b in a){var g="warn"===b?"warning":b;a[b]=function(){var a=[].slice.call(arguments),h=d.safeJoin(a," "),i={level:g,logger:"console",extra:{arguments:a}};"assert"===b?a[0]===!1&&(h="Assertion failed: "+(d.safeJoin(a.slice(1)," ")||"console.assert"),i.extra.arguments=a.slice(1),c&&c(h,i)):c&&c(h,i),e&&Function.prototype.apply.call(e,f,a)}}};b.exports={wrapMethod:e}},{8:8}],6:[function(a,b,c){(function(c){function d(){return+new Date}function e(a,b){return s(b)?function(c){return b(c,a)}:b}function f(){this.b=!("object"!=typeof JSON||!JSON.stringify),this.c=!r(S),this.d=!r(T),this.e=null,this.f=null,this.g=null,this.h=null,this.i=null,this.j=null,this.k={},this.l={release:R.SENTRY_RELEASE&&R.SENTRY_RELEASE.id,logger:"javascript",ignoreErrors:[],ignoreUrls:[],whitelistUrls:[],includePaths:[],headers:null,collectWindowErrors:!0,captureUnhandledRejections:!0,maxMessageLength:0,maxUrlLength:250,stackTraceLimit:50,autoBreadcrumbs:!0,instrument:!0,sampleRate:1,sanitizeKeys:[]},this.m={method:"POST",keepalive:!0,referrerPolicy:K()?"origin":""},this.n=0,this.o=!1,this.p=Error.stackTraceLimit,this.q=R.console||{},this.r={},this.s=[],this.t=d(),this.u=[],this.v=[],this.w=null,this.x=R.location,this.y=this.x&&this.x.href,this.z();for(var a in this.q)this.r[a]=this.q[a]}var g=a(9),h=a(10),i=a(11),j=a(4),k=a(8),l=k.isErrorEvent,m=k.isDOMError,n=k.isDOMException,o=k.isError,p=k.isObject,q=k.isPlainObject,r=k.isUndefined,s=k.isFunction,t=k.isString,u=k.isArray,v=k.isEmptyObject,w=k.each,x=k.objectMerge,y=k.truncate,z=k.objectFrozen,A=k.hasKey,B=k.joinRegExp,C=k.urlencode,D=k.uuid4,E=k.htmlTreeAsString,F=k.isSameException,G=k.isSameStacktrace,H=k.parseUrl,I=k.fill,J=k.supportsFetch,K=k.supportsReferrerPolicy,L=k.serializeKeysForMessage,M=k.serializeException,N=k.sanitize,O=a(5).wrapMethod,P="source protocol user pass host port path".split(" "),Q=/^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/,R="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},S=R.document,T=R.navigator;f.prototype={VERSION:"3.25.2",debug:!1,TraceKit:g,config:function(a,b){var c=this;if(c.h)return this.A("error","Error: Raven has already been configured"),c;if(!a)return c;var d=c.l;b&&w(b,function(a,b){"tags"===a||"extra"===a||"user"===a?c.k[a]=b:d[a]=b}),c.setDSN(a),d.ignoreErrors.push(/^Script error\.?$/),d.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/),d.ignoreErrors=B(d.ignoreErrors),d.ignoreUrls=!!d.ignoreUrls.length&&B(d.ignoreUrls),d.whitelistUrls=!!d.whitelistUrls.length&&B(d.whitelistUrls),d.includePaths=B(d.includePaths),d.maxBreadcrumbs=Math.max(0,Math.min(d.maxBreadcrumbs||100,100));var e={xhr:!0,console:!0,dom:!0,location:!0,sentry:!0},f=d.autoBreadcrumbs;"[object Object]"==={}.toString.call(f)?f=x(e,f):f!==!1&&(f=e),d.autoBreadcrumbs=f;var h={tryCatch:!0},i=d.instrument;return"[object Object]"==={}.toString.call(i)?i=x(h,i):i!==!1&&(i=h),d.instrument=i,g.collectWindowErrors=!!d.collectWindowErrors,c},install:function(){var a=this;return a.isSetup()&&!a.o&&(g.report.subscribe(function(){a.B.apply(a,arguments)}),a.l.captureUnhandledRejections&&a.C(),a.D(),a.l.instrument&&a.l.instrument.tryCatch&&a.E(),a.l.autoBreadcrumbs&&a.F(),a.G(),a.o=!0),Error.stackTraceLimit=a.l.stackTraceLimit,this},setDSN:function(a){var b=this,c=b.H(a),d=c.path.lastIndexOf("/"),e=c.path.substr(1,d);b.I=a,b.i=c.user,b.J=c.pass&&c.pass.substr(1),b.j=c.path.substr(d+1),b.h=b.K(c),b.L=b.h+"/"+e+"api/"+b.j+"/store/",this.z()},context:function(a,b,c){return s(a)&&(c=b||[],b=a,a=void 0),this.wrap(a,b).apply(this,c)},wrap:function(a,b,c){function d(){var d=[],f=arguments.length,g=!a||a&&a.deep!==!1;for(c&&s(c)&&c.apply(this,arguments);f--;)d[f]=g?e.wrap(a,arguments[f]):arguments[f];try{return b.apply(this,d)}catch(h){throw e.M(),e.captureException(h,a),h}}var e=this;if(r(b)&&!s(a))return a;if(s(a)&&(b=a,a=void 0),!s(b))return b;try{if(b.N)return b;if(b.O)return b.O}catch(f){return b}for(var g in b)A(b,g)&&(d[g]=b[g]);return d.prototype=b.prototype,b.O=d,d.N=!0,d.P=b,d},uninstall:function(){return g.report.uninstall(),this.Q(),this.R(),this.S(),this.T(),Error.stackTraceLimit=this.p,this.o=!1,this},U:function(a){this.A("debug","Raven caught unhandled promise rejection:",a),this.captureException(a.reason,{extra:{unhandledPromiseRejection:!0}})},C:function(){return this.U=this.U.bind(this),R.addEventListener&&R.addEventListener("unhandledrejection",this.U),this},Q:function(){return R.removeEventListener&&R.removeEventListener("unhandledrejection",this.U),this},captureException:function(a,b){if(b=x({trimHeadFrames:0},b?b:{}),l(a)&&a.error)a=a.error;else{if(m(a)||n(a)){var c=a.name||(m(a)?"DOMError":"DOMException"),d=a.message?c+": "+a.message:c;return this.captureMessage(d,x(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}))}if(o(a))a=a;else{if(!q(a))return this.captureMessage(a,x(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}));b=this.V(b,a),a=new Error(b.message)}}this.e=a;try{var e=g.computeStackTrace(a);this.W(e,b)}catch(f){if(a!==f)throw f}return this},V:function(a,b){var c=Object.keys(b).sort(),d=x(a,{message:"Non-Error exception captured with keys: "+L(c),fingerprint:[i(c)],extra:a.extra||{}});return d.extra.X=M(b),d},captureMessage:function(a,b){if(!this.l.ignoreErrors.test||!this.l.ignoreErrors.test(a)){b=b||{},a+="";var c,d=x({message:a},b);try{throw new Error(a)}catch(e){c=e}c.name=null;var f=g.computeStackTrace(c),h=u(f.stack)&&f.stack[1];h&&"Raven.captureException"===h.func&&(h=f.stack[2]);var i=h&&h.url||"";if((!this.l.ignoreUrls.test||!this.l.ignoreUrls.test(i))&&(!this.l.whitelistUrls.test||this.l.whitelistUrls.test(i))){if(this.l.stacktrace||b&&b.stacktrace){d.fingerprint=null==d.fingerprint?a:d.fingerprint,b=x({trimHeadFrames:0},b),b.trimHeadFrames+=1;var j=this.Y(f,b);d.stacktrace={frames:j.reverse()}}return d.fingerprint&&(d.fingerprint=u(d.fingerprint)?d.fingerprint:[d.fingerprint]),this.Z(d),this}}},captureBreadcrumb:function(a){var b=x({timestamp:d()/1e3},a);if(s(this.l.breadcrumbCallback)){var c=this.l.breadcrumbCallback(b);if(p(c)&&!v(c))b=c;else if(c===!1)return this}return this.v.push(b),this.v.length>this.l.maxBreadcrumbs&&this.v.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.s.push([a,b]),this.o&&this.G(),this},setUserContext:function(a){return this.k.user=a,this},setExtraContext:function(a){return this.$("extra",a),this},setTagsContext:function(a){return this.$("tags",a),this},clearContext:function(){return this.k={},this},getContext:function(){return JSON.parse(h(this.k))},setEnvironment:function(a){return this.l.environment=a,this},setRelease:function(a){return this.l.release=a,this},setDataCallback:function(a){var b=this.l.dataCallback;return this.l.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.l.breadcrumbCallback;return this.l.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.l.shouldSendCallback;return this.l.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.l.transport=a,this},lastException:function(){return this.e},lastEventId:function(){return this.g},isSetup:function(){return!!this.b&&(!!this.h||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.A("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=R.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(S){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.I;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.k.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.K(this.H(c)),h=S.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(S.head||S.body).appendChild(h)}},M:function(){var a=this;this.n+=1,setTimeout(function(){a.n-=1})},_:function(a,b){var c,d;if(this.c){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),S.createEvent?(c=S.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=S.createEventObject(),c.eventType=a);for(d in b)A(b,d)&&(c[d]=b[d]);if(S.createEvent)S.dispatchEvent(c);else try{S.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},aa:function(a){var b=this;return function(c){if(b.ba=null,b.w!==c){b.w=c;var d;try{d=E(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ca:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.ba;g||a.aa("input")(c),clearTimeout(g),a.ba=setTimeout(function(){a.ba=null},b)}}},da:function(a,b){var c=H(this.x.href),d=H(b),e=H(a);this.y=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},D:function(){var a=this;a.ea=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.N?a.ea.apply(this.P,arguments):a.ea.apply(this,arguments)}},R:function(){this.ea&&(Function.prototype.toString=this.ea)},E:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.da(b.y,c+""),a.apply(this,arguments)}};I(R.history,"pushState",j,d),I(R.history,"replaceState",j,d)}if(c.console&&"console"in R&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};w(["debug","info","warn","error","log"],function(a,b){O(console,b,k)})}},S:function(){for(var a;this.u.length;){a=this.u.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},T:function(){for(var a in this.r)this.q[a]=this.r[a]},G:function(){var a=this;w(this.s,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},H:function(a){var b=Q.exec(a),c={},d=7;try{for(;d--;)c[P[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.l.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},K:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},B:function(){this.n||this.W.apply(this,arguments)},W:function(a,b){var c=this.Y(a,b);this._("handle",{stackInfo:a,options:b}),this.ga(a.name,a.message,a.url,a.lineno,c,b)},Y:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(w(a.stack,function(b,e){var f=c.ha(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.v,0)}),this.k.user&&(a.user=this.k.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),a=this.qa(a),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||v(a[b]))&&delete a[b]}),s(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!v(a)&&(!s(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.na()?void this.A("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function F(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&l(b))for(c=b.split(/\s+/),f=0;fc?Q(a,b-1):d}function R(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?X:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function S(a,b){function c(a){return m(a)?a.map(function(a){return c(a)}):k(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!m(b)||m(b)&&0===b.length)return a;var d,e=A(b),f="********";try{d=JSON.parse(T(a))}catch(g){return a}return c(d)}var T=a(10),U="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},V=3,W=51200,X=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isDOMError:g,isDOMException:h,isUndefined:i,isFunction:j,isPlainObject:k,isString:l,isArray:m,isEmptyObject:n,supportsErrorEvent:o,supportsDOMError:p,supportsDOMException:q,supportsFetch:r,supportsReferrerPolicy:s,supportsPromiseRejectionEvent:t,wrappedCallback:u,each:v,objectMerge:w,truncate:y,objectFrozen:x,hasKey:z,joinRegExp:A,urlencode:B,uuid4:D,htmlTreeAsString:E,htmlElementAsString:F,isSameException:I,isSameStacktrace:J,parseUrl:C,fill:K,safeJoin:L,serializeException:Q,serializeKeysForMessage:R,sanitize:S}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{10:10}],9:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}function e(){return"undefined"==typeof document||null==document.location?"":(document.location.origin||(document.location.origin=document.location.protocol+"//"+document.location.hostname+(document.location.port?":"+document.location.port:"")),document.location.origin)}var f=a(8),g={collectWindowErrors:!0,debug:!1},h="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},i=[].slice,j="?",k=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;g.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function e(a,b){var c=null;if(!b||g.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(i.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,h,i){var l=null,m=f.isErrorEvent(i)?i.error:i,n=f.isErrorEvent(a)?a.message:a;if(v)g.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&f.isError(m))l=g.computeStackTrace(m),e(l,!0);else{var p,r={url:b,line:c,column:h},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(k);p&&(s=p[1],n=p[2])}r.func=j,l={name:s,message:n,url:d(),stack:[r]},e(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=h.onerror,h.onerror=l,r=!0)}function n(){r&&(h.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,e.apply(null,[a,!1].concat(b))}function p(a,b){var c=i.call(arguments,1);if(v){if(u===a)return;o()}var d=g.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),g.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,f,g=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,h=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,i=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,k=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,l=/\((\S*)(?::(\d+))(?::(\d+))\)/,m=a.stack.split("\n"),n=[],o=(/^(.*) is undefined$/.exec(a.message),0),p=m.length;o eval")>-1;r&&(b=k.exec(c[3]))?(c[3]=b[1], +c[4]=b[2],c[5]=null):0!==o||c[5]||"undefined"==typeof a.columnNumber||(n[0].column=a.columnNumber+1),f={url:c[3],func:c[1]||j,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}if(!f.func&&f.line&&(f.func=j),f.url&&"blob:"===f.url.substr(0,5)){var s=new XMLHttpRequest;if(s.open("GET",f.url,!1),s.send(null),200===s.status){var t=s.responseText||"";t=t.slice(-300);var u=t.match(/\/\/# sourceMappingURL=(.*)$/);if(u){var v=u[1];"~"===v.charAt(0)&&(v=e()+v.slice(1)),f.url=v.slice(0,-4)}}}n.push(f)}return n.length?{name:a.name,message:a.message,url:d(),stack:n}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=j),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,e){for(var h,i,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==f&&o!==g.report){if(i={url:null,func:j,line:null,column:null},o.name?i.func=o.name:(h=k.exec(o.toString()))&&(i.func=h[1]),"undefined"==typeof i.func)try{i.func=h.input.substring(0,h.input.indexOf("{"))}catch(p){}m[""+o]?n=!0:m[""+o]=!0,l.push(i)}e&&l.splice(0,e);var q={name:a.name,message:a.message,url:d(),stack:l};return b(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),q}function f(b,e){var f=null;e=null==e?0:+e;try{if(f=a(b))return f}catch(h){if(g.debug)throw h}try{if(f=c(b,e+1))return f}catch(h){if(g.debug)throw h}return{name:b.name,message:b.message,url:d()}}return f.augmentStackTraceWithInitialElement=b,f.computeStackTraceFromStackProp=a,f}(),b.exports=g}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{8:8}],10:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}],11:[function(a,b,c){function d(a,b){var c=(65535&a)+(65535&b),d=(a>>16)+(b>>16)+(c>>16);return d<<16|65535&c}function e(a,b){return a<>>32-b}function f(a,b,c,f,g,h){return d(e(d(d(b,a),d(f,h)),g),c)}function g(a,b,c,d,e,g,h){return f(b&c|~b&d,a,b,e,g,h)}function h(a,b,c,d,e,g,h){return f(b&d|c&~d,a,b,e,g,h)}function i(a,b,c,d,e,g,h){return f(b^c^d,a,b,e,g,h)}function j(a,b,c,d,e,g,h){return f(c^(b|~d),a,b,e,g,h)}function k(a,b){a[b>>5]|=128<>>9<<4)+14]=b;var c,e,f,k,l,m=1732584193,n=-271733879,o=-1732584194,p=271733878;for(c=0;c>5]>>>b%32&255);return c}function m(a){var b,c=[];for(c[(a.length>>2)-1]=void 0,b=0;b>5]|=(255&a.charCodeAt(b/8))<16&&(e=k(e,8*a.length)),c=0;c<16;c+=1)f[c]=909522486^e[c],g[c]=1549556828^e[c];return d=k(f.concat(m(b)),512+8*b.length),l(k(g.concat(d),640))}function p(a){var b,c,d="0123456789abcdef",e="";for(c=0;c>>4&15)+d.charAt(15&b);return e}function q(a){return unescape(encodeURIComponent(a))}function r(a){return n(q(a))}function s(a){return p(r(a))}function t(a,b){return o(q(a),q(b))}function u(a,b){return p(t(a,b))}function v(a,b,c){return b?c?t(b,a):u(b,a):c?r(a):s(a)}b.exports=v},{}]},{},[7,1,2,3])(7)}); //# sourceMappingURL=raven.min.js.map \ No newline at end of file diff --git a/dist/angular,ember,vue/raven.min.js.map b/dist/angular,ember,vue/raven.min.js.map index 5e2ec1c91200..59e0a3870450 100644 --- a/dist/angular,ember,vue/raven.min.js.map +++ b/dist/angular,ember,vue/raven.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","angularPlugin","angular","RavenProvider","$get","$window","ExceptionHandlerProvider","$provide","decorator","exceptionHandler","R","$delegate","ex","cause","captureException","extra","moduleName","provider","config","setDataCallback","wrappedCallback","data","_normalizeData","angularPattern","exception","values","matches","exec","value","type","message","angularDocs","substr","addPlugin","7","8","2","emberPlugin","Ember","_oldOnError","onerror","error","RSVP","on","reason","context","captureMessage","3","formatComponentName","vm","$root","name","_isVue","$options","_componentTag","__file","vuePlugin","Vue","errorHandler","info","metaData","Object","prototype","toString","componentName","propsData","lifecycleHook","4","RavenConfigError","constructor","5","utils","wrapMethod","console","level","callback","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","msg","safeJoin","logger","Function","apply","6","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","sanitizeKeys","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isErrorEvent","isDOMError","isDOMException","isError","isObject","isPlainObject","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","sanitize","wrapConsoleMethod","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","dsn","options","_logDebug","globalOptions","key","setDSN","push","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","func","undefined","wrap","_before","wrapped","deep","_ignoreNextOnError","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","U","event","unhandledPromiseRejection","C","_promiseRejectionHandler","bind","addEventListener","Q","removeEventListener","trimHeadFrames","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","V","currentOptions","exKeys","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","M","setTimeout","_","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","aa","evtName","_keypressTimeout","target","category","ca","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","da","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","D","_originalFunctionToString","E","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","F","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","S","builtin","T","G","installer","concat","H","str","m","allowSecretKey","K","port","B","W","stackInfo","_triggerEvent","_processException","lineno","Y","frame","_normalizeFrame","in_app","ha","stackInfoUrl","normalized","filename","line","colno","column","function","ga","prefixedMessage","culprit","ia","request","Referer","breadcrumbs","_trimBreadcrumbs","ja","urlProp","urlProps","ka","httpData","userAgent","User-Agent","referrer","z","_backoffDuration","_backoffStart","na","oa","current","last","pa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Z","baseData","project","platform","_getHttpData","serverName","server_name","_sanitizeData","forEach","random","_sendProcessedPayload","qa","sa","ra","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","ta","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","open","setRequestHeader","send","ua","hash","evaluated","A","$","setUser","setReleaseContext","10","11","9","RavenConstructor","_Raven","noConflict","Client","what","supportsErrorEvent","ErrorEvent","supportsDOMError","DOMError","supportsDOMException","DOMException","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","sanitizeMask","safeInput","o_O","getLocationHref","getLocationOrigin","origin","hostname","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","responseText","sourceMaps","sourceMapAddress","charAt","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","y","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","string","raw"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file +{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","angularPlugin","angular","RavenProvider","$get","$window","ExceptionHandlerProvider","$provide","decorator","exceptionHandler","R","$delegate","ex","cause","captureException","extra","moduleName","provider","config","setDataCallback","wrappedCallback","data","_normalizeData","angularPattern","exception","values","matches","exec","value","type","message","angularDocs","substr","addPlugin","7","8","2","emberPlugin","Ember","_oldOnError","onerror","error","RSVP","on","reason","context","captureMessage","3","formatComponentName","vm","$root","name","_isVue","$options","_componentTag","__file","vuePlugin","Vue","errorHandler","info","metaData","Object","prototype","toString","componentName","propsData","lifecycleHook","4","RavenConfigError","constructor","5","utils","wrapMethod","console","level","callback","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","msg","safeJoin","logger","Function","apply","6","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","sanitizeKeys","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isErrorEvent","isDOMError","isDOMException","isError","isObject","isPlainObject","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","sanitize","wrapConsoleMethod","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","dsn","options","_logDebug","globalOptions","key","setDSN","push","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","func","undefined","wrap","_before","wrapped","deep","_ignoreNextOnError","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","U","event","unhandledPromiseRejection","C","_promiseRejectionHandler","bind","addEventListener","Q","removeEventListener","trimHeadFrames","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","V","currentOptions","exKeys","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","M","setTimeout","_","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","aa","evtName","_keypressTimeout","target","category","ca","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","da","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","D","_originalFunctionToString","E","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","F","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","S","builtin","T","G","installer","concat","H","str","m","allowSecretKey","K","port","B","W","stackInfo","_triggerEvent","_processException","lineno","Y","frame","_normalizeFrame","in_app","ha","stackInfoUrl","normalized","filename","line","colno","column","function","ga","prefixedMessage","transaction","ia","request","Referer","breadcrumbs","_trimBreadcrumbs","ja","urlProp","urlProps","ka","httpData","userAgent","User-Agent","referrer","z","_backoffDuration","_backoffStart","na","oa","current","last","pa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Z","baseData","project","platform","_getHttpData","serverName","server_name","_sanitizeData","forEach","random","_sendProcessedPayload","qa","sa","ra","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","ta","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","open","setRequestHeader","send","ua","hash","evaluated","A","$","setUser","setReleaseContext","10","11","9","RavenConstructor","_Raven","noConflict","Client","what","supportsErrorEvent","ErrorEvent","supportsDOMError","DOMError","supportsDOMException","DOMException","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","sanitizeMask","safeInput","o_O","getLocationHref","getLocationOrigin","origin","hostname","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","responseText","sourceMaps","sourceMapAddress","charAt","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","y","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","string","raw"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file diff --git a/dist/angular,ember/raven.js b/dist/angular,ember/raven.js index c8769ae8f03f..3747817a3429 100644 --- a/dist/angular,ember/raven.js +++ b/dist/angular,ember/raven.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.25.1 (b6f3c7a) | github.com/getsentry/raven-js */ +/*! Raven.js 3.25.2 (30b6d4e) | github.com/getsentry/raven-js */ /* * Includes TraceKit @@ -227,7 +227,11 @@ function now() { var _window = typeof window !== 'undefined' ? window - : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; + : typeof global !== 'undefined' + ? global + : typeof self !== 'undefined' + ? self + : {}; var _document = _window.document; var _navigator = _window.navigator; @@ -317,7 +321,7 @@ Raven.prototype = { // webpack (using a build step causes webpack #1617). Grunt verifies that // this value matches package.json during build. // See: https://github.com/getsentry/raven-js/issues/465 - VERSION: '3.25.1', + VERSION: '3.25.2', debug: false, @@ -1873,7 +1877,7 @@ Raven.prototype = { } ] }, - culprit: fileurl + transaction: fileurl }, options ); @@ -1988,7 +1992,7 @@ Raven.prototype = { if ( !last || current.message !== last.message || // defined for captureMessage - current.culprit !== last.culprit // defined for captureException/onerror + current.transaction !== last.transaction // defined for captureException/onerror ) return false; diff --git a/dist/angular,ember/raven.min.js b/dist/angular,ember/raven.min.js index 6ffdbeda05a4..d0b7ec3caca0 100644 --- a/dist/angular,ember/raven.min.js +++ b/dist/angular,ember/raven.min.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.25.1 (b6f3c7a) | github.com/getsentry/raven-js */ -!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.Raven=a()}}(function(){return function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};b[g][0].call(k.exports,function(a){var c=b[g][1][a];return e(c?c:a)},k,k.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;gthis.l.maxBreadcrumbs&&this.v.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.s.push([a,b]),this.o&&this.G(),this},setUserContext:function(a){return this.k.user=a,this},setExtraContext:function(a){return this.$("extra",a),this},setTagsContext:function(a){return this.$("tags",a),this},clearContext:function(){return this.k={},this},getContext:function(){return JSON.parse(h(this.k))},setEnvironment:function(a){return this.l.environment=a,this},setRelease:function(a){return this.l.release=a,this},setDataCallback:function(a){var b=this.l.dataCallback;return this.l.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.l.breadcrumbCallback;return this.l.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.l.shouldSendCallback;return this.l.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.l.transport=a,this},lastException:function(){return this.e},lastEventId:function(){return this.g},isSetup:function(){return!!this.b&&(!!this.h||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.A("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=R.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(S){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.I;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.k.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.K(this.H(c)),h=S.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(S.head||S.body).appendChild(h)}},M:function(){var a=this;this.n+=1,setTimeout(function(){a.n-=1})},_:function(a,b){var c,d;if(this.c){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),S.createEvent?(c=S.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=S.createEventObject(),c.eventType=a);for(d in b)A(b,d)&&(c[d]=b[d]);if(S.createEvent)S.dispatchEvent(c);else try{S.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},aa:function(a){var b=this;return function(c){if(b.ba=null,b.w!==c){b.w=c;var d;try{d=E(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ca:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.ba;g||a.aa("input")(c),clearTimeout(g),a.ba=setTimeout(function(){a.ba=null},b)}}},da:function(a,b){var c=H(this.x.href),d=H(b),e=H(a);this.y=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},D:function(){var a=this;a.ea=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.N?a.ea.apply(this.P,arguments):a.ea.apply(this,arguments)}},R:function(){this.ea&&(Function.prototype.toString=this.ea)},E:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.da(b.y,c+""),a.apply(this,arguments)}};I(R.history,"pushState",j,d),I(R.history,"replaceState",j,d)}if(c.console&&"console"in R&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};w(["debug","info","warn","error","log"],function(a,b){O(console,b,k)})}},S:function(){for(var a;this.u.length;){a=this.u.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},T:function(){for(var a in this.r)this.q[a]=this.r[a]},G:function(){var a=this;w(this.s,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},H:function(a){var b=Q.exec(a),c={},d=7;try{for(;d--;)c[P[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.l.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},K:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},B:function(){this.n||this.W.apply(this,arguments)},W:function(a,b){var c=this.Y(a,b);this._("handle",{stackInfo:a,options:b}),this.ga(a.name,a.message,a.url,a.lineno,c,b)},Y:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(w(a.stack,function(b,e){var f=c.ha(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.v,0)}),this.k.user&&(a.user=this.k.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),a=this.qa(a),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||v(a[b]))&&delete a[b]}),s(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!v(a)&&(!s(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.na()?void this.A("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function F(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&l(b))for(c=b.split(/\s+/),f=0;fc?Q(a,b-1):d}function R(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?X:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function S(a,b){function c(a){return m(a)?a.map(function(a){return c(a)}):k(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!m(b)||m(b)&&0===b.length)return a;var d,e=A(b),f="********";try{d=JSON.parse(T(a))}catch(g){return a}return c(d)}var T=a(9),U="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},V=3,W=51200,X=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isDOMError:g,isDOMException:h,isUndefined:i,isFunction:j,isPlainObject:k,isString:l,isArray:m,isEmptyObject:n,supportsErrorEvent:o,supportsDOMError:p,supportsDOMException:q,supportsFetch:r,supportsReferrerPolicy:s,supportsPromiseRejectionEvent:t,wrappedCallback:u,each:v,objectMerge:w,truncate:y,objectFrozen:x,hasKey:z,joinRegExp:A,urlencode:B,uuid4:D,htmlTreeAsString:E,htmlElementAsString:F,isSameException:I,isSameStacktrace:J,parseUrl:C,fill:K,safeJoin:L,serializeException:Q,serializeKeysForMessage:R,sanitize:S}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{9:9}],8:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}function e(){return"undefined"==typeof document||null==document.location?"":(document.location.origin||(document.location.origin=document.location.protocol+"//"+document.location.hostname+(document.location.port?":"+document.location.port:"")),document.location.origin)}var f=a(7),g={collectWindowErrors:!0,debug:!1},h="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},i=[].slice,j="?",k=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;g.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function e(a,b){var c=null;if(!b||g.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(i.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,h,i){var l=null,m=f.isErrorEvent(i)?i.error:i,n=f.isErrorEvent(a)?a.message:a;if(v)g.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&f.isError(m))l=g.computeStackTrace(m),e(l,!0);else{var p,r={url:b,line:c,column:h},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(k);p&&(s=p[1],n=p[2])}r.func=j,l={name:s,message:n,url:d(),stack:[r]},e(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=h.onerror,h.onerror=l,r=!0)}function n(){r&&(h.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,e.apply(null,[a,!1].concat(b))}function p(a,b){var c=i.call(arguments,1);if(v){if(u===a)return;o()}var d=g.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),g.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,f,g=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,h=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,i=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,k=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,l=/\((\S*)(?::(\d+))(?::(\d+))\)/,m=a.stack.split("\n"),n=[],o=(/^(.*) is undefined$/.exec(a.message),0),p=m.length;o eval")>-1;r&&(b=k.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==o||c[5]||"undefined"==typeof a.columnNumber||(n[0].column=a.columnNumber+1),f={url:c[3],func:c[1]||j,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}if(!f.func&&f.line&&(f.func=j),f.url&&"blob:"===f.url.substr(0,5)){var s=new XMLHttpRequest;if(s.open("GET",f.url,!1),s.send(null),200===s.status){var t=s.responseText||"";t=t.slice(-300);var u=t.match(/\/\/# sourceMappingURL=(.*)$/);if(u){var v=u[1];"~"===v.charAt(0)&&(v=e()+v.slice(1)),f.url=v.slice(0,-4)}}}n.push(f)}return n.length?{name:a.name,message:a.message,url:d(),stack:n}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1, -e.func||(e.func=j),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,e){for(var h,i,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==f&&o!==g.report){if(i={url:null,func:j,line:null,column:null},o.name?i.func=o.name:(h=k.exec(o.toString()))&&(i.func=h[1]),"undefined"==typeof i.func)try{i.func=h.input.substring(0,h.input.indexOf("{"))}catch(p){}m[""+o]?n=!0:m[""+o]=!0,l.push(i)}e&&l.splice(0,e);var q={name:a.name,message:a.message,url:d(),stack:l};return b(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),q}function f(b,e){var f=null;e=null==e?0:+e;try{if(f=a(b))return f}catch(h){if(g.debug)throw h}try{if(f=c(b,e+1))return f}catch(h){if(g.debug)throw h}return{name:b.name,message:b.message,url:d()}}return f.augmentStackTraceWithInitialElement=b,f.computeStackTraceFromStackProp=a,f}(),b.exports=g}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{7:7}],9:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}],10:[function(a,b,c){function d(a,b){var c=(65535&a)+(65535&b),d=(a>>16)+(b>>16)+(c>>16);return d<<16|65535&c}function e(a,b){return a<>>32-b}function f(a,b,c,f,g,h){return d(e(d(d(b,a),d(f,h)),g),c)}function g(a,b,c,d,e,g,h){return f(b&c|~b&d,a,b,e,g,h)}function h(a,b,c,d,e,g,h){return f(b&d|c&~d,a,b,e,g,h)}function i(a,b,c,d,e,g,h){return f(b^c^d,a,b,e,g,h)}function j(a,b,c,d,e,g,h){return f(c^(b|~d),a,b,e,g,h)}function k(a,b){a[b>>5]|=128<>>9<<4)+14]=b;var c,e,f,k,l,m=1732584193,n=-271733879,o=-1732584194,p=271733878;for(c=0;c>5]>>>b%32&255);return c}function m(a){var b,c=[];for(c[(a.length>>2)-1]=void 0,b=0;b>5]|=(255&a.charCodeAt(b/8))<16&&(e=k(e,8*a.length)),c=0;c<16;c+=1)f[c]=909522486^e[c],g[c]=1549556828^e[c];return d=k(f.concat(m(b)),512+8*b.length),l(k(g.concat(d),640))}function p(a){var b,c,d="0123456789abcdef",e="";for(c=0;c>>4&15)+d.charAt(15&b);return e}function q(a){return unescape(encodeURIComponent(a))}function r(a){return n(q(a))}function s(a){return p(r(a))}function t(a,b){return o(q(a),q(b))}function u(a,b){return p(t(a,b))}function v(a,b,c){return b?c?t(b,a):u(b,a):c?r(a):s(a)}b.exports=v},{}]},{},[6,1,2])(6)}); +/*! Raven.js 3.25.2 (30b6d4e) | github.com/getsentry/raven-js */ +!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.Raven=a()}}(function(){return function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};b[g][0].call(k.exports,function(a){var c=b[g][1][a];return e(c?c:a)},k,k.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;gthis.l.maxBreadcrumbs&&this.v.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.s.push([a,b]),this.o&&this.G(),this},setUserContext:function(a){return this.k.user=a,this},setExtraContext:function(a){return this.$("extra",a),this},setTagsContext:function(a){return this.$("tags",a),this},clearContext:function(){return this.k={},this},getContext:function(){return JSON.parse(h(this.k))},setEnvironment:function(a){return this.l.environment=a,this},setRelease:function(a){return this.l.release=a,this},setDataCallback:function(a){var b=this.l.dataCallback;return this.l.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.l.breadcrumbCallback;return this.l.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.l.shouldSendCallback;return this.l.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.l.transport=a,this},lastException:function(){return this.e},lastEventId:function(){return this.g},isSetup:function(){return!!this.b&&(!!this.h||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.A("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=R.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(S){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.I;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.k.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.K(this.H(c)),h=S.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(S.head||S.body).appendChild(h)}},M:function(){var a=this;this.n+=1,setTimeout(function(){a.n-=1})},_:function(a,b){var c,d;if(this.c){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),S.createEvent?(c=S.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=S.createEventObject(),c.eventType=a);for(d in b)A(b,d)&&(c[d]=b[d]);if(S.createEvent)S.dispatchEvent(c);else try{S.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},aa:function(a){var b=this;return function(c){if(b.ba=null,b.w!==c){b.w=c;var d;try{d=E(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ca:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.ba;g||a.aa("input")(c),clearTimeout(g),a.ba=setTimeout(function(){a.ba=null},b)}}},da:function(a,b){var c=H(this.x.href),d=H(b),e=H(a);this.y=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},D:function(){var a=this;a.ea=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.N?a.ea.apply(this.P,arguments):a.ea.apply(this,arguments)}},R:function(){this.ea&&(Function.prototype.toString=this.ea)},E:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.da(b.y,c+""),a.apply(this,arguments)}};I(R.history,"pushState",j,d),I(R.history,"replaceState",j,d)}if(c.console&&"console"in R&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};w(["debug","info","warn","error","log"],function(a,b){O(console,b,k)})}},S:function(){for(var a;this.u.length;){a=this.u.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},T:function(){for(var a in this.r)this.q[a]=this.r[a]},G:function(){var a=this;w(this.s,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},H:function(a){var b=Q.exec(a),c={},d=7;try{for(;d--;)c[P[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.l.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},K:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},B:function(){this.n||this.W.apply(this,arguments)},W:function(a,b){var c=this.Y(a,b);this._("handle",{stackInfo:a,options:b}),this.ga(a.name,a.message,a.url,a.lineno,c,b)},Y:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(w(a.stack,function(b,e){var f=c.ha(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.v,0)}),this.k.user&&(a.user=this.k.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),a=this.qa(a),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||v(a[b]))&&delete a[b]}),s(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!v(a)&&(!s(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.na()?void this.A("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function F(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&l(b))for(c=b.split(/\s+/),f=0;fc?Q(a,b-1):d}function R(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?X:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function S(a,b){function c(a){return m(a)?a.map(function(a){return c(a)}):k(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!m(b)||m(b)&&0===b.length)return a;var d,e=A(b),f="********";try{d=JSON.parse(T(a))}catch(g){return a}return c(d)}var T=a(9),U="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},V=3,W=51200,X=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isDOMError:g,isDOMException:h,isUndefined:i,isFunction:j,isPlainObject:k,isString:l,isArray:m,isEmptyObject:n,supportsErrorEvent:o,supportsDOMError:p,supportsDOMException:q,supportsFetch:r,supportsReferrerPolicy:s,supportsPromiseRejectionEvent:t,wrappedCallback:u,each:v,objectMerge:w,truncate:y,objectFrozen:x,hasKey:z,joinRegExp:A,urlencode:B,uuid4:D,htmlTreeAsString:E,htmlElementAsString:F,isSameException:I,isSameStacktrace:J,parseUrl:C,fill:K,safeJoin:L,serializeException:Q,serializeKeysForMessage:R,sanitize:S}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{9:9}],8:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}function e(){return"undefined"==typeof document||null==document.location?"":(document.location.origin||(document.location.origin=document.location.protocol+"//"+document.location.hostname+(document.location.port?":"+document.location.port:"")),document.location.origin)}var f=a(7),g={collectWindowErrors:!0,debug:!1},h="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},i=[].slice,j="?",k=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;g.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function e(a,b){var c=null;if(!b||g.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(i.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,h,i){var l=null,m=f.isErrorEvent(i)?i.error:i,n=f.isErrorEvent(a)?a.message:a;if(v)g.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&f.isError(m))l=g.computeStackTrace(m),e(l,!0);else{var p,r={url:b,line:c,column:h},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(k);p&&(s=p[1],n=p[2])}r.func=j,l={name:s,message:n,url:d(),stack:[r]},e(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=h.onerror,h.onerror=l,r=!0)}function n(){r&&(h.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,e.apply(null,[a,!1].concat(b))}function p(a,b){var c=i.call(arguments,1);if(v){if(u===a)return;o()}var d=g.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),g.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,f,g=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,h=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,i=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,k=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,l=/\((\S*)(?::(\d+))(?::(\d+))\)/,m=a.stack.split("\n"),n=[],o=(/^(.*) is undefined$/.exec(a.message),0),p=m.length;o eval")>-1;r&&(b=k.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==o||c[5]||"undefined"==typeof a.columnNumber||(n[0].column=a.columnNumber+1),f={url:c[3],func:c[1]||j,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}if(!f.func&&f.line&&(f.func=j),f.url&&"blob:"===f.url.substr(0,5)){var s=new XMLHttpRequest;if(s.open("GET",f.url,!1),s.send(null),200===s.status){var t=s.responseText||"";t=t.slice(-300);var u=t.match(/\/\/# sourceMappingURL=(.*)$/);if(u){var v=u[1];"~"===v.charAt(0)&&(v=e()+v.slice(1)),f.url=v.slice(0,-4)}}}n.push(f)}return n.length?{name:a.name,message:a.message,url:d(),stack:n}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){ +if(a.incomplete=!1,e.func||(e.func=j),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,e){for(var h,i,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==f&&o!==g.report){if(i={url:null,func:j,line:null,column:null},o.name?i.func=o.name:(h=k.exec(o.toString()))&&(i.func=h[1]),"undefined"==typeof i.func)try{i.func=h.input.substring(0,h.input.indexOf("{"))}catch(p){}m[""+o]?n=!0:m[""+o]=!0,l.push(i)}e&&l.splice(0,e);var q={name:a.name,message:a.message,url:d(),stack:l};return b(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),q}function f(b,e){var f=null;e=null==e?0:+e;try{if(f=a(b))return f}catch(h){if(g.debug)throw h}try{if(f=c(b,e+1))return f}catch(h){if(g.debug)throw h}return{name:b.name,message:b.message,url:d()}}return f.augmentStackTraceWithInitialElement=b,f.computeStackTraceFromStackProp=a,f}(),b.exports=g}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{7:7}],9:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}],10:[function(a,b,c){function d(a,b){var c=(65535&a)+(65535&b),d=(a>>16)+(b>>16)+(c>>16);return d<<16|65535&c}function e(a,b){return a<>>32-b}function f(a,b,c,f,g,h){return d(e(d(d(b,a),d(f,h)),g),c)}function g(a,b,c,d,e,g,h){return f(b&c|~b&d,a,b,e,g,h)}function h(a,b,c,d,e,g,h){return f(b&d|c&~d,a,b,e,g,h)}function i(a,b,c,d,e,g,h){return f(b^c^d,a,b,e,g,h)}function j(a,b,c,d,e,g,h){return f(c^(b|~d),a,b,e,g,h)}function k(a,b){a[b>>5]|=128<>>9<<4)+14]=b;var c,e,f,k,l,m=1732584193,n=-271733879,o=-1732584194,p=271733878;for(c=0;c>5]>>>b%32&255);return c}function m(a){var b,c=[];for(c[(a.length>>2)-1]=void 0,b=0;b>5]|=(255&a.charCodeAt(b/8))<16&&(e=k(e,8*a.length)),c=0;c<16;c+=1)f[c]=909522486^e[c],g[c]=1549556828^e[c];return d=k(f.concat(m(b)),512+8*b.length),l(k(g.concat(d),640))}function p(a){var b,c,d="0123456789abcdef",e="";for(c=0;c>>4&15)+d.charAt(15&b);return e}function q(a){return unescape(encodeURIComponent(a))}function r(a){return n(q(a))}function s(a){return p(r(a))}function t(a,b){return o(q(a),q(b))}function u(a,b){return p(t(a,b))}function v(a,b,c){return b?c?t(b,a):u(b,a):c?r(a):s(a)}b.exports=v},{}]},{},[6,1,2])(6)}); //# sourceMappingURL=raven.min.js.map \ No newline at end of file diff --git a/dist/angular,ember/raven.min.js.map b/dist/angular,ember/raven.min.js.map index 4de78099e245..81491d475293 100644 --- a/dist/angular,ember/raven.min.js.map +++ b/dist/angular,ember/raven.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","angularPlugin","angular","RavenProvider","$get","$window","ExceptionHandlerProvider","$provide","decorator","exceptionHandler","R","$delegate","ex","cause","captureException","extra","moduleName","provider","config","setDataCallback","wrappedCallback","data","_normalizeData","angularPattern","exception","values","matches","exec","value","type","message","angularDocs","substr","addPlugin","6","7","2","emberPlugin","Ember","_oldOnError","onerror","error","RSVP","on","reason","context","captureMessage","3","RavenConfigError","name","prototype","constructor","4","utils","wrapMethod","console","level","callback","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","msg","safeJoin","logger","Function","apply","5","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","sanitizeKeys","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isErrorEvent","isDOMError","isDOMException","isError","isObject","isPlainObject","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","sanitize","wrapConsoleMethod","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","dsn","options","_logDebug","globalOptions","key","setDSN","push","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","toString","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","func","undefined","wrap","_before","wrapped","deep","_ignoreNextOnError","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","U","event","unhandledPromiseRejection","C","_promiseRejectionHandler","bind","addEventListener","Q","removeEventListener","trimHeadFrames","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","V","currentOptions","exKeys","Object","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","M","setTimeout","_","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","aa","evtName","_keypressTimeout","target","category","ca","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","da","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","D","_originalFunctionToString","E","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","F","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","S","builtin","T","G","installer","concat","H","str","m","allowSecretKey","K","port","B","W","stackInfo","_triggerEvent","_processException","lineno","Y","frame","_normalizeFrame","in_app","ha","stackInfoUrl","normalized","filename","line","colno","column","function","ga","prefixedMessage","culprit","ia","request","Referer","breadcrumbs","_trimBreadcrumbs","ja","urlProp","urlProps","ka","httpData","userAgent","User-Agent","referrer","z","_backoffDuration","_backoffStart","na","oa","current","last","pa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Z","baseData","project","platform","_getHttpData","serverName","server_name","_sanitizeData","forEach","random","_sendProcessedPayload","qa","sa","ra","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","ta","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","open","setRequestHeader","send","ua","hash","evaluated","A","$","setUser","setReleaseContext","10","8","9","RavenConstructor","_Raven","noConflict","Client","what","supportsErrorEvent","ErrorEvent","supportsDOMError","DOMError","supportsDOMException","DOMException","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","sanitizeMask","safeInput","o_O","getLocationHref","getLocationOrigin","origin","hostname","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","responseText","sourceMaps","sourceMapAddress","charAt","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","y","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","string","raw"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file +{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","angularPlugin","angular","RavenProvider","$get","$window","ExceptionHandlerProvider","$provide","decorator","exceptionHandler","R","$delegate","ex","cause","captureException","extra","moduleName","provider","config","setDataCallback","wrappedCallback","data","_normalizeData","angularPattern","exception","values","matches","exec","value","type","message","angularDocs","substr","addPlugin","6","7","2","emberPlugin","Ember","_oldOnError","onerror","error","RSVP","on","reason","context","captureMessage","3","RavenConfigError","name","prototype","constructor","4","utils","wrapMethod","console","level","callback","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","msg","safeJoin","logger","Function","apply","5","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","sanitizeKeys","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isErrorEvent","isDOMError","isDOMException","isError","isObject","isPlainObject","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","sanitize","wrapConsoleMethod","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","dsn","options","_logDebug","globalOptions","key","setDSN","push","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","toString","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","func","undefined","wrap","_before","wrapped","deep","_ignoreNextOnError","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","U","event","unhandledPromiseRejection","C","_promiseRejectionHandler","bind","addEventListener","Q","removeEventListener","trimHeadFrames","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","V","currentOptions","exKeys","Object","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","M","setTimeout","_","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","aa","evtName","_keypressTimeout","target","category","ca","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","da","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","D","_originalFunctionToString","E","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","F","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","S","builtin","T","G","installer","concat","H","str","m","allowSecretKey","K","port","B","W","stackInfo","_triggerEvent","_processException","lineno","Y","frame","_normalizeFrame","in_app","ha","stackInfoUrl","normalized","filename","line","colno","column","function","ga","prefixedMessage","transaction","ia","request","Referer","breadcrumbs","_trimBreadcrumbs","ja","urlProp","urlProps","ka","httpData","userAgent","User-Agent","referrer","z","_backoffDuration","_backoffStart","na","oa","current","last","pa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Z","baseData","project","platform","_getHttpData","serverName","server_name","_sanitizeData","forEach","random","_sendProcessedPayload","qa","sa","ra","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","ta","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","open","setRequestHeader","send","ua","hash","evaluated","A","$","setUser","setReleaseContext","10","8","9","RavenConstructor","_Raven","noConflict","Client","what","supportsErrorEvent","ErrorEvent","supportsDOMError","DOMError","supportsDOMException","DOMException","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","sanitizeMask","safeInput","o_O","getLocationHref","getLocationOrigin","origin","hostname","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","responseText","sourceMaps","sourceMapAddress","charAt","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","y","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","string","raw"],"mappings":";CAYA,SAAUA,GAAG,GAAoB,gBAAVC,UAAoC,mBAATC,QAAsBA,OAAOD,QAAQD,QAAS,IAAmB,kBAATG,SAAqBA,OAAOC,IAAKD,UAAUH,OAAO,CAAC,GAAIK,EAAkCA,GAAb,mBAATC,QAAwBA,OAA+B,mBAATC,QAAwBA,OAA6B,mBAAPC,MAAsBA,KAAYC,KAAKJ,EAAEK,MAAQV,MAAO,WAAqC,MAAO,SAAUW,GAAEC,EAAEC,EAAEC,GAAG,QAASC,GAAEC,EAAEC,GAAG,IAAIJ,EAAEG,GAAG,CAAC,IAAIJ,EAAEI,GAAG,CAAC,GAAIE,GAAkB,kBAATC,UAAqBA,OAAQ,KAAIF,GAAGC,EAAE,MAAOA,GAAEF,GAAE,EAAI,IAAGI,EAAE,MAAOA,GAAEJ,GAAE,EAAI,IAAIhB,GAAE,GAAIqB,OAAM,uBAAuBL,EAAE,IAAK,MAAMhB,GAAEsB,KAAK,mBAAmBtB,EAAE,GAAIuB,GAAEV,EAAEG,IAAIf,WAAYW,GAAEI,GAAG,GAAGQ,KAAKD,EAAEtB,QAAQ,SAASU,GAAG,GAAIE,GAAED,EAAEI,GAAG,GAAGL,EAAG,OAAOI,GAAEF,EAAEA,EAAEF,IAAIY,EAAEA,EAAEtB,QAAQU,EAAEC,EAAEC,EAAEC,GAAG,MAAOD,GAAEG,GAAGf,QAAkD,IAAI,GAA1CmB,GAAkB,kBAATD,UAAqBA,QAAgBH,EAAE,EAAEA,EAAEF,EAAEW,OAAOT,IAAID,EAAED,EAAEE,GAAI,OAAOD,KAAKW,GAAG,SAASC,EAAQzB,EAAOD,GAYp0B,QAAS2B,GAAclB,EAAOmB,GAK5B,QAASC,KACPrB,KAAKsB,MACH,UACA,SAASC,GACP,MAAOtB,KAKb,QAASuB,GAAyBC,GAChCA,EAASC,UAAU,qBAAsB,QAAS,YAAaC,IAGjE,QAASA,GAAiBC,EAAGC,GAC3B,MAAO,UAASC,EAAIC,GAClBH,EAAEI,iBAAiBF,GACjBG,OAAQF,MAAOA,KAEjBF,EAAUC,EAAIC,IAtBlBX,EAAUA,GAAWvB,OAAOuB,QAEvBA,IAwBLA,EACG3B,OAAOyC,MACPC,SAAS,QAASd,GAClBe,QAAQ,WAAYZ,IAEvBvB,EAAMoC,gBACJC,EAAgB,SAASC,GACvB,MAAOpB,GAAcqB,EAAeD,OAxC1C,GAAID,GAAkBpB,EAAQ,GAAGoB,gBAG7BG,EAAiB,6DACjBP,EAAa,SAyCjBf,GAAcqB,EAAiB,SAASD,GAEtC,GAAIG,GAAYH,EAAKG,SACrB,IAAIA,EAAW,CACbA,EAAYA,EAAUC,OAAO,EAC7B,IAAIC,GAAUH,EAAeI,KAAKH,EAAUI,MAExCF,KAEFF,EAAUK,KAAOH,EAAQ,GACzBF,EAAUI,MAAQF,EAAQ,GAE1BL,EAAKS,QAAUN,EAAUK,KAAO,KAAOL,EAAUI,MAEjDP,EAAKN,MAAMgB,YAAcL,EAAQ,GAAGM,OAAO,EAAG,MAIlD,MAAOX,IAGTpB,EAAce,WAAaA,EAE3BzC,EAAOD,QAAU2B,EAEjBD,EAAQ,GAAGiC,UAAU1D,EAAOD,WACzB4D,EAAI,EAAEC,EAAI,IAAIC,GAAG,SAASpC,EAAQzB,EAAOD,GAM5C,QAAS+D,GAAYtD,EAAOuD,GAI1B,GAHAA,EAAQA,GAAS3D,OAAO2D,MAGxB,CAEA,GAAIC,GAAcD,EAAME,OACxBF,GAAME,QAAU,SAAsBC,GACpC1D,EAAM+B,iBAAiB2B,GACI,kBAAhBF,IACTA,EAAY1C,KAAKf,KAAM2D,IAG3BH,EAAMI,KAAKC,GAAG,QAAS,SAASC,GAC1BA,YAAkBlD,OACpBX,EAAM+B,iBAAiB8B,GACrB7B,OAAQ8B,QAAS,sCAGnB9D,EAAM+D,eAAe,oCAAqC/B,OAAQ6B,OAAQA,QAKhFrE,EAAOD,QAAU+D,EAEjBrC,EAAQ,GAAGiC,UAAU1D,EAAOD,WACzB4D,EAAI,IAAIa,GAAG,SAAS/C,EAAQzB,EAAOD,GACtC,QAAS0E,GAAiBlB,GACxBhD,KAAKmE,KAAO,mBACZnE,KAAKgD,QAAUA,EAEjBkB,EAAiBE,UAAY,GAAIxD,OACjCsD,EAAiBE,UAAUC,YAAcH,EAEzCzE,EAAOD,QAAU0E,OAEXI,GAAG,SAASpD,EAAQzB,EAAOD,GACjC,GAAI+E,GAAQrD,EAAQ,GAEhBsD,EAAa,SAASC,EAASC,EAAOC,GACxC,GAAIC,GAAuBH,EAAQC,GAC/BG,EAAkBJ,CAEtB,IAAMC,IAASD,GAAf,CAIA,GAAIK,GAAwB,SAAVJ,EAAmB,UAAYA,CAEjDD,GAAQC,GAAS,WACf,GAAIK,MAAUC,MAAMjE,KAAKkE,WAErBC,EAAMX,EAAMY,SAASJ,EAAM,KAC3BxC,GAAQmC,MAAOI,EAAaM,OAAQ,UAAWnD,OAAQgD,UAAWF,GAExD,YAAVL,EACEK,EAAK,MAAO,IAEdG,EACE,sBAAwBX,EAAMY,SAASJ,EAAKC,MAAM,GAAI,MAAQ,kBAChEzC,EAAKN,MAAMgD,UAAYF,EAAKC,MAAM,GAClCL,GAAYA,EAASO,EAAK3C,IAG5BoC,GAAYA,EAASO,EAAK3C,GAIxBqC,GAGFS,SAASjB,UAAUkB,MAAMvE,KAAK6D,EAAsBC,EAAiBE,KAK3EtF,GAAOD,SACLgF,WAAYA,KAGXnB,EAAI,IAAIkC,GAAG,SAASrE,EAAQzB,EAAOD,IACtC,SAAWM,GA4CX,QAAS0F,KACP,OAAQ,GAAIC,MAed,QAASC,GAAqBC,EAAUhB,GACtC,MAAOiB,GAAWjB,GACd,SAASpC,GACP,MAAOoC,GAASpC,EAAMoD,IAExBhB,EAMN,QAAS1E,KACPD,KAAK6F,IAA8B,gBAATC,QAAqBA,KAAKC,WAEpD/F,KAAKgG,GAAgBC,EAAYC,GACjClG,KAAKmG,GAAiBF,EAAYG,GAClCpG,KAAKqG,EAAyB,KAC9BrG,KAAKsG,EAAY,KACjBtG,KAAKuG,EAAe,KACpBvG,KAAKwG,EAAgB,KACrBxG,KAAKyG,EAAa,KAClBzG,KAAK0G,EAAiB,KACtB1G,KAAK2G,KACL3G,KAAK4G,GAEHC,QAASC,EAAQC,gBAAkBD,EAAQC,eAAeC,GAC1D5B,OAAQ,aACR6B,gBACAC,cACAC,iBACAC,gBACAC,QAAS,KACTC,qBAAqB,EACrBC,4BAA4B,EAC5BC,iBAAkB,EAElBC,aAAc,IACdC,gBAAiB,GACjBC,iBAAiB,EACjBC,YAAY,EACZC,WAAY,EACZC,iBAEF9H,KAAK+H,GACHC,OAAQ,OACRC,WAAW,EAKXC,eAAgBC,IAA2B,SAAW,IAExDnI,KAAKoI,EAAiB,EACtBpI,KAAKqI,GAAoB,EACzBrI,KAAKsI,EAAgC1H,MAAM8G,gBAG3C1H,KAAKuI,EAAmBzB,EAAQrC,YAChCzE,KAAKwI,KACLxI,KAAKyI,KACLzI,KAAK0I,EAAalD,IAClBxF,KAAK2I,KACL3I,KAAK4I,KACL5I,KAAK6I,EAAqB,KAE1B7I,KAAK8I,EAAYhC,EAAQiC,SACzB/I,KAAKgJ,EAAYhJ,KAAK8I,GAAa9I,KAAK8I,EAAUG,KAClDjJ,KAAKkJ,GAGL,KAAK,GAAIlB,KAAUhI,MAAKuI,EACtBvI,KAAKwI,EAAwBR,GAAUhI,KAAKuI,EAAiBP,GAhIjE,GAAImB,GAAWjI,EAAQ,GACnB6E,EAAY7E,EAAQ,GACpBkI,EAAMlI,EAAQ,IACdgD,EAAmBhD,EAAQ,GAE3BqD,EAAQrD,EAAQ,GAChBmI,EAAe9E,EAAM8E,aACrBC,EAAa/E,EAAM+E,WACnBC,EAAiBhF,EAAMgF,eACvBC,EAAUjF,EAAMiF,QAChBC,EAAWlF,EAAMkF,SACjBC,EAAgBnF,EAAMmF,cACtBzD,EAAc1B,EAAM0B,YACpBL,EAAarB,EAAMqB,WACnB+D,EAAWpF,EAAMoF,SACjBC,EAAUrF,EAAMqF,QAChBC,EAAgBtF,EAAMsF,cACtBC,EAAOvF,EAAMuF,KACbC,EAAcxF,EAAMwF,YACpBC,EAAWzF,EAAMyF,SACjBC,EAAe1F,EAAM0F,aACrBC,EAAS3F,EAAM2F,OACfC,EAAa5F,EAAM4F,WACnBC,EAAY7F,EAAM6F,UAClBC,EAAQ9F,EAAM8F,MACdC,EAAmB/F,EAAM+F,iBACzBC,EAAkBhG,EAAMgG,gBACxBC,EAAmBjG,EAAMiG,iBACzBC,EAAWlG,EAAMkG,SACjBC,EAAOnG,EAAMmG,KACbC,EAAgBpG,EAAMoG,cACtBxC,EAAyB5D,EAAM4D,uBAC/ByC,EAA0BrG,EAAMqG,wBAChCC,EAAqBtG,EAAMsG,mBAC3BC,EAAWvG,EAAMuG,SAEjBC,EAAoB7J,EAAQ,GAAGsD,WAE/BwG,EAAU,2CAA2CC,MAAM,KAC7DC,EAAa,gEAOXpE,EACgB,mBAAXjH,QACHA,OACkB,mBAAXC,GACLA,EACgB,mBAATC,MACLA,QAENmG,EAAYY,EAAQqE,SACpB/E,EAAaU,EAAQsE,SAmFzBnL,GAAMmE,WAKJiH,QAAS,SAETC,OAAO,EAEPnC,SAAUA,EASV/G,OAAQ,SAASmJ,EAAKC,GACpB,GAAIzL,GAAOC,IAEX,IAAID,EAAKyG,EAEP,MADAxG,MAAKyL,EAAU,QAAS,4CACjB1L,CAET,KAAKwL,EAAK,MAAOxL,EAEjB,IAAI2L,GAAgB3L,EAAK6G,CAGrB4E,IACF1B,EAAK0B,EAAS,SAASG,EAAK7I,GAEd,SAAR6I,GAA0B,UAARA,GAA2B,SAARA,EACvC5L,EAAK4G,EAAegF,GAAO7I,EAE3B4I,EAAcC,GAAO7I,IAK3B/C,EAAK6L,OAAOL,GAIZG,EAAczE,aAAa4E,KAAK,qBAChCH,EAAczE,aAAa4E,KAAK,iDAGhCH,EAAczE,aAAekD,EAAWuB,EAAczE,cACtDyE,EAAcxE,aAAawE,EAAcxE,WAAWlG,QAChDmJ,EAAWuB,EAAcxE,YAE7BwE,EAAcvE,gBAAgBuE,EAAcvE,cAAcnG,QACtDmJ,EAAWuB,EAAcvE,eAE7BuE,EAActE,aAAe+C,EAAWuB,EAActE,cACtDsE,EAAcI,eAAiBC,KAAKC,IAClC,EACAD,KAAKE,IAAIP,EAAcI,gBAAkB,IAAK,KAGhD,IAAII,IACFC,KAAK,EACL1H,SAAS,EACT2H,KAAK,EACLrD,UAAU,EACVsD,QAAQ,GAGN1E,EAAkB+D,EAAc/D,eACM,wBAAnC2E,SAASvL,KAAK4G,GACnBA,EAAkBoC,EAAYmC,EAAwBvE,GAC7CA,KAAoB,IAC7BA,EAAkBuE,GAEpBR,EAAc/D,gBAAkBA,CAEhC,IAAI4E,IACFC,UAAU,GAGR5E,EAAa8D,EAAc9D,UAW/B,OAVqC,uBAA9B0E,SAASvL,KAAK6G,GACnBA,EAAamC,EAAYwC,EAAoB3E,GACpCA,KAAe,IACxBA,EAAa2E,GAEfb,EAAc9D,WAAaA,EAE3BuB,EAAS7B,sBAAwBoE,EAAcpE,oBAGxCvH,GAWT0M,QAAS,WACP,GAAI1M,GAAOC,IAyBX,OAxBID,GAAK2M,YAAc3M,EAAKsI,IAC1Bc,EAASwD,OAAOC,UAAU,WACxB7M,EAAK8M,EAAwBvH,MAAMvF,EAAMkF,aAGvClF,EAAK6G,EAAeW,4BACtBxH,EAAK+M,IAGP/M,EAAKgN,IAEDhN,EAAK6G,EAAegB,YAAc7H,EAAK6G,EAAegB,WAAW4E,UACnEzM,EAAKiN,IAGHjN,EAAK6G,EAAee,iBAAiB5H,EAAKkN,IAG9ClN,EAAKmN,IAELnN,EAAKsI,GAAoB,GAG3BzH,MAAM8G,gBAAkB3H,EAAK6G,EAAec,gBACrC1H,MAQT4L,OAAQ,SAASL,GACf,GAAIxL,GAAOC,KACTmN,EAAMpN,EAAKqN,EAAU7B,GACrB8B,EAAYF,EAAIG,KAAKC,YAAY,KACjCD,EAAOH,EAAIG,KAAKpK,OAAO,EAAGmK,EAE5BtN,GAAKyN,EAAOjC,EACZxL,EAAK0G,EAAa0G,EAAIM,KACtB1N,EAAK2N,EAAgBP,EAAIQ,MAAQR,EAAIQ,KAAKzK,OAAO,GACjDnD,EAAK2G,EAAiByG,EAAIG,KAAKpK,OAAOmK,EAAY,GAElDtN,EAAKyG,EAAgBzG,EAAK6N,EAAiBT,GAE3CpN,EAAK8N,EACH9N,EAAKyG,EAAgB,IAAM8G,EAAO,OAASvN,EAAK2G,EAAiB,UAInE1G,KAAKkJ,KAWPnF,QAAS,SAASyH,EAASsC,EAAM/I,GAO/B,MANIa,GAAW4F,KACbzG,EAAO+I,MACPA,EAAOtC,EACPA,EAAUuC,QAGL/N,KAAKgO,KAAKxC,EAASsC,GAAMxI,MAAMtF,KAAM+E,IAW9CiJ,KAAM,SAASxC,EAASsC,EAAMG,GAqC5B,QAASC,KACP,GAAInJ,MACFpE,EAAIsE,UAAUjE,OACdmN,GAAQ3C,GAAYA,GAAWA,EAAQ2C,QAAS,CAQlD,KANIF,GAAWrI,EAAWqI,IACxBA,EAAQ3I,MAAMtF,KAAMiF,WAKftE,KAAKoE,EAAKpE,GAAKwN,EAAOpO,EAAKiO,KAAKxC,EAASvG,UAAUtE,IAAMsE,UAAUtE,EAE1E,KAKE,MAAOmN,GAAKxI,MAAMtF,KAAM+E,GACxB,MAAO7E,GAGP,KAFAH,GAAKqO,IACLrO,EAAKiC,iBAAiB9B,EAAGsL,GACnBtL,GA1DV,GAAIH,GAAOC,IAGX,IAAIiG,EAAY6H,KAAUlI,EAAW4F,GACnC,MAAOA,EAWT,IAPI5F,EAAW4F,KACbsC,EAAOtC,EACPA,EAAUuC,SAKPnI,EAAWkI,GACd,MAAOA,EAIT,KACE,GAAIA,EAAKO,EACP,MAAOP,EAIT,IAAIA,EAAKQ,EACP,MAAOR,GAAKQ,EAEd,MAAOpO,GAIP,MAAO4N,GA8BT,IAAK,GAAIS,KAAYT,GACf5D,EAAO4D,EAAMS,KACfL,EAAQK,GAAYT,EAAKS,GAW7B,OARAL,GAAQ9J,UAAY0J,EAAK1J,UAEzB0J,EAAKQ,EAAoBJ,EAGzBA,EAAQG,GAAY,EACpBH,EAAQM,EAAWV,EAEZI,GAQTO,UAAW,WAWT,MAVAtF,GAASwD,OAAO8B,YAEhBzO,KAAK0O,IACL1O,KAAK2O,IACL3O,KAAK4O,IACL5O,KAAK6O,IAELjO,MAAM8G,gBAAkB1H,KAAKsI,EAC7BtI,KAAKqI,GAAoB,EAElBrI,MAWT8O,EAA0B,SAASC,GACjC/O,KAAKyL,EAAU,QAAS,4CAA6CsD,GACrE/O,KAAKgC,iBAAiB+M,EAAMjL,QAC1B7B,OACE+M,2BAA2B,MAUjCC,EAAgC,WAI9B,MAHAjP,MAAKkP,EAA2BlP,KAAKkP,EAAyBC,KAAKnP,MACnE8G,EAAQsI,kBACNtI,EAAQsI,iBAAiB,qBAAsBpP,KAAKkP,GAC/ClP,MAQTqP,EAAgC,WAG9B,MAFAvI,GAAQwI,qBACNxI,EAAQwI,oBAAoB,qBAAsBtP,KAAKkP,GAClDlP,MAUTgC,iBAAkB,SAASF,EAAI0J,GAG7B,GAFAA,EAAUzB,GAAawF,eAAgB,GAAI/D,EAAUA,MAEjDnC,EAAavH,IAAOA,EAAG6B,MAEzB7B,EAAKA,EAAG6B,UACH,CAAA,GAAI2F,EAAWxH,IAAOyH,EAAezH,GAAK,CAK/C,GAAIqC,GAAOrC,EAAGqC,OAASmF,EAAWxH,GAAM,WAAa,gBACjDkB,EAAUlB,EAAGkB,QAAUmB,EAAO,KAAOrC,EAAGkB,QAAUmB,CAEtD,OAAOnE,MAAKgE,eACVhB,EACA+G,EAAYyB,GAGVgE,YAAY,EACZD,eAAgB/D,EAAQ+D,eAAiB,KAGxC,GAAI/F,EAAQ1H,GAEjBA,EAAKA,MACA,CAAA,IAAI4H,EAAc5H,GAavB,MAAO9B,MAAKgE,eACVlC,EACAiI,EAAYyB,GACVgE,YAAY,EACZD,eAAgB/D,EAAQ+D,eAAiB,IAb7C/D,GAAUxL,KAAKyP,EAA2CjE,EAAS1J,GACnEA,EAAK,GAAIlB,OAAM4K,EAAQxI,UAkBzBhD,KAAKqG,EAAyBvE,CAO9B,KACE,GAAI4N,GAAQvG,EAASwG,kBAAkB7N,EACvC9B,MAAK4P,EAAiBF,EAAOlE,GAC7B,MAAOqE,GACP,GAAI/N,IAAO+N,EACT,KAAMA,GAIV,MAAO7P,OAGT8P,EAA4C,SAASC,EAAgBjO,GACnE,GAAIkO,GAASC,OAAOC,KAAKpO,GAAIqO,OACzB3E,EAAUzB,EAAYgG,GACxB/M,QACE,2CAA6C4H,EAAwBoF,GACvEI,aAAchH,EAAI4G,IAClB/N,MAAO8N,EAAe9N,WAIxB,OAFAuJ,GAAQvJ,MAAMoO,EAAiBxF,EAAmB/I,GAE3C0J,GAUTxH,eAAgB,SAASkB,EAAKsG,GAI5B,IACIxL,KAAK4G,EAAeK,aAAaqJ,OACnCtQ,KAAK4G,EAAeK,aAAaqJ,KAAKpL,GAFxC,CAOAsG,EAAUA,MACVtG,GAAY,EAEZ,IAOIpD,GAPAS,EAAOwH,GAEP/G,QAASkC,GAEXsG,EAQF,KACE,KAAM,IAAI5K,OAAMsE,GAChB,MAAO2K,GACP/N,EAAK+N,EAIP/N,EAAGqC,KAAO,IACV,IAAIuL,GAAQvG,EAASwG,kBAAkB7N,GAGnCyO,EAAc3G,EAAQ8F,EAAMA,QAAUA,EAAMA,MAAM,EAKlDa,IAAoC,2BAArBA,EAAYzC,OAC7ByC,EAAcb,EAAMA,MAAM,GAG5B,IAAIc,GAAWD,GAAeA,EAAYE,KAAQ,EAElD,MACIzQ,KAAK4G,EAAeM,WAAWoJ,OACjCtQ,KAAK4G,EAAeM,WAAWoJ,KAAKE,OAMlCxQ,KAAK4G,EAAeO,cAAcmJ,MACnCtQ,KAAK4G,EAAeO,cAAcmJ,KAAKE,IAF1C,CAOA,GAAIxQ,KAAK4G,EAAe4I,YAAehE,GAAWA,EAAQgE,WAAa,CAErEjN,EAAK6N,YAAkC,MAApB7N,EAAK6N,YAAsBlL,EAAM3C,EAAK6N,YAEzD5E,EAAUzB,GAENwF,eAAgB,GAElB/D,GAMFA,EAAQ+D,gBAAkB,CAE1B,IAAImB,GAAS1Q,KAAK2Q,EAAejB,EAAOlE,EACxCjJ,GAAKiN,YAEHkB,OAAQA,EAAOE,WAcnB,MATIrO,GAAK6N,cACP7N,EAAK6N,YAAcxG,EAAQrH,EAAK6N,aAC5B7N,EAAK6N,aACJ7N,EAAK6N,cAIZpQ,KAAK6Q,EAAMtO,GAEJvC,QAGT8Q,kBAAmB,SAASC,GAC1B,GAAIC,GAAQjH,GAERkH,UAAWzL,IAAQ,KAErBuL,EAGF,IAAInL,EAAW5F,KAAK4G,EAAesK,oBAAqB,CACtD,GAAIC,GAASnR,KAAK4G,EAAesK,mBAAmBF,EAEpD,IAAIvH,EAAS0H,KAAYtH,EAAcsH,GACrCH,EAAQG,MACH,IAAIA,KAAW,EACpB,MAAOnR,MAQX,MAJAA,MAAK4I,EAAaiD,KAAKmF,GACnBhR,KAAK4I,EAAa5H,OAAShB,KAAK4G,EAAekF,gBACjD9L,KAAK4I,EAAawI,QAEbpR,MAGTmD,UAAW,SAASkO,GAClB,GAAIC,MAAgBtM,MAAMjE,KAAKkE,UAAW,EAO1C,OALAjF,MAAKyI,EAASoD,MAAMwF,EAAQC,IACxBtR,KAAKqI,GACPrI,KAAKkN,IAGAlN,MASTuR,eAAgB,SAAS9D,GAIvB,MAFAzN,MAAK2G,EAAe8G,KAAOA,EAEpBzN,MASTwR,gBAAiB,SAASvP,GAGxB,MAFAjC,MAAKyR,EAAc,QAASxP,GAErBjC,MAST0R,eAAgB,SAASC,GAGvB,MAFA3R,MAAKyR,EAAc,OAAQE,GAEpB3R,MAQT4R,aAAc,WAGZ,MAFA5R,MAAK2G,KAEE3G,MAQT6R,WAAY,WAEV,MAAO/L,MAAKgM,MAAM/L,EAAU/F,KAAK2G,KASnCoL,eAAgB,SAASC,GAGvB,MAFAhS,MAAK4G,EAAeoL,YAAcA,EAE3BhS,MASTiS,WAAY,SAASpL,GAGnB,MAFA7G,MAAK4G,EAAeC,QAAUA,EAEvB7G,MAUTqC,gBAAiB,SAASsC,GACxB,GAAIgB,GAAW3F,KAAK4G,EAAesL,YAEnC,OADAlS,MAAK4G,EAAesL,aAAexM,EAAqBC,EAAUhB,GAC3D3E,MAUTmS,sBAAuB,SAASxN,GAC9B,GAAIgB,GAAW3F,KAAK4G,EAAesK,kBAEnC,OADAlR,MAAK4G,EAAesK,mBAAqBxL,EAAqBC,EAAUhB,GACjE3E,MAUToS,sBAAuB,SAASzN,GAC9B,GAAIgB,GAAW3F,KAAK4G,EAAeyL,kBAEnC,OADArS,MAAK4G,EAAeyL,mBAAqB3M,EAAqBC,EAAUhB,GACjE3E,MAYTsS,aAAc,SAASC,GAGrB,MAFAvS,MAAK4G,EAAe2L,UAAYA,EAEzBvS,MAQTwS,cAAe,WACb,MAAOxS,MAAKqG,GAQdoM,YAAa,WACX,MAAOzS,MAAKuG,GAQdmG,QAAS,WACP,QAAK1M,KAAK6F,MACL7F,KAAKwG,IACHxG,KAAK0S,0BACR1S,KAAK0S,yBAA0B,EAC/B1S,KAAKyL,EAAU,QAAS,2CAEnB,KAKXkH,UAAW,WAIT,GAAIC,GAAc9L,EAAQ8L,WACtBA,IACF5S,KAAKoC,OAAOwQ,EAAYrH,IAAKqH,EAAYxQ,QAAQqK,WAIrDoG,iBAAkB,SAASrH,GACzB,GACGtF,EADH,CAKAsF,EAAUA,KAEV,IAAIiH,GAAcjH,EAAQsH,SAAW9S,KAAKyS,aAC1C,KAAKA,EACH,KAAM,IAAIvO,GAAiB,kBAG7B,IAAIqH,GAAMC,EAAQD,KAAOvL,KAAKwN,CAC9B,KAAKjC,EACH,KAAM,IAAIrH,GAAiB,cAG7B,IAAI6O,GAASC,mBACTC,EAAK,EACTA,IAAM,YAAcF,EAAON,GAC3BQ,GAAM,QAAUF,EAAOxH,EAEvB,IAAIkC,GAAOjC,EAAQiC,MAAQzN,KAAK2G,EAAe8G,IAC3CA,KACEA,EAAKtJ,OAAM8O,GAAM,SAAWF,EAAOtF,EAAKtJ,OACxCsJ,EAAKyF,QAAOD,GAAM,UAAYF,EAAOtF,EAAKyF,QAGhD,IAAIC,GAAenT,KAAK4N,EAAiB5N,KAAKoN,EAAU7B,IAEpD6H,EAASlN,EAAUmN,cAAc,SACrCD,GAAOE,OAAQ,EACfF,EAAOG,IAAMJ,EAAe,yBAA2BF,GACtD/M,EAAUsN,MAAQtN,EAAUuN,MAAMC,YAAYN,KAIjDO,EAAoB,WAClB,GAAI5T,GAAOC,IACXA,MAAKoI,GAAkB,EACvBwL,WAAW,WAET7T,EAAKqI,GAAkB,KAI3ByL,EAAe,SAASC,EAAWtI,GAEjC,GAAIuI,GAAKpI,CAET,IAAK3L,KAAKgG,EAAV,CAEAwF,EAAUA,MAEVsI,EAAY,QAAUA,EAAU5Q,OAAO,EAAG,GAAG8Q,cAAgBF,EAAU5Q,OAAO,GAE1EgD,EAAU+N,aACZF,EAAM7N,EAAU+N,YAAY,cAC5BF,EAAIG,UAAUJ,GAAW,GAAM,KAE/BC,EAAM7N,EAAUiO,oBAChBJ,EAAID,UAAYA,EAGlB,KAAKnI,IAAOH,GACNtB,EAAOsB,EAASG,KAClBoI,EAAIpI,GAAOH,EAAQG,GAGvB,IAAIzF,EAAU+N,YAEZ/N,EAAUkO,cAAcL,OAIxB,KACE7N,EAAUmO,UAAU,KAAON,EAAID,UAAUQ,cAAeP,GACxD,MAAO7T,OAYbqU,GAAyB,SAASC,GAChC,GAAIzU,GAAOC,IACX,OAAO,UAAS+T,GASd,GALAhU,EAAK0U,GAAmB,KAKpB1U,EAAK8I,IAAuBkL,EAAhC,CAEAhU,EAAK8I,EAAqBkL,CAM1B,IAAIW,EACJ,KACEA,EAASpK,EAAiByJ,EAAIW,QAC9B,MAAOxU,GACPwU,EAAS,YAGX3U,EAAK+Q,mBACH6D,SAAU,MAAQH,EAClBxR,QAAS0R,OAUfE,GAAuB,WACrB,GAAI7U,GAAOC,KACT6U,EAAmB,GAKrB,OAAO,UAASd,GACd,GAAIW,EACJ,KACEA,EAASX,EAAIW,OACb,MAAOxU,GAGP,OAEF,GAAI4U,GAAUJ,GAAUA,EAAOI,OAK/B,IACGA,IACY,UAAZA,GAAmC,aAAZA,GAA2BJ,EAAOK,mBAF5D,CAQA,GAAIC,GAAUjV,EAAK0U,EACdO,IACHjV,EAAKkV,GAAwB,SAASlB,GAExCmB,aAAaF,GACbjV,EAAK0U,GAAmBb,WAAW,WACjC7T,EAAK0U,GAAmB,MACvBI,MAUPM,GAAmB,SAASC,EAAMC,GAChC,GAAIC,GAAY7K,EAASzK,KAAK8I,EAAUG,MACpCsM,EAAW9K,EAAS4K,GACpBG,EAAa/K,EAAS2K,EAK1BpV,MAAKgJ,EAAYqM,EAIbC,EAAUG,WAAaF,EAASE,UAAYH,EAAUI,OAASH,EAASG,OAC1EL,EAAKE,EAASI,UACZL,EAAUG,WAAaD,EAAWC,UAAYH,EAAUI,OAASF,EAAWE,OAC9EN,EAAOI,EAAWG,UAEpB3V,KAAK8Q,mBACH6D,SAAU,aACVpS,MACE8S,GAAIA,EACJD,KAAMA,MAKZQ,EAAwB,WACtB,GAAI7V,GAAOC,IACXD,GAAK8V,GAA4BxQ,SAASjB,UAAUkI,SAEpDjH,SAASjB,UAAUkI,SAAW,WAC5B,MAAoB,kBAATtM,OAAuBA,KAAKqO,EAC9BtO,EAAK8V,GAA0BvQ,MAAMtF,KAAKwO,EAAUvJ,WAEtDlF,EAAK8V,GAA0BvQ,MAAMtF,KAAMiF,aAItDrD,EAA0B,WACpB5B,KAAK6V,KAEPxQ,SAASjB,UAAUkI,SAAWtM,KAAK6V,KAQvCC,EAAqB,WAKnB,QAASC,GAAWC,GAClB,MAAO,UAASC,EAAI9V,GAKlB,IAAK,GADD4E,GAAO,GAAImR,OAAMjR,UAAUjE,QACtBL,EAAI,EAAGA,EAAIoE,EAAK/D,SAAUL,EACjCoE,EAAKpE,GAAKsE,UAAUtE,EAEtB,IAAIwV,GAAmBpR,EAAK,EAQ5B,OAPIa,GAAWuQ,KACbpR,EAAK,GAAKhF,EAAKiO,KAAKmI,IAMlBH,EAAK1Q,MACA0Q,EAAK1Q,MAAMtF,KAAM+E,GAEjBiR,EAAKjR,EAAK,GAAIA,EAAK,KAOhC,QAASqR,GAAgBtW,GACvB,GAAIuW,GAAQvP,EAAQhH,IAAWgH,EAAQhH,GAAQsE,SAC3CiS,IAASA,EAAMC,gBAAkBD,EAAMC,eAAe,sBACxD5L,EACE2L,EACA,mBACA,SAASL,GACP,MAAO,UAASxB,EAASyB,EAAIM,EAASC,GAEpC,IACMP,GAAMA,EAAGQ,cACXR,EAAGQ,YAAc1W,EAAKiO,KAAKiI,EAAGQ,cAEhC,MAAOC,IAMT,GAAIC,GAAQC,EAAcC,CA6B1B,OA1BElP,IACAA,EAAgByE,MACJ,gBAAXtM,GAAuC,SAAXA,KAI7B8W,EAAe7W,EAAKkV,GAAwB,SAC5C4B,EAAkB9W,EAAK+W,KACvBH,EAAS,SAAS5C,GAIhB,GAAKA,EAAL,CAEA,GAAID,EACJ,KACEA,EAAYC,EAAIhR,KAChB,MAAO7C,GAGP,OAEF,MAAkB,UAAd4T,EAA8B8C,EAAa7C,GACxB,aAAdD,EAAiC+C,EAAgB9C,GAArD,UAGFiC,EAAKjV,KACVf,KACAwU,EACAzU,EAAKiO,KAAKiI,EAAIlI,OAAW4I,GACzBJ,EACAC,KAINO,GAEFrM,EACE2L,EACA,sBACA,SAASL,GACP,MAAO,UAASjC,EAAKkC,EAAIM,EAASC,GAChC,IACEP,EAAKA,IAAOA,EAAG3H,EAAoB2H,EAAG3H,EAAoB2H,GAC1D,MAAO/V,IAGT,MAAO8V,GAAKjV,KAAKf,KAAM+T,EAAKkC,EAAIM,EAASC,KAG7CO,IAvGN,GAAIhX,GAAOC,KAEP+W,EAAkBhX,EAAK4I,EA2BvBhB,EAAkB3H,KAAK4G,EAAee,eA+E1C+C,GAAK5D,EAAS,aAAciP,EAAYgB,GACxCrM,EAAK5D,EAAS,cAAeiP,EAAYgB,GACrCjQ,EAAQkQ,uBACVtM,EACE5D,EACA,wBACA,SAASkP,GACP,MAAO,UAASiB,GACd,MAAOjB,GAAKjW,EAAKiO,KAAKiJ,MAG1BF,EAqCJ,KAAK,GA/BDG,IACF,cACA,SACA,OACA,mBACA,iBACA,oBACA,kBACA,cACA,aACA,qBACA,cACA,aACA,iBACA,eACA,kBACA,cACA,cACA,eACA,qBACA,SACA,YACA,eACA,gBACA,YACA,kBACA,SACA,iBACA,4BACA,wBAEOvW,EAAI,EAAGA,EAAIuW,EAAalW,OAAQL,IACvCyV,EAAgBc,EAAavW,KAajCwW,EAAwB,WAMtB,QAASC,GAASC,EAAMlL,GAClBkL,IAAQlL,IAAOvG,EAAWuG,EAAIkL,KAChC3M,EAAKyB,EAAKkL,EAAM,SAASrB,GACvB,MAAOjW,GAAKiO,KAAKgI,KARvB,GAAIjW,GAAOC,KACP2H,EAAkB3H,KAAK4G,EAAee,gBAEtCoP,EAAkBhX,EAAK4I,CAU3B,IAAIhB,EAAgBwE,KAAO,kBAAoBrF,GAAS,CACtD,GAAIwQ,GAAWxQ,EAAQyQ,gBAAkBzQ,EAAQyQ,eAAenT,SAChEsG,GACE4M,EACA,OACA,SAASE,GACP,MAAO,UAASxP,EAAQyI,GAYtB,MARI9G,GAAS8G,IAAQA,EAAIgH,QAAQ1X,EAAK0G,UACpCzG,KAAK0X,IACH1P,OAAQA,EACRyI,IAAKA,EACLkH,YAAa,OAIVH,EAASlS,MAAMtF,KAAMiF,aAGhC8R,GAGFrM,EACE4M,EACA,OACA,SAASM,GACP,MAAO,YAIL,QAASC,KACP,GAAI1L,EAAIuL,IAAkC,IAAnBvL,EAAI2L,WAAkB,CAC3C,IAGE3L,EAAIuL,GAAYC,YAAcxL,EAAI4L,OAClC,MAAO7X,IAITH,EAAK+Q,mBACH/N,KAAM,OACN4R,SAAU,MACVpS,KAAM4J,EAAIuL,MAMhB,IAAK,GArBDvL,GAAMnM,KAoBNgY,GAAS,SAAU,UAAW,cACzBC,EAAI,EAAGA,EAAID,EAAMhX,OAAQiX,IAChCb,EAASY,EAAMC,GAAI9L,EAiBrB,OAdI,sBAAwBA,IAAOvG,EAAWuG,EAAI+L,oBAChDxN,EACEyB,EACA,qBACA,SAAS6J,GACP,MAAOjW,GAAKiO,KAAKgI,EAAMjI,OAAW8J,KAMtC1L,EAAI+L,mBAAqBL,EAGpBD,EAAStS,MAAMtF,KAAMiF,aAGhC8R,GAIApP,EAAgBwE,KAAOxB,KACzBD,EACE5D,EACA,QACA,SAASqR,GACP,MAAO,YAKL,IAAK,GADDpT,GAAO,GAAImR,OAAMjR,UAAUjE,QACtBL,EAAI,EAAGA,EAAIoE,EAAK/D,SAAUL,EACjCoE,EAAKpE,GAAKsE,UAAUtE,EAGtB,IAEI8P,GAFA2H,EAAarT,EAAK,GAClBiD,EAAS,KAeb,IAZ0B,gBAAfoQ,GACT3H,EAAM2H,EACG,WAAatR,IAAWsR,YAAsBtR,GAAQuR,SAC/D5H,EAAM2H,EAAW3H,IACb2H,EAAWpQ,SACbA,EAASoQ,EAAWpQ,SAGtByI,EAAM,GAAK2H,EAIT3H,EAAIgH,QAAQ1X,EAAK0G,QACnB,MAAO0R,GAAU7S,MAAMtF,KAAM+E,EAG3BA,GAAK,IAAMA,EAAK,GAAGiD,SACrBA,EAASjD,EAAK,GAAGiD,OAGnB,IAAIsQ,IACFtQ,OAAQA,EACRyI,IAAKA,EACLkH,YAAa,KAGf,OAAOQ,GACJ7S,MAAMtF,KAAM+E,GACZwT,KAAK,SAASC,GASb,MARAF,GAAUX,YAAca,EAAST,OAEjChY,EAAK+Q,mBACH/N,KAAM,OACN4R,SAAU,QACVpS,KAAM+V,IAGDE,IAER,SAAS,SAAS9B,GASjB,KAPA3W,GAAK+Q,mBACH/N,KAAM,OACN4R,SAAU,QACVpS,KAAM+V,EACN5T,MAAO,UAGHgS,MAIdK,GAMApP,EAAgByE,KAAOpM,KAAKgG,IAC1BE,EAAUkJ,kBACZlJ,EAAUkJ,iBAAiB,QAASrP,EAAKkV,GAAwB,UAAU,GAC3E/O,EAAUkJ,iBAAiB,WAAYrP,EAAK+W,MAAyB,IAC5D5Q,EAAUuS,cAEnBvS,EAAUuS,YAAY,UAAW1Y,EAAKkV,GAAwB,UAC9D/O,EAAUuS,YAAY,aAAc1Y,EAAK+W,OAQ7C,IAAI4B,GAAS5R,EAAQ4R,OACjBC,EAAsBD,GAAUA,EAAOE,KAAOF,EAAOE,IAAIC,QACzDC,GACDH,GACD7R,EAAQiS,SACRjS,EAAQiS,QAAQC,WAChBlS,EAAQiS,QAAQE,YAClB,IAAItR,EAAgBoB,UAAY+P,EAAwB,CAEtD,GAAII,GAAgBpS,EAAQqS,UAC5BrS,GAAQqS,WAAa,WACnB,GAAIC,GAAcrZ,EAAK+I,EAAUG,IAGjC,IAFAlJ,EAAKsZ,GAAkBtZ,EAAKiJ,EAAWoQ,GAEnCF,EACF,MAAOA,GAAc5T,MAAMtF,KAAMiF,WAIrC,IAAIqU,GAA6B,SAASC,GAGxC,MAAO,YACL,GAAI9I,GAAMxL,UAAUjE,OAAS,EAAIiE,UAAU,GAAK8I,MAQhD,OALI0C,IAEF1Q,EAAKsZ,GAAkBtZ,EAAKiJ,EAAWyH,EAAM,IAGxC8I,EAAiBjU,MAAMtF,KAAMiF,YAIxCyF,GAAK5D,EAAQiS,QAAS,YAAaO,EAA4BvC,GAC/DrM,EAAK5D,EAAQiS,QAAS,eAAgBO,EAA4BvC,GAGpE,GAAIpP,EAAgBlD,SAAW,WAAaqC,IAAWrC,QAAQ+U,IAAK,CAElE,GAAIC,GAAwB,SAASvU,EAAK3C,GACxCxC,EAAK+Q,mBACH9N,QAASkC,EACTR,MAAOnC,EAAKmC,MACZiQ,SAAU,YAId7K,IAAM,QAAS,OAAQ,OAAQ,QAAS,OAAQ,SAAS+J,EAAGnP,GAC1DqG,EAAkBtG,QAASC,EAAO+U,OAKxCC,EAAkB,WAGhB,IADA,GAAIC,GACG3Z,KAAK2I,EAAiB3H,QAAQ,CACnC2Y,EAAU3Z,KAAK2I,EAAiByI,OAEhC,IAAIL,GAAM4I,EAAQ,GAChBxV,EAAOwV,EAAQ,GACf3D,EAAO2D,EAAQ,EAEjB5I,GAAI5M,GAAQ6R,IAIhB4D,EAAiB,WAEf,IAAK,GAAI5R,KAAUhI,MAAKwI,EACtBxI,KAAKuI,EAAiBP,GAAUhI,KAAKwI,EAAwBR,IAIjE6R,EAAe,WACb,GAAI9Z,GAAOC,IAGX8J,GAAK9J,KAAKyI,EAAU,SAASoL,EAAGxC,GAC9B,GAAIyI,GAAYzI,EAAO,GACnBtM,EAAOsM,EAAO,EAClByI,GAAUxU,MAAMvF,GAAOA,GAAMga,OAAOhV,OAIxCiV,EAAW,SAASC,GAClB,GAAIC,GAAIhP,EAAWrI,KAAKoX,GACtB1O,KACA5K,EAAI,CAEN,KACE,KAAOA,KAAK4K,EAAIP,EAAQrK,IAAMuZ,EAAEvZ,IAAM,GACtC,MAAOT,GACP,KAAM,IAAIgE,GAAiB,gBAAkB+V,GAG/C,GAAI1O,EAAIoC,OAAS3N,KAAK4G,EAAeuT,eACnC,KAAM,IAAIjW,GACR,iFAIJ,OAAOqH,IAGT6O,EAAkB,SAASjN,GAEzB,GAAIgG,GAAe,KAAOhG,EAAIuI,MAAQvI,EAAIkN,KAAO,IAAMlN,EAAIkN,KAAO,GAKlE,OAHIlN,GAAIsI,WACNtC,EAAehG,EAAIsI,SAAW,IAAMtC,GAE/BA,GAGTmH,EAAyB,WAElBta,KAAKoI,GACRpI,KAAK4P,EAAiBtK,MAAMtF,KAAMiF,YAItCsV,EAAkB,SAASC,EAAWhP,GACpC,GAAIkF,GAAS1Q,KAAK2Q,EAAe6J,EAAWhP,EAE5CxL,MAAKya,EAAc,UACjBD,UAAWA,EACXhP,QAASA,IAGXxL,KAAK0a,GACHF,EAAUrW,KACVqW,EAAUxX,QACVwX,EAAU/J,IACV+J,EAAUG,OACVjK,EACAlF,IAIJoP,EAAgB,SAASJ,EAAWhP,GAClC,GAAIzL,GAAOC,KACP0Q,IACJ,IAAI8J,EAAU9K,OAAS8K,EAAU9K,MAAM1O,SACrC8I,EAAK0Q,EAAU9K,MAAO,SAAS/O,EAAG+O,GAChC,GAAImL,GAAQ9a,EAAK+a,GAAgBpL,EAAO8K,EAAU/J,IAC9CoK,IACFnK,EAAO7E,KAAKgP,KAKZrP,GAAWA,EAAQ+D,gBACrB,IAAK,GAAI0I,GAAI,EAAGA,EAAIzM,EAAQ+D,gBAAkB0I,EAAIvH,EAAO1P,OAAQiX,IAC/DvH,EAAOuH,GAAG8C,QAAS,CAKzB,OADArK,GAASA,EAAO1L,MAAM,EAAGhF,KAAK4G,EAAec,kBAI/CsT,GAAiB,SAASH,EAAOI,GAE/B,GAAIC,IACFC,SAAUN,EAAMpK,IAChBkK,OAAQE,EAAMO,KACdC,MAAOR,EAAMS,OACbC,WAAUV,EAAM/M,MAAQ,IAuB1B,OAfK+M,GAAMpK,MACTyK,EAAWC,SAAWF,GAGxBC,EAAWH,SAGN/a,KAAK4G,EAAeQ,aAAakJ,OACjCtQ,KAAK4G,EAAeQ,aAAakJ,KAAK4K,EAAWC,WAEpD,qBAAqB7K,KAAK4K,EAAW,cAErC,qBAAqB5K,KAAK4K,EAAWC,WAGhCD,GAGTM,GAAmB,SAASzY,EAAMC,EAASwN,EAASmK,EAAQjK,EAAQlF,GAClE,GAAIiQ,IAAmB1Y,EAAOA,EAAO,KAAO,KAAOC,GAAW,GAC9D,KACIhD,KAAK4G,EAAeK,aAAaqJ,OAClCtQ,KAAK4G,EAAeK,aAAaqJ,KAAKtN,KACrChD,KAAK4G,EAAeK,aAAaqJ,KAAKmL,GAH1C,CAQA,GAAIjM,EAoBJ,IAlBIkB,GAAUA,EAAO1P,QACnBwP,EAAUE,EAAO,GAAGyK,UAAY3K,EAGhCE,EAAOE,UACPpB,GAAckB,OAAQA,IACbF,IACThB,GACEkB,SAEIyK,SAAU3K,EACVmK,OAAQA,EACRI,QAAQ,QAOZ/a,KAAK4G,EAAeM,WAAWoJ,OACjCtQ,KAAK4G,EAAeM,WAAWoJ,KAAKE,OAMlCxQ,KAAK4G,EAAeO,cAAcmJ,MACnCtQ,KAAK4G,EAAeO,cAAcmJ,KAAKE,IAF1C,CAOA,GAAIjO,GAAOwH,GAGPrH,WACEC,SAEII,KAAMA,EACND,MAAOE,EACPwM,WAAYA,KAIlBkM,YAAalL,GAEfhF,EAIFxL,MAAK6Q,EAAMtO,MAGboZ,GAAa,SAASpZ,GAGpB,GAAIyJ,GAAMhM,KAAK4G,EAAeY,gBAI9B,IAHIjF,EAAKS,UACPT,EAAKS,QAAUgH,EAASzH,EAAKS,QAASgJ,IAEpCzJ,EAAKG,UAAW,CAClB,GAAIA,GAAYH,EAAKG,UAAUC,OAAO,EACtCD,GAAUI,MAAQkH,EAAStH,EAAUI,MAAOkJ,GAG9C,GAAI4P,GAAUrZ,EAAKqZ,OAanB,OAZIA,KACEA,EAAQnL,MACVmL,EAAQnL,IAAMzG,EAAS4R,EAAQnL,IAAKzQ,KAAK4G,EAAea,eAEtDmU,EAAQC,UACVD,EAAQC,QAAU7R,EAAS4R,EAAQC,QAAS7b,KAAK4G,EAAea,gBAIhElF,EAAKuZ,aAAevZ,EAAKuZ,YAAYnZ,QACvC3C,KAAK+b,GAAiBxZ,EAAKuZ,aAEtBvZ,GAMTyZ,GAAkB,SAASF,GAQzB,IAAK,GAJHG,GACAjL,EACAzO,EAHE2Z,GAAY,KAAM,OAAQ,OAKrBvb,EAAI,EAAGA,EAAImb,EAAYnZ,OAAO3B,SAAUL,EAE/C,GADAqQ,EAAQ8K,EAAYnZ,OAAOhC,GAExBqQ,EAAMsF,eAAe,SACrB7M,EAASuH,EAAMzO,QAChB0H,EAAa+G,EAAMzO,MAHrB,CAOAA,EAAOwH,KAAgBiH,EAAMzO,KAC7B,KAAK,GAAI0V,GAAI,EAAGA,EAAIiE,EAASlb,SAAUiX,EACrCgE,EAAUC,EAASjE,GACf1V,EAAK+T,eAAe2F,IAAY1Z,EAAK0Z,KACvC1Z,EAAK0Z,GAAWjS,EAASzH,EAAK0Z,GAAUjc,KAAK4G,EAAea,cAGhEqU,GAAYnZ,OAAOhC,GAAG4B,KAAOA,IAIjC4Z,GAAc,WACZ,GAAKnc,KAAKmG,GAAkBnG,KAAKgG,EAAjC,CACA,GAAIoW,KAkBJ,OAhBIpc,MAAKmG,GAAiBC,EAAWiW,YACnCD,EAAS/U,SACPiV,aAAclW,EAAWiW,YAKzBvV,EAAQiC,UAAYjC,EAAQiC,SAASE,OACvCmT,EAAS3L,IAAM3J,EAAQiC,SAASE,MAG9BjJ,KAAKgG,GAAgBE,EAAUqW,WAC5BH,EAAS/U,UAAS+U,EAAS/U,YAChC+U,EAAS/U,QAAQwU,QAAU3V,EAAUqW,UAGhCH,IAGTI,EAAe,WACbxc,KAAKyc,GAAmB,EACxBzc,KAAK0c,GAAgB,MAGvBC,GAAgB,WACd,MAAO3c,MAAKyc,IAAoBjX,IAAQxF,KAAK0c,GAAgB1c,KAAKyc,IAYpEG,GAAe,SAASC,GACtB,GAAIC,GAAO9c,KAAKsG,CAEhB,UACGwW,GACDD,EAAQ7Z,UAAY8Z,EAAK9Z,SACzB6Z,EAAQnB,cAAgBoB,EAAKpB,eAK3BmB,EAAQrN,YAAcsN,EAAKtN,WACtBhF,EAAiBqS,EAAQrN,WAAYsN,EAAKtN,aACxCqN,EAAQna,YAAaoa,EAAKpa,WAE5B6H,EAAgBsS,EAAQna,UAAWoa,EAAKpa,aAMnDqa,GAAkB,SAASnB,GAEzB,IAAI5b,KAAKgd,KAAT,CAIA,GAAIjF,GAAS6D,EAAQ7D,MAKrB,IAAiB,MAAXA,GAA6B,MAAXA,GAA6B,MAAXA,EAA1C,CAEA,GAAIkF,EACJ,KAIIA,EADEtS,IACMiR,EAAQvU,QAAQ6V,IAAI,eAEpBtB,EAAQuB,kBAAkB,eAIpCF,EAA8B,IAAtBG,SAASH,EAAO,IACxB,MAAO/c,IAITF,KAAKyc,GAAmBQ,EAEpBA,EAEwB,EAAxBjd,KAAKyc,IAAwB,IAEjCzc,KAAK0c,GAAgBlX,OAGvB6X,EAAO,SAAS9a,GACd,GAAImJ,GAAgB1L,KAAK4G,EAErB0W,GACAC,QAASvd,KAAK0G,EACdtB,OAAQsG,EAActG,OACtBoY,SAAU,cAEZpB,EAAWpc,KAAKyd,IAsDlB,IApDIrB,IACFkB,EAAS1B,QAAUQ,GAIjB7Z,EAAKgN,sBAAuBhN,GAAKgN,eAErChN,EAAOwH,EAAYuT,EAAU/a,GAG7BA,EAAKoP,KAAO5H,EAAYA,KAAgB/J,KAAK2G,EAAegL,MAAOpP,EAAKoP,MACxEpP,EAAKN,MAAQ8H,EAAYA,KAAgB/J,KAAK2G,EAAe1E,OAAQM,EAAKN,OAG1EM,EAAKN,MAAM,oBAAsBuD,IAAQxF,KAAK0I,EAE1C1I,KAAK4I,GAAgB5I,KAAK4I,EAAa5H,OAAS,IAGlDuB,EAAKuZ,aACHnZ,UAAWqC,MAAMjE,KAAKf,KAAK4I,EAAc,KAIzC5I,KAAK2G,EAAe8G,OAEtBlL,EAAKkL,KAAOzN,KAAK2G,EAAe8G,MAI9B/B,EAAcsG,cAAazP,EAAKyP,YAActG,EAAcsG,aAG5DtG,EAAc7E,UAAStE,EAAKsE,QAAU6E,EAAc7E,SAGpD6E,EAAcgS,aAAYnb,EAAKob,YAAcjS,EAAcgS,YAE/Dnb,EAAOvC,KAAK4d,GAAcrb,GAG1B0N,OAAOC,KAAK3N,GAAMsb,QAAQ,SAASlS,IAChB,MAAbpJ,EAAKoJ,IAA8B,KAAdpJ,EAAKoJ,IAAe9B,EAActH,EAAKoJ,YACvDpJ,GAAKoJ,KAIZ/F,EAAW8F,EAAcwG,gBAC3B3P,EAAOmJ,EAAcwG,aAAa3P,IAASA,GAIxCA,IAAQsH,EAActH,MAMzBqD,EAAW8F,EAAc2G,qBACxB3G,EAAc2G,mBAAmB9P,IAOpC,MAAIvC,MAAKgd,SACPhd,MAAKyL,EAAU,OAAQ,uCAAwClJ,QAIzB,gBAA7BmJ,GAAc7D,WACnBkE,KAAK+R,SAAWpS,EAAc7D,YAChC7H,KAAK+d,GAAsBxb,GAG7BvC,KAAK+d,GAAsBxb,KAI/Byb,GAAe,SAASzb,GACtB,MAAOuI,GAASvI,EAAMvC,KAAK4G,EAAekB,eAG5CmW,GAAU,WACR,MAAO5T,MAGT6T,GAAuB,SAAS3b,EAAMoC,GACpC,GAAI5E,GAAOC,KACP0L,EAAgB1L,KAAK4G,CAEzB,IAAK5G,KAAK0M,UAAV,CAQA,GALAnK,EAAOvC,KAAKme,GAAY5b,IAKnBvC,KAAK4G,EAAewX,iBAAmBpe,KAAKqe,GAAc9b,GAE7D,WADAvC,MAAKyL,EAAU,OAAQ,+BAAgClJ,EAOzDvC,MAAKuG,EAAehE,EAAK+b,WAAa/b,EAAK+b,SAAWte,KAAKue,MAG3Dve,KAAKsG,EAAY/D,EAEjBvC,KAAKyL,EAAU,QAAS,uBAAwBlJ,EAEhD,IAAIic,IACFC,eAAgB,IAChBC,cAAe,YAAc1e,KAAKqL,QAClCsT,WAAY3e,KAAKyG,EAGfzG,MAAK0N,IACP8Q,EAAKI,cAAgB5e,KAAK0N,EAG5B,IAAIhL,GAAYH,EAAKG,WAAaH,EAAKG,UAAUC,OAAO,EAItD3C,MAAK4G,EAAee,iBACpB3H,KAAK4G,EAAee,gBAAgB0E,QAEpCrM,KAAK8Q,mBACH6D,SAAU,SACV3R,QAASN,GACJA,EAAUK,KAAOL,EAAUK,KAAO,KAAO,IAAML,EAAUI,MAC1DP,EAAKS,QACTsb,SAAU/b,EAAK+b,SACf5Z,MAAOnC,EAAKmC,OAAS,SAIzB,IAAI+L,GAAMzQ,KAAK6N,GACdnC,EAAc6G,WAAavS,KAAK6e,IAAc9d,KAAKf,MAClDyQ,IAAKA,EACL+N,KAAMA,EACNjc,KAAMA,EACNiJ,QAASE,EACToT,UAAW,WACT/e,EAAKmJ,IAELnJ,EAAK0a,EAAc,WACjBlY,KAAMA,EACNgR,IAAK9C,IAEP9L,GAAYA,KAEdoa,QAAS,SAAiBpb,GACxB5D,EAAK0L,EAAU,QAAS,mCAAoC9H,GAExDA,EAAMiY,SACR7b,EAAKif,GAAiBrb,EAAMiY,SAG9B7b,EAAK0a,EAAc,WACjBlY,KAAMA,EACNgR,IAAK9C,IAEP9M,EAAQA,GAAS,GAAI/C,OAAM,sDAC3B+D,GAAYA,EAAShB,QAK3Bsb,GAAc,SAASC,GAErB,GAAIzO,GAAMyO,EAAKzO,IAAM,IAAMrG,EAAU8U,EAAKV,MAEtCW,EAAmB,KACnBC,IAUJ,IARIF,EAAK1T,QAAQnE,UACf8X,EAAmBnf,KAAKqf,GAAcH,EAAK1T,QAAQnE,UAGjD6X,EAAK1T,QAAQ8T,kBACfF,EAA2Bpf,KAAKqf,GAAcH,EAAK1T,QAAQ8T,kBAGzD3U,IAAiB,CACnByU,EAAyB3L,KAAO1N,EAAUmZ,EAAK3c,KAE/C,IAAIgd,GAAsBxV,KAAgB/J,KAAK+H,GAC3CyX,EAAezV,EAAYwV,EAAqBH,EAMpD,OAJID,KACFK,EAAanY,QAAU8X,GAGlBrY,EACJ2Y,MAAMhP,EAAK+O,GACXjH,KAAK,SAASC,GACb,GAAIA,EAASkH,GACXR,EAAKJ,WAAaI,EAAKJ,gBAClB,CACL,GAAInb,GAAQ,GAAI/C,OAAM,sBAAwB4X,EAAST,OAGvDpU,GAAMiY,QAAUpD,EAChB0G,EAAKH,SAAWG,EAAKH,QAAQpb,MAGhC,SAAS,WACRub,EAAKH,SACHG,EAAKH,QAAQ,GAAIne,OAAM,6CAI/B,GAAIgb,GAAU9U,EAAQyQ,gBAAkB,GAAIzQ,GAAQyQ,cACpD,IAAKqE,EAAL,CAGA,GAAI+D,GAAU,mBAAqB/D,IAAqC,mBAAnBgE,eAEhDD,KAED,mBAAqB/D,GACvBA,EAAQ1D,mBAAqB,WAC3B,GAA2B,IAAvB0D,EAAQ9D,WAEL,GAAuB,MAAnB8D,EAAQ7D,OACjBmH,EAAKJ,WAAaI,EAAKJ,gBAClB,IAAII,EAAKH,QAAS,CACvB,GAAIrI,GAAM,GAAI9V,OAAM,sBAAwBgb,EAAQ7D,OACpDrB,GAAIkF,QAAUA,EACdsD,EAAKH,QAAQrI,MAIjBkF,EAAU,GAAIgE,gBAGdnP,EAAMA,EAAIoP,QAAQ,WAAY,IAG1BX,EAAKJ,YACPlD,EAAQkE,OAASZ,EAAKJ,WAEpBI,EAAKH,UACPnD,EAAQlY,QAAU,WAChB,GAAIgT,GAAM,GAAI9V,OAAM,oCACpB8V,GAAIkF,QAAUA,EACdsD,EAAKH,QAAQrI,MAKnBkF,EAAQmE,KAAK,OAAQtP,GAEjB0O,GACFrV,EAAKqV,EAAkB,SAASxT,EAAK7I,GACnC8Y,EAAQoE,iBAAiBrU,EAAK7I,KAIlC8Y,EAAQqE,KAAKla,EAAUmZ,EAAK3c,UAG9B2d,GAAe,SAASC,GACtB,GAAIC,KAEJ,KAAK,GAAIzU,KAAOwU,GACd,GAAIA,EAAK7J,eAAe3K,GAAM,CAC5B,GAAI7I,GAAQqd,EAAKxU,EACjByU,GAAUzU,GAAwB,kBAAV7I,GAAuBA,IAAUA,EAI7D,MAAOsd,IAGTC,EAAW,SAAS3b,GAGhB1E,KAAKwI,EAAwB9D,KAC5B1E,KAAKsL,OAAStL,KAAK4G,EAAe0E,QAGnCjG,SAASjB,UAAUkB,MAAMvE,KACvBf,KAAKwI,EAAwB9D,GAC7B1E,KAAKuI,KACFvD,MAAMjE,KAAKkE,UAAW,KAK/Bqb,EAAe,SAAS3U,EAAK5H,GACvBkC,EAAYlC,SACP/D,MAAK2G,EAAegF,GAE3B3L,KAAK2G,EAAegF,GAAO5B,EAAY/J,KAAK2G,EAAegF,OAAY5H,KAM7E9D,EAAMmE,UAAUmc,QAAUtgB,EAAMmE,UAAUmN,eAC1CtR,EAAMmE,UAAUoc,kBAAoBvgB,EAAMmE,UAAU6N,WAEpDxS,EAAOD,QAAUS,IAEdc,KAAKf,KAAuB,mBAAXF,QAAyBA,OAAyB,mBAATC,MAAuBA,KAAyB,mBAAXF,QAAyBA,aACxH4gB,GAAK,GAAGxc,EAAI,EAAEK,EAAI,EAAEjB,EAAI,EAAEqd,EAAI,EAAEC,EAAI,IAAIvd,GAAG,SAASlC,EAAQzB,EAAOD,IACtE,SAAWM,GAOX,GAAI8gB,GAAmB1f,EAAQ,GAG3B4F,EACgB,mBAAXjH,QACHA,OACkB,mBAAXC,GAAyBA,EAAyB,mBAATC,MAAuBA,QACzE8gB,EAAS/Z,EAAQ7G,MAEjBA,EAAQ,GAAI2gB,EAQhB3gB,GAAM6gB,WAAa,WAEjB,MADAha,GAAQ7G,MAAQ4gB,EACT5gB,GAGTA,EAAM0S,YAENlT,EAAOD,QAAUS,EAoCjBR,EAAOD,QAAQuhB,OAASH,IAErB7f,KAAKf,KAAuB,mBAAXF,QAAyBA,OAAyB,mBAATC,MAAuBA,KAAyB,mBAAXF,QAAyBA,aACxH0F,EAAI,IAAIlC,GAAG,SAASnC,EAAQzB,EAAOD,IACtC,SAAWM,GAQX,QAAS2J,GAASuX,GAChB,MAAuB,gBAATA,IAA8B,OAATA,EAKrC,QAASxX,GAAQ1G,GACf,OAAQmN,OAAO7L,UAAUkI,SAASvL,KAAK+B,IACrC,IAAK,iBACH,OAAO,CACT,KAAK,qBACH,OAAO,CACT,KAAK,wBACH,OAAO,CACT,SACE,MAAOA,aAAiBlC,QAI9B,QAASyI,GAAavG,GACpB,MAAiD,wBAA1CmN,OAAO7L,UAAUkI,SAASvL,KAAK+B,GAGxC,QAASwG,GAAWxG,GAClB,MAAiD,sBAA1CmN,OAAO7L,UAAUkI,SAASvL,KAAK+B,GAGxC,QAASyG,GAAezG,GACtB,MAAiD,0BAA1CmN,OAAO7L,UAAUkI,SAASvL,KAAK+B,GAGxC,QAASmD,GAAY+a,GACnB,MAAgB,UAATA,EAGT,QAASpb,GAAWob,GAClB,MAAuB,kBAATA,GAGhB,QAAStX,GAAcsX,GACrB,MAAgD,oBAAzC/Q,OAAO7L,UAAUkI,SAASvL,KAAKigB,GAGxC,QAASrX,GAASqX,GAChB,MAAgD,oBAAzC/Q,OAAO7L,UAAUkI,SAASvL,KAAKigB,GAGxC,QAASpX,GAAQoX,GACf,MAAgD,mBAAzC/Q,OAAO7L,UAAUkI,SAASvL,KAAKigB,GAGxC,QAASnX,GAAcmX,GACrB,IAAKtX,EAAcsX,GAAO,OAAO,CAEjC,KAAK,GAAInN,KAAKmN,GACZ,GAAIA,EAAK1K,eAAezC,GACtB,OAAO,CAGX,QAAO,EAGT,QAASoN,KACP,IAEE,MADA,IAAIC,YAAW,KACR,EACP,MAAOhhB,GACP,OAAO,GAIX,QAASihB,KACP,IAEE,MADA,IAAIC,UAAS,KACN,EACP,MAAOlhB,GACP,OAAO,GAIX,QAASmhB,KACP,IAEE,MADA,IAAIC,cAAa,KACV,EACP,MAAOphB,GACP,OAAO,GAIX,QAASyK,KACP,KAAM,SAAW7D,IAAU,OAAO,CAElC,KAIE,MAHA,IAAIya,SACJ,GAAIlJ,SAAQ,IACZ,GAAImJ,WACG,EACP,MAAOthB,GACP,OAAO,GAQX,QAASiI,KACP,IAAKwC,IAAiB,OAAO,CAE7B,KAKE,MAHA,IAAI0N,SAAQ,cACVnQ,eAAgB,YAEX,EACP,MAAOhI,GACP,OAAO,GAIX,QAASuhB,KACP,MAAwC,kBAA1BC,uBAGhB,QAASpf,GAAgBqC,GACvB,QAASuN,GAAa3P,EAAMoD,GAC1B,GAAIgc,GAAiBhd,EAASpC,IAASA,CACvC,OAAIoD,GACKA,EAASgc,IAAmBA,EAE9BA,EAGT,MAAOzP,GAGT,QAASpI,GAAKiH,EAAKpM,GACjB,GAAIhE,GAAGsX,CAEP,IAAIhS,EAAY8K,EAAI/P,QAClB,IAAKL,IAAKoQ,GACJ7G,EAAO6G,EAAKpQ,IACdgE,EAAS5D,KAAK,KAAMJ,EAAGoQ,EAAIpQ,QAK/B,IADAsX,EAAIlH,EAAI/P,OAEN,IAAKL,EAAI,EAAGA,EAAIsX,EAAGtX,IACjBgE,EAAS5D,KAAK,KAAMJ,EAAGoQ,EAAIpQ,IAMnC,QAASoJ,GAAY6X,EAAMC,GACzB,MAAKA,IAGL/X,EAAK+X,EAAM,SAASlW,EAAK7I,GACvB8e,EAAKjW,GAAO7I,IAEP8e,GALEA,EAgBX,QAAS3X,GAAa8G,GACpB,QAAKd,OAAO6R,UAGL7R,OAAO6R,SAAS/Q,GAGzB,QAAS/G,GAASiQ,EAAKjO,GACrB,GAAmB,gBAARA,GACT,KAAM,IAAIpL,OAAM,yDAElB,OAAmB,gBAARqZ,IAA4B,IAARjO,EACtBiO,EAEFA,EAAIjZ,QAAUgL,EAAMiO,EAAMA,EAAI/W,OAAO,EAAG8I,GAAO,IAUxD,QAAS9B,GAAO6X,EAAQpW,GACtB,MAAOsE,QAAO7L,UAAUkS,eAAevV,KAAKghB,EAAQpW,GAGtD,QAASxB,GAAW6X,GAQlB,IALA,GAGEC,GAHEC,KACFvhB,EAAI,EACJwhB,EAAMH,EAAShhB,OAGVL,EAAIwhB,EAAKxhB,IACdshB,EAAUD,EAASrhB,GACfgJ,EAASsY,GAGXC,EAAQrW,KAAKoW,EAAQpC,QAAQ,8BAA+B,SACnDoC,GAAWA,EAAQG,QAE5BF,EAAQrW,KAAKoW,EAAQG,OAIzB,OAAO,IAAIC,QAAOH,EAAQI,KAAK,KAAM,KAGvC,QAASlY,GAAU7J,GACjB,GAAIgiB,KAIJ,OAHAzY,GAAKvJ,EAAG,SAASoL,EAAK7I,GACpByf,EAAM1W,KAAKmH,mBAAmBrH,GAAO,IAAMqH,mBAAmBlQ,MAEzDyf,EAAMD,KAAK,KAMpB,QAAS7X,GAASgG,GAChB,GAAmB,gBAARA,GAAkB,QAC7B,IAAI+R,GAAQ/R,EAAI+R,MAAM,kEAGlBC,EAAQD,EAAM,IAAM,GACpBE,EAAWF,EAAM,IAAM,EAC3B,QACE/M,SAAU+M,EAAM,GAChB9M,KAAM8M,EAAM,GACZlV,KAAMkV,EAAM,GACZ7M,SAAU6M,EAAM,GAAKC,EAAQC,GAGjC,QAASrY,KACP,GAAIsY,GAAS7b,EAAQ6b,QAAU7b,EAAQ8b,QAEvC,KAAK3c,EAAY0c,IAAWA,EAAOE,gBAAiB,CAGlD,GAAIC,GAAM,GAAIC,aAAY,EAC1BJ,GAAOE,gBAAgBC,GAGvBA,EAAI,GAAe,KAATA,EAAI,GAAc,MAE5BA,EAAI,GAAe,MAATA,EAAI,GAAe,KAE7B,IAAIE,GAAM,SAASC,GAEjB,IADA,GAAIC,GAAID,EAAI3W,SAAS,IACd4W,EAAEliB,OAAS,GAChBkiB,EAAI,IAAMA,CAEZ,OAAOA,GAGT,OACEF,GAAIF,EAAI,IACRE,EAAIF,EAAI,IACRE,EAAIF,EAAI,IACRE,EAAIF,EAAI,IACRE,EAAIF,EAAI,IACRE,EAAIF,EAAI,IACRE,EAAIF,EAAI,IACRE,EAAIF,EAAI,IAIV,MAAO,mCAAmCjD,QAAQ,QAAS,SAASsD,GAClE,GAAI9iB,GAAqB,GAAhB0L,KAAK+R,SAAiB,EAC7BoF,EAAU,MAANC,EAAY9iB,EAAS,EAAJA,EAAW,CAClC,OAAO6iB,GAAE5W,SAAS,MAYxB,QAAShC,GAAiB8Y,GAWxB,IATA,GAOEC,GAPEC,EAAsB,EACxBC,EAAiB,GACjBC,KACAC,EAAS,EACTtB,EAAM,EACNuB,EAAY,MACZC,EAAYD,EAAU1iB,OAGjBoiB,GAAQK,IAAWH,IACxBD,EAAUO,EAAoBR,KAMhB,SAAZC,GACCI,EAAS,GAAKtB,EAAMqB,EAAIxiB,OAAS2iB,EAAYN,EAAQriB,QAAUuiB,KAKlEC,EAAI3X,KAAKwX,GAETlB,GAAOkB,EAAQriB,OACfoiB,EAAOA,EAAKS,UAGd,OAAOL,GAAI5S,UAAU0R,KAAKoB,GAS5B,QAASE,GAAoBR,GAC3B,GACEU,GACAC,EACApY,EACAqY,EACArjB,EALE6iB,IAOJ,KAAKJ,IAASA,EAAKtO,QACjB,MAAO,EAST,IANA0O,EAAI3X,KAAKuX,EAAKtO,QAAQR,eAClB8O,EAAKpc,IACPwc,EAAI3X,KAAK,IAAMuX,EAAKpc,IAGtB8c,EAAYV,EAAKU,UACbA,GAAana,EAASma,GAExB,IADAC,EAAUD,EAAU7Y,MAAM,OACrBtK,EAAI,EAAGA,EAAIojB,EAAQ/iB,OAAQL,IAC9B6iB,EAAI3X,KAAK,IAAMkY,EAAQpjB,GAG3B,IAAIsjB,IAAiB,OAAQ,OAAQ,QAAS,MAC9C,KAAKtjB,EAAI,EAAGA,EAAIsjB,EAAcjjB,OAAQL,IACpCgL,EAAMsY,EAActjB,GACpBqjB,EAAOZ,EAAKc,aAAavY,GACrBqY,GACFR,EAAI3X,KAAK,IAAMF,EAAM,KAAOqY,EAAO,KAGvC,OAAOR,GAAIlB,KAAK,IAMlB,QAAS6B,GAAgB1jB,EAAG2jB,GAC1B,WAAY3jB,IAAM2jB,GAMpB,QAASC,GAAgB5jB,EAAG2jB,GAC1B,MAAOne,GAAYxF,IAAMwF,EAAYme,GAMvC,QAAS7Z,GAAgBsF,EAAKyU,GAC5B,OAAIH,EAAgBtU,EAAKyU,KAEzBzU,EAAMA,EAAIlN,OAAO,GACjB2hB,EAAMA,EAAI3hB,OAAO,GAEbkN,EAAI9M,OAASuhB,EAAIvhB,MAAQ8M,EAAI/M,QAAUwhB,EAAIxhB,SAG3CuhB,EAAgBxU,EAAIL,WAAY8U,EAAI9U,aAEjChF,EAAiBqF,EAAIL,WAAY8U,EAAI9U,cAM9C,QAAShF,GAAiB+Z,EAAQC,GAChC,GAAIL,EAAgBI,EAAQC,GAAS,OAAO,CAE5C,IAAIC,GAAUF,EAAO7T,OACjBgU,EAAUF,EAAO9T,MAGrB,IAAI+T,EAAQzjB,SAAW0jB,EAAQ1jB,OAAQ,OAAO,CAI9C,KAAK,GADDP,GAAG2jB,EACEzjB,EAAI,EAAGA,EAAI8jB,EAAQzjB,OAAQL,IAGlC,GAFAF,EAAIgkB,EAAQ9jB,GACZyjB,EAAIM,EAAQ/jB,GAEVF,EAAE0a,WAAaiJ,EAAEjJ,UACjB1a,EAAEka,SAAWyJ,EAAEzJ,QACfla,EAAE4a,QAAU+I,EAAE/I,OACd5a,EAAE,cAAgB2jB,EAAE,YAEpB,OAAO,CAEX,QAAO,EAUT,QAAS1Z,GAAKqG,EAAK5M,EAAMwgB,EAAaC,GACpC,GAAW,MAAP7T,EAAJ,CACA,GAAIiF,GAAOjF,EAAI5M,EACf4M,GAAI5M,GAAQwgB,EAAY3O,GACxBjF,EAAI5M,GAAMkK,GAAY,EACtB0C,EAAI5M,GAAMqK,EAAWwH,EACjB4O,GACFA,EAAM/Y,MAAMkF,EAAK5M,EAAM6R,KAU3B,QAAS7Q,GAAS0f,EAAOC,GACvB,IAAKlb,EAAQib,GAAQ,MAAO,EAI5B,KAAK,GAFDE,MAEKpkB,EAAI,EAAGA,EAAIkkB,EAAM7jB,OAAQL,IAChC,IACEokB,EAAOlZ,KAAKmZ,OAAOH,EAAMlkB,KACzB,MAAOT,GACP6kB,EAAOlZ,KAAK,gCAIhB,MAAOkZ,GAAOzC,KAAKwC,GASrB,QAASG,GAAWniB,GAClB,QAASoiB,UAAUpiB,GAAOmI,MAAM,SAASjK,OAG3C,QAASmkB,GAASriB,GAChB,MAAOmiB,GAAWnf,KAAKC,UAAUjD,IAGnC,QAASsiB,GAAetiB,GACtB,GAAqB,gBAAVA,GAAoB,CAC7B,GAAIuiB,GAAY,EAChB,OAAOrb,GAASlH,EAAOuiB,GAClB,GACY,gBAAVviB,IACU,iBAAVA,IACU,mBAAVA,GAEP,MAAOA,EAGT,IAAIC,GAAOkN,OAAO7L,UAAUkI,SAASvL,KAAK+B,EAG1C,OAAa,oBAATC,EAAmC,WAC1B,mBAATA,EAAkC,UACzB,sBAATA,EACKD,EAAMqB,KAAO,cAAgBrB,EAAMqB,KAAO,IAAM,aAElDrB,EAGT,QAASwiB,GAAgBxiB,EAAOyiB,GAC9B,MAAc,KAAVA,EAAoBH,EAAetiB,GAEnC4G,EAAc5G,GACTmN,OAAOC,KAAKpN,GAAO0iB,OAAO,SAASC,EAAK9Z,GAE7C,MADA8Z,GAAI9Z,GAAO2Z,EAAgBxiB,EAAM6I,GAAM4Z,EAAQ,GACxCE,OAEAvP,MAAMtM,QAAQ9G,GAChBA,EAAM4iB,IAAI,SAASC,GACxB,MAAOL,GAAgBK,EAAKJ,EAAQ,KAIjCH,EAAetiB,GAGxB,QAAS+H,GAAmB/I,EAAIyjB,EAAOK,GACrC,IAAKlc,EAAc5H,GAAK,MAAOA,EAE/ByjB,GAAyB,gBAAVA,GAAqBM,EAAgCN,EACpEK,EAA2B,gBAAVL,GAAqBO,EAA+BF,CAErE,IAAIG,GAAaT,EAAgBxjB,EAAIyjB,EAErC,OAAIJ,GAASpf,EAAUggB,IAAeH,EAC7B/a,EAAmB/I,EAAIyjB,EAAQ,GAGjCQ,EAGT,QAASnb,GAAwBsF,EAAMmV,GACrC,GAAoB,gBAATnV,IAAqC,gBAATA,GAAmB,MAAOA,GAAK5D,UACtE,KAAK4J,MAAMtM,QAAQsG,GAAO,MAAO,EAKjC,IAHAA,EAAOA,EAAK8V,OAAO,SAASra,GAC1B,MAAsB,gBAARA,KAEI,IAAhBuE,EAAKlP,OAAc,MAAO,sBAG9B,IADAqkB,EAAiC,gBAAdA,GAAyBY,EAA4BZ,EACpEnV,EAAK,GAAGlP,QAAUqkB,EAAW,MAAOnV,GAAK,EAE7C,KAAK,GAAIgW,GAAWhW,EAAKlP,OAAQklB,EAAW,EAAGA,IAAY,CACzD,GAAIH,GAAa7V,EAAKlL,MAAM,EAAGkhB,GAAU5D,KAAK,KAC9C,MAAIyD,EAAW/kB,OAASqkB,GACxB,MAAIa,KAAahW,EAAKlP,OAAe+kB,EAC9BA,EAAa,IAGtB,MAAO,GAGT,QAASjb,GAAS+Z,EAAO/c,GAcvB,QAASqe,GAAeC,GACtB,MAAIxc,GAAQwc,GACHA,EAAYV,IAAI,SAASC,GAC9B,MAAOQ,GAAeR,KAItBjc,EAAc0c,GACTnW,OAAOC,KAAKkW,GAAaZ,OAAO,SAASC,EAAKY,GAMnD,MAJEZ,GAAIY,GADFC,EAAehW,KAAK+V,GACbE,EAEAJ,EAAeC,EAAYC,IAE/BZ,OAIJW,EA/BT,IAAKxc,EAAQ9B,IAAkB8B,EAAQ9B,IAAyC,IAAxBA,EAAa9G,OACnE,MAAO6jB,EAET,IAEI2B,GAFAF,EAAiBnc,EAAWrC,GAC5Bye,EAAe,UAGnB,KACEC,EAAY1gB,KAAKgM,MAAM/L,EAAU8e,IACjC,MAAO4B,GACP,MAAO5B,GAwBT,MAAOsB,GAAeK,GA5lBxB,GAAIzgB,GAAY7E,EAAQ,GAEpB4F,EACgB,mBAAXjH,QACHA,OACkB,mBAAXC,GAAyBA,EAAyB,mBAATC,MAAuBA,QA0dzE8lB,EAAgC,EAEhCC,EAA+B,MAC/BG,EAA4B,EA6HhCxmB,GAAOD,SACLiK,SAAUA,EACVD,QAASA,EACTH,aAAcA,EACdC,WAAYA,EACZC,eAAgBA,EAChBtD,YAAaA,EACbL,WAAYA,EACZ8D,cAAeA,EACfC,SAAUA,EACVC,QAASA,EACTC,cAAeA,EACfoX,mBAAoBA,EACpBE,iBAAkBA,EAClBE,qBAAsBA,EACtB1W,cAAeA,EACfxC,uBAAwBA,EACxBsZ,8BAA+BA,EAC/Bnf,gBAAiBA,EACjBwH,KAAMA,EACNC,YAAaA,EACbC,SAAUA,EACVC,aAAcA,EACdC,OAAQA,EACRC,WAAYA,EACZC,UAAWA,EACXC,MAAOA,EACPC,iBAAkBA,EAClBsZ,oBAAqBA,EACrBrZ,gBAAiBA,EACjBC,iBAAkBA,EAClBC,SAAUA,EACVC,KAAMA,EACNvF,SAAUA,EACV0F,mBAAoBA,EACpBD,wBAAyBA,EACzBE,SAAUA,KAGT/J,KAAKf,KAAuB,mBAAXF,QAAyBA,OAAyB,mBAATC,MAAuBA,KAAyB,mBAAXF,QAAyBA,aACxH8gB,EAAI,IAAID,GAAG,SAASxf,EAAQzB,EAAOD,IACtC,SAAWM,GA+BX,QAAS4mB,KACP,MAAwB,mBAAbvb,WAAiD,MAArBA,SAASpC,SAAyB,GAClEoC,SAASpC,SAASE,KAG3B,QAAS0d,KACP,MAAwB,mBAAbxb,WAAiD,MAArBA,SAASpC,SAAyB,IAGpEoC,SAASpC,SAAS6d,SACrBzb,SAASpC,SAAS6d,OAChBzb,SAASpC,SAAS0M,SAClB,KACAtK,SAASpC,SAAS8d,UACjB1b,SAASpC,SAASsR,KAAO,IAAMlP,SAASpC,SAASsR,KAAO,KAGtDlP,SAASpC,SAAS6d,QA/C3B,GAAIriB,GAAQrD,EAAQ,GAYhBiI,GACF7B,qBAAqB,EACrBgE,OAAO,GAILxE,EACgB,mBAAXjH,QACHA,OACkB,mBAAXC,GAAyBA,EAAyB,mBAATC,MAAuBA,QAGzE+mB,KAAY9hB,MACZ+hB,EAAmB,IAGnBC,EAAiB,yGA6DrB7d,GAASwD,OAAS,WAUhB,QAASC,GAAUqa,GACjBC,IACAC,EAAStb,KAAKob,GAOhB,QAASG,GAAYH,GACnB,IAAK,GAAItmB,GAAIwmB,EAASnmB,OAAS,EAAGL,GAAK,IAAKA,EACtCwmB,EAASxmB,KAAOsmB,GAClBE,EAASE,OAAO1mB,EAAG,GAQzB,QAAS2mB,KACPC,IACAJ,KAOF,QAASK,GAAe9X,EAAO+X,GAC7B,GAAI/kB,GAAY,IAChB,KAAI+kB,GAAkBte,EAAS7B,oBAA/B,CAGA,IAAK,GAAI3G,KAAKwmB,GACZ,GAAIA,EAAS7Q,eAAe3V,GAC1B,IACEwmB,EAASxmB,GAAG2E,MAAM,MAAOoK,GAAOqK,OAAO+M,EAAO/lB,KAAKkE,UAAW,KAC9D,MAAOyiB,GACPhlB,EAAYglB,EAKlB,GAAIhlB,EACF,KAAMA,IAiBV,QAASilB,GAAsBziB,EAAKuL,EAAKmX,EAAQC,EAAO/lB,GACtD,GAAI4N,GAAQ,KAERhN,EAAY6B,EAAM8E,aAAavH,GAAMA,EAAG6B,MAAQ7B,EAEhDkB,EAAUuB,EAAM8E,aAAanE,GAAOA,EAAIlC,QAAUkC,CAEtD,IAAI4iB,EACF3e,EAASwG,kBAAkBoY,oCACzBD,EACArX,EACAmX,EACA5kB,GAEFglB,QACK,IAAItlB,GAAa6B,EAAMiF,QAAQ9G,GAMpCgN,EAAQvG,EAASwG,kBAAkBjN,GACnC8kB,EAAe9X,GAAO,OACjB,CACL,GAOIuY,GAPAlf,GACF0H,IAAKA,EACL2K,KAAMwM,EACNtM,OAAQuM,GAGN1jB,EAAO4J,MAGX,IAAkC,uBAA3BzB,SAASvL,KAAKiC,GAAgC,CACnD,GAAIilB,GAASjlB,EAAQwf,MAAMwE,EACvBiB,KACF9jB,EAAO8jB,EAAO,GACdjlB,EAAUilB,EAAO,IAIrBlf,EAAS+E,KAAOiZ,EAEhBrX,GACEvL,KAAMA,EACNnB,QAASA,EACTyN,IAAKiW,IACLhX,OAAQ3G,IAEVye,EAAe9X,GAAO,GAGxB,QAAIwY,GACKA,EAAmB5iB,MAAMtF,KAAMiF,WAM1C,QAASiiB,KACHiB,IAGJD,EAAqBphB,EAAQpD,QAC7BoD,EAAQpD,QAAUikB,EAClBQ,GAA2B,GAG7B,QAASZ,KACFY,IAGLrhB,EAAQpD,QAAUwkB,EAClBC,GAA2B,EAC3BD,EAAqBna,QAGvB,QAASia,KACP,GAAII,GAAsBN,EACxBO,EAAYC,CACdA,GAAW,KACXR,EAAqB,KACrBtV,EAAgB,KAChBgV,EAAeliB,MAAM,MAAO8iB,GAAqB,GAAOrO,OAAOsO,IAUjE,QAAS1b,GAAO7K,EAAIymB,GAClB,GAAIxjB,GAAO+hB,EAAO/lB,KAAKkE,UAAW,EAClC,IAAI6iB,EAAoB,CACtB,GAAItV,IAAkB1Q,EACpB,MAEAkmB,KAIJ,GAAItY,GAAQvG,EAASwG,kBAAkB7N,EAevC,IAdAgmB,EAAqBpY,EACrB8C,EAAgB1Q,EAChBwmB,EAAWvjB,EAMX6O,WAAW,WACLpB,IAAkB1Q,GACpBkmB,KAEDtY,EAAM8Y,WAAa,IAAO,GAEzBD,KAAY,EACd,KAAMzmB,GA9LV,GA0DIomB,GAAoBC,EA1DpBhB,KACFmB,EAAW,KACX9V,EAAgB,KAChBsV,EAAqB,IAkMvB,OAHAnb,GAAOC,UAAYA,EACnBD,EAAOya,YAAcA,EACrBza,EAAO8B,UAAY6Y,EACZ3a,KAsDTxD,EAASwG,kBAAoB,WA4C3B,QAAS8Y,GAA+B3mB,GACtC,GAAwB,mBAAbA,GAAG4N,OAA0B5N,EAAG4N,MAA3C,CAiBA,IAAK,GALDgZ,GACAC,EACAC,EAZAlQ,EAAS,0IACTmQ,EAAQ,wHAGRC,EAAQ,6JAERC,EAAY,gDACZC,EAAa,gCACbC,EAAQnnB,EAAG4N,MAAMzE,MAAM,MACvByE,KAMK/O,GAFO,sBAAsBkC,KAAKf,EAAGkB,SAEjC,GAAGiV,EAAIgR,EAAMjoB,OAAQL,EAAIsX,IAAKtX,EAAG,CAC5C,GAAKgoB,EAAQjQ,EAAO7V,KAAKomB,EAAMtoB,IAAM,CACnC,GAAIuoB,GAAWP,EAAM,IAAqC,IAA/BA,EAAM,GAAGlR,QAAQ,UACxC0R,EAASR,EAAM,IAAmC,IAA7BA,EAAM,GAAGlR,QAAQ,OACtC0R,KAAWT,EAAWM,EAAWnmB,KAAK8lB,EAAM,OAE9CA,EAAM,GAAKD,EAAS,GACpBC,EAAM,GAAKD,EAAS,GACpBC,EAAM,GAAKD,EAAS,IAEtBE,GACEnY,IAAMyY,EAAsB,KAAXP,EAAM,GACvB7a,KAAM6a,EAAM,IAAM5B,EAClBhiB,KAAMmkB,GAAYP,EAAM,OACxBvN,KAAMuN,EAAM,IAAMA,EAAM,GAAK,KAC7BrN,OAAQqN,EAAM,IAAMA,EAAM,GAAK,UAE5B,IAAKA,EAAQE,EAAMhmB,KAAKomB,EAAMtoB,IACnCioB,GACEnY,IAAKkY,EAAM,GACX7a,KAAM6a,EAAM,IAAM5B,EAClBhiB,QACAqW,MAAOuN,EAAM,GACbrN,OAAQqN,EAAM,IAAMA,EAAM,GAAK,UAE5B,CAAA,KAAKA,EAAQG,EAAMjmB,KAAKomB,EAAMtoB,KAsBnC,QArBA,IAAIwoB,GAASR,EAAM,IAAMA,EAAM,GAAGlR,QAAQ,aACtC0R,KAAWT,EAAWK,EAAUlmB,KAAK8lB,EAAM,MAE7CA,EAAM,GAAKD,EAAS,GACpBC,EAAM,GAAKD,EAAS,GACpBC,EAAM,GAAK,MACI,IAANhoB,GAAYgoB,EAAM,IAAiC,mBAApB7mB,GAAGsnB,eAK3C1Z,EAAM,GAAG4L,OAASxZ,EAAGsnB,aAAe,GAEtCR,GACEnY,IAAKkY,EAAM,GACX7a,KAAM6a,EAAM,IAAM5B,EAClBhiB,KAAM4jB,EAAM,GAAKA,EAAM,GAAG1d,MAAM,QAChCmQ,KAAMuN,EAAM,IAAMA,EAAM,GAAK,KAC7BrN,OAAQqN,EAAM,IAAMA,EAAM,GAAK,MAUnC,IAJKC,EAAQ9a,MAAQ8a,EAAQxN,OAC3BwN,EAAQ9a,KAAOiZ,GAGb6B,EAAQnY,KAAoC,UAA7BmY,EAAQnY,IAAIvN,OAAO,EAAG,GAAgB,CAMvD,GAAIiJ,GAAM,GAAIoL,eAKd,IAJApL,EAAI4T,KAAK,MAAO6I,EAAQnY,KAAK,GAC7BtE,EAAI8T,KAAK,MAGU,MAAf9T,EAAI4L,OAAgB,CACtB,GAAIqK,GAASjW,EAAIkd,cAAgB,EAIjCjH,GAASA,EAAOpd,WAGhB,IAAIskB,GAAalH,EAAOI,MAAM,+BAG9B,IAAI8G,EAAY,CACd,GAAIC,GAAmBD,EAAW,EAIC,OAA/BC,EAAiBC,OAAO,KAC1BD,EAAmB5C,IAAsB4C,EAAiBvkB,MAAM,IAKlE4jB,EAAQnY,IAAM8Y,EAAiBvkB,MAAM,QAK3C0K,EAAM7D,KAAK+c,GAGb,MAAKlZ,GAAM1O,QAKTmD,KAAMrC,EAAGqC,KACTnB,QAASlB,EAAGkB,QACZyN,IAAKiW,IACLhX,MAAOA,GAPA,MAwBX,QAASqY,GAAoCvN,EAAW/J,EAAKmX,EAAQ5kB,GACnE,GAAIymB,IACFhZ,IAAKA,EACL2K,KAAMwM,EAGR,IAAI6B,EAAQhZ,KAAOgZ,EAAQrO,KAAM;AAO/B,GANAZ,EAAUgO,YAAa,EAElBiB,EAAQ3b,OACX2b,EAAQ3b,KAAOiZ,GAGbvM,EAAU9K,MAAM1O,OAAS,GACvBwZ,EAAU9K,MAAM,GAAGe,MAAQgZ,EAAQhZ,IAAK,CAC1C,GAAI+J,EAAU9K,MAAM,GAAG0L,OAASqO,EAAQrO,KACtC,OAAO,CACF,KACJZ,EAAU9K,MAAM,GAAG0L,MACpBZ,EAAU9K,MAAM,GAAG5B,OAAS2b,EAAQ3b,KAGpC,MADA0M,GAAU9K,MAAM,GAAG0L,KAAOqO,EAAQrO,MAC3B,EAOb,MAFAZ,GAAU9K,MAAMga,QAAQD,GACxBjP,EAAUmP,SAAU,GACb,EAKT,MAHEnP,GAAUgO,YAAa,GAGlB,EAYT,QAASoB,GAAsC9nB,EAAIyjB,GASjD,IACE,GALAoD,GACAkB,EALEC,EAAe,qEACjBpa,KACAqa,KACAC,GAAY,EAMRC,EAAOL,EAAsCM,OACjDD,IAASD,EACTC,EAAOA,EAAKC,OAEZ,GAAID,IAASta,GAAqBsa,IAAS9gB,EAASwD,OAApD,CAkBA,GAbAkd,GACEpZ,IAAK,KACL3C,KAAMiZ,EACN3L,KAAM,KACNE,OAAQ,MAGN2O,EAAK9lB,KACP0lB,EAAK/b,KAAOmc,EAAK9lB,MACPwkB,EAAQmB,EAAajnB,KAAKonB,EAAK3d,eACzCud,EAAK/b,KAAO6a,EAAM,IAGK,mBAAdkB,GAAK/b,KACd,IACE+b,EAAK/b,KAAO6a,EAAM9D,MAAMsF,UAAU,EAAGxB,EAAM9D,MAAMpN,QAAQ,MACzD,MAAOvX,IAGP6pB,EAAM,GAAKE,GACbD,GAAY,EAEZD,EAAM,GAAKE,IAAQ,EAGrBva,EAAM7D,KAAKge,GAGTtE,GAGF7V,EAAM2X,OAAO,EAAG9B,EAGlB,IAAIpU,IACFhN,KAAMrC,EAAGqC,KACTnB,QAASlB,EAAGkB,QACZyN,IAAKiW,IACLhX,MAAOA,EAQT,OANAqY,GACE5W,EACArP,EAAGsoB,WAAatoB,EAAGuoB,SACnBvoB,EAAGsZ,MAAQtZ,EAAGwoB,WACdxoB,EAAGkB,SAAWlB,EAAGyoB,aAEZpZ,EAQT,QAASxB,GAAkB7N,EAAIyjB,GAC7B,GAAI7V,GAAQ,IACZ6V,GAAiB,MAATA,EAAgB,GAAKA,CAE7B,KAEE,GADA7V,EAAQ+Y,EAA+B3mB,GAErC,MAAO4N,GAET,MAAOxP,GACP,GAAIiJ,EAASmC,MACX,KAAMpL,GAIV,IAEE,GADAwP,EAAQka,EAAsC9nB,EAAIyjB,EAAQ,GAExD,MAAO7V,GAET,MAAOxP,GACP,GAAIiJ,EAASmC,MACX,KAAMpL,GAGV,OACEiE,KAAMrC,EAAGqC,KACTnB,QAASlB,EAAGkB,QACZyN,IAAKiW,KAOT,MAHA/W,GAAkBoY,oCAAsCA,EACxDpY,EAAkB8Y,+BAAiCA,EAE5C9Y,KAGTlQ,EAAOD,QAAU2J,IAEdpI,KAAKf,KAAuB,mBAAXF,QAAyBA,OAAyB,mBAATC,MAAuBA,KAAyB,mBAAXF,QAAyBA,aACxHwD,EAAI,IAAIsd,GAAG,SAASzf,EAAQzB,EAAOD,GAetC,QAASiY,GAAQ+S,EAAUC,GACzB,IAAK,GAAI9pB,GAAI,EAAGA,EAAI6pB,EAASxpB,SAAUL,EACrC,GAAI6pB,EAAS7pB,KAAO8pB,EAAQ,MAAO9pB,EAErC,UAGF,QAASoF,GAAUgL,EAAK2Z,EAAUC,EAAQC,GACxC,MAAO9kB,MAAKC,UAAUgL,EAAK8Z,EAAWH,EAAUE,GAAgBD,GAIlE,QAASG,GAAehoB,GACtB,GAAI4T,IAEFhH,MAAO5M,EAAM4M,MACb1M,QAASF,EAAME,QACfmB,KAAMrB,EAAMqB,KAGd,KAAK,GAAIxD,KAAKmC,GACRmN,OAAO7L,UAAUkS,eAAevV,KAAK+B,EAAOnC,KAC9C+V,EAAI/V,GAAKmC,EAAMnC,GAInB,OAAO+V,GAGT,QAASmU,GAAWH,EAAUE,GAC5B,GAAIlb,MACAQ,IAWJ,OATqB,OAAjB0a,IACFA,EAAgB,SAASjf,EAAK7I,GAC5B,MAAI4M,GAAM,KAAO5M,EACR,eAEF,eAAiBoN,EAAKlL,MAAM,EAAGyS,EAAQ/H,EAAO5M,IAAQwf,KAAK,KAAO,MAItE,SAAS3W,EAAK7I,GACnB,GAAI4M,EAAM1O,OAAS,EAAG,CACpB,GAAI+pB,GAAUtT,EAAQ/H,EAAO1P,OAC5B+qB,EAAUrb,EAAM2X,OAAO0D,EAAU,GAAKrb,EAAM7D,KAAK7L,OACjD+qB,EAAU7a,EAAKmX,OAAO0D,EAASC,EAAAA,EAAUrf,GAAOuE,EAAKrE,KAAKF,IAEtD8L,EAAQ/H,EAAO5M,KAClBA,EAAQ8nB,EAAc7pB,KAAKf,KAAM2L,EAAK7I,QAGxC4M,GAAM7D,KAAK/I,EAGb,OAAmB,OAAZ4nB,EACH5nB,YAAiBlC,OAAQkqB,EAAehoB,GAASA,EACjD4nB,EAAS3pB,KAAKf,KAAM2L,EAAK7I,IA5DjCtD,EAAUC,EAAOD,QAAUuG,EAC3BvG,EAAQyrB,aAAeJ,OA+DjBpK,IAAI,SAASvf,EAAQzB,EAAOD,GAwBlC,QAAS0rB,GAAQC,EAAGC,GAClB,GAAIC,IAAW,MAAJF,IAAmB,MAAJC,GACtBE,GAAOH,GAAK,KAAOC,GAAK,KAAOC,GAAO,GAC1C,OAAQC,IAAO,GAAa,MAAND,EAMxB,QAASE,GAActI,EAAKuI,GAC1B,MAAQvI,IAAOuI,EAAQvI,IAAS,GAAKuI,EAMvC,QAASC,GAAOC,EAAGjrB,EAAG2jB,EAAG+G,EAAG7qB,EAAGH,GAC7B,MAAO+qB,GAAQK,EAAcL,EAAQA,EAAQzqB,EAAGirB,GAAIR,EAAQC,EAAGhrB,IAAKG,GAAI8jB,GAE1E,QAASuH,GAAMlrB,EAAG2jB,EAAGjB,EAAGyI,EAAGT,EAAG7qB,EAAGH,GAC/B,MAAOsrB,GAAQrH,EAAIjB,GAAOiB,EAAIwH,EAAInrB,EAAG2jB,EAAG+G,EAAG7qB,EAAGH,GAEhD,QAAS0rB,GAAMprB,EAAG2jB,EAAGjB,EAAGyI,EAAGT,EAAG7qB,EAAGH,GAC/B,MAAOsrB,GAAQrH,EAAIwH,EAAMzI,GAAKyI,EAAInrB,EAAG2jB,EAAG+G,EAAG7qB,EAAGH,GAEhD,QAAS2rB,GAAMrrB,EAAG2jB,EAAGjB,EAAGyI,EAAGT,EAAG7qB,EAAGH,GAC/B,MAAOsrB,GAAOrH,EAAIjB,EAAIyI,EAAGnrB,EAAG2jB,EAAG+G,EAAG7qB,EAAGH,GAEvC,QAAS4rB,GAAMtrB,EAAG2jB,EAAGjB,EAAGyI,EAAGT,EAAG7qB,EAAGH,GAC/B,MAAOsrB,GAAOtI,GAAKiB,GAAKwH,GAAInrB,EAAG2jB,EAAG+G,EAAG7qB,EAAGH,GAM1C,QAAS6rB,GAAQb,EAAGhJ,GAElBgJ,EAAEhJ,GAAO,IAAM,KAASA,EAAM,GAC9BgJ,GAAKhJ,EAAM,KAAQ,GAAM,GAAK,IAAMA,CAEpC,IAAIxhB,GACAsrB,EACAC,EACAC,EACAC,EACA3rB,EAAI,WACJ2jB,aACAjB,cACAyI,EAAI,SAER,KAAKjrB,EAAI,EAAGA,EAAIwqB,EAAEnqB,OAAQL,GAAK,GAC7BsrB,EAAOxrB,EACPyrB,EAAO9H,EACP+H,EAAOhJ,EACPiJ,EAAOR,EAEPnrB,EAAIkrB,EAAMlrB,EAAG2jB,EAAGjB,EAAGyI,EAAGT,EAAExqB,GAAI,cAC5BirB,EAAID,EAAMC,EAAGnrB,EAAG2jB,EAAGjB,EAAGgI,EAAExqB,EAAI,GAAI,eAChCwiB,EAAIwI,EAAMxI,EAAGyI,EAAGnrB,EAAG2jB,EAAG+G,EAAExqB,EAAI,GAAI,GAAI,WACpCyjB,EAAIuH,EAAMvH,EAAGjB,EAAGyI,EAAGnrB,EAAG0qB,EAAExqB,EAAI,GAAI,gBAChCF,EAAIkrB,EAAMlrB,EAAG2jB,EAAGjB,EAAGyI,EAAGT,EAAExqB,EAAI,GAAI,cAChCirB,EAAID,EAAMC,EAAGnrB,EAAG2jB,EAAGjB,EAAGgI,EAAExqB,EAAI,GAAI,GAAI,YACpCwiB,EAAIwI,EAAMxI,EAAGyI,EAAGnrB,EAAG2jB,EAAG+G,EAAExqB,EAAI,GAAI,gBAChCyjB,EAAIuH,EAAMvH,EAAGjB,EAAGyI,EAAGnrB,EAAG0qB,EAAExqB,EAAI,GAAI,cAChCF,EAAIkrB,EAAMlrB,EAAG2jB,EAAGjB,EAAGyI,EAAGT,EAAExqB,EAAI,GAAI,EAAG,YACnCirB,EAAID,EAAMC,EAAGnrB,EAAG2jB,EAAGjB,EAAGgI,EAAExqB,EAAI,GAAI,gBAChCwiB,EAAIwI,EAAMxI,EAAGyI,EAAGnrB,EAAG2jB,EAAG+G,EAAExqB,EAAI,IAAK,WACjCyjB,EAAIuH,EAAMvH,EAAGjB,EAAGyI,EAAGnrB,EAAG0qB,EAAExqB,EAAI,IAAK,gBACjCF,EAAIkrB,EAAMlrB,EAAG2jB,EAAGjB,EAAGyI,EAAGT,EAAExqB,EAAI,IAAK,EAAG,YACpCirB,EAAID,EAAMC,EAAGnrB,EAAG2jB,EAAGjB,EAAGgI,EAAExqB,EAAI,IAAK,cACjCwiB,EAAIwI,EAAMxI,EAAGyI,EAAGnrB,EAAG2jB,EAAG+G,EAAExqB,EAAI,IAAK,gBACjCyjB,EAAIuH,EAAMvH,EAAGjB,EAAGyI,EAAGnrB,EAAG0qB,EAAExqB,EAAI,IAAK,GAAI,YAErCF,EAAIorB,EAAMprB,EAAG2jB,EAAGjB,EAAGyI,EAAGT,EAAExqB,EAAI,GAAI,cAChCirB,EAAIC,EAAMD,EAAGnrB,EAAG2jB,EAAGjB,EAAGgI,EAAExqB,EAAI,GAAI,eAChCwiB,EAAI0I,EAAM1I,EAAGyI,EAAGnrB,EAAG2jB,EAAG+G,EAAExqB,EAAI,IAAK,GAAI,WACrCyjB,EAAIyH,EAAMzH,EAAGjB,EAAGyI,EAAGnrB,EAAG0qB,EAAExqB,GAAI,eAC5BF,EAAIorB,EAAMprB,EAAG2jB,EAAGjB,EAAGyI,EAAGT,EAAExqB,EAAI,GAAI,cAChCirB,EAAIC,EAAMD,EAAGnrB,EAAG2jB,EAAGjB,EAAGgI,EAAExqB,EAAI,IAAK,EAAG,UACpCwiB,EAAI0I,EAAM1I,EAAGyI,EAAGnrB,EAAG2jB,EAAG+G,EAAExqB,EAAI,IAAK,eACjCyjB,EAAIyH,EAAMzH,EAAGjB,EAAGyI,EAAGnrB,EAAG0qB,EAAExqB,EAAI,GAAI,eAChCF,EAAIorB,EAAMprB,EAAG2jB,EAAGjB,EAAGyI,EAAGT,EAAExqB,EAAI,GAAI,EAAG,WACnCirB,EAAIC,EAAMD,EAAGnrB,EAAG2jB,EAAGjB,EAAGgI,EAAExqB,EAAI,IAAK,eACjCwiB,EAAI0I,EAAM1I,EAAGyI,EAAGnrB,EAAG2jB,EAAG+G,EAAExqB,EAAI,GAAI,eAChCyjB,EAAIyH,EAAMzH,EAAGjB,EAAGyI,EAAGnrB,EAAG0qB,EAAExqB,EAAI,GAAI,GAAI,YACpCF,EAAIorB,EAAMprB,EAAG2jB,EAAGjB,EAAGyI,EAAGT,EAAExqB,EAAI,IAAK,eACjCirB,EAAIC,EAAMD,EAAGnrB,EAAG2jB,EAAGjB,EAAGgI,EAAExqB,EAAI,GAAI,aAChCwiB,EAAI0I,EAAM1I,EAAGyI,EAAGnrB,EAAG2jB,EAAG+G,EAAExqB,EAAI,GAAI,GAAI,YACpCyjB,EAAIyH,EAAMzH,EAAGjB,EAAGyI,EAAGnrB,EAAG0qB,EAAExqB,EAAI,IAAK,gBAEjCF,EAAIqrB,EAAMrrB,EAAG2jB,EAAGjB,EAAGyI,EAAGT,EAAExqB,EAAI,GAAI,WAChCirB,EAAIE,EAAMF,EAAGnrB,EAAG2jB,EAAGjB,EAAGgI,EAAExqB,EAAI,GAAI,gBAChCwiB,EAAI2I,EAAM3I,EAAGyI,EAAGnrB,EAAG2jB,EAAG+G,EAAExqB,EAAI,IAAK,GAAI,YACrCyjB,EAAI0H,EAAM1H,EAAGjB,EAAGyI,EAAGnrB,EAAG0qB,EAAExqB,EAAI,IAAK,cACjCF,EAAIqrB,EAAMrrB,EAAG2jB,EAAGjB,EAAGyI,EAAGT,EAAExqB,EAAI,GAAI,eAChCirB,EAAIE,EAAMF,EAAGnrB,EAAG2jB,EAAGjB,EAAGgI,EAAExqB,EAAI,GAAI,GAAI,YACpCwiB,EAAI2I,EAAM3I,EAAGyI,EAAGnrB,EAAG2jB,EAAG+G,EAAExqB,EAAI,GAAI,eAChCyjB,EAAI0H,EAAM1H,EAAGjB,EAAGyI,EAAGnrB,EAAG0qB,EAAExqB,EAAI,IAAK,gBACjCF,EAAIqrB,EAAMrrB,EAAG2jB,EAAGjB,EAAGyI,EAAGT,EAAExqB,EAAI,IAAK,EAAG,WACpCirB,EAAIE,EAAMF,EAAGnrB,EAAG2jB,EAAGjB,EAAGgI,EAAExqB,GAAI,eAC5BwiB,EAAI2I,EAAM3I,EAAGyI,EAAGnrB,EAAG2jB,EAAG+G,EAAExqB,EAAI,GAAI,eAChCyjB,EAAI0H,EAAM1H,EAAGjB,EAAGyI,EAAGnrB,EAAG0qB,EAAExqB,EAAI,GAAI,GAAI,UACpCF,EAAIqrB,EAAMrrB,EAAG2jB,EAAGjB,EAAGyI,EAAGT,EAAExqB,EAAI,GAAI,cAChCirB,EAAIE,EAAMF,EAAGnrB,EAAG2jB,EAAGjB,EAAGgI,EAAExqB,EAAI,IAAK,eACjCwiB,EAAI2I,EAAM3I,EAAGyI,EAAGnrB,EAAG2jB,EAAG+G,EAAExqB,EAAI,IAAK,GAAI,WACrCyjB,EAAI0H,EAAM1H,EAAGjB,EAAGyI,EAAGnrB,EAAG0qB,EAAExqB,EAAI,GAAI,eAEhCF,EAAIsrB,EAAMtrB,EAAG2jB,EAAGjB,EAAGyI,EAAGT,EAAExqB,GAAI,cAC5BirB,EAAIG,EAAMH,EAAGnrB,EAAG2jB,EAAGjB,EAAGgI,EAAExqB,EAAI,GAAI,GAAI,YACpCwiB,EAAI4I,EAAM5I,EAAGyI,EAAGnrB,EAAG2jB,EAAG+G,EAAExqB,EAAI,IAAK,gBACjCyjB,EAAI2H,EAAM3H,EAAGjB,EAAGyI,EAAGnrB,EAAG0qB,EAAExqB,EAAI,GAAI,cAChCF,EAAIsrB,EAAMtrB,EAAG2jB,EAAGjB,EAAGyI,EAAGT,EAAExqB,EAAI,IAAK,EAAG,YACpCirB,EAAIG,EAAMH,EAAGnrB,EAAG2jB,EAAGjB,EAAGgI,EAAExqB,EAAI,GAAI,gBAChCwiB,EAAI4I,EAAM5I,EAAGyI,EAAGnrB,EAAG2jB,EAAG+G,EAAExqB,EAAI,IAAK,aACjCyjB,EAAI2H,EAAM3H,EAAGjB,EAAGyI,EAAGnrB,EAAG0qB,EAAExqB,EAAI,GAAI,gBAChCF,EAAIsrB,EAAMtrB,EAAG2jB,EAAGjB,EAAGyI,EAAGT,EAAExqB,EAAI,GAAI,EAAG,YACnCirB,EAAIG,EAAMH,EAAGnrB,EAAG2jB,EAAGjB,EAAGgI,EAAExqB,EAAI,IAAK,cACjCwiB,EAAI4I,EAAM5I,EAAGyI,EAAGnrB,EAAG2jB,EAAG+G,EAAExqB,EAAI,GAAI,gBAChCyjB,EAAI2H,EAAM3H,EAAGjB,EAAGyI,EAAGnrB,EAAG0qB,EAAExqB,EAAI,IAAK,GAAI,YACrCF,EAAIsrB,EAAMtrB,EAAG2jB,EAAGjB,EAAGyI,EAAGT,EAAExqB,EAAI,GAAI,cAChCirB,EAAIG,EAAMH,EAAGnrB,EAAG2jB,EAAGjB,EAAGgI,EAAExqB,EAAI,IAAK,gBACjCwiB,EAAI4I,EAAM5I,EAAGyI,EAAGnrB,EAAG2jB,EAAG+G,EAAExqB,EAAI,GAAI,GAAI,WACpCyjB,EAAI2H,EAAM3H,EAAGjB,EAAGyI,EAAGnrB,EAAG0qB,EAAExqB,EAAI,GAAI,eAEhCF,EAAIyqB,EAAQzqB,EAAGwrB,GACf7H,EAAI8G,EAAQ9G,EAAG8H,GACf/I,EAAI+H,EAAQ/H,EAAGgJ,GACfP,EAAIV,EAAQU,EAAGQ,EAEjB,QAAQ3rB,EAAG2jB,EAAGjB,EAAGyI,GAMnB,QAASS,GAAUxH,GACjB,GAAIlkB,GACAokB,EAAS,GACTuH,EAA0B,GAAfzH,EAAM7jB,MACrB,KAAKL,EAAI,EAAGA,EAAI2rB,EAAU3rB,GAAK,EAC7BokB,GAAUC,OAAOuH,aAAc1H,EAAMlkB,GAAK,KAAQA,EAAI,GAAO,IAE/D,OAAOokB,GAOT,QAASyH,GAAU3H,GACjB,GAAIlkB,GACAokB,IAEJ,KADAA,GAAQF,EAAM7jB,QAAU,GAAK,GAAK+M,OAC7BpN,EAAI,EAAGA,EAAIokB,EAAO/jB,OAAQL,GAAK,EAClCokB,EAAOpkB,GAAK,CAEd,IAAI8rB,GAAyB,EAAf5H,EAAM7jB,MACpB,KAAKL,EAAI,EAAGA,EAAI8rB,EAAS9rB,GAAK,EAC5BokB,EAAOpkB,GAAK,KAAiC,IAA1BkkB,EAAM6H,WAAW/rB,EAAI,KAAeA,EAAI,EAE7D,OAAOokB,GAMT,QAAS4H,GAAQrsB,GACf,MAAO+rB,GAAUL,EAAQQ,EAAUlsB,GAAe,EAAXA,EAAEU,SAM3C,QAAS4rB,GAAYjhB,EAAKpJ,GACxB,GAAI5B,GAIAwf,EAHA0M,EAAOL,EAAU7gB,GACjBmhB,KACAC,IAMJ,KAJAD,EAAK,IAAMC,EAAK,IAAMhf,OAClB8e,EAAK7rB,OAAS,KAChB6rB,EAAOb,EAAQa,EAAmB,EAAblhB,EAAI3K,SAEtBL,EAAI,EAAGA,EAAI,GAAIA,GAAK,EACvBmsB,EAAKnsB,GAAe,UAAVksB,EAAKlsB,GACfosB,EAAKpsB,GAAe,WAAVksB,EAAKlsB,EAGjB,OADAwf,GAAO6L,EAAQc,EAAK/S,OAAOyS,EAAUjqB,IAAQ,IAAoB,EAAdA,EAAKvB,QACjDqrB,EAAUL,EAAQe,EAAKhT,OAAOoG,GAAO,MAM9C,QAAS6M,GAASnI,GAChB,GAEIsG,GACAxqB,EAHAssB,EAAS,mBACTlI,EAAS,EAGb,KAAKpkB,EAAI,EAAGA,EAAIkkB,EAAM7jB,OAAQL,GAAK,EACjCwqB,EAAItG,EAAM6H,WAAW/rB,GACrBokB,GAAUkI,EAAOzD,OAAQ2B,IAAM,EAAK,IAAQ8B,EAAOzD,OAAW,GAAJ2B,EAE5D,OAAOpG,GAMT,QAASmI,GAAarI,GACpB,MAAOsI,UAASna,mBAAmB6R,IAMrC,QAASuI,GAAO9sB,GACd,MAAOqsB,GAAQO,EAAa5sB,IAE9B,QAAS+sB,GAAO/sB,GACd,MAAO0sB,GAASI,EAAO9sB,IAEzB,QAASgtB,GAAWjH,EAAGuF,GACrB,MAAOgB,GAAYM,EAAa7G,GAAI6G,EAAatB,IAEnD,QAAS2B,GAAWlH,EAAGuF,GACrB,MAAOoB,GAASM,EAAWjH,EAAGuF,IAGhC,QAASxiB,GAAIokB,EAAQ7hB,EAAK8hB,GACxB,MAAK9hB,GAMA8hB,EAGEH,EAAW3hB,EAAK6hB,GAFdD,EAAW5hB,EAAK6hB,GANlBC,EAGEL,EAAOI,GAFLH,EAAOG,GAUpB/tB,EAAOD,QAAU4J,YAEN,EAAE,EAAE,IAAI","file":"raven.min.js"} \ No newline at end of file diff --git a/dist/angular,require,vue/raven.js b/dist/angular,require,vue/raven.js index 6eb6a906318e..aeef9000f5de 100644 --- a/dist/angular,require,vue/raven.js +++ b/dist/angular,require,vue/raven.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.25.1 (b6f3c7a) | github.com/getsentry/raven-js */ +/*! Raven.js 3.25.2 (30b6d4e) | github.com/getsentry/raven-js */ /* * Includes TraceKit @@ -261,7 +261,11 @@ function now() { var _window = typeof window !== 'undefined' ? window - : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; + : typeof global !== 'undefined' + ? global + : typeof self !== 'undefined' + ? self + : {}; var _document = _window.document; var _navigator = _window.navigator; @@ -351,7 +355,7 @@ Raven.prototype = { // webpack (using a build step causes webpack #1617). Grunt verifies that // this value matches package.json during build. // See: https://github.com/getsentry/raven-js/issues/465 - VERSION: '3.25.1', + VERSION: '3.25.2', debug: false, @@ -1907,7 +1911,7 @@ Raven.prototype = { } ] }, - culprit: fileurl + transaction: fileurl }, options ); @@ -2022,7 +2026,7 @@ Raven.prototype = { if ( !last || current.message !== last.message || // defined for captureMessage - current.culprit !== last.culprit // defined for captureException/onerror + current.transaction !== last.transaction // defined for captureException/onerror ) return false; diff --git a/dist/angular,require,vue/raven.min.js b/dist/angular,require,vue/raven.min.js index 76cfc523a46b..de05c4d1ae1e 100644 --- a/dist/angular,require,vue/raven.min.js +++ b/dist/angular,require,vue/raven.min.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.25.1 (b6f3c7a) | github.com/getsentry/raven-js */ -!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.Raven=a()}}(function(){var a;return function b(a,c,d){function e(g,h){if(!c[g]){if(!a[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};a[g][0].call(k.exports,function(b){var c=a[g][1][b];return e(c?c:b)},k,k.exports,b,a,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;g":"anonymous component")+(a._isVue&&a.$options.__file?" at "+a.$options.__file:"")}function e(a,b){if(b=b||window.Vue,b&&b.config){var c=b.config.errorHandler;b.config.errorHandler=function(b,e,f){var g={};"[object Object]"===Object.prototype.toString.call(e)&&(g.componentName=d(e),g.propsData=e.$options.propsData),"undefined"!=typeof f&&(g.lifecycleHook=f),a.captureException(b,{extra:g}),"function"==typeof c&&c.call(this,b,e,f)}}}b.exports=e,a(7).addPlugin(b.exports)},{7:7}],4:[function(a,b,c){function d(a){this.name="RavenConfigError",this.message=a}d.prototype=new Error,d.prototype.constructor=d,b.exports=d},{}],5:[function(a,b,c){var d=a(8),e=function(a,b,c){var e=a[b],f=a;if(b in a){var g="warn"===b?"warning":b;a[b]=function(){var a=[].slice.call(arguments),h=d.safeJoin(a," "),i={level:g,logger:"console",extra:{arguments:a}};"assert"===b?a[0]===!1&&(h="Assertion failed: "+(d.safeJoin(a.slice(1)," ")||"console.assert"),i.extra.arguments=a.slice(1),c&&c(h,i)):c&&c(h,i),e&&Function.prototype.apply.call(e,f,a)}}};b.exports={wrapMethod:e}},{8:8}],6:[function(a,b,c){(function(c){function d(){return+new Date}function e(a,b){return s(b)?function(c){return b(c,a)}:b}function f(){this.b=!("object"!=typeof JSON||!JSON.stringify),this.c=!r(S),this.d=!r(T),this.e=null,this.f=null,this.g=null,this.h=null,this.i=null,this.j=null,this.k={},this.l={release:R.SENTRY_RELEASE&&R.SENTRY_RELEASE.id,logger:"javascript",ignoreErrors:[],ignoreUrls:[],whitelistUrls:[],includePaths:[],headers:null,collectWindowErrors:!0,captureUnhandledRejections:!0,maxMessageLength:0,maxUrlLength:250,stackTraceLimit:50,autoBreadcrumbs:!0,instrument:!0,sampleRate:1,sanitizeKeys:[]},this.m={method:"POST",keepalive:!0,referrerPolicy:K()?"origin":""},this.n=0,this.o=!1,this.p=Error.stackTraceLimit,this.q=R.console||{},this.r={},this.s=[],this.t=d(),this.u=[],this.v=[],this.w=null,this.x=R.location,this.y=this.x&&this.x.href,this.z();for(var a in this.q)this.r[a]=this.q[a]}var g=a(9),h=a(10),i=a(11),j=a(4),k=a(8),l=k.isErrorEvent,m=k.isDOMError,n=k.isDOMException,o=k.isError,p=k.isObject,q=k.isPlainObject,r=k.isUndefined,s=k.isFunction,t=k.isString,u=k.isArray,v=k.isEmptyObject,w=k.each,x=k.objectMerge,y=k.truncate,z=k.objectFrozen,A=k.hasKey,B=k.joinRegExp,C=k.urlencode,D=k.uuid4,E=k.htmlTreeAsString,F=k.isSameException,G=k.isSameStacktrace,H=k.parseUrl,I=k.fill,J=k.supportsFetch,K=k.supportsReferrerPolicy,L=k.serializeKeysForMessage,M=k.serializeException,N=k.sanitize,O=a(5).wrapMethod,P="source protocol user pass host port path".split(" "),Q=/^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/,R="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},S=R.document,T=R.navigator;f.prototype={VERSION:"3.25.1",debug:!1,TraceKit:g,config:function(a,b){var c=this;if(c.h)return this.A("error","Error: Raven has already been configured"),c;if(!a)return c;var d=c.l;b&&w(b,function(a,b){"tags"===a||"extra"===a||"user"===a?c.k[a]=b:d[a]=b}),c.setDSN(a),d.ignoreErrors.push(/^Script error\.?$/),d.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/),d.ignoreErrors=B(d.ignoreErrors),d.ignoreUrls=!!d.ignoreUrls.length&&B(d.ignoreUrls),d.whitelistUrls=!!d.whitelistUrls.length&&B(d.whitelistUrls),d.includePaths=B(d.includePaths),d.maxBreadcrumbs=Math.max(0,Math.min(d.maxBreadcrumbs||100,100));var e={xhr:!0,console:!0,dom:!0,location:!0,sentry:!0},f=d.autoBreadcrumbs;"[object Object]"==={}.toString.call(f)?f=x(e,f):f!==!1&&(f=e),d.autoBreadcrumbs=f;var h={tryCatch:!0},i=d.instrument;return"[object Object]"==={}.toString.call(i)?i=x(h,i):i!==!1&&(i=h),d.instrument=i,g.collectWindowErrors=!!d.collectWindowErrors,c},install:function(){var a=this;return a.isSetup()&&!a.o&&(g.report.subscribe(function(){a.B.apply(a,arguments)}),a.l.captureUnhandledRejections&&a.C(),a.D(),a.l.instrument&&a.l.instrument.tryCatch&&a.E(),a.l.autoBreadcrumbs&&a.F(),a.G(),a.o=!0),Error.stackTraceLimit=a.l.stackTraceLimit,this},setDSN:function(a){var b=this,c=b.H(a),d=c.path.lastIndexOf("/"),e=c.path.substr(1,d);b.I=a,b.i=c.user,b.J=c.pass&&c.pass.substr(1),b.j=c.path.substr(d+1),b.h=b.K(c),b.L=b.h+"/"+e+"api/"+b.j+"/store/",this.z()},context:function(a,b,c){return s(a)&&(c=b||[],b=a,a=void 0),this.wrap(a,b).apply(this,c)},wrap:function(a,b,c){function d(){var d=[],f=arguments.length,g=!a||a&&a.deep!==!1;for(c&&s(c)&&c.apply(this,arguments);f--;)d[f]=g?e.wrap(a,arguments[f]):arguments[f];try{return b.apply(this,d)}catch(h){throw e.M(),e.captureException(h,a),h}}var e=this;if(r(b)&&!s(a))return a;if(s(a)&&(b=a,a=void 0),!s(b))return b;try{if(b.N)return b;if(b.O)return b.O}catch(f){return b}for(var g in b)A(b,g)&&(d[g]=b[g]);return d.prototype=b.prototype,b.O=d,d.N=!0,d.P=b,d},uninstall:function(){return g.report.uninstall(),this.Q(),this.R(),this.S(),this.T(),Error.stackTraceLimit=this.p,this.o=!1,this},U:function(a){this.A("debug","Raven caught unhandled promise rejection:",a),this.captureException(a.reason,{extra:{unhandledPromiseRejection:!0}})},C:function(){return this.U=this.U.bind(this),R.addEventListener&&R.addEventListener("unhandledrejection",this.U),this},Q:function(){return R.removeEventListener&&R.removeEventListener("unhandledrejection",this.U),this},captureException:function(a,b){if(b=x({trimHeadFrames:0},b?b:{}),l(a)&&a.error)a=a.error;else{if(m(a)||n(a)){var c=a.name||(m(a)?"DOMError":"DOMException"),d=a.message?c+": "+a.message:c;return this.captureMessage(d,x(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}))}if(o(a))a=a;else{if(!q(a))return this.captureMessage(a,x(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}));b=this.V(b,a),a=new Error(b.message)}}this.e=a;try{var e=g.computeStackTrace(a);this.W(e,b)}catch(f){if(a!==f)throw f}return this},V:function(a,b){var c=Object.keys(b).sort(),d=x(a,{message:"Non-Error exception captured with keys: "+L(c),fingerprint:[i(c)],extra:a.extra||{}});return d.extra.X=M(b),d},captureMessage:function(a,b){if(!this.l.ignoreErrors.test||!this.l.ignoreErrors.test(a)){b=b||{},a+="";var c,d=x({message:a},b);try{throw new Error(a)}catch(e){c=e}c.name=null;var f=g.computeStackTrace(c),h=u(f.stack)&&f.stack[1];h&&"Raven.captureException"===h.func&&(h=f.stack[2]);var i=h&&h.url||"";if((!this.l.ignoreUrls.test||!this.l.ignoreUrls.test(i))&&(!this.l.whitelistUrls.test||this.l.whitelistUrls.test(i))){if(this.l.stacktrace||b&&b.stacktrace){d.fingerprint=null==d.fingerprint?a:d.fingerprint,b=x({trimHeadFrames:0},b),b.trimHeadFrames+=1;var j=this.Y(f,b);d.stacktrace={frames:j.reverse()}}return d.fingerprint&&(d.fingerprint=u(d.fingerprint)?d.fingerprint:[d.fingerprint]),this.Z(d),this}}},captureBreadcrumb:function(a){var b=x({timestamp:d()/1e3},a);if(s(this.l.breadcrumbCallback)){var c=this.l.breadcrumbCallback(b);if(p(c)&&!v(c))b=c;else if(c===!1)return this}return this.v.push(b),this.v.length>this.l.maxBreadcrumbs&&this.v.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.s.push([a,b]),this.o&&this.G(),this},setUserContext:function(a){return this.k.user=a,this},setExtraContext:function(a){return this.$("extra",a),this},setTagsContext:function(a){return this.$("tags",a),this},clearContext:function(){return this.k={},this},getContext:function(){return JSON.parse(h(this.k))},setEnvironment:function(a){return this.l.environment=a,this},setRelease:function(a){return this.l.release=a,this},setDataCallback:function(a){var b=this.l.dataCallback;return this.l.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.l.breadcrumbCallback;return this.l.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.l.shouldSendCallback;return this.l.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.l.transport=a,this},lastException:function(){return this.e},lastEventId:function(){return this.g},isSetup:function(){return!!this.b&&(!!this.h||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.A("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=R.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(S){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.I;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.k.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.K(this.H(c)),h=S.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(S.head||S.body).appendChild(h)}},M:function(){var a=this;this.n+=1,setTimeout(function(){a.n-=1})},_:function(a,b){var c,d;if(this.c){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),S.createEvent?(c=S.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=S.createEventObject(),c.eventType=a);for(d in b)A(b,d)&&(c[d]=b[d]);if(S.createEvent)S.dispatchEvent(c);else try{S.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},aa:function(a){var b=this;return function(c){if(b.ba=null,b.w!==c){b.w=c;var d;try{d=E(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ca:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.ba;g||a.aa("input")(c),clearTimeout(g),a.ba=setTimeout(function(){a.ba=null},b)}}},da:function(a,b){var c=H(this.x.href),d=H(b),e=H(a);this.y=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},D:function(){var a=this;a.ea=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.N?a.ea.apply(this.P,arguments):a.ea.apply(this,arguments)}},R:function(){this.ea&&(Function.prototype.toString=this.ea)},E:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.da(b.y,c+""),a.apply(this,arguments)}};I(R.history,"pushState",j,d),I(R.history,"replaceState",j,d)}if(c.console&&"console"in R&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};w(["debug","info","warn","error","log"],function(a,b){O(console,b,k)})}},S:function(){for(var a;this.u.length;){a=this.u.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},T:function(){for(var a in this.r)this.q[a]=this.r[a]},G:function(){var a=this;w(this.s,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},H:function(a){var b=Q.exec(a),c={},d=7;try{for(;d--;)c[P[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.l.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},K:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},B:function(){this.n||this.W.apply(this,arguments)},W:function(a,b){var c=this.Y(a,b);this._("handle",{stackInfo:a,options:b}),this.ga(a.name,a.message,a.url,a.lineno,c,b)},Y:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(w(a.stack,function(b,e){var f=c.ha(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.v,0)}),this.k.user&&(a.user=this.k.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),a=this.qa(a),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||v(a[b]))&&delete a[b]}),s(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!v(a)&&(!s(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.na()?void this.A("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function F(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&l(b))for(c=b.split(/\s+/),f=0;fc?Q(a,b-1):d}function R(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?X:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function S(a,b){function c(a){return m(a)?a.map(function(a){return c(a)}):k(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!m(b)||m(b)&&0===b.length)return a;var d,e=A(b),f="********";try{d=JSON.parse(T(a))}catch(g){return a}return c(d)}var T=a(10),U="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},V=3,W=51200,X=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isDOMError:g,isDOMException:h,isUndefined:i,isFunction:j,isPlainObject:k,isString:l,isArray:m,isEmptyObject:n,supportsErrorEvent:o,supportsDOMError:p,supportsDOMException:q,supportsFetch:r,supportsReferrerPolicy:s,supportsPromiseRejectionEvent:t,wrappedCallback:u,each:v,objectMerge:w,truncate:y,objectFrozen:x,hasKey:z,joinRegExp:A,urlencode:B,uuid4:D,htmlTreeAsString:E,htmlElementAsString:F,isSameException:I,isSameStacktrace:J,parseUrl:C,fill:K,safeJoin:L,serializeException:Q,serializeKeysForMessage:R,sanitize:S}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{10:10}],9:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}function e(){return"undefined"==typeof document||null==document.location?"":(document.location.origin||(document.location.origin=document.location.protocol+"//"+document.location.hostname+(document.location.port?":"+document.location.port:"")),document.location.origin)}var f=a(8),g={collectWindowErrors:!0,debug:!1},h="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},i=[].slice,j="?",k=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;g.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function e(a,b){var c=null;if(!b||g.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(i.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,h,i){var l=null,m=f.isErrorEvent(i)?i.error:i,n=f.isErrorEvent(a)?a.message:a;if(v)g.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&f.isError(m))l=g.computeStackTrace(m),e(l,!0);else{var p,r={url:b,line:c,column:h},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(k);p&&(s=p[1],n=p[2])}r.func=j,l={name:s,message:n,url:d(),stack:[r]},e(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=h.onerror,h.onerror=l,r=!0)}function n(){r&&(h.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,e.apply(null,[a,!1].concat(b))}function p(a,b){var c=i.call(arguments,1);if(v){if(u===a)return;o()}var d=g.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),g.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,f,g=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,h=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,i=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,k=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,l=/\((\S*)(?::(\d+))(?::(\d+))\)/,m=a.stack.split("\n"),n=[],o=(/^(.*) is undefined$/.exec(a.message),0),p=m.length;o eval")>-1;r&&(b=k.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==o||c[5]||"undefined"==typeof a.columnNumber||(n[0].column=a.columnNumber+1),f={url:c[3],func:c[1]||j,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}if(!f.func&&f.line&&(f.func=j), +/*! Raven.js 3.25.2 (30b6d4e) | github.com/getsentry/raven-js */ +!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.Raven=a()}}(function(){var a;return function b(a,c,d){function e(g,h){if(!c[g]){if(!a[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};a[g][0].call(k.exports,function(b){var c=a[g][1][b];return e(c?c:b)},k,k.exports,b,a,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;g":"anonymous component")+(a._isVue&&a.$options.__file?" at "+a.$options.__file:"")}function e(a,b){if(b=b||window.Vue,b&&b.config){var c=b.config.errorHandler;b.config.errorHandler=function(b,e,f){var g={};"[object Object]"===Object.prototype.toString.call(e)&&(g.componentName=d(e),g.propsData=e.$options.propsData),"undefined"!=typeof f&&(g.lifecycleHook=f),a.captureException(b,{extra:g}),"function"==typeof c&&c.call(this,b,e,f)}}}b.exports=e,a(7).addPlugin(b.exports)},{7:7}],4:[function(a,b,c){function d(a){this.name="RavenConfigError",this.message=a}d.prototype=new Error,d.prototype.constructor=d,b.exports=d},{}],5:[function(a,b,c){var d=a(8),e=function(a,b,c){var e=a[b],f=a;if(b in a){var g="warn"===b?"warning":b;a[b]=function(){var a=[].slice.call(arguments),h=d.safeJoin(a," "),i={level:g,logger:"console",extra:{arguments:a}};"assert"===b?a[0]===!1&&(h="Assertion failed: "+(d.safeJoin(a.slice(1)," ")||"console.assert"),i.extra.arguments=a.slice(1),c&&c(h,i)):c&&c(h,i),e&&Function.prototype.apply.call(e,f,a)}}};b.exports={wrapMethod:e}},{8:8}],6:[function(a,b,c){(function(c){function d(){return+new Date}function e(a,b){return s(b)?function(c){return b(c,a)}:b}function f(){this.b=!("object"!=typeof JSON||!JSON.stringify),this.c=!r(S),this.d=!r(T),this.e=null,this.f=null,this.g=null,this.h=null,this.i=null,this.j=null,this.k={},this.l={release:R.SENTRY_RELEASE&&R.SENTRY_RELEASE.id,logger:"javascript",ignoreErrors:[],ignoreUrls:[],whitelistUrls:[],includePaths:[],headers:null,collectWindowErrors:!0,captureUnhandledRejections:!0,maxMessageLength:0,maxUrlLength:250,stackTraceLimit:50,autoBreadcrumbs:!0,instrument:!0,sampleRate:1,sanitizeKeys:[]},this.m={method:"POST",keepalive:!0,referrerPolicy:K()?"origin":""},this.n=0,this.o=!1,this.p=Error.stackTraceLimit,this.q=R.console||{},this.r={},this.s=[],this.t=d(),this.u=[],this.v=[],this.w=null,this.x=R.location,this.y=this.x&&this.x.href,this.z();for(var a in this.q)this.r[a]=this.q[a]}var g=a(9),h=a(10),i=a(11),j=a(4),k=a(8),l=k.isErrorEvent,m=k.isDOMError,n=k.isDOMException,o=k.isError,p=k.isObject,q=k.isPlainObject,r=k.isUndefined,s=k.isFunction,t=k.isString,u=k.isArray,v=k.isEmptyObject,w=k.each,x=k.objectMerge,y=k.truncate,z=k.objectFrozen,A=k.hasKey,B=k.joinRegExp,C=k.urlencode,D=k.uuid4,E=k.htmlTreeAsString,F=k.isSameException,G=k.isSameStacktrace,H=k.parseUrl,I=k.fill,J=k.supportsFetch,K=k.supportsReferrerPolicy,L=k.serializeKeysForMessage,M=k.serializeException,N=k.sanitize,O=a(5).wrapMethod,P="source protocol user pass host port path".split(" "),Q=/^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/,R="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},S=R.document,T=R.navigator;f.prototype={VERSION:"3.25.2",debug:!1,TraceKit:g,config:function(a,b){var c=this;if(c.h)return this.A("error","Error: Raven has already been configured"),c;if(!a)return c;var d=c.l;b&&w(b,function(a,b){"tags"===a||"extra"===a||"user"===a?c.k[a]=b:d[a]=b}),c.setDSN(a),d.ignoreErrors.push(/^Script error\.?$/),d.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/),d.ignoreErrors=B(d.ignoreErrors),d.ignoreUrls=!!d.ignoreUrls.length&&B(d.ignoreUrls),d.whitelistUrls=!!d.whitelistUrls.length&&B(d.whitelistUrls),d.includePaths=B(d.includePaths),d.maxBreadcrumbs=Math.max(0,Math.min(d.maxBreadcrumbs||100,100));var e={xhr:!0,console:!0,dom:!0,location:!0,sentry:!0},f=d.autoBreadcrumbs;"[object Object]"==={}.toString.call(f)?f=x(e,f):f!==!1&&(f=e),d.autoBreadcrumbs=f;var h={tryCatch:!0},i=d.instrument;return"[object Object]"==={}.toString.call(i)?i=x(h,i):i!==!1&&(i=h),d.instrument=i,g.collectWindowErrors=!!d.collectWindowErrors,c},install:function(){var a=this;return a.isSetup()&&!a.o&&(g.report.subscribe(function(){a.B.apply(a,arguments)}),a.l.captureUnhandledRejections&&a.C(),a.D(),a.l.instrument&&a.l.instrument.tryCatch&&a.E(),a.l.autoBreadcrumbs&&a.F(),a.G(),a.o=!0),Error.stackTraceLimit=a.l.stackTraceLimit,this},setDSN:function(a){var b=this,c=b.H(a),d=c.path.lastIndexOf("/"),e=c.path.substr(1,d);b.I=a,b.i=c.user,b.J=c.pass&&c.pass.substr(1),b.j=c.path.substr(d+1),b.h=b.K(c),b.L=b.h+"/"+e+"api/"+b.j+"/store/",this.z()},context:function(a,b,c){return s(a)&&(c=b||[],b=a,a=void 0),this.wrap(a,b).apply(this,c)},wrap:function(a,b,c){function d(){var d=[],f=arguments.length,g=!a||a&&a.deep!==!1;for(c&&s(c)&&c.apply(this,arguments);f--;)d[f]=g?e.wrap(a,arguments[f]):arguments[f];try{return b.apply(this,d)}catch(h){throw e.M(),e.captureException(h,a),h}}var e=this;if(r(b)&&!s(a))return a;if(s(a)&&(b=a,a=void 0),!s(b))return b;try{if(b.N)return b;if(b.O)return b.O}catch(f){return b}for(var g in b)A(b,g)&&(d[g]=b[g]);return d.prototype=b.prototype,b.O=d,d.N=!0,d.P=b,d},uninstall:function(){return g.report.uninstall(),this.Q(),this.R(),this.S(),this.T(),Error.stackTraceLimit=this.p,this.o=!1,this},U:function(a){this.A("debug","Raven caught unhandled promise rejection:",a),this.captureException(a.reason,{extra:{unhandledPromiseRejection:!0}})},C:function(){return this.U=this.U.bind(this),R.addEventListener&&R.addEventListener("unhandledrejection",this.U),this},Q:function(){return R.removeEventListener&&R.removeEventListener("unhandledrejection",this.U),this},captureException:function(a,b){if(b=x({trimHeadFrames:0},b?b:{}),l(a)&&a.error)a=a.error;else{if(m(a)||n(a)){var c=a.name||(m(a)?"DOMError":"DOMException"),d=a.message?c+": "+a.message:c;return this.captureMessage(d,x(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}))}if(o(a))a=a;else{if(!q(a))return this.captureMessage(a,x(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}));b=this.V(b,a),a=new Error(b.message)}}this.e=a;try{var e=g.computeStackTrace(a);this.W(e,b)}catch(f){if(a!==f)throw f}return this},V:function(a,b){var c=Object.keys(b).sort(),d=x(a,{message:"Non-Error exception captured with keys: "+L(c),fingerprint:[i(c)],extra:a.extra||{}});return d.extra.X=M(b),d},captureMessage:function(a,b){if(!this.l.ignoreErrors.test||!this.l.ignoreErrors.test(a)){b=b||{},a+="";var c,d=x({message:a},b);try{throw new Error(a)}catch(e){c=e}c.name=null;var f=g.computeStackTrace(c),h=u(f.stack)&&f.stack[1];h&&"Raven.captureException"===h.func&&(h=f.stack[2]);var i=h&&h.url||"";if((!this.l.ignoreUrls.test||!this.l.ignoreUrls.test(i))&&(!this.l.whitelistUrls.test||this.l.whitelistUrls.test(i))){if(this.l.stacktrace||b&&b.stacktrace){d.fingerprint=null==d.fingerprint?a:d.fingerprint,b=x({trimHeadFrames:0},b),b.trimHeadFrames+=1;var j=this.Y(f,b);d.stacktrace={frames:j.reverse()}}return d.fingerprint&&(d.fingerprint=u(d.fingerprint)?d.fingerprint:[d.fingerprint]),this.Z(d),this}}},captureBreadcrumb:function(a){var b=x({timestamp:d()/1e3},a);if(s(this.l.breadcrumbCallback)){var c=this.l.breadcrumbCallback(b);if(p(c)&&!v(c))b=c;else if(c===!1)return this}return this.v.push(b),this.v.length>this.l.maxBreadcrumbs&&this.v.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.s.push([a,b]),this.o&&this.G(),this},setUserContext:function(a){return this.k.user=a,this},setExtraContext:function(a){return this.$("extra",a),this},setTagsContext:function(a){return this.$("tags",a),this},clearContext:function(){return this.k={},this},getContext:function(){return JSON.parse(h(this.k))},setEnvironment:function(a){return this.l.environment=a,this},setRelease:function(a){return this.l.release=a,this},setDataCallback:function(a){var b=this.l.dataCallback;return this.l.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.l.breadcrumbCallback;return this.l.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.l.shouldSendCallback;return this.l.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.l.transport=a,this},lastException:function(){return this.e},lastEventId:function(){return this.g},isSetup:function(){return!!this.b&&(!!this.h||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.A("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=R.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(S){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.I;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.k.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.K(this.H(c)),h=S.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(S.head||S.body).appendChild(h)}},M:function(){var a=this;this.n+=1,setTimeout(function(){a.n-=1})},_:function(a,b){var c,d;if(this.c){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),S.createEvent?(c=S.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=S.createEventObject(),c.eventType=a);for(d in b)A(b,d)&&(c[d]=b[d]);if(S.createEvent)S.dispatchEvent(c);else try{S.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},aa:function(a){var b=this;return function(c){if(b.ba=null,b.w!==c){b.w=c;var d;try{d=E(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ca:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.ba;g||a.aa("input")(c),clearTimeout(g),a.ba=setTimeout(function(){a.ba=null},b)}}},da:function(a,b){var c=H(this.x.href),d=H(b),e=H(a);this.y=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},D:function(){var a=this;a.ea=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.N?a.ea.apply(this.P,arguments):a.ea.apply(this,arguments)}},R:function(){this.ea&&(Function.prototype.toString=this.ea)},E:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.da(b.y,c+""),a.apply(this,arguments)}};I(R.history,"pushState",j,d),I(R.history,"replaceState",j,d)}if(c.console&&"console"in R&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};w(["debug","info","warn","error","log"],function(a,b){O(console,b,k)})}},S:function(){for(var a;this.u.length;){a=this.u.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},T:function(){for(var a in this.r)this.q[a]=this.r[a]},G:function(){var a=this;w(this.s,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},H:function(a){var b=Q.exec(a),c={},d=7;try{for(;d--;)c[P[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.l.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},K:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},B:function(){this.n||this.W.apply(this,arguments)},W:function(a,b){var c=this.Y(a,b);this._("handle",{stackInfo:a,options:b}),this.ga(a.name,a.message,a.url,a.lineno,c,b)},Y:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(w(a.stack,function(b,e){var f=c.ha(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.v,0)}),this.k.user&&(a.user=this.k.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),a=this.qa(a),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||v(a[b]))&&delete a[b]}),s(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!v(a)&&(!s(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.na()?void this.A("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function F(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&l(b))for(c=b.split(/\s+/),f=0;fc?Q(a,b-1):d}function R(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?X:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function S(a,b){function c(a){return m(a)?a.map(function(a){return c(a)}):k(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!m(b)||m(b)&&0===b.length)return a;var d,e=A(b),f="********";try{d=JSON.parse(T(a))}catch(g){return a}return c(d)}var T=a(10),U="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},V=3,W=51200,X=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isDOMError:g,isDOMException:h,isUndefined:i,isFunction:j,isPlainObject:k,isString:l,isArray:m,isEmptyObject:n,supportsErrorEvent:o,supportsDOMError:p,supportsDOMException:q,supportsFetch:r,supportsReferrerPolicy:s,supportsPromiseRejectionEvent:t,wrappedCallback:u,each:v,objectMerge:w,truncate:y,objectFrozen:x,hasKey:z,joinRegExp:A,urlencode:B,uuid4:D,htmlTreeAsString:E,htmlElementAsString:F,isSameException:I,isSameStacktrace:J,parseUrl:C,fill:K,safeJoin:L,serializeException:Q,serializeKeysForMessage:R,sanitize:S}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{10:10}],9:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}function e(){return"undefined"==typeof document||null==document.location?"":(document.location.origin||(document.location.origin=document.location.protocol+"//"+document.location.hostname+(document.location.port?":"+document.location.port:"")),document.location.origin)}var f=a(8),g={collectWindowErrors:!0,debug:!1},h="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},i=[].slice,j="?",k=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;g.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function e(a,b){var c=null;if(!b||g.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(i.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,h,i){var l=null,m=f.isErrorEvent(i)?i.error:i,n=f.isErrorEvent(a)?a.message:a;if(v)g.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&f.isError(m))l=g.computeStackTrace(m),e(l,!0);else{var p,r={url:b,line:c,column:h},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(k);p&&(s=p[1],n=p[2])}r.func=j,l={name:s,message:n,url:d(),stack:[r]},e(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=h.onerror,h.onerror=l,r=!0)}function n(){r&&(h.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,e.apply(null,[a,!1].concat(b))}function p(a,b){var c=i.call(arguments,1);if(v){if(u===a)return;o()}var d=g.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),g.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,f,g=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,h=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,i=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,k=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,l=/\((\S*)(?::(\d+))(?::(\d+))\)/,m=a.stack.split("\n"),n=[],o=(/^(.*) is undefined$/.exec(a.message),0),p=m.length;o eval")>-1;r&&(b=k.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==o||c[5]||"undefined"==typeof a.columnNumber||(n[0].column=a.columnNumber+1),f={url:c[3],func:c[1]||j,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}if(!f.func&&f.line&&(f.func=j), f.url&&"blob:"===f.url.substr(0,5)){var s=new XMLHttpRequest;if(s.open("GET",f.url,!1),s.send(null),200===s.status){var t=s.responseText||"";t=t.slice(-300);var u=t.match(/\/\/# sourceMappingURL=(.*)$/);if(u){var v=u[1];"~"===v.charAt(0)&&(v=e()+v.slice(1)),f.url=v.slice(0,-4)}}}n.push(f)}return n.length?{name:a.name,message:a.message,url:d(),stack:n}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=j),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,e){for(var h,i,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==f&&o!==g.report){if(i={url:null,func:j,line:null,column:null},o.name?i.func=o.name:(h=k.exec(o.toString()))&&(i.func=h[1]),"undefined"==typeof i.func)try{i.func=h.input.substring(0,h.input.indexOf("{"))}catch(p){}m[""+o]?n=!0:m[""+o]=!0,l.push(i)}e&&l.splice(0,e);var q={name:a.name,message:a.message,url:d(),stack:l};return b(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),q}function f(b,e){var f=null;e=null==e?0:+e;try{if(f=a(b))return f}catch(h){if(g.debug)throw h}try{if(f=c(b,e+1))return f}catch(h){if(g.debug)throw h}return{name:b.name,message:b.message,url:d()}}return f.augmentStackTraceWithInitialElement=b,f.computeStackTraceFromStackProp=a,f}(),b.exports=g}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{8:8}],10:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}],11:[function(a,b,c){function d(a,b){var c=(65535&a)+(65535&b),d=(a>>16)+(b>>16)+(c>>16);return d<<16|65535&c}function e(a,b){return a<>>32-b}function f(a,b,c,f,g,h){return d(e(d(d(b,a),d(f,h)),g),c)}function g(a,b,c,d,e,g,h){return f(b&c|~b&d,a,b,e,g,h)}function h(a,b,c,d,e,g,h){return f(b&d|c&~d,a,b,e,g,h)}function i(a,b,c,d,e,g,h){return f(b^c^d,a,b,e,g,h)}function j(a,b,c,d,e,g,h){return f(c^(b|~d),a,b,e,g,h)}function k(a,b){a[b>>5]|=128<>>9<<4)+14]=b;var c,e,f,k,l,m=1732584193,n=-271733879,o=-1732584194,p=271733878;for(c=0;c>5]>>>b%32&255);return c}function m(a){var b,c=[];for(c[(a.length>>2)-1]=void 0,b=0;b>5]|=(255&a.charCodeAt(b/8))<16&&(e=k(e,8*a.length)),c=0;c<16;c+=1)f[c]=909522486^e[c],g[c]=1549556828^e[c];return d=k(f.concat(m(b)),512+8*b.length),l(k(g.concat(d),640))}function p(a){var b,c,d="0123456789abcdef",e="";for(c=0;c>>4&15)+d.charAt(15&b);return e}function q(a){return unescape(encodeURIComponent(a))}function r(a){return n(q(a))}function s(a){return p(r(a))}function t(a,b){return o(q(a),q(b))}function u(a,b){return p(t(a,b))}function v(a,b,c){return b?c?t(b,a):u(b,a):c?r(a):s(a)}b.exports=v},{}]},{},[7,1,2,3])(7)}); //# sourceMappingURL=raven.min.js.map \ No newline at end of file diff --git a/dist/angular,require,vue/raven.min.js.map b/dist/angular,require,vue/raven.min.js.map index a9715501e553..ed50be304fa6 100644 --- a/dist/angular,require,vue/raven.min.js.map +++ b/dist/angular,require,vue/raven.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","angularPlugin","angular","RavenProvider","$get","$window","ExceptionHandlerProvider","$provide","decorator","exceptionHandler","R","$delegate","ex","cause","captureException","extra","moduleName","provider","config","setDataCallback","wrappedCallback","data","_normalizeData","angularPattern","exception","values","matches","exec","value","type","message","angularDocs","substr","addPlugin","7","8","2","requirePlugin","wrap","deep","3","formatComponentName","vm","$root","name","_isVue","$options","_componentTag","__file","vuePlugin","Vue","_oldOnError","errorHandler","error","info","metaData","Object","prototype","toString","componentName","propsData","lifecycleHook","4","RavenConfigError","constructor","5","utils","wrapMethod","console","level","callback","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","msg","safeJoin","logger","Function","apply","6","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","sanitizeKeys","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isErrorEvent","isDOMError","isDOMException","isError","isObject","isPlainObject","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","sanitize","wrapConsoleMethod","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","dsn","options","_logDebug","globalOptions","key","setDSN","push","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","context","func","undefined","_before","wrapped","_ignoreNextOnError","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","U","event","reason","unhandledPromiseRejection","C","_promiseRejectionHandler","bind","addEventListener","Q","removeEventListener","trimHeadFrames","captureMessage","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","V","currentOptions","exKeys","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","M","setTimeout","_","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","aa","evtName","_keypressTimeout","target","category","ca","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","da","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","D","_originalFunctionToString","E","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","F","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","S","builtin","T","G","installer","concat","H","str","m","allowSecretKey","K","port","B","W","stackInfo","_triggerEvent","_processException","lineno","Y","frame","_normalizeFrame","in_app","ha","stackInfoUrl","normalized","filename","line","colno","column","function","ga","prefixedMessage","culprit","ia","request","Referer","breadcrumbs","_trimBreadcrumbs","ja","urlProp","urlProps","ka","httpData","userAgent","User-Agent","referrer","z","_backoffDuration","_backoffStart","na","oa","current","last","pa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Z","baseData","project","platform","_getHttpData","serverName","server_name","_sanitizeData","forEach","random","_sendProcessedPayload","qa","sa","ra","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","ta","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","onerror","open","setRequestHeader","send","ua","hash","evaluated","A","$","setUser","setReleaseContext","10","11","9","RavenConstructor","_Raven","noConflict","Client","what","supportsErrorEvent","ErrorEvent","supportsDOMError","DOMError","supportsDOMException","DOMException","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","sanitizeMask","safeInput","o_O","getLocationHref","getLocationOrigin","origin","hostname","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","responseText","sourceMaps","sourceMapAddress","charAt","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","y","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","string","raw"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file +{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","angularPlugin","angular","RavenProvider","$get","$window","ExceptionHandlerProvider","$provide","decorator","exceptionHandler","R","$delegate","ex","cause","captureException","extra","moduleName","provider","config","setDataCallback","wrappedCallback","data","_normalizeData","angularPattern","exception","values","matches","exec","value","type","message","angularDocs","substr","addPlugin","7","8","2","requirePlugin","wrap","deep","3","formatComponentName","vm","$root","name","_isVue","$options","_componentTag","__file","vuePlugin","Vue","_oldOnError","errorHandler","error","info","metaData","Object","prototype","toString","componentName","propsData","lifecycleHook","4","RavenConfigError","constructor","5","utils","wrapMethod","console","level","callback","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","msg","safeJoin","logger","Function","apply","6","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","sanitizeKeys","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isErrorEvent","isDOMError","isDOMException","isError","isObject","isPlainObject","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","sanitize","wrapConsoleMethod","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","dsn","options","_logDebug","globalOptions","key","setDSN","push","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","context","func","undefined","_before","wrapped","_ignoreNextOnError","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","U","event","reason","unhandledPromiseRejection","C","_promiseRejectionHandler","bind","addEventListener","Q","removeEventListener","trimHeadFrames","captureMessage","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","V","currentOptions","exKeys","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","M","setTimeout","_","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","aa","evtName","_keypressTimeout","target","category","ca","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","da","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","D","_originalFunctionToString","E","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","F","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","S","builtin","T","G","installer","concat","H","str","m","allowSecretKey","K","port","B","W","stackInfo","_triggerEvent","_processException","lineno","Y","frame","_normalizeFrame","in_app","ha","stackInfoUrl","normalized","filename","line","colno","column","function","ga","prefixedMessage","transaction","ia","request","Referer","breadcrumbs","_trimBreadcrumbs","ja","urlProp","urlProps","ka","httpData","userAgent","User-Agent","referrer","z","_backoffDuration","_backoffStart","na","oa","current","last","pa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Z","baseData","project","platform","_getHttpData","serverName","server_name","_sanitizeData","forEach","random","_sendProcessedPayload","qa","sa","ra","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","ta","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","onerror","open","setRequestHeader","send","ua","hash","evaluated","A","$","setUser","setReleaseContext","10","11","9","RavenConstructor","_Raven","noConflict","Client","what","supportsErrorEvent","ErrorEvent","supportsDOMError","DOMError","supportsDOMException","DOMException","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","sanitizeMask","safeInput","o_O","getLocationHref","getLocationOrigin","origin","hostname","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","responseText","sourceMaps","sourceMapAddress","charAt","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","y","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","string","raw"],"mappings":";CAYA,SAAUA,GAAG,GAAoB,gBAAVC,UAAoC,mBAATC,QAAsBA,OAAOD,QAAQD,QAAS,IAAmB,kBAATG,SAAqBA,OAAOC,IAAKD,UAAUH,OAAO,CAAC,GAAIK,EAAkCA,GAAb,mBAATC,QAAwBA,OAA+B,mBAATC,QAAwBA,OAA6B,mBAAPC,MAAsBA,KAAYC,KAAKJ,EAAEK,MAAQV,MAAO,WAAW,GAAIG,EAAsB,OAAO,SAAUQ,GAAEC,EAAEC,EAAEC,GAAG,QAASC,GAAEC,EAAEC,GAAG,IAAIJ,EAAEG,GAAG,CAAC,IAAIJ,EAAEI,GAAG,CAAC,GAAIE,GAAkB,kBAATC,UAAqBA,OAAQ,KAAIF,GAAGC,EAAE,MAAOA,GAAEF,GAAE,EAAI,IAAGI,EAAE,MAAOA,GAAEJ,GAAE,EAAI,IAAIhB,GAAE,GAAIqB,OAAM,uBAAuBL,EAAE,IAAK,MAAMhB,GAAEsB,KAAK,mBAAmBtB,EAAE,GAAIuB,GAAEV,EAAEG,IAAIf,WAAYW,GAAEI,GAAG,GAAGQ,KAAKD,EAAEtB,QAAQ,SAASU,GAAG,GAAIE,GAAED,EAAEI,GAAG,GAAGL,EAAG,OAAOI,GAAEF,EAAEA,EAAEF,IAAIY,EAAEA,EAAEtB,QAAQU,EAAEC,EAAEC,EAAEC,GAAG,MAAOD,GAAEG,GAAGf,QAAkD,IAAI,GAA1CmB,GAAkB,kBAATD,UAAqBA,QAAgBH,EAAE,EAAEA,EAAEF,EAAEW,OAAOT,IAAID,EAAED,EAAEE,GAAI,OAAOD,KAAKW,GAAG,SAASC,EAAQzB,EAAOD,GAYp0B,QAAS2B,GAAclB,EAAOmB,GAK5B,QAASC,KACPrB,KAAKsB,MACH,UACA,SAASC,GACP,MAAOtB,KAKb,QAASuB,GAAyBC,GAChCA,EAASC,UAAU,qBAAsB,QAAS,YAAaC,IAGjE,QAASA,GAAiBC,EAAGC,GAC3B,MAAO,UAASC,EAAIC,GAClBH,EAAEI,iBAAiBF,GACjBG,OAAQF,MAAOA,KAEjBF,EAAUC,EAAIC,IAtBlBX,EAAUA,GAAWvB,OAAOuB,QAEvBA,IAwBLA,EACG3B,OAAOyC,MACPC,SAAS,QAASd,GAClBe,QAAQ,WAAYZ,IAEvBvB,EAAMoC,gBACJC,EAAgB,SAASC,GACvB,MAAOpB,GAAcqB,EAAeD,OAxC1C,GAAID,GAAkBpB,EAAQ,GAAGoB,gBAG7BG,EAAiB,6DACjBP,EAAa,SAyCjBf,GAAcqB,EAAiB,SAASD,GAEtC,GAAIG,GAAYH,EAAKG,SACrB,IAAIA,EAAW,CACbA,EAAYA,EAAUC,OAAO,EAC7B,IAAIC,GAAUH,EAAeI,KAAKH,EAAUI,MAExCF,KAEFF,EAAUK,KAAOH,EAAQ,GACzBF,EAAUI,MAAQF,EAAQ,GAE1BL,EAAKS,QAAUN,EAAUK,KAAO,KAAOL,EAAUI,MAEjDP,EAAKN,MAAMgB,YAAcL,EAAQ,GAAGM,OAAO,EAAG,MAIlD,MAAOX,IAGTpB,EAAce,WAAaA,EAE3BzC,EAAOD,QAAU2B,EAEjBD,EAAQ,GAAGiC,UAAU1D,EAAOD,WACzB4D,EAAI,EAAEC,EAAI,IAAIC,GAAG,SAASpC,EAAQzB,EAAOD,GAO5C,QAAS+D,GAActD,GACC,kBAAXP,IAAyBA,EAAOC,MACzCE,OAAOH,OAASO,EAAMuD,MAAMC,MAAM,GAAQ/D,GAC1CG,OAAOa,QAAUT,EAAMuD,MAAMC,MAAM,GAAQvC,IAI/CzB,EAAOD,QAAU+D,EAEjBrC,EAAQ,GAAGiC,UAAU1D,EAAOD,WACzB4D,EAAI,IAAIM,GAAG,SAASxC,EAAQzB,EAAOD,GAMtC,QAASmE,GAAoBC,GAC3B,GAAIA,EAAGC,QAAUD,EACf,MAAO,eAET,IAAIE,GAAOF,EAAGG,OAASH,EAAGI,SAASF,MAAQF,EAAGI,SAASC,cAAgBL,EAAGE,IAC1E,QACGA,EAAO,cAAgBA,EAAO,IAAM,wBACpCF,EAAGG,QAAUH,EAAGI,SAASE,OAAS,OAASN,EAAGI,SAASE,OAAS,IAIrE,QAASC,GAAUlE,EAAOmE,GAIxB,GAHAA,EAAMA,GAAOvE,OAAOuE,IAGfA,GAAQA,EAAIhC,OAAjB,CAEA,GAAIiC,GAAcD,EAAIhC,OAAOkC,YAC7BF,GAAIhC,OAAOkC,aAAe,SAAyBC,EAAOX,EAAIY,GAC5D,GAAIC,KAGuC,qBAAvCC,OAAOC,UAAUC,SAAS7D,KAAK6C,KACjCa,EAASI,cAAgBlB,EAAoBC,GAC7Ca,EAASK,UAAYlB,EAAGI,SAASc,WAGf,mBAATN,KACTC,EAASM,cAAgBP,GAG3BvE,EAAM+B,iBAAiBuC,GACrBtC,MAAOwC,IAGkB,kBAAhBJ,IACTA,EAAYtD,KAAKf,KAAMuE,EAAOX,EAAIY,KAKxC/E,EAAOD,QAAU2E,EAEjBjD,EAAQ,GAAGiC,UAAU1D,EAAOD,WACzB4D,EAAI,IAAI4B,GAAG,SAAS9D,EAAQzB,EAAOD,GACtC,QAASyF,GAAiBjC,GACxBhD,KAAK8D,KAAO,mBACZ9D,KAAKgD,QAAUA,EAEjBiC,EAAiBN,UAAY,GAAI/D,OACjCqE,EAAiBN,UAAUO,YAAcD,EAEzCxF,EAAOD,QAAUyF,OAEXE,GAAG,SAASjE,EAAQzB,EAAOD,GACjC,GAAI4F,GAAQlE,EAAQ,GAEhBmE,EAAa,SAASC,EAASC,EAAOC,GACxC,GAAIC,GAAuBH,EAAQC,GAC/BG,EAAkBJ,CAEtB,IAAMC,IAASD,GAAf,CAIA,GAAIK,GAAwB,SAAVJ,EAAmB,UAAYA,CAEjDD,GAAQC,GAAS,WACf,GAAIK,MAAUC,MAAM9E,KAAK+E,WAErBC,EAAMX,EAAMY,SAASJ,EAAM,KAC3BrD,GAAQgD,MAAOI,EAAaM,OAAQ,UAAWhE,OAAQ6D,UAAWF,GAExD,YAAVL,EACEK,EAAK,MAAO,IAEdG,EACE,sBAAwBX,EAAMY,SAASJ,EAAKC,MAAM,GAAI,MAAQ,kBAChEtD,EAAKN,MAAM6D,UAAYF,EAAKC,MAAM,GAClCL,GAAYA,EAASO,EAAKxD,IAG5BiD,GAAYA,EAASO,EAAKxD,GAIxBkD,GAGFS,SAASvB,UAAUwB,MAAMpF,KAAK0E,EAAsBC,EAAiBE,KAK3EnG,GAAOD,SACL6F,WAAYA,KAGXhC,EAAI,IAAI+C,GAAG,SAASlF,EAAQzB,EAAOD,IACtC,SAAWM,GA4CX,QAASuG,KACP,OAAQ,GAAIC,MAed,QAASC,GAAqBC,EAAUhB,GACtC,MAAOiB,GAAWjB,GACd,SAASjD,GACP,MAAOiD,GAASjD,EAAMiE,IAExBhB,EAMN,QAASvF,KACPD,KAAK0G,IAA8B,gBAATC,QAAqBA,KAAKC,WAEpD5G,KAAK6G,GAAgBC,EAAYC,GACjC/G,KAAKgH,GAAiBF,EAAYG,GAClCjH,KAAKkH,EAAyB,KAC9BlH,KAAKmH,EAAY,KACjBnH,KAAKoH,EAAe,KACpBpH,KAAKqH,EAAgB,KACrBrH,KAAKsH,EAAa,KAClBtH,KAAKuH,EAAiB,KACtBvH,KAAKwH,KACLxH,KAAKyH,GAEHC,QAASC,EAAQC,gBAAkBD,EAAQC,eAAeC,GAC1D5B,OAAQ,aACR6B,gBACAC,cACAC,iBACAC,gBACAC,QAAS,KACTC,qBAAqB,EACrBC,4BAA4B,EAC5BC,iBAAkB,EAElBC,aAAc,IACdC,gBAAiB,GACjBC,iBAAiB,EACjBC,YAAY,EACZC,WAAY,EACZC,iBAEF3I,KAAK4I,GACHC,OAAQ,OACRC,WAAW,EAKXC,eAAgBC,IAA2B,SAAW,IAExDhJ,KAAKiJ,EAAiB,EACtBjJ,KAAKkJ,GAAoB,EACzBlJ,KAAKmJ,EAAgCvI,MAAM2H,gBAG3CvI,KAAKoJ,EAAmBzB,EAAQrC,YAChCtF,KAAKqJ,KACLrJ,KAAKsJ,KACLtJ,KAAKuJ,EAAalD,IAClBrG,KAAKwJ,KACLxJ,KAAKyJ,KACLzJ,KAAK0J,EAAqB,KAE1B1J,KAAK2J,EAAYhC,EAAQiC,SACzB5J,KAAK6J,EAAY7J,KAAK2J,GAAa3J,KAAK2J,EAAUG,KAClD9J,KAAK+J,GAGL,KAAK,GAAIlB,KAAU7I,MAAKoJ,EACtBpJ,KAAKqJ,EAAwBR,GAAU7I,KAAKoJ,EAAiBP,GAhIjE,GAAImB,GAAW9I,EAAQ,GACnB0F,EAAY1F,EAAQ,IACpB+I,EAAM/I,EAAQ,IACd+D,EAAmB/D,EAAQ,GAE3BkE,EAAQlE,EAAQ,GAChBgJ,EAAe9E,EAAM8E,aACrBC,EAAa/E,EAAM+E,WACnBC,EAAiBhF,EAAMgF,eACvBC,EAAUjF,EAAMiF,QAChBC,EAAWlF,EAAMkF,SACjBC,EAAgBnF,EAAMmF,cACtBzD,EAAc1B,EAAM0B,YACpBL,EAAarB,EAAMqB,WACnB+D,EAAWpF,EAAMoF,SACjBC,EAAUrF,EAAMqF,QAChBC,EAAgBtF,EAAMsF,cACtBC,EAAOvF,EAAMuF,KACbC,EAAcxF,EAAMwF,YACpBC,EAAWzF,EAAMyF,SACjBC,EAAe1F,EAAM0F,aACrBC,EAAS3F,EAAM2F,OACfC,EAAa5F,EAAM4F,WACnBC,EAAY7F,EAAM6F,UAClBC,EAAQ9F,EAAM8F,MACdC,EAAmB/F,EAAM+F,iBACzBC,EAAkBhG,EAAMgG,gBACxBC,EAAmBjG,EAAMiG,iBACzBC,EAAWlG,EAAMkG,SACjBC,EAAOnG,EAAMmG,KACbC,EAAgBpG,EAAMoG,cACtBxC,EAAyB5D,EAAM4D,uBAC/ByC,EAA0BrG,EAAMqG,wBAChCC,EAAqBtG,EAAMsG,mBAC3BC,EAAWvG,EAAMuG,SAEjBC,EAAoB1K,EAAQ,GAAGmE,WAE/BwG,EAAU,2CAA2CC,MAAM,KAC7DC,EAAa,gEAOXpE,EACgB,mBAAX9H,QACHA,OACkB,mBAAXC,GACLA,EACgB,mBAATC,MACLA,QAENgH,EAAYY,EAAQqE,SACpB/E,EAAaU,EAAQsE,SAmFzBhM,GAAM0E,WAKJuH,QAAS,SAETC,OAAO,EAEPnC,SAAUA,EASV5H,OAAQ,SAASgK,EAAKC,GACpB,GAAItM,GAAOC,IAEX,IAAID,EAAKsH,EAEP,MADArH,MAAKsM,EAAU,QAAS,4CACjBvM,CAET,KAAKqM,EAAK,MAAOrM,EAEjB,IAAIwM,GAAgBxM,EAAK0H,CAGrB4E,IACF1B,EAAK0B,EAAS,SAASG,EAAK1J,GAEd,SAAR0J,GAA0B,UAARA,GAA2B,SAARA,EACvCzM,EAAKyH,EAAegF,GAAO1J,EAE3ByJ,EAAcC,GAAO1J,IAK3B/C,EAAK0M,OAAOL,GAIZG,EAAczE,aAAa4E,KAAK,qBAChCH,EAAczE,aAAa4E,KAAK,iDAGhCH,EAAczE,aAAekD,EAAWuB,EAAczE,cACtDyE,EAAcxE,aAAawE,EAAcxE,WAAW/G,QAChDgK,EAAWuB,EAAcxE,YAE7BwE,EAAcvE,gBAAgBuE,EAAcvE,cAAchH,QACtDgK,EAAWuB,EAAcvE,eAE7BuE,EAActE,aAAe+C,EAAWuB,EAActE,cACtDsE,EAAcI,eAAiBC,KAAKC,IAClC,EACAD,KAAKE,IAAIP,EAAcI,gBAAkB,IAAK,KAGhD,IAAII,IACFC,KAAK,EACL1H,SAAS,EACT2H,KAAK,EACLrD,UAAU,EACVsD,QAAQ,GAGN1E,EAAkB+D,EAAc/D,eACM,wBAAnC5D,SAAS7D,KAAKyH,GACnBA,EAAkBoC,EAAYmC,EAAwBvE,GAC7CA,KAAoB,IAC7BA,EAAkBuE,GAEpBR,EAAc/D,gBAAkBA,CAEhC,IAAI2E,IACFC,UAAU,GAGR3E,EAAa8D,EAAc9D,UAW/B,OAVqC,uBAA9B7D,SAAS7D,KAAK0H,GACnBA,EAAamC,EAAYuC,EAAoB1E,GACpCA,KAAe,IACxBA,EAAa0E,GAEfZ,EAAc9D,WAAaA,EAE3BuB,EAAS7B,sBAAwBoE,EAAcpE,oBAGxCpI,GAWTsN,QAAS,WACP,GAAItN,GAAOC,IAyBX,OAxBID,GAAKuN,YAAcvN,EAAKmJ,IAC1Bc,EAASuD,OAAOC,UAAU,WACxBzN,EAAK0N,EAAwBtH,MAAMpG,EAAM+F,aAGvC/F,EAAK0H,EAAeW,4BACtBrI,EAAK2N,IAGP3N,EAAK4N,IAED5N,EAAK0H,EAAegB,YAAc1I,EAAK0H,EAAegB,WAAW2E,UACnErN,EAAK6N,IAGH7N,EAAK0H,EAAee,iBAAiBzI,EAAK8N,IAG9C9N,EAAK+N,IAEL/N,EAAKmJ,GAAoB,GAG3BtI,MAAM2H,gBAAkBxI,EAAK0H,EAAec,gBACrCvI,MAQTyM,OAAQ,SAASL,GACf,GAAIrM,GAAOC,KACT+N,EAAMhO,EAAKiO,EAAU5B,GACrB6B,EAAYF,EAAIG,KAAKC,YAAY,KACjCD,EAAOH,EAAIG,KAAKhL,OAAO,EAAG+K,EAE5BlO,GAAKqO,EAAOhC,EACZrM,EAAKuH,EAAayG,EAAIM,KACtBtO,EAAKuO,EAAgBP,EAAIQ,MAAQR,EAAIQ,KAAKrL,OAAO,GACjDnD,EAAKwH,EAAiBwG,EAAIG,KAAKhL,OAAO+K,EAAY,GAElDlO,EAAKsH,EAAgBtH,EAAKyO,EAAiBT,GAE3ChO,EAAK0O,EACH1O,EAAKsH,EAAgB,IAAM6G,EAAO,OAASnO,EAAKwH,EAAiB,UAInEvH,KAAK+J,KAWP2E,QAAS,SAASrC,EAASsC,EAAM/I,GAO/B,MANIa,GAAW4F,KACbzG,EAAO+I,MACPA,EAAOtC,EACPA,EAAUuC,QAGL5O,KAAKwD,KAAK6I,EAASsC,GAAMxI,MAAMnG,KAAM4F,IAW9CpC,KAAM,SAAS6I,EAASsC,EAAME,GAqC5B,QAASC,KACP,GAAIlJ,MACFjF,EAAImF,UAAU9E,OACdyC,GAAQ4I,GAAYA,GAAWA,EAAQ5I,QAAS,CAQlD,KANIoL,GAAWpI,EAAWoI,IACxBA,EAAQ1I,MAAMnG,KAAM8F,WAKfnF,KAAKiF,EAAKjF,GAAK8C,EAAO1D,EAAKyD,KAAK6I,EAASvG,UAAUnF,IAAMmF,UAAUnF,EAE1E,KAKE,MAAOgO,GAAKxI,MAAMnG,KAAM4F,GACxB,MAAO1F,GAGP,KAFAH,GAAKgP,IACLhP,EAAKiC,iBAAiB9B,EAAGmM,GACnBnM,GA1DV,GAAIH,GAAOC,IAGX,IAAI8G,EAAY6H,KAAUlI,EAAW4F,GACnC,MAAOA,EAWT,IAPI5F,EAAW4F,KACbsC,EAAOtC,EACPA,EAAUuC,SAKPnI,EAAWkI,GACd,MAAOA,EAIT,KACE,GAAIA,EAAKK,EACP,MAAOL,EAIT,IAAIA,EAAKM,EACP,MAAON,GAAKM,EAEd,MAAO/O,GAIP,MAAOyO,GA8BT,IAAK,GAAIO,KAAYP,GACf5D,EAAO4D,EAAMO,KACfJ,EAAQI,GAAYP,EAAKO,GAW7B,OARAJ,GAAQnK,UAAYgK,EAAKhK,UAEzBgK,EAAKM,EAAoBH,EAGzBA,EAAQE,GAAY,EACpBF,EAAQK,EAAWR,EAEZG,GAQTM,UAAW,WAWT,MAVApF,GAASuD,OAAO6B,YAEhBpP,KAAKqP,IACLrP,KAAKsP,IACLtP,KAAKuP,IACLvP,KAAKwP,IAEL5O,MAAM2H,gBAAkBvI,KAAKmJ,EAC7BnJ,KAAKkJ,GAAoB,EAElBlJ,MAWTyP,EAA0B,SAASC,GACjC1P,KAAKsM,EAAU,QAAS,4CAA6CoD,GACrE1P,KAAKgC,iBAAiB0N,EAAMC,QAC1B1N,OACE2N,2BAA2B,MAUjCC,EAAgC,WAI9B,MAHA7P,MAAK8P,EAA2B9P,KAAK8P,EAAyBC,KAAK/P,MACnE2H,EAAQqI,kBACNrI,EAAQqI,iBAAiB,qBAAsBhQ,KAAK8P,GAC/C9P,MAQTiQ,EAAgC,WAG9B,MAFAtI,GAAQuI,qBACNvI,EAAQuI,oBAAoB,qBAAsBlQ,KAAK8P,GAClD9P,MAUTgC,iBAAkB,SAASF,EAAIuK,GAG7B,GAFAA,EAAUzB,GAAauF,eAAgB,GAAI9D,EAAUA,MAEjDnC,EAAapI,IAAOA,EAAGyC,MAEzBzC,EAAKA,EAAGyC,UACH,CAAA,GAAI4F,EAAWrI,IAAOsI,EAAetI,GAAK,CAK/C,GAAIgC,GAAOhC,EAAGgC,OAASqG,EAAWrI,GAAM,WAAa,gBACjDkB,EAAUlB,EAAGkB,QAAUc,EAAO,KAAOhC,EAAGkB,QAAUc,CAEtD,OAAO9D,MAAKoQ,eACVpN,EACA4H,EAAYyB,GAGVgE,YAAY,EACZF,eAAgB9D,EAAQ8D,eAAiB,KAGxC,GAAI9F,EAAQvI,GAEjBA,EAAKA,MACA,CAAA,IAAIyI,EAAczI,GAavB,MAAO9B,MAAKoQ,eACVtO,EACA8I,EAAYyB,GACVgE,YAAY,EACZF,eAAgB9D,EAAQ8D,eAAiB,IAb7C9D,GAAUrM,KAAKsQ,EAA2CjE,EAASvK,GACnEA,EAAK,GAAIlB,OAAMyL,EAAQrJ,UAkBzBhD,KAAKkH,EAAyBpF,CAO9B,KACE,GAAIyO,GAAQvG,EAASwG,kBAAkB1O,EACvC9B,MAAKyQ,EAAiBF,EAAOlE,GAC7B,MAAOqE,GACP,GAAI5O,IAAO4O,EACT,KAAMA,GAIV,MAAO1Q,OAGT2Q,EAA4C,SAASC,EAAgB9O,GACnE,GAAI+O,GAASnM,OAAOoM,KAAKhP,GAAIiP,OACzB1E,EAAUzB,EAAYgG,GACxB5N,QACE,2CAA6CyI,EAAwBoF,GACvEG,aAAc/G,EAAI4G,IAClB5O,MAAO2O,EAAe3O,WAIxB,OAFAoK,GAAQpK,MAAMgP,EAAiBvF,EAAmB5J,GAE3CuK,GAUT+D,eAAgB,SAASrK,EAAKsG,GAI5B,IACIrM,KAAKyH,EAAeK,aAAaoJ,OACnClR,KAAKyH,EAAeK,aAAaoJ,KAAKnL,GAFxC,CAOAsG,EAAUA,MACVtG,GAAY,EAEZ,IAOIjE,GAPAS,EAAOqI,GAEP5H,QAAS+C,GAEXsG,EAQF,KACE,KAAM,IAAIzL,OAAMmF,GAChB,MAAO2K,GACP5O,EAAK4O,EAIP5O,EAAGgC,KAAO,IACV,IAAIyM,GAAQvG,EAASwG,kBAAkB1O,GAGnCqP,EAAc1G,EAAQ8F,EAAMA,QAAUA,EAAMA,MAAM,EAKlDY,IAAoC,2BAArBA,EAAYxC,OAC7BwC,EAAcZ,EAAMA,MAAM,GAG5B,IAAIa,GAAWD,GAAeA,EAAYE,KAAQ,EAElD,MACIrR,KAAKyH,EAAeM,WAAWmJ,OACjClR,KAAKyH,EAAeM,WAAWmJ,KAAKE,OAMlCpR,KAAKyH,EAAeO,cAAckJ,MACnClR,KAAKyH,EAAeO,cAAckJ,KAAKE,IAF1C,CAOA,GAAIpR,KAAKyH,EAAe4I,YAAehE,GAAWA,EAAQgE,WAAa,CAErE9N,EAAKyO,YAAkC,MAApBzO,EAAKyO,YAAsBjL,EAAMxD,EAAKyO,YAEzD3E,EAAUzB,GAENuF,eAAgB,GAElB9D,GAMFA,EAAQ8D,gBAAkB,CAE1B,IAAImB,GAAStR,KAAKuR,EAAehB,EAAOlE,EACxC9J,GAAK8N,YAEHiB,OAAQA,EAAOE,WAcnB,MATIjP,GAAKyO,cACPzO,EAAKyO,YAAcvG,EAAQlI,EAAKyO,aAC5BzO,EAAKyO,aACJzO,EAAKyO,cAIZhR,KAAKyR,EAAMlP,GAEJvC,QAGT0R,kBAAmB,SAASC,GAC1B,GAAIC,GAAQhH,GAERiH,UAAWxL,IAAQ,KAErBsL,EAGF,IAAIlL,EAAWzG,KAAKyH,EAAeqK,oBAAqB,CACtD,GAAIC,GAAS/R,KAAKyH,EAAeqK,mBAAmBF,EAEpD,IAAItH,EAASyH,KAAYrH,EAAcqH,GACrCH,EAAQG,MACH,IAAIA,KAAW,EACpB,MAAO/R,MAQX,MAJAA,MAAKyJ,EAAaiD,KAAKkF,GACnB5R,KAAKyJ,EAAazI,OAAShB,KAAKyH,EAAekF,gBACjD3M,KAAKyJ,EAAauI,QAEbhS,MAGTmD,UAAW,SAAS8O,GAClB,GAAIC,MAAgBrM,MAAM9E,KAAK+E,UAAW,EAO1C,OALA9F,MAAKsJ,EAASoD,MAAMuF,EAAQC,IACxBlS,KAAKkJ,GACPlJ,KAAK8N,IAGA9N,MASTmS,eAAgB,SAAS9D,GAIvB,MAFArO,MAAKwH,EAAe6G,KAAOA,EAEpBrO,MASToS,gBAAiB,SAASnQ,GAGxB,MAFAjC,MAAKqS,EAAc,QAASpQ,GAErBjC,MASTsS,eAAgB,SAASC,GAGvB,MAFAvS,MAAKqS,EAAc,OAAQE,GAEpBvS,MAQTwS,aAAc,WAGZ,MAFAxS,MAAKwH,KAEExH,MAQTyS,WAAY,WAEV,MAAO9L,MAAK+L,MAAM9L,EAAU5G,KAAKwH,KASnCmL,eAAgB,SAASC,GAGvB,MAFA5S,MAAKyH,EAAemL,YAAcA,EAE3B5S,MAST6S,WAAY,SAASnL,GAGnB,MAFA1H,MAAKyH,EAAeC,QAAUA,EAEvB1H,MAUTqC,gBAAiB,SAASmD,GACxB,GAAIgB,GAAWxG,KAAKyH,EAAeqL,YAEnC,OADA9S,MAAKyH,EAAeqL,aAAevM,EAAqBC,EAAUhB,GAC3DxF,MAUT+S,sBAAuB,SAASvN,GAC9B,GAAIgB,GAAWxG,KAAKyH,EAAeqK,kBAEnC,OADA9R,MAAKyH,EAAeqK,mBAAqBvL,EAAqBC,EAAUhB,GACjExF,MAUTgT,sBAAuB,SAASxN,GAC9B,GAAIgB,GAAWxG,KAAKyH,EAAewL,kBAEnC,OADAjT,MAAKyH,EAAewL,mBAAqB1M,EAAqBC,EAAUhB,GACjExF,MAYTkT,aAAc,SAASC,GAGrB,MAFAnT,MAAKyH,EAAe0L,UAAYA,EAEzBnT,MAQToT,cAAe,WACb,MAAOpT,MAAKkH,GAQdmM,YAAa,WACX,MAAOrT,MAAKoH,GAQdkG,QAAS,WACP,QAAKtN,KAAK0G,MACL1G,KAAKqH,IACHrH,KAAKsT,0BACRtT,KAAKsT,yBAA0B,EAC/BtT,KAAKsM,EAAU,QAAS,2CAEnB,KAKXiH,UAAW,WAIT,GAAIC,GAAc7L,EAAQ6L,WACtBA,IACFxT,KAAKoC,OAAOoR,EAAYpH,IAAKoH,EAAYpR,QAAQiL,WAIrDoG,iBAAkB,SAASpH,GACzB,GACGtF,EADH,CAKAsF,EAAUA,KAEV,IAAIgH,GAAchH,EAAQqH,SAAW1T,KAAKqT,aAC1C,KAAKA,EACH,KAAM,IAAIpO,GAAiB,kBAG7B,IAAImH,GAAMC,EAAQD,KAAOpM,KAAKoO,CAC9B,KAAKhC,EACH,KAAM,IAAInH,GAAiB,cAG7B,IAAI0O,GAASC,mBACTC,EAAK,EACTA,IAAM,YAAcF,EAAON,GAC3BQ,GAAM,QAAUF,EAAOvH,EAEvB,IAAIiC,GAAOhC,EAAQgC,MAAQrO,KAAKwH,EAAe6G,IAC3CA,KACEA,EAAKvK,OAAM+P,GAAM,SAAWF,EAAOtF,EAAKvK,OACxCuK,EAAKyF,QAAOD,GAAM,UAAYF,EAAOtF,EAAKyF,QAGhD,IAAIC,GAAe/T,KAAKwO,EAAiBxO,KAAKgO,EAAU5B,IAEpD4H,EAASjN,EAAUkN,cAAc,SACrCD,GAAOE,OAAQ,EACfF,EAAOG,IAAMJ,EAAe,yBAA2BF,GACtD9M,EAAUqN,MAAQrN,EAAUsN,MAAMC,YAAYN,KAIjDO,EAAoB,WAClB,GAAIxU,GAAOC,IACXA,MAAKiJ,GAAkB,EACvBuL,WAAW,WAETzU,EAAKkJ,GAAkB,KAI3BwL,EAAe,SAASC,EAAWrI,GAEjC,GAAIsI,GAAKnI,CAET,IAAKxM,KAAK6G,EAAV,CAEAwF,EAAUA,MAEVqI,EAAY,QAAUA,EAAUxR,OAAO,EAAG,GAAG0R,cAAgBF,EAAUxR,OAAO,GAE1E6D,EAAU8N,aACZF,EAAM5N,EAAU8N,YAAY,cAC5BF,EAAIG,UAAUJ,GAAW,GAAM,KAE/BC,EAAM5N,EAAUgO,oBAChBJ,EAAID,UAAYA,EAGlB,KAAKlI,IAAOH,GACNtB,EAAOsB,EAASG,KAClBmI,EAAInI,GAAOH,EAAQG,GAGvB,IAAIzF,EAAU8N,YAEZ9N,EAAUiO,cAAcL,OAIxB,KACE5N,EAAUkO,UAAU,KAAON,EAAID,UAAUQ,cAAeP,GACxD,MAAOzU,OAYbiV,GAAyB,SAASC,GAChC,GAAIrV,GAAOC,IACX,OAAO,UAAS2U,GASd,GALA5U,EAAKsV,GAAmB,KAKpBtV,EAAK2J,IAAuBiL,EAAhC,CAEA5U,EAAK2J,EAAqBiL,CAM1B,IAAIW,EACJ,KACEA,EAASnK,EAAiBwJ,EAAIW,QAC9B,MAAOpV,GACPoV,EAAS,YAGXvV,EAAK2R,mBACH6D,SAAU,MAAQH,EAClBpS,QAASsS,OAUfE,GAAuB,WACrB,GAAIzV,GAAOC,KACTyV,EAAmB,GAKrB,OAAO,UAASd,GACd,GAAIW,EACJ,KACEA,EAASX,EAAIW,OACb,MAAOpV,GAGP,OAEF,GAAIwV,GAAUJ,GAAUA,EAAOI,OAK/B,IACGA,IACY,UAAZA,GAAmC,aAAZA,GAA2BJ,EAAOK,mBAF5D,CAQA,GAAIC,GAAU7V,EAAKsV,EACdO,IACH7V,EAAK8V,GAAwB,SAASlB,GAExCmB,aAAaF,GACb7V,EAAKsV,GAAmBb,WAAW,WACjCzU,EAAKsV,GAAmB,MACvBI,MAUPM,GAAmB,SAASC,EAAMC,GAChC,GAAIC,GAAY5K,EAAStL,KAAK2J,EAAUG,MACpCqM,EAAW7K,EAAS2K,GACpBG,EAAa9K,EAAS0K,EAK1BhW,MAAK6J,EAAYoM,EAIbC,EAAUG,WAAaF,EAASE,UAAYH,EAAUI,OAASH,EAASG,OAC1EL,EAAKE,EAASI,UACZL,EAAUG,WAAaD,EAAWC,UAAYH,EAAUI,OAASF,EAAWE,OAC9EN,EAAOI,EAAWG,UAEpBvW,KAAK0R,mBACH6D,SAAU,aACVhT,MACE0T,GAAIA,EACJD,KAAMA,MAKZQ,EAAwB,WACtB,GAAIzW,GAAOC,IACXD,GAAK0W,GAA4BvQ,SAASvB,UAAUC,SAEpDsB,SAASvB,UAAUC,SAAW,WAC5B,MAAoB,kBAAT5E,OAAuBA,KAAKgP,EAC9BjP,EAAK0W,GAA0BtQ,MAAMnG,KAAKmP,EAAUrJ,WAEtD/F,EAAK0W,GAA0BtQ,MAAMnG,KAAM8F,aAItDlE,EAA0B,WACpB5B,KAAKyW,KAEPvQ,SAASvB,UAAUC,SAAW5E,KAAKyW,KAQvCC,EAAqB,WAKnB,QAASC,GAAWC,GAClB,MAAO,UAASC,EAAI1W,GAKlB,IAAK,GADDyF,GAAO,GAAIkR,OAAMhR,UAAU9E,QACtBL,EAAI,EAAGA,EAAIiF,EAAK5E,SAAUL,EACjCiF,EAAKjF,GAAKmF,UAAUnF,EAEtB,IAAIoW,GAAmBnR,EAAK,EAQ5B,OAPIa,GAAWsQ,KACbnR,EAAK,GAAK7F,EAAKyD,KAAKuT,IAMlBH,EAAKzQ,MACAyQ,EAAKzQ,MAAMnG,KAAM4F,GAEjBgR,EAAKhR,EAAK,GAAIA,EAAK,KAOhC,QAASoR,GAAgBlX,GACvB,GAAImX,GAAQtP,EAAQ7H,IAAW6H,EAAQ7H,GAAQ6E,SAC3CsS,IAASA,EAAMC,gBAAkBD,EAAMC,eAAe,sBACxD3L,EACE0L,EACA,mBACA,SAASL,GACP,MAAO,UAASxB,EAASyB,EAAIM,EAASC,GAEpC,IACMP,GAAMA,EAAGQ,cACXR,EAAGQ,YAActX,EAAKyD,KAAKqT,EAAGQ,cAEhC,MAAOC,IAMT,GAAIC,GAAQC,EAAcC,CA6B1B,OA1BEjP,IACAA,EAAgByE,MACJ,gBAAXnN,GAAuC,SAAXA,KAI7B0X,EAAezX,EAAK8V,GAAwB,SAC5C4B,EAAkB1X,EAAK2X,KACvBH,EAAS,SAAS5C,GAIhB,GAAKA,EAAL,CAEA,GAAID,EACJ,KACEA,EAAYC,EAAI5R,KAChB,MAAO7C,GAGP,OAEF,MAAkB,UAAdwU,EAA8B8C,EAAa7C,GACxB,aAAdD,EAAiC+C,EAAgB9C,GAArD,UAGFiC,EAAK7V,KACVf,KACAoV,EACArV,EAAKyD,KAAKqT,EAAIjI,OAAW2I,GACzBJ,EACAC,KAINO,GAEFpM,EACE0L,EACA,sBACA,SAASL,GACP,MAAO,UAASjC,EAAKkC,EAAIM,EAASC,GAChC,IACEP,EAAKA,IAAOA,EAAG5H,EAAoB4H,EAAG5H,EAAoB4H,GAC1D,MAAO3W,IAGT,MAAO0W,GAAK7V,KAAKf,KAAM2U,EAAKkC,EAAIM,EAASC,KAG7CO,IAvGN,GAAI5X,GAAOC,KAEP2X,EAAkB5X,EAAKyJ,EA2BvBhB,EAAkBxI,KAAKyH,EAAee,eA+E1C+C,GAAK5D,EAAS,aAAcgP,EAAYgB,GACxCpM,EAAK5D,EAAS,cAAegP,EAAYgB,GACrChQ,EAAQiQ,uBACVrM,EACE5D,EACA,wBACA,SAASiP,GACP,MAAO,UAASiB,GACd,MAAOjB,GAAK7W,EAAKyD,KAAKqU,MAG1BF,EAqCJ,KAAK,GA/BDG,IACF,cACA,SACA,OACA,mBACA,iBACA,oBACA,kBACA,cACA,aACA,qBACA,cACA,aACA,iBACA,eACA,kBACA,cACA,cACA,eACA,qBACA,SACA,YACA,eACA,gBACA,YACA,kBACA,SACA,iBACA,4BACA,wBAEOnX,EAAI,EAAGA,EAAImX,EAAa9W,OAAQL,IACvCqW,EAAgBc,EAAanX,KAajCoX,EAAwB,WAMtB,QAASC,GAASC,EAAMjL,GAClBiL,IAAQjL,IAAOvG,EAAWuG,EAAIiL,KAChC1M,EAAKyB,EAAKiL,EAAM,SAASrB,GACvB,MAAO7W,GAAKyD,KAAKoT,KARvB,GAAI7W,GAAOC,KACPwI,EAAkBxI,KAAKyH,EAAee,gBAEtCmP,EAAkB5X,EAAKyJ,CAU3B,IAAIhB,EAAgBwE,KAAO,kBAAoBrF,GAAS,CACtD,GAAIuQ,GAAWvQ,EAAQwQ,gBAAkBxQ,EAAQwQ,eAAexT,SAChE4G,GACE2M,EACA,OACA,SAASE,GACP,MAAO,UAASvP,EAAQwI,GAYtB,MARI7G,GAAS6G,IAAQA,EAAIgH,QAAQtY,EAAKuH,UACpCtH,KAAKsY,IACHzP,OAAQA,EACRwI,IAAKA,EACLkH,YAAa,OAIVH,EAASjS,MAAMnG,KAAM8F,aAGhC6R,GAGFpM,EACE2M,EACA,OACA,SAASM,GACP,MAAO,YAIL,QAASC,KACP,GAAIzL,EAAIsL,IAAkC,IAAnBtL,EAAI0L,WAAkB,CAC3C,IAGE1L,EAAIsL,GAAYC,YAAcvL,EAAI2L,OAClC,MAAOzY,IAITH,EAAK2R,mBACH3O,KAAM,OACNwS,SAAU,MACVhT,KAAMyK,EAAIsL,MAMhB,IAAK,GArBDtL,GAAMhN,KAoBN4Y,GAAS,SAAU,UAAW,cACzBC,EAAI,EAAGA,EAAID,EAAM5X,OAAQ6X,IAChCb,EAASY,EAAMC,GAAI7L,EAiBrB,OAdI,sBAAwBA,IAAOvG,EAAWuG,EAAI8L,oBAChDvN,EACEyB,EACA,qBACA,SAAS4J,GACP,MAAO7W,GAAKyD,KAAKoT,EAAMhI,OAAW6J,KAMtCzL,EAAI8L,mBAAqBL,EAGpBD,EAASrS,MAAMnG,KAAM8F,aAGhC6R,GAIAnP,EAAgBwE,KAAOxB,KACzBD,EACE5D,EACA,QACA,SAASoR,GACP,MAAO,YAKL,IAAK,GADDnT,GAAO,GAAIkR,OAAMhR,UAAU9E,QACtBL,EAAI,EAAGA,EAAIiF,EAAK5E,SAAUL,EACjCiF,EAAKjF,GAAKmF,UAAUnF,EAGtB,IAEI0Q,GAFA2H,EAAapT,EAAK,GAClBiD,EAAS,KAeb,IAZ0B,gBAAfmQ,GACT3H,EAAM2H,EACG,WAAarR,IAAWqR,YAAsBrR,GAAQsR,SAC/D5H,EAAM2H,EAAW3H,IACb2H,EAAWnQ,SACbA,EAASmQ,EAAWnQ,SAGtBwI,EAAM,GAAK2H,EAIT3H,EAAIgH,QAAQtY,EAAKuH,QACnB,MAAOyR,GAAU5S,MAAMnG,KAAM4F,EAG3BA,GAAK,IAAMA,EAAK,GAAGiD,SACrBA,EAASjD,EAAK,GAAGiD,OAGnB,IAAIqQ,IACFrQ,OAAQA,EACRwI,IAAKA,EACLkH,YAAa,KAGf,OAAOQ,GACJ5S,MAAMnG,KAAM4F,GACZuT,KAAK,SAASC,GASb,MARAF,GAAUX,YAAca,EAAST,OAEjC5Y,EAAK2R,mBACH3O,KAAM,OACNwS,SAAU,QACVhT,KAAM2W,IAGDE,IAER,SAAS,SAAS9B,GASjB,KAPAvX,GAAK2R,mBACH3O,KAAM,OACNwS,SAAU,QACVhT,KAAM2W,EACN3T,MAAO,UAGH+R,MAIdK,GAMAnP,EAAgByE,KAAOjN,KAAK6G,IAC1BE,EAAUiJ,kBACZjJ,EAAUiJ,iBAAiB,QAASjQ,EAAK8V,GAAwB,UAAU,GAC3E9O,EAAUiJ,iBAAiB,WAAYjQ,EAAK2X,MAAyB,IAC5D3Q,EAAUsS,cAEnBtS,EAAUsS,YAAY,UAAWtZ,EAAK8V,GAAwB,UAC9D9O,EAAUsS,YAAY,aAActZ,EAAK2X,OAQ7C,IAAI4B,GAAS3R,EAAQ2R,OACjBC,EAAsBD,GAAUA,EAAOE,KAAOF,EAAOE,IAAIC,QACzDC,GACDH,GACD5R,EAAQgS,SACRhS,EAAQgS,QAAQC,WAChBjS,EAAQgS,QAAQE,YAClB,IAAIrR,EAAgBoB,UAAY8P,EAAwB,CAEtD,GAAII,GAAgBnS,EAAQoS,UAC5BpS,GAAQoS,WAAa,WACnB,GAAIC,GAAcja,EAAK4J,EAAUG,IAGjC,IAFA/J,EAAKka,GAAkBla,EAAK8J,EAAWmQ,GAEnCF,EACF,MAAOA,GAAc3T,MAAMnG,KAAM8F,WAIrC,IAAIoU,GAA6B,SAASC,GAGxC,MAAO,YACL,GAAI9I,GAAMvL,UAAU9E,OAAS,EAAI8E,UAAU,GAAK8I,MAQhD,OALIyC,IAEFtR,EAAKka,GAAkBla,EAAK8J,EAAWwH,EAAM,IAGxC8I,EAAiBhU,MAAMnG,KAAM8F,YAIxCyF,GAAK5D,EAAQgS,QAAS,YAAaO,EAA4BvC,GAC/DpM,EAAK5D,EAAQgS,QAAS,eAAgBO,EAA4BvC,GAGpE,GAAInP,EAAgBlD,SAAW,WAAaqC,IAAWrC,QAAQ8U,IAAK,CAElE,GAAIC,GAAwB,SAAStU,EAAKxD,GACxCxC,EAAK2R,mBACH1O,QAAS+C,EACTR,MAAOhD,EAAKgD,MACZgQ,SAAU,YAId5K,IAAM,QAAS,OAAQ,OAAQ,QAAS,OAAQ,SAAS8J,EAAGlP,GAC1DqG,EAAkBtG,QAASC,EAAO8U,OAKxCC,EAAkB,WAGhB,IADA,GAAIC,GACGva,KAAKwJ,EAAiBxI,QAAQ,CACnCuZ,EAAUva,KAAKwJ,EAAiBwI,OAEhC,IAAIL,GAAM4I,EAAQ,GAChBzW,EAAOyW,EAAQ,GACf3D,EAAO2D,EAAQ,EAEjB5I,GAAI7N,GAAQ8S,IAIhB4D,EAAiB,WAEf,IAAK,GAAI3R,KAAU7I,MAAKqJ,EACtBrJ,KAAKoJ,EAAiBP,GAAU7I,KAAKqJ,EAAwBR,IAIjE4R,EAAe,WACb,GAAI1a,GAAOC,IAGX2K,GAAK3K,KAAKsJ,EAAU,SAASmL,EAAGxC,GAC9B,GAAIyI,GAAYzI,EAAO,GACnBrM,EAAOqM,EAAO,EAClByI,GAAUvU,MAAMpG,GAAOA,GAAM4a,OAAO/U,OAIxCgV,EAAW,SAASC,GAClB,GAAIC,GAAI/O,EAAWlJ,KAAKgY,GACtBzO,KACAzL,EAAI,CAEN,KACE,KAAOA,KAAKyL,EAAIP,EAAQlL,IAAMma,EAAEna,IAAM,GACtC,MAAOT,GACP,KAAM,IAAI+E,GAAiB,gBAAkB4V,GAG/C,GAAIzO,EAAImC,OAASvO,KAAKyH,EAAesT,eACnC,KAAM,IAAI9V,GACR,iFAIJ,OAAOmH,IAGT4O,EAAkB,SAASjN,GAEzB,GAAIgG,GAAe,KAAOhG,EAAIuI,MAAQvI,EAAIkN,KAAO,IAAMlN,EAAIkN,KAAO,GAKlE,OAHIlN,GAAIsI,WACNtC,EAAehG,EAAIsI,SAAW,IAAMtC,GAE/BA,GAGTmH,EAAyB,WAElBlb,KAAKiJ,GACRjJ,KAAKyQ,EAAiBtK,MAAMnG,KAAM8F,YAItCqV,EAAkB,SAASC,EAAW/O,GACpC,GAAIiF,GAAStR,KAAKuR,EAAe6J,EAAW/O,EAE5CrM,MAAKqb,EAAc,UACjBD,UAAWA,EACX/O,QAASA,IAGXrM,KAAKsb,GACHF,EAAUtX,KACVsX,EAAUpY,QACVoY,EAAU/J,IACV+J,EAAUG,OACVjK,EACAjF,IAIJmP,EAAgB,SAASJ,EAAW/O,GAClC,GAAItM,GAAOC,KACPsR,IACJ,IAAI8J,EAAU7K,OAAS6K,EAAU7K,MAAMvP,SACrC2J,EAAKyQ,EAAU7K,MAAO,SAAS5P,EAAG4P,GAChC,GAAIkL,GAAQ1b,EAAK2b,GAAgBnL,EAAO6K,EAAU/J,IAC9CoK,IACFnK,EAAO5E,KAAK+O,KAKZpP,GAAWA,EAAQ8D,gBACrB,IAAK,GAAI0I,GAAI,EAAGA,EAAIxM,EAAQ8D,gBAAkB0I,EAAIvH,EAAOtQ,OAAQ6X,IAC/DvH,EAAOuH,GAAG8C,QAAS,CAKzB,OADArK,GAASA,EAAOzL,MAAM,EAAG7F,KAAKyH,EAAec,kBAI/CqT,GAAiB,SAASH,EAAOI,GAE/B,GAAIC,IACFC,SAAUN,EAAMpK,IAChBkK,OAAQE,EAAMO,KACdC,MAAOR,EAAMS,OACbC,WAAUV,EAAM9M,MAAQ,IAuB1B,OAfK8M,GAAMpK,MACTyK,EAAWC,SAAWF,GAGxBC,EAAWH,SAGN3b,KAAKyH,EAAeQ,aAAaiJ,OACjClR,KAAKyH,EAAeQ,aAAaiJ,KAAK4K,EAAWC,WAEpD,qBAAqB7K,KAAK4K,EAAW,cAErC,qBAAqB5K,KAAK4K,EAAWC,WAGhCD,GAGTM,GAAmB,SAASrZ,EAAMC,EAASoO,EAASmK,EAAQjK,EAAQjF,GAClE,GAAIgQ,IAAmBtZ,EAAOA,EAAO,KAAO,KAAOC,GAAW,GAC9D,KACIhD,KAAKyH,EAAeK,aAAaoJ,OAClClR,KAAKyH,EAAeK,aAAaoJ,KAAKlO,KACrChD,KAAKyH,EAAeK,aAAaoJ,KAAKmL,GAH1C,CAQA,GAAIhM,EAoBJ,IAlBIiB,GAAUA,EAAOtQ,QACnBoQ,EAAUE,EAAO,GAAGyK,UAAY3K,EAGhCE,EAAOE,UACPnB,GAAciB,OAAQA,IACbF,IACTf,GACEiB,SAEIyK,SAAU3K,EACVmK,OAAQA,EACRI,QAAQ,QAOZ3b,KAAKyH,EAAeM,WAAWmJ,OACjClR,KAAKyH,EAAeM,WAAWmJ,KAAKE,OAMlCpR,KAAKyH,EAAeO,cAAckJ,MACnClR,KAAKyH,EAAeO,cAAckJ,KAAKE,IAF1C,CAOA,GAAI7O,GAAOqI,GAGPlI,WACEC,SAEII,KAAMA,EACND,MAAOE,EACPqN,WAAYA,KAIlBiM,YAAalL,GAEf/E,EAIFrM,MAAKyR,EAAMlP,MAGbga,GAAa,SAASha,GAGpB,GAAIsK,GAAM7M,KAAKyH,EAAeY,gBAI9B,IAHI9F,EAAKS,UACPT,EAAKS,QAAU6H,EAAStI,EAAKS,QAAS6J,IAEpCtK,EAAKG,UAAW,CAClB,GAAIA,GAAYH,EAAKG,UAAUC,OAAO,EACtCD,GAAUI,MAAQ+H,EAASnI,EAAUI,MAAO+J,GAG9C,GAAI2P,GAAUja,EAAKia,OAanB,OAZIA,KACEA,EAAQnL,MACVmL,EAAQnL,IAAMxG,EAAS2R,EAAQnL,IAAKrR,KAAKyH,EAAea,eAEtDkU,EAAQC,UACVD,EAAQC,QAAU5R,EAAS2R,EAAQC,QAASzc,KAAKyH,EAAea,gBAIhE/F,EAAKma,aAAena,EAAKma,YAAY/Z,QACvC3C,KAAK2c,GAAiBpa,EAAKma,aAEtBna,GAMTqa,GAAkB,SAASF,GAQzB,IAAK,GAJHG,GACAjL,EACArP,EAHEua,GAAY,KAAM,OAAQ,OAKrBnc,EAAI,EAAGA,EAAI+b,EAAY/Z,OAAO3B,SAAUL,EAE/C,GADAiR,EAAQ8K,EAAY/Z,OAAOhC,GAExBiR,EAAMsF,eAAe,SACrB5M,EAASsH,EAAMrP,QAChBuI,EAAa8G,EAAMrP,MAHrB,CAOAA,EAAOqI,KAAgBgH,EAAMrP,KAC7B,KAAK,GAAIsW,GAAI,EAAGA,EAAIiE,EAAS9b,SAAU6X,EACrCgE,EAAUC,EAASjE,GACftW,EAAK2U,eAAe2F,IAAYta,EAAKsa,KACvCta,EAAKsa,GAAWhS,EAAStI,EAAKsa,GAAU7c,KAAKyH,EAAea,cAGhEoU,GAAY/Z,OAAOhC,GAAG4B,KAAOA,IAIjCwa,GAAc,WACZ,GAAK/c,KAAKgH,GAAkBhH,KAAK6G,EAAjC,CACA,GAAImW,KAkBJ,OAhBIhd,MAAKgH,GAAiBC,EAAWgW,YACnCD,EAAS9U,SACPgV,aAAcjW,EAAWgW,YAKzBtV,EAAQiC,UAAYjC,EAAQiC,SAASE,OACvCkT,EAAS3L,IAAM1J,EAAQiC,SAASE,MAG9B9J,KAAK6G,GAAgBE,EAAUoW,WAC5BH,EAAS9U,UAAS8U,EAAS9U,YAChC8U,EAAS9U,QAAQuU,QAAU1V,EAAUoW,UAGhCH,IAGTI,EAAe,WACbpd,KAAKqd,GAAmB,EACxBrd,KAAKsd,GAAgB,MAGvBC,GAAgB,WACd,MAAOvd,MAAKqd,IAAoBhX,IAAQrG,KAAKsd,GAAgBtd,KAAKqd,IAYpEG,GAAe,SAASC,GACtB,GAAIC,GAAO1d,KAAKmH,CAEhB,UACGuW,GACDD,EAAQza,UAAY0a,EAAK1a,SACzBya,EAAQnB,cAAgBoB,EAAKpB,eAK3BmB,EAAQpN,YAAcqN,EAAKrN,WACtBhF,EAAiBoS,EAAQpN,WAAYqN,EAAKrN,aACxCoN,EAAQ/a,YAAagb,EAAKhb,WAE5B0I,EAAgBqS,EAAQ/a,UAAWgb,EAAKhb,aAMnDib,GAAkB,SAASnB,GAEzB,IAAIxc,KAAK4d,KAAT,CAIA,GAAIjF,GAAS6D,EAAQ7D,MAKrB,IAAiB,MAAXA,GAA6B,MAAXA,GAA6B,MAAXA,EAA1C,CAEA,GAAIkF,EACJ,KAIIA,EADErS,IACMgR,EAAQtU,QAAQ4V,IAAI,eAEpBtB,EAAQuB,kBAAkB,eAIpCF,EAA8B,IAAtBG,SAASH,EAAO,IACxB,MAAO3d,IAITF,KAAKqd,GAAmBQ,EAEpBA,EAEwB,EAAxB7d,KAAKqd,IAAwB,IAEjCrd,KAAKsd,GAAgBjX,OAGvB4X,EAAO,SAAS1b,GACd,GAAIgK,GAAgBvM,KAAKyH,EAErByW,GACAC,QAASne,KAAKuH,EACdtB,OAAQsG,EAActG,OACtBmY,SAAU,cAEZpB,EAAWhd,KAAKqe,IAsDlB,IApDIrB,IACFkB,EAAS1B,QAAUQ,GAIjBza,EAAK4N,sBAAuB5N,GAAK4N,eAErC5N,EAAOqI,EAAYsT,EAAU3b,GAG7BA,EAAKgQ,KAAO3H,EAAYA,KAAgB5K,KAAKwH,EAAe+K,MAAOhQ,EAAKgQ,MACxEhQ,EAAKN,MAAQ2I,EAAYA,KAAgB5K,KAAKwH,EAAevF,OAAQM,EAAKN,OAG1EM,EAAKN,MAAM,oBAAsBoE,IAAQrG,KAAKuJ,EAE1CvJ,KAAKyJ,GAAgBzJ,KAAKyJ,EAAazI,OAAS,IAGlDuB,EAAKma,aACH/Z,UAAWkD,MAAM9E,KAAKf,KAAKyJ,EAAc,KAIzCzJ,KAAKwH,EAAe6G,OAEtB9L,EAAK8L,KAAOrO,KAAKwH,EAAe6G,MAI9B9B,EAAcqG,cAAarQ,EAAKqQ,YAAcrG,EAAcqG,aAG5DrG,EAAc7E,UAASnF,EAAKmF,QAAU6E,EAAc7E,SAGpD6E,EAAc+R,aAAY/b,EAAKgc,YAAchS,EAAc+R,YAE/D/b,EAAOvC,KAAKwe,GAAcjc,GAG1BmC,OAAOoM,KAAKvO,GAAMkc,QAAQ,SAASjS,IAChB,MAAbjK,EAAKiK,IAA8B,KAAdjK,EAAKiK,IAAe9B,EAAcnI,EAAKiK,YACvDjK,GAAKiK,KAIZ/F,EAAW8F,EAAcuG,gBAC3BvQ,EAAOgK,EAAcuG,aAAavQ,IAASA,GAIxCA,IAAQmI,EAAcnI,MAMzBkE,EAAW8F,EAAc0G,qBACxB1G,EAAc0G,mBAAmB1Q,IAOpC,MAAIvC,MAAK4d,SACP5d,MAAKsM,EAAU,OAAQ,uCAAwC/J,QAIzB,gBAA7BgK,GAAc7D,WACnBkE,KAAK8R,SAAWnS,EAAc7D,YAChC1I,KAAK2e,GAAsBpc,GAG7BvC,KAAK2e,GAAsBpc,KAI/Bqc,GAAe,SAASrc,GACtB,MAAOoJ,GAASpJ,EAAMvC,KAAKyH,EAAekB,eAG5CkW,GAAU,WACR,MAAO3T,MAGT4T,GAAuB,SAASvc,EAAMiD,GACpC,GAAIzF,GAAOC,KACPuM,EAAgBvM,KAAKyH,CAEzB,IAAKzH,KAAKsN,UAAV,CAQA,GALA/K,EAAOvC,KAAK+e,GAAYxc,IAKnBvC,KAAKyH,EAAeuX,iBAAmBhf,KAAKif,GAAc1c,GAE7D,WADAvC,MAAKsM,EAAU,OAAQ,+BAAgC/J,EAOzDvC,MAAKoH,EAAe7E,EAAK2c,WAAa3c,EAAK2c,SAAWlf,KAAKmf,MAG3Dnf,KAAKmH,EAAY5E,EAEjBvC,KAAKsM,EAAU,QAAS,uBAAwB/J,EAEhD,IAAI6c,IACFC,eAAgB,IAChBC,cAAe,YAActf,KAAKkM,QAClCqT,WAAYvf,KAAKsH,EAGftH,MAAKsO,IACP8Q,EAAKI,cAAgBxf,KAAKsO,EAG5B,IAAI5L,GAAYH,EAAKG,WAAaH,EAAKG,UAAUC,OAAO,EAItD3C,MAAKyH,EAAee,iBACpBxI,KAAKyH,EAAee,gBAAgB0E,QAEpClN,KAAK0R,mBACH6D,SAAU,SACVvS,QAASN,GACJA,EAAUK,KAAOL,EAAUK,KAAO,KAAO,IAAML,EAAUI,MAC1DP,EAAKS,QACTkc,SAAU3c,EAAK2c,SACf3Z,MAAOhD,EAAKgD,OAAS,SAIzB,IAAI8L,GAAMrR,KAAKyO,GACdlC,EAAc4G,WAAanT,KAAKyf,IAAc1e,KAAKf,MAClDqR,IAAKA,EACL+N,KAAMA,EACN7c,KAAMA,EACN8J,QAASE,EACTmT,UAAW,WACT3f,EAAKgK,IAELhK,EAAKsb,EAAc,WACjB9Y,KAAMA,EACN4R,IAAK9C,IAEP7L,GAAYA,KAEdma,QAAS,SAAiBpb,GACxBxE,EAAKuM,EAAU,QAAS,mCAAoC/H,GAExDA,EAAMiY,SACRzc,EAAK6f,GAAiBrb,EAAMiY,SAG9Bzc,EAAKsb,EAAc,WACjB9Y,KAAMA,EACN4R,IAAK9C,IAEP9M,EAAQA,GAAS,GAAI3D,OAAM,sDAC3B4E,GAAYA,EAASjB,QAK3Bsb,GAAc,SAASC,GAErB,GAAIzO,GAAMyO,EAAKzO,IAAM,IAAMpG,EAAU6U,EAAKV,MAEtCW,EAAmB,KACnBC,IAUJ,IARIF,EAAKzT,QAAQnE,UACf6X,EAAmB/f,KAAKigB,GAAcH,EAAKzT,QAAQnE,UAGjD4X,EAAKzT,QAAQ6T,kBACfF,EAA2BhgB,KAAKigB,GAAcH,EAAKzT,QAAQ6T,kBAGzD1U,IAAiB,CACnBwU,EAAyB3L,KAAOzN,EAAUkZ,EAAKvd,KAE/C,IAAI4d,GAAsBvV,KAAgB5K,KAAK4I,GAC3CwX,EAAexV,EAAYuV,EAAqBH,EAMpD,OAJID,KACFK,EAAalY,QAAU6X,GAGlBpY,EACJ0Y,MAAMhP,EAAK+O,GACXjH,KAAK,SAASC,GACb,GAAIA,EAASkH,GACXR,EAAKJ,WAAaI,EAAKJ,gBAClB,CACL,GAAInb,GAAQ,GAAI3D,OAAM,sBAAwBwY,EAAST,OAGvDpU,GAAMiY,QAAUpD,EAChB0G,EAAKH,SAAWG,EAAKH,QAAQpb,MAGhC,SAAS,WACRub,EAAKH,SACHG,EAAKH,QAAQ,GAAI/e,OAAM,6CAI/B,GAAI4b,GAAU7U,EAAQwQ,gBAAkB,GAAIxQ,GAAQwQ,cACpD,IAAKqE,EAAL,CAGA,GAAI+D,GAAU,mBAAqB/D,IAAqC,mBAAnBgE,eAEhDD,KAED,mBAAqB/D,GACvBA,EAAQ1D,mBAAqB,WAC3B,GAA2B,IAAvB0D,EAAQ9D,WAEL,GAAuB,MAAnB8D,EAAQ7D,OACjBmH,EAAKJ,WAAaI,EAAKJ,gBAClB,IAAII,EAAKH,QAAS,CACvB,GAAIrI,GAAM,GAAI1W,OAAM,sBAAwB4b,EAAQ7D,OACpDrB,GAAIkF,QAAUA,EACdsD,EAAKH,QAAQrI,MAIjBkF,EAAU,GAAIgE,gBAGdnP,EAAMA,EAAIoP,QAAQ,WAAY,IAG1BX,EAAKJ,YACPlD,EAAQkE,OAASZ,EAAKJ,WAEpBI,EAAKH,UACPnD,EAAQmE,QAAU,WAChB,GAAIrJ,GAAM,GAAI1W,OAAM,oCACpB0W,GAAIkF,QAAUA,EACdsD,EAAKH,QAAQrI,MAKnBkF,EAAQoE,KAAK,OAAQvP,GAEjB0O,GACFpV,EAAKoV,EAAkB,SAASvT,EAAK1J,GACnC0Z,EAAQqE,iBAAiBrU,EAAK1J,KAIlC0Z,EAAQsE,KAAKla,EAAUkZ,EAAKvd,UAG9Bwe,GAAe,SAASC,GACtB,GAAIC,KAEJ,KAAK,GAAIzU,KAAOwU,GACd,GAAIA,EAAK9J,eAAe1K,GAAM,CAC5B,GAAI1J,GAAQke,EAAKxU,EACjByU,GAAUzU,GAAwB,kBAAV1J,GAAuBA,IAAUA,EAI7D,MAAOme,IAGTC,EAAW,SAAS3b,GAGhBvF,KAAKqJ,EAAwB9D,KAC5BvF,KAAKmM,OAASnM,KAAKyH,EAAe0E,QAGnCjG,SAASvB,UAAUwB,MAAMpF,KACvBf,KAAKqJ,EAAwB9D,GAC7BvF,KAAKoJ,KACFvD,MAAM9E,KAAK+E,UAAW,KAK/Bqb,EAAe,SAAS3U,EAAKkC,GACvB5H,EAAY4H,SACP1O,MAAKwH,EAAegF,GAE3BxM,KAAKwH,EAAegF,GAAO5B,EAAY5K,KAAKwH,EAAegF,OAAYkC,KAM7EzO,EAAM0E,UAAUyc,QAAUnhB,EAAM0E,UAAUwN,eAC1ClS,EAAM0E,UAAU0c,kBAAoBphB,EAAM0E,UAAUkO,WAEpDpT,EAAOD,QAAUS,IAEdc,KAAKf,KAAuB,mBAAXF,QAAyBA,OAAyB,mBAATC,MAAuBA,KAAyB,mBAAXF,QAAyBA,aACxHyhB,GAAK,GAAGC,GAAK,GAAGvc,EAAI,EAAEG,EAAI,EAAE9B,EAAI,EAAEme,EAAI,IAAIpe,GAAG,SAASlC,EAAQzB,EAAOD,IACxE,SAAWM,GAOX,GAAI2hB,GAAmBvgB,EAAQ,GAG3ByG,EACgB,mBAAX9H,QACHA,OACkB,mBAAXC,GAAyBA,EAAyB,mBAATC,MAAuBA,QACzE2hB,EAAS/Z,EAAQ1H,MAEjBA,EAAQ,GAAIwhB,EAQhBxhB,GAAM0hB,WAAa,WAEjB,MADAha,GAAQ1H,MAAQyhB,EACTzhB,GAGTA,EAAMsT,YAEN9T,EAAOD,QAAUS,EAoCjBR,EAAOD,QAAQoiB,OAASH,IAErB1gB,KAAKf,KAAuB,mBAAXF,QAAyBA,OAAyB,mBAATC,MAAuBA,KAAyB,mBAAXF,QAAyBA,aACxHuG,EAAI,IAAI/C,GAAG,SAASnC,EAAQzB,EAAOD,IACtC,SAAWM,GAQX,QAASwK,GAASuX,GAChB,MAAuB,gBAATA,IAA8B,OAATA,EAKrC,QAASxX,GAAQvH,GACf,OAAQ4B,OAAOC,UAAUC,SAAS7D,KAAK+B,IACrC,IAAK,iBACH,OAAO,CACT,KAAK,qBACH,OAAO,CACT,KAAK,wBACH,OAAO,CACT,SACE,MAAOA,aAAiBlC,QAI9B,QAASsJ,GAAapH,GACpB,MAAiD,wBAA1C4B,OAAOC,UAAUC,SAAS7D,KAAK+B,GAGxC,QAASqH,GAAWrH,GAClB,MAAiD,sBAA1C4B,OAAOC,UAAUC,SAAS7D,KAAK+B,GAGxC,QAASsH,GAAetH,GACtB,MAAiD,0BAA1C4B,OAAOC,UAAUC,SAAS7D,KAAK+B,GAGxC,QAASgE,GAAY+a,GACnB,MAAgB,UAATA,EAGT,QAASpb,GAAWob,GAClB,MAAuB,kBAATA,GAGhB,QAAStX,GAAcsX,GACrB,MAAgD,oBAAzCnd,OAAOC,UAAUC,SAAS7D,KAAK8gB,GAGxC,QAASrX,GAASqX,GAChB,MAAgD,oBAAzCnd,OAAOC,UAAUC,SAAS7D,KAAK8gB,GAGxC,QAASpX,GAAQoX,GACf,MAAgD,mBAAzCnd,OAAOC,UAAUC,SAAS7D,KAAK8gB,GAGxC,QAASnX,GAAcmX,GACrB,IAAKtX,EAAcsX,GAAO,OAAO,CAEjC,KAAK,GAAIpN,KAAKoN,GACZ,GAAIA,EAAK3K,eAAezC,GACtB,OAAO,CAGX,QAAO,EAGT,QAASqN,KACP,IAEE,MADA,IAAIC,YAAW,KACR,EACP,MAAO7hB,GACP,OAAO,GAIX,QAAS8hB,KACP,IAEE,MADA,IAAIC,UAAS,KACN,EACP,MAAO/hB,GACP,OAAO,GAIX,QAASgiB,KACP,IAEE,MADA,IAAIC,cAAa,KACV,EACP,MAAOjiB,GACP,OAAO,GAIX,QAASsL,KACP,KAAM,SAAW7D,IAAU,OAAO,CAElC,KAIE,MAHA,IAAIya,SACJ,GAAInJ,SAAQ,IACZ,GAAIoJ,WACG,EACP,MAAOniB,GACP,OAAO,GAQX,QAAS8I,KACP,IAAKwC,IAAiB,OAAO,CAE7B,KAKE,MAHA,IAAIyN,SAAQ,cACVlQ,eAAgB,YAEX,EACP,MAAO7I,GACP,OAAO,GAIX,QAASoiB,KACP,MAAwC,kBAA1BC,uBAGhB,QAASjgB,GAAgBkD,GACvB,QAASsN,GAAavQ,EAAMiE,GAC1B,GAAIgc,GAAiBhd,EAASjD,IAASA,CACvC,OAAIiE,GACKA,EAASgc,IAAmBA,EAE9BA,EAGT,MAAO1P,GAGT,QAASnI,GAAKgH,EAAKnM,GACjB,GAAI7E,GAAGkY,CAEP,IAAI/R,EAAY6K,EAAI3Q,QAClB,IAAKL,IAAKgR,GACJ5G,EAAO4G,EAAKhR,IACd6E,EAASzE,KAAK,KAAMJ,EAAGgR,EAAIhR,QAK/B,IADAkY,EAAIlH,EAAI3Q,OAEN,IAAKL,EAAI,EAAGA,EAAIkY,EAAGlY,IACjB6E,EAASzE,KAAK,KAAMJ,EAAGgR,EAAIhR,IAMnC,QAASiK,GAAY6X,EAAMC,GACzB,MAAKA,IAGL/X,EAAK+X,EAAM,SAASlW,EAAK1J,GACvB2f,EAAKjW,GAAO1J,IAEP2f,GALEA,EAgBX,QAAS3X,GAAa6G,GACpB,QAAKjN,OAAOie,UAGLje,OAAOie,SAAShR,GAGzB,QAAS9G,GAASgQ,EAAKhO,GACrB,GAAmB,gBAARA,GACT,KAAM,IAAIjM,OAAM,yDAElB,OAAmB,gBAARia,IAA4B,IAARhO,EACtBgO,EAEFA,EAAI7Z,QAAU6L,EAAMgO,EAAMA,EAAI3X,OAAO,EAAG2J,GAAO,IAUxD,QAAS9B,GAAO6X,EAAQpW,GACtB,MAAO9H,QAAOC,UAAUuS,eAAenW,KAAK6hB,EAAQpW,GAGtD,QAASxB,GAAW6X,GAQlB,IALA,GAGEC,GAHEC,KACFpiB,EAAI,EACJqiB,EAAMH,EAAS7hB,OAGVL,EAAIqiB,EAAKriB,IACdmiB,EAAUD,EAASliB,GACf6J,EAASsY,GAGXC,EAAQrW,KAAKoW,EAAQrC,QAAQ,8BAA+B,SACnDqC,GAAWA,EAAQG,QAE5BF,EAAQrW,KAAKoW,EAAQG,OAIzB,OAAO,IAAIC,QAAOH,EAAQI,KAAK,KAAM,KAGvC,QAASlY,GAAU1K,GACjB,GAAI6iB,KAIJ,OAHAzY,GAAKpK,EAAG,SAASiM,EAAK1J,GACpBsgB,EAAM1W,KAAKkH,mBAAmBpH,GAAO,IAAMoH,mBAAmB9Q,MAEzDsgB,EAAMD,KAAK,KAMpB,QAAS7X,GAAS+F,GAChB,GAAmB,gBAARA,GAAkB,QAC7B,IAAIgS,GAAQhS,EAAIgS,MAAM,kEAGlBC,EAAQD,EAAM,IAAM,GACpBE,EAAWF,EAAM,IAAM,EAC3B,QACEhN,SAAUgN,EAAM,GAChB/M,KAAM+M,EAAM,GACZnV,KAAMmV,EAAM,GACZ9M,SAAU8M,EAAM,GAAKC,EAAQC,GAGjC,QAASrY,KACP,GAAIsY,GAAS7b,EAAQ6b,QAAU7b,EAAQ8b,QAEvC,KAAK3c,EAAY0c,IAAWA,EAAOE,gBAAiB,CAGlD,GAAIC,GAAM,GAAIC,aAAY,EAC1BJ,GAAOE,gBAAgBC,GAGvBA,EAAI,GAAe,KAATA,EAAI,GAAc,MAE5BA,EAAI,GAAe,MAATA,EAAI,GAAe,KAE7B,IAAIE,GAAM,SAASC,GAEjB,IADA,GAAIC,GAAID,EAAIlf,SAAS,IACdmf,EAAE/iB,OAAS,GAChB+iB,EAAI,IAAMA,CAEZ,OAAOA,GAGT,OACEF,GAAIF,EAAI,IACRE,EAAIF,EAAI,IACRE,EAAIF,EAAI,IACRE,EAAIF,EAAI,IACRE,EAAIF,EAAI,IACRE,EAAIF,EAAI,IACRE,EAAIF,EAAI,IACRE,EAAIF,EAAI,IAIV,MAAO,mCAAmClD,QAAQ,QAAS,SAASuD,GAClE,GAAI3jB,GAAqB,GAAhBuM,KAAK8R,SAAiB,EAC7BqF,EAAU,MAANC,EAAY3jB,EAAS,EAAJA,EAAW,CAClC,OAAO0jB,GAAEnf,SAAS,MAYxB,QAASuG,GAAiB8Y,GAWxB,IATA,GAOEC,GAPEC,EAAsB,EACxBC,EAAiB,GACjBC,KACAC,EAAS,EACTtB,EAAM,EACNuB,EAAY,MACZC,EAAYD,EAAUvjB,OAGjBijB,GAAQK,IAAWH,IACxBD,EAAUO,EAAoBR,KAMhB,SAAZC,GACCI,EAAS,GAAKtB,EAAMqB,EAAIrjB,OAASwjB,EAAYN,EAAQljB,QAAUojB,KAKlEC,EAAI3X,KAAKwX,GAETlB,GAAOkB,EAAQljB,OACfijB,EAAOA,EAAKS,UAGd,OAAOL,GAAI7S,UAAU2R,KAAKoB,GAS5B,QAASE,GAAoBR,GAC3B,GACEU,GACAC,EACApY,EACAqY,EACAlkB,EALE0jB,IAOJ,KAAKJ,IAASA,EAAKvO,QACjB,MAAO,EAST,IANA2O,EAAI3X,KAAKuX,EAAKvO,QAAQR,eAClB+O,EAAKpc,IACPwc,EAAI3X,KAAK,IAAMuX,EAAKpc,IAGtB8c,EAAYV,EAAKU,UACbA,GAAana,EAASma,GAExB,IADAC,EAAUD,EAAU7Y,MAAM,OACrBnL,EAAI,EAAGA,EAAIikB,EAAQ5jB,OAAQL,IAC9B0jB,EAAI3X,KAAK,IAAMkY,EAAQjkB,GAG3B,IAAImkB,IAAiB,OAAQ,OAAQ,QAAS,MAC9C,KAAKnkB,EAAI,EAAGA,EAAImkB,EAAc9jB,OAAQL,IACpC6L,EAAMsY,EAAcnkB,GACpBkkB,EAAOZ,EAAKc,aAAavY,GACrBqY,GACFR,EAAI3X,KAAK,IAAMF,EAAM,KAAOqY,EAAO,KAGvC,OAAOR,GAAIlB,KAAK,IAMlB,QAAS6B,GAAgBvkB,EAAGwkB,GAC1B,WAAYxkB,IAAMwkB,GAMpB,QAASC,GAAgBzkB,EAAGwkB,GAC1B,MAAOne,GAAYrG,IAAMqG,EAAYme,GAMvC,QAAS7Z,GAAgBsF,EAAKyU,GAC5B,OAAIH,EAAgBtU,EAAKyU,KAEzBzU,EAAMA,EAAI/N,OAAO,GACjBwiB,EAAMA,EAAIxiB,OAAO,GAEb+N,EAAI3N,OAASoiB,EAAIpiB,MAAQ2N,EAAI5N,QAAUqiB,EAAIriB,SAG3CoiB,EAAgBxU,EAAIL,WAAY8U,EAAI9U,aAEjChF,EAAiBqF,EAAIL,WAAY8U,EAAI9U,cAM9C,QAAShF,GAAiB+Z,EAAQC,GAChC,GAAIL,EAAgBI,EAAQC,GAAS,OAAO,CAE5C,IAAIC,GAAUF,EAAO9T,OACjBiU,EAAUF,EAAO/T,MAGrB,IAAIgU,EAAQtkB,SAAWukB,EAAQvkB,OAAQ,OAAO,CAI9C,KAAK,GADDP,GAAGwkB,EACEtkB,EAAI,EAAGA,EAAI2kB,EAAQtkB,OAAQL,IAGlC,GAFAF,EAAI6kB,EAAQ3kB,GACZskB,EAAIM,EAAQ5kB,GAEVF,EAAEsb,WAAakJ,EAAElJ,UACjBtb,EAAE8a,SAAW0J,EAAE1J,QACf9a,EAAEwb,QAAUgJ,EAAEhJ,OACdxb,EAAE,cAAgBwkB,EAAE,YAEpB,OAAO,CAEX,QAAO,EAUT,QAAS1Z,GAAKoG,EAAK7N,EAAM0hB,EAAaC,GACpC,GAAW,MAAP9T,EAAJ,CACA,GAAIiF,GAAOjF,EAAI7N,EACf6N,GAAI7N,GAAQ0hB,EAAY5O,GACxBjF,EAAI7N,GAAMkL,GAAY,EACtB2C,EAAI7N,GAAMqL,EAAWyH,EACjB6O,GACFA,EAAM/Y,MAAMiF,EAAK7N,EAAM8S,KAU3B,QAAS5Q,GAAS0f,EAAOC,GACvB,IAAKlb,EAAQib,GAAQ,MAAO,EAI5B,KAAK,GAFDE,MAEKjlB,EAAI,EAAGA,EAAI+kB,EAAM1kB,OAAQL,IAChC,IACEilB,EAAOlZ,KAAKmZ,OAAOH,EAAM/kB,KACzB,MAAOT,GACP0lB,EAAOlZ,KAAK,gCAIhB,MAAOkZ,GAAOzC,KAAKwC,GASrB,QAASG,GAAWhjB,GAClB,QAASijB,UAAUjjB,GAAOgJ,MAAM,SAAS9K,OAG3C,QAASglB,GAASljB,GAChB,MAAOgjB,GAAWnf,KAAKC,UAAU9D,IAGnC,QAASmjB,GAAenjB,GACtB,GAAqB,gBAAVA,GAAoB,CAC7B,GAAIojB,GAAY,EAChB,OAAOrb,GAAS/H,EAAOojB,GAClB,GACY,gBAAVpjB,IACU,iBAAVA,IACU,mBAAVA,GAEP,MAAOA,EAGT,IAAIC,GAAO2B,OAAOC,UAAUC,SAAS7D,KAAK+B,EAG1C,OAAa,oBAATC,EAAmC,WAC1B,mBAATA,EAAkC,UACzB,sBAATA,EACKD,EAAMgB,KAAO,cAAgBhB,EAAMgB,KAAO,IAAM,aAElDhB,EAGT,QAASqjB,GAAgBrjB,EAAOsjB,GAC9B,MAAc,KAAVA,EAAoBH,EAAenjB,GAEnCyH,EAAczH,GACT4B,OAAOoM,KAAKhO,GAAOujB,OAAO,SAASC,EAAK9Z,GAE7C,MADA8Z,GAAI9Z,GAAO2Z,EAAgBrjB,EAAM0J,GAAM4Z,EAAQ,GACxCE,OAEAxP,MAAMrM,QAAQ3H,GAChBA,EAAMyjB,IAAI,SAASC,GACxB,MAAOL,GAAgBK,EAAKJ,EAAQ,KAIjCH,EAAenjB,GAGxB,QAAS4I,GAAmB5J,EAAIskB,EAAOK,GACrC,IAAKlc,EAAczI,GAAK,MAAOA,EAE/BskB,GAAyB,gBAAVA,GAAqBM,EAAgCN,EACpEK,EAA2B,gBAAVL,GAAqBO,EAA+BF,CAErE,IAAIG,GAAaT,EAAgBrkB,EAAIskB,EAErC,OAAIJ,GAASpf,EAAUggB,IAAeH,EAC7B/a,EAAmB5J,EAAIskB,EAAQ,GAGjCQ,EAGT,QAASnb,GAAwBqF,EAAMoV,GACrC,GAAoB,gBAATpV,IAAqC,gBAATA,GAAmB,MAAOA,GAAKlM,UACtE,KAAKkS,MAAMrM,QAAQqG,GAAO,MAAO,EAKjC,IAHAA,EAAOA,EAAK+V,OAAO,SAASra,GAC1B,MAAsB,gBAARA,KAEI,IAAhBsE,EAAK9P,OAAc,MAAO,sBAG9B,IADAklB,EAAiC,gBAAdA,GAAyBY,EAA4BZ,EACpEpV,EAAK,GAAG9P,QAAUklB,EAAW,MAAOpV,GAAK,EAE7C,KAAK,GAAIiW,GAAWjW,EAAK9P,OAAQ+lB,EAAW,EAAGA,IAAY,CACzD,GAAIH,GAAa9V,EAAKjL,MAAM,EAAGkhB,GAAU5D,KAAK,KAC9C,MAAIyD,EAAW5lB,OAASklB,GACxB,MAAIa,KAAajW,EAAK9P,OAAe4lB,EAC9BA,EAAa,IAGtB,MAAO,GAGT,QAASjb,GAAS+Z,EAAO/c,GAcvB,QAASqe,GAAeC,GACtB,MAAIxc,GAAQwc,GACHA,EAAYV,IAAI,SAASC,GAC9B,MAAOQ,GAAeR,KAItBjc,EAAc0c,GACTviB,OAAOoM,KAAKmW,GAAaZ,OAAO,SAASC,EAAKY,GAMnD,MAJEZ,GAAIY,GADFC,EAAejW,KAAKgW,GACbE,EAEAJ,EAAeC,EAAYC,IAE/BZ,OAIJW,EA/BT,IAAKxc,EAAQ9B,IAAkB8B,EAAQ9B,IAAyC,IAAxBA,EAAa3H,OACnE,MAAO0kB,EAET,IAEI2B,GAFAF,EAAiBnc,EAAWrC,GAC5Bye,EAAe,UAGnB,KACEC,EAAY1gB,KAAK+L,MAAM9L,EAAU8e,IACjC,MAAO4B,GACP,MAAO5B,GAwBT,MAAOsB,GAAeK,GA5lBxB,GAAIzgB,GAAY1F,EAAQ,IAEpByG,EACgB,mBAAX9H,QACHA,OACkB,mBAAXC,GAAyBA,EAAyB,mBAATC,MAAuBA,QA0dzE2mB,EAAgC,EAEhCC,EAA+B,MAC/BG,EAA4B,EA6HhCrnB,GAAOD,SACL8K,SAAUA,EACVD,QAASA,EACTH,aAAcA,EACdC,WAAYA,EACZC,eAAgBA,EAChBtD,YAAaA,EACbL,WAAYA,EACZ8D,cAAeA,EACfC,SAAUA,EACVC,QAASA,EACTC,cAAeA,EACfoX,mBAAoBA,EACpBE,iBAAkBA,EAClBE,qBAAsBA,EACtB1W,cAAeA,EACfxC,uBAAwBA,EACxBsZ,8BAA+BA,EAC/BhgB,gBAAiBA,EACjBqI,KAAMA,EACNC,YAAaA,EACbC,SAAUA,EACVC,aAAcA,EACdC,OAAQA,EACRC,WAAYA,EACZC,UAAWA,EACXC,MAAOA,EACPC,iBAAkBA,EAClBsZ,oBAAqBA,EACrBrZ,gBAAiBA,EACjBC,iBAAkBA,EAClBC,SAAUA,EACVC,KAAMA,EACNvF,SAAUA,EACV0F,mBAAoBA,EACpBD,wBAAyBA,EACzBE,SAAUA,KAGT5K,KAAKf,KAAuB,mBAAXF,QAAyBA,OAAyB,mBAATC,MAAuBA,KAAyB,mBAAXF,QAAyBA,aACxHyhB,GAAK,KAAKE,GAAG,SAAStgB,EAAQzB,EAAOD,IACxC,SAAWM,GA+BX,QAASynB,KACP,MAAwB,mBAAbvb,WAAiD,MAArBA,SAASpC,SAAyB,GAClEoC,SAASpC,SAASE,KAG3B,QAAS0d,KACP,MAAwB,mBAAbxb,WAAiD,MAArBA,SAASpC,SAAyB,IAGpEoC,SAASpC,SAAS6d,SACrBzb,SAASpC,SAAS6d,OAChBzb,SAASpC,SAASyM,SAClB,KACArK,SAASpC,SAAS8d,UACjB1b,SAASpC,SAASqR,KAAO,IAAMjP,SAASpC,SAASqR,KAAO,KAGtDjP,SAASpC,SAAS6d,QA/C3B,GAAIriB,GAAQlE,EAAQ,GAYhB8I,GACF7B,qBAAqB,EACrBgE,OAAO,GAILxE,EACgB,mBAAX9H,QACHA,OACkB,mBAAXC,GAAyBA,EAAyB,mBAATC,MAAuBA,QAGzE4nB,KAAY9hB,MACZ+hB,EAAmB,IAGnBC,EAAiB,yGA6DrB7d,GAASuD,OAAS,WAUhB,QAASC,GAAUsa,GACjBC,IACAC,EAAStb,KAAKob,GAOhB,QAASG,GAAYH,GACnB,IAAK,GAAInnB,GAAIqnB,EAAShnB,OAAS,EAAGL,GAAK,IAAKA,EACtCqnB,EAASrnB,KAAOmnB,GAClBE,EAASE,OAAOvnB,EAAG,GAQzB,QAASwnB,KACPC,IACAJ,KAOF,QAASK,GAAe9X,EAAO+X,GAC7B,GAAI5lB,GAAY,IAChB,KAAI4lB,GAAkBte,EAAS7B,oBAA/B,CAGA,IAAK,GAAIxH,KAAKqnB,GACZ,GAAIA,EAAS9Q,eAAevW,GAC1B,IACEqnB,EAASrnB,GAAGwF,MAAM,MAAOoK,GAAOoK,OAAOgN,EAAO5mB,KAAK+E,UAAW,KAC9D,MAAOyiB,GACP7lB,EAAY6lB,EAKlB,GAAI7lB,EACF,KAAMA,IAiBV,QAAS8lB,GAAsBziB,EAAKsL,EAAKoX,EAAQC,EAAO5mB,GACtD,GAAIyO,GAAQ,KAER7N,EAAY0C,EAAM8E,aAAapI,GAAMA,EAAGyC,MAAQzC,EAEhDkB,EAAUoC,EAAM8E,aAAanE,GAAOA,EAAI/C,QAAU+C,CAEtD,IAAI4iB,EACF3e,EAASwG,kBAAkBoY,oCACzBD,EACAtX,EACAoX,EACAzlB,GAEF6lB,QACK,IAAInmB,GAAa0C,EAAMiF,QAAQ3H,GAMpC6N,EAAQvG,EAASwG,kBAAkB9N,GACnC2lB,EAAe9X,GAAO,OACjB,CACL,GAOIuY,GAPAlf,GACFyH,IAAKA,EACL2K,KAAMyM,EACNvM,OAAQwM,GAGN5kB,EAAO8K,MAGX,IAAkC,uBAA3BhK,SAAS7D,KAAKiC,GAAgC,CACnD,GAAI8lB,GAAS9lB,EAAQqgB,MAAMwE,EACvBiB,KACFhlB,EAAOglB,EAAO,GACd9lB,EAAU8lB,EAAO,IAIrBlf,EAAS+E,KAAOiZ,EAEhBrX,GACEzM,KAAMA,EACNd,QAASA,EACTqO,IAAKkW,IACLhX,OAAQ3G,IAEVye,EAAe9X,GAAO,GAGxB,QAAIwY,GACKA,EAAmB5iB,MAAMnG,KAAM8F,WAM1C,QAASiiB,KACHiB,IAGJD,EAAqBphB,EAAQgZ,QAC7BhZ,EAAQgZ,QAAU6H,EAClBQ,GAA2B,GAG7B,QAASZ,KACFY,IAGLrhB,EAAQgZ,QAAUoI,EAClBC,GAA2B,EAC3BD,EAAqBna,QAGvB,QAASia,KACP,GAAII,GAAsBN,EACxBO,EAAYC,CACdA,GAAW,KACXR,EAAqB,KACrBvV,EAAgB,KAChBiV,EAAeliB,MAAM,MAAO8iB,GAAqB,GAAOtO,OAAOuO,IAUjE,QAAS3b,GAAOzL,EAAIsnB,GAClB,GAAIxjB,GAAO+hB,EAAO5mB,KAAK+E,UAAW,EAClC,IAAI6iB,EAAoB,CACtB,GAAIvV,IAAkBtR,EACpB,MAEA+mB,KAIJ,GAAItY,GAAQvG,EAASwG,kBAAkB1O,EAevC,IAdA6mB,EAAqBpY,EACrB6C,EAAgBtR,EAChBqnB,EAAWvjB,EAMX4O,WAAW,WACLpB,IAAkBtR,GACpB+mB,KAEDtY,EAAM8Y,WAAa,IAAO,GAEzBD,KAAY,EACd,KAAMtnB,GA9LV,GA0DIinB,GAAoBC,EA1DpBhB,KACFmB,EAAW,KACX/V,EAAgB,KAChBuV,EAAqB,IAkMvB,OAHApb,GAAOC,UAAYA,EACnBD,EAAO0a,YAAcA,EACrB1a,EAAO6B,UAAY+Y,EACZ5a,KAsDTvD,EAASwG,kBAAoB,WA4C3B,QAAS8Y,GAA+BxnB,GACtC,GAAwB,mBAAbA,GAAGyO,OAA0BzO,EAAGyO,MAA3C,CAiBA,IAAK,GALDgZ,GACAC,EACAC,EAZAnQ,EAAS,0IACToQ,EAAQ,wHAGRC,EAAQ,6JAERC,EAAY,gDACZC,EAAa,gCACbC,EAAQhoB,EAAGyO,MAAMzE,MAAM,MACvByE,KAMK5P,GAFO,sBAAsBkC,KAAKf,EAAGkB,SAEjC,GAAG6V,EAAIiR,EAAM9oB,OAAQL,EAAIkY,IAAKlY,EAAG,CAC5C,GAAK6oB,EAAQlQ,EAAOzW,KAAKinB,EAAMnpB,IAAM,CACnC,GAAIopB,GAAWP,EAAM,IAAqC,IAA/BA,EAAM,GAAGnR,QAAQ,UACxC2R,EAASR,EAAM,IAAmC,IAA7BA,EAAM,GAAGnR,QAAQ,OACtC2R,KAAWT,EAAWM,EAAWhnB,KAAK2mB,EAAM,OAE9CA,EAAM,GAAKD,EAAS,GACpBC,EAAM,GAAKD,EAAS,GACpBC,EAAM,GAAKD,EAAS,IAEtBE,GACEpY,IAAM0Y,EAAsB,KAAXP,EAAM,GACvB7a,KAAM6a,EAAM,IAAM5B,EAClBhiB,KAAMmkB,GAAYP,EAAM,OACxBxN,KAAMwN,EAAM,IAAMA,EAAM,GAAK,KAC7BtN,OAAQsN,EAAM,IAAMA,EAAM,GAAK,UAE5B,IAAKA,EAAQE,EAAM7mB,KAAKinB,EAAMnpB,IACnC8oB,GACEpY,IAAKmY,EAAM,GACX7a,KAAM6a,EAAM,IAAM5B,EAClBhiB,QACAoW,MAAOwN,EAAM,GACbtN,OAAQsN,EAAM,IAAMA,EAAM,GAAK,UAE5B,CAAA,KAAKA,EAAQG,EAAM9mB,KAAKinB,EAAMnpB,KAsBnC,QArBA,IAAIqpB,GAASR,EAAM,IAAMA,EAAM,GAAGnR,QAAQ,aACtC2R,KAAWT,EAAWK,EAAU/mB,KAAK2mB,EAAM,MAE7CA,EAAM,GAAKD,EAAS,GACpBC,EAAM,GAAKD,EAAS,GACpBC,EAAM,GAAK,MACI,IAAN7oB,GAAY6oB,EAAM,IAAiC,mBAApB1nB,GAAGmoB,eAK3C1Z,EAAM,GAAG2L,OAASpa,EAAGmoB,aAAe,GAEtCR,GACEpY,IAAKmY,EAAM,GACX7a,KAAM6a,EAAM,IAAM5B,EAClBhiB,KAAM4jB,EAAM,GAAKA,EAAM,GAAG1d,MAAM,QAChCkQ,KAAMwN,EAAM,IAAMA,EAAM,GAAK,KAC7BtN,OAAQsN,EAAM,IAAMA,EAAM,GAAK,MAUnC,IAJKC,EAAQ9a,MAAQ8a,EAAQzN,OAC3ByN,EAAQ9a,KAAOiZ;AAGb6B,EAAQpY,KAAoC,UAA7BoY,EAAQpY,IAAInO,OAAO,EAAG,GAAgB,CAMvD,GAAI8J,GAAM,GAAImL,eAKd,IAJAnL,EAAI4T,KAAK,MAAO6I,EAAQpY,KAAK,GAC7BrE,EAAI8T,KAAK,MAGU,MAAf9T,EAAI2L,OAAgB,CACtB,GAAIsK,GAASjW,EAAIkd,cAAgB,EAIjCjH,GAASA,EAAOpd,WAGhB,IAAIskB,GAAalH,EAAOI,MAAM,+BAG9B,IAAI8G,EAAY,CACd,GAAIC,GAAmBD,EAAW,EAIC,OAA/BC,EAAiBC,OAAO,KAC1BD,EAAmB5C,IAAsB4C,EAAiBvkB,MAAM,IAKlE4jB,EAAQpY,IAAM+Y,EAAiBvkB,MAAM,QAK3C0K,EAAM7D,KAAK+c,GAGb,MAAKlZ,GAAMvP,QAKT8C,KAAMhC,EAAGgC,KACTd,QAASlB,EAAGkB,QACZqO,IAAKkW,IACLhX,MAAOA,GAPA,MAwBX,QAASqY,GAAoCxN,EAAW/J,EAAKoX,EAAQzlB,GACnE,GAAIsnB,IACFjZ,IAAKA,EACL2K,KAAMyM,EAGR,IAAI6B,EAAQjZ,KAAOiZ,EAAQtO,KAAM,CAO/B,GANAZ,EAAUiO,YAAa,EAElBiB,EAAQ3b,OACX2b,EAAQ3b,KAAOiZ,GAGbxM,EAAU7K,MAAMvP,OAAS,GACvBoa,EAAU7K,MAAM,GAAGc,MAAQiZ,EAAQjZ,IAAK,CAC1C,GAAI+J,EAAU7K,MAAM,GAAGyL,OAASsO,EAAQtO,KACtC,OAAO,CACF,KACJZ,EAAU7K,MAAM,GAAGyL,MACpBZ,EAAU7K,MAAM,GAAG5B,OAAS2b,EAAQ3b,KAGpC,MADAyM,GAAU7K,MAAM,GAAGyL,KAAOsO,EAAQtO,MAC3B,EAOb,MAFAZ,GAAU7K,MAAMga,QAAQD,GACxBlP,EAAUoP,SAAU,GACb,EAKT,MAHEpP,GAAUiO,YAAa,GAGlB,EAYT,QAASoB,GAAsC3oB,EAAIskB,GASjD,IACE,GALAoD,GACAkB,EALEC,EAAe,qEACjBpa,KACAqa,KACAC,GAAY,EAMRC,EAAOL,EAAsCM,OACjDD,IAASD,EACTC,EAAOA,EAAKC,OAEZ,GAAID,IAASta,GAAqBsa,IAAS9gB,EAASuD,OAApD,CAkBA,GAbAmd,GACErZ,IAAK,KACL1C,KAAMiZ,EACN5L,KAAM,KACNE,OAAQ,MAGN4O,EAAKhnB,KACP4mB,EAAK/b,KAAOmc,EAAKhnB,MACP0lB,EAAQmB,EAAa9nB,KAAKioB,EAAKlmB,eACzC8lB,EAAK/b,KAAO6a,EAAM,IAGK,mBAAdkB,GAAK/b,KACd,IACE+b,EAAK/b,KAAO6a,EAAM9D,MAAMsF,UAAU,EAAGxB,EAAM9D,MAAMrN,QAAQ,MACzD,MAAOnY,IAGP0qB,EAAM,GAAKE,GACbD,GAAY,EAEZD,EAAM,GAAKE,IAAQ,EAGrBva,EAAM7D,KAAKge,GAGTtE,GAGF7V,EAAM2X,OAAO,EAAG9B,EAGlB,IAAIrU,IACFjO,KAAMhC,EAAGgC,KACTd,QAASlB,EAAGkB,QACZqO,IAAKkW,IACLhX,MAAOA,EAQT,OANAqY,GACE7W,EACAjQ,EAAGmpB,WAAanpB,EAAGopB,SACnBppB,EAAGka,MAAQla,EAAGqpB,WACdrpB,EAAGkB,SAAWlB,EAAGspB,aAEZrZ,EAQT,QAASvB,GAAkB1O,EAAIskB,GAC7B,GAAI7V,GAAQ,IACZ6V,GAAiB,MAATA,EAAgB,GAAKA,CAE7B,KAEE,GADA7V,EAAQ+Y,EAA+BxnB,GAErC,MAAOyO,GAET,MAAOrQ,GACP,GAAI8J,EAASmC,MACX,KAAMjM,GAIV,IAEE,GADAqQ,EAAQka,EAAsC3oB,EAAIskB,EAAQ,GAExD,MAAO7V,GAET,MAAOrQ,GACP,GAAI8J,EAASmC,MACX,KAAMjM,GAGV,OACE4D,KAAMhC,EAAGgC,KACTd,QAASlB,EAAGkB,QACZqO,IAAKkW,KAOT,MAHA/W,GAAkBoY,oCAAsCA,EACxDpY,EAAkB8Y,+BAAiCA,EAE5C9Y,KAGT/Q,EAAOD,QAAUwK,IAEdjJ,KAAKf,KAAuB,mBAAXF,QAAyBA,OAAyB,mBAATC,MAAuBA,KAAyB,mBAAXF,QAAyBA,aACxHwD,EAAI,IAAIie,IAAI,SAASpgB,EAAQzB,EAAOD,GAevC,QAAS6Y,GAAQgT,EAAUC,GACzB,IAAK,GAAI3qB,GAAI,EAAGA,EAAI0qB,EAASrqB,SAAUL,EACrC,GAAI0qB,EAAS1qB,KAAO2qB,EAAQ,MAAO3qB,EAErC,UAGF,QAASiG,GAAU+K,EAAK4Z,EAAUC,EAAQC,GACxC,MAAO9kB,MAAKC,UAAU+K,EAAK+Z,EAAWH,EAAUE,GAAgBD,GAIlE,QAASG,GAAe7oB,GACtB,GAAIwU,IAEF/G,MAAOzN,EAAMyN,MACbvN,QAASF,EAAME,QACfc,KAAMhB,EAAMgB,KAGd,KAAK,GAAInD,KAAKmC,GACR4B,OAAOC,UAAUuS,eAAenW,KAAK+B,EAAOnC,KAC9C2W,EAAI3W,GAAKmC,EAAMnC,GAInB,OAAO2W,GAGT,QAASoU,GAAWH,EAAUE,GAC5B,GAAIlb,MACAO,IAWJ,OATqB,OAAjB2a,IACFA,EAAgB,SAASjf,EAAK1J,GAC5B,MAAIyN,GAAM,KAAOzN,EACR,eAEF,eAAiBgO,EAAKjL,MAAM,EAAGwS,EAAQ9H,EAAOzN,IAAQqgB,KAAK,KAAO,MAItE,SAAS3W,EAAK1J,GACnB,GAAIyN,EAAMvP,OAAS,EAAG,CACpB,GAAI4qB,GAAUvT,EAAQ9H,EAAOvQ,OAC5B4rB,EAAUrb,EAAM2X,OAAO0D,EAAU,GAAKrb,EAAM7D,KAAK1M,OACjD4rB,EAAU9a,EAAKoX,OAAO0D,EAASC,EAAAA,EAAUrf,GAAOsE,EAAKpE,KAAKF,IAEtD6L,EAAQ9H,EAAOzN,KAClBA,EAAQ2oB,EAAc1qB,KAAKf,KAAMwM,EAAK1J,QAGxCyN,GAAM7D,KAAK5J,EAGb,OAAmB,OAAZyoB,EACHzoB,YAAiBlC,OAAQ+qB,EAAe7oB,GAASA,EACjDyoB,EAASxqB,KAAKf,KAAMwM,EAAK1J,IA5DjCtD,EAAUC,EAAOD,QAAUoH,EAC3BpH,EAAQssB,aAAeJ,OA+DjBnK,IAAI,SAASrgB,EAAQzB,EAAOD,GAwBlC,QAASusB,GAAQC,EAAGC,GAClB,GAAIC,IAAW,MAAJF,IAAmB,MAAJC,GACtBE,GAAOH,GAAK,KAAOC,GAAK,KAAOC,GAAO,GAC1C,OAAQC,IAAO,GAAa,MAAND,EAMxB,QAASE,GAActI,EAAKuI,GAC1B,MAAQvI,IAAOuI,EAAQvI,IAAS,GAAKuI,EAMvC,QAASC,GAAOC,EAAG9rB,EAAGwkB,EAAG+G,EAAG1rB,EAAGH,GAC7B,MAAO4rB,GAAQK,EAAcL,EAAQA,EAAQtrB,EAAG8rB,GAAIR,EAAQC,EAAG7rB,IAAKG,GAAI2kB,GAE1E,QAASuH,GAAM/rB,EAAGwkB,EAAGjB,EAAGyI,EAAGT,EAAG1rB,EAAGH,GAC/B,MAAOmsB,GAAQrH,EAAIjB,GAAOiB,EAAIwH,EAAIhsB,EAAGwkB,EAAG+G,EAAG1rB,EAAGH,GAEhD,QAASusB,GAAMjsB,EAAGwkB,EAAGjB,EAAGyI,EAAGT,EAAG1rB,EAAGH,GAC/B,MAAOmsB,GAAQrH,EAAIwH,EAAMzI,GAAKyI,EAAIhsB,EAAGwkB,EAAG+G,EAAG1rB,EAAGH,GAEhD,QAASwsB,GAAMlsB,EAAGwkB,EAAGjB,EAAGyI,EAAGT,EAAG1rB,EAAGH,GAC/B,MAAOmsB,GAAOrH,EAAIjB,EAAIyI,EAAGhsB,EAAGwkB,EAAG+G,EAAG1rB,EAAGH,GAEvC,QAASysB,GAAMnsB,EAAGwkB,EAAGjB,EAAGyI,EAAGT,EAAG1rB,EAAGH,GAC/B,MAAOmsB,GAAOtI,GAAKiB,GAAKwH,GAAIhsB,EAAGwkB,EAAG+G,EAAG1rB,EAAGH,GAM1C,QAAS0sB,GAAQb,EAAGhJ,GAElBgJ,EAAEhJ,GAAO,IAAM,KAASA,EAAM,GAC9BgJ,GAAKhJ,EAAM,KAAQ,GAAM,GAAK,IAAMA,CAEpC,IAAIriB,GACAmsB,EACAC,EACAC,EACAC,EACAxsB,EAAI,WACJwkB,aACAjB,cACAyI,EAAI,SAER,KAAK9rB,EAAI,EAAGA,EAAIqrB,EAAEhrB,OAAQL,GAAK,GAC7BmsB,EAAOrsB,EACPssB,EAAO9H,EACP+H,EAAOhJ,EACPiJ,EAAOR,EAEPhsB,EAAI+rB,EAAM/rB,EAAGwkB,EAAGjB,EAAGyI,EAAGT,EAAErrB,GAAI,cAC5B8rB,EAAID,EAAMC,EAAGhsB,EAAGwkB,EAAGjB,EAAGgI,EAAErrB,EAAI,GAAI,eAChCqjB,EAAIwI,EAAMxI,EAAGyI,EAAGhsB,EAAGwkB,EAAG+G,EAAErrB,EAAI,GAAI,GAAI,WACpCskB,EAAIuH,EAAMvH,EAAGjB,EAAGyI,EAAGhsB,EAAGurB,EAAErrB,EAAI,GAAI,gBAChCF,EAAI+rB,EAAM/rB,EAAGwkB,EAAGjB,EAAGyI,EAAGT,EAAErrB,EAAI,GAAI,cAChC8rB,EAAID,EAAMC,EAAGhsB,EAAGwkB,EAAGjB,EAAGgI,EAAErrB,EAAI,GAAI,GAAI,YACpCqjB,EAAIwI,EAAMxI,EAAGyI,EAAGhsB,EAAGwkB,EAAG+G,EAAErrB,EAAI,GAAI,gBAChCskB,EAAIuH,EAAMvH,EAAGjB,EAAGyI,EAAGhsB,EAAGurB,EAAErrB,EAAI,GAAI,cAChCF,EAAI+rB,EAAM/rB,EAAGwkB,EAAGjB,EAAGyI,EAAGT,EAAErrB,EAAI,GAAI,EAAG,YACnC8rB,EAAID,EAAMC,EAAGhsB,EAAGwkB,EAAGjB,EAAGgI,EAAErrB,EAAI,GAAI,gBAChCqjB,EAAIwI,EAAMxI,EAAGyI,EAAGhsB,EAAGwkB,EAAG+G,EAAErrB,EAAI,IAAK,WACjCskB,EAAIuH,EAAMvH,EAAGjB,EAAGyI,EAAGhsB,EAAGurB,EAAErrB,EAAI,IAAK,gBACjCF,EAAI+rB,EAAM/rB,EAAGwkB,EAAGjB,EAAGyI,EAAGT,EAAErrB,EAAI,IAAK,EAAG,YACpC8rB,EAAID,EAAMC,EAAGhsB,EAAGwkB,EAAGjB,EAAGgI,EAAErrB,EAAI,IAAK,cACjCqjB,EAAIwI,EAAMxI,EAAGyI,EAAGhsB,EAAGwkB,EAAG+G,EAAErrB,EAAI,IAAK,gBACjCskB,EAAIuH,EAAMvH,EAAGjB,EAAGyI,EAAGhsB,EAAGurB,EAAErrB,EAAI,IAAK,GAAI,YAErCF,EAAIisB,EAAMjsB,EAAGwkB,EAAGjB,EAAGyI,EAAGT,EAAErrB,EAAI,GAAI,cAChC8rB,EAAIC,EAAMD,EAAGhsB,EAAGwkB,EAAGjB,EAAGgI,EAAErrB,EAAI,GAAI,eAChCqjB,EAAI0I,EAAM1I,EAAGyI,EAAGhsB,EAAGwkB,EAAG+G,EAAErrB,EAAI,IAAK,GAAI,WACrCskB,EAAIyH,EAAMzH,EAAGjB,EAAGyI,EAAGhsB,EAAGurB,EAAErrB,GAAI,eAC5BF,EAAIisB,EAAMjsB,EAAGwkB,EAAGjB,EAAGyI,EAAGT,EAAErrB,EAAI,GAAI,cAChC8rB,EAAIC,EAAMD,EAAGhsB,EAAGwkB,EAAGjB,EAAGgI,EAAErrB,EAAI,IAAK,EAAG,UACpCqjB,EAAI0I,EAAM1I,EAAGyI,EAAGhsB,EAAGwkB,EAAG+G,EAAErrB,EAAI,IAAK,eACjCskB,EAAIyH,EAAMzH,EAAGjB,EAAGyI,EAAGhsB,EAAGurB,EAAErrB,EAAI,GAAI,eAChCF,EAAIisB,EAAMjsB,EAAGwkB,EAAGjB,EAAGyI,EAAGT,EAAErrB,EAAI,GAAI,EAAG,WACnC8rB,EAAIC,EAAMD,EAAGhsB,EAAGwkB,EAAGjB,EAAGgI,EAAErrB,EAAI,IAAK,eACjCqjB,EAAI0I,EAAM1I,EAAGyI,EAAGhsB,EAAGwkB,EAAG+G,EAAErrB,EAAI,GAAI,eAChCskB,EAAIyH,EAAMzH,EAAGjB,EAAGyI,EAAGhsB,EAAGurB,EAAErrB,EAAI,GAAI,GAAI,YACpCF,EAAIisB,EAAMjsB,EAAGwkB,EAAGjB,EAAGyI,EAAGT,EAAErrB,EAAI,IAAK,eACjC8rB,EAAIC,EAAMD,EAAGhsB,EAAGwkB,EAAGjB,EAAGgI,EAAErrB,EAAI,GAAI,aAChCqjB,EAAI0I,EAAM1I,EAAGyI,EAAGhsB,EAAGwkB,EAAG+G,EAAErrB,EAAI,GAAI,GAAI,YACpCskB,EAAIyH,EAAMzH,EAAGjB,EAAGyI,EAAGhsB,EAAGurB,EAAErrB,EAAI,IAAK,gBAEjCF,EAAIksB,EAAMlsB,EAAGwkB,EAAGjB,EAAGyI,EAAGT,EAAErrB,EAAI,GAAI,WAChC8rB,EAAIE,EAAMF,EAAGhsB,EAAGwkB,EAAGjB,EAAGgI,EAAErrB,EAAI,GAAI,gBAChCqjB,EAAI2I,EAAM3I,EAAGyI,EAAGhsB,EAAGwkB,EAAG+G,EAAErrB,EAAI,IAAK,GAAI,YACrCskB,EAAI0H,EAAM1H,EAAGjB,EAAGyI,EAAGhsB,EAAGurB,EAAErrB,EAAI,IAAK,cACjCF,EAAIksB,EAAMlsB,EAAGwkB,EAAGjB,EAAGyI,EAAGT,EAAErrB,EAAI,GAAI,eAChC8rB,EAAIE,EAAMF,EAAGhsB,EAAGwkB,EAAGjB,EAAGgI,EAAErrB,EAAI,GAAI,GAAI,YACpCqjB,EAAI2I,EAAM3I,EAAGyI,EAAGhsB,EAAGwkB,EAAG+G,EAAErrB,EAAI,GAAI,eAChCskB,EAAI0H,EAAM1H,EAAGjB,EAAGyI,EAAGhsB,EAAGurB,EAAErrB,EAAI,IAAK,gBACjCF,EAAIksB,EAAMlsB,EAAGwkB,EAAGjB,EAAGyI,EAAGT,EAAErrB,EAAI,IAAK,EAAG,WACpC8rB,EAAIE,EAAMF,EAAGhsB,EAAGwkB,EAAGjB,EAAGgI,EAAErrB,GAAI,eAC5BqjB,EAAI2I,EAAM3I,EAAGyI,EAAGhsB,EAAGwkB,EAAG+G,EAAErrB,EAAI,GAAI,eAChCskB,EAAI0H,EAAM1H,EAAGjB,EAAGyI,EAAGhsB,EAAGurB,EAAErrB,EAAI,GAAI,GAAI,UACpCF,EAAIksB,EAAMlsB,EAAGwkB,EAAGjB,EAAGyI,EAAGT,EAAErrB,EAAI,GAAI,cAChC8rB,EAAIE,EAAMF,EAAGhsB,EAAGwkB,EAAGjB,EAAGgI,EAAErrB,EAAI,IAAK,eACjCqjB,EAAI2I,EAAM3I,EAAGyI,EAAGhsB,EAAGwkB,EAAG+G,EAAErrB,EAAI,IAAK,GAAI,WACrCskB,EAAI0H,EAAM1H,EAAGjB,EAAGyI,EAAGhsB,EAAGurB,EAAErrB,EAAI,GAAI,eAEhCF,EAAImsB,EAAMnsB,EAAGwkB,EAAGjB,EAAGyI,EAAGT,EAAErrB,GAAI,cAC5B8rB,EAAIG,EAAMH,EAAGhsB,EAAGwkB,EAAGjB,EAAGgI,EAAErrB,EAAI,GAAI,GAAI,YACpCqjB,EAAI4I,EAAM5I,EAAGyI,EAAGhsB,EAAGwkB,EAAG+G,EAAErrB,EAAI,IAAK,gBACjCskB,EAAI2H,EAAM3H,EAAGjB,EAAGyI,EAAGhsB,EAAGurB,EAAErrB,EAAI,GAAI,cAChCF,EAAImsB,EAAMnsB,EAAGwkB,EAAGjB,EAAGyI,EAAGT,EAAErrB,EAAI,IAAK,EAAG,YACpC8rB,EAAIG,EAAMH,EAAGhsB,EAAGwkB,EAAGjB,EAAGgI,EAAErrB,EAAI,GAAI,gBAChCqjB,EAAI4I,EAAM5I,EAAGyI,EAAGhsB,EAAGwkB,EAAG+G,EAAErrB,EAAI,IAAK,aACjCskB,EAAI2H,EAAM3H,EAAGjB,EAAGyI,EAAGhsB,EAAGurB,EAAErrB,EAAI,GAAI,gBAChCF,EAAImsB,EAAMnsB,EAAGwkB,EAAGjB,EAAGyI,EAAGT,EAAErrB,EAAI,GAAI,EAAG,YACnC8rB,EAAIG,EAAMH,EAAGhsB,EAAGwkB,EAAGjB,EAAGgI,EAAErrB,EAAI,IAAK,cACjCqjB,EAAI4I,EAAM5I,EAAGyI,EAAGhsB,EAAGwkB,EAAG+G,EAAErrB,EAAI,GAAI,gBAChCskB,EAAI2H,EAAM3H,EAAGjB,EAAGyI,EAAGhsB,EAAGurB,EAAErrB,EAAI,IAAK,GAAI,YACrCF,EAAImsB,EAAMnsB,EAAGwkB,EAAGjB,EAAGyI,EAAGT,EAAErrB,EAAI,GAAI,cAChC8rB,EAAIG,EAAMH,EAAGhsB,EAAGwkB,EAAGjB,EAAGgI,EAAErrB,EAAI,IAAK,gBACjCqjB,EAAI4I,EAAM5I,EAAGyI,EAAGhsB,EAAGwkB,EAAG+G,EAAErrB,EAAI,GAAI,GAAI,WACpCskB,EAAI2H,EAAM3H,EAAGjB,EAAGyI,EAAGhsB,EAAGurB,EAAErrB,EAAI,GAAI,eAEhCF,EAAIsrB,EAAQtrB,EAAGqsB,GACf7H,EAAI8G,EAAQ9G,EAAG8H,GACf/I,EAAI+H,EAAQ/H,EAAGgJ,GACfP,EAAIV,EAAQU,EAAGQ,EAEjB,QAAQxsB,EAAGwkB,EAAGjB,EAAGyI,GAMnB,QAASS,GAAUxH,GACjB,GAAI/kB,GACAilB,EAAS,GACTuH,EAA0B,GAAfzH,EAAM1kB,MACrB,KAAKL,EAAI,EAAGA,EAAIwsB,EAAUxsB,GAAK,EAC7BilB,GAAUC,OAAOuH,aAAc1H,EAAM/kB,GAAK,KAAQA,EAAI,GAAO,IAE/D,OAAOilB,GAOT,QAASyH,GAAU3H,GACjB,GAAI/kB,GACAilB,IAEJ,KADAA,GAAQF,EAAM1kB,QAAU,GAAK,GAAK4N,OAC7BjO,EAAI,EAAGA,EAAIilB,EAAO5kB,OAAQL,GAAK,EAClCilB,EAAOjlB,GAAK,CAEd,IAAI2sB,GAAyB,EAAf5H,EAAM1kB,MACpB,KAAKL,EAAI,EAAGA,EAAI2sB,EAAS3sB,GAAK,EAC5BilB,EAAOjlB,GAAK,KAAiC,IAA1B+kB,EAAM6H,WAAW5sB,EAAI,KAAeA,EAAI,EAE7D,OAAOilB,GAMT,QAAS4H,GAAQltB,GACf,MAAO4sB,GAAUL,EAAQQ,EAAU/sB,GAAe,EAAXA,EAAEU,SAM3C,QAASysB,GAAYjhB,EAAKjK,GACxB,GAAI5B,GAIAqgB,EAHA0M,EAAOL,EAAU7gB,GACjBmhB,KACAC,IAMJ,KAJAD,EAAK,IAAMC,EAAK,IAAMhf,OAClB8e,EAAK1sB,OAAS,KAChB0sB,EAAOb,EAAQa,EAAmB,EAAblhB,EAAIxL,SAEtBL,EAAI,EAAGA,EAAI,GAAIA,GAAK,EACvBgtB,EAAKhtB,GAAe,UAAV+sB,EAAK/sB,GACfitB,EAAKjtB,GAAe,WAAV+sB,EAAK/sB,EAGjB,OADAqgB,GAAO6L,EAAQc,EAAKhT,OAAO0S,EAAU9qB,IAAQ,IAAoB,EAAdA,EAAKvB,QACjDksB,EAAUL,EAAQe,EAAKjT,OAAOqG,GAAO,MAM9C,QAAS6M,GAASnI,GAChB,GAEIsG,GACArrB,EAHAmtB,EAAS,mBACTlI,EAAS,EAGb,KAAKjlB,EAAI,EAAGA,EAAI+kB,EAAM1kB,OAAQL,GAAK,EACjCqrB,EAAItG,EAAM6H,WAAW5sB,GACrBilB,GAAUkI,EAAOzD,OAAQ2B,IAAM,EAAK,IAAQ8B,EAAOzD,OAAW,GAAJ2B,EAE5D,OAAOpG,GAMT,QAASmI,GAAarI,GACpB,MAAOsI,UAASpa,mBAAmB8R,IAMrC,QAASuI,GAAO3tB,GACd,MAAOktB,GAAQO,EAAaztB,IAE9B,QAAS4tB,GAAO5tB,GACd,MAAOutB,GAASI,EAAO3tB,IAEzB,QAAS6tB,GAAWjH,EAAGuF,GACrB,MAAOgB,GAAYM,EAAa7G,GAAI6G,EAAatB,IAEnD,QAAS2B,GAAWlH,EAAGuF,GACrB,MAAOoB,GAASM,EAAWjH,EAAGuF,IAGhC,QAASxiB,GAAIokB,EAAQ7hB,EAAK8hB,GACxB,MAAK9hB,GAMA8hB,EAGEH,EAAW3hB,EAAK6hB,GAFdD,EAAW5hB,EAAK6hB,GANlBC,EAGEL,EAAOI,GAFLH,EAAOG,GAUpB5uB,EAAOD,QAAUyK,YAEN,EAAE,EAAE,EAAE,IAAI","file":"raven.min.js"} \ No newline at end of file diff --git a/dist/angular,require/raven.js b/dist/angular,require/raven.js index 6e8635cd1a1c..affda0e941c6 100644 --- a/dist/angular,require/raven.js +++ b/dist/angular,require/raven.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.25.1 (b6f3c7a) | github.com/getsentry/raven-js */ +/*! Raven.js 3.25.2 (30b6d4e) | github.com/getsentry/raven-js */ /* * Includes TraceKit @@ -211,7 +211,11 @@ function now() { var _window = typeof window !== 'undefined' ? window - : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; + : typeof global !== 'undefined' + ? global + : typeof self !== 'undefined' + ? self + : {}; var _document = _window.document; var _navigator = _window.navigator; @@ -301,7 +305,7 @@ Raven.prototype = { // webpack (using a build step causes webpack #1617). Grunt verifies that // this value matches package.json during build. // See: https://github.com/getsentry/raven-js/issues/465 - VERSION: '3.25.1', + VERSION: '3.25.2', debug: false, @@ -1857,7 +1861,7 @@ Raven.prototype = { } ] }, - culprit: fileurl + transaction: fileurl }, options ); @@ -1972,7 +1976,7 @@ Raven.prototype = { if ( !last || current.message !== last.message || // defined for captureMessage - current.culprit !== last.culprit // defined for captureException/onerror + current.transaction !== last.transaction // defined for captureException/onerror ) return false; diff --git a/dist/angular,require/raven.min.js b/dist/angular,require/raven.min.js index ddf46912ee13..5f6575f259f2 100644 --- a/dist/angular,require/raven.min.js +++ b/dist/angular,require/raven.min.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.25.1 (b6f3c7a) | github.com/getsentry/raven-js */ -!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.Raven=a()}}(function(){var a;return function b(a,c,d){function e(g,h){if(!c[g]){if(!a[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};a[g][0].call(k.exports,function(b){var c=a[g][1][b];return e(c?c:b)},k,k.exports,b,a,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;gthis.l.maxBreadcrumbs&&this.v.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.s.push([a,b]),this.o&&this.G(),this},setUserContext:function(a){return this.k.user=a,this},setExtraContext:function(a){return this.$("extra",a),this},setTagsContext:function(a){return this.$("tags",a),this},clearContext:function(){return this.k={},this},getContext:function(){return JSON.parse(h(this.k))},setEnvironment:function(a){return this.l.environment=a,this},setRelease:function(a){return this.l.release=a,this},setDataCallback:function(a){var b=this.l.dataCallback;return this.l.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.l.breadcrumbCallback;return this.l.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.l.shouldSendCallback;return this.l.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.l.transport=a,this},lastException:function(){return this.e},lastEventId:function(){return this.g},isSetup:function(){return!!this.b&&(!!this.h||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.A("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=R.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(S){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.I;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.k.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.K(this.H(c)),h=S.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(S.head||S.body).appendChild(h)}},M:function(){var a=this;this.n+=1,setTimeout(function(){a.n-=1})},_:function(a,b){var c,d;if(this.c){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),S.createEvent?(c=S.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=S.createEventObject(),c.eventType=a);for(d in b)A(b,d)&&(c[d]=b[d]);if(S.createEvent)S.dispatchEvent(c);else try{S.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},aa:function(a){var b=this;return function(c){if(b.ba=null,b.w!==c){b.w=c;var d;try{d=E(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ca:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.ba;g||a.aa("input")(c),clearTimeout(g),a.ba=setTimeout(function(){a.ba=null},b)}}},da:function(a,b){var c=H(this.x.href),d=H(b),e=H(a);this.y=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},D:function(){var a=this;a.ea=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.N?a.ea.apply(this.P,arguments):a.ea.apply(this,arguments)}},R:function(){this.ea&&(Function.prototype.toString=this.ea)},E:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.da(b.y,c+""),a.apply(this,arguments)}};I(R.history,"pushState",j,d),I(R.history,"replaceState",j,d)}if(c.console&&"console"in R&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};w(["debug","info","warn","error","log"],function(a,b){O(console,b,k)})}},S:function(){for(var a;this.u.length;){a=this.u.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},T:function(){for(var a in this.r)this.q[a]=this.r[a]},G:function(){var a=this;w(this.s,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},H:function(a){var b=Q.exec(a),c={},d=7;try{for(;d--;)c[P[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.l.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},K:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},B:function(){this.n||this.W.apply(this,arguments)},W:function(a,b){var c=this.Y(a,b);this._("handle",{stackInfo:a,options:b}),this.ga(a.name,a.message,a.url,a.lineno,c,b)},Y:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(w(a.stack,function(b,e){var f=c.ha(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.v,0)}),this.k.user&&(a.user=this.k.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),a=this.qa(a),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||v(a[b]))&&delete a[b]}),s(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!v(a)&&(!s(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.na()?void this.A("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function F(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&l(b))for(c=b.split(/\s+/),f=0;fc?Q(a,b-1):d}function R(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?X:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function S(a,b){function c(a){return m(a)?a.map(function(a){return c(a)}):k(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!m(b)||m(b)&&0===b.length)return a;var d,e=A(b),f="********";try{d=JSON.parse(T(a))}catch(g){return a}return c(d)}var T=a(9),U="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},V=3,W=51200,X=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isDOMError:g,isDOMException:h,isUndefined:i,isFunction:j,isPlainObject:k,isString:l,isArray:m,isEmptyObject:n,supportsErrorEvent:o,supportsDOMError:p,supportsDOMException:q,supportsFetch:r,supportsReferrerPolicy:s,supportsPromiseRejectionEvent:t,wrappedCallback:u,each:v,objectMerge:w,truncate:y,objectFrozen:x,hasKey:z,joinRegExp:A,urlencode:B,uuid4:D,htmlTreeAsString:E,htmlElementAsString:F,isSameException:I,isSameStacktrace:J,parseUrl:C,fill:K,safeJoin:L,serializeException:Q,serializeKeysForMessage:R,sanitize:S}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{9:9}],8:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}function e(){return"undefined"==typeof document||null==document.location?"":(document.location.origin||(document.location.origin=document.location.protocol+"//"+document.location.hostname+(document.location.port?":"+document.location.port:"")),document.location.origin)}var f=a(7),g={collectWindowErrors:!0,debug:!1},h="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},i=[].slice,j="?",k=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;g.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function e(a,b){var c=null;if(!b||g.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(i.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,h,i){var l=null,m=f.isErrorEvent(i)?i.error:i,n=f.isErrorEvent(a)?a.message:a;if(v)g.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&f.isError(m))l=g.computeStackTrace(m),e(l,!0);else{var p,r={url:b,line:c,column:h},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(k);p&&(s=p[1],n=p[2])}r.func=j,l={name:s,message:n,url:d(),stack:[r]},e(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=h.onerror,h.onerror=l,r=!0)}function n(){r&&(h.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,e.apply(null,[a,!1].concat(b))}function p(a,b){var c=i.call(arguments,1);if(v){if(u===a)return;o()}var d=g.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),g.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,f,g=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,h=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,i=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,k=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,l=/\((\S*)(?::(\d+))(?::(\d+))\)/,m=a.stack.split("\n"),n=[],o=(/^(.*) is undefined$/.exec(a.message),0),p=m.length;o eval")>-1;r&&(b=k.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==o||c[5]||"undefined"==typeof a.columnNumber||(n[0].column=a.columnNumber+1),f={url:c[3],func:c[1]||j,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}if(!f.func&&f.line&&(f.func=j),f.url&&"blob:"===f.url.substr(0,5)){var s=new XMLHttpRequest;if(s.open("GET",f.url,!1),s.send(null),200===s.status){var t=s.responseText||"";t=t.slice(-300);var u=t.match(/\/\/# sourceMappingURL=(.*)$/);if(u){var v=u[1];"~"===v.charAt(0)&&(v=e()+v.slice(1)),f.url=v.slice(0,-4)}}}n.push(f)}return n.length?{name:a.name,message:a.message,url:d(),stack:n}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=j),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e), +/*! Raven.js 3.25.2 (30b6d4e) | github.com/getsentry/raven-js */ +!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.Raven=a()}}(function(){var a;return function b(a,c,d){function e(g,h){if(!c[g]){if(!a[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};a[g][0].call(k.exports,function(b){var c=a[g][1][b];return e(c?c:b)},k,k.exports,b,a,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;gthis.l.maxBreadcrumbs&&this.v.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.s.push([a,b]),this.o&&this.G(),this},setUserContext:function(a){return this.k.user=a,this},setExtraContext:function(a){return this.$("extra",a),this},setTagsContext:function(a){return this.$("tags",a),this},clearContext:function(){return this.k={},this},getContext:function(){return JSON.parse(h(this.k))},setEnvironment:function(a){return this.l.environment=a,this},setRelease:function(a){return this.l.release=a,this},setDataCallback:function(a){var b=this.l.dataCallback;return this.l.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.l.breadcrumbCallback;return this.l.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.l.shouldSendCallback;return this.l.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.l.transport=a,this},lastException:function(){return this.e},lastEventId:function(){return this.g},isSetup:function(){return!!this.b&&(!!this.h||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.A("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=R.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(S){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.I;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.k.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.K(this.H(c)),h=S.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(S.head||S.body).appendChild(h)}},M:function(){var a=this;this.n+=1,setTimeout(function(){a.n-=1})},_:function(a,b){var c,d;if(this.c){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),S.createEvent?(c=S.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=S.createEventObject(),c.eventType=a);for(d in b)A(b,d)&&(c[d]=b[d]);if(S.createEvent)S.dispatchEvent(c);else try{S.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},aa:function(a){var b=this;return function(c){if(b.ba=null,b.w!==c){b.w=c;var d;try{d=E(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ca:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.ba;g||a.aa("input")(c),clearTimeout(g),a.ba=setTimeout(function(){a.ba=null},b)}}},da:function(a,b){var c=H(this.x.href),d=H(b),e=H(a);this.y=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},D:function(){var a=this;a.ea=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.N?a.ea.apply(this.P,arguments):a.ea.apply(this,arguments)}},R:function(){this.ea&&(Function.prototype.toString=this.ea)},E:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.da(b.y,c+""),a.apply(this,arguments)}};I(R.history,"pushState",j,d),I(R.history,"replaceState",j,d)}if(c.console&&"console"in R&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};w(["debug","info","warn","error","log"],function(a,b){O(console,b,k)})}},S:function(){for(var a;this.u.length;){a=this.u.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},T:function(){for(var a in this.r)this.q[a]=this.r[a]},G:function(){var a=this;w(this.s,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},H:function(a){var b=Q.exec(a),c={},d=7;try{for(;d--;)c[P[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.l.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},K:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},B:function(){this.n||this.W.apply(this,arguments)},W:function(a,b){var c=this.Y(a,b);this._("handle",{stackInfo:a,options:b}),this.ga(a.name,a.message,a.url,a.lineno,c,b)},Y:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(w(a.stack,function(b,e){var f=c.ha(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.v,0)}),this.k.user&&(a.user=this.k.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),a=this.qa(a),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||v(a[b]))&&delete a[b]}),s(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!v(a)&&(!s(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.na()?void this.A("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function F(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&l(b))for(c=b.split(/\s+/),f=0;fc?Q(a,b-1):d}function R(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?X:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function S(a,b){function c(a){return m(a)?a.map(function(a){return c(a)}):k(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!m(b)||m(b)&&0===b.length)return a;var d,e=A(b),f="********";try{d=JSON.parse(T(a))}catch(g){return a}return c(d)}var T=a(9),U="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},V=3,W=51200,X=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isDOMError:g,isDOMException:h,isUndefined:i,isFunction:j,isPlainObject:k,isString:l,isArray:m,isEmptyObject:n,supportsErrorEvent:o,supportsDOMError:p,supportsDOMException:q,supportsFetch:r,supportsReferrerPolicy:s,supportsPromiseRejectionEvent:t,wrappedCallback:u,each:v,objectMerge:w,truncate:y,objectFrozen:x,hasKey:z,joinRegExp:A,urlencode:B,uuid4:D,htmlTreeAsString:E,htmlElementAsString:F,isSameException:I,isSameStacktrace:J,parseUrl:C,fill:K,safeJoin:L,serializeException:Q,serializeKeysForMessage:R,sanitize:S}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{9:9}],8:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}function e(){return"undefined"==typeof document||null==document.location?"":(document.location.origin||(document.location.origin=document.location.protocol+"//"+document.location.hostname+(document.location.port?":"+document.location.port:"")),document.location.origin)}var f=a(7),g={collectWindowErrors:!0,debug:!1},h="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},i=[].slice,j="?",k=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;g.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function e(a,b){var c=null;if(!b||g.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(i.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,h,i){var l=null,m=f.isErrorEvent(i)?i.error:i,n=f.isErrorEvent(a)?a.message:a;if(v)g.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&f.isError(m))l=g.computeStackTrace(m),e(l,!0);else{var p,r={url:b,line:c,column:h},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(k);p&&(s=p[1],n=p[2])}r.func=j,l={name:s,message:n,url:d(),stack:[r]},e(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=h.onerror,h.onerror=l,r=!0)}function n(){r&&(h.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,e.apply(null,[a,!1].concat(b))}function p(a,b){var c=i.call(arguments,1);if(v){if(u===a)return;o()}var d=g.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),g.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,f,g=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,h=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,i=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,k=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,l=/\((\S*)(?::(\d+))(?::(\d+))\)/,m=a.stack.split("\n"),n=[],o=(/^(.*) is undefined$/.exec(a.message),0),p=m.length;o eval")>-1;r&&(b=k.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==o||c[5]||"undefined"==typeof a.columnNumber||(n[0].column=a.columnNumber+1),f={url:c[3],func:c[1]||j,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}if(!f.func&&f.line&&(f.func=j),f.url&&"blob:"===f.url.substr(0,5)){var s=new XMLHttpRequest;if(s.open("GET",f.url,!1),s.send(null),200===s.status){var t=s.responseText||"";t=t.slice(-300);var u=t.match(/\/\/# sourceMappingURL=(.*)$/);if(u){var v=u[1];"~"===v.charAt(0)&&(v=e()+v.slice(1)),f.url=v.slice(0,-4)}}}n.push(f)}return n.length?{name:a.name,message:a.message,url:d(),stack:n}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=j),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e), a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,e){for(var h,i,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==f&&o!==g.report){if(i={url:null,func:j,line:null,column:null},o.name?i.func=o.name:(h=k.exec(o.toString()))&&(i.func=h[1]),"undefined"==typeof i.func)try{i.func=h.input.substring(0,h.input.indexOf("{"))}catch(p){}m[""+o]?n=!0:m[""+o]=!0,l.push(i)}e&&l.splice(0,e);var q={name:a.name,message:a.message,url:d(),stack:l};return b(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),q}function f(b,e){var f=null;e=null==e?0:+e;try{if(f=a(b))return f}catch(h){if(g.debug)throw h}try{if(f=c(b,e+1))return f}catch(h){if(g.debug)throw h}return{name:b.name,message:b.message,url:d()}}return f.augmentStackTraceWithInitialElement=b,f.computeStackTraceFromStackProp=a,f}(),b.exports=g}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{7:7}],9:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}],10:[function(a,b,c){function d(a,b){var c=(65535&a)+(65535&b),d=(a>>16)+(b>>16)+(c>>16);return d<<16|65535&c}function e(a,b){return a<>>32-b}function f(a,b,c,f,g,h){return d(e(d(d(b,a),d(f,h)),g),c)}function g(a,b,c,d,e,g,h){return f(b&c|~b&d,a,b,e,g,h)}function h(a,b,c,d,e,g,h){return f(b&d|c&~d,a,b,e,g,h)}function i(a,b,c,d,e,g,h){return f(b^c^d,a,b,e,g,h)}function j(a,b,c,d,e,g,h){return f(c^(b|~d),a,b,e,g,h)}function k(a,b){a[b>>5]|=128<>>9<<4)+14]=b;var c,e,f,k,l,m=1732584193,n=-271733879,o=-1732584194,p=271733878;for(c=0;c>5]>>>b%32&255);return c}function m(a){var b,c=[];for(c[(a.length>>2)-1]=void 0,b=0;b>5]|=(255&a.charCodeAt(b/8))<16&&(e=k(e,8*a.length)),c=0;c<16;c+=1)f[c]=909522486^e[c],g[c]=1549556828^e[c];return d=k(f.concat(m(b)),512+8*b.length),l(k(g.concat(d),640))}function p(a){var b,c,d="0123456789abcdef",e="";for(c=0;c>>4&15)+d.charAt(15&b);return e}function q(a){return unescape(encodeURIComponent(a))}function r(a){return n(q(a))}function s(a){return p(r(a))}function t(a,b){return o(q(a),q(b))}function u(a,b){return p(t(a,b))}function v(a,b,c){return b?c?t(b,a):u(b,a):c?r(a):s(a)}b.exports=v},{}]},{},[6,1,2])(6)}); //# sourceMappingURL=raven.min.js.map \ No newline at end of file diff --git a/dist/angular,require/raven.min.js.map b/dist/angular,require/raven.min.js.map index 81c786cd0383..bd843a14e729 100644 --- a/dist/angular,require/raven.min.js.map +++ b/dist/angular,require/raven.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","angularPlugin","angular","RavenProvider","$get","$window","ExceptionHandlerProvider","$provide","decorator","exceptionHandler","R","$delegate","ex","cause","captureException","extra","moduleName","provider","config","setDataCallback","wrappedCallback","data","_normalizeData","angularPattern","exception","values","matches","exec","value","type","message","angularDocs","substr","addPlugin","6","7","2","requirePlugin","wrap","deep","3","RavenConfigError","name","prototype","constructor","4","utils","wrapMethod","console","level","callback","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","msg","safeJoin","logger","Function","apply","5","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","sanitizeKeys","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isErrorEvent","isDOMError","isDOMException","isError","isObject","isPlainObject","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","sanitize","wrapConsoleMethod","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","dsn","options","_logDebug","globalOptions","key","setDSN","push","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","toString","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","context","func","undefined","_before","wrapped","_ignoreNextOnError","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","U","event","reason","unhandledPromiseRejection","C","_promiseRejectionHandler","bind","addEventListener","Q","removeEventListener","trimHeadFrames","error","captureMessage","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","V","currentOptions","exKeys","Object","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","M","setTimeout","_","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","aa","evtName","_keypressTimeout","target","category","ca","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","da","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","D","_originalFunctionToString","E","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","F","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","S","builtin","T","G","installer","concat","H","str","m","allowSecretKey","K","port","B","W","stackInfo","_triggerEvent","_processException","lineno","Y","frame","_normalizeFrame","in_app","ha","stackInfoUrl","normalized","filename","line","colno","column","function","ga","prefixedMessage","culprit","ia","request","Referer","breadcrumbs","_trimBreadcrumbs","ja","urlProp","urlProps","ka","httpData","userAgent","User-Agent","referrer","z","_backoffDuration","_backoffStart","na","oa","current","last","pa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Z","baseData","project","platform","_getHttpData","serverName","server_name","_sanitizeData","forEach","random","_sendProcessedPayload","qa","sa","ra","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","ta","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","onerror","open","setRequestHeader","send","ua","hash","evaluated","A","$","setUser","setReleaseContext","10","8","9","RavenConstructor","_Raven","noConflict","Client","what","supportsErrorEvent","ErrorEvent","supportsDOMError","DOMError","supportsDOMException","DOMException","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","sanitizeMask","safeInput","o_O","getLocationHref","getLocationOrigin","origin","hostname","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","responseText","sourceMaps","sourceMapAddress","charAt","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","y","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","string","raw"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file +{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","angularPlugin","angular","RavenProvider","$get","$window","ExceptionHandlerProvider","$provide","decorator","exceptionHandler","R","$delegate","ex","cause","captureException","extra","moduleName","provider","config","setDataCallback","wrappedCallback","data","_normalizeData","angularPattern","exception","values","matches","exec","value","type","message","angularDocs","substr","addPlugin","6","7","2","requirePlugin","wrap","deep","3","RavenConfigError","name","prototype","constructor","4","utils","wrapMethod","console","level","callback","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","msg","safeJoin","logger","Function","apply","5","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","sanitizeKeys","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isErrorEvent","isDOMError","isDOMException","isError","isObject","isPlainObject","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","sanitize","wrapConsoleMethod","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","dsn","options","_logDebug","globalOptions","key","setDSN","push","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","toString","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","context","func","undefined","_before","wrapped","_ignoreNextOnError","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","U","event","reason","unhandledPromiseRejection","C","_promiseRejectionHandler","bind","addEventListener","Q","removeEventListener","trimHeadFrames","error","captureMessage","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","V","currentOptions","exKeys","Object","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","M","setTimeout","_","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","aa","evtName","_keypressTimeout","target","category","ca","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","da","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","D","_originalFunctionToString","E","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","F","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","S","builtin","T","G","installer","concat","H","str","m","allowSecretKey","K","port","B","W","stackInfo","_triggerEvent","_processException","lineno","Y","frame","_normalizeFrame","in_app","ha","stackInfoUrl","normalized","filename","line","colno","column","function","ga","prefixedMessage","transaction","ia","request","Referer","breadcrumbs","_trimBreadcrumbs","ja","urlProp","urlProps","ka","httpData","userAgent","User-Agent","referrer","z","_backoffDuration","_backoffStart","na","oa","current","last","pa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Z","baseData","project","platform","_getHttpData","serverName","server_name","_sanitizeData","forEach","random","_sendProcessedPayload","qa","sa","ra","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","ta","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","onerror","open","setRequestHeader","send","ua","hash","evaluated","A","$","setUser","setReleaseContext","10","8","9","RavenConstructor","_Raven","noConflict","Client","what","supportsErrorEvent","ErrorEvent","supportsDOMError","DOMError","supportsDOMException","DOMException","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","sanitizeMask","safeInput","o_O","getLocationHref","getLocationOrigin","origin","hostname","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","responseText","sourceMaps","sourceMapAddress","charAt","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","y","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","string","raw"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file diff --git a/dist/angular,vue/raven.js b/dist/angular,vue/raven.js index 39a225ab752b..3c15cf50d765 100644 --- a/dist/angular,vue/raven.js +++ b/dist/angular,vue/raven.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.25.1 (b6f3c7a) | github.com/getsentry/raven-js */ +/*! Raven.js 3.25.2 (30b6d4e) | github.com/getsentry/raven-js */ /* * Includes TraceKit @@ -244,7 +244,11 @@ function now() { var _window = typeof window !== 'undefined' ? window - : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; + : typeof global !== 'undefined' + ? global + : typeof self !== 'undefined' + ? self + : {}; var _document = _window.document; var _navigator = _window.navigator; @@ -334,7 +338,7 @@ Raven.prototype = { // webpack (using a build step causes webpack #1617). Grunt verifies that // this value matches package.json during build. // See: https://github.com/getsentry/raven-js/issues/465 - VERSION: '3.25.1', + VERSION: '3.25.2', debug: false, @@ -1890,7 +1894,7 @@ Raven.prototype = { } ] }, - culprit: fileurl + transaction: fileurl }, options ); @@ -2005,7 +2009,7 @@ Raven.prototype = { if ( !last || current.message !== last.message || // defined for captureMessage - current.culprit !== last.culprit // defined for captureException/onerror + current.transaction !== last.transaction // defined for captureException/onerror ) return false; diff --git a/dist/angular,vue/raven.min.js b/dist/angular,vue/raven.min.js index 8e7faa724a48..e308b26955b5 100644 --- a/dist/angular,vue/raven.min.js +++ b/dist/angular,vue/raven.min.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.25.1 (b6f3c7a) | github.com/getsentry/raven-js */ -!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.Raven=a()}}(function(){return function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};b[g][0].call(k.exports,function(a){var c=b[g][1][a];return e(c?c:a)},k,k.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;g":"anonymous component")+(a._isVue&&a.$options.__file?" at "+a.$options.__file:"")}function e(a,b){if(b=b||window.Vue,b&&b.config){var c=b.config.errorHandler;b.config.errorHandler=function(b,e,f){var g={};"[object Object]"===Object.prototype.toString.call(e)&&(g.componentName=d(e),g.propsData=e.$options.propsData),"undefined"!=typeof f&&(g.lifecycleHook=f),a.captureException(b,{extra:g}),"function"==typeof c&&c.call(this,b,e,f)}}}b.exports=e,a(6).addPlugin(b.exports)},{6:6}],3:[function(a,b,c){function d(a){this.name="RavenConfigError",this.message=a}d.prototype=new Error,d.prototype.constructor=d,b.exports=d},{}],4:[function(a,b,c){var d=a(7),e=function(a,b,c){var e=a[b],f=a;if(b in a){var g="warn"===b?"warning":b;a[b]=function(){var a=[].slice.call(arguments),h=d.safeJoin(a," "),i={level:g,logger:"console",extra:{arguments:a}};"assert"===b?a[0]===!1&&(h="Assertion failed: "+(d.safeJoin(a.slice(1)," ")||"console.assert"),i.extra.arguments=a.slice(1),c&&c(h,i)):c&&c(h,i),e&&Function.prototype.apply.call(e,f,a)}}};b.exports={wrapMethod:e}},{7:7}],5:[function(a,b,c){(function(c){function d(){return+new Date}function e(a,b){return s(b)?function(c){return b(c,a)}:b}function f(){this.b=!("object"!=typeof JSON||!JSON.stringify),this.c=!r(S),this.d=!r(T),this.e=null,this.f=null,this.g=null,this.h=null,this.i=null,this.j=null,this.k={},this.l={release:R.SENTRY_RELEASE&&R.SENTRY_RELEASE.id,logger:"javascript",ignoreErrors:[],ignoreUrls:[],whitelistUrls:[],includePaths:[],headers:null,collectWindowErrors:!0,captureUnhandledRejections:!0,maxMessageLength:0,maxUrlLength:250,stackTraceLimit:50,autoBreadcrumbs:!0,instrument:!0,sampleRate:1,sanitizeKeys:[]},this.m={method:"POST",keepalive:!0,referrerPolicy:K()?"origin":""},this.n=0,this.o=!1,this.p=Error.stackTraceLimit,this.q=R.console||{},this.r={},this.s=[],this.t=d(),this.u=[],this.v=[],this.w=null,this.x=R.location,this.y=this.x&&this.x.href,this.z();for(var a in this.q)this.r[a]=this.q[a]}var g=a(8),h=a(9),i=a(10),j=a(3),k=a(7),l=k.isErrorEvent,m=k.isDOMError,n=k.isDOMException,o=k.isError,p=k.isObject,q=k.isPlainObject,r=k.isUndefined,s=k.isFunction,t=k.isString,u=k.isArray,v=k.isEmptyObject,w=k.each,x=k.objectMerge,y=k.truncate,z=k.objectFrozen,A=k.hasKey,B=k.joinRegExp,C=k.urlencode,D=k.uuid4,E=k.htmlTreeAsString,F=k.isSameException,G=k.isSameStacktrace,H=k.parseUrl,I=k.fill,J=k.supportsFetch,K=k.supportsReferrerPolicy,L=k.serializeKeysForMessage,M=k.serializeException,N=k.sanitize,O=a(4).wrapMethod,P="source protocol user pass host port path".split(" "),Q=/^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/,R="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},S=R.document,T=R.navigator;f.prototype={VERSION:"3.25.1",debug:!1,TraceKit:g,config:function(a,b){var c=this;if(c.h)return this.A("error","Error: Raven has already been configured"),c;if(!a)return c;var d=c.l;b&&w(b,function(a,b){"tags"===a||"extra"===a||"user"===a?c.k[a]=b:d[a]=b}),c.setDSN(a),d.ignoreErrors.push(/^Script error\.?$/),d.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/),d.ignoreErrors=B(d.ignoreErrors),d.ignoreUrls=!!d.ignoreUrls.length&&B(d.ignoreUrls),d.whitelistUrls=!!d.whitelistUrls.length&&B(d.whitelistUrls),d.includePaths=B(d.includePaths),d.maxBreadcrumbs=Math.max(0,Math.min(d.maxBreadcrumbs||100,100));var e={xhr:!0,console:!0,dom:!0,location:!0,sentry:!0},f=d.autoBreadcrumbs;"[object Object]"==={}.toString.call(f)?f=x(e,f):f!==!1&&(f=e),d.autoBreadcrumbs=f;var h={tryCatch:!0},i=d.instrument;return"[object Object]"==={}.toString.call(i)?i=x(h,i):i!==!1&&(i=h),d.instrument=i,g.collectWindowErrors=!!d.collectWindowErrors,c},install:function(){var a=this;return a.isSetup()&&!a.o&&(g.report.subscribe(function(){a.B.apply(a,arguments)}),a.l.captureUnhandledRejections&&a.C(),a.D(),a.l.instrument&&a.l.instrument.tryCatch&&a.E(),a.l.autoBreadcrumbs&&a.F(),a.G(),a.o=!0),Error.stackTraceLimit=a.l.stackTraceLimit,this},setDSN:function(a){var b=this,c=b.H(a),d=c.path.lastIndexOf("/"),e=c.path.substr(1,d);b.I=a,b.i=c.user,b.J=c.pass&&c.pass.substr(1),b.j=c.path.substr(d+1),b.h=b.K(c),b.L=b.h+"/"+e+"api/"+b.j+"/store/",this.z()},context:function(a,b,c){return s(a)&&(c=b||[],b=a,a=void 0),this.wrap(a,b).apply(this,c)},wrap:function(a,b,c){function d(){var d=[],f=arguments.length,g=!a||a&&a.deep!==!1;for(c&&s(c)&&c.apply(this,arguments);f--;)d[f]=g?e.wrap(a,arguments[f]):arguments[f];try{return b.apply(this,d)}catch(h){throw e.M(),e.captureException(h,a),h}}var e=this;if(r(b)&&!s(a))return a;if(s(a)&&(b=a,a=void 0),!s(b))return b;try{if(b.N)return b;if(b.O)return b.O}catch(f){return b}for(var g in b)A(b,g)&&(d[g]=b[g]);return d.prototype=b.prototype,b.O=d,d.N=!0,d.P=b,d},uninstall:function(){return g.report.uninstall(),this.Q(),this.R(),this.S(),this.T(),Error.stackTraceLimit=this.p,this.o=!1,this},U:function(a){this.A("debug","Raven caught unhandled promise rejection:",a),this.captureException(a.reason,{extra:{unhandledPromiseRejection:!0}})},C:function(){return this.U=this.U.bind(this),R.addEventListener&&R.addEventListener("unhandledrejection",this.U),this},Q:function(){return R.removeEventListener&&R.removeEventListener("unhandledrejection",this.U),this},captureException:function(a,b){if(b=x({trimHeadFrames:0},b?b:{}),l(a)&&a.error)a=a.error;else{if(m(a)||n(a)){var c=a.name||(m(a)?"DOMError":"DOMException"),d=a.message?c+": "+a.message:c;return this.captureMessage(d,x(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}))}if(o(a))a=a;else{if(!q(a))return this.captureMessage(a,x(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}));b=this.V(b,a),a=new Error(b.message)}}this.e=a;try{var e=g.computeStackTrace(a);this.W(e,b)}catch(f){if(a!==f)throw f}return this},V:function(a,b){var c=Object.keys(b).sort(),d=x(a,{message:"Non-Error exception captured with keys: "+L(c),fingerprint:[i(c)],extra:a.extra||{}});return d.extra.X=M(b),d},captureMessage:function(a,b){if(!this.l.ignoreErrors.test||!this.l.ignoreErrors.test(a)){b=b||{},a+="";var c,d=x({message:a},b);try{throw new Error(a)}catch(e){c=e}c.name=null;var f=g.computeStackTrace(c),h=u(f.stack)&&f.stack[1];h&&"Raven.captureException"===h.func&&(h=f.stack[2]);var i=h&&h.url||"";if((!this.l.ignoreUrls.test||!this.l.ignoreUrls.test(i))&&(!this.l.whitelistUrls.test||this.l.whitelistUrls.test(i))){if(this.l.stacktrace||b&&b.stacktrace){d.fingerprint=null==d.fingerprint?a:d.fingerprint,b=x({trimHeadFrames:0},b),b.trimHeadFrames+=1;var j=this.Y(f,b);d.stacktrace={frames:j.reverse()}}return d.fingerprint&&(d.fingerprint=u(d.fingerprint)?d.fingerprint:[d.fingerprint]),this.Z(d),this}}},captureBreadcrumb:function(a){var b=x({timestamp:d()/1e3},a);if(s(this.l.breadcrumbCallback)){var c=this.l.breadcrumbCallback(b);if(p(c)&&!v(c))b=c;else if(c===!1)return this}return this.v.push(b),this.v.length>this.l.maxBreadcrumbs&&this.v.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.s.push([a,b]),this.o&&this.G(),this},setUserContext:function(a){return this.k.user=a,this},setExtraContext:function(a){return this.$("extra",a),this},setTagsContext:function(a){return this.$("tags",a),this},clearContext:function(){return this.k={},this},getContext:function(){return JSON.parse(h(this.k))},setEnvironment:function(a){return this.l.environment=a,this},setRelease:function(a){return this.l.release=a,this},setDataCallback:function(a){var b=this.l.dataCallback;return this.l.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.l.breadcrumbCallback;return this.l.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.l.shouldSendCallback;return this.l.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.l.transport=a,this},lastException:function(){return this.e},lastEventId:function(){return this.g},isSetup:function(){return!!this.b&&(!!this.h||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.A("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=R.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(S){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.I;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.k.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.K(this.H(c)),h=S.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(S.head||S.body).appendChild(h)}},M:function(){var a=this;this.n+=1,setTimeout(function(){a.n-=1})},_:function(a,b){var c,d;if(this.c){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),S.createEvent?(c=S.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=S.createEventObject(),c.eventType=a);for(d in b)A(b,d)&&(c[d]=b[d]);if(S.createEvent)S.dispatchEvent(c);else try{S.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},aa:function(a){var b=this;return function(c){if(b.ba=null,b.w!==c){b.w=c;var d;try{d=E(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ca:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.ba;g||a.aa("input")(c),clearTimeout(g),a.ba=setTimeout(function(){a.ba=null},b)}}},da:function(a,b){var c=H(this.x.href),d=H(b),e=H(a);this.y=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},D:function(){var a=this;a.ea=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.N?a.ea.apply(this.P,arguments):a.ea.apply(this,arguments)}},R:function(){this.ea&&(Function.prototype.toString=this.ea)},E:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.da(b.y,c+""),a.apply(this,arguments)}};I(R.history,"pushState",j,d),I(R.history,"replaceState",j,d)}if(c.console&&"console"in R&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};w(["debug","info","warn","error","log"],function(a,b){O(console,b,k)})}},S:function(){for(var a;this.u.length;){a=this.u.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},T:function(){for(var a in this.r)this.q[a]=this.r[a]},G:function(){var a=this;w(this.s,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},H:function(a){var b=Q.exec(a),c={},d=7;try{for(;d--;)c[P[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.l.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},K:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},B:function(){this.n||this.W.apply(this,arguments)},W:function(a,b){var c=this.Y(a,b);this._("handle",{stackInfo:a,options:b}),this.ga(a.name,a.message,a.url,a.lineno,c,b)},Y:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(w(a.stack,function(b,e){var f=c.ha(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.v,0)}),this.k.user&&(a.user=this.k.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),a=this.qa(a),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||v(a[b]))&&delete a[b]}),s(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!v(a)&&(!s(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.na()?void this.A("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function F(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&l(b))for(c=b.split(/\s+/),f=0;fc?Q(a,b-1):d}function R(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?X:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function S(a,b){function c(a){return m(a)?a.map(function(a){return c(a)}):k(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!m(b)||m(b)&&0===b.length)return a;var d,e=A(b),f="********";try{d=JSON.parse(T(a))}catch(g){return a}return c(d)}var T=a(9),U="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},V=3,W=51200,X=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isDOMError:g,isDOMException:h,isUndefined:i,isFunction:j,isPlainObject:k,isString:l,isArray:m,isEmptyObject:n,supportsErrorEvent:o,supportsDOMError:p,supportsDOMException:q,supportsFetch:r,supportsReferrerPolicy:s,supportsPromiseRejectionEvent:t,wrappedCallback:u,each:v,objectMerge:w,truncate:y,objectFrozen:x,hasKey:z,joinRegExp:A,urlencode:B,uuid4:D,htmlTreeAsString:E,htmlElementAsString:F,isSameException:I,isSameStacktrace:J,parseUrl:C,fill:K,safeJoin:L,serializeException:Q,serializeKeysForMessage:R,sanitize:S}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{9:9}],8:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}function e(){return"undefined"==typeof document||null==document.location?"":(document.location.origin||(document.location.origin=document.location.protocol+"//"+document.location.hostname+(document.location.port?":"+document.location.port:"")),document.location.origin)}var f=a(7),g={collectWindowErrors:!0,debug:!1},h="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},i=[].slice,j="?",k=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;g.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function e(a,b){var c=null;if(!b||g.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(i.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,h,i){var l=null,m=f.isErrorEvent(i)?i.error:i,n=f.isErrorEvent(a)?a.message:a;if(v)g.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&f.isError(m))l=g.computeStackTrace(m),e(l,!0);else{var p,r={url:b,line:c,column:h},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(k);p&&(s=p[1],n=p[2])}r.func=j,l={name:s,message:n,url:d(),stack:[r]},e(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=h.onerror,h.onerror=l,r=!0)}function n(){r&&(h.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,e.apply(null,[a,!1].concat(b))}function p(a,b){var c=i.call(arguments,1);if(v){if(u===a)return;o()}var d=g.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),g.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,f,g=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,h=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,i=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,k=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,l=/\((\S*)(?::(\d+))(?::(\d+))\)/,m=a.stack.split("\n"),n=[],o=(/^(.*) is undefined$/.exec(a.message),0),p=m.length;o eval")>-1;r&&(b=k.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==o||c[5]||"undefined"==typeof a.columnNumber||(n[0].column=a.columnNumber+1),f={url:c[3],func:c[1]||j,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}if(!f.func&&f.line&&(f.func=j),f.url&&"blob:"===f.url.substr(0,5)){var s=new XMLHttpRequest;if(s.open("GET",f.url,!1),s.send(null),200===s.status){var t=s.responseText||"";t=t.slice(-300);var u=t.match(/\/\/# sourceMappingURL=(.*)$/); +/*! Raven.js 3.25.2 (30b6d4e) | github.com/getsentry/raven-js */ +!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.Raven=a()}}(function(){return function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};b[g][0].call(k.exports,function(a){var c=b[g][1][a];return e(c?c:a)},k,k.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;g":"anonymous component")+(a._isVue&&a.$options.__file?" at "+a.$options.__file:"")}function e(a,b){if(b=b||window.Vue,b&&b.config){var c=b.config.errorHandler;b.config.errorHandler=function(b,e,f){var g={};"[object Object]"===Object.prototype.toString.call(e)&&(g.componentName=d(e),g.propsData=e.$options.propsData),"undefined"!=typeof f&&(g.lifecycleHook=f),a.captureException(b,{extra:g}),"function"==typeof c&&c.call(this,b,e,f)}}}b.exports=e,a(6).addPlugin(b.exports)},{6:6}],3:[function(a,b,c){function d(a){this.name="RavenConfigError",this.message=a}d.prototype=new Error,d.prototype.constructor=d,b.exports=d},{}],4:[function(a,b,c){var d=a(7),e=function(a,b,c){var e=a[b],f=a;if(b in a){var g="warn"===b?"warning":b;a[b]=function(){var a=[].slice.call(arguments),h=d.safeJoin(a," "),i={level:g,logger:"console",extra:{arguments:a}};"assert"===b?a[0]===!1&&(h="Assertion failed: "+(d.safeJoin(a.slice(1)," ")||"console.assert"),i.extra.arguments=a.slice(1),c&&c(h,i)):c&&c(h,i),e&&Function.prototype.apply.call(e,f,a)}}};b.exports={wrapMethod:e}},{7:7}],5:[function(a,b,c){(function(c){function d(){return+new Date}function e(a,b){return s(b)?function(c){return b(c,a)}:b}function f(){this.b=!("object"!=typeof JSON||!JSON.stringify),this.c=!r(S),this.d=!r(T),this.e=null,this.f=null,this.g=null,this.h=null,this.i=null,this.j=null,this.k={},this.l={release:R.SENTRY_RELEASE&&R.SENTRY_RELEASE.id,logger:"javascript",ignoreErrors:[],ignoreUrls:[],whitelistUrls:[],includePaths:[],headers:null,collectWindowErrors:!0,captureUnhandledRejections:!0,maxMessageLength:0,maxUrlLength:250,stackTraceLimit:50,autoBreadcrumbs:!0,instrument:!0,sampleRate:1,sanitizeKeys:[]},this.m={method:"POST",keepalive:!0,referrerPolicy:K()?"origin":""},this.n=0,this.o=!1,this.p=Error.stackTraceLimit,this.q=R.console||{},this.r={},this.s=[],this.t=d(),this.u=[],this.v=[],this.w=null,this.x=R.location,this.y=this.x&&this.x.href,this.z();for(var a in this.q)this.r[a]=this.q[a]}var g=a(8),h=a(9),i=a(10),j=a(3),k=a(7),l=k.isErrorEvent,m=k.isDOMError,n=k.isDOMException,o=k.isError,p=k.isObject,q=k.isPlainObject,r=k.isUndefined,s=k.isFunction,t=k.isString,u=k.isArray,v=k.isEmptyObject,w=k.each,x=k.objectMerge,y=k.truncate,z=k.objectFrozen,A=k.hasKey,B=k.joinRegExp,C=k.urlencode,D=k.uuid4,E=k.htmlTreeAsString,F=k.isSameException,G=k.isSameStacktrace,H=k.parseUrl,I=k.fill,J=k.supportsFetch,K=k.supportsReferrerPolicy,L=k.serializeKeysForMessage,M=k.serializeException,N=k.sanitize,O=a(4).wrapMethod,P="source protocol user pass host port path".split(" "),Q=/^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/,R="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},S=R.document,T=R.navigator;f.prototype={VERSION:"3.25.2",debug:!1,TraceKit:g,config:function(a,b){var c=this;if(c.h)return this.A("error","Error: Raven has already been configured"),c;if(!a)return c;var d=c.l;b&&w(b,function(a,b){"tags"===a||"extra"===a||"user"===a?c.k[a]=b:d[a]=b}),c.setDSN(a),d.ignoreErrors.push(/^Script error\.?$/),d.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/),d.ignoreErrors=B(d.ignoreErrors),d.ignoreUrls=!!d.ignoreUrls.length&&B(d.ignoreUrls),d.whitelistUrls=!!d.whitelistUrls.length&&B(d.whitelistUrls),d.includePaths=B(d.includePaths),d.maxBreadcrumbs=Math.max(0,Math.min(d.maxBreadcrumbs||100,100));var e={xhr:!0,console:!0,dom:!0,location:!0,sentry:!0},f=d.autoBreadcrumbs;"[object Object]"==={}.toString.call(f)?f=x(e,f):f!==!1&&(f=e),d.autoBreadcrumbs=f;var h={tryCatch:!0},i=d.instrument;return"[object Object]"==={}.toString.call(i)?i=x(h,i):i!==!1&&(i=h),d.instrument=i,g.collectWindowErrors=!!d.collectWindowErrors,c},install:function(){var a=this;return a.isSetup()&&!a.o&&(g.report.subscribe(function(){a.B.apply(a,arguments)}),a.l.captureUnhandledRejections&&a.C(),a.D(),a.l.instrument&&a.l.instrument.tryCatch&&a.E(),a.l.autoBreadcrumbs&&a.F(),a.G(),a.o=!0),Error.stackTraceLimit=a.l.stackTraceLimit,this},setDSN:function(a){var b=this,c=b.H(a),d=c.path.lastIndexOf("/"),e=c.path.substr(1,d);b.I=a,b.i=c.user,b.J=c.pass&&c.pass.substr(1),b.j=c.path.substr(d+1),b.h=b.K(c),b.L=b.h+"/"+e+"api/"+b.j+"/store/",this.z()},context:function(a,b,c){return s(a)&&(c=b||[],b=a,a=void 0),this.wrap(a,b).apply(this,c)},wrap:function(a,b,c){function d(){var d=[],f=arguments.length,g=!a||a&&a.deep!==!1;for(c&&s(c)&&c.apply(this,arguments);f--;)d[f]=g?e.wrap(a,arguments[f]):arguments[f];try{return b.apply(this,d)}catch(h){throw e.M(),e.captureException(h,a),h}}var e=this;if(r(b)&&!s(a))return a;if(s(a)&&(b=a,a=void 0),!s(b))return b;try{if(b.N)return b;if(b.O)return b.O}catch(f){return b}for(var g in b)A(b,g)&&(d[g]=b[g]);return d.prototype=b.prototype,b.O=d,d.N=!0,d.P=b,d},uninstall:function(){return g.report.uninstall(),this.Q(),this.R(),this.S(),this.T(),Error.stackTraceLimit=this.p,this.o=!1,this},U:function(a){this.A("debug","Raven caught unhandled promise rejection:",a),this.captureException(a.reason,{extra:{unhandledPromiseRejection:!0}})},C:function(){return this.U=this.U.bind(this),R.addEventListener&&R.addEventListener("unhandledrejection",this.U),this},Q:function(){return R.removeEventListener&&R.removeEventListener("unhandledrejection",this.U),this},captureException:function(a,b){if(b=x({trimHeadFrames:0},b?b:{}),l(a)&&a.error)a=a.error;else{if(m(a)||n(a)){var c=a.name||(m(a)?"DOMError":"DOMException"),d=a.message?c+": "+a.message:c;return this.captureMessage(d,x(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}))}if(o(a))a=a;else{if(!q(a))return this.captureMessage(a,x(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}));b=this.V(b,a),a=new Error(b.message)}}this.e=a;try{var e=g.computeStackTrace(a);this.W(e,b)}catch(f){if(a!==f)throw f}return this},V:function(a,b){var c=Object.keys(b).sort(),d=x(a,{message:"Non-Error exception captured with keys: "+L(c),fingerprint:[i(c)],extra:a.extra||{}});return d.extra.X=M(b),d},captureMessage:function(a,b){if(!this.l.ignoreErrors.test||!this.l.ignoreErrors.test(a)){b=b||{},a+="";var c,d=x({message:a},b);try{throw new Error(a)}catch(e){c=e}c.name=null;var f=g.computeStackTrace(c),h=u(f.stack)&&f.stack[1];h&&"Raven.captureException"===h.func&&(h=f.stack[2]);var i=h&&h.url||"";if((!this.l.ignoreUrls.test||!this.l.ignoreUrls.test(i))&&(!this.l.whitelistUrls.test||this.l.whitelistUrls.test(i))){if(this.l.stacktrace||b&&b.stacktrace){d.fingerprint=null==d.fingerprint?a:d.fingerprint,b=x({trimHeadFrames:0},b),b.trimHeadFrames+=1;var j=this.Y(f,b);d.stacktrace={frames:j.reverse()}}return d.fingerprint&&(d.fingerprint=u(d.fingerprint)?d.fingerprint:[d.fingerprint]),this.Z(d),this}}},captureBreadcrumb:function(a){var b=x({timestamp:d()/1e3},a);if(s(this.l.breadcrumbCallback)){var c=this.l.breadcrumbCallback(b);if(p(c)&&!v(c))b=c;else if(c===!1)return this}return this.v.push(b),this.v.length>this.l.maxBreadcrumbs&&this.v.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.s.push([a,b]),this.o&&this.G(),this},setUserContext:function(a){return this.k.user=a,this},setExtraContext:function(a){return this.$("extra",a),this},setTagsContext:function(a){return this.$("tags",a),this},clearContext:function(){return this.k={},this},getContext:function(){return JSON.parse(h(this.k))},setEnvironment:function(a){return this.l.environment=a,this},setRelease:function(a){return this.l.release=a,this},setDataCallback:function(a){var b=this.l.dataCallback;return this.l.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.l.breadcrumbCallback;return this.l.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.l.shouldSendCallback;return this.l.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.l.transport=a,this},lastException:function(){return this.e},lastEventId:function(){return this.g},isSetup:function(){return!!this.b&&(!!this.h||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.A("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=R.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(S){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.I;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.k.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.K(this.H(c)),h=S.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(S.head||S.body).appendChild(h)}},M:function(){var a=this;this.n+=1,setTimeout(function(){a.n-=1})},_:function(a,b){var c,d;if(this.c){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),S.createEvent?(c=S.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=S.createEventObject(),c.eventType=a);for(d in b)A(b,d)&&(c[d]=b[d]);if(S.createEvent)S.dispatchEvent(c);else try{S.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},aa:function(a){var b=this;return function(c){if(b.ba=null,b.w!==c){b.w=c;var d;try{d=E(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ca:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.ba;g||a.aa("input")(c),clearTimeout(g),a.ba=setTimeout(function(){a.ba=null},b)}}},da:function(a,b){var c=H(this.x.href),d=H(b),e=H(a);this.y=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},D:function(){var a=this;a.ea=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.N?a.ea.apply(this.P,arguments):a.ea.apply(this,arguments)}},R:function(){this.ea&&(Function.prototype.toString=this.ea)},E:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.da(b.y,c+""),a.apply(this,arguments)}};I(R.history,"pushState",j,d),I(R.history,"replaceState",j,d)}if(c.console&&"console"in R&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};w(["debug","info","warn","error","log"],function(a,b){O(console,b,k)})}},S:function(){for(var a;this.u.length;){a=this.u.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},T:function(){for(var a in this.r)this.q[a]=this.r[a]},G:function(){var a=this;w(this.s,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},H:function(a){var b=Q.exec(a),c={},d=7;try{for(;d--;)c[P[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.l.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},K:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},B:function(){this.n||this.W.apply(this,arguments)},W:function(a,b){var c=this.Y(a,b);this._("handle",{stackInfo:a,options:b}),this.ga(a.name,a.message,a.url,a.lineno,c,b)},Y:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(w(a.stack,function(b,e){var f=c.ha(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.v,0)}),this.k.user&&(a.user=this.k.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),a=this.qa(a),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||v(a[b]))&&delete a[b]}),s(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!v(a)&&(!s(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.na()?void this.A("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function F(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&l(b))for(c=b.split(/\s+/),f=0;fc?Q(a,b-1):d}function R(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?X:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function S(a,b){function c(a){return m(a)?a.map(function(a){return c(a)}):k(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!m(b)||m(b)&&0===b.length)return a;var d,e=A(b),f="********";try{d=JSON.parse(T(a))}catch(g){return a}return c(d)}var T=a(9),U="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},V=3,W=51200,X=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isDOMError:g,isDOMException:h,isUndefined:i,isFunction:j,isPlainObject:k,isString:l,isArray:m,isEmptyObject:n,supportsErrorEvent:o,supportsDOMError:p,supportsDOMException:q,supportsFetch:r,supportsReferrerPolicy:s,supportsPromiseRejectionEvent:t,wrappedCallback:u,each:v,objectMerge:w,truncate:y,objectFrozen:x,hasKey:z,joinRegExp:A,urlencode:B,uuid4:D,htmlTreeAsString:E,htmlElementAsString:F,isSameException:I,isSameStacktrace:J,parseUrl:C,fill:K,safeJoin:L,serializeException:Q,serializeKeysForMessage:R,sanitize:S}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{9:9}],8:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}function e(){return"undefined"==typeof document||null==document.location?"":(document.location.origin||(document.location.origin=document.location.protocol+"//"+document.location.hostname+(document.location.port?":"+document.location.port:"")),document.location.origin)}var f=a(7),g={collectWindowErrors:!0,debug:!1},h="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},i=[].slice,j="?",k=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;g.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function e(a,b){var c=null;if(!b||g.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(i.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,h,i){var l=null,m=f.isErrorEvent(i)?i.error:i,n=f.isErrorEvent(a)?a.message:a;if(v)g.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&f.isError(m))l=g.computeStackTrace(m),e(l,!0);else{var p,r={url:b,line:c,column:h},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(k);p&&(s=p[1],n=p[2])}r.func=j,l={name:s,message:n,url:d(),stack:[r]},e(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=h.onerror,h.onerror=l,r=!0)}function n(){r&&(h.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,e.apply(null,[a,!1].concat(b))}function p(a,b){var c=i.call(arguments,1);if(v){if(u===a)return;o()}var d=g.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),g.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,f,g=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,h=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,i=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,k=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,l=/\((\S*)(?::(\d+))(?::(\d+))\)/,m=a.stack.split("\n"),n=[],o=(/^(.*) is undefined$/.exec(a.message),0),p=m.length;o eval")>-1;r&&(b=k.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==o||c[5]||"undefined"==typeof a.columnNumber||(n[0].column=a.columnNumber+1),f={url:c[3],func:c[1]||j,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}if(!f.func&&f.line&&(f.func=j),f.url&&"blob:"===f.url.substr(0,5)){var s=new XMLHttpRequest;if(s.open("GET",f.url,!1),s.send(null),200===s.status){var t=s.responseText||"";t=t.slice(-300);var u=t.match(/\/\/# sourceMappingURL=(.*)$/); if(u){var v=u[1];"~"===v.charAt(0)&&(v=e()+v.slice(1)),f.url=v.slice(0,-4)}}}n.push(f)}return n.length?{name:a.name,message:a.message,url:d(),stack:n}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=j),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,e){for(var h,i,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==f&&o!==g.report){if(i={url:null,func:j,line:null,column:null},o.name?i.func=o.name:(h=k.exec(o.toString()))&&(i.func=h[1]),"undefined"==typeof i.func)try{i.func=h.input.substring(0,h.input.indexOf("{"))}catch(p){}m[""+o]?n=!0:m[""+o]=!0,l.push(i)}e&&l.splice(0,e);var q={name:a.name,message:a.message,url:d(),stack:l};return b(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),q}function f(b,e){var f=null;e=null==e?0:+e;try{if(f=a(b))return f}catch(h){if(g.debug)throw h}try{if(f=c(b,e+1))return f}catch(h){if(g.debug)throw h}return{name:b.name,message:b.message,url:d()}}return f.augmentStackTraceWithInitialElement=b,f.computeStackTraceFromStackProp=a,f}(),b.exports=g}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{7:7}],9:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}],10:[function(a,b,c){function d(a,b){var c=(65535&a)+(65535&b),d=(a>>16)+(b>>16)+(c>>16);return d<<16|65535&c}function e(a,b){return a<>>32-b}function f(a,b,c,f,g,h){return d(e(d(d(b,a),d(f,h)),g),c)}function g(a,b,c,d,e,g,h){return f(b&c|~b&d,a,b,e,g,h)}function h(a,b,c,d,e,g,h){return f(b&d|c&~d,a,b,e,g,h)}function i(a,b,c,d,e,g,h){return f(b^c^d,a,b,e,g,h)}function j(a,b,c,d,e,g,h){return f(c^(b|~d),a,b,e,g,h)}function k(a,b){a[b>>5]|=128<>>9<<4)+14]=b;var c,e,f,k,l,m=1732584193,n=-271733879,o=-1732584194,p=271733878;for(c=0;c>5]>>>b%32&255);return c}function m(a){var b,c=[];for(c[(a.length>>2)-1]=void 0,b=0;b>5]|=(255&a.charCodeAt(b/8))<16&&(e=k(e,8*a.length)),c=0;c<16;c+=1)f[c]=909522486^e[c],g[c]=1549556828^e[c];return d=k(f.concat(m(b)),512+8*b.length),l(k(g.concat(d),640))}function p(a){var b,c,d="0123456789abcdef",e="";for(c=0;c>>4&15)+d.charAt(15&b);return e}function q(a){return unescape(encodeURIComponent(a))}function r(a){return n(q(a))}function s(a){return p(r(a))}function t(a,b){return o(q(a),q(b))}function u(a,b){return p(t(a,b))}function v(a,b,c){return b?c?t(b,a):u(b,a):c?r(a):s(a)}b.exports=v},{}]},{},[6,1,2])(6)}); //# sourceMappingURL=raven.min.js.map \ No newline at end of file diff --git a/dist/angular,vue/raven.min.js.map b/dist/angular,vue/raven.min.js.map index b58050881cb2..947b6f6994f4 100644 --- a/dist/angular,vue/raven.min.js.map +++ b/dist/angular,vue/raven.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","angularPlugin","angular","RavenProvider","$get","$window","ExceptionHandlerProvider","$provide","decorator","exceptionHandler","R","$delegate","ex","cause","captureException","extra","moduleName","provider","config","setDataCallback","wrappedCallback","data","_normalizeData","angularPattern","exception","values","matches","exec","value","type","message","angularDocs","substr","addPlugin","6","7","2","formatComponentName","vm","$root","name","_isVue","$options","_componentTag","__file","vuePlugin","Vue","_oldOnError","errorHandler","error","info","metaData","Object","prototype","toString","componentName","propsData","lifecycleHook","3","RavenConfigError","constructor","4","utils","wrapMethod","console","level","callback","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","msg","safeJoin","logger","Function","apply","5","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","sanitizeKeys","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isErrorEvent","isDOMError","isDOMException","isError","isObject","isPlainObject","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","sanitize","wrapConsoleMethod","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","dsn","options","_logDebug","globalOptions","key","setDSN","push","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","context","func","undefined","wrap","_before","wrapped","deep","_ignoreNextOnError","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","U","event","reason","unhandledPromiseRejection","C","_promiseRejectionHandler","bind","addEventListener","Q","removeEventListener","trimHeadFrames","captureMessage","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","V","currentOptions","exKeys","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","M","setTimeout","_","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","aa","evtName","_keypressTimeout","target","category","ca","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","da","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","D","_originalFunctionToString","E","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","F","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","S","builtin","T","G","installer","concat","H","str","m","allowSecretKey","K","port","B","W","stackInfo","_triggerEvent","_processException","lineno","Y","frame","_normalizeFrame","in_app","ha","stackInfoUrl","normalized","filename","line","colno","column","function","ga","prefixedMessage","culprit","ia","request","Referer","breadcrumbs","_trimBreadcrumbs","ja","urlProp","urlProps","ka","httpData","userAgent","User-Agent","referrer","z","_backoffDuration","_backoffStart","na","oa","current","last","pa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Z","baseData","project","platform","_getHttpData","serverName","server_name","_sanitizeData","forEach","random","_sendProcessedPayload","qa","sa","ra","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","ta","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","onerror","open","setRequestHeader","send","ua","hash","evaluated","A","$","setUser","setReleaseContext","10","8","9","RavenConstructor","_Raven","noConflict","Client","what","supportsErrorEvent","ErrorEvent","supportsDOMError","DOMError","supportsDOMException","DOMException","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","sanitizeMask","safeInput","o_O","getLocationHref","getLocationOrigin","origin","hostname","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","responseText","sourceMaps","sourceMapAddress","charAt","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","y","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","string","raw"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file +{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","angularPlugin","angular","RavenProvider","$get","$window","ExceptionHandlerProvider","$provide","decorator","exceptionHandler","R","$delegate","ex","cause","captureException","extra","moduleName","provider","config","setDataCallback","wrappedCallback","data","_normalizeData","angularPattern","exception","values","matches","exec","value","type","message","angularDocs","substr","addPlugin","6","7","2","formatComponentName","vm","$root","name","_isVue","$options","_componentTag","__file","vuePlugin","Vue","_oldOnError","errorHandler","error","info","metaData","Object","prototype","toString","componentName","propsData","lifecycleHook","3","RavenConfigError","constructor","4","utils","wrapMethod","console","level","callback","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","msg","safeJoin","logger","Function","apply","5","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","sanitizeKeys","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isErrorEvent","isDOMError","isDOMException","isError","isObject","isPlainObject","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","sanitize","wrapConsoleMethod","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","dsn","options","_logDebug","globalOptions","key","setDSN","push","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","context","func","undefined","wrap","_before","wrapped","deep","_ignoreNextOnError","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","U","event","reason","unhandledPromiseRejection","C","_promiseRejectionHandler","bind","addEventListener","Q","removeEventListener","trimHeadFrames","captureMessage","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","V","currentOptions","exKeys","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","M","setTimeout","_","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","aa","evtName","_keypressTimeout","target","category","ca","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","da","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","D","_originalFunctionToString","E","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","F","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","S","builtin","T","G","installer","concat","H","str","m","allowSecretKey","K","port","B","W","stackInfo","_triggerEvent","_processException","lineno","Y","frame","_normalizeFrame","in_app","ha","stackInfoUrl","normalized","filename","line","colno","column","function","ga","prefixedMessage","transaction","ia","request","Referer","breadcrumbs","_trimBreadcrumbs","ja","urlProp","urlProps","ka","httpData","userAgent","User-Agent","referrer","z","_backoffDuration","_backoffStart","na","oa","current","last","pa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Z","baseData","project","platform","_getHttpData","serverName","server_name","_sanitizeData","forEach","random","_sendProcessedPayload","qa","sa","ra","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","ta","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","onerror","open","setRequestHeader","send","ua","hash","evaluated","A","$","setUser","setReleaseContext","10","8","9","RavenConstructor","_Raven","noConflict","Client","what","supportsErrorEvent","ErrorEvent","supportsDOMError","DOMError","supportsDOMException","DOMException","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","sanitizeMask","safeInput","o_O","getLocationHref","getLocationOrigin","origin","hostname","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","responseText","sourceMaps","sourceMapAddress","charAt","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","y","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","string","raw"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file diff --git a/dist/angular/raven.js b/dist/angular/raven.js index 27b3d9ea0f81..2286bc05e6b4 100644 --- a/dist/angular/raven.js +++ b/dist/angular/raven.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.25.1 (b6f3c7a) | github.com/getsentry/raven-js */ +/*! Raven.js 3.25.2 (30b6d4e) | github.com/getsentry/raven-js */ /* * Includes TraceKit @@ -194,7 +194,11 @@ function now() { var _window = typeof window !== 'undefined' ? window - : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; + : typeof global !== 'undefined' + ? global + : typeof self !== 'undefined' + ? self + : {}; var _document = _window.document; var _navigator = _window.navigator; @@ -284,7 +288,7 @@ Raven.prototype = { // webpack (using a build step causes webpack #1617). Grunt verifies that // this value matches package.json during build. // See: https://github.com/getsentry/raven-js/issues/465 - VERSION: '3.25.1', + VERSION: '3.25.2', debug: false, @@ -1840,7 +1844,7 @@ Raven.prototype = { } ] }, - culprit: fileurl + transaction: fileurl }, options ); @@ -1955,7 +1959,7 @@ Raven.prototype = { if ( !last || current.message !== last.message || // defined for captureMessage - current.culprit !== last.culprit // defined for captureException/onerror + current.transaction !== last.transaction // defined for captureException/onerror ) return false; diff --git a/dist/angular/raven.min.js b/dist/angular/raven.min.js index 2a526d823fbe..cc97a7f585c4 100644 --- a/dist/angular/raven.min.js +++ b/dist/angular/raven.min.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.25.1 (b6f3c7a) | github.com/getsentry/raven-js */ -!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.Raven=a()}}(function(){return function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};b[g][0].call(k.exports,function(a){var c=b[g][1][a];return e(c?c:a)},k,k.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;gthis.l.maxBreadcrumbs&&this.v.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.s.push([a,b]),this.o&&this.G(),this},setUserContext:function(a){return this.k.user=a,this},setExtraContext:function(a){return this.$("extra",a),this},setTagsContext:function(a){return this.$("tags",a),this},clearContext:function(){return this.k={},this},getContext:function(){return JSON.parse(h(this.k))},setEnvironment:function(a){return this.l.environment=a,this},setRelease:function(a){return this.l.release=a,this},setDataCallback:function(a){var b=this.l.dataCallback;return this.l.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.l.breadcrumbCallback;return this.l.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.l.shouldSendCallback;return this.l.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.l.transport=a,this},lastException:function(){return this.e},lastEventId:function(){return this.g},isSetup:function(){return!!this.b&&(!!this.h||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.A("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=R.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(S){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.I;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.k.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.K(this.H(c)),h=S.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(S.head||S.body).appendChild(h)}},M:function(){var a=this;this.n+=1,setTimeout(function(){a.n-=1})},_:function(a,b){var c,d;if(this.c){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),S.createEvent?(c=S.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=S.createEventObject(),c.eventType=a);for(d in b)A(b,d)&&(c[d]=b[d]);if(S.createEvent)S.dispatchEvent(c);else try{S.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},aa:function(a){var b=this;return function(c){if(b.ba=null,b.w!==c){b.w=c;var d;try{d=E(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ca:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.ba;g||a.aa("input")(c),clearTimeout(g),a.ba=setTimeout(function(){a.ba=null},b)}}},da:function(a,b){var c=H(this.x.href),d=H(b),e=H(a);this.y=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},D:function(){var a=this;a.ea=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.N?a.ea.apply(this.P,arguments):a.ea.apply(this,arguments)}},R:function(){this.ea&&(Function.prototype.toString=this.ea)},E:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.da(b.y,c+""),a.apply(this,arguments)}};I(R.history,"pushState",j,d),I(R.history,"replaceState",j,d)}if(c.console&&"console"in R&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};w(["debug","info","warn","error","log"],function(a,b){O(console,b,k)})}},S:function(){for(var a;this.u.length;){a=this.u.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},T:function(){for(var a in this.r)this.q[a]=this.r[a]},G:function(){var a=this;w(this.s,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},H:function(a){var b=Q.exec(a),c={},d=7;try{for(;d--;)c[P[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.l.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},K:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},B:function(){this.n||this.W.apply(this,arguments)},W:function(a,b){var c=this.Y(a,b);this._("handle",{stackInfo:a,options:b}),this.ga(a.name,a.message,a.url,a.lineno,c,b)},Y:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(w(a.stack,function(b,e){var f=c.ha(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.v,0)}),this.k.user&&(a.user=this.k.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),a=this.qa(a),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||v(a[b]))&&delete a[b]}),s(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!v(a)&&(!s(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.na()?void this.A("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function F(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&l(b))for(c=b.split(/\s+/),f=0;fc?Q(a,b-1):d}function R(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?X:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function S(a,b){function c(a){return m(a)?a.map(function(a){return c(a)}):k(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!m(b)||m(b)&&0===b.length)return a;var d,e=A(b),f="********";try{d=JSON.parse(T(a))}catch(g){return a}return c(d)}var T=a(8),U="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},V=3,W=51200,X=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isDOMError:g,isDOMException:h,isUndefined:i,isFunction:j,isPlainObject:k,isString:l,isArray:m,isEmptyObject:n,supportsErrorEvent:o,supportsDOMError:p,supportsDOMException:q,supportsFetch:r,supportsReferrerPolicy:s,supportsPromiseRejectionEvent:t,wrappedCallback:u,each:v,objectMerge:w,truncate:y,objectFrozen:x,hasKey:z,joinRegExp:A,urlencode:B,uuid4:D,htmlTreeAsString:E,htmlElementAsString:F,isSameException:I,isSameStacktrace:J,parseUrl:C,fill:K,safeJoin:L,serializeException:Q,serializeKeysForMessage:R,sanitize:S}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{8:8}],7:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}function e(){return"undefined"==typeof document||null==document.location?"":(document.location.origin||(document.location.origin=document.location.protocol+"//"+document.location.hostname+(document.location.port?":"+document.location.port:"")),document.location.origin)}var f=a(6),g={collectWindowErrors:!0,debug:!1},h="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},i=[].slice,j="?",k=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;g.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function e(a,b){var c=null;if(!b||g.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(i.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,h,i){var l=null,m=f.isErrorEvent(i)?i.error:i,n=f.isErrorEvent(a)?a.message:a;if(v)g.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&f.isError(m))l=g.computeStackTrace(m),e(l,!0);else{var p,r={url:b,line:c,column:h},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(k);p&&(s=p[1],n=p[2])}r.func=j,l={name:s,message:n,url:d(),stack:[r]},e(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=h.onerror,h.onerror=l,r=!0)}function n(){r&&(h.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,e.apply(null,[a,!1].concat(b))}function p(a,b){var c=i.call(arguments,1);if(v){if(u===a)return;o()}var d=g.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),g.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,f,g=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,h=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,i=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,k=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,l=/\((\S*)(?::(\d+))(?::(\d+))\)/,m=a.stack.split("\n"),n=[],o=(/^(.*) is undefined$/.exec(a.message),0),p=m.length;o eval")>-1;r&&(b=k.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==o||c[5]||"undefined"==typeof a.columnNumber||(n[0].column=a.columnNumber+1),f={url:c[3],func:c[1]||j,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}if(!f.func&&f.line&&(f.func=j),f.url&&"blob:"===f.url.substr(0,5)){var s=new XMLHttpRequest;if(s.open("GET",f.url,!1),s.send(null),200===s.status){var t=s.responseText||"";t=t.slice(-300);var u=t.match(/\/\/# sourceMappingURL=(.*)$/);if(u){var v=u[1];"~"===v.charAt(0)&&(v=e()+v.slice(1)),f.url=v.slice(0,-4)}}}n.push(f)}return n.length?{name:a.name,message:a.message,url:d(),stack:n}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=j),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,e){for(var h,i,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==f&&o!==g.report){ +/*! Raven.js 3.25.2 (30b6d4e) | github.com/getsentry/raven-js */ +!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.Raven=a()}}(function(){return function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};b[g][0].call(k.exports,function(a){var c=b[g][1][a];return e(c?c:a)},k,k.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;gthis.l.maxBreadcrumbs&&this.v.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.s.push([a,b]),this.o&&this.G(),this},setUserContext:function(a){return this.k.user=a,this},setExtraContext:function(a){return this.$("extra",a),this},setTagsContext:function(a){return this.$("tags",a),this},clearContext:function(){return this.k={},this},getContext:function(){return JSON.parse(h(this.k))},setEnvironment:function(a){return this.l.environment=a,this},setRelease:function(a){return this.l.release=a,this},setDataCallback:function(a){var b=this.l.dataCallback;return this.l.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.l.breadcrumbCallback;return this.l.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.l.shouldSendCallback;return this.l.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.l.transport=a,this},lastException:function(){return this.e},lastEventId:function(){return this.g},isSetup:function(){return!!this.b&&(!!this.h||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.A("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=R.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(S){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.I;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.k.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.K(this.H(c)),h=S.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(S.head||S.body).appendChild(h)}},M:function(){var a=this;this.n+=1,setTimeout(function(){a.n-=1})},_:function(a,b){var c,d;if(this.c){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),S.createEvent?(c=S.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=S.createEventObject(),c.eventType=a);for(d in b)A(b,d)&&(c[d]=b[d]);if(S.createEvent)S.dispatchEvent(c);else try{S.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},aa:function(a){var b=this;return function(c){if(b.ba=null,b.w!==c){b.w=c;var d;try{d=E(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ca:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.ba;g||a.aa("input")(c),clearTimeout(g),a.ba=setTimeout(function(){a.ba=null},b)}}},da:function(a,b){var c=H(this.x.href),d=H(b),e=H(a);this.y=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},D:function(){var a=this;a.ea=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.N?a.ea.apply(this.P,arguments):a.ea.apply(this,arguments)}},R:function(){this.ea&&(Function.prototype.toString=this.ea)},E:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.da(b.y,c+""),a.apply(this,arguments)}};I(R.history,"pushState",j,d),I(R.history,"replaceState",j,d)}if(c.console&&"console"in R&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};w(["debug","info","warn","error","log"],function(a,b){O(console,b,k)})}},S:function(){for(var a;this.u.length;){a=this.u.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},T:function(){for(var a in this.r)this.q[a]=this.r[a]},G:function(){var a=this;w(this.s,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},H:function(a){var b=Q.exec(a),c={},d=7;try{for(;d--;)c[P[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.l.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},K:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},B:function(){this.n||this.W.apply(this,arguments)},W:function(a,b){var c=this.Y(a,b);this._("handle",{stackInfo:a,options:b}),this.ga(a.name,a.message,a.url,a.lineno,c,b)},Y:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(w(a.stack,function(b,e){var f=c.ha(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.v,0)}),this.k.user&&(a.user=this.k.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),a=this.qa(a),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||v(a[b]))&&delete a[b]}),s(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!v(a)&&(!s(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.na()?void this.A("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function F(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&l(b))for(c=b.split(/\s+/),f=0;fc?Q(a,b-1):d}function R(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?X:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function S(a,b){function c(a){return m(a)?a.map(function(a){return c(a)}):k(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!m(b)||m(b)&&0===b.length)return a;var d,e=A(b),f="********";try{d=JSON.parse(T(a))}catch(g){return a}return c(d)}var T=a(8),U="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},V=3,W=51200,X=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isDOMError:g,isDOMException:h,isUndefined:i,isFunction:j,isPlainObject:k,isString:l,isArray:m,isEmptyObject:n,supportsErrorEvent:o,supportsDOMError:p,supportsDOMException:q,supportsFetch:r,supportsReferrerPolicy:s,supportsPromiseRejectionEvent:t,wrappedCallback:u,each:v,objectMerge:w,truncate:y,objectFrozen:x,hasKey:z,joinRegExp:A,urlencode:B,uuid4:D,htmlTreeAsString:E,htmlElementAsString:F,isSameException:I,isSameStacktrace:J,parseUrl:C,fill:K,safeJoin:L,serializeException:Q,serializeKeysForMessage:R,sanitize:S}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{8:8}],7:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}function e(){return"undefined"==typeof document||null==document.location?"":(document.location.origin||(document.location.origin=document.location.protocol+"//"+document.location.hostname+(document.location.port?":"+document.location.port:"")),document.location.origin)}var f=a(6),g={collectWindowErrors:!0,debug:!1},h="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},i=[].slice,j="?",k=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;g.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function e(a,b){var c=null;if(!b||g.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(i.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,h,i){var l=null,m=f.isErrorEvent(i)?i.error:i,n=f.isErrorEvent(a)?a.message:a;if(v)g.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&f.isError(m))l=g.computeStackTrace(m),e(l,!0);else{var p,r={url:b,line:c,column:h},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(k);p&&(s=p[1],n=p[2])}r.func=j,l={name:s,message:n,url:d(),stack:[r]},e(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=h.onerror,h.onerror=l,r=!0)}function n(){r&&(h.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,e.apply(null,[a,!1].concat(b))}function p(a,b){var c=i.call(arguments,1);if(v){if(u===a)return;o()}var d=g.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),g.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,f,g=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,h=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,i=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,k=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,l=/\((\S*)(?::(\d+))(?::(\d+))\)/,m=a.stack.split("\n"),n=[],o=(/^(.*) is undefined$/.exec(a.message),0),p=m.length;o eval")>-1;r&&(b=k.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==o||c[5]||"undefined"==typeof a.columnNumber||(n[0].column=a.columnNumber+1),f={url:c[3],func:c[1]||j,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}if(!f.func&&f.line&&(f.func=j),f.url&&"blob:"===f.url.substr(0,5)){var s=new XMLHttpRequest;if(s.open("GET",f.url,!1),s.send(null),200===s.status){var t=s.responseText||"";t=t.slice(-300);var u=t.match(/\/\/# sourceMappingURL=(.*)$/);if(u){var v=u[1];"~"===v.charAt(0)&&(v=e()+v.slice(1)),f.url=v.slice(0,-4)}}}n.push(f)}return n.length?{name:a.name,message:a.message,url:d(),stack:n}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=j),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,e){for(var h,i,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==f&&o!==g.report){ if(i={url:null,func:j,line:null,column:null},o.name?i.func=o.name:(h=k.exec(o.toString()))&&(i.func=h[1]),"undefined"==typeof i.func)try{i.func=h.input.substring(0,h.input.indexOf("{"))}catch(p){}m[""+o]?n=!0:m[""+o]=!0,l.push(i)}e&&l.splice(0,e);var q={name:a.name,message:a.message,url:d(),stack:l};return b(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),q}function f(b,e){var f=null;e=null==e?0:+e;try{if(f=a(b))return f}catch(h){if(g.debug)throw h}try{if(f=c(b,e+1))return f}catch(h){if(g.debug)throw h}return{name:b.name,message:b.message,url:d()}}return f.augmentStackTraceWithInitialElement=b,f.computeStackTraceFromStackProp=a,f}(),b.exports=g}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{6:6}],8:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}],9:[function(a,b,c){function d(a,b){var c=(65535&a)+(65535&b),d=(a>>16)+(b>>16)+(c>>16);return d<<16|65535&c}function e(a,b){return a<>>32-b}function f(a,b,c,f,g,h){return d(e(d(d(b,a),d(f,h)),g),c)}function g(a,b,c,d,e,g,h){return f(b&c|~b&d,a,b,e,g,h)}function h(a,b,c,d,e,g,h){return f(b&d|c&~d,a,b,e,g,h)}function i(a,b,c,d,e,g,h){return f(b^c^d,a,b,e,g,h)}function j(a,b,c,d,e,g,h){return f(c^(b|~d),a,b,e,g,h)}function k(a,b){a[b>>5]|=128<>>9<<4)+14]=b;var c,e,f,k,l,m=1732584193,n=-271733879,o=-1732584194,p=271733878;for(c=0;c>5]>>>b%32&255);return c}function m(a){var b,c=[];for(c[(a.length>>2)-1]=void 0,b=0;b>5]|=(255&a.charCodeAt(b/8))<16&&(e=k(e,8*a.length)),c=0;c<16;c+=1)f[c]=909522486^e[c],g[c]=1549556828^e[c];return d=k(f.concat(m(b)),512+8*b.length),l(k(g.concat(d),640))}function p(a){var b,c,d="0123456789abcdef",e="";for(c=0;c>>4&15)+d.charAt(15&b);return e}function q(a){return unescape(encodeURIComponent(a))}function r(a){return n(q(a))}function s(a){return p(r(a))}function t(a,b){return o(q(a),q(b))}function u(a,b){return p(t(a,b))}function v(a,b,c){return b?c?t(b,a):u(b,a):c?r(a):s(a)}b.exports=v},{}]},{},[5,1])(5)}); //# sourceMappingURL=raven.min.js.map \ No newline at end of file diff --git a/dist/angular/raven.min.js.map b/dist/angular/raven.min.js.map index 7a669c8846fa..2298269c409d 100644 --- a/dist/angular/raven.min.js.map +++ b/dist/angular/raven.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","angularPlugin","angular","RavenProvider","$get","$window","ExceptionHandlerProvider","$provide","decorator","exceptionHandler","R","$delegate","ex","cause","captureException","extra","moduleName","provider","config","setDataCallback","wrappedCallback","data","_normalizeData","angularPattern","exception","values","matches","exec","value","type","message","angularDocs","substr","addPlugin","5","6","2","RavenConfigError","name","prototype","constructor","3","utils","wrapMethod","console","level","callback","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","msg","safeJoin","logger","Function","apply","4","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","sanitizeKeys","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isErrorEvent","isDOMError","isDOMException","isError","isObject","isPlainObject","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","sanitize","wrapConsoleMethod","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","dsn","options","_logDebug","globalOptions","key","setDSN","push","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","toString","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","context","func","undefined","wrap","_before","wrapped","deep","_ignoreNextOnError","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","U","event","reason","unhandledPromiseRejection","C","_promiseRejectionHandler","bind","addEventListener","Q","removeEventListener","trimHeadFrames","error","captureMessage","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","V","currentOptions","exKeys","Object","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","M","setTimeout","_","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","aa","evtName","_keypressTimeout","target","category","ca","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","da","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","D","_originalFunctionToString","E","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","F","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","S","builtin","T","G","installer","concat","H","str","m","allowSecretKey","K","port","B","W","stackInfo","_triggerEvent","_processException","lineno","Y","frame","_normalizeFrame","in_app","ha","stackInfoUrl","normalized","filename","line","colno","column","function","ga","prefixedMessage","culprit","ia","request","Referer","breadcrumbs","_trimBreadcrumbs","ja","urlProp","urlProps","ka","httpData","userAgent","User-Agent","referrer","z","_backoffDuration","_backoffStart","na","oa","current","last","pa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Z","baseData","project","platform","_getHttpData","serverName","server_name","_sanitizeData","forEach","random","_sendProcessedPayload","qa","sa","ra","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","ta","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","onerror","open","setRequestHeader","send","ua","hash","evaluated","A","$","setUser","setReleaseContext","7","8","9","RavenConstructor","_Raven","noConflict","Client","what","supportsErrorEvent","ErrorEvent","supportsDOMError","DOMError","supportsDOMException","DOMException","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","sanitizeMask","safeInput","o_O","getLocationHref","getLocationOrigin","origin","hostname","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","responseText","sourceMaps","sourceMapAddress","charAt","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","y","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","string","raw"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file +{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","angularPlugin","angular","RavenProvider","$get","$window","ExceptionHandlerProvider","$provide","decorator","exceptionHandler","R","$delegate","ex","cause","captureException","extra","moduleName","provider","config","setDataCallback","wrappedCallback","data","_normalizeData","angularPattern","exception","values","matches","exec","value","type","message","angularDocs","substr","addPlugin","5","6","2","RavenConfigError","name","prototype","constructor","3","utils","wrapMethod","console","level","callback","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","msg","safeJoin","logger","Function","apply","4","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","sanitizeKeys","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isErrorEvent","isDOMError","isDOMException","isError","isObject","isPlainObject","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","sanitize","wrapConsoleMethod","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","dsn","options","_logDebug","globalOptions","key","setDSN","push","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","toString","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","context","func","undefined","wrap","_before","wrapped","deep","_ignoreNextOnError","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","U","event","reason","unhandledPromiseRejection","C","_promiseRejectionHandler","bind","addEventListener","Q","removeEventListener","trimHeadFrames","error","captureMessage","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","V","currentOptions","exKeys","Object","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","M","setTimeout","_","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","aa","evtName","_keypressTimeout","target","category","ca","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","da","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","D","_originalFunctionToString","E","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","F","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","S","builtin","T","G","installer","concat","H","str","m","allowSecretKey","K","port","B","W","stackInfo","_triggerEvent","_processException","lineno","Y","frame","_normalizeFrame","in_app","ha","stackInfoUrl","normalized","filename","line","colno","column","function","ga","prefixedMessage","transaction","ia","request","Referer","breadcrumbs","_trimBreadcrumbs","ja","urlProp","urlProps","ka","httpData","userAgent","User-Agent","referrer","z","_backoffDuration","_backoffStart","na","oa","current","last","pa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Z","baseData","project","platform","_getHttpData","serverName","server_name","_sanitizeData","forEach","random","_sendProcessedPayload","qa","sa","ra","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","ta","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","onerror","open","setRequestHeader","send","ua","hash","evaluated","A","$","setUser","setReleaseContext","7","8","9","RavenConstructor","_Raven","noConflict","Client","what","supportsErrorEvent","ErrorEvent","supportsDOMError","DOMError","supportsDOMException","DOMException","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","sanitizeMask","safeInput","o_O","getLocationHref","getLocationOrigin","origin","hostname","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","responseText","sourceMaps","sourceMapAddress","charAt","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","y","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","string","raw"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file diff --git a/dist/console,ember,require,vue/raven.js b/dist/console,ember,require,vue/raven.js index 608f9b0c2f61..0f0541177fd7 100644 --- a/dist/console,ember,require,vue/raven.js +++ b/dist/console,ember,require,vue/raven.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.25.1 (b6f3c7a) | github.com/getsentry/raven-js */ +/*! Raven.js 3.25.2 (30b6d4e) | github.com/getsentry/raven-js */ /* * Includes TraceKit @@ -252,7 +252,11 @@ function now() { var _window = typeof window !== 'undefined' ? window - : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; + : typeof global !== 'undefined' + ? global + : typeof self !== 'undefined' + ? self + : {}; var _document = _window.document; var _navigator = _window.navigator; @@ -342,7 +346,7 @@ Raven.prototype = { // webpack (using a build step causes webpack #1617). Grunt verifies that // this value matches package.json during build. // See: https://github.com/getsentry/raven-js/issues/465 - VERSION: '3.25.1', + VERSION: '3.25.2', debug: false, @@ -1898,7 +1902,7 @@ Raven.prototype = { } ] }, - culprit: fileurl + transaction: fileurl }, options ); @@ -2013,7 +2017,7 @@ Raven.prototype = { if ( !last || current.message !== last.message || // defined for captureMessage - current.culprit !== last.culprit // defined for captureException/onerror + current.transaction !== last.transaction // defined for captureException/onerror ) return false; diff --git a/dist/console,ember,require,vue/raven.min.js b/dist/console,ember,require,vue/raven.min.js index 73058098c57c..a90164772ca8 100644 --- a/dist/console,ember,require,vue/raven.min.js +++ b/dist/console,ember,require,vue/raven.min.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.25.1 (b6f3c7a) | github.com/getsentry/raven-js */ -!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.Raven=a()}}(function(){var a;return function b(a,c,d){function e(g,h){if(!c[g]){if(!a[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};a[g][0].call(k.exports,function(b){var c=a[g][1][b];return e(c?c:b)},k,k.exports,b,a,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;g":"anonymous component")+(a._isVue&&a.$options.__file?" at "+a.$options.__file:"")}function e(a,b){if(b=b||window.Vue,b&&b.config){var c=b.config.errorHandler;b.config.errorHandler=function(b,e,f){var g={};"[object Object]"===Object.prototype.toString.call(e)&&(g.componentName=d(e),g.propsData=e.$options.propsData),"undefined"!=typeof f&&(g.lifecycleHook=f),a.captureException(b,{extra:g}),"function"==typeof c&&c.call(this,b,e,f)}}}b.exports=e,a(8).addPlugin(b.exports)},{8:8}],5:[function(a,b,c){function d(a){this.name="RavenConfigError",this.message=a}d.prototype=new Error,d.prototype.constructor=d,b.exports=d},{}],6:[function(a,b,c){var d=a(9),e=function(a,b,c){var e=a[b],f=a;if(b in a){var g="warn"===b?"warning":b;a[b]=function(){var a=[].slice.call(arguments),h=d.safeJoin(a," "),i={level:g,logger:"console",extra:{arguments:a}};"assert"===b?a[0]===!1&&(h="Assertion failed: "+(d.safeJoin(a.slice(1)," ")||"console.assert"),i.extra.arguments=a.slice(1),c&&c(h,i)):c&&c(h,i),e&&Function.prototype.apply.call(e,f,a)}}};b.exports={wrapMethod:e}},{9:9}],7:[function(a,b,c){(function(c){function d(){return+new Date}function e(a,b){return s(b)?function(c){return b(c,a)}:b}function f(){this.a=!("object"!=typeof JSON||!JSON.stringify),this.b=!r(S),this.c=!r(T),this.d=null,this.e=null,this.f=null,this.g=null,this.h=null,this.i=null,this.j={},this.k={release:R.SENTRY_RELEASE&&R.SENTRY_RELEASE.id,logger:"javascript",ignoreErrors:[],ignoreUrls:[],whitelistUrls:[],includePaths:[],headers:null,collectWindowErrors:!0,captureUnhandledRejections:!0,maxMessageLength:0,maxUrlLength:250,stackTraceLimit:50,autoBreadcrumbs:!0,instrument:!0,sampleRate:1,sanitizeKeys:[]},this.l={method:"POST",keepalive:!0,referrerPolicy:K()?"origin":""},this.m=0,this.n=!1,this.o=Error.stackTraceLimit,this.p=R.console||{},this.q={},this.r=[],this.s=d(),this.t=[],this.u=[],this.v=null,this.w=R.location,this.x=this.w&&this.w.href,this.y();for(var a in this.p)this.q[a]=this.p[a]}var g=a(10),h=a(11),i=a(12),j=a(5),k=a(9),l=k.isErrorEvent,m=k.isDOMError,n=k.isDOMException,o=k.isError,p=k.isObject,q=k.isPlainObject,r=k.isUndefined,s=k.isFunction,t=k.isString,u=k.isArray,v=k.isEmptyObject,w=k.each,x=k.objectMerge,y=k.truncate,z=k.objectFrozen,A=k.hasKey,B=k.joinRegExp,C=k.urlencode,D=k.uuid4,E=k.htmlTreeAsString,F=k.isSameException,G=k.isSameStacktrace,H=k.parseUrl,I=k.fill,J=k.supportsFetch,K=k.supportsReferrerPolicy,L=k.serializeKeysForMessage,M=k.serializeException,N=k.sanitize,O=a(6).wrapMethod,P="source protocol user pass host port path".split(" "),Q=/^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/,R="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},S=R.document,T=R.navigator;f.prototype={VERSION:"3.25.1",debug:!1,TraceKit:g,config:function(a,b){var c=this;if(c.g)return this.z("error","Error: Raven has already been configured"),c;if(!a)return c;var d=c.k;b&&w(b,function(a,b){"tags"===a||"extra"===a||"user"===a?c.j[a]=b:d[a]=b}),c.setDSN(a),d.ignoreErrors.push(/^Script error\.?$/),d.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/),d.ignoreErrors=B(d.ignoreErrors),d.ignoreUrls=!!d.ignoreUrls.length&&B(d.ignoreUrls),d.whitelistUrls=!!d.whitelistUrls.length&&B(d.whitelistUrls),d.includePaths=B(d.includePaths),d.maxBreadcrumbs=Math.max(0,Math.min(d.maxBreadcrumbs||100,100));var e={xhr:!0,console:!0,dom:!0,location:!0,sentry:!0},f=d.autoBreadcrumbs;"[object Object]"==={}.toString.call(f)?f=x(e,f):f!==!1&&(f=e),d.autoBreadcrumbs=f;var h={tryCatch:!0},i=d.instrument;return"[object Object]"==={}.toString.call(i)?i=x(h,i):i!==!1&&(i=h),d.instrument=i,g.collectWindowErrors=!!d.collectWindowErrors,c},install:function(){var a=this;return a.isSetup()&&!a.n&&(g.report.subscribe(function(){a.A.apply(a,arguments)}),a.k.captureUnhandledRejections&&a.B(),a.C(),a.k.instrument&&a.k.instrument.tryCatch&&a.D(),a.k.autoBreadcrumbs&&a.E(),a.F(),a.n=!0),Error.stackTraceLimit=a.k.stackTraceLimit,this},setDSN:function(a){var b=this,c=b.G(a),d=c.path.lastIndexOf("/"),e=c.path.substr(1,d);b.H=a,b.h=c.user,b.I=c.pass&&c.pass.substr(1),b.i=c.path.substr(d+1),b.g=b.J(c),b.K=b.g+"/"+e+"api/"+b.i+"/store/",this.y()},context:function(a,b,c){return s(a)&&(c=b||[],b=a,a=void 0),this.wrap(a,b).apply(this,c)},wrap:function(a,b,c){function d(){var d=[],f=arguments.length,g=!a||a&&a.deep!==!1;for(c&&s(c)&&c.apply(this,arguments);f--;)d[f]=g?e.wrap(a,arguments[f]):arguments[f];try{return b.apply(this,d)}catch(h){throw e.L(),e.captureException(h,a),h}}var e=this;if(r(b)&&!s(a))return a;if(s(a)&&(b=a,a=void 0),!s(b))return b;try{if(b.M)return b;if(b.N)return b.N}catch(f){return b}for(var g in b)A(b,g)&&(d[g]=b[g]);return d.prototype=b.prototype,b.N=d,d.M=!0,d.O=b,d},uninstall:function(){return g.report.uninstall(),this.P(),this.Q(),this.R(),this.S(),Error.stackTraceLimit=this.o,this.n=!1,this},T:function(a){this.z("debug","Raven caught unhandled promise rejection:",a),this.captureException(a.reason,{extra:{unhandledPromiseRejection:!0}})},B:function(){return this.T=this.T.bind(this),R.addEventListener&&R.addEventListener("unhandledrejection",this.T),this},P:function(){return R.removeEventListener&&R.removeEventListener("unhandledrejection",this.T),this},captureException:function(a,b){if(b=x({trimHeadFrames:0},b?b:{}),l(a)&&a.error)a=a.error;else{if(m(a)||n(a)){var c=a.name||(m(a)?"DOMError":"DOMException"),d=a.message?c+": "+a.message:c;return this.captureMessage(d,x(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}))}if(o(a))a=a;else{if(!q(a))return this.captureMessage(a,x(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}));b=this.U(b,a),a=new Error(b.message)}}this.d=a;try{var e=g.computeStackTrace(a);this.V(e,b)}catch(f){if(a!==f)throw f}return this},U:function(a,b){var c=Object.keys(b).sort(),d=x(a,{message:"Non-Error exception captured with keys: "+L(c),fingerprint:[i(c)],extra:a.extra||{}});return d.extra.W=M(b),d},captureMessage:function(a,b){if(!this.k.ignoreErrors.test||!this.k.ignoreErrors.test(a)){b=b||{},a+="";var c,d=x({message:a},b);try{throw new Error(a)}catch(e){c=e}c.name=null;var f=g.computeStackTrace(c),h=u(f.stack)&&f.stack[1];h&&"Raven.captureException"===h.func&&(h=f.stack[2]);var i=h&&h.url||"";if((!this.k.ignoreUrls.test||!this.k.ignoreUrls.test(i))&&(!this.k.whitelistUrls.test||this.k.whitelistUrls.test(i))){if(this.k.stacktrace||b&&b.stacktrace){d.fingerprint=null==d.fingerprint?a:d.fingerprint,b=x({trimHeadFrames:0},b),b.trimHeadFrames+=1;var j=this.X(f,b);d.stacktrace={frames:j.reverse()}}return d.fingerprint&&(d.fingerprint=u(d.fingerprint)?d.fingerprint:[d.fingerprint]),this.Y(d),this}}},captureBreadcrumb:function(a){var b=x({timestamp:d()/1e3},a);if(s(this.k.breadcrumbCallback)){var c=this.k.breadcrumbCallback(b);if(p(c)&&!v(c))b=c;else if(c===!1)return this}return this.u.push(b),this.u.length>this.k.maxBreadcrumbs&&this.u.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.r.push([a,b]),this.n&&this.F(),this},setUserContext:function(a){return this.j.user=a,this},setExtraContext:function(a){return this.Z("extra",a),this},setTagsContext:function(a){return this.Z("tags",a),this},clearContext:function(){return this.j={},this},getContext:function(){return JSON.parse(h(this.j))},setEnvironment:function(a){return this.k.environment=a,this},setRelease:function(a){return this.k.release=a,this},setDataCallback:function(a){var b=this.k.dataCallback;return this.k.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.k.breadcrumbCallback;return this.k.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.k.shouldSendCallback;return this.k.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.k.transport=a,this},lastException:function(){return this.d},lastEventId:function(){return this.f},isSetup:function(){return!!this.a&&(!!this.g||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.z("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=R.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(S){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.H;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.j.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.J(this.G(c)),h=S.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(S.head||S.body).appendChild(h)}},L:function(){var a=this;this.m+=1,setTimeout(function(){a.m-=1})},$:function(a,b){var c,d;if(this.b){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),S.createEvent?(c=S.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=S.createEventObject(),c.eventType=a);for(d in b)A(b,d)&&(c[d]=b[d]);if(S.createEvent)S.dispatchEvent(c);else try{S.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},_:function(a){var b=this;return function(c){if(b.aa=null,b.v!==c){b.v=c;var d;try{d=E(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ba:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.aa;g||a._("input")(c),clearTimeout(g),a.aa=setTimeout(function(){a.aa=null},b)}}},ca:function(a,b){var c=H(this.w.href),d=H(b),e=H(a);this.x=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},C:function(){var a=this;a.da=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.M?a.da.apply(this.O,arguments):a.da.apply(this,arguments)}},Q:function(){this.da&&(Function.prototype.toString=this.da)},D:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.ca(b.x,c+""),a.apply(this,arguments)}};I(R.history,"pushState",j,d),I(R.history,"replaceState",j,d)}if(c.console&&"console"in R&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};w(["debug","info","warn","error","log"],function(a,b){O(console,b,k)})}},R:function(){for(var a;this.t.length;){a=this.t.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},S:function(){for(var a in this.q)this.p[a]=this.q[a]},F:function(){var a=this;w(this.r,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},G:function(a){var b=Q.exec(a),c={},d=7;try{for(;d--;)c[P[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.k.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},J:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},A:function(){this.m||this.V.apply(this,arguments)},V:function(a,b){var c=this.X(a,b);this.$("handle",{stackInfo:a,options:b}),this.fa(a.name,a.message,a.url,a.lineno,c,b)},X:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(w(a.stack,function(b,e){var f=c.ga(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.u,0)}),this.j.user&&(a.user=this.j.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),a=this.pa(a),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||v(a[b]))&&delete a[b]}),s(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!v(a)&&(!s(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.ma()?void this.z("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function F(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&l(b))for(c=b.split(/\s+/),f=0;fc?Q(a,b-1):d}function R(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?X:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function S(a,b){function c(a){return m(a)?a.map(function(a){return c(a)}):k(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!m(b)||m(b)&&0===b.length)return a;var d,e=A(b),f="********";try{d=JSON.parse(T(a))}catch(g){return a}return c(d)}var T=a(11),U="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},V=3,W=51200,X=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isDOMError:g,isDOMException:h,isUndefined:i,isFunction:j,isPlainObject:k,isString:l,isArray:m,isEmptyObject:n,supportsErrorEvent:o,supportsDOMError:p,supportsDOMException:q,supportsFetch:r,supportsReferrerPolicy:s,supportsPromiseRejectionEvent:t,wrappedCallback:u,each:v,objectMerge:w,truncate:y,objectFrozen:x,hasKey:z,joinRegExp:A,urlencode:B,uuid4:D,htmlTreeAsString:E,htmlElementAsString:F,isSameException:I,isSameStacktrace:J,parseUrl:C,fill:K,safeJoin:L,serializeException:Q,serializeKeysForMessage:R,sanitize:S}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{11:11}],10:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}function e(){return"undefined"==typeof document||null==document.location?"":(document.location.origin||(document.location.origin=document.location.protocol+"//"+document.location.hostname+(document.location.port?":"+document.location.port:"")),document.location.origin)}var f=a(9),g={collectWindowErrors:!0,debug:!1},h="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},i=[].slice,j="?",k=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;g.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function e(a,b){var c=null;if(!b||g.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(i.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,h,i){var l=null,m=f.isErrorEvent(i)?i.error:i,n=f.isErrorEvent(a)?a.message:a;if(v)g.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&f.isError(m))l=g.computeStackTrace(m),e(l,!0);else{var p,r={url:b,line:c,column:h},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(k);p&&(s=p[1],n=p[2])}r.func=j,l={name:s,message:n,url:d(),stack:[r]},e(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=h.onerror,h.onerror=l,r=!0)}function n(){r&&(h.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,e.apply(null,[a,!1].concat(b))}function p(a,b){var c=i.call(arguments,1);if(v){if(u===a)return;o()}var d=g.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),g.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,f,g=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,h=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,i=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,k=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,l=/\((\S*)(?::(\d+))(?::(\d+))\)/,m=a.stack.split("\n"),n=[],o=(/^(.*) is undefined$/.exec(a.message),0),p=m.length;o eval")>-1;r&&(b=k.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==o||c[5]||"undefined"==typeof a.columnNumber||(n[0].column=a.columnNumber+1),f={url:c[3],func:c[1]||j,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}if(!f.func&&f.line&&(f.func=j),f.url&&"blob:"===f.url.substr(0,5)){ +/*! Raven.js 3.25.2 (30b6d4e) | github.com/getsentry/raven-js */ +!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.Raven=a()}}(function(){var a;return function b(a,c,d){function e(g,h){if(!c[g]){if(!a[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};a[g][0].call(k.exports,function(b){var c=a[g][1][b];return e(c?c:b)},k,k.exports,b,a,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;g":"anonymous component")+(a._isVue&&a.$options.__file?" at "+a.$options.__file:"")}function e(a,b){if(b=b||window.Vue,b&&b.config){var c=b.config.errorHandler;b.config.errorHandler=function(b,e,f){var g={};"[object Object]"===Object.prototype.toString.call(e)&&(g.componentName=d(e),g.propsData=e.$options.propsData),"undefined"!=typeof f&&(g.lifecycleHook=f),a.captureException(b,{extra:g}),"function"==typeof c&&c.call(this,b,e,f)}}}b.exports=e,a(8).addPlugin(b.exports)},{8:8}],5:[function(a,b,c){function d(a){this.name="RavenConfigError",this.message=a}d.prototype=new Error,d.prototype.constructor=d,b.exports=d},{}],6:[function(a,b,c){var d=a(9),e=function(a,b,c){var e=a[b],f=a;if(b in a){var g="warn"===b?"warning":b;a[b]=function(){var a=[].slice.call(arguments),h=d.safeJoin(a," "),i={level:g,logger:"console",extra:{arguments:a}};"assert"===b?a[0]===!1&&(h="Assertion failed: "+(d.safeJoin(a.slice(1)," ")||"console.assert"),i.extra.arguments=a.slice(1),c&&c(h,i)):c&&c(h,i),e&&Function.prototype.apply.call(e,f,a)}}};b.exports={wrapMethod:e}},{9:9}],7:[function(a,b,c){(function(c){function d(){return+new Date}function e(a,b){return s(b)?function(c){return b(c,a)}:b}function f(){this.a=!("object"!=typeof JSON||!JSON.stringify),this.b=!r(S),this.c=!r(T),this.d=null,this.e=null,this.f=null,this.g=null,this.h=null,this.i=null,this.j={},this.k={release:R.SENTRY_RELEASE&&R.SENTRY_RELEASE.id,logger:"javascript",ignoreErrors:[],ignoreUrls:[],whitelistUrls:[],includePaths:[],headers:null,collectWindowErrors:!0,captureUnhandledRejections:!0,maxMessageLength:0,maxUrlLength:250,stackTraceLimit:50,autoBreadcrumbs:!0,instrument:!0,sampleRate:1,sanitizeKeys:[]},this.l={method:"POST",keepalive:!0,referrerPolicy:K()?"origin":""},this.m=0,this.n=!1,this.o=Error.stackTraceLimit,this.p=R.console||{},this.q={},this.r=[],this.s=d(),this.t=[],this.u=[],this.v=null,this.w=R.location,this.x=this.w&&this.w.href,this.y();for(var a in this.p)this.q[a]=this.p[a]}var g=a(10),h=a(11),i=a(12),j=a(5),k=a(9),l=k.isErrorEvent,m=k.isDOMError,n=k.isDOMException,o=k.isError,p=k.isObject,q=k.isPlainObject,r=k.isUndefined,s=k.isFunction,t=k.isString,u=k.isArray,v=k.isEmptyObject,w=k.each,x=k.objectMerge,y=k.truncate,z=k.objectFrozen,A=k.hasKey,B=k.joinRegExp,C=k.urlencode,D=k.uuid4,E=k.htmlTreeAsString,F=k.isSameException,G=k.isSameStacktrace,H=k.parseUrl,I=k.fill,J=k.supportsFetch,K=k.supportsReferrerPolicy,L=k.serializeKeysForMessage,M=k.serializeException,N=k.sanitize,O=a(6).wrapMethod,P="source protocol user pass host port path".split(" "),Q=/^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/,R="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},S=R.document,T=R.navigator;f.prototype={VERSION:"3.25.2",debug:!1,TraceKit:g,config:function(a,b){var c=this;if(c.g)return this.z("error","Error: Raven has already been configured"),c;if(!a)return c;var d=c.k;b&&w(b,function(a,b){"tags"===a||"extra"===a||"user"===a?c.j[a]=b:d[a]=b}),c.setDSN(a),d.ignoreErrors.push(/^Script error\.?$/),d.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/),d.ignoreErrors=B(d.ignoreErrors),d.ignoreUrls=!!d.ignoreUrls.length&&B(d.ignoreUrls),d.whitelistUrls=!!d.whitelistUrls.length&&B(d.whitelistUrls),d.includePaths=B(d.includePaths),d.maxBreadcrumbs=Math.max(0,Math.min(d.maxBreadcrumbs||100,100));var e={xhr:!0,console:!0,dom:!0,location:!0,sentry:!0},f=d.autoBreadcrumbs;"[object Object]"==={}.toString.call(f)?f=x(e,f):f!==!1&&(f=e),d.autoBreadcrumbs=f;var h={tryCatch:!0},i=d.instrument;return"[object Object]"==={}.toString.call(i)?i=x(h,i):i!==!1&&(i=h),d.instrument=i,g.collectWindowErrors=!!d.collectWindowErrors,c},install:function(){var a=this;return a.isSetup()&&!a.n&&(g.report.subscribe(function(){a.A.apply(a,arguments)}),a.k.captureUnhandledRejections&&a.B(),a.C(),a.k.instrument&&a.k.instrument.tryCatch&&a.D(),a.k.autoBreadcrumbs&&a.E(),a.F(),a.n=!0),Error.stackTraceLimit=a.k.stackTraceLimit,this},setDSN:function(a){var b=this,c=b.G(a),d=c.path.lastIndexOf("/"),e=c.path.substr(1,d);b.H=a,b.h=c.user,b.I=c.pass&&c.pass.substr(1),b.i=c.path.substr(d+1),b.g=b.J(c),b.K=b.g+"/"+e+"api/"+b.i+"/store/",this.y()},context:function(a,b,c){return s(a)&&(c=b||[],b=a,a=void 0),this.wrap(a,b).apply(this,c)},wrap:function(a,b,c){function d(){var d=[],f=arguments.length,g=!a||a&&a.deep!==!1;for(c&&s(c)&&c.apply(this,arguments);f--;)d[f]=g?e.wrap(a,arguments[f]):arguments[f];try{return b.apply(this,d)}catch(h){throw e.L(),e.captureException(h,a),h}}var e=this;if(r(b)&&!s(a))return a;if(s(a)&&(b=a,a=void 0),!s(b))return b;try{if(b.M)return b;if(b.N)return b.N}catch(f){return b}for(var g in b)A(b,g)&&(d[g]=b[g]);return d.prototype=b.prototype,b.N=d,d.M=!0,d.O=b,d},uninstall:function(){return g.report.uninstall(),this.P(),this.Q(),this.R(),this.S(),Error.stackTraceLimit=this.o,this.n=!1,this},T:function(a){this.z("debug","Raven caught unhandled promise rejection:",a),this.captureException(a.reason,{extra:{unhandledPromiseRejection:!0}})},B:function(){return this.T=this.T.bind(this),R.addEventListener&&R.addEventListener("unhandledrejection",this.T),this},P:function(){return R.removeEventListener&&R.removeEventListener("unhandledrejection",this.T),this},captureException:function(a,b){if(b=x({trimHeadFrames:0},b?b:{}),l(a)&&a.error)a=a.error;else{if(m(a)||n(a)){var c=a.name||(m(a)?"DOMError":"DOMException"),d=a.message?c+": "+a.message:c;return this.captureMessage(d,x(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}))}if(o(a))a=a;else{if(!q(a))return this.captureMessage(a,x(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}));b=this.U(b,a),a=new Error(b.message)}}this.d=a;try{var e=g.computeStackTrace(a);this.V(e,b)}catch(f){if(a!==f)throw f}return this},U:function(a,b){var c=Object.keys(b).sort(),d=x(a,{message:"Non-Error exception captured with keys: "+L(c),fingerprint:[i(c)],extra:a.extra||{}});return d.extra.W=M(b),d},captureMessage:function(a,b){if(!this.k.ignoreErrors.test||!this.k.ignoreErrors.test(a)){b=b||{},a+="";var c,d=x({message:a},b);try{throw new Error(a)}catch(e){c=e}c.name=null;var f=g.computeStackTrace(c),h=u(f.stack)&&f.stack[1];h&&"Raven.captureException"===h.func&&(h=f.stack[2]);var i=h&&h.url||"";if((!this.k.ignoreUrls.test||!this.k.ignoreUrls.test(i))&&(!this.k.whitelistUrls.test||this.k.whitelistUrls.test(i))){if(this.k.stacktrace||b&&b.stacktrace){d.fingerprint=null==d.fingerprint?a:d.fingerprint,b=x({trimHeadFrames:0},b),b.trimHeadFrames+=1;var j=this.X(f,b);d.stacktrace={frames:j.reverse()}}return d.fingerprint&&(d.fingerprint=u(d.fingerprint)?d.fingerprint:[d.fingerprint]),this.Y(d),this}}},captureBreadcrumb:function(a){var b=x({timestamp:d()/1e3},a);if(s(this.k.breadcrumbCallback)){var c=this.k.breadcrumbCallback(b);if(p(c)&&!v(c))b=c;else if(c===!1)return this}return this.u.push(b),this.u.length>this.k.maxBreadcrumbs&&this.u.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.r.push([a,b]),this.n&&this.F(),this},setUserContext:function(a){return this.j.user=a,this},setExtraContext:function(a){return this.Z("extra",a),this},setTagsContext:function(a){return this.Z("tags",a),this},clearContext:function(){return this.j={},this},getContext:function(){return JSON.parse(h(this.j))},setEnvironment:function(a){return this.k.environment=a,this},setRelease:function(a){return this.k.release=a,this},setDataCallback:function(a){var b=this.k.dataCallback;return this.k.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.k.breadcrumbCallback;return this.k.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.k.shouldSendCallback;return this.k.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.k.transport=a,this},lastException:function(){return this.d},lastEventId:function(){return this.f},isSetup:function(){return!!this.a&&(!!this.g||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.z("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=R.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(S){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.H;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.j.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.J(this.G(c)),h=S.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(S.head||S.body).appendChild(h)}},L:function(){var a=this;this.m+=1,setTimeout(function(){a.m-=1})},$:function(a,b){var c,d;if(this.b){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),S.createEvent?(c=S.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=S.createEventObject(),c.eventType=a);for(d in b)A(b,d)&&(c[d]=b[d]);if(S.createEvent)S.dispatchEvent(c);else try{S.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},_:function(a){var b=this;return function(c){if(b.aa=null,b.v!==c){b.v=c;var d;try{d=E(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ba:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.aa;g||a._("input")(c),clearTimeout(g),a.aa=setTimeout(function(){a.aa=null},b)}}},ca:function(a,b){var c=H(this.w.href),d=H(b),e=H(a);this.x=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},C:function(){var a=this;a.da=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.M?a.da.apply(this.O,arguments):a.da.apply(this,arguments)}},Q:function(){this.da&&(Function.prototype.toString=this.da)},D:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.ca(b.x,c+""),a.apply(this,arguments)}};I(R.history,"pushState",j,d),I(R.history,"replaceState",j,d)}if(c.console&&"console"in R&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};w(["debug","info","warn","error","log"],function(a,b){O(console,b,k)})}},R:function(){for(var a;this.t.length;){a=this.t.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},S:function(){for(var a in this.q)this.p[a]=this.q[a]},F:function(){var a=this;w(this.r,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},G:function(a){var b=Q.exec(a),c={},d=7;try{for(;d--;)c[P[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.k.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},J:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},A:function(){this.m||this.V.apply(this,arguments)},V:function(a,b){var c=this.X(a,b);this.$("handle",{stackInfo:a,options:b}),this.fa(a.name,a.message,a.url,a.lineno,c,b)},X:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(w(a.stack,function(b,e){var f=c.ga(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.u,0)}),this.j.user&&(a.user=this.j.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),a=this.pa(a),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||v(a[b]))&&delete a[b]}),s(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!v(a)&&(!s(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.ma()?void this.z("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function F(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&l(b))for(c=b.split(/\s+/),f=0;fc?Q(a,b-1):d}function R(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?X:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function S(a,b){function c(a){return m(a)?a.map(function(a){return c(a)}):k(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!m(b)||m(b)&&0===b.length)return a;var d,e=A(b),f="********";try{d=JSON.parse(T(a))}catch(g){return a}return c(d)}var T=a(11),U="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},V=3,W=51200,X=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isDOMError:g,isDOMException:h,isUndefined:i,isFunction:j,isPlainObject:k,isString:l,isArray:m,isEmptyObject:n,supportsErrorEvent:o,supportsDOMError:p,supportsDOMException:q,supportsFetch:r,supportsReferrerPolicy:s,supportsPromiseRejectionEvent:t,wrappedCallback:u,each:v,objectMerge:w,truncate:y,objectFrozen:x,hasKey:z,joinRegExp:A,urlencode:B,uuid4:D,htmlTreeAsString:E,htmlElementAsString:F,isSameException:I,isSameStacktrace:J,parseUrl:C,fill:K,safeJoin:L,serializeException:Q,serializeKeysForMessage:R,sanitize:S}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{11:11}],10:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}function e(){return"undefined"==typeof document||null==document.location?"":(document.location.origin||(document.location.origin=document.location.protocol+"//"+document.location.hostname+(document.location.port?":"+document.location.port:"")),document.location.origin)}var f=a(9),g={collectWindowErrors:!0,debug:!1},h="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},i=[].slice,j="?",k=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;g.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function e(a,b){var c=null;if(!b||g.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(i.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,h,i){var l=null,m=f.isErrorEvent(i)?i.error:i,n=f.isErrorEvent(a)?a.message:a;if(v)g.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&f.isError(m))l=g.computeStackTrace(m),e(l,!0);else{var p,r={url:b,line:c,column:h},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(k);p&&(s=p[1],n=p[2])}r.func=j,l={name:s,message:n,url:d(),stack:[r]},e(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=h.onerror,h.onerror=l,r=!0)}function n(){r&&(h.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,e.apply(null,[a,!1].concat(b))}function p(a,b){var c=i.call(arguments,1);if(v){if(u===a)return;o()}var d=g.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),g.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,f,g=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,h=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,i=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,k=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,l=/\((\S*)(?::(\d+))(?::(\d+))\)/,m=a.stack.split("\n"),n=[],o=(/^(.*) is undefined$/.exec(a.message),0),p=m.length;o eval")>-1;r&&(b=k.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==o||c[5]||"undefined"==typeof a.columnNumber||(n[0].column=a.columnNumber+1),f={url:c[3],func:c[1]||j,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}if(!f.func&&f.line&&(f.func=j),f.url&&"blob:"===f.url.substr(0,5)){ var s=new XMLHttpRequest;if(s.open("GET",f.url,!1),s.send(null),200===s.status){var t=s.responseText||"";t=t.slice(-300);var u=t.match(/\/\/# sourceMappingURL=(.*)$/);if(u){var v=u[1];"~"===v.charAt(0)&&(v=e()+v.slice(1)),f.url=v.slice(0,-4)}}}n.push(f)}return n.length?{name:a.name,message:a.message,url:d(),stack:n}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=j),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,e){for(var h,i,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==f&&o!==g.report){if(i={url:null,func:j,line:null,column:null},o.name?i.func=o.name:(h=k.exec(o.toString()))&&(i.func=h[1]),"undefined"==typeof i.func)try{i.func=h.input.substring(0,h.input.indexOf("{"))}catch(p){}m[""+o]?n=!0:m[""+o]=!0,l.push(i)}e&&l.splice(0,e);var q={name:a.name,message:a.message,url:d(),stack:l};return b(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),q}function f(b,e){var f=null;e=null==e?0:+e;try{if(f=a(b))return f}catch(h){if(g.debug)throw h}try{if(f=c(b,e+1))return f}catch(h){if(g.debug)throw h}return{name:b.name,message:b.message,url:d()}}return f.augmentStackTraceWithInitialElement=b,f.computeStackTraceFromStackProp=a,f}(),b.exports=g}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{9:9}],11:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}],12:[function(a,b,c){function d(a,b){var c=(65535&a)+(65535&b),d=(a>>16)+(b>>16)+(c>>16);return d<<16|65535&c}function e(a,b){return a<>>32-b}function f(a,b,c,f,g,h){return d(e(d(d(b,a),d(f,h)),g),c)}function g(a,b,c,d,e,g,h){return f(b&c|~b&d,a,b,e,g,h)}function h(a,b,c,d,e,g,h){return f(b&d|c&~d,a,b,e,g,h)}function i(a,b,c,d,e,g,h){return f(b^c^d,a,b,e,g,h)}function j(a,b,c,d,e,g,h){return f(c^(b|~d),a,b,e,g,h)}function k(a,b){a[b>>5]|=128<>>9<<4)+14]=b;var c,e,f,k,l,m=1732584193,n=-271733879,o=-1732584194,p=271733878;for(c=0;c>5]>>>b%32&255);return c}function m(a){var b,c=[];for(c[(a.length>>2)-1]=void 0,b=0;b>5]|=(255&a.charCodeAt(b/8))<16&&(e=k(e,8*a.length)),c=0;c<16;c+=1)f[c]=909522486^e[c],g[c]=1549556828^e[c];return d=k(f.concat(m(b)),512+8*b.length),l(k(g.concat(d),640))}function p(a){var b,c,d="0123456789abcdef",e="";for(c=0;c>>4&15)+d.charAt(15&b);return e}function q(a){return unescape(encodeURIComponent(a))}function r(a){return n(q(a))}function s(a){return p(r(a))}function t(a,b){return o(q(a),q(b))}function u(a,b){return p(t(a,b))}function v(a,b,c){return b?c?t(b,a):u(b,a):c?r(a):s(a)}b.exports=v},{}]},{},[8,1,2,3,4])(8)}); //# sourceMappingURL=raven.min.js.map \ No newline at end of file diff --git a/dist/console,ember,require,vue/raven.min.js.map b/dist/console,ember,require,vue/raven.min.js.map index cf268821b343..e3f967c14573 100644 --- a/dist/console,ember,require,vue/raven.min.js.map +++ b/dist/console,ember,require,vue/raven.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","consolePlugin","console","pluginOptions","logLevels","levels","push","callback","msg","data","captureMessage","level","pop","wrapConsoleMethod","wrapMethod","addPlugin","6","8","2","emberPlugin","Ember","_oldOnError","onerror","error","captureException","RSVP","on","reason","extra","context","3","requirePlugin","wrap","deep","4","formatComponentName","vm","$root","name","_isVue","$options","_componentTag","__file","vuePlugin","Vue","config","errorHandler","info","metaData","Object","prototype","toString","componentName","propsData","lifecycleHook","5","RavenConfigError","message","constructor","utils","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","safeJoin","logger","Function","apply","9","7","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","sanitizeKeys","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isErrorEvent","isDOMError","isDOMException","isError","isObject","isPlainObject","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","sanitize","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","dsn","options","_logDebug","globalOptions","key","value","setDSN","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","substr","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","func","undefined","_before","wrapped","_ignoreNextOnError","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","T","event","unhandledPromiseRejection","B","_promiseRejectionHandler","bind","addEventListener","P","removeEventListener","ex","trimHeadFrames","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","U","currentOptions","exKeys","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","setDataCallback","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","L","setTimeout","$","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","_","evtName","_keypressTimeout","target","category","ba","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","ca","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","C","_originalFunctionToString","Q","D","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","type","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","E","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","R","builtin","S","F","installer","concat","G","str","m","exec","allowSecretKey","J","port","A","V","stackInfo","_triggerEvent","_processException","lineno","X","frame","_normalizeFrame","in_app","ga","stackInfoUrl","normalized","filename","line","colno","column","function","fa","prefixedMessage","exception","values","culprit","ha","request","Referer","breadcrumbs","_trimBreadcrumbs","ia","urlProp","urlProps","ja","httpData","userAgent","User-Agent","referrer","y","_backoffDuration","_backoffStart","ma","na","current","last","oa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Y","baseData","project","platform","_getHttpData","serverName","server_name","_sanitizeData","forEach","random","_sendProcessedPayload","pa","ra","qa","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","sa","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","open","setRequestHeader","send","ta","hash","evaluated","z","Z","setUser","setReleaseContext","10","11","12","RavenConstructor","_Raven","noConflict","Client","what","supportsErrorEvent","ErrorEvent","supportsDOMError","DOMError","supportsDOMException","DOMException","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","wrappedCallback","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","sanitizeMask","safeInput","o_O","getLocationHref","getLocationOrigin","origin","hostname","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","responseText","sourceMaps","sourceMapAddress","charAt","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","string","raw"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file +{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","consolePlugin","console","pluginOptions","logLevels","levels","push","callback","msg","data","captureMessage","level","pop","wrapConsoleMethod","wrapMethod","addPlugin","6","8","2","emberPlugin","Ember","_oldOnError","onerror","error","captureException","RSVP","on","reason","extra","context","3","requirePlugin","wrap","deep","4","formatComponentName","vm","$root","name","_isVue","$options","_componentTag","__file","vuePlugin","Vue","config","errorHandler","info","metaData","Object","prototype","toString","componentName","propsData","lifecycleHook","5","RavenConfigError","message","constructor","utils","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","safeJoin","logger","Function","apply","9","7","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","sanitizeKeys","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isErrorEvent","isDOMError","isDOMException","isError","isObject","isPlainObject","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","sanitize","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","dsn","options","_logDebug","globalOptions","key","value","setDSN","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","substr","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","func","undefined","_before","wrapped","_ignoreNextOnError","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","T","event","unhandledPromiseRejection","B","_promiseRejectionHandler","bind","addEventListener","P","removeEventListener","ex","trimHeadFrames","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","U","currentOptions","exKeys","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","setDataCallback","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","L","setTimeout","$","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","_","evtName","_keypressTimeout","target","category","ba","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","ca","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","C","_originalFunctionToString","Q","D","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","type","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","E","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","R","builtin","S","F","installer","concat","G","str","m","exec","allowSecretKey","J","port","A","V","stackInfo","_triggerEvent","_processException","lineno","X","frame","_normalizeFrame","in_app","ga","stackInfoUrl","normalized","filename","line","colno","column","function","fa","prefixedMessage","exception","values","transaction","ha","request","Referer","breadcrumbs","_trimBreadcrumbs","ia","urlProp","urlProps","ja","httpData","userAgent","User-Agent","referrer","y","_backoffDuration","_backoffStart","ma","na","current","last","oa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Y","baseData","project","platform","_getHttpData","serverName","server_name","_sanitizeData","forEach","random","_sendProcessedPayload","pa","ra","qa","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","sa","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","open","setRequestHeader","send","ta","hash","evaluated","z","Z","setUser","setReleaseContext","10","11","12","RavenConstructor","_Raven","noConflict","Client","what","supportsErrorEvent","ErrorEvent","supportsDOMError","DOMError","supportsDOMException","DOMException","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","wrappedCallback","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","sanitizeMask","safeInput","o_O","getLocationHref","getLocationOrigin","origin","hostname","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","responseText","sourceMaps","sourceMapAddress","charAt","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","string","raw"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file diff --git a/dist/console,ember,require/raven.js b/dist/console,ember,require/raven.js index 43bb81981a6e..4801c4c7f1bf 100644 --- a/dist/console,ember,require/raven.js +++ b/dist/console,ember,require/raven.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.25.1 (b6f3c7a) | github.com/getsentry/raven-js */ +/*! Raven.js 3.25.2 (30b6d4e) | github.com/getsentry/raven-js */ /* * Includes TraceKit @@ -202,7 +202,11 @@ function now() { var _window = typeof window !== 'undefined' ? window - : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; + : typeof global !== 'undefined' + ? global + : typeof self !== 'undefined' + ? self + : {}; var _document = _window.document; var _navigator = _window.navigator; @@ -292,7 +296,7 @@ Raven.prototype = { // webpack (using a build step causes webpack #1617). Grunt verifies that // this value matches package.json during build. // See: https://github.com/getsentry/raven-js/issues/465 - VERSION: '3.25.1', + VERSION: '3.25.2', debug: false, @@ -1848,7 +1852,7 @@ Raven.prototype = { } ] }, - culprit: fileurl + transaction: fileurl }, options ); @@ -1963,7 +1967,7 @@ Raven.prototype = { if ( !last || current.message !== last.message || // defined for captureMessage - current.culprit !== last.culprit // defined for captureException/onerror + current.transaction !== last.transaction // defined for captureException/onerror ) return false; diff --git a/dist/console,ember,require/raven.min.js b/dist/console,ember,require/raven.min.js index 7899758f00a6..dda4384aa2eb 100644 --- a/dist/console,ember,require/raven.min.js +++ b/dist/console,ember,require/raven.min.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.25.1 (b6f3c7a) | github.com/getsentry/raven-js */ -!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.Raven=a()}}(function(){var a;return function b(a,c,d){function e(g,h){if(!c[g]){if(!a[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};a[g][0].call(k.exports,function(b){var c=a[g][1][b];return e(c?c:b)},k,k.exports,b,a,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;gthis.k.maxBreadcrumbs&&this.u.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.r.push([a,b]),this.n&&this.F(),this},setUserContext:function(a){return this.j.user=a,this},setExtraContext:function(a){return this.Z("extra",a),this},setTagsContext:function(a){return this.Z("tags",a),this},clearContext:function(){return this.j={},this},getContext:function(){return JSON.parse(h(this.j))},setEnvironment:function(a){return this.k.environment=a,this},setRelease:function(a){return this.k.release=a,this},setDataCallback:function(a){var b=this.k.dataCallback;return this.k.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.k.breadcrumbCallback;return this.k.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.k.shouldSendCallback;return this.k.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.k.transport=a,this},lastException:function(){return this.d},lastEventId:function(){return this.f},isSetup:function(){return!!this.a&&(!!this.g||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.z("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=R.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(S){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.H;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.j.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.J(this.G(c)),h=S.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(S.head||S.body).appendChild(h)}},L:function(){var a=this;this.m+=1,setTimeout(function(){a.m-=1})},$:function(a,b){var c,d;if(this.b){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),S.createEvent?(c=S.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=S.createEventObject(),c.eventType=a);for(d in b)A(b,d)&&(c[d]=b[d]);if(S.createEvent)S.dispatchEvent(c);else try{S.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},_:function(a){var b=this;return function(c){if(b.aa=null,b.v!==c){b.v=c;var d;try{d=E(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ba:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.aa;g||a._("input")(c),clearTimeout(g),a.aa=setTimeout(function(){a.aa=null},b)}}},ca:function(a,b){var c=H(this.w.href),d=H(b),e=H(a);this.x=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},C:function(){var a=this;a.da=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.M?a.da.apply(this.O,arguments):a.da.apply(this,arguments)}},Q:function(){this.da&&(Function.prototype.toString=this.da)},D:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.ca(b.x,c+""),a.apply(this,arguments)}};I(R.history,"pushState",j,d),I(R.history,"replaceState",j,d)}if(c.console&&"console"in R&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};w(["debug","info","warn","error","log"],function(a,b){O(console,b,k)})}},R:function(){for(var a;this.t.length;){a=this.t.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},S:function(){for(var a in this.q)this.p[a]=this.q[a]},F:function(){var a=this;w(this.r,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},G:function(a){var b=Q.exec(a),c={},d=7;try{for(;d--;)c[P[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.k.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},J:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},A:function(){this.m||this.V.apply(this,arguments)},V:function(a,b){var c=this.X(a,b);this.$("handle",{stackInfo:a,options:b}),this.fa(a.name,a.message,a.url,a.lineno,c,b)},X:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(w(a.stack,function(b,e){var f=c.ga(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.u,0)}),this.j.user&&(a.user=this.j.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),a=this.pa(a),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||v(a[b]))&&delete a[b]}),s(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!v(a)&&(!s(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.ma()?void this.z("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function F(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&l(b))for(c=b.split(/\s+/),f=0;fc?Q(a,b-1):d}function R(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?X:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function S(a,b){function c(a){return m(a)?a.map(function(a){return c(a)}):k(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!m(b)||m(b)&&0===b.length)return a;var d,e=A(b),f="********";try{d=JSON.parse(T(a))}catch(g){return a}return c(d)}var T=a(10),U="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},V=3,W=51200,X=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isDOMError:g,isDOMException:h,isUndefined:i,isFunction:j,isPlainObject:k,isString:l,isArray:m,isEmptyObject:n,supportsErrorEvent:o,supportsDOMError:p,supportsDOMException:q,supportsFetch:r,supportsReferrerPolicy:s,supportsPromiseRejectionEvent:t,wrappedCallback:u,each:v,objectMerge:w,truncate:y,objectFrozen:x,hasKey:z,joinRegExp:A,urlencode:B,uuid4:D,htmlTreeAsString:E,htmlElementAsString:F,isSameException:I,isSameStacktrace:J,parseUrl:C,fill:K,safeJoin:L,serializeException:Q,serializeKeysForMessage:R,sanitize:S}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{10:10}],9:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}function e(){return"undefined"==typeof document||null==document.location?"":(document.location.origin||(document.location.origin=document.location.protocol+"//"+document.location.hostname+(document.location.port?":"+document.location.port:"")),document.location.origin)}var f=a(8),g={collectWindowErrors:!0,debug:!1},h="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},i=[].slice,j="?",k=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;g.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function e(a,b){var c=null;if(!b||g.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(i.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,h,i){var l=null,m=f.isErrorEvent(i)?i.error:i,n=f.isErrorEvent(a)?a.message:a;if(v)g.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&f.isError(m))l=g.computeStackTrace(m),e(l,!0);else{var p,r={url:b,line:c,column:h},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(k);p&&(s=p[1],n=p[2])}r.func=j,l={name:s,message:n,url:d(),stack:[r]},e(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=h.onerror,h.onerror=l,r=!0)}function n(){r&&(h.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,e.apply(null,[a,!1].concat(b))}function p(a,b){var c=i.call(arguments,1);if(v){if(u===a)return;o()}var d=g.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),g.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,f,g=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,h=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,i=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,k=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,l=/\((\S*)(?::(\d+))(?::(\d+))\)/,m=a.stack.split("\n"),n=[],o=(/^(.*) is undefined$/.exec(a.message),0),p=m.length;o eval")>-1;r&&(b=k.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==o||c[5]||"undefined"==typeof a.columnNumber||(n[0].column=a.columnNumber+1),f={url:c[3],func:c[1]||j,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}if(!f.func&&f.line&&(f.func=j),f.url&&"blob:"===f.url.substr(0,5)){var s=new XMLHttpRequest;if(s.open("GET",f.url,!1),s.send(null),200===s.status){var t=s.responseText||"";t=t.slice(-300);var u=t.match(/\/\/# sourceMappingURL=(.*)$/);if(u){var v=u[1];"~"===v.charAt(0)&&(v=e()+v.slice(1)),f.url=v.slice(0,-4)}}}n.push(f)}return n.length?{name:a.name,message:a.message,url:d(),stack:n}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=j),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0, -!1}function c(a,e){for(var h,i,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==f&&o!==g.report){if(i={url:null,func:j,line:null,column:null},o.name?i.func=o.name:(h=k.exec(o.toString()))&&(i.func=h[1]),"undefined"==typeof i.func)try{i.func=h.input.substring(0,h.input.indexOf("{"))}catch(p){}m[""+o]?n=!0:m[""+o]=!0,l.push(i)}e&&l.splice(0,e);var q={name:a.name,message:a.message,url:d(),stack:l};return b(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),q}function f(b,e){var f=null;e=null==e?0:+e;try{if(f=a(b))return f}catch(h){if(g.debug)throw h}try{if(f=c(b,e+1))return f}catch(h){if(g.debug)throw h}return{name:b.name,message:b.message,url:d()}}return f.augmentStackTraceWithInitialElement=b,f.computeStackTraceFromStackProp=a,f}(),b.exports=g}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{8:8}],10:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}],11:[function(a,b,c){function d(a,b){var c=(65535&a)+(65535&b),d=(a>>16)+(b>>16)+(c>>16);return d<<16|65535&c}function e(a,b){return a<>>32-b}function f(a,b,c,f,g,h){return d(e(d(d(b,a),d(f,h)),g),c)}function g(a,b,c,d,e,g,h){return f(b&c|~b&d,a,b,e,g,h)}function h(a,b,c,d,e,g,h){return f(b&d|c&~d,a,b,e,g,h)}function i(a,b,c,d,e,g,h){return f(b^c^d,a,b,e,g,h)}function j(a,b,c,d,e,g,h){return f(c^(b|~d),a,b,e,g,h)}function k(a,b){a[b>>5]|=128<>>9<<4)+14]=b;var c,e,f,k,l,m=1732584193,n=-271733879,o=-1732584194,p=271733878;for(c=0;c>5]>>>b%32&255);return c}function m(a){var b,c=[];for(c[(a.length>>2)-1]=void 0,b=0;b>5]|=(255&a.charCodeAt(b/8))<16&&(e=k(e,8*a.length)),c=0;c<16;c+=1)f[c]=909522486^e[c],g[c]=1549556828^e[c];return d=k(f.concat(m(b)),512+8*b.length),l(k(g.concat(d),640))}function p(a){var b,c,d="0123456789abcdef",e="";for(c=0;c>>4&15)+d.charAt(15&b);return e}function q(a){return unescape(encodeURIComponent(a))}function r(a){return n(q(a))}function s(a){return p(r(a))}function t(a,b){return o(q(a),q(b))}function u(a,b){return p(t(a,b))}function v(a,b,c){return b?c?t(b,a):u(b,a):c?r(a):s(a)}b.exports=v},{}]},{},[7,1,2,3])(7)}); +/*! Raven.js 3.25.2 (30b6d4e) | github.com/getsentry/raven-js */ +!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.Raven=a()}}(function(){var a;return function b(a,c,d){function e(g,h){if(!c[g]){if(!a[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};a[g][0].call(k.exports,function(b){var c=a[g][1][b];return e(c?c:b)},k,k.exports,b,a,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;gthis.k.maxBreadcrumbs&&this.u.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.r.push([a,b]),this.n&&this.F(),this},setUserContext:function(a){return this.j.user=a,this},setExtraContext:function(a){return this.Z("extra",a),this},setTagsContext:function(a){return this.Z("tags",a),this},clearContext:function(){return this.j={},this},getContext:function(){return JSON.parse(h(this.j))},setEnvironment:function(a){return this.k.environment=a,this},setRelease:function(a){return this.k.release=a,this},setDataCallback:function(a){var b=this.k.dataCallback;return this.k.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.k.breadcrumbCallback;return this.k.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.k.shouldSendCallback;return this.k.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.k.transport=a,this},lastException:function(){return this.d},lastEventId:function(){return this.f},isSetup:function(){return!!this.a&&(!!this.g||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.z("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=R.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(S){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.H;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.j.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.J(this.G(c)),h=S.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(S.head||S.body).appendChild(h)}},L:function(){var a=this;this.m+=1,setTimeout(function(){a.m-=1})},$:function(a,b){var c,d;if(this.b){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),S.createEvent?(c=S.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=S.createEventObject(),c.eventType=a);for(d in b)A(b,d)&&(c[d]=b[d]);if(S.createEvent)S.dispatchEvent(c);else try{S.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},_:function(a){var b=this;return function(c){if(b.aa=null,b.v!==c){b.v=c;var d;try{d=E(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ba:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.aa;g||a._("input")(c),clearTimeout(g),a.aa=setTimeout(function(){a.aa=null},b)}}},ca:function(a,b){var c=H(this.w.href),d=H(b),e=H(a);this.x=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},C:function(){var a=this;a.da=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.M?a.da.apply(this.O,arguments):a.da.apply(this,arguments)}},Q:function(){this.da&&(Function.prototype.toString=this.da)},D:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.ca(b.x,c+""),a.apply(this,arguments)}};I(R.history,"pushState",j,d),I(R.history,"replaceState",j,d)}if(c.console&&"console"in R&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};w(["debug","info","warn","error","log"],function(a,b){O(console,b,k)})}},R:function(){for(var a;this.t.length;){a=this.t.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},S:function(){for(var a in this.q)this.p[a]=this.q[a]},F:function(){var a=this;w(this.r,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},G:function(a){var b=Q.exec(a),c={},d=7;try{for(;d--;)c[P[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.k.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},J:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},A:function(){this.m||this.V.apply(this,arguments)},V:function(a,b){var c=this.X(a,b);this.$("handle",{stackInfo:a,options:b}),this.fa(a.name,a.message,a.url,a.lineno,c,b)},X:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(w(a.stack,function(b,e){var f=c.ga(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.u,0)}),this.j.user&&(a.user=this.j.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),a=this.pa(a),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||v(a[b]))&&delete a[b]}),s(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!v(a)&&(!s(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.ma()?void this.z("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function F(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&l(b))for(c=b.split(/\s+/),f=0;fc?Q(a,b-1):d}function R(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?X:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function S(a,b){function c(a){return m(a)?a.map(function(a){return c(a)}):k(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!m(b)||m(b)&&0===b.length)return a;var d,e=A(b),f="********";try{d=JSON.parse(T(a))}catch(g){return a}return c(d)}var T=a(10),U="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},V=3,W=51200,X=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isDOMError:g,isDOMException:h,isUndefined:i,isFunction:j,isPlainObject:k,isString:l,isArray:m,isEmptyObject:n,supportsErrorEvent:o,supportsDOMError:p,supportsDOMException:q,supportsFetch:r,supportsReferrerPolicy:s,supportsPromiseRejectionEvent:t,wrappedCallback:u,each:v,objectMerge:w,truncate:y,objectFrozen:x,hasKey:z,joinRegExp:A,urlencode:B,uuid4:D,htmlTreeAsString:E,htmlElementAsString:F,isSameException:I,isSameStacktrace:J,parseUrl:C,fill:K,safeJoin:L,serializeException:Q,serializeKeysForMessage:R,sanitize:S}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{10:10}],9:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}function e(){return"undefined"==typeof document||null==document.location?"":(document.location.origin||(document.location.origin=document.location.protocol+"//"+document.location.hostname+(document.location.port?":"+document.location.port:"")),document.location.origin)}var f=a(8),g={collectWindowErrors:!0,debug:!1},h="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},i=[].slice,j="?",k=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;g.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function e(a,b){var c=null;if(!b||g.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(i.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,h,i){var l=null,m=f.isErrorEvent(i)?i.error:i,n=f.isErrorEvent(a)?a.message:a;if(v)g.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&f.isError(m))l=g.computeStackTrace(m),e(l,!0);else{var p,r={url:b,line:c,column:h},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(k);p&&(s=p[1],n=p[2])}r.func=j,l={name:s,message:n,url:d(),stack:[r]},e(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=h.onerror,h.onerror=l,r=!0)}function n(){r&&(h.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,e.apply(null,[a,!1].concat(b))}function p(a,b){var c=i.call(arguments,1);if(v){if(u===a)return;o()}var d=g.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),g.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,f,g=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,h=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,i=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,k=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,l=/\((\S*)(?::(\d+))(?::(\d+))\)/,m=a.stack.split("\n"),n=[],o=(/^(.*) is undefined$/.exec(a.message),0),p=m.length;o eval")>-1;r&&(b=k.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==o||c[5]||"undefined"==typeof a.columnNumber||(n[0].column=a.columnNumber+1),f={url:c[3],func:c[1]||j,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}if(!f.func&&f.line&&(f.func=j),f.url&&"blob:"===f.url.substr(0,5)){var s=new XMLHttpRequest;if(s.open("GET",f.url,!1),s.send(null),200===s.status){var t=s.responseText||"";t=t.slice(-300);var u=t.match(/\/\/# sourceMappingURL=(.*)$/);if(u){var v=u[1];"~"===v.charAt(0)&&(v=e()+v.slice(1)),f.url=v.slice(0,-4)}}}n.push(f)}return n.length?{name:a.name,message:a.message,url:d(),stack:n}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=j),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0; +}return a.incomplete=!0,!1}function c(a,e){for(var h,i,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==f&&o!==g.report){if(i={url:null,func:j,line:null,column:null},o.name?i.func=o.name:(h=k.exec(o.toString()))&&(i.func=h[1]),"undefined"==typeof i.func)try{i.func=h.input.substring(0,h.input.indexOf("{"))}catch(p){}m[""+o]?n=!0:m[""+o]=!0,l.push(i)}e&&l.splice(0,e);var q={name:a.name,message:a.message,url:d(),stack:l};return b(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),q}function f(b,e){var f=null;e=null==e?0:+e;try{if(f=a(b))return f}catch(h){if(g.debug)throw h}try{if(f=c(b,e+1))return f}catch(h){if(g.debug)throw h}return{name:b.name,message:b.message,url:d()}}return f.augmentStackTraceWithInitialElement=b,f.computeStackTraceFromStackProp=a,f}(),b.exports=g}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{8:8}],10:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}],11:[function(a,b,c){function d(a,b){var c=(65535&a)+(65535&b),d=(a>>16)+(b>>16)+(c>>16);return d<<16|65535&c}function e(a,b){return a<>>32-b}function f(a,b,c,f,g,h){return d(e(d(d(b,a),d(f,h)),g),c)}function g(a,b,c,d,e,g,h){return f(b&c|~b&d,a,b,e,g,h)}function h(a,b,c,d,e,g,h){return f(b&d|c&~d,a,b,e,g,h)}function i(a,b,c,d,e,g,h){return f(b^c^d,a,b,e,g,h)}function j(a,b,c,d,e,g,h){return f(c^(b|~d),a,b,e,g,h)}function k(a,b){a[b>>5]|=128<>>9<<4)+14]=b;var c,e,f,k,l,m=1732584193,n=-271733879,o=-1732584194,p=271733878;for(c=0;c>5]>>>b%32&255);return c}function m(a){var b,c=[];for(c[(a.length>>2)-1]=void 0,b=0;b>5]|=(255&a.charCodeAt(b/8))<16&&(e=k(e,8*a.length)),c=0;c<16;c+=1)f[c]=909522486^e[c],g[c]=1549556828^e[c];return d=k(f.concat(m(b)),512+8*b.length),l(k(g.concat(d),640))}function p(a){var b,c,d="0123456789abcdef",e="";for(c=0;c>>4&15)+d.charAt(15&b);return e}function q(a){return unescape(encodeURIComponent(a))}function r(a){return n(q(a))}function s(a){return p(r(a))}function t(a,b){return o(q(a),q(b))}function u(a,b){return p(t(a,b))}function v(a,b,c){return b?c?t(b,a):u(b,a):c?r(a):s(a)}b.exports=v},{}]},{},[7,1,2,3])(7)}); //# sourceMappingURL=raven.min.js.map \ No newline at end of file diff --git a/dist/console,ember,require/raven.min.js.map b/dist/console,ember,require/raven.min.js.map index df4ef6313a92..8a44103ec909 100644 --- a/dist/console,ember,require/raven.min.js.map +++ b/dist/console,ember,require/raven.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","consolePlugin","console","pluginOptions","logLevels","levels","push","callback","msg","data","captureMessage","level","pop","wrapConsoleMethod","wrapMethod","addPlugin","5","7","2","emberPlugin","Ember","_oldOnError","onerror","error","captureException","RSVP","on","reason","extra","context","3","requirePlugin","wrap","deep","4","RavenConfigError","message","name","prototype","constructor","utils","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","safeJoin","logger","Function","apply","8","6","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","sanitizeKeys","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isErrorEvent","isDOMError","isDOMException","isError","isObject","isPlainObject","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","sanitize","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","config","dsn","options","_logDebug","globalOptions","key","value","setDSN","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","toString","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","substr","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","func","undefined","_before","wrapped","_ignoreNextOnError","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","T","event","unhandledPromiseRejection","B","_promiseRejectionHandler","bind","addEventListener","P","removeEventListener","ex","trimHeadFrames","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","U","currentOptions","exKeys","Object","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","setDataCallback","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","L","setTimeout","$","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","_","evtName","_keypressTimeout","target","category","ba","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","ca","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","C","_originalFunctionToString","Q","D","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","type","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","E","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","R","builtin","S","F","installer","concat","G","str","m","exec","allowSecretKey","J","port","A","V","stackInfo","_triggerEvent","_processException","lineno","X","frame","_normalizeFrame","in_app","ga","stackInfoUrl","normalized","filename","line","colno","column","function","fa","prefixedMessage","exception","values","culprit","ha","request","Referer","breadcrumbs","_trimBreadcrumbs","ia","urlProp","urlProps","ja","httpData","userAgent","User-Agent","referrer","y","_backoffDuration","_backoffStart","ma","na","current","last","oa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Y","baseData","project","platform","_getHttpData","serverName","server_name","_sanitizeData","forEach","random","_sendProcessedPayload","pa","ra","qa","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","sa","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","open","setRequestHeader","send","ta","hash","evaluated","z","Z","setUser","setReleaseContext","10","11","9","RavenConstructor","_Raven","noConflict","Client","what","supportsErrorEvent","ErrorEvent","supportsDOMError","DOMError","supportsDOMException","DOMException","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","wrappedCallback","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","sanitizeMask","safeInput","o_O","getLocationHref","getLocationOrigin","origin","hostname","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","responseText","sourceMaps","sourceMapAddress","charAt","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","string","raw"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file +{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","consolePlugin","console","pluginOptions","logLevels","levels","push","callback","msg","data","captureMessage","level","pop","wrapConsoleMethod","wrapMethod","addPlugin","5","7","2","emberPlugin","Ember","_oldOnError","onerror","error","captureException","RSVP","on","reason","extra","context","3","requirePlugin","wrap","deep","4","RavenConfigError","message","name","prototype","constructor","utils","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","safeJoin","logger","Function","apply","8","6","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","sanitizeKeys","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isErrorEvent","isDOMError","isDOMException","isError","isObject","isPlainObject","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","sanitize","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","config","dsn","options","_logDebug","globalOptions","key","value","setDSN","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","toString","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","substr","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","func","undefined","_before","wrapped","_ignoreNextOnError","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","T","event","unhandledPromiseRejection","B","_promiseRejectionHandler","bind","addEventListener","P","removeEventListener","ex","trimHeadFrames","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","U","currentOptions","exKeys","Object","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","setDataCallback","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","L","setTimeout","$","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","_","evtName","_keypressTimeout","target","category","ba","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","ca","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","C","_originalFunctionToString","Q","D","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","type","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","E","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","R","builtin","S","F","installer","concat","G","str","m","exec","allowSecretKey","J","port","A","V","stackInfo","_triggerEvent","_processException","lineno","X","frame","_normalizeFrame","in_app","ga","stackInfoUrl","normalized","filename","line","colno","column","function","fa","prefixedMessage","exception","values","transaction","ha","request","Referer","breadcrumbs","_trimBreadcrumbs","ia","urlProp","urlProps","ja","httpData","userAgent","User-Agent","referrer","y","_backoffDuration","_backoffStart","ma","na","current","last","oa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Y","baseData","project","platform","_getHttpData","serverName","server_name","_sanitizeData","forEach","random","_sendProcessedPayload","pa","ra","qa","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","sa","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","open","setRequestHeader","send","ta","hash","evaluated","z","Z","setUser","setReleaseContext","10","11","9","RavenConstructor","_Raven","noConflict","Client","what","supportsErrorEvent","ErrorEvent","supportsDOMError","DOMError","supportsDOMException","DOMException","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","wrappedCallback","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","sanitizeMask","safeInput","o_O","getLocationHref","getLocationOrigin","origin","hostname","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","responseText","sourceMaps","sourceMapAddress","charAt","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","string","raw"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file diff --git a/dist/console,ember,vue/raven.js b/dist/console,ember,vue/raven.js index afc1121e2215..ef25f358af79 100644 --- a/dist/console,ember,vue/raven.js +++ b/dist/console,ember,vue/raven.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.25.1 (b6f3c7a) | github.com/getsentry/raven-js */ +/*! Raven.js 3.25.2 (30b6d4e) | github.com/getsentry/raven-js */ /* * Includes TraceKit @@ -235,7 +235,11 @@ function now() { var _window = typeof window !== 'undefined' ? window - : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; + : typeof global !== 'undefined' + ? global + : typeof self !== 'undefined' + ? self + : {}; var _document = _window.document; var _navigator = _window.navigator; @@ -325,7 +329,7 @@ Raven.prototype = { // webpack (using a build step causes webpack #1617). Grunt verifies that // this value matches package.json during build. // See: https://github.com/getsentry/raven-js/issues/465 - VERSION: '3.25.1', + VERSION: '3.25.2', debug: false, @@ -1881,7 +1885,7 @@ Raven.prototype = { } ] }, - culprit: fileurl + transaction: fileurl }, options ); @@ -1996,7 +2000,7 @@ Raven.prototype = { if ( !last || current.message !== last.message || // defined for captureMessage - current.culprit !== last.culprit // defined for captureException/onerror + current.transaction !== last.transaction // defined for captureException/onerror ) return false; diff --git a/dist/console,ember,vue/raven.min.js b/dist/console,ember,vue/raven.min.js index db97c91490e9..c4b272ee232c 100644 --- a/dist/console,ember,vue/raven.min.js +++ b/dist/console,ember,vue/raven.min.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.25.1 (b6f3c7a) | github.com/getsentry/raven-js */ -!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.Raven=a()}}(function(){return function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};b[g][0].call(k.exports,function(a){var c=b[g][1][a];return e(c?c:a)},k,k.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;g":"anonymous component")+(a._isVue&&a.$options.__file?" at "+a.$options.__file:"")}function e(a,b){if(b=b||window.Vue,b&&b.config){var c=b.config.errorHandler;b.config.errorHandler=function(b,e,f){var g={};"[object Object]"===Object.prototype.toString.call(e)&&(g.componentName=d(e),g.propsData=e.$options.propsData),"undefined"!=typeof f&&(g.lifecycleHook=f),a.captureException(b,{extra:g}),"function"==typeof c&&c.call(this,b,e,f)}}}b.exports=e,a(7).addPlugin(b.exports)},{7:7}],4:[function(a,b,c){function d(a){this.name="RavenConfigError",this.message=a}d.prototype=new Error,d.prototype.constructor=d,b.exports=d},{}],5:[function(a,b,c){var d=a(8),e=function(a,b,c){var e=a[b],f=a;if(b in a){var g="warn"===b?"warning":b;a[b]=function(){var a=[].slice.call(arguments),h=d.safeJoin(a," "),i={level:g,logger:"console",extra:{arguments:a}};"assert"===b?a[0]===!1&&(h="Assertion failed: "+(d.safeJoin(a.slice(1)," ")||"console.assert"),i.extra.arguments=a.slice(1),c&&c(h,i)):c&&c(h,i),e&&Function.prototype.apply.call(e,f,a)}}};b.exports={wrapMethod:e}},{8:8}],6:[function(a,b,c){(function(c){function d(){return+new Date}function e(a,b){return s(b)?function(c){return b(c,a)}:b}function f(){this.a=!("object"!=typeof JSON||!JSON.stringify),this.b=!r(S),this.c=!r(T),this.d=null,this.e=null,this.f=null,this.g=null,this.h=null,this.i=null,this.j={},this.k={release:R.SENTRY_RELEASE&&R.SENTRY_RELEASE.id,logger:"javascript",ignoreErrors:[],ignoreUrls:[],whitelistUrls:[],includePaths:[],headers:null,collectWindowErrors:!0,captureUnhandledRejections:!0,maxMessageLength:0,maxUrlLength:250,stackTraceLimit:50,autoBreadcrumbs:!0,instrument:!0,sampleRate:1,sanitizeKeys:[]},this.l={method:"POST",keepalive:!0,referrerPolicy:K()?"origin":""},this.m=0,this.n=!1,this.o=Error.stackTraceLimit,this.p=R.console||{},this.q={},this.r=[],this.s=d(),this.t=[],this.u=[],this.v=null,this.w=R.location,this.x=this.w&&this.w.href,this.y();for(var a in this.p)this.q[a]=this.p[a]}var g=a(9),h=a(10),i=a(11),j=a(4),k=a(8),l=k.isErrorEvent,m=k.isDOMError,n=k.isDOMException,o=k.isError,p=k.isObject,q=k.isPlainObject,r=k.isUndefined,s=k.isFunction,t=k.isString,u=k.isArray,v=k.isEmptyObject,w=k.each,x=k.objectMerge,y=k.truncate,z=k.objectFrozen,A=k.hasKey,B=k.joinRegExp,C=k.urlencode,D=k.uuid4,E=k.htmlTreeAsString,F=k.isSameException,G=k.isSameStacktrace,H=k.parseUrl,I=k.fill,J=k.supportsFetch,K=k.supportsReferrerPolicy,L=k.serializeKeysForMessage,M=k.serializeException,N=k.sanitize,O=a(5).wrapMethod,P="source protocol user pass host port path".split(" "),Q=/^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/,R="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},S=R.document,T=R.navigator;f.prototype={VERSION:"3.25.1",debug:!1,TraceKit:g,config:function(a,b){var c=this;if(c.g)return this.z("error","Error: Raven has already been configured"),c;if(!a)return c;var d=c.k;b&&w(b,function(a,b){"tags"===a||"extra"===a||"user"===a?c.j[a]=b:d[a]=b}),c.setDSN(a),d.ignoreErrors.push(/^Script error\.?$/),d.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/),d.ignoreErrors=B(d.ignoreErrors),d.ignoreUrls=!!d.ignoreUrls.length&&B(d.ignoreUrls),d.whitelistUrls=!!d.whitelistUrls.length&&B(d.whitelistUrls),d.includePaths=B(d.includePaths),d.maxBreadcrumbs=Math.max(0,Math.min(d.maxBreadcrumbs||100,100));var e={xhr:!0,console:!0,dom:!0,location:!0,sentry:!0},f=d.autoBreadcrumbs;"[object Object]"==={}.toString.call(f)?f=x(e,f):f!==!1&&(f=e),d.autoBreadcrumbs=f;var h={tryCatch:!0},i=d.instrument;return"[object Object]"==={}.toString.call(i)?i=x(h,i):i!==!1&&(i=h),d.instrument=i,g.collectWindowErrors=!!d.collectWindowErrors,c},install:function(){var a=this;return a.isSetup()&&!a.n&&(g.report.subscribe(function(){a.A.apply(a,arguments)}),a.k.captureUnhandledRejections&&a.B(),a.C(),a.k.instrument&&a.k.instrument.tryCatch&&a.D(),a.k.autoBreadcrumbs&&a.E(),a.F(),a.n=!0),Error.stackTraceLimit=a.k.stackTraceLimit,this},setDSN:function(a){var b=this,c=b.G(a),d=c.path.lastIndexOf("/"),e=c.path.substr(1,d);b.H=a,b.h=c.user,b.I=c.pass&&c.pass.substr(1),b.i=c.path.substr(d+1),b.g=b.J(c),b.K=b.g+"/"+e+"api/"+b.i+"/store/",this.y()},context:function(a,b,c){return s(a)&&(c=b||[],b=a,a=void 0),this.wrap(a,b).apply(this,c)},wrap:function(a,b,c){function d(){var d=[],f=arguments.length,g=!a||a&&a.deep!==!1;for(c&&s(c)&&c.apply(this,arguments);f--;)d[f]=g?e.wrap(a,arguments[f]):arguments[f];try{return b.apply(this,d)}catch(h){throw e.L(),e.captureException(h,a),h}}var e=this;if(r(b)&&!s(a))return a;if(s(a)&&(b=a,a=void 0),!s(b))return b;try{if(b.M)return b;if(b.N)return b.N}catch(f){return b}for(var g in b)A(b,g)&&(d[g]=b[g]);return d.prototype=b.prototype,b.N=d,d.M=!0,d.O=b,d},uninstall:function(){return g.report.uninstall(),this.P(),this.Q(),this.R(),this.S(),Error.stackTraceLimit=this.o,this.n=!1,this},T:function(a){this.z("debug","Raven caught unhandled promise rejection:",a),this.captureException(a.reason,{extra:{unhandledPromiseRejection:!0}})},B:function(){return this.T=this.T.bind(this),R.addEventListener&&R.addEventListener("unhandledrejection",this.T),this},P:function(){return R.removeEventListener&&R.removeEventListener("unhandledrejection",this.T),this},captureException:function(a,b){if(b=x({trimHeadFrames:0},b?b:{}),l(a)&&a.error)a=a.error;else{if(m(a)||n(a)){var c=a.name||(m(a)?"DOMError":"DOMException"),d=a.message?c+": "+a.message:c;return this.captureMessage(d,x(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}))}if(o(a))a=a;else{if(!q(a))return this.captureMessage(a,x(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}));b=this.U(b,a),a=new Error(b.message)}}this.d=a;try{var e=g.computeStackTrace(a);this.V(e,b)}catch(f){if(a!==f)throw f}return this},U:function(a,b){var c=Object.keys(b).sort(),d=x(a,{message:"Non-Error exception captured with keys: "+L(c),fingerprint:[i(c)],extra:a.extra||{}});return d.extra.W=M(b),d},captureMessage:function(a,b){if(!this.k.ignoreErrors.test||!this.k.ignoreErrors.test(a)){b=b||{},a+="";var c,d=x({message:a},b);try{throw new Error(a)}catch(e){c=e}c.name=null;var f=g.computeStackTrace(c),h=u(f.stack)&&f.stack[1];h&&"Raven.captureException"===h.func&&(h=f.stack[2]);var i=h&&h.url||"";if((!this.k.ignoreUrls.test||!this.k.ignoreUrls.test(i))&&(!this.k.whitelistUrls.test||this.k.whitelistUrls.test(i))){if(this.k.stacktrace||b&&b.stacktrace){d.fingerprint=null==d.fingerprint?a:d.fingerprint,b=x({trimHeadFrames:0},b),b.trimHeadFrames+=1;var j=this.X(f,b);d.stacktrace={frames:j.reverse()}}return d.fingerprint&&(d.fingerprint=u(d.fingerprint)?d.fingerprint:[d.fingerprint]),this.Y(d),this}}},captureBreadcrumb:function(a){var b=x({timestamp:d()/1e3},a);if(s(this.k.breadcrumbCallback)){var c=this.k.breadcrumbCallback(b);if(p(c)&&!v(c))b=c;else if(c===!1)return this}return this.u.push(b),this.u.length>this.k.maxBreadcrumbs&&this.u.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.r.push([a,b]),this.n&&this.F(),this},setUserContext:function(a){return this.j.user=a,this},setExtraContext:function(a){return this.Z("extra",a),this},setTagsContext:function(a){return this.Z("tags",a),this},clearContext:function(){return this.j={},this},getContext:function(){return JSON.parse(h(this.j))},setEnvironment:function(a){return this.k.environment=a,this},setRelease:function(a){return this.k.release=a,this},setDataCallback:function(a){var b=this.k.dataCallback;return this.k.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.k.breadcrumbCallback;return this.k.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.k.shouldSendCallback;return this.k.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.k.transport=a,this},lastException:function(){return this.d},lastEventId:function(){return this.f},isSetup:function(){return!!this.a&&(!!this.g||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.z("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=R.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(S){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.H;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.j.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.J(this.G(c)),h=S.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(S.head||S.body).appendChild(h)}},L:function(){var a=this;this.m+=1,setTimeout(function(){a.m-=1})},$:function(a,b){var c,d;if(this.b){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),S.createEvent?(c=S.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=S.createEventObject(),c.eventType=a);for(d in b)A(b,d)&&(c[d]=b[d]);if(S.createEvent)S.dispatchEvent(c);else try{S.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},_:function(a){var b=this;return function(c){if(b.aa=null,b.v!==c){b.v=c;var d;try{d=E(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ba:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.aa;g||a._("input")(c),clearTimeout(g),a.aa=setTimeout(function(){a.aa=null},b)}}},ca:function(a,b){var c=H(this.w.href),d=H(b),e=H(a);this.x=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},C:function(){var a=this;a.da=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.M?a.da.apply(this.O,arguments):a.da.apply(this,arguments)}},Q:function(){this.da&&(Function.prototype.toString=this.da)},D:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.ca(b.x,c+""),a.apply(this,arguments)}};I(R.history,"pushState",j,d),I(R.history,"replaceState",j,d)}if(c.console&&"console"in R&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};w(["debug","info","warn","error","log"],function(a,b){O(console,b,k)})}},R:function(){for(var a;this.t.length;){a=this.t.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},S:function(){for(var a in this.q)this.p[a]=this.q[a]},F:function(){var a=this;w(this.r,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},G:function(a){var b=Q.exec(a),c={},d=7;try{for(;d--;)c[P[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.k.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},J:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},A:function(){this.m||this.V.apply(this,arguments)},V:function(a,b){var c=this.X(a,b);this.$("handle",{stackInfo:a,options:b}),this.fa(a.name,a.message,a.url,a.lineno,c,b)},X:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(w(a.stack,function(b,e){var f=c.ga(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.u,0)}),this.j.user&&(a.user=this.j.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),a=this.pa(a),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||v(a[b]))&&delete a[b]}),s(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!v(a)&&(!s(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.ma()?void this.z("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function F(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&l(b))for(c=b.split(/\s+/),f=0;fc?Q(a,b-1):d}function R(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?X:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function S(a,b){function c(a){return m(a)?a.map(function(a){return c(a)}):k(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!m(b)||m(b)&&0===b.length)return a;var d,e=A(b),f="********";try{d=JSON.parse(T(a))}catch(g){return a}return c(d)}var T=a(10),U="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},V=3,W=51200,X=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isDOMError:g,isDOMException:h,isUndefined:i,isFunction:j,isPlainObject:k,isString:l,isArray:m,isEmptyObject:n,supportsErrorEvent:o,supportsDOMError:p,supportsDOMException:q,supportsFetch:r,supportsReferrerPolicy:s,supportsPromiseRejectionEvent:t,wrappedCallback:u,each:v,objectMerge:w,truncate:y,objectFrozen:x,hasKey:z,joinRegExp:A,urlencode:B,uuid4:D,htmlTreeAsString:E,htmlElementAsString:F,isSameException:I,isSameStacktrace:J,parseUrl:C,fill:K,safeJoin:L,serializeException:Q,serializeKeysForMessage:R,sanitize:S}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{10:10}],9:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}function e(){return"undefined"==typeof document||null==document.location?"":(document.location.origin||(document.location.origin=document.location.protocol+"//"+document.location.hostname+(document.location.port?":"+document.location.port:"")),document.location.origin)}var f=a(8),g={collectWindowErrors:!0,debug:!1},h="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},i=[].slice,j="?",k=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;g.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function e(a,b){var c=null;if(!b||g.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(i.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,h,i){var l=null,m=f.isErrorEvent(i)?i.error:i,n=f.isErrorEvent(a)?a.message:a;if(v)g.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&f.isError(m))l=g.computeStackTrace(m),e(l,!0);else{var p,r={url:b,line:c,column:h},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(k);p&&(s=p[1],n=p[2])}r.func=j,l={name:s,message:n,url:d(),stack:[r]},e(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=h.onerror,h.onerror=l,r=!0)}function n(){r&&(h.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,e.apply(null,[a,!1].concat(b))}function p(a,b){var c=i.call(arguments,1);if(v){if(u===a)return;o()}var d=g.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),g.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,f,g=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,h=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,i=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,k=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,l=/\((\S*)(?::(\d+))(?::(\d+))\)/,m=a.stack.split("\n"),n=[],o=(/^(.*) is undefined$/.exec(a.message),0),p=m.length;o eval")>-1;r&&(b=k.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==o||c[5]||"undefined"==typeof a.columnNumber||(n[0].column=a.columnNumber+1),f={url:c[3],func:c[1]||j,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}if(!f.func&&f.line&&(f.func=j),f.url&&"blob:"===f.url.substr(0,5)){var s=new XMLHttpRequest;if(s.open("GET",f.url,!1),s.send(null),200===s.status){var t=s.responseText||"";t=t.slice(-300);var u=t.match(/\/\/# sourceMappingURL=(.*)$/);if(u){var v=u[1]; -"~"===v.charAt(0)&&(v=e()+v.slice(1)),f.url=v.slice(0,-4)}}}n.push(f)}return n.length?{name:a.name,message:a.message,url:d(),stack:n}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=j),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,e){for(var h,i,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==f&&o!==g.report){if(i={url:null,func:j,line:null,column:null},o.name?i.func=o.name:(h=k.exec(o.toString()))&&(i.func=h[1]),"undefined"==typeof i.func)try{i.func=h.input.substring(0,h.input.indexOf("{"))}catch(p){}m[""+o]?n=!0:m[""+o]=!0,l.push(i)}e&&l.splice(0,e);var q={name:a.name,message:a.message,url:d(),stack:l};return b(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),q}function f(b,e){var f=null;e=null==e?0:+e;try{if(f=a(b))return f}catch(h){if(g.debug)throw h}try{if(f=c(b,e+1))return f}catch(h){if(g.debug)throw h}return{name:b.name,message:b.message,url:d()}}return f.augmentStackTraceWithInitialElement=b,f.computeStackTraceFromStackProp=a,f}(),b.exports=g}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{8:8}],10:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}],11:[function(a,b,c){function d(a,b){var c=(65535&a)+(65535&b),d=(a>>16)+(b>>16)+(c>>16);return d<<16|65535&c}function e(a,b){return a<>>32-b}function f(a,b,c,f,g,h){return d(e(d(d(b,a),d(f,h)),g),c)}function g(a,b,c,d,e,g,h){return f(b&c|~b&d,a,b,e,g,h)}function h(a,b,c,d,e,g,h){return f(b&d|c&~d,a,b,e,g,h)}function i(a,b,c,d,e,g,h){return f(b^c^d,a,b,e,g,h)}function j(a,b,c,d,e,g,h){return f(c^(b|~d),a,b,e,g,h)}function k(a,b){a[b>>5]|=128<>>9<<4)+14]=b;var c,e,f,k,l,m=1732584193,n=-271733879,o=-1732584194,p=271733878;for(c=0;c>5]>>>b%32&255);return c}function m(a){var b,c=[];for(c[(a.length>>2)-1]=void 0,b=0;b>5]|=(255&a.charCodeAt(b/8))<16&&(e=k(e,8*a.length)),c=0;c<16;c+=1)f[c]=909522486^e[c],g[c]=1549556828^e[c];return d=k(f.concat(m(b)),512+8*b.length),l(k(g.concat(d),640))}function p(a){var b,c,d="0123456789abcdef",e="";for(c=0;c>>4&15)+d.charAt(15&b);return e}function q(a){return unescape(encodeURIComponent(a))}function r(a){return n(q(a))}function s(a){return p(r(a))}function t(a,b){return o(q(a),q(b))}function u(a,b){return p(t(a,b))}function v(a,b,c){return b?c?t(b,a):u(b,a):c?r(a):s(a)}b.exports=v},{}]},{},[7,1,2,3])(7)}); +/*! Raven.js 3.25.2 (30b6d4e) | github.com/getsentry/raven-js */ +!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.Raven=a()}}(function(){return function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};b[g][0].call(k.exports,function(a){var c=b[g][1][a];return e(c?c:a)},k,k.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;g":"anonymous component")+(a._isVue&&a.$options.__file?" at "+a.$options.__file:"")}function e(a,b){if(b=b||window.Vue,b&&b.config){var c=b.config.errorHandler;b.config.errorHandler=function(b,e,f){var g={};"[object Object]"===Object.prototype.toString.call(e)&&(g.componentName=d(e),g.propsData=e.$options.propsData),"undefined"!=typeof f&&(g.lifecycleHook=f),a.captureException(b,{extra:g}),"function"==typeof c&&c.call(this,b,e,f)}}}b.exports=e,a(7).addPlugin(b.exports)},{7:7}],4:[function(a,b,c){function d(a){this.name="RavenConfigError",this.message=a}d.prototype=new Error,d.prototype.constructor=d,b.exports=d},{}],5:[function(a,b,c){var d=a(8),e=function(a,b,c){var e=a[b],f=a;if(b in a){var g="warn"===b?"warning":b;a[b]=function(){var a=[].slice.call(arguments),h=d.safeJoin(a," "),i={level:g,logger:"console",extra:{arguments:a}};"assert"===b?a[0]===!1&&(h="Assertion failed: "+(d.safeJoin(a.slice(1)," ")||"console.assert"),i.extra.arguments=a.slice(1),c&&c(h,i)):c&&c(h,i),e&&Function.prototype.apply.call(e,f,a)}}};b.exports={wrapMethod:e}},{8:8}],6:[function(a,b,c){(function(c){function d(){return+new Date}function e(a,b){return s(b)?function(c){return b(c,a)}:b}function f(){this.a=!("object"!=typeof JSON||!JSON.stringify),this.b=!r(S),this.c=!r(T),this.d=null,this.e=null,this.f=null,this.g=null,this.h=null,this.i=null,this.j={},this.k={release:R.SENTRY_RELEASE&&R.SENTRY_RELEASE.id,logger:"javascript",ignoreErrors:[],ignoreUrls:[],whitelistUrls:[],includePaths:[],headers:null,collectWindowErrors:!0,captureUnhandledRejections:!0,maxMessageLength:0,maxUrlLength:250,stackTraceLimit:50,autoBreadcrumbs:!0,instrument:!0,sampleRate:1,sanitizeKeys:[]},this.l={method:"POST",keepalive:!0,referrerPolicy:K()?"origin":""},this.m=0,this.n=!1,this.o=Error.stackTraceLimit,this.p=R.console||{},this.q={},this.r=[],this.s=d(),this.t=[],this.u=[],this.v=null,this.w=R.location,this.x=this.w&&this.w.href,this.y();for(var a in this.p)this.q[a]=this.p[a]}var g=a(9),h=a(10),i=a(11),j=a(4),k=a(8),l=k.isErrorEvent,m=k.isDOMError,n=k.isDOMException,o=k.isError,p=k.isObject,q=k.isPlainObject,r=k.isUndefined,s=k.isFunction,t=k.isString,u=k.isArray,v=k.isEmptyObject,w=k.each,x=k.objectMerge,y=k.truncate,z=k.objectFrozen,A=k.hasKey,B=k.joinRegExp,C=k.urlencode,D=k.uuid4,E=k.htmlTreeAsString,F=k.isSameException,G=k.isSameStacktrace,H=k.parseUrl,I=k.fill,J=k.supportsFetch,K=k.supportsReferrerPolicy,L=k.serializeKeysForMessage,M=k.serializeException,N=k.sanitize,O=a(5).wrapMethod,P="source protocol user pass host port path".split(" "),Q=/^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/,R="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},S=R.document,T=R.navigator;f.prototype={VERSION:"3.25.2",debug:!1,TraceKit:g,config:function(a,b){var c=this;if(c.g)return this.z("error","Error: Raven has already been configured"),c;if(!a)return c;var d=c.k;b&&w(b,function(a,b){"tags"===a||"extra"===a||"user"===a?c.j[a]=b:d[a]=b}),c.setDSN(a),d.ignoreErrors.push(/^Script error\.?$/),d.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/),d.ignoreErrors=B(d.ignoreErrors),d.ignoreUrls=!!d.ignoreUrls.length&&B(d.ignoreUrls),d.whitelistUrls=!!d.whitelistUrls.length&&B(d.whitelistUrls),d.includePaths=B(d.includePaths),d.maxBreadcrumbs=Math.max(0,Math.min(d.maxBreadcrumbs||100,100));var e={xhr:!0,console:!0,dom:!0,location:!0,sentry:!0},f=d.autoBreadcrumbs;"[object Object]"==={}.toString.call(f)?f=x(e,f):f!==!1&&(f=e),d.autoBreadcrumbs=f;var h={tryCatch:!0},i=d.instrument;return"[object Object]"==={}.toString.call(i)?i=x(h,i):i!==!1&&(i=h),d.instrument=i,g.collectWindowErrors=!!d.collectWindowErrors,c},install:function(){var a=this;return a.isSetup()&&!a.n&&(g.report.subscribe(function(){a.A.apply(a,arguments)}),a.k.captureUnhandledRejections&&a.B(),a.C(),a.k.instrument&&a.k.instrument.tryCatch&&a.D(),a.k.autoBreadcrumbs&&a.E(),a.F(),a.n=!0),Error.stackTraceLimit=a.k.stackTraceLimit,this},setDSN:function(a){var b=this,c=b.G(a),d=c.path.lastIndexOf("/"),e=c.path.substr(1,d);b.H=a,b.h=c.user,b.I=c.pass&&c.pass.substr(1),b.i=c.path.substr(d+1),b.g=b.J(c),b.K=b.g+"/"+e+"api/"+b.i+"/store/",this.y()},context:function(a,b,c){return s(a)&&(c=b||[],b=a,a=void 0),this.wrap(a,b).apply(this,c)},wrap:function(a,b,c){function d(){var d=[],f=arguments.length,g=!a||a&&a.deep!==!1;for(c&&s(c)&&c.apply(this,arguments);f--;)d[f]=g?e.wrap(a,arguments[f]):arguments[f];try{return b.apply(this,d)}catch(h){throw e.L(),e.captureException(h,a),h}}var e=this;if(r(b)&&!s(a))return a;if(s(a)&&(b=a,a=void 0),!s(b))return b;try{if(b.M)return b;if(b.N)return b.N}catch(f){return b}for(var g in b)A(b,g)&&(d[g]=b[g]);return d.prototype=b.prototype,b.N=d,d.M=!0,d.O=b,d},uninstall:function(){return g.report.uninstall(),this.P(),this.Q(),this.R(),this.S(),Error.stackTraceLimit=this.o,this.n=!1,this},T:function(a){this.z("debug","Raven caught unhandled promise rejection:",a),this.captureException(a.reason,{extra:{unhandledPromiseRejection:!0}})},B:function(){return this.T=this.T.bind(this),R.addEventListener&&R.addEventListener("unhandledrejection",this.T),this},P:function(){return R.removeEventListener&&R.removeEventListener("unhandledrejection",this.T),this},captureException:function(a,b){if(b=x({trimHeadFrames:0},b?b:{}),l(a)&&a.error)a=a.error;else{if(m(a)||n(a)){var c=a.name||(m(a)?"DOMError":"DOMException"),d=a.message?c+": "+a.message:c;return this.captureMessage(d,x(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}))}if(o(a))a=a;else{if(!q(a))return this.captureMessage(a,x(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}));b=this.U(b,a),a=new Error(b.message)}}this.d=a;try{var e=g.computeStackTrace(a);this.V(e,b)}catch(f){if(a!==f)throw f}return this},U:function(a,b){var c=Object.keys(b).sort(),d=x(a,{message:"Non-Error exception captured with keys: "+L(c),fingerprint:[i(c)],extra:a.extra||{}});return d.extra.W=M(b),d},captureMessage:function(a,b){if(!this.k.ignoreErrors.test||!this.k.ignoreErrors.test(a)){b=b||{},a+="";var c,d=x({message:a},b);try{throw new Error(a)}catch(e){c=e}c.name=null;var f=g.computeStackTrace(c),h=u(f.stack)&&f.stack[1];h&&"Raven.captureException"===h.func&&(h=f.stack[2]);var i=h&&h.url||"";if((!this.k.ignoreUrls.test||!this.k.ignoreUrls.test(i))&&(!this.k.whitelistUrls.test||this.k.whitelistUrls.test(i))){if(this.k.stacktrace||b&&b.stacktrace){d.fingerprint=null==d.fingerprint?a:d.fingerprint,b=x({trimHeadFrames:0},b),b.trimHeadFrames+=1;var j=this.X(f,b);d.stacktrace={frames:j.reverse()}}return d.fingerprint&&(d.fingerprint=u(d.fingerprint)?d.fingerprint:[d.fingerprint]),this.Y(d),this}}},captureBreadcrumb:function(a){var b=x({timestamp:d()/1e3},a);if(s(this.k.breadcrumbCallback)){var c=this.k.breadcrumbCallback(b);if(p(c)&&!v(c))b=c;else if(c===!1)return this}return this.u.push(b),this.u.length>this.k.maxBreadcrumbs&&this.u.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.r.push([a,b]),this.n&&this.F(),this},setUserContext:function(a){return this.j.user=a,this},setExtraContext:function(a){return this.Z("extra",a),this},setTagsContext:function(a){return this.Z("tags",a),this},clearContext:function(){return this.j={},this},getContext:function(){return JSON.parse(h(this.j))},setEnvironment:function(a){return this.k.environment=a,this},setRelease:function(a){return this.k.release=a,this},setDataCallback:function(a){var b=this.k.dataCallback;return this.k.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.k.breadcrumbCallback;return this.k.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.k.shouldSendCallback;return this.k.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.k.transport=a,this},lastException:function(){return this.d},lastEventId:function(){return this.f},isSetup:function(){return!!this.a&&(!!this.g||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.z("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=R.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(S){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.H;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.j.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.J(this.G(c)),h=S.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(S.head||S.body).appendChild(h)}},L:function(){var a=this;this.m+=1,setTimeout(function(){a.m-=1})},$:function(a,b){var c,d;if(this.b){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),S.createEvent?(c=S.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=S.createEventObject(),c.eventType=a);for(d in b)A(b,d)&&(c[d]=b[d]);if(S.createEvent)S.dispatchEvent(c);else try{S.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},_:function(a){var b=this;return function(c){if(b.aa=null,b.v!==c){b.v=c;var d;try{d=E(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ba:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.aa;g||a._("input")(c),clearTimeout(g),a.aa=setTimeout(function(){a.aa=null},b)}}},ca:function(a,b){var c=H(this.w.href),d=H(b),e=H(a);this.x=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},C:function(){var a=this;a.da=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.M?a.da.apply(this.O,arguments):a.da.apply(this,arguments)}},Q:function(){this.da&&(Function.prototype.toString=this.da)},D:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.ca(b.x,c+""),a.apply(this,arguments)}};I(R.history,"pushState",j,d),I(R.history,"replaceState",j,d)}if(c.console&&"console"in R&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};w(["debug","info","warn","error","log"],function(a,b){O(console,b,k)})}},R:function(){for(var a;this.t.length;){a=this.t.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},S:function(){for(var a in this.q)this.p[a]=this.q[a]},F:function(){var a=this;w(this.r,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},G:function(a){var b=Q.exec(a),c={},d=7;try{for(;d--;)c[P[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.k.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},J:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},A:function(){this.m||this.V.apply(this,arguments)},V:function(a,b){var c=this.X(a,b);this.$("handle",{stackInfo:a,options:b}),this.fa(a.name,a.message,a.url,a.lineno,c,b)},X:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(w(a.stack,function(b,e){var f=c.ga(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.u,0)}),this.j.user&&(a.user=this.j.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),a=this.pa(a),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||v(a[b]))&&delete a[b]}),s(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!v(a)&&(!s(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.ma()?void this.z("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function F(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&l(b))for(c=b.split(/\s+/),f=0;fc?Q(a,b-1):d}function R(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?X:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function S(a,b){function c(a){return m(a)?a.map(function(a){return c(a)}):k(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!m(b)||m(b)&&0===b.length)return a;var d,e=A(b),f="********";try{d=JSON.parse(T(a))}catch(g){return a}return c(d)}var T=a(10),U="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},V=3,W=51200,X=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isDOMError:g,isDOMException:h,isUndefined:i,isFunction:j,isPlainObject:k,isString:l,isArray:m,isEmptyObject:n,supportsErrorEvent:o,supportsDOMError:p,supportsDOMException:q,supportsFetch:r,supportsReferrerPolicy:s,supportsPromiseRejectionEvent:t,wrappedCallback:u,each:v,objectMerge:w,truncate:y,objectFrozen:x,hasKey:z,joinRegExp:A,urlencode:B,uuid4:D,htmlTreeAsString:E,htmlElementAsString:F,isSameException:I,isSameStacktrace:J,parseUrl:C,fill:K,safeJoin:L,serializeException:Q,serializeKeysForMessage:R,sanitize:S}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{10:10}],9:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}function e(){return"undefined"==typeof document||null==document.location?"":(document.location.origin||(document.location.origin=document.location.protocol+"//"+document.location.hostname+(document.location.port?":"+document.location.port:"")),document.location.origin)}var f=a(8),g={collectWindowErrors:!0,debug:!1},h="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},i=[].slice,j="?",k=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;g.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function e(a,b){var c=null;if(!b||g.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(i.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,h,i){var l=null,m=f.isErrorEvent(i)?i.error:i,n=f.isErrorEvent(a)?a.message:a;if(v)g.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&f.isError(m))l=g.computeStackTrace(m),e(l,!0);else{var p,r={url:b,line:c,column:h},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(k);p&&(s=p[1],n=p[2])}r.func=j,l={name:s,message:n,url:d(),stack:[r]},e(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=h.onerror,h.onerror=l,r=!0)}function n(){r&&(h.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,e.apply(null,[a,!1].concat(b))}function p(a,b){var c=i.call(arguments,1);if(v){if(u===a)return;o()}var d=g.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),g.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,f,g=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,h=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,i=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,k=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,l=/\((\S*)(?::(\d+))(?::(\d+))\)/,m=a.stack.split("\n"),n=[],o=(/^(.*) is undefined$/.exec(a.message),0),p=m.length;o eval")>-1;r&&(b=k.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==o||c[5]||"undefined"==typeof a.columnNumber||(n[0].column=a.columnNumber+1),f={url:c[3],func:c[1]||j,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}if(!f.func&&f.line&&(f.func=j),f.url&&"blob:"===f.url.substr(0,5)){var s=new XMLHttpRequest;if(s.open("GET",f.url,!1),s.send(null),200===s.status){var t=s.responseText||"";t=t.slice(-300);var u=t.match(/\/\/# sourceMappingURL=(.*)$/); +if(u){var v=u[1];"~"===v.charAt(0)&&(v=e()+v.slice(1)),f.url=v.slice(0,-4)}}}n.push(f)}return n.length?{name:a.name,message:a.message,url:d(),stack:n}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=j),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,e){for(var h,i,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==f&&o!==g.report){if(i={url:null,func:j,line:null,column:null},o.name?i.func=o.name:(h=k.exec(o.toString()))&&(i.func=h[1]),"undefined"==typeof i.func)try{i.func=h.input.substring(0,h.input.indexOf("{"))}catch(p){}m[""+o]?n=!0:m[""+o]=!0,l.push(i)}e&&l.splice(0,e);var q={name:a.name,message:a.message,url:d(),stack:l};return b(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),q}function f(b,e){var f=null;e=null==e?0:+e;try{if(f=a(b))return f}catch(h){if(g.debug)throw h}try{if(f=c(b,e+1))return f}catch(h){if(g.debug)throw h}return{name:b.name,message:b.message,url:d()}}return f.augmentStackTraceWithInitialElement=b,f.computeStackTraceFromStackProp=a,f}(),b.exports=g}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{8:8}],10:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}],11:[function(a,b,c){function d(a,b){var c=(65535&a)+(65535&b),d=(a>>16)+(b>>16)+(c>>16);return d<<16|65535&c}function e(a,b){return a<>>32-b}function f(a,b,c,f,g,h){return d(e(d(d(b,a),d(f,h)),g),c)}function g(a,b,c,d,e,g,h){return f(b&c|~b&d,a,b,e,g,h)}function h(a,b,c,d,e,g,h){return f(b&d|c&~d,a,b,e,g,h)}function i(a,b,c,d,e,g,h){return f(b^c^d,a,b,e,g,h)}function j(a,b,c,d,e,g,h){return f(c^(b|~d),a,b,e,g,h)}function k(a,b){a[b>>5]|=128<>>9<<4)+14]=b;var c,e,f,k,l,m=1732584193,n=-271733879,o=-1732584194,p=271733878;for(c=0;c>5]>>>b%32&255);return c}function m(a){var b,c=[];for(c[(a.length>>2)-1]=void 0,b=0;b>5]|=(255&a.charCodeAt(b/8))<16&&(e=k(e,8*a.length)),c=0;c<16;c+=1)f[c]=909522486^e[c],g[c]=1549556828^e[c];return d=k(f.concat(m(b)),512+8*b.length),l(k(g.concat(d),640))}function p(a){var b,c,d="0123456789abcdef",e="";for(c=0;c>>4&15)+d.charAt(15&b);return e}function q(a){return unescape(encodeURIComponent(a))}function r(a){return n(q(a))}function s(a){return p(r(a))}function t(a,b){return o(q(a),q(b))}function u(a,b){return p(t(a,b))}function v(a,b,c){return b?c?t(b,a):u(b,a):c?r(a):s(a)}b.exports=v},{}]},{},[7,1,2,3])(7)}); //# sourceMappingURL=raven.min.js.map \ No newline at end of file diff --git a/dist/console,ember,vue/raven.min.js.map b/dist/console,ember,vue/raven.min.js.map index 2fa6666d288d..c72130078ef4 100644 --- a/dist/console,ember,vue/raven.min.js.map +++ b/dist/console,ember,vue/raven.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","consolePlugin","console","pluginOptions","logLevels","levels","push","callback","msg","data","captureMessage","level","pop","wrapConsoleMethod","wrapMethod","addPlugin","5","7","2","emberPlugin","Ember","_oldOnError","onerror","error","captureException","RSVP","on","reason","extra","context","3","formatComponentName","vm","$root","name","_isVue","$options","_componentTag","__file","vuePlugin","Vue","config","errorHandler","info","metaData","Object","prototype","toString","componentName","propsData","lifecycleHook","4","RavenConfigError","message","constructor","utils","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","safeJoin","logger","Function","apply","8","6","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","sanitizeKeys","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isErrorEvent","isDOMError","isDOMException","isError","isObject","isPlainObject","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","sanitize","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","dsn","options","_logDebug","globalOptions","key","value","setDSN","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","substr","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","func","undefined","wrap","_before","wrapped","deep","_ignoreNextOnError","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","T","event","unhandledPromiseRejection","B","_promiseRejectionHandler","bind","addEventListener","P","removeEventListener","ex","trimHeadFrames","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","U","currentOptions","exKeys","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","setDataCallback","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","L","setTimeout","$","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","_","evtName","_keypressTimeout","target","category","ba","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","ca","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","C","_originalFunctionToString","Q","D","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","type","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","E","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","R","builtin","S","F","installer","concat","G","str","m","exec","allowSecretKey","J","port","A","V","stackInfo","_triggerEvent","_processException","lineno","X","frame","_normalizeFrame","in_app","ga","stackInfoUrl","normalized","filename","line","colno","column","function","fa","prefixedMessage","exception","values","culprit","ha","request","Referer","breadcrumbs","_trimBreadcrumbs","ia","urlProp","urlProps","ja","httpData","userAgent","User-Agent","referrer","y","_backoffDuration","_backoffStart","ma","na","current","last","oa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Y","baseData","project","platform","_getHttpData","serverName","server_name","_sanitizeData","forEach","random","_sendProcessedPayload","pa","ra","qa","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","sa","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","open","setRequestHeader","send","ta","hash","evaluated","z","Z","setUser","setReleaseContext","10","11","9","RavenConstructor","_Raven","noConflict","Client","what","supportsErrorEvent","ErrorEvent","supportsDOMError","DOMError","supportsDOMException","DOMException","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","wrappedCallback","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","sanitizeMask","safeInput","o_O","getLocationHref","getLocationOrigin","origin","hostname","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","responseText","sourceMaps","sourceMapAddress","charAt","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","string","raw"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file +{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","consolePlugin","console","pluginOptions","logLevels","levels","push","callback","msg","data","captureMessage","level","pop","wrapConsoleMethod","wrapMethod","addPlugin","5","7","2","emberPlugin","Ember","_oldOnError","onerror","error","captureException","RSVP","on","reason","extra","context","3","formatComponentName","vm","$root","name","_isVue","$options","_componentTag","__file","vuePlugin","Vue","config","errorHandler","info","metaData","Object","prototype","toString","componentName","propsData","lifecycleHook","4","RavenConfigError","message","constructor","utils","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","safeJoin","logger","Function","apply","8","6","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","sanitizeKeys","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isErrorEvent","isDOMError","isDOMException","isError","isObject","isPlainObject","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","sanitize","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","dsn","options","_logDebug","globalOptions","key","value","setDSN","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","substr","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","func","undefined","wrap","_before","wrapped","deep","_ignoreNextOnError","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","T","event","unhandledPromiseRejection","B","_promiseRejectionHandler","bind","addEventListener","P","removeEventListener","ex","trimHeadFrames","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","U","currentOptions","exKeys","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","setDataCallback","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","L","setTimeout","$","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","_","evtName","_keypressTimeout","target","category","ba","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","ca","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","C","_originalFunctionToString","Q","D","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","type","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","E","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","R","builtin","S","F","installer","concat","G","str","m","exec","allowSecretKey","J","port","A","V","stackInfo","_triggerEvent","_processException","lineno","X","frame","_normalizeFrame","in_app","ga","stackInfoUrl","normalized","filename","line","colno","column","function","fa","prefixedMessage","exception","values","transaction","ha","request","Referer","breadcrumbs","_trimBreadcrumbs","ia","urlProp","urlProps","ja","httpData","userAgent","User-Agent","referrer","y","_backoffDuration","_backoffStart","ma","na","current","last","oa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Y","baseData","project","platform","_getHttpData","serverName","server_name","_sanitizeData","forEach","random","_sendProcessedPayload","pa","ra","qa","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","sa","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","open","setRequestHeader","send","ta","hash","evaluated","z","Z","setUser","setReleaseContext","10","11","9","RavenConstructor","_Raven","noConflict","Client","what","supportsErrorEvent","ErrorEvent","supportsDOMError","DOMError","supportsDOMException","DOMException","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","wrappedCallback","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","sanitizeMask","safeInput","o_O","getLocationHref","getLocationOrigin","origin","hostname","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","responseText","sourceMaps","sourceMapAddress","charAt","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","string","raw"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file diff --git a/dist/console,ember/raven.js b/dist/console,ember/raven.js index 8e3af174ec15..3b320d894d47 100644 --- a/dist/console,ember/raven.js +++ b/dist/console,ember/raven.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.25.1 (b6f3c7a) | github.com/getsentry/raven-js */ +/*! Raven.js 3.25.2 (30b6d4e) | github.com/getsentry/raven-js */ /* * Includes TraceKit @@ -185,7 +185,11 @@ function now() { var _window = typeof window !== 'undefined' ? window - : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; + : typeof global !== 'undefined' + ? global + : typeof self !== 'undefined' + ? self + : {}; var _document = _window.document; var _navigator = _window.navigator; @@ -275,7 +279,7 @@ Raven.prototype = { // webpack (using a build step causes webpack #1617). Grunt verifies that // this value matches package.json during build. // See: https://github.com/getsentry/raven-js/issues/465 - VERSION: '3.25.1', + VERSION: '3.25.2', debug: false, @@ -1831,7 +1835,7 @@ Raven.prototype = { } ] }, - culprit: fileurl + transaction: fileurl }, options ); @@ -1946,7 +1950,7 @@ Raven.prototype = { if ( !last || current.message !== last.message || // defined for captureMessage - current.culprit !== last.culprit // defined for captureException/onerror + current.transaction !== last.transaction // defined for captureException/onerror ) return false; diff --git a/dist/console,ember/raven.min.js b/dist/console,ember/raven.min.js index 895c659a1c3f..b285faf33e85 100644 --- a/dist/console,ember/raven.min.js +++ b/dist/console,ember/raven.min.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.25.1 (b6f3c7a) | github.com/getsentry/raven-js */ -!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.Raven=a()}}(function(){return function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};b[g][0].call(k.exports,function(a){var c=b[g][1][a];return e(c?c:a)},k,k.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;gthis.k.maxBreadcrumbs&&this.u.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.r.push([a,b]),this.n&&this.F(),this},setUserContext:function(a){return this.j.user=a,this},setExtraContext:function(a){return this.Z("extra",a),this},setTagsContext:function(a){return this.Z("tags",a),this},clearContext:function(){return this.j={},this},getContext:function(){return JSON.parse(h(this.j))},setEnvironment:function(a){return this.k.environment=a,this},setRelease:function(a){return this.k.release=a,this},setDataCallback:function(a){var b=this.k.dataCallback;return this.k.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.k.breadcrumbCallback;return this.k.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.k.shouldSendCallback;return this.k.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.k.transport=a,this},lastException:function(){return this.d},lastEventId:function(){return this.f},isSetup:function(){return!!this.a&&(!!this.g||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.z("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=R.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(S){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.H;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.j.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.J(this.G(c)),h=S.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(S.head||S.body).appendChild(h)}},L:function(){var a=this;this.m+=1,setTimeout(function(){a.m-=1})},$:function(a,b){var c,d;if(this.b){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),S.createEvent?(c=S.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=S.createEventObject(),c.eventType=a);for(d in b)A(b,d)&&(c[d]=b[d]);if(S.createEvent)S.dispatchEvent(c);else try{S.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},_:function(a){var b=this;return function(c){if(b.aa=null,b.v!==c){b.v=c;var d;try{d=E(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ba:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.aa;g||a._("input")(c),clearTimeout(g),a.aa=setTimeout(function(){a.aa=null},b)}}},ca:function(a,b){var c=H(this.w.href),d=H(b),e=H(a);this.x=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},C:function(){var a=this;a.da=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.M?a.da.apply(this.O,arguments):a.da.apply(this,arguments)}},Q:function(){this.da&&(Function.prototype.toString=this.da)},D:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.ca(b.x,c+""),a.apply(this,arguments)}};I(R.history,"pushState",j,d),I(R.history,"replaceState",j,d)}if(c.console&&"console"in R&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};w(["debug","info","warn","error","log"],function(a,b){O(console,b,k)})}},R:function(){for(var a;this.t.length;){a=this.t.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},S:function(){for(var a in this.q)this.p[a]=this.q[a]},F:function(){var a=this;w(this.r,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},G:function(a){var b=Q.exec(a),c={},d=7;try{for(;d--;)c[P[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.k.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},J:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},A:function(){this.m||this.V.apply(this,arguments)},V:function(a,b){var c=this.X(a,b);this.$("handle",{stackInfo:a,options:b}),this.fa(a.name,a.message,a.url,a.lineno,c,b)},X:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(w(a.stack,function(b,e){var f=c.ga(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.u,0)}),this.j.user&&(a.user=this.j.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),a=this.pa(a),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||v(a[b]))&&delete a[b]}),s(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!v(a)&&(!s(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.ma()?void this.z("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function F(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&l(b))for(c=b.split(/\s+/),f=0;fc?Q(a,b-1):d}function R(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?X:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function S(a,b){function c(a){return m(a)?a.map(function(a){return c(a)}):k(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!m(b)||m(b)&&0===b.length)return a;var d,e=A(b),f="********";try{d=JSON.parse(T(a))}catch(g){return a}return c(d)}var T=a(9),U="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},V=3,W=51200,X=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isDOMError:g,isDOMException:h,isUndefined:i,isFunction:j,isPlainObject:k,isString:l,isArray:m,isEmptyObject:n,supportsErrorEvent:o,supportsDOMError:p,supportsDOMException:q,supportsFetch:r,supportsReferrerPolicy:s,supportsPromiseRejectionEvent:t,wrappedCallback:u,each:v,objectMerge:w,truncate:y,objectFrozen:x,hasKey:z,joinRegExp:A,urlencode:B,uuid4:D,htmlTreeAsString:E,htmlElementAsString:F,isSameException:I,isSameStacktrace:J,parseUrl:C,fill:K,safeJoin:L,serializeException:Q,serializeKeysForMessage:R,sanitize:S}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{9:9}],8:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}function e(){return"undefined"==typeof document||null==document.location?"":(document.location.origin||(document.location.origin=document.location.protocol+"//"+document.location.hostname+(document.location.port?":"+document.location.port:"")),document.location.origin)}var f=a(7),g={collectWindowErrors:!0,debug:!1},h="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},i=[].slice,j="?",k=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;g.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function e(a,b){var c=null;if(!b||g.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(i.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,h,i){var l=null,m=f.isErrorEvent(i)?i.error:i,n=f.isErrorEvent(a)?a.message:a;if(v)g.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&f.isError(m))l=g.computeStackTrace(m),e(l,!0);else{var p,r={url:b,line:c,column:h},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(k);p&&(s=p[1],n=p[2])}r.func=j,l={name:s,message:n,url:d(),stack:[r]},e(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=h.onerror,h.onerror=l,r=!0)}function n(){r&&(h.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,e.apply(null,[a,!1].concat(b))}function p(a,b){var c=i.call(arguments,1);if(v){if(u===a)return;o()}var d=g.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),g.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,f,g=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,h=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,i=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,k=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,l=/\((\S*)(?::(\d+))(?::(\d+))\)/,m=a.stack.split("\n"),n=[],o=(/^(.*) is undefined$/.exec(a.message),0),p=m.length;o eval")>-1;r&&(b=k.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==o||c[5]||"undefined"==typeof a.columnNumber||(n[0].column=a.columnNumber+1),f={url:c[3],func:c[1]||j,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}if(!f.func&&f.line&&(f.func=j),f.url&&"blob:"===f.url.substr(0,5)){var s=new XMLHttpRequest;if(s.open("GET",f.url,!1),s.send(null),200===s.status){var t=s.responseText||"";t=t.slice(-300);var u=t.match(/\/\/# sourceMappingURL=(.*)$/);if(u){var v=u[1];"~"===v.charAt(0)&&(v=e()+v.slice(1)),f.url=v.slice(0,-4)}}}n.push(f)}return n.length?{name:a.name,message:a.message,url:d(),stack:n}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=j),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,e){for(var h,i,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==f&&o!==g.report){if(i={url:null, -func:j,line:null,column:null},o.name?i.func=o.name:(h=k.exec(o.toString()))&&(i.func=h[1]),"undefined"==typeof i.func)try{i.func=h.input.substring(0,h.input.indexOf("{"))}catch(p){}m[""+o]?n=!0:m[""+o]=!0,l.push(i)}e&&l.splice(0,e);var q={name:a.name,message:a.message,url:d(),stack:l};return b(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),q}function f(b,e){var f=null;e=null==e?0:+e;try{if(f=a(b))return f}catch(h){if(g.debug)throw h}try{if(f=c(b,e+1))return f}catch(h){if(g.debug)throw h}return{name:b.name,message:b.message,url:d()}}return f.augmentStackTraceWithInitialElement=b,f.computeStackTraceFromStackProp=a,f}(),b.exports=g}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{7:7}],9:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}],10:[function(a,b,c){function d(a,b){var c=(65535&a)+(65535&b),d=(a>>16)+(b>>16)+(c>>16);return d<<16|65535&c}function e(a,b){return a<>>32-b}function f(a,b,c,f,g,h){return d(e(d(d(b,a),d(f,h)),g),c)}function g(a,b,c,d,e,g,h){return f(b&c|~b&d,a,b,e,g,h)}function h(a,b,c,d,e,g,h){return f(b&d|c&~d,a,b,e,g,h)}function i(a,b,c,d,e,g,h){return f(b^c^d,a,b,e,g,h)}function j(a,b,c,d,e,g,h){return f(c^(b|~d),a,b,e,g,h)}function k(a,b){a[b>>5]|=128<>>9<<4)+14]=b;var c,e,f,k,l,m=1732584193,n=-271733879,o=-1732584194,p=271733878;for(c=0;c>5]>>>b%32&255);return c}function m(a){var b,c=[];for(c[(a.length>>2)-1]=void 0,b=0;b>5]|=(255&a.charCodeAt(b/8))<16&&(e=k(e,8*a.length)),c=0;c<16;c+=1)f[c]=909522486^e[c],g[c]=1549556828^e[c];return d=k(f.concat(m(b)),512+8*b.length),l(k(g.concat(d),640))}function p(a){var b,c,d="0123456789abcdef",e="";for(c=0;c>>4&15)+d.charAt(15&b);return e}function q(a){return unescape(encodeURIComponent(a))}function r(a){return n(q(a))}function s(a){return p(r(a))}function t(a,b){return o(q(a),q(b))}function u(a,b){return p(t(a,b))}function v(a,b,c){return b?c?t(b,a):u(b,a):c?r(a):s(a)}b.exports=v},{}]},{},[6,1,2])(6)}); +/*! Raven.js 3.25.2 (30b6d4e) | github.com/getsentry/raven-js */ +!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.Raven=a()}}(function(){return function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};b[g][0].call(k.exports,function(a){var c=b[g][1][a];return e(c?c:a)},k,k.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;gthis.k.maxBreadcrumbs&&this.u.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.r.push([a,b]),this.n&&this.F(),this},setUserContext:function(a){return this.j.user=a,this},setExtraContext:function(a){return this.Z("extra",a),this},setTagsContext:function(a){return this.Z("tags",a),this},clearContext:function(){return this.j={},this},getContext:function(){return JSON.parse(h(this.j))},setEnvironment:function(a){return this.k.environment=a,this},setRelease:function(a){return this.k.release=a,this},setDataCallback:function(a){var b=this.k.dataCallback;return this.k.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.k.breadcrumbCallback;return this.k.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.k.shouldSendCallback;return this.k.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.k.transport=a,this},lastException:function(){return this.d},lastEventId:function(){return this.f},isSetup:function(){return!!this.a&&(!!this.g||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.z("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=R.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(S){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.H;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.j.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.J(this.G(c)),h=S.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(S.head||S.body).appendChild(h)}},L:function(){var a=this;this.m+=1,setTimeout(function(){a.m-=1})},$:function(a,b){var c,d;if(this.b){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),S.createEvent?(c=S.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=S.createEventObject(),c.eventType=a);for(d in b)A(b,d)&&(c[d]=b[d]);if(S.createEvent)S.dispatchEvent(c);else try{S.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},_:function(a){var b=this;return function(c){if(b.aa=null,b.v!==c){b.v=c;var d;try{d=E(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ba:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.aa;g||a._("input")(c),clearTimeout(g),a.aa=setTimeout(function(){a.aa=null},b)}}},ca:function(a,b){var c=H(this.w.href),d=H(b),e=H(a);this.x=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},C:function(){var a=this;a.da=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.M?a.da.apply(this.O,arguments):a.da.apply(this,arguments)}},Q:function(){this.da&&(Function.prototype.toString=this.da)},D:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.ca(b.x,c+""),a.apply(this,arguments)}};I(R.history,"pushState",j,d),I(R.history,"replaceState",j,d)}if(c.console&&"console"in R&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};w(["debug","info","warn","error","log"],function(a,b){O(console,b,k)})}},R:function(){for(var a;this.t.length;){a=this.t.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},S:function(){for(var a in this.q)this.p[a]=this.q[a]},F:function(){var a=this;w(this.r,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},G:function(a){var b=Q.exec(a),c={},d=7;try{for(;d--;)c[P[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.k.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},J:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},A:function(){this.m||this.V.apply(this,arguments)},V:function(a,b){var c=this.X(a,b);this.$("handle",{stackInfo:a,options:b}),this.fa(a.name,a.message,a.url,a.lineno,c,b)},X:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(w(a.stack,function(b,e){var f=c.ga(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.u,0)}),this.j.user&&(a.user=this.j.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),a=this.pa(a),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||v(a[b]))&&delete a[b]}),s(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!v(a)&&(!s(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.ma()?void this.z("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function F(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&l(b))for(c=b.split(/\s+/),f=0;fc?Q(a,b-1):d}function R(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?X:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function S(a,b){function c(a){return m(a)?a.map(function(a){return c(a)}):k(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!m(b)||m(b)&&0===b.length)return a;var d,e=A(b),f="********";try{d=JSON.parse(T(a))}catch(g){return a}return c(d)}var T=a(9),U="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},V=3,W=51200,X=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isDOMError:g,isDOMException:h,isUndefined:i,isFunction:j,isPlainObject:k,isString:l,isArray:m,isEmptyObject:n,supportsErrorEvent:o,supportsDOMError:p,supportsDOMException:q,supportsFetch:r,supportsReferrerPolicy:s,supportsPromiseRejectionEvent:t,wrappedCallback:u,each:v,objectMerge:w,truncate:y,objectFrozen:x,hasKey:z,joinRegExp:A,urlencode:B,uuid4:D,htmlTreeAsString:E,htmlElementAsString:F,isSameException:I,isSameStacktrace:J,parseUrl:C,fill:K,safeJoin:L,serializeException:Q,serializeKeysForMessage:R,sanitize:S}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{9:9}],8:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}function e(){return"undefined"==typeof document||null==document.location?"":(document.location.origin||(document.location.origin=document.location.protocol+"//"+document.location.hostname+(document.location.port?":"+document.location.port:"")),document.location.origin)}var f=a(7),g={collectWindowErrors:!0,debug:!1},h="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},i=[].slice,j="?",k=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;g.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function e(a,b){var c=null;if(!b||g.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(i.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,h,i){var l=null,m=f.isErrorEvent(i)?i.error:i,n=f.isErrorEvent(a)?a.message:a;if(v)g.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&f.isError(m))l=g.computeStackTrace(m),e(l,!0);else{var p,r={url:b,line:c,column:h},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(k);p&&(s=p[1],n=p[2])}r.func=j,l={name:s,message:n,url:d(),stack:[r]},e(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=h.onerror,h.onerror=l,r=!0)}function n(){r&&(h.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,e.apply(null,[a,!1].concat(b))}function p(a,b){var c=i.call(arguments,1);if(v){if(u===a)return;o()}var d=g.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),g.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,f,g=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,h=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,i=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,k=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,l=/\((\S*)(?::(\d+))(?::(\d+))\)/,m=a.stack.split("\n"),n=[],o=(/^(.*) is undefined$/.exec(a.message),0),p=m.length;o eval")>-1;r&&(b=k.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==o||c[5]||"undefined"==typeof a.columnNumber||(n[0].column=a.columnNumber+1),f={url:c[3],func:c[1]||j,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}if(!f.func&&f.line&&(f.func=j),f.url&&"blob:"===f.url.substr(0,5)){var s=new XMLHttpRequest;if(s.open("GET",f.url,!1),s.send(null),200===s.status){var t=s.responseText||"";t=t.slice(-300);var u=t.match(/\/\/# sourceMappingURL=(.*)$/);if(u){var v=u[1];"~"===v.charAt(0)&&(v=e()+v.slice(1)),f.url=v.slice(0,-4)}}}n.push(f)}return n.length?{name:a.name,message:a.message,url:d(),stack:n}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=j),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,e){for(var h,i,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==f&&o!==g.report){ +if(i={url:null,func:j,line:null,column:null},o.name?i.func=o.name:(h=k.exec(o.toString()))&&(i.func=h[1]),"undefined"==typeof i.func)try{i.func=h.input.substring(0,h.input.indexOf("{"))}catch(p){}m[""+o]?n=!0:m[""+o]=!0,l.push(i)}e&&l.splice(0,e);var q={name:a.name,message:a.message,url:d(),stack:l};return b(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),q}function f(b,e){var f=null;e=null==e?0:+e;try{if(f=a(b))return f}catch(h){if(g.debug)throw h}try{if(f=c(b,e+1))return f}catch(h){if(g.debug)throw h}return{name:b.name,message:b.message,url:d()}}return f.augmentStackTraceWithInitialElement=b,f.computeStackTraceFromStackProp=a,f}(),b.exports=g}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{7:7}],9:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}],10:[function(a,b,c){function d(a,b){var c=(65535&a)+(65535&b),d=(a>>16)+(b>>16)+(c>>16);return d<<16|65535&c}function e(a,b){return a<>>32-b}function f(a,b,c,f,g,h){return d(e(d(d(b,a),d(f,h)),g),c)}function g(a,b,c,d,e,g,h){return f(b&c|~b&d,a,b,e,g,h)}function h(a,b,c,d,e,g,h){return f(b&d|c&~d,a,b,e,g,h)}function i(a,b,c,d,e,g,h){return f(b^c^d,a,b,e,g,h)}function j(a,b,c,d,e,g,h){return f(c^(b|~d),a,b,e,g,h)}function k(a,b){a[b>>5]|=128<>>9<<4)+14]=b;var c,e,f,k,l,m=1732584193,n=-271733879,o=-1732584194,p=271733878;for(c=0;c>5]>>>b%32&255);return c}function m(a){var b,c=[];for(c[(a.length>>2)-1]=void 0,b=0;b>5]|=(255&a.charCodeAt(b/8))<16&&(e=k(e,8*a.length)),c=0;c<16;c+=1)f[c]=909522486^e[c],g[c]=1549556828^e[c];return d=k(f.concat(m(b)),512+8*b.length),l(k(g.concat(d),640))}function p(a){var b,c,d="0123456789abcdef",e="";for(c=0;c>>4&15)+d.charAt(15&b);return e}function q(a){return unescape(encodeURIComponent(a))}function r(a){return n(q(a))}function s(a){return p(r(a))}function t(a,b){return o(q(a),q(b))}function u(a,b){return p(t(a,b))}function v(a,b,c){return b?c?t(b,a):u(b,a):c?r(a):s(a)}b.exports=v},{}]},{},[6,1,2])(6)}); //# sourceMappingURL=raven.min.js.map \ No newline at end of file diff --git a/dist/console,ember/raven.min.js.map b/dist/console,ember/raven.min.js.map index 935440a7f613..53fde7dc0dac 100644 --- a/dist/console,ember/raven.min.js.map +++ b/dist/console,ember/raven.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","consolePlugin","console","pluginOptions","logLevels","levels","push","callback","msg","data","captureMessage","level","pop","wrapConsoleMethod","wrapMethod","addPlugin","4","6","2","emberPlugin","Ember","_oldOnError","onerror","error","captureException","RSVP","on","reason","extra","context","3","RavenConfigError","message","name","prototype","constructor","utils","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","safeJoin","logger","Function","apply","7","5","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","sanitizeKeys","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isErrorEvent","isDOMError","isDOMException","isError","isObject","isPlainObject","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","sanitize","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","config","dsn","options","_logDebug","globalOptions","key","value","setDSN","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","toString","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","substr","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","func","undefined","wrap","_before","wrapped","deep","_ignoreNextOnError","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","T","event","unhandledPromiseRejection","B","_promiseRejectionHandler","bind","addEventListener","P","removeEventListener","ex","trimHeadFrames","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","U","currentOptions","exKeys","Object","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","setDataCallback","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","L","setTimeout","$","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","_","evtName","_keypressTimeout","target","category","ba","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","ca","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","C","_originalFunctionToString","Q","D","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","type","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","E","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","R","builtin","S","F","installer","concat","G","str","m","exec","allowSecretKey","J","port","A","V","stackInfo","_triggerEvent","_processException","lineno","X","frame","_normalizeFrame","in_app","ga","stackInfoUrl","normalized","filename","line","colno","column","function","fa","prefixedMessage","exception","values","culprit","ha","request","Referer","breadcrumbs","_trimBreadcrumbs","ia","urlProp","urlProps","ja","httpData","userAgent","User-Agent","referrer","y","_backoffDuration","_backoffStart","ma","na","current","last","oa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Y","baseData","project","platform","_getHttpData","serverName","server_name","_sanitizeData","forEach","random","_sendProcessedPayload","pa","ra","qa","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","sa","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","open","setRequestHeader","send","ta","hash","evaluated","z","Z","setUser","setReleaseContext","10","8","9","RavenConstructor","_Raven","noConflict","Client","what","supportsErrorEvent","ErrorEvent","supportsDOMError","DOMError","supportsDOMException","DOMException","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","wrappedCallback","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","sanitizeMask","safeInput","o_O","getLocationHref","getLocationOrigin","origin","hostname","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","responseText","sourceMaps","sourceMapAddress","charAt","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","string","raw"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file +{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","consolePlugin","console","pluginOptions","logLevels","levels","push","callback","msg","data","captureMessage","level","pop","wrapConsoleMethod","wrapMethod","addPlugin","4","6","2","emberPlugin","Ember","_oldOnError","onerror","error","captureException","RSVP","on","reason","extra","context","3","RavenConfigError","message","name","prototype","constructor","utils","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","safeJoin","logger","Function","apply","7","5","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","sanitizeKeys","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isErrorEvent","isDOMError","isDOMException","isError","isObject","isPlainObject","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","sanitize","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","config","dsn","options","_logDebug","globalOptions","key","value","setDSN","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","toString","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","substr","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","func","undefined","wrap","_before","wrapped","deep","_ignoreNextOnError","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","T","event","unhandledPromiseRejection","B","_promiseRejectionHandler","bind","addEventListener","P","removeEventListener","ex","trimHeadFrames","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","U","currentOptions","exKeys","Object","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","setDataCallback","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","L","setTimeout","$","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","_","evtName","_keypressTimeout","target","category","ba","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","ca","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","C","_originalFunctionToString","Q","D","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","type","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","E","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","R","builtin","S","F","installer","concat","G","str","m","exec","allowSecretKey","J","port","A","V","stackInfo","_triggerEvent","_processException","lineno","X","frame","_normalizeFrame","in_app","ga","stackInfoUrl","normalized","filename","line","colno","column","function","fa","prefixedMessage","exception","values","transaction","ha","request","Referer","breadcrumbs","_trimBreadcrumbs","ia","urlProp","urlProps","ja","httpData","userAgent","User-Agent","referrer","y","_backoffDuration","_backoffStart","ma","na","current","last","oa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Y","baseData","project","platform","_getHttpData","serverName","server_name","_sanitizeData","forEach","random","_sendProcessedPayload","pa","ra","qa","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","sa","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","open","setRequestHeader","send","ta","hash","evaluated","z","Z","setUser","setReleaseContext","10","8","9","RavenConstructor","_Raven","noConflict","Client","what","supportsErrorEvent","ErrorEvent","supportsDOMError","DOMError","supportsDOMException","DOMException","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","wrappedCallback","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","sanitizeMask","safeInput","o_O","getLocationHref","getLocationOrigin","origin","hostname","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","responseText","sourceMaps","sourceMapAddress","charAt","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","string","raw"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file diff --git a/dist/console,require,vue/raven.js b/dist/console,require,vue/raven.js index f2bae8a94abf..c475cff8e6c2 100644 --- a/dist/console,require,vue/raven.js +++ b/dist/console,require,vue/raven.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.25.1 (b6f3c7a) | github.com/getsentry/raven-js */ +/*! Raven.js 3.25.2 (30b6d4e) | github.com/getsentry/raven-js */ /* * Includes TraceKit @@ -219,7 +219,11 @@ function now() { var _window = typeof window !== 'undefined' ? window - : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; + : typeof global !== 'undefined' + ? global + : typeof self !== 'undefined' + ? self + : {}; var _document = _window.document; var _navigator = _window.navigator; @@ -309,7 +313,7 @@ Raven.prototype = { // webpack (using a build step causes webpack #1617). Grunt verifies that // this value matches package.json during build. // See: https://github.com/getsentry/raven-js/issues/465 - VERSION: '3.25.1', + VERSION: '3.25.2', debug: false, @@ -1865,7 +1869,7 @@ Raven.prototype = { } ] }, - culprit: fileurl + transaction: fileurl }, options ); @@ -1980,7 +1984,7 @@ Raven.prototype = { if ( !last || current.message !== last.message || // defined for captureMessage - current.culprit !== last.culprit // defined for captureException/onerror + current.transaction !== last.transaction // defined for captureException/onerror ) return false; diff --git a/dist/console,require,vue/raven.min.js b/dist/console,require,vue/raven.min.js index 60231818183c..803e1d0208bf 100644 --- a/dist/console,require,vue/raven.min.js +++ b/dist/console,require,vue/raven.min.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.25.1 (b6f3c7a) | github.com/getsentry/raven-js */ -!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.Raven=a()}}(function(){var a;return function b(a,c,d){function e(g,h){if(!c[g]){if(!a[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};a[g][0].call(k.exports,function(b){var c=a[g][1][b];return e(c?c:b)},k,k.exports,b,a,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;g":"anonymous component")+(a._isVue&&a.$options.__file?" at "+a.$options.__file:"")}function e(a,b){if(b=b||window.Vue,b&&b.config){var c=b.config.errorHandler;b.config.errorHandler=function(b,e,f){var g={};"[object Object]"===Object.prototype.toString.call(e)&&(g.componentName=d(e),g.propsData=e.$options.propsData),"undefined"!=typeof f&&(g.lifecycleHook=f),a.captureException(b,{extra:g}),"function"==typeof c&&c.call(this,b,e,f)}}}b.exports=e,a(7).addPlugin(b.exports)},{7:7}],4:[function(a,b,c){function d(a){this.name="RavenConfigError",this.message=a}d.prototype=new Error,d.prototype.constructor=d,b.exports=d},{}],5:[function(a,b,c){var d=a(8),e=function(a,b,c){var e=a[b],f=a;if(b in a){var g="warn"===b?"warning":b;a[b]=function(){var a=[].slice.call(arguments),h=d.safeJoin(a," "),i={level:g,logger:"console",extra:{arguments:a}};"assert"===b?a[0]===!1&&(h="Assertion failed: "+(d.safeJoin(a.slice(1)," ")||"console.assert"),i.extra.arguments=a.slice(1),c&&c(h,i)):c&&c(h,i),e&&Function.prototype.apply.call(e,f,a)}}};b.exports={wrapMethod:e}},{8:8}],6:[function(a,b,c){(function(c){function d(){return+new Date}function e(a,b){return s(b)?function(c){return b(c,a)}:b}function f(){this.a=!("object"!=typeof JSON||!JSON.stringify),this.b=!r(S),this.c=!r(T),this.d=null,this.e=null,this.f=null,this.g=null,this.h=null,this.i=null,this.j={},this.k={release:R.SENTRY_RELEASE&&R.SENTRY_RELEASE.id,logger:"javascript",ignoreErrors:[],ignoreUrls:[],whitelistUrls:[],includePaths:[],headers:null,collectWindowErrors:!0,captureUnhandledRejections:!0,maxMessageLength:0,maxUrlLength:250,stackTraceLimit:50,autoBreadcrumbs:!0,instrument:!0,sampleRate:1,sanitizeKeys:[]},this.l={method:"POST",keepalive:!0,referrerPolicy:K()?"origin":""},this.m=0,this.n=!1,this.o=Error.stackTraceLimit,this.p=R.console||{},this.q={},this.r=[],this.s=d(),this.t=[],this.u=[],this.v=null,this.w=R.location,this.x=this.w&&this.w.href,this.y();for(var a in this.p)this.q[a]=this.p[a]}var g=a(9),h=a(10),i=a(11),j=a(4),k=a(8),l=k.isErrorEvent,m=k.isDOMError,n=k.isDOMException,o=k.isError,p=k.isObject,q=k.isPlainObject,r=k.isUndefined,s=k.isFunction,t=k.isString,u=k.isArray,v=k.isEmptyObject,w=k.each,x=k.objectMerge,y=k.truncate,z=k.objectFrozen,A=k.hasKey,B=k.joinRegExp,C=k.urlencode,D=k.uuid4,E=k.htmlTreeAsString,F=k.isSameException,G=k.isSameStacktrace,H=k.parseUrl,I=k.fill,J=k.supportsFetch,K=k.supportsReferrerPolicy,L=k.serializeKeysForMessage,M=k.serializeException,N=k.sanitize,O=a(5).wrapMethod,P="source protocol user pass host port path".split(" "),Q=/^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/,R="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},S=R.document,T=R.navigator;f.prototype={VERSION:"3.25.1",debug:!1,TraceKit:g,config:function(a,b){var c=this;if(c.g)return this.z("error","Error: Raven has already been configured"),c;if(!a)return c;var d=c.k;b&&w(b,function(a,b){"tags"===a||"extra"===a||"user"===a?c.j[a]=b:d[a]=b}),c.setDSN(a),d.ignoreErrors.push(/^Script error\.?$/),d.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/),d.ignoreErrors=B(d.ignoreErrors),d.ignoreUrls=!!d.ignoreUrls.length&&B(d.ignoreUrls),d.whitelistUrls=!!d.whitelistUrls.length&&B(d.whitelistUrls),d.includePaths=B(d.includePaths),d.maxBreadcrumbs=Math.max(0,Math.min(d.maxBreadcrumbs||100,100));var e={xhr:!0,console:!0,dom:!0,location:!0,sentry:!0},f=d.autoBreadcrumbs;"[object Object]"==={}.toString.call(f)?f=x(e,f):f!==!1&&(f=e),d.autoBreadcrumbs=f;var h={tryCatch:!0},i=d.instrument;return"[object Object]"==={}.toString.call(i)?i=x(h,i):i!==!1&&(i=h),d.instrument=i,g.collectWindowErrors=!!d.collectWindowErrors,c},install:function(){var a=this;return a.isSetup()&&!a.n&&(g.report.subscribe(function(){a.A.apply(a,arguments)}),a.k.captureUnhandledRejections&&a.B(),a.C(),a.k.instrument&&a.k.instrument.tryCatch&&a.D(),a.k.autoBreadcrumbs&&a.E(),a.F(),a.n=!0),Error.stackTraceLimit=a.k.stackTraceLimit,this},setDSN:function(a){var b=this,c=b.G(a),d=c.path.lastIndexOf("/"),e=c.path.substr(1,d);b.H=a,b.h=c.user,b.I=c.pass&&c.pass.substr(1),b.i=c.path.substr(d+1),b.g=b.J(c),b.K=b.g+"/"+e+"api/"+b.i+"/store/",this.y()},context:function(a,b,c){return s(a)&&(c=b||[],b=a,a=void 0),this.wrap(a,b).apply(this,c)},wrap:function(a,b,c){function d(){var d=[],f=arguments.length,g=!a||a&&a.deep!==!1;for(c&&s(c)&&c.apply(this,arguments);f--;)d[f]=g?e.wrap(a,arguments[f]):arguments[f];try{return b.apply(this,d)}catch(h){throw e.L(),e.captureException(h,a),h}}var e=this;if(r(b)&&!s(a))return a;if(s(a)&&(b=a,a=void 0),!s(b))return b;try{if(b.M)return b;if(b.N)return b.N}catch(f){return b}for(var g in b)A(b,g)&&(d[g]=b[g]);return d.prototype=b.prototype,b.N=d,d.M=!0,d.O=b,d},uninstall:function(){return g.report.uninstall(),this.P(),this.Q(),this.R(),this.S(),Error.stackTraceLimit=this.o,this.n=!1,this},T:function(a){this.z("debug","Raven caught unhandled promise rejection:",a),this.captureException(a.reason,{extra:{unhandledPromiseRejection:!0}})},B:function(){return this.T=this.T.bind(this),R.addEventListener&&R.addEventListener("unhandledrejection",this.T),this},P:function(){return R.removeEventListener&&R.removeEventListener("unhandledrejection",this.T),this},captureException:function(a,b){if(b=x({trimHeadFrames:0},b?b:{}),l(a)&&a.error)a=a.error;else{if(m(a)||n(a)){var c=a.name||(m(a)?"DOMError":"DOMException"),d=a.message?c+": "+a.message:c;return this.captureMessage(d,x(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}))}if(o(a))a=a;else{if(!q(a))return this.captureMessage(a,x(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}));b=this.U(b,a),a=new Error(b.message)}}this.d=a;try{var e=g.computeStackTrace(a);this.V(e,b)}catch(f){if(a!==f)throw f}return this},U:function(a,b){var c=Object.keys(b).sort(),d=x(a,{message:"Non-Error exception captured with keys: "+L(c),fingerprint:[i(c)],extra:a.extra||{}});return d.extra.W=M(b),d},captureMessage:function(a,b){if(!this.k.ignoreErrors.test||!this.k.ignoreErrors.test(a)){b=b||{},a+="";var c,d=x({message:a},b);try{throw new Error(a)}catch(e){c=e}c.name=null;var f=g.computeStackTrace(c),h=u(f.stack)&&f.stack[1];h&&"Raven.captureException"===h.func&&(h=f.stack[2]);var i=h&&h.url||"";if((!this.k.ignoreUrls.test||!this.k.ignoreUrls.test(i))&&(!this.k.whitelistUrls.test||this.k.whitelistUrls.test(i))){if(this.k.stacktrace||b&&b.stacktrace){d.fingerprint=null==d.fingerprint?a:d.fingerprint,b=x({trimHeadFrames:0},b),b.trimHeadFrames+=1;var j=this.X(f,b);d.stacktrace={frames:j.reverse()}}return d.fingerprint&&(d.fingerprint=u(d.fingerprint)?d.fingerprint:[d.fingerprint]),this.Y(d),this}}},captureBreadcrumb:function(a){var b=x({timestamp:d()/1e3},a);if(s(this.k.breadcrumbCallback)){var c=this.k.breadcrumbCallback(b);if(p(c)&&!v(c))b=c;else if(c===!1)return this}return this.u.push(b),this.u.length>this.k.maxBreadcrumbs&&this.u.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.r.push([a,b]),this.n&&this.F(),this},setUserContext:function(a){return this.j.user=a,this},setExtraContext:function(a){return this.Z("extra",a),this},setTagsContext:function(a){return this.Z("tags",a),this},clearContext:function(){return this.j={},this},getContext:function(){return JSON.parse(h(this.j))},setEnvironment:function(a){return this.k.environment=a,this},setRelease:function(a){return this.k.release=a,this},setDataCallback:function(a){var b=this.k.dataCallback;return this.k.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.k.breadcrumbCallback;return this.k.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.k.shouldSendCallback;return this.k.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.k.transport=a,this},lastException:function(){return this.d},lastEventId:function(){return this.f},isSetup:function(){return!!this.a&&(!!this.g||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.z("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=R.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(S){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.H;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.j.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.J(this.G(c)),h=S.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(S.head||S.body).appendChild(h)}},L:function(){var a=this;this.m+=1,setTimeout(function(){a.m-=1})},$:function(a,b){var c,d;if(this.b){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),S.createEvent?(c=S.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=S.createEventObject(),c.eventType=a);for(d in b)A(b,d)&&(c[d]=b[d]);if(S.createEvent)S.dispatchEvent(c);else try{S.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},_:function(a){var b=this;return function(c){if(b.aa=null,b.v!==c){b.v=c;var d;try{d=E(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ba:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.aa;g||a._("input")(c),clearTimeout(g),a.aa=setTimeout(function(){a.aa=null},b)}}},ca:function(a,b){var c=H(this.w.href),d=H(b),e=H(a);this.x=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},C:function(){var a=this;a.da=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.M?a.da.apply(this.O,arguments):a.da.apply(this,arguments)}},Q:function(){this.da&&(Function.prototype.toString=this.da)},D:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.ca(b.x,c+""),a.apply(this,arguments)}};I(R.history,"pushState",j,d),I(R.history,"replaceState",j,d)}if(c.console&&"console"in R&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};w(["debug","info","warn","error","log"],function(a,b){O(console,b,k)})}},R:function(){for(var a;this.t.length;){a=this.t.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},S:function(){for(var a in this.q)this.p[a]=this.q[a]},F:function(){var a=this;w(this.r,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},G:function(a){var b=Q.exec(a),c={},d=7;try{for(;d--;)c[P[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.k.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},J:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},A:function(){this.m||this.V.apply(this,arguments)},V:function(a,b){var c=this.X(a,b);this.$("handle",{stackInfo:a,options:b}),this.fa(a.name,a.message,a.url,a.lineno,c,b)},X:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(w(a.stack,function(b,e){var f=c.ga(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.u,0)}),this.j.user&&(a.user=this.j.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),a=this.pa(a),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||v(a[b]))&&delete a[b]}),s(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!v(a)&&(!s(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.ma()?void this.z("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function F(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&l(b))for(c=b.split(/\s+/),f=0;fc?Q(a,b-1):d}function R(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?X:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function S(a,b){function c(a){return m(a)?a.map(function(a){return c(a)}):k(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!m(b)||m(b)&&0===b.length)return a;var d,e=A(b),f="********";try{d=JSON.parse(T(a))}catch(g){return a}return c(d)}var T=a(10),U="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},V=3,W=51200,X=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isDOMError:g,isDOMException:h,isUndefined:i,isFunction:j,isPlainObject:k,isString:l,isArray:m,isEmptyObject:n,supportsErrorEvent:o,supportsDOMError:p,supportsDOMException:q,supportsFetch:r,supportsReferrerPolicy:s,supportsPromiseRejectionEvent:t,wrappedCallback:u,each:v,objectMerge:w,truncate:y,objectFrozen:x,hasKey:z,joinRegExp:A,urlencode:B,uuid4:D,htmlTreeAsString:E,htmlElementAsString:F,isSameException:I,isSameStacktrace:J,parseUrl:C,fill:K,safeJoin:L,serializeException:Q,serializeKeysForMessage:R,sanitize:S}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{10:10}],9:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}function e(){return"undefined"==typeof document||null==document.location?"":(document.location.origin||(document.location.origin=document.location.protocol+"//"+document.location.hostname+(document.location.port?":"+document.location.port:"")),document.location.origin)}var f=a(8),g={collectWindowErrors:!0,debug:!1},h="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},i=[].slice,j="?",k=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;g.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function e(a,b){var c=null;if(!b||g.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(i.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,h,i){var l=null,m=f.isErrorEvent(i)?i.error:i,n=f.isErrorEvent(a)?a.message:a;if(v)g.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&f.isError(m))l=g.computeStackTrace(m),e(l,!0);else{var p,r={url:b,line:c,column:h},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(k);p&&(s=p[1],n=p[2])}r.func=j,l={name:s,message:n,url:d(),stack:[r]},e(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=h.onerror,h.onerror=l,r=!0)}function n(){r&&(h.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,e.apply(null,[a,!1].concat(b))}function p(a,b){var c=i.call(arguments,1);if(v){if(u===a)return;o()}var d=g.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),g.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,f,g=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,h=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,i=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,k=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,l=/\((\S*)(?::(\d+))(?::(\d+))\)/,m=a.stack.split("\n"),n=[],o=(/^(.*) is undefined$/.exec(a.message),0),p=m.length;o eval")>-1;r&&(b=k.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==o||c[5]||"undefined"==typeof a.columnNumber||(n[0].column=a.columnNumber+1),f={url:c[3],func:c[1]||j,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}if(!f.func&&f.line&&(f.func=j),f.url&&"blob:"===f.url.substr(0,5)){var s=new XMLHttpRequest;if(s.open("GET",f.url,!1),s.send(null),200===s.status){var t=s.responseText||"";t=t.slice(-300);var u=t.match(/\/\/# sourceMappingURL=(.*)$/);if(u){var v=u[1];"~"===v.charAt(0)&&(v=e()+v.slice(1)),f.url=v.slice(0,-4)}}}n.push(f)}return n.length?{name:a.name,message:a.message,url:d(),stack:n}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1, -e.func||(e.func=j),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,e){for(var h,i,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==f&&o!==g.report){if(i={url:null,func:j,line:null,column:null},o.name?i.func=o.name:(h=k.exec(o.toString()))&&(i.func=h[1]),"undefined"==typeof i.func)try{i.func=h.input.substring(0,h.input.indexOf("{"))}catch(p){}m[""+o]?n=!0:m[""+o]=!0,l.push(i)}e&&l.splice(0,e);var q={name:a.name,message:a.message,url:d(),stack:l};return b(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),q}function f(b,e){var f=null;e=null==e?0:+e;try{if(f=a(b))return f}catch(h){if(g.debug)throw h}try{if(f=c(b,e+1))return f}catch(h){if(g.debug)throw h}return{name:b.name,message:b.message,url:d()}}return f.augmentStackTraceWithInitialElement=b,f.computeStackTraceFromStackProp=a,f}(),b.exports=g}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{8:8}],10:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}],11:[function(a,b,c){function d(a,b){var c=(65535&a)+(65535&b),d=(a>>16)+(b>>16)+(c>>16);return d<<16|65535&c}function e(a,b){return a<>>32-b}function f(a,b,c,f,g,h){return d(e(d(d(b,a),d(f,h)),g),c)}function g(a,b,c,d,e,g,h){return f(b&c|~b&d,a,b,e,g,h)}function h(a,b,c,d,e,g,h){return f(b&d|c&~d,a,b,e,g,h)}function i(a,b,c,d,e,g,h){return f(b^c^d,a,b,e,g,h)}function j(a,b,c,d,e,g,h){return f(c^(b|~d),a,b,e,g,h)}function k(a,b){a[b>>5]|=128<>>9<<4)+14]=b;var c,e,f,k,l,m=1732584193,n=-271733879,o=-1732584194,p=271733878;for(c=0;c>5]>>>b%32&255);return c}function m(a){var b,c=[];for(c[(a.length>>2)-1]=void 0,b=0;b>5]|=(255&a.charCodeAt(b/8))<16&&(e=k(e,8*a.length)),c=0;c<16;c+=1)f[c]=909522486^e[c],g[c]=1549556828^e[c];return d=k(f.concat(m(b)),512+8*b.length),l(k(g.concat(d),640))}function p(a){var b,c,d="0123456789abcdef",e="";for(c=0;c>>4&15)+d.charAt(15&b);return e}function q(a){return unescape(encodeURIComponent(a))}function r(a){return n(q(a))}function s(a){return p(r(a))}function t(a,b){return o(q(a),q(b))}function u(a,b){return p(t(a,b))}function v(a,b,c){return b?c?t(b,a):u(b,a):c?r(a):s(a)}b.exports=v},{}]},{},[7,1,2,3])(7)}); +/*! Raven.js 3.25.2 (30b6d4e) | github.com/getsentry/raven-js */ +!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.Raven=a()}}(function(){var a;return function b(a,c,d){function e(g,h){if(!c[g]){if(!a[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};a[g][0].call(k.exports,function(b){var c=a[g][1][b];return e(c?c:b)},k,k.exports,b,a,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;g":"anonymous component")+(a._isVue&&a.$options.__file?" at "+a.$options.__file:"")}function e(a,b){if(b=b||window.Vue,b&&b.config){var c=b.config.errorHandler;b.config.errorHandler=function(b,e,f){var g={};"[object Object]"===Object.prototype.toString.call(e)&&(g.componentName=d(e),g.propsData=e.$options.propsData),"undefined"!=typeof f&&(g.lifecycleHook=f),a.captureException(b,{extra:g}),"function"==typeof c&&c.call(this,b,e,f)}}}b.exports=e,a(7).addPlugin(b.exports)},{7:7}],4:[function(a,b,c){function d(a){this.name="RavenConfigError",this.message=a}d.prototype=new Error,d.prototype.constructor=d,b.exports=d},{}],5:[function(a,b,c){var d=a(8),e=function(a,b,c){var e=a[b],f=a;if(b in a){var g="warn"===b?"warning":b;a[b]=function(){var a=[].slice.call(arguments),h=d.safeJoin(a," "),i={level:g,logger:"console",extra:{arguments:a}};"assert"===b?a[0]===!1&&(h="Assertion failed: "+(d.safeJoin(a.slice(1)," ")||"console.assert"),i.extra.arguments=a.slice(1),c&&c(h,i)):c&&c(h,i),e&&Function.prototype.apply.call(e,f,a)}}};b.exports={wrapMethod:e}},{8:8}],6:[function(a,b,c){(function(c){function d(){return+new Date}function e(a,b){return s(b)?function(c){return b(c,a)}:b}function f(){this.a=!("object"!=typeof JSON||!JSON.stringify),this.b=!r(S),this.c=!r(T),this.d=null,this.e=null,this.f=null,this.g=null,this.h=null,this.i=null,this.j={},this.k={release:R.SENTRY_RELEASE&&R.SENTRY_RELEASE.id,logger:"javascript",ignoreErrors:[],ignoreUrls:[],whitelistUrls:[],includePaths:[],headers:null,collectWindowErrors:!0,captureUnhandledRejections:!0,maxMessageLength:0,maxUrlLength:250,stackTraceLimit:50,autoBreadcrumbs:!0,instrument:!0,sampleRate:1,sanitizeKeys:[]},this.l={method:"POST",keepalive:!0,referrerPolicy:K()?"origin":""},this.m=0,this.n=!1,this.o=Error.stackTraceLimit,this.p=R.console||{},this.q={},this.r=[],this.s=d(),this.t=[],this.u=[],this.v=null,this.w=R.location,this.x=this.w&&this.w.href,this.y();for(var a in this.p)this.q[a]=this.p[a]}var g=a(9),h=a(10),i=a(11),j=a(4),k=a(8),l=k.isErrorEvent,m=k.isDOMError,n=k.isDOMException,o=k.isError,p=k.isObject,q=k.isPlainObject,r=k.isUndefined,s=k.isFunction,t=k.isString,u=k.isArray,v=k.isEmptyObject,w=k.each,x=k.objectMerge,y=k.truncate,z=k.objectFrozen,A=k.hasKey,B=k.joinRegExp,C=k.urlencode,D=k.uuid4,E=k.htmlTreeAsString,F=k.isSameException,G=k.isSameStacktrace,H=k.parseUrl,I=k.fill,J=k.supportsFetch,K=k.supportsReferrerPolicy,L=k.serializeKeysForMessage,M=k.serializeException,N=k.sanitize,O=a(5).wrapMethod,P="source protocol user pass host port path".split(" "),Q=/^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/,R="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},S=R.document,T=R.navigator;f.prototype={VERSION:"3.25.2",debug:!1,TraceKit:g,config:function(a,b){var c=this;if(c.g)return this.z("error","Error: Raven has already been configured"),c;if(!a)return c;var d=c.k;b&&w(b,function(a,b){"tags"===a||"extra"===a||"user"===a?c.j[a]=b:d[a]=b}),c.setDSN(a),d.ignoreErrors.push(/^Script error\.?$/),d.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/),d.ignoreErrors=B(d.ignoreErrors),d.ignoreUrls=!!d.ignoreUrls.length&&B(d.ignoreUrls),d.whitelistUrls=!!d.whitelistUrls.length&&B(d.whitelistUrls),d.includePaths=B(d.includePaths),d.maxBreadcrumbs=Math.max(0,Math.min(d.maxBreadcrumbs||100,100));var e={xhr:!0,console:!0,dom:!0,location:!0,sentry:!0},f=d.autoBreadcrumbs;"[object Object]"==={}.toString.call(f)?f=x(e,f):f!==!1&&(f=e),d.autoBreadcrumbs=f;var h={tryCatch:!0},i=d.instrument;return"[object Object]"==={}.toString.call(i)?i=x(h,i):i!==!1&&(i=h),d.instrument=i,g.collectWindowErrors=!!d.collectWindowErrors,c},install:function(){var a=this;return a.isSetup()&&!a.n&&(g.report.subscribe(function(){a.A.apply(a,arguments)}),a.k.captureUnhandledRejections&&a.B(),a.C(),a.k.instrument&&a.k.instrument.tryCatch&&a.D(),a.k.autoBreadcrumbs&&a.E(),a.F(),a.n=!0),Error.stackTraceLimit=a.k.stackTraceLimit,this},setDSN:function(a){var b=this,c=b.G(a),d=c.path.lastIndexOf("/"),e=c.path.substr(1,d);b.H=a,b.h=c.user,b.I=c.pass&&c.pass.substr(1),b.i=c.path.substr(d+1),b.g=b.J(c),b.K=b.g+"/"+e+"api/"+b.i+"/store/",this.y()},context:function(a,b,c){return s(a)&&(c=b||[],b=a,a=void 0),this.wrap(a,b).apply(this,c)},wrap:function(a,b,c){function d(){var d=[],f=arguments.length,g=!a||a&&a.deep!==!1;for(c&&s(c)&&c.apply(this,arguments);f--;)d[f]=g?e.wrap(a,arguments[f]):arguments[f];try{return b.apply(this,d)}catch(h){throw e.L(),e.captureException(h,a),h}}var e=this;if(r(b)&&!s(a))return a;if(s(a)&&(b=a,a=void 0),!s(b))return b;try{if(b.M)return b;if(b.N)return b.N}catch(f){return b}for(var g in b)A(b,g)&&(d[g]=b[g]);return d.prototype=b.prototype,b.N=d,d.M=!0,d.O=b,d},uninstall:function(){return g.report.uninstall(),this.P(),this.Q(),this.R(),this.S(),Error.stackTraceLimit=this.o,this.n=!1,this},T:function(a){this.z("debug","Raven caught unhandled promise rejection:",a),this.captureException(a.reason,{extra:{unhandledPromiseRejection:!0}})},B:function(){return this.T=this.T.bind(this),R.addEventListener&&R.addEventListener("unhandledrejection",this.T),this},P:function(){return R.removeEventListener&&R.removeEventListener("unhandledrejection",this.T),this},captureException:function(a,b){if(b=x({trimHeadFrames:0},b?b:{}),l(a)&&a.error)a=a.error;else{if(m(a)||n(a)){var c=a.name||(m(a)?"DOMError":"DOMException"),d=a.message?c+": "+a.message:c;return this.captureMessage(d,x(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}))}if(o(a))a=a;else{if(!q(a))return this.captureMessage(a,x(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}));b=this.U(b,a),a=new Error(b.message)}}this.d=a;try{var e=g.computeStackTrace(a);this.V(e,b)}catch(f){if(a!==f)throw f}return this},U:function(a,b){var c=Object.keys(b).sort(),d=x(a,{message:"Non-Error exception captured with keys: "+L(c),fingerprint:[i(c)],extra:a.extra||{}});return d.extra.W=M(b),d},captureMessage:function(a,b){if(!this.k.ignoreErrors.test||!this.k.ignoreErrors.test(a)){b=b||{},a+="";var c,d=x({message:a},b);try{throw new Error(a)}catch(e){c=e}c.name=null;var f=g.computeStackTrace(c),h=u(f.stack)&&f.stack[1];h&&"Raven.captureException"===h.func&&(h=f.stack[2]);var i=h&&h.url||"";if((!this.k.ignoreUrls.test||!this.k.ignoreUrls.test(i))&&(!this.k.whitelistUrls.test||this.k.whitelistUrls.test(i))){if(this.k.stacktrace||b&&b.stacktrace){d.fingerprint=null==d.fingerprint?a:d.fingerprint,b=x({trimHeadFrames:0},b),b.trimHeadFrames+=1;var j=this.X(f,b);d.stacktrace={frames:j.reverse()}}return d.fingerprint&&(d.fingerprint=u(d.fingerprint)?d.fingerprint:[d.fingerprint]),this.Y(d),this}}},captureBreadcrumb:function(a){var b=x({timestamp:d()/1e3},a);if(s(this.k.breadcrumbCallback)){var c=this.k.breadcrumbCallback(b);if(p(c)&&!v(c))b=c;else if(c===!1)return this}return this.u.push(b),this.u.length>this.k.maxBreadcrumbs&&this.u.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.r.push([a,b]),this.n&&this.F(),this},setUserContext:function(a){return this.j.user=a,this},setExtraContext:function(a){return this.Z("extra",a),this},setTagsContext:function(a){return this.Z("tags",a),this},clearContext:function(){return this.j={},this},getContext:function(){return JSON.parse(h(this.j))},setEnvironment:function(a){return this.k.environment=a,this},setRelease:function(a){return this.k.release=a,this},setDataCallback:function(a){var b=this.k.dataCallback;return this.k.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.k.breadcrumbCallback;return this.k.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.k.shouldSendCallback;return this.k.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.k.transport=a,this},lastException:function(){return this.d},lastEventId:function(){return this.f},isSetup:function(){return!!this.a&&(!!this.g||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.z("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=R.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(S){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.H;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.j.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.J(this.G(c)),h=S.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(S.head||S.body).appendChild(h)}},L:function(){var a=this;this.m+=1,setTimeout(function(){a.m-=1})},$:function(a,b){var c,d;if(this.b){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),S.createEvent?(c=S.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=S.createEventObject(),c.eventType=a);for(d in b)A(b,d)&&(c[d]=b[d]);if(S.createEvent)S.dispatchEvent(c);else try{S.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},_:function(a){var b=this;return function(c){if(b.aa=null,b.v!==c){b.v=c;var d;try{d=E(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ba:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.aa;g||a._("input")(c),clearTimeout(g),a.aa=setTimeout(function(){a.aa=null},b)}}},ca:function(a,b){var c=H(this.w.href),d=H(b),e=H(a);this.x=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},C:function(){var a=this;a.da=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.M?a.da.apply(this.O,arguments):a.da.apply(this,arguments)}},Q:function(){this.da&&(Function.prototype.toString=this.da)},D:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.ca(b.x,c+""),a.apply(this,arguments)}};I(R.history,"pushState",j,d),I(R.history,"replaceState",j,d)}if(c.console&&"console"in R&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};w(["debug","info","warn","error","log"],function(a,b){O(console,b,k)})}},R:function(){for(var a;this.t.length;){a=this.t.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},S:function(){for(var a in this.q)this.p[a]=this.q[a]},F:function(){var a=this;w(this.r,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},G:function(a){var b=Q.exec(a),c={},d=7;try{for(;d--;)c[P[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.k.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},J:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},A:function(){this.m||this.V.apply(this,arguments)},V:function(a,b){var c=this.X(a,b);this.$("handle",{stackInfo:a,options:b}),this.fa(a.name,a.message,a.url,a.lineno,c,b)},X:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(w(a.stack,function(b,e){var f=c.ga(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.u,0)}),this.j.user&&(a.user=this.j.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),a=this.pa(a),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||v(a[b]))&&delete a[b]}),s(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!v(a)&&(!s(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.ma()?void this.z("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function F(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&l(b))for(c=b.split(/\s+/),f=0;fc?Q(a,b-1):d}function R(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?X:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function S(a,b){function c(a){return m(a)?a.map(function(a){return c(a)}):k(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!m(b)||m(b)&&0===b.length)return a;var d,e=A(b),f="********";try{d=JSON.parse(T(a))}catch(g){return a}return c(d)}var T=a(10),U="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},V=3,W=51200,X=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isDOMError:g,isDOMException:h,isUndefined:i,isFunction:j,isPlainObject:k,isString:l,isArray:m,isEmptyObject:n,supportsErrorEvent:o,supportsDOMError:p,supportsDOMException:q,supportsFetch:r,supportsReferrerPolicy:s,supportsPromiseRejectionEvent:t,wrappedCallback:u,each:v,objectMerge:w,truncate:y,objectFrozen:x,hasKey:z,joinRegExp:A,urlencode:B,uuid4:D,htmlTreeAsString:E,htmlElementAsString:F,isSameException:I,isSameStacktrace:J,parseUrl:C,fill:K,safeJoin:L,serializeException:Q,serializeKeysForMessage:R,sanitize:S}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{10:10}],9:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}function e(){return"undefined"==typeof document||null==document.location?"":(document.location.origin||(document.location.origin=document.location.protocol+"//"+document.location.hostname+(document.location.port?":"+document.location.port:"")),document.location.origin)}var f=a(8),g={collectWindowErrors:!0,debug:!1},h="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},i=[].slice,j="?",k=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;g.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function e(a,b){var c=null;if(!b||g.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(i.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,h,i){var l=null,m=f.isErrorEvent(i)?i.error:i,n=f.isErrorEvent(a)?a.message:a;if(v)g.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&f.isError(m))l=g.computeStackTrace(m),e(l,!0);else{var p,r={url:b,line:c,column:h},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(k);p&&(s=p[1],n=p[2])}r.func=j,l={name:s,message:n,url:d(),stack:[r]},e(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=h.onerror,h.onerror=l,r=!0)}function n(){r&&(h.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,e.apply(null,[a,!1].concat(b))}function p(a,b){var c=i.call(arguments,1);if(v){if(u===a)return;o()}var d=g.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),g.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,f,g=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,h=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,i=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,k=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,l=/\((\S*)(?::(\d+))(?::(\d+))\)/,m=a.stack.split("\n"),n=[],o=(/^(.*) is undefined$/.exec(a.message),0),p=m.length;o eval")>-1;r&&(b=k.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==o||c[5]||"undefined"==typeof a.columnNumber||(n[0].column=a.columnNumber+1),f={url:c[3],func:c[1]||j,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}if(!f.func&&f.line&&(f.func=j),f.url&&"blob:"===f.url.substr(0,5)){var s=new XMLHttpRequest;if(s.open("GET",f.url,!1),s.send(null),200===s.status){var t=s.responseText||"";t=t.slice(-300);var u=t.match(/\/\/# sourceMappingURL=(.*)$/);if(u){var v=u[1];"~"===v.charAt(0)&&(v=e()+v.slice(1)),f.url=v.slice(0,-4)}}}n.push(f)}return n.length?{name:a.name,message:a.message,url:d(),stack:n}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){ +if(a.incomplete=!1,e.func||(e.func=j),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,e){for(var h,i,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==f&&o!==g.report){if(i={url:null,func:j,line:null,column:null},o.name?i.func=o.name:(h=k.exec(o.toString()))&&(i.func=h[1]),"undefined"==typeof i.func)try{i.func=h.input.substring(0,h.input.indexOf("{"))}catch(p){}m[""+o]?n=!0:m[""+o]=!0,l.push(i)}e&&l.splice(0,e);var q={name:a.name,message:a.message,url:d(),stack:l};return b(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),q}function f(b,e){var f=null;e=null==e?0:+e;try{if(f=a(b))return f}catch(h){if(g.debug)throw h}try{if(f=c(b,e+1))return f}catch(h){if(g.debug)throw h}return{name:b.name,message:b.message,url:d()}}return f.augmentStackTraceWithInitialElement=b,f.computeStackTraceFromStackProp=a,f}(),b.exports=g}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{8:8}],10:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}],11:[function(a,b,c){function d(a,b){var c=(65535&a)+(65535&b),d=(a>>16)+(b>>16)+(c>>16);return d<<16|65535&c}function e(a,b){return a<>>32-b}function f(a,b,c,f,g,h){return d(e(d(d(b,a),d(f,h)),g),c)}function g(a,b,c,d,e,g,h){return f(b&c|~b&d,a,b,e,g,h)}function h(a,b,c,d,e,g,h){return f(b&d|c&~d,a,b,e,g,h)}function i(a,b,c,d,e,g,h){return f(b^c^d,a,b,e,g,h)}function j(a,b,c,d,e,g,h){return f(c^(b|~d),a,b,e,g,h)}function k(a,b){a[b>>5]|=128<>>9<<4)+14]=b;var c,e,f,k,l,m=1732584193,n=-271733879,o=-1732584194,p=271733878;for(c=0;c>5]>>>b%32&255);return c}function m(a){var b,c=[];for(c[(a.length>>2)-1]=void 0,b=0;b>5]|=(255&a.charCodeAt(b/8))<16&&(e=k(e,8*a.length)),c=0;c<16;c+=1)f[c]=909522486^e[c],g[c]=1549556828^e[c];return d=k(f.concat(m(b)),512+8*b.length),l(k(g.concat(d),640))}function p(a){var b,c,d="0123456789abcdef",e="";for(c=0;c>>4&15)+d.charAt(15&b);return e}function q(a){return unescape(encodeURIComponent(a))}function r(a){return n(q(a))}function s(a){return p(r(a))}function t(a,b){return o(q(a),q(b))}function u(a,b){return p(t(a,b))}function v(a,b,c){return b?c?t(b,a):u(b,a):c?r(a):s(a)}b.exports=v},{}]},{},[7,1,2,3])(7)}); //# sourceMappingURL=raven.min.js.map \ No newline at end of file diff --git a/dist/console,require,vue/raven.min.js.map b/dist/console,require,vue/raven.min.js.map index 4c14b0e02c44..76af5a635168 100644 --- a/dist/console,require,vue/raven.min.js.map +++ b/dist/console,require,vue/raven.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","consolePlugin","console","pluginOptions","logLevels","levels","push","callback","msg","data","captureMessage","level","pop","wrapConsoleMethod","wrapMethod","addPlugin","5","7","2","requirePlugin","wrap","deep","3","formatComponentName","vm","$root","name","_isVue","$options","_componentTag","__file","vuePlugin","Vue","config","_oldOnError","errorHandler","error","info","metaData","Object","prototype","toString","componentName","propsData","lifecycleHook","captureException","extra","4","RavenConfigError","message","constructor","utils","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","safeJoin","logger","Function","apply","8","6","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","sanitizeKeys","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isErrorEvent","isDOMError","isDOMException","isError","isObject","isPlainObject","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","sanitize","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","dsn","options","_logDebug","globalOptions","key","value","setDSN","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","substr","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","context","func","undefined","_before","wrapped","_ignoreNextOnError","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","T","event","reason","unhandledPromiseRejection","B","_promiseRejectionHandler","bind","addEventListener","P","removeEventListener","ex","trimHeadFrames","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","U","currentOptions","exKeys","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","setDataCallback","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","L","setTimeout","$","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","_","evtName","_keypressTimeout","target","category","ba","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","ca","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","C","_originalFunctionToString","Q","D","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","type","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","E","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","R","builtin","S","F","installer","concat","G","str","m","exec","allowSecretKey","J","port","A","V","stackInfo","_triggerEvent","_processException","lineno","X","frame","_normalizeFrame","in_app","ga","stackInfoUrl","normalized","filename","line","colno","column","function","fa","prefixedMessage","exception","values","culprit","ha","request","Referer","breadcrumbs","_trimBreadcrumbs","ia","urlProp","urlProps","ja","httpData","userAgent","User-Agent","referrer","y","_backoffDuration","_backoffStart","ma","na","current","last","oa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Y","baseData","project","platform","_getHttpData","serverName","server_name","_sanitizeData","forEach","random","_sendProcessedPayload","pa","ra","qa","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","sa","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","onerror","open","setRequestHeader","send","ta","hash","evaluated","z","Z","setUser","setReleaseContext","10","11","9","RavenConstructor","_Raven","noConflict","Client","what","supportsErrorEvent","ErrorEvent","supportsDOMError","DOMError","supportsDOMException","DOMException","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","wrappedCallback","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","sanitizeMask","safeInput","o_O","getLocationHref","getLocationOrigin","origin","hostname","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","responseText","sourceMaps","sourceMapAddress","charAt","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","string","raw"],"mappings":";CAYA,SAAUA,GAAG,GAAoB,gBAAVC,UAAoC,mBAATC,QAAsBA,OAAOD,QAAQD,QAAS,IAAmB,kBAATG,SAAqBA,OAAOC,IAAKD,UAAUH,OAAO,CAAC,GAAIK,EAAkCA,GAAb,mBAATC,QAAwBA,OAA+B,mBAATC,QAAwBA,OAA6B,mBAAPC,MAAsBA,KAAYC,KAAKJ,EAAEK,MAAQV,MAAO,WAAW,GAAIG,EAAsB,OAAO,SAAUQ,GAAEC,EAAEC,EAAEC,GAAG,QAASC,GAAEC,EAAEC,GAAG,IAAIJ,EAAEG,GAAG,CAAC,IAAIJ,EAAEI,GAAG,CAAC,GAAIE,GAAkB,kBAATC,UAAqBA,OAAQ,KAAIF,GAAGC,EAAE,MAAOA,GAAEF,GAAE,EAAI,IAAGI,EAAE,MAAOA,GAAEJ,GAAE,EAAI,IAAIhB,GAAE,GAAIqB,OAAM,uBAAuBL,EAAE,IAAK,MAAMhB,GAAEsB,KAAK,mBAAmBtB,EAAE,GAAIuB,GAAEV,EAAEG,IAAIf,WAAYW,GAAEI,GAAG,GAAGQ,KAAKD,EAAEtB,QAAQ,SAASU,GAAG,GAAIE,GAAED,EAAEI,GAAG,GAAGL,EAAG,OAAOI,GAAEF,EAAEA,EAAEF,IAAIY,EAAEA,EAAEtB,QAAQU,EAAEC,EAAEC,EAAEC,GAAG,MAAOD,GAAEG,GAAGf,QAAkD,IAAI,GAA1CmB,GAAkB,kBAATD,UAAqBA,QAAgBH,EAAE,EAAEA,EAAEF,EAAEW,OAAOT,IAAID,EAAED,EAAEE,GAAI,OAAOD,KAAKW,GAAG,SAASC,EAAQzB,EAAOD,GAcp0B,QAAS2B,GAAclB,EAAOmB,EAASC,GACrCD,EAAUA,GAAWvB,OAAOuB,YAC5BC,EAAgBA,KAEhB,IAAIC,GAAYD,EAAcE,SAAW,QAAS,OAAQ,OAAQ,QAC9D,WAAYH,IAASE,EAAUE,KAAK,SAOxC,KALA,GAAIC,GAAW,SAASC,EAAKC,GAC3B1B,EAAM2B,eAAeF,EAAKC,IAGxBE,EAAQP,EAAUQ,MACfD,GACLE,EAAkBX,EAASS,EAAOJ,GAClCI,EAAQP,EAAUQ,MAhBtB,GAAIC,GAAoBb,EAAQ,GAAGc,UAoBnCvC,GAAOD,QAAU2B,EAEjBD,EAAQ,GAAGe,UAAUxC,EAAOD,WACzB0C,EAAI,EAAEC,EAAI,IAAIC,GAAG,SAASlB,EAAQzB,EAAOD,GAO5C,QAAS6C,GAAcpC,GACC,kBAAXP,IAAyBA,EAAOC,MACzCE,OAAOH,OAASO,EAAMqC,MAAMC,MAAM,GAAQ7C,GAC1CG,OAAOa,QAAUT,EAAMqC,MAAMC,MAAM,GAAQrB,IAI/CzB,EAAOD,QAAU6C,EAEjBnB,EAAQ,GAAGe,UAAUxC,EAAOD,WACzB2C,EAAI,IAAIK,GAAG,SAAStB,EAAQzB,EAAOD,GAMtC,QAASiD,GAAoBC,GAC3B,GAAIA,EAAGC,QAAUD,EACf,MAAO,eAET,IAAIE,GAAOF,EAAGG,OAASH,EAAGI,SAASF,MAAQF,EAAGI,SAASC,cAAgBL,EAAGE,IAC1E,QACGA,EAAO,cAAgBA,EAAO,IAAM,wBACpCF,EAAGG,QAAUH,EAAGI,SAASE,OAAS,OAASN,EAAGI,SAASE,OAAS,IAIrE,QAASC,GAAUhD,EAAOiD,GAIxB,GAHAA,EAAMA,GAAOrD,OAAOqD,IAGfA,GAAQA,EAAIC,OAAjB,CAEA,GAAIC,GAAcF,EAAIC,OAAOE,YAC7BH,GAAIC,OAAOE,aAAe,SAAyBC,EAAOZ,EAAIa,GAC5D,GAAIC,KAGuC,qBAAvCC,OAAOC,UAAUC,SAAS5C,KAAK2B,KACjCc,EAASI,cAAgBnB,EAAoBC,GAC7Cc,EAASK,UAAYnB,EAAGI,SAASe,WAGf,mBAATN,KACTC,EAASM,cAAgBP,GAG3BtD,EAAM8D,iBAAiBT,GACrBU,MAAOR,IAGkB,kBAAhBJ,IACTA,EAAYrC,KAAKf,KAAMsD,EAAOZ,EAAIa,KAKxC9D,EAAOD,QAAUyD,EAEjB/B,EAAQ,GAAGe,UAAUxC,EAAOD,WACzB2C,EAAI,IAAI8B,GAAG,SAAS/C,EAAQzB,EAAOD,GACtC,QAAS0E,GAAiBC,GACxBnE,KAAK4C,KAAO,mBACZ5C,KAAKmE,QAAUA,EAEjBD,EAAiBR,UAAY,GAAI9C,OACjCsD,EAAiBR,UAAUU,YAAcF,EAEzCzE,EAAOD,QAAU0E,OAEXhC,GAAG,SAAShB,EAAQzB,EAAOD,GACjC,GAAI6E,GAAQnD,EAAQ,GAEhBc,EAAa,SAASZ,EAASS,EAAOJ,GACxC,GAAI6C,GAAuBlD,EAAQS,GAC/B0C,EAAkBnD,CAEtB,IAAMS,IAAST,GAAf,CAIA,GAAIoD,GAAwB,SAAV3C,EAAmB,UAAYA,CAEjDT,GAAQS,GAAS,WACf,GAAI4C,MAAUC,MAAM3D,KAAK4D,WAErBjD,EAAM2C,EAAMO,SAASH,EAAM,KAC3B9C,GAAQE,MAAO2C,EAAaK,OAAQ,UAAWb,OAAQW,UAAWF,GAExD,YAAV5C,EACE4C,EAAK,MAAO,IAEd/C,EACE,sBAAwB2C,EAAMO,SAASH,EAAKC,MAAM,GAAI,MAAQ,kBAChE/C,EAAKqC,MAAMW,UAAYF,EAAKC,MAAM,GAClCjD,GAAYA,EAASC,EAAKC,IAG5BF,GAAYA,EAASC,EAAKC,GAIxB2C,GAGFQ,SAASpB,UAAUqB,MAAMhE,KAAKuD,EAAsBC,EAAiBE,KAK3EhF,GAAOD,SACLwC,WAAYA,KAGXgD,EAAI,IAAIC,GAAG,SAAS/D,EAAQzB,EAAOD,IACtC,SAAWM,GA4CX,QAASoF,KACP,OAAQ,GAAIC,MAWd,QAASC,GAAqBC,EAAU5D,GACtC,MAAO6D,GAAW7D,GACd,SAASE,GACP,MAAOF,GAASE,EAAM0D,IAExB5D,EAMN,QAASxB,KACPD,KAAKuF,IAA8B,gBAATC,QAAqBA,KAAKC,WAEpDzF,KAAK0F,GAAgBC,EAAYC,GACjC5F,KAAK6F,GAAiBF,EAAYG,GAClC9F,KAAK+F,EAAyB,KAC9B/F,KAAKgG,EAAY,KACjBhG,KAAKiG,EAAe,KACpBjG,KAAKkG,EAAgB,KACrBlG,KAAKmG,EAAa,KAClBnG,KAAKoG,EAAiB,KACtBpG,KAAKqG,KACLrG,KAAKsG,GAEHC,QAASC,EAAQC,gBAAkBD,EAAQC,eAAeC,GAC1D7B,OAAQ,aACR8B,gBACAC,cACAC,iBACAC,gBACAC,QAAS,KACTC,qBAAqB,EACrBC,4BAA4B,EAC5BC,iBAAkB,EAElBC,aAAc,IACdC,gBAAiB,GACjBC,iBAAiB,EACjBC,YAAY,EACZC,WAAY,EACZC,iBAEFxH,KAAKyH,GACHC,OAAQ,OACRC,WAAW,EAKXC,eAAgBC,IAA2B,SAAW,IAExD7H,KAAK8H,EAAiB,EACtB9H,KAAK+H,GAAoB,EACzB/H,KAAKgI,EAAgCpH,MAAMwG,gBAG3CpH,KAAKiI,EAAmBzB,EAAQpF,YAChCpB,KAAKkI,KACLlI,KAAKmI,KACLnI,KAAKoI,EAAalD,IAClBlF,KAAKqI,KACLrI,KAAKsI,KACLtI,KAAKuI,EAAqB,KAE1BvI,KAAKwI,EAAYhC,EAAQiC,SACzBzI,KAAK0I,EAAY1I,KAAKwI,GAAaxI,KAAKwI,EAAUG,KAClD3I,KAAK4I,GAGL,KAAK,GAAIlB,KAAU1H,MAAKiI,EACtBjI,KAAKkI,EAAwBR,GAAU1H,KAAKiI,EAAiBP,GA5HjE,GAAImB,GAAW3H,EAAQ,GACnBuE,EAAYvE,EAAQ,IACpB4H,EAAM5H,EAAQ,IACdgD,EAAmBhD,EAAQ,GAE3BmD,EAAQnD,EAAQ,GAChB6H,EAAe1E,EAAM0E,aACrBC,EAAa3E,EAAM2E,WACnBC,EAAiB5E,EAAM4E,eACvBC,EAAU7E,EAAM6E,QAChBC,EAAW9E,EAAM8E,SACjBC,EAAgB/E,EAAM+E,cACtBzD,EAActB,EAAMsB,YACpBL,EAAajB,EAAMiB,WACnB+D,EAAWhF,EAAMgF,SACjBC,EAAUjF,EAAMiF,QAChBC,EAAgBlF,EAAMkF,cACtBC,EAAOnF,EAAMmF,KACbC,EAAcpF,EAAMoF,YACpBC,EAAWrF,EAAMqF,SACjBC,EAAetF,EAAMsF,aACrBC,EAASvF,EAAMuF,OACfC,EAAaxF,EAAMwF,WACnBC,EAAYzF,EAAMyF,UAClBC,EAAQ1F,EAAM0F,MACdC,EAAmB3F,EAAM2F,iBACzBC,EAAkB5F,EAAM4F,gBACxBC,EAAmB7F,EAAM6F,iBACzBC,EAAW9F,EAAM8F,SACjBC,EAAO/F,EAAM+F,KACbC,EAAgBhG,EAAMgG,cACtBxC,EAAyBxD,EAAMwD,uBAC/ByC,EAA0BjG,EAAMiG,wBAChCC,EAAqBlG,EAAMkG,mBAC3BC,EAAWnG,EAAMmG,SAEjBzI,EAAoBb,EAAQ,GAAGc,WAE/ByI,EAAU,2CAA2CC,MAAM,KAC7DC,EAAa,gEAOXnE,EACgB,mBAAX3G,QACHA,OACkB,mBAAXC,GAAyBA,EAAyB,mBAATC,MAAuBA,QACzE6F,EAAYY,EAAQoE,SACpB9E,EAAaU,EAAQqE,SAmFzB5K,GAAMyD,WAKJoH,QAAS,SAETC,OAAO,EAEPlC,SAAUA,EASV1F,OAAQ,SAAS6H,EAAKC,GACpB,GAAIlL,GAAOC,IAEX,IAAID,EAAKmG,EAEP,MADAlG,MAAKkL,EAAU,QAAS,4CACjBnL,CAET,KAAKiL,EAAK,MAAOjL,EAEjB,IAAIoL,GAAgBpL,EAAKuG,CAGrB2E,IACFzB,EAAKyB,EAAS,SAASG,EAAKC,GAEd,SAARD,GAA0B,UAARA,GAA2B,SAARA,EACvCrL,EAAKsG,EAAe+E,GAAOC,EAE3BF,EAAcC,GAAOC,IAK3BtL,EAAKuL,OAAON,GAIZG,EAAcxE,aAAanF,KAAK,qBAChC2J,EAAcxE,aAAanF,KAAK,iDAGhC2J,EAAcxE,aAAekD,EAAWsB,EAAcxE,cACtDwE,EAAcvE,aAAauE,EAAcvE,WAAW5F,QAChD6I,EAAWsB,EAAcvE,YAE7BuE,EAActE,gBAAgBsE,EAActE,cAAc7F,QACtD6I,EAAWsB,EAActE,eAE7BsE,EAAcrE,aAAe+C,EAAWsB,EAAcrE,cACtDqE,EAAcI,eAAiBC,KAAKC,IAClC,EACAD,KAAKE,IAAIP,EAAcI,gBAAkB,IAAK,KAGhD,IAAII,IACFC,KAAK,EACLxK,SAAS,EACTyK,KAAK,EACLpD,UAAU,EACVqD,QAAQ,GAGNzE,EAAkB8D,EAAc9D,eACM,wBAAnC1D,SAAS5C,KAAKsG,GACnBA,EAAkBoC,EAAYkC,EAAwBtE,GAC7CA,KAAoB,IAC7BA,EAAkBsE,GAEpBR,EAAc9D,gBAAkBA,CAEhC,IAAI0E,IACFC,UAAU,GAGR1E,EAAa6D,EAAc7D,UAW/B,OAVqC,uBAA9B3D,SAAS5C,KAAKuG,GACnBA,EAAamC,EAAYsC,EAAoBzE,GACpCA,KAAe,IACxBA,EAAayE,GAEfZ,EAAc7D,WAAaA,EAE3BuB,EAAS7B,sBAAwBmE,EAAcnE,oBAGxCjH,GAWTkM,QAAS,WACP,GAAIlM,GAAOC,IAyBX,OAxBID,GAAKmM,YAAcnM,EAAKgI,IAC1Bc,EAASsD,OAAOC,UAAU,WACxBrM,EAAKsM,EAAwBtH,MAAMhF,EAAM4E,aAGvC5E,EAAKuG,EAAeW,4BACtBlH,EAAKuM,IAGPvM,EAAKwM,IAEDxM,EAAKuG,EAAegB,YAAcvH,EAAKuG,EAAegB,WAAW0E,UACnEjM,EAAKyM,IAGHzM,EAAKuG,EAAee,iBAAiBtH,EAAK0M,IAG9C1M,EAAK2M,IAEL3M,EAAKgI,GAAoB,GAG3BnH,MAAMwG,gBAAkBrH,EAAKuG,EAAec,gBACrCpH,MAQTsL,OAAQ,SAASN,GACf,GAAIjL,GAAOC,KACT2M,EAAM5M,EAAK6M,EAAU5B,GACrB6B,EAAYF,EAAIG,KAAKC,YAAY,KACjCD,EAAOH,EAAIG,KAAKE,OAAO,EAAGH,EAE5B9M,GAAKkN,EAAOjC,EACZjL,EAAKoG,EAAawG,EAAIO,KACtBnN,EAAKoN,EAAgBR,EAAIS,MAAQT,EAAIS,KAAKJ,OAAO,GACjDjN,EAAKqG,EAAiBuG,EAAIG,KAAKE,OAAOH,EAAY,GAElD9M,EAAKmG,EAAgBnG,EAAKsN,EAAiBV,GAE3C5M,EAAKuN,EACHvN,EAAKmG,EAAgB,IAAM4G,EAAO,OAAS/M,EAAKqG,EAAiB,UAInEpG,KAAK4I,KAWP2E,QAAS,SAAStC,EAASuC,EAAM/I,GAO/B,MANIa,GAAW2F,KACbxG,EAAO+I,MACPA,EAAOvC,EACPA,EAAUwC,QAGLzN,KAAKsC,KAAK2I,EAASuC,GAAMzI,MAAM/E,KAAMyE,IAW9CnC,KAAM,SAAS2I,EAASuC,EAAME,GAqC5B,QAASC,KACP,GAAIlJ,MACF9D,EAAIgE,UAAU3D,OACduB,GAAQ0I,GAAYA,GAAWA,EAAQ1I,QAAS,CAQlD,KANImL,GAAWpI,EAAWoI,IACxBA,EAAQ3I,MAAM/E,KAAM2E,WAKfhE,KAAK8D,EAAK9D,GAAK4B,EAAOxC,EAAKuC,KAAK2I,EAAStG,UAAUhE,IAAMgE,UAAUhE,EAE1E,KAKE,MAAO6M,GAAKzI,MAAM/E,KAAMyE,GACxB,MAAOvE,GAGP,KAFAH,GAAK6N,IACL7N,EAAKgE,iBAAiB7D,EAAG+K,GACnB/K,GA1DV,GAAIH,GAAOC,IAGX,IAAI2F,EAAY6H,KAAUlI,EAAW2F,GACnC,MAAOA,EAWT,IAPI3F,EAAW2F,KACbuC,EAAOvC,EACPA,EAAUwC,SAKPnI,EAAWkI,GACd,MAAOA,EAIT,KACE,GAAIA,EAAKK,EACP,MAAOL,EAIT,IAAIA,EAAKM,EACP,MAAON,GAAKM,EAEd,MAAO5N,GAIP,MAAOsN,GA8BT,IAAK,GAAIO,KAAYP,GACf5D,EAAO4D,EAAMO,KACfJ,EAAQI,GAAYP,EAAKO,GAW7B,OARAJ,GAAQjK,UAAY8J,EAAK9J,UAEzB8J,EAAKM,EAAoBH,EAGzBA,EAAQE,GAAY,EACpBF,EAAQK,EAAWR,EAEZG,GAQTM,UAAW,WAWT,MAVApF,GAASsD,OAAO8B,YAEhBjO,KAAKkO,IACLlO,KAAKmO,IACLnO,KAAKoO,IACLpO,KAAKqO,IAELzN,MAAMwG,gBAAkBpH,KAAKgI,EAC7BhI,KAAK+H,GAAoB,EAElB/H,MAWTsO,EAA0B,SAASC,GACjCvO,KAAKkL,EAAU,QAAS,4CAA6CqD,GACrEvO,KAAK+D,iBAAiBwK,EAAMC,QAC1BxK,OACEyK,2BAA2B,MAUjCC,EAAgC,WAI9B,MAHA1O,MAAK2O,EAA2B3O,KAAK2O,EAAyBC,KAAK5O,MACnEwG,EAAQqI,kBACNrI,EAAQqI,iBAAiB,qBAAsB7O,KAAK2O,GAC/C3O,MAQT8O,EAAgC,WAG9B,MAFAtI,GAAQuI,qBACNvI,EAAQuI,oBAAoB,qBAAsB/O,KAAK2O,GAClD3O,MAUT+D,iBAAkB,SAASiL,EAAI/D,GAG7B,GAFAA,EAAUxB,GAAawF,eAAgB,GAAIhE,EAAUA,MAEjDlC,EAAaiG,IAAOA,EAAG1L,MAEzB0L,EAAKA,EAAG1L,UACH,CAAA,GAAI0F,EAAWgG,IAAO/F,EAAe+F,GAAK,CAK/C,GAAIpM,GAAOoM,EAAGpM,OAASoG,EAAWgG,GAAM,WAAa,gBACjD7K,EAAU6K,EAAG7K,QAAUvB,EAAO,KAAOoM,EAAG7K,QAAUvB,CAEtD,OAAO5C,MAAK4B,eACVuC,EACAsF,EAAYwB,GAGViE,YAAY,EACZD,eAAgBhE,EAAQgE,eAAiB,KAGxC,GAAI/F,EAAQ8F,GAEjBA,EAAKA,MACA,CAAA,IAAI5F,EAAc4F,GAavB,MAAOhP,MAAK4B,eACVoN,EACAvF,EAAYwB,GACViE,YAAY,EACZD,eAAgBhE,EAAQgE,eAAiB,IAb7ChE,GAAUjL,KAAKmP,EAA2ClE,EAAS+D,GACnEA,EAAK,GAAIpO,OAAMqK,EAAQ9G,UAkBzBnE,KAAK+F,EAAyBiJ,CAO9B,KACE,GAAII,GAAQvG,EAASwG,kBAAkBL,EACvChP,MAAKsP,EAAiBF,EAAOnE,GAC7B,MAAOsE,GACP,GAAIP,IAAOO,EACT,KAAMA,GAIV,MAAOvP,OAGTwP,EAA4C,SAASC,EAAgBT,GACnE,GAAIU,GAASjM,OAAOkM,KAAKX,GAAIY,OACzB3E,EAAUxB,EAAYgG,GACxBtL,QACE,2CAA6CmG,EAAwBoF,GACvEG,aAAc/G,EAAI4G,IAClB1L,MAAOyL,EAAezL,WAIxB,OAFAiH,GAAQjH,MAAM8L,EAAiBvF,EAAmByE,GAE3C/D,GAUTrJ,eAAgB,SAASF,EAAKuJ,GAI5B,IACIjL,KAAKsG,EAAeK,aAAaoJ,OACnC/P,KAAKsG,EAAeK,aAAaoJ,KAAKrO,GAFxC,CAOAuJ,EAAUA,MACVvJ,GAAY,EAEZ,IAOIsN,GAPArN,EAAO8H,GAEPtF,QAASzC,GAEXuJ,EAQF,KACE,KAAM,IAAIrK,OAAMc,GAChB,MAAO6N,GACPP,EAAKO,EAIPP,EAAGpM,KAAO,IACV,IAAIwM,GAAQvG,EAASwG,kBAAkBL,GAGnCgB,EAAc1G,EAAQ8F,EAAMA,QAAUA,EAAMA,MAAM,EAKlDY,IAAoC,2BAArBA,EAAYxC,OAC7BwC,EAAcZ,EAAMA,MAAM,GAG5B,IAAIa,GAAWD,GAAeA,EAAYE,KAAQ,EAElD,MACIlQ,KAAKsG,EAAeM,WAAWmJ,OACjC/P,KAAKsG,EAAeM,WAAWmJ,KAAKE,OAMlCjQ,KAAKsG,EAAeO,cAAckJ,MACnC/P,KAAKsG,EAAeO,cAAckJ,KAAKE,IAF1C,CAOA,GAAIjQ,KAAKsG,EAAe4I,YAAejE,GAAWA,EAAQiE,WAAa,CAErEvN,EAAKkO,YAAkC,MAApBlO,EAAKkO,YAAsBnO,EAAMC,EAAKkO,YAEzD5E,EAAUxB,GAENwF,eAAgB,GAElBhE,GAMFA,EAAQgE,gBAAkB,CAE1B,IAAIkB,GAASnQ,KAAKoQ,EAAehB,EAAOnE,EACxCtJ,GAAKuN,YAEHiB,OAAQA,EAAOE,WAcnB,MATI1O,GAAKkO,cACPlO,EAAKkO,YAAcvG,EAAQ3H,EAAKkO,aAC5BlO,EAAKkO,aACJlO,EAAKkO,cAIZ7P,KAAKsQ,EAAM3O,GAEJ3B,QAGTuQ,kBAAmB,SAASC,GAC1B,GAAIC,GAAQhH,GAERiH,UAAWxL,IAAQ,KAErBsL,EAGF,IAAIlL,EAAWtF,KAAKsG,EAAeqK,oBAAqB,CACtD,GAAIC,GAAS5Q,KAAKsG,EAAeqK,mBAAmBF,EAEpD,IAAItH,EAASyH,KAAYrH,EAAcqH,GACrCH,EAAQG,MACH,IAAIA,KAAW,EACpB,MAAO5Q,MAQX,MAJAA,MAAKsI,EAAa9G,KAAKiP,GACnBzQ,KAAKsI,EAAatH,OAAShB,KAAKsG,EAAeiF,gBACjDvL,KAAKsI,EAAauI,QAEb7Q,MAGTiC,UAAW,SAAS6O,GAClB,GAAIC,MAAgBrM,MAAM3D,KAAK4D,UAAW,EAO1C,OALA3E,MAAKmI,EAAS3G,MAAMsP,EAAQC,IACxB/Q,KAAK+H,GACP/H,KAAK0M,IAGA1M,MASTgR,eAAgB,SAAS9D,GAIvB,MAFAlN,MAAKqG,EAAe6G,KAAOA,EAEpBlN,MASTiR,gBAAiB,SAASjN,GAGxB,MAFAhE,MAAKkR,EAAc,QAASlN,GAErBhE,MASTmR,eAAgB,SAASC,GAGvB,MAFApR,MAAKkR,EAAc,OAAQE,GAEpBpR,MAQTqR,aAAc,WAGZ,MAFArR,MAAKqG,KAEErG,MAQTsR,WAAY,WAEV,MAAO9L,MAAK+L,MAAM9L,EAAUzF,KAAKqG,KASnCmL,eAAgB,SAASC,GAGvB,MAFAzR,MAAKsG,EAAemL,YAAcA,EAE3BzR,MAST0R,WAAY,SAASnL,GAGnB,MAFAvG,MAAKsG,EAAeC,QAAUA,EAEvBvG,MAUT2R,gBAAiB,SAASlQ,GACxB,GAAI4D,GAAWrF,KAAKsG,EAAesL,YAEnC,OADA5R,MAAKsG,EAAesL,aAAexM,EAAqBC,EAAU5D,GAC3DzB,MAUT6R,sBAAuB,SAASpQ,GAC9B,GAAI4D,GAAWrF,KAAKsG,EAAeqK,kBAEnC,OADA3Q,MAAKsG,EAAeqK,mBAAqBvL,EAAqBC,EAAU5D,GACjEzB,MAUT8R,sBAAuB,SAASrQ,GAC9B,GAAI4D,GAAWrF,KAAKsG,EAAeyL,kBAEnC,OADA/R,MAAKsG,EAAeyL,mBAAqB3M,EAAqBC,EAAU5D,GACjEzB,MAYTgS,aAAc,SAASC,GAGrB,MAFAjS,MAAKsG,EAAe2L,UAAYA,EAEzBjS,MAQTkS,cAAe,WACb,MAAOlS,MAAK+F,GAQdoM,YAAa,WACX,MAAOnS,MAAKiG,GAQdiG,QAAS,WACP,QAAKlM,KAAKuF,MACLvF,KAAKkG,IACHlG,KAAKoS,0BACRpS,KAAKoS,yBAA0B,EAC/BpS,KAAKkL,EAAU,QAAS,2CAEnB,KAKXmH,UAAW,WAIT,GAAIC,GAAc9L,EAAQ8L,WACtBA,IACFtS,KAAKmD,OAAOmP,EAAYtH,IAAKsH,EAAYnP,QAAQ8I,WAIrDsG,iBAAkB,SAAStH,GACzB,GACGrF,EADH,CAKAqF,EAAUA,KAEV,IAAIkH,GAAclH,EAAQuH,SAAWxS,KAAKmS,aAC1C,KAAKA,EACH,KAAM,IAAIjO,GAAiB,kBAG7B,IAAI8G,GAAMC,EAAQD,KAAOhL,KAAKiN,CAC9B,KAAKjC,EACH,KAAM,IAAI9G,GAAiB,cAG7B,IAAIuO,GAASC,mBACTC,EAAK,EACTA,IAAM,YAAcF,EAAON,GAC3BQ,GAAM,QAAUF,EAAOzH,EAEvB,IAAIkC,GAAOjC,EAAQiC,MAAQlN,KAAKqG,EAAe6G,IAC3CA,KACEA,EAAKtK,OAAM+P,GAAM,SAAWF,EAAOvF,EAAKtK,OACxCsK,EAAK0F,QAAOD,GAAM,UAAYF,EAAOvF,EAAK0F,QAGhD,IAAIC,GAAe7S,KAAKqN,EAAiBrN,KAAK4M,EAAU5B,IAEpD8H,EAASlN,EAAUmN,cAAc,SACrCD,GAAOE,OAAQ,EACfF,EAAOG,IAAMJ,EAAe,yBAA2BF,GACtD/M,EAAUsN,MAAQtN,EAAUuN,MAAMC,YAAYN,KAIjDO,EAAoB,WAClB,GAAItT,GAAOC,IACXA,MAAK8H,GAAkB,EACvBwL,WAAW,WAETvT,EAAK+H,GAAkB,KAI3ByL,EAAe,SAASC,EAAWvI,GAEjC,GAAIwI,GAAKrI,CAET,IAAKpL,KAAK0F,EAAV,CAEAuF,EAAUA,MAEVuI,EAAY,QAAUA,EAAUxG,OAAO,EAAG,GAAG0G,cAAgBF,EAAUxG,OAAO,GAE1EpH,EAAU+N,aACZF,EAAM7N,EAAU+N,YAAY,cAC5BF,EAAIG,UAAUJ,GAAW,GAAM,KAE/BC,EAAM7N,EAAUiO,oBAChBJ,EAAID,UAAYA,EAGlB,KAAKpI,IAAOH,GACNrB,EAAOqB,EAASG,KAClBqI,EAAIrI,GAAOH,EAAQG,GAGvB,IAAIxF,EAAU+N,YAEZ/N,EAAUkO,cAAcL,OAIxB,KACE7N,EAAUmO,UAAU,KAAON,EAAID,UAAUQ,cAAeP,GACxD,MAAOvT,OAYb+T,EAAyB,SAASC,GAChC,GAAInU,GAAOC,IACX,OAAO,UAASyT,GASd,GALA1T,EAAKoU,GAAmB,KAKpBpU,EAAKwI,IAAuBkL,EAAhC,CAEA1T,EAAKwI,EAAqBkL,CAM1B,IAAIW,EACJ,KACEA,EAASpK,EAAiByJ,EAAIW,QAC9B,MAAOlU,GACPkU,EAAS,YAGXrU,EAAKwQ,mBACH8D,SAAU,MAAQH,EAClB/P,QAASiQ,OAUfE,GAAuB,WACrB,GAAIvU,GAAOC,KACTuU,EAAmB,GAKrB,OAAO,UAASd,GACd,GAAIW,EACJ,KACEA,EAASX,EAAIW,OACb,MAAOlU,GAGP,OAEF,GAAIsU,GAAUJ,GAAUA,EAAOI,OAK/B,IACGA,IACY,UAAZA,GAAmC,aAAZA,GAA2BJ,EAAOK,mBAF5D,CAQA,GAAIC,GAAU3U,EAAKoU,EACdO,IACH3U,EAAK4U,EAAwB,SAASlB,GAExCmB,aAAaF,GACb3U,EAAKoU,GAAmBb,WAAW,WACjCvT,EAAKoU,GAAmB,MACvBI,MAUPM,GAAmB,SAASC,EAAMC,GAChC,GAAIC,GAAY7K,EAASnK,KAAKwI,EAAUG,MACpCsM,EAAW9K,EAAS4K,GACpBG,EAAa/K,EAAS2K,EAK1B9U,MAAK0I,EAAYqM,EAIbC,EAAUG,WAAaF,EAASE,UAAYH,EAAUI,OAASH,EAASG,OAC1EL,EAAKE,EAASI,UACZL,EAAUG,WAAaD,EAAWC,UAAYH,EAAUI,OAASF,EAAWE,OAC9EN,EAAOI,EAAWG,UAEpBrV,KAAKuQ,mBACH8D,SAAU,aACV1S,MACEoT,GAAIA,EACJD,KAAMA,MAKZQ,EAAwB,WACtB,GAAIvV,GAAOC,IACXD,GAAKwV,GAA4BzQ,SAASpB,UAAUC,SAEpDmB,SAASpB,UAAUC,SAAW,WAC5B,MAAoB,kBAAT3D,OAAuBA,KAAK6N,EAC9B9N,EAAKwV,GAA0BxQ,MAAM/E,KAAKgO,EAAUrJ,WAEtD5E,EAAKwV,GAA0BxQ,MAAM/E,KAAM2E,aAItD6Q,EAA0B,WACpBxV,KAAKuV,KAEPzQ,SAASpB,UAAUC,SAAW3D,KAAKuV,KAQvCE,EAAqB,WAKnB,QAASC,GAAWC,GAClB,MAAO,UAASC,EAAIzV,GAKlB,IAAK,GADDsE,GAAO,GAAIoR,OAAMlR,UAAU3D,QACtBL,EAAI,EAAGA,EAAI8D,EAAKzD,SAAUL,EACjC8D,EAAK9D,GAAKgE,UAAUhE,EAEtB,IAAImV,GAAmBrR,EAAK,EAQ5B,OAPIa,GAAWwQ,KACbrR,EAAK,GAAK1E,EAAKuC,KAAKwT,IAMlBH,EAAK5Q,MACA4Q,EAAK5Q,MAAM/E,KAAMyE,GAEjBkR,EAAKlR,EAAK,GAAIA,EAAK,KAOhC,QAASsR,GAAgBjW,GACvB,GAAIkW,GAAQxP,EAAQ1G,IAAW0G,EAAQ1G,GAAQ4D,SAC3CsS,IAASA,EAAMC,gBAAkBD,EAAMC,eAAe,sBACxD7L,EACE4L,EACA,mBACA,SAASL,GACP,MAAO,UAASzB,EAAS0B,EAAIM,EAASC,GAEpC,IACMP,GAAMA,EAAGQ,cACXR,EAAGQ,YAAcrW,EAAKuC,KAAKsT,EAAGQ,cAEhC,MAAOC,IAMT,GAAIC,GAAQC,EAAcC,CA6B1B,OA1BEnP,IACAA,EAAgBwE,MACJ,gBAAX/L,GAAuC,SAAXA,KAI7ByW,EAAexW,EAAK4U,EAAwB,SAC5C6B,EAAkBzW,EAAK0W,KACvBH,EAAS,SAAS7C,GAIhB,GAAKA,EAAL,CAEA,GAAID,EACJ,KACEA,EAAYC,EAAIiD,KAChB,MAAOxW,GAGP,OAEF,MAAkB,UAAdsT,EAA8B+C,EAAa9C,GACxB,aAAdD,EAAiCgD,EAAgB/C,GAArD,UAGFkC,EAAK5U,KACVf,KACAkU,EACAnU,EAAKuC,KAAKsT,EAAInI,OAAW6I,GACzBJ,EACAC,KAINQ,GAEFvM,EACE4L,EACA,sBACA,SAASL,GACP,MAAO,UAASlC,EAAKmC,EAAIM,EAASC,GAChC,IACEP,EAAKA,IAAOA,EAAG9H,EAAoB8H,EAAG9H,EAAoB8H,GAC1D,MAAO1V,IAGT,MAAOyV,GAAK5U,KAAKf,KAAMyT,EAAKmC,EAAIM,EAASC,KAG7CQ,IAvGN,GAAI5W,GAAOC,KAEP2W,EAAkB5W,EAAKsI,EA2BvBhB,EAAkBrH,KAAKsG,EAAee,eA+E1C+C,GAAK5D,EAAS,aAAckP,EAAYiB,GACxCvM,EAAK5D,EAAS,cAAekP,EAAYiB,GACrCnQ,EAAQoQ,uBACVxM,EACE5D,EACA,wBACA,SAASmP,GACP,MAAO,UAASkB,GACd,MAAOlB,GAAK5V,EAAKuC,KAAKuU,MAG1BF,EAqCJ,KAAK,GA/BDG,IACF,cACA,SACA,OACA,mBACA,iBACA,oBACA,kBACA,cACA,aACA,qBACA,cACA,aACA,iBACA,eACA,kBACA,cACA,cACA,eACA,qBACA,SACA,YACA,eACA,gBACA,YACA,kBACA,SACA,iBACA,4BACA,wBAEOnW,EAAI,EAAGA,EAAImW,EAAa9V,OAAQL,IACvCoV,EAAgBe,EAAanW,KAajCoW,EAAwB,WAMtB,QAASC,GAASC,EAAMrL,GAClBqL,IAAQrL,IAAOtG,EAAWsG,EAAIqL,KAChC7M,EAAKwB,EAAKqL,EAAM,SAAStB,GACvB,MAAO5V,GAAKuC,KAAKqT,KARvB,GAAI5V,GAAOC,KACPqH,EAAkBrH,KAAKsG,EAAee,gBAEtCsP,EAAkB5W,EAAKsI,CAU3B,IAAIhB,EAAgBuE,KAAO,kBAAoBpF,GAAS,CACtD,GAAI0Q,GAAW1Q,EAAQ2Q,gBAAkB3Q,EAAQ2Q,eAAezT,SAChE0G,GACE8M,EACA,OACA,SAASE,GACP,MAAO,UAAS1P,EAAQwI,GAYtB,MARI7G,GAAS6G,IAAQA,EAAImH,QAAQtX,EAAKoG,UACpCnG,KAAKsX,IACH5P,OAAQA,EACRwI,IAAKA,EACLqH,YAAa,OAIVH,EAASrS,MAAM/E,KAAM2E,aAGhCgS,GAGFvM,EACE8M,EACA,OACA,SAASM,GACP,MAAO,YAIL,QAASC,KACP,GAAI7L,EAAI0L,IAAkC,IAAnB1L,EAAI8L,WAAkB,CAC3C,IAGE9L,EAAI0L,GAAYC,YAAc3L,EAAI+L,OAClC,MAAOzX,IAITH,EAAKwQ,mBACHmG,KAAM,OACNrC,SAAU,MACV1S,KAAMiK,EAAI0L,MAMhB,IAAK,GArBD1L,GAAM5L,KAoBN4X,GAAS,SAAU,UAAW,cACzBC,EAAI,EAAGA,EAAID,EAAM5W,OAAQ6W,IAChCb,EAASY,EAAMC,GAAIjM,EAiBrB,OAdI,sBAAwBA,IAAOtG,EAAWsG,EAAIkM,oBAChD1N,EACEwB,EACA,qBACA,SAAS+J,GACP,MAAO5V,GAAKuC,KAAKqT,EAAMlI,OAAWgK,KAMtC7L,EAAIkM,mBAAqBL,EAGpBD,EAASzS,MAAM/E,KAAM2E,aAGhCgS,GAIAtP,EAAgBuE,KAAOvB,KACzBD,EACE5D,EACA,QACA,SAASuR,GACP,MAAO,YAKL,IAAK,GADDtT,GAAO,GAAIoR,OAAMlR,UAAU3D,QACtBL,EAAI,EAAGA,EAAI8D,EAAKzD,SAAUL,EACjC8D,EAAK9D,GAAKgE,UAAUhE,EAGtB,IAEIuP,GAFA8H,EAAavT,EAAK,GAClBiD,EAAS,KAeb,IAZ0B,gBAAfsQ,GACT9H,EAAM8H,EACG,WAAaxR,IAAWwR,YAAsBxR,GAAQyR,SAC/D/H,EAAM8H,EAAW9H,IACb8H,EAAWtQ,SACbA,EAASsQ,EAAWtQ,SAGtBwI,EAAM,GAAK8H,EAIT9H,EAAImH,QAAQtX,EAAKoG,QACnB,MAAO4R,GAAUhT,MAAM/E,KAAMyE,EAG3BA,GAAK,IAAMA,EAAK,GAAGiD,SACrBA,EAASjD,EAAK,GAAGiD,OAGnB,IAAIwQ,IACFxQ,OAAQA,EACRwI,IAAKA,EACLqH,YAAa,KAGf,OAAOQ,GACJhT,MAAM/E,KAAMyE,GACZ0T,KAAK,SAASC,GASb,MARAF,GAAUX,YAAca,EAAST,OAEjC5X,EAAKwQ,mBACHmG,KAAM,OACNrC,SAAU,QACV1S,KAAMuW,IAGDE,IAER,SAAS,SAAS/B,GASjB,KAPAtW,GAAKwQ,mBACHmG,KAAM,OACNrC,SAAU,QACV1S,KAAMuW,EACNrW,MAAO,UAGHwU,MAIdM,GAMAtP,EAAgBwE,KAAO7L,KAAK0F,IAC1BE,EAAUiJ,kBACZjJ,EAAUiJ,iBAAiB,QAAS9O,EAAK4U,EAAwB,UAAU,GAC3E/O,EAAUiJ,iBAAiB,WAAY9O,EAAK0W,MAAyB,IAC5D7Q,EAAUyS,cAEnBzS,EAAUyS,YAAY,UAAWtY,EAAK4U,EAAwB,UAC9D/O,EAAUyS,YAAY,aAActY,EAAK0W,OAQ7C,IAAI6B,GAAS9R,EAAQ8R,OACjBC,EAAsBD,GAAUA,EAAOE,KAAOF,EAAOE,IAAIC,QACzDC,GACDH,GACD/R,EAAQmS,SACRnS,EAAQmS,QAAQC,WAChBpS,EAAQmS,QAAQE,YAClB,IAAIxR,EAAgBoB,UAAYiQ,EAAwB,CAEtD,GAAII,GAAgBtS,EAAQuS,UAC5BvS,GAAQuS,WAAa,WACnB,GAAIC,GAAcjZ,EAAKyI,EAAUG,IAGjC,IAFA5I,EAAKkZ,GAAkBlZ,EAAK2I,EAAWsQ,GAEnCF,EACF,MAAOA,GAAc/T,MAAM/E,KAAM2E,WAIrC,IAAIuU,GAA6B,SAASC,GAGxC,MAAO,YACL,GAAIjJ,GAAMvL,UAAU3D,OAAS,EAAI2D,UAAU,GAAK8I,MAQhD,OALIyC,IAEFnQ,EAAKkZ,GAAkBlZ,EAAK2I,EAAWwH,EAAM,IAGxCiJ,EAAiBpU,MAAM/E,KAAM2E,YAIxCyF,GAAK5D,EAAQmS,QAAS,YAAaO,EAA4BvC,GAC/DvM,EAAK5D,EAAQmS,QAAS,eAAgBO,EAA4BvC,GAGpE,GAAItP,EAAgBjG,SAAW,WAAaoF,IAAWpF,QAAQgY,IAAK,CAElE,GAAIC,GAAwB,SAAS3X,EAAKC,GACxC5B,EAAKwQ,mBACHpM,QAASzC,EACTG,MAAOF,EAAKE,MACZwS,SAAU,YAId7K,IAAM,QAAS,OAAQ,OAAQ,QAAS,OAAQ,SAASyK,EAAGpS,GAC1DE,EAAkBX,QAASS,EAAOwX,OAKxCC,EAAkB,WAGhB,IADA,GAAIC,GACGvZ,KAAKqI,EAAiBrH,QAAQ,CACnCuY,EAAUvZ,KAAKqI,EAAiBwI,OAEhC,IAAIL,GAAM+I,EAAQ,GAChB3W,EAAO2W,EAAQ,GACf5D,EAAO4D,EAAQ,EAEjB/I,GAAI5N,GAAQ+S,IAIhB6D,EAAiB,WAEf,IAAK,GAAI9R,KAAU1H,MAAKkI,EACtBlI,KAAKiI,EAAiBP,GAAU1H,KAAKkI,EAAwBR,IAIjE+R,EAAe,WACb,GAAI1Z,GAAOC,IAGXwJ,GAAKxJ,KAAKmI,EAAU,SAAS8L,EAAGnD,GAC9B,GAAI4I,GAAY5I,EAAO,GACnBrM,EAAOqM,EAAO,EAClB4I,GAAU3U,MAAMhF,GAAOA,GAAM4Z,OAAOlV,OAIxCmV,EAAW,SAASC,GAClB,GAAIC,GAAInP,EAAWoP,KAAKF,GACtB7O,KACArK,EAAI,CAEN,KACE,KAAOA,KAAKqK,EAAIP,EAAQ9J,IAAMmZ,EAAEnZ,IAAM,GACtC,MAAOT,GACP,KAAM,IAAIgE,GAAiB,gBAAkB2V,GAG/C,GAAI7O,EAAIoC,OAASpN,KAAKsG,EAAe0T,eACnC,KAAM,IAAI9V,GACR,iFAIJ,OAAO8G,IAGTiP,EAAkB,SAAStN,GAEzB,GAAIkG,GAAe,KAAOlG,EAAIyI,MAAQzI,EAAIuN,KAAO,IAAMvN,EAAIuN,KAAO,GAKlE,OAHIvN,GAAIwI,WACNtC,EAAelG,EAAIwI,SAAW,IAAMtC,GAE/BA,GAGTsH,EAAyB,WAElBna,KAAK8H,GACR9H,KAAKsP,EAAiBvK,MAAM/E,KAAM2E,YAItCyV,EAAkB,SAASC,EAAWpP,GACpC,GAAIkF,GAASnQ,KAAKoQ,EAAeiK,EAAWpP,EAE5CjL,MAAKsa,EAAc,UACjBD,UAAWA,EACXpP,QAASA,IAGXjL,KAAKua,GACHF,EAAUzX,KACVyX,EAAUlW,QACVkW,EAAUnK,IACVmK,EAAUG,OACVrK,EACAlF,IAIJwP,EAAgB,SAASJ,EAAWpP,GAClC,GAAIlL,GAAOC,KACPmQ,IACJ,IAAIkK,EAAUjL,OAASiL,EAAUjL,MAAMpO,SACrCwI,EAAK6Q,EAAUjL,MAAO,SAASzO,EAAGyO,GAChC,GAAIsL,GAAQ3a,EAAK4a,GAAgBvL,EAAOiL,EAAUnK,IAC9CwK,IACFvK,EAAO3O,KAAKkZ,KAKZzP,GAAWA,EAAQgE,gBACrB,IAAK,GAAI4I,GAAI,EAAGA,EAAI5M,EAAQgE,gBAAkB4I,EAAI1H,EAAOnP,OAAQ6W,IAC/D1H,EAAO0H,GAAG+C,QAAS,CAKzB,OADAzK,GAASA,EAAOzL,MAAM,EAAG1E,KAAKsG,EAAec,kBAI/CyT,GAAiB,SAASH,EAAOI,GAE/B,GAAIC,IACFC,SAAUN,EAAMxK,IAChBsK,OAAQE,EAAMO,KACdC,MAAOR,EAAMS,OACbC,WAAUV,EAAMlN,MAAQ,IAuB1B,OAfKkN,GAAMxK,MACT6K,EAAWC,SAAWF,GAGxBC,EAAWH,SAGN5a,KAAKsG,EAAeQ,aAAaiJ,OACjC/P,KAAKsG,EAAeQ,aAAaiJ,KAAKgL,EAAWC,WAEpD,qBAAqBjL,KAAKgL,EAAW,cAErC,qBAAqBhL,KAAKgL,EAAWC,WAGhCD,GAGTM,GAAmB,SAAS3E,EAAMvS,EAAS8L,EAASuK,EAAQrK,EAAQlF,GAClE,GAAIqQ,IAAmB5E,EAAOA,EAAO,KAAO,KAAOvS,GAAW,GAC9D,KACInE,KAAKsG,EAAeK,aAAaoJ,OAClC/P,KAAKsG,EAAeK,aAAaoJ,KAAK5L,KACrCnE,KAAKsG,EAAeK,aAAaoJ,KAAKuL,GAH1C,CAQA,GAAIpM,EAoBJ,IAlBIiB,GAAUA,EAAOnP,QACnBiP,EAAUE,EAAO,GAAG6K,UAAY/K,EAGhCE,EAAOE,UACPnB,GAAciB,OAAQA,IACbF,IACTf,GACEiB,SAEI6K,SAAU/K,EACVuK,OAAQA,EACRI,QAAQ,QAOZ5a,KAAKsG,EAAeM,WAAWmJ,OACjC/P,KAAKsG,EAAeM,WAAWmJ,KAAKE,OAMlCjQ,KAAKsG,EAAeO,cAAckJ,MACnC/P,KAAKsG,EAAeO,cAAckJ,KAAKE,IAF1C,CAOA,GAAItO,GAAO8H,GAGP8R,WACEC,SAEI9E,KAAMA,EACNrL,MAAOlH,EACP+K,WAAYA,KAIlBuM,QAASxL,GAEXhF,EAIFjL,MAAKsQ,EAAM3O,MAGb+Z,GAAa,SAAS/Z,GAGpB,GAAI8J,GAAMzL,KAAKsG,EAAeY,gBAI9B,IAHIvF,EAAKwC,UACPxC,EAAKwC,QAAUuF,EAAS/H,EAAKwC,QAASsH,IAEpC9J,EAAK4Z,UAAW,CAClB,GAAIA,GAAY5Z,EAAK4Z,UAAUC,OAAO,EACtCD,GAAUlQ,MAAQ3B,EAAS6R,EAAUlQ,MAAOI,GAG9C,GAAIkQ,GAAUha,EAAKga,OAanB,OAZIA,KACEA,EAAQzL,MACVyL,EAAQzL,IAAMxG,EAASiS,EAAQzL,IAAKlQ,KAAKsG,EAAea,eAEtDwU,EAAQC,UACVD,EAAQC,QAAUlS,EAASiS,EAAQC,QAAS5b,KAAKsG,EAAea,gBAIhExF,EAAKka,aAAela,EAAKka,YAAYL,QACvCxb,KAAK8b,GAAiBna,EAAKka,aAEtBla,GAMToa,GAAkB,SAASF,GAQzB,IAAK,GAJHG,GACAvL,EACA9O,EAHEsa,GAAY,KAAM,OAAQ,OAKrBtb,EAAI,EAAGA,EAAIkb,EAAYL,OAAOxa,SAAUL,EAE/C,GADA8P,EAAQoL,EAAYL,OAAO7a,GAExB8P,EAAMwF,eAAe,SACrB9M,EAASsH,EAAM9O,QAChBgI,EAAa8G,EAAM9O,MAHrB,CAOAA,EAAO8H,KAAgBgH,EAAM9O,KAC7B,KAAK,GAAIkW,GAAI,EAAGA,EAAIoE,EAASjb,SAAU6W,EACrCmE,EAAUC,EAASpE,GACflW,EAAKsU,eAAe+F,IAAYra,EAAKqa,KACvCra,EAAKqa,GAAWtS,EAAS/H,EAAKqa,GAAUhc,KAAKsG,EAAea,cAGhE0U,GAAYL,OAAO7a,GAAGgB,KAAOA,IAIjCua,GAAc,WACZ,GAAKlc,KAAK6F,GAAkB7F,KAAK0F,EAAjC,CACA,GAAIyW,KAkBJ,OAhBInc,MAAK6F,GAAiBC,EAAWsW,YACnCD,EAASpV,SACPsV,aAAcvW,EAAWsW,YAKzB5V,EAAQiC,UAAYjC,EAAQiC,SAASE,OACvCwT,EAASjM,IAAM1J,EAAQiC,SAASE,MAG9B3I,KAAK0F,GAAgBE,EAAU0W,WAC5BH,EAASpV,UAASoV,EAASpV,YAChCoV,EAASpV,QAAQ6U,QAAUhW,EAAU0W,UAGhCH,IAGTI,EAAe,WACbvc,KAAKwc,GAAmB,EACxBxc,KAAKyc,GAAgB,MAGvBC,GAAgB,WACd,MAAO1c,MAAKwc,IAAoBtX,IAAQlF,KAAKyc,GAAgBzc,KAAKwc,IAYpEG,GAAe,SAASC,GACtB,GAAIC,GAAO7c,KAAKgG,CAEhB,UACG6W,GACDD,EAAQzY,UAAY0Y,EAAK1Y,SACzByY,EAAQnB,UAAYoB,EAAKpB,WAKvBmB,EAAQ1N,YAAc2N,EAAK3N,WACtBhF,EAAiB0S,EAAQ1N,WAAY2N,EAAK3N,aACxC0N,EAAQrB,YAAasB,EAAKtB,WAE5BtR,EAAgB2S,EAAQrB,UAAWsB,EAAKtB,aAMnDuB,GAAkB,SAASnB,GAEzB,IAAI3b,KAAK+c,KAAT,CAIA,GAAIpF,GAASgE,EAAQhE,MAKrB,IAAiB,MAAXA,GAA6B,MAAXA,GAA6B,MAAXA,EAA1C,CAEA,GAAIqF,EACJ,KAIIA,EADE3S,IACMsR,EAAQ5U,QAAQkW,IAAI,eAEpBtB,EAAQuB,kBAAkB,eAIpCF,EAA8B,IAAtBG,SAASH,EAAO,IACxB,MAAO9c,IAITF,KAAKwc,GAAmBQ,EAEpBA,EAEwB,EAAxBhd,KAAKwc,IAAwB,IAEjCxc,KAAKyc,GAAgBvX,OAGvBkY,EAAO,SAASzb,GACd,GAAIwJ,GAAgBnL,KAAKsG,EAErB+W,GACAC,QAAStd,KAAKoG,EACdvB,OAAQsG,EAActG,OACtB0Y,SAAU,cAEZpB,EAAWnc,KAAKwd,IAsDlB,IApDIrB,IACFkB,EAAS1B,QAAUQ,GAIjBxa,EAAKsN,sBAAuBtN,GAAKsN,eAErCtN,EAAO8H,EAAY4T,EAAU1b,GAG7BA,EAAKyP,KAAO3H,EAAYA,KAAgBzJ,KAAKqG,EAAe+K,MAAOzP,EAAKyP,MACxEzP,EAAKqC,MAAQyF,EAAYA,KAAgBzJ,KAAKqG,EAAerC,OAAQrC,EAAKqC,OAG1ErC,EAAKqC,MAAM,oBAAsBkB,IAAQlF,KAAKoI,EAE1CpI,KAAKsI,GAAgBtI,KAAKsI,EAAatH,OAAS,IAGlDW,EAAKka,aACHL,UAAW9W,MAAM3D,KAAKf,KAAKsI,EAAc,KAIzCtI,KAAKqG,EAAe6G,OAEtBvL,EAAKuL,KAAOlN,KAAKqG,EAAe6G,MAI9B/B,EAAcsG,cAAa9P,EAAK8P,YAActG,EAAcsG,aAG5DtG,EAAc5E,UAAS5E,EAAK4E,QAAU4E,EAAc5E,SAGpD4E,EAAcsS,aAAY9b,EAAK+b,YAAcvS,EAAcsS,YAE/D9b,EAAO3B,KAAK2d,GAAchc,GAG1B8B,OAAOkM,KAAKhO,GAAMic,QAAQ,SAASxS,IAChB,MAAbzJ,EAAKyJ,IAA8B,KAAdzJ,EAAKyJ,IAAe7B,EAAc5H,EAAKyJ,YACvDzJ,GAAKyJ,KAIZ9F,EAAW6F,EAAcyG,gBAC3BjQ,EAAOwJ,EAAcyG,aAAajQ,IAASA,GAIxCA,IAAQ4H,EAAc5H,MAMzB2D,EAAW6F,EAAc4G,qBACxB5G,EAAc4G,mBAAmBpQ,IAOpC,MAAI3B,MAAK+c,SACP/c,MAAKkL,EAAU,OAAQ,uCAAwCvJ,QAIzB,gBAA7BwJ,GAAc5D,WACnBiE,KAAKqS,SAAW1S,EAAc5D,YAChCvH,KAAK8d,GAAsBnc,GAG7B3B,KAAK8d,GAAsBnc,KAI/Boc,GAAe,SAASpc,GACtB,MAAO6I,GAAS7I,EAAM3B,KAAKsG,EAAekB,eAG5CwW,GAAU,WACR,MAAOjU,MAGTkU,GAAuB,SAAStc,EAAMF,GACpC,GAAI1B,GAAOC,KACPmL,EAAgBnL,KAAKsG,CAEzB,IAAKtG,KAAKkM,UAAV,CAQA,GALAvK,EAAO3B,KAAKke,GAAYvc,IAKnB3B,KAAKsG,EAAe6X,iBAAmBne,KAAKoe,GAAczc,GAE7D,WADA3B,MAAKkL,EAAU,OAAQ,+BAAgCvJ,EAOzD3B,MAAKiG,EAAetE,EAAK0c,WAAa1c,EAAK0c,SAAWre,KAAKse,MAG3Dte,KAAKgG,EAAYrE,EAEjB3B,KAAKkL,EAAU,QAAS,uBAAwBvJ,EAEhD,IAAI4c,IACFC,eAAgB,IAChBC,cAAe,YAAcze,KAAK8K,QAClC4T,WAAY1e,KAAKmG,EAGfnG,MAAKmN,IACPoR,EAAKI,cAAgB3e,KAAKmN,EAG5B,IAAIoO,GAAY5Z,EAAK4Z,WAAa5Z,EAAK4Z,UAAUC,OAAO,EAItDxb,MAAKsG,EAAee,iBACpBrH,KAAKsG,EAAee,gBAAgByE,QAEpC9L,KAAKuQ,mBACH8D,SAAU,SACVlQ,QAASoX,GACJA,EAAU7E,KAAO6E,EAAU7E,KAAO,KAAO,IAAM6E,EAAUlQ,MAC1D1J,EAAKwC,QACTka,SAAU1c,EAAK0c,SACfxc,MAAOF,EAAKE,OAAS,SAIzB,IAAIqO,GAAMlQ,KAAKsN,GACdnC,EAAc8G,WAAajS,KAAK4e,IAAc7d,KAAKf,MAClDkQ,IAAKA,EACLqO,KAAMA,EACN5c,KAAMA,EACNsJ,QAASE,EACT0T,UAAW,WACT9e,EAAK6I,IAEL7I,EAAKua,EAAc,WACjB3Y,KAAMA,EACNsR,IAAK/C,IAEPzO,GAAYA,KAEdqd,QAAS,SAAiBxb,GACxBvD,EAAKmL,EAAU,QAAS,mCAAoC5H,GAExDA,EAAMqY,SACR5b,EAAKgf,GAAiBzb,EAAMqY,SAG9B5b,EAAKua,EAAc,WACjB3Y,KAAMA,EACNsR,IAAK/C,IAEP5M,EAAQA,GAAS,GAAI1C,OAAM,sDAC3Ba,GAAYA,EAAS6B,QAK3B0b,GAAc,SAASC,GAErB,GAAI/O,GAAM+O,EAAK/O,IAAM,IAAMpG,EAAUmV,EAAKV,MAEtCW,EAAmB,KACnBC,IAUJ,IARIF,EAAKhU,QAAQlE,UACfmY,EAAmBlf,KAAKof,GAAcH,EAAKhU,QAAQlE,UAGjDkY,EAAKhU,QAAQoU,kBACfF,EAA2Bnf,KAAKof,GAAcH,EAAKhU,QAAQoU,kBAGzDhV,IAAiB,CACnB8U,EAAyBhM,KAAO1N,EAAUwZ,EAAKtd,KAE/C,IAAI2d,GAAsB7V,KAAgBzJ,KAAKyH,GAC3C8X,EAAe9V,EAAY6V,EAAqBH,EAMpD,OAJID,KACFK,EAAaxY,QAAUmY,GAGlB1Y,EACJgZ,MAAMtP,EAAKqP,GACXpH,KAAK,SAASC,GACb,GAAIA,EAASqH,GACXR,EAAKJ,WAAaI,EAAKJ,gBAClB,CACL,GAAIvb,GAAQ,GAAI1C,OAAM,sBAAwBwX,EAAST,OAGvDrU,GAAMqY,QAAUvD,EAChB6G,EAAKH,SAAWG,EAAKH,QAAQxb,MAGhC,SAAS,WACR2b,EAAKH,SACHG,EAAKH,QAAQ,GAAIle,OAAM,6CAI/B,GAAI+a,GAAUnV,EAAQ2Q,gBAAkB,GAAI3Q,GAAQ2Q,cACpD,IAAKwE,EAAL,CAGA,GAAI+D,GAAU,mBAAqB/D,IAAqC,mBAAnBgE,eAEhDD,KAED,mBAAqB/D,GACvBA,EAAQ7D,mBAAqB,WAC3B,GAA2B,IAAvB6D,EAAQjE,WAEL,GAAuB,MAAnBiE,EAAQhE,OACjBsH,EAAKJ,WAAaI,EAAKJ,gBAClB,IAAII,EAAKH,QAAS,CACvB,GAAIzI,GAAM,GAAIzV,OAAM,sBAAwB+a,EAAQhE,OACpDtB,GAAIsF,QAAUA,EACdsD,EAAKH,QAAQzI,MAIjBsF,EAAU,GAAIgE,gBAGdzP,EAAMA,EAAI0P,QAAQ,WAAY,IAG1BX,EAAKJ,YACPlD,EAAQkE,OAASZ,EAAKJ,WAEpBI,EAAKH,UACPnD,EAAQmE,QAAU,WAChB,GAAIzJ,GAAM,GAAIzV,OAAM,oCACpByV,GAAIsF,QAAUA,EACdsD,EAAKH,QAAQzI,MAKnBsF,EAAQoE,KAAK,OAAQ7P,GAEjBgP,GACF1V,EAAK0V,EAAkB,SAAS9T,EAAKC,GACnCsQ,EAAQqE,iBAAiB5U,EAAKC,KAIlCsQ,EAAQsE,KAAKxa,EAAUwZ,EAAKtd,UAG9Bue,GAAe,SAASC,GACtB,GAAIC,KAEJ,KAAK,GAAIhV,KAAO+U,GACd,GAAIA,EAAKlK,eAAe7K,GAAM,CAC5B,GAAIC,GAAQ8U,EAAK/U,EACjBgV,GAAUhV,GAAwB,kBAAVC,GAAuBA,IAAUA,EAI7D,MAAO+U,IAGTC,EAAW,SAASxe,GAGhB7B,KAAKkI,EAAwBrG,KAC5B7B,KAAK+K,OAAS/K,KAAKsG,EAAeyE,QAGnCjG,SAASpB,UAAUqB,MAAMhE,KACvBf,KAAKkI,EAAwBrG,GAC7B7B,KAAKiI,KACFvD,MAAM3D,KAAK4D,UAAW,KAK/B2b,EAAe,SAASlV,EAAKmC,GACvB5H,EAAY4H,SACPvN,MAAKqG,EAAe+E,GAE3BpL,KAAKqG,EAAe+E,GAAO3B,EAAYzJ,KAAKqG,EAAe+E,OAAYmC,KAM7EtN,EAAMyD,UAAU6c,QAAUtgB,EAAMyD,UAAUsN,eAC1C/Q,EAAMyD,UAAU8c,kBAAoBvgB,EAAMyD,UAAUgO,WAEpDjS,EAAOD,QAAUS,IAEdc,KAAKf,KAAuB,mBAAXF,QAAyBA,OAAyB,mBAATC,MAAuBA,KAAyB,mBAAXF,QAAyBA,aACxH4gB,GAAK,GAAGC,GAAK,GAAGzc,EAAI,EAAE/B,EAAI,EAAE8C,EAAI,EAAE2b,EAAI,IAAIxe,GAAG,SAASjB,EAAQzB,EAAOD,IACxE,SAAWM,GAOX,GAAI8gB,GAAmB1f,EAAQ,GAG3BsF,EACgB,mBAAX3G,QACHA,OACkB,mBAAXC,GAAyBA,EAAyB,mBAATC,MAAuBA,QACzE8gB,EAASra,EAAQvG,MAEjBA,EAAQ,GAAI2gB,EAQhB3gB,GAAM6gB,WAAa,WAEjB,MADAta,GAAQvG,MAAQ4gB,EACT5gB,GAGTA,EAAMoS,YAEN5S,EAAOD,QAAUS,EAoCjBR,EAAOD,QAAQuhB,OAASH,IAErB7f,KAAKf,KAAuB,mBAAXF,QAAyBA,OAAyB,mBAATC,MAAuBA,KAAyB,mBAAXF,QAAyBA,aACxHoF,EAAI,IAAID,GAAG,SAAS9D,EAAQzB,EAAOD,IACtC,SAAWM,GAQX,QAASqJ,GAAS6X,GAChB,MAAuB,gBAATA,IAA8B,OAATA,EAKrC,QAAS9X,GAAQmC,GACf,OAAQ5H,OAAOC,UAAUC,SAAS5C,KAAKsK,IACrC,IAAK,iBACH,OAAO,CACT,KAAK,qBACH,OAAO,CACT,KAAK,wBACH,OAAO,CACT,SACE,MAAOA,aAAiBzK,QAI9B,QAASmI,GAAasC,GACpB,MAAiD,wBAA1C5H,OAAOC,UAAUC,SAAS5C,KAAKsK,GAGxC,QAASrC,GAAWqC,GAClB,MAAiD,sBAA1C5H,OAAOC,UAAUC,SAAS5C,KAAKsK,GAGxC,QAASpC,GAAeoC,GACtB,MAAiD,0BAA1C5H,OAAOC,UAAUC,SAAS5C,KAAKsK,GAGxC,QAAS1F,GAAYqb,GACnB,MAAgB,UAATA,EAGT,QAAS1b,GAAW0b,GAClB,MAAuB,kBAATA,GAGhB,QAAS5X,GAAc4X,GACrB,MAAgD,oBAAzCvd,OAAOC,UAAUC,SAAS5C,KAAKigB,GAGxC,QAAS3X,GAAS2X,GAChB,MAAgD,oBAAzCvd,OAAOC,UAAUC,SAAS5C,KAAKigB,GAGxC,QAAS1X,GAAQ0X,GACf,MAAgD,mBAAzCvd,OAAOC,UAAUC,SAAS5C,KAAKigB,GAGxC,QAASzX,GAAcyX,GACrB,IAAK5X,EAAc4X,GAAO,OAAO,CAEjC,KAAK,GAAI/M,KAAK+M,GACZ,GAAIA,EAAK/K,eAAehC,GACtB,OAAO,CAGX,QAAO,EAGT,QAASgN,KACP,IAEE,MADA,IAAIC,YAAW,KACR,EACP,MAAOhhB,GACP,OAAO,GAIX,QAASihB,KACP,IAEE,MADA,IAAIC,UAAS,KACN,EACP,MAAOlhB,GACP,OAAO,GAIX,QAASmhB,KACP,IAEE,MADA,IAAIC,cAAa,KACV,EACP,MAAOphB,GACP,OAAO,GAIX,QAASmK,KACP,KAAM,SAAW7D,IAAU,OAAO,CAElC,KAIE,MAHA,IAAI+a,SACJ,GAAItJ,SAAQ,IACZ,GAAIuJ,WACG,EACP,MAAOthB,GACP,OAAO,GAQX,QAAS2H,KACP,IAAKwC,IAAiB,OAAO,CAE7B,KAKE,MAHA,IAAI4N,SAAQ,cACVrQ,eAAgB,YAEX,EACP,MAAO1H,GACP,OAAO,GAIX,QAASuhB,KACP,MAAwC,kBAA1BC,uBAGhB,QAASC,GAAgBlgB,GACvB,QAASmQ,GAAajQ,EAAM0D,GAC1B,GAAIuc,GAAiBngB,EAASE,IAASA,CACvC,OAAI0D,GACKA,EAASuc,IAAmBA,EAE9BA,EAGT,MAAOhQ,GAGT,QAASpI,GAAKgH,EAAK/O,GACjB,GAAId,GAAGkX,CAEP,IAAIlS,EAAY6K,EAAIxP,QAClB,IAAKL,IAAK6P,GACJ5G,EAAO4G,EAAK7P,IACdc,EAASV,KAAK,KAAMJ,EAAG6P,EAAI7P,QAK/B,IADAkX,EAAIrH,EAAIxP,OAEN,IAAKL,EAAI,EAAGA,EAAIkX,EAAGlX,IACjBc,EAASV,KAAK,KAAMJ,EAAG6P,EAAI7P,IAMnC,QAAS8I,GAAYoY,EAAMC,GACzB,MAAKA,IAGLtY,EAAKsY,EAAM,SAAS1W,EAAKC,GACvBwW,EAAKzW,GAAOC,IAEPwW,GALEA,EAgBX,QAASlY,GAAa6G,GACpB,QAAK/M,OAAOse,UAGLte,OAAOse,SAASvR,GAGzB,QAAS9G,GAASmQ,EAAKpO,GACrB,GAAmB,gBAARA,GACT,KAAM,IAAI7K,OAAM,yDAElB,OAAmB,gBAARiZ,IAA4B,IAARpO,EACtBoO,EAEFA,EAAI7Y,QAAUyK,EAAMoO,EAAMA,EAAI7M,OAAO,EAAGvB,GAAO,IAUxD,QAAS7B,GAAOoY,EAAQ5W,GACtB,MAAO3H,QAAOC,UAAUuS,eAAelV,KAAKihB,EAAQ5W,GAGtD,QAASvB,GAAWoY,GAQlB,IALA,GAGEC,GAHEC,KACFxhB,EAAI,EACJyhB,EAAMH,EAASjhB,OAGVL,EAAIyhB,EAAKzhB,IACduhB,EAAUD,EAASthB,GACf0I,EAAS6Y,GAGXC,EAAQ3gB,KAAK0gB,EAAQtC,QAAQ,8BAA+B,SACnDsC,GAAWA,EAAQG,QAE5BF,EAAQ3gB,KAAK0gB,EAAQG,OAIzB,OAAO,IAAIC,QAAOH,EAAQI,KAAK,KAAM,KAGvC,QAASzY,GAAUvJ,GACjB,GAAIiiB,KAIJ,OAHAhZ,GAAKjJ,EAAG,SAAS6K,EAAKC,GACpBmX,EAAMhhB,KAAKkR,mBAAmBtH,GAAO,IAAMsH,mBAAmBrH,MAEzDmX,EAAMD,KAAK,KAMpB,QAASpY,GAAS+F,GAChB,GAAmB,gBAARA,GAAkB,QAC7B,IAAIuS,GAAQvS,EAAIuS,MAAM,kEAGlBC,EAAQD,EAAM,IAAM,GACpBE,EAAWF,EAAM,IAAM,EAC3B,QACEtN,SAAUsN,EAAM,GAChBrN,KAAMqN,EAAM,GACZ3V,KAAM2V,EAAM,GACZpN,SAAUoN,EAAM,GAAKC,EAAQC,GAGjC,QAAS5Y,KACP,GAAI6Y,GAASpc,EAAQoc,QAAUpc,EAAQqc,QAEvC,KAAKld,EAAYid,IAAWA,EAAOE,gBAAiB,CAGlD,GAAIC,GAAM,GAAIC,aAAY,EAC1BJ,GAAOE,gBAAgBC,GAGvBA,EAAI,GAAe,KAATA,EAAI,GAAc,MAE5BA,EAAI,GAAe,MAATA,EAAI,GAAe,KAE7B,IAAIE,GAAM,SAASC,GAEjB,IADA,GAAIC,GAAID,EAAIvf,SAAS,IACdwf,EAAEniB,OAAS,GAChBmiB,EAAI,IAAMA,CAEZ,OAAOA,GAGT,OACEF,GAAIF,EAAI,IACRE,EAAIF,EAAI,IACRE,EAAIF,EAAI,IACRE,EAAIF,EAAI,IACRE,EAAIF,EAAI,IACRE,EAAIF,EAAI,IACRE,EAAIF,EAAI,IACRE,EAAIF,EAAI,IAIV,MAAO,mCAAmCnD,QAAQ,QAAS,SAASwD,GAClE,GAAI/iB,GAAqB,GAAhBmL,KAAKqS,SAAiB,EAC7BsF,EAAU,MAANC,EAAY/iB,EAAS,EAAJA,EAAW,CAClC,OAAO8iB,GAAExf,SAAS,MAYxB,QAASqG,GAAiBqZ,GAWxB,IATA,GAOEC,GAPEC,EAAsB,EACxBC,EAAiB,GACjBC,KACAC,EAAS,EACTtB,EAAM,EACNuB,EAAY,MACZC,EAAYD,EAAU3iB,OAGjBqiB,GAAQK,IAAWH,IACxBD,EAAUO,EAAoBR,KAMhB,SAAZC,GACCI,EAAS,GAAKtB,EAAMqB,EAAIziB,OAAS4iB,EAAYN,EAAQtiB,QAAUwiB,KAKlEC,EAAIjiB,KAAK8hB,GAETlB,GAAOkB,EAAQtiB,OACfqiB,EAAOA,EAAKS,UAGd,OAAOL,GAAIpT,UAAUkS,KAAKoB,GAS5B,QAASE,GAAoBR,GAC3B,GACEU,GACAC,EACA5Y,EACA6Y,EACAtjB,EALE8iB,IAOJ,KAAKJ,IAASA,EAAK7O,QACjB,MAAO,EAST,IANAiP,EAAIjiB,KAAK6hB,EAAK7O,QAAQR,eAClBqP,EAAK3c,IACP+c,EAAIjiB,KAAK,IAAM6hB,EAAK3c,IAGtBqd,EAAYV,EAAKU,UACbA,GAAa1a,EAAS0a,GAExB,IADAC,EAAUD,EAAUrZ,MAAM,OACrB/J,EAAI,EAAGA,EAAIqjB,EAAQhjB,OAAQL,IAC9B8iB,EAAIjiB,KAAK,IAAMwiB,EAAQrjB,GAG3B,IAAIujB,IAAiB,OAAQ,OAAQ,QAAS,MAC9C,KAAKvjB,EAAI,EAAGA,EAAIujB,EAAcljB,OAAQL,IACpCyK,EAAM8Y,EAAcvjB,GACpBsjB,EAAOZ,EAAKc,aAAa/Y,GACrB6Y,GACFR,EAAIjiB,KAAK,IAAM4J,EAAM,KAAO6Y,EAAO,KAGvC,OAAOR,GAAIlB,KAAK,IAMlB,QAAS6B,GAAgB3jB,EAAG4jB,GAC1B,WAAY5jB,IAAM4jB,GAMpB,QAASC,GAAgB7jB,EAAG4jB,GAC1B,MAAO1e,GAAYlF,IAAMkF,EAAY0e,GAMvC,QAASpa,GAAgBsF,EAAKgV,GAC5B,OAAIH,EAAgB7U,EAAKgV,KAEzBhV,EAAMA,EAAIiM,OAAO,GACjB+I,EAAMA,EAAI/I,OAAO,GAEbjM,EAAImH,OAAS6N,EAAI7N,MAAQnH,EAAIlE,QAAUkZ,EAAIlZ,SAG3CiZ,EAAgB/U,EAAIL,WAAYqV,EAAIrV,aAEjChF,EAAiBqF,EAAIL,WAAYqV,EAAIrV,cAM9C,QAAShF,GAAiBsa,EAAQC,GAChC,GAAIL,EAAgBI,EAAQC,GAAS,OAAO,CAE5C,IAAIC,GAAUF,EAAOrU,OACjBwU,EAAUF,EAAOtU,MAGrB,IAAIuU,EAAQ1jB,SAAW2jB,EAAQ3jB,OAAQ,OAAO,CAI9C,KAAK,GADDP,GAAG4jB,EACE1jB,EAAI,EAAGA,EAAI+jB,EAAQ1jB,OAAQL,IAGlC,GAFAF,EAAIikB,EAAQ/jB,GACZ0jB,EAAIM,EAAQhkB,GAEVF,EAAEua,WAAaqJ,EAAErJ,UACjBva,EAAE+Z,SAAW6J,EAAE7J,QACf/Z,EAAEya,QAAUmJ,EAAEnJ,OACdza,EAAE,cAAgB4jB,EAAE,YAEpB,OAAO,CAEX,QAAO,EAUT,QAASja,GAAKoG,EAAK5N,EAAMgiB,EAAaC,GACpC,GAAW,MAAPrU,EAAJ,CACA,GAAImF,GAAOnF,EAAI5N,EACf4N,GAAI5N,GAAQgiB,EAAYjP,GACxBnF,EAAI5N,GAAMiL,GAAY,EACtB2C,EAAI5N,GAAMoL,EAAW2H,EACjBkP,GACFA,EAAMrjB,MAAMgP,EAAK5N,EAAM+S,KAU3B,QAAS/Q,GAASkgB,EAAOC,GACvB,IAAKzb,EAAQwb,GAAQ,MAAO,EAI5B,KAAK,GAFDE,MAEKrkB,EAAI,EAAGA,EAAImkB,EAAM9jB,OAAQL,IAChC,IACEqkB,EAAOxjB,KAAKyjB,OAAOH,EAAMnkB,KACzB,MAAOT,GACP8kB,EAAOxjB,KAAK,gCAIhB,MAAOwjB,GAAOzC,KAAKwC,GASrB,QAASG,GAAW7Z,GAClB,QAAS8Z,UAAU9Z,GAAOX,MAAM,SAAS1J,OAG3C,QAASokB,GAAS/Z,GAChB,MAAO6Z,GAAW1f,KAAKC,UAAU4F,IAGnC,QAASga,GAAeha,GACtB,GAAqB,gBAAVA,GAAoB,CAC7B,GAAIia,GAAY,EAChB,OAAO5b,GAAS2B,EAAOia,GAClB,GACY,gBAAVja,IACU,iBAAVA,IACU,mBAAVA,GAEP,MAAOA,EAGT,IAAIqL,GAAOjT,OAAOC,UAAUC,SAAS5C,KAAKsK,EAG1C,OAAa,oBAATqL,EAAmC,WAC1B,mBAATA,EAAkC,UACzB,sBAATA,EACKrL,EAAMzI,KAAO,cAAgByI,EAAMzI,KAAO,IAAM,aAElDyI,EAGT,QAASka,GAAgBla,EAAOma,GAC9B,MAAc,KAAVA,EAAoBH,EAAeha,GAEnCjC,EAAciC,GACT5H,OAAOkM,KAAKtE,GAAOoa,OAAO,SAASC,EAAKta,GAE7C,MADAsa,GAAIta,GAAOma,EAAgBla,EAAMD,GAAMoa,EAAQ,GACxCE,OAEA7P,MAAMvM,QAAQ+B,GAChBA,EAAMsa,IAAI,SAASC,GACxB,MAAOL,GAAgBK,EAAKJ,EAAQ,KAIjCH,EAAeha,GAGxB,QAASd,GAAmByE,EAAIwW,EAAOK,GACrC,IAAKzc,EAAc4F,GAAK,MAAOA,EAE/BwW,GAAyB,gBAAVA,GAAqBM,EAAgCN,EACpEK,EAA2B,gBAAVL,GAAqBO,EAA+BF,CAErE,IAAIG,GAAaT,EAAgBvW,EAAIwW,EAErC,OAAIJ,GAAS3f,EAAUugB,IAAeH,EAC7Btb,EAAmByE,EAAIwW,EAAQ,GAGjCQ,EAGT,QAAS1b,GAAwBqF,EAAM2V,GACrC,GAAoB,gBAAT3V,IAAqC,gBAATA,GAAmB,MAAOA,GAAKhM,UACtE,KAAKkS,MAAMvM,QAAQqG,GAAO,MAAO,EAKjC,IAHAA,EAAOA,EAAKsW,OAAO,SAAS7a,GAC1B,MAAsB,gBAARA,KAEI,IAAhBuE,EAAK3O,OAAc,MAAO,sBAG9B,IADAskB,EAAiC,gBAAdA,GAAyBY,EAA4BZ,EACpE3V,EAAK,GAAG3O,QAAUskB,EAAW,MAAO3V,GAAK,EAE7C,KAAK,GAAIwW,GAAWxW,EAAK3O,OAAQmlB,EAAW,EAAGA,IAAY,CACzD,GAAIH,GAAarW,EAAKjL,MAAM,EAAGyhB,GAAU5D,KAAK,KAC9C,MAAIyD,EAAWhlB,OAASskB,GACxB,MAAIa,KAAaxW,EAAK3O,OAAeglB,EAC9BA,EAAa,IAGtB,MAAO,GAGT,QAASxb,GAASsa,EAAOtd,GAcvB,QAAS4e,GAAeC,GACtB,MAAI/c,GAAQ+c,GACHA,EAAYV,IAAI,SAASC,GAC9B,MAAOQ,GAAeR,KAItBxc,EAAcid,GACT5iB,OAAOkM,KAAK0W,GAAaZ,OAAO,SAASC,EAAKY,GAMnD,MAJEZ,GAAIY,GADFC,EAAexW,KAAKuW,GACbE,EAEAJ,EAAeC,EAAYC,IAE/BZ,OAIJW,EA/BT,IAAK/c,EAAQ9B,IAAkB8B,EAAQ9B,IAAyC,IAAxBA,EAAaxG,OACnE,MAAO8jB,EAET,IAEI2B,GAFAF,EAAiB1c,EAAWrC,GAC5Bgf,EAAe,UAGnB,KACEC,EAAYjhB,KAAK+L,MAAM9L,EAAUqf,IACjC,MAAO4B,GACP,MAAO5B,GAwBT,MAAOsB,GAAeK,GA5lBxB,GAAIhhB,GAAYvE,EAAQ,IAEpBsF,EACgB,mBAAX3G,QACHA,OACkB,mBAAXC,GAAyBA,EAAyB,mBAATC,MAAuBA,QA0dzE+lB,EAAgC,EAEhCC,EAA+B,MAC/BG,EAA4B,EA6HhCzmB,GAAOD,SACL2J,SAAUA,EACVD,QAASA,EACTH,aAAcA,EACdC,WAAYA,EACZC,eAAgBA,EAChBtD,YAAaA,EACbL,WAAYA,EACZ8D,cAAeA,EACfC,SAAUA,EACVC,QAASA,EACTC,cAAeA,EACf0X,mBAAoBA,EACpBE,iBAAkBA,EAClBE,qBAAsBA,EACtBhX,cAAeA,EACfxC,uBAAwBA,EACxB4Z,8BAA+BA,EAC/BE,gBAAiBA,EACjBnY,KAAMA,EACNC,YAAaA,EACbC,SAAUA,EACVC,aAAcA,EACdC,OAAQA,EACRC,WAAYA,EACZC,UAAWA,EACXC,MAAOA,EACPC,iBAAkBA,EAClB6Z,oBAAqBA,EACrB5Z,gBAAiBA,EACjBC,iBAAkBA,EAClBC,SAAUA,EACVC,KAAMA,EACNxF,SAAUA,EACV2F,mBAAoBA,EACpBD,wBAAyBA,EACzBE,SAAUA,KAGTzJ,KAAKf,KAAuB,mBAAXF,QAAyBA,OAAyB,mBAATC,MAAuBA,KAAyB,mBAAXF,QAAyBA,aACxH4gB,GAAK,KAAKE,GAAG,SAASzf,EAAQzB,EAAOD,IACxC,SAAWM,GA+BX,QAAS6mB,KACP,MAAwB,mBAAb/b,WAAiD,MAArBA,SAASnC,SAAyB,GAClEmC,SAASnC,SAASE,KAG3B,QAASie,KACP,MAAwB,mBAAbhc,WAAiD,MAArBA,SAASnC,SAAyB,IAGpEmC,SAASnC,SAASoe,SACrBjc,SAASnC,SAASoe,OAChBjc,SAASnC,SAAS0M,SAClB,KACAvK,SAASnC,SAASqe,UACjBlc,SAASnC,SAASyR,KAAO,IAAMtP,SAASnC,SAASyR,KAAO,KAGtDtP,SAASnC,SAASoe,QA/C3B,GAAIxiB,GAAQnD,EAAQ,GAYhB2H,GACF7B,qBAAqB,EACrB+D,OAAO,GAILvE,EACgB,mBAAX3G,QACHA,OACkB,mBAAXC,GAAyBA,EAAyB,mBAATC,MAAuBA,QAGzEgnB,KAAYriB,MACZsiB,EAAmB,IAGnBC,EAAiB,yGA6DrBpe,GAASsD,OAAS,WAUhB,QAASC,GAAU8a,GACjBC,IACAC,EAAS5lB,KAAK0lB,GAOhB,QAASG,GAAYH,GACnB,IAAK,GAAIvmB,GAAIymB,EAASpmB,OAAS,EAAGL,GAAK,IAAKA,EACtCymB,EAASzmB,KAAOumB,GAClBE,EAASE,OAAO3mB,EAAG,GAQzB,QAAS4mB,KACPC,IACAJ,KAOF,QAASK,GAAerY,EAAOsY,GAC7B,GAAInM,GAAY,IAChB,KAAImM,GAAkB7e,EAAS7B,oBAA/B,CAGA,IAAK,GAAIrG,KAAKymB,GACZ,GAAIA,EAASnR,eAAetV,GAC1B,IACEymB,EAASzmB,GAAGoE,MAAM,MAAOqK,GAAOuK,OAAOoN,EAAOhmB,KAAK4D,UAAW,KAC9D,MAAOgjB,GACPpM,EAAYoM,EAKlB,GAAIpM,EACF,KAAMA,IAiBV,QAASqM,GAAsBlmB,EAAKwO,EAAK2X,EAAQC,EAAO9Y,GACtD,GAAII,GAAQ,KAERmM,EAAYlX,EAAM0E,aAAaiG,GAAMA,EAAG1L,MAAQ0L,EAEhD7K,EAAUE,EAAM0E,aAAarH,GAAOA,EAAIyC,QAAUzC,CAEtD,IAAIqmB,EACFlf,EAASwG,kBAAkB2Y,oCACzBD,EACA7X,EACA2X,EACA1jB,GAEF8jB,QACK,IAAI1M,GAAalX,EAAM6E,QAAQqS,GAMpCnM,EAAQvG,EAASwG,kBAAkBkM,GACnCkM,EAAerY,GAAO,OACjB,CACL,GAOI8Y,GAPAzf,GACFyH,IAAKA,EACL+K,KAAM4M,EACN1M,OAAQ2M,GAGNllB,EAAO6K,MAGX,IAAkC,uBAA3B9J,SAAS5C,KAAKoD,GAAgC,CACnD,GAAI+jB,GAAS/jB,EAAQse,MAAMwE,EACvBiB,KACFtlB,EAAOslB,EAAO,GACd/jB,EAAU+jB,EAAO,IAIrBzf,EAAS+E,KAAOwZ,EAEhB5X,GACExM,KAAMA,EACNuB,QAASA,EACT+L,IAAKyW,IACLvX,OAAQ3G,IAEVgf,EAAerY,GAAO,GAGxB,QAAI+Y,GACKA,EAAmBpjB,MAAM/E,KAAM2E,WAM1C,QAASwiB,KACHiB,IAGJD,EAAqB3hB,EAAQsZ,QAC7BtZ,EAAQsZ,QAAU8H,EAClBQ,GAA2B,GAG7B,QAASZ,KACFY,IAGL5hB,EAAQsZ,QAAUqI,EAClBC,GAA2B,EAC3BD,EAAqB1a,QAGvB,QAASwa,KACP,GAAII,GAAsBN,EACxBO,EAAYC,CACdA,GAAW,KACXR,EAAqB,KACrB7V,EAAgB,KAChBuV,EAAe1iB,MAAM,MAAOsjB,GAAqB,GAAO1O,OAAO2O,IAUjE,QAASnc,GAAO6C,EAAIwZ,GAClB,GAAI/jB,GAAOsiB,EAAOhmB,KAAK4D,UAAW,EAClC,IAAIojB,EAAoB,CACtB,GAAI7V,IAAkBlD,EACpB,MAEAiZ,KAIJ,GAAI7Y,GAAQvG,EAASwG,kBAAkBL,EAevC,IAdA+Y,EAAqB3Y,EACrB8C,EAAgBlD,EAChBuZ,EAAW9jB,EAMX6O,WAAW,WACLpB,IAAkBlD,GACpBiZ,KAED7Y,EAAMqZ,WAAa,IAAO,GAEzBD,KAAY,EACd,KAAMxZ,GA9LV,GA0DImZ,GAAoBC,EA1DpBhB,KACFmB,EAAW,KACXrW,EAAgB,KAChB6V,EAAqB,IAkMvB,OAHA5b,GAAOC,UAAYA,EACnBD,EAAOkb,YAAcA,EACrBlb,EAAO8B,UAAYsZ,EACZpb,KAsDTtD,EAASwG,kBAAoB,WA4C3B,QAASqZ,GAA+B1Z,GACtC,GAAwB,mBAAbA,GAAGI,OAA0BJ,EAAGI,MAA3C,CAiBA,IAAK,GALDuZ,GACAC,EACAC,EAZAvQ,EAAS,0IACTwQ,EAAQ,wHAGRC,EAAQ,6JAERC,EAAY,gDACZC,EAAa,gCACbC,EAAQla,EAAGI,MAAM1E,MAAM,MACvB0E,KAMKzO,GAFO,sBAAsBoZ,KAAK/K,EAAG7K,SAEjC,GAAG0T,EAAIqR,EAAMloB,OAAQL,EAAIkX,IAAKlX,EAAG,CAC5C,GAAKioB,EAAQtQ,EAAOyB,KAAKmP,EAAMvoB,IAAM,CACnC,GAAIwoB,GAAWP,EAAM,IAAqC,IAA/BA,EAAM,GAAGvR,QAAQ,UACxC+R,EAASR,EAAM,IAAmC,IAA7BA,EAAM,GAAGvR,QAAQ,OACtC+R,KAAWT,EAAWM,EAAWlP,KAAK6O,EAAM,OAE9CA,EAAM,GAAKD,EAAS,GACpBC,EAAM,GAAKD,EAAS,GACpBC,EAAM,GAAKD,EAAS,IAEtBE,GACE3Y,IAAMiZ,EAAsB,KAAXP,EAAM,GACvBpb,KAAMob,EAAM,IAAM5B,EAClBviB,KAAM0kB,GAAYP,EAAM,OACxB3N,KAAM2N,EAAM,IAAMA,EAAM,GAAK,KAC7BzN,OAAQyN,EAAM,IAAMA,EAAM,GAAK,UAE5B,IAAKA,EAAQE,EAAM/O,KAAKmP,EAAMvoB,IACnCkoB,GACE3Y,IAAK0Y,EAAM,GACXpb,KAAMob,EAAM,IAAM5B,EAClBviB,QACAwW,MAAO2N,EAAM,GACbzN,OAAQyN,EAAM,IAAMA,EAAM,GAAK,UAE5B,CAAA,KAAKA,EAAQG,EAAMhP,KAAKmP,EAAMvoB,KAsBnC,QArBA,IAAIyoB,GAASR,EAAM,IAAMA,EAAM,GAAGvR,QAAQ,aACtC+R,KAAWT,EAAWK,EAAUjP,KAAK6O,EAAM,MAE7CA,EAAM,GAAKD,EAAS,GACpBC,EAAM,GAAKD,EAAS,GACpBC,EAAM,GAAK,MACI,IAANjoB,GAAYioB,EAAM,IAAiC,mBAApB5Z,GAAGqa,eAK3Cja,EAAM,GAAG+L,OAASnM,EAAGqa,aAAe,GAEtCR,GACE3Y,IAAK0Y,EAAM,GACXpb,KAAMob,EAAM,IAAM5B,EAClBviB,KAAMmkB,EAAM,GAAKA,EAAM,GAAGle,MAAM,QAChCuQ,KAAM2N,EAAM,IAAMA,EAAM,GAAK,KAC7BzN,OAAQyN,EAAM,IAAMA,EAAM,GAAK,MAUnC,IAJKC,EAAQrb,MAAQqb,EAAQ5N,OAC3B4N,EAAQrb,KAAOwZ,GAGb6B,EAAQ3Y,KAAoC,UAA7B2Y,EAAQ3Y,IAAIlD,OAAO,EAAG,GAAgB,CAMvD,GAAIpB,GAAM,GAAIuL,eAKd,IAJAvL,EAAImU,KAAK,MAAO8I,EAAQ3Y,KAAK,GAC7BtE,EAAIqU,KAAK,MAGU,MAAfrU,EAAI+L,OAAgB,CACtB,GAAI0K,GAASzW,EAAI0d,cAAgB,EAIjCjH,GAASA,EAAO3d,WAGhB,IAAI6kB,GAAalH,EAAOI,MAAM,+BAG9B,IAAI8G,EAAY,CACd,GAAIC,GAAmBD,EAAW,EAIC,OAA/BC,EAAiBC,OAAO,KAC1BD,EAAmB5C,IAAsB4C,EAAiB9kB,MAAM,IAKlEmkB,EAAQ3Y,IAAMsZ,EAAiB9kB,MAAM,QAK3C0K,EAAM5N,KAAKqnB,GAGb,MAAKzZ,GAAMpO,QAKT4B,KAAMoM,EAAGpM,KACTuB,QAAS6K,EAAG7K,QACZ+L,IAAKyW,IACLvX,MAAOA,GAPA,MAwBX,QAAS4Y,GAAoC3N,EAAWnK,EAAK2X,EAAQ1jB,GACnE,GAAIulB,IACFxZ,IAAKA,EACL+K,KAAM4M,EAGR,IAAI6B,EAAQxZ,KAAOwZ,EAAQzO,KAAM,CAO/B,GANAZ,EAAUoO,YAAa;AAElBiB,EAAQlc,OACXkc,EAAQlc,KAAOwZ,GAGb3M,EAAUjL,MAAMpO,OAAS,GACvBqZ,EAAUjL,MAAM,GAAGc,MAAQwZ,EAAQxZ,IAAK,CAC1C,GAAImK,EAAUjL,MAAM,GAAG6L,OAASyO,EAAQzO,KACtC,OAAO,CACF,KACJZ,EAAUjL,MAAM,GAAG6L,MACpBZ,EAAUjL,MAAM,GAAG5B,OAASkc,EAAQlc,KAGpC,MADA6M,GAAUjL,MAAM,GAAG6L,KAAOyO,EAAQzO,MAC3B,EAOb,MAFAZ,GAAUjL,MAAMua,QAAQD,GACxBrP,EAAUuP,SAAU,GACb,EAKT,MAHEvP,GAAUoO,YAAa,GAGlB,EAYT,QAASoB,GAAsC7a,EAAIwW,GASjD,IACE,GALAoD,GACAkB,EALEC,EAAe,qEACjB3a,KACA4a,KACAC,GAAY,EAMRC,EAAOL,EAAsCM,OACjDD,IAASD,EACTC,EAAOA,EAAKC,OAEZ,GAAID,IAAS7a,GAAqB6a,IAASrhB,EAASsD,OAApD,CAkBA,GAbA2d,GACE5Z,IAAK,KACL1C,KAAMwZ,EACN/L,KAAM,KACNE,OAAQ,MAGN+O,EAAKtnB,KACPknB,EAAKtc,KAAO0c,EAAKtnB,MACPgmB,EAAQmB,EAAahQ,KAAKmQ,EAAKvmB,eACzCmmB,EAAKtc,KAAOob,EAAM,IAGK,mBAAdkB,GAAKtc,KACd,IACEsc,EAAKtc,KAAOob,EAAM9D,MAAMsF,UAAU,EAAGxB,EAAM9D,MAAMzN,QAAQ,MACzD,MAAOnX,IAGP8pB,EAAM,GAAKE,GACbD,GAAY,EAEZD,EAAM,GAAKE,IAAQ,EAGrB9a,EAAM5N,KAAKsoB,GAGTtE,GAGFpW,EAAMkY,OAAO,EAAG9B,EAGlB,IAAI5U,IACFhO,KAAMoM,EAAGpM,KACTuB,QAAS6K,EAAG7K,QACZ+L,IAAKyW,IACLvX,MAAOA,EAQT,OANA4Y,GACEpX,EACA5B,EAAGqb,WAAarb,EAAGsb,SACnBtb,EAAGiM,MAAQjM,EAAGub,WACdvb,EAAG7K,SAAW6K,EAAGwb,aAEZ5Z,EAQT,QAASvB,GAAkBL,EAAIwW,GAC7B,GAAIpW,GAAQ,IACZoW,GAAiB,MAATA,EAAgB,GAAKA,CAE7B,KAEE,GADApW,EAAQsZ,EAA+B1Z,GAErC,MAAOI,GAET,MAAOlP,GACP,GAAI2I,EAASkC,MACX,KAAM7K,GAIV,IAEE,GADAkP,EAAQya,EAAsC7a,EAAIwW,EAAQ,GAExD,MAAOpW,GAET,MAAOlP,GACP,GAAI2I,EAASkC,MACX,KAAM7K,GAGV,OACE0C,KAAMoM,EAAGpM,KACTuB,QAAS6K,EAAG7K,QACZ+L,IAAKyW,KAOT,MAHAtX,GAAkB2Y,oCAAsCA,EACxD3Y,EAAkBqZ,+BAAiCA,EAE5CrZ,KAGT5P,EAAOD,QAAUqJ,IAEd9H,KAAKf,KAAuB,mBAAXF,QAAyBA,OAAyB,mBAATC,MAAuBA,KAAyB,mBAAXF,QAAyBA,aACxHmF,EAAI,IAAIyb,IAAI,SAASvf,EAAQzB,EAAOD,GAevC,QAAS6X,GAAQoT,EAAUC,GACzB,IAAK,GAAI/pB,GAAI,EAAGA,EAAI8pB,EAASzpB,SAAUL,EACrC,GAAI8pB,EAAS9pB,KAAO+pB,EAAQ,MAAO/pB,EAErC,UAGF,QAAS8E,GAAU+K,EAAKma,EAAUC,EAAQC,GACxC,MAAOrlB,MAAKC,UAAU+K,EAAKsa,EAAWH,EAAUE,GAAgBD,GAIlE,QAASG,GAAe1f,GACtB,GAAIgL,IAEFjH,MAAO/D,EAAM+D,MACbjL,QAASkH,EAAMlH,QACfvB,KAAMyI,EAAMzI,KAGd,KAAK,GAAIjC,KAAK0K,GACR5H,OAAOC,UAAUuS,eAAelV,KAAKsK,EAAO1K,KAC9C0V,EAAI1V,GAAK0K,EAAM1K,GAInB,OAAO0V,GAGT,QAASyU,GAAWH,EAAUE,GAC5B,GAAIzb,MACAO,IAWJ,OATqB,OAAjBkb,IACFA,EAAgB,SAASzf,EAAKC,GAC5B,MAAI+D,GAAM,KAAO/D,EACR,eAEF,eAAiBsE,EAAKjL,MAAM,EAAG2S,EAAQjI,EAAO/D,IAAQkX,KAAK,KAAO,MAItE,SAASnX,EAAKC,GACnB,GAAI+D,EAAMpO,OAAS,EAAG,CACpB,GAAIgqB,GAAU3T,EAAQjI,EAAOpP,OAC5BgrB,EAAU5b,EAAMkY,OAAO0D,EAAU,GAAK5b,EAAM5N,KAAKxB,OACjDgrB,EAAUrb,EAAK2X,OAAO0D,EAASC,EAAAA,EAAU7f,GAAOuE,EAAKnO,KAAK4J,IAEtDiM,EAAQjI,EAAO/D,KAClBA,EAAQwf,EAAc9pB,KAAKf,KAAMoL,EAAKC,QAGxC+D,GAAM5N,KAAK6J,EAGb,OAAmB,OAAZsf,EACHtf,YAAiBzK,OAAQmqB,EAAe1f,GAASA,EACjDsf,EAAS5pB,KAAKf,KAAMoL,EAAKC,IA5DjC7L,EAAUC,EAAOD,QAAUiG,EAC3BjG,EAAQ0rB,aAAeJ,OA+DjBpK,IAAI,SAASxf,EAAQzB,EAAOD,GAwBlC,QAAS2rB,GAAQC,EAAG7O,GAClB,GAAI8O,IAAW,MAAJD,IAAmB,MAAJ7O,GACtB+O,GAAOF,GAAK,KAAO7O,GAAK,KAAO8O,GAAO,GAC1C,OAAQC,IAAO,GAAa,MAAND,EAMxB,QAASE,GAAcrI,EAAKsI,GAC1B,MAAQtI,IAAOsI,EAAQtI,IAAS,GAAKsI,EAMvC,QAASC,GAAOC,EAAGjrB,EAAG4jB,EAAG+G,EAAG9qB,EAAGH,GAC7B,MAAOgrB,GAAQI,EAAcJ,EAAQA,EAAQ1qB,EAAGirB,GAAIP,EAAQC,EAAGjrB,IAAKG,GAAI+jB,GAE1E,QAASsH,GAAMlrB,EAAG4jB,EAAGjB,EAAGwI,EAAGR,EAAG9qB,EAAGH,GAC/B,MAAOsrB,GAAQpH,EAAIjB,GAAOiB,EAAIuH,EAAInrB,EAAG4jB,EAAG+G,EAAG9qB,EAAGH,GAEhD,QAAS0rB,GAAMprB,EAAG4jB,EAAGjB,EAAGwI,EAAGR,EAAG9qB,EAAGH,GAC/B,MAAOsrB,GAAQpH,EAAIuH,EAAMxI,GAAKwI,EAAInrB,EAAG4jB,EAAG+G,EAAG9qB,EAAGH,GAEhD,QAAS2rB,GAAMrrB,EAAG4jB,EAAGjB,EAAGwI,EAAGR,EAAG9qB,EAAGH,GAC/B,MAAOsrB,GAAOpH,EAAIjB,EAAIwI,EAAGnrB,EAAG4jB,EAAG+G,EAAG9qB,EAAGH,GAEvC,QAAS4rB,GAAMtrB,EAAG4jB,EAAGjB,EAAGwI,EAAGR,EAAG9qB,EAAGH,GAC/B,MAAOsrB,GAAOrI,GAAKiB,GAAKuH,GAAInrB,EAAG4jB,EAAG+G,EAAG9qB,EAAGH,GAM1C,QAAS6rB,GAAQZ,EAAGhJ,GAElBgJ,EAAEhJ,GAAO,IAAM,KAASA,EAAM,GAC9BgJ,GAAKhJ,EAAM,KAAQ,GAAM,GAAK,IAAMA,CAEpC,IAAIzhB,GACAsrB,EACAC,EACAC,EACAC,EACA3rB,EAAI,WACJ4jB,aACAjB,cACAwI,EAAI,SAER,KAAKjrB,EAAI,EAAGA,EAAIyqB,EAAEpqB,OAAQL,GAAK,GAC7BsrB,EAAOxrB,EACPyrB,EAAO7H,EACP8H,EAAO/I,EACPgJ,EAAOR,EAEPnrB,EAAIkrB,EAAMlrB,EAAG4jB,EAAGjB,EAAGwI,EAAGR,EAAEzqB,GAAI,cAC5BirB,EAAID,EAAMC,EAAGnrB,EAAG4jB,EAAGjB,EAAGgI,EAAEzqB,EAAI,GAAI,eAChCyiB,EAAIuI,EAAMvI,EAAGwI,EAAGnrB,EAAG4jB,EAAG+G,EAAEzqB,EAAI,GAAI,GAAI,WACpC0jB,EAAIsH,EAAMtH,EAAGjB,EAAGwI,EAAGnrB,EAAG2qB,EAAEzqB,EAAI,GAAI,gBAChCF,EAAIkrB,EAAMlrB,EAAG4jB,EAAGjB,EAAGwI,EAAGR,EAAEzqB,EAAI,GAAI,cAChCirB,EAAID,EAAMC,EAAGnrB,EAAG4jB,EAAGjB,EAAGgI,EAAEzqB,EAAI,GAAI,GAAI,YACpCyiB,EAAIuI,EAAMvI,EAAGwI,EAAGnrB,EAAG4jB,EAAG+G,EAAEzqB,EAAI,GAAI,gBAChC0jB,EAAIsH,EAAMtH,EAAGjB,EAAGwI,EAAGnrB,EAAG2qB,EAAEzqB,EAAI,GAAI,cAChCF,EAAIkrB,EAAMlrB,EAAG4jB,EAAGjB,EAAGwI,EAAGR,EAAEzqB,EAAI,GAAI,EAAG,YACnCirB,EAAID,EAAMC,EAAGnrB,EAAG4jB,EAAGjB,EAAGgI,EAAEzqB,EAAI,GAAI,gBAChCyiB,EAAIuI,EAAMvI,EAAGwI,EAAGnrB,EAAG4jB,EAAG+G,EAAEzqB,EAAI,IAAK,WACjC0jB,EAAIsH,EAAMtH,EAAGjB,EAAGwI,EAAGnrB,EAAG2qB,EAAEzqB,EAAI,IAAK,gBACjCF,EAAIkrB,EAAMlrB,EAAG4jB,EAAGjB,EAAGwI,EAAGR,EAAEzqB,EAAI,IAAK,EAAG,YACpCirB,EAAID,EAAMC,EAAGnrB,EAAG4jB,EAAGjB,EAAGgI,EAAEzqB,EAAI,IAAK,cACjCyiB,EAAIuI,EAAMvI,EAAGwI,EAAGnrB,EAAG4jB,EAAG+G,EAAEzqB,EAAI,IAAK,gBACjC0jB,EAAIsH,EAAMtH,EAAGjB,EAAGwI,EAAGnrB,EAAG2qB,EAAEzqB,EAAI,IAAK,GAAI,YAErCF,EAAIorB,EAAMprB,EAAG4jB,EAAGjB,EAAGwI,EAAGR,EAAEzqB,EAAI,GAAI,cAChCirB,EAAIC,EAAMD,EAAGnrB,EAAG4jB,EAAGjB,EAAGgI,EAAEzqB,EAAI,GAAI,eAChCyiB,EAAIyI,EAAMzI,EAAGwI,EAAGnrB,EAAG4jB,EAAG+G,EAAEzqB,EAAI,IAAK,GAAI,WACrC0jB,EAAIwH,EAAMxH,EAAGjB,EAAGwI,EAAGnrB,EAAG2qB,EAAEzqB,GAAI,eAC5BF,EAAIorB,EAAMprB,EAAG4jB,EAAGjB,EAAGwI,EAAGR,EAAEzqB,EAAI,GAAI,cAChCirB,EAAIC,EAAMD,EAAGnrB,EAAG4jB,EAAGjB,EAAGgI,EAAEzqB,EAAI,IAAK,EAAG,UACpCyiB,EAAIyI,EAAMzI,EAAGwI,EAAGnrB,EAAG4jB,EAAG+G,EAAEzqB,EAAI,IAAK,eACjC0jB,EAAIwH,EAAMxH,EAAGjB,EAAGwI,EAAGnrB,EAAG2qB,EAAEzqB,EAAI,GAAI,eAChCF,EAAIorB,EAAMprB,EAAG4jB,EAAGjB,EAAGwI,EAAGR,EAAEzqB,EAAI,GAAI,EAAG,WACnCirB,EAAIC,EAAMD,EAAGnrB,EAAG4jB,EAAGjB,EAAGgI,EAAEzqB,EAAI,IAAK,eACjCyiB,EAAIyI,EAAMzI,EAAGwI,EAAGnrB,EAAG4jB,EAAG+G,EAAEzqB,EAAI,GAAI,eAChC0jB,EAAIwH,EAAMxH,EAAGjB,EAAGwI,EAAGnrB,EAAG2qB,EAAEzqB,EAAI,GAAI,GAAI,YACpCF,EAAIorB,EAAMprB,EAAG4jB,EAAGjB,EAAGwI,EAAGR,EAAEzqB,EAAI,IAAK,eACjCirB,EAAIC,EAAMD,EAAGnrB,EAAG4jB,EAAGjB,EAAGgI,EAAEzqB,EAAI,GAAI,aAChCyiB,EAAIyI,EAAMzI,EAAGwI,EAAGnrB,EAAG4jB,EAAG+G,EAAEzqB,EAAI,GAAI,GAAI,YACpC0jB,EAAIwH,EAAMxH,EAAGjB,EAAGwI,EAAGnrB,EAAG2qB,EAAEzqB,EAAI,IAAK,gBAEjCF,EAAIqrB,EAAMrrB,EAAG4jB,EAAGjB,EAAGwI,EAAGR,EAAEzqB,EAAI,GAAI,WAChCirB,EAAIE,EAAMF,EAAGnrB,EAAG4jB,EAAGjB,EAAGgI,EAAEzqB,EAAI,GAAI,gBAChCyiB,EAAI0I,EAAM1I,EAAGwI,EAAGnrB,EAAG4jB,EAAG+G,EAAEzqB,EAAI,IAAK,GAAI,YACrC0jB,EAAIyH,EAAMzH,EAAGjB,EAAGwI,EAAGnrB,EAAG2qB,EAAEzqB,EAAI,IAAK,cACjCF,EAAIqrB,EAAMrrB,EAAG4jB,EAAGjB,EAAGwI,EAAGR,EAAEzqB,EAAI,GAAI,eAChCirB,EAAIE,EAAMF,EAAGnrB,EAAG4jB,EAAGjB,EAAGgI,EAAEzqB,EAAI,GAAI,GAAI,YACpCyiB,EAAI0I,EAAM1I,EAAGwI,EAAGnrB,EAAG4jB,EAAG+G,EAAEzqB,EAAI,GAAI,eAChC0jB,EAAIyH,EAAMzH,EAAGjB,EAAGwI,EAAGnrB,EAAG2qB,EAAEzqB,EAAI,IAAK,gBACjCF,EAAIqrB,EAAMrrB,EAAG4jB,EAAGjB,EAAGwI,EAAGR,EAAEzqB,EAAI,IAAK,EAAG,WACpCirB,EAAIE,EAAMF,EAAGnrB,EAAG4jB,EAAGjB,EAAGgI,EAAEzqB,GAAI,eAC5ByiB,EAAI0I,EAAM1I,EAAGwI,EAAGnrB,EAAG4jB,EAAG+G,EAAEzqB,EAAI,GAAI,eAChC0jB,EAAIyH,EAAMzH,EAAGjB,EAAGwI,EAAGnrB,EAAG2qB,EAAEzqB,EAAI,GAAI,GAAI,UACpCF,EAAIqrB,EAAMrrB,EAAG4jB,EAAGjB,EAAGwI,EAAGR,EAAEzqB,EAAI,GAAI,cAChCirB,EAAIE,EAAMF,EAAGnrB,EAAG4jB,EAAGjB,EAAGgI,EAAEzqB,EAAI,IAAK,eACjCyiB,EAAI0I,EAAM1I,EAAGwI,EAAGnrB,EAAG4jB,EAAG+G,EAAEzqB,EAAI,IAAK,GAAI,WACrC0jB,EAAIyH,EAAMzH,EAAGjB,EAAGwI,EAAGnrB,EAAG2qB,EAAEzqB,EAAI,GAAI,eAEhCF,EAAIsrB,EAAMtrB,EAAG4jB,EAAGjB,EAAGwI,EAAGR,EAAEzqB,GAAI,cAC5BirB,EAAIG,EAAMH,EAAGnrB,EAAG4jB,EAAGjB,EAAGgI,EAAEzqB,EAAI,GAAI,GAAI,YACpCyiB,EAAI2I,EAAM3I,EAAGwI,EAAGnrB,EAAG4jB,EAAG+G,EAAEzqB,EAAI,IAAK,gBACjC0jB,EAAI0H,EAAM1H,EAAGjB,EAAGwI,EAAGnrB,EAAG2qB,EAAEzqB,EAAI,GAAI,cAChCF,EAAIsrB,EAAMtrB,EAAG4jB,EAAGjB,EAAGwI,EAAGR,EAAEzqB,EAAI,IAAK,EAAG,YACpCirB,EAAIG,EAAMH,EAAGnrB,EAAG4jB,EAAGjB,EAAGgI,EAAEzqB,EAAI,GAAI,gBAChCyiB,EAAI2I,EAAM3I,EAAGwI,EAAGnrB,EAAG4jB,EAAG+G,EAAEzqB,EAAI,IAAK,aACjC0jB,EAAI0H,EAAM1H,EAAGjB,EAAGwI,EAAGnrB,EAAG2qB,EAAEzqB,EAAI,GAAI,gBAChCF,EAAIsrB,EAAMtrB,EAAG4jB,EAAGjB,EAAGwI,EAAGR,EAAEzqB,EAAI,GAAI,EAAG,YACnCirB,EAAIG,EAAMH,EAAGnrB,EAAG4jB,EAAGjB,EAAGgI,EAAEzqB,EAAI,IAAK,cACjCyiB,EAAI2I,EAAM3I,EAAGwI,EAAGnrB,EAAG4jB,EAAG+G,EAAEzqB,EAAI,GAAI,gBAChC0jB,EAAI0H,EAAM1H,EAAGjB,EAAGwI,EAAGnrB,EAAG2qB,EAAEzqB,EAAI,IAAK,GAAI,YACrCF,EAAIsrB,EAAMtrB,EAAG4jB,EAAGjB,EAAGwI,EAAGR,EAAEzqB,EAAI,GAAI,cAChCirB,EAAIG,EAAMH,EAAGnrB,EAAG4jB,EAAGjB,EAAGgI,EAAEzqB,EAAI,IAAK,gBACjCyiB,EAAI2I,EAAM3I,EAAGwI,EAAGnrB,EAAG4jB,EAAG+G,EAAEzqB,EAAI,GAAI,GAAI,WACpC0jB,EAAI0H,EAAM1H,EAAGjB,EAAGwI,EAAGnrB,EAAG2qB,EAAEzqB,EAAI,GAAI,eAEhCF,EAAI0qB,EAAQ1qB,EAAGwrB,GACf5H,EAAI8G,EAAQ9G,EAAG6H,GACf9I,EAAI+H,EAAQ/H,EAAG+I,GACfP,EAAIT,EAAQS,EAAGQ,EAEjB,QAAQ3rB,EAAG4jB,EAAGjB,EAAGwI,GAMnB,QAASS,GAAUvH,GACjB,GAAInkB,GACAqkB,EAAS,GACTsH,EAA0B,GAAfxH,EAAM9jB,MACrB,KAAKL,EAAI,EAAGA,EAAI2rB,EAAU3rB,GAAK,EAC7BqkB,GAAUC,OAAOsH,aAAczH,EAAMnkB,GAAK,KAAQA,EAAI,GAAO,IAE/D,OAAOqkB,GAOT,QAASwH,GAAU1H,GACjB,GAAInkB,GACAqkB,IAEJ,KADAA,GAAQF,EAAM9jB,QAAU,GAAK,GAAKyM,OAC7B9M,EAAI,EAAGA,EAAIqkB,EAAOhkB,OAAQL,GAAK,EAClCqkB,EAAOrkB,GAAK,CAEd,IAAI8rB,GAAyB,EAAf3H,EAAM9jB,MACpB,KAAKL,EAAI,EAAGA,EAAI8rB,EAAS9rB,GAAK,EAC5BqkB,EAAOrkB,GAAK,KAAiC,IAA1BmkB,EAAM4H,WAAW/rB,EAAI,KAAeA,EAAI,EAE7D,OAAOqkB,GAMT,QAAS2H,GAAQrsB,GACf,MAAO+rB,GAAUL,EAAQQ,EAAUlsB,GAAe,EAAXA,EAAEU,SAM3C,QAAS4rB,GAAYxhB,EAAKzJ,GACxB,GAAIhB,GAIAwf,EAHA0M,EAAOL,EAAUphB,GACjB0hB,KACAC,IAMJ,KAJAD,EAAK,IAAMC,EAAK,IAAMtf,OAClBof,EAAK7rB,OAAS,KAChB6rB,EAAOb,EAAQa,EAAmB,EAAbzhB,EAAIpK,SAEtBL,EAAI,EAAGA,EAAI,GAAIA,GAAK,EACvBmsB,EAAKnsB,GAAe,UAAVksB,EAAKlsB,GACfosB,EAAKpsB,GAAe,WAAVksB,EAAKlsB,EAGjB,OADAwf,GAAO6L,EAAQc,EAAKnT,OAAO6S,EAAU7qB,IAAQ,IAAoB,EAAdA,EAAKX,QACjDqrB,EAAUL,EAAQe,EAAKpT,OAAOwG,GAAO,MAM9C,QAAS6M,GAASlI,GAChB,GAEIsG,GACAzqB,EAHAssB,EAAS,mBACTjI,EAAS,EAGb,KAAKrkB,EAAI,EAAGA,EAAImkB,EAAM9jB,OAAQL,GAAK,EACjCyqB,EAAItG,EAAM4H,WAAW/rB,GACrBqkB,GAAUiI,EAAOxD,OAAQ2B,IAAM,EAAK,IAAQ6B,EAAOxD,OAAW,GAAJ2B,EAE5D,OAAOpG,GAMT,QAASkI,GAAapI,GACpB,MAAOqI,UAASza,mBAAmBoS,IAMrC,QAASsI,GAAO9sB,GACd,MAAOqsB,GAAQO,EAAa5sB,IAE9B,QAAS+sB,GAAO/sB,GACd,MAAO0sB,GAASI,EAAO9sB,IAEzB,QAASgtB,GAAWhH,EAAGsF,GACrB,MAAOgB,GAAYM,EAAa5G,GAAI4G,EAAatB,IAEnD,QAAS2B,GAAWjH,EAAGsF,GACrB,MAAOoB,GAASM,EAAWhH,EAAGsF,IAGhC,QAAS9iB,GAAI0kB,EAAQpiB,EAAKqiB,GACxB,MAAKriB,GAMAqiB,EAGEH,EAAWliB,EAAKoiB,GAFdD,EAAWniB,EAAKoiB,GANlBC,EAGEL,EAAOI,GAFLH,EAAOG,GAUpB/tB,EAAOD,QAAUsJ,YAEN,EAAE,EAAE,EAAE,IAAI","file":"raven.min.js"} \ No newline at end of file +{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","consolePlugin","console","pluginOptions","logLevels","levels","push","callback","msg","data","captureMessage","level","pop","wrapConsoleMethod","wrapMethod","addPlugin","5","7","2","requirePlugin","wrap","deep","3","formatComponentName","vm","$root","name","_isVue","$options","_componentTag","__file","vuePlugin","Vue","config","_oldOnError","errorHandler","error","info","metaData","Object","prototype","toString","componentName","propsData","lifecycleHook","captureException","extra","4","RavenConfigError","message","constructor","utils","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","safeJoin","logger","Function","apply","8","6","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","sanitizeKeys","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isErrorEvent","isDOMError","isDOMException","isError","isObject","isPlainObject","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","sanitize","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","dsn","options","_logDebug","globalOptions","key","value","setDSN","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","substr","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","context","func","undefined","_before","wrapped","_ignoreNextOnError","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","T","event","reason","unhandledPromiseRejection","B","_promiseRejectionHandler","bind","addEventListener","P","removeEventListener","ex","trimHeadFrames","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","U","currentOptions","exKeys","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","setDataCallback","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","L","setTimeout","$","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","_","evtName","_keypressTimeout","target","category","ba","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","ca","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","C","_originalFunctionToString","Q","D","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","type","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","E","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","R","builtin","S","F","installer","concat","G","str","m","exec","allowSecretKey","J","port","A","V","stackInfo","_triggerEvent","_processException","lineno","X","frame","_normalizeFrame","in_app","ga","stackInfoUrl","normalized","filename","line","colno","column","function","fa","prefixedMessage","exception","values","transaction","ha","request","Referer","breadcrumbs","_trimBreadcrumbs","ia","urlProp","urlProps","ja","httpData","userAgent","User-Agent","referrer","y","_backoffDuration","_backoffStart","ma","na","current","last","oa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Y","baseData","project","platform","_getHttpData","serverName","server_name","_sanitizeData","forEach","random","_sendProcessedPayload","pa","ra","qa","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","sa","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","onerror","open","setRequestHeader","send","ta","hash","evaluated","z","Z","setUser","setReleaseContext","10","11","9","RavenConstructor","_Raven","noConflict","Client","what","supportsErrorEvent","ErrorEvent","supportsDOMError","DOMError","supportsDOMException","DOMException","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","wrappedCallback","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","sanitizeMask","safeInput","o_O","getLocationHref","getLocationOrigin","origin","hostname","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","responseText","sourceMaps","sourceMapAddress","charAt","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","string","raw"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file diff --git a/dist/console,require/raven.js b/dist/console,require/raven.js index 45998aa7aa9a..49c0e7ce588b 100644 --- a/dist/console,require/raven.js +++ b/dist/console,require/raven.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.25.1 (b6f3c7a) | github.com/getsentry/raven-js */ +/*! Raven.js 3.25.2 (30b6d4e) | github.com/getsentry/raven-js */ /* * Includes TraceKit @@ -169,7 +169,11 @@ function now() { var _window = typeof window !== 'undefined' ? window - : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; + : typeof global !== 'undefined' + ? global + : typeof self !== 'undefined' + ? self + : {}; var _document = _window.document; var _navigator = _window.navigator; @@ -259,7 +263,7 @@ Raven.prototype = { // webpack (using a build step causes webpack #1617). Grunt verifies that // this value matches package.json during build. // See: https://github.com/getsentry/raven-js/issues/465 - VERSION: '3.25.1', + VERSION: '3.25.2', debug: false, @@ -1815,7 +1819,7 @@ Raven.prototype = { } ] }, - culprit: fileurl + transaction: fileurl }, options ); @@ -1930,7 +1934,7 @@ Raven.prototype = { if ( !last || current.message !== last.message || // defined for captureMessage - current.culprit !== last.culprit // defined for captureException/onerror + current.transaction !== last.transaction // defined for captureException/onerror ) return false; diff --git a/dist/console,require/raven.min.js b/dist/console,require/raven.min.js index b8abfb2d5294..5e2531b26535 100644 --- a/dist/console,require/raven.min.js +++ b/dist/console,require/raven.min.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.25.1 (b6f3c7a) | github.com/getsentry/raven-js */ -!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.Raven=a()}}(function(){var a;return function b(a,c,d){function e(g,h){if(!c[g]){if(!a[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};a[g][0].call(k.exports,function(b){var c=a[g][1][b];return e(c?c:b)},k,k.exports,b,a,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;gthis.k.maxBreadcrumbs&&this.u.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.r.push([a,b]),this.n&&this.F(),this},setUserContext:function(a){return this.j.user=a,this},setExtraContext:function(a){return this.Z("extra",a),this},setTagsContext:function(a){return this.Z("tags",a),this},clearContext:function(){return this.j={},this},getContext:function(){return JSON.parse(h(this.j))},setEnvironment:function(a){return this.k.environment=a,this},setRelease:function(a){return this.k.release=a,this},setDataCallback:function(a){var b=this.k.dataCallback;return this.k.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.k.breadcrumbCallback;return this.k.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.k.shouldSendCallback;return this.k.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.k.transport=a,this},lastException:function(){return this.d},lastEventId:function(){return this.f},isSetup:function(){return!!this.a&&(!!this.g||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.z("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=R.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(S){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.H;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.j.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.J(this.G(c)),h=S.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(S.head||S.body).appendChild(h)}},L:function(){var a=this;this.m+=1,setTimeout(function(){a.m-=1})},$:function(a,b){var c,d;if(this.b){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),S.createEvent?(c=S.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=S.createEventObject(),c.eventType=a);for(d in b)A(b,d)&&(c[d]=b[d]);if(S.createEvent)S.dispatchEvent(c);else try{S.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},_:function(a){var b=this;return function(c){if(b.aa=null,b.v!==c){b.v=c;var d;try{d=E(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ba:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.aa;g||a._("input")(c),clearTimeout(g),a.aa=setTimeout(function(){a.aa=null},b)}}},ca:function(a,b){var c=H(this.w.href),d=H(b),e=H(a);this.x=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},C:function(){var a=this;a.da=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.M?a.da.apply(this.O,arguments):a.da.apply(this,arguments)}},Q:function(){this.da&&(Function.prototype.toString=this.da)},D:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.ca(b.x,c+""),a.apply(this,arguments)}};I(R.history,"pushState",j,d),I(R.history,"replaceState",j,d)}if(c.console&&"console"in R&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};w(["debug","info","warn","error","log"],function(a,b){O(console,b,k)})}},R:function(){for(var a;this.t.length;){a=this.t.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},S:function(){for(var a in this.q)this.p[a]=this.q[a]},F:function(){var a=this;w(this.r,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},G:function(a){var b=Q.exec(a),c={},d=7;try{for(;d--;)c[P[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.k.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},J:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},A:function(){this.m||this.V.apply(this,arguments)},V:function(a,b){var c=this.X(a,b);this.$("handle",{stackInfo:a,options:b}),this.fa(a.name,a.message,a.url,a.lineno,c,b)},X:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(w(a.stack,function(b,e){var f=c.ga(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.u,0)}),this.j.user&&(a.user=this.j.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),a=this.pa(a),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||v(a[b]))&&delete a[b]}),s(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!v(a)&&(!s(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.ma()?void this.z("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function F(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&l(b))for(c=b.split(/\s+/),f=0;fc?Q(a,b-1):d}function R(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?X:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function S(a,b){function c(a){return m(a)?a.map(function(a){return c(a)}):k(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!m(b)||m(b)&&0===b.length)return a;var d,e=A(b),f="********";try{d=JSON.parse(T(a))}catch(g){return a}return c(d)}var T=a(9),U="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},V=3,W=51200,X=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isDOMError:g,isDOMException:h,isUndefined:i,isFunction:j,isPlainObject:k,isString:l,isArray:m,isEmptyObject:n,supportsErrorEvent:o,supportsDOMError:p,supportsDOMException:q,supportsFetch:r,supportsReferrerPolicy:s,supportsPromiseRejectionEvent:t,wrappedCallback:u,each:v,objectMerge:w,truncate:y,objectFrozen:x,hasKey:z,joinRegExp:A,urlencode:B,uuid4:D,htmlTreeAsString:E,htmlElementAsString:F,isSameException:I,isSameStacktrace:J,parseUrl:C,fill:K,safeJoin:L,serializeException:Q,serializeKeysForMessage:R,sanitize:S}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{9:9}],8:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}function e(){return"undefined"==typeof document||null==document.location?"":(document.location.origin||(document.location.origin=document.location.protocol+"//"+document.location.hostname+(document.location.port?":"+document.location.port:"")),document.location.origin)}var f=a(7),g={collectWindowErrors:!0,debug:!1},h="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},i=[].slice,j="?",k=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;g.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function e(a,b){var c=null;if(!b||g.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(i.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,h,i){var l=null,m=f.isErrorEvent(i)?i.error:i,n=f.isErrorEvent(a)?a.message:a;if(v)g.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&f.isError(m))l=g.computeStackTrace(m),e(l,!0);else{var p,r={url:b,line:c,column:h},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(k);p&&(s=p[1],n=p[2])}r.func=j,l={name:s,message:n,url:d(),stack:[r]},e(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=h.onerror,h.onerror=l,r=!0)}function n(){r&&(h.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,e.apply(null,[a,!1].concat(b))}function p(a,b){var c=i.call(arguments,1);if(v){if(u===a)return;o()}var d=g.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),g.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,f,g=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,h=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,i=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,k=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,l=/\((\S*)(?::(\d+))(?::(\d+))\)/,m=a.stack.split("\n"),n=[],o=(/^(.*) is undefined$/.exec(a.message),0),p=m.length;o eval")>-1;r&&(b=k.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==o||c[5]||"undefined"==typeof a.columnNumber||(n[0].column=a.columnNumber+1),f={url:c[3],func:c[1]||j,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}if(!f.func&&f.line&&(f.func=j),f.url&&"blob:"===f.url.substr(0,5)){var s=new XMLHttpRequest;if(s.open("GET",f.url,!1),s.send(null),200===s.status){var t=s.responseText||"";t=t.slice(-300);var u=t.match(/\/\/# sourceMappingURL=(.*)$/);if(u){var v=u[1];"~"===v.charAt(0)&&(v=e()+v.slice(1)),f.url=v.slice(0,-4)}}}n.push(f)}return n.length?{name:a.name,message:a.message,url:d(),stack:n}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=j),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,e){for(var h,i,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==f&&o!==g.report){if(i={url:null,func:j,line:null,column:null},o.name?i.func=o.name:(h=k.exec(o.toString()))&&(i.func=h[1]),"undefined"==typeof i.func)try{i.func=h.input.substring(0,h.input.indexOf("{"))}catch(p){}m[""+o]?n=!0:m[""+o]=!0,l.push(i); -}e&&l.splice(0,e);var q={name:a.name,message:a.message,url:d(),stack:l};return b(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),q}function f(b,e){var f=null;e=null==e?0:+e;try{if(f=a(b))return f}catch(h){if(g.debug)throw h}try{if(f=c(b,e+1))return f}catch(h){if(g.debug)throw h}return{name:b.name,message:b.message,url:d()}}return f.augmentStackTraceWithInitialElement=b,f.computeStackTraceFromStackProp=a,f}(),b.exports=g}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{7:7}],9:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}],10:[function(a,b,c){function d(a,b){var c=(65535&a)+(65535&b),d=(a>>16)+(b>>16)+(c>>16);return d<<16|65535&c}function e(a,b){return a<>>32-b}function f(a,b,c,f,g,h){return d(e(d(d(b,a),d(f,h)),g),c)}function g(a,b,c,d,e,g,h){return f(b&c|~b&d,a,b,e,g,h)}function h(a,b,c,d,e,g,h){return f(b&d|c&~d,a,b,e,g,h)}function i(a,b,c,d,e,g,h){return f(b^c^d,a,b,e,g,h)}function j(a,b,c,d,e,g,h){return f(c^(b|~d),a,b,e,g,h)}function k(a,b){a[b>>5]|=128<>>9<<4)+14]=b;var c,e,f,k,l,m=1732584193,n=-271733879,o=-1732584194,p=271733878;for(c=0;c>5]>>>b%32&255);return c}function m(a){var b,c=[];for(c[(a.length>>2)-1]=void 0,b=0;b>5]|=(255&a.charCodeAt(b/8))<16&&(e=k(e,8*a.length)),c=0;c<16;c+=1)f[c]=909522486^e[c],g[c]=1549556828^e[c];return d=k(f.concat(m(b)),512+8*b.length),l(k(g.concat(d),640))}function p(a){var b,c,d="0123456789abcdef",e="";for(c=0;c>>4&15)+d.charAt(15&b);return e}function q(a){return unescape(encodeURIComponent(a))}function r(a){return n(q(a))}function s(a){return p(r(a))}function t(a,b){return o(q(a),q(b))}function u(a,b){return p(t(a,b))}function v(a,b,c){return b?c?t(b,a):u(b,a):c?r(a):s(a)}b.exports=v},{}]},{},[6,1,2])(6)}); +/*! Raven.js 3.25.2 (30b6d4e) | github.com/getsentry/raven-js */ +!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.Raven=a()}}(function(){var a;return function b(a,c,d){function e(g,h){if(!c[g]){if(!a[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};a[g][0].call(k.exports,function(b){var c=a[g][1][b];return e(c?c:b)},k,k.exports,b,a,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;gthis.k.maxBreadcrumbs&&this.u.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.r.push([a,b]),this.n&&this.F(),this},setUserContext:function(a){return this.j.user=a,this},setExtraContext:function(a){return this.Z("extra",a),this},setTagsContext:function(a){return this.Z("tags",a),this},clearContext:function(){return this.j={},this},getContext:function(){return JSON.parse(h(this.j))},setEnvironment:function(a){return this.k.environment=a,this},setRelease:function(a){return this.k.release=a,this},setDataCallback:function(a){var b=this.k.dataCallback;return this.k.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.k.breadcrumbCallback;return this.k.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.k.shouldSendCallback;return this.k.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.k.transport=a,this},lastException:function(){return this.d},lastEventId:function(){return this.f},isSetup:function(){return!!this.a&&(!!this.g||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.z("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=R.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(S){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.H;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.j.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.J(this.G(c)),h=S.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(S.head||S.body).appendChild(h)}},L:function(){var a=this;this.m+=1,setTimeout(function(){a.m-=1})},$:function(a,b){var c,d;if(this.b){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),S.createEvent?(c=S.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=S.createEventObject(),c.eventType=a);for(d in b)A(b,d)&&(c[d]=b[d]);if(S.createEvent)S.dispatchEvent(c);else try{S.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},_:function(a){var b=this;return function(c){if(b.aa=null,b.v!==c){b.v=c;var d;try{d=E(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ba:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.aa;g||a._("input")(c),clearTimeout(g),a.aa=setTimeout(function(){a.aa=null},b)}}},ca:function(a,b){var c=H(this.w.href),d=H(b),e=H(a);this.x=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},C:function(){var a=this;a.da=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.M?a.da.apply(this.O,arguments):a.da.apply(this,arguments)}},Q:function(){this.da&&(Function.prototype.toString=this.da)},D:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.ca(b.x,c+""),a.apply(this,arguments)}};I(R.history,"pushState",j,d),I(R.history,"replaceState",j,d)}if(c.console&&"console"in R&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};w(["debug","info","warn","error","log"],function(a,b){O(console,b,k)})}},R:function(){for(var a;this.t.length;){a=this.t.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},S:function(){for(var a in this.q)this.p[a]=this.q[a]},F:function(){var a=this;w(this.r,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},G:function(a){var b=Q.exec(a),c={},d=7;try{for(;d--;)c[P[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.k.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},J:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},A:function(){this.m||this.V.apply(this,arguments)},V:function(a,b){var c=this.X(a,b);this.$("handle",{stackInfo:a,options:b}),this.fa(a.name,a.message,a.url,a.lineno,c,b)},X:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(w(a.stack,function(b,e){var f=c.ga(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.u,0)}),this.j.user&&(a.user=this.j.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),a=this.pa(a),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||v(a[b]))&&delete a[b]}),s(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!v(a)&&(!s(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.ma()?void this.z("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function F(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&l(b))for(c=b.split(/\s+/),f=0;fc?Q(a,b-1):d}function R(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?X:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function S(a,b){function c(a){return m(a)?a.map(function(a){return c(a)}):k(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!m(b)||m(b)&&0===b.length)return a;var d,e=A(b),f="********";try{d=JSON.parse(T(a))}catch(g){return a}return c(d)}var T=a(9),U="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},V=3,W=51200,X=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isDOMError:g,isDOMException:h,isUndefined:i,isFunction:j,isPlainObject:k,isString:l,isArray:m,isEmptyObject:n,supportsErrorEvent:o,supportsDOMError:p,supportsDOMException:q,supportsFetch:r,supportsReferrerPolicy:s,supportsPromiseRejectionEvent:t,wrappedCallback:u,each:v,objectMerge:w,truncate:y,objectFrozen:x,hasKey:z,joinRegExp:A,urlencode:B,uuid4:D,htmlTreeAsString:E,htmlElementAsString:F,isSameException:I,isSameStacktrace:J,parseUrl:C,fill:K,safeJoin:L,serializeException:Q,serializeKeysForMessage:R,sanitize:S}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{9:9}],8:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}function e(){return"undefined"==typeof document||null==document.location?"":(document.location.origin||(document.location.origin=document.location.protocol+"//"+document.location.hostname+(document.location.port?":"+document.location.port:"")),document.location.origin)}var f=a(7),g={collectWindowErrors:!0,debug:!1},h="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},i=[].slice,j="?",k=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;g.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function e(a,b){var c=null;if(!b||g.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(i.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,h,i){var l=null,m=f.isErrorEvent(i)?i.error:i,n=f.isErrorEvent(a)?a.message:a;if(v)g.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&f.isError(m))l=g.computeStackTrace(m),e(l,!0);else{var p,r={url:b,line:c,column:h},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(k);p&&(s=p[1],n=p[2])}r.func=j,l={name:s,message:n,url:d(),stack:[r]},e(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=h.onerror,h.onerror=l,r=!0)}function n(){r&&(h.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,e.apply(null,[a,!1].concat(b))}function p(a,b){var c=i.call(arguments,1);if(v){if(u===a)return;o()}var d=g.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),g.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,f,g=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,h=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,i=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,k=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,l=/\((\S*)(?::(\d+))(?::(\d+))\)/,m=a.stack.split("\n"),n=[],o=(/^(.*) is undefined$/.exec(a.message),0),p=m.length;o eval")>-1;r&&(b=k.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==o||c[5]||"undefined"==typeof a.columnNumber||(n[0].column=a.columnNumber+1),f={url:c[3],func:c[1]||j,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}if(!f.func&&f.line&&(f.func=j),f.url&&"blob:"===f.url.substr(0,5)){var s=new XMLHttpRequest;if(s.open("GET",f.url,!1),s.send(null),200===s.status){var t=s.responseText||"";t=t.slice(-300);var u=t.match(/\/\/# sourceMappingURL=(.*)$/);if(u){var v=u[1];"~"===v.charAt(0)&&(v=e()+v.slice(1)),f.url=v.slice(0,-4)}}}n.push(f)}return n.length?{name:a.name,message:a.message,url:d(),stack:n}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=j),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,e){for(var h,i,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==f&&o!==g.report){if(i={url:null,func:j,line:null,column:null},o.name?i.func=o.name:(h=k.exec(o.toString()))&&(i.func=h[1]),"undefined"==typeof i.func)try{i.func=h.input.substring(0,h.input.indexOf("{"))}catch(p){}m[""+o]?n=!0:m[""+o]=!0, +l.push(i)}e&&l.splice(0,e);var q={name:a.name,message:a.message,url:d(),stack:l};return b(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),q}function f(b,e){var f=null;e=null==e?0:+e;try{if(f=a(b))return f}catch(h){if(g.debug)throw h}try{if(f=c(b,e+1))return f}catch(h){if(g.debug)throw h}return{name:b.name,message:b.message,url:d()}}return f.augmentStackTraceWithInitialElement=b,f.computeStackTraceFromStackProp=a,f}(),b.exports=g}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{7:7}],9:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}],10:[function(a,b,c){function d(a,b){var c=(65535&a)+(65535&b),d=(a>>16)+(b>>16)+(c>>16);return d<<16|65535&c}function e(a,b){return a<>>32-b}function f(a,b,c,f,g,h){return d(e(d(d(b,a),d(f,h)),g),c)}function g(a,b,c,d,e,g,h){return f(b&c|~b&d,a,b,e,g,h)}function h(a,b,c,d,e,g,h){return f(b&d|c&~d,a,b,e,g,h)}function i(a,b,c,d,e,g,h){return f(b^c^d,a,b,e,g,h)}function j(a,b,c,d,e,g,h){return f(c^(b|~d),a,b,e,g,h)}function k(a,b){a[b>>5]|=128<>>9<<4)+14]=b;var c,e,f,k,l,m=1732584193,n=-271733879,o=-1732584194,p=271733878;for(c=0;c>5]>>>b%32&255);return c}function m(a){var b,c=[];for(c[(a.length>>2)-1]=void 0,b=0;b>5]|=(255&a.charCodeAt(b/8))<16&&(e=k(e,8*a.length)),c=0;c<16;c+=1)f[c]=909522486^e[c],g[c]=1549556828^e[c];return d=k(f.concat(m(b)),512+8*b.length),l(k(g.concat(d),640))}function p(a){var b,c,d="0123456789abcdef",e="";for(c=0;c>>4&15)+d.charAt(15&b);return e}function q(a){return unescape(encodeURIComponent(a))}function r(a){return n(q(a))}function s(a){return p(r(a))}function t(a,b){return o(q(a),q(b))}function u(a,b){return p(t(a,b))}function v(a,b,c){return b?c?t(b,a):u(b,a):c?r(a):s(a)}b.exports=v},{}]},{},[6,1,2])(6)}); //# sourceMappingURL=raven.min.js.map \ No newline at end of file diff --git a/dist/console,require/raven.min.js.map b/dist/console,require/raven.min.js.map index 5f10bdc5eede..438da4049557 100644 --- a/dist/console,require/raven.min.js.map +++ b/dist/console,require/raven.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","consolePlugin","console","pluginOptions","logLevels","levels","push","callback","msg","data","captureMessage","level","pop","wrapConsoleMethod","wrapMethod","addPlugin","4","6","2","requirePlugin","wrap","deep","3","RavenConfigError","message","name","prototype","constructor","utils","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","safeJoin","logger","extra","Function","apply","7","5","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","sanitizeKeys","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isErrorEvent","isDOMError","isDOMException","isError","isObject","isPlainObject","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","sanitize","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","config","dsn","options","_logDebug","globalOptions","key","value","setDSN","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","toString","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","substr","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","context","func","undefined","_before","wrapped","_ignoreNextOnError","captureException","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","T","event","reason","unhandledPromiseRejection","B","_promiseRejectionHandler","bind","addEventListener","P","removeEventListener","ex","trimHeadFrames","error","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","U","currentOptions","exKeys","Object","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","setDataCallback","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","L","setTimeout","$","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","_","evtName","_keypressTimeout","target","category","ba","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","ca","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","C","_originalFunctionToString","Q","D","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","type","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","E","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","R","builtin","S","F","installer","concat","G","str","m","exec","allowSecretKey","J","port","A","V","stackInfo","_triggerEvent","_processException","lineno","X","frame","_normalizeFrame","in_app","ga","stackInfoUrl","normalized","filename","line","colno","column","function","fa","prefixedMessage","exception","values","culprit","ha","request","Referer","breadcrumbs","_trimBreadcrumbs","ia","urlProp","urlProps","ja","httpData","userAgent","User-Agent","referrer","y","_backoffDuration","_backoffStart","ma","na","current","last","oa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Y","baseData","project","platform","_getHttpData","serverName","server_name","_sanitizeData","forEach","random","_sendProcessedPayload","pa","ra","qa","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","sa","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","onerror","open","setRequestHeader","send","ta","hash","evaluated","z","Z","setUser","setReleaseContext","10","8","9","RavenConstructor","_Raven","noConflict","Client","what","supportsErrorEvent","ErrorEvent","supportsDOMError","DOMError","supportsDOMException","DOMException","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","wrappedCallback","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","sanitizeMask","safeInput","o_O","getLocationHref","getLocationOrigin","origin","hostname","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","responseText","sourceMaps","sourceMapAddress","charAt","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","string","raw"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file +{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","consolePlugin","console","pluginOptions","logLevels","levels","push","callback","msg","data","captureMessage","level","pop","wrapConsoleMethod","wrapMethod","addPlugin","4","6","2","requirePlugin","wrap","deep","3","RavenConfigError","message","name","prototype","constructor","utils","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","safeJoin","logger","extra","Function","apply","7","5","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","sanitizeKeys","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isErrorEvent","isDOMError","isDOMException","isError","isObject","isPlainObject","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","sanitize","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","config","dsn","options","_logDebug","globalOptions","key","value","setDSN","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","toString","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","substr","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","context","func","undefined","_before","wrapped","_ignoreNextOnError","captureException","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","T","event","reason","unhandledPromiseRejection","B","_promiseRejectionHandler","bind","addEventListener","P","removeEventListener","ex","trimHeadFrames","error","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","U","currentOptions","exKeys","Object","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","setDataCallback","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","L","setTimeout","$","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","_","evtName","_keypressTimeout","target","category","ba","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","ca","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","C","_originalFunctionToString","Q","D","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","type","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","E","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","R","builtin","S","F","installer","concat","G","str","m","exec","allowSecretKey","J","port","A","V","stackInfo","_triggerEvent","_processException","lineno","X","frame","_normalizeFrame","in_app","ga","stackInfoUrl","normalized","filename","line","colno","column","function","fa","prefixedMessage","exception","values","transaction","ha","request","Referer","breadcrumbs","_trimBreadcrumbs","ia","urlProp","urlProps","ja","httpData","userAgent","User-Agent","referrer","y","_backoffDuration","_backoffStart","ma","na","current","last","oa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Y","baseData","project","platform","_getHttpData","serverName","server_name","_sanitizeData","forEach","random","_sendProcessedPayload","pa","ra","qa","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","sa","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","onerror","open","setRequestHeader","send","ta","hash","evaluated","z","Z","setUser","setReleaseContext","10","8","9","RavenConstructor","_Raven","noConflict","Client","what","supportsErrorEvent","ErrorEvent","supportsDOMError","DOMError","supportsDOMException","DOMException","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","wrappedCallback","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","sanitizeMask","safeInput","o_O","getLocationHref","getLocationOrigin","origin","hostname","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","responseText","sourceMaps","sourceMapAddress","charAt","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","string","raw"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file diff --git a/dist/console,vue/raven.js b/dist/console,vue/raven.js index fa0c5afb1555..07f4d013eb5d 100644 --- a/dist/console,vue/raven.js +++ b/dist/console,vue/raven.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.25.1 (b6f3c7a) | github.com/getsentry/raven-js */ +/*! Raven.js 3.25.2 (30b6d4e) | github.com/getsentry/raven-js */ /* * Includes TraceKit @@ -202,7 +202,11 @@ function now() { var _window = typeof window !== 'undefined' ? window - : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; + : typeof global !== 'undefined' + ? global + : typeof self !== 'undefined' + ? self + : {}; var _document = _window.document; var _navigator = _window.navigator; @@ -292,7 +296,7 @@ Raven.prototype = { // webpack (using a build step causes webpack #1617). Grunt verifies that // this value matches package.json during build. // See: https://github.com/getsentry/raven-js/issues/465 - VERSION: '3.25.1', + VERSION: '3.25.2', debug: false, @@ -1848,7 +1852,7 @@ Raven.prototype = { } ] }, - culprit: fileurl + transaction: fileurl }, options ); @@ -1963,7 +1967,7 @@ Raven.prototype = { if ( !last || current.message !== last.message || // defined for captureMessage - current.culprit !== last.culprit // defined for captureException/onerror + current.transaction !== last.transaction // defined for captureException/onerror ) return false; diff --git a/dist/console,vue/raven.min.js b/dist/console,vue/raven.min.js index 8bab3ef743f6..3a5580e45984 100644 --- a/dist/console,vue/raven.min.js +++ b/dist/console,vue/raven.min.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.25.1 (b6f3c7a) | github.com/getsentry/raven-js */ -!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.Raven=a()}}(function(){return function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};b[g][0].call(k.exports,function(a){var c=b[g][1][a];return e(c?c:a)},k,k.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;g":"anonymous component")+(a._isVue&&a.$options.__file?" at "+a.$options.__file:"")}function e(a,b){if(b=b||window.Vue,b&&b.config){var c=b.config.errorHandler;b.config.errorHandler=function(b,e,f){var g={};"[object Object]"===Object.prototype.toString.call(e)&&(g.componentName=d(e),g.propsData=e.$options.propsData),"undefined"!=typeof f&&(g.lifecycleHook=f),a.captureException(b,{extra:g}),"function"==typeof c&&c.call(this,b,e,f)}}}b.exports=e,a(6).addPlugin(b.exports)},{6:6}],3:[function(a,b,c){function d(a){this.name="RavenConfigError",this.message=a}d.prototype=new Error,d.prototype.constructor=d,b.exports=d},{}],4:[function(a,b,c){var d=a(7),e=function(a,b,c){var e=a[b],f=a;if(b in a){var g="warn"===b?"warning":b;a[b]=function(){var a=[].slice.call(arguments),h=d.safeJoin(a," "),i={level:g,logger:"console",extra:{arguments:a}};"assert"===b?a[0]===!1&&(h="Assertion failed: "+(d.safeJoin(a.slice(1)," ")||"console.assert"),i.extra.arguments=a.slice(1),c&&c(h,i)):c&&c(h,i),e&&Function.prototype.apply.call(e,f,a)}}};b.exports={wrapMethod:e}},{7:7}],5:[function(a,b,c){(function(c){function d(){return+new Date}function e(a,b){return s(b)?function(c){return b(c,a)}:b}function f(){this.a=!("object"!=typeof JSON||!JSON.stringify),this.b=!r(S),this.c=!r(T),this.d=null,this.e=null,this.f=null,this.g=null,this.h=null,this.i=null,this.j={},this.k={release:R.SENTRY_RELEASE&&R.SENTRY_RELEASE.id,logger:"javascript",ignoreErrors:[],ignoreUrls:[],whitelistUrls:[],includePaths:[],headers:null,collectWindowErrors:!0,captureUnhandledRejections:!0,maxMessageLength:0,maxUrlLength:250,stackTraceLimit:50,autoBreadcrumbs:!0,instrument:!0,sampleRate:1,sanitizeKeys:[]},this.l={method:"POST",keepalive:!0,referrerPolicy:K()?"origin":""},this.m=0,this.n=!1,this.o=Error.stackTraceLimit,this.p=R.console||{},this.q={},this.r=[],this.s=d(),this.t=[],this.u=[],this.v=null,this.w=R.location,this.x=this.w&&this.w.href,this.y();for(var a in this.p)this.q[a]=this.p[a]}var g=a(8),h=a(9),i=a(10),j=a(3),k=a(7),l=k.isErrorEvent,m=k.isDOMError,n=k.isDOMException,o=k.isError,p=k.isObject,q=k.isPlainObject,r=k.isUndefined,s=k.isFunction,t=k.isString,u=k.isArray,v=k.isEmptyObject,w=k.each,x=k.objectMerge,y=k.truncate,z=k.objectFrozen,A=k.hasKey,B=k.joinRegExp,C=k.urlencode,D=k.uuid4,E=k.htmlTreeAsString,F=k.isSameException,G=k.isSameStacktrace,H=k.parseUrl,I=k.fill,J=k.supportsFetch,K=k.supportsReferrerPolicy,L=k.serializeKeysForMessage,M=k.serializeException,N=k.sanitize,O=a(4).wrapMethod,P="source protocol user pass host port path".split(" "),Q=/^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/,R="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},S=R.document,T=R.navigator;f.prototype={VERSION:"3.25.1",debug:!1,TraceKit:g,config:function(a,b){var c=this;if(c.g)return this.z("error","Error: Raven has already been configured"),c;if(!a)return c;var d=c.k;b&&w(b,function(a,b){"tags"===a||"extra"===a||"user"===a?c.j[a]=b:d[a]=b}),c.setDSN(a),d.ignoreErrors.push(/^Script error\.?$/),d.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/),d.ignoreErrors=B(d.ignoreErrors),d.ignoreUrls=!!d.ignoreUrls.length&&B(d.ignoreUrls),d.whitelistUrls=!!d.whitelistUrls.length&&B(d.whitelistUrls),d.includePaths=B(d.includePaths),d.maxBreadcrumbs=Math.max(0,Math.min(d.maxBreadcrumbs||100,100));var e={xhr:!0,console:!0,dom:!0,location:!0,sentry:!0},f=d.autoBreadcrumbs;"[object Object]"==={}.toString.call(f)?f=x(e,f):f!==!1&&(f=e),d.autoBreadcrumbs=f;var h={tryCatch:!0},i=d.instrument;return"[object Object]"==={}.toString.call(i)?i=x(h,i):i!==!1&&(i=h),d.instrument=i,g.collectWindowErrors=!!d.collectWindowErrors,c},install:function(){var a=this;return a.isSetup()&&!a.n&&(g.report.subscribe(function(){a.A.apply(a,arguments)}),a.k.captureUnhandledRejections&&a.B(),a.C(),a.k.instrument&&a.k.instrument.tryCatch&&a.D(),a.k.autoBreadcrumbs&&a.E(),a.F(),a.n=!0),Error.stackTraceLimit=a.k.stackTraceLimit,this},setDSN:function(a){var b=this,c=b.G(a),d=c.path.lastIndexOf("/"),e=c.path.substr(1,d);b.H=a,b.h=c.user,b.I=c.pass&&c.pass.substr(1),b.i=c.path.substr(d+1),b.g=b.J(c),b.K=b.g+"/"+e+"api/"+b.i+"/store/",this.y()},context:function(a,b,c){return s(a)&&(c=b||[],b=a,a=void 0),this.wrap(a,b).apply(this,c)},wrap:function(a,b,c){function d(){var d=[],f=arguments.length,g=!a||a&&a.deep!==!1;for(c&&s(c)&&c.apply(this,arguments);f--;)d[f]=g?e.wrap(a,arguments[f]):arguments[f];try{return b.apply(this,d)}catch(h){throw e.L(),e.captureException(h,a),h}}var e=this;if(r(b)&&!s(a))return a;if(s(a)&&(b=a,a=void 0),!s(b))return b;try{if(b.M)return b;if(b.N)return b.N}catch(f){return b}for(var g in b)A(b,g)&&(d[g]=b[g]);return d.prototype=b.prototype,b.N=d,d.M=!0,d.O=b,d},uninstall:function(){return g.report.uninstall(),this.P(),this.Q(),this.R(),this.S(),Error.stackTraceLimit=this.o,this.n=!1,this},T:function(a){this.z("debug","Raven caught unhandled promise rejection:",a),this.captureException(a.reason,{extra:{unhandledPromiseRejection:!0}})},B:function(){return this.T=this.T.bind(this),R.addEventListener&&R.addEventListener("unhandledrejection",this.T),this},P:function(){return R.removeEventListener&&R.removeEventListener("unhandledrejection",this.T),this},captureException:function(a,b){if(b=x({trimHeadFrames:0},b?b:{}),l(a)&&a.error)a=a.error;else{if(m(a)||n(a)){var c=a.name||(m(a)?"DOMError":"DOMException"),d=a.message?c+": "+a.message:c;return this.captureMessage(d,x(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}))}if(o(a))a=a;else{if(!q(a))return this.captureMessage(a,x(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}));b=this.U(b,a),a=new Error(b.message)}}this.d=a;try{var e=g.computeStackTrace(a);this.V(e,b)}catch(f){if(a!==f)throw f}return this},U:function(a,b){var c=Object.keys(b).sort(),d=x(a,{message:"Non-Error exception captured with keys: "+L(c),fingerprint:[i(c)],extra:a.extra||{}});return d.extra.W=M(b),d},captureMessage:function(a,b){if(!this.k.ignoreErrors.test||!this.k.ignoreErrors.test(a)){b=b||{},a+="";var c,d=x({message:a},b);try{throw new Error(a)}catch(e){c=e}c.name=null;var f=g.computeStackTrace(c),h=u(f.stack)&&f.stack[1];h&&"Raven.captureException"===h.func&&(h=f.stack[2]);var i=h&&h.url||"";if((!this.k.ignoreUrls.test||!this.k.ignoreUrls.test(i))&&(!this.k.whitelistUrls.test||this.k.whitelistUrls.test(i))){if(this.k.stacktrace||b&&b.stacktrace){d.fingerprint=null==d.fingerprint?a:d.fingerprint,b=x({trimHeadFrames:0},b),b.trimHeadFrames+=1;var j=this.X(f,b);d.stacktrace={frames:j.reverse()}}return d.fingerprint&&(d.fingerprint=u(d.fingerprint)?d.fingerprint:[d.fingerprint]),this.Y(d),this}}},captureBreadcrumb:function(a){var b=x({timestamp:d()/1e3},a);if(s(this.k.breadcrumbCallback)){var c=this.k.breadcrumbCallback(b);if(p(c)&&!v(c))b=c;else if(c===!1)return this}return this.u.push(b),this.u.length>this.k.maxBreadcrumbs&&this.u.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.r.push([a,b]),this.n&&this.F(),this},setUserContext:function(a){return this.j.user=a,this},setExtraContext:function(a){return this.Z("extra",a),this},setTagsContext:function(a){return this.Z("tags",a),this},clearContext:function(){return this.j={},this},getContext:function(){return JSON.parse(h(this.j))},setEnvironment:function(a){return this.k.environment=a,this},setRelease:function(a){return this.k.release=a,this},setDataCallback:function(a){var b=this.k.dataCallback;return this.k.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.k.breadcrumbCallback;return this.k.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.k.shouldSendCallback;return this.k.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.k.transport=a,this},lastException:function(){return this.d},lastEventId:function(){return this.f},isSetup:function(){return!!this.a&&(!!this.g||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.z("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=R.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(S){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.H;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.j.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.J(this.G(c)),h=S.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(S.head||S.body).appendChild(h)}},L:function(){var a=this;this.m+=1,setTimeout(function(){a.m-=1})},$:function(a,b){var c,d;if(this.b){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),S.createEvent?(c=S.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=S.createEventObject(),c.eventType=a);for(d in b)A(b,d)&&(c[d]=b[d]);if(S.createEvent)S.dispatchEvent(c);else try{S.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},_:function(a){var b=this;return function(c){if(b.aa=null,b.v!==c){b.v=c;var d;try{d=E(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ba:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.aa;g||a._("input")(c),clearTimeout(g),a.aa=setTimeout(function(){a.aa=null},b)}}},ca:function(a,b){var c=H(this.w.href),d=H(b),e=H(a);this.x=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},C:function(){var a=this;a.da=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.M?a.da.apply(this.O,arguments):a.da.apply(this,arguments)}},Q:function(){this.da&&(Function.prototype.toString=this.da)},D:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.ca(b.x,c+""),a.apply(this,arguments)}};I(R.history,"pushState",j,d),I(R.history,"replaceState",j,d)}if(c.console&&"console"in R&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};w(["debug","info","warn","error","log"],function(a,b){O(console,b,k)})}},R:function(){for(var a;this.t.length;){a=this.t.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},S:function(){for(var a in this.q)this.p[a]=this.q[a]},F:function(){var a=this;w(this.r,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},G:function(a){var b=Q.exec(a),c={},d=7;try{for(;d--;)c[P[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.k.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},J:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},A:function(){this.m||this.V.apply(this,arguments)},V:function(a,b){var c=this.X(a,b);this.$("handle",{stackInfo:a,options:b}),this.fa(a.name,a.message,a.url,a.lineno,c,b)},X:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(w(a.stack,function(b,e){var f=c.ga(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.u,0)}),this.j.user&&(a.user=this.j.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),a=this.pa(a),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||v(a[b]))&&delete a[b]}),s(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!v(a)&&(!s(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.ma()?void this.z("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function F(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&l(b))for(c=b.split(/\s+/),f=0;fc?Q(a,b-1):d}function R(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?X:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function S(a,b){function c(a){return m(a)?a.map(function(a){return c(a)}):k(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!m(b)||m(b)&&0===b.length)return a;var d,e=A(b),f="********";try{d=JSON.parse(T(a))}catch(g){return a}return c(d)}var T=a(9),U="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},V=3,W=51200,X=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isDOMError:g,isDOMException:h,isUndefined:i,isFunction:j,isPlainObject:k,isString:l,isArray:m,isEmptyObject:n,supportsErrorEvent:o,supportsDOMError:p,supportsDOMException:q,supportsFetch:r,supportsReferrerPolicy:s,supportsPromiseRejectionEvent:t,wrappedCallback:u,each:v,objectMerge:w,truncate:y,objectFrozen:x,hasKey:z,joinRegExp:A,urlencode:B,uuid4:D,htmlTreeAsString:E,htmlElementAsString:F,isSameException:I,isSameStacktrace:J,parseUrl:C,fill:K,safeJoin:L,serializeException:Q,serializeKeysForMessage:R,sanitize:S}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{9:9}],8:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}function e(){return"undefined"==typeof document||null==document.location?"":(document.location.origin||(document.location.origin=document.location.protocol+"//"+document.location.hostname+(document.location.port?":"+document.location.port:"")),document.location.origin)}var f=a(7),g={collectWindowErrors:!0,debug:!1},h="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},i=[].slice,j="?",k=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;g.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function e(a,b){var c=null;if(!b||g.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(i.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,h,i){var l=null,m=f.isErrorEvent(i)?i.error:i,n=f.isErrorEvent(a)?a.message:a;if(v)g.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&f.isError(m))l=g.computeStackTrace(m),e(l,!0);else{var p,r={url:b,line:c,column:h},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(k);p&&(s=p[1],n=p[2])}r.func=j,l={name:s,message:n,url:d(),stack:[r]},e(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=h.onerror,h.onerror=l,r=!0)}function n(){r&&(h.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,e.apply(null,[a,!1].concat(b))}function p(a,b){var c=i.call(arguments,1);if(v){if(u===a)return;o()}var d=g.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),g.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,f,g=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,h=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,i=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,k=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,l=/\((\S*)(?::(\d+))(?::(\d+))\)/,m=a.stack.split("\n"),n=[],o=(/^(.*) is undefined$/.exec(a.message),0),p=m.length;o eval")>-1;r&&(b=k.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==o||c[5]||"undefined"==typeof a.columnNumber||(n[0].column=a.columnNumber+1),f={url:c[3],func:c[1]||j,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}if(!f.func&&f.line&&(f.func=j),f.url&&"blob:"===f.url.substr(0,5)){var s=new XMLHttpRequest;if(s.open("GET",f.url,!1),s.send(null),200===s.status){var t=s.responseText||"";t=t.slice(-300);var u=t.match(/\/\/# sourceMappingURL=(.*)$/);if(u){var v=u[1];"~"===v.charAt(0)&&(v=e()+v.slice(1)),f.url=v.slice(0,-4)}}}n.push(f)}return n.length?{name:a.name,message:a.message,url:d(),stack:n}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=j),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e), -a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,e){for(var h,i,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==f&&o!==g.report){if(i={url:null,func:j,line:null,column:null},o.name?i.func=o.name:(h=k.exec(o.toString()))&&(i.func=h[1]),"undefined"==typeof i.func)try{i.func=h.input.substring(0,h.input.indexOf("{"))}catch(p){}m[""+o]?n=!0:m[""+o]=!0,l.push(i)}e&&l.splice(0,e);var q={name:a.name,message:a.message,url:d(),stack:l};return b(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),q}function f(b,e){var f=null;e=null==e?0:+e;try{if(f=a(b))return f}catch(h){if(g.debug)throw h}try{if(f=c(b,e+1))return f}catch(h){if(g.debug)throw h}return{name:b.name,message:b.message,url:d()}}return f.augmentStackTraceWithInitialElement=b,f.computeStackTraceFromStackProp=a,f}(),b.exports=g}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{7:7}],9:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}],10:[function(a,b,c){function d(a,b){var c=(65535&a)+(65535&b),d=(a>>16)+(b>>16)+(c>>16);return d<<16|65535&c}function e(a,b){return a<>>32-b}function f(a,b,c,f,g,h){return d(e(d(d(b,a),d(f,h)),g),c)}function g(a,b,c,d,e,g,h){return f(b&c|~b&d,a,b,e,g,h)}function h(a,b,c,d,e,g,h){return f(b&d|c&~d,a,b,e,g,h)}function i(a,b,c,d,e,g,h){return f(b^c^d,a,b,e,g,h)}function j(a,b,c,d,e,g,h){return f(c^(b|~d),a,b,e,g,h)}function k(a,b){a[b>>5]|=128<>>9<<4)+14]=b;var c,e,f,k,l,m=1732584193,n=-271733879,o=-1732584194,p=271733878;for(c=0;c>5]>>>b%32&255);return c}function m(a){var b,c=[];for(c[(a.length>>2)-1]=void 0,b=0;b>5]|=(255&a.charCodeAt(b/8))<16&&(e=k(e,8*a.length)),c=0;c<16;c+=1)f[c]=909522486^e[c],g[c]=1549556828^e[c];return d=k(f.concat(m(b)),512+8*b.length),l(k(g.concat(d),640))}function p(a){var b,c,d="0123456789abcdef",e="";for(c=0;c>>4&15)+d.charAt(15&b);return e}function q(a){return unescape(encodeURIComponent(a))}function r(a){return n(q(a))}function s(a){return p(r(a))}function t(a,b){return o(q(a),q(b))}function u(a,b){return p(t(a,b))}function v(a,b,c){return b?c?t(b,a):u(b,a):c?r(a):s(a)}b.exports=v},{}]},{},[6,1,2])(6)}); +/*! Raven.js 3.25.2 (30b6d4e) | github.com/getsentry/raven-js */ +!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.Raven=a()}}(function(){return function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};b[g][0].call(k.exports,function(a){var c=b[g][1][a];return e(c?c:a)},k,k.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;g":"anonymous component")+(a._isVue&&a.$options.__file?" at "+a.$options.__file:"")}function e(a,b){if(b=b||window.Vue,b&&b.config){var c=b.config.errorHandler;b.config.errorHandler=function(b,e,f){var g={};"[object Object]"===Object.prototype.toString.call(e)&&(g.componentName=d(e),g.propsData=e.$options.propsData),"undefined"!=typeof f&&(g.lifecycleHook=f),a.captureException(b,{extra:g}),"function"==typeof c&&c.call(this,b,e,f)}}}b.exports=e,a(6).addPlugin(b.exports)},{6:6}],3:[function(a,b,c){function d(a){this.name="RavenConfigError",this.message=a}d.prototype=new Error,d.prototype.constructor=d,b.exports=d},{}],4:[function(a,b,c){var d=a(7),e=function(a,b,c){var e=a[b],f=a;if(b in a){var g="warn"===b?"warning":b;a[b]=function(){var a=[].slice.call(arguments),h=d.safeJoin(a," "),i={level:g,logger:"console",extra:{arguments:a}};"assert"===b?a[0]===!1&&(h="Assertion failed: "+(d.safeJoin(a.slice(1)," ")||"console.assert"),i.extra.arguments=a.slice(1),c&&c(h,i)):c&&c(h,i),e&&Function.prototype.apply.call(e,f,a)}}};b.exports={wrapMethod:e}},{7:7}],5:[function(a,b,c){(function(c){function d(){return+new Date}function e(a,b){return s(b)?function(c){return b(c,a)}:b}function f(){this.a=!("object"!=typeof JSON||!JSON.stringify),this.b=!r(S),this.c=!r(T),this.d=null,this.e=null,this.f=null,this.g=null,this.h=null,this.i=null,this.j={},this.k={release:R.SENTRY_RELEASE&&R.SENTRY_RELEASE.id,logger:"javascript",ignoreErrors:[],ignoreUrls:[],whitelistUrls:[],includePaths:[],headers:null,collectWindowErrors:!0,captureUnhandledRejections:!0,maxMessageLength:0,maxUrlLength:250,stackTraceLimit:50,autoBreadcrumbs:!0,instrument:!0,sampleRate:1,sanitizeKeys:[]},this.l={method:"POST",keepalive:!0,referrerPolicy:K()?"origin":""},this.m=0,this.n=!1,this.o=Error.stackTraceLimit,this.p=R.console||{},this.q={},this.r=[],this.s=d(),this.t=[],this.u=[],this.v=null,this.w=R.location,this.x=this.w&&this.w.href,this.y();for(var a in this.p)this.q[a]=this.p[a]}var g=a(8),h=a(9),i=a(10),j=a(3),k=a(7),l=k.isErrorEvent,m=k.isDOMError,n=k.isDOMException,o=k.isError,p=k.isObject,q=k.isPlainObject,r=k.isUndefined,s=k.isFunction,t=k.isString,u=k.isArray,v=k.isEmptyObject,w=k.each,x=k.objectMerge,y=k.truncate,z=k.objectFrozen,A=k.hasKey,B=k.joinRegExp,C=k.urlencode,D=k.uuid4,E=k.htmlTreeAsString,F=k.isSameException,G=k.isSameStacktrace,H=k.parseUrl,I=k.fill,J=k.supportsFetch,K=k.supportsReferrerPolicy,L=k.serializeKeysForMessage,M=k.serializeException,N=k.sanitize,O=a(4).wrapMethod,P="source protocol user pass host port path".split(" "),Q=/^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/,R="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},S=R.document,T=R.navigator;f.prototype={VERSION:"3.25.2",debug:!1,TraceKit:g,config:function(a,b){var c=this;if(c.g)return this.z("error","Error: Raven has already been configured"),c;if(!a)return c;var d=c.k;b&&w(b,function(a,b){"tags"===a||"extra"===a||"user"===a?c.j[a]=b:d[a]=b}),c.setDSN(a),d.ignoreErrors.push(/^Script error\.?$/),d.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/),d.ignoreErrors=B(d.ignoreErrors),d.ignoreUrls=!!d.ignoreUrls.length&&B(d.ignoreUrls),d.whitelistUrls=!!d.whitelistUrls.length&&B(d.whitelistUrls),d.includePaths=B(d.includePaths),d.maxBreadcrumbs=Math.max(0,Math.min(d.maxBreadcrumbs||100,100));var e={xhr:!0,console:!0,dom:!0,location:!0,sentry:!0},f=d.autoBreadcrumbs;"[object Object]"==={}.toString.call(f)?f=x(e,f):f!==!1&&(f=e),d.autoBreadcrumbs=f;var h={tryCatch:!0},i=d.instrument;return"[object Object]"==={}.toString.call(i)?i=x(h,i):i!==!1&&(i=h),d.instrument=i,g.collectWindowErrors=!!d.collectWindowErrors,c},install:function(){var a=this;return a.isSetup()&&!a.n&&(g.report.subscribe(function(){a.A.apply(a,arguments)}),a.k.captureUnhandledRejections&&a.B(),a.C(),a.k.instrument&&a.k.instrument.tryCatch&&a.D(),a.k.autoBreadcrumbs&&a.E(),a.F(),a.n=!0),Error.stackTraceLimit=a.k.stackTraceLimit,this},setDSN:function(a){var b=this,c=b.G(a),d=c.path.lastIndexOf("/"),e=c.path.substr(1,d);b.H=a,b.h=c.user,b.I=c.pass&&c.pass.substr(1),b.i=c.path.substr(d+1),b.g=b.J(c),b.K=b.g+"/"+e+"api/"+b.i+"/store/",this.y()},context:function(a,b,c){return s(a)&&(c=b||[],b=a,a=void 0),this.wrap(a,b).apply(this,c)},wrap:function(a,b,c){function d(){var d=[],f=arguments.length,g=!a||a&&a.deep!==!1;for(c&&s(c)&&c.apply(this,arguments);f--;)d[f]=g?e.wrap(a,arguments[f]):arguments[f];try{return b.apply(this,d)}catch(h){throw e.L(),e.captureException(h,a),h}}var e=this;if(r(b)&&!s(a))return a;if(s(a)&&(b=a,a=void 0),!s(b))return b;try{if(b.M)return b;if(b.N)return b.N}catch(f){return b}for(var g in b)A(b,g)&&(d[g]=b[g]);return d.prototype=b.prototype,b.N=d,d.M=!0,d.O=b,d},uninstall:function(){return g.report.uninstall(),this.P(),this.Q(),this.R(),this.S(),Error.stackTraceLimit=this.o,this.n=!1,this},T:function(a){this.z("debug","Raven caught unhandled promise rejection:",a),this.captureException(a.reason,{extra:{unhandledPromiseRejection:!0}})},B:function(){return this.T=this.T.bind(this),R.addEventListener&&R.addEventListener("unhandledrejection",this.T),this},P:function(){return R.removeEventListener&&R.removeEventListener("unhandledrejection",this.T),this},captureException:function(a,b){if(b=x({trimHeadFrames:0},b?b:{}),l(a)&&a.error)a=a.error;else{if(m(a)||n(a)){var c=a.name||(m(a)?"DOMError":"DOMException"),d=a.message?c+": "+a.message:c;return this.captureMessage(d,x(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}))}if(o(a))a=a;else{if(!q(a))return this.captureMessage(a,x(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}));b=this.U(b,a),a=new Error(b.message)}}this.d=a;try{var e=g.computeStackTrace(a);this.V(e,b)}catch(f){if(a!==f)throw f}return this},U:function(a,b){var c=Object.keys(b).sort(),d=x(a,{message:"Non-Error exception captured with keys: "+L(c),fingerprint:[i(c)],extra:a.extra||{}});return d.extra.W=M(b),d},captureMessage:function(a,b){if(!this.k.ignoreErrors.test||!this.k.ignoreErrors.test(a)){b=b||{},a+="";var c,d=x({message:a},b);try{throw new Error(a)}catch(e){c=e}c.name=null;var f=g.computeStackTrace(c),h=u(f.stack)&&f.stack[1];h&&"Raven.captureException"===h.func&&(h=f.stack[2]);var i=h&&h.url||"";if((!this.k.ignoreUrls.test||!this.k.ignoreUrls.test(i))&&(!this.k.whitelistUrls.test||this.k.whitelistUrls.test(i))){if(this.k.stacktrace||b&&b.stacktrace){d.fingerprint=null==d.fingerprint?a:d.fingerprint,b=x({trimHeadFrames:0},b),b.trimHeadFrames+=1;var j=this.X(f,b);d.stacktrace={frames:j.reverse()}}return d.fingerprint&&(d.fingerprint=u(d.fingerprint)?d.fingerprint:[d.fingerprint]),this.Y(d),this}}},captureBreadcrumb:function(a){var b=x({timestamp:d()/1e3},a);if(s(this.k.breadcrumbCallback)){var c=this.k.breadcrumbCallback(b);if(p(c)&&!v(c))b=c;else if(c===!1)return this}return this.u.push(b),this.u.length>this.k.maxBreadcrumbs&&this.u.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.r.push([a,b]),this.n&&this.F(),this},setUserContext:function(a){return this.j.user=a,this},setExtraContext:function(a){return this.Z("extra",a),this},setTagsContext:function(a){return this.Z("tags",a),this},clearContext:function(){return this.j={},this},getContext:function(){return JSON.parse(h(this.j))},setEnvironment:function(a){return this.k.environment=a,this},setRelease:function(a){return this.k.release=a,this},setDataCallback:function(a){var b=this.k.dataCallback;return this.k.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.k.breadcrumbCallback;return this.k.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.k.shouldSendCallback;return this.k.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.k.transport=a,this},lastException:function(){return this.d},lastEventId:function(){return this.f},isSetup:function(){return!!this.a&&(!!this.g||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.z("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=R.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(S){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.H;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.j.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.J(this.G(c)),h=S.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(S.head||S.body).appendChild(h)}},L:function(){var a=this;this.m+=1,setTimeout(function(){a.m-=1})},$:function(a,b){var c,d;if(this.b){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),S.createEvent?(c=S.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=S.createEventObject(),c.eventType=a);for(d in b)A(b,d)&&(c[d]=b[d]);if(S.createEvent)S.dispatchEvent(c);else try{S.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},_:function(a){var b=this;return function(c){if(b.aa=null,b.v!==c){b.v=c;var d;try{d=E(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ba:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.aa;g||a._("input")(c),clearTimeout(g),a.aa=setTimeout(function(){a.aa=null},b)}}},ca:function(a,b){var c=H(this.w.href),d=H(b),e=H(a);this.x=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},C:function(){var a=this;a.da=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.M?a.da.apply(this.O,arguments):a.da.apply(this,arguments)}},Q:function(){this.da&&(Function.prototype.toString=this.da)},D:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.ca(b.x,c+""),a.apply(this,arguments)}};I(R.history,"pushState",j,d),I(R.history,"replaceState",j,d)}if(c.console&&"console"in R&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};w(["debug","info","warn","error","log"],function(a,b){O(console,b,k)})}},R:function(){for(var a;this.t.length;){a=this.t.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},S:function(){for(var a in this.q)this.p[a]=this.q[a]},F:function(){var a=this;w(this.r,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},G:function(a){var b=Q.exec(a),c={},d=7;try{for(;d--;)c[P[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.k.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},J:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},A:function(){this.m||this.V.apply(this,arguments)},V:function(a,b){var c=this.X(a,b);this.$("handle",{stackInfo:a,options:b}),this.fa(a.name,a.message,a.url,a.lineno,c,b)},X:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(w(a.stack,function(b,e){var f=c.ga(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.u,0)}),this.j.user&&(a.user=this.j.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),a=this.pa(a),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||v(a[b]))&&delete a[b]}),s(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!v(a)&&(!s(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.ma()?void this.z("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function F(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&l(b))for(c=b.split(/\s+/),f=0;fc?Q(a,b-1):d}function R(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?X:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function S(a,b){function c(a){return m(a)?a.map(function(a){return c(a)}):k(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!m(b)||m(b)&&0===b.length)return a;var d,e=A(b),f="********";try{d=JSON.parse(T(a))}catch(g){return a}return c(d)}var T=a(9),U="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},V=3,W=51200,X=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isDOMError:g,isDOMException:h,isUndefined:i,isFunction:j,isPlainObject:k,isString:l,isArray:m,isEmptyObject:n,supportsErrorEvent:o,supportsDOMError:p,supportsDOMException:q,supportsFetch:r,supportsReferrerPolicy:s,supportsPromiseRejectionEvent:t,wrappedCallback:u,each:v,objectMerge:w,truncate:y,objectFrozen:x,hasKey:z,joinRegExp:A,urlencode:B,uuid4:D,htmlTreeAsString:E,htmlElementAsString:F,isSameException:I,isSameStacktrace:J,parseUrl:C,fill:K,safeJoin:L,serializeException:Q,serializeKeysForMessage:R,sanitize:S}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{9:9}],8:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}function e(){return"undefined"==typeof document||null==document.location?"":(document.location.origin||(document.location.origin=document.location.protocol+"//"+document.location.hostname+(document.location.port?":"+document.location.port:"")),document.location.origin)}var f=a(7),g={collectWindowErrors:!0,debug:!1},h="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},i=[].slice,j="?",k=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;g.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function e(a,b){var c=null;if(!b||g.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(i.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,h,i){var l=null,m=f.isErrorEvent(i)?i.error:i,n=f.isErrorEvent(a)?a.message:a;if(v)g.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&f.isError(m))l=g.computeStackTrace(m),e(l,!0);else{var p,r={url:b,line:c,column:h},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(k);p&&(s=p[1],n=p[2])}r.func=j,l={name:s,message:n,url:d(),stack:[r]},e(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=h.onerror,h.onerror=l,r=!0)}function n(){r&&(h.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,e.apply(null,[a,!1].concat(b))}function p(a,b){var c=i.call(arguments,1);if(v){if(u===a)return;o()}var d=g.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),g.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,f,g=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,h=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,i=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,k=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,l=/\((\S*)(?::(\d+))(?::(\d+))\)/,m=a.stack.split("\n"),n=[],o=(/^(.*) is undefined$/.exec(a.message),0),p=m.length;o eval")>-1;r&&(b=k.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==o||c[5]||"undefined"==typeof a.columnNumber||(n[0].column=a.columnNumber+1),f={url:c[3],func:c[1]||j,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}if(!f.func&&f.line&&(f.func=j),f.url&&"blob:"===f.url.substr(0,5)){var s=new XMLHttpRequest;if(s.open("GET",f.url,!1),s.send(null),200===s.status){var t=s.responseText||"";t=t.slice(-300);var u=t.match(/\/\/# sourceMappingURL=(.*)$/);if(u){var v=u[1];"~"===v.charAt(0)&&(v=e()+v.slice(1)),f.url=v.slice(0,-4)}}}n.push(f)}return n.length?{name:a.name,message:a.message,url:d(),stack:n}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=j),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line, +!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,e){for(var h,i,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==f&&o!==g.report){if(i={url:null,func:j,line:null,column:null},o.name?i.func=o.name:(h=k.exec(o.toString()))&&(i.func=h[1]),"undefined"==typeof i.func)try{i.func=h.input.substring(0,h.input.indexOf("{"))}catch(p){}m[""+o]?n=!0:m[""+o]=!0,l.push(i)}e&&l.splice(0,e);var q={name:a.name,message:a.message,url:d(),stack:l};return b(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),q}function f(b,e){var f=null;e=null==e?0:+e;try{if(f=a(b))return f}catch(h){if(g.debug)throw h}try{if(f=c(b,e+1))return f}catch(h){if(g.debug)throw h}return{name:b.name,message:b.message,url:d()}}return f.augmentStackTraceWithInitialElement=b,f.computeStackTraceFromStackProp=a,f}(),b.exports=g}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{7:7}],9:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}],10:[function(a,b,c){function d(a,b){var c=(65535&a)+(65535&b),d=(a>>16)+(b>>16)+(c>>16);return d<<16|65535&c}function e(a,b){return a<>>32-b}function f(a,b,c,f,g,h){return d(e(d(d(b,a),d(f,h)),g),c)}function g(a,b,c,d,e,g,h){return f(b&c|~b&d,a,b,e,g,h)}function h(a,b,c,d,e,g,h){return f(b&d|c&~d,a,b,e,g,h)}function i(a,b,c,d,e,g,h){return f(b^c^d,a,b,e,g,h)}function j(a,b,c,d,e,g,h){return f(c^(b|~d),a,b,e,g,h)}function k(a,b){a[b>>5]|=128<>>9<<4)+14]=b;var c,e,f,k,l,m=1732584193,n=-271733879,o=-1732584194,p=271733878;for(c=0;c>5]>>>b%32&255);return c}function m(a){var b,c=[];for(c[(a.length>>2)-1]=void 0,b=0;b>5]|=(255&a.charCodeAt(b/8))<16&&(e=k(e,8*a.length)),c=0;c<16;c+=1)f[c]=909522486^e[c],g[c]=1549556828^e[c];return d=k(f.concat(m(b)),512+8*b.length),l(k(g.concat(d),640))}function p(a){var b,c,d="0123456789abcdef",e="";for(c=0;c>>4&15)+d.charAt(15&b);return e}function q(a){return unescape(encodeURIComponent(a))}function r(a){return n(q(a))}function s(a){return p(r(a))}function t(a,b){return o(q(a),q(b))}function u(a,b){return p(t(a,b))}function v(a,b,c){return b?c?t(b,a):u(b,a):c?r(a):s(a)}b.exports=v},{}]},{},[6,1,2])(6)}); //# sourceMappingURL=raven.min.js.map \ No newline at end of file diff --git a/dist/console,vue/raven.min.js.map b/dist/console,vue/raven.min.js.map index 5a4fd8781302..3e831a8a34d8 100644 --- a/dist/console,vue/raven.min.js.map +++ b/dist/console,vue/raven.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","consolePlugin","console","pluginOptions","logLevels","levels","push","callback","msg","data","captureMessage","level","pop","wrapConsoleMethod","wrapMethod","addPlugin","4","6","2","formatComponentName","vm","$root","name","_isVue","$options","_componentTag","__file","vuePlugin","Vue","config","_oldOnError","errorHandler","error","info","metaData","Object","prototype","toString","componentName","propsData","lifecycleHook","captureException","extra","3","RavenConfigError","message","constructor","utils","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","safeJoin","logger","Function","apply","7","5","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","sanitizeKeys","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isErrorEvent","isDOMError","isDOMException","isError","isObject","isPlainObject","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","sanitize","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","dsn","options","_logDebug","globalOptions","key","value","setDSN","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","substr","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","context","func","undefined","wrap","_before","wrapped","deep","_ignoreNextOnError","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","T","event","reason","unhandledPromiseRejection","B","_promiseRejectionHandler","bind","addEventListener","P","removeEventListener","ex","trimHeadFrames","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","U","currentOptions","exKeys","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","setDataCallback","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","L","setTimeout","$","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","_","evtName","_keypressTimeout","target","category","ba","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","ca","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","C","_originalFunctionToString","Q","D","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","type","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","E","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","R","builtin","S","F","installer","concat","G","str","m","exec","allowSecretKey","J","port","A","V","stackInfo","_triggerEvent","_processException","lineno","X","frame","_normalizeFrame","in_app","ga","stackInfoUrl","normalized","filename","line","colno","column","function","fa","prefixedMessage","exception","values","culprit","ha","request","Referer","breadcrumbs","_trimBreadcrumbs","ia","urlProp","urlProps","ja","httpData","userAgent","User-Agent","referrer","y","_backoffDuration","_backoffStart","ma","na","current","last","oa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Y","baseData","project","platform","_getHttpData","serverName","server_name","_sanitizeData","forEach","random","_sendProcessedPayload","pa","ra","qa","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","sa","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","onerror","open","setRequestHeader","send","ta","hash","evaluated","z","Z","setUser","setReleaseContext","10","8","9","RavenConstructor","_Raven","noConflict","Client","what","supportsErrorEvent","ErrorEvent","supportsDOMError","DOMError","supportsDOMException","DOMException","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","wrappedCallback","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","sanitizeMask","safeInput","o_O","getLocationHref","getLocationOrigin","origin","hostname","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","responseText","sourceMaps","sourceMapAddress","charAt","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","string","raw"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file +{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","consolePlugin","console","pluginOptions","logLevels","levels","push","callback","msg","data","captureMessage","level","pop","wrapConsoleMethod","wrapMethod","addPlugin","4","6","2","formatComponentName","vm","$root","name","_isVue","$options","_componentTag","__file","vuePlugin","Vue","config","_oldOnError","errorHandler","error","info","metaData","Object","prototype","toString","componentName","propsData","lifecycleHook","captureException","extra","3","RavenConfigError","message","constructor","utils","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","safeJoin","logger","Function","apply","7","5","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","sanitizeKeys","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isErrorEvent","isDOMError","isDOMException","isError","isObject","isPlainObject","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","sanitize","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","dsn","options","_logDebug","globalOptions","key","value","setDSN","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","substr","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","context","func","undefined","wrap","_before","wrapped","deep","_ignoreNextOnError","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","T","event","reason","unhandledPromiseRejection","B","_promiseRejectionHandler","bind","addEventListener","P","removeEventListener","ex","trimHeadFrames","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","U","currentOptions","exKeys","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","setDataCallback","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","L","setTimeout","$","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","_","evtName","_keypressTimeout","target","category","ba","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","ca","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","C","_originalFunctionToString","Q","D","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","type","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","E","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","R","builtin","S","F","installer","concat","G","str","m","exec","allowSecretKey","J","port","A","V","stackInfo","_triggerEvent","_processException","lineno","X","frame","_normalizeFrame","in_app","ga","stackInfoUrl","normalized","filename","line","colno","column","function","fa","prefixedMessage","exception","values","transaction","ha","request","Referer","breadcrumbs","_trimBreadcrumbs","ia","urlProp","urlProps","ja","httpData","userAgent","User-Agent","referrer","y","_backoffDuration","_backoffStart","ma","na","current","last","oa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Y","baseData","project","platform","_getHttpData","serverName","server_name","_sanitizeData","forEach","random","_sendProcessedPayload","pa","ra","qa","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","sa","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","onerror","open","setRequestHeader","send","ta","hash","evaluated","z","Z","setUser","setReleaseContext","10","8","9","RavenConstructor","_Raven","noConflict","Client","what","supportsErrorEvent","ErrorEvent","supportsDOMError","DOMError","supportsDOMException","DOMException","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","wrappedCallback","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","sanitizeMask","safeInput","o_O","getLocationHref","getLocationOrigin","origin","hostname","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","responseText","sourceMaps","sourceMapAddress","charAt","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","string","raw"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file diff --git a/dist/console/raven.js b/dist/console/raven.js index 43e374832bd0..fa9006b163f9 100644 --- a/dist/console/raven.js +++ b/dist/console/raven.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.25.1 (b6f3c7a) | github.com/getsentry/raven-js */ +/*! Raven.js 3.25.2 (30b6d4e) | github.com/getsentry/raven-js */ /* * Includes TraceKit @@ -152,7 +152,11 @@ function now() { var _window = typeof window !== 'undefined' ? window - : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; + : typeof global !== 'undefined' + ? global + : typeof self !== 'undefined' + ? self + : {}; var _document = _window.document; var _navigator = _window.navigator; @@ -242,7 +246,7 @@ Raven.prototype = { // webpack (using a build step causes webpack #1617). Grunt verifies that // this value matches package.json during build. // See: https://github.com/getsentry/raven-js/issues/465 - VERSION: '3.25.1', + VERSION: '3.25.2', debug: false, @@ -1798,7 +1802,7 @@ Raven.prototype = { } ] }, - culprit: fileurl + transaction: fileurl }, options ); @@ -1913,7 +1917,7 @@ Raven.prototype = { if ( !last || current.message !== last.message || // defined for captureMessage - current.culprit !== last.culprit // defined for captureException/onerror + current.transaction !== last.transaction // defined for captureException/onerror ) return false; diff --git a/dist/console/raven.min.js b/dist/console/raven.min.js index d383590501a3..ad05ba6a99c3 100644 --- a/dist/console/raven.min.js +++ b/dist/console/raven.min.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.25.1 (b6f3c7a) | github.com/getsentry/raven-js */ -!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.Raven=a()}}(function(){return function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};b[g][0].call(k.exports,function(a){var c=b[g][1][a];return e(c?c:a)},k,k.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;gthis.k.maxBreadcrumbs&&this.u.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.r.push([a,b]),this.n&&this.F(),this},setUserContext:function(a){return this.j.user=a,this},setExtraContext:function(a){return this.Z("extra",a),this},setTagsContext:function(a){return this.Z("tags",a),this},clearContext:function(){return this.j={},this},getContext:function(){return JSON.parse(h(this.j))},setEnvironment:function(a){return this.k.environment=a,this},setRelease:function(a){return this.k.release=a,this},setDataCallback:function(a){var b=this.k.dataCallback;return this.k.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.k.breadcrumbCallback;return this.k.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.k.shouldSendCallback;return this.k.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.k.transport=a,this},lastException:function(){return this.d},lastEventId:function(){return this.f},isSetup:function(){return!!this.a&&(!!this.g||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.z("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=R.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(S){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.H;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.j.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.J(this.G(c)),h=S.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(S.head||S.body).appendChild(h)}},L:function(){var a=this;this.m+=1,setTimeout(function(){a.m-=1})},$:function(a,b){var c,d;if(this.b){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),S.createEvent?(c=S.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=S.createEventObject(),c.eventType=a);for(d in b)A(b,d)&&(c[d]=b[d]);if(S.createEvent)S.dispatchEvent(c);else try{S.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},_:function(a){var b=this;return function(c){if(b.aa=null,b.v!==c){b.v=c;var d;try{d=E(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ba:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.aa;g||a._("input")(c),clearTimeout(g),a.aa=setTimeout(function(){a.aa=null},b)}}},ca:function(a,b){var c=H(this.w.href),d=H(b),e=H(a);this.x=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},C:function(){var a=this;a.da=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.M?a.da.apply(this.O,arguments):a.da.apply(this,arguments)}},Q:function(){this.da&&(Function.prototype.toString=this.da)},D:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.ca(b.x,c+""),a.apply(this,arguments)}};I(R.history,"pushState",j,d),I(R.history,"replaceState",j,d)}if(c.console&&"console"in R&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};w(["debug","info","warn","error","log"],function(a,b){O(console,b,k)})}},R:function(){for(var a;this.t.length;){a=this.t.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},S:function(){for(var a in this.q)this.p[a]=this.q[a]},F:function(){var a=this;w(this.r,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},G:function(a){var b=Q.exec(a),c={},d=7;try{for(;d--;)c[P[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.k.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},J:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},A:function(){this.m||this.V.apply(this,arguments)},V:function(a,b){var c=this.X(a,b);this.$("handle",{stackInfo:a,options:b}),this.fa(a.name,a.message,a.url,a.lineno,c,b)},X:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(w(a.stack,function(b,e){var f=c.ga(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.u,0)}),this.j.user&&(a.user=this.j.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),a=this.pa(a),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||v(a[b]))&&delete a[b]}),s(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!v(a)&&(!s(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.ma()?void this.z("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function F(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&l(b))for(c=b.split(/\s+/),f=0;fc?Q(a,b-1):d}function R(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?X:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function S(a,b){function c(a){return m(a)?a.map(function(a){return c(a)}):k(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!m(b)||m(b)&&0===b.length)return a;var d,e=A(b),f="********";try{d=JSON.parse(T(a))}catch(g){return a}return c(d)}var T=a(8),U="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},V=3,W=51200,X=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isDOMError:g,isDOMException:h,isUndefined:i,isFunction:j,isPlainObject:k,isString:l,isArray:m,isEmptyObject:n,supportsErrorEvent:o,supportsDOMError:p,supportsDOMException:q,supportsFetch:r,supportsReferrerPolicy:s,supportsPromiseRejectionEvent:t,wrappedCallback:u,each:v,objectMerge:w,truncate:y,objectFrozen:x,hasKey:z,joinRegExp:A,urlencode:B,uuid4:D,htmlTreeAsString:E,htmlElementAsString:F,isSameException:I,isSameStacktrace:J,parseUrl:C,fill:K,safeJoin:L,serializeException:Q,serializeKeysForMessage:R,sanitize:S}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{8:8}],7:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}function e(){return"undefined"==typeof document||null==document.location?"":(document.location.origin||(document.location.origin=document.location.protocol+"//"+document.location.hostname+(document.location.port?":"+document.location.port:"")),document.location.origin)}var f=a(6),g={collectWindowErrors:!0,debug:!1},h="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},i=[].slice,j="?",k=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;g.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function e(a,b){var c=null;if(!b||g.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(i.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,h,i){var l=null,m=f.isErrorEvent(i)?i.error:i,n=f.isErrorEvent(a)?a.message:a;if(v)g.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&f.isError(m))l=g.computeStackTrace(m),e(l,!0);else{var p,r={url:b,line:c,column:h},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(k);p&&(s=p[1],n=p[2])}r.func=j,l={name:s,message:n,url:d(),stack:[r]},e(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=h.onerror,h.onerror=l,r=!0)}function n(){r&&(h.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,e.apply(null,[a,!1].concat(b))}function p(a,b){var c=i.call(arguments,1);if(v){if(u===a)return;o()}var d=g.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),g.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,f,g=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,h=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,i=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,k=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,l=/\((\S*)(?::(\d+))(?::(\d+))\)/,m=a.stack.split("\n"),n=[],o=(/^(.*) is undefined$/.exec(a.message),0),p=m.length;o eval")>-1;r&&(b=k.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==o||c[5]||"undefined"==typeof a.columnNumber||(n[0].column=a.columnNumber+1),f={url:c[3],func:c[1]||j,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}if(!f.func&&f.line&&(f.func=j),f.url&&"blob:"===f.url.substr(0,5)){var s=new XMLHttpRequest;if(s.open("GET",f.url,!1),s.send(null),200===s.status){var t=s.responseText||"";t=t.slice(-300);var u=t.match(/\/\/# sourceMappingURL=(.*)$/);if(u){var v=u[1];"~"===v.charAt(0)&&(v=e()+v.slice(1)),f.url=v.slice(0,-4)}}}n.push(f)}return n.length?{name:a.name,message:a.message,url:d(),stack:n}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=j),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,e){for(var h,i,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==f&&o!==g.report){if(i={url:null,func:j,line:null,column:null},o.name?i.func=o.name:(h=k.exec(o.toString()))&&(i.func=h[1]),"undefined"==typeof i.func)try{i.func=h.input.substring(0,h.input.indexOf("{"))}catch(p){}m[""+o]?n=!0:m[""+o]=!0,l.push(i)}e&&l.splice(0,e);var q={name:a.name,message:a.message,url:d(),stack:l};return b(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),q}function f(b,e){var f=null;e=null==e?0:+e; -try{if(f=a(b))return f}catch(h){if(g.debug)throw h}try{if(f=c(b,e+1))return f}catch(h){if(g.debug)throw h}return{name:b.name,message:b.message,url:d()}}return f.augmentStackTraceWithInitialElement=b,f.computeStackTraceFromStackProp=a,f}(),b.exports=g}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{6:6}],8:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}],9:[function(a,b,c){function d(a,b){var c=(65535&a)+(65535&b),d=(a>>16)+(b>>16)+(c>>16);return d<<16|65535&c}function e(a,b){return a<>>32-b}function f(a,b,c,f,g,h){return d(e(d(d(b,a),d(f,h)),g),c)}function g(a,b,c,d,e,g,h){return f(b&c|~b&d,a,b,e,g,h)}function h(a,b,c,d,e,g,h){return f(b&d|c&~d,a,b,e,g,h)}function i(a,b,c,d,e,g,h){return f(b^c^d,a,b,e,g,h)}function j(a,b,c,d,e,g,h){return f(c^(b|~d),a,b,e,g,h)}function k(a,b){a[b>>5]|=128<>>9<<4)+14]=b;var c,e,f,k,l,m=1732584193,n=-271733879,o=-1732584194,p=271733878;for(c=0;c>5]>>>b%32&255);return c}function m(a){var b,c=[];for(c[(a.length>>2)-1]=void 0,b=0;b>5]|=(255&a.charCodeAt(b/8))<16&&(e=k(e,8*a.length)),c=0;c<16;c+=1)f[c]=909522486^e[c],g[c]=1549556828^e[c];return d=k(f.concat(m(b)),512+8*b.length),l(k(g.concat(d),640))}function p(a){var b,c,d="0123456789abcdef",e="";for(c=0;c>>4&15)+d.charAt(15&b);return e}function q(a){return unescape(encodeURIComponent(a))}function r(a){return n(q(a))}function s(a){return p(r(a))}function t(a,b){return o(q(a),q(b))}function u(a,b){return p(t(a,b))}function v(a,b,c){return b?c?t(b,a):u(b,a):c?r(a):s(a)}b.exports=v},{}]},{},[5,1])(5)}); +/*! Raven.js 3.25.2 (30b6d4e) | github.com/getsentry/raven-js */ +!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.Raven=a()}}(function(){return function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};b[g][0].call(k.exports,function(a){var c=b[g][1][a];return e(c?c:a)},k,k.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;gthis.k.maxBreadcrumbs&&this.u.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.r.push([a,b]),this.n&&this.F(),this},setUserContext:function(a){return this.j.user=a,this},setExtraContext:function(a){return this.Z("extra",a),this},setTagsContext:function(a){return this.Z("tags",a),this},clearContext:function(){return this.j={},this},getContext:function(){return JSON.parse(h(this.j))},setEnvironment:function(a){return this.k.environment=a,this},setRelease:function(a){return this.k.release=a,this},setDataCallback:function(a){var b=this.k.dataCallback;return this.k.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.k.breadcrumbCallback;return this.k.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.k.shouldSendCallback;return this.k.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.k.transport=a,this},lastException:function(){return this.d},lastEventId:function(){return this.f},isSetup:function(){return!!this.a&&(!!this.g||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.z("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=R.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(S){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.H;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.j.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.J(this.G(c)),h=S.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(S.head||S.body).appendChild(h)}},L:function(){var a=this;this.m+=1,setTimeout(function(){a.m-=1})},$:function(a,b){var c,d;if(this.b){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),S.createEvent?(c=S.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=S.createEventObject(),c.eventType=a);for(d in b)A(b,d)&&(c[d]=b[d]);if(S.createEvent)S.dispatchEvent(c);else try{S.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},_:function(a){var b=this;return function(c){if(b.aa=null,b.v!==c){b.v=c;var d;try{d=E(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ba:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.aa;g||a._("input")(c),clearTimeout(g),a.aa=setTimeout(function(){a.aa=null},b)}}},ca:function(a,b){var c=H(this.w.href),d=H(b),e=H(a);this.x=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},C:function(){var a=this;a.da=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.M?a.da.apply(this.O,arguments):a.da.apply(this,arguments)}},Q:function(){this.da&&(Function.prototype.toString=this.da)},D:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.ca(b.x,c+""),a.apply(this,arguments)}};I(R.history,"pushState",j,d),I(R.history,"replaceState",j,d)}if(c.console&&"console"in R&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};w(["debug","info","warn","error","log"],function(a,b){O(console,b,k)})}},R:function(){for(var a;this.t.length;){a=this.t.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},S:function(){for(var a in this.q)this.p[a]=this.q[a]},F:function(){var a=this;w(this.r,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},G:function(a){var b=Q.exec(a),c={},d=7;try{for(;d--;)c[P[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.k.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},J:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},A:function(){this.m||this.V.apply(this,arguments)},V:function(a,b){var c=this.X(a,b);this.$("handle",{stackInfo:a,options:b}),this.fa(a.name,a.message,a.url,a.lineno,c,b)},X:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(w(a.stack,function(b,e){var f=c.ga(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.u,0)}),this.j.user&&(a.user=this.j.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),a=this.pa(a),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||v(a[b]))&&delete a[b]}),s(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!v(a)&&(!s(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.ma()?void this.z("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function F(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&l(b))for(c=b.split(/\s+/),f=0;fc?Q(a,b-1):d}function R(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?X:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function S(a,b){function c(a){return m(a)?a.map(function(a){return c(a)}):k(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!m(b)||m(b)&&0===b.length)return a;var d,e=A(b),f="********";try{d=JSON.parse(T(a))}catch(g){return a}return c(d)}var T=a(8),U="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},V=3,W=51200,X=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isDOMError:g,isDOMException:h,isUndefined:i,isFunction:j,isPlainObject:k,isString:l,isArray:m,isEmptyObject:n,supportsErrorEvent:o,supportsDOMError:p,supportsDOMException:q,supportsFetch:r,supportsReferrerPolicy:s,supportsPromiseRejectionEvent:t,wrappedCallback:u,each:v,objectMerge:w,truncate:y,objectFrozen:x,hasKey:z,joinRegExp:A,urlencode:B,uuid4:D,htmlTreeAsString:E,htmlElementAsString:F,isSameException:I,isSameStacktrace:J,parseUrl:C,fill:K,safeJoin:L,serializeException:Q,serializeKeysForMessage:R,sanitize:S}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{8:8}],7:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}function e(){return"undefined"==typeof document||null==document.location?"":(document.location.origin||(document.location.origin=document.location.protocol+"//"+document.location.hostname+(document.location.port?":"+document.location.port:"")),document.location.origin)}var f=a(6),g={collectWindowErrors:!0,debug:!1},h="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},i=[].slice,j="?",k=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;g.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function e(a,b){var c=null;if(!b||g.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(i.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,h,i){var l=null,m=f.isErrorEvent(i)?i.error:i,n=f.isErrorEvent(a)?a.message:a;if(v)g.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&f.isError(m))l=g.computeStackTrace(m),e(l,!0);else{var p,r={url:b,line:c,column:h},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(k);p&&(s=p[1],n=p[2])}r.func=j,l={name:s,message:n,url:d(),stack:[r]},e(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=h.onerror,h.onerror=l,r=!0)}function n(){r&&(h.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,e.apply(null,[a,!1].concat(b))}function p(a,b){var c=i.call(arguments,1);if(v){if(u===a)return;o()}var d=g.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),g.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,f,g=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,h=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,i=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,k=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,l=/\((\S*)(?::(\d+))(?::(\d+))\)/,m=a.stack.split("\n"),n=[],o=(/^(.*) is undefined$/.exec(a.message),0),p=m.length;o eval")>-1;r&&(b=k.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==o||c[5]||"undefined"==typeof a.columnNumber||(n[0].column=a.columnNumber+1),f={url:c[3],func:c[1]||j,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}if(!f.func&&f.line&&(f.func=j),f.url&&"blob:"===f.url.substr(0,5)){var s=new XMLHttpRequest;if(s.open("GET",f.url,!1),s.send(null),200===s.status){var t=s.responseText||"";t=t.slice(-300);var u=t.match(/\/\/# sourceMappingURL=(.*)$/);if(u){var v=u[1];"~"===v.charAt(0)&&(v=e()+v.slice(1)),f.url=v.slice(0,-4)}}}n.push(f)}return n.length?{name:a.name,message:a.message,url:d(),stack:n}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=j),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,e){for(var h,i,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==f&&o!==g.report){if(i={url:null,func:j,line:null,column:null},o.name?i.func=o.name:(h=k.exec(o.toString()))&&(i.func=h[1]),"undefined"==typeof i.func)try{i.func=h.input.substring(0,h.input.indexOf("{"))}catch(p){}m[""+o]?n=!0:m[""+o]=!0,l.push(i)}e&&l.splice(0,e);var q={name:a.name,message:a.message,url:d(),stack:l};return b(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),q}function f(b,e){ +var f=null;e=null==e?0:+e;try{if(f=a(b))return f}catch(h){if(g.debug)throw h}try{if(f=c(b,e+1))return f}catch(h){if(g.debug)throw h}return{name:b.name,message:b.message,url:d()}}return f.augmentStackTraceWithInitialElement=b,f.computeStackTraceFromStackProp=a,f}(),b.exports=g}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{6:6}],8:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}],9:[function(a,b,c){function d(a,b){var c=(65535&a)+(65535&b),d=(a>>16)+(b>>16)+(c>>16);return d<<16|65535&c}function e(a,b){return a<>>32-b}function f(a,b,c,f,g,h){return d(e(d(d(b,a),d(f,h)),g),c)}function g(a,b,c,d,e,g,h){return f(b&c|~b&d,a,b,e,g,h)}function h(a,b,c,d,e,g,h){return f(b&d|c&~d,a,b,e,g,h)}function i(a,b,c,d,e,g,h){return f(b^c^d,a,b,e,g,h)}function j(a,b,c,d,e,g,h){return f(c^(b|~d),a,b,e,g,h)}function k(a,b){a[b>>5]|=128<>>9<<4)+14]=b;var c,e,f,k,l,m=1732584193,n=-271733879,o=-1732584194,p=271733878;for(c=0;c>5]>>>b%32&255);return c}function m(a){var b,c=[];for(c[(a.length>>2)-1]=void 0,b=0;b>5]|=(255&a.charCodeAt(b/8))<16&&(e=k(e,8*a.length)),c=0;c<16;c+=1)f[c]=909522486^e[c],g[c]=1549556828^e[c];return d=k(f.concat(m(b)),512+8*b.length),l(k(g.concat(d),640))}function p(a){var b,c,d="0123456789abcdef",e="";for(c=0;c>>4&15)+d.charAt(15&b);return e}function q(a){return unescape(encodeURIComponent(a))}function r(a){return n(q(a))}function s(a){return p(r(a))}function t(a,b){return o(q(a),q(b))}function u(a,b){return p(t(a,b))}function v(a,b,c){return b?c?t(b,a):u(b,a):c?r(a):s(a)}b.exports=v},{}]},{},[5,1])(5)}); //# sourceMappingURL=raven.min.js.map \ No newline at end of file diff --git a/dist/console/raven.min.js.map b/dist/console/raven.min.js.map index b58ce338f87c..83753b3d5e6b 100644 --- a/dist/console/raven.min.js.map +++ b/dist/console/raven.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","consolePlugin","console","pluginOptions","logLevels","levels","push","callback","msg","data","captureMessage","level","pop","wrapConsoleMethod","wrapMethod","addPlugin","3","5","2","RavenConfigError","message","name","prototype","constructor","utils","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","safeJoin","logger","extra","Function","apply","6","4","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","sanitizeKeys","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isErrorEvent","isDOMError","isDOMException","isError","isObject","isPlainObject","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","sanitize","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","config","dsn","options","_logDebug","globalOptions","key","value","setDSN","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","toString","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","substr","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","context","func","undefined","wrap","_before","wrapped","deep","_ignoreNextOnError","captureException","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","T","event","reason","unhandledPromiseRejection","B","_promiseRejectionHandler","bind","addEventListener","P","removeEventListener","ex","trimHeadFrames","error","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","U","currentOptions","exKeys","Object","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","setDataCallback","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","L","setTimeout","$","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","_","evtName","_keypressTimeout","target","category","ba","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","ca","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","C","_originalFunctionToString","Q","D","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","type","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","E","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","R","builtin","S","F","installer","concat","G","str","m","exec","allowSecretKey","J","port","A","V","stackInfo","_triggerEvent","_processException","lineno","X","frame","_normalizeFrame","in_app","ga","stackInfoUrl","normalized","filename","line","colno","column","function","fa","prefixedMessage","exception","values","culprit","ha","request","Referer","breadcrumbs","_trimBreadcrumbs","ia","urlProp","urlProps","ja","httpData","userAgent","User-Agent","referrer","y","_backoffDuration","_backoffStart","ma","na","current","last","oa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Y","baseData","project","platform","_getHttpData","serverName","server_name","_sanitizeData","forEach","random","_sendProcessedPayload","pa","ra","qa","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","sa","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","onerror","open","setRequestHeader","send","ta","hash","evaluated","z","Z","setUser","setReleaseContext","7","8","9","RavenConstructor","_Raven","noConflict","Client","what","supportsErrorEvent","ErrorEvent","supportsDOMError","DOMError","supportsDOMException","DOMException","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","wrappedCallback","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","sanitizeMask","safeInput","o_O","getLocationHref","getLocationOrigin","origin","hostname","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","responseText","sourceMaps","sourceMapAddress","charAt","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","string","raw"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file +{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","consolePlugin","console","pluginOptions","logLevels","levels","push","callback","msg","data","captureMessage","level","pop","wrapConsoleMethod","wrapMethod","addPlugin","3","5","2","RavenConfigError","message","name","prototype","constructor","utils","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","safeJoin","logger","extra","Function","apply","6","4","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","sanitizeKeys","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isErrorEvent","isDOMError","isDOMException","isError","isObject","isPlainObject","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","sanitize","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","config","dsn","options","_logDebug","globalOptions","key","value","setDSN","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","toString","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","substr","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","context","func","undefined","wrap","_before","wrapped","deep","_ignoreNextOnError","captureException","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","T","event","reason","unhandledPromiseRejection","B","_promiseRejectionHandler","bind","addEventListener","P","removeEventListener","ex","trimHeadFrames","error","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","U","currentOptions","exKeys","Object","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","setDataCallback","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","L","setTimeout","$","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","_","evtName","_keypressTimeout","target","category","ba","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","ca","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","C","_originalFunctionToString","Q","D","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","type","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","E","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","R","builtin","S","F","installer","concat","G","str","m","exec","allowSecretKey","J","port","A","V","stackInfo","_triggerEvent","_processException","lineno","X","frame","_normalizeFrame","in_app","ga","stackInfoUrl","normalized","filename","line","colno","column","function","fa","prefixedMessage","exception","values","transaction","ha","request","Referer","breadcrumbs","_trimBreadcrumbs","ia","urlProp","urlProps","ja","httpData","userAgent","User-Agent","referrer","y","_backoffDuration","_backoffStart","ma","na","current","last","oa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Y","baseData","project","platform","_getHttpData","serverName","server_name","_sanitizeData","forEach","random","_sendProcessedPayload","pa","ra","qa","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","sa","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","onerror","open","setRequestHeader","send","ta","hash","evaluated","z","Z","setUser","setReleaseContext","7","8","9","RavenConstructor","_Raven","noConflict","Client","what","supportsErrorEvent","ErrorEvent","supportsDOMError","DOMError","supportsDOMException","DOMException","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","wrappedCallback","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","sanitizeMask","safeInput","o_O","getLocationHref","getLocationOrigin","origin","hostname","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","responseText","sourceMaps","sourceMapAddress","charAt","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","string","raw"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file diff --git a/dist/ember,require,vue/raven.js b/dist/ember,require,vue/raven.js index d418f04cea8d..3a81968b5983 100644 --- a/dist/ember,require,vue/raven.js +++ b/dist/ember,require,vue/raven.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.25.1 (b6f3c7a) | github.com/getsentry/raven-js */ +/*! Raven.js 3.25.2 (30b6d4e) | github.com/getsentry/raven-js */ /* * Includes TraceKit @@ -217,7 +217,11 @@ function now() { var _window = typeof window !== 'undefined' ? window - : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; + : typeof global !== 'undefined' + ? global + : typeof self !== 'undefined' + ? self + : {}; var _document = _window.document; var _navigator = _window.navigator; @@ -307,7 +311,7 @@ Raven.prototype = { // webpack (using a build step causes webpack #1617). Grunt verifies that // this value matches package.json during build. // See: https://github.com/getsentry/raven-js/issues/465 - VERSION: '3.25.1', + VERSION: '3.25.2', debug: false, @@ -1863,7 +1867,7 @@ Raven.prototype = { } ] }, - culprit: fileurl + transaction: fileurl }, options ); @@ -1978,7 +1982,7 @@ Raven.prototype = { if ( !last || current.message !== last.message || // defined for captureMessage - current.culprit !== last.culprit // defined for captureException/onerror + current.transaction !== last.transaction // defined for captureException/onerror ) return false; diff --git a/dist/ember,require,vue/raven.min.js b/dist/ember,require,vue/raven.min.js index 852555cdc8c2..22aa8e4cd0f7 100644 --- a/dist/ember,require,vue/raven.min.js +++ b/dist/ember,require,vue/raven.min.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.25.1 (b6f3c7a) | github.com/getsentry/raven-js */ -!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.Raven=a()}}(function(){var a;return function b(a,c,d){function e(g,h){if(!c[g]){if(!a[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};a[g][0].call(k.exports,function(b){var c=a[g][1][b];return e(c?c:b)},k,k.exports,b,a,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;g":"anonymous component")+(a._isVue&&a.$options.__file?" at "+a.$options.__file:"")}function e(a,b){if(b=b||window.Vue,b&&b.config){var c=b.config.errorHandler;b.config.errorHandler=function(b,e,f){var g={};"[object Object]"===Object.prototype.toString.call(e)&&(g.componentName=d(e),g.propsData=e.$options.propsData),"undefined"!=typeof f&&(g.lifecycleHook=f),a.captureException(b,{extra:g}),"function"==typeof c&&c.call(this,b,e,f)}}}b.exports=e,a(7).addPlugin(b.exports)},{7:7}],4:[function(a,b,c){function d(a){this.name="RavenConfigError",this.message=a}d.prototype=new Error,d.prototype.constructor=d,b.exports=d},{}],5:[function(a,b,c){var d=a(8),e=function(a,b,c){var e=a[b],f=a;if(b in a){var g="warn"===b?"warning":b;a[b]=function(){var a=[].slice.call(arguments),h=d.safeJoin(a," "),i={level:g,logger:"console",extra:{arguments:a}};"assert"===b?a[0]===!1&&(h="Assertion failed: "+(d.safeJoin(a.slice(1)," ")||"console.assert"),i.extra.arguments=a.slice(1),c&&c(h,i)):c&&c(h,i),e&&Function.prototype.apply.call(e,f,a)}}};b.exports={wrapMethod:e}},{8:8}],6:[function(a,b,c){(function(c){function d(){return+new Date}function e(a,b){return s(b)?function(c){return b(c,a)}:b}function f(){this.a=!("object"!=typeof JSON||!JSON.stringify),this.b=!r(S),this.c=!r(T),this.d=null,this.e=null,this.f=null,this.g=null,this.h=null,this.i=null,this.j={},this.k={release:R.SENTRY_RELEASE&&R.SENTRY_RELEASE.id,logger:"javascript",ignoreErrors:[],ignoreUrls:[],whitelistUrls:[],includePaths:[],headers:null,collectWindowErrors:!0,captureUnhandledRejections:!0,maxMessageLength:0,maxUrlLength:250,stackTraceLimit:50,autoBreadcrumbs:!0,instrument:!0,sampleRate:1,sanitizeKeys:[]},this.l={method:"POST",keepalive:!0,referrerPolicy:K()?"origin":""},this.m=0,this.n=!1,this.o=Error.stackTraceLimit,this.p=R.console||{},this.q={},this.r=[],this.s=d(),this.t=[],this.u=[],this.v=null,this.w=R.location,this.x=this.w&&this.w.href,this.y();for(var a in this.p)this.q[a]=this.p[a]}var g=a(9),h=a(10),i=a(11),j=a(4),k=a(8),l=k.isErrorEvent,m=k.isDOMError,n=k.isDOMException,o=k.isError,p=k.isObject,q=k.isPlainObject,r=k.isUndefined,s=k.isFunction,t=k.isString,u=k.isArray,v=k.isEmptyObject,w=k.each,x=k.objectMerge,y=k.truncate,z=k.objectFrozen,A=k.hasKey,B=k.joinRegExp,C=k.urlencode,D=k.uuid4,E=k.htmlTreeAsString,F=k.isSameException,G=k.isSameStacktrace,H=k.parseUrl,I=k.fill,J=k.supportsFetch,K=k.supportsReferrerPolicy,L=k.serializeKeysForMessage,M=k.serializeException,N=k.sanitize,O=a(5).wrapMethod,P="source protocol user pass host port path".split(" "),Q=/^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/,R="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},S=R.document,T=R.navigator;f.prototype={VERSION:"3.25.1",debug:!1,TraceKit:g,config:function(a,b){var c=this;if(c.g)return this.z("error","Error: Raven has already been configured"),c;if(!a)return c;var d=c.k;b&&w(b,function(a,b){"tags"===a||"extra"===a||"user"===a?c.j[a]=b:d[a]=b}),c.setDSN(a),d.ignoreErrors.push(/^Script error\.?$/),d.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/),d.ignoreErrors=B(d.ignoreErrors),d.ignoreUrls=!!d.ignoreUrls.length&&B(d.ignoreUrls),d.whitelistUrls=!!d.whitelistUrls.length&&B(d.whitelistUrls),d.includePaths=B(d.includePaths),d.maxBreadcrumbs=Math.max(0,Math.min(d.maxBreadcrumbs||100,100));var e={xhr:!0,console:!0,dom:!0,location:!0,sentry:!0},f=d.autoBreadcrumbs;"[object Object]"==={}.toString.call(f)?f=x(e,f):f!==!1&&(f=e),d.autoBreadcrumbs=f;var h={tryCatch:!0},i=d.instrument;return"[object Object]"==={}.toString.call(i)?i=x(h,i):i!==!1&&(i=h),d.instrument=i,g.collectWindowErrors=!!d.collectWindowErrors,c},install:function(){var a=this;return a.isSetup()&&!a.n&&(g.report.subscribe(function(){a.A.apply(a,arguments)}),a.k.captureUnhandledRejections&&a.B(),a.C(),a.k.instrument&&a.k.instrument.tryCatch&&a.D(),a.k.autoBreadcrumbs&&a.E(),a.F(),a.n=!0),Error.stackTraceLimit=a.k.stackTraceLimit,this},setDSN:function(a){var b=this,c=b.G(a),d=c.path.lastIndexOf("/"),e=c.path.substr(1,d);b.H=a,b.h=c.user,b.I=c.pass&&c.pass.substr(1),b.i=c.path.substr(d+1),b.g=b.J(c),b.K=b.g+"/"+e+"api/"+b.i+"/store/",this.y()},context:function(a,b,c){return s(a)&&(c=b||[],b=a,a=void 0),this.wrap(a,b).apply(this,c)},wrap:function(a,b,c){function d(){var d=[],f=arguments.length,g=!a||a&&a.deep!==!1;for(c&&s(c)&&c.apply(this,arguments);f--;)d[f]=g?e.wrap(a,arguments[f]):arguments[f];try{return b.apply(this,d)}catch(h){throw e.L(),e.captureException(h,a),h}}var e=this;if(r(b)&&!s(a))return a;if(s(a)&&(b=a,a=void 0),!s(b))return b;try{if(b.M)return b;if(b.N)return b.N}catch(f){return b}for(var g in b)A(b,g)&&(d[g]=b[g]);return d.prototype=b.prototype,b.N=d,d.M=!0,d.O=b,d},uninstall:function(){return g.report.uninstall(),this.P(),this.Q(),this.R(),this.S(),Error.stackTraceLimit=this.o,this.n=!1,this},T:function(a){this.z("debug","Raven caught unhandled promise rejection:",a),this.captureException(a.reason,{extra:{unhandledPromiseRejection:!0}})},B:function(){return this.T=this.T.bind(this),R.addEventListener&&R.addEventListener("unhandledrejection",this.T),this},P:function(){return R.removeEventListener&&R.removeEventListener("unhandledrejection",this.T),this},captureException:function(a,b){if(b=x({trimHeadFrames:0},b?b:{}),l(a)&&a.error)a=a.error;else{if(m(a)||n(a)){var c=a.name||(m(a)?"DOMError":"DOMException"),d=a.message?c+": "+a.message:c;return this.captureMessage(d,x(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}))}if(o(a))a=a;else{if(!q(a))return this.captureMessage(a,x(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}));b=this.U(b,a),a=new Error(b.message)}}this.d=a;try{var e=g.computeStackTrace(a);this.V(e,b)}catch(f){if(a!==f)throw f}return this},U:function(a,b){var c=Object.keys(b).sort(),d=x(a,{message:"Non-Error exception captured with keys: "+L(c),fingerprint:[i(c)],extra:a.extra||{}});return d.extra.W=M(b),d},captureMessage:function(a,b){if(!this.k.ignoreErrors.test||!this.k.ignoreErrors.test(a)){b=b||{},a+="";var c,d=x({message:a},b);try{throw new Error(a)}catch(e){c=e}c.name=null;var f=g.computeStackTrace(c),h=u(f.stack)&&f.stack[1];h&&"Raven.captureException"===h.func&&(h=f.stack[2]);var i=h&&h.url||"";if((!this.k.ignoreUrls.test||!this.k.ignoreUrls.test(i))&&(!this.k.whitelistUrls.test||this.k.whitelistUrls.test(i))){if(this.k.stacktrace||b&&b.stacktrace){d.fingerprint=null==d.fingerprint?a:d.fingerprint,b=x({trimHeadFrames:0},b),b.trimHeadFrames+=1;var j=this.X(f,b);d.stacktrace={frames:j.reverse()}}return d.fingerprint&&(d.fingerprint=u(d.fingerprint)?d.fingerprint:[d.fingerprint]),this.Y(d),this}}},captureBreadcrumb:function(a){var b=x({timestamp:d()/1e3},a);if(s(this.k.breadcrumbCallback)){var c=this.k.breadcrumbCallback(b);if(p(c)&&!v(c))b=c;else if(c===!1)return this}return this.u.push(b),this.u.length>this.k.maxBreadcrumbs&&this.u.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.r.push([a,b]),this.n&&this.F(),this},setUserContext:function(a){return this.j.user=a,this},setExtraContext:function(a){return this.Z("extra",a),this},setTagsContext:function(a){return this.Z("tags",a),this},clearContext:function(){return this.j={},this},getContext:function(){return JSON.parse(h(this.j))},setEnvironment:function(a){return this.k.environment=a,this},setRelease:function(a){return this.k.release=a,this},setDataCallback:function(a){var b=this.k.dataCallback;return this.k.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.k.breadcrumbCallback;return this.k.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.k.shouldSendCallback;return this.k.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.k.transport=a,this},lastException:function(){return this.d},lastEventId:function(){return this.f},isSetup:function(){return!!this.a&&(!!this.g||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.z("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=R.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(S){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.H;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.j.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.J(this.G(c)),h=S.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(S.head||S.body).appendChild(h)}},L:function(){var a=this;this.m+=1,setTimeout(function(){a.m-=1})},$:function(a,b){var c,d;if(this.b){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),S.createEvent?(c=S.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=S.createEventObject(),c.eventType=a);for(d in b)A(b,d)&&(c[d]=b[d]);if(S.createEvent)S.dispatchEvent(c);else try{S.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},_:function(a){var b=this;return function(c){if(b.aa=null,b.v!==c){b.v=c;var d;try{d=E(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ba:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.aa;g||a._("input")(c),clearTimeout(g),a.aa=setTimeout(function(){a.aa=null},b)}}},ca:function(a,b){var c=H(this.w.href),d=H(b),e=H(a);this.x=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},C:function(){var a=this;a.da=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.M?a.da.apply(this.O,arguments):a.da.apply(this,arguments)}},Q:function(){this.da&&(Function.prototype.toString=this.da)},D:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.ca(b.x,c+""),a.apply(this,arguments)}};I(R.history,"pushState",j,d),I(R.history,"replaceState",j,d)}if(c.console&&"console"in R&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};w(["debug","info","warn","error","log"],function(a,b){O(console,b,k)})}},R:function(){for(var a;this.t.length;){a=this.t.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},S:function(){for(var a in this.q)this.p[a]=this.q[a]},F:function(){var a=this;w(this.r,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},G:function(a){var b=Q.exec(a),c={},d=7;try{for(;d--;)c[P[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.k.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},J:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},A:function(){this.m||this.V.apply(this,arguments)},V:function(a,b){var c=this.X(a,b);this.$("handle",{stackInfo:a,options:b}),this.fa(a.name,a.message,a.url,a.lineno,c,b)},X:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(w(a.stack,function(b,e){var f=c.ga(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.u,0)}),this.j.user&&(a.user=this.j.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),a=this.pa(a),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||v(a[b]))&&delete a[b]}),s(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!v(a)&&(!s(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.ma()?void this.z("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function F(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&l(b))for(c=b.split(/\s+/),f=0;fc?Q(a,b-1):d}function R(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?X:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function S(a,b){function c(a){return m(a)?a.map(function(a){return c(a)}):k(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!m(b)||m(b)&&0===b.length)return a;var d,e=A(b),f="********";try{d=JSON.parse(T(a))}catch(g){return a}return c(d)}var T=a(10),U="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},V=3,W=51200,X=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isDOMError:g,isDOMException:h,isUndefined:i,isFunction:j,isPlainObject:k,isString:l,isArray:m,isEmptyObject:n,supportsErrorEvent:o,supportsDOMError:p,supportsDOMException:q,supportsFetch:r,supportsReferrerPolicy:s,supportsPromiseRejectionEvent:t,wrappedCallback:u,each:v,objectMerge:w,truncate:y,objectFrozen:x,hasKey:z,joinRegExp:A,urlencode:B,uuid4:D,htmlTreeAsString:E,htmlElementAsString:F,isSameException:I,isSameStacktrace:J,parseUrl:C,fill:K,safeJoin:L,serializeException:Q,serializeKeysForMessage:R,sanitize:S}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{10:10}],9:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}function e(){return"undefined"==typeof document||null==document.location?"":(document.location.origin||(document.location.origin=document.location.protocol+"//"+document.location.hostname+(document.location.port?":"+document.location.port:"")),document.location.origin)}var f=a(8),g={collectWindowErrors:!0,debug:!1},h="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},i=[].slice,j="?",k=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;g.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function e(a,b){var c=null;if(!b||g.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(i.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,h,i){var l=null,m=f.isErrorEvent(i)?i.error:i,n=f.isErrorEvent(a)?a.message:a;if(v)g.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&f.isError(m))l=g.computeStackTrace(m),e(l,!0);else{var p,r={url:b,line:c,column:h},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(k);p&&(s=p[1],n=p[2])}r.func=j,l={name:s,message:n,url:d(),stack:[r]},e(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=h.onerror,h.onerror=l,r=!0)}function n(){r&&(h.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,e.apply(null,[a,!1].concat(b))}function p(a,b){var c=i.call(arguments,1);if(v){if(u===a)return;o()}var d=g.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),g.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,f,g=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,h=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,i=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,k=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,l=/\((\S*)(?::(\d+))(?::(\d+))\)/,m=a.stack.split("\n"),n=[],o=(/^(.*) is undefined$/.exec(a.message),0),p=m.length;o eval")>-1;r&&(b=k.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==o||c[5]||"undefined"==typeof a.columnNumber||(n[0].column=a.columnNumber+1),f={url:c[3],func:c[1]||j,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}if(!f.func&&f.line&&(f.func=j),f.url&&"blob:"===f.url.substr(0,5)){var s=new XMLHttpRequest;if(s.open("GET",f.url,!1),s.send(null),200===s.status){var t=s.responseText||"";t=t.slice(-300);var u=t.match(/\/\/# sourceMappingURL=(.*)$/);if(u){var v=u[1];"~"===v.charAt(0)&&(v=e()+v.slice(1)),f.url=v.slice(0,-4)}}}n.push(f)}return n.length?{name:a.name,message:a.message, -url:d(),stack:n}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=j),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,e){for(var h,i,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==f&&o!==g.report){if(i={url:null,func:j,line:null,column:null},o.name?i.func=o.name:(h=k.exec(o.toString()))&&(i.func=h[1]),"undefined"==typeof i.func)try{i.func=h.input.substring(0,h.input.indexOf("{"))}catch(p){}m[""+o]?n=!0:m[""+o]=!0,l.push(i)}e&&l.splice(0,e);var q={name:a.name,message:a.message,url:d(),stack:l};return b(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),q}function f(b,e){var f=null;e=null==e?0:+e;try{if(f=a(b))return f}catch(h){if(g.debug)throw h}try{if(f=c(b,e+1))return f}catch(h){if(g.debug)throw h}return{name:b.name,message:b.message,url:d()}}return f.augmentStackTraceWithInitialElement=b,f.computeStackTraceFromStackProp=a,f}(),b.exports=g}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{8:8}],10:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}],11:[function(a,b,c){function d(a,b){var c=(65535&a)+(65535&b),d=(a>>16)+(b>>16)+(c>>16);return d<<16|65535&c}function e(a,b){return a<>>32-b}function f(a,b,c,f,g,h){return d(e(d(d(b,a),d(f,h)),g),c)}function g(a,b,c,d,e,g,h){return f(b&c|~b&d,a,b,e,g,h)}function h(a,b,c,d,e,g,h){return f(b&d|c&~d,a,b,e,g,h)}function i(a,b,c,d,e,g,h){return f(b^c^d,a,b,e,g,h)}function j(a,b,c,d,e,g,h){return f(c^(b|~d),a,b,e,g,h)}function k(a,b){a[b>>5]|=128<>>9<<4)+14]=b;var c,e,f,k,l,m=1732584193,n=-271733879,o=-1732584194,p=271733878;for(c=0;c>5]>>>b%32&255);return c}function m(a){var b,c=[];for(c[(a.length>>2)-1]=void 0,b=0;b>5]|=(255&a.charCodeAt(b/8))<16&&(e=k(e,8*a.length)),c=0;c<16;c+=1)f[c]=909522486^e[c],g[c]=1549556828^e[c];return d=k(f.concat(m(b)),512+8*b.length),l(k(g.concat(d),640))}function p(a){var b,c,d="0123456789abcdef",e="";for(c=0;c>>4&15)+d.charAt(15&b);return e}function q(a){return unescape(encodeURIComponent(a))}function r(a){return n(q(a))}function s(a){return p(r(a))}function t(a,b){return o(q(a),q(b))}function u(a,b){return p(t(a,b))}function v(a,b,c){return b?c?t(b,a):u(b,a):c?r(a):s(a)}b.exports=v},{}]},{},[7,1,2,3])(7)}); +/*! Raven.js 3.25.2 (30b6d4e) | github.com/getsentry/raven-js */ +!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.Raven=a()}}(function(){var a;return function b(a,c,d){function e(g,h){if(!c[g]){if(!a[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};a[g][0].call(k.exports,function(b){var c=a[g][1][b];return e(c?c:b)},k,k.exports,b,a,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;g":"anonymous component")+(a._isVue&&a.$options.__file?" at "+a.$options.__file:"")}function e(a,b){if(b=b||window.Vue,b&&b.config){var c=b.config.errorHandler;b.config.errorHandler=function(b,e,f){var g={};"[object Object]"===Object.prototype.toString.call(e)&&(g.componentName=d(e),g.propsData=e.$options.propsData),"undefined"!=typeof f&&(g.lifecycleHook=f),a.captureException(b,{extra:g}),"function"==typeof c&&c.call(this,b,e,f)}}}b.exports=e,a(7).addPlugin(b.exports)},{7:7}],4:[function(a,b,c){function d(a){this.name="RavenConfigError",this.message=a}d.prototype=new Error,d.prototype.constructor=d,b.exports=d},{}],5:[function(a,b,c){var d=a(8),e=function(a,b,c){var e=a[b],f=a;if(b in a){var g="warn"===b?"warning":b;a[b]=function(){var a=[].slice.call(arguments),h=d.safeJoin(a," "),i={level:g,logger:"console",extra:{arguments:a}};"assert"===b?a[0]===!1&&(h="Assertion failed: "+(d.safeJoin(a.slice(1)," ")||"console.assert"),i.extra.arguments=a.slice(1),c&&c(h,i)):c&&c(h,i),e&&Function.prototype.apply.call(e,f,a)}}};b.exports={wrapMethod:e}},{8:8}],6:[function(a,b,c){(function(c){function d(){return+new Date}function e(a,b){return s(b)?function(c){return b(c,a)}:b}function f(){this.a=!("object"!=typeof JSON||!JSON.stringify),this.b=!r(S),this.c=!r(T),this.d=null,this.e=null,this.f=null,this.g=null,this.h=null,this.i=null,this.j={},this.k={release:R.SENTRY_RELEASE&&R.SENTRY_RELEASE.id,logger:"javascript",ignoreErrors:[],ignoreUrls:[],whitelistUrls:[],includePaths:[],headers:null,collectWindowErrors:!0,captureUnhandledRejections:!0,maxMessageLength:0,maxUrlLength:250,stackTraceLimit:50,autoBreadcrumbs:!0,instrument:!0,sampleRate:1,sanitizeKeys:[]},this.l={method:"POST",keepalive:!0,referrerPolicy:K()?"origin":""},this.m=0,this.n=!1,this.o=Error.stackTraceLimit,this.p=R.console||{},this.q={},this.r=[],this.s=d(),this.t=[],this.u=[],this.v=null,this.w=R.location,this.x=this.w&&this.w.href,this.y();for(var a in this.p)this.q[a]=this.p[a]}var g=a(9),h=a(10),i=a(11),j=a(4),k=a(8),l=k.isErrorEvent,m=k.isDOMError,n=k.isDOMException,o=k.isError,p=k.isObject,q=k.isPlainObject,r=k.isUndefined,s=k.isFunction,t=k.isString,u=k.isArray,v=k.isEmptyObject,w=k.each,x=k.objectMerge,y=k.truncate,z=k.objectFrozen,A=k.hasKey,B=k.joinRegExp,C=k.urlencode,D=k.uuid4,E=k.htmlTreeAsString,F=k.isSameException,G=k.isSameStacktrace,H=k.parseUrl,I=k.fill,J=k.supportsFetch,K=k.supportsReferrerPolicy,L=k.serializeKeysForMessage,M=k.serializeException,N=k.sanitize,O=a(5).wrapMethod,P="source protocol user pass host port path".split(" "),Q=/^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/,R="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},S=R.document,T=R.navigator;f.prototype={VERSION:"3.25.2",debug:!1,TraceKit:g,config:function(a,b){var c=this;if(c.g)return this.z("error","Error: Raven has already been configured"),c;if(!a)return c;var d=c.k;b&&w(b,function(a,b){"tags"===a||"extra"===a||"user"===a?c.j[a]=b:d[a]=b}),c.setDSN(a),d.ignoreErrors.push(/^Script error\.?$/),d.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/),d.ignoreErrors=B(d.ignoreErrors),d.ignoreUrls=!!d.ignoreUrls.length&&B(d.ignoreUrls),d.whitelistUrls=!!d.whitelistUrls.length&&B(d.whitelistUrls),d.includePaths=B(d.includePaths),d.maxBreadcrumbs=Math.max(0,Math.min(d.maxBreadcrumbs||100,100));var e={xhr:!0,console:!0,dom:!0,location:!0,sentry:!0},f=d.autoBreadcrumbs;"[object Object]"==={}.toString.call(f)?f=x(e,f):f!==!1&&(f=e),d.autoBreadcrumbs=f;var h={tryCatch:!0},i=d.instrument;return"[object Object]"==={}.toString.call(i)?i=x(h,i):i!==!1&&(i=h),d.instrument=i,g.collectWindowErrors=!!d.collectWindowErrors,c},install:function(){var a=this;return a.isSetup()&&!a.n&&(g.report.subscribe(function(){a.A.apply(a,arguments)}),a.k.captureUnhandledRejections&&a.B(),a.C(),a.k.instrument&&a.k.instrument.tryCatch&&a.D(),a.k.autoBreadcrumbs&&a.E(),a.F(),a.n=!0),Error.stackTraceLimit=a.k.stackTraceLimit,this},setDSN:function(a){var b=this,c=b.G(a),d=c.path.lastIndexOf("/"),e=c.path.substr(1,d);b.H=a,b.h=c.user,b.I=c.pass&&c.pass.substr(1),b.i=c.path.substr(d+1),b.g=b.J(c),b.K=b.g+"/"+e+"api/"+b.i+"/store/",this.y()},context:function(a,b,c){return s(a)&&(c=b||[],b=a,a=void 0),this.wrap(a,b).apply(this,c)},wrap:function(a,b,c){function d(){var d=[],f=arguments.length,g=!a||a&&a.deep!==!1;for(c&&s(c)&&c.apply(this,arguments);f--;)d[f]=g?e.wrap(a,arguments[f]):arguments[f];try{return b.apply(this,d)}catch(h){throw e.L(),e.captureException(h,a),h}}var e=this;if(r(b)&&!s(a))return a;if(s(a)&&(b=a,a=void 0),!s(b))return b;try{if(b.M)return b;if(b.N)return b.N}catch(f){return b}for(var g in b)A(b,g)&&(d[g]=b[g]);return d.prototype=b.prototype,b.N=d,d.M=!0,d.O=b,d},uninstall:function(){return g.report.uninstall(),this.P(),this.Q(),this.R(),this.S(),Error.stackTraceLimit=this.o,this.n=!1,this},T:function(a){this.z("debug","Raven caught unhandled promise rejection:",a),this.captureException(a.reason,{extra:{unhandledPromiseRejection:!0}})},B:function(){return this.T=this.T.bind(this),R.addEventListener&&R.addEventListener("unhandledrejection",this.T),this},P:function(){return R.removeEventListener&&R.removeEventListener("unhandledrejection",this.T),this},captureException:function(a,b){if(b=x({trimHeadFrames:0},b?b:{}),l(a)&&a.error)a=a.error;else{if(m(a)||n(a)){var c=a.name||(m(a)?"DOMError":"DOMException"),d=a.message?c+": "+a.message:c;return this.captureMessage(d,x(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}))}if(o(a))a=a;else{if(!q(a))return this.captureMessage(a,x(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}));b=this.U(b,a),a=new Error(b.message)}}this.d=a;try{var e=g.computeStackTrace(a);this.V(e,b)}catch(f){if(a!==f)throw f}return this},U:function(a,b){var c=Object.keys(b).sort(),d=x(a,{message:"Non-Error exception captured with keys: "+L(c),fingerprint:[i(c)],extra:a.extra||{}});return d.extra.W=M(b),d},captureMessage:function(a,b){if(!this.k.ignoreErrors.test||!this.k.ignoreErrors.test(a)){b=b||{},a+="";var c,d=x({message:a},b);try{throw new Error(a)}catch(e){c=e}c.name=null;var f=g.computeStackTrace(c),h=u(f.stack)&&f.stack[1];h&&"Raven.captureException"===h.func&&(h=f.stack[2]);var i=h&&h.url||"";if((!this.k.ignoreUrls.test||!this.k.ignoreUrls.test(i))&&(!this.k.whitelistUrls.test||this.k.whitelistUrls.test(i))){if(this.k.stacktrace||b&&b.stacktrace){d.fingerprint=null==d.fingerprint?a:d.fingerprint,b=x({trimHeadFrames:0},b),b.trimHeadFrames+=1;var j=this.X(f,b);d.stacktrace={frames:j.reverse()}}return d.fingerprint&&(d.fingerprint=u(d.fingerprint)?d.fingerprint:[d.fingerprint]),this.Y(d),this}}},captureBreadcrumb:function(a){var b=x({timestamp:d()/1e3},a);if(s(this.k.breadcrumbCallback)){var c=this.k.breadcrumbCallback(b);if(p(c)&&!v(c))b=c;else if(c===!1)return this}return this.u.push(b),this.u.length>this.k.maxBreadcrumbs&&this.u.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.r.push([a,b]),this.n&&this.F(),this},setUserContext:function(a){return this.j.user=a,this},setExtraContext:function(a){return this.Z("extra",a),this},setTagsContext:function(a){return this.Z("tags",a),this},clearContext:function(){return this.j={},this},getContext:function(){return JSON.parse(h(this.j))},setEnvironment:function(a){return this.k.environment=a,this},setRelease:function(a){return this.k.release=a,this},setDataCallback:function(a){var b=this.k.dataCallback;return this.k.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.k.breadcrumbCallback;return this.k.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.k.shouldSendCallback;return this.k.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.k.transport=a,this},lastException:function(){return this.d},lastEventId:function(){return this.f},isSetup:function(){return!!this.a&&(!!this.g||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.z("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=R.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(S){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.H;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.j.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.J(this.G(c)),h=S.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(S.head||S.body).appendChild(h)}},L:function(){var a=this;this.m+=1,setTimeout(function(){a.m-=1})},$:function(a,b){var c,d;if(this.b){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),S.createEvent?(c=S.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=S.createEventObject(),c.eventType=a);for(d in b)A(b,d)&&(c[d]=b[d]);if(S.createEvent)S.dispatchEvent(c);else try{S.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},_:function(a){var b=this;return function(c){if(b.aa=null,b.v!==c){b.v=c;var d;try{d=E(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ba:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.aa;g||a._("input")(c),clearTimeout(g),a.aa=setTimeout(function(){a.aa=null},b)}}},ca:function(a,b){var c=H(this.w.href),d=H(b),e=H(a);this.x=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},C:function(){var a=this;a.da=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.M?a.da.apply(this.O,arguments):a.da.apply(this,arguments)}},Q:function(){this.da&&(Function.prototype.toString=this.da)},D:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.ca(b.x,c+""),a.apply(this,arguments)}};I(R.history,"pushState",j,d),I(R.history,"replaceState",j,d)}if(c.console&&"console"in R&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};w(["debug","info","warn","error","log"],function(a,b){O(console,b,k)})}},R:function(){for(var a;this.t.length;){a=this.t.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},S:function(){for(var a in this.q)this.p[a]=this.q[a]},F:function(){var a=this;w(this.r,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},G:function(a){var b=Q.exec(a),c={},d=7;try{for(;d--;)c[P[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.k.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},J:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},A:function(){this.m||this.V.apply(this,arguments)},V:function(a,b){var c=this.X(a,b);this.$("handle",{stackInfo:a,options:b}),this.fa(a.name,a.message,a.url,a.lineno,c,b)},X:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(w(a.stack,function(b,e){var f=c.ga(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.u,0)}),this.j.user&&(a.user=this.j.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),a=this.pa(a),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||v(a[b]))&&delete a[b]}),s(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!v(a)&&(!s(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.ma()?void this.z("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function F(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&l(b))for(c=b.split(/\s+/),f=0;fc?Q(a,b-1):d}function R(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?X:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function S(a,b){function c(a){return m(a)?a.map(function(a){return c(a)}):k(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!m(b)||m(b)&&0===b.length)return a;var d,e=A(b),f="********";try{d=JSON.parse(T(a))}catch(g){return a}return c(d)}var T=a(10),U="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},V=3,W=51200,X=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isDOMError:g,isDOMException:h,isUndefined:i,isFunction:j,isPlainObject:k,isString:l,isArray:m,isEmptyObject:n,supportsErrorEvent:o,supportsDOMError:p,supportsDOMException:q,supportsFetch:r,supportsReferrerPolicy:s,supportsPromiseRejectionEvent:t,wrappedCallback:u,each:v,objectMerge:w,truncate:y,objectFrozen:x,hasKey:z,joinRegExp:A,urlencode:B,uuid4:D,htmlTreeAsString:E,htmlElementAsString:F,isSameException:I,isSameStacktrace:J,parseUrl:C,fill:K,safeJoin:L,serializeException:Q,serializeKeysForMessage:R,sanitize:S}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{10:10}],9:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}function e(){return"undefined"==typeof document||null==document.location?"":(document.location.origin||(document.location.origin=document.location.protocol+"//"+document.location.hostname+(document.location.port?":"+document.location.port:"")),document.location.origin)}var f=a(8),g={collectWindowErrors:!0,debug:!1},h="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},i=[].slice,j="?",k=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;g.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function e(a,b){var c=null;if(!b||g.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(i.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,h,i){var l=null,m=f.isErrorEvent(i)?i.error:i,n=f.isErrorEvent(a)?a.message:a;if(v)g.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&f.isError(m))l=g.computeStackTrace(m),e(l,!0);else{var p,r={url:b,line:c,column:h},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(k);p&&(s=p[1],n=p[2])}r.func=j,l={name:s,message:n,url:d(),stack:[r]},e(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=h.onerror,h.onerror=l,r=!0)}function n(){r&&(h.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,e.apply(null,[a,!1].concat(b))}function p(a,b){var c=i.call(arguments,1);if(v){if(u===a)return;o()}var d=g.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),g.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,f,g=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,h=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,i=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,k=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,l=/\((\S*)(?::(\d+))(?::(\d+))\)/,m=a.stack.split("\n"),n=[],o=(/^(.*) is undefined$/.exec(a.message),0),p=m.length;o eval")>-1;r&&(b=k.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==o||c[5]||"undefined"==typeof a.columnNumber||(n[0].column=a.columnNumber+1),f={url:c[3],func:c[1]||j,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}if(!f.func&&f.line&&(f.func=j),f.url&&"blob:"===f.url.substr(0,5)){var s=new XMLHttpRequest;if(s.open("GET",f.url,!1),s.send(null),200===s.status){var t=s.responseText||"";t=t.slice(-300);var u=t.match(/\/\/# sourceMappingURL=(.*)$/);if(u){var v=u[1];"~"===v.charAt(0)&&(v=e()+v.slice(1)),f.url=v.slice(0,-4)}}}n.push(f)}return n.length?{name:a.name, +message:a.message,url:d(),stack:n}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=j),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,e){for(var h,i,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==f&&o!==g.report){if(i={url:null,func:j,line:null,column:null},o.name?i.func=o.name:(h=k.exec(o.toString()))&&(i.func=h[1]),"undefined"==typeof i.func)try{i.func=h.input.substring(0,h.input.indexOf("{"))}catch(p){}m[""+o]?n=!0:m[""+o]=!0,l.push(i)}e&&l.splice(0,e);var q={name:a.name,message:a.message,url:d(),stack:l};return b(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),q}function f(b,e){var f=null;e=null==e?0:+e;try{if(f=a(b))return f}catch(h){if(g.debug)throw h}try{if(f=c(b,e+1))return f}catch(h){if(g.debug)throw h}return{name:b.name,message:b.message,url:d()}}return f.augmentStackTraceWithInitialElement=b,f.computeStackTraceFromStackProp=a,f}(),b.exports=g}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{8:8}],10:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}],11:[function(a,b,c){function d(a,b){var c=(65535&a)+(65535&b),d=(a>>16)+(b>>16)+(c>>16);return d<<16|65535&c}function e(a,b){return a<>>32-b}function f(a,b,c,f,g,h){return d(e(d(d(b,a),d(f,h)),g),c)}function g(a,b,c,d,e,g,h){return f(b&c|~b&d,a,b,e,g,h)}function h(a,b,c,d,e,g,h){return f(b&d|c&~d,a,b,e,g,h)}function i(a,b,c,d,e,g,h){return f(b^c^d,a,b,e,g,h)}function j(a,b,c,d,e,g,h){return f(c^(b|~d),a,b,e,g,h)}function k(a,b){a[b>>5]|=128<>>9<<4)+14]=b;var c,e,f,k,l,m=1732584193,n=-271733879,o=-1732584194,p=271733878;for(c=0;c>5]>>>b%32&255);return c}function m(a){var b,c=[];for(c[(a.length>>2)-1]=void 0,b=0;b>5]|=(255&a.charCodeAt(b/8))<16&&(e=k(e,8*a.length)),c=0;c<16;c+=1)f[c]=909522486^e[c],g[c]=1549556828^e[c];return d=k(f.concat(m(b)),512+8*b.length),l(k(g.concat(d),640))}function p(a){var b,c,d="0123456789abcdef",e="";for(c=0;c>>4&15)+d.charAt(15&b);return e}function q(a){return unescape(encodeURIComponent(a))}function r(a){return n(q(a))}function s(a){return p(r(a))}function t(a,b){return o(q(a),q(b))}function u(a,b){return p(t(a,b))}function v(a,b,c){return b?c?t(b,a):u(b,a):c?r(a):s(a)}b.exports=v},{}]},{},[7,1,2,3])(7)}); //# sourceMappingURL=raven.min.js.map \ No newline at end of file diff --git a/dist/ember,require,vue/raven.min.js.map b/dist/ember,require,vue/raven.min.js.map index 6efd12d10baa..04705f570c8a 100644 --- a/dist/ember,require,vue/raven.min.js.map +++ b/dist/ember,require,vue/raven.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","emberPlugin","Ember","_oldOnError","onerror","error","captureException","RSVP","on","reason","extra","context","captureMessage","addPlugin","7","2","requirePlugin","wrap","deep","3","formatComponentName","vm","$root","name","_isVue","$options","_componentTag","__file","vuePlugin","Vue","config","errorHandler","info","metaData","Object","prototype","toString","componentName","propsData","lifecycleHook","4","RavenConfigError","message","constructor","5","utils","wrapMethod","console","level","callback","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","msg","safeJoin","data","logger","Function","apply","8","6","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","sanitizeKeys","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isErrorEvent","isDOMError","isDOMException","isError","isObject","isPlainObject","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","sanitize","wrapConsoleMethod","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","dsn","options","_logDebug","globalOptions","key","value","setDSN","push","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","substr","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","func","undefined","_before","wrapped","_ignoreNextOnError","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","T","event","unhandledPromiseRejection","B","_promiseRejectionHandler","bind","addEventListener","P","removeEventListener","ex","trimHeadFrames","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","U","currentOptions","exKeys","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","setDataCallback","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","L","setTimeout","$","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","_","evtName","_keypressTimeout","target","category","ba","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","ca","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","C","_originalFunctionToString","Q","D","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","type","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","E","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","R","builtin","S","F","installer","concat","G","str","m","exec","allowSecretKey","J","port","A","V","stackInfo","_triggerEvent","_processException","lineno","X","frame","_normalizeFrame","in_app","ga","stackInfoUrl","normalized","filename","line","colno","column","function","fa","prefixedMessage","exception","values","culprit","ha","request","Referer","breadcrumbs","_trimBreadcrumbs","ia","urlProp","urlProps","ja","httpData","userAgent","User-Agent","referrer","y","_backoffDuration","_backoffStart","ma","na","current","last","oa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Y","baseData","project","platform","_getHttpData","serverName","server_name","_sanitizeData","forEach","random","_sendProcessedPayload","pa","ra","qa","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","sa","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","open","setRequestHeader","send","ta","hash","evaluated","z","Z","setUser","setReleaseContext","10","11","9","RavenConstructor","_Raven","noConflict","Client","what","supportsErrorEvent","ErrorEvent","supportsDOMError","DOMError","supportsDOMException","DOMException","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","wrappedCallback","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","sanitizeMask","safeInput","o_O","getLocationHref","getLocationOrigin","origin","hostname","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","responseText","sourceMaps","sourceMapAddress","charAt","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","string","raw"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file +{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","emberPlugin","Ember","_oldOnError","onerror","error","captureException","RSVP","on","reason","extra","context","captureMessage","addPlugin","7","2","requirePlugin","wrap","deep","3","formatComponentName","vm","$root","name","_isVue","$options","_componentTag","__file","vuePlugin","Vue","config","errorHandler","info","metaData","Object","prototype","toString","componentName","propsData","lifecycleHook","4","RavenConfigError","message","constructor","5","utils","wrapMethod","console","level","callback","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","msg","safeJoin","data","logger","Function","apply","8","6","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","sanitizeKeys","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isErrorEvent","isDOMError","isDOMException","isError","isObject","isPlainObject","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","sanitize","wrapConsoleMethod","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","dsn","options","_logDebug","globalOptions","key","value","setDSN","push","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","substr","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","func","undefined","_before","wrapped","_ignoreNextOnError","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","T","event","unhandledPromiseRejection","B","_promiseRejectionHandler","bind","addEventListener","P","removeEventListener","ex","trimHeadFrames","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","U","currentOptions","exKeys","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","setDataCallback","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","L","setTimeout","$","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","_","evtName","_keypressTimeout","target","category","ba","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","ca","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","C","_originalFunctionToString","Q","D","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","type","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","E","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","R","builtin","S","F","installer","concat","G","str","m","exec","allowSecretKey","J","port","A","V","stackInfo","_triggerEvent","_processException","lineno","X","frame","_normalizeFrame","in_app","ga","stackInfoUrl","normalized","filename","line","colno","column","function","fa","prefixedMessage","exception","values","transaction","ha","request","Referer","breadcrumbs","_trimBreadcrumbs","ia","urlProp","urlProps","ja","httpData","userAgent","User-Agent","referrer","y","_backoffDuration","_backoffStart","ma","na","current","last","oa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Y","baseData","project","platform","_getHttpData","serverName","server_name","_sanitizeData","forEach","random","_sendProcessedPayload","pa","ra","qa","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","sa","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","open","setRequestHeader","send","ta","hash","evaluated","z","Z","setUser","setReleaseContext","10","11","9","RavenConstructor","_Raven","noConflict","Client","what","supportsErrorEvent","ErrorEvent","supportsDOMError","DOMError","supportsDOMException","DOMException","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","wrappedCallback","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","sanitizeMask","safeInput","o_O","getLocationHref","getLocationOrigin","origin","hostname","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","responseText","sourceMaps","sourceMapAddress","charAt","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","string","raw"],"mappings":";CAYA,SAAUA,GAAG,GAAoB,gBAAVC,UAAoC,mBAATC,QAAsBA,OAAOD,QAAQD,QAAS,IAAmB,kBAATG,SAAqBA,OAAOC,IAAKD,UAAUH,OAAO,CAAC,GAAIK,EAAkCA,GAAb,mBAATC,QAAwBA,OAA+B,mBAATC,QAAwBA,OAA6B,mBAAPC,MAAsBA,KAAYC,KAAKJ,EAAEK,MAAQV,MAAO,WAAW,GAAIG,EAAsB,OAAO,SAAUQ,GAAEC,EAAEC,EAAEC,GAAG,QAASC,GAAEC,EAAEC,GAAG,IAAIJ,EAAEG,GAAG,CAAC,IAAIJ,EAAEI,GAAG,CAAC,GAAIE,GAAkB,kBAATC,UAAqBA,OAAQ,KAAIF,GAAGC,EAAE,MAAOA,GAAEF,GAAE,EAAI,IAAGI,EAAE,MAAOA,GAAEJ,GAAE,EAAI,IAAIhB,GAAE,GAAIqB,OAAM,uBAAuBL,EAAE,IAAK,MAAMhB,GAAEsB,KAAK,mBAAmBtB,EAAE,GAAIuB,GAAEV,EAAEG,IAAIf,WAAYW,GAAEI,GAAG,GAAGQ,KAAKD,EAAEtB,QAAQ,SAASU,GAAG,GAAIE,GAAED,EAAEI,GAAG,GAAGL,EAAG,OAAOI,GAAEF,EAAEA,EAAEF,IAAIY,EAAEA,EAAEtB,QAAQU,EAAEC,EAAEC,EAAEC,GAAG,MAAOD,GAAEG,GAAGf,QAAkD,IAAI,GAA1CmB,GAAkB,kBAATD,UAAqBA,QAAgBH,EAAE,EAAEA,EAAEF,EAAEW,OAAOT,IAAID,EAAED,EAAEE,GAAI,OAAOD,KAAKW,GAAG,SAASC,EAAQzB,EAAOD,GAMp0B,QAAS2B,GAAYlB,EAAOmB,GAI1B,GAHAA,EAAQA,GAASvB,OAAOuB,MAGxB,CAEA,GAAIC,GAAcD,EAAME,OACxBF,GAAME,QAAU,SAAsBC,GACpCtB,EAAMuB,iBAAiBD,GACI,kBAAhBF,IACTA,EAAYN,KAAKf,KAAMuB,IAG3BH,EAAMK,KAAKC,GAAG,QAAS,SAASC,GAC1BA,YAAkBf,OACpBX,EAAMuB,iBAAiBG,GACrBC,OAAQC,QAAS,sCAGnB5B,EAAM6B,eAAe,oCAAqCF,OAAQD,OAAQA,QAKhFlC,EAAOD,QAAU2B,EAEjBD,EAAQ,GAAGa,UAAUtC,EAAOD,WACzBwC,EAAI,IAAIC,GAAG,SAASf,EAAQzB,EAAOD,GAOtC,QAAS0C,GAAcjC,GACC,kBAAXP,IAAyBA,EAAOC,MACzCE,OAAOH,OAASO,EAAMkC,MAAMC,MAAM,GAAQ1C,GAC1CG,OAAOa,QAAUT,EAAMkC,MAAMC,MAAM,GAAQlB,IAI/CzB,EAAOD,QAAU0C,EAEjBhB,EAAQ,GAAGa,UAAUtC,EAAOD,WACzBwC,EAAI,IAAIK,GAAG,SAASnB,EAAQzB,EAAOD,GAMtC,QAAS8C,GAAoBC,GAC3B,GAAIA,EAAGC,QAAUD,EACf,MAAO,eAET,IAAIE,GAAOF,EAAGG,OAASH,EAAGI,SAASF,MAAQF,EAAGI,SAASC,cAAgBL,EAAGE,IAC1E,QACGA,EAAO,cAAgBA,EAAO,IAAM,wBACpCF,EAAGG,QAAUH,EAAGI,SAASE,OAAS,OAASN,EAAGI,SAASE,OAAS,IAIrE,QAASC,GAAU7C,EAAO8C,GAIxB,GAHAA,EAAMA,GAAOlD,OAAOkD,IAGfA,GAAQA,EAAIC,OAAjB,CAEA,GAAI3B,GAAc0B,EAAIC,OAAOC,YAC7BF,GAAIC,OAAOC,aAAe,SAAyB1B,EAAOgB,EAAIW,GAC5D,GAAIC,KAGuC,qBAAvCC,OAAOC,UAAUC,SAASvC,KAAKwB,KACjCY,EAASI,cAAgBjB,EAAoBC,GAC7CY,EAASK,UAAYjB,EAAGI,SAASa,WAGf,mBAATN,KACTC,EAASM,cAAgBP,GAG3BjD,EAAMuB,iBAAiBD,GACrBK,MAAOuB,IAGkB,kBAAhB9B,IACTA,EAAYN,KAAKf,KAAMuB,EAAOgB,EAAIW,KAKxCzD,EAAOD,QAAUsD,EAEjB5B,EAAQ,GAAGa,UAAUtC,EAAOD,WACzBwC,EAAI,IAAI0B,GAAG,SAASxC,EAAQzB,EAAOD,GACtC,QAASmE,GAAiBC,GACxB5D,KAAKyC,KAAO,mBACZzC,KAAK4D,QAAUA,EAEjBD,EAAiBN,UAAY,GAAIzC,OACjC+C,EAAiBN,UAAUQ,YAAcF,EAEzClE,EAAOD,QAAUmE,OAEXG,GAAG,SAAS5C,EAAQzB,EAAOD,GACjC,GAAIuE,GAAQ7C,EAAQ,GAEhB8C,EAAa,SAASC,EAASC,EAAOC,GACxC,GAAIC,GAAuBH,EAAQC,GAC/BG,EAAkBJ,CAEtB,IAAMC,IAASD,GAAf,CAIA,GAAIK,GAAwB,SAAVJ,EAAmB,UAAYA,CAEjDD,GAAQC,GAAS,WACf,GAAIK,MAAUC,MAAMzD,KAAK0D,WAErBC,EAAMX,EAAMY,SAASJ,EAAM,KAC3BK,GAAQV,MAAOI,EAAaO,OAAQ,UAAWjD,OAAQ6C,UAAWF,GAExD,YAAVL,EACEK,EAAK,MAAO,IAEdG,EACE,sBAAwBX,EAAMY,SAASJ,EAAKC,MAAM,GAAI,MAAQ,kBAChEI,EAAKhD,MAAM6C,UAAYF,EAAKC,MAAM,GAClCL,GAAYA,EAASO,EAAKE,IAG5BT,GAAYA,EAASO,EAAKE,GAIxBR,GAGFU,SAASzB,UAAU0B,MAAMhE,KAAKqD,EAAsBC,EAAiBE,KAK3E9E,GAAOD,SACLwE,WAAYA,KAGXgB,EAAI,IAAIC,GAAG,SAAS/D,EAAQzB,EAAOD,IACtC,SAAWM,GA4CX,QAASoF,KACP,OAAQ,GAAIC,MAed,QAASC,GAAqBC,EAAUlB,GACtC,MAAOmB,GAAWnB,GACd,SAASS,GACP,MAAOT,GAASS,EAAMS,IAExBlB,EAMN,QAASlE,KACPD,KAAKuF,IAA8B,gBAATC,QAAqBA,KAAKC,WAEpDzF,KAAK0F,GAAgBC,EAAYC,GACjC5F,KAAK6F,GAAiBF,EAAYG,GAClC9F,KAAK+F,EAAyB,KAC9B/F,KAAKgG,EAAY,KACjBhG,KAAKiG,EAAe,KACpBjG,KAAKkG,EAAgB,KACrBlG,KAAKmG,EAAa,KAClBnG,KAAKoG,EAAiB,KACtBpG,KAAKqG,KACLrG,KAAKsG,GAEHC,QAASC,EAAQC,gBAAkBD,EAAQC,eAAeC,GAC1D7B,OAAQ,aACR8B,gBACAC,cACAC,iBACAC,gBACAC,QAAS,KACTC,qBAAqB,EACrBC,4BAA4B,EAC5BC,iBAAkB,EAElBC,aAAc,IACdC,gBAAiB,GACjBC,iBAAiB,EACjBC,YAAY,EACZC,WAAY,EACZC,iBAEFxH,KAAKyH,GACHC,OAAQ,OACRC,WAAW,EAKXC,eAAgBC,IAA2B,SAAW,IAExD7H,KAAK8H,EAAiB,EACtB9H,KAAK+H,GAAoB,EACzB/H,KAAKgI,EAAgCpH,MAAMwG,gBAG3CpH,KAAKiI,EAAmBzB,EAAQvC,YAChCjE,KAAKkI,KACLlI,KAAKmI,KACLnI,KAAKoI,EAAalD,IAClBlF,KAAKqI,KACLrI,KAAKsI,KACLtI,KAAKuI,EAAqB,KAE1BvI,KAAKwI,EAAYhC,EAAQiC,SACzBzI,KAAK0I,EAAY1I,KAAKwI,GAAaxI,KAAKwI,EAAUG,KAClD3I,KAAK4I,GAGL,KAAK,GAAIlB,KAAU1H,MAAKiI,EACtBjI,KAAKkI,EAAwBR,GAAU1H,KAAKiI,EAAiBP,GAhIjE,GAAImB,GAAW3H,EAAQ,GACnBuE,EAAYvE,EAAQ,IACpB4H,EAAM5H,EAAQ,IACdyC,EAAmBzC,EAAQ,GAE3B6C,EAAQ7C,EAAQ,GAChB6H,EAAehF,EAAMgF,aACrBC,EAAajF,EAAMiF,WACnBC,EAAiBlF,EAAMkF,eACvBC,EAAUnF,EAAMmF,QAChBC,EAAWpF,EAAMoF,SACjBC,EAAgBrF,EAAMqF,cACtBzD,EAAc5B,EAAM4B,YACpBL,EAAavB,EAAMuB,WACnB+D,EAAWtF,EAAMsF,SACjBC,EAAUvF,EAAMuF,QAChBC,EAAgBxF,EAAMwF,cACtBC,EAAOzF,EAAMyF,KACbC,EAAc1F,EAAM0F,YACpBC,EAAW3F,EAAM2F,SACjBC,EAAe5F,EAAM4F,aACrBC,EAAS7F,EAAM6F,OACfC,EAAa9F,EAAM8F,WACnBC,EAAY/F,EAAM+F,UAClBC,EAAQhG,EAAMgG,MACdC,EAAmBjG,EAAMiG,iBACzBC,EAAkBlG,EAAMkG,gBACxBC,EAAmBnG,EAAMmG,iBACzBC,EAAWpG,EAAMoG,SACjBC,EAAOrG,EAAMqG,KACbC,EAAgBtG,EAAMsG,cACtBxC,EAAyB9D,EAAM8D,uBAC/ByC,EAA0BvG,EAAMuG,wBAChCC,EAAqBxG,EAAMwG,mBAC3BC,EAAWzG,EAAMyG,SAEjBC,EAAoBvJ,EAAQ,GAAG8C,WAE/B0G,EAAU,2CAA2CC,MAAM,KAC7DC,EAAa,gEAOXpE,EACgB,mBAAX3G,QACHA,OACkB,mBAAXC,GACLA,EACgB,mBAATC,MACLA,QAEN6F,EAAYY,EAAQqE,SACpB/E,EAAaU,EAAQsE,SAmFzB7K,GAAMoD,WAKJ0H,QAAS,SAETC,OAAO,EAEPnC,SAAUA,EASV7F,OAAQ,SAASiI,EAAKC,GACpB,GAAInL,GAAOC,IAEX,IAAID,EAAKmG,EAEP,MADAlG,MAAKmL,EAAU,QAAS,4CACjBpL,CAET,KAAKkL,EAAK,MAAOlL,EAEjB,IAAIqL,GAAgBrL,EAAKuG,CAGrB4E,IACF1B,EAAK0B,EAAS,SAASG,EAAKC,GAEd,SAARD,GAA0B,UAARA,GAA2B,SAARA,EACvCtL,EAAKsG,EAAegF,GAAOC,EAE3BF,EAAcC,GAAOC,IAK3BvL,EAAKwL,OAAON,GAIZG,EAAczE,aAAa6E,KAAK,qBAChCJ,EAAczE,aAAa6E,KAAK,iDAGhCJ,EAAczE,aAAekD,EAAWuB,EAAczE,cACtDyE,EAAcxE,aAAawE,EAAcxE,WAAW5F,QAChD6I,EAAWuB,EAAcxE,YAE7BwE,EAAcvE,gBAAgBuE,EAAcvE,cAAc7F,QACtD6I,EAAWuB,EAAcvE,eAE7BuE,EAActE,aAAe+C,EAAWuB,EAActE,cACtDsE,EAAcK,eAAiBC,KAAKC,IAClC,EACAD,KAAKE,IAAIR,EAAcK,gBAAkB,IAAK,KAGhD,IAAII,IACFC,KAAK,EACL7H,SAAS,EACT8H,KAAK,EACLtD,UAAU,EACVuD,QAAQ,GAGN3E,EAAkB+D,EAAc/D,eACM,wBAAnC/D,SAASvC,KAAKsG,GACnBA,EAAkBoC,EAAYoC,EAAwBxE,GAC7CA,KAAoB,IAC7BA,EAAkBwE,GAEpBT,EAAc/D,gBAAkBA,CAEhC,IAAI4E,IACFC,UAAU,GAGR5E,EAAa8D,EAAc9D,UAW/B,OAVqC,uBAA9BhE,SAASvC,KAAKuG,GACnBA,EAAamC,EAAYwC,EAAoB3E,GACpCA,KAAe,IACxBA,EAAa2E,GAEfb,EAAc9D,WAAaA,EAE3BuB,EAAS7B,sBAAwBoE,EAAcpE,oBAGxCjH,GAWToM,QAAS,WACP,GAAIpM,GAAOC,IAyBX,OAxBID,GAAKqM,YAAcrM,EAAKgI,IAC1Bc,EAASwD,OAAOC,UAAU,WACxBvM,EAAKwM,EAAwBxH,MAAMhF,EAAM0E,aAGvC1E,EAAKuG,EAAeW,4BACtBlH,EAAKyM,IAGPzM,EAAK0M,IAED1M,EAAKuG,EAAegB,YAAcvH,EAAKuG,EAAegB,WAAW4E,UACnEnM,EAAK2M,IAGH3M,EAAKuG,EAAee,iBAAiBtH,EAAK4M,IAG9C5M,EAAK6M,IAEL7M,EAAKgI,GAAoB,GAG3BnH,MAAMwG,gBAAkBrH,EAAKuG,EAAec,gBACrCpH,MAQTuL,OAAQ,SAASN,GACf,GAAIlL,GAAOC,KACT6M,EAAM9M,EAAK+M,EAAU7B,GACrB8B,EAAYF,EAAIG,KAAKC,YAAY,KACjCD,EAAOH,EAAIG,KAAKE,OAAO,EAAGH,EAE5BhN,GAAKoN,EAAOlC,EACZlL,EAAKoG,EAAa0G,EAAIO,KACtBrN,EAAKsN,EAAgBR,EAAIS,MAAQT,EAAIS,KAAKJ,OAAO,GACjDnN,EAAKqG,EAAiByG,EAAIG,KAAKE,OAAOH,EAAY,GAElDhN,EAAKmG,EAAgBnG,EAAKwN,EAAiBV,GAE3C9M,EAAKyN,EACHzN,EAAKmG,EAAgB,IAAM8G,EAAO,OAASjN,EAAKqG,EAAiB,UAInEpG,KAAK4I,KAWP/G,QAAS,SAASqJ,EAASuC,EAAMlJ,GAO/B,MANIe,GAAW4F,KACb3G,EAAOkJ,MACPA,EAAOvC,EACPA,EAAUwC,QAGL1N,KAAKmC,KAAK+I,EAASuC,GAAM1I,MAAM/E,KAAMuE,IAW9CpC,KAAM,SAAS+I,EAASuC,EAAME,GAqC5B,QAASC,KACP,GAAIrJ,MACF5D,EAAI8D,UAAUzD,OACdoB,GAAQ8I,GAAYA,GAAWA,EAAQ9I,QAAS,CAQlD,KANIuL,GAAWrI,EAAWqI,IACxBA,EAAQ5I,MAAM/E,KAAMyE,WAKf9D,KAAK4D,EAAK5D,GAAKyB,EAAOrC,EAAKoC,KAAK+I,EAASzG,UAAU9D,IAAM8D,UAAU9D,EAE1E,KAKE,MAAO8M,GAAK1I,MAAM/E,KAAMuE,GACxB,MAAOrE,GAGP,KAFAH,GAAK8N,IACL9N,EAAKyB,iBAAiBtB,EAAGgL,GACnBhL,GA1DV,GAAIH,GAAOC,IAGX,IAAI2F,EAAY8H,KAAUnI,EAAW4F,GACnC,MAAOA,EAWT,IAPI5F,EAAW4F,KACbuC,EAAOvC,EACPA,EAAUwC,SAKPpI,EAAWmI,GACd,MAAOA,EAIT,KACE,GAAIA,EAAKK,EACP,MAAOL,EAIT,IAAIA,EAAKM,EACP,MAAON,GAAKM,EAEd,MAAO7N,GAIP,MAAOuN,GA8BT,IAAK,GAAIO,KAAYP,GACf7D,EAAO6D,EAAMO,KACfJ,EAAQI,GAAYP,EAAKO,GAW7B,OARAJ,GAAQvK,UAAYoK,EAAKpK,UAEzBoK,EAAKM,EAAoBH,EAGzBA,EAAQE,GAAY,EACpBF,EAAQK,EAAWR,EAEZG,GAQTM,UAAW,WAWT,MAVArF,GAASwD,OAAO6B,YAEhBlO,KAAKmO,IACLnO,KAAKoO,IACLpO,KAAKqO,IACLrO,KAAKsO,IAEL1N,MAAMwG,gBAAkBpH,KAAKgI,EAC7BhI,KAAK+H,GAAoB,EAElB/H,MAWTuO,EAA0B,SAASC,GACjCxO,KAAKmL,EAAU,QAAS,4CAA6CqD,GACrExO,KAAKwB,iBAAiBgN,EAAM7M,QAC1BC,OACE6M,2BAA2B,MAUjCC,EAAgC,WAI9B,MAHA1O,MAAK2O,EAA2B3O,KAAK2O,EAAyBC,KAAK5O,MACnEwG,EAAQqI,kBACNrI,EAAQqI,iBAAiB,qBAAsB7O,KAAK2O,GAC/C3O,MAQT8O,EAAgC,WAG9B,MAFAtI,GAAQuI,qBACNvI,EAAQuI,oBAAoB,qBAAsB/O,KAAK2O,GAClD3O,MAUTwB,iBAAkB,SAASwN,EAAI9D,GAG7B,GAFAA,EAAUzB,GAAawF,eAAgB,GAAI/D,EAAUA,MAEjDnC,EAAaiG,IAAOA,EAAGzN,MAEzByN,EAAKA,EAAGzN,UACH,CAAA,GAAIyH,EAAWgG,IAAO/F,EAAe+F,GAAK,CAK/C,GAAIvM,GAAOuM,EAAGvM,OAASuG,EAAWgG,GAAM,WAAa,gBACjDpL,EAAUoL,EAAGpL,QAAUnB,EAAO,KAAOuM,EAAGpL,QAAUnB,CAEtD,OAAOzC,MAAK8B,eACV8B,EACA6F,EAAYyB,GAGVgE,YAAY,EACZD,eAAgB/D,EAAQ+D,eAAiB,KAGxC,GAAI/F,EAAQ8F,GAEjBA,EAAKA,MACA,CAAA,IAAI5F,EAAc4F,GAavB,MAAOhP,MAAK8B,eACVkN,EACAvF,EAAYyB,GACVgE,YAAY,EACZD,eAAgB/D,EAAQ+D,eAAiB,IAb7C/D,GAAUlL,KAAKmP,EAA2CjE,EAAS8D,GACnEA,EAAK,GAAIpO,OAAMsK,EAAQtH,UAkBzB5D,KAAK+F,EAAyBiJ,CAO9B,KACE,GAAII,GAAQvG,EAASwG,kBAAkBL,EACvChP,MAAKsP,EAAiBF,EAAOlE,GAC7B,MAAOqE,GACP,GAAIP,IAAOO,EACT,KAAMA,GAIV,MAAOvP,OAGTwP,EAA4C,SAASC,EAAgBT,GACnE,GAAIU,GAAStM,OAAOuM,KAAKX,GAAIY,OACzB1E,EAAUzB,EAAYgG,GACxB7L,QACE,2CAA6C0G,EAAwBoF,GACvEG,aAAc/G,EAAI4G,IAClB9N,MAAO6N,EAAe7N,WAIxB,OAFAsJ,GAAQtJ,MAAMkO,EAAiBvF,EAAmByE,GAE3C9D,GAUTpJ,eAAgB,SAAS4C,EAAKwG,GAI5B,IACIlL,KAAKsG,EAAeK,aAAaoJ,OACnC/P,KAAKsG,EAAeK,aAAaoJ,KAAKrL,GAFxC,CAOAwG,EAAUA,MACVxG,GAAY,EAEZ,IAOIsK,GAPApK,EAAO6E,GAEP7F,QAASc,GAEXwG,EAQF,KACE,KAAM,IAAItK,OAAM8D,GAChB,MAAO6K,GACPP,EAAKO,EAIPP,EAAGvM,KAAO,IACV,IAAI2M,GAAQvG,EAASwG,kBAAkBL,GAGnCgB,EAAc1G,EAAQ8F,EAAMA,QAAUA,EAAMA,MAAM,EAKlDY,IAAoC,2BAArBA,EAAYvC,OAC7BuC,EAAcZ,EAAMA,MAAM,GAG5B,IAAIa,GAAWD,GAAeA,EAAYE,KAAQ,EAElD,MACIlQ,KAAKsG,EAAeM,WAAWmJ,OACjC/P,KAAKsG,EAAeM,WAAWmJ,KAAKE,OAMlCjQ,KAAKsG,EAAeO,cAAckJ,MACnC/P,KAAKsG,EAAeO,cAAckJ,KAAKE,IAF1C,CAOA,GAAIjQ,KAAKsG,EAAe4I,YAAehE,GAAWA,EAAQgE,WAAa,CAErEtK,EAAKiL,YAAkC,MAApBjL,EAAKiL,YAAsBnL,EAAME,EAAKiL,YAEzD3E,EAAUzB,GAENwF,eAAgB,GAElB/D,GAMFA,EAAQ+D,gBAAkB,CAE1B,IAAIkB,GAASnQ,KAAKoQ,EAAehB,EAAOlE,EACxCtG,GAAKsK,YAEHiB,OAAQA,EAAOE,WAcnB,MATIzL,GAAKiL,cACPjL,EAAKiL,YAAcvG,EAAQ1E,EAAKiL,aAC5BjL,EAAKiL,aACJjL,EAAKiL,cAIZ7P,KAAKsQ,EAAM1L,GAEJ5E,QAGTuQ,kBAAmB,SAASC,GAC1B,GAAIC,GAAQhH,GAERiH,UAAWxL,IAAQ,KAErBsL,EAGF,IAAIlL,EAAWtF,KAAKsG,EAAeqK,oBAAqB,CACtD,GAAIC,GAAS5Q,KAAKsG,EAAeqK,mBAAmBF,EAEpD,IAAItH,EAASyH,KAAYrH,EAAcqH,GACrCH,EAAQG,MACH,IAAIA,KAAW,EACpB,MAAO5Q,MAQX,MAJAA,MAAKsI,EAAakD,KAAKiF,GACnBzQ,KAAKsI,EAAatH,OAAShB,KAAKsG,EAAemF,gBACjDzL,KAAKsI,EAAauI,QAEb7Q,MAGT+B,UAAW,SAAS+O,GAClB,GAAIC,MAAgBvM,MAAMzD,KAAK0D,UAAW,EAO1C,OALAzE,MAAKmI,EAASqD,MAAMsF,EAAQC,IACxB/Q,KAAK+H,GACP/H,KAAK4M,IAGA5M,MASTgR,eAAgB,SAAS5D,GAIvB,MAFApN,MAAKqG,EAAe+G,KAAOA,EAEpBpN,MASTiR,gBAAiB,SAASrP,GAGxB,MAFA5B,MAAKkR,EAAc,QAAStP,GAErB5B,MASTmR,eAAgB,SAASC,GAGvB,MAFApR,MAAKkR,EAAc,OAAQE,GAEpBpR,MAQTqR,aAAc,WAGZ,MAFArR,MAAKqG,KAEErG,MAQTsR,WAAY,WAEV,MAAO9L,MAAK+L,MAAM9L,EAAUzF,KAAKqG,KASnCmL,eAAgB,SAASC,GAGvB,MAFAzR,MAAKsG,EAAemL,YAAcA,EAE3BzR,MAST0R,WAAY,SAASnL,GAGnB,MAFAvG,MAAKsG,EAAeC,QAAUA,EAEvBvG,MAUT2R,gBAAiB,SAASxN,GACxB,GAAIkB,GAAWrF,KAAKsG,EAAesL,YAEnC,OADA5R,MAAKsG,EAAesL,aAAexM,EAAqBC,EAAUlB,GAC3DnE,MAUT6R,sBAAuB,SAAS1N,GAC9B,GAAIkB,GAAWrF,KAAKsG,EAAeqK,kBAEnC,OADA3Q,MAAKsG,EAAeqK,mBAAqBvL,EAAqBC,EAAUlB,GACjEnE,MAUT8R,sBAAuB,SAAS3N,GAC9B,GAAIkB,GAAWrF,KAAKsG,EAAeyL,kBAEnC,OADA/R,MAAKsG,EAAeyL,mBAAqB3M,EAAqBC,EAAUlB,GACjEnE,MAYTgS,aAAc,SAASC,GAGrB,MAFAjS,MAAKsG,EAAe2L,UAAYA,EAEzBjS,MAQTkS,cAAe,WACb,MAAOlS,MAAK+F,GAQdoM,YAAa,WACX,MAAOnS,MAAKiG,GAQdmG,QAAS,WACP,QAAKpM,KAAKuF,MACLvF,KAAKkG,IACHlG,KAAKoS,0BACRpS,KAAKoS,yBAA0B,EAC/BpS,KAAKmL,EAAU,QAAS,2CAEnB,KAKXkH,UAAW,WAIT,GAAIC,GAAc9L,EAAQ8L,WACtBA,IACFtS,KAAKgD,OAAOsP,EAAYrH,IAAKqH,EAAYtP,QAAQmJ,WAIrDoG,iBAAkB,SAASrH,GACzB,GACGtF,EADH,CAKAsF,EAAUA,KAEV,IAAIiH,GAAcjH,EAAQsH,SAAWxS,KAAKmS,aAC1C,KAAKA,EACH,KAAM,IAAIxO,GAAiB,kBAG7B,IAAIsH,GAAMC,EAAQD,KAAOjL,KAAKmN,CAC9B,KAAKlC,EACH,KAAM,IAAItH,GAAiB,cAG7B,IAAI8O,GAASC,mBACTC,EAAK,EACTA,IAAM,YAAcF,EAAON,GAC3BQ,GAAM,QAAUF,EAAOxH,EAEvB,IAAImC,GAAOlC,EAAQkC,MAAQpN,KAAKqG,EAAe+G,IAC3CA,KACEA,EAAK3K,OAAMkQ,GAAM,SAAWF,EAAOrF,EAAK3K,OACxC2K,EAAKwF,QAAOD,GAAM,UAAYF,EAAOrF,EAAKwF,QAGhD,IAAIC,GAAe7S,KAAKuN,EAAiBvN,KAAK8M,EAAU7B,IAEpD6H,EAASlN,EAAUmN,cAAc,SACrCD,GAAOE,OAAQ,EACfF,EAAOG,IAAMJ,EAAe,yBAA2BF,GACtD/M,EAAUsN,MAAQtN,EAAUuN,MAAMC,YAAYN,KAIjDO,EAAoB,WAClB,GAAItT,GAAOC,IACXA,MAAK8H,GAAkB,EACvBwL,WAAW,WAETvT,EAAK+H,GAAkB,KAI3ByL,EAAe,SAASC,EAAWtI,GAEjC,GAAIuI,GAAKpI,CAET,IAAKrL,KAAK0F,EAAV,CAEAwF,EAAUA,MAEVsI,EAAY,QAAUA,EAAUtG,OAAO,EAAG,GAAGwG,cAAgBF,EAAUtG,OAAO,GAE1EtH,EAAU+N,aACZF,EAAM7N,EAAU+N,YAAY,cAC5BF,EAAIG,UAAUJ,GAAW,GAAM,KAE/BC,EAAM7N,EAAUiO,oBAChBJ,EAAID,UAAYA,EAGlB,KAAKnI,IAAOH,GACNtB,EAAOsB,EAASG,KAClBoI,EAAIpI,GAAOH,EAAQG,GAGvB,IAAIzF,EAAU+N,YAEZ/N,EAAUkO,cAAcL,OAIxB,KACE7N,EAAUmO,UAAU,KAAON,EAAID,UAAUQ,cAAeP,GACxD,MAAOvT,OAYb+T,EAAyB,SAASC,GAChC,GAAInU,GAAOC,IACX,OAAO,UAASyT,GASd,GALA1T,EAAKoU,GAAmB,KAKpBpU,EAAKwI,IAAuBkL,EAAhC,CAEA1T,EAAKwI,EAAqBkL,CAM1B,IAAIW,EACJ,KACEA,EAASpK,EAAiByJ,EAAIW,QAC9B,MAAOlU,GACPkU,EAAS,YAGXrU,EAAKwQ,mBACH8D,SAAU,MAAQH,EAClBtQ,QAASwQ,OAUfE,GAAuB,WACrB,GAAIvU,GAAOC,KACTuU,EAAmB,GAKrB,OAAO,UAASd,GACd,GAAIW,EACJ,KACEA,EAASX,EAAIW,OACb,MAAOlU,GAGP,OAEF,GAAIsU,GAAUJ,GAAUA,EAAOI,OAK/B,IACGA,IACY,UAAZA,GAAmC,aAAZA,GAA2BJ,EAAOK,mBAF5D,CAQA,GAAIC,GAAU3U,EAAKoU,EACdO,IACH3U,EAAK4U,EAAwB,SAASlB,GAExCmB,aAAaF,GACb3U,EAAKoU,GAAmBb,WAAW,WACjCvT,EAAKoU,GAAmB,MACvBI,MAUPM,GAAmB,SAASC,EAAMC,GAChC,GAAIC,GAAY7K,EAASnK,KAAKwI,EAAUG,MACpCsM,EAAW9K,EAAS4K,GACpBG,EAAa/K,EAAS2K,EAK1B9U,MAAK0I,EAAYqM,EAIbC,EAAUG,WAAaF,EAASE,UAAYH,EAAUI,OAASH,EAASG,OAC1EL,EAAKE,EAASI,UACZL,EAAUG,WAAaD,EAAWC,UAAYH,EAAUI,OAASF,EAAWE,OAC9EN,EAAOI,EAAWG,UAEpBrV,KAAKuQ,mBACH8D,SAAU,aACVzP,MACEmQ,GAAIA,EACJD,KAAMA,MAKZQ,EAAwB,WACtB,GAAIvV,GAAOC,IACXD,GAAKwV,GAA4BzQ,SAASzB,UAAUC,SAEpDwB,SAASzB,UAAUC,SAAW,WAC5B,MAAoB,kBAATtD,OAAuBA,KAAK8N,EAC9B/N,EAAKwV,GAA0BxQ,MAAM/E,KAAKiO,EAAUxJ,WAEtD1E,EAAKwV,GAA0BxQ,MAAM/E,KAAMyE,aAItD+Q,EAA0B,WACpBxV,KAAKuV,KAEPzQ,SAASzB,UAAUC,SAAWtD,KAAKuV,KAQvCE,EAAqB,WAKnB,QAASC,GAAWC,GAClB,MAAO,UAASC,EAAIzV,GAKlB,IAAK,GADDoE,GAAO,GAAIsR,OAAMpR,UAAUzD,QACtBL,EAAI,EAAGA,EAAI4D,EAAKvD,SAAUL,EACjC4D,EAAK5D,GAAK8D,UAAU9D,EAEtB,IAAImV,GAAmBvR,EAAK,EAQ5B,OAPIe,GAAWwQ,KACbvR,EAAK,GAAKxE,EAAKoC,KAAK2T,IAMlBH,EAAK5Q,MACA4Q,EAAK5Q,MAAM/E,KAAMuE,GAEjBoR,EAAKpR,EAAK,GAAIA,EAAK,KAOhC,QAASwR,GAAgBjW,GACvB,GAAIkW,GAAQxP,EAAQ1G,IAAW0G,EAAQ1G,GAAQuD,SAC3C2S,IAASA,EAAMC,gBAAkBD,EAAMC,eAAe,sBACxD7L,EACE4L,EACA,mBACA,SAASL,GACP,MAAO,UAASzB,EAAS0B,EAAIM,EAASC,GAEpC,IACMP,GAAMA,EAAGQ,cACXR,EAAGQ,YAAcrW,EAAKoC,KAAKyT,EAAGQ,cAEhC,MAAOC,IAMT,GAAIC,GAAQC,EAAcC,CA6B1B,OA1BEnP,IACAA,EAAgB0E,MACJ,gBAAXjM,GAAuC,SAAXA,KAI7ByW,EAAexW,EAAK4U,EAAwB,SAC5C6B,EAAkBzW,EAAK0W,KACvBH,EAAS,SAAS7C,GAIhB,GAAKA,EAAL,CAEA,GAAID,EACJ,KACEA,EAAYC,EAAIiD,KAChB,MAAOxW,GAGP,OAEF,MAAkB,UAAdsT,EAA8B+C,EAAa9C,GACxB,aAAdD,EAAiCgD,EAAgB/C,GAArD,UAGFkC,EAAK5U,KACVf,KACAkU,EACAnU,EAAKoC,KAAKyT,EAAIlI,OAAW4I,GACzBJ,EACAC,KAINQ,GAEFvM,EACE4L,EACA,sBACA,SAASL,GACP,MAAO,UAASlC,EAAKmC,EAAIM,EAASC,GAChC,IACEP,EAAKA,IAAOA,EAAG7H,EAAoB6H,EAAG7H,EAAoB6H,GAC1D,MAAO1V,IAGT,MAAOyV,GAAK5U,KAAKf,KAAMyT,EAAKmC,EAAIM,EAASC,KAG7CQ,IAvGN,GAAI5W,GAAOC,KAEP2W,EAAkB5W,EAAKsI,EA2BvBhB,EAAkBrH,KAAKsG,EAAee,eA+E1C+C,GAAK5D,EAAS,aAAckP,EAAYiB,GACxCvM,EAAK5D,EAAS,cAAekP,EAAYiB,GACrCnQ,EAAQoQ,uBACVxM,EACE5D,EACA,wBACA,SAASmP,GACP,MAAO,UAASkB,GACd,MAAOlB,GAAK5V,EAAKoC,KAAK0U,MAG1BF,EAqCJ,KAAK,GA/BDG,IACF,cACA,SACA,OACA,mBACA,iBACA,oBACA,kBACA,cACA,aACA,qBACA,cACA,aACA,iBACA,eACA,kBACA,cACA,cACA,eACA,qBACA,SACA,YACA,eACA,gBACA,YACA,kBACA,SACA,iBACA,4BACA,wBAEOnW,EAAI,EAAGA,EAAImW,EAAa9V,OAAQL,IACvCoV,EAAgBe,EAAanW,KAajCoW,EAAwB,WAMtB,QAASC,GAASC,EAAMnL,GAClBmL,IAAQnL,IAAOxG,EAAWwG,EAAImL,KAChC7M,EAAK0B,EAAKmL,EAAM,SAAStB,GACvB,MAAO5V,GAAKoC,KAAKwT,KARvB,GAAI5V,GAAOC,KACPqH,EAAkBrH,KAAKsG,EAAee,gBAEtCsP,EAAkB5W,EAAKsI,CAU3B,IAAIhB,EAAgByE,KAAO,kBAAoBtF,GAAS,CACtD,GAAI0Q,GAAW1Q,EAAQ2Q,gBAAkB3Q,EAAQ2Q,eAAe9T,SAChE+G,GACE8M,EACA,OACA,SAASE,GACP,MAAO,UAAS1P,EAAQwI,GAYtB,MARI7G,GAAS6G,IAAQA,EAAImH,QAAQtX,EAAKoG,UACpCnG,KAAKsX,IACH5P,OAAQA,EACRwI,IAAKA,EACLqH,YAAa,OAIVH,EAASrS,MAAM/E,KAAMyE,aAGhCkS,GAGFvM,EACE8M,EACA,OACA,SAASM,GACP,MAAO,YAIL,QAASC,KACP,GAAI3L,EAAIwL,IAAkC,IAAnBxL,EAAI4L,WAAkB,CAC3C,IAGE5L,EAAIwL,GAAYC,YAAczL,EAAI6L,OAClC,MAAOzX,IAITH,EAAKwQ,mBACHmG,KAAM,OACNrC,SAAU,MACVzP,KAAMkH,EAAIwL,MAMhB,IAAK,GArBDxL,GAAM9L,KAoBN4X,GAAS,SAAU,UAAW,cACzBC,EAAI,EAAGA,EAAID,EAAM5W,OAAQ6W,IAChCb,EAASY,EAAMC,GAAI/L,EAiBrB,OAdI,sBAAwBA,IAAOxG,EAAWwG,EAAIgM,oBAChD1N,EACE0B,EACA,qBACA,SAAS6J,GACP,MAAO5V,GAAKoC,KAAKwT,EAAMjI,OAAW+J,KAMtC3L,EAAIgM,mBAAqBL,EAGpBD,EAASzS,MAAM/E,KAAMyE,aAGhCkS,GAIAtP,EAAgByE,KAAOzB,KACzBD,EACE5D,EACA,QACA,SAASuR,GACP,MAAO,YAKL,IAAK,GADDxT,GAAO,GAAIsR,OAAMpR,UAAUzD,QACtBL,EAAI,EAAGA,EAAI4D,EAAKvD,SAAUL,EACjC4D,EAAK5D,GAAK8D,UAAU9D,EAGtB,IAEIuP,GAFA8H,EAAazT,EAAK,GAClBmD,EAAS,KAeb,IAZ0B,gBAAfsQ,GACT9H,EAAM8H,EACG,WAAaxR,IAAWwR,YAAsBxR,GAAQyR,SAC/D/H,EAAM8H,EAAW9H,IACb8H,EAAWtQ,SACbA,EAASsQ,EAAWtQ,SAGtBwI,EAAM,GAAK8H,EAIT9H,EAAImH,QAAQtX,EAAKoG,QACnB,MAAO4R,GAAUhT,MAAM/E,KAAMuE,EAG3BA,GAAK,IAAMA,EAAK,GAAGmD,SACrBA,EAASnD,EAAK,GAAGmD,OAGnB,IAAIwQ,IACFxQ,OAAQA,EACRwI,IAAKA,EACLqH,YAAa,KAGf,OAAOQ,GACJhT,MAAM/E,KAAMuE,GACZ4T,KAAK,SAASC,GASb,MARAF,GAAUX,YAAca,EAAST,OAEjC5X,EAAKwQ,mBACHmG,KAAM,OACNrC,SAAU,QACVzP,KAAMsT,IAGDE,IAER,SAAS,SAAS/B,GASjB,KAPAtW,GAAKwQ,mBACHmG,KAAM,OACNrC,SAAU,QACVzP,KAAMsT,EACNhU,MAAO,UAGHmS,MAIdM,GAMAtP,EAAgB0E,KAAO/L,KAAK0F,IAC1BE,EAAUiJ,kBACZjJ,EAAUiJ,iBAAiB,QAAS9O,EAAK4U,EAAwB,UAAU,GAC3E/O,EAAUiJ,iBAAiB,WAAY9O,EAAK0W,MAAyB,IAC5D7Q,EAAUyS,cAEnBzS,EAAUyS,YAAY,UAAWtY,EAAK4U,EAAwB,UAC9D/O,EAAUyS,YAAY,aAActY,EAAK0W,OAQ7C,IAAI6B,GAAS9R,EAAQ8R,OACjBC,EAAsBD,GAAUA,EAAOE,KAAOF,EAAOE,IAAIC,QACzDC,GACDH,GACD/R,EAAQmS,SACRnS,EAAQmS,QAAQC,WAChBpS,EAAQmS,QAAQE,YAClB,IAAIxR,EAAgBoB,UAAYiQ,EAAwB,CAEtD,GAAII,GAAgBtS,EAAQuS,UAC5BvS,GAAQuS,WAAa,WACnB,GAAIC,GAAcjZ,EAAKyI,EAAUG,IAGjC,IAFA5I,EAAKkZ,GAAkBlZ,EAAK2I,EAAWsQ,GAEnCF,EACF,MAAOA,GAAc/T,MAAM/E,KAAMyE,WAIrC,IAAIyU,GAA6B,SAASC,GAGxC,MAAO,YACL,GAAIjJ,GAAMzL,UAAUzD,OAAS,EAAIyD,UAAU,GAAKiJ,MAQhD,OALIwC,IAEFnQ,EAAKkZ,GAAkBlZ,EAAK2I,EAAWwH,EAAM,IAGxCiJ,EAAiBpU,MAAM/E,KAAMyE,YAIxC2F,GAAK5D,EAAQmS,QAAS,YAAaO,EAA4BvC,GAC/DvM,EAAK5D,EAAQmS,QAAS,eAAgBO,EAA4BvC,GAGpE,GAAItP,EAAgBpD,SAAW,WAAauC,IAAWvC,QAAQmV,IAAK,CAElE,GAAIC,GAAwB,SAAS3U,EAAKE,GACxC7E,EAAKwQ,mBACH3M,QAASc,EACTR,MAAOU,EAAKV,MACZmQ,SAAU,YAId7K,IAAM,QAAS,OAAQ,OAAQ,QAAS,OAAQ,SAASyK,EAAG/P,GAC1DuG,EAAkBxG,QAASC,EAAOmV,OAKxCC,EAAkB,WAGhB,IADA,GAAIC,GACGvZ,KAAKqI,EAAiBrH,QAAQ,CACnCuY,EAAUvZ,KAAKqI,EAAiBwI,OAEhC,IAAIL,GAAM+I,EAAQ,GAChB9W,EAAO8W,EAAQ,GACf5D,EAAO4D,EAAQ,EAEjB/I,GAAI/N,GAAQkT,IAIhB6D,EAAiB,WAEf,IAAK,GAAI9R,KAAU1H,MAAKkI,EACtBlI,KAAKiI,EAAiBP,GAAU1H,KAAKkI,EAAwBR,IAIjE+R,EAAe,WACb,GAAI1Z,GAAOC,IAGXwJ,GAAKxJ,KAAKmI,EAAU,SAAS8L,EAAGnD,GAC9B,GAAI4I,GAAY5I,EAAO,GACnBvM,EAAOuM,EAAO,EAClB4I,GAAU3U,MAAMhF,GAAOA,GAAM4Z,OAAOpV,OAIxCqV,EAAW,SAASC,GAClB,GAAIC,GAAIlP,EAAWmP,KAAKF,GACtB5O,KACAtK,EAAI,CAEN,KACE,KAAOA,KAAKsK,EAAIP,EAAQ/J,IAAMmZ,EAAEnZ,IAAM,GACtC,MAAOT,GACP,KAAM,IAAIyD,GAAiB,gBAAkBkW,GAG/C,GAAI5O,EAAIqC,OAAStN,KAAKsG,EAAe0T,eACnC,KAAM,IAAIrW,GACR,iFAIJ,OAAOsH,IAGTgP,EAAkB,SAASpN,GAEzB,GAAIgG,GAAe,KAAOhG,EAAIuI,MAAQvI,EAAIqN,KAAO,IAAMrN,EAAIqN,KAAO,GAKlE,OAHIrN,GAAIsI,WACNtC,EAAehG,EAAIsI,SAAW,IAAMtC,GAE/BA,GAGTsH,EAAyB,WAElBna,KAAK8H,GACR9H,KAAKsP,EAAiBvK,MAAM/E,KAAMyE,YAItC2V,EAAkB,SAASC,EAAWnP,GACpC,GAAIiF,GAASnQ,KAAKoQ,EAAeiK,EAAWnP,EAE5ClL,MAAKsa,EAAc,UACjBD,UAAWA,EACXnP,QAASA,IAGXlL,KAAKua,GACHF,EAAU5X,KACV4X,EAAUzW,QACVyW,EAAUnK,IACVmK,EAAUG,OACVrK,EACAjF,IAIJuP,EAAgB,SAASJ,EAAWnP,GAClC,GAAInL,GAAOC,KACPmQ,IACJ,IAAIkK,EAAUjL,OAASiL,EAAUjL,MAAMpO,SACrCwI,EAAK6Q,EAAUjL,MAAO,SAASzO,EAAGyO,GAChC,GAAIsL,GAAQ3a,EAAK4a,GAAgBvL,EAAOiL,EAAUnK,IAC9CwK,IACFvK,EAAO3E,KAAKkP,KAKZxP,GAAWA,EAAQ+D,gBACrB,IAAK,GAAI4I,GAAI,EAAGA,EAAI3M,EAAQ+D,gBAAkB4I,EAAI1H,EAAOnP,OAAQ6W,IAC/D1H,EAAO0H,GAAG+C,QAAS,CAKzB,OADAzK,GAASA,EAAO3L,MAAM,EAAGxE,KAAKsG,EAAec,kBAI/CyT,GAAiB,SAASH,EAAOI,GAE/B,GAAIC,IACFC,SAAUN,EAAMxK,IAChBsK,OAAQE,EAAMO,KACdC,MAAOR,EAAMS,OACbC,WAAUV,EAAMjN,MAAQ,IAuB1B,OAfKiN,GAAMxK,MACT6K,EAAWC,SAAWF,GAGxBC,EAAWH,SAGN5a,KAAKsG,EAAeQ,aAAaiJ,OACjC/P,KAAKsG,EAAeQ,aAAaiJ,KAAKgL,EAAWC,WAEpD,qBAAqBjL,KAAKgL,EAAW,cAErC,qBAAqBhL,KAAKgL,EAAWC,WAGhCD,GAGTM,GAAmB,SAAS3E,EAAM9S,EAASqM,EAASuK,EAAQrK,EAAQjF,GAClE,GAAIoQ,IAAmB5E,EAAOA,EAAO,KAAO,KAAO9S,GAAW,GAC9D,KACI5D,KAAKsG,EAAeK,aAAaoJ,OAClC/P,KAAKsG,EAAeK,aAAaoJ,KAAKnM,KACrC5D,KAAKsG,EAAeK,aAAaoJ,KAAKuL,GAH1C,CAQA,GAAIpM,EAoBJ,IAlBIiB,GAAUA,EAAOnP,QACnBiP,EAAUE,EAAO,GAAG6K,UAAY/K,EAGhCE,EAAOE,UACPnB,GAAciB,OAAQA,IACbF,IACTf,GACEiB,SAEI6K,SAAU/K,EACVuK,OAAQA,EACRI,QAAQ,QAOZ5a,KAAKsG,EAAeM,WAAWmJ,OACjC/P,KAAKsG,EAAeM,WAAWmJ,KAAKE,OAMlCjQ,KAAKsG,EAAeO,cAAckJ,MACnC/P,KAAKsG,EAAeO,cAAckJ,KAAKE,IAF1C,CAOA,GAAIrL,GAAO6E,GAGP8R,WACEC,SAEI9E,KAAMA,EACNpL,MAAO1H,EACPsL,WAAYA,KAIlBuM,YAAaxL,GAEf/E,EAIFlL,MAAKsQ,EAAM1L,MAGb8W,GAAa,SAAS9W,GAGpB,GAAI+G,GAAM3L,KAAKsG,EAAeY,gBAI9B,IAHItC,EAAKhB,UACPgB,EAAKhB,QAAU8F,EAAS9E,EAAKhB,QAAS+H,IAEpC/G,EAAK2W,UAAW,CAClB,GAAIA,GAAY3W,EAAK2W,UAAUC,OAAO,EACtCD,GAAUjQ,MAAQ5B,EAAS6R,EAAUjQ,MAAOK,GAG9C,GAAIgQ,GAAU/W,EAAK+W,OAanB,OAZIA,KACEA,EAAQzL,MACVyL,EAAQzL,IAAMxG,EAASiS,EAAQzL,IAAKlQ,KAAKsG,EAAea,eAEtDwU,EAAQC,UACVD,EAAQC,QAAUlS,EAASiS,EAAQC,QAAS5b,KAAKsG,EAAea,gBAIhEvC,EAAKiX,aAAejX,EAAKiX,YAAYL,QACvCxb,KAAK8b,GAAiBlX,EAAKiX,aAEtBjX,GAMTmX,GAAkB,SAASF,GAQzB,IAAK,GAJHG,GACAvL,EACA7L,EAHEqX,GAAY,KAAM,OAAQ,OAKrBtb,EAAI,EAAGA,EAAIkb,EAAYL,OAAOxa,SAAUL,EAE/C,GADA8P,EAAQoL,EAAYL,OAAO7a,GAExB8P,EAAMwF,eAAe,SACrB9M,EAASsH,EAAM7L,QAChB+E,EAAa8G,EAAM7L,MAHrB,CAOAA,EAAO6E,KAAgBgH,EAAM7L,KAC7B,KAAK,GAAIiT,GAAI,EAAGA,EAAIoE,EAASjb,SAAU6W,EACrCmE,EAAUC,EAASpE,GACfjT,EAAKqR,eAAe+F,IAAYpX,EAAKoX,KACvCpX,EAAKoX,GAAWtS,EAAS9E,EAAKoX,GAAUhc,KAAKsG,EAAea,cAGhE0U,GAAYL,OAAO7a,GAAGiE,KAAOA,IAIjCsX,GAAc,WACZ,GAAKlc,KAAK6F,GAAkB7F,KAAK0F,EAAjC,CACA,GAAIyW,KAkBJ,OAhBInc,MAAK6F,GAAiBC,EAAWsW,YACnCD,EAASpV,SACPsV,aAAcvW,EAAWsW,YAKzB5V,EAAQiC,UAAYjC,EAAQiC,SAASE,OACvCwT,EAASjM,IAAM1J,EAAQiC,SAASE,MAG9B3I,KAAK0F,GAAgBE,EAAU0W,WAC5BH,EAASpV,UAASoV,EAASpV,YAChCoV,EAASpV,QAAQ6U,QAAUhW,EAAU0W,UAGhCH,IAGTI,EAAe,WACbvc,KAAKwc,GAAmB,EACxBxc,KAAKyc,GAAgB,MAGvBC,GAAgB,WACd,MAAO1c,MAAKwc,IAAoBtX,IAAQlF,KAAKyc,GAAgBzc,KAAKwc,IAYpEG,GAAe,SAASC,GACtB,GAAIC,GAAO7c,KAAKgG,CAEhB,UACG6W,GACDD,EAAQhZ,UAAYiZ,EAAKjZ,SACzBgZ,EAAQnB,cAAgBoB,EAAKpB,eAK3BmB,EAAQ1N,YAAc2N,EAAK3N,WACtBhF,EAAiB0S,EAAQ1N,WAAY2N,EAAK3N,aACxC0N,EAAQrB,YAAasB,EAAKtB,WAE5BtR,EAAgB2S,EAAQrB,UAAWsB,EAAKtB,aAMnDuB,GAAkB,SAASnB,GAEzB,IAAI3b,KAAK+c,KAAT,CAIA,GAAIpF,GAASgE,EAAQhE,MAKrB,IAAiB,MAAXA,GAA6B,MAAXA,GAA6B,MAAXA,EAA1C,CAEA,GAAIqF,EACJ,KAIIA,EADE3S,IACMsR,EAAQ5U,QAAQkW,IAAI,eAEpBtB,EAAQuB,kBAAkB,eAIpCF,EAA8B,IAAtBG,SAASH,EAAO,IACxB,MAAO9c,IAITF,KAAKwc,GAAmBQ,EAEpBA,EAEwB,EAAxBhd,KAAKwc,IAAwB,IAEjCxc,KAAKyc,GAAgBvX,OAGvBkY,EAAO,SAASxY,GACd,GAAIwG,GAAgBpL,KAAKsG,EAErB+W,GACAC,QAAStd,KAAKoG,EACdvB,OAAQuG,EAAcvG,OACtB0Y,SAAU,cAEZpB,EAAWnc,KAAKwd,IAsDlB,IApDIrB,IACFkB,EAAS1B,QAAUQ,GAIjBvX,EAAKqK,sBAAuBrK,GAAKqK,eAErCrK,EAAO6E,EAAY4T,EAAUzY,GAG7BA,EAAKwM,KAAO3H,EAAYA,KAAgBzJ,KAAKqG,EAAe+K,MAAOxM,EAAKwM,MACxExM,EAAKhD,MAAQ6H,EAAYA,KAAgBzJ,KAAKqG,EAAezE,OAAQgD,EAAKhD,OAG1EgD,EAAKhD,MAAM,oBAAsBsD,IAAQlF,KAAKoI,EAE1CpI,KAAKsI,GAAgBtI,KAAKsI,EAAatH,OAAS,IAGlD4D,EAAKiX,aACHL,UAAWhX,MAAMzD,KAAKf,KAAKsI,EAAc,KAIzCtI,KAAKqG,EAAe+G,OAEtBxI,EAAKwI,KAAOpN,KAAKqG,EAAe+G,MAI9BhC,EAAcqG,cAAa7M,EAAK6M,YAAcrG,EAAcqG,aAG5DrG,EAAc7E,UAAS3B,EAAK2B,QAAU6E,EAAc7E,SAGpD6E,EAAcqS,aAAY7Y,EAAK8Y,YAActS,EAAcqS,YAE/D7Y,EAAO5E,KAAK2d,GAAc/Y,GAG1BxB,OAAOuM,KAAK/K,GAAMgZ,QAAQ,SAASvS,IAChB,MAAbzG,EAAKyG,IAA8B,KAAdzG,EAAKyG,IAAe9B,EAAc3E,EAAKyG,YACvDzG,GAAKyG,KAIZ/F,EAAW8F,EAAcwG,gBAC3BhN,EAAOwG,EAAcwG,aAAahN,IAASA,GAIxCA,IAAQ2E,EAAc3E,MAMzBU,EAAW8F,EAAc2G,qBACxB3G,EAAc2G,mBAAmBnN,IAOpC,MAAI5E,MAAK+c,SACP/c,MAAKmL,EAAU,OAAQ,uCAAwCvG,QAIzB,gBAA7BwG,GAAc7D,WACnBmE,KAAKmS,SAAWzS,EAAc7D,YAChCvH,KAAK8d,GAAsBlZ,GAG7B5E,KAAK8d,GAAsBlZ,KAI/BmZ,GAAe,SAASnZ,GACtB,MAAO4F,GAAS5F,EAAM5E,KAAKsG,EAAekB,eAG5CwW,GAAU,WACR,MAAOjU,MAGTkU,GAAuB,SAASrZ,EAAMT,GACpC,GAAIpE,GAAOC,KACPoL,EAAgBpL,KAAKsG,CAEzB,IAAKtG,KAAKoM,UAAV,CAQA,GALAxH,EAAO5E,KAAKke,GAAYtZ,IAKnB5E,KAAKsG,EAAe6X,iBAAmBne,KAAKoe,GAAcxZ,GAE7D,WADA5E,MAAKmL,EAAU,OAAQ,+BAAgCvG,EAOzD5E,MAAKiG,EAAerB,EAAKyZ,WAAazZ,EAAKyZ,SAAWre,KAAKse,MAG3Dte,KAAKgG,EAAYpB,EAEjB5E,KAAKmL,EAAU,QAAS,uBAAwBvG,EAEhD,IAAI2Z,IACFC,eAAgB,IAChBC,cAAe,YAAcze,KAAK+K,QAClC2T,WAAY1e,KAAKmG,EAGfnG,MAAKqN,IACPkR,EAAKI,cAAgB3e,KAAKqN,EAG5B,IAAIkO,GAAY3W,EAAK2W,WAAa3W,EAAK2W,UAAUC,OAAO,EAItDxb,MAAKsG,EAAee,iBACpBrH,KAAKsG,EAAee,gBAAgB2E,QAEpChM,KAAKuQ,mBACH8D,SAAU,SACVzQ,QAAS2X,GACJA,EAAU7E,KAAO6E,EAAU7E,KAAO,KAAO,IAAM6E,EAAUjQ,MAC1D1G,EAAKhB,QACTya,SAAUzZ,EAAKyZ,SACfna,MAAOU,EAAKV,OAAS,SAIzB,IAAIgM,GAAMlQ,KAAKwN,GACdpC,EAAc6G,WAAajS,KAAK4e,IAAc7d,KAAKf,MAClDkQ,IAAKA,EACLqO,KAAMA,EACN3Z,KAAMA,EACNsG,QAASE,EACTyT,UAAW,WACT9e,EAAK6I,IAEL7I,EAAKua,EAAc,WACjB1V,KAAMA,EACNqO,IAAK/C,IAEP/L,GAAYA,KAEd2a,QAAS,SAAiBvd,GACxBxB,EAAKoL,EAAU,QAAS,mCAAoC5J,GAExDA,EAAMoa,SACR5b,EAAKgf,GAAiBxd,EAAMoa,SAG9B5b,EAAKua,EAAc,WACjB1V,KAAMA,EACNqO,IAAK/C,IAEP3O,EAAQA,GAAS,GAAIX,OAAM,sDAC3BuD,GAAYA,EAAS5C,QAK3Byd,GAAc,SAASC,GAErB,GAAI/O,GAAM+O,EAAK/O,IAAM,IAAMpG,EAAUmV,EAAKV,MAEtCW,EAAmB,KACnBC,IAUJ,IARIF,EAAK/T,QAAQnE,UACfmY,EAAmBlf,KAAKof,GAAcH,EAAK/T,QAAQnE,UAGjDkY,EAAK/T,QAAQmU,kBACfF,EAA2Bnf,KAAKof,GAAcH,EAAK/T,QAAQmU,kBAGzDhV,IAAiB,CACnB8U,EAAyBhM,KAAO1N,EAAUwZ,EAAKra,KAE/C,IAAI0a,GAAsB7V,KAAgBzJ,KAAKyH,GAC3C8X,EAAe9V,EAAY6V,EAAqBH,EAMpD,OAJID,KACFK,EAAaxY,QAAUmY,GAGlB1Y,EACJgZ,MAAMtP,EAAKqP,GACXpH,KAAK,SAASC,GACb,GAAIA,EAASqH,GACXR,EAAKJ,WAAaI,EAAKJ,gBAClB,CACL,GAAItd,GAAQ,GAAIX,OAAM,sBAAwBwX,EAAST,OAGvDpW,GAAMoa,QAAUvD,EAChB6G,EAAKH,SAAWG,EAAKH,QAAQvd,MAGhC,SAAS,WACR0d,EAAKH,SACHG,EAAKH,QAAQ,GAAIle,OAAM,6CAI/B,GAAI+a,GAAUnV,EAAQ2Q,gBAAkB,GAAI3Q,GAAQ2Q,cACpD,IAAKwE,EAAL,CAGA,GAAI+D,GAAU,mBAAqB/D,IAAqC,mBAAnBgE,eAEhDD,KAED,mBAAqB/D,GACvBA,EAAQ7D,mBAAqB,WAC3B,GAA2B,IAAvB6D,EAAQjE,WAEL,GAAuB,MAAnBiE,EAAQhE,OACjBsH,EAAKJ,WAAaI,EAAKJ,gBAClB,IAAII,EAAKH,QAAS,CACvB,GAAIzI,GAAM,GAAIzV,OAAM,sBAAwB+a,EAAQhE,OACpDtB,GAAIsF,QAAUA,EACdsD,EAAKH,QAAQzI,MAIjBsF,EAAU,GAAIgE,gBAGdzP,EAAMA,EAAI0P,QAAQ,WAAY,IAG1BX,EAAKJ,YACPlD,EAAQkE,OAASZ,EAAKJ,WAEpBI,EAAKH,UACPnD,EAAQra,QAAU,WAChB,GAAI+U,GAAM,GAAIzV,OAAM,oCACpByV,GAAIsF,QAAUA,EACdsD,EAAKH,QAAQzI,MAKnBsF,EAAQmE,KAAK,OAAQ5P,GAEjBgP,GACF1V,EAAK0V,EAAkB,SAAS7T,EAAKC,GACnCqQ,EAAQoE,iBAAiB1U,EAAKC,KAIlCqQ,EAAQqE,KAAKva,EAAUwZ,EAAKra,UAG9Bqb,GAAe,SAASC,GACtB,GAAIC,KAEJ,KAAK,GAAI9U,KAAO6U,GACd,GAAIA,EAAKjK,eAAe5K,GAAM,CAC5B,GAAIC,GAAQ4U,EAAK7U,EACjB8U,GAAU9U,GAAwB,kBAAVC,GAAuBA,IAAUA,EAI7D,MAAO6U,IAGTC,EAAW,SAASlc,GAGhBlE,KAAKkI,EAAwBhE,KAC5BlE,KAAKgL,OAAShL,KAAKsG,EAAe0E,QAGnClG,SAASzB,UAAU0B,MAAMhE,KACvBf,KAAKkI,EAAwBhE,GAC7BlE,KAAKiI,KACFzD,MAAMzD,KAAK0D,UAAW,KAK/B4b,EAAe,SAAShV,EAAKxJ,GACvB8D,EAAY9D,SACP7B,MAAKqG,EAAegF,GAE3BrL,KAAKqG,EAAegF,GAAO5B,EAAYzJ,KAAKqG,EAAegF,OAAYxJ,KAM7E5B,EAAMoD,UAAUid,QAAUrgB,EAAMoD,UAAU2N,eAC1C/Q,EAAMoD,UAAUkd,kBAAoBtgB,EAAMoD,UAAUqO,WAEpDjS,EAAOD,QAAUS,IAEdc,KAAKf,KAAuB,mBAAXF,QAAyBA,OAAyB,mBAATC,MAAuBA,KAAyB,mBAAXF,QAAyBA,aACxH2gB,GAAK,GAAGC,GAAK,GAAG/c,EAAI,EAAEI,EAAI,EAAEkB,EAAI,EAAE0b,EAAI,IAAI1e,GAAG,SAASd,EAAQzB,EAAOD,IACxE,SAAWM,GAOX,GAAI6gB,GAAmBzf,EAAQ,GAG3BsF,EACgB,mBAAX3G,QACHA,OACkB,mBAAXC,GAAyBA,EAAyB,mBAATC,MAAuBA,QACzE6gB,EAASpa,EAAQvG,MAEjBA,EAAQ,GAAI0gB,EAQhB1gB,GAAM4gB,WAAa,WAEjB,MADAra,GAAQvG,MAAQ2gB,EACT3gB,GAGTA,EAAMoS,YAEN5S,EAAOD,QAAUS,EAoCjBR,EAAOD,QAAQshB,OAASH,IAErB5f,KAAKf,KAAuB,mBAAXF,QAAyBA,OAAyB,mBAATC,MAAuBA,KAAyB,mBAAXF,QAAyBA,aACxHoF,EAAI,IAAID,GAAG,SAAS9D,EAAQzB,EAAOD,IACtC,SAAWM,GAQX,QAASqJ,GAAS4X,GAChB,MAAuB,gBAATA,IAA8B,OAATA,EAKrC,QAAS7X,GAAQoC,GACf,OAAQlI,OAAOC,UAAUC,SAASvC,KAAKuK,IACrC,IAAK,iBACH,OAAO,CACT,KAAK,qBACH,OAAO,CACT,KAAK,wBACH,OAAO,CACT,SACE,MAAOA,aAAiB1K,QAI9B,QAASmI,GAAauC,GACpB,MAAiD,wBAA1ClI,OAAOC,UAAUC,SAASvC,KAAKuK,GAGxC,QAAStC,GAAWsC,GAClB,MAAiD,sBAA1ClI,OAAOC,UAAUC,SAASvC,KAAKuK,GAGxC,QAASrC,GAAeqC,GACtB,MAAiD,0BAA1ClI,OAAOC,UAAUC,SAASvC,KAAKuK,GAGxC,QAAS3F,GAAYob,GACnB,MAAgB,UAATA,EAGT,QAASzb,GAAWyb,GAClB,MAAuB,kBAATA,GAGhB,QAAS3X,GAAc2X,GACrB,MAAgD,oBAAzC3d,OAAOC,UAAUC,SAASvC,KAAKggB,GAGxC,QAAS1X,GAAS0X,GAChB,MAAgD,oBAAzC3d,OAAOC,UAAUC,SAASvC,KAAKggB,GAGxC,QAASzX,GAAQyX,GACf,MAAgD,mBAAzC3d,OAAOC,UAAUC,SAASvC,KAAKggB,GAGxC,QAASxX,GAAcwX,GACrB,IAAK3X,EAAc2X,GAAO,OAAO,CAEjC,KAAK,GAAI9M,KAAK8M,GACZ,GAAIA,EAAK9K,eAAehC,GACtB,OAAO,CAGX,QAAO,EAGT,QAAS+M,KACP,IAEE,MADA,IAAIC,YAAW,KACR,EACP,MAAO/gB,GACP,OAAO,GAIX,QAASghB,KACP,IAEE,MADA,IAAIC,UAAS,KACN,EACP,MAAOjhB,GACP,OAAO,GAIX,QAASkhB,KACP,IAEE,MADA,IAAIC,cAAa,KACV,EACP,MAAOnhB,GACP,OAAO,GAIX,QAASmK,KACP,KAAM,SAAW7D,IAAU,OAAO,CAElC,KAIE,MAHA,IAAI8a,SACJ,GAAIrJ,SAAQ,IACZ,GAAIsJ,WACG,EACP,MAAOrhB,GACP,OAAO,GAQX,QAAS2H,KACP,IAAKwC,IAAiB,OAAO,CAE7B,KAKE,MAHA,IAAI4N,SAAQ,cACVrQ,eAAgB,YAEX,EACP,MAAO1H,GACP,OAAO,GAIX,QAASshB,KACP,MAAwC,kBAA1BC,uBAGhB,QAASC,GAAgBvd,GACvB,QAASyN,GAAahN,EAAMS,GAC1B,GAAIsc,GAAiBxd,EAASS,IAASA,CACvC,OAAIS,GACKA,EAASsc,IAAmBA,EAE9BA,EAGT,MAAO/P,GAGT,QAASpI,GAAKgH,EAAKrM,GACjB,GAAIxD,GAAGkX,CAEP,IAAIlS,EAAY6K,EAAIxP,QAClB,IAAKL,IAAK6P,GACJ5G,EAAO4G,EAAK7P,IACdwD,EAASpD,KAAK,KAAMJ,EAAG6P,EAAI7P,QAK/B,IADAkX,EAAIrH,EAAIxP,OAEN,IAAKL,EAAI,EAAGA,EAAIkX,EAAGlX,IACjBwD,EAASpD,KAAK,KAAMJ,EAAG6P,EAAI7P,IAMnC,QAAS8I,GAAYmY,EAAMC,GACzB,MAAKA,IAGLrY,EAAKqY,EAAM,SAASxW,EAAKC,GACvBsW,EAAKvW,GAAOC,IAEPsW,GALEA,EAgBX,QAASjY,GAAa6G,GACpB,QAAKpN,OAAO0e,UAGL1e,OAAO0e,SAAStR,GAGzB,QAAS9G,GAASmQ,EAAKlO,GACrB,GAAmB,gBAARA,GACT,KAAM,IAAI/K,OAAM,yDAElB,OAAmB,gBAARiZ,IAA4B,IAARlO,EACtBkO,EAEFA,EAAI7Y,QAAU2K,EAAMkO,EAAMA,EAAI3M,OAAO,EAAGvB,GAAO,IAUxD,QAAS/B,GAAOmY,EAAQ1W,GACtB,MAAOjI,QAAOC,UAAU4S,eAAelV,KAAKghB,EAAQ1W,GAGtD,QAASxB,GAAWmY,GAQlB,IALA,GAGEC,GAHEC,KACFvhB,EAAI,EACJwhB,EAAMH,EAAShhB,OAGVL,EAAIwhB,EAAKxhB,IACdshB,EAAUD,EAASrhB,GACf0I,EAAS4Y,GAGXC,EAAQ1W,KAAKyW,EAAQrC,QAAQ,8BAA+B,SACnDqC,GAAWA,EAAQG,QAE5BF,EAAQ1W,KAAKyW,EAAQG,OAIzB,OAAO,IAAIC,QAAOH,EAAQI,KAAK,KAAM,KAGvC,QAASxY,GAAUvJ,GACjB,GAAIgiB,KAIJ,OAHA/Y,GAAKjJ,EAAG,SAAS8K,EAAKC,GACpBiX,EAAM/W,KAAKkH,mBAAmBrH,GAAO,IAAMqH,mBAAmBpH,MAEzDiX,EAAMD,KAAK,KAMpB,QAASnY,GAAS+F,GAChB,GAAmB,gBAARA,GAAkB,QAC7B,IAAIsS,GAAQtS,EAAIsS,MAAM,kEAGlBC,EAAQD,EAAM,IAAM,GACpBE,EAAWF,EAAM,IAAM,EAC3B,QACErN,SAAUqN,EAAM,GAChBpN,KAAMoN,EAAM,GACZxV,KAAMwV,EAAM,GACZnN,SAAUmN,EAAM,GAAKC,EAAQC,GAGjC,QAAS3Y,KACP,GAAI4Y,GAASnc,EAAQmc,QAAUnc,EAAQoc,QAEvC,KAAKjd,EAAYgd,IAAWA,EAAOE,gBAAiB,CAGlD,GAAIC,GAAM,GAAIC,aAAY,EAC1BJ,GAAOE,gBAAgBC,GAGvBA,EAAI,GAAe,KAATA,EAAI,GAAc,MAE5BA,EAAI,GAAe,MAATA,EAAI,GAAe,KAE7B,IAAIE,GAAM,SAASC,GAEjB,IADA,GAAIC,GAAID,EAAI3f,SAAS,IACd4f,EAAEliB,OAAS,GAChBkiB,EAAI,IAAMA,CAEZ,OAAOA,GAGT,OACEF,GAAIF,EAAI,IACRE,EAAIF,EAAI,IACRE,EAAIF,EAAI,IACRE,EAAIF,EAAI,IACRE,EAAIF,EAAI,IACRE,EAAIF,EAAI,IACRE,EAAIF,EAAI,IACRE,EAAIF,EAAI,IAIV,MAAO,mCAAmClD,QAAQ,QAAS,SAASuD,GAClE,GAAI9iB,GAAqB,GAAhBqL,KAAKmS,SAAiB,EAC7BqF,EAAU,MAANC,EAAY9iB,EAAS,EAAJA,EAAW,CAClC,OAAO6iB,GAAE5f,SAAS,MAYxB,QAAS0G,GAAiBoZ,GAWxB,IATA,GAOEC,GAPEC,EAAsB,EACxBC,EAAiB,GACjBC,KACAC,EAAS,EACTtB,EAAM,EACNuB,EAAY,MACZC,EAAYD,EAAU1iB,OAGjBoiB,GAAQK,IAAWH,IACxBD,EAAUO,EAAoBR,KAMhB,SAAZC,GACCI,EAAS,GAAKtB,EAAMqB,EAAIxiB,OAAS2iB,EAAYN,EAAQriB,QAAUuiB,KAKlEC,EAAIhY,KAAK6X,GAETlB,GAAOkB,EAAQriB,OACfoiB,EAAOA,EAAKS,UAGd,OAAOL,GAAInT,UAAUiS,KAAKoB,GAS5B,QAASE,GAAoBR,GAC3B,GACEU,GACAC,EACA1Y,EACA2Y,EACArjB,EALE6iB,IAOJ,KAAKJ,IAASA,EAAK5O,QACjB,MAAO,EAST,IANAgP,EAAIhY,KAAK4X,EAAK5O,QAAQR,eAClBoP,EAAK1c,IACP8c,EAAIhY,KAAK,IAAM4X,EAAK1c,IAGtBod,EAAYV,EAAKU,UACbA,GAAaza,EAASya,GAExB,IADAC,EAAUD,EAAUnZ,MAAM,OACrBhK,EAAI,EAAGA,EAAIojB,EAAQ/iB,OAAQL,IAC9B6iB,EAAIhY,KAAK,IAAMuY,EAAQpjB,GAG3B,IAAIsjB,IAAiB,OAAQ,OAAQ,QAAS,MAC9C,KAAKtjB,EAAI,EAAGA,EAAIsjB,EAAcjjB,OAAQL,IACpC0K,EAAM4Y,EAActjB,GACpBqjB,EAAOZ,EAAKc,aAAa7Y,GACrB2Y,GACFR,EAAIhY,KAAK,IAAMH,EAAM,KAAO2Y,EAAO,KAGvC,OAAOR,GAAIlB,KAAK,IAMlB,QAAS6B,GAAgB1jB,EAAG2jB,GAC1B,WAAY3jB,IAAM2jB,GAMpB,QAASC,GAAgB5jB,EAAG2jB,GAC1B,MAAOze,GAAYlF,IAAMkF,EAAYye,GAMvC,QAASna,GAAgBsF,EAAK+U,GAC5B,OAAIH,EAAgB5U,EAAK+U,KAEzB/U,EAAMA,EAAIiM,OAAO,GACjB8I,EAAMA,EAAI9I,OAAO,GAEbjM,EAAImH,OAAS4N,EAAI5N,MAAQnH,EAAIjE,QAAUgZ,EAAIhZ,SAG3C+Y,EAAgB9U,EAAIL,WAAYoV,EAAIpV,aAEjChF,EAAiBqF,EAAIL,WAAYoV,EAAIpV,cAM9C,QAAShF,GAAiBqa,EAAQC,GAChC,GAAIL,EAAgBI,EAAQC,GAAS,OAAO,CAE5C,IAAIC,GAAUF,EAAOpU,OACjBuU,EAAUF,EAAOrU,MAGrB,IAAIsU,EAAQzjB,SAAW0jB,EAAQ1jB,OAAQ,OAAO,CAI9C,KAAK,GADDP,GAAG2jB,EACEzjB,EAAI,EAAGA,EAAI8jB,EAAQzjB,OAAQL,IAGlC,GAFAF,EAAIgkB,EAAQ9jB,GACZyjB,EAAIM,EAAQ/jB,GAEVF,EAAEua,WAAaoJ,EAAEpJ,UACjBva,EAAE+Z,SAAW4J,EAAE5J,QACf/Z,EAAEya,QAAUkJ,EAAElJ,OACdza,EAAE,cAAgB2jB,EAAE,YAEpB,OAAO,CAEX,QAAO,EAUT,QAASha,GAAKoG,EAAK/N,EAAMkiB,EAAaC,GACpC,GAAW,MAAPpU,EAAJ,CACA,GAAImF,GAAOnF,EAAI/N,EACf+N,GAAI/N,GAAQkiB,EAAYhP,GACxBnF,EAAI/N,GAAMqL,GAAY,EACtB0C,EAAI/N,GAAMwL,EAAW0H,EACjBiP,GACFA,EAAMpZ,MAAMgF,EAAK/N,EAAMkT,KAU3B,QAAShR,GAASkgB,EAAOC,GACvB,IAAKxb,EAAQub,GAAQ,MAAO,EAI5B,KAAK,GAFDE,MAEKpkB,EAAI,EAAGA,EAAIkkB,EAAM7jB,OAAQL,IAChC,IACEokB,EAAOvZ,KAAKwZ,OAAOH,EAAMlkB,KACzB,MAAOT,GACP6kB,EAAOvZ,KAAK,gCAIhB,MAAOuZ,GAAOzC,KAAKwC,GASrB,QAASG,GAAW3Z,GAClB,QAAS4Z,UAAU5Z,GAAOX,MAAM,SAAS3J,OAG3C,QAASmkB,GAAS7Z,GAChB,MAAO2Z,GAAWzf,KAAKC,UAAU6F,IAGnC,QAAS8Z,GAAe9Z,GACtB,GAAqB,gBAAVA,GAAoB,CAC7B,GAAI+Z,GAAY,EAChB,OAAO3b,GAAS4B,EAAO+Z,GAClB,GACY,gBAAV/Z,IACU,iBAAVA,IACU,mBAAVA,GAEP,MAAOA,EAGT,IAAIoL,GAAOtT,OAAOC,UAAUC,SAASvC,KAAKuK,EAG1C,OAAa,oBAAToL,EAAmC,WAC1B,mBAATA,EAAkC,UACzB,sBAATA,EACKpL,EAAM7I,KAAO,cAAgB6I,EAAM7I,KAAO,IAAM,aAElD6I,EAGT,QAASga,GAAgBha,EAAOia,GAC9B,MAAc,KAAVA,EAAoBH,EAAe9Z,GAEnClC,EAAckC,GACTlI,OAAOuM,KAAKrE,GAAOka,OAAO,SAASC,EAAKpa,GAE7C,MADAoa,GAAIpa,GAAOia,EAAgBha,EAAMD,GAAMka,EAAQ,GACxCE,OAEA5P,MAAMvM,QAAQgC,GAChBA,EAAMoa,IAAI,SAASC,GACxB,MAAOL,GAAgBK,EAAKJ,EAAQ,KAIjCH,EAAe9Z,GAGxB,QAASf,GAAmByE,EAAIuW,EAAOK,GACrC,IAAKxc,EAAc4F,GAAK,MAAOA,EAE/BuW,GAAyB,gBAAVA,GAAqBM,EAAgCN,EACpEK,EAA2B,gBAAVL,GAAqBO,EAA+BF,CAErE,IAAIG,GAAaT,EAAgBtW,EAAIuW,EAErC,OAAIJ,GAAS1f,EAAUsgB,IAAeH,EAC7Brb,EAAmByE,EAAIuW,EAAQ,GAGjCQ,EAGT,QAASzb,GAAwBqF,EAAM0V,GACrC,GAAoB,gBAAT1V,IAAqC,gBAATA,GAAmB,MAAOA,GAAKrM,UACtE,KAAKuS,MAAMvM,QAAQqG,GAAO,MAAO,EAKjC,IAHAA,EAAOA,EAAKqW,OAAO,SAAS3a,GAC1B,MAAsB,gBAARA,KAEI,IAAhBsE,EAAK3O,OAAc,MAAO,sBAG9B,IADAqkB,EAAiC,gBAAdA,GAAyBY,EAA4BZ,EACpE1V,EAAK,GAAG3O,QAAUqkB,EAAW,MAAO1V,GAAK,EAE7C,KAAK,GAAIuW,GAAWvW,EAAK3O,OAAQklB,EAAW,EAAGA,IAAY,CACzD,GAAIH,GAAapW,EAAKnL,MAAM,EAAG0hB,GAAU5D,KAAK,KAC9C,MAAIyD,EAAW/kB,OAASqkB,GACxB,MAAIa,KAAavW,EAAK3O,OAAe+kB,EAC9BA,EAAa,IAGtB,MAAO,GAGT,QAASvb,GAASqa,EAAOrd,GAcvB,QAAS2e,GAAeC,GACtB,MAAI9c,GAAQ8c,GACHA,EAAYV,IAAI,SAASC,GAC9B,MAAOQ,GAAeR,KAItBvc,EAAcgd,GACThjB,OAAOuM,KAAKyW,GAAaZ,OAAO,SAASC,EAAKY,GAMnD,MAJEZ,GAAIY,GADFC,EAAevW,KAAKsW,GACbE,EAEAJ,EAAeC,EAAYC,IAE/BZ,OAIJW,EA/BT,IAAK9c,EAAQ9B,IAAkB8B,EAAQ9B,IAAyC,IAAxBA,EAAaxG,OACnE,MAAO6jB,EAET,IAEI2B,GAFAF,EAAiBzc,EAAWrC,GAC5B+e,EAAe,UAGnB,KACEC,EAAYhhB,KAAK+L,MAAM9L,EAAUof,IACjC,MAAO4B,GACP,MAAO5B,GAwBT,MAAOsB,GAAeK,GA5lBxB,GAAI/gB,GAAYvE,EAAQ,IAEpBsF,EACgB,mBAAX3G,QACHA,OACkB,mBAAXC,GAAyBA,EAAyB,mBAATC,MAAuBA,QA0dzE8lB,EAAgC,EAEhCC,EAA+B,MAC/BG,EAA4B,EA6HhCxmB,GAAOD,SACL2J,SAAUA,EACVD,QAASA,EACTH,aAAcA,EACdC,WAAYA,EACZC,eAAgBA,EAChBtD,YAAaA,EACbL,WAAYA,EACZ8D,cAAeA,EACfC,SAAUA,EACVC,QAASA,EACTC,cAAeA,EACfyX,mBAAoBA,EACpBE,iBAAkBA,EAClBE,qBAAsBA,EACtB/W,cAAeA,EACfxC,uBAAwBA,EACxB2Z,8BAA+BA,EAC/BE,gBAAiBA,EACjBlY,KAAMA,EACNC,YAAaA,EACbC,SAAUA,EACVC,aAAcA,EACdC,OAAQA,EACRC,WAAYA,EACZC,UAAWA,EACXC,MAAOA,EACPC,iBAAkBA,EAClB4Z,oBAAqBA,EACrB3Z,gBAAiBA,EACjBC,iBAAkBA,EAClBC,SAAUA,EACVC,KAAMA,EACNzF,SAAUA,EACV4F,mBAAoBA,EACpBD,wBAAyBA,EACzBE,SAAUA,KAGTzJ,KAAKf,KAAuB,mBAAXF,QAAyBA,OAAyB,mBAATC,MAAuBA,KAAyB,mBAAXF,QAAyBA,aACxH2gB,GAAK,KAAKE,GAAG,SAASxf,EAAQzB,EAAOD,IACxC,SAAWM,GA+BX,QAAS4mB,KACP,MAAwB,mBAAb7b,WAAiD,MAArBA,SAASpC,SAAyB,GAClEoC,SAASpC,SAASE,KAG3B,QAASge,KACP,MAAwB,mBAAb9b,WAAiD,MAArBA,SAASpC,SAAyB,IAGpEoC,SAASpC,SAASme,SACrB/b,SAASpC,SAASme,OAChB/b,SAASpC,SAAS0M,SAClB,KACAtK,SAASpC,SAASoe,UACjBhc,SAASpC,SAASyR,KAAO,IAAMrP,SAASpC,SAASyR,KAAO,KAGtDrP,SAASpC,SAASme,QA/C3B,GAAI7iB,GAAQ7C,EAAQ,GAYhB2H,GACF7B,qBAAqB,EACrBgE,OAAO,GAILxE,EACgB,mBAAX3G,QACHA,OACkB,mBAAXC,GAAyBA,EAAyB,mBAATC,MAAuBA,QAGzE+mB,KAAYtiB,MACZuiB,EAAmB,IAGnBC,EAAiB,yGA6DrBne,GAASwD,OAAS,WAUhB,QAASC,GAAU2a,GACjBC,IACAC,EAAS3b,KAAKyb,GAOhB,QAASG,GAAYH,GACnB,IAAK,GAAItmB,GAAIwmB,EAASnmB,OAAS,EAAGL,GAAK,IAAKA,EACtCwmB,EAASxmB,KAAOsmB,GAClBE,EAASE,OAAO1mB,EAAG,GAQzB,QAAS2mB,KACPC,IACAJ,KAOF,QAASK,GAAepY,EAAOqY,GAC7B,GAAIlM,GAAY,IAChB,KAAIkM,GAAkB5e,EAAS7B,oBAA/B,CAGA,IAAK,GAAIrG,KAAKwmB,GACZ,GAAIA,EAASlR,eAAetV,GAC1B,IACEwmB,EAASxmB,GAAGoE,MAAM,MAAOqK,GAAOuK,OAAOmN,EAAO/lB,KAAK0D,UAAW,KAC9D,MAAOijB,GACPnM,EAAYmM,EAKlB,GAAInM,EACF,KAAMA,IAiBV,QAASoM,GAAsBjjB,EAAKwL,EAAK0X,EAAQC,EAAO7Y,GACtD,GAAII,GAAQ,KAERmM,EAAYxX,EAAMgF,aAAaiG,GAAMA,EAAGzN,MAAQyN,EAEhDpL,EAAUG,EAAMgF,aAAarE,GAAOA,EAAId,QAAUc,CAEtD,IAAIojB,EACFjf,EAASwG,kBAAkB0Y,oCACzBD,EACA5X,EACA0X,EACAhkB,GAEFokB,QACK,IAAIzM,GAAaxX,EAAMmF,QAAQqS,GAMpCnM,EAAQvG,EAASwG,kBAAkBkM,GACnCiM,EAAepY,GAAO,OACjB,CACL,GAOI6Y,GAPAxf,GACFyH,IAAKA,EACL+K,KAAM2M,EACNzM,OAAQ0M,GAGNplB,EAAOiL,MAGX,IAAkC,uBAA3BpK,SAASvC,KAAK6C,GAAgC,CACnD,GAAIqkB,GAASrkB,EAAQ4e,MAAMwE,EACvBiB,KACFxlB,EAAOwlB,EAAO,GACdrkB,EAAUqkB,EAAO,IAIrBxf,EAASgF,KAAOsZ,EAEhB3X,GACE3M,KAAMA,EACNmB,QAASA,EACTsM,IAAKwW,IACLtX,OAAQ3G,IAEV+e,EAAepY,GAAO,GAGxB,QAAI8Y,GACKA,EAAmBnjB,MAAM/E,KAAMyE,WAM1C,QAASyiB,KACHiB,IAGJD,EAAqB1hB,EAAQlF,QAC7BkF,EAAQlF,QAAUqmB,EAClBQ,GAA2B,GAG7B,QAASZ,KACFY,IAGL3hB,EAAQlF,QAAU4mB,EAClBC,GAA2B,EAC3BD,EAAqBxa,QAGvB,QAASsa,KACP,GAAII,GAAsBN,EACxBO,EAAYC,CACdA,GAAW,KACXR,EAAqB,KACrB5V,EAAgB,KAChBsV,EAAeziB,MAAM,MAAOqjB,GAAqB,GAAOzO,OAAO0O,IAUjE,QAAShc,GAAO2C,EAAIuZ,GAClB,GAAIhkB,GAAOuiB,EAAO/lB,KAAK0D,UAAW,EAClC,IAAIqjB,EAAoB,CACtB,GAAI5V,IAAkBlD,EACpB,MAEAgZ,KAIJ,GAAI5Y,GAAQvG,EAASwG,kBAAkBL,EAevC,IAdA8Y,EAAqB1Y,EACrB8C,EAAgBlD,EAChBsZ,EAAW/jB,EAMX+O,WAAW,WACLpB,IAAkBlD,GACpBgZ,KAED5Y,EAAMoZ,WAAa,IAAO,GAEzBD,KAAY,EACd,KAAMvZ,GA9LV,GA0DIkZ,GAAoBC,EA1DpBhB,KACFmB,EAAW,KACXpW,EAAgB,KAChB4V,EAAqB,IAkMvB,OAHAzb,GAAOC,UAAYA,EACnBD,EAAO+a,YAAcA,EACrB/a,EAAO6B,UAAYoZ,EACZjb,KAsDTxD,EAASwG,kBAAoB,WA4C3B,QAASoZ,GAA+BzZ,GACtC,GAAwB,mBAAbA,GAAGI,OAA0BJ,EAAGI,MAA3C,CAiBA,IAAK,GALDsZ,GACAC,EACAC,EAZAtQ,EAAS,0IACTuQ,EAAQ,wHAGRC,EAAQ,6JAERC,EAAY,gDACZC,EAAa,gCACbC,EAAQja,EAAGI,MAAMzE,MAAM,MACvByE,KAMKzO,GAFO,sBAAsBoZ,KAAK/K,EAAGpL,SAEjC,GAAGiU,EAAIoR,EAAMjoB,OAAQL,EAAIkX,IAAKlX,EAAG,CAC5C,GAAKgoB,EAAQrQ,EAAOyB,KAAKkP,EAAMtoB,IAAM,CACnC,GAAIuoB,GAAWP,EAAM,IAAqC,IAA/BA,EAAM,GAAGtR,QAAQ,UACxC8R,EAASR,EAAM,IAAmC,IAA7BA,EAAM,GAAGtR,QAAQ,OACtC8R,KAAWT,EAAWM,EAAWjP,KAAK4O,EAAM,OAE9CA,EAAM,GAAKD,EAAS,GACpBC,EAAM,GAAKD,EAAS,GACpBC,EAAM,GAAKD,EAAS,IAEtBE,GACE1Y,IAAMgZ,EAAsB,KAAXP,EAAM,GACvBlb,KAAMkb,EAAM,IAAM5B,EAClBxiB,KAAM2kB,GAAYP,EAAM,OACxB1N,KAAM0N,EAAM,IAAMA,EAAM,GAAK,KAC7BxN,OAAQwN,EAAM,IAAMA,EAAM,GAAK,UAE5B,IAAKA,EAAQE,EAAM9O,KAAKkP,EAAMtoB,IACnCioB,GACE1Y,IAAKyY,EAAM,GACXlb,KAAMkb,EAAM,IAAM5B,EAClBxiB,QACA0W,MAAO0N,EAAM,GACbxN,OAAQwN,EAAM,IAAMA,EAAM,GAAK,UAE5B,CAAA,KAAKA,EAAQG,EAAM/O,KAAKkP,EAAMtoB,KAsBnC,QArBA,IAAIwoB,GAASR,EAAM,IAAMA,EAAM,GAAGtR,QAAQ,aACtC8R,KAAWT,EAAWK,EAAUhP,KAAK4O,EAAM,MAE7CA,EAAM,GAAKD,EAAS,GACpBC,EAAM,GAAKD,EAAS,GACpBC,EAAM,GAAK,MACI,IAANhoB,GAAYgoB,EAAM,IAAiC,mBAApB3Z,GAAGoa,eAK3Cha,EAAM,GAAG+L,OAASnM,EAAGoa,aAAe,GAEtCR,GACE1Y,IAAKyY,EAAM,GACXlb,KAAMkb,EAAM,IAAM5B,EAClBxiB,KAAMokB,EAAM,GAAKA,EAAM,GAAGhe,MAAM,QAChCsQ,KAAM0N,EAAM,IAAMA,EAAM,GAAK,KAC7BxN,OAAQwN,EAAM,IAAMA,EAAM,GAAK,MAUnC,IAJKC,EAAQnb,MAAQmb,EAAQ3N,OAC3B2N,EAAQnb,KAAOsZ,GAGb6B,EAAQ1Y,KAAoC,UAA7B0Y,EAAQ1Y,IAAIhD,OAAO,EAAG,GAAgB,CAMvD,GAAIpB,GAAM,GAAIqL,eAKd,IAJArL,EAAIgU,KAAK,MAAO8I,EAAQ1Y,KAAK,GAC7BpE,EAAIkU,KAAK,MAGU,MAAflU,EAAI6L,OAAgB,CACtB,GAAIyK,GAAStW,EAAIud,cAAgB,EAIjCjH,GAASA,EAAO5d,WAGhB,IAAI8kB,GAAalH,EAAOI,MAAM,+BAG9B,IAAI8G,EAAY,CACd,GAAIC,GAAmBD,EAAW,EAIC,OAA/BC,EAAiBC,OAAO,KAC1BD,EAAmB5C,IAAsB4C,EAAiB/kB,MAAM,IAKlEokB,EAAQ1Y,IAAMqZ,EAAiB/kB,MAAM,QAK3C4K,EAAM5D,KAAKod,GAGb,MAAKxZ,GAAMpO,QAKTyB,KAAMuM,EAAGvM;AACTmB,QAASoL,EAAGpL,QACZsM,IAAKwW,IACLtX,MAAOA,GAPA,MAwBX,QAAS2Y,GAAoC1N,EAAWnK,EAAK0X,EAAQhkB,GACnE,GAAI6lB,IACFvZ,IAAKA,EACL+K,KAAM2M,EAGR,IAAI6B,EAAQvZ,KAAOuZ,EAAQxO,KAAM,CAO/B,GANAZ,EAAUmO,YAAa,EAElBiB,EAAQhc,OACXgc,EAAQhc,KAAOsZ,GAGb1M,EAAUjL,MAAMpO,OAAS,GACvBqZ,EAAUjL,MAAM,GAAGc,MAAQuZ,EAAQvZ,IAAK,CAC1C,GAAImK,EAAUjL,MAAM,GAAG6L,OAASwO,EAAQxO,KACtC,OAAO,CACF,KACJZ,EAAUjL,MAAM,GAAG6L,MACpBZ,EAAUjL,MAAM,GAAG3B,OAASgc,EAAQhc,KAGpC,MADA4M,GAAUjL,MAAM,GAAG6L,KAAOwO,EAAQxO,MAC3B,EAOb,MAFAZ,GAAUjL,MAAMsa,QAAQD,GACxBpP,EAAUsP,SAAU,GACb,EAKT,MAHEtP,GAAUmO,YAAa,GAGlB,EAYT,QAASoB,GAAsC5a,EAAIuW,GASjD,IACE,GALAoD,GACAkB,EALEC,EAAe,qEACjB1a,KACA2a,KACAC,GAAY,EAMRC,EAAOL,EAAsCM,OACjDD,IAASD,EACTC,EAAOA,EAAKC,OAEZ,GAAID,IAAS5a,GAAqB4a,IAASphB,EAASwD,OAApD,CAkBA,GAbAwd,GACE3Z,IAAK,KACLzC,KAAMsZ,EACN9L,KAAM,KACNE,OAAQ,MAGN8O,EAAKxnB,KACPonB,EAAKpc,KAAOwc,EAAKxnB,MACPkmB,EAAQmB,EAAa/P,KAAKkQ,EAAK3mB,eACzCumB,EAAKpc,KAAOkb,EAAM,IAGK,mBAAdkB,GAAKpc,KACd,IACEoc,EAAKpc,KAAOkb,EAAM9D,MAAMsF,UAAU,EAAGxB,EAAM9D,MAAMxN,QAAQ,MACzD,MAAOnX,IAGP6pB,EAAM,GAAKE,GACbD,GAAY,EAEZD,EAAM,GAAKE,IAAQ,EAGrB7a,EAAM5D,KAAKqe,GAGTtE,GAGFnW,EAAMiY,OAAO,EAAG9B,EAGlB,IAAI3U,IACFnO,KAAMuM,EAAGvM,KACTmB,QAASoL,EAAGpL,QACZsM,IAAKwW,IACLtX,MAAOA,EAQT,OANA2Y,GACEnX,EACA5B,EAAGob,WAAapb,EAAGqb,SACnBrb,EAAGiM,MAAQjM,EAAGsb,WACdtb,EAAGpL,SAAWoL,EAAGub,aAEZ3Z,EAQT,QAASvB,GAAkBL,EAAIuW,GAC7B,GAAInW,GAAQ,IACZmW,GAAiB,MAATA,EAAgB,GAAKA,CAE7B,KAEE,GADAnW,EAAQqZ,EAA+BzZ,GAErC,MAAOI,GAET,MAAOlP,GACP,GAAI2I,EAASmC,MACX,KAAM9K,GAIV,IAEE,GADAkP,EAAQwa,EAAsC5a,EAAIuW,EAAQ,GAExD,MAAOnW,GAET,MAAOlP,GACP,GAAI2I,EAASmC,MACX,KAAM9K,GAGV,OACEuC,KAAMuM,EAAGvM,KACTmB,QAASoL,EAAGpL,QACZsM,IAAKwW,KAOT,MAHArX,GAAkB0Y,oCAAsCA,EACxD1Y,EAAkBoZ,+BAAiCA,EAE5CpZ,KAGT5P,EAAOD,QAAUqJ,IAEd9H,KAAKf,KAAuB,mBAAXF,QAAyBA,OAAyB,mBAATC,MAAuBA,KAAyB,mBAAXF,QAAyBA,aACxHmF,EAAI,IAAIwb,IAAI,SAAStf,EAAQzB,EAAOD,GAevC,QAAS6X,GAAQmT,EAAUC,GACzB,IAAK,GAAI9pB,GAAI,EAAGA,EAAI6pB,EAASxpB,SAAUL,EACrC,GAAI6pB,EAAS7pB,KAAO8pB,EAAQ,MAAO9pB,EAErC,UAGF,QAAS8E,GAAU+K,EAAKka,EAAUC,EAAQC,GACxC,MAAOplB,MAAKC,UAAU+K,EAAKqa,EAAWH,EAAUE,GAAgBD,GAIlE,QAASG,GAAexf,GACtB,GAAI+K,IAEFjH,MAAO9D,EAAM8D,MACbxL,QAAS0H,EAAM1H,QACfnB,KAAM6I,EAAM7I,KAGd,KAAK,GAAI9B,KAAK2K,GACRlI,OAAOC,UAAU4S,eAAelV,KAAKuK,EAAO3K,KAC9C0V,EAAI1V,GAAK2K,EAAM3K,GAInB,OAAO0V,GAGT,QAASwU,GAAWH,EAAUE,GAC5B,GAAIxb,MACAO,IAWJ,OATqB,OAAjBib,IACFA,EAAgB,SAASvf,EAAKC,GAC5B,MAAI8D,GAAM,KAAO9D,EACR,eAEF,eAAiBqE,EAAKnL,MAAM,EAAG6S,EAAQjI,EAAO9D,IAAQgX,KAAK,KAAO,MAItE,SAASjX,EAAKC,GACnB,GAAI8D,EAAMpO,OAAS,EAAG,CACpB,GAAI+pB,GAAU1T,EAAQjI,EAAOpP,OAC5B+qB,EAAU3b,EAAMiY,OAAO0D,EAAU,GAAK3b,EAAM5D,KAAKxL,OACjD+qB,EAAUpb,EAAK0X,OAAO0D,EAASC,EAAAA,EAAU3f,GAAOsE,EAAKnE,KAAKH,IAEtDgM,EAAQjI,EAAO9D,KAClBA,EAAQsf,EAAc7pB,KAAKf,KAAMqL,EAAKC,QAGxC8D,GAAM5D,KAAKF,EAGb,OAAmB,OAAZof,EACHpf,YAAiB1K,OAAQkqB,EAAexf,GAASA,EACjDof,EAAS3pB,KAAKf,KAAMqL,EAAKC,IA5DjC9L,EAAUC,EAAOD,QAAUiG,EAC3BjG,EAAQyrB,aAAeJ,OA+DjBpK,IAAI,SAASvf,EAAQzB,EAAOD,GAwBlC,QAAS0rB,GAAQC,EAAG5O,GAClB,GAAI6O,IAAW,MAAJD,IAAmB,MAAJ5O,GACtB8O,GAAOF,GAAK,KAAO5O,GAAK,KAAO6O,GAAO,GAC1C,OAAQC,IAAO,GAAa,MAAND,EAMxB,QAASE,GAAcrI,EAAKsI,GAC1B,MAAQtI,IAAOsI,EAAQtI,IAAS,GAAKsI,EAMvC,QAASC,GAAOC,EAAGhrB,EAAG2jB,EAAG+G,EAAG7qB,EAAGH,GAC7B,MAAO+qB,GAAQI,EAAcJ,EAAQA,EAAQzqB,EAAGgrB,GAAIP,EAAQC,EAAGhrB,IAAKG,GAAI8jB,GAE1E,QAASsH,GAAMjrB,EAAG2jB,EAAGjB,EAAGwI,EAAGR,EAAG7qB,EAAGH,GAC/B,MAAOqrB,GAAQpH,EAAIjB,GAAOiB,EAAIuH,EAAIlrB,EAAG2jB,EAAG+G,EAAG7qB,EAAGH,GAEhD,QAASyrB,GAAMnrB,EAAG2jB,EAAGjB,EAAGwI,EAAGR,EAAG7qB,EAAGH,GAC/B,MAAOqrB,GAAQpH,EAAIuH,EAAMxI,GAAKwI,EAAIlrB,EAAG2jB,EAAG+G,EAAG7qB,EAAGH,GAEhD,QAAS0rB,GAAMprB,EAAG2jB,EAAGjB,EAAGwI,EAAGR,EAAG7qB,EAAGH,GAC/B,MAAOqrB,GAAOpH,EAAIjB,EAAIwI,EAAGlrB,EAAG2jB,EAAG+G,EAAG7qB,EAAGH,GAEvC,QAAS2rB,GAAMrrB,EAAG2jB,EAAGjB,EAAGwI,EAAGR,EAAG7qB,EAAGH,GAC/B,MAAOqrB,GAAOrI,GAAKiB,GAAKuH,GAAIlrB,EAAG2jB,EAAG+G,EAAG7qB,EAAGH,GAM1C,QAAS4rB,GAAQZ,EAAGhJ,GAElBgJ,EAAEhJ,GAAO,IAAM,KAASA,EAAM,GAC9BgJ,GAAKhJ,EAAM,KAAQ,GAAM,GAAK,IAAMA,CAEpC,IAAIxhB,GACAqrB,EACAC,EACAC,EACAC,EACA1rB,EAAI,WACJ2jB,aACAjB,cACAwI,EAAI,SAER,KAAKhrB,EAAI,EAAGA,EAAIwqB,EAAEnqB,OAAQL,GAAK,GAC7BqrB,EAAOvrB,EACPwrB,EAAO7H,EACP8H,EAAO/I,EACPgJ,EAAOR,EAEPlrB,EAAIirB,EAAMjrB,EAAG2jB,EAAGjB,EAAGwI,EAAGR,EAAExqB,GAAI,cAC5BgrB,EAAID,EAAMC,EAAGlrB,EAAG2jB,EAAGjB,EAAGgI,EAAExqB,EAAI,GAAI,eAChCwiB,EAAIuI,EAAMvI,EAAGwI,EAAGlrB,EAAG2jB,EAAG+G,EAAExqB,EAAI,GAAI,GAAI,WACpCyjB,EAAIsH,EAAMtH,EAAGjB,EAAGwI,EAAGlrB,EAAG0qB,EAAExqB,EAAI,GAAI,gBAChCF,EAAIirB,EAAMjrB,EAAG2jB,EAAGjB,EAAGwI,EAAGR,EAAExqB,EAAI,GAAI,cAChCgrB,EAAID,EAAMC,EAAGlrB,EAAG2jB,EAAGjB,EAAGgI,EAAExqB,EAAI,GAAI,GAAI,YACpCwiB,EAAIuI,EAAMvI,EAAGwI,EAAGlrB,EAAG2jB,EAAG+G,EAAExqB,EAAI,GAAI,gBAChCyjB,EAAIsH,EAAMtH,EAAGjB,EAAGwI,EAAGlrB,EAAG0qB,EAAExqB,EAAI,GAAI,cAChCF,EAAIirB,EAAMjrB,EAAG2jB,EAAGjB,EAAGwI,EAAGR,EAAExqB,EAAI,GAAI,EAAG,YACnCgrB,EAAID,EAAMC,EAAGlrB,EAAG2jB,EAAGjB,EAAGgI,EAAExqB,EAAI,GAAI,gBAChCwiB,EAAIuI,EAAMvI,EAAGwI,EAAGlrB,EAAG2jB,EAAG+G,EAAExqB,EAAI,IAAK,WACjCyjB,EAAIsH,EAAMtH,EAAGjB,EAAGwI,EAAGlrB,EAAG0qB,EAAExqB,EAAI,IAAK,gBACjCF,EAAIirB,EAAMjrB,EAAG2jB,EAAGjB,EAAGwI,EAAGR,EAAExqB,EAAI,IAAK,EAAG,YACpCgrB,EAAID,EAAMC,EAAGlrB,EAAG2jB,EAAGjB,EAAGgI,EAAExqB,EAAI,IAAK,cACjCwiB,EAAIuI,EAAMvI,EAAGwI,EAAGlrB,EAAG2jB,EAAG+G,EAAExqB,EAAI,IAAK,gBACjCyjB,EAAIsH,EAAMtH,EAAGjB,EAAGwI,EAAGlrB,EAAG0qB,EAAExqB,EAAI,IAAK,GAAI,YAErCF,EAAImrB,EAAMnrB,EAAG2jB,EAAGjB,EAAGwI,EAAGR,EAAExqB,EAAI,GAAI,cAChCgrB,EAAIC,EAAMD,EAAGlrB,EAAG2jB,EAAGjB,EAAGgI,EAAExqB,EAAI,GAAI,eAChCwiB,EAAIyI,EAAMzI,EAAGwI,EAAGlrB,EAAG2jB,EAAG+G,EAAExqB,EAAI,IAAK,GAAI,WACrCyjB,EAAIwH,EAAMxH,EAAGjB,EAAGwI,EAAGlrB,EAAG0qB,EAAExqB,GAAI,eAC5BF,EAAImrB,EAAMnrB,EAAG2jB,EAAGjB,EAAGwI,EAAGR,EAAExqB,EAAI,GAAI,cAChCgrB,EAAIC,EAAMD,EAAGlrB,EAAG2jB,EAAGjB,EAAGgI,EAAExqB,EAAI,IAAK,EAAG,UACpCwiB,EAAIyI,EAAMzI,EAAGwI,EAAGlrB,EAAG2jB,EAAG+G,EAAExqB,EAAI,IAAK,eACjCyjB,EAAIwH,EAAMxH,EAAGjB,EAAGwI,EAAGlrB,EAAG0qB,EAAExqB,EAAI,GAAI,eAChCF,EAAImrB,EAAMnrB,EAAG2jB,EAAGjB,EAAGwI,EAAGR,EAAExqB,EAAI,GAAI,EAAG,WACnCgrB,EAAIC,EAAMD,EAAGlrB,EAAG2jB,EAAGjB,EAAGgI,EAAExqB,EAAI,IAAK,eACjCwiB,EAAIyI,EAAMzI,EAAGwI,EAAGlrB,EAAG2jB,EAAG+G,EAAExqB,EAAI,GAAI,eAChCyjB,EAAIwH,EAAMxH,EAAGjB,EAAGwI,EAAGlrB,EAAG0qB,EAAExqB,EAAI,GAAI,GAAI,YACpCF,EAAImrB,EAAMnrB,EAAG2jB,EAAGjB,EAAGwI,EAAGR,EAAExqB,EAAI,IAAK,eACjCgrB,EAAIC,EAAMD,EAAGlrB,EAAG2jB,EAAGjB,EAAGgI,EAAExqB,EAAI,GAAI,aAChCwiB,EAAIyI,EAAMzI,EAAGwI,EAAGlrB,EAAG2jB,EAAG+G,EAAExqB,EAAI,GAAI,GAAI,YACpCyjB,EAAIwH,EAAMxH,EAAGjB,EAAGwI,EAAGlrB,EAAG0qB,EAAExqB,EAAI,IAAK,gBAEjCF,EAAIorB,EAAMprB,EAAG2jB,EAAGjB,EAAGwI,EAAGR,EAAExqB,EAAI,GAAI,WAChCgrB,EAAIE,EAAMF,EAAGlrB,EAAG2jB,EAAGjB,EAAGgI,EAAExqB,EAAI,GAAI,gBAChCwiB,EAAI0I,EAAM1I,EAAGwI,EAAGlrB,EAAG2jB,EAAG+G,EAAExqB,EAAI,IAAK,GAAI,YACrCyjB,EAAIyH,EAAMzH,EAAGjB,EAAGwI,EAAGlrB,EAAG0qB,EAAExqB,EAAI,IAAK,cACjCF,EAAIorB,EAAMprB,EAAG2jB,EAAGjB,EAAGwI,EAAGR,EAAExqB,EAAI,GAAI,eAChCgrB,EAAIE,EAAMF,EAAGlrB,EAAG2jB,EAAGjB,EAAGgI,EAAExqB,EAAI,GAAI,GAAI,YACpCwiB,EAAI0I,EAAM1I,EAAGwI,EAAGlrB,EAAG2jB,EAAG+G,EAAExqB,EAAI,GAAI,eAChCyjB,EAAIyH,EAAMzH,EAAGjB,EAAGwI,EAAGlrB,EAAG0qB,EAAExqB,EAAI,IAAK,gBACjCF,EAAIorB,EAAMprB,EAAG2jB,EAAGjB,EAAGwI,EAAGR,EAAExqB,EAAI,IAAK,EAAG,WACpCgrB,EAAIE,EAAMF,EAAGlrB,EAAG2jB,EAAGjB,EAAGgI,EAAExqB,GAAI,eAC5BwiB,EAAI0I,EAAM1I,EAAGwI,EAAGlrB,EAAG2jB,EAAG+G,EAAExqB,EAAI,GAAI,eAChCyjB,EAAIyH,EAAMzH,EAAGjB,EAAGwI,EAAGlrB,EAAG0qB,EAAExqB,EAAI,GAAI,GAAI,UACpCF,EAAIorB,EAAMprB,EAAG2jB,EAAGjB,EAAGwI,EAAGR,EAAExqB,EAAI,GAAI,cAChCgrB,EAAIE,EAAMF,EAAGlrB,EAAG2jB,EAAGjB,EAAGgI,EAAExqB,EAAI,IAAK,eACjCwiB,EAAI0I,EAAM1I,EAAGwI,EAAGlrB,EAAG2jB,EAAG+G,EAAExqB,EAAI,IAAK,GAAI,WACrCyjB,EAAIyH,EAAMzH,EAAGjB,EAAGwI,EAAGlrB,EAAG0qB,EAAExqB,EAAI,GAAI,eAEhCF,EAAIqrB,EAAMrrB,EAAG2jB,EAAGjB,EAAGwI,EAAGR,EAAExqB,GAAI,cAC5BgrB,EAAIG,EAAMH,EAAGlrB,EAAG2jB,EAAGjB,EAAGgI,EAAExqB,EAAI,GAAI,GAAI,YACpCwiB,EAAI2I,EAAM3I,EAAGwI,EAAGlrB,EAAG2jB,EAAG+G,EAAExqB,EAAI,IAAK,gBACjCyjB,EAAI0H,EAAM1H,EAAGjB,EAAGwI,EAAGlrB,EAAG0qB,EAAExqB,EAAI,GAAI,cAChCF,EAAIqrB,EAAMrrB,EAAG2jB,EAAGjB,EAAGwI,EAAGR,EAAExqB,EAAI,IAAK,EAAG,YACpCgrB,EAAIG,EAAMH,EAAGlrB,EAAG2jB,EAAGjB,EAAGgI,EAAExqB,EAAI,GAAI,gBAChCwiB,EAAI2I,EAAM3I,EAAGwI,EAAGlrB,EAAG2jB,EAAG+G,EAAExqB,EAAI,IAAK,aACjCyjB,EAAI0H,EAAM1H,EAAGjB,EAAGwI,EAAGlrB,EAAG0qB,EAAExqB,EAAI,GAAI,gBAChCF,EAAIqrB,EAAMrrB,EAAG2jB,EAAGjB,EAAGwI,EAAGR,EAAExqB,EAAI,GAAI,EAAG,YACnCgrB,EAAIG,EAAMH,EAAGlrB,EAAG2jB,EAAGjB,EAAGgI,EAAExqB,EAAI,IAAK,cACjCwiB,EAAI2I,EAAM3I,EAAGwI,EAAGlrB,EAAG2jB,EAAG+G,EAAExqB,EAAI,GAAI,gBAChCyjB,EAAI0H,EAAM1H,EAAGjB,EAAGwI,EAAGlrB,EAAG0qB,EAAExqB,EAAI,IAAK,GAAI,YACrCF,EAAIqrB,EAAMrrB,EAAG2jB,EAAGjB,EAAGwI,EAAGR,EAAExqB,EAAI,GAAI,cAChCgrB,EAAIG,EAAMH,EAAGlrB,EAAG2jB,EAAGjB,EAAGgI,EAAExqB,EAAI,IAAK,gBACjCwiB,EAAI2I,EAAM3I,EAAGwI,EAAGlrB,EAAG2jB,EAAG+G,EAAExqB,EAAI,GAAI,GAAI,WACpCyjB,EAAI0H,EAAM1H,EAAGjB,EAAGwI,EAAGlrB,EAAG0qB,EAAExqB,EAAI,GAAI,eAEhCF,EAAIyqB,EAAQzqB,EAAGurB,GACf5H,EAAI8G,EAAQ9G,EAAG6H,GACf9I,EAAI+H,EAAQ/H,EAAG+I,GACfP,EAAIT,EAAQS,EAAGQ,EAEjB,QAAQ1rB,EAAG2jB,EAAGjB,EAAGwI,GAMnB,QAASS,GAAUvH,GACjB,GAAIlkB,GACAokB,EAAS,GACTsH,EAA0B,GAAfxH,EAAM7jB,MACrB,KAAKL,EAAI,EAAGA,EAAI0rB,EAAU1rB,GAAK,EAC7BokB,GAAUC,OAAOsH,aAAczH,EAAMlkB,GAAK,KAAQA,EAAI,GAAO,IAE/D,OAAOokB,GAOT,QAASwH,GAAU1H,GACjB,GAAIlkB,GACAokB,IAEJ,KADAA,GAAQF,EAAM7jB,QAAU,GAAK,GAAK0M,OAC7B/M,EAAI,EAAGA,EAAIokB,EAAO/jB,OAAQL,GAAK,EAClCokB,EAAOpkB,GAAK,CAEd,IAAI6rB,GAAyB,EAAf3H,EAAM7jB,MACpB,KAAKL,EAAI,EAAGA,EAAI6rB,EAAS7rB,GAAK,EAC5BokB,EAAOpkB,GAAK,KAAiC,IAA1BkkB,EAAM4H,WAAW9rB,EAAI,KAAeA,EAAI,EAE7D,OAAOokB,GAMT,QAAS2H,GAAQpsB,GACf,MAAO8rB,GAAUL,EAAQQ,EAAUjsB,GAAe,EAAXA,EAAEU,SAM3C,QAAS2rB,GAAYthB,EAAKzG,GACxB,GAAIjE,GAIAuf,EAHA0M,EAAOL,EAAUlhB,GACjBwhB,KACAC,IAMJ,KAJAD,EAAK,IAAMC,EAAK,IAAMpf,OAClBkf,EAAK5rB,OAAS,KAChB4rB,EAAOb,EAAQa,EAAmB,EAAbvhB,EAAIrK,SAEtBL,EAAI,EAAGA,EAAI,GAAIA,GAAK,EACvBksB,EAAKlsB,GAAe,UAAVisB,EAAKjsB,GACfmsB,EAAKnsB,GAAe,WAAVisB,EAAKjsB,EAGjB,OADAuf,GAAO6L,EAAQc,EAAKlT,OAAO4S,EAAU3nB,IAAQ,IAAoB,EAAdA,EAAK5D,QACjDorB,EAAUL,EAAQe,EAAKnT,OAAOuG,GAAO,MAM9C,QAAS6M,GAASlI,GAChB,GAEIsG,GACAxqB,EAHAqsB,EAAS,mBACTjI,EAAS,EAGb,KAAKpkB,EAAI,EAAGA,EAAIkkB,EAAM7jB,OAAQL,GAAK,EACjCwqB,EAAItG,EAAM4H,WAAW9rB,GACrBokB,GAAUiI,EAAOxD,OAAQ2B,IAAM,EAAK,IAAQ6B,EAAOxD,OAAW,GAAJ2B,EAE5D,OAAOpG,GAMT,QAASkI,GAAapI,GACpB,MAAOqI,UAASxa,mBAAmBmS,IAMrC,QAASsI,GAAO7sB,GACd,MAAOosB,GAAQO,EAAa3sB,IAE9B,QAAS8sB,GAAO9sB,GACd,MAAOysB,GAASI,EAAO7sB,IAEzB,QAAS+sB,GAAWhH,EAAGsF,GACrB,MAAOgB,GAAYM,EAAa5G,GAAI4G,EAAatB,IAEnD,QAAS2B,GAAWjH,EAAGsF,GACrB,MAAOoB,GAASM,EAAWhH,EAAGsF,IAGhC,QAAS7iB,GAAIykB,EAAQliB,EAAKmiB,GACxB,MAAKniB,GAMAmiB,EAGEH,EAAWhiB,EAAKkiB,GAFdD,EAAWjiB,EAAKkiB,GANlBC,EAGEL,EAAOI,GAFLH,EAAOG,GAUpB9tB,EAAOD,QAAUsJ,YAEN,EAAE,EAAE,EAAE,IAAI","file":"raven.min.js"} \ No newline at end of file diff --git a/dist/ember,require/raven.js b/dist/ember,require/raven.js index 085add5796a1..850e96e9d9c2 100644 --- a/dist/ember,require/raven.js +++ b/dist/ember,require/raven.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.25.1 (b6f3c7a) | github.com/getsentry/raven-js */ +/*! Raven.js 3.25.2 (30b6d4e) | github.com/getsentry/raven-js */ /* * Includes TraceKit @@ -167,7 +167,11 @@ function now() { var _window = typeof window !== 'undefined' ? window - : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; + : typeof global !== 'undefined' + ? global + : typeof self !== 'undefined' + ? self + : {}; var _document = _window.document; var _navigator = _window.navigator; @@ -257,7 +261,7 @@ Raven.prototype = { // webpack (using a build step causes webpack #1617). Grunt verifies that // this value matches package.json during build. // See: https://github.com/getsentry/raven-js/issues/465 - VERSION: '3.25.1', + VERSION: '3.25.2', debug: false, @@ -1813,7 +1817,7 @@ Raven.prototype = { } ] }, - culprit: fileurl + transaction: fileurl }, options ); @@ -1928,7 +1932,7 @@ Raven.prototype = { if ( !last || current.message !== last.message || // defined for captureMessage - current.culprit !== last.culprit // defined for captureException/onerror + current.transaction !== last.transaction // defined for captureException/onerror ) return false; diff --git a/dist/ember,require/raven.min.js b/dist/ember,require/raven.min.js index 357788a82b33..e14f534b1cc1 100644 --- a/dist/ember,require/raven.min.js +++ b/dist/ember,require/raven.min.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.25.1 (b6f3c7a) | github.com/getsentry/raven-js */ -!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.Raven=a()}}(function(){var a;return function b(a,c,d){function e(g,h){if(!c[g]){if(!a[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};a[g][0].call(k.exports,function(b){var c=a[g][1][b];return e(c?c:b)},k,k.exports,b,a,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;gthis.k.maxBreadcrumbs&&this.u.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.r.push([a,b]),this.n&&this.F(),this},setUserContext:function(a){return this.j.user=a,this},setExtraContext:function(a){return this.Z("extra",a),this},setTagsContext:function(a){return this.Z("tags",a),this},clearContext:function(){return this.j={},this},getContext:function(){return JSON.parse(h(this.j))},setEnvironment:function(a){return this.k.environment=a,this},setRelease:function(a){return this.k.release=a,this},setDataCallback:function(a){var b=this.k.dataCallback;return this.k.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.k.breadcrumbCallback;return this.k.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.k.shouldSendCallback;return this.k.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.k.transport=a,this},lastException:function(){return this.d},lastEventId:function(){return this.f},isSetup:function(){return!!this.a&&(!!this.g||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.z("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=R.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(S){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.H;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.j.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.J(this.G(c)),h=S.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(S.head||S.body).appendChild(h)}},L:function(){var a=this;this.m+=1,setTimeout(function(){a.m-=1})},$:function(a,b){var c,d;if(this.b){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),S.createEvent?(c=S.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=S.createEventObject(),c.eventType=a);for(d in b)A(b,d)&&(c[d]=b[d]);if(S.createEvent)S.dispatchEvent(c);else try{S.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},_:function(a){var b=this;return function(c){if(b.aa=null,b.v!==c){b.v=c;var d;try{d=E(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ba:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.aa;g||a._("input")(c),clearTimeout(g),a.aa=setTimeout(function(){a.aa=null},b)}}},ca:function(a,b){var c=H(this.w.href),d=H(b),e=H(a);this.x=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},C:function(){var a=this;a.da=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.M?a.da.apply(this.O,arguments):a.da.apply(this,arguments)}},Q:function(){this.da&&(Function.prototype.toString=this.da)},D:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.ca(b.x,c+""),a.apply(this,arguments)}};I(R.history,"pushState",j,d),I(R.history,"replaceState",j,d)}if(c.console&&"console"in R&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};w(["debug","info","warn","error","log"],function(a,b){O(console,b,k)})}},R:function(){for(var a;this.t.length;){a=this.t.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},S:function(){for(var a in this.q)this.p[a]=this.q[a]},F:function(){var a=this;w(this.r,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},G:function(a){var b=Q.exec(a),c={},d=7;try{for(;d--;)c[P[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.k.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},J:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},A:function(){this.m||this.V.apply(this,arguments)},V:function(a,b){var c=this.X(a,b);this.$("handle",{stackInfo:a,options:b}),this.fa(a.name,a.message,a.url,a.lineno,c,b)},X:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(w(a.stack,function(b,e){var f=c.ga(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.u,0)}),this.j.user&&(a.user=this.j.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),a=this.pa(a),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||v(a[b]))&&delete a[b]}),s(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!v(a)&&(!s(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.ma()?void this.z("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function F(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&l(b))for(c=b.split(/\s+/),f=0;fc?Q(a,b-1):d}function R(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?X:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function S(a,b){function c(a){return m(a)?a.map(function(a){return c(a)}):k(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!m(b)||m(b)&&0===b.length)return a;var d,e=A(b),f="********";try{d=JSON.parse(T(a))}catch(g){return a}return c(d)}var T=a(9),U="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},V=3,W=51200,X=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isDOMError:g,isDOMException:h,isUndefined:i,isFunction:j,isPlainObject:k,isString:l,isArray:m,isEmptyObject:n,supportsErrorEvent:o,supportsDOMError:p,supportsDOMException:q,supportsFetch:r,supportsReferrerPolicy:s,supportsPromiseRejectionEvent:t,wrappedCallback:u,each:v,objectMerge:w,truncate:y,objectFrozen:x,hasKey:z,joinRegExp:A,urlencode:B,uuid4:D,htmlTreeAsString:E,htmlElementAsString:F,isSameException:I,isSameStacktrace:J,parseUrl:C,fill:K,safeJoin:L,serializeException:Q,serializeKeysForMessage:R,sanitize:S}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{9:9}],8:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}function e(){return"undefined"==typeof document||null==document.location?"":(document.location.origin||(document.location.origin=document.location.protocol+"//"+document.location.hostname+(document.location.port?":"+document.location.port:"")),document.location.origin)}var f=a(7),g={collectWindowErrors:!0,debug:!1},h="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},i=[].slice,j="?",k=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;g.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function e(a,b){var c=null;if(!b||g.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(i.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,h,i){var l=null,m=f.isErrorEvent(i)?i.error:i,n=f.isErrorEvent(a)?a.message:a;if(v)g.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&f.isError(m))l=g.computeStackTrace(m),e(l,!0);else{var p,r={url:b,line:c,column:h},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(k);p&&(s=p[1],n=p[2])}r.func=j,l={name:s,message:n,url:d(),stack:[r]},e(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=h.onerror,h.onerror=l,r=!0)}function n(){r&&(h.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,e.apply(null,[a,!1].concat(b))}function p(a,b){var c=i.call(arguments,1);if(v){if(u===a)return;o()}var d=g.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),g.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,f,g=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,h=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,i=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,k=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,l=/\((\S*)(?::(\d+))(?::(\d+))\)/,m=a.stack.split("\n"),n=[],o=(/^(.*) is undefined$/.exec(a.message),0),p=m.length;o eval")>-1;r&&(b=k.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==o||c[5]||"undefined"==typeof a.columnNumber||(n[0].column=a.columnNumber+1),f={url:c[3],func:c[1]||j,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}if(!f.func&&f.line&&(f.func=j),f.url&&"blob:"===f.url.substr(0,5)){var s=new XMLHttpRequest;if(s.open("GET",f.url,!1),s.send(null),200===s.status){var t=s.responseText||"";t=t.slice(-300);var u=t.match(/\/\/# sourceMappingURL=(.*)$/);if(u){var v=u[1];"~"===v.charAt(0)&&(v=e()+v.slice(1)),f.url=v.slice(0,-4)}}}n.push(f)}return n.length?{name:a.name,message:a.message,url:d(),stack:n}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=j),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,e){for(var h,i,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==f&&o!==g.report){if(i={url:null,func:j,line:null,column:null},o.name?i.func=o.name:(h=k.exec(o.toString()))&&(i.func=h[1]),"undefined"==typeof i.func)try{ +/*! Raven.js 3.25.2 (30b6d4e) | github.com/getsentry/raven-js */ +!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.Raven=a()}}(function(){var a;return function b(a,c,d){function e(g,h){if(!c[g]){if(!a[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};a[g][0].call(k.exports,function(b){var c=a[g][1][b];return e(c?c:b)},k,k.exports,b,a,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;gthis.k.maxBreadcrumbs&&this.u.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.r.push([a,b]),this.n&&this.F(),this},setUserContext:function(a){return this.j.user=a,this},setExtraContext:function(a){return this.Z("extra",a),this},setTagsContext:function(a){return this.Z("tags",a),this},clearContext:function(){return this.j={},this},getContext:function(){return JSON.parse(h(this.j))},setEnvironment:function(a){return this.k.environment=a,this},setRelease:function(a){return this.k.release=a,this},setDataCallback:function(a){var b=this.k.dataCallback;return this.k.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.k.breadcrumbCallback;return this.k.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.k.shouldSendCallback;return this.k.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.k.transport=a,this},lastException:function(){return this.d},lastEventId:function(){return this.f},isSetup:function(){return!!this.a&&(!!this.g||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.z("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=R.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(S){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.H;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.j.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.J(this.G(c)),h=S.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(S.head||S.body).appendChild(h)}},L:function(){var a=this;this.m+=1,setTimeout(function(){a.m-=1})},$:function(a,b){var c,d;if(this.b){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),S.createEvent?(c=S.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=S.createEventObject(),c.eventType=a);for(d in b)A(b,d)&&(c[d]=b[d]);if(S.createEvent)S.dispatchEvent(c);else try{S.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},_:function(a){var b=this;return function(c){if(b.aa=null,b.v!==c){b.v=c;var d;try{d=E(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ba:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.aa;g||a._("input")(c),clearTimeout(g),a.aa=setTimeout(function(){a.aa=null},b)}}},ca:function(a,b){var c=H(this.w.href),d=H(b),e=H(a);this.x=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},C:function(){var a=this;a.da=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.M?a.da.apply(this.O,arguments):a.da.apply(this,arguments)}},Q:function(){this.da&&(Function.prototype.toString=this.da)},D:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.ca(b.x,c+""),a.apply(this,arguments)}};I(R.history,"pushState",j,d),I(R.history,"replaceState",j,d)}if(c.console&&"console"in R&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};w(["debug","info","warn","error","log"],function(a,b){O(console,b,k)})}},R:function(){for(var a;this.t.length;){a=this.t.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},S:function(){for(var a in this.q)this.p[a]=this.q[a]},F:function(){var a=this;w(this.r,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},G:function(a){var b=Q.exec(a),c={},d=7;try{for(;d--;)c[P[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.k.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},J:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},A:function(){this.m||this.V.apply(this,arguments)},V:function(a,b){var c=this.X(a,b);this.$("handle",{stackInfo:a,options:b}),this.fa(a.name,a.message,a.url,a.lineno,c,b)},X:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(w(a.stack,function(b,e){var f=c.ga(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.u,0)}),this.j.user&&(a.user=this.j.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),a=this.pa(a),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||v(a[b]))&&delete a[b]}),s(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!v(a)&&(!s(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.ma()?void this.z("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function F(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&l(b))for(c=b.split(/\s+/),f=0;fc?Q(a,b-1):d}function R(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?X:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function S(a,b){function c(a){return m(a)?a.map(function(a){return c(a)}):k(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!m(b)||m(b)&&0===b.length)return a;var d,e=A(b),f="********";try{d=JSON.parse(T(a))}catch(g){return a}return c(d)}var T=a(9),U="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},V=3,W=51200,X=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isDOMError:g,isDOMException:h,isUndefined:i,isFunction:j,isPlainObject:k,isString:l,isArray:m,isEmptyObject:n,supportsErrorEvent:o,supportsDOMError:p,supportsDOMException:q,supportsFetch:r,supportsReferrerPolicy:s,supportsPromiseRejectionEvent:t,wrappedCallback:u,each:v,objectMerge:w,truncate:y,objectFrozen:x,hasKey:z,joinRegExp:A,urlencode:B,uuid4:D,htmlTreeAsString:E,htmlElementAsString:F,isSameException:I,isSameStacktrace:J,parseUrl:C,fill:K,safeJoin:L,serializeException:Q,serializeKeysForMessage:R,sanitize:S}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{9:9}],8:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}function e(){return"undefined"==typeof document||null==document.location?"":(document.location.origin||(document.location.origin=document.location.protocol+"//"+document.location.hostname+(document.location.port?":"+document.location.port:"")),document.location.origin)}var f=a(7),g={collectWindowErrors:!0,debug:!1},h="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},i=[].slice,j="?",k=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;g.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function e(a,b){var c=null;if(!b||g.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(i.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,h,i){var l=null,m=f.isErrorEvent(i)?i.error:i,n=f.isErrorEvent(a)?a.message:a;if(v)g.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&f.isError(m))l=g.computeStackTrace(m),e(l,!0);else{var p,r={url:b,line:c,column:h},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(k);p&&(s=p[1],n=p[2])}r.func=j,l={name:s,message:n,url:d(),stack:[r]},e(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=h.onerror,h.onerror=l,r=!0)}function n(){r&&(h.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,e.apply(null,[a,!1].concat(b))}function p(a,b){var c=i.call(arguments,1);if(v){if(u===a)return;o()}var d=g.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),g.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,f,g=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,h=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,i=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,k=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,l=/\((\S*)(?::(\d+))(?::(\d+))\)/,m=a.stack.split("\n"),n=[],o=(/^(.*) is undefined$/.exec(a.message),0),p=m.length;o eval")>-1;r&&(b=k.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==o||c[5]||"undefined"==typeof a.columnNumber||(n[0].column=a.columnNumber+1),f={url:c[3],func:c[1]||j,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}if(!f.func&&f.line&&(f.func=j),f.url&&"blob:"===f.url.substr(0,5)){var s=new XMLHttpRequest;if(s.open("GET",f.url,!1),s.send(null),200===s.status){var t=s.responseText||"";t=t.slice(-300);var u=t.match(/\/\/# sourceMappingURL=(.*)$/);if(u){var v=u[1];"~"===v.charAt(0)&&(v=e()+v.slice(1)),f.url=v.slice(0,-4)}}}n.push(f)}return n.length?{name:a.name,message:a.message,url:d(),stack:n}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=j),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,e){for(var h,i,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==f&&o!==g.report){if(i={url:null,func:j,line:null,column:null},o.name?i.func=o.name:(h=k.exec(o.toString()))&&(i.func=h[1]),"undefined"==typeof i.func)try{ i.func=h.input.substring(0,h.input.indexOf("{"))}catch(p){}m[""+o]?n=!0:m[""+o]=!0,l.push(i)}e&&l.splice(0,e);var q={name:a.name,message:a.message,url:d(),stack:l};return b(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),q}function f(b,e){var f=null;e=null==e?0:+e;try{if(f=a(b))return f}catch(h){if(g.debug)throw h}try{if(f=c(b,e+1))return f}catch(h){if(g.debug)throw h}return{name:b.name,message:b.message,url:d()}}return f.augmentStackTraceWithInitialElement=b,f.computeStackTraceFromStackProp=a,f}(),b.exports=g}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{7:7}],9:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}],10:[function(a,b,c){function d(a,b){var c=(65535&a)+(65535&b),d=(a>>16)+(b>>16)+(c>>16);return d<<16|65535&c}function e(a,b){return a<>>32-b}function f(a,b,c,f,g,h){return d(e(d(d(b,a),d(f,h)),g),c)}function g(a,b,c,d,e,g,h){return f(b&c|~b&d,a,b,e,g,h)}function h(a,b,c,d,e,g,h){return f(b&d|c&~d,a,b,e,g,h)}function i(a,b,c,d,e,g,h){return f(b^c^d,a,b,e,g,h)}function j(a,b,c,d,e,g,h){return f(c^(b|~d),a,b,e,g,h)}function k(a,b){a[b>>5]|=128<>>9<<4)+14]=b;var c,e,f,k,l,m=1732584193,n=-271733879,o=-1732584194,p=271733878;for(c=0;c>5]>>>b%32&255);return c}function m(a){var b,c=[];for(c[(a.length>>2)-1]=void 0,b=0;b>5]|=(255&a.charCodeAt(b/8))<16&&(e=k(e,8*a.length)),c=0;c<16;c+=1)f[c]=909522486^e[c],g[c]=1549556828^e[c];return d=k(f.concat(m(b)),512+8*b.length),l(k(g.concat(d),640))}function p(a){var b,c,d="0123456789abcdef",e="";for(c=0;c>>4&15)+d.charAt(15&b);return e}function q(a){return unescape(encodeURIComponent(a))}function r(a){return n(q(a))}function s(a){return p(r(a))}function t(a,b){return o(q(a),q(b))}function u(a,b){return p(t(a,b))}function v(a,b,c){return b?c?t(b,a):u(b,a):c?r(a):s(a)}b.exports=v},{}]},{},[6,1,2])(6)}); //# sourceMappingURL=raven.min.js.map \ No newline at end of file diff --git a/dist/ember,require/raven.min.js.map b/dist/ember,require/raven.min.js.map index d3f0b329484e..4fdc58d04694 100644 --- a/dist/ember,require/raven.min.js.map +++ b/dist/ember,require/raven.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","emberPlugin","Ember","_oldOnError","onerror","error","captureException","RSVP","on","reason","extra","context","captureMessage","addPlugin","6","2","requirePlugin","wrap","deep","3","RavenConfigError","message","name","prototype","constructor","4","utils","wrapMethod","console","level","callback","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","msg","safeJoin","data","logger","Function","apply","7","5","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","sanitizeKeys","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isErrorEvent","isDOMError","isDOMException","isError","isObject","isPlainObject","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","sanitize","wrapConsoleMethod","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","config","dsn","options","_logDebug","globalOptions","key","value","setDSN","push","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","toString","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","substr","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","func","undefined","_before","wrapped","_ignoreNextOnError","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","T","event","unhandledPromiseRejection","B","_promiseRejectionHandler","bind","addEventListener","P","removeEventListener","ex","trimHeadFrames","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","U","currentOptions","exKeys","Object","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","setDataCallback","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","L","setTimeout","$","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","_","evtName","_keypressTimeout","target","category","ba","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","ca","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","C","_originalFunctionToString","Q","D","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","type","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","E","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","R","builtin","S","F","installer","concat","G","str","m","exec","allowSecretKey","J","port","A","V","stackInfo","_triggerEvent","_processException","lineno","X","frame","_normalizeFrame","in_app","ga","stackInfoUrl","normalized","filename","line","colno","column","function","fa","prefixedMessage","exception","values","culprit","ha","request","Referer","breadcrumbs","_trimBreadcrumbs","ia","urlProp","urlProps","ja","httpData","userAgent","User-Agent","referrer","y","_backoffDuration","_backoffStart","ma","na","current","last","oa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Y","baseData","project","platform","_getHttpData","serverName","server_name","_sanitizeData","forEach","random","_sendProcessedPayload","pa","ra","qa","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","sa","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","open","setRequestHeader","send","ta","hash","evaluated","z","Z","setUser","setReleaseContext","10","8","9","RavenConstructor","_Raven","noConflict","Client","what","supportsErrorEvent","ErrorEvent","supportsDOMError","DOMError","supportsDOMException","DOMException","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","wrappedCallback","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","sanitizeMask","safeInput","o_O","getLocationHref","getLocationOrigin","origin","hostname","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","responseText","sourceMaps","sourceMapAddress","charAt","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","string","raw"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file +{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","emberPlugin","Ember","_oldOnError","onerror","error","captureException","RSVP","on","reason","extra","context","captureMessage","addPlugin","6","2","requirePlugin","wrap","deep","3","RavenConfigError","message","name","prototype","constructor","4","utils","wrapMethod","console","level","callback","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","msg","safeJoin","data","logger","Function","apply","7","5","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","sanitizeKeys","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isErrorEvent","isDOMError","isDOMException","isError","isObject","isPlainObject","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","sanitize","wrapConsoleMethod","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","config","dsn","options","_logDebug","globalOptions","key","value","setDSN","push","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","toString","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","substr","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","func","undefined","_before","wrapped","_ignoreNextOnError","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","T","event","unhandledPromiseRejection","B","_promiseRejectionHandler","bind","addEventListener","P","removeEventListener","ex","trimHeadFrames","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","U","currentOptions","exKeys","Object","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","setDataCallback","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","L","setTimeout","$","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","_","evtName","_keypressTimeout","target","category","ba","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","ca","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","C","_originalFunctionToString","Q","D","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","type","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","E","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","R","builtin","S","F","installer","concat","G","str","m","exec","allowSecretKey","J","port","A","V","stackInfo","_triggerEvent","_processException","lineno","X","frame","_normalizeFrame","in_app","ga","stackInfoUrl","normalized","filename","line","colno","column","function","fa","prefixedMessage","exception","values","transaction","ha","request","Referer","breadcrumbs","_trimBreadcrumbs","ia","urlProp","urlProps","ja","httpData","userAgent","User-Agent","referrer","y","_backoffDuration","_backoffStart","ma","na","current","last","oa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Y","baseData","project","platform","_getHttpData","serverName","server_name","_sanitizeData","forEach","random","_sendProcessedPayload","pa","ra","qa","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","sa","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","open","setRequestHeader","send","ta","hash","evaluated","z","Z","setUser","setReleaseContext","10","8","9","RavenConstructor","_Raven","noConflict","Client","what","supportsErrorEvent","ErrorEvent","supportsDOMError","DOMError","supportsDOMException","DOMException","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","wrappedCallback","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","sanitizeMask","safeInput","o_O","getLocationHref","getLocationOrigin","origin","hostname","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","responseText","sourceMaps","sourceMapAddress","charAt","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","string","raw"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file diff --git a/dist/ember,vue/raven.js b/dist/ember,vue/raven.js index e36450c0aac1..b7a51c429301 100644 --- a/dist/ember,vue/raven.js +++ b/dist/ember,vue/raven.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.25.1 (b6f3c7a) | github.com/getsentry/raven-js */ +/*! Raven.js 3.25.2 (30b6d4e) | github.com/getsentry/raven-js */ /* * Includes TraceKit @@ -200,7 +200,11 @@ function now() { var _window = typeof window !== 'undefined' ? window - : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; + : typeof global !== 'undefined' + ? global + : typeof self !== 'undefined' + ? self + : {}; var _document = _window.document; var _navigator = _window.navigator; @@ -290,7 +294,7 @@ Raven.prototype = { // webpack (using a build step causes webpack #1617). Grunt verifies that // this value matches package.json during build. // See: https://github.com/getsentry/raven-js/issues/465 - VERSION: '3.25.1', + VERSION: '3.25.2', debug: false, @@ -1846,7 +1850,7 @@ Raven.prototype = { } ] }, - culprit: fileurl + transaction: fileurl }, options ); @@ -1961,7 +1965,7 @@ Raven.prototype = { if ( !last || current.message !== last.message || // defined for captureMessage - current.culprit !== last.culprit // defined for captureException/onerror + current.transaction !== last.transaction // defined for captureException/onerror ) return false; diff --git a/dist/ember,vue/raven.min.js b/dist/ember,vue/raven.min.js index b7a9ac85ac00..2904c5baea5a 100644 --- a/dist/ember,vue/raven.min.js +++ b/dist/ember,vue/raven.min.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.25.1 (b6f3c7a) | github.com/getsentry/raven-js */ -!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.Raven=a()}}(function(){return function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};b[g][0].call(k.exports,function(a){var c=b[g][1][a];return e(c?c:a)},k,k.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;g":"anonymous component")+(a._isVue&&a.$options.__file?" at "+a.$options.__file:"")}function e(a,b){if(b=b||window.Vue,b&&b.config){var c=b.config.errorHandler;b.config.errorHandler=function(b,e,f){var g={};"[object Object]"===Object.prototype.toString.call(e)&&(g.componentName=d(e),g.propsData=e.$options.propsData),"undefined"!=typeof f&&(g.lifecycleHook=f),a.captureException(b,{extra:g}),"function"==typeof c&&c.call(this,b,e,f)}}}b.exports=e,a(6).addPlugin(b.exports)},{6:6}],3:[function(a,b,c){function d(a){this.name="RavenConfigError",this.message=a}d.prototype=new Error,d.prototype.constructor=d,b.exports=d},{}],4:[function(a,b,c){var d=a(7),e=function(a,b,c){var e=a[b],f=a;if(b in a){var g="warn"===b?"warning":b;a[b]=function(){var a=[].slice.call(arguments),h=d.safeJoin(a," "),i={level:g,logger:"console",extra:{arguments:a}};"assert"===b?a[0]===!1&&(h="Assertion failed: "+(d.safeJoin(a.slice(1)," ")||"console.assert"),i.extra.arguments=a.slice(1),c&&c(h,i)):c&&c(h,i),e&&Function.prototype.apply.call(e,f,a)}}};b.exports={wrapMethod:e}},{7:7}],5:[function(a,b,c){(function(c){function d(){return+new Date}function e(a,b){return s(b)?function(c){return b(c,a)}:b}function f(){this.a=!("object"!=typeof JSON||!JSON.stringify),this.b=!r(S),this.c=!r(T),this.d=null,this.e=null,this.f=null,this.g=null,this.h=null,this.i=null,this.j={},this.k={release:R.SENTRY_RELEASE&&R.SENTRY_RELEASE.id,logger:"javascript",ignoreErrors:[],ignoreUrls:[],whitelistUrls:[],includePaths:[],headers:null,collectWindowErrors:!0,captureUnhandledRejections:!0,maxMessageLength:0,maxUrlLength:250,stackTraceLimit:50,autoBreadcrumbs:!0,instrument:!0,sampleRate:1,sanitizeKeys:[]},this.l={method:"POST",keepalive:!0,referrerPolicy:K()?"origin":""},this.m=0,this.n=!1,this.o=Error.stackTraceLimit,this.p=R.console||{},this.q={},this.r=[],this.s=d(),this.t=[],this.u=[],this.v=null,this.w=R.location,this.x=this.w&&this.w.href,this.y();for(var a in this.p)this.q[a]=this.p[a]}var g=a(8),h=a(9),i=a(10),j=a(3),k=a(7),l=k.isErrorEvent,m=k.isDOMError,n=k.isDOMException,o=k.isError,p=k.isObject,q=k.isPlainObject,r=k.isUndefined,s=k.isFunction,t=k.isString,u=k.isArray,v=k.isEmptyObject,w=k.each,x=k.objectMerge,y=k.truncate,z=k.objectFrozen,A=k.hasKey,B=k.joinRegExp,C=k.urlencode,D=k.uuid4,E=k.htmlTreeAsString,F=k.isSameException,G=k.isSameStacktrace,H=k.parseUrl,I=k.fill,J=k.supportsFetch,K=k.supportsReferrerPolicy,L=k.serializeKeysForMessage,M=k.serializeException,N=k.sanitize,O=a(4).wrapMethod,P="source protocol user pass host port path".split(" "),Q=/^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/,R="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},S=R.document,T=R.navigator;f.prototype={VERSION:"3.25.1",debug:!1,TraceKit:g,config:function(a,b){var c=this;if(c.g)return this.z("error","Error: Raven has already been configured"),c;if(!a)return c;var d=c.k;b&&w(b,function(a,b){"tags"===a||"extra"===a||"user"===a?c.j[a]=b:d[a]=b}),c.setDSN(a),d.ignoreErrors.push(/^Script error\.?$/),d.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/),d.ignoreErrors=B(d.ignoreErrors),d.ignoreUrls=!!d.ignoreUrls.length&&B(d.ignoreUrls),d.whitelistUrls=!!d.whitelistUrls.length&&B(d.whitelistUrls),d.includePaths=B(d.includePaths),d.maxBreadcrumbs=Math.max(0,Math.min(d.maxBreadcrumbs||100,100));var e={xhr:!0,console:!0,dom:!0,location:!0,sentry:!0},f=d.autoBreadcrumbs;"[object Object]"==={}.toString.call(f)?f=x(e,f):f!==!1&&(f=e),d.autoBreadcrumbs=f;var h={tryCatch:!0},i=d.instrument;return"[object Object]"==={}.toString.call(i)?i=x(h,i):i!==!1&&(i=h),d.instrument=i,g.collectWindowErrors=!!d.collectWindowErrors,c},install:function(){var a=this;return a.isSetup()&&!a.n&&(g.report.subscribe(function(){a.A.apply(a,arguments)}),a.k.captureUnhandledRejections&&a.B(),a.C(),a.k.instrument&&a.k.instrument.tryCatch&&a.D(),a.k.autoBreadcrumbs&&a.E(),a.F(),a.n=!0),Error.stackTraceLimit=a.k.stackTraceLimit,this},setDSN:function(a){var b=this,c=b.G(a),d=c.path.lastIndexOf("/"),e=c.path.substr(1,d);b.H=a,b.h=c.user,b.I=c.pass&&c.pass.substr(1),b.i=c.path.substr(d+1),b.g=b.J(c),b.K=b.g+"/"+e+"api/"+b.i+"/store/",this.y()},context:function(a,b,c){return s(a)&&(c=b||[],b=a,a=void 0),this.wrap(a,b).apply(this,c)},wrap:function(a,b,c){function d(){var d=[],f=arguments.length,g=!a||a&&a.deep!==!1;for(c&&s(c)&&c.apply(this,arguments);f--;)d[f]=g?e.wrap(a,arguments[f]):arguments[f];try{return b.apply(this,d)}catch(h){throw e.L(),e.captureException(h,a),h}}var e=this;if(r(b)&&!s(a))return a;if(s(a)&&(b=a,a=void 0),!s(b))return b;try{if(b.M)return b;if(b.N)return b.N}catch(f){return b}for(var g in b)A(b,g)&&(d[g]=b[g]);return d.prototype=b.prototype,b.N=d,d.M=!0,d.O=b,d},uninstall:function(){return g.report.uninstall(),this.P(),this.Q(),this.R(),this.S(),Error.stackTraceLimit=this.o,this.n=!1,this},T:function(a){this.z("debug","Raven caught unhandled promise rejection:",a),this.captureException(a.reason,{extra:{unhandledPromiseRejection:!0}})},B:function(){return this.T=this.T.bind(this),R.addEventListener&&R.addEventListener("unhandledrejection",this.T),this},P:function(){return R.removeEventListener&&R.removeEventListener("unhandledrejection",this.T),this},captureException:function(a,b){if(b=x({trimHeadFrames:0},b?b:{}),l(a)&&a.error)a=a.error;else{if(m(a)||n(a)){var c=a.name||(m(a)?"DOMError":"DOMException"),d=a.message?c+": "+a.message:c;return this.captureMessage(d,x(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}))}if(o(a))a=a;else{if(!q(a))return this.captureMessage(a,x(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}));b=this.U(b,a),a=new Error(b.message)}}this.d=a;try{var e=g.computeStackTrace(a);this.V(e,b)}catch(f){if(a!==f)throw f}return this},U:function(a,b){var c=Object.keys(b).sort(),d=x(a,{message:"Non-Error exception captured with keys: "+L(c),fingerprint:[i(c)],extra:a.extra||{}});return d.extra.W=M(b),d},captureMessage:function(a,b){if(!this.k.ignoreErrors.test||!this.k.ignoreErrors.test(a)){b=b||{},a+="";var c,d=x({message:a},b);try{throw new Error(a)}catch(e){c=e}c.name=null;var f=g.computeStackTrace(c),h=u(f.stack)&&f.stack[1];h&&"Raven.captureException"===h.func&&(h=f.stack[2]);var i=h&&h.url||"";if((!this.k.ignoreUrls.test||!this.k.ignoreUrls.test(i))&&(!this.k.whitelistUrls.test||this.k.whitelistUrls.test(i))){if(this.k.stacktrace||b&&b.stacktrace){d.fingerprint=null==d.fingerprint?a:d.fingerprint,b=x({trimHeadFrames:0},b),b.trimHeadFrames+=1;var j=this.X(f,b);d.stacktrace={frames:j.reverse()}}return d.fingerprint&&(d.fingerprint=u(d.fingerprint)?d.fingerprint:[d.fingerprint]),this.Y(d),this}}},captureBreadcrumb:function(a){var b=x({timestamp:d()/1e3},a);if(s(this.k.breadcrumbCallback)){var c=this.k.breadcrumbCallback(b);if(p(c)&&!v(c))b=c;else if(c===!1)return this}return this.u.push(b),this.u.length>this.k.maxBreadcrumbs&&this.u.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.r.push([a,b]),this.n&&this.F(),this},setUserContext:function(a){return this.j.user=a,this},setExtraContext:function(a){return this.Z("extra",a),this},setTagsContext:function(a){return this.Z("tags",a),this},clearContext:function(){return this.j={},this},getContext:function(){return JSON.parse(h(this.j))},setEnvironment:function(a){return this.k.environment=a,this},setRelease:function(a){return this.k.release=a,this},setDataCallback:function(a){var b=this.k.dataCallback;return this.k.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.k.breadcrumbCallback;return this.k.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.k.shouldSendCallback;return this.k.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.k.transport=a,this},lastException:function(){return this.d},lastEventId:function(){return this.f},isSetup:function(){return!!this.a&&(!!this.g||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.z("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=R.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(S){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.H;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.j.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.J(this.G(c)),h=S.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(S.head||S.body).appendChild(h)}},L:function(){var a=this;this.m+=1,setTimeout(function(){a.m-=1})},$:function(a,b){var c,d;if(this.b){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),S.createEvent?(c=S.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=S.createEventObject(),c.eventType=a);for(d in b)A(b,d)&&(c[d]=b[d]);if(S.createEvent)S.dispatchEvent(c);else try{S.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},_:function(a){var b=this;return function(c){if(b.aa=null,b.v!==c){b.v=c;var d;try{d=E(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ba:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.aa;g||a._("input")(c),clearTimeout(g),a.aa=setTimeout(function(){a.aa=null},b)}}},ca:function(a,b){var c=H(this.w.href),d=H(b),e=H(a);this.x=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},C:function(){var a=this;a.da=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.M?a.da.apply(this.O,arguments):a.da.apply(this,arguments)}},Q:function(){this.da&&(Function.prototype.toString=this.da)},D:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.ca(b.x,c+""),a.apply(this,arguments)}};I(R.history,"pushState",j,d),I(R.history,"replaceState",j,d)}if(c.console&&"console"in R&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};w(["debug","info","warn","error","log"],function(a,b){O(console,b,k)})}},R:function(){for(var a;this.t.length;){a=this.t.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},S:function(){for(var a in this.q)this.p[a]=this.q[a]},F:function(){var a=this;w(this.r,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},G:function(a){var b=Q.exec(a),c={},d=7;try{for(;d--;)c[P[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.k.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},J:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},A:function(){this.m||this.V.apply(this,arguments)},V:function(a,b){var c=this.X(a,b);this.$("handle",{stackInfo:a,options:b}),this.fa(a.name,a.message,a.url,a.lineno,c,b)},X:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(w(a.stack,function(b,e){var f=c.ga(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.u,0)}),this.j.user&&(a.user=this.j.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),a=this.pa(a),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||v(a[b]))&&delete a[b]}),s(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!v(a)&&(!s(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.ma()?void this.z("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function F(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&l(b))for(c=b.split(/\s+/),f=0;fc?Q(a,b-1):d}function R(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?X:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function S(a,b){function c(a){return m(a)?a.map(function(a){return c(a)}):k(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!m(b)||m(b)&&0===b.length)return a;var d,e=A(b),f="********";try{d=JSON.parse(T(a))}catch(g){return a}return c(d)}var T=a(9),U="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},V=3,W=51200,X=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isDOMError:g,isDOMException:h,isUndefined:i,isFunction:j,isPlainObject:k,isString:l,isArray:m,isEmptyObject:n,supportsErrorEvent:o,supportsDOMError:p,supportsDOMException:q,supportsFetch:r,supportsReferrerPolicy:s,supportsPromiseRejectionEvent:t,wrappedCallback:u,each:v,objectMerge:w,truncate:y,objectFrozen:x,hasKey:z,joinRegExp:A,urlencode:B,uuid4:D,htmlTreeAsString:E,htmlElementAsString:F,isSameException:I,isSameStacktrace:J,parseUrl:C,fill:K,safeJoin:L,serializeException:Q,serializeKeysForMessage:R,sanitize:S}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{9:9}],8:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}function e(){return"undefined"==typeof document||null==document.location?"":(document.location.origin||(document.location.origin=document.location.protocol+"//"+document.location.hostname+(document.location.port?":"+document.location.port:"")),document.location.origin)}var f=a(7),g={collectWindowErrors:!0,debug:!1},h="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},i=[].slice,j="?",k=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;g.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function e(a,b){var c=null;if(!b||g.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(i.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,h,i){var l=null,m=f.isErrorEvent(i)?i.error:i,n=f.isErrorEvent(a)?a.message:a;if(v)g.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&f.isError(m))l=g.computeStackTrace(m),e(l,!0);else{var p,r={url:b,line:c,column:h},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(k);p&&(s=p[1],n=p[2])}r.func=j,l={name:s,message:n,url:d(),stack:[r]},e(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=h.onerror,h.onerror=l,r=!0)}function n(){r&&(h.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,e.apply(null,[a,!1].concat(b))}function p(a,b){var c=i.call(arguments,1);if(v){if(u===a)return;o()}var d=g.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),g.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,f,g=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,h=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,i=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,k=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,l=/\((\S*)(?::(\d+))(?::(\d+))\)/,m=a.stack.split("\n"),n=[],o=(/^(.*) is undefined$/.exec(a.message),0),p=m.length;o eval")>-1;r&&(b=k.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==o||c[5]||"undefined"==typeof a.columnNumber||(n[0].column=a.columnNumber+1),f={url:c[3],func:c[1]||j,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}if(!f.func&&f.line&&(f.func=j),f.url&&"blob:"===f.url.substr(0,5)){var s=new XMLHttpRequest;if(s.open("GET",f.url,!1),s.send(null),200===s.status){var t=s.responseText||"";t=t.slice(-300);var u=t.match(/\/\/# sourceMappingURL=(.*)$/);if(u){var v=u[1];"~"===v.charAt(0)&&(v=e()+v.slice(1)),f.url=v.slice(0,-4)}}}n.push(f)}return n.length?{name:a.name,message:a.message,url:d(),stack:n}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=j),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1; +/*! Raven.js 3.25.2 (30b6d4e) | github.com/getsentry/raven-js */ +!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.Raven=a()}}(function(){return function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};b[g][0].call(k.exports,function(a){var c=b[g][1][a];return e(c?c:a)},k,k.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;g":"anonymous component")+(a._isVue&&a.$options.__file?" at "+a.$options.__file:"")}function e(a,b){if(b=b||window.Vue,b&&b.config){var c=b.config.errorHandler;b.config.errorHandler=function(b,e,f){var g={};"[object Object]"===Object.prototype.toString.call(e)&&(g.componentName=d(e),g.propsData=e.$options.propsData),"undefined"!=typeof f&&(g.lifecycleHook=f),a.captureException(b,{extra:g}),"function"==typeof c&&c.call(this,b,e,f)}}}b.exports=e,a(6).addPlugin(b.exports)},{6:6}],3:[function(a,b,c){function d(a){this.name="RavenConfigError",this.message=a}d.prototype=new Error,d.prototype.constructor=d,b.exports=d},{}],4:[function(a,b,c){var d=a(7),e=function(a,b,c){var e=a[b],f=a;if(b in a){var g="warn"===b?"warning":b;a[b]=function(){var a=[].slice.call(arguments),h=d.safeJoin(a," "),i={level:g,logger:"console",extra:{arguments:a}};"assert"===b?a[0]===!1&&(h="Assertion failed: "+(d.safeJoin(a.slice(1)," ")||"console.assert"),i.extra.arguments=a.slice(1),c&&c(h,i)):c&&c(h,i),e&&Function.prototype.apply.call(e,f,a)}}};b.exports={wrapMethod:e}},{7:7}],5:[function(a,b,c){(function(c){function d(){return+new Date}function e(a,b){return s(b)?function(c){return b(c,a)}:b}function f(){this.a=!("object"!=typeof JSON||!JSON.stringify),this.b=!r(S),this.c=!r(T),this.d=null,this.e=null,this.f=null,this.g=null,this.h=null,this.i=null,this.j={},this.k={release:R.SENTRY_RELEASE&&R.SENTRY_RELEASE.id,logger:"javascript",ignoreErrors:[],ignoreUrls:[],whitelistUrls:[],includePaths:[],headers:null,collectWindowErrors:!0,captureUnhandledRejections:!0,maxMessageLength:0,maxUrlLength:250,stackTraceLimit:50,autoBreadcrumbs:!0,instrument:!0,sampleRate:1,sanitizeKeys:[]},this.l={method:"POST",keepalive:!0,referrerPolicy:K()?"origin":""},this.m=0,this.n=!1,this.o=Error.stackTraceLimit,this.p=R.console||{},this.q={},this.r=[],this.s=d(),this.t=[],this.u=[],this.v=null,this.w=R.location,this.x=this.w&&this.w.href,this.y();for(var a in this.p)this.q[a]=this.p[a]}var g=a(8),h=a(9),i=a(10),j=a(3),k=a(7),l=k.isErrorEvent,m=k.isDOMError,n=k.isDOMException,o=k.isError,p=k.isObject,q=k.isPlainObject,r=k.isUndefined,s=k.isFunction,t=k.isString,u=k.isArray,v=k.isEmptyObject,w=k.each,x=k.objectMerge,y=k.truncate,z=k.objectFrozen,A=k.hasKey,B=k.joinRegExp,C=k.urlencode,D=k.uuid4,E=k.htmlTreeAsString,F=k.isSameException,G=k.isSameStacktrace,H=k.parseUrl,I=k.fill,J=k.supportsFetch,K=k.supportsReferrerPolicy,L=k.serializeKeysForMessage,M=k.serializeException,N=k.sanitize,O=a(4).wrapMethod,P="source protocol user pass host port path".split(" "),Q=/^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/,R="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},S=R.document,T=R.navigator;f.prototype={VERSION:"3.25.2",debug:!1,TraceKit:g,config:function(a,b){var c=this;if(c.g)return this.z("error","Error: Raven has already been configured"),c;if(!a)return c;var d=c.k;b&&w(b,function(a,b){"tags"===a||"extra"===a||"user"===a?c.j[a]=b:d[a]=b}),c.setDSN(a),d.ignoreErrors.push(/^Script error\.?$/),d.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/),d.ignoreErrors=B(d.ignoreErrors),d.ignoreUrls=!!d.ignoreUrls.length&&B(d.ignoreUrls),d.whitelistUrls=!!d.whitelistUrls.length&&B(d.whitelistUrls),d.includePaths=B(d.includePaths),d.maxBreadcrumbs=Math.max(0,Math.min(d.maxBreadcrumbs||100,100));var e={xhr:!0,console:!0,dom:!0,location:!0,sentry:!0},f=d.autoBreadcrumbs;"[object Object]"==={}.toString.call(f)?f=x(e,f):f!==!1&&(f=e),d.autoBreadcrumbs=f;var h={tryCatch:!0},i=d.instrument;return"[object Object]"==={}.toString.call(i)?i=x(h,i):i!==!1&&(i=h),d.instrument=i,g.collectWindowErrors=!!d.collectWindowErrors,c},install:function(){var a=this;return a.isSetup()&&!a.n&&(g.report.subscribe(function(){a.A.apply(a,arguments)}),a.k.captureUnhandledRejections&&a.B(),a.C(),a.k.instrument&&a.k.instrument.tryCatch&&a.D(),a.k.autoBreadcrumbs&&a.E(),a.F(),a.n=!0),Error.stackTraceLimit=a.k.stackTraceLimit,this},setDSN:function(a){var b=this,c=b.G(a),d=c.path.lastIndexOf("/"),e=c.path.substr(1,d);b.H=a,b.h=c.user,b.I=c.pass&&c.pass.substr(1),b.i=c.path.substr(d+1),b.g=b.J(c),b.K=b.g+"/"+e+"api/"+b.i+"/store/",this.y()},context:function(a,b,c){return s(a)&&(c=b||[],b=a,a=void 0),this.wrap(a,b).apply(this,c)},wrap:function(a,b,c){function d(){var d=[],f=arguments.length,g=!a||a&&a.deep!==!1;for(c&&s(c)&&c.apply(this,arguments);f--;)d[f]=g?e.wrap(a,arguments[f]):arguments[f];try{return b.apply(this,d)}catch(h){throw e.L(),e.captureException(h,a),h}}var e=this;if(r(b)&&!s(a))return a;if(s(a)&&(b=a,a=void 0),!s(b))return b;try{if(b.M)return b;if(b.N)return b.N}catch(f){return b}for(var g in b)A(b,g)&&(d[g]=b[g]);return d.prototype=b.prototype,b.N=d,d.M=!0,d.O=b,d},uninstall:function(){return g.report.uninstall(),this.P(),this.Q(),this.R(),this.S(),Error.stackTraceLimit=this.o,this.n=!1,this},T:function(a){this.z("debug","Raven caught unhandled promise rejection:",a),this.captureException(a.reason,{extra:{unhandledPromiseRejection:!0}})},B:function(){return this.T=this.T.bind(this),R.addEventListener&&R.addEventListener("unhandledrejection",this.T),this},P:function(){return R.removeEventListener&&R.removeEventListener("unhandledrejection",this.T),this},captureException:function(a,b){if(b=x({trimHeadFrames:0},b?b:{}),l(a)&&a.error)a=a.error;else{if(m(a)||n(a)){var c=a.name||(m(a)?"DOMError":"DOMException"),d=a.message?c+": "+a.message:c;return this.captureMessage(d,x(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}))}if(o(a))a=a;else{if(!q(a))return this.captureMessage(a,x(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}));b=this.U(b,a),a=new Error(b.message)}}this.d=a;try{var e=g.computeStackTrace(a);this.V(e,b)}catch(f){if(a!==f)throw f}return this},U:function(a,b){var c=Object.keys(b).sort(),d=x(a,{message:"Non-Error exception captured with keys: "+L(c),fingerprint:[i(c)],extra:a.extra||{}});return d.extra.W=M(b),d},captureMessage:function(a,b){if(!this.k.ignoreErrors.test||!this.k.ignoreErrors.test(a)){b=b||{},a+="";var c,d=x({message:a},b);try{throw new Error(a)}catch(e){c=e}c.name=null;var f=g.computeStackTrace(c),h=u(f.stack)&&f.stack[1];h&&"Raven.captureException"===h.func&&(h=f.stack[2]);var i=h&&h.url||"";if((!this.k.ignoreUrls.test||!this.k.ignoreUrls.test(i))&&(!this.k.whitelistUrls.test||this.k.whitelistUrls.test(i))){if(this.k.stacktrace||b&&b.stacktrace){d.fingerprint=null==d.fingerprint?a:d.fingerprint,b=x({trimHeadFrames:0},b),b.trimHeadFrames+=1;var j=this.X(f,b);d.stacktrace={frames:j.reverse()}}return d.fingerprint&&(d.fingerprint=u(d.fingerprint)?d.fingerprint:[d.fingerprint]),this.Y(d),this}}},captureBreadcrumb:function(a){var b=x({timestamp:d()/1e3},a);if(s(this.k.breadcrumbCallback)){var c=this.k.breadcrumbCallback(b);if(p(c)&&!v(c))b=c;else if(c===!1)return this}return this.u.push(b),this.u.length>this.k.maxBreadcrumbs&&this.u.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.r.push([a,b]),this.n&&this.F(),this},setUserContext:function(a){return this.j.user=a,this},setExtraContext:function(a){return this.Z("extra",a),this},setTagsContext:function(a){return this.Z("tags",a),this},clearContext:function(){return this.j={},this},getContext:function(){return JSON.parse(h(this.j))},setEnvironment:function(a){return this.k.environment=a,this},setRelease:function(a){return this.k.release=a,this},setDataCallback:function(a){var b=this.k.dataCallback;return this.k.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.k.breadcrumbCallback;return this.k.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.k.shouldSendCallback;return this.k.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.k.transport=a,this},lastException:function(){return this.d},lastEventId:function(){return this.f},isSetup:function(){return!!this.a&&(!!this.g||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.z("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=R.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(S){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.H;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.j.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.J(this.G(c)),h=S.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(S.head||S.body).appendChild(h)}},L:function(){var a=this;this.m+=1,setTimeout(function(){a.m-=1})},$:function(a,b){var c,d;if(this.b){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),S.createEvent?(c=S.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=S.createEventObject(),c.eventType=a);for(d in b)A(b,d)&&(c[d]=b[d]);if(S.createEvent)S.dispatchEvent(c);else try{S.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},_:function(a){var b=this;return function(c){if(b.aa=null,b.v!==c){b.v=c;var d;try{d=E(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ba:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.aa;g||a._("input")(c),clearTimeout(g),a.aa=setTimeout(function(){a.aa=null},b)}}},ca:function(a,b){var c=H(this.w.href),d=H(b),e=H(a);this.x=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},C:function(){var a=this;a.da=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.M?a.da.apply(this.O,arguments):a.da.apply(this,arguments)}},Q:function(){this.da&&(Function.prototype.toString=this.da)},D:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.ca(b.x,c+""),a.apply(this,arguments)}};I(R.history,"pushState",j,d),I(R.history,"replaceState",j,d)}if(c.console&&"console"in R&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};w(["debug","info","warn","error","log"],function(a,b){O(console,b,k)})}},R:function(){for(var a;this.t.length;){a=this.t.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},S:function(){for(var a in this.q)this.p[a]=this.q[a]},F:function(){var a=this;w(this.r,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},G:function(a){var b=Q.exec(a),c={},d=7;try{for(;d--;)c[P[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.k.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},J:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},A:function(){this.m||this.V.apply(this,arguments)},V:function(a,b){var c=this.X(a,b);this.$("handle",{stackInfo:a,options:b}),this.fa(a.name,a.message,a.url,a.lineno,c,b)},X:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(w(a.stack,function(b,e){var f=c.ga(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.u,0)}),this.j.user&&(a.user=this.j.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),a=this.pa(a),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||v(a[b]))&&delete a[b]}),s(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!v(a)&&(!s(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.ma()?void this.z("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function F(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&l(b))for(c=b.split(/\s+/),f=0;fc?Q(a,b-1):d}function R(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?X:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function S(a,b){function c(a){return m(a)?a.map(function(a){return c(a)}):k(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!m(b)||m(b)&&0===b.length)return a;var d,e=A(b),f="********";try{d=JSON.parse(T(a))}catch(g){return a}return c(d)}var T=a(9),U="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},V=3,W=51200,X=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isDOMError:g,isDOMException:h,isUndefined:i,isFunction:j,isPlainObject:k,isString:l,isArray:m,isEmptyObject:n,supportsErrorEvent:o,supportsDOMError:p,supportsDOMException:q,supportsFetch:r,supportsReferrerPolicy:s,supportsPromiseRejectionEvent:t,wrappedCallback:u,each:v,objectMerge:w,truncate:y,objectFrozen:x,hasKey:z,joinRegExp:A,urlencode:B,uuid4:D,htmlTreeAsString:E,htmlElementAsString:F,isSameException:I,isSameStacktrace:J,parseUrl:C,fill:K,safeJoin:L,serializeException:Q,serializeKeysForMessage:R,sanitize:S}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{9:9}],8:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}function e(){return"undefined"==typeof document||null==document.location?"":(document.location.origin||(document.location.origin=document.location.protocol+"//"+document.location.hostname+(document.location.port?":"+document.location.port:"")),document.location.origin)}var f=a(7),g={collectWindowErrors:!0,debug:!1},h="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},i=[].slice,j="?",k=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;g.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function e(a,b){var c=null;if(!b||g.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(i.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,h,i){var l=null,m=f.isErrorEvent(i)?i.error:i,n=f.isErrorEvent(a)?a.message:a;if(v)g.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&f.isError(m))l=g.computeStackTrace(m),e(l,!0);else{var p,r={url:b,line:c,column:h},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(k);p&&(s=p[1],n=p[2])}r.func=j,l={name:s,message:n,url:d(),stack:[r]},e(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=h.onerror,h.onerror=l,r=!0)}function n(){r&&(h.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,e.apply(null,[a,!1].concat(b))}function p(a,b){var c=i.call(arguments,1);if(v){if(u===a)return;o()}var d=g.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),g.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,f,g=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,h=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,i=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,k=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,l=/\((\S*)(?::(\d+))(?::(\d+))\)/,m=a.stack.split("\n"),n=[],o=(/^(.*) is undefined$/.exec(a.message),0),p=m.length;o eval")>-1;r&&(b=k.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==o||c[5]||"undefined"==typeof a.columnNumber||(n[0].column=a.columnNumber+1),f={url:c[3],func:c[1]||j,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}if(!f.func&&f.line&&(f.func=j),f.url&&"blob:"===f.url.substr(0,5)){var s=new XMLHttpRequest;if(s.open("GET",f.url,!1),s.send(null),200===s.status){var t=s.responseText||"";t=t.slice(-300);var u=t.match(/\/\/# sourceMappingURL=(.*)$/);if(u){var v=u[1];"~"===v.charAt(0)&&(v=e()+v.slice(1)),f.url=v.slice(0,-4)}}}n.push(f)}return n.length?{name:a.name,message:a.message,url:d(),stack:n}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=j),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1; if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,e){for(var h,i,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==f&&o!==g.report){if(i={url:null,func:j,line:null,column:null},o.name?i.func=o.name:(h=k.exec(o.toString()))&&(i.func=h[1]),"undefined"==typeof i.func)try{i.func=h.input.substring(0,h.input.indexOf("{"))}catch(p){}m[""+o]?n=!0:m[""+o]=!0,l.push(i)}e&&l.splice(0,e);var q={name:a.name,message:a.message,url:d(),stack:l};return b(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),q}function f(b,e){var f=null;e=null==e?0:+e;try{if(f=a(b))return f}catch(h){if(g.debug)throw h}try{if(f=c(b,e+1))return f}catch(h){if(g.debug)throw h}return{name:b.name,message:b.message,url:d()}}return f.augmentStackTraceWithInitialElement=b,f.computeStackTraceFromStackProp=a,f}(),b.exports=g}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{7:7}],9:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}],10:[function(a,b,c){function d(a,b){var c=(65535&a)+(65535&b),d=(a>>16)+(b>>16)+(c>>16);return d<<16|65535&c}function e(a,b){return a<>>32-b}function f(a,b,c,f,g,h){return d(e(d(d(b,a),d(f,h)),g),c)}function g(a,b,c,d,e,g,h){return f(b&c|~b&d,a,b,e,g,h)}function h(a,b,c,d,e,g,h){return f(b&d|c&~d,a,b,e,g,h)}function i(a,b,c,d,e,g,h){return f(b^c^d,a,b,e,g,h)}function j(a,b,c,d,e,g,h){return f(c^(b|~d),a,b,e,g,h)}function k(a,b){a[b>>5]|=128<>>9<<4)+14]=b;var c,e,f,k,l,m=1732584193,n=-271733879,o=-1732584194,p=271733878;for(c=0;c>5]>>>b%32&255);return c}function m(a){var b,c=[];for(c[(a.length>>2)-1]=void 0,b=0;b>5]|=(255&a.charCodeAt(b/8))<16&&(e=k(e,8*a.length)),c=0;c<16;c+=1)f[c]=909522486^e[c],g[c]=1549556828^e[c];return d=k(f.concat(m(b)),512+8*b.length),l(k(g.concat(d),640))}function p(a){var b,c,d="0123456789abcdef",e="";for(c=0;c>>4&15)+d.charAt(15&b);return e}function q(a){return unescape(encodeURIComponent(a))}function r(a){return n(q(a))}function s(a){return p(r(a))}function t(a,b){return o(q(a),q(b))}function u(a,b){return p(t(a,b))}function v(a,b,c){return b?c?t(b,a):u(b,a):c?r(a):s(a)}b.exports=v},{}]},{},[6,1,2])(6)}); //# sourceMappingURL=raven.min.js.map \ No newline at end of file diff --git a/dist/ember,vue/raven.min.js.map b/dist/ember,vue/raven.min.js.map index 54895b564e5d..ec2021c54a16 100644 --- a/dist/ember,vue/raven.min.js.map +++ b/dist/ember,vue/raven.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","emberPlugin","Ember","_oldOnError","onerror","error","captureException","RSVP","on","reason","extra","context","captureMessage","addPlugin","6","2","formatComponentName","vm","$root","name","_isVue","$options","_componentTag","__file","vuePlugin","Vue","config","errorHandler","info","metaData","Object","prototype","toString","componentName","propsData","lifecycleHook","3","RavenConfigError","message","constructor","4","utils","wrapMethod","console","level","callback","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","msg","safeJoin","data","logger","Function","apply","7","5","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","sanitizeKeys","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isErrorEvent","isDOMError","isDOMException","isError","isObject","isPlainObject","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","sanitize","wrapConsoleMethod","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","dsn","options","_logDebug","globalOptions","key","value","setDSN","push","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","substr","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","func","undefined","wrap","_before","wrapped","deep","_ignoreNextOnError","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","T","event","unhandledPromiseRejection","B","_promiseRejectionHandler","bind","addEventListener","P","removeEventListener","ex","trimHeadFrames","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","U","currentOptions","exKeys","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","setDataCallback","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","L","setTimeout","$","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","_","evtName","_keypressTimeout","target","category","ba","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","ca","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","C","_originalFunctionToString","Q","D","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","type","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","E","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","R","builtin","S","F","installer","concat","G","str","m","exec","allowSecretKey","J","port","A","V","stackInfo","_triggerEvent","_processException","lineno","X","frame","_normalizeFrame","in_app","ga","stackInfoUrl","normalized","filename","line","colno","column","function","fa","prefixedMessage","exception","values","culprit","ha","request","Referer","breadcrumbs","_trimBreadcrumbs","ia","urlProp","urlProps","ja","httpData","userAgent","User-Agent","referrer","y","_backoffDuration","_backoffStart","ma","na","current","last","oa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Y","baseData","project","platform","_getHttpData","serverName","server_name","_sanitizeData","forEach","random","_sendProcessedPayload","pa","ra","qa","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","sa","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","open","setRequestHeader","send","ta","hash","evaluated","z","Z","setUser","setReleaseContext","10","8","9","RavenConstructor","_Raven","noConflict","Client","what","supportsErrorEvent","ErrorEvent","supportsDOMError","DOMError","supportsDOMException","DOMException","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","wrappedCallback","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","sanitizeMask","safeInput","o_O","getLocationHref","getLocationOrigin","origin","hostname","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","responseText","sourceMaps","sourceMapAddress","charAt","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","string","raw"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file +{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","emberPlugin","Ember","_oldOnError","onerror","error","captureException","RSVP","on","reason","extra","context","captureMessage","addPlugin","6","2","formatComponentName","vm","$root","name","_isVue","$options","_componentTag","__file","vuePlugin","Vue","config","errorHandler","info","metaData","Object","prototype","toString","componentName","propsData","lifecycleHook","3","RavenConfigError","message","constructor","4","utils","wrapMethod","console","level","callback","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","msg","safeJoin","data","logger","Function","apply","7","5","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","sanitizeKeys","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isErrorEvent","isDOMError","isDOMException","isError","isObject","isPlainObject","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","sanitize","wrapConsoleMethod","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","dsn","options","_logDebug","globalOptions","key","value","setDSN","push","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","substr","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","func","undefined","wrap","_before","wrapped","deep","_ignoreNextOnError","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","T","event","unhandledPromiseRejection","B","_promiseRejectionHandler","bind","addEventListener","P","removeEventListener","ex","trimHeadFrames","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","U","currentOptions","exKeys","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","setDataCallback","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","L","setTimeout","$","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","_","evtName","_keypressTimeout","target","category","ba","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","ca","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","C","_originalFunctionToString","Q","D","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","type","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","E","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","R","builtin","S","F","installer","concat","G","str","m","exec","allowSecretKey","J","port","A","V","stackInfo","_triggerEvent","_processException","lineno","X","frame","_normalizeFrame","in_app","ga","stackInfoUrl","normalized","filename","line","colno","column","function","fa","prefixedMessage","exception","values","transaction","ha","request","Referer","breadcrumbs","_trimBreadcrumbs","ia","urlProp","urlProps","ja","httpData","userAgent","User-Agent","referrer","y","_backoffDuration","_backoffStart","ma","na","current","last","oa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Y","baseData","project","platform","_getHttpData","serverName","server_name","_sanitizeData","forEach","random","_sendProcessedPayload","pa","ra","qa","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","sa","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","open","setRequestHeader","send","ta","hash","evaluated","z","Z","setUser","setReleaseContext","10","8","9","RavenConstructor","_Raven","noConflict","Client","what","supportsErrorEvent","ErrorEvent","supportsDOMError","DOMError","supportsDOMException","DOMException","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","wrappedCallback","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","sanitizeMask","safeInput","o_O","getLocationHref","getLocationOrigin","origin","hostname","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","responseText","sourceMaps","sourceMapAddress","charAt","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","string","raw"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file diff --git a/dist/ember/raven.js b/dist/ember/raven.js index 38d2fa6ae98e..3c58bac0ac0b 100644 --- a/dist/ember/raven.js +++ b/dist/ember/raven.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.25.1 (b6f3c7a) | github.com/getsentry/raven-js */ +/*! Raven.js 3.25.2 (30b6d4e) | github.com/getsentry/raven-js */ /* * Includes TraceKit @@ -150,7 +150,11 @@ function now() { var _window = typeof window !== 'undefined' ? window - : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; + : typeof global !== 'undefined' + ? global + : typeof self !== 'undefined' + ? self + : {}; var _document = _window.document; var _navigator = _window.navigator; @@ -240,7 +244,7 @@ Raven.prototype = { // webpack (using a build step causes webpack #1617). Grunt verifies that // this value matches package.json during build. // See: https://github.com/getsentry/raven-js/issues/465 - VERSION: '3.25.1', + VERSION: '3.25.2', debug: false, @@ -1796,7 +1800,7 @@ Raven.prototype = { } ] }, - culprit: fileurl + transaction: fileurl }, options ); @@ -1911,7 +1915,7 @@ Raven.prototype = { if ( !last || current.message !== last.message || // defined for captureMessage - current.culprit !== last.culprit // defined for captureException/onerror + current.transaction !== last.transaction // defined for captureException/onerror ) return false; diff --git a/dist/ember/raven.min.js b/dist/ember/raven.min.js index 19887e91db9c..f42b7f52cdcb 100644 --- a/dist/ember/raven.min.js +++ b/dist/ember/raven.min.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.25.1 (b6f3c7a) | github.com/getsentry/raven-js */ -!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.Raven=a()}}(function(){return function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};b[g][0].call(k.exports,function(a){var c=b[g][1][a];return e(c?c:a)},k,k.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;gthis.k.maxBreadcrumbs&&this.u.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.r.push([a,b]),this.n&&this.F(),this},setUserContext:function(a){return this.j.user=a,this},setExtraContext:function(a){return this.Z("extra",a),this},setTagsContext:function(a){return this.Z("tags",a),this},clearContext:function(){return this.j={},this},getContext:function(){return JSON.parse(h(this.j))},setEnvironment:function(a){return this.k.environment=a,this},setRelease:function(a){return this.k.release=a,this},setDataCallback:function(a){var b=this.k.dataCallback;return this.k.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.k.breadcrumbCallback;return this.k.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.k.shouldSendCallback;return this.k.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.k.transport=a,this},lastException:function(){return this.d},lastEventId:function(){return this.f},isSetup:function(){return!!this.a&&(!!this.g||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.z("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=R.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(S){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.H;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.j.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.J(this.G(c)),h=S.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(S.head||S.body).appendChild(h)}},L:function(){var a=this;this.m+=1,setTimeout(function(){a.m-=1})},$:function(a,b){var c,d;if(this.b){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),S.createEvent?(c=S.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=S.createEventObject(),c.eventType=a);for(d in b)A(b,d)&&(c[d]=b[d]);if(S.createEvent)S.dispatchEvent(c);else try{S.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},_:function(a){var b=this;return function(c){if(b.aa=null,b.v!==c){b.v=c;var d;try{d=E(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ba:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.aa;g||a._("input")(c),clearTimeout(g),a.aa=setTimeout(function(){a.aa=null},b)}}},ca:function(a,b){var c=H(this.w.href),d=H(b),e=H(a);this.x=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},C:function(){var a=this;a.da=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.M?a.da.apply(this.O,arguments):a.da.apply(this,arguments)}},Q:function(){this.da&&(Function.prototype.toString=this.da)},D:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.ca(b.x,c+""),a.apply(this,arguments)}};I(R.history,"pushState",j,d),I(R.history,"replaceState",j,d)}if(c.console&&"console"in R&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};w(["debug","info","warn","error","log"],function(a,b){O(console,b,k)})}},R:function(){for(var a;this.t.length;){a=this.t.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},S:function(){for(var a in this.q)this.p[a]=this.q[a]},F:function(){var a=this;w(this.r,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},G:function(a){var b=Q.exec(a),c={},d=7;try{for(;d--;)c[P[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.k.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},J:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},A:function(){this.m||this.V.apply(this,arguments)},V:function(a,b){var c=this.X(a,b);this.$("handle",{stackInfo:a,options:b}),this.fa(a.name,a.message,a.url,a.lineno,c,b)},X:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(w(a.stack,function(b,e){var f=c.ga(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.u,0)}),this.j.user&&(a.user=this.j.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),a=this.pa(a),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||v(a[b]))&&delete a[b]}),s(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!v(a)&&(!s(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.ma()?void this.z("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function F(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&l(b))for(c=b.split(/\s+/),f=0;fc?Q(a,b-1):d}function R(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?X:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function S(a,b){function c(a){return m(a)?a.map(function(a){return c(a)}):k(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!m(b)||m(b)&&0===b.length)return a;var d,e=A(b),f="********";try{d=JSON.parse(T(a))}catch(g){return a}return c(d)}var T=a(8),U="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},V=3,W=51200,X=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isDOMError:g,isDOMException:h,isUndefined:i,isFunction:j,isPlainObject:k,isString:l,isArray:m,isEmptyObject:n,supportsErrorEvent:o,supportsDOMError:p,supportsDOMException:q,supportsFetch:r,supportsReferrerPolicy:s,supportsPromiseRejectionEvent:t,wrappedCallback:u,each:v,objectMerge:w,truncate:y,objectFrozen:x,hasKey:z,joinRegExp:A,urlencode:B,uuid4:D,htmlTreeAsString:E,htmlElementAsString:F,isSameException:I,isSameStacktrace:J,parseUrl:C,fill:K,safeJoin:L,serializeException:Q,serializeKeysForMessage:R,sanitize:S}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{8:8}],7:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}function e(){return"undefined"==typeof document||null==document.location?"":(document.location.origin||(document.location.origin=document.location.protocol+"//"+document.location.hostname+(document.location.port?":"+document.location.port:"")),document.location.origin)}var f=a(6),g={collectWindowErrors:!0,debug:!1},h="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},i=[].slice,j="?",k=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;g.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function e(a,b){var c=null;if(!b||g.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(i.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,h,i){var l=null,m=f.isErrorEvent(i)?i.error:i,n=f.isErrorEvent(a)?a.message:a;if(v)g.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&f.isError(m))l=g.computeStackTrace(m),e(l,!0);else{var p,r={url:b,line:c,column:h},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(k);p&&(s=p[1],n=p[2])}r.func=j,l={name:s,message:n,url:d(),stack:[r]},e(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=h.onerror,h.onerror=l,r=!0)}function n(){r&&(h.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,e.apply(null,[a,!1].concat(b))}function p(a,b){var c=i.call(arguments,1);if(v){if(u===a)return;o()}var d=g.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),g.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,f,g=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,h=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,i=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,k=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,l=/\((\S*)(?::(\d+))(?::(\d+))\)/,m=a.stack.split("\n"),n=[],o=(/^(.*) is undefined$/.exec(a.message),0),p=m.length;o eval")>-1;r&&(b=k.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==o||c[5]||"undefined"==typeof a.columnNumber||(n[0].column=a.columnNumber+1),f={url:c[3],func:c[1]||j,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}if(!f.func&&f.line&&(f.func=j),f.url&&"blob:"===f.url.substr(0,5)){var s=new XMLHttpRequest;if(s.open("GET",f.url,!1),s.send(null),200===s.status){var t=s.responseText||"";t=t.slice(-300);var u=t.match(/\/\/# sourceMappingURL=(.*)$/);if(u){var v=u[1];"~"===v.charAt(0)&&(v=e()+v.slice(1)),f.url=v.slice(0,-4)}}}n.push(f)}return n.length?{name:a.name,message:a.message,url:d(),stack:n}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=j),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,e){for(var h,i,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==f&&o!==g.report){if(i={url:null,func:j,line:null,column:null},o.name?i.func=o.name:(h=k.exec(o.toString()))&&(i.func=h[1]),"undefined"==typeof i.func)try{i.func=h.input.substring(0,h.input.indexOf("{"))}catch(p){}m[""+o]?n=!0:m[""+o]=!0,l.push(i)}e&&l.splice(0,e);var q={name:a.name,message:a.message,url:d(),stack:l};return b(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description), -q}function f(b,e){var f=null;e=null==e?0:+e;try{if(f=a(b))return f}catch(h){if(g.debug)throw h}try{if(f=c(b,e+1))return f}catch(h){if(g.debug)throw h}return{name:b.name,message:b.message,url:d()}}return f.augmentStackTraceWithInitialElement=b,f.computeStackTraceFromStackProp=a,f}(),b.exports=g}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{6:6}],8:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}],9:[function(a,b,c){function d(a,b){var c=(65535&a)+(65535&b),d=(a>>16)+(b>>16)+(c>>16);return d<<16|65535&c}function e(a,b){return a<>>32-b}function f(a,b,c,f,g,h){return d(e(d(d(b,a),d(f,h)),g),c)}function g(a,b,c,d,e,g,h){return f(b&c|~b&d,a,b,e,g,h)}function h(a,b,c,d,e,g,h){return f(b&d|c&~d,a,b,e,g,h)}function i(a,b,c,d,e,g,h){return f(b^c^d,a,b,e,g,h)}function j(a,b,c,d,e,g,h){return f(c^(b|~d),a,b,e,g,h)}function k(a,b){a[b>>5]|=128<>>9<<4)+14]=b;var c,e,f,k,l,m=1732584193,n=-271733879,o=-1732584194,p=271733878;for(c=0;c>5]>>>b%32&255);return c}function m(a){var b,c=[];for(c[(a.length>>2)-1]=void 0,b=0;b>5]|=(255&a.charCodeAt(b/8))<16&&(e=k(e,8*a.length)),c=0;c<16;c+=1)f[c]=909522486^e[c],g[c]=1549556828^e[c];return d=k(f.concat(m(b)),512+8*b.length),l(k(g.concat(d),640))}function p(a){var b,c,d="0123456789abcdef",e="";for(c=0;c>>4&15)+d.charAt(15&b);return e}function q(a){return unescape(encodeURIComponent(a))}function r(a){return n(q(a))}function s(a){return p(r(a))}function t(a,b){return o(q(a),q(b))}function u(a,b){return p(t(a,b))}function v(a,b,c){return b?c?t(b,a):u(b,a):c?r(a):s(a)}b.exports=v},{}]},{},[5,1])(5)}); +/*! Raven.js 3.25.2 (30b6d4e) | github.com/getsentry/raven-js */ +!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.Raven=a()}}(function(){return function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};b[g][0].call(k.exports,function(a){var c=b[g][1][a];return e(c?c:a)},k,k.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;gthis.k.maxBreadcrumbs&&this.u.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.r.push([a,b]),this.n&&this.F(),this},setUserContext:function(a){return this.j.user=a,this},setExtraContext:function(a){return this.Z("extra",a),this},setTagsContext:function(a){return this.Z("tags",a),this},clearContext:function(){return this.j={},this},getContext:function(){return JSON.parse(h(this.j))},setEnvironment:function(a){return this.k.environment=a,this},setRelease:function(a){return this.k.release=a,this},setDataCallback:function(a){var b=this.k.dataCallback;return this.k.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.k.breadcrumbCallback;return this.k.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.k.shouldSendCallback;return this.k.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.k.transport=a,this},lastException:function(){return this.d},lastEventId:function(){return this.f},isSetup:function(){return!!this.a&&(!!this.g||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.z("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=R.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(S){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.H;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.j.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.J(this.G(c)),h=S.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(S.head||S.body).appendChild(h)}},L:function(){var a=this;this.m+=1,setTimeout(function(){a.m-=1})},$:function(a,b){var c,d;if(this.b){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),S.createEvent?(c=S.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=S.createEventObject(),c.eventType=a);for(d in b)A(b,d)&&(c[d]=b[d]);if(S.createEvent)S.dispatchEvent(c);else try{S.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},_:function(a){var b=this;return function(c){if(b.aa=null,b.v!==c){b.v=c;var d;try{d=E(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ba:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.aa;g||a._("input")(c),clearTimeout(g),a.aa=setTimeout(function(){a.aa=null},b)}}},ca:function(a,b){var c=H(this.w.href),d=H(b),e=H(a);this.x=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},C:function(){var a=this;a.da=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.M?a.da.apply(this.O,arguments):a.da.apply(this,arguments)}},Q:function(){this.da&&(Function.prototype.toString=this.da)},D:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.ca(b.x,c+""),a.apply(this,arguments)}};I(R.history,"pushState",j,d),I(R.history,"replaceState",j,d)}if(c.console&&"console"in R&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};w(["debug","info","warn","error","log"],function(a,b){O(console,b,k)})}},R:function(){for(var a;this.t.length;){a=this.t.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},S:function(){for(var a in this.q)this.p[a]=this.q[a]},F:function(){var a=this;w(this.r,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},G:function(a){var b=Q.exec(a),c={},d=7;try{for(;d--;)c[P[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.k.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},J:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},A:function(){this.m||this.V.apply(this,arguments)},V:function(a,b){var c=this.X(a,b);this.$("handle",{stackInfo:a,options:b}),this.fa(a.name,a.message,a.url,a.lineno,c,b)},X:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(w(a.stack,function(b,e){var f=c.ga(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.u,0)}),this.j.user&&(a.user=this.j.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),a=this.pa(a),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||v(a[b]))&&delete a[b]}),s(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!v(a)&&(!s(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.ma()?void this.z("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function F(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&l(b))for(c=b.split(/\s+/),f=0;fc?Q(a,b-1):d}function R(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?X:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function S(a,b){function c(a){return m(a)?a.map(function(a){return c(a)}):k(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!m(b)||m(b)&&0===b.length)return a;var d,e=A(b),f="********";try{d=JSON.parse(T(a))}catch(g){return a}return c(d)}var T=a(8),U="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},V=3,W=51200,X=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isDOMError:g,isDOMException:h,isUndefined:i,isFunction:j,isPlainObject:k,isString:l,isArray:m,isEmptyObject:n,supportsErrorEvent:o,supportsDOMError:p,supportsDOMException:q,supportsFetch:r,supportsReferrerPolicy:s,supportsPromiseRejectionEvent:t,wrappedCallback:u,each:v,objectMerge:w,truncate:y,objectFrozen:x,hasKey:z,joinRegExp:A,urlencode:B,uuid4:D,htmlTreeAsString:E,htmlElementAsString:F,isSameException:I,isSameStacktrace:J,parseUrl:C,fill:K,safeJoin:L,serializeException:Q,serializeKeysForMessage:R,sanitize:S}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{8:8}],7:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}function e(){return"undefined"==typeof document||null==document.location?"":(document.location.origin||(document.location.origin=document.location.protocol+"//"+document.location.hostname+(document.location.port?":"+document.location.port:"")),document.location.origin)}var f=a(6),g={collectWindowErrors:!0,debug:!1},h="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},i=[].slice,j="?",k=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;g.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function e(a,b){var c=null;if(!b||g.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(i.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,h,i){var l=null,m=f.isErrorEvent(i)?i.error:i,n=f.isErrorEvent(a)?a.message:a;if(v)g.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&f.isError(m))l=g.computeStackTrace(m),e(l,!0);else{var p,r={url:b,line:c,column:h},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(k);p&&(s=p[1],n=p[2])}r.func=j,l={name:s,message:n,url:d(),stack:[r]},e(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=h.onerror,h.onerror=l,r=!0)}function n(){r&&(h.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,e.apply(null,[a,!1].concat(b))}function p(a,b){var c=i.call(arguments,1);if(v){if(u===a)return;o()}var d=g.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),g.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,f,g=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,h=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,i=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,k=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,l=/\((\S*)(?::(\d+))(?::(\d+))\)/,m=a.stack.split("\n"),n=[],o=(/^(.*) is undefined$/.exec(a.message),0),p=m.length;o eval")>-1;r&&(b=k.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==o||c[5]||"undefined"==typeof a.columnNumber||(n[0].column=a.columnNumber+1),f={url:c[3],func:c[1]||j,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}if(!f.func&&f.line&&(f.func=j),f.url&&"blob:"===f.url.substr(0,5)){var s=new XMLHttpRequest;if(s.open("GET",f.url,!1),s.send(null),200===s.status){var t=s.responseText||"";t=t.slice(-300);var u=t.match(/\/\/# sourceMappingURL=(.*)$/);if(u){var v=u[1];"~"===v.charAt(0)&&(v=e()+v.slice(1)),f.url=v.slice(0,-4)}}}n.push(f)}return n.length?{name:a.name,message:a.message,url:d(),stack:n}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=j),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,e){for(var h,i,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==f&&o!==g.report){if(i={url:null,func:j,line:null,column:null},o.name?i.func=o.name:(h=k.exec(o.toString()))&&(i.func=h[1]),"undefined"==typeof i.func)try{i.func=h.input.substring(0,h.input.indexOf("{"))}catch(p){}m[""+o]?n=!0:m[""+o]=!0,l.push(i)}e&&l.splice(0,e);var q={name:a.name,message:a.message,url:d(),stack:l +};return b(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),q}function f(b,e){var f=null;e=null==e?0:+e;try{if(f=a(b))return f}catch(h){if(g.debug)throw h}try{if(f=c(b,e+1))return f}catch(h){if(g.debug)throw h}return{name:b.name,message:b.message,url:d()}}return f.augmentStackTraceWithInitialElement=b,f.computeStackTraceFromStackProp=a,f}(),b.exports=g}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{6:6}],8:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}],9:[function(a,b,c){function d(a,b){var c=(65535&a)+(65535&b),d=(a>>16)+(b>>16)+(c>>16);return d<<16|65535&c}function e(a,b){return a<>>32-b}function f(a,b,c,f,g,h){return d(e(d(d(b,a),d(f,h)),g),c)}function g(a,b,c,d,e,g,h){return f(b&c|~b&d,a,b,e,g,h)}function h(a,b,c,d,e,g,h){return f(b&d|c&~d,a,b,e,g,h)}function i(a,b,c,d,e,g,h){return f(b^c^d,a,b,e,g,h)}function j(a,b,c,d,e,g,h){return f(c^(b|~d),a,b,e,g,h)}function k(a,b){a[b>>5]|=128<>>9<<4)+14]=b;var c,e,f,k,l,m=1732584193,n=-271733879,o=-1732584194,p=271733878;for(c=0;c>5]>>>b%32&255);return c}function m(a){var b,c=[];for(c[(a.length>>2)-1]=void 0,b=0;b>5]|=(255&a.charCodeAt(b/8))<16&&(e=k(e,8*a.length)),c=0;c<16;c+=1)f[c]=909522486^e[c],g[c]=1549556828^e[c];return d=k(f.concat(m(b)),512+8*b.length),l(k(g.concat(d),640))}function p(a){var b,c,d="0123456789abcdef",e="";for(c=0;c>>4&15)+d.charAt(15&b);return e}function q(a){return unescape(encodeURIComponent(a))}function r(a){return n(q(a))}function s(a){return p(r(a))}function t(a,b){return o(q(a),q(b))}function u(a,b){return p(t(a,b))}function v(a,b,c){return b?c?t(b,a):u(b,a):c?r(a):s(a)}b.exports=v},{}]},{},[5,1])(5)}); //# sourceMappingURL=raven.min.js.map \ No newline at end of file diff --git a/dist/ember/raven.min.js.map b/dist/ember/raven.min.js.map index 0e2433f72129..71a63ead9821 100644 --- a/dist/ember/raven.min.js.map +++ b/dist/ember/raven.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","emberPlugin","Ember","_oldOnError","onerror","error","captureException","RSVP","on","reason","extra","context","captureMessage","addPlugin","5","2","RavenConfigError","message","name","prototype","constructor","3","utils","wrapMethod","console","level","callback","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","msg","safeJoin","data","logger","Function","apply","6","4","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","sanitizeKeys","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isErrorEvent","isDOMError","isDOMException","isError","isObject","isPlainObject","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","sanitize","wrapConsoleMethod","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","config","dsn","options","_logDebug","globalOptions","key","value","setDSN","push","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","toString","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","substr","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","func","undefined","wrap","_before","wrapped","deep","_ignoreNextOnError","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","T","event","unhandledPromiseRejection","B","_promiseRejectionHandler","bind","addEventListener","P","removeEventListener","ex","trimHeadFrames","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","U","currentOptions","exKeys","Object","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","setDataCallback","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","L","setTimeout","$","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","_","evtName","_keypressTimeout","target","category","ba","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","ca","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","C","_originalFunctionToString","Q","D","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","type","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","E","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","R","builtin","S","F","installer","concat","G","str","m","exec","allowSecretKey","J","port","A","V","stackInfo","_triggerEvent","_processException","lineno","X","frame","_normalizeFrame","in_app","ga","stackInfoUrl","normalized","filename","line","colno","column","function","fa","prefixedMessage","exception","values","culprit","ha","request","Referer","breadcrumbs","_trimBreadcrumbs","ia","urlProp","urlProps","ja","httpData","userAgent","User-Agent","referrer","y","_backoffDuration","_backoffStart","ma","na","current","last","oa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Y","baseData","project","platform","_getHttpData","serverName","server_name","_sanitizeData","forEach","random","_sendProcessedPayload","pa","ra","qa","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","sa","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","open","setRequestHeader","send","ta","hash","evaluated","z","Z","setUser","setReleaseContext","7","8","9","RavenConstructor","_Raven","noConflict","Client","what","supportsErrorEvent","ErrorEvent","supportsDOMError","DOMError","supportsDOMException","DOMException","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","wrappedCallback","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","sanitizeMask","safeInput","o_O","getLocationHref","getLocationOrigin","origin","hostname","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","responseText","sourceMaps","sourceMapAddress","charAt","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","string","raw"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file +{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","emberPlugin","Ember","_oldOnError","onerror","error","captureException","RSVP","on","reason","extra","context","captureMessage","addPlugin","5","2","RavenConfigError","message","name","prototype","constructor","3","utils","wrapMethod","console","level","callback","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","msg","safeJoin","data","logger","Function","apply","6","4","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","sanitizeKeys","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isErrorEvent","isDOMError","isDOMException","isError","isObject","isPlainObject","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","sanitize","wrapConsoleMethod","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","config","dsn","options","_logDebug","globalOptions","key","value","setDSN","push","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","toString","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","substr","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","func","undefined","wrap","_before","wrapped","deep","_ignoreNextOnError","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","T","event","unhandledPromiseRejection","B","_promiseRejectionHandler","bind","addEventListener","P","removeEventListener","ex","trimHeadFrames","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","U","currentOptions","exKeys","Object","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","setDataCallback","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","L","setTimeout","$","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","_","evtName","_keypressTimeout","target","category","ba","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","ca","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","C","_originalFunctionToString","Q","D","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","type","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","E","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","R","builtin","S","F","installer","concat","G","str","m","exec","allowSecretKey","J","port","A","V","stackInfo","_triggerEvent","_processException","lineno","X","frame","_normalizeFrame","in_app","ga","stackInfoUrl","normalized","filename","line","colno","column","function","fa","prefixedMessage","exception","values","transaction","ha","request","Referer","breadcrumbs","_trimBreadcrumbs","ia","urlProp","urlProps","ja","httpData","userAgent","User-Agent","referrer","y","_backoffDuration","_backoffStart","ma","na","current","last","oa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Y","baseData","project","platform","_getHttpData","serverName","server_name","_sanitizeData","forEach","random","_sendProcessedPayload","pa","ra","qa","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","sa","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","open","setRequestHeader","send","ta","hash","evaluated","z","Z","setUser","setReleaseContext","7","8","9","RavenConstructor","_Raven","noConflict","Client","what","supportsErrorEvent","ErrorEvent","supportsDOMError","DOMError","supportsDOMException","DOMException","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","wrappedCallback","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","sanitizeMask","safeInput","o_O","getLocationHref","getLocationOrigin","origin","hostname","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","responseText","sourceMaps","sourceMapAddress","charAt","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","string","raw"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file diff --git a/dist/plugins/angular.js b/dist/plugins/angular.js index 17cc869a7b97..fcd726f2a6e1 100644 --- a/dist/plugins/angular.js +++ b/dist/plugins/angular.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.25.1 (b6f3c7a) | github.com/getsentry/raven-js */ +/*! Raven.js 3.25.2 (30b6d4e) | github.com/getsentry/raven-js */ /* * Includes TraceKit diff --git a/dist/plugins/angular.min.js b/dist/plugins/angular.min.js index aeb57a6e6c63..e3f0c7daf8c2 100644 --- a/dist/plugins/angular.min.js +++ b/dist/plugins/angular.min.js @@ -1,3 +1,3 @@ -/*! Raven.js 3.25.1 (b6f3c7a) | github.com/getsentry/raven-js */ +/*! Raven.js 3.25.2 (30b6d4e) | github.com/getsentry/raven-js */ !function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b=b.Raven||(b.Raven={}),b=b.Plugins||(b.Plugins={}),b.Angular=a()}}(function(){return function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};b[g][0].call(k.exports,function(a){var c=b[g][1][a];return e(c?c:a)},k,k.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;g ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function F(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&l(b))for(c=b.split(/\s+/),f=0;fc?Q(a,b-1):d}function R(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?X:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function S(a,b){function c(a){return m(a)?a.map(function(a){return c(a)}):k(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!m(b)||m(b)&&0===b.length)return a;var d,e=A(b),f="********";try{d=JSON.parse(T(a))}catch(g){return a}return c(d)}var T=a(3),U="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},V=3,W=51200,X=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isDOMError:g,isDOMException:h,isUndefined:i,isFunction:j,isPlainObject:k,isString:l,isArray:m,isEmptyObject:n,supportsErrorEvent:o,supportsDOMError:p,supportsDOMException:q,supportsFetch:r,supportsReferrerPolicy:s,supportsPromiseRejectionEvent:t,wrappedCallback:u,each:v,objectMerge:w,truncate:y,objectFrozen:x,hasKey:z,joinRegExp:A,urlencode:B,uuid4:D,htmlTreeAsString:E,htmlElementAsString:F,isSameException:I,isSameStacktrace:J,parseUrl:C,fill:K,safeJoin:L,serializeException:Q,serializeKeysForMessage:R,sanitize:S}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{3:3}],3:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}]},{},[1])(1)}); //# sourceMappingURL=angular.min.js.map \ No newline at end of file diff --git a/dist/plugins/console.js b/dist/plugins/console.js index 91b3b2a36f20..b12c1f0347b8 100644 --- a/dist/plugins/console.js +++ b/dist/plugins/console.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.25.1 (b6f3c7a) | github.com/getsentry/raven-js */ +/*! Raven.js 3.25.2 (30b6d4e) | github.com/getsentry/raven-js */ /* * Includes TraceKit diff --git a/dist/plugins/console.min.js b/dist/plugins/console.min.js index 1337a1d601a0..98bcf6ef96a8 100644 --- a/dist/plugins/console.min.js +++ b/dist/plugins/console.min.js @@ -1,3 +1,3 @@ -/*! Raven.js 3.25.1 (b6f3c7a) | github.com/getsentry/raven-js */ +/*! Raven.js 3.25.2 (30b6d4e) | github.com/getsentry/raven-js */ !function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b=b.Raven||(b.Raven={}),b=b.Plugins||(b.Plugins={}),b.Console=a()}}(function(){return function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};b[g][0].call(k.exports,function(a){var c=b[g][1][a];return e(c?c:a)},k,k.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;g ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function F(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&l(b))for(c=b.split(/\s+/),f=0;fc?Q(a,b-1):d}function R(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?X:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function S(a,b){function c(a){return m(a)?a.map(function(a){return c(a)}):k(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!m(b)||m(b)&&0===b.length)return a;var d,e=A(b),f="********";try{d=JSON.parse(T(a))}catch(g){return a}return c(d)}var T=a(4),U="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},V=3,W=51200,X=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isDOMError:g,isDOMException:h,isUndefined:i,isFunction:j,isPlainObject:k,isString:l,isArray:m,isEmptyObject:n,supportsErrorEvent:o,supportsDOMError:p,supportsDOMException:q,supportsFetch:r,supportsReferrerPolicy:s,supportsPromiseRejectionEvent:t,wrappedCallback:u,each:v,objectMerge:w,truncate:y,objectFrozen:x,hasKey:z,joinRegExp:A,urlencode:B,uuid4:D,htmlTreeAsString:E,htmlElementAsString:F,isSameException:I,isSameStacktrace:J,parseUrl:C,fill:K,safeJoin:L,serializeException:Q,serializeKeysForMessage:R,sanitize:S}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{4:4}],4:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}]},{},[1])(1)}); //# sourceMappingURL=console.min.js.map \ No newline at end of file diff --git a/dist/plugins/ember.js b/dist/plugins/ember.js index 4eeb0262b5ca..b1f5f9ee1a57 100644 --- a/dist/plugins/ember.js +++ b/dist/plugins/ember.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.25.1 (b6f3c7a) | github.com/getsentry/raven-js */ +/*! Raven.js 3.25.2 (30b6d4e) | github.com/getsentry/raven-js */ /* * Includes TraceKit diff --git a/dist/plugins/ember.min.js b/dist/plugins/ember.min.js index c38a5b56dc38..4f055a5ec0e3 100644 --- a/dist/plugins/ember.min.js +++ b/dist/plugins/ember.min.js @@ -1,3 +1,3 @@ -/*! Raven.js 3.25.1 (b6f3c7a) | github.com/getsentry/raven-js */ +/*! Raven.js 3.25.2 (30b6d4e) | github.com/getsentry/raven-js */ !function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b=b.Raven||(b.Raven={}),b=b.Plugins||(b.Plugins={}),b.Ember=a()}}(function(){return function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};b[g][0].call(k.exports,function(a){var c=b[g][1][a];return e(c?c:a)},k,k.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;g":"anonymous component")+(a._isVue&&a.$options.__file?" at "+a.$options.__file:"")}function e(a,b){if(b=b||window.Vue,b&&b.config){var c=b.config.errorHandler;b.config.errorHandler=function(b,e,f){var g={};"[object Object]"===Object.prototype.toString.call(e)&&(g.componentName=d(e),g.propsData=e.$options.propsData),"undefined"!=typeof f&&(g.lifecycleHook=f),a.captureException(b,{extra:g}),"function"==typeof c&&c.call(this,b,e,f)}}}b.exports=e},{}]},{},[1])(1)}); //# sourceMappingURL=vue.min.js.map \ No newline at end of file diff --git a/dist/raven.js b/dist/raven.js index e3eb41efbb9f..6013755e2916 100644 --- a/dist/raven.js +++ b/dist/raven.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.25.1 (b6f3c7a) | github.com/getsentry/raven-js */ +/*! Raven.js 3.25.2 (30b6d4e) | github.com/getsentry/raven-js */ /* * Includes TraceKit @@ -117,7 +117,11 @@ function now() { var _window = typeof window !== 'undefined' ? window - : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; + : typeof global !== 'undefined' + ? global + : typeof self !== 'undefined' + ? self + : {}; var _document = _window.document; var _navigator = _window.navigator; @@ -207,7 +211,7 @@ Raven.prototype = { // webpack (using a build step causes webpack #1617). Grunt verifies that // this value matches package.json during build. // See: https://github.com/getsentry/raven-js/issues/465 - VERSION: '3.25.1', + VERSION: '3.25.2', debug: false, @@ -1763,7 +1767,7 @@ Raven.prototype = { } ] }, - culprit: fileurl + transaction: fileurl }, options ); @@ -1878,7 +1882,7 @@ Raven.prototype = { if ( !last || current.message !== last.message || // defined for captureMessage - current.culprit !== last.culprit // defined for captureException/onerror + current.transaction !== last.transaction // defined for captureException/onerror ) return false; diff --git a/dist/raven.min.js b/dist/raven.min.js index f9cd97b4a450..f15e3eed5dcf 100644 --- a/dist/raven.min.js +++ b/dist/raven.min.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.25.1 (b6f3c7a) | github.com/getsentry/raven-js */ -!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.Raven=a()}}(function(){return function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};b[g][0].call(k.exports,function(a){var c=b[g][1][a];return e(c?c:a)},k,k.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;gthis.k.maxBreadcrumbs&&this.u.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.r.push([a,b]),this.n&&this.F(),this},setUserContext:function(a){return this.j.user=a,this},setExtraContext:function(a){return this.Z("extra",a),this},setTagsContext:function(a){return this.Z("tags",a),this},clearContext:function(){return this.j={},this},getContext:function(){return JSON.parse(h(this.j))},setEnvironment:function(a){return this.k.environment=a,this},setRelease:function(a){return this.k.release=a,this},setDataCallback:function(a){var b=this.k.dataCallback;return this.k.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.k.breadcrumbCallback;return this.k.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.k.shouldSendCallback;return this.k.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.k.transport=a,this},lastException:function(){return this.d},lastEventId:function(){return this.f},isSetup:function(){return!!this.a&&(!!this.g||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.z("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=R.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(S){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.H;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.j.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.J(this.G(c)),h=S.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(S.head||S.body).appendChild(h)}},L:function(){var a=this;this.m+=1,setTimeout(function(){a.m-=1})},$:function(a,b){var c,d;if(this.b){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),S.createEvent?(c=S.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=S.createEventObject(),c.eventType=a);for(d in b)A(b,d)&&(c[d]=b[d]);if(S.createEvent)S.dispatchEvent(c);else try{S.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},_:function(a){var b=this;return function(c){if(b.aa=null,b.v!==c){b.v=c;var d;try{d=E(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ba:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.aa;g||a._("input")(c),clearTimeout(g),a.aa=setTimeout(function(){a.aa=null},b)}}},ca:function(a,b){var c=H(this.w.href),d=H(b),e=H(a);this.x=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},C:function(){var a=this;a.da=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.M?a.da.apply(this.O,arguments):a.da.apply(this,arguments)}},Q:function(){this.da&&(Function.prototype.toString=this.da)},D:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.ca(b.x,c+""),a.apply(this,arguments)}};I(R.history,"pushState",j,d),I(R.history,"replaceState",j,d)}if(c.console&&"console"in R&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};w(["debug","info","warn","error","log"],function(a,b){O(console,b,k)})}},R:function(){for(var a;this.t.length;){a=this.t.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},S:function(){for(var a in this.q)this.p[a]=this.q[a]},F:function(){var a=this;w(this.r,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},G:function(a){var b=Q.exec(a),c={},d=7;try{for(;d--;)c[P[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.k.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},J:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},A:function(){this.m||this.V.apply(this,arguments)},V:function(a,b){var c=this.X(a,b);this.$("handle",{stackInfo:a,options:b}),this.fa(a.name,a.message,a.url,a.lineno,c,b)},X:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(w(a.stack,function(b,e){var f=c.ga(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.u,0)}),this.j.user&&(a.user=this.j.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),a=this.pa(a),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||v(a[b]))&&delete a[b]}),s(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!v(a)&&(!s(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.ma()?void this.z("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function F(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&l(b))for(c=b.split(/\s+/),f=0;fc?Q(a,b-1):d}function R(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?X:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function S(a,b){function c(a){return m(a)?a.map(function(a){return c(a)}):k(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!m(b)||m(b)&&0===b.length)return a;var d,e=A(b),f="********";try{d=JSON.parse(T(a))}catch(g){return a}return c(d)}var T=a(7),U="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},V=3,W=51200,X=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isDOMError:g,isDOMException:h,isUndefined:i,isFunction:j,isPlainObject:k,isString:l,isArray:m,isEmptyObject:n,supportsErrorEvent:o,supportsDOMError:p,supportsDOMException:q,supportsFetch:r,supportsReferrerPolicy:s,supportsPromiseRejectionEvent:t,wrappedCallback:u,each:v,objectMerge:w,truncate:y,objectFrozen:x,hasKey:z,joinRegExp:A,urlencode:B,uuid4:D,htmlTreeAsString:E,htmlElementAsString:F,isSameException:I,isSameStacktrace:J,parseUrl:C,fill:K,safeJoin:L,serializeException:Q,serializeKeysForMessage:R,sanitize:S}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{7:7}],6:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}function e(){return"undefined"==typeof document||null==document.location?"":(document.location.origin||(document.location.origin=document.location.protocol+"//"+document.location.hostname+(document.location.port?":"+document.location.port:"")),document.location.origin)}var f=a(5),g={collectWindowErrors:!0,debug:!1},h="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},i=[].slice,j="?",k=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;g.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function e(a,b){var c=null;if(!b||g.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(i.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,h,i){var l=null,m=f.isErrorEvent(i)?i.error:i,n=f.isErrorEvent(a)?a.message:a;if(v)g.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&f.isError(m))l=g.computeStackTrace(m),e(l,!0);else{var p,r={url:b,line:c,column:h},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(k);p&&(s=p[1],n=p[2])}r.func=j,l={name:s,message:n,url:d(),stack:[r]},e(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=h.onerror,h.onerror=l,r=!0)}function n(){r&&(h.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,e.apply(null,[a,!1].concat(b))}function p(a,b){var c=i.call(arguments,1);if(v){if(u===a)return;o()}var d=g.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),g.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,f,g=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,h=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,i=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,k=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,l=/\((\S*)(?::(\d+))(?::(\d+))\)/,m=a.stack.split("\n"),n=[],o=(/^(.*) is undefined$/.exec(a.message),0),p=m.length;o eval")>-1;r&&(b=k.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==o||c[5]||"undefined"==typeof a.columnNumber||(n[0].column=a.columnNumber+1),f={url:c[3],func:c[1]||j,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}if(!f.func&&f.line&&(f.func=j),f.url&&"blob:"===f.url.substr(0,5)){var s=new XMLHttpRequest;if(s.open("GET",f.url,!1),s.send(null),200===s.status){var t=s.responseText||"";t=t.slice(-300);var u=t.match(/\/\/# sourceMappingURL=(.*)$/);if(u){var v=u[1];"~"===v.charAt(0)&&(v=e()+v.slice(1)),f.url=v.slice(0,-4)}}}n.push(f)}return n.length?{name:a.name,message:a.message,url:d(),stack:n}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=j),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,e){for(var h,i,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==f&&o!==g.report){if(i={url:null,func:j,line:null,column:null},o.name?i.func=o.name:(h=k.exec(o.toString()))&&(i.func=h[1]),"undefined"==typeof i.func)try{i.func=h.input.substring(0,h.input.indexOf("{"))}catch(p){}m[""+o]?n=!0:m[""+o]=!0,l.push(i)}e&&l.splice(0,e);var q={name:a.name,message:a.message,url:d(),stack:l};return b(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),q}function f(b,e){var f=null;e=null==e?0:+e;try{if(f=a(b))return f}catch(h){if(g.debug)throw h}try{if(f=c(b,e+1))return f}catch(h){if(g.debug)throw h}return{name:b.name,message:b.message,url:d()}}return f.augmentStackTraceWithInitialElement=b,f.computeStackTraceFromStackProp=a,f}(),b.exports=g}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{}); +/*! Raven.js 3.25.2 (30b6d4e) | github.com/getsentry/raven-js */ +!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.Raven=a()}}(function(){return function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};b[g][0].call(k.exports,function(a){var c=b[g][1][a];return e(c?c:a)},k,k.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;gthis.k.maxBreadcrumbs&&this.u.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.r.push([a,b]),this.n&&this.F(),this},setUserContext:function(a){return this.j.user=a,this},setExtraContext:function(a){return this.Z("extra",a),this},setTagsContext:function(a){return this.Z("tags",a),this},clearContext:function(){return this.j={},this},getContext:function(){return JSON.parse(h(this.j))},setEnvironment:function(a){return this.k.environment=a,this},setRelease:function(a){return this.k.release=a,this},setDataCallback:function(a){var b=this.k.dataCallback;return this.k.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.k.breadcrumbCallback;return this.k.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.k.shouldSendCallback;return this.k.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.k.transport=a,this},lastException:function(){return this.d},lastEventId:function(){return this.f},isSetup:function(){return!!this.a&&(!!this.g||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.z("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=R.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(S){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.H;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.j.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.J(this.G(c)),h=S.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(S.head||S.body).appendChild(h)}},L:function(){var a=this;this.m+=1,setTimeout(function(){a.m-=1})},$:function(a,b){var c,d;if(this.b){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),S.createEvent?(c=S.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=S.createEventObject(),c.eventType=a);for(d in b)A(b,d)&&(c[d]=b[d]);if(S.createEvent)S.dispatchEvent(c);else try{S.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},_:function(a){var b=this;return function(c){if(b.aa=null,b.v!==c){b.v=c;var d;try{d=E(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ba:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.aa;g||a._("input")(c),clearTimeout(g),a.aa=setTimeout(function(){a.aa=null},b)}}},ca:function(a,b){var c=H(this.w.href),d=H(b),e=H(a);this.x=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},C:function(){var a=this;a.da=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.M?a.da.apply(this.O,arguments):a.da.apply(this,arguments)}},Q:function(){this.da&&(Function.prototype.toString=this.da)},D:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.ca(b.x,c+""),a.apply(this,arguments)}};I(R.history,"pushState",j,d),I(R.history,"replaceState",j,d)}if(c.console&&"console"in R&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};w(["debug","info","warn","error","log"],function(a,b){O(console,b,k)})}},R:function(){for(var a;this.t.length;){a=this.t.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},S:function(){for(var a in this.q)this.p[a]=this.q[a]},F:function(){var a=this;w(this.r,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},G:function(a){var b=Q.exec(a),c={},d=7;try{for(;d--;)c[P[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.k.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},J:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},A:function(){this.m||this.V.apply(this,arguments)},V:function(a,b){var c=this.X(a,b);this.$("handle",{stackInfo:a,options:b}),this.fa(a.name,a.message,a.url,a.lineno,c,b)},X:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(w(a.stack,function(b,e){var f=c.ga(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.u,0)}),this.j.user&&(a.user=this.j.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),a=this.pa(a),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||v(a[b]))&&delete a[b]}),s(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!v(a)&&(!s(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.ma()?void this.z("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function F(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&l(b))for(c=b.split(/\s+/),f=0;fc?Q(a,b-1):d}function R(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?X:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function S(a,b){function c(a){return m(a)?a.map(function(a){return c(a)}):k(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!m(b)||m(b)&&0===b.length)return a;var d,e=A(b),f="********";try{d=JSON.parse(T(a))}catch(g){return a}return c(d)}var T=a(7),U="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},V=3,W=51200,X=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isDOMError:g,isDOMException:h,isUndefined:i,isFunction:j,isPlainObject:k,isString:l,isArray:m,isEmptyObject:n,supportsErrorEvent:o,supportsDOMError:p,supportsDOMException:q,supportsFetch:r,supportsReferrerPolicy:s,supportsPromiseRejectionEvent:t,wrappedCallback:u,each:v,objectMerge:w,truncate:y,objectFrozen:x,hasKey:z,joinRegExp:A,urlencode:B,uuid4:D,htmlTreeAsString:E,htmlElementAsString:F,isSameException:I,isSameStacktrace:J,parseUrl:C,fill:K,safeJoin:L,serializeException:Q,serializeKeysForMessage:R,sanitize:S}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{7:7}],6:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}function e(){return"undefined"==typeof document||null==document.location?"":(document.location.origin||(document.location.origin=document.location.protocol+"//"+document.location.hostname+(document.location.port?":"+document.location.port:"")),document.location.origin)}var f=a(5),g={collectWindowErrors:!0,debug:!1},h="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},i=[].slice,j="?",k=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;g.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function e(a,b){var c=null;if(!b||g.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(i.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,h,i){var l=null,m=f.isErrorEvent(i)?i.error:i,n=f.isErrorEvent(a)?a.message:a;if(v)g.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&f.isError(m))l=g.computeStackTrace(m),e(l,!0);else{var p,r={url:b,line:c,column:h},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(k);p&&(s=p[1],n=p[2])}r.func=j,l={name:s,message:n,url:d(),stack:[r]},e(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=h.onerror,h.onerror=l,r=!0)}function n(){r&&(h.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,e.apply(null,[a,!1].concat(b))}function p(a,b){var c=i.call(arguments,1);if(v){if(u===a)return;o()}var d=g.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),g.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,f,g=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,h=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,i=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,k=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,l=/\((\S*)(?::(\d+))(?::(\d+))\)/,m=a.stack.split("\n"),n=[],o=(/^(.*) is undefined$/.exec(a.message),0),p=m.length;o eval")>-1;r&&(b=k.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==o||c[5]||"undefined"==typeof a.columnNumber||(n[0].column=a.columnNumber+1),f={url:c[3],func:c[1]||j,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}if(!f.func&&f.line&&(f.func=j),f.url&&"blob:"===f.url.substr(0,5)){var s=new XMLHttpRequest;if(s.open("GET",f.url,!1),s.send(null),200===s.status){var t=s.responseText||"";t=t.slice(-300);var u=t.match(/\/\/# sourceMappingURL=(.*)$/);if(u){var v=u[1];"~"===v.charAt(0)&&(v=e()+v.slice(1)),f.url=v.slice(0,-4)}}}n.push(f)}return n.length?{name:a.name,message:a.message,url:d(),stack:n}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=j),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,e){for(var h,i,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==f&&o!==g.report){if(i={url:null,func:j,line:null,column:null},o.name?i.func=o.name:(h=k.exec(o.toString()))&&(i.func=h[1]),"undefined"==typeof i.func)try{i.func=h.input.substring(0,h.input.indexOf("{"))}catch(p){}m[""+o]?n=!0:m[""+o]=!0,l.push(i)}e&&l.splice(0,e);var q={name:a.name,message:a.message,url:d(),stack:l};return b(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),q}function f(b,e){var f=null;e=null==e?0:+e;try{if(f=a(b))return f}catch(h){if(g.debug)throw h}try{if(f=c(b,e+1))return f}catch(h){if(g.debug)throw h}return{name:b.name,message:b.message,url:d()}}return f.augmentStackTraceWithInitialElement=b,f.computeStackTraceFromStackProp=a,f}(),b.exports=g}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{}); },{5:5}],7:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}],8:[function(a,b,c){function d(a,b){var c=(65535&a)+(65535&b),d=(a>>16)+(b>>16)+(c>>16);return d<<16|65535&c}function e(a,b){return a<>>32-b}function f(a,b,c,f,g,h){return d(e(d(d(b,a),d(f,h)),g),c)}function g(a,b,c,d,e,g,h){return f(b&c|~b&d,a,b,e,g,h)}function h(a,b,c,d,e,g,h){return f(b&d|c&~d,a,b,e,g,h)}function i(a,b,c,d,e,g,h){return f(b^c^d,a,b,e,g,h)}function j(a,b,c,d,e,g,h){return f(c^(b|~d),a,b,e,g,h)}function k(a,b){a[b>>5]|=128<>>9<<4)+14]=b;var c,e,f,k,l,m=1732584193,n=-271733879,o=-1732584194,p=271733878;for(c=0;c>5]>>>b%32&255);return c}function m(a){var b,c=[];for(c[(a.length>>2)-1]=void 0,b=0;b>5]|=(255&a.charCodeAt(b/8))<16&&(e=k(e,8*a.length)),c=0;c<16;c+=1)f[c]=909522486^e[c],g[c]=1549556828^e[c];return d=k(f.concat(m(b)),512+8*b.length),l(k(g.concat(d),640))}function p(a){var b,c,d="0123456789abcdef",e="";for(c=0;c>>4&15)+d.charAt(15&b);return e}function q(a){return unescape(encodeURIComponent(a))}function r(a){return n(q(a))}function s(a){return p(r(a))}function t(a,b){return o(q(a),q(b))}function u(a,b){return p(t(a,b))}function v(a,b,c){return b?c?t(b,a):u(b,a):c?r(a):s(a)}b.exports=v},{}]},{},[4])(4)}); //# sourceMappingURL=raven.min.js.map \ No newline at end of file diff --git a/dist/raven.min.js.map b/dist/raven.min.js.map index 90452f2145fb..a8509ae50dbc 100644 --- a/dist/raven.min.js.map +++ b/dist/raven.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","RavenConfigError","message","name","prototype","constructor","2","utils","wrapMethod","console","level","callback","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","msg","safeJoin","data","logger","extra","Function","apply","5","3","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","sanitizeKeys","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isErrorEvent","isDOMError","isDOMException","isError","isObject","isPlainObject","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","sanitize","wrapConsoleMethod","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","config","dsn","options","_logDebug","globalOptions","key","value","setDSN","push","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","toString","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","substr","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","context","func","undefined","wrap","_before","wrapped","deep","_ignoreNextOnError","captureException","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","T","event","reason","unhandledPromiseRejection","B","_promiseRejectionHandler","bind","addEventListener","P","removeEventListener","ex","trimHeadFrames","error","captureMessage","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","U","currentOptions","exKeys","Object","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","addPlugin","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","setDataCallback","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","L","setTimeout","$","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","_","evtName","_keypressTimeout","target","category","ba","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","ca","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","C","_originalFunctionToString","Q","D","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","type","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","E","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","R","builtin","S","F","installer","concat","G","str","m","exec","allowSecretKey","J","port","A","V","stackInfo","_triggerEvent","_processException","lineno","X","frame","_normalizeFrame","in_app","ga","stackInfoUrl","normalized","filename","line","colno","column","function","fa","prefixedMessage","exception","values","culprit","ha","request","Referer","breadcrumbs","_trimBreadcrumbs","ia","urlProp","urlProps","ja","httpData","userAgent","User-Agent","referrer","y","_backoffDuration","_backoffStart","ma","na","current","last","oa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Y","baseData","project","platform","_getHttpData","serverName","server_name","_sanitizeData","forEach","random","_sendProcessedPayload","pa","ra","qa","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","sa","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","onerror","open","setRequestHeader","send","ta","hash","evaluated","z","Z","setUser","setReleaseContext","6","7","8","4","RavenConstructor","_Raven","noConflict","Client","what","supportsErrorEvent","ErrorEvent","supportsDOMError","DOMError","supportsDOMException","DOMException","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","wrappedCallback","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","sanitizeMask","safeInput","o_O","getLocationHref","getLocationOrigin","origin","hostname","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","responseText","sourceMaps","sourceMapAddress","charAt","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","string","raw"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file +{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","RavenConfigError","message","name","prototype","constructor","2","utils","wrapMethod","console","level","callback","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","msg","safeJoin","data","logger","extra","Function","apply","5","3","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","sanitizeKeys","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isErrorEvent","isDOMError","isDOMException","isError","isObject","isPlainObject","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","sanitize","wrapConsoleMethod","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","config","dsn","options","_logDebug","globalOptions","key","value","setDSN","push","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","toString","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","substr","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","context","func","undefined","wrap","_before","wrapped","deep","_ignoreNextOnError","captureException","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","T","event","reason","unhandledPromiseRejection","B","_promiseRejectionHandler","bind","addEventListener","P","removeEventListener","ex","trimHeadFrames","error","captureMessage","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","U","currentOptions","exKeys","Object","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","addPlugin","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","setDataCallback","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","L","setTimeout","$","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","_","evtName","_keypressTimeout","target","category","ba","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","ca","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","C","_originalFunctionToString","Q","D","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","type","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","E","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","R","builtin","S","F","installer","concat","G","str","m","exec","allowSecretKey","J","port","A","V","stackInfo","_triggerEvent","_processException","lineno","X","frame","_normalizeFrame","in_app","ga","stackInfoUrl","normalized","filename","line","colno","column","function","fa","prefixedMessage","exception","values","transaction","ha","request","Referer","breadcrumbs","_trimBreadcrumbs","ia","urlProp","urlProps","ja","httpData","userAgent","User-Agent","referrer","y","_backoffDuration","_backoffStart","ma","na","current","last","oa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Y","baseData","project","platform","_getHttpData","serverName","server_name","_sanitizeData","forEach","random","_sendProcessedPayload","pa","ra","qa","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","sa","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","onerror","open","setRequestHeader","send","ta","hash","evaluated","z","Z","setUser","setReleaseContext","6","7","8","4","RavenConstructor","_Raven","noConflict","Client","what","supportsErrorEvent","ErrorEvent","supportsDOMError","DOMError","supportsDOMException","DOMException","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","wrappedCallback","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","sanitizeMask","safeInput","o_O","getLocationHref","getLocationOrigin","origin","hostname","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","responseText","sourceMaps","sourceMapAddress","charAt","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","string","raw"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file diff --git a/dist/require,vue/raven.js b/dist/require,vue/raven.js index 8a4caafc379a..5e1682b30e9e 100644 --- a/dist/require,vue/raven.js +++ b/dist/require,vue/raven.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.25.1 (b6f3c7a) | github.com/getsentry/raven-js */ +/*! Raven.js 3.25.2 (30b6d4e) | github.com/getsentry/raven-js */ /* * Includes TraceKit @@ -184,7 +184,11 @@ function now() { var _window = typeof window !== 'undefined' ? window - : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; + : typeof global !== 'undefined' + ? global + : typeof self !== 'undefined' + ? self + : {}; var _document = _window.document; var _navigator = _window.navigator; @@ -274,7 +278,7 @@ Raven.prototype = { // webpack (using a build step causes webpack #1617). Grunt verifies that // this value matches package.json during build. // See: https://github.com/getsentry/raven-js/issues/465 - VERSION: '3.25.1', + VERSION: '3.25.2', debug: false, @@ -1830,7 +1834,7 @@ Raven.prototype = { } ] }, - culprit: fileurl + transaction: fileurl }, options ); @@ -1945,7 +1949,7 @@ Raven.prototype = { if ( !last || current.message !== last.message || // defined for captureMessage - current.culprit !== last.culprit // defined for captureException/onerror + current.transaction !== last.transaction // defined for captureException/onerror ) return false; diff --git a/dist/require,vue/raven.min.js b/dist/require,vue/raven.min.js index 1664d756d922..cc2b9000f72e 100644 --- a/dist/require,vue/raven.min.js +++ b/dist/require,vue/raven.min.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.25.1 (b6f3c7a) | github.com/getsentry/raven-js */ -!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.Raven=a()}}(function(){var a;return function b(a,c,d){function e(g,h){if(!c[g]){if(!a[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};a[g][0].call(k.exports,function(b){var c=a[g][1][b];return e(c?c:b)},k,k.exports,b,a,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;g":"anonymous component")+(a._isVue&&a.$options.__file?" at "+a.$options.__file:"")}function e(a,b){if(b=b||window.Vue,b&&b.config){var c=b.config.errorHandler;b.config.errorHandler=function(b,e,f){var g={};"[object Object]"===Object.prototype.toString.call(e)&&(g.componentName=d(e),g.propsData=e.$options.propsData),"undefined"!=typeof f&&(g.lifecycleHook=f),a.captureException(b,{extra:g}),"function"==typeof c&&c.call(this,b,e,f)}}}b.exports=e,a(6).addPlugin(b.exports)},{6:6}],3:[function(a,b,c){function d(a){this.name="RavenConfigError",this.message=a}d.prototype=new Error,d.prototype.constructor=d,b.exports=d},{}],4:[function(a,b,c){var d=a(7),e=function(a,b,c){var e=a[b],f=a;if(b in a){var g="warn"===b?"warning":b;a[b]=function(){var a=[].slice.call(arguments),h=d.safeJoin(a," "),i={level:g,logger:"console",extra:{arguments:a}};"assert"===b?a[0]===!1&&(h="Assertion failed: "+(d.safeJoin(a.slice(1)," ")||"console.assert"),i.extra.arguments=a.slice(1),c&&c(h,i)):c&&c(h,i),e&&Function.prototype.apply.call(e,f,a)}}};b.exports={wrapMethod:e}},{7:7}],5:[function(a,b,c){(function(c){function d(){return+new Date}function e(a,b){return s(b)?function(c){return b(c,a)}:b}function f(){this.a=!("object"!=typeof JSON||!JSON.stringify),this.b=!r(S),this.c=!r(T),this.d=null,this.e=null,this.f=null,this.g=null,this.h=null,this.i=null,this.j={},this.k={release:R.SENTRY_RELEASE&&R.SENTRY_RELEASE.id,logger:"javascript",ignoreErrors:[],ignoreUrls:[],whitelistUrls:[],includePaths:[],headers:null,collectWindowErrors:!0,captureUnhandledRejections:!0,maxMessageLength:0,maxUrlLength:250,stackTraceLimit:50,autoBreadcrumbs:!0,instrument:!0,sampleRate:1,sanitizeKeys:[]},this.l={method:"POST",keepalive:!0,referrerPolicy:K()?"origin":""},this.m=0,this.n=!1,this.o=Error.stackTraceLimit,this.p=R.console||{},this.q={},this.r=[],this.s=d(),this.t=[],this.u=[],this.v=null,this.w=R.location,this.x=this.w&&this.w.href,this.y();for(var a in this.p)this.q[a]=this.p[a]}var g=a(8),h=a(9),i=a(10),j=a(3),k=a(7),l=k.isErrorEvent,m=k.isDOMError,n=k.isDOMException,o=k.isError,p=k.isObject,q=k.isPlainObject,r=k.isUndefined,s=k.isFunction,t=k.isString,u=k.isArray,v=k.isEmptyObject,w=k.each,x=k.objectMerge,y=k.truncate,z=k.objectFrozen,A=k.hasKey,B=k.joinRegExp,C=k.urlencode,D=k.uuid4,E=k.htmlTreeAsString,F=k.isSameException,G=k.isSameStacktrace,H=k.parseUrl,I=k.fill,J=k.supportsFetch,K=k.supportsReferrerPolicy,L=k.serializeKeysForMessage,M=k.serializeException,N=k.sanitize,O=a(4).wrapMethod,P="source protocol user pass host port path".split(" "),Q=/^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/,R="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},S=R.document,T=R.navigator;f.prototype={VERSION:"3.25.1",debug:!1,TraceKit:g,config:function(a,b){var c=this;if(c.g)return this.z("error","Error: Raven has already been configured"),c;if(!a)return c;var d=c.k;b&&w(b,function(a,b){"tags"===a||"extra"===a||"user"===a?c.j[a]=b:d[a]=b}),c.setDSN(a),d.ignoreErrors.push(/^Script error\.?$/),d.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/),d.ignoreErrors=B(d.ignoreErrors),d.ignoreUrls=!!d.ignoreUrls.length&&B(d.ignoreUrls),d.whitelistUrls=!!d.whitelistUrls.length&&B(d.whitelistUrls),d.includePaths=B(d.includePaths),d.maxBreadcrumbs=Math.max(0,Math.min(d.maxBreadcrumbs||100,100));var e={xhr:!0,console:!0,dom:!0,location:!0,sentry:!0},f=d.autoBreadcrumbs;"[object Object]"==={}.toString.call(f)?f=x(e,f):f!==!1&&(f=e),d.autoBreadcrumbs=f;var h={tryCatch:!0},i=d.instrument;return"[object Object]"==={}.toString.call(i)?i=x(h,i):i!==!1&&(i=h),d.instrument=i,g.collectWindowErrors=!!d.collectWindowErrors,c},install:function(){var a=this;return a.isSetup()&&!a.n&&(g.report.subscribe(function(){a.A.apply(a,arguments)}),a.k.captureUnhandledRejections&&a.B(),a.C(),a.k.instrument&&a.k.instrument.tryCatch&&a.D(),a.k.autoBreadcrumbs&&a.E(),a.F(),a.n=!0),Error.stackTraceLimit=a.k.stackTraceLimit,this},setDSN:function(a){var b=this,c=b.G(a),d=c.path.lastIndexOf("/"),e=c.path.substr(1,d);b.H=a,b.h=c.user,b.I=c.pass&&c.pass.substr(1),b.i=c.path.substr(d+1),b.g=b.J(c),b.K=b.g+"/"+e+"api/"+b.i+"/store/",this.y()},context:function(a,b,c){return s(a)&&(c=b||[],b=a,a=void 0),this.wrap(a,b).apply(this,c)},wrap:function(a,b,c){function d(){var d=[],f=arguments.length,g=!a||a&&a.deep!==!1;for(c&&s(c)&&c.apply(this,arguments);f--;)d[f]=g?e.wrap(a,arguments[f]):arguments[f];try{return b.apply(this,d)}catch(h){throw e.L(),e.captureException(h,a),h}}var e=this;if(r(b)&&!s(a))return a;if(s(a)&&(b=a,a=void 0),!s(b))return b;try{if(b.M)return b;if(b.N)return b.N}catch(f){return b}for(var g in b)A(b,g)&&(d[g]=b[g]);return d.prototype=b.prototype,b.N=d,d.M=!0,d.O=b,d},uninstall:function(){return g.report.uninstall(),this.P(),this.Q(),this.R(),this.S(),Error.stackTraceLimit=this.o,this.n=!1,this},T:function(a){this.z("debug","Raven caught unhandled promise rejection:",a),this.captureException(a.reason,{extra:{unhandledPromiseRejection:!0}})},B:function(){return this.T=this.T.bind(this),R.addEventListener&&R.addEventListener("unhandledrejection",this.T),this},P:function(){return R.removeEventListener&&R.removeEventListener("unhandledrejection",this.T),this},captureException:function(a,b){if(b=x({trimHeadFrames:0},b?b:{}),l(a)&&a.error)a=a.error;else{if(m(a)||n(a)){var c=a.name||(m(a)?"DOMError":"DOMException"),d=a.message?c+": "+a.message:c;return this.captureMessage(d,x(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}))}if(o(a))a=a;else{if(!q(a))return this.captureMessage(a,x(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}));b=this.U(b,a),a=new Error(b.message)}}this.d=a;try{var e=g.computeStackTrace(a);this.V(e,b)}catch(f){if(a!==f)throw f}return this},U:function(a,b){var c=Object.keys(b).sort(),d=x(a,{message:"Non-Error exception captured with keys: "+L(c),fingerprint:[i(c)],extra:a.extra||{}});return d.extra.W=M(b),d},captureMessage:function(a,b){if(!this.k.ignoreErrors.test||!this.k.ignoreErrors.test(a)){b=b||{},a+="";var c,d=x({message:a},b);try{throw new Error(a)}catch(e){c=e}c.name=null;var f=g.computeStackTrace(c),h=u(f.stack)&&f.stack[1];h&&"Raven.captureException"===h.func&&(h=f.stack[2]);var i=h&&h.url||"";if((!this.k.ignoreUrls.test||!this.k.ignoreUrls.test(i))&&(!this.k.whitelistUrls.test||this.k.whitelistUrls.test(i))){if(this.k.stacktrace||b&&b.stacktrace){d.fingerprint=null==d.fingerprint?a:d.fingerprint,b=x({trimHeadFrames:0},b),b.trimHeadFrames+=1;var j=this.X(f,b);d.stacktrace={frames:j.reverse()}}return d.fingerprint&&(d.fingerprint=u(d.fingerprint)?d.fingerprint:[d.fingerprint]),this.Y(d),this}}},captureBreadcrumb:function(a){var b=x({timestamp:d()/1e3},a);if(s(this.k.breadcrumbCallback)){var c=this.k.breadcrumbCallback(b);if(p(c)&&!v(c))b=c;else if(c===!1)return this}return this.u.push(b),this.u.length>this.k.maxBreadcrumbs&&this.u.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.r.push([a,b]),this.n&&this.F(),this},setUserContext:function(a){return this.j.user=a,this},setExtraContext:function(a){return this.Z("extra",a),this},setTagsContext:function(a){return this.Z("tags",a),this},clearContext:function(){return this.j={},this},getContext:function(){return JSON.parse(h(this.j))},setEnvironment:function(a){return this.k.environment=a,this},setRelease:function(a){return this.k.release=a,this},setDataCallback:function(a){var b=this.k.dataCallback;return this.k.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.k.breadcrumbCallback;return this.k.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.k.shouldSendCallback;return this.k.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.k.transport=a,this},lastException:function(){return this.d},lastEventId:function(){return this.f},isSetup:function(){return!!this.a&&(!!this.g||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.z("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=R.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(S){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.H;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.j.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.J(this.G(c)),h=S.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(S.head||S.body).appendChild(h)}},L:function(){var a=this;this.m+=1,setTimeout(function(){a.m-=1})},$:function(a,b){var c,d;if(this.b){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),S.createEvent?(c=S.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=S.createEventObject(),c.eventType=a);for(d in b)A(b,d)&&(c[d]=b[d]);if(S.createEvent)S.dispatchEvent(c);else try{S.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},_:function(a){var b=this;return function(c){if(b.aa=null,b.v!==c){b.v=c;var d;try{d=E(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ba:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.aa;g||a._("input")(c),clearTimeout(g),a.aa=setTimeout(function(){a.aa=null},b)}}},ca:function(a,b){var c=H(this.w.href),d=H(b),e=H(a);this.x=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},C:function(){var a=this;a.da=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.M?a.da.apply(this.O,arguments):a.da.apply(this,arguments)}},Q:function(){this.da&&(Function.prototype.toString=this.da)},D:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.ca(b.x,c+""),a.apply(this,arguments)}};I(R.history,"pushState",j,d),I(R.history,"replaceState",j,d)}if(c.console&&"console"in R&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};w(["debug","info","warn","error","log"],function(a,b){O(console,b,k)})}},R:function(){for(var a;this.t.length;){a=this.t.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},S:function(){for(var a in this.q)this.p[a]=this.q[a]},F:function(){var a=this;w(this.r,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},G:function(a){var b=Q.exec(a),c={},d=7;try{for(;d--;)c[P[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.k.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},J:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},A:function(){this.m||this.V.apply(this,arguments)},V:function(a,b){var c=this.X(a,b);this.$("handle",{stackInfo:a,options:b}),this.fa(a.name,a.message,a.url,a.lineno,c,b)},X:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(w(a.stack,function(b,e){var f=c.ga(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.u,0)}),this.j.user&&(a.user=this.j.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),a=this.pa(a),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||v(a[b]))&&delete a[b]}),s(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!v(a)&&(!s(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.ma()?void this.z("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function F(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&l(b))for(c=b.split(/\s+/),f=0;fc?Q(a,b-1):d}function R(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?X:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function S(a,b){function c(a){return m(a)?a.map(function(a){return c(a)}):k(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!m(b)||m(b)&&0===b.length)return a;var d,e=A(b),f="********";try{d=JSON.parse(T(a))}catch(g){return a}return c(d)}var T=a(9),U="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},V=3,W=51200,X=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isDOMError:g,isDOMException:h,isUndefined:i,isFunction:j,isPlainObject:k,isString:l,isArray:m,isEmptyObject:n,supportsErrorEvent:o,supportsDOMError:p,supportsDOMException:q,supportsFetch:r,supportsReferrerPolicy:s,supportsPromiseRejectionEvent:t,wrappedCallback:u,each:v,objectMerge:w,truncate:y,objectFrozen:x,hasKey:z,joinRegExp:A,urlencode:B,uuid4:D,htmlTreeAsString:E,htmlElementAsString:F,isSameException:I,isSameStacktrace:J,parseUrl:C,fill:K,safeJoin:L,serializeException:Q,serializeKeysForMessage:R,sanitize:S}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{9:9}],8:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}function e(){return"undefined"==typeof document||null==document.location?"":(document.location.origin||(document.location.origin=document.location.protocol+"//"+document.location.hostname+(document.location.port?":"+document.location.port:"")),document.location.origin)}var f=a(7),g={collectWindowErrors:!0,debug:!1},h="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},i=[].slice,j="?",k=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;g.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function e(a,b){var c=null;if(!b||g.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(i.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,h,i){var l=null,m=f.isErrorEvent(i)?i.error:i,n=f.isErrorEvent(a)?a.message:a;if(v)g.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&f.isError(m))l=g.computeStackTrace(m),e(l,!0);else{var p,r={url:b,line:c,column:h},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(k);p&&(s=p[1],n=p[2])}r.func=j,l={name:s,message:n,url:d(),stack:[r]},e(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=h.onerror,h.onerror=l,r=!0)}function n(){r&&(h.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,e.apply(null,[a,!1].concat(b))}function p(a,b){var c=i.call(arguments,1);if(v){if(u===a)return;o()}var d=g.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),g.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,f,g=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,h=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,i=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,k=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,l=/\((\S*)(?::(\d+))(?::(\d+))\)/,m=a.stack.split("\n"),n=[],o=(/^(.*) is undefined$/.exec(a.message),0),p=m.length;o eval")>-1;r&&(b=k.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==o||c[5]||"undefined"==typeof a.columnNumber||(n[0].column=a.columnNumber+1),f={url:c[3],func:c[1]||j,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}if(!f.func&&f.line&&(f.func=j),f.url&&"blob:"===f.url.substr(0,5)){var s=new XMLHttpRequest;if(s.open("GET",f.url,!1),s.send(null),200===s.status){var t=s.responseText||"";t=t.slice(-300);var u=t.match(/\/\/# sourceMappingURL=(.*)$/);if(u){var v=u[1];"~"===v.charAt(0)&&(v=e()+v.slice(1)),f.url=v.slice(0,-4)}}}n.push(f)}return n.length?{name:a.name,message:a.message,url:d(),stack:n}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=j),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,e){for(var h,i,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==f&&o!==g.report){ +/*! Raven.js 3.25.2 (30b6d4e) | github.com/getsentry/raven-js */ +!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.Raven=a()}}(function(){var a;return function b(a,c,d){function e(g,h){if(!c[g]){if(!a[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};a[g][0].call(k.exports,function(b){var c=a[g][1][b];return e(c?c:b)},k,k.exports,b,a,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;g":"anonymous component")+(a._isVue&&a.$options.__file?" at "+a.$options.__file:"")}function e(a,b){if(b=b||window.Vue,b&&b.config){var c=b.config.errorHandler;b.config.errorHandler=function(b,e,f){var g={};"[object Object]"===Object.prototype.toString.call(e)&&(g.componentName=d(e),g.propsData=e.$options.propsData),"undefined"!=typeof f&&(g.lifecycleHook=f),a.captureException(b,{extra:g}),"function"==typeof c&&c.call(this,b,e,f)}}}b.exports=e,a(6).addPlugin(b.exports)},{6:6}],3:[function(a,b,c){function d(a){this.name="RavenConfigError",this.message=a}d.prototype=new Error,d.prototype.constructor=d,b.exports=d},{}],4:[function(a,b,c){var d=a(7),e=function(a,b,c){var e=a[b],f=a;if(b in a){var g="warn"===b?"warning":b;a[b]=function(){var a=[].slice.call(arguments),h=d.safeJoin(a," "),i={level:g,logger:"console",extra:{arguments:a}};"assert"===b?a[0]===!1&&(h="Assertion failed: "+(d.safeJoin(a.slice(1)," ")||"console.assert"),i.extra.arguments=a.slice(1),c&&c(h,i)):c&&c(h,i),e&&Function.prototype.apply.call(e,f,a)}}};b.exports={wrapMethod:e}},{7:7}],5:[function(a,b,c){(function(c){function d(){return+new Date}function e(a,b){return s(b)?function(c){return b(c,a)}:b}function f(){this.a=!("object"!=typeof JSON||!JSON.stringify),this.b=!r(S),this.c=!r(T),this.d=null,this.e=null,this.f=null,this.g=null,this.h=null,this.i=null,this.j={},this.k={release:R.SENTRY_RELEASE&&R.SENTRY_RELEASE.id,logger:"javascript",ignoreErrors:[],ignoreUrls:[],whitelistUrls:[],includePaths:[],headers:null,collectWindowErrors:!0,captureUnhandledRejections:!0,maxMessageLength:0,maxUrlLength:250,stackTraceLimit:50,autoBreadcrumbs:!0,instrument:!0,sampleRate:1,sanitizeKeys:[]},this.l={method:"POST",keepalive:!0,referrerPolicy:K()?"origin":""},this.m=0,this.n=!1,this.o=Error.stackTraceLimit,this.p=R.console||{},this.q={},this.r=[],this.s=d(),this.t=[],this.u=[],this.v=null,this.w=R.location,this.x=this.w&&this.w.href,this.y();for(var a in this.p)this.q[a]=this.p[a]}var g=a(8),h=a(9),i=a(10),j=a(3),k=a(7),l=k.isErrorEvent,m=k.isDOMError,n=k.isDOMException,o=k.isError,p=k.isObject,q=k.isPlainObject,r=k.isUndefined,s=k.isFunction,t=k.isString,u=k.isArray,v=k.isEmptyObject,w=k.each,x=k.objectMerge,y=k.truncate,z=k.objectFrozen,A=k.hasKey,B=k.joinRegExp,C=k.urlencode,D=k.uuid4,E=k.htmlTreeAsString,F=k.isSameException,G=k.isSameStacktrace,H=k.parseUrl,I=k.fill,J=k.supportsFetch,K=k.supportsReferrerPolicy,L=k.serializeKeysForMessage,M=k.serializeException,N=k.sanitize,O=a(4).wrapMethod,P="source protocol user pass host port path".split(" "),Q=/^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/,R="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},S=R.document,T=R.navigator;f.prototype={VERSION:"3.25.2",debug:!1,TraceKit:g,config:function(a,b){var c=this;if(c.g)return this.z("error","Error: Raven has already been configured"),c;if(!a)return c;var d=c.k;b&&w(b,function(a,b){"tags"===a||"extra"===a||"user"===a?c.j[a]=b:d[a]=b}),c.setDSN(a),d.ignoreErrors.push(/^Script error\.?$/),d.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/),d.ignoreErrors=B(d.ignoreErrors),d.ignoreUrls=!!d.ignoreUrls.length&&B(d.ignoreUrls),d.whitelistUrls=!!d.whitelistUrls.length&&B(d.whitelistUrls),d.includePaths=B(d.includePaths),d.maxBreadcrumbs=Math.max(0,Math.min(d.maxBreadcrumbs||100,100));var e={xhr:!0,console:!0,dom:!0,location:!0,sentry:!0},f=d.autoBreadcrumbs;"[object Object]"==={}.toString.call(f)?f=x(e,f):f!==!1&&(f=e),d.autoBreadcrumbs=f;var h={tryCatch:!0},i=d.instrument;return"[object Object]"==={}.toString.call(i)?i=x(h,i):i!==!1&&(i=h),d.instrument=i,g.collectWindowErrors=!!d.collectWindowErrors,c},install:function(){var a=this;return a.isSetup()&&!a.n&&(g.report.subscribe(function(){a.A.apply(a,arguments)}),a.k.captureUnhandledRejections&&a.B(),a.C(),a.k.instrument&&a.k.instrument.tryCatch&&a.D(),a.k.autoBreadcrumbs&&a.E(),a.F(),a.n=!0),Error.stackTraceLimit=a.k.stackTraceLimit,this},setDSN:function(a){var b=this,c=b.G(a),d=c.path.lastIndexOf("/"),e=c.path.substr(1,d);b.H=a,b.h=c.user,b.I=c.pass&&c.pass.substr(1),b.i=c.path.substr(d+1),b.g=b.J(c),b.K=b.g+"/"+e+"api/"+b.i+"/store/",this.y()},context:function(a,b,c){return s(a)&&(c=b||[],b=a,a=void 0),this.wrap(a,b).apply(this,c)},wrap:function(a,b,c){function d(){var d=[],f=arguments.length,g=!a||a&&a.deep!==!1;for(c&&s(c)&&c.apply(this,arguments);f--;)d[f]=g?e.wrap(a,arguments[f]):arguments[f];try{return b.apply(this,d)}catch(h){throw e.L(),e.captureException(h,a),h}}var e=this;if(r(b)&&!s(a))return a;if(s(a)&&(b=a,a=void 0),!s(b))return b;try{if(b.M)return b;if(b.N)return b.N}catch(f){return b}for(var g in b)A(b,g)&&(d[g]=b[g]);return d.prototype=b.prototype,b.N=d,d.M=!0,d.O=b,d},uninstall:function(){return g.report.uninstall(),this.P(),this.Q(),this.R(),this.S(),Error.stackTraceLimit=this.o,this.n=!1,this},T:function(a){this.z("debug","Raven caught unhandled promise rejection:",a),this.captureException(a.reason,{extra:{unhandledPromiseRejection:!0}})},B:function(){return this.T=this.T.bind(this),R.addEventListener&&R.addEventListener("unhandledrejection",this.T),this},P:function(){return R.removeEventListener&&R.removeEventListener("unhandledrejection",this.T),this},captureException:function(a,b){if(b=x({trimHeadFrames:0},b?b:{}),l(a)&&a.error)a=a.error;else{if(m(a)||n(a)){var c=a.name||(m(a)?"DOMError":"DOMException"),d=a.message?c+": "+a.message:c;return this.captureMessage(d,x(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}))}if(o(a))a=a;else{if(!q(a))return this.captureMessage(a,x(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}));b=this.U(b,a),a=new Error(b.message)}}this.d=a;try{var e=g.computeStackTrace(a);this.V(e,b)}catch(f){if(a!==f)throw f}return this},U:function(a,b){var c=Object.keys(b).sort(),d=x(a,{message:"Non-Error exception captured with keys: "+L(c),fingerprint:[i(c)],extra:a.extra||{}});return d.extra.W=M(b),d},captureMessage:function(a,b){if(!this.k.ignoreErrors.test||!this.k.ignoreErrors.test(a)){b=b||{},a+="";var c,d=x({message:a},b);try{throw new Error(a)}catch(e){c=e}c.name=null;var f=g.computeStackTrace(c),h=u(f.stack)&&f.stack[1];h&&"Raven.captureException"===h.func&&(h=f.stack[2]);var i=h&&h.url||"";if((!this.k.ignoreUrls.test||!this.k.ignoreUrls.test(i))&&(!this.k.whitelistUrls.test||this.k.whitelistUrls.test(i))){if(this.k.stacktrace||b&&b.stacktrace){d.fingerprint=null==d.fingerprint?a:d.fingerprint,b=x({trimHeadFrames:0},b),b.trimHeadFrames+=1;var j=this.X(f,b);d.stacktrace={frames:j.reverse()}}return d.fingerprint&&(d.fingerprint=u(d.fingerprint)?d.fingerprint:[d.fingerprint]),this.Y(d),this}}},captureBreadcrumb:function(a){var b=x({timestamp:d()/1e3},a);if(s(this.k.breadcrumbCallback)){var c=this.k.breadcrumbCallback(b);if(p(c)&&!v(c))b=c;else if(c===!1)return this}return this.u.push(b),this.u.length>this.k.maxBreadcrumbs&&this.u.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.r.push([a,b]),this.n&&this.F(),this},setUserContext:function(a){return this.j.user=a,this},setExtraContext:function(a){return this.Z("extra",a),this},setTagsContext:function(a){return this.Z("tags",a),this},clearContext:function(){return this.j={},this},getContext:function(){return JSON.parse(h(this.j))},setEnvironment:function(a){return this.k.environment=a,this},setRelease:function(a){return this.k.release=a,this},setDataCallback:function(a){var b=this.k.dataCallback;return this.k.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.k.breadcrumbCallback;return this.k.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.k.shouldSendCallback;return this.k.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.k.transport=a,this},lastException:function(){return this.d},lastEventId:function(){return this.f},isSetup:function(){return!!this.a&&(!!this.g||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.z("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=R.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(S){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.H;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.j.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.J(this.G(c)),h=S.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(S.head||S.body).appendChild(h)}},L:function(){var a=this;this.m+=1,setTimeout(function(){a.m-=1})},$:function(a,b){var c,d;if(this.b){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),S.createEvent?(c=S.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=S.createEventObject(),c.eventType=a);for(d in b)A(b,d)&&(c[d]=b[d]);if(S.createEvent)S.dispatchEvent(c);else try{S.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},_:function(a){var b=this;return function(c){if(b.aa=null,b.v!==c){b.v=c;var d;try{d=E(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ba:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.aa;g||a._("input")(c),clearTimeout(g),a.aa=setTimeout(function(){a.aa=null},b)}}},ca:function(a,b){var c=H(this.w.href),d=H(b),e=H(a);this.x=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},C:function(){var a=this;a.da=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.M?a.da.apply(this.O,arguments):a.da.apply(this,arguments)}},Q:function(){this.da&&(Function.prototype.toString=this.da)},D:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.ca(b.x,c+""),a.apply(this,arguments)}};I(R.history,"pushState",j,d),I(R.history,"replaceState",j,d)}if(c.console&&"console"in R&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};w(["debug","info","warn","error","log"],function(a,b){O(console,b,k)})}},R:function(){for(var a;this.t.length;){a=this.t.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},S:function(){for(var a in this.q)this.p[a]=this.q[a]},F:function(){var a=this;w(this.r,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},G:function(a){var b=Q.exec(a),c={},d=7;try{for(;d--;)c[P[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.k.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},J:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},A:function(){this.m||this.V.apply(this,arguments)},V:function(a,b){var c=this.X(a,b);this.$("handle",{stackInfo:a,options:b}),this.fa(a.name,a.message,a.url,a.lineno,c,b)},X:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(w(a.stack,function(b,e){var f=c.ga(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.u,0)}),this.j.user&&(a.user=this.j.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),a=this.pa(a),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||v(a[b]))&&delete a[b]}),s(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!v(a)&&(!s(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.ma()?void this.z("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function F(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&l(b))for(c=b.split(/\s+/),f=0;fc?Q(a,b-1):d}function R(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?X:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function S(a,b){function c(a){return m(a)?a.map(function(a){return c(a)}):k(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!m(b)||m(b)&&0===b.length)return a;var d,e=A(b),f="********";try{d=JSON.parse(T(a))}catch(g){return a}return c(d)}var T=a(9),U="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},V=3,W=51200,X=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isDOMError:g,isDOMException:h,isUndefined:i,isFunction:j,isPlainObject:k,isString:l,isArray:m,isEmptyObject:n,supportsErrorEvent:o,supportsDOMError:p,supportsDOMException:q,supportsFetch:r,supportsReferrerPolicy:s,supportsPromiseRejectionEvent:t,wrappedCallback:u,each:v,objectMerge:w,truncate:y,objectFrozen:x,hasKey:z,joinRegExp:A,urlencode:B,uuid4:D,htmlTreeAsString:E,htmlElementAsString:F,isSameException:I,isSameStacktrace:J,parseUrl:C,fill:K,safeJoin:L,serializeException:Q,serializeKeysForMessage:R,sanitize:S}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{9:9}],8:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}function e(){return"undefined"==typeof document||null==document.location?"":(document.location.origin||(document.location.origin=document.location.protocol+"//"+document.location.hostname+(document.location.port?":"+document.location.port:"")),document.location.origin)}var f=a(7),g={collectWindowErrors:!0,debug:!1},h="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},i=[].slice,j="?",k=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;g.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function e(a,b){var c=null;if(!b||g.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(i.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,h,i){var l=null,m=f.isErrorEvent(i)?i.error:i,n=f.isErrorEvent(a)?a.message:a;if(v)g.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&f.isError(m))l=g.computeStackTrace(m),e(l,!0);else{var p,r={url:b,line:c,column:h},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(k);p&&(s=p[1],n=p[2])}r.func=j,l={name:s,message:n,url:d(),stack:[r]},e(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=h.onerror,h.onerror=l,r=!0)}function n(){r&&(h.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,e.apply(null,[a,!1].concat(b))}function p(a,b){var c=i.call(arguments,1);if(v){if(u===a)return;o()}var d=g.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),g.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,f,g=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,h=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,i=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,k=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,l=/\((\S*)(?::(\d+))(?::(\d+))\)/,m=a.stack.split("\n"),n=[],o=(/^(.*) is undefined$/.exec(a.message),0),p=m.length;o eval")>-1;r&&(b=k.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==o||c[5]||"undefined"==typeof a.columnNumber||(n[0].column=a.columnNumber+1),f={url:c[3],func:c[1]||j,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}if(!f.func&&f.line&&(f.func=j),f.url&&"blob:"===f.url.substr(0,5)){var s=new XMLHttpRequest;if(s.open("GET",f.url,!1),s.send(null),200===s.status){var t=s.responseText||"";t=t.slice(-300);var u=t.match(/\/\/# sourceMappingURL=(.*)$/);if(u){var v=u[1];"~"===v.charAt(0)&&(v=e()+v.slice(1)),f.url=v.slice(0,-4)}}}n.push(f)}return n.length?{name:a.name,message:a.message,url:d(),stack:n}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=j),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,e){for(var h,i,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==f&&o!==g.report){ if(i={url:null,func:j,line:null,column:null},o.name?i.func=o.name:(h=k.exec(o.toString()))&&(i.func=h[1]),"undefined"==typeof i.func)try{i.func=h.input.substring(0,h.input.indexOf("{"))}catch(p){}m[""+o]?n=!0:m[""+o]=!0,l.push(i)}e&&l.splice(0,e);var q={name:a.name,message:a.message,url:d(),stack:l};return b(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),q}function f(b,e){var f=null;e=null==e?0:+e;try{if(f=a(b))return f}catch(h){if(g.debug)throw h}try{if(f=c(b,e+1))return f}catch(h){if(g.debug)throw h}return{name:b.name,message:b.message,url:d()}}return f.augmentStackTraceWithInitialElement=b,f.computeStackTraceFromStackProp=a,f}(),b.exports=g}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{7:7}],9:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}],10:[function(a,b,c){function d(a,b){var c=(65535&a)+(65535&b),d=(a>>16)+(b>>16)+(c>>16);return d<<16|65535&c}function e(a,b){return a<>>32-b}function f(a,b,c,f,g,h){return d(e(d(d(b,a),d(f,h)),g),c)}function g(a,b,c,d,e,g,h){return f(b&c|~b&d,a,b,e,g,h)}function h(a,b,c,d,e,g,h){return f(b&d|c&~d,a,b,e,g,h)}function i(a,b,c,d,e,g,h){return f(b^c^d,a,b,e,g,h)}function j(a,b,c,d,e,g,h){return f(c^(b|~d),a,b,e,g,h)}function k(a,b){a[b>>5]|=128<>>9<<4)+14]=b;var c,e,f,k,l,m=1732584193,n=-271733879,o=-1732584194,p=271733878;for(c=0;c>5]>>>b%32&255);return c}function m(a){var b,c=[];for(c[(a.length>>2)-1]=void 0,b=0;b>5]|=(255&a.charCodeAt(b/8))<16&&(e=k(e,8*a.length)),c=0;c<16;c+=1)f[c]=909522486^e[c],g[c]=1549556828^e[c];return d=k(f.concat(m(b)),512+8*b.length),l(k(g.concat(d),640))}function p(a){var b,c,d="0123456789abcdef",e="";for(c=0;c>>4&15)+d.charAt(15&b);return e}function q(a){return unescape(encodeURIComponent(a))}function r(a){return n(q(a))}function s(a){return p(r(a))}function t(a,b){return o(q(a),q(b))}function u(a,b){return p(t(a,b))}function v(a,b,c){return b?c?t(b,a):u(b,a):c?r(a):s(a)}b.exports=v},{}]},{},[6,1,2])(6)}); //# sourceMappingURL=raven.min.js.map \ No newline at end of file diff --git a/dist/require,vue/raven.min.js.map b/dist/require,vue/raven.min.js.map index 0113b4250c02..173b1f64b4fb 100644 --- a/dist/require,vue/raven.min.js.map +++ b/dist/require,vue/raven.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","requirePlugin","wrap","deep","addPlugin","6","2","formatComponentName","vm","$root","name","_isVue","$options","_componentTag","__file","vuePlugin","Vue","config","_oldOnError","errorHandler","error","info","metaData","Object","prototype","toString","componentName","propsData","lifecycleHook","captureException","extra","3","RavenConfigError","message","constructor","4","utils","wrapMethod","console","level","callback","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","msg","safeJoin","data","logger","Function","apply","7","5","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","sanitizeKeys","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isErrorEvent","isDOMError","isDOMException","isError","isObject","isPlainObject","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","sanitize","wrapConsoleMethod","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","dsn","options","_logDebug","globalOptions","key","value","setDSN","push","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","substr","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","context","func","undefined","_before","wrapped","_ignoreNextOnError","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","T","event","reason","unhandledPromiseRejection","B","_promiseRejectionHandler","bind","addEventListener","P","removeEventListener","ex","trimHeadFrames","captureMessage","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","U","currentOptions","exKeys","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","setDataCallback","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","L","setTimeout","$","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","_","evtName","_keypressTimeout","target","category","ba","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","ca","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","C","_originalFunctionToString","Q","D","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","type","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","E","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","R","builtin","S","F","installer","concat","G","str","m","exec","allowSecretKey","J","port","A","V","stackInfo","_triggerEvent","_processException","lineno","X","frame","_normalizeFrame","in_app","ga","stackInfoUrl","normalized","filename","line","colno","column","function","fa","prefixedMessage","exception","values","culprit","ha","request","Referer","breadcrumbs","_trimBreadcrumbs","ia","urlProp","urlProps","ja","httpData","userAgent","User-Agent","referrer","y","_backoffDuration","_backoffStart","ma","na","current","last","oa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Y","baseData","project","platform","_getHttpData","serverName","server_name","_sanitizeData","forEach","random","_sendProcessedPayload","pa","ra","qa","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","sa","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","onerror","open","setRequestHeader","send","ta","hash","evaluated","z","Z","setUser","setReleaseContext","10","8","9","RavenConstructor","_Raven","noConflict","Client","what","supportsErrorEvent","ErrorEvent","supportsDOMError","DOMError","supportsDOMException","DOMException","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","wrappedCallback","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","sanitizeMask","safeInput","o_O","getLocationHref","getLocationOrigin","origin","hostname","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","responseText","sourceMaps","sourceMapAddress","charAt","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","string","raw"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file +{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","requirePlugin","wrap","deep","addPlugin","6","2","formatComponentName","vm","$root","name","_isVue","$options","_componentTag","__file","vuePlugin","Vue","config","_oldOnError","errorHandler","error","info","metaData","Object","prototype","toString","componentName","propsData","lifecycleHook","captureException","extra","3","RavenConfigError","message","constructor","4","utils","wrapMethod","console","level","callback","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","msg","safeJoin","data","logger","Function","apply","7","5","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","sanitizeKeys","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isErrorEvent","isDOMError","isDOMException","isError","isObject","isPlainObject","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","sanitize","wrapConsoleMethod","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","dsn","options","_logDebug","globalOptions","key","value","setDSN","push","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","substr","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","context","func","undefined","_before","wrapped","_ignoreNextOnError","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","T","event","reason","unhandledPromiseRejection","B","_promiseRejectionHandler","bind","addEventListener","P","removeEventListener","ex","trimHeadFrames","captureMessage","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","U","currentOptions","exKeys","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","setDataCallback","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","L","setTimeout","$","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","_","evtName","_keypressTimeout","target","category","ba","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","ca","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","C","_originalFunctionToString","Q","D","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","type","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","E","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","R","builtin","S","F","installer","concat","G","str","m","exec","allowSecretKey","J","port","A","V","stackInfo","_triggerEvent","_processException","lineno","X","frame","_normalizeFrame","in_app","ga","stackInfoUrl","normalized","filename","line","colno","column","function","fa","prefixedMessage","exception","values","transaction","ha","request","Referer","breadcrumbs","_trimBreadcrumbs","ia","urlProp","urlProps","ja","httpData","userAgent","User-Agent","referrer","y","_backoffDuration","_backoffStart","ma","na","current","last","oa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Y","baseData","project","platform","_getHttpData","serverName","server_name","_sanitizeData","forEach","random","_sendProcessedPayload","pa","ra","qa","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","sa","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","onerror","open","setRequestHeader","send","ta","hash","evaluated","z","Z","setUser","setReleaseContext","10","8","9","RavenConstructor","_Raven","noConflict","Client","what","supportsErrorEvent","ErrorEvent","supportsDOMError","DOMError","supportsDOMException","DOMException","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","wrappedCallback","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","sanitizeMask","safeInput","o_O","getLocationHref","getLocationOrigin","origin","hostname","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","responseText","sourceMaps","sourceMapAddress","charAt","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","string","raw"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file diff --git a/dist/require/raven.js b/dist/require/raven.js index aa29ce0567f3..63ae83c34297 100644 --- a/dist/require/raven.js +++ b/dist/require/raven.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.25.1 (b6f3c7a) | github.com/getsentry/raven-js */ +/*! Raven.js 3.25.2 (30b6d4e) | github.com/getsentry/raven-js */ /* * Includes TraceKit @@ -134,7 +134,11 @@ function now() { var _window = typeof window !== 'undefined' ? window - : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; + : typeof global !== 'undefined' + ? global + : typeof self !== 'undefined' + ? self + : {}; var _document = _window.document; var _navigator = _window.navigator; @@ -224,7 +228,7 @@ Raven.prototype = { // webpack (using a build step causes webpack #1617). Grunt verifies that // this value matches package.json during build. // See: https://github.com/getsentry/raven-js/issues/465 - VERSION: '3.25.1', + VERSION: '3.25.2', debug: false, @@ -1780,7 +1784,7 @@ Raven.prototype = { } ] }, - culprit: fileurl + transaction: fileurl }, options ); @@ -1895,7 +1899,7 @@ Raven.prototype = { if ( !last || current.message !== last.message || // defined for captureMessage - current.culprit !== last.culprit // defined for captureException/onerror + current.transaction !== last.transaction // defined for captureException/onerror ) return false; diff --git a/dist/require/raven.min.js b/dist/require/raven.min.js index d7dd3457a545..d00d6e4fa03f 100644 --- a/dist/require/raven.min.js +++ b/dist/require/raven.min.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.25.1 (b6f3c7a) | github.com/getsentry/raven-js */ -!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.Raven=a()}}(function(){var a;return function b(a,c,d){function e(g,h){if(!c[g]){if(!a[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};a[g][0].call(k.exports,function(b){var c=a[g][1][b];return e(c?c:b)},k,k.exports,b,a,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;gthis.k.maxBreadcrumbs&&this.u.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.r.push([a,b]),this.n&&this.F(),this},setUserContext:function(a){return this.j.user=a,this},setExtraContext:function(a){return this.Z("extra",a),this},setTagsContext:function(a){return this.Z("tags",a),this},clearContext:function(){return this.j={},this},getContext:function(){return JSON.parse(h(this.j))},setEnvironment:function(a){return this.k.environment=a,this},setRelease:function(a){return this.k.release=a,this},setDataCallback:function(a){var b=this.k.dataCallback;return this.k.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.k.breadcrumbCallback;return this.k.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.k.shouldSendCallback;return this.k.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.k.transport=a,this},lastException:function(){return this.d},lastEventId:function(){return this.f},isSetup:function(){return!!this.a&&(!!this.g||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.z("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=R.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(S){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.H;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.j.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.J(this.G(c)),h=S.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(S.head||S.body).appendChild(h)}},L:function(){var a=this;this.m+=1,setTimeout(function(){a.m-=1})},$:function(a,b){var c,d;if(this.b){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),S.createEvent?(c=S.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=S.createEventObject(),c.eventType=a);for(d in b)A(b,d)&&(c[d]=b[d]);if(S.createEvent)S.dispatchEvent(c);else try{S.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},_:function(a){var b=this;return function(c){if(b.aa=null,b.v!==c){b.v=c;var d;try{d=E(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ba:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.aa;g||a._("input")(c),clearTimeout(g),a.aa=setTimeout(function(){a.aa=null},b)}}},ca:function(a,b){var c=H(this.w.href),d=H(b),e=H(a);this.x=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},C:function(){var a=this;a.da=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.M?a.da.apply(this.O,arguments):a.da.apply(this,arguments)}},Q:function(){this.da&&(Function.prototype.toString=this.da)},D:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.ca(b.x,c+""),a.apply(this,arguments)}};I(R.history,"pushState",j,d),I(R.history,"replaceState",j,d)}if(c.console&&"console"in R&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};w(["debug","info","warn","error","log"],function(a,b){O(console,b,k)})}},R:function(){for(var a;this.t.length;){a=this.t.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},S:function(){for(var a in this.q)this.p[a]=this.q[a]},F:function(){var a=this;w(this.r,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},G:function(a){var b=Q.exec(a),c={},d=7;try{for(;d--;)c[P[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.k.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},J:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},A:function(){this.m||this.V.apply(this,arguments)},V:function(a,b){var c=this.X(a,b);this.$("handle",{stackInfo:a,options:b}),this.fa(a.name,a.message,a.url,a.lineno,c,b)},X:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(w(a.stack,function(b,e){var f=c.ga(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.u,0)}),this.j.user&&(a.user=this.j.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),a=this.pa(a),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||v(a[b]))&&delete a[b]}),s(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!v(a)&&(!s(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.ma()?void this.z("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function F(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&l(b))for(c=b.split(/\s+/),f=0;fc?Q(a,b-1):d}function R(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?X:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function S(a,b){function c(a){return m(a)?a.map(function(a){return c(a)}):k(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!m(b)||m(b)&&0===b.length)return a;var d,e=A(b),f="********";try{d=JSON.parse(T(a))}catch(g){return a}return c(d)}var T=a(8),U="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},V=3,W=51200,X=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isDOMError:g,isDOMException:h,isUndefined:i,isFunction:j,isPlainObject:k,isString:l,isArray:m,isEmptyObject:n,supportsErrorEvent:o,supportsDOMError:p,supportsDOMException:q,supportsFetch:r,supportsReferrerPolicy:s,supportsPromiseRejectionEvent:t,wrappedCallback:u,each:v,objectMerge:w,truncate:y,objectFrozen:x,hasKey:z,joinRegExp:A,urlencode:B,uuid4:D,htmlTreeAsString:E,htmlElementAsString:F,isSameException:I,isSameStacktrace:J,parseUrl:C,fill:K,safeJoin:L,serializeException:Q,serializeKeysForMessage:R,sanitize:S}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{8:8}],7:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}function e(){return"undefined"==typeof document||null==document.location?"":(document.location.origin||(document.location.origin=document.location.protocol+"//"+document.location.hostname+(document.location.port?":"+document.location.port:"")),document.location.origin)}var f=a(6),g={collectWindowErrors:!0,debug:!1},h="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},i=[].slice,j="?",k=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;g.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function e(a,b){var c=null;if(!b||g.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(i.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,h,i){var l=null,m=f.isErrorEvent(i)?i.error:i,n=f.isErrorEvent(a)?a.message:a;if(v)g.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&f.isError(m))l=g.computeStackTrace(m),e(l,!0);else{var p,r={url:b,line:c,column:h},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(k);p&&(s=p[1],n=p[2])}r.func=j,l={name:s,message:n,url:d(),stack:[r]},e(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=h.onerror,h.onerror=l,r=!0)}function n(){r&&(h.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,e.apply(null,[a,!1].concat(b))}function p(a,b){var c=i.call(arguments,1);if(v){if(u===a)return;o()}var d=g.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),g.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,f,g=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,h=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,i=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,k=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,l=/\((\S*)(?::(\d+))(?::(\d+))\)/,m=a.stack.split("\n"),n=[],o=(/^(.*) is undefined$/.exec(a.message),0),p=m.length;o eval")>-1;r&&(b=k.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==o||c[5]||"undefined"==typeof a.columnNumber||(n[0].column=a.columnNumber+1),f={url:c[3],func:c[1]||j,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}if(!f.func&&f.line&&(f.func=j),f.url&&"blob:"===f.url.substr(0,5)){var s=new XMLHttpRequest;if(s.open("GET",f.url,!1),s.send(null),200===s.status){var t=s.responseText||"";t=t.slice(-300);var u=t.match(/\/\/# sourceMappingURL=(.*)$/);if(u){var v=u[1];"~"===v.charAt(0)&&(v=e()+v.slice(1)),f.url=v.slice(0,-4)}}}n.push(f)}return n.length?{name:a.name,message:a.message,url:d(),stack:n}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=j),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,e){for(var h,i,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==f&&o!==g.report){if(i={url:null,func:j,line:null,column:null},o.name?i.func=o.name:(h=k.exec(o.toString()))&&(i.func=h[1]),"undefined"==typeof i.func)try{i.func=h.input.substring(0,h.input.indexOf("{"))}catch(p){}m[""+o]?n=!0:m[""+o]=!0,l.push(i)}e&&l.splice(0,e);var q={name:a.name,message:a.message,url:d(),stack:l};return b(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),q}function f(b,e){var f=null;e=null==e?0:+e;try{if(f=a(b))return f}catch(h){if(g.debug)throw h}try{if(f=c(b,e+1))return f}catch(h){if(g.debug)throw h; -}return{name:b.name,message:b.message,url:d()}}return f.augmentStackTraceWithInitialElement=b,f.computeStackTraceFromStackProp=a,f}(),b.exports=g}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{6:6}],8:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}],9:[function(a,b,c){function d(a,b){var c=(65535&a)+(65535&b),d=(a>>16)+(b>>16)+(c>>16);return d<<16|65535&c}function e(a,b){return a<>>32-b}function f(a,b,c,f,g,h){return d(e(d(d(b,a),d(f,h)),g),c)}function g(a,b,c,d,e,g,h){return f(b&c|~b&d,a,b,e,g,h)}function h(a,b,c,d,e,g,h){return f(b&d|c&~d,a,b,e,g,h)}function i(a,b,c,d,e,g,h){return f(b^c^d,a,b,e,g,h)}function j(a,b,c,d,e,g,h){return f(c^(b|~d),a,b,e,g,h)}function k(a,b){a[b>>5]|=128<>>9<<4)+14]=b;var c,e,f,k,l,m=1732584193,n=-271733879,o=-1732584194,p=271733878;for(c=0;c>5]>>>b%32&255);return c}function m(a){var b,c=[];for(c[(a.length>>2)-1]=void 0,b=0;b>5]|=(255&a.charCodeAt(b/8))<16&&(e=k(e,8*a.length)),c=0;c<16;c+=1)f[c]=909522486^e[c],g[c]=1549556828^e[c];return d=k(f.concat(m(b)),512+8*b.length),l(k(g.concat(d),640))}function p(a){var b,c,d="0123456789abcdef",e="";for(c=0;c>>4&15)+d.charAt(15&b);return e}function q(a){return unescape(encodeURIComponent(a))}function r(a){return n(q(a))}function s(a){return p(r(a))}function t(a,b){return o(q(a),q(b))}function u(a,b){return p(t(a,b))}function v(a,b,c){return b?c?t(b,a):u(b,a):c?r(a):s(a)}b.exports=v},{}]},{},[5,1])(5)}); +/*! Raven.js 3.25.2 (30b6d4e) | github.com/getsentry/raven-js */ +!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.Raven=a()}}(function(){var a;return function b(a,c,d){function e(g,h){if(!c[g]){if(!a[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};a[g][0].call(k.exports,function(b){var c=a[g][1][b];return e(c?c:b)},k,k.exports,b,a,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;gthis.k.maxBreadcrumbs&&this.u.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.r.push([a,b]),this.n&&this.F(),this},setUserContext:function(a){return this.j.user=a,this},setExtraContext:function(a){return this.Z("extra",a),this},setTagsContext:function(a){return this.Z("tags",a),this},clearContext:function(){return this.j={},this},getContext:function(){return JSON.parse(h(this.j))},setEnvironment:function(a){return this.k.environment=a,this},setRelease:function(a){return this.k.release=a,this},setDataCallback:function(a){var b=this.k.dataCallback;return this.k.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.k.breadcrumbCallback;return this.k.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.k.shouldSendCallback;return this.k.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.k.transport=a,this},lastException:function(){return this.d},lastEventId:function(){return this.f},isSetup:function(){return!!this.a&&(!!this.g||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.z("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=R.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(S){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.H;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.j.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.J(this.G(c)),h=S.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(S.head||S.body).appendChild(h)}},L:function(){var a=this;this.m+=1,setTimeout(function(){a.m-=1})},$:function(a,b){var c,d;if(this.b){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),S.createEvent?(c=S.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=S.createEventObject(),c.eventType=a);for(d in b)A(b,d)&&(c[d]=b[d]);if(S.createEvent)S.dispatchEvent(c);else try{S.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},_:function(a){var b=this;return function(c){if(b.aa=null,b.v!==c){b.v=c;var d;try{d=E(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ba:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.aa;g||a._("input")(c),clearTimeout(g),a.aa=setTimeout(function(){a.aa=null},b)}}},ca:function(a,b){var c=H(this.w.href),d=H(b),e=H(a);this.x=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},C:function(){var a=this;a.da=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.M?a.da.apply(this.O,arguments):a.da.apply(this,arguments)}},Q:function(){this.da&&(Function.prototype.toString=this.da)},D:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.ca(b.x,c+""),a.apply(this,arguments)}};I(R.history,"pushState",j,d),I(R.history,"replaceState",j,d)}if(c.console&&"console"in R&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};w(["debug","info","warn","error","log"],function(a,b){O(console,b,k)})}},R:function(){for(var a;this.t.length;){a=this.t.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},S:function(){for(var a in this.q)this.p[a]=this.q[a]},F:function(){var a=this;w(this.r,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},G:function(a){var b=Q.exec(a),c={},d=7;try{for(;d--;)c[P[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.k.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},J:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},A:function(){this.m||this.V.apply(this,arguments)},V:function(a,b){var c=this.X(a,b);this.$("handle",{stackInfo:a,options:b}),this.fa(a.name,a.message,a.url,a.lineno,c,b)},X:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(w(a.stack,function(b,e){var f=c.ga(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.u,0)}),this.j.user&&(a.user=this.j.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),a=this.pa(a),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||v(a[b]))&&delete a[b]}),s(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!v(a)&&(!s(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.ma()?void this.z("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function F(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&l(b))for(c=b.split(/\s+/),f=0;fc?Q(a,b-1):d}function R(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?X:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function S(a,b){function c(a){return m(a)?a.map(function(a){return c(a)}):k(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!m(b)||m(b)&&0===b.length)return a;var d,e=A(b),f="********";try{d=JSON.parse(T(a))}catch(g){return a}return c(d)}var T=a(8),U="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},V=3,W=51200,X=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isDOMError:g,isDOMException:h,isUndefined:i,isFunction:j,isPlainObject:k,isString:l,isArray:m,isEmptyObject:n,supportsErrorEvent:o,supportsDOMError:p,supportsDOMException:q,supportsFetch:r,supportsReferrerPolicy:s,supportsPromiseRejectionEvent:t,wrappedCallback:u,each:v,objectMerge:w,truncate:y,objectFrozen:x,hasKey:z,joinRegExp:A,urlencode:B,uuid4:D,htmlTreeAsString:E,htmlElementAsString:F,isSameException:I,isSameStacktrace:J,parseUrl:C,fill:K,safeJoin:L,serializeException:Q,serializeKeysForMessage:R,sanitize:S}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{8:8}],7:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}function e(){return"undefined"==typeof document||null==document.location?"":(document.location.origin||(document.location.origin=document.location.protocol+"//"+document.location.hostname+(document.location.port?":"+document.location.port:"")),document.location.origin)}var f=a(6),g={collectWindowErrors:!0,debug:!1},h="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},i=[].slice,j="?",k=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;g.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function e(a,b){var c=null;if(!b||g.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(i.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,h,i){var l=null,m=f.isErrorEvent(i)?i.error:i,n=f.isErrorEvent(a)?a.message:a;if(v)g.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&f.isError(m))l=g.computeStackTrace(m),e(l,!0);else{var p,r={url:b,line:c,column:h},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(k);p&&(s=p[1],n=p[2])}r.func=j,l={name:s,message:n,url:d(),stack:[r]},e(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=h.onerror,h.onerror=l,r=!0)}function n(){r&&(h.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,e.apply(null,[a,!1].concat(b))}function p(a,b){var c=i.call(arguments,1);if(v){if(u===a)return;o()}var d=g.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),g.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,f,g=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,h=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,i=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,k=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,l=/\((\S*)(?::(\d+))(?::(\d+))\)/,m=a.stack.split("\n"),n=[],o=(/^(.*) is undefined$/.exec(a.message),0),p=m.length;o eval")>-1;r&&(b=k.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==o||c[5]||"undefined"==typeof a.columnNumber||(n[0].column=a.columnNumber+1),f={url:c[3],func:c[1]||j,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}if(!f.func&&f.line&&(f.func=j),f.url&&"blob:"===f.url.substr(0,5)){var s=new XMLHttpRequest;if(s.open("GET",f.url,!1),s.send(null),200===s.status){var t=s.responseText||"";t=t.slice(-300);var u=t.match(/\/\/# sourceMappingURL=(.*)$/);if(u){var v=u[1];"~"===v.charAt(0)&&(v=e()+v.slice(1)),f.url=v.slice(0,-4)}}}n.push(f)}return n.length?{name:a.name,message:a.message,url:d(),stack:n}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=j),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,e){for(var h,i,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==f&&o!==g.report){if(i={url:null,func:j,line:null,column:null},o.name?i.func=o.name:(h=k.exec(o.toString()))&&(i.func=h[1]),"undefined"==typeof i.func)try{i.func=h.input.substring(0,h.input.indexOf("{"))}catch(p){}m[""+o]?n=!0:m[""+o]=!0,l.push(i)}e&&l.splice(0,e);var q={name:a.name,message:a.message,url:d(),stack:l};return b(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),q}function f(b,e){var f=null;e=null==e?0:+e;try{if(f=a(b))return f}catch(h){if(g.debug)throw h}try{if(f=c(b,e+1))return f}catch(h){ +if(g.debug)throw h}return{name:b.name,message:b.message,url:d()}}return f.augmentStackTraceWithInitialElement=b,f.computeStackTraceFromStackProp=a,f}(),b.exports=g}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{6:6}],8:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}],9:[function(a,b,c){function d(a,b){var c=(65535&a)+(65535&b),d=(a>>16)+(b>>16)+(c>>16);return d<<16|65535&c}function e(a,b){return a<>>32-b}function f(a,b,c,f,g,h){return d(e(d(d(b,a),d(f,h)),g),c)}function g(a,b,c,d,e,g,h){return f(b&c|~b&d,a,b,e,g,h)}function h(a,b,c,d,e,g,h){return f(b&d|c&~d,a,b,e,g,h)}function i(a,b,c,d,e,g,h){return f(b^c^d,a,b,e,g,h)}function j(a,b,c,d,e,g,h){return f(c^(b|~d),a,b,e,g,h)}function k(a,b){a[b>>5]|=128<>>9<<4)+14]=b;var c,e,f,k,l,m=1732584193,n=-271733879,o=-1732584194,p=271733878;for(c=0;c>5]>>>b%32&255);return c}function m(a){var b,c=[];for(c[(a.length>>2)-1]=void 0,b=0;b>5]|=(255&a.charCodeAt(b/8))<16&&(e=k(e,8*a.length)),c=0;c<16;c+=1)f[c]=909522486^e[c],g[c]=1549556828^e[c];return d=k(f.concat(m(b)),512+8*b.length),l(k(g.concat(d),640))}function p(a){var b,c,d="0123456789abcdef",e="";for(c=0;c>>4&15)+d.charAt(15&b);return e}function q(a){return unescape(encodeURIComponent(a))}function r(a){return n(q(a))}function s(a){return p(r(a))}function t(a,b){return o(q(a),q(b))}function u(a,b){return p(t(a,b))}function v(a,b,c){return b?c?t(b,a):u(b,a):c?r(a):s(a)}b.exports=v},{}]},{},[5,1])(5)}); //# sourceMappingURL=raven.min.js.map \ No newline at end of file diff --git a/dist/require/raven.min.js.map b/dist/require/raven.min.js.map index 05cbe9a4cacf..6205b801cbc6 100644 --- a/dist/require/raven.min.js.map +++ b/dist/require/raven.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","requirePlugin","wrap","deep","addPlugin","5","2","RavenConfigError","message","name","prototype","constructor","3","utils","wrapMethod","console","level","callback","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","msg","safeJoin","data","logger","extra","Function","apply","6","4","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","sanitizeKeys","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isErrorEvent","isDOMError","isDOMException","isError","isObject","isPlainObject","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","sanitize","wrapConsoleMethod","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","config","dsn","options","_logDebug","globalOptions","key","value","setDSN","push","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","toString","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","substr","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","context","func","undefined","_before","wrapped","_ignoreNextOnError","captureException","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","T","event","reason","unhandledPromiseRejection","B","_promiseRejectionHandler","bind","addEventListener","P","removeEventListener","ex","trimHeadFrames","error","captureMessage","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","U","currentOptions","exKeys","Object","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","setDataCallback","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","L","setTimeout","$","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","_","evtName","_keypressTimeout","target","category","ba","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","ca","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","C","_originalFunctionToString","Q","D","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","type","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","E","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","R","builtin","S","F","installer","concat","G","str","m","exec","allowSecretKey","J","port","A","V","stackInfo","_triggerEvent","_processException","lineno","X","frame","_normalizeFrame","in_app","ga","stackInfoUrl","normalized","filename","line","colno","column","function","fa","prefixedMessage","exception","values","culprit","ha","request","Referer","breadcrumbs","_trimBreadcrumbs","ia","urlProp","urlProps","ja","httpData","userAgent","User-Agent","referrer","y","_backoffDuration","_backoffStart","ma","na","current","last","oa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Y","baseData","project","platform","_getHttpData","serverName","server_name","_sanitizeData","forEach","random","_sendProcessedPayload","pa","ra","qa","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","sa","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","onerror","open","setRequestHeader","send","ta","hash","evaluated","z","Z","setUser","setReleaseContext","7","8","9","RavenConstructor","_Raven","noConflict","Client","what","supportsErrorEvent","ErrorEvent","supportsDOMError","DOMError","supportsDOMException","DOMException","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","wrappedCallback","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","sanitizeMask","safeInput","o_O","getLocationHref","getLocationOrigin","origin","hostname","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","responseText","sourceMaps","sourceMapAddress","charAt","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","string","raw"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file +{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","requirePlugin","wrap","deep","addPlugin","5","2","RavenConfigError","message","name","prototype","constructor","3","utils","wrapMethod","console","level","callback","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","msg","safeJoin","data","logger","extra","Function","apply","6","4","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","sanitizeKeys","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isErrorEvent","isDOMError","isDOMException","isError","isObject","isPlainObject","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","sanitize","wrapConsoleMethod","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","config","dsn","options","_logDebug","globalOptions","key","value","setDSN","push","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","toString","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","substr","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","context","func","undefined","_before","wrapped","_ignoreNextOnError","captureException","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","T","event","reason","unhandledPromiseRejection","B","_promiseRejectionHandler","bind","addEventListener","P","removeEventListener","ex","trimHeadFrames","error","captureMessage","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","U","currentOptions","exKeys","Object","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","setDataCallback","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","L","setTimeout","$","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","_","evtName","_keypressTimeout","target","category","ba","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","ca","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","C","_originalFunctionToString","Q","D","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","type","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","E","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","R","builtin","S","F","installer","concat","G","str","m","exec","allowSecretKey","J","port","A","V","stackInfo","_triggerEvent","_processException","lineno","X","frame","_normalizeFrame","in_app","ga","stackInfoUrl","normalized","filename","line","colno","column","function","fa","prefixedMessage","exception","values","transaction","ha","request","Referer","breadcrumbs","_trimBreadcrumbs","ia","urlProp","urlProps","ja","httpData","userAgent","User-Agent","referrer","y","_backoffDuration","_backoffStart","ma","na","current","last","oa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Y","baseData","project","platform","_getHttpData","serverName","server_name","_sanitizeData","forEach","random","_sendProcessedPayload","pa","ra","qa","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","sa","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","onerror","open","setRequestHeader","send","ta","hash","evaluated","z","Z","setUser","setReleaseContext","7","8","9","RavenConstructor","_Raven","noConflict","Client","what","supportsErrorEvent","ErrorEvent","supportsDOMError","DOMError","supportsDOMException","DOMException","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","wrappedCallback","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","sanitizeMask","safeInput","o_O","getLocationHref","getLocationOrigin","origin","hostname","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","responseText","sourceMaps","sourceMapAddress","charAt","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","string","raw"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file diff --git a/dist/sri.json b/dist/sri.json index 3b46bc8f329c..a2df4983cc63 100644 --- a/dist/sri.json +++ b/dist/sri.json @@ -1,20 +1,20 @@ { "@dist/raven.js": { "hashes": { - "sha256": "nOK5CiXjNxCdlH/653GY4VD01NjvEzYS03YP3ihd+P4=", - "sha512": "EfmQv6a8YntEg4a6bcyKMFKR03CbM3K2t+iLFzZlVW1627yi/r0kngNj+7Fqdejn1+s/wGOyKmIJi6VlCtXDYQ==" + "sha256": "NDcZn1uYcTrBUrV+Tj2Bmy/4cEBbrT9at3gCf1/C2Do=", + "sha512": "EwcTPu3VxfY0QRHe1Rhgc2CQ4YSCoDU3AnvRwPtrcFfBdNjjMH6slp+RAAATRkuixo9EnAQU6GlDeY1gxjDgMQ==" }, "type": null, - "integrity": "sha256-nOK5CiXjNxCdlH/653GY4VD01NjvEzYS03YP3ihd+P4= sha512-EfmQv6a8YntEg4a6bcyKMFKR03CbM3K2t+iLFzZlVW1627yi/r0kngNj+7Fqdejn1+s/wGOyKmIJi6VlCtXDYQ==", + "integrity": "sha256-NDcZn1uYcTrBUrV+Tj2Bmy/4cEBbrT9at3gCf1/C2Do= sha512-EwcTPu3VxfY0QRHe1Rhgc2CQ4YSCoDU3AnvRwPtrcFfBdNjjMH6slp+RAAATRkuixo9EnAQU6GlDeY1gxjDgMQ==", "path": "dist/raven.js" }, "@dist/raven.min.js": { "hashes": { - "sha256": "1zNq1n53B28kCJcIRi1+VN2Y+3/NrNBDH+hx5PiE0yg=", - "sha512": "nMKRkZ6Po8gjj2suKnMfcAeV/sd7FlskIa8vUd3vqrANsVBvo8uqeff9L2saHv8EXQRLa9LiexpJeK/cJ1mJVg==" + "sha256": "J7gOlA8MDnRhSTWtoQkf9MCKFZwQxNxNV28+1WyJFsA=", + "sha512": "oOD6LYrFG4UUX2mi0tvPF9F5c5VLLec59y/VHJ9BYsxdtjOZJrmISgzBh19twx0wnt7Nvlb1BijKtfGQfs1Yrw==" }, "type": null, - "integrity": "sha256-1zNq1n53B28kCJcIRi1+VN2Y+3/NrNBDH+hx5PiE0yg= sha512-nMKRkZ6Po8gjj2suKnMfcAeV/sd7FlskIa8vUd3vqrANsVBvo8uqeff9L2saHv8EXQRLa9LiexpJeK/cJ1mJVg==", + "integrity": "sha256-J7gOlA8MDnRhSTWtoQkf9MCKFZwQxNxNV28+1WyJFsA= sha512-oOD6LYrFG4UUX2mi0tvPF9F5c5VLLec59y/VHJ9BYsxdtjOZJrmISgzBh19twx0wnt7Nvlb1BijKtfGQfs1Yrw==", "path": "dist/raven.min.js" } } \ No newline at end of file diff --git a/dist/vue/raven.js b/dist/vue/raven.js index 8ed49da21bf8..feb2f77a4211 100644 --- a/dist/vue/raven.js +++ b/dist/vue/raven.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.25.1 (b6f3c7a) | github.com/getsentry/raven-js */ +/*! Raven.js 3.25.2 (30b6d4e) | github.com/getsentry/raven-js */ /* * Includes TraceKit @@ -167,7 +167,11 @@ function now() { var _window = typeof window !== 'undefined' ? window - : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; + : typeof global !== 'undefined' + ? global + : typeof self !== 'undefined' + ? self + : {}; var _document = _window.document; var _navigator = _window.navigator; @@ -257,7 +261,7 @@ Raven.prototype = { // webpack (using a build step causes webpack #1617). Grunt verifies that // this value matches package.json during build. // See: https://github.com/getsentry/raven-js/issues/465 - VERSION: '3.25.1', + VERSION: '3.25.2', debug: false, @@ -1813,7 +1817,7 @@ Raven.prototype = { } ] }, - culprit: fileurl + transaction: fileurl }, options ); @@ -1928,7 +1932,7 @@ Raven.prototype = { if ( !last || current.message !== last.message || // defined for captureMessage - current.culprit !== last.culprit // defined for captureException/onerror + current.transaction !== last.transaction // defined for captureException/onerror ) return false; diff --git a/dist/vue/raven.min.js b/dist/vue/raven.min.js index 5bd051eb9fa2..2da42258df50 100644 --- a/dist/vue/raven.min.js +++ b/dist/vue/raven.min.js @@ -1,4 +1,4 @@ -/*! Raven.js 3.25.1 (b6f3c7a) | github.com/getsentry/raven-js */ -!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.Raven=a()}}(function(){return function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};b[g][0].call(k.exports,function(a){var c=b[g][1][a];return e(c?c:a)},k,k.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;g":"anonymous component")+(a._isVue&&a.$options.__file?" at "+a.$options.__file:"")}function e(a,b){if(b=b||window.Vue,b&&b.config){var c=b.config.errorHandler;b.config.errorHandler=function(b,e,f){var g={};"[object Object]"===Object.prototype.toString.call(e)&&(g.componentName=d(e),g.propsData=e.$options.propsData),"undefined"!=typeof f&&(g.lifecycleHook=f),a.captureException(b,{extra:g}),"function"==typeof c&&c.call(this,b,e,f)}}}b.exports=e,a(5).addPlugin(b.exports)},{5:5}],2:[function(a,b,c){function d(a){this.name="RavenConfigError",this.message=a}d.prototype=new Error,d.prototype.constructor=d,b.exports=d},{}],3:[function(a,b,c){var d=a(6),e=function(a,b,c){var e=a[b],f=a;if(b in a){var g="warn"===b?"warning":b;a[b]=function(){var a=[].slice.call(arguments),h=d.safeJoin(a," "),i={level:g,logger:"console",extra:{arguments:a}};"assert"===b?a[0]===!1&&(h="Assertion failed: "+(d.safeJoin(a.slice(1)," ")||"console.assert"),i.extra.arguments=a.slice(1),c&&c(h,i)):c&&c(h,i),e&&Function.prototype.apply.call(e,f,a)}}};b.exports={wrapMethod:e}},{6:6}],4:[function(a,b,c){(function(c){function d(){return+new Date}function e(a,b){return s(b)?function(c){return b(c,a)}:b}function f(){this.a=!("object"!=typeof JSON||!JSON.stringify),this.b=!r(S),this.c=!r(T),this.d=null,this.e=null,this.f=null,this.g=null,this.h=null,this.i=null,this.j={},this.k={release:R.SENTRY_RELEASE&&R.SENTRY_RELEASE.id,logger:"javascript",ignoreErrors:[],ignoreUrls:[],whitelistUrls:[],includePaths:[],headers:null,collectWindowErrors:!0,captureUnhandledRejections:!0,maxMessageLength:0,maxUrlLength:250,stackTraceLimit:50,autoBreadcrumbs:!0,instrument:!0,sampleRate:1,sanitizeKeys:[]},this.l={method:"POST",keepalive:!0,referrerPolicy:K()?"origin":""},this.m=0,this.n=!1,this.o=Error.stackTraceLimit,this.p=R.console||{},this.q={},this.r=[],this.s=d(),this.t=[],this.u=[],this.v=null,this.w=R.location,this.x=this.w&&this.w.href,this.y();for(var a in this.p)this.q[a]=this.p[a]}var g=a(7),h=a(8),i=a(9),j=a(2),k=a(6),l=k.isErrorEvent,m=k.isDOMError,n=k.isDOMException,o=k.isError,p=k.isObject,q=k.isPlainObject,r=k.isUndefined,s=k.isFunction,t=k.isString,u=k.isArray,v=k.isEmptyObject,w=k.each,x=k.objectMerge,y=k.truncate,z=k.objectFrozen,A=k.hasKey,B=k.joinRegExp,C=k.urlencode,D=k.uuid4,E=k.htmlTreeAsString,F=k.isSameException,G=k.isSameStacktrace,H=k.parseUrl,I=k.fill,J=k.supportsFetch,K=k.supportsReferrerPolicy,L=k.serializeKeysForMessage,M=k.serializeException,N=k.sanitize,O=a(3).wrapMethod,P="source protocol user pass host port path".split(" "),Q=/^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/,R="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},S=R.document,T=R.navigator;f.prototype={VERSION:"3.25.1",debug:!1,TraceKit:g,config:function(a,b){var c=this;if(c.g)return this.z("error","Error: Raven has already been configured"),c;if(!a)return c;var d=c.k;b&&w(b,function(a,b){"tags"===a||"extra"===a||"user"===a?c.j[a]=b:d[a]=b}),c.setDSN(a),d.ignoreErrors.push(/^Script error\.?$/),d.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/),d.ignoreErrors=B(d.ignoreErrors),d.ignoreUrls=!!d.ignoreUrls.length&&B(d.ignoreUrls),d.whitelistUrls=!!d.whitelistUrls.length&&B(d.whitelistUrls),d.includePaths=B(d.includePaths),d.maxBreadcrumbs=Math.max(0,Math.min(d.maxBreadcrumbs||100,100));var e={xhr:!0,console:!0,dom:!0,location:!0,sentry:!0},f=d.autoBreadcrumbs;"[object Object]"==={}.toString.call(f)?f=x(e,f):f!==!1&&(f=e),d.autoBreadcrumbs=f;var h={tryCatch:!0},i=d.instrument;return"[object Object]"==={}.toString.call(i)?i=x(h,i):i!==!1&&(i=h),d.instrument=i,g.collectWindowErrors=!!d.collectWindowErrors,c},install:function(){var a=this;return a.isSetup()&&!a.n&&(g.report.subscribe(function(){a.A.apply(a,arguments)}),a.k.captureUnhandledRejections&&a.B(),a.C(),a.k.instrument&&a.k.instrument.tryCatch&&a.D(),a.k.autoBreadcrumbs&&a.E(),a.F(),a.n=!0),Error.stackTraceLimit=a.k.stackTraceLimit,this},setDSN:function(a){var b=this,c=b.G(a),d=c.path.lastIndexOf("/"),e=c.path.substr(1,d);b.H=a,b.h=c.user,b.I=c.pass&&c.pass.substr(1),b.i=c.path.substr(d+1),b.g=b.J(c),b.K=b.g+"/"+e+"api/"+b.i+"/store/",this.y()},context:function(a,b,c){return s(a)&&(c=b||[],b=a,a=void 0),this.wrap(a,b).apply(this,c)},wrap:function(a,b,c){function d(){var d=[],f=arguments.length,g=!a||a&&a.deep!==!1;for(c&&s(c)&&c.apply(this,arguments);f--;)d[f]=g?e.wrap(a,arguments[f]):arguments[f];try{return b.apply(this,d)}catch(h){throw e.L(),e.captureException(h,a),h}}var e=this;if(r(b)&&!s(a))return a;if(s(a)&&(b=a,a=void 0),!s(b))return b;try{if(b.M)return b;if(b.N)return b.N}catch(f){return b}for(var g in b)A(b,g)&&(d[g]=b[g]);return d.prototype=b.prototype,b.N=d,d.M=!0,d.O=b,d},uninstall:function(){return g.report.uninstall(),this.P(),this.Q(),this.R(),this.S(),Error.stackTraceLimit=this.o,this.n=!1,this},T:function(a){this.z("debug","Raven caught unhandled promise rejection:",a),this.captureException(a.reason,{extra:{unhandledPromiseRejection:!0}})},B:function(){return this.T=this.T.bind(this),R.addEventListener&&R.addEventListener("unhandledrejection",this.T),this},P:function(){return R.removeEventListener&&R.removeEventListener("unhandledrejection",this.T),this},captureException:function(a,b){if(b=x({trimHeadFrames:0},b?b:{}),l(a)&&a.error)a=a.error;else{if(m(a)||n(a)){var c=a.name||(m(a)?"DOMError":"DOMException"),d=a.message?c+": "+a.message:c;return this.captureMessage(d,x(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}))}if(o(a))a=a;else{if(!q(a))return this.captureMessage(a,x(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}));b=this.U(b,a),a=new Error(b.message)}}this.d=a;try{var e=g.computeStackTrace(a);this.V(e,b)}catch(f){if(a!==f)throw f}return this},U:function(a,b){var c=Object.keys(b).sort(),d=x(a,{message:"Non-Error exception captured with keys: "+L(c),fingerprint:[i(c)],extra:a.extra||{}});return d.extra.W=M(b),d},captureMessage:function(a,b){if(!this.k.ignoreErrors.test||!this.k.ignoreErrors.test(a)){b=b||{},a+="";var c,d=x({message:a},b);try{throw new Error(a)}catch(e){c=e}c.name=null;var f=g.computeStackTrace(c),h=u(f.stack)&&f.stack[1];h&&"Raven.captureException"===h.func&&(h=f.stack[2]);var i=h&&h.url||"";if((!this.k.ignoreUrls.test||!this.k.ignoreUrls.test(i))&&(!this.k.whitelistUrls.test||this.k.whitelistUrls.test(i))){if(this.k.stacktrace||b&&b.stacktrace){d.fingerprint=null==d.fingerprint?a:d.fingerprint,b=x({trimHeadFrames:0},b),b.trimHeadFrames+=1;var j=this.X(f,b);d.stacktrace={frames:j.reverse()}}return d.fingerprint&&(d.fingerprint=u(d.fingerprint)?d.fingerprint:[d.fingerprint]),this.Y(d),this}}},captureBreadcrumb:function(a){var b=x({timestamp:d()/1e3},a);if(s(this.k.breadcrumbCallback)){var c=this.k.breadcrumbCallback(b);if(p(c)&&!v(c))b=c;else if(c===!1)return this}return this.u.push(b),this.u.length>this.k.maxBreadcrumbs&&this.u.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.r.push([a,b]),this.n&&this.F(),this},setUserContext:function(a){return this.j.user=a,this},setExtraContext:function(a){return this.Z("extra",a),this},setTagsContext:function(a){return this.Z("tags",a),this},clearContext:function(){return this.j={},this},getContext:function(){return JSON.parse(h(this.j))},setEnvironment:function(a){return this.k.environment=a,this},setRelease:function(a){return this.k.release=a,this},setDataCallback:function(a){var b=this.k.dataCallback;return this.k.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.k.breadcrumbCallback;return this.k.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.k.shouldSendCallback;return this.k.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.k.transport=a,this},lastException:function(){return this.d},lastEventId:function(){return this.f},isSetup:function(){return!!this.a&&(!!this.g||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.z("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=R.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(S){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.H;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.j.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.J(this.G(c)),h=S.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(S.head||S.body).appendChild(h)}},L:function(){var a=this;this.m+=1,setTimeout(function(){a.m-=1})},$:function(a,b){var c,d;if(this.b){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),S.createEvent?(c=S.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=S.createEventObject(),c.eventType=a);for(d in b)A(b,d)&&(c[d]=b[d]);if(S.createEvent)S.dispatchEvent(c);else try{S.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},_:function(a){var b=this;return function(c){if(b.aa=null,b.v!==c){b.v=c;var d;try{d=E(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ba:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.aa;g||a._("input")(c),clearTimeout(g),a.aa=setTimeout(function(){a.aa=null},b)}}},ca:function(a,b){var c=H(this.w.href),d=H(b),e=H(a);this.x=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},C:function(){var a=this;a.da=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.M?a.da.apply(this.O,arguments):a.da.apply(this,arguments)}},Q:function(){this.da&&(Function.prototype.toString=this.da)},D:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.ca(b.x,c+""),a.apply(this,arguments)}};I(R.history,"pushState",j,d),I(R.history,"replaceState",j,d)}if(c.console&&"console"in R&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};w(["debug","info","warn","error","log"],function(a,b){O(console,b,k)})}},R:function(){for(var a;this.t.length;){a=this.t.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},S:function(){for(var a in this.q)this.p[a]=this.q[a]},F:function(){var a=this;w(this.r,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},G:function(a){var b=Q.exec(a),c={},d=7;try{for(;d--;)c[P[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.k.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},J:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},A:function(){this.m||this.V.apply(this,arguments)},V:function(a,b){var c=this.X(a,b);this.$("handle",{stackInfo:a,options:b}),this.fa(a.name,a.message,a.url,a.lineno,c,b)},X:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(w(a.stack,function(b,e){var f=c.ga(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.u,0)}),this.j.user&&(a.user=this.j.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),a=this.pa(a),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||v(a[b]))&&delete a[b]}),s(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!v(a)&&(!s(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.ma()?void this.z("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function F(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&l(b))for(c=b.split(/\s+/),f=0;fc?Q(a,b-1):d}function R(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?X:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function S(a,b){function c(a){return m(a)?a.map(function(a){return c(a)}):k(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!m(b)||m(b)&&0===b.length)return a;var d,e=A(b),f="********";try{d=JSON.parse(T(a))}catch(g){return a}return c(d)}var T=a(8),U="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},V=3,W=51200,X=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isDOMError:g,isDOMException:h,isUndefined:i,isFunction:j,isPlainObject:k,isString:l,isArray:m,isEmptyObject:n,supportsErrorEvent:o,supportsDOMError:p,supportsDOMException:q,supportsFetch:r,supportsReferrerPolicy:s,supportsPromiseRejectionEvent:t,wrappedCallback:u,each:v,objectMerge:w,truncate:y,objectFrozen:x,hasKey:z,joinRegExp:A,urlencode:B,uuid4:D,htmlTreeAsString:E,htmlElementAsString:F,isSameException:I,isSameStacktrace:J,parseUrl:C,fill:K,safeJoin:L,serializeException:Q,serializeKeysForMessage:R,sanitize:S}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{8:8}],7:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}function e(){return"undefined"==typeof document||null==document.location?"":(document.location.origin||(document.location.origin=document.location.protocol+"//"+document.location.hostname+(document.location.port?":"+document.location.port:"")),document.location.origin)}var f=a(6),g={collectWindowErrors:!0,debug:!1},h="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},i=[].slice,j="?",k=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;g.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function e(a,b){var c=null;if(!b||g.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(i.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,h,i){var l=null,m=f.isErrorEvent(i)?i.error:i,n=f.isErrorEvent(a)?a.message:a;if(v)g.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&f.isError(m))l=g.computeStackTrace(m),e(l,!0);else{var p,r={url:b,line:c,column:h},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(k);p&&(s=p[1],n=p[2])}r.func=j,l={name:s,message:n,url:d(),stack:[r]},e(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=h.onerror,h.onerror=l,r=!0)}function n(){r&&(h.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,e.apply(null,[a,!1].concat(b))}function p(a,b){var c=i.call(arguments,1);if(v){if(u===a)return;o()}var d=g.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),g.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,f,g=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,h=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,i=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,k=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,l=/\((\S*)(?::(\d+))(?::(\d+))\)/,m=a.stack.split("\n"),n=[],o=(/^(.*) is undefined$/.exec(a.message),0),p=m.length;o eval")>-1;r&&(b=k.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==o||c[5]||"undefined"==typeof a.columnNumber||(n[0].column=a.columnNumber+1),f={url:c[3],func:c[1]||j,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}if(!f.func&&f.line&&(f.func=j),f.url&&"blob:"===f.url.substr(0,5)){var s=new XMLHttpRequest;if(s.open("GET",f.url,!1),s.send(null),200===s.status){var t=s.responseText||"";t=t.slice(-300);var u=t.match(/\/\/# sourceMappingURL=(.*)$/);if(u){var v=u[1];"~"===v.charAt(0)&&(v=e()+v.slice(1)),f.url=v.slice(0,-4)}}}n.push(f)}return n.length?{name:a.name,message:a.message,url:d(),stack:n}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=j),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,e){for(var h,i,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==f&&o!==g.report){if(i={url:null,func:j,line:null,column:null},o.name?i.func=o.name:(h=k.exec(o.toString()))&&(i.func=h[1]), +/*! Raven.js 3.25.2 (30b6d4e) | github.com/getsentry/raven-js */ +!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.Raven=a()}}(function(){return function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};b[g][0].call(k.exports,function(a){var c=b[g][1][a];return e(c?c:a)},k,k.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;g":"anonymous component")+(a._isVue&&a.$options.__file?" at "+a.$options.__file:"")}function e(a,b){if(b=b||window.Vue,b&&b.config){var c=b.config.errorHandler;b.config.errorHandler=function(b,e,f){var g={};"[object Object]"===Object.prototype.toString.call(e)&&(g.componentName=d(e),g.propsData=e.$options.propsData),"undefined"!=typeof f&&(g.lifecycleHook=f),a.captureException(b,{extra:g}),"function"==typeof c&&c.call(this,b,e,f)}}}b.exports=e,a(5).addPlugin(b.exports)},{5:5}],2:[function(a,b,c){function d(a){this.name="RavenConfigError",this.message=a}d.prototype=new Error,d.prototype.constructor=d,b.exports=d},{}],3:[function(a,b,c){var d=a(6),e=function(a,b,c){var e=a[b],f=a;if(b in a){var g="warn"===b?"warning":b;a[b]=function(){var a=[].slice.call(arguments),h=d.safeJoin(a," "),i={level:g,logger:"console",extra:{arguments:a}};"assert"===b?a[0]===!1&&(h="Assertion failed: "+(d.safeJoin(a.slice(1)," ")||"console.assert"),i.extra.arguments=a.slice(1),c&&c(h,i)):c&&c(h,i),e&&Function.prototype.apply.call(e,f,a)}}};b.exports={wrapMethod:e}},{6:6}],4:[function(a,b,c){(function(c){function d(){return+new Date}function e(a,b){return s(b)?function(c){return b(c,a)}:b}function f(){this.a=!("object"!=typeof JSON||!JSON.stringify),this.b=!r(S),this.c=!r(T),this.d=null,this.e=null,this.f=null,this.g=null,this.h=null,this.i=null,this.j={},this.k={release:R.SENTRY_RELEASE&&R.SENTRY_RELEASE.id,logger:"javascript",ignoreErrors:[],ignoreUrls:[],whitelistUrls:[],includePaths:[],headers:null,collectWindowErrors:!0,captureUnhandledRejections:!0,maxMessageLength:0,maxUrlLength:250,stackTraceLimit:50,autoBreadcrumbs:!0,instrument:!0,sampleRate:1,sanitizeKeys:[]},this.l={method:"POST",keepalive:!0,referrerPolicy:K()?"origin":""},this.m=0,this.n=!1,this.o=Error.stackTraceLimit,this.p=R.console||{},this.q={},this.r=[],this.s=d(),this.t=[],this.u=[],this.v=null,this.w=R.location,this.x=this.w&&this.w.href,this.y();for(var a in this.p)this.q[a]=this.p[a]}var g=a(7),h=a(8),i=a(9),j=a(2),k=a(6),l=k.isErrorEvent,m=k.isDOMError,n=k.isDOMException,o=k.isError,p=k.isObject,q=k.isPlainObject,r=k.isUndefined,s=k.isFunction,t=k.isString,u=k.isArray,v=k.isEmptyObject,w=k.each,x=k.objectMerge,y=k.truncate,z=k.objectFrozen,A=k.hasKey,B=k.joinRegExp,C=k.urlencode,D=k.uuid4,E=k.htmlTreeAsString,F=k.isSameException,G=k.isSameStacktrace,H=k.parseUrl,I=k.fill,J=k.supportsFetch,K=k.supportsReferrerPolicy,L=k.serializeKeysForMessage,M=k.serializeException,N=k.sanitize,O=a(3).wrapMethod,P="source protocol user pass host port path".split(" "),Q=/^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/,R="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},S=R.document,T=R.navigator;f.prototype={VERSION:"3.25.2",debug:!1,TraceKit:g,config:function(a,b){var c=this;if(c.g)return this.z("error","Error: Raven has already been configured"),c;if(!a)return c;var d=c.k;b&&w(b,function(a,b){"tags"===a||"extra"===a||"user"===a?c.j[a]=b:d[a]=b}),c.setDSN(a),d.ignoreErrors.push(/^Script error\.?$/),d.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/),d.ignoreErrors=B(d.ignoreErrors),d.ignoreUrls=!!d.ignoreUrls.length&&B(d.ignoreUrls),d.whitelistUrls=!!d.whitelistUrls.length&&B(d.whitelistUrls),d.includePaths=B(d.includePaths),d.maxBreadcrumbs=Math.max(0,Math.min(d.maxBreadcrumbs||100,100));var e={xhr:!0,console:!0,dom:!0,location:!0,sentry:!0},f=d.autoBreadcrumbs;"[object Object]"==={}.toString.call(f)?f=x(e,f):f!==!1&&(f=e),d.autoBreadcrumbs=f;var h={tryCatch:!0},i=d.instrument;return"[object Object]"==={}.toString.call(i)?i=x(h,i):i!==!1&&(i=h),d.instrument=i,g.collectWindowErrors=!!d.collectWindowErrors,c},install:function(){var a=this;return a.isSetup()&&!a.n&&(g.report.subscribe(function(){a.A.apply(a,arguments)}),a.k.captureUnhandledRejections&&a.B(),a.C(),a.k.instrument&&a.k.instrument.tryCatch&&a.D(),a.k.autoBreadcrumbs&&a.E(),a.F(),a.n=!0),Error.stackTraceLimit=a.k.stackTraceLimit,this},setDSN:function(a){var b=this,c=b.G(a),d=c.path.lastIndexOf("/"),e=c.path.substr(1,d);b.H=a,b.h=c.user,b.I=c.pass&&c.pass.substr(1),b.i=c.path.substr(d+1),b.g=b.J(c),b.K=b.g+"/"+e+"api/"+b.i+"/store/",this.y()},context:function(a,b,c){return s(a)&&(c=b||[],b=a,a=void 0),this.wrap(a,b).apply(this,c)},wrap:function(a,b,c){function d(){var d=[],f=arguments.length,g=!a||a&&a.deep!==!1;for(c&&s(c)&&c.apply(this,arguments);f--;)d[f]=g?e.wrap(a,arguments[f]):arguments[f];try{return b.apply(this,d)}catch(h){throw e.L(),e.captureException(h,a),h}}var e=this;if(r(b)&&!s(a))return a;if(s(a)&&(b=a,a=void 0),!s(b))return b;try{if(b.M)return b;if(b.N)return b.N}catch(f){return b}for(var g in b)A(b,g)&&(d[g]=b[g]);return d.prototype=b.prototype,b.N=d,d.M=!0,d.O=b,d},uninstall:function(){return g.report.uninstall(),this.P(),this.Q(),this.R(),this.S(),Error.stackTraceLimit=this.o,this.n=!1,this},T:function(a){this.z("debug","Raven caught unhandled promise rejection:",a),this.captureException(a.reason,{extra:{unhandledPromiseRejection:!0}})},B:function(){return this.T=this.T.bind(this),R.addEventListener&&R.addEventListener("unhandledrejection",this.T),this},P:function(){return R.removeEventListener&&R.removeEventListener("unhandledrejection",this.T),this},captureException:function(a,b){if(b=x({trimHeadFrames:0},b?b:{}),l(a)&&a.error)a=a.error;else{if(m(a)||n(a)){var c=a.name||(m(a)?"DOMError":"DOMException"),d=a.message?c+": "+a.message:c;return this.captureMessage(d,x(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}))}if(o(a))a=a;else{if(!q(a))return this.captureMessage(a,x(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}));b=this.U(b,a),a=new Error(b.message)}}this.d=a;try{var e=g.computeStackTrace(a);this.V(e,b)}catch(f){if(a!==f)throw f}return this},U:function(a,b){var c=Object.keys(b).sort(),d=x(a,{message:"Non-Error exception captured with keys: "+L(c),fingerprint:[i(c)],extra:a.extra||{}});return d.extra.W=M(b),d},captureMessage:function(a,b){if(!this.k.ignoreErrors.test||!this.k.ignoreErrors.test(a)){b=b||{},a+="";var c,d=x({message:a},b);try{throw new Error(a)}catch(e){c=e}c.name=null;var f=g.computeStackTrace(c),h=u(f.stack)&&f.stack[1];h&&"Raven.captureException"===h.func&&(h=f.stack[2]);var i=h&&h.url||"";if((!this.k.ignoreUrls.test||!this.k.ignoreUrls.test(i))&&(!this.k.whitelistUrls.test||this.k.whitelistUrls.test(i))){if(this.k.stacktrace||b&&b.stacktrace){d.fingerprint=null==d.fingerprint?a:d.fingerprint,b=x({trimHeadFrames:0},b),b.trimHeadFrames+=1;var j=this.X(f,b);d.stacktrace={frames:j.reverse()}}return d.fingerprint&&(d.fingerprint=u(d.fingerprint)?d.fingerprint:[d.fingerprint]),this.Y(d),this}}},captureBreadcrumb:function(a){var b=x({timestamp:d()/1e3},a);if(s(this.k.breadcrumbCallback)){var c=this.k.breadcrumbCallback(b);if(p(c)&&!v(c))b=c;else if(c===!1)return this}return this.u.push(b),this.u.length>this.k.maxBreadcrumbs&&this.u.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.r.push([a,b]),this.n&&this.F(),this},setUserContext:function(a){return this.j.user=a,this},setExtraContext:function(a){return this.Z("extra",a),this},setTagsContext:function(a){return this.Z("tags",a),this},clearContext:function(){return this.j={},this},getContext:function(){return JSON.parse(h(this.j))},setEnvironment:function(a){return this.k.environment=a,this},setRelease:function(a){return this.k.release=a,this},setDataCallback:function(a){var b=this.k.dataCallback;return this.k.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.k.breadcrumbCallback;return this.k.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.k.shouldSendCallback;return this.k.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.k.transport=a,this},lastException:function(){return this.d},lastEventId:function(){return this.f},isSetup:function(){return!!this.a&&(!!this.g||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.z("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=R.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(S){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.H;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.j.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.J(this.G(c)),h=S.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(S.head||S.body).appendChild(h)}},L:function(){var a=this;this.m+=1,setTimeout(function(){a.m-=1})},$:function(a,b){var c,d;if(this.b){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),S.createEvent?(c=S.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=S.createEventObject(),c.eventType=a);for(d in b)A(b,d)&&(c[d]=b[d]);if(S.createEvent)S.dispatchEvent(c);else try{S.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},_:function(a){var b=this;return function(c){if(b.aa=null,b.v!==c){b.v=c;var d;try{d=E(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ba:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.aa;g||a._("input")(c),clearTimeout(g),a.aa=setTimeout(function(){a.aa=null},b)}}},ca:function(a,b){var c=H(this.w.href),d=H(b),e=H(a);this.x=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},C:function(){var a=this;a.da=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.M?a.da.apply(this.O,arguments):a.da.apply(this,arguments)}},Q:function(){this.da&&(Function.prototype.toString=this.da)},D:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.ca(b.x,c+""),a.apply(this,arguments)}};I(R.history,"pushState",j,d),I(R.history,"replaceState",j,d)}if(c.console&&"console"in R&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};w(["debug","info","warn","error","log"],function(a,b){O(console,b,k)})}},R:function(){for(var a;this.t.length;){a=this.t.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},S:function(){for(var a in this.q)this.p[a]=this.q[a]},F:function(){var a=this;w(this.r,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},G:function(a){var b=Q.exec(a),c={},d=7;try{for(;d--;)c[P[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.k.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},J:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},A:function(){this.m||this.V.apply(this,arguments)},V:function(a,b){var c=this.X(a,b);this.$("handle",{stackInfo:a,options:b}),this.fa(a.name,a.message,a.url,a.lineno,c,b)},X:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(w(a.stack,function(b,e){var f=c.ga(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.u,0)}),this.j.user&&(a.user=this.j.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),a=this.pa(a),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||v(a[b]))&&delete a[b]}),s(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!v(a)&&(!s(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.ma()?void this.z("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function F(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&l(b))for(c=b.split(/\s+/),f=0;fc?Q(a,b-1):d}function R(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?X:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function S(a,b){function c(a){return m(a)?a.map(function(a){return c(a)}):k(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!m(b)||m(b)&&0===b.length)return a;var d,e=A(b),f="********";try{d=JSON.parse(T(a))}catch(g){return a}return c(d)}var T=a(8),U="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},V=3,W=51200,X=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isDOMError:g,isDOMException:h,isUndefined:i,isFunction:j,isPlainObject:k,isString:l,isArray:m,isEmptyObject:n,supportsErrorEvent:o,supportsDOMError:p,supportsDOMException:q,supportsFetch:r,supportsReferrerPolicy:s,supportsPromiseRejectionEvent:t,wrappedCallback:u,each:v,objectMerge:w,truncate:y,objectFrozen:x,hasKey:z,joinRegExp:A,urlencode:B,uuid4:D,htmlTreeAsString:E,htmlElementAsString:F,isSameException:I,isSameStacktrace:J,parseUrl:C,fill:K,safeJoin:L,serializeException:Q,serializeKeysForMessage:R,sanitize:S}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{8:8}],7:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}function e(){return"undefined"==typeof document||null==document.location?"":(document.location.origin||(document.location.origin=document.location.protocol+"//"+document.location.hostname+(document.location.port?":"+document.location.port:"")),document.location.origin)}var f=a(6),g={collectWindowErrors:!0,debug:!1},h="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},i=[].slice,j="?",k=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;g.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function e(a,b){var c=null;if(!b||g.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(i.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,h,i){var l=null,m=f.isErrorEvent(i)?i.error:i,n=f.isErrorEvent(a)?a.message:a;if(v)g.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&f.isError(m))l=g.computeStackTrace(m),e(l,!0);else{var p,r={url:b,line:c,column:h},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(k);p&&(s=p[1],n=p[2])}r.func=j,l={name:s,message:n,url:d(),stack:[r]},e(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=h.onerror,h.onerror=l,r=!0)}function n(){r&&(h.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,e.apply(null,[a,!1].concat(b))}function p(a,b){var c=i.call(arguments,1);if(v){if(u===a)return;o()}var d=g.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),g.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,f,g=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,h=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,i=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,k=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,l=/\((\S*)(?::(\d+))(?::(\d+))\)/,m=a.stack.split("\n"),n=[],o=(/^(.*) is undefined$/.exec(a.message),0),p=m.length;o eval")>-1;r&&(b=k.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==o||c[5]||"undefined"==typeof a.columnNumber||(n[0].column=a.columnNumber+1),f={url:c[3],func:c[1]||j,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}if(!f.func&&f.line&&(f.func=j),f.url&&"blob:"===f.url.substr(0,5)){var s=new XMLHttpRequest;if(s.open("GET",f.url,!1),s.send(null),200===s.status){var t=s.responseText||"";t=t.slice(-300);var u=t.match(/\/\/# sourceMappingURL=(.*)$/);if(u){var v=u[1];"~"===v.charAt(0)&&(v=e()+v.slice(1)),f.url=v.slice(0,-4)}}}n.push(f)}return n.length?{name:a.name,message:a.message,url:d(),stack:n}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=j),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,e){for(var h,i,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==f&&o!==g.report){if(i={url:null,func:j,line:null,column:null},o.name?i.func=o.name:(h=k.exec(o.toString()))&&(i.func=h[1]), "undefined"==typeof i.func)try{i.func=h.input.substring(0,h.input.indexOf("{"))}catch(p){}m[""+o]?n=!0:m[""+o]=!0,l.push(i)}e&&l.splice(0,e);var q={name:a.name,message:a.message,url:d(),stack:l};return b(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),q}function f(b,e){var f=null;e=null==e?0:+e;try{if(f=a(b))return f}catch(h){if(g.debug)throw h}try{if(f=c(b,e+1))return f}catch(h){if(g.debug)throw h}return{name:b.name,message:b.message,url:d()}}return f.augmentStackTraceWithInitialElement=b,f.computeStackTraceFromStackProp=a,f}(),b.exports=g}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{6:6}],8:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}],9:[function(a,b,c){function d(a,b){var c=(65535&a)+(65535&b),d=(a>>16)+(b>>16)+(c>>16);return d<<16|65535&c}function e(a,b){return a<>>32-b}function f(a,b,c,f,g,h){return d(e(d(d(b,a),d(f,h)),g),c)}function g(a,b,c,d,e,g,h){return f(b&c|~b&d,a,b,e,g,h)}function h(a,b,c,d,e,g,h){return f(b&d|c&~d,a,b,e,g,h)}function i(a,b,c,d,e,g,h){return f(b^c^d,a,b,e,g,h)}function j(a,b,c,d,e,g,h){return f(c^(b|~d),a,b,e,g,h)}function k(a,b){a[b>>5]|=128<>>9<<4)+14]=b;var c,e,f,k,l,m=1732584193,n=-271733879,o=-1732584194,p=271733878;for(c=0;c>5]>>>b%32&255);return c}function m(a){var b,c=[];for(c[(a.length>>2)-1]=void 0,b=0;b>5]|=(255&a.charCodeAt(b/8))<16&&(e=k(e,8*a.length)),c=0;c<16;c+=1)f[c]=909522486^e[c],g[c]=1549556828^e[c];return d=k(f.concat(m(b)),512+8*b.length),l(k(g.concat(d),640))}function p(a){var b,c,d="0123456789abcdef",e="";for(c=0;c>>4&15)+d.charAt(15&b);return e}function q(a){return unescape(encodeURIComponent(a))}function r(a){return n(q(a))}function s(a){return p(r(a))}function t(a,b){return o(q(a),q(b))}function u(a,b){return p(t(a,b))}function v(a,b,c){return b?c?t(b,a):u(b,a):c?r(a):s(a)}b.exports=v},{}]},{},[5,1])(5)}); //# sourceMappingURL=raven.min.js.map \ No newline at end of file diff --git a/dist/vue/raven.min.js.map b/dist/vue/raven.min.js.map index c91b109a4c09..595d441fbc6f 100644 --- a/dist/vue/raven.min.js.map +++ b/dist/vue/raven.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","formatComponentName","vm","$root","name","_isVue","$options","_componentTag","__file","vuePlugin","Vue","config","_oldOnError","errorHandler","error","info","metaData","Object","prototype","toString","componentName","propsData","lifecycleHook","captureException","extra","addPlugin","5","2","RavenConfigError","message","constructor","3","utils","wrapMethod","console","level","callback","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","msg","safeJoin","data","logger","Function","apply","6","4","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","sanitizeKeys","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isErrorEvent","isDOMError","isDOMException","isError","isObject","isPlainObject","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","sanitize","wrapConsoleMethod","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","dsn","options","_logDebug","globalOptions","key","value","setDSN","push","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","substr","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","context","func","undefined","wrap","_before","wrapped","deep","_ignoreNextOnError","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","T","event","reason","unhandledPromiseRejection","B","_promiseRejectionHandler","bind","addEventListener","P","removeEventListener","ex","trimHeadFrames","captureMessage","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","U","currentOptions","exKeys","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","setDataCallback","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","L","setTimeout","$","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","_","evtName","_keypressTimeout","target","category","ba","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","ca","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","C","_originalFunctionToString","Q","D","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","type","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","E","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","R","builtin","S","F","installer","concat","G","str","m","exec","allowSecretKey","J","port","A","V","stackInfo","_triggerEvent","_processException","lineno","X","frame","_normalizeFrame","in_app","ga","stackInfoUrl","normalized","filename","line","colno","column","function","fa","prefixedMessage","exception","values","culprit","ha","request","Referer","breadcrumbs","_trimBreadcrumbs","ia","urlProp","urlProps","ja","httpData","userAgent","User-Agent","referrer","y","_backoffDuration","_backoffStart","ma","na","current","last","oa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Y","baseData","project","platform","_getHttpData","serverName","server_name","_sanitizeData","forEach","random","_sendProcessedPayload","pa","ra","qa","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","sa","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","onerror","open","setRequestHeader","send","ta","hash","evaluated","z","Z","setUser","setReleaseContext","7","8","9","RavenConstructor","_Raven","noConflict","Client","what","supportsErrorEvent","ErrorEvent","supportsDOMError","DOMError","supportsDOMException","DOMException","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","wrappedCallback","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","sanitizeMask","safeInput","o_O","getLocationHref","getLocationOrigin","origin","hostname","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","responseText","sourceMaps","sourceMapAddress","charAt","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","string","raw"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file +{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","formatComponentName","vm","$root","name","_isVue","$options","_componentTag","__file","vuePlugin","Vue","config","_oldOnError","errorHandler","error","info","metaData","Object","prototype","toString","componentName","propsData","lifecycleHook","captureException","extra","addPlugin","5","2","RavenConfigError","message","constructor","3","utils","wrapMethod","console","level","callback","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","msg","safeJoin","data","logger","Function","apply","6","4","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","sanitizeKeys","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isErrorEvent","isDOMError","isDOMException","isError","isObject","isPlainObject","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","sanitize","wrapConsoleMethod","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","dsn","options","_logDebug","globalOptions","key","value","setDSN","push","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","substr","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","context","func","undefined","wrap","_before","wrapped","deep","_ignoreNextOnError","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","T","event","reason","unhandledPromiseRejection","B","_promiseRejectionHandler","bind","addEventListener","P","removeEventListener","ex","trimHeadFrames","captureMessage","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","U","currentOptions","exKeys","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","setDataCallback","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","L","setTimeout","$","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","_","evtName","_keypressTimeout","target","category","ba","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","ca","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","C","_originalFunctionToString","Q","D","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","type","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","E","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","R","builtin","S","F","installer","concat","G","str","m","exec","allowSecretKey","J","port","A","V","stackInfo","_triggerEvent","_processException","lineno","X","frame","_normalizeFrame","in_app","ga","stackInfoUrl","normalized","filename","line","colno","column","function","fa","prefixedMessage","exception","values","transaction","ha","request","Referer","breadcrumbs","_trimBreadcrumbs","ia","urlProp","urlProps","ja","httpData","userAgent","User-Agent","referrer","y","_backoffDuration","_backoffStart","ma","na","current","last","oa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Y","baseData","project","platform","_getHttpData","serverName","server_name","_sanitizeData","forEach","random","_sendProcessedPayload","pa","ra","qa","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","sa","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","onerror","open","setRequestHeader","send","ta","hash","evaluated","z","Z","setUser","setReleaseContext","7","8","9","RavenConstructor","_Raven","noConflict","Client","what","supportsErrorEvent","ErrorEvent","supportsDOMError","DOMError","supportsDOMException","DOMException","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","wrappedCallback","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","sanitizeMask","safeInput","o_O","getLocationHref","getLocationOrigin","origin","hostname","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","responseText","sourceMaps","sourceMapAddress","charAt","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","string","raw"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file diff --git a/docs/sentry-doc-config.json b/docs/sentry-doc-config.json index bbf147fc5935..7656d3eee7af 100644 --- a/docs/sentry-doc-config.json +++ b/docs/sentry-doc-config.json @@ -66,6 +66,6 @@ } }, "vars": { - "RAVEN_VERSION": "3.25.1" + "RAVEN_VERSION": "3.25.2" } } diff --git a/package.json b/package.json index a741b1b75a45..5a9b20ba8ed7 100644 --- a/package.json +++ b/package.json @@ -9,7 +9,7 @@ "raven", "sentry" ], - "version": "3.25.1", + "version": "3.25.2", "repository": "git://github.com/getsentry/raven-js.git", "license": "BSD-2-Clause", "homepage": "https://github.com/getsentry/raven-js", diff --git a/src/raven.js b/src/raven.js index 182e3aeaf44f..1463bb35bdb1 100644 --- a/src/raven.js +++ b/src/raven.js @@ -49,11 +49,7 @@ function now() { var _window = typeof window !== 'undefined' ? window - : typeof global !== 'undefined' - ? global - : typeof self !== 'undefined' - ? self - : {}; + : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; var _document = _window.document; var _navigator = _window.navigator; @@ -143,7 +139,7 @@ Raven.prototype = { // webpack (using a build step causes webpack #1617). Grunt verifies that // this value matches package.json during build. // See: https://github.com/getsentry/raven-js/issues/465 - VERSION: '3.25.1', + VERSION: '3.25.2', debug: false, diff --git a/test/raven.test.js b/test/raven.test.js index 84178e1b8363..c6026b0aeb4c 100644 --- a/test/raven.test.js +++ b/test/raven.test.js @@ -1370,7 +1370,7 @@ describe('globals', function() { extra: {'session:duration': 100} }); assert.deepEqual(opts.auth, { - sentry_client: 'raven-js/3.25.1', + sentry_client: 'raven-js/3.25.2', sentry_key: 'abc', sentry_version: '7' }); @@ -1417,7 +1417,7 @@ describe('globals', function() { extra: {'session:duration': 100} }); assert.deepEqual(opts.auth, { - sentry_client: 'raven-js/3.25.1', + sentry_client: 'raven-js/3.25.2', sentry_key: 'abc', sentry_secret: 'def', sentry_version: '7' From efaff8404984a773f7c3f7a26cd2fb163bac9bb4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kamil=20Og=C3=B3rek?= Date: Thu, 24 May 2018 11:00:31 +0200 Subject: [PATCH 57/75] docs: Change incorrect JS docs function param --- src/raven.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/raven.js b/src/raven.js index 1463bb35bdb1..79031ed9012b 100644 --- a/src/raven.js +++ b/src/raven.js @@ -316,7 +316,7 @@ Raven.prototype = { * * @param {object} options A specific set of options for this context [optional] * @param {function} func The function to be wrapped in a new context - * @param {function} func A function to call before the try/catch wrapper [optional, private] + * @param {function} _before A function to call before the try/catch wrapper [optional, private] * @return {function} The newly wrapped functions with a context */ wrap: function(options, func, _before) { From aca0802d3d325b080fc7b36aa13cf10916d77a53 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kamil=20Og=C3=B3rek?= Date: Thu, 24 May 2018 11:02:00 +0200 Subject: [PATCH 58/75] ref: Return location.origin instead of assigning it for IE10 --- vendor/TraceKit/tracekit.js | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/vendor/TraceKit/tracekit.js b/vendor/TraceKit/tracekit.js index 7dc3db882c54..d5de6933cb03 100644 --- a/vendor/TraceKit/tracekit.js +++ b/vendor/TraceKit/tracekit.js @@ -38,11 +38,12 @@ function getLocationOrigin() { // Oh dear IE10... if (!document.location.origin) { - document.location.origin = + return ( document.location.protocol + '//' + document.location.hostname + - (document.location.port ? ':' + document.location.port : ''); + (document.location.port ? ':' + document.location.port : '') + ); } return document.location.origin; From c2e397758e3b23ec828b98eaffe9b940deea7c9b Mon Sep 17 00:00:00 2001 From: Jacob Norton Date: Wed, 30 May 2018 10:44:25 -0700 Subject: [PATCH 59/75] docs: Angular - added error console logging outside of production (#1340) Without calling `super.handleError(err)`, Raven swallows the error without any indication for debugging in development environments --- docs/integrations/angular.rst | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/docs/integrations/angular.rst b/docs/integrations/angular.rst index a0d64aeec679..dd564d536152 100644 --- a/docs/integrations/angular.rst +++ b/docs/integrations/angular.rst @@ -62,6 +62,7 @@ Then, in your main module file (where ``@NgModule`` is called, e.g. app.module.t import { BrowserModule } from '@angular/platform-browser'; import { NgModule, ErrorHandler } from '@angular/core'; import { AppComponent } from './app.component'; + import { environment } from '../environments/environment'; Raven .config('___PUBLIC_DSN___') @@ -70,6 +71,9 @@ Then, in your main module file (where ``@NgModule`` is called, e.g. app.module.t export class RavenErrorHandler implements ErrorHandler { handleError(err:any) : void { Raven.captureException(err.originalError || err); + if(!environment.production) { + super.handleError(err); + } } } From a010f2ee441e3ff349442cb53ce4b892dbf1c38d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kamil=20Og=C3=B3rek?= Date: Wed, 30 May 2018 19:53:10 +0200 Subject: [PATCH 60/75] feat: Async Loader example with tests and docs (#1334) * feat: Async Loader with tests * loader: Added simple build step * loader: Async loading documentation * loader: Use CDN and DSN dynamic variables * loader: Defend users from ASI magic and update docs --- docs/install.rst | 47 ++++- karma.sauce.config.js | 117 ----------- karma.unit.config.js | 13 -- karma.config.js => karma/karma.config.js | 7 +- karma/karma.integration-sauce.config.js | 10 + .../karma.integration.config.js | 7 +- karma/karma.loader-sauce.config.js | 10 + karma/karma.loader.config.js | 15 ++ karma/karma.sauce.config.js | 97 +++++++++ karma/karma.unit.config.js | 9 + package-lock.json | 198 +----------------- package.json | 17 +- src/loader.js | 79 +++++++ test/globals.js | 2 - test/integration/loader-test.js | 82 ++++++++ test/integration/loader.html | 47 +++++ test/integration/test.js | 2 +- 17 files changed, 408 insertions(+), 351 deletions(-) delete mode 100644 karma.sauce.config.js delete mode 100644 karma.unit.config.js rename karma.config.js => karma/karma.config.js (91%) create mode 100644 karma/karma.integration-sauce.config.js rename karma.integration.config.js => karma/karma.integration.config.js (86%) create mode 100644 karma/karma.loader-sauce.config.js create mode 100644 karma/karma.loader.config.js create mode 100644 karma/karma.sauce.config.js create mode 100644 karma/karma.unit.config.js create mode 100644 src/loader.js delete mode 100644 test/globals.js create mode 100644 test/integration/loader-test.js create mode 100644 test/integration/loader.html diff --git a/docs/install.rst b/docs/install.rst index 21bc032813b4..b7473f0ca223 100644 --- a/docs/install.rst +++ b/docs/install.rst @@ -8,10 +8,10 @@ So for example: .. sourcecode:: html - - - - + + + + This allows the ability for Raven's integrations to instrument themselves. If included before something like Angular, it'd be impossible to use for @@ -28,7 +28,7 @@ Our CDN distributes builds with and without :doc:`integrations + This version does not include any plugins. See `ravenjs.com `_ for more information about plugins and getting @@ -45,11 +45,11 @@ add it to ``bower.json``). .. code-block:: sh - $ bower install raven-js --save + $ bower install raven-js --save .. code-block:: html - + Also note that the file is uncompresed but is ready to pass to any decent JavaScript compressor like `UglifyJS @@ -63,7 +63,7 @@ Raven is also available as an npm package, `raven-js .. code-block:: sh - $ npm install raven-js --save + $ npm install raven-js --save .. code-block:: html @@ -96,6 +96,37 @@ To use Raven with ES2015 (ES6) imports: .config('___PUBLIC_DSN___') .install(); +Async Loading +~~~~~~~~~~~~~ + +To load Sentry JS SDK asynchronously, you need to do two things. + +Provide global ``SENTRY_SDK`` variable with SDK's URL (for example from our CDN), your DSN and SDK's configuration. +And place the snippet below as soon as possible in your HTML code. For example: + +.. code-block:: html + + + +Or you can place those two things in a separate script tags. This will queue all errors (and promises if the environment supports ``unhandledrejection`` handler) that happened before SDK was loaded and send them once it's configured and installed. + +Be aware however, that there are some trade-offs to this solution, as errors might provide less information due to them being "retriggered" instead of being caught from the original source. + +NOTE: This won't work when opening ``index.html`` or any other html file from the file system, as it doesn't support anonymous cross-origin scripts. +The same thing can happen for any cross-origin scripts as well. To read more about it, see `What the heck is "Script error"?`_. + +To read un-minified source code for this loader, see `loader.js`_ + Requirements ~~~~~~~~~~~~ diff --git a/karma.sauce.config.js b/karma.sauce.config.js deleted file mode 100644 index bf363bb359c5..000000000000 --- a/karma.sauce.config.js +++ /dev/null @@ -1,117 +0,0 @@ -var commonConfig = require('./karma.config'); - -var customLaunchers = { - sl_chrome: { - base: 'SauceLabs', - browserName: 'chrome', - platform: 'Windows 10', - version: 'latest' - }, - sl_firefox: { - base: 'SauceLabs', - browserName: 'firefox', - platform: 'Windows 10', - version: 'latest' - }, - sl_edge: { - base: 'SauceLabs', - browserName: 'microsoftedge', - version: 'latest', - platform: 'Windows 10' - }, - sl_ie_11: { - base: 'SauceLabs', - browserName: 'internet explorer', - platform: 'Windows 7', - version: '11' - }, - sl_ie_10: { - base: 'SauceLabs', - browserName: 'internet explorer', - platform: 'Windows 7', - version: '10' - }, - sl_safari: { - base: 'SauceLabs', - browserName: 'safari', - platform: 'OS X 10.12', - version: '11.0' - }, - sl_ios: { - base: 'SauceLabs', - browserName: 'iphone', - platform: 'OS X 10.12', - version: '11.0' - }, - sl_android_7: { - base: 'SauceLabs', - browserName: 'Chrome', - platform: 'Android', - version: '7.1', - device: 'Android GoogleAPI Emulator' - }, - sl_android_6: { - base: 'SauceLabs', - browserName: 'Chrome', - platform: 'Android', - version: '6.0', - device: 'Android Emulator' - }, - sl_android_5: { - base: 'SauceLabs', - browserName: 'android', - platform: 'Linux', - version: '5.1' - }, - sl_android_4: { - base: 'SauceLabs', - browserName: 'android', - platform: 'Linux', - version: '4.4' - } -}; - -var testFiles = [ - {pattern: 'node_modules/es6-promise/dist/es6-promise.auto.js', included: false}, - {pattern: 'node_modules/whatwg-fetch/fetch.js', included: false}, - {pattern: 'test/integration/123', included: false}, - {pattern: 'test/integration/throw-string.js', included: false}, - {pattern: 'test/integration/throw-error.js', included: false}, - {pattern: 'test/integration/throw-object.js', included: false}, - {pattern: 'test/integration/example.json', included: false}, - {pattern: 'test/integration/frame.html', included: false}, - 'test/integration/test.js', - 'test/globals.js', - 'build/raven.js', - 'build/raven.test.js' -]; - -module.exports = function(config) { - var testConfig = Object.assign({}, commonConfig, { - files: testFiles, - logLevel: config.LOG_INFO, - customLaunchers: customLaunchers, - browsers: Object.keys(customLaunchers), - reporters: ['failed', 'saucelabs'], - singleRun: true, - plugins: commonConfig.plugins.concat(['karma-sauce-launcher']), - build: process.env.TRAVIS_BUILD_NUMBER, - // SauceLabs allows for 2 tunnels only, therefore some browsers will have to wait - // rather long time. Plus mobile emulators tend to require a lot of time to start up. - // 10 minutes should be more than enough to run all of them. - browserNoActivityTimeout: 600000, - captureTimeout: 600000, - sauceLabs: { - startConnect: false, - // Just something "random" so we don't have to provide additional ENV var when running locally - tunnelIdentifier: process.env.TRAVIS_JOB_NUMBER || Math.ceil(Math.random() * 1337), - recordScreenshots: false, - recordVideo: false, - testName: - 'Raven.js' + - (process.env.TRAVIS_JOB_NUMBER ? ' #' + process.env.TRAVIS_JOB_NUMBER : ''), - public: 'public' - } - }); - config.set(testConfig); -}; diff --git a/karma.unit.config.js b/karma.unit.config.js deleted file mode 100644 index d6f468af2f3a..000000000000 --- a/karma.unit.config.js +++ /dev/null @@ -1,13 +0,0 @@ -var commonConfig = require('./karma.config'); - -var testFiles = ['test/globals.js', 'build/raven.test.js']; - -module.exports = function(config) { - var testConfig = Object.assign( - {}, - commonConfig, - {files: testFiles}, - {logLevel: config.LOG_INFO} - ); - config.set(testConfig); -}; diff --git a/karma.config.js b/karma/karma.config.js similarity index 91% rename from karma.config.js rename to karma/karma.config.js index f1500ba0e4e3..40cbf4cb7901 100644 --- a/karma.config.js +++ b/karma/karma.config.js @@ -3,7 +3,7 @@ module.exports = { // base path that will be used to resolve all patterns (eg. files, exclude) - basePath: '', + basePath: '../', // frameworks to use // available frameworks: https://npmjs.org/browse/keyword/karma-adapter @@ -58,9 +58,12 @@ module.exports = { } }, + // https://docs.travis-ci.com/user/gui-and-headless-browsers/#Karma-and-Firefox-inactivity-timeouts + browserNoActivityTimeout: 30000, + // Continuous Integration mode // if true, Karma captures browsers, runs the tests and exits - singleRun: false, + singleRun: true, // Concurrency level // how many browser should be started simultaneous diff --git a/karma/karma.integration-sauce.config.js b/karma/karma.integration-sauce.config.js new file mode 100644 index 000000000000..19611e51fe6c --- /dev/null +++ b/karma/karma.integration-sauce.config.js @@ -0,0 +1,10 @@ +var commonSauceConfig = require('./karma.sauce.config'); +var files = require('./karma.integration.config').files; + +module.exports = function(config) { + var testConfig = Object.assign({}, commonSauceConfig, { + logLevel: config.LOG_INFO, + files: files.concat(['build/raven.test.js']) + }); + config.set(testConfig); +}; diff --git a/karma.integration.config.js b/karma/karma.integration.config.js similarity index 86% rename from karma.integration.config.js rename to karma/karma.integration.config.js index ee544fbce0ca..1ef104390cdf 100644 --- a/karma.integration.config.js +++ b/karma/karma.integration.config.js @@ -9,12 +9,13 @@ var testFiles = [ {pattern: 'test/integration/throw-object.js', included: false}, {pattern: 'test/integration/example.json', included: false}, {pattern: 'test/integration/frame.html', included: false}, - 'test/integration/test.js', - 'test/globals.js', - 'build/raven.js', + {pattern: 'build/raven.js', included: false}, + 'test/integration/test.js' ]; module.exports = function(config) { var testConfig = Object.assign({}, commonConfig, {files: testFiles}); config.set(testConfig); }; + +module.exports.files = testFiles; diff --git a/karma/karma.loader-sauce.config.js b/karma/karma.loader-sauce.config.js new file mode 100644 index 000000000000..8b8133e7fac9 --- /dev/null +++ b/karma/karma.loader-sauce.config.js @@ -0,0 +1,10 @@ +var commonSauceConfig = require('./karma.sauce.config'); +var files = require('./karma.loader.config').files; + +module.exports = function(config) { + var testConfig = Object.assign({}, commonSauceConfig, { + logLevel: config.LOG_INFO, + files: files + }); + config.set(testConfig); +}; diff --git a/karma/karma.loader.config.js b/karma/karma.loader.config.js new file mode 100644 index 000000000000..735c341b4e98 --- /dev/null +++ b/karma/karma.loader.config.js @@ -0,0 +1,15 @@ +var commonConfig = require('./karma.config'); + +var testFiles = [ + {pattern: 'node_modules/es6-promise/dist/es6-promise.auto.js', included: false}, + {pattern: 'test/integration/loader.html', included: false}, + {pattern: 'build/raven.js', included: false}, + {pattern: 'src/loader.js', included: false}, + 'test/integration/loader-test.js' +]; + +module.exports = function(config) { + var testConfig = Object.assign({}, commonConfig, {files: testFiles}); + config.set(testConfig); +}; +module.exports.files = testFiles; diff --git a/karma/karma.sauce.config.js b/karma/karma.sauce.config.js new file mode 100644 index 000000000000..4ac381fd6f97 --- /dev/null +++ b/karma/karma.sauce.config.js @@ -0,0 +1,97 @@ +var commonConfig = require('./karma.config'); + +var customLaunchers = { + sl_chrome: { + base: 'SauceLabs', + browserName: 'chrome', + platform: 'Windows 10', + version: 'latest' + }, + sl_firefox: { + base: 'SauceLabs', + browserName: 'firefox', + platform: 'Windows 10', + version: 'latest' + }, + sl_edge: { + base: 'SauceLabs', + browserName: 'microsoftedge', + version: 'latest', + platform: 'Windows 10' + }, + sl_ie_11: { + base: 'SauceLabs', + browserName: 'internet explorer', + platform: 'Windows 7', + version: '11' + }, + sl_ie_10: { + base: 'SauceLabs', + browserName: 'internet explorer', + platform: 'Windows 7', + version: '10' + }, + sl_safari: { + base: 'SauceLabs', + browserName: 'safari', + platform: 'OS X 10.12', + version: '11.0' + }, + sl_ios: { + base: 'SauceLabs', + browserName: 'iphone', + platform: 'OS X 10.12', + version: '11.0' + }, + sl_android_7: { + base: 'SauceLabs', + browserName: 'Chrome', + platform: 'Android', + version: '7.1', + device: 'Android GoogleAPI Emulator' + }, + sl_android_6: { + base: 'SauceLabs', + browserName: 'Chrome', + platform: 'Android', + version: '6.0', + device: 'Android Emulator' + }, + sl_android_5: { + base: 'SauceLabs', + browserName: 'android', + platform: 'Linux', + version: '5.1' + }, + sl_android_4: { + base: 'SauceLabs', + browserName: 'android', + platform: 'Linux', + version: '4.4' + } +}; + +module.exports = Object.assign({}, commonConfig, { + customLaunchers: customLaunchers, + browsers: Object.keys(customLaunchers), + reporters: ['failed', 'saucelabs'], + singleRun: true, + plugins: commonConfig.plugins.concat(['karma-sauce-launcher']), + build: process.env.TRAVIS_BUILD_NUMBER, + // SauceLabs allows for 2 tunnels only, therefore some browsers will have to wait + // rather long time. Plus mobile emulators tend to require a lot of time to start up. + // 10 minutes should be more than enough to run all of them. + browserNoActivityTimeout: 600000, + captureTimeout: 600000, + sauceLabs: { + startConnect: false, + // Just something "random" so we don't have to provide additional ENV var when running locally + tunnelIdentifier: process.env.TRAVIS_JOB_NUMBER || Math.ceil(Math.random() * 1337), + recordScreenshots: false, + recordVideo: false, + testName: + 'Raven.js' + + (process.env.TRAVIS_JOB_NUMBER ? ' #' + process.env.TRAVIS_JOB_NUMBER : ''), + public: 'public' + } +}); diff --git a/karma/karma.unit.config.js b/karma/karma.unit.config.js new file mode 100644 index 000000000000..9349c48a1b9f --- /dev/null +++ b/karma/karma.unit.config.js @@ -0,0 +1,9 @@ +var commonConfig = require('./karma.config'); + +module.exports = function(config) { + var testConfig = Object.assign({}, commonConfig, { + logLevel: config.LOG_INFO, + files: ['build/raven.test.js'] + }); + config.set(testConfig); +}; diff --git a/package-lock.json b/package-lock.json index a57b8993306a..6095a95b0b27 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "raven-js", - "version": "3.22.3", + "version": "3.25.2", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -20,16 +20,6 @@ "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", "dev": true }, - "accepts": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.4.tgz", - "integrity": "sha1-hiRnWMfdbSGmR0/whKR0DsBesh8=", - "dev": true, - "requires": { - "mime-types": "2.1.17", - "negotiator": "0.6.1" - } - }, "acorn": { "version": "4.0.13", "resolved": "https://registry.npmjs.org/acorn/-/acorn-4.0.13.tgz", @@ -494,21 +484,6 @@ "integrity": "sha1-R2iMuZu2gE8OBtPnY7HDLlfY5rY=", "dev": true }, - "basic-auth": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-2.0.0.tgz", - "integrity": "sha1-AV2z81PgLlY3d1X5YnQuiYHnu7o=", - "dev": true, - "requires": { - "safe-buffer": "5.1.1" - } - }, - "batch": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", - "integrity": "sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY=", - "dev": true - }, "bcrypt-pbkdf": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz", @@ -1542,12 +1517,6 @@ } } }, - "connect-livereload": { - "version": "0.5.4", - "resolved": "https://registry.npmjs.org/connect-livereload/-/connect-livereload-0.5.4.tgz", - "integrity": "sha1-gBV9E3HJ83zBQDmrGJWXDRGdw7w=", - "dev": true - }, "console-browserify": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.1.0.tgz", @@ -1938,12 +1907,6 @@ "minimalistic-assert": "1.0.0" } }, - "destroy": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", - "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=", - "dev": true - }, "detective": { "version": "4.7.1", "resolved": "https://registry.npmjs.org/detective/-/detective-4.7.1.tgz", @@ -2572,12 +2535,6 @@ "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", "dev": true }, - "etag": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", - "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=", - "dev": true - }, "event-emitter": { "version": "0.3.5", "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz", @@ -3002,12 +2959,6 @@ "integrity": "sha1-71SRSQ+UM7cF+qdyScmQKa40hVk=", "dev": true }, - "fresh": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=", - "dev": true - }, "fs-access": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/fs-access/-/fs-access-1.0.1.tgz", @@ -4314,36 +4265,6 @@ "rimraf": "2.6.2" } }, - "grunt-contrib-connect": { - "version": "0.11.2", - "resolved": "https://registry.npmjs.org/grunt-contrib-connect/-/grunt-contrib-connect-0.11.2.tgz", - "integrity": "sha1-HAoHB9OzKNnPO0tJDrhMSV2Tau0=", - "dev": true, - "requires": { - "async": "0.9.2", - "connect": "3.6.5", - "connect-livereload": "0.5.4", - "morgan": "1.9.0", - "opn": "1.0.2", - "portscanner": "1.2.0", - "serve-index": "1.9.1", - "serve-static": "1.13.1" - }, - "dependencies": { - "async": { - "version": "0.9.2", - "resolved": "https://registry.npmjs.org/async/-/async-0.9.2.tgz", - "integrity": "sha1-rqdNXmHB+JlhO/ZL2mbUx48v0X0=", - "dev": true - }, - "opn": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/opn/-/opn-1.0.2.tgz", - "integrity": "sha1-uQlkM0bQChq8l3qLlvPOPFPVz18=", - "dev": true - } - } - }, "grunt-contrib-copy": { "version": "0.8.2", "resolved": "https://registry.npmjs.org/grunt-contrib-copy/-/grunt-contrib-copy-0.8.2.tgz", @@ -6440,30 +6361,6 @@ "integrity": "sha1-XceVaVZaENbv7VQ5SR5p0jkuWPE=", "dev": true }, - "morgan": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/morgan/-/morgan-1.9.0.tgz", - "integrity": "sha1-0B+mxlhZt2/PMbPLU6OCGjEdgFE=", - "dev": true, - "requires": { - "basic-auth": "2.0.0", - "debug": "2.6.9", - "depd": "1.1.2", - "on-finished": "2.3.0", - "on-headers": "1.0.1" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - } - } - }, "ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", @@ -6646,12 +6543,6 @@ "ee-first": "1.1.1" } }, - "on-headers": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.1.tgz", - "integrity": "sha1-ko9dD0cNSTQmUepnlLCFfBAGk/c=", - "dev": true - }, "once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", @@ -7094,23 +6985,6 @@ "integrity": "sha512-ARhBOdzS3e41FbkW/XWrTEtukqqLoK5+Z/4UeDaLuSW+39JPeFgs4gCGqsrJHVZX0fUrx//4OF0K1CUGwlIFow==", "dev": true }, - "portscanner": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/portscanner/-/portscanner-1.2.0.tgz", - "integrity": "sha1-sUu9olfRTDEPqcwJaCrwLUCWGAI=", - "dev": true, - "requires": { - "async": "1.5.2" - }, - "dependencies": { - "async": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", - "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=", - "dev": true - } - } - }, "prelude-ls": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", @@ -7840,76 +7714,6 @@ "integrity": "sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg==", "dev": true }, - "send": { - "version": "0.16.1", - "resolved": "https://registry.npmjs.org/send/-/send-0.16.1.tgz", - "integrity": "sha512-ElCLJdJIKPk6ux/Hocwhk7NFHpI3pVm/IZOYWqUmoxcgeyM+MpxHHKhb8QmlJDX1pU6WrgaHBkVNm73Sv7uc2A==", - "dev": true, - "requires": { - "debug": "2.6.9", - "depd": "1.1.2", - "destroy": "1.0.4", - "encodeurl": "1.0.1", - "escape-html": "1.0.3", - "etag": "1.8.1", - "fresh": "0.5.2", - "http-errors": "1.6.2", - "mime": "1.4.1", - "ms": "2.0.0", - "on-finished": "2.3.0", - "range-parser": "1.2.0", - "statuses": "1.3.1" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - } - } - }, - "serve-index": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", - "integrity": "sha1-03aNabHn2C5c4FD/9bRTvqEqkjk=", - "dev": true, - "requires": { - "accepts": "1.3.4", - "batch": "0.6.1", - "debug": "2.6.9", - "escape-html": "1.0.3", - "http-errors": "1.6.2", - "mime-types": "2.1.17", - "parseurl": "1.3.2" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - } - } - }, - "serve-static": { - "version": "1.13.1", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.13.1.tgz", - "integrity": "sha512-hSMUZrsPa/I09VYFJwa627JJkNs0NrfL1Uzuup+GqHfToR2KcsXFymXSV90hoyw3M+msjFuQly+YzIH/q0MGlQ==", - "dev": true, - "requires": { - "encodeurl": "1.0.1", - "escape-html": "1.0.3", - "parseurl": "1.3.2", - "send": "0.16.1" - } - }, "set-immediate-shim": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz", diff --git a/package.json b/package.json index 5a9b20ba8ed7..c3d813d1ee82 100644 --- a/package.json +++ b/package.json @@ -19,15 +19,16 @@ "lint": "eslint .", "precommit": "lint-staged", "publish": "grunt publish", - "test": "npm run lint && grunt build.test && npm run test:unit && npm run test:integration && npm run test:typescript", - "test:karma:unit": "karma start karma.unit.config.js", - "test:karma:integration": "karma start karma.integration.config.js ", - "test:karma:sauce": "karma start karma.sauce.config.js ", - "test:unit": "npm run test:karma:unit -- --single-run", - "test:integration": "npm run test:karma:integration -- --single-run", + "test": "npm run lint && grunt build.test && npm run test:unit && npm run test:loader && npm run test:integration && npm run test:typescript", + "test:unit": "karma start karma/karma.unit.config.js", + "test:integration": "karma start karma/karma.integration.config.js", + "test:integration-sauce": "karma start karma/karma.integration-sauce.config.js", + "test:loader": "karma start karma/karma.loader.config.js", + "test:loader-sauce": "karma start karma/karma.loader-sauce.config.js", "test:typescript": "tsc --noEmit --noImplicitAny typescript/raven-tests.ts", - "test:ci": "npm run lint && grunt test:ci && npm run test:karma:sauce", - "test:size": "grunt dist && bundlesize && git checkout -- dist/" + "test:ci": "npm run lint && grunt test:ci && npm run test:loader-sauce && npm run test:integration-sauce", + "test:size": "grunt dist && bundlesize && git checkout -- dist/", + "loader": "cat src/loader.js | sed '/build_marker/{N;d;}' | npx google-closure-compiler-js | perl -e \"print ';'; print ;\"" }, "devDependencies": { "bluebird": "^3.4.1", diff --git a/src/loader.js b/src/loader.js new file mode 100644 index 000000000000..21a0952a5eef --- /dev/null +++ b/src/loader.js @@ -0,0 +1,79 @@ +(function(_window, _document, _script, _onerror, _onunhandledrejection) { + var SENTRY_SDK = _window.SENTRY_SDK; + + // Create a namespace and attach function that will store captured exception + // Because functions are also objects, we can attach the queue itself straight to it and save some bytes + var queue = function(exception) { + queue.data.push(exception); + }; + queue.data = []; + + // Store reference to the old `onerror` handler and override it with our own function + // that will just push exceptions to the queue and call through old handler if we found one + var _oldOnerror = _window[_onerror]; + _window[_onerror] = function(message, source, lineno, colno, exception) { + // Use keys as "data type" to save some characters" + queue({ + e: [].slice.call(arguments) + }); + + if (_oldOnerror) _oldOnerror.apply(_window, arguments); + }; + + // Do the same store/queue/call operations for `onunhandledrejection` event + var _oldOnunhandledrejection = _window[_onunhandledrejection]; + _window[_onunhandledrejection] = function(exception) { + queue({ + p: exception.reason + }); + if (_oldOnunhandledrejection) _oldOnunhandledrejection.apply(_window, arguments); + }; + + // Create a `script` tag with provided SDK `url` and attach it just before the first, already existing `script` tag + // Scripts that are dynamically created and added to the document are async by default, + // they don't block rendering and execute as soon as they download, meaning they could + // come out in the wrong order. Because of that we don't need async=1 as GA does. + // it was probably(?) a legacy behavior that they left to not modify few years old snippet + // https://www.html5rocks.com/en/tutorials/speed/script-loading/ + var _currentScriptTag = _document.getElementsByTagName(_script)[0]; + var _newScriptTag = _document.createElement(_script); + _newScriptTag.src = SENTRY_SDK.url; + _newScriptTag.crossorigin = 'anonymous'; + + // Once our SDK is loaded + _newScriptTag.addEventListener('load', function() { + try { + // Restore onerror/onunhandledrejection handlers + _window[_onerror] = _oldOnerror; + _window[_onunhandledrejection] = _oldOnunhandledrejection; + + var data = queue.data; + var SDK = _window.Raven; + // Configure it using provided DSN and config object + SDK.config(SENTRY_SDK.dsn, SENTRY_SDK.options).install(); + // Because we installed the SDK, at this point we have an access to TraceKit's handler, + // which can take care of browser differences (eg. missing exception argument in onerror) + var tracekitErrorHandler = _window[_onerror]; + + // And capture all previously caught exceptions + if (data.length) { + for (var i = 0; i < data.length; i++) { + if (data[i].e) { + tracekitErrorHandler.apply(SDK.TraceKit, data[i].e); + } else if (data[i].p) { + SDK.captureException(data[i].p); + } + } + } + } catch (o_O) { + console.log(o_O); + } + }); + + // Markers used to remove setTimeout (used for testing) from prod build, DO NOT REMOVE + // build_marker + setTimeout(function() { + _currentScriptTag.parentNode.insertBefore(_newScriptTag, _currentScriptTag); + // build_marker + }, 500); +})(window, document, 'script', 'onerror', 'onunhandledrejection'); diff --git a/test/globals.js b/test/globals.js deleted file mode 100644 index bd0ed5d5a484..000000000000 --- a/test/globals.js +++ /dev/null @@ -1,2 +0,0 @@ -window.__DEV__ = true; -__DEV__ = true; diff --git a/test/integration/loader-test.js b/test/integration/loader-test.js new file mode 100644 index 000000000000..fe133b27781d --- /dev/null +++ b/test/integration/loader-test.js @@ -0,0 +1,82 @@ +/*global assert*/ +function iframeExecute(iframe, done, execute, assertCallback) { + iframe.contentWindow.done = function() { + try { + assertCallback(iframe); + done(); + } catch (e) { + done(e); + } + }; + // use setTimeout so stack trace doesn't go all the way back to mocha test runner + iframe.contentWindow.eval( + 'window.originalBuiltIns.setTimeout.call(window, ' + execute.toString() + ');' + ); +} + +function createIframe(done) { + var iframe = document.createElement('iframe'); + iframe.style.display = 'none'; + iframe.src = './base/test/integration/loader.html'; + iframe.onload = function() { + done(); + }; + document.body.appendChild(iframe); + return iframe; +} + +describe('Async SDK Loader', function() { + this.timeout(30000); + + beforeEach(function(done) { + this.iframe = createIframe(done); + }); + + afterEach(function() { + document.body.removeChild(this.iframe); + }); + + it('should capture errors before and after SDK is loaded', function(done) { + var iframe = this.iframe; + + iframeExecute( + iframe, + done, + function() { + // This is to ensure that we are indeed queuing the errors + if (typeof window.Raven !== 'undefined') { + window.loadedPreTest = true; + } else { + window.loadedPreTest = false; + } + + // Because we pre-load loader.js through karma, we don't have to worry about XHR delays etc. + setTimeout(function() { + Raven.captureException(new Error('post load exception')); + done(); + }, 1000); + }, + function() { + // Raven shouldn't be loaded synchronously, so it shouldnt be available at the beginning + assert.equal(iframe.contentWindow.loadedPreTest, false, 'A'); + // but it should be available later on + assert.equal(typeof iframe.contentWindow.Raven !== 'undefined', true, 'B'); + // and it should be configured + assert.equal(iframe.contentWindow.Raven.isSetup(), true, 'C'); + + var ravenData = iframe.contentWindow.ravenData; + + if (iframe.contentWindow.supportsOnunhandledrejection) { + assert.equal(ravenData.length, 3); + assert.equal(ravenData[0].exception.values[0].value, 'pre load exception'); + assert.equal(ravenData[1].exception.values[0].value, 'pre load rejection'); + assert.equal(ravenData[2].exception.values[0].value, 'post load exception'); + } else { + assert.equal(ravenData.length, 2); + assert.equal(ravenData[0].exception.values[0].value, 'pre load exception'); + assert.equal(ravenData[1].exception.values[0].value, 'post load exception'); + } + } + ); + }); +}); diff --git a/test/integration/loader.html b/test/integration/loader.html new file mode 100644 index 000000000000..015eef3413fb --- /dev/null +++ b/test/integration/loader.html @@ -0,0 +1,47 @@ + + + + + + + + + + + + + + diff --git a/test/integration/test.js b/test/integration/test.js index 5552ed84b052..d06dce1a3c8e 100644 --- a/test/integration/test.js +++ b/test/integration/test.js @@ -44,7 +44,7 @@ function isEdge14() { } describe('integration', function() { - this.timeout(10000); + this.timeout(30000); beforeEach(function(done) { this.iframe = createIframe(done); From 90ba2470379bb4c5a85c30d86387e0200aa7ffcf Mon Sep 17 00:00:00 2001 From: Jan Michael Auer Date: Wed, 30 May 2018 13:44:00 -0700 Subject: [PATCH 61/75] feat: Send exception mechanisms (#1335) * feat: initial mechanism implementation * feat(mechanism): Update mechanism to latest spec * ref: Review changes --- src/raven.js | 107 ++++++++++++++++++++++++++++++++++++++++----- test/raven.test.js | 88 +++++++++++++++++++++++-------------- 2 files changed, 149 insertions(+), 46 deletions(-) diff --git a/src/raven.js b/src/raven.js index 79031ed9012b..9b0af5eb31ac 100644 --- a/src/raven.js +++ b/src/raven.js @@ -49,7 +49,11 @@ function now() { var _window = typeof window !== 'undefined' ? window - : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; + : typeof global !== 'undefined' + ? global + : typeof self !== 'undefined' + ? self + : {}; var _document = _window.document; var _navigator = _window.navigator; @@ -305,7 +309,7 @@ Raven.prototype = { if (isFunction(options)) { args = func || []; func = options; - options = undefined; + options = {}; } return this.wrap(options, func).apply(this, args); @@ -429,8 +433,9 @@ Raven.prototype = { _promiseRejectionHandler: function(event) { this._logDebug('debug', 'Raven caught unhandled promise rejection:', event); this.captureException(event.reason, { - extra: { - unhandledPromiseRejection: true + mechanism: { + type: 'onunhandledrejection', + handled: false } }); }, @@ -1107,7 +1112,15 @@ Raven.prototype = { } var originalCallback = args[0]; if (isFunction(originalCallback)) { - args[0] = self.wrap(originalCallback); + args[0] = self.wrap( + { + mechanism: { + type: 'instrument', + data: {function: orig.name} + } + }, + originalCallback + ); } // IE < 9 doesn't support .call/.apply on setInterval/setTimeout, but it @@ -1134,7 +1147,15 @@ Raven.prototype = { // preserve arity try { if (fn && fn.handleEvent) { - fn.handleEvent = self.wrap(fn.handleEvent); + fn.handleEvent = self.wrap( + { + mechanism: { + type: 'instrument', + data: {target: global, function: 'handleEvent', handler: fn.name} + } + }, + fn.handleEvent + ); } } catch (err) { // can sometimes get 'Permission denied to access property "handle Event' @@ -1174,7 +1195,20 @@ Raven.prototype = { return orig.call( this, evtName, - self.wrap(fn, undefined, before), + self.wrap( + { + mechanism: { + type: 'instrument', + data: { + target: global, + function: 'addEventListener', + handler: fn.name + } + } + }, + fn, + before + ), capture, secure ); @@ -1208,7 +1242,17 @@ Raven.prototype = { 'requestAnimationFrame', function(orig) { return function(cb) { - return orig(self.wrap(cb)); + return orig( + self.wrap( + { + mechanism: { + type: 'instrument', + data: {function: 'requestAnimationFrame', handler: orig.name} + } + }, + cb + ) + ); }; }, wrappedBuiltIns @@ -1271,7 +1315,15 @@ Raven.prototype = { function wrapProp(prop, xhr) { if (prop in xhr && isFunction(xhr[prop])) { fill(xhr, prop, function(orig) { - return self.wrap(orig); + return self.wrap( + { + mechanism: { + type: 'instrument', + data: {function: prop, handler: orig.name} + } + }, + orig + ); }); // intentionally don't track filled methods on XHR instances } } @@ -1336,7 +1388,19 @@ Raven.prototype = { xhr, 'onreadystatechange', function(orig) { - return self.wrap(orig, undefined, onreadystatechangeHandler); + return self.wrap( + { + mechanism: { + type: 'instrument', + data: { + function: 'onreadystatechange', + handler: orig.name + } + } + }, + orig, + onreadystatechangeHandler + ); } /* intentionally don't track this instrumentation */ ); } else { @@ -1560,10 +1624,16 @@ Raven.prototype = { return globalServer; }, - _handleOnErrorStackInfo: function() { + _handleOnErrorStackInfo: function(stackInfo, options) { + options = options || {}; + options.mechanism = options.mechanism || { + type: 'onerror', + handled: false + }; + // if we are intentionally ignoring errors via onerror, bail out if (!this._ignoreOnError) { - this._handleStackInfo.apply(this, arguments); + this._handleStackInfo(stackInfo, options); } }, @@ -1700,6 +1770,19 @@ Raven.prototype = { options ); + // Move mechanism from options to exception interface + // We do this, as requiring user to pass `{exception:{mechanism:{ ... }}}` would be + // too much + if (!data.exception.mechanism && data.mechanism) { + data.exception.mechanism = data.mechanism; + delete data.mechanism; + } + + data.exception.mechanism = objectMerge(data.exception.mechanism || {}, { + type: 'generic', + handled: true + }); + // Fire away! this._send(data); }, diff --git a/test/raven.test.js b/test/raven.test.js index c6026b0aeb4c..dd6dd58661b8 100644 --- a/test/raven.test.js +++ b/test/raven.test.js @@ -633,7 +633,7 @@ describe('globals', function() { 'http://example.com/override.js', 10, frames.slice(0), - {} + {mechanism: {}} ); assert.deepEqual(Raven._send.lastCall.args, [ { @@ -646,13 +646,17 @@ describe('globals', function() { frames: framesFlipped } } - ] + ], + mechanism: { + type: 'generic', + handled: true + } }, transaction: 'http://example.com/file1.js' } ]); - Raven._processException('Error', 'lol', '', 10, frames.slice(0), {}); + Raven._processException('Error', 'lol', '', 10, frames.slice(0), {mechanism: {}}); assert.deepEqual(Raven._send.lastCall.args, [ { exception: { @@ -664,14 +668,19 @@ describe('globals', function() { frames: framesFlipped } } - ] + ], + mechanism: { + type: 'generic', + handled: true + } }, transaction: 'http://example.com/file1.js' } ]); Raven._processException('Error', 'lol', '', 10, frames.slice(0), { - extra: 'awesome' + extra: 'awesome', + mechanism: {} }); assert.deepEqual(Raven._send.lastCall.args, [ { @@ -684,7 +693,11 @@ describe('globals', function() { frames: framesFlipped } } - ] + ], + mechanism: { + type: 'generic', + handled: true + } }, transaction: 'http://example.com/file1.js', extra: 'awesome' @@ -695,14 +708,9 @@ describe('globals', function() { it('should send a proper payload without frames', function() { this.sinon.stub(Raven, '_send'); - Raven._processException( - 'Error', - 'lol', - 'http://example.com/override.js', - 10, - [], - {} - ); + Raven._processException('Error', 'lol', 'http://example.com/override.js', 10, [], { + mechanism: {} + }); assert.deepEqual(Raven._send.lastCall.args, [ { exception: { @@ -720,20 +728,19 @@ describe('globals', function() { ] } } - ] + ], + mechanism: { + type: 'generic', + handled: true + } }, transaction: 'http://example.com/override.js' } ]); - Raven._processException( - 'Error', - 'lol', - 'http://example.com/override.js', - 10, - [], - {} - ); + Raven._processException('Error', 'lol', 'http://example.com/override.js', 10, [], { + mechanism: {} + }); assert.deepEqual(Raven._send.lastCall.args, [ { exception: { @@ -751,14 +758,19 @@ describe('globals', function() { ] } } - ] + ], + mechanism: { + type: 'generic', + handled: true + } }, transaction: 'http://example.com/override.js' } ]); Raven._processException('Error', 'lol', 'http://example.com/override.js', 10, [], { - extra: 'awesome' + extra: 'awesome', + mechanism: {} }); assert.deepEqual(Raven._send.lastCall.args, [ { @@ -777,7 +789,11 @@ describe('globals', function() { ] } } - ] + ], + mechanism: { + type: 'generic', + handled: true + } }, transaction: 'http://example.com/override.js', extra: 'awesome' @@ -1980,7 +1996,16 @@ describe('globals', function() { Raven._handleOnErrorStackInfo(stackInfo, {foo: 'bar'}); assert.equal(Raven._handleStackInfo.callCount, 1); - assert.deepEqual(Raven._handleStackInfo.lastCall.args, [stackInfo, {foo: 'bar'}]); + assert.deepEqual(Raven._handleStackInfo.lastCall.args, [ + stackInfo, + { + foo: 'bar', + mechanism: { + type: 'onerror', + handled: false + } + } + ]); }); }); @@ -2655,12 +2680,7 @@ describe('Raven (public API)', function() { Raven.context({foo: 'bar'}, broken); }, error); assert.isTrue(Raven.captureException.called); - assert.deepEqual(Raven.captureException.lastCall.args, [ - error, - { - foo: 'bar' - } - ]); + assert.deepEqual(Raven.captureException.lastCall.args, [error, {foo: 'bar'}]); }); it('should capture the exception without options', function() { @@ -2673,7 +2693,7 @@ describe('Raven (public API)', function() { Raven.context(broken); }, error); assert.isTrue(Raven.captureException.called); - assert.deepEqual(Raven.captureException.lastCall.args, [error, undefined]); + assert.deepEqual(Raven.captureException.lastCall.args, [error, {}]); }); it('should execute the callback without arguments', function() { From 5151bfb488b740c8f4ad9d1a537ab78ba49cbe99 Mon Sep 17 00:00:00 2001 From: HazA Date: Wed, 6 Jun 2018 09:01:29 +0200 Subject: [PATCH 62/75] feat: Move docs to root --- Makefile | 20 - {packages/raven-js/docs => docs}/Makefile | 0 {packages/raven-js/docs => docs}/conf.py | 0 {packages/raven-js/docs => docs}/config.rst | 0 .../raven-js/docs => docs}/contributing.rst | 0 {packages/raven-js/docs => docs}/index.rst | 0 {packages/raven-js/docs => docs}/install.rst | 0 .../docs => docs}/integrations/angular.rst | 0 .../docs => docs}/integrations/angularjs.rst | 0 .../docs => docs}/integrations/backbone.rst | 0 .../docs => docs}/integrations/ember.rst | 0 .../docs => docs}/integrations/index.rst | 0 .../integrations/react-native.rst | 0 .../docs => docs}/integrations/react.rst | 0 .../docs => docs}/integrations/vue.rst | 0 {packages/raven-js/docs => docs}/make.bat | 0 .../docs => docs}/sentry-doc-config.json | 0 .../raven-js/docs => docs}/sourcemaps.rst | 0 {packages/raven-js/docs => docs}/tips.rst | 0 {packages/raven-js/docs => docs}/usage.rst | 0 lerna.json | 1 + packages/raven-js/docs/_sentryext/.gitignore | 2 - packages/raven-js/docs/_sentryext/README.rst | 13 - .../raven-js/docs/_sentryext/sentryext.py | 343 ------------------ .../raven-js/docs/_sentryext/verify-docs.py | 113 ------ 25 files changed, 1 insertion(+), 491 deletions(-) delete mode 100644 Makefile rename {packages/raven-js/docs => docs}/Makefile (100%) rename {packages/raven-js/docs => docs}/conf.py (100%) rename {packages/raven-js/docs => docs}/config.rst (100%) rename {packages/raven-js/docs => docs}/contributing.rst (100%) rename {packages/raven-js/docs => docs}/index.rst (100%) rename {packages/raven-js/docs => docs}/install.rst (100%) rename {packages/raven-js/docs => docs}/integrations/angular.rst (100%) rename {packages/raven-js/docs => docs}/integrations/angularjs.rst (100%) rename {packages/raven-js/docs => docs}/integrations/backbone.rst (100%) rename {packages/raven-js/docs => docs}/integrations/ember.rst (100%) rename {packages/raven-js/docs => docs}/integrations/index.rst (100%) rename {packages/raven-js/docs => docs}/integrations/react-native.rst (100%) rename {packages/raven-js/docs => docs}/integrations/react.rst (100%) rename {packages/raven-js/docs => docs}/integrations/vue.rst (100%) rename {packages/raven-js/docs => docs}/make.bat (100%) rename {packages/raven-js/docs => docs}/sentry-doc-config.json (100%) rename {packages/raven-js/docs => docs}/sourcemaps.rst (100%) rename {packages/raven-js/docs => docs}/tips.rst (100%) rename {packages/raven-js/docs => docs}/usage.rst (100%) delete mode 100644 packages/raven-js/docs/_sentryext/.gitignore delete mode 100644 packages/raven-js/docs/_sentryext/README.rst delete mode 100644 packages/raven-js/docs/_sentryext/sentryext.py delete mode 100755 packages/raven-js/docs/_sentryext/verify-docs.py diff --git a/Makefile b/Makefile deleted file mode 100644 index f378b15f09dc..000000000000 --- a/Makefile +++ /dev/null @@ -1,20 +0,0 @@ -develop: update-submodules - npm install . - -update-submodules: - git submodule init - git submodule update - -docs: - cd docs; $(MAKE) html - -docs-live: - while true; do \ - sleep 2; \ - $(MAKE) docs; \ - done - -clean: - rm -rf docs/html - -.PHONY: develop update-submodules docs docs-live clean diff --git a/packages/raven-js/docs/Makefile b/docs/Makefile similarity index 100% rename from packages/raven-js/docs/Makefile rename to docs/Makefile diff --git a/packages/raven-js/docs/conf.py b/docs/conf.py similarity index 100% rename from packages/raven-js/docs/conf.py rename to docs/conf.py diff --git a/packages/raven-js/docs/config.rst b/docs/config.rst similarity index 100% rename from packages/raven-js/docs/config.rst rename to docs/config.rst diff --git a/packages/raven-js/docs/contributing.rst b/docs/contributing.rst similarity index 100% rename from packages/raven-js/docs/contributing.rst rename to docs/contributing.rst diff --git a/packages/raven-js/docs/index.rst b/docs/index.rst similarity index 100% rename from packages/raven-js/docs/index.rst rename to docs/index.rst diff --git a/packages/raven-js/docs/install.rst b/docs/install.rst similarity index 100% rename from packages/raven-js/docs/install.rst rename to docs/install.rst diff --git a/packages/raven-js/docs/integrations/angular.rst b/docs/integrations/angular.rst similarity index 100% rename from packages/raven-js/docs/integrations/angular.rst rename to docs/integrations/angular.rst diff --git a/packages/raven-js/docs/integrations/angularjs.rst b/docs/integrations/angularjs.rst similarity index 100% rename from packages/raven-js/docs/integrations/angularjs.rst rename to docs/integrations/angularjs.rst diff --git a/packages/raven-js/docs/integrations/backbone.rst b/docs/integrations/backbone.rst similarity index 100% rename from packages/raven-js/docs/integrations/backbone.rst rename to docs/integrations/backbone.rst diff --git a/packages/raven-js/docs/integrations/ember.rst b/docs/integrations/ember.rst similarity index 100% rename from packages/raven-js/docs/integrations/ember.rst rename to docs/integrations/ember.rst diff --git a/packages/raven-js/docs/integrations/index.rst b/docs/integrations/index.rst similarity index 100% rename from packages/raven-js/docs/integrations/index.rst rename to docs/integrations/index.rst diff --git a/packages/raven-js/docs/integrations/react-native.rst b/docs/integrations/react-native.rst similarity index 100% rename from packages/raven-js/docs/integrations/react-native.rst rename to docs/integrations/react-native.rst diff --git a/packages/raven-js/docs/integrations/react.rst b/docs/integrations/react.rst similarity index 100% rename from packages/raven-js/docs/integrations/react.rst rename to docs/integrations/react.rst diff --git a/packages/raven-js/docs/integrations/vue.rst b/docs/integrations/vue.rst similarity index 100% rename from packages/raven-js/docs/integrations/vue.rst rename to docs/integrations/vue.rst diff --git a/packages/raven-js/docs/make.bat b/docs/make.bat similarity index 100% rename from packages/raven-js/docs/make.bat rename to docs/make.bat diff --git a/packages/raven-js/docs/sentry-doc-config.json b/docs/sentry-doc-config.json similarity index 100% rename from packages/raven-js/docs/sentry-doc-config.json rename to docs/sentry-doc-config.json diff --git a/packages/raven-js/docs/sourcemaps.rst b/docs/sourcemaps.rst similarity index 100% rename from packages/raven-js/docs/sourcemaps.rst rename to docs/sourcemaps.rst diff --git a/packages/raven-js/docs/tips.rst b/docs/tips.rst similarity index 100% rename from packages/raven-js/docs/tips.rst rename to docs/tips.rst diff --git a/packages/raven-js/docs/usage.rst b/docs/usage.rst similarity index 100% rename from packages/raven-js/docs/usage.rst rename to docs/usage.rst diff --git a/lerna.json b/lerna.json index 93e4b4cd5b40..f6e4e8d830ba 100644 --- a/lerna.json +++ b/lerna.json @@ -4,6 +4,7 @@ "packages": [ "packages/*" ], + "ignore": "raven-js", "npmClient": "yarn", "useWorkspaces": true } diff --git a/packages/raven-js/docs/_sentryext/.gitignore b/packages/raven-js/docs/_sentryext/.gitignore deleted file mode 100644 index 52e4e61140d1..000000000000 --- a/packages/raven-js/docs/_sentryext/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -*.pyc -*.pyo diff --git a/packages/raven-js/docs/_sentryext/README.rst b/packages/raven-js/docs/_sentryext/README.rst deleted file mode 100644 index 230ecb404052..000000000000 --- a/packages/raven-js/docs/_sentryext/README.rst +++ /dev/null @@ -1,13 +0,0 @@ -Sentry Sphinx Extension -======================= - -This repository contains sphinx support for embedding the documentation. - -To use it, put this at the end of the `conf.py`: - -.. sourcecode:: python - - if os.environ.get('SENTRY_FEDERATED_DOCS') != '1': - sys.path.insert(0, os.path.abspath('_sentryext')) - import sentryext - sentryext.activate() diff --git a/packages/raven-js/docs/_sentryext/sentryext.py b/packages/raven-js/docs/_sentryext/sentryext.py deleted file mode 100644 index 47ff91d07ec1..000000000000 --- a/packages/raven-js/docs/_sentryext/sentryext.py +++ /dev/null @@ -1,343 +0,0 @@ -import re -import os -import sys -import json -import posixpath -from urlparse import urljoin -from docutils import nodes -from docutils.io import StringOutput -from docutils.nodes import document, section - -from sphinx import addnodes -from sphinx.domains import Domain -from sphinx.util.osutil import relative_uri -from sphinx.builders.html import StandaloneHTMLBuilder, DirectoryHTMLBuilder - - -_edition_re = re.compile(r'^(\s*)..\s+sentry:edition::\s*(.*?)$') -_docedition_re = re.compile(r'^..\s+sentry:docedition::\s*(.*?)$') - - -EXTERNAL_DOCS_URL = 'https://docs.getsentry.com/hosted/' - - -def make_link_builder(app, base_page): - def link_builder(edition, to_current=False): - here = app.builder.get_target_uri(base_page) - if to_current: - uri = relative_uri(here, '../' + edition + '/' + - here.lstrip('/')) or './' - else: - root = app.builder.get_target_uri(app.env.config.master_doc) or './' - uri = relative_uri(here, root) or '' - if app.builder.name in ('sentryhtml', 'html'): - uri = (posixpath.dirname(uri or '.') or '.').rstrip('/') + \ - '/../' + edition + '/index.html' - else: - uri = uri.rstrip('/') + '/../' + edition + '/' - return uri - return link_builder - - -def html_page_context(app, pagename, templatename, context, doctree): - rendered_toc = get_rendered_toctree(app.builder, pagename) - context['full_toc'] = rendered_toc - - context['link_to_edition'] = make_link_builder(app, pagename) - - def render_sitemap(): - return get_rendered_toctree(app.builder, 'sitemap', collapse=False) - context['render_sitemap'] = render_sitemap - - context['sentry_doc_variant'] = app.env.config.sentry_doc_variant - - -def get_rendered_toctree(builder, docname, prune=False, collapse=True): - fulltoc = build_full_toctree(builder, docname, prune=prune, - collapse=collapse) - rendered_toc = builder.render_partial(fulltoc)['fragment'] - return rendered_toc - - -def build_full_toctree(builder, docname, prune=False, collapse=True): - env = builder.env - doctree = env.get_doctree(env.config.master_doc) - toctrees = [] - for toctreenode in doctree.traverse(addnodes.toctree): - toctrees.append(env.resolve_toctree(docname, builder, toctreenode, - collapse=collapse, - titles_only=True, - includehidden=True, - prune=prune)) - if not toctrees: - return None - result = toctrees[0] - for toctree in toctrees[1:]: - if toctree: - result.extend(toctree.children) - env.resolve_references(result, docname, builder) - return result - - -def parse_rst(state, content_offset, doc): - node = nodes.section() - # hack around title style bookkeeping - surrounding_title_styles = state.memo.title_styles - surrounding_section_level = state.memo.section_level - state.memo.title_styles = [] - state.memo.section_level = 0 - state.nested_parse(doc, content_offset, node, match_titles=1) - state.memo.title_styles = surrounding_title_styles - state.memo.section_level = surrounding_section_level - return node.children - - -class SentryDomain(Domain): - name = 'sentry' - label = 'Sentry' - directives = { - } - - -def preprocess_source(app, docname, source): - source_lines = source[0].splitlines() - - def _find_block(indent, lineno): - block_indent = len(indent.expandtabs()) - rv = [] - actual_indent = None - - while lineno < end: - line = source_lines[lineno] - if not line.strip(): - rv.append(u'') - else: - expanded_line = line.expandtabs() - indent = len(expanded_line) - len(expanded_line.lstrip()) - if indent > block_indent: - if actual_indent is None or indent < actual_indent: - actual_indent = indent - rv.append(line) - else: - break - lineno += 1 - - if rv: - rv.append(u'') - if actual_indent: - rv = [x[actual_indent:] for x in rv] - return rv, lineno - - result = [] - - lineno = 0 - end = len(source_lines) - while lineno < end: - line = source_lines[lineno] - match = _edition_re.match(line) - if match is None: - # Skip sentry:docedition. We don't want those. - match = _docedition_re.match(line) - if match is None: - result.append(line) - lineno += 1 - continue - lineno += 1 - indent, tags = match.groups() - tags = set(x.strip() for x in tags.split(',') if x.strip()) - should_include = app.env.config.sentry_doc_variant in tags - block_lines, lineno = _find_block(indent, lineno) - if should_include: - result.extend(block_lines) - - source[:] = [u'\n'.join(result)] - - -def builder_inited(app): - app.env.sentry_referenced_docs = {} - - -def remove_irrelevant_trees(app, doctree): - docname = app.env.temp_data['docname'] - rd = app.env.sentry_referenced_docs - for toctreenode in doctree.traverse(addnodes.toctree): - for e in toctreenode['entries']: - rd.setdefault(str(e[1]), set()).add(docname) - - -def is_referenced(docname, references): - if docname == 'index': - return True - seen = set([docname]) - to_process = set(references.get(docname) or ()) - while to_process: - if 'index' in to_process: - return True - next = to_process.pop() - seen.add(next) - for backlink in references.get(next) or (): - if backlink in seen: - continue - else: - to_process.add(backlink) - return False - - -class SphinxBuilderMixin(object): - build_wizard_fragment = False - - @property - def add_permalinks(self): - return not self.build_wizard_fragment - - def get_target_uri(self, *args, **kwargs): - rv = super(SphinxBuilderMixin, self).get_target_uri(*args, **kwargs) - if self.build_wizard_fragment: - rv = urljoin(EXTERNAL_DOCS_URL, rv) - return rv - - def get_relative_uri(self, from_, to, typ=None): - if self.build_wizard_fragment: - return self.get_target_uri(to, typ) - return super(SphinxBuilderMixin, self).get_relative_uri( - from_, to, typ) - - def write_doc(self, docname, doctree): - if is_referenced(docname, self.app.env.sentry_referenced_docs): - return super(SphinxBuilderMixin, self).write_doc(docname, doctree) - else: - print 'skipping because unreferenced' - - def __iter_wizard_files(self): - for dirpath, dirnames, filenames in os.walk(self.srcdir): - dirnames[:] = [x for x in dirnames if x[:1] not in '_.'] - for filename in filenames: - if filename == 'sentry-doc-config.json': - full_path = os.path.join(self.srcdir, dirpath) - base_path = full_path[len(self.srcdir):].strip('/\\') \ - .replace(os.path.sep, '/') - yield os.path.join(full_path, filename), base_path - - def __build_wizard_section(self, base_path, snippets): - trees = {} - rv = [] - - def _build_node(node): - original_header_level = self.docsettings.initial_header_level - # bump initial header level to two - self.docsettings.initial_header_level = 2 - # indicate that we're building for the wizard fragements. - # This changes url generation and more. - self.build_wizard_fragment = True - # Embed pygments colors as inline styles - original_args = self.highlighter.formatter_args - self.highlighter.formatter_args = original_args.copy() - self.highlighter.formatter_args['noclasses'] = True - try: - sub_doc = document(self.docsettings, - doctree.reporter) - sub_doc += node - destination = StringOutput(encoding='utf-8') - self.current_docname = docname - self.docwriter.write(sub_doc, destination) - self.docwriter.assemble_parts() - rv.append(self.docwriter.parts['fragment']) - finally: - self.build_wizard_fragment = False - self.highlighter.formatter_args = original_args - self.docsettings.initial_header_level = original_header_level - - for snippet in snippets: - if '#' not in snippet: - snippet_path = snippet - section_name = None - else: - snippet_path, section_name = snippet.split('#', 1) - docname = posixpath.join(base_path, snippet_path) - if docname in trees: - doctree = trees.get(docname) - else: - doctree = self.env.get_and_resolve_doctree(docname, self) - trees[docname] = doctree - - if section_name is None: - _build_node(next(iter(doctree.traverse(section)))) - else: - for sect in doctree.traverse(section): - if section_name in sect['ids']: - _build_node(sect) - - return u'\n\n'.join(rv) - - def __write_wizard(self, data, base_path): - for uid, framework_data in data.get('wizards', {}).iteritems(): - body = self.__build_wizard_section(base_path, - framework_data['snippets']) - - fn = os.path.join(self.outdir, '_wizards', '%s.json' % uid) - try: - os.makedirs(os.path.dirname(fn)) - except OSError: - pass - - doc_link = framework_data.get('doc_link') - if doc_link is not None: - doc_link = urljoin(EXTERNAL_DOCS_URL, - posixpath.join(base_path, doc_link)) - with open(fn, 'w') as f: - json.dump({ - 'name': framework_data.get('name') or uid.title(), - 'is_framework': framework_data.get('is_framework', False), - 'doc_link': doc_link, - 'client_lib': framework_data.get('client_lib'), - 'body': body - }, f) - f.write('\n') - - def __write_wizards(self): - for filename, base_path in self.__iter_wizard_files(): - with open(filename) as f: - data = json.load(f) - self.__write_wizard(data, base_path) - - def finish(self): - super(SphinxBuilderMixin, self).finish() - self.__write_wizards() - - -class SentryStandaloneHTMLBuilder(SphinxBuilderMixin, StandaloneHTMLBuilder): - name = 'sentryhtml' - - -class SentryDirectoryHTMLBuilder(SphinxBuilderMixin, DirectoryHTMLBuilder): - name = 'sentrydirhtml' - - -def setup(app): - from sphinx.highlighting import lexers - from pygments.lexers.web import PhpLexer - lexers['php'] = PhpLexer(startinline=True) - - app.add_domain(SentryDomain) - app.connect('builder-inited', builder_inited) - app.connect('html-page-context', html_page_context) - app.connect('source-read', preprocess_source) - app.connect('doctree-read', remove_irrelevant_trees) - app.add_builder(SentryStandaloneHTMLBuilder) - app.add_builder(SentryDirectoryHTMLBuilder) - app.add_config_value('sentry_doc_variant', None, 'env') - - -def activate(): - """Changes the config to something that the sentry doc infrastructure - expects. - """ - frm = sys._getframe(1) - globs = frm.f_globals - - globs.setdefault('sentry_doc_variant', - os.environ.get('SENTRY_DOC_VARIANT', 'self')) - globs['extensions'] = list(globs.get('extensions') or ()) + ['sentryext'] - globs['primary_domain'] = 'std' - globs['exclude_patterns'] = list(globs.get('exclude_patterns') - or ()) + ['_sentryext'] diff --git a/packages/raven-js/docs/_sentryext/verify-docs.py b/packages/raven-js/docs/_sentryext/verify-docs.py deleted file mode 100755 index 2caeaf4a3865..000000000000 --- a/packages/raven-js/docs/_sentryext/verify-docs.py +++ /dev/null @@ -1,113 +0,0 @@ -#!/usr/bin/env python -# -*- coding: utf-8 -*- -""" -This can be run as a commit hook to ensure that the rst files do not contain -some of the more frustrating issues for federated doc support. -""" -import os -import re -import sys -import errno -import subprocess - - -_ref_target_re = re.compile(r'^\.\.\s+_([^:]+):') -_doc_ref_re = re.compile(r':doc:`([^`]+)`') -_explicit_target_re = re.compile(r'.+?\s+\<(.*?)\>') - - -def find_git_root(): - here = os.getcwd() - while 1: - if os.path.isdir(os.path.join(here, '.git')): - return here - node = os.path.dirname(here) - if node == here: - break - here = node - - -def get_ref_target(target): - match = _explicit_target_re.search(target) - if match is not None: - return match.group(1) - return target - - -def find_mistakes(iterable, valid_ref_prefixes=()): - def mistake(message): - return idx + 1, line, message - - for idx, line in enumerate(iterable): - # Make sure all lines are prefixed appropriately - match = _ref_target_re.match(line) - if match is not None: - ref_target = match.group(1) - if not ref_target.startswith(valid_ref_prefixes): - yield mistake('Reference is not prefixed with a valid prefix ' - '(valid prefixes: %s)' % - ', '.join('"%s"' % x for x in valid_ref_prefixes)) - - # Disallow absolute doc links except /index - match = _doc_ref_re.match(line) - if match is not None: - target = get_ref_target(match.group(1)) - if target != '/index' and target[:1] == '/': - yield mistake('Absolute doc link found. This seems like a ' - 'terrible idea.') - - -def get_valid_ref_prefixes(): - url = subprocess.Popen(['git', 'ls-remote', '--get-url'], - stdout=subprocess.PIPE).communicate()[0].strip() - if not url: - return () - - repo_name = url.split('/')[-1] - if repo_name.endswith('.git'): - repo_name = repo_name[:-4] - rv = [repo_name + '-'] - if repo_name.startswith('raven-'): - rv.append(repo_name[6:] + '-') - return tuple(rv) - - -def warn(msg): - print >> sys.stderr, 'WARNING: %s' % msg - - -def find_modified_docs(): - stdout = subprocess.Popen(['git', 'diff-index', '--cached', - '--name-only', 'HEAD'], - stdout=subprocess.PIPE).communicate()[0] - for line in stdout.splitlines(): - if line.endswith('.rst'): - yield line - - -def main(): - valid_ref_prefixes = None - warnings = 0 - for filename in find_modified_docs(): - if valid_ref_prefixes is None: - valid_ref_prefixes = get_valid_ref_prefixes() - try: - with open(filename) as f: - mistakes = find_mistakes(f, valid_ref_prefixes) - for lineno, line, msg in mistakes: - warn('%s (%s:%s)' % ( - msg, - filename, - lineno, - )) - warnings += 1 - except IOError as e: - if e.errno != errno.ENOENT: - raise - - if warnings > 0: - sys.exit(1) - - -if __name__ == '__main__': - main() From 565042ca0fec14d4fda508ac73d16140266dffa5 Mon Sep 17 00:00:00 2001 From: HazA Date: Wed, 6 Jun 2018 09:05:54 +0200 Subject: [PATCH 63/75] feat: dist folder for raven-js --- .gitignore | 1 + .../raven.js | 4222 +++++++++++++++++ .../raven.min.js | 4 + .../raven.min.js.map | 1 + .../angular,console,ember,require/raven.js | 4172 ++++++++++++++++ .../raven.min.js | 4 + .../raven.min.js.map | 1 + .../dist/angular,console,ember,vue/raven.js | 4205 ++++++++++++++++ .../angular,console,ember,vue/raven.min.js | 4 + .../raven.min.js.map | 1 + .../dist/angular,console,ember/raven.js | 4155 ++++++++++++++++ .../dist/angular,console,ember/raven.min.js | 4 + .../angular,console,ember/raven.min.js.map | 1 + .../dist/angular,console,require,vue/raven.js | 4189 ++++++++++++++++ .../angular,console,require,vue/raven.min.js | 4 + .../raven.min.js.map | 1 + .../dist/angular,console,require/raven.js | 4139 ++++++++++++++++ .../dist/angular,console,require/raven.min.js | 4 + .../angular,console,require/raven.min.js.map | 1 + .../dist/angular,console,vue/raven.js | 4172 ++++++++++++++++ .../dist/angular,console,vue/raven.min.js | 4 + .../dist/angular,console,vue/raven.min.js.map | 1 + .../raven-js/dist/angular,console/raven.js | 4122 ++++++++++++++++ .../dist/angular,console/raven.min.js | 4 + .../dist/angular,console/raven.min.js.map | 1 + .../dist/angular,ember,require,vue/raven.js | 4187 ++++++++++++++++ .../angular,ember,require,vue/raven.min.js | 4 + .../raven.min.js.map | 1 + .../dist/angular,ember,require/raven.js | 4137 ++++++++++++++++ .../dist/angular,ember,require/raven.min.js | 4 + .../angular,ember,require/raven.min.js.map | 1 + .../raven-js/dist/angular,ember,vue/raven.js | 4170 ++++++++++++++++ .../dist/angular,ember,vue/raven.min.js | 4 + .../dist/angular,ember,vue/raven.min.js.map | 1 + packages/raven-js/dist/angular,ember/raven.js | 4120 ++++++++++++++++ .../raven-js/dist/angular,ember/raven.min.js | 4 + .../dist/angular,ember/raven.min.js.map | 1 + .../dist/angular,require,vue/raven.js | 4154 ++++++++++++++++ .../dist/angular,require,vue/raven.min.js | 4 + .../dist/angular,require,vue/raven.min.js.map | 1 + .../raven-js/dist/angular,require/raven.js | 4104 ++++++++++++++++ .../dist/angular,require/raven.min.js | 4 + .../dist/angular,require/raven.min.js.map | 1 + packages/raven-js/dist/angular,vue/raven.js | 4137 ++++++++++++++++ .../raven-js/dist/angular,vue/raven.min.js | 4 + .../dist/angular,vue/raven.min.js.map | 1 + packages/raven-js/dist/angular/raven.js | 4087 ++++++++++++++++ packages/raven-js/dist/angular/raven.min.js | 4 + .../raven-js/dist/angular/raven.min.js.map | 1 + .../dist/console,ember,require,vue/raven.js | 4145 ++++++++++++++++ .../console,ember,require,vue/raven.min.js | 4 + .../raven.min.js.map | 1 + .../dist/console,ember,require/raven.js | 4095 ++++++++++++++++ .../dist/console,ember,require/raven.min.js | 4 + .../console,ember,require/raven.min.js.map | 1 + .../raven-js/dist/console,ember,vue/raven.js | 4128 ++++++++++++++++ .../dist/console,ember,vue/raven.min.js | 4 + .../dist/console,ember,vue/raven.min.js.map | 1 + packages/raven-js/dist/console,ember/raven.js | 4078 ++++++++++++++++ .../raven-js/dist/console,ember/raven.min.js | 4 + .../dist/console,ember/raven.min.js.map | 1 + .../dist/console,require,vue/raven.js | 4112 ++++++++++++++++ .../dist/console,require,vue/raven.min.js | 4 + .../dist/console,require,vue/raven.min.js.map | 1 + .../raven-js/dist/console,require/raven.js | 4062 ++++++++++++++++ .../dist/console,require/raven.min.js | 4 + .../dist/console,require/raven.min.js.map | 1 + packages/raven-js/dist/console,vue/raven.js | 4095 ++++++++++++++++ .../raven-js/dist/console,vue/raven.min.js | 4 + .../dist/console,vue/raven.min.js.map | 1 + packages/raven-js/dist/console/raven.js | 4045 ++++++++++++++++ packages/raven-js/dist/console/raven.min.js | 4 + .../raven-js/dist/console/raven.min.js.map | 1 + .../raven-js/dist/ember,require,vue/raven.js | 4110 ++++++++++++++++ .../dist/ember,require,vue/raven.min.js | 4 + .../dist/ember,require,vue/raven.min.js.map | 1 + packages/raven-js/dist/ember,require/raven.js | 4060 ++++++++++++++++ .../raven-js/dist/ember,require/raven.min.js | 4 + .../dist/ember,require/raven.min.js.map | 1 + packages/raven-js/dist/ember,vue/raven.js | 4093 ++++++++++++++++ packages/raven-js/dist/ember,vue/raven.min.js | 4 + .../raven-js/dist/ember,vue/raven.min.js.map | 1 + packages/raven-js/dist/ember/raven.js | 4043 ++++++++++++++++ packages/raven-js/dist/ember/raven.min.js | 4 + packages/raven-js/dist/ember/raven.min.js.map | 1 + packages/raven-js/dist/plugins/angular.js | 815 ++++ packages/raven-js/dist/plugins/angular.min.js | 3 + .../raven-js/dist/plugins/angular.min.js.map | 1 + packages/raven-js/dist/plugins/console.js | 817 ++++ packages/raven-js/dist/plugins/console.min.js | 3 + .../raven-js/dist/plugins/console.min.js.map | 1 + packages/raven-js/dist/plugins/ember.js | 46 + packages/raven-js/dist/plugins/ember.min.js | 3 + packages/raven-js/dist/plugins/require.js | 30 + packages/raven-js/dist/plugins/require.min.js | 3 + packages/raven-js/dist/plugins/vue.js | 63 + packages/raven-js/dist/plugins/vue.min.js | 3 + packages/raven-js/dist/raven.js | 4010 ++++++++++++++++ packages/raven-js/dist/raven.min.js | 4 + packages/raven-js/dist/raven.min.js.map | 1 + packages/raven-js/dist/require,vue/raven.js | 4077 ++++++++++++++++ .../raven-js/dist/require,vue/raven.min.js | 4 + .../dist/require,vue/raven.min.js.map | 1 + packages/raven-js/dist/require/raven.js | 4027 ++++++++++++++++ packages/raven-js/dist/require/raven.min.js | 4 + .../raven-js/dist/require/raven.min.js.map | 1 + packages/raven-js/dist/sri.json | 20 + packages/raven-js/dist/vue/raven.js | 4060 ++++++++++++++++ packages/raven-js/dist/vue/raven.min.js | 4 + packages/raven-js/dist/vue/raven.min.js.map | 1 + yarn.lock | 2885 ++++++++++- 111 files changed, 136476 insertions(+), 90 deletions(-) create mode 100644 packages/raven-js/dist/angular,console,ember,require,vue/raven.js create mode 100644 packages/raven-js/dist/angular,console,ember,require,vue/raven.min.js create mode 100644 packages/raven-js/dist/angular,console,ember,require,vue/raven.min.js.map create mode 100644 packages/raven-js/dist/angular,console,ember,require/raven.js create mode 100644 packages/raven-js/dist/angular,console,ember,require/raven.min.js create mode 100644 packages/raven-js/dist/angular,console,ember,require/raven.min.js.map create mode 100644 packages/raven-js/dist/angular,console,ember,vue/raven.js create mode 100644 packages/raven-js/dist/angular,console,ember,vue/raven.min.js create mode 100644 packages/raven-js/dist/angular,console,ember,vue/raven.min.js.map create mode 100644 packages/raven-js/dist/angular,console,ember/raven.js create mode 100644 packages/raven-js/dist/angular,console,ember/raven.min.js create mode 100644 packages/raven-js/dist/angular,console,ember/raven.min.js.map create mode 100644 packages/raven-js/dist/angular,console,require,vue/raven.js create mode 100644 packages/raven-js/dist/angular,console,require,vue/raven.min.js create mode 100644 packages/raven-js/dist/angular,console,require,vue/raven.min.js.map create mode 100644 packages/raven-js/dist/angular,console,require/raven.js create mode 100644 packages/raven-js/dist/angular,console,require/raven.min.js create mode 100644 packages/raven-js/dist/angular,console,require/raven.min.js.map create mode 100644 packages/raven-js/dist/angular,console,vue/raven.js create mode 100644 packages/raven-js/dist/angular,console,vue/raven.min.js create mode 100644 packages/raven-js/dist/angular,console,vue/raven.min.js.map create mode 100644 packages/raven-js/dist/angular,console/raven.js create mode 100644 packages/raven-js/dist/angular,console/raven.min.js create mode 100644 packages/raven-js/dist/angular,console/raven.min.js.map create mode 100644 packages/raven-js/dist/angular,ember,require,vue/raven.js create mode 100644 packages/raven-js/dist/angular,ember,require,vue/raven.min.js create mode 100644 packages/raven-js/dist/angular,ember,require,vue/raven.min.js.map create mode 100644 packages/raven-js/dist/angular,ember,require/raven.js create mode 100644 packages/raven-js/dist/angular,ember,require/raven.min.js create mode 100644 packages/raven-js/dist/angular,ember,require/raven.min.js.map create mode 100644 packages/raven-js/dist/angular,ember,vue/raven.js create mode 100644 packages/raven-js/dist/angular,ember,vue/raven.min.js create mode 100644 packages/raven-js/dist/angular,ember,vue/raven.min.js.map create mode 100644 packages/raven-js/dist/angular,ember/raven.js create mode 100644 packages/raven-js/dist/angular,ember/raven.min.js create mode 100644 packages/raven-js/dist/angular,ember/raven.min.js.map create mode 100644 packages/raven-js/dist/angular,require,vue/raven.js create mode 100644 packages/raven-js/dist/angular,require,vue/raven.min.js create mode 100644 packages/raven-js/dist/angular,require,vue/raven.min.js.map create mode 100644 packages/raven-js/dist/angular,require/raven.js create mode 100644 packages/raven-js/dist/angular,require/raven.min.js create mode 100644 packages/raven-js/dist/angular,require/raven.min.js.map create mode 100644 packages/raven-js/dist/angular,vue/raven.js create mode 100644 packages/raven-js/dist/angular,vue/raven.min.js create mode 100644 packages/raven-js/dist/angular,vue/raven.min.js.map create mode 100644 packages/raven-js/dist/angular/raven.js create mode 100644 packages/raven-js/dist/angular/raven.min.js create mode 100644 packages/raven-js/dist/angular/raven.min.js.map create mode 100644 packages/raven-js/dist/console,ember,require,vue/raven.js create mode 100644 packages/raven-js/dist/console,ember,require,vue/raven.min.js create mode 100644 packages/raven-js/dist/console,ember,require,vue/raven.min.js.map create mode 100644 packages/raven-js/dist/console,ember,require/raven.js create mode 100644 packages/raven-js/dist/console,ember,require/raven.min.js create mode 100644 packages/raven-js/dist/console,ember,require/raven.min.js.map create mode 100644 packages/raven-js/dist/console,ember,vue/raven.js create mode 100644 packages/raven-js/dist/console,ember,vue/raven.min.js create mode 100644 packages/raven-js/dist/console,ember,vue/raven.min.js.map create mode 100644 packages/raven-js/dist/console,ember/raven.js create mode 100644 packages/raven-js/dist/console,ember/raven.min.js create mode 100644 packages/raven-js/dist/console,ember/raven.min.js.map create mode 100644 packages/raven-js/dist/console,require,vue/raven.js create mode 100644 packages/raven-js/dist/console,require,vue/raven.min.js create mode 100644 packages/raven-js/dist/console,require,vue/raven.min.js.map create mode 100644 packages/raven-js/dist/console,require/raven.js create mode 100644 packages/raven-js/dist/console,require/raven.min.js create mode 100644 packages/raven-js/dist/console,require/raven.min.js.map create mode 100644 packages/raven-js/dist/console,vue/raven.js create mode 100644 packages/raven-js/dist/console,vue/raven.min.js create mode 100644 packages/raven-js/dist/console,vue/raven.min.js.map create mode 100644 packages/raven-js/dist/console/raven.js create mode 100644 packages/raven-js/dist/console/raven.min.js create mode 100644 packages/raven-js/dist/console/raven.min.js.map create mode 100644 packages/raven-js/dist/ember,require,vue/raven.js create mode 100644 packages/raven-js/dist/ember,require,vue/raven.min.js create mode 100644 packages/raven-js/dist/ember,require,vue/raven.min.js.map create mode 100644 packages/raven-js/dist/ember,require/raven.js create mode 100644 packages/raven-js/dist/ember,require/raven.min.js create mode 100644 packages/raven-js/dist/ember,require/raven.min.js.map create mode 100644 packages/raven-js/dist/ember,vue/raven.js create mode 100644 packages/raven-js/dist/ember,vue/raven.min.js create mode 100644 packages/raven-js/dist/ember,vue/raven.min.js.map create mode 100644 packages/raven-js/dist/ember/raven.js create mode 100644 packages/raven-js/dist/ember/raven.min.js create mode 100644 packages/raven-js/dist/ember/raven.min.js.map create mode 100644 packages/raven-js/dist/plugins/angular.js create mode 100644 packages/raven-js/dist/plugins/angular.min.js create mode 100644 packages/raven-js/dist/plugins/angular.min.js.map create mode 100644 packages/raven-js/dist/plugins/console.js create mode 100644 packages/raven-js/dist/plugins/console.min.js create mode 100644 packages/raven-js/dist/plugins/console.min.js.map create mode 100644 packages/raven-js/dist/plugins/ember.js create mode 100644 packages/raven-js/dist/plugins/ember.min.js create mode 100644 packages/raven-js/dist/plugins/require.js create mode 100644 packages/raven-js/dist/plugins/require.min.js create mode 100644 packages/raven-js/dist/plugins/vue.js create mode 100644 packages/raven-js/dist/plugins/vue.min.js create mode 100644 packages/raven-js/dist/raven.js create mode 100644 packages/raven-js/dist/raven.min.js create mode 100644 packages/raven-js/dist/raven.min.js.map create mode 100644 packages/raven-js/dist/require,vue/raven.js create mode 100644 packages/raven-js/dist/require,vue/raven.min.js create mode 100644 packages/raven-js/dist/require,vue/raven.min.js.map create mode 100644 packages/raven-js/dist/require/raven.js create mode 100644 packages/raven-js/dist/require/raven.min.js create mode 100644 packages/raven-js/dist/require/raven.min.js.map create mode 100644 packages/raven-js/dist/sri.json create mode 100644 packages/raven-js/dist/vue/raven.js create mode 100644 packages/raven-js/dist/vue/raven.min.js create mode 100644 packages/raven-js/dist/vue/raven.min.js.map diff --git a/.gitignore b/.gitignore index 958f9c96fb5f..cf5ef9dfc1d1 100644 --- a/.gitignore +++ b/.gitignore @@ -6,6 +6,7 @@ docs/_build docs/doctrees build/ dist/ +!packages/raven-js/dist/ coverage/ scratch/ *.pyc diff --git a/packages/raven-js/dist/angular,console,ember,require,vue/raven.js b/packages/raven-js/dist/angular,console,ember,require,vue/raven.js new file mode 100644 index 000000000000..e73c76bd4a9c --- /dev/null +++ b/packages/raven-js/dist/angular,console,ember,require,vue/raven.js @@ -0,0 +1,4222 @@ +/*! Raven.js 3.25.2 (30b6d4e) | github.com/getsentry/raven-js */ + +/* + * Includes TraceKit + * https://github.com/getsentry/TraceKit + * + * Copyright 2018 Matt Robenolt and other contributors + * Released under the BSD license + * https://github.com/getsentry/raven-js/blob/master/LICENSE + * + */ + +(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.Raven = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o' : 'anonymous component') + + (vm._isVue && vm.$options.__file ? ' at ' + vm.$options.__file : '') + ); +} + +function vuePlugin(Raven, Vue) { + Vue = Vue || window.Vue; + + // quit if Vue isn't on the page + if (!Vue || !Vue.config) return; + + var _oldOnError = Vue.config.errorHandler; + Vue.config.errorHandler = function VueErrorHandler(error, vm, info) { + var metaData = {}; + + // vm and lifecycleHook are not always available + if (Object.prototype.toString.call(vm) === '[object Object]') { + metaData.componentName = formatComponentName(vm); + metaData.propsData = vm.$options.propsData; + } + + if (typeof info !== 'undefined') { + metaData.lifecycleHook = info; + } + + Raven.captureException(error, { + extra: metaData + }); + + if (typeof _oldOnError === 'function') { + _oldOnError.call(this, error, vm, info); + } + }; +} + +module.exports = vuePlugin; + +_dereq_(9).addPlugin(module.exports); +},{"9":9}],6:[function(_dereq_,module,exports){ +function RavenConfigError(message) { + this.name = 'RavenConfigError'; + this.message = message; +} +RavenConfigError.prototype = new Error(); +RavenConfigError.prototype.constructor = RavenConfigError; + +module.exports = RavenConfigError; + +},{}],7:[function(_dereq_,module,exports){ +var utils = _dereq_(10); + +var wrapMethod = function(console, level, callback) { + var originalConsoleLevel = console[level]; + var originalConsole = console; + + if (!(level in console)) { + return; + } + + var sentryLevel = level === 'warn' ? 'warning' : level; + + console[level] = function() { + var args = [].slice.call(arguments); + + var msg = utils.safeJoin(args, ' '); + var data = {level: sentryLevel, logger: 'console', extra: {arguments: args}}; + + if (level === 'assert') { + if (args[0] === false) { + // Default browsers message + msg = + 'Assertion failed: ' + (utils.safeJoin(args.slice(1), ' ') || 'console.assert'); + data.extra.arguments = args.slice(1); + callback && callback(msg, data); + } + } else { + callback && callback(msg, data); + } + + // this fails for some browsers. :( + if (originalConsoleLevel) { + // IE9 doesn't allow calling apply on console functions directly + // See: https://stackoverflow.com/questions/5472938/does-ie9-support-console-log-and-is-it-a-real-function#answer-5473193 + Function.prototype.apply.call(originalConsoleLevel, originalConsole, args); + } + }; +}; + +module.exports = { + wrapMethod: wrapMethod +}; + +},{"10":10}],8:[function(_dereq_,module,exports){ +(function (global){ +/*global XDomainRequest:false */ + +var TraceKit = _dereq_(11); +var stringify = _dereq_(12); +var md5 = _dereq_(13); +var RavenConfigError = _dereq_(6); + +var utils = _dereq_(10); +var isErrorEvent = utils.isErrorEvent; +var isDOMError = utils.isDOMError; +var isDOMException = utils.isDOMException; +var isError = utils.isError; +var isObject = utils.isObject; +var isPlainObject = utils.isPlainObject; +var isUndefined = utils.isUndefined; +var isFunction = utils.isFunction; +var isString = utils.isString; +var isArray = utils.isArray; +var isEmptyObject = utils.isEmptyObject; +var each = utils.each; +var objectMerge = utils.objectMerge; +var truncate = utils.truncate; +var objectFrozen = utils.objectFrozen; +var hasKey = utils.hasKey; +var joinRegExp = utils.joinRegExp; +var urlencode = utils.urlencode; +var uuid4 = utils.uuid4; +var htmlTreeAsString = utils.htmlTreeAsString; +var isSameException = utils.isSameException; +var isSameStacktrace = utils.isSameStacktrace; +var parseUrl = utils.parseUrl; +var fill = utils.fill; +var supportsFetch = utils.supportsFetch; +var supportsReferrerPolicy = utils.supportsReferrerPolicy; +var serializeKeysForMessage = utils.serializeKeysForMessage; +var serializeException = utils.serializeException; +var sanitize = utils.sanitize; + +var wrapConsoleMethod = _dereq_(7).wrapMethod; + +var dsnKeys = 'source protocol user pass host port path'.split(' '), + dsnPattern = /^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/; + +function now() { + return +new Date(); +} + +// This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) +var _window = + typeof window !== 'undefined' + ? window + : typeof global !== 'undefined' + ? global + : typeof self !== 'undefined' + ? self + : {}; +var _document = _window.document; +var _navigator = _window.navigator; + +function keepOriginalCallback(original, callback) { + return isFunction(callback) + ? function(data) { + return callback(data, original); + } + : callback; +} + +// First, check for JSON support +// If there is no JSON, we no-op the core features of Raven +// since JSON is required to encode the payload +function Raven() { + this._hasJSON = !!(typeof JSON === 'object' && JSON.stringify); + // Raven can run in contexts where there's no document (react-native) + this._hasDocument = !isUndefined(_document); + this._hasNavigator = !isUndefined(_navigator); + this._lastCapturedException = null; + this._lastData = null; + this._lastEventId = null; + this._globalServer = null; + this._globalKey = null; + this._globalProject = null; + this._globalContext = {}; + this._globalOptions = { + // SENTRY_RELEASE can be injected by https://github.com/getsentry/sentry-webpack-plugin + release: _window.SENTRY_RELEASE && _window.SENTRY_RELEASE.id, + logger: 'javascript', + ignoreErrors: [], + ignoreUrls: [], + whitelistUrls: [], + includePaths: [], + headers: null, + collectWindowErrors: true, + captureUnhandledRejections: true, + maxMessageLength: 0, + // By default, truncates URL values to 250 chars + maxUrlLength: 250, + stackTraceLimit: 50, + autoBreadcrumbs: true, + instrument: true, + sampleRate: 1, + sanitizeKeys: [] + }; + this._fetchDefaults = { + method: 'POST', + keepalive: true, + // Despite all stars in the sky saying that Edge supports old draft syntax, aka 'never', 'always', 'origin' and 'default + // https://caniuse.com/#feat=referrer-policy + // It doesn't. And it throw exception instead of ignoring this parameter... + // REF: https://github.com/getsentry/raven-js/issues/1233 + referrerPolicy: supportsReferrerPolicy() ? 'origin' : '' + }; + this._ignoreOnError = 0; + this._isRavenInstalled = false; + this._originalErrorStackTraceLimit = Error.stackTraceLimit; + // capture references to window.console *and* all its methods first + // before the console plugin has a chance to monkey patch + this._originalConsole = _window.console || {}; + this._originalConsoleMethods = {}; + this._plugins = []; + this._startTime = now(); + this._wrappedBuiltIns = []; + this._breadcrumbs = []; + this._lastCapturedEvent = null; + this._keypressTimeout; + this._location = _window.location; + this._lastHref = this._location && this._location.href; + this._resetBackoff(); + + // eslint-disable-next-line guard-for-in + for (var method in this._originalConsole) { + this._originalConsoleMethods[method] = this._originalConsole[method]; + } +} + +/* + * The core Raven singleton + * + * @this {Raven} + */ + +Raven.prototype = { + // Hardcode version string so that raven source can be loaded directly via + // webpack (using a build step causes webpack #1617). Grunt verifies that + // this value matches package.json during build. + // See: https://github.com/getsentry/raven-js/issues/465 + VERSION: '3.25.2', + + debug: false, + + TraceKit: TraceKit, // alias to TraceKit + + /* + * Configure Raven with a DSN and extra options + * + * @param {string} dsn The public Sentry DSN + * @param {object} options Set of global options [optional] + * @return {Raven} + */ + config: function(dsn, options) { + var self = this; + + if (self._globalServer) { + this._logDebug('error', 'Error: Raven has already been configured'); + return self; + } + if (!dsn) return self; + + var globalOptions = self._globalOptions; + + // merge in options + if (options) { + each(options, function(key, value) { + // tags and extra are special and need to be put into context + if (key === 'tags' || key === 'extra' || key === 'user') { + self._globalContext[key] = value; + } else { + globalOptions[key] = value; + } + }); + } + + self.setDSN(dsn); + + // "Script error." is hard coded into browsers for errors that it can't read. + // this is the result of a script being pulled in from an external domain and CORS. + globalOptions.ignoreErrors.push(/^Script error\.?$/); + globalOptions.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/); + + // join regexp rules into one big rule + globalOptions.ignoreErrors = joinRegExp(globalOptions.ignoreErrors); + globalOptions.ignoreUrls = globalOptions.ignoreUrls.length + ? joinRegExp(globalOptions.ignoreUrls) + : false; + globalOptions.whitelistUrls = globalOptions.whitelistUrls.length + ? joinRegExp(globalOptions.whitelistUrls) + : false; + globalOptions.includePaths = joinRegExp(globalOptions.includePaths); + globalOptions.maxBreadcrumbs = Math.max( + 0, + Math.min(globalOptions.maxBreadcrumbs || 100, 100) + ); // default and hard limit is 100 + + var autoBreadcrumbDefaults = { + xhr: true, + console: true, + dom: true, + location: true, + sentry: true + }; + + var autoBreadcrumbs = globalOptions.autoBreadcrumbs; + if ({}.toString.call(autoBreadcrumbs) === '[object Object]') { + autoBreadcrumbs = objectMerge(autoBreadcrumbDefaults, autoBreadcrumbs); + } else if (autoBreadcrumbs !== false) { + autoBreadcrumbs = autoBreadcrumbDefaults; + } + globalOptions.autoBreadcrumbs = autoBreadcrumbs; + + var instrumentDefaults = { + tryCatch: true + }; + + var instrument = globalOptions.instrument; + if ({}.toString.call(instrument) === '[object Object]') { + instrument = objectMerge(instrumentDefaults, instrument); + } else if (instrument !== false) { + instrument = instrumentDefaults; + } + globalOptions.instrument = instrument; + + TraceKit.collectWindowErrors = !!globalOptions.collectWindowErrors; + + // return for chaining + return self; + }, + + /* + * Installs a global window.onerror error handler + * to capture and report uncaught exceptions. + * At this point, install() is required to be called due + * to the way TraceKit is set up. + * + * @return {Raven} + */ + install: function() { + var self = this; + if (self.isSetup() && !self._isRavenInstalled) { + TraceKit.report.subscribe(function() { + self._handleOnErrorStackInfo.apply(self, arguments); + }); + + if (self._globalOptions.captureUnhandledRejections) { + self._attachPromiseRejectionHandler(); + } + + self._patchFunctionToString(); + + if (self._globalOptions.instrument && self._globalOptions.instrument.tryCatch) { + self._instrumentTryCatch(); + } + + if (self._globalOptions.autoBreadcrumbs) self._instrumentBreadcrumbs(); + + // Install all of the plugins + self._drainPlugins(); + + self._isRavenInstalled = true; + } + + Error.stackTraceLimit = self._globalOptions.stackTraceLimit; + return this; + }, + + /* + * Set the DSN (can be called multiple time unlike config) + * + * @param {string} dsn The public Sentry DSN + */ + setDSN: function(dsn) { + var self = this, + uri = self._parseDSN(dsn), + lastSlash = uri.path.lastIndexOf('/'), + path = uri.path.substr(1, lastSlash); + + self._dsn = dsn; + self._globalKey = uri.user; + self._globalSecret = uri.pass && uri.pass.substr(1); + self._globalProject = uri.path.substr(lastSlash + 1); + + self._globalServer = self._getGlobalServer(uri); + + self._globalEndpoint = + self._globalServer + '/' + path + 'api/' + self._globalProject + '/store/'; + + // Reset backoff state since we may be pointing at a + // new project/server + this._resetBackoff(); + }, + + /* + * Wrap code within a context so Raven can capture errors + * reliably across domains that is executed immediately. + * + * @param {object} options A specific set of options for this context [optional] + * @param {function} func The callback to be immediately executed within the context + * @param {array} args An array of arguments to be called with the callback [optional] + */ + context: function(options, func, args) { + if (isFunction(options)) { + args = func || []; + func = options; + options = undefined; + } + + return this.wrap(options, func).apply(this, args); + }, + + /* + * Wrap code within a context and returns back a new function to be executed + * + * @param {object} options A specific set of options for this context [optional] + * @param {function} func The function to be wrapped in a new context + * @param {function} func A function to call before the try/catch wrapper [optional, private] + * @return {function} The newly wrapped functions with a context + */ + wrap: function(options, func, _before) { + var self = this; + // 1 argument has been passed, and it's not a function + // so just return it + if (isUndefined(func) && !isFunction(options)) { + return options; + } + + // options is optional + if (isFunction(options)) { + func = options; + options = undefined; + } + + // At this point, we've passed along 2 arguments, and the second one + // is not a function either, so we'll just return the second argument. + if (!isFunction(func)) { + return func; + } + + // We don't wanna wrap it twice! + try { + if (func.__raven__) { + return func; + } + + // If this has already been wrapped in the past, return that + if (func.__raven_wrapper__) { + return func.__raven_wrapper__; + } + } catch (e) { + // Just accessing custom props in some Selenium environments + // can cause a "Permission denied" exception (see raven-js#495). + // Bail on wrapping and return the function as-is (defers to window.onerror). + return func; + } + + function wrapped() { + var args = [], + i = arguments.length, + deep = !options || (options && options.deep !== false); + + if (_before && isFunction(_before)) { + _before.apply(this, arguments); + } + + // Recursively wrap all of a function's arguments that are + // functions themselves. + while (i--) args[i] = deep ? self.wrap(options, arguments[i]) : arguments[i]; + + try { + // Attempt to invoke user-land function + // NOTE: If you are a Sentry user, and you are seeing this stack frame, it + // means Raven caught an error invoking your application code. This is + // expected behavior and NOT indicative of a bug with Raven.js. + return func.apply(this, args); + } catch (e) { + self._ignoreNextOnError(); + self.captureException(e, options); + throw e; + } + } + + // copy over properties of the old function + for (var property in func) { + if (hasKey(func, property)) { + wrapped[property] = func[property]; + } + } + wrapped.prototype = func.prototype; + + func.__raven_wrapper__ = wrapped; + // Signal that this function has been wrapped/filled already + // for both debugging and to prevent it to being wrapped/filled twice + wrapped.__raven__ = true; + wrapped.__orig__ = func; + + return wrapped; + }, + + /** + * Uninstalls the global error handler. + * + * @return {Raven} + */ + uninstall: function() { + TraceKit.report.uninstall(); + + this._detachPromiseRejectionHandler(); + this._unpatchFunctionToString(); + this._restoreBuiltIns(); + this._restoreConsole(); + + Error.stackTraceLimit = this._originalErrorStackTraceLimit; + this._isRavenInstalled = false; + + return this; + }, + + /** + * Callback used for `unhandledrejection` event + * + * @param {PromiseRejectionEvent} event An object containing + * promise: the Promise that was rejected + * reason: the value with which the Promise was rejected + * @return void + */ + _promiseRejectionHandler: function(event) { + this._logDebug('debug', 'Raven caught unhandled promise rejection:', event); + this.captureException(event.reason, { + extra: { + unhandledPromiseRejection: true + } + }); + }, + + /** + * Installs the global promise rejection handler. + * + * @return {raven} + */ + _attachPromiseRejectionHandler: function() { + this._promiseRejectionHandler = this._promiseRejectionHandler.bind(this); + _window.addEventListener && + _window.addEventListener('unhandledrejection', this._promiseRejectionHandler); + return this; + }, + + /** + * Uninstalls the global promise rejection handler. + * + * @return {raven} + */ + _detachPromiseRejectionHandler: function() { + _window.removeEventListener && + _window.removeEventListener('unhandledrejection', this._promiseRejectionHandler); + return this; + }, + + /** + * Manually capture an exception and send it over to Sentry + * + * @param {error} ex An exception to be logged + * @param {object} options A specific set of options for this error [optional] + * @return {Raven} + */ + captureException: function(ex, options) { + options = objectMerge({trimHeadFrames: 0}, options ? options : {}); + + if (isErrorEvent(ex) && ex.error) { + // If it is an ErrorEvent with `error` property, extract it to get actual Error + ex = ex.error; + } else if (isDOMError(ex) || isDOMException(ex)) { + // If it is a DOMError or DOMException (which are legacy APIs, but still supported in some browsers) + // then we just extract the name and message, as they don't provide anything else + // https://developer.mozilla.org/en-US/docs/Web/API/DOMError + // https://developer.mozilla.org/en-US/docs/Web/API/DOMException + var name = ex.name || (isDOMError(ex) ? 'DOMError' : 'DOMException'); + var message = ex.message ? name + ': ' + ex.message : name; + + return this.captureMessage( + message, + objectMerge(options, { + // neither DOMError or DOMException provide stack trace and we most likely wont get it this way as well + // but it's barely any overhead so we may at least try + stacktrace: true, + trimHeadFrames: options.trimHeadFrames + 1 + }) + ); + } else if (isError(ex)) { + // we have a real Error object + ex = ex; + } else if (isPlainObject(ex)) { + // If it is plain Object, serialize it manually and extract options + // This will allow us to group events based on top-level keys + // which is much better than creating new group when any key/value change + options = this._getCaptureExceptionOptionsFromPlainObject(options, ex); + ex = new Error(options.message); + } else { + // If none of previous checks were valid, then it means that + // it's not a DOMError/DOMException + // it's not a plain Object + // it's not a valid ErrorEvent (one with an error property) + // it's not an Error + // So bail out and capture it as a simple message: + return this.captureMessage( + ex, + objectMerge(options, { + stacktrace: true, // if we fall back to captureMessage, default to attempting a new trace + trimHeadFrames: options.trimHeadFrames + 1 + }) + ); + } + + // Store the raw exception object for potential debugging and introspection + this._lastCapturedException = ex; + + // TraceKit.report will re-raise any exception passed to it, + // which means you have to wrap it in try/catch. Instead, we + // can wrap it here and only re-raise if TraceKit.report + // raises an exception different from the one we asked to + // report on. + try { + var stack = TraceKit.computeStackTrace(ex); + this._handleStackInfo(stack, options); + } catch (ex1) { + if (ex !== ex1) { + throw ex1; + } + } + + return this; + }, + + _getCaptureExceptionOptionsFromPlainObject: function(currentOptions, ex) { + var exKeys = Object.keys(ex).sort(); + var options = objectMerge(currentOptions, { + message: + 'Non-Error exception captured with keys: ' + serializeKeysForMessage(exKeys), + fingerprint: [md5(exKeys)], + extra: currentOptions.extra || {} + }); + options.extra.__serialized__ = serializeException(ex); + + return options; + }, + + /* + * Manually send a message to Sentry + * + * @param {string} msg A plain message to be captured in Sentry + * @param {object} options A specific set of options for this message [optional] + * @return {Raven} + */ + captureMessage: function(msg, options) { + // config() automagically converts ignoreErrors from a list to a RegExp so we need to test for an + // early call; we'll error on the side of logging anything called before configuration since it's + // probably something you should see: + if ( + !!this._globalOptions.ignoreErrors.test && + this._globalOptions.ignoreErrors.test(msg) + ) { + return; + } + + options = options || {}; + msg = msg + ''; // Make sure it's actually a string + + var data = objectMerge( + { + message: msg + }, + options + ); + + var ex; + // Generate a "synthetic" stack trace from this point. + // NOTE: If you are a Sentry user, and you are seeing this stack frame, it is NOT indicative + // of a bug with Raven.js. Sentry generates synthetic traces either by configuration, + // or if it catches a thrown object without a "stack" property. + try { + throw new Error(msg); + } catch (ex1) { + ex = ex1; + } + + // null exception name so `Error` isn't prefixed to msg + ex.name = null; + var stack = TraceKit.computeStackTrace(ex); + + // stack[0] is `throw new Error(msg)` call itself, we are interested in the frame that was just before that, stack[1] + var initialCall = isArray(stack.stack) && stack.stack[1]; + + // if stack[1] is `Raven.captureException`, it means that someone passed a string to it and we redirected that call + // to be handled by `captureMessage`, thus `initialCall` is the 3rd one, not 2nd + // initialCall => captureException(string) => captureMessage(string) + if (initialCall && initialCall.func === 'Raven.captureException') { + initialCall = stack.stack[2]; + } + + var fileurl = (initialCall && initialCall.url) || ''; + + if ( + !!this._globalOptions.ignoreUrls.test && + this._globalOptions.ignoreUrls.test(fileurl) + ) { + return; + } + + if ( + !!this._globalOptions.whitelistUrls.test && + !this._globalOptions.whitelistUrls.test(fileurl) + ) { + return; + } + + if (this._globalOptions.stacktrace || (options && options.stacktrace)) { + // fingerprint on msg, not stack trace (legacy behavior, could be revisited) + data.fingerprint = data.fingerprint == null ? msg : data.fingerprint; + + options = objectMerge( + { + trimHeadFrames: 0 + }, + options + ); + // Since we know this is a synthetic trace, the top frame (this function call) + // MUST be from Raven.js, so mark it for trimming + // We add to the trim counter so that callers can choose to trim extra frames, such + // as utility functions. + options.trimHeadFrames += 1; + + var frames = this._prepareFrames(stack, options); + data.stacktrace = { + // Sentry expects frames oldest to newest + frames: frames.reverse() + }; + } + + // Make sure that fingerprint is always wrapped in an array + if (data.fingerprint) { + data.fingerprint = isArray(data.fingerprint) + ? data.fingerprint + : [data.fingerprint]; + } + + // Fire away! + this._send(data); + + return this; + }, + + captureBreadcrumb: function(obj) { + var crumb = objectMerge( + { + timestamp: now() / 1000 + }, + obj + ); + + if (isFunction(this._globalOptions.breadcrumbCallback)) { + var result = this._globalOptions.breadcrumbCallback(crumb); + + if (isObject(result) && !isEmptyObject(result)) { + crumb = result; + } else if (result === false) { + return this; + } + } + + this._breadcrumbs.push(crumb); + if (this._breadcrumbs.length > this._globalOptions.maxBreadcrumbs) { + this._breadcrumbs.shift(); + } + return this; + }, + + addPlugin: function(plugin /*arg1, arg2, ... argN*/) { + var pluginArgs = [].slice.call(arguments, 1); + + this._plugins.push([plugin, pluginArgs]); + if (this._isRavenInstalled) { + this._drainPlugins(); + } + + return this; + }, + + /* + * Set/clear a user to be sent along with the payload. + * + * @param {object} user An object representing user data [optional] + * @return {Raven} + */ + setUserContext: function(user) { + // Intentionally do not merge here since that's an unexpected behavior. + this._globalContext.user = user; + + return this; + }, + + /* + * Merge extra attributes to be sent along with the payload. + * + * @param {object} extra An object representing extra data [optional] + * @return {Raven} + */ + setExtraContext: function(extra) { + this._mergeContext('extra', extra); + + return this; + }, + + /* + * Merge tags to be sent along with the payload. + * + * @param {object} tags An object representing tags [optional] + * @return {Raven} + */ + setTagsContext: function(tags) { + this._mergeContext('tags', tags); + + return this; + }, + + /* + * Clear all of the context. + * + * @return {Raven} + */ + clearContext: function() { + this._globalContext = {}; + + return this; + }, + + /* + * Get a copy of the current context. This cannot be mutated. + * + * @return {object} copy of context + */ + getContext: function() { + // lol javascript + return JSON.parse(stringify(this._globalContext)); + }, + + /* + * Set environment of application + * + * @param {string} environment Typically something like 'production'. + * @return {Raven} + */ + setEnvironment: function(environment) { + this._globalOptions.environment = environment; + + return this; + }, + + /* + * Set release version of application + * + * @param {string} release Typically something like a git SHA to identify version + * @return {Raven} + */ + setRelease: function(release) { + this._globalOptions.release = release; + + return this; + }, + + /* + * Set the dataCallback option + * + * @param {function} callback The callback to run which allows the + * data blob to be mutated before sending + * @return {Raven} + */ + setDataCallback: function(callback) { + var original = this._globalOptions.dataCallback; + this._globalOptions.dataCallback = keepOriginalCallback(original, callback); + return this; + }, + + /* + * Set the breadcrumbCallback option + * + * @param {function} callback The callback to run which allows filtering + * or mutating breadcrumbs + * @return {Raven} + */ + setBreadcrumbCallback: function(callback) { + var original = this._globalOptions.breadcrumbCallback; + this._globalOptions.breadcrumbCallback = keepOriginalCallback(original, callback); + return this; + }, + + /* + * Set the shouldSendCallback option + * + * @param {function} callback The callback to run which allows + * introspecting the blob before sending + * @return {Raven} + */ + setShouldSendCallback: function(callback) { + var original = this._globalOptions.shouldSendCallback; + this._globalOptions.shouldSendCallback = keepOriginalCallback(original, callback); + return this; + }, + + /** + * Override the default HTTP transport mechanism that transmits data + * to the Sentry server. + * + * @param {function} transport Function invoked instead of the default + * `makeRequest` handler. + * + * @return {Raven} + */ + setTransport: function(transport) { + this._globalOptions.transport = transport; + + return this; + }, + + /* + * Get the latest raw exception that was captured by Raven. + * + * @return {error} + */ + lastException: function() { + return this._lastCapturedException; + }, + + /* + * Get the last event id + * + * @return {string} + */ + lastEventId: function() { + return this._lastEventId; + }, + + /* + * Determine if Raven is setup and ready to go. + * + * @return {boolean} + */ + isSetup: function() { + if (!this._hasJSON) return false; // needs JSON support + if (!this._globalServer) { + if (!this.ravenNotConfiguredError) { + this.ravenNotConfiguredError = true; + this._logDebug('error', 'Error: Raven has not been configured.'); + } + return false; + } + return true; + }, + + afterLoad: function() { + // TODO: remove window dependence? + + // Attempt to initialize Raven on load + var RavenConfig = _window.RavenConfig; + if (RavenConfig) { + this.config(RavenConfig.dsn, RavenConfig.config).install(); + } + }, + + showReportDialog: function(options) { + if ( + !_document // doesn't work without a document (React native) + ) + return; + + options = options || {}; + + var lastEventId = options.eventId || this.lastEventId(); + if (!lastEventId) { + throw new RavenConfigError('Missing eventId'); + } + + var dsn = options.dsn || this._dsn; + if (!dsn) { + throw new RavenConfigError('Missing DSN'); + } + + var encode = encodeURIComponent; + var qs = ''; + qs += '?eventId=' + encode(lastEventId); + qs += '&dsn=' + encode(dsn); + + var user = options.user || this._globalContext.user; + if (user) { + if (user.name) qs += '&name=' + encode(user.name); + if (user.email) qs += '&email=' + encode(user.email); + } + + var globalServer = this._getGlobalServer(this._parseDSN(dsn)); + + var script = _document.createElement('script'); + script.async = true; + script.src = globalServer + '/api/embed/error-page/' + qs; + (_document.head || _document.body).appendChild(script); + }, + + /**** Private functions ****/ + _ignoreNextOnError: function() { + var self = this; + this._ignoreOnError += 1; + setTimeout(function() { + // onerror should trigger before setTimeout + self._ignoreOnError -= 1; + }); + }, + + _triggerEvent: function(eventType, options) { + // NOTE: `event` is a native browser thing, so let's avoid conflicting wiht it + var evt, key; + + if (!this._hasDocument) return; + + options = options || {}; + + eventType = 'raven' + eventType.substr(0, 1).toUpperCase() + eventType.substr(1); + + if (_document.createEvent) { + evt = _document.createEvent('HTMLEvents'); + evt.initEvent(eventType, true, true); + } else { + evt = _document.createEventObject(); + evt.eventType = eventType; + } + + for (key in options) + if (hasKey(options, key)) { + evt[key] = options[key]; + } + + if (_document.createEvent) { + // IE9 if standards + _document.dispatchEvent(evt); + } else { + // IE8 regardless of Quirks or Standards + // IE9 if quirks + try { + _document.fireEvent('on' + evt.eventType.toLowerCase(), evt); + } catch (e) { + // Do nothing + } + } + }, + + /** + * Wraps addEventListener to capture UI breadcrumbs + * @param evtName the event name (e.g. "click") + * @returns {Function} + * @private + */ + _breadcrumbEventHandler: function(evtName) { + var self = this; + return function(evt) { + // reset keypress timeout; e.g. triggering a 'click' after + // a 'keypress' will reset the keypress debounce so that a new + // set of keypresses can be recorded + self._keypressTimeout = null; + + // It's possible this handler might trigger multiple times for the same + // event (e.g. event propagation through node ancestors). Ignore if we've + // already captured the event. + if (self._lastCapturedEvent === evt) return; + + self._lastCapturedEvent = evt; + + // try/catch both: + // - accessing evt.target (see getsentry/raven-js#838, #768) + // - `htmlTreeAsString` because it's complex, and just accessing the DOM incorrectly + // can throw an exception in some circumstances. + var target; + try { + target = htmlTreeAsString(evt.target); + } catch (e) { + target = ''; + } + + self.captureBreadcrumb({ + category: 'ui.' + evtName, // e.g. ui.click, ui.input + message: target + }); + }; + }, + + /** + * Wraps addEventListener to capture keypress UI events + * @returns {Function} + * @private + */ + _keypressEventHandler: function() { + var self = this, + debounceDuration = 1000; // milliseconds + + // TODO: if somehow user switches keypress target before + // debounce timeout is triggered, we will only capture + // a single breadcrumb from the FIRST target (acceptable?) + return function(evt) { + var target; + try { + target = evt.target; + } catch (e) { + // just accessing event properties can throw an exception in some rare circumstances + // see: https://github.com/getsentry/raven-js/issues/838 + return; + } + var tagName = target && target.tagName; + + // only consider keypress events on actual input elements + // this will disregard keypresses targeting body (e.g. tabbing + // through elements, hotkeys, etc) + if ( + !tagName || + (tagName !== 'INPUT' && tagName !== 'TEXTAREA' && !target.isContentEditable) + ) + return; + + // record first keypress in a series, but ignore subsequent + // keypresses until debounce clears + var timeout = self._keypressTimeout; + if (!timeout) { + self._breadcrumbEventHandler('input')(evt); + } + clearTimeout(timeout); + self._keypressTimeout = setTimeout(function() { + self._keypressTimeout = null; + }, debounceDuration); + }; + }, + + /** + * Captures a breadcrumb of type "navigation", normalizing input URLs + * @param to the originating URL + * @param from the target URL + * @private + */ + _captureUrlChange: function(from, to) { + var parsedLoc = parseUrl(this._location.href); + var parsedTo = parseUrl(to); + var parsedFrom = parseUrl(from); + + // because onpopstate only tells you the "new" (to) value of location.href, and + // not the previous (from) value, we need to track the value of the current URL + // state ourselves + this._lastHref = to; + + // Use only the path component of the URL if the URL matches the current + // document (almost all the time when using pushState) + if (parsedLoc.protocol === parsedTo.protocol && parsedLoc.host === parsedTo.host) + to = parsedTo.relative; + if (parsedLoc.protocol === parsedFrom.protocol && parsedLoc.host === parsedFrom.host) + from = parsedFrom.relative; + + this.captureBreadcrumb({ + category: 'navigation', + data: { + to: to, + from: from + } + }); + }, + + _patchFunctionToString: function() { + var self = this; + self._originalFunctionToString = Function.prototype.toString; + // eslint-disable-next-line no-extend-native + Function.prototype.toString = function() { + if (typeof this === 'function' && this.__raven__) { + return self._originalFunctionToString.apply(this.__orig__, arguments); + } + return self._originalFunctionToString.apply(this, arguments); + }; + }, + + _unpatchFunctionToString: function() { + if (this._originalFunctionToString) { + // eslint-disable-next-line no-extend-native + Function.prototype.toString = this._originalFunctionToString; + } + }, + + /** + * Wrap timer functions and event targets to catch errors and provide + * better metadata. + */ + _instrumentTryCatch: function() { + var self = this; + + var wrappedBuiltIns = self._wrappedBuiltIns; + + function wrapTimeFn(orig) { + return function(fn, t) { + // preserve arity + // Make a copy of the arguments to prevent deoptimization + // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments + var args = new Array(arguments.length); + for (var i = 0; i < args.length; ++i) { + args[i] = arguments[i]; + } + var originalCallback = args[0]; + if (isFunction(originalCallback)) { + args[0] = self.wrap(originalCallback); + } + + // IE < 9 doesn't support .call/.apply on setInterval/setTimeout, but it + // also supports only two arguments and doesn't care what this is, so we + // can just call the original function directly. + if (orig.apply) { + return orig.apply(this, args); + } else { + return orig(args[0], args[1]); + } + }; + } + + var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; + + function wrapEventTarget(global) { + var proto = _window[global] && _window[global].prototype; + if (proto && proto.hasOwnProperty && proto.hasOwnProperty('addEventListener')) { + fill( + proto, + 'addEventListener', + function(orig) { + return function(evtName, fn, capture, secure) { + // preserve arity + try { + if (fn && fn.handleEvent) { + fn.handleEvent = self.wrap(fn.handleEvent); + } + } catch (err) { + // can sometimes get 'Permission denied to access property "handle Event' + } + + // More breadcrumb DOM capture ... done here and not in `_instrumentBreadcrumbs` + // so that we don't have more than one wrapper function + var before, clickHandler, keypressHandler; + + if ( + autoBreadcrumbs && + autoBreadcrumbs.dom && + (global === 'EventTarget' || global === 'Node') + ) { + // NOTE: generating multiple handlers per addEventListener invocation, should + // revisit and verify we can just use one (almost certainly) + clickHandler = self._breadcrumbEventHandler('click'); + keypressHandler = self._keypressEventHandler(); + before = function(evt) { + // need to intercept every DOM event in `before` argument, in case that + // same wrapped method is re-used for different events (e.g. mousemove THEN click) + // see #724 + if (!evt) return; + + var eventType; + try { + eventType = evt.type; + } catch (e) { + // just accessing event properties can throw an exception in some rare circumstances + // see: https://github.com/getsentry/raven-js/issues/838 + return; + } + if (eventType === 'click') return clickHandler(evt); + else if (eventType === 'keypress') return keypressHandler(evt); + }; + } + return orig.call( + this, + evtName, + self.wrap(fn, undefined, before), + capture, + secure + ); + }; + }, + wrappedBuiltIns + ); + fill( + proto, + 'removeEventListener', + function(orig) { + return function(evt, fn, capture, secure) { + try { + fn = fn && (fn.__raven_wrapper__ ? fn.__raven_wrapper__ : fn); + } catch (e) { + // ignore, accessing __raven_wrapper__ will throw in some Selenium environments + } + return orig.call(this, evt, fn, capture, secure); + }; + }, + wrappedBuiltIns + ); + } + } + + fill(_window, 'setTimeout', wrapTimeFn, wrappedBuiltIns); + fill(_window, 'setInterval', wrapTimeFn, wrappedBuiltIns); + if (_window.requestAnimationFrame) { + fill( + _window, + 'requestAnimationFrame', + function(orig) { + return function(cb) { + return orig(self.wrap(cb)); + }; + }, + wrappedBuiltIns + ); + } + + // event targets borrowed from bugsnag-js: + // https://github.com/bugsnag/bugsnag-js/blob/master/src/bugsnag.js#L666 + var eventTargets = [ + 'EventTarget', + 'Window', + 'Node', + 'ApplicationCache', + 'AudioTrackList', + 'ChannelMergerNode', + 'CryptoOperation', + 'EventSource', + 'FileReader', + 'HTMLUnknownElement', + 'IDBDatabase', + 'IDBRequest', + 'IDBTransaction', + 'KeyOperation', + 'MediaController', + 'MessagePort', + 'ModalWindow', + 'Notification', + 'SVGElementInstance', + 'Screen', + 'TextTrack', + 'TextTrackCue', + 'TextTrackList', + 'WebSocket', + 'WebSocketWorker', + 'Worker', + 'XMLHttpRequest', + 'XMLHttpRequestEventTarget', + 'XMLHttpRequestUpload' + ]; + for (var i = 0; i < eventTargets.length; i++) { + wrapEventTarget(eventTargets[i]); + } + }, + + /** + * Instrument browser built-ins w/ breadcrumb capturing + * - XMLHttpRequests + * - DOM interactions (click/typing) + * - window.location changes + * - console + * + * Can be disabled or individually configured via the `autoBreadcrumbs` config option + */ + _instrumentBreadcrumbs: function() { + var self = this; + var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; + + var wrappedBuiltIns = self._wrappedBuiltIns; + + function wrapProp(prop, xhr) { + if (prop in xhr && isFunction(xhr[prop])) { + fill(xhr, prop, function(orig) { + return self.wrap(orig); + }); // intentionally don't track filled methods on XHR instances + } + } + + if (autoBreadcrumbs.xhr && 'XMLHttpRequest' in _window) { + var xhrproto = _window.XMLHttpRequest && _window.XMLHttpRequest.prototype; + fill( + xhrproto, + 'open', + function(origOpen) { + return function(method, url) { + // preserve arity + + // if Sentry key appears in URL, don't capture + if (isString(url) && url.indexOf(self._globalKey) === -1) { + this.__raven_xhr = { + method: method, + url: url, + status_code: null + }; + } + + return origOpen.apply(this, arguments); + }; + }, + wrappedBuiltIns + ); + + fill( + xhrproto, + 'send', + function(origSend) { + return function() { + // preserve arity + var xhr = this; + + function onreadystatechangeHandler() { + if (xhr.__raven_xhr && xhr.readyState === 4) { + try { + // touching statusCode in some platforms throws + // an exception + xhr.__raven_xhr.status_code = xhr.status; + } catch (e) { + /* do nothing */ + } + + self.captureBreadcrumb({ + type: 'http', + category: 'xhr', + data: xhr.__raven_xhr + }); + } + } + + var props = ['onload', 'onerror', 'onprogress']; + for (var j = 0; j < props.length; j++) { + wrapProp(props[j], xhr); + } + + if ('onreadystatechange' in xhr && isFunction(xhr.onreadystatechange)) { + fill( + xhr, + 'onreadystatechange', + function(orig) { + return self.wrap(orig, undefined, onreadystatechangeHandler); + } /* intentionally don't track this instrumentation */ + ); + } else { + // if onreadystatechange wasn't actually set by the page on this xhr, we + // are free to set our own and capture the breadcrumb + xhr.onreadystatechange = onreadystatechangeHandler; + } + + return origSend.apply(this, arguments); + }; + }, + wrappedBuiltIns + ); + } + + if (autoBreadcrumbs.xhr && supportsFetch()) { + fill( + _window, + 'fetch', + function(origFetch) { + return function() { + // preserve arity + // Make a copy of the arguments to prevent deoptimization + // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments + var args = new Array(arguments.length); + for (var i = 0; i < args.length; ++i) { + args[i] = arguments[i]; + } + + var fetchInput = args[0]; + var method = 'GET'; + var url; + + if (typeof fetchInput === 'string') { + url = fetchInput; + } else if ('Request' in _window && fetchInput instanceof _window.Request) { + url = fetchInput.url; + if (fetchInput.method) { + method = fetchInput.method; + } + } else { + url = '' + fetchInput; + } + + // if Sentry key appears in URL, don't capture, as it's our own request + if (url.indexOf(self._globalKey) !== -1) { + return origFetch.apply(this, args); + } + + if (args[1] && args[1].method) { + method = args[1].method; + } + + var fetchData = { + method: method, + url: url, + status_code: null + }; + + return origFetch + .apply(this, args) + .then(function(response) { + fetchData.status_code = response.status; + + self.captureBreadcrumb({ + type: 'http', + category: 'fetch', + data: fetchData + }); + + return response; + }) + ['catch'](function(err) { + // if there is an error performing the request + self.captureBreadcrumb({ + type: 'http', + category: 'fetch', + data: fetchData, + level: 'error' + }); + + throw err; + }); + }; + }, + wrappedBuiltIns + ); + } + + // Capture breadcrumbs from any click that is unhandled / bubbled up all the way + // to the document. Do this before we instrument addEventListener. + if (autoBreadcrumbs.dom && this._hasDocument) { + if (_document.addEventListener) { + _document.addEventListener('click', self._breadcrumbEventHandler('click'), false); + _document.addEventListener('keypress', self._keypressEventHandler(), false); + } else if (_document.attachEvent) { + // IE8 Compatibility + _document.attachEvent('onclick', self._breadcrumbEventHandler('click')); + _document.attachEvent('onkeypress', self._keypressEventHandler()); + } + } + + // record navigation (URL) changes + // NOTE: in Chrome App environment, touching history.pushState, *even inside + // a try/catch block*, will cause Chrome to output an error to console.error + // borrowed from: https://github.com/angular/angular.js/pull/13945/files + var chrome = _window.chrome; + var isChromePackagedApp = chrome && chrome.app && chrome.app.runtime; + var hasPushAndReplaceState = + !isChromePackagedApp && + _window.history && + _window.history.pushState && + _window.history.replaceState; + if (autoBreadcrumbs.location && hasPushAndReplaceState) { + // TODO: remove onpopstate handler on uninstall() + var oldOnPopState = _window.onpopstate; + _window.onpopstate = function() { + var currentHref = self._location.href; + self._captureUrlChange(self._lastHref, currentHref); + + if (oldOnPopState) { + return oldOnPopState.apply(this, arguments); + } + }; + + var historyReplacementFunction = function(origHistFunction) { + // note history.pushState.length is 0; intentionally not declaring + // params to preserve 0 arity + return function(/* state, title, url */) { + var url = arguments.length > 2 ? arguments[2] : undefined; + + // url argument is optional + if (url) { + // coerce to string (this is what pushState does) + self._captureUrlChange(self._lastHref, url + ''); + } + + return origHistFunction.apply(this, arguments); + }; + }; + + fill(_window.history, 'pushState', historyReplacementFunction, wrappedBuiltIns); + fill(_window.history, 'replaceState', historyReplacementFunction, wrappedBuiltIns); + } + + if (autoBreadcrumbs.console && 'console' in _window && console.log) { + // console + var consoleMethodCallback = function(msg, data) { + self.captureBreadcrumb({ + message: msg, + level: data.level, + category: 'console' + }); + }; + + each(['debug', 'info', 'warn', 'error', 'log'], function(_, level) { + wrapConsoleMethod(console, level, consoleMethodCallback); + }); + } + }, + + _restoreBuiltIns: function() { + // restore any wrapped builtins + var builtin; + while (this._wrappedBuiltIns.length) { + builtin = this._wrappedBuiltIns.shift(); + + var obj = builtin[0], + name = builtin[1], + orig = builtin[2]; + + obj[name] = orig; + } + }, + + _restoreConsole: function() { + // eslint-disable-next-line guard-for-in + for (var method in this._originalConsoleMethods) { + this._originalConsole[method] = this._originalConsoleMethods[method]; + } + }, + + _drainPlugins: function() { + var self = this; + + // FIX ME TODO + each(this._plugins, function(_, plugin) { + var installer = plugin[0]; + var args = plugin[1]; + installer.apply(self, [self].concat(args)); + }); + }, + + _parseDSN: function(str) { + var m = dsnPattern.exec(str), + dsn = {}, + i = 7; + + try { + while (i--) dsn[dsnKeys[i]] = m[i] || ''; + } catch (e) { + throw new RavenConfigError('Invalid DSN: ' + str); + } + + if (dsn.pass && !this._globalOptions.allowSecretKey) { + throw new RavenConfigError( + 'Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key' + ); + } + + return dsn; + }, + + _getGlobalServer: function(uri) { + // assemble the endpoint from the uri pieces + var globalServer = '//' + uri.host + (uri.port ? ':' + uri.port : ''); + + if (uri.protocol) { + globalServer = uri.protocol + ':' + globalServer; + } + return globalServer; + }, + + _handleOnErrorStackInfo: function() { + // if we are intentionally ignoring errors via onerror, bail out + if (!this._ignoreOnError) { + this._handleStackInfo.apply(this, arguments); + } + }, + + _handleStackInfo: function(stackInfo, options) { + var frames = this._prepareFrames(stackInfo, options); + + this._triggerEvent('handle', { + stackInfo: stackInfo, + options: options + }); + + this._processException( + stackInfo.name, + stackInfo.message, + stackInfo.url, + stackInfo.lineno, + frames, + options + ); + }, + + _prepareFrames: function(stackInfo, options) { + var self = this; + var frames = []; + if (stackInfo.stack && stackInfo.stack.length) { + each(stackInfo.stack, function(i, stack) { + var frame = self._normalizeFrame(stack, stackInfo.url); + if (frame) { + frames.push(frame); + } + }); + + // e.g. frames captured via captureMessage throw + if (options && options.trimHeadFrames) { + for (var j = 0; j < options.trimHeadFrames && j < frames.length; j++) { + frames[j].in_app = false; + } + } + } + frames = frames.slice(0, this._globalOptions.stackTraceLimit); + return frames; + }, + + _normalizeFrame: function(frame, stackInfoUrl) { + // normalize the frames data + var normalized = { + filename: frame.url, + lineno: frame.line, + colno: frame.column, + function: frame.func || '?' + }; + + // Case when we don't have any information about the error + // E.g. throwing a string or raw object, instead of an `Error` in Firefox + // Generating synthetic error doesn't add any value here + // + // We should probably somehow let a user know that they should fix their code + if (!frame.url) { + normalized.filename = stackInfoUrl; // fallback to whole stacks url from onerror handler + } + + normalized.in_app = !// determine if an exception came from outside of our app + // first we check the global includePaths list. + ( + (!!this._globalOptions.includePaths.test && + !this._globalOptions.includePaths.test(normalized.filename)) || + // Now we check for fun, if the function name is Raven or TraceKit + /(Raven|TraceKit)\./.test(normalized['function']) || + // finally, we do a last ditch effort and check for raven.min.js + /raven\.(min\.)?js$/.test(normalized.filename) + ); + + return normalized; + }, + + _processException: function(type, message, fileurl, lineno, frames, options) { + var prefixedMessage = (type ? type + ': ' : '') + (message || ''); + if ( + !!this._globalOptions.ignoreErrors.test && + (this._globalOptions.ignoreErrors.test(message) || + this._globalOptions.ignoreErrors.test(prefixedMessage)) + ) { + return; + } + + var stacktrace; + + if (frames && frames.length) { + fileurl = frames[0].filename || fileurl; + // Sentry expects frames oldest to newest + // and JS sends them as newest to oldest + frames.reverse(); + stacktrace = {frames: frames}; + } else if (fileurl) { + stacktrace = { + frames: [ + { + filename: fileurl, + lineno: lineno, + in_app: true + } + ] + }; + } + + if ( + !!this._globalOptions.ignoreUrls.test && + this._globalOptions.ignoreUrls.test(fileurl) + ) { + return; + } + + if ( + !!this._globalOptions.whitelistUrls.test && + !this._globalOptions.whitelistUrls.test(fileurl) + ) { + return; + } + + var data = objectMerge( + { + // sentry.interfaces.Exception + exception: { + values: [ + { + type: type, + value: message, + stacktrace: stacktrace + } + ] + }, + transaction: fileurl + }, + options + ); + + // Fire away! + this._send(data); + }, + + _trimPacket: function(data) { + // For now, we only want to truncate the two different messages + // but this could/should be expanded to just trim everything + var max = this._globalOptions.maxMessageLength; + if (data.message) { + data.message = truncate(data.message, max); + } + if (data.exception) { + var exception = data.exception.values[0]; + exception.value = truncate(exception.value, max); + } + + var request = data.request; + if (request) { + if (request.url) { + request.url = truncate(request.url, this._globalOptions.maxUrlLength); + } + if (request.Referer) { + request.Referer = truncate(request.Referer, this._globalOptions.maxUrlLength); + } + } + + if (data.breadcrumbs && data.breadcrumbs.values) + this._trimBreadcrumbs(data.breadcrumbs); + + return data; + }, + + /** + * Truncate breadcrumb values (right now just URLs) + */ + _trimBreadcrumbs: function(breadcrumbs) { + // known breadcrumb properties with urls + // TODO: also consider arbitrary prop values that start with (https?)?:// + var urlProps = ['to', 'from', 'url'], + urlProp, + crumb, + data; + + for (var i = 0; i < breadcrumbs.values.length; ++i) { + crumb = breadcrumbs.values[i]; + if ( + !crumb.hasOwnProperty('data') || + !isObject(crumb.data) || + objectFrozen(crumb.data) + ) + continue; + + data = objectMerge({}, crumb.data); + for (var j = 0; j < urlProps.length; ++j) { + urlProp = urlProps[j]; + if (data.hasOwnProperty(urlProp) && data[urlProp]) { + data[urlProp] = truncate(data[urlProp], this._globalOptions.maxUrlLength); + } + } + breadcrumbs.values[i].data = data; + } + }, + + _getHttpData: function() { + if (!this._hasNavigator && !this._hasDocument) return; + var httpData = {}; + + if (this._hasNavigator && _navigator.userAgent) { + httpData.headers = { + 'User-Agent': _navigator.userAgent + }; + } + + // Check in `window` instead of `document`, as we may be in ServiceWorker environment + if (_window.location && _window.location.href) { + httpData.url = _window.location.href; + } + + if (this._hasDocument && _document.referrer) { + if (!httpData.headers) httpData.headers = {}; + httpData.headers.Referer = _document.referrer; + } + + return httpData; + }, + + _resetBackoff: function() { + this._backoffDuration = 0; + this._backoffStart = null; + }, + + _shouldBackoff: function() { + return this._backoffDuration && now() - this._backoffStart < this._backoffDuration; + }, + + /** + * Returns true if the in-process data payload matches the signature + * of the previously-sent data + * + * NOTE: This has to be done at this level because TraceKit can generate + * data from window.onerror WITHOUT an exception object (IE8, IE9, + * other old browsers). This can take the form of an "exception" + * data object with a single frame (derived from the onerror args). + */ + _isRepeatData: function(current) { + var last = this._lastData; + + if ( + !last || + current.message !== last.message || // defined for captureMessage + current.transaction !== last.transaction // defined for captureException/onerror + ) + return false; + + // Stacktrace interface (i.e. from captureMessage) + if (current.stacktrace || last.stacktrace) { + return isSameStacktrace(current.stacktrace, last.stacktrace); + } else if (current.exception || last.exception) { + // Exception interface (i.e. from captureException/onerror) + return isSameException(current.exception, last.exception); + } + + return true; + }, + + _setBackoffState: function(request) { + // If we are already in a backoff state, don't change anything + if (this._shouldBackoff()) { + return; + } + + var status = request.status; + + // 400 - project_id doesn't exist or some other fatal + // 401 - invalid/revoked dsn + // 429 - too many requests + if (!(status === 400 || status === 401 || status === 429)) return; + + var retry; + try { + // If Retry-After is not in Access-Control-Expose-Headers, most + // browsers will throw an exception trying to access it + if (supportsFetch()) { + retry = request.headers.get('Retry-After'); + } else { + retry = request.getResponseHeader('Retry-After'); + } + + // Retry-After is returned in seconds + retry = parseInt(retry, 10) * 1000; + } catch (e) { + /* eslint no-empty:0 */ + } + + this._backoffDuration = retry + ? // If Sentry server returned a Retry-After value, use it + retry + : // Otherwise, double the last backoff duration (starts at 1 sec) + this._backoffDuration * 2 || 1000; + + this._backoffStart = now(); + }, + + _send: function(data) { + var globalOptions = this._globalOptions; + + var baseData = { + project: this._globalProject, + logger: globalOptions.logger, + platform: 'javascript' + }, + httpData = this._getHttpData(); + + if (httpData) { + baseData.request = httpData; + } + + // HACK: delete `trimHeadFrames` to prevent from appearing in outbound payload + if (data.trimHeadFrames) delete data.trimHeadFrames; + + data = objectMerge(baseData, data); + + // Merge in the tags and extra separately since objectMerge doesn't handle a deep merge + data.tags = objectMerge(objectMerge({}, this._globalContext.tags), data.tags); + data.extra = objectMerge(objectMerge({}, this._globalContext.extra), data.extra); + + // Send along our own collected metadata with extra + data.extra['session:duration'] = now() - this._startTime; + + if (this._breadcrumbs && this._breadcrumbs.length > 0) { + // intentionally make shallow copy so that additions + // to breadcrumbs aren't accidentally sent in this request + data.breadcrumbs = { + values: [].slice.call(this._breadcrumbs, 0) + }; + } + + if (this._globalContext.user) { + // sentry.interfaces.User + data.user = this._globalContext.user; + } + + // Include the environment if it's defined in globalOptions + if (globalOptions.environment) data.environment = globalOptions.environment; + + // Include the release if it's defined in globalOptions + if (globalOptions.release) data.release = globalOptions.release; + + // Include server_name if it's defined in globalOptions + if (globalOptions.serverName) data.server_name = globalOptions.serverName; + + data = this._sanitizeData(data); + + // Cleanup empty properties before sending them to the server + Object.keys(data).forEach(function(key) { + if (data[key] == null || data[key] === '' || isEmptyObject(data[key])) { + delete data[key]; + } + }); + + if (isFunction(globalOptions.dataCallback)) { + data = globalOptions.dataCallback(data) || data; + } + + // Why?????????? + if (!data || isEmptyObject(data)) { + return; + } + + // Check if the request should be filtered or not + if ( + isFunction(globalOptions.shouldSendCallback) && + !globalOptions.shouldSendCallback(data) + ) { + return; + } + + // Backoff state: Sentry server previously responded w/ an error (e.g. 429 - too many requests), + // so drop requests until "cool-off" period has elapsed. + if (this._shouldBackoff()) { + this._logDebug('warn', 'Raven dropped error due to backoff: ', data); + return; + } + + if (typeof globalOptions.sampleRate === 'number') { + if (Math.random() < globalOptions.sampleRate) { + this._sendProcessedPayload(data); + } + } else { + this._sendProcessedPayload(data); + } + }, + + _sanitizeData: function(data) { + return sanitize(data, this._globalOptions.sanitizeKeys); + }, + + _getUuid: function() { + return uuid4(); + }, + + _sendProcessedPayload: function(data, callback) { + var self = this; + var globalOptions = this._globalOptions; + + if (!this.isSetup()) return; + + // Try and clean up the packet before sending by truncating long values + data = this._trimPacket(data); + + // ideally duplicate error testing should occur *before* dataCallback/shouldSendCallback, + // but this would require copying an un-truncated copy of the data packet, which can be + // arbitrarily deep (extra_data) -- could be worthwhile? will revisit + if (!this._globalOptions.allowDuplicates && this._isRepeatData(data)) { + this._logDebug('warn', 'Raven dropped repeat event: ', data); + return; + } + + // Send along an event_id if not explicitly passed. + // This event_id can be used to reference the error within Sentry itself. + // Set lastEventId after we know the error should actually be sent + this._lastEventId = data.event_id || (data.event_id = this._getUuid()); + + // Store outbound payload after trim + this._lastData = data; + + this._logDebug('debug', 'Raven about to send:', data); + + var auth = { + sentry_version: '7', + sentry_client: 'raven-js/' + this.VERSION, + sentry_key: this._globalKey + }; + + if (this._globalSecret) { + auth.sentry_secret = this._globalSecret; + } + + var exception = data.exception && data.exception.values[0]; + + // only capture 'sentry' breadcrumb is autoBreadcrumbs is truthy + if ( + this._globalOptions.autoBreadcrumbs && + this._globalOptions.autoBreadcrumbs.sentry + ) { + this.captureBreadcrumb({ + category: 'sentry', + message: exception + ? (exception.type ? exception.type + ': ' : '') + exception.value + : data.message, + event_id: data.event_id, + level: data.level || 'error' // presume error unless specified + }); + } + + var url = this._globalEndpoint; + (globalOptions.transport || this._makeRequest).call(this, { + url: url, + auth: auth, + data: data, + options: globalOptions, + onSuccess: function success() { + self._resetBackoff(); + + self._triggerEvent('success', { + data: data, + src: url + }); + callback && callback(); + }, + onError: function failure(error) { + self._logDebug('error', 'Raven transport failed to send: ', error); + + if (error.request) { + self._setBackoffState(error.request); + } + + self._triggerEvent('failure', { + data: data, + src: url + }); + error = error || new Error('Raven send failed (no additional details provided)'); + callback && callback(error); + } + }); + }, + + _makeRequest: function(opts) { + // Auth is intentionally sent as part of query string (NOT as custom HTTP header) to avoid preflight CORS requests + var url = opts.url + '?' + urlencode(opts.auth); + + var evaluatedHeaders = null; + var evaluatedFetchParameters = {}; + + if (opts.options.headers) { + evaluatedHeaders = this._evaluateHash(opts.options.headers); + } + + if (opts.options.fetchParameters) { + evaluatedFetchParameters = this._evaluateHash(opts.options.fetchParameters); + } + + if (supportsFetch()) { + evaluatedFetchParameters.body = stringify(opts.data); + + var defaultFetchOptions = objectMerge({}, this._fetchDefaults); + var fetchOptions = objectMerge(defaultFetchOptions, evaluatedFetchParameters); + + if (evaluatedHeaders) { + fetchOptions.headers = evaluatedHeaders; + } + + return _window + .fetch(url, fetchOptions) + .then(function(response) { + if (response.ok) { + opts.onSuccess && opts.onSuccess(); + } else { + var error = new Error('Sentry error code: ' + response.status); + // It's called request only to keep compatibility with XHR interface + // and not add more redundant checks in setBackoffState method + error.request = response; + opts.onError && opts.onError(error); + } + }) + ['catch'](function() { + opts.onError && + opts.onError(new Error('Sentry error code: network unavailable')); + }); + } + + var request = _window.XMLHttpRequest && new _window.XMLHttpRequest(); + if (!request) return; + + // if browser doesn't support CORS (e.g. IE7), we are out of luck + var hasCORS = 'withCredentials' in request || typeof XDomainRequest !== 'undefined'; + + if (!hasCORS) return; + + if ('withCredentials' in request) { + request.onreadystatechange = function() { + if (request.readyState !== 4) { + return; + } else if (request.status === 200) { + opts.onSuccess && opts.onSuccess(); + } else if (opts.onError) { + var err = new Error('Sentry error code: ' + request.status); + err.request = request; + opts.onError(err); + } + }; + } else { + request = new XDomainRequest(); + // xdomainrequest cannot go http -> https (or vice versa), + // so always use protocol relative + url = url.replace(/^https?:/, ''); + + // onreadystatechange not supported by XDomainRequest + if (opts.onSuccess) { + request.onload = opts.onSuccess; + } + if (opts.onError) { + request.onerror = function() { + var err = new Error('Sentry error code: XDomainRequest'); + err.request = request; + opts.onError(err); + }; + } + } + + request.open('POST', url); + + if (evaluatedHeaders) { + each(evaluatedHeaders, function(key, value) { + request.setRequestHeader(key, value); + }); + } + + request.send(stringify(opts.data)); + }, + + _evaluateHash: function(hash) { + var evaluated = {}; + + for (var key in hash) { + if (hash.hasOwnProperty(key)) { + var value = hash[key]; + evaluated[key] = typeof value === 'function' ? value() : value; + } + } + + return evaluated; + }, + + _logDebug: function(level) { + // We allow `Raven.debug` and `Raven.config(DSN, { debug: true })` to not make backward incompatible API change + if ( + this._originalConsoleMethods[level] && + (this.debug || this._globalOptions.debug) + ) { + // In IE<10 console methods do not have their own 'apply' method + Function.prototype.apply.call( + this._originalConsoleMethods[level], + this._originalConsole, + [].slice.call(arguments, 1) + ); + } + }, + + _mergeContext: function(key, context) { + if (isUndefined(context)) { + delete this._globalContext[key]; + } else { + this._globalContext[key] = objectMerge(this._globalContext[key] || {}, context); + } + } +}; + +// Deprecations +Raven.prototype.setUser = Raven.prototype.setUserContext; +Raven.prototype.setReleaseContext = Raven.prototype.setRelease; + +module.exports = Raven; + +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"10":10,"11":11,"12":12,"13":13,"6":6,"7":7}],9:[function(_dereq_,module,exports){ +(function (global){ +/** + * Enforces a single instance of the Raven client, and the + * main entry point for Raven. If you are a consumer of the + * Raven library, you SHOULD load this file (vs raven.js). + **/ + +var RavenConstructor = _dereq_(8); + +// This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) +var _window = + typeof window !== 'undefined' + ? window + : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; +var _Raven = _window.Raven; + +var Raven = new RavenConstructor(); + +/* + * Allow multiple versions of Raven to be installed. + * Strip Raven from the global context and returns the instance. + * + * @return {Raven} + */ +Raven.noConflict = function() { + _window.Raven = _Raven; + return Raven; +}; + +Raven.afterLoad(); + +module.exports = Raven; + +/** + * DISCLAIMER: + * + * Expose `Client` constructor for cases where user want to track multiple "sub-applications" in one larger app. + * It's not meant to be used by a wide audience, so pleaaase make sure that you know what you're doing before using it. + * Accidentally calling `install` multiple times, may result in an unexpected behavior that's very hard to debug. + * + * It's called `Client' to be in-line with Raven Node implementation. + * + * HOWTO: + * + * import Raven from 'raven-js'; + * + * const someAppReporter = new Raven.Client(); + * const someOtherAppReporter = new Raven.Client(); + * + * someAppReporter.config('__DSN__', { + * ...config goes here + * }); + * + * someOtherAppReporter.config('__OTHER_DSN__', { + * ...config goes here + * }); + * + * someAppReporter.captureMessage(...); + * someAppReporter.captureException(...); + * someAppReporter.captureBreadcrumb(...); + * + * someOtherAppReporter.captureMessage(...); + * someOtherAppReporter.captureException(...); + * someOtherAppReporter.captureBreadcrumb(...); + * + * It should "just work". + */ +module.exports.Client = RavenConstructor; + +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"8":8}],10:[function(_dereq_,module,exports){ +(function (global){ +var stringify = _dereq_(12); + +var _window = + typeof window !== 'undefined' + ? window + : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; + +function isObject(what) { + return typeof what === 'object' && what !== null; +} + +// Yanked from https://git.io/vS8DV re-used under CC0 +// with some tiny modifications +function isError(value) { + switch (Object.prototype.toString.call(value)) { + case '[object Error]': + return true; + case '[object Exception]': + return true; + case '[object DOMException]': + return true; + default: + return value instanceof Error; + } +} + +function isErrorEvent(value) { + return Object.prototype.toString.call(value) === '[object ErrorEvent]'; +} + +function isDOMError(value) { + return Object.prototype.toString.call(value) === '[object DOMError]'; +} + +function isDOMException(value) { + return Object.prototype.toString.call(value) === '[object DOMException]'; +} + +function isUndefined(what) { + return what === void 0; +} + +function isFunction(what) { + return typeof what === 'function'; +} + +function isPlainObject(what) { + return Object.prototype.toString.call(what) === '[object Object]'; +} + +function isString(what) { + return Object.prototype.toString.call(what) === '[object String]'; +} + +function isArray(what) { + return Object.prototype.toString.call(what) === '[object Array]'; +} + +function isEmptyObject(what) { + if (!isPlainObject(what)) return false; + + for (var _ in what) { + if (what.hasOwnProperty(_)) { + return false; + } + } + return true; +} + +function supportsErrorEvent() { + try { + new ErrorEvent(''); // eslint-disable-line no-new + return true; + } catch (e) { + return false; + } +} + +function supportsDOMError() { + try { + new DOMError(''); // eslint-disable-line no-new + return true; + } catch (e) { + return false; + } +} + +function supportsDOMException() { + try { + new DOMException(''); // eslint-disable-line no-new + return true; + } catch (e) { + return false; + } +} + +function supportsFetch() { + if (!('fetch' in _window)) return false; + + try { + new Headers(); // eslint-disable-line no-new + new Request(''); // eslint-disable-line no-new + new Response(); // eslint-disable-line no-new + return true; + } catch (e) { + return false; + } +} + +// Despite all stars in the sky saying that Edge supports old draft syntax, aka 'never', 'always', 'origin' and 'default +// https://caniuse.com/#feat=referrer-policy +// It doesn't. And it throw exception instead of ignoring this parameter... +// REF: https://github.com/getsentry/raven-js/issues/1233 +function supportsReferrerPolicy() { + if (!supportsFetch()) return false; + + try { + // eslint-disable-next-line no-new + new Request('pickleRick', { + referrerPolicy: 'origin' + }); + return true; + } catch (e) { + return false; + } +} + +function supportsPromiseRejectionEvent() { + return typeof PromiseRejectionEvent === 'function'; +} + +function wrappedCallback(callback) { + function dataCallback(data, original) { + var normalizedData = callback(data) || data; + if (original) { + return original(normalizedData) || normalizedData; + } + return normalizedData; + } + + return dataCallback; +} + +function each(obj, callback) { + var i, j; + + if (isUndefined(obj.length)) { + for (i in obj) { + if (hasKey(obj, i)) { + callback.call(null, i, obj[i]); + } + } + } else { + j = obj.length; + if (j) { + for (i = 0; i < j; i++) { + callback.call(null, i, obj[i]); + } + } + } +} + +function objectMerge(obj1, obj2) { + if (!obj2) { + return obj1; + } + each(obj2, function(key, value) { + obj1[key] = value; + }); + return obj1; +} + +/** + * This function is only used for react-native. + * react-native freezes object that have already been sent over the + * js bridge. We need this function in order to check if the object is frozen. + * So it's ok that objectFrozen returns false if Object.isFrozen is not + * supported because it's not relevant for other "platforms". See related issue: + * https://github.com/getsentry/react-native-sentry/issues/57 + */ +function objectFrozen(obj) { + if (!Object.isFrozen) { + return false; + } + return Object.isFrozen(obj); +} + +function truncate(str, max) { + if (typeof max !== 'number') { + throw new Error('2nd argument to `truncate` function should be a number'); + } + if (typeof str !== 'string' || max === 0) { + return str; + } + return str.length <= max ? str : str.substr(0, max) + '\u2026'; +} + +/** + * hasKey, a better form of hasOwnProperty + * Example: hasKey(MainHostObject, property) === true/false + * + * @param {Object} host object to check property + * @param {string} key to check + */ +function hasKey(object, key) { + return Object.prototype.hasOwnProperty.call(object, key); +} + +function joinRegExp(patterns) { + // Combine an array of regular expressions and strings into one large regexp + // Be mad. + var sources = [], + i = 0, + len = patterns.length, + pattern; + + for (; i < len; i++) { + pattern = patterns[i]; + if (isString(pattern)) { + // If it's a string, we need to escape it + // Taken from: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions + sources.push(pattern.replace(/([.*+?^=!:${}()|\[\]\/\\])/g, '\\$1')); + } else if (pattern && pattern.source) { + // If it's a regexp already, we want to extract the source + sources.push(pattern.source); + } + // Intentionally skip other cases + } + return new RegExp(sources.join('|'), 'i'); +} + +function urlencode(o) { + var pairs = []; + each(o, function(key, value) { + pairs.push(encodeURIComponent(key) + '=' + encodeURIComponent(value)); + }); + return pairs.join('&'); +} + +// borrowed from https://tools.ietf.org/html/rfc3986#appendix-B +// intentionally using regex and not href parsing trick because React Native and other +// environments where DOM might not be available +function parseUrl(url) { + if (typeof url !== 'string') return {}; + var match = url.match(/^(([^:\/?#]+):)?(\/\/([^\/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?$/); + + // coerce to undefined values to empty string so we don't get 'undefined' + var query = match[6] || ''; + var fragment = match[8] || ''; + return { + protocol: match[2], + host: match[4], + path: match[5], + relative: match[5] + query + fragment // everything minus origin + }; +} +function uuid4() { + var crypto = _window.crypto || _window.msCrypto; + + if (!isUndefined(crypto) && crypto.getRandomValues) { + // Use window.crypto API if available + // eslint-disable-next-line no-undef + var arr = new Uint16Array(8); + crypto.getRandomValues(arr); + + // set 4 in byte 7 + arr[3] = (arr[3] & 0xfff) | 0x4000; + // set 2 most significant bits of byte 9 to '10' + arr[4] = (arr[4] & 0x3fff) | 0x8000; + + var pad = function(num) { + var v = num.toString(16); + while (v.length < 4) { + v = '0' + v; + } + return v; + }; + + return ( + pad(arr[0]) + + pad(arr[1]) + + pad(arr[2]) + + pad(arr[3]) + + pad(arr[4]) + + pad(arr[5]) + + pad(arr[6]) + + pad(arr[7]) + ); + } else { + // http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/2117523#2117523 + return 'xxxxxxxxxxxx4xxxyxxxxxxxxxxxxxxx'.replace(/[xy]/g, function(c) { + var r = (Math.random() * 16) | 0, + v = c === 'x' ? r : (r & 0x3) | 0x8; + return v.toString(16); + }); + } +} + +/** + * Given a child DOM element, returns a query-selector statement describing that + * and its ancestors + * e.g. [HTMLElement] => body > div > input#foo.btn[name=baz] + * @param elem + * @returns {string} + */ +function htmlTreeAsString(elem) { + /* eslint no-extra-parens:0*/ + var MAX_TRAVERSE_HEIGHT = 5, + MAX_OUTPUT_LEN = 80, + out = [], + height = 0, + len = 0, + separator = ' > ', + sepLength = separator.length, + nextStr; + + while (elem && height++ < MAX_TRAVERSE_HEIGHT) { + nextStr = htmlElementAsString(elem); + // bail out if + // - nextStr is the 'html' element + // - the length of the string that would be created exceeds MAX_OUTPUT_LEN + // (ignore this limit if we are on the first iteration) + if ( + nextStr === 'html' || + (height > 1 && len + out.length * sepLength + nextStr.length >= MAX_OUTPUT_LEN) + ) { + break; + } + + out.push(nextStr); + + len += nextStr.length; + elem = elem.parentNode; + } + + return out.reverse().join(separator); +} + +/** + * Returns a simple, query-selector representation of a DOM element + * e.g. [HTMLElement] => input#foo.btn[name=baz] + * @param HTMLElement + * @returns {string} + */ +function htmlElementAsString(elem) { + var out = [], + className, + classes, + key, + attr, + i; + + if (!elem || !elem.tagName) { + return ''; + } + + out.push(elem.tagName.toLowerCase()); + if (elem.id) { + out.push('#' + elem.id); + } + + className = elem.className; + if (className && isString(className)) { + classes = className.split(/\s+/); + for (i = 0; i < classes.length; i++) { + out.push('.' + classes[i]); + } + } + var attrWhitelist = ['type', 'name', 'title', 'alt']; + for (i = 0; i < attrWhitelist.length; i++) { + key = attrWhitelist[i]; + attr = elem.getAttribute(key); + if (attr) { + out.push('[' + key + '="' + attr + '"]'); + } + } + return out.join(''); +} + +/** + * Returns true if either a OR b is truthy, but not both + */ +function isOnlyOneTruthy(a, b) { + return !!(!!a ^ !!b); +} + +/** + * Returns true if both parameters are undefined + */ +function isBothUndefined(a, b) { + return isUndefined(a) && isUndefined(b); +} + +/** + * Returns true if the two input exception interfaces have the same content + */ +function isSameException(ex1, ex2) { + if (isOnlyOneTruthy(ex1, ex2)) return false; + + ex1 = ex1.values[0]; + ex2 = ex2.values[0]; + + if (ex1.type !== ex2.type || ex1.value !== ex2.value) return false; + + // in case both stacktraces are undefined, we can't decide so default to false + if (isBothUndefined(ex1.stacktrace, ex2.stacktrace)) return false; + + return isSameStacktrace(ex1.stacktrace, ex2.stacktrace); +} + +/** + * Returns true if the two input stack trace interfaces have the same content + */ +function isSameStacktrace(stack1, stack2) { + if (isOnlyOneTruthy(stack1, stack2)) return false; + + var frames1 = stack1.frames; + var frames2 = stack2.frames; + + // Exit early if frame count differs + if (frames1.length !== frames2.length) return false; + + // Iterate through every frame; bail out if anything differs + var a, b; + for (var i = 0; i < frames1.length; i++) { + a = frames1[i]; + b = frames2[i]; + if ( + a.filename !== b.filename || + a.lineno !== b.lineno || + a.colno !== b.colno || + a['function'] !== b['function'] + ) + return false; + } + return true; +} + +/** + * Polyfill a method + * @param obj object e.g. `document` + * @param name method name present on object e.g. `addEventListener` + * @param replacement replacement function + * @param track {optional} record instrumentation to an array + */ +function fill(obj, name, replacement, track) { + if (obj == null) return; + var orig = obj[name]; + obj[name] = replacement(orig); + obj[name].__raven__ = true; + obj[name].__orig__ = orig; + if (track) { + track.push([obj, name, orig]); + } +} + +/** + * Join values in array + * @param input array of values to be joined together + * @param delimiter string to be placed in-between values + * @returns {string} + */ +function safeJoin(input, delimiter) { + if (!isArray(input)) return ''; + + var output = []; + + for (var i = 0; i < input.length; i++) { + try { + output.push(String(input[i])); + } catch (e) { + output.push('[value cannot be serialized]'); + } + } + + return output.join(delimiter); +} + +// Default Node.js REPL depth +var MAX_SERIALIZE_EXCEPTION_DEPTH = 3; +// 50kB, as 100kB is max payload size, so half sounds reasonable +var MAX_SERIALIZE_EXCEPTION_SIZE = 50 * 1024; +var MAX_SERIALIZE_KEYS_LENGTH = 40; + +function utf8Length(value) { + return ~-encodeURI(value).split(/%..|./).length; +} + +function jsonSize(value) { + return utf8Length(JSON.stringify(value)); +} + +function serializeValue(value) { + if (typeof value === 'string') { + var maxLength = 40; + return truncate(value, maxLength); + } else if ( + typeof value === 'number' || + typeof value === 'boolean' || + typeof value === 'undefined' + ) { + return value; + } + + var type = Object.prototype.toString.call(value); + + // Node.js REPL notation + if (type === '[object Object]') return '[Object]'; + if (type === '[object Array]') return '[Array]'; + if (type === '[object Function]') + return value.name ? '[Function: ' + value.name + ']' : '[Function]'; + + return value; +} + +function serializeObject(value, depth) { + if (depth === 0) return serializeValue(value); + + if (isPlainObject(value)) { + return Object.keys(value).reduce(function(acc, key) { + acc[key] = serializeObject(value[key], depth - 1); + return acc; + }, {}); + } else if (Array.isArray(value)) { + return value.map(function(val) { + return serializeObject(val, depth - 1); + }); + } + + return serializeValue(value); +} + +function serializeException(ex, depth, maxSize) { + if (!isPlainObject(ex)) return ex; + + depth = typeof depth !== 'number' ? MAX_SERIALIZE_EXCEPTION_DEPTH : depth; + maxSize = typeof depth !== 'number' ? MAX_SERIALIZE_EXCEPTION_SIZE : maxSize; + + var serialized = serializeObject(ex, depth); + + if (jsonSize(stringify(serialized)) > maxSize) { + return serializeException(ex, depth - 1); + } + + return serialized; +} + +function serializeKeysForMessage(keys, maxLength) { + if (typeof keys === 'number' || typeof keys === 'string') return keys.toString(); + if (!Array.isArray(keys)) return ''; + + keys = keys.filter(function(key) { + return typeof key === 'string'; + }); + if (keys.length === 0) return '[object has no keys]'; + + maxLength = typeof maxLength !== 'number' ? MAX_SERIALIZE_KEYS_LENGTH : maxLength; + if (keys[0].length >= maxLength) return keys[0]; + + for (var usedKeys = keys.length; usedKeys > 0; usedKeys--) { + var serialized = keys.slice(0, usedKeys).join(', '); + if (serialized.length > maxLength) continue; + if (usedKeys === keys.length) return serialized; + return serialized + '\u2026'; + } + + return ''; +} + +function sanitize(input, sanitizeKeys) { + if (!isArray(sanitizeKeys) || (isArray(sanitizeKeys) && sanitizeKeys.length === 0)) + return input; + + var sanitizeRegExp = joinRegExp(sanitizeKeys); + var sanitizeMask = '********'; + var safeInput; + + try { + safeInput = JSON.parse(stringify(input)); + } catch (o_O) { + return input; + } + + function sanitizeWorker(workerInput) { + if (isArray(workerInput)) { + return workerInput.map(function(val) { + return sanitizeWorker(val); + }); + } + + if (isPlainObject(workerInput)) { + return Object.keys(workerInput).reduce(function(acc, k) { + if (sanitizeRegExp.test(k)) { + acc[k] = sanitizeMask; + } else { + acc[k] = sanitizeWorker(workerInput[k]); + } + return acc; + }, {}); + } + + return workerInput; + } + + return sanitizeWorker(safeInput); +} + +module.exports = { + isObject: isObject, + isError: isError, + isErrorEvent: isErrorEvent, + isDOMError: isDOMError, + isDOMException: isDOMException, + isUndefined: isUndefined, + isFunction: isFunction, + isPlainObject: isPlainObject, + isString: isString, + isArray: isArray, + isEmptyObject: isEmptyObject, + supportsErrorEvent: supportsErrorEvent, + supportsDOMError: supportsDOMError, + supportsDOMException: supportsDOMException, + supportsFetch: supportsFetch, + supportsReferrerPolicy: supportsReferrerPolicy, + supportsPromiseRejectionEvent: supportsPromiseRejectionEvent, + wrappedCallback: wrappedCallback, + each: each, + objectMerge: objectMerge, + truncate: truncate, + objectFrozen: objectFrozen, + hasKey: hasKey, + joinRegExp: joinRegExp, + urlencode: urlencode, + uuid4: uuid4, + htmlTreeAsString: htmlTreeAsString, + htmlElementAsString: htmlElementAsString, + isSameException: isSameException, + isSameStacktrace: isSameStacktrace, + parseUrl: parseUrl, + fill: fill, + safeJoin: safeJoin, + serializeException: serializeException, + serializeKeysForMessage: serializeKeysForMessage, + sanitize: sanitize +}; + +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"12":12}],11:[function(_dereq_,module,exports){ +(function (global){ +var utils = _dereq_(10); + +/* + TraceKit - Cross brower stack traces + + This was originally forked from github.com/occ/TraceKit, but has since been + largely re-written and is now maintained as part of raven-js. Tests for + this are in test/vendor. + + MIT license +*/ + +var TraceKit = { + collectWindowErrors: true, + debug: false +}; + +// This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) +var _window = + typeof window !== 'undefined' + ? window + : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; + +// global reference to slice +var _slice = [].slice; +var UNKNOWN_FUNCTION = '?'; + +// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error#Error_types +var ERROR_TYPES_RE = /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/; + +function getLocationHref() { + if (typeof document === 'undefined' || document.location == null) return ''; + return document.location.href; +} + +function getLocationOrigin() { + if (typeof document === 'undefined' || document.location == null) return ''; + + // Oh dear IE10... + if (!document.location.origin) { + document.location.origin = + document.location.protocol + + '//' + + document.location.hostname + + (document.location.port ? ':' + document.location.port : ''); + } + + return document.location.origin; +} + +/** + * TraceKit.report: cross-browser processing of unhandled exceptions + * + * Syntax: + * TraceKit.report.subscribe(function(stackInfo) { ... }) + * TraceKit.report.unsubscribe(function(stackInfo) { ... }) + * TraceKit.report(exception) + * try { ...code... } catch(ex) { TraceKit.report(ex); } + * + * Supports: + * - Firefox: full stack trace with line numbers, plus column number + * on top frame; column number is not guaranteed + * - Opera: full stack trace with line and column numbers + * - Chrome: full stack trace with line and column numbers + * - Safari: line and column number for the top frame only; some frames + * may be missing, and column number is not guaranteed + * - IE: line and column number for the top frame only; some frames + * may be missing, and column number is not guaranteed + * + * In theory, TraceKit should work on all of the following versions: + * - IE5.5+ (only 8.0 tested) + * - Firefox 0.9+ (only 3.5+ tested) + * - Opera 7+ (only 10.50 tested; versions 9 and earlier may require + * Exceptions Have Stacktrace to be enabled in opera:config) + * - Safari 3+ (only 4+ tested) + * - Chrome 1+ (only 5+ tested) + * - Konqueror 3.5+ (untested) + * + * Requires TraceKit.computeStackTrace. + * + * Tries to catch all unhandled exceptions and report them to the + * subscribed handlers. Please note that TraceKit.report will rethrow the + * exception. This is REQUIRED in order to get a useful stack trace in IE. + * If the exception does not reach the top of the browser, you will only + * get a stack trace from the point where TraceKit.report was called. + * + * Handlers receive a stackInfo object as described in the + * TraceKit.computeStackTrace docs. + */ +TraceKit.report = (function reportModuleWrapper() { + var handlers = [], + lastArgs = null, + lastException = null, + lastExceptionStack = null; + + /** + * Add a crash handler. + * @param {Function} handler + */ + function subscribe(handler) { + installGlobalHandler(); + handlers.push(handler); + } + + /** + * Remove a crash handler. + * @param {Function} handler + */ + function unsubscribe(handler) { + for (var i = handlers.length - 1; i >= 0; --i) { + if (handlers[i] === handler) { + handlers.splice(i, 1); + } + } + } + + /** + * Remove all crash handlers. + */ + function unsubscribeAll() { + uninstallGlobalHandler(); + handlers = []; + } + + /** + * Dispatch stack information to all handlers. + * @param {Object.} stack + */ + function notifyHandlers(stack, isWindowError) { + var exception = null; + if (isWindowError && !TraceKit.collectWindowErrors) { + return; + } + for (var i in handlers) { + if (handlers.hasOwnProperty(i)) { + try { + handlers[i].apply(null, [stack].concat(_slice.call(arguments, 2))); + } catch (inner) { + exception = inner; + } + } + } + + if (exception) { + throw exception; + } + } + + var _oldOnerrorHandler, _onErrorHandlerInstalled; + + /** + * Ensures all global unhandled exceptions are recorded. + * Supported by Gecko and IE. + * @param {string} msg Error message. + * @param {string} url URL of script that generated the exception. + * @param {(number|string)} lineNo The line number at which the error + * occurred. + * @param {?(number|string)} colNo The column number at which the error + * occurred. + * @param {?Error} ex The actual Error object. + */ + function traceKitWindowOnError(msg, url, lineNo, colNo, ex) { + var stack = null; + // If 'ex' is ErrorEvent, get real Error from inside + var exception = utils.isErrorEvent(ex) ? ex.error : ex; + // If 'msg' is ErrorEvent, get real message from inside + var message = utils.isErrorEvent(msg) ? msg.message : msg; + + if (lastExceptionStack) { + TraceKit.computeStackTrace.augmentStackTraceWithInitialElement( + lastExceptionStack, + url, + lineNo, + message + ); + processLastException(); + } else if (exception && utils.isError(exception)) { + // non-string `exception` arg; attempt to extract stack trace + + // New chrome and blink send along a real error object + // Let's just report that like a normal error. + // See: https://mikewest.org/2013/08/debugging-runtime-errors-with-window-onerror + stack = TraceKit.computeStackTrace(exception); + notifyHandlers(stack, true); + } else { + var location = { + url: url, + line: lineNo, + column: colNo + }; + + var name = undefined; + var groups; + + if ({}.toString.call(message) === '[object String]') { + var groups = message.match(ERROR_TYPES_RE); + if (groups) { + name = groups[1]; + message = groups[2]; + } + } + + location.func = UNKNOWN_FUNCTION; + + stack = { + name: name, + message: message, + url: getLocationHref(), + stack: [location] + }; + notifyHandlers(stack, true); + } + + if (_oldOnerrorHandler) { + return _oldOnerrorHandler.apply(this, arguments); + } + + return false; + } + + function installGlobalHandler() { + if (_onErrorHandlerInstalled) { + return; + } + _oldOnerrorHandler = _window.onerror; + _window.onerror = traceKitWindowOnError; + _onErrorHandlerInstalled = true; + } + + function uninstallGlobalHandler() { + if (!_onErrorHandlerInstalled) { + return; + } + _window.onerror = _oldOnerrorHandler; + _onErrorHandlerInstalled = false; + _oldOnerrorHandler = undefined; + } + + function processLastException() { + var _lastExceptionStack = lastExceptionStack, + _lastArgs = lastArgs; + lastArgs = null; + lastExceptionStack = null; + lastException = null; + notifyHandlers.apply(null, [_lastExceptionStack, false].concat(_lastArgs)); + } + + /** + * Reports an unhandled Error to TraceKit. + * @param {Error} ex + * @param {?boolean} rethrow If false, do not re-throw the exception. + * Only used for window.onerror to not cause an infinite loop of + * rethrowing. + */ + function report(ex, rethrow) { + var args = _slice.call(arguments, 1); + if (lastExceptionStack) { + if (lastException === ex) { + return; // already caught by an inner catch block, ignore + } else { + processLastException(); + } + } + + var stack = TraceKit.computeStackTrace(ex); + lastExceptionStack = stack; + lastException = ex; + lastArgs = args; + + // If the stack trace is incomplete, wait for 2 seconds for + // slow slow IE to see if onerror occurs or not before reporting + // this exception; otherwise, we will end up with an incomplete + // stack trace + setTimeout(function() { + if (lastException === ex) { + processLastException(); + } + }, stack.incomplete ? 2000 : 0); + + if (rethrow !== false) { + throw ex; // re-throw to propagate to the top level (and cause window.onerror) + } + } + + report.subscribe = subscribe; + report.unsubscribe = unsubscribe; + report.uninstall = unsubscribeAll; + return report; +})(); + +/** + * TraceKit.computeStackTrace: cross-browser stack traces in JavaScript + * + * Syntax: + * s = TraceKit.computeStackTrace(exception) // consider using TraceKit.report instead (see below) + * Returns: + * s.name - exception name + * s.message - exception message + * s.stack[i].url - JavaScript or HTML file URL + * s.stack[i].func - function name, or empty for anonymous functions (if guessing did not work) + * s.stack[i].args - arguments passed to the function, if known + * s.stack[i].line - line number, if known + * s.stack[i].column - column number, if known + * + * Supports: + * - Firefox: full stack trace with line numbers and unreliable column + * number on top frame + * - Opera 10: full stack trace with line and column numbers + * - Opera 9-: full stack trace with line numbers + * - Chrome: full stack trace with line and column numbers + * - Safari: line and column number for the topmost stacktrace element + * only + * - IE: no line numbers whatsoever + * + * Tries to guess names of anonymous functions by looking for assignments + * in the source code. In IE and Safari, we have to guess source file names + * by searching for function bodies inside all page scripts. This will not + * work for scripts that are loaded cross-domain. + * Here be dragons: some function names may be guessed incorrectly, and + * duplicate functions may be mismatched. + * + * TraceKit.computeStackTrace should only be used for tracing purposes. + * Logging of unhandled exceptions should be done with TraceKit.report, + * which builds on top of TraceKit.computeStackTrace and provides better + * IE support by utilizing the window.onerror event to retrieve information + * about the top of the stack. + * + * Note: In IE and Safari, no stack trace is recorded on the Error object, + * so computeStackTrace instead walks its *own* chain of callers. + * This means that: + * * in Safari, some methods may be missing from the stack trace; + * * in IE, the topmost function in the stack trace will always be the + * caller of computeStackTrace. + * + * This is okay for tracing (because you are likely to be calling + * computeStackTrace from the function you want to be the topmost element + * of the stack trace anyway), but not okay for logging unhandled + * exceptions (because your catch block will likely be far away from the + * inner function that actually caused the exception). + * + */ +TraceKit.computeStackTrace = (function computeStackTraceWrapper() { + // Contents of Exception in various browsers. + // + // SAFARI: + // ex.message = Can't find variable: qq + // ex.line = 59 + // ex.sourceId = 580238192 + // ex.sourceURL = http://... + // ex.expressionBeginOffset = 96 + // ex.expressionCaretOffset = 98 + // ex.expressionEndOffset = 98 + // ex.name = ReferenceError + // + // FIREFOX: + // ex.message = qq is not defined + // ex.fileName = http://... + // ex.lineNumber = 59 + // ex.columnNumber = 69 + // ex.stack = ...stack trace... (see the example below) + // ex.name = ReferenceError + // + // CHROME: + // ex.message = qq is not defined + // ex.name = ReferenceError + // ex.type = not_defined + // ex.arguments = ['aa'] + // ex.stack = ...stack trace... + // + // INTERNET EXPLORER: + // ex.message = ... + // ex.name = ReferenceError + // + // OPERA: + // ex.message = ...message... (see the example below) + // ex.name = ReferenceError + // ex.opera#sourceloc = 11 (pretty much useless, duplicates the info in ex.message) + // ex.stacktrace = n/a; see 'opera:config#UserPrefs|Exceptions Have Stacktrace' + + /** + * Computes stack trace information from the stack property. + * Chrome and Gecko use this property. + * @param {Error} ex + * @return {?Object.} Stack trace information. + */ + function computeStackTraceFromStackProp(ex) { + if (typeof ex.stack === 'undefined' || !ex.stack) return; + + var chrome = /^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i; + var winjs = /^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i; + // NOTE: blob urls are now supposed to always have an origin, therefore it's format + // which is `blob:http://url/path/with-some-uuid`, is matched by `blob.*?:\/` as well + var gecko = /^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i; + // Used to additionally parse URL/line/column from eval frames + var geckoEval = /(\S+) line (\d+)(?: > eval line \d+)* > eval/i; + var chromeEval = /\((\S*)(?::(\d+))(?::(\d+))\)/; + var lines = ex.stack.split('\n'); + var stack = []; + var submatch; + var parts; + var element; + var reference = /^(.*) is undefined$/.exec(ex.message); + + for (var i = 0, j = lines.length; i < j; ++i) { + if ((parts = chrome.exec(lines[i]))) { + var isNative = parts[2] && parts[2].indexOf('native') === 0; // start of line + var isEval = parts[2] && parts[2].indexOf('eval') === 0; // start of line + if (isEval && (submatch = chromeEval.exec(parts[2]))) { + // throw out eval line/column and use top-most line/column number + parts[2] = submatch[1]; // url + parts[3] = submatch[2]; // line + parts[4] = submatch[3]; // column + } + element = { + url: !isNative ? parts[2] : null, + func: parts[1] || UNKNOWN_FUNCTION, + args: isNative ? [parts[2]] : [], + line: parts[3] ? +parts[3] : null, + column: parts[4] ? +parts[4] : null + }; + } else if ((parts = winjs.exec(lines[i]))) { + element = { + url: parts[2], + func: parts[1] || UNKNOWN_FUNCTION, + args: [], + line: +parts[3], + column: parts[4] ? +parts[4] : null + }; + } else if ((parts = gecko.exec(lines[i]))) { + var isEval = parts[3] && parts[3].indexOf(' > eval') > -1; + if (isEval && (submatch = geckoEval.exec(parts[3]))) { + // throw out eval line/column and use top-most line number + parts[3] = submatch[1]; + parts[4] = submatch[2]; + parts[5] = null; // no column when eval + } else if (i === 0 && !parts[5] && typeof ex.columnNumber !== 'undefined') { + // FireFox uses this awesome columnNumber property for its top frame + // Also note, Firefox's column number is 0-based and everything else expects 1-based, + // so adding 1 + // NOTE: this hack doesn't work if top-most frame is eval + stack[0].column = ex.columnNumber + 1; + } + element = { + url: parts[3], + func: parts[1] || UNKNOWN_FUNCTION, + args: parts[2] ? parts[2].split(',') : [], + line: parts[4] ? +parts[4] : null, + column: parts[5] ? +parts[5] : null + }; + } else { + continue; + } + + if (!element.func && element.line) { + element.func = UNKNOWN_FUNCTION; + } + + if (element.url && element.url.substr(0, 5) === 'blob:') { + // Special case for handling JavaScript loaded into a blob. + // We use a synchronous AJAX request here as a blob is already in + // memory - it's not making a network request. This will generate a warning + // in the browser console, but there has already been an error so that's not + // that much of an issue. + var xhr = new XMLHttpRequest(); + xhr.open('GET', element.url, false); + xhr.send(null); + + // If we failed to download the source, skip this patch + if (xhr.status === 200) { + var source = xhr.responseText || ''; + + // We trim the source down to the last 300 characters as sourceMappingURL is always at the end of the file. + // Why 300? To be in line with: https://github.com/getsentry/sentry/blob/4af29e8f2350e20c28a6933354e4f42437b4ba42/src/sentry/lang/javascript/processor.py#L164-L175 + source = source.slice(-300); + + // Now we dig out the source map URL + var sourceMaps = source.match(/\/\/# sourceMappingURL=(.*)$/); + + // If we don't find a source map comment or we find more than one, continue on to the next element. + if (sourceMaps) { + var sourceMapAddress = sourceMaps[1]; + + // Now we check to see if it's a relative URL. + // If it is, convert it to an absolute one. + if (sourceMapAddress.charAt(0) === '~') { + sourceMapAddress = getLocationOrigin() + sourceMapAddress.slice(1); + } + + // Now we strip the '.map' off of the end of the URL and update the + // element so that Sentry can match the map to the blob. + element.url = sourceMapAddress.slice(0, -4); + } + } + } + + stack.push(element); + } + + if (!stack.length) { + return null; + } + + return { + name: ex.name, + message: ex.message, + url: getLocationHref(), + stack: stack + }; + } + + /** + * Adds information about the first frame to incomplete stack traces. + * Safari and IE require this to get complete data on the first frame. + * @param {Object.} stackInfo Stack trace information from + * one of the compute* methods. + * @param {string} url The URL of the script that caused an error. + * @param {(number|string)} lineNo The line number of the script that + * caused an error. + * @param {string=} message The error generated by the browser, which + * hopefully contains the name of the object that caused the error. + * @return {boolean} Whether or not the stack information was + * augmented. + */ + function augmentStackTraceWithInitialElement(stackInfo, url, lineNo, message) { + var initial = { + url: url, + line: lineNo + }; + + if (initial.url && initial.line) { + stackInfo.incomplete = false; + + if (!initial.func) { + initial.func = UNKNOWN_FUNCTION; + } + + if (stackInfo.stack.length > 0) { + if (stackInfo.stack[0].url === initial.url) { + if (stackInfo.stack[0].line === initial.line) { + return false; // already in stack trace + } else if ( + !stackInfo.stack[0].line && + stackInfo.stack[0].func === initial.func + ) { + stackInfo.stack[0].line = initial.line; + return false; + } + } + } + + stackInfo.stack.unshift(initial); + stackInfo.partial = true; + return true; + } else { + stackInfo.incomplete = true; + } + + return false; + } + + /** + * Computes stack trace information by walking the arguments.caller + * chain at the time the exception occurred. This will cause earlier + * frames to be missed but is the only way to get any stack trace in + * Safari and IE. The top frame is restored by + * {@link augmentStackTraceWithInitialElement}. + * @param {Error} ex + * @return {?Object.} Stack trace information. + */ + function computeStackTraceByWalkingCallerChain(ex, depth) { + var functionName = /function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i, + stack = [], + funcs = {}, + recursion = false, + parts, + item, + source; + + for ( + var curr = computeStackTraceByWalkingCallerChain.caller; + curr && !recursion; + curr = curr.caller + ) { + if (curr === computeStackTrace || curr === TraceKit.report) { + // console.log('skipping internal function'); + continue; + } + + item = { + url: null, + func: UNKNOWN_FUNCTION, + line: null, + column: null + }; + + if (curr.name) { + item.func = curr.name; + } else if ((parts = functionName.exec(curr.toString()))) { + item.func = parts[1]; + } + + if (typeof item.func === 'undefined') { + try { + item.func = parts.input.substring(0, parts.input.indexOf('{')); + } catch (e) {} + } + + if (funcs['' + curr]) { + recursion = true; + } else { + funcs['' + curr] = true; + } + + stack.push(item); + } + + if (depth) { + // console.log('depth is ' + depth); + // console.log('stack is ' + stack.length); + stack.splice(0, depth); + } + + var result = { + name: ex.name, + message: ex.message, + url: getLocationHref(), + stack: stack + }; + augmentStackTraceWithInitialElement( + result, + ex.sourceURL || ex.fileName, + ex.line || ex.lineNumber, + ex.message || ex.description + ); + return result; + } + + /** + * Computes a stack trace for an exception. + * @param {Error} ex + * @param {(string|number)=} depth + */ + function computeStackTrace(ex, depth) { + var stack = null; + depth = depth == null ? 0 : +depth; + + try { + stack = computeStackTraceFromStackProp(ex); + if (stack) { + return stack; + } + } catch (e) { + if (TraceKit.debug) { + throw e; + } + } + + try { + stack = computeStackTraceByWalkingCallerChain(ex, depth + 1); + if (stack) { + return stack; + } + } catch (e) { + if (TraceKit.debug) { + throw e; + } + } + return { + name: ex.name, + message: ex.message, + url: getLocationHref() + }; + } + + computeStackTrace.augmentStackTraceWithInitialElement = augmentStackTraceWithInitialElement; + computeStackTrace.computeStackTraceFromStackProp = computeStackTraceFromStackProp; + + return computeStackTrace; +})(); + +module.exports = TraceKit; + +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"10":10}],12:[function(_dereq_,module,exports){ +/* + json-stringify-safe + Like JSON.stringify, but doesn't throw on circular references. + + Originally forked from https://github.com/isaacs/json-stringify-safe + version 5.0.1 on 3/8/2017 and modified to handle Errors serialization + and IE8 compatibility. Tests for this are in test/vendor. + + ISC license: https://github.com/isaacs/json-stringify-safe/blob/master/LICENSE +*/ + +exports = module.exports = stringify; +exports.getSerialize = serializer; + +function indexOf(haystack, needle) { + for (var i = 0; i < haystack.length; ++i) { + if (haystack[i] === needle) return i; + } + return -1; +} + +function stringify(obj, replacer, spaces, cycleReplacer) { + return JSON.stringify(obj, serializer(replacer, cycleReplacer), spaces); +} + +// https://github.com/ftlabs/js-abbreviate/blob/fa709e5f139e7770a71827b1893f22418097fbda/index.js#L95-L106 +function stringifyError(value) { + var err = { + // These properties are implemented as magical getters and don't show up in for in + stack: value.stack, + message: value.message, + name: value.name + }; + + for (var i in value) { + if (Object.prototype.hasOwnProperty.call(value, i)) { + err[i] = value[i]; + } + } + + return err; +} + +function serializer(replacer, cycleReplacer) { + var stack = []; + var keys = []; + + if (cycleReplacer == null) { + cycleReplacer = function(key, value) { + if (stack[0] === value) { + return '[Circular ~]'; + } + return '[Circular ~.' + keys.slice(0, indexOf(stack, value)).join('.') + ']'; + }; + } + + return function(key, value) { + if (stack.length > 0) { + var thisPos = indexOf(stack, this); + ~thisPos ? stack.splice(thisPos + 1) : stack.push(this); + ~thisPos ? keys.splice(thisPos, Infinity, key) : keys.push(key); + + if (~indexOf(stack, value)) { + value = cycleReplacer.call(this, key, value); + } + } else { + stack.push(value); + } + + return replacer == null + ? value instanceof Error ? stringifyError(value) : value + : replacer.call(this, key, value); + }; +} + +},{}],13:[function(_dereq_,module,exports){ +/* + * JavaScript MD5 + * https://github.com/blueimp/JavaScript-MD5 + * + * Copyright 2011, Sebastian Tschan + * https://blueimp.net + * + * Licensed under the MIT license: + * https://opensource.org/licenses/MIT + * + * Based on + * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message + * Digest Algorithm, as defined in RFC 1321. + * Version 2.2 Copyright (C) Paul Johnston 1999 - 2009 + * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet + * Distributed under the BSD License + * See http://pajhome.org.uk/crypt/md5 for more info. + */ + +/* +* Add integers, wrapping at 2^32. This uses 16-bit operations internally +* to work around bugs in some JS interpreters. +*/ +function safeAdd(x, y) { + var lsw = (x & 0xffff) + (y & 0xffff); + var msw = (x >> 16) + (y >> 16) + (lsw >> 16); + return (msw << 16) | (lsw & 0xffff); +} + +/* +* Bitwise rotate a 32-bit number to the left. +*/ +function bitRotateLeft(num, cnt) { + return (num << cnt) | (num >>> (32 - cnt)); +} + +/* +* These functions implement the four basic operations the algorithm uses. +*/ +function md5cmn(q, a, b, x, s, t) { + return safeAdd(bitRotateLeft(safeAdd(safeAdd(a, q), safeAdd(x, t)), s), b); +} +function md5ff(a, b, c, d, x, s, t) { + return md5cmn((b & c) | (~b & d), a, b, x, s, t); +} +function md5gg(a, b, c, d, x, s, t) { + return md5cmn((b & d) | (c & ~d), a, b, x, s, t); +} +function md5hh(a, b, c, d, x, s, t) { + return md5cmn(b ^ c ^ d, a, b, x, s, t); +} +function md5ii(a, b, c, d, x, s, t) { + return md5cmn(c ^ (b | ~d), a, b, x, s, t); +} + +/* +* Calculate the MD5 of an array of little-endian words, and a bit length. +*/ +function binlMD5(x, len) { + /* append padding */ + x[len >> 5] |= 0x80 << (len % 32); + x[(((len + 64) >>> 9) << 4) + 14] = len; + + var i; + var olda; + var oldb; + var oldc; + var oldd; + var a = 1732584193; + var b = -271733879; + var c = -1732584194; + var d = 271733878; + + for (i = 0; i < x.length; i += 16) { + olda = a; + oldb = b; + oldc = c; + oldd = d; + + a = md5ff(a, b, c, d, x[i], 7, -680876936); + d = md5ff(d, a, b, c, x[i + 1], 12, -389564586); + c = md5ff(c, d, a, b, x[i + 2], 17, 606105819); + b = md5ff(b, c, d, a, x[i + 3], 22, -1044525330); + a = md5ff(a, b, c, d, x[i + 4], 7, -176418897); + d = md5ff(d, a, b, c, x[i + 5], 12, 1200080426); + c = md5ff(c, d, a, b, x[i + 6], 17, -1473231341); + b = md5ff(b, c, d, a, x[i + 7], 22, -45705983); + a = md5ff(a, b, c, d, x[i + 8], 7, 1770035416); + d = md5ff(d, a, b, c, x[i + 9], 12, -1958414417); + c = md5ff(c, d, a, b, x[i + 10], 17, -42063); + b = md5ff(b, c, d, a, x[i + 11], 22, -1990404162); + a = md5ff(a, b, c, d, x[i + 12], 7, 1804603682); + d = md5ff(d, a, b, c, x[i + 13], 12, -40341101); + c = md5ff(c, d, a, b, x[i + 14], 17, -1502002290); + b = md5ff(b, c, d, a, x[i + 15], 22, 1236535329); + + a = md5gg(a, b, c, d, x[i + 1], 5, -165796510); + d = md5gg(d, a, b, c, x[i + 6], 9, -1069501632); + c = md5gg(c, d, a, b, x[i + 11], 14, 643717713); + b = md5gg(b, c, d, a, x[i], 20, -373897302); + a = md5gg(a, b, c, d, x[i + 5], 5, -701558691); + d = md5gg(d, a, b, c, x[i + 10], 9, 38016083); + c = md5gg(c, d, a, b, x[i + 15], 14, -660478335); + b = md5gg(b, c, d, a, x[i + 4], 20, -405537848); + a = md5gg(a, b, c, d, x[i + 9], 5, 568446438); + d = md5gg(d, a, b, c, x[i + 14], 9, -1019803690); + c = md5gg(c, d, a, b, x[i + 3], 14, -187363961); + b = md5gg(b, c, d, a, x[i + 8], 20, 1163531501); + a = md5gg(a, b, c, d, x[i + 13], 5, -1444681467); + d = md5gg(d, a, b, c, x[i + 2], 9, -51403784); + c = md5gg(c, d, a, b, x[i + 7], 14, 1735328473); + b = md5gg(b, c, d, a, x[i + 12], 20, -1926607734); + + a = md5hh(a, b, c, d, x[i + 5], 4, -378558); + d = md5hh(d, a, b, c, x[i + 8], 11, -2022574463); + c = md5hh(c, d, a, b, x[i + 11], 16, 1839030562); + b = md5hh(b, c, d, a, x[i + 14], 23, -35309556); + a = md5hh(a, b, c, d, x[i + 1], 4, -1530992060); + d = md5hh(d, a, b, c, x[i + 4], 11, 1272893353); + c = md5hh(c, d, a, b, x[i + 7], 16, -155497632); + b = md5hh(b, c, d, a, x[i + 10], 23, -1094730640); + a = md5hh(a, b, c, d, x[i + 13], 4, 681279174); + d = md5hh(d, a, b, c, x[i], 11, -358537222); + c = md5hh(c, d, a, b, x[i + 3], 16, -722521979); + b = md5hh(b, c, d, a, x[i + 6], 23, 76029189); + a = md5hh(a, b, c, d, x[i + 9], 4, -640364487); + d = md5hh(d, a, b, c, x[i + 12], 11, -421815835); + c = md5hh(c, d, a, b, x[i + 15], 16, 530742520); + b = md5hh(b, c, d, a, x[i + 2], 23, -995338651); + + a = md5ii(a, b, c, d, x[i], 6, -198630844); + d = md5ii(d, a, b, c, x[i + 7], 10, 1126891415); + c = md5ii(c, d, a, b, x[i + 14], 15, -1416354905); + b = md5ii(b, c, d, a, x[i + 5], 21, -57434055); + a = md5ii(a, b, c, d, x[i + 12], 6, 1700485571); + d = md5ii(d, a, b, c, x[i + 3], 10, -1894986606); + c = md5ii(c, d, a, b, x[i + 10], 15, -1051523); + b = md5ii(b, c, d, a, x[i + 1], 21, -2054922799); + a = md5ii(a, b, c, d, x[i + 8], 6, 1873313359); + d = md5ii(d, a, b, c, x[i + 15], 10, -30611744); + c = md5ii(c, d, a, b, x[i + 6], 15, -1560198380); + b = md5ii(b, c, d, a, x[i + 13], 21, 1309151649); + a = md5ii(a, b, c, d, x[i + 4], 6, -145523070); + d = md5ii(d, a, b, c, x[i + 11], 10, -1120210379); + c = md5ii(c, d, a, b, x[i + 2], 15, 718787259); + b = md5ii(b, c, d, a, x[i + 9], 21, -343485551); + + a = safeAdd(a, olda); + b = safeAdd(b, oldb); + c = safeAdd(c, oldc); + d = safeAdd(d, oldd); + } + return [a, b, c, d]; +} + +/* +* Convert an array of little-endian words to a string +*/ +function binl2rstr(input) { + var i; + var output = ''; + var length32 = input.length * 32; + for (i = 0; i < length32; i += 8) { + output += String.fromCharCode((input[i >> 5] >>> (i % 32)) & 0xff); + } + return output; +} + +/* +* Convert a raw string to an array of little-endian words +* Characters >255 have their high-byte silently ignored. +*/ +function rstr2binl(input) { + var i; + var output = []; + output[(input.length >> 2) - 1] = undefined; + for (i = 0; i < output.length; i += 1) { + output[i] = 0; + } + var length8 = input.length * 8; + for (i = 0; i < length8; i += 8) { + output[i >> 5] |= (input.charCodeAt(i / 8) & 0xff) << (i % 32); + } + return output; +} + +/* +* Calculate the MD5 of a raw string +*/ +function rstrMD5(s) { + return binl2rstr(binlMD5(rstr2binl(s), s.length * 8)); +} + +/* +* Calculate the HMAC-MD5, of a key and some data (raw strings) +*/ +function rstrHMACMD5(key, data) { + var i; + var bkey = rstr2binl(key); + var ipad = []; + var opad = []; + var hash; + ipad[15] = opad[15] = undefined; + if (bkey.length > 16) { + bkey = binlMD5(bkey, key.length * 8); + } + for (i = 0; i < 16; i += 1) { + ipad[i] = bkey[i] ^ 0x36363636; + opad[i] = bkey[i] ^ 0x5c5c5c5c; + } + hash = binlMD5(ipad.concat(rstr2binl(data)), 512 + data.length * 8); + return binl2rstr(binlMD5(opad.concat(hash), 512 + 128)); +} + +/* +* Convert a raw string to a hex string +*/ +function rstr2hex(input) { + var hexTab = '0123456789abcdef'; + var output = ''; + var x; + var i; + for (i = 0; i < input.length; i += 1) { + x = input.charCodeAt(i); + output += hexTab.charAt((x >>> 4) & 0x0f) + hexTab.charAt(x & 0x0f); + } + return output; +} + +/* +* Encode a string as utf-8 +*/ +function str2rstrUTF8(input) { + return unescape(encodeURIComponent(input)); +} + +/* +* Take string arguments and return either raw or hex encoded strings +*/ +function rawMD5(s) { + return rstrMD5(str2rstrUTF8(s)); +} +function hexMD5(s) { + return rstr2hex(rawMD5(s)); +} +function rawHMACMD5(k, d) { + return rstrHMACMD5(str2rstrUTF8(k), str2rstrUTF8(d)); +} +function hexHMACMD5(k, d) { + return rstr2hex(rawHMACMD5(k, d)); +} + +function md5(string, key, raw) { + if (!key) { + if (!raw) { + return hexMD5(string); + } + return rawMD5(string); + } + if (!raw) { + return hexHMACMD5(key, string); + } + return rawHMACMD5(key, string); +} + +module.exports = md5; + +},{}]},{},[9,1,2,3,4,5])(9) +}); \ No newline at end of file diff --git a/packages/raven-js/dist/angular,console,ember,require,vue/raven.min.js b/packages/raven-js/dist/angular,console,ember,require,vue/raven.min.js new file mode 100644 index 000000000000..6ea65d866777 --- /dev/null +++ b/packages/raven-js/dist/angular,console,ember,require,vue/raven.min.js @@ -0,0 +1,4 @@ +/*! Raven.js 3.25.2 (30b6d4e) | github.com/getsentry/raven-js */ +!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.Raven=a()}}(function(){var a;return function b(a,c,d){function e(g,h){if(!c[g]){if(!a[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};a[g][0].call(k.exports,function(b){var c=a[g][1][b];return e(c?c:b)},k,k.exports,b,a,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;g":"anonymous component")+(a._isVue&&a.$options.__file?" at "+a.$options.__file:"")}function e(a,b){if(b=b||window.Vue,b&&b.config){var c=b.config.errorHandler;b.config.errorHandler=function(b,e,f){var g={};"[object Object]"===Object.prototype.toString.call(e)&&(g.componentName=d(e),g.propsData=e.$options.propsData),"undefined"!=typeof f&&(g.lifecycleHook=f),a.captureException(b,{extra:g}),"function"==typeof c&&c.call(this,b,e,f)}}}b.exports=e,a(9).addPlugin(b.exports)},{9:9}],6:[function(a,b,c){function d(a){this.name="RavenConfigError",this.message=a}d.prototype=new Error,d.prototype.constructor=d,b.exports=d},{}],7:[function(a,b,c){var d=a(10),e=function(a,b,c){var e=a[b],f=a;if(b in a){var g="warn"===b?"warning":b;a[b]=function(){var a=[].slice.call(arguments),h=d.safeJoin(a," "),i={level:g,logger:"console",extra:{arguments:a}};"assert"===b?a[0]===!1&&(h="Assertion failed: "+(d.safeJoin(a.slice(1)," ")||"console.assert"),i.extra.arguments=a.slice(1),c&&c(h,i)):c&&c(h,i),e&&Function.prototype.apply.call(e,f,a)}}};b.exports={wrapMethod:e}},{10:10}],8:[function(a,b,c){(function(c){function d(){return+new Date}function e(a,b){return s(b)?function(c){return b(c,a)}:b}function f(){this.b=!("object"!=typeof JSON||!JSON.stringify),this.c=!r(S),this.d=!r(T),this.e=null,this.f=null,this.g=null,this.h=null,this.i=null,this.j=null,this.k={},this.l={release:R.SENTRY_RELEASE&&R.SENTRY_RELEASE.id,logger:"javascript",ignoreErrors:[],ignoreUrls:[],whitelistUrls:[],includePaths:[],headers:null,collectWindowErrors:!0,captureUnhandledRejections:!0,maxMessageLength:0,maxUrlLength:250,stackTraceLimit:50,autoBreadcrumbs:!0,instrument:!0,sampleRate:1,sanitizeKeys:[]},this.m={method:"POST",keepalive:!0,referrerPolicy:K()?"origin":""},this.n=0,this.o=!1,this.p=Error.stackTraceLimit,this.q=R.console||{},this.r={},this.s=[],this.t=d(),this.u=[],this.v=[],this.w=null,this.x=R.location,this.y=this.x&&this.x.href,this.z();for(var a in this.q)this.r[a]=this.q[a]}var g=a(11),h=a(12),i=a(13),j=a(6),k=a(10),l=k.isErrorEvent,m=k.isDOMError,n=k.isDOMException,o=k.isError,p=k.isObject,q=k.isPlainObject,r=k.isUndefined,s=k.isFunction,t=k.isString,u=k.isArray,v=k.isEmptyObject,w=k.each,x=k.objectMerge,y=k.truncate,z=k.objectFrozen,A=k.hasKey,B=k.joinRegExp,C=k.urlencode,D=k.uuid4,E=k.htmlTreeAsString,F=k.isSameException,G=k.isSameStacktrace,H=k.parseUrl,I=k.fill,J=k.supportsFetch,K=k.supportsReferrerPolicy,L=k.serializeKeysForMessage,M=k.serializeException,N=k.sanitize,O=a(7).wrapMethod,P="source protocol user pass host port path".split(" "),Q=/^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/,R="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},S=R.document,T=R.navigator;f.prototype={VERSION:"3.25.2",debug:!1,TraceKit:g,config:function(a,b){var c=this;if(c.h)return this.A("error","Error: Raven has already been configured"),c;if(!a)return c;var d=c.l;b&&w(b,function(a,b){"tags"===a||"extra"===a||"user"===a?c.k[a]=b:d[a]=b}),c.setDSN(a),d.ignoreErrors.push(/^Script error\.?$/),d.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/),d.ignoreErrors=B(d.ignoreErrors),d.ignoreUrls=!!d.ignoreUrls.length&&B(d.ignoreUrls),d.whitelistUrls=!!d.whitelistUrls.length&&B(d.whitelistUrls),d.includePaths=B(d.includePaths),d.maxBreadcrumbs=Math.max(0,Math.min(d.maxBreadcrumbs||100,100));var e={xhr:!0,console:!0,dom:!0,location:!0,sentry:!0},f=d.autoBreadcrumbs;"[object Object]"==={}.toString.call(f)?f=x(e,f):f!==!1&&(f=e),d.autoBreadcrumbs=f;var h={tryCatch:!0},i=d.instrument;return"[object Object]"==={}.toString.call(i)?i=x(h,i):i!==!1&&(i=h),d.instrument=i,g.collectWindowErrors=!!d.collectWindowErrors,c},install:function(){var a=this;return a.isSetup()&&!a.o&&(g.report.subscribe(function(){a.B.apply(a,arguments)}),a.l.captureUnhandledRejections&&a.C(),a.D(),a.l.instrument&&a.l.instrument.tryCatch&&a.E(),a.l.autoBreadcrumbs&&a.F(),a.G(),a.o=!0),Error.stackTraceLimit=a.l.stackTraceLimit,this},setDSN:function(a){var b=this,c=b.H(a),d=c.path.lastIndexOf("/"),e=c.path.substr(1,d);b.I=a,b.i=c.user,b.J=c.pass&&c.pass.substr(1),b.j=c.path.substr(d+1),b.h=b.K(c),b.L=b.h+"/"+e+"api/"+b.j+"/store/",this.z()},context:function(a,b,c){return s(a)&&(c=b||[],b=a,a=void 0),this.wrap(a,b).apply(this,c)},wrap:function(a,b,c){function d(){var d=[],f=arguments.length,g=!a||a&&a.deep!==!1;for(c&&s(c)&&c.apply(this,arguments);f--;)d[f]=g?e.wrap(a,arguments[f]):arguments[f];try{return b.apply(this,d)}catch(h){throw e.M(),e.captureException(h,a),h}}var e=this;if(r(b)&&!s(a))return a;if(s(a)&&(b=a,a=void 0),!s(b))return b;try{if(b.N)return b;if(b.O)return b.O}catch(f){return b}for(var g in b)A(b,g)&&(d[g]=b[g]);return d.prototype=b.prototype,b.O=d,d.N=!0,d.P=b,d},uninstall:function(){return g.report.uninstall(),this.Q(),this.R(),this.S(),this.T(),Error.stackTraceLimit=this.p,this.o=!1,this},U:function(a){this.A("debug","Raven caught unhandled promise rejection:",a),this.captureException(a.reason,{extra:{unhandledPromiseRejection:!0}})},C:function(){return this.U=this.U.bind(this),R.addEventListener&&R.addEventListener("unhandledrejection",this.U),this},Q:function(){return R.removeEventListener&&R.removeEventListener("unhandledrejection",this.U),this},captureException:function(a,b){if(b=x({trimHeadFrames:0},b?b:{}),l(a)&&a.error)a=a.error;else{if(m(a)||n(a)){var c=a.name||(m(a)?"DOMError":"DOMException"),d=a.message?c+": "+a.message:c;return this.captureMessage(d,x(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}))}if(o(a))a=a;else{if(!q(a))return this.captureMessage(a,x(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}));b=this.V(b,a),a=new Error(b.message)}}this.e=a;try{var e=g.computeStackTrace(a);this.W(e,b)}catch(f){if(a!==f)throw f}return this},V:function(a,b){var c=Object.keys(b).sort(),d=x(a,{message:"Non-Error exception captured with keys: "+L(c),fingerprint:[i(c)],extra:a.extra||{}});return d.extra.X=M(b),d},captureMessage:function(a,b){if(!this.l.ignoreErrors.test||!this.l.ignoreErrors.test(a)){b=b||{},a+="";var c,d=x({message:a},b);try{throw new Error(a)}catch(e){c=e}c.name=null;var f=g.computeStackTrace(c),h=u(f.stack)&&f.stack[1];h&&"Raven.captureException"===h.func&&(h=f.stack[2]);var i=h&&h.url||"";if((!this.l.ignoreUrls.test||!this.l.ignoreUrls.test(i))&&(!this.l.whitelistUrls.test||this.l.whitelistUrls.test(i))){if(this.l.stacktrace||b&&b.stacktrace){d.fingerprint=null==d.fingerprint?a:d.fingerprint,b=x({trimHeadFrames:0},b),b.trimHeadFrames+=1;var j=this.Y(f,b);d.stacktrace={frames:j.reverse()}}return d.fingerprint&&(d.fingerprint=u(d.fingerprint)?d.fingerprint:[d.fingerprint]),this.Z(d),this}}},captureBreadcrumb:function(a){var b=x({timestamp:d()/1e3},a);if(s(this.l.breadcrumbCallback)){var c=this.l.breadcrumbCallback(b);if(p(c)&&!v(c))b=c;else if(c===!1)return this}return this.v.push(b),this.v.length>this.l.maxBreadcrumbs&&this.v.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.s.push([a,b]),this.o&&this.G(),this},setUserContext:function(a){return this.k.user=a,this},setExtraContext:function(a){return this.$("extra",a),this},setTagsContext:function(a){return this.$("tags",a),this},clearContext:function(){return this.k={},this},getContext:function(){return JSON.parse(h(this.k))},setEnvironment:function(a){return this.l.environment=a,this},setRelease:function(a){return this.l.release=a,this},setDataCallback:function(a){var b=this.l.dataCallback;return this.l.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.l.breadcrumbCallback;return this.l.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.l.shouldSendCallback;return this.l.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.l.transport=a,this},lastException:function(){return this.e},lastEventId:function(){return this.g},isSetup:function(){return!!this.b&&(!!this.h||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.A("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=R.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(S){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.I;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.k.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.K(this.H(c)),h=S.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(S.head||S.body).appendChild(h)}},M:function(){var a=this;this.n+=1,setTimeout(function(){a.n-=1})},_:function(a,b){var c,d;if(this.c){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),S.createEvent?(c=S.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=S.createEventObject(),c.eventType=a);for(d in b)A(b,d)&&(c[d]=b[d]);if(S.createEvent)S.dispatchEvent(c);else try{S.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},aa:function(a){var b=this;return function(c){if(b.ba=null,b.w!==c){b.w=c;var d;try{d=E(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ca:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.ba;g||a.aa("input")(c),clearTimeout(g),a.ba=setTimeout(function(){a.ba=null},b)}}},da:function(a,b){var c=H(this.x.href),d=H(b),e=H(a);this.y=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},D:function(){var a=this;a.ea=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.N?a.ea.apply(this.P,arguments):a.ea.apply(this,arguments)}},R:function(){this.ea&&(Function.prototype.toString=this.ea)},E:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.da(b.y,c+""),a.apply(this,arguments)}};I(R.history,"pushState",j,d),I(R.history,"replaceState",j,d)}if(c.console&&"console"in R&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};w(["debug","info","warn","error","log"],function(a,b){O(console,b,k)})}},S:function(){for(var a;this.u.length;){a=this.u.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},T:function(){for(var a in this.r)this.q[a]=this.r[a]},G:function(){var a=this;w(this.s,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},H:function(a){var b=Q.exec(a),c={},d=7;try{for(;d--;)c[P[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.l.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},K:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},B:function(){this.n||this.W.apply(this,arguments)},W:function(a,b){var c=this.Y(a,b);this._("handle",{stackInfo:a,options:b}),this.ga(a.name,a.message,a.url,a.lineno,c,b)},Y:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(w(a.stack,function(b,e){var f=c.ha(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.v,0)}),this.k.user&&(a.user=this.k.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),a=this.qa(a),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||v(a[b]))&&delete a[b]}),s(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!v(a)&&(!s(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.na()?void this.A("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function F(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&l(b))for(c=b.split(/\s+/),f=0;fc?Q(a,b-1):d}function R(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?X:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function S(a,b){function c(a){return m(a)?a.map(function(a){return c(a)}):k(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!m(b)||m(b)&&0===b.length)return a;var d,e=A(b),f="********";try{d=JSON.parse(T(a))}catch(g){return a}return c(d)}var T=a(12),U="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},V=3,W=51200,X=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isDOMError:g,isDOMException:h,isUndefined:i,isFunction:j,isPlainObject:k,isString:l,isArray:m,isEmptyObject:n,supportsErrorEvent:o,supportsDOMError:p,supportsDOMException:q,supportsFetch:r,supportsReferrerPolicy:s,supportsPromiseRejectionEvent:t,wrappedCallback:u,each:v,objectMerge:w,truncate:y,objectFrozen:x,hasKey:z,joinRegExp:A,urlencode:B,uuid4:D,htmlTreeAsString:E,htmlElementAsString:F,isSameException:I,isSameStacktrace:J,parseUrl:C,fill:K,safeJoin:L,serializeException:Q,serializeKeysForMessage:R,sanitize:S}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{12:12}],11:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}function e(){return"undefined"==typeof document||null==document.location?"":(document.location.origin||(document.location.origin=document.location.protocol+"//"+document.location.hostname+(document.location.port?":"+document.location.port:"")),document.location.origin)}var f=a(10),g={collectWindowErrors:!0,debug:!1},h="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},i=[].slice,j="?",k=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;g.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function e(a,b){var c=null;if(!b||g.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(i.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,h,i){var l=null,m=f.isErrorEvent(i)?i.error:i,n=f.isErrorEvent(a)?a.message:a;if(v)g.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&f.isError(m))l=g.computeStackTrace(m),e(l,!0);else{var p,r={url:b,line:c,column:h},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(k);p&&(s=p[1],n=p[2])}r.func=j,l={name:s,message:n,url:d(),stack:[r]},e(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=h.onerror,h.onerror=l,r=!0)}function n(){r&&(h.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,e.apply(null,[a,!1].concat(b))}function p(a,b){var c=i.call(arguments,1);if(v){if(u===a)return;o()}var d=g.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),g.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,f,g=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,h=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,i=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,k=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,l=/\((\S*)(?::(\d+))(?::(\d+))\)/,m=a.stack.split("\n"),n=[],o=(/^(.*) is undefined$/.exec(a.message), +0),p=m.length;o eval")>-1;r&&(b=k.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==o||c[5]||"undefined"==typeof a.columnNumber||(n[0].column=a.columnNumber+1),f={url:c[3],func:c[1]||j,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}if(!f.func&&f.line&&(f.func=j),f.url&&"blob:"===f.url.substr(0,5)){var s=new XMLHttpRequest;if(s.open("GET",f.url,!1),s.send(null),200===s.status){var t=s.responseText||"";t=t.slice(-300);var u=t.match(/\/\/# sourceMappingURL=(.*)$/);if(u){var v=u[1];"~"===v.charAt(0)&&(v=e()+v.slice(1)),f.url=v.slice(0,-4)}}}n.push(f)}return n.length?{name:a.name,message:a.message,url:d(),stack:n}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=j),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,e){for(var h,i,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==f&&o!==g.report){if(i={url:null,func:j,line:null,column:null},o.name?i.func=o.name:(h=k.exec(o.toString()))&&(i.func=h[1]),"undefined"==typeof i.func)try{i.func=h.input.substring(0,h.input.indexOf("{"))}catch(p){}m[""+o]?n=!0:m[""+o]=!0,l.push(i)}e&&l.splice(0,e);var q={name:a.name,message:a.message,url:d(),stack:l};return b(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),q}function f(b,e){var f=null;e=null==e?0:+e;try{if(f=a(b))return f}catch(h){if(g.debug)throw h}try{if(f=c(b,e+1))return f}catch(h){if(g.debug)throw h}return{name:b.name,message:b.message,url:d()}}return f.augmentStackTraceWithInitialElement=b,f.computeStackTraceFromStackProp=a,f}(),b.exports=g}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{10:10}],12:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}],13:[function(a,b,c){function d(a,b){var c=(65535&a)+(65535&b),d=(a>>16)+(b>>16)+(c>>16);return d<<16|65535&c}function e(a,b){return a<>>32-b}function f(a,b,c,f,g,h){return d(e(d(d(b,a),d(f,h)),g),c)}function g(a,b,c,d,e,g,h){return f(b&c|~b&d,a,b,e,g,h)}function h(a,b,c,d,e,g,h){return f(b&d|c&~d,a,b,e,g,h)}function i(a,b,c,d,e,g,h){return f(b^c^d,a,b,e,g,h)}function j(a,b,c,d,e,g,h){return f(c^(b|~d),a,b,e,g,h)}function k(a,b){a[b>>5]|=128<>>9<<4)+14]=b;var c,e,f,k,l,m=1732584193,n=-271733879,o=-1732584194,p=271733878;for(c=0;c>5]>>>b%32&255);return c}function m(a){var b,c=[];for(c[(a.length>>2)-1]=void 0,b=0;b>5]|=(255&a.charCodeAt(b/8))<16&&(e=k(e,8*a.length)),c=0;c<16;c+=1)f[c]=909522486^e[c],g[c]=1549556828^e[c];return d=k(f.concat(m(b)),512+8*b.length),l(k(g.concat(d),640))}function p(a){var b,c,d="0123456789abcdef",e="";for(c=0;c>>4&15)+d.charAt(15&b);return e}function q(a){return unescape(encodeURIComponent(a))}function r(a){return n(q(a))}function s(a){return p(r(a))}function t(a,b){return o(q(a),q(b))}function u(a,b){return p(t(a,b))}function v(a,b,c){return b?c?t(b,a):u(b,a):c?r(a):s(a)}b.exports=v},{}]},{},[9,1,2,3,4,5])(9)}); +//# sourceMappingURL=raven.min.js.map \ No newline at end of file diff --git a/packages/raven-js/dist/angular,console,ember,require,vue/raven.min.js.map b/packages/raven-js/dist/angular,console,ember,require,vue/raven.min.js.map new file mode 100644 index 000000000000..482791ea468e --- /dev/null +++ b/packages/raven-js/dist/angular,console,ember,require,vue/raven.min.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","angularPlugin","angular","RavenProvider","$get","$window","ExceptionHandlerProvider","$provide","decorator","exceptionHandler","R","$delegate","ex","cause","captureException","extra","moduleName","provider","config","setDataCallback","wrappedCallback","data","_normalizeData","angularPattern","exception","values","matches","exec","value","type","message","angularDocs","substr","addPlugin","10","9","2","consolePlugin","console","pluginOptions","logLevels","levels","push","callback","msg","captureMessage","level","pop","wrapConsoleMethod","wrapMethod","7","3","emberPlugin","Ember","_oldOnError","onerror","error","RSVP","on","reason","context","4","requirePlugin","wrap","deep","5","formatComponentName","vm","$root","name","_isVue","$options","_componentTag","__file","vuePlugin","Vue","errorHandler","info","metaData","Object","prototype","toString","componentName","propsData","lifecycleHook","6","RavenConfigError","constructor","utils","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","safeJoin","logger","Function","apply","8","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","sanitizeKeys","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isErrorEvent","isDOMError","isDOMException","isError","isObject","isPlainObject","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","sanitize","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","dsn","options","_logDebug","globalOptions","key","setDSN","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","func","undefined","_before","wrapped","_ignoreNextOnError","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","U","event","unhandledPromiseRejection","C","_promiseRejectionHandler","bind","addEventListener","Q","removeEventListener","trimHeadFrames","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","V","currentOptions","exKeys","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","M","setTimeout","_","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","aa","evtName","_keypressTimeout","target","category","ca","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","da","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","D","_originalFunctionToString","E","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","F","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","S","builtin","T","G","installer","concat","H","str","m","allowSecretKey","K","port","B","W","stackInfo","_triggerEvent","_processException","lineno","Y","frame","_normalizeFrame","in_app","ha","stackInfoUrl","normalized","filename","line","colno","column","function","ga","prefixedMessage","transaction","ia","request","Referer","breadcrumbs","_trimBreadcrumbs","ja","urlProp","urlProps","ka","httpData","userAgent","User-Agent","referrer","z","_backoffDuration","_backoffStart","na","oa","current","last","pa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Z","baseData","project","platform","_getHttpData","serverName","server_name","_sanitizeData","forEach","random","_sendProcessedPayload","qa","sa","ra","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","ta","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","open","setRequestHeader","send","ua","hash","evaluated","A","$","setUser","setReleaseContext","11","12","13","RavenConstructor","_Raven","noConflict","Client","what","supportsErrorEvent","ErrorEvent","supportsDOMError","DOMError","supportsDOMException","DOMException","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","sanitizeMask","safeInput","o_O","getLocationHref","getLocationOrigin","origin","hostname","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","responseText","sourceMaps","sourceMapAddress","charAt","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","y","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","string","raw"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file diff --git a/packages/raven-js/dist/angular,console,ember,require/raven.js b/packages/raven-js/dist/angular,console,ember,require/raven.js new file mode 100644 index 000000000000..fc4268ab274f --- /dev/null +++ b/packages/raven-js/dist/angular,console,ember,require/raven.js @@ -0,0 +1,4172 @@ +/*! Raven.js 3.25.2 (30b6d4e) | github.com/getsentry/raven-js */ + +/* + * Includes TraceKit + * https://github.com/getsentry/TraceKit + * + * Copyright 2018 Matt Robenolt and other contributors + * Released under the BSD license + * https://github.com/getsentry/raven-js/blob/master/LICENSE + * + */ + +(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.Raven = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o captureException(string) => captureMessage(string) + if (initialCall && initialCall.func === 'Raven.captureException') { + initialCall = stack.stack[2]; + } + + var fileurl = (initialCall && initialCall.url) || ''; + + if ( + !!this._globalOptions.ignoreUrls.test && + this._globalOptions.ignoreUrls.test(fileurl) + ) { + return; + } + + if ( + !!this._globalOptions.whitelistUrls.test && + !this._globalOptions.whitelistUrls.test(fileurl) + ) { + return; + } + + if (this._globalOptions.stacktrace || (options && options.stacktrace)) { + // fingerprint on msg, not stack trace (legacy behavior, could be revisited) + data.fingerprint = data.fingerprint == null ? msg : data.fingerprint; + + options = objectMerge( + { + trimHeadFrames: 0 + }, + options + ); + // Since we know this is a synthetic trace, the top frame (this function call) + // MUST be from Raven.js, so mark it for trimming + // We add to the trim counter so that callers can choose to trim extra frames, such + // as utility functions. + options.trimHeadFrames += 1; + + var frames = this._prepareFrames(stack, options); + data.stacktrace = { + // Sentry expects frames oldest to newest + frames: frames.reverse() + }; + } + + // Make sure that fingerprint is always wrapped in an array + if (data.fingerprint) { + data.fingerprint = isArray(data.fingerprint) + ? data.fingerprint + : [data.fingerprint]; + } + + // Fire away! + this._send(data); + + return this; + }, + + captureBreadcrumb: function(obj) { + var crumb = objectMerge( + { + timestamp: now() / 1000 + }, + obj + ); + + if (isFunction(this._globalOptions.breadcrumbCallback)) { + var result = this._globalOptions.breadcrumbCallback(crumb); + + if (isObject(result) && !isEmptyObject(result)) { + crumb = result; + } else if (result === false) { + return this; + } + } + + this._breadcrumbs.push(crumb); + if (this._breadcrumbs.length > this._globalOptions.maxBreadcrumbs) { + this._breadcrumbs.shift(); + } + return this; + }, + + addPlugin: function(plugin /*arg1, arg2, ... argN*/) { + var pluginArgs = [].slice.call(arguments, 1); + + this._plugins.push([plugin, pluginArgs]); + if (this._isRavenInstalled) { + this._drainPlugins(); + } + + return this; + }, + + /* + * Set/clear a user to be sent along with the payload. + * + * @param {object} user An object representing user data [optional] + * @return {Raven} + */ + setUserContext: function(user) { + // Intentionally do not merge here since that's an unexpected behavior. + this._globalContext.user = user; + + return this; + }, + + /* + * Merge extra attributes to be sent along with the payload. + * + * @param {object} extra An object representing extra data [optional] + * @return {Raven} + */ + setExtraContext: function(extra) { + this._mergeContext('extra', extra); + + return this; + }, + + /* + * Merge tags to be sent along with the payload. + * + * @param {object} tags An object representing tags [optional] + * @return {Raven} + */ + setTagsContext: function(tags) { + this._mergeContext('tags', tags); + + return this; + }, + + /* + * Clear all of the context. + * + * @return {Raven} + */ + clearContext: function() { + this._globalContext = {}; + + return this; + }, + + /* + * Get a copy of the current context. This cannot be mutated. + * + * @return {object} copy of context + */ + getContext: function() { + // lol javascript + return JSON.parse(stringify(this._globalContext)); + }, + + /* + * Set environment of application + * + * @param {string} environment Typically something like 'production'. + * @return {Raven} + */ + setEnvironment: function(environment) { + this._globalOptions.environment = environment; + + return this; + }, + + /* + * Set release version of application + * + * @param {string} release Typically something like a git SHA to identify version + * @return {Raven} + */ + setRelease: function(release) { + this._globalOptions.release = release; + + return this; + }, + + /* + * Set the dataCallback option + * + * @param {function} callback The callback to run which allows the + * data blob to be mutated before sending + * @return {Raven} + */ + setDataCallback: function(callback) { + var original = this._globalOptions.dataCallback; + this._globalOptions.dataCallback = keepOriginalCallback(original, callback); + return this; + }, + + /* + * Set the breadcrumbCallback option + * + * @param {function} callback The callback to run which allows filtering + * or mutating breadcrumbs + * @return {Raven} + */ + setBreadcrumbCallback: function(callback) { + var original = this._globalOptions.breadcrumbCallback; + this._globalOptions.breadcrumbCallback = keepOriginalCallback(original, callback); + return this; + }, + + /* + * Set the shouldSendCallback option + * + * @param {function} callback The callback to run which allows + * introspecting the blob before sending + * @return {Raven} + */ + setShouldSendCallback: function(callback) { + var original = this._globalOptions.shouldSendCallback; + this._globalOptions.shouldSendCallback = keepOriginalCallback(original, callback); + return this; + }, + + /** + * Override the default HTTP transport mechanism that transmits data + * to the Sentry server. + * + * @param {function} transport Function invoked instead of the default + * `makeRequest` handler. + * + * @return {Raven} + */ + setTransport: function(transport) { + this._globalOptions.transport = transport; + + return this; + }, + + /* + * Get the latest raw exception that was captured by Raven. + * + * @return {error} + */ + lastException: function() { + return this._lastCapturedException; + }, + + /* + * Get the last event id + * + * @return {string} + */ + lastEventId: function() { + return this._lastEventId; + }, + + /* + * Determine if Raven is setup and ready to go. + * + * @return {boolean} + */ + isSetup: function() { + if (!this._hasJSON) return false; // needs JSON support + if (!this._globalServer) { + if (!this.ravenNotConfiguredError) { + this.ravenNotConfiguredError = true; + this._logDebug('error', 'Error: Raven has not been configured.'); + } + return false; + } + return true; + }, + + afterLoad: function() { + // TODO: remove window dependence? + + // Attempt to initialize Raven on load + var RavenConfig = _window.RavenConfig; + if (RavenConfig) { + this.config(RavenConfig.dsn, RavenConfig.config).install(); + } + }, + + showReportDialog: function(options) { + if ( + !_document // doesn't work without a document (React native) + ) + return; + + options = options || {}; + + var lastEventId = options.eventId || this.lastEventId(); + if (!lastEventId) { + throw new RavenConfigError('Missing eventId'); + } + + var dsn = options.dsn || this._dsn; + if (!dsn) { + throw new RavenConfigError('Missing DSN'); + } + + var encode = encodeURIComponent; + var qs = ''; + qs += '?eventId=' + encode(lastEventId); + qs += '&dsn=' + encode(dsn); + + var user = options.user || this._globalContext.user; + if (user) { + if (user.name) qs += '&name=' + encode(user.name); + if (user.email) qs += '&email=' + encode(user.email); + } + + var globalServer = this._getGlobalServer(this._parseDSN(dsn)); + + var script = _document.createElement('script'); + script.async = true; + script.src = globalServer + '/api/embed/error-page/' + qs; + (_document.head || _document.body).appendChild(script); + }, + + /**** Private functions ****/ + _ignoreNextOnError: function() { + var self = this; + this._ignoreOnError += 1; + setTimeout(function() { + // onerror should trigger before setTimeout + self._ignoreOnError -= 1; + }); + }, + + _triggerEvent: function(eventType, options) { + // NOTE: `event` is a native browser thing, so let's avoid conflicting wiht it + var evt, key; + + if (!this._hasDocument) return; + + options = options || {}; + + eventType = 'raven' + eventType.substr(0, 1).toUpperCase() + eventType.substr(1); + + if (_document.createEvent) { + evt = _document.createEvent('HTMLEvents'); + evt.initEvent(eventType, true, true); + } else { + evt = _document.createEventObject(); + evt.eventType = eventType; + } + + for (key in options) + if (hasKey(options, key)) { + evt[key] = options[key]; + } + + if (_document.createEvent) { + // IE9 if standards + _document.dispatchEvent(evt); + } else { + // IE8 regardless of Quirks or Standards + // IE9 if quirks + try { + _document.fireEvent('on' + evt.eventType.toLowerCase(), evt); + } catch (e) { + // Do nothing + } + } + }, + + /** + * Wraps addEventListener to capture UI breadcrumbs + * @param evtName the event name (e.g. "click") + * @returns {Function} + * @private + */ + _breadcrumbEventHandler: function(evtName) { + var self = this; + return function(evt) { + // reset keypress timeout; e.g. triggering a 'click' after + // a 'keypress' will reset the keypress debounce so that a new + // set of keypresses can be recorded + self._keypressTimeout = null; + + // It's possible this handler might trigger multiple times for the same + // event (e.g. event propagation through node ancestors). Ignore if we've + // already captured the event. + if (self._lastCapturedEvent === evt) return; + + self._lastCapturedEvent = evt; + + // try/catch both: + // - accessing evt.target (see getsentry/raven-js#838, #768) + // - `htmlTreeAsString` because it's complex, and just accessing the DOM incorrectly + // can throw an exception in some circumstances. + var target; + try { + target = htmlTreeAsString(evt.target); + } catch (e) { + target = ''; + } + + self.captureBreadcrumb({ + category: 'ui.' + evtName, // e.g. ui.click, ui.input + message: target + }); + }; + }, + + /** + * Wraps addEventListener to capture keypress UI events + * @returns {Function} + * @private + */ + _keypressEventHandler: function() { + var self = this, + debounceDuration = 1000; // milliseconds + + // TODO: if somehow user switches keypress target before + // debounce timeout is triggered, we will only capture + // a single breadcrumb from the FIRST target (acceptable?) + return function(evt) { + var target; + try { + target = evt.target; + } catch (e) { + // just accessing event properties can throw an exception in some rare circumstances + // see: https://github.com/getsentry/raven-js/issues/838 + return; + } + var tagName = target && target.tagName; + + // only consider keypress events on actual input elements + // this will disregard keypresses targeting body (e.g. tabbing + // through elements, hotkeys, etc) + if ( + !tagName || + (tagName !== 'INPUT' && tagName !== 'TEXTAREA' && !target.isContentEditable) + ) + return; + + // record first keypress in a series, but ignore subsequent + // keypresses until debounce clears + var timeout = self._keypressTimeout; + if (!timeout) { + self._breadcrumbEventHandler('input')(evt); + } + clearTimeout(timeout); + self._keypressTimeout = setTimeout(function() { + self._keypressTimeout = null; + }, debounceDuration); + }; + }, + + /** + * Captures a breadcrumb of type "navigation", normalizing input URLs + * @param to the originating URL + * @param from the target URL + * @private + */ + _captureUrlChange: function(from, to) { + var parsedLoc = parseUrl(this._location.href); + var parsedTo = parseUrl(to); + var parsedFrom = parseUrl(from); + + // because onpopstate only tells you the "new" (to) value of location.href, and + // not the previous (from) value, we need to track the value of the current URL + // state ourselves + this._lastHref = to; + + // Use only the path component of the URL if the URL matches the current + // document (almost all the time when using pushState) + if (parsedLoc.protocol === parsedTo.protocol && parsedLoc.host === parsedTo.host) + to = parsedTo.relative; + if (parsedLoc.protocol === parsedFrom.protocol && parsedLoc.host === parsedFrom.host) + from = parsedFrom.relative; + + this.captureBreadcrumb({ + category: 'navigation', + data: { + to: to, + from: from + } + }); + }, + + _patchFunctionToString: function() { + var self = this; + self._originalFunctionToString = Function.prototype.toString; + // eslint-disable-next-line no-extend-native + Function.prototype.toString = function() { + if (typeof this === 'function' && this.__raven__) { + return self._originalFunctionToString.apply(this.__orig__, arguments); + } + return self._originalFunctionToString.apply(this, arguments); + }; + }, + + _unpatchFunctionToString: function() { + if (this._originalFunctionToString) { + // eslint-disable-next-line no-extend-native + Function.prototype.toString = this._originalFunctionToString; + } + }, + + /** + * Wrap timer functions and event targets to catch errors and provide + * better metadata. + */ + _instrumentTryCatch: function() { + var self = this; + + var wrappedBuiltIns = self._wrappedBuiltIns; + + function wrapTimeFn(orig) { + return function(fn, t) { + // preserve arity + // Make a copy of the arguments to prevent deoptimization + // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments + var args = new Array(arguments.length); + for (var i = 0; i < args.length; ++i) { + args[i] = arguments[i]; + } + var originalCallback = args[0]; + if (isFunction(originalCallback)) { + args[0] = self.wrap(originalCallback); + } + + // IE < 9 doesn't support .call/.apply on setInterval/setTimeout, but it + // also supports only two arguments and doesn't care what this is, so we + // can just call the original function directly. + if (orig.apply) { + return orig.apply(this, args); + } else { + return orig(args[0], args[1]); + } + }; + } + + var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; + + function wrapEventTarget(global) { + var proto = _window[global] && _window[global].prototype; + if (proto && proto.hasOwnProperty && proto.hasOwnProperty('addEventListener')) { + fill( + proto, + 'addEventListener', + function(orig) { + return function(evtName, fn, capture, secure) { + // preserve arity + try { + if (fn && fn.handleEvent) { + fn.handleEvent = self.wrap(fn.handleEvent); + } + } catch (err) { + // can sometimes get 'Permission denied to access property "handle Event' + } + + // More breadcrumb DOM capture ... done here and not in `_instrumentBreadcrumbs` + // so that we don't have more than one wrapper function + var before, clickHandler, keypressHandler; + + if ( + autoBreadcrumbs && + autoBreadcrumbs.dom && + (global === 'EventTarget' || global === 'Node') + ) { + // NOTE: generating multiple handlers per addEventListener invocation, should + // revisit and verify we can just use one (almost certainly) + clickHandler = self._breadcrumbEventHandler('click'); + keypressHandler = self._keypressEventHandler(); + before = function(evt) { + // need to intercept every DOM event in `before` argument, in case that + // same wrapped method is re-used for different events (e.g. mousemove THEN click) + // see #724 + if (!evt) return; + + var eventType; + try { + eventType = evt.type; + } catch (e) { + // just accessing event properties can throw an exception in some rare circumstances + // see: https://github.com/getsentry/raven-js/issues/838 + return; + } + if (eventType === 'click') return clickHandler(evt); + else if (eventType === 'keypress') return keypressHandler(evt); + }; + } + return orig.call( + this, + evtName, + self.wrap(fn, undefined, before), + capture, + secure + ); + }; + }, + wrappedBuiltIns + ); + fill( + proto, + 'removeEventListener', + function(orig) { + return function(evt, fn, capture, secure) { + try { + fn = fn && (fn.__raven_wrapper__ ? fn.__raven_wrapper__ : fn); + } catch (e) { + // ignore, accessing __raven_wrapper__ will throw in some Selenium environments + } + return orig.call(this, evt, fn, capture, secure); + }; + }, + wrappedBuiltIns + ); + } + } + + fill(_window, 'setTimeout', wrapTimeFn, wrappedBuiltIns); + fill(_window, 'setInterval', wrapTimeFn, wrappedBuiltIns); + if (_window.requestAnimationFrame) { + fill( + _window, + 'requestAnimationFrame', + function(orig) { + return function(cb) { + return orig(self.wrap(cb)); + }; + }, + wrappedBuiltIns + ); + } + + // event targets borrowed from bugsnag-js: + // https://github.com/bugsnag/bugsnag-js/blob/master/src/bugsnag.js#L666 + var eventTargets = [ + 'EventTarget', + 'Window', + 'Node', + 'ApplicationCache', + 'AudioTrackList', + 'ChannelMergerNode', + 'CryptoOperation', + 'EventSource', + 'FileReader', + 'HTMLUnknownElement', + 'IDBDatabase', + 'IDBRequest', + 'IDBTransaction', + 'KeyOperation', + 'MediaController', + 'MessagePort', + 'ModalWindow', + 'Notification', + 'SVGElementInstance', + 'Screen', + 'TextTrack', + 'TextTrackCue', + 'TextTrackList', + 'WebSocket', + 'WebSocketWorker', + 'Worker', + 'XMLHttpRequest', + 'XMLHttpRequestEventTarget', + 'XMLHttpRequestUpload' + ]; + for (var i = 0; i < eventTargets.length; i++) { + wrapEventTarget(eventTargets[i]); + } + }, + + /** + * Instrument browser built-ins w/ breadcrumb capturing + * - XMLHttpRequests + * - DOM interactions (click/typing) + * - window.location changes + * - console + * + * Can be disabled or individually configured via the `autoBreadcrumbs` config option + */ + _instrumentBreadcrumbs: function() { + var self = this; + var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; + + var wrappedBuiltIns = self._wrappedBuiltIns; + + function wrapProp(prop, xhr) { + if (prop in xhr && isFunction(xhr[prop])) { + fill(xhr, prop, function(orig) { + return self.wrap(orig); + }); // intentionally don't track filled methods on XHR instances + } + } + + if (autoBreadcrumbs.xhr && 'XMLHttpRequest' in _window) { + var xhrproto = _window.XMLHttpRequest && _window.XMLHttpRequest.prototype; + fill( + xhrproto, + 'open', + function(origOpen) { + return function(method, url) { + // preserve arity + + // if Sentry key appears in URL, don't capture + if (isString(url) && url.indexOf(self._globalKey) === -1) { + this.__raven_xhr = { + method: method, + url: url, + status_code: null + }; + } + + return origOpen.apply(this, arguments); + }; + }, + wrappedBuiltIns + ); + + fill( + xhrproto, + 'send', + function(origSend) { + return function() { + // preserve arity + var xhr = this; + + function onreadystatechangeHandler() { + if (xhr.__raven_xhr && xhr.readyState === 4) { + try { + // touching statusCode in some platforms throws + // an exception + xhr.__raven_xhr.status_code = xhr.status; + } catch (e) { + /* do nothing */ + } + + self.captureBreadcrumb({ + type: 'http', + category: 'xhr', + data: xhr.__raven_xhr + }); + } + } + + var props = ['onload', 'onerror', 'onprogress']; + for (var j = 0; j < props.length; j++) { + wrapProp(props[j], xhr); + } + + if ('onreadystatechange' in xhr && isFunction(xhr.onreadystatechange)) { + fill( + xhr, + 'onreadystatechange', + function(orig) { + return self.wrap(orig, undefined, onreadystatechangeHandler); + } /* intentionally don't track this instrumentation */ + ); + } else { + // if onreadystatechange wasn't actually set by the page on this xhr, we + // are free to set our own and capture the breadcrumb + xhr.onreadystatechange = onreadystatechangeHandler; + } + + return origSend.apply(this, arguments); + }; + }, + wrappedBuiltIns + ); + } + + if (autoBreadcrumbs.xhr && supportsFetch()) { + fill( + _window, + 'fetch', + function(origFetch) { + return function() { + // preserve arity + // Make a copy of the arguments to prevent deoptimization + // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments + var args = new Array(arguments.length); + for (var i = 0; i < args.length; ++i) { + args[i] = arguments[i]; + } + + var fetchInput = args[0]; + var method = 'GET'; + var url; + + if (typeof fetchInput === 'string') { + url = fetchInput; + } else if ('Request' in _window && fetchInput instanceof _window.Request) { + url = fetchInput.url; + if (fetchInput.method) { + method = fetchInput.method; + } + } else { + url = '' + fetchInput; + } + + // if Sentry key appears in URL, don't capture, as it's our own request + if (url.indexOf(self._globalKey) !== -1) { + return origFetch.apply(this, args); + } + + if (args[1] && args[1].method) { + method = args[1].method; + } + + var fetchData = { + method: method, + url: url, + status_code: null + }; + + return origFetch + .apply(this, args) + .then(function(response) { + fetchData.status_code = response.status; + + self.captureBreadcrumb({ + type: 'http', + category: 'fetch', + data: fetchData + }); + + return response; + }) + ['catch'](function(err) { + // if there is an error performing the request + self.captureBreadcrumb({ + type: 'http', + category: 'fetch', + data: fetchData, + level: 'error' + }); + + throw err; + }); + }; + }, + wrappedBuiltIns + ); + } + + // Capture breadcrumbs from any click that is unhandled / bubbled up all the way + // to the document. Do this before we instrument addEventListener. + if (autoBreadcrumbs.dom && this._hasDocument) { + if (_document.addEventListener) { + _document.addEventListener('click', self._breadcrumbEventHandler('click'), false); + _document.addEventListener('keypress', self._keypressEventHandler(), false); + } else if (_document.attachEvent) { + // IE8 Compatibility + _document.attachEvent('onclick', self._breadcrumbEventHandler('click')); + _document.attachEvent('onkeypress', self._keypressEventHandler()); + } + } + + // record navigation (URL) changes + // NOTE: in Chrome App environment, touching history.pushState, *even inside + // a try/catch block*, will cause Chrome to output an error to console.error + // borrowed from: https://github.com/angular/angular.js/pull/13945/files + var chrome = _window.chrome; + var isChromePackagedApp = chrome && chrome.app && chrome.app.runtime; + var hasPushAndReplaceState = + !isChromePackagedApp && + _window.history && + _window.history.pushState && + _window.history.replaceState; + if (autoBreadcrumbs.location && hasPushAndReplaceState) { + // TODO: remove onpopstate handler on uninstall() + var oldOnPopState = _window.onpopstate; + _window.onpopstate = function() { + var currentHref = self._location.href; + self._captureUrlChange(self._lastHref, currentHref); + + if (oldOnPopState) { + return oldOnPopState.apply(this, arguments); + } + }; + + var historyReplacementFunction = function(origHistFunction) { + // note history.pushState.length is 0; intentionally not declaring + // params to preserve 0 arity + return function(/* state, title, url */) { + var url = arguments.length > 2 ? arguments[2] : undefined; + + // url argument is optional + if (url) { + // coerce to string (this is what pushState does) + self._captureUrlChange(self._lastHref, url + ''); + } + + return origHistFunction.apply(this, arguments); + }; + }; + + fill(_window.history, 'pushState', historyReplacementFunction, wrappedBuiltIns); + fill(_window.history, 'replaceState', historyReplacementFunction, wrappedBuiltIns); + } + + if (autoBreadcrumbs.console && 'console' in _window && console.log) { + // console + var consoleMethodCallback = function(msg, data) { + self.captureBreadcrumb({ + message: msg, + level: data.level, + category: 'console' + }); + }; + + each(['debug', 'info', 'warn', 'error', 'log'], function(_, level) { + wrapConsoleMethod(console, level, consoleMethodCallback); + }); + } + }, + + _restoreBuiltIns: function() { + // restore any wrapped builtins + var builtin; + while (this._wrappedBuiltIns.length) { + builtin = this._wrappedBuiltIns.shift(); + + var obj = builtin[0], + name = builtin[1], + orig = builtin[2]; + + obj[name] = orig; + } + }, + + _restoreConsole: function() { + // eslint-disable-next-line guard-for-in + for (var method in this._originalConsoleMethods) { + this._originalConsole[method] = this._originalConsoleMethods[method]; + } + }, + + _drainPlugins: function() { + var self = this; + + // FIX ME TODO + each(this._plugins, function(_, plugin) { + var installer = plugin[0]; + var args = plugin[1]; + installer.apply(self, [self].concat(args)); + }); + }, + + _parseDSN: function(str) { + var m = dsnPattern.exec(str), + dsn = {}, + i = 7; + + try { + while (i--) dsn[dsnKeys[i]] = m[i] || ''; + } catch (e) { + throw new RavenConfigError('Invalid DSN: ' + str); + } + + if (dsn.pass && !this._globalOptions.allowSecretKey) { + throw new RavenConfigError( + 'Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key' + ); + } + + return dsn; + }, + + _getGlobalServer: function(uri) { + // assemble the endpoint from the uri pieces + var globalServer = '//' + uri.host + (uri.port ? ':' + uri.port : ''); + + if (uri.protocol) { + globalServer = uri.protocol + ':' + globalServer; + } + return globalServer; + }, + + _handleOnErrorStackInfo: function() { + // if we are intentionally ignoring errors via onerror, bail out + if (!this._ignoreOnError) { + this._handleStackInfo.apply(this, arguments); + } + }, + + _handleStackInfo: function(stackInfo, options) { + var frames = this._prepareFrames(stackInfo, options); + + this._triggerEvent('handle', { + stackInfo: stackInfo, + options: options + }); + + this._processException( + stackInfo.name, + stackInfo.message, + stackInfo.url, + stackInfo.lineno, + frames, + options + ); + }, + + _prepareFrames: function(stackInfo, options) { + var self = this; + var frames = []; + if (stackInfo.stack && stackInfo.stack.length) { + each(stackInfo.stack, function(i, stack) { + var frame = self._normalizeFrame(stack, stackInfo.url); + if (frame) { + frames.push(frame); + } + }); + + // e.g. frames captured via captureMessage throw + if (options && options.trimHeadFrames) { + for (var j = 0; j < options.trimHeadFrames && j < frames.length; j++) { + frames[j].in_app = false; + } + } + } + frames = frames.slice(0, this._globalOptions.stackTraceLimit); + return frames; + }, + + _normalizeFrame: function(frame, stackInfoUrl) { + // normalize the frames data + var normalized = { + filename: frame.url, + lineno: frame.line, + colno: frame.column, + function: frame.func || '?' + }; + + // Case when we don't have any information about the error + // E.g. throwing a string or raw object, instead of an `Error` in Firefox + // Generating synthetic error doesn't add any value here + // + // We should probably somehow let a user know that they should fix their code + if (!frame.url) { + normalized.filename = stackInfoUrl; // fallback to whole stacks url from onerror handler + } + + normalized.in_app = !// determine if an exception came from outside of our app + // first we check the global includePaths list. + ( + (!!this._globalOptions.includePaths.test && + !this._globalOptions.includePaths.test(normalized.filename)) || + // Now we check for fun, if the function name is Raven or TraceKit + /(Raven|TraceKit)\./.test(normalized['function']) || + // finally, we do a last ditch effort and check for raven.min.js + /raven\.(min\.)?js$/.test(normalized.filename) + ); + + return normalized; + }, + + _processException: function(type, message, fileurl, lineno, frames, options) { + var prefixedMessage = (type ? type + ': ' : '') + (message || ''); + if ( + !!this._globalOptions.ignoreErrors.test && + (this._globalOptions.ignoreErrors.test(message) || + this._globalOptions.ignoreErrors.test(prefixedMessage)) + ) { + return; + } + + var stacktrace; + + if (frames && frames.length) { + fileurl = frames[0].filename || fileurl; + // Sentry expects frames oldest to newest + // and JS sends them as newest to oldest + frames.reverse(); + stacktrace = {frames: frames}; + } else if (fileurl) { + stacktrace = { + frames: [ + { + filename: fileurl, + lineno: lineno, + in_app: true + } + ] + }; + } + + if ( + !!this._globalOptions.ignoreUrls.test && + this._globalOptions.ignoreUrls.test(fileurl) + ) { + return; + } + + if ( + !!this._globalOptions.whitelistUrls.test && + !this._globalOptions.whitelistUrls.test(fileurl) + ) { + return; + } + + var data = objectMerge( + { + // sentry.interfaces.Exception + exception: { + values: [ + { + type: type, + value: message, + stacktrace: stacktrace + } + ] + }, + transaction: fileurl + }, + options + ); + + // Fire away! + this._send(data); + }, + + _trimPacket: function(data) { + // For now, we only want to truncate the two different messages + // but this could/should be expanded to just trim everything + var max = this._globalOptions.maxMessageLength; + if (data.message) { + data.message = truncate(data.message, max); + } + if (data.exception) { + var exception = data.exception.values[0]; + exception.value = truncate(exception.value, max); + } + + var request = data.request; + if (request) { + if (request.url) { + request.url = truncate(request.url, this._globalOptions.maxUrlLength); + } + if (request.Referer) { + request.Referer = truncate(request.Referer, this._globalOptions.maxUrlLength); + } + } + + if (data.breadcrumbs && data.breadcrumbs.values) + this._trimBreadcrumbs(data.breadcrumbs); + + return data; + }, + + /** + * Truncate breadcrumb values (right now just URLs) + */ + _trimBreadcrumbs: function(breadcrumbs) { + // known breadcrumb properties with urls + // TODO: also consider arbitrary prop values that start with (https?)?:// + var urlProps = ['to', 'from', 'url'], + urlProp, + crumb, + data; + + for (var i = 0; i < breadcrumbs.values.length; ++i) { + crumb = breadcrumbs.values[i]; + if ( + !crumb.hasOwnProperty('data') || + !isObject(crumb.data) || + objectFrozen(crumb.data) + ) + continue; + + data = objectMerge({}, crumb.data); + for (var j = 0; j < urlProps.length; ++j) { + urlProp = urlProps[j]; + if (data.hasOwnProperty(urlProp) && data[urlProp]) { + data[urlProp] = truncate(data[urlProp], this._globalOptions.maxUrlLength); + } + } + breadcrumbs.values[i].data = data; + } + }, + + _getHttpData: function() { + if (!this._hasNavigator && !this._hasDocument) return; + var httpData = {}; + + if (this._hasNavigator && _navigator.userAgent) { + httpData.headers = { + 'User-Agent': _navigator.userAgent + }; + } + + // Check in `window` instead of `document`, as we may be in ServiceWorker environment + if (_window.location && _window.location.href) { + httpData.url = _window.location.href; + } + + if (this._hasDocument && _document.referrer) { + if (!httpData.headers) httpData.headers = {}; + httpData.headers.Referer = _document.referrer; + } + + return httpData; + }, + + _resetBackoff: function() { + this._backoffDuration = 0; + this._backoffStart = null; + }, + + _shouldBackoff: function() { + return this._backoffDuration && now() - this._backoffStart < this._backoffDuration; + }, + + /** + * Returns true if the in-process data payload matches the signature + * of the previously-sent data + * + * NOTE: This has to be done at this level because TraceKit can generate + * data from window.onerror WITHOUT an exception object (IE8, IE9, + * other old browsers). This can take the form of an "exception" + * data object with a single frame (derived from the onerror args). + */ + _isRepeatData: function(current) { + var last = this._lastData; + + if ( + !last || + current.message !== last.message || // defined for captureMessage + current.transaction !== last.transaction // defined for captureException/onerror + ) + return false; + + // Stacktrace interface (i.e. from captureMessage) + if (current.stacktrace || last.stacktrace) { + return isSameStacktrace(current.stacktrace, last.stacktrace); + } else if (current.exception || last.exception) { + // Exception interface (i.e. from captureException/onerror) + return isSameException(current.exception, last.exception); + } + + return true; + }, + + _setBackoffState: function(request) { + // If we are already in a backoff state, don't change anything + if (this._shouldBackoff()) { + return; + } + + var status = request.status; + + // 400 - project_id doesn't exist or some other fatal + // 401 - invalid/revoked dsn + // 429 - too many requests + if (!(status === 400 || status === 401 || status === 429)) return; + + var retry; + try { + // If Retry-After is not in Access-Control-Expose-Headers, most + // browsers will throw an exception trying to access it + if (supportsFetch()) { + retry = request.headers.get('Retry-After'); + } else { + retry = request.getResponseHeader('Retry-After'); + } + + // Retry-After is returned in seconds + retry = parseInt(retry, 10) * 1000; + } catch (e) { + /* eslint no-empty:0 */ + } + + this._backoffDuration = retry + ? // If Sentry server returned a Retry-After value, use it + retry + : // Otherwise, double the last backoff duration (starts at 1 sec) + this._backoffDuration * 2 || 1000; + + this._backoffStart = now(); + }, + + _send: function(data) { + var globalOptions = this._globalOptions; + + var baseData = { + project: this._globalProject, + logger: globalOptions.logger, + platform: 'javascript' + }, + httpData = this._getHttpData(); + + if (httpData) { + baseData.request = httpData; + } + + // HACK: delete `trimHeadFrames` to prevent from appearing in outbound payload + if (data.trimHeadFrames) delete data.trimHeadFrames; + + data = objectMerge(baseData, data); + + // Merge in the tags and extra separately since objectMerge doesn't handle a deep merge + data.tags = objectMerge(objectMerge({}, this._globalContext.tags), data.tags); + data.extra = objectMerge(objectMerge({}, this._globalContext.extra), data.extra); + + // Send along our own collected metadata with extra + data.extra['session:duration'] = now() - this._startTime; + + if (this._breadcrumbs && this._breadcrumbs.length > 0) { + // intentionally make shallow copy so that additions + // to breadcrumbs aren't accidentally sent in this request + data.breadcrumbs = { + values: [].slice.call(this._breadcrumbs, 0) + }; + } + + if (this._globalContext.user) { + // sentry.interfaces.User + data.user = this._globalContext.user; + } + + // Include the environment if it's defined in globalOptions + if (globalOptions.environment) data.environment = globalOptions.environment; + + // Include the release if it's defined in globalOptions + if (globalOptions.release) data.release = globalOptions.release; + + // Include server_name if it's defined in globalOptions + if (globalOptions.serverName) data.server_name = globalOptions.serverName; + + data = this._sanitizeData(data); + + // Cleanup empty properties before sending them to the server + Object.keys(data).forEach(function(key) { + if (data[key] == null || data[key] === '' || isEmptyObject(data[key])) { + delete data[key]; + } + }); + + if (isFunction(globalOptions.dataCallback)) { + data = globalOptions.dataCallback(data) || data; + } + + // Why?????????? + if (!data || isEmptyObject(data)) { + return; + } + + // Check if the request should be filtered or not + if ( + isFunction(globalOptions.shouldSendCallback) && + !globalOptions.shouldSendCallback(data) + ) { + return; + } + + // Backoff state: Sentry server previously responded w/ an error (e.g. 429 - too many requests), + // so drop requests until "cool-off" period has elapsed. + if (this._shouldBackoff()) { + this._logDebug('warn', 'Raven dropped error due to backoff: ', data); + return; + } + + if (typeof globalOptions.sampleRate === 'number') { + if (Math.random() < globalOptions.sampleRate) { + this._sendProcessedPayload(data); + } + } else { + this._sendProcessedPayload(data); + } + }, + + _sanitizeData: function(data) { + return sanitize(data, this._globalOptions.sanitizeKeys); + }, + + _getUuid: function() { + return uuid4(); + }, + + _sendProcessedPayload: function(data, callback) { + var self = this; + var globalOptions = this._globalOptions; + + if (!this.isSetup()) return; + + // Try and clean up the packet before sending by truncating long values + data = this._trimPacket(data); + + // ideally duplicate error testing should occur *before* dataCallback/shouldSendCallback, + // but this would require copying an un-truncated copy of the data packet, which can be + // arbitrarily deep (extra_data) -- could be worthwhile? will revisit + if (!this._globalOptions.allowDuplicates && this._isRepeatData(data)) { + this._logDebug('warn', 'Raven dropped repeat event: ', data); + return; + } + + // Send along an event_id if not explicitly passed. + // This event_id can be used to reference the error within Sentry itself. + // Set lastEventId after we know the error should actually be sent + this._lastEventId = data.event_id || (data.event_id = this._getUuid()); + + // Store outbound payload after trim + this._lastData = data; + + this._logDebug('debug', 'Raven about to send:', data); + + var auth = { + sentry_version: '7', + sentry_client: 'raven-js/' + this.VERSION, + sentry_key: this._globalKey + }; + + if (this._globalSecret) { + auth.sentry_secret = this._globalSecret; + } + + var exception = data.exception && data.exception.values[0]; + + // only capture 'sentry' breadcrumb is autoBreadcrumbs is truthy + if ( + this._globalOptions.autoBreadcrumbs && + this._globalOptions.autoBreadcrumbs.sentry + ) { + this.captureBreadcrumb({ + category: 'sentry', + message: exception + ? (exception.type ? exception.type + ': ' : '') + exception.value + : data.message, + event_id: data.event_id, + level: data.level || 'error' // presume error unless specified + }); + } + + var url = this._globalEndpoint; + (globalOptions.transport || this._makeRequest).call(this, { + url: url, + auth: auth, + data: data, + options: globalOptions, + onSuccess: function success() { + self._resetBackoff(); + + self._triggerEvent('success', { + data: data, + src: url + }); + callback && callback(); + }, + onError: function failure(error) { + self._logDebug('error', 'Raven transport failed to send: ', error); + + if (error.request) { + self._setBackoffState(error.request); + } + + self._triggerEvent('failure', { + data: data, + src: url + }); + error = error || new Error('Raven send failed (no additional details provided)'); + callback && callback(error); + } + }); + }, + + _makeRequest: function(opts) { + // Auth is intentionally sent as part of query string (NOT as custom HTTP header) to avoid preflight CORS requests + var url = opts.url + '?' + urlencode(opts.auth); + + var evaluatedHeaders = null; + var evaluatedFetchParameters = {}; + + if (opts.options.headers) { + evaluatedHeaders = this._evaluateHash(opts.options.headers); + } + + if (opts.options.fetchParameters) { + evaluatedFetchParameters = this._evaluateHash(opts.options.fetchParameters); + } + + if (supportsFetch()) { + evaluatedFetchParameters.body = stringify(opts.data); + + var defaultFetchOptions = objectMerge({}, this._fetchDefaults); + var fetchOptions = objectMerge(defaultFetchOptions, evaluatedFetchParameters); + + if (evaluatedHeaders) { + fetchOptions.headers = evaluatedHeaders; + } + + return _window + .fetch(url, fetchOptions) + .then(function(response) { + if (response.ok) { + opts.onSuccess && opts.onSuccess(); + } else { + var error = new Error('Sentry error code: ' + response.status); + // It's called request only to keep compatibility with XHR interface + // and not add more redundant checks in setBackoffState method + error.request = response; + opts.onError && opts.onError(error); + } + }) + ['catch'](function() { + opts.onError && + opts.onError(new Error('Sentry error code: network unavailable')); + }); + } + + var request = _window.XMLHttpRequest && new _window.XMLHttpRequest(); + if (!request) return; + + // if browser doesn't support CORS (e.g. IE7), we are out of luck + var hasCORS = 'withCredentials' in request || typeof XDomainRequest !== 'undefined'; + + if (!hasCORS) return; + + if ('withCredentials' in request) { + request.onreadystatechange = function() { + if (request.readyState !== 4) { + return; + } else if (request.status === 200) { + opts.onSuccess && opts.onSuccess(); + } else if (opts.onError) { + var err = new Error('Sentry error code: ' + request.status); + err.request = request; + opts.onError(err); + } + }; + } else { + request = new XDomainRequest(); + // xdomainrequest cannot go http -> https (or vice versa), + // so always use protocol relative + url = url.replace(/^https?:/, ''); + + // onreadystatechange not supported by XDomainRequest + if (opts.onSuccess) { + request.onload = opts.onSuccess; + } + if (opts.onError) { + request.onerror = function() { + var err = new Error('Sentry error code: XDomainRequest'); + err.request = request; + opts.onError(err); + }; + } + } + + request.open('POST', url); + + if (evaluatedHeaders) { + each(evaluatedHeaders, function(key, value) { + request.setRequestHeader(key, value); + }); + } + + request.send(stringify(opts.data)); + }, + + _evaluateHash: function(hash) { + var evaluated = {}; + + for (var key in hash) { + if (hash.hasOwnProperty(key)) { + var value = hash[key]; + evaluated[key] = typeof value === 'function' ? value() : value; + } + } + + return evaluated; + }, + + _logDebug: function(level) { + // We allow `Raven.debug` and `Raven.config(DSN, { debug: true })` to not make backward incompatible API change + if ( + this._originalConsoleMethods[level] && + (this.debug || this._globalOptions.debug) + ) { + // In IE<10 console methods do not have their own 'apply' method + Function.prototype.apply.call( + this._originalConsoleMethods[level], + this._originalConsole, + [].slice.call(arguments, 1) + ); + } + }, + + _mergeContext: function(key, context) { + if (isUndefined(context)) { + delete this._globalContext[key]; + } else { + this._globalContext[key] = objectMerge(this._globalContext[key] || {}, context); + } + } +}; + +// Deprecations +Raven.prototype.setUser = Raven.prototype.setUserContext; +Raven.prototype.setReleaseContext = Raven.prototype.setRelease; + +module.exports = Raven; + +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"10":10,"11":11,"12":12,"5":5,"6":6,"9":9}],8:[function(_dereq_,module,exports){ +(function (global){ +/** + * Enforces a single instance of the Raven client, and the + * main entry point for Raven. If you are a consumer of the + * Raven library, you SHOULD load this file (vs raven.js). + **/ + +var RavenConstructor = _dereq_(7); + +// This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) +var _window = + typeof window !== 'undefined' + ? window + : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; +var _Raven = _window.Raven; + +var Raven = new RavenConstructor(); + +/* + * Allow multiple versions of Raven to be installed. + * Strip Raven from the global context and returns the instance. + * + * @return {Raven} + */ +Raven.noConflict = function() { + _window.Raven = _Raven; + return Raven; +}; + +Raven.afterLoad(); + +module.exports = Raven; + +/** + * DISCLAIMER: + * + * Expose `Client` constructor for cases where user want to track multiple "sub-applications" in one larger app. + * It's not meant to be used by a wide audience, so pleaaase make sure that you know what you're doing before using it. + * Accidentally calling `install` multiple times, may result in an unexpected behavior that's very hard to debug. + * + * It's called `Client' to be in-line with Raven Node implementation. + * + * HOWTO: + * + * import Raven from 'raven-js'; + * + * const someAppReporter = new Raven.Client(); + * const someOtherAppReporter = new Raven.Client(); + * + * someAppReporter.config('__DSN__', { + * ...config goes here + * }); + * + * someOtherAppReporter.config('__OTHER_DSN__', { + * ...config goes here + * }); + * + * someAppReporter.captureMessage(...); + * someAppReporter.captureException(...); + * someAppReporter.captureBreadcrumb(...); + * + * someOtherAppReporter.captureMessage(...); + * someOtherAppReporter.captureException(...); + * someOtherAppReporter.captureBreadcrumb(...); + * + * It should "just work". + */ +module.exports.Client = RavenConstructor; + +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"7":7}],9:[function(_dereq_,module,exports){ +(function (global){ +var stringify = _dereq_(11); + +var _window = + typeof window !== 'undefined' + ? window + : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; + +function isObject(what) { + return typeof what === 'object' && what !== null; +} + +// Yanked from https://git.io/vS8DV re-used under CC0 +// with some tiny modifications +function isError(value) { + switch (Object.prototype.toString.call(value)) { + case '[object Error]': + return true; + case '[object Exception]': + return true; + case '[object DOMException]': + return true; + default: + return value instanceof Error; + } +} + +function isErrorEvent(value) { + return Object.prototype.toString.call(value) === '[object ErrorEvent]'; +} + +function isDOMError(value) { + return Object.prototype.toString.call(value) === '[object DOMError]'; +} + +function isDOMException(value) { + return Object.prototype.toString.call(value) === '[object DOMException]'; +} + +function isUndefined(what) { + return what === void 0; +} + +function isFunction(what) { + return typeof what === 'function'; +} + +function isPlainObject(what) { + return Object.prototype.toString.call(what) === '[object Object]'; +} + +function isString(what) { + return Object.prototype.toString.call(what) === '[object String]'; +} + +function isArray(what) { + return Object.prototype.toString.call(what) === '[object Array]'; +} + +function isEmptyObject(what) { + if (!isPlainObject(what)) return false; + + for (var _ in what) { + if (what.hasOwnProperty(_)) { + return false; + } + } + return true; +} + +function supportsErrorEvent() { + try { + new ErrorEvent(''); // eslint-disable-line no-new + return true; + } catch (e) { + return false; + } +} + +function supportsDOMError() { + try { + new DOMError(''); // eslint-disable-line no-new + return true; + } catch (e) { + return false; + } +} + +function supportsDOMException() { + try { + new DOMException(''); // eslint-disable-line no-new + return true; + } catch (e) { + return false; + } +} + +function supportsFetch() { + if (!('fetch' in _window)) return false; + + try { + new Headers(); // eslint-disable-line no-new + new Request(''); // eslint-disable-line no-new + new Response(); // eslint-disable-line no-new + return true; + } catch (e) { + return false; + } +} + +// Despite all stars in the sky saying that Edge supports old draft syntax, aka 'never', 'always', 'origin' and 'default +// https://caniuse.com/#feat=referrer-policy +// It doesn't. And it throw exception instead of ignoring this parameter... +// REF: https://github.com/getsentry/raven-js/issues/1233 +function supportsReferrerPolicy() { + if (!supportsFetch()) return false; + + try { + // eslint-disable-next-line no-new + new Request('pickleRick', { + referrerPolicy: 'origin' + }); + return true; + } catch (e) { + return false; + } +} + +function supportsPromiseRejectionEvent() { + return typeof PromiseRejectionEvent === 'function'; +} + +function wrappedCallback(callback) { + function dataCallback(data, original) { + var normalizedData = callback(data) || data; + if (original) { + return original(normalizedData) || normalizedData; + } + return normalizedData; + } + + return dataCallback; +} + +function each(obj, callback) { + var i, j; + + if (isUndefined(obj.length)) { + for (i in obj) { + if (hasKey(obj, i)) { + callback.call(null, i, obj[i]); + } + } + } else { + j = obj.length; + if (j) { + for (i = 0; i < j; i++) { + callback.call(null, i, obj[i]); + } + } + } +} + +function objectMerge(obj1, obj2) { + if (!obj2) { + return obj1; + } + each(obj2, function(key, value) { + obj1[key] = value; + }); + return obj1; +} + +/** + * This function is only used for react-native. + * react-native freezes object that have already been sent over the + * js bridge. We need this function in order to check if the object is frozen. + * So it's ok that objectFrozen returns false if Object.isFrozen is not + * supported because it's not relevant for other "platforms". See related issue: + * https://github.com/getsentry/react-native-sentry/issues/57 + */ +function objectFrozen(obj) { + if (!Object.isFrozen) { + return false; + } + return Object.isFrozen(obj); +} + +function truncate(str, max) { + if (typeof max !== 'number') { + throw new Error('2nd argument to `truncate` function should be a number'); + } + if (typeof str !== 'string' || max === 0) { + return str; + } + return str.length <= max ? str : str.substr(0, max) + '\u2026'; +} + +/** + * hasKey, a better form of hasOwnProperty + * Example: hasKey(MainHostObject, property) === true/false + * + * @param {Object} host object to check property + * @param {string} key to check + */ +function hasKey(object, key) { + return Object.prototype.hasOwnProperty.call(object, key); +} + +function joinRegExp(patterns) { + // Combine an array of regular expressions and strings into one large regexp + // Be mad. + var sources = [], + i = 0, + len = patterns.length, + pattern; + + for (; i < len; i++) { + pattern = patterns[i]; + if (isString(pattern)) { + // If it's a string, we need to escape it + // Taken from: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions + sources.push(pattern.replace(/([.*+?^=!:${}()|\[\]\/\\])/g, '\\$1')); + } else if (pattern && pattern.source) { + // If it's a regexp already, we want to extract the source + sources.push(pattern.source); + } + // Intentionally skip other cases + } + return new RegExp(sources.join('|'), 'i'); +} + +function urlencode(o) { + var pairs = []; + each(o, function(key, value) { + pairs.push(encodeURIComponent(key) + '=' + encodeURIComponent(value)); + }); + return pairs.join('&'); +} + +// borrowed from https://tools.ietf.org/html/rfc3986#appendix-B +// intentionally using regex and not href parsing trick because React Native and other +// environments where DOM might not be available +function parseUrl(url) { + if (typeof url !== 'string') return {}; + var match = url.match(/^(([^:\/?#]+):)?(\/\/([^\/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?$/); + + // coerce to undefined values to empty string so we don't get 'undefined' + var query = match[6] || ''; + var fragment = match[8] || ''; + return { + protocol: match[2], + host: match[4], + path: match[5], + relative: match[5] + query + fragment // everything minus origin + }; +} +function uuid4() { + var crypto = _window.crypto || _window.msCrypto; + + if (!isUndefined(crypto) && crypto.getRandomValues) { + // Use window.crypto API if available + // eslint-disable-next-line no-undef + var arr = new Uint16Array(8); + crypto.getRandomValues(arr); + + // set 4 in byte 7 + arr[3] = (arr[3] & 0xfff) | 0x4000; + // set 2 most significant bits of byte 9 to '10' + arr[4] = (arr[4] & 0x3fff) | 0x8000; + + var pad = function(num) { + var v = num.toString(16); + while (v.length < 4) { + v = '0' + v; + } + return v; + }; + + return ( + pad(arr[0]) + + pad(arr[1]) + + pad(arr[2]) + + pad(arr[3]) + + pad(arr[4]) + + pad(arr[5]) + + pad(arr[6]) + + pad(arr[7]) + ); + } else { + // http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/2117523#2117523 + return 'xxxxxxxxxxxx4xxxyxxxxxxxxxxxxxxx'.replace(/[xy]/g, function(c) { + var r = (Math.random() * 16) | 0, + v = c === 'x' ? r : (r & 0x3) | 0x8; + return v.toString(16); + }); + } +} + +/** + * Given a child DOM element, returns a query-selector statement describing that + * and its ancestors + * e.g. [HTMLElement] => body > div > input#foo.btn[name=baz] + * @param elem + * @returns {string} + */ +function htmlTreeAsString(elem) { + /* eslint no-extra-parens:0*/ + var MAX_TRAVERSE_HEIGHT = 5, + MAX_OUTPUT_LEN = 80, + out = [], + height = 0, + len = 0, + separator = ' > ', + sepLength = separator.length, + nextStr; + + while (elem && height++ < MAX_TRAVERSE_HEIGHT) { + nextStr = htmlElementAsString(elem); + // bail out if + // - nextStr is the 'html' element + // - the length of the string that would be created exceeds MAX_OUTPUT_LEN + // (ignore this limit if we are on the first iteration) + if ( + nextStr === 'html' || + (height > 1 && len + out.length * sepLength + nextStr.length >= MAX_OUTPUT_LEN) + ) { + break; + } + + out.push(nextStr); + + len += nextStr.length; + elem = elem.parentNode; + } + + return out.reverse().join(separator); +} + +/** + * Returns a simple, query-selector representation of a DOM element + * e.g. [HTMLElement] => input#foo.btn[name=baz] + * @param HTMLElement + * @returns {string} + */ +function htmlElementAsString(elem) { + var out = [], + className, + classes, + key, + attr, + i; + + if (!elem || !elem.tagName) { + return ''; + } + + out.push(elem.tagName.toLowerCase()); + if (elem.id) { + out.push('#' + elem.id); + } + + className = elem.className; + if (className && isString(className)) { + classes = className.split(/\s+/); + for (i = 0; i < classes.length; i++) { + out.push('.' + classes[i]); + } + } + var attrWhitelist = ['type', 'name', 'title', 'alt']; + for (i = 0; i < attrWhitelist.length; i++) { + key = attrWhitelist[i]; + attr = elem.getAttribute(key); + if (attr) { + out.push('[' + key + '="' + attr + '"]'); + } + } + return out.join(''); +} + +/** + * Returns true if either a OR b is truthy, but not both + */ +function isOnlyOneTruthy(a, b) { + return !!(!!a ^ !!b); +} + +/** + * Returns true if both parameters are undefined + */ +function isBothUndefined(a, b) { + return isUndefined(a) && isUndefined(b); +} + +/** + * Returns true if the two input exception interfaces have the same content + */ +function isSameException(ex1, ex2) { + if (isOnlyOneTruthy(ex1, ex2)) return false; + + ex1 = ex1.values[0]; + ex2 = ex2.values[0]; + + if (ex1.type !== ex2.type || ex1.value !== ex2.value) return false; + + // in case both stacktraces are undefined, we can't decide so default to false + if (isBothUndefined(ex1.stacktrace, ex2.stacktrace)) return false; + + return isSameStacktrace(ex1.stacktrace, ex2.stacktrace); +} + +/** + * Returns true if the two input stack trace interfaces have the same content + */ +function isSameStacktrace(stack1, stack2) { + if (isOnlyOneTruthy(stack1, stack2)) return false; + + var frames1 = stack1.frames; + var frames2 = stack2.frames; + + // Exit early if frame count differs + if (frames1.length !== frames2.length) return false; + + // Iterate through every frame; bail out if anything differs + var a, b; + for (var i = 0; i < frames1.length; i++) { + a = frames1[i]; + b = frames2[i]; + if ( + a.filename !== b.filename || + a.lineno !== b.lineno || + a.colno !== b.colno || + a['function'] !== b['function'] + ) + return false; + } + return true; +} + +/** + * Polyfill a method + * @param obj object e.g. `document` + * @param name method name present on object e.g. `addEventListener` + * @param replacement replacement function + * @param track {optional} record instrumentation to an array + */ +function fill(obj, name, replacement, track) { + if (obj == null) return; + var orig = obj[name]; + obj[name] = replacement(orig); + obj[name].__raven__ = true; + obj[name].__orig__ = orig; + if (track) { + track.push([obj, name, orig]); + } +} + +/** + * Join values in array + * @param input array of values to be joined together + * @param delimiter string to be placed in-between values + * @returns {string} + */ +function safeJoin(input, delimiter) { + if (!isArray(input)) return ''; + + var output = []; + + for (var i = 0; i < input.length; i++) { + try { + output.push(String(input[i])); + } catch (e) { + output.push('[value cannot be serialized]'); + } + } + + return output.join(delimiter); +} + +// Default Node.js REPL depth +var MAX_SERIALIZE_EXCEPTION_DEPTH = 3; +// 50kB, as 100kB is max payload size, so half sounds reasonable +var MAX_SERIALIZE_EXCEPTION_SIZE = 50 * 1024; +var MAX_SERIALIZE_KEYS_LENGTH = 40; + +function utf8Length(value) { + return ~-encodeURI(value).split(/%..|./).length; +} + +function jsonSize(value) { + return utf8Length(JSON.stringify(value)); +} + +function serializeValue(value) { + if (typeof value === 'string') { + var maxLength = 40; + return truncate(value, maxLength); + } else if ( + typeof value === 'number' || + typeof value === 'boolean' || + typeof value === 'undefined' + ) { + return value; + } + + var type = Object.prototype.toString.call(value); + + // Node.js REPL notation + if (type === '[object Object]') return '[Object]'; + if (type === '[object Array]') return '[Array]'; + if (type === '[object Function]') + return value.name ? '[Function: ' + value.name + ']' : '[Function]'; + + return value; +} + +function serializeObject(value, depth) { + if (depth === 0) return serializeValue(value); + + if (isPlainObject(value)) { + return Object.keys(value).reduce(function(acc, key) { + acc[key] = serializeObject(value[key], depth - 1); + return acc; + }, {}); + } else if (Array.isArray(value)) { + return value.map(function(val) { + return serializeObject(val, depth - 1); + }); + } + + return serializeValue(value); +} + +function serializeException(ex, depth, maxSize) { + if (!isPlainObject(ex)) return ex; + + depth = typeof depth !== 'number' ? MAX_SERIALIZE_EXCEPTION_DEPTH : depth; + maxSize = typeof depth !== 'number' ? MAX_SERIALIZE_EXCEPTION_SIZE : maxSize; + + var serialized = serializeObject(ex, depth); + + if (jsonSize(stringify(serialized)) > maxSize) { + return serializeException(ex, depth - 1); + } + + return serialized; +} + +function serializeKeysForMessage(keys, maxLength) { + if (typeof keys === 'number' || typeof keys === 'string') return keys.toString(); + if (!Array.isArray(keys)) return ''; + + keys = keys.filter(function(key) { + return typeof key === 'string'; + }); + if (keys.length === 0) return '[object has no keys]'; + + maxLength = typeof maxLength !== 'number' ? MAX_SERIALIZE_KEYS_LENGTH : maxLength; + if (keys[0].length >= maxLength) return keys[0]; + + for (var usedKeys = keys.length; usedKeys > 0; usedKeys--) { + var serialized = keys.slice(0, usedKeys).join(', '); + if (serialized.length > maxLength) continue; + if (usedKeys === keys.length) return serialized; + return serialized + '\u2026'; + } + + return ''; +} + +function sanitize(input, sanitizeKeys) { + if (!isArray(sanitizeKeys) || (isArray(sanitizeKeys) && sanitizeKeys.length === 0)) + return input; + + var sanitizeRegExp = joinRegExp(sanitizeKeys); + var sanitizeMask = '********'; + var safeInput; + + try { + safeInput = JSON.parse(stringify(input)); + } catch (o_O) { + return input; + } + + function sanitizeWorker(workerInput) { + if (isArray(workerInput)) { + return workerInput.map(function(val) { + return sanitizeWorker(val); + }); + } + + if (isPlainObject(workerInput)) { + return Object.keys(workerInput).reduce(function(acc, k) { + if (sanitizeRegExp.test(k)) { + acc[k] = sanitizeMask; + } else { + acc[k] = sanitizeWorker(workerInput[k]); + } + return acc; + }, {}); + } + + return workerInput; + } + + return sanitizeWorker(safeInput); +} + +module.exports = { + isObject: isObject, + isError: isError, + isErrorEvent: isErrorEvent, + isDOMError: isDOMError, + isDOMException: isDOMException, + isUndefined: isUndefined, + isFunction: isFunction, + isPlainObject: isPlainObject, + isString: isString, + isArray: isArray, + isEmptyObject: isEmptyObject, + supportsErrorEvent: supportsErrorEvent, + supportsDOMError: supportsDOMError, + supportsDOMException: supportsDOMException, + supportsFetch: supportsFetch, + supportsReferrerPolicy: supportsReferrerPolicy, + supportsPromiseRejectionEvent: supportsPromiseRejectionEvent, + wrappedCallback: wrappedCallback, + each: each, + objectMerge: objectMerge, + truncate: truncate, + objectFrozen: objectFrozen, + hasKey: hasKey, + joinRegExp: joinRegExp, + urlencode: urlencode, + uuid4: uuid4, + htmlTreeAsString: htmlTreeAsString, + htmlElementAsString: htmlElementAsString, + isSameException: isSameException, + isSameStacktrace: isSameStacktrace, + parseUrl: parseUrl, + fill: fill, + safeJoin: safeJoin, + serializeException: serializeException, + serializeKeysForMessage: serializeKeysForMessage, + sanitize: sanitize +}; + +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"11":11}],10:[function(_dereq_,module,exports){ +(function (global){ +var utils = _dereq_(9); + +/* + TraceKit - Cross brower stack traces + + This was originally forked from github.com/occ/TraceKit, but has since been + largely re-written and is now maintained as part of raven-js. Tests for + this are in test/vendor. + + MIT license +*/ + +var TraceKit = { + collectWindowErrors: true, + debug: false +}; + +// This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) +var _window = + typeof window !== 'undefined' + ? window + : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; + +// global reference to slice +var _slice = [].slice; +var UNKNOWN_FUNCTION = '?'; + +// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error#Error_types +var ERROR_TYPES_RE = /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/; + +function getLocationHref() { + if (typeof document === 'undefined' || document.location == null) return ''; + return document.location.href; +} + +function getLocationOrigin() { + if (typeof document === 'undefined' || document.location == null) return ''; + + // Oh dear IE10... + if (!document.location.origin) { + document.location.origin = + document.location.protocol + + '//' + + document.location.hostname + + (document.location.port ? ':' + document.location.port : ''); + } + + return document.location.origin; +} + +/** + * TraceKit.report: cross-browser processing of unhandled exceptions + * + * Syntax: + * TraceKit.report.subscribe(function(stackInfo) { ... }) + * TraceKit.report.unsubscribe(function(stackInfo) { ... }) + * TraceKit.report(exception) + * try { ...code... } catch(ex) { TraceKit.report(ex); } + * + * Supports: + * - Firefox: full stack trace with line numbers, plus column number + * on top frame; column number is not guaranteed + * - Opera: full stack trace with line and column numbers + * - Chrome: full stack trace with line and column numbers + * - Safari: line and column number for the top frame only; some frames + * may be missing, and column number is not guaranteed + * - IE: line and column number for the top frame only; some frames + * may be missing, and column number is not guaranteed + * + * In theory, TraceKit should work on all of the following versions: + * - IE5.5+ (only 8.0 tested) + * - Firefox 0.9+ (only 3.5+ tested) + * - Opera 7+ (only 10.50 tested; versions 9 and earlier may require + * Exceptions Have Stacktrace to be enabled in opera:config) + * - Safari 3+ (only 4+ tested) + * - Chrome 1+ (only 5+ tested) + * - Konqueror 3.5+ (untested) + * + * Requires TraceKit.computeStackTrace. + * + * Tries to catch all unhandled exceptions and report them to the + * subscribed handlers. Please note that TraceKit.report will rethrow the + * exception. This is REQUIRED in order to get a useful stack trace in IE. + * If the exception does not reach the top of the browser, you will only + * get a stack trace from the point where TraceKit.report was called. + * + * Handlers receive a stackInfo object as described in the + * TraceKit.computeStackTrace docs. + */ +TraceKit.report = (function reportModuleWrapper() { + var handlers = [], + lastArgs = null, + lastException = null, + lastExceptionStack = null; + + /** + * Add a crash handler. + * @param {Function} handler + */ + function subscribe(handler) { + installGlobalHandler(); + handlers.push(handler); + } + + /** + * Remove a crash handler. + * @param {Function} handler + */ + function unsubscribe(handler) { + for (var i = handlers.length - 1; i >= 0; --i) { + if (handlers[i] === handler) { + handlers.splice(i, 1); + } + } + } + + /** + * Remove all crash handlers. + */ + function unsubscribeAll() { + uninstallGlobalHandler(); + handlers = []; + } + + /** + * Dispatch stack information to all handlers. + * @param {Object.} stack + */ + function notifyHandlers(stack, isWindowError) { + var exception = null; + if (isWindowError && !TraceKit.collectWindowErrors) { + return; + } + for (var i in handlers) { + if (handlers.hasOwnProperty(i)) { + try { + handlers[i].apply(null, [stack].concat(_slice.call(arguments, 2))); + } catch (inner) { + exception = inner; + } + } + } + + if (exception) { + throw exception; + } + } + + var _oldOnerrorHandler, _onErrorHandlerInstalled; + + /** + * Ensures all global unhandled exceptions are recorded. + * Supported by Gecko and IE. + * @param {string} msg Error message. + * @param {string} url URL of script that generated the exception. + * @param {(number|string)} lineNo The line number at which the error + * occurred. + * @param {?(number|string)} colNo The column number at which the error + * occurred. + * @param {?Error} ex The actual Error object. + */ + function traceKitWindowOnError(msg, url, lineNo, colNo, ex) { + var stack = null; + // If 'ex' is ErrorEvent, get real Error from inside + var exception = utils.isErrorEvent(ex) ? ex.error : ex; + // If 'msg' is ErrorEvent, get real message from inside + var message = utils.isErrorEvent(msg) ? msg.message : msg; + + if (lastExceptionStack) { + TraceKit.computeStackTrace.augmentStackTraceWithInitialElement( + lastExceptionStack, + url, + lineNo, + message + ); + processLastException(); + } else if (exception && utils.isError(exception)) { + // non-string `exception` arg; attempt to extract stack trace + + // New chrome and blink send along a real error object + // Let's just report that like a normal error. + // See: https://mikewest.org/2013/08/debugging-runtime-errors-with-window-onerror + stack = TraceKit.computeStackTrace(exception); + notifyHandlers(stack, true); + } else { + var location = { + url: url, + line: lineNo, + column: colNo + }; + + var name = undefined; + var groups; + + if ({}.toString.call(message) === '[object String]') { + var groups = message.match(ERROR_TYPES_RE); + if (groups) { + name = groups[1]; + message = groups[2]; + } + } + + location.func = UNKNOWN_FUNCTION; + + stack = { + name: name, + message: message, + url: getLocationHref(), + stack: [location] + }; + notifyHandlers(stack, true); + } + + if (_oldOnerrorHandler) { + return _oldOnerrorHandler.apply(this, arguments); + } + + return false; + } + + function installGlobalHandler() { + if (_onErrorHandlerInstalled) { + return; + } + _oldOnerrorHandler = _window.onerror; + _window.onerror = traceKitWindowOnError; + _onErrorHandlerInstalled = true; + } + + function uninstallGlobalHandler() { + if (!_onErrorHandlerInstalled) { + return; + } + _window.onerror = _oldOnerrorHandler; + _onErrorHandlerInstalled = false; + _oldOnerrorHandler = undefined; + } + + function processLastException() { + var _lastExceptionStack = lastExceptionStack, + _lastArgs = lastArgs; + lastArgs = null; + lastExceptionStack = null; + lastException = null; + notifyHandlers.apply(null, [_lastExceptionStack, false].concat(_lastArgs)); + } + + /** + * Reports an unhandled Error to TraceKit. + * @param {Error} ex + * @param {?boolean} rethrow If false, do not re-throw the exception. + * Only used for window.onerror to not cause an infinite loop of + * rethrowing. + */ + function report(ex, rethrow) { + var args = _slice.call(arguments, 1); + if (lastExceptionStack) { + if (lastException === ex) { + return; // already caught by an inner catch block, ignore + } else { + processLastException(); + } + } + + var stack = TraceKit.computeStackTrace(ex); + lastExceptionStack = stack; + lastException = ex; + lastArgs = args; + + // If the stack trace is incomplete, wait for 2 seconds for + // slow slow IE to see if onerror occurs or not before reporting + // this exception; otherwise, we will end up with an incomplete + // stack trace + setTimeout(function() { + if (lastException === ex) { + processLastException(); + } + }, stack.incomplete ? 2000 : 0); + + if (rethrow !== false) { + throw ex; // re-throw to propagate to the top level (and cause window.onerror) + } + } + + report.subscribe = subscribe; + report.unsubscribe = unsubscribe; + report.uninstall = unsubscribeAll; + return report; +})(); + +/** + * TraceKit.computeStackTrace: cross-browser stack traces in JavaScript + * + * Syntax: + * s = TraceKit.computeStackTrace(exception) // consider using TraceKit.report instead (see below) + * Returns: + * s.name - exception name + * s.message - exception message + * s.stack[i].url - JavaScript or HTML file URL + * s.stack[i].func - function name, or empty for anonymous functions (if guessing did not work) + * s.stack[i].args - arguments passed to the function, if known + * s.stack[i].line - line number, if known + * s.stack[i].column - column number, if known + * + * Supports: + * - Firefox: full stack trace with line numbers and unreliable column + * number on top frame + * - Opera 10: full stack trace with line and column numbers + * - Opera 9-: full stack trace with line numbers + * - Chrome: full stack trace with line and column numbers + * - Safari: line and column number for the topmost stacktrace element + * only + * - IE: no line numbers whatsoever + * + * Tries to guess names of anonymous functions by looking for assignments + * in the source code. In IE and Safari, we have to guess source file names + * by searching for function bodies inside all page scripts. This will not + * work for scripts that are loaded cross-domain. + * Here be dragons: some function names may be guessed incorrectly, and + * duplicate functions may be mismatched. + * + * TraceKit.computeStackTrace should only be used for tracing purposes. + * Logging of unhandled exceptions should be done with TraceKit.report, + * which builds on top of TraceKit.computeStackTrace and provides better + * IE support by utilizing the window.onerror event to retrieve information + * about the top of the stack. + * + * Note: In IE and Safari, no stack trace is recorded on the Error object, + * so computeStackTrace instead walks its *own* chain of callers. + * This means that: + * * in Safari, some methods may be missing from the stack trace; + * * in IE, the topmost function in the stack trace will always be the + * caller of computeStackTrace. + * + * This is okay for tracing (because you are likely to be calling + * computeStackTrace from the function you want to be the topmost element + * of the stack trace anyway), but not okay for logging unhandled + * exceptions (because your catch block will likely be far away from the + * inner function that actually caused the exception). + * + */ +TraceKit.computeStackTrace = (function computeStackTraceWrapper() { + // Contents of Exception in various browsers. + // + // SAFARI: + // ex.message = Can't find variable: qq + // ex.line = 59 + // ex.sourceId = 580238192 + // ex.sourceURL = http://... + // ex.expressionBeginOffset = 96 + // ex.expressionCaretOffset = 98 + // ex.expressionEndOffset = 98 + // ex.name = ReferenceError + // + // FIREFOX: + // ex.message = qq is not defined + // ex.fileName = http://... + // ex.lineNumber = 59 + // ex.columnNumber = 69 + // ex.stack = ...stack trace... (see the example below) + // ex.name = ReferenceError + // + // CHROME: + // ex.message = qq is not defined + // ex.name = ReferenceError + // ex.type = not_defined + // ex.arguments = ['aa'] + // ex.stack = ...stack trace... + // + // INTERNET EXPLORER: + // ex.message = ... + // ex.name = ReferenceError + // + // OPERA: + // ex.message = ...message... (see the example below) + // ex.name = ReferenceError + // ex.opera#sourceloc = 11 (pretty much useless, duplicates the info in ex.message) + // ex.stacktrace = n/a; see 'opera:config#UserPrefs|Exceptions Have Stacktrace' + + /** + * Computes stack trace information from the stack property. + * Chrome and Gecko use this property. + * @param {Error} ex + * @return {?Object.} Stack trace information. + */ + function computeStackTraceFromStackProp(ex) { + if (typeof ex.stack === 'undefined' || !ex.stack) return; + + var chrome = /^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i; + var winjs = /^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i; + // NOTE: blob urls are now supposed to always have an origin, therefore it's format + // which is `blob:http://url/path/with-some-uuid`, is matched by `blob.*?:\/` as well + var gecko = /^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i; + // Used to additionally parse URL/line/column from eval frames + var geckoEval = /(\S+) line (\d+)(?: > eval line \d+)* > eval/i; + var chromeEval = /\((\S*)(?::(\d+))(?::(\d+))\)/; + var lines = ex.stack.split('\n'); + var stack = []; + var submatch; + var parts; + var element; + var reference = /^(.*) is undefined$/.exec(ex.message); + + for (var i = 0, j = lines.length; i < j; ++i) { + if ((parts = chrome.exec(lines[i]))) { + var isNative = parts[2] && parts[2].indexOf('native') === 0; // start of line + var isEval = parts[2] && parts[2].indexOf('eval') === 0; // start of line + if (isEval && (submatch = chromeEval.exec(parts[2]))) { + // throw out eval line/column and use top-most line/column number + parts[2] = submatch[1]; // url + parts[3] = submatch[2]; // line + parts[4] = submatch[3]; // column + } + element = { + url: !isNative ? parts[2] : null, + func: parts[1] || UNKNOWN_FUNCTION, + args: isNative ? [parts[2]] : [], + line: parts[3] ? +parts[3] : null, + column: parts[4] ? +parts[4] : null + }; + } else if ((parts = winjs.exec(lines[i]))) { + element = { + url: parts[2], + func: parts[1] || UNKNOWN_FUNCTION, + args: [], + line: +parts[3], + column: parts[4] ? +parts[4] : null + }; + } else if ((parts = gecko.exec(lines[i]))) { + var isEval = parts[3] && parts[3].indexOf(' > eval') > -1; + if (isEval && (submatch = geckoEval.exec(parts[3]))) { + // throw out eval line/column and use top-most line number + parts[3] = submatch[1]; + parts[4] = submatch[2]; + parts[5] = null; // no column when eval + } else if (i === 0 && !parts[5] && typeof ex.columnNumber !== 'undefined') { + // FireFox uses this awesome columnNumber property for its top frame + // Also note, Firefox's column number is 0-based and everything else expects 1-based, + // so adding 1 + // NOTE: this hack doesn't work if top-most frame is eval + stack[0].column = ex.columnNumber + 1; + } + element = { + url: parts[3], + func: parts[1] || UNKNOWN_FUNCTION, + args: parts[2] ? parts[2].split(',') : [], + line: parts[4] ? +parts[4] : null, + column: parts[5] ? +parts[5] : null + }; + } else { + continue; + } + + if (!element.func && element.line) { + element.func = UNKNOWN_FUNCTION; + } + + if (element.url && element.url.substr(0, 5) === 'blob:') { + // Special case for handling JavaScript loaded into a blob. + // We use a synchronous AJAX request here as a blob is already in + // memory - it's not making a network request. This will generate a warning + // in the browser console, but there has already been an error so that's not + // that much of an issue. + var xhr = new XMLHttpRequest(); + xhr.open('GET', element.url, false); + xhr.send(null); + + // If we failed to download the source, skip this patch + if (xhr.status === 200) { + var source = xhr.responseText || ''; + + // We trim the source down to the last 300 characters as sourceMappingURL is always at the end of the file. + // Why 300? To be in line with: https://github.com/getsentry/sentry/blob/4af29e8f2350e20c28a6933354e4f42437b4ba42/src/sentry/lang/javascript/processor.py#L164-L175 + source = source.slice(-300); + + // Now we dig out the source map URL + var sourceMaps = source.match(/\/\/# sourceMappingURL=(.*)$/); + + // If we don't find a source map comment or we find more than one, continue on to the next element. + if (sourceMaps) { + var sourceMapAddress = sourceMaps[1]; + + // Now we check to see if it's a relative URL. + // If it is, convert it to an absolute one. + if (sourceMapAddress.charAt(0) === '~') { + sourceMapAddress = getLocationOrigin() + sourceMapAddress.slice(1); + } + + // Now we strip the '.map' off of the end of the URL and update the + // element so that Sentry can match the map to the blob. + element.url = sourceMapAddress.slice(0, -4); + } + } + } + + stack.push(element); + } + + if (!stack.length) { + return null; + } + + return { + name: ex.name, + message: ex.message, + url: getLocationHref(), + stack: stack + }; + } + + /** + * Adds information about the first frame to incomplete stack traces. + * Safari and IE require this to get complete data on the first frame. + * @param {Object.} stackInfo Stack trace information from + * one of the compute* methods. + * @param {string} url The URL of the script that caused an error. + * @param {(number|string)} lineNo The line number of the script that + * caused an error. + * @param {string=} message The error generated by the browser, which + * hopefully contains the name of the object that caused the error. + * @return {boolean} Whether or not the stack information was + * augmented. + */ + function augmentStackTraceWithInitialElement(stackInfo, url, lineNo, message) { + var initial = { + url: url, + line: lineNo + }; + + if (initial.url && initial.line) { + stackInfo.incomplete = false; + + if (!initial.func) { + initial.func = UNKNOWN_FUNCTION; + } + + if (stackInfo.stack.length > 0) { + if (stackInfo.stack[0].url === initial.url) { + if (stackInfo.stack[0].line === initial.line) { + return false; // already in stack trace + } else if ( + !stackInfo.stack[0].line && + stackInfo.stack[0].func === initial.func + ) { + stackInfo.stack[0].line = initial.line; + return false; + } + } + } + + stackInfo.stack.unshift(initial); + stackInfo.partial = true; + return true; + } else { + stackInfo.incomplete = true; + } + + return false; + } + + /** + * Computes stack trace information by walking the arguments.caller + * chain at the time the exception occurred. This will cause earlier + * frames to be missed but is the only way to get any stack trace in + * Safari and IE. The top frame is restored by + * {@link augmentStackTraceWithInitialElement}. + * @param {Error} ex + * @return {?Object.} Stack trace information. + */ + function computeStackTraceByWalkingCallerChain(ex, depth) { + var functionName = /function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i, + stack = [], + funcs = {}, + recursion = false, + parts, + item, + source; + + for ( + var curr = computeStackTraceByWalkingCallerChain.caller; + curr && !recursion; + curr = curr.caller + ) { + if (curr === computeStackTrace || curr === TraceKit.report) { + // console.log('skipping internal function'); + continue; + } + + item = { + url: null, + func: UNKNOWN_FUNCTION, + line: null, + column: null + }; + + if (curr.name) { + item.func = curr.name; + } else if ((parts = functionName.exec(curr.toString()))) { + item.func = parts[1]; + } + + if (typeof item.func === 'undefined') { + try { + item.func = parts.input.substring(0, parts.input.indexOf('{')); + } catch (e) {} + } + + if (funcs['' + curr]) { + recursion = true; + } else { + funcs['' + curr] = true; + } + + stack.push(item); + } + + if (depth) { + // console.log('depth is ' + depth); + // console.log('stack is ' + stack.length); + stack.splice(0, depth); + } + + var result = { + name: ex.name, + message: ex.message, + url: getLocationHref(), + stack: stack + }; + augmentStackTraceWithInitialElement( + result, + ex.sourceURL || ex.fileName, + ex.line || ex.lineNumber, + ex.message || ex.description + ); + return result; + } + + /** + * Computes a stack trace for an exception. + * @param {Error} ex + * @param {(string|number)=} depth + */ + function computeStackTrace(ex, depth) { + var stack = null; + depth = depth == null ? 0 : +depth; + + try { + stack = computeStackTraceFromStackProp(ex); + if (stack) { + return stack; + } + } catch (e) { + if (TraceKit.debug) { + throw e; + } + } + + try { + stack = computeStackTraceByWalkingCallerChain(ex, depth + 1); + if (stack) { + return stack; + } + } catch (e) { + if (TraceKit.debug) { + throw e; + } + } + return { + name: ex.name, + message: ex.message, + url: getLocationHref() + }; + } + + computeStackTrace.augmentStackTraceWithInitialElement = augmentStackTraceWithInitialElement; + computeStackTrace.computeStackTraceFromStackProp = computeStackTraceFromStackProp; + + return computeStackTrace; +})(); + +module.exports = TraceKit; + +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"9":9}],11:[function(_dereq_,module,exports){ +/* + json-stringify-safe + Like JSON.stringify, but doesn't throw on circular references. + + Originally forked from https://github.com/isaacs/json-stringify-safe + version 5.0.1 on 3/8/2017 and modified to handle Errors serialization + and IE8 compatibility. Tests for this are in test/vendor. + + ISC license: https://github.com/isaacs/json-stringify-safe/blob/master/LICENSE +*/ + +exports = module.exports = stringify; +exports.getSerialize = serializer; + +function indexOf(haystack, needle) { + for (var i = 0; i < haystack.length; ++i) { + if (haystack[i] === needle) return i; + } + return -1; +} + +function stringify(obj, replacer, spaces, cycleReplacer) { + return JSON.stringify(obj, serializer(replacer, cycleReplacer), spaces); +} + +// https://github.com/ftlabs/js-abbreviate/blob/fa709e5f139e7770a71827b1893f22418097fbda/index.js#L95-L106 +function stringifyError(value) { + var err = { + // These properties are implemented as magical getters and don't show up in for in + stack: value.stack, + message: value.message, + name: value.name + }; + + for (var i in value) { + if (Object.prototype.hasOwnProperty.call(value, i)) { + err[i] = value[i]; + } + } + + return err; +} + +function serializer(replacer, cycleReplacer) { + var stack = []; + var keys = []; + + if (cycleReplacer == null) { + cycleReplacer = function(key, value) { + if (stack[0] === value) { + return '[Circular ~]'; + } + return '[Circular ~.' + keys.slice(0, indexOf(stack, value)).join('.') + ']'; + }; + } + + return function(key, value) { + if (stack.length > 0) { + var thisPos = indexOf(stack, this); + ~thisPos ? stack.splice(thisPos + 1) : stack.push(this); + ~thisPos ? keys.splice(thisPos, Infinity, key) : keys.push(key); + + if (~indexOf(stack, value)) { + value = cycleReplacer.call(this, key, value); + } + } else { + stack.push(value); + } + + return replacer == null + ? value instanceof Error ? stringifyError(value) : value + : replacer.call(this, key, value); + }; +} + +},{}],12:[function(_dereq_,module,exports){ +/* + * JavaScript MD5 + * https://github.com/blueimp/JavaScript-MD5 + * + * Copyright 2011, Sebastian Tschan + * https://blueimp.net + * + * Licensed under the MIT license: + * https://opensource.org/licenses/MIT + * + * Based on + * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message + * Digest Algorithm, as defined in RFC 1321. + * Version 2.2 Copyright (C) Paul Johnston 1999 - 2009 + * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet + * Distributed under the BSD License + * See http://pajhome.org.uk/crypt/md5 for more info. + */ + +/* +* Add integers, wrapping at 2^32. This uses 16-bit operations internally +* to work around bugs in some JS interpreters. +*/ +function safeAdd(x, y) { + var lsw = (x & 0xffff) + (y & 0xffff); + var msw = (x >> 16) + (y >> 16) + (lsw >> 16); + return (msw << 16) | (lsw & 0xffff); +} + +/* +* Bitwise rotate a 32-bit number to the left. +*/ +function bitRotateLeft(num, cnt) { + return (num << cnt) | (num >>> (32 - cnt)); +} + +/* +* These functions implement the four basic operations the algorithm uses. +*/ +function md5cmn(q, a, b, x, s, t) { + return safeAdd(bitRotateLeft(safeAdd(safeAdd(a, q), safeAdd(x, t)), s), b); +} +function md5ff(a, b, c, d, x, s, t) { + return md5cmn((b & c) | (~b & d), a, b, x, s, t); +} +function md5gg(a, b, c, d, x, s, t) { + return md5cmn((b & d) | (c & ~d), a, b, x, s, t); +} +function md5hh(a, b, c, d, x, s, t) { + return md5cmn(b ^ c ^ d, a, b, x, s, t); +} +function md5ii(a, b, c, d, x, s, t) { + return md5cmn(c ^ (b | ~d), a, b, x, s, t); +} + +/* +* Calculate the MD5 of an array of little-endian words, and a bit length. +*/ +function binlMD5(x, len) { + /* append padding */ + x[len >> 5] |= 0x80 << (len % 32); + x[(((len + 64) >>> 9) << 4) + 14] = len; + + var i; + var olda; + var oldb; + var oldc; + var oldd; + var a = 1732584193; + var b = -271733879; + var c = -1732584194; + var d = 271733878; + + for (i = 0; i < x.length; i += 16) { + olda = a; + oldb = b; + oldc = c; + oldd = d; + + a = md5ff(a, b, c, d, x[i], 7, -680876936); + d = md5ff(d, a, b, c, x[i + 1], 12, -389564586); + c = md5ff(c, d, a, b, x[i + 2], 17, 606105819); + b = md5ff(b, c, d, a, x[i + 3], 22, -1044525330); + a = md5ff(a, b, c, d, x[i + 4], 7, -176418897); + d = md5ff(d, a, b, c, x[i + 5], 12, 1200080426); + c = md5ff(c, d, a, b, x[i + 6], 17, -1473231341); + b = md5ff(b, c, d, a, x[i + 7], 22, -45705983); + a = md5ff(a, b, c, d, x[i + 8], 7, 1770035416); + d = md5ff(d, a, b, c, x[i + 9], 12, -1958414417); + c = md5ff(c, d, a, b, x[i + 10], 17, -42063); + b = md5ff(b, c, d, a, x[i + 11], 22, -1990404162); + a = md5ff(a, b, c, d, x[i + 12], 7, 1804603682); + d = md5ff(d, a, b, c, x[i + 13], 12, -40341101); + c = md5ff(c, d, a, b, x[i + 14], 17, -1502002290); + b = md5ff(b, c, d, a, x[i + 15], 22, 1236535329); + + a = md5gg(a, b, c, d, x[i + 1], 5, -165796510); + d = md5gg(d, a, b, c, x[i + 6], 9, -1069501632); + c = md5gg(c, d, a, b, x[i + 11], 14, 643717713); + b = md5gg(b, c, d, a, x[i], 20, -373897302); + a = md5gg(a, b, c, d, x[i + 5], 5, -701558691); + d = md5gg(d, a, b, c, x[i + 10], 9, 38016083); + c = md5gg(c, d, a, b, x[i + 15], 14, -660478335); + b = md5gg(b, c, d, a, x[i + 4], 20, -405537848); + a = md5gg(a, b, c, d, x[i + 9], 5, 568446438); + d = md5gg(d, a, b, c, x[i + 14], 9, -1019803690); + c = md5gg(c, d, a, b, x[i + 3], 14, -187363961); + b = md5gg(b, c, d, a, x[i + 8], 20, 1163531501); + a = md5gg(a, b, c, d, x[i + 13], 5, -1444681467); + d = md5gg(d, a, b, c, x[i + 2], 9, -51403784); + c = md5gg(c, d, a, b, x[i + 7], 14, 1735328473); + b = md5gg(b, c, d, a, x[i + 12], 20, -1926607734); + + a = md5hh(a, b, c, d, x[i + 5], 4, -378558); + d = md5hh(d, a, b, c, x[i + 8], 11, -2022574463); + c = md5hh(c, d, a, b, x[i + 11], 16, 1839030562); + b = md5hh(b, c, d, a, x[i + 14], 23, -35309556); + a = md5hh(a, b, c, d, x[i + 1], 4, -1530992060); + d = md5hh(d, a, b, c, x[i + 4], 11, 1272893353); + c = md5hh(c, d, a, b, x[i + 7], 16, -155497632); + b = md5hh(b, c, d, a, x[i + 10], 23, -1094730640); + a = md5hh(a, b, c, d, x[i + 13], 4, 681279174); + d = md5hh(d, a, b, c, x[i], 11, -358537222); + c = md5hh(c, d, a, b, x[i + 3], 16, -722521979); + b = md5hh(b, c, d, a, x[i + 6], 23, 76029189); + a = md5hh(a, b, c, d, x[i + 9], 4, -640364487); + d = md5hh(d, a, b, c, x[i + 12], 11, -421815835); + c = md5hh(c, d, a, b, x[i + 15], 16, 530742520); + b = md5hh(b, c, d, a, x[i + 2], 23, -995338651); + + a = md5ii(a, b, c, d, x[i], 6, -198630844); + d = md5ii(d, a, b, c, x[i + 7], 10, 1126891415); + c = md5ii(c, d, a, b, x[i + 14], 15, -1416354905); + b = md5ii(b, c, d, a, x[i + 5], 21, -57434055); + a = md5ii(a, b, c, d, x[i + 12], 6, 1700485571); + d = md5ii(d, a, b, c, x[i + 3], 10, -1894986606); + c = md5ii(c, d, a, b, x[i + 10], 15, -1051523); + b = md5ii(b, c, d, a, x[i + 1], 21, -2054922799); + a = md5ii(a, b, c, d, x[i + 8], 6, 1873313359); + d = md5ii(d, a, b, c, x[i + 15], 10, -30611744); + c = md5ii(c, d, a, b, x[i + 6], 15, -1560198380); + b = md5ii(b, c, d, a, x[i + 13], 21, 1309151649); + a = md5ii(a, b, c, d, x[i + 4], 6, -145523070); + d = md5ii(d, a, b, c, x[i + 11], 10, -1120210379); + c = md5ii(c, d, a, b, x[i + 2], 15, 718787259); + b = md5ii(b, c, d, a, x[i + 9], 21, -343485551); + + a = safeAdd(a, olda); + b = safeAdd(b, oldb); + c = safeAdd(c, oldc); + d = safeAdd(d, oldd); + } + return [a, b, c, d]; +} + +/* +* Convert an array of little-endian words to a string +*/ +function binl2rstr(input) { + var i; + var output = ''; + var length32 = input.length * 32; + for (i = 0; i < length32; i += 8) { + output += String.fromCharCode((input[i >> 5] >>> (i % 32)) & 0xff); + } + return output; +} + +/* +* Convert a raw string to an array of little-endian words +* Characters >255 have their high-byte silently ignored. +*/ +function rstr2binl(input) { + var i; + var output = []; + output[(input.length >> 2) - 1] = undefined; + for (i = 0; i < output.length; i += 1) { + output[i] = 0; + } + var length8 = input.length * 8; + for (i = 0; i < length8; i += 8) { + output[i >> 5] |= (input.charCodeAt(i / 8) & 0xff) << (i % 32); + } + return output; +} + +/* +* Calculate the MD5 of a raw string +*/ +function rstrMD5(s) { + return binl2rstr(binlMD5(rstr2binl(s), s.length * 8)); +} + +/* +* Calculate the HMAC-MD5, of a key and some data (raw strings) +*/ +function rstrHMACMD5(key, data) { + var i; + var bkey = rstr2binl(key); + var ipad = []; + var opad = []; + var hash; + ipad[15] = opad[15] = undefined; + if (bkey.length > 16) { + bkey = binlMD5(bkey, key.length * 8); + } + for (i = 0; i < 16; i += 1) { + ipad[i] = bkey[i] ^ 0x36363636; + opad[i] = bkey[i] ^ 0x5c5c5c5c; + } + hash = binlMD5(ipad.concat(rstr2binl(data)), 512 + data.length * 8); + return binl2rstr(binlMD5(opad.concat(hash), 512 + 128)); +} + +/* +* Convert a raw string to a hex string +*/ +function rstr2hex(input) { + var hexTab = '0123456789abcdef'; + var output = ''; + var x; + var i; + for (i = 0; i < input.length; i += 1) { + x = input.charCodeAt(i); + output += hexTab.charAt((x >>> 4) & 0x0f) + hexTab.charAt(x & 0x0f); + } + return output; +} + +/* +* Encode a string as utf-8 +*/ +function str2rstrUTF8(input) { + return unescape(encodeURIComponent(input)); +} + +/* +* Take string arguments and return either raw or hex encoded strings +*/ +function rawMD5(s) { + return rstrMD5(str2rstrUTF8(s)); +} +function hexMD5(s) { + return rstr2hex(rawMD5(s)); +} +function rawHMACMD5(k, d) { + return rstrHMACMD5(str2rstrUTF8(k), str2rstrUTF8(d)); +} +function hexHMACMD5(k, d) { + return rstr2hex(rawHMACMD5(k, d)); +} + +function md5(string, key, raw) { + if (!key) { + if (!raw) { + return hexMD5(string); + } + return rawMD5(string); + } + if (!raw) { + return hexHMACMD5(key, string); + } + return rawHMACMD5(key, string); +} + +module.exports = md5; + +},{}]},{},[8,1,2,3,4])(8) +}); \ No newline at end of file diff --git a/packages/raven-js/dist/angular,console,ember,require/raven.min.js b/packages/raven-js/dist/angular,console,ember,require/raven.min.js new file mode 100644 index 000000000000..7673bdea749b --- /dev/null +++ b/packages/raven-js/dist/angular,console,ember,require/raven.min.js @@ -0,0 +1,4 @@ +/*! Raven.js 3.25.2 (30b6d4e) | github.com/getsentry/raven-js */ +!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.Raven=a()}}(function(){var a;return function b(a,c,d){function e(g,h){if(!c[g]){if(!a[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};a[g][0].call(k.exports,function(b){var c=a[g][1][b];return e(c?c:b)},k,k.exports,b,a,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;gthis.l.maxBreadcrumbs&&this.v.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.s.push([a,b]),this.o&&this.G(),this},setUserContext:function(a){return this.k.user=a,this},setExtraContext:function(a){return this.$("extra",a),this},setTagsContext:function(a){return this.$("tags",a),this},clearContext:function(){return this.k={},this},getContext:function(){return JSON.parse(h(this.k))},setEnvironment:function(a){return this.l.environment=a,this},setRelease:function(a){return this.l.release=a,this},setDataCallback:function(a){var b=this.l.dataCallback;return this.l.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.l.breadcrumbCallback;return this.l.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.l.shouldSendCallback;return this.l.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.l.transport=a,this},lastException:function(){return this.e},lastEventId:function(){return this.g},isSetup:function(){return!!this.b&&(!!this.h||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.A("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=R.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(S){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.I;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.k.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.K(this.H(c)),h=S.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(S.head||S.body).appendChild(h)}},M:function(){var a=this;this.n+=1,setTimeout(function(){a.n-=1})},_:function(a,b){var c,d;if(this.c){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),S.createEvent?(c=S.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=S.createEventObject(),c.eventType=a);for(d in b)A(b,d)&&(c[d]=b[d]);if(S.createEvent)S.dispatchEvent(c);else try{S.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},aa:function(a){var b=this;return function(c){if(b.ba=null,b.w!==c){b.w=c;var d;try{d=E(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ca:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.ba;g||a.aa("input")(c),clearTimeout(g),a.ba=setTimeout(function(){a.ba=null},b)}}},da:function(a,b){var c=H(this.x.href),d=H(b),e=H(a);this.y=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},D:function(){var a=this;a.ea=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.N?a.ea.apply(this.P,arguments):a.ea.apply(this,arguments)}},R:function(){this.ea&&(Function.prototype.toString=this.ea)},E:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.da(b.y,c+""),a.apply(this,arguments)}};I(R.history,"pushState",j,d),I(R.history,"replaceState",j,d)}if(c.console&&"console"in R&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};w(["debug","info","warn","error","log"],function(a,b){O(console,b,k)})}},S:function(){for(var a;this.u.length;){a=this.u.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},T:function(){for(var a in this.r)this.q[a]=this.r[a]},G:function(){var a=this;w(this.s,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},H:function(a){var b=Q.exec(a),c={},d=7;try{for(;d--;)c[P[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.l.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},K:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},B:function(){this.n||this.W.apply(this,arguments)},W:function(a,b){var c=this.Y(a,b);this._("handle",{stackInfo:a,options:b}),this.ga(a.name,a.message,a.url,a.lineno,c,b)},Y:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(w(a.stack,function(b,e){var f=c.ha(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.v,0)}),this.k.user&&(a.user=this.k.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),a=this.qa(a),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||v(a[b]))&&delete a[b]}),s(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!v(a)&&(!s(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.na()?void this.A("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function F(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&l(b))for(c=b.split(/\s+/),f=0;fc?Q(a,b-1):d}function R(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?X:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function S(a,b){function c(a){return m(a)?a.map(function(a){return c(a)}):k(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!m(b)||m(b)&&0===b.length)return a;var d,e=A(b),f="********";try{d=JSON.parse(T(a))}catch(g){return a}return c(d)}var T=a(11),U="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},V=3,W=51200,X=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isDOMError:g,isDOMException:h,isUndefined:i,isFunction:j,isPlainObject:k,isString:l,isArray:m,isEmptyObject:n,supportsErrorEvent:o,supportsDOMError:p,supportsDOMException:q,supportsFetch:r,supportsReferrerPolicy:s,supportsPromiseRejectionEvent:t,wrappedCallback:u,each:v,objectMerge:w,truncate:y,objectFrozen:x,hasKey:z,joinRegExp:A,urlencode:B,uuid4:D,htmlTreeAsString:E,htmlElementAsString:F,isSameException:I,isSameStacktrace:J,parseUrl:C,fill:K,safeJoin:L,serializeException:Q,serializeKeysForMessage:R,sanitize:S}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{11:11}],10:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}function e(){return"undefined"==typeof document||null==document.location?"":(document.location.origin||(document.location.origin=document.location.protocol+"//"+document.location.hostname+(document.location.port?":"+document.location.port:"")),document.location.origin)}var f=a(9),g={collectWindowErrors:!0,debug:!1},h="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},i=[].slice,j="?",k=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;g.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function e(a,b){var c=null;if(!b||g.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(i.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,h,i){var l=null,m=f.isErrorEvent(i)?i.error:i,n=f.isErrorEvent(a)?a.message:a;if(v)g.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&f.isError(m))l=g.computeStackTrace(m),e(l,!0);else{var p,r={url:b,line:c,column:h},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(k);p&&(s=p[1],n=p[2])}r.func=j,l={name:s,message:n,url:d(),stack:[r]},e(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=h.onerror,h.onerror=l,r=!0)}function n(){r&&(h.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,e.apply(null,[a,!1].concat(b))}function p(a,b){var c=i.call(arguments,1);if(v){if(u===a)return;o()}var d=g.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),g.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,f,g=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,h=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,i=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,k=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,l=/\((\S*)(?::(\d+))(?::(\d+))\)/,m=a.stack.split("\n"),n=[],o=(/^(.*) is undefined$/.exec(a.message),0),p=m.length;o eval")>-1;r&&(b=k.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==o||c[5]||"undefined"==typeof a.columnNumber||(n[0].column=a.columnNumber+1),f={url:c[3],func:c[1]||j,args:c[2]?c[2].split(","):[], +line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}if(!f.func&&f.line&&(f.func=j),f.url&&"blob:"===f.url.substr(0,5)){var s=new XMLHttpRequest;if(s.open("GET",f.url,!1),s.send(null),200===s.status){var t=s.responseText||"";t=t.slice(-300);var u=t.match(/\/\/# sourceMappingURL=(.*)$/);if(u){var v=u[1];"~"===v.charAt(0)&&(v=e()+v.slice(1)),f.url=v.slice(0,-4)}}}n.push(f)}return n.length?{name:a.name,message:a.message,url:d(),stack:n}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=j),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,e){for(var h,i,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==f&&o!==g.report){if(i={url:null,func:j,line:null,column:null},o.name?i.func=o.name:(h=k.exec(o.toString()))&&(i.func=h[1]),"undefined"==typeof i.func)try{i.func=h.input.substring(0,h.input.indexOf("{"))}catch(p){}m[""+o]?n=!0:m[""+o]=!0,l.push(i)}e&&l.splice(0,e);var q={name:a.name,message:a.message,url:d(),stack:l};return b(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),q}function f(b,e){var f=null;e=null==e?0:+e;try{if(f=a(b))return f}catch(h){if(g.debug)throw h}try{if(f=c(b,e+1))return f}catch(h){if(g.debug)throw h}return{name:b.name,message:b.message,url:d()}}return f.augmentStackTraceWithInitialElement=b,f.computeStackTraceFromStackProp=a,f}(),b.exports=g}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{9:9}],11:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}],12:[function(a,b,c){function d(a,b){var c=(65535&a)+(65535&b),d=(a>>16)+(b>>16)+(c>>16);return d<<16|65535&c}function e(a,b){return a<>>32-b}function f(a,b,c,f,g,h){return d(e(d(d(b,a),d(f,h)),g),c)}function g(a,b,c,d,e,g,h){return f(b&c|~b&d,a,b,e,g,h)}function h(a,b,c,d,e,g,h){return f(b&d|c&~d,a,b,e,g,h)}function i(a,b,c,d,e,g,h){return f(b^c^d,a,b,e,g,h)}function j(a,b,c,d,e,g,h){return f(c^(b|~d),a,b,e,g,h)}function k(a,b){a[b>>5]|=128<>>9<<4)+14]=b;var c,e,f,k,l,m=1732584193,n=-271733879,o=-1732584194,p=271733878;for(c=0;c>5]>>>b%32&255);return c}function m(a){var b,c=[];for(c[(a.length>>2)-1]=void 0,b=0;b>5]|=(255&a.charCodeAt(b/8))<16&&(e=k(e,8*a.length)),c=0;c<16;c+=1)f[c]=909522486^e[c],g[c]=1549556828^e[c];return d=k(f.concat(m(b)),512+8*b.length),l(k(g.concat(d),640))}function p(a){var b,c,d="0123456789abcdef",e="";for(c=0;c>>4&15)+d.charAt(15&b);return e}function q(a){return unescape(encodeURIComponent(a))}function r(a){return n(q(a))}function s(a){return p(r(a))}function t(a,b){return o(q(a),q(b))}function u(a,b){return p(t(a,b))}function v(a,b,c){return b?c?t(b,a):u(b,a):c?r(a):s(a)}b.exports=v},{}]},{},[8,1,2,3,4])(8)}); +//# sourceMappingURL=raven.min.js.map \ No newline at end of file diff --git a/packages/raven-js/dist/angular,console,ember,require/raven.min.js.map b/packages/raven-js/dist/angular,console,ember,require/raven.min.js.map new file mode 100644 index 000000000000..e14b4d6d0bd4 --- /dev/null +++ b/packages/raven-js/dist/angular,console,ember,require/raven.min.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","angularPlugin","angular","RavenProvider","$get","$window","ExceptionHandlerProvider","$provide","decorator","exceptionHandler","R","$delegate","ex","cause","captureException","extra","moduleName","provider","config","setDataCallback","wrappedCallback","data","_normalizeData","angularPattern","exception","values","matches","exec","value","type","message","angularDocs","substr","addPlugin","8","9","2","consolePlugin","console","pluginOptions","logLevels","levels","push","callback","msg","captureMessage","level","pop","wrapConsoleMethod","wrapMethod","6","3","emberPlugin","Ember","_oldOnError","onerror","error","RSVP","on","reason","context","4","requirePlugin","wrap","deep","5","RavenConfigError","name","prototype","constructor","utils","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","safeJoin","logger","Function","apply","7","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","sanitizeKeys","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isErrorEvent","isDOMError","isDOMException","isError","isObject","isPlainObject","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","sanitize","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","dsn","options","_logDebug","globalOptions","key","setDSN","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","toString","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","func","undefined","_before","wrapped","_ignoreNextOnError","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","U","event","unhandledPromiseRejection","C","_promiseRejectionHandler","bind","addEventListener","Q","removeEventListener","trimHeadFrames","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","V","currentOptions","exKeys","Object","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","M","setTimeout","_","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","aa","evtName","_keypressTimeout","target","category","ca","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","da","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","D","_originalFunctionToString","E","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","F","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","S","builtin","T","G","installer","concat","H","str","m","allowSecretKey","K","port","B","W","stackInfo","_triggerEvent","_processException","lineno","Y","frame","_normalizeFrame","in_app","ha","stackInfoUrl","normalized","filename","line","colno","column","function","ga","prefixedMessage","transaction","ia","request","Referer","breadcrumbs","_trimBreadcrumbs","ja","urlProp","urlProps","ka","httpData","userAgent","User-Agent","referrer","z","_backoffDuration","_backoffStart","na","oa","current","last","pa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Z","baseData","project","platform","_getHttpData","serverName","server_name","_sanitizeData","forEach","random","_sendProcessedPayload","qa","sa","ra","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","ta","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","open","setRequestHeader","send","ua","hash","evaluated","A","$","setUser","setReleaseContext","10","11","12","RavenConstructor","_Raven","noConflict","Client","what","supportsErrorEvent","ErrorEvent","supportsDOMError","DOMError","supportsDOMException","DOMException","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","sanitizeMask","safeInput","o_O","getLocationHref","getLocationOrigin","origin","hostname","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","responseText","sourceMaps","sourceMapAddress","charAt","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","y","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","string","raw"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file diff --git a/packages/raven-js/dist/angular,console,ember,vue/raven.js b/packages/raven-js/dist/angular,console,ember,vue/raven.js new file mode 100644 index 000000000000..0d10c7b44faf --- /dev/null +++ b/packages/raven-js/dist/angular,console,ember,vue/raven.js @@ -0,0 +1,4205 @@ +/*! Raven.js 3.25.2 (30b6d4e) | github.com/getsentry/raven-js */ + +/* + * Includes TraceKit + * https://github.com/getsentry/TraceKit + * + * Copyright 2018 Matt Robenolt and other contributors + * Released under the BSD license + * https://github.com/getsentry/raven-js/blob/master/LICENSE + * + */ + +(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.Raven = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o' : 'anonymous component') + + (vm._isVue && vm.$options.__file ? ' at ' + vm.$options.__file : '') + ); +} + +function vuePlugin(Raven, Vue) { + Vue = Vue || window.Vue; + + // quit if Vue isn't on the page + if (!Vue || !Vue.config) return; + + var _oldOnError = Vue.config.errorHandler; + Vue.config.errorHandler = function VueErrorHandler(error, vm, info) { + var metaData = {}; + + // vm and lifecycleHook are not always available + if (Object.prototype.toString.call(vm) === '[object Object]') { + metaData.componentName = formatComponentName(vm); + metaData.propsData = vm.$options.propsData; + } + + if (typeof info !== 'undefined') { + metaData.lifecycleHook = info; + } + + Raven.captureException(error, { + extra: metaData + }); + + if (typeof _oldOnError === 'function') { + _oldOnError.call(this, error, vm, info); + } + }; +} + +module.exports = vuePlugin; + +_dereq_(8).addPlugin(module.exports); +},{"8":8}],5:[function(_dereq_,module,exports){ +function RavenConfigError(message) { + this.name = 'RavenConfigError'; + this.message = message; +} +RavenConfigError.prototype = new Error(); +RavenConfigError.prototype.constructor = RavenConfigError; + +module.exports = RavenConfigError; + +},{}],6:[function(_dereq_,module,exports){ +var utils = _dereq_(9); + +var wrapMethod = function(console, level, callback) { + var originalConsoleLevel = console[level]; + var originalConsole = console; + + if (!(level in console)) { + return; + } + + var sentryLevel = level === 'warn' ? 'warning' : level; + + console[level] = function() { + var args = [].slice.call(arguments); + + var msg = utils.safeJoin(args, ' '); + var data = {level: sentryLevel, logger: 'console', extra: {arguments: args}}; + + if (level === 'assert') { + if (args[0] === false) { + // Default browsers message + msg = + 'Assertion failed: ' + (utils.safeJoin(args.slice(1), ' ') || 'console.assert'); + data.extra.arguments = args.slice(1); + callback && callback(msg, data); + } + } else { + callback && callback(msg, data); + } + + // this fails for some browsers. :( + if (originalConsoleLevel) { + // IE9 doesn't allow calling apply on console functions directly + // See: https://stackoverflow.com/questions/5472938/does-ie9-support-console-log-and-is-it-a-real-function#answer-5473193 + Function.prototype.apply.call(originalConsoleLevel, originalConsole, args); + } + }; +}; + +module.exports = { + wrapMethod: wrapMethod +}; + +},{"9":9}],7:[function(_dereq_,module,exports){ +(function (global){ +/*global XDomainRequest:false */ + +var TraceKit = _dereq_(10); +var stringify = _dereq_(11); +var md5 = _dereq_(12); +var RavenConfigError = _dereq_(5); + +var utils = _dereq_(9); +var isErrorEvent = utils.isErrorEvent; +var isDOMError = utils.isDOMError; +var isDOMException = utils.isDOMException; +var isError = utils.isError; +var isObject = utils.isObject; +var isPlainObject = utils.isPlainObject; +var isUndefined = utils.isUndefined; +var isFunction = utils.isFunction; +var isString = utils.isString; +var isArray = utils.isArray; +var isEmptyObject = utils.isEmptyObject; +var each = utils.each; +var objectMerge = utils.objectMerge; +var truncate = utils.truncate; +var objectFrozen = utils.objectFrozen; +var hasKey = utils.hasKey; +var joinRegExp = utils.joinRegExp; +var urlencode = utils.urlencode; +var uuid4 = utils.uuid4; +var htmlTreeAsString = utils.htmlTreeAsString; +var isSameException = utils.isSameException; +var isSameStacktrace = utils.isSameStacktrace; +var parseUrl = utils.parseUrl; +var fill = utils.fill; +var supportsFetch = utils.supportsFetch; +var supportsReferrerPolicy = utils.supportsReferrerPolicy; +var serializeKeysForMessage = utils.serializeKeysForMessage; +var serializeException = utils.serializeException; +var sanitize = utils.sanitize; + +var wrapConsoleMethod = _dereq_(6).wrapMethod; + +var dsnKeys = 'source protocol user pass host port path'.split(' '), + dsnPattern = /^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/; + +function now() { + return +new Date(); +} + +// This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) +var _window = + typeof window !== 'undefined' + ? window + : typeof global !== 'undefined' + ? global + : typeof self !== 'undefined' + ? self + : {}; +var _document = _window.document; +var _navigator = _window.navigator; + +function keepOriginalCallback(original, callback) { + return isFunction(callback) + ? function(data) { + return callback(data, original); + } + : callback; +} + +// First, check for JSON support +// If there is no JSON, we no-op the core features of Raven +// since JSON is required to encode the payload +function Raven() { + this._hasJSON = !!(typeof JSON === 'object' && JSON.stringify); + // Raven can run in contexts where there's no document (react-native) + this._hasDocument = !isUndefined(_document); + this._hasNavigator = !isUndefined(_navigator); + this._lastCapturedException = null; + this._lastData = null; + this._lastEventId = null; + this._globalServer = null; + this._globalKey = null; + this._globalProject = null; + this._globalContext = {}; + this._globalOptions = { + // SENTRY_RELEASE can be injected by https://github.com/getsentry/sentry-webpack-plugin + release: _window.SENTRY_RELEASE && _window.SENTRY_RELEASE.id, + logger: 'javascript', + ignoreErrors: [], + ignoreUrls: [], + whitelistUrls: [], + includePaths: [], + headers: null, + collectWindowErrors: true, + captureUnhandledRejections: true, + maxMessageLength: 0, + // By default, truncates URL values to 250 chars + maxUrlLength: 250, + stackTraceLimit: 50, + autoBreadcrumbs: true, + instrument: true, + sampleRate: 1, + sanitizeKeys: [] + }; + this._fetchDefaults = { + method: 'POST', + keepalive: true, + // Despite all stars in the sky saying that Edge supports old draft syntax, aka 'never', 'always', 'origin' and 'default + // https://caniuse.com/#feat=referrer-policy + // It doesn't. And it throw exception instead of ignoring this parameter... + // REF: https://github.com/getsentry/raven-js/issues/1233 + referrerPolicy: supportsReferrerPolicy() ? 'origin' : '' + }; + this._ignoreOnError = 0; + this._isRavenInstalled = false; + this._originalErrorStackTraceLimit = Error.stackTraceLimit; + // capture references to window.console *and* all its methods first + // before the console plugin has a chance to monkey patch + this._originalConsole = _window.console || {}; + this._originalConsoleMethods = {}; + this._plugins = []; + this._startTime = now(); + this._wrappedBuiltIns = []; + this._breadcrumbs = []; + this._lastCapturedEvent = null; + this._keypressTimeout; + this._location = _window.location; + this._lastHref = this._location && this._location.href; + this._resetBackoff(); + + // eslint-disable-next-line guard-for-in + for (var method in this._originalConsole) { + this._originalConsoleMethods[method] = this._originalConsole[method]; + } +} + +/* + * The core Raven singleton + * + * @this {Raven} + */ + +Raven.prototype = { + // Hardcode version string so that raven source can be loaded directly via + // webpack (using a build step causes webpack #1617). Grunt verifies that + // this value matches package.json during build. + // See: https://github.com/getsentry/raven-js/issues/465 + VERSION: '3.25.2', + + debug: false, + + TraceKit: TraceKit, // alias to TraceKit + + /* + * Configure Raven with a DSN and extra options + * + * @param {string} dsn The public Sentry DSN + * @param {object} options Set of global options [optional] + * @return {Raven} + */ + config: function(dsn, options) { + var self = this; + + if (self._globalServer) { + this._logDebug('error', 'Error: Raven has already been configured'); + return self; + } + if (!dsn) return self; + + var globalOptions = self._globalOptions; + + // merge in options + if (options) { + each(options, function(key, value) { + // tags and extra are special and need to be put into context + if (key === 'tags' || key === 'extra' || key === 'user') { + self._globalContext[key] = value; + } else { + globalOptions[key] = value; + } + }); + } + + self.setDSN(dsn); + + // "Script error." is hard coded into browsers for errors that it can't read. + // this is the result of a script being pulled in from an external domain and CORS. + globalOptions.ignoreErrors.push(/^Script error\.?$/); + globalOptions.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/); + + // join regexp rules into one big rule + globalOptions.ignoreErrors = joinRegExp(globalOptions.ignoreErrors); + globalOptions.ignoreUrls = globalOptions.ignoreUrls.length + ? joinRegExp(globalOptions.ignoreUrls) + : false; + globalOptions.whitelistUrls = globalOptions.whitelistUrls.length + ? joinRegExp(globalOptions.whitelistUrls) + : false; + globalOptions.includePaths = joinRegExp(globalOptions.includePaths); + globalOptions.maxBreadcrumbs = Math.max( + 0, + Math.min(globalOptions.maxBreadcrumbs || 100, 100) + ); // default and hard limit is 100 + + var autoBreadcrumbDefaults = { + xhr: true, + console: true, + dom: true, + location: true, + sentry: true + }; + + var autoBreadcrumbs = globalOptions.autoBreadcrumbs; + if ({}.toString.call(autoBreadcrumbs) === '[object Object]') { + autoBreadcrumbs = objectMerge(autoBreadcrumbDefaults, autoBreadcrumbs); + } else if (autoBreadcrumbs !== false) { + autoBreadcrumbs = autoBreadcrumbDefaults; + } + globalOptions.autoBreadcrumbs = autoBreadcrumbs; + + var instrumentDefaults = { + tryCatch: true + }; + + var instrument = globalOptions.instrument; + if ({}.toString.call(instrument) === '[object Object]') { + instrument = objectMerge(instrumentDefaults, instrument); + } else if (instrument !== false) { + instrument = instrumentDefaults; + } + globalOptions.instrument = instrument; + + TraceKit.collectWindowErrors = !!globalOptions.collectWindowErrors; + + // return for chaining + return self; + }, + + /* + * Installs a global window.onerror error handler + * to capture and report uncaught exceptions. + * At this point, install() is required to be called due + * to the way TraceKit is set up. + * + * @return {Raven} + */ + install: function() { + var self = this; + if (self.isSetup() && !self._isRavenInstalled) { + TraceKit.report.subscribe(function() { + self._handleOnErrorStackInfo.apply(self, arguments); + }); + + if (self._globalOptions.captureUnhandledRejections) { + self._attachPromiseRejectionHandler(); + } + + self._patchFunctionToString(); + + if (self._globalOptions.instrument && self._globalOptions.instrument.tryCatch) { + self._instrumentTryCatch(); + } + + if (self._globalOptions.autoBreadcrumbs) self._instrumentBreadcrumbs(); + + // Install all of the plugins + self._drainPlugins(); + + self._isRavenInstalled = true; + } + + Error.stackTraceLimit = self._globalOptions.stackTraceLimit; + return this; + }, + + /* + * Set the DSN (can be called multiple time unlike config) + * + * @param {string} dsn The public Sentry DSN + */ + setDSN: function(dsn) { + var self = this, + uri = self._parseDSN(dsn), + lastSlash = uri.path.lastIndexOf('/'), + path = uri.path.substr(1, lastSlash); + + self._dsn = dsn; + self._globalKey = uri.user; + self._globalSecret = uri.pass && uri.pass.substr(1); + self._globalProject = uri.path.substr(lastSlash + 1); + + self._globalServer = self._getGlobalServer(uri); + + self._globalEndpoint = + self._globalServer + '/' + path + 'api/' + self._globalProject + '/store/'; + + // Reset backoff state since we may be pointing at a + // new project/server + this._resetBackoff(); + }, + + /* + * Wrap code within a context so Raven can capture errors + * reliably across domains that is executed immediately. + * + * @param {object} options A specific set of options for this context [optional] + * @param {function} func The callback to be immediately executed within the context + * @param {array} args An array of arguments to be called with the callback [optional] + */ + context: function(options, func, args) { + if (isFunction(options)) { + args = func || []; + func = options; + options = undefined; + } + + return this.wrap(options, func).apply(this, args); + }, + + /* + * Wrap code within a context and returns back a new function to be executed + * + * @param {object} options A specific set of options for this context [optional] + * @param {function} func The function to be wrapped in a new context + * @param {function} func A function to call before the try/catch wrapper [optional, private] + * @return {function} The newly wrapped functions with a context + */ + wrap: function(options, func, _before) { + var self = this; + // 1 argument has been passed, and it's not a function + // so just return it + if (isUndefined(func) && !isFunction(options)) { + return options; + } + + // options is optional + if (isFunction(options)) { + func = options; + options = undefined; + } + + // At this point, we've passed along 2 arguments, and the second one + // is not a function either, so we'll just return the second argument. + if (!isFunction(func)) { + return func; + } + + // We don't wanna wrap it twice! + try { + if (func.__raven__) { + return func; + } + + // If this has already been wrapped in the past, return that + if (func.__raven_wrapper__) { + return func.__raven_wrapper__; + } + } catch (e) { + // Just accessing custom props in some Selenium environments + // can cause a "Permission denied" exception (see raven-js#495). + // Bail on wrapping and return the function as-is (defers to window.onerror). + return func; + } + + function wrapped() { + var args = [], + i = arguments.length, + deep = !options || (options && options.deep !== false); + + if (_before && isFunction(_before)) { + _before.apply(this, arguments); + } + + // Recursively wrap all of a function's arguments that are + // functions themselves. + while (i--) args[i] = deep ? self.wrap(options, arguments[i]) : arguments[i]; + + try { + // Attempt to invoke user-land function + // NOTE: If you are a Sentry user, and you are seeing this stack frame, it + // means Raven caught an error invoking your application code. This is + // expected behavior and NOT indicative of a bug with Raven.js. + return func.apply(this, args); + } catch (e) { + self._ignoreNextOnError(); + self.captureException(e, options); + throw e; + } + } + + // copy over properties of the old function + for (var property in func) { + if (hasKey(func, property)) { + wrapped[property] = func[property]; + } + } + wrapped.prototype = func.prototype; + + func.__raven_wrapper__ = wrapped; + // Signal that this function has been wrapped/filled already + // for both debugging and to prevent it to being wrapped/filled twice + wrapped.__raven__ = true; + wrapped.__orig__ = func; + + return wrapped; + }, + + /** + * Uninstalls the global error handler. + * + * @return {Raven} + */ + uninstall: function() { + TraceKit.report.uninstall(); + + this._detachPromiseRejectionHandler(); + this._unpatchFunctionToString(); + this._restoreBuiltIns(); + this._restoreConsole(); + + Error.stackTraceLimit = this._originalErrorStackTraceLimit; + this._isRavenInstalled = false; + + return this; + }, + + /** + * Callback used for `unhandledrejection` event + * + * @param {PromiseRejectionEvent} event An object containing + * promise: the Promise that was rejected + * reason: the value with which the Promise was rejected + * @return void + */ + _promiseRejectionHandler: function(event) { + this._logDebug('debug', 'Raven caught unhandled promise rejection:', event); + this.captureException(event.reason, { + extra: { + unhandledPromiseRejection: true + } + }); + }, + + /** + * Installs the global promise rejection handler. + * + * @return {raven} + */ + _attachPromiseRejectionHandler: function() { + this._promiseRejectionHandler = this._promiseRejectionHandler.bind(this); + _window.addEventListener && + _window.addEventListener('unhandledrejection', this._promiseRejectionHandler); + return this; + }, + + /** + * Uninstalls the global promise rejection handler. + * + * @return {raven} + */ + _detachPromiseRejectionHandler: function() { + _window.removeEventListener && + _window.removeEventListener('unhandledrejection', this._promiseRejectionHandler); + return this; + }, + + /** + * Manually capture an exception and send it over to Sentry + * + * @param {error} ex An exception to be logged + * @param {object} options A specific set of options for this error [optional] + * @return {Raven} + */ + captureException: function(ex, options) { + options = objectMerge({trimHeadFrames: 0}, options ? options : {}); + + if (isErrorEvent(ex) && ex.error) { + // If it is an ErrorEvent with `error` property, extract it to get actual Error + ex = ex.error; + } else if (isDOMError(ex) || isDOMException(ex)) { + // If it is a DOMError or DOMException (which are legacy APIs, but still supported in some browsers) + // then we just extract the name and message, as they don't provide anything else + // https://developer.mozilla.org/en-US/docs/Web/API/DOMError + // https://developer.mozilla.org/en-US/docs/Web/API/DOMException + var name = ex.name || (isDOMError(ex) ? 'DOMError' : 'DOMException'); + var message = ex.message ? name + ': ' + ex.message : name; + + return this.captureMessage( + message, + objectMerge(options, { + // neither DOMError or DOMException provide stack trace and we most likely wont get it this way as well + // but it's barely any overhead so we may at least try + stacktrace: true, + trimHeadFrames: options.trimHeadFrames + 1 + }) + ); + } else if (isError(ex)) { + // we have a real Error object + ex = ex; + } else if (isPlainObject(ex)) { + // If it is plain Object, serialize it manually and extract options + // This will allow us to group events based on top-level keys + // which is much better than creating new group when any key/value change + options = this._getCaptureExceptionOptionsFromPlainObject(options, ex); + ex = new Error(options.message); + } else { + // If none of previous checks were valid, then it means that + // it's not a DOMError/DOMException + // it's not a plain Object + // it's not a valid ErrorEvent (one with an error property) + // it's not an Error + // So bail out and capture it as a simple message: + return this.captureMessage( + ex, + objectMerge(options, { + stacktrace: true, // if we fall back to captureMessage, default to attempting a new trace + trimHeadFrames: options.trimHeadFrames + 1 + }) + ); + } + + // Store the raw exception object for potential debugging and introspection + this._lastCapturedException = ex; + + // TraceKit.report will re-raise any exception passed to it, + // which means you have to wrap it in try/catch. Instead, we + // can wrap it here and only re-raise if TraceKit.report + // raises an exception different from the one we asked to + // report on. + try { + var stack = TraceKit.computeStackTrace(ex); + this._handleStackInfo(stack, options); + } catch (ex1) { + if (ex !== ex1) { + throw ex1; + } + } + + return this; + }, + + _getCaptureExceptionOptionsFromPlainObject: function(currentOptions, ex) { + var exKeys = Object.keys(ex).sort(); + var options = objectMerge(currentOptions, { + message: + 'Non-Error exception captured with keys: ' + serializeKeysForMessage(exKeys), + fingerprint: [md5(exKeys)], + extra: currentOptions.extra || {} + }); + options.extra.__serialized__ = serializeException(ex); + + return options; + }, + + /* + * Manually send a message to Sentry + * + * @param {string} msg A plain message to be captured in Sentry + * @param {object} options A specific set of options for this message [optional] + * @return {Raven} + */ + captureMessage: function(msg, options) { + // config() automagically converts ignoreErrors from a list to a RegExp so we need to test for an + // early call; we'll error on the side of logging anything called before configuration since it's + // probably something you should see: + if ( + !!this._globalOptions.ignoreErrors.test && + this._globalOptions.ignoreErrors.test(msg) + ) { + return; + } + + options = options || {}; + msg = msg + ''; // Make sure it's actually a string + + var data = objectMerge( + { + message: msg + }, + options + ); + + var ex; + // Generate a "synthetic" stack trace from this point. + // NOTE: If you are a Sentry user, and you are seeing this stack frame, it is NOT indicative + // of a bug with Raven.js. Sentry generates synthetic traces either by configuration, + // or if it catches a thrown object without a "stack" property. + try { + throw new Error(msg); + } catch (ex1) { + ex = ex1; + } + + // null exception name so `Error` isn't prefixed to msg + ex.name = null; + var stack = TraceKit.computeStackTrace(ex); + + // stack[0] is `throw new Error(msg)` call itself, we are interested in the frame that was just before that, stack[1] + var initialCall = isArray(stack.stack) && stack.stack[1]; + + // if stack[1] is `Raven.captureException`, it means that someone passed a string to it and we redirected that call + // to be handled by `captureMessage`, thus `initialCall` is the 3rd one, not 2nd + // initialCall => captureException(string) => captureMessage(string) + if (initialCall && initialCall.func === 'Raven.captureException') { + initialCall = stack.stack[2]; + } + + var fileurl = (initialCall && initialCall.url) || ''; + + if ( + !!this._globalOptions.ignoreUrls.test && + this._globalOptions.ignoreUrls.test(fileurl) + ) { + return; + } + + if ( + !!this._globalOptions.whitelistUrls.test && + !this._globalOptions.whitelistUrls.test(fileurl) + ) { + return; + } + + if (this._globalOptions.stacktrace || (options && options.stacktrace)) { + // fingerprint on msg, not stack trace (legacy behavior, could be revisited) + data.fingerprint = data.fingerprint == null ? msg : data.fingerprint; + + options = objectMerge( + { + trimHeadFrames: 0 + }, + options + ); + // Since we know this is a synthetic trace, the top frame (this function call) + // MUST be from Raven.js, so mark it for trimming + // We add to the trim counter so that callers can choose to trim extra frames, such + // as utility functions. + options.trimHeadFrames += 1; + + var frames = this._prepareFrames(stack, options); + data.stacktrace = { + // Sentry expects frames oldest to newest + frames: frames.reverse() + }; + } + + // Make sure that fingerprint is always wrapped in an array + if (data.fingerprint) { + data.fingerprint = isArray(data.fingerprint) + ? data.fingerprint + : [data.fingerprint]; + } + + // Fire away! + this._send(data); + + return this; + }, + + captureBreadcrumb: function(obj) { + var crumb = objectMerge( + { + timestamp: now() / 1000 + }, + obj + ); + + if (isFunction(this._globalOptions.breadcrumbCallback)) { + var result = this._globalOptions.breadcrumbCallback(crumb); + + if (isObject(result) && !isEmptyObject(result)) { + crumb = result; + } else if (result === false) { + return this; + } + } + + this._breadcrumbs.push(crumb); + if (this._breadcrumbs.length > this._globalOptions.maxBreadcrumbs) { + this._breadcrumbs.shift(); + } + return this; + }, + + addPlugin: function(plugin /*arg1, arg2, ... argN*/) { + var pluginArgs = [].slice.call(arguments, 1); + + this._plugins.push([plugin, pluginArgs]); + if (this._isRavenInstalled) { + this._drainPlugins(); + } + + return this; + }, + + /* + * Set/clear a user to be sent along with the payload. + * + * @param {object} user An object representing user data [optional] + * @return {Raven} + */ + setUserContext: function(user) { + // Intentionally do not merge here since that's an unexpected behavior. + this._globalContext.user = user; + + return this; + }, + + /* + * Merge extra attributes to be sent along with the payload. + * + * @param {object} extra An object representing extra data [optional] + * @return {Raven} + */ + setExtraContext: function(extra) { + this._mergeContext('extra', extra); + + return this; + }, + + /* + * Merge tags to be sent along with the payload. + * + * @param {object} tags An object representing tags [optional] + * @return {Raven} + */ + setTagsContext: function(tags) { + this._mergeContext('tags', tags); + + return this; + }, + + /* + * Clear all of the context. + * + * @return {Raven} + */ + clearContext: function() { + this._globalContext = {}; + + return this; + }, + + /* + * Get a copy of the current context. This cannot be mutated. + * + * @return {object} copy of context + */ + getContext: function() { + // lol javascript + return JSON.parse(stringify(this._globalContext)); + }, + + /* + * Set environment of application + * + * @param {string} environment Typically something like 'production'. + * @return {Raven} + */ + setEnvironment: function(environment) { + this._globalOptions.environment = environment; + + return this; + }, + + /* + * Set release version of application + * + * @param {string} release Typically something like a git SHA to identify version + * @return {Raven} + */ + setRelease: function(release) { + this._globalOptions.release = release; + + return this; + }, + + /* + * Set the dataCallback option + * + * @param {function} callback The callback to run which allows the + * data blob to be mutated before sending + * @return {Raven} + */ + setDataCallback: function(callback) { + var original = this._globalOptions.dataCallback; + this._globalOptions.dataCallback = keepOriginalCallback(original, callback); + return this; + }, + + /* + * Set the breadcrumbCallback option + * + * @param {function} callback The callback to run which allows filtering + * or mutating breadcrumbs + * @return {Raven} + */ + setBreadcrumbCallback: function(callback) { + var original = this._globalOptions.breadcrumbCallback; + this._globalOptions.breadcrumbCallback = keepOriginalCallback(original, callback); + return this; + }, + + /* + * Set the shouldSendCallback option + * + * @param {function} callback The callback to run which allows + * introspecting the blob before sending + * @return {Raven} + */ + setShouldSendCallback: function(callback) { + var original = this._globalOptions.shouldSendCallback; + this._globalOptions.shouldSendCallback = keepOriginalCallback(original, callback); + return this; + }, + + /** + * Override the default HTTP transport mechanism that transmits data + * to the Sentry server. + * + * @param {function} transport Function invoked instead of the default + * `makeRequest` handler. + * + * @return {Raven} + */ + setTransport: function(transport) { + this._globalOptions.transport = transport; + + return this; + }, + + /* + * Get the latest raw exception that was captured by Raven. + * + * @return {error} + */ + lastException: function() { + return this._lastCapturedException; + }, + + /* + * Get the last event id + * + * @return {string} + */ + lastEventId: function() { + return this._lastEventId; + }, + + /* + * Determine if Raven is setup and ready to go. + * + * @return {boolean} + */ + isSetup: function() { + if (!this._hasJSON) return false; // needs JSON support + if (!this._globalServer) { + if (!this.ravenNotConfiguredError) { + this.ravenNotConfiguredError = true; + this._logDebug('error', 'Error: Raven has not been configured.'); + } + return false; + } + return true; + }, + + afterLoad: function() { + // TODO: remove window dependence? + + // Attempt to initialize Raven on load + var RavenConfig = _window.RavenConfig; + if (RavenConfig) { + this.config(RavenConfig.dsn, RavenConfig.config).install(); + } + }, + + showReportDialog: function(options) { + if ( + !_document // doesn't work without a document (React native) + ) + return; + + options = options || {}; + + var lastEventId = options.eventId || this.lastEventId(); + if (!lastEventId) { + throw new RavenConfigError('Missing eventId'); + } + + var dsn = options.dsn || this._dsn; + if (!dsn) { + throw new RavenConfigError('Missing DSN'); + } + + var encode = encodeURIComponent; + var qs = ''; + qs += '?eventId=' + encode(lastEventId); + qs += '&dsn=' + encode(dsn); + + var user = options.user || this._globalContext.user; + if (user) { + if (user.name) qs += '&name=' + encode(user.name); + if (user.email) qs += '&email=' + encode(user.email); + } + + var globalServer = this._getGlobalServer(this._parseDSN(dsn)); + + var script = _document.createElement('script'); + script.async = true; + script.src = globalServer + '/api/embed/error-page/' + qs; + (_document.head || _document.body).appendChild(script); + }, + + /**** Private functions ****/ + _ignoreNextOnError: function() { + var self = this; + this._ignoreOnError += 1; + setTimeout(function() { + // onerror should trigger before setTimeout + self._ignoreOnError -= 1; + }); + }, + + _triggerEvent: function(eventType, options) { + // NOTE: `event` is a native browser thing, so let's avoid conflicting wiht it + var evt, key; + + if (!this._hasDocument) return; + + options = options || {}; + + eventType = 'raven' + eventType.substr(0, 1).toUpperCase() + eventType.substr(1); + + if (_document.createEvent) { + evt = _document.createEvent('HTMLEvents'); + evt.initEvent(eventType, true, true); + } else { + evt = _document.createEventObject(); + evt.eventType = eventType; + } + + for (key in options) + if (hasKey(options, key)) { + evt[key] = options[key]; + } + + if (_document.createEvent) { + // IE9 if standards + _document.dispatchEvent(evt); + } else { + // IE8 regardless of Quirks or Standards + // IE9 if quirks + try { + _document.fireEvent('on' + evt.eventType.toLowerCase(), evt); + } catch (e) { + // Do nothing + } + } + }, + + /** + * Wraps addEventListener to capture UI breadcrumbs + * @param evtName the event name (e.g. "click") + * @returns {Function} + * @private + */ + _breadcrumbEventHandler: function(evtName) { + var self = this; + return function(evt) { + // reset keypress timeout; e.g. triggering a 'click' after + // a 'keypress' will reset the keypress debounce so that a new + // set of keypresses can be recorded + self._keypressTimeout = null; + + // It's possible this handler might trigger multiple times for the same + // event (e.g. event propagation through node ancestors). Ignore if we've + // already captured the event. + if (self._lastCapturedEvent === evt) return; + + self._lastCapturedEvent = evt; + + // try/catch both: + // - accessing evt.target (see getsentry/raven-js#838, #768) + // - `htmlTreeAsString` because it's complex, and just accessing the DOM incorrectly + // can throw an exception in some circumstances. + var target; + try { + target = htmlTreeAsString(evt.target); + } catch (e) { + target = ''; + } + + self.captureBreadcrumb({ + category: 'ui.' + evtName, // e.g. ui.click, ui.input + message: target + }); + }; + }, + + /** + * Wraps addEventListener to capture keypress UI events + * @returns {Function} + * @private + */ + _keypressEventHandler: function() { + var self = this, + debounceDuration = 1000; // milliseconds + + // TODO: if somehow user switches keypress target before + // debounce timeout is triggered, we will only capture + // a single breadcrumb from the FIRST target (acceptable?) + return function(evt) { + var target; + try { + target = evt.target; + } catch (e) { + // just accessing event properties can throw an exception in some rare circumstances + // see: https://github.com/getsentry/raven-js/issues/838 + return; + } + var tagName = target && target.tagName; + + // only consider keypress events on actual input elements + // this will disregard keypresses targeting body (e.g. tabbing + // through elements, hotkeys, etc) + if ( + !tagName || + (tagName !== 'INPUT' && tagName !== 'TEXTAREA' && !target.isContentEditable) + ) + return; + + // record first keypress in a series, but ignore subsequent + // keypresses until debounce clears + var timeout = self._keypressTimeout; + if (!timeout) { + self._breadcrumbEventHandler('input')(evt); + } + clearTimeout(timeout); + self._keypressTimeout = setTimeout(function() { + self._keypressTimeout = null; + }, debounceDuration); + }; + }, + + /** + * Captures a breadcrumb of type "navigation", normalizing input URLs + * @param to the originating URL + * @param from the target URL + * @private + */ + _captureUrlChange: function(from, to) { + var parsedLoc = parseUrl(this._location.href); + var parsedTo = parseUrl(to); + var parsedFrom = parseUrl(from); + + // because onpopstate only tells you the "new" (to) value of location.href, and + // not the previous (from) value, we need to track the value of the current URL + // state ourselves + this._lastHref = to; + + // Use only the path component of the URL if the URL matches the current + // document (almost all the time when using pushState) + if (parsedLoc.protocol === parsedTo.protocol && parsedLoc.host === parsedTo.host) + to = parsedTo.relative; + if (parsedLoc.protocol === parsedFrom.protocol && parsedLoc.host === parsedFrom.host) + from = parsedFrom.relative; + + this.captureBreadcrumb({ + category: 'navigation', + data: { + to: to, + from: from + } + }); + }, + + _patchFunctionToString: function() { + var self = this; + self._originalFunctionToString = Function.prototype.toString; + // eslint-disable-next-line no-extend-native + Function.prototype.toString = function() { + if (typeof this === 'function' && this.__raven__) { + return self._originalFunctionToString.apply(this.__orig__, arguments); + } + return self._originalFunctionToString.apply(this, arguments); + }; + }, + + _unpatchFunctionToString: function() { + if (this._originalFunctionToString) { + // eslint-disable-next-line no-extend-native + Function.prototype.toString = this._originalFunctionToString; + } + }, + + /** + * Wrap timer functions and event targets to catch errors and provide + * better metadata. + */ + _instrumentTryCatch: function() { + var self = this; + + var wrappedBuiltIns = self._wrappedBuiltIns; + + function wrapTimeFn(orig) { + return function(fn, t) { + // preserve arity + // Make a copy of the arguments to prevent deoptimization + // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments + var args = new Array(arguments.length); + for (var i = 0; i < args.length; ++i) { + args[i] = arguments[i]; + } + var originalCallback = args[0]; + if (isFunction(originalCallback)) { + args[0] = self.wrap(originalCallback); + } + + // IE < 9 doesn't support .call/.apply on setInterval/setTimeout, but it + // also supports only two arguments and doesn't care what this is, so we + // can just call the original function directly. + if (orig.apply) { + return orig.apply(this, args); + } else { + return orig(args[0], args[1]); + } + }; + } + + var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; + + function wrapEventTarget(global) { + var proto = _window[global] && _window[global].prototype; + if (proto && proto.hasOwnProperty && proto.hasOwnProperty('addEventListener')) { + fill( + proto, + 'addEventListener', + function(orig) { + return function(evtName, fn, capture, secure) { + // preserve arity + try { + if (fn && fn.handleEvent) { + fn.handleEvent = self.wrap(fn.handleEvent); + } + } catch (err) { + // can sometimes get 'Permission denied to access property "handle Event' + } + + // More breadcrumb DOM capture ... done here and not in `_instrumentBreadcrumbs` + // so that we don't have more than one wrapper function + var before, clickHandler, keypressHandler; + + if ( + autoBreadcrumbs && + autoBreadcrumbs.dom && + (global === 'EventTarget' || global === 'Node') + ) { + // NOTE: generating multiple handlers per addEventListener invocation, should + // revisit and verify we can just use one (almost certainly) + clickHandler = self._breadcrumbEventHandler('click'); + keypressHandler = self._keypressEventHandler(); + before = function(evt) { + // need to intercept every DOM event in `before` argument, in case that + // same wrapped method is re-used for different events (e.g. mousemove THEN click) + // see #724 + if (!evt) return; + + var eventType; + try { + eventType = evt.type; + } catch (e) { + // just accessing event properties can throw an exception in some rare circumstances + // see: https://github.com/getsentry/raven-js/issues/838 + return; + } + if (eventType === 'click') return clickHandler(evt); + else if (eventType === 'keypress') return keypressHandler(evt); + }; + } + return orig.call( + this, + evtName, + self.wrap(fn, undefined, before), + capture, + secure + ); + }; + }, + wrappedBuiltIns + ); + fill( + proto, + 'removeEventListener', + function(orig) { + return function(evt, fn, capture, secure) { + try { + fn = fn && (fn.__raven_wrapper__ ? fn.__raven_wrapper__ : fn); + } catch (e) { + // ignore, accessing __raven_wrapper__ will throw in some Selenium environments + } + return orig.call(this, evt, fn, capture, secure); + }; + }, + wrappedBuiltIns + ); + } + } + + fill(_window, 'setTimeout', wrapTimeFn, wrappedBuiltIns); + fill(_window, 'setInterval', wrapTimeFn, wrappedBuiltIns); + if (_window.requestAnimationFrame) { + fill( + _window, + 'requestAnimationFrame', + function(orig) { + return function(cb) { + return orig(self.wrap(cb)); + }; + }, + wrappedBuiltIns + ); + } + + // event targets borrowed from bugsnag-js: + // https://github.com/bugsnag/bugsnag-js/blob/master/src/bugsnag.js#L666 + var eventTargets = [ + 'EventTarget', + 'Window', + 'Node', + 'ApplicationCache', + 'AudioTrackList', + 'ChannelMergerNode', + 'CryptoOperation', + 'EventSource', + 'FileReader', + 'HTMLUnknownElement', + 'IDBDatabase', + 'IDBRequest', + 'IDBTransaction', + 'KeyOperation', + 'MediaController', + 'MessagePort', + 'ModalWindow', + 'Notification', + 'SVGElementInstance', + 'Screen', + 'TextTrack', + 'TextTrackCue', + 'TextTrackList', + 'WebSocket', + 'WebSocketWorker', + 'Worker', + 'XMLHttpRequest', + 'XMLHttpRequestEventTarget', + 'XMLHttpRequestUpload' + ]; + for (var i = 0; i < eventTargets.length; i++) { + wrapEventTarget(eventTargets[i]); + } + }, + + /** + * Instrument browser built-ins w/ breadcrumb capturing + * - XMLHttpRequests + * - DOM interactions (click/typing) + * - window.location changes + * - console + * + * Can be disabled or individually configured via the `autoBreadcrumbs` config option + */ + _instrumentBreadcrumbs: function() { + var self = this; + var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; + + var wrappedBuiltIns = self._wrappedBuiltIns; + + function wrapProp(prop, xhr) { + if (prop in xhr && isFunction(xhr[prop])) { + fill(xhr, prop, function(orig) { + return self.wrap(orig); + }); // intentionally don't track filled methods on XHR instances + } + } + + if (autoBreadcrumbs.xhr && 'XMLHttpRequest' in _window) { + var xhrproto = _window.XMLHttpRequest && _window.XMLHttpRequest.prototype; + fill( + xhrproto, + 'open', + function(origOpen) { + return function(method, url) { + // preserve arity + + // if Sentry key appears in URL, don't capture + if (isString(url) && url.indexOf(self._globalKey) === -1) { + this.__raven_xhr = { + method: method, + url: url, + status_code: null + }; + } + + return origOpen.apply(this, arguments); + }; + }, + wrappedBuiltIns + ); + + fill( + xhrproto, + 'send', + function(origSend) { + return function() { + // preserve arity + var xhr = this; + + function onreadystatechangeHandler() { + if (xhr.__raven_xhr && xhr.readyState === 4) { + try { + // touching statusCode in some platforms throws + // an exception + xhr.__raven_xhr.status_code = xhr.status; + } catch (e) { + /* do nothing */ + } + + self.captureBreadcrumb({ + type: 'http', + category: 'xhr', + data: xhr.__raven_xhr + }); + } + } + + var props = ['onload', 'onerror', 'onprogress']; + for (var j = 0; j < props.length; j++) { + wrapProp(props[j], xhr); + } + + if ('onreadystatechange' in xhr && isFunction(xhr.onreadystatechange)) { + fill( + xhr, + 'onreadystatechange', + function(orig) { + return self.wrap(orig, undefined, onreadystatechangeHandler); + } /* intentionally don't track this instrumentation */ + ); + } else { + // if onreadystatechange wasn't actually set by the page on this xhr, we + // are free to set our own and capture the breadcrumb + xhr.onreadystatechange = onreadystatechangeHandler; + } + + return origSend.apply(this, arguments); + }; + }, + wrappedBuiltIns + ); + } + + if (autoBreadcrumbs.xhr && supportsFetch()) { + fill( + _window, + 'fetch', + function(origFetch) { + return function() { + // preserve arity + // Make a copy of the arguments to prevent deoptimization + // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments + var args = new Array(arguments.length); + for (var i = 0; i < args.length; ++i) { + args[i] = arguments[i]; + } + + var fetchInput = args[0]; + var method = 'GET'; + var url; + + if (typeof fetchInput === 'string') { + url = fetchInput; + } else if ('Request' in _window && fetchInput instanceof _window.Request) { + url = fetchInput.url; + if (fetchInput.method) { + method = fetchInput.method; + } + } else { + url = '' + fetchInput; + } + + // if Sentry key appears in URL, don't capture, as it's our own request + if (url.indexOf(self._globalKey) !== -1) { + return origFetch.apply(this, args); + } + + if (args[1] && args[1].method) { + method = args[1].method; + } + + var fetchData = { + method: method, + url: url, + status_code: null + }; + + return origFetch + .apply(this, args) + .then(function(response) { + fetchData.status_code = response.status; + + self.captureBreadcrumb({ + type: 'http', + category: 'fetch', + data: fetchData + }); + + return response; + }) + ['catch'](function(err) { + // if there is an error performing the request + self.captureBreadcrumb({ + type: 'http', + category: 'fetch', + data: fetchData, + level: 'error' + }); + + throw err; + }); + }; + }, + wrappedBuiltIns + ); + } + + // Capture breadcrumbs from any click that is unhandled / bubbled up all the way + // to the document. Do this before we instrument addEventListener. + if (autoBreadcrumbs.dom && this._hasDocument) { + if (_document.addEventListener) { + _document.addEventListener('click', self._breadcrumbEventHandler('click'), false); + _document.addEventListener('keypress', self._keypressEventHandler(), false); + } else if (_document.attachEvent) { + // IE8 Compatibility + _document.attachEvent('onclick', self._breadcrumbEventHandler('click')); + _document.attachEvent('onkeypress', self._keypressEventHandler()); + } + } + + // record navigation (URL) changes + // NOTE: in Chrome App environment, touching history.pushState, *even inside + // a try/catch block*, will cause Chrome to output an error to console.error + // borrowed from: https://github.com/angular/angular.js/pull/13945/files + var chrome = _window.chrome; + var isChromePackagedApp = chrome && chrome.app && chrome.app.runtime; + var hasPushAndReplaceState = + !isChromePackagedApp && + _window.history && + _window.history.pushState && + _window.history.replaceState; + if (autoBreadcrumbs.location && hasPushAndReplaceState) { + // TODO: remove onpopstate handler on uninstall() + var oldOnPopState = _window.onpopstate; + _window.onpopstate = function() { + var currentHref = self._location.href; + self._captureUrlChange(self._lastHref, currentHref); + + if (oldOnPopState) { + return oldOnPopState.apply(this, arguments); + } + }; + + var historyReplacementFunction = function(origHistFunction) { + // note history.pushState.length is 0; intentionally not declaring + // params to preserve 0 arity + return function(/* state, title, url */) { + var url = arguments.length > 2 ? arguments[2] : undefined; + + // url argument is optional + if (url) { + // coerce to string (this is what pushState does) + self._captureUrlChange(self._lastHref, url + ''); + } + + return origHistFunction.apply(this, arguments); + }; + }; + + fill(_window.history, 'pushState', historyReplacementFunction, wrappedBuiltIns); + fill(_window.history, 'replaceState', historyReplacementFunction, wrappedBuiltIns); + } + + if (autoBreadcrumbs.console && 'console' in _window && console.log) { + // console + var consoleMethodCallback = function(msg, data) { + self.captureBreadcrumb({ + message: msg, + level: data.level, + category: 'console' + }); + }; + + each(['debug', 'info', 'warn', 'error', 'log'], function(_, level) { + wrapConsoleMethod(console, level, consoleMethodCallback); + }); + } + }, + + _restoreBuiltIns: function() { + // restore any wrapped builtins + var builtin; + while (this._wrappedBuiltIns.length) { + builtin = this._wrappedBuiltIns.shift(); + + var obj = builtin[0], + name = builtin[1], + orig = builtin[2]; + + obj[name] = orig; + } + }, + + _restoreConsole: function() { + // eslint-disable-next-line guard-for-in + for (var method in this._originalConsoleMethods) { + this._originalConsole[method] = this._originalConsoleMethods[method]; + } + }, + + _drainPlugins: function() { + var self = this; + + // FIX ME TODO + each(this._plugins, function(_, plugin) { + var installer = plugin[0]; + var args = plugin[1]; + installer.apply(self, [self].concat(args)); + }); + }, + + _parseDSN: function(str) { + var m = dsnPattern.exec(str), + dsn = {}, + i = 7; + + try { + while (i--) dsn[dsnKeys[i]] = m[i] || ''; + } catch (e) { + throw new RavenConfigError('Invalid DSN: ' + str); + } + + if (dsn.pass && !this._globalOptions.allowSecretKey) { + throw new RavenConfigError( + 'Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key' + ); + } + + return dsn; + }, + + _getGlobalServer: function(uri) { + // assemble the endpoint from the uri pieces + var globalServer = '//' + uri.host + (uri.port ? ':' + uri.port : ''); + + if (uri.protocol) { + globalServer = uri.protocol + ':' + globalServer; + } + return globalServer; + }, + + _handleOnErrorStackInfo: function() { + // if we are intentionally ignoring errors via onerror, bail out + if (!this._ignoreOnError) { + this._handleStackInfo.apply(this, arguments); + } + }, + + _handleStackInfo: function(stackInfo, options) { + var frames = this._prepareFrames(stackInfo, options); + + this._triggerEvent('handle', { + stackInfo: stackInfo, + options: options + }); + + this._processException( + stackInfo.name, + stackInfo.message, + stackInfo.url, + stackInfo.lineno, + frames, + options + ); + }, + + _prepareFrames: function(stackInfo, options) { + var self = this; + var frames = []; + if (stackInfo.stack && stackInfo.stack.length) { + each(stackInfo.stack, function(i, stack) { + var frame = self._normalizeFrame(stack, stackInfo.url); + if (frame) { + frames.push(frame); + } + }); + + // e.g. frames captured via captureMessage throw + if (options && options.trimHeadFrames) { + for (var j = 0; j < options.trimHeadFrames && j < frames.length; j++) { + frames[j].in_app = false; + } + } + } + frames = frames.slice(0, this._globalOptions.stackTraceLimit); + return frames; + }, + + _normalizeFrame: function(frame, stackInfoUrl) { + // normalize the frames data + var normalized = { + filename: frame.url, + lineno: frame.line, + colno: frame.column, + function: frame.func || '?' + }; + + // Case when we don't have any information about the error + // E.g. throwing a string or raw object, instead of an `Error` in Firefox + // Generating synthetic error doesn't add any value here + // + // We should probably somehow let a user know that they should fix their code + if (!frame.url) { + normalized.filename = stackInfoUrl; // fallback to whole stacks url from onerror handler + } + + normalized.in_app = !// determine if an exception came from outside of our app + // first we check the global includePaths list. + ( + (!!this._globalOptions.includePaths.test && + !this._globalOptions.includePaths.test(normalized.filename)) || + // Now we check for fun, if the function name is Raven or TraceKit + /(Raven|TraceKit)\./.test(normalized['function']) || + // finally, we do a last ditch effort and check for raven.min.js + /raven\.(min\.)?js$/.test(normalized.filename) + ); + + return normalized; + }, + + _processException: function(type, message, fileurl, lineno, frames, options) { + var prefixedMessage = (type ? type + ': ' : '') + (message || ''); + if ( + !!this._globalOptions.ignoreErrors.test && + (this._globalOptions.ignoreErrors.test(message) || + this._globalOptions.ignoreErrors.test(prefixedMessage)) + ) { + return; + } + + var stacktrace; + + if (frames && frames.length) { + fileurl = frames[0].filename || fileurl; + // Sentry expects frames oldest to newest + // and JS sends them as newest to oldest + frames.reverse(); + stacktrace = {frames: frames}; + } else if (fileurl) { + stacktrace = { + frames: [ + { + filename: fileurl, + lineno: lineno, + in_app: true + } + ] + }; + } + + if ( + !!this._globalOptions.ignoreUrls.test && + this._globalOptions.ignoreUrls.test(fileurl) + ) { + return; + } + + if ( + !!this._globalOptions.whitelistUrls.test && + !this._globalOptions.whitelistUrls.test(fileurl) + ) { + return; + } + + var data = objectMerge( + { + // sentry.interfaces.Exception + exception: { + values: [ + { + type: type, + value: message, + stacktrace: stacktrace + } + ] + }, + transaction: fileurl + }, + options + ); + + // Fire away! + this._send(data); + }, + + _trimPacket: function(data) { + // For now, we only want to truncate the two different messages + // but this could/should be expanded to just trim everything + var max = this._globalOptions.maxMessageLength; + if (data.message) { + data.message = truncate(data.message, max); + } + if (data.exception) { + var exception = data.exception.values[0]; + exception.value = truncate(exception.value, max); + } + + var request = data.request; + if (request) { + if (request.url) { + request.url = truncate(request.url, this._globalOptions.maxUrlLength); + } + if (request.Referer) { + request.Referer = truncate(request.Referer, this._globalOptions.maxUrlLength); + } + } + + if (data.breadcrumbs && data.breadcrumbs.values) + this._trimBreadcrumbs(data.breadcrumbs); + + return data; + }, + + /** + * Truncate breadcrumb values (right now just URLs) + */ + _trimBreadcrumbs: function(breadcrumbs) { + // known breadcrumb properties with urls + // TODO: also consider arbitrary prop values that start with (https?)?:// + var urlProps = ['to', 'from', 'url'], + urlProp, + crumb, + data; + + for (var i = 0; i < breadcrumbs.values.length; ++i) { + crumb = breadcrumbs.values[i]; + if ( + !crumb.hasOwnProperty('data') || + !isObject(crumb.data) || + objectFrozen(crumb.data) + ) + continue; + + data = objectMerge({}, crumb.data); + for (var j = 0; j < urlProps.length; ++j) { + urlProp = urlProps[j]; + if (data.hasOwnProperty(urlProp) && data[urlProp]) { + data[urlProp] = truncate(data[urlProp], this._globalOptions.maxUrlLength); + } + } + breadcrumbs.values[i].data = data; + } + }, + + _getHttpData: function() { + if (!this._hasNavigator && !this._hasDocument) return; + var httpData = {}; + + if (this._hasNavigator && _navigator.userAgent) { + httpData.headers = { + 'User-Agent': _navigator.userAgent + }; + } + + // Check in `window` instead of `document`, as we may be in ServiceWorker environment + if (_window.location && _window.location.href) { + httpData.url = _window.location.href; + } + + if (this._hasDocument && _document.referrer) { + if (!httpData.headers) httpData.headers = {}; + httpData.headers.Referer = _document.referrer; + } + + return httpData; + }, + + _resetBackoff: function() { + this._backoffDuration = 0; + this._backoffStart = null; + }, + + _shouldBackoff: function() { + return this._backoffDuration && now() - this._backoffStart < this._backoffDuration; + }, + + /** + * Returns true if the in-process data payload matches the signature + * of the previously-sent data + * + * NOTE: This has to be done at this level because TraceKit can generate + * data from window.onerror WITHOUT an exception object (IE8, IE9, + * other old browsers). This can take the form of an "exception" + * data object with a single frame (derived from the onerror args). + */ + _isRepeatData: function(current) { + var last = this._lastData; + + if ( + !last || + current.message !== last.message || // defined for captureMessage + current.transaction !== last.transaction // defined for captureException/onerror + ) + return false; + + // Stacktrace interface (i.e. from captureMessage) + if (current.stacktrace || last.stacktrace) { + return isSameStacktrace(current.stacktrace, last.stacktrace); + } else if (current.exception || last.exception) { + // Exception interface (i.e. from captureException/onerror) + return isSameException(current.exception, last.exception); + } + + return true; + }, + + _setBackoffState: function(request) { + // If we are already in a backoff state, don't change anything + if (this._shouldBackoff()) { + return; + } + + var status = request.status; + + // 400 - project_id doesn't exist or some other fatal + // 401 - invalid/revoked dsn + // 429 - too many requests + if (!(status === 400 || status === 401 || status === 429)) return; + + var retry; + try { + // If Retry-After is not in Access-Control-Expose-Headers, most + // browsers will throw an exception trying to access it + if (supportsFetch()) { + retry = request.headers.get('Retry-After'); + } else { + retry = request.getResponseHeader('Retry-After'); + } + + // Retry-After is returned in seconds + retry = parseInt(retry, 10) * 1000; + } catch (e) { + /* eslint no-empty:0 */ + } + + this._backoffDuration = retry + ? // If Sentry server returned a Retry-After value, use it + retry + : // Otherwise, double the last backoff duration (starts at 1 sec) + this._backoffDuration * 2 || 1000; + + this._backoffStart = now(); + }, + + _send: function(data) { + var globalOptions = this._globalOptions; + + var baseData = { + project: this._globalProject, + logger: globalOptions.logger, + platform: 'javascript' + }, + httpData = this._getHttpData(); + + if (httpData) { + baseData.request = httpData; + } + + // HACK: delete `trimHeadFrames` to prevent from appearing in outbound payload + if (data.trimHeadFrames) delete data.trimHeadFrames; + + data = objectMerge(baseData, data); + + // Merge in the tags and extra separately since objectMerge doesn't handle a deep merge + data.tags = objectMerge(objectMerge({}, this._globalContext.tags), data.tags); + data.extra = objectMerge(objectMerge({}, this._globalContext.extra), data.extra); + + // Send along our own collected metadata with extra + data.extra['session:duration'] = now() - this._startTime; + + if (this._breadcrumbs && this._breadcrumbs.length > 0) { + // intentionally make shallow copy so that additions + // to breadcrumbs aren't accidentally sent in this request + data.breadcrumbs = { + values: [].slice.call(this._breadcrumbs, 0) + }; + } + + if (this._globalContext.user) { + // sentry.interfaces.User + data.user = this._globalContext.user; + } + + // Include the environment if it's defined in globalOptions + if (globalOptions.environment) data.environment = globalOptions.environment; + + // Include the release if it's defined in globalOptions + if (globalOptions.release) data.release = globalOptions.release; + + // Include server_name if it's defined in globalOptions + if (globalOptions.serverName) data.server_name = globalOptions.serverName; + + data = this._sanitizeData(data); + + // Cleanup empty properties before sending them to the server + Object.keys(data).forEach(function(key) { + if (data[key] == null || data[key] === '' || isEmptyObject(data[key])) { + delete data[key]; + } + }); + + if (isFunction(globalOptions.dataCallback)) { + data = globalOptions.dataCallback(data) || data; + } + + // Why?????????? + if (!data || isEmptyObject(data)) { + return; + } + + // Check if the request should be filtered or not + if ( + isFunction(globalOptions.shouldSendCallback) && + !globalOptions.shouldSendCallback(data) + ) { + return; + } + + // Backoff state: Sentry server previously responded w/ an error (e.g. 429 - too many requests), + // so drop requests until "cool-off" period has elapsed. + if (this._shouldBackoff()) { + this._logDebug('warn', 'Raven dropped error due to backoff: ', data); + return; + } + + if (typeof globalOptions.sampleRate === 'number') { + if (Math.random() < globalOptions.sampleRate) { + this._sendProcessedPayload(data); + } + } else { + this._sendProcessedPayload(data); + } + }, + + _sanitizeData: function(data) { + return sanitize(data, this._globalOptions.sanitizeKeys); + }, + + _getUuid: function() { + return uuid4(); + }, + + _sendProcessedPayload: function(data, callback) { + var self = this; + var globalOptions = this._globalOptions; + + if (!this.isSetup()) return; + + // Try and clean up the packet before sending by truncating long values + data = this._trimPacket(data); + + // ideally duplicate error testing should occur *before* dataCallback/shouldSendCallback, + // but this would require copying an un-truncated copy of the data packet, which can be + // arbitrarily deep (extra_data) -- could be worthwhile? will revisit + if (!this._globalOptions.allowDuplicates && this._isRepeatData(data)) { + this._logDebug('warn', 'Raven dropped repeat event: ', data); + return; + } + + // Send along an event_id if not explicitly passed. + // This event_id can be used to reference the error within Sentry itself. + // Set lastEventId after we know the error should actually be sent + this._lastEventId = data.event_id || (data.event_id = this._getUuid()); + + // Store outbound payload after trim + this._lastData = data; + + this._logDebug('debug', 'Raven about to send:', data); + + var auth = { + sentry_version: '7', + sentry_client: 'raven-js/' + this.VERSION, + sentry_key: this._globalKey + }; + + if (this._globalSecret) { + auth.sentry_secret = this._globalSecret; + } + + var exception = data.exception && data.exception.values[0]; + + // only capture 'sentry' breadcrumb is autoBreadcrumbs is truthy + if ( + this._globalOptions.autoBreadcrumbs && + this._globalOptions.autoBreadcrumbs.sentry + ) { + this.captureBreadcrumb({ + category: 'sentry', + message: exception + ? (exception.type ? exception.type + ': ' : '') + exception.value + : data.message, + event_id: data.event_id, + level: data.level || 'error' // presume error unless specified + }); + } + + var url = this._globalEndpoint; + (globalOptions.transport || this._makeRequest).call(this, { + url: url, + auth: auth, + data: data, + options: globalOptions, + onSuccess: function success() { + self._resetBackoff(); + + self._triggerEvent('success', { + data: data, + src: url + }); + callback && callback(); + }, + onError: function failure(error) { + self._logDebug('error', 'Raven transport failed to send: ', error); + + if (error.request) { + self._setBackoffState(error.request); + } + + self._triggerEvent('failure', { + data: data, + src: url + }); + error = error || new Error('Raven send failed (no additional details provided)'); + callback && callback(error); + } + }); + }, + + _makeRequest: function(opts) { + // Auth is intentionally sent as part of query string (NOT as custom HTTP header) to avoid preflight CORS requests + var url = opts.url + '?' + urlencode(opts.auth); + + var evaluatedHeaders = null; + var evaluatedFetchParameters = {}; + + if (opts.options.headers) { + evaluatedHeaders = this._evaluateHash(opts.options.headers); + } + + if (opts.options.fetchParameters) { + evaluatedFetchParameters = this._evaluateHash(opts.options.fetchParameters); + } + + if (supportsFetch()) { + evaluatedFetchParameters.body = stringify(opts.data); + + var defaultFetchOptions = objectMerge({}, this._fetchDefaults); + var fetchOptions = objectMerge(defaultFetchOptions, evaluatedFetchParameters); + + if (evaluatedHeaders) { + fetchOptions.headers = evaluatedHeaders; + } + + return _window + .fetch(url, fetchOptions) + .then(function(response) { + if (response.ok) { + opts.onSuccess && opts.onSuccess(); + } else { + var error = new Error('Sentry error code: ' + response.status); + // It's called request only to keep compatibility with XHR interface + // and not add more redundant checks in setBackoffState method + error.request = response; + opts.onError && opts.onError(error); + } + }) + ['catch'](function() { + opts.onError && + opts.onError(new Error('Sentry error code: network unavailable')); + }); + } + + var request = _window.XMLHttpRequest && new _window.XMLHttpRequest(); + if (!request) return; + + // if browser doesn't support CORS (e.g. IE7), we are out of luck + var hasCORS = 'withCredentials' in request || typeof XDomainRequest !== 'undefined'; + + if (!hasCORS) return; + + if ('withCredentials' in request) { + request.onreadystatechange = function() { + if (request.readyState !== 4) { + return; + } else if (request.status === 200) { + opts.onSuccess && opts.onSuccess(); + } else if (opts.onError) { + var err = new Error('Sentry error code: ' + request.status); + err.request = request; + opts.onError(err); + } + }; + } else { + request = new XDomainRequest(); + // xdomainrequest cannot go http -> https (or vice versa), + // so always use protocol relative + url = url.replace(/^https?:/, ''); + + // onreadystatechange not supported by XDomainRequest + if (opts.onSuccess) { + request.onload = opts.onSuccess; + } + if (opts.onError) { + request.onerror = function() { + var err = new Error('Sentry error code: XDomainRequest'); + err.request = request; + opts.onError(err); + }; + } + } + + request.open('POST', url); + + if (evaluatedHeaders) { + each(evaluatedHeaders, function(key, value) { + request.setRequestHeader(key, value); + }); + } + + request.send(stringify(opts.data)); + }, + + _evaluateHash: function(hash) { + var evaluated = {}; + + for (var key in hash) { + if (hash.hasOwnProperty(key)) { + var value = hash[key]; + evaluated[key] = typeof value === 'function' ? value() : value; + } + } + + return evaluated; + }, + + _logDebug: function(level) { + // We allow `Raven.debug` and `Raven.config(DSN, { debug: true })` to not make backward incompatible API change + if ( + this._originalConsoleMethods[level] && + (this.debug || this._globalOptions.debug) + ) { + // In IE<10 console methods do not have their own 'apply' method + Function.prototype.apply.call( + this._originalConsoleMethods[level], + this._originalConsole, + [].slice.call(arguments, 1) + ); + } + }, + + _mergeContext: function(key, context) { + if (isUndefined(context)) { + delete this._globalContext[key]; + } else { + this._globalContext[key] = objectMerge(this._globalContext[key] || {}, context); + } + } +}; + +// Deprecations +Raven.prototype.setUser = Raven.prototype.setUserContext; +Raven.prototype.setReleaseContext = Raven.prototype.setRelease; + +module.exports = Raven; + +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"10":10,"11":11,"12":12,"5":5,"6":6,"9":9}],8:[function(_dereq_,module,exports){ +(function (global){ +/** + * Enforces a single instance of the Raven client, and the + * main entry point for Raven. If you are a consumer of the + * Raven library, you SHOULD load this file (vs raven.js). + **/ + +var RavenConstructor = _dereq_(7); + +// This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) +var _window = + typeof window !== 'undefined' + ? window + : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; +var _Raven = _window.Raven; + +var Raven = new RavenConstructor(); + +/* + * Allow multiple versions of Raven to be installed. + * Strip Raven from the global context and returns the instance. + * + * @return {Raven} + */ +Raven.noConflict = function() { + _window.Raven = _Raven; + return Raven; +}; + +Raven.afterLoad(); + +module.exports = Raven; + +/** + * DISCLAIMER: + * + * Expose `Client` constructor for cases where user want to track multiple "sub-applications" in one larger app. + * It's not meant to be used by a wide audience, so pleaaase make sure that you know what you're doing before using it. + * Accidentally calling `install` multiple times, may result in an unexpected behavior that's very hard to debug. + * + * It's called `Client' to be in-line with Raven Node implementation. + * + * HOWTO: + * + * import Raven from 'raven-js'; + * + * const someAppReporter = new Raven.Client(); + * const someOtherAppReporter = new Raven.Client(); + * + * someAppReporter.config('__DSN__', { + * ...config goes here + * }); + * + * someOtherAppReporter.config('__OTHER_DSN__', { + * ...config goes here + * }); + * + * someAppReporter.captureMessage(...); + * someAppReporter.captureException(...); + * someAppReporter.captureBreadcrumb(...); + * + * someOtherAppReporter.captureMessage(...); + * someOtherAppReporter.captureException(...); + * someOtherAppReporter.captureBreadcrumb(...); + * + * It should "just work". + */ +module.exports.Client = RavenConstructor; + +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"7":7}],9:[function(_dereq_,module,exports){ +(function (global){ +var stringify = _dereq_(11); + +var _window = + typeof window !== 'undefined' + ? window + : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; + +function isObject(what) { + return typeof what === 'object' && what !== null; +} + +// Yanked from https://git.io/vS8DV re-used under CC0 +// with some tiny modifications +function isError(value) { + switch (Object.prototype.toString.call(value)) { + case '[object Error]': + return true; + case '[object Exception]': + return true; + case '[object DOMException]': + return true; + default: + return value instanceof Error; + } +} + +function isErrorEvent(value) { + return Object.prototype.toString.call(value) === '[object ErrorEvent]'; +} + +function isDOMError(value) { + return Object.prototype.toString.call(value) === '[object DOMError]'; +} + +function isDOMException(value) { + return Object.prototype.toString.call(value) === '[object DOMException]'; +} + +function isUndefined(what) { + return what === void 0; +} + +function isFunction(what) { + return typeof what === 'function'; +} + +function isPlainObject(what) { + return Object.prototype.toString.call(what) === '[object Object]'; +} + +function isString(what) { + return Object.prototype.toString.call(what) === '[object String]'; +} + +function isArray(what) { + return Object.prototype.toString.call(what) === '[object Array]'; +} + +function isEmptyObject(what) { + if (!isPlainObject(what)) return false; + + for (var _ in what) { + if (what.hasOwnProperty(_)) { + return false; + } + } + return true; +} + +function supportsErrorEvent() { + try { + new ErrorEvent(''); // eslint-disable-line no-new + return true; + } catch (e) { + return false; + } +} + +function supportsDOMError() { + try { + new DOMError(''); // eslint-disable-line no-new + return true; + } catch (e) { + return false; + } +} + +function supportsDOMException() { + try { + new DOMException(''); // eslint-disable-line no-new + return true; + } catch (e) { + return false; + } +} + +function supportsFetch() { + if (!('fetch' in _window)) return false; + + try { + new Headers(); // eslint-disable-line no-new + new Request(''); // eslint-disable-line no-new + new Response(); // eslint-disable-line no-new + return true; + } catch (e) { + return false; + } +} + +// Despite all stars in the sky saying that Edge supports old draft syntax, aka 'never', 'always', 'origin' and 'default +// https://caniuse.com/#feat=referrer-policy +// It doesn't. And it throw exception instead of ignoring this parameter... +// REF: https://github.com/getsentry/raven-js/issues/1233 +function supportsReferrerPolicy() { + if (!supportsFetch()) return false; + + try { + // eslint-disable-next-line no-new + new Request('pickleRick', { + referrerPolicy: 'origin' + }); + return true; + } catch (e) { + return false; + } +} + +function supportsPromiseRejectionEvent() { + return typeof PromiseRejectionEvent === 'function'; +} + +function wrappedCallback(callback) { + function dataCallback(data, original) { + var normalizedData = callback(data) || data; + if (original) { + return original(normalizedData) || normalizedData; + } + return normalizedData; + } + + return dataCallback; +} + +function each(obj, callback) { + var i, j; + + if (isUndefined(obj.length)) { + for (i in obj) { + if (hasKey(obj, i)) { + callback.call(null, i, obj[i]); + } + } + } else { + j = obj.length; + if (j) { + for (i = 0; i < j; i++) { + callback.call(null, i, obj[i]); + } + } + } +} + +function objectMerge(obj1, obj2) { + if (!obj2) { + return obj1; + } + each(obj2, function(key, value) { + obj1[key] = value; + }); + return obj1; +} + +/** + * This function is only used for react-native. + * react-native freezes object that have already been sent over the + * js bridge. We need this function in order to check if the object is frozen. + * So it's ok that objectFrozen returns false if Object.isFrozen is not + * supported because it's not relevant for other "platforms". See related issue: + * https://github.com/getsentry/react-native-sentry/issues/57 + */ +function objectFrozen(obj) { + if (!Object.isFrozen) { + return false; + } + return Object.isFrozen(obj); +} + +function truncate(str, max) { + if (typeof max !== 'number') { + throw new Error('2nd argument to `truncate` function should be a number'); + } + if (typeof str !== 'string' || max === 0) { + return str; + } + return str.length <= max ? str : str.substr(0, max) + '\u2026'; +} + +/** + * hasKey, a better form of hasOwnProperty + * Example: hasKey(MainHostObject, property) === true/false + * + * @param {Object} host object to check property + * @param {string} key to check + */ +function hasKey(object, key) { + return Object.prototype.hasOwnProperty.call(object, key); +} + +function joinRegExp(patterns) { + // Combine an array of regular expressions and strings into one large regexp + // Be mad. + var sources = [], + i = 0, + len = patterns.length, + pattern; + + for (; i < len; i++) { + pattern = patterns[i]; + if (isString(pattern)) { + // If it's a string, we need to escape it + // Taken from: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions + sources.push(pattern.replace(/([.*+?^=!:${}()|\[\]\/\\])/g, '\\$1')); + } else if (pattern && pattern.source) { + // If it's a regexp already, we want to extract the source + sources.push(pattern.source); + } + // Intentionally skip other cases + } + return new RegExp(sources.join('|'), 'i'); +} + +function urlencode(o) { + var pairs = []; + each(o, function(key, value) { + pairs.push(encodeURIComponent(key) + '=' + encodeURIComponent(value)); + }); + return pairs.join('&'); +} + +// borrowed from https://tools.ietf.org/html/rfc3986#appendix-B +// intentionally using regex and not href parsing trick because React Native and other +// environments where DOM might not be available +function parseUrl(url) { + if (typeof url !== 'string') return {}; + var match = url.match(/^(([^:\/?#]+):)?(\/\/([^\/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?$/); + + // coerce to undefined values to empty string so we don't get 'undefined' + var query = match[6] || ''; + var fragment = match[8] || ''; + return { + protocol: match[2], + host: match[4], + path: match[5], + relative: match[5] + query + fragment // everything minus origin + }; +} +function uuid4() { + var crypto = _window.crypto || _window.msCrypto; + + if (!isUndefined(crypto) && crypto.getRandomValues) { + // Use window.crypto API if available + // eslint-disable-next-line no-undef + var arr = new Uint16Array(8); + crypto.getRandomValues(arr); + + // set 4 in byte 7 + arr[3] = (arr[3] & 0xfff) | 0x4000; + // set 2 most significant bits of byte 9 to '10' + arr[4] = (arr[4] & 0x3fff) | 0x8000; + + var pad = function(num) { + var v = num.toString(16); + while (v.length < 4) { + v = '0' + v; + } + return v; + }; + + return ( + pad(arr[0]) + + pad(arr[1]) + + pad(arr[2]) + + pad(arr[3]) + + pad(arr[4]) + + pad(arr[5]) + + pad(arr[6]) + + pad(arr[7]) + ); + } else { + // http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/2117523#2117523 + return 'xxxxxxxxxxxx4xxxyxxxxxxxxxxxxxxx'.replace(/[xy]/g, function(c) { + var r = (Math.random() * 16) | 0, + v = c === 'x' ? r : (r & 0x3) | 0x8; + return v.toString(16); + }); + } +} + +/** + * Given a child DOM element, returns a query-selector statement describing that + * and its ancestors + * e.g. [HTMLElement] => body > div > input#foo.btn[name=baz] + * @param elem + * @returns {string} + */ +function htmlTreeAsString(elem) { + /* eslint no-extra-parens:0*/ + var MAX_TRAVERSE_HEIGHT = 5, + MAX_OUTPUT_LEN = 80, + out = [], + height = 0, + len = 0, + separator = ' > ', + sepLength = separator.length, + nextStr; + + while (elem && height++ < MAX_TRAVERSE_HEIGHT) { + nextStr = htmlElementAsString(elem); + // bail out if + // - nextStr is the 'html' element + // - the length of the string that would be created exceeds MAX_OUTPUT_LEN + // (ignore this limit if we are on the first iteration) + if ( + nextStr === 'html' || + (height > 1 && len + out.length * sepLength + nextStr.length >= MAX_OUTPUT_LEN) + ) { + break; + } + + out.push(nextStr); + + len += nextStr.length; + elem = elem.parentNode; + } + + return out.reverse().join(separator); +} + +/** + * Returns a simple, query-selector representation of a DOM element + * e.g. [HTMLElement] => input#foo.btn[name=baz] + * @param HTMLElement + * @returns {string} + */ +function htmlElementAsString(elem) { + var out = [], + className, + classes, + key, + attr, + i; + + if (!elem || !elem.tagName) { + return ''; + } + + out.push(elem.tagName.toLowerCase()); + if (elem.id) { + out.push('#' + elem.id); + } + + className = elem.className; + if (className && isString(className)) { + classes = className.split(/\s+/); + for (i = 0; i < classes.length; i++) { + out.push('.' + classes[i]); + } + } + var attrWhitelist = ['type', 'name', 'title', 'alt']; + for (i = 0; i < attrWhitelist.length; i++) { + key = attrWhitelist[i]; + attr = elem.getAttribute(key); + if (attr) { + out.push('[' + key + '="' + attr + '"]'); + } + } + return out.join(''); +} + +/** + * Returns true if either a OR b is truthy, but not both + */ +function isOnlyOneTruthy(a, b) { + return !!(!!a ^ !!b); +} + +/** + * Returns true if both parameters are undefined + */ +function isBothUndefined(a, b) { + return isUndefined(a) && isUndefined(b); +} + +/** + * Returns true if the two input exception interfaces have the same content + */ +function isSameException(ex1, ex2) { + if (isOnlyOneTruthy(ex1, ex2)) return false; + + ex1 = ex1.values[0]; + ex2 = ex2.values[0]; + + if (ex1.type !== ex2.type || ex1.value !== ex2.value) return false; + + // in case both stacktraces are undefined, we can't decide so default to false + if (isBothUndefined(ex1.stacktrace, ex2.stacktrace)) return false; + + return isSameStacktrace(ex1.stacktrace, ex2.stacktrace); +} + +/** + * Returns true if the two input stack trace interfaces have the same content + */ +function isSameStacktrace(stack1, stack2) { + if (isOnlyOneTruthy(stack1, stack2)) return false; + + var frames1 = stack1.frames; + var frames2 = stack2.frames; + + // Exit early if frame count differs + if (frames1.length !== frames2.length) return false; + + // Iterate through every frame; bail out if anything differs + var a, b; + for (var i = 0; i < frames1.length; i++) { + a = frames1[i]; + b = frames2[i]; + if ( + a.filename !== b.filename || + a.lineno !== b.lineno || + a.colno !== b.colno || + a['function'] !== b['function'] + ) + return false; + } + return true; +} + +/** + * Polyfill a method + * @param obj object e.g. `document` + * @param name method name present on object e.g. `addEventListener` + * @param replacement replacement function + * @param track {optional} record instrumentation to an array + */ +function fill(obj, name, replacement, track) { + if (obj == null) return; + var orig = obj[name]; + obj[name] = replacement(orig); + obj[name].__raven__ = true; + obj[name].__orig__ = orig; + if (track) { + track.push([obj, name, orig]); + } +} + +/** + * Join values in array + * @param input array of values to be joined together + * @param delimiter string to be placed in-between values + * @returns {string} + */ +function safeJoin(input, delimiter) { + if (!isArray(input)) return ''; + + var output = []; + + for (var i = 0; i < input.length; i++) { + try { + output.push(String(input[i])); + } catch (e) { + output.push('[value cannot be serialized]'); + } + } + + return output.join(delimiter); +} + +// Default Node.js REPL depth +var MAX_SERIALIZE_EXCEPTION_DEPTH = 3; +// 50kB, as 100kB is max payload size, so half sounds reasonable +var MAX_SERIALIZE_EXCEPTION_SIZE = 50 * 1024; +var MAX_SERIALIZE_KEYS_LENGTH = 40; + +function utf8Length(value) { + return ~-encodeURI(value).split(/%..|./).length; +} + +function jsonSize(value) { + return utf8Length(JSON.stringify(value)); +} + +function serializeValue(value) { + if (typeof value === 'string') { + var maxLength = 40; + return truncate(value, maxLength); + } else if ( + typeof value === 'number' || + typeof value === 'boolean' || + typeof value === 'undefined' + ) { + return value; + } + + var type = Object.prototype.toString.call(value); + + // Node.js REPL notation + if (type === '[object Object]') return '[Object]'; + if (type === '[object Array]') return '[Array]'; + if (type === '[object Function]') + return value.name ? '[Function: ' + value.name + ']' : '[Function]'; + + return value; +} + +function serializeObject(value, depth) { + if (depth === 0) return serializeValue(value); + + if (isPlainObject(value)) { + return Object.keys(value).reduce(function(acc, key) { + acc[key] = serializeObject(value[key], depth - 1); + return acc; + }, {}); + } else if (Array.isArray(value)) { + return value.map(function(val) { + return serializeObject(val, depth - 1); + }); + } + + return serializeValue(value); +} + +function serializeException(ex, depth, maxSize) { + if (!isPlainObject(ex)) return ex; + + depth = typeof depth !== 'number' ? MAX_SERIALIZE_EXCEPTION_DEPTH : depth; + maxSize = typeof depth !== 'number' ? MAX_SERIALIZE_EXCEPTION_SIZE : maxSize; + + var serialized = serializeObject(ex, depth); + + if (jsonSize(stringify(serialized)) > maxSize) { + return serializeException(ex, depth - 1); + } + + return serialized; +} + +function serializeKeysForMessage(keys, maxLength) { + if (typeof keys === 'number' || typeof keys === 'string') return keys.toString(); + if (!Array.isArray(keys)) return ''; + + keys = keys.filter(function(key) { + return typeof key === 'string'; + }); + if (keys.length === 0) return '[object has no keys]'; + + maxLength = typeof maxLength !== 'number' ? MAX_SERIALIZE_KEYS_LENGTH : maxLength; + if (keys[0].length >= maxLength) return keys[0]; + + for (var usedKeys = keys.length; usedKeys > 0; usedKeys--) { + var serialized = keys.slice(0, usedKeys).join(', '); + if (serialized.length > maxLength) continue; + if (usedKeys === keys.length) return serialized; + return serialized + '\u2026'; + } + + return ''; +} + +function sanitize(input, sanitizeKeys) { + if (!isArray(sanitizeKeys) || (isArray(sanitizeKeys) && sanitizeKeys.length === 0)) + return input; + + var sanitizeRegExp = joinRegExp(sanitizeKeys); + var sanitizeMask = '********'; + var safeInput; + + try { + safeInput = JSON.parse(stringify(input)); + } catch (o_O) { + return input; + } + + function sanitizeWorker(workerInput) { + if (isArray(workerInput)) { + return workerInput.map(function(val) { + return sanitizeWorker(val); + }); + } + + if (isPlainObject(workerInput)) { + return Object.keys(workerInput).reduce(function(acc, k) { + if (sanitizeRegExp.test(k)) { + acc[k] = sanitizeMask; + } else { + acc[k] = sanitizeWorker(workerInput[k]); + } + return acc; + }, {}); + } + + return workerInput; + } + + return sanitizeWorker(safeInput); +} + +module.exports = { + isObject: isObject, + isError: isError, + isErrorEvent: isErrorEvent, + isDOMError: isDOMError, + isDOMException: isDOMException, + isUndefined: isUndefined, + isFunction: isFunction, + isPlainObject: isPlainObject, + isString: isString, + isArray: isArray, + isEmptyObject: isEmptyObject, + supportsErrorEvent: supportsErrorEvent, + supportsDOMError: supportsDOMError, + supportsDOMException: supportsDOMException, + supportsFetch: supportsFetch, + supportsReferrerPolicy: supportsReferrerPolicy, + supportsPromiseRejectionEvent: supportsPromiseRejectionEvent, + wrappedCallback: wrappedCallback, + each: each, + objectMerge: objectMerge, + truncate: truncate, + objectFrozen: objectFrozen, + hasKey: hasKey, + joinRegExp: joinRegExp, + urlencode: urlencode, + uuid4: uuid4, + htmlTreeAsString: htmlTreeAsString, + htmlElementAsString: htmlElementAsString, + isSameException: isSameException, + isSameStacktrace: isSameStacktrace, + parseUrl: parseUrl, + fill: fill, + safeJoin: safeJoin, + serializeException: serializeException, + serializeKeysForMessage: serializeKeysForMessage, + sanitize: sanitize +}; + +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"11":11}],10:[function(_dereq_,module,exports){ +(function (global){ +var utils = _dereq_(9); + +/* + TraceKit - Cross brower stack traces + + This was originally forked from github.com/occ/TraceKit, but has since been + largely re-written and is now maintained as part of raven-js. Tests for + this are in test/vendor. + + MIT license +*/ + +var TraceKit = { + collectWindowErrors: true, + debug: false +}; + +// This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) +var _window = + typeof window !== 'undefined' + ? window + : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; + +// global reference to slice +var _slice = [].slice; +var UNKNOWN_FUNCTION = '?'; + +// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error#Error_types +var ERROR_TYPES_RE = /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/; + +function getLocationHref() { + if (typeof document === 'undefined' || document.location == null) return ''; + return document.location.href; +} + +function getLocationOrigin() { + if (typeof document === 'undefined' || document.location == null) return ''; + + // Oh dear IE10... + if (!document.location.origin) { + document.location.origin = + document.location.protocol + + '//' + + document.location.hostname + + (document.location.port ? ':' + document.location.port : ''); + } + + return document.location.origin; +} + +/** + * TraceKit.report: cross-browser processing of unhandled exceptions + * + * Syntax: + * TraceKit.report.subscribe(function(stackInfo) { ... }) + * TraceKit.report.unsubscribe(function(stackInfo) { ... }) + * TraceKit.report(exception) + * try { ...code... } catch(ex) { TraceKit.report(ex); } + * + * Supports: + * - Firefox: full stack trace with line numbers, plus column number + * on top frame; column number is not guaranteed + * - Opera: full stack trace with line and column numbers + * - Chrome: full stack trace with line and column numbers + * - Safari: line and column number for the top frame only; some frames + * may be missing, and column number is not guaranteed + * - IE: line and column number for the top frame only; some frames + * may be missing, and column number is not guaranteed + * + * In theory, TraceKit should work on all of the following versions: + * - IE5.5+ (only 8.0 tested) + * - Firefox 0.9+ (only 3.5+ tested) + * - Opera 7+ (only 10.50 tested; versions 9 and earlier may require + * Exceptions Have Stacktrace to be enabled in opera:config) + * - Safari 3+ (only 4+ tested) + * - Chrome 1+ (only 5+ tested) + * - Konqueror 3.5+ (untested) + * + * Requires TraceKit.computeStackTrace. + * + * Tries to catch all unhandled exceptions and report them to the + * subscribed handlers. Please note that TraceKit.report will rethrow the + * exception. This is REQUIRED in order to get a useful stack trace in IE. + * If the exception does not reach the top of the browser, you will only + * get a stack trace from the point where TraceKit.report was called. + * + * Handlers receive a stackInfo object as described in the + * TraceKit.computeStackTrace docs. + */ +TraceKit.report = (function reportModuleWrapper() { + var handlers = [], + lastArgs = null, + lastException = null, + lastExceptionStack = null; + + /** + * Add a crash handler. + * @param {Function} handler + */ + function subscribe(handler) { + installGlobalHandler(); + handlers.push(handler); + } + + /** + * Remove a crash handler. + * @param {Function} handler + */ + function unsubscribe(handler) { + for (var i = handlers.length - 1; i >= 0; --i) { + if (handlers[i] === handler) { + handlers.splice(i, 1); + } + } + } + + /** + * Remove all crash handlers. + */ + function unsubscribeAll() { + uninstallGlobalHandler(); + handlers = []; + } + + /** + * Dispatch stack information to all handlers. + * @param {Object.} stack + */ + function notifyHandlers(stack, isWindowError) { + var exception = null; + if (isWindowError && !TraceKit.collectWindowErrors) { + return; + } + for (var i in handlers) { + if (handlers.hasOwnProperty(i)) { + try { + handlers[i].apply(null, [stack].concat(_slice.call(arguments, 2))); + } catch (inner) { + exception = inner; + } + } + } + + if (exception) { + throw exception; + } + } + + var _oldOnerrorHandler, _onErrorHandlerInstalled; + + /** + * Ensures all global unhandled exceptions are recorded. + * Supported by Gecko and IE. + * @param {string} msg Error message. + * @param {string} url URL of script that generated the exception. + * @param {(number|string)} lineNo The line number at which the error + * occurred. + * @param {?(number|string)} colNo The column number at which the error + * occurred. + * @param {?Error} ex The actual Error object. + */ + function traceKitWindowOnError(msg, url, lineNo, colNo, ex) { + var stack = null; + // If 'ex' is ErrorEvent, get real Error from inside + var exception = utils.isErrorEvent(ex) ? ex.error : ex; + // If 'msg' is ErrorEvent, get real message from inside + var message = utils.isErrorEvent(msg) ? msg.message : msg; + + if (lastExceptionStack) { + TraceKit.computeStackTrace.augmentStackTraceWithInitialElement( + lastExceptionStack, + url, + lineNo, + message + ); + processLastException(); + } else if (exception && utils.isError(exception)) { + // non-string `exception` arg; attempt to extract stack trace + + // New chrome and blink send along a real error object + // Let's just report that like a normal error. + // See: https://mikewest.org/2013/08/debugging-runtime-errors-with-window-onerror + stack = TraceKit.computeStackTrace(exception); + notifyHandlers(stack, true); + } else { + var location = { + url: url, + line: lineNo, + column: colNo + }; + + var name = undefined; + var groups; + + if ({}.toString.call(message) === '[object String]') { + var groups = message.match(ERROR_TYPES_RE); + if (groups) { + name = groups[1]; + message = groups[2]; + } + } + + location.func = UNKNOWN_FUNCTION; + + stack = { + name: name, + message: message, + url: getLocationHref(), + stack: [location] + }; + notifyHandlers(stack, true); + } + + if (_oldOnerrorHandler) { + return _oldOnerrorHandler.apply(this, arguments); + } + + return false; + } + + function installGlobalHandler() { + if (_onErrorHandlerInstalled) { + return; + } + _oldOnerrorHandler = _window.onerror; + _window.onerror = traceKitWindowOnError; + _onErrorHandlerInstalled = true; + } + + function uninstallGlobalHandler() { + if (!_onErrorHandlerInstalled) { + return; + } + _window.onerror = _oldOnerrorHandler; + _onErrorHandlerInstalled = false; + _oldOnerrorHandler = undefined; + } + + function processLastException() { + var _lastExceptionStack = lastExceptionStack, + _lastArgs = lastArgs; + lastArgs = null; + lastExceptionStack = null; + lastException = null; + notifyHandlers.apply(null, [_lastExceptionStack, false].concat(_lastArgs)); + } + + /** + * Reports an unhandled Error to TraceKit. + * @param {Error} ex + * @param {?boolean} rethrow If false, do not re-throw the exception. + * Only used for window.onerror to not cause an infinite loop of + * rethrowing. + */ + function report(ex, rethrow) { + var args = _slice.call(arguments, 1); + if (lastExceptionStack) { + if (lastException === ex) { + return; // already caught by an inner catch block, ignore + } else { + processLastException(); + } + } + + var stack = TraceKit.computeStackTrace(ex); + lastExceptionStack = stack; + lastException = ex; + lastArgs = args; + + // If the stack trace is incomplete, wait for 2 seconds for + // slow slow IE to see if onerror occurs or not before reporting + // this exception; otherwise, we will end up with an incomplete + // stack trace + setTimeout(function() { + if (lastException === ex) { + processLastException(); + } + }, stack.incomplete ? 2000 : 0); + + if (rethrow !== false) { + throw ex; // re-throw to propagate to the top level (and cause window.onerror) + } + } + + report.subscribe = subscribe; + report.unsubscribe = unsubscribe; + report.uninstall = unsubscribeAll; + return report; +})(); + +/** + * TraceKit.computeStackTrace: cross-browser stack traces in JavaScript + * + * Syntax: + * s = TraceKit.computeStackTrace(exception) // consider using TraceKit.report instead (see below) + * Returns: + * s.name - exception name + * s.message - exception message + * s.stack[i].url - JavaScript or HTML file URL + * s.stack[i].func - function name, or empty for anonymous functions (if guessing did not work) + * s.stack[i].args - arguments passed to the function, if known + * s.stack[i].line - line number, if known + * s.stack[i].column - column number, if known + * + * Supports: + * - Firefox: full stack trace with line numbers and unreliable column + * number on top frame + * - Opera 10: full stack trace with line and column numbers + * - Opera 9-: full stack trace with line numbers + * - Chrome: full stack trace with line and column numbers + * - Safari: line and column number for the topmost stacktrace element + * only + * - IE: no line numbers whatsoever + * + * Tries to guess names of anonymous functions by looking for assignments + * in the source code. In IE and Safari, we have to guess source file names + * by searching for function bodies inside all page scripts. This will not + * work for scripts that are loaded cross-domain. + * Here be dragons: some function names may be guessed incorrectly, and + * duplicate functions may be mismatched. + * + * TraceKit.computeStackTrace should only be used for tracing purposes. + * Logging of unhandled exceptions should be done with TraceKit.report, + * which builds on top of TraceKit.computeStackTrace and provides better + * IE support by utilizing the window.onerror event to retrieve information + * about the top of the stack. + * + * Note: In IE and Safari, no stack trace is recorded on the Error object, + * so computeStackTrace instead walks its *own* chain of callers. + * This means that: + * * in Safari, some methods may be missing from the stack trace; + * * in IE, the topmost function in the stack trace will always be the + * caller of computeStackTrace. + * + * This is okay for tracing (because you are likely to be calling + * computeStackTrace from the function you want to be the topmost element + * of the stack trace anyway), but not okay for logging unhandled + * exceptions (because your catch block will likely be far away from the + * inner function that actually caused the exception). + * + */ +TraceKit.computeStackTrace = (function computeStackTraceWrapper() { + // Contents of Exception in various browsers. + // + // SAFARI: + // ex.message = Can't find variable: qq + // ex.line = 59 + // ex.sourceId = 580238192 + // ex.sourceURL = http://... + // ex.expressionBeginOffset = 96 + // ex.expressionCaretOffset = 98 + // ex.expressionEndOffset = 98 + // ex.name = ReferenceError + // + // FIREFOX: + // ex.message = qq is not defined + // ex.fileName = http://... + // ex.lineNumber = 59 + // ex.columnNumber = 69 + // ex.stack = ...stack trace... (see the example below) + // ex.name = ReferenceError + // + // CHROME: + // ex.message = qq is not defined + // ex.name = ReferenceError + // ex.type = not_defined + // ex.arguments = ['aa'] + // ex.stack = ...stack trace... + // + // INTERNET EXPLORER: + // ex.message = ... + // ex.name = ReferenceError + // + // OPERA: + // ex.message = ...message... (see the example below) + // ex.name = ReferenceError + // ex.opera#sourceloc = 11 (pretty much useless, duplicates the info in ex.message) + // ex.stacktrace = n/a; see 'opera:config#UserPrefs|Exceptions Have Stacktrace' + + /** + * Computes stack trace information from the stack property. + * Chrome and Gecko use this property. + * @param {Error} ex + * @return {?Object.} Stack trace information. + */ + function computeStackTraceFromStackProp(ex) { + if (typeof ex.stack === 'undefined' || !ex.stack) return; + + var chrome = /^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i; + var winjs = /^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i; + // NOTE: blob urls are now supposed to always have an origin, therefore it's format + // which is `blob:http://url/path/with-some-uuid`, is matched by `blob.*?:\/` as well + var gecko = /^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i; + // Used to additionally parse URL/line/column from eval frames + var geckoEval = /(\S+) line (\d+)(?: > eval line \d+)* > eval/i; + var chromeEval = /\((\S*)(?::(\d+))(?::(\d+))\)/; + var lines = ex.stack.split('\n'); + var stack = []; + var submatch; + var parts; + var element; + var reference = /^(.*) is undefined$/.exec(ex.message); + + for (var i = 0, j = lines.length; i < j; ++i) { + if ((parts = chrome.exec(lines[i]))) { + var isNative = parts[2] && parts[2].indexOf('native') === 0; // start of line + var isEval = parts[2] && parts[2].indexOf('eval') === 0; // start of line + if (isEval && (submatch = chromeEval.exec(parts[2]))) { + // throw out eval line/column and use top-most line/column number + parts[2] = submatch[1]; // url + parts[3] = submatch[2]; // line + parts[4] = submatch[3]; // column + } + element = { + url: !isNative ? parts[2] : null, + func: parts[1] || UNKNOWN_FUNCTION, + args: isNative ? [parts[2]] : [], + line: parts[3] ? +parts[3] : null, + column: parts[4] ? +parts[4] : null + }; + } else if ((parts = winjs.exec(lines[i]))) { + element = { + url: parts[2], + func: parts[1] || UNKNOWN_FUNCTION, + args: [], + line: +parts[3], + column: parts[4] ? +parts[4] : null + }; + } else if ((parts = gecko.exec(lines[i]))) { + var isEval = parts[3] && parts[3].indexOf(' > eval') > -1; + if (isEval && (submatch = geckoEval.exec(parts[3]))) { + // throw out eval line/column and use top-most line number + parts[3] = submatch[1]; + parts[4] = submatch[2]; + parts[5] = null; // no column when eval + } else if (i === 0 && !parts[5] && typeof ex.columnNumber !== 'undefined') { + // FireFox uses this awesome columnNumber property for its top frame + // Also note, Firefox's column number is 0-based and everything else expects 1-based, + // so adding 1 + // NOTE: this hack doesn't work if top-most frame is eval + stack[0].column = ex.columnNumber + 1; + } + element = { + url: parts[3], + func: parts[1] || UNKNOWN_FUNCTION, + args: parts[2] ? parts[2].split(',') : [], + line: parts[4] ? +parts[4] : null, + column: parts[5] ? +parts[5] : null + }; + } else { + continue; + } + + if (!element.func && element.line) { + element.func = UNKNOWN_FUNCTION; + } + + if (element.url && element.url.substr(0, 5) === 'blob:') { + // Special case for handling JavaScript loaded into a blob. + // We use a synchronous AJAX request here as a blob is already in + // memory - it's not making a network request. This will generate a warning + // in the browser console, but there has already been an error so that's not + // that much of an issue. + var xhr = new XMLHttpRequest(); + xhr.open('GET', element.url, false); + xhr.send(null); + + // If we failed to download the source, skip this patch + if (xhr.status === 200) { + var source = xhr.responseText || ''; + + // We trim the source down to the last 300 characters as sourceMappingURL is always at the end of the file. + // Why 300? To be in line with: https://github.com/getsentry/sentry/blob/4af29e8f2350e20c28a6933354e4f42437b4ba42/src/sentry/lang/javascript/processor.py#L164-L175 + source = source.slice(-300); + + // Now we dig out the source map URL + var sourceMaps = source.match(/\/\/# sourceMappingURL=(.*)$/); + + // If we don't find a source map comment or we find more than one, continue on to the next element. + if (sourceMaps) { + var sourceMapAddress = sourceMaps[1]; + + // Now we check to see if it's a relative URL. + // If it is, convert it to an absolute one. + if (sourceMapAddress.charAt(0) === '~') { + sourceMapAddress = getLocationOrigin() + sourceMapAddress.slice(1); + } + + // Now we strip the '.map' off of the end of the URL and update the + // element so that Sentry can match the map to the blob. + element.url = sourceMapAddress.slice(0, -4); + } + } + } + + stack.push(element); + } + + if (!stack.length) { + return null; + } + + return { + name: ex.name, + message: ex.message, + url: getLocationHref(), + stack: stack + }; + } + + /** + * Adds information about the first frame to incomplete stack traces. + * Safari and IE require this to get complete data on the first frame. + * @param {Object.} stackInfo Stack trace information from + * one of the compute* methods. + * @param {string} url The URL of the script that caused an error. + * @param {(number|string)} lineNo The line number of the script that + * caused an error. + * @param {string=} message The error generated by the browser, which + * hopefully contains the name of the object that caused the error. + * @return {boolean} Whether or not the stack information was + * augmented. + */ + function augmentStackTraceWithInitialElement(stackInfo, url, lineNo, message) { + var initial = { + url: url, + line: lineNo + }; + + if (initial.url && initial.line) { + stackInfo.incomplete = false; + + if (!initial.func) { + initial.func = UNKNOWN_FUNCTION; + } + + if (stackInfo.stack.length > 0) { + if (stackInfo.stack[0].url === initial.url) { + if (stackInfo.stack[0].line === initial.line) { + return false; // already in stack trace + } else if ( + !stackInfo.stack[0].line && + stackInfo.stack[0].func === initial.func + ) { + stackInfo.stack[0].line = initial.line; + return false; + } + } + } + + stackInfo.stack.unshift(initial); + stackInfo.partial = true; + return true; + } else { + stackInfo.incomplete = true; + } + + return false; + } + + /** + * Computes stack trace information by walking the arguments.caller + * chain at the time the exception occurred. This will cause earlier + * frames to be missed but is the only way to get any stack trace in + * Safari and IE. The top frame is restored by + * {@link augmentStackTraceWithInitialElement}. + * @param {Error} ex + * @return {?Object.} Stack trace information. + */ + function computeStackTraceByWalkingCallerChain(ex, depth) { + var functionName = /function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i, + stack = [], + funcs = {}, + recursion = false, + parts, + item, + source; + + for ( + var curr = computeStackTraceByWalkingCallerChain.caller; + curr && !recursion; + curr = curr.caller + ) { + if (curr === computeStackTrace || curr === TraceKit.report) { + // console.log('skipping internal function'); + continue; + } + + item = { + url: null, + func: UNKNOWN_FUNCTION, + line: null, + column: null + }; + + if (curr.name) { + item.func = curr.name; + } else if ((parts = functionName.exec(curr.toString()))) { + item.func = parts[1]; + } + + if (typeof item.func === 'undefined') { + try { + item.func = parts.input.substring(0, parts.input.indexOf('{')); + } catch (e) {} + } + + if (funcs['' + curr]) { + recursion = true; + } else { + funcs['' + curr] = true; + } + + stack.push(item); + } + + if (depth) { + // console.log('depth is ' + depth); + // console.log('stack is ' + stack.length); + stack.splice(0, depth); + } + + var result = { + name: ex.name, + message: ex.message, + url: getLocationHref(), + stack: stack + }; + augmentStackTraceWithInitialElement( + result, + ex.sourceURL || ex.fileName, + ex.line || ex.lineNumber, + ex.message || ex.description + ); + return result; + } + + /** + * Computes a stack trace for an exception. + * @param {Error} ex + * @param {(string|number)=} depth + */ + function computeStackTrace(ex, depth) { + var stack = null; + depth = depth == null ? 0 : +depth; + + try { + stack = computeStackTraceFromStackProp(ex); + if (stack) { + return stack; + } + } catch (e) { + if (TraceKit.debug) { + throw e; + } + } + + try { + stack = computeStackTraceByWalkingCallerChain(ex, depth + 1); + if (stack) { + return stack; + } + } catch (e) { + if (TraceKit.debug) { + throw e; + } + } + return { + name: ex.name, + message: ex.message, + url: getLocationHref() + }; + } + + computeStackTrace.augmentStackTraceWithInitialElement = augmentStackTraceWithInitialElement; + computeStackTrace.computeStackTraceFromStackProp = computeStackTraceFromStackProp; + + return computeStackTrace; +})(); + +module.exports = TraceKit; + +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"9":9}],11:[function(_dereq_,module,exports){ +/* + json-stringify-safe + Like JSON.stringify, but doesn't throw on circular references. + + Originally forked from https://github.com/isaacs/json-stringify-safe + version 5.0.1 on 3/8/2017 and modified to handle Errors serialization + and IE8 compatibility. Tests for this are in test/vendor. + + ISC license: https://github.com/isaacs/json-stringify-safe/blob/master/LICENSE +*/ + +exports = module.exports = stringify; +exports.getSerialize = serializer; + +function indexOf(haystack, needle) { + for (var i = 0; i < haystack.length; ++i) { + if (haystack[i] === needle) return i; + } + return -1; +} + +function stringify(obj, replacer, spaces, cycleReplacer) { + return JSON.stringify(obj, serializer(replacer, cycleReplacer), spaces); +} + +// https://github.com/ftlabs/js-abbreviate/blob/fa709e5f139e7770a71827b1893f22418097fbda/index.js#L95-L106 +function stringifyError(value) { + var err = { + // These properties are implemented as magical getters and don't show up in for in + stack: value.stack, + message: value.message, + name: value.name + }; + + for (var i in value) { + if (Object.prototype.hasOwnProperty.call(value, i)) { + err[i] = value[i]; + } + } + + return err; +} + +function serializer(replacer, cycleReplacer) { + var stack = []; + var keys = []; + + if (cycleReplacer == null) { + cycleReplacer = function(key, value) { + if (stack[0] === value) { + return '[Circular ~]'; + } + return '[Circular ~.' + keys.slice(0, indexOf(stack, value)).join('.') + ']'; + }; + } + + return function(key, value) { + if (stack.length > 0) { + var thisPos = indexOf(stack, this); + ~thisPos ? stack.splice(thisPos + 1) : stack.push(this); + ~thisPos ? keys.splice(thisPos, Infinity, key) : keys.push(key); + + if (~indexOf(stack, value)) { + value = cycleReplacer.call(this, key, value); + } + } else { + stack.push(value); + } + + return replacer == null + ? value instanceof Error ? stringifyError(value) : value + : replacer.call(this, key, value); + }; +} + +},{}],12:[function(_dereq_,module,exports){ +/* + * JavaScript MD5 + * https://github.com/blueimp/JavaScript-MD5 + * + * Copyright 2011, Sebastian Tschan + * https://blueimp.net + * + * Licensed under the MIT license: + * https://opensource.org/licenses/MIT + * + * Based on + * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message + * Digest Algorithm, as defined in RFC 1321. + * Version 2.2 Copyright (C) Paul Johnston 1999 - 2009 + * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet + * Distributed under the BSD License + * See http://pajhome.org.uk/crypt/md5 for more info. + */ + +/* +* Add integers, wrapping at 2^32. This uses 16-bit operations internally +* to work around bugs in some JS interpreters. +*/ +function safeAdd(x, y) { + var lsw = (x & 0xffff) + (y & 0xffff); + var msw = (x >> 16) + (y >> 16) + (lsw >> 16); + return (msw << 16) | (lsw & 0xffff); +} + +/* +* Bitwise rotate a 32-bit number to the left. +*/ +function bitRotateLeft(num, cnt) { + return (num << cnt) | (num >>> (32 - cnt)); +} + +/* +* These functions implement the four basic operations the algorithm uses. +*/ +function md5cmn(q, a, b, x, s, t) { + return safeAdd(bitRotateLeft(safeAdd(safeAdd(a, q), safeAdd(x, t)), s), b); +} +function md5ff(a, b, c, d, x, s, t) { + return md5cmn((b & c) | (~b & d), a, b, x, s, t); +} +function md5gg(a, b, c, d, x, s, t) { + return md5cmn((b & d) | (c & ~d), a, b, x, s, t); +} +function md5hh(a, b, c, d, x, s, t) { + return md5cmn(b ^ c ^ d, a, b, x, s, t); +} +function md5ii(a, b, c, d, x, s, t) { + return md5cmn(c ^ (b | ~d), a, b, x, s, t); +} + +/* +* Calculate the MD5 of an array of little-endian words, and a bit length. +*/ +function binlMD5(x, len) { + /* append padding */ + x[len >> 5] |= 0x80 << (len % 32); + x[(((len + 64) >>> 9) << 4) + 14] = len; + + var i; + var olda; + var oldb; + var oldc; + var oldd; + var a = 1732584193; + var b = -271733879; + var c = -1732584194; + var d = 271733878; + + for (i = 0; i < x.length; i += 16) { + olda = a; + oldb = b; + oldc = c; + oldd = d; + + a = md5ff(a, b, c, d, x[i], 7, -680876936); + d = md5ff(d, a, b, c, x[i + 1], 12, -389564586); + c = md5ff(c, d, a, b, x[i + 2], 17, 606105819); + b = md5ff(b, c, d, a, x[i + 3], 22, -1044525330); + a = md5ff(a, b, c, d, x[i + 4], 7, -176418897); + d = md5ff(d, a, b, c, x[i + 5], 12, 1200080426); + c = md5ff(c, d, a, b, x[i + 6], 17, -1473231341); + b = md5ff(b, c, d, a, x[i + 7], 22, -45705983); + a = md5ff(a, b, c, d, x[i + 8], 7, 1770035416); + d = md5ff(d, a, b, c, x[i + 9], 12, -1958414417); + c = md5ff(c, d, a, b, x[i + 10], 17, -42063); + b = md5ff(b, c, d, a, x[i + 11], 22, -1990404162); + a = md5ff(a, b, c, d, x[i + 12], 7, 1804603682); + d = md5ff(d, a, b, c, x[i + 13], 12, -40341101); + c = md5ff(c, d, a, b, x[i + 14], 17, -1502002290); + b = md5ff(b, c, d, a, x[i + 15], 22, 1236535329); + + a = md5gg(a, b, c, d, x[i + 1], 5, -165796510); + d = md5gg(d, a, b, c, x[i + 6], 9, -1069501632); + c = md5gg(c, d, a, b, x[i + 11], 14, 643717713); + b = md5gg(b, c, d, a, x[i], 20, -373897302); + a = md5gg(a, b, c, d, x[i + 5], 5, -701558691); + d = md5gg(d, a, b, c, x[i + 10], 9, 38016083); + c = md5gg(c, d, a, b, x[i + 15], 14, -660478335); + b = md5gg(b, c, d, a, x[i + 4], 20, -405537848); + a = md5gg(a, b, c, d, x[i + 9], 5, 568446438); + d = md5gg(d, a, b, c, x[i + 14], 9, -1019803690); + c = md5gg(c, d, a, b, x[i + 3], 14, -187363961); + b = md5gg(b, c, d, a, x[i + 8], 20, 1163531501); + a = md5gg(a, b, c, d, x[i + 13], 5, -1444681467); + d = md5gg(d, a, b, c, x[i + 2], 9, -51403784); + c = md5gg(c, d, a, b, x[i + 7], 14, 1735328473); + b = md5gg(b, c, d, a, x[i + 12], 20, -1926607734); + + a = md5hh(a, b, c, d, x[i + 5], 4, -378558); + d = md5hh(d, a, b, c, x[i + 8], 11, -2022574463); + c = md5hh(c, d, a, b, x[i + 11], 16, 1839030562); + b = md5hh(b, c, d, a, x[i + 14], 23, -35309556); + a = md5hh(a, b, c, d, x[i + 1], 4, -1530992060); + d = md5hh(d, a, b, c, x[i + 4], 11, 1272893353); + c = md5hh(c, d, a, b, x[i + 7], 16, -155497632); + b = md5hh(b, c, d, a, x[i + 10], 23, -1094730640); + a = md5hh(a, b, c, d, x[i + 13], 4, 681279174); + d = md5hh(d, a, b, c, x[i], 11, -358537222); + c = md5hh(c, d, a, b, x[i + 3], 16, -722521979); + b = md5hh(b, c, d, a, x[i + 6], 23, 76029189); + a = md5hh(a, b, c, d, x[i + 9], 4, -640364487); + d = md5hh(d, a, b, c, x[i + 12], 11, -421815835); + c = md5hh(c, d, a, b, x[i + 15], 16, 530742520); + b = md5hh(b, c, d, a, x[i + 2], 23, -995338651); + + a = md5ii(a, b, c, d, x[i], 6, -198630844); + d = md5ii(d, a, b, c, x[i + 7], 10, 1126891415); + c = md5ii(c, d, a, b, x[i + 14], 15, -1416354905); + b = md5ii(b, c, d, a, x[i + 5], 21, -57434055); + a = md5ii(a, b, c, d, x[i + 12], 6, 1700485571); + d = md5ii(d, a, b, c, x[i + 3], 10, -1894986606); + c = md5ii(c, d, a, b, x[i + 10], 15, -1051523); + b = md5ii(b, c, d, a, x[i + 1], 21, -2054922799); + a = md5ii(a, b, c, d, x[i + 8], 6, 1873313359); + d = md5ii(d, a, b, c, x[i + 15], 10, -30611744); + c = md5ii(c, d, a, b, x[i + 6], 15, -1560198380); + b = md5ii(b, c, d, a, x[i + 13], 21, 1309151649); + a = md5ii(a, b, c, d, x[i + 4], 6, -145523070); + d = md5ii(d, a, b, c, x[i + 11], 10, -1120210379); + c = md5ii(c, d, a, b, x[i + 2], 15, 718787259); + b = md5ii(b, c, d, a, x[i + 9], 21, -343485551); + + a = safeAdd(a, olda); + b = safeAdd(b, oldb); + c = safeAdd(c, oldc); + d = safeAdd(d, oldd); + } + return [a, b, c, d]; +} + +/* +* Convert an array of little-endian words to a string +*/ +function binl2rstr(input) { + var i; + var output = ''; + var length32 = input.length * 32; + for (i = 0; i < length32; i += 8) { + output += String.fromCharCode((input[i >> 5] >>> (i % 32)) & 0xff); + } + return output; +} + +/* +* Convert a raw string to an array of little-endian words +* Characters >255 have their high-byte silently ignored. +*/ +function rstr2binl(input) { + var i; + var output = []; + output[(input.length >> 2) - 1] = undefined; + for (i = 0; i < output.length; i += 1) { + output[i] = 0; + } + var length8 = input.length * 8; + for (i = 0; i < length8; i += 8) { + output[i >> 5] |= (input.charCodeAt(i / 8) & 0xff) << (i % 32); + } + return output; +} + +/* +* Calculate the MD5 of a raw string +*/ +function rstrMD5(s) { + return binl2rstr(binlMD5(rstr2binl(s), s.length * 8)); +} + +/* +* Calculate the HMAC-MD5, of a key and some data (raw strings) +*/ +function rstrHMACMD5(key, data) { + var i; + var bkey = rstr2binl(key); + var ipad = []; + var opad = []; + var hash; + ipad[15] = opad[15] = undefined; + if (bkey.length > 16) { + bkey = binlMD5(bkey, key.length * 8); + } + for (i = 0; i < 16; i += 1) { + ipad[i] = bkey[i] ^ 0x36363636; + opad[i] = bkey[i] ^ 0x5c5c5c5c; + } + hash = binlMD5(ipad.concat(rstr2binl(data)), 512 + data.length * 8); + return binl2rstr(binlMD5(opad.concat(hash), 512 + 128)); +} + +/* +* Convert a raw string to a hex string +*/ +function rstr2hex(input) { + var hexTab = '0123456789abcdef'; + var output = ''; + var x; + var i; + for (i = 0; i < input.length; i += 1) { + x = input.charCodeAt(i); + output += hexTab.charAt((x >>> 4) & 0x0f) + hexTab.charAt(x & 0x0f); + } + return output; +} + +/* +* Encode a string as utf-8 +*/ +function str2rstrUTF8(input) { + return unescape(encodeURIComponent(input)); +} + +/* +* Take string arguments and return either raw or hex encoded strings +*/ +function rawMD5(s) { + return rstrMD5(str2rstrUTF8(s)); +} +function hexMD5(s) { + return rstr2hex(rawMD5(s)); +} +function rawHMACMD5(k, d) { + return rstrHMACMD5(str2rstrUTF8(k), str2rstrUTF8(d)); +} +function hexHMACMD5(k, d) { + return rstr2hex(rawHMACMD5(k, d)); +} + +function md5(string, key, raw) { + if (!key) { + if (!raw) { + return hexMD5(string); + } + return rawMD5(string); + } + if (!raw) { + return hexHMACMD5(key, string); + } + return rawHMACMD5(key, string); +} + +module.exports = md5; + +},{}]},{},[8,1,2,3,4])(8) +}); \ No newline at end of file diff --git a/packages/raven-js/dist/angular,console,ember,vue/raven.min.js b/packages/raven-js/dist/angular,console,ember,vue/raven.min.js new file mode 100644 index 000000000000..758649cc0b32 --- /dev/null +++ b/packages/raven-js/dist/angular,console,ember,vue/raven.min.js @@ -0,0 +1,4 @@ +/*! Raven.js 3.25.2 (30b6d4e) | github.com/getsentry/raven-js */ +!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.Raven=a()}}(function(){return function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};b[g][0].call(k.exports,function(a){var c=b[g][1][a];return e(c?c:a)},k,k.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;g":"anonymous component")+(a._isVue&&a.$options.__file?" at "+a.$options.__file:"")}function e(a,b){if(b=b||window.Vue,b&&b.config){var c=b.config.errorHandler;b.config.errorHandler=function(b,e,f){var g={};"[object Object]"===Object.prototype.toString.call(e)&&(g.componentName=d(e),g.propsData=e.$options.propsData),"undefined"!=typeof f&&(g.lifecycleHook=f),a.captureException(b,{extra:g}),"function"==typeof c&&c.call(this,b,e,f)}}}b.exports=e,a(8).addPlugin(b.exports)},{8:8}],5:[function(a,b,c){function d(a){this.name="RavenConfigError",this.message=a}d.prototype=new Error,d.prototype.constructor=d,b.exports=d},{}],6:[function(a,b,c){var d=a(9),e=function(a,b,c){var e=a[b],f=a;if(b in a){var g="warn"===b?"warning":b;a[b]=function(){var a=[].slice.call(arguments),h=d.safeJoin(a," "),i={level:g,logger:"console",extra:{arguments:a}};"assert"===b?a[0]===!1&&(h="Assertion failed: "+(d.safeJoin(a.slice(1)," ")||"console.assert"),i.extra.arguments=a.slice(1),c&&c(h,i)):c&&c(h,i),e&&Function.prototype.apply.call(e,f,a)}}};b.exports={wrapMethod:e}},{9:9}],7:[function(a,b,c){(function(c){function d(){return+new Date}function e(a,b){return s(b)?function(c){return b(c,a)}:b}function f(){this.b=!("object"!=typeof JSON||!JSON.stringify),this.c=!r(S),this.d=!r(T),this.e=null,this.f=null,this.g=null,this.h=null,this.i=null,this.j=null,this.k={},this.l={release:R.SENTRY_RELEASE&&R.SENTRY_RELEASE.id,logger:"javascript",ignoreErrors:[],ignoreUrls:[],whitelistUrls:[],includePaths:[],headers:null,collectWindowErrors:!0,captureUnhandledRejections:!0,maxMessageLength:0,maxUrlLength:250,stackTraceLimit:50,autoBreadcrumbs:!0,instrument:!0,sampleRate:1,sanitizeKeys:[]},this.m={method:"POST",keepalive:!0,referrerPolicy:K()?"origin":""},this.n=0,this.o=!1,this.p=Error.stackTraceLimit,this.q=R.console||{},this.r={},this.s=[],this.t=d(),this.u=[],this.v=[],this.w=null,this.x=R.location,this.y=this.x&&this.x.href,this.z();for(var a in this.q)this.r[a]=this.q[a]}var g=a(10),h=a(11),i=a(12),j=a(5),k=a(9),l=k.isErrorEvent,m=k.isDOMError,n=k.isDOMException,o=k.isError,p=k.isObject,q=k.isPlainObject,r=k.isUndefined,s=k.isFunction,t=k.isString,u=k.isArray,v=k.isEmptyObject,w=k.each,x=k.objectMerge,y=k.truncate,z=k.objectFrozen,A=k.hasKey,B=k.joinRegExp,C=k.urlencode,D=k.uuid4,E=k.htmlTreeAsString,F=k.isSameException,G=k.isSameStacktrace,H=k.parseUrl,I=k.fill,J=k.supportsFetch,K=k.supportsReferrerPolicy,L=k.serializeKeysForMessage,M=k.serializeException,N=k.sanitize,O=a(6).wrapMethod,P="source protocol user pass host port path".split(" "),Q=/^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/,R="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},S=R.document,T=R.navigator;f.prototype={VERSION:"3.25.2",debug:!1,TraceKit:g,config:function(a,b){var c=this;if(c.h)return this.A("error","Error: Raven has already been configured"),c;if(!a)return c;var d=c.l;b&&w(b,function(a,b){"tags"===a||"extra"===a||"user"===a?c.k[a]=b:d[a]=b}),c.setDSN(a),d.ignoreErrors.push(/^Script error\.?$/),d.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/),d.ignoreErrors=B(d.ignoreErrors),d.ignoreUrls=!!d.ignoreUrls.length&&B(d.ignoreUrls),d.whitelistUrls=!!d.whitelistUrls.length&&B(d.whitelistUrls),d.includePaths=B(d.includePaths),d.maxBreadcrumbs=Math.max(0,Math.min(d.maxBreadcrumbs||100,100));var e={xhr:!0,console:!0,dom:!0,location:!0,sentry:!0},f=d.autoBreadcrumbs;"[object Object]"==={}.toString.call(f)?f=x(e,f):f!==!1&&(f=e),d.autoBreadcrumbs=f;var h={tryCatch:!0},i=d.instrument;return"[object Object]"==={}.toString.call(i)?i=x(h,i):i!==!1&&(i=h),d.instrument=i,g.collectWindowErrors=!!d.collectWindowErrors,c},install:function(){var a=this;return a.isSetup()&&!a.o&&(g.report.subscribe(function(){a.B.apply(a,arguments)}),a.l.captureUnhandledRejections&&a.C(),a.D(),a.l.instrument&&a.l.instrument.tryCatch&&a.E(),a.l.autoBreadcrumbs&&a.F(),a.G(),a.o=!0),Error.stackTraceLimit=a.l.stackTraceLimit,this},setDSN:function(a){var b=this,c=b.H(a),d=c.path.lastIndexOf("/"),e=c.path.substr(1,d);b.I=a,b.i=c.user,b.J=c.pass&&c.pass.substr(1),b.j=c.path.substr(d+1),b.h=b.K(c),b.L=b.h+"/"+e+"api/"+b.j+"/store/",this.z()},context:function(a,b,c){return s(a)&&(c=b||[],b=a,a=void 0),this.wrap(a,b).apply(this,c)},wrap:function(a,b,c){function d(){var d=[],f=arguments.length,g=!a||a&&a.deep!==!1;for(c&&s(c)&&c.apply(this,arguments);f--;)d[f]=g?e.wrap(a,arguments[f]):arguments[f];try{return b.apply(this,d)}catch(h){throw e.M(),e.captureException(h,a),h}}var e=this;if(r(b)&&!s(a))return a;if(s(a)&&(b=a,a=void 0),!s(b))return b;try{if(b.N)return b;if(b.O)return b.O}catch(f){return b}for(var g in b)A(b,g)&&(d[g]=b[g]);return d.prototype=b.prototype,b.O=d,d.N=!0,d.P=b,d},uninstall:function(){return g.report.uninstall(),this.Q(),this.R(),this.S(),this.T(),Error.stackTraceLimit=this.p,this.o=!1,this},U:function(a){this.A("debug","Raven caught unhandled promise rejection:",a),this.captureException(a.reason,{extra:{unhandledPromiseRejection:!0}})},C:function(){return this.U=this.U.bind(this),R.addEventListener&&R.addEventListener("unhandledrejection",this.U),this},Q:function(){return R.removeEventListener&&R.removeEventListener("unhandledrejection",this.U),this},captureException:function(a,b){if(b=x({trimHeadFrames:0},b?b:{}),l(a)&&a.error)a=a.error;else{if(m(a)||n(a)){var c=a.name||(m(a)?"DOMError":"DOMException"),d=a.message?c+": "+a.message:c;return this.captureMessage(d,x(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}))}if(o(a))a=a;else{if(!q(a))return this.captureMessage(a,x(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}));b=this.V(b,a),a=new Error(b.message)}}this.e=a;try{var e=g.computeStackTrace(a);this.W(e,b)}catch(f){if(a!==f)throw f}return this},V:function(a,b){var c=Object.keys(b).sort(),d=x(a,{message:"Non-Error exception captured with keys: "+L(c),fingerprint:[i(c)],extra:a.extra||{}});return d.extra.X=M(b),d},captureMessage:function(a,b){if(!this.l.ignoreErrors.test||!this.l.ignoreErrors.test(a)){b=b||{},a+="";var c,d=x({message:a},b);try{throw new Error(a)}catch(e){c=e}c.name=null;var f=g.computeStackTrace(c),h=u(f.stack)&&f.stack[1];h&&"Raven.captureException"===h.func&&(h=f.stack[2]);var i=h&&h.url||"";if((!this.l.ignoreUrls.test||!this.l.ignoreUrls.test(i))&&(!this.l.whitelistUrls.test||this.l.whitelistUrls.test(i))){if(this.l.stacktrace||b&&b.stacktrace){d.fingerprint=null==d.fingerprint?a:d.fingerprint,b=x({trimHeadFrames:0},b),b.trimHeadFrames+=1;var j=this.Y(f,b);d.stacktrace={frames:j.reverse()}}return d.fingerprint&&(d.fingerprint=u(d.fingerprint)?d.fingerprint:[d.fingerprint]),this.Z(d),this}}},captureBreadcrumb:function(a){var b=x({timestamp:d()/1e3},a);if(s(this.l.breadcrumbCallback)){var c=this.l.breadcrumbCallback(b);if(p(c)&&!v(c))b=c;else if(c===!1)return this}return this.v.push(b),this.v.length>this.l.maxBreadcrumbs&&this.v.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.s.push([a,b]),this.o&&this.G(),this},setUserContext:function(a){return this.k.user=a,this},setExtraContext:function(a){return this.$("extra",a),this},setTagsContext:function(a){return this.$("tags",a),this},clearContext:function(){return this.k={},this},getContext:function(){return JSON.parse(h(this.k))},setEnvironment:function(a){return this.l.environment=a,this},setRelease:function(a){return this.l.release=a,this},setDataCallback:function(a){var b=this.l.dataCallback;return this.l.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.l.breadcrumbCallback;return this.l.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.l.shouldSendCallback;return this.l.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.l.transport=a,this},lastException:function(){return this.e},lastEventId:function(){return this.g},isSetup:function(){return!!this.b&&(!!this.h||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.A("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=R.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(S){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.I;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.k.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.K(this.H(c)),h=S.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(S.head||S.body).appendChild(h)}},M:function(){var a=this;this.n+=1,setTimeout(function(){a.n-=1})},_:function(a,b){var c,d;if(this.c){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),S.createEvent?(c=S.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=S.createEventObject(),c.eventType=a);for(d in b)A(b,d)&&(c[d]=b[d]);if(S.createEvent)S.dispatchEvent(c);else try{S.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},aa:function(a){var b=this;return function(c){if(b.ba=null,b.w!==c){b.w=c;var d;try{d=E(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ca:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.ba;g||a.aa("input")(c),clearTimeout(g),a.ba=setTimeout(function(){a.ba=null},b)}}},da:function(a,b){var c=H(this.x.href),d=H(b),e=H(a);this.y=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},D:function(){var a=this;a.ea=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.N?a.ea.apply(this.P,arguments):a.ea.apply(this,arguments)}},R:function(){this.ea&&(Function.prototype.toString=this.ea)},E:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.da(b.y,c+""),a.apply(this,arguments)}};I(R.history,"pushState",j,d),I(R.history,"replaceState",j,d)}if(c.console&&"console"in R&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};w(["debug","info","warn","error","log"],function(a,b){O(console,b,k)})}},S:function(){for(var a;this.u.length;){a=this.u.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},T:function(){for(var a in this.r)this.q[a]=this.r[a]},G:function(){var a=this;w(this.s,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},H:function(a){var b=Q.exec(a),c={},d=7;try{for(;d--;)c[P[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.l.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},K:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},B:function(){this.n||this.W.apply(this,arguments)},W:function(a,b){var c=this.Y(a,b);this._("handle",{stackInfo:a,options:b}),this.ga(a.name,a.message,a.url,a.lineno,c,b)},Y:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(w(a.stack,function(b,e){var f=c.ha(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.v,0)}),this.k.user&&(a.user=this.k.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),a=this.qa(a),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||v(a[b]))&&delete a[b]}),s(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!v(a)&&(!s(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.na()?void this.A("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function F(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&l(b))for(c=b.split(/\s+/),f=0;fc?Q(a,b-1):d}function R(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?X:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function S(a,b){function c(a){return m(a)?a.map(function(a){return c(a)}):k(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!m(b)||m(b)&&0===b.length)return a;var d,e=A(b),f="********";try{d=JSON.parse(T(a))}catch(g){return a}return c(d)}var T=a(11),U="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},V=3,W=51200,X=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isDOMError:g,isDOMException:h,isUndefined:i,isFunction:j,isPlainObject:k,isString:l,isArray:m,isEmptyObject:n,supportsErrorEvent:o,supportsDOMError:p,supportsDOMException:q,supportsFetch:r,supportsReferrerPolicy:s,supportsPromiseRejectionEvent:t,wrappedCallback:u,each:v,objectMerge:w,truncate:y,objectFrozen:x,hasKey:z,joinRegExp:A,urlencode:B,uuid4:D,htmlTreeAsString:E,htmlElementAsString:F,isSameException:I,isSameStacktrace:J,parseUrl:C,fill:K,safeJoin:L,serializeException:Q,serializeKeysForMessage:R,sanitize:S}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{11:11}],10:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}function e(){return"undefined"==typeof document||null==document.location?"":(document.location.origin||(document.location.origin=document.location.protocol+"//"+document.location.hostname+(document.location.port?":"+document.location.port:"")),document.location.origin)}var f=a(9),g={collectWindowErrors:!0,debug:!1},h="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},i=[].slice,j="?",k=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;g.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function e(a,b){var c=null;if(!b||g.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(i.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,h,i){var l=null,m=f.isErrorEvent(i)?i.error:i,n=f.isErrorEvent(a)?a.message:a;if(v)g.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&f.isError(m))l=g.computeStackTrace(m),e(l,!0);else{var p,r={url:b,line:c,column:h},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(k);p&&(s=p[1],n=p[2])}r.func=j,l={name:s,message:n,url:d(),stack:[r]},e(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=h.onerror,h.onerror=l,r=!0)}function n(){r&&(h.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,e.apply(null,[a,!1].concat(b))}function p(a,b){var c=i.call(arguments,1);if(v){if(u===a)return;o()}var d=g.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),g.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,f,g=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,h=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,i=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,k=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,l=/\((\S*)(?::(\d+))(?::(\d+))\)/,m=a.stack.split("\n"),n=[],o=(/^(.*) is undefined$/.exec(a.message),0),p=m.length;o eval")>-1;r&&(b=k.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==o||c[5]||"undefined"==typeof a.columnNumber||(n[0].column=a.columnNumber+1),f={url:c[3],func:c[1]||j,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}if(!f.func&&f.line&&(f.func=j),f.url&&"blob:"===f.url.substr(0,5)){var s=new XMLHttpRequest;if(s.open("GET",f.url,!1),s.send(null),200===s.status){var t=s.responseText||"";t=t.slice(-300);var u=t.match(/\/\/# sourceMappingURL=(.*)$/);if(u){var v=u[1];"~"===v.charAt(0)&&(v=e()+v.slice(1)),f.url=v.slice(0,-4)}}}n.push(f)}return n.length?{name:a.name,message:a.message,url:d(),stack:n}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=j),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,e){for(var h,i,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==f&&o!==g.report){if(i={url:null,func:j,line:null,column:null},o.name?i.func=o.name:(h=k.exec(o.toString()))&&(i.func=h[1]),"undefined"==typeof i.func)try{i.func=h.input.substring(0,h.input.indexOf("{"))}catch(p){}m[""+o]?n=!0:m[""+o]=!0,l.push(i)}e&&l.splice(0,e);var q={name:a.name,message:a.message,url:d(),stack:l};return b(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),q}function f(b,e){var f=null;e=null==e?0:+e;try{if(f=a(b))return f}catch(h){if(g.debug)throw h}try{if(f=c(b,e+1))return f}catch(h){if(g.debug)throw h}return{name:b.name,message:b.message,url:d()}}return f.augmentStackTraceWithInitialElement=b,f.computeStackTraceFromStackProp=a,f}(),b.exports=g}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{9:9}],11:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}],12:[function(a,b,c){function d(a,b){var c=(65535&a)+(65535&b),d=(a>>16)+(b>>16)+(c>>16);return d<<16|65535&c}function e(a,b){return a<>>32-b}function f(a,b,c,f,g,h){return d(e(d(d(b,a),d(f,h)),g),c)}function g(a,b,c,d,e,g,h){return f(b&c|~b&d,a,b,e,g,h)}function h(a,b,c,d,e,g,h){return f(b&d|c&~d,a,b,e,g,h)}function i(a,b,c,d,e,g,h){return f(b^c^d,a,b,e,g,h)}function j(a,b,c,d,e,g,h){return f(c^(b|~d),a,b,e,g,h)}function k(a,b){a[b>>5]|=128<>>9<<4)+14]=b;var c,e,f,k,l,m=1732584193,n=-271733879,o=-1732584194,p=271733878;for(c=0;c>5]>>>b%32&255);return c}function m(a){var b,c=[];for(c[(a.length>>2)-1]=void 0,b=0;b>5]|=(255&a.charCodeAt(b/8))<16&&(e=k(e,8*a.length)),c=0;c<16;c+=1)f[c]=909522486^e[c],g[c]=1549556828^e[c];return d=k(f.concat(m(b)),512+8*b.length),l(k(g.concat(d),640))}function p(a){var b,c,d="0123456789abcdef",e="";for(c=0;c>>4&15)+d.charAt(15&b);return e}function q(a){return unescape(encodeURIComponent(a))}function r(a){return n(q(a))}function s(a){return p(r(a))}function t(a,b){return o(q(a),q(b))}function u(a,b){return p(t(a,b))}function v(a,b,c){return b?c?t(b,a):u(b,a):c?r(a):s(a)}b.exports=v},{}]},{},[8,1,2,3,4])(8)}); +//# sourceMappingURL=raven.min.js.map \ No newline at end of file diff --git a/packages/raven-js/dist/angular,console,ember,vue/raven.min.js.map b/packages/raven-js/dist/angular,console,ember,vue/raven.min.js.map new file mode 100644 index 000000000000..01d0c11c4c2f --- /dev/null +++ b/packages/raven-js/dist/angular,console,ember,vue/raven.min.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","angularPlugin","angular","RavenProvider","$get","$window","ExceptionHandlerProvider","$provide","decorator","exceptionHandler","R","$delegate","ex","cause","captureException","extra","moduleName","provider","config","setDataCallback","wrappedCallback","data","_normalizeData","angularPattern","exception","values","matches","exec","value","type","message","angularDocs","substr","addPlugin","8","9","2","consolePlugin","console","pluginOptions","logLevels","levels","push","callback","msg","captureMessage","level","pop","wrapConsoleMethod","wrapMethod","6","3","emberPlugin","Ember","_oldOnError","onerror","error","RSVP","on","reason","context","4","formatComponentName","vm","$root","name","_isVue","$options","_componentTag","__file","vuePlugin","Vue","errorHandler","info","metaData","Object","prototype","toString","componentName","propsData","lifecycleHook","5","RavenConfigError","constructor","utils","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","safeJoin","logger","Function","apply","7","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","sanitizeKeys","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isErrorEvent","isDOMError","isDOMException","isError","isObject","isPlainObject","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","sanitize","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","dsn","options","_logDebug","globalOptions","key","setDSN","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","func","undefined","wrap","_before","wrapped","deep","_ignoreNextOnError","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","U","event","unhandledPromiseRejection","C","_promiseRejectionHandler","bind","addEventListener","Q","removeEventListener","trimHeadFrames","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","V","currentOptions","exKeys","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","M","setTimeout","_","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","aa","evtName","_keypressTimeout","target","category","ca","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","da","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","D","_originalFunctionToString","E","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","F","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","S","builtin","T","G","installer","concat","H","str","m","allowSecretKey","K","port","B","W","stackInfo","_triggerEvent","_processException","lineno","Y","frame","_normalizeFrame","in_app","ha","stackInfoUrl","normalized","filename","line","colno","column","function","ga","prefixedMessage","transaction","ia","request","Referer","breadcrumbs","_trimBreadcrumbs","ja","urlProp","urlProps","ka","httpData","userAgent","User-Agent","referrer","z","_backoffDuration","_backoffStart","na","oa","current","last","pa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Z","baseData","project","platform","_getHttpData","serverName","server_name","_sanitizeData","forEach","random","_sendProcessedPayload","qa","sa","ra","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","ta","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","open","setRequestHeader","send","ua","hash","evaluated","A","$","setUser","setReleaseContext","10","11","12","RavenConstructor","_Raven","noConflict","Client","what","supportsErrorEvent","ErrorEvent","supportsDOMError","DOMError","supportsDOMException","DOMException","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","sanitizeMask","safeInput","o_O","getLocationHref","getLocationOrigin","origin","hostname","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","responseText","sourceMaps","sourceMapAddress","charAt","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","y","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","string","raw"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file diff --git a/packages/raven-js/dist/angular,console,ember/raven.js b/packages/raven-js/dist/angular,console,ember/raven.js new file mode 100644 index 000000000000..05bfcb6e2499 --- /dev/null +++ b/packages/raven-js/dist/angular,console,ember/raven.js @@ -0,0 +1,4155 @@ +/*! Raven.js 3.25.2 (30b6d4e) | github.com/getsentry/raven-js */ + +/* + * Includes TraceKit + * https://github.com/getsentry/TraceKit + * + * Copyright 2018 Matt Robenolt and other contributors + * Released under the BSD license + * https://github.com/getsentry/raven-js/blob/master/LICENSE + * + */ + +(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.Raven = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o captureException(string) => captureMessage(string) + if (initialCall && initialCall.func === 'Raven.captureException') { + initialCall = stack.stack[2]; + } + + var fileurl = (initialCall && initialCall.url) || ''; + + if ( + !!this._globalOptions.ignoreUrls.test && + this._globalOptions.ignoreUrls.test(fileurl) + ) { + return; + } + + if ( + !!this._globalOptions.whitelistUrls.test && + !this._globalOptions.whitelistUrls.test(fileurl) + ) { + return; + } + + if (this._globalOptions.stacktrace || (options && options.stacktrace)) { + // fingerprint on msg, not stack trace (legacy behavior, could be revisited) + data.fingerprint = data.fingerprint == null ? msg : data.fingerprint; + + options = objectMerge( + { + trimHeadFrames: 0 + }, + options + ); + // Since we know this is a synthetic trace, the top frame (this function call) + // MUST be from Raven.js, so mark it for trimming + // We add to the trim counter so that callers can choose to trim extra frames, such + // as utility functions. + options.trimHeadFrames += 1; + + var frames = this._prepareFrames(stack, options); + data.stacktrace = { + // Sentry expects frames oldest to newest + frames: frames.reverse() + }; + } + + // Make sure that fingerprint is always wrapped in an array + if (data.fingerprint) { + data.fingerprint = isArray(data.fingerprint) + ? data.fingerprint + : [data.fingerprint]; + } + + // Fire away! + this._send(data); + + return this; + }, + + captureBreadcrumb: function(obj) { + var crumb = objectMerge( + { + timestamp: now() / 1000 + }, + obj + ); + + if (isFunction(this._globalOptions.breadcrumbCallback)) { + var result = this._globalOptions.breadcrumbCallback(crumb); + + if (isObject(result) && !isEmptyObject(result)) { + crumb = result; + } else if (result === false) { + return this; + } + } + + this._breadcrumbs.push(crumb); + if (this._breadcrumbs.length > this._globalOptions.maxBreadcrumbs) { + this._breadcrumbs.shift(); + } + return this; + }, + + addPlugin: function(plugin /*arg1, arg2, ... argN*/) { + var pluginArgs = [].slice.call(arguments, 1); + + this._plugins.push([plugin, pluginArgs]); + if (this._isRavenInstalled) { + this._drainPlugins(); + } + + return this; + }, + + /* + * Set/clear a user to be sent along with the payload. + * + * @param {object} user An object representing user data [optional] + * @return {Raven} + */ + setUserContext: function(user) { + // Intentionally do not merge here since that's an unexpected behavior. + this._globalContext.user = user; + + return this; + }, + + /* + * Merge extra attributes to be sent along with the payload. + * + * @param {object} extra An object representing extra data [optional] + * @return {Raven} + */ + setExtraContext: function(extra) { + this._mergeContext('extra', extra); + + return this; + }, + + /* + * Merge tags to be sent along with the payload. + * + * @param {object} tags An object representing tags [optional] + * @return {Raven} + */ + setTagsContext: function(tags) { + this._mergeContext('tags', tags); + + return this; + }, + + /* + * Clear all of the context. + * + * @return {Raven} + */ + clearContext: function() { + this._globalContext = {}; + + return this; + }, + + /* + * Get a copy of the current context. This cannot be mutated. + * + * @return {object} copy of context + */ + getContext: function() { + // lol javascript + return JSON.parse(stringify(this._globalContext)); + }, + + /* + * Set environment of application + * + * @param {string} environment Typically something like 'production'. + * @return {Raven} + */ + setEnvironment: function(environment) { + this._globalOptions.environment = environment; + + return this; + }, + + /* + * Set release version of application + * + * @param {string} release Typically something like a git SHA to identify version + * @return {Raven} + */ + setRelease: function(release) { + this._globalOptions.release = release; + + return this; + }, + + /* + * Set the dataCallback option + * + * @param {function} callback The callback to run which allows the + * data blob to be mutated before sending + * @return {Raven} + */ + setDataCallback: function(callback) { + var original = this._globalOptions.dataCallback; + this._globalOptions.dataCallback = keepOriginalCallback(original, callback); + return this; + }, + + /* + * Set the breadcrumbCallback option + * + * @param {function} callback The callback to run which allows filtering + * or mutating breadcrumbs + * @return {Raven} + */ + setBreadcrumbCallback: function(callback) { + var original = this._globalOptions.breadcrumbCallback; + this._globalOptions.breadcrumbCallback = keepOriginalCallback(original, callback); + return this; + }, + + /* + * Set the shouldSendCallback option + * + * @param {function} callback The callback to run which allows + * introspecting the blob before sending + * @return {Raven} + */ + setShouldSendCallback: function(callback) { + var original = this._globalOptions.shouldSendCallback; + this._globalOptions.shouldSendCallback = keepOriginalCallback(original, callback); + return this; + }, + + /** + * Override the default HTTP transport mechanism that transmits data + * to the Sentry server. + * + * @param {function} transport Function invoked instead of the default + * `makeRequest` handler. + * + * @return {Raven} + */ + setTransport: function(transport) { + this._globalOptions.transport = transport; + + return this; + }, + + /* + * Get the latest raw exception that was captured by Raven. + * + * @return {error} + */ + lastException: function() { + return this._lastCapturedException; + }, + + /* + * Get the last event id + * + * @return {string} + */ + lastEventId: function() { + return this._lastEventId; + }, + + /* + * Determine if Raven is setup and ready to go. + * + * @return {boolean} + */ + isSetup: function() { + if (!this._hasJSON) return false; // needs JSON support + if (!this._globalServer) { + if (!this.ravenNotConfiguredError) { + this.ravenNotConfiguredError = true; + this._logDebug('error', 'Error: Raven has not been configured.'); + } + return false; + } + return true; + }, + + afterLoad: function() { + // TODO: remove window dependence? + + // Attempt to initialize Raven on load + var RavenConfig = _window.RavenConfig; + if (RavenConfig) { + this.config(RavenConfig.dsn, RavenConfig.config).install(); + } + }, + + showReportDialog: function(options) { + if ( + !_document // doesn't work without a document (React native) + ) + return; + + options = options || {}; + + var lastEventId = options.eventId || this.lastEventId(); + if (!lastEventId) { + throw new RavenConfigError('Missing eventId'); + } + + var dsn = options.dsn || this._dsn; + if (!dsn) { + throw new RavenConfigError('Missing DSN'); + } + + var encode = encodeURIComponent; + var qs = ''; + qs += '?eventId=' + encode(lastEventId); + qs += '&dsn=' + encode(dsn); + + var user = options.user || this._globalContext.user; + if (user) { + if (user.name) qs += '&name=' + encode(user.name); + if (user.email) qs += '&email=' + encode(user.email); + } + + var globalServer = this._getGlobalServer(this._parseDSN(dsn)); + + var script = _document.createElement('script'); + script.async = true; + script.src = globalServer + '/api/embed/error-page/' + qs; + (_document.head || _document.body).appendChild(script); + }, + + /**** Private functions ****/ + _ignoreNextOnError: function() { + var self = this; + this._ignoreOnError += 1; + setTimeout(function() { + // onerror should trigger before setTimeout + self._ignoreOnError -= 1; + }); + }, + + _triggerEvent: function(eventType, options) { + // NOTE: `event` is a native browser thing, so let's avoid conflicting wiht it + var evt, key; + + if (!this._hasDocument) return; + + options = options || {}; + + eventType = 'raven' + eventType.substr(0, 1).toUpperCase() + eventType.substr(1); + + if (_document.createEvent) { + evt = _document.createEvent('HTMLEvents'); + evt.initEvent(eventType, true, true); + } else { + evt = _document.createEventObject(); + evt.eventType = eventType; + } + + for (key in options) + if (hasKey(options, key)) { + evt[key] = options[key]; + } + + if (_document.createEvent) { + // IE9 if standards + _document.dispatchEvent(evt); + } else { + // IE8 regardless of Quirks or Standards + // IE9 if quirks + try { + _document.fireEvent('on' + evt.eventType.toLowerCase(), evt); + } catch (e) { + // Do nothing + } + } + }, + + /** + * Wraps addEventListener to capture UI breadcrumbs + * @param evtName the event name (e.g. "click") + * @returns {Function} + * @private + */ + _breadcrumbEventHandler: function(evtName) { + var self = this; + return function(evt) { + // reset keypress timeout; e.g. triggering a 'click' after + // a 'keypress' will reset the keypress debounce so that a new + // set of keypresses can be recorded + self._keypressTimeout = null; + + // It's possible this handler might trigger multiple times for the same + // event (e.g. event propagation through node ancestors). Ignore if we've + // already captured the event. + if (self._lastCapturedEvent === evt) return; + + self._lastCapturedEvent = evt; + + // try/catch both: + // - accessing evt.target (see getsentry/raven-js#838, #768) + // - `htmlTreeAsString` because it's complex, and just accessing the DOM incorrectly + // can throw an exception in some circumstances. + var target; + try { + target = htmlTreeAsString(evt.target); + } catch (e) { + target = ''; + } + + self.captureBreadcrumb({ + category: 'ui.' + evtName, // e.g. ui.click, ui.input + message: target + }); + }; + }, + + /** + * Wraps addEventListener to capture keypress UI events + * @returns {Function} + * @private + */ + _keypressEventHandler: function() { + var self = this, + debounceDuration = 1000; // milliseconds + + // TODO: if somehow user switches keypress target before + // debounce timeout is triggered, we will only capture + // a single breadcrumb from the FIRST target (acceptable?) + return function(evt) { + var target; + try { + target = evt.target; + } catch (e) { + // just accessing event properties can throw an exception in some rare circumstances + // see: https://github.com/getsentry/raven-js/issues/838 + return; + } + var tagName = target && target.tagName; + + // only consider keypress events on actual input elements + // this will disregard keypresses targeting body (e.g. tabbing + // through elements, hotkeys, etc) + if ( + !tagName || + (tagName !== 'INPUT' && tagName !== 'TEXTAREA' && !target.isContentEditable) + ) + return; + + // record first keypress in a series, but ignore subsequent + // keypresses until debounce clears + var timeout = self._keypressTimeout; + if (!timeout) { + self._breadcrumbEventHandler('input')(evt); + } + clearTimeout(timeout); + self._keypressTimeout = setTimeout(function() { + self._keypressTimeout = null; + }, debounceDuration); + }; + }, + + /** + * Captures a breadcrumb of type "navigation", normalizing input URLs + * @param to the originating URL + * @param from the target URL + * @private + */ + _captureUrlChange: function(from, to) { + var parsedLoc = parseUrl(this._location.href); + var parsedTo = parseUrl(to); + var parsedFrom = parseUrl(from); + + // because onpopstate only tells you the "new" (to) value of location.href, and + // not the previous (from) value, we need to track the value of the current URL + // state ourselves + this._lastHref = to; + + // Use only the path component of the URL if the URL matches the current + // document (almost all the time when using pushState) + if (parsedLoc.protocol === parsedTo.protocol && parsedLoc.host === parsedTo.host) + to = parsedTo.relative; + if (parsedLoc.protocol === parsedFrom.protocol && parsedLoc.host === parsedFrom.host) + from = parsedFrom.relative; + + this.captureBreadcrumb({ + category: 'navigation', + data: { + to: to, + from: from + } + }); + }, + + _patchFunctionToString: function() { + var self = this; + self._originalFunctionToString = Function.prototype.toString; + // eslint-disable-next-line no-extend-native + Function.prototype.toString = function() { + if (typeof this === 'function' && this.__raven__) { + return self._originalFunctionToString.apply(this.__orig__, arguments); + } + return self._originalFunctionToString.apply(this, arguments); + }; + }, + + _unpatchFunctionToString: function() { + if (this._originalFunctionToString) { + // eslint-disable-next-line no-extend-native + Function.prototype.toString = this._originalFunctionToString; + } + }, + + /** + * Wrap timer functions and event targets to catch errors and provide + * better metadata. + */ + _instrumentTryCatch: function() { + var self = this; + + var wrappedBuiltIns = self._wrappedBuiltIns; + + function wrapTimeFn(orig) { + return function(fn, t) { + // preserve arity + // Make a copy of the arguments to prevent deoptimization + // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments + var args = new Array(arguments.length); + for (var i = 0; i < args.length; ++i) { + args[i] = arguments[i]; + } + var originalCallback = args[0]; + if (isFunction(originalCallback)) { + args[0] = self.wrap(originalCallback); + } + + // IE < 9 doesn't support .call/.apply on setInterval/setTimeout, but it + // also supports only two arguments and doesn't care what this is, so we + // can just call the original function directly. + if (orig.apply) { + return orig.apply(this, args); + } else { + return orig(args[0], args[1]); + } + }; + } + + var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; + + function wrapEventTarget(global) { + var proto = _window[global] && _window[global].prototype; + if (proto && proto.hasOwnProperty && proto.hasOwnProperty('addEventListener')) { + fill( + proto, + 'addEventListener', + function(orig) { + return function(evtName, fn, capture, secure) { + // preserve arity + try { + if (fn && fn.handleEvent) { + fn.handleEvent = self.wrap(fn.handleEvent); + } + } catch (err) { + // can sometimes get 'Permission denied to access property "handle Event' + } + + // More breadcrumb DOM capture ... done here and not in `_instrumentBreadcrumbs` + // so that we don't have more than one wrapper function + var before, clickHandler, keypressHandler; + + if ( + autoBreadcrumbs && + autoBreadcrumbs.dom && + (global === 'EventTarget' || global === 'Node') + ) { + // NOTE: generating multiple handlers per addEventListener invocation, should + // revisit and verify we can just use one (almost certainly) + clickHandler = self._breadcrumbEventHandler('click'); + keypressHandler = self._keypressEventHandler(); + before = function(evt) { + // need to intercept every DOM event in `before` argument, in case that + // same wrapped method is re-used for different events (e.g. mousemove THEN click) + // see #724 + if (!evt) return; + + var eventType; + try { + eventType = evt.type; + } catch (e) { + // just accessing event properties can throw an exception in some rare circumstances + // see: https://github.com/getsentry/raven-js/issues/838 + return; + } + if (eventType === 'click') return clickHandler(evt); + else if (eventType === 'keypress') return keypressHandler(evt); + }; + } + return orig.call( + this, + evtName, + self.wrap(fn, undefined, before), + capture, + secure + ); + }; + }, + wrappedBuiltIns + ); + fill( + proto, + 'removeEventListener', + function(orig) { + return function(evt, fn, capture, secure) { + try { + fn = fn && (fn.__raven_wrapper__ ? fn.__raven_wrapper__ : fn); + } catch (e) { + // ignore, accessing __raven_wrapper__ will throw in some Selenium environments + } + return orig.call(this, evt, fn, capture, secure); + }; + }, + wrappedBuiltIns + ); + } + } + + fill(_window, 'setTimeout', wrapTimeFn, wrappedBuiltIns); + fill(_window, 'setInterval', wrapTimeFn, wrappedBuiltIns); + if (_window.requestAnimationFrame) { + fill( + _window, + 'requestAnimationFrame', + function(orig) { + return function(cb) { + return orig(self.wrap(cb)); + }; + }, + wrappedBuiltIns + ); + } + + // event targets borrowed from bugsnag-js: + // https://github.com/bugsnag/bugsnag-js/blob/master/src/bugsnag.js#L666 + var eventTargets = [ + 'EventTarget', + 'Window', + 'Node', + 'ApplicationCache', + 'AudioTrackList', + 'ChannelMergerNode', + 'CryptoOperation', + 'EventSource', + 'FileReader', + 'HTMLUnknownElement', + 'IDBDatabase', + 'IDBRequest', + 'IDBTransaction', + 'KeyOperation', + 'MediaController', + 'MessagePort', + 'ModalWindow', + 'Notification', + 'SVGElementInstance', + 'Screen', + 'TextTrack', + 'TextTrackCue', + 'TextTrackList', + 'WebSocket', + 'WebSocketWorker', + 'Worker', + 'XMLHttpRequest', + 'XMLHttpRequestEventTarget', + 'XMLHttpRequestUpload' + ]; + for (var i = 0; i < eventTargets.length; i++) { + wrapEventTarget(eventTargets[i]); + } + }, + + /** + * Instrument browser built-ins w/ breadcrumb capturing + * - XMLHttpRequests + * - DOM interactions (click/typing) + * - window.location changes + * - console + * + * Can be disabled or individually configured via the `autoBreadcrumbs` config option + */ + _instrumentBreadcrumbs: function() { + var self = this; + var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; + + var wrappedBuiltIns = self._wrappedBuiltIns; + + function wrapProp(prop, xhr) { + if (prop in xhr && isFunction(xhr[prop])) { + fill(xhr, prop, function(orig) { + return self.wrap(orig); + }); // intentionally don't track filled methods on XHR instances + } + } + + if (autoBreadcrumbs.xhr && 'XMLHttpRequest' in _window) { + var xhrproto = _window.XMLHttpRequest && _window.XMLHttpRequest.prototype; + fill( + xhrproto, + 'open', + function(origOpen) { + return function(method, url) { + // preserve arity + + // if Sentry key appears in URL, don't capture + if (isString(url) && url.indexOf(self._globalKey) === -1) { + this.__raven_xhr = { + method: method, + url: url, + status_code: null + }; + } + + return origOpen.apply(this, arguments); + }; + }, + wrappedBuiltIns + ); + + fill( + xhrproto, + 'send', + function(origSend) { + return function() { + // preserve arity + var xhr = this; + + function onreadystatechangeHandler() { + if (xhr.__raven_xhr && xhr.readyState === 4) { + try { + // touching statusCode in some platforms throws + // an exception + xhr.__raven_xhr.status_code = xhr.status; + } catch (e) { + /* do nothing */ + } + + self.captureBreadcrumb({ + type: 'http', + category: 'xhr', + data: xhr.__raven_xhr + }); + } + } + + var props = ['onload', 'onerror', 'onprogress']; + for (var j = 0; j < props.length; j++) { + wrapProp(props[j], xhr); + } + + if ('onreadystatechange' in xhr && isFunction(xhr.onreadystatechange)) { + fill( + xhr, + 'onreadystatechange', + function(orig) { + return self.wrap(orig, undefined, onreadystatechangeHandler); + } /* intentionally don't track this instrumentation */ + ); + } else { + // if onreadystatechange wasn't actually set by the page on this xhr, we + // are free to set our own and capture the breadcrumb + xhr.onreadystatechange = onreadystatechangeHandler; + } + + return origSend.apply(this, arguments); + }; + }, + wrappedBuiltIns + ); + } + + if (autoBreadcrumbs.xhr && supportsFetch()) { + fill( + _window, + 'fetch', + function(origFetch) { + return function() { + // preserve arity + // Make a copy of the arguments to prevent deoptimization + // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments + var args = new Array(arguments.length); + for (var i = 0; i < args.length; ++i) { + args[i] = arguments[i]; + } + + var fetchInput = args[0]; + var method = 'GET'; + var url; + + if (typeof fetchInput === 'string') { + url = fetchInput; + } else if ('Request' in _window && fetchInput instanceof _window.Request) { + url = fetchInput.url; + if (fetchInput.method) { + method = fetchInput.method; + } + } else { + url = '' + fetchInput; + } + + // if Sentry key appears in URL, don't capture, as it's our own request + if (url.indexOf(self._globalKey) !== -1) { + return origFetch.apply(this, args); + } + + if (args[1] && args[1].method) { + method = args[1].method; + } + + var fetchData = { + method: method, + url: url, + status_code: null + }; + + return origFetch + .apply(this, args) + .then(function(response) { + fetchData.status_code = response.status; + + self.captureBreadcrumb({ + type: 'http', + category: 'fetch', + data: fetchData + }); + + return response; + }) + ['catch'](function(err) { + // if there is an error performing the request + self.captureBreadcrumb({ + type: 'http', + category: 'fetch', + data: fetchData, + level: 'error' + }); + + throw err; + }); + }; + }, + wrappedBuiltIns + ); + } + + // Capture breadcrumbs from any click that is unhandled / bubbled up all the way + // to the document. Do this before we instrument addEventListener. + if (autoBreadcrumbs.dom && this._hasDocument) { + if (_document.addEventListener) { + _document.addEventListener('click', self._breadcrumbEventHandler('click'), false); + _document.addEventListener('keypress', self._keypressEventHandler(), false); + } else if (_document.attachEvent) { + // IE8 Compatibility + _document.attachEvent('onclick', self._breadcrumbEventHandler('click')); + _document.attachEvent('onkeypress', self._keypressEventHandler()); + } + } + + // record navigation (URL) changes + // NOTE: in Chrome App environment, touching history.pushState, *even inside + // a try/catch block*, will cause Chrome to output an error to console.error + // borrowed from: https://github.com/angular/angular.js/pull/13945/files + var chrome = _window.chrome; + var isChromePackagedApp = chrome && chrome.app && chrome.app.runtime; + var hasPushAndReplaceState = + !isChromePackagedApp && + _window.history && + _window.history.pushState && + _window.history.replaceState; + if (autoBreadcrumbs.location && hasPushAndReplaceState) { + // TODO: remove onpopstate handler on uninstall() + var oldOnPopState = _window.onpopstate; + _window.onpopstate = function() { + var currentHref = self._location.href; + self._captureUrlChange(self._lastHref, currentHref); + + if (oldOnPopState) { + return oldOnPopState.apply(this, arguments); + } + }; + + var historyReplacementFunction = function(origHistFunction) { + // note history.pushState.length is 0; intentionally not declaring + // params to preserve 0 arity + return function(/* state, title, url */) { + var url = arguments.length > 2 ? arguments[2] : undefined; + + // url argument is optional + if (url) { + // coerce to string (this is what pushState does) + self._captureUrlChange(self._lastHref, url + ''); + } + + return origHistFunction.apply(this, arguments); + }; + }; + + fill(_window.history, 'pushState', historyReplacementFunction, wrappedBuiltIns); + fill(_window.history, 'replaceState', historyReplacementFunction, wrappedBuiltIns); + } + + if (autoBreadcrumbs.console && 'console' in _window && console.log) { + // console + var consoleMethodCallback = function(msg, data) { + self.captureBreadcrumb({ + message: msg, + level: data.level, + category: 'console' + }); + }; + + each(['debug', 'info', 'warn', 'error', 'log'], function(_, level) { + wrapConsoleMethod(console, level, consoleMethodCallback); + }); + } + }, + + _restoreBuiltIns: function() { + // restore any wrapped builtins + var builtin; + while (this._wrappedBuiltIns.length) { + builtin = this._wrappedBuiltIns.shift(); + + var obj = builtin[0], + name = builtin[1], + orig = builtin[2]; + + obj[name] = orig; + } + }, + + _restoreConsole: function() { + // eslint-disable-next-line guard-for-in + for (var method in this._originalConsoleMethods) { + this._originalConsole[method] = this._originalConsoleMethods[method]; + } + }, + + _drainPlugins: function() { + var self = this; + + // FIX ME TODO + each(this._plugins, function(_, plugin) { + var installer = plugin[0]; + var args = plugin[1]; + installer.apply(self, [self].concat(args)); + }); + }, + + _parseDSN: function(str) { + var m = dsnPattern.exec(str), + dsn = {}, + i = 7; + + try { + while (i--) dsn[dsnKeys[i]] = m[i] || ''; + } catch (e) { + throw new RavenConfigError('Invalid DSN: ' + str); + } + + if (dsn.pass && !this._globalOptions.allowSecretKey) { + throw new RavenConfigError( + 'Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key' + ); + } + + return dsn; + }, + + _getGlobalServer: function(uri) { + // assemble the endpoint from the uri pieces + var globalServer = '//' + uri.host + (uri.port ? ':' + uri.port : ''); + + if (uri.protocol) { + globalServer = uri.protocol + ':' + globalServer; + } + return globalServer; + }, + + _handleOnErrorStackInfo: function() { + // if we are intentionally ignoring errors via onerror, bail out + if (!this._ignoreOnError) { + this._handleStackInfo.apply(this, arguments); + } + }, + + _handleStackInfo: function(stackInfo, options) { + var frames = this._prepareFrames(stackInfo, options); + + this._triggerEvent('handle', { + stackInfo: stackInfo, + options: options + }); + + this._processException( + stackInfo.name, + stackInfo.message, + stackInfo.url, + stackInfo.lineno, + frames, + options + ); + }, + + _prepareFrames: function(stackInfo, options) { + var self = this; + var frames = []; + if (stackInfo.stack && stackInfo.stack.length) { + each(stackInfo.stack, function(i, stack) { + var frame = self._normalizeFrame(stack, stackInfo.url); + if (frame) { + frames.push(frame); + } + }); + + // e.g. frames captured via captureMessage throw + if (options && options.trimHeadFrames) { + for (var j = 0; j < options.trimHeadFrames && j < frames.length; j++) { + frames[j].in_app = false; + } + } + } + frames = frames.slice(0, this._globalOptions.stackTraceLimit); + return frames; + }, + + _normalizeFrame: function(frame, stackInfoUrl) { + // normalize the frames data + var normalized = { + filename: frame.url, + lineno: frame.line, + colno: frame.column, + function: frame.func || '?' + }; + + // Case when we don't have any information about the error + // E.g. throwing a string or raw object, instead of an `Error` in Firefox + // Generating synthetic error doesn't add any value here + // + // We should probably somehow let a user know that they should fix their code + if (!frame.url) { + normalized.filename = stackInfoUrl; // fallback to whole stacks url from onerror handler + } + + normalized.in_app = !// determine if an exception came from outside of our app + // first we check the global includePaths list. + ( + (!!this._globalOptions.includePaths.test && + !this._globalOptions.includePaths.test(normalized.filename)) || + // Now we check for fun, if the function name is Raven or TraceKit + /(Raven|TraceKit)\./.test(normalized['function']) || + // finally, we do a last ditch effort and check for raven.min.js + /raven\.(min\.)?js$/.test(normalized.filename) + ); + + return normalized; + }, + + _processException: function(type, message, fileurl, lineno, frames, options) { + var prefixedMessage = (type ? type + ': ' : '') + (message || ''); + if ( + !!this._globalOptions.ignoreErrors.test && + (this._globalOptions.ignoreErrors.test(message) || + this._globalOptions.ignoreErrors.test(prefixedMessage)) + ) { + return; + } + + var stacktrace; + + if (frames && frames.length) { + fileurl = frames[0].filename || fileurl; + // Sentry expects frames oldest to newest + // and JS sends them as newest to oldest + frames.reverse(); + stacktrace = {frames: frames}; + } else if (fileurl) { + stacktrace = { + frames: [ + { + filename: fileurl, + lineno: lineno, + in_app: true + } + ] + }; + } + + if ( + !!this._globalOptions.ignoreUrls.test && + this._globalOptions.ignoreUrls.test(fileurl) + ) { + return; + } + + if ( + !!this._globalOptions.whitelistUrls.test && + !this._globalOptions.whitelistUrls.test(fileurl) + ) { + return; + } + + var data = objectMerge( + { + // sentry.interfaces.Exception + exception: { + values: [ + { + type: type, + value: message, + stacktrace: stacktrace + } + ] + }, + transaction: fileurl + }, + options + ); + + // Fire away! + this._send(data); + }, + + _trimPacket: function(data) { + // For now, we only want to truncate the two different messages + // but this could/should be expanded to just trim everything + var max = this._globalOptions.maxMessageLength; + if (data.message) { + data.message = truncate(data.message, max); + } + if (data.exception) { + var exception = data.exception.values[0]; + exception.value = truncate(exception.value, max); + } + + var request = data.request; + if (request) { + if (request.url) { + request.url = truncate(request.url, this._globalOptions.maxUrlLength); + } + if (request.Referer) { + request.Referer = truncate(request.Referer, this._globalOptions.maxUrlLength); + } + } + + if (data.breadcrumbs && data.breadcrumbs.values) + this._trimBreadcrumbs(data.breadcrumbs); + + return data; + }, + + /** + * Truncate breadcrumb values (right now just URLs) + */ + _trimBreadcrumbs: function(breadcrumbs) { + // known breadcrumb properties with urls + // TODO: also consider arbitrary prop values that start with (https?)?:// + var urlProps = ['to', 'from', 'url'], + urlProp, + crumb, + data; + + for (var i = 0; i < breadcrumbs.values.length; ++i) { + crumb = breadcrumbs.values[i]; + if ( + !crumb.hasOwnProperty('data') || + !isObject(crumb.data) || + objectFrozen(crumb.data) + ) + continue; + + data = objectMerge({}, crumb.data); + for (var j = 0; j < urlProps.length; ++j) { + urlProp = urlProps[j]; + if (data.hasOwnProperty(urlProp) && data[urlProp]) { + data[urlProp] = truncate(data[urlProp], this._globalOptions.maxUrlLength); + } + } + breadcrumbs.values[i].data = data; + } + }, + + _getHttpData: function() { + if (!this._hasNavigator && !this._hasDocument) return; + var httpData = {}; + + if (this._hasNavigator && _navigator.userAgent) { + httpData.headers = { + 'User-Agent': _navigator.userAgent + }; + } + + // Check in `window` instead of `document`, as we may be in ServiceWorker environment + if (_window.location && _window.location.href) { + httpData.url = _window.location.href; + } + + if (this._hasDocument && _document.referrer) { + if (!httpData.headers) httpData.headers = {}; + httpData.headers.Referer = _document.referrer; + } + + return httpData; + }, + + _resetBackoff: function() { + this._backoffDuration = 0; + this._backoffStart = null; + }, + + _shouldBackoff: function() { + return this._backoffDuration && now() - this._backoffStart < this._backoffDuration; + }, + + /** + * Returns true if the in-process data payload matches the signature + * of the previously-sent data + * + * NOTE: This has to be done at this level because TraceKit can generate + * data from window.onerror WITHOUT an exception object (IE8, IE9, + * other old browsers). This can take the form of an "exception" + * data object with a single frame (derived from the onerror args). + */ + _isRepeatData: function(current) { + var last = this._lastData; + + if ( + !last || + current.message !== last.message || // defined for captureMessage + current.transaction !== last.transaction // defined for captureException/onerror + ) + return false; + + // Stacktrace interface (i.e. from captureMessage) + if (current.stacktrace || last.stacktrace) { + return isSameStacktrace(current.stacktrace, last.stacktrace); + } else if (current.exception || last.exception) { + // Exception interface (i.e. from captureException/onerror) + return isSameException(current.exception, last.exception); + } + + return true; + }, + + _setBackoffState: function(request) { + // If we are already in a backoff state, don't change anything + if (this._shouldBackoff()) { + return; + } + + var status = request.status; + + // 400 - project_id doesn't exist or some other fatal + // 401 - invalid/revoked dsn + // 429 - too many requests + if (!(status === 400 || status === 401 || status === 429)) return; + + var retry; + try { + // If Retry-After is not in Access-Control-Expose-Headers, most + // browsers will throw an exception trying to access it + if (supportsFetch()) { + retry = request.headers.get('Retry-After'); + } else { + retry = request.getResponseHeader('Retry-After'); + } + + // Retry-After is returned in seconds + retry = parseInt(retry, 10) * 1000; + } catch (e) { + /* eslint no-empty:0 */ + } + + this._backoffDuration = retry + ? // If Sentry server returned a Retry-After value, use it + retry + : // Otherwise, double the last backoff duration (starts at 1 sec) + this._backoffDuration * 2 || 1000; + + this._backoffStart = now(); + }, + + _send: function(data) { + var globalOptions = this._globalOptions; + + var baseData = { + project: this._globalProject, + logger: globalOptions.logger, + platform: 'javascript' + }, + httpData = this._getHttpData(); + + if (httpData) { + baseData.request = httpData; + } + + // HACK: delete `trimHeadFrames` to prevent from appearing in outbound payload + if (data.trimHeadFrames) delete data.trimHeadFrames; + + data = objectMerge(baseData, data); + + // Merge in the tags and extra separately since objectMerge doesn't handle a deep merge + data.tags = objectMerge(objectMerge({}, this._globalContext.tags), data.tags); + data.extra = objectMerge(objectMerge({}, this._globalContext.extra), data.extra); + + // Send along our own collected metadata with extra + data.extra['session:duration'] = now() - this._startTime; + + if (this._breadcrumbs && this._breadcrumbs.length > 0) { + // intentionally make shallow copy so that additions + // to breadcrumbs aren't accidentally sent in this request + data.breadcrumbs = { + values: [].slice.call(this._breadcrumbs, 0) + }; + } + + if (this._globalContext.user) { + // sentry.interfaces.User + data.user = this._globalContext.user; + } + + // Include the environment if it's defined in globalOptions + if (globalOptions.environment) data.environment = globalOptions.environment; + + // Include the release if it's defined in globalOptions + if (globalOptions.release) data.release = globalOptions.release; + + // Include server_name if it's defined in globalOptions + if (globalOptions.serverName) data.server_name = globalOptions.serverName; + + data = this._sanitizeData(data); + + // Cleanup empty properties before sending them to the server + Object.keys(data).forEach(function(key) { + if (data[key] == null || data[key] === '' || isEmptyObject(data[key])) { + delete data[key]; + } + }); + + if (isFunction(globalOptions.dataCallback)) { + data = globalOptions.dataCallback(data) || data; + } + + // Why?????????? + if (!data || isEmptyObject(data)) { + return; + } + + // Check if the request should be filtered or not + if ( + isFunction(globalOptions.shouldSendCallback) && + !globalOptions.shouldSendCallback(data) + ) { + return; + } + + // Backoff state: Sentry server previously responded w/ an error (e.g. 429 - too many requests), + // so drop requests until "cool-off" period has elapsed. + if (this._shouldBackoff()) { + this._logDebug('warn', 'Raven dropped error due to backoff: ', data); + return; + } + + if (typeof globalOptions.sampleRate === 'number') { + if (Math.random() < globalOptions.sampleRate) { + this._sendProcessedPayload(data); + } + } else { + this._sendProcessedPayload(data); + } + }, + + _sanitizeData: function(data) { + return sanitize(data, this._globalOptions.sanitizeKeys); + }, + + _getUuid: function() { + return uuid4(); + }, + + _sendProcessedPayload: function(data, callback) { + var self = this; + var globalOptions = this._globalOptions; + + if (!this.isSetup()) return; + + // Try and clean up the packet before sending by truncating long values + data = this._trimPacket(data); + + // ideally duplicate error testing should occur *before* dataCallback/shouldSendCallback, + // but this would require copying an un-truncated copy of the data packet, which can be + // arbitrarily deep (extra_data) -- could be worthwhile? will revisit + if (!this._globalOptions.allowDuplicates && this._isRepeatData(data)) { + this._logDebug('warn', 'Raven dropped repeat event: ', data); + return; + } + + // Send along an event_id if not explicitly passed. + // This event_id can be used to reference the error within Sentry itself. + // Set lastEventId after we know the error should actually be sent + this._lastEventId = data.event_id || (data.event_id = this._getUuid()); + + // Store outbound payload after trim + this._lastData = data; + + this._logDebug('debug', 'Raven about to send:', data); + + var auth = { + sentry_version: '7', + sentry_client: 'raven-js/' + this.VERSION, + sentry_key: this._globalKey + }; + + if (this._globalSecret) { + auth.sentry_secret = this._globalSecret; + } + + var exception = data.exception && data.exception.values[0]; + + // only capture 'sentry' breadcrumb is autoBreadcrumbs is truthy + if ( + this._globalOptions.autoBreadcrumbs && + this._globalOptions.autoBreadcrumbs.sentry + ) { + this.captureBreadcrumb({ + category: 'sentry', + message: exception + ? (exception.type ? exception.type + ': ' : '') + exception.value + : data.message, + event_id: data.event_id, + level: data.level || 'error' // presume error unless specified + }); + } + + var url = this._globalEndpoint; + (globalOptions.transport || this._makeRequest).call(this, { + url: url, + auth: auth, + data: data, + options: globalOptions, + onSuccess: function success() { + self._resetBackoff(); + + self._triggerEvent('success', { + data: data, + src: url + }); + callback && callback(); + }, + onError: function failure(error) { + self._logDebug('error', 'Raven transport failed to send: ', error); + + if (error.request) { + self._setBackoffState(error.request); + } + + self._triggerEvent('failure', { + data: data, + src: url + }); + error = error || new Error('Raven send failed (no additional details provided)'); + callback && callback(error); + } + }); + }, + + _makeRequest: function(opts) { + // Auth is intentionally sent as part of query string (NOT as custom HTTP header) to avoid preflight CORS requests + var url = opts.url + '?' + urlencode(opts.auth); + + var evaluatedHeaders = null; + var evaluatedFetchParameters = {}; + + if (opts.options.headers) { + evaluatedHeaders = this._evaluateHash(opts.options.headers); + } + + if (opts.options.fetchParameters) { + evaluatedFetchParameters = this._evaluateHash(opts.options.fetchParameters); + } + + if (supportsFetch()) { + evaluatedFetchParameters.body = stringify(opts.data); + + var defaultFetchOptions = objectMerge({}, this._fetchDefaults); + var fetchOptions = objectMerge(defaultFetchOptions, evaluatedFetchParameters); + + if (evaluatedHeaders) { + fetchOptions.headers = evaluatedHeaders; + } + + return _window + .fetch(url, fetchOptions) + .then(function(response) { + if (response.ok) { + opts.onSuccess && opts.onSuccess(); + } else { + var error = new Error('Sentry error code: ' + response.status); + // It's called request only to keep compatibility with XHR interface + // and not add more redundant checks in setBackoffState method + error.request = response; + opts.onError && opts.onError(error); + } + }) + ['catch'](function() { + opts.onError && + opts.onError(new Error('Sentry error code: network unavailable')); + }); + } + + var request = _window.XMLHttpRequest && new _window.XMLHttpRequest(); + if (!request) return; + + // if browser doesn't support CORS (e.g. IE7), we are out of luck + var hasCORS = 'withCredentials' in request || typeof XDomainRequest !== 'undefined'; + + if (!hasCORS) return; + + if ('withCredentials' in request) { + request.onreadystatechange = function() { + if (request.readyState !== 4) { + return; + } else if (request.status === 200) { + opts.onSuccess && opts.onSuccess(); + } else if (opts.onError) { + var err = new Error('Sentry error code: ' + request.status); + err.request = request; + opts.onError(err); + } + }; + } else { + request = new XDomainRequest(); + // xdomainrequest cannot go http -> https (or vice versa), + // so always use protocol relative + url = url.replace(/^https?:/, ''); + + // onreadystatechange not supported by XDomainRequest + if (opts.onSuccess) { + request.onload = opts.onSuccess; + } + if (opts.onError) { + request.onerror = function() { + var err = new Error('Sentry error code: XDomainRequest'); + err.request = request; + opts.onError(err); + }; + } + } + + request.open('POST', url); + + if (evaluatedHeaders) { + each(evaluatedHeaders, function(key, value) { + request.setRequestHeader(key, value); + }); + } + + request.send(stringify(opts.data)); + }, + + _evaluateHash: function(hash) { + var evaluated = {}; + + for (var key in hash) { + if (hash.hasOwnProperty(key)) { + var value = hash[key]; + evaluated[key] = typeof value === 'function' ? value() : value; + } + } + + return evaluated; + }, + + _logDebug: function(level) { + // We allow `Raven.debug` and `Raven.config(DSN, { debug: true })` to not make backward incompatible API change + if ( + this._originalConsoleMethods[level] && + (this.debug || this._globalOptions.debug) + ) { + // In IE<10 console methods do not have their own 'apply' method + Function.prototype.apply.call( + this._originalConsoleMethods[level], + this._originalConsole, + [].slice.call(arguments, 1) + ); + } + }, + + _mergeContext: function(key, context) { + if (isUndefined(context)) { + delete this._globalContext[key]; + } else { + this._globalContext[key] = objectMerge(this._globalContext[key] || {}, context); + } + } +}; + +// Deprecations +Raven.prototype.setUser = Raven.prototype.setUserContext; +Raven.prototype.setReleaseContext = Raven.prototype.setRelease; + +module.exports = Raven; + +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"10":10,"11":11,"4":4,"5":5,"8":8,"9":9}],7:[function(_dereq_,module,exports){ +(function (global){ +/** + * Enforces a single instance of the Raven client, and the + * main entry point for Raven. If you are a consumer of the + * Raven library, you SHOULD load this file (vs raven.js). + **/ + +var RavenConstructor = _dereq_(6); + +// This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) +var _window = + typeof window !== 'undefined' + ? window + : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; +var _Raven = _window.Raven; + +var Raven = new RavenConstructor(); + +/* + * Allow multiple versions of Raven to be installed. + * Strip Raven from the global context and returns the instance. + * + * @return {Raven} + */ +Raven.noConflict = function() { + _window.Raven = _Raven; + return Raven; +}; + +Raven.afterLoad(); + +module.exports = Raven; + +/** + * DISCLAIMER: + * + * Expose `Client` constructor for cases where user want to track multiple "sub-applications" in one larger app. + * It's not meant to be used by a wide audience, so pleaaase make sure that you know what you're doing before using it. + * Accidentally calling `install` multiple times, may result in an unexpected behavior that's very hard to debug. + * + * It's called `Client' to be in-line with Raven Node implementation. + * + * HOWTO: + * + * import Raven from 'raven-js'; + * + * const someAppReporter = new Raven.Client(); + * const someOtherAppReporter = new Raven.Client(); + * + * someAppReporter.config('__DSN__', { + * ...config goes here + * }); + * + * someOtherAppReporter.config('__OTHER_DSN__', { + * ...config goes here + * }); + * + * someAppReporter.captureMessage(...); + * someAppReporter.captureException(...); + * someAppReporter.captureBreadcrumb(...); + * + * someOtherAppReporter.captureMessage(...); + * someOtherAppReporter.captureException(...); + * someOtherAppReporter.captureBreadcrumb(...); + * + * It should "just work". + */ +module.exports.Client = RavenConstructor; + +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"6":6}],8:[function(_dereq_,module,exports){ +(function (global){ +var stringify = _dereq_(10); + +var _window = + typeof window !== 'undefined' + ? window + : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; + +function isObject(what) { + return typeof what === 'object' && what !== null; +} + +// Yanked from https://git.io/vS8DV re-used under CC0 +// with some tiny modifications +function isError(value) { + switch (Object.prototype.toString.call(value)) { + case '[object Error]': + return true; + case '[object Exception]': + return true; + case '[object DOMException]': + return true; + default: + return value instanceof Error; + } +} + +function isErrorEvent(value) { + return Object.prototype.toString.call(value) === '[object ErrorEvent]'; +} + +function isDOMError(value) { + return Object.prototype.toString.call(value) === '[object DOMError]'; +} + +function isDOMException(value) { + return Object.prototype.toString.call(value) === '[object DOMException]'; +} + +function isUndefined(what) { + return what === void 0; +} + +function isFunction(what) { + return typeof what === 'function'; +} + +function isPlainObject(what) { + return Object.prototype.toString.call(what) === '[object Object]'; +} + +function isString(what) { + return Object.prototype.toString.call(what) === '[object String]'; +} + +function isArray(what) { + return Object.prototype.toString.call(what) === '[object Array]'; +} + +function isEmptyObject(what) { + if (!isPlainObject(what)) return false; + + for (var _ in what) { + if (what.hasOwnProperty(_)) { + return false; + } + } + return true; +} + +function supportsErrorEvent() { + try { + new ErrorEvent(''); // eslint-disable-line no-new + return true; + } catch (e) { + return false; + } +} + +function supportsDOMError() { + try { + new DOMError(''); // eslint-disable-line no-new + return true; + } catch (e) { + return false; + } +} + +function supportsDOMException() { + try { + new DOMException(''); // eslint-disable-line no-new + return true; + } catch (e) { + return false; + } +} + +function supportsFetch() { + if (!('fetch' in _window)) return false; + + try { + new Headers(); // eslint-disable-line no-new + new Request(''); // eslint-disable-line no-new + new Response(); // eslint-disable-line no-new + return true; + } catch (e) { + return false; + } +} + +// Despite all stars in the sky saying that Edge supports old draft syntax, aka 'never', 'always', 'origin' and 'default +// https://caniuse.com/#feat=referrer-policy +// It doesn't. And it throw exception instead of ignoring this parameter... +// REF: https://github.com/getsentry/raven-js/issues/1233 +function supportsReferrerPolicy() { + if (!supportsFetch()) return false; + + try { + // eslint-disable-next-line no-new + new Request('pickleRick', { + referrerPolicy: 'origin' + }); + return true; + } catch (e) { + return false; + } +} + +function supportsPromiseRejectionEvent() { + return typeof PromiseRejectionEvent === 'function'; +} + +function wrappedCallback(callback) { + function dataCallback(data, original) { + var normalizedData = callback(data) || data; + if (original) { + return original(normalizedData) || normalizedData; + } + return normalizedData; + } + + return dataCallback; +} + +function each(obj, callback) { + var i, j; + + if (isUndefined(obj.length)) { + for (i in obj) { + if (hasKey(obj, i)) { + callback.call(null, i, obj[i]); + } + } + } else { + j = obj.length; + if (j) { + for (i = 0; i < j; i++) { + callback.call(null, i, obj[i]); + } + } + } +} + +function objectMerge(obj1, obj2) { + if (!obj2) { + return obj1; + } + each(obj2, function(key, value) { + obj1[key] = value; + }); + return obj1; +} + +/** + * This function is only used for react-native. + * react-native freezes object that have already been sent over the + * js bridge. We need this function in order to check if the object is frozen. + * So it's ok that objectFrozen returns false if Object.isFrozen is not + * supported because it's not relevant for other "platforms". See related issue: + * https://github.com/getsentry/react-native-sentry/issues/57 + */ +function objectFrozen(obj) { + if (!Object.isFrozen) { + return false; + } + return Object.isFrozen(obj); +} + +function truncate(str, max) { + if (typeof max !== 'number') { + throw new Error('2nd argument to `truncate` function should be a number'); + } + if (typeof str !== 'string' || max === 0) { + return str; + } + return str.length <= max ? str : str.substr(0, max) + '\u2026'; +} + +/** + * hasKey, a better form of hasOwnProperty + * Example: hasKey(MainHostObject, property) === true/false + * + * @param {Object} host object to check property + * @param {string} key to check + */ +function hasKey(object, key) { + return Object.prototype.hasOwnProperty.call(object, key); +} + +function joinRegExp(patterns) { + // Combine an array of regular expressions and strings into one large regexp + // Be mad. + var sources = [], + i = 0, + len = patterns.length, + pattern; + + for (; i < len; i++) { + pattern = patterns[i]; + if (isString(pattern)) { + // If it's a string, we need to escape it + // Taken from: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions + sources.push(pattern.replace(/([.*+?^=!:${}()|\[\]\/\\])/g, '\\$1')); + } else if (pattern && pattern.source) { + // If it's a regexp already, we want to extract the source + sources.push(pattern.source); + } + // Intentionally skip other cases + } + return new RegExp(sources.join('|'), 'i'); +} + +function urlencode(o) { + var pairs = []; + each(o, function(key, value) { + pairs.push(encodeURIComponent(key) + '=' + encodeURIComponent(value)); + }); + return pairs.join('&'); +} + +// borrowed from https://tools.ietf.org/html/rfc3986#appendix-B +// intentionally using regex and not href parsing trick because React Native and other +// environments where DOM might not be available +function parseUrl(url) { + if (typeof url !== 'string') return {}; + var match = url.match(/^(([^:\/?#]+):)?(\/\/([^\/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?$/); + + // coerce to undefined values to empty string so we don't get 'undefined' + var query = match[6] || ''; + var fragment = match[8] || ''; + return { + protocol: match[2], + host: match[4], + path: match[5], + relative: match[5] + query + fragment // everything minus origin + }; +} +function uuid4() { + var crypto = _window.crypto || _window.msCrypto; + + if (!isUndefined(crypto) && crypto.getRandomValues) { + // Use window.crypto API if available + // eslint-disable-next-line no-undef + var arr = new Uint16Array(8); + crypto.getRandomValues(arr); + + // set 4 in byte 7 + arr[3] = (arr[3] & 0xfff) | 0x4000; + // set 2 most significant bits of byte 9 to '10' + arr[4] = (arr[4] & 0x3fff) | 0x8000; + + var pad = function(num) { + var v = num.toString(16); + while (v.length < 4) { + v = '0' + v; + } + return v; + }; + + return ( + pad(arr[0]) + + pad(arr[1]) + + pad(arr[2]) + + pad(arr[3]) + + pad(arr[4]) + + pad(arr[5]) + + pad(arr[6]) + + pad(arr[7]) + ); + } else { + // http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/2117523#2117523 + return 'xxxxxxxxxxxx4xxxyxxxxxxxxxxxxxxx'.replace(/[xy]/g, function(c) { + var r = (Math.random() * 16) | 0, + v = c === 'x' ? r : (r & 0x3) | 0x8; + return v.toString(16); + }); + } +} + +/** + * Given a child DOM element, returns a query-selector statement describing that + * and its ancestors + * e.g. [HTMLElement] => body > div > input#foo.btn[name=baz] + * @param elem + * @returns {string} + */ +function htmlTreeAsString(elem) { + /* eslint no-extra-parens:0*/ + var MAX_TRAVERSE_HEIGHT = 5, + MAX_OUTPUT_LEN = 80, + out = [], + height = 0, + len = 0, + separator = ' > ', + sepLength = separator.length, + nextStr; + + while (elem && height++ < MAX_TRAVERSE_HEIGHT) { + nextStr = htmlElementAsString(elem); + // bail out if + // - nextStr is the 'html' element + // - the length of the string that would be created exceeds MAX_OUTPUT_LEN + // (ignore this limit if we are on the first iteration) + if ( + nextStr === 'html' || + (height > 1 && len + out.length * sepLength + nextStr.length >= MAX_OUTPUT_LEN) + ) { + break; + } + + out.push(nextStr); + + len += nextStr.length; + elem = elem.parentNode; + } + + return out.reverse().join(separator); +} + +/** + * Returns a simple, query-selector representation of a DOM element + * e.g. [HTMLElement] => input#foo.btn[name=baz] + * @param HTMLElement + * @returns {string} + */ +function htmlElementAsString(elem) { + var out = [], + className, + classes, + key, + attr, + i; + + if (!elem || !elem.tagName) { + return ''; + } + + out.push(elem.tagName.toLowerCase()); + if (elem.id) { + out.push('#' + elem.id); + } + + className = elem.className; + if (className && isString(className)) { + classes = className.split(/\s+/); + for (i = 0; i < classes.length; i++) { + out.push('.' + classes[i]); + } + } + var attrWhitelist = ['type', 'name', 'title', 'alt']; + for (i = 0; i < attrWhitelist.length; i++) { + key = attrWhitelist[i]; + attr = elem.getAttribute(key); + if (attr) { + out.push('[' + key + '="' + attr + '"]'); + } + } + return out.join(''); +} + +/** + * Returns true if either a OR b is truthy, but not both + */ +function isOnlyOneTruthy(a, b) { + return !!(!!a ^ !!b); +} + +/** + * Returns true if both parameters are undefined + */ +function isBothUndefined(a, b) { + return isUndefined(a) && isUndefined(b); +} + +/** + * Returns true if the two input exception interfaces have the same content + */ +function isSameException(ex1, ex2) { + if (isOnlyOneTruthy(ex1, ex2)) return false; + + ex1 = ex1.values[0]; + ex2 = ex2.values[0]; + + if (ex1.type !== ex2.type || ex1.value !== ex2.value) return false; + + // in case both stacktraces are undefined, we can't decide so default to false + if (isBothUndefined(ex1.stacktrace, ex2.stacktrace)) return false; + + return isSameStacktrace(ex1.stacktrace, ex2.stacktrace); +} + +/** + * Returns true if the two input stack trace interfaces have the same content + */ +function isSameStacktrace(stack1, stack2) { + if (isOnlyOneTruthy(stack1, stack2)) return false; + + var frames1 = stack1.frames; + var frames2 = stack2.frames; + + // Exit early if frame count differs + if (frames1.length !== frames2.length) return false; + + // Iterate through every frame; bail out if anything differs + var a, b; + for (var i = 0; i < frames1.length; i++) { + a = frames1[i]; + b = frames2[i]; + if ( + a.filename !== b.filename || + a.lineno !== b.lineno || + a.colno !== b.colno || + a['function'] !== b['function'] + ) + return false; + } + return true; +} + +/** + * Polyfill a method + * @param obj object e.g. `document` + * @param name method name present on object e.g. `addEventListener` + * @param replacement replacement function + * @param track {optional} record instrumentation to an array + */ +function fill(obj, name, replacement, track) { + if (obj == null) return; + var orig = obj[name]; + obj[name] = replacement(orig); + obj[name].__raven__ = true; + obj[name].__orig__ = orig; + if (track) { + track.push([obj, name, orig]); + } +} + +/** + * Join values in array + * @param input array of values to be joined together + * @param delimiter string to be placed in-between values + * @returns {string} + */ +function safeJoin(input, delimiter) { + if (!isArray(input)) return ''; + + var output = []; + + for (var i = 0; i < input.length; i++) { + try { + output.push(String(input[i])); + } catch (e) { + output.push('[value cannot be serialized]'); + } + } + + return output.join(delimiter); +} + +// Default Node.js REPL depth +var MAX_SERIALIZE_EXCEPTION_DEPTH = 3; +// 50kB, as 100kB is max payload size, so half sounds reasonable +var MAX_SERIALIZE_EXCEPTION_SIZE = 50 * 1024; +var MAX_SERIALIZE_KEYS_LENGTH = 40; + +function utf8Length(value) { + return ~-encodeURI(value).split(/%..|./).length; +} + +function jsonSize(value) { + return utf8Length(JSON.stringify(value)); +} + +function serializeValue(value) { + if (typeof value === 'string') { + var maxLength = 40; + return truncate(value, maxLength); + } else if ( + typeof value === 'number' || + typeof value === 'boolean' || + typeof value === 'undefined' + ) { + return value; + } + + var type = Object.prototype.toString.call(value); + + // Node.js REPL notation + if (type === '[object Object]') return '[Object]'; + if (type === '[object Array]') return '[Array]'; + if (type === '[object Function]') + return value.name ? '[Function: ' + value.name + ']' : '[Function]'; + + return value; +} + +function serializeObject(value, depth) { + if (depth === 0) return serializeValue(value); + + if (isPlainObject(value)) { + return Object.keys(value).reduce(function(acc, key) { + acc[key] = serializeObject(value[key], depth - 1); + return acc; + }, {}); + } else if (Array.isArray(value)) { + return value.map(function(val) { + return serializeObject(val, depth - 1); + }); + } + + return serializeValue(value); +} + +function serializeException(ex, depth, maxSize) { + if (!isPlainObject(ex)) return ex; + + depth = typeof depth !== 'number' ? MAX_SERIALIZE_EXCEPTION_DEPTH : depth; + maxSize = typeof depth !== 'number' ? MAX_SERIALIZE_EXCEPTION_SIZE : maxSize; + + var serialized = serializeObject(ex, depth); + + if (jsonSize(stringify(serialized)) > maxSize) { + return serializeException(ex, depth - 1); + } + + return serialized; +} + +function serializeKeysForMessage(keys, maxLength) { + if (typeof keys === 'number' || typeof keys === 'string') return keys.toString(); + if (!Array.isArray(keys)) return ''; + + keys = keys.filter(function(key) { + return typeof key === 'string'; + }); + if (keys.length === 0) return '[object has no keys]'; + + maxLength = typeof maxLength !== 'number' ? MAX_SERIALIZE_KEYS_LENGTH : maxLength; + if (keys[0].length >= maxLength) return keys[0]; + + for (var usedKeys = keys.length; usedKeys > 0; usedKeys--) { + var serialized = keys.slice(0, usedKeys).join(', '); + if (serialized.length > maxLength) continue; + if (usedKeys === keys.length) return serialized; + return serialized + '\u2026'; + } + + return ''; +} + +function sanitize(input, sanitizeKeys) { + if (!isArray(sanitizeKeys) || (isArray(sanitizeKeys) && sanitizeKeys.length === 0)) + return input; + + var sanitizeRegExp = joinRegExp(sanitizeKeys); + var sanitizeMask = '********'; + var safeInput; + + try { + safeInput = JSON.parse(stringify(input)); + } catch (o_O) { + return input; + } + + function sanitizeWorker(workerInput) { + if (isArray(workerInput)) { + return workerInput.map(function(val) { + return sanitizeWorker(val); + }); + } + + if (isPlainObject(workerInput)) { + return Object.keys(workerInput).reduce(function(acc, k) { + if (sanitizeRegExp.test(k)) { + acc[k] = sanitizeMask; + } else { + acc[k] = sanitizeWorker(workerInput[k]); + } + return acc; + }, {}); + } + + return workerInput; + } + + return sanitizeWorker(safeInput); +} + +module.exports = { + isObject: isObject, + isError: isError, + isErrorEvent: isErrorEvent, + isDOMError: isDOMError, + isDOMException: isDOMException, + isUndefined: isUndefined, + isFunction: isFunction, + isPlainObject: isPlainObject, + isString: isString, + isArray: isArray, + isEmptyObject: isEmptyObject, + supportsErrorEvent: supportsErrorEvent, + supportsDOMError: supportsDOMError, + supportsDOMException: supportsDOMException, + supportsFetch: supportsFetch, + supportsReferrerPolicy: supportsReferrerPolicy, + supportsPromiseRejectionEvent: supportsPromiseRejectionEvent, + wrappedCallback: wrappedCallback, + each: each, + objectMerge: objectMerge, + truncate: truncate, + objectFrozen: objectFrozen, + hasKey: hasKey, + joinRegExp: joinRegExp, + urlencode: urlencode, + uuid4: uuid4, + htmlTreeAsString: htmlTreeAsString, + htmlElementAsString: htmlElementAsString, + isSameException: isSameException, + isSameStacktrace: isSameStacktrace, + parseUrl: parseUrl, + fill: fill, + safeJoin: safeJoin, + serializeException: serializeException, + serializeKeysForMessage: serializeKeysForMessage, + sanitize: sanitize +}; + +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"10":10}],9:[function(_dereq_,module,exports){ +(function (global){ +var utils = _dereq_(8); + +/* + TraceKit - Cross brower stack traces + + This was originally forked from github.com/occ/TraceKit, but has since been + largely re-written and is now maintained as part of raven-js. Tests for + this are in test/vendor. + + MIT license +*/ + +var TraceKit = { + collectWindowErrors: true, + debug: false +}; + +// This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) +var _window = + typeof window !== 'undefined' + ? window + : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; + +// global reference to slice +var _slice = [].slice; +var UNKNOWN_FUNCTION = '?'; + +// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error#Error_types +var ERROR_TYPES_RE = /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/; + +function getLocationHref() { + if (typeof document === 'undefined' || document.location == null) return ''; + return document.location.href; +} + +function getLocationOrigin() { + if (typeof document === 'undefined' || document.location == null) return ''; + + // Oh dear IE10... + if (!document.location.origin) { + document.location.origin = + document.location.protocol + + '//' + + document.location.hostname + + (document.location.port ? ':' + document.location.port : ''); + } + + return document.location.origin; +} + +/** + * TraceKit.report: cross-browser processing of unhandled exceptions + * + * Syntax: + * TraceKit.report.subscribe(function(stackInfo) { ... }) + * TraceKit.report.unsubscribe(function(stackInfo) { ... }) + * TraceKit.report(exception) + * try { ...code... } catch(ex) { TraceKit.report(ex); } + * + * Supports: + * - Firefox: full stack trace with line numbers, plus column number + * on top frame; column number is not guaranteed + * - Opera: full stack trace with line and column numbers + * - Chrome: full stack trace with line and column numbers + * - Safari: line and column number for the top frame only; some frames + * may be missing, and column number is not guaranteed + * - IE: line and column number for the top frame only; some frames + * may be missing, and column number is not guaranteed + * + * In theory, TraceKit should work on all of the following versions: + * - IE5.5+ (only 8.0 tested) + * - Firefox 0.9+ (only 3.5+ tested) + * - Opera 7+ (only 10.50 tested; versions 9 and earlier may require + * Exceptions Have Stacktrace to be enabled in opera:config) + * - Safari 3+ (only 4+ tested) + * - Chrome 1+ (only 5+ tested) + * - Konqueror 3.5+ (untested) + * + * Requires TraceKit.computeStackTrace. + * + * Tries to catch all unhandled exceptions and report them to the + * subscribed handlers. Please note that TraceKit.report will rethrow the + * exception. This is REQUIRED in order to get a useful stack trace in IE. + * If the exception does not reach the top of the browser, you will only + * get a stack trace from the point where TraceKit.report was called. + * + * Handlers receive a stackInfo object as described in the + * TraceKit.computeStackTrace docs. + */ +TraceKit.report = (function reportModuleWrapper() { + var handlers = [], + lastArgs = null, + lastException = null, + lastExceptionStack = null; + + /** + * Add a crash handler. + * @param {Function} handler + */ + function subscribe(handler) { + installGlobalHandler(); + handlers.push(handler); + } + + /** + * Remove a crash handler. + * @param {Function} handler + */ + function unsubscribe(handler) { + for (var i = handlers.length - 1; i >= 0; --i) { + if (handlers[i] === handler) { + handlers.splice(i, 1); + } + } + } + + /** + * Remove all crash handlers. + */ + function unsubscribeAll() { + uninstallGlobalHandler(); + handlers = []; + } + + /** + * Dispatch stack information to all handlers. + * @param {Object.} stack + */ + function notifyHandlers(stack, isWindowError) { + var exception = null; + if (isWindowError && !TraceKit.collectWindowErrors) { + return; + } + for (var i in handlers) { + if (handlers.hasOwnProperty(i)) { + try { + handlers[i].apply(null, [stack].concat(_slice.call(arguments, 2))); + } catch (inner) { + exception = inner; + } + } + } + + if (exception) { + throw exception; + } + } + + var _oldOnerrorHandler, _onErrorHandlerInstalled; + + /** + * Ensures all global unhandled exceptions are recorded. + * Supported by Gecko and IE. + * @param {string} msg Error message. + * @param {string} url URL of script that generated the exception. + * @param {(number|string)} lineNo The line number at which the error + * occurred. + * @param {?(number|string)} colNo The column number at which the error + * occurred. + * @param {?Error} ex The actual Error object. + */ + function traceKitWindowOnError(msg, url, lineNo, colNo, ex) { + var stack = null; + // If 'ex' is ErrorEvent, get real Error from inside + var exception = utils.isErrorEvent(ex) ? ex.error : ex; + // If 'msg' is ErrorEvent, get real message from inside + var message = utils.isErrorEvent(msg) ? msg.message : msg; + + if (lastExceptionStack) { + TraceKit.computeStackTrace.augmentStackTraceWithInitialElement( + lastExceptionStack, + url, + lineNo, + message + ); + processLastException(); + } else if (exception && utils.isError(exception)) { + // non-string `exception` arg; attempt to extract stack trace + + // New chrome and blink send along a real error object + // Let's just report that like a normal error. + // See: https://mikewest.org/2013/08/debugging-runtime-errors-with-window-onerror + stack = TraceKit.computeStackTrace(exception); + notifyHandlers(stack, true); + } else { + var location = { + url: url, + line: lineNo, + column: colNo + }; + + var name = undefined; + var groups; + + if ({}.toString.call(message) === '[object String]') { + var groups = message.match(ERROR_TYPES_RE); + if (groups) { + name = groups[1]; + message = groups[2]; + } + } + + location.func = UNKNOWN_FUNCTION; + + stack = { + name: name, + message: message, + url: getLocationHref(), + stack: [location] + }; + notifyHandlers(stack, true); + } + + if (_oldOnerrorHandler) { + return _oldOnerrorHandler.apply(this, arguments); + } + + return false; + } + + function installGlobalHandler() { + if (_onErrorHandlerInstalled) { + return; + } + _oldOnerrorHandler = _window.onerror; + _window.onerror = traceKitWindowOnError; + _onErrorHandlerInstalled = true; + } + + function uninstallGlobalHandler() { + if (!_onErrorHandlerInstalled) { + return; + } + _window.onerror = _oldOnerrorHandler; + _onErrorHandlerInstalled = false; + _oldOnerrorHandler = undefined; + } + + function processLastException() { + var _lastExceptionStack = lastExceptionStack, + _lastArgs = lastArgs; + lastArgs = null; + lastExceptionStack = null; + lastException = null; + notifyHandlers.apply(null, [_lastExceptionStack, false].concat(_lastArgs)); + } + + /** + * Reports an unhandled Error to TraceKit. + * @param {Error} ex + * @param {?boolean} rethrow If false, do not re-throw the exception. + * Only used for window.onerror to not cause an infinite loop of + * rethrowing. + */ + function report(ex, rethrow) { + var args = _slice.call(arguments, 1); + if (lastExceptionStack) { + if (lastException === ex) { + return; // already caught by an inner catch block, ignore + } else { + processLastException(); + } + } + + var stack = TraceKit.computeStackTrace(ex); + lastExceptionStack = stack; + lastException = ex; + lastArgs = args; + + // If the stack trace is incomplete, wait for 2 seconds for + // slow slow IE to see if onerror occurs or not before reporting + // this exception; otherwise, we will end up with an incomplete + // stack trace + setTimeout(function() { + if (lastException === ex) { + processLastException(); + } + }, stack.incomplete ? 2000 : 0); + + if (rethrow !== false) { + throw ex; // re-throw to propagate to the top level (and cause window.onerror) + } + } + + report.subscribe = subscribe; + report.unsubscribe = unsubscribe; + report.uninstall = unsubscribeAll; + return report; +})(); + +/** + * TraceKit.computeStackTrace: cross-browser stack traces in JavaScript + * + * Syntax: + * s = TraceKit.computeStackTrace(exception) // consider using TraceKit.report instead (see below) + * Returns: + * s.name - exception name + * s.message - exception message + * s.stack[i].url - JavaScript or HTML file URL + * s.stack[i].func - function name, or empty for anonymous functions (if guessing did not work) + * s.stack[i].args - arguments passed to the function, if known + * s.stack[i].line - line number, if known + * s.stack[i].column - column number, if known + * + * Supports: + * - Firefox: full stack trace with line numbers and unreliable column + * number on top frame + * - Opera 10: full stack trace with line and column numbers + * - Opera 9-: full stack trace with line numbers + * - Chrome: full stack trace with line and column numbers + * - Safari: line and column number for the topmost stacktrace element + * only + * - IE: no line numbers whatsoever + * + * Tries to guess names of anonymous functions by looking for assignments + * in the source code. In IE and Safari, we have to guess source file names + * by searching for function bodies inside all page scripts. This will not + * work for scripts that are loaded cross-domain. + * Here be dragons: some function names may be guessed incorrectly, and + * duplicate functions may be mismatched. + * + * TraceKit.computeStackTrace should only be used for tracing purposes. + * Logging of unhandled exceptions should be done with TraceKit.report, + * which builds on top of TraceKit.computeStackTrace and provides better + * IE support by utilizing the window.onerror event to retrieve information + * about the top of the stack. + * + * Note: In IE and Safari, no stack trace is recorded on the Error object, + * so computeStackTrace instead walks its *own* chain of callers. + * This means that: + * * in Safari, some methods may be missing from the stack trace; + * * in IE, the topmost function in the stack trace will always be the + * caller of computeStackTrace. + * + * This is okay for tracing (because you are likely to be calling + * computeStackTrace from the function you want to be the topmost element + * of the stack trace anyway), but not okay for logging unhandled + * exceptions (because your catch block will likely be far away from the + * inner function that actually caused the exception). + * + */ +TraceKit.computeStackTrace = (function computeStackTraceWrapper() { + // Contents of Exception in various browsers. + // + // SAFARI: + // ex.message = Can't find variable: qq + // ex.line = 59 + // ex.sourceId = 580238192 + // ex.sourceURL = http://... + // ex.expressionBeginOffset = 96 + // ex.expressionCaretOffset = 98 + // ex.expressionEndOffset = 98 + // ex.name = ReferenceError + // + // FIREFOX: + // ex.message = qq is not defined + // ex.fileName = http://... + // ex.lineNumber = 59 + // ex.columnNumber = 69 + // ex.stack = ...stack trace... (see the example below) + // ex.name = ReferenceError + // + // CHROME: + // ex.message = qq is not defined + // ex.name = ReferenceError + // ex.type = not_defined + // ex.arguments = ['aa'] + // ex.stack = ...stack trace... + // + // INTERNET EXPLORER: + // ex.message = ... + // ex.name = ReferenceError + // + // OPERA: + // ex.message = ...message... (see the example below) + // ex.name = ReferenceError + // ex.opera#sourceloc = 11 (pretty much useless, duplicates the info in ex.message) + // ex.stacktrace = n/a; see 'opera:config#UserPrefs|Exceptions Have Stacktrace' + + /** + * Computes stack trace information from the stack property. + * Chrome and Gecko use this property. + * @param {Error} ex + * @return {?Object.} Stack trace information. + */ + function computeStackTraceFromStackProp(ex) { + if (typeof ex.stack === 'undefined' || !ex.stack) return; + + var chrome = /^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i; + var winjs = /^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i; + // NOTE: blob urls are now supposed to always have an origin, therefore it's format + // which is `blob:http://url/path/with-some-uuid`, is matched by `blob.*?:\/` as well + var gecko = /^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i; + // Used to additionally parse URL/line/column from eval frames + var geckoEval = /(\S+) line (\d+)(?: > eval line \d+)* > eval/i; + var chromeEval = /\((\S*)(?::(\d+))(?::(\d+))\)/; + var lines = ex.stack.split('\n'); + var stack = []; + var submatch; + var parts; + var element; + var reference = /^(.*) is undefined$/.exec(ex.message); + + for (var i = 0, j = lines.length; i < j; ++i) { + if ((parts = chrome.exec(lines[i]))) { + var isNative = parts[2] && parts[2].indexOf('native') === 0; // start of line + var isEval = parts[2] && parts[2].indexOf('eval') === 0; // start of line + if (isEval && (submatch = chromeEval.exec(parts[2]))) { + // throw out eval line/column and use top-most line/column number + parts[2] = submatch[1]; // url + parts[3] = submatch[2]; // line + parts[4] = submatch[3]; // column + } + element = { + url: !isNative ? parts[2] : null, + func: parts[1] || UNKNOWN_FUNCTION, + args: isNative ? [parts[2]] : [], + line: parts[3] ? +parts[3] : null, + column: parts[4] ? +parts[4] : null + }; + } else if ((parts = winjs.exec(lines[i]))) { + element = { + url: parts[2], + func: parts[1] || UNKNOWN_FUNCTION, + args: [], + line: +parts[3], + column: parts[4] ? +parts[4] : null + }; + } else if ((parts = gecko.exec(lines[i]))) { + var isEval = parts[3] && parts[3].indexOf(' > eval') > -1; + if (isEval && (submatch = geckoEval.exec(parts[3]))) { + // throw out eval line/column and use top-most line number + parts[3] = submatch[1]; + parts[4] = submatch[2]; + parts[5] = null; // no column when eval + } else if (i === 0 && !parts[5] && typeof ex.columnNumber !== 'undefined') { + // FireFox uses this awesome columnNumber property for its top frame + // Also note, Firefox's column number is 0-based and everything else expects 1-based, + // so adding 1 + // NOTE: this hack doesn't work if top-most frame is eval + stack[0].column = ex.columnNumber + 1; + } + element = { + url: parts[3], + func: parts[1] || UNKNOWN_FUNCTION, + args: parts[2] ? parts[2].split(',') : [], + line: parts[4] ? +parts[4] : null, + column: parts[5] ? +parts[5] : null + }; + } else { + continue; + } + + if (!element.func && element.line) { + element.func = UNKNOWN_FUNCTION; + } + + if (element.url && element.url.substr(0, 5) === 'blob:') { + // Special case for handling JavaScript loaded into a blob. + // We use a synchronous AJAX request here as a blob is already in + // memory - it's not making a network request. This will generate a warning + // in the browser console, but there has already been an error so that's not + // that much of an issue. + var xhr = new XMLHttpRequest(); + xhr.open('GET', element.url, false); + xhr.send(null); + + // If we failed to download the source, skip this patch + if (xhr.status === 200) { + var source = xhr.responseText || ''; + + // We trim the source down to the last 300 characters as sourceMappingURL is always at the end of the file. + // Why 300? To be in line with: https://github.com/getsentry/sentry/blob/4af29e8f2350e20c28a6933354e4f42437b4ba42/src/sentry/lang/javascript/processor.py#L164-L175 + source = source.slice(-300); + + // Now we dig out the source map URL + var sourceMaps = source.match(/\/\/# sourceMappingURL=(.*)$/); + + // If we don't find a source map comment or we find more than one, continue on to the next element. + if (sourceMaps) { + var sourceMapAddress = sourceMaps[1]; + + // Now we check to see if it's a relative URL. + // If it is, convert it to an absolute one. + if (sourceMapAddress.charAt(0) === '~') { + sourceMapAddress = getLocationOrigin() + sourceMapAddress.slice(1); + } + + // Now we strip the '.map' off of the end of the URL and update the + // element so that Sentry can match the map to the blob. + element.url = sourceMapAddress.slice(0, -4); + } + } + } + + stack.push(element); + } + + if (!stack.length) { + return null; + } + + return { + name: ex.name, + message: ex.message, + url: getLocationHref(), + stack: stack + }; + } + + /** + * Adds information about the first frame to incomplete stack traces. + * Safari and IE require this to get complete data on the first frame. + * @param {Object.} stackInfo Stack trace information from + * one of the compute* methods. + * @param {string} url The URL of the script that caused an error. + * @param {(number|string)} lineNo The line number of the script that + * caused an error. + * @param {string=} message The error generated by the browser, which + * hopefully contains the name of the object that caused the error. + * @return {boolean} Whether or not the stack information was + * augmented. + */ + function augmentStackTraceWithInitialElement(stackInfo, url, lineNo, message) { + var initial = { + url: url, + line: lineNo + }; + + if (initial.url && initial.line) { + stackInfo.incomplete = false; + + if (!initial.func) { + initial.func = UNKNOWN_FUNCTION; + } + + if (stackInfo.stack.length > 0) { + if (stackInfo.stack[0].url === initial.url) { + if (stackInfo.stack[0].line === initial.line) { + return false; // already in stack trace + } else if ( + !stackInfo.stack[0].line && + stackInfo.stack[0].func === initial.func + ) { + stackInfo.stack[0].line = initial.line; + return false; + } + } + } + + stackInfo.stack.unshift(initial); + stackInfo.partial = true; + return true; + } else { + stackInfo.incomplete = true; + } + + return false; + } + + /** + * Computes stack trace information by walking the arguments.caller + * chain at the time the exception occurred. This will cause earlier + * frames to be missed but is the only way to get any stack trace in + * Safari and IE. The top frame is restored by + * {@link augmentStackTraceWithInitialElement}. + * @param {Error} ex + * @return {?Object.} Stack trace information. + */ + function computeStackTraceByWalkingCallerChain(ex, depth) { + var functionName = /function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i, + stack = [], + funcs = {}, + recursion = false, + parts, + item, + source; + + for ( + var curr = computeStackTraceByWalkingCallerChain.caller; + curr && !recursion; + curr = curr.caller + ) { + if (curr === computeStackTrace || curr === TraceKit.report) { + // console.log('skipping internal function'); + continue; + } + + item = { + url: null, + func: UNKNOWN_FUNCTION, + line: null, + column: null + }; + + if (curr.name) { + item.func = curr.name; + } else if ((parts = functionName.exec(curr.toString()))) { + item.func = parts[1]; + } + + if (typeof item.func === 'undefined') { + try { + item.func = parts.input.substring(0, parts.input.indexOf('{')); + } catch (e) {} + } + + if (funcs['' + curr]) { + recursion = true; + } else { + funcs['' + curr] = true; + } + + stack.push(item); + } + + if (depth) { + // console.log('depth is ' + depth); + // console.log('stack is ' + stack.length); + stack.splice(0, depth); + } + + var result = { + name: ex.name, + message: ex.message, + url: getLocationHref(), + stack: stack + }; + augmentStackTraceWithInitialElement( + result, + ex.sourceURL || ex.fileName, + ex.line || ex.lineNumber, + ex.message || ex.description + ); + return result; + } + + /** + * Computes a stack trace for an exception. + * @param {Error} ex + * @param {(string|number)=} depth + */ + function computeStackTrace(ex, depth) { + var stack = null; + depth = depth == null ? 0 : +depth; + + try { + stack = computeStackTraceFromStackProp(ex); + if (stack) { + return stack; + } + } catch (e) { + if (TraceKit.debug) { + throw e; + } + } + + try { + stack = computeStackTraceByWalkingCallerChain(ex, depth + 1); + if (stack) { + return stack; + } + } catch (e) { + if (TraceKit.debug) { + throw e; + } + } + return { + name: ex.name, + message: ex.message, + url: getLocationHref() + }; + } + + computeStackTrace.augmentStackTraceWithInitialElement = augmentStackTraceWithInitialElement; + computeStackTrace.computeStackTraceFromStackProp = computeStackTraceFromStackProp; + + return computeStackTrace; +})(); + +module.exports = TraceKit; + +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"8":8}],10:[function(_dereq_,module,exports){ +/* + json-stringify-safe + Like JSON.stringify, but doesn't throw on circular references. + + Originally forked from https://github.com/isaacs/json-stringify-safe + version 5.0.1 on 3/8/2017 and modified to handle Errors serialization + and IE8 compatibility. Tests for this are in test/vendor. + + ISC license: https://github.com/isaacs/json-stringify-safe/blob/master/LICENSE +*/ + +exports = module.exports = stringify; +exports.getSerialize = serializer; + +function indexOf(haystack, needle) { + for (var i = 0; i < haystack.length; ++i) { + if (haystack[i] === needle) return i; + } + return -1; +} + +function stringify(obj, replacer, spaces, cycleReplacer) { + return JSON.stringify(obj, serializer(replacer, cycleReplacer), spaces); +} + +// https://github.com/ftlabs/js-abbreviate/blob/fa709e5f139e7770a71827b1893f22418097fbda/index.js#L95-L106 +function stringifyError(value) { + var err = { + // These properties are implemented as magical getters and don't show up in for in + stack: value.stack, + message: value.message, + name: value.name + }; + + for (var i in value) { + if (Object.prototype.hasOwnProperty.call(value, i)) { + err[i] = value[i]; + } + } + + return err; +} + +function serializer(replacer, cycleReplacer) { + var stack = []; + var keys = []; + + if (cycleReplacer == null) { + cycleReplacer = function(key, value) { + if (stack[0] === value) { + return '[Circular ~]'; + } + return '[Circular ~.' + keys.slice(0, indexOf(stack, value)).join('.') + ']'; + }; + } + + return function(key, value) { + if (stack.length > 0) { + var thisPos = indexOf(stack, this); + ~thisPos ? stack.splice(thisPos + 1) : stack.push(this); + ~thisPos ? keys.splice(thisPos, Infinity, key) : keys.push(key); + + if (~indexOf(stack, value)) { + value = cycleReplacer.call(this, key, value); + } + } else { + stack.push(value); + } + + return replacer == null + ? value instanceof Error ? stringifyError(value) : value + : replacer.call(this, key, value); + }; +} + +},{}],11:[function(_dereq_,module,exports){ +/* + * JavaScript MD5 + * https://github.com/blueimp/JavaScript-MD5 + * + * Copyright 2011, Sebastian Tschan + * https://blueimp.net + * + * Licensed under the MIT license: + * https://opensource.org/licenses/MIT + * + * Based on + * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message + * Digest Algorithm, as defined in RFC 1321. + * Version 2.2 Copyright (C) Paul Johnston 1999 - 2009 + * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet + * Distributed under the BSD License + * See http://pajhome.org.uk/crypt/md5 for more info. + */ + +/* +* Add integers, wrapping at 2^32. This uses 16-bit operations internally +* to work around bugs in some JS interpreters. +*/ +function safeAdd(x, y) { + var lsw = (x & 0xffff) + (y & 0xffff); + var msw = (x >> 16) + (y >> 16) + (lsw >> 16); + return (msw << 16) | (lsw & 0xffff); +} + +/* +* Bitwise rotate a 32-bit number to the left. +*/ +function bitRotateLeft(num, cnt) { + return (num << cnt) | (num >>> (32 - cnt)); +} + +/* +* These functions implement the four basic operations the algorithm uses. +*/ +function md5cmn(q, a, b, x, s, t) { + return safeAdd(bitRotateLeft(safeAdd(safeAdd(a, q), safeAdd(x, t)), s), b); +} +function md5ff(a, b, c, d, x, s, t) { + return md5cmn((b & c) | (~b & d), a, b, x, s, t); +} +function md5gg(a, b, c, d, x, s, t) { + return md5cmn((b & d) | (c & ~d), a, b, x, s, t); +} +function md5hh(a, b, c, d, x, s, t) { + return md5cmn(b ^ c ^ d, a, b, x, s, t); +} +function md5ii(a, b, c, d, x, s, t) { + return md5cmn(c ^ (b | ~d), a, b, x, s, t); +} + +/* +* Calculate the MD5 of an array of little-endian words, and a bit length. +*/ +function binlMD5(x, len) { + /* append padding */ + x[len >> 5] |= 0x80 << (len % 32); + x[(((len + 64) >>> 9) << 4) + 14] = len; + + var i; + var olda; + var oldb; + var oldc; + var oldd; + var a = 1732584193; + var b = -271733879; + var c = -1732584194; + var d = 271733878; + + for (i = 0; i < x.length; i += 16) { + olda = a; + oldb = b; + oldc = c; + oldd = d; + + a = md5ff(a, b, c, d, x[i], 7, -680876936); + d = md5ff(d, a, b, c, x[i + 1], 12, -389564586); + c = md5ff(c, d, a, b, x[i + 2], 17, 606105819); + b = md5ff(b, c, d, a, x[i + 3], 22, -1044525330); + a = md5ff(a, b, c, d, x[i + 4], 7, -176418897); + d = md5ff(d, a, b, c, x[i + 5], 12, 1200080426); + c = md5ff(c, d, a, b, x[i + 6], 17, -1473231341); + b = md5ff(b, c, d, a, x[i + 7], 22, -45705983); + a = md5ff(a, b, c, d, x[i + 8], 7, 1770035416); + d = md5ff(d, a, b, c, x[i + 9], 12, -1958414417); + c = md5ff(c, d, a, b, x[i + 10], 17, -42063); + b = md5ff(b, c, d, a, x[i + 11], 22, -1990404162); + a = md5ff(a, b, c, d, x[i + 12], 7, 1804603682); + d = md5ff(d, a, b, c, x[i + 13], 12, -40341101); + c = md5ff(c, d, a, b, x[i + 14], 17, -1502002290); + b = md5ff(b, c, d, a, x[i + 15], 22, 1236535329); + + a = md5gg(a, b, c, d, x[i + 1], 5, -165796510); + d = md5gg(d, a, b, c, x[i + 6], 9, -1069501632); + c = md5gg(c, d, a, b, x[i + 11], 14, 643717713); + b = md5gg(b, c, d, a, x[i], 20, -373897302); + a = md5gg(a, b, c, d, x[i + 5], 5, -701558691); + d = md5gg(d, a, b, c, x[i + 10], 9, 38016083); + c = md5gg(c, d, a, b, x[i + 15], 14, -660478335); + b = md5gg(b, c, d, a, x[i + 4], 20, -405537848); + a = md5gg(a, b, c, d, x[i + 9], 5, 568446438); + d = md5gg(d, a, b, c, x[i + 14], 9, -1019803690); + c = md5gg(c, d, a, b, x[i + 3], 14, -187363961); + b = md5gg(b, c, d, a, x[i + 8], 20, 1163531501); + a = md5gg(a, b, c, d, x[i + 13], 5, -1444681467); + d = md5gg(d, a, b, c, x[i + 2], 9, -51403784); + c = md5gg(c, d, a, b, x[i + 7], 14, 1735328473); + b = md5gg(b, c, d, a, x[i + 12], 20, -1926607734); + + a = md5hh(a, b, c, d, x[i + 5], 4, -378558); + d = md5hh(d, a, b, c, x[i + 8], 11, -2022574463); + c = md5hh(c, d, a, b, x[i + 11], 16, 1839030562); + b = md5hh(b, c, d, a, x[i + 14], 23, -35309556); + a = md5hh(a, b, c, d, x[i + 1], 4, -1530992060); + d = md5hh(d, a, b, c, x[i + 4], 11, 1272893353); + c = md5hh(c, d, a, b, x[i + 7], 16, -155497632); + b = md5hh(b, c, d, a, x[i + 10], 23, -1094730640); + a = md5hh(a, b, c, d, x[i + 13], 4, 681279174); + d = md5hh(d, a, b, c, x[i], 11, -358537222); + c = md5hh(c, d, a, b, x[i + 3], 16, -722521979); + b = md5hh(b, c, d, a, x[i + 6], 23, 76029189); + a = md5hh(a, b, c, d, x[i + 9], 4, -640364487); + d = md5hh(d, a, b, c, x[i + 12], 11, -421815835); + c = md5hh(c, d, a, b, x[i + 15], 16, 530742520); + b = md5hh(b, c, d, a, x[i + 2], 23, -995338651); + + a = md5ii(a, b, c, d, x[i], 6, -198630844); + d = md5ii(d, a, b, c, x[i + 7], 10, 1126891415); + c = md5ii(c, d, a, b, x[i + 14], 15, -1416354905); + b = md5ii(b, c, d, a, x[i + 5], 21, -57434055); + a = md5ii(a, b, c, d, x[i + 12], 6, 1700485571); + d = md5ii(d, a, b, c, x[i + 3], 10, -1894986606); + c = md5ii(c, d, a, b, x[i + 10], 15, -1051523); + b = md5ii(b, c, d, a, x[i + 1], 21, -2054922799); + a = md5ii(a, b, c, d, x[i + 8], 6, 1873313359); + d = md5ii(d, a, b, c, x[i + 15], 10, -30611744); + c = md5ii(c, d, a, b, x[i + 6], 15, -1560198380); + b = md5ii(b, c, d, a, x[i + 13], 21, 1309151649); + a = md5ii(a, b, c, d, x[i + 4], 6, -145523070); + d = md5ii(d, a, b, c, x[i + 11], 10, -1120210379); + c = md5ii(c, d, a, b, x[i + 2], 15, 718787259); + b = md5ii(b, c, d, a, x[i + 9], 21, -343485551); + + a = safeAdd(a, olda); + b = safeAdd(b, oldb); + c = safeAdd(c, oldc); + d = safeAdd(d, oldd); + } + return [a, b, c, d]; +} + +/* +* Convert an array of little-endian words to a string +*/ +function binl2rstr(input) { + var i; + var output = ''; + var length32 = input.length * 32; + for (i = 0; i < length32; i += 8) { + output += String.fromCharCode((input[i >> 5] >>> (i % 32)) & 0xff); + } + return output; +} + +/* +* Convert a raw string to an array of little-endian words +* Characters >255 have their high-byte silently ignored. +*/ +function rstr2binl(input) { + var i; + var output = []; + output[(input.length >> 2) - 1] = undefined; + for (i = 0; i < output.length; i += 1) { + output[i] = 0; + } + var length8 = input.length * 8; + for (i = 0; i < length8; i += 8) { + output[i >> 5] |= (input.charCodeAt(i / 8) & 0xff) << (i % 32); + } + return output; +} + +/* +* Calculate the MD5 of a raw string +*/ +function rstrMD5(s) { + return binl2rstr(binlMD5(rstr2binl(s), s.length * 8)); +} + +/* +* Calculate the HMAC-MD5, of a key and some data (raw strings) +*/ +function rstrHMACMD5(key, data) { + var i; + var bkey = rstr2binl(key); + var ipad = []; + var opad = []; + var hash; + ipad[15] = opad[15] = undefined; + if (bkey.length > 16) { + bkey = binlMD5(bkey, key.length * 8); + } + for (i = 0; i < 16; i += 1) { + ipad[i] = bkey[i] ^ 0x36363636; + opad[i] = bkey[i] ^ 0x5c5c5c5c; + } + hash = binlMD5(ipad.concat(rstr2binl(data)), 512 + data.length * 8); + return binl2rstr(binlMD5(opad.concat(hash), 512 + 128)); +} + +/* +* Convert a raw string to a hex string +*/ +function rstr2hex(input) { + var hexTab = '0123456789abcdef'; + var output = ''; + var x; + var i; + for (i = 0; i < input.length; i += 1) { + x = input.charCodeAt(i); + output += hexTab.charAt((x >>> 4) & 0x0f) + hexTab.charAt(x & 0x0f); + } + return output; +} + +/* +* Encode a string as utf-8 +*/ +function str2rstrUTF8(input) { + return unescape(encodeURIComponent(input)); +} + +/* +* Take string arguments and return either raw or hex encoded strings +*/ +function rawMD5(s) { + return rstrMD5(str2rstrUTF8(s)); +} +function hexMD5(s) { + return rstr2hex(rawMD5(s)); +} +function rawHMACMD5(k, d) { + return rstrHMACMD5(str2rstrUTF8(k), str2rstrUTF8(d)); +} +function hexHMACMD5(k, d) { + return rstr2hex(rawHMACMD5(k, d)); +} + +function md5(string, key, raw) { + if (!key) { + if (!raw) { + return hexMD5(string); + } + return rawMD5(string); + } + if (!raw) { + return hexHMACMD5(key, string); + } + return rawHMACMD5(key, string); +} + +module.exports = md5; + +},{}]},{},[7,1,2,3])(7) +}); \ No newline at end of file diff --git a/packages/raven-js/dist/angular,console,ember/raven.min.js b/packages/raven-js/dist/angular,console,ember/raven.min.js new file mode 100644 index 000000000000..0553c597f03f --- /dev/null +++ b/packages/raven-js/dist/angular,console,ember/raven.min.js @@ -0,0 +1,4 @@ +/*! Raven.js 3.25.2 (30b6d4e) | github.com/getsentry/raven-js */ +!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.Raven=a()}}(function(){return function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};b[g][0].call(k.exports,function(a){var c=b[g][1][a];return e(c?c:a)},k,k.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;gthis.l.maxBreadcrumbs&&this.v.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.s.push([a,b]),this.o&&this.G(),this},setUserContext:function(a){return this.k.user=a,this},setExtraContext:function(a){return this.$("extra",a),this},setTagsContext:function(a){return this.$("tags",a),this},clearContext:function(){return this.k={},this},getContext:function(){return JSON.parse(h(this.k))},setEnvironment:function(a){return this.l.environment=a,this},setRelease:function(a){return this.l.release=a,this},setDataCallback:function(a){var b=this.l.dataCallback;return this.l.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.l.breadcrumbCallback;return this.l.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.l.shouldSendCallback;return this.l.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.l.transport=a,this},lastException:function(){return this.e},lastEventId:function(){return this.g},isSetup:function(){return!!this.b&&(!!this.h||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.A("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=R.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(S){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.I;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.k.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.K(this.H(c)),h=S.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(S.head||S.body).appendChild(h)}},M:function(){var a=this;this.n+=1,setTimeout(function(){a.n-=1})},_:function(a,b){var c,d;if(this.c){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),S.createEvent?(c=S.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=S.createEventObject(),c.eventType=a);for(d in b)A(b,d)&&(c[d]=b[d]);if(S.createEvent)S.dispatchEvent(c);else try{S.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},aa:function(a){var b=this;return function(c){if(b.ba=null,b.w!==c){b.w=c;var d;try{d=E(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ca:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.ba;g||a.aa("input")(c),clearTimeout(g),a.ba=setTimeout(function(){a.ba=null},b)}}},da:function(a,b){var c=H(this.x.href),d=H(b),e=H(a);this.y=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},D:function(){var a=this;a.ea=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.N?a.ea.apply(this.P,arguments):a.ea.apply(this,arguments)}},R:function(){this.ea&&(Function.prototype.toString=this.ea)},E:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.da(b.y,c+""),a.apply(this,arguments)}};I(R.history,"pushState",j,d),I(R.history,"replaceState",j,d)}if(c.console&&"console"in R&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};w(["debug","info","warn","error","log"],function(a,b){O(console,b,k)})}},S:function(){for(var a;this.u.length;){a=this.u.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},T:function(){for(var a in this.r)this.q[a]=this.r[a]},G:function(){var a=this;w(this.s,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},H:function(a){var b=Q.exec(a),c={},d=7;try{for(;d--;)c[P[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.l.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},K:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},B:function(){this.n||this.W.apply(this,arguments)},W:function(a,b){var c=this.Y(a,b);this._("handle",{stackInfo:a,options:b}),this.ga(a.name,a.message,a.url,a.lineno,c,b)},Y:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(w(a.stack,function(b,e){var f=c.ha(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.v,0)}),this.k.user&&(a.user=this.k.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),a=this.qa(a),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||v(a[b]))&&delete a[b]}),s(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!v(a)&&(!s(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.na()?void this.A("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function F(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&l(b))for(c=b.split(/\s+/),f=0;fc?Q(a,b-1):d}function R(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?X:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function S(a,b){function c(a){return m(a)?a.map(function(a){return c(a)}):k(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!m(b)||m(b)&&0===b.length)return a;var d,e=A(b),f="********";try{d=JSON.parse(T(a))}catch(g){return a}return c(d)}var T=a(10),U="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},V=3,W=51200,X=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isDOMError:g,isDOMException:h,isUndefined:i,isFunction:j,isPlainObject:k,isString:l,isArray:m,isEmptyObject:n,supportsErrorEvent:o,supportsDOMError:p,supportsDOMException:q,supportsFetch:r,supportsReferrerPolicy:s,supportsPromiseRejectionEvent:t,wrappedCallback:u,each:v,objectMerge:w,truncate:y,objectFrozen:x,hasKey:z,joinRegExp:A,urlencode:B,uuid4:D,htmlTreeAsString:E,htmlElementAsString:F,isSameException:I,isSameStacktrace:J,parseUrl:C,fill:K,safeJoin:L,serializeException:Q,serializeKeysForMessage:R,sanitize:S}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{10:10}],9:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}function e(){return"undefined"==typeof document||null==document.location?"":(document.location.origin||(document.location.origin=document.location.protocol+"//"+document.location.hostname+(document.location.port?":"+document.location.port:"")),document.location.origin)}var f=a(8),g={collectWindowErrors:!0,debug:!1},h="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},i=[].slice,j="?",k=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;g.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function e(a,b){var c=null;if(!b||g.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(i.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,h,i){var l=null,m=f.isErrorEvent(i)?i.error:i,n=f.isErrorEvent(a)?a.message:a;if(v)g.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&f.isError(m))l=g.computeStackTrace(m),e(l,!0);else{var p,r={url:b,line:c,column:h},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(k);p&&(s=p[1],n=p[2])}r.func=j,l={name:s,message:n,url:d(),stack:[r]},e(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=h.onerror,h.onerror=l,r=!0)}function n(){r&&(h.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,e.apply(null,[a,!1].concat(b))}function p(a,b){var c=i.call(arguments,1);if(v){if(u===a)return;o()}var d=g.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),g.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,f,g=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,h=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,i=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,k=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,l=/\((\S*)(?::(\d+))(?::(\d+))\)/,m=a.stack.split("\n"),n=[],o=(/^(.*) is undefined$/.exec(a.message),0),p=m.length;o eval")>-1;r&&(b=k.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==o||c[5]||"undefined"==typeof a.columnNumber||(n[0].column=a.columnNumber+1),f={url:c[3],func:c[1]||j,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}if(!f.func&&f.line&&(f.func=j),f.url&&"blob:"===f.url.substr(0,5)){var s=new XMLHttpRequest;if(s.open("GET",f.url,!1),s.send(null),200===s.status){ +var t=s.responseText||"";t=t.slice(-300);var u=t.match(/\/\/# sourceMappingURL=(.*)$/);if(u){var v=u[1];"~"===v.charAt(0)&&(v=e()+v.slice(1)),f.url=v.slice(0,-4)}}}n.push(f)}return n.length?{name:a.name,message:a.message,url:d(),stack:n}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=j),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,e){for(var h,i,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==f&&o!==g.report){if(i={url:null,func:j,line:null,column:null},o.name?i.func=o.name:(h=k.exec(o.toString()))&&(i.func=h[1]),"undefined"==typeof i.func)try{i.func=h.input.substring(0,h.input.indexOf("{"))}catch(p){}m[""+o]?n=!0:m[""+o]=!0,l.push(i)}e&&l.splice(0,e);var q={name:a.name,message:a.message,url:d(),stack:l};return b(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),q}function f(b,e){var f=null;e=null==e?0:+e;try{if(f=a(b))return f}catch(h){if(g.debug)throw h}try{if(f=c(b,e+1))return f}catch(h){if(g.debug)throw h}return{name:b.name,message:b.message,url:d()}}return f.augmentStackTraceWithInitialElement=b,f.computeStackTraceFromStackProp=a,f}(),b.exports=g}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{8:8}],10:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}],11:[function(a,b,c){function d(a,b){var c=(65535&a)+(65535&b),d=(a>>16)+(b>>16)+(c>>16);return d<<16|65535&c}function e(a,b){return a<>>32-b}function f(a,b,c,f,g,h){return d(e(d(d(b,a),d(f,h)),g),c)}function g(a,b,c,d,e,g,h){return f(b&c|~b&d,a,b,e,g,h)}function h(a,b,c,d,e,g,h){return f(b&d|c&~d,a,b,e,g,h)}function i(a,b,c,d,e,g,h){return f(b^c^d,a,b,e,g,h)}function j(a,b,c,d,e,g,h){return f(c^(b|~d),a,b,e,g,h)}function k(a,b){a[b>>5]|=128<>>9<<4)+14]=b;var c,e,f,k,l,m=1732584193,n=-271733879,o=-1732584194,p=271733878;for(c=0;c>5]>>>b%32&255);return c}function m(a){var b,c=[];for(c[(a.length>>2)-1]=void 0,b=0;b>5]|=(255&a.charCodeAt(b/8))<16&&(e=k(e,8*a.length)),c=0;c<16;c+=1)f[c]=909522486^e[c],g[c]=1549556828^e[c];return d=k(f.concat(m(b)),512+8*b.length),l(k(g.concat(d),640))}function p(a){var b,c,d="0123456789abcdef",e="";for(c=0;c>>4&15)+d.charAt(15&b);return e}function q(a){return unescape(encodeURIComponent(a))}function r(a){return n(q(a))}function s(a){return p(r(a))}function t(a,b){return o(q(a),q(b))}function u(a,b){return p(t(a,b))}function v(a,b,c){return b?c?t(b,a):u(b,a):c?r(a):s(a)}b.exports=v},{}]},{},[7,1,2,3])(7)}); +//# sourceMappingURL=raven.min.js.map \ No newline at end of file diff --git a/packages/raven-js/dist/angular,console,ember/raven.min.js.map b/packages/raven-js/dist/angular,console,ember/raven.min.js.map new file mode 100644 index 000000000000..4a8c573bceb5 --- /dev/null +++ b/packages/raven-js/dist/angular,console,ember/raven.min.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","angularPlugin","angular","RavenProvider","$get","$window","ExceptionHandlerProvider","$provide","decorator","exceptionHandler","R","$delegate","ex","cause","captureException","extra","moduleName","provider","config","setDataCallback","wrappedCallback","data","_normalizeData","angularPattern","exception","values","matches","exec","value","type","message","angularDocs","substr","addPlugin","7","8","2","consolePlugin","console","pluginOptions","logLevels","levels","push","callback","msg","captureMessage","level","pop","wrapConsoleMethod","wrapMethod","5","3","emberPlugin","Ember","_oldOnError","onerror","error","RSVP","on","reason","context","4","RavenConfigError","name","prototype","constructor","utils","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","safeJoin","logger","Function","apply","6","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","sanitizeKeys","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isErrorEvent","isDOMError","isDOMException","isError","isObject","isPlainObject","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","sanitize","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","dsn","options","_logDebug","globalOptions","key","setDSN","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","toString","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","func","undefined","wrap","_before","wrapped","deep","_ignoreNextOnError","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","U","event","unhandledPromiseRejection","C","_promiseRejectionHandler","bind","addEventListener","Q","removeEventListener","trimHeadFrames","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","V","currentOptions","exKeys","Object","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","M","setTimeout","_","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","aa","evtName","_keypressTimeout","target","category","ca","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","da","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","D","_originalFunctionToString","E","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","F","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","S","builtin","T","G","installer","concat","H","str","m","allowSecretKey","K","port","B","W","stackInfo","_triggerEvent","_processException","lineno","Y","frame","_normalizeFrame","in_app","ha","stackInfoUrl","normalized","filename","line","colno","column","function","ga","prefixedMessage","transaction","ia","request","Referer","breadcrumbs","_trimBreadcrumbs","ja","urlProp","urlProps","ka","httpData","userAgent","User-Agent","referrer","z","_backoffDuration","_backoffStart","na","oa","current","last","pa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Z","baseData","project","platform","_getHttpData","serverName","server_name","_sanitizeData","forEach","random","_sendProcessedPayload","qa","sa","ra","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","ta","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","open","setRequestHeader","send","ua","hash","evaluated","A","$","setUser","setReleaseContext","10","11","9","RavenConstructor","_Raven","noConflict","Client","what","supportsErrorEvent","ErrorEvent","supportsDOMError","DOMError","supportsDOMException","DOMException","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","sanitizeMask","safeInput","o_O","getLocationHref","getLocationOrigin","origin","hostname","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","responseText","sourceMaps","sourceMapAddress","charAt","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","y","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","string","raw"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file diff --git a/packages/raven-js/dist/angular,console,require,vue/raven.js b/packages/raven-js/dist/angular,console,require,vue/raven.js new file mode 100644 index 000000000000..1256d4341043 --- /dev/null +++ b/packages/raven-js/dist/angular,console,require,vue/raven.js @@ -0,0 +1,4189 @@ +/*! Raven.js 3.25.2 (30b6d4e) | github.com/getsentry/raven-js */ + +/* + * Includes TraceKit + * https://github.com/getsentry/TraceKit + * + * Copyright 2018 Matt Robenolt and other contributors + * Released under the BSD license + * https://github.com/getsentry/raven-js/blob/master/LICENSE + * + */ + +(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.Raven = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o' : 'anonymous component') + + (vm._isVue && vm.$options.__file ? ' at ' + vm.$options.__file : '') + ); +} + +function vuePlugin(Raven, Vue) { + Vue = Vue || window.Vue; + + // quit if Vue isn't on the page + if (!Vue || !Vue.config) return; + + var _oldOnError = Vue.config.errorHandler; + Vue.config.errorHandler = function VueErrorHandler(error, vm, info) { + var metaData = {}; + + // vm and lifecycleHook are not always available + if (Object.prototype.toString.call(vm) === '[object Object]') { + metaData.componentName = formatComponentName(vm); + metaData.propsData = vm.$options.propsData; + } + + if (typeof info !== 'undefined') { + metaData.lifecycleHook = info; + } + + Raven.captureException(error, { + extra: metaData + }); + + if (typeof _oldOnError === 'function') { + _oldOnError.call(this, error, vm, info); + } + }; +} + +module.exports = vuePlugin; + +_dereq_(8).addPlugin(module.exports); +},{"8":8}],5:[function(_dereq_,module,exports){ +function RavenConfigError(message) { + this.name = 'RavenConfigError'; + this.message = message; +} +RavenConfigError.prototype = new Error(); +RavenConfigError.prototype.constructor = RavenConfigError; + +module.exports = RavenConfigError; + +},{}],6:[function(_dereq_,module,exports){ +var utils = _dereq_(9); + +var wrapMethod = function(console, level, callback) { + var originalConsoleLevel = console[level]; + var originalConsole = console; + + if (!(level in console)) { + return; + } + + var sentryLevel = level === 'warn' ? 'warning' : level; + + console[level] = function() { + var args = [].slice.call(arguments); + + var msg = utils.safeJoin(args, ' '); + var data = {level: sentryLevel, logger: 'console', extra: {arguments: args}}; + + if (level === 'assert') { + if (args[0] === false) { + // Default browsers message + msg = + 'Assertion failed: ' + (utils.safeJoin(args.slice(1), ' ') || 'console.assert'); + data.extra.arguments = args.slice(1); + callback && callback(msg, data); + } + } else { + callback && callback(msg, data); + } + + // this fails for some browsers. :( + if (originalConsoleLevel) { + // IE9 doesn't allow calling apply on console functions directly + // See: https://stackoverflow.com/questions/5472938/does-ie9-support-console-log-and-is-it-a-real-function#answer-5473193 + Function.prototype.apply.call(originalConsoleLevel, originalConsole, args); + } + }; +}; + +module.exports = { + wrapMethod: wrapMethod +}; + +},{"9":9}],7:[function(_dereq_,module,exports){ +(function (global){ +/*global XDomainRequest:false */ + +var TraceKit = _dereq_(10); +var stringify = _dereq_(11); +var md5 = _dereq_(12); +var RavenConfigError = _dereq_(5); + +var utils = _dereq_(9); +var isErrorEvent = utils.isErrorEvent; +var isDOMError = utils.isDOMError; +var isDOMException = utils.isDOMException; +var isError = utils.isError; +var isObject = utils.isObject; +var isPlainObject = utils.isPlainObject; +var isUndefined = utils.isUndefined; +var isFunction = utils.isFunction; +var isString = utils.isString; +var isArray = utils.isArray; +var isEmptyObject = utils.isEmptyObject; +var each = utils.each; +var objectMerge = utils.objectMerge; +var truncate = utils.truncate; +var objectFrozen = utils.objectFrozen; +var hasKey = utils.hasKey; +var joinRegExp = utils.joinRegExp; +var urlencode = utils.urlencode; +var uuid4 = utils.uuid4; +var htmlTreeAsString = utils.htmlTreeAsString; +var isSameException = utils.isSameException; +var isSameStacktrace = utils.isSameStacktrace; +var parseUrl = utils.parseUrl; +var fill = utils.fill; +var supportsFetch = utils.supportsFetch; +var supportsReferrerPolicy = utils.supportsReferrerPolicy; +var serializeKeysForMessage = utils.serializeKeysForMessage; +var serializeException = utils.serializeException; +var sanitize = utils.sanitize; + +var wrapConsoleMethod = _dereq_(6).wrapMethod; + +var dsnKeys = 'source protocol user pass host port path'.split(' '), + dsnPattern = /^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/; + +function now() { + return +new Date(); +} + +// This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) +var _window = + typeof window !== 'undefined' + ? window + : typeof global !== 'undefined' + ? global + : typeof self !== 'undefined' + ? self + : {}; +var _document = _window.document; +var _navigator = _window.navigator; + +function keepOriginalCallback(original, callback) { + return isFunction(callback) + ? function(data) { + return callback(data, original); + } + : callback; +} + +// First, check for JSON support +// If there is no JSON, we no-op the core features of Raven +// since JSON is required to encode the payload +function Raven() { + this._hasJSON = !!(typeof JSON === 'object' && JSON.stringify); + // Raven can run in contexts where there's no document (react-native) + this._hasDocument = !isUndefined(_document); + this._hasNavigator = !isUndefined(_navigator); + this._lastCapturedException = null; + this._lastData = null; + this._lastEventId = null; + this._globalServer = null; + this._globalKey = null; + this._globalProject = null; + this._globalContext = {}; + this._globalOptions = { + // SENTRY_RELEASE can be injected by https://github.com/getsentry/sentry-webpack-plugin + release: _window.SENTRY_RELEASE && _window.SENTRY_RELEASE.id, + logger: 'javascript', + ignoreErrors: [], + ignoreUrls: [], + whitelistUrls: [], + includePaths: [], + headers: null, + collectWindowErrors: true, + captureUnhandledRejections: true, + maxMessageLength: 0, + // By default, truncates URL values to 250 chars + maxUrlLength: 250, + stackTraceLimit: 50, + autoBreadcrumbs: true, + instrument: true, + sampleRate: 1, + sanitizeKeys: [] + }; + this._fetchDefaults = { + method: 'POST', + keepalive: true, + // Despite all stars in the sky saying that Edge supports old draft syntax, aka 'never', 'always', 'origin' and 'default + // https://caniuse.com/#feat=referrer-policy + // It doesn't. And it throw exception instead of ignoring this parameter... + // REF: https://github.com/getsentry/raven-js/issues/1233 + referrerPolicy: supportsReferrerPolicy() ? 'origin' : '' + }; + this._ignoreOnError = 0; + this._isRavenInstalled = false; + this._originalErrorStackTraceLimit = Error.stackTraceLimit; + // capture references to window.console *and* all its methods first + // before the console plugin has a chance to monkey patch + this._originalConsole = _window.console || {}; + this._originalConsoleMethods = {}; + this._plugins = []; + this._startTime = now(); + this._wrappedBuiltIns = []; + this._breadcrumbs = []; + this._lastCapturedEvent = null; + this._keypressTimeout; + this._location = _window.location; + this._lastHref = this._location && this._location.href; + this._resetBackoff(); + + // eslint-disable-next-line guard-for-in + for (var method in this._originalConsole) { + this._originalConsoleMethods[method] = this._originalConsole[method]; + } +} + +/* + * The core Raven singleton + * + * @this {Raven} + */ + +Raven.prototype = { + // Hardcode version string so that raven source can be loaded directly via + // webpack (using a build step causes webpack #1617). Grunt verifies that + // this value matches package.json during build. + // See: https://github.com/getsentry/raven-js/issues/465 + VERSION: '3.25.2', + + debug: false, + + TraceKit: TraceKit, // alias to TraceKit + + /* + * Configure Raven with a DSN and extra options + * + * @param {string} dsn The public Sentry DSN + * @param {object} options Set of global options [optional] + * @return {Raven} + */ + config: function(dsn, options) { + var self = this; + + if (self._globalServer) { + this._logDebug('error', 'Error: Raven has already been configured'); + return self; + } + if (!dsn) return self; + + var globalOptions = self._globalOptions; + + // merge in options + if (options) { + each(options, function(key, value) { + // tags and extra are special and need to be put into context + if (key === 'tags' || key === 'extra' || key === 'user') { + self._globalContext[key] = value; + } else { + globalOptions[key] = value; + } + }); + } + + self.setDSN(dsn); + + // "Script error." is hard coded into browsers for errors that it can't read. + // this is the result of a script being pulled in from an external domain and CORS. + globalOptions.ignoreErrors.push(/^Script error\.?$/); + globalOptions.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/); + + // join regexp rules into one big rule + globalOptions.ignoreErrors = joinRegExp(globalOptions.ignoreErrors); + globalOptions.ignoreUrls = globalOptions.ignoreUrls.length + ? joinRegExp(globalOptions.ignoreUrls) + : false; + globalOptions.whitelistUrls = globalOptions.whitelistUrls.length + ? joinRegExp(globalOptions.whitelistUrls) + : false; + globalOptions.includePaths = joinRegExp(globalOptions.includePaths); + globalOptions.maxBreadcrumbs = Math.max( + 0, + Math.min(globalOptions.maxBreadcrumbs || 100, 100) + ); // default and hard limit is 100 + + var autoBreadcrumbDefaults = { + xhr: true, + console: true, + dom: true, + location: true, + sentry: true + }; + + var autoBreadcrumbs = globalOptions.autoBreadcrumbs; + if ({}.toString.call(autoBreadcrumbs) === '[object Object]') { + autoBreadcrumbs = objectMerge(autoBreadcrumbDefaults, autoBreadcrumbs); + } else if (autoBreadcrumbs !== false) { + autoBreadcrumbs = autoBreadcrumbDefaults; + } + globalOptions.autoBreadcrumbs = autoBreadcrumbs; + + var instrumentDefaults = { + tryCatch: true + }; + + var instrument = globalOptions.instrument; + if ({}.toString.call(instrument) === '[object Object]') { + instrument = objectMerge(instrumentDefaults, instrument); + } else if (instrument !== false) { + instrument = instrumentDefaults; + } + globalOptions.instrument = instrument; + + TraceKit.collectWindowErrors = !!globalOptions.collectWindowErrors; + + // return for chaining + return self; + }, + + /* + * Installs a global window.onerror error handler + * to capture and report uncaught exceptions. + * At this point, install() is required to be called due + * to the way TraceKit is set up. + * + * @return {Raven} + */ + install: function() { + var self = this; + if (self.isSetup() && !self._isRavenInstalled) { + TraceKit.report.subscribe(function() { + self._handleOnErrorStackInfo.apply(self, arguments); + }); + + if (self._globalOptions.captureUnhandledRejections) { + self._attachPromiseRejectionHandler(); + } + + self._patchFunctionToString(); + + if (self._globalOptions.instrument && self._globalOptions.instrument.tryCatch) { + self._instrumentTryCatch(); + } + + if (self._globalOptions.autoBreadcrumbs) self._instrumentBreadcrumbs(); + + // Install all of the plugins + self._drainPlugins(); + + self._isRavenInstalled = true; + } + + Error.stackTraceLimit = self._globalOptions.stackTraceLimit; + return this; + }, + + /* + * Set the DSN (can be called multiple time unlike config) + * + * @param {string} dsn The public Sentry DSN + */ + setDSN: function(dsn) { + var self = this, + uri = self._parseDSN(dsn), + lastSlash = uri.path.lastIndexOf('/'), + path = uri.path.substr(1, lastSlash); + + self._dsn = dsn; + self._globalKey = uri.user; + self._globalSecret = uri.pass && uri.pass.substr(1); + self._globalProject = uri.path.substr(lastSlash + 1); + + self._globalServer = self._getGlobalServer(uri); + + self._globalEndpoint = + self._globalServer + '/' + path + 'api/' + self._globalProject + '/store/'; + + // Reset backoff state since we may be pointing at a + // new project/server + this._resetBackoff(); + }, + + /* + * Wrap code within a context so Raven can capture errors + * reliably across domains that is executed immediately. + * + * @param {object} options A specific set of options for this context [optional] + * @param {function} func The callback to be immediately executed within the context + * @param {array} args An array of arguments to be called with the callback [optional] + */ + context: function(options, func, args) { + if (isFunction(options)) { + args = func || []; + func = options; + options = undefined; + } + + return this.wrap(options, func).apply(this, args); + }, + + /* + * Wrap code within a context and returns back a new function to be executed + * + * @param {object} options A specific set of options for this context [optional] + * @param {function} func The function to be wrapped in a new context + * @param {function} func A function to call before the try/catch wrapper [optional, private] + * @return {function} The newly wrapped functions with a context + */ + wrap: function(options, func, _before) { + var self = this; + // 1 argument has been passed, and it's not a function + // so just return it + if (isUndefined(func) && !isFunction(options)) { + return options; + } + + // options is optional + if (isFunction(options)) { + func = options; + options = undefined; + } + + // At this point, we've passed along 2 arguments, and the second one + // is not a function either, so we'll just return the second argument. + if (!isFunction(func)) { + return func; + } + + // We don't wanna wrap it twice! + try { + if (func.__raven__) { + return func; + } + + // If this has already been wrapped in the past, return that + if (func.__raven_wrapper__) { + return func.__raven_wrapper__; + } + } catch (e) { + // Just accessing custom props in some Selenium environments + // can cause a "Permission denied" exception (see raven-js#495). + // Bail on wrapping and return the function as-is (defers to window.onerror). + return func; + } + + function wrapped() { + var args = [], + i = arguments.length, + deep = !options || (options && options.deep !== false); + + if (_before && isFunction(_before)) { + _before.apply(this, arguments); + } + + // Recursively wrap all of a function's arguments that are + // functions themselves. + while (i--) args[i] = deep ? self.wrap(options, arguments[i]) : arguments[i]; + + try { + // Attempt to invoke user-land function + // NOTE: If you are a Sentry user, and you are seeing this stack frame, it + // means Raven caught an error invoking your application code. This is + // expected behavior and NOT indicative of a bug with Raven.js. + return func.apply(this, args); + } catch (e) { + self._ignoreNextOnError(); + self.captureException(e, options); + throw e; + } + } + + // copy over properties of the old function + for (var property in func) { + if (hasKey(func, property)) { + wrapped[property] = func[property]; + } + } + wrapped.prototype = func.prototype; + + func.__raven_wrapper__ = wrapped; + // Signal that this function has been wrapped/filled already + // for both debugging and to prevent it to being wrapped/filled twice + wrapped.__raven__ = true; + wrapped.__orig__ = func; + + return wrapped; + }, + + /** + * Uninstalls the global error handler. + * + * @return {Raven} + */ + uninstall: function() { + TraceKit.report.uninstall(); + + this._detachPromiseRejectionHandler(); + this._unpatchFunctionToString(); + this._restoreBuiltIns(); + this._restoreConsole(); + + Error.stackTraceLimit = this._originalErrorStackTraceLimit; + this._isRavenInstalled = false; + + return this; + }, + + /** + * Callback used for `unhandledrejection` event + * + * @param {PromiseRejectionEvent} event An object containing + * promise: the Promise that was rejected + * reason: the value with which the Promise was rejected + * @return void + */ + _promiseRejectionHandler: function(event) { + this._logDebug('debug', 'Raven caught unhandled promise rejection:', event); + this.captureException(event.reason, { + extra: { + unhandledPromiseRejection: true + } + }); + }, + + /** + * Installs the global promise rejection handler. + * + * @return {raven} + */ + _attachPromiseRejectionHandler: function() { + this._promiseRejectionHandler = this._promiseRejectionHandler.bind(this); + _window.addEventListener && + _window.addEventListener('unhandledrejection', this._promiseRejectionHandler); + return this; + }, + + /** + * Uninstalls the global promise rejection handler. + * + * @return {raven} + */ + _detachPromiseRejectionHandler: function() { + _window.removeEventListener && + _window.removeEventListener('unhandledrejection', this._promiseRejectionHandler); + return this; + }, + + /** + * Manually capture an exception and send it over to Sentry + * + * @param {error} ex An exception to be logged + * @param {object} options A specific set of options for this error [optional] + * @return {Raven} + */ + captureException: function(ex, options) { + options = objectMerge({trimHeadFrames: 0}, options ? options : {}); + + if (isErrorEvent(ex) && ex.error) { + // If it is an ErrorEvent with `error` property, extract it to get actual Error + ex = ex.error; + } else if (isDOMError(ex) || isDOMException(ex)) { + // If it is a DOMError or DOMException (which are legacy APIs, but still supported in some browsers) + // then we just extract the name and message, as they don't provide anything else + // https://developer.mozilla.org/en-US/docs/Web/API/DOMError + // https://developer.mozilla.org/en-US/docs/Web/API/DOMException + var name = ex.name || (isDOMError(ex) ? 'DOMError' : 'DOMException'); + var message = ex.message ? name + ': ' + ex.message : name; + + return this.captureMessage( + message, + objectMerge(options, { + // neither DOMError or DOMException provide stack trace and we most likely wont get it this way as well + // but it's barely any overhead so we may at least try + stacktrace: true, + trimHeadFrames: options.trimHeadFrames + 1 + }) + ); + } else if (isError(ex)) { + // we have a real Error object + ex = ex; + } else if (isPlainObject(ex)) { + // If it is plain Object, serialize it manually and extract options + // This will allow us to group events based on top-level keys + // which is much better than creating new group when any key/value change + options = this._getCaptureExceptionOptionsFromPlainObject(options, ex); + ex = new Error(options.message); + } else { + // If none of previous checks were valid, then it means that + // it's not a DOMError/DOMException + // it's not a plain Object + // it's not a valid ErrorEvent (one with an error property) + // it's not an Error + // So bail out and capture it as a simple message: + return this.captureMessage( + ex, + objectMerge(options, { + stacktrace: true, // if we fall back to captureMessage, default to attempting a new trace + trimHeadFrames: options.trimHeadFrames + 1 + }) + ); + } + + // Store the raw exception object for potential debugging and introspection + this._lastCapturedException = ex; + + // TraceKit.report will re-raise any exception passed to it, + // which means you have to wrap it in try/catch. Instead, we + // can wrap it here and only re-raise if TraceKit.report + // raises an exception different from the one we asked to + // report on. + try { + var stack = TraceKit.computeStackTrace(ex); + this._handleStackInfo(stack, options); + } catch (ex1) { + if (ex !== ex1) { + throw ex1; + } + } + + return this; + }, + + _getCaptureExceptionOptionsFromPlainObject: function(currentOptions, ex) { + var exKeys = Object.keys(ex).sort(); + var options = objectMerge(currentOptions, { + message: + 'Non-Error exception captured with keys: ' + serializeKeysForMessage(exKeys), + fingerprint: [md5(exKeys)], + extra: currentOptions.extra || {} + }); + options.extra.__serialized__ = serializeException(ex); + + return options; + }, + + /* + * Manually send a message to Sentry + * + * @param {string} msg A plain message to be captured in Sentry + * @param {object} options A specific set of options for this message [optional] + * @return {Raven} + */ + captureMessage: function(msg, options) { + // config() automagically converts ignoreErrors from a list to a RegExp so we need to test for an + // early call; we'll error on the side of logging anything called before configuration since it's + // probably something you should see: + if ( + !!this._globalOptions.ignoreErrors.test && + this._globalOptions.ignoreErrors.test(msg) + ) { + return; + } + + options = options || {}; + msg = msg + ''; // Make sure it's actually a string + + var data = objectMerge( + { + message: msg + }, + options + ); + + var ex; + // Generate a "synthetic" stack trace from this point. + // NOTE: If you are a Sentry user, and you are seeing this stack frame, it is NOT indicative + // of a bug with Raven.js. Sentry generates synthetic traces either by configuration, + // or if it catches a thrown object without a "stack" property. + try { + throw new Error(msg); + } catch (ex1) { + ex = ex1; + } + + // null exception name so `Error` isn't prefixed to msg + ex.name = null; + var stack = TraceKit.computeStackTrace(ex); + + // stack[0] is `throw new Error(msg)` call itself, we are interested in the frame that was just before that, stack[1] + var initialCall = isArray(stack.stack) && stack.stack[1]; + + // if stack[1] is `Raven.captureException`, it means that someone passed a string to it and we redirected that call + // to be handled by `captureMessage`, thus `initialCall` is the 3rd one, not 2nd + // initialCall => captureException(string) => captureMessage(string) + if (initialCall && initialCall.func === 'Raven.captureException') { + initialCall = stack.stack[2]; + } + + var fileurl = (initialCall && initialCall.url) || ''; + + if ( + !!this._globalOptions.ignoreUrls.test && + this._globalOptions.ignoreUrls.test(fileurl) + ) { + return; + } + + if ( + !!this._globalOptions.whitelistUrls.test && + !this._globalOptions.whitelistUrls.test(fileurl) + ) { + return; + } + + if (this._globalOptions.stacktrace || (options && options.stacktrace)) { + // fingerprint on msg, not stack trace (legacy behavior, could be revisited) + data.fingerprint = data.fingerprint == null ? msg : data.fingerprint; + + options = objectMerge( + { + trimHeadFrames: 0 + }, + options + ); + // Since we know this is a synthetic trace, the top frame (this function call) + // MUST be from Raven.js, so mark it for trimming + // We add to the trim counter so that callers can choose to trim extra frames, such + // as utility functions. + options.trimHeadFrames += 1; + + var frames = this._prepareFrames(stack, options); + data.stacktrace = { + // Sentry expects frames oldest to newest + frames: frames.reverse() + }; + } + + // Make sure that fingerprint is always wrapped in an array + if (data.fingerprint) { + data.fingerprint = isArray(data.fingerprint) + ? data.fingerprint + : [data.fingerprint]; + } + + // Fire away! + this._send(data); + + return this; + }, + + captureBreadcrumb: function(obj) { + var crumb = objectMerge( + { + timestamp: now() / 1000 + }, + obj + ); + + if (isFunction(this._globalOptions.breadcrumbCallback)) { + var result = this._globalOptions.breadcrumbCallback(crumb); + + if (isObject(result) && !isEmptyObject(result)) { + crumb = result; + } else if (result === false) { + return this; + } + } + + this._breadcrumbs.push(crumb); + if (this._breadcrumbs.length > this._globalOptions.maxBreadcrumbs) { + this._breadcrumbs.shift(); + } + return this; + }, + + addPlugin: function(plugin /*arg1, arg2, ... argN*/) { + var pluginArgs = [].slice.call(arguments, 1); + + this._plugins.push([plugin, pluginArgs]); + if (this._isRavenInstalled) { + this._drainPlugins(); + } + + return this; + }, + + /* + * Set/clear a user to be sent along with the payload. + * + * @param {object} user An object representing user data [optional] + * @return {Raven} + */ + setUserContext: function(user) { + // Intentionally do not merge here since that's an unexpected behavior. + this._globalContext.user = user; + + return this; + }, + + /* + * Merge extra attributes to be sent along with the payload. + * + * @param {object} extra An object representing extra data [optional] + * @return {Raven} + */ + setExtraContext: function(extra) { + this._mergeContext('extra', extra); + + return this; + }, + + /* + * Merge tags to be sent along with the payload. + * + * @param {object} tags An object representing tags [optional] + * @return {Raven} + */ + setTagsContext: function(tags) { + this._mergeContext('tags', tags); + + return this; + }, + + /* + * Clear all of the context. + * + * @return {Raven} + */ + clearContext: function() { + this._globalContext = {}; + + return this; + }, + + /* + * Get a copy of the current context. This cannot be mutated. + * + * @return {object} copy of context + */ + getContext: function() { + // lol javascript + return JSON.parse(stringify(this._globalContext)); + }, + + /* + * Set environment of application + * + * @param {string} environment Typically something like 'production'. + * @return {Raven} + */ + setEnvironment: function(environment) { + this._globalOptions.environment = environment; + + return this; + }, + + /* + * Set release version of application + * + * @param {string} release Typically something like a git SHA to identify version + * @return {Raven} + */ + setRelease: function(release) { + this._globalOptions.release = release; + + return this; + }, + + /* + * Set the dataCallback option + * + * @param {function} callback The callback to run which allows the + * data blob to be mutated before sending + * @return {Raven} + */ + setDataCallback: function(callback) { + var original = this._globalOptions.dataCallback; + this._globalOptions.dataCallback = keepOriginalCallback(original, callback); + return this; + }, + + /* + * Set the breadcrumbCallback option + * + * @param {function} callback The callback to run which allows filtering + * or mutating breadcrumbs + * @return {Raven} + */ + setBreadcrumbCallback: function(callback) { + var original = this._globalOptions.breadcrumbCallback; + this._globalOptions.breadcrumbCallback = keepOriginalCallback(original, callback); + return this; + }, + + /* + * Set the shouldSendCallback option + * + * @param {function} callback The callback to run which allows + * introspecting the blob before sending + * @return {Raven} + */ + setShouldSendCallback: function(callback) { + var original = this._globalOptions.shouldSendCallback; + this._globalOptions.shouldSendCallback = keepOriginalCallback(original, callback); + return this; + }, + + /** + * Override the default HTTP transport mechanism that transmits data + * to the Sentry server. + * + * @param {function} transport Function invoked instead of the default + * `makeRequest` handler. + * + * @return {Raven} + */ + setTransport: function(transport) { + this._globalOptions.transport = transport; + + return this; + }, + + /* + * Get the latest raw exception that was captured by Raven. + * + * @return {error} + */ + lastException: function() { + return this._lastCapturedException; + }, + + /* + * Get the last event id + * + * @return {string} + */ + lastEventId: function() { + return this._lastEventId; + }, + + /* + * Determine if Raven is setup and ready to go. + * + * @return {boolean} + */ + isSetup: function() { + if (!this._hasJSON) return false; // needs JSON support + if (!this._globalServer) { + if (!this.ravenNotConfiguredError) { + this.ravenNotConfiguredError = true; + this._logDebug('error', 'Error: Raven has not been configured.'); + } + return false; + } + return true; + }, + + afterLoad: function() { + // TODO: remove window dependence? + + // Attempt to initialize Raven on load + var RavenConfig = _window.RavenConfig; + if (RavenConfig) { + this.config(RavenConfig.dsn, RavenConfig.config).install(); + } + }, + + showReportDialog: function(options) { + if ( + !_document // doesn't work without a document (React native) + ) + return; + + options = options || {}; + + var lastEventId = options.eventId || this.lastEventId(); + if (!lastEventId) { + throw new RavenConfigError('Missing eventId'); + } + + var dsn = options.dsn || this._dsn; + if (!dsn) { + throw new RavenConfigError('Missing DSN'); + } + + var encode = encodeURIComponent; + var qs = ''; + qs += '?eventId=' + encode(lastEventId); + qs += '&dsn=' + encode(dsn); + + var user = options.user || this._globalContext.user; + if (user) { + if (user.name) qs += '&name=' + encode(user.name); + if (user.email) qs += '&email=' + encode(user.email); + } + + var globalServer = this._getGlobalServer(this._parseDSN(dsn)); + + var script = _document.createElement('script'); + script.async = true; + script.src = globalServer + '/api/embed/error-page/' + qs; + (_document.head || _document.body).appendChild(script); + }, + + /**** Private functions ****/ + _ignoreNextOnError: function() { + var self = this; + this._ignoreOnError += 1; + setTimeout(function() { + // onerror should trigger before setTimeout + self._ignoreOnError -= 1; + }); + }, + + _triggerEvent: function(eventType, options) { + // NOTE: `event` is a native browser thing, so let's avoid conflicting wiht it + var evt, key; + + if (!this._hasDocument) return; + + options = options || {}; + + eventType = 'raven' + eventType.substr(0, 1).toUpperCase() + eventType.substr(1); + + if (_document.createEvent) { + evt = _document.createEvent('HTMLEvents'); + evt.initEvent(eventType, true, true); + } else { + evt = _document.createEventObject(); + evt.eventType = eventType; + } + + for (key in options) + if (hasKey(options, key)) { + evt[key] = options[key]; + } + + if (_document.createEvent) { + // IE9 if standards + _document.dispatchEvent(evt); + } else { + // IE8 regardless of Quirks or Standards + // IE9 if quirks + try { + _document.fireEvent('on' + evt.eventType.toLowerCase(), evt); + } catch (e) { + // Do nothing + } + } + }, + + /** + * Wraps addEventListener to capture UI breadcrumbs + * @param evtName the event name (e.g. "click") + * @returns {Function} + * @private + */ + _breadcrumbEventHandler: function(evtName) { + var self = this; + return function(evt) { + // reset keypress timeout; e.g. triggering a 'click' after + // a 'keypress' will reset the keypress debounce so that a new + // set of keypresses can be recorded + self._keypressTimeout = null; + + // It's possible this handler might trigger multiple times for the same + // event (e.g. event propagation through node ancestors). Ignore if we've + // already captured the event. + if (self._lastCapturedEvent === evt) return; + + self._lastCapturedEvent = evt; + + // try/catch both: + // - accessing evt.target (see getsentry/raven-js#838, #768) + // - `htmlTreeAsString` because it's complex, and just accessing the DOM incorrectly + // can throw an exception in some circumstances. + var target; + try { + target = htmlTreeAsString(evt.target); + } catch (e) { + target = ''; + } + + self.captureBreadcrumb({ + category: 'ui.' + evtName, // e.g. ui.click, ui.input + message: target + }); + }; + }, + + /** + * Wraps addEventListener to capture keypress UI events + * @returns {Function} + * @private + */ + _keypressEventHandler: function() { + var self = this, + debounceDuration = 1000; // milliseconds + + // TODO: if somehow user switches keypress target before + // debounce timeout is triggered, we will only capture + // a single breadcrumb from the FIRST target (acceptable?) + return function(evt) { + var target; + try { + target = evt.target; + } catch (e) { + // just accessing event properties can throw an exception in some rare circumstances + // see: https://github.com/getsentry/raven-js/issues/838 + return; + } + var tagName = target && target.tagName; + + // only consider keypress events on actual input elements + // this will disregard keypresses targeting body (e.g. tabbing + // through elements, hotkeys, etc) + if ( + !tagName || + (tagName !== 'INPUT' && tagName !== 'TEXTAREA' && !target.isContentEditable) + ) + return; + + // record first keypress in a series, but ignore subsequent + // keypresses until debounce clears + var timeout = self._keypressTimeout; + if (!timeout) { + self._breadcrumbEventHandler('input')(evt); + } + clearTimeout(timeout); + self._keypressTimeout = setTimeout(function() { + self._keypressTimeout = null; + }, debounceDuration); + }; + }, + + /** + * Captures a breadcrumb of type "navigation", normalizing input URLs + * @param to the originating URL + * @param from the target URL + * @private + */ + _captureUrlChange: function(from, to) { + var parsedLoc = parseUrl(this._location.href); + var parsedTo = parseUrl(to); + var parsedFrom = parseUrl(from); + + // because onpopstate only tells you the "new" (to) value of location.href, and + // not the previous (from) value, we need to track the value of the current URL + // state ourselves + this._lastHref = to; + + // Use only the path component of the URL if the URL matches the current + // document (almost all the time when using pushState) + if (parsedLoc.protocol === parsedTo.protocol && parsedLoc.host === parsedTo.host) + to = parsedTo.relative; + if (parsedLoc.protocol === parsedFrom.protocol && parsedLoc.host === parsedFrom.host) + from = parsedFrom.relative; + + this.captureBreadcrumb({ + category: 'navigation', + data: { + to: to, + from: from + } + }); + }, + + _patchFunctionToString: function() { + var self = this; + self._originalFunctionToString = Function.prototype.toString; + // eslint-disable-next-line no-extend-native + Function.prototype.toString = function() { + if (typeof this === 'function' && this.__raven__) { + return self._originalFunctionToString.apply(this.__orig__, arguments); + } + return self._originalFunctionToString.apply(this, arguments); + }; + }, + + _unpatchFunctionToString: function() { + if (this._originalFunctionToString) { + // eslint-disable-next-line no-extend-native + Function.prototype.toString = this._originalFunctionToString; + } + }, + + /** + * Wrap timer functions and event targets to catch errors and provide + * better metadata. + */ + _instrumentTryCatch: function() { + var self = this; + + var wrappedBuiltIns = self._wrappedBuiltIns; + + function wrapTimeFn(orig) { + return function(fn, t) { + // preserve arity + // Make a copy of the arguments to prevent deoptimization + // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments + var args = new Array(arguments.length); + for (var i = 0; i < args.length; ++i) { + args[i] = arguments[i]; + } + var originalCallback = args[0]; + if (isFunction(originalCallback)) { + args[0] = self.wrap(originalCallback); + } + + // IE < 9 doesn't support .call/.apply on setInterval/setTimeout, but it + // also supports only two arguments and doesn't care what this is, so we + // can just call the original function directly. + if (orig.apply) { + return orig.apply(this, args); + } else { + return orig(args[0], args[1]); + } + }; + } + + var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; + + function wrapEventTarget(global) { + var proto = _window[global] && _window[global].prototype; + if (proto && proto.hasOwnProperty && proto.hasOwnProperty('addEventListener')) { + fill( + proto, + 'addEventListener', + function(orig) { + return function(evtName, fn, capture, secure) { + // preserve arity + try { + if (fn && fn.handleEvent) { + fn.handleEvent = self.wrap(fn.handleEvent); + } + } catch (err) { + // can sometimes get 'Permission denied to access property "handle Event' + } + + // More breadcrumb DOM capture ... done here and not in `_instrumentBreadcrumbs` + // so that we don't have more than one wrapper function + var before, clickHandler, keypressHandler; + + if ( + autoBreadcrumbs && + autoBreadcrumbs.dom && + (global === 'EventTarget' || global === 'Node') + ) { + // NOTE: generating multiple handlers per addEventListener invocation, should + // revisit and verify we can just use one (almost certainly) + clickHandler = self._breadcrumbEventHandler('click'); + keypressHandler = self._keypressEventHandler(); + before = function(evt) { + // need to intercept every DOM event in `before` argument, in case that + // same wrapped method is re-used for different events (e.g. mousemove THEN click) + // see #724 + if (!evt) return; + + var eventType; + try { + eventType = evt.type; + } catch (e) { + // just accessing event properties can throw an exception in some rare circumstances + // see: https://github.com/getsentry/raven-js/issues/838 + return; + } + if (eventType === 'click') return clickHandler(evt); + else if (eventType === 'keypress') return keypressHandler(evt); + }; + } + return orig.call( + this, + evtName, + self.wrap(fn, undefined, before), + capture, + secure + ); + }; + }, + wrappedBuiltIns + ); + fill( + proto, + 'removeEventListener', + function(orig) { + return function(evt, fn, capture, secure) { + try { + fn = fn && (fn.__raven_wrapper__ ? fn.__raven_wrapper__ : fn); + } catch (e) { + // ignore, accessing __raven_wrapper__ will throw in some Selenium environments + } + return orig.call(this, evt, fn, capture, secure); + }; + }, + wrappedBuiltIns + ); + } + } + + fill(_window, 'setTimeout', wrapTimeFn, wrappedBuiltIns); + fill(_window, 'setInterval', wrapTimeFn, wrappedBuiltIns); + if (_window.requestAnimationFrame) { + fill( + _window, + 'requestAnimationFrame', + function(orig) { + return function(cb) { + return orig(self.wrap(cb)); + }; + }, + wrappedBuiltIns + ); + } + + // event targets borrowed from bugsnag-js: + // https://github.com/bugsnag/bugsnag-js/blob/master/src/bugsnag.js#L666 + var eventTargets = [ + 'EventTarget', + 'Window', + 'Node', + 'ApplicationCache', + 'AudioTrackList', + 'ChannelMergerNode', + 'CryptoOperation', + 'EventSource', + 'FileReader', + 'HTMLUnknownElement', + 'IDBDatabase', + 'IDBRequest', + 'IDBTransaction', + 'KeyOperation', + 'MediaController', + 'MessagePort', + 'ModalWindow', + 'Notification', + 'SVGElementInstance', + 'Screen', + 'TextTrack', + 'TextTrackCue', + 'TextTrackList', + 'WebSocket', + 'WebSocketWorker', + 'Worker', + 'XMLHttpRequest', + 'XMLHttpRequestEventTarget', + 'XMLHttpRequestUpload' + ]; + for (var i = 0; i < eventTargets.length; i++) { + wrapEventTarget(eventTargets[i]); + } + }, + + /** + * Instrument browser built-ins w/ breadcrumb capturing + * - XMLHttpRequests + * - DOM interactions (click/typing) + * - window.location changes + * - console + * + * Can be disabled or individually configured via the `autoBreadcrumbs` config option + */ + _instrumentBreadcrumbs: function() { + var self = this; + var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; + + var wrappedBuiltIns = self._wrappedBuiltIns; + + function wrapProp(prop, xhr) { + if (prop in xhr && isFunction(xhr[prop])) { + fill(xhr, prop, function(orig) { + return self.wrap(orig); + }); // intentionally don't track filled methods on XHR instances + } + } + + if (autoBreadcrumbs.xhr && 'XMLHttpRequest' in _window) { + var xhrproto = _window.XMLHttpRequest && _window.XMLHttpRequest.prototype; + fill( + xhrproto, + 'open', + function(origOpen) { + return function(method, url) { + // preserve arity + + // if Sentry key appears in URL, don't capture + if (isString(url) && url.indexOf(self._globalKey) === -1) { + this.__raven_xhr = { + method: method, + url: url, + status_code: null + }; + } + + return origOpen.apply(this, arguments); + }; + }, + wrappedBuiltIns + ); + + fill( + xhrproto, + 'send', + function(origSend) { + return function() { + // preserve arity + var xhr = this; + + function onreadystatechangeHandler() { + if (xhr.__raven_xhr && xhr.readyState === 4) { + try { + // touching statusCode in some platforms throws + // an exception + xhr.__raven_xhr.status_code = xhr.status; + } catch (e) { + /* do nothing */ + } + + self.captureBreadcrumb({ + type: 'http', + category: 'xhr', + data: xhr.__raven_xhr + }); + } + } + + var props = ['onload', 'onerror', 'onprogress']; + for (var j = 0; j < props.length; j++) { + wrapProp(props[j], xhr); + } + + if ('onreadystatechange' in xhr && isFunction(xhr.onreadystatechange)) { + fill( + xhr, + 'onreadystatechange', + function(orig) { + return self.wrap(orig, undefined, onreadystatechangeHandler); + } /* intentionally don't track this instrumentation */ + ); + } else { + // if onreadystatechange wasn't actually set by the page on this xhr, we + // are free to set our own and capture the breadcrumb + xhr.onreadystatechange = onreadystatechangeHandler; + } + + return origSend.apply(this, arguments); + }; + }, + wrappedBuiltIns + ); + } + + if (autoBreadcrumbs.xhr && supportsFetch()) { + fill( + _window, + 'fetch', + function(origFetch) { + return function() { + // preserve arity + // Make a copy of the arguments to prevent deoptimization + // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments + var args = new Array(arguments.length); + for (var i = 0; i < args.length; ++i) { + args[i] = arguments[i]; + } + + var fetchInput = args[0]; + var method = 'GET'; + var url; + + if (typeof fetchInput === 'string') { + url = fetchInput; + } else if ('Request' in _window && fetchInput instanceof _window.Request) { + url = fetchInput.url; + if (fetchInput.method) { + method = fetchInput.method; + } + } else { + url = '' + fetchInput; + } + + // if Sentry key appears in URL, don't capture, as it's our own request + if (url.indexOf(self._globalKey) !== -1) { + return origFetch.apply(this, args); + } + + if (args[1] && args[1].method) { + method = args[1].method; + } + + var fetchData = { + method: method, + url: url, + status_code: null + }; + + return origFetch + .apply(this, args) + .then(function(response) { + fetchData.status_code = response.status; + + self.captureBreadcrumb({ + type: 'http', + category: 'fetch', + data: fetchData + }); + + return response; + }) + ['catch'](function(err) { + // if there is an error performing the request + self.captureBreadcrumb({ + type: 'http', + category: 'fetch', + data: fetchData, + level: 'error' + }); + + throw err; + }); + }; + }, + wrappedBuiltIns + ); + } + + // Capture breadcrumbs from any click that is unhandled / bubbled up all the way + // to the document. Do this before we instrument addEventListener. + if (autoBreadcrumbs.dom && this._hasDocument) { + if (_document.addEventListener) { + _document.addEventListener('click', self._breadcrumbEventHandler('click'), false); + _document.addEventListener('keypress', self._keypressEventHandler(), false); + } else if (_document.attachEvent) { + // IE8 Compatibility + _document.attachEvent('onclick', self._breadcrumbEventHandler('click')); + _document.attachEvent('onkeypress', self._keypressEventHandler()); + } + } + + // record navigation (URL) changes + // NOTE: in Chrome App environment, touching history.pushState, *even inside + // a try/catch block*, will cause Chrome to output an error to console.error + // borrowed from: https://github.com/angular/angular.js/pull/13945/files + var chrome = _window.chrome; + var isChromePackagedApp = chrome && chrome.app && chrome.app.runtime; + var hasPushAndReplaceState = + !isChromePackagedApp && + _window.history && + _window.history.pushState && + _window.history.replaceState; + if (autoBreadcrumbs.location && hasPushAndReplaceState) { + // TODO: remove onpopstate handler on uninstall() + var oldOnPopState = _window.onpopstate; + _window.onpopstate = function() { + var currentHref = self._location.href; + self._captureUrlChange(self._lastHref, currentHref); + + if (oldOnPopState) { + return oldOnPopState.apply(this, arguments); + } + }; + + var historyReplacementFunction = function(origHistFunction) { + // note history.pushState.length is 0; intentionally not declaring + // params to preserve 0 arity + return function(/* state, title, url */) { + var url = arguments.length > 2 ? arguments[2] : undefined; + + // url argument is optional + if (url) { + // coerce to string (this is what pushState does) + self._captureUrlChange(self._lastHref, url + ''); + } + + return origHistFunction.apply(this, arguments); + }; + }; + + fill(_window.history, 'pushState', historyReplacementFunction, wrappedBuiltIns); + fill(_window.history, 'replaceState', historyReplacementFunction, wrappedBuiltIns); + } + + if (autoBreadcrumbs.console && 'console' in _window && console.log) { + // console + var consoleMethodCallback = function(msg, data) { + self.captureBreadcrumb({ + message: msg, + level: data.level, + category: 'console' + }); + }; + + each(['debug', 'info', 'warn', 'error', 'log'], function(_, level) { + wrapConsoleMethod(console, level, consoleMethodCallback); + }); + } + }, + + _restoreBuiltIns: function() { + // restore any wrapped builtins + var builtin; + while (this._wrappedBuiltIns.length) { + builtin = this._wrappedBuiltIns.shift(); + + var obj = builtin[0], + name = builtin[1], + orig = builtin[2]; + + obj[name] = orig; + } + }, + + _restoreConsole: function() { + // eslint-disable-next-line guard-for-in + for (var method in this._originalConsoleMethods) { + this._originalConsole[method] = this._originalConsoleMethods[method]; + } + }, + + _drainPlugins: function() { + var self = this; + + // FIX ME TODO + each(this._plugins, function(_, plugin) { + var installer = plugin[0]; + var args = plugin[1]; + installer.apply(self, [self].concat(args)); + }); + }, + + _parseDSN: function(str) { + var m = dsnPattern.exec(str), + dsn = {}, + i = 7; + + try { + while (i--) dsn[dsnKeys[i]] = m[i] || ''; + } catch (e) { + throw new RavenConfigError('Invalid DSN: ' + str); + } + + if (dsn.pass && !this._globalOptions.allowSecretKey) { + throw new RavenConfigError( + 'Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key' + ); + } + + return dsn; + }, + + _getGlobalServer: function(uri) { + // assemble the endpoint from the uri pieces + var globalServer = '//' + uri.host + (uri.port ? ':' + uri.port : ''); + + if (uri.protocol) { + globalServer = uri.protocol + ':' + globalServer; + } + return globalServer; + }, + + _handleOnErrorStackInfo: function() { + // if we are intentionally ignoring errors via onerror, bail out + if (!this._ignoreOnError) { + this._handleStackInfo.apply(this, arguments); + } + }, + + _handleStackInfo: function(stackInfo, options) { + var frames = this._prepareFrames(stackInfo, options); + + this._triggerEvent('handle', { + stackInfo: stackInfo, + options: options + }); + + this._processException( + stackInfo.name, + stackInfo.message, + stackInfo.url, + stackInfo.lineno, + frames, + options + ); + }, + + _prepareFrames: function(stackInfo, options) { + var self = this; + var frames = []; + if (stackInfo.stack && stackInfo.stack.length) { + each(stackInfo.stack, function(i, stack) { + var frame = self._normalizeFrame(stack, stackInfo.url); + if (frame) { + frames.push(frame); + } + }); + + // e.g. frames captured via captureMessage throw + if (options && options.trimHeadFrames) { + for (var j = 0; j < options.trimHeadFrames && j < frames.length; j++) { + frames[j].in_app = false; + } + } + } + frames = frames.slice(0, this._globalOptions.stackTraceLimit); + return frames; + }, + + _normalizeFrame: function(frame, stackInfoUrl) { + // normalize the frames data + var normalized = { + filename: frame.url, + lineno: frame.line, + colno: frame.column, + function: frame.func || '?' + }; + + // Case when we don't have any information about the error + // E.g. throwing a string or raw object, instead of an `Error` in Firefox + // Generating synthetic error doesn't add any value here + // + // We should probably somehow let a user know that they should fix their code + if (!frame.url) { + normalized.filename = stackInfoUrl; // fallback to whole stacks url from onerror handler + } + + normalized.in_app = !// determine if an exception came from outside of our app + // first we check the global includePaths list. + ( + (!!this._globalOptions.includePaths.test && + !this._globalOptions.includePaths.test(normalized.filename)) || + // Now we check for fun, if the function name is Raven or TraceKit + /(Raven|TraceKit)\./.test(normalized['function']) || + // finally, we do a last ditch effort and check for raven.min.js + /raven\.(min\.)?js$/.test(normalized.filename) + ); + + return normalized; + }, + + _processException: function(type, message, fileurl, lineno, frames, options) { + var prefixedMessage = (type ? type + ': ' : '') + (message || ''); + if ( + !!this._globalOptions.ignoreErrors.test && + (this._globalOptions.ignoreErrors.test(message) || + this._globalOptions.ignoreErrors.test(prefixedMessage)) + ) { + return; + } + + var stacktrace; + + if (frames && frames.length) { + fileurl = frames[0].filename || fileurl; + // Sentry expects frames oldest to newest + // and JS sends them as newest to oldest + frames.reverse(); + stacktrace = {frames: frames}; + } else if (fileurl) { + stacktrace = { + frames: [ + { + filename: fileurl, + lineno: lineno, + in_app: true + } + ] + }; + } + + if ( + !!this._globalOptions.ignoreUrls.test && + this._globalOptions.ignoreUrls.test(fileurl) + ) { + return; + } + + if ( + !!this._globalOptions.whitelistUrls.test && + !this._globalOptions.whitelistUrls.test(fileurl) + ) { + return; + } + + var data = objectMerge( + { + // sentry.interfaces.Exception + exception: { + values: [ + { + type: type, + value: message, + stacktrace: stacktrace + } + ] + }, + transaction: fileurl + }, + options + ); + + // Fire away! + this._send(data); + }, + + _trimPacket: function(data) { + // For now, we only want to truncate the two different messages + // but this could/should be expanded to just trim everything + var max = this._globalOptions.maxMessageLength; + if (data.message) { + data.message = truncate(data.message, max); + } + if (data.exception) { + var exception = data.exception.values[0]; + exception.value = truncate(exception.value, max); + } + + var request = data.request; + if (request) { + if (request.url) { + request.url = truncate(request.url, this._globalOptions.maxUrlLength); + } + if (request.Referer) { + request.Referer = truncate(request.Referer, this._globalOptions.maxUrlLength); + } + } + + if (data.breadcrumbs && data.breadcrumbs.values) + this._trimBreadcrumbs(data.breadcrumbs); + + return data; + }, + + /** + * Truncate breadcrumb values (right now just URLs) + */ + _trimBreadcrumbs: function(breadcrumbs) { + // known breadcrumb properties with urls + // TODO: also consider arbitrary prop values that start with (https?)?:// + var urlProps = ['to', 'from', 'url'], + urlProp, + crumb, + data; + + for (var i = 0; i < breadcrumbs.values.length; ++i) { + crumb = breadcrumbs.values[i]; + if ( + !crumb.hasOwnProperty('data') || + !isObject(crumb.data) || + objectFrozen(crumb.data) + ) + continue; + + data = objectMerge({}, crumb.data); + for (var j = 0; j < urlProps.length; ++j) { + urlProp = urlProps[j]; + if (data.hasOwnProperty(urlProp) && data[urlProp]) { + data[urlProp] = truncate(data[urlProp], this._globalOptions.maxUrlLength); + } + } + breadcrumbs.values[i].data = data; + } + }, + + _getHttpData: function() { + if (!this._hasNavigator && !this._hasDocument) return; + var httpData = {}; + + if (this._hasNavigator && _navigator.userAgent) { + httpData.headers = { + 'User-Agent': _navigator.userAgent + }; + } + + // Check in `window` instead of `document`, as we may be in ServiceWorker environment + if (_window.location && _window.location.href) { + httpData.url = _window.location.href; + } + + if (this._hasDocument && _document.referrer) { + if (!httpData.headers) httpData.headers = {}; + httpData.headers.Referer = _document.referrer; + } + + return httpData; + }, + + _resetBackoff: function() { + this._backoffDuration = 0; + this._backoffStart = null; + }, + + _shouldBackoff: function() { + return this._backoffDuration && now() - this._backoffStart < this._backoffDuration; + }, + + /** + * Returns true if the in-process data payload matches the signature + * of the previously-sent data + * + * NOTE: This has to be done at this level because TraceKit can generate + * data from window.onerror WITHOUT an exception object (IE8, IE9, + * other old browsers). This can take the form of an "exception" + * data object with a single frame (derived from the onerror args). + */ + _isRepeatData: function(current) { + var last = this._lastData; + + if ( + !last || + current.message !== last.message || // defined for captureMessage + current.transaction !== last.transaction // defined for captureException/onerror + ) + return false; + + // Stacktrace interface (i.e. from captureMessage) + if (current.stacktrace || last.stacktrace) { + return isSameStacktrace(current.stacktrace, last.stacktrace); + } else if (current.exception || last.exception) { + // Exception interface (i.e. from captureException/onerror) + return isSameException(current.exception, last.exception); + } + + return true; + }, + + _setBackoffState: function(request) { + // If we are already in a backoff state, don't change anything + if (this._shouldBackoff()) { + return; + } + + var status = request.status; + + // 400 - project_id doesn't exist or some other fatal + // 401 - invalid/revoked dsn + // 429 - too many requests + if (!(status === 400 || status === 401 || status === 429)) return; + + var retry; + try { + // If Retry-After is not in Access-Control-Expose-Headers, most + // browsers will throw an exception trying to access it + if (supportsFetch()) { + retry = request.headers.get('Retry-After'); + } else { + retry = request.getResponseHeader('Retry-After'); + } + + // Retry-After is returned in seconds + retry = parseInt(retry, 10) * 1000; + } catch (e) { + /* eslint no-empty:0 */ + } + + this._backoffDuration = retry + ? // If Sentry server returned a Retry-After value, use it + retry + : // Otherwise, double the last backoff duration (starts at 1 sec) + this._backoffDuration * 2 || 1000; + + this._backoffStart = now(); + }, + + _send: function(data) { + var globalOptions = this._globalOptions; + + var baseData = { + project: this._globalProject, + logger: globalOptions.logger, + platform: 'javascript' + }, + httpData = this._getHttpData(); + + if (httpData) { + baseData.request = httpData; + } + + // HACK: delete `trimHeadFrames` to prevent from appearing in outbound payload + if (data.trimHeadFrames) delete data.trimHeadFrames; + + data = objectMerge(baseData, data); + + // Merge in the tags and extra separately since objectMerge doesn't handle a deep merge + data.tags = objectMerge(objectMerge({}, this._globalContext.tags), data.tags); + data.extra = objectMerge(objectMerge({}, this._globalContext.extra), data.extra); + + // Send along our own collected metadata with extra + data.extra['session:duration'] = now() - this._startTime; + + if (this._breadcrumbs && this._breadcrumbs.length > 0) { + // intentionally make shallow copy so that additions + // to breadcrumbs aren't accidentally sent in this request + data.breadcrumbs = { + values: [].slice.call(this._breadcrumbs, 0) + }; + } + + if (this._globalContext.user) { + // sentry.interfaces.User + data.user = this._globalContext.user; + } + + // Include the environment if it's defined in globalOptions + if (globalOptions.environment) data.environment = globalOptions.environment; + + // Include the release if it's defined in globalOptions + if (globalOptions.release) data.release = globalOptions.release; + + // Include server_name if it's defined in globalOptions + if (globalOptions.serverName) data.server_name = globalOptions.serverName; + + data = this._sanitizeData(data); + + // Cleanup empty properties before sending them to the server + Object.keys(data).forEach(function(key) { + if (data[key] == null || data[key] === '' || isEmptyObject(data[key])) { + delete data[key]; + } + }); + + if (isFunction(globalOptions.dataCallback)) { + data = globalOptions.dataCallback(data) || data; + } + + // Why?????????? + if (!data || isEmptyObject(data)) { + return; + } + + // Check if the request should be filtered or not + if ( + isFunction(globalOptions.shouldSendCallback) && + !globalOptions.shouldSendCallback(data) + ) { + return; + } + + // Backoff state: Sentry server previously responded w/ an error (e.g. 429 - too many requests), + // so drop requests until "cool-off" period has elapsed. + if (this._shouldBackoff()) { + this._logDebug('warn', 'Raven dropped error due to backoff: ', data); + return; + } + + if (typeof globalOptions.sampleRate === 'number') { + if (Math.random() < globalOptions.sampleRate) { + this._sendProcessedPayload(data); + } + } else { + this._sendProcessedPayload(data); + } + }, + + _sanitizeData: function(data) { + return sanitize(data, this._globalOptions.sanitizeKeys); + }, + + _getUuid: function() { + return uuid4(); + }, + + _sendProcessedPayload: function(data, callback) { + var self = this; + var globalOptions = this._globalOptions; + + if (!this.isSetup()) return; + + // Try and clean up the packet before sending by truncating long values + data = this._trimPacket(data); + + // ideally duplicate error testing should occur *before* dataCallback/shouldSendCallback, + // but this would require copying an un-truncated copy of the data packet, which can be + // arbitrarily deep (extra_data) -- could be worthwhile? will revisit + if (!this._globalOptions.allowDuplicates && this._isRepeatData(data)) { + this._logDebug('warn', 'Raven dropped repeat event: ', data); + return; + } + + // Send along an event_id if not explicitly passed. + // This event_id can be used to reference the error within Sentry itself. + // Set lastEventId after we know the error should actually be sent + this._lastEventId = data.event_id || (data.event_id = this._getUuid()); + + // Store outbound payload after trim + this._lastData = data; + + this._logDebug('debug', 'Raven about to send:', data); + + var auth = { + sentry_version: '7', + sentry_client: 'raven-js/' + this.VERSION, + sentry_key: this._globalKey + }; + + if (this._globalSecret) { + auth.sentry_secret = this._globalSecret; + } + + var exception = data.exception && data.exception.values[0]; + + // only capture 'sentry' breadcrumb is autoBreadcrumbs is truthy + if ( + this._globalOptions.autoBreadcrumbs && + this._globalOptions.autoBreadcrumbs.sentry + ) { + this.captureBreadcrumb({ + category: 'sentry', + message: exception + ? (exception.type ? exception.type + ': ' : '') + exception.value + : data.message, + event_id: data.event_id, + level: data.level || 'error' // presume error unless specified + }); + } + + var url = this._globalEndpoint; + (globalOptions.transport || this._makeRequest).call(this, { + url: url, + auth: auth, + data: data, + options: globalOptions, + onSuccess: function success() { + self._resetBackoff(); + + self._triggerEvent('success', { + data: data, + src: url + }); + callback && callback(); + }, + onError: function failure(error) { + self._logDebug('error', 'Raven transport failed to send: ', error); + + if (error.request) { + self._setBackoffState(error.request); + } + + self._triggerEvent('failure', { + data: data, + src: url + }); + error = error || new Error('Raven send failed (no additional details provided)'); + callback && callback(error); + } + }); + }, + + _makeRequest: function(opts) { + // Auth is intentionally sent as part of query string (NOT as custom HTTP header) to avoid preflight CORS requests + var url = opts.url + '?' + urlencode(opts.auth); + + var evaluatedHeaders = null; + var evaluatedFetchParameters = {}; + + if (opts.options.headers) { + evaluatedHeaders = this._evaluateHash(opts.options.headers); + } + + if (opts.options.fetchParameters) { + evaluatedFetchParameters = this._evaluateHash(opts.options.fetchParameters); + } + + if (supportsFetch()) { + evaluatedFetchParameters.body = stringify(opts.data); + + var defaultFetchOptions = objectMerge({}, this._fetchDefaults); + var fetchOptions = objectMerge(defaultFetchOptions, evaluatedFetchParameters); + + if (evaluatedHeaders) { + fetchOptions.headers = evaluatedHeaders; + } + + return _window + .fetch(url, fetchOptions) + .then(function(response) { + if (response.ok) { + opts.onSuccess && opts.onSuccess(); + } else { + var error = new Error('Sentry error code: ' + response.status); + // It's called request only to keep compatibility with XHR interface + // and not add more redundant checks in setBackoffState method + error.request = response; + opts.onError && opts.onError(error); + } + }) + ['catch'](function() { + opts.onError && + opts.onError(new Error('Sentry error code: network unavailable')); + }); + } + + var request = _window.XMLHttpRequest && new _window.XMLHttpRequest(); + if (!request) return; + + // if browser doesn't support CORS (e.g. IE7), we are out of luck + var hasCORS = 'withCredentials' in request || typeof XDomainRequest !== 'undefined'; + + if (!hasCORS) return; + + if ('withCredentials' in request) { + request.onreadystatechange = function() { + if (request.readyState !== 4) { + return; + } else if (request.status === 200) { + opts.onSuccess && opts.onSuccess(); + } else if (opts.onError) { + var err = new Error('Sentry error code: ' + request.status); + err.request = request; + opts.onError(err); + } + }; + } else { + request = new XDomainRequest(); + // xdomainrequest cannot go http -> https (or vice versa), + // so always use protocol relative + url = url.replace(/^https?:/, ''); + + // onreadystatechange not supported by XDomainRequest + if (opts.onSuccess) { + request.onload = opts.onSuccess; + } + if (opts.onError) { + request.onerror = function() { + var err = new Error('Sentry error code: XDomainRequest'); + err.request = request; + opts.onError(err); + }; + } + } + + request.open('POST', url); + + if (evaluatedHeaders) { + each(evaluatedHeaders, function(key, value) { + request.setRequestHeader(key, value); + }); + } + + request.send(stringify(opts.data)); + }, + + _evaluateHash: function(hash) { + var evaluated = {}; + + for (var key in hash) { + if (hash.hasOwnProperty(key)) { + var value = hash[key]; + evaluated[key] = typeof value === 'function' ? value() : value; + } + } + + return evaluated; + }, + + _logDebug: function(level) { + // We allow `Raven.debug` and `Raven.config(DSN, { debug: true })` to not make backward incompatible API change + if ( + this._originalConsoleMethods[level] && + (this.debug || this._globalOptions.debug) + ) { + // In IE<10 console methods do not have their own 'apply' method + Function.prototype.apply.call( + this._originalConsoleMethods[level], + this._originalConsole, + [].slice.call(arguments, 1) + ); + } + }, + + _mergeContext: function(key, context) { + if (isUndefined(context)) { + delete this._globalContext[key]; + } else { + this._globalContext[key] = objectMerge(this._globalContext[key] || {}, context); + } + } +}; + +// Deprecations +Raven.prototype.setUser = Raven.prototype.setUserContext; +Raven.prototype.setReleaseContext = Raven.prototype.setRelease; + +module.exports = Raven; + +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"10":10,"11":11,"12":12,"5":5,"6":6,"9":9}],8:[function(_dereq_,module,exports){ +(function (global){ +/** + * Enforces a single instance of the Raven client, and the + * main entry point for Raven. If you are a consumer of the + * Raven library, you SHOULD load this file (vs raven.js). + **/ + +var RavenConstructor = _dereq_(7); + +// This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) +var _window = + typeof window !== 'undefined' + ? window + : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; +var _Raven = _window.Raven; + +var Raven = new RavenConstructor(); + +/* + * Allow multiple versions of Raven to be installed. + * Strip Raven from the global context and returns the instance. + * + * @return {Raven} + */ +Raven.noConflict = function() { + _window.Raven = _Raven; + return Raven; +}; + +Raven.afterLoad(); + +module.exports = Raven; + +/** + * DISCLAIMER: + * + * Expose `Client` constructor for cases where user want to track multiple "sub-applications" in one larger app. + * It's not meant to be used by a wide audience, so pleaaase make sure that you know what you're doing before using it. + * Accidentally calling `install` multiple times, may result in an unexpected behavior that's very hard to debug. + * + * It's called `Client' to be in-line with Raven Node implementation. + * + * HOWTO: + * + * import Raven from 'raven-js'; + * + * const someAppReporter = new Raven.Client(); + * const someOtherAppReporter = new Raven.Client(); + * + * someAppReporter.config('__DSN__', { + * ...config goes here + * }); + * + * someOtherAppReporter.config('__OTHER_DSN__', { + * ...config goes here + * }); + * + * someAppReporter.captureMessage(...); + * someAppReporter.captureException(...); + * someAppReporter.captureBreadcrumb(...); + * + * someOtherAppReporter.captureMessage(...); + * someOtherAppReporter.captureException(...); + * someOtherAppReporter.captureBreadcrumb(...); + * + * It should "just work". + */ +module.exports.Client = RavenConstructor; + +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"7":7}],9:[function(_dereq_,module,exports){ +(function (global){ +var stringify = _dereq_(11); + +var _window = + typeof window !== 'undefined' + ? window + : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; + +function isObject(what) { + return typeof what === 'object' && what !== null; +} + +// Yanked from https://git.io/vS8DV re-used under CC0 +// with some tiny modifications +function isError(value) { + switch (Object.prototype.toString.call(value)) { + case '[object Error]': + return true; + case '[object Exception]': + return true; + case '[object DOMException]': + return true; + default: + return value instanceof Error; + } +} + +function isErrorEvent(value) { + return Object.prototype.toString.call(value) === '[object ErrorEvent]'; +} + +function isDOMError(value) { + return Object.prototype.toString.call(value) === '[object DOMError]'; +} + +function isDOMException(value) { + return Object.prototype.toString.call(value) === '[object DOMException]'; +} + +function isUndefined(what) { + return what === void 0; +} + +function isFunction(what) { + return typeof what === 'function'; +} + +function isPlainObject(what) { + return Object.prototype.toString.call(what) === '[object Object]'; +} + +function isString(what) { + return Object.prototype.toString.call(what) === '[object String]'; +} + +function isArray(what) { + return Object.prototype.toString.call(what) === '[object Array]'; +} + +function isEmptyObject(what) { + if (!isPlainObject(what)) return false; + + for (var _ in what) { + if (what.hasOwnProperty(_)) { + return false; + } + } + return true; +} + +function supportsErrorEvent() { + try { + new ErrorEvent(''); // eslint-disable-line no-new + return true; + } catch (e) { + return false; + } +} + +function supportsDOMError() { + try { + new DOMError(''); // eslint-disable-line no-new + return true; + } catch (e) { + return false; + } +} + +function supportsDOMException() { + try { + new DOMException(''); // eslint-disable-line no-new + return true; + } catch (e) { + return false; + } +} + +function supportsFetch() { + if (!('fetch' in _window)) return false; + + try { + new Headers(); // eslint-disable-line no-new + new Request(''); // eslint-disable-line no-new + new Response(); // eslint-disable-line no-new + return true; + } catch (e) { + return false; + } +} + +// Despite all stars in the sky saying that Edge supports old draft syntax, aka 'never', 'always', 'origin' and 'default +// https://caniuse.com/#feat=referrer-policy +// It doesn't. And it throw exception instead of ignoring this parameter... +// REF: https://github.com/getsentry/raven-js/issues/1233 +function supportsReferrerPolicy() { + if (!supportsFetch()) return false; + + try { + // eslint-disable-next-line no-new + new Request('pickleRick', { + referrerPolicy: 'origin' + }); + return true; + } catch (e) { + return false; + } +} + +function supportsPromiseRejectionEvent() { + return typeof PromiseRejectionEvent === 'function'; +} + +function wrappedCallback(callback) { + function dataCallback(data, original) { + var normalizedData = callback(data) || data; + if (original) { + return original(normalizedData) || normalizedData; + } + return normalizedData; + } + + return dataCallback; +} + +function each(obj, callback) { + var i, j; + + if (isUndefined(obj.length)) { + for (i in obj) { + if (hasKey(obj, i)) { + callback.call(null, i, obj[i]); + } + } + } else { + j = obj.length; + if (j) { + for (i = 0; i < j; i++) { + callback.call(null, i, obj[i]); + } + } + } +} + +function objectMerge(obj1, obj2) { + if (!obj2) { + return obj1; + } + each(obj2, function(key, value) { + obj1[key] = value; + }); + return obj1; +} + +/** + * This function is only used for react-native. + * react-native freezes object that have already been sent over the + * js bridge. We need this function in order to check if the object is frozen. + * So it's ok that objectFrozen returns false if Object.isFrozen is not + * supported because it's not relevant for other "platforms". See related issue: + * https://github.com/getsentry/react-native-sentry/issues/57 + */ +function objectFrozen(obj) { + if (!Object.isFrozen) { + return false; + } + return Object.isFrozen(obj); +} + +function truncate(str, max) { + if (typeof max !== 'number') { + throw new Error('2nd argument to `truncate` function should be a number'); + } + if (typeof str !== 'string' || max === 0) { + return str; + } + return str.length <= max ? str : str.substr(0, max) + '\u2026'; +} + +/** + * hasKey, a better form of hasOwnProperty + * Example: hasKey(MainHostObject, property) === true/false + * + * @param {Object} host object to check property + * @param {string} key to check + */ +function hasKey(object, key) { + return Object.prototype.hasOwnProperty.call(object, key); +} + +function joinRegExp(patterns) { + // Combine an array of regular expressions and strings into one large regexp + // Be mad. + var sources = [], + i = 0, + len = patterns.length, + pattern; + + for (; i < len; i++) { + pattern = patterns[i]; + if (isString(pattern)) { + // If it's a string, we need to escape it + // Taken from: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions + sources.push(pattern.replace(/([.*+?^=!:${}()|\[\]\/\\])/g, '\\$1')); + } else if (pattern && pattern.source) { + // If it's a regexp already, we want to extract the source + sources.push(pattern.source); + } + // Intentionally skip other cases + } + return new RegExp(sources.join('|'), 'i'); +} + +function urlencode(o) { + var pairs = []; + each(o, function(key, value) { + pairs.push(encodeURIComponent(key) + '=' + encodeURIComponent(value)); + }); + return pairs.join('&'); +} + +// borrowed from https://tools.ietf.org/html/rfc3986#appendix-B +// intentionally using regex and not href parsing trick because React Native and other +// environments where DOM might not be available +function parseUrl(url) { + if (typeof url !== 'string') return {}; + var match = url.match(/^(([^:\/?#]+):)?(\/\/([^\/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?$/); + + // coerce to undefined values to empty string so we don't get 'undefined' + var query = match[6] || ''; + var fragment = match[8] || ''; + return { + protocol: match[2], + host: match[4], + path: match[5], + relative: match[5] + query + fragment // everything minus origin + }; +} +function uuid4() { + var crypto = _window.crypto || _window.msCrypto; + + if (!isUndefined(crypto) && crypto.getRandomValues) { + // Use window.crypto API if available + // eslint-disable-next-line no-undef + var arr = new Uint16Array(8); + crypto.getRandomValues(arr); + + // set 4 in byte 7 + arr[3] = (arr[3] & 0xfff) | 0x4000; + // set 2 most significant bits of byte 9 to '10' + arr[4] = (arr[4] & 0x3fff) | 0x8000; + + var pad = function(num) { + var v = num.toString(16); + while (v.length < 4) { + v = '0' + v; + } + return v; + }; + + return ( + pad(arr[0]) + + pad(arr[1]) + + pad(arr[2]) + + pad(arr[3]) + + pad(arr[4]) + + pad(arr[5]) + + pad(arr[6]) + + pad(arr[7]) + ); + } else { + // http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/2117523#2117523 + return 'xxxxxxxxxxxx4xxxyxxxxxxxxxxxxxxx'.replace(/[xy]/g, function(c) { + var r = (Math.random() * 16) | 0, + v = c === 'x' ? r : (r & 0x3) | 0x8; + return v.toString(16); + }); + } +} + +/** + * Given a child DOM element, returns a query-selector statement describing that + * and its ancestors + * e.g. [HTMLElement] => body > div > input#foo.btn[name=baz] + * @param elem + * @returns {string} + */ +function htmlTreeAsString(elem) { + /* eslint no-extra-parens:0*/ + var MAX_TRAVERSE_HEIGHT = 5, + MAX_OUTPUT_LEN = 80, + out = [], + height = 0, + len = 0, + separator = ' > ', + sepLength = separator.length, + nextStr; + + while (elem && height++ < MAX_TRAVERSE_HEIGHT) { + nextStr = htmlElementAsString(elem); + // bail out if + // - nextStr is the 'html' element + // - the length of the string that would be created exceeds MAX_OUTPUT_LEN + // (ignore this limit if we are on the first iteration) + if ( + nextStr === 'html' || + (height > 1 && len + out.length * sepLength + nextStr.length >= MAX_OUTPUT_LEN) + ) { + break; + } + + out.push(nextStr); + + len += nextStr.length; + elem = elem.parentNode; + } + + return out.reverse().join(separator); +} + +/** + * Returns a simple, query-selector representation of a DOM element + * e.g. [HTMLElement] => input#foo.btn[name=baz] + * @param HTMLElement + * @returns {string} + */ +function htmlElementAsString(elem) { + var out = [], + className, + classes, + key, + attr, + i; + + if (!elem || !elem.tagName) { + return ''; + } + + out.push(elem.tagName.toLowerCase()); + if (elem.id) { + out.push('#' + elem.id); + } + + className = elem.className; + if (className && isString(className)) { + classes = className.split(/\s+/); + for (i = 0; i < classes.length; i++) { + out.push('.' + classes[i]); + } + } + var attrWhitelist = ['type', 'name', 'title', 'alt']; + for (i = 0; i < attrWhitelist.length; i++) { + key = attrWhitelist[i]; + attr = elem.getAttribute(key); + if (attr) { + out.push('[' + key + '="' + attr + '"]'); + } + } + return out.join(''); +} + +/** + * Returns true if either a OR b is truthy, but not both + */ +function isOnlyOneTruthy(a, b) { + return !!(!!a ^ !!b); +} + +/** + * Returns true if both parameters are undefined + */ +function isBothUndefined(a, b) { + return isUndefined(a) && isUndefined(b); +} + +/** + * Returns true if the two input exception interfaces have the same content + */ +function isSameException(ex1, ex2) { + if (isOnlyOneTruthy(ex1, ex2)) return false; + + ex1 = ex1.values[0]; + ex2 = ex2.values[0]; + + if (ex1.type !== ex2.type || ex1.value !== ex2.value) return false; + + // in case both stacktraces are undefined, we can't decide so default to false + if (isBothUndefined(ex1.stacktrace, ex2.stacktrace)) return false; + + return isSameStacktrace(ex1.stacktrace, ex2.stacktrace); +} + +/** + * Returns true if the two input stack trace interfaces have the same content + */ +function isSameStacktrace(stack1, stack2) { + if (isOnlyOneTruthy(stack1, stack2)) return false; + + var frames1 = stack1.frames; + var frames2 = stack2.frames; + + // Exit early if frame count differs + if (frames1.length !== frames2.length) return false; + + // Iterate through every frame; bail out if anything differs + var a, b; + for (var i = 0; i < frames1.length; i++) { + a = frames1[i]; + b = frames2[i]; + if ( + a.filename !== b.filename || + a.lineno !== b.lineno || + a.colno !== b.colno || + a['function'] !== b['function'] + ) + return false; + } + return true; +} + +/** + * Polyfill a method + * @param obj object e.g. `document` + * @param name method name present on object e.g. `addEventListener` + * @param replacement replacement function + * @param track {optional} record instrumentation to an array + */ +function fill(obj, name, replacement, track) { + if (obj == null) return; + var orig = obj[name]; + obj[name] = replacement(orig); + obj[name].__raven__ = true; + obj[name].__orig__ = orig; + if (track) { + track.push([obj, name, orig]); + } +} + +/** + * Join values in array + * @param input array of values to be joined together + * @param delimiter string to be placed in-between values + * @returns {string} + */ +function safeJoin(input, delimiter) { + if (!isArray(input)) return ''; + + var output = []; + + for (var i = 0; i < input.length; i++) { + try { + output.push(String(input[i])); + } catch (e) { + output.push('[value cannot be serialized]'); + } + } + + return output.join(delimiter); +} + +// Default Node.js REPL depth +var MAX_SERIALIZE_EXCEPTION_DEPTH = 3; +// 50kB, as 100kB is max payload size, so half sounds reasonable +var MAX_SERIALIZE_EXCEPTION_SIZE = 50 * 1024; +var MAX_SERIALIZE_KEYS_LENGTH = 40; + +function utf8Length(value) { + return ~-encodeURI(value).split(/%..|./).length; +} + +function jsonSize(value) { + return utf8Length(JSON.stringify(value)); +} + +function serializeValue(value) { + if (typeof value === 'string') { + var maxLength = 40; + return truncate(value, maxLength); + } else if ( + typeof value === 'number' || + typeof value === 'boolean' || + typeof value === 'undefined' + ) { + return value; + } + + var type = Object.prototype.toString.call(value); + + // Node.js REPL notation + if (type === '[object Object]') return '[Object]'; + if (type === '[object Array]') return '[Array]'; + if (type === '[object Function]') + return value.name ? '[Function: ' + value.name + ']' : '[Function]'; + + return value; +} + +function serializeObject(value, depth) { + if (depth === 0) return serializeValue(value); + + if (isPlainObject(value)) { + return Object.keys(value).reduce(function(acc, key) { + acc[key] = serializeObject(value[key], depth - 1); + return acc; + }, {}); + } else if (Array.isArray(value)) { + return value.map(function(val) { + return serializeObject(val, depth - 1); + }); + } + + return serializeValue(value); +} + +function serializeException(ex, depth, maxSize) { + if (!isPlainObject(ex)) return ex; + + depth = typeof depth !== 'number' ? MAX_SERIALIZE_EXCEPTION_DEPTH : depth; + maxSize = typeof depth !== 'number' ? MAX_SERIALIZE_EXCEPTION_SIZE : maxSize; + + var serialized = serializeObject(ex, depth); + + if (jsonSize(stringify(serialized)) > maxSize) { + return serializeException(ex, depth - 1); + } + + return serialized; +} + +function serializeKeysForMessage(keys, maxLength) { + if (typeof keys === 'number' || typeof keys === 'string') return keys.toString(); + if (!Array.isArray(keys)) return ''; + + keys = keys.filter(function(key) { + return typeof key === 'string'; + }); + if (keys.length === 0) return '[object has no keys]'; + + maxLength = typeof maxLength !== 'number' ? MAX_SERIALIZE_KEYS_LENGTH : maxLength; + if (keys[0].length >= maxLength) return keys[0]; + + for (var usedKeys = keys.length; usedKeys > 0; usedKeys--) { + var serialized = keys.slice(0, usedKeys).join(', '); + if (serialized.length > maxLength) continue; + if (usedKeys === keys.length) return serialized; + return serialized + '\u2026'; + } + + return ''; +} + +function sanitize(input, sanitizeKeys) { + if (!isArray(sanitizeKeys) || (isArray(sanitizeKeys) && sanitizeKeys.length === 0)) + return input; + + var sanitizeRegExp = joinRegExp(sanitizeKeys); + var sanitizeMask = '********'; + var safeInput; + + try { + safeInput = JSON.parse(stringify(input)); + } catch (o_O) { + return input; + } + + function sanitizeWorker(workerInput) { + if (isArray(workerInput)) { + return workerInput.map(function(val) { + return sanitizeWorker(val); + }); + } + + if (isPlainObject(workerInput)) { + return Object.keys(workerInput).reduce(function(acc, k) { + if (sanitizeRegExp.test(k)) { + acc[k] = sanitizeMask; + } else { + acc[k] = sanitizeWorker(workerInput[k]); + } + return acc; + }, {}); + } + + return workerInput; + } + + return sanitizeWorker(safeInput); +} + +module.exports = { + isObject: isObject, + isError: isError, + isErrorEvent: isErrorEvent, + isDOMError: isDOMError, + isDOMException: isDOMException, + isUndefined: isUndefined, + isFunction: isFunction, + isPlainObject: isPlainObject, + isString: isString, + isArray: isArray, + isEmptyObject: isEmptyObject, + supportsErrorEvent: supportsErrorEvent, + supportsDOMError: supportsDOMError, + supportsDOMException: supportsDOMException, + supportsFetch: supportsFetch, + supportsReferrerPolicy: supportsReferrerPolicy, + supportsPromiseRejectionEvent: supportsPromiseRejectionEvent, + wrappedCallback: wrappedCallback, + each: each, + objectMerge: objectMerge, + truncate: truncate, + objectFrozen: objectFrozen, + hasKey: hasKey, + joinRegExp: joinRegExp, + urlencode: urlencode, + uuid4: uuid4, + htmlTreeAsString: htmlTreeAsString, + htmlElementAsString: htmlElementAsString, + isSameException: isSameException, + isSameStacktrace: isSameStacktrace, + parseUrl: parseUrl, + fill: fill, + safeJoin: safeJoin, + serializeException: serializeException, + serializeKeysForMessage: serializeKeysForMessage, + sanitize: sanitize +}; + +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"11":11}],10:[function(_dereq_,module,exports){ +(function (global){ +var utils = _dereq_(9); + +/* + TraceKit - Cross brower stack traces + + This was originally forked from github.com/occ/TraceKit, but has since been + largely re-written and is now maintained as part of raven-js. Tests for + this are in test/vendor. + + MIT license +*/ + +var TraceKit = { + collectWindowErrors: true, + debug: false +}; + +// This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) +var _window = + typeof window !== 'undefined' + ? window + : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; + +// global reference to slice +var _slice = [].slice; +var UNKNOWN_FUNCTION = '?'; + +// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error#Error_types +var ERROR_TYPES_RE = /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/; + +function getLocationHref() { + if (typeof document === 'undefined' || document.location == null) return ''; + return document.location.href; +} + +function getLocationOrigin() { + if (typeof document === 'undefined' || document.location == null) return ''; + + // Oh dear IE10... + if (!document.location.origin) { + document.location.origin = + document.location.protocol + + '//' + + document.location.hostname + + (document.location.port ? ':' + document.location.port : ''); + } + + return document.location.origin; +} + +/** + * TraceKit.report: cross-browser processing of unhandled exceptions + * + * Syntax: + * TraceKit.report.subscribe(function(stackInfo) { ... }) + * TraceKit.report.unsubscribe(function(stackInfo) { ... }) + * TraceKit.report(exception) + * try { ...code... } catch(ex) { TraceKit.report(ex); } + * + * Supports: + * - Firefox: full stack trace with line numbers, plus column number + * on top frame; column number is not guaranteed + * - Opera: full stack trace with line and column numbers + * - Chrome: full stack trace with line and column numbers + * - Safari: line and column number for the top frame only; some frames + * may be missing, and column number is not guaranteed + * - IE: line and column number for the top frame only; some frames + * may be missing, and column number is not guaranteed + * + * In theory, TraceKit should work on all of the following versions: + * - IE5.5+ (only 8.0 tested) + * - Firefox 0.9+ (only 3.5+ tested) + * - Opera 7+ (only 10.50 tested; versions 9 and earlier may require + * Exceptions Have Stacktrace to be enabled in opera:config) + * - Safari 3+ (only 4+ tested) + * - Chrome 1+ (only 5+ tested) + * - Konqueror 3.5+ (untested) + * + * Requires TraceKit.computeStackTrace. + * + * Tries to catch all unhandled exceptions and report them to the + * subscribed handlers. Please note that TraceKit.report will rethrow the + * exception. This is REQUIRED in order to get a useful stack trace in IE. + * If the exception does not reach the top of the browser, you will only + * get a stack trace from the point where TraceKit.report was called. + * + * Handlers receive a stackInfo object as described in the + * TraceKit.computeStackTrace docs. + */ +TraceKit.report = (function reportModuleWrapper() { + var handlers = [], + lastArgs = null, + lastException = null, + lastExceptionStack = null; + + /** + * Add a crash handler. + * @param {Function} handler + */ + function subscribe(handler) { + installGlobalHandler(); + handlers.push(handler); + } + + /** + * Remove a crash handler. + * @param {Function} handler + */ + function unsubscribe(handler) { + for (var i = handlers.length - 1; i >= 0; --i) { + if (handlers[i] === handler) { + handlers.splice(i, 1); + } + } + } + + /** + * Remove all crash handlers. + */ + function unsubscribeAll() { + uninstallGlobalHandler(); + handlers = []; + } + + /** + * Dispatch stack information to all handlers. + * @param {Object.} stack + */ + function notifyHandlers(stack, isWindowError) { + var exception = null; + if (isWindowError && !TraceKit.collectWindowErrors) { + return; + } + for (var i in handlers) { + if (handlers.hasOwnProperty(i)) { + try { + handlers[i].apply(null, [stack].concat(_slice.call(arguments, 2))); + } catch (inner) { + exception = inner; + } + } + } + + if (exception) { + throw exception; + } + } + + var _oldOnerrorHandler, _onErrorHandlerInstalled; + + /** + * Ensures all global unhandled exceptions are recorded. + * Supported by Gecko and IE. + * @param {string} msg Error message. + * @param {string} url URL of script that generated the exception. + * @param {(number|string)} lineNo The line number at which the error + * occurred. + * @param {?(number|string)} colNo The column number at which the error + * occurred. + * @param {?Error} ex The actual Error object. + */ + function traceKitWindowOnError(msg, url, lineNo, colNo, ex) { + var stack = null; + // If 'ex' is ErrorEvent, get real Error from inside + var exception = utils.isErrorEvent(ex) ? ex.error : ex; + // If 'msg' is ErrorEvent, get real message from inside + var message = utils.isErrorEvent(msg) ? msg.message : msg; + + if (lastExceptionStack) { + TraceKit.computeStackTrace.augmentStackTraceWithInitialElement( + lastExceptionStack, + url, + lineNo, + message + ); + processLastException(); + } else if (exception && utils.isError(exception)) { + // non-string `exception` arg; attempt to extract stack trace + + // New chrome and blink send along a real error object + // Let's just report that like a normal error. + // See: https://mikewest.org/2013/08/debugging-runtime-errors-with-window-onerror + stack = TraceKit.computeStackTrace(exception); + notifyHandlers(stack, true); + } else { + var location = { + url: url, + line: lineNo, + column: colNo + }; + + var name = undefined; + var groups; + + if ({}.toString.call(message) === '[object String]') { + var groups = message.match(ERROR_TYPES_RE); + if (groups) { + name = groups[1]; + message = groups[2]; + } + } + + location.func = UNKNOWN_FUNCTION; + + stack = { + name: name, + message: message, + url: getLocationHref(), + stack: [location] + }; + notifyHandlers(stack, true); + } + + if (_oldOnerrorHandler) { + return _oldOnerrorHandler.apply(this, arguments); + } + + return false; + } + + function installGlobalHandler() { + if (_onErrorHandlerInstalled) { + return; + } + _oldOnerrorHandler = _window.onerror; + _window.onerror = traceKitWindowOnError; + _onErrorHandlerInstalled = true; + } + + function uninstallGlobalHandler() { + if (!_onErrorHandlerInstalled) { + return; + } + _window.onerror = _oldOnerrorHandler; + _onErrorHandlerInstalled = false; + _oldOnerrorHandler = undefined; + } + + function processLastException() { + var _lastExceptionStack = lastExceptionStack, + _lastArgs = lastArgs; + lastArgs = null; + lastExceptionStack = null; + lastException = null; + notifyHandlers.apply(null, [_lastExceptionStack, false].concat(_lastArgs)); + } + + /** + * Reports an unhandled Error to TraceKit. + * @param {Error} ex + * @param {?boolean} rethrow If false, do not re-throw the exception. + * Only used for window.onerror to not cause an infinite loop of + * rethrowing. + */ + function report(ex, rethrow) { + var args = _slice.call(arguments, 1); + if (lastExceptionStack) { + if (lastException === ex) { + return; // already caught by an inner catch block, ignore + } else { + processLastException(); + } + } + + var stack = TraceKit.computeStackTrace(ex); + lastExceptionStack = stack; + lastException = ex; + lastArgs = args; + + // If the stack trace is incomplete, wait for 2 seconds for + // slow slow IE to see if onerror occurs or not before reporting + // this exception; otherwise, we will end up with an incomplete + // stack trace + setTimeout(function() { + if (lastException === ex) { + processLastException(); + } + }, stack.incomplete ? 2000 : 0); + + if (rethrow !== false) { + throw ex; // re-throw to propagate to the top level (and cause window.onerror) + } + } + + report.subscribe = subscribe; + report.unsubscribe = unsubscribe; + report.uninstall = unsubscribeAll; + return report; +})(); + +/** + * TraceKit.computeStackTrace: cross-browser stack traces in JavaScript + * + * Syntax: + * s = TraceKit.computeStackTrace(exception) // consider using TraceKit.report instead (see below) + * Returns: + * s.name - exception name + * s.message - exception message + * s.stack[i].url - JavaScript or HTML file URL + * s.stack[i].func - function name, or empty for anonymous functions (if guessing did not work) + * s.stack[i].args - arguments passed to the function, if known + * s.stack[i].line - line number, if known + * s.stack[i].column - column number, if known + * + * Supports: + * - Firefox: full stack trace with line numbers and unreliable column + * number on top frame + * - Opera 10: full stack trace with line and column numbers + * - Opera 9-: full stack trace with line numbers + * - Chrome: full stack trace with line and column numbers + * - Safari: line and column number for the topmost stacktrace element + * only + * - IE: no line numbers whatsoever + * + * Tries to guess names of anonymous functions by looking for assignments + * in the source code. In IE and Safari, we have to guess source file names + * by searching for function bodies inside all page scripts. This will not + * work for scripts that are loaded cross-domain. + * Here be dragons: some function names may be guessed incorrectly, and + * duplicate functions may be mismatched. + * + * TraceKit.computeStackTrace should only be used for tracing purposes. + * Logging of unhandled exceptions should be done with TraceKit.report, + * which builds on top of TraceKit.computeStackTrace and provides better + * IE support by utilizing the window.onerror event to retrieve information + * about the top of the stack. + * + * Note: In IE and Safari, no stack trace is recorded on the Error object, + * so computeStackTrace instead walks its *own* chain of callers. + * This means that: + * * in Safari, some methods may be missing from the stack trace; + * * in IE, the topmost function in the stack trace will always be the + * caller of computeStackTrace. + * + * This is okay for tracing (because you are likely to be calling + * computeStackTrace from the function you want to be the topmost element + * of the stack trace anyway), but not okay for logging unhandled + * exceptions (because your catch block will likely be far away from the + * inner function that actually caused the exception). + * + */ +TraceKit.computeStackTrace = (function computeStackTraceWrapper() { + // Contents of Exception in various browsers. + // + // SAFARI: + // ex.message = Can't find variable: qq + // ex.line = 59 + // ex.sourceId = 580238192 + // ex.sourceURL = http://... + // ex.expressionBeginOffset = 96 + // ex.expressionCaretOffset = 98 + // ex.expressionEndOffset = 98 + // ex.name = ReferenceError + // + // FIREFOX: + // ex.message = qq is not defined + // ex.fileName = http://... + // ex.lineNumber = 59 + // ex.columnNumber = 69 + // ex.stack = ...stack trace... (see the example below) + // ex.name = ReferenceError + // + // CHROME: + // ex.message = qq is not defined + // ex.name = ReferenceError + // ex.type = not_defined + // ex.arguments = ['aa'] + // ex.stack = ...stack trace... + // + // INTERNET EXPLORER: + // ex.message = ... + // ex.name = ReferenceError + // + // OPERA: + // ex.message = ...message... (see the example below) + // ex.name = ReferenceError + // ex.opera#sourceloc = 11 (pretty much useless, duplicates the info in ex.message) + // ex.stacktrace = n/a; see 'opera:config#UserPrefs|Exceptions Have Stacktrace' + + /** + * Computes stack trace information from the stack property. + * Chrome and Gecko use this property. + * @param {Error} ex + * @return {?Object.} Stack trace information. + */ + function computeStackTraceFromStackProp(ex) { + if (typeof ex.stack === 'undefined' || !ex.stack) return; + + var chrome = /^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i; + var winjs = /^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i; + // NOTE: blob urls are now supposed to always have an origin, therefore it's format + // which is `blob:http://url/path/with-some-uuid`, is matched by `blob.*?:\/` as well + var gecko = /^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i; + // Used to additionally parse URL/line/column from eval frames + var geckoEval = /(\S+) line (\d+)(?: > eval line \d+)* > eval/i; + var chromeEval = /\((\S*)(?::(\d+))(?::(\d+))\)/; + var lines = ex.stack.split('\n'); + var stack = []; + var submatch; + var parts; + var element; + var reference = /^(.*) is undefined$/.exec(ex.message); + + for (var i = 0, j = lines.length; i < j; ++i) { + if ((parts = chrome.exec(lines[i]))) { + var isNative = parts[2] && parts[2].indexOf('native') === 0; // start of line + var isEval = parts[2] && parts[2].indexOf('eval') === 0; // start of line + if (isEval && (submatch = chromeEval.exec(parts[2]))) { + // throw out eval line/column and use top-most line/column number + parts[2] = submatch[1]; // url + parts[3] = submatch[2]; // line + parts[4] = submatch[3]; // column + } + element = { + url: !isNative ? parts[2] : null, + func: parts[1] || UNKNOWN_FUNCTION, + args: isNative ? [parts[2]] : [], + line: parts[3] ? +parts[3] : null, + column: parts[4] ? +parts[4] : null + }; + } else if ((parts = winjs.exec(lines[i]))) { + element = { + url: parts[2], + func: parts[1] || UNKNOWN_FUNCTION, + args: [], + line: +parts[3], + column: parts[4] ? +parts[4] : null + }; + } else if ((parts = gecko.exec(lines[i]))) { + var isEval = parts[3] && parts[3].indexOf(' > eval') > -1; + if (isEval && (submatch = geckoEval.exec(parts[3]))) { + // throw out eval line/column and use top-most line number + parts[3] = submatch[1]; + parts[4] = submatch[2]; + parts[5] = null; // no column when eval + } else if (i === 0 && !parts[5] && typeof ex.columnNumber !== 'undefined') { + // FireFox uses this awesome columnNumber property for its top frame + // Also note, Firefox's column number is 0-based and everything else expects 1-based, + // so adding 1 + // NOTE: this hack doesn't work if top-most frame is eval + stack[0].column = ex.columnNumber + 1; + } + element = { + url: parts[3], + func: parts[1] || UNKNOWN_FUNCTION, + args: parts[2] ? parts[2].split(',') : [], + line: parts[4] ? +parts[4] : null, + column: parts[5] ? +parts[5] : null + }; + } else { + continue; + } + + if (!element.func && element.line) { + element.func = UNKNOWN_FUNCTION; + } + + if (element.url && element.url.substr(0, 5) === 'blob:') { + // Special case for handling JavaScript loaded into a blob. + // We use a synchronous AJAX request here as a blob is already in + // memory - it's not making a network request. This will generate a warning + // in the browser console, but there has already been an error so that's not + // that much of an issue. + var xhr = new XMLHttpRequest(); + xhr.open('GET', element.url, false); + xhr.send(null); + + // If we failed to download the source, skip this patch + if (xhr.status === 200) { + var source = xhr.responseText || ''; + + // We trim the source down to the last 300 characters as sourceMappingURL is always at the end of the file. + // Why 300? To be in line with: https://github.com/getsentry/sentry/blob/4af29e8f2350e20c28a6933354e4f42437b4ba42/src/sentry/lang/javascript/processor.py#L164-L175 + source = source.slice(-300); + + // Now we dig out the source map URL + var sourceMaps = source.match(/\/\/# sourceMappingURL=(.*)$/); + + // If we don't find a source map comment or we find more than one, continue on to the next element. + if (sourceMaps) { + var sourceMapAddress = sourceMaps[1]; + + // Now we check to see if it's a relative URL. + // If it is, convert it to an absolute one. + if (sourceMapAddress.charAt(0) === '~') { + sourceMapAddress = getLocationOrigin() + sourceMapAddress.slice(1); + } + + // Now we strip the '.map' off of the end of the URL and update the + // element so that Sentry can match the map to the blob. + element.url = sourceMapAddress.slice(0, -4); + } + } + } + + stack.push(element); + } + + if (!stack.length) { + return null; + } + + return { + name: ex.name, + message: ex.message, + url: getLocationHref(), + stack: stack + }; + } + + /** + * Adds information about the first frame to incomplete stack traces. + * Safari and IE require this to get complete data on the first frame. + * @param {Object.} stackInfo Stack trace information from + * one of the compute* methods. + * @param {string} url The URL of the script that caused an error. + * @param {(number|string)} lineNo The line number of the script that + * caused an error. + * @param {string=} message The error generated by the browser, which + * hopefully contains the name of the object that caused the error. + * @return {boolean} Whether or not the stack information was + * augmented. + */ + function augmentStackTraceWithInitialElement(stackInfo, url, lineNo, message) { + var initial = { + url: url, + line: lineNo + }; + + if (initial.url && initial.line) { + stackInfo.incomplete = false; + + if (!initial.func) { + initial.func = UNKNOWN_FUNCTION; + } + + if (stackInfo.stack.length > 0) { + if (stackInfo.stack[0].url === initial.url) { + if (stackInfo.stack[0].line === initial.line) { + return false; // already in stack trace + } else if ( + !stackInfo.stack[0].line && + stackInfo.stack[0].func === initial.func + ) { + stackInfo.stack[0].line = initial.line; + return false; + } + } + } + + stackInfo.stack.unshift(initial); + stackInfo.partial = true; + return true; + } else { + stackInfo.incomplete = true; + } + + return false; + } + + /** + * Computes stack trace information by walking the arguments.caller + * chain at the time the exception occurred. This will cause earlier + * frames to be missed but is the only way to get any stack trace in + * Safari and IE. The top frame is restored by + * {@link augmentStackTraceWithInitialElement}. + * @param {Error} ex + * @return {?Object.} Stack trace information. + */ + function computeStackTraceByWalkingCallerChain(ex, depth) { + var functionName = /function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i, + stack = [], + funcs = {}, + recursion = false, + parts, + item, + source; + + for ( + var curr = computeStackTraceByWalkingCallerChain.caller; + curr && !recursion; + curr = curr.caller + ) { + if (curr === computeStackTrace || curr === TraceKit.report) { + // console.log('skipping internal function'); + continue; + } + + item = { + url: null, + func: UNKNOWN_FUNCTION, + line: null, + column: null + }; + + if (curr.name) { + item.func = curr.name; + } else if ((parts = functionName.exec(curr.toString()))) { + item.func = parts[1]; + } + + if (typeof item.func === 'undefined') { + try { + item.func = parts.input.substring(0, parts.input.indexOf('{')); + } catch (e) {} + } + + if (funcs['' + curr]) { + recursion = true; + } else { + funcs['' + curr] = true; + } + + stack.push(item); + } + + if (depth) { + // console.log('depth is ' + depth); + // console.log('stack is ' + stack.length); + stack.splice(0, depth); + } + + var result = { + name: ex.name, + message: ex.message, + url: getLocationHref(), + stack: stack + }; + augmentStackTraceWithInitialElement( + result, + ex.sourceURL || ex.fileName, + ex.line || ex.lineNumber, + ex.message || ex.description + ); + return result; + } + + /** + * Computes a stack trace for an exception. + * @param {Error} ex + * @param {(string|number)=} depth + */ + function computeStackTrace(ex, depth) { + var stack = null; + depth = depth == null ? 0 : +depth; + + try { + stack = computeStackTraceFromStackProp(ex); + if (stack) { + return stack; + } + } catch (e) { + if (TraceKit.debug) { + throw e; + } + } + + try { + stack = computeStackTraceByWalkingCallerChain(ex, depth + 1); + if (stack) { + return stack; + } + } catch (e) { + if (TraceKit.debug) { + throw e; + } + } + return { + name: ex.name, + message: ex.message, + url: getLocationHref() + }; + } + + computeStackTrace.augmentStackTraceWithInitialElement = augmentStackTraceWithInitialElement; + computeStackTrace.computeStackTraceFromStackProp = computeStackTraceFromStackProp; + + return computeStackTrace; +})(); + +module.exports = TraceKit; + +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"9":9}],11:[function(_dereq_,module,exports){ +/* + json-stringify-safe + Like JSON.stringify, but doesn't throw on circular references. + + Originally forked from https://github.com/isaacs/json-stringify-safe + version 5.0.1 on 3/8/2017 and modified to handle Errors serialization + and IE8 compatibility. Tests for this are in test/vendor. + + ISC license: https://github.com/isaacs/json-stringify-safe/blob/master/LICENSE +*/ + +exports = module.exports = stringify; +exports.getSerialize = serializer; + +function indexOf(haystack, needle) { + for (var i = 0; i < haystack.length; ++i) { + if (haystack[i] === needle) return i; + } + return -1; +} + +function stringify(obj, replacer, spaces, cycleReplacer) { + return JSON.stringify(obj, serializer(replacer, cycleReplacer), spaces); +} + +// https://github.com/ftlabs/js-abbreviate/blob/fa709e5f139e7770a71827b1893f22418097fbda/index.js#L95-L106 +function stringifyError(value) { + var err = { + // These properties are implemented as magical getters and don't show up in for in + stack: value.stack, + message: value.message, + name: value.name + }; + + for (var i in value) { + if (Object.prototype.hasOwnProperty.call(value, i)) { + err[i] = value[i]; + } + } + + return err; +} + +function serializer(replacer, cycleReplacer) { + var stack = []; + var keys = []; + + if (cycleReplacer == null) { + cycleReplacer = function(key, value) { + if (stack[0] === value) { + return '[Circular ~]'; + } + return '[Circular ~.' + keys.slice(0, indexOf(stack, value)).join('.') + ']'; + }; + } + + return function(key, value) { + if (stack.length > 0) { + var thisPos = indexOf(stack, this); + ~thisPos ? stack.splice(thisPos + 1) : stack.push(this); + ~thisPos ? keys.splice(thisPos, Infinity, key) : keys.push(key); + + if (~indexOf(stack, value)) { + value = cycleReplacer.call(this, key, value); + } + } else { + stack.push(value); + } + + return replacer == null + ? value instanceof Error ? stringifyError(value) : value + : replacer.call(this, key, value); + }; +} + +},{}],12:[function(_dereq_,module,exports){ +/* + * JavaScript MD5 + * https://github.com/blueimp/JavaScript-MD5 + * + * Copyright 2011, Sebastian Tschan + * https://blueimp.net + * + * Licensed under the MIT license: + * https://opensource.org/licenses/MIT + * + * Based on + * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message + * Digest Algorithm, as defined in RFC 1321. + * Version 2.2 Copyright (C) Paul Johnston 1999 - 2009 + * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet + * Distributed under the BSD License + * See http://pajhome.org.uk/crypt/md5 for more info. + */ + +/* +* Add integers, wrapping at 2^32. This uses 16-bit operations internally +* to work around bugs in some JS interpreters. +*/ +function safeAdd(x, y) { + var lsw = (x & 0xffff) + (y & 0xffff); + var msw = (x >> 16) + (y >> 16) + (lsw >> 16); + return (msw << 16) | (lsw & 0xffff); +} + +/* +* Bitwise rotate a 32-bit number to the left. +*/ +function bitRotateLeft(num, cnt) { + return (num << cnt) | (num >>> (32 - cnt)); +} + +/* +* These functions implement the four basic operations the algorithm uses. +*/ +function md5cmn(q, a, b, x, s, t) { + return safeAdd(bitRotateLeft(safeAdd(safeAdd(a, q), safeAdd(x, t)), s), b); +} +function md5ff(a, b, c, d, x, s, t) { + return md5cmn((b & c) | (~b & d), a, b, x, s, t); +} +function md5gg(a, b, c, d, x, s, t) { + return md5cmn((b & d) | (c & ~d), a, b, x, s, t); +} +function md5hh(a, b, c, d, x, s, t) { + return md5cmn(b ^ c ^ d, a, b, x, s, t); +} +function md5ii(a, b, c, d, x, s, t) { + return md5cmn(c ^ (b | ~d), a, b, x, s, t); +} + +/* +* Calculate the MD5 of an array of little-endian words, and a bit length. +*/ +function binlMD5(x, len) { + /* append padding */ + x[len >> 5] |= 0x80 << (len % 32); + x[(((len + 64) >>> 9) << 4) + 14] = len; + + var i; + var olda; + var oldb; + var oldc; + var oldd; + var a = 1732584193; + var b = -271733879; + var c = -1732584194; + var d = 271733878; + + for (i = 0; i < x.length; i += 16) { + olda = a; + oldb = b; + oldc = c; + oldd = d; + + a = md5ff(a, b, c, d, x[i], 7, -680876936); + d = md5ff(d, a, b, c, x[i + 1], 12, -389564586); + c = md5ff(c, d, a, b, x[i + 2], 17, 606105819); + b = md5ff(b, c, d, a, x[i + 3], 22, -1044525330); + a = md5ff(a, b, c, d, x[i + 4], 7, -176418897); + d = md5ff(d, a, b, c, x[i + 5], 12, 1200080426); + c = md5ff(c, d, a, b, x[i + 6], 17, -1473231341); + b = md5ff(b, c, d, a, x[i + 7], 22, -45705983); + a = md5ff(a, b, c, d, x[i + 8], 7, 1770035416); + d = md5ff(d, a, b, c, x[i + 9], 12, -1958414417); + c = md5ff(c, d, a, b, x[i + 10], 17, -42063); + b = md5ff(b, c, d, a, x[i + 11], 22, -1990404162); + a = md5ff(a, b, c, d, x[i + 12], 7, 1804603682); + d = md5ff(d, a, b, c, x[i + 13], 12, -40341101); + c = md5ff(c, d, a, b, x[i + 14], 17, -1502002290); + b = md5ff(b, c, d, a, x[i + 15], 22, 1236535329); + + a = md5gg(a, b, c, d, x[i + 1], 5, -165796510); + d = md5gg(d, a, b, c, x[i + 6], 9, -1069501632); + c = md5gg(c, d, a, b, x[i + 11], 14, 643717713); + b = md5gg(b, c, d, a, x[i], 20, -373897302); + a = md5gg(a, b, c, d, x[i + 5], 5, -701558691); + d = md5gg(d, a, b, c, x[i + 10], 9, 38016083); + c = md5gg(c, d, a, b, x[i + 15], 14, -660478335); + b = md5gg(b, c, d, a, x[i + 4], 20, -405537848); + a = md5gg(a, b, c, d, x[i + 9], 5, 568446438); + d = md5gg(d, a, b, c, x[i + 14], 9, -1019803690); + c = md5gg(c, d, a, b, x[i + 3], 14, -187363961); + b = md5gg(b, c, d, a, x[i + 8], 20, 1163531501); + a = md5gg(a, b, c, d, x[i + 13], 5, -1444681467); + d = md5gg(d, a, b, c, x[i + 2], 9, -51403784); + c = md5gg(c, d, a, b, x[i + 7], 14, 1735328473); + b = md5gg(b, c, d, a, x[i + 12], 20, -1926607734); + + a = md5hh(a, b, c, d, x[i + 5], 4, -378558); + d = md5hh(d, a, b, c, x[i + 8], 11, -2022574463); + c = md5hh(c, d, a, b, x[i + 11], 16, 1839030562); + b = md5hh(b, c, d, a, x[i + 14], 23, -35309556); + a = md5hh(a, b, c, d, x[i + 1], 4, -1530992060); + d = md5hh(d, a, b, c, x[i + 4], 11, 1272893353); + c = md5hh(c, d, a, b, x[i + 7], 16, -155497632); + b = md5hh(b, c, d, a, x[i + 10], 23, -1094730640); + a = md5hh(a, b, c, d, x[i + 13], 4, 681279174); + d = md5hh(d, a, b, c, x[i], 11, -358537222); + c = md5hh(c, d, a, b, x[i + 3], 16, -722521979); + b = md5hh(b, c, d, a, x[i + 6], 23, 76029189); + a = md5hh(a, b, c, d, x[i + 9], 4, -640364487); + d = md5hh(d, a, b, c, x[i + 12], 11, -421815835); + c = md5hh(c, d, a, b, x[i + 15], 16, 530742520); + b = md5hh(b, c, d, a, x[i + 2], 23, -995338651); + + a = md5ii(a, b, c, d, x[i], 6, -198630844); + d = md5ii(d, a, b, c, x[i + 7], 10, 1126891415); + c = md5ii(c, d, a, b, x[i + 14], 15, -1416354905); + b = md5ii(b, c, d, a, x[i + 5], 21, -57434055); + a = md5ii(a, b, c, d, x[i + 12], 6, 1700485571); + d = md5ii(d, a, b, c, x[i + 3], 10, -1894986606); + c = md5ii(c, d, a, b, x[i + 10], 15, -1051523); + b = md5ii(b, c, d, a, x[i + 1], 21, -2054922799); + a = md5ii(a, b, c, d, x[i + 8], 6, 1873313359); + d = md5ii(d, a, b, c, x[i + 15], 10, -30611744); + c = md5ii(c, d, a, b, x[i + 6], 15, -1560198380); + b = md5ii(b, c, d, a, x[i + 13], 21, 1309151649); + a = md5ii(a, b, c, d, x[i + 4], 6, -145523070); + d = md5ii(d, a, b, c, x[i + 11], 10, -1120210379); + c = md5ii(c, d, a, b, x[i + 2], 15, 718787259); + b = md5ii(b, c, d, a, x[i + 9], 21, -343485551); + + a = safeAdd(a, olda); + b = safeAdd(b, oldb); + c = safeAdd(c, oldc); + d = safeAdd(d, oldd); + } + return [a, b, c, d]; +} + +/* +* Convert an array of little-endian words to a string +*/ +function binl2rstr(input) { + var i; + var output = ''; + var length32 = input.length * 32; + for (i = 0; i < length32; i += 8) { + output += String.fromCharCode((input[i >> 5] >>> (i % 32)) & 0xff); + } + return output; +} + +/* +* Convert a raw string to an array of little-endian words +* Characters >255 have their high-byte silently ignored. +*/ +function rstr2binl(input) { + var i; + var output = []; + output[(input.length >> 2) - 1] = undefined; + for (i = 0; i < output.length; i += 1) { + output[i] = 0; + } + var length8 = input.length * 8; + for (i = 0; i < length8; i += 8) { + output[i >> 5] |= (input.charCodeAt(i / 8) & 0xff) << (i % 32); + } + return output; +} + +/* +* Calculate the MD5 of a raw string +*/ +function rstrMD5(s) { + return binl2rstr(binlMD5(rstr2binl(s), s.length * 8)); +} + +/* +* Calculate the HMAC-MD5, of a key and some data (raw strings) +*/ +function rstrHMACMD5(key, data) { + var i; + var bkey = rstr2binl(key); + var ipad = []; + var opad = []; + var hash; + ipad[15] = opad[15] = undefined; + if (bkey.length > 16) { + bkey = binlMD5(bkey, key.length * 8); + } + for (i = 0; i < 16; i += 1) { + ipad[i] = bkey[i] ^ 0x36363636; + opad[i] = bkey[i] ^ 0x5c5c5c5c; + } + hash = binlMD5(ipad.concat(rstr2binl(data)), 512 + data.length * 8); + return binl2rstr(binlMD5(opad.concat(hash), 512 + 128)); +} + +/* +* Convert a raw string to a hex string +*/ +function rstr2hex(input) { + var hexTab = '0123456789abcdef'; + var output = ''; + var x; + var i; + for (i = 0; i < input.length; i += 1) { + x = input.charCodeAt(i); + output += hexTab.charAt((x >>> 4) & 0x0f) + hexTab.charAt(x & 0x0f); + } + return output; +} + +/* +* Encode a string as utf-8 +*/ +function str2rstrUTF8(input) { + return unescape(encodeURIComponent(input)); +} + +/* +* Take string arguments and return either raw or hex encoded strings +*/ +function rawMD5(s) { + return rstrMD5(str2rstrUTF8(s)); +} +function hexMD5(s) { + return rstr2hex(rawMD5(s)); +} +function rawHMACMD5(k, d) { + return rstrHMACMD5(str2rstrUTF8(k), str2rstrUTF8(d)); +} +function hexHMACMD5(k, d) { + return rstr2hex(rawHMACMD5(k, d)); +} + +function md5(string, key, raw) { + if (!key) { + if (!raw) { + return hexMD5(string); + } + return rawMD5(string); + } + if (!raw) { + return hexHMACMD5(key, string); + } + return rawHMACMD5(key, string); +} + +module.exports = md5; + +},{}]},{},[8,1,2,3,4])(8) +}); \ No newline at end of file diff --git a/packages/raven-js/dist/angular,console,require,vue/raven.min.js b/packages/raven-js/dist/angular,console,require,vue/raven.min.js new file mode 100644 index 000000000000..b3a974234f57 --- /dev/null +++ b/packages/raven-js/dist/angular,console,require,vue/raven.min.js @@ -0,0 +1,4 @@ +/*! Raven.js 3.25.2 (30b6d4e) | github.com/getsentry/raven-js */ +!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.Raven=a()}}(function(){var a;return function b(a,c,d){function e(g,h){if(!c[g]){if(!a[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};a[g][0].call(k.exports,function(b){var c=a[g][1][b];return e(c?c:b)},k,k.exports,b,a,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;g":"anonymous component")+(a._isVue&&a.$options.__file?" at "+a.$options.__file:"")}function e(a,b){if(b=b||window.Vue,b&&b.config){var c=b.config.errorHandler;b.config.errorHandler=function(b,e,f){var g={};"[object Object]"===Object.prototype.toString.call(e)&&(g.componentName=d(e),g.propsData=e.$options.propsData),"undefined"!=typeof f&&(g.lifecycleHook=f),a.captureException(b,{extra:g}),"function"==typeof c&&c.call(this,b,e,f)}}}b.exports=e,a(8).addPlugin(b.exports)},{8:8}],5:[function(a,b,c){function d(a){this.name="RavenConfigError",this.message=a}d.prototype=new Error,d.prototype.constructor=d,b.exports=d},{}],6:[function(a,b,c){var d=a(9),e=function(a,b,c){var e=a[b],f=a;if(b in a){var g="warn"===b?"warning":b;a[b]=function(){var a=[].slice.call(arguments),h=d.safeJoin(a," "),i={level:g,logger:"console",extra:{arguments:a}};"assert"===b?a[0]===!1&&(h="Assertion failed: "+(d.safeJoin(a.slice(1)," ")||"console.assert"),i.extra.arguments=a.slice(1),c&&c(h,i)):c&&c(h,i),e&&Function.prototype.apply.call(e,f,a)}}};b.exports={wrapMethod:e}},{9:9}],7:[function(a,b,c){(function(c){function d(){return+new Date}function e(a,b){return s(b)?function(c){return b(c,a)}:b}function f(){this.b=!("object"!=typeof JSON||!JSON.stringify),this.c=!r(S),this.d=!r(T),this.e=null,this.f=null,this.g=null,this.h=null,this.i=null,this.j=null,this.k={},this.l={release:R.SENTRY_RELEASE&&R.SENTRY_RELEASE.id,logger:"javascript",ignoreErrors:[],ignoreUrls:[],whitelistUrls:[],includePaths:[],headers:null,collectWindowErrors:!0,captureUnhandledRejections:!0,maxMessageLength:0,maxUrlLength:250,stackTraceLimit:50,autoBreadcrumbs:!0,instrument:!0,sampleRate:1,sanitizeKeys:[]},this.m={method:"POST",keepalive:!0,referrerPolicy:K()?"origin":""},this.n=0,this.o=!1,this.p=Error.stackTraceLimit,this.q=R.console||{},this.r={},this.s=[],this.t=d(),this.u=[],this.v=[],this.w=null,this.x=R.location,this.y=this.x&&this.x.href,this.z();for(var a in this.q)this.r[a]=this.q[a]}var g=a(10),h=a(11),i=a(12),j=a(5),k=a(9),l=k.isErrorEvent,m=k.isDOMError,n=k.isDOMException,o=k.isError,p=k.isObject,q=k.isPlainObject,r=k.isUndefined,s=k.isFunction,t=k.isString,u=k.isArray,v=k.isEmptyObject,w=k.each,x=k.objectMerge,y=k.truncate,z=k.objectFrozen,A=k.hasKey,B=k.joinRegExp,C=k.urlencode,D=k.uuid4,E=k.htmlTreeAsString,F=k.isSameException,G=k.isSameStacktrace,H=k.parseUrl,I=k.fill,J=k.supportsFetch,K=k.supportsReferrerPolicy,L=k.serializeKeysForMessage,M=k.serializeException,N=k.sanitize,O=a(6).wrapMethod,P="source protocol user pass host port path".split(" "),Q=/^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/,R="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},S=R.document,T=R.navigator;f.prototype={VERSION:"3.25.2",debug:!1,TraceKit:g,config:function(a,b){var c=this;if(c.h)return this.A("error","Error: Raven has already been configured"),c;if(!a)return c;var d=c.l;b&&w(b,function(a,b){"tags"===a||"extra"===a||"user"===a?c.k[a]=b:d[a]=b}),c.setDSN(a),d.ignoreErrors.push(/^Script error\.?$/),d.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/),d.ignoreErrors=B(d.ignoreErrors),d.ignoreUrls=!!d.ignoreUrls.length&&B(d.ignoreUrls),d.whitelistUrls=!!d.whitelistUrls.length&&B(d.whitelistUrls),d.includePaths=B(d.includePaths),d.maxBreadcrumbs=Math.max(0,Math.min(d.maxBreadcrumbs||100,100));var e={xhr:!0,console:!0,dom:!0,location:!0,sentry:!0},f=d.autoBreadcrumbs;"[object Object]"==={}.toString.call(f)?f=x(e,f):f!==!1&&(f=e),d.autoBreadcrumbs=f;var h={tryCatch:!0},i=d.instrument;return"[object Object]"==={}.toString.call(i)?i=x(h,i):i!==!1&&(i=h),d.instrument=i,g.collectWindowErrors=!!d.collectWindowErrors,c},install:function(){var a=this;return a.isSetup()&&!a.o&&(g.report.subscribe(function(){a.B.apply(a,arguments)}),a.l.captureUnhandledRejections&&a.C(),a.D(),a.l.instrument&&a.l.instrument.tryCatch&&a.E(),a.l.autoBreadcrumbs&&a.F(),a.G(),a.o=!0),Error.stackTraceLimit=a.l.stackTraceLimit,this},setDSN:function(a){var b=this,c=b.H(a),d=c.path.lastIndexOf("/"),e=c.path.substr(1,d);b.I=a,b.i=c.user,b.J=c.pass&&c.pass.substr(1),b.j=c.path.substr(d+1),b.h=b.K(c),b.L=b.h+"/"+e+"api/"+b.j+"/store/",this.z()},context:function(a,b,c){return s(a)&&(c=b||[],b=a,a=void 0),this.wrap(a,b).apply(this,c)},wrap:function(a,b,c){function d(){var d=[],f=arguments.length,g=!a||a&&a.deep!==!1;for(c&&s(c)&&c.apply(this,arguments);f--;)d[f]=g?e.wrap(a,arguments[f]):arguments[f];try{return b.apply(this,d)}catch(h){throw e.M(),e.captureException(h,a),h}}var e=this;if(r(b)&&!s(a))return a;if(s(a)&&(b=a,a=void 0),!s(b))return b;try{if(b.N)return b;if(b.O)return b.O}catch(f){return b}for(var g in b)A(b,g)&&(d[g]=b[g]);return d.prototype=b.prototype,b.O=d,d.N=!0,d.P=b,d},uninstall:function(){return g.report.uninstall(),this.Q(),this.R(),this.S(),this.T(),Error.stackTraceLimit=this.p,this.o=!1,this},U:function(a){this.A("debug","Raven caught unhandled promise rejection:",a),this.captureException(a.reason,{extra:{unhandledPromiseRejection:!0}})},C:function(){return this.U=this.U.bind(this),R.addEventListener&&R.addEventListener("unhandledrejection",this.U),this},Q:function(){return R.removeEventListener&&R.removeEventListener("unhandledrejection",this.U),this},captureException:function(a,b){if(b=x({trimHeadFrames:0},b?b:{}),l(a)&&a.error)a=a.error;else{if(m(a)||n(a)){var c=a.name||(m(a)?"DOMError":"DOMException"),d=a.message?c+": "+a.message:c;return this.captureMessage(d,x(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}))}if(o(a))a=a;else{if(!q(a))return this.captureMessage(a,x(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}));b=this.V(b,a),a=new Error(b.message)}}this.e=a;try{var e=g.computeStackTrace(a);this.W(e,b)}catch(f){if(a!==f)throw f}return this},V:function(a,b){var c=Object.keys(b).sort(),d=x(a,{message:"Non-Error exception captured with keys: "+L(c),fingerprint:[i(c)],extra:a.extra||{}});return d.extra.X=M(b),d},captureMessage:function(a,b){if(!this.l.ignoreErrors.test||!this.l.ignoreErrors.test(a)){b=b||{},a+="";var c,d=x({message:a},b);try{throw new Error(a)}catch(e){c=e}c.name=null;var f=g.computeStackTrace(c),h=u(f.stack)&&f.stack[1];h&&"Raven.captureException"===h.func&&(h=f.stack[2]);var i=h&&h.url||"";if((!this.l.ignoreUrls.test||!this.l.ignoreUrls.test(i))&&(!this.l.whitelistUrls.test||this.l.whitelistUrls.test(i))){if(this.l.stacktrace||b&&b.stacktrace){d.fingerprint=null==d.fingerprint?a:d.fingerprint,b=x({trimHeadFrames:0},b),b.trimHeadFrames+=1;var j=this.Y(f,b);d.stacktrace={frames:j.reverse()}}return d.fingerprint&&(d.fingerprint=u(d.fingerprint)?d.fingerprint:[d.fingerprint]),this.Z(d),this}}},captureBreadcrumb:function(a){var b=x({timestamp:d()/1e3},a);if(s(this.l.breadcrumbCallback)){var c=this.l.breadcrumbCallback(b);if(p(c)&&!v(c))b=c;else if(c===!1)return this}return this.v.push(b),this.v.length>this.l.maxBreadcrumbs&&this.v.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.s.push([a,b]),this.o&&this.G(),this},setUserContext:function(a){return this.k.user=a,this},setExtraContext:function(a){return this.$("extra",a),this},setTagsContext:function(a){return this.$("tags",a),this},clearContext:function(){return this.k={},this},getContext:function(){return JSON.parse(h(this.k))},setEnvironment:function(a){return this.l.environment=a,this},setRelease:function(a){return this.l.release=a,this},setDataCallback:function(a){var b=this.l.dataCallback;return this.l.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.l.breadcrumbCallback;return this.l.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.l.shouldSendCallback;return this.l.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.l.transport=a,this},lastException:function(){return this.e},lastEventId:function(){return this.g},isSetup:function(){return!!this.b&&(!!this.h||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.A("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=R.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(S){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.I;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.k.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.K(this.H(c)),h=S.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(S.head||S.body).appendChild(h)}},M:function(){var a=this;this.n+=1,setTimeout(function(){a.n-=1})},_:function(a,b){var c,d;if(this.c){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),S.createEvent?(c=S.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=S.createEventObject(),c.eventType=a);for(d in b)A(b,d)&&(c[d]=b[d]);if(S.createEvent)S.dispatchEvent(c);else try{S.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},aa:function(a){var b=this;return function(c){if(b.ba=null,b.w!==c){b.w=c;var d;try{d=E(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ca:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.ba;g||a.aa("input")(c),clearTimeout(g),a.ba=setTimeout(function(){a.ba=null},b)}}},da:function(a,b){var c=H(this.x.href),d=H(b),e=H(a);this.y=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},D:function(){var a=this;a.ea=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.N?a.ea.apply(this.P,arguments):a.ea.apply(this,arguments)}},R:function(){this.ea&&(Function.prototype.toString=this.ea)},E:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.da(b.y,c+""),a.apply(this,arguments)}};I(R.history,"pushState",j,d),I(R.history,"replaceState",j,d)}if(c.console&&"console"in R&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};w(["debug","info","warn","error","log"],function(a,b){O(console,b,k)})}},S:function(){for(var a;this.u.length;){a=this.u.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},T:function(){for(var a in this.r)this.q[a]=this.r[a]},G:function(){var a=this;w(this.s,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},H:function(a){var b=Q.exec(a),c={},d=7;try{for(;d--;)c[P[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.l.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},K:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},B:function(){this.n||this.W.apply(this,arguments)},W:function(a,b){var c=this.Y(a,b);this._("handle",{stackInfo:a,options:b}),this.ga(a.name,a.message,a.url,a.lineno,c,b)},Y:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(w(a.stack,function(b,e){var f=c.ha(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.v,0)}),this.k.user&&(a.user=this.k.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),a=this.qa(a),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||v(a[b]))&&delete a[b]}),s(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!v(a)&&(!s(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.na()?void this.A("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function F(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&l(b))for(c=b.split(/\s+/),f=0;fc?Q(a,b-1):d}function R(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?X:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function S(a,b){function c(a){return m(a)?a.map(function(a){return c(a)}):k(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!m(b)||m(b)&&0===b.length)return a;var d,e=A(b),f="********";try{d=JSON.parse(T(a))}catch(g){return a}return c(d)}var T=a(11),U="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},V=3,W=51200,X=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isDOMError:g,isDOMException:h,isUndefined:i,isFunction:j,isPlainObject:k,isString:l,isArray:m,isEmptyObject:n,supportsErrorEvent:o,supportsDOMError:p,supportsDOMException:q,supportsFetch:r,supportsReferrerPolicy:s,supportsPromiseRejectionEvent:t,wrappedCallback:u,each:v,objectMerge:w,truncate:y,objectFrozen:x,hasKey:z,joinRegExp:A,urlencode:B,uuid4:D,htmlTreeAsString:E,htmlElementAsString:F,isSameException:I,isSameStacktrace:J,parseUrl:C,fill:K,safeJoin:L,serializeException:Q,serializeKeysForMessage:R,sanitize:S}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{11:11}],10:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}function e(){return"undefined"==typeof document||null==document.location?"":(document.location.origin||(document.location.origin=document.location.protocol+"//"+document.location.hostname+(document.location.port?":"+document.location.port:"")),document.location.origin)}var f=a(9),g={collectWindowErrors:!0,debug:!1},h="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},i=[].slice,j="?",k=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;g.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function e(a,b){var c=null;if(!b||g.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(i.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,h,i){var l=null,m=f.isErrorEvent(i)?i.error:i,n=f.isErrorEvent(a)?a.message:a;if(v)g.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&f.isError(m))l=g.computeStackTrace(m),e(l,!0);else{var p,r={url:b,line:c,column:h},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(k);p&&(s=p[1],n=p[2])}r.func=j,l={name:s,message:n,url:d(),stack:[r]},e(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=h.onerror,h.onerror=l,r=!0)}function n(){r&&(h.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,e.apply(null,[a,!1].concat(b))}function p(a,b){var c=i.call(arguments,1);if(v){if(u===a)return;o()}var d=g.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),g.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,f,g=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,h=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,i=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,k=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,l=/\((\S*)(?::(\d+))(?::(\d+))\)/,m=a.stack.split("\n"),n=[],o=(/^(.*) is undefined$/.exec(a.message),0),p=m.length;o eval")>-1;r&&(b=k.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==o||c[5]||"undefined"==typeof a.columnNumber||(n[0].column=a.columnNumber+1),f={url:c[3],func:c[1]||j,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}if(!f.func&&f.line&&(f.func=j),f.url&&"blob:"===f.url.substr(0,5)){var s=new XMLHttpRequest;if(s.open("GET",f.url,!1),s.send(null),200===s.status){var t=s.responseText||"";t=t.slice(-300);var u=t.match(/\/\/# sourceMappingURL=(.*)$/);if(u){var v=u[1];"~"===v.charAt(0)&&(v=e()+v.slice(1)),f.url=v.slice(0,-4)}}}n.push(f)}return n.length?{name:a.name,message:a.message,url:d(),stack:n}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=j),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,e){for(var h,i,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==f&&o!==g.report){if(i={url:null,func:j,line:null,column:null},o.name?i.func=o.name:(h=k.exec(o.toString()))&&(i.func=h[1]),"undefined"==typeof i.func)try{i.func=h.input.substring(0,h.input.indexOf("{"))}catch(p){}m[""+o]?n=!0:m[""+o]=!0,l.push(i)}e&&l.splice(0,e);var q={name:a.name,message:a.message,url:d(),stack:l};return b(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),q}function f(b,e){var f=null;e=null==e?0:+e;try{if(f=a(b))return f}catch(h){if(g.debug)throw h}try{if(f=c(b,e+1))return f}catch(h){if(g.debug)throw h}return{name:b.name,message:b.message,url:d()}}return f.augmentStackTraceWithInitialElement=b,f.computeStackTraceFromStackProp=a,f}(),b.exports=g}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{9:9}],11:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}],12:[function(a,b,c){function d(a,b){var c=(65535&a)+(65535&b),d=(a>>16)+(b>>16)+(c>>16);return d<<16|65535&c}function e(a,b){return a<>>32-b}function f(a,b,c,f,g,h){return d(e(d(d(b,a),d(f,h)),g),c)}function g(a,b,c,d,e,g,h){return f(b&c|~b&d,a,b,e,g,h)}function h(a,b,c,d,e,g,h){return f(b&d|c&~d,a,b,e,g,h)}function i(a,b,c,d,e,g,h){return f(b^c^d,a,b,e,g,h)}function j(a,b,c,d,e,g,h){return f(c^(b|~d),a,b,e,g,h)}function k(a,b){a[b>>5]|=128<>>9<<4)+14]=b;var c,e,f,k,l,m=1732584193,n=-271733879,o=-1732584194,p=271733878;for(c=0;c>5]>>>b%32&255);return c}function m(a){var b,c=[];for(c[(a.length>>2)-1]=void 0,b=0;b>5]|=(255&a.charCodeAt(b/8))<16&&(e=k(e,8*a.length)),c=0;c<16;c+=1)f[c]=909522486^e[c],g[c]=1549556828^e[c];return d=k(f.concat(m(b)),512+8*b.length),l(k(g.concat(d),640))}function p(a){var b,c,d="0123456789abcdef",e="";for(c=0;c>>4&15)+d.charAt(15&b);return e}function q(a){return unescape(encodeURIComponent(a))}function r(a){return n(q(a))}function s(a){return p(r(a))}function t(a,b){return o(q(a),q(b))}function u(a,b){return p(t(a,b))}function v(a,b,c){return b?c?t(b,a):u(b,a):c?r(a):s(a)}b.exports=v},{}]},{},[8,1,2,3,4])(8)}); +//# sourceMappingURL=raven.min.js.map \ No newline at end of file diff --git a/packages/raven-js/dist/angular,console,require,vue/raven.min.js.map b/packages/raven-js/dist/angular,console,require,vue/raven.min.js.map new file mode 100644 index 000000000000..8417907bb4e5 --- /dev/null +++ b/packages/raven-js/dist/angular,console,require,vue/raven.min.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","angularPlugin","angular","RavenProvider","$get","$window","ExceptionHandlerProvider","$provide","decorator","exceptionHandler","R","$delegate","ex","cause","captureException","extra","moduleName","provider","config","setDataCallback","wrappedCallback","data","_normalizeData","angularPattern","exception","values","matches","exec","value","type","message","angularDocs","substr","addPlugin","8","9","2","consolePlugin","console","pluginOptions","logLevels","levels","push","callback","msg","captureMessage","level","pop","wrapConsoleMethod","wrapMethod","6","3","requirePlugin","wrap","deep","4","formatComponentName","vm","$root","name","_isVue","$options","_componentTag","__file","vuePlugin","Vue","_oldOnError","errorHandler","error","info","metaData","Object","prototype","toString","componentName","propsData","lifecycleHook","5","RavenConfigError","constructor","utils","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","safeJoin","logger","Function","apply","7","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","sanitizeKeys","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isErrorEvent","isDOMError","isDOMException","isError","isObject","isPlainObject","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","sanitize","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","dsn","options","_logDebug","globalOptions","key","setDSN","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","context","func","undefined","_before","wrapped","_ignoreNextOnError","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","U","event","reason","unhandledPromiseRejection","C","_promiseRejectionHandler","bind","addEventListener","Q","removeEventListener","trimHeadFrames","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","V","currentOptions","exKeys","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","M","setTimeout","_","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","aa","evtName","_keypressTimeout","target","category","ca","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","da","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","D","_originalFunctionToString","E","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","F","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","S","builtin","T","G","installer","concat","H","str","m","allowSecretKey","K","port","B","W","stackInfo","_triggerEvent","_processException","lineno","Y","frame","_normalizeFrame","in_app","ha","stackInfoUrl","normalized","filename","line","colno","column","function","ga","prefixedMessage","transaction","ia","request","Referer","breadcrumbs","_trimBreadcrumbs","ja","urlProp","urlProps","ka","httpData","userAgent","User-Agent","referrer","z","_backoffDuration","_backoffStart","na","oa","current","last","pa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Z","baseData","project","platform","_getHttpData","serverName","server_name","_sanitizeData","forEach","random","_sendProcessedPayload","qa","sa","ra","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","ta","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","onerror","open","setRequestHeader","send","ua","hash","evaluated","A","$","setUser","setReleaseContext","10","11","12","RavenConstructor","_Raven","noConflict","Client","what","supportsErrorEvent","ErrorEvent","supportsDOMError","DOMError","supportsDOMException","DOMException","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","sanitizeMask","safeInput","o_O","getLocationHref","getLocationOrigin","origin","hostname","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","responseText","sourceMaps","sourceMapAddress","charAt","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","y","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","string","raw"],"mappings":";CAYA,SAAUA,GAAG,GAAoB,gBAAVC,UAAoC,mBAATC,QAAsBA,OAAOD,QAAQD,QAAS,IAAmB,kBAATG,SAAqBA,OAAOC,IAAKD,UAAUH,OAAO,CAAC,GAAIK,EAAkCA,GAAb,mBAATC,QAAwBA,OAA+B,mBAATC,QAAwBA,OAA6B,mBAAPC,MAAsBA,KAAYC,KAAKJ,EAAEK,MAAQV,MAAO,WAAW,GAAIG,EAAsB,OAAO,SAAUQ,GAAEC,EAAEC,EAAEC,GAAG,QAASC,GAAEC,EAAEC,GAAG,IAAIJ,EAAEG,GAAG,CAAC,IAAIJ,EAAEI,GAAG,CAAC,GAAIE,GAAkB,kBAATC,UAAqBA,OAAQ,KAAIF,GAAGC,EAAE,MAAOA,GAAEF,GAAE,EAAI,IAAGI,EAAE,MAAOA,GAAEJ,GAAE,EAAI,IAAIhB,GAAE,GAAIqB,OAAM,uBAAuBL,EAAE,IAAK,MAAMhB,GAAEsB,KAAK,mBAAmBtB,EAAE,GAAIuB,GAAEV,EAAEG,IAAIf,WAAYW,GAAEI,GAAG,GAAGQ,KAAKD,EAAEtB,QAAQ,SAASU,GAAG,GAAIE,GAAED,EAAEI,GAAG,GAAGL,EAAG,OAAOI,GAAEF,EAAEA,EAAEF,IAAIY,EAAEA,EAAEtB,QAAQU,EAAEC,EAAEC,EAAEC,GAAG,MAAOD,GAAEG,GAAGf,QAAkD,IAAI,GAA1CmB,GAAkB,kBAATD,UAAqBA,QAAgBH,EAAE,EAAEA,EAAEF,EAAEW,OAAOT,IAAID,EAAED,EAAEE,GAAI,OAAOD,KAAKW,GAAG,SAASC,EAAQzB,EAAOD,GAYp0B,QAAS2B,GAAclB,EAAOmB,GAK5B,QAASC,KACPrB,KAAKsB,MACH,UACA,SAASC,GACP,MAAOtB,KAKb,QAASuB,GAAyBC,GAChCA,EAASC,UAAU,qBAAsB,QAAS,YAAaC,IAGjE,QAASA,GAAiBC,EAAGC,GAC3B,MAAO,UAASC,EAAIC,GAClBH,EAAEI,iBAAiBF,GACjBG,OAAQF,MAAOA,KAEjBF,EAAUC,EAAIC,IAtBlBX,EAAUA,GAAWvB,OAAOuB,QAEvBA,IAwBLA,EACG3B,OAAOyC,MACPC,SAAS,QAASd,GAClBe,QAAQ,WAAYZ,IAEvBvB,EAAMoC,gBACJC,EAAgB,SAASC,GACvB,MAAOpB,GAAcqB,EAAeD,OAxC1C,GAAID,GAAkBpB,EAAQ,GAAGoB,gBAG7BG,EAAiB,6DACjBP,EAAa,SAyCjBf,GAAcqB,EAAiB,SAASD,GAEtC,GAAIG,GAAYH,EAAKG,SACrB,IAAIA,EAAW,CACbA,EAAYA,EAAUC,OAAO,EAC7B,IAAIC,GAAUH,EAAeI,KAAKH,EAAUI,MAExCF,KAEFF,EAAUK,KAAOH,EAAQ,GACzBF,EAAUI,MAAQF,EAAQ,GAE1BL,EAAKS,QAAUN,EAAUK,KAAO,KAAOL,EAAUI,MAEjDP,EAAKN,MAAMgB,YAAcL,EAAQ,GAAGM,OAAO,EAAG,MAIlD,MAAOX,IAGTpB,EAAce,WAAaA,EAE3BzC,EAAOD,QAAU2B,EAEjBD,EAAQ,GAAGiC,UAAU1D,EAAOD,WACzB4D,EAAI,EAAEC,EAAI,IAAIC,GAAG,SAASpC,EAAQzB,EAAOD,GAc5C,QAAS+D,GAActD,EAAOuD,EAASC,GACrCD,EAAUA,GAAW3D,OAAO2D,YAC5BC,EAAgBA,KAEhB,IAAIC,GAAYD,EAAcE,SAAW,QAAS,OAAQ,OAAQ,QAC9D,WAAYH,IAASE,EAAUE,KAAK,SAOxC,KALA,GAAIC,GAAW,SAASC,EAAKvB,GAC3BtC,EAAM8D,eAAeD,EAAKvB,IAGxByB,EAAQN,EAAUO,MACfD,GACLE,EAAkBV,EAASQ,EAAOH,GAClCG,EAAQN,EAAUO,MAhBtB,GAAIC,GAAoBhD,EAAQ,GAAGiD,UAoBnC1E,GAAOD,QAAU+D,EAEjBrC,EAAQ,GAAGiC,UAAU1D,EAAOD,WACzB4E,EAAI,EAAEhB,EAAI,IAAIiB,GAAG,SAASnD,EAAQzB,EAAOD,GAO5C,QAAS8E,GAAcrE,GACC,kBAAXP,IAAyBA,EAAOC,MACzCE,OAAOH,OAASO,EAAMsE,MAAMC,MAAM,GAAQ9E,GAC1CG,OAAOa,QAAUT,EAAMsE,MAAMC,MAAM,GAAQtD,IAI/CzB,EAAOD,QAAU8E,EAEjBpD,EAAQ,GAAGiC,UAAU1D,EAAOD,WACzB4D,EAAI,IAAIqB,GAAG,SAASvD,EAAQzB,EAAOD,GAMtC,QAASkF,GAAoBC,GAC3B,GAAIA,EAAGC,QAAUD,EACf,MAAO,eAET,IAAIE,GAAOF,EAAGG,OAASH,EAAGI,SAASF,MAAQF,EAAGI,SAASC,cAAgBL,EAAGE,IAC1E,QACGA,EAAO,cAAgBA,EAAO,IAAM,wBACpCF,EAAGG,QAAUH,EAAGI,SAASE,OAAS,OAASN,EAAGI,SAASE,OAAS,IAIrE,QAASC,GAAUjF,EAAOkF,GAIxB,GAHAA,EAAMA,GAAOtF,OAAOsF,IAGfA,GAAQA,EAAI/C,OAAjB,CAEA,GAAIgD,GAAcD,EAAI/C,OAAOiD,YAC7BF,GAAI/C,OAAOiD,aAAe,SAAyBC,EAAOX,EAAIY,GAC5D,GAAIC,KAGuC,qBAAvCC,OAAOC,UAAUC,SAAS5E,KAAK4D,KACjCa,EAASI,cAAgBlB,EAAoBC,GAC7Ca,EAASK,UAAYlB,EAAGI,SAASc,WAGf,mBAATN,KACTC,EAASM,cAAgBP,GAG3BtF,EAAM+B,iBAAiBsD,GACrBrD,MAAOuD,IAGkB,kBAAhBJ,IACTA,EAAYrE,KAAKf,KAAMsF,EAAOX,EAAIY,KAKxC9F,EAAOD,QAAU0F,EAEjBhE,EAAQ,GAAGiC,UAAU1D,EAAOD,WACzB4D,EAAI,IAAI2C,GAAG,SAAS7E,EAAQzB,EAAOD,GACtC,QAASwG,GAAiBhD,GACxBhD,KAAK6E,KAAO,mBACZ7E,KAAKgD,QAAUA,EAEjBgD,EAAiBN,UAAY,GAAI9E,OACjCoF,EAAiBN,UAAUO,YAAcD,EAEzCvG,EAAOD,QAAUwG,OAEX5B,GAAG,SAASlD,EAAQzB,EAAOD,GACjC,GAAI0G,GAAQhF,EAAQ,GAEhBiD,EAAa,SAASX,EAASQ,EAAOH,GACxC,GAAIsC,GAAuB3C,EAAQQ,GAC/BoC,EAAkB5C,CAEtB,IAAMQ,IAASR,GAAf,CAIA,GAAI6C,GAAwB,SAAVrC,EAAmB,UAAYA,CAEjDR,GAAQQ,GAAS,WACf,GAAIsC,MAAUC,MAAMxF,KAAKyF,WAErB1C,EAAMoC,EAAMO,SAASH,EAAM,KAC3B/D,GAAQyB,MAAOqC,EAAaK,OAAQ,UAAWzE,OAAQuE,UAAWF,GAExD,YAAVtC,EACEsC,EAAK,MAAO,IAEdxC,EACE,sBAAwBoC,EAAMO,SAASH,EAAKC,MAAM,GAAI,MAAQ,kBAChEhE,EAAKN,MAAMuE,UAAYF,EAAKC,MAAM,GAClC1C,GAAYA,EAASC,EAAKvB,IAG5BsB,GAAYA,EAASC,EAAKvB,GAIxB4D,GAGFQ,SAASjB,UAAUkB,MAAM7F,KAAKoF,EAAsBC,EAAiBE,KAK3E7G,GAAOD,SACL2E,WAAYA,KAGXd,EAAI,IAAIwD,GAAG,SAAS3F,EAAQzB,EAAOD,IACtC,SAAWM,GA4CX,QAASgH,KACP,OAAQ,GAAIC,MAed,QAASC,GAAqBC,EAAUpD,GACtC,MAAOqD,GAAWrD,GACd,SAAStB,GACP,MAAOsB,GAAStB,EAAM0E,IAExBpD,EAMN,QAAS5D,KACPD,KAAKmH,IAA8B,gBAATC,QAAqBA,KAAKC,WAEpDrH,KAAKsH,GAAgBC,EAAYC,GACjCxH,KAAKyH,GAAiBF,EAAYG,GAClC1H,KAAK2H,EAAyB,KAC9B3H,KAAK4H,EAAY,KACjB5H,KAAK6H,EAAe,KACpB7H,KAAK8H,EAAgB,KACrB9H,KAAK+H,EAAa,KAClB/H,KAAKgI,EAAiB,KACtBhI,KAAKiI,KACLjI,KAAKkI,GAEHC,QAASC,EAAQC,gBAAkBD,EAAQC,eAAeC,GAC1D5B,OAAQ,aACR6B,gBACAC,cACAC,iBACAC,gBACAC,QAAS,KACTC,qBAAqB,EACrBC,4BAA4B,EAC5BC,iBAAkB,EAElBC,aAAc,IACdC,gBAAiB,GACjBC,iBAAiB,EACjBC,YAAY,EACZC,WAAY,EACZC,iBAEFpJ,KAAKqJ,GACHC,OAAQ,OACRC,WAAW,EAKXC,eAAgBC,IAA2B,SAAW,IAExDzJ,KAAK0J,EAAiB,EACtB1J,KAAK2J,GAAoB,EACzB3J,KAAK4J,EAAgChJ,MAAMoI,gBAG3ChJ,KAAK6J,EAAmBzB,EAAQ5E,YAChCxD,KAAK8J,KACL9J,KAAK+J,KACL/J,KAAKgK,EAAalD,IAClB9G,KAAKiK,KACLjK,KAAKkK,KACLlK,KAAKmK,EAAqB,KAE1BnK,KAAKoK,EAAYhC,EAAQiC,SACzBrK,KAAKsK,EAAYtK,KAAKoK,GAAapK,KAAKoK,EAAUG,KAClDvK,KAAKwK,GAGL,KAAK,GAAIlB,KAAUtJ,MAAK6J,EACtB7J,KAAK8J,EAAwBR,GAAUtJ,KAAK6J,EAAiBP,GAhIjE,GAAImB,GAAWvJ,EAAQ,IACnBmG,EAAYnG,EAAQ,IACpBwJ,EAAMxJ,EAAQ,IACd8E,EAAmB9E,EAAQ,GAE3BgF,EAAQhF,EAAQ,GAChByJ,EAAezE,EAAMyE,aACrBC,EAAa1E,EAAM0E,WACnBC,EAAiB3E,EAAM2E,eACvBC,EAAU5E,EAAM4E,QAChBC,EAAW7E,EAAM6E,SACjBC,EAAgB9E,EAAM8E,cACtBzD,EAAcrB,EAAMqB,YACpBL,EAAahB,EAAMgB,WACnB+D,EAAW/E,EAAM+E,SACjBC,EAAUhF,EAAMgF,QAChBC,EAAgBjF,EAAMiF,cACtBC,EAAOlF,EAAMkF,KACbC,EAAcnF,EAAMmF,YACpBC,EAAWpF,EAAMoF,SACjBC,EAAerF,EAAMqF,aACrBC,EAAStF,EAAMsF,OACfC,EAAavF,EAAMuF,WACnBC,EAAYxF,EAAMwF,UAClBC,EAAQzF,EAAMyF,MACdC,EAAmB1F,EAAM0F,iBACzBC,EAAkB3F,EAAM2F,gBACxBC,EAAmB5F,EAAM4F,iBACzBC,EAAW7F,EAAM6F,SACjBC,EAAO9F,EAAM8F,KACbC,EAAgB/F,EAAM+F,cACtBxC,EAAyBvD,EAAMuD,uBAC/ByC,EAA0BhG,EAAMgG,wBAChCC,EAAqBjG,EAAMiG,mBAC3BC,EAAWlG,EAAMkG,SAEjBlI,EAAoBhD,EAAQ,GAAGiD,WAE/BkI,EAAU,2CAA2CC,MAAM,KAC7DC,EAAa,gEAOXnE,EACgB,mBAAXvI,QACHA,OACkB,mBAAXC,GACLA,EACgB,mBAATC,MACLA,QAENyH,EAAYY,EAAQoE,SACpB9E,EAAaU,EAAQqE,SAmFzBxM,GAAMyF,WAKJgH,QAAS,SAETC,OAAO,EAEPlC,SAAUA,EASVrI,OAAQ,SAASwK,EAAKC,GACpB,GAAI9M,GAAOC,IAEX,IAAID,EAAK+H,EAEP,MADA9H,MAAK8M,EAAU,QAAS,4CACjB/M,CAET,KAAK6M,EAAK,MAAO7M,EAEjB,IAAIgN,GAAgBhN,EAAKmI,CAGrB2E,IACFzB,EAAKyB,EAAS,SAASG,EAAKlK,GAEd,SAARkK,GAA0B,UAARA,GAA2B,SAARA,EACvCjN,EAAKkI,EAAe+E,GAAOlK,EAE3BiK,EAAcC,GAAOlK,IAK3B/C,EAAKkN,OAAOL,GAIZG,EAAcxE,aAAa3E,KAAK,qBAChCmJ,EAAcxE,aAAa3E,KAAK,iDAGhCmJ,EAAcxE,aAAekD,EAAWsB,EAAcxE,cACtDwE,EAAcvE,aAAauE,EAAcvE,WAAWxH,QAChDyK,EAAWsB,EAAcvE,YAE7BuE,EAActE,gBAAgBsE,EAActE,cAAczH,QACtDyK,EAAWsB,EAActE,eAE7BsE,EAAcrE,aAAe+C,EAAWsB,EAAcrE,cACtDqE,EAAcG,eAAiBC,KAAKC,IAClC,EACAD,KAAKE,IAAIN,EAAcG,gBAAkB,IAAK,KAGhD,IAAII,IACFC,KAAK,EACL/J,SAAS,EACTgK,KAAK,EACLnD,UAAU,EACVoD,QAAQ,GAGNxE,EAAkB8D,EAAc9D,eACM,wBAAnCtD,SAAS5E,KAAKkI,GACnBA,EAAkBoC,EAAYiC,EAAwBrE,GAC7CA,KAAoB,IAC7BA,EAAkBqE,GAEpBP,EAAc9D,gBAAkBA,CAEhC,IAAIyE,IACFC,UAAU,GAGRzE,EAAa6D,EAAc7D,UAW/B,OAVqC,uBAA9BvD,SAAS5E,KAAKmI,GACnBA,EAAamC,EAAYqC,EAAoBxE,GACpCA,KAAe,IACxBA,EAAawE,GAEfX,EAAc7D,WAAaA,EAE3BuB,EAAS7B,sBAAwBmE,EAAcnE,oBAGxC7I,GAWT6N,QAAS,WACP,GAAI7N,GAAOC,IAyBX,OAxBID,GAAK8N,YAAc9N,EAAK4J,IAC1Bc,EAASqD,OAAOC,UAAU,WACxBhO,EAAKiO,EAAwBpH,MAAM7G,EAAMyG,aAGvCzG,EAAKmI,EAAeW,4BACtB9I,EAAKkO,IAGPlO,EAAKmO,IAEDnO,EAAKmI,EAAegB,YAAcnJ,EAAKmI,EAAegB,WAAWyE,UACnE5N,EAAKoO,IAGHpO,EAAKmI,EAAee,iBAAiBlJ,EAAKqO,IAG9CrO,EAAKsO,IAELtO,EAAK4J,GAAoB,GAG3B/I,MAAMoI,gBAAkBjJ,EAAKmI,EAAec,gBACrChJ,MAQTiN,OAAQ,SAASL,GACf,GAAI7M,GAAOC,KACTsO,EAAMvO,EAAKwO,EAAU3B,GACrB4B,EAAYF,EAAIG,KAAKC,YAAY,KACjCD,EAAOH,EAAIG,KAAKvL,OAAO,EAAGsL,EAE5BzO,GAAK4O,EAAO/B,EACZ7M,EAAKgI,EAAauG,EAAIM,KACtB7O,EAAK8O,EAAgBP,EAAIQ,MAAQR,EAAIQ,KAAK5L,OAAO,GACjDnD,EAAKiI,EAAiBsG,EAAIG,KAAKvL,OAAOsL,EAAY,GAElDzO,EAAK+H,EAAgB/H,EAAKgP,EAAiBT,GAE3CvO,EAAKiP,EACHjP,EAAK+H,EAAgB,IAAM2G,EAAO,OAAS1O,EAAKiI,EAAiB,UAInEhI,KAAKwK,KAWPyE,QAAS,SAASpC,EAASqC,EAAM5I,GAO/B,MANIY,GAAW2F,KACbvG,EAAO4I,MACPA,EAAOrC,EACPA,EAAUsC,QAGLnP,KAAKuE,KAAKsI,EAASqC,GAAMtI,MAAM5G,KAAMsG,IAW9C/B,KAAM,SAASsI,EAASqC,EAAME,GAqC5B,QAASC,KACP,GAAI/I,MACF3F,EAAI6F,UAAUxF,OACdwD,GAAQqI,GAAYA,GAAWA,EAAQrI,QAAS,CAQlD,KANI4K,GAAWlI,EAAWkI,IACxBA,EAAQxI,MAAM5G,KAAMwG,WAKf7F,KAAK2F,EAAK3F,GAAK6D,EAAOzE,EAAKwE,KAAKsI,EAASrG,UAAU7F,IAAM6F,UAAU7F,EAE1E,KAKE,MAAOuO,GAAKtI,MAAM5G,KAAMsG,GACxB,MAAOpG,GAGP,KAFAH,GAAKuP,IACLvP,EAAKiC,iBAAiB9B,EAAG2M,GACnB3M,GA1DV,GAAIH,GAAOC,IAGX,IAAIuH,EAAY2H,KAAUhI,EAAW2F,GACnC,MAAOA,EAWT,IAPI3F,EAAW2F,KACbqC,EAAOrC,EACPA,EAAUsC,SAKPjI,EAAWgI,GACd,MAAOA,EAIT,KACE,GAAIA,EAAKK,EACP,MAAOL,EAIT,IAAIA,EAAKM,EACP,MAAON,GAAKM,EAEd,MAAOtP,GAIP,MAAOgP,GA8BT,IAAK,GAAIO,KAAYP,GACf1D,EAAO0D,EAAMO,KACfJ,EAAQI,GAAYP,EAAKO,GAW7B,OARAJ,GAAQ3J,UAAYwJ,EAAKxJ,UAEzBwJ,EAAKM,EAAoBH,EAGzBA,EAAQE,GAAY,EACpBF,EAAQK,EAAWR,EAEZG,GAQTM,UAAW,WAWT,MAVAlF,GAASqD,OAAO6B,YAEhB3P,KAAK4P,IACL5P,KAAK6P,IACL7P,KAAK8P,IACL9P,KAAK+P,IAELnP,MAAMoI,gBAAkBhJ,KAAK4J,EAC7B5J,KAAK2J,GAAoB,EAElB3J,MAWTgQ,EAA0B,SAASC,GACjCjQ,KAAK8M,EAAU,QAAS,4CAA6CmD,GACrEjQ,KAAKgC,iBAAiBiO,EAAMC,QAC1BjO,OACEkO,2BAA2B,MAUjCC,EAAgC,WAI9B,MAHApQ,MAAKqQ,EAA2BrQ,KAAKqQ,EAAyBC,KAAKtQ,MACnEoI,EAAQmI,kBACNnI,EAAQmI,iBAAiB,qBAAsBvQ,KAAKqQ,GAC/CrQ,MAQTwQ,EAAgC,WAG9B,MAFApI,GAAQqI,qBACNrI,EAAQqI,oBAAoB,qBAAsBzQ,KAAKqQ,GAClDrQ,MAUTgC,iBAAkB,SAASF,EAAI+K,GAG7B,GAFAA,EAAUxB,GAAaqF,eAAgB,GAAI7D,EAAUA,MAEjDlC,EAAa7I,IAAOA,EAAGwD,MAEzBxD,EAAKA,EAAGwD,UACH,CAAA,GAAIsF,EAAW9I,IAAO+I,EAAe/I,GAAK,CAK/C,GAAI+C,GAAO/C,EAAG+C,OAAS+F,EAAW9I,GAAM,WAAa,gBACjDkB,EAAUlB,EAAGkB,QAAU6B,EAAO,KAAO/C,EAAGkB,QAAU6B,CAEtD,OAAO7E,MAAK+D,eACVf,EACAqI,EAAYwB,GAGV8D,YAAY,EACZD,eAAgB7D,EAAQ6D,eAAiB,KAGxC,GAAI5F,EAAQhJ,GAEjBA,EAAKA,MACA,CAAA,IAAIkJ,EAAclJ,GAavB,MAAO9B,MAAK+D,eACVjC,EACAuJ,EAAYwB,GACV8D,YAAY,EACZD,eAAgB7D,EAAQ6D,eAAiB,IAb7C7D,GAAU7M,KAAK4Q,EAA2C/D,EAAS/K,GACnEA,EAAK,GAAIlB,OAAMiM,EAAQ7J,UAkBzBhD,KAAK2H,EAAyB7F,CAO9B,KACE,GAAI+O,GAAQpG,EAASqG,kBAAkBhP,EACvC9B,MAAK+Q,EAAiBF,EAAOhE,GAC7B,MAAOmE,GACP,GAAIlP,IAAOkP,EACT,KAAMA,GAIV,MAAOhR,OAGTiR,EAA4C,SAASC,EAAgBpP,GACnE,GAAIqP,GAAS1L,OAAO2L,KAAKtP,GAAIuP,OACzBxE,EAAUxB,EAAY6F,GACxBlO,QACE,2CAA6CkJ,EAAwBiF,GACvEG,aAAc5G,EAAIyG,IAClBlP,MAAOiP,EAAejP,WAIxB,OAFA4K,GAAQ5K,MAAMsP,EAAiBpF,EAAmBrK,GAE3C+K,GAUT9I,eAAgB,SAASD,EAAK+I,GAI5B,IACI7M,KAAKkI,EAAeK,aAAaiJ,OACnCxR,KAAKkI,EAAeK,aAAaiJ,KAAK1N,GAFxC,CAOA+I,EAAUA,MACV/I,GAAY,EAEZ,IAOIhC,GAPAS,EAAO8I,GAEPrI,QAASc,GAEX+I,EAQF,KACE,KAAM,IAAIjM,OAAMkD,GAChB,MAAOkN,GACPlP,EAAKkP,EAIPlP,EAAG+C,KAAO,IACV,IAAIgM,GAAQpG,EAASqG,kBAAkBhP,GAGnC2P,EAAcvG,EAAQ2F,EAAMA,QAAUA,EAAMA,MAAM,EAKlDY,IAAoC,2BAArBA,EAAYvC,OAC7BuC,EAAcZ,EAAMA,MAAM,GAG5B,IAAIa,GAAWD,GAAeA,EAAYE,KAAQ,EAElD,MACI3R,KAAKkI,EAAeM,WAAWgJ,OACjCxR,KAAKkI,EAAeM,WAAWgJ,KAAKE,OAMlC1R,KAAKkI,EAAeO,cAAc+I,MACnCxR,KAAKkI,EAAeO,cAAc+I,KAAKE,IAF1C,CAOA,GAAI1R,KAAKkI,EAAeyI,YAAe9D,GAAWA,EAAQ8D,WAAa,CAErEpO,EAAK+O,YAAkC,MAApB/O,EAAK+O,YAAsBxN,EAAMvB,EAAK+O,YAEzDzE,EAAUxB,GAENqF,eAAgB,GAElB7D,GAMFA,EAAQ6D,gBAAkB,CAE1B,IAAIkB,GAAS5R,KAAK6R,EAAehB,EAAOhE,EACxCtK,GAAKoO,YAEHiB,OAAQA,EAAOE,WAcnB,MATIvP,GAAK+O,cACP/O,EAAK+O,YAAcpG,EAAQ3I,EAAK+O,aAC5B/O,EAAK+O,aACJ/O,EAAK+O,cAIZtR,KAAK+R,EAAMxP,GAEJvC,QAGTgS,kBAAmB,SAASC,GAC1B,GAAIC,GAAQ7G,GAER8G,UAAWrL,IAAQ,KAErBmL,EAGF,IAAI/K,EAAWlH,KAAKkI,EAAekK,oBAAqB,CACtD,GAAIC,GAASrS,KAAKkI,EAAekK,mBAAmBF,EAEpD,IAAInH,EAASsH,KAAYlH,EAAckH,GACrCH,EAAQG,MACH,IAAIA,KAAW,EACpB,MAAOrS,MAQX,MAJAA,MAAKkK,EAAatG,KAAKsO,GACnBlS,KAAKkK,EAAalJ,OAAShB,KAAKkI,EAAegF,gBACjDlN,KAAKkK,EAAaoI,QAEbtS,MAGTmD,UAAW,SAASoP,GAClB,GAAIC,MAAgBjM,MAAMxF,KAAKyF,UAAW,EAO1C,OALAxG,MAAK+J,EAASnG,MAAM2O,EAAQC,IACxBxS,KAAK2J,GACP3J,KAAKqO,IAGArO,MASTyS,eAAgB,SAAS7D,GAIvB,MAFA5O,MAAKiI,EAAe2G,KAAOA,EAEpB5O,MAST0S,gBAAiB,SAASzQ,GAGxB,MAFAjC,MAAK2S,EAAc,QAAS1Q,GAErBjC,MAST4S,eAAgB,SAASC,GAGvB,MAFA7S,MAAK2S,EAAc,OAAQE,GAEpB7S,MAQT8S,aAAc,WAGZ,MAFA9S,MAAKiI,KAEEjI,MAQT+S,WAAY,WAEV,MAAO3L,MAAK4L,MAAM3L,EAAUrH,KAAKiI,KASnCgL,eAAgB,SAASC,GAGvB,MAFAlT,MAAKkI,EAAegL,YAAcA,EAE3BlT,MASTmT,WAAY,SAAShL,GAGnB,MAFAnI,MAAKkI,EAAeC,QAAUA,EAEvBnI,MAUTqC,gBAAiB,SAASwB,GACxB,GAAIoD,GAAWjH,KAAKkI,EAAekL,YAEnC,OADApT,MAAKkI,EAAekL,aAAepM,EAAqBC,EAAUpD,GAC3D7D,MAUTqT,sBAAuB,SAASxP,GAC9B,GAAIoD,GAAWjH,KAAKkI,EAAekK,kBAEnC,OADApS,MAAKkI,EAAekK,mBAAqBpL,EAAqBC,EAAUpD,GACjE7D,MAUTsT,sBAAuB,SAASzP,GAC9B,GAAIoD,GAAWjH,KAAKkI,EAAeqL,kBAEnC,OADAvT,MAAKkI,EAAeqL,mBAAqBvM,EAAqBC,EAAUpD,GACjE7D,MAYTwT,aAAc,SAASC,GAGrB,MAFAzT,MAAKkI,EAAeuL,UAAYA,EAEzBzT,MAQT0T,cAAe,WACb,MAAO1T,MAAK2H,GAQdgM,YAAa,WACX,MAAO3T,MAAK6H,GAQdgG,QAAS,WACP,QAAK7N,KAAKmH,MACLnH,KAAK8H,IACH9H,KAAK4T,0BACR5T,KAAK4T,yBAA0B,EAC/B5T,KAAK8M,EAAU,QAAS,2CAEnB,KAKX+G,UAAW,WAIT,GAAIC,GAAc1L,EAAQ0L,WACtBA,IACF9T,KAAKoC,OAAO0R,EAAYlH,IAAKkH,EAAY1R,QAAQwL,WAIrDmG,iBAAkB,SAASlH,GACzB,GACGrF,EADH,CAKAqF,EAAUA,KAEV,IAAI8G,GAAc9G,EAAQmH,SAAWhU,KAAK2T,aAC1C,KAAKA,EACH,KAAM,IAAI3N,GAAiB,kBAG7B,IAAI4G,GAAMC,EAAQD,KAAO5M,KAAK2O,CAC9B,KAAK/B,EACH,KAAM,IAAI5G,GAAiB,cAG7B,IAAIiO,GAASC,mBACTC,EAAK,EACTA,IAAM,YAAcF,EAAON,GAC3BQ,GAAM,QAAUF,EAAOrH,EAEvB,IAAIgC,GAAO/B,EAAQ+B,MAAQ5O,KAAKiI,EAAe2G,IAC3CA,KACEA,EAAK/J,OAAMsP,GAAM,SAAWF,EAAOrF,EAAK/J,OACxC+J,EAAKwF,QAAOD,GAAM,UAAYF,EAAOrF,EAAKwF,QAGhD,IAAIC,GAAerU,KAAK+O,EAAiB/O,KAAKuO,EAAU3B,IAEpD0H,EAAS9M,EAAU+M,cAAc,SACrCD,GAAOE,OAAQ,EACfF,EAAOG,IAAMJ,EAAe,yBAA2BF,GACtD3M,EAAUkN,MAAQlN,EAAUmN,MAAMC,YAAYN,KAIjDO,EAAoB,WAClB,GAAI9U,GAAOC,IACXA,MAAK0J,GAAkB,EACvBoL,WAAW,WAET/U,EAAK2J,GAAkB,KAI3BqL,EAAe,SAASC,EAAWnI,GAEjC,GAAIoI,GAAKjI,CAET,IAAKhN,KAAKsH,EAAV,CAEAuF,EAAUA,MAEVmI,EAAY,QAAUA,EAAU9R,OAAO,EAAG,GAAGgS,cAAgBF,EAAU9R,OAAO,GAE1EsE,EAAU2N,aACZF,EAAMzN,EAAU2N,YAAY,cAC5BF,EAAIG,UAAUJ,GAAW,GAAM,KAE/BC,EAAMzN,EAAU6N,oBAChBJ,EAAID,UAAYA,EAGlB,KAAKhI,IAAOH,GACNrB,EAAOqB,EAASG,KAClBiI,EAAIjI,GAAOH,EAAQG,GAGvB,IAAIxF,EAAU2N,YAEZ3N,EAAU8N,cAAcL,OAIxB,KACEzN,EAAU+N,UAAU,KAAON,EAAID,UAAUQ,cAAeP,GACxD,MAAO/U,OAYbuV,GAAyB,SAASC,GAChC,GAAI3V,GAAOC,IACX,OAAO,UAASiV,GASd,GALAlV,EAAK4V,GAAmB,KAKpB5V,EAAKoK,IAAuB8K,EAAhC,CAEAlV,EAAKoK,EAAqB8K,CAM1B,IAAIW,EACJ,KACEA,EAAShK,EAAiBqJ,EAAIW,QAC9B,MAAO1V,GACP0V,EAAS,YAGX7V,EAAKiS,mBACH6D,SAAU,MAAQH,EAClB1S,QAAS4S,OAUfE,GAAuB,WACrB,GAAI/V,GAAOC,KACT+V,EAAmB,GAKrB,OAAO,UAASd,GACd,GAAIW,EACJ,KACEA,EAASX,EAAIW,OACb,MAAO1V,GAGP,OAEF,GAAI8V,GAAUJ,GAAUA,EAAOI,OAK/B,IACGA,IACY,UAAZA,GAAmC,aAAZA,GAA2BJ,EAAOK,mBAF5D,CAQA,GAAIC,GAAUnW,EAAK4V,EACdO,IACHnW,EAAKoW,GAAwB,SAASlB,GAExCmB,aAAaF,GACbnW,EAAK4V,GAAmBb,WAAW,WACjC/U,EAAK4V,GAAmB,MACvBI,MAUPM,GAAmB,SAASC,EAAMC,GAChC,GAAIC,GAAYzK,EAAS/L,KAAKoK,EAAUG,MACpCkM,EAAW1K,EAASwK,GACpBG,EAAa3K,EAASuK,EAK1BtW,MAAKsK,EAAYiM,EAIbC,EAAUG,WAAaF,EAASE,UAAYH,EAAUI,OAASH,EAASG,OAC1EL,EAAKE,EAASI,UACZL,EAAUG,WAAaD,EAAWC,UAAYH,EAAUI,OAASF,EAAWE,OAC9EN,EAAOI,EAAWG,UAEpB7W,KAAKgS,mBACH6D,SAAU,aACVtT,MACEgU,GAAIA,EACJD,KAAMA,MAKZQ,EAAwB,WACtB,GAAI/W,GAAOC,IACXD,GAAKgX,GAA4BpQ,SAASjB,UAAUC,SAEpDgB,SAASjB,UAAUC,SAAW,WAC5B,MAAoB,kBAAT3F,OAAuBA,KAAKuP,EAC9BxP,EAAKgX,GAA0BnQ,MAAM5G,KAAK0P,EAAUlJ,WAEtDzG,EAAKgX,GAA0BnQ,MAAM5G,KAAMwG,aAItD5E,EAA0B,WACpB5B,KAAK+W,KAEPpQ,SAASjB,UAAUC,SAAW3F,KAAK+W,KAQvCC,EAAqB,WAKnB,QAASC,GAAWC,GAClB,MAAO,UAASC,EAAIhX,GAKlB,IAAK,GADDmG,GAAO,GAAI8Q,OAAM5Q,UAAUxF,QACtBL,EAAI,EAAGA,EAAI2F,EAAKtF,SAAUL,EACjC2F,EAAK3F,GAAK6F,UAAU7F,EAEtB,IAAI0W,GAAmB/Q,EAAK,EAQ5B,OAPIY,GAAWmQ,KACb/Q,EAAK,GAAKvG,EAAKwE,KAAK8S,IAMlBH,EAAKtQ,MACAsQ,EAAKtQ,MAAM5G,KAAMsG,GAEjB4Q,EAAK5Q,EAAK,GAAIA,EAAK,KAOhC,QAASgR,GAAgBxX,GACvB,GAAIyX,GAAQnP,EAAQtI,IAAWsI,EAAQtI,GAAQ4F,SAC3C6R,IAASA,EAAMC,gBAAkBD,EAAMC,eAAe,sBACxDxL,EACEuL,EACA,mBACA,SAASL,GACP,MAAO,UAASxB,EAASyB,EAAIM,EAASC,GAEpC,IACMP,GAAMA,EAAGQ,cACXR,EAAGQ,YAAc5X,EAAKwE,KAAK4S,EAAGQ,cAEhC,MAAOC,IAMT,GAAIC,GAAQC,EAAcC,CA6B1B,OA1BE9O,IACAA,EAAgBuE,MACJ,gBAAX1N,GAAuC,SAAXA,KAI7BgY,EAAe/X,EAAKoW,GAAwB,SAC5C4B,EAAkBhY,EAAKiY,KACvBH,EAAS,SAAS5C,GAIhB,GAAKA,EAAL,CAEA,GAAID,EACJ,KACEA,EAAYC,EAAIlS,KAChB,MAAO7C,GAGP,OAEF,MAAkB,UAAd8U,EAA8B8C,EAAa7C,GACxB,aAAdD,EAAiC+C,EAAgB9C,GAArD,UAGFiC,EAAKnW,KACVf,KACA0V,EACA3V,EAAKwE,KAAK4S,EAAIhI,OAAW0I,GACzBJ,EACAC,KAINO,GAEFjM,EACEuL,EACA,sBACA,SAASL,GACP,MAAO,UAASjC,EAAKkC,EAAIM,EAASC,GAChC,IACEP,EAAKA,IAAOA,EAAG3H,EAAoB2H,EAAG3H,EAAoB2H,GAC1D,MAAOjX,IAGT,MAAOgX,GAAKnW,KAAKf,KAAMiV,EAAKkC,EAAIM,EAASC,KAG7CO,IAvGN,GAAIlY,GAAOC,KAEPiY,EAAkBlY,EAAKkK,EA2BvBhB,EAAkBjJ,KAAKkI,EAAee,eA+E1C+C,GAAK5D,EAAS,aAAc6O,EAAYgB,GACxCjM,EAAK5D,EAAS,cAAe6O,EAAYgB,GACrC7P,EAAQ8P,uBACVlM,EACE5D,EACA,wBACA,SAAS8O,GACP,MAAO,UAASiB,GACd,MAAOjB,GAAKnX,EAAKwE,KAAK4T,MAG1BF,EAqCJ,KAAK,GA/BDG,IACF,cACA,SACA,OACA,mBACA,iBACA,oBACA,kBACA,cACA,aACA,qBACA,cACA,aACA,iBACA,eACA,kBACA,cACA,cACA,eACA,qBACA,SACA,YACA,eACA,gBACA,YACA,kBACA,SACA,iBACA,4BACA,wBAEOzX,EAAI,EAAGA,EAAIyX,EAAapX,OAAQL,IACvC2W,EAAgBc,EAAazX,KAajC0X,EAAwB,WAMtB,QAASC,GAASC,EAAMhL,GAClBgL,IAAQhL,IAAOrG,EAAWqG,EAAIgL,KAChCvM,EAAKuB,EAAKgL,EAAM,SAASrB,GACvB,MAAOnX,GAAKwE,KAAK2S,KARvB,GAAInX,GAAOC,KACPiJ,EAAkBjJ,KAAKkI,EAAee,gBAEtCgP,EAAkBlY,EAAKkK,CAU3B,IAAIhB,EAAgBsE,KAAO,kBAAoBnF,GAAS,CACtD,GAAIoQ,GAAWpQ,EAAQqQ,gBAAkBrQ,EAAQqQ,eAAe/S,SAChEsG,GACEwM,EACA,OACA,SAASE,GACP,MAAO,UAASpP,EAAQqI,GAYtB,MARI1G,GAAS0G,IAAQA,EAAIgH,QAAQ5Y,EAAKgI,UACpC/H,KAAK4Y,IACHtP,OAAQA,EACRqI,IAAKA,EACLkH,YAAa,OAIVH,EAAS9R,MAAM5G,KAAMwG,aAGhCyR,GAGFjM,EACEwM,EACA,OACA,SAASM,GACP,MAAO,YAIL,QAASC,KACP,GAAIxL,EAAIqL,IAAkC,IAAnBrL,EAAIyL,WAAkB,CAC3C,IAGEzL,EAAIqL,GAAYC,YAActL,EAAI0L,OAClC,MAAO/Y,IAITH,EAAKiS,mBACHjP,KAAM,OACN8S,SAAU,MACVtT,KAAMgL,EAAIqL,MAMhB,IAAK,GArBDrL,GAAMvN,KAoBNkZ,GAAS,SAAU,UAAW,cACzBC,EAAI,EAAGA,EAAID,EAAMlY,OAAQmY,IAChCb,EAASY,EAAMC,GAAI5L,EAiBrB,OAdI,sBAAwBA,IAAOrG,EAAWqG,EAAI6L,oBAChDpN,EACEuB,EACA,qBACA,SAAS2J,GACP,MAAOnX,GAAKwE,KAAK2S,EAAM/H,OAAW4J,KAMtCxL,EAAI6L,mBAAqBL,EAGpBD,EAASlS,MAAM5G,KAAMwG,aAGhCyR,GAIAhP,EAAgBsE,KAAOtB,KACzBD,EACE5D,EACA,QACA,SAASiR,GACP,MAAO,YAKL,IAAK,GADD/S,GAAO,GAAI8Q,OAAM5Q,UAAUxF,QACtBL,EAAI,EAAGA,EAAI2F,EAAKtF,SAAUL,EACjC2F,EAAK3F,GAAK6F,UAAU7F,EAGtB,IAEIgR,GAFA2H,EAAahT,EAAK,GAClBgD,EAAS,KAeb,IAZ0B,gBAAfgQ,GACT3H,EAAM2H,EACG,WAAalR,IAAWkR,YAAsBlR,GAAQmR,SAC/D5H,EAAM2H,EAAW3H,IACb2H,EAAWhQ,SACbA,EAASgQ,EAAWhQ,SAGtBqI,EAAM,GAAK2H,EAIT3H,EAAIgH,QAAQ5Y,EAAKgI,QACnB,MAAOsR,GAAUzS,MAAM5G,KAAMsG,EAG3BA,GAAK,IAAMA,EAAK,GAAGgD,SACrBA,EAAShD,EAAK,GAAGgD,OAGnB,IAAIkQ,IACFlQ,OAAQA,EACRqI,IAAKA,EACLkH,YAAa,KAGf,OAAOQ,GACJzS,MAAM5G,KAAMsG,GACZmT,KAAK,SAASC,GASb,MARAF,GAAUX,YAAca,EAAST,OAEjClZ,EAAKiS,mBACHjP,KAAM,OACN8S,SAAU,QACVtT,KAAMiX,IAGDE,IAER,SAAS,SAAS9B,GASjB,KAPA7X,GAAKiS,mBACHjP,KAAM,OACN8S,SAAU,QACVtT,KAAMiX,EACNxV,MAAO,UAGH4T,MAIdK,GAMAhP,EAAgBuE,KAAOxN,KAAKsH,IAC1BE,EAAU+I,kBACZ/I,EAAU+I,iBAAiB,QAASxQ,EAAKoW,GAAwB,UAAU,GAC3E3O,EAAU+I,iBAAiB,WAAYxQ,EAAKiY,MAAyB,IAC5DxQ,EAAUmS,cAEnBnS,EAAUmS,YAAY,UAAW5Z,EAAKoW,GAAwB,UAC9D3O,EAAUmS,YAAY,aAAc5Z,EAAKiY,OAQ7C,IAAI4B,GAASxR,EAAQwR,OACjBC,EAAsBD,GAAUA,EAAOE,KAAOF,EAAOE,IAAIC,QACzDC,GACDH,GACDzR,EAAQ6R,SACR7R,EAAQ6R,QAAQC,WAChB9R,EAAQ6R,QAAQE,YAClB,IAAIlR,EAAgBoB,UAAY2P,EAAwB,CAEtD,GAAII,GAAgBhS,EAAQiS,UAC5BjS,GAAQiS,WAAa,WACnB,GAAIC,GAAcva,EAAKqK,EAAUG,IAGjC,IAFAxK,EAAKwa,GAAkBxa,EAAKuK,EAAWgQ,GAEnCF,EACF,MAAOA,GAAcxT,MAAM5G,KAAMwG,WAIrC,IAAIgU,GAA6B,SAASC,GAGxC,MAAO,YACL,GAAI9I,GAAMnL,UAAUxF,OAAS,EAAIwF,UAAU,GAAK2I,MAQhD,OALIwC,IAEF5R,EAAKwa,GAAkBxa,EAAKuK,EAAWqH,EAAM,IAGxC8I,EAAiB7T,MAAM5G,KAAMwG,YAIxCwF,GAAK5D,EAAQ6R,QAAS,YAAaO,EAA4BvC,GAC/DjM,EAAK5D,EAAQ6R,QAAS,eAAgBO,EAA4BvC,GAGpE,GAAIhP,EAAgBzF,SAAW,WAAa4E,IAAW5E,QAAQkX,IAAK,CAElE,GAAIC,GAAwB,SAAS7W,EAAKvB,GACxCxC,EAAKiS,mBACHhP,QAASc,EACTE,MAAOzB,EAAKyB,MACZ6R,SAAU,YAIdzK,IAAM,QAAS,OAAQ,OAAQ,QAAS,OAAQ,SAAS2J,EAAG/Q,GAC1DE,EAAkBV,QAASQ,EAAO2W,OAKxCC,EAAkB,WAGhB,IADA,GAAIC,GACG7a,KAAKiK,EAAiBjJ,QAAQ,CACnC6Z,EAAU7a,KAAKiK,EAAiBqI,OAEhC,IAAIL,GAAM4I,EAAQ,GAChBhW,EAAOgW,EAAQ,GACf3D,EAAO2D,EAAQ,EAEjB5I,GAAIpN,GAAQqS,IAIhB4D,EAAiB,WAEf,IAAK,GAAIxR,KAAUtJ,MAAK8J,EACtB9J,KAAK6J,EAAiBP,GAAUtJ,KAAK8J,EAAwBR,IAIjEyR,EAAe,WACb,GAAIhb,GAAOC,IAGXoL,GAAKpL,KAAK+J,EAAU,SAASgL,EAAGxC,GAC9B,GAAIyI,GAAYzI,EAAO,GACnBjM,EAAOiM,EAAO,EAClByI,GAAUpU,MAAM7G,GAAOA,GAAMkb,OAAO3U,OAIxC4U,EAAW,SAASC,GAClB,GAAIC,GAAI7O,EAAW1J,KAAKsY,GACtBvO,KACAjM,EAAI,CAEN,KACE,KAAOA,KAAKiM,EAAIP,EAAQ1L,IAAMya,EAAEza,IAAM,GACtC,MAAOT,GACP,KAAM,IAAI8F,GAAiB,gBAAkBmV,GAG/C,GAAIvO,EAAIkC,OAAS9O,KAAKkI,EAAemT,eACnC,KAAM,IAAIrV,GACR,iFAIJ,OAAO4G,IAGT0O,EAAkB,SAAShN,GAEzB,GAAI+F,GAAe,KAAO/F,EAAIsI,MAAQtI,EAAIiN,KAAO,IAAMjN,EAAIiN,KAAO,GAKlE,OAHIjN,GAAIqI,WACNtC,EAAe/F,EAAIqI,SAAW,IAAMtC,GAE/BA,GAGTmH,EAAyB,WAElBxb,KAAK0J,GACR1J,KAAK+Q,EAAiBnK,MAAM5G,KAAMwG,YAItCiV,EAAkB,SAASC,EAAW7O,GACpC,GAAI+E,GAAS5R,KAAK6R,EAAe6J,EAAW7O,EAE5C7M,MAAK2b,EAAc,UACjBD,UAAWA,EACX7O,QAASA,IAGX7M,KAAK4b,GACHF,EAAU7W,KACV6W,EAAU1Y,QACV0Y,EAAU/J,IACV+J,EAAUG,OACVjK,EACA/E,IAIJiP,EAAgB,SAASJ,EAAW7O,GAClC,GAAI9M,GAAOC,KACP4R,IACJ,IAAI8J,EAAU7K,OAAS6K,EAAU7K,MAAM7P,SACrCoK,EAAKsQ,EAAU7K,MAAO,SAASlQ,EAAGkQ,GAChC,GAAIkL,GAAQhc,EAAKic,GAAgBnL,EAAO6K,EAAU/J,IAC9CoK,IACFnK,EAAOhO,KAAKmY,KAKZlP,GAAWA,EAAQ6D,gBACrB,IAAK,GAAIyI,GAAI,EAAGA,EAAItM,EAAQ6D,gBAAkByI,EAAIvH,EAAO5Q,OAAQmY,IAC/DvH,EAAOuH,GAAG8C,QAAS,CAKzB,OADArK,GAASA,EAAOrL,MAAM,EAAGvG,KAAKkI,EAAec,kBAI/CkT,GAAiB,SAASH,EAAOI,GAE/B,GAAIC,IACFC,SAAUN,EAAMpK,IAChBkK,OAAQE,EAAMO,KACdC,MAAOR,EAAMS,OACbC,WAAUV,EAAM7M,MAAQ,IAuB1B,OAfK6M,GAAMpK,MACTyK,EAAWC,SAAWF,GAGxBC,EAAWH,SAGNjc,KAAKkI,EAAeQ,aAAa8I,OACjCxR,KAAKkI,EAAeQ,aAAa8I,KAAK4K,EAAWC,WAEpD,qBAAqB7K,KAAK4K,EAAW,cAErC,qBAAqB5K,KAAK4K,EAAWC,WAGhCD,GAGTM,GAAmB,SAAS3Z,EAAMC,EAAS0O,EAASmK,EAAQjK,EAAQ/E,GAClE,GAAI8P,IAAmB5Z,EAAOA,EAAO,KAAO,KAAOC,GAAW,GAC9D,KACIhD,KAAKkI,EAAeK,aAAaiJ,OAClCxR,KAAKkI,EAAeK,aAAaiJ,KAAKxO,KACrChD,KAAKkI,EAAeK,aAAaiJ,KAAKmL,GAH1C,CAQA,GAAIhM,EAoBJ,IAlBIiB,GAAUA,EAAO5Q,QACnB0Q,EAAUE,EAAO,GAAGyK,UAAY3K,EAGhCE,EAAOE,UACPnB,GAAciB,OAAQA,IACbF,IACTf,GACEiB,SAEIyK,SAAU3K,EACVmK,OAAQA,EACRI,QAAQ,QAOZjc,KAAKkI,EAAeM,WAAWgJ,OACjCxR,KAAKkI,EAAeM,WAAWgJ,KAAKE,OAMlC1R,KAAKkI,EAAeO,cAAc+I,MACnCxR,KAAKkI,EAAeO,cAAc+I,KAAKE,IAF1C,CAOA,GAAInP,GAAO8I,GAGP3I,WACEC,SAEII,KAAMA,EACND,MAAOE,EACP2N,WAAYA,KAIlBiM,YAAalL,GAEf7E,EAIF7M,MAAK+R,EAAMxP,MAGbsa,GAAa,SAASta,GAGpB,GAAI6K,GAAMpN,KAAKkI,EAAeY,gBAI9B,IAHIvG,EAAKS,UACPT,EAAKS,QAAUsI,EAAS/I,EAAKS,QAASoK,IAEpC7K,EAAKG,UAAW,CAClB,GAAIA,GAAYH,EAAKG,UAAUC,OAAO,EACtCD,GAAUI,MAAQwI,EAAS5I,EAAUI,MAAOsK,GAG9C,GAAI0P,GAAUva,EAAKua,OAanB,OAZIA,KACEA,EAAQnL,MACVmL,EAAQnL,IAAMrG,EAASwR,EAAQnL,IAAK3R,KAAKkI,EAAea,eAEtD+T,EAAQC,UACVD,EAAQC,QAAUzR,EAASwR,EAAQC,QAAS/c,KAAKkI,EAAea,gBAIhExG,EAAKya,aAAeza,EAAKya,YAAYra,QACvC3C,KAAKid,GAAiB1a,EAAKya,aAEtBza,GAMT2a,GAAkB,SAASF,GAQzB,IAAK,GAJHG,GACAjL,EACA3P,EAHE6a,GAAY,KAAM,OAAQ,OAKrBzc,EAAI,EAAGA,EAAIqc,EAAYra,OAAO3B,SAAUL,EAE/C,GADAuR,EAAQ8K,EAAYra,OAAOhC,GAExBuR,EAAMsF,eAAe,SACrBzM,EAASmH,EAAM3P,QAChBgJ,EAAa2G,EAAM3P,MAHrB,CAOAA,EAAO8I,KAAgB6G,EAAM3P,KAC7B,KAAK,GAAI4W,GAAI,EAAGA,EAAIiE,EAASpc,SAAUmY,EACrCgE,EAAUC,EAASjE,GACf5W,EAAKiV,eAAe2F,IAAY5a,EAAK4a,KACvC5a,EAAK4a,GAAW7R,EAAS/I,EAAK4a,GAAUnd,KAAKkI,EAAea,cAGhEiU,GAAYra,OAAOhC,GAAG4B,KAAOA,IAIjC8a,GAAc,WACZ,GAAKrd,KAAKyH,GAAkBzH,KAAKsH,EAAjC,CACA,GAAIgW,KAkBJ,OAhBItd,MAAKyH,GAAiBC,EAAW6V,YACnCD,EAAS3U,SACP6U,aAAc9V,EAAW6V,YAKzBnV,EAAQiC,UAAYjC,EAAQiC,SAASE,OACvC+S,EAAS3L,IAAMvJ,EAAQiC,SAASE,MAG9BvK,KAAKsH,GAAgBE,EAAUiW,WAC5BH,EAAS3U,UAAS2U,EAAS3U,YAChC2U,EAAS3U,QAAQoU,QAAUvV,EAAUiW,UAGhCH,IAGTI,EAAe,WACb1d,KAAK2d,GAAmB,EACxB3d,KAAK4d,GAAgB,MAGvBC,GAAgB,WACd,MAAO7d,MAAK2d,IAAoB7W,IAAQ9G,KAAK4d,GAAgB5d,KAAK2d,IAYpEG,GAAe,SAASC,GACtB,GAAIC,GAAOhe,KAAK4H,CAEhB,UACGoW,GACDD,EAAQ/a,UAAYgb,EAAKhb,SACzB+a,EAAQnB,cAAgBoB,EAAKpB,eAK3BmB,EAAQpN,YAAcqN,EAAKrN,WACtB7E,EAAiBiS,EAAQpN,WAAYqN,EAAKrN,aACxCoN,EAAQrb,YAAasb,EAAKtb,WAE5BmJ,EAAgBkS,EAAQrb,UAAWsb,EAAKtb,aAMnDub,GAAkB,SAASnB,GAEzB,IAAI9c,KAAKke,KAAT,CAIA,GAAIjF,GAAS6D,EAAQ7D,MAKrB,IAAiB,MAAXA,GAA6B,MAAXA,GAA6B,MAAXA,EAA1C,CAEA,GAAIkF,EACJ,KAIIA,EADElS,IACM6Q,EAAQnU,QAAQyV,IAAI,eAEpBtB,EAAQuB,kBAAkB,eAIpCF,EAA8B,IAAtBG,SAASH,EAAO,IACxB,MAAOje,IAITF,KAAK2d,GAAmBQ,EAEpBA,EAEwB,EAAxBne,KAAK2d,IAAwB,IAEjC3d,KAAK4d,GAAgB9W,OAGvByX,EAAO,SAAShc,GACd,GAAIwK,GAAgB/M,KAAKkI,EAErBsW,GACAC,QAASze,KAAKgI,EACdtB,OAAQqG,EAAcrG,OACtBgY,SAAU,cAEZpB,EAAWtd,KAAK2e,IAsDlB,IApDIrB,IACFkB,EAAS1B,QAAUQ,GAIjB/a,EAAKmO,sBAAuBnO,GAAKmO,eAErCnO,EAAO8I,EAAYmT,EAAUjc,GAG7BA,EAAKsQ,KAAOxH,EAAYA,KAAgBrL,KAAKiI,EAAe4K,MAAOtQ,EAAKsQ,MACxEtQ,EAAKN,MAAQoJ,EAAYA,KAAgBrL,KAAKiI,EAAehG,OAAQM,EAAKN,OAG1EM,EAAKN,MAAM,oBAAsB6E,IAAQ9G,KAAKgK,EAE1ChK,KAAKkK,GAAgBlK,KAAKkK,EAAalJ,OAAS,IAGlDuB,EAAKya,aACHra,UAAW4D,MAAMxF,KAAKf,KAAKkK,EAAc,KAIzClK,KAAKiI,EAAe2G,OAEtBrM,EAAKqM,KAAO5O,KAAKiI,EAAe2G,MAI9B7B,EAAcmG,cAAa3Q,EAAK2Q,YAAcnG,EAAcmG,aAG5DnG,EAAc5E,UAAS5F,EAAK4F,QAAU4E,EAAc5E,SAGpD4E,EAAc6R,aAAYrc,EAAKsc,YAAc9R,EAAc6R,YAE/Drc,EAAOvC,KAAK8e,GAAcvc,GAG1BkD,OAAO2L,KAAK7O,GAAMwc,QAAQ,SAAS/R,IAChB,MAAbzK,EAAKyK,IAA8B,KAAdzK,EAAKyK,IAAe7B,EAAc5I,EAAKyK,YACvDzK,GAAKyK,KAIZ9F,EAAW6F,EAAcqG,gBAC3B7Q,EAAOwK,EAAcqG,aAAa7Q,IAASA,GAIxCA,IAAQ4I,EAAc5I,MAMzB2E,EAAW6F,EAAcwG,qBACxBxG,EAAcwG,mBAAmBhR,IAOpC,MAAIvC,MAAKke,SACPle,MAAK8M,EAAU,OAAQ,uCAAwCvK,QAIzB,gBAA7BwK,GAAc5D,WACnBgE,KAAK6R,SAAWjS,EAAc5D,YAChCnJ,KAAKif,GAAsB1c,GAG7BvC,KAAKif,GAAsB1c,KAI/B2c,GAAe,SAAS3c,GACtB,MAAO6J,GAAS7J,EAAMvC,KAAKkI,EAAekB,eAG5C+V,GAAU,WACR,MAAOxT,MAGTyT,GAAuB,SAAS7c,EAAMsB,GACpC,GAAI9D,GAAOC,KACP+M,EAAgB/M,KAAKkI,CAEzB,IAAKlI,KAAK6N,UAAV,CAQA,GALAtL,EAAOvC,KAAKqf,GAAY9c,IAKnBvC,KAAKkI,EAAeoX,iBAAmBtf,KAAKuf,GAAchd,GAE7D,WADAvC,MAAK8M,EAAU,OAAQ,+BAAgCvK,EAOzDvC,MAAK6H,EAAetF,EAAKid,WAAajd,EAAKid,SAAWxf,KAAKyf,MAG3Dzf,KAAK4H,EAAYrF,EAEjBvC,KAAK8M,EAAU,QAAS,uBAAwBvK,EAEhD,IAAImd,IACFC,eAAgB,IAChBC,cAAe,YAAc5f,KAAK0M,QAClCmT,WAAY7f,KAAK+H,EAGf/H,MAAK6O,IACP6Q,EAAKI,cAAgB9f,KAAK6O,EAG5B,IAAInM,GAAYH,EAAKG,WAAaH,EAAKG,UAAUC,OAAO,EAItD3C,MAAKkI,EAAee,iBACpBjJ,KAAKkI,EAAee,gBAAgBwE,QAEpCzN,KAAKgS,mBACH6D,SAAU,SACV7S,QAASN,GACJA,EAAUK,KAAOL,EAAUK,KAAO,KAAO,IAAML,EAAUI,MAC1DP,EAAKS,QACTwc,SAAUjd,EAAKid,SACfxb,MAAOzB,EAAKyB,OAAS,SAIzB,IAAI2N,GAAM3R,KAAKgP,GACdjC,EAAc0G,WAAazT,KAAK+f,IAAchf,KAAKf,MAClD2R,IAAKA,EACL+N,KAAMA,EACNnd,KAAMA,EACNsK,QAASE,EACTiT,UAAW,WACTjgB,EAAKyK,IAELzK,EAAK4b,EAAc,WACjBpZ,KAAMA,EACNkS,IAAK9C,IAEP9N,GAAYA,KAEdoc,QAAS,SAAiB3a,GACxBvF,EAAK+M,EAAU,QAAS,mCAAoCxH,GAExDA,EAAMwX,SACR/c,EAAKmgB,GAAiB5a,EAAMwX,SAG9B/c,EAAK4b,EAAc,WACjBpZ,KAAMA,EACNkS,IAAK9C,IAEPrM,EAAQA,GAAS,GAAI1E,OAAM,sDAC3BiD,GAAYA,EAASyB,QAK3B6a,GAAc,SAASC,GAErB,GAAIzO,GAAMyO,EAAKzO,IAAM,IAAMjG,EAAU0U,EAAKV,MAEtCW,EAAmB,KACnBC,IAUJ,IARIF,EAAKvT,QAAQlE,UACf0X,EAAmBrgB,KAAKugB,GAAcH,EAAKvT,QAAQlE,UAGjDyX,EAAKvT,QAAQ2T,kBACfF,EAA2BtgB,KAAKugB,GAAcH,EAAKvT,QAAQ2T,kBAGzDvU,IAAiB,CACnBqU,EAAyB3L,KAAOtN,EAAU+Y,EAAK7d,KAE/C,IAAIke,GAAsBpV,KAAgBrL,KAAKqJ,GAC3CqX,EAAerV,EAAYoV,EAAqBH,EAMpD,OAJID,KACFK,EAAa/X,QAAU0X,GAGlBjY,EACJuY,MAAMhP,EAAK+O,GACXjH,KAAK,SAASC,GACb,GAAIA,EAASkH,GACXR,EAAKJ,WAAaI,EAAKJ,gBAClB,CACL,GAAI1a,GAAQ,GAAI1E,OAAM,sBAAwB8Y,EAAST,OAGvD3T,GAAMwX,QAAUpD,EAChB0G,EAAKH,SAAWG,EAAKH,QAAQ3a,MAGhC,SAAS,WACR8a,EAAKH,SACHG,EAAKH,QAAQ,GAAIrf,OAAM,6CAI/B,GAAIkc,GAAU1U,EAAQqQ,gBAAkB,GAAIrQ,GAAQqQ,cACpD,IAAKqE,EAAL,CAGA,GAAI+D,GAAU,mBAAqB/D,IAAqC,mBAAnBgE,eAEhDD,KAED,mBAAqB/D,GACvBA,EAAQ1D,mBAAqB,WAC3B,GAA2B,IAAvB0D,EAAQ9D,WAEL,GAAuB,MAAnB8D,EAAQ7D,OACjBmH,EAAKJ,WAAaI,EAAKJ,gBAClB,IAAII,EAAKH,QAAS,CACvB,GAAIrI,GAAM,GAAIhX,OAAM,sBAAwBkc,EAAQ7D,OACpDrB,GAAIkF,QAAUA,EACdsD,EAAKH,QAAQrI,MAIjBkF,EAAU,GAAIgE,gBAGdnP,EAAMA,EAAIoP,QAAQ,WAAY,IAG1BX,EAAKJ,YACPlD,EAAQkE,OAASZ,EAAKJ,WAEpBI,EAAKH,UACPnD,EAAQmE,QAAU,WAChB,GAAIrJ,GAAM,GAAIhX,OAAM,oCACpBgX,GAAIkF,QAAUA,EACdsD,EAAKH,QAAQrI,MAKnBkF,EAAQoE,KAAK,OAAQvP,GAEjB0O,GACFjV,EAAKiV,EAAkB,SAASrT,EAAKlK,GACnCga,EAAQqE,iBAAiBnU,EAAKlK,KAIlCga,EAAQsE,KAAK/Z,EAAU+Y,EAAK7d,UAG9B8e,GAAe,SAASC,GACtB,GAAIC,KAEJ,KAAK,GAAIvU,KAAOsU,GACd,GAAIA,EAAK9J,eAAexK,GAAM,CAC5B,GAAIlK,GAAQwe,EAAKtU,EACjBuU,GAAUvU,GAAwB,kBAAVlK,GAAuBA,IAAUA,EAI7D,MAAOye,IAGTC,EAAW,SAASxd,GAGhBhE,KAAK8J,EAAwB9F,KAC5BhE,KAAK2M,OAAS3M,KAAKkI,EAAeyE,QAGnChG,SAASjB,UAAUkB,MAAM7F,KACvBf,KAAK8J,EAAwB9F,GAC7BhE,KAAK6J,KACFtD,MAAMxF,KAAKyF,UAAW,KAK/Bib,EAAe,SAASzU,EAAKiC,GACvB1H,EAAY0H,SACPjP,MAAKiI,EAAe+E,GAE3BhN,KAAKiI,EAAe+E,GAAO3B,EAAYrL,KAAKiI,EAAe+E,OAAYiC,KAM7EhP,EAAMyF,UAAUgc,QAAUzhB,EAAMyF,UAAU+M,eAC1CxS,EAAMyF,UAAUic,kBAAoB1hB,EAAMyF,UAAUyN,WAEpD1T,EAAOD,QAAUS,IAEdc,KAAKf,KAAuB,mBAAXF,QAAyBA,OAAyB,mBAATC,MAAuBA,KAAyB,mBAAXF,QAAyBA,aACxH+hB,GAAK,GAAGC,GAAK,GAAGC,GAAK,GAAG/b,EAAI,EAAE3B,EAAI,EAAEf,EAAI,IAAID,GAAG,SAASlC,EAAQzB,EAAOD,IAC1E,SAAWM,GAOX,GAAIiiB,GAAmB7gB,EAAQ,GAG3BkH,EACgB,mBAAXvI,QACHA,OACkB,mBAAXC,GAAyBA,EAAyB,mBAATC,MAAuBA,QACzEiiB,EAAS5Z,EAAQnI,MAEjBA,EAAQ,GAAI8hB,EAQhB9hB,GAAMgiB,WAAa,WAEjB,MADA7Z,GAAQnI,MAAQ+hB,EACT/hB,GAGTA,EAAM4T,YAENpU,EAAOD,QAAUS,EAoCjBR,EAAOD,QAAQ0iB,OAASH,IAErBhhB,KAAKf,KAAuB,mBAAXF,QAAyBA,OAAyB,mBAATC,MAAuBA,KAAyB,mBAAXF,QAAyBA,aACxHgH,EAAI,IAAIxD,GAAG,SAASnC,EAAQzB,EAAOD,IACtC,SAAWM,GAQX,QAASiL,GAASoX,GAChB,MAAuB,gBAATA,IAA8B,OAATA,EAKrC,QAASrX,GAAQhI,GACf,OAAQ2C,OAAOC,UAAUC,SAAS5E,KAAK+B,IACrC,IAAK,iBACH,OAAO,CACT,KAAK,qBACH,OAAO,CACT,KAAK,wBACH,OAAO,CACT,SACE,MAAOA,aAAiBlC,QAI9B,QAAS+J,GAAa7H,GACpB,MAAiD,wBAA1C2C,OAAOC,UAAUC,SAAS5E,KAAK+B,GAGxC,QAAS8H,GAAW9H,GAClB,MAAiD,sBAA1C2C,OAAOC,UAAUC,SAAS5E,KAAK+B,GAGxC,QAAS+H,GAAe/H,GACtB,MAAiD,0BAA1C2C,OAAOC,UAAUC,SAAS5E,KAAK+B,GAGxC,QAASyE,GAAY4a,GACnB,MAAgB,UAATA,EAGT,QAASjb,GAAWib,GAClB,MAAuB,kBAATA,GAGhB,QAASnX,GAAcmX,GACrB,MAAgD,oBAAzC1c,OAAOC,UAAUC,SAAS5E,KAAKohB,GAGxC,QAASlX,GAASkX,GAChB,MAAgD,oBAAzC1c,OAAOC,UAAUC,SAAS5E,KAAKohB,GAGxC,QAASjX,GAAQiX,GACf,MAAgD,mBAAzC1c,OAAOC,UAAUC,SAAS5E,KAAKohB,GAGxC,QAAShX,GAAcgX,GACrB,IAAKnX,EAAcmX,GAAO,OAAO,CAEjC,KAAK,GAAIpN,KAAKoN,GACZ,GAAIA,EAAK3K,eAAezC,GACtB,OAAO,CAGX,QAAO,EAGT,QAASqN,KACP,IAEE,MADA,IAAIC,YAAW,KACR,EACP,MAAOniB,GACP,OAAO,GAIX,QAASoiB,KACP,IAEE,MADA,IAAIC,UAAS,KACN,EACP,MAAOriB,GACP,OAAO,GAIX,QAASsiB,KACP,IAEE,MADA,IAAIC,cAAa,KACV,EACP,MAAOviB,GACP,OAAO,GAIX,QAAS+L,KACP,KAAM,SAAW7D,IAAU,OAAO,CAElC,KAIE,MAHA,IAAIsa,SACJ,GAAInJ,SAAQ,IACZ,GAAIoJ,WACG,EACP,MAAOziB,GACP,OAAO,GAQX,QAASuJ,KACP,IAAKwC,IAAiB,OAAO,CAE7B,KAKE,MAHA,IAAIsN,SAAQ,cACV/P,eAAgB,YAEX,EACP,MAAOtJ,GACP,OAAO,GAIX,QAAS0iB,KACP,MAAwC,kBAA1BC,uBAGhB,QAASvgB,GAAgBuB,GACvB,QAASuP,GAAa7Q,EAAM0E,GAC1B,GAAI6b,GAAiBjf,EAAStB,IAASA,CACvC,OAAI0E,GACKA,EAAS6b,IAAmBA,EAE9BA,EAGT,MAAO1P,GAGT,QAAShI,GAAK6G,EAAKpO,GACjB,GAAIlD,GAAGwY,CAEP,IAAI5R,EAAY0K,EAAIjR,QAClB,IAAKL,IAAKsR,GACJzG,EAAOyG,EAAKtR,IACdkD,EAAS9C,KAAK,KAAMJ,EAAGsR,EAAItR,QAK/B,IADAwY,EAAIlH,EAAIjR,OAEN,IAAKL,EAAI,EAAGA,EAAIwY,EAAGxY,IACjBkD,EAAS9C,KAAK,KAAMJ,EAAGsR,EAAItR,IAMnC,QAAS0K,GAAY0X,EAAMC,GACzB,MAAKA,IAGL5X,EAAK4X,EAAM,SAAShW,EAAKlK,GACvBigB,EAAK/V,GAAOlK,IAEPigB,GALEA,EAgBX,QAASxX,GAAa0G,GACpB,QAAKxM,OAAOwd,UAGLxd,OAAOwd,SAAShR,GAGzB,QAAS3G,GAAS6P,EAAK/N,GACrB,GAAmB,gBAARA,GACT,KAAM,IAAIxM,OAAM,yDAElB,OAAmB,gBAARua,IAA4B,IAAR/N,EACtB+N,EAEFA,EAAIna,QAAUoM,EAAM+N,EAAMA,EAAIjY,OAAO,EAAGkK,GAAO,IAUxD,QAAS5B,GAAO0X,EAAQlW,GACtB,MAAOvH,QAAOC,UAAU8R,eAAezW,KAAKmiB,EAAQlW,GAGtD,QAASvB,GAAW0X,GAQlB,IALA,GAGEC,GAHEC,KACF1iB,EAAI,EACJ2iB,EAAMH,EAASniB,OAGVL,EAAI2iB,EAAK3iB,IACdyiB,EAAUD,EAASxiB,GACfsK,EAASmY,GAGXC,EAAQzf,KAAKwf,EAAQrC,QAAQ,8BAA+B,SACnDqC,GAAWA,EAAQG,QAE5BF,EAAQzf,KAAKwf,EAAQG,OAIzB,OAAO,IAAIC,QAAOH,EAAQI,KAAK,KAAM,KAGvC,QAAS/X,GAAUnL,GACjB,GAAImjB,KAIJ,OAHAtY,GAAK7K,EAAG,SAASyM,EAAKlK,GACpB4gB,EAAM9f,KAAKsQ,mBAAmBlH,GAAO,IAAMkH,mBAAmBpR,MAEzD4gB,EAAMD,KAAK,KAMpB,QAAS1X,GAAS4F,GAChB,GAAmB,gBAARA,GAAkB,QAC7B,IAAIgS,GAAQhS,EAAIgS,MAAM,kEAGlBC,EAAQD,EAAM,IAAM,GACpBE,EAAWF,EAAM,IAAM,EAC3B,QACEhN,SAAUgN,EAAM,GAChB/M,KAAM+M,EAAM,GACZlV,KAAMkV,EAAM,GACZ9M,SAAU8M,EAAM,GAAKC,EAAQC,GAGjC,QAASlY,KACP,GAAImY,GAAS1b,EAAQ0b,QAAU1b,EAAQ2b,QAEvC,KAAKxc,EAAYuc,IAAWA,EAAOE,gBAAiB,CAGlD,GAAIC,GAAM,GAAIC,aAAY,EAC1BJ,GAAOE,gBAAgBC,GAGvBA,EAAI,GAAe,KAATA,EAAI,GAAc,MAE5BA,EAAI,GAAe,MAATA,EAAI,GAAe,KAE7B,IAAIE,GAAM,SAASC,GAEjB,IADA,GAAIC,GAAID,EAAIze,SAAS,IACd0e,EAAErjB,OAAS,GAChBqjB,EAAI,IAAMA,CAEZ,OAAOA,GAGT,OACEF,GAAIF,EAAI,IACRE,EAAIF,EAAI,IACRE,EAAIF,EAAI,IACRE,EAAIF,EAAI,IACRE,EAAIF,EAAI,IACRE,EAAIF,EAAI,IACRE,EAAIF,EAAI,IACRE,EAAIF,EAAI,IAIV,MAAO,mCAAmClD,QAAQ,QAAS,SAASuD,GAClE,GAAIjkB,GAAqB,GAAhB8M,KAAK6R,SAAiB,EAC7BqF,EAAU,MAANC,EAAYjkB,EAAS,EAAJA,EAAW,CAClC,OAAOgkB,GAAE1e,SAAS,MAYxB,QAASiG,GAAiB2Y,GAWxB,IATA,GAOEC,GAPEC,EAAsB,EACxBC,EAAiB,GACjBC,KACAC,EAAS,EACTtB,EAAM,EACNuB,EAAY,MACZC,EAAYD,EAAU7jB,OAGjBujB,GAAQK,IAAWH,IACxBD,EAAUO,EAAoBR,KAMhB,SAAZC,GACCI,EAAS,GAAKtB,EAAMqB,EAAI3jB,OAAS8jB,EAAYN,EAAQxjB,QAAU0jB,KAKlEC,EAAI/gB,KAAK4gB,GAETlB,GAAOkB,EAAQxjB,OACfujB,EAAOA,EAAKS,UAGd,OAAOL,GAAI7S,UAAU2R,KAAKoB,GAS5B,QAASE,GAAoBR,GAC3B,GACEU,GACAC,EACAlY,EACAmY,EACAxkB,EALEgkB,IAOJ,KAAKJ,IAASA,EAAKvO,QACjB,MAAO,EAST,IANA2O,EAAI/gB,KAAK2gB,EAAKvO,QAAQR,eAClB+O,EAAKjc,IACPqc,EAAI/gB,KAAK,IAAM2gB,EAAKjc,IAGtB2c,EAAYV,EAAKU,UACbA,GAAaha,EAASga,GAExB,IADAC,EAAUD,EAAU3Y,MAAM,OACrB3L,EAAI,EAAGA,EAAIukB,EAAQlkB,OAAQL,IAC9BgkB,EAAI/gB,KAAK,IAAMshB,EAAQvkB,GAG3B,IAAIykB,IAAiB,OAAQ,OAAQ,QAAS,MAC9C,KAAKzkB,EAAI,EAAGA,EAAIykB,EAAcpkB,OAAQL,IACpCqM,EAAMoY,EAAczkB,GACpBwkB,EAAOZ,EAAKc,aAAarY,GACrBmY,GACFR,EAAI/gB,KAAK,IAAMoJ,EAAM,KAAOmY,EAAO,KAGvC,OAAOR,GAAIlB,KAAK,IAMlB,QAAS6B,GAAgB7kB,EAAG8kB,GAC1B,WAAY9kB,IAAM8kB,GAMpB,QAASC,GAAgB/kB,EAAG8kB,GAC1B,MAAOhe,GAAY9G,IAAM8G,EAAYge,GAMvC,QAAS1Z,GAAgBmF,EAAKyU,GAC5B,OAAIH,EAAgBtU,EAAKyU,KAEzBzU,EAAMA,EAAIrO,OAAO,GACjB8iB,EAAMA,EAAI9iB,OAAO,GAEbqO,EAAIjO,OAAS0iB,EAAI1iB,MAAQiO,EAAIlO,QAAU2iB,EAAI3iB,SAG3C0iB,EAAgBxU,EAAIL,WAAY8U,EAAI9U,aAEjC7E,EAAiBkF,EAAIL,WAAY8U,EAAI9U,cAM9C,QAAS7E,GAAiB4Z,EAAQC,GAChC,GAAIL,EAAgBI,EAAQC,GAAS,OAAO,CAE5C,IAAIC,GAAUF,EAAO9T,OACjBiU,EAAUF,EAAO/T,MAGrB,IAAIgU,EAAQ5kB,SAAW6kB,EAAQ7kB,OAAQ,OAAO,CAI9C,KAAK,GADDP,GAAG8kB,EACE5kB,EAAI,EAAGA,EAAIilB,EAAQ5kB,OAAQL,IAGlC,GAFAF,EAAImlB,EAAQjlB,GACZ4kB,EAAIM,EAAQllB,GAEVF,EAAE4b,WAAakJ,EAAElJ,UACjB5b,EAAEob,SAAW0J,EAAE1J,QACfpb,EAAE8b,QAAUgJ,EAAEhJ,OACd9b,EAAE,cAAgB8kB,EAAE,YAEpB,OAAO,CAEX,QAAO,EAUT,QAASvZ,GAAKiG,EAAKpN,EAAMihB,EAAaC,GACpC,GAAW,MAAP9T,EAAJ,CACA,GAAIiF,GAAOjF,EAAIpN,EACfoN,GAAIpN,GAAQihB,EAAY5O,GACxBjF,EAAIpN,GAAM0K,GAAY,EACtB0C,EAAIpN,GAAM6K,EAAWwH,EACjB6O,GACFA,EAAMniB,MAAMqO,EAAKpN,EAAMqS,KAU3B,QAASzQ,GAASuf,EAAOC,GACvB,IAAK/a,EAAQ8a,GAAQ,MAAO,EAI5B,KAAK,GAFDE,MAEKvlB,EAAI,EAAGA,EAAIqlB,EAAMhlB,OAAQL,IAChC,IACEulB,EAAOtiB,KAAKuiB,OAAOH,EAAMrlB,KACzB,MAAOT,GACPgmB,EAAOtiB,KAAK,gCAIhB,MAAOsiB,GAAOzC,KAAKwC,GASrB,QAASG,GAAWtjB,GAClB,QAASujB,UAAUvjB,GAAOwJ,MAAM,SAAStL,OAG3C,QAASslB,GAASxjB,GAChB,MAAOsjB,GAAWhf,KAAKC,UAAUvE,IAGnC,QAASyjB,GAAezjB,GACtB,GAAqB,gBAAVA,GAAoB,CAC7B,GAAI0jB,GAAY,EAChB,OAAOlb,GAASxI,EAAO0jB,GAClB,GACY,gBAAV1jB,IACU,iBAAVA,IACU,mBAAVA,GAEP,MAAOA,EAGT,IAAIC,GAAO0C,OAAOC,UAAUC,SAAS5E,KAAK+B,EAG1C,OAAa,oBAATC,EAAmC,WAC1B,mBAATA,EAAkC,UACzB,sBAATA,EACKD,EAAM+B,KAAO,cAAgB/B,EAAM+B,KAAO,IAAM,aAElD/B,EAGT,QAAS2jB,GAAgB3jB,EAAO4jB,GAC9B,MAAc,KAAVA,EAAoBH,EAAezjB,GAEnCkI,EAAclI,GACT2C,OAAO2L,KAAKtO,GAAO6jB,OAAO,SAASC,EAAK5Z,GAE7C,MADA4Z,GAAI5Z,GAAOyZ,EAAgB3jB,EAAMkK,GAAM0Z,EAAQ,GACxCE,OAEAxP,MAAMlM,QAAQpI,GAChBA,EAAM+jB,IAAI,SAASC,GACxB,MAAOL,GAAgBK,EAAKJ,EAAQ,KAIjCH,EAAezjB,GAGxB,QAASqJ,GAAmBrK,EAAI4kB,EAAOK,GACrC,IAAK/b,EAAclJ,GAAK,MAAOA,EAE/B4kB,GAAyB,gBAAVA,GAAqBM,EAAgCN,EACpEK,EAA2B,gBAAVL,GAAqBO,EAA+BF,CAErE,IAAIG,GAAaT,EAAgB3kB,EAAI4kB,EAErC,OAAIJ,GAASjf,EAAU6f,IAAeH,EAC7B5a,EAAmBrK,EAAI4kB,EAAQ,GAGjCQ,EAGT,QAAShb,GAAwBkF,EAAMoV,GACrC,GAAoB,gBAATpV,IAAqC,gBAATA,GAAmB,MAAOA,GAAKzL,UACtE,KAAKyR,MAAMlM,QAAQkG,GAAO,MAAO,EAKjC,IAHAA,EAAOA,EAAK+V,OAAO,SAASna,GAC1B,MAAsB,gBAARA,KAEI,IAAhBoE,EAAKpQ,OAAc,MAAO,sBAG9B,IADAwlB,EAAiC,gBAAdA,GAAyBY,EAA4BZ,EACpEpV,EAAK,GAAGpQ,QAAUwlB,EAAW,MAAOpV,GAAK,EAE7C,KAAK,GAAIiW,GAAWjW,EAAKpQ,OAAQqmB,EAAW,EAAGA,IAAY,CACzD,GAAIH,GAAa9V,EAAK7K,MAAM,EAAG8gB,GAAU5D,KAAK,KAC9C,MAAIyD,EAAWlmB,OAASwlB,GACxB,MAAIa,KAAajW,EAAKpQ,OAAekmB,EAC9BA,EAAa,IAGtB,MAAO,GAGT,QAAS9a,GAAS4Z,EAAO5c,GAcvB,QAASke,GAAeC,GACtB,MAAIrc,GAAQqc,GACHA,EAAYV,IAAI,SAASC,GAC9B,MAAOQ,GAAeR,KAItB9b,EAAcuc,GACT9hB,OAAO2L,KAAKmW,GAAaZ,OAAO,SAASC,EAAKY,GAMnD,MAJEZ,GAAIY,GADFC,EAAejW,KAAKgW,GACbE,EAEAJ,EAAeC,EAAYC,IAE/BZ,OAIJW,EA/BT,IAAKrc,EAAQ9B,IAAkB8B,EAAQ9B,IAAyC,IAAxBA,EAAapI,OACnE,MAAOglB,EAET,IAEI2B,GAFAF,EAAiBhc,EAAWrC,GAC5Bse,EAAe,UAGnB,KACEC,EAAYvgB,KAAK4L,MAAM3L,EAAU2e,IACjC,MAAO4B,GACP,MAAO5B,GAwBT,MAAOsB,GAAeK,GA5lBxB,GAAItgB,GAAYnG,EAAQ,IAEpBkH,EACgB,mBAAXvI,QACHA,OACkB,mBAAXC,GAAyBA,EAAyB,mBAATC,MAAuBA,QA0dzEinB,EAAgC,EAEhCC,EAA+B,MAC/BG,EAA4B,EA6HhC3nB,GAAOD,SACLuL,SAAUA,EACVD,QAASA,EACTH,aAAcA,EACdC,WAAYA,EACZC,eAAgBA,EAChBtD,YAAaA,EACbL,WAAYA,EACZ8D,cAAeA,EACfC,SAAUA,EACVC,QAASA,EACTC,cAAeA,EACfiX,mBAAoBA,EACpBE,iBAAkBA,EAClBE,qBAAsBA,EACtBvW,cAAeA,EACfxC,uBAAwBA,EACxBmZ,8BAA+BA,EAC/BtgB,gBAAiBA,EACjB8I,KAAMA,EACNC,YAAaA,EACbC,SAAUA,EACVC,aAAcA,EACdC,OAAQA,EACRC,WAAYA,EACZC,UAAWA,EACXC,MAAOA,EACPC,iBAAkBA,EAClBmZ,oBAAqBA,EACrBlZ,gBAAiBA,EACjBC,iBAAkBA,EAClBC,SAAUA,EACVC,KAAMA,EACNvF,SAAUA,EACV0F,mBAAoBA,EACpBD,wBAAyBA,EACzBE,SAAUA,KAGTrL,KAAKf,KAAuB,mBAAXF,QAAyBA,OAAyB,mBAATC,MAAuBA,KAAyB,mBAAXF,QAAyBA,aACxHgiB,GAAK,KAAKD,IAAI,SAAS1gB,EAAQzB,EAAOD,IACzC,SAAWM,GA+BX,QAAS+nB,KACP,MAAwB,mBAAbrb,WAAiD,MAArBA,SAASnC,SAAyB,GAClEmC,SAASnC,SAASE,KAG3B,QAASud,KACP,MAAwB,mBAAbtb,WAAiD,MAArBA,SAASnC,SAAyB,IAGpEmC,SAASnC,SAAS0d,SACrBvb,SAASnC,SAAS0d,OAChBvb,SAASnC,SAASsM,SAClB,KACAnK,SAASnC,SAAS2d,UACjBxb,SAASnC,SAASkR,KAAO,IAAM/O,SAASnC,SAASkR,KAAO,KAGtD/O,SAASnC,SAAS0d,QA/C3B,GAAI7hB,GAAQhF,EAAQ,GAYhBuJ,GACF7B,qBAAqB,EACrB+D,OAAO,GAILvE,EACgB,mBAAXvI,QACHA,OACkB,mBAAXC,GAAyBA,EAAyB,mBAATC,MAAuBA,QAGzEkoB,KAAY1hB,MACZ2hB,EAAmB,IAGnBC,EAAiB,yGA6DrB1d,GAASqD,OAAS,WAUhB,QAASC,GAAUqa,GACjBC,IACAC,EAAS1kB,KAAKwkB,GAOhB,QAASG,GAAYH,GACnB,IAAK,GAAIznB,GAAI2nB,EAAStnB,OAAS,EAAGL,GAAK,IAAKA,EACtC2nB,EAAS3nB,KAAOynB,GAClBE,EAASE,OAAO7nB,EAAG,GAQzB,QAAS8nB,KACPC,IACAJ,KAOF,QAASK,GAAe9X,EAAO+X,GAC7B,GAAIlmB,GAAY,IAChB,KAAIkmB,GAAkBne,EAAS7B,oBAA/B,CAGA,IAAK,GAAIjI,KAAK2nB,GACZ,GAAIA,EAAS9Q,eAAe7W,GAC1B,IACE2nB,EAAS3nB,GAAGiG,MAAM,MAAOiK,GAAOoK,OAAOgN,EAAOlnB,KAAKyF,UAAW,KAC9D,MAAOqiB,GACPnmB,EAAYmmB,EAKlB,GAAInmB,EACF,KAAMA,IAiBV,QAASomB,GAAsBhlB,EAAK6N,EAAKoX,EAAQC,EAAOlnB,GACtD,GAAI+O,GAAQ,KAERnO,EAAYwD,EAAMyE,aAAa7I,GAAMA,EAAGwD,MAAQxD,EAEhDkB,EAAUkD,EAAMyE,aAAa7G,GAAOA,EAAId,QAAUc,CAEtD,IAAImlB,EACFxe,EAASqG,kBAAkBoY,oCACzBD,EACAtX,EACAoX,EACA/lB,GAEFmmB,QACK,IAAIzmB,GAAawD,EAAM4E,QAAQpI,GAMpCmO,EAAQpG,EAASqG,kBAAkBpO,GACnCimB,EAAe9X,GAAO,OACjB,CACL,GAOIuY,GAPA/e,GACFsH,IAAKA,EACL2K,KAAMyM,EACNvM,OAAQwM,GAGNnkB,EAAOsK,MAGX,IAAkC,uBAA3BxJ,SAAS5E,KAAKiC,GAAgC,CACnD,GAAIomB,GAASpmB,EAAQ2gB,MAAMwE,EACvBiB,KACFvkB,EAAOukB,EAAO,GACdpmB,EAAUomB,EAAO,IAIrB/e,EAAS6E,KAAOgZ,EAEhBrX,GACEhM,KAAMA,EACN7B,QAASA,EACT2O,IAAKkW,IACLhX,OAAQxG,IAEVse,EAAe9X,GAAO,GAGxB,QAAIwY,GACKA,EAAmBziB,MAAM5G,KAAMwG,WAM1C,QAAS6hB,KACHiB,IAGJD,EAAqBjhB,EAAQ6Y,QAC7B7Y,EAAQ6Y,QAAU6H,EAClBQ,GAA2B,GAG7B,QAASZ,KACFY,IAGLlhB,EAAQ6Y,QAAUoI,EAClBC,GAA2B,EAC3BD,EAAqBla,QAGvB,QAASga,KACP,GAAII,GAAsBN,EACxBO,EAAYC,CACdA,GAAW,KACXR,EAAqB,KACrBvV,EAAgB,KAChBiV,EAAe/hB,MAAM,MAAO2iB,GAAqB,GAAOtO,OAAOuO,IAUjE,QAAS1b,GAAOhM,EAAI4nB,GAClB,GAAIpjB,GAAO2hB,EAAOlnB,KAAKyF,UAAW,EAClC,IAAIyiB,EAAoB,CACtB,GAAIvV,IAAkB5R,EACpB,MAEAqnB,KAIJ,GAAItY,GAAQpG,EAASqG,kBAAkBhP,EAevC,IAdAmnB,EAAqBpY,EACrB6C,EAAgB5R,EAChB2nB,EAAWnjB,EAMXwO,WAAW,WACLpB,IAAkB5R,GACpBqnB,KAEDtY,EAAM8Y,WAAa,IAAO,GAEzBD,KAAY,EACd,KAAM5nB,GA9LV,GA0DIunB,GAAoBC,EA1DpBhB,KACFmB,EAAW,KACX/V,EAAgB,KAChBuV,EAAqB,IAkMvB,OAHAnb,GAAOC,UAAYA,EACnBD,EAAOya,YAAcA,EACrBza,EAAO6B,UAAY8Y,EACZ3a,KAsDTrD,EAASqG,kBAAoB,WA4C3B,QAAS8Y,GAA+B9nB,GACtC,GAAwB,mBAAbA,GAAG+O,OAA0B/O,EAAG+O,MAA3C,CAiBA,IAAK,GALDgZ,GACAC,EACAC,EAZAnQ,EAAS,0IACToQ,EAAQ,wHAGRC,EAAQ,6JAERC,EAAY,gDACZC,EAAa,gCACbC,EAAQtoB,EAAG+O,MAAMvE,MAAM,MACvBuE,KAMKlQ,GAFO,sBAAsBkC,KAAKf,EAAGkB,SAEjC,GAAGmW,EAAIiR,EAAMppB,OAAQL,EAAIwY,IAAKxY,EAAG,CAC5C,GAAKmpB,EAAQlQ,EAAO/W,KAAKunB,EAAMzpB,IAAM,CACnC,GAAI0pB,GAAWP,EAAM,IAAqC,IAA/BA,EAAM,GAAGnR,QAAQ,UACxC2R,EAASR,EAAM,IAAmC,IAA7BA,EAAM,GAAGnR,QAAQ,OACtC2R,KAAWT,EAAWM,EAAWtnB,KAAKinB,EAAM,OAE9CA,EAAM,GAAKD,EAAS,GACpBC,EAAM,GAAKD,EAAS,GACpBC,EAAM,GAAKD,EAAS,IAEtBE,GACEpY,IAAM0Y,EAAsB,KAAXP,EAAM,GACvB5a,KAAM4a,EAAM,IAAM5B,EAClB5hB,KAAM+jB,GAAYP,EAAM,OACxBxN,KAAMwN,EAAM,IAAMA,EAAM,GAAK,KAC7BtN,OAAQsN,EAAM,IAAMA,EAAM,GAAK,UAE5B,IAAKA,EAAQE,EAAMnnB,KAAKunB,EAAMzpB,IACnCopB,GACEpY,IAAKmY,EAAM,GACX5a,KAAM4a,EAAM,IAAM5B,EAClB5hB,QACAgW,MAAOwN,EAAM,GACbtN,OAAQsN,EAAM,IAAMA,EAAM,GAAK,UAE5B,CAAA,KAAKA,EAAQG,EAAMpnB,KAAKunB,EAAMzpB,KAsBnC;AArBA,GAAI2pB,GAASR,EAAM,IAAMA,EAAM,GAAGnR,QAAQ,aACtC2R,KAAWT,EAAWK,EAAUrnB,KAAKinB,EAAM,MAE7CA,EAAM,GAAKD,EAAS,GACpBC,EAAM,GAAKD,EAAS,GACpBC,EAAM,GAAK,MACI,IAANnpB,GAAYmpB,EAAM,IAAiC,mBAApBhoB,GAAGyoB,eAK3C1Z,EAAM,GAAG2L,OAAS1a,EAAGyoB,aAAe,GAEtCR,GACEpY,IAAKmY,EAAM,GACX5a,KAAM4a,EAAM,IAAM5B,EAClB5hB,KAAMwjB,EAAM,GAAKA,EAAM,GAAGxd,MAAM,QAChCgQ,KAAMwN,EAAM,IAAMA,EAAM,GAAK,KAC7BtN,OAAQsN,EAAM,IAAMA,EAAM,GAAK,MAUnC,IAJKC,EAAQ7a,MAAQ6a,EAAQzN,OAC3ByN,EAAQ7a,KAAOgZ,GAGb6B,EAAQpY,KAAoC,UAA7BoY,EAAQpY,IAAIzO,OAAO,EAAG,GAAgB,CAMvD,GAAIqK,GAAM,GAAIkL,eAKd,IAJAlL,EAAI2T,KAAK,MAAO6I,EAAQpY,KAAK,GAC7BpE,EAAI6T,KAAK,MAGU,MAAf7T,EAAI0L,OAAgB,CACtB,GAAIsK,GAAShW,EAAIid,cAAgB,EAIjCjH,GAASA,EAAOhd,WAGhB,IAAIkkB,GAAalH,EAAOI,MAAM,+BAG9B,IAAI8G,EAAY,CACd,GAAIC,GAAmBD,EAAW,EAIC,OAA/BC,EAAiBC,OAAO,KAC1BD,EAAmB5C,IAAsB4C,EAAiBnkB,MAAM,IAKlEwjB,EAAQpY,IAAM+Y,EAAiBnkB,MAAM,QAK3CsK,EAAMjN,KAAKmmB,GAGb,MAAKlZ,GAAM7P,QAKT6D,KAAM/C,EAAG+C,KACT7B,QAASlB,EAAGkB,QACZ2O,IAAKkW,IACLhX,MAAOA,GAPA,MAwBX,QAASqY,GAAoCxN,EAAW/J,EAAKoX,EAAQ/lB,GACnE,GAAI4nB,IACFjZ,IAAKA,EACL2K,KAAMyM,EAGR,IAAI6B,EAAQjZ,KAAOiZ,EAAQtO,KAAM,CAO/B,GANAZ,EAAUiO,YAAa,EAElBiB,EAAQ1b,OACX0b,EAAQ1b,KAAOgZ,GAGbxM,EAAU7K,MAAM7P,OAAS,GACvB0a,EAAU7K,MAAM,GAAGc,MAAQiZ,EAAQjZ,IAAK,CAC1C,GAAI+J,EAAU7K,MAAM,GAAGyL,OAASsO,EAAQtO,KACtC,OAAO,CACF,KACJZ,EAAU7K,MAAM,GAAGyL,MACpBZ,EAAU7K,MAAM,GAAG3B,OAAS0b,EAAQ1b,KAGpC,MADAwM,GAAU7K,MAAM,GAAGyL,KAAOsO,EAAQtO,MAC3B,EAOb,MAFAZ,GAAU7K,MAAMga,QAAQD,GACxBlP,EAAUoP,SAAU,GACb,EAKT,MAHEpP,GAAUiO,YAAa,GAGlB,EAYT,QAASoB,GAAsCjpB,EAAI4kB,GASjD,IACE,GALAoD,GACAkB,EALEC,EAAe,qEACjBpa,KACAqa,KACAC,GAAY,EAMRC,EAAOL,EAAsCM,OACjDD,IAASD,EACTC,EAAOA,EAAKC,OAEZ,GAAID,IAASta,GAAqBsa,IAAS3gB,EAASqD,OAApD,CAkBA,GAbAkd,GACErZ,IAAK,KACLzC,KAAMgZ,EACN5L,KAAM,KACNE,OAAQ,MAGN4O,EAAKvmB,KACPmmB,EAAK9b,KAAOkc,EAAKvmB,MACPilB,EAAQmB,EAAapoB,KAAKuoB,EAAKzlB,eACzCqlB,EAAK9b,KAAO4a,EAAM,IAGK,mBAAdkB,GAAK9b,KACd,IACE8b,EAAK9b,KAAO4a,EAAM9D,MAAMsF,UAAU,EAAGxB,EAAM9D,MAAMrN,QAAQ,MACzD,MAAOzY,IAGPgrB,EAAM,GAAKE,GACbD,GAAY,EAEZD,EAAM,GAAKE,IAAQ,EAGrBva,EAAMjN,KAAKonB,GAGTtE,GAGF7V,EAAM2X,OAAO,EAAG9B,EAGlB,IAAIrU,IACFxN,KAAM/C,EAAG+C,KACT7B,QAASlB,EAAGkB,QACZ2O,IAAKkW,IACLhX,MAAOA,EAQT,OANAqY,GACE7W,EACAvQ,EAAGypB,WAAazpB,EAAG0pB,SACnB1pB,EAAGwa,MAAQxa,EAAG2pB,WACd3pB,EAAGkB,SAAWlB,EAAG4pB,aAEZrZ,EAQT,QAASvB,GAAkBhP,EAAI4kB,GAC7B,GAAI7V,GAAQ,IACZ6V,GAAiB,MAATA,EAAgB,GAAKA,CAE7B,KAEE,GADA7V,EAAQ+Y,EAA+B9nB,GAErC,MAAO+O,GAET,MAAO3Q,GACP,GAAIuK,EAASkC,MACX,KAAMzM,GAIV,IAEE,GADA2Q,EAAQka,EAAsCjpB,EAAI4kB,EAAQ,GAExD,MAAO7V,GAET,MAAO3Q,GACP,GAAIuK,EAASkC,MACX,KAAMzM,GAGV,OACE2E,KAAM/C,EAAG+C,KACT7B,QAASlB,EAAGkB,QACZ2O,IAAKkW,KAOT,MAHA/W,GAAkBoY,oCAAsCA,EACxDpY,EAAkB8Y,+BAAiCA,EAE5C9Y,KAGTrR,EAAOD,QAAUiL,IAEd1J,KAAKf,KAAuB,mBAAXF,QAAyBA,OAAyB,mBAATC,MAAuBA,KAAyB,mBAAXF,QAAyBA,aACxHwD,EAAI,IAAIwe,IAAI,SAAS3gB,EAAQzB,EAAOD,GAevC,QAASmZ,GAAQgT,EAAUC,GACzB,IAAK,GAAIjrB,GAAI,EAAGA,EAAIgrB,EAAS3qB,SAAUL,EACrC,GAAIgrB,EAAShrB,KAAOirB,EAAQ,MAAOjrB,EAErC,UAGF,QAAS0G,GAAU4K,EAAK4Z,EAAUC,EAAQC,GACxC,MAAO3kB,MAAKC,UAAU4K,EAAK+Z,EAAWH,EAAUE,GAAgBD,GAIlE,QAASG,GAAenpB,GACtB,GAAI8U,IAEF/G,MAAO/N,EAAM+N,MACb7N,QAASF,EAAME,QACf6B,KAAM/B,EAAM+B,KAGd,KAAK,GAAIlE,KAAKmC,GACR2C,OAAOC,UAAU8R,eAAezW,KAAK+B,EAAOnC,KAC9CiX,EAAIjX,GAAKmC,EAAMnC,GAInB,OAAOiX,GAGT,QAASoU,GAAWH,EAAUE,GAC5B,GAAIlb,MACAO,IAWJ,OATqB,OAAjB2a,IACFA,EAAgB,SAAS/e,EAAKlK,GAC5B,MAAI+N,GAAM,KAAO/N,EACR,eAEF,eAAiBsO,EAAK7K,MAAM,EAAGoS,EAAQ9H,EAAO/N,IAAQ2gB,KAAK,KAAO,MAItE,SAASzW,EAAKlK,GACnB,GAAI+N,EAAM7P,OAAS,EAAG,CACpB,GAAIkrB,GAAUvT,EAAQ9H,EAAO7Q,OAC5BksB,EAAUrb,EAAM2X,OAAO0D,EAAU,GAAKrb,EAAMjN,KAAK5D,OACjDksB,EAAU9a,EAAKoX,OAAO0D,EAASC,EAAAA,EAAUnf,GAAOoE,EAAKxN,KAAKoJ,IAEtD2L,EAAQ9H,EAAO/N,KAClBA,EAAQipB,EAAchrB,KAAKf,KAAMgN,EAAKlK,QAGxC+N,GAAMjN,KAAKd,EAGb,OAAmB,OAAZ+oB,EACH/oB,YAAiBlC,OAAQqrB,EAAenpB,GAASA,EACjD+oB,EAAS9qB,KAAKf,KAAMgN,EAAKlK,IA5DjCtD,EAAUC,EAAOD,QAAU6H,EAC3B7H,EAAQ4sB,aAAeJ,OA+DjBlK,IAAI,SAAS5gB,EAAQzB,EAAOD,GAwBlC,QAAS6sB,GAAQC,EAAGC,GAClB,GAAIC,IAAW,MAAJF,IAAmB,MAAJC,GACtBE,GAAOH,GAAK,KAAOC,GAAK,KAAOC,GAAO,GAC1C,OAAQC,IAAO,GAAa,MAAND,EAMxB,QAASE,GAActI,EAAKuI,GAC1B,MAAQvI,IAAOuI,EAAQvI,IAAS,GAAKuI,EAMvC,QAASC,GAAOC,EAAGpsB,EAAG8kB,EAAG+G,EAAGhsB,EAAGH,GAC7B,MAAOksB,GAAQK,EAAcL,EAAQA,EAAQ5rB,EAAGosB,GAAIR,EAAQC,EAAGnsB,IAAKG,GAAIilB,GAE1E,QAASuH,GAAMrsB,EAAG8kB,EAAGjB,EAAGyI,EAAGT,EAAGhsB,EAAGH,GAC/B,MAAOysB,GAAQrH,EAAIjB,GAAOiB,EAAIwH,EAAItsB,EAAG8kB,EAAG+G,EAAGhsB,EAAGH,GAEhD,QAAS6sB,GAAMvsB,EAAG8kB,EAAGjB,EAAGyI,EAAGT,EAAGhsB,EAAGH,GAC/B,MAAOysB,GAAQrH,EAAIwH,EAAMzI,GAAKyI,EAAItsB,EAAG8kB,EAAG+G,EAAGhsB,EAAGH,GAEhD,QAAS8sB,GAAMxsB,EAAG8kB,EAAGjB,EAAGyI,EAAGT,EAAGhsB,EAAGH,GAC/B,MAAOysB,GAAOrH,EAAIjB,EAAIyI,EAAGtsB,EAAG8kB,EAAG+G,EAAGhsB,EAAGH,GAEvC,QAAS+sB,GAAMzsB,EAAG8kB,EAAGjB,EAAGyI,EAAGT,EAAGhsB,EAAGH,GAC/B,MAAOysB,GAAOtI,GAAKiB,GAAKwH,GAAItsB,EAAG8kB,EAAG+G,EAAGhsB,EAAGH,GAM1C,QAASgtB,GAAQb,EAAGhJ,GAElBgJ,EAAEhJ,GAAO,IAAM,KAASA,EAAM,GAC9BgJ,GAAKhJ,EAAM,KAAQ,GAAM,GAAK,IAAMA,CAEpC,IAAI3iB,GACAysB,EACAC,EACAC,EACAC,EACA9sB,EAAI,WACJ8kB,aACAjB,cACAyI,EAAI,SAER,KAAKpsB,EAAI,EAAGA,EAAI2rB,EAAEtrB,OAAQL,GAAK,GAC7BysB,EAAO3sB,EACP4sB,EAAO9H,EACP+H,EAAOhJ,EACPiJ,EAAOR,EAEPtsB,EAAIqsB,EAAMrsB,EAAG8kB,EAAGjB,EAAGyI,EAAGT,EAAE3rB,GAAI,cAC5BosB,EAAID,EAAMC,EAAGtsB,EAAG8kB,EAAGjB,EAAGgI,EAAE3rB,EAAI,GAAI,eAChC2jB,EAAIwI,EAAMxI,EAAGyI,EAAGtsB,EAAG8kB,EAAG+G,EAAE3rB,EAAI,GAAI,GAAI,WACpC4kB,EAAIuH,EAAMvH,EAAGjB,EAAGyI,EAAGtsB,EAAG6rB,EAAE3rB,EAAI,GAAI,gBAChCF,EAAIqsB,EAAMrsB,EAAG8kB,EAAGjB,EAAGyI,EAAGT,EAAE3rB,EAAI,GAAI,cAChCosB,EAAID,EAAMC,EAAGtsB,EAAG8kB,EAAGjB,EAAGgI,EAAE3rB,EAAI,GAAI,GAAI,YACpC2jB,EAAIwI,EAAMxI,EAAGyI,EAAGtsB,EAAG8kB,EAAG+G,EAAE3rB,EAAI,GAAI,gBAChC4kB,EAAIuH,EAAMvH,EAAGjB,EAAGyI,EAAGtsB,EAAG6rB,EAAE3rB,EAAI,GAAI,cAChCF,EAAIqsB,EAAMrsB,EAAG8kB,EAAGjB,EAAGyI,EAAGT,EAAE3rB,EAAI,GAAI,EAAG,YACnCosB,EAAID,EAAMC,EAAGtsB,EAAG8kB,EAAGjB,EAAGgI,EAAE3rB,EAAI,GAAI,gBAChC2jB,EAAIwI,EAAMxI,EAAGyI,EAAGtsB,EAAG8kB,EAAG+G,EAAE3rB,EAAI,IAAK,WACjC4kB,EAAIuH,EAAMvH,EAAGjB,EAAGyI,EAAGtsB,EAAG6rB,EAAE3rB,EAAI,IAAK,gBACjCF,EAAIqsB,EAAMrsB,EAAG8kB,EAAGjB,EAAGyI,EAAGT,EAAE3rB,EAAI,IAAK,EAAG,YACpCosB,EAAID,EAAMC,EAAGtsB,EAAG8kB,EAAGjB,EAAGgI,EAAE3rB,EAAI,IAAK,cACjC2jB,EAAIwI,EAAMxI,EAAGyI,EAAGtsB,EAAG8kB,EAAG+G,EAAE3rB,EAAI,IAAK,gBACjC4kB,EAAIuH,EAAMvH,EAAGjB,EAAGyI,EAAGtsB,EAAG6rB,EAAE3rB,EAAI,IAAK,GAAI,YAErCF,EAAIusB,EAAMvsB,EAAG8kB,EAAGjB,EAAGyI,EAAGT,EAAE3rB,EAAI,GAAI,cAChCosB,EAAIC,EAAMD,EAAGtsB,EAAG8kB,EAAGjB,EAAGgI,EAAE3rB,EAAI,GAAI,eAChC2jB,EAAI0I,EAAM1I,EAAGyI,EAAGtsB,EAAG8kB,EAAG+G,EAAE3rB,EAAI,IAAK,GAAI,WACrC4kB,EAAIyH,EAAMzH,EAAGjB,EAAGyI,EAAGtsB,EAAG6rB,EAAE3rB,GAAI,eAC5BF,EAAIusB,EAAMvsB,EAAG8kB,EAAGjB,EAAGyI,EAAGT,EAAE3rB,EAAI,GAAI,cAChCosB,EAAIC,EAAMD,EAAGtsB,EAAG8kB,EAAGjB,EAAGgI,EAAE3rB,EAAI,IAAK,EAAG,UACpC2jB,EAAI0I,EAAM1I,EAAGyI,EAAGtsB,EAAG8kB,EAAG+G,EAAE3rB,EAAI,IAAK,eACjC4kB,EAAIyH,EAAMzH,EAAGjB,EAAGyI,EAAGtsB,EAAG6rB,EAAE3rB,EAAI,GAAI,eAChCF,EAAIusB,EAAMvsB,EAAG8kB,EAAGjB,EAAGyI,EAAGT,EAAE3rB,EAAI,GAAI,EAAG,WACnCosB,EAAIC,EAAMD,EAAGtsB,EAAG8kB,EAAGjB,EAAGgI,EAAE3rB,EAAI,IAAK,eACjC2jB,EAAI0I,EAAM1I,EAAGyI,EAAGtsB,EAAG8kB,EAAG+G,EAAE3rB,EAAI,GAAI,eAChC4kB,EAAIyH,EAAMzH,EAAGjB,EAAGyI,EAAGtsB,EAAG6rB,EAAE3rB,EAAI,GAAI,GAAI,YACpCF,EAAIusB,EAAMvsB,EAAG8kB,EAAGjB,EAAGyI,EAAGT,EAAE3rB,EAAI,IAAK,eACjCosB,EAAIC,EAAMD,EAAGtsB,EAAG8kB,EAAGjB,EAAGgI,EAAE3rB,EAAI,GAAI,aAChC2jB,EAAI0I,EAAM1I,EAAGyI,EAAGtsB,EAAG8kB,EAAG+G,EAAE3rB,EAAI,GAAI,GAAI,YACpC4kB,EAAIyH,EAAMzH,EAAGjB,EAAGyI,EAAGtsB,EAAG6rB,EAAE3rB,EAAI,IAAK,gBAEjCF,EAAIwsB,EAAMxsB,EAAG8kB,EAAGjB,EAAGyI,EAAGT,EAAE3rB,EAAI,GAAI,WAChCosB,EAAIE,EAAMF,EAAGtsB,EAAG8kB,EAAGjB,EAAGgI,EAAE3rB,EAAI,GAAI,gBAChC2jB,EAAI2I,EAAM3I,EAAGyI,EAAGtsB,EAAG8kB,EAAG+G,EAAE3rB,EAAI,IAAK,GAAI,YACrC4kB,EAAI0H,EAAM1H,EAAGjB,EAAGyI,EAAGtsB,EAAG6rB,EAAE3rB,EAAI,IAAK,cACjCF,EAAIwsB,EAAMxsB,EAAG8kB,EAAGjB,EAAGyI,EAAGT,EAAE3rB,EAAI,GAAI,eAChCosB,EAAIE,EAAMF,EAAGtsB,EAAG8kB,EAAGjB,EAAGgI,EAAE3rB,EAAI,GAAI,GAAI,YACpC2jB,EAAI2I,EAAM3I,EAAGyI,EAAGtsB,EAAG8kB,EAAG+G,EAAE3rB,EAAI,GAAI,eAChC4kB,EAAI0H,EAAM1H,EAAGjB,EAAGyI,EAAGtsB,EAAG6rB,EAAE3rB,EAAI,IAAK,gBACjCF,EAAIwsB,EAAMxsB,EAAG8kB,EAAGjB,EAAGyI,EAAGT,EAAE3rB,EAAI,IAAK,EAAG,WACpCosB,EAAIE,EAAMF,EAAGtsB,EAAG8kB,EAAGjB,EAAGgI,EAAE3rB,GAAI,eAC5B2jB,EAAI2I,EAAM3I,EAAGyI,EAAGtsB,EAAG8kB,EAAG+G,EAAE3rB,EAAI,GAAI,eAChC4kB,EAAI0H,EAAM1H,EAAGjB,EAAGyI,EAAGtsB,EAAG6rB,EAAE3rB,EAAI,GAAI,GAAI,UACpCF,EAAIwsB,EAAMxsB,EAAG8kB,EAAGjB,EAAGyI,EAAGT,EAAE3rB,EAAI,GAAI,cAChCosB,EAAIE,EAAMF,EAAGtsB,EAAG8kB,EAAGjB,EAAGgI,EAAE3rB,EAAI,IAAK,eACjC2jB,EAAI2I,EAAM3I,EAAGyI,EAAGtsB,EAAG8kB,EAAG+G,EAAE3rB,EAAI,IAAK,GAAI,WACrC4kB,EAAI0H,EAAM1H,EAAGjB,EAAGyI,EAAGtsB,EAAG6rB,EAAE3rB,EAAI,GAAI,eAEhCF,EAAIysB,EAAMzsB,EAAG8kB,EAAGjB,EAAGyI,EAAGT,EAAE3rB,GAAI,cAC5BosB,EAAIG,EAAMH,EAAGtsB,EAAG8kB,EAAGjB,EAAGgI,EAAE3rB,EAAI,GAAI,GAAI,YACpC2jB,EAAI4I,EAAM5I,EAAGyI,EAAGtsB,EAAG8kB,EAAG+G,EAAE3rB,EAAI,IAAK,gBACjC4kB,EAAI2H,EAAM3H,EAAGjB,EAAGyI,EAAGtsB,EAAG6rB,EAAE3rB,EAAI,GAAI,cAChCF,EAAIysB,EAAMzsB,EAAG8kB,EAAGjB,EAAGyI,EAAGT,EAAE3rB,EAAI,IAAK,EAAG,YACpCosB,EAAIG,EAAMH,EAAGtsB,EAAG8kB,EAAGjB,EAAGgI,EAAE3rB,EAAI,GAAI,gBAChC2jB,EAAI4I,EAAM5I,EAAGyI,EAAGtsB,EAAG8kB,EAAG+G,EAAE3rB,EAAI,IAAK,aACjC4kB,EAAI2H,EAAM3H,EAAGjB,EAAGyI,EAAGtsB,EAAG6rB,EAAE3rB,EAAI,GAAI,gBAChCF,EAAIysB,EAAMzsB,EAAG8kB,EAAGjB,EAAGyI,EAAGT,EAAE3rB,EAAI,GAAI,EAAG,YACnCosB,EAAIG,EAAMH,EAAGtsB,EAAG8kB,EAAGjB,EAAGgI,EAAE3rB,EAAI,IAAK,cACjC2jB,EAAI4I,EAAM5I,EAAGyI,EAAGtsB,EAAG8kB,EAAG+G,EAAE3rB,EAAI,GAAI,gBAChC4kB,EAAI2H,EAAM3H,EAAGjB,EAAGyI,EAAGtsB,EAAG6rB,EAAE3rB,EAAI,IAAK,GAAI,YACrCF,EAAIysB,EAAMzsB,EAAG8kB,EAAGjB,EAAGyI,EAAGT,EAAE3rB,EAAI,GAAI,cAChCosB,EAAIG,EAAMH,EAAGtsB,EAAG8kB,EAAGjB,EAAGgI,EAAE3rB,EAAI,IAAK,gBACjC2jB,EAAI4I,EAAM5I,EAAGyI,EAAGtsB,EAAG8kB,EAAG+G,EAAE3rB,EAAI,GAAI,GAAI,WACpC4kB,EAAI2H,EAAM3H,EAAGjB,EAAGyI,EAAGtsB,EAAG6rB,EAAE3rB,EAAI,GAAI,eAEhCF,EAAI4rB,EAAQ5rB,EAAG2sB,GACf7H,EAAI8G,EAAQ9G,EAAG8H,GACf/I,EAAI+H,EAAQ/H,EAAGgJ,GACfP,EAAIV,EAAQU,EAAGQ,EAEjB,QAAQ9sB,EAAG8kB,EAAGjB,EAAGyI,GAMnB,QAASS,GAAUxH,GACjB,GAAIrlB,GACAulB,EAAS,GACTuH,EAA0B,GAAfzH,EAAMhlB,MACrB,KAAKL,EAAI,EAAGA,EAAI8sB,EAAU9sB,GAAK,EAC7BulB,GAAUC,OAAOuH,aAAc1H,EAAMrlB,GAAK,KAAQA,EAAI,GAAO,IAE/D,OAAOulB,GAOT,QAASyH,GAAU3H,GACjB,GAAIrlB,GACAulB,IAEJ,KADAA,GAAQF,EAAMhlB,QAAU,GAAK,GAAKmO,OAC7BxO,EAAI,EAAGA,EAAIulB,EAAOllB,OAAQL,GAAK,EAClCulB,EAAOvlB,GAAK,CAEd,IAAIitB,GAAyB,EAAf5H,EAAMhlB,MACpB,KAAKL,EAAI,EAAGA,EAAIitB,EAASjtB,GAAK,EAC5BulB,EAAOvlB,GAAK,KAAiC,IAA1BqlB,EAAM6H,WAAWltB,EAAI,KAAeA,EAAI,EAE7D,OAAOulB,GAMT,QAAS4H,GAAQxtB,GACf,MAAOktB,GAAUL,EAAQQ,EAAUrtB,GAAe,EAAXA,EAAEU,SAM3C,QAAS+sB,GAAY/gB,EAAKzK,GACxB,GAAI5B,GAIA2gB,EAHA0M,EAAOL,EAAU3gB,GACjBihB,KACAC,IAMJ,KAJAD,EAAK,IAAMC,EAAK,IAAM/e,OAClB6e,EAAKhtB,OAAS,KAChBgtB,EAAOb,EAAQa,EAAmB,EAAbhhB,EAAIhM,SAEtBL,EAAI,EAAGA,EAAI,GAAIA,GAAK,EACvBstB,EAAKttB,GAAe,UAAVqtB,EAAKrtB,GACfutB,EAAKvtB,GAAe,WAAVqtB,EAAKrtB,EAGjB,OADA2gB,GAAO6L,EAAQc,EAAKhT,OAAO0S,EAAUprB,IAAQ,IAAoB,EAAdA,EAAKvB,QACjDwsB,EAAUL,EAAQe,EAAKjT,OAAOqG,GAAO,MAM9C,QAAS6M,GAASnI,GAChB,GAEIsG,GACA3rB,EAHAytB,EAAS,mBACTlI,EAAS,EAGb,KAAKvlB,EAAI,EAAGA,EAAIqlB,EAAMhlB,OAAQL,GAAK,EACjC2rB,EAAItG,EAAM6H,WAAWltB,GACrBulB,GAAUkI,EAAOzD,OAAQ2B,IAAM,EAAK,IAAQ8B,EAAOzD,OAAW,GAAJ2B,EAE5D,OAAOpG,GAMT,QAASmI,GAAarI,GACpB,MAAOsI,UAASpa,mBAAmB8R,IAMrC,QAASuI,GAAOjuB,GACd,MAAOwtB,GAAQO,EAAa/tB,IAE9B,QAASkuB,GAAOluB,GACd,MAAO6tB,GAASI,EAAOjuB,IAEzB,QAASmuB,GAAWjH,EAAGuF,GACrB,MAAOgB,GAAYM,EAAa7G,GAAI6G,EAAatB,IAEnD,QAAS2B,GAAWlH,EAAGuF,GACrB,MAAOoB,GAASM,EAAWjH,EAAGuF,IAGhC,QAASriB,GAAIikB,EAAQ3hB,EAAK4hB,GACxB,MAAK5hB,GAMA4hB,EAGEH,EAAWzhB,EAAK2hB,GAFdD,EAAW1hB,EAAK2hB,GANlBC,EAGEL,EAAOI,GAFLH,EAAOG,GAUpBlvB,EAAOD,QAAUkL,YAEN,EAAE,EAAE,EAAE,EAAE,IAAI","file":"raven.min.js"} \ No newline at end of file diff --git a/packages/raven-js/dist/angular,console,require/raven.js b/packages/raven-js/dist/angular,console,require/raven.js new file mode 100644 index 000000000000..8cfe6da0a7b8 --- /dev/null +++ b/packages/raven-js/dist/angular,console,require/raven.js @@ -0,0 +1,4139 @@ +/*! Raven.js 3.25.2 (30b6d4e) | github.com/getsentry/raven-js */ + +/* + * Includes TraceKit + * https://github.com/getsentry/TraceKit + * + * Copyright 2018 Matt Robenolt and other contributors + * Released under the BSD license + * https://github.com/getsentry/raven-js/blob/master/LICENSE + * + */ + +(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.Raven = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o captureException(string) => captureMessage(string) + if (initialCall && initialCall.func === 'Raven.captureException') { + initialCall = stack.stack[2]; + } + + var fileurl = (initialCall && initialCall.url) || ''; + + if ( + !!this._globalOptions.ignoreUrls.test && + this._globalOptions.ignoreUrls.test(fileurl) + ) { + return; + } + + if ( + !!this._globalOptions.whitelistUrls.test && + !this._globalOptions.whitelistUrls.test(fileurl) + ) { + return; + } + + if (this._globalOptions.stacktrace || (options && options.stacktrace)) { + // fingerprint on msg, not stack trace (legacy behavior, could be revisited) + data.fingerprint = data.fingerprint == null ? msg : data.fingerprint; + + options = objectMerge( + { + trimHeadFrames: 0 + }, + options + ); + // Since we know this is a synthetic trace, the top frame (this function call) + // MUST be from Raven.js, so mark it for trimming + // We add to the trim counter so that callers can choose to trim extra frames, such + // as utility functions. + options.trimHeadFrames += 1; + + var frames = this._prepareFrames(stack, options); + data.stacktrace = { + // Sentry expects frames oldest to newest + frames: frames.reverse() + }; + } + + // Make sure that fingerprint is always wrapped in an array + if (data.fingerprint) { + data.fingerprint = isArray(data.fingerprint) + ? data.fingerprint + : [data.fingerprint]; + } + + // Fire away! + this._send(data); + + return this; + }, + + captureBreadcrumb: function(obj) { + var crumb = objectMerge( + { + timestamp: now() / 1000 + }, + obj + ); + + if (isFunction(this._globalOptions.breadcrumbCallback)) { + var result = this._globalOptions.breadcrumbCallback(crumb); + + if (isObject(result) && !isEmptyObject(result)) { + crumb = result; + } else if (result === false) { + return this; + } + } + + this._breadcrumbs.push(crumb); + if (this._breadcrumbs.length > this._globalOptions.maxBreadcrumbs) { + this._breadcrumbs.shift(); + } + return this; + }, + + addPlugin: function(plugin /*arg1, arg2, ... argN*/) { + var pluginArgs = [].slice.call(arguments, 1); + + this._plugins.push([plugin, pluginArgs]); + if (this._isRavenInstalled) { + this._drainPlugins(); + } + + return this; + }, + + /* + * Set/clear a user to be sent along with the payload. + * + * @param {object} user An object representing user data [optional] + * @return {Raven} + */ + setUserContext: function(user) { + // Intentionally do not merge here since that's an unexpected behavior. + this._globalContext.user = user; + + return this; + }, + + /* + * Merge extra attributes to be sent along with the payload. + * + * @param {object} extra An object representing extra data [optional] + * @return {Raven} + */ + setExtraContext: function(extra) { + this._mergeContext('extra', extra); + + return this; + }, + + /* + * Merge tags to be sent along with the payload. + * + * @param {object} tags An object representing tags [optional] + * @return {Raven} + */ + setTagsContext: function(tags) { + this._mergeContext('tags', tags); + + return this; + }, + + /* + * Clear all of the context. + * + * @return {Raven} + */ + clearContext: function() { + this._globalContext = {}; + + return this; + }, + + /* + * Get a copy of the current context. This cannot be mutated. + * + * @return {object} copy of context + */ + getContext: function() { + // lol javascript + return JSON.parse(stringify(this._globalContext)); + }, + + /* + * Set environment of application + * + * @param {string} environment Typically something like 'production'. + * @return {Raven} + */ + setEnvironment: function(environment) { + this._globalOptions.environment = environment; + + return this; + }, + + /* + * Set release version of application + * + * @param {string} release Typically something like a git SHA to identify version + * @return {Raven} + */ + setRelease: function(release) { + this._globalOptions.release = release; + + return this; + }, + + /* + * Set the dataCallback option + * + * @param {function} callback The callback to run which allows the + * data blob to be mutated before sending + * @return {Raven} + */ + setDataCallback: function(callback) { + var original = this._globalOptions.dataCallback; + this._globalOptions.dataCallback = keepOriginalCallback(original, callback); + return this; + }, + + /* + * Set the breadcrumbCallback option + * + * @param {function} callback The callback to run which allows filtering + * or mutating breadcrumbs + * @return {Raven} + */ + setBreadcrumbCallback: function(callback) { + var original = this._globalOptions.breadcrumbCallback; + this._globalOptions.breadcrumbCallback = keepOriginalCallback(original, callback); + return this; + }, + + /* + * Set the shouldSendCallback option + * + * @param {function} callback The callback to run which allows + * introspecting the blob before sending + * @return {Raven} + */ + setShouldSendCallback: function(callback) { + var original = this._globalOptions.shouldSendCallback; + this._globalOptions.shouldSendCallback = keepOriginalCallback(original, callback); + return this; + }, + + /** + * Override the default HTTP transport mechanism that transmits data + * to the Sentry server. + * + * @param {function} transport Function invoked instead of the default + * `makeRequest` handler. + * + * @return {Raven} + */ + setTransport: function(transport) { + this._globalOptions.transport = transport; + + return this; + }, + + /* + * Get the latest raw exception that was captured by Raven. + * + * @return {error} + */ + lastException: function() { + return this._lastCapturedException; + }, + + /* + * Get the last event id + * + * @return {string} + */ + lastEventId: function() { + return this._lastEventId; + }, + + /* + * Determine if Raven is setup and ready to go. + * + * @return {boolean} + */ + isSetup: function() { + if (!this._hasJSON) return false; // needs JSON support + if (!this._globalServer) { + if (!this.ravenNotConfiguredError) { + this.ravenNotConfiguredError = true; + this._logDebug('error', 'Error: Raven has not been configured.'); + } + return false; + } + return true; + }, + + afterLoad: function() { + // TODO: remove window dependence? + + // Attempt to initialize Raven on load + var RavenConfig = _window.RavenConfig; + if (RavenConfig) { + this.config(RavenConfig.dsn, RavenConfig.config).install(); + } + }, + + showReportDialog: function(options) { + if ( + !_document // doesn't work without a document (React native) + ) + return; + + options = options || {}; + + var lastEventId = options.eventId || this.lastEventId(); + if (!lastEventId) { + throw new RavenConfigError('Missing eventId'); + } + + var dsn = options.dsn || this._dsn; + if (!dsn) { + throw new RavenConfigError('Missing DSN'); + } + + var encode = encodeURIComponent; + var qs = ''; + qs += '?eventId=' + encode(lastEventId); + qs += '&dsn=' + encode(dsn); + + var user = options.user || this._globalContext.user; + if (user) { + if (user.name) qs += '&name=' + encode(user.name); + if (user.email) qs += '&email=' + encode(user.email); + } + + var globalServer = this._getGlobalServer(this._parseDSN(dsn)); + + var script = _document.createElement('script'); + script.async = true; + script.src = globalServer + '/api/embed/error-page/' + qs; + (_document.head || _document.body).appendChild(script); + }, + + /**** Private functions ****/ + _ignoreNextOnError: function() { + var self = this; + this._ignoreOnError += 1; + setTimeout(function() { + // onerror should trigger before setTimeout + self._ignoreOnError -= 1; + }); + }, + + _triggerEvent: function(eventType, options) { + // NOTE: `event` is a native browser thing, so let's avoid conflicting wiht it + var evt, key; + + if (!this._hasDocument) return; + + options = options || {}; + + eventType = 'raven' + eventType.substr(0, 1).toUpperCase() + eventType.substr(1); + + if (_document.createEvent) { + evt = _document.createEvent('HTMLEvents'); + evt.initEvent(eventType, true, true); + } else { + evt = _document.createEventObject(); + evt.eventType = eventType; + } + + for (key in options) + if (hasKey(options, key)) { + evt[key] = options[key]; + } + + if (_document.createEvent) { + // IE9 if standards + _document.dispatchEvent(evt); + } else { + // IE8 regardless of Quirks or Standards + // IE9 if quirks + try { + _document.fireEvent('on' + evt.eventType.toLowerCase(), evt); + } catch (e) { + // Do nothing + } + } + }, + + /** + * Wraps addEventListener to capture UI breadcrumbs + * @param evtName the event name (e.g. "click") + * @returns {Function} + * @private + */ + _breadcrumbEventHandler: function(evtName) { + var self = this; + return function(evt) { + // reset keypress timeout; e.g. triggering a 'click' after + // a 'keypress' will reset the keypress debounce so that a new + // set of keypresses can be recorded + self._keypressTimeout = null; + + // It's possible this handler might trigger multiple times for the same + // event (e.g. event propagation through node ancestors). Ignore if we've + // already captured the event. + if (self._lastCapturedEvent === evt) return; + + self._lastCapturedEvent = evt; + + // try/catch both: + // - accessing evt.target (see getsentry/raven-js#838, #768) + // - `htmlTreeAsString` because it's complex, and just accessing the DOM incorrectly + // can throw an exception in some circumstances. + var target; + try { + target = htmlTreeAsString(evt.target); + } catch (e) { + target = ''; + } + + self.captureBreadcrumb({ + category: 'ui.' + evtName, // e.g. ui.click, ui.input + message: target + }); + }; + }, + + /** + * Wraps addEventListener to capture keypress UI events + * @returns {Function} + * @private + */ + _keypressEventHandler: function() { + var self = this, + debounceDuration = 1000; // milliseconds + + // TODO: if somehow user switches keypress target before + // debounce timeout is triggered, we will only capture + // a single breadcrumb from the FIRST target (acceptable?) + return function(evt) { + var target; + try { + target = evt.target; + } catch (e) { + // just accessing event properties can throw an exception in some rare circumstances + // see: https://github.com/getsentry/raven-js/issues/838 + return; + } + var tagName = target && target.tagName; + + // only consider keypress events on actual input elements + // this will disregard keypresses targeting body (e.g. tabbing + // through elements, hotkeys, etc) + if ( + !tagName || + (tagName !== 'INPUT' && tagName !== 'TEXTAREA' && !target.isContentEditable) + ) + return; + + // record first keypress in a series, but ignore subsequent + // keypresses until debounce clears + var timeout = self._keypressTimeout; + if (!timeout) { + self._breadcrumbEventHandler('input')(evt); + } + clearTimeout(timeout); + self._keypressTimeout = setTimeout(function() { + self._keypressTimeout = null; + }, debounceDuration); + }; + }, + + /** + * Captures a breadcrumb of type "navigation", normalizing input URLs + * @param to the originating URL + * @param from the target URL + * @private + */ + _captureUrlChange: function(from, to) { + var parsedLoc = parseUrl(this._location.href); + var parsedTo = parseUrl(to); + var parsedFrom = parseUrl(from); + + // because onpopstate only tells you the "new" (to) value of location.href, and + // not the previous (from) value, we need to track the value of the current URL + // state ourselves + this._lastHref = to; + + // Use only the path component of the URL if the URL matches the current + // document (almost all the time when using pushState) + if (parsedLoc.protocol === parsedTo.protocol && parsedLoc.host === parsedTo.host) + to = parsedTo.relative; + if (parsedLoc.protocol === parsedFrom.protocol && parsedLoc.host === parsedFrom.host) + from = parsedFrom.relative; + + this.captureBreadcrumb({ + category: 'navigation', + data: { + to: to, + from: from + } + }); + }, + + _patchFunctionToString: function() { + var self = this; + self._originalFunctionToString = Function.prototype.toString; + // eslint-disable-next-line no-extend-native + Function.prototype.toString = function() { + if (typeof this === 'function' && this.__raven__) { + return self._originalFunctionToString.apply(this.__orig__, arguments); + } + return self._originalFunctionToString.apply(this, arguments); + }; + }, + + _unpatchFunctionToString: function() { + if (this._originalFunctionToString) { + // eslint-disable-next-line no-extend-native + Function.prototype.toString = this._originalFunctionToString; + } + }, + + /** + * Wrap timer functions and event targets to catch errors and provide + * better metadata. + */ + _instrumentTryCatch: function() { + var self = this; + + var wrappedBuiltIns = self._wrappedBuiltIns; + + function wrapTimeFn(orig) { + return function(fn, t) { + // preserve arity + // Make a copy of the arguments to prevent deoptimization + // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments + var args = new Array(arguments.length); + for (var i = 0; i < args.length; ++i) { + args[i] = arguments[i]; + } + var originalCallback = args[0]; + if (isFunction(originalCallback)) { + args[0] = self.wrap(originalCallback); + } + + // IE < 9 doesn't support .call/.apply on setInterval/setTimeout, but it + // also supports only two arguments and doesn't care what this is, so we + // can just call the original function directly. + if (orig.apply) { + return orig.apply(this, args); + } else { + return orig(args[0], args[1]); + } + }; + } + + var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; + + function wrapEventTarget(global) { + var proto = _window[global] && _window[global].prototype; + if (proto && proto.hasOwnProperty && proto.hasOwnProperty('addEventListener')) { + fill( + proto, + 'addEventListener', + function(orig) { + return function(evtName, fn, capture, secure) { + // preserve arity + try { + if (fn && fn.handleEvent) { + fn.handleEvent = self.wrap(fn.handleEvent); + } + } catch (err) { + // can sometimes get 'Permission denied to access property "handle Event' + } + + // More breadcrumb DOM capture ... done here and not in `_instrumentBreadcrumbs` + // so that we don't have more than one wrapper function + var before, clickHandler, keypressHandler; + + if ( + autoBreadcrumbs && + autoBreadcrumbs.dom && + (global === 'EventTarget' || global === 'Node') + ) { + // NOTE: generating multiple handlers per addEventListener invocation, should + // revisit and verify we can just use one (almost certainly) + clickHandler = self._breadcrumbEventHandler('click'); + keypressHandler = self._keypressEventHandler(); + before = function(evt) { + // need to intercept every DOM event in `before` argument, in case that + // same wrapped method is re-used for different events (e.g. mousemove THEN click) + // see #724 + if (!evt) return; + + var eventType; + try { + eventType = evt.type; + } catch (e) { + // just accessing event properties can throw an exception in some rare circumstances + // see: https://github.com/getsentry/raven-js/issues/838 + return; + } + if (eventType === 'click') return clickHandler(evt); + else if (eventType === 'keypress') return keypressHandler(evt); + }; + } + return orig.call( + this, + evtName, + self.wrap(fn, undefined, before), + capture, + secure + ); + }; + }, + wrappedBuiltIns + ); + fill( + proto, + 'removeEventListener', + function(orig) { + return function(evt, fn, capture, secure) { + try { + fn = fn && (fn.__raven_wrapper__ ? fn.__raven_wrapper__ : fn); + } catch (e) { + // ignore, accessing __raven_wrapper__ will throw in some Selenium environments + } + return orig.call(this, evt, fn, capture, secure); + }; + }, + wrappedBuiltIns + ); + } + } + + fill(_window, 'setTimeout', wrapTimeFn, wrappedBuiltIns); + fill(_window, 'setInterval', wrapTimeFn, wrappedBuiltIns); + if (_window.requestAnimationFrame) { + fill( + _window, + 'requestAnimationFrame', + function(orig) { + return function(cb) { + return orig(self.wrap(cb)); + }; + }, + wrappedBuiltIns + ); + } + + // event targets borrowed from bugsnag-js: + // https://github.com/bugsnag/bugsnag-js/blob/master/src/bugsnag.js#L666 + var eventTargets = [ + 'EventTarget', + 'Window', + 'Node', + 'ApplicationCache', + 'AudioTrackList', + 'ChannelMergerNode', + 'CryptoOperation', + 'EventSource', + 'FileReader', + 'HTMLUnknownElement', + 'IDBDatabase', + 'IDBRequest', + 'IDBTransaction', + 'KeyOperation', + 'MediaController', + 'MessagePort', + 'ModalWindow', + 'Notification', + 'SVGElementInstance', + 'Screen', + 'TextTrack', + 'TextTrackCue', + 'TextTrackList', + 'WebSocket', + 'WebSocketWorker', + 'Worker', + 'XMLHttpRequest', + 'XMLHttpRequestEventTarget', + 'XMLHttpRequestUpload' + ]; + for (var i = 0; i < eventTargets.length; i++) { + wrapEventTarget(eventTargets[i]); + } + }, + + /** + * Instrument browser built-ins w/ breadcrumb capturing + * - XMLHttpRequests + * - DOM interactions (click/typing) + * - window.location changes + * - console + * + * Can be disabled or individually configured via the `autoBreadcrumbs` config option + */ + _instrumentBreadcrumbs: function() { + var self = this; + var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; + + var wrappedBuiltIns = self._wrappedBuiltIns; + + function wrapProp(prop, xhr) { + if (prop in xhr && isFunction(xhr[prop])) { + fill(xhr, prop, function(orig) { + return self.wrap(orig); + }); // intentionally don't track filled methods on XHR instances + } + } + + if (autoBreadcrumbs.xhr && 'XMLHttpRequest' in _window) { + var xhrproto = _window.XMLHttpRequest && _window.XMLHttpRequest.prototype; + fill( + xhrproto, + 'open', + function(origOpen) { + return function(method, url) { + // preserve arity + + // if Sentry key appears in URL, don't capture + if (isString(url) && url.indexOf(self._globalKey) === -1) { + this.__raven_xhr = { + method: method, + url: url, + status_code: null + }; + } + + return origOpen.apply(this, arguments); + }; + }, + wrappedBuiltIns + ); + + fill( + xhrproto, + 'send', + function(origSend) { + return function() { + // preserve arity + var xhr = this; + + function onreadystatechangeHandler() { + if (xhr.__raven_xhr && xhr.readyState === 4) { + try { + // touching statusCode in some platforms throws + // an exception + xhr.__raven_xhr.status_code = xhr.status; + } catch (e) { + /* do nothing */ + } + + self.captureBreadcrumb({ + type: 'http', + category: 'xhr', + data: xhr.__raven_xhr + }); + } + } + + var props = ['onload', 'onerror', 'onprogress']; + for (var j = 0; j < props.length; j++) { + wrapProp(props[j], xhr); + } + + if ('onreadystatechange' in xhr && isFunction(xhr.onreadystatechange)) { + fill( + xhr, + 'onreadystatechange', + function(orig) { + return self.wrap(orig, undefined, onreadystatechangeHandler); + } /* intentionally don't track this instrumentation */ + ); + } else { + // if onreadystatechange wasn't actually set by the page on this xhr, we + // are free to set our own and capture the breadcrumb + xhr.onreadystatechange = onreadystatechangeHandler; + } + + return origSend.apply(this, arguments); + }; + }, + wrappedBuiltIns + ); + } + + if (autoBreadcrumbs.xhr && supportsFetch()) { + fill( + _window, + 'fetch', + function(origFetch) { + return function() { + // preserve arity + // Make a copy of the arguments to prevent deoptimization + // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments + var args = new Array(arguments.length); + for (var i = 0; i < args.length; ++i) { + args[i] = arguments[i]; + } + + var fetchInput = args[0]; + var method = 'GET'; + var url; + + if (typeof fetchInput === 'string') { + url = fetchInput; + } else if ('Request' in _window && fetchInput instanceof _window.Request) { + url = fetchInput.url; + if (fetchInput.method) { + method = fetchInput.method; + } + } else { + url = '' + fetchInput; + } + + // if Sentry key appears in URL, don't capture, as it's our own request + if (url.indexOf(self._globalKey) !== -1) { + return origFetch.apply(this, args); + } + + if (args[1] && args[1].method) { + method = args[1].method; + } + + var fetchData = { + method: method, + url: url, + status_code: null + }; + + return origFetch + .apply(this, args) + .then(function(response) { + fetchData.status_code = response.status; + + self.captureBreadcrumb({ + type: 'http', + category: 'fetch', + data: fetchData + }); + + return response; + }) + ['catch'](function(err) { + // if there is an error performing the request + self.captureBreadcrumb({ + type: 'http', + category: 'fetch', + data: fetchData, + level: 'error' + }); + + throw err; + }); + }; + }, + wrappedBuiltIns + ); + } + + // Capture breadcrumbs from any click that is unhandled / bubbled up all the way + // to the document. Do this before we instrument addEventListener. + if (autoBreadcrumbs.dom && this._hasDocument) { + if (_document.addEventListener) { + _document.addEventListener('click', self._breadcrumbEventHandler('click'), false); + _document.addEventListener('keypress', self._keypressEventHandler(), false); + } else if (_document.attachEvent) { + // IE8 Compatibility + _document.attachEvent('onclick', self._breadcrumbEventHandler('click')); + _document.attachEvent('onkeypress', self._keypressEventHandler()); + } + } + + // record navigation (URL) changes + // NOTE: in Chrome App environment, touching history.pushState, *even inside + // a try/catch block*, will cause Chrome to output an error to console.error + // borrowed from: https://github.com/angular/angular.js/pull/13945/files + var chrome = _window.chrome; + var isChromePackagedApp = chrome && chrome.app && chrome.app.runtime; + var hasPushAndReplaceState = + !isChromePackagedApp && + _window.history && + _window.history.pushState && + _window.history.replaceState; + if (autoBreadcrumbs.location && hasPushAndReplaceState) { + // TODO: remove onpopstate handler on uninstall() + var oldOnPopState = _window.onpopstate; + _window.onpopstate = function() { + var currentHref = self._location.href; + self._captureUrlChange(self._lastHref, currentHref); + + if (oldOnPopState) { + return oldOnPopState.apply(this, arguments); + } + }; + + var historyReplacementFunction = function(origHistFunction) { + // note history.pushState.length is 0; intentionally not declaring + // params to preserve 0 arity + return function(/* state, title, url */) { + var url = arguments.length > 2 ? arguments[2] : undefined; + + // url argument is optional + if (url) { + // coerce to string (this is what pushState does) + self._captureUrlChange(self._lastHref, url + ''); + } + + return origHistFunction.apply(this, arguments); + }; + }; + + fill(_window.history, 'pushState', historyReplacementFunction, wrappedBuiltIns); + fill(_window.history, 'replaceState', historyReplacementFunction, wrappedBuiltIns); + } + + if (autoBreadcrumbs.console && 'console' in _window && console.log) { + // console + var consoleMethodCallback = function(msg, data) { + self.captureBreadcrumb({ + message: msg, + level: data.level, + category: 'console' + }); + }; + + each(['debug', 'info', 'warn', 'error', 'log'], function(_, level) { + wrapConsoleMethod(console, level, consoleMethodCallback); + }); + } + }, + + _restoreBuiltIns: function() { + // restore any wrapped builtins + var builtin; + while (this._wrappedBuiltIns.length) { + builtin = this._wrappedBuiltIns.shift(); + + var obj = builtin[0], + name = builtin[1], + orig = builtin[2]; + + obj[name] = orig; + } + }, + + _restoreConsole: function() { + // eslint-disable-next-line guard-for-in + for (var method in this._originalConsoleMethods) { + this._originalConsole[method] = this._originalConsoleMethods[method]; + } + }, + + _drainPlugins: function() { + var self = this; + + // FIX ME TODO + each(this._plugins, function(_, plugin) { + var installer = plugin[0]; + var args = plugin[1]; + installer.apply(self, [self].concat(args)); + }); + }, + + _parseDSN: function(str) { + var m = dsnPattern.exec(str), + dsn = {}, + i = 7; + + try { + while (i--) dsn[dsnKeys[i]] = m[i] || ''; + } catch (e) { + throw new RavenConfigError('Invalid DSN: ' + str); + } + + if (dsn.pass && !this._globalOptions.allowSecretKey) { + throw new RavenConfigError( + 'Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key' + ); + } + + return dsn; + }, + + _getGlobalServer: function(uri) { + // assemble the endpoint from the uri pieces + var globalServer = '//' + uri.host + (uri.port ? ':' + uri.port : ''); + + if (uri.protocol) { + globalServer = uri.protocol + ':' + globalServer; + } + return globalServer; + }, + + _handleOnErrorStackInfo: function() { + // if we are intentionally ignoring errors via onerror, bail out + if (!this._ignoreOnError) { + this._handleStackInfo.apply(this, arguments); + } + }, + + _handleStackInfo: function(stackInfo, options) { + var frames = this._prepareFrames(stackInfo, options); + + this._triggerEvent('handle', { + stackInfo: stackInfo, + options: options + }); + + this._processException( + stackInfo.name, + stackInfo.message, + stackInfo.url, + stackInfo.lineno, + frames, + options + ); + }, + + _prepareFrames: function(stackInfo, options) { + var self = this; + var frames = []; + if (stackInfo.stack && stackInfo.stack.length) { + each(stackInfo.stack, function(i, stack) { + var frame = self._normalizeFrame(stack, stackInfo.url); + if (frame) { + frames.push(frame); + } + }); + + // e.g. frames captured via captureMessage throw + if (options && options.trimHeadFrames) { + for (var j = 0; j < options.trimHeadFrames && j < frames.length; j++) { + frames[j].in_app = false; + } + } + } + frames = frames.slice(0, this._globalOptions.stackTraceLimit); + return frames; + }, + + _normalizeFrame: function(frame, stackInfoUrl) { + // normalize the frames data + var normalized = { + filename: frame.url, + lineno: frame.line, + colno: frame.column, + function: frame.func || '?' + }; + + // Case when we don't have any information about the error + // E.g. throwing a string or raw object, instead of an `Error` in Firefox + // Generating synthetic error doesn't add any value here + // + // We should probably somehow let a user know that they should fix their code + if (!frame.url) { + normalized.filename = stackInfoUrl; // fallback to whole stacks url from onerror handler + } + + normalized.in_app = !// determine if an exception came from outside of our app + // first we check the global includePaths list. + ( + (!!this._globalOptions.includePaths.test && + !this._globalOptions.includePaths.test(normalized.filename)) || + // Now we check for fun, if the function name is Raven or TraceKit + /(Raven|TraceKit)\./.test(normalized['function']) || + // finally, we do a last ditch effort and check for raven.min.js + /raven\.(min\.)?js$/.test(normalized.filename) + ); + + return normalized; + }, + + _processException: function(type, message, fileurl, lineno, frames, options) { + var prefixedMessage = (type ? type + ': ' : '') + (message || ''); + if ( + !!this._globalOptions.ignoreErrors.test && + (this._globalOptions.ignoreErrors.test(message) || + this._globalOptions.ignoreErrors.test(prefixedMessage)) + ) { + return; + } + + var stacktrace; + + if (frames && frames.length) { + fileurl = frames[0].filename || fileurl; + // Sentry expects frames oldest to newest + // and JS sends them as newest to oldest + frames.reverse(); + stacktrace = {frames: frames}; + } else if (fileurl) { + stacktrace = { + frames: [ + { + filename: fileurl, + lineno: lineno, + in_app: true + } + ] + }; + } + + if ( + !!this._globalOptions.ignoreUrls.test && + this._globalOptions.ignoreUrls.test(fileurl) + ) { + return; + } + + if ( + !!this._globalOptions.whitelistUrls.test && + !this._globalOptions.whitelistUrls.test(fileurl) + ) { + return; + } + + var data = objectMerge( + { + // sentry.interfaces.Exception + exception: { + values: [ + { + type: type, + value: message, + stacktrace: stacktrace + } + ] + }, + transaction: fileurl + }, + options + ); + + // Fire away! + this._send(data); + }, + + _trimPacket: function(data) { + // For now, we only want to truncate the two different messages + // but this could/should be expanded to just trim everything + var max = this._globalOptions.maxMessageLength; + if (data.message) { + data.message = truncate(data.message, max); + } + if (data.exception) { + var exception = data.exception.values[0]; + exception.value = truncate(exception.value, max); + } + + var request = data.request; + if (request) { + if (request.url) { + request.url = truncate(request.url, this._globalOptions.maxUrlLength); + } + if (request.Referer) { + request.Referer = truncate(request.Referer, this._globalOptions.maxUrlLength); + } + } + + if (data.breadcrumbs && data.breadcrumbs.values) + this._trimBreadcrumbs(data.breadcrumbs); + + return data; + }, + + /** + * Truncate breadcrumb values (right now just URLs) + */ + _trimBreadcrumbs: function(breadcrumbs) { + // known breadcrumb properties with urls + // TODO: also consider arbitrary prop values that start with (https?)?:// + var urlProps = ['to', 'from', 'url'], + urlProp, + crumb, + data; + + for (var i = 0; i < breadcrumbs.values.length; ++i) { + crumb = breadcrumbs.values[i]; + if ( + !crumb.hasOwnProperty('data') || + !isObject(crumb.data) || + objectFrozen(crumb.data) + ) + continue; + + data = objectMerge({}, crumb.data); + for (var j = 0; j < urlProps.length; ++j) { + urlProp = urlProps[j]; + if (data.hasOwnProperty(urlProp) && data[urlProp]) { + data[urlProp] = truncate(data[urlProp], this._globalOptions.maxUrlLength); + } + } + breadcrumbs.values[i].data = data; + } + }, + + _getHttpData: function() { + if (!this._hasNavigator && !this._hasDocument) return; + var httpData = {}; + + if (this._hasNavigator && _navigator.userAgent) { + httpData.headers = { + 'User-Agent': _navigator.userAgent + }; + } + + // Check in `window` instead of `document`, as we may be in ServiceWorker environment + if (_window.location && _window.location.href) { + httpData.url = _window.location.href; + } + + if (this._hasDocument && _document.referrer) { + if (!httpData.headers) httpData.headers = {}; + httpData.headers.Referer = _document.referrer; + } + + return httpData; + }, + + _resetBackoff: function() { + this._backoffDuration = 0; + this._backoffStart = null; + }, + + _shouldBackoff: function() { + return this._backoffDuration && now() - this._backoffStart < this._backoffDuration; + }, + + /** + * Returns true if the in-process data payload matches the signature + * of the previously-sent data + * + * NOTE: This has to be done at this level because TraceKit can generate + * data from window.onerror WITHOUT an exception object (IE8, IE9, + * other old browsers). This can take the form of an "exception" + * data object with a single frame (derived from the onerror args). + */ + _isRepeatData: function(current) { + var last = this._lastData; + + if ( + !last || + current.message !== last.message || // defined for captureMessage + current.transaction !== last.transaction // defined for captureException/onerror + ) + return false; + + // Stacktrace interface (i.e. from captureMessage) + if (current.stacktrace || last.stacktrace) { + return isSameStacktrace(current.stacktrace, last.stacktrace); + } else if (current.exception || last.exception) { + // Exception interface (i.e. from captureException/onerror) + return isSameException(current.exception, last.exception); + } + + return true; + }, + + _setBackoffState: function(request) { + // If we are already in a backoff state, don't change anything + if (this._shouldBackoff()) { + return; + } + + var status = request.status; + + // 400 - project_id doesn't exist or some other fatal + // 401 - invalid/revoked dsn + // 429 - too many requests + if (!(status === 400 || status === 401 || status === 429)) return; + + var retry; + try { + // If Retry-After is not in Access-Control-Expose-Headers, most + // browsers will throw an exception trying to access it + if (supportsFetch()) { + retry = request.headers.get('Retry-After'); + } else { + retry = request.getResponseHeader('Retry-After'); + } + + // Retry-After is returned in seconds + retry = parseInt(retry, 10) * 1000; + } catch (e) { + /* eslint no-empty:0 */ + } + + this._backoffDuration = retry + ? // If Sentry server returned a Retry-After value, use it + retry + : // Otherwise, double the last backoff duration (starts at 1 sec) + this._backoffDuration * 2 || 1000; + + this._backoffStart = now(); + }, + + _send: function(data) { + var globalOptions = this._globalOptions; + + var baseData = { + project: this._globalProject, + logger: globalOptions.logger, + platform: 'javascript' + }, + httpData = this._getHttpData(); + + if (httpData) { + baseData.request = httpData; + } + + // HACK: delete `trimHeadFrames` to prevent from appearing in outbound payload + if (data.trimHeadFrames) delete data.trimHeadFrames; + + data = objectMerge(baseData, data); + + // Merge in the tags and extra separately since objectMerge doesn't handle a deep merge + data.tags = objectMerge(objectMerge({}, this._globalContext.tags), data.tags); + data.extra = objectMerge(objectMerge({}, this._globalContext.extra), data.extra); + + // Send along our own collected metadata with extra + data.extra['session:duration'] = now() - this._startTime; + + if (this._breadcrumbs && this._breadcrumbs.length > 0) { + // intentionally make shallow copy so that additions + // to breadcrumbs aren't accidentally sent in this request + data.breadcrumbs = { + values: [].slice.call(this._breadcrumbs, 0) + }; + } + + if (this._globalContext.user) { + // sentry.interfaces.User + data.user = this._globalContext.user; + } + + // Include the environment if it's defined in globalOptions + if (globalOptions.environment) data.environment = globalOptions.environment; + + // Include the release if it's defined in globalOptions + if (globalOptions.release) data.release = globalOptions.release; + + // Include server_name if it's defined in globalOptions + if (globalOptions.serverName) data.server_name = globalOptions.serverName; + + data = this._sanitizeData(data); + + // Cleanup empty properties before sending them to the server + Object.keys(data).forEach(function(key) { + if (data[key] == null || data[key] === '' || isEmptyObject(data[key])) { + delete data[key]; + } + }); + + if (isFunction(globalOptions.dataCallback)) { + data = globalOptions.dataCallback(data) || data; + } + + // Why?????????? + if (!data || isEmptyObject(data)) { + return; + } + + // Check if the request should be filtered or not + if ( + isFunction(globalOptions.shouldSendCallback) && + !globalOptions.shouldSendCallback(data) + ) { + return; + } + + // Backoff state: Sentry server previously responded w/ an error (e.g. 429 - too many requests), + // so drop requests until "cool-off" period has elapsed. + if (this._shouldBackoff()) { + this._logDebug('warn', 'Raven dropped error due to backoff: ', data); + return; + } + + if (typeof globalOptions.sampleRate === 'number') { + if (Math.random() < globalOptions.sampleRate) { + this._sendProcessedPayload(data); + } + } else { + this._sendProcessedPayload(data); + } + }, + + _sanitizeData: function(data) { + return sanitize(data, this._globalOptions.sanitizeKeys); + }, + + _getUuid: function() { + return uuid4(); + }, + + _sendProcessedPayload: function(data, callback) { + var self = this; + var globalOptions = this._globalOptions; + + if (!this.isSetup()) return; + + // Try and clean up the packet before sending by truncating long values + data = this._trimPacket(data); + + // ideally duplicate error testing should occur *before* dataCallback/shouldSendCallback, + // but this would require copying an un-truncated copy of the data packet, which can be + // arbitrarily deep (extra_data) -- could be worthwhile? will revisit + if (!this._globalOptions.allowDuplicates && this._isRepeatData(data)) { + this._logDebug('warn', 'Raven dropped repeat event: ', data); + return; + } + + // Send along an event_id if not explicitly passed. + // This event_id can be used to reference the error within Sentry itself. + // Set lastEventId after we know the error should actually be sent + this._lastEventId = data.event_id || (data.event_id = this._getUuid()); + + // Store outbound payload after trim + this._lastData = data; + + this._logDebug('debug', 'Raven about to send:', data); + + var auth = { + sentry_version: '7', + sentry_client: 'raven-js/' + this.VERSION, + sentry_key: this._globalKey + }; + + if (this._globalSecret) { + auth.sentry_secret = this._globalSecret; + } + + var exception = data.exception && data.exception.values[0]; + + // only capture 'sentry' breadcrumb is autoBreadcrumbs is truthy + if ( + this._globalOptions.autoBreadcrumbs && + this._globalOptions.autoBreadcrumbs.sentry + ) { + this.captureBreadcrumb({ + category: 'sentry', + message: exception + ? (exception.type ? exception.type + ': ' : '') + exception.value + : data.message, + event_id: data.event_id, + level: data.level || 'error' // presume error unless specified + }); + } + + var url = this._globalEndpoint; + (globalOptions.transport || this._makeRequest).call(this, { + url: url, + auth: auth, + data: data, + options: globalOptions, + onSuccess: function success() { + self._resetBackoff(); + + self._triggerEvent('success', { + data: data, + src: url + }); + callback && callback(); + }, + onError: function failure(error) { + self._logDebug('error', 'Raven transport failed to send: ', error); + + if (error.request) { + self._setBackoffState(error.request); + } + + self._triggerEvent('failure', { + data: data, + src: url + }); + error = error || new Error('Raven send failed (no additional details provided)'); + callback && callback(error); + } + }); + }, + + _makeRequest: function(opts) { + // Auth is intentionally sent as part of query string (NOT as custom HTTP header) to avoid preflight CORS requests + var url = opts.url + '?' + urlencode(opts.auth); + + var evaluatedHeaders = null; + var evaluatedFetchParameters = {}; + + if (opts.options.headers) { + evaluatedHeaders = this._evaluateHash(opts.options.headers); + } + + if (opts.options.fetchParameters) { + evaluatedFetchParameters = this._evaluateHash(opts.options.fetchParameters); + } + + if (supportsFetch()) { + evaluatedFetchParameters.body = stringify(opts.data); + + var defaultFetchOptions = objectMerge({}, this._fetchDefaults); + var fetchOptions = objectMerge(defaultFetchOptions, evaluatedFetchParameters); + + if (evaluatedHeaders) { + fetchOptions.headers = evaluatedHeaders; + } + + return _window + .fetch(url, fetchOptions) + .then(function(response) { + if (response.ok) { + opts.onSuccess && opts.onSuccess(); + } else { + var error = new Error('Sentry error code: ' + response.status); + // It's called request only to keep compatibility with XHR interface + // and not add more redundant checks in setBackoffState method + error.request = response; + opts.onError && opts.onError(error); + } + }) + ['catch'](function() { + opts.onError && + opts.onError(new Error('Sentry error code: network unavailable')); + }); + } + + var request = _window.XMLHttpRequest && new _window.XMLHttpRequest(); + if (!request) return; + + // if browser doesn't support CORS (e.g. IE7), we are out of luck + var hasCORS = 'withCredentials' in request || typeof XDomainRequest !== 'undefined'; + + if (!hasCORS) return; + + if ('withCredentials' in request) { + request.onreadystatechange = function() { + if (request.readyState !== 4) { + return; + } else if (request.status === 200) { + opts.onSuccess && opts.onSuccess(); + } else if (opts.onError) { + var err = new Error('Sentry error code: ' + request.status); + err.request = request; + opts.onError(err); + } + }; + } else { + request = new XDomainRequest(); + // xdomainrequest cannot go http -> https (or vice versa), + // so always use protocol relative + url = url.replace(/^https?:/, ''); + + // onreadystatechange not supported by XDomainRequest + if (opts.onSuccess) { + request.onload = opts.onSuccess; + } + if (opts.onError) { + request.onerror = function() { + var err = new Error('Sentry error code: XDomainRequest'); + err.request = request; + opts.onError(err); + }; + } + } + + request.open('POST', url); + + if (evaluatedHeaders) { + each(evaluatedHeaders, function(key, value) { + request.setRequestHeader(key, value); + }); + } + + request.send(stringify(opts.data)); + }, + + _evaluateHash: function(hash) { + var evaluated = {}; + + for (var key in hash) { + if (hash.hasOwnProperty(key)) { + var value = hash[key]; + evaluated[key] = typeof value === 'function' ? value() : value; + } + } + + return evaluated; + }, + + _logDebug: function(level) { + // We allow `Raven.debug` and `Raven.config(DSN, { debug: true })` to not make backward incompatible API change + if ( + this._originalConsoleMethods[level] && + (this.debug || this._globalOptions.debug) + ) { + // In IE<10 console methods do not have their own 'apply' method + Function.prototype.apply.call( + this._originalConsoleMethods[level], + this._originalConsole, + [].slice.call(arguments, 1) + ); + } + }, + + _mergeContext: function(key, context) { + if (isUndefined(context)) { + delete this._globalContext[key]; + } else { + this._globalContext[key] = objectMerge(this._globalContext[key] || {}, context); + } + } +}; + +// Deprecations +Raven.prototype.setUser = Raven.prototype.setUserContext; +Raven.prototype.setReleaseContext = Raven.prototype.setRelease; + +module.exports = Raven; + +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"10":10,"11":11,"4":4,"5":5,"8":8,"9":9}],7:[function(_dereq_,module,exports){ +(function (global){ +/** + * Enforces a single instance of the Raven client, and the + * main entry point for Raven. If you are a consumer of the + * Raven library, you SHOULD load this file (vs raven.js). + **/ + +var RavenConstructor = _dereq_(6); + +// This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) +var _window = + typeof window !== 'undefined' + ? window + : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; +var _Raven = _window.Raven; + +var Raven = new RavenConstructor(); + +/* + * Allow multiple versions of Raven to be installed. + * Strip Raven from the global context and returns the instance. + * + * @return {Raven} + */ +Raven.noConflict = function() { + _window.Raven = _Raven; + return Raven; +}; + +Raven.afterLoad(); + +module.exports = Raven; + +/** + * DISCLAIMER: + * + * Expose `Client` constructor for cases where user want to track multiple "sub-applications" in one larger app. + * It's not meant to be used by a wide audience, so pleaaase make sure that you know what you're doing before using it. + * Accidentally calling `install` multiple times, may result in an unexpected behavior that's very hard to debug. + * + * It's called `Client' to be in-line with Raven Node implementation. + * + * HOWTO: + * + * import Raven from 'raven-js'; + * + * const someAppReporter = new Raven.Client(); + * const someOtherAppReporter = new Raven.Client(); + * + * someAppReporter.config('__DSN__', { + * ...config goes here + * }); + * + * someOtherAppReporter.config('__OTHER_DSN__', { + * ...config goes here + * }); + * + * someAppReporter.captureMessage(...); + * someAppReporter.captureException(...); + * someAppReporter.captureBreadcrumb(...); + * + * someOtherAppReporter.captureMessage(...); + * someOtherAppReporter.captureException(...); + * someOtherAppReporter.captureBreadcrumb(...); + * + * It should "just work". + */ +module.exports.Client = RavenConstructor; + +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"6":6}],8:[function(_dereq_,module,exports){ +(function (global){ +var stringify = _dereq_(10); + +var _window = + typeof window !== 'undefined' + ? window + : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; + +function isObject(what) { + return typeof what === 'object' && what !== null; +} + +// Yanked from https://git.io/vS8DV re-used under CC0 +// with some tiny modifications +function isError(value) { + switch (Object.prototype.toString.call(value)) { + case '[object Error]': + return true; + case '[object Exception]': + return true; + case '[object DOMException]': + return true; + default: + return value instanceof Error; + } +} + +function isErrorEvent(value) { + return Object.prototype.toString.call(value) === '[object ErrorEvent]'; +} + +function isDOMError(value) { + return Object.prototype.toString.call(value) === '[object DOMError]'; +} + +function isDOMException(value) { + return Object.prototype.toString.call(value) === '[object DOMException]'; +} + +function isUndefined(what) { + return what === void 0; +} + +function isFunction(what) { + return typeof what === 'function'; +} + +function isPlainObject(what) { + return Object.prototype.toString.call(what) === '[object Object]'; +} + +function isString(what) { + return Object.prototype.toString.call(what) === '[object String]'; +} + +function isArray(what) { + return Object.prototype.toString.call(what) === '[object Array]'; +} + +function isEmptyObject(what) { + if (!isPlainObject(what)) return false; + + for (var _ in what) { + if (what.hasOwnProperty(_)) { + return false; + } + } + return true; +} + +function supportsErrorEvent() { + try { + new ErrorEvent(''); // eslint-disable-line no-new + return true; + } catch (e) { + return false; + } +} + +function supportsDOMError() { + try { + new DOMError(''); // eslint-disable-line no-new + return true; + } catch (e) { + return false; + } +} + +function supportsDOMException() { + try { + new DOMException(''); // eslint-disable-line no-new + return true; + } catch (e) { + return false; + } +} + +function supportsFetch() { + if (!('fetch' in _window)) return false; + + try { + new Headers(); // eslint-disable-line no-new + new Request(''); // eslint-disable-line no-new + new Response(); // eslint-disable-line no-new + return true; + } catch (e) { + return false; + } +} + +// Despite all stars in the sky saying that Edge supports old draft syntax, aka 'never', 'always', 'origin' and 'default +// https://caniuse.com/#feat=referrer-policy +// It doesn't. And it throw exception instead of ignoring this parameter... +// REF: https://github.com/getsentry/raven-js/issues/1233 +function supportsReferrerPolicy() { + if (!supportsFetch()) return false; + + try { + // eslint-disable-next-line no-new + new Request('pickleRick', { + referrerPolicy: 'origin' + }); + return true; + } catch (e) { + return false; + } +} + +function supportsPromiseRejectionEvent() { + return typeof PromiseRejectionEvent === 'function'; +} + +function wrappedCallback(callback) { + function dataCallback(data, original) { + var normalizedData = callback(data) || data; + if (original) { + return original(normalizedData) || normalizedData; + } + return normalizedData; + } + + return dataCallback; +} + +function each(obj, callback) { + var i, j; + + if (isUndefined(obj.length)) { + for (i in obj) { + if (hasKey(obj, i)) { + callback.call(null, i, obj[i]); + } + } + } else { + j = obj.length; + if (j) { + for (i = 0; i < j; i++) { + callback.call(null, i, obj[i]); + } + } + } +} + +function objectMerge(obj1, obj2) { + if (!obj2) { + return obj1; + } + each(obj2, function(key, value) { + obj1[key] = value; + }); + return obj1; +} + +/** + * This function is only used for react-native. + * react-native freezes object that have already been sent over the + * js bridge. We need this function in order to check if the object is frozen. + * So it's ok that objectFrozen returns false if Object.isFrozen is not + * supported because it's not relevant for other "platforms". See related issue: + * https://github.com/getsentry/react-native-sentry/issues/57 + */ +function objectFrozen(obj) { + if (!Object.isFrozen) { + return false; + } + return Object.isFrozen(obj); +} + +function truncate(str, max) { + if (typeof max !== 'number') { + throw new Error('2nd argument to `truncate` function should be a number'); + } + if (typeof str !== 'string' || max === 0) { + return str; + } + return str.length <= max ? str : str.substr(0, max) + '\u2026'; +} + +/** + * hasKey, a better form of hasOwnProperty + * Example: hasKey(MainHostObject, property) === true/false + * + * @param {Object} host object to check property + * @param {string} key to check + */ +function hasKey(object, key) { + return Object.prototype.hasOwnProperty.call(object, key); +} + +function joinRegExp(patterns) { + // Combine an array of regular expressions and strings into one large regexp + // Be mad. + var sources = [], + i = 0, + len = patterns.length, + pattern; + + for (; i < len; i++) { + pattern = patterns[i]; + if (isString(pattern)) { + // If it's a string, we need to escape it + // Taken from: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions + sources.push(pattern.replace(/([.*+?^=!:${}()|\[\]\/\\])/g, '\\$1')); + } else if (pattern && pattern.source) { + // If it's a regexp already, we want to extract the source + sources.push(pattern.source); + } + // Intentionally skip other cases + } + return new RegExp(sources.join('|'), 'i'); +} + +function urlencode(o) { + var pairs = []; + each(o, function(key, value) { + pairs.push(encodeURIComponent(key) + '=' + encodeURIComponent(value)); + }); + return pairs.join('&'); +} + +// borrowed from https://tools.ietf.org/html/rfc3986#appendix-B +// intentionally using regex and not href parsing trick because React Native and other +// environments where DOM might not be available +function parseUrl(url) { + if (typeof url !== 'string') return {}; + var match = url.match(/^(([^:\/?#]+):)?(\/\/([^\/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?$/); + + // coerce to undefined values to empty string so we don't get 'undefined' + var query = match[6] || ''; + var fragment = match[8] || ''; + return { + protocol: match[2], + host: match[4], + path: match[5], + relative: match[5] + query + fragment // everything minus origin + }; +} +function uuid4() { + var crypto = _window.crypto || _window.msCrypto; + + if (!isUndefined(crypto) && crypto.getRandomValues) { + // Use window.crypto API if available + // eslint-disable-next-line no-undef + var arr = new Uint16Array(8); + crypto.getRandomValues(arr); + + // set 4 in byte 7 + arr[3] = (arr[3] & 0xfff) | 0x4000; + // set 2 most significant bits of byte 9 to '10' + arr[4] = (arr[4] & 0x3fff) | 0x8000; + + var pad = function(num) { + var v = num.toString(16); + while (v.length < 4) { + v = '0' + v; + } + return v; + }; + + return ( + pad(arr[0]) + + pad(arr[1]) + + pad(arr[2]) + + pad(arr[3]) + + pad(arr[4]) + + pad(arr[5]) + + pad(arr[6]) + + pad(arr[7]) + ); + } else { + // http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/2117523#2117523 + return 'xxxxxxxxxxxx4xxxyxxxxxxxxxxxxxxx'.replace(/[xy]/g, function(c) { + var r = (Math.random() * 16) | 0, + v = c === 'x' ? r : (r & 0x3) | 0x8; + return v.toString(16); + }); + } +} + +/** + * Given a child DOM element, returns a query-selector statement describing that + * and its ancestors + * e.g. [HTMLElement] => body > div > input#foo.btn[name=baz] + * @param elem + * @returns {string} + */ +function htmlTreeAsString(elem) { + /* eslint no-extra-parens:0*/ + var MAX_TRAVERSE_HEIGHT = 5, + MAX_OUTPUT_LEN = 80, + out = [], + height = 0, + len = 0, + separator = ' > ', + sepLength = separator.length, + nextStr; + + while (elem && height++ < MAX_TRAVERSE_HEIGHT) { + nextStr = htmlElementAsString(elem); + // bail out if + // - nextStr is the 'html' element + // - the length of the string that would be created exceeds MAX_OUTPUT_LEN + // (ignore this limit if we are on the first iteration) + if ( + nextStr === 'html' || + (height > 1 && len + out.length * sepLength + nextStr.length >= MAX_OUTPUT_LEN) + ) { + break; + } + + out.push(nextStr); + + len += nextStr.length; + elem = elem.parentNode; + } + + return out.reverse().join(separator); +} + +/** + * Returns a simple, query-selector representation of a DOM element + * e.g. [HTMLElement] => input#foo.btn[name=baz] + * @param HTMLElement + * @returns {string} + */ +function htmlElementAsString(elem) { + var out = [], + className, + classes, + key, + attr, + i; + + if (!elem || !elem.tagName) { + return ''; + } + + out.push(elem.tagName.toLowerCase()); + if (elem.id) { + out.push('#' + elem.id); + } + + className = elem.className; + if (className && isString(className)) { + classes = className.split(/\s+/); + for (i = 0; i < classes.length; i++) { + out.push('.' + classes[i]); + } + } + var attrWhitelist = ['type', 'name', 'title', 'alt']; + for (i = 0; i < attrWhitelist.length; i++) { + key = attrWhitelist[i]; + attr = elem.getAttribute(key); + if (attr) { + out.push('[' + key + '="' + attr + '"]'); + } + } + return out.join(''); +} + +/** + * Returns true if either a OR b is truthy, but not both + */ +function isOnlyOneTruthy(a, b) { + return !!(!!a ^ !!b); +} + +/** + * Returns true if both parameters are undefined + */ +function isBothUndefined(a, b) { + return isUndefined(a) && isUndefined(b); +} + +/** + * Returns true if the two input exception interfaces have the same content + */ +function isSameException(ex1, ex2) { + if (isOnlyOneTruthy(ex1, ex2)) return false; + + ex1 = ex1.values[0]; + ex2 = ex2.values[0]; + + if (ex1.type !== ex2.type || ex1.value !== ex2.value) return false; + + // in case both stacktraces are undefined, we can't decide so default to false + if (isBothUndefined(ex1.stacktrace, ex2.stacktrace)) return false; + + return isSameStacktrace(ex1.stacktrace, ex2.stacktrace); +} + +/** + * Returns true if the two input stack trace interfaces have the same content + */ +function isSameStacktrace(stack1, stack2) { + if (isOnlyOneTruthy(stack1, stack2)) return false; + + var frames1 = stack1.frames; + var frames2 = stack2.frames; + + // Exit early if frame count differs + if (frames1.length !== frames2.length) return false; + + // Iterate through every frame; bail out if anything differs + var a, b; + for (var i = 0; i < frames1.length; i++) { + a = frames1[i]; + b = frames2[i]; + if ( + a.filename !== b.filename || + a.lineno !== b.lineno || + a.colno !== b.colno || + a['function'] !== b['function'] + ) + return false; + } + return true; +} + +/** + * Polyfill a method + * @param obj object e.g. `document` + * @param name method name present on object e.g. `addEventListener` + * @param replacement replacement function + * @param track {optional} record instrumentation to an array + */ +function fill(obj, name, replacement, track) { + if (obj == null) return; + var orig = obj[name]; + obj[name] = replacement(orig); + obj[name].__raven__ = true; + obj[name].__orig__ = orig; + if (track) { + track.push([obj, name, orig]); + } +} + +/** + * Join values in array + * @param input array of values to be joined together + * @param delimiter string to be placed in-between values + * @returns {string} + */ +function safeJoin(input, delimiter) { + if (!isArray(input)) return ''; + + var output = []; + + for (var i = 0; i < input.length; i++) { + try { + output.push(String(input[i])); + } catch (e) { + output.push('[value cannot be serialized]'); + } + } + + return output.join(delimiter); +} + +// Default Node.js REPL depth +var MAX_SERIALIZE_EXCEPTION_DEPTH = 3; +// 50kB, as 100kB is max payload size, so half sounds reasonable +var MAX_SERIALIZE_EXCEPTION_SIZE = 50 * 1024; +var MAX_SERIALIZE_KEYS_LENGTH = 40; + +function utf8Length(value) { + return ~-encodeURI(value).split(/%..|./).length; +} + +function jsonSize(value) { + return utf8Length(JSON.stringify(value)); +} + +function serializeValue(value) { + if (typeof value === 'string') { + var maxLength = 40; + return truncate(value, maxLength); + } else if ( + typeof value === 'number' || + typeof value === 'boolean' || + typeof value === 'undefined' + ) { + return value; + } + + var type = Object.prototype.toString.call(value); + + // Node.js REPL notation + if (type === '[object Object]') return '[Object]'; + if (type === '[object Array]') return '[Array]'; + if (type === '[object Function]') + return value.name ? '[Function: ' + value.name + ']' : '[Function]'; + + return value; +} + +function serializeObject(value, depth) { + if (depth === 0) return serializeValue(value); + + if (isPlainObject(value)) { + return Object.keys(value).reduce(function(acc, key) { + acc[key] = serializeObject(value[key], depth - 1); + return acc; + }, {}); + } else if (Array.isArray(value)) { + return value.map(function(val) { + return serializeObject(val, depth - 1); + }); + } + + return serializeValue(value); +} + +function serializeException(ex, depth, maxSize) { + if (!isPlainObject(ex)) return ex; + + depth = typeof depth !== 'number' ? MAX_SERIALIZE_EXCEPTION_DEPTH : depth; + maxSize = typeof depth !== 'number' ? MAX_SERIALIZE_EXCEPTION_SIZE : maxSize; + + var serialized = serializeObject(ex, depth); + + if (jsonSize(stringify(serialized)) > maxSize) { + return serializeException(ex, depth - 1); + } + + return serialized; +} + +function serializeKeysForMessage(keys, maxLength) { + if (typeof keys === 'number' || typeof keys === 'string') return keys.toString(); + if (!Array.isArray(keys)) return ''; + + keys = keys.filter(function(key) { + return typeof key === 'string'; + }); + if (keys.length === 0) return '[object has no keys]'; + + maxLength = typeof maxLength !== 'number' ? MAX_SERIALIZE_KEYS_LENGTH : maxLength; + if (keys[0].length >= maxLength) return keys[0]; + + for (var usedKeys = keys.length; usedKeys > 0; usedKeys--) { + var serialized = keys.slice(0, usedKeys).join(', '); + if (serialized.length > maxLength) continue; + if (usedKeys === keys.length) return serialized; + return serialized + '\u2026'; + } + + return ''; +} + +function sanitize(input, sanitizeKeys) { + if (!isArray(sanitizeKeys) || (isArray(sanitizeKeys) && sanitizeKeys.length === 0)) + return input; + + var sanitizeRegExp = joinRegExp(sanitizeKeys); + var sanitizeMask = '********'; + var safeInput; + + try { + safeInput = JSON.parse(stringify(input)); + } catch (o_O) { + return input; + } + + function sanitizeWorker(workerInput) { + if (isArray(workerInput)) { + return workerInput.map(function(val) { + return sanitizeWorker(val); + }); + } + + if (isPlainObject(workerInput)) { + return Object.keys(workerInput).reduce(function(acc, k) { + if (sanitizeRegExp.test(k)) { + acc[k] = sanitizeMask; + } else { + acc[k] = sanitizeWorker(workerInput[k]); + } + return acc; + }, {}); + } + + return workerInput; + } + + return sanitizeWorker(safeInput); +} + +module.exports = { + isObject: isObject, + isError: isError, + isErrorEvent: isErrorEvent, + isDOMError: isDOMError, + isDOMException: isDOMException, + isUndefined: isUndefined, + isFunction: isFunction, + isPlainObject: isPlainObject, + isString: isString, + isArray: isArray, + isEmptyObject: isEmptyObject, + supportsErrorEvent: supportsErrorEvent, + supportsDOMError: supportsDOMError, + supportsDOMException: supportsDOMException, + supportsFetch: supportsFetch, + supportsReferrerPolicy: supportsReferrerPolicy, + supportsPromiseRejectionEvent: supportsPromiseRejectionEvent, + wrappedCallback: wrappedCallback, + each: each, + objectMerge: objectMerge, + truncate: truncate, + objectFrozen: objectFrozen, + hasKey: hasKey, + joinRegExp: joinRegExp, + urlencode: urlencode, + uuid4: uuid4, + htmlTreeAsString: htmlTreeAsString, + htmlElementAsString: htmlElementAsString, + isSameException: isSameException, + isSameStacktrace: isSameStacktrace, + parseUrl: parseUrl, + fill: fill, + safeJoin: safeJoin, + serializeException: serializeException, + serializeKeysForMessage: serializeKeysForMessage, + sanitize: sanitize +}; + +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"10":10}],9:[function(_dereq_,module,exports){ +(function (global){ +var utils = _dereq_(8); + +/* + TraceKit - Cross brower stack traces + + This was originally forked from github.com/occ/TraceKit, but has since been + largely re-written and is now maintained as part of raven-js. Tests for + this are in test/vendor. + + MIT license +*/ + +var TraceKit = { + collectWindowErrors: true, + debug: false +}; + +// This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) +var _window = + typeof window !== 'undefined' + ? window + : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; + +// global reference to slice +var _slice = [].slice; +var UNKNOWN_FUNCTION = '?'; + +// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error#Error_types +var ERROR_TYPES_RE = /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/; + +function getLocationHref() { + if (typeof document === 'undefined' || document.location == null) return ''; + return document.location.href; +} + +function getLocationOrigin() { + if (typeof document === 'undefined' || document.location == null) return ''; + + // Oh dear IE10... + if (!document.location.origin) { + document.location.origin = + document.location.protocol + + '//' + + document.location.hostname + + (document.location.port ? ':' + document.location.port : ''); + } + + return document.location.origin; +} + +/** + * TraceKit.report: cross-browser processing of unhandled exceptions + * + * Syntax: + * TraceKit.report.subscribe(function(stackInfo) { ... }) + * TraceKit.report.unsubscribe(function(stackInfo) { ... }) + * TraceKit.report(exception) + * try { ...code... } catch(ex) { TraceKit.report(ex); } + * + * Supports: + * - Firefox: full stack trace with line numbers, plus column number + * on top frame; column number is not guaranteed + * - Opera: full stack trace with line and column numbers + * - Chrome: full stack trace with line and column numbers + * - Safari: line and column number for the top frame only; some frames + * may be missing, and column number is not guaranteed + * - IE: line and column number for the top frame only; some frames + * may be missing, and column number is not guaranteed + * + * In theory, TraceKit should work on all of the following versions: + * - IE5.5+ (only 8.0 tested) + * - Firefox 0.9+ (only 3.5+ tested) + * - Opera 7+ (only 10.50 tested; versions 9 and earlier may require + * Exceptions Have Stacktrace to be enabled in opera:config) + * - Safari 3+ (only 4+ tested) + * - Chrome 1+ (only 5+ tested) + * - Konqueror 3.5+ (untested) + * + * Requires TraceKit.computeStackTrace. + * + * Tries to catch all unhandled exceptions and report them to the + * subscribed handlers. Please note that TraceKit.report will rethrow the + * exception. This is REQUIRED in order to get a useful stack trace in IE. + * If the exception does not reach the top of the browser, you will only + * get a stack trace from the point where TraceKit.report was called. + * + * Handlers receive a stackInfo object as described in the + * TraceKit.computeStackTrace docs. + */ +TraceKit.report = (function reportModuleWrapper() { + var handlers = [], + lastArgs = null, + lastException = null, + lastExceptionStack = null; + + /** + * Add a crash handler. + * @param {Function} handler + */ + function subscribe(handler) { + installGlobalHandler(); + handlers.push(handler); + } + + /** + * Remove a crash handler. + * @param {Function} handler + */ + function unsubscribe(handler) { + for (var i = handlers.length - 1; i >= 0; --i) { + if (handlers[i] === handler) { + handlers.splice(i, 1); + } + } + } + + /** + * Remove all crash handlers. + */ + function unsubscribeAll() { + uninstallGlobalHandler(); + handlers = []; + } + + /** + * Dispatch stack information to all handlers. + * @param {Object.} stack + */ + function notifyHandlers(stack, isWindowError) { + var exception = null; + if (isWindowError && !TraceKit.collectWindowErrors) { + return; + } + for (var i in handlers) { + if (handlers.hasOwnProperty(i)) { + try { + handlers[i].apply(null, [stack].concat(_slice.call(arguments, 2))); + } catch (inner) { + exception = inner; + } + } + } + + if (exception) { + throw exception; + } + } + + var _oldOnerrorHandler, _onErrorHandlerInstalled; + + /** + * Ensures all global unhandled exceptions are recorded. + * Supported by Gecko and IE. + * @param {string} msg Error message. + * @param {string} url URL of script that generated the exception. + * @param {(number|string)} lineNo The line number at which the error + * occurred. + * @param {?(number|string)} colNo The column number at which the error + * occurred. + * @param {?Error} ex The actual Error object. + */ + function traceKitWindowOnError(msg, url, lineNo, colNo, ex) { + var stack = null; + // If 'ex' is ErrorEvent, get real Error from inside + var exception = utils.isErrorEvent(ex) ? ex.error : ex; + // If 'msg' is ErrorEvent, get real message from inside + var message = utils.isErrorEvent(msg) ? msg.message : msg; + + if (lastExceptionStack) { + TraceKit.computeStackTrace.augmentStackTraceWithInitialElement( + lastExceptionStack, + url, + lineNo, + message + ); + processLastException(); + } else if (exception && utils.isError(exception)) { + // non-string `exception` arg; attempt to extract stack trace + + // New chrome and blink send along a real error object + // Let's just report that like a normal error. + // See: https://mikewest.org/2013/08/debugging-runtime-errors-with-window-onerror + stack = TraceKit.computeStackTrace(exception); + notifyHandlers(stack, true); + } else { + var location = { + url: url, + line: lineNo, + column: colNo + }; + + var name = undefined; + var groups; + + if ({}.toString.call(message) === '[object String]') { + var groups = message.match(ERROR_TYPES_RE); + if (groups) { + name = groups[1]; + message = groups[2]; + } + } + + location.func = UNKNOWN_FUNCTION; + + stack = { + name: name, + message: message, + url: getLocationHref(), + stack: [location] + }; + notifyHandlers(stack, true); + } + + if (_oldOnerrorHandler) { + return _oldOnerrorHandler.apply(this, arguments); + } + + return false; + } + + function installGlobalHandler() { + if (_onErrorHandlerInstalled) { + return; + } + _oldOnerrorHandler = _window.onerror; + _window.onerror = traceKitWindowOnError; + _onErrorHandlerInstalled = true; + } + + function uninstallGlobalHandler() { + if (!_onErrorHandlerInstalled) { + return; + } + _window.onerror = _oldOnerrorHandler; + _onErrorHandlerInstalled = false; + _oldOnerrorHandler = undefined; + } + + function processLastException() { + var _lastExceptionStack = lastExceptionStack, + _lastArgs = lastArgs; + lastArgs = null; + lastExceptionStack = null; + lastException = null; + notifyHandlers.apply(null, [_lastExceptionStack, false].concat(_lastArgs)); + } + + /** + * Reports an unhandled Error to TraceKit. + * @param {Error} ex + * @param {?boolean} rethrow If false, do not re-throw the exception. + * Only used for window.onerror to not cause an infinite loop of + * rethrowing. + */ + function report(ex, rethrow) { + var args = _slice.call(arguments, 1); + if (lastExceptionStack) { + if (lastException === ex) { + return; // already caught by an inner catch block, ignore + } else { + processLastException(); + } + } + + var stack = TraceKit.computeStackTrace(ex); + lastExceptionStack = stack; + lastException = ex; + lastArgs = args; + + // If the stack trace is incomplete, wait for 2 seconds for + // slow slow IE to see if onerror occurs or not before reporting + // this exception; otherwise, we will end up with an incomplete + // stack trace + setTimeout(function() { + if (lastException === ex) { + processLastException(); + } + }, stack.incomplete ? 2000 : 0); + + if (rethrow !== false) { + throw ex; // re-throw to propagate to the top level (and cause window.onerror) + } + } + + report.subscribe = subscribe; + report.unsubscribe = unsubscribe; + report.uninstall = unsubscribeAll; + return report; +})(); + +/** + * TraceKit.computeStackTrace: cross-browser stack traces in JavaScript + * + * Syntax: + * s = TraceKit.computeStackTrace(exception) // consider using TraceKit.report instead (see below) + * Returns: + * s.name - exception name + * s.message - exception message + * s.stack[i].url - JavaScript or HTML file URL + * s.stack[i].func - function name, or empty for anonymous functions (if guessing did not work) + * s.stack[i].args - arguments passed to the function, if known + * s.stack[i].line - line number, if known + * s.stack[i].column - column number, if known + * + * Supports: + * - Firefox: full stack trace with line numbers and unreliable column + * number on top frame + * - Opera 10: full stack trace with line and column numbers + * - Opera 9-: full stack trace with line numbers + * - Chrome: full stack trace with line and column numbers + * - Safari: line and column number for the topmost stacktrace element + * only + * - IE: no line numbers whatsoever + * + * Tries to guess names of anonymous functions by looking for assignments + * in the source code. In IE and Safari, we have to guess source file names + * by searching for function bodies inside all page scripts. This will not + * work for scripts that are loaded cross-domain. + * Here be dragons: some function names may be guessed incorrectly, and + * duplicate functions may be mismatched. + * + * TraceKit.computeStackTrace should only be used for tracing purposes. + * Logging of unhandled exceptions should be done with TraceKit.report, + * which builds on top of TraceKit.computeStackTrace and provides better + * IE support by utilizing the window.onerror event to retrieve information + * about the top of the stack. + * + * Note: In IE and Safari, no stack trace is recorded on the Error object, + * so computeStackTrace instead walks its *own* chain of callers. + * This means that: + * * in Safari, some methods may be missing from the stack trace; + * * in IE, the topmost function in the stack trace will always be the + * caller of computeStackTrace. + * + * This is okay for tracing (because you are likely to be calling + * computeStackTrace from the function you want to be the topmost element + * of the stack trace anyway), but not okay for logging unhandled + * exceptions (because your catch block will likely be far away from the + * inner function that actually caused the exception). + * + */ +TraceKit.computeStackTrace = (function computeStackTraceWrapper() { + // Contents of Exception in various browsers. + // + // SAFARI: + // ex.message = Can't find variable: qq + // ex.line = 59 + // ex.sourceId = 580238192 + // ex.sourceURL = http://... + // ex.expressionBeginOffset = 96 + // ex.expressionCaretOffset = 98 + // ex.expressionEndOffset = 98 + // ex.name = ReferenceError + // + // FIREFOX: + // ex.message = qq is not defined + // ex.fileName = http://... + // ex.lineNumber = 59 + // ex.columnNumber = 69 + // ex.stack = ...stack trace... (see the example below) + // ex.name = ReferenceError + // + // CHROME: + // ex.message = qq is not defined + // ex.name = ReferenceError + // ex.type = not_defined + // ex.arguments = ['aa'] + // ex.stack = ...stack trace... + // + // INTERNET EXPLORER: + // ex.message = ... + // ex.name = ReferenceError + // + // OPERA: + // ex.message = ...message... (see the example below) + // ex.name = ReferenceError + // ex.opera#sourceloc = 11 (pretty much useless, duplicates the info in ex.message) + // ex.stacktrace = n/a; see 'opera:config#UserPrefs|Exceptions Have Stacktrace' + + /** + * Computes stack trace information from the stack property. + * Chrome and Gecko use this property. + * @param {Error} ex + * @return {?Object.} Stack trace information. + */ + function computeStackTraceFromStackProp(ex) { + if (typeof ex.stack === 'undefined' || !ex.stack) return; + + var chrome = /^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i; + var winjs = /^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i; + // NOTE: blob urls are now supposed to always have an origin, therefore it's format + // which is `blob:http://url/path/with-some-uuid`, is matched by `blob.*?:\/` as well + var gecko = /^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i; + // Used to additionally parse URL/line/column from eval frames + var geckoEval = /(\S+) line (\d+)(?: > eval line \d+)* > eval/i; + var chromeEval = /\((\S*)(?::(\d+))(?::(\d+))\)/; + var lines = ex.stack.split('\n'); + var stack = []; + var submatch; + var parts; + var element; + var reference = /^(.*) is undefined$/.exec(ex.message); + + for (var i = 0, j = lines.length; i < j; ++i) { + if ((parts = chrome.exec(lines[i]))) { + var isNative = parts[2] && parts[2].indexOf('native') === 0; // start of line + var isEval = parts[2] && parts[2].indexOf('eval') === 0; // start of line + if (isEval && (submatch = chromeEval.exec(parts[2]))) { + // throw out eval line/column and use top-most line/column number + parts[2] = submatch[1]; // url + parts[3] = submatch[2]; // line + parts[4] = submatch[3]; // column + } + element = { + url: !isNative ? parts[2] : null, + func: parts[1] || UNKNOWN_FUNCTION, + args: isNative ? [parts[2]] : [], + line: parts[3] ? +parts[3] : null, + column: parts[4] ? +parts[4] : null + }; + } else if ((parts = winjs.exec(lines[i]))) { + element = { + url: parts[2], + func: parts[1] || UNKNOWN_FUNCTION, + args: [], + line: +parts[3], + column: parts[4] ? +parts[4] : null + }; + } else if ((parts = gecko.exec(lines[i]))) { + var isEval = parts[3] && parts[3].indexOf(' > eval') > -1; + if (isEval && (submatch = geckoEval.exec(parts[3]))) { + // throw out eval line/column and use top-most line number + parts[3] = submatch[1]; + parts[4] = submatch[2]; + parts[5] = null; // no column when eval + } else if (i === 0 && !parts[5] && typeof ex.columnNumber !== 'undefined') { + // FireFox uses this awesome columnNumber property for its top frame + // Also note, Firefox's column number is 0-based and everything else expects 1-based, + // so adding 1 + // NOTE: this hack doesn't work if top-most frame is eval + stack[0].column = ex.columnNumber + 1; + } + element = { + url: parts[3], + func: parts[1] || UNKNOWN_FUNCTION, + args: parts[2] ? parts[2].split(',') : [], + line: parts[4] ? +parts[4] : null, + column: parts[5] ? +parts[5] : null + }; + } else { + continue; + } + + if (!element.func && element.line) { + element.func = UNKNOWN_FUNCTION; + } + + if (element.url && element.url.substr(0, 5) === 'blob:') { + // Special case for handling JavaScript loaded into a blob. + // We use a synchronous AJAX request here as a blob is already in + // memory - it's not making a network request. This will generate a warning + // in the browser console, but there has already been an error so that's not + // that much of an issue. + var xhr = new XMLHttpRequest(); + xhr.open('GET', element.url, false); + xhr.send(null); + + // If we failed to download the source, skip this patch + if (xhr.status === 200) { + var source = xhr.responseText || ''; + + // We trim the source down to the last 300 characters as sourceMappingURL is always at the end of the file. + // Why 300? To be in line with: https://github.com/getsentry/sentry/blob/4af29e8f2350e20c28a6933354e4f42437b4ba42/src/sentry/lang/javascript/processor.py#L164-L175 + source = source.slice(-300); + + // Now we dig out the source map URL + var sourceMaps = source.match(/\/\/# sourceMappingURL=(.*)$/); + + // If we don't find a source map comment or we find more than one, continue on to the next element. + if (sourceMaps) { + var sourceMapAddress = sourceMaps[1]; + + // Now we check to see if it's a relative URL. + // If it is, convert it to an absolute one. + if (sourceMapAddress.charAt(0) === '~') { + sourceMapAddress = getLocationOrigin() + sourceMapAddress.slice(1); + } + + // Now we strip the '.map' off of the end of the URL and update the + // element so that Sentry can match the map to the blob. + element.url = sourceMapAddress.slice(0, -4); + } + } + } + + stack.push(element); + } + + if (!stack.length) { + return null; + } + + return { + name: ex.name, + message: ex.message, + url: getLocationHref(), + stack: stack + }; + } + + /** + * Adds information about the first frame to incomplete stack traces. + * Safari and IE require this to get complete data on the first frame. + * @param {Object.} stackInfo Stack trace information from + * one of the compute* methods. + * @param {string} url The URL of the script that caused an error. + * @param {(number|string)} lineNo The line number of the script that + * caused an error. + * @param {string=} message The error generated by the browser, which + * hopefully contains the name of the object that caused the error. + * @return {boolean} Whether or not the stack information was + * augmented. + */ + function augmentStackTraceWithInitialElement(stackInfo, url, lineNo, message) { + var initial = { + url: url, + line: lineNo + }; + + if (initial.url && initial.line) { + stackInfo.incomplete = false; + + if (!initial.func) { + initial.func = UNKNOWN_FUNCTION; + } + + if (stackInfo.stack.length > 0) { + if (stackInfo.stack[0].url === initial.url) { + if (stackInfo.stack[0].line === initial.line) { + return false; // already in stack trace + } else if ( + !stackInfo.stack[0].line && + stackInfo.stack[0].func === initial.func + ) { + stackInfo.stack[0].line = initial.line; + return false; + } + } + } + + stackInfo.stack.unshift(initial); + stackInfo.partial = true; + return true; + } else { + stackInfo.incomplete = true; + } + + return false; + } + + /** + * Computes stack trace information by walking the arguments.caller + * chain at the time the exception occurred. This will cause earlier + * frames to be missed but is the only way to get any stack trace in + * Safari and IE. The top frame is restored by + * {@link augmentStackTraceWithInitialElement}. + * @param {Error} ex + * @return {?Object.} Stack trace information. + */ + function computeStackTraceByWalkingCallerChain(ex, depth) { + var functionName = /function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i, + stack = [], + funcs = {}, + recursion = false, + parts, + item, + source; + + for ( + var curr = computeStackTraceByWalkingCallerChain.caller; + curr && !recursion; + curr = curr.caller + ) { + if (curr === computeStackTrace || curr === TraceKit.report) { + // console.log('skipping internal function'); + continue; + } + + item = { + url: null, + func: UNKNOWN_FUNCTION, + line: null, + column: null + }; + + if (curr.name) { + item.func = curr.name; + } else if ((parts = functionName.exec(curr.toString()))) { + item.func = parts[1]; + } + + if (typeof item.func === 'undefined') { + try { + item.func = parts.input.substring(0, parts.input.indexOf('{')); + } catch (e) {} + } + + if (funcs['' + curr]) { + recursion = true; + } else { + funcs['' + curr] = true; + } + + stack.push(item); + } + + if (depth) { + // console.log('depth is ' + depth); + // console.log('stack is ' + stack.length); + stack.splice(0, depth); + } + + var result = { + name: ex.name, + message: ex.message, + url: getLocationHref(), + stack: stack + }; + augmentStackTraceWithInitialElement( + result, + ex.sourceURL || ex.fileName, + ex.line || ex.lineNumber, + ex.message || ex.description + ); + return result; + } + + /** + * Computes a stack trace for an exception. + * @param {Error} ex + * @param {(string|number)=} depth + */ + function computeStackTrace(ex, depth) { + var stack = null; + depth = depth == null ? 0 : +depth; + + try { + stack = computeStackTraceFromStackProp(ex); + if (stack) { + return stack; + } + } catch (e) { + if (TraceKit.debug) { + throw e; + } + } + + try { + stack = computeStackTraceByWalkingCallerChain(ex, depth + 1); + if (stack) { + return stack; + } + } catch (e) { + if (TraceKit.debug) { + throw e; + } + } + return { + name: ex.name, + message: ex.message, + url: getLocationHref() + }; + } + + computeStackTrace.augmentStackTraceWithInitialElement = augmentStackTraceWithInitialElement; + computeStackTrace.computeStackTraceFromStackProp = computeStackTraceFromStackProp; + + return computeStackTrace; +})(); + +module.exports = TraceKit; + +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"8":8}],10:[function(_dereq_,module,exports){ +/* + json-stringify-safe + Like JSON.stringify, but doesn't throw on circular references. + + Originally forked from https://github.com/isaacs/json-stringify-safe + version 5.0.1 on 3/8/2017 and modified to handle Errors serialization + and IE8 compatibility. Tests for this are in test/vendor. + + ISC license: https://github.com/isaacs/json-stringify-safe/blob/master/LICENSE +*/ + +exports = module.exports = stringify; +exports.getSerialize = serializer; + +function indexOf(haystack, needle) { + for (var i = 0; i < haystack.length; ++i) { + if (haystack[i] === needle) return i; + } + return -1; +} + +function stringify(obj, replacer, spaces, cycleReplacer) { + return JSON.stringify(obj, serializer(replacer, cycleReplacer), spaces); +} + +// https://github.com/ftlabs/js-abbreviate/blob/fa709e5f139e7770a71827b1893f22418097fbda/index.js#L95-L106 +function stringifyError(value) { + var err = { + // These properties are implemented as magical getters and don't show up in for in + stack: value.stack, + message: value.message, + name: value.name + }; + + for (var i in value) { + if (Object.prototype.hasOwnProperty.call(value, i)) { + err[i] = value[i]; + } + } + + return err; +} + +function serializer(replacer, cycleReplacer) { + var stack = []; + var keys = []; + + if (cycleReplacer == null) { + cycleReplacer = function(key, value) { + if (stack[0] === value) { + return '[Circular ~]'; + } + return '[Circular ~.' + keys.slice(0, indexOf(stack, value)).join('.') + ']'; + }; + } + + return function(key, value) { + if (stack.length > 0) { + var thisPos = indexOf(stack, this); + ~thisPos ? stack.splice(thisPos + 1) : stack.push(this); + ~thisPos ? keys.splice(thisPos, Infinity, key) : keys.push(key); + + if (~indexOf(stack, value)) { + value = cycleReplacer.call(this, key, value); + } + } else { + stack.push(value); + } + + return replacer == null + ? value instanceof Error ? stringifyError(value) : value + : replacer.call(this, key, value); + }; +} + +},{}],11:[function(_dereq_,module,exports){ +/* + * JavaScript MD5 + * https://github.com/blueimp/JavaScript-MD5 + * + * Copyright 2011, Sebastian Tschan + * https://blueimp.net + * + * Licensed under the MIT license: + * https://opensource.org/licenses/MIT + * + * Based on + * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message + * Digest Algorithm, as defined in RFC 1321. + * Version 2.2 Copyright (C) Paul Johnston 1999 - 2009 + * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet + * Distributed under the BSD License + * See http://pajhome.org.uk/crypt/md5 for more info. + */ + +/* +* Add integers, wrapping at 2^32. This uses 16-bit operations internally +* to work around bugs in some JS interpreters. +*/ +function safeAdd(x, y) { + var lsw = (x & 0xffff) + (y & 0xffff); + var msw = (x >> 16) + (y >> 16) + (lsw >> 16); + return (msw << 16) | (lsw & 0xffff); +} + +/* +* Bitwise rotate a 32-bit number to the left. +*/ +function bitRotateLeft(num, cnt) { + return (num << cnt) | (num >>> (32 - cnt)); +} + +/* +* These functions implement the four basic operations the algorithm uses. +*/ +function md5cmn(q, a, b, x, s, t) { + return safeAdd(bitRotateLeft(safeAdd(safeAdd(a, q), safeAdd(x, t)), s), b); +} +function md5ff(a, b, c, d, x, s, t) { + return md5cmn((b & c) | (~b & d), a, b, x, s, t); +} +function md5gg(a, b, c, d, x, s, t) { + return md5cmn((b & d) | (c & ~d), a, b, x, s, t); +} +function md5hh(a, b, c, d, x, s, t) { + return md5cmn(b ^ c ^ d, a, b, x, s, t); +} +function md5ii(a, b, c, d, x, s, t) { + return md5cmn(c ^ (b | ~d), a, b, x, s, t); +} + +/* +* Calculate the MD5 of an array of little-endian words, and a bit length. +*/ +function binlMD5(x, len) { + /* append padding */ + x[len >> 5] |= 0x80 << (len % 32); + x[(((len + 64) >>> 9) << 4) + 14] = len; + + var i; + var olda; + var oldb; + var oldc; + var oldd; + var a = 1732584193; + var b = -271733879; + var c = -1732584194; + var d = 271733878; + + for (i = 0; i < x.length; i += 16) { + olda = a; + oldb = b; + oldc = c; + oldd = d; + + a = md5ff(a, b, c, d, x[i], 7, -680876936); + d = md5ff(d, a, b, c, x[i + 1], 12, -389564586); + c = md5ff(c, d, a, b, x[i + 2], 17, 606105819); + b = md5ff(b, c, d, a, x[i + 3], 22, -1044525330); + a = md5ff(a, b, c, d, x[i + 4], 7, -176418897); + d = md5ff(d, a, b, c, x[i + 5], 12, 1200080426); + c = md5ff(c, d, a, b, x[i + 6], 17, -1473231341); + b = md5ff(b, c, d, a, x[i + 7], 22, -45705983); + a = md5ff(a, b, c, d, x[i + 8], 7, 1770035416); + d = md5ff(d, a, b, c, x[i + 9], 12, -1958414417); + c = md5ff(c, d, a, b, x[i + 10], 17, -42063); + b = md5ff(b, c, d, a, x[i + 11], 22, -1990404162); + a = md5ff(a, b, c, d, x[i + 12], 7, 1804603682); + d = md5ff(d, a, b, c, x[i + 13], 12, -40341101); + c = md5ff(c, d, a, b, x[i + 14], 17, -1502002290); + b = md5ff(b, c, d, a, x[i + 15], 22, 1236535329); + + a = md5gg(a, b, c, d, x[i + 1], 5, -165796510); + d = md5gg(d, a, b, c, x[i + 6], 9, -1069501632); + c = md5gg(c, d, a, b, x[i + 11], 14, 643717713); + b = md5gg(b, c, d, a, x[i], 20, -373897302); + a = md5gg(a, b, c, d, x[i + 5], 5, -701558691); + d = md5gg(d, a, b, c, x[i + 10], 9, 38016083); + c = md5gg(c, d, a, b, x[i + 15], 14, -660478335); + b = md5gg(b, c, d, a, x[i + 4], 20, -405537848); + a = md5gg(a, b, c, d, x[i + 9], 5, 568446438); + d = md5gg(d, a, b, c, x[i + 14], 9, -1019803690); + c = md5gg(c, d, a, b, x[i + 3], 14, -187363961); + b = md5gg(b, c, d, a, x[i + 8], 20, 1163531501); + a = md5gg(a, b, c, d, x[i + 13], 5, -1444681467); + d = md5gg(d, a, b, c, x[i + 2], 9, -51403784); + c = md5gg(c, d, a, b, x[i + 7], 14, 1735328473); + b = md5gg(b, c, d, a, x[i + 12], 20, -1926607734); + + a = md5hh(a, b, c, d, x[i + 5], 4, -378558); + d = md5hh(d, a, b, c, x[i + 8], 11, -2022574463); + c = md5hh(c, d, a, b, x[i + 11], 16, 1839030562); + b = md5hh(b, c, d, a, x[i + 14], 23, -35309556); + a = md5hh(a, b, c, d, x[i + 1], 4, -1530992060); + d = md5hh(d, a, b, c, x[i + 4], 11, 1272893353); + c = md5hh(c, d, a, b, x[i + 7], 16, -155497632); + b = md5hh(b, c, d, a, x[i + 10], 23, -1094730640); + a = md5hh(a, b, c, d, x[i + 13], 4, 681279174); + d = md5hh(d, a, b, c, x[i], 11, -358537222); + c = md5hh(c, d, a, b, x[i + 3], 16, -722521979); + b = md5hh(b, c, d, a, x[i + 6], 23, 76029189); + a = md5hh(a, b, c, d, x[i + 9], 4, -640364487); + d = md5hh(d, a, b, c, x[i + 12], 11, -421815835); + c = md5hh(c, d, a, b, x[i + 15], 16, 530742520); + b = md5hh(b, c, d, a, x[i + 2], 23, -995338651); + + a = md5ii(a, b, c, d, x[i], 6, -198630844); + d = md5ii(d, a, b, c, x[i + 7], 10, 1126891415); + c = md5ii(c, d, a, b, x[i + 14], 15, -1416354905); + b = md5ii(b, c, d, a, x[i + 5], 21, -57434055); + a = md5ii(a, b, c, d, x[i + 12], 6, 1700485571); + d = md5ii(d, a, b, c, x[i + 3], 10, -1894986606); + c = md5ii(c, d, a, b, x[i + 10], 15, -1051523); + b = md5ii(b, c, d, a, x[i + 1], 21, -2054922799); + a = md5ii(a, b, c, d, x[i + 8], 6, 1873313359); + d = md5ii(d, a, b, c, x[i + 15], 10, -30611744); + c = md5ii(c, d, a, b, x[i + 6], 15, -1560198380); + b = md5ii(b, c, d, a, x[i + 13], 21, 1309151649); + a = md5ii(a, b, c, d, x[i + 4], 6, -145523070); + d = md5ii(d, a, b, c, x[i + 11], 10, -1120210379); + c = md5ii(c, d, a, b, x[i + 2], 15, 718787259); + b = md5ii(b, c, d, a, x[i + 9], 21, -343485551); + + a = safeAdd(a, olda); + b = safeAdd(b, oldb); + c = safeAdd(c, oldc); + d = safeAdd(d, oldd); + } + return [a, b, c, d]; +} + +/* +* Convert an array of little-endian words to a string +*/ +function binl2rstr(input) { + var i; + var output = ''; + var length32 = input.length * 32; + for (i = 0; i < length32; i += 8) { + output += String.fromCharCode((input[i >> 5] >>> (i % 32)) & 0xff); + } + return output; +} + +/* +* Convert a raw string to an array of little-endian words +* Characters >255 have their high-byte silently ignored. +*/ +function rstr2binl(input) { + var i; + var output = []; + output[(input.length >> 2) - 1] = undefined; + for (i = 0; i < output.length; i += 1) { + output[i] = 0; + } + var length8 = input.length * 8; + for (i = 0; i < length8; i += 8) { + output[i >> 5] |= (input.charCodeAt(i / 8) & 0xff) << (i % 32); + } + return output; +} + +/* +* Calculate the MD5 of a raw string +*/ +function rstrMD5(s) { + return binl2rstr(binlMD5(rstr2binl(s), s.length * 8)); +} + +/* +* Calculate the HMAC-MD5, of a key and some data (raw strings) +*/ +function rstrHMACMD5(key, data) { + var i; + var bkey = rstr2binl(key); + var ipad = []; + var opad = []; + var hash; + ipad[15] = opad[15] = undefined; + if (bkey.length > 16) { + bkey = binlMD5(bkey, key.length * 8); + } + for (i = 0; i < 16; i += 1) { + ipad[i] = bkey[i] ^ 0x36363636; + opad[i] = bkey[i] ^ 0x5c5c5c5c; + } + hash = binlMD5(ipad.concat(rstr2binl(data)), 512 + data.length * 8); + return binl2rstr(binlMD5(opad.concat(hash), 512 + 128)); +} + +/* +* Convert a raw string to a hex string +*/ +function rstr2hex(input) { + var hexTab = '0123456789abcdef'; + var output = ''; + var x; + var i; + for (i = 0; i < input.length; i += 1) { + x = input.charCodeAt(i); + output += hexTab.charAt((x >>> 4) & 0x0f) + hexTab.charAt(x & 0x0f); + } + return output; +} + +/* +* Encode a string as utf-8 +*/ +function str2rstrUTF8(input) { + return unescape(encodeURIComponent(input)); +} + +/* +* Take string arguments and return either raw or hex encoded strings +*/ +function rawMD5(s) { + return rstrMD5(str2rstrUTF8(s)); +} +function hexMD5(s) { + return rstr2hex(rawMD5(s)); +} +function rawHMACMD5(k, d) { + return rstrHMACMD5(str2rstrUTF8(k), str2rstrUTF8(d)); +} +function hexHMACMD5(k, d) { + return rstr2hex(rawHMACMD5(k, d)); +} + +function md5(string, key, raw) { + if (!key) { + if (!raw) { + return hexMD5(string); + } + return rawMD5(string); + } + if (!raw) { + return hexHMACMD5(key, string); + } + return rawHMACMD5(key, string); +} + +module.exports = md5; + +},{}]},{},[7,1,2,3])(7) +}); \ No newline at end of file diff --git a/packages/raven-js/dist/angular,console,require/raven.min.js b/packages/raven-js/dist/angular,console,require/raven.min.js new file mode 100644 index 000000000000..adc0e34af671 --- /dev/null +++ b/packages/raven-js/dist/angular,console,require/raven.min.js @@ -0,0 +1,4 @@ +/*! Raven.js 3.25.2 (30b6d4e) | github.com/getsentry/raven-js */ +!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.Raven=a()}}(function(){var a;return function b(a,c,d){function e(g,h){if(!c[g]){if(!a[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};a[g][0].call(k.exports,function(b){var c=a[g][1][b];return e(c?c:b)},k,k.exports,b,a,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;gthis.l.maxBreadcrumbs&&this.v.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.s.push([a,b]),this.o&&this.G(),this},setUserContext:function(a){return this.k.user=a,this},setExtraContext:function(a){return this.$("extra",a),this},setTagsContext:function(a){return this.$("tags",a),this},clearContext:function(){return this.k={},this},getContext:function(){return JSON.parse(h(this.k))},setEnvironment:function(a){return this.l.environment=a,this},setRelease:function(a){return this.l.release=a,this},setDataCallback:function(a){var b=this.l.dataCallback;return this.l.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.l.breadcrumbCallback;return this.l.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.l.shouldSendCallback;return this.l.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.l.transport=a,this},lastException:function(){return this.e},lastEventId:function(){return this.g},isSetup:function(){return!!this.b&&(!!this.h||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.A("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=R.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(S){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.I;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.k.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.K(this.H(c)),h=S.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(S.head||S.body).appendChild(h)}},M:function(){var a=this;this.n+=1,setTimeout(function(){a.n-=1})},_:function(a,b){var c,d;if(this.c){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),S.createEvent?(c=S.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=S.createEventObject(),c.eventType=a);for(d in b)A(b,d)&&(c[d]=b[d]);if(S.createEvent)S.dispatchEvent(c);else try{S.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},aa:function(a){var b=this;return function(c){if(b.ba=null,b.w!==c){b.w=c;var d;try{d=E(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ca:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.ba;g||a.aa("input")(c),clearTimeout(g),a.ba=setTimeout(function(){a.ba=null},b)}}},da:function(a,b){var c=H(this.x.href),d=H(b),e=H(a);this.y=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},D:function(){var a=this;a.ea=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.N?a.ea.apply(this.P,arguments):a.ea.apply(this,arguments)}},R:function(){this.ea&&(Function.prototype.toString=this.ea)},E:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.da(b.y,c+""),a.apply(this,arguments)}};I(R.history,"pushState",j,d),I(R.history,"replaceState",j,d)}if(c.console&&"console"in R&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};w(["debug","info","warn","error","log"],function(a,b){O(console,b,k)})}},S:function(){for(var a;this.u.length;){a=this.u.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},T:function(){for(var a in this.r)this.q[a]=this.r[a]},G:function(){var a=this;w(this.s,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},H:function(a){var b=Q.exec(a),c={},d=7;try{for(;d--;)c[P[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.l.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},K:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},B:function(){this.n||this.W.apply(this,arguments)},W:function(a,b){var c=this.Y(a,b);this._("handle",{stackInfo:a,options:b}),this.ga(a.name,a.message,a.url,a.lineno,c,b)},Y:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(w(a.stack,function(b,e){var f=c.ha(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.v,0)}),this.k.user&&(a.user=this.k.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),a=this.qa(a),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||v(a[b]))&&delete a[b]}),s(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!v(a)&&(!s(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.na()?void this.A("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function F(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&l(b))for(c=b.split(/\s+/),f=0;fc?Q(a,b-1):d}function R(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?X:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function S(a,b){function c(a){return m(a)?a.map(function(a){return c(a)}):k(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!m(b)||m(b)&&0===b.length)return a;var d,e=A(b),f="********";try{d=JSON.parse(T(a))}catch(g){return a}return c(d)}var T=a(10),U="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},V=3,W=51200,X=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isDOMError:g,isDOMException:h,isUndefined:i,isFunction:j,isPlainObject:k,isString:l,isArray:m,isEmptyObject:n,supportsErrorEvent:o,supportsDOMError:p,supportsDOMException:q,supportsFetch:r,supportsReferrerPolicy:s,supportsPromiseRejectionEvent:t,wrappedCallback:u,each:v,objectMerge:w,truncate:y,objectFrozen:x,hasKey:z,joinRegExp:A,urlencode:B,uuid4:D,htmlTreeAsString:E,htmlElementAsString:F,isSameException:I,isSameStacktrace:J,parseUrl:C,fill:K,safeJoin:L,serializeException:Q,serializeKeysForMessage:R,sanitize:S}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{10:10}],9:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}function e(){return"undefined"==typeof document||null==document.location?"":(document.location.origin||(document.location.origin=document.location.protocol+"//"+document.location.hostname+(document.location.port?":"+document.location.port:"")),document.location.origin)}var f=a(8),g={collectWindowErrors:!0,debug:!1},h="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},i=[].slice,j="?",k=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;g.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function e(a,b){var c=null;if(!b||g.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(i.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,h,i){var l=null,m=f.isErrorEvent(i)?i.error:i,n=f.isErrorEvent(a)?a.message:a;if(v)g.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&f.isError(m))l=g.computeStackTrace(m),e(l,!0);else{var p,r={url:b,line:c,column:h},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(k);p&&(s=p[1],n=p[2])}r.func=j,l={name:s,message:n,url:d(),stack:[r]},e(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=h.onerror,h.onerror=l,r=!0)}function n(){r&&(h.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,e.apply(null,[a,!1].concat(b))}function p(a,b){var c=i.call(arguments,1);if(v){if(u===a)return;o()}var d=g.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),g.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,f,g=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,h=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,i=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,k=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,l=/\((\S*)(?::(\d+))(?::(\d+))\)/,m=a.stack.split("\n"),n=[],o=(/^(.*) is undefined$/.exec(a.message),0),p=m.length;o eval")>-1;r&&(b=k.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==o||c[5]||"undefined"==typeof a.columnNumber||(n[0].column=a.columnNumber+1),f={url:c[3],func:c[1]||j,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}if(!f.func&&f.line&&(f.func=j),f.url&&"blob:"===f.url.substr(0,5)){var s=new XMLHttpRequest;if(s.open("GET",f.url,!1),s.send(null),200===s.status){var t=s.responseText||"";t=t.slice(-300);var u=t.match(/\/\/# sourceMappingURL=(.*)$/);if(u){var v=u[1];"~"===v.charAt(0)&&(v=e()+v.slice(1)),f.url=v.slice(0,-4)}}}n.push(f)}return n.length?{name:a.name, +message:a.message,url:d(),stack:n}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=j),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,e){for(var h,i,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==f&&o!==g.report){if(i={url:null,func:j,line:null,column:null},o.name?i.func=o.name:(h=k.exec(o.toString()))&&(i.func=h[1]),"undefined"==typeof i.func)try{i.func=h.input.substring(0,h.input.indexOf("{"))}catch(p){}m[""+o]?n=!0:m[""+o]=!0,l.push(i)}e&&l.splice(0,e);var q={name:a.name,message:a.message,url:d(),stack:l};return b(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),q}function f(b,e){var f=null;e=null==e?0:+e;try{if(f=a(b))return f}catch(h){if(g.debug)throw h}try{if(f=c(b,e+1))return f}catch(h){if(g.debug)throw h}return{name:b.name,message:b.message,url:d()}}return f.augmentStackTraceWithInitialElement=b,f.computeStackTraceFromStackProp=a,f}(),b.exports=g}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{8:8}],10:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}],11:[function(a,b,c){function d(a,b){var c=(65535&a)+(65535&b),d=(a>>16)+(b>>16)+(c>>16);return d<<16|65535&c}function e(a,b){return a<>>32-b}function f(a,b,c,f,g,h){return d(e(d(d(b,a),d(f,h)),g),c)}function g(a,b,c,d,e,g,h){return f(b&c|~b&d,a,b,e,g,h)}function h(a,b,c,d,e,g,h){return f(b&d|c&~d,a,b,e,g,h)}function i(a,b,c,d,e,g,h){return f(b^c^d,a,b,e,g,h)}function j(a,b,c,d,e,g,h){return f(c^(b|~d),a,b,e,g,h)}function k(a,b){a[b>>5]|=128<>>9<<4)+14]=b;var c,e,f,k,l,m=1732584193,n=-271733879,o=-1732584194,p=271733878;for(c=0;c>5]>>>b%32&255);return c}function m(a){var b,c=[];for(c[(a.length>>2)-1]=void 0,b=0;b>5]|=(255&a.charCodeAt(b/8))<16&&(e=k(e,8*a.length)),c=0;c<16;c+=1)f[c]=909522486^e[c],g[c]=1549556828^e[c];return d=k(f.concat(m(b)),512+8*b.length),l(k(g.concat(d),640))}function p(a){var b,c,d="0123456789abcdef",e="";for(c=0;c>>4&15)+d.charAt(15&b);return e}function q(a){return unescape(encodeURIComponent(a))}function r(a){return n(q(a))}function s(a){return p(r(a))}function t(a,b){return o(q(a),q(b))}function u(a,b){return p(t(a,b))}function v(a,b,c){return b?c?t(b,a):u(b,a):c?r(a):s(a)}b.exports=v},{}]},{},[7,1,2,3])(7)}); +//# sourceMappingURL=raven.min.js.map \ No newline at end of file diff --git a/packages/raven-js/dist/angular,console,require/raven.min.js.map b/packages/raven-js/dist/angular,console,require/raven.min.js.map new file mode 100644 index 000000000000..9a67103a716b --- /dev/null +++ b/packages/raven-js/dist/angular,console,require/raven.min.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","angularPlugin","angular","RavenProvider","$get","$window","ExceptionHandlerProvider","$provide","decorator","exceptionHandler","R","$delegate","ex","cause","captureException","extra","moduleName","provider","config","setDataCallback","wrappedCallback","data","_normalizeData","angularPattern","exception","values","matches","exec","value","type","message","angularDocs","substr","addPlugin","7","8","2","consolePlugin","console","pluginOptions","logLevels","levels","push","callback","msg","captureMessage","level","pop","wrapConsoleMethod","wrapMethod","5","3","requirePlugin","wrap","deep","4","RavenConfigError","name","prototype","constructor","utils","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","safeJoin","logger","Function","apply","6","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","sanitizeKeys","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isErrorEvent","isDOMError","isDOMException","isError","isObject","isPlainObject","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","sanitize","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","dsn","options","_logDebug","globalOptions","key","setDSN","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","toString","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","context","func","undefined","_before","wrapped","_ignoreNextOnError","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","U","event","reason","unhandledPromiseRejection","C","_promiseRejectionHandler","bind","addEventListener","Q","removeEventListener","trimHeadFrames","error","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","V","currentOptions","exKeys","Object","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","M","setTimeout","_","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","aa","evtName","_keypressTimeout","target","category","ca","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","da","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","D","_originalFunctionToString","E","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","F","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","S","builtin","T","G","installer","concat","H","str","m","allowSecretKey","K","port","B","W","stackInfo","_triggerEvent","_processException","lineno","Y","frame","_normalizeFrame","in_app","ha","stackInfoUrl","normalized","filename","line","colno","column","function","ga","prefixedMessage","transaction","ia","request","Referer","breadcrumbs","_trimBreadcrumbs","ja","urlProp","urlProps","ka","httpData","userAgent","User-Agent","referrer","z","_backoffDuration","_backoffStart","na","oa","current","last","pa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Z","baseData","project","platform","_getHttpData","serverName","server_name","_sanitizeData","forEach","random","_sendProcessedPayload","qa","sa","ra","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","ta","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","onerror","open","setRequestHeader","send","ua","hash","evaluated","A","$","setUser","setReleaseContext","10","11","9","RavenConstructor","_Raven","noConflict","Client","what","supportsErrorEvent","ErrorEvent","supportsDOMError","DOMError","supportsDOMException","DOMException","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","sanitizeMask","safeInput","o_O","getLocationHref","getLocationOrigin","origin","hostname","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","responseText","sourceMaps","sourceMapAddress","charAt","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","y","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","string","raw"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file diff --git a/packages/raven-js/dist/angular,console,vue/raven.js b/packages/raven-js/dist/angular,console,vue/raven.js new file mode 100644 index 000000000000..5dd6314684e9 --- /dev/null +++ b/packages/raven-js/dist/angular,console,vue/raven.js @@ -0,0 +1,4172 @@ +/*! Raven.js 3.25.2 (30b6d4e) | github.com/getsentry/raven-js */ + +/* + * Includes TraceKit + * https://github.com/getsentry/TraceKit + * + * Copyright 2018 Matt Robenolt and other contributors + * Released under the BSD license + * https://github.com/getsentry/raven-js/blob/master/LICENSE + * + */ + +(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.Raven = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o' : 'anonymous component') + + (vm._isVue && vm.$options.__file ? ' at ' + vm.$options.__file : '') + ); +} + +function vuePlugin(Raven, Vue) { + Vue = Vue || window.Vue; + + // quit if Vue isn't on the page + if (!Vue || !Vue.config) return; + + var _oldOnError = Vue.config.errorHandler; + Vue.config.errorHandler = function VueErrorHandler(error, vm, info) { + var metaData = {}; + + // vm and lifecycleHook are not always available + if (Object.prototype.toString.call(vm) === '[object Object]') { + metaData.componentName = formatComponentName(vm); + metaData.propsData = vm.$options.propsData; + } + + if (typeof info !== 'undefined') { + metaData.lifecycleHook = info; + } + + Raven.captureException(error, { + extra: metaData + }); + + if (typeof _oldOnError === 'function') { + _oldOnError.call(this, error, vm, info); + } + }; +} + +module.exports = vuePlugin; + +_dereq_(7).addPlugin(module.exports); +},{"7":7}],4:[function(_dereq_,module,exports){ +function RavenConfigError(message) { + this.name = 'RavenConfigError'; + this.message = message; +} +RavenConfigError.prototype = new Error(); +RavenConfigError.prototype.constructor = RavenConfigError; + +module.exports = RavenConfigError; + +},{}],5:[function(_dereq_,module,exports){ +var utils = _dereq_(8); + +var wrapMethod = function(console, level, callback) { + var originalConsoleLevel = console[level]; + var originalConsole = console; + + if (!(level in console)) { + return; + } + + var sentryLevel = level === 'warn' ? 'warning' : level; + + console[level] = function() { + var args = [].slice.call(arguments); + + var msg = utils.safeJoin(args, ' '); + var data = {level: sentryLevel, logger: 'console', extra: {arguments: args}}; + + if (level === 'assert') { + if (args[0] === false) { + // Default browsers message + msg = + 'Assertion failed: ' + (utils.safeJoin(args.slice(1), ' ') || 'console.assert'); + data.extra.arguments = args.slice(1); + callback && callback(msg, data); + } + } else { + callback && callback(msg, data); + } + + // this fails for some browsers. :( + if (originalConsoleLevel) { + // IE9 doesn't allow calling apply on console functions directly + // See: https://stackoverflow.com/questions/5472938/does-ie9-support-console-log-and-is-it-a-real-function#answer-5473193 + Function.prototype.apply.call(originalConsoleLevel, originalConsole, args); + } + }; +}; + +module.exports = { + wrapMethod: wrapMethod +}; + +},{"8":8}],6:[function(_dereq_,module,exports){ +(function (global){ +/*global XDomainRequest:false */ + +var TraceKit = _dereq_(9); +var stringify = _dereq_(10); +var md5 = _dereq_(11); +var RavenConfigError = _dereq_(4); + +var utils = _dereq_(8); +var isErrorEvent = utils.isErrorEvent; +var isDOMError = utils.isDOMError; +var isDOMException = utils.isDOMException; +var isError = utils.isError; +var isObject = utils.isObject; +var isPlainObject = utils.isPlainObject; +var isUndefined = utils.isUndefined; +var isFunction = utils.isFunction; +var isString = utils.isString; +var isArray = utils.isArray; +var isEmptyObject = utils.isEmptyObject; +var each = utils.each; +var objectMerge = utils.objectMerge; +var truncate = utils.truncate; +var objectFrozen = utils.objectFrozen; +var hasKey = utils.hasKey; +var joinRegExp = utils.joinRegExp; +var urlencode = utils.urlencode; +var uuid4 = utils.uuid4; +var htmlTreeAsString = utils.htmlTreeAsString; +var isSameException = utils.isSameException; +var isSameStacktrace = utils.isSameStacktrace; +var parseUrl = utils.parseUrl; +var fill = utils.fill; +var supportsFetch = utils.supportsFetch; +var supportsReferrerPolicy = utils.supportsReferrerPolicy; +var serializeKeysForMessage = utils.serializeKeysForMessage; +var serializeException = utils.serializeException; +var sanitize = utils.sanitize; + +var wrapConsoleMethod = _dereq_(5).wrapMethod; + +var dsnKeys = 'source protocol user pass host port path'.split(' '), + dsnPattern = /^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/; + +function now() { + return +new Date(); +} + +// This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) +var _window = + typeof window !== 'undefined' + ? window + : typeof global !== 'undefined' + ? global + : typeof self !== 'undefined' + ? self + : {}; +var _document = _window.document; +var _navigator = _window.navigator; + +function keepOriginalCallback(original, callback) { + return isFunction(callback) + ? function(data) { + return callback(data, original); + } + : callback; +} + +// First, check for JSON support +// If there is no JSON, we no-op the core features of Raven +// since JSON is required to encode the payload +function Raven() { + this._hasJSON = !!(typeof JSON === 'object' && JSON.stringify); + // Raven can run in contexts where there's no document (react-native) + this._hasDocument = !isUndefined(_document); + this._hasNavigator = !isUndefined(_navigator); + this._lastCapturedException = null; + this._lastData = null; + this._lastEventId = null; + this._globalServer = null; + this._globalKey = null; + this._globalProject = null; + this._globalContext = {}; + this._globalOptions = { + // SENTRY_RELEASE can be injected by https://github.com/getsentry/sentry-webpack-plugin + release: _window.SENTRY_RELEASE && _window.SENTRY_RELEASE.id, + logger: 'javascript', + ignoreErrors: [], + ignoreUrls: [], + whitelistUrls: [], + includePaths: [], + headers: null, + collectWindowErrors: true, + captureUnhandledRejections: true, + maxMessageLength: 0, + // By default, truncates URL values to 250 chars + maxUrlLength: 250, + stackTraceLimit: 50, + autoBreadcrumbs: true, + instrument: true, + sampleRate: 1, + sanitizeKeys: [] + }; + this._fetchDefaults = { + method: 'POST', + keepalive: true, + // Despite all stars in the sky saying that Edge supports old draft syntax, aka 'never', 'always', 'origin' and 'default + // https://caniuse.com/#feat=referrer-policy + // It doesn't. And it throw exception instead of ignoring this parameter... + // REF: https://github.com/getsentry/raven-js/issues/1233 + referrerPolicy: supportsReferrerPolicy() ? 'origin' : '' + }; + this._ignoreOnError = 0; + this._isRavenInstalled = false; + this._originalErrorStackTraceLimit = Error.stackTraceLimit; + // capture references to window.console *and* all its methods first + // before the console plugin has a chance to monkey patch + this._originalConsole = _window.console || {}; + this._originalConsoleMethods = {}; + this._plugins = []; + this._startTime = now(); + this._wrappedBuiltIns = []; + this._breadcrumbs = []; + this._lastCapturedEvent = null; + this._keypressTimeout; + this._location = _window.location; + this._lastHref = this._location && this._location.href; + this._resetBackoff(); + + // eslint-disable-next-line guard-for-in + for (var method in this._originalConsole) { + this._originalConsoleMethods[method] = this._originalConsole[method]; + } +} + +/* + * The core Raven singleton + * + * @this {Raven} + */ + +Raven.prototype = { + // Hardcode version string so that raven source can be loaded directly via + // webpack (using a build step causes webpack #1617). Grunt verifies that + // this value matches package.json during build. + // See: https://github.com/getsentry/raven-js/issues/465 + VERSION: '3.25.2', + + debug: false, + + TraceKit: TraceKit, // alias to TraceKit + + /* + * Configure Raven with a DSN and extra options + * + * @param {string} dsn The public Sentry DSN + * @param {object} options Set of global options [optional] + * @return {Raven} + */ + config: function(dsn, options) { + var self = this; + + if (self._globalServer) { + this._logDebug('error', 'Error: Raven has already been configured'); + return self; + } + if (!dsn) return self; + + var globalOptions = self._globalOptions; + + // merge in options + if (options) { + each(options, function(key, value) { + // tags and extra are special and need to be put into context + if (key === 'tags' || key === 'extra' || key === 'user') { + self._globalContext[key] = value; + } else { + globalOptions[key] = value; + } + }); + } + + self.setDSN(dsn); + + // "Script error." is hard coded into browsers for errors that it can't read. + // this is the result of a script being pulled in from an external domain and CORS. + globalOptions.ignoreErrors.push(/^Script error\.?$/); + globalOptions.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/); + + // join regexp rules into one big rule + globalOptions.ignoreErrors = joinRegExp(globalOptions.ignoreErrors); + globalOptions.ignoreUrls = globalOptions.ignoreUrls.length + ? joinRegExp(globalOptions.ignoreUrls) + : false; + globalOptions.whitelistUrls = globalOptions.whitelistUrls.length + ? joinRegExp(globalOptions.whitelistUrls) + : false; + globalOptions.includePaths = joinRegExp(globalOptions.includePaths); + globalOptions.maxBreadcrumbs = Math.max( + 0, + Math.min(globalOptions.maxBreadcrumbs || 100, 100) + ); // default and hard limit is 100 + + var autoBreadcrumbDefaults = { + xhr: true, + console: true, + dom: true, + location: true, + sentry: true + }; + + var autoBreadcrumbs = globalOptions.autoBreadcrumbs; + if ({}.toString.call(autoBreadcrumbs) === '[object Object]') { + autoBreadcrumbs = objectMerge(autoBreadcrumbDefaults, autoBreadcrumbs); + } else if (autoBreadcrumbs !== false) { + autoBreadcrumbs = autoBreadcrumbDefaults; + } + globalOptions.autoBreadcrumbs = autoBreadcrumbs; + + var instrumentDefaults = { + tryCatch: true + }; + + var instrument = globalOptions.instrument; + if ({}.toString.call(instrument) === '[object Object]') { + instrument = objectMerge(instrumentDefaults, instrument); + } else if (instrument !== false) { + instrument = instrumentDefaults; + } + globalOptions.instrument = instrument; + + TraceKit.collectWindowErrors = !!globalOptions.collectWindowErrors; + + // return for chaining + return self; + }, + + /* + * Installs a global window.onerror error handler + * to capture and report uncaught exceptions. + * At this point, install() is required to be called due + * to the way TraceKit is set up. + * + * @return {Raven} + */ + install: function() { + var self = this; + if (self.isSetup() && !self._isRavenInstalled) { + TraceKit.report.subscribe(function() { + self._handleOnErrorStackInfo.apply(self, arguments); + }); + + if (self._globalOptions.captureUnhandledRejections) { + self._attachPromiseRejectionHandler(); + } + + self._patchFunctionToString(); + + if (self._globalOptions.instrument && self._globalOptions.instrument.tryCatch) { + self._instrumentTryCatch(); + } + + if (self._globalOptions.autoBreadcrumbs) self._instrumentBreadcrumbs(); + + // Install all of the plugins + self._drainPlugins(); + + self._isRavenInstalled = true; + } + + Error.stackTraceLimit = self._globalOptions.stackTraceLimit; + return this; + }, + + /* + * Set the DSN (can be called multiple time unlike config) + * + * @param {string} dsn The public Sentry DSN + */ + setDSN: function(dsn) { + var self = this, + uri = self._parseDSN(dsn), + lastSlash = uri.path.lastIndexOf('/'), + path = uri.path.substr(1, lastSlash); + + self._dsn = dsn; + self._globalKey = uri.user; + self._globalSecret = uri.pass && uri.pass.substr(1); + self._globalProject = uri.path.substr(lastSlash + 1); + + self._globalServer = self._getGlobalServer(uri); + + self._globalEndpoint = + self._globalServer + '/' + path + 'api/' + self._globalProject + '/store/'; + + // Reset backoff state since we may be pointing at a + // new project/server + this._resetBackoff(); + }, + + /* + * Wrap code within a context so Raven can capture errors + * reliably across domains that is executed immediately. + * + * @param {object} options A specific set of options for this context [optional] + * @param {function} func The callback to be immediately executed within the context + * @param {array} args An array of arguments to be called with the callback [optional] + */ + context: function(options, func, args) { + if (isFunction(options)) { + args = func || []; + func = options; + options = undefined; + } + + return this.wrap(options, func).apply(this, args); + }, + + /* + * Wrap code within a context and returns back a new function to be executed + * + * @param {object} options A specific set of options for this context [optional] + * @param {function} func The function to be wrapped in a new context + * @param {function} func A function to call before the try/catch wrapper [optional, private] + * @return {function} The newly wrapped functions with a context + */ + wrap: function(options, func, _before) { + var self = this; + // 1 argument has been passed, and it's not a function + // so just return it + if (isUndefined(func) && !isFunction(options)) { + return options; + } + + // options is optional + if (isFunction(options)) { + func = options; + options = undefined; + } + + // At this point, we've passed along 2 arguments, and the second one + // is not a function either, so we'll just return the second argument. + if (!isFunction(func)) { + return func; + } + + // We don't wanna wrap it twice! + try { + if (func.__raven__) { + return func; + } + + // If this has already been wrapped in the past, return that + if (func.__raven_wrapper__) { + return func.__raven_wrapper__; + } + } catch (e) { + // Just accessing custom props in some Selenium environments + // can cause a "Permission denied" exception (see raven-js#495). + // Bail on wrapping and return the function as-is (defers to window.onerror). + return func; + } + + function wrapped() { + var args = [], + i = arguments.length, + deep = !options || (options && options.deep !== false); + + if (_before && isFunction(_before)) { + _before.apply(this, arguments); + } + + // Recursively wrap all of a function's arguments that are + // functions themselves. + while (i--) args[i] = deep ? self.wrap(options, arguments[i]) : arguments[i]; + + try { + // Attempt to invoke user-land function + // NOTE: If you are a Sentry user, and you are seeing this stack frame, it + // means Raven caught an error invoking your application code. This is + // expected behavior and NOT indicative of a bug with Raven.js. + return func.apply(this, args); + } catch (e) { + self._ignoreNextOnError(); + self.captureException(e, options); + throw e; + } + } + + // copy over properties of the old function + for (var property in func) { + if (hasKey(func, property)) { + wrapped[property] = func[property]; + } + } + wrapped.prototype = func.prototype; + + func.__raven_wrapper__ = wrapped; + // Signal that this function has been wrapped/filled already + // for both debugging and to prevent it to being wrapped/filled twice + wrapped.__raven__ = true; + wrapped.__orig__ = func; + + return wrapped; + }, + + /** + * Uninstalls the global error handler. + * + * @return {Raven} + */ + uninstall: function() { + TraceKit.report.uninstall(); + + this._detachPromiseRejectionHandler(); + this._unpatchFunctionToString(); + this._restoreBuiltIns(); + this._restoreConsole(); + + Error.stackTraceLimit = this._originalErrorStackTraceLimit; + this._isRavenInstalled = false; + + return this; + }, + + /** + * Callback used for `unhandledrejection` event + * + * @param {PromiseRejectionEvent} event An object containing + * promise: the Promise that was rejected + * reason: the value with which the Promise was rejected + * @return void + */ + _promiseRejectionHandler: function(event) { + this._logDebug('debug', 'Raven caught unhandled promise rejection:', event); + this.captureException(event.reason, { + extra: { + unhandledPromiseRejection: true + } + }); + }, + + /** + * Installs the global promise rejection handler. + * + * @return {raven} + */ + _attachPromiseRejectionHandler: function() { + this._promiseRejectionHandler = this._promiseRejectionHandler.bind(this); + _window.addEventListener && + _window.addEventListener('unhandledrejection', this._promiseRejectionHandler); + return this; + }, + + /** + * Uninstalls the global promise rejection handler. + * + * @return {raven} + */ + _detachPromiseRejectionHandler: function() { + _window.removeEventListener && + _window.removeEventListener('unhandledrejection', this._promiseRejectionHandler); + return this; + }, + + /** + * Manually capture an exception and send it over to Sentry + * + * @param {error} ex An exception to be logged + * @param {object} options A specific set of options for this error [optional] + * @return {Raven} + */ + captureException: function(ex, options) { + options = objectMerge({trimHeadFrames: 0}, options ? options : {}); + + if (isErrorEvent(ex) && ex.error) { + // If it is an ErrorEvent with `error` property, extract it to get actual Error + ex = ex.error; + } else if (isDOMError(ex) || isDOMException(ex)) { + // If it is a DOMError or DOMException (which are legacy APIs, but still supported in some browsers) + // then we just extract the name and message, as they don't provide anything else + // https://developer.mozilla.org/en-US/docs/Web/API/DOMError + // https://developer.mozilla.org/en-US/docs/Web/API/DOMException + var name = ex.name || (isDOMError(ex) ? 'DOMError' : 'DOMException'); + var message = ex.message ? name + ': ' + ex.message : name; + + return this.captureMessage( + message, + objectMerge(options, { + // neither DOMError or DOMException provide stack trace and we most likely wont get it this way as well + // but it's barely any overhead so we may at least try + stacktrace: true, + trimHeadFrames: options.trimHeadFrames + 1 + }) + ); + } else if (isError(ex)) { + // we have a real Error object + ex = ex; + } else if (isPlainObject(ex)) { + // If it is plain Object, serialize it manually and extract options + // This will allow us to group events based on top-level keys + // which is much better than creating new group when any key/value change + options = this._getCaptureExceptionOptionsFromPlainObject(options, ex); + ex = new Error(options.message); + } else { + // If none of previous checks were valid, then it means that + // it's not a DOMError/DOMException + // it's not a plain Object + // it's not a valid ErrorEvent (one with an error property) + // it's not an Error + // So bail out and capture it as a simple message: + return this.captureMessage( + ex, + objectMerge(options, { + stacktrace: true, // if we fall back to captureMessage, default to attempting a new trace + trimHeadFrames: options.trimHeadFrames + 1 + }) + ); + } + + // Store the raw exception object for potential debugging and introspection + this._lastCapturedException = ex; + + // TraceKit.report will re-raise any exception passed to it, + // which means you have to wrap it in try/catch. Instead, we + // can wrap it here and only re-raise if TraceKit.report + // raises an exception different from the one we asked to + // report on. + try { + var stack = TraceKit.computeStackTrace(ex); + this._handleStackInfo(stack, options); + } catch (ex1) { + if (ex !== ex1) { + throw ex1; + } + } + + return this; + }, + + _getCaptureExceptionOptionsFromPlainObject: function(currentOptions, ex) { + var exKeys = Object.keys(ex).sort(); + var options = objectMerge(currentOptions, { + message: + 'Non-Error exception captured with keys: ' + serializeKeysForMessage(exKeys), + fingerprint: [md5(exKeys)], + extra: currentOptions.extra || {} + }); + options.extra.__serialized__ = serializeException(ex); + + return options; + }, + + /* + * Manually send a message to Sentry + * + * @param {string} msg A plain message to be captured in Sentry + * @param {object} options A specific set of options for this message [optional] + * @return {Raven} + */ + captureMessage: function(msg, options) { + // config() automagically converts ignoreErrors from a list to a RegExp so we need to test for an + // early call; we'll error on the side of logging anything called before configuration since it's + // probably something you should see: + if ( + !!this._globalOptions.ignoreErrors.test && + this._globalOptions.ignoreErrors.test(msg) + ) { + return; + } + + options = options || {}; + msg = msg + ''; // Make sure it's actually a string + + var data = objectMerge( + { + message: msg + }, + options + ); + + var ex; + // Generate a "synthetic" stack trace from this point. + // NOTE: If you are a Sentry user, and you are seeing this stack frame, it is NOT indicative + // of a bug with Raven.js. Sentry generates synthetic traces either by configuration, + // or if it catches a thrown object without a "stack" property. + try { + throw new Error(msg); + } catch (ex1) { + ex = ex1; + } + + // null exception name so `Error` isn't prefixed to msg + ex.name = null; + var stack = TraceKit.computeStackTrace(ex); + + // stack[0] is `throw new Error(msg)` call itself, we are interested in the frame that was just before that, stack[1] + var initialCall = isArray(stack.stack) && stack.stack[1]; + + // if stack[1] is `Raven.captureException`, it means that someone passed a string to it and we redirected that call + // to be handled by `captureMessage`, thus `initialCall` is the 3rd one, not 2nd + // initialCall => captureException(string) => captureMessage(string) + if (initialCall && initialCall.func === 'Raven.captureException') { + initialCall = stack.stack[2]; + } + + var fileurl = (initialCall && initialCall.url) || ''; + + if ( + !!this._globalOptions.ignoreUrls.test && + this._globalOptions.ignoreUrls.test(fileurl) + ) { + return; + } + + if ( + !!this._globalOptions.whitelistUrls.test && + !this._globalOptions.whitelistUrls.test(fileurl) + ) { + return; + } + + if (this._globalOptions.stacktrace || (options && options.stacktrace)) { + // fingerprint on msg, not stack trace (legacy behavior, could be revisited) + data.fingerprint = data.fingerprint == null ? msg : data.fingerprint; + + options = objectMerge( + { + trimHeadFrames: 0 + }, + options + ); + // Since we know this is a synthetic trace, the top frame (this function call) + // MUST be from Raven.js, so mark it for trimming + // We add to the trim counter so that callers can choose to trim extra frames, such + // as utility functions. + options.trimHeadFrames += 1; + + var frames = this._prepareFrames(stack, options); + data.stacktrace = { + // Sentry expects frames oldest to newest + frames: frames.reverse() + }; + } + + // Make sure that fingerprint is always wrapped in an array + if (data.fingerprint) { + data.fingerprint = isArray(data.fingerprint) + ? data.fingerprint + : [data.fingerprint]; + } + + // Fire away! + this._send(data); + + return this; + }, + + captureBreadcrumb: function(obj) { + var crumb = objectMerge( + { + timestamp: now() / 1000 + }, + obj + ); + + if (isFunction(this._globalOptions.breadcrumbCallback)) { + var result = this._globalOptions.breadcrumbCallback(crumb); + + if (isObject(result) && !isEmptyObject(result)) { + crumb = result; + } else if (result === false) { + return this; + } + } + + this._breadcrumbs.push(crumb); + if (this._breadcrumbs.length > this._globalOptions.maxBreadcrumbs) { + this._breadcrumbs.shift(); + } + return this; + }, + + addPlugin: function(plugin /*arg1, arg2, ... argN*/) { + var pluginArgs = [].slice.call(arguments, 1); + + this._plugins.push([plugin, pluginArgs]); + if (this._isRavenInstalled) { + this._drainPlugins(); + } + + return this; + }, + + /* + * Set/clear a user to be sent along with the payload. + * + * @param {object} user An object representing user data [optional] + * @return {Raven} + */ + setUserContext: function(user) { + // Intentionally do not merge here since that's an unexpected behavior. + this._globalContext.user = user; + + return this; + }, + + /* + * Merge extra attributes to be sent along with the payload. + * + * @param {object} extra An object representing extra data [optional] + * @return {Raven} + */ + setExtraContext: function(extra) { + this._mergeContext('extra', extra); + + return this; + }, + + /* + * Merge tags to be sent along with the payload. + * + * @param {object} tags An object representing tags [optional] + * @return {Raven} + */ + setTagsContext: function(tags) { + this._mergeContext('tags', tags); + + return this; + }, + + /* + * Clear all of the context. + * + * @return {Raven} + */ + clearContext: function() { + this._globalContext = {}; + + return this; + }, + + /* + * Get a copy of the current context. This cannot be mutated. + * + * @return {object} copy of context + */ + getContext: function() { + // lol javascript + return JSON.parse(stringify(this._globalContext)); + }, + + /* + * Set environment of application + * + * @param {string} environment Typically something like 'production'. + * @return {Raven} + */ + setEnvironment: function(environment) { + this._globalOptions.environment = environment; + + return this; + }, + + /* + * Set release version of application + * + * @param {string} release Typically something like a git SHA to identify version + * @return {Raven} + */ + setRelease: function(release) { + this._globalOptions.release = release; + + return this; + }, + + /* + * Set the dataCallback option + * + * @param {function} callback The callback to run which allows the + * data blob to be mutated before sending + * @return {Raven} + */ + setDataCallback: function(callback) { + var original = this._globalOptions.dataCallback; + this._globalOptions.dataCallback = keepOriginalCallback(original, callback); + return this; + }, + + /* + * Set the breadcrumbCallback option + * + * @param {function} callback The callback to run which allows filtering + * or mutating breadcrumbs + * @return {Raven} + */ + setBreadcrumbCallback: function(callback) { + var original = this._globalOptions.breadcrumbCallback; + this._globalOptions.breadcrumbCallback = keepOriginalCallback(original, callback); + return this; + }, + + /* + * Set the shouldSendCallback option + * + * @param {function} callback The callback to run which allows + * introspecting the blob before sending + * @return {Raven} + */ + setShouldSendCallback: function(callback) { + var original = this._globalOptions.shouldSendCallback; + this._globalOptions.shouldSendCallback = keepOriginalCallback(original, callback); + return this; + }, + + /** + * Override the default HTTP transport mechanism that transmits data + * to the Sentry server. + * + * @param {function} transport Function invoked instead of the default + * `makeRequest` handler. + * + * @return {Raven} + */ + setTransport: function(transport) { + this._globalOptions.transport = transport; + + return this; + }, + + /* + * Get the latest raw exception that was captured by Raven. + * + * @return {error} + */ + lastException: function() { + return this._lastCapturedException; + }, + + /* + * Get the last event id + * + * @return {string} + */ + lastEventId: function() { + return this._lastEventId; + }, + + /* + * Determine if Raven is setup and ready to go. + * + * @return {boolean} + */ + isSetup: function() { + if (!this._hasJSON) return false; // needs JSON support + if (!this._globalServer) { + if (!this.ravenNotConfiguredError) { + this.ravenNotConfiguredError = true; + this._logDebug('error', 'Error: Raven has not been configured.'); + } + return false; + } + return true; + }, + + afterLoad: function() { + // TODO: remove window dependence? + + // Attempt to initialize Raven on load + var RavenConfig = _window.RavenConfig; + if (RavenConfig) { + this.config(RavenConfig.dsn, RavenConfig.config).install(); + } + }, + + showReportDialog: function(options) { + if ( + !_document // doesn't work without a document (React native) + ) + return; + + options = options || {}; + + var lastEventId = options.eventId || this.lastEventId(); + if (!lastEventId) { + throw new RavenConfigError('Missing eventId'); + } + + var dsn = options.dsn || this._dsn; + if (!dsn) { + throw new RavenConfigError('Missing DSN'); + } + + var encode = encodeURIComponent; + var qs = ''; + qs += '?eventId=' + encode(lastEventId); + qs += '&dsn=' + encode(dsn); + + var user = options.user || this._globalContext.user; + if (user) { + if (user.name) qs += '&name=' + encode(user.name); + if (user.email) qs += '&email=' + encode(user.email); + } + + var globalServer = this._getGlobalServer(this._parseDSN(dsn)); + + var script = _document.createElement('script'); + script.async = true; + script.src = globalServer + '/api/embed/error-page/' + qs; + (_document.head || _document.body).appendChild(script); + }, + + /**** Private functions ****/ + _ignoreNextOnError: function() { + var self = this; + this._ignoreOnError += 1; + setTimeout(function() { + // onerror should trigger before setTimeout + self._ignoreOnError -= 1; + }); + }, + + _triggerEvent: function(eventType, options) { + // NOTE: `event` is a native browser thing, so let's avoid conflicting wiht it + var evt, key; + + if (!this._hasDocument) return; + + options = options || {}; + + eventType = 'raven' + eventType.substr(0, 1).toUpperCase() + eventType.substr(1); + + if (_document.createEvent) { + evt = _document.createEvent('HTMLEvents'); + evt.initEvent(eventType, true, true); + } else { + evt = _document.createEventObject(); + evt.eventType = eventType; + } + + for (key in options) + if (hasKey(options, key)) { + evt[key] = options[key]; + } + + if (_document.createEvent) { + // IE9 if standards + _document.dispatchEvent(evt); + } else { + // IE8 regardless of Quirks or Standards + // IE9 if quirks + try { + _document.fireEvent('on' + evt.eventType.toLowerCase(), evt); + } catch (e) { + // Do nothing + } + } + }, + + /** + * Wraps addEventListener to capture UI breadcrumbs + * @param evtName the event name (e.g. "click") + * @returns {Function} + * @private + */ + _breadcrumbEventHandler: function(evtName) { + var self = this; + return function(evt) { + // reset keypress timeout; e.g. triggering a 'click' after + // a 'keypress' will reset the keypress debounce so that a new + // set of keypresses can be recorded + self._keypressTimeout = null; + + // It's possible this handler might trigger multiple times for the same + // event (e.g. event propagation through node ancestors). Ignore if we've + // already captured the event. + if (self._lastCapturedEvent === evt) return; + + self._lastCapturedEvent = evt; + + // try/catch both: + // - accessing evt.target (see getsentry/raven-js#838, #768) + // - `htmlTreeAsString` because it's complex, and just accessing the DOM incorrectly + // can throw an exception in some circumstances. + var target; + try { + target = htmlTreeAsString(evt.target); + } catch (e) { + target = ''; + } + + self.captureBreadcrumb({ + category: 'ui.' + evtName, // e.g. ui.click, ui.input + message: target + }); + }; + }, + + /** + * Wraps addEventListener to capture keypress UI events + * @returns {Function} + * @private + */ + _keypressEventHandler: function() { + var self = this, + debounceDuration = 1000; // milliseconds + + // TODO: if somehow user switches keypress target before + // debounce timeout is triggered, we will only capture + // a single breadcrumb from the FIRST target (acceptable?) + return function(evt) { + var target; + try { + target = evt.target; + } catch (e) { + // just accessing event properties can throw an exception in some rare circumstances + // see: https://github.com/getsentry/raven-js/issues/838 + return; + } + var tagName = target && target.tagName; + + // only consider keypress events on actual input elements + // this will disregard keypresses targeting body (e.g. tabbing + // through elements, hotkeys, etc) + if ( + !tagName || + (tagName !== 'INPUT' && tagName !== 'TEXTAREA' && !target.isContentEditable) + ) + return; + + // record first keypress in a series, but ignore subsequent + // keypresses until debounce clears + var timeout = self._keypressTimeout; + if (!timeout) { + self._breadcrumbEventHandler('input')(evt); + } + clearTimeout(timeout); + self._keypressTimeout = setTimeout(function() { + self._keypressTimeout = null; + }, debounceDuration); + }; + }, + + /** + * Captures a breadcrumb of type "navigation", normalizing input URLs + * @param to the originating URL + * @param from the target URL + * @private + */ + _captureUrlChange: function(from, to) { + var parsedLoc = parseUrl(this._location.href); + var parsedTo = parseUrl(to); + var parsedFrom = parseUrl(from); + + // because onpopstate only tells you the "new" (to) value of location.href, and + // not the previous (from) value, we need to track the value of the current URL + // state ourselves + this._lastHref = to; + + // Use only the path component of the URL if the URL matches the current + // document (almost all the time when using pushState) + if (parsedLoc.protocol === parsedTo.protocol && parsedLoc.host === parsedTo.host) + to = parsedTo.relative; + if (parsedLoc.protocol === parsedFrom.protocol && parsedLoc.host === parsedFrom.host) + from = parsedFrom.relative; + + this.captureBreadcrumb({ + category: 'navigation', + data: { + to: to, + from: from + } + }); + }, + + _patchFunctionToString: function() { + var self = this; + self._originalFunctionToString = Function.prototype.toString; + // eslint-disable-next-line no-extend-native + Function.prototype.toString = function() { + if (typeof this === 'function' && this.__raven__) { + return self._originalFunctionToString.apply(this.__orig__, arguments); + } + return self._originalFunctionToString.apply(this, arguments); + }; + }, + + _unpatchFunctionToString: function() { + if (this._originalFunctionToString) { + // eslint-disable-next-line no-extend-native + Function.prototype.toString = this._originalFunctionToString; + } + }, + + /** + * Wrap timer functions and event targets to catch errors and provide + * better metadata. + */ + _instrumentTryCatch: function() { + var self = this; + + var wrappedBuiltIns = self._wrappedBuiltIns; + + function wrapTimeFn(orig) { + return function(fn, t) { + // preserve arity + // Make a copy of the arguments to prevent deoptimization + // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments + var args = new Array(arguments.length); + for (var i = 0; i < args.length; ++i) { + args[i] = arguments[i]; + } + var originalCallback = args[0]; + if (isFunction(originalCallback)) { + args[0] = self.wrap(originalCallback); + } + + // IE < 9 doesn't support .call/.apply on setInterval/setTimeout, but it + // also supports only two arguments and doesn't care what this is, so we + // can just call the original function directly. + if (orig.apply) { + return orig.apply(this, args); + } else { + return orig(args[0], args[1]); + } + }; + } + + var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; + + function wrapEventTarget(global) { + var proto = _window[global] && _window[global].prototype; + if (proto && proto.hasOwnProperty && proto.hasOwnProperty('addEventListener')) { + fill( + proto, + 'addEventListener', + function(orig) { + return function(evtName, fn, capture, secure) { + // preserve arity + try { + if (fn && fn.handleEvent) { + fn.handleEvent = self.wrap(fn.handleEvent); + } + } catch (err) { + // can sometimes get 'Permission denied to access property "handle Event' + } + + // More breadcrumb DOM capture ... done here and not in `_instrumentBreadcrumbs` + // so that we don't have more than one wrapper function + var before, clickHandler, keypressHandler; + + if ( + autoBreadcrumbs && + autoBreadcrumbs.dom && + (global === 'EventTarget' || global === 'Node') + ) { + // NOTE: generating multiple handlers per addEventListener invocation, should + // revisit and verify we can just use one (almost certainly) + clickHandler = self._breadcrumbEventHandler('click'); + keypressHandler = self._keypressEventHandler(); + before = function(evt) { + // need to intercept every DOM event in `before` argument, in case that + // same wrapped method is re-used for different events (e.g. mousemove THEN click) + // see #724 + if (!evt) return; + + var eventType; + try { + eventType = evt.type; + } catch (e) { + // just accessing event properties can throw an exception in some rare circumstances + // see: https://github.com/getsentry/raven-js/issues/838 + return; + } + if (eventType === 'click') return clickHandler(evt); + else if (eventType === 'keypress') return keypressHandler(evt); + }; + } + return orig.call( + this, + evtName, + self.wrap(fn, undefined, before), + capture, + secure + ); + }; + }, + wrappedBuiltIns + ); + fill( + proto, + 'removeEventListener', + function(orig) { + return function(evt, fn, capture, secure) { + try { + fn = fn && (fn.__raven_wrapper__ ? fn.__raven_wrapper__ : fn); + } catch (e) { + // ignore, accessing __raven_wrapper__ will throw in some Selenium environments + } + return orig.call(this, evt, fn, capture, secure); + }; + }, + wrappedBuiltIns + ); + } + } + + fill(_window, 'setTimeout', wrapTimeFn, wrappedBuiltIns); + fill(_window, 'setInterval', wrapTimeFn, wrappedBuiltIns); + if (_window.requestAnimationFrame) { + fill( + _window, + 'requestAnimationFrame', + function(orig) { + return function(cb) { + return orig(self.wrap(cb)); + }; + }, + wrappedBuiltIns + ); + } + + // event targets borrowed from bugsnag-js: + // https://github.com/bugsnag/bugsnag-js/blob/master/src/bugsnag.js#L666 + var eventTargets = [ + 'EventTarget', + 'Window', + 'Node', + 'ApplicationCache', + 'AudioTrackList', + 'ChannelMergerNode', + 'CryptoOperation', + 'EventSource', + 'FileReader', + 'HTMLUnknownElement', + 'IDBDatabase', + 'IDBRequest', + 'IDBTransaction', + 'KeyOperation', + 'MediaController', + 'MessagePort', + 'ModalWindow', + 'Notification', + 'SVGElementInstance', + 'Screen', + 'TextTrack', + 'TextTrackCue', + 'TextTrackList', + 'WebSocket', + 'WebSocketWorker', + 'Worker', + 'XMLHttpRequest', + 'XMLHttpRequestEventTarget', + 'XMLHttpRequestUpload' + ]; + for (var i = 0; i < eventTargets.length; i++) { + wrapEventTarget(eventTargets[i]); + } + }, + + /** + * Instrument browser built-ins w/ breadcrumb capturing + * - XMLHttpRequests + * - DOM interactions (click/typing) + * - window.location changes + * - console + * + * Can be disabled or individually configured via the `autoBreadcrumbs` config option + */ + _instrumentBreadcrumbs: function() { + var self = this; + var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; + + var wrappedBuiltIns = self._wrappedBuiltIns; + + function wrapProp(prop, xhr) { + if (prop in xhr && isFunction(xhr[prop])) { + fill(xhr, prop, function(orig) { + return self.wrap(orig); + }); // intentionally don't track filled methods on XHR instances + } + } + + if (autoBreadcrumbs.xhr && 'XMLHttpRequest' in _window) { + var xhrproto = _window.XMLHttpRequest && _window.XMLHttpRequest.prototype; + fill( + xhrproto, + 'open', + function(origOpen) { + return function(method, url) { + // preserve arity + + // if Sentry key appears in URL, don't capture + if (isString(url) && url.indexOf(self._globalKey) === -1) { + this.__raven_xhr = { + method: method, + url: url, + status_code: null + }; + } + + return origOpen.apply(this, arguments); + }; + }, + wrappedBuiltIns + ); + + fill( + xhrproto, + 'send', + function(origSend) { + return function() { + // preserve arity + var xhr = this; + + function onreadystatechangeHandler() { + if (xhr.__raven_xhr && xhr.readyState === 4) { + try { + // touching statusCode in some platforms throws + // an exception + xhr.__raven_xhr.status_code = xhr.status; + } catch (e) { + /* do nothing */ + } + + self.captureBreadcrumb({ + type: 'http', + category: 'xhr', + data: xhr.__raven_xhr + }); + } + } + + var props = ['onload', 'onerror', 'onprogress']; + for (var j = 0; j < props.length; j++) { + wrapProp(props[j], xhr); + } + + if ('onreadystatechange' in xhr && isFunction(xhr.onreadystatechange)) { + fill( + xhr, + 'onreadystatechange', + function(orig) { + return self.wrap(orig, undefined, onreadystatechangeHandler); + } /* intentionally don't track this instrumentation */ + ); + } else { + // if onreadystatechange wasn't actually set by the page on this xhr, we + // are free to set our own and capture the breadcrumb + xhr.onreadystatechange = onreadystatechangeHandler; + } + + return origSend.apply(this, arguments); + }; + }, + wrappedBuiltIns + ); + } + + if (autoBreadcrumbs.xhr && supportsFetch()) { + fill( + _window, + 'fetch', + function(origFetch) { + return function() { + // preserve arity + // Make a copy of the arguments to prevent deoptimization + // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments + var args = new Array(arguments.length); + for (var i = 0; i < args.length; ++i) { + args[i] = arguments[i]; + } + + var fetchInput = args[0]; + var method = 'GET'; + var url; + + if (typeof fetchInput === 'string') { + url = fetchInput; + } else if ('Request' in _window && fetchInput instanceof _window.Request) { + url = fetchInput.url; + if (fetchInput.method) { + method = fetchInput.method; + } + } else { + url = '' + fetchInput; + } + + // if Sentry key appears in URL, don't capture, as it's our own request + if (url.indexOf(self._globalKey) !== -1) { + return origFetch.apply(this, args); + } + + if (args[1] && args[1].method) { + method = args[1].method; + } + + var fetchData = { + method: method, + url: url, + status_code: null + }; + + return origFetch + .apply(this, args) + .then(function(response) { + fetchData.status_code = response.status; + + self.captureBreadcrumb({ + type: 'http', + category: 'fetch', + data: fetchData + }); + + return response; + }) + ['catch'](function(err) { + // if there is an error performing the request + self.captureBreadcrumb({ + type: 'http', + category: 'fetch', + data: fetchData, + level: 'error' + }); + + throw err; + }); + }; + }, + wrappedBuiltIns + ); + } + + // Capture breadcrumbs from any click that is unhandled / bubbled up all the way + // to the document. Do this before we instrument addEventListener. + if (autoBreadcrumbs.dom && this._hasDocument) { + if (_document.addEventListener) { + _document.addEventListener('click', self._breadcrumbEventHandler('click'), false); + _document.addEventListener('keypress', self._keypressEventHandler(), false); + } else if (_document.attachEvent) { + // IE8 Compatibility + _document.attachEvent('onclick', self._breadcrumbEventHandler('click')); + _document.attachEvent('onkeypress', self._keypressEventHandler()); + } + } + + // record navigation (URL) changes + // NOTE: in Chrome App environment, touching history.pushState, *even inside + // a try/catch block*, will cause Chrome to output an error to console.error + // borrowed from: https://github.com/angular/angular.js/pull/13945/files + var chrome = _window.chrome; + var isChromePackagedApp = chrome && chrome.app && chrome.app.runtime; + var hasPushAndReplaceState = + !isChromePackagedApp && + _window.history && + _window.history.pushState && + _window.history.replaceState; + if (autoBreadcrumbs.location && hasPushAndReplaceState) { + // TODO: remove onpopstate handler on uninstall() + var oldOnPopState = _window.onpopstate; + _window.onpopstate = function() { + var currentHref = self._location.href; + self._captureUrlChange(self._lastHref, currentHref); + + if (oldOnPopState) { + return oldOnPopState.apply(this, arguments); + } + }; + + var historyReplacementFunction = function(origHistFunction) { + // note history.pushState.length is 0; intentionally not declaring + // params to preserve 0 arity + return function(/* state, title, url */) { + var url = arguments.length > 2 ? arguments[2] : undefined; + + // url argument is optional + if (url) { + // coerce to string (this is what pushState does) + self._captureUrlChange(self._lastHref, url + ''); + } + + return origHistFunction.apply(this, arguments); + }; + }; + + fill(_window.history, 'pushState', historyReplacementFunction, wrappedBuiltIns); + fill(_window.history, 'replaceState', historyReplacementFunction, wrappedBuiltIns); + } + + if (autoBreadcrumbs.console && 'console' in _window && console.log) { + // console + var consoleMethodCallback = function(msg, data) { + self.captureBreadcrumb({ + message: msg, + level: data.level, + category: 'console' + }); + }; + + each(['debug', 'info', 'warn', 'error', 'log'], function(_, level) { + wrapConsoleMethod(console, level, consoleMethodCallback); + }); + } + }, + + _restoreBuiltIns: function() { + // restore any wrapped builtins + var builtin; + while (this._wrappedBuiltIns.length) { + builtin = this._wrappedBuiltIns.shift(); + + var obj = builtin[0], + name = builtin[1], + orig = builtin[2]; + + obj[name] = orig; + } + }, + + _restoreConsole: function() { + // eslint-disable-next-line guard-for-in + for (var method in this._originalConsoleMethods) { + this._originalConsole[method] = this._originalConsoleMethods[method]; + } + }, + + _drainPlugins: function() { + var self = this; + + // FIX ME TODO + each(this._plugins, function(_, plugin) { + var installer = plugin[0]; + var args = plugin[1]; + installer.apply(self, [self].concat(args)); + }); + }, + + _parseDSN: function(str) { + var m = dsnPattern.exec(str), + dsn = {}, + i = 7; + + try { + while (i--) dsn[dsnKeys[i]] = m[i] || ''; + } catch (e) { + throw new RavenConfigError('Invalid DSN: ' + str); + } + + if (dsn.pass && !this._globalOptions.allowSecretKey) { + throw new RavenConfigError( + 'Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key' + ); + } + + return dsn; + }, + + _getGlobalServer: function(uri) { + // assemble the endpoint from the uri pieces + var globalServer = '//' + uri.host + (uri.port ? ':' + uri.port : ''); + + if (uri.protocol) { + globalServer = uri.protocol + ':' + globalServer; + } + return globalServer; + }, + + _handleOnErrorStackInfo: function() { + // if we are intentionally ignoring errors via onerror, bail out + if (!this._ignoreOnError) { + this._handleStackInfo.apply(this, arguments); + } + }, + + _handleStackInfo: function(stackInfo, options) { + var frames = this._prepareFrames(stackInfo, options); + + this._triggerEvent('handle', { + stackInfo: stackInfo, + options: options + }); + + this._processException( + stackInfo.name, + stackInfo.message, + stackInfo.url, + stackInfo.lineno, + frames, + options + ); + }, + + _prepareFrames: function(stackInfo, options) { + var self = this; + var frames = []; + if (stackInfo.stack && stackInfo.stack.length) { + each(stackInfo.stack, function(i, stack) { + var frame = self._normalizeFrame(stack, stackInfo.url); + if (frame) { + frames.push(frame); + } + }); + + // e.g. frames captured via captureMessage throw + if (options && options.trimHeadFrames) { + for (var j = 0; j < options.trimHeadFrames && j < frames.length; j++) { + frames[j].in_app = false; + } + } + } + frames = frames.slice(0, this._globalOptions.stackTraceLimit); + return frames; + }, + + _normalizeFrame: function(frame, stackInfoUrl) { + // normalize the frames data + var normalized = { + filename: frame.url, + lineno: frame.line, + colno: frame.column, + function: frame.func || '?' + }; + + // Case when we don't have any information about the error + // E.g. throwing a string or raw object, instead of an `Error` in Firefox + // Generating synthetic error doesn't add any value here + // + // We should probably somehow let a user know that they should fix their code + if (!frame.url) { + normalized.filename = stackInfoUrl; // fallback to whole stacks url from onerror handler + } + + normalized.in_app = !// determine if an exception came from outside of our app + // first we check the global includePaths list. + ( + (!!this._globalOptions.includePaths.test && + !this._globalOptions.includePaths.test(normalized.filename)) || + // Now we check for fun, if the function name is Raven or TraceKit + /(Raven|TraceKit)\./.test(normalized['function']) || + // finally, we do a last ditch effort and check for raven.min.js + /raven\.(min\.)?js$/.test(normalized.filename) + ); + + return normalized; + }, + + _processException: function(type, message, fileurl, lineno, frames, options) { + var prefixedMessage = (type ? type + ': ' : '') + (message || ''); + if ( + !!this._globalOptions.ignoreErrors.test && + (this._globalOptions.ignoreErrors.test(message) || + this._globalOptions.ignoreErrors.test(prefixedMessage)) + ) { + return; + } + + var stacktrace; + + if (frames && frames.length) { + fileurl = frames[0].filename || fileurl; + // Sentry expects frames oldest to newest + // and JS sends them as newest to oldest + frames.reverse(); + stacktrace = {frames: frames}; + } else if (fileurl) { + stacktrace = { + frames: [ + { + filename: fileurl, + lineno: lineno, + in_app: true + } + ] + }; + } + + if ( + !!this._globalOptions.ignoreUrls.test && + this._globalOptions.ignoreUrls.test(fileurl) + ) { + return; + } + + if ( + !!this._globalOptions.whitelistUrls.test && + !this._globalOptions.whitelistUrls.test(fileurl) + ) { + return; + } + + var data = objectMerge( + { + // sentry.interfaces.Exception + exception: { + values: [ + { + type: type, + value: message, + stacktrace: stacktrace + } + ] + }, + transaction: fileurl + }, + options + ); + + // Fire away! + this._send(data); + }, + + _trimPacket: function(data) { + // For now, we only want to truncate the two different messages + // but this could/should be expanded to just trim everything + var max = this._globalOptions.maxMessageLength; + if (data.message) { + data.message = truncate(data.message, max); + } + if (data.exception) { + var exception = data.exception.values[0]; + exception.value = truncate(exception.value, max); + } + + var request = data.request; + if (request) { + if (request.url) { + request.url = truncate(request.url, this._globalOptions.maxUrlLength); + } + if (request.Referer) { + request.Referer = truncate(request.Referer, this._globalOptions.maxUrlLength); + } + } + + if (data.breadcrumbs && data.breadcrumbs.values) + this._trimBreadcrumbs(data.breadcrumbs); + + return data; + }, + + /** + * Truncate breadcrumb values (right now just URLs) + */ + _trimBreadcrumbs: function(breadcrumbs) { + // known breadcrumb properties with urls + // TODO: also consider arbitrary prop values that start with (https?)?:// + var urlProps = ['to', 'from', 'url'], + urlProp, + crumb, + data; + + for (var i = 0; i < breadcrumbs.values.length; ++i) { + crumb = breadcrumbs.values[i]; + if ( + !crumb.hasOwnProperty('data') || + !isObject(crumb.data) || + objectFrozen(crumb.data) + ) + continue; + + data = objectMerge({}, crumb.data); + for (var j = 0; j < urlProps.length; ++j) { + urlProp = urlProps[j]; + if (data.hasOwnProperty(urlProp) && data[urlProp]) { + data[urlProp] = truncate(data[urlProp], this._globalOptions.maxUrlLength); + } + } + breadcrumbs.values[i].data = data; + } + }, + + _getHttpData: function() { + if (!this._hasNavigator && !this._hasDocument) return; + var httpData = {}; + + if (this._hasNavigator && _navigator.userAgent) { + httpData.headers = { + 'User-Agent': _navigator.userAgent + }; + } + + // Check in `window` instead of `document`, as we may be in ServiceWorker environment + if (_window.location && _window.location.href) { + httpData.url = _window.location.href; + } + + if (this._hasDocument && _document.referrer) { + if (!httpData.headers) httpData.headers = {}; + httpData.headers.Referer = _document.referrer; + } + + return httpData; + }, + + _resetBackoff: function() { + this._backoffDuration = 0; + this._backoffStart = null; + }, + + _shouldBackoff: function() { + return this._backoffDuration && now() - this._backoffStart < this._backoffDuration; + }, + + /** + * Returns true if the in-process data payload matches the signature + * of the previously-sent data + * + * NOTE: This has to be done at this level because TraceKit can generate + * data from window.onerror WITHOUT an exception object (IE8, IE9, + * other old browsers). This can take the form of an "exception" + * data object with a single frame (derived from the onerror args). + */ + _isRepeatData: function(current) { + var last = this._lastData; + + if ( + !last || + current.message !== last.message || // defined for captureMessage + current.transaction !== last.transaction // defined for captureException/onerror + ) + return false; + + // Stacktrace interface (i.e. from captureMessage) + if (current.stacktrace || last.stacktrace) { + return isSameStacktrace(current.stacktrace, last.stacktrace); + } else if (current.exception || last.exception) { + // Exception interface (i.e. from captureException/onerror) + return isSameException(current.exception, last.exception); + } + + return true; + }, + + _setBackoffState: function(request) { + // If we are already in a backoff state, don't change anything + if (this._shouldBackoff()) { + return; + } + + var status = request.status; + + // 400 - project_id doesn't exist or some other fatal + // 401 - invalid/revoked dsn + // 429 - too many requests + if (!(status === 400 || status === 401 || status === 429)) return; + + var retry; + try { + // If Retry-After is not in Access-Control-Expose-Headers, most + // browsers will throw an exception trying to access it + if (supportsFetch()) { + retry = request.headers.get('Retry-After'); + } else { + retry = request.getResponseHeader('Retry-After'); + } + + // Retry-After is returned in seconds + retry = parseInt(retry, 10) * 1000; + } catch (e) { + /* eslint no-empty:0 */ + } + + this._backoffDuration = retry + ? // If Sentry server returned a Retry-After value, use it + retry + : // Otherwise, double the last backoff duration (starts at 1 sec) + this._backoffDuration * 2 || 1000; + + this._backoffStart = now(); + }, + + _send: function(data) { + var globalOptions = this._globalOptions; + + var baseData = { + project: this._globalProject, + logger: globalOptions.logger, + platform: 'javascript' + }, + httpData = this._getHttpData(); + + if (httpData) { + baseData.request = httpData; + } + + // HACK: delete `trimHeadFrames` to prevent from appearing in outbound payload + if (data.trimHeadFrames) delete data.trimHeadFrames; + + data = objectMerge(baseData, data); + + // Merge in the tags and extra separately since objectMerge doesn't handle a deep merge + data.tags = objectMerge(objectMerge({}, this._globalContext.tags), data.tags); + data.extra = objectMerge(objectMerge({}, this._globalContext.extra), data.extra); + + // Send along our own collected metadata with extra + data.extra['session:duration'] = now() - this._startTime; + + if (this._breadcrumbs && this._breadcrumbs.length > 0) { + // intentionally make shallow copy so that additions + // to breadcrumbs aren't accidentally sent in this request + data.breadcrumbs = { + values: [].slice.call(this._breadcrumbs, 0) + }; + } + + if (this._globalContext.user) { + // sentry.interfaces.User + data.user = this._globalContext.user; + } + + // Include the environment if it's defined in globalOptions + if (globalOptions.environment) data.environment = globalOptions.environment; + + // Include the release if it's defined in globalOptions + if (globalOptions.release) data.release = globalOptions.release; + + // Include server_name if it's defined in globalOptions + if (globalOptions.serverName) data.server_name = globalOptions.serverName; + + data = this._sanitizeData(data); + + // Cleanup empty properties before sending them to the server + Object.keys(data).forEach(function(key) { + if (data[key] == null || data[key] === '' || isEmptyObject(data[key])) { + delete data[key]; + } + }); + + if (isFunction(globalOptions.dataCallback)) { + data = globalOptions.dataCallback(data) || data; + } + + // Why?????????? + if (!data || isEmptyObject(data)) { + return; + } + + // Check if the request should be filtered or not + if ( + isFunction(globalOptions.shouldSendCallback) && + !globalOptions.shouldSendCallback(data) + ) { + return; + } + + // Backoff state: Sentry server previously responded w/ an error (e.g. 429 - too many requests), + // so drop requests until "cool-off" period has elapsed. + if (this._shouldBackoff()) { + this._logDebug('warn', 'Raven dropped error due to backoff: ', data); + return; + } + + if (typeof globalOptions.sampleRate === 'number') { + if (Math.random() < globalOptions.sampleRate) { + this._sendProcessedPayload(data); + } + } else { + this._sendProcessedPayload(data); + } + }, + + _sanitizeData: function(data) { + return sanitize(data, this._globalOptions.sanitizeKeys); + }, + + _getUuid: function() { + return uuid4(); + }, + + _sendProcessedPayload: function(data, callback) { + var self = this; + var globalOptions = this._globalOptions; + + if (!this.isSetup()) return; + + // Try and clean up the packet before sending by truncating long values + data = this._trimPacket(data); + + // ideally duplicate error testing should occur *before* dataCallback/shouldSendCallback, + // but this would require copying an un-truncated copy of the data packet, which can be + // arbitrarily deep (extra_data) -- could be worthwhile? will revisit + if (!this._globalOptions.allowDuplicates && this._isRepeatData(data)) { + this._logDebug('warn', 'Raven dropped repeat event: ', data); + return; + } + + // Send along an event_id if not explicitly passed. + // This event_id can be used to reference the error within Sentry itself. + // Set lastEventId after we know the error should actually be sent + this._lastEventId = data.event_id || (data.event_id = this._getUuid()); + + // Store outbound payload after trim + this._lastData = data; + + this._logDebug('debug', 'Raven about to send:', data); + + var auth = { + sentry_version: '7', + sentry_client: 'raven-js/' + this.VERSION, + sentry_key: this._globalKey + }; + + if (this._globalSecret) { + auth.sentry_secret = this._globalSecret; + } + + var exception = data.exception && data.exception.values[0]; + + // only capture 'sentry' breadcrumb is autoBreadcrumbs is truthy + if ( + this._globalOptions.autoBreadcrumbs && + this._globalOptions.autoBreadcrumbs.sentry + ) { + this.captureBreadcrumb({ + category: 'sentry', + message: exception + ? (exception.type ? exception.type + ': ' : '') + exception.value + : data.message, + event_id: data.event_id, + level: data.level || 'error' // presume error unless specified + }); + } + + var url = this._globalEndpoint; + (globalOptions.transport || this._makeRequest).call(this, { + url: url, + auth: auth, + data: data, + options: globalOptions, + onSuccess: function success() { + self._resetBackoff(); + + self._triggerEvent('success', { + data: data, + src: url + }); + callback && callback(); + }, + onError: function failure(error) { + self._logDebug('error', 'Raven transport failed to send: ', error); + + if (error.request) { + self._setBackoffState(error.request); + } + + self._triggerEvent('failure', { + data: data, + src: url + }); + error = error || new Error('Raven send failed (no additional details provided)'); + callback && callback(error); + } + }); + }, + + _makeRequest: function(opts) { + // Auth is intentionally sent as part of query string (NOT as custom HTTP header) to avoid preflight CORS requests + var url = opts.url + '?' + urlencode(opts.auth); + + var evaluatedHeaders = null; + var evaluatedFetchParameters = {}; + + if (opts.options.headers) { + evaluatedHeaders = this._evaluateHash(opts.options.headers); + } + + if (opts.options.fetchParameters) { + evaluatedFetchParameters = this._evaluateHash(opts.options.fetchParameters); + } + + if (supportsFetch()) { + evaluatedFetchParameters.body = stringify(opts.data); + + var defaultFetchOptions = objectMerge({}, this._fetchDefaults); + var fetchOptions = objectMerge(defaultFetchOptions, evaluatedFetchParameters); + + if (evaluatedHeaders) { + fetchOptions.headers = evaluatedHeaders; + } + + return _window + .fetch(url, fetchOptions) + .then(function(response) { + if (response.ok) { + opts.onSuccess && opts.onSuccess(); + } else { + var error = new Error('Sentry error code: ' + response.status); + // It's called request only to keep compatibility with XHR interface + // and not add more redundant checks in setBackoffState method + error.request = response; + opts.onError && opts.onError(error); + } + }) + ['catch'](function() { + opts.onError && + opts.onError(new Error('Sentry error code: network unavailable')); + }); + } + + var request = _window.XMLHttpRequest && new _window.XMLHttpRequest(); + if (!request) return; + + // if browser doesn't support CORS (e.g. IE7), we are out of luck + var hasCORS = 'withCredentials' in request || typeof XDomainRequest !== 'undefined'; + + if (!hasCORS) return; + + if ('withCredentials' in request) { + request.onreadystatechange = function() { + if (request.readyState !== 4) { + return; + } else if (request.status === 200) { + opts.onSuccess && opts.onSuccess(); + } else if (opts.onError) { + var err = new Error('Sentry error code: ' + request.status); + err.request = request; + opts.onError(err); + } + }; + } else { + request = new XDomainRequest(); + // xdomainrequest cannot go http -> https (or vice versa), + // so always use protocol relative + url = url.replace(/^https?:/, ''); + + // onreadystatechange not supported by XDomainRequest + if (opts.onSuccess) { + request.onload = opts.onSuccess; + } + if (opts.onError) { + request.onerror = function() { + var err = new Error('Sentry error code: XDomainRequest'); + err.request = request; + opts.onError(err); + }; + } + } + + request.open('POST', url); + + if (evaluatedHeaders) { + each(evaluatedHeaders, function(key, value) { + request.setRequestHeader(key, value); + }); + } + + request.send(stringify(opts.data)); + }, + + _evaluateHash: function(hash) { + var evaluated = {}; + + for (var key in hash) { + if (hash.hasOwnProperty(key)) { + var value = hash[key]; + evaluated[key] = typeof value === 'function' ? value() : value; + } + } + + return evaluated; + }, + + _logDebug: function(level) { + // We allow `Raven.debug` and `Raven.config(DSN, { debug: true })` to not make backward incompatible API change + if ( + this._originalConsoleMethods[level] && + (this.debug || this._globalOptions.debug) + ) { + // In IE<10 console methods do not have their own 'apply' method + Function.prototype.apply.call( + this._originalConsoleMethods[level], + this._originalConsole, + [].slice.call(arguments, 1) + ); + } + }, + + _mergeContext: function(key, context) { + if (isUndefined(context)) { + delete this._globalContext[key]; + } else { + this._globalContext[key] = objectMerge(this._globalContext[key] || {}, context); + } + } +}; + +// Deprecations +Raven.prototype.setUser = Raven.prototype.setUserContext; +Raven.prototype.setReleaseContext = Raven.prototype.setRelease; + +module.exports = Raven; + +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"10":10,"11":11,"4":4,"5":5,"8":8,"9":9}],7:[function(_dereq_,module,exports){ +(function (global){ +/** + * Enforces a single instance of the Raven client, and the + * main entry point for Raven. If you are a consumer of the + * Raven library, you SHOULD load this file (vs raven.js). + **/ + +var RavenConstructor = _dereq_(6); + +// This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) +var _window = + typeof window !== 'undefined' + ? window + : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; +var _Raven = _window.Raven; + +var Raven = new RavenConstructor(); + +/* + * Allow multiple versions of Raven to be installed. + * Strip Raven from the global context and returns the instance. + * + * @return {Raven} + */ +Raven.noConflict = function() { + _window.Raven = _Raven; + return Raven; +}; + +Raven.afterLoad(); + +module.exports = Raven; + +/** + * DISCLAIMER: + * + * Expose `Client` constructor for cases where user want to track multiple "sub-applications" in one larger app. + * It's not meant to be used by a wide audience, so pleaaase make sure that you know what you're doing before using it. + * Accidentally calling `install` multiple times, may result in an unexpected behavior that's very hard to debug. + * + * It's called `Client' to be in-line with Raven Node implementation. + * + * HOWTO: + * + * import Raven from 'raven-js'; + * + * const someAppReporter = new Raven.Client(); + * const someOtherAppReporter = new Raven.Client(); + * + * someAppReporter.config('__DSN__', { + * ...config goes here + * }); + * + * someOtherAppReporter.config('__OTHER_DSN__', { + * ...config goes here + * }); + * + * someAppReporter.captureMessage(...); + * someAppReporter.captureException(...); + * someAppReporter.captureBreadcrumb(...); + * + * someOtherAppReporter.captureMessage(...); + * someOtherAppReporter.captureException(...); + * someOtherAppReporter.captureBreadcrumb(...); + * + * It should "just work". + */ +module.exports.Client = RavenConstructor; + +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"6":6}],8:[function(_dereq_,module,exports){ +(function (global){ +var stringify = _dereq_(10); + +var _window = + typeof window !== 'undefined' + ? window + : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; + +function isObject(what) { + return typeof what === 'object' && what !== null; +} + +// Yanked from https://git.io/vS8DV re-used under CC0 +// with some tiny modifications +function isError(value) { + switch (Object.prototype.toString.call(value)) { + case '[object Error]': + return true; + case '[object Exception]': + return true; + case '[object DOMException]': + return true; + default: + return value instanceof Error; + } +} + +function isErrorEvent(value) { + return Object.prototype.toString.call(value) === '[object ErrorEvent]'; +} + +function isDOMError(value) { + return Object.prototype.toString.call(value) === '[object DOMError]'; +} + +function isDOMException(value) { + return Object.prototype.toString.call(value) === '[object DOMException]'; +} + +function isUndefined(what) { + return what === void 0; +} + +function isFunction(what) { + return typeof what === 'function'; +} + +function isPlainObject(what) { + return Object.prototype.toString.call(what) === '[object Object]'; +} + +function isString(what) { + return Object.prototype.toString.call(what) === '[object String]'; +} + +function isArray(what) { + return Object.prototype.toString.call(what) === '[object Array]'; +} + +function isEmptyObject(what) { + if (!isPlainObject(what)) return false; + + for (var _ in what) { + if (what.hasOwnProperty(_)) { + return false; + } + } + return true; +} + +function supportsErrorEvent() { + try { + new ErrorEvent(''); // eslint-disable-line no-new + return true; + } catch (e) { + return false; + } +} + +function supportsDOMError() { + try { + new DOMError(''); // eslint-disable-line no-new + return true; + } catch (e) { + return false; + } +} + +function supportsDOMException() { + try { + new DOMException(''); // eslint-disable-line no-new + return true; + } catch (e) { + return false; + } +} + +function supportsFetch() { + if (!('fetch' in _window)) return false; + + try { + new Headers(); // eslint-disable-line no-new + new Request(''); // eslint-disable-line no-new + new Response(); // eslint-disable-line no-new + return true; + } catch (e) { + return false; + } +} + +// Despite all stars in the sky saying that Edge supports old draft syntax, aka 'never', 'always', 'origin' and 'default +// https://caniuse.com/#feat=referrer-policy +// It doesn't. And it throw exception instead of ignoring this parameter... +// REF: https://github.com/getsentry/raven-js/issues/1233 +function supportsReferrerPolicy() { + if (!supportsFetch()) return false; + + try { + // eslint-disable-next-line no-new + new Request('pickleRick', { + referrerPolicy: 'origin' + }); + return true; + } catch (e) { + return false; + } +} + +function supportsPromiseRejectionEvent() { + return typeof PromiseRejectionEvent === 'function'; +} + +function wrappedCallback(callback) { + function dataCallback(data, original) { + var normalizedData = callback(data) || data; + if (original) { + return original(normalizedData) || normalizedData; + } + return normalizedData; + } + + return dataCallback; +} + +function each(obj, callback) { + var i, j; + + if (isUndefined(obj.length)) { + for (i in obj) { + if (hasKey(obj, i)) { + callback.call(null, i, obj[i]); + } + } + } else { + j = obj.length; + if (j) { + for (i = 0; i < j; i++) { + callback.call(null, i, obj[i]); + } + } + } +} + +function objectMerge(obj1, obj2) { + if (!obj2) { + return obj1; + } + each(obj2, function(key, value) { + obj1[key] = value; + }); + return obj1; +} + +/** + * This function is only used for react-native. + * react-native freezes object that have already been sent over the + * js bridge. We need this function in order to check if the object is frozen. + * So it's ok that objectFrozen returns false if Object.isFrozen is not + * supported because it's not relevant for other "platforms". See related issue: + * https://github.com/getsentry/react-native-sentry/issues/57 + */ +function objectFrozen(obj) { + if (!Object.isFrozen) { + return false; + } + return Object.isFrozen(obj); +} + +function truncate(str, max) { + if (typeof max !== 'number') { + throw new Error('2nd argument to `truncate` function should be a number'); + } + if (typeof str !== 'string' || max === 0) { + return str; + } + return str.length <= max ? str : str.substr(0, max) + '\u2026'; +} + +/** + * hasKey, a better form of hasOwnProperty + * Example: hasKey(MainHostObject, property) === true/false + * + * @param {Object} host object to check property + * @param {string} key to check + */ +function hasKey(object, key) { + return Object.prototype.hasOwnProperty.call(object, key); +} + +function joinRegExp(patterns) { + // Combine an array of regular expressions and strings into one large regexp + // Be mad. + var sources = [], + i = 0, + len = patterns.length, + pattern; + + for (; i < len; i++) { + pattern = patterns[i]; + if (isString(pattern)) { + // If it's a string, we need to escape it + // Taken from: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions + sources.push(pattern.replace(/([.*+?^=!:${}()|\[\]\/\\])/g, '\\$1')); + } else if (pattern && pattern.source) { + // If it's a regexp already, we want to extract the source + sources.push(pattern.source); + } + // Intentionally skip other cases + } + return new RegExp(sources.join('|'), 'i'); +} + +function urlencode(o) { + var pairs = []; + each(o, function(key, value) { + pairs.push(encodeURIComponent(key) + '=' + encodeURIComponent(value)); + }); + return pairs.join('&'); +} + +// borrowed from https://tools.ietf.org/html/rfc3986#appendix-B +// intentionally using regex and not href parsing trick because React Native and other +// environments where DOM might not be available +function parseUrl(url) { + if (typeof url !== 'string') return {}; + var match = url.match(/^(([^:\/?#]+):)?(\/\/([^\/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?$/); + + // coerce to undefined values to empty string so we don't get 'undefined' + var query = match[6] || ''; + var fragment = match[8] || ''; + return { + protocol: match[2], + host: match[4], + path: match[5], + relative: match[5] + query + fragment // everything minus origin + }; +} +function uuid4() { + var crypto = _window.crypto || _window.msCrypto; + + if (!isUndefined(crypto) && crypto.getRandomValues) { + // Use window.crypto API if available + // eslint-disable-next-line no-undef + var arr = new Uint16Array(8); + crypto.getRandomValues(arr); + + // set 4 in byte 7 + arr[3] = (arr[3] & 0xfff) | 0x4000; + // set 2 most significant bits of byte 9 to '10' + arr[4] = (arr[4] & 0x3fff) | 0x8000; + + var pad = function(num) { + var v = num.toString(16); + while (v.length < 4) { + v = '0' + v; + } + return v; + }; + + return ( + pad(arr[0]) + + pad(arr[1]) + + pad(arr[2]) + + pad(arr[3]) + + pad(arr[4]) + + pad(arr[5]) + + pad(arr[6]) + + pad(arr[7]) + ); + } else { + // http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/2117523#2117523 + return 'xxxxxxxxxxxx4xxxyxxxxxxxxxxxxxxx'.replace(/[xy]/g, function(c) { + var r = (Math.random() * 16) | 0, + v = c === 'x' ? r : (r & 0x3) | 0x8; + return v.toString(16); + }); + } +} + +/** + * Given a child DOM element, returns a query-selector statement describing that + * and its ancestors + * e.g. [HTMLElement] => body > div > input#foo.btn[name=baz] + * @param elem + * @returns {string} + */ +function htmlTreeAsString(elem) { + /* eslint no-extra-parens:0*/ + var MAX_TRAVERSE_HEIGHT = 5, + MAX_OUTPUT_LEN = 80, + out = [], + height = 0, + len = 0, + separator = ' > ', + sepLength = separator.length, + nextStr; + + while (elem && height++ < MAX_TRAVERSE_HEIGHT) { + nextStr = htmlElementAsString(elem); + // bail out if + // - nextStr is the 'html' element + // - the length of the string that would be created exceeds MAX_OUTPUT_LEN + // (ignore this limit if we are on the first iteration) + if ( + nextStr === 'html' || + (height > 1 && len + out.length * sepLength + nextStr.length >= MAX_OUTPUT_LEN) + ) { + break; + } + + out.push(nextStr); + + len += nextStr.length; + elem = elem.parentNode; + } + + return out.reverse().join(separator); +} + +/** + * Returns a simple, query-selector representation of a DOM element + * e.g. [HTMLElement] => input#foo.btn[name=baz] + * @param HTMLElement + * @returns {string} + */ +function htmlElementAsString(elem) { + var out = [], + className, + classes, + key, + attr, + i; + + if (!elem || !elem.tagName) { + return ''; + } + + out.push(elem.tagName.toLowerCase()); + if (elem.id) { + out.push('#' + elem.id); + } + + className = elem.className; + if (className && isString(className)) { + classes = className.split(/\s+/); + for (i = 0; i < classes.length; i++) { + out.push('.' + classes[i]); + } + } + var attrWhitelist = ['type', 'name', 'title', 'alt']; + for (i = 0; i < attrWhitelist.length; i++) { + key = attrWhitelist[i]; + attr = elem.getAttribute(key); + if (attr) { + out.push('[' + key + '="' + attr + '"]'); + } + } + return out.join(''); +} + +/** + * Returns true if either a OR b is truthy, but not both + */ +function isOnlyOneTruthy(a, b) { + return !!(!!a ^ !!b); +} + +/** + * Returns true if both parameters are undefined + */ +function isBothUndefined(a, b) { + return isUndefined(a) && isUndefined(b); +} + +/** + * Returns true if the two input exception interfaces have the same content + */ +function isSameException(ex1, ex2) { + if (isOnlyOneTruthy(ex1, ex2)) return false; + + ex1 = ex1.values[0]; + ex2 = ex2.values[0]; + + if (ex1.type !== ex2.type || ex1.value !== ex2.value) return false; + + // in case both stacktraces are undefined, we can't decide so default to false + if (isBothUndefined(ex1.stacktrace, ex2.stacktrace)) return false; + + return isSameStacktrace(ex1.stacktrace, ex2.stacktrace); +} + +/** + * Returns true if the two input stack trace interfaces have the same content + */ +function isSameStacktrace(stack1, stack2) { + if (isOnlyOneTruthy(stack1, stack2)) return false; + + var frames1 = stack1.frames; + var frames2 = stack2.frames; + + // Exit early if frame count differs + if (frames1.length !== frames2.length) return false; + + // Iterate through every frame; bail out if anything differs + var a, b; + for (var i = 0; i < frames1.length; i++) { + a = frames1[i]; + b = frames2[i]; + if ( + a.filename !== b.filename || + a.lineno !== b.lineno || + a.colno !== b.colno || + a['function'] !== b['function'] + ) + return false; + } + return true; +} + +/** + * Polyfill a method + * @param obj object e.g. `document` + * @param name method name present on object e.g. `addEventListener` + * @param replacement replacement function + * @param track {optional} record instrumentation to an array + */ +function fill(obj, name, replacement, track) { + if (obj == null) return; + var orig = obj[name]; + obj[name] = replacement(orig); + obj[name].__raven__ = true; + obj[name].__orig__ = orig; + if (track) { + track.push([obj, name, orig]); + } +} + +/** + * Join values in array + * @param input array of values to be joined together + * @param delimiter string to be placed in-between values + * @returns {string} + */ +function safeJoin(input, delimiter) { + if (!isArray(input)) return ''; + + var output = []; + + for (var i = 0; i < input.length; i++) { + try { + output.push(String(input[i])); + } catch (e) { + output.push('[value cannot be serialized]'); + } + } + + return output.join(delimiter); +} + +// Default Node.js REPL depth +var MAX_SERIALIZE_EXCEPTION_DEPTH = 3; +// 50kB, as 100kB is max payload size, so half sounds reasonable +var MAX_SERIALIZE_EXCEPTION_SIZE = 50 * 1024; +var MAX_SERIALIZE_KEYS_LENGTH = 40; + +function utf8Length(value) { + return ~-encodeURI(value).split(/%..|./).length; +} + +function jsonSize(value) { + return utf8Length(JSON.stringify(value)); +} + +function serializeValue(value) { + if (typeof value === 'string') { + var maxLength = 40; + return truncate(value, maxLength); + } else if ( + typeof value === 'number' || + typeof value === 'boolean' || + typeof value === 'undefined' + ) { + return value; + } + + var type = Object.prototype.toString.call(value); + + // Node.js REPL notation + if (type === '[object Object]') return '[Object]'; + if (type === '[object Array]') return '[Array]'; + if (type === '[object Function]') + return value.name ? '[Function: ' + value.name + ']' : '[Function]'; + + return value; +} + +function serializeObject(value, depth) { + if (depth === 0) return serializeValue(value); + + if (isPlainObject(value)) { + return Object.keys(value).reduce(function(acc, key) { + acc[key] = serializeObject(value[key], depth - 1); + return acc; + }, {}); + } else if (Array.isArray(value)) { + return value.map(function(val) { + return serializeObject(val, depth - 1); + }); + } + + return serializeValue(value); +} + +function serializeException(ex, depth, maxSize) { + if (!isPlainObject(ex)) return ex; + + depth = typeof depth !== 'number' ? MAX_SERIALIZE_EXCEPTION_DEPTH : depth; + maxSize = typeof depth !== 'number' ? MAX_SERIALIZE_EXCEPTION_SIZE : maxSize; + + var serialized = serializeObject(ex, depth); + + if (jsonSize(stringify(serialized)) > maxSize) { + return serializeException(ex, depth - 1); + } + + return serialized; +} + +function serializeKeysForMessage(keys, maxLength) { + if (typeof keys === 'number' || typeof keys === 'string') return keys.toString(); + if (!Array.isArray(keys)) return ''; + + keys = keys.filter(function(key) { + return typeof key === 'string'; + }); + if (keys.length === 0) return '[object has no keys]'; + + maxLength = typeof maxLength !== 'number' ? MAX_SERIALIZE_KEYS_LENGTH : maxLength; + if (keys[0].length >= maxLength) return keys[0]; + + for (var usedKeys = keys.length; usedKeys > 0; usedKeys--) { + var serialized = keys.slice(0, usedKeys).join(', '); + if (serialized.length > maxLength) continue; + if (usedKeys === keys.length) return serialized; + return serialized + '\u2026'; + } + + return ''; +} + +function sanitize(input, sanitizeKeys) { + if (!isArray(sanitizeKeys) || (isArray(sanitizeKeys) && sanitizeKeys.length === 0)) + return input; + + var sanitizeRegExp = joinRegExp(sanitizeKeys); + var sanitizeMask = '********'; + var safeInput; + + try { + safeInput = JSON.parse(stringify(input)); + } catch (o_O) { + return input; + } + + function sanitizeWorker(workerInput) { + if (isArray(workerInput)) { + return workerInput.map(function(val) { + return sanitizeWorker(val); + }); + } + + if (isPlainObject(workerInput)) { + return Object.keys(workerInput).reduce(function(acc, k) { + if (sanitizeRegExp.test(k)) { + acc[k] = sanitizeMask; + } else { + acc[k] = sanitizeWorker(workerInput[k]); + } + return acc; + }, {}); + } + + return workerInput; + } + + return sanitizeWorker(safeInput); +} + +module.exports = { + isObject: isObject, + isError: isError, + isErrorEvent: isErrorEvent, + isDOMError: isDOMError, + isDOMException: isDOMException, + isUndefined: isUndefined, + isFunction: isFunction, + isPlainObject: isPlainObject, + isString: isString, + isArray: isArray, + isEmptyObject: isEmptyObject, + supportsErrorEvent: supportsErrorEvent, + supportsDOMError: supportsDOMError, + supportsDOMException: supportsDOMException, + supportsFetch: supportsFetch, + supportsReferrerPolicy: supportsReferrerPolicy, + supportsPromiseRejectionEvent: supportsPromiseRejectionEvent, + wrappedCallback: wrappedCallback, + each: each, + objectMerge: objectMerge, + truncate: truncate, + objectFrozen: objectFrozen, + hasKey: hasKey, + joinRegExp: joinRegExp, + urlencode: urlencode, + uuid4: uuid4, + htmlTreeAsString: htmlTreeAsString, + htmlElementAsString: htmlElementAsString, + isSameException: isSameException, + isSameStacktrace: isSameStacktrace, + parseUrl: parseUrl, + fill: fill, + safeJoin: safeJoin, + serializeException: serializeException, + serializeKeysForMessage: serializeKeysForMessage, + sanitize: sanitize +}; + +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"10":10}],9:[function(_dereq_,module,exports){ +(function (global){ +var utils = _dereq_(8); + +/* + TraceKit - Cross brower stack traces + + This was originally forked from github.com/occ/TraceKit, but has since been + largely re-written and is now maintained as part of raven-js. Tests for + this are in test/vendor. + + MIT license +*/ + +var TraceKit = { + collectWindowErrors: true, + debug: false +}; + +// This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) +var _window = + typeof window !== 'undefined' + ? window + : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; + +// global reference to slice +var _slice = [].slice; +var UNKNOWN_FUNCTION = '?'; + +// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error#Error_types +var ERROR_TYPES_RE = /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/; + +function getLocationHref() { + if (typeof document === 'undefined' || document.location == null) return ''; + return document.location.href; +} + +function getLocationOrigin() { + if (typeof document === 'undefined' || document.location == null) return ''; + + // Oh dear IE10... + if (!document.location.origin) { + document.location.origin = + document.location.protocol + + '//' + + document.location.hostname + + (document.location.port ? ':' + document.location.port : ''); + } + + return document.location.origin; +} + +/** + * TraceKit.report: cross-browser processing of unhandled exceptions + * + * Syntax: + * TraceKit.report.subscribe(function(stackInfo) { ... }) + * TraceKit.report.unsubscribe(function(stackInfo) { ... }) + * TraceKit.report(exception) + * try { ...code... } catch(ex) { TraceKit.report(ex); } + * + * Supports: + * - Firefox: full stack trace with line numbers, plus column number + * on top frame; column number is not guaranteed + * - Opera: full stack trace with line and column numbers + * - Chrome: full stack trace with line and column numbers + * - Safari: line and column number for the top frame only; some frames + * may be missing, and column number is not guaranteed + * - IE: line and column number for the top frame only; some frames + * may be missing, and column number is not guaranteed + * + * In theory, TraceKit should work on all of the following versions: + * - IE5.5+ (only 8.0 tested) + * - Firefox 0.9+ (only 3.5+ tested) + * - Opera 7+ (only 10.50 tested; versions 9 and earlier may require + * Exceptions Have Stacktrace to be enabled in opera:config) + * - Safari 3+ (only 4+ tested) + * - Chrome 1+ (only 5+ tested) + * - Konqueror 3.5+ (untested) + * + * Requires TraceKit.computeStackTrace. + * + * Tries to catch all unhandled exceptions and report them to the + * subscribed handlers. Please note that TraceKit.report will rethrow the + * exception. This is REQUIRED in order to get a useful stack trace in IE. + * If the exception does not reach the top of the browser, you will only + * get a stack trace from the point where TraceKit.report was called. + * + * Handlers receive a stackInfo object as described in the + * TraceKit.computeStackTrace docs. + */ +TraceKit.report = (function reportModuleWrapper() { + var handlers = [], + lastArgs = null, + lastException = null, + lastExceptionStack = null; + + /** + * Add a crash handler. + * @param {Function} handler + */ + function subscribe(handler) { + installGlobalHandler(); + handlers.push(handler); + } + + /** + * Remove a crash handler. + * @param {Function} handler + */ + function unsubscribe(handler) { + for (var i = handlers.length - 1; i >= 0; --i) { + if (handlers[i] === handler) { + handlers.splice(i, 1); + } + } + } + + /** + * Remove all crash handlers. + */ + function unsubscribeAll() { + uninstallGlobalHandler(); + handlers = []; + } + + /** + * Dispatch stack information to all handlers. + * @param {Object.} stack + */ + function notifyHandlers(stack, isWindowError) { + var exception = null; + if (isWindowError && !TraceKit.collectWindowErrors) { + return; + } + for (var i in handlers) { + if (handlers.hasOwnProperty(i)) { + try { + handlers[i].apply(null, [stack].concat(_slice.call(arguments, 2))); + } catch (inner) { + exception = inner; + } + } + } + + if (exception) { + throw exception; + } + } + + var _oldOnerrorHandler, _onErrorHandlerInstalled; + + /** + * Ensures all global unhandled exceptions are recorded. + * Supported by Gecko and IE. + * @param {string} msg Error message. + * @param {string} url URL of script that generated the exception. + * @param {(number|string)} lineNo The line number at which the error + * occurred. + * @param {?(number|string)} colNo The column number at which the error + * occurred. + * @param {?Error} ex The actual Error object. + */ + function traceKitWindowOnError(msg, url, lineNo, colNo, ex) { + var stack = null; + // If 'ex' is ErrorEvent, get real Error from inside + var exception = utils.isErrorEvent(ex) ? ex.error : ex; + // If 'msg' is ErrorEvent, get real message from inside + var message = utils.isErrorEvent(msg) ? msg.message : msg; + + if (lastExceptionStack) { + TraceKit.computeStackTrace.augmentStackTraceWithInitialElement( + lastExceptionStack, + url, + lineNo, + message + ); + processLastException(); + } else if (exception && utils.isError(exception)) { + // non-string `exception` arg; attempt to extract stack trace + + // New chrome and blink send along a real error object + // Let's just report that like a normal error. + // See: https://mikewest.org/2013/08/debugging-runtime-errors-with-window-onerror + stack = TraceKit.computeStackTrace(exception); + notifyHandlers(stack, true); + } else { + var location = { + url: url, + line: lineNo, + column: colNo + }; + + var name = undefined; + var groups; + + if ({}.toString.call(message) === '[object String]') { + var groups = message.match(ERROR_TYPES_RE); + if (groups) { + name = groups[1]; + message = groups[2]; + } + } + + location.func = UNKNOWN_FUNCTION; + + stack = { + name: name, + message: message, + url: getLocationHref(), + stack: [location] + }; + notifyHandlers(stack, true); + } + + if (_oldOnerrorHandler) { + return _oldOnerrorHandler.apply(this, arguments); + } + + return false; + } + + function installGlobalHandler() { + if (_onErrorHandlerInstalled) { + return; + } + _oldOnerrorHandler = _window.onerror; + _window.onerror = traceKitWindowOnError; + _onErrorHandlerInstalled = true; + } + + function uninstallGlobalHandler() { + if (!_onErrorHandlerInstalled) { + return; + } + _window.onerror = _oldOnerrorHandler; + _onErrorHandlerInstalled = false; + _oldOnerrorHandler = undefined; + } + + function processLastException() { + var _lastExceptionStack = lastExceptionStack, + _lastArgs = lastArgs; + lastArgs = null; + lastExceptionStack = null; + lastException = null; + notifyHandlers.apply(null, [_lastExceptionStack, false].concat(_lastArgs)); + } + + /** + * Reports an unhandled Error to TraceKit. + * @param {Error} ex + * @param {?boolean} rethrow If false, do not re-throw the exception. + * Only used for window.onerror to not cause an infinite loop of + * rethrowing. + */ + function report(ex, rethrow) { + var args = _slice.call(arguments, 1); + if (lastExceptionStack) { + if (lastException === ex) { + return; // already caught by an inner catch block, ignore + } else { + processLastException(); + } + } + + var stack = TraceKit.computeStackTrace(ex); + lastExceptionStack = stack; + lastException = ex; + lastArgs = args; + + // If the stack trace is incomplete, wait for 2 seconds for + // slow slow IE to see if onerror occurs or not before reporting + // this exception; otherwise, we will end up with an incomplete + // stack trace + setTimeout(function() { + if (lastException === ex) { + processLastException(); + } + }, stack.incomplete ? 2000 : 0); + + if (rethrow !== false) { + throw ex; // re-throw to propagate to the top level (and cause window.onerror) + } + } + + report.subscribe = subscribe; + report.unsubscribe = unsubscribe; + report.uninstall = unsubscribeAll; + return report; +})(); + +/** + * TraceKit.computeStackTrace: cross-browser stack traces in JavaScript + * + * Syntax: + * s = TraceKit.computeStackTrace(exception) // consider using TraceKit.report instead (see below) + * Returns: + * s.name - exception name + * s.message - exception message + * s.stack[i].url - JavaScript or HTML file URL + * s.stack[i].func - function name, or empty for anonymous functions (if guessing did not work) + * s.stack[i].args - arguments passed to the function, if known + * s.stack[i].line - line number, if known + * s.stack[i].column - column number, if known + * + * Supports: + * - Firefox: full stack trace with line numbers and unreliable column + * number on top frame + * - Opera 10: full stack trace with line and column numbers + * - Opera 9-: full stack trace with line numbers + * - Chrome: full stack trace with line and column numbers + * - Safari: line and column number for the topmost stacktrace element + * only + * - IE: no line numbers whatsoever + * + * Tries to guess names of anonymous functions by looking for assignments + * in the source code. In IE and Safari, we have to guess source file names + * by searching for function bodies inside all page scripts. This will not + * work for scripts that are loaded cross-domain. + * Here be dragons: some function names may be guessed incorrectly, and + * duplicate functions may be mismatched. + * + * TraceKit.computeStackTrace should only be used for tracing purposes. + * Logging of unhandled exceptions should be done with TraceKit.report, + * which builds on top of TraceKit.computeStackTrace and provides better + * IE support by utilizing the window.onerror event to retrieve information + * about the top of the stack. + * + * Note: In IE and Safari, no stack trace is recorded on the Error object, + * so computeStackTrace instead walks its *own* chain of callers. + * This means that: + * * in Safari, some methods may be missing from the stack trace; + * * in IE, the topmost function in the stack trace will always be the + * caller of computeStackTrace. + * + * This is okay for tracing (because you are likely to be calling + * computeStackTrace from the function you want to be the topmost element + * of the stack trace anyway), but not okay for logging unhandled + * exceptions (because your catch block will likely be far away from the + * inner function that actually caused the exception). + * + */ +TraceKit.computeStackTrace = (function computeStackTraceWrapper() { + // Contents of Exception in various browsers. + // + // SAFARI: + // ex.message = Can't find variable: qq + // ex.line = 59 + // ex.sourceId = 580238192 + // ex.sourceURL = http://... + // ex.expressionBeginOffset = 96 + // ex.expressionCaretOffset = 98 + // ex.expressionEndOffset = 98 + // ex.name = ReferenceError + // + // FIREFOX: + // ex.message = qq is not defined + // ex.fileName = http://... + // ex.lineNumber = 59 + // ex.columnNumber = 69 + // ex.stack = ...stack trace... (see the example below) + // ex.name = ReferenceError + // + // CHROME: + // ex.message = qq is not defined + // ex.name = ReferenceError + // ex.type = not_defined + // ex.arguments = ['aa'] + // ex.stack = ...stack trace... + // + // INTERNET EXPLORER: + // ex.message = ... + // ex.name = ReferenceError + // + // OPERA: + // ex.message = ...message... (see the example below) + // ex.name = ReferenceError + // ex.opera#sourceloc = 11 (pretty much useless, duplicates the info in ex.message) + // ex.stacktrace = n/a; see 'opera:config#UserPrefs|Exceptions Have Stacktrace' + + /** + * Computes stack trace information from the stack property. + * Chrome and Gecko use this property. + * @param {Error} ex + * @return {?Object.} Stack trace information. + */ + function computeStackTraceFromStackProp(ex) { + if (typeof ex.stack === 'undefined' || !ex.stack) return; + + var chrome = /^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i; + var winjs = /^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i; + // NOTE: blob urls are now supposed to always have an origin, therefore it's format + // which is `blob:http://url/path/with-some-uuid`, is matched by `blob.*?:\/` as well + var gecko = /^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i; + // Used to additionally parse URL/line/column from eval frames + var geckoEval = /(\S+) line (\d+)(?: > eval line \d+)* > eval/i; + var chromeEval = /\((\S*)(?::(\d+))(?::(\d+))\)/; + var lines = ex.stack.split('\n'); + var stack = []; + var submatch; + var parts; + var element; + var reference = /^(.*) is undefined$/.exec(ex.message); + + for (var i = 0, j = lines.length; i < j; ++i) { + if ((parts = chrome.exec(lines[i]))) { + var isNative = parts[2] && parts[2].indexOf('native') === 0; // start of line + var isEval = parts[2] && parts[2].indexOf('eval') === 0; // start of line + if (isEval && (submatch = chromeEval.exec(parts[2]))) { + // throw out eval line/column and use top-most line/column number + parts[2] = submatch[1]; // url + parts[3] = submatch[2]; // line + parts[4] = submatch[3]; // column + } + element = { + url: !isNative ? parts[2] : null, + func: parts[1] || UNKNOWN_FUNCTION, + args: isNative ? [parts[2]] : [], + line: parts[3] ? +parts[3] : null, + column: parts[4] ? +parts[4] : null + }; + } else if ((parts = winjs.exec(lines[i]))) { + element = { + url: parts[2], + func: parts[1] || UNKNOWN_FUNCTION, + args: [], + line: +parts[3], + column: parts[4] ? +parts[4] : null + }; + } else if ((parts = gecko.exec(lines[i]))) { + var isEval = parts[3] && parts[3].indexOf(' > eval') > -1; + if (isEval && (submatch = geckoEval.exec(parts[3]))) { + // throw out eval line/column and use top-most line number + parts[3] = submatch[1]; + parts[4] = submatch[2]; + parts[5] = null; // no column when eval + } else if (i === 0 && !parts[5] && typeof ex.columnNumber !== 'undefined') { + // FireFox uses this awesome columnNumber property for its top frame + // Also note, Firefox's column number is 0-based and everything else expects 1-based, + // so adding 1 + // NOTE: this hack doesn't work if top-most frame is eval + stack[0].column = ex.columnNumber + 1; + } + element = { + url: parts[3], + func: parts[1] || UNKNOWN_FUNCTION, + args: parts[2] ? parts[2].split(',') : [], + line: parts[4] ? +parts[4] : null, + column: parts[5] ? +parts[5] : null + }; + } else { + continue; + } + + if (!element.func && element.line) { + element.func = UNKNOWN_FUNCTION; + } + + if (element.url && element.url.substr(0, 5) === 'blob:') { + // Special case for handling JavaScript loaded into a blob. + // We use a synchronous AJAX request here as a blob is already in + // memory - it's not making a network request. This will generate a warning + // in the browser console, but there has already been an error so that's not + // that much of an issue. + var xhr = new XMLHttpRequest(); + xhr.open('GET', element.url, false); + xhr.send(null); + + // If we failed to download the source, skip this patch + if (xhr.status === 200) { + var source = xhr.responseText || ''; + + // We trim the source down to the last 300 characters as sourceMappingURL is always at the end of the file. + // Why 300? To be in line with: https://github.com/getsentry/sentry/blob/4af29e8f2350e20c28a6933354e4f42437b4ba42/src/sentry/lang/javascript/processor.py#L164-L175 + source = source.slice(-300); + + // Now we dig out the source map URL + var sourceMaps = source.match(/\/\/# sourceMappingURL=(.*)$/); + + // If we don't find a source map comment or we find more than one, continue on to the next element. + if (sourceMaps) { + var sourceMapAddress = sourceMaps[1]; + + // Now we check to see if it's a relative URL. + // If it is, convert it to an absolute one. + if (sourceMapAddress.charAt(0) === '~') { + sourceMapAddress = getLocationOrigin() + sourceMapAddress.slice(1); + } + + // Now we strip the '.map' off of the end of the URL and update the + // element so that Sentry can match the map to the blob. + element.url = sourceMapAddress.slice(0, -4); + } + } + } + + stack.push(element); + } + + if (!stack.length) { + return null; + } + + return { + name: ex.name, + message: ex.message, + url: getLocationHref(), + stack: stack + }; + } + + /** + * Adds information about the first frame to incomplete stack traces. + * Safari and IE require this to get complete data on the first frame. + * @param {Object.} stackInfo Stack trace information from + * one of the compute* methods. + * @param {string} url The URL of the script that caused an error. + * @param {(number|string)} lineNo The line number of the script that + * caused an error. + * @param {string=} message The error generated by the browser, which + * hopefully contains the name of the object that caused the error. + * @return {boolean} Whether or not the stack information was + * augmented. + */ + function augmentStackTraceWithInitialElement(stackInfo, url, lineNo, message) { + var initial = { + url: url, + line: lineNo + }; + + if (initial.url && initial.line) { + stackInfo.incomplete = false; + + if (!initial.func) { + initial.func = UNKNOWN_FUNCTION; + } + + if (stackInfo.stack.length > 0) { + if (stackInfo.stack[0].url === initial.url) { + if (stackInfo.stack[0].line === initial.line) { + return false; // already in stack trace + } else if ( + !stackInfo.stack[0].line && + stackInfo.stack[0].func === initial.func + ) { + stackInfo.stack[0].line = initial.line; + return false; + } + } + } + + stackInfo.stack.unshift(initial); + stackInfo.partial = true; + return true; + } else { + stackInfo.incomplete = true; + } + + return false; + } + + /** + * Computes stack trace information by walking the arguments.caller + * chain at the time the exception occurred. This will cause earlier + * frames to be missed but is the only way to get any stack trace in + * Safari and IE. The top frame is restored by + * {@link augmentStackTraceWithInitialElement}. + * @param {Error} ex + * @return {?Object.} Stack trace information. + */ + function computeStackTraceByWalkingCallerChain(ex, depth) { + var functionName = /function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i, + stack = [], + funcs = {}, + recursion = false, + parts, + item, + source; + + for ( + var curr = computeStackTraceByWalkingCallerChain.caller; + curr && !recursion; + curr = curr.caller + ) { + if (curr === computeStackTrace || curr === TraceKit.report) { + // console.log('skipping internal function'); + continue; + } + + item = { + url: null, + func: UNKNOWN_FUNCTION, + line: null, + column: null + }; + + if (curr.name) { + item.func = curr.name; + } else if ((parts = functionName.exec(curr.toString()))) { + item.func = parts[1]; + } + + if (typeof item.func === 'undefined') { + try { + item.func = parts.input.substring(0, parts.input.indexOf('{')); + } catch (e) {} + } + + if (funcs['' + curr]) { + recursion = true; + } else { + funcs['' + curr] = true; + } + + stack.push(item); + } + + if (depth) { + // console.log('depth is ' + depth); + // console.log('stack is ' + stack.length); + stack.splice(0, depth); + } + + var result = { + name: ex.name, + message: ex.message, + url: getLocationHref(), + stack: stack + }; + augmentStackTraceWithInitialElement( + result, + ex.sourceURL || ex.fileName, + ex.line || ex.lineNumber, + ex.message || ex.description + ); + return result; + } + + /** + * Computes a stack trace for an exception. + * @param {Error} ex + * @param {(string|number)=} depth + */ + function computeStackTrace(ex, depth) { + var stack = null; + depth = depth == null ? 0 : +depth; + + try { + stack = computeStackTraceFromStackProp(ex); + if (stack) { + return stack; + } + } catch (e) { + if (TraceKit.debug) { + throw e; + } + } + + try { + stack = computeStackTraceByWalkingCallerChain(ex, depth + 1); + if (stack) { + return stack; + } + } catch (e) { + if (TraceKit.debug) { + throw e; + } + } + return { + name: ex.name, + message: ex.message, + url: getLocationHref() + }; + } + + computeStackTrace.augmentStackTraceWithInitialElement = augmentStackTraceWithInitialElement; + computeStackTrace.computeStackTraceFromStackProp = computeStackTraceFromStackProp; + + return computeStackTrace; +})(); + +module.exports = TraceKit; + +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"8":8}],10:[function(_dereq_,module,exports){ +/* + json-stringify-safe + Like JSON.stringify, but doesn't throw on circular references. + + Originally forked from https://github.com/isaacs/json-stringify-safe + version 5.0.1 on 3/8/2017 and modified to handle Errors serialization + and IE8 compatibility. Tests for this are in test/vendor. + + ISC license: https://github.com/isaacs/json-stringify-safe/blob/master/LICENSE +*/ + +exports = module.exports = stringify; +exports.getSerialize = serializer; + +function indexOf(haystack, needle) { + for (var i = 0; i < haystack.length; ++i) { + if (haystack[i] === needle) return i; + } + return -1; +} + +function stringify(obj, replacer, spaces, cycleReplacer) { + return JSON.stringify(obj, serializer(replacer, cycleReplacer), spaces); +} + +// https://github.com/ftlabs/js-abbreviate/blob/fa709e5f139e7770a71827b1893f22418097fbda/index.js#L95-L106 +function stringifyError(value) { + var err = { + // These properties are implemented as magical getters and don't show up in for in + stack: value.stack, + message: value.message, + name: value.name + }; + + for (var i in value) { + if (Object.prototype.hasOwnProperty.call(value, i)) { + err[i] = value[i]; + } + } + + return err; +} + +function serializer(replacer, cycleReplacer) { + var stack = []; + var keys = []; + + if (cycleReplacer == null) { + cycleReplacer = function(key, value) { + if (stack[0] === value) { + return '[Circular ~]'; + } + return '[Circular ~.' + keys.slice(0, indexOf(stack, value)).join('.') + ']'; + }; + } + + return function(key, value) { + if (stack.length > 0) { + var thisPos = indexOf(stack, this); + ~thisPos ? stack.splice(thisPos + 1) : stack.push(this); + ~thisPos ? keys.splice(thisPos, Infinity, key) : keys.push(key); + + if (~indexOf(stack, value)) { + value = cycleReplacer.call(this, key, value); + } + } else { + stack.push(value); + } + + return replacer == null + ? value instanceof Error ? stringifyError(value) : value + : replacer.call(this, key, value); + }; +} + +},{}],11:[function(_dereq_,module,exports){ +/* + * JavaScript MD5 + * https://github.com/blueimp/JavaScript-MD5 + * + * Copyright 2011, Sebastian Tschan + * https://blueimp.net + * + * Licensed under the MIT license: + * https://opensource.org/licenses/MIT + * + * Based on + * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message + * Digest Algorithm, as defined in RFC 1321. + * Version 2.2 Copyright (C) Paul Johnston 1999 - 2009 + * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet + * Distributed under the BSD License + * See http://pajhome.org.uk/crypt/md5 for more info. + */ + +/* +* Add integers, wrapping at 2^32. This uses 16-bit operations internally +* to work around bugs in some JS interpreters. +*/ +function safeAdd(x, y) { + var lsw = (x & 0xffff) + (y & 0xffff); + var msw = (x >> 16) + (y >> 16) + (lsw >> 16); + return (msw << 16) | (lsw & 0xffff); +} + +/* +* Bitwise rotate a 32-bit number to the left. +*/ +function bitRotateLeft(num, cnt) { + return (num << cnt) | (num >>> (32 - cnt)); +} + +/* +* These functions implement the four basic operations the algorithm uses. +*/ +function md5cmn(q, a, b, x, s, t) { + return safeAdd(bitRotateLeft(safeAdd(safeAdd(a, q), safeAdd(x, t)), s), b); +} +function md5ff(a, b, c, d, x, s, t) { + return md5cmn((b & c) | (~b & d), a, b, x, s, t); +} +function md5gg(a, b, c, d, x, s, t) { + return md5cmn((b & d) | (c & ~d), a, b, x, s, t); +} +function md5hh(a, b, c, d, x, s, t) { + return md5cmn(b ^ c ^ d, a, b, x, s, t); +} +function md5ii(a, b, c, d, x, s, t) { + return md5cmn(c ^ (b | ~d), a, b, x, s, t); +} + +/* +* Calculate the MD5 of an array of little-endian words, and a bit length. +*/ +function binlMD5(x, len) { + /* append padding */ + x[len >> 5] |= 0x80 << (len % 32); + x[(((len + 64) >>> 9) << 4) + 14] = len; + + var i; + var olda; + var oldb; + var oldc; + var oldd; + var a = 1732584193; + var b = -271733879; + var c = -1732584194; + var d = 271733878; + + for (i = 0; i < x.length; i += 16) { + olda = a; + oldb = b; + oldc = c; + oldd = d; + + a = md5ff(a, b, c, d, x[i], 7, -680876936); + d = md5ff(d, a, b, c, x[i + 1], 12, -389564586); + c = md5ff(c, d, a, b, x[i + 2], 17, 606105819); + b = md5ff(b, c, d, a, x[i + 3], 22, -1044525330); + a = md5ff(a, b, c, d, x[i + 4], 7, -176418897); + d = md5ff(d, a, b, c, x[i + 5], 12, 1200080426); + c = md5ff(c, d, a, b, x[i + 6], 17, -1473231341); + b = md5ff(b, c, d, a, x[i + 7], 22, -45705983); + a = md5ff(a, b, c, d, x[i + 8], 7, 1770035416); + d = md5ff(d, a, b, c, x[i + 9], 12, -1958414417); + c = md5ff(c, d, a, b, x[i + 10], 17, -42063); + b = md5ff(b, c, d, a, x[i + 11], 22, -1990404162); + a = md5ff(a, b, c, d, x[i + 12], 7, 1804603682); + d = md5ff(d, a, b, c, x[i + 13], 12, -40341101); + c = md5ff(c, d, a, b, x[i + 14], 17, -1502002290); + b = md5ff(b, c, d, a, x[i + 15], 22, 1236535329); + + a = md5gg(a, b, c, d, x[i + 1], 5, -165796510); + d = md5gg(d, a, b, c, x[i + 6], 9, -1069501632); + c = md5gg(c, d, a, b, x[i + 11], 14, 643717713); + b = md5gg(b, c, d, a, x[i], 20, -373897302); + a = md5gg(a, b, c, d, x[i + 5], 5, -701558691); + d = md5gg(d, a, b, c, x[i + 10], 9, 38016083); + c = md5gg(c, d, a, b, x[i + 15], 14, -660478335); + b = md5gg(b, c, d, a, x[i + 4], 20, -405537848); + a = md5gg(a, b, c, d, x[i + 9], 5, 568446438); + d = md5gg(d, a, b, c, x[i + 14], 9, -1019803690); + c = md5gg(c, d, a, b, x[i + 3], 14, -187363961); + b = md5gg(b, c, d, a, x[i + 8], 20, 1163531501); + a = md5gg(a, b, c, d, x[i + 13], 5, -1444681467); + d = md5gg(d, a, b, c, x[i + 2], 9, -51403784); + c = md5gg(c, d, a, b, x[i + 7], 14, 1735328473); + b = md5gg(b, c, d, a, x[i + 12], 20, -1926607734); + + a = md5hh(a, b, c, d, x[i + 5], 4, -378558); + d = md5hh(d, a, b, c, x[i + 8], 11, -2022574463); + c = md5hh(c, d, a, b, x[i + 11], 16, 1839030562); + b = md5hh(b, c, d, a, x[i + 14], 23, -35309556); + a = md5hh(a, b, c, d, x[i + 1], 4, -1530992060); + d = md5hh(d, a, b, c, x[i + 4], 11, 1272893353); + c = md5hh(c, d, a, b, x[i + 7], 16, -155497632); + b = md5hh(b, c, d, a, x[i + 10], 23, -1094730640); + a = md5hh(a, b, c, d, x[i + 13], 4, 681279174); + d = md5hh(d, a, b, c, x[i], 11, -358537222); + c = md5hh(c, d, a, b, x[i + 3], 16, -722521979); + b = md5hh(b, c, d, a, x[i + 6], 23, 76029189); + a = md5hh(a, b, c, d, x[i + 9], 4, -640364487); + d = md5hh(d, a, b, c, x[i + 12], 11, -421815835); + c = md5hh(c, d, a, b, x[i + 15], 16, 530742520); + b = md5hh(b, c, d, a, x[i + 2], 23, -995338651); + + a = md5ii(a, b, c, d, x[i], 6, -198630844); + d = md5ii(d, a, b, c, x[i + 7], 10, 1126891415); + c = md5ii(c, d, a, b, x[i + 14], 15, -1416354905); + b = md5ii(b, c, d, a, x[i + 5], 21, -57434055); + a = md5ii(a, b, c, d, x[i + 12], 6, 1700485571); + d = md5ii(d, a, b, c, x[i + 3], 10, -1894986606); + c = md5ii(c, d, a, b, x[i + 10], 15, -1051523); + b = md5ii(b, c, d, a, x[i + 1], 21, -2054922799); + a = md5ii(a, b, c, d, x[i + 8], 6, 1873313359); + d = md5ii(d, a, b, c, x[i + 15], 10, -30611744); + c = md5ii(c, d, a, b, x[i + 6], 15, -1560198380); + b = md5ii(b, c, d, a, x[i + 13], 21, 1309151649); + a = md5ii(a, b, c, d, x[i + 4], 6, -145523070); + d = md5ii(d, a, b, c, x[i + 11], 10, -1120210379); + c = md5ii(c, d, a, b, x[i + 2], 15, 718787259); + b = md5ii(b, c, d, a, x[i + 9], 21, -343485551); + + a = safeAdd(a, olda); + b = safeAdd(b, oldb); + c = safeAdd(c, oldc); + d = safeAdd(d, oldd); + } + return [a, b, c, d]; +} + +/* +* Convert an array of little-endian words to a string +*/ +function binl2rstr(input) { + var i; + var output = ''; + var length32 = input.length * 32; + for (i = 0; i < length32; i += 8) { + output += String.fromCharCode((input[i >> 5] >>> (i % 32)) & 0xff); + } + return output; +} + +/* +* Convert a raw string to an array of little-endian words +* Characters >255 have their high-byte silently ignored. +*/ +function rstr2binl(input) { + var i; + var output = []; + output[(input.length >> 2) - 1] = undefined; + for (i = 0; i < output.length; i += 1) { + output[i] = 0; + } + var length8 = input.length * 8; + for (i = 0; i < length8; i += 8) { + output[i >> 5] |= (input.charCodeAt(i / 8) & 0xff) << (i % 32); + } + return output; +} + +/* +* Calculate the MD5 of a raw string +*/ +function rstrMD5(s) { + return binl2rstr(binlMD5(rstr2binl(s), s.length * 8)); +} + +/* +* Calculate the HMAC-MD5, of a key and some data (raw strings) +*/ +function rstrHMACMD5(key, data) { + var i; + var bkey = rstr2binl(key); + var ipad = []; + var opad = []; + var hash; + ipad[15] = opad[15] = undefined; + if (bkey.length > 16) { + bkey = binlMD5(bkey, key.length * 8); + } + for (i = 0; i < 16; i += 1) { + ipad[i] = bkey[i] ^ 0x36363636; + opad[i] = bkey[i] ^ 0x5c5c5c5c; + } + hash = binlMD5(ipad.concat(rstr2binl(data)), 512 + data.length * 8); + return binl2rstr(binlMD5(opad.concat(hash), 512 + 128)); +} + +/* +* Convert a raw string to a hex string +*/ +function rstr2hex(input) { + var hexTab = '0123456789abcdef'; + var output = ''; + var x; + var i; + for (i = 0; i < input.length; i += 1) { + x = input.charCodeAt(i); + output += hexTab.charAt((x >>> 4) & 0x0f) + hexTab.charAt(x & 0x0f); + } + return output; +} + +/* +* Encode a string as utf-8 +*/ +function str2rstrUTF8(input) { + return unescape(encodeURIComponent(input)); +} + +/* +* Take string arguments and return either raw or hex encoded strings +*/ +function rawMD5(s) { + return rstrMD5(str2rstrUTF8(s)); +} +function hexMD5(s) { + return rstr2hex(rawMD5(s)); +} +function rawHMACMD5(k, d) { + return rstrHMACMD5(str2rstrUTF8(k), str2rstrUTF8(d)); +} +function hexHMACMD5(k, d) { + return rstr2hex(rawHMACMD5(k, d)); +} + +function md5(string, key, raw) { + if (!key) { + if (!raw) { + return hexMD5(string); + } + return rawMD5(string); + } + if (!raw) { + return hexHMACMD5(key, string); + } + return rawHMACMD5(key, string); +} + +module.exports = md5; + +},{}]},{},[7,1,2,3])(7) +}); \ No newline at end of file diff --git a/packages/raven-js/dist/angular,console,vue/raven.min.js b/packages/raven-js/dist/angular,console,vue/raven.min.js new file mode 100644 index 000000000000..399e8ca7ad23 --- /dev/null +++ b/packages/raven-js/dist/angular,console,vue/raven.min.js @@ -0,0 +1,4 @@ +/*! Raven.js 3.25.2 (30b6d4e) | github.com/getsentry/raven-js */ +!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.Raven=a()}}(function(){return function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};b[g][0].call(k.exports,function(a){var c=b[g][1][a];return e(c?c:a)},k,k.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;g":"anonymous component")+(a._isVue&&a.$options.__file?" at "+a.$options.__file:"")}function e(a,b){if(b=b||window.Vue,b&&b.config){var c=b.config.errorHandler;b.config.errorHandler=function(b,e,f){var g={};"[object Object]"===Object.prototype.toString.call(e)&&(g.componentName=d(e),g.propsData=e.$options.propsData),"undefined"!=typeof f&&(g.lifecycleHook=f),a.captureException(b,{extra:g}),"function"==typeof c&&c.call(this,b,e,f)}}}b.exports=e,a(7).addPlugin(b.exports)},{7:7}],4:[function(a,b,c){function d(a){this.name="RavenConfigError",this.message=a}d.prototype=new Error,d.prototype.constructor=d,b.exports=d},{}],5:[function(a,b,c){var d=a(8),e=function(a,b,c){var e=a[b],f=a;if(b in a){var g="warn"===b?"warning":b;a[b]=function(){var a=[].slice.call(arguments),h=d.safeJoin(a," "),i={level:g,logger:"console",extra:{arguments:a}};"assert"===b?a[0]===!1&&(h="Assertion failed: "+(d.safeJoin(a.slice(1)," ")||"console.assert"),i.extra.arguments=a.slice(1),c&&c(h,i)):c&&c(h,i),e&&Function.prototype.apply.call(e,f,a)}}};b.exports={wrapMethod:e}},{8:8}],6:[function(a,b,c){(function(c){function d(){return+new Date}function e(a,b){return s(b)?function(c){return b(c,a)}:b}function f(){this.b=!("object"!=typeof JSON||!JSON.stringify),this.c=!r(S),this.d=!r(T),this.e=null,this.f=null,this.g=null,this.h=null,this.i=null,this.j=null,this.k={},this.l={release:R.SENTRY_RELEASE&&R.SENTRY_RELEASE.id,logger:"javascript",ignoreErrors:[],ignoreUrls:[],whitelistUrls:[],includePaths:[],headers:null,collectWindowErrors:!0,captureUnhandledRejections:!0,maxMessageLength:0,maxUrlLength:250,stackTraceLimit:50,autoBreadcrumbs:!0,instrument:!0,sampleRate:1,sanitizeKeys:[]},this.m={method:"POST",keepalive:!0,referrerPolicy:K()?"origin":""},this.n=0,this.o=!1,this.p=Error.stackTraceLimit,this.q=R.console||{},this.r={},this.s=[],this.t=d(),this.u=[],this.v=[],this.w=null,this.x=R.location,this.y=this.x&&this.x.href,this.z();for(var a in this.q)this.r[a]=this.q[a]}var g=a(9),h=a(10),i=a(11),j=a(4),k=a(8),l=k.isErrorEvent,m=k.isDOMError,n=k.isDOMException,o=k.isError,p=k.isObject,q=k.isPlainObject,r=k.isUndefined,s=k.isFunction,t=k.isString,u=k.isArray,v=k.isEmptyObject,w=k.each,x=k.objectMerge,y=k.truncate,z=k.objectFrozen,A=k.hasKey,B=k.joinRegExp,C=k.urlencode,D=k.uuid4,E=k.htmlTreeAsString,F=k.isSameException,G=k.isSameStacktrace,H=k.parseUrl,I=k.fill,J=k.supportsFetch,K=k.supportsReferrerPolicy,L=k.serializeKeysForMessage,M=k.serializeException,N=k.sanitize,O=a(5).wrapMethod,P="source protocol user pass host port path".split(" "),Q=/^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/,R="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},S=R.document,T=R.navigator;f.prototype={VERSION:"3.25.2",debug:!1,TraceKit:g,config:function(a,b){var c=this;if(c.h)return this.A("error","Error: Raven has already been configured"),c;if(!a)return c;var d=c.l;b&&w(b,function(a,b){"tags"===a||"extra"===a||"user"===a?c.k[a]=b:d[a]=b}),c.setDSN(a),d.ignoreErrors.push(/^Script error\.?$/),d.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/),d.ignoreErrors=B(d.ignoreErrors),d.ignoreUrls=!!d.ignoreUrls.length&&B(d.ignoreUrls),d.whitelistUrls=!!d.whitelistUrls.length&&B(d.whitelistUrls),d.includePaths=B(d.includePaths),d.maxBreadcrumbs=Math.max(0,Math.min(d.maxBreadcrumbs||100,100));var e={xhr:!0,console:!0,dom:!0,location:!0,sentry:!0},f=d.autoBreadcrumbs;"[object Object]"==={}.toString.call(f)?f=x(e,f):f!==!1&&(f=e),d.autoBreadcrumbs=f;var h={tryCatch:!0},i=d.instrument;return"[object Object]"==={}.toString.call(i)?i=x(h,i):i!==!1&&(i=h),d.instrument=i,g.collectWindowErrors=!!d.collectWindowErrors,c},install:function(){var a=this;return a.isSetup()&&!a.o&&(g.report.subscribe(function(){a.B.apply(a,arguments)}),a.l.captureUnhandledRejections&&a.C(),a.D(),a.l.instrument&&a.l.instrument.tryCatch&&a.E(),a.l.autoBreadcrumbs&&a.F(),a.G(),a.o=!0),Error.stackTraceLimit=a.l.stackTraceLimit,this},setDSN:function(a){var b=this,c=b.H(a),d=c.path.lastIndexOf("/"),e=c.path.substr(1,d);b.I=a,b.i=c.user,b.J=c.pass&&c.pass.substr(1),b.j=c.path.substr(d+1),b.h=b.K(c),b.L=b.h+"/"+e+"api/"+b.j+"/store/",this.z()},context:function(a,b,c){return s(a)&&(c=b||[],b=a,a=void 0),this.wrap(a,b).apply(this,c)},wrap:function(a,b,c){function d(){var d=[],f=arguments.length,g=!a||a&&a.deep!==!1;for(c&&s(c)&&c.apply(this,arguments);f--;)d[f]=g?e.wrap(a,arguments[f]):arguments[f];try{return b.apply(this,d)}catch(h){throw e.M(),e.captureException(h,a),h}}var e=this;if(r(b)&&!s(a))return a;if(s(a)&&(b=a,a=void 0),!s(b))return b;try{if(b.N)return b;if(b.O)return b.O}catch(f){return b}for(var g in b)A(b,g)&&(d[g]=b[g]);return d.prototype=b.prototype,b.O=d,d.N=!0,d.P=b,d},uninstall:function(){return g.report.uninstall(),this.Q(),this.R(),this.S(),this.T(),Error.stackTraceLimit=this.p,this.o=!1,this},U:function(a){this.A("debug","Raven caught unhandled promise rejection:",a),this.captureException(a.reason,{extra:{unhandledPromiseRejection:!0}})},C:function(){return this.U=this.U.bind(this),R.addEventListener&&R.addEventListener("unhandledrejection",this.U),this},Q:function(){return R.removeEventListener&&R.removeEventListener("unhandledrejection",this.U),this},captureException:function(a,b){if(b=x({trimHeadFrames:0},b?b:{}),l(a)&&a.error)a=a.error;else{if(m(a)||n(a)){var c=a.name||(m(a)?"DOMError":"DOMException"),d=a.message?c+": "+a.message:c;return this.captureMessage(d,x(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}))}if(o(a))a=a;else{if(!q(a))return this.captureMessage(a,x(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}));b=this.V(b,a),a=new Error(b.message)}}this.e=a;try{var e=g.computeStackTrace(a);this.W(e,b)}catch(f){if(a!==f)throw f}return this},V:function(a,b){var c=Object.keys(b).sort(),d=x(a,{message:"Non-Error exception captured with keys: "+L(c),fingerprint:[i(c)],extra:a.extra||{}});return d.extra.X=M(b),d},captureMessage:function(a,b){if(!this.l.ignoreErrors.test||!this.l.ignoreErrors.test(a)){b=b||{},a+="";var c,d=x({message:a},b);try{throw new Error(a)}catch(e){c=e}c.name=null;var f=g.computeStackTrace(c),h=u(f.stack)&&f.stack[1];h&&"Raven.captureException"===h.func&&(h=f.stack[2]);var i=h&&h.url||"";if((!this.l.ignoreUrls.test||!this.l.ignoreUrls.test(i))&&(!this.l.whitelistUrls.test||this.l.whitelistUrls.test(i))){if(this.l.stacktrace||b&&b.stacktrace){d.fingerprint=null==d.fingerprint?a:d.fingerprint,b=x({trimHeadFrames:0},b),b.trimHeadFrames+=1;var j=this.Y(f,b);d.stacktrace={frames:j.reverse()}}return d.fingerprint&&(d.fingerprint=u(d.fingerprint)?d.fingerprint:[d.fingerprint]),this.Z(d),this}}},captureBreadcrumb:function(a){var b=x({timestamp:d()/1e3},a);if(s(this.l.breadcrumbCallback)){var c=this.l.breadcrumbCallback(b);if(p(c)&&!v(c))b=c;else if(c===!1)return this}return this.v.push(b),this.v.length>this.l.maxBreadcrumbs&&this.v.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.s.push([a,b]),this.o&&this.G(),this},setUserContext:function(a){return this.k.user=a,this},setExtraContext:function(a){return this.$("extra",a),this},setTagsContext:function(a){return this.$("tags",a),this},clearContext:function(){return this.k={},this},getContext:function(){return JSON.parse(h(this.k))},setEnvironment:function(a){return this.l.environment=a,this},setRelease:function(a){return this.l.release=a,this},setDataCallback:function(a){var b=this.l.dataCallback;return this.l.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.l.breadcrumbCallback;return this.l.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.l.shouldSendCallback;return this.l.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.l.transport=a,this},lastException:function(){return this.e},lastEventId:function(){return this.g},isSetup:function(){return!!this.b&&(!!this.h||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.A("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=R.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(S){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.I;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.k.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.K(this.H(c)),h=S.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(S.head||S.body).appendChild(h)}},M:function(){var a=this;this.n+=1,setTimeout(function(){a.n-=1})},_:function(a,b){var c,d;if(this.c){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),S.createEvent?(c=S.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=S.createEventObject(),c.eventType=a);for(d in b)A(b,d)&&(c[d]=b[d]);if(S.createEvent)S.dispatchEvent(c);else try{S.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},aa:function(a){var b=this;return function(c){if(b.ba=null,b.w!==c){b.w=c;var d;try{d=E(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ca:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.ba;g||a.aa("input")(c),clearTimeout(g),a.ba=setTimeout(function(){a.ba=null},b)}}},da:function(a,b){var c=H(this.x.href),d=H(b),e=H(a);this.y=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},D:function(){var a=this;a.ea=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.N?a.ea.apply(this.P,arguments):a.ea.apply(this,arguments)}},R:function(){this.ea&&(Function.prototype.toString=this.ea)},E:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.da(b.y,c+""),a.apply(this,arguments)}};I(R.history,"pushState",j,d),I(R.history,"replaceState",j,d)}if(c.console&&"console"in R&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};w(["debug","info","warn","error","log"],function(a,b){O(console,b,k)})}},S:function(){for(var a;this.u.length;){a=this.u.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},T:function(){for(var a in this.r)this.q[a]=this.r[a]},G:function(){var a=this;w(this.s,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},H:function(a){var b=Q.exec(a),c={},d=7;try{for(;d--;)c[P[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.l.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},K:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},B:function(){this.n||this.W.apply(this,arguments)},W:function(a,b){var c=this.Y(a,b);this._("handle",{stackInfo:a,options:b}),this.ga(a.name,a.message,a.url,a.lineno,c,b)},Y:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(w(a.stack,function(b,e){var f=c.ha(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.v,0)}),this.k.user&&(a.user=this.k.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),a=this.qa(a),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||v(a[b]))&&delete a[b]}),s(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!v(a)&&(!s(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.na()?void this.A("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function F(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&l(b))for(c=b.split(/\s+/),f=0;fc?Q(a,b-1):d}function R(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?X:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function S(a,b){function c(a){return m(a)?a.map(function(a){return c(a)}):k(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!m(b)||m(b)&&0===b.length)return a;var d,e=A(b),f="********";try{d=JSON.parse(T(a))}catch(g){return a}return c(d)}var T=a(10),U="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},V=3,W=51200,X=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isDOMError:g,isDOMException:h,isUndefined:i,isFunction:j,isPlainObject:k,isString:l,isArray:m,isEmptyObject:n,supportsErrorEvent:o,supportsDOMError:p,supportsDOMException:q,supportsFetch:r,supportsReferrerPolicy:s,supportsPromiseRejectionEvent:t,wrappedCallback:u,each:v,objectMerge:w,truncate:y,objectFrozen:x,hasKey:z,joinRegExp:A,urlencode:B,uuid4:D,htmlTreeAsString:E,htmlElementAsString:F,isSameException:I,isSameStacktrace:J,parseUrl:C,fill:K,safeJoin:L,serializeException:Q,serializeKeysForMessage:R,sanitize:S}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{10:10}],9:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}function e(){return"undefined"==typeof document||null==document.location?"":(document.location.origin||(document.location.origin=document.location.protocol+"//"+document.location.hostname+(document.location.port?":"+document.location.port:"")),document.location.origin)}var f=a(8),g={collectWindowErrors:!0,debug:!1},h="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},i=[].slice,j="?",k=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;g.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function e(a,b){var c=null;if(!b||g.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(i.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,h,i){var l=null,m=f.isErrorEvent(i)?i.error:i,n=f.isErrorEvent(a)?a.message:a;if(v)g.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&f.isError(m))l=g.computeStackTrace(m),e(l,!0);else{var p,r={url:b,line:c,column:h},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(k);p&&(s=p[1],n=p[2])}r.func=j,l={name:s,message:n,url:d(),stack:[r]},e(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=h.onerror,h.onerror=l,r=!0)}function n(){r&&(h.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,e.apply(null,[a,!1].concat(b))}function p(a,b){var c=i.call(arguments,1);if(v){if(u===a)return;o()}var d=g.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),g.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,f,g=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,h=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,i=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,k=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,l=/\((\S*)(?::(\d+))(?::(\d+))\)/,m=a.stack.split("\n"),n=[],o=(/^(.*) is undefined$/.exec(a.message),0),p=m.length;o eval")>-1;r&&(b=k.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==o||c[5]||"undefined"==typeof a.columnNumber||(n[0].column=a.columnNumber+1), +f={url:c[3],func:c[1]||j,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}if(!f.func&&f.line&&(f.func=j),f.url&&"blob:"===f.url.substr(0,5)){var s=new XMLHttpRequest;if(s.open("GET",f.url,!1),s.send(null),200===s.status){var t=s.responseText||"";t=t.slice(-300);var u=t.match(/\/\/# sourceMappingURL=(.*)$/);if(u){var v=u[1];"~"===v.charAt(0)&&(v=e()+v.slice(1)),f.url=v.slice(0,-4)}}}n.push(f)}return n.length?{name:a.name,message:a.message,url:d(),stack:n}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=j),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,e){for(var h,i,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==f&&o!==g.report){if(i={url:null,func:j,line:null,column:null},o.name?i.func=o.name:(h=k.exec(o.toString()))&&(i.func=h[1]),"undefined"==typeof i.func)try{i.func=h.input.substring(0,h.input.indexOf("{"))}catch(p){}m[""+o]?n=!0:m[""+o]=!0,l.push(i)}e&&l.splice(0,e);var q={name:a.name,message:a.message,url:d(),stack:l};return b(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),q}function f(b,e){var f=null;e=null==e?0:+e;try{if(f=a(b))return f}catch(h){if(g.debug)throw h}try{if(f=c(b,e+1))return f}catch(h){if(g.debug)throw h}return{name:b.name,message:b.message,url:d()}}return f.augmentStackTraceWithInitialElement=b,f.computeStackTraceFromStackProp=a,f}(),b.exports=g}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{8:8}],10:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}],11:[function(a,b,c){function d(a,b){var c=(65535&a)+(65535&b),d=(a>>16)+(b>>16)+(c>>16);return d<<16|65535&c}function e(a,b){return a<>>32-b}function f(a,b,c,f,g,h){return d(e(d(d(b,a),d(f,h)),g),c)}function g(a,b,c,d,e,g,h){return f(b&c|~b&d,a,b,e,g,h)}function h(a,b,c,d,e,g,h){return f(b&d|c&~d,a,b,e,g,h)}function i(a,b,c,d,e,g,h){return f(b^c^d,a,b,e,g,h)}function j(a,b,c,d,e,g,h){return f(c^(b|~d),a,b,e,g,h)}function k(a,b){a[b>>5]|=128<>>9<<4)+14]=b;var c,e,f,k,l,m=1732584193,n=-271733879,o=-1732584194,p=271733878;for(c=0;c>5]>>>b%32&255);return c}function m(a){var b,c=[];for(c[(a.length>>2)-1]=void 0,b=0;b>5]|=(255&a.charCodeAt(b/8))<16&&(e=k(e,8*a.length)),c=0;c<16;c+=1)f[c]=909522486^e[c],g[c]=1549556828^e[c];return d=k(f.concat(m(b)),512+8*b.length),l(k(g.concat(d),640))}function p(a){var b,c,d="0123456789abcdef",e="";for(c=0;c>>4&15)+d.charAt(15&b);return e}function q(a){return unescape(encodeURIComponent(a))}function r(a){return n(q(a))}function s(a){return p(r(a))}function t(a,b){return o(q(a),q(b))}function u(a,b){return p(t(a,b))}function v(a,b,c){return b?c?t(b,a):u(b,a):c?r(a):s(a)}b.exports=v},{}]},{},[7,1,2,3])(7)}); +//# sourceMappingURL=raven.min.js.map \ No newline at end of file diff --git a/packages/raven-js/dist/angular,console,vue/raven.min.js.map b/packages/raven-js/dist/angular,console,vue/raven.min.js.map new file mode 100644 index 000000000000..ccc07160794a --- /dev/null +++ b/packages/raven-js/dist/angular,console,vue/raven.min.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","angularPlugin","angular","RavenProvider","$get","$window","ExceptionHandlerProvider","$provide","decorator","exceptionHandler","R","$delegate","ex","cause","captureException","extra","moduleName","provider","config","setDataCallback","wrappedCallback","data","_normalizeData","angularPattern","exception","values","matches","exec","value","type","message","angularDocs","substr","addPlugin","7","8","2","consolePlugin","console","pluginOptions","logLevels","levels","push","callback","msg","captureMessage","level","pop","wrapConsoleMethod","wrapMethod","5","3","formatComponentName","vm","$root","name","_isVue","$options","_componentTag","__file","vuePlugin","Vue","_oldOnError","errorHandler","error","info","metaData","Object","prototype","toString","componentName","propsData","lifecycleHook","4","RavenConfigError","constructor","utils","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","safeJoin","logger","Function","apply","6","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","sanitizeKeys","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isErrorEvent","isDOMError","isDOMException","isError","isObject","isPlainObject","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","sanitize","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","dsn","options","_logDebug","globalOptions","key","setDSN","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","context","func","undefined","wrap","_before","wrapped","deep","_ignoreNextOnError","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","U","event","reason","unhandledPromiseRejection","C","_promiseRejectionHandler","bind","addEventListener","Q","removeEventListener","trimHeadFrames","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","V","currentOptions","exKeys","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","M","setTimeout","_","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","aa","evtName","_keypressTimeout","target","category","ca","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","da","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","D","_originalFunctionToString","E","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","F","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","S","builtin","T","G","installer","concat","H","str","m","allowSecretKey","K","port","B","W","stackInfo","_triggerEvent","_processException","lineno","Y","frame","_normalizeFrame","in_app","ha","stackInfoUrl","normalized","filename","line","colno","column","function","ga","prefixedMessage","transaction","ia","request","Referer","breadcrumbs","_trimBreadcrumbs","ja","urlProp","urlProps","ka","httpData","userAgent","User-Agent","referrer","z","_backoffDuration","_backoffStart","na","oa","current","last","pa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Z","baseData","project","platform","_getHttpData","serverName","server_name","_sanitizeData","forEach","random","_sendProcessedPayload","qa","sa","ra","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","ta","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","onerror","open","setRequestHeader","send","ua","hash","evaluated","A","$","setUser","setReleaseContext","10","11","9","RavenConstructor","_Raven","noConflict","Client","what","supportsErrorEvent","ErrorEvent","supportsDOMError","DOMError","supportsDOMException","DOMException","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","sanitizeMask","safeInput","o_O","getLocationHref","getLocationOrigin","origin","hostname","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","responseText","sourceMaps","sourceMapAddress","charAt","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","y","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","string","raw"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file diff --git a/packages/raven-js/dist/angular,console/raven.js b/packages/raven-js/dist/angular,console/raven.js new file mode 100644 index 000000000000..5a61fc5e767f --- /dev/null +++ b/packages/raven-js/dist/angular,console/raven.js @@ -0,0 +1,4122 @@ +/*! Raven.js 3.25.2 (30b6d4e) | github.com/getsentry/raven-js */ + +/* + * Includes TraceKit + * https://github.com/getsentry/TraceKit + * + * Copyright 2018 Matt Robenolt and other contributors + * Released under the BSD license + * https://github.com/getsentry/raven-js/blob/master/LICENSE + * + */ + +(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.Raven = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o captureException(string) => captureMessage(string) + if (initialCall && initialCall.func === 'Raven.captureException') { + initialCall = stack.stack[2]; + } + + var fileurl = (initialCall && initialCall.url) || ''; + + if ( + !!this._globalOptions.ignoreUrls.test && + this._globalOptions.ignoreUrls.test(fileurl) + ) { + return; + } + + if ( + !!this._globalOptions.whitelistUrls.test && + !this._globalOptions.whitelistUrls.test(fileurl) + ) { + return; + } + + if (this._globalOptions.stacktrace || (options && options.stacktrace)) { + // fingerprint on msg, not stack trace (legacy behavior, could be revisited) + data.fingerprint = data.fingerprint == null ? msg : data.fingerprint; + + options = objectMerge( + { + trimHeadFrames: 0 + }, + options + ); + // Since we know this is a synthetic trace, the top frame (this function call) + // MUST be from Raven.js, so mark it for trimming + // We add to the trim counter so that callers can choose to trim extra frames, such + // as utility functions. + options.trimHeadFrames += 1; + + var frames = this._prepareFrames(stack, options); + data.stacktrace = { + // Sentry expects frames oldest to newest + frames: frames.reverse() + }; + } + + // Make sure that fingerprint is always wrapped in an array + if (data.fingerprint) { + data.fingerprint = isArray(data.fingerprint) + ? data.fingerprint + : [data.fingerprint]; + } + + // Fire away! + this._send(data); + + return this; + }, + + captureBreadcrumb: function(obj) { + var crumb = objectMerge( + { + timestamp: now() / 1000 + }, + obj + ); + + if (isFunction(this._globalOptions.breadcrumbCallback)) { + var result = this._globalOptions.breadcrumbCallback(crumb); + + if (isObject(result) && !isEmptyObject(result)) { + crumb = result; + } else if (result === false) { + return this; + } + } + + this._breadcrumbs.push(crumb); + if (this._breadcrumbs.length > this._globalOptions.maxBreadcrumbs) { + this._breadcrumbs.shift(); + } + return this; + }, + + addPlugin: function(plugin /*arg1, arg2, ... argN*/) { + var pluginArgs = [].slice.call(arguments, 1); + + this._plugins.push([plugin, pluginArgs]); + if (this._isRavenInstalled) { + this._drainPlugins(); + } + + return this; + }, + + /* + * Set/clear a user to be sent along with the payload. + * + * @param {object} user An object representing user data [optional] + * @return {Raven} + */ + setUserContext: function(user) { + // Intentionally do not merge here since that's an unexpected behavior. + this._globalContext.user = user; + + return this; + }, + + /* + * Merge extra attributes to be sent along with the payload. + * + * @param {object} extra An object representing extra data [optional] + * @return {Raven} + */ + setExtraContext: function(extra) { + this._mergeContext('extra', extra); + + return this; + }, + + /* + * Merge tags to be sent along with the payload. + * + * @param {object} tags An object representing tags [optional] + * @return {Raven} + */ + setTagsContext: function(tags) { + this._mergeContext('tags', tags); + + return this; + }, + + /* + * Clear all of the context. + * + * @return {Raven} + */ + clearContext: function() { + this._globalContext = {}; + + return this; + }, + + /* + * Get a copy of the current context. This cannot be mutated. + * + * @return {object} copy of context + */ + getContext: function() { + // lol javascript + return JSON.parse(stringify(this._globalContext)); + }, + + /* + * Set environment of application + * + * @param {string} environment Typically something like 'production'. + * @return {Raven} + */ + setEnvironment: function(environment) { + this._globalOptions.environment = environment; + + return this; + }, + + /* + * Set release version of application + * + * @param {string} release Typically something like a git SHA to identify version + * @return {Raven} + */ + setRelease: function(release) { + this._globalOptions.release = release; + + return this; + }, + + /* + * Set the dataCallback option + * + * @param {function} callback The callback to run which allows the + * data blob to be mutated before sending + * @return {Raven} + */ + setDataCallback: function(callback) { + var original = this._globalOptions.dataCallback; + this._globalOptions.dataCallback = keepOriginalCallback(original, callback); + return this; + }, + + /* + * Set the breadcrumbCallback option + * + * @param {function} callback The callback to run which allows filtering + * or mutating breadcrumbs + * @return {Raven} + */ + setBreadcrumbCallback: function(callback) { + var original = this._globalOptions.breadcrumbCallback; + this._globalOptions.breadcrumbCallback = keepOriginalCallback(original, callback); + return this; + }, + + /* + * Set the shouldSendCallback option + * + * @param {function} callback The callback to run which allows + * introspecting the blob before sending + * @return {Raven} + */ + setShouldSendCallback: function(callback) { + var original = this._globalOptions.shouldSendCallback; + this._globalOptions.shouldSendCallback = keepOriginalCallback(original, callback); + return this; + }, + + /** + * Override the default HTTP transport mechanism that transmits data + * to the Sentry server. + * + * @param {function} transport Function invoked instead of the default + * `makeRequest` handler. + * + * @return {Raven} + */ + setTransport: function(transport) { + this._globalOptions.transport = transport; + + return this; + }, + + /* + * Get the latest raw exception that was captured by Raven. + * + * @return {error} + */ + lastException: function() { + return this._lastCapturedException; + }, + + /* + * Get the last event id + * + * @return {string} + */ + lastEventId: function() { + return this._lastEventId; + }, + + /* + * Determine if Raven is setup and ready to go. + * + * @return {boolean} + */ + isSetup: function() { + if (!this._hasJSON) return false; // needs JSON support + if (!this._globalServer) { + if (!this.ravenNotConfiguredError) { + this.ravenNotConfiguredError = true; + this._logDebug('error', 'Error: Raven has not been configured.'); + } + return false; + } + return true; + }, + + afterLoad: function() { + // TODO: remove window dependence? + + // Attempt to initialize Raven on load + var RavenConfig = _window.RavenConfig; + if (RavenConfig) { + this.config(RavenConfig.dsn, RavenConfig.config).install(); + } + }, + + showReportDialog: function(options) { + if ( + !_document // doesn't work without a document (React native) + ) + return; + + options = options || {}; + + var lastEventId = options.eventId || this.lastEventId(); + if (!lastEventId) { + throw new RavenConfigError('Missing eventId'); + } + + var dsn = options.dsn || this._dsn; + if (!dsn) { + throw new RavenConfigError('Missing DSN'); + } + + var encode = encodeURIComponent; + var qs = ''; + qs += '?eventId=' + encode(lastEventId); + qs += '&dsn=' + encode(dsn); + + var user = options.user || this._globalContext.user; + if (user) { + if (user.name) qs += '&name=' + encode(user.name); + if (user.email) qs += '&email=' + encode(user.email); + } + + var globalServer = this._getGlobalServer(this._parseDSN(dsn)); + + var script = _document.createElement('script'); + script.async = true; + script.src = globalServer + '/api/embed/error-page/' + qs; + (_document.head || _document.body).appendChild(script); + }, + + /**** Private functions ****/ + _ignoreNextOnError: function() { + var self = this; + this._ignoreOnError += 1; + setTimeout(function() { + // onerror should trigger before setTimeout + self._ignoreOnError -= 1; + }); + }, + + _triggerEvent: function(eventType, options) { + // NOTE: `event` is a native browser thing, so let's avoid conflicting wiht it + var evt, key; + + if (!this._hasDocument) return; + + options = options || {}; + + eventType = 'raven' + eventType.substr(0, 1).toUpperCase() + eventType.substr(1); + + if (_document.createEvent) { + evt = _document.createEvent('HTMLEvents'); + evt.initEvent(eventType, true, true); + } else { + evt = _document.createEventObject(); + evt.eventType = eventType; + } + + for (key in options) + if (hasKey(options, key)) { + evt[key] = options[key]; + } + + if (_document.createEvent) { + // IE9 if standards + _document.dispatchEvent(evt); + } else { + // IE8 regardless of Quirks or Standards + // IE9 if quirks + try { + _document.fireEvent('on' + evt.eventType.toLowerCase(), evt); + } catch (e) { + // Do nothing + } + } + }, + + /** + * Wraps addEventListener to capture UI breadcrumbs + * @param evtName the event name (e.g. "click") + * @returns {Function} + * @private + */ + _breadcrumbEventHandler: function(evtName) { + var self = this; + return function(evt) { + // reset keypress timeout; e.g. triggering a 'click' after + // a 'keypress' will reset the keypress debounce so that a new + // set of keypresses can be recorded + self._keypressTimeout = null; + + // It's possible this handler might trigger multiple times for the same + // event (e.g. event propagation through node ancestors). Ignore if we've + // already captured the event. + if (self._lastCapturedEvent === evt) return; + + self._lastCapturedEvent = evt; + + // try/catch both: + // - accessing evt.target (see getsentry/raven-js#838, #768) + // - `htmlTreeAsString` because it's complex, and just accessing the DOM incorrectly + // can throw an exception in some circumstances. + var target; + try { + target = htmlTreeAsString(evt.target); + } catch (e) { + target = ''; + } + + self.captureBreadcrumb({ + category: 'ui.' + evtName, // e.g. ui.click, ui.input + message: target + }); + }; + }, + + /** + * Wraps addEventListener to capture keypress UI events + * @returns {Function} + * @private + */ + _keypressEventHandler: function() { + var self = this, + debounceDuration = 1000; // milliseconds + + // TODO: if somehow user switches keypress target before + // debounce timeout is triggered, we will only capture + // a single breadcrumb from the FIRST target (acceptable?) + return function(evt) { + var target; + try { + target = evt.target; + } catch (e) { + // just accessing event properties can throw an exception in some rare circumstances + // see: https://github.com/getsentry/raven-js/issues/838 + return; + } + var tagName = target && target.tagName; + + // only consider keypress events on actual input elements + // this will disregard keypresses targeting body (e.g. tabbing + // through elements, hotkeys, etc) + if ( + !tagName || + (tagName !== 'INPUT' && tagName !== 'TEXTAREA' && !target.isContentEditable) + ) + return; + + // record first keypress in a series, but ignore subsequent + // keypresses until debounce clears + var timeout = self._keypressTimeout; + if (!timeout) { + self._breadcrumbEventHandler('input')(evt); + } + clearTimeout(timeout); + self._keypressTimeout = setTimeout(function() { + self._keypressTimeout = null; + }, debounceDuration); + }; + }, + + /** + * Captures a breadcrumb of type "navigation", normalizing input URLs + * @param to the originating URL + * @param from the target URL + * @private + */ + _captureUrlChange: function(from, to) { + var parsedLoc = parseUrl(this._location.href); + var parsedTo = parseUrl(to); + var parsedFrom = parseUrl(from); + + // because onpopstate only tells you the "new" (to) value of location.href, and + // not the previous (from) value, we need to track the value of the current URL + // state ourselves + this._lastHref = to; + + // Use only the path component of the URL if the URL matches the current + // document (almost all the time when using pushState) + if (parsedLoc.protocol === parsedTo.protocol && parsedLoc.host === parsedTo.host) + to = parsedTo.relative; + if (parsedLoc.protocol === parsedFrom.protocol && parsedLoc.host === parsedFrom.host) + from = parsedFrom.relative; + + this.captureBreadcrumb({ + category: 'navigation', + data: { + to: to, + from: from + } + }); + }, + + _patchFunctionToString: function() { + var self = this; + self._originalFunctionToString = Function.prototype.toString; + // eslint-disable-next-line no-extend-native + Function.prototype.toString = function() { + if (typeof this === 'function' && this.__raven__) { + return self._originalFunctionToString.apply(this.__orig__, arguments); + } + return self._originalFunctionToString.apply(this, arguments); + }; + }, + + _unpatchFunctionToString: function() { + if (this._originalFunctionToString) { + // eslint-disable-next-line no-extend-native + Function.prototype.toString = this._originalFunctionToString; + } + }, + + /** + * Wrap timer functions and event targets to catch errors and provide + * better metadata. + */ + _instrumentTryCatch: function() { + var self = this; + + var wrappedBuiltIns = self._wrappedBuiltIns; + + function wrapTimeFn(orig) { + return function(fn, t) { + // preserve arity + // Make a copy of the arguments to prevent deoptimization + // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments + var args = new Array(arguments.length); + for (var i = 0; i < args.length; ++i) { + args[i] = arguments[i]; + } + var originalCallback = args[0]; + if (isFunction(originalCallback)) { + args[0] = self.wrap(originalCallback); + } + + // IE < 9 doesn't support .call/.apply on setInterval/setTimeout, but it + // also supports only two arguments and doesn't care what this is, so we + // can just call the original function directly. + if (orig.apply) { + return orig.apply(this, args); + } else { + return orig(args[0], args[1]); + } + }; + } + + var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; + + function wrapEventTarget(global) { + var proto = _window[global] && _window[global].prototype; + if (proto && proto.hasOwnProperty && proto.hasOwnProperty('addEventListener')) { + fill( + proto, + 'addEventListener', + function(orig) { + return function(evtName, fn, capture, secure) { + // preserve arity + try { + if (fn && fn.handleEvent) { + fn.handleEvent = self.wrap(fn.handleEvent); + } + } catch (err) { + // can sometimes get 'Permission denied to access property "handle Event' + } + + // More breadcrumb DOM capture ... done here and not in `_instrumentBreadcrumbs` + // so that we don't have more than one wrapper function + var before, clickHandler, keypressHandler; + + if ( + autoBreadcrumbs && + autoBreadcrumbs.dom && + (global === 'EventTarget' || global === 'Node') + ) { + // NOTE: generating multiple handlers per addEventListener invocation, should + // revisit and verify we can just use one (almost certainly) + clickHandler = self._breadcrumbEventHandler('click'); + keypressHandler = self._keypressEventHandler(); + before = function(evt) { + // need to intercept every DOM event in `before` argument, in case that + // same wrapped method is re-used for different events (e.g. mousemove THEN click) + // see #724 + if (!evt) return; + + var eventType; + try { + eventType = evt.type; + } catch (e) { + // just accessing event properties can throw an exception in some rare circumstances + // see: https://github.com/getsentry/raven-js/issues/838 + return; + } + if (eventType === 'click') return clickHandler(evt); + else if (eventType === 'keypress') return keypressHandler(evt); + }; + } + return orig.call( + this, + evtName, + self.wrap(fn, undefined, before), + capture, + secure + ); + }; + }, + wrappedBuiltIns + ); + fill( + proto, + 'removeEventListener', + function(orig) { + return function(evt, fn, capture, secure) { + try { + fn = fn && (fn.__raven_wrapper__ ? fn.__raven_wrapper__ : fn); + } catch (e) { + // ignore, accessing __raven_wrapper__ will throw in some Selenium environments + } + return orig.call(this, evt, fn, capture, secure); + }; + }, + wrappedBuiltIns + ); + } + } + + fill(_window, 'setTimeout', wrapTimeFn, wrappedBuiltIns); + fill(_window, 'setInterval', wrapTimeFn, wrappedBuiltIns); + if (_window.requestAnimationFrame) { + fill( + _window, + 'requestAnimationFrame', + function(orig) { + return function(cb) { + return orig(self.wrap(cb)); + }; + }, + wrappedBuiltIns + ); + } + + // event targets borrowed from bugsnag-js: + // https://github.com/bugsnag/bugsnag-js/blob/master/src/bugsnag.js#L666 + var eventTargets = [ + 'EventTarget', + 'Window', + 'Node', + 'ApplicationCache', + 'AudioTrackList', + 'ChannelMergerNode', + 'CryptoOperation', + 'EventSource', + 'FileReader', + 'HTMLUnknownElement', + 'IDBDatabase', + 'IDBRequest', + 'IDBTransaction', + 'KeyOperation', + 'MediaController', + 'MessagePort', + 'ModalWindow', + 'Notification', + 'SVGElementInstance', + 'Screen', + 'TextTrack', + 'TextTrackCue', + 'TextTrackList', + 'WebSocket', + 'WebSocketWorker', + 'Worker', + 'XMLHttpRequest', + 'XMLHttpRequestEventTarget', + 'XMLHttpRequestUpload' + ]; + for (var i = 0; i < eventTargets.length; i++) { + wrapEventTarget(eventTargets[i]); + } + }, + + /** + * Instrument browser built-ins w/ breadcrumb capturing + * - XMLHttpRequests + * - DOM interactions (click/typing) + * - window.location changes + * - console + * + * Can be disabled or individually configured via the `autoBreadcrumbs` config option + */ + _instrumentBreadcrumbs: function() { + var self = this; + var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; + + var wrappedBuiltIns = self._wrappedBuiltIns; + + function wrapProp(prop, xhr) { + if (prop in xhr && isFunction(xhr[prop])) { + fill(xhr, prop, function(orig) { + return self.wrap(orig); + }); // intentionally don't track filled methods on XHR instances + } + } + + if (autoBreadcrumbs.xhr && 'XMLHttpRequest' in _window) { + var xhrproto = _window.XMLHttpRequest && _window.XMLHttpRequest.prototype; + fill( + xhrproto, + 'open', + function(origOpen) { + return function(method, url) { + // preserve arity + + // if Sentry key appears in URL, don't capture + if (isString(url) && url.indexOf(self._globalKey) === -1) { + this.__raven_xhr = { + method: method, + url: url, + status_code: null + }; + } + + return origOpen.apply(this, arguments); + }; + }, + wrappedBuiltIns + ); + + fill( + xhrproto, + 'send', + function(origSend) { + return function() { + // preserve arity + var xhr = this; + + function onreadystatechangeHandler() { + if (xhr.__raven_xhr && xhr.readyState === 4) { + try { + // touching statusCode in some platforms throws + // an exception + xhr.__raven_xhr.status_code = xhr.status; + } catch (e) { + /* do nothing */ + } + + self.captureBreadcrumb({ + type: 'http', + category: 'xhr', + data: xhr.__raven_xhr + }); + } + } + + var props = ['onload', 'onerror', 'onprogress']; + for (var j = 0; j < props.length; j++) { + wrapProp(props[j], xhr); + } + + if ('onreadystatechange' in xhr && isFunction(xhr.onreadystatechange)) { + fill( + xhr, + 'onreadystatechange', + function(orig) { + return self.wrap(orig, undefined, onreadystatechangeHandler); + } /* intentionally don't track this instrumentation */ + ); + } else { + // if onreadystatechange wasn't actually set by the page on this xhr, we + // are free to set our own and capture the breadcrumb + xhr.onreadystatechange = onreadystatechangeHandler; + } + + return origSend.apply(this, arguments); + }; + }, + wrappedBuiltIns + ); + } + + if (autoBreadcrumbs.xhr && supportsFetch()) { + fill( + _window, + 'fetch', + function(origFetch) { + return function() { + // preserve arity + // Make a copy of the arguments to prevent deoptimization + // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments + var args = new Array(arguments.length); + for (var i = 0; i < args.length; ++i) { + args[i] = arguments[i]; + } + + var fetchInput = args[0]; + var method = 'GET'; + var url; + + if (typeof fetchInput === 'string') { + url = fetchInput; + } else if ('Request' in _window && fetchInput instanceof _window.Request) { + url = fetchInput.url; + if (fetchInput.method) { + method = fetchInput.method; + } + } else { + url = '' + fetchInput; + } + + // if Sentry key appears in URL, don't capture, as it's our own request + if (url.indexOf(self._globalKey) !== -1) { + return origFetch.apply(this, args); + } + + if (args[1] && args[1].method) { + method = args[1].method; + } + + var fetchData = { + method: method, + url: url, + status_code: null + }; + + return origFetch + .apply(this, args) + .then(function(response) { + fetchData.status_code = response.status; + + self.captureBreadcrumb({ + type: 'http', + category: 'fetch', + data: fetchData + }); + + return response; + }) + ['catch'](function(err) { + // if there is an error performing the request + self.captureBreadcrumb({ + type: 'http', + category: 'fetch', + data: fetchData, + level: 'error' + }); + + throw err; + }); + }; + }, + wrappedBuiltIns + ); + } + + // Capture breadcrumbs from any click that is unhandled / bubbled up all the way + // to the document. Do this before we instrument addEventListener. + if (autoBreadcrumbs.dom && this._hasDocument) { + if (_document.addEventListener) { + _document.addEventListener('click', self._breadcrumbEventHandler('click'), false); + _document.addEventListener('keypress', self._keypressEventHandler(), false); + } else if (_document.attachEvent) { + // IE8 Compatibility + _document.attachEvent('onclick', self._breadcrumbEventHandler('click')); + _document.attachEvent('onkeypress', self._keypressEventHandler()); + } + } + + // record navigation (URL) changes + // NOTE: in Chrome App environment, touching history.pushState, *even inside + // a try/catch block*, will cause Chrome to output an error to console.error + // borrowed from: https://github.com/angular/angular.js/pull/13945/files + var chrome = _window.chrome; + var isChromePackagedApp = chrome && chrome.app && chrome.app.runtime; + var hasPushAndReplaceState = + !isChromePackagedApp && + _window.history && + _window.history.pushState && + _window.history.replaceState; + if (autoBreadcrumbs.location && hasPushAndReplaceState) { + // TODO: remove onpopstate handler on uninstall() + var oldOnPopState = _window.onpopstate; + _window.onpopstate = function() { + var currentHref = self._location.href; + self._captureUrlChange(self._lastHref, currentHref); + + if (oldOnPopState) { + return oldOnPopState.apply(this, arguments); + } + }; + + var historyReplacementFunction = function(origHistFunction) { + // note history.pushState.length is 0; intentionally not declaring + // params to preserve 0 arity + return function(/* state, title, url */) { + var url = arguments.length > 2 ? arguments[2] : undefined; + + // url argument is optional + if (url) { + // coerce to string (this is what pushState does) + self._captureUrlChange(self._lastHref, url + ''); + } + + return origHistFunction.apply(this, arguments); + }; + }; + + fill(_window.history, 'pushState', historyReplacementFunction, wrappedBuiltIns); + fill(_window.history, 'replaceState', historyReplacementFunction, wrappedBuiltIns); + } + + if (autoBreadcrumbs.console && 'console' in _window && console.log) { + // console + var consoleMethodCallback = function(msg, data) { + self.captureBreadcrumb({ + message: msg, + level: data.level, + category: 'console' + }); + }; + + each(['debug', 'info', 'warn', 'error', 'log'], function(_, level) { + wrapConsoleMethod(console, level, consoleMethodCallback); + }); + } + }, + + _restoreBuiltIns: function() { + // restore any wrapped builtins + var builtin; + while (this._wrappedBuiltIns.length) { + builtin = this._wrappedBuiltIns.shift(); + + var obj = builtin[0], + name = builtin[1], + orig = builtin[2]; + + obj[name] = orig; + } + }, + + _restoreConsole: function() { + // eslint-disable-next-line guard-for-in + for (var method in this._originalConsoleMethods) { + this._originalConsole[method] = this._originalConsoleMethods[method]; + } + }, + + _drainPlugins: function() { + var self = this; + + // FIX ME TODO + each(this._plugins, function(_, plugin) { + var installer = plugin[0]; + var args = plugin[1]; + installer.apply(self, [self].concat(args)); + }); + }, + + _parseDSN: function(str) { + var m = dsnPattern.exec(str), + dsn = {}, + i = 7; + + try { + while (i--) dsn[dsnKeys[i]] = m[i] || ''; + } catch (e) { + throw new RavenConfigError('Invalid DSN: ' + str); + } + + if (dsn.pass && !this._globalOptions.allowSecretKey) { + throw new RavenConfigError( + 'Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key' + ); + } + + return dsn; + }, + + _getGlobalServer: function(uri) { + // assemble the endpoint from the uri pieces + var globalServer = '//' + uri.host + (uri.port ? ':' + uri.port : ''); + + if (uri.protocol) { + globalServer = uri.protocol + ':' + globalServer; + } + return globalServer; + }, + + _handleOnErrorStackInfo: function() { + // if we are intentionally ignoring errors via onerror, bail out + if (!this._ignoreOnError) { + this._handleStackInfo.apply(this, arguments); + } + }, + + _handleStackInfo: function(stackInfo, options) { + var frames = this._prepareFrames(stackInfo, options); + + this._triggerEvent('handle', { + stackInfo: stackInfo, + options: options + }); + + this._processException( + stackInfo.name, + stackInfo.message, + stackInfo.url, + stackInfo.lineno, + frames, + options + ); + }, + + _prepareFrames: function(stackInfo, options) { + var self = this; + var frames = []; + if (stackInfo.stack && stackInfo.stack.length) { + each(stackInfo.stack, function(i, stack) { + var frame = self._normalizeFrame(stack, stackInfo.url); + if (frame) { + frames.push(frame); + } + }); + + // e.g. frames captured via captureMessage throw + if (options && options.trimHeadFrames) { + for (var j = 0; j < options.trimHeadFrames && j < frames.length; j++) { + frames[j].in_app = false; + } + } + } + frames = frames.slice(0, this._globalOptions.stackTraceLimit); + return frames; + }, + + _normalizeFrame: function(frame, stackInfoUrl) { + // normalize the frames data + var normalized = { + filename: frame.url, + lineno: frame.line, + colno: frame.column, + function: frame.func || '?' + }; + + // Case when we don't have any information about the error + // E.g. throwing a string or raw object, instead of an `Error` in Firefox + // Generating synthetic error doesn't add any value here + // + // We should probably somehow let a user know that they should fix their code + if (!frame.url) { + normalized.filename = stackInfoUrl; // fallback to whole stacks url from onerror handler + } + + normalized.in_app = !// determine if an exception came from outside of our app + // first we check the global includePaths list. + ( + (!!this._globalOptions.includePaths.test && + !this._globalOptions.includePaths.test(normalized.filename)) || + // Now we check for fun, if the function name is Raven or TraceKit + /(Raven|TraceKit)\./.test(normalized['function']) || + // finally, we do a last ditch effort and check for raven.min.js + /raven\.(min\.)?js$/.test(normalized.filename) + ); + + return normalized; + }, + + _processException: function(type, message, fileurl, lineno, frames, options) { + var prefixedMessage = (type ? type + ': ' : '') + (message || ''); + if ( + !!this._globalOptions.ignoreErrors.test && + (this._globalOptions.ignoreErrors.test(message) || + this._globalOptions.ignoreErrors.test(prefixedMessage)) + ) { + return; + } + + var stacktrace; + + if (frames && frames.length) { + fileurl = frames[0].filename || fileurl; + // Sentry expects frames oldest to newest + // and JS sends them as newest to oldest + frames.reverse(); + stacktrace = {frames: frames}; + } else if (fileurl) { + stacktrace = { + frames: [ + { + filename: fileurl, + lineno: lineno, + in_app: true + } + ] + }; + } + + if ( + !!this._globalOptions.ignoreUrls.test && + this._globalOptions.ignoreUrls.test(fileurl) + ) { + return; + } + + if ( + !!this._globalOptions.whitelistUrls.test && + !this._globalOptions.whitelistUrls.test(fileurl) + ) { + return; + } + + var data = objectMerge( + { + // sentry.interfaces.Exception + exception: { + values: [ + { + type: type, + value: message, + stacktrace: stacktrace + } + ] + }, + transaction: fileurl + }, + options + ); + + // Fire away! + this._send(data); + }, + + _trimPacket: function(data) { + // For now, we only want to truncate the two different messages + // but this could/should be expanded to just trim everything + var max = this._globalOptions.maxMessageLength; + if (data.message) { + data.message = truncate(data.message, max); + } + if (data.exception) { + var exception = data.exception.values[0]; + exception.value = truncate(exception.value, max); + } + + var request = data.request; + if (request) { + if (request.url) { + request.url = truncate(request.url, this._globalOptions.maxUrlLength); + } + if (request.Referer) { + request.Referer = truncate(request.Referer, this._globalOptions.maxUrlLength); + } + } + + if (data.breadcrumbs && data.breadcrumbs.values) + this._trimBreadcrumbs(data.breadcrumbs); + + return data; + }, + + /** + * Truncate breadcrumb values (right now just URLs) + */ + _trimBreadcrumbs: function(breadcrumbs) { + // known breadcrumb properties with urls + // TODO: also consider arbitrary prop values that start with (https?)?:// + var urlProps = ['to', 'from', 'url'], + urlProp, + crumb, + data; + + for (var i = 0; i < breadcrumbs.values.length; ++i) { + crumb = breadcrumbs.values[i]; + if ( + !crumb.hasOwnProperty('data') || + !isObject(crumb.data) || + objectFrozen(crumb.data) + ) + continue; + + data = objectMerge({}, crumb.data); + for (var j = 0; j < urlProps.length; ++j) { + urlProp = urlProps[j]; + if (data.hasOwnProperty(urlProp) && data[urlProp]) { + data[urlProp] = truncate(data[urlProp], this._globalOptions.maxUrlLength); + } + } + breadcrumbs.values[i].data = data; + } + }, + + _getHttpData: function() { + if (!this._hasNavigator && !this._hasDocument) return; + var httpData = {}; + + if (this._hasNavigator && _navigator.userAgent) { + httpData.headers = { + 'User-Agent': _navigator.userAgent + }; + } + + // Check in `window` instead of `document`, as we may be in ServiceWorker environment + if (_window.location && _window.location.href) { + httpData.url = _window.location.href; + } + + if (this._hasDocument && _document.referrer) { + if (!httpData.headers) httpData.headers = {}; + httpData.headers.Referer = _document.referrer; + } + + return httpData; + }, + + _resetBackoff: function() { + this._backoffDuration = 0; + this._backoffStart = null; + }, + + _shouldBackoff: function() { + return this._backoffDuration && now() - this._backoffStart < this._backoffDuration; + }, + + /** + * Returns true if the in-process data payload matches the signature + * of the previously-sent data + * + * NOTE: This has to be done at this level because TraceKit can generate + * data from window.onerror WITHOUT an exception object (IE8, IE9, + * other old browsers). This can take the form of an "exception" + * data object with a single frame (derived from the onerror args). + */ + _isRepeatData: function(current) { + var last = this._lastData; + + if ( + !last || + current.message !== last.message || // defined for captureMessage + current.transaction !== last.transaction // defined for captureException/onerror + ) + return false; + + // Stacktrace interface (i.e. from captureMessage) + if (current.stacktrace || last.stacktrace) { + return isSameStacktrace(current.stacktrace, last.stacktrace); + } else if (current.exception || last.exception) { + // Exception interface (i.e. from captureException/onerror) + return isSameException(current.exception, last.exception); + } + + return true; + }, + + _setBackoffState: function(request) { + // If we are already in a backoff state, don't change anything + if (this._shouldBackoff()) { + return; + } + + var status = request.status; + + // 400 - project_id doesn't exist or some other fatal + // 401 - invalid/revoked dsn + // 429 - too many requests + if (!(status === 400 || status === 401 || status === 429)) return; + + var retry; + try { + // If Retry-After is not in Access-Control-Expose-Headers, most + // browsers will throw an exception trying to access it + if (supportsFetch()) { + retry = request.headers.get('Retry-After'); + } else { + retry = request.getResponseHeader('Retry-After'); + } + + // Retry-After is returned in seconds + retry = parseInt(retry, 10) * 1000; + } catch (e) { + /* eslint no-empty:0 */ + } + + this._backoffDuration = retry + ? // If Sentry server returned a Retry-After value, use it + retry + : // Otherwise, double the last backoff duration (starts at 1 sec) + this._backoffDuration * 2 || 1000; + + this._backoffStart = now(); + }, + + _send: function(data) { + var globalOptions = this._globalOptions; + + var baseData = { + project: this._globalProject, + logger: globalOptions.logger, + platform: 'javascript' + }, + httpData = this._getHttpData(); + + if (httpData) { + baseData.request = httpData; + } + + // HACK: delete `trimHeadFrames` to prevent from appearing in outbound payload + if (data.trimHeadFrames) delete data.trimHeadFrames; + + data = objectMerge(baseData, data); + + // Merge in the tags and extra separately since objectMerge doesn't handle a deep merge + data.tags = objectMerge(objectMerge({}, this._globalContext.tags), data.tags); + data.extra = objectMerge(objectMerge({}, this._globalContext.extra), data.extra); + + // Send along our own collected metadata with extra + data.extra['session:duration'] = now() - this._startTime; + + if (this._breadcrumbs && this._breadcrumbs.length > 0) { + // intentionally make shallow copy so that additions + // to breadcrumbs aren't accidentally sent in this request + data.breadcrumbs = { + values: [].slice.call(this._breadcrumbs, 0) + }; + } + + if (this._globalContext.user) { + // sentry.interfaces.User + data.user = this._globalContext.user; + } + + // Include the environment if it's defined in globalOptions + if (globalOptions.environment) data.environment = globalOptions.environment; + + // Include the release if it's defined in globalOptions + if (globalOptions.release) data.release = globalOptions.release; + + // Include server_name if it's defined in globalOptions + if (globalOptions.serverName) data.server_name = globalOptions.serverName; + + data = this._sanitizeData(data); + + // Cleanup empty properties before sending them to the server + Object.keys(data).forEach(function(key) { + if (data[key] == null || data[key] === '' || isEmptyObject(data[key])) { + delete data[key]; + } + }); + + if (isFunction(globalOptions.dataCallback)) { + data = globalOptions.dataCallback(data) || data; + } + + // Why?????????? + if (!data || isEmptyObject(data)) { + return; + } + + // Check if the request should be filtered or not + if ( + isFunction(globalOptions.shouldSendCallback) && + !globalOptions.shouldSendCallback(data) + ) { + return; + } + + // Backoff state: Sentry server previously responded w/ an error (e.g. 429 - too many requests), + // so drop requests until "cool-off" period has elapsed. + if (this._shouldBackoff()) { + this._logDebug('warn', 'Raven dropped error due to backoff: ', data); + return; + } + + if (typeof globalOptions.sampleRate === 'number') { + if (Math.random() < globalOptions.sampleRate) { + this._sendProcessedPayload(data); + } + } else { + this._sendProcessedPayload(data); + } + }, + + _sanitizeData: function(data) { + return sanitize(data, this._globalOptions.sanitizeKeys); + }, + + _getUuid: function() { + return uuid4(); + }, + + _sendProcessedPayload: function(data, callback) { + var self = this; + var globalOptions = this._globalOptions; + + if (!this.isSetup()) return; + + // Try and clean up the packet before sending by truncating long values + data = this._trimPacket(data); + + // ideally duplicate error testing should occur *before* dataCallback/shouldSendCallback, + // but this would require copying an un-truncated copy of the data packet, which can be + // arbitrarily deep (extra_data) -- could be worthwhile? will revisit + if (!this._globalOptions.allowDuplicates && this._isRepeatData(data)) { + this._logDebug('warn', 'Raven dropped repeat event: ', data); + return; + } + + // Send along an event_id if not explicitly passed. + // This event_id can be used to reference the error within Sentry itself. + // Set lastEventId after we know the error should actually be sent + this._lastEventId = data.event_id || (data.event_id = this._getUuid()); + + // Store outbound payload after trim + this._lastData = data; + + this._logDebug('debug', 'Raven about to send:', data); + + var auth = { + sentry_version: '7', + sentry_client: 'raven-js/' + this.VERSION, + sentry_key: this._globalKey + }; + + if (this._globalSecret) { + auth.sentry_secret = this._globalSecret; + } + + var exception = data.exception && data.exception.values[0]; + + // only capture 'sentry' breadcrumb is autoBreadcrumbs is truthy + if ( + this._globalOptions.autoBreadcrumbs && + this._globalOptions.autoBreadcrumbs.sentry + ) { + this.captureBreadcrumb({ + category: 'sentry', + message: exception + ? (exception.type ? exception.type + ': ' : '') + exception.value + : data.message, + event_id: data.event_id, + level: data.level || 'error' // presume error unless specified + }); + } + + var url = this._globalEndpoint; + (globalOptions.transport || this._makeRequest).call(this, { + url: url, + auth: auth, + data: data, + options: globalOptions, + onSuccess: function success() { + self._resetBackoff(); + + self._triggerEvent('success', { + data: data, + src: url + }); + callback && callback(); + }, + onError: function failure(error) { + self._logDebug('error', 'Raven transport failed to send: ', error); + + if (error.request) { + self._setBackoffState(error.request); + } + + self._triggerEvent('failure', { + data: data, + src: url + }); + error = error || new Error('Raven send failed (no additional details provided)'); + callback && callback(error); + } + }); + }, + + _makeRequest: function(opts) { + // Auth is intentionally sent as part of query string (NOT as custom HTTP header) to avoid preflight CORS requests + var url = opts.url + '?' + urlencode(opts.auth); + + var evaluatedHeaders = null; + var evaluatedFetchParameters = {}; + + if (opts.options.headers) { + evaluatedHeaders = this._evaluateHash(opts.options.headers); + } + + if (opts.options.fetchParameters) { + evaluatedFetchParameters = this._evaluateHash(opts.options.fetchParameters); + } + + if (supportsFetch()) { + evaluatedFetchParameters.body = stringify(opts.data); + + var defaultFetchOptions = objectMerge({}, this._fetchDefaults); + var fetchOptions = objectMerge(defaultFetchOptions, evaluatedFetchParameters); + + if (evaluatedHeaders) { + fetchOptions.headers = evaluatedHeaders; + } + + return _window + .fetch(url, fetchOptions) + .then(function(response) { + if (response.ok) { + opts.onSuccess && opts.onSuccess(); + } else { + var error = new Error('Sentry error code: ' + response.status); + // It's called request only to keep compatibility with XHR interface + // and not add more redundant checks in setBackoffState method + error.request = response; + opts.onError && opts.onError(error); + } + }) + ['catch'](function() { + opts.onError && + opts.onError(new Error('Sentry error code: network unavailable')); + }); + } + + var request = _window.XMLHttpRequest && new _window.XMLHttpRequest(); + if (!request) return; + + // if browser doesn't support CORS (e.g. IE7), we are out of luck + var hasCORS = 'withCredentials' in request || typeof XDomainRequest !== 'undefined'; + + if (!hasCORS) return; + + if ('withCredentials' in request) { + request.onreadystatechange = function() { + if (request.readyState !== 4) { + return; + } else if (request.status === 200) { + opts.onSuccess && opts.onSuccess(); + } else if (opts.onError) { + var err = new Error('Sentry error code: ' + request.status); + err.request = request; + opts.onError(err); + } + }; + } else { + request = new XDomainRequest(); + // xdomainrequest cannot go http -> https (or vice versa), + // so always use protocol relative + url = url.replace(/^https?:/, ''); + + // onreadystatechange not supported by XDomainRequest + if (opts.onSuccess) { + request.onload = opts.onSuccess; + } + if (opts.onError) { + request.onerror = function() { + var err = new Error('Sentry error code: XDomainRequest'); + err.request = request; + opts.onError(err); + }; + } + } + + request.open('POST', url); + + if (evaluatedHeaders) { + each(evaluatedHeaders, function(key, value) { + request.setRequestHeader(key, value); + }); + } + + request.send(stringify(opts.data)); + }, + + _evaluateHash: function(hash) { + var evaluated = {}; + + for (var key in hash) { + if (hash.hasOwnProperty(key)) { + var value = hash[key]; + evaluated[key] = typeof value === 'function' ? value() : value; + } + } + + return evaluated; + }, + + _logDebug: function(level) { + // We allow `Raven.debug` and `Raven.config(DSN, { debug: true })` to not make backward incompatible API change + if ( + this._originalConsoleMethods[level] && + (this.debug || this._globalOptions.debug) + ) { + // In IE<10 console methods do not have their own 'apply' method + Function.prototype.apply.call( + this._originalConsoleMethods[level], + this._originalConsole, + [].slice.call(arguments, 1) + ); + } + }, + + _mergeContext: function(key, context) { + if (isUndefined(context)) { + delete this._globalContext[key]; + } else { + this._globalContext[key] = objectMerge(this._globalContext[key] || {}, context); + } + } +}; + +// Deprecations +Raven.prototype.setUser = Raven.prototype.setUserContext; +Raven.prototype.setReleaseContext = Raven.prototype.setRelease; + +module.exports = Raven; + +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"10":10,"3":3,"4":4,"7":7,"8":8,"9":9}],6:[function(_dereq_,module,exports){ +(function (global){ +/** + * Enforces a single instance of the Raven client, and the + * main entry point for Raven. If you are a consumer of the + * Raven library, you SHOULD load this file (vs raven.js). + **/ + +var RavenConstructor = _dereq_(5); + +// This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) +var _window = + typeof window !== 'undefined' + ? window + : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; +var _Raven = _window.Raven; + +var Raven = new RavenConstructor(); + +/* + * Allow multiple versions of Raven to be installed. + * Strip Raven from the global context and returns the instance. + * + * @return {Raven} + */ +Raven.noConflict = function() { + _window.Raven = _Raven; + return Raven; +}; + +Raven.afterLoad(); + +module.exports = Raven; + +/** + * DISCLAIMER: + * + * Expose `Client` constructor for cases where user want to track multiple "sub-applications" in one larger app. + * It's not meant to be used by a wide audience, so pleaaase make sure that you know what you're doing before using it. + * Accidentally calling `install` multiple times, may result in an unexpected behavior that's very hard to debug. + * + * It's called `Client' to be in-line with Raven Node implementation. + * + * HOWTO: + * + * import Raven from 'raven-js'; + * + * const someAppReporter = new Raven.Client(); + * const someOtherAppReporter = new Raven.Client(); + * + * someAppReporter.config('__DSN__', { + * ...config goes here + * }); + * + * someOtherAppReporter.config('__OTHER_DSN__', { + * ...config goes here + * }); + * + * someAppReporter.captureMessage(...); + * someAppReporter.captureException(...); + * someAppReporter.captureBreadcrumb(...); + * + * someOtherAppReporter.captureMessage(...); + * someOtherAppReporter.captureException(...); + * someOtherAppReporter.captureBreadcrumb(...); + * + * It should "just work". + */ +module.exports.Client = RavenConstructor; + +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"5":5}],7:[function(_dereq_,module,exports){ +(function (global){ +var stringify = _dereq_(9); + +var _window = + typeof window !== 'undefined' + ? window + : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; + +function isObject(what) { + return typeof what === 'object' && what !== null; +} + +// Yanked from https://git.io/vS8DV re-used under CC0 +// with some tiny modifications +function isError(value) { + switch (Object.prototype.toString.call(value)) { + case '[object Error]': + return true; + case '[object Exception]': + return true; + case '[object DOMException]': + return true; + default: + return value instanceof Error; + } +} + +function isErrorEvent(value) { + return Object.prototype.toString.call(value) === '[object ErrorEvent]'; +} + +function isDOMError(value) { + return Object.prototype.toString.call(value) === '[object DOMError]'; +} + +function isDOMException(value) { + return Object.prototype.toString.call(value) === '[object DOMException]'; +} + +function isUndefined(what) { + return what === void 0; +} + +function isFunction(what) { + return typeof what === 'function'; +} + +function isPlainObject(what) { + return Object.prototype.toString.call(what) === '[object Object]'; +} + +function isString(what) { + return Object.prototype.toString.call(what) === '[object String]'; +} + +function isArray(what) { + return Object.prototype.toString.call(what) === '[object Array]'; +} + +function isEmptyObject(what) { + if (!isPlainObject(what)) return false; + + for (var _ in what) { + if (what.hasOwnProperty(_)) { + return false; + } + } + return true; +} + +function supportsErrorEvent() { + try { + new ErrorEvent(''); // eslint-disable-line no-new + return true; + } catch (e) { + return false; + } +} + +function supportsDOMError() { + try { + new DOMError(''); // eslint-disable-line no-new + return true; + } catch (e) { + return false; + } +} + +function supportsDOMException() { + try { + new DOMException(''); // eslint-disable-line no-new + return true; + } catch (e) { + return false; + } +} + +function supportsFetch() { + if (!('fetch' in _window)) return false; + + try { + new Headers(); // eslint-disable-line no-new + new Request(''); // eslint-disable-line no-new + new Response(); // eslint-disable-line no-new + return true; + } catch (e) { + return false; + } +} + +// Despite all stars in the sky saying that Edge supports old draft syntax, aka 'never', 'always', 'origin' and 'default +// https://caniuse.com/#feat=referrer-policy +// It doesn't. And it throw exception instead of ignoring this parameter... +// REF: https://github.com/getsentry/raven-js/issues/1233 +function supportsReferrerPolicy() { + if (!supportsFetch()) return false; + + try { + // eslint-disable-next-line no-new + new Request('pickleRick', { + referrerPolicy: 'origin' + }); + return true; + } catch (e) { + return false; + } +} + +function supportsPromiseRejectionEvent() { + return typeof PromiseRejectionEvent === 'function'; +} + +function wrappedCallback(callback) { + function dataCallback(data, original) { + var normalizedData = callback(data) || data; + if (original) { + return original(normalizedData) || normalizedData; + } + return normalizedData; + } + + return dataCallback; +} + +function each(obj, callback) { + var i, j; + + if (isUndefined(obj.length)) { + for (i in obj) { + if (hasKey(obj, i)) { + callback.call(null, i, obj[i]); + } + } + } else { + j = obj.length; + if (j) { + for (i = 0; i < j; i++) { + callback.call(null, i, obj[i]); + } + } + } +} + +function objectMerge(obj1, obj2) { + if (!obj2) { + return obj1; + } + each(obj2, function(key, value) { + obj1[key] = value; + }); + return obj1; +} + +/** + * This function is only used for react-native. + * react-native freezes object that have already been sent over the + * js bridge. We need this function in order to check if the object is frozen. + * So it's ok that objectFrozen returns false if Object.isFrozen is not + * supported because it's not relevant for other "platforms". See related issue: + * https://github.com/getsentry/react-native-sentry/issues/57 + */ +function objectFrozen(obj) { + if (!Object.isFrozen) { + return false; + } + return Object.isFrozen(obj); +} + +function truncate(str, max) { + if (typeof max !== 'number') { + throw new Error('2nd argument to `truncate` function should be a number'); + } + if (typeof str !== 'string' || max === 0) { + return str; + } + return str.length <= max ? str : str.substr(0, max) + '\u2026'; +} + +/** + * hasKey, a better form of hasOwnProperty + * Example: hasKey(MainHostObject, property) === true/false + * + * @param {Object} host object to check property + * @param {string} key to check + */ +function hasKey(object, key) { + return Object.prototype.hasOwnProperty.call(object, key); +} + +function joinRegExp(patterns) { + // Combine an array of regular expressions and strings into one large regexp + // Be mad. + var sources = [], + i = 0, + len = patterns.length, + pattern; + + for (; i < len; i++) { + pattern = patterns[i]; + if (isString(pattern)) { + // If it's a string, we need to escape it + // Taken from: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions + sources.push(pattern.replace(/([.*+?^=!:${}()|\[\]\/\\])/g, '\\$1')); + } else if (pattern && pattern.source) { + // If it's a regexp already, we want to extract the source + sources.push(pattern.source); + } + // Intentionally skip other cases + } + return new RegExp(sources.join('|'), 'i'); +} + +function urlencode(o) { + var pairs = []; + each(o, function(key, value) { + pairs.push(encodeURIComponent(key) + '=' + encodeURIComponent(value)); + }); + return pairs.join('&'); +} + +// borrowed from https://tools.ietf.org/html/rfc3986#appendix-B +// intentionally using regex and not href parsing trick because React Native and other +// environments where DOM might not be available +function parseUrl(url) { + if (typeof url !== 'string') return {}; + var match = url.match(/^(([^:\/?#]+):)?(\/\/([^\/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?$/); + + // coerce to undefined values to empty string so we don't get 'undefined' + var query = match[6] || ''; + var fragment = match[8] || ''; + return { + protocol: match[2], + host: match[4], + path: match[5], + relative: match[5] + query + fragment // everything minus origin + }; +} +function uuid4() { + var crypto = _window.crypto || _window.msCrypto; + + if (!isUndefined(crypto) && crypto.getRandomValues) { + // Use window.crypto API if available + // eslint-disable-next-line no-undef + var arr = new Uint16Array(8); + crypto.getRandomValues(arr); + + // set 4 in byte 7 + arr[3] = (arr[3] & 0xfff) | 0x4000; + // set 2 most significant bits of byte 9 to '10' + arr[4] = (arr[4] & 0x3fff) | 0x8000; + + var pad = function(num) { + var v = num.toString(16); + while (v.length < 4) { + v = '0' + v; + } + return v; + }; + + return ( + pad(arr[0]) + + pad(arr[1]) + + pad(arr[2]) + + pad(arr[3]) + + pad(arr[4]) + + pad(arr[5]) + + pad(arr[6]) + + pad(arr[7]) + ); + } else { + // http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/2117523#2117523 + return 'xxxxxxxxxxxx4xxxyxxxxxxxxxxxxxxx'.replace(/[xy]/g, function(c) { + var r = (Math.random() * 16) | 0, + v = c === 'x' ? r : (r & 0x3) | 0x8; + return v.toString(16); + }); + } +} + +/** + * Given a child DOM element, returns a query-selector statement describing that + * and its ancestors + * e.g. [HTMLElement] => body > div > input#foo.btn[name=baz] + * @param elem + * @returns {string} + */ +function htmlTreeAsString(elem) { + /* eslint no-extra-parens:0*/ + var MAX_TRAVERSE_HEIGHT = 5, + MAX_OUTPUT_LEN = 80, + out = [], + height = 0, + len = 0, + separator = ' > ', + sepLength = separator.length, + nextStr; + + while (elem && height++ < MAX_TRAVERSE_HEIGHT) { + nextStr = htmlElementAsString(elem); + // bail out if + // - nextStr is the 'html' element + // - the length of the string that would be created exceeds MAX_OUTPUT_LEN + // (ignore this limit if we are on the first iteration) + if ( + nextStr === 'html' || + (height > 1 && len + out.length * sepLength + nextStr.length >= MAX_OUTPUT_LEN) + ) { + break; + } + + out.push(nextStr); + + len += nextStr.length; + elem = elem.parentNode; + } + + return out.reverse().join(separator); +} + +/** + * Returns a simple, query-selector representation of a DOM element + * e.g. [HTMLElement] => input#foo.btn[name=baz] + * @param HTMLElement + * @returns {string} + */ +function htmlElementAsString(elem) { + var out = [], + className, + classes, + key, + attr, + i; + + if (!elem || !elem.tagName) { + return ''; + } + + out.push(elem.tagName.toLowerCase()); + if (elem.id) { + out.push('#' + elem.id); + } + + className = elem.className; + if (className && isString(className)) { + classes = className.split(/\s+/); + for (i = 0; i < classes.length; i++) { + out.push('.' + classes[i]); + } + } + var attrWhitelist = ['type', 'name', 'title', 'alt']; + for (i = 0; i < attrWhitelist.length; i++) { + key = attrWhitelist[i]; + attr = elem.getAttribute(key); + if (attr) { + out.push('[' + key + '="' + attr + '"]'); + } + } + return out.join(''); +} + +/** + * Returns true if either a OR b is truthy, but not both + */ +function isOnlyOneTruthy(a, b) { + return !!(!!a ^ !!b); +} + +/** + * Returns true if both parameters are undefined + */ +function isBothUndefined(a, b) { + return isUndefined(a) && isUndefined(b); +} + +/** + * Returns true if the two input exception interfaces have the same content + */ +function isSameException(ex1, ex2) { + if (isOnlyOneTruthy(ex1, ex2)) return false; + + ex1 = ex1.values[0]; + ex2 = ex2.values[0]; + + if (ex1.type !== ex2.type || ex1.value !== ex2.value) return false; + + // in case both stacktraces are undefined, we can't decide so default to false + if (isBothUndefined(ex1.stacktrace, ex2.stacktrace)) return false; + + return isSameStacktrace(ex1.stacktrace, ex2.stacktrace); +} + +/** + * Returns true if the two input stack trace interfaces have the same content + */ +function isSameStacktrace(stack1, stack2) { + if (isOnlyOneTruthy(stack1, stack2)) return false; + + var frames1 = stack1.frames; + var frames2 = stack2.frames; + + // Exit early if frame count differs + if (frames1.length !== frames2.length) return false; + + // Iterate through every frame; bail out if anything differs + var a, b; + for (var i = 0; i < frames1.length; i++) { + a = frames1[i]; + b = frames2[i]; + if ( + a.filename !== b.filename || + a.lineno !== b.lineno || + a.colno !== b.colno || + a['function'] !== b['function'] + ) + return false; + } + return true; +} + +/** + * Polyfill a method + * @param obj object e.g. `document` + * @param name method name present on object e.g. `addEventListener` + * @param replacement replacement function + * @param track {optional} record instrumentation to an array + */ +function fill(obj, name, replacement, track) { + if (obj == null) return; + var orig = obj[name]; + obj[name] = replacement(orig); + obj[name].__raven__ = true; + obj[name].__orig__ = orig; + if (track) { + track.push([obj, name, orig]); + } +} + +/** + * Join values in array + * @param input array of values to be joined together + * @param delimiter string to be placed in-between values + * @returns {string} + */ +function safeJoin(input, delimiter) { + if (!isArray(input)) return ''; + + var output = []; + + for (var i = 0; i < input.length; i++) { + try { + output.push(String(input[i])); + } catch (e) { + output.push('[value cannot be serialized]'); + } + } + + return output.join(delimiter); +} + +// Default Node.js REPL depth +var MAX_SERIALIZE_EXCEPTION_DEPTH = 3; +// 50kB, as 100kB is max payload size, so half sounds reasonable +var MAX_SERIALIZE_EXCEPTION_SIZE = 50 * 1024; +var MAX_SERIALIZE_KEYS_LENGTH = 40; + +function utf8Length(value) { + return ~-encodeURI(value).split(/%..|./).length; +} + +function jsonSize(value) { + return utf8Length(JSON.stringify(value)); +} + +function serializeValue(value) { + if (typeof value === 'string') { + var maxLength = 40; + return truncate(value, maxLength); + } else if ( + typeof value === 'number' || + typeof value === 'boolean' || + typeof value === 'undefined' + ) { + return value; + } + + var type = Object.prototype.toString.call(value); + + // Node.js REPL notation + if (type === '[object Object]') return '[Object]'; + if (type === '[object Array]') return '[Array]'; + if (type === '[object Function]') + return value.name ? '[Function: ' + value.name + ']' : '[Function]'; + + return value; +} + +function serializeObject(value, depth) { + if (depth === 0) return serializeValue(value); + + if (isPlainObject(value)) { + return Object.keys(value).reduce(function(acc, key) { + acc[key] = serializeObject(value[key], depth - 1); + return acc; + }, {}); + } else if (Array.isArray(value)) { + return value.map(function(val) { + return serializeObject(val, depth - 1); + }); + } + + return serializeValue(value); +} + +function serializeException(ex, depth, maxSize) { + if (!isPlainObject(ex)) return ex; + + depth = typeof depth !== 'number' ? MAX_SERIALIZE_EXCEPTION_DEPTH : depth; + maxSize = typeof depth !== 'number' ? MAX_SERIALIZE_EXCEPTION_SIZE : maxSize; + + var serialized = serializeObject(ex, depth); + + if (jsonSize(stringify(serialized)) > maxSize) { + return serializeException(ex, depth - 1); + } + + return serialized; +} + +function serializeKeysForMessage(keys, maxLength) { + if (typeof keys === 'number' || typeof keys === 'string') return keys.toString(); + if (!Array.isArray(keys)) return ''; + + keys = keys.filter(function(key) { + return typeof key === 'string'; + }); + if (keys.length === 0) return '[object has no keys]'; + + maxLength = typeof maxLength !== 'number' ? MAX_SERIALIZE_KEYS_LENGTH : maxLength; + if (keys[0].length >= maxLength) return keys[0]; + + for (var usedKeys = keys.length; usedKeys > 0; usedKeys--) { + var serialized = keys.slice(0, usedKeys).join(', '); + if (serialized.length > maxLength) continue; + if (usedKeys === keys.length) return serialized; + return serialized + '\u2026'; + } + + return ''; +} + +function sanitize(input, sanitizeKeys) { + if (!isArray(sanitizeKeys) || (isArray(sanitizeKeys) && sanitizeKeys.length === 0)) + return input; + + var sanitizeRegExp = joinRegExp(sanitizeKeys); + var sanitizeMask = '********'; + var safeInput; + + try { + safeInput = JSON.parse(stringify(input)); + } catch (o_O) { + return input; + } + + function sanitizeWorker(workerInput) { + if (isArray(workerInput)) { + return workerInput.map(function(val) { + return sanitizeWorker(val); + }); + } + + if (isPlainObject(workerInput)) { + return Object.keys(workerInput).reduce(function(acc, k) { + if (sanitizeRegExp.test(k)) { + acc[k] = sanitizeMask; + } else { + acc[k] = sanitizeWorker(workerInput[k]); + } + return acc; + }, {}); + } + + return workerInput; + } + + return sanitizeWorker(safeInput); +} + +module.exports = { + isObject: isObject, + isError: isError, + isErrorEvent: isErrorEvent, + isDOMError: isDOMError, + isDOMException: isDOMException, + isUndefined: isUndefined, + isFunction: isFunction, + isPlainObject: isPlainObject, + isString: isString, + isArray: isArray, + isEmptyObject: isEmptyObject, + supportsErrorEvent: supportsErrorEvent, + supportsDOMError: supportsDOMError, + supportsDOMException: supportsDOMException, + supportsFetch: supportsFetch, + supportsReferrerPolicy: supportsReferrerPolicy, + supportsPromiseRejectionEvent: supportsPromiseRejectionEvent, + wrappedCallback: wrappedCallback, + each: each, + objectMerge: objectMerge, + truncate: truncate, + objectFrozen: objectFrozen, + hasKey: hasKey, + joinRegExp: joinRegExp, + urlencode: urlencode, + uuid4: uuid4, + htmlTreeAsString: htmlTreeAsString, + htmlElementAsString: htmlElementAsString, + isSameException: isSameException, + isSameStacktrace: isSameStacktrace, + parseUrl: parseUrl, + fill: fill, + safeJoin: safeJoin, + serializeException: serializeException, + serializeKeysForMessage: serializeKeysForMessage, + sanitize: sanitize +}; + +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"9":9}],8:[function(_dereq_,module,exports){ +(function (global){ +var utils = _dereq_(7); + +/* + TraceKit - Cross brower stack traces + + This was originally forked from github.com/occ/TraceKit, but has since been + largely re-written and is now maintained as part of raven-js. Tests for + this are in test/vendor. + + MIT license +*/ + +var TraceKit = { + collectWindowErrors: true, + debug: false +}; + +// This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) +var _window = + typeof window !== 'undefined' + ? window + : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; + +// global reference to slice +var _slice = [].slice; +var UNKNOWN_FUNCTION = '?'; + +// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error#Error_types +var ERROR_TYPES_RE = /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/; + +function getLocationHref() { + if (typeof document === 'undefined' || document.location == null) return ''; + return document.location.href; +} + +function getLocationOrigin() { + if (typeof document === 'undefined' || document.location == null) return ''; + + // Oh dear IE10... + if (!document.location.origin) { + document.location.origin = + document.location.protocol + + '//' + + document.location.hostname + + (document.location.port ? ':' + document.location.port : ''); + } + + return document.location.origin; +} + +/** + * TraceKit.report: cross-browser processing of unhandled exceptions + * + * Syntax: + * TraceKit.report.subscribe(function(stackInfo) { ... }) + * TraceKit.report.unsubscribe(function(stackInfo) { ... }) + * TraceKit.report(exception) + * try { ...code... } catch(ex) { TraceKit.report(ex); } + * + * Supports: + * - Firefox: full stack trace with line numbers, plus column number + * on top frame; column number is not guaranteed + * - Opera: full stack trace with line and column numbers + * - Chrome: full stack trace with line and column numbers + * - Safari: line and column number for the top frame only; some frames + * may be missing, and column number is not guaranteed + * - IE: line and column number for the top frame only; some frames + * may be missing, and column number is not guaranteed + * + * In theory, TraceKit should work on all of the following versions: + * - IE5.5+ (only 8.0 tested) + * - Firefox 0.9+ (only 3.5+ tested) + * - Opera 7+ (only 10.50 tested; versions 9 and earlier may require + * Exceptions Have Stacktrace to be enabled in opera:config) + * - Safari 3+ (only 4+ tested) + * - Chrome 1+ (only 5+ tested) + * - Konqueror 3.5+ (untested) + * + * Requires TraceKit.computeStackTrace. + * + * Tries to catch all unhandled exceptions and report them to the + * subscribed handlers. Please note that TraceKit.report will rethrow the + * exception. This is REQUIRED in order to get a useful stack trace in IE. + * If the exception does not reach the top of the browser, you will only + * get a stack trace from the point where TraceKit.report was called. + * + * Handlers receive a stackInfo object as described in the + * TraceKit.computeStackTrace docs. + */ +TraceKit.report = (function reportModuleWrapper() { + var handlers = [], + lastArgs = null, + lastException = null, + lastExceptionStack = null; + + /** + * Add a crash handler. + * @param {Function} handler + */ + function subscribe(handler) { + installGlobalHandler(); + handlers.push(handler); + } + + /** + * Remove a crash handler. + * @param {Function} handler + */ + function unsubscribe(handler) { + for (var i = handlers.length - 1; i >= 0; --i) { + if (handlers[i] === handler) { + handlers.splice(i, 1); + } + } + } + + /** + * Remove all crash handlers. + */ + function unsubscribeAll() { + uninstallGlobalHandler(); + handlers = []; + } + + /** + * Dispatch stack information to all handlers. + * @param {Object.} stack + */ + function notifyHandlers(stack, isWindowError) { + var exception = null; + if (isWindowError && !TraceKit.collectWindowErrors) { + return; + } + for (var i in handlers) { + if (handlers.hasOwnProperty(i)) { + try { + handlers[i].apply(null, [stack].concat(_slice.call(arguments, 2))); + } catch (inner) { + exception = inner; + } + } + } + + if (exception) { + throw exception; + } + } + + var _oldOnerrorHandler, _onErrorHandlerInstalled; + + /** + * Ensures all global unhandled exceptions are recorded. + * Supported by Gecko and IE. + * @param {string} msg Error message. + * @param {string} url URL of script that generated the exception. + * @param {(number|string)} lineNo The line number at which the error + * occurred. + * @param {?(number|string)} colNo The column number at which the error + * occurred. + * @param {?Error} ex The actual Error object. + */ + function traceKitWindowOnError(msg, url, lineNo, colNo, ex) { + var stack = null; + // If 'ex' is ErrorEvent, get real Error from inside + var exception = utils.isErrorEvent(ex) ? ex.error : ex; + // If 'msg' is ErrorEvent, get real message from inside + var message = utils.isErrorEvent(msg) ? msg.message : msg; + + if (lastExceptionStack) { + TraceKit.computeStackTrace.augmentStackTraceWithInitialElement( + lastExceptionStack, + url, + lineNo, + message + ); + processLastException(); + } else if (exception && utils.isError(exception)) { + // non-string `exception` arg; attempt to extract stack trace + + // New chrome and blink send along a real error object + // Let's just report that like a normal error. + // See: https://mikewest.org/2013/08/debugging-runtime-errors-with-window-onerror + stack = TraceKit.computeStackTrace(exception); + notifyHandlers(stack, true); + } else { + var location = { + url: url, + line: lineNo, + column: colNo + }; + + var name = undefined; + var groups; + + if ({}.toString.call(message) === '[object String]') { + var groups = message.match(ERROR_TYPES_RE); + if (groups) { + name = groups[1]; + message = groups[2]; + } + } + + location.func = UNKNOWN_FUNCTION; + + stack = { + name: name, + message: message, + url: getLocationHref(), + stack: [location] + }; + notifyHandlers(stack, true); + } + + if (_oldOnerrorHandler) { + return _oldOnerrorHandler.apply(this, arguments); + } + + return false; + } + + function installGlobalHandler() { + if (_onErrorHandlerInstalled) { + return; + } + _oldOnerrorHandler = _window.onerror; + _window.onerror = traceKitWindowOnError; + _onErrorHandlerInstalled = true; + } + + function uninstallGlobalHandler() { + if (!_onErrorHandlerInstalled) { + return; + } + _window.onerror = _oldOnerrorHandler; + _onErrorHandlerInstalled = false; + _oldOnerrorHandler = undefined; + } + + function processLastException() { + var _lastExceptionStack = lastExceptionStack, + _lastArgs = lastArgs; + lastArgs = null; + lastExceptionStack = null; + lastException = null; + notifyHandlers.apply(null, [_lastExceptionStack, false].concat(_lastArgs)); + } + + /** + * Reports an unhandled Error to TraceKit. + * @param {Error} ex + * @param {?boolean} rethrow If false, do not re-throw the exception. + * Only used for window.onerror to not cause an infinite loop of + * rethrowing. + */ + function report(ex, rethrow) { + var args = _slice.call(arguments, 1); + if (lastExceptionStack) { + if (lastException === ex) { + return; // already caught by an inner catch block, ignore + } else { + processLastException(); + } + } + + var stack = TraceKit.computeStackTrace(ex); + lastExceptionStack = stack; + lastException = ex; + lastArgs = args; + + // If the stack trace is incomplete, wait for 2 seconds for + // slow slow IE to see if onerror occurs or not before reporting + // this exception; otherwise, we will end up with an incomplete + // stack trace + setTimeout(function() { + if (lastException === ex) { + processLastException(); + } + }, stack.incomplete ? 2000 : 0); + + if (rethrow !== false) { + throw ex; // re-throw to propagate to the top level (and cause window.onerror) + } + } + + report.subscribe = subscribe; + report.unsubscribe = unsubscribe; + report.uninstall = unsubscribeAll; + return report; +})(); + +/** + * TraceKit.computeStackTrace: cross-browser stack traces in JavaScript + * + * Syntax: + * s = TraceKit.computeStackTrace(exception) // consider using TraceKit.report instead (see below) + * Returns: + * s.name - exception name + * s.message - exception message + * s.stack[i].url - JavaScript or HTML file URL + * s.stack[i].func - function name, or empty for anonymous functions (if guessing did not work) + * s.stack[i].args - arguments passed to the function, if known + * s.stack[i].line - line number, if known + * s.stack[i].column - column number, if known + * + * Supports: + * - Firefox: full stack trace with line numbers and unreliable column + * number on top frame + * - Opera 10: full stack trace with line and column numbers + * - Opera 9-: full stack trace with line numbers + * - Chrome: full stack trace with line and column numbers + * - Safari: line and column number for the topmost stacktrace element + * only + * - IE: no line numbers whatsoever + * + * Tries to guess names of anonymous functions by looking for assignments + * in the source code. In IE and Safari, we have to guess source file names + * by searching for function bodies inside all page scripts. This will not + * work for scripts that are loaded cross-domain. + * Here be dragons: some function names may be guessed incorrectly, and + * duplicate functions may be mismatched. + * + * TraceKit.computeStackTrace should only be used for tracing purposes. + * Logging of unhandled exceptions should be done with TraceKit.report, + * which builds on top of TraceKit.computeStackTrace and provides better + * IE support by utilizing the window.onerror event to retrieve information + * about the top of the stack. + * + * Note: In IE and Safari, no stack trace is recorded on the Error object, + * so computeStackTrace instead walks its *own* chain of callers. + * This means that: + * * in Safari, some methods may be missing from the stack trace; + * * in IE, the topmost function in the stack trace will always be the + * caller of computeStackTrace. + * + * This is okay for tracing (because you are likely to be calling + * computeStackTrace from the function you want to be the topmost element + * of the stack trace anyway), but not okay for logging unhandled + * exceptions (because your catch block will likely be far away from the + * inner function that actually caused the exception). + * + */ +TraceKit.computeStackTrace = (function computeStackTraceWrapper() { + // Contents of Exception in various browsers. + // + // SAFARI: + // ex.message = Can't find variable: qq + // ex.line = 59 + // ex.sourceId = 580238192 + // ex.sourceURL = http://... + // ex.expressionBeginOffset = 96 + // ex.expressionCaretOffset = 98 + // ex.expressionEndOffset = 98 + // ex.name = ReferenceError + // + // FIREFOX: + // ex.message = qq is not defined + // ex.fileName = http://... + // ex.lineNumber = 59 + // ex.columnNumber = 69 + // ex.stack = ...stack trace... (see the example below) + // ex.name = ReferenceError + // + // CHROME: + // ex.message = qq is not defined + // ex.name = ReferenceError + // ex.type = not_defined + // ex.arguments = ['aa'] + // ex.stack = ...stack trace... + // + // INTERNET EXPLORER: + // ex.message = ... + // ex.name = ReferenceError + // + // OPERA: + // ex.message = ...message... (see the example below) + // ex.name = ReferenceError + // ex.opera#sourceloc = 11 (pretty much useless, duplicates the info in ex.message) + // ex.stacktrace = n/a; see 'opera:config#UserPrefs|Exceptions Have Stacktrace' + + /** + * Computes stack trace information from the stack property. + * Chrome and Gecko use this property. + * @param {Error} ex + * @return {?Object.} Stack trace information. + */ + function computeStackTraceFromStackProp(ex) { + if (typeof ex.stack === 'undefined' || !ex.stack) return; + + var chrome = /^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i; + var winjs = /^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i; + // NOTE: blob urls are now supposed to always have an origin, therefore it's format + // which is `blob:http://url/path/with-some-uuid`, is matched by `blob.*?:\/` as well + var gecko = /^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i; + // Used to additionally parse URL/line/column from eval frames + var geckoEval = /(\S+) line (\d+)(?: > eval line \d+)* > eval/i; + var chromeEval = /\((\S*)(?::(\d+))(?::(\d+))\)/; + var lines = ex.stack.split('\n'); + var stack = []; + var submatch; + var parts; + var element; + var reference = /^(.*) is undefined$/.exec(ex.message); + + for (var i = 0, j = lines.length; i < j; ++i) { + if ((parts = chrome.exec(lines[i]))) { + var isNative = parts[2] && parts[2].indexOf('native') === 0; // start of line + var isEval = parts[2] && parts[2].indexOf('eval') === 0; // start of line + if (isEval && (submatch = chromeEval.exec(parts[2]))) { + // throw out eval line/column and use top-most line/column number + parts[2] = submatch[1]; // url + parts[3] = submatch[2]; // line + parts[4] = submatch[3]; // column + } + element = { + url: !isNative ? parts[2] : null, + func: parts[1] || UNKNOWN_FUNCTION, + args: isNative ? [parts[2]] : [], + line: parts[3] ? +parts[3] : null, + column: parts[4] ? +parts[4] : null + }; + } else if ((parts = winjs.exec(lines[i]))) { + element = { + url: parts[2], + func: parts[1] || UNKNOWN_FUNCTION, + args: [], + line: +parts[3], + column: parts[4] ? +parts[4] : null + }; + } else if ((parts = gecko.exec(lines[i]))) { + var isEval = parts[3] && parts[3].indexOf(' > eval') > -1; + if (isEval && (submatch = geckoEval.exec(parts[3]))) { + // throw out eval line/column and use top-most line number + parts[3] = submatch[1]; + parts[4] = submatch[2]; + parts[5] = null; // no column when eval + } else if (i === 0 && !parts[5] && typeof ex.columnNumber !== 'undefined') { + // FireFox uses this awesome columnNumber property for its top frame + // Also note, Firefox's column number is 0-based and everything else expects 1-based, + // so adding 1 + // NOTE: this hack doesn't work if top-most frame is eval + stack[0].column = ex.columnNumber + 1; + } + element = { + url: parts[3], + func: parts[1] || UNKNOWN_FUNCTION, + args: parts[2] ? parts[2].split(',') : [], + line: parts[4] ? +parts[4] : null, + column: parts[5] ? +parts[5] : null + }; + } else { + continue; + } + + if (!element.func && element.line) { + element.func = UNKNOWN_FUNCTION; + } + + if (element.url && element.url.substr(0, 5) === 'blob:') { + // Special case for handling JavaScript loaded into a blob. + // We use a synchronous AJAX request here as a blob is already in + // memory - it's not making a network request. This will generate a warning + // in the browser console, but there has already been an error so that's not + // that much of an issue. + var xhr = new XMLHttpRequest(); + xhr.open('GET', element.url, false); + xhr.send(null); + + // If we failed to download the source, skip this patch + if (xhr.status === 200) { + var source = xhr.responseText || ''; + + // We trim the source down to the last 300 characters as sourceMappingURL is always at the end of the file. + // Why 300? To be in line with: https://github.com/getsentry/sentry/blob/4af29e8f2350e20c28a6933354e4f42437b4ba42/src/sentry/lang/javascript/processor.py#L164-L175 + source = source.slice(-300); + + // Now we dig out the source map URL + var sourceMaps = source.match(/\/\/# sourceMappingURL=(.*)$/); + + // If we don't find a source map comment or we find more than one, continue on to the next element. + if (sourceMaps) { + var sourceMapAddress = sourceMaps[1]; + + // Now we check to see if it's a relative URL. + // If it is, convert it to an absolute one. + if (sourceMapAddress.charAt(0) === '~') { + sourceMapAddress = getLocationOrigin() + sourceMapAddress.slice(1); + } + + // Now we strip the '.map' off of the end of the URL and update the + // element so that Sentry can match the map to the blob. + element.url = sourceMapAddress.slice(0, -4); + } + } + } + + stack.push(element); + } + + if (!stack.length) { + return null; + } + + return { + name: ex.name, + message: ex.message, + url: getLocationHref(), + stack: stack + }; + } + + /** + * Adds information about the first frame to incomplete stack traces. + * Safari and IE require this to get complete data on the first frame. + * @param {Object.} stackInfo Stack trace information from + * one of the compute* methods. + * @param {string} url The URL of the script that caused an error. + * @param {(number|string)} lineNo The line number of the script that + * caused an error. + * @param {string=} message The error generated by the browser, which + * hopefully contains the name of the object that caused the error. + * @return {boolean} Whether or not the stack information was + * augmented. + */ + function augmentStackTraceWithInitialElement(stackInfo, url, lineNo, message) { + var initial = { + url: url, + line: lineNo + }; + + if (initial.url && initial.line) { + stackInfo.incomplete = false; + + if (!initial.func) { + initial.func = UNKNOWN_FUNCTION; + } + + if (stackInfo.stack.length > 0) { + if (stackInfo.stack[0].url === initial.url) { + if (stackInfo.stack[0].line === initial.line) { + return false; // already in stack trace + } else if ( + !stackInfo.stack[0].line && + stackInfo.stack[0].func === initial.func + ) { + stackInfo.stack[0].line = initial.line; + return false; + } + } + } + + stackInfo.stack.unshift(initial); + stackInfo.partial = true; + return true; + } else { + stackInfo.incomplete = true; + } + + return false; + } + + /** + * Computes stack trace information by walking the arguments.caller + * chain at the time the exception occurred. This will cause earlier + * frames to be missed but is the only way to get any stack trace in + * Safari and IE. The top frame is restored by + * {@link augmentStackTraceWithInitialElement}. + * @param {Error} ex + * @return {?Object.} Stack trace information. + */ + function computeStackTraceByWalkingCallerChain(ex, depth) { + var functionName = /function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i, + stack = [], + funcs = {}, + recursion = false, + parts, + item, + source; + + for ( + var curr = computeStackTraceByWalkingCallerChain.caller; + curr && !recursion; + curr = curr.caller + ) { + if (curr === computeStackTrace || curr === TraceKit.report) { + // console.log('skipping internal function'); + continue; + } + + item = { + url: null, + func: UNKNOWN_FUNCTION, + line: null, + column: null + }; + + if (curr.name) { + item.func = curr.name; + } else if ((parts = functionName.exec(curr.toString()))) { + item.func = parts[1]; + } + + if (typeof item.func === 'undefined') { + try { + item.func = parts.input.substring(0, parts.input.indexOf('{')); + } catch (e) {} + } + + if (funcs['' + curr]) { + recursion = true; + } else { + funcs['' + curr] = true; + } + + stack.push(item); + } + + if (depth) { + // console.log('depth is ' + depth); + // console.log('stack is ' + stack.length); + stack.splice(0, depth); + } + + var result = { + name: ex.name, + message: ex.message, + url: getLocationHref(), + stack: stack + }; + augmentStackTraceWithInitialElement( + result, + ex.sourceURL || ex.fileName, + ex.line || ex.lineNumber, + ex.message || ex.description + ); + return result; + } + + /** + * Computes a stack trace for an exception. + * @param {Error} ex + * @param {(string|number)=} depth + */ + function computeStackTrace(ex, depth) { + var stack = null; + depth = depth == null ? 0 : +depth; + + try { + stack = computeStackTraceFromStackProp(ex); + if (stack) { + return stack; + } + } catch (e) { + if (TraceKit.debug) { + throw e; + } + } + + try { + stack = computeStackTraceByWalkingCallerChain(ex, depth + 1); + if (stack) { + return stack; + } + } catch (e) { + if (TraceKit.debug) { + throw e; + } + } + return { + name: ex.name, + message: ex.message, + url: getLocationHref() + }; + } + + computeStackTrace.augmentStackTraceWithInitialElement = augmentStackTraceWithInitialElement; + computeStackTrace.computeStackTraceFromStackProp = computeStackTraceFromStackProp; + + return computeStackTrace; +})(); + +module.exports = TraceKit; + +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"7":7}],9:[function(_dereq_,module,exports){ +/* + json-stringify-safe + Like JSON.stringify, but doesn't throw on circular references. + + Originally forked from https://github.com/isaacs/json-stringify-safe + version 5.0.1 on 3/8/2017 and modified to handle Errors serialization + and IE8 compatibility. Tests for this are in test/vendor. + + ISC license: https://github.com/isaacs/json-stringify-safe/blob/master/LICENSE +*/ + +exports = module.exports = stringify; +exports.getSerialize = serializer; + +function indexOf(haystack, needle) { + for (var i = 0; i < haystack.length; ++i) { + if (haystack[i] === needle) return i; + } + return -1; +} + +function stringify(obj, replacer, spaces, cycleReplacer) { + return JSON.stringify(obj, serializer(replacer, cycleReplacer), spaces); +} + +// https://github.com/ftlabs/js-abbreviate/blob/fa709e5f139e7770a71827b1893f22418097fbda/index.js#L95-L106 +function stringifyError(value) { + var err = { + // These properties are implemented as magical getters and don't show up in for in + stack: value.stack, + message: value.message, + name: value.name + }; + + for (var i in value) { + if (Object.prototype.hasOwnProperty.call(value, i)) { + err[i] = value[i]; + } + } + + return err; +} + +function serializer(replacer, cycleReplacer) { + var stack = []; + var keys = []; + + if (cycleReplacer == null) { + cycleReplacer = function(key, value) { + if (stack[0] === value) { + return '[Circular ~]'; + } + return '[Circular ~.' + keys.slice(0, indexOf(stack, value)).join('.') + ']'; + }; + } + + return function(key, value) { + if (stack.length > 0) { + var thisPos = indexOf(stack, this); + ~thisPos ? stack.splice(thisPos + 1) : stack.push(this); + ~thisPos ? keys.splice(thisPos, Infinity, key) : keys.push(key); + + if (~indexOf(stack, value)) { + value = cycleReplacer.call(this, key, value); + } + } else { + stack.push(value); + } + + return replacer == null + ? value instanceof Error ? stringifyError(value) : value + : replacer.call(this, key, value); + }; +} + +},{}],10:[function(_dereq_,module,exports){ +/* + * JavaScript MD5 + * https://github.com/blueimp/JavaScript-MD5 + * + * Copyright 2011, Sebastian Tschan + * https://blueimp.net + * + * Licensed under the MIT license: + * https://opensource.org/licenses/MIT + * + * Based on + * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message + * Digest Algorithm, as defined in RFC 1321. + * Version 2.2 Copyright (C) Paul Johnston 1999 - 2009 + * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet + * Distributed under the BSD License + * See http://pajhome.org.uk/crypt/md5 for more info. + */ + +/* +* Add integers, wrapping at 2^32. This uses 16-bit operations internally +* to work around bugs in some JS interpreters. +*/ +function safeAdd(x, y) { + var lsw = (x & 0xffff) + (y & 0xffff); + var msw = (x >> 16) + (y >> 16) + (lsw >> 16); + return (msw << 16) | (lsw & 0xffff); +} + +/* +* Bitwise rotate a 32-bit number to the left. +*/ +function bitRotateLeft(num, cnt) { + return (num << cnt) | (num >>> (32 - cnt)); +} + +/* +* These functions implement the four basic operations the algorithm uses. +*/ +function md5cmn(q, a, b, x, s, t) { + return safeAdd(bitRotateLeft(safeAdd(safeAdd(a, q), safeAdd(x, t)), s), b); +} +function md5ff(a, b, c, d, x, s, t) { + return md5cmn((b & c) | (~b & d), a, b, x, s, t); +} +function md5gg(a, b, c, d, x, s, t) { + return md5cmn((b & d) | (c & ~d), a, b, x, s, t); +} +function md5hh(a, b, c, d, x, s, t) { + return md5cmn(b ^ c ^ d, a, b, x, s, t); +} +function md5ii(a, b, c, d, x, s, t) { + return md5cmn(c ^ (b | ~d), a, b, x, s, t); +} + +/* +* Calculate the MD5 of an array of little-endian words, and a bit length. +*/ +function binlMD5(x, len) { + /* append padding */ + x[len >> 5] |= 0x80 << (len % 32); + x[(((len + 64) >>> 9) << 4) + 14] = len; + + var i; + var olda; + var oldb; + var oldc; + var oldd; + var a = 1732584193; + var b = -271733879; + var c = -1732584194; + var d = 271733878; + + for (i = 0; i < x.length; i += 16) { + olda = a; + oldb = b; + oldc = c; + oldd = d; + + a = md5ff(a, b, c, d, x[i], 7, -680876936); + d = md5ff(d, a, b, c, x[i + 1], 12, -389564586); + c = md5ff(c, d, a, b, x[i + 2], 17, 606105819); + b = md5ff(b, c, d, a, x[i + 3], 22, -1044525330); + a = md5ff(a, b, c, d, x[i + 4], 7, -176418897); + d = md5ff(d, a, b, c, x[i + 5], 12, 1200080426); + c = md5ff(c, d, a, b, x[i + 6], 17, -1473231341); + b = md5ff(b, c, d, a, x[i + 7], 22, -45705983); + a = md5ff(a, b, c, d, x[i + 8], 7, 1770035416); + d = md5ff(d, a, b, c, x[i + 9], 12, -1958414417); + c = md5ff(c, d, a, b, x[i + 10], 17, -42063); + b = md5ff(b, c, d, a, x[i + 11], 22, -1990404162); + a = md5ff(a, b, c, d, x[i + 12], 7, 1804603682); + d = md5ff(d, a, b, c, x[i + 13], 12, -40341101); + c = md5ff(c, d, a, b, x[i + 14], 17, -1502002290); + b = md5ff(b, c, d, a, x[i + 15], 22, 1236535329); + + a = md5gg(a, b, c, d, x[i + 1], 5, -165796510); + d = md5gg(d, a, b, c, x[i + 6], 9, -1069501632); + c = md5gg(c, d, a, b, x[i + 11], 14, 643717713); + b = md5gg(b, c, d, a, x[i], 20, -373897302); + a = md5gg(a, b, c, d, x[i + 5], 5, -701558691); + d = md5gg(d, a, b, c, x[i + 10], 9, 38016083); + c = md5gg(c, d, a, b, x[i + 15], 14, -660478335); + b = md5gg(b, c, d, a, x[i + 4], 20, -405537848); + a = md5gg(a, b, c, d, x[i + 9], 5, 568446438); + d = md5gg(d, a, b, c, x[i + 14], 9, -1019803690); + c = md5gg(c, d, a, b, x[i + 3], 14, -187363961); + b = md5gg(b, c, d, a, x[i + 8], 20, 1163531501); + a = md5gg(a, b, c, d, x[i + 13], 5, -1444681467); + d = md5gg(d, a, b, c, x[i + 2], 9, -51403784); + c = md5gg(c, d, a, b, x[i + 7], 14, 1735328473); + b = md5gg(b, c, d, a, x[i + 12], 20, -1926607734); + + a = md5hh(a, b, c, d, x[i + 5], 4, -378558); + d = md5hh(d, a, b, c, x[i + 8], 11, -2022574463); + c = md5hh(c, d, a, b, x[i + 11], 16, 1839030562); + b = md5hh(b, c, d, a, x[i + 14], 23, -35309556); + a = md5hh(a, b, c, d, x[i + 1], 4, -1530992060); + d = md5hh(d, a, b, c, x[i + 4], 11, 1272893353); + c = md5hh(c, d, a, b, x[i + 7], 16, -155497632); + b = md5hh(b, c, d, a, x[i + 10], 23, -1094730640); + a = md5hh(a, b, c, d, x[i + 13], 4, 681279174); + d = md5hh(d, a, b, c, x[i], 11, -358537222); + c = md5hh(c, d, a, b, x[i + 3], 16, -722521979); + b = md5hh(b, c, d, a, x[i + 6], 23, 76029189); + a = md5hh(a, b, c, d, x[i + 9], 4, -640364487); + d = md5hh(d, a, b, c, x[i + 12], 11, -421815835); + c = md5hh(c, d, a, b, x[i + 15], 16, 530742520); + b = md5hh(b, c, d, a, x[i + 2], 23, -995338651); + + a = md5ii(a, b, c, d, x[i], 6, -198630844); + d = md5ii(d, a, b, c, x[i + 7], 10, 1126891415); + c = md5ii(c, d, a, b, x[i + 14], 15, -1416354905); + b = md5ii(b, c, d, a, x[i + 5], 21, -57434055); + a = md5ii(a, b, c, d, x[i + 12], 6, 1700485571); + d = md5ii(d, a, b, c, x[i + 3], 10, -1894986606); + c = md5ii(c, d, a, b, x[i + 10], 15, -1051523); + b = md5ii(b, c, d, a, x[i + 1], 21, -2054922799); + a = md5ii(a, b, c, d, x[i + 8], 6, 1873313359); + d = md5ii(d, a, b, c, x[i + 15], 10, -30611744); + c = md5ii(c, d, a, b, x[i + 6], 15, -1560198380); + b = md5ii(b, c, d, a, x[i + 13], 21, 1309151649); + a = md5ii(a, b, c, d, x[i + 4], 6, -145523070); + d = md5ii(d, a, b, c, x[i + 11], 10, -1120210379); + c = md5ii(c, d, a, b, x[i + 2], 15, 718787259); + b = md5ii(b, c, d, a, x[i + 9], 21, -343485551); + + a = safeAdd(a, olda); + b = safeAdd(b, oldb); + c = safeAdd(c, oldc); + d = safeAdd(d, oldd); + } + return [a, b, c, d]; +} + +/* +* Convert an array of little-endian words to a string +*/ +function binl2rstr(input) { + var i; + var output = ''; + var length32 = input.length * 32; + for (i = 0; i < length32; i += 8) { + output += String.fromCharCode((input[i >> 5] >>> (i % 32)) & 0xff); + } + return output; +} + +/* +* Convert a raw string to an array of little-endian words +* Characters >255 have their high-byte silently ignored. +*/ +function rstr2binl(input) { + var i; + var output = []; + output[(input.length >> 2) - 1] = undefined; + for (i = 0; i < output.length; i += 1) { + output[i] = 0; + } + var length8 = input.length * 8; + for (i = 0; i < length8; i += 8) { + output[i >> 5] |= (input.charCodeAt(i / 8) & 0xff) << (i % 32); + } + return output; +} + +/* +* Calculate the MD5 of a raw string +*/ +function rstrMD5(s) { + return binl2rstr(binlMD5(rstr2binl(s), s.length * 8)); +} + +/* +* Calculate the HMAC-MD5, of a key and some data (raw strings) +*/ +function rstrHMACMD5(key, data) { + var i; + var bkey = rstr2binl(key); + var ipad = []; + var opad = []; + var hash; + ipad[15] = opad[15] = undefined; + if (bkey.length > 16) { + bkey = binlMD5(bkey, key.length * 8); + } + for (i = 0; i < 16; i += 1) { + ipad[i] = bkey[i] ^ 0x36363636; + opad[i] = bkey[i] ^ 0x5c5c5c5c; + } + hash = binlMD5(ipad.concat(rstr2binl(data)), 512 + data.length * 8); + return binl2rstr(binlMD5(opad.concat(hash), 512 + 128)); +} + +/* +* Convert a raw string to a hex string +*/ +function rstr2hex(input) { + var hexTab = '0123456789abcdef'; + var output = ''; + var x; + var i; + for (i = 0; i < input.length; i += 1) { + x = input.charCodeAt(i); + output += hexTab.charAt((x >>> 4) & 0x0f) + hexTab.charAt(x & 0x0f); + } + return output; +} + +/* +* Encode a string as utf-8 +*/ +function str2rstrUTF8(input) { + return unescape(encodeURIComponent(input)); +} + +/* +* Take string arguments and return either raw or hex encoded strings +*/ +function rawMD5(s) { + return rstrMD5(str2rstrUTF8(s)); +} +function hexMD5(s) { + return rstr2hex(rawMD5(s)); +} +function rawHMACMD5(k, d) { + return rstrHMACMD5(str2rstrUTF8(k), str2rstrUTF8(d)); +} +function hexHMACMD5(k, d) { + return rstr2hex(rawHMACMD5(k, d)); +} + +function md5(string, key, raw) { + if (!key) { + if (!raw) { + return hexMD5(string); + } + return rawMD5(string); + } + if (!raw) { + return hexHMACMD5(key, string); + } + return rawHMACMD5(key, string); +} + +module.exports = md5; + +},{}]},{},[6,1,2])(6) +}); \ No newline at end of file diff --git a/packages/raven-js/dist/angular,console/raven.min.js b/packages/raven-js/dist/angular,console/raven.min.js new file mode 100644 index 000000000000..67c09e7f45cc --- /dev/null +++ b/packages/raven-js/dist/angular,console/raven.min.js @@ -0,0 +1,4 @@ +/*! Raven.js 3.25.2 (30b6d4e) | github.com/getsentry/raven-js */ +!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.Raven=a()}}(function(){return function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};b[g][0].call(k.exports,function(a){var c=b[g][1][a];return e(c?c:a)},k,k.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;gthis.l.maxBreadcrumbs&&this.v.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.s.push([a,b]),this.o&&this.G(),this},setUserContext:function(a){return this.k.user=a,this},setExtraContext:function(a){return this.$("extra",a),this},setTagsContext:function(a){return this.$("tags",a),this},clearContext:function(){return this.k={},this},getContext:function(){return JSON.parse(h(this.k))},setEnvironment:function(a){return this.l.environment=a,this},setRelease:function(a){return this.l.release=a,this},setDataCallback:function(a){var b=this.l.dataCallback;return this.l.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.l.breadcrumbCallback;return this.l.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.l.shouldSendCallback;return this.l.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.l.transport=a,this},lastException:function(){return this.e},lastEventId:function(){return this.g},isSetup:function(){return!!this.b&&(!!this.h||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.A("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=R.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(S){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.I;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.k.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.K(this.H(c)),h=S.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(S.head||S.body).appendChild(h)}},M:function(){var a=this;this.n+=1,setTimeout(function(){a.n-=1})},_:function(a,b){var c,d;if(this.c){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),S.createEvent?(c=S.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=S.createEventObject(),c.eventType=a);for(d in b)A(b,d)&&(c[d]=b[d]);if(S.createEvent)S.dispatchEvent(c);else try{S.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},aa:function(a){var b=this;return function(c){if(b.ba=null,b.w!==c){b.w=c;var d;try{d=E(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ca:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.ba;g||a.aa("input")(c),clearTimeout(g),a.ba=setTimeout(function(){a.ba=null},b)}}},da:function(a,b){var c=H(this.x.href),d=H(b),e=H(a);this.y=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},D:function(){var a=this;a.ea=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.N?a.ea.apply(this.P,arguments):a.ea.apply(this,arguments)}},R:function(){this.ea&&(Function.prototype.toString=this.ea)},E:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.da(b.y,c+""),a.apply(this,arguments)}};I(R.history,"pushState",j,d),I(R.history,"replaceState",j,d)}if(c.console&&"console"in R&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};w(["debug","info","warn","error","log"],function(a,b){O(console,b,k)})}},S:function(){for(var a;this.u.length;){a=this.u.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},T:function(){for(var a in this.r)this.q[a]=this.r[a]},G:function(){var a=this;w(this.s,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},H:function(a){var b=Q.exec(a),c={},d=7;try{for(;d--;)c[P[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.l.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},K:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},B:function(){this.n||this.W.apply(this,arguments)},W:function(a,b){var c=this.Y(a,b);this._("handle",{stackInfo:a,options:b}),this.ga(a.name,a.message,a.url,a.lineno,c,b)},Y:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(w(a.stack,function(b,e){var f=c.ha(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.v,0)}),this.k.user&&(a.user=this.k.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),a=this.qa(a),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||v(a[b]))&&delete a[b]}),s(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!v(a)&&(!s(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.na()?void this.A("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function F(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&l(b))for(c=b.split(/\s+/),f=0;fc?Q(a,b-1):d}function R(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?X:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function S(a,b){function c(a){return m(a)?a.map(function(a){return c(a)}):k(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!m(b)||m(b)&&0===b.length)return a;var d,e=A(b),f="********";try{d=JSON.parse(T(a))}catch(g){return a}return c(d)}var T=a(9),U="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},V=3,W=51200,X=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isDOMError:g,isDOMException:h,isUndefined:i,isFunction:j,isPlainObject:k,isString:l,isArray:m,isEmptyObject:n,supportsErrorEvent:o,supportsDOMError:p,supportsDOMException:q,supportsFetch:r,supportsReferrerPolicy:s,supportsPromiseRejectionEvent:t,wrappedCallback:u,each:v,objectMerge:w,truncate:y,objectFrozen:x,hasKey:z,joinRegExp:A,urlencode:B,uuid4:D,htmlTreeAsString:E,htmlElementAsString:F,isSameException:I,isSameStacktrace:J,parseUrl:C,fill:K,safeJoin:L,serializeException:Q,serializeKeysForMessage:R,sanitize:S}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{9:9}],8:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}function e(){return"undefined"==typeof document||null==document.location?"":(document.location.origin||(document.location.origin=document.location.protocol+"//"+document.location.hostname+(document.location.port?":"+document.location.port:"")),document.location.origin)}var f=a(7),g={collectWindowErrors:!0,debug:!1},h="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},i=[].slice,j="?",k=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;g.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function e(a,b){var c=null;if(!b||g.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(i.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,h,i){var l=null,m=f.isErrorEvent(i)?i.error:i,n=f.isErrorEvent(a)?a.message:a;if(v)g.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&f.isError(m))l=g.computeStackTrace(m),e(l,!0);else{var p,r={url:b,line:c,column:h},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(k);p&&(s=p[1],n=p[2])}r.func=j,l={name:s,message:n,url:d(),stack:[r]},e(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=h.onerror,h.onerror=l,r=!0)}function n(){r&&(h.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,e.apply(null,[a,!1].concat(b))}function p(a,b){var c=i.call(arguments,1);if(v){if(u===a)return;o()}var d=g.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),g.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,f,g=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,h=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,i=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,k=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,l=/\((\S*)(?::(\d+))(?::(\d+))\)/,m=a.stack.split("\n"),n=[],o=(/^(.*) is undefined$/.exec(a.message),0),p=m.length;o eval")>-1;r&&(b=k.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==o||c[5]||"undefined"==typeof a.columnNumber||(n[0].column=a.columnNumber+1),f={url:c[3],func:c[1]||j,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}if(!f.func&&f.line&&(f.func=j),f.url&&"blob:"===f.url.substr(0,5)){var s=new XMLHttpRequest;if(s.open("GET",f.url,!1),s.send(null),200===s.status){var t=s.responseText||"";t=t.slice(-300);var u=t.match(/\/\/# sourceMappingURL=(.*)$/);if(u){var v=u[1];"~"===v.charAt(0)&&(v=e()+v.slice(1)),f.url=v.slice(0,-4)}}}n.push(f)}return n.length?{name:a.name,message:a.message,url:d(),stack:n}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=j),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1; +if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,e){for(var h,i,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==f&&o!==g.report){if(i={url:null,func:j,line:null,column:null},o.name?i.func=o.name:(h=k.exec(o.toString()))&&(i.func=h[1]),"undefined"==typeof i.func)try{i.func=h.input.substring(0,h.input.indexOf("{"))}catch(p){}m[""+o]?n=!0:m[""+o]=!0,l.push(i)}e&&l.splice(0,e);var q={name:a.name,message:a.message,url:d(),stack:l};return b(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),q}function f(b,e){var f=null;e=null==e?0:+e;try{if(f=a(b))return f}catch(h){if(g.debug)throw h}try{if(f=c(b,e+1))return f}catch(h){if(g.debug)throw h}return{name:b.name,message:b.message,url:d()}}return f.augmentStackTraceWithInitialElement=b,f.computeStackTraceFromStackProp=a,f}(),b.exports=g}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{7:7}],9:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}],10:[function(a,b,c){function d(a,b){var c=(65535&a)+(65535&b),d=(a>>16)+(b>>16)+(c>>16);return d<<16|65535&c}function e(a,b){return a<>>32-b}function f(a,b,c,f,g,h){return d(e(d(d(b,a),d(f,h)),g),c)}function g(a,b,c,d,e,g,h){return f(b&c|~b&d,a,b,e,g,h)}function h(a,b,c,d,e,g,h){return f(b&d|c&~d,a,b,e,g,h)}function i(a,b,c,d,e,g,h){return f(b^c^d,a,b,e,g,h)}function j(a,b,c,d,e,g,h){return f(c^(b|~d),a,b,e,g,h)}function k(a,b){a[b>>5]|=128<>>9<<4)+14]=b;var c,e,f,k,l,m=1732584193,n=-271733879,o=-1732584194,p=271733878;for(c=0;c>5]>>>b%32&255);return c}function m(a){var b,c=[];for(c[(a.length>>2)-1]=void 0,b=0;b>5]|=(255&a.charCodeAt(b/8))<16&&(e=k(e,8*a.length)),c=0;c<16;c+=1)f[c]=909522486^e[c],g[c]=1549556828^e[c];return d=k(f.concat(m(b)),512+8*b.length),l(k(g.concat(d),640))}function p(a){var b,c,d="0123456789abcdef",e="";for(c=0;c>>4&15)+d.charAt(15&b);return e}function q(a){return unescape(encodeURIComponent(a))}function r(a){return n(q(a))}function s(a){return p(r(a))}function t(a,b){return o(q(a),q(b))}function u(a,b){return p(t(a,b))}function v(a,b,c){return b?c?t(b,a):u(b,a):c?r(a):s(a)}b.exports=v},{}]},{},[6,1,2])(6)}); +//# sourceMappingURL=raven.min.js.map \ No newline at end of file diff --git a/packages/raven-js/dist/angular,console/raven.min.js.map b/packages/raven-js/dist/angular,console/raven.min.js.map new file mode 100644 index 000000000000..2746aeeab26a --- /dev/null +++ b/packages/raven-js/dist/angular,console/raven.min.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","angularPlugin","angular","RavenProvider","$get","$window","ExceptionHandlerProvider","$provide","decorator","exceptionHandler","R","$delegate","ex","cause","captureException","extra","moduleName","provider","config","setDataCallback","wrappedCallback","data","_normalizeData","angularPattern","exception","values","matches","exec","value","type","message","angularDocs","substr","addPlugin","6","7","2","consolePlugin","console","pluginOptions","logLevels","levels","push","callback","msg","captureMessage","level","pop","wrapConsoleMethod","wrapMethod","4","3","RavenConfigError","name","prototype","constructor","utils","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","safeJoin","logger","Function","apply","5","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","sanitizeKeys","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isErrorEvent","isDOMError","isDOMException","isError","isObject","isPlainObject","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","sanitize","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","dsn","options","_logDebug","globalOptions","key","setDSN","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","toString","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","context","func","undefined","wrap","_before","wrapped","deep","_ignoreNextOnError","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","U","event","reason","unhandledPromiseRejection","C","_promiseRejectionHandler","bind","addEventListener","Q","removeEventListener","trimHeadFrames","error","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","V","currentOptions","exKeys","Object","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","M","setTimeout","_","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","aa","evtName","_keypressTimeout","target","category","ca","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","da","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","D","_originalFunctionToString","E","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","F","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","S","builtin","T","G","installer","concat","H","str","m","allowSecretKey","K","port","B","W","stackInfo","_triggerEvent","_processException","lineno","Y","frame","_normalizeFrame","in_app","ha","stackInfoUrl","normalized","filename","line","colno","column","function","ga","prefixedMessage","transaction","ia","request","Referer","breadcrumbs","_trimBreadcrumbs","ja","urlProp","urlProps","ka","httpData","userAgent","User-Agent","referrer","z","_backoffDuration","_backoffStart","na","oa","current","last","pa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Z","baseData","project","platform","_getHttpData","serverName","server_name","_sanitizeData","forEach","random","_sendProcessedPayload","qa","sa","ra","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","ta","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","onerror","open","setRequestHeader","send","ua","hash","evaluated","A","$","setUser","setReleaseContext","10","8","9","RavenConstructor","_Raven","noConflict","Client","what","supportsErrorEvent","ErrorEvent","supportsDOMError","DOMError","supportsDOMException","DOMException","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","sanitizeMask","safeInput","o_O","getLocationHref","getLocationOrigin","origin","hostname","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","responseText","sourceMaps","sourceMapAddress","charAt","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","y","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","string","raw"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file diff --git a/packages/raven-js/dist/angular,ember,require,vue/raven.js b/packages/raven-js/dist/angular,ember,require,vue/raven.js new file mode 100644 index 000000000000..1a82503e2ea2 --- /dev/null +++ b/packages/raven-js/dist/angular,ember,require,vue/raven.js @@ -0,0 +1,4187 @@ +/*! Raven.js 3.25.2 (30b6d4e) | github.com/getsentry/raven-js */ + +/* + * Includes TraceKit + * https://github.com/getsentry/TraceKit + * + * Copyright 2018 Matt Robenolt and other contributors + * Released under the BSD license + * https://github.com/getsentry/raven-js/blob/master/LICENSE + * + */ + +(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.Raven = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o' : 'anonymous component') + + (vm._isVue && vm.$options.__file ? ' at ' + vm.$options.__file : '') + ); +} + +function vuePlugin(Raven, Vue) { + Vue = Vue || window.Vue; + + // quit if Vue isn't on the page + if (!Vue || !Vue.config) return; + + var _oldOnError = Vue.config.errorHandler; + Vue.config.errorHandler = function VueErrorHandler(error, vm, info) { + var metaData = {}; + + // vm and lifecycleHook are not always available + if (Object.prototype.toString.call(vm) === '[object Object]') { + metaData.componentName = formatComponentName(vm); + metaData.propsData = vm.$options.propsData; + } + + if (typeof info !== 'undefined') { + metaData.lifecycleHook = info; + } + + Raven.captureException(error, { + extra: metaData + }); + + if (typeof _oldOnError === 'function') { + _oldOnError.call(this, error, vm, info); + } + }; +} + +module.exports = vuePlugin; + +_dereq_(8).addPlugin(module.exports); +},{"8":8}],5:[function(_dereq_,module,exports){ +function RavenConfigError(message) { + this.name = 'RavenConfigError'; + this.message = message; +} +RavenConfigError.prototype = new Error(); +RavenConfigError.prototype.constructor = RavenConfigError; + +module.exports = RavenConfigError; + +},{}],6:[function(_dereq_,module,exports){ +var utils = _dereq_(9); + +var wrapMethod = function(console, level, callback) { + var originalConsoleLevel = console[level]; + var originalConsole = console; + + if (!(level in console)) { + return; + } + + var sentryLevel = level === 'warn' ? 'warning' : level; + + console[level] = function() { + var args = [].slice.call(arguments); + + var msg = utils.safeJoin(args, ' '); + var data = {level: sentryLevel, logger: 'console', extra: {arguments: args}}; + + if (level === 'assert') { + if (args[0] === false) { + // Default browsers message + msg = + 'Assertion failed: ' + (utils.safeJoin(args.slice(1), ' ') || 'console.assert'); + data.extra.arguments = args.slice(1); + callback && callback(msg, data); + } + } else { + callback && callback(msg, data); + } + + // this fails for some browsers. :( + if (originalConsoleLevel) { + // IE9 doesn't allow calling apply on console functions directly + // See: https://stackoverflow.com/questions/5472938/does-ie9-support-console-log-and-is-it-a-real-function#answer-5473193 + Function.prototype.apply.call(originalConsoleLevel, originalConsole, args); + } + }; +}; + +module.exports = { + wrapMethod: wrapMethod +}; + +},{"9":9}],7:[function(_dereq_,module,exports){ +(function (global){ +/*global XDomainRequest:false */ + +var TraceKit = _dereq_(10); +var stringify = _dereq_(11); +var md5 = _dereq_(12); +var RavenConfigError = _dereq_(5); + +var utils = _dereq_(9); +var isErrorEvent = utils.isErrorEvent; +var isDOMError = utils.isDOMError; +var isDOMException = utils.isDOMException; +var isError = utils.isError; +var isObject = utils.isObject; +var isPlainObject = utils.isPlainObject; +var isUndefined = utils.isUndefined; +var isFunction = utils.isFunction; +var isString = utils.isString; +var isArray = utils.isArray; +var isEmptyObject = utils.isEmptyObject; +var each = utils.each; +var objectMerge = utils.objectMerge; +var truncate = utils.truncate; +var objectFrozen = utils.objectFrozen; +var hasKey = utils.hasKey; +var joinRegExp = utils.joinRegExp; +var urlencode = utils.urlencode; +var uuid4 = utils.uuid4; +var htmlTreeAsString = utils.htmlTreeAsString; +var isSameException = utils.isSameException; +var isSameStacktrace = utils.isSameStacktrace; +var parseUrl = utils.parseUrl; +var fill = utils.fill; +var supportsFetch = utils.supportsFetch; +var supportsReferrerPolicy = utils.supportsReferrerPolicy; +var serializeKeysForMessage = utils.serializeKeysForMessage; +var serializeException = utils.serializeException; +var sanitize = utils.sanitize; + +var wrapConsoleMethod = _dereq_(6).wrapMethod; + +var dsnKeys = 'source protocol user pass host port path'.split(' '), + dsnPattern = /^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/; + +function now() { + return +new Date(); +} + +// This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) +var _window = + typeof window !== 'undefined' + ? window + : typeof global !== 'undefined' + ? global + : typeof self !== 'undefined' + ? self + : {}; +var _document = _window.document; +var _navigator = _window.navigator; + +function keepOriginalCallback(original, callback) { + return isFunction(callback) + ? function(data) { + return callback(data, original); + } + : callback; +} + +// First, check for JSON support +// If there is no JSON, we no-op the core features of Raven +// since JSON is required to encode the payload +function Raven() { + this._hasJSON = !!(typeof JSON === 'object' && JSON.stringify); + // Raven can run in contexts where there's no document (react-native) + this._hasDocument = !isUndefined(_document); + this._hasNavigator = !isUndefined(_navigator); + this._lastCapturedException = null; + this._lastData = null; + this._lastEventId = null; + this._globalServer = null; + this._globalKey = null; + this._globalProject = null; + this._globalContext = {}; + this._globalOptions = { + // SENTRY_RELEASE can be injected by https://github.com/getsentry/sentry-webpack-plugin + release: _window.SENTRY_RELEASE && _window.SENTRY_RELEASE.id, + logger: 'javascript', + ignoreErrors: [], + ignoreUrls: [], + whitelistUrls: [], + includePaths: [], + headers: null, + collectWindowErrors: true, + captureUnhandledRejections: true, + maxMessageLength: 0, + // By default, truncates URL values to 250 chars + maxUrlLength: 250, + stackTraceLimit: 50, + autoBreadcrumbs: true, + instrument: true, + sampleRate: 1, + sanitizeKeys: [] + }; + this._fetchDefaults = { + method: 'POST', + keepalive: true, + // Despite all stars in the sky saying that Edge supports old draft syntax, aka 'never', 'always', 'origin' and 'default + // https://caniuse.com/#feat=referrer-policy + // It doesn't. And it throw exception instead of ignoring this parameter... + // REF: https://github.com/getsentry/raven-js/issues/1233 + referrerPolicy: supportsReferrerPolicy() ? 'origin' : '' + }; + this._ignoreOnError = 0; + this._isRavenInstalled = false; + this._originalErrorStackTraceLimit = Error.stackTraceLimit; + // capture references to window.console *and* all its methods first + // before the console plugin has a chance to monkey patch + this._originalConsole = _window.console || {}; + this._originalConsoleMethods = {}; + this._plugins = []; + this._startTime = now(); + this._wrappedBuiltIns = []; + this._breadcrumbs = []; + this._lastCapturedEvent = null; + this._keypressTimeout; + this._location = _window.location; + this._lastHref = this._location && this._location.href; + this._resetBackoff(); + + // eslint-disable-next-line guard-for-in + for (var method in this._originalConsole) { + this._originalConsoleMethods[method] = this._originalConsole[method]; + } +} + +/* + * The core Raven singleton + * + * @this {Raven} + */ + +Raven.prototype = { + // Hardcode version string so that raven source can be loaded directly via + // webpack (using a build step causes webpack #1617). Grunt verifies that + // this value matches package.json during build. + // See: https://github.com/getsentry/raven-js/issues/465 + VERSION: '3.25.2', + + debug: false, + + TraceKit: TraceKit, // alias to TraceKit + + /* + * Configure Raven with a DSN and extra options + * + * @param {string} dsn The public Sentry DSN + * @param {object} options Set of global options [optional] + * @return {Raven} + */ + config: function(dsn, options) { + var self = this; + + if (self._globalServer) { + this._logDebug('error', 'Error: Raven has already been configured'); + return self; + } + if (!dsn) return self; + + var globalOptions = self._globalOptions; + + // merge in options + if (options) { + each(options, function(key, value) { + // tags and extra are special and need to be put into context + if (key === 'tags' || key === 'extra' || key === 'user') { + self._globalContext[key] = value; + } else { + globalOptions[key] = value; + } + }); + } + + self.setDSN(dsn); + + // "Script error." is hard coded into browsers for errors that it can't read. + // this is the result of a script being pulled in from an external domain and CORS. + globalOptions.ignoreErrors.push(/^Script error\.?$/); + globalOptions.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/); + + // join regexp rules into one big rule + globalOptions.ignoreErrors = joinRegExp(globalOptions.ignoreErrors); + globalOptions.ignoreUrls = globalOptions.ignoreUrls.length + ? joinRegExp(globalOptions.ignoreUrls) + : false; + globalOptions.whitelistUrls = globalOptions.whitelistUrls.length + ? joinRegExp(globalOptions.whitelistUrls) + : false; + globalOptions.includePaths = joinRegExp(globalOptions.includePaths); + globalOptions.maxBreadcrumbs = Math.max( + 0, + Math.min(globalOptions.maxBreadcrumbs || 100, 100) + ); // default and hard limit is 100 + + var autoBreadcrumbDefaults = { + xhr: true, + console: true, + dom: true, + location: true, + sentry: true + }; + + var autoBreadcrumbs = globalOptions.autoBreadcrumbs; + if ({}.toString.call(autoBreadcrumbs) === '[object Object]') { + autoBreadcrumbs = objectMerge(autoBreadcrumbDefaults, autoBreadcrumbs); + } else if (autoBreadcrumbs !== false) { + autoBreadcrumbs = autoBreadcrumbDefaults; + } + globalOptions.autoBreadcrumbs = autoBreadcrumbs; + + var instrumentDefaults = { + tryCatch: true + }; + + var instrument = globalOptions.instrument; + if ({}.toString.call(instrument) === '[object Object]') { + instrument = objectMerge(instrumentDefaults, instrument); + } else if (instrument !== false) { + instrument = instrumentDefaults; + } + globalOptions.instrument = instrument; + + TraceKit.collectWindowErrors = !!globalOptions.collectWindowErrors; + + // return for chaining + return self; + }, + + /* + * Installs a global window.onerror error handler + * to capture and report uncaught exceptions. + * At this point, install() is required to be called due + * to the way TraceKit is set up. + * + * @return {Raven} + */ + install: function() { + var self = this; + if (self.isSetup() && !self._isRavenInstalled) { + TraceKit.report.subscribe(function() { + self._handleOnErrorStackInfo.apply(self, arguments); + }); + + if (self._globalOptions.captureUnhandledRejections) { + self._attachPromiseRejectionHandler(); + } + + self._patchFunctionToString(); + + if (self._globalOptions.instrument && self._globalOptions.instrument.tryCatch) { + self._instrumentTryCatch(); + } + + if (self._globalOptions.autoBreadcrumbs) self._instrumentBreadcrumbs(); + + // Install all of the plugins + self._drainPlugins(); + + self._isRavenInstalled = true; + } + + Error.stackTraceLimit = self._globalOptions.stackTraceLimit; + return this; + }, + + /* + * Set the DSN (can be called multiple time unlike config) + * + * @param {string} dsn The public Sentry DSN + */ + setDSN: function(dsn) { + var self = this, + uri = self._parseDSN(dsn), + lastSlash = uri.path.lastIndexOf('/'), + path = uri.path.substr(1, lastSlash); + + self._dsn = dsn; + self._globalKey = uri.user; + self._globalSecret = uri.pass && uri.pass.substr(1); + self._globalProject = uri.path.substr(lastSlash + 1); + + self._globalServer = self._getGlobalServer(uri); + + self._globalEndpoint = + self._globalServer + '/' + path + 'api/' + self._globalProject + '/store/'; + + // Reset backoff state since we may be pointing at a + // new project/server + this._resetBackoff(); + }, + + /* + * Wrap code within a context so Raven can capture errors + * reliably across domains that is executed immediately. + * + * @param {object} options A specific set of options for this context [optional] + * @param {function} func The callback to be immediately executed within the context + * @param {array} args An array of arguments to be called with the callback [optional] + */ + context: function(options, func, args) { + if (isFunction(options)) { + args = func || []; + func = options; + options = undefined; + } + + return this.wrap(options, func).apply(this, args); + }, + + /* + * Wrap code within a context and returns back a new function to be executed + * + * @param {object} options A specific set of options for this context [optional] + * @param {function} func The function to be wrapped in a new context + * @param {function} func A function to call before the try/catch wrapper [optional, private] + * @return {function} The newly wrapped functions with a context + */ + wrap: function(options, func, _before) { + var self = this; + // 1 argument has been passed, and it's not a function + // so just return it + if (isUndefined(func) && !isFunction(options)) { + return options; + } + + // options is optional + if (isFunction(options)) { + func = options; + options = undefined; + } + + // At this point, we've passed along 2 arguments, and the second one + // is not a function either, so we'll just return the second argument. + if (!isFunction(func)) { + return func; + } + + // We don't wanna wrap it twice! + try { + if (func.__raven__) { + return func; + } + + // If this has already been wrapped in the past, return that + if (func.__raven_wrapper__) { + return func.__raven_wrapper__; + } + } catch (e) { + // Just accessing custom props in some Selenium environments + // can cause a "Permission denied" exception (see raven-js#495). + // Bail on wrapping and return the function as-is (defers to window.onerror). + return func; + } + + function wrapped() { + var args = [], + i = arguments.length, + deep = !options || (options && options.deep !== false); + + if (_before && isFunction(_before)) { + _before.apply(this, arguments); + } + + // Recursively wrap all of a function's arguments that are + // functions themselves. + while (i--) args[i] = deep ? self.wrap(options, arguments[i]) : arguments[i]; + + try { + // Attempt to invoke user-land function + // NOTE: If you are a Sentry user, and you are seeing this stack frame, it + // means Raven caught an error invoking your application code. This is + // expected behavior and NOT indicative of a bug with Raven.js. + return func.apply(this, args); + } catch (e) { + self._ignoreNextOnError(); + self.captureException(e, options); + throw e; + } + } + + // copy over properties of the old function + for (var property in func) { + if (hasKey(func, property)) { + wrapped[property] = func[property]; + } + } + wrapped.prototype = func.prototype; + + func.__raven_wrapper__ = wrapped; + // Signal that this function has been wrapped/filled already + // for both debugging and to prevent it to being wrapped/filled twice + wrapped.__raven__ = true; + wrapped.__orig__ = func; + + return wrapped; + }, + + /** + * Uninstalls the global error handler. + * + * @return {Raven} + */ + uninstall: function() { + TraceKit.report.uninstall(); + + this._detachPromiseRejectionHandler(); + this._unpatchFunctionToString(); + this._restoreBuiltIns(); + this._restoreConsole(); + + Error.stackTraceLimit = this._originalErrorStackTraceLimit; + this._isRavenInstalled = false; + + return this; + }, + + /** + * Callback used for `unhandledrejection` event + * + * @param {PromiseRejectionEvent} event An object containing + * promise: the Promise that was rejected + * reason: the value with which the Promise was rejected + * @return void + */ + _promiseRejectionHandler: function(event) { + this._logDebug('debug', 'Raven caught unhandled promise rejection:', event); + this.captureException(event.reason, { + extra: { + unhandledPromiseRejection: true + } + }); + }, + + /** + * Installs the global promise rejection handler. + * + * @return {raven} + */ + _attachPromiseRejectionHandler: function() { + this._promiseRejectionHandler = this._promiseRejectionHandler.bind(this); + _window.addEventListener && + _window.addEventListener('unhandledrejection', this._promiseRejectionHandler); + return this; + }, + + /** + * Uninstalls the global promise rejection handler. + * + * @return {raven} + */ + _detachPromiseRejectionHandler: function() { + _window.removeEventListener && + _window.removeEventListener('unhandledrejection', this._promiseRejectionHandler); + return this; + }, + + /** + * Manually capture an exception and send it over to Sentry + * + * @param {error} ex An exception to be logged + * @param {object} options A specific set of options for this error [optional] + * @return {Raven} + */ + captureException: function(ex, options) { + options = objectMerge({trimHeadFrames: 0}, options ? options : {}); + + if (isErrorEvent(ex) && ex.error) { + // If it is an ErrorEvent with `error` property, extract it to get actual Error + ex = ex.error; + } else if (isDOMError(ex) || isDOMException(ex)) { + // If it is a DOMError or DOMException (which are legacy APIs, but still supported in some browsers) + // then we just extract the name and message, as they don't provide anything else + // https://developer.mozilla.org/en-US/docs/Web/API/DOMError + // https://developer.mozilla.org/en-US/docs/Web/API/DOMException + var name = ex.name || (isDOMError(ex) ? 'DOMError' : 'DOMException'); + var message = ex.message ? name + ': ' + ex.message : name; + + return this.captureMessage( + message, + objectMerge(options, { + // neither DOMError or DOMException provide stack trace and we most likely wont get it this way as well + // but it's barely any overhead so we may at least try + stacktrace: true, + trimHeadFrames: options.trimHeadFrames + 1 + }) + ); + } else if (isError(ex)) { + // we have a real Error object + ex = ex; + } else if (isPlainObject(ex)) { + // If it is plain Object, serialize it manually and extract options + // This will allow us to group events based on top-level keys + // which is much better than creating new group when any key/value change + options = this._getCaptureExceptionOptionsFromPlainObject(options, ex); + ex = new Error(options.message); + } else { + // If none of previous checks were valid, then it means that + // it's not a DOMError/DOMException + // it's not a plain Object + // it's not a valid ErrorEvent (one with an error property) + // it's not an Error + // So bail out and capture it as a simple message: + return this.captureMessage( + ex, + objectMerge(options, { + stacktrace: true, // if we fall back to captureMessage, default to attempting a new trace + trimHeadFrames: options.trimHeadFrames + 1 + }) + ); + } + + // Store the raw exception object for potential debugging and introspection + this._lastCapturedException = ex; + + // TraceKit.report will re-raise any exception passed to it, + // which means you have to wrap it in try/catch. Instead, we + // can wrap it here and only re-raise if TraceKit.report + // raises an exception different from the one we asked to + // report on. + try { + var stack = TraceKit.computeStackTrace(ex); + this._handleStackInfo(stack, options); + } catch (ex1) { + if (ex !== ex1) { + throw ex1; + } + } + + return this; + }, + + _getCaptureExceptionOptionsFromPlainObject: function(currentOptions, ex) { + var exKeys = Object.keys(ex).sort(); + var options = objectMerge(currentOptions, { + message: + 'Non-Error exception captured with keys: ' + serializeKeysForMessage(exKeys), + fingerprint: [md5(exKeys)], + extra: currentOptions.extra || {} + }); + options.extra.__serialized__ = serializeException(ex); + + return options; + }, + + /* + * Manually send a message to Sentry + * + * @param {string} msg A plain message to be captured in Sentry + * @param {object} options A specific set of options for this message [optional] + * @return {Raven} + */ + captureMessage: function(msg, options) { + // config() automagically converts ignoreErrors from a list to a RegExp so we need to test for an + // early call; we'll error on the side of logging anything called before configuration since it's + // probably something you should see: + if ( + !!this._globalOptions.ignoreErrors.test && + this._globalOptions.ignoreErrors.test(msg) + ) { + return; + } + + options = options || {}; + msg = msg + ''; // Make sure it's actually a string + + var data = objectMerge( + { + message: msg + }, + options + ); + + var ex; + // Generate a "synthetic" stack trace from this point. + // NOTE: If you are a Sentry user, and you are seeing this stack frame, it is NOT indicative + // of a bug with Raven.js. Sentry generates synthetic traces either by configuration, + // or if it catches a thrown object without a "stack" property. + try { + throw new Error(msg); + } catch (ex1) { + ex = ex1; + } + + // null exception name so `Error` isn't prefixed to msg + ex.name = null; + var stack = TraceKit.computeStackTrace(ex); + + // stack[0] is `throw new Error(msg)` call itself, we are interested in the frame that was just before that, stack[1] + var initialCall = isArray(stack.stack) && stack.stack[1]; + + // if stack[1] is `Raven.captureException`, it means that someone passed a string to it and we redirected that call + // to be handled by `captureMessage`, thus `initialCall` is the 3rd one, not 2nd + // initialCall => captureException(string) => captureMessage(string) + if (initialCall && initialCall.func === 'Raven.captureException') { + initialCall = stack.stack[2]; + } + + var fileurl = (initialCall && initialCall.url) || ''; + + if ( + !!this._globalOptions.ignoreUrls.test && + this._globalOptions.ignoreUrls.test(fileurl) + ) { + return; + } + + if ( + !!this._globalOptions.whitelistUrls.test && + !this._globalOptions.whitelistUrls.test(fileurl) + ) { + return; + } + + if (this._globalOptions.stacktrace || (options && options.stacktrace)) { + // fingerprint on msg, not stack trace (legacy behavior, could be revisited) + data.fingerprint = data.fingerprint == null ? msg : data.fingerprint; + + options = objectMerge( + { + trimHeadFrames: 0 + }, + options + ); + // Since we know this is a synthetic trace, the top frame (this function call) + // MUST be from Raven.js, so mark it for trimming + // We add to the trim counter so that callers can choose to trim extra frames, such + // as utility functions. + options.trimHeadFrames += 1; + + var frames = this._prepareFrames(stack, options); + data.stacktrace = { + // Sentry expects frames oldest to newest + frames: frames.reverse() + }; + } + + // Make sure that fingerprint is always wrapped in an array + if (data.fingerprint) { + data.fingerprint = isArray(data.fingerprint) + ? data.fingerprint + : [data.fingerprint]; + } + + // Fire away! + this._send(data); + + return this; + }, + + captureBreadcrumb: function(obj) { + var crumb = objectMerge( + { + timestamp: now() / 1000 + }, + obj + ); + + if (isFunction(this._globalOptions.breadcrumbCallback)) { + var result = this._globalOptions.breadcrumbCallback(crumb); + + if (isObject(result) && !isEmptyObject(result)) { + crumb = result; + } else if (result === false) { + return this; + } + } + + this._breadcrumbs.push(crumb); + if (this._breadcrumbs.length > this._globalOptions.maxBreadcrumbs) { + this._breadcrumbs.shift(); + } + return this; + }, + + addPlugin: function(plugin /*arg1, arg2, ... argN*/) { + var pluginArgs = [].slice.call(arguments, 1); + + this._plugins.push([plugin, pluginArgs]); + if (this._isRavenInstalled) { + this._drainPlugins(); + } + + return this; + }, + + /* + * Set/clear a user to be sent along with the payload. + * + * @param {object} user An object representing user data [optional] + * @return {Raven} + */ + setUserContext: function(user) { + // Intentionally do not merge here since that's an unexpected behavior. + this._globalContext.user = user; + + return this; + }, + + /* + * Merge extra attributes to be sent along with the payload. + * + * @param {object} extra An object representing extra data [optional] + * @return {Raven} + */ + setExtraContext: function(extra) { + this._mergeContext('extra', extra); + + return this; + }, + + /* + * Merge tags to be sent along with the payload. + * + * @param {object} tags An object representing tags [optional] + * @return {Raven} + */ + setTagsContext: function(tags) { + this._mergeContext('tags', tags); + + return this; + }, + + /* + * Clear all of the context. + * + * @return {Raven} + */ + clearContext: function() { + this._globalContext = {}; + + return this; + }, + + /* + * Get a copy of the current context. This cannot be mutated. + * + * @return {object} copy of context + */ + getContext: function() { + // lol javascript + return JSON.parse(stringify(this._globalContext)); + }, + + /* + * Set environment of application + * + * @param {string} environment Typically something like 'production'. + * @return {Raven} + */ + setEnvironment: function(environment) { + this._globalOptions.environment = environment; + + return this; + }, + + /* + * Set release version of application + * + * @param {string} release Typically something like a git SHA to identify version + * @return {Raven} + */ + setRelease: function(release) { + this._globalOptions.release = release; + + return this; + }, + + /* + * Set the dataCallback option + * + * @param {function} callback The callback to run which allows the + * data blob to be mutated before sending + * @return {Raven} + */ + setDataCallback: function(callback) { + var original = this._globalOptions.dataCallback; + this._globalOptions.dataCallback = keepOriginalCallback(original, callback); + return this; + }, + + /* + * Set the breadcrumbCallback option + * + * @param {function} callback The callback to run which allows filtering + * or mutating breadcrumbs + * @return {Raven} + */ + setBreadcrumbCallback: function(callback) { + var original = this._globalOptions.breadcrumbCallback; + this._globalOptions.breadcrumbCallback = keepOriginalCallback(original, callback); + return this; + }, + + /* + * Set the shouldSendCallback option + * + * @param {function} callback The callback to run which allows + * introspecting the blob before sending + * @return {Raven} + */ + setShouldSendCallback: function(callback) { + var original = this._globalOptions.shouldSendCallback; + this._globalOptions.shouldSendCallback = keepOriginalCallback(original, callback); + return this; + }, + + /** + * Override the default HTTP transport mechanism that transmits data + * to the Sentry server. + * + * @param {function} transport Function invoked instead of the default + * `makeRequest` handler. + * + * @return {Raven} + */ + setTransport: function(transport) { + this._globalOptions.transport = transport; + + return this; + }, + + /* + * Get the latest raw exception that was captured by Raven. + * + * @return {error} + */ + lastException: function() { + return this._lastCapturedException; + }, + + /* + * Get the last event id + * + * @return {string} + */ + lastEventId: function() { + return this._lastEventId; + }, + + /* + * Determine if Raven is setup and ready to go. + * + * @return {boolean} + */ + isSetup: function() { + if (!this._hasJSON) return false; // needs JSON support + if (!this._globalServer) { + if (!this.ravenNotConfiguredError) { + this.ravenNotConfiguredError = true; + this._logDebug('error', 'Error: Raven has not been configured.'); + } + return false; + } + return true; + }, + + afterLoad: function() { + // TODO: remove window dependence? + + // Attempt to initialize Raven on load + var RavenConfig = _window.RavenConfig; + if (RavenConfig) { + this.config(RavenConfig.dsn, RavenConfig.config).install(); + } + }, + + showReportDialog: function(options) { + if ( + !_document // doesn't work without a document (React native) + ) + return; + + options = options || {}; + + var lastEventId = options.eventId || this.lastEventId(); + if (!lastEventId) { + throw new RavenConfigError('Missing eventId'); + } + + var dsn = options.dsn || this._dsn; + if (!dsn) { + throw new RavenConfigError('Missing DSN'); + } + + var encode = encodeURIComponent; + var qs = ''; + qs += '?eventId=' + encode(lastEventId); + qs += '&dsn=' + encode(dsn); + + var user = options.user || this._globalContext.user; + if (user) { + if (user.name) qs += '&name=' + encode(user.name); + if (user.email) qs += '&email=' + encode(user.email); + } + + var globalServer = this._getGlobalServer(this._parseDSN(dsn)); + + var script = _document.createElement('script'); + script.async = true; + script.src = globalServer + '/api/embed/error-page/' + qs; + (_document.head || _document.body).appendChild(script); + }, + + /**** Private functions ****/ + _ignoreNextOnError: function() { + var self = this; + this._ignoreOnError += 1; + setTimeout(function() { + // onerror should trigger before setTimeout + self._ignoreOnError -= 1; + }); + }, + + _triggerEvent: function(eventType, options) { + // NOTE: `event` is a native browser thing, so let's avoid conflicting wiht it + var evt, key; + + if (!this._hasDocument) return; + + options = options || {}; + + eventType = 'raven' + eventType.substr(0, 1).toUpperCase() + eventType.substr(1); + + if (_document.createEvent) { + evt = _document.createEvent('HTMLEvents'); + evt.initEvent(eventType, true, true); + } else { + evt = _document.createEventObject(); + evt.eventType = eventType; + } + + for (key in options) + if (hasKey(options, key)) { + evt[key] = options[key]; + } + + if (_document.createEvent) { + // IE9 if standards + _document.dispatchEvent(evt); + } else { + // IE8 regardless of Quirks or Standards + // IE9 if quirks + try { + _document.fireEvent('on' + evt.eventType.toLowerCase(), evt); + } catch (e) { + // Do nothing + } + } + }, + + /** + * Wraps addEventListener to capture UI breadcrumbs + * @param evtName the event name (e.g. "click") + * @returns {Function} + * @private + */ + _breadcrumbEventHandler: function(evtName) { + var self = this; + return function(evt) { + // reset keypress timeout; e.g. triggering a 'click' after + // a 'keypress' will reset the keypress debounce so that a new + // set of keypresses can be recorded + self._keypressTimeout = null; + + // It's possible this handler might trigger multiple times for the same + // event (e.g. event propagation through node ancestors). Ignore if we've + // already captured the event. + if (self._lastCapturedEvent === evt) return; + + self._lastCapturedEvent = evt; + + // try/catch both: + // - accessing evt.target (see getsentry/raven-js#838, #768) + // - `htmlTreeAsString` because it's complex, and just accessing the DOM incorrectly + // can throw an exception in some circumstances. + var target; + try { + target = htmlTreeAsString(evt.target); + } catch (e) { + target = ''; + } + + self.captureBreadcrumb({ + category: 'ui.' + evtName, // e.g. ui.click, ui.input + message: target + }); + }; + }, + + /** + * Wraps addEventListener to capture keypress UI events + * @returns {Function} + * @private + */ + _keypressEventHandler: function() { + var self = this, + debounceDuration = 1000; // milliseconds + + // TODO: if somehow user switches keypress target before + // debounce timeout is triggered, we will only capture + // a single breadcrumb from the FIRST target (acceptable?) + return function(evt) { + var target; + try { + target = evt.target; + } catch (e) { + // just accessing event properties can throw an exception in some rare circumstances + // see: https://github.com/getsentry/raven-js/issues/838 + return; + } + var tagName = target && target.tagName; + + // only consider keypress events on actual input elements + // this will disregard keypresses targeting body (e.g. tabbing + // through elements, hotkeys, etc) + if ( + !tagName || + (tagName !== 'INPUT' && tagName !== 'TEXTAREA' && !target.isContentEditable) + ) + return; + + // record first keypress in a series, but ignore subsequent + // keypresses until debounce clears + var timeout = self._keypressTimeout; + if (!timeout) { + self._breadcrumbEventHandler('input')(evt); + } + clearTimeout(timeout); + self._keypressTimeout = setTimeout(function() { + self._keypressTimeout = null; + }, debounceDuration); + }; + }, + + /** + * Captures a breadcrumb of type "navigation", normalizing input URLs + * @param to the originating URL + * @param from the target URL + * @private + */ + _captureUrlChange: function(from, to) { + var parsedLoc = parseUrl(this._location.href); + var parsedTo = parseUrl(to); + var parsedFrom = parseUrl(from); + + // because onpopstate only tells you the "new" (to) value of location.href, and + // not the previous (from) value, we need to track the value of the current URL + // state ourselves + this._lastHref = to; + + // Use only the path component of the URL if the URL matches the current + // document (almost all the time when using pushState) + if (parsedLoc.protocol === parsedTo.protocol && parsedLoc.host === parsedTo.host) + to = parsedTo.relative; + if (parsedLoc.protocol === parsedFrom.protocol && parsedLoc.host === parsedFrom.host) + from = parsedFrom.relative; + + this.captureBreadcrumb({ + category: 'navigation', + data: { + to: to, + from: from + } + }); + }, + + _patchFunctionToString: function() { + var self = this; + self._originalFunctionToString = Function.prototype.toString; + // eslint-disable-next-line no-extend-native + Function.prototype.toString = function() { + if (typeof this === 'function' && this.__raven__) { + return self._originalFunctionToString.apply(this.__orig__, arguments); + } + return self._originalFunctionToString.apply(this, arguments); + }; + }, + + _unpatchFunctionToString: function() { + if (this._originalFunctionToString) { + // eslint-disable-next-line no-extend-native + Function.prototype.toString = this._originalFunctionToString; + } + }, + + /** + * Wrap timer functions and event targets to catch errors and provide + * better metadata. + */ + _instrumentTryCatch: function() { + var self = this; + + var wrappedBuiltIns = self._wrappedBuiltIns; + + function wrapTimeFn(orig) { + return function(fn, t) { + // preserve arity + // Make a copy of the arguments to prevent deoptimization + // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments + var args = new Array(arguments.length); + for (var i = 0; i < args.length; ++i) { + args[i] = arguments[i]; + } + var originalCallback = args[0]; + if (isFunction(originalCallback)) { + args[0] = self.wrap(originalCallback); + } + + // IE < 9 doesn't support .call/.apply on setInterval/setTimeout, but it + // also supports only two arguments and doesn't care what this is, so we + // can just call the original function directly. + if (orig.apply) { + return orig.apply(this, args); + } else { + return orig(args[0], args[1]); + } + }; + } + + var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; + + function wrapEventTarget(global) { + var proto = _window[global] && _window[global].prototype; + if (proto && proto.hasOwnProperty && proto.hasOwnProperty('addEventListener')) { + fill( + proto, + 'addEventListener', + function(orig) { + return function(evtName, fn, capture, secure) { + // preserve arity + try { + if (fn && fn.handleEvent) { + fn.handleEvent = self.wrap(fn.handleEvent); + } + } catch (err) { + // can sometimes get 'Permission denied to access property "handle Event' + } + + // More breadcrumb DOM capture ... done here and not in `_instrumentBreadcrumbs` + // so that we don't have more than one wrapper function + var before, clickHandler, keypressHandler; + + if ( + autoBreadcrumbs && + autoBreadcrumbs.dom && + (global === 'EventTarget' || global === 'Node') + ) { + // NOTE: generating multiple handlers per addEventListener invocation, should + // revisit and verify we can just use one (almost certainly) + clickHandler = self._breadcrumbEventHandler('click'); + keypressHandler = self._keypressEventHandler(); + before = function(evt) { + // need to intercept every DOM event in `before` argument, in case that + // same wrapped method is re-used for different events (e.g. mousemove THEN click) + // see #724 + if (!evt) return; + + var eventType; + try { + eventType = evt.type; + } catch (e) { + // just accessing event properties can throw an exception in some rare circumstances + // see: https://github.com/getsentry/raven-js/issues/838 + return; + } + if (eventType === 'click') return clickHandler(evt); + else if (eventType === 'keypress') return keypressHandler(evt); + }; + } + return orig.call( + this, + evtName, + self.wrap(fn, undefined, before), + capture, + secure + ); + }; + }, + wrappedBuiltIns + ); + fill( + proto, + 'removeEventListener', + function(orig) { + return function(evt, fn, capture, secure) { + try { + fn = fn && (fn.__raven_wrapper__ ? fn.__raven_wrapper__ : fn); + } catch (e) { + // ignore, accessing __raven_wrapper__ will throw in some Selenium environments + } + return orig.call(this, evt, fn, capture, secure); + }; + }, + wrappedBuiltIns + ); + } + } + + fill(_window, 'setTimeout', wrapTimeFn, wrappedBuiltIns); + fill(_window, 'setInterval', wrapTimeFn, wrappedBuiltIns); + if (_window.requestAnimationFrame) { + fill( + _window, + 'requestAnimationFrame', + function(orig) { + return function(cb) { + return orig(self.wrap(cb)); + }; + }, + wrappedBuiltIns + ); + } + + // event targets borrowed from bugsnag-js: + // https://github.com/bugsnag/bugsnag-js/blob/master/src/bugsnag.js#L666 + var eventTargets = [ + 'EventTarget', + 'Window', + 'Node', + 'ApplicationCache', + 'AudioTrackList', + 'ChannelMergerNode', + 'CryptoOperation', + 'EventSource', + 'FileReader', + 'HTMLUnknownElement', + 'IDBDatabase', + 'IDBRequest', + 'IDBTransaction', + 'KeyOperation', + 'MediaController', + 'MessagePort', + 'ModalWindow', + 'Notification', + 'SVGElementInstance', + 'Screen', + 'TextTrack', + 'TextTrackCue', + 'TextTrackList', + 'WebSocket', + 'WebSocketWorker', + 'Worker', + 'XMLHttpRequest', + 'XMLHttpRequestEventTarget', + 'XMLHttpRequestUpload' + ]; + for (var i = 0; i < eventTargets.length; i++) { + wrapEventTarget(eventTargets[i]); + } + }, + + /** + * Instrument browser built-ins w/ breadcrumb capturing + * - XMLHttpRequests + * - DOM interactions (click/typing) + * - window.location changes + * - console + * + * Can be disabled or individually configured via the `autoBreadcrumbs` config option + */ + _instrumentBreadcrumbs: function() { + var self = this; + var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; + + var wrappedBuiltIns = self._wrappedBuiltIns; + + function wrapProp(prop, xhr) { + if (prop in xhr && isFunction(xhr[prop])) { + fill(xhr, prop, function(orig) { + return self.wrap(orig); + }); // intentionally don't track filled methods on XHR instances + } + } + + if (autoBreadcrumbs.xhr && 'XMLHttpRequest' in _window) { + var xhrproto = _window.XMLHttpRequest && _window.XMLHttpRequest.prototype; + fill( + xhrproto, + 'open', + function(origOpen) { + return function(method, url) { + // preserve arity + + // if Sentry key appears in URL, don't capture + if (isString(url) && url.indexOf(self._globalKey) === -1) { + this.__raven_xhr = { + method: method, + url: url, + status_code: null + }; + } + + return origOpen.apply(this, arguments); + }; + }, + wrappedBuiltIns + ); + + fill( + xhrproto, + 'send', + function(origSend) { + return function() { + // preserve arity + var xhr = this; + + function onreadystatechangeHandler() { + if (xhr.__raven_xhr && xhr.readyState === 4) { + try { + // touching statusCode in some platforms throws + // an exception + xhr.__raven_xhr.status_code = xhr.status; + } catch (e) { + /* do nothing */ + } + + self.captureBreadcrumb({ + type: 'http', + category: 'xhr', + data: xhr.__raven_xhr + }); + } + } + + var props = ['onload', 'onerror', 'onprogress']; + for (var j = 0; j < props.length; j++) { + wrapProp(props[j], xhr); + } + + if ('onreadystatechange' in xhr && isFunction(xhr.onreadystatechange)) { + fill( + xhr, + 'onreadystatechange', + function(orig) { + return self.wrap(orig, undefined, onreadystatechangeHandler); + } /* intentionally don't track this instrumentation */ + ); + } else { + // if onreadystatechange wasn't actually set by the page on this xhr, we + // are free to set our own and capture the breadcrumb + xhr.onreadystatechange = onreadystatechangeHandler; + } + + return origSend.apply(this, arguments); + }; + }, + wrappedBuiltIns + ); + } + + if (autoBreadcrumbs.xhr && supportsFetch()) { + fill( + _window, + 'fetch', + function(origFetch) { + return function() { + // preserve arity + // Make a copy of the arguments to prevent deoptimization + // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments + var args = new Array(arguments.length); + for (var i = 0; i < args.length; ++i) { + args[i] = arguments[i]; + } + + var fetchInput = args[0]; + var method = 'GET'; + var url; + + if (typeof fetchInput === 'string') { + url = fetchInput; + } else if ('Request' in _window && fetchInput instanceof _window.Request) { + url = fetchInput.url; + if (fetchInput.method) { + method = fetchInput.method; + } + } else { + url = '' + fetchInput; + } + + // if Sentry key appears in URL, don't capture, as it's our own request + if (url.indexOf(self._globalKey) !== -1) { + return origFetch.apply(this, args); + } + + if (args[1] && args[1].method) { + method = args[1].method; + } + + var fetchData = { + method: method, + url: url, + status_code: null + }; + + return origFetch + .apply(this, args) + .then(function(response) { + fetchData.status_code = response.status; + + self.captureBreadcrumb({ + type: 'http', + category: 'fetch', + data: fetchData + }); + + return response; + }) + ['catch'](function(err) { + // if there is an error performing the request + self.captureBreadcrumb({ + type: 'http', + category: 'fetch', + data: fetchData, + level: 'error' + }); + + throw err; + }); + }; + }, + wrappedBuiltIns + ); + } + + // Capture breadcrumbs from any click that is unhandled / bubbled up all the way + // to the document. Do this before we instrument addEventListener. + if (autoBreadcrumbs.dom && this._hasDocument) { + if (_document.addEventListener) { + _document.addEventListener('click', self._breadcrumbEventHandler('click'), false); + _document.addEventListener('keypress', self._keypressEventHandler(), false); + } else if (_document.attachEvent) { + // IE8 Compatibility + _document.attachEvent('onclick', self._breadcrumbEventHandler('click')); + _document.attachEvent('onkeypress', self._keypressEventHandler()); + } + } + + // record navigation (URL) changes + // NOTE: in Chrome App environment, touching history.pushState, *even inside + // a try/catch block*, will cause Chrome to output an error to console.error + // borrowed from: https://github.com/angular/angular.js/pull/13945/files + var chrome = _window.chrome; + var isChromePackagedApp = chrome && chrome.app && chrome.app.runtime; + var hasPushAndReplaceState = + !isChromePackagedApp && + _window.history && + _window.history.pushState && + _window.history.replaceState; + if (autoBreadcrumbs.location && hasPushAndReplaceState) { + // TODO: remove onpopstate handler on uninstall() + var oldOnPopState = _window.onpopstate; + _window.onpopstate = function() { + var currentHref = self._location.href; + self._captureUrlChange(self._lastHref, currentHref); + + if (oldOnPopState) { + return oldOnPopState.apply(this, arguments); + } + }; + + var historyReplacementFunction = function(origHistFunction) { + // note history.pushState.length is 0; intentionally not declaring + // params to preserve 0 arity + return function(/* state, title, url */) { + var url = arguments.length > 2 ? arguments[2] : undefined; + + // url argument is optional + if (url) { + // coerce to string (this is what pushState does) + self._captureUrlChange(self._lastHref, url + ''); + } + + return origHistFunction.apply(this, arguments); + }; + }; + + fill(_window.history, 'pushState', historyReplacementFunction, wrappedBuiltIns); + fill(_window.history, 'replaceState', historyReplacementFunction, wrappedBuiltIns); + } + + if (autoBreadcrumbs.console && 'console' in _window && console.log) { + // console + var consoleMethodCallback = function(msg, data) { + self.captureBreadcrumb({ + message: msg, + level: data.level, + category: 'console' + }); + }; + + each(['debug', 'info', 'warn', 'error', 'log'], function(_, level) { + wrapConsoleMethod(console, level, consoleMethodCallback); + }); + } + }, + + _restoreBuiltIns: function() { + // restore any wrapped builtins + var builtin; + while (this._wrappedBuiltIns.length) { + builtin = this._wrappedBuiltIns.shift(); + + var obj = builtin[0], + name = builtin[1], + orig = builtin[2]; + + obj[name] = orig; + } + }, + + _restoreConsole: function() { + // eslint-disable-next-line guard-for-in + for (var method in this._originalConsoleMethods) { + this._originalConsole[method] = this._originalConsoleMethods[method]; + } + }, + + _drainPlugins: function() { + var self = this; + + // FIX ME TODO + each(this._plugins, function(_, plugin) { + var installer = plugin[0]; + var args = plugin[1]; + installer.apply(self, [self].concat(args)); + }); + }, + + _parseDSN: function(str) { + var m = dsnPattern.exec(str), + dsn = {}, + i = 7; + + try { + while (i--) dsn[dsnKeys[i]] = m[i] || ''; + } catch (e) { + throw new RavenConfigError('Invalid DSN: ' + str); + } + + if (dsn.pass && !this._globalOptions.allowSecretKey) { + throw new RavenConfigError( + 'Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key' + ); + } + + return dsn; + }, + + _getGlobalServer: function(uri) { + // assemble the endpoint from the uri pieces + var globalServer = '//' + uri.host + (uri.port ? ':' + uri.port : ''); + + if (uri.protocol) { + globalServer = uri.protocol + ':' + globalServer; + } + return globalServer; + }, + + _handleOnErrorStackInfo: function() { + // if we are intentionally ignoring errors via onerror, bail out + if (!this._ignoreOnError) { + this._handleStackInfo.apply(this, arguments); + } + }, + + _handleStackInfo: function(stackInfo, options) { + var frames = this._prepareFrames(stackInfo, options); + + this._triggerEvent('handle', { + stackInfo: stackInfo, + options: options + }); + + this._processException( + stackInfo.name, + stackInfo.message, + stackInfo.url, + stackInfo.lineno, + frames, + options + ); + }, + + _prepareFrames: function(stackInfo, options) { + var self = this; + var frames = []; + if (stackInfo.stack && stackInfo.stack.length) { + each(stackInfo.stack, function(i, stack) { + var frame = self._normalizeFrame(stack, stackInfo.url); + if (frame) { + frames.push(frame); + } + }); + + // e.g. frames captured via captureMessage throw + if (options && options.trimHeadFrames) { + for (var j = 0; j < options.trimHeadFrames && j < frames.length; j++) { + frames[j].in_app = false; + } + } + } + frames = frames.slice(0, this._globalOptions.stackTraceLimit); + return frames; + }, + + _normalizeFrame: function(frame, stackInfoUrl) { + // normalize the frames data + var normalized = { + filename: frame.url, + lineno: frame.line, + colno: frame.column, + function: frame.func || '?' + }; + + // Case when we don't have any information about the error + // E.g. throwing a string or raw object, instead of an `Error` in Firefox + // Generating synthetic error doesn't add any value here + // + // We should probably somehow let a user know that they should fix their code + if (!frame.url) { + normalized.filename = stackInfoUrl; // fallback to whole stacks url from onerror handler + } + + normalized.in_app = !// determine if an exception came from outside of our app + // first we check the global includePaths list. + ( + (!!this._globalOptions.includePaths.test && + !this._globalOptions.includePaths.test(normalized.filename)) || + // Now we check for fun, if the function name is Raven or TraceKit + /(Raven|TraceKit)\./.test(normalized['function']) || + // finally, we do a last ditch effort and check for raven.min.js + /raven\.(min\.)?js$/.test(normalized.filename) + ); + + return normalized; + }, + + _processException: function(type, message, fileurl, lineno, frames, options) { + var prefixedMessage = (type ? type + ': ' : '') + (message || ''); + if ( + !!this._globalOptions.ignoreErrors.test && + (this._globalOptions.ignoreErrors.test(message) || + this._globalOptions.ignoreErrors.test(prefixedMessage)) + ) { + return; + } + + var stacktrace; + + if (frames && frames.length) { + fileurl = frames[0].filename || fileurl; + // Sentry expects frames oldest to newest + // and JS sends them as newest to oldest + frames.reverse(); + stacktrace = {frames: frames}; + } else if (fileurl) { + stacktrace = { + frames: [ + { + filename: fileurl, + lineno: lineno, + in_app: true + } + ] + }; + } + + if ( + !!this._globalOptions.ignoreUrls.test && + this._globalOptions.ignoreUrls.test(fileurl) + ) { + return; + } + + if ( + !!this._globalOptions.whitelistUrls.test && + !this._globalOptions.whitelistUrls.test(fileurl) + ) { + return; + } + + var data = objectMerge( + { + // sentry.interfaces.Exception + exception: { + values: [ + { + type: type, + value: message, + stacktrace: stacktrace + } + ] + }, + transaction: fileurl + }, + options + ); + + // Fire away! + this._send(data); + }, + + _trimPacket: function(data) { + // For now, we only want to truncate the two different messages + // but this could/should be expanded to just trim everything + var max = this._globalOptions.maxMessageLength; + if (data.message) { + data.message = truncate(data.message, max); + } + if (data.exception) { + var exception = data.exception.values[0]; + exception.value = truncate(exception.value, max); + } + + var request = data.request; + if (request) { + if (request.url) { + request.url = truncate(request.url, this._globalOptions.maxUrlLength); + } + if (request.Referer) { + request.Referer = truncate(request.Referer, this._globalOptions.maxUrlLength); + } + } + + if (data.breadcrumbs && data.breadcrumbs.values) + this._trimBreadcrumbs(data.breadcrumbs); + + return data; + }, + + /** + * Truncate breadcrumb values (right now just URLs) + */ + _trimBreadcrumbs: function(breadcrumbs) { + // known breadcrumb properties with urls + // TODO: also consider arbitrary prop values that start with (https?)?:// + var urlProps = ['to', 'from', 'url'], + urlProp, + crumb, + data; + + for (var i = 0; i < breadcrumbs.values.length; ++i) { + crumb = breadcrumbs.values[i]; + if ( + !crumb.hasOwnProperty('data') || + !isObject(crumb.data) || + objectFrozen(crumb.data) + ) + continue; + + data = objectMerge({}, crumb.data); + for (var j = 0; j < urlProps.length; ++j) { + urlProp = urlProps[j]; + if (data.hasOwnProperty(urlProp) && data[urlProp]) { + data[urlProp] = truncate(data[urlProp], this._globalOptions.maxUrlLength); + } + } + breadcrumbs.values[i].data = data; + } + }, + + _getHttpData: function() { + if (!this._hasNavigator && !this._hasDocument) return; + var httpData = {}; + + if (this._hasNavigator && _navigator.userAgent) { + httpData.headers = { + 'User-Agent': _navigator.userAgent + }; + } + + // Check in `window` instead of `document`, as we may be in ServiceWorker environment + if (_window.location && _window.location.href) { + httpData.url = _window.location.href; + } + + if (this._hasDocument && _document.referrer) { + if (!httpData.headers) httpData.headers = {}; + httpData.headers.Referer = _document.referrer; + } + + return httpData; + }, + + _resetBackoff: function() { + this._backoffDuration = 0; + this._backoffStart = null; + }, + + _shouldBackoff: function() { + return this._backoffDuration && now() - this._backoffStart < this._backoffDuration; + }, + + /** + * Returns true if the in-process data payload matches the signature + * of the previously-sent data + * + * NOTE: This has to be done at this level because TraceKit can generate + * data from window.onerror WITHOUT an exception object (IE8, IE9, + * other old browsers). This can take the form of an "exception" + * data object with a single frame (derived from the onerror args). + */ + _isRepeatData: function(current) { + var last = this._lastData; + + if ( + !last || + current.message !== last.message || // defined for captureMessage + current.transaction !== last.transaction // defined for captureException/onerror + ) + return false; + + // Stacktrace interface (i.e. from captureMessage) + if (current.stacktrace || last.stacktrace) { + return isSameStacktrace(current.stacktrace, last.stacktrace); + } else if (current.exception || last.exception) { + // Exception interface (i.e. from captureException/onerror) + return isSameException(current.exception, last.exception); + } + + return true; + }, + + _setBackoffState: function(request) { + // If we are already in a backoff state, don't change anything + if (this._shouldBackoff()) { + return; + } + + var status = request.status; + + // 400 - project_id doesn't exist or some other fatal + // 401 - invalid/revoked dsn + // 429 - too many requests + if (!(status === 400 || status === 401 || status === 429)) return; + + var retry; + try { + // If Retry-After is not in Access-Control-Expose-Headers, most + // browsers will throw an exception trying to access it + if (supportsFetch()) { + retry = request.headers.get('Retry-After'); + } else { + retry = request.getResponseHeader('Retry-After'); + } + + // Retry-After is returned in seconds + retry = parseInt(retry, 10) * 1000; + } catch (e) { + /* eslint no-empty:0 */ + } + + this._backoffDuration = retry + ? // If Sentry server returned a Retry-After value, use it + retry + : // Otherwise, double the last backoff duration (starts at 1 sec) + this._backoffDuration * 2 || 1000; + + this._backoffStart = now(); + }, + + _send: function(data) { + var globalOptions = this._globalOptions; + + var baseData = { + project: this._globalProject, + logger: globalOptions.logger, + platform: 'javascript' + }, + httpData = this._getHttpData(); + + if (httpData) { + baseData.request = httpData; + } + + // HACK: delete `trimHeadFrames` to prevent from appearing in outbound payload + if (data.trimHeadFrames) delete data.trimHeadFrames; + + data = objectMerge(baseData, data); + + // Merge in the tags and extra separately since objectMerge doesn't handle a deep merge + data.tags = objectMerge(objectMerge({}, this._globalContext.tags), data.tags); + data.extra = objectMerge(objectMerge({}, this._globalContext.extra), data.extra); + + // Send along our own collected metadata with extra + data.extra['session:duration'] = now() - this._startTime; + + if (this._breadcrumbs && this._breadcrumbs.length > 0) { + // intentionally make shallow copy so that additions + // to breadcrumbs aren't accidentally sent in this request + data.breadcrumbs = { + values: [].slice.call(this._breadcrumbs, 0) + }; + } + + if (this._globalContext.user) { + // sentry.interfaces.User + data.user = this._globalContext.user; + } + + // Include the environment if it's defined in globalOptions + if (globalOptions.environment) data.environment = globalOptions.environment; + + // Include the release if it's defined in globalOptions + if (globalOptions.release) data.release = globalOptions.release; + + // Include server_name if it's defined in globalOptions + if (globalOptions.serverName) data.server_name = globalOptions.serverName; + + data = this._sanitizeData(data); + + // Cleanup empty properties before sending them to the server + Object.keys(data).forEach(function(key) { + if (data[key] == null || data[key] === '' || isEmptyObject(data[key])) { + delete data[key]; + } + }); + + if (isFunction(globalOptions.dataCallback)) { + data = globalOptions.dataCallback(data) || data; + } + + // Why?????????? + if (!data || isEmptyObject(data)) { + return; + } + + // Check if the request should be filtered or not + if ( + isFunction(globalOptions.shouldSendCallback) && + !globalOptions.shouldSendCallback(data) + ) { + return; + } + + // Backoff state: Sentry server previously responded w/ an error (e.g. 429 - too many requests), + // so drop requests until "cool-off" period has elapsed. + if (this._shouldBackoff()) { + this._logDebug('warn', 'Raven dropped error due to backoff: ', data); + return; + } + + if (typeof globalOptions.sampleRate === 'number') { + if (Math.random() < globalOptions.sampleRate) { + this._sendProcessedPayload(data); + } + } else { + this._sendProcessedPayload(data); + } + }, + + _sanitizeData: function(data) { + return sanitize(data, this._globalOptions.sanitizeKeys); + }, + + _getUuid: function() { + return uuid4(); + }, + + _sendProcessedPayload: function(data, callback) { + var self = this; + var globalOptions = this._globalOptions; + + if (!this.isSetup()) return; + + // Try and clean up the packet before sending by truncating long values + data = this._trimPacket(data); + + // ideally duplicate error testing should occur *before* dataCallback/shouldSendCallback, + // but this would require copying an un-truncated copy of the data packet, which can be + // arbitrarily deep (extra_data) -- could be worthwhile? will revisit + if (!this._globalOptions.allowDuplicates && this._isRepeatData(data)) { + this._logDebug('warn', 'Raven dropped repeat event: ', data); + return; + } + + // Send along an event_id if not explicitly passed. + // This event_id can be used to reference the error within Sentry itself. + // Set lastEventId after we know the error should actually be sent + this._lastEventId = data.event_id || (data.event_id = this._getUuid()); + + // Store outbound payload after trim + this._lastData = data; + + this._logDebug('debug', 'Raven about to send:', data); + + var auth = { + sentry_version: '7', + sentry_client: 'raven-js/' + this.VERSION, + sentry_key: this._globalKey + }; + + if (this._globalSecret) { + auth.sentry_secret = this._globalSecret; + } + + var exception = data.exception && data.exception.values[0]; + + // only capture 'sentry' breadcrumb is autoBreadcrumbs is truthy + if ( + this._globalOptions.autoBreadcrumbs && + this._globalOptions.autoBreadcrumbs.sentry + ) { + this.captureBreadcrumb({ + category: 'sentry', + message: exception + ? (exception.type ? exception.type + ': ' : '') + exception.value + : data.message, + event_id: data.event_id, + level: data.level || 'error' // presume error unless specified + }); + } + + var url = this._globalEndpoint; + (globalOptions.transport || this._makeRequest).call(this, { + url: url, + auth: auth, + data: data, + options: globalOptions, + onSuccess: function success() { + self._resetBackoff(); + + self._triggerEvent('success', { + data: data, + src: url + }); + callback && callback(); + }, + onError: function failure(error) { + self._logDebug('error', 'Raven transport failed to send: ', error); + + if (error.request) { + self._setBackoffState(error.request); + } + + self._triggerEvent('failure', { + data: data, + src: url + }); + error = error || new Error('Raven send failed (no additional details provided)'); + callback && callback(error); + } + }); + }, + + _makeRequest: function(opts) { + // Auth is intentionally sent as part of query string (NOT as custom HTTP header) to avoid preflight CORS requests + var url = opts.url + '?' + urlencode(opts.auth); + + var evaluatedHeaders = null; + var evaluatedFetchParameters = {}; + + if (opts.options.headers) { + evaluatedHeaders = this._evaluateHash(opts.options.headers); + } + + if (opts.options.fetchParameters) { + evaluatedFetchParameters = this._evaluateHash(opts.options.fetchParameters); + } + + if (supportsFetch()) { + evaluatedFetchParameters.body = stringify(opts.data); + + var defaultFetchOptions = objectMerge({}, this._fetchDefaults); + var fetchOptions = objectMerge(defaultFetchOptions, evaluatedFetchParameters); + + if (evaluatedHeaders) { + fetchOptions.headers = evaluatedHeaders; + } + + return _window + .fetch(url, fetchOptions) + .then(function(response) { + if (response.ok) { + opts.onSuccess && opts.onSuccess(); + } else { + var error = new Error('Sentry error code: ' + response.status); + // It's called request only to keep compatibility with XHR interface + // and not add more redundant checks in setBackoffState method + error.request = response; + opts.onError && opts.onError(error); + } + }) + ['catch'](function() { + opts.onError && + opts.onError(new Error('Sentry error code: network unavailable')); + }); + } + + var request = _window.XMLHttpRequest && new _window.XMLHttpRequest(); + if (!request) return; + + // if browser doesn't support CORS (e.g. IE7), we are out of luck + var hasCORS = 'withCredentials' in request || typeof XDomainRequest !== 'undefined'; + + if (!hasCORS) return; + + if ('withCredentials' in request) { + request.onreadystatechange = function() { + if (request.readyState !== 4) { + return; + } else if (request.status === 200) { + opts.onSuccess && opts.onSuccess(); + } else if (opts.onError) { + var err = new Error('Sentry error code: ' + request.status); + err.request = request; + opts.onError(err); + } + }; + } else { + request = new XDomainRequest(); + // xdomainrequest cannot go http -> https (or vice versa), + // so always use protocol relative + url = url.replace(/^https?:/, ''); + + // onreadystatechange not supported by XDomainRequest + if (opts.onSuccess) { + request.onload = opts.onSuccess; + } + if (opts.onError) { + request.onerror = function() { + var err = new Error('Sentry error code: XDomainRequest'); + err.request = request; + opts.onError(err); + }; + } + } + + request.open('POST', url); + + if (evaluatedHeaders) { + each(evaluatedHeaders, function(key, value) { + request.setRequestHeader(key, value); + }); + } + + request.send(stringify(opts.data)); + }, + + _evaluateHash: function(hash) { + var evaluated = {}; + + for (var key in hash) { + if (hash.hasOwnProperty(key)) { + var value = hash[key]; + evaluated[key] = typeof value === 'function' ? value() : value; + } + } + + return evaluated; + }, + + _logDebug: function(level) { + // We allow `Raven.debug` and `Raven.config(DSN, { debug: true })` to not make backward incompatible API change + if ( + this._originalConsoleMethods[level] && + (this.debug || this._globalOptions.debug) + ) { + // In IE<10 console methods do not have their own 'apply' method + Function.prototype.apply.call( + this._originalConsoleMethods[level], + this._originalConsole, + [].slice.call(arguments, 1) + ); + } + }, + + _mergeContext: function(key, context) { + if (isUndefined(context)) { + delete this._globalContext[key]; + } else { + this._globalContext[key] = objectMerge(this._globalContext[key] || {}, context); + } + } +}; + +// Deprecations +Raven.prototype.setUser = Raven.prototype.setUserContext; +Raven.prototype.setReleaseContext = Raven.prototype.setRelease; + +module.exports = Raven; + +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"10":10,"11":11,"12":12,"5":5,"6":6,"9":9}],8:[function(_dereq_,module,exports){ +(function (global){ +/** + * Enforces a single instance of the Raven client, and the + * main entry point for Raven. If you are a consumer of the + * Raven library, you SHOULD load this file (vs raven.js). + **/ + +var RavenConstructor = _dereq_(7); + +// This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) +var _window = + typeof window !== 'undefined' + ? window + : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; +var _Raven = _window.Raven; + +var Raven = new RavenConstructor(); + +/* + * Allow multiple versions of Raven to be installed. + * Strip Raven from the global context and returns the instance. + * + * @return {Raven} + */ +Raven.noConflict = function() { + _window.Raven = _Raven; + return Raven; +}; + +Raven.afterLoad(); + +module.exports = Raven; + +/** + * DISCLAIMER: + * + * Expose `Client` constructor for cases where user want to track multiple "sub-applications" in one larger app. + * It's not meant to be used by a wide audience, so pleaaase make sure that you know what you're doing before using it. + * Accidentally calling `install` multiple times, may result in an unexpected behavior that's very hard to debug. + * + * It's called `Client' to be in-line with Raven Node implementation. + * + * HOWTO: + * + * import Raven from 'raven-js'; + * + * const someAppReporter = new Raven.Client(); + * const someOtherAppReporter = new Raven.Client(); + * + * someAppReporter.config('__DSN__', { + * ...config goes here + * }); + * + * someOtherAppReporter.config('__OTHER_DSN__', { + * ...config goes here + * }); + * + * someAppReporter.captureMessage(...); + * someAppReporter.captureException(...); + * someAppReporter.captureBreadcrumb(...); + * + * someOtherAppReporter.captureMessage(...); + * someOtherAppReporter.captureException(...); + * someOtherAppReporter.captureBreadcrumb(...); + * + * It should "just work". + */ +module.exports.Client = RavenConstructor; + +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"7":7}],9:[function(_dereq_,module,exports){ +(function (global){ +var stringify = _dereq_(11); + +var _window = + typeof window !== 'undefined' + ? window + : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; + +function isObject(what) { + return typeof what === 'object' && what !== null; +} + +// Yanked from https://git.io/vS8DV re-used under CC0 +// with some tiny modifications +function isError(value) { + switch (Object.prototype.toString.call(value)) { + case '[object Error]': + return true; + case '[object Exception]': + return true; + case '[object DOMException]': + return true; + default: + return value instanceof Error; + } +} + +function isErrorEvent(value) { + return Object.prototype.toString.call(value) === '[object ErrorEvent]'; +} + +function isDOMError(value) { + return Object.prototype.toString.call(value) === '[object DOMError]'; +} + +function isDOMException(value) { + return Object.prototype.toString.call(value) === '[object DOMException]'; +} + +function isUndefined(what) { + return what === void 0; +} + +function isFunction(what) { + return typeof what === 'function'; +} + +function isPlainObject(what) { + return Object.prototype.toString.call(what) === '[object Object]'; +} + +function isString(what) { + return Object.prototype.toString.call(what) === '[object String]'; +} + +function isArray(what) { + return Object.prototype.toString.call(what) === '[object Array]'; +} + +function isEmptyObject(what) { + if (!isPlainObject(what)) return false; + + for (var _ in what) { + if (what.hasOwnProperty(_)) { + return false; + } + } + return true; +} + +function supportsErrorEvent() { + try { + new ErrorEvent(''); // eslint-disable-line no-new + return true; + } catch (e) { + return false; + } +} + +function supportsDOMError() { + try { + new DOMError(''); // eslint-disable-line no-new + return true; + } catch (e) { + return false; + } +} + +function supportsDOMException() { + try { + new DOMException(''); // eslint-disable-line no-new + return true; + } catch (e) { + return false; + } +} + +function supportsFetch() { + if (!('fetch' in _window)) return false; + + try { + new Headers(); // eslint-disable-line no-new + new Request(''); // eslint-disable-line no-new + new Response(); // eslint-disable-line no-new + return true; + } catch (e) { + return false; + } +} + +// Despite all stars in the sky saying that Edge supports old draft syntax, aka 'never', 'always', 'origin' and 'default +// https://caniuse.com/#feat=referrer-policy +// It doesn't. And it throw exception instead of ignoring this parameter... +// REF: https://github.com/getsentry/raven-js/issues/1233 +function supportsReferrerPolicy() { + if (!supportsFetch()) return false; + + try { + // eslint-disable-next-line no-new + new Request('pickleRick', { + referrerPolicy: 'origin' + }); + return true; + } catch (e) { + return false; + } +} + +function supportsPromiseRejectionEvent() { + return typeof PromiseRejectionEvent === 'function'; +} + +function wrappedCallback(callback) { + function dataCallback(data, original) { + var normalizedData = callback(data) || data; + if (original) { + return original(normalizedData) || normalizedData; + } + return normalizedData; + } + + return dataCallback; +} + +function each(obj, callback) { + var i, j; + + if (isUndefined(obj.length)) { + for (i in obj) { + if (hasKey(obj, i)) { + callback.call(null, i, obj[i]); + } + } + } else { + j = obj.length; + if (j) { + for (i = 0; i < j; i++) { + callback.call(null, i, obj[i]); + } + } + } +} + +function objectMerge(obj1, obj2) { + if (!obj2) { + return obj1; + } + each(obj2, function(key, value) { + obj1[key] = value; + }); + return obj1; +} + +/** + * This function is only used for react-native. + * react-native freezes object that have already been sent over the + * js bridge. We need this function in order to check if the object is frozen. + * So it's ok that objectFrozen returns false if Object.isFrozen is not + * supported because it's not relevant for other "platforms". See related issue: + * https://github.com/getsentry/react-native-sentry/issues/57 + */ +function objectFrozen(obj) { + if (!Object.isFrozen) { + return false; + } + return Object.isFrozen(obj); +} + +function truncate(str, max) { + if (typeof max !== 'number') { + throw new Error('2nd argument to `truncate` function should be a number'); + } + if (typeof str !== 'string' || max === 0) { + return str; + } + return str.length <= max ? str : str.substr(0, max) + '\u2026'; +} + +/** + * hasKey, a better form of hasOwnProperty + * Example: hasKey(MainHostObject, property) === true/false + * + * @param {Object} host object to check property + * @param {string} key to check + */ +function hasKey(object, key) { + return Object.prototype.hasOwnProperty.call(object, key); +} + +function joinRegExp(patterns) { + // Combine an array of regular expressions and strings into one large regexp + // Be mad. + var sources = [], + i = 0, + len = patterns.length, + pattern; + + for (; i < len; i++) { + pattern = patterns[i]; + if (isString(pattern)) { + // If it's a string, we need to escape it + // Taken from: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions + sources.push(pattern.replace(/([.*+?^=!:${}()|\[\]\/\\])/g, '\\$1')); + } else if (pattern && pattern.source) { + // If it's a regexp already, we want to extract the source + sources.push(pattern.source); + } + // Intentionally skip other cases + } + return new RegExp(sources.join('|'), 'i'); +} + +function urlencode(o) { + var pairs = []; + each(o, function(key, value) { + pairs.push(encodeURIComponent(key) + '=' + encodeURIComponent(value)); + }); + return pairs.join('&'); +} + +// borrowed from https://tools.ietf.org/html/rfc3986#appendix-B +// intentionally using regex and not href parsing trick because React Native and other +// environments where DOM might not be available +function parseUrl(url) { + if (typeof url !== 'string') return {}; + var match = url.match(/^(([^:\/?#]+):)?(\/\/([^\/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?$/); + + // coerce to undefined values to empty string so we don't get 'undefined' + var query = match[6] || ''; + var fragment = match[8] || ''; + return { + protocol: match[2], + host: match[4], + path: match[5], + relative: match[5] + query + fragment // everything minus origin + }; +} +function uuid4() { + var crypto = _window.crypto || _window.msCrypto; + + if (!isUndefined(crypto) && crypto.getRandomValues) { + // Use window.crypto API if available + // eslint-disable-next-line no-undef + var arr = new Uint16Array(8); + crypto.getRandomValues(arr); + + // set 4 in byte 7 + arr[3] = (arr[3] & 0xfff) | 0x4000; + // set 2 most significant bits of byte 9 to '10' + arr[4] = (arr[4] & 0x3fff) | 0x8000; + + var pad = function(num) { + var v = num.toString(16); + while (v.length < 4) { + v = '0' + v; + } + return v; + }; + + return ( + pad(arr[0]) + + pad(arr[1]) + + pad(arr[2]) + + pad(arr[3]) + + pad(arr[4]) + + pad(arr[5]) + + pad(arr[6]) + + pad(arr[7]) + ); + } else { + // http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/2117523#2117523 + return 'xxxxxxxxxxxx4xxxyxxxxxxxxxxxxxxx'.replace(/[xy]/g, function(c) { + var r = (Math.random() * 16) | 0, + v = c === 'x' ? r : (r & 0x3) | 0x8; + return v.toString(16); + }); + } +} + +/** + * Given a child DOM element, returns a query-selector statement describing that + * and its ancestors + * e.g. [HTMLElement] => body > div > input#foo.btn[name=baz] + * @param elem + * @returns {string} + */ +function htmlTreeAsString(elem) { + /* eslint no-extra-parens:0*/ + var MAX_TRAVERSE_HEIGHT = 5, + MAX_OUTPUT_LEN = 80, + out = [], + height = 0, + len = 0, + separator = ' > ', + sepLength = separator.length, + nextStr; + + while (elem && height++ < MAX_TRAVERSE_HEIGHT) { + nextStr = htmlElementAsString(elem); + // bail out if + // - nextStr is the 'html' element + // - the length of the string that would be created exceeds MAX_OUTPUT_LEN + // (ignore this limit if we are on the first iteration) + if ( + nextStr === 'html' || + (height > 1 && len + out.length * sepLength + nextStr.length >= MAX_OUTPUT_LEN) + ) { + break; + } + + out.push(nextStr); + + len += nextStr.length; + elem = elem.parentNode; + } + + return out.reverse().join(separator); +} + +/** + * Returns a simple, query-selector representation of a DOM element + * e.g. [HTMLElement] => input#foo.btn[name=baz] + * @param HTMLElement + * @returns {string} + */ +function htmlElementAsString(elem) { + var out = [], + className, + classes, + key, + attr, + i; + + if (!elem || !elem.tagName) { + return ''; + } + + out.push(elem.tagName.toLowerCase()); + if (elem.id) { + out.push('#' + elem.id); + } + + className = elem.className; + if (className && isString(className)) { + classes = className.split(/\s+/); + for (i = 0; i < classes.length; i++) { + out.push('.' + classes[i]); + } + } + var attrWhitelist = ['type', 'name', 'title', 'alt']; + for (i = 0; i < attrWhitelist.length; i++) { + key = attrWhitelist[i]; + attr = elem.getAttribute(key); + if (attr) { + out.push('[' + key + '="' + attr + '"]'); + } + } + return out.join(''); +} + +/** + * Returns true if either a OR b is truthy, but not both + */ +function isOnlyOneTruthy(a, b) { + return !!(!!a ^ !!b); +} + +/** + * Returns true if both parameters are undefined + */ +function isBothUndefined(a, b) { + return isUndefined(a) && isUndefined(b); +} + +/** + * Returns true if the two input exception interfaces have the same content + */ +function isSameException(ex1, ex2) { + if (isOnlyOneTruthy(ex1, ex2)) return false; + + ex1 = ex1.values[0]; + ex2 = ex2.values[0]; + + if (ex1.type !== ex2.type || ex1.value !== ex2.value) return false; + + // in case both stacktraces are undefined, we can't decide so default to false + if (isBothUndefined(ex1.stacktrace, ex2.stacktrace)) return false; + + return isSameStacktrace(ex1.stacktrace, ex2.stacktrace); +} + +/** + * Returns true if the two input stack trace interfaces have the same content + */ +function isSameStacktrace(stack1, stack2) { + if (isOnlyOneTruthy(stack1, stack2)) return false; + + var frames1 = stack1.frames; + var frames2 = stack2.frames; + + // Exit early if frame count differs + if (frames1.length !== frames2.length) return false; + + // Iterate through every frame; bail out if anything differs + var a, b; + for (var i = 0; i < frames1.length; i++) { + a = frames1[i]; + b = frames2[i]; + if ( + a.filename !== b.filename || + a.lineno !== b.lineno || + a.colno !== b.colno || + a['function'] !== b['function'] + ) + return false; + } + return true; +} + +/** + * Polyfill a method + * @param obj object e.g. `document` + * @param name method name present on object e.g. `addEventListener` + * @param replacement replacement function + * @param track {optional} record instrumentation to an array + */ +function fill(obj, name, replacement, track) { + if (obj == null) return; + var orig = obj[name]; + obj[name] = replacement(orig); + obj[name].__raven__ = true; + obj[name].__orig__ = orig; + if (track) { + track.push([obj, name, orig]); + } +} + +/** + * Join values in array + * @param input array of values to be joined together + * @param delimiter string to be placed in-between values + * @returns {string} + */ +function safeJoin(input, delimiter) { + if (!isArray(input)) return ''; + + var output = []; + + for (var i = 0; i < input.length; i++) { + try { + output.push(String(input[i])); + } catch (e) { + output.push('[value cannot be serialized]'); + } + } + + return output.join(delimiter); +} + +// Default Node.js REPL depth +var MAX_SERIALIZE_EXCEPTION_DEPTH = 3; +// 50kB, as 100kB is max payload size, so half sounds reasonable +var MAX_SERIALIZE_EXCEPTION_SIZE = 50 * 1024; +var MAX_SERIALIZE_KEYS_LENGTH = 40; + +function utf8Length(value) { + return ~-encodeURI(value).split(/%..|./).length; +} + +function jsonSize(value) { + return utf8Length(JSON.stringify(value)); +} + +function serializeValue(value) { + if (typeof value === 'string') { + var maxLength = 40; + return truncate(value, maxLength); + } else if ( + typeof value === 'number' || + typeof value === 'boolean' || + typeof value === 'undefined' + ) { + return value; + } + + var type = Object.prototype.toString.call(value); + + // Node.js REPL notation + if (type === '[object Object]') return '[Object]'; + if (type === '[object Array]') return '[Array]'; + if (type === '[object Function]') + return value.name ? '[Function: ' + value.name + ']' : '[Function]'; + + return value; +} + +function serializeObject(value, depth) { + if (depth === 0) return serializeValue(value); + + if (isPlainObject(value)) { + return Object.keys(value).reduce(function(acc, key) { + acc[key] = serializeObject(value[key], depth - 1); + return acc; + }, {}); + } else if (Array.isArray(value)) { + return value.map(function(val) { + return serializeObject(val, depth - 1); + }); + } + + return serializeValue(value); +} + +function serializeException(ex, depth, maxSize) { + if (!isPlainObject(ex)) return ex; + + depth = typeof depth !== 'number' ? MAX_SERIALIZE_EXCEPTION_DEPTH : depth; + maxSize = typeof depth !== 'number' ? MAX_SERIALIZE_EXCEPTION_SIZE : maxSize; + + var serialized = serializeObject(ex, depth); + + if (jsonSize(stringify(serialized)) > maxSize) { + return serializeException(ex, depth - 1); + } + + return serialized; +} + +function serializeKeysForMessage(keys, maxLength) { + if (typeof keys === 'number' || typeof keys === 'string') return keys.toString(); + if (!Array.isArray(keys)) return ''; + + keys = keys.filter(function(key) { + return typeof key === 'string'; + }); + if (keys.length === 0) return '[object has no keys]'; + + maxLength = typeof maxLength !== 'number' ? MAX_SERIALIZE_KEYS_LENGTH : maxLength; + if (keys[0].length >= maxLength) return keys[0]; + + for (var usedKeys = keys.length; usedKeys > 0; usedKeys--) { + var serialized = keys.slice(0, usedKeys).join(', '); + if (serialized.length > maxLength) continue; + if (usedKeys === keys.length) return serialized; + return serialized + '\u2026'; + } + + return ''; +} + +function sanitize(input, sanitizeKeys) { + if (!isArray(sanitizeKeys) || (isArray(sanitizeKeys) && sanitizeKeys.length === 0)) + return input; + + var sanitizeRegExp = joinRegExp(sanitizeKeys); + var sanitizeMask = '********'; + var safeInput; + + try { + safeInput = JSON.parse(stringify(input)); + } catch (o_O) { + return input; + } + + function sanitizeWorker(workerInput) { + if (isArray(workerInput)) { + return workerInput.map(function(val) { + return sanitizeWorker(val); + }); + } + + if (isPlainObject(workerInput)) { + return Object.keys(workerInput).reduce(function(acc, k) { + if (sanitizeRegExp.test(k)) { + acc[k] = sanitizeMask; + } else { + acc[k] = sanitizeWorker(workerInput[k]); + } + return acc; + }, {}); + } + + return workerInput; + } + + return sanitizeWorker(safeInput); +} + +module.exports = { + isObject: isObject, + isError: isError, + isErrorEvent: isErrorEvent, + isDOMError: isDOMError, + isDOMException: isDOMException, + isUndefined: isUndefined, + isFunction: isFunction, + isPlainObject: isPlainObject, + isString: isString, + isArray: isArray, + isEmptyObject: isEmptyObject, + supportsErrorEvent: supportsErrorEvent, + supportsDOMError: supportsDOMError, + supportsDOMException: supportsDOMException, + supportsFetch: supportsFetch, + supportsReferrerPolicy: supportsReferrerPolicy, + supportsPromiseRejectionEvent: supportsPromiseRejectionEvent, + wrappedCallback: wrappedCallback, + each: each, + objectMerge: objectMerge, + truncate: truncate, + objectFrozen: objectFrozen, + hasKey: hasKey, + joinRegExp: joinRegExp, + urlencode: urlencode, + uuid4: uuid4, + htmlTreeAsString: htmlTreeAsString, + htmlElementAsString: htmlElementAsString, + isSameException: isSameException, + isSameStacktrace: isSameStacktrace, + parseUrl: parseUrl, + fill: fill, + safeJoin: safeJoin, + serializeException: serializeException, + serializeKeysForMessage: serializeKeysForMessage, + sanitize: sanitize +}; + +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"11":11}],10:[function(_dereq_,module,exports){ +(function (global){ +var utils = _dereq_(9); + +/* + TraceKit - Cross brower stack traces + + This was originally forked from github.com/occ/TraceKit, but has since been + largely re-written and is now maintained as part of raven-js. Tests for + this are in test/vendor. + + MIT license +*/ + +var TraceKit = { + collectWindowErrors: true, + debug: false +}; + +// This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) +var _window = + typeof window !== 'undefined' + ? window + : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; + +// global reference to slice +var _slice = [].slice; +var UNKNOWN_FUNCTION = '?'; + +// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error#Error_types +var ERROR_TYPES_RE = /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/; + +function getLocationHref() { + if (typeof document === 'undefined' || document.location == null) return ''; + return document.location.href; +} + +function getLocationOrigin() { + if (typeof document === 'undefined' || document.location == null) return ''; + + // Oh dear IE10... + if (!document.location.origin) { + document.location.origin = + document.location.protocol + + '//' + + document.location.hostname + + (document.location.port ? ':' + document.location.port : ''); + } + + return document.location.origin; +} + +/** + * TraceKit.report: cross-browser processing of unhandled exceptions + * + * Syntax: + * TraceKit.report.subscribe(function(stackInfo) { ... }) + * TraceKit.report.unsubscribe(function(stackInfo) { ... }) + * TraceKit.report(exception) + * try { ...code... } catch(ex) { TraceKit.report(ex); } + * + * Supports: + * - Firefox: full stack trace with line numbers, plus column number + * on top frame; column number is not guaranteed + * - Opera: full stack trace with line and column numbers + * - Chrome: full stack trace with line and column numbers + * - Safari: line and column number for the top frame only; some frames + * may be missing, and column number is not guaranteed + * - IE: line and column number for the top frame only; some frames + * may be missing, and column number is not guaranteed + * + * In theory, TraceKit should work on all of the following versions: + * - IE5.5+ (only 8.0 tested) + * - Firefox 0.9+ (only 3.5+ tested) + * - Opera 7+ (only 10.50 tested; versions 9 and earlier may require + * Exceptions Have Stacktrace to be enabled in opera:config) + * - Safari 3+ (only 4+ tested) + * - Chrome 1+ (only 5+ tested) + * - Konqueror 3.5+ (untested) + * + * Requires TraceKit.computeStackTrace. + * + * Tries to catch all unhandled exceptions and report them to the + * subscribed handlers. Please note that TraceKit.report will rethrow the + * exception. This is REQUIRED in order to get a useful stack trace in IE. + * If the exception does not reach the top of the browser, you will only + * get a stack trace from the point where TraceKit.report was called. + * + * Handlers receive a stackInfo object as described in the + * TraceKit.computeStackTrace docs. + */ +TraceKit.report = (function reportModuleWrapper() { + var handlers = [], + lastArgs = null, + lastException = null, + lastExceptionStack = null; + + /** + * Add a crash handler. + * @param {Function} handler + */ + function subscribe(handler) { + installGlobalHandler(); + handlers.push(handler); + } + + /** + * Remove a crash handler. + * @param {Function} handler + */ + function unsubscribe(handler) { + for (var i = handlers.length - 1; i >= 0; --i) { + if (handlers[i] === handler) { + handlers.splice(i, 1); + } + } + } + + /** + * Remove all crash handlers. + */ + function unsubscribeAll() { + uninstallGlobalHandler(); + handlers = []; + } + + /** + * Dispatch stack information to all handlers. + * @param {Object.} stack + */ + function notifyHandlers(stack, isWindowError) { + var exception = null; + if (isWindowError && !TraceKit.collectWindowErrors) { + return; + } + for (var i in handlers) { + if (handlers.hasOwnProperty(i)) { + try { + handlers[i].apply(null, [stack].concat(_slice.call(arguments, 2))); + } catch (inner) { + exception = inner; + } + } + } + + if (exception) { + throw exception; + } + } + + var _oldOnerrorHandler, _onErrorHandlerInstalled; + + /** + * Ensures all global unhandled exceptions are recorded. + * Supported by Gecko and IE. + * @param {string} msg Error message. + * @param {string} url URL of script that generated the exception. + * @param {(number|string)} lineNo The line number at which the error + * occurred. + * @param {?(number|string)} colNo The column number at which the error + * occurred. + * @param {?Error} ex The actual Error object. + */ + function traceKitWindowOnError(msg, url, lineNo, colNo, ex) { + var stack = null; + // If 'ex' is ErrorEvent, get real Error from inside + var exception = utils.isErrorEvent(ex) ? ex.error : ex; + // If 'msg' is ErrorEvent, get real message from inside + var message = utils.isErrorEvent(msg) ? msg.message : msg; + + if (lastExceptionStack) { + TraceKit.computeStackTrace.augmentStackTraceWithInitialElement( + lastExceptionStack, + url, + lineNo, + message + ); + processLastException(); + } else if (exception && utils.isError(exception)) { + // non-string `exception` arg; attempt to extract stack trace + + // New chrome and blink send along a real error object + // Let's just report that like a normal error. + // See: https://mikewest.org/2013/08/debugging-runtime-errors-with-window-onerror + stack = TraceKit.computeStackTrace(exception); + notifyHandlers(stack, true); + } else { + var location = { + url: url, + line: lineNo, + column: colNo + }; + + var name = undefined; + var groups; + + if ({}.toString.call(message) === '[object String]') { + var groups = message.match(ERROR_TYPES_RE); + if (groups) { + name = groups[1]; + message = groups[2]; + } + } + + location.func = UNKNOWN_FUNCTION; + + stack = { + name: name, + message: message, + url: getLocationHref(), + stack: [location] + }; + notifyHandlers(stack, true); + } + + if (_oldOnerrorHandler) { + return _oldOnerrorHandler.apply(this, arguments); + } + + return false; + } + + function installGlobalHandler() { + if (_onErrorHandlerInstalled) { + return; + } + _oldOnerrorHandler = _window.onerror; + _window.onerror = traceKitWindowOnError; + _onErrorHandlerInstalled = true; + } + + function uninstallGlobalHandler() { + if (!_onErrorHandlerInstalled) { + return; + } + _window.onerror = _oldOnerrorHandler; + _onErrorHandlerInstalled = false; + _oldOnerrorHandler = undefined; + } + + function processLastException() { + var _lastExceptionStack = lastExceptionStack, + _lastArgs = lastArgs; + lastArgs = null; + lastExceptionStack = null; + lastException = null; + notifyHandlers.apply(null, [_lastExceptionStack, false].concat(_lastArgs)); + } + + /** + * Reports an unhandled Error to TraceKit. + * @param {Error} ex + * @param {?boolean} rethrow If false, do not re-throw the exception. + * Only used for window.onerror to not cause an infinite loop of + * rethrowing. + */ + function report(ex, rethrow) { + var args = _slice.call(arguments, 1); + if (lastExceptionStack) { + if (lastException === ex) { + return; // already caught by an inner catch block, ignore + } else { + processLastException(); + } + } + + var stack = TraceKit.computeStackTrace(ex); + lastExceptionStack = stack; + lastException = ex; + lastArgs = args; + + // If the stack trace is incomplete, wait for 2 seconds for + // slow slow IE to see if onerror occurs or not before reporting + // this exception; otherwise, we will end up with an incomplete + // stack trace + setTimeout(function() { + if (lastException === ex) { + processLastException(); + } + }, stack.incomplete ? 2000 : 0); + + if (rethrow !== false) { + throw ex; // re-throw to propagate to the top level (and cause window.onerror) + } + } + + report.subscribe = subscribe; + report.unsubscribe = unsubscribe; + report.uninstall = unsubscribeAll; + return report; +})(); + +/** + * TraceKit.computeStackTrace: cross-browser stack traces in JavaScript + * + * Syntax: + * s = TraceKit.computeStackTrace(exception) // consider using TraceKit.report instead (see below) + * Returns: + * s.name - exception name + * s.message - exception message + * s.stack[i].url - JavaScript or HTML file URL + * s.stack[i].func - function name, or empty for anonymous functions (if guessing did not work) + * s.stack[i].args - arguments passed to the function, if known + * s.stack[i].line - line number, if known + * s.stack[i].column - column number, if known + * + * Supports: + * - Firefox: full stack trace with line numbers and unreliable column + * number on top frame + * - Opera 10: full stack trace with line and column numbers + * - Opera 9-: full stack trace with line numbers + * - Chrome: full stack trace with line and column numbers + * - Safari: line and column number for the topmost stacktrace element + * only + * - IE: no line numbers whatsoever + * + * Tries to guess names of anonymous functions by looking for assignments + * in the source code. In IE and Safari, we have to guess source file names + * by searching for function bodies inside all page scripts. This will not + * work for scripts that are loaded cross-domain. + * Here be dragons: some function names may be guessed incorrectly, and + * duplicate functions may be mismatched. + * + * TraceKit.computeStackTrace should only be used for tracing purposes. + * Logging of unhandled exceptions should be done with TraceKit.report, + * which builds on top of TraceKit.computeStackTrace and provides better + * IE support by utilizing the window.onerror event to retrieve information + * about the top of the stack. + * + * Note: In IE and Safari, no stack trace is recorded on the Error object, + * so computeStackTrace instead walks its *own* chain of callers. + * This means that: + * * in Safari, some methods may be missing from the stack trace; + * * in IE, the topmost function in the stack trace will always be the + * caller of computeStackTrace. + * + * This is okay for tracing (because you are likely to be calling + * computeStackTrace from the function you want to be the topmost element + * of the stack trace anyway), but not okay for logging unhandled + * exceptions (because your catch block will likely be far away from the + * inner function that actually caused the exception). + * + */ +TraceKit.computeStackTrace = (function computeStackTraceWrapper() { + // Contents of Exception in various browsers. + // + // SAFARI: + // ex.message = Can't find variable: qq + // ex.line = 59 + // ex.sourceId = 580238192 + // ex.sourceURL = http://... + // ex.expressionBeginOffset = 96 + // ex.expressionCaretOffset = 98 + // ex.expressionEndOffset = 98 + // ex.name = ReferenceError + // + // FIREFOX: + // ex.message = qq is not defined + // ex.fileName = http://... + // ex.lineNumber = 59 + // ex.columnNumber = 69 + // ex.stack = ...stack trace... (see the example below) + // ex.name = ReferenceError + // + // CHROME: + // ex.message = qq is not defined + // ex.name = ReferenceError + // ex.type = not_defined + // ex.arguments = ['aa'] + // ex.stack = ...stack trace... + // + // INTERNET EXPLORER: + // ex.message = ... + // ex.name = ReferenceError + // + // OPERA: + // ex.message = ...message... (see the example below) + // ex.name = ReferenceError + // ex.opera#sourceloc = 11 (pretty much useless, duplicates the info in ex.message) + // ex.stacktrace = n/a; see 'opera:config#UserPrefs|Exceptions Have Stacktrace' + + /** + * Computes stack trace information from the stack property. + * Chrome and Gecko use this property. + * @param {Error} ex + * @return {?Object.} Stack trace information. + */ + function computeStackTraceFromStackProp(ex) { + if (typeof ex.stack === 'undefined' || !ex.stack) return; + + var chrome = /^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i; + var winjs = /^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i; + // NOTE: blob urls are now supposed to always have an origin, therefore it's format + // which is `blob:http://url/path/with-some-uuid`, is matched by `blob.*?:\/` as well + var gecko = /^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i; + // Used to additionally parse URL/line/column from eval frames + var geckoEval = /(\S+) line (\d+)(?: > eval line \d+)* > eval/i; + var chromeEval = /\((\S*)(?::(\d+))(?::(\d+))\)/; + var lines = ex.stack.split('\n'); + var stack = []; + var submatch; + var parts; + var element; + var reference = /^(.*) is undefined$/.exec(ex.message); + + for (var i = 0, j = lines.length; i < j; ++i) { + if ((parts = chrome.exec(lines[i]))) { + var isNative = parts[2] && parts[2].indexOf('native') === 0; // start of line + var isEval = parts[2] && parts[2].indexOf('eval') === 0; // start of line + if (isEval && (submatch = chromeEval.exec(parts[2]))) { + // throw out eval line/column and use top-most line/column number + parts[2] = submatch[1]; // url + parts[3] = submatch[2]; // line + parts[4] = submatch[3]; // column + } + element = { + url: !isNative ? parts[2] : null, + func: parts[1] || UNKNOWN_FUNCTION, + args: isNative ? [parts[2]] : [], + line: parts[3] ? +parts[3] : null, + column: parts[4] ? +parts[4] : null + }; + } else if ((parts = winjs.exec(lines[i]))) { + element = { + url: parts[2], + func: parts[1] || UNKNOWN_FUNCTION, + args: [], + line: +parts[3], + column: parts[4] ? +parts[4] : null + }; + } else if ((parts = gecko.exec(lines[i]))) { + var isEval = parts[3] && parts[3].indexOf(' > eval') > -1; + if (isEval && (submatch = geckoEval.exec(parts[3]))) { + // throw out eval line/column and use top-most line number + parts[3] = submatch[1]; + parts[4] = submatch[2]; + parts[5] = null; // no column when eval + } else if (i === 0 && !parts[5] && typeof ex.columnNumber !== 'undefined') { + // FireFox uses this awesome columnNumber property for its top frame + // Also note, Firefox's column number is 0-based and everything else expects 1-based, + // so adding 1 + // NOTE: this hack doesn't work if top-most frame is eval + stack[0].column = ex.columnNumber + 1; + } + element = { + url: parts[3], + func: parts[1] || UNKNOWN_FUNCTION, + args: parts[2] ? parts[2].split(',') : [], + line: parts[4] ? +parts[4] : null, + column: parts[5] ? +parts[5] : null + }; + } else { + continue; + } + + if (!element.func && element.line) { + element.func = UNKNOWN_FUNCTION; + } + + if (element.url && element.url.substr(0, 5) === 'blob:') { + // Special case for handling JavaScript loaded into a blob. + // We use a synchronous AJAX request here as a blob is already in + // memory - it's not making a network request. This will generate a warning + // in the browser console, but there has already been an error so that's not + // that much of an issue. + var xhr = new XMLHttpRequest(); + xhr.open('GET', element.url, false); + xhr.send(null); + + // If we failed to download the source, skip this patch + if (xhr.status === 200) { + var source = xhr.responseText || ''; + + // We trim the source down to the last 300 characters as sourceMappingURL is always at the end of the file. + // Why 300? To be in line with: https://github.com/getsentry/sentry/blob/4af29e8f2350e20c28a6933354e4f42437b4ba42/src/sentry/lang/javascript/processor.py#L164-L175 + source = source.slice(-300); + + // Now we dig out the source map URL + var sourceMaps = source.match(/\/\/# sourceMappingURL=(.*)$/); + + // If we don't find a source map comment or we find more than one, continue on to the next element. + if (sourceMaps) { + var sourceMapAddress = sourceMaps[1]; + + // Now we check to see if it's a relative URL. + // If it is, convert it to an absolute one. + if (sourceMapAddress.charAt(0) === '~') { + sourceMapAddress = getLocationOrigin() + sourceMapAddress.slice(1); + } + + // Now we strip the '.map' off of the end of the URL and update the + // element so that Sentry can match the map to the blob. + element.url = sourceMapAddress.slice(0, -4); + } + } + } + + stack.push(element); + } + + if (!stack.length) { + return null; + } + + return { + name: ex.name, + message: ex.message, + url: getLocationHref(), + stack: stack + }; + } + + /** + * Adds information about the first frame to incomplete stack traces. + * Safari and IE require this to get complete data on the first frame. + * @param {Object.} stackInfo Stack trace information from + * one of the compute* methods. + * @param {string} url The URL of the script that caused an error. + * @param {(number|string)} lineNo The line number of the script that + * caused an error. + * @param {string=} message The error generated by the browser, which + * hopefully contains the name of the object that caused the error. + * @return {boolean} Whether or not the stack information was + * augmented. + */ + function augmentStackTraceWithInitialElement(stackInfo, url, lineNo, message) { + var initial = { + url: url, + line: lineNo + }; + + if (initial.url && initial.line) { + stackInfo.incomplete = false; + + if (!initial.func) { + initial.func = UNKNOWN_FUNCTION; + } + + if (stackInfo.stack.length > 0) { + if (stackInfo.stack[0].url === initial.url) { + if (stackInfo.stack[0].line === initial.line) { + return false; // already in stack trace + } else if ( + !stackInfo.stack[0].line && + stackInfo.stack[0].func === initial.func + ) { + stackInfo.stack[0].line = initial.line; + return false; + } + } + } + + stackInfo.stack.unshift(initial); + stackInfo.partial = true; + return true; + } else { + stackInfo.incomplete = true; + } + + return false; + } + + /** + * Computes stack trace information by walking the arguments.caller + * chain at the time the exception occurred. This will cause earlier + * frames to be missed but is the only way to get any stack trace in + * Safari and IE. The top frame is restored by + * {@link augmentStackTraceWithInitialElement}. + * @param {Error} ex + * @return {?Object.} Stack trace information. + */ + function computeStackTraceByWalkingCallerChain(ex, depth) { + var functionName = /function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i, + stack = [], + funcs = {}, + recursion = false, + parts, + item, + source; + + for ( + var curr = computeStackTraceByWalkingCallerChain.caller; + curr && !recursion; + curr = curr.caller + ) { + if (curr === computeStackTrace || curr === TraceKit.report) { + // console.log('skipping internal function'); + continue; + } + + item = { + url: null, + func: UNKNOWN_FUNCTION, + line: null, + column: null + }; + + if (curr.name) { + item.func = curr.name; + } else if ((parts = functionName.exec(curr.toString()))) { + item.func = parts[1]; + } + + if (typeof item.func === 'undefined') { + try { + item.func = parts.input.substring(0, parts.input.indexOf('{')); + } catch (e) {} + } + + if (funcs['' + curr]) { + recursion = true; + } else { + funcs['' + curr] = true; + } + + stack.push(item); + } + + if (depth) { + // console.log('depth is ' + depth); + // console.log('stack is ' + stack.length); + stack.splice(0, depth); + } + + var result = { + name: ex.name, + message: ex.message, + url: getLocationHref(), + stack: stack + }; + augmentStackTraceWithInitialElement( + result, + ex.sourceURL || ex.fileName, + ex.line || ex.lineNumber, + ex.message || ex.description + ); + return result; + } + + /** + * Computes a stack trace for an exception. + * @param {Error} ex + * @param {(string|number)=} depth + */ + function computeStackTrace(ex, depth) { + var stack = null; + depth = depth == null ? 0 : +depth; + + try { + stack = computeStackTraceFromStackProp(ex); + if (stack) { + return stack; + } + } catch (e) { + if (TraceKit.debug) { + throw e; + } + } + + try { + stack = computeStackTraceByWalkingCallerChain(ex, depth + 1); + if (stack) { + return stack; + } + } catch (e) { + if (TraceKit.debug) { + throw e; + } + } + return { + name: ex.name, + message: ex.message, + url: getLocationHref() + }; + } + + computeStackTrace.augmentStackTraceWithInitialElement = augmentStackTraceWithInitialElement; + computeStackTrace.computeStackTraceFromStackProp = computeStackTraceFromStackProp; + + return computeStackTrace; +})(); + +module.exports = TraceKit; + +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"9":9}],11:[function(_dereq_,module,exports){ +/* + json-stringify-safe + Like JSON.stringify, but doesn't throw on circular references. + + Originally forked from https://github.com/isaacs/json-stringify-safe + version 5.0.1 on 3/8/2017 and modified to handle Errors serialization + and IE8 compatibility. Tests for this are in test/vendor. + + ISC license: https://github.com/isaacs/json-stringify-safe/blob/master/LICENSE +*/ + +exports = module.exports = stringify; +exports.getSerialize = serializer; + +function indexOf(haystack, needle) { + for (var i = 0; i < haystack.length; ++i) { + if (haystack[i] === needle) return i; + } + return -1; +} + +function stringify(obj, replacer, spaces, cycleReplacer) { + return JSON.stringify(obj, serializer(replacer, cycleReplacer), spaces); +} + +// https://github.com/ftlabs/js-abbreviate/blob/fa709e5f139e7770a71827b1893f22418097fbda/index.js#L95-L106 +function stringifyError(value) { + var err = { + // These properties are implemented as magical getters and don't show up in for in + stack: value.stack, + message: value.message, + name: value.name + }; + + for (var i in value) { + if (Object.prototype.hasOwnProperty.call(value, i)) { + err[i] = value[i]; + } + } + + return err; +} + +function serializer(replacer, cycleReplacer) { + var stack = []; + var keys = []; + + if (cycleReplacer == null) { + cycleReplacer = function(key, value) { + if (stack[0] === value) { + return '[Circular ~]'; + } + return '[Circular ~.' + keys.slice(0, indexOf(stack, value)).join('.') + ']'; + }; + } + + return function(key, value) { + if (stack.length > 0) { + var thisPos = indexOf(stack, this); + ~thisPos ? stack.splice(thisPos + 1) : stack.push(this); + ~thisPos ? keys.splice(thisPos, Infinity, key) : keys.push(key); + + if (~indexOf(stack, value)) { + value = cycleReplacer.call(this, key, value); + } + } else { + stack.push(value); + } + + return replacer == null + ? value instanceof Error ? stringifyError(value) : value + : replacer.call(this, key, value); + }; +} + +},{}],12:[function(_dereq_,module,exports){ +/* + * JavaScript MD5 + * https://github.com/blueimp/JavaScript-MD5 + * + * Copyright 2011, Sebastian Tschan + * https://blueimp.net + * + * Licensed under the MIT license: + * https://opensource.org/licenses/MIT + * + * Based on + * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message + * Digest Algorithm, as defined in RFC 1321. + * Version 2.2 Copyright (C) Paul Johnston 1999 - 2009 + * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet + * Distributed under the BSD License + * See http://pajhome.org.uk/crypt/md5 for more info. + */ + +/* +* Add integers, wrapping at 2^32. This uses 16-bit operations internally +* to work around bugs in some JS interpreters. +*/ +function safeAdd(x, y) { + var lsw = (x & 0xffff) + (y & 0xffff); + var msw = (x >> 16) + (y >> 16) + (lsw >> 16); + return (msw << 16) | (lsw & 0xffff); +} + +/* +* Bitwise rotate a 32-bit number to the left. +*/ +function bitRotateLeft(num, cnt) { + return (num << cnt) | (num >>> (32 - cnt)); +} + +/* +* These functions implement the four basic operations the algorithm uses. +*/ +function md5cmn(q, a, b, x, s, t) { + return safeAdd(bitRotateLeft(safeAdd(safeAdd(a, q), safeAdd(x, t)), s), b); +} +function md5ff(a, b, c, d, x, s, t) { + return md5cmn((b & c) | (~b & d), a, b, x, s, t); +} +function md5gg(a, b, c, d, x, s, t) { + return md5cmn((b & d) | (c & ~d), a, b, x, s, t); +} +function md5hh(a, b, c, d, x, s, t) { + return md5cmn(b ^ c ^ d, a, b, x, s, t); +} +function md5ii(a, b, c, d, x, s, t) { + return md5cmn(c ^ (b | ~d), a, b, x, s, t); +} + +/* +* Calculate the MD5 of an array of little-endian words, and a bit length. +*/ +function binlMD5(x, len) { + /* append padding */ + x[len >> 5] |= 0x80 << (len % 32); + x[(((len + 64) >>> 9) << 4) + 14] = len; + + var i; + var olda; + var oldb; + var oldc; + var oldd; + var a = 1732584193; + var b = -271733879; + var c = -1732584194; + var d = 271733878; + + for (i = 0; i < x.length; i += 16) { + olda = a; + oldb = b; + oldc = c; + oldd = d; + + a = md5ff(a, b, c, d, x[i], 7, -680876936); + d = md5ff(d, a, b, c, x[i + 1], 12, -389564586); + c = md5ff(c, d, a, b, x[i + 2], 17, 606105819); + b = md5ff(b, c, d, a, x[i + 3], 22, -1044525330); + a = md5ff(a, b, c, d, x[i + 4], 7, -176418897); + d = md5ff(d, a, b, c, x[i + 5], 12, 1200080426); + c = md5ff(c, d, a, b, x[i + 6], 17, -1473231341); + b = md5ff(b, c, d, a, x[i + 7], 22, -45705983); + a = md5ff(a, b, c, d, x[i + 8], 7, 1770035416); + d = md5ff(d, a, b, c, x[i + 9], 12, -1958414417); + c = md5ff(c, d, a, b, x[i + 10], 17, -42063); + b = md5ff(b, c, d, a, x[i + 11], 22, -1990404162); + a = md5ff(a, b, c, d, x[i + 12], 7, 1804603682); + d = md5ff(d, a, b, c, x[i + 13], 12, -40341101); + c = md5ff(c, d, a, b, x[i + 14], 17, -1502002290); + b = md5ff(b, c, d, a, x[i + 15], 22, 1236535329); + + a = md5gg(a, b, c, d, x[i + 1], 5, -165796510); + d = md5gg(d, a, b, c, x[i + 6], 9, -1069501632); + c = md5gg(c, d, a, b, x[i + 11], 14, 643717713); + b = md5gg(b, c, d, a, x[i], 20, -373897302); + a = md5gg(a, b, c, d, x[i + 5], 5, -701558691); + d = md5gg(d, a, b, c, x[i + 10], 9, 38016083); + c = md5gg(c, d, a, b, x[i + 15], 14, -660478335); + b = md5gg(b, c, d, a, x[i + 4], 20, -405537848); + a = md5gg(a, b, c, d, x[i + 9], 5, 568446438); + d = md5gg(d, a, b, c, x[i + 14], 9, -1019803690); + c = md5gg(c, d, a, b, x[i + 3], 14, -187363961); + b = md5gg(b, c, d, a, x[i + 8], 20, 1163531501); + a = md5gg(a, b, c, d, x[i + 13], 5, -1444681467); + d = md5gg(d, a, b, c, x[i + 2], 9, -51403784); + c = md5gg(c, d, a, b, x[i + 7], 14, 1735328473); + b = md5gg(b, c, d, a, x[i + 12], 20, -1926607734); + + a = md5hh(a, b, c, d, x[i + 5], 4, -378558); + d = md5hh(d, a, b, c, x[i + 8], 11, -2022574463); + c = md5hh(c, d, a, b, x[i + 11], 16, 1839030562); + b = md5hh(b, c, d, a, x[i + 14], 23, -35309556); + a = md5hh(a, b, c, d, x[i + 1], 4, -1530992060); + d = md5hh(d, a, b, c, x[i + 4], 11, 1272893353); + c = md5hh(c, d, a, b, x[i + 7], 16, -155497632); + b = md5hh(b, c, d, a, x[i + 10], 23, -1094730640); + a = md5hh(a, b, c, d, x[i + 13], 4, 681279174); + d = md5hh(d, a, b, c, x[i], 11, -358537222); + c = md5hh(c, d, a, b, x[i + 3], 16, -722521979); + b = md5hh(b, c, d, a, x[i + 6], 23, 76029189); + a = md5hh(a, b, c, d, x[i + 9], 4, -640364487); + d = md5hh(d, a, b, c, x[i + 12], 11, -421815835); + c = md5hh(c, d, a, b, x[i + 15], 16, 530742520); + b = md5hh(b, c, d, a, x[i + 2], 23, -995338651); + + a = md5ii(a, b, c, d, x[i], 6, -198630844); + d = md5ii(d, a, b, c, x[i + 7], 10, 1126891415); + c = md5ii(c, d, a, b, x[i + 14], 15, -1416354905); + b = md5ii(b, c, d, a, x[i + 5], 21, -57434055); + a = md5ii(a, b, c, d, x[i + 12], 6, 1700485571); + d = md5ii(d, a, b, c, x[i + 3], 10, -1894986606); + c = md5ii(c, d, a, b, x[i + 10], 15, -1051523); + b = md5ii(b, c, d, a, x[i + 1], 21, -2054922799); + a = md5ii(a, b, c, d, x[i + 8], 6, 1873313359); + d = md5ii(d, a, b, c, x[i + 15], 10, -30611744); + c = md5ii(c, d, a, b, x[i + 6], 15, -1560198380); + b = md5ii(b, c, d, a, x[i + 13], 21, 1309151649); + a = md5ii(a, b, c, d, x[i + 4], 6, -145523070); + d = md5ii(d, a, b, c, x[i + 11], 10, -1120210379); + c = md5ii(c, d, a, b, x[i + 2], 15, 718787259); + b = md5ii(b, c, d, a, x[i + 9], 21, -343485551); + + a = safeAdd(a, olda); + b = safeAdd(b, oldb); + c = safeAdd(c, oldc); + d = safeAdd(d, oldd); + } + return [a, b, c, d]; +} + +/* +* Convert an array of little-endian words to a string +*/ +function binl2rstr(input) { + var i; + var output = ''; + var length32 = input.length * 32; + for (i = 0; i < length32; i += 8) { + output += String.fromCharCode((input[i >> 5] >>> (i % 32)) & 0xff); + } + return output; +} + +/* +* Convert a raw string to an array of little-endian words +* Characters >255 have their high-byte silently ignored. +*/ +function rstr2binl(input) { + var i; + var output = []; + output[(input.length >> 2) - 1] = undefined; + for (i = 0; i < output.length; i += 1) { + output[i] = 0; + } + var length8 = input.length * 8; + for (i = 0; i < length8; i += 8) { + output[i >> 5] |= (input.charCodeAt(i / 8) & 0xff) << (i % 32); + } + return output; +} + +/* +* Calculate the MD5 of a raw string +*/ +function rstrMD5(s) { + return binl2rstr(binlMD5(rstr2binl(s), s.length * 8)); +} + +/* +* Calculate the HMAC-MD5, of a key and some data (raw strings) +*/ +function rstrHMACMD5(key, data) { + var i; + var bkey = rstr2binl(key); + var ipad = []; + var opad = []; + var hash; + ipad[15] = opad[15] = undefined; + if (bkey.length > 16) { + bkey = binlMD5(bkey, key.length * 8); + } + for (i = 0; i < 16; i += 1) { + ipad[i] = bkey[i] ^ 0x36363636; + opad[i] = bkey[i] ^ 0x5c5c5c5c; + } + hash = binlMD5(ipad.concat(rstr2binl(data)), 512 + data.length * 8); + return binl2rstr(binlMD5(opad.concat(hash), 512 + 128)); +} + +/* +* Convert a raw string to a hex string +*/ +function rstr2hex(input) { + var hexTab = '0123456789abcdef'; + var output = ''; + var x; + var i; + for (i = 0; i < input.length; i += 1) { + x = input.charCodeAt(i); + output += hexTab.charAt((x >>> 4) & 0x0f) + hexTab.charAt(x & 0x0f); + } + return output; +} + +/* +* Encode a string as utf-8 +*/ +function str2rstrUTF8(input) { + return unescape(encodeURIComponent(input)); +} + +/* +* Take string arguments and return either raw or hex encoded strings +*/ +function rawMD5(s) { + return rstrMD5(str2rstrUTF8(s)); +} +function hexMD5(s) { + return rstr2hex(rawMD5(s)); +} +function rawHMACMD5(k, d) { + return rstrHMACMD5(str2rstrUTF8(k), str2rstrUTF8(d)); +} +function hexHMACMD5(k, d) { + return rstr2hex(rawHMACMD5(k, d)); +} + +function md5(string, key, raw) { + if (!key) { + if (!raw) { + return hexMD5(string); + } + return rawMD5(string); + } + if (!raw) { + return hexHMACMD5(key, string); + } + return rawHMACMD5(key, string); +} + +module.exports = md5; + +},{}]},{},[8,1,2,3,4])(8) +}); \ No newline at end of file diff --git a/packages/raven-js/dist/angular,ember,require,vue/raven.min.js b/packages/raven-js/dist/angular,ember,require,vue/raven.min.js new file mode 100644 index 000000000000..c00e723a9132 --- /dev/null +++ b/packages/raven-js/dist/angular,ember,require,vue/raven.min.js @@ -0,0 +1,4 @@ +/*! Raven.js 3.25.2 (30b6d4e) | github.com/getsentry/raven-js */ +!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.Raven=a()}}(function(){var a;return function b(a,c,d){function e(g,h){if(!c[g]){if(!a[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};a[g][0].call(k.exports,function(b){var c=a[g][1][b];return e(c?c:b)},k,k.exports,b,a,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;g":"anonymous component")+(a._isVue&&a.$options.__file?" at "+a.$options.__file:"")}function e(a,b){if(b=b||window.Vue,b&&b.config){var c=b.config.errorHandler;b.config.errorHandler=function(b,e,f){var g={};"[object Object]"===Object.prototype.toString.call(e)&&(g.componentName=d(e),g.propsData=e.$options.propsData),"undefined"!=typeof f&&(g.lifecycleHook=f),a.captureException(b,{extra:g}),"function"==typeof c&&c.call(this,b,e,f)}}}b.exports=e,a(8).addPlugin(b.exports)},{8:8}],5:[function(a,b,c){function d(a){this.name="RavenConfigError",this.message=a}d.prototype=new Error,d.prototype.constructor=d,b.exports=d},{}],6:[function(a,b,c){var d=a(9),e=function(a,b,c){var e=a[b],f=a;if(b in a){var g="warn"===b?"warning":b;a[b]=function(){var a=[].slice.call(arguments),h=d.safeJoin(a," "),i={level:g,logger:"console",extra:{arguments:a}};"assert"===b?a[0]===!1&&(h="Assertion failed: "+(d.safeJoin(a.slice(1)," ")||"console.assert"),i.extra.arguments=a.slice(1),c&&c(h,i)):c&&c(h,i),e&&Function.prototype.apply.call(e,f,a)}}};b.exports={wrapMethod:e}},{9:9}],7:[function(a,b,c){(function(c){function d(){return+new Date}function e(a,b){return s(b)?function(c){return b(c,a)}:b}function f(){this.b=!("object"!=typeof JSON||!JSON.stringify),this.c=!r(S),this.d=!r(T),this.e=null,this.f=null,this.g=null,this.h=null,this.i=null,this.j=null,this.k={},this.l={release:R.SENTRY_RELEASE&&R.SENTRY_RELEASE.id,logger:"javascript",ignoreErrors:[],ignoreUrls:[],whitelistUrls:[],includePaths:[],headers:null,collectWindowErrors:!0,captureUnhandledRejections:!0,maxMessageLength:0,maxUrlLength:250,stackTraceLimit:50,autoBreadcrumbs:!0,instrument:!0,sampleRate:1,sanitizeKeys:[]},this.m={method:"POST",keepalive:!0,referrerPolicy:K()?"origin":""},this.n=0,this.o=!1,this.p=Error.stackTraceLimit,this.q=R.console||{},this.r={},this.s=[],this.t=d(),this.u=[],this.v=[],this.w=null,this.x=R.location,this.y=this.x&&this.x.href,this.z();for(var a in this.q)this.r[a]=this.q[a]}var g=a(10),h=a(11),i=a(12),j=a(5),k=a(9),l=k.isErrorEvent,m=k.isDOMError,n=k.isDOMException,o=k.isError,p=k.isObject,q=k.isPlainObject,r=k.isUndefined,s=k.isFunction,t=k.isString,u=k.isArray,v=k.isEmptyObject,w=k.each,x=k.objectMerge,y=k.truncate,z=k.objectFrozen,A=k.hasKey,B=k.joinRegExp,C=k.urlencode,D=k.uuid4,E=k.htmlTreeAsString,F=k.isSameException,G=k.isSameStacktrace,H=k.parseUrl,I=k.fill,J=k.supportsFetch,K=k.supportsReferrerPolicy,L=k.serializeKeysForMessage,M=k.serializeException,N=k.sanitize,O=a(6).wrapMethod,P="source protocol user pass host port path".split(" "),Q=/^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/,R="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},S=R.document,T=R.navigator;f.prototype={VERSION:"3.25.2",debug:!1,TraceKit:g,config:function(a,b){var c=this;if(c.h)return this.A("error","Error: Raven has already been configured"),c;if(!a)return c;var d=c.l;b&&w(b,function(a,b){"tags"===a||"extra"===a||"user"===a?c.k[a]=b:d[a]=b}),c.setDSN(a),d.ignoreErrors.push(/^Script error\.?$/),d.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/),d.ignoreErrors=B(d.ignoreErrors),d.ignoreUrls=!!d.ignoreUrls.length&&B(d.ignoreUrls),d.whitelistUrls=!!d.whitelistUrls.length&&B(d.whitelistUrls),d.includePaths=B(d.includePaths),d.maxBreadcrumbs=Math.max(0,Math.min(d.maxBreadcrumbs||100,100));var e={xhr:!0,console:!0,dom:!0,location:!0,sentry:!0},f=d.autoBreadcrumbs;"[object Object]"==={}.toString.call(f)?f=x(e,f):f!==!1&&(f=e),d.autoBreadcrumbs=f;var h={tryCatch:!0},i=d.instrument;return"[object Object]"==={}.toString.call(i)?i=x(h,i):i!==!1&&(i=h),d.instrument=i,g.collectWindowErrors=!!d.collectWindowErrors,c},install:function(){var a=this;return a.isSetup()&&!a.o&&(g.report.subscribe(function(){a.B.apply(a,arguments)}),a.l.captureUnhandledRejections&&a.C(),a.D(),a.l.instrument&&a.l.instrument.tryCatch&&a.E(),a.l.autoBreadcrumbs&&a.F(),a.G(),a.o=!0),Error.stackTraceLimit=a.l.stackTraceLimit,this},setDSN:function(a){var b=this,c=b.H(a),d=c.path.lastIndexOf("/"),e=c.path.substr(1,d);b.I=a,b.i=c.user,b.J=c.pass&&c.pass.substr(1),b.j=c.path.substr(d+1),b.h=b.K(c),b.L=b.h+"/"+e+"api/"+b.j+"/store/",this.z()},context:function(a,b,c){return s(a)&&(c=b||[],b=a,a=void 0),this.wrap(a,b).apply(this,c)},wrap:function(a,b,c){function d(){var d=[],f=arguments.length,g=!a||a&&a.deep!==!1;for(c&&s(c)&&c.apply(this,arguments);f--;)d[f]=g?e.wrap(a,arguments[f]):arguments[f];try{return b.apply(this,d)}catch(h){throw e.M(),e.captureException(h,a),h}}var e=this;if(r(b)&&!s(a))return a;if(s(a)&&(b=a,a=void 0),!s(b))return b;try{if(b.N)return b;if(b.O)return b.O}catch(f){return b}for(var g in b)A(b,g)&&(d[g]=b[g]);return d.prototype=b.prototype,b.O=d,d.N=!0,d.P=b,d},uninstall:function(){return g.report.uninstall(),this.Q(),this.R(),this.S(),this.T(),Error.stackTraceLimit=this.p,this.o=!1,this},U:function(a){this.A("debug","Raven caught unhandled promise rejection:",a),this.captureException(a.reason,{extra:{unhandledPromiseRejection:!0}})},C:function(){return this.U=this.U.bind(this),R.addEventListener&&R.addEventListener("unhandledrejection",this.U),this},Q:function(){return R.removeEventListener&&R.removeEventListener("unhandledrejection",this.U),this},captureException:function(a,b){if(b=x({trimHeadFrames:0},b?b:{}),l(a)&&a.error)a=a.error;else{if(m(a)||n(a)){var c=a.name||(m(a)?"DOMError":"DOMException"),d=a.message?c+": "+a.message:c;return this.captureMessage(d,x(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}))}if(o(a))a=a;else{if(!q(a))return this.captureMessage(a,x(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}));b=this.V(b,a),a=new Error(b.message)}}this.e=a;try{var e=g.computeStackTrace(a);this.W(e,b)}catch(f){if(a!==f)throw f}return this},V:function(a,b){var c=Object.keys(b).sort(),d=x(a,{message:"Non-Error exception captured with keys: "+L(c),fingerprint:[i(c)],extra:a.extra||{}});return d.extra.X=M(b),d},captureMessage:function(a,b){if(!this.l.ignoreErrors.test||!this.l.ignoreErrors.test(a)){b=b||{},a+="";var c,d=x({message:a},b);try{throw new Error(a)}catch(e){c=e}c.name=null;var f=g.computeStackTrace(c),h=u(f.stack)&&f.stack[1];h&&"Raven.captureException"===h.func&&(h=f.stack[2]);var i=h&&h.url||"";if((!this.l.ignoreUrls.test||!this.l.ignoreUrls.test(i))&&(!this.l.whitelistUrls.test||this.l.whitelistUrls.test(i))){if(this.l.stacktrace||b&&b.stacktrace){d.fingerprint=null==d.fingerprint?a:d.fingerprint,b=x({trimHeadFrames:0},b),b.trimHeadFrames+=1;var j=this.Y(f,b);d.stacktrace={frames:j.reverse()}}return d.fingerprint&&(d.fingerprint=u(d.fingerprint)?d.fingerprint:[d.fingerprint]),this.Z(d),this}}},captureBreadcrumb:function(a){var b=x({timestamp:d()/1e3},a);if(s(this.l.breadcrumbCallback)){var c=this.l.breadcrumbCallback(b);if(p(c)&&!v(c))b=c;else if(c===!1)return this}return this.v.push(b),this.v.length>this.l.maxBreadcrumbs&&this.v.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.s.push([a,b]),this.o&&this.G(),this},setUserContext:function(a){return this.k.user=a,this},setExtraContext:function(a){return this.$("extra",a),this},setTagsContext:function(a){return this.$("tags",a),this},clearContext:function(){return this.k={},this},getContext:function(){return JSON.parse(h(this.k))},setEnvironment:function(a){return this.l.environment=a,this},setRelease:function(a){return this.l.release=a,this},setDataCallback:function(a){var b=this.l.dataCallback;return this.l.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.l.breadcrumbCallback;return this.l.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.l.shouldSendCallback;return this.l.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.l.transport=a,this},lastException:function(){return this.e},lastEventId:function(){return this.g},isSetup:function(){return!!this.b&&(!!this.h||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.A("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=R.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(S){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.I;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.k.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.K(this.H(c)),h=S.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(S.head||S.body).appendChild(h)}},M:function(){var a=this;this.n+=1,setTimeout(function(){a.n-=1})},_:function(a,b){var c,d;if(this.c){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),S.createEvent?(c=S.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=S.createEventObject(),c.eventType=a);for(d in b)A(b,d)&&(c[d]=b[d]);if(S.createEvent)S.dispatchEvent(c);else try{S.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},aa:function(a){var b=this;return function(c){if(b.ba=null,b.w!==c){b.w=c;var d;try{d=E(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ca:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.ba;g||a.aa("input")(c),clearTimeout(g),a.ba=setTimeout(function(){a.ba=null},b)}}},da:function(a,b){var c=H(this.x.href),d=H(b),e=H(a);this.y=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},D:function(){var a=this;a.ea=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.N?a.ea.apply(this.P,arguments):a.ea.apply(this,arguments)}},R:function(){this.ea&&(Function.prototype.toString=this.ea)},E:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.da(b.y,c+""),a.apply(this,arguments)}};I(R.history,"pushState",j,d),I(R.history,"replaceState",j,d)}if(c.console&&"console"in R&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};w(["debug","info","warn","error","log"],function(a,b){O(console,b,k)})}},S:function(){for(var a;this.u.length;){a=this.u.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},T:function(){for(var a in this.r)this.q[a]=this.r[a]},G:function(){var a=this;w(this.s,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},H:function(a){var b=Q.exec(a),c={},d=7;try{for(;d--;)c[P[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.l.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},K:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},B:function(){this.n||this.W.apply(this,arguments)},W:function(a,b){var c=this.Y(a,b);this._("handle",{stackInfo:a,options:b}),this.ga(a.name,a.message,a.url,a.lineno,c,b)},Y:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(w(a.stack,function(b,e){var f=c.ha(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.v,0)}),this.k.user&&(a.user=this.k.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),a=this.qa(a),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||v(a[b]))&&delete a[b]}),s(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!v(a)&&(!s(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.na()?void this.A("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function F(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&l(b))for(c=b.split(/\s+/),f=0;fc?Q(a,b-1):d}function R(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?X:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function S(a,b){function c(a){return m(a)?a.map(function(a){return c(a)}):k(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!m(b)||m(b)&&0===b.length)return a;var d,e=A(b),f="********";try{d=JSON.parse(T(a))}catch(g){return a}return c(d)}var T=a(11),U="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},V=3,W=51200,X=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isDOMError:g,isDOMException:h,isUndefined:i,isFunction:j,isPlainObject:k,isString:l,isArray:m,isEmptyObject:n,supportsErrorEvent:o,supportsDOMError:p,supportsDOMException:q,supportsFetch:r,supportsReferrerPolicy:s,supportsPromiseRejectionEvent:t,wrappedCallback:u,each:v,objectMerge:w,truncate:y,objectFrozen:x,hasKey:z,joinRegExp:A,urlencode:B,uuid4:D,htmlTreeAsString:E,htmlElementAsString:F,isSameException:I,isSameStacktrace:J,parseUrl:C,fill:K,safeJoin:L,serializeException:Q,serializeKeysForMessage:R,sanitize:S}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{11:11}],10:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}function e(){return"undefined"==typeof document||null==document.location?"":(document.location.origin||(document.location.origin=document.location.protocol+"//"+document.location.hostname+(document.location.port?":"+document.location.port:"")),document.location.origin)}var f=a(9),g={collectWindowErrors:!0,debug:!1},h="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},i=[].slice,j="?",k=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;g.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function e(a,b){var c=null;if(!b||g.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(i.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,h,i){var l=null,m=f.isErrorEvent(i)?i.error:i,n=f.isErrorEvent(a)?a.message:a;if(v)g.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&f.isError(m))l=g.computeStackTrace(m),e(l,!0);else{var p,r={url:b,line:c,column:h},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(k);p&&(s=p[1],n=p[2])}r.func=j,l={name:s,message:n,url:d(),stack:[r]},e(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=h.onerror,h.onerror=l,r=!0)}function n(){r&&(h.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,e.apply(null,[a,!1].concat(b))}function p(a,b){var c=i.call(arguments,1);if(v){if(u===a)return;o()}var d=g.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),g.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,f,g=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,h=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,i=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,k=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,l=/\((\S*)(?::(\d+))(?::(\d+))\)/,m=a.stack.split("\n"),n=[],o=(/^(.*) is undefined$/.exec(a.message),0),p=m.length;o eval")>-1;r&&(b=k.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==o||c[5]||"undefined"==typeof a.columnNumber||(n[0].column=a.columnNumber+1),f={url:c[3],func:c[1]||j,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}if(!f.func&&f.line&&(f.func=j),f.url&&"blob:"===f.url.substr(0,5)){var s=new XMLHttpRequest;if(s.open("GET",f.url,!1),s.send(null),200===s.status){var t=s.responseText||"";t=t.slice(-300);var u=t.match(/\/\/# sourceMappingURL=(.*)$/);if(u){var v=u[1];"~"===v.charAt(0)&&(v=e()+v.slice(1)),f.url=v.slice(0,-4)}}}n.push(f)}return n.length?{name:a.name,message:a.message,url:d(),stack:n}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=j),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,e){for(var h,i,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==f&&o!==g.report){if(i={url:null,func:j,line:null,column:null},o.name?i.func=o.name:(h=k.exec(o.toString()))&&(i.func=h[1]),"undefined"==typeof i.func)try{i.func=h.input.substring(0,h.input.indexOf("{"))}catch(p){}m[""+o]?n=!0:m[""+o]=!0,l.push(i)}e&&l.splice(0,e);var q={name:a.name,message:a.message,url:d(),stack:l};return b(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),q}function f(b,e){var f=null;e=null==e?0:+e;try{if(f=a(b))return f}catch(h){if(g.debug)throw h}try{if(f=c(b,e+1))return f}catch(h){if(g.debug)throw h}return{name:b.name,message:b.message,url:d()}}return f.augmentStackTraceWithInitialElement=b,f.computeStackTraceFromStackProp=a,f}(),b.exports=g}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{9:9}],11:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}],12:[function(a,b,c){function d(a,b){var c=(65535&a)+(65535&b),d=(a>>16)+(b>>16)+(c>>16);return d<<16|65535&c}function e(a,b){return a<>>32-b}function f(a,b,c,f,g,h){return d(e(d(d(b,a),d(f,h)),g),c)}function g(a,b,c,d,e,g,h){return f(b&c|~b&d,a,b,e,g,h)}function h(a,b,c,d,e,g,h){return f(b&d|c&~d,a,b,e,g,h)}function i(a,b,c,d,e,g,h){return f(b^c^d,a,b,e,g,h)}function j(a,b,c,d,e,g,h){return f(c^(b|~d),a,b,e,g,h)}function k(a,b){a[b>>5]|=128<>>9<<4)+14]=b;var c,e,f,k,l,m=1732584193,n=-271733879,o=-1732584194,p=271733878;for(c=0;c>5]>>>b%32&255);return c}function m(a){var b,c=[];for(c[(a.length>>2)-1]=void 0,b=0;b>5]|=(255&a.charCodeAt(b/8))<16&&(e=k(e,8*a.length)),c=0;c<16;c+=1)f[c]=909522486^e[c],g[c]=1549556828^e[c];return d=k(f.concat(m(b)),512+8*b.length),l(k(g.concat(d),640))}function p(a){var b,c,d="0123456789abcdef",e="";for(c=0;c>>4&15)+d.charAt(15&b);return e}function q(a){return unescape(encodeURIComponent(a))}function r(a){return n(q(a))}function s(a){return p(r(a))}function t(a,b){return o(q(a),q(b))}function u(a,b){return p(t(a,b))}function v(a,b,c){return b?c?t(b,a):u(b,a):c?r(a):s(a)}b.exports=v},{}]},{},[8,1,2,3,4])(8)}); +//# sourceMappingURL=raven.min.js.map \ No newline at end of file diff --git a/packages/raven-js/dist/angular,ember,require,vue/raven.min.js.map b/packages/raven-js/dist/angular,ember,require,vue/raven.min.js.map new file mode 100644 index 000000000000..84cb20bd2db6 --- /dev/null +++ b/packages/raven-js/dist/angular,ember,require,vue/raven.min.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","angularPlugin","angular","RavenProvider","$get","$window","ExceptionHandlerProvider","$provide","decorator","exceptionHandler","R","$delegate","ex","cause","captureException","extra","moduleName","provider","config","setDataCallback","wrappedCallback","data","_normalizeData","angularPattern","exception","values","matches","exec","value","type","message","angularDocs","substr","addPlugin","8","9","2","emberPlugin","Ember","_oldOnError","onerror","error","RSVP","on","reason","context","captureMessage","3","requirePlugin","wrap","deep","4","formatComponentName","vm","$root","name","_isVue","$options","_componentTag","__file","vuePlugin","Vue","errorHandler","info","metaData","Object","prototype","toString","componentName","propsData","lifecycleHook","5","RavenConfigError","constructor","6","utils","wrapMethod","console","level","callback","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","msg","safeJoin","logger","Function","apply","7","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","sanitizeKeys","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isErrorEvent","isDOMError","isDOMException","isError","isObject","isPlainObject","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","sanitize","wrapConsoleMethod","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","dsn","options","_logDebug","globalOptions","key","setDSN","push","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","func","undefined","_before","wrapped","_ignoreNextOnError","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","U","event","unhandledPromiseRejection","C","_promiseRejectionHandler","bind","addEventListener","Q","removeEventListener","trimHeadFrames","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","V","currentOptions","exKeys","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","M","setTimeout","_","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","aa","evtName","_keypressTimeout","target","category","ca","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","da","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","D","_originalFunctionToString","E","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","F","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","S","builtin","T","G","installer","concat","H","str","m","allowSecretKey","K","port","B","W","stackInfo","_triggerEvent","_processException","lineno","Y","frame","_normalizeFrame","in_app","ha","stackInfoUrl","normalized","filename","line","colno","column","function","ga","prefixedMessage","transaction","ia","request","Referer","breadcrumbs","_trimBreadcrumbs","ja","urlProp","urlProps","ka","httpData","userAgent","User-Agent","referrer","z","_backoffDuration","_backoffStart","na","oa","current","last","pa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Z","baseData","project","platform","_getHttpData","serverName","server_name","_sanitizeData","forEach","random","_sendProcessedPayload","qa","sa","ra","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","ta","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","open","setRequestHeader","send","ua","hash","evaluated","A","$","setUser","setReleaseContext","10","11","12","RavenConstructor","_Raven","noConflict","Client","what","supportsErrorEvent","ErrorEvent","supportsDOMError","DOMError","supportsDOMException","DOMException","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","sanitizeMask","safeInput","o_O","getLocationHref","getLocationOrigin","origin","hostname","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","responseText","sourceMaps","sourceMapAddress","charAt","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","y","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","string","raw"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file diff --git a/packages/raven-js/dist/angular,ember,require/raven.js b/packages/raven-js/dist/angular,ember,require/raven.js new file mode 100644 index 000000000000..ec05cb0764ed --- /dev/null +++ b/packages/raven-js/dist/angular,ember,require/raven.js @@ -0,0 +1,4137 @@ +/*! Raven.js 3.25.2 (30b6d4e) | github.com/getsentry/raven-js */ + +/* + * Includes TraceKit + * https://github.com/getsentry/TraceKit + * + * Copyright 2018 Matt Robenolt and other contributors + * Released under the BSD license + * https://github.com/getsentry/raven-js/blob/master/LICENSE + * + */ + +(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.Raven = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o captureException(string) => captureMessage(string) + if (initialCall && initialCall.func === 'Raven.captureException') { + initialCall = stack.stack[2]; + } + + var fileurl = (initialCall && initialCall.url) || ''; + + if ( + !!this._globalOptions.ignoreUrls.test && + this._globalOptions.ignoreUrls.test(fileurl) + ) { + return; + } + + if ( + !!this._globalOptions.whitelistUrls.test && + !this._globalOptions.whitelistUrls.test(fileurl) + ) { + return; + } + + if (this._globalOptions.stacktrace || (options && options.stacktrace)) { + // fingerprint on msg, not stack trace (legacy behavior, could be revisited) + data.fingerprint = data.fingerprint == null ? msg : data.fingerprint; + + options = objectMerge( + { + trimHeadFrames: 0 + }, + options + ); + // Since we know this is a synthetic trace, the top frame (this function call) + // MUST be from Raven.js, so mark it for trimming + // We add to the trim counter so that callers can choose to trim extra frames, such + // as utility functions. + options.trimHeadFrames += 1; + + var frames = this._prepareFrames(stack, options); + data.stacktrace = { + // Sentry expects frames oldest to newest + frames: frames.reverse() + }; + } + + // Make sure that fingerprint is always wrapped in an array + if (data.fingerprint) { + data.fingerprint = isArray(data.fingerprint) + ? data.fingerprint + : [data.fingerprint]; + } + + // Fire away! + this._send(data); + + return this; + }, + + captureBreadcrumb: function(obj) { + var crumb = objectMerge( + { + timestamp: now() / 1000 + }, + obj + ); + + if (isFunction(this._globalOptions.breadcrumbCallback)) { + var result = this._globalOptions.breadcrumbCallback(crumb); + + if (isObject(result) && !isEmptyObject(result)) { + crumb = result; + } else if (result === false) { + return this; + } + } + + this._breadcrumbs.push(crumb); + if (this._breadcrumbs.length > this._globalOptions.maxBreadcrumbs) { + this._breadcrumbs.shift(); + } + return this; + }, + + addPlugin: function(plugin /*arg1, arg2, ... argN*/) { + var pluginArgs = [].slice.call(arguments, 1); + + this._plugins.push([plugin, pluginArgs]); + if (this._isRavenInstalled) { + this._drainPlugins(); + } + + return this; + }, + + /* + * Set/clear a user to be sent along with the payload. + * + * @param {object} user An object representing user data [optional] + * @return {Raven} + */ + setUserContext: function(user) { + // Intentionally do not merge here since that's an unexpected behavior. + this._globalContext.user = user; + + return this; + }, + + /* + * Merge extra attributes to be sent along with the payload. + * + * @param {object} extra An object representing extra data [optional] + * @return {Raven} + */ + setExtraContext: function(extra) { + this._mergeContext('extra', extra); + + return this; + }, + + /* + * Merge tags to be sent along with the payload. + * + * @param {object} tags An object representing tags [optional] + * @return {Raven} + */ + setTagsContext: function(tags) { + this._mergeContext('tags', tags); + + return this; + }, + + /* + * Clear all of the context. + * + * @return {Raven} + */ + clearContext: function() { + this._globalContext = {}; + + return this; + }, + + /* + * Get a copy of the current context. This cannot be mutated. + * + * @return {object} copy of context + */ + getContext: function() { + // lol javascript + return JSON.parse(stringify(this._globalContext)); + }, + + /* + * Set environment of application + * + * @param {string} environment Typically something like 'production'. + * @return {Raven} + */ + setEnvironment: function(environment) { + this._globalOptions.environment = environment; + + return this; + }, + + /* + * Set release version of application + * + * @param {string} release Typically something like a git SHA to identify version + * @return {Raven} + */ + setRelease: function(release) { + this._globalOptions.release = release; + + return this; + }, + + /* + * Set the dataCallback option + * + * @param {function} callback The callback to run which allows the + * data blob to be mutated before sending + * @return {Raven} + */ + setDataCallback: function(callback) { + var original = this._globalOptions.dataCallback; + this._globalOptions.dataCallback = keepOriginalCallback(original, callback); + return this; + }, + + /* + * Set the breadcrumbCallback option + * + * @param {function} callback The callback to run which allows filtering + * or mutating breadcrumbs + * @return {Raven} + */ + setBreadcrumbCallback: function(callback) { + var original = this._globalOptions.breadcrumbCallback; + this._globalOptions.breadcrumbCallback = keepOriginalCallback(original, callback); + return this; + }, + + /* + * Set the shouldSendCallback option + * + * @param {function} callback The callback to run which allows + * introspecting the blob before sending + * @return {Raven} + */ + setShouldSendCallback: function(callback) { + var original = this._globalOptions.shouldSendCallback; + this._globalOptions.shouldSendCallback = keepOriginalCallback(original, callback); + return this; + }, + + /** + * Override the default HTTP transport mechanism that transmits data + * to the Sentry server. + * + * @param {function} transport Function invoked instead of the default + * `makeRequest` handler. + * + * @return {Raven} + */ + setTransport: function(transport) { + this._globalOptions.transport = transport; + + return this; + }, + + /* + * Get the latest raw exception that was captured by Raven. + * + * @return {error} + */ + lastException: function() { + return this._lastCapturedException; + }, + + /* + * Get the last event id + * + * @return {string} + */ + lastEventId: function() { + return this._lastEventId; + }, + + /* + * Determine if Raven is setup and ready to go. + * + * @return {boolean} + */ + isSetup: function() { + if (!this._hasJSON) return false; // needs JSON support + if (!this._globalServer) { + if (!this.ravenNotConfiguredError) { + this.ravenNotConfiguredError = true; + this._logDebug('error', 'Error: Raven has not been configured.'); + } + return false; + } + return true; + }, + + afterLoad: function() { + // TODO: remove window dependence? + + // Attempt to initialize Raven on load + var RavenConfig = _window.RavenConfig; + if (RavenConfig) { + this.config(RavenConfig.dsn, RavenConfig.config).install(); + } + }, + + showReportDialog: function(options) { + if ( + !_document // doesn't work without a document (React native) + ) + return; + + options = options || {}; + + var lastEventId = options.eventId || this.lastEventId(); + if (!lastEventId) { + throw new RavenConfigError('Missing eventId'); + } + + var dsn = options.dsn || this._dsn; + if (!dsn) { + throw new RavenConfigError('Missing DSN'); + } + + var encode = encodeURIComponent; + var qs = ''; + qs += '?eventId=' + encode(lastEventId); + qs += '&dsn=' + encode(dsn); + + var user = options.user || this._globalContext.user; + if (user) { + if (user.name) qs += '&name=' + encode(user.name); + if (user.email) qs += '&email=' + encode(user.email); + } + + var globalServer = this._getGlobalServer(this._parseDSN(dsn)); + + var script = _document.createElement('script'); + script.async = true; + script.src = globalServer + '/api/embed/error-page/' + qs; + (_document.head || _document.body).appendChild(script); + }, + + /**** Private functions ****/ + _ignoreNextOnError: function() { + var self = this; + this._ignoreOnError += 1; + setTimeout(function() { + // onerror should trigger before setTimeout + self._ignoreOnError -= 1; + }); + }, + + _triggerEvent: function(eventType, options) { + // NOTE: `event` is a native browser thing, so let's avoid conflicting wiht it + var evt, key; + + if (!this._hasDocument) return; + + options = options || {}; + + eventType = 'raven' + eventType.substr(0, 1).toUpperCase() + eventType.substr(1); + + if (_document.createEvent) { + evt = _document.createEvent('HTMLEvents'); + evt.initEvent(eventType, true, true); + } else { + evt = _document.createEventObject(); + evt.eventType = eventType; + } + + for (key in options) + if (hasKey(options, key)) { + evt[key] = options[key]; + } + + if (_document.createEvent) { + // IE9 if standards + _document.dispatchEvent(evt); + } else { + // IE8 regardless of Quirks or Standards + // IE9 if quirks + try { + _document.fireEvent('on' + evt.eventType.toLowerCase(), evt); + } catch (e) { + // Do nothing + } + } + }, + + /** + * Wraps addEventListener to capture UI breadcrumbs + * @param evtName the event name (e.g. "click") + * @returns {Function} + * @private + */ + _breadcrumbEventHandler: function(evtName) { + var self = this; + return function(evt) { + // reset keypress timeout; e.g. triggering a 'click' after + // a 'keypress' will reset the keypress debounce so that a new + // set of keypresses can be recorded + self._keypressTimeout = null; + + // It's possible this handler might trigger multiple times for the same + // event (e.g. event propagation through node ancestors). Ignore if we've + // already captured the event. + if (self._lastCapturedEvent === evt) return; + + self._lastCapturedEvent = evt; + + // try/catch both: + // - accessing evt.target (see getsentry/raven-js#838, #768) + // - `htmlTreeAsString` because it's complex, and just accessing the DOM incorrectly + // can throw an exception in some circumstances. + var target; + try { + target = htmlTreeAsString(evt.target); + } catch (e) { + target = ''; + } + + self.captureBreadcrumb({ + category: 'ui.' + evtName, // e.g. ui.click, ui.input + message: target + }); + }; + }, + + /** + * Wraps addEventListener to capture keypress UI events + * @returns {Function} + * @private + */ + _keypressEventHandler: function() { + var self = this, + debounceDuration = 1000; // milliseconds + + // TODO: if somehow user switches keypress target before + // debounce timeout is triggered, we will only capture + // a single breadcrumb from the FIRST target (acceptable?) + return function(evt) { + var target; + try { + target = evt.target; + } catch (e) { + // just accessing event properties can throw an exception in some rare circumstances + // see: https://github.com/getsentry/raven-js/issues/838 + return; + } + var tagName = target && target.tagName; + + // only consider keypress events on actual input elements + // this will disregard keypresses targeting body (e.g. tabbing + // through elements, hotkeys, etc) + if ( + !tagName || + (tagName !== 'INPUT' && tagName !== 'TEXTAREA' && !target.isContentEditable) + ) + return; + + // record first keypress in a series, but ignore subsequent + // keypresses until debounce clears + var timeout = self._keypressTimeout; + if (!timeout) { + self._breadcrumbEventHandler('input')(evt); + } + clearTimeout(timeout); + self._keypressTimeout = setTimeout(function() { + self._keypressTimeout = null; + }, debounceDuration); + }; + }, + + /** + * Captures a breadcrumb of type "navigation", normalizing input URLs + * @param to the originating URL + * @param from the target URL + * @private + */ + _captureUrlChange: function(from, to) { + var parsedLoc = parseUrl(this._location.href); + var parsedTo = parseUrl(to); + var parsedFrom = parseUrl(from); + + // because onpopstate only tells you the "new" (to) value of location.href, and + // not the previous (from) value, we need to track the value of the current URL + // state ourselves + this._lastHref = to; + + // Use only the path component of the URL if the URL matches the current + // document (almost all the time when using pushState) + if (parsedLoc.protocol === parsedTo.protocol && parsedLoc.host === parsedTo.host) + to = parsedTo.relative; + if (parsedLoc.protocol === parsedFrom.protocol && parsedLoc.host === parsedFrom.host) + from = parsedFrom.relative; + + this.captureBreadcrumb({ + category: 'navigation', + data: { + to: to, + from: from + } + }); + }, + + _patchFunctionToString: function() { + var self = this; + self._originalFunctionToString = Function.prototype.toString; + // eslint-disable-next-line no-extend-native + Function.prototype.toString = function() { + if (typeof this === 'function' && this.__raven__) { + return self._originalFunctionToString.apply(this.__orig__, arguments); + } + return self._originalFunctionToString.apply(this, arguments); + }; + }, + + _unpatchFunctionToString: function() { + if (this._originalFunctionToString) { + // eslint-disable-next-line no-extend-native + Function.prototype.toString = this._originalFunctionToString; + } + }, + + /** + * Wrap timer functions and event targets to catch errors and provide + * better metadata. + */ + _instrumentTryCatch: function() { + var self = this; + + var wrappedBuiltIns = self._wrappedBuiltIns; + + function wrapTimeFn(orig) { + return function(fn, t) { + // preserve arity + // Make a copy of the arguments to prevent deoptimization + // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments + var args = new Array(arguments.length); + for (var i = 0; i < args.length; ++i) { + args[i] = arguments[i]; + } + var originalCallback = args[0]; + if (isFunction(originalCallback)) { + args[0] = self.wrap(originalCallback); + } + + // IE < 9 doesn't support .call/.apply on setInterval/setTimeout, but it + // also supports only two arguments and doesn't care what this is, so we + // can just call the original function directly. + if (orig.apply) { + return orig.apply(this, args); + } else { + return orig(args[0], args[1]); + } + }; + } + + var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; + + function wrapEventTarget(global) { + var proto = _window[global] && _window[global].prototype; + if (proto && proto.hasOwnProperty && proto.hasOwnProperty('addEventListener')) { + fill( + proto, + 'addEventListener', + function(orig) { + return function(evtName, fn, capture, secure) { + // preserve arity + try { + if (fn && fn.handleEvent) { + fn.handleEvent = self.wrap(fn.handleEvent); + } + } catch (err) { + // can sometimes get 'Permission denied to access property "handle Event' + } + + // More breadcrumb DOM capture ... done here and not in `_instrumentBreadcrumbs` + // so that we don't have more than one wrapper function + var before, clickHandler, keypressHandler; + + if ( + autoBreadcrumbs && + autoBreadcrumbs.dom && + (global === 'EventTarget' || global === 'Node') + ) { + // NOTE: generating multiple handlers per addEventListener invocation, should + // revisit and verify we can just use one (almost certainly) + clickHandler = self._breadcrumbEventHandler('click'); + keypressHandler = self._keypressEventHandler(); + before = function(evt) { + // need to intercept every DOM event in `before` argument, in case that + // same wrapped method is re-used for different events (e.g. mousemove THEN click) + // see #724 + if (!evt) return; + + var eventType; + try { + eventType = evt.type; + } catch (e) { + // just accessing event properties can throw an exception in some rare circumstances + // see: https://github.com/getsentry/raven-js/issues/838 + return; + } + if (eventType === 'click') return clickHandler(evt); + else if (eventType === 'keypress') return keypressHandler(evt); + }; + } + return orig.call( + this, + evtName, + self.wrap(fn, undefined, before), + capture, + secure + ); + }; + }, + wrappedBuiltIns + ); + fill( + proto, + 'removeEventListener', + function(orig) { + return function(evt, fn, capture, secure) { + try { + fn = fn && (fn.__raven_wrapper__ ? fn.__raven_wrapper__ : fn); + } catch (e) { + // ignore, accessing __raven_wrapper__ will throw in some Selenium environments + } + return orig.call(this, evt, fn, capture, secure); + }; + }, + wrappedBuiltIns + ); + } + } + + fill(_window, 'setTimeout', wrapTimeFn, wrappedBuiltIns); + fill(_window, 'setInterval', wrapTimeFn, wrappedBuiltIns); + if (_window.requestAnimationFrame) { + fill( + _window, + 'requestAnimationFrame', + function(orig) { + return function(cb) { + return orig(self.wrap(cb)); + }; + }, + wrappedBuiltIns + ); + } + + // event targets borrowed from bugsnag-js: + // https://github.com/bugsnag/bugsnag-js/blob/master/src/bugsnag.js#L666 + var eventTargets = [ + 'EventTarget', + 'Window', + 'Node', + 'ApplicationCache', + 'AudioTrackList', + 'ChannelMergerNode', + 'CryptoOperation', + 'EventSource', + 'FileReader', + 'HTMLUnknownElement', + 'IDBDatabase', + 'IDBRequest', + 'IDBTransaction', + 'KeyOperation', + 'MediaController', + 'MessagePort', + 'ModalWindow', + 'Notification', + 'SVGElementInstance', + 'Screen', + 'TextTrack', + 'TextTrackCue', + 'TextTrackList', + 'WebSocket', + 'WebSocketWorker', + 'Worker', + 'XMLHttpRequest', + 'XMLHttpRequestEventTarget', + 'XMLHttpRequestUpload' + ]; + for (var i = 0; i < eventTargets.length; i++) { + wrapEventTarget(eventTargets[i]); + } + }, + + /** + * Instrument browser built-ins w/ breadcrumb capturing + * - XMLHttpRequests + * - DOM interactions (click/typing) + * - window.location changes + * - console + * + * Can be disabled or individually configured via the `autoBreadcrumbs` config option + */ + _instrumentBreadcrumbs: function() { + var self = this; + var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; + + var wrappedBuiltIns = self._wrappedBuiltIns; + + function wrapProp(prop, xhr) { + if (prop in xhr && isFunction(xhr[prop])) { + fill(xhr, prop, function(orig) { + return self.wrap(orig); + }); // intentionally don't track filled methods on XHR instances + } + } + + if (autoBreadcrumbs.xhr && 'XMLHttpRequest' in _window) { + var xhrproto = _window.XMLHttpRequest && _window.XMLHttpRequest.prototype; + fill( + xhrproto, + 'open', + function(origOpen) { + return function(method, url) { + // preserve arity + + // if Sentry key appears in URL, don't capture + if (isString(url) && url.indexOf(self._globalKey) === -1) { + this.__raven_xhr = { + method: method, + url: url, + status_code: null + }; + } + + return origOpen.apply(this, arguments); + }; + }, + wrappedBuiltIns + ); + + fill( + xhrproto, + 'send', + function(origSend) { + return function() { + // preserve arity + var xhr = this; + + function onreadystatechangeHandler() { + if (xhr.__raven_xhr && xhr.readyState === 4) { + try { + // touching statusCode in some platforms throws + // an exception + xhr.__raven_xhr.status_code = xhr.status; + } catch (e) { + /* do nothing */ + } + + self.captureBreadcrumb({ + type: 'http', + category: 'xhr', + data: xhr.__raven_xhr + }); + } + } + + var props = ['onload', 'onerror', 'onprogress']; + for (var j = 0; j < props.length; j++) { + wrapProp(props[j], xhr); + } + + if ('onreadystatechange' in xhr && isFunction(xhr.onreadystatechange)) { + fill( + xhr, + 'onreadystatechange', + function(orig) { + return self.wrap(orig, undefined, onreadystatechangeHandler); + } /* intentionally don't track this instrumentation */ + ); + } else { + // if onreadystatechange wasn't actually set by the page on this xhr, we + // are free to set our own and capture the breadcrumb + xhr.onreadystatechange = onreadystatechangeHandler; + } + + return origSend.apply(this, arguments); + }; + }, + wrappedBuiltIns + ); + } + + if (autoBreadcrumbs.xhr && supportsFetch()) { + fill( + _window, + 'fetch', + function(origFetch) { + return function() { + // preserve arity + // Make a copy of the arguments to prevent deoptimization + // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments + var args = new Array(arguments.length); + for (var i = 0; i < args.length; ++i) { + args[i] = arguments[i]; + } + + var fetchInput = args[0]; + var method = 'GET'; + var url; + + if (typeof fetchInput === 'string') { + url = fetchInput; + } else if ('Request' in _window && fetchInput instanceof _window.Request) { + url = fetchInput.url; + if (fetchInput.method) { + method = fetchInput.method; + } + } else { + url = '' + fetchInput; + } + + // if Sentry key appears in URL, don't capture, as it's our own request + if (url.indexOf(self._globalKey) !== -1) { + return origFetch.apply(this, args); + } + + if (args[1] && args[1].method) { + method = args[1].method; + } + + var fetchData = { + method: method, + url: url, + status_code: null + }; + + return origFetch + .apply(this, args) + .then(function(response) { + fetchData.status_code = response.status; + + self.captureBreadcrumb({ + type: 'http', + category: 'fetch', + data: fetchData + }); + + return response; + }) + ['catch'](function(err) { + // if there is an error performing the request + self.captureBreadcrumb({ + type: 'http', + category: 'fetch', + data: fetchData, + level: 'error' + }); + + throw err; + }); + }; + }, + wrappedBuiltIns + ); + } + + // Capture breadcrumbs from any click that is unhandled / bubbled up all the way + // to the document. Do this before we instrument addEventListener. + if (autoBreadcrumbs.dom && this._hasDocument) { + if (_document.addEventListener) { + _document.addEventListener('click', self._breadcrumbEventHandler('click'), false); + _document.addEventListener('keypress', self._keypressEventHandler(), false); + } else if (_document.attachEvent) { + // IE8 Compatibility + _document.attachEvent('onclick', self._breadcrumbEventHandler('click')); + _document.attachEvent('onkeypress', self._keypressEventHandler()); + } + } + + // record navigation (URL) changes + // NOTE: in Chrome App environment, touching history.pushState, *even inside + // a try/catch block*, will cause Chrome to output an error to console.error + // borrowed from: https://github.com/angular/angular.js/pull/13945/files + var chrome = _window.chrome; + var isChromePackagedApp = chrome && chrome.app && chrome.app.runtime; + var hasPushAndReplaceState = + !isChromePackagedApp && + _window.history && + _window.history.pushState && + _window.history.replaceState; + if (autoBreadcrumbs.location && hasPushAndReplaceState) { + // TODO: remove onpopstate handler on uninstall() + var oldOnPopState = _window.onpopstate; + _window.onpopstate = function() { + var currentHref = self._location.href; + self._captureUrlChange(self._lastHref, currentHref); + + if (oldOnPopState) { + return oldOnPopState.apply(this, arguments); + } + }; + + var historyReplacementFunction = function(origHistFunction) { + // note history.pushState.length is 0; intentionally not declaring + // params to preserve 0 arity + return function(/* state, title, url */) { + var url = arguments.length > 2 ? arguments[2] : undefined; + + // url argument is optional + if (url) { + // coerce to string (this is what pushState does) + self._captureUrlChange(self._lastHref, url + ''); + } + + return origHistFunction.apply(this, arguments); + }; + }; + + fill(_window.history, 'pushState', historyReplacementFunction, wrappedBuiltIns); + fill(_window.history, 'replaceState', historyReplacementFunction, wrappedBuiltIns); + } + + if (autoBreadcrumbs.console && 'console' in _window && console.log) { + // console + var consoleMethodCallback = function(msg, data) { + self.captureBreadcrumb({ + message: msg, + level: data.level, + category: 'console' + }); + }; + + each(['debug', 'info', 'warn', 'error', 'log'], function(_, level) { + wrapConsoleMethod(console, level, consoleMethodCallback); + }); + } + }, + + _restoreBuiltIns: function() { + // restore any wrapped builtins + var builtin; + while (this._wrappedBuiltIns.length) { + builtin = this._wrappedBuiltIns.shift(); + + var obj = builtin[0], + name = builtin[1], + orig = builtin[2]; + + obj[name] = orig; + } + }, + + _restoreConsole: function() { + // eslint-disable-next-line guard-for-in + for (var method in this._originalConsoleMethods) { + this._originalConsole[method] = this._originalConsoleMethods[method]; + } + }, + + _drainPlugins: function() { + var self = this; + + // FIX ME TODO + each(this._plugins, function(_, plugin) { + var installer = plugin[0]; + var args = plugin[1]; + installer.apply(self, [self].concat(args)); + }); + }, + + _parseDSN: function(str) { + var m = dsnPattern.exec(str), + dsn = {}, + i = 7; + + try { + while (i--) dsn[dsnKeys[i]] = m[i] || ''; + } catch (e) { + throw new RavenConfigError('Invalid DSN: ' + str); + } + + if (dsn.pass && !this._globalOptions.allowSecretKey) { + throw new RavenConfigError( + 'Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key' + ); + } + + return dsn; + }, + + _getGlobalServer: function(uri) { + // assemble the endpoint from the uri pieces + var globalServer = '//' + uri.host + (uri.port ? ':' + uri.port : ''); + + if (uri.protocol) { + globalServer = uri.protocol + ':' + globalServer; + } + return globalServer; + }, + + _handleOnErrorStackInfo: function() { + // if we are intentionally ignoring errors via onerror, bail out + if (!this._ignoreOnError) { + this._handleStackInfo.apply(this, arguments); + } + }, + + _handleStackInfo: function(stackInfo, options) { + var frames = this._prepareFrames(stackInfo, options); + + this._triggerEvent('handle', { + stackInfo: stackInfo, + options: options + }); + + this._processException( + stackInfo.name, + stackInfo.message, + stackInfo.url, + stackInfo.lineno, + frames, + options + ); + }, + + _prepareFrames: function(stackInfo, options) { + var self = this; + var frames = []; + if (stackInfo.stack && stackInfo.stack.length) { + each(stackInfo.stack, function(i, stack) { + var frame = self._normalizeFrame(stack, stackInfo.url); + if (frame) { + frames.push(frame); + } + }); + + // e.g. frames captured via captureMessage throw + if (options && options.trimHeadFrames) { + for (var j = 0; j < options.trimHeadFrames && j < frames.length; j++) { + frames[j].in_app = false; + } + } + } + frames = frames.slice(0, this._globalOptions.stackTraceLimit); + return frames; + }, + + _normalizeFrame: function(frame, stackInfoUrl) { + // normalize the frames data + var normalized = { + filename: frame.url, + lineno: frame.line, + colno: frame.column, + function: frame.func || '?' + }; + + // Case when we don't have any information about the error + // E.g. throwing a string or raw object, instead of an `Error` in Firefox + // Generating synthetic error doesn't add any value here + // + // We should probably somehow let a user know that they should fix their code + if (!frame.url) { + normalized.filename = stackInfoUrl; // fallback to whole stacks url from onerror handler + } + + normalized.in_app = !// determine if an exception came from outside of our app + // first we check the global includePaths list. + ( + (!!this._globalOptions.includePaths.test && + !this._globalOptions.includePaths.test(normalized.filename)) || + // Now we check for fun, if the function name is Raven or TraceKit + /(Raven|TraceKit)\./.test(normalized['function']) || + // finally, we do a last ditch effort and check for raven.min.js + /raven\.(min\.)?js$/.test(normalized.filename) + ); + + return normalized; + }, + + _processException: function(type, message, fileurl, lineno, frames, options) { + var prefixedMessage = (type ? type + ': ' : '') + (message || ''); + if ( + !!this._globalOptions.ignoreErrors.test && + (this._globalOptions.ignoreErrors.test(message) || + this._globalOptions.ignoreErrors.test(prefixedMessage)) + ) { + return; + } + + var stacktrace; + + if (frames && frames.length) { + fileurl = frames[0].filename || fileurl; + // Sentry expects frames oldest to newest + // and JS sends them as newest to oldest + frames.reverse(); + stacktrace = {frames: frames}; + } else if (fileurl) { + stacktrace = { + frames: [ + { + filename: fileurl, + lineno: lineno, + in_app: true + } + ] + }; + } + + if ( + !!this._globalOptions.ignoreUrls.test && + this._globalOptions.ignoreUrls.test(fileurl) + ) { + return; + } + + if ( + !!this._globalOptions.whitelistUrls.test && + !this._globalOptions.whitelistUrls.test(fileurl) + ) { + return; + } + + var data = objectMerge( + { + // sentry.interfaces.Exception + exception: { + values: [ + { + type: type, + value: message, + stacktrace: stacktrace + } + ] + }, + transaction: fileurl + }, + options + ); + + // Fire away! + this._send(data); + }, + + _trimPacket: function(data) { + // For now, we only want to truncate the two different messages + // but this could/should be expanded to just trim everything + var max = this._globalOptions.maxMessageLength; + if (data.message) { + data.message = truncate(data.message, max); + } + if (data.exception) { + var exception = data.exception.values[0]; + exception.value = truncate(exception.value, max); + } + + var request = data.request; + if (request) { + if (request.url) { + request.url = truncate(request.url, this._globalOptions.maxUrlLength); + } + if (request.Referer) { + request.Referer = truncate(request.Referer, this._globalOptions.maxUrlLength); + } + } + + if (data.breadcrumbs && data.breadcrumbs.values) + this._trimBreadcrumbs(data.breadcrumbs); + + return data; + }, + + /** + * Truncate breadcrumb values (right now just URLs) + */ + _trimBreadcrumbs: function(breadcrumbs) { + // known breadcrumb properties with urls + // TODO: also consider arbitrary prop values that start with (https?)?:// + var urlProps = ['to', 'from', 'url'], + urlProp, + crumb, + data; + + for (var i = 0; i < breadcrumbs.values.length; ++i) { + crumb = breadcrumbs.values[i]; + if ( + !crumb.hasOwnProperty('data') || + !isObject(crumb.data) || + objectFrozen(crumb.data) + ) + continue; + + data = objectMerge({}, crumb.data); + for (var j = 0; j < urlProps.length; ++j) { + urlProp = urlProps[j]; + if (data.hasOwnProperty(urlProp) && data[urlProp]) { + data[urlProp] = truncate(data[urlProp], this._globalOptions.maxUrlLength); + } + } + breadcrumbs.values[i].data = data; + } + }, + + _getHttpData: function() { + if (!this._hasNavigator && !this._hasDocument) return; + var httpData = {}; + + if (this._hasNavigator && _navigator.userAgent) { + httpData.headers = { + 'User-Agent': _navigator.userAgent + }; + } + + // Check in `window` instead of `document`, as we may be in ServiceWorker environment + if (_window.location && _window.location.href) { + httpData.url = _window.location.href; + } + + if (this._hasDocument && _document.referrer) { + if (!httpData.headers) httpData.headers = {}; + httpData.headers.Referer = _document.referrer; + } + + return httpData; + }, + + _resetBackoff: function() { + this._backoffDuration = 0; + this._backoffStart = null; + }, + + _shouldBackoff: function() { + return this._backoffDuration && now() - this._backoffStart < this._backoffDuration; + }, + + /** + * Returns true if the in-process data payload matches the signature + * of the previously-sent data + * + * NOTE: This has to be done at this level because TraceKit can generate + * data from window.onerror WITHOUT an exception object (IE8, IE9, + * other old browsers). This can take the form of an "exception" + * data object with a single frame (derived from the onerror args). + */ + _isRepeatData: function(current) { + var last = this._lastData; + + if ( + !last || + current.message !== last.message || // defined for captureMessage + current.transaction !== last.transaction // defined for captureException/onerror + ) + return false; + + // Stacktrace interface (i.e. from captureMessage) + if (current.stacktrace || last.stacktrace) { + return isSameStacktrace(current.stacktrace, last.stacktrace); + } else if (current.exception || last.exception) { + // Exception interface (i.e. from captureException/onerror) + return isSameException(current.exception, last.exception); + } + + return true; + }, + + _setBackoffState: function(request) { + // If we are already in a backoff state, don't change anything + if (this._shouldBackoff()) { + return; + } + + var status = request.status; + + // 400 - project_id doesn't exist or some other fatal + // 401 - invalid/revoked dsn + // 429 - too many requests + if (!(status === 400 || status === 401 || status === 429)) return; + + var retry; + try { + // If Retry-After is not in Access-Control-Expose-Headers, most + // browsers will throw an exception trying to access it + if (supportsFetch()) { + retry = request.headers.get('Retry-After'); + } else { + retry = request.getResponseHeader('Retry-After'); + } + + // Retry-After is returned in seconds + retry = parseInt(retry, 10) * 1000; + } catch (e) { + /* eslint no-empty:0 */ + } + + this._backoffDuration = retry + ? // If Sentry server returned a Retry-After value, use it + retry + : // Otherwise, double the last backoff duration (starts at 1 sec) + this._backoffDuration * 2 || 1000; + + this._backoffStart = now(); + }, + + _send: function(data) { + var globalOptions = this._globalOptions; + + var baseData = { + project: this._globalProject, + logger: globalOptions.logger, + platform: 'javascript' + }, + httpData = this._getHttpData(); + + if (httpData) { + baseData.request = httpData; + } + + // HACK: delete `trimHeadFrames` to prevent from appearing in outbound payload + if (data.trimHeadFrames) delete data.trimHeadFrames; + + data = objectMerge(baseData, data); + + // Merge in the tags and extra separately since objectMerge doesn't handle a deep merge + data.tags = objectMerge(objectMerge({}, this._globalContext.tags), data.tags); + data.extra = objectMerge(objectMerge({}, this._globalContext.extra), data.extra); + + // Send along our own collected metadata with extra + data.extra['session:duration'] = now() - this._startTime; + + if (this._breadcrumbs && this._breadcrumbs.length > 0) { + // intentionally make shallow copy so that additions + // to breadcrumbs aren't accidentally sent in this request + data.breadcrumbs = { + values: [].slice.call(this._breadcrumbs, 0) + }; + } + + if (this._globalContext.user) { + // sentry.interfaces.User + data.user = this._globalContext.user; + } + + // Include the environment if it's defined in globalOptions + if (globalOptions.environment) data.environment = globalOptions.environment; + + // Include the release if it's defined in globalOptions + if (globalOptions.release) data.release = globalOptions.release; + + // Include server_name if it's defined in globalOptions + if (globalOptions.serverName) data.server_name = globalOptions.serverName; + + data = this._sanitizeData(data); + + // Cleanup empty properties before sending them to the server + Object.keys(data).forEach(function(key) { + if (data[key] == null || data[key] === '' || isEmptyObject(data[key])) { + delete data[key]; + } + }); + + if (isFunction(globalOptions.dataCallback)) { + data = globalOptions.dataCallback(data) || data; + } + + // Why?????????? + if (!data || isEmptyObject(data)) { + return; + } + + // Check if the request should be filtered or not + if ( + isFunction(globalOptions.shouldSendCallback) && + !globalOptions.shouldSendCallback(data) + ) { + return; + } + + // Backoff state: Sentry server previously responded w/ an error (e.g. 429 - too many requests), + // so drop requests until "cool-off" period has elapsed. + if (this._shouldBackoff()) { + this._logDebug('warn', 'Raven dropped error due to backoff: ', data); + return; + } + + if (typeof globalOptions.sampleRate === 'number') { + if (Math.random() < globalOptions.sampleRate) { + this._sendProcessedPayload(data); + } + } else { + this._sendProcessedPayload(data); + } + }, + + _sanitizeData: function(data) { + return sanitize(data, this._globalOptions.sanitizeKeys); + }, + + _getUuid: function() { + return uuid4(); + }, + + _sendProcessedPayload: function(data, callback) { + var self = this; + var globalOptions = this._globalOptions; + + if (!this.isSetup()) return; + + // Try and clean up the packet before sending by truncating long values + data = this._trimPacket(data); + + // ideally duplicate error testing should occur *before* dataCallback/shouldSendCallback, + // but this would require copying an un-truncated copy of the data packet, which can be + // arbitrarily deep (extra_data) -- could be worthwhile? will revisit + if (!this._globalOptions.allowDuplicates && this._isRepeatData(data)) { + this._logDebug('warn', 'Raven dropped repeat event: ', data); + return; + } + + // Send along an event_id if not explicitly passed. + // This event_id can be used to reference the error within Sentry itself. + // Set lastEventId after we know the error should actually be sent + this._lastEventId = data.event_id || (data.event_id = this._getUuid()); + + // Store outbound payload after trim + this._lastData = data; + + this._logDebug('debug', 'Raven about to send:', data); + + var auth = { + sentry_version: '7', + sentry_client: 'raven-js/' + this.VERSION, + sentry_key: this._globalKey + }; + + if (this._globalSecret) { + auth.sentry_secret = this._globalSecret; + } + + var exception = data.exception && data.exception.values[0]; + + // only capture 'sentry' breadcrumb is autoBreadcrumbs is truthy + if ( + this._globalOptions.autoBreadcrumbs && + this._globalOptions.autoBreadcrumbs.sentry + ) { + this.captureBreadcrumb({ + category: 'sentry', + message: exception + ? (exception.type ? exception.type + ': ' : '') + exception.value + : data.message, + event_id: data.event_id, + level: data.level || 'error' // presume error unless specified + }); + } + + var url = this._globalEndpoint; + (globalOptions.transport || this._makeRequest).call(this, { + url: url, + auth: auth, + data: data, + options: globalOptions, + onSuccess: function success() { + self._resetBackoff(); + + self._triggerEvent('success', { + data: data, + src: url + }); + callback && callback(); + }, + onError: function failure(error) { + self._logDebug('error', 'Raven transport failed to send: ', error); + + if (error.request) { + self._setBackoffState(error.request); + } + + self._triggerEvent('failure', { + data: data, + src: url + }); + error = error || new Error('Raven send failed (no additional details provided)'); + callback && callback(error); + } + }); + }, + + _makeRequest: function(opts) { + // Auth is intentionally sent as part of query string (NOT as custom HTTP header) to avoid preflight CORS requests + var url = opts.url + '?' + urlencode(opts.auth); + + var evaluatedHeaders = null; + var evaluatedFetchParameters = {}; + + if (opts.options.headers) { + evaluatedHeaders = this._evaluateHash(opts.options.headers); + } + + if (opts.options.fetchParameters) { + evaluatedFetchParameters = this._evaluateHash(opts.options.fetchParameters); + } + + if (supportsFetch()) { + evaluatedFetchParameters.body = stringify(opts.data); + + var defaultFetchOptions = objectMerge({}, this._fetchDefaults); + var fetchOptions = objectMerge(defaultFetchOptions, evaluatedFetchParameters); + + if (evaluatedHeaders) { + fetchOptions.headers = evaluatedHeaders; + } + + return _window + .fetch(url, fetchOptions) + .then(function(response) { + if (response.ok) { + opts.onSuccess && opts.onSuccess(); + } else { + var error = new Error('Sentry error code: ' + response.status); + // It's called request only to keep compatibility with XHR interface + // and not add more redundant checks in setBackoffState method + error.request = response; + opts.onError && opts.onError(error); + } + }) + ['catch'](function() { + opts.onError && + opts.onError(new Error('Sentry error code: network unavailable')); + }); + } + + var request = _window.XMLHttpRequest && new _window.XMLHttpRequest(); + if (!request) return; + + // if browser doesn't support CORS (e.g. IE7), we are out of luck + var hasCORS = 'withCredentials' in request || typeof XDomainRequest !== 'undefined'; + + if (!hasCORS) return; + + if ('withCredentials' in request) { + request.onreadystatechange = function() { + if (request.readyState !== 4) { + return; + } else if (request.status === 200) { + opts.onSuccess && opts.onSuccess(); + } else if (opts.onError) { + var err = new Error('Sentry error code: ' + request.status); + err.request = request; + opts.onError(err); + } + }; + } else { + request = new XDomainRequest(); + // xdomainrequest cannot go http -> https (or vice versa), + // so always use protocol relative + url = url.replace(/^https?:/, ''); + + // onreadystatechange not supported by XDomainRequest + if (opts.onSuccess) { + request.onload = opts.onSuccess; + } + if (opts.onError) { + request.onerror = function() { + var err = new Error('Sentry error code: XDomainRequest'); + err.request = request; + opts.onError(err); + }; + } + } + + request.open('POST', url); + + if (evaluatedHeaders) { + each(evaluatedHeaders, function(key, value) { + request.setRequestHeader(key, value); + }); + } + + request.send(stringify(opts.data)); + }, + + _evaluateHash: function(hash) { + var evaluated = {}; + + for (var key in hash) { + if (hash.hasOwnProperty(key)) { + var value = hash[key]; + evaluated[key] = typeof value === 'function' ? value() : value; + } + } + + return evaluated; + }, + + _logDebug: function(level) { + // We allow `Raven.debug` and `Raven.config(DSN, { debug: true })` to not make backward incompatible API change + if ( + this._originalConsoleMethods[level] && + (this.debug || this._globalOptions.debug) + ) { + // In IE<10 console methods do not have their own 'apply' method + Function.prototype.apply.call( + this._originalConsoleMethods[level], + this._originalConsole, + [].slice.call(arguments, 1) + ); + } + }, + + _mergeContext: function(key, context) { + if (isUndefined(context)) { + delete this._globalContext[key]; + } else { + this._globalContext[key] = objectMerge(this._globalContext[key] || {}, context); + } + } +}; + +// Deprecations +Raven.prototype.setUser = Raven.prototype.setUserContext; +Raven.prototype.setReleaseContext = Raven.prototype.setRelease; + +module.exports = Raven; + +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"10":10,"11":11,"4":4,"5":5,"8":8,"9":9}],7:[function(_dereq_,module,exports){ +(function (global){ +/** + * Enforces a single instance of the Raven client, and the + * main entry point for Raven. If you are a consumer of the + * Raven library, you SHOULD load this file (vs raven.js). + **/ + +var RavenConstructor = _dereq_(6); + +// This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) +var _window = + typeof window !== 'undefined' + ? window + : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; +var _Raven = _window.Raven; + +var Raven = new RavenConstructor(); + +/* + * Allow multiple versions of Raven to be installed. + * Strip Raven from the global context and returns the instance. + * + * @return {Raven} + */ +Raven.noConflict = function() { + _window.Raven = _Raven; + return Raven; +}; + +Raven.afterLoad(); + +module.exports = Raven; + +/** + * DISCLAIMER: + * + * Expose `Client` constructor for cases where user want to track multiple "sub-applications" in one larger app. + * It's not meant to be used by a wide audience, so pleaaase make sure that you know what you're doing before using it. + * Accidentally calling `install` multiple times, may result in an unexpected behavior that's very hard to debug. + * + * It's called `Client' to be in-line with Raven Node implementation. + * + * HOWTO: + * + * import Raven from 'raven-js'; + * + * const someAppReporter = new Raven.Client(); + * const someOtherAppReporter = new Raven.Client(); + * + * someAppReporter.config('__DSN__', { + * ...config goes here + * }); + * + * someOtherAppReporter.config('__OTHER_DSN__', { + * ...config goes here + * }); + * + * someAppReporter.captureMessage(...); + * someAppReporter.captureException(...); + * someAppReporter.captureBreadcrumb(...); + * + * someOtherAppReporter.captureMessage(...); + * someOtherAppReporter.captureException(...); + * someOtherAppReporter.captureBreadcrumb(...); + * + * It should "just work". + */ +module.exports.Client = RavenConstructor; + +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"6":6}],8:[function(_dereq_,module,exports){ +(function (global){ +var stringify = _dereq_(10); + +var _window = + typeof window !== 'undefined' + ? window + : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; + +function isObject(what) { + return typeof what === 'object' && what !== null; +} + +// Yanked from https://git.io/vS8DV re-used under CC0 +// with some tiny modifications +function isError(value) { + switch (Object.prototype.toString.call(value)) { + case '[object Error]': + return true; + case '[object Exception]': + return true; + case '[object DOMException]': + return true; + default: + return value instanceof Error; + } +} + +function isErrorEvent(value) { + return Object.prototype.toString.call(value) === '[object ErrorEvent]'; +} + +function isDOMError(value) { + return Object.prototype.toString.call(value) === '[object DOMError]'; +} + +function isDOMException(value) { + return Object.prototype.toString.call(value) === '[object DOMException]'; +} + +function isUndefined(what) { + return what === void 0; +} + +function isFunction(what) { + return typeof what === 'function'; +} + +function isPlainObject(what) { + return Object.prototype.toString.call(what) === '[object Object]'; +} + +function isString(what) { + return Object.prototype.toString.call(what) === '[object String]'; +} + +function isArray(what) { + return Object.prototype.toString.call(what) === '[object Array]'; +} + +function isEmptyObject(what) { + if (!isPlainObject(what)) return false; + + for (var _ in what) { + if (what.hasOwnProperty(_)) { + return false; + } + } + return true; +} + +function supportsErrorEvent() { + try { + new ErrorEvent(''); // eslint-disable-line no-new + return true; + } catch (e) { + return false; + } +} + +function supportsDOMError() { + try { + new DOMError(''); // eslint-disable-line no-new + return true; + } catch (e) { + return false; + } +} + +function supportsDOMException() { + try { + new DOMException(''); // eslint-disable-line no-new + return true; + } catch (e) { + return false; + } +} + +function supportsFetch() { + if (!('fetch' in _window)) return false; + + try { + new Headers(); // eslint-disable-line no-new + new Request(''); // eslint-disable-line no-new + new Response(); // eslint-disable-line no-new + return true; + } catch (e) { + return false; + } +} + +// Despite all stars in the sky saying that Edge supports old draft syntax, aka 'never', 'always', 'origin' and 'default +// https://caniuse.com/#feat=referrer-policy +// It doesn't. And it throw exception instead of ignoring this parameter... +// REF: https://github.com/getsentry/raven-js/issues/1233 +function supportsReferrerPolicy() { + if (!supportsFetch()) return false; + + try { + // eslint-disable-next-line no-new + new Request('pickleRick', { + referrerPolicy: 'origin' + }); + return true; + } catch (e) { + return false; + } +} + +function supportsPromiseRejectionEvent() { + return typeof PromiseRejectionEvent === 'function'; +} + +function wrappedCallback(callback) { + function dataCallback(data, original) { + var normalizedData = callback(data) || data; + if (original) { + return original(normalizedData) || normalizedData; + } + return normalizedData; + } + + return dataCallback; +} + +function each(obj, callback) { + var i, j; + + if (isUndefined(obj.length)) { + for (i in obj) { + if (hasKey(obj, i)) { + callback.call(null, i, obj[i]); + } + } + } else { + j = obj.length; + if (j) { + for (i = 0; i < j; i++) { + callback.call(null, i, obj[i]); + } + } + } +} + +function objectMerge(obj1, obj2) { + if (!obj2) { + return obj1; + } + each(obj2, function(key, value) { + obj1[key] = value; + }); + return obj1; +} + +/** + * This function is only used for react-native. + * react-native freezes object that have already been sent over the + * js bridge. We need this function in order to check if the object is frozen. + * So it's ok that objectFrozen returns false if Object.isFrozen is not + * supported because it's not relevant for other "platforms". See related issue: + * https://github.com/getsentry/react-native-sentry/issues/57 + */ +function objectFrozen(obj) { + if (!Object.isFrozen) { + return false; + } + return Object.isFrozen(obj); +} + +function truncate(str, max) { + if (typeof max !== 'number') { + throw new Error('2nd argument to `truncate` function should be a number'); + } + if (typeof str !== 'string' || max === 0) { + return str; + } + return str.length <= max ? str : str.substr(0, max) + '\u2026'; +} + +/** + * hasKey, a better form of hasOwnProperty + * Example: hasKey(MainHostObject, property) === true/false + * + * @param {Object} host object to check property + * @param {string} key to check + */ +function hasKey(object, key) { + return Object.prototype.hasOwnProperty.call(object, key); +} + +function joinRegExp(patterns) { + // Combine an array of regular expressions and strings into one large regexp + // Be mad. + var sources = [], + i = 0, + len = patterns.length, + pattern; + + for (; i < len; i++) { + pattern = patterns[i]; + if (isString(pattern)) { + // If it's a string, we need to escape it + // Taken from: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions + sources.push(pattern.replace(/([.*+?^=!:${}()|\[\]\/\\])/g, '\\$1')); + } else if (pattern && pattern.source) { + // If it's a regexp already, we want to extract the source + sources.push(pattern.source); + } + // Intentionally skip other cases + } + return new RegExp(sources.join('|'), 'i'); +} + +function urlencode(o) { + var pairs = []; + each(o, function(key, value) { + pairs.push(encodeURIComponent(key) + '=' + encodeURIComponent(value)); + }); + return pairs.join('&'); +} + +// borrowed from https://tools.ietf.org/html/rfc3986#appendix-B +// intentionally using regex and not href parsing trick because React Native and other +// environments where DOM might not be available +function parseUrl(url) { + if (typeof url !== 'string') return {}; + var match = url.match(/^(([^:\/?#]+):)?(\/\/([^\/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?$/); + + // coerce to undefined values to empty string so we don't get 'undefined' + var query = match[6] || ''; + var fragment = match[8] || ''; + return { + protocol: match[2], + host: match[4], + path: match[5], + relative: match[5] + query + fragment // everything minus origin + }; +} +function uuid4() { + var crypto = _window.crypto || _window.msCrypto; + + if (!isUndefined(crypto) && crypto.getRandomValues) { + // Use window.crypto API if available + // eslint-disable-next-line no-undef + var arr = new Uint16Array(8); + crypto.getRandomValues(arr); + + // set 4 in byte 7 + arr[3] = (arr[3] & 0xfff) | 0x4000; + // set 2 most significant bits of byte 9 to '10' + arr[4] = (arr[4] & 0x3fff) | 0x8000; + + var pad = function(num) { + var v = num.toString(16); + while (v.length < 4) { + v = '0' + v; + } + return v; + }; + + return ( + pad(arr[0]) + + pad(arr[1]) + + pad(arr[2]) + + pad(arr[3]) + + pad(arr[4]) + + pad(arr[5]) + + pad(arr[6]) + + pad(arr[7]) + ); + } else { + // http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/2117523#2117523 + return 'xxxxxxxxxxxx4xxxyxxxxxxxxxxxxxxx'.replace(/[xy]/g, function(c) { + var r = (Math.random() * 16) | 0, + v = c === 'x' ? r : (r & 0x3) | 0x8; + return v.toString(16); + }); + } +} + +/** + * Given a child DOM element, returns a query-selector statement describing that + * and its ancestors + * e.g. [HTMLElement] => body > div > input#foo.btn[name=baz] + * @param elem + * @returns {string} + */ +function htmlTreeAsString(elem) { + /* eslint no-extra-parens:0*/ + var MAX_TRAVERSE_HEIGHT = 5, + MAX_OUTPUT_LEN = 80, + out = [], + height = 0, + len = 0, + separator = ' > ', + sepLength = separator.length, + nextStr; + + while (elem && height++ < MAX_TRAVERSE_HEIGHT) { + nextStr = htmlElementAsString(elem); + // bail out if + // - nextStr is the 'html' element + // - the length of the string that would be created exceeds MAX_OUTPUT_LEN + // (ignore this limit if we are on the first iteration) + if ( + nextStr === 'html' || + (height > 1 && len + out.length * sepLength + nextStr.length >= MAX_OUTPUT_LEN) + ) { + break; + } + + out.push(nextStr); + + len += nextStr.length; + elem = elem.parentNode; + } + + return out.reverse().join(separator); +} + +/** + * Returns a simple, query-selector representation of a DOM element + * e.g. [HTMLElement] => input#foo.btn[name=baz] + * @param HTMLElement + * @returns {string} + */ +function htmlElementAsString(elem) { + var out = [], + className, + classes, + key, + attr, + i; + + if (!elem || !elem.tagName) { + return ''; + } + + out.push(elem.tagName.toLowerCase()); + if (elem.id) { + out.push('#' + elem.id); + } + + className = elem.className; + if (className && isString(className)) { + classes = className.split(/\s+/); + for (i = 0; i < classes.length; i++) { + out.push('.' + classes[i]); + } + } + var attrWhitelist = ['type', 'name', 'title', 'alt']; + for (i = 0; i < attrWhitelist.length; i++) { + key = attrWhitelist[i]; + attr = elem.getAttribute(key); + if (attr) { + out.push('[' + key + '="' + attr + '"]'); + } + } + return out.join(''); +} + +/** + * Returns true if either a OR b is truthy, but not both + */ +function isOnlyOneTruthy(a, b) { + return !!(!!a ^ !!b); +} + +/** + * Returns true if both parameters are undefined + */ +function isBothUndefined(a, b) { + return isUndefined(a) && isUndefined(b); +} + +/** + * Returns true if the two input exception interfaces have the same content + */ +function isSameException(ex1, ex2) { + if (isOnlyOneTruthy(ex1, ex2)) return false; + + ex1 = ex1.values[0]; + ex2 = ex2.values[0]; + + if (ex1.type !== ex2.type || ex1.value !== ex2.value) return false; + + // in case both stacktraces are undefined, we can't decide so default to false + if (isBothUndefined(ex1.stacktrace, ex2.stacktrace)) return false; + + return isSameStacktrace(ex1.stacktrace, ex2.stacktrace); +} + +/** + * Returns true if the two input stack trace interfaces have the same content + */ +function isSameStacktrace(stack1, stack2) { + if (isOnlyOneTruthy(stack1, stack2)) return false; + + var frames1 = stack1.frames; + var frames2 = stack2.frames; + + // Exit early if frame count differs + if (frames1.length !== frames2.length) return false; + + // Iterate through every frame; bail out if anything differs + var a, b; + for (var i = 0; i < frames1.length; i++) { + a = frames1[i]; + b = frames2[i]; + if ( + a.filename !== b.filename || + a.lineno !== b.lineno || + a.colno !== b.colno || + a['function'] !== b['function'] + ) + return false; + } + return true; +} + +/** + * Polyfill a method + * @param obj object e.g. `document` + * @param name method name present on object e.g. `addEventListener` + * @param replacement replacement function + * @param track {optional} record instrumentation to an array + */ +function fill(obj, name, replacement, track) { + if (obj == null) return; + var orig = obj[name]; + obj[name] = replacement(orig); + obj[name].__raven__ = true; + obj[name].__orig__ = orig; + if (track) { + track.push([obj, name, orig]); + } +} + +/** + * Join values in array + * @param input array of values to be joined together + * @param delimiter string to be placed in-between values + * @returns {string} + */ +function safeJoin(input, delimiter) { + if (!isArray(input)) return ''; + + var output = []; + + for (var i = 0; i < input.length; i++) { + try { + output.push(String(input[i])); + } catch (e) { + output.push('[value cannot be serialized]'); + } + } + + return output.join(delimiter); +} + +// Default Node.js REPL depth +var MAX_SERIALIZE_EXCEPTION_DEPTH = 3; +// 50kB, as 100kB is max payload size, so half sounds reasonable +var MAX_SERIALIZE_EXCEPTION_SIZE = 50 * 1024; +var MAX_SERIALIZE_KEYS_LENGTH = 40; + +function utf8Length(value) { + return ~-encodeURI(value).split(/%..|./).length; +} + +function jsonSize(value) { + return utf8Length(JSON.stringify(value)); +} + +function serializeValue(value) { + if (typeof value === 'string') { + var maxLength = 40; + return truncate(value, maxLength); + } else if ( + typeof value === 'number' || + typeof value === 'boolean' || + typeof value === 'undefined' + ) { + return value; + } + + var type = Object.prototype.toString.call(value); + + // Node.js REPL notation + if (type === '[object Object]') return '[Object]'; + if (type === '[object Array]') return '[Array]'; + if (type === '[object Function]') + return value.name ? '[Function: ' + value.name + ']' : '[Function]'; + + return value; +} + +function serializeObject(value, depth) { + if (depth === 0) return serializeValue(value); + + if (isPlainObject(value)) { + return Object.keys(value).reduce(function(acc, key) { + acc[key] = serializeObject(value[key], depth - 1); + return acc; + }, {}); + } else if (Array.isArray(value)) { + return value.map(function(val) { + return serializeObject(val, depth - 1); + }); + } + + return serializeValue(value); +} + +function serializeException(ex, depth, maxSize) { + if (!isPlainObject(ex)) return ex; + + depth = typeof depth !== 'number' ? MAX_SERIALIZE_EXCEPTION_DEPTH : depth; + maxSize = typeof depth !== 'number' ? MAX_SERIALIZE_EXCEPTION_SIZE : maxSize; + + var serialized = serializeObject(ex, depth); + + if (jsonSize(stringify(serialized)) > maxSize) { + return serializeException(ex, depth - 1); + } + + return serialized; +} + +function serializeKeysForMessage(keys, maxLength) { + if (typeof keys === 'number' || typeof keys === 'string') return keys.toString(); + if (!Array.isArray(keys)) return ''; + + keys = keys.filter(function(key) { + return typeof key === 'string'; + }); + if (keys.length === 0) return '[object has no keys]'; + + maxLength = typeof maxLength !== 'number' ? MAX_SERIALIZE_KEYS_LENGTH : maxLength; + if (keys[0].length >= maxLength) return keys[0]; + + for (var usedKeys = keys.length; usedKeys > 0; usedKeys--) { + var serialized = keys.slice(0, usedKeys).join(', '); + if (serialized.length > maxLength) continue; + if (usedKeys === keys.length) return serialized; + return serialized + '\u2026'; + } + + return ''; +} + +function sanitize(input, sanitizeKeys) { + if (!isArray(sanitizeKeys) || (isArray(sanitizeKeys) && sanitizeKeys.length === 0)) + return input; + + var sanitizeRegExp = joinRegExp(sanitizeKeys); + var sanitizeMask = '********'; + var safeInput; + + try { + safeInput = JSON.parse(stringify(input)); + } catch (o_O) { + return input; + } + + function sanitizeWorker(workerInput) { + if (isArray(workerInput)) { + return workerInput.map(function(val) { + return sanitizeWorker(val); + }); + } + + if (isPlainObject(workerInput)) { + return Object.keys(workerInput).reduce(function(acc, k) { + if (sanitizeRegExp.test(k)) { + acc[k] = sanitizeMask; + } else { + acc[k] = sanitizeWorker(workerInput[k]); + } + return acc; + }, {}); + } + + return workerInput; + } + + return sanitizeWorker(safeInput); +} + +module.exports = { + isObject: isObject, + isError: isError, + isErrorEvent: isErrorEvent, + isDOMError: isDOMError, + isDOMException: isDOMException, + isUndefined: isUndefined, + isFunction: isFunction, + isPlainObject: isPlainObject, + isString: isString, + isArray: isArray, + isEmptyObject: isEmptyObject, + supportsErrorEvent: supportsErrorEvent, + supportsDOMError: supportsDOMError, + supportsDOMException: supportsDOMException, + supportsFetch: supportsFetch, + supportsReferrerPolicy: supportsReferrerPolicy, + supportsPromiseRejectionEvent: supportsPromiseRejectionEvent, + wrappedCallback: wrappedCallback, + each: each, + objectMerge: objectMerge, + truncate: truncate, + objectFrozen: objectFrozen, + hasKey: hasKey, + joinRegExp: joinRegExp, + urlencode: urlencode, + uuid4: uuid4, + htmlTreeAsString: htmlTreeAsString, + htmlElementAsString: htmlElementAsString, + isSameException: isSameException, + isSameStacktrace: isSameStacktrace, + parseUrl: parseUrl, + fill: fill, + safeJoin: safeJoin, + serializeException: serializeException, + serializeKeysForMessage: serializeKeysForMessage, + sanitize: sanitize +}; + +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"10":10}],9:[function(_dereq_,module,exports){ +(function (global){ +var utils = _dereq_(8); + +/* + TraceKit - Cross brower stack traces + + This was originally forked from github.com/occ/TraceKit, but has since been + largely re-written and is now maintained as part of raven-js. Tests for + this are in test/vendor. + + MIT license +*/ + +var TraceKit = { + collectWindowErrors: true, + debug: false +}; + +// This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) +var _window = + typeof window !== 'undefined' + ? window + : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; + +// global reference to slice +var _slice = [].slice; +var UNKNOWN_FUNCTION = '?'; + +// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error#Error_types +var ERROR_TYPES_RE = /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/; + +function getLocationHref() { + if (typeof document === 'undefined' || document.location == null) return ''; + return document.location.href; +} + +function getLocationOrigin() { + if (typeof document === 'undefined' || document.location == null) return ''; + + // Oh dear IE10... + if (!document.location.origin) { + document.location.origin = + document.location.protocol + + '//' + + document.location.hostname + + (document.location.port ? ':' + document.location.port : ''); + } + + return document.location.origin; +} + +/** + * TraceKit.report: cross-browser processing of unhandled exceptions + * + * Syntax: + * TraceKit.report.subscribe(function(stackInfo) { ... }) + * TraceKit.report.unsubscribe(function(stackInfo) { ... }) + * TraceKit.report(exception) + * try { ...code... } catch(ex) { TraceKit.report(ex); } + * + * Supports: + * - Firefox: full stack trace with line numbers, plus column number + * on top frame; column number is not guaranteed + * - Opera: full stack trace with line and column numbers + * - Chrome: full stack trace with line and column numbers + * - Safari: line and column number for the top frame only; some frames + * may be missing, and column number is not guaranteed + * - IE: line and column number for the top frame only; some frames + * may be missing, and column number is not guaranteed + * + * In theory, TraceKit should work on all of the following versions: + * - IE5.5+ (only 8.0 tested) + * - Firefox 0.9+ (only 3.5+ tested) + * - Opera 7+ (only 10.50 tested; versions 9 and earlier may require + * Exceptions Have Stacktrace to be enabled in opera:config) + * - Safari 3+ (only 4+ tested) + * - Chrome 1+ (only 5+ tested) + * - Konqueror 3.5+ (untested) + * + * Requires TraceKit.computeStackTrace. + * + * Tries to catch all unhandled exceptions and report them to the + * subscribed handlers. Please note that TraceKit.report will rethrow the + * exception. This is REQUIRED in order to get a useful stack trace in IE. + * If the exception does not reach the top of the browser, you will only + * get a stack trace from the point where TraceKit.report was called. + * + * Handlers receive a stackInfo object as described in the + * TraceKit.computeStackTrace docs. + */ +TraceKit.report = (function reportModuleWrapper() { + var handlers = [], + lastArgs = null, + lastException = null, + lastExceptionStack = null; + + /** + * Add a crash handler. + * @param {Function} handler + */ + function subscribe(handler) { + installGlobalHandler(); + handlers.push(handler); + } + + /** + * Remove a crash handler. + * @param {Function} handler + */ + function unsubscribe(handler) { + for (var i = handlers.length - 1; i >= 0; --i) { + if (handlers[i] === handler) { + handlers.splice(i, 1); + } + } + } + + /** + * Remove all crash handlers. + */ + function unsubscribeAll() { + uninstallGlobalHandler(); + handlers = []; + } + + /** + * Dispatch stack information to all handlers. + * @param {Object.} stack + */ + function notifyHandlers(stack, isWindowError) { + var exception = null; + if (isWindowError && !TraceKit.collectWindowErrors) { + return; + } + for (var i in handlers) { + if (handlers.hasOwnProperty(i)) { + try { + handlers[i].apply(null, [stack].concat(_slice.call(arguments, 2))); + } catch (inner) { + exception = inner; + } + } + } + + if (exception) { + throw exception; + } + } + + var _oldOnerrorHandler, _onErrorHandlerInstalled; + + /** + * Ensures all global unhandled exceptions are recorded. + * Supported by Gecko and IE. + * @param {string} msg Error message. + * @param {string} url URL of script that generated the exception. + * @param {(number|string)} lineNo The line number at which the error + * occurred. + * @param {?(number|string)} colNo The column number at which the error + * occurred. + * @param {?Error} ex The actual Error object. + */ + function traceKitWindowOnError(msg, url, lineNo, colNo, ex) { + var stack = null; + // If 'ex' is ErrorEvent, get real Error from inside + var exception = utils.isErrorEvent(ex) ? ex.error : ex; + // If 'msg' is ErrorEvent, get real message from inside + var message = utils.isErrorEvent(msg) ? msg.message : msg; + + if (lastExceptionStack) { + TraceKit.computeStackTrace.augmentStackTraceWithInitialElement( + lastExceptionStack, + url, + lineNo, + message + ); + processLastException(); + } else if (exception && utils.isError(exception)) { + // non-string `exception` arg; attempt to extract stack trace + + // New chrome and blink send along a real error object + // Let's just report that like a normal error. + // See: https://mikewest.org/2013/08/debugging-runtime-errors-with-window-onerror + stack = TraceKit.computeStackTrace(exception); + notifyHandlers(stack, true); + } else { + var location = { + url: url, + line: lineNo, + column: colNo + }; + + var name = undefined; + var groups; + + if ({}.toString.call(message) === '[object String]') { + var groups = message.match(ERROR_TYPES_RE); + if (groups) { + name = groups[1]; + message = groups[2]; + } + } + + location.func = UNKNOWN_FUNCTION; + + stack = { + name: name, + message: message, + url: getLocationHref(), + stack: [location] + }; + notifyHandlers(stack, true); + } + + if (_oldOnerrorHandler) { + return _oldOnerrorHandler.apply(this, arguments); + } + + return false; + } + + function installGlobalHandler() { + if (_onErrorHandlerInstalled) { + return; + } + _oldOnerrorHandler = _window.onerror; + _window.onerror = traceKitWindowOnError; + _onErrorHandlerInstalled = true; + } + + function uninstallGlobalHandler() { + if (!_onErrorHandlerInstalled) { + return; + } + _window.onerror = _oldOnerrorHandler; + _onErrorHandlerInstalled = false; + _oldOnerrorHandler = undefined; + } + + function processLastException() { + var _lastExceptionStack = lastExceptionStack, + _lastArgs = lastArgs; + lastArgs = null; + lastExceptionStack = null; + lastException = null; + notifyHandlers.apply(null, [_lastExceptionStack, false].concat(_lastArgs)); + } + + /** + * Reports an unhandled Error to TraceKit. + * @param {Error} ex + * @param {?boolean} rethrow If false, do not re-throw the exception. + * Only used for window.onerror to not cause an infinite loop of + * rethrowing. + */ + function report(ex, rethrow) { + var args = _slice.call(arguments, 1); + if (lastExceptionStack) { + if (lastException === ex) { + return; // already caught by an inner catch block, ignore + } else { + processLastException(); + } + } + + var stack = TraceKit.computeStackTrace(ex); + lastExceptionStack = stack; + lastException = ex; + lastArgs = args; + + // If the stack trace is incomplete, wait for 2 seconds for + // slow slow IE to see if onerror occurs or not before reporting + // this exception; otherwise, we will end up with an incomplete + // stack trace + setTimeout(function() { + if (lastException === ex) { + processLastException(); + } + }, stack.incomplete ? 2000 : 0); + + if (rethrow !== false) { + throw ex; // re-throw to propagate to the top level (and cause window.onerror) + } + } + + report.subscribe = subscribe; + report.unsubscribe = unsubscribe; + report.uninstall = unsubscribeAll; + return report; +})(); + +/** + * TraceKit.computeStackTrace: cross-browser stack traces in JavaScript + * + * Syntax: + * s = TraceKit.computeStackTrace(exception) // consider using TraceKit.report instead (see below) + * Returns: + * s.name - exception name + * s.message - exception message + * s.stack[i].url - JavaScript or HTML file URL + * s.stack[i].func - function name, or empty for anonymous functions (if guessing did not work) + * s.stack[i].args - arguments passed to the function, if known + * s.stack[i].line - line number, if known + * s.stack[i].column - column number, if known + * + * Supports: + * - Firefox: full stack trace with line numbers and unreliable column + * number on top frame + * - Opera 10: full stack trace with line and column numbers + * - Opera 9-: full stack trace with line numbers + * - Chrome: full stack trace with line and column numbers + * - Safari: line and column number for the topmost stacktrace element + * only + * - IE: no line numbers whatsoever + * + * Tries to guess names of anonymous functions by looking for assignments + * in the source code. In IE and Safari, we have to guess source file names + * by searching for function bodies inside all page scripts. This will not + * work for scripts that are loaded cross-domain. + * Here be dragons: some function names may be guessed incorrectly, and + * duplicate functions may be mismatched. + * + * TraceKit.computeStackTrace should only be used for tracing purposes. + * Logging of unhandled exceptions should be done with TraceKit.report, + * which builds on top of TraceKit.computeStackTrace and provides better + * IE support by utilizing the window.onerror event to retrieve information + * about the top of the stack. + * + * Note: In IE and Safari, no stack trace is recorded on the Error object, + * so computeStackTrace instead walks its *own* chain of callers. + * This means that: + * * in Safari, some methods may be missing from the stack trace; + * * in IE, the topmost function in the stack trace will always be the + * caller of computeStackTrace. + * + * This is okay for tracing (because you are likely to be calling + * computeStackTrace from the function you want to be the topmost element + * of the stack trace anyway), but not okay for logging unhandled + * exceptions (because your catch block will likely be far away from the + * inner function that actually caused the exception). + * + */ +TraceKit.computeStackTrace = (function computeStackTraceWrapper() { + // Contents of Exception in various browsers. + // + // SAFARI: + // ex.message = Can't find variable: qq + // ex.line = 59 + // ex.sourceId = 580238192 + // ex.sourceURL = http://... + // ex.expressionBeginOffset = 96 + // ex.expressionCaretOffset = 98 + // ex.expressionEndOffset = 98 + // ex.name = ReferenceError + // + // FIREFOX: + // ex.message = qq is not defined + // ex.fileName = http://... + // ex.lineNumber = 59 + // ex.columnNumber = 69 + // ex.stack = ...stack trace... (see the example below) + // ex.name = ReferenceError + // + // CHROME: + // ex.message = qq is not defined + // ex.name = ReferenceError + // ex.type = not_defined + // ex.arguments = ['aa'] + // ex.stack = ...stack trace... + // + // INTERNET EXPLORER: + // ex.message = ... + // ex.name = ReferenceError + // + // OPERA: + // ex.message = ...message... (see the example below) + // ex.name = ReferenceError + // ex.opera#sourceloc = 11 (pretty much useless, duplicates the info in ex.message) + // ex.stacktrace = n/a; see 'opera:config#UserPrefs|Exceptions Have Stacktrace' + + /** + * Computes stack trace information from the stack property. + * Chrome and Gecko use this property. + * @param {Error} ex + * @return {?Object.} Stack trace information. + */ + function computeStackTraceFromStackProp(ex) { + if (typeof ex.stack === 'undefined' || !ex.stack) return; + + var chrome = /^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i; + var winjs = /^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i; + // NOTE: blob urls are now supposed to always have an origin, therefore it's format + // which is `blob:http://url/path/with-some-uuid`, is matched by `blob.*?:\/` as well + var gecko = /^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i; + // Used to additionally parse URL/line/column from eval frames + var geckoEval = /(\S+) line (\d+)(?: > eval line \d+)* > eval/i; + var chromeEval = /\((\S*)(?::(\d+))(?::(\d+))\)/; + var lines = ex.stack.split('\n'); + var stack = []; + var submatch; + var parts; + var element; + var reference = /^(.*) is undefined$/.exec(ex.message); + + for (var i = 0, j = lines.length; i < j; ++i) { + if ((parts = chrome.exec(lines[i]))) { + var isNative = parts[2] && parts[2].indexOf('native') === 0; // start of line + var isEval = parts[2] && parts[2].indexOf('eval') === 0; // start of line + if (isEval && (submatch = chromeEval.exec(parts[2]))) { + // throw out eval line/column and use top-most line/column number + parts[2] = submatch[1]; // url + parts[3] = submatch[2]; // line + parts[4] = submatch[3]; // column + } + element = { + url: !isNative ? parts[2] : null, + func: parts[1] || UNKNOWN_FUNCTION, + args: isNative ? [parts[2]] : [], + line: parts[3] ? +parts[3] : null, + column: parts[4] ? +parts[4] : null + }; + } else if ((parts = winjs.exec(lines[i]))) { + element = { + url: parts[2], + func: parts[1] || UNKNOWN_FUNCTION, + args: [], + line: +parts[3], + column: parts[4] ? +parts[4] : null + }; + } else if ((parts = gecko.exec(lines[i]))) { + var isEval = parts[3] && parts[3].indexOf(' > eval') > -1; + if (isEval && (submatch = geckoEval.exec(parts[3]))) { + // throw out eval line/column and use top-most line number + parts[3] = submatch[1]; + parts[4] = submatch[2]; + parts[5] = null; // no column when eval + } else if (i === 0 && !parts[5] && typeof ex.columnNumber !== 'undefined') { + // FireFox uses this awesome columnNumber property for its top frame + // Also note, Firefox's column number is 0-based and everything else expects 1-based, + // so adding 1 + // NOTE: this hack doesn't work if top-most frame is eval + stack[0].column = ex.columnNumber + 1; + } + element = { + url: parts[3], + func: parts[1] || UNKNOWN_FUNCTION, + args: parts[2] ? parts[2].split(',') : [], + line: parts[4] ? +parts[4] : null, + column: parts[5] ? +parts[5] : null + }; + } else { + continue; + } + + if (!element.func && element.line) { + element.func = UNKNOWN_FUNCTION; + } + + if (element.url && element.url.substr(0, 5) === 'blob:') { + // Special case for handling JavaScript loaded into a blob. + // We use a synchronous AJAX request here as a blob is already in + // memory - it's not making a network request. This will generate a warning + // in the browser console, but there has already been an error so that's not + // that much of an issue. + var xhr = new XMLHttpRequest(); + xhr.open('GET', element.url, false); + xhr.send(null); + + // If we failed to download the source, skip this patch + if (xhr.status === 200) { + var source = xhr.responseText || ''; + + // We trim the source down to the last 300 characters as sourceMappingURL is always at the end of the file. + // Why 300? To be in line with: https://github.com/getsentry/sentry/blob/4af29e8f2350e20c28a6933354e4f42437b4ba42/src/sentry/lang/javascript/processor.py#L164-L175 + source = source.slice(-300); + + // Now we dig out the source map URL + var sourceMaps = source.match(/\/\/# sourceMappingURL=(.*)$/); + + // If we don't find a source map comment or we find more than one, continue on to the next element. + if (sourceMaps) { + var sourceMapAddress = sourceMaps[1]; + + // Now we check to see if it's a relative URL. + // If it is, convert it to an absolute one. + if (sourceMapAddress.charAt(0) === '~') { + sourceMapAddress = getLocationOrigin() + sourceMapAddress.slice(1); + } + + // Now we strip the '.map' off of the end of the URL and update the + // element so that Sentry can match the map to the blob. + element.url = sourceMapAddress.slice(0, -4); + } + } + } + + stack.push(element); + } + + if (!stack.length) { + return null; + } + + return { + name: ex.name, + message: ex.message, + url: getLocationHref(), + stack: stack + }; + } + + /** + * Adds information about the first frame to incomplete stack traces. + * Safari and IE require this to get complete data on the first frame. + * @param {Object.} stackInfo Stack trace information from + * one of the compute* methods. + * @param {string} url The URL of the script that caused an error. + * @param {(number|string)} lineNo The line number of the script that + * caused an error. + * @param {string=} message The error generated by the browser, which + * hopefully contains the name of the object that caused the error. + * @return {boolean} Whether or not the stack information was + * augmented. + */ + function augmentStackTraceWithInitialElement(stackInfo, url, lineNo, message) { + var initial = { + url: url, + line: lineNo + }; + + if (initial.url && initial.line) { + stackInfo.incomplete = false; + + if (!initial.func) { + initial.func = UNKNOWN_FUNCTION; + } + + if (stackInfo.stack.length > 0) { + if (stackInfo.stack[0].url === initial.url) { + if (stackInfo.stack[0].line === initial.line) { + return false; // already in stack trace + } else if ( + !stackInfo.stack[0].line && + stackInfo.stack[0].func === initial.func + ) { + stackInfo.stack[0].line = initial.line; + return false; + } + } + } + + stackInfo.stack.unshift(initial); + stackInfo.partial = true; + return true; + } else { + stackInfo.incomplete = true; + } + + return false; + } + + /** + * Computes stack trace information by walking the arguments.caller + * chain at the time the exception occurred. This will cause earlier + * frames to be missed but is the only way to get any stack trace in + * Safari and IE. The top frame is restored by + * {@link augmentStackTraceWithInitialElement}. + * @param {Error} ex + * @return {?Object.} Stack trace information. + */ + function computeStackTraceByWalkingCallerChain(ex, depth) { + var functionName = /function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i, + stack = [], + funcs = {}, + recursion = false, + parts, + item, + source; + + for ( + var curr = computeStackTraceByWalkingCallerChain.caller; + curr && !recursion; + curr = curr.caller + ) { + if (curr === computeStackTrace || curr === TraceKit.report) { + // console.log('skipping internal function'); + continue; + } + + item = { + url: null, + func: UNKNOWN_FUNCTION, + line: null, + column: null + }; + + if (curr.name) { + item.func = curr.name; + } else if ((parts = functionName.exec(curr.toString()))) { + item.func = parts[1]; + } + + if (typeof item.func === 'undefined') { + try { + item.func = parts.input.substring(0, parts.input.indexOf('{')); + } catch (e) {} + } + + if (funcs['' + curr]) { + recursion = true; + } else { + funcs['' + curr] = true; + } + + stack.push(item); + } + + if (depth) { + // console.log('depth is ' + depth); + // console.log('stack is ' + stack.length); + stack.splice(0, depth); + } + + var result = { + name: ex.name, + message: ex.message, + url: getLocationHref(), + stack: stack + }; + augmentStackTraceWithInitialElement( + result, + ex.sourceURL || ex.fileName, + ex.line || ex.lineNumber, + ex.message || ex.description + ); + return result; + } + + /** + * Computes a stack trace for an exception. + * @param {Error} ex + * @param {(string|number)=} depth + */ + function computeStackTrace(ex, depth) { + var stack = null; + depth = depth == null ? 0 : +depth; + + try { + stack = computeStackTraceFromStackProp(ex); + if (stack) { + return stack; + } + } catch (e) { + if (TraceKit.debug) { + throw e; + } + } + + try { + stack = computeStackTraceByWalkingCallerChain(ex, depth + 1); + if (stack) { + return stack; + } + } catch (e) { + if (TraceKit.debug) { + throw e; + } + } + return { + name: ex.name, + message: ex.message, + url: getLocationHref() + }; + } + + computeStackTrace.augmentStackTraceWithInitialElement = augmentStackTraceWithInitialElement; + computeStackTrace.computeStackTraceFromStackProp = computeStackTraceFromStackProp; + + return computeStackTrace; +})(); + +module.exports = TraceKit; + +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"8":8}],10:[function(_dereq_,module,exports){ +/* + json-stringify-safe + Like JSON.stringify, but doesn't throw on circular references. + + Originally forked from https://github.com/isaacs/json-stringify-safe + version 5.0.1 on 3/8/2017 and modified to handle Errors serialization + and IE8 compatibility. Tests for this are in test/vendor. + + ISC license: https://github.com/isaacs/json-stringify-safe/blob/master/LICENSE +*/ + +exports = module.exports = stringify; +exports.getSerialize = serializer; + +function indexOf(haystack, needle) { + for (var i = 0; i < haystack.length; ++i) { + if (haystack[i] === needle) return i; + } + return -1; +} + +function stringify(obj, replacer, spaces, cycleReplacer) { + return JSON.stringify(obj, serializer(replacer, cycleReplacer), spaces); +} + +// https://github.com/ftlabs/js-abbreviate/blob/fa709e5f139e7770a71827b1893f22418097fbda/index.js#L95-L106 +function stringifyError(value) { + var err = { + // These properties are implemented as magical getters and don't show up in for in + stack: value.stack, + message: value.message, + name: value.name + }; + + for (var i in value) { + if (Object.prototype.hasOwnProperty.call(value, i)) { + err[i] = value[i]; + } + } + + return err; +} + +function serializer(replacer, cycleReplacer) { + var stack = []; + var keys = []; + + if (cycleReplacer == null) { + cycleReplacer = function(key, value) { + if (stack[0] === value) { + return '[Circular ~]'; + } + return '[Circular ~.' + keys.slice(0, indexOf(stack, value)).join('.') + ']'; + }; + } + + return function(key, value) { + if (stack.length > 0) { + var thisPos = indexOf(stack, this); + ~thisPos ? stack.splice(thisPos + 1) : stack.push(this); + ~thisPos ? keys.splice(thisPos, Infinity, key) : keys.push(key); + + if (~indexOf(stack, value)) { + value = cycleReplacer.call(this, key, value); + } + } else { + stack.push(value); + } + + return replacer == null + ? value instanceof Error ? stringifyError(value) : value + : replacer.call(this, key, value); + }; +} + +},{}],11:[function(_dereq_,module,exports){ +/* + * JavaScript MD5 + * https://github.com/blueimp/JavaScript-MD5 + * + * Copyright 2011, Sebastian Tschan + * https://blueimp.net + * + * Licensed under the MIT license: + * https://opensource.org/licenses/MIT + * + * Based on + * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message + * Digest Algorithm, as defined in RFC 1321. + * Version 2.2 Copyright (C) Paul Johnston 1999 - 2009 + * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet + * Distributed under the BSD License + * See http://pajhome.org.uk/crypt/md5 for more info. + */ + +/* +* Add integers, wrapping at 2^32. This uses 16-bit operations internally +* to work around bugs in some JS interpreters. +*/ +function safeAdd(x, y) { + var lsw = (x & 0xffff) + (y & 0xffff); + var msw = (x >> 16) + (y >> 16) + (lsw >> 16); + return (msw << 16) | (lsw & 0xffff); +} + +/* +* Bitwise rotate a 32-bit number to the left. +*/ +function bitRotateLeft(num, cnt) { + return (num << cnt) | (num >>> (32 - cnt)); +} + +/* +* These functions implement the four basic operations the algorithm uses. +*/ +function md5cmn(q, a, b, x, s, t) { + return safeAdd(bitRotateLeft(safeAdd(safeAdd(a, q), safeAdd(x, t)), s), b); +} +function md5ff(a, b, c, d, x, s, t) { + return md5cmn((b & c) | (~b & d), a, b, x, s, t); +} +function md5gg(a, b, c, d, x, s, t) { + return md5cmn((b & d) | (c & ~d), a, b, x, s, t); +} +function md5hh(a, b, c, d, x, s, t) { + return md5cmn(b ^ c ^ d, a, b, x, s, t); +} +function md5ii(a, b, c, d, x, s, t) { + return md5cmn(c ^ (b | ~d), a, b, x, s, t); +} + +/* +* Calculate the MD5 of an array of little-endian words, and a bit length. +*/ +function binlMD5(x, len) { + /* append padding */ + x[len >> 5] |= 0x80 << (len % 32); + x[(((len + 64) >>> 9) << 4) + 14] = len; + + var i; + var olda; + var oldb; + var oldc; + var oldd; + var a = 1732584193; + var b = -271733879; + var c = -1732584194; + var d = 271733878; + + for (i = 0; i < x.length; i += 16) { + olda = a; + oldb = b; + oldc = c; + oldd = d; + + a = md5ff(a, b, c, d, x[i], 7, -680876936); + d = md5ff(d, a, b, c, x[i + 1], 12, -389564586); + c = md5ff(c, d, a, b, x[i + 2], 17, 606105819); + b = md5ff(b, c, d, a, x[i + 3], 22, -1044525330); + a = md5ff(a, b, c, d, x[i + 4], 7, -176418897); + d = md5ff(d, a, b, c, x[i + 5], 12, 1200080426); + c = md5ff(c, d, a, b, x[i + 6], 17, -1473231341); + b = md5ff(b, c, d, a, x[i + 7], 22, -45705983); + a = md5ff(a, b, c, d, x[i + 8], 7, 1770035416); + d = md5ff(d, a, b, c, x[i + 9], 12, -1958414417); + c = md5ff(c, d, a, b, x[i + 10], 17, -42063); + b = md5ff(b, c, d, a, x[i + 11], 22, -1990404162); + a = md5ff(a, b, c, d, x[i + 12], 7, 1804603682); + d = md5ff(d, a, b, c, x[i + 13], 12, -40341101); + c = md5ff(c, d, a, b, x[i + 14], 17, -1502002290); + b = md5ff(b, c, d, a, x[i + 15], 22, 1236535329); + + a = md5gg(a, b, c, d, x[i + 1], 5, -165796510); + d = md5gg(d, a, b, c, x[i + 6], 9, -1069501632); + c = md5gg(c, d, a, b, x[i + 11], 14, 643717713); + b = md5gg(b, c, d, a, x[i], 20, -373897302); + a = md5gg(a, b, c, d, x[i + 5], 5, -701558691); + d = md5gg(d, a, b, c, x[i + 10], 9, 38016083); + c = md5gg(c, d, a, b, x[i + 15], 14, -660478335); + b = md5gg(b, c, d, a, x[i + 4], 20, -405537848); + a = md5gg(a, b, c, d, x[i + 9], 5, 568446438); + d = md5gg(d, a, b, c, x[i + 14], 9, -1019803690); + c = md5gg(c, d, a, b, x[i + 3], 14, -187363961); + b = md5gg(b, c, d, a, x[i + 8], 20, 1163531501); + a = md5gg(a, b, c, d, x[i + 13], 5, -1444681467); + d = md5gg(d, a, b, c, x[i + 2], 9, -51403784); + c = md5gg(c, d, a, b, x[i + 7], 14, 1735328473); + b = md5gg(b, c, d, a, x[i + 12], 20, -1926607734); + + a = md5hh(a, b, c, d, x[i + 5], 4, -378558); + d = md5hh(d, a, b, c, x[i + 8], 11, -2022574463); + c = md5hh(c, d, a, b, x[i + 11], 16, 1839030562); + b = md5hh(b, c, d, a, x[i + 14], 23, -35309556); + a = md5hh(a, b, c, d, x[i + 1], 4, -1530992060); + d = md5hh(d, a, b, c, x[i + 4], 11, 1272893353); + c = md5hh(c, d, a, b, x[i + 7], 16, -155497632); + b = md5hh(b, c, d, a, x[i + 10], 23, -1094730640); + a = md5hh(a, b, c, d, x[i + 13], 4, 681279174); + d = md5hh(d, a, b, c, x[i], 11, -358537222); + c = md5hh(c, d, a, b, x[i + 3], 16, -722521979); + b = md5hh(b, c, d, a, x[i + 6], 23, 76029189); + a = md5hh(a, b, c, d, x[i + 9], 4, -640364487); + d = md5hh(d, a, b, c, x[i + 12], 11, -421815835); + c = md5hh(c, d, a, b, x[i + 15], 16, 530742520); + b = md5hh(b, c, d, a, x[i + 2], 23, -995338651); + + a = md5ii(a, b, c, d, x[i], 6, -198630844); + d = md5ii(d, a, b, c, x[i + 7], 10, 1126891415); + c = md5ii(c, d, a, b, x[i + 14], 15, -1416354905); + b = md5ii(b, c, d, a, x[i + 5], 21, -57434055); + a = md5ii(a, b, c, d, x[i + 12], 6, 1700485571); + d = md5ii(d, a, b, c, x[i + 3], 10, -1894986606); + c = md5ii(c, d, a, b, x[i + 10], 15, -1051523); + b = md5ii(b, c, d, a, x[i + 1], 21, -2054922799); + a = md5ii(a, b, c, d, x[i + 8], 6, 1873313359); + d = md5ii(d, a, b, c, x[i + 15], 10, -30611744); + c = md5ii(c, d, a, b, x[i + 6], 15, -1560198380); + b = md5ii(b, c, d, a, x[i + 13], 21, 1309151649); + a = md5ii(a, b, c, d, x[i + 4], 6, -145523070); + d = md5ii(d, a, b, c, x[i + 11], 10, -1120210379); + c = md5ii(c, d, a, b, x[i + 2], 15, 718787259); + b = md5ii(b, c, d, a, x[i + 9], 21, -343485551); + + a = safeAdd(a, olda); + b = safeAdd(b, oldb); + c = safeAdd(c, oldc); + d = safeAdd(d, oldd); + } + return [a, b, c, d]; +} + +/* +* Convert an array of little-endian words to a string +*/ +function binl2rstr(input) { + var i; + var output = ''; + var length32 = input.length * 32; + for (i = 0; i < length32; i += 8) { + output += String.fromCharCode((input[i >> 5] >>> (i % 32)) & 0xff); + } + return output; +} + +/* +* Convert a raw string to an array of little-endian words +* Characters >255 have their high-byte silently ignored. +*/ +function rstr2binl(input) { + var i; + var output = []; + output[(input.length >> 2) - 1] = undefined; + for (i = 0; i < output.length; i += 1) { + output[i] = 0; + } + var length8 = input.length * 8; + for (i = 0; i < length8; i += 8) { + output[i >> 5] |= (input.charCodeAt(i / 8) & 0xff) << (i % 32); + } + return output; +} + +/* +* Calculate the MD5 of a raw string +*/ +function rstrMD5(s) { + return binl2rstr(binlMD5(rstr2binl(s), s.length * 8)); +} + +/* +* Calculate the HMAC-MD5, of a key and some data (raw strings) +*/ +function rstrHMACMD5(key, data) { + var i; + var bkey = rstr2binl(key); + var ipad = []; + var opad = []; + var hash; + ipad[15] = opad[15] = undefined; + if (bkey.length > 16) { + bkey = binlMD5(bkey, key.length * 8); + } + for (i = 0; i < 16; i += 1) { + ipad[i] = bkey[i] ^ 0x36363636; + opad[i] = bkey[i] ^ 0x5c5c5c5c; + } + hash = binlMD5(ipad.concat(rstr2binl(data)), 512 + data.length * 8); + return binl2rstr(binlMD5(opad.concat(hash), 512 + 128)); +} + +/* +* Convert a raw string to a hex string +*/ +function rstr2hex(input) { + var hexTab = '0123456789abcdef'; + var output = ''; + var x; + var i; + for (i = 0; i < input.length; i += 1) { + x = input.charCodeAt(i); + output += hexTab.charAt((x >>> 4) & 0x0f) + hexTab.charAt(x & 0x0f); + } + return output; +} + +/* +* Encode a string as utf-8 +*/ +function str2rstrUTF8(input) { + return unescape(encodeURIComponent(input)); +} + +/* +* Take string arguments and return either raw or hex encoded strings +*/ +function rawMD5(s) { + return rstrMD5(str2rstrUTF8(s)); +} +function hexMD5(s) { + return rstr2hex(rawMD5(s)); +} +function rawHMACMD5(k, d) { + return rstrHMACMD5(str2rstrUTF8(k), str2rstrUTF8(d)); +} +function hexHMACMD5(k, d) { + return rstr2hex(rawHMACMD5(k, d)); +} + +function md5(string, key, raw) { + if (!key) { + if (!raw) { + return hexMD5(string); + } + return rawMD5(string); + } + if (!raw) { + return hexHMACMD5(key, string); + } + return rawHMACMD5(key, string); +} + +module.exports = md5; + +},{}]},{},[7,1,2,3])(7) +}); \ No newline at end of file diff --git a/packages/raven-js/dist/angular,ember,require/raven.min.js b/packages/raven-js/dist/angular,ember,require/raven.min.js new file mode 100644 index 000000000000..35a9353bcc37 --- /dev/null +++ b/packages/raven-js/dist/angular,ember,require/raven.min.js @@ -0,0 +1,4 @@ +/*! Raven.js 3.25.2 (30b6d4e) | github.com/getsentry/raven-js */ +!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.Raven=a()}}(function(){var a;return function b(a,c,d){function e(g,h){if(!c[g]){if(!a[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};a[g][0].call(k.exports,function(b){var c=a[g][1][b];return e(c?c:b)},k,k.exports,b,a,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;gthis.l.maxBreadcrumbs&&this.v.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.s.push([a,b]),this.o&&this.G(),this},setUserContext:function(a){return this.k.user=a,this},setExtraContext:function(a){return this.$("extra",a),this},setTagsContext:function(a){return this.$("tags",a),this},clearContext:function(){return this.k={},this},getContext:function(){return JSON.parse(h(this.k))},setEnvironment:function(a){return this.l.environment=a,this},setRelease:function(a){return this.l.release=a,this},setDataCallback:function(a){var b=this.l.dataCallback;return this.l.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.l.breadcrumbCallback;return this.l.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.l.shouldSendCallback;return this.l.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.l.transport=a,this},lastException:function(){return this.e},lastEventId:function(){return this.g},isSetup:function(){return!!this.b&&(!!this.h||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.A("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=R.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(S){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.I;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.k.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.K(this.H(c)),h=S.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(S.head||S.body).appendChild(h)}},M:function(){var a=this;this.n+=1,setTimeout(function(){a.n-=1})},_:function(a,b){var c,d;if(this.c){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),S.createEvent?(c=S.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=S.createEventObject(),c.eventType=a);for(d in b)A(b,d)&&(c[d]=b[d]);if(S.createEvent)S.dispatchEvent(c);else try{S.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},aa:function(a){var b=this;return function(c){if(b.ba=null,b.w!==c){b.w=c;var d;try{d=E(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ca:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.ba;g||a.aa("input")(c),clearTimeout(g),a.ba=setTimeout(function(){a.ba=null},b)}}},da:function(a,b){var c=H(this.x.href),d=H(b),e=H(a);this.y=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},D:function(){var a=this;a.ea=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.N?a.ea.apply(this.P,arguments):a.ea.apply(this,arguments)}},R:function(){this.ea&&(Function.prototype.toString=this.ea)},E:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.da(b.y,c+""),a.apply(this,arguments)}};I(R.history,"pushState",j,d),I(R.history,"replaceState",j,d)}if(c.console&&"console"in R&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};w(["debug","info","warn","error","log"],function(a,b){O(console,b,k)})}},S:function(){for(var a;this.u.length;){a=this.u.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},T:function(){for(var a in this.r)this.q[a]=this.r[a]},G:function(){var a=this;w(this.s,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},H:function(a){var b=Q.exec(a),c={},d=7;try{for(;d--;)c[P[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.l.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},K:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},B:function(){this.n||this.W.apply(this,arguments)},W:function(a,b){var c=this.Y(a,b);this._("handle",{stackInfo:a,options:b}),this.ga(a.name,a.message,a.url,a.lineno,c,b)},Y:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(w(a.stack,function(b,e){var f=c.ha(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.v,0)}),this.k.user&&(a.user=this.k.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),a=this.qa(a),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||v(a[b]))&&delete a[b]}),s(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!v(a)&&(!s(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.na()?void this.A("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function F(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&l(b))for(c=b.split(/\s+/),f=0;fc?Q(a,b-1):d}function R(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?X:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function S(a,b){function c(a){return m(a)?a.map(function(a){return c(a)}):k(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!m(b)||m(b)&&0===b.length)return a;var d,e=A(b),f="********";try{d=JSON.parse(T(a))}catch(g){return a}return c(d)}var T=a(10),U="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},V=3,W=51200,X=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isDOMError:g,isDOMException:h,isUndefined:i,isFunction:j,isPlainObject:k,isString:l,isArray:m,isEmptyObject:n,supportsErrorEvent:o,supportsDOMError:p,supportsDOMException:q,supportsFetch:r,supportsReferrerPolicy:s,supportsPromiseRejectionEvent:t,wrappedCallback:u,each:v,objectMerge:w,truncate:y,objectFrozen:x,hasKey:z,joinRegExp:A,urlencode:B,uuid4:D,htmlTreeAsString:E,htmlElementAsString:F,isSameException:I,isSameStacktrace:J,parseUrl:C,fill:K,safeJoin:L,serializeException:Q,serializeKeysForMessage:R,sanitize:S}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{10:10}],9:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}function e(){return"undefined"==typeof document||null==document.location?"":(document.location.origin||(document.location.origin=document.location.protocol+"//"+document.location.hostname+(document.location.port?":"+document.location.port:"")),document.location.origin)}var f=a(8),g={collectWindowErrors:!0,debug:!1},h="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},i=[].slice,j="?",k=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;g.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function e(a,b){var c=null;if(!b||g.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(i.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,h,i){var l=null,m=f.isErrorEvent(i)?i.error:i,n=f.isErrorEvent(a)?a.message:a;if(v)g.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&f.isError(m))l=g.computeStackTrace(m),e(l,!0);else{var p,r={url:b,line:c,column:h},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(k);p&&(s=p[1],n=p[2])}r.func=j,l={name:s,message:n,url:d(),stack:[r]},e(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=h.onerror,h.onerror=l,r=!0)}function n(){r&&(h.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,e.apply(null,[a,!1].concat(b))}function p(a,b){var c=i.call(arguments,1);if(v){if(u===a)return;o()}var d=g.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),g.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,f,g=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,h=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,i=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,k=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,l=/\((\S*)(?::(\d+))(?::(\d+))\)/,m=a.stack.split("\n"),n=[],o=(/^(.*) is undefined$/.exec(a.message),0),p=m.length;o eval")>-1;r&&(b=k.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==o||c[5]||"undefined"==typeof a.columnNumber||(n[0].column=a.columnNumber+1),f={url:c[3],func:c[1]||j,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}if(!f.func&&f.line&&(f.func=j),f.url&&"blob:"===f.url.substr(0,5)){var s=new XMLHttpRequest;if(s.open("GET",f.url,!1),s.send(null),200===s.status){var t=s.responseText||"";t=t.slice(-300);var u=t.match(/\/\/# sourceMappingURL=(.*)$/);if(u){var v=u[1]; +"~"===v.charAt(0)&&(v=e()+v.slice(1)),f.url=v.slice(0,-4)}}}n.push(f)}return n.length?{name:a.name,message:a.message,url:d(),stack:n}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=j),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,e){for(var h,i,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==f&&o!==g.report){if(i={url:null,func:j,line:null,column:null},o.name?i.func=o.name:(h=k.exec(o.toString()))&&(i.func=h[1]),"undefined"==typeof i.func)try{i.func=h.input.substring(0,h.input.indexOf("{"))}catch(p){}m[""+o]?n=!0:m[""+o]=!0,l.push(i)}e&&l.splice(0,e);var q={name:a.name,message:a.message,url:d(),stack:l};return b(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),q}function f(b,e){var f=null;e=null==e?0:+e;try{if(f=a(b))return f}catch(h){if(g.debug)throw h}try{if(f=c(b,e+1))return f}catch(h){if(g.debug)throw h}return{name:b.name,message:b.message,url:d()}}return f.augmentStackTraceWithInitialElement=b,f.computeStackTraceFromStackProp=a,f}(),b.exports=g}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{8:8}],10:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}],11:[function(a,b,c){function d(a,b){var c=(65535&a)+(65535&b),d=(a>>16)+(b>>16)+(c>>16);return d<<16|65535&c}function e(a,b){return a<>>32-b}function f(a,b,c,f,g,h){return d(e(d(d(b,a),d(f,h)),g),c)}function g(a,b,c,d,e,g,h){return f(b&c|~b&d,a,b,e,g,h)}function h(a,b,c,d,e,g,h){return f(b&d|c&~d,a,b,e,g,h)}function i(a,b,c,d,e,g,h){return f(b^c^d,a,b,e,g,h)}function j(a,b,c,d,e,g,h){return f(c^(b|~d),a,b,e,g,h)}function k(a,b){a[b>>5]|=128<>>9<<4)+14]=b;var c,e,f,k,l,m=1732584193,n=-271733879,o=-1732584194,p=271733878;for(c=0;c>5]>>>b%32&255);return c}function m(a){var b,c=[];for(c[(a.length>>2)-1]=void 0,b=0;b>5]|=(255&a.charCodeAt(b/8))<16&&(e=k(e,8*a.length)),c=0;c<16;c+=1)f[c]=909522486^e[c],g[c]=1549556828^e[c];return d=k(f.concat(m(b)),512+8*b.length),l(k(g.concat(d),640))}function p(a){var b,c,d="0123456789abcdef",e="";for(c=0;c>>4&15)+d.charAt(15&b);return e}function q(a){return unescape(encodeURIComponent(a))}function r(a){return n(q(a))}function s(a){return p(r(a))}function t(a,b){return o(q(a),q(b))}function u(a,b){return p(t(a,b))}function v(a,b,c){return b?c?t(b,a):u(b,a):c?r(a):s(a)}b.exports=v},{}]},{},[7,1,2,3])(7)}); +//# sourceMappingURL=raven.min.js.map \ No newline at end of file diff --git a/packages/raven-js/dist/angular,ember,require/raven.min.js.map b/packages/raven-js/dist/angular,ember,require/raven.min.js.map new file mode 100644 index 000000000000..8477e1f8b253 --- /dev/null +++ b/packages/raven-js/dist/angular,ember,require/raven.min.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","angularPlugin","angular","RavenProvider","$get","$window","ExceptionHandlerProvider","$provide","decorator","exceptionHandler","R","$delegate","ex","cause","captureException","extra","moduleName","provider","config","setDataCallback","wrappedCallback","data","_normalizeData","angularPattern","exception","values","matches","exec","value","type","message","angularDocs","substr","addPlugin","7","8","2","emberPlugin","Ember","_oldOnError","onerror","error","RSVP","on","reason","context","captureMessage","3","requirePlugin","wrap","deep","4","RavenConfigError","name","prototype","constructor","5","utils","wrapMethod","console","level","callback","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","msg","safeJoin","logger","Function","apply","6","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","sanitizeKeys","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isErrorEvent","isDOMError","isDOMException","isError","isObject","isPlainObject","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","sanitize","wrapConsoleMethod","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","dsn","options","_logDebug","globalOptions","key","setDSN","push","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","toString","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","func","undefined","_before","wrapped","_ignoreNextOnError","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","U","event","unhandledPromiseRejection","C","_promiseRejectionHandler","bind","addEventListener","Q","removeEventListener","trimHeadFrames","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","V","currentOptions","exKeys","Object","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","M","setTimeout","_","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","aa","evtName","_keypressTimeout","target","category","ca","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","da","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","D","_originalFunctionToString","E","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","F","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","S","builtin","T","G","installer","concat","H","str","m","allowSecretKey","K","port","B","W","stackInfo","_triggerEvent","_processException","lineno","Y","frame","_normalizeFrame","in_app","ha","stackInfoUrl","normalized","filename","line","colno","column","function","ga","prefixedMessage","transaction","ia","request","Referer","breadcrumbs","_trimBreadcrumbs","ja","urlProp","urlProps","ka","httpData","userAgent","User-Agent","referrer","z","_backoffDuration","_backoffStart","na","oa","current","last","pa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Z","baseData","project","platform","_getHttpData","serverName","server_name","_sanitizeData","forEach","random","_sendProcessedPayload","qa","sa","ra","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","ta","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","open","setRequestHeader","send","ua","hash","evaluated","A","$","setUser","setReleaseContext","10","11","9","RavenConstructor","_Raven","noConflict","Client","what","supportsErrorEvent","ErrorEvent","supportsDOMError","DOMError","supportsDOMException","DOMException","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","sanitizeMask","safeInput","o_O","getLocationHref","getLocationOrigin","origin","hostname","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","responseText","sourceMaps","sourceMapAddress","charAt","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","y","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","string","raw"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file diff --git a/packages/raven-js/dist/angular,ember,vue/raven.js b/packages/raven-js/dist/angular,ember,vue/raven.js new file mode 100644 index 000000000000..99fb5e69e880 --- /dev/null +++ b/packages/raven-js/dist/angular,ember,vue/raven.js @@ -0,0 +1,4170 @@ +/*! Raven.js 3.25.2 (30b6d4e) | github.com/getsentry/raven-js */ + +/* + * Includes TraceKit + * https://github.com/getsentry/TraceKit + * + * Copyright 2018 Matt Robenolt and other contributors + * Released under the BSD license + * https://github.com/getsentry/raven-js/blob/master/LICENSE + * + */ + +(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.Raven = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o' : 'anonymous component') + + (vm._isVue && vm.$options.__file ? ' at ' + vm.$options.__file : '') + ); +} + +function vuePlugin(Raven, Vue) { + Vue = Vue || window.Vue; + + // quit if Vue isn't on the page + if (!Vue || !Vue.config) return; + + var _oldOnError = Vue.config.errorHandler; + Vue.config.errorHandler = function VueErrorHandler(error, vm, info) { + var metaData = {}; + + // vm and lifecycleHook are not always available + if (Object.prototype.toString.call(vm) === '[object Object]') { + metaData.componentName = formatComponentName(vm); + metaData.propsData = vm.$options.propsData; + } + + if (typeof info !== 'undefined') { + metaData.lifecycleHook = info; + } + + Raven.captureException(error, { + extra: metaData + }); + + if (typeof _oldOnError === 'function') { + _oldOnError.call(this, error, vm, info); + } + }; +} + +module.exports = vuePlugin; + +_dereq_(7).addPlugin(module.exports); +},{"7":7}],4:[function(_dereq_,module,exports){ +function RavenConfigError(message) { + this.name = 'RavenConfigError'; + this.message = message; +} +RavenConfigError.prototype = new Error(); +RavenConfigError.prototype.constructor = RavenConfigError; + +module.exports = RavenConfigError; + +},{}],5:[function(_dereq_,module,exports){ +var utils = _dereq_(8); + +var wrapMethod = function(console, level, callback) { + var originalConsoleLevel = console[level]; + var originalConsole = console; + + if (!(level in console)) { + return; + } + + var sentryLevel = level === 'warn' ? 'warning' : level; + + console[level] = function() { + var args = [].slice.call(arguments); + + var msg = utils.safeJoin(args, ' '); + var data = {level: sentryLevel, logger: 'console', extra: {arguments: args}}; + + if (level === 'assert') { + if (args[0] === false) { + // Default browsers message + msg = + 'Assertion failed: ' + (utils.safeJoin(args.slice(1), ' ') || 'console.assert'); + data.extra.arguments = args.slice(1); + callback && callback(msg, data); + } + } else { + callback && callback(msg, data); + } + + // this fails for some browsers. :( + if (originalConsoleLevel) { + // IE9 doesn't allow calling apply on console functions directly + // See: https://stackoverflow.com/questions/5472938/does-ie9-support-console-log-and-is-it-a-real-function#answer-5473193 + Function.prototype.apply.call(originalConsoleLevel, originalConsole, args); + } + }; +}; + +module.exports = { + wrapMethod: wrapMethod +}; + +},{"8":8}],6:[function(_dereq_,module,exports){ +(function (global){ +/*global XDomainRequest:false */ + +var TraceKit = _dereq_(9); +var stringify = _dereq_(10); +var md5 = _dereq_(11); +var RavenConfigError = _dereq_(4); + +var utils = _dereq_(8); +var isErrorEvent = utils.isErrorEvent; +var isDOMError = utils.isDOMError; +var isDOMException = utils.isDOMException; +var isError = utils.isError; +var isObject = utils.isObject; +var isPlainObject = utils.isPlainObject; +var isUndefined = utils.isUndefined; +var isFunction = utils.isFunction; +var isString = utils.isString; +var isArray = utils.isArray; +var isEmptyObject = utils.isEmptyObject; +var each = utils.each; +var objectMerge = utils.objectMerge; +var truncate = utils.truncate; +var objectFrozen = utils.objectFrozen; +var hasKey = utils.hasKey; +var joinRegExp = utils.joinRegExp; +var urlencode = utils.urlencode; +var uuid4 = utils.uuid4; +var htmlTreeAsString = utils.htmlTreeAsString; +var isSameException = utils.isSameException; +var isSameStacktrace = utils.isSameStacktrace; +var parseUrl = utils.parseUrl; +var fill = utils.fill; +var supportsFetch = utils.supportsFetch; +var supportsReferrerPolicy = utils.supportsReferrerPolicy; +var serializeKeysForMessage = utils.serializeKeysForMessage; +var serializeException = utils.serializeException; +var sanitize = utils.sanitize; + +var wrapConsoleMethod = _dereq_(5).wrapMethod; + +var dsnKeys = 'source protocol user pass host port path'.split(' '), + dsnPattern = /^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/; + +function now() { + return +new Date(); +} + +// This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) +var _window = + typeof window !== 'undefined' + ? window + : typeof global !== 'undefined' + ? global + : typeof self !== 'undefined' + ? self + : {}; +var _document = _window.document; +var _navigator = _window.navigator; + +function keepOriginalCallback(original, callback) { + return isFunction(callback) + ? function(data) { + return callback(data, original); + } + : callback; +} + +// First, check for JSON support +// If there is no JSON, we no-op the core features of Raven +// since JSON is required to encode the payload +function Raven() { + this._hasJSON = !!(typeof JSON === 'object' && JSON.stringify); + // Raven can run in contexts where there's no document (react-native) + this._hasDocument = !isUndefined(_document); + this._hasNavigator = !isUndefined(_navigator); + this._lastCapturedException = null; + this._lastData = null; + this._lastEventId = null; + this._globalServer = null; + this._globalKey = null; + this._globalProject = null; + this._globalContext = {}; + this._globalOptions = { + // SENTRY_RELEASE can be injected by https://github.com/getsentry/sentry-webpack-plugin + release: _window.SENTRY_RELEASE && _window.SENTRY_RELEASE.id, + logger: 'javascript', + ignoreErrors: [], + ignoreUrls: [], + whitelistUrls: [], + includePaths: [], + headers: null, + collectWindowErrors: true, + captureUnhandledRejections: true, + maxMessageLength: 0, + // By default, truncates URL values to 250 chars + maxUrlLength: 250, + stackTraceLimit: 50, + autoBreadcrumbs: true, + instrument: true, + sampleRate: 1, + sanitizeKeys: [] + }; + this._fetchDefaults = { + method: 'POST', + keepalive: true, + // Despite all stars in the sky saying that Edge supports old draft syntax, aka 'never', 'always', 'origin' and 'default + // https://caniuse.com/#feat=referrer-policy + // It doesn't. And it throw exception instead of ignoring this parameter... + // REF: https://github.com/getsentry/raven-js/issues/1233 + referrerPolicy: supportsReferrerPolicy() ? 'origin' : '' + }; + this._ignoreOnError = 0; + this._isRavenInstalled = false; + this._originalErrorStackTraceLimit = Error.stackTraceLimit; + // capture references to window.console *and* all its methods first + // before the console plugin has a chance to monkey patch + this._originalConsole = _window.console || {}; + this._originalConsoleMethods = {}; + this._plugins = []; + this._startTime = now(); + this._wrappedBuiltIns = []; + this._breadcrumbs = []; + this._lastCapturedEvent = null; + this._keypressTimeout; + this._location = _window.location; + this._lastHref = this._location && this._location.href; + this._resetBackoff(); + + // eslint-disable-next-line guard-for-in + for (var method in this._originalConsole) { + this._originalConsoleMethods[method] = this._originalConsole[method]; + } +} + +/* + * The core Raven singleton + * + * @this {Raven} + */ + +Raven.prototype = { + // Hardcode version string so that raven source can be loaded directly via + // webpack (using a build step causes webpack #1617). Grunt verifies that + // this value matches package.json during build. + // See: https://github.com/getsentry/raven-js/issues/465 + VERSION: '3.25.2', + + debug: false, + + TraceKit: TraceKit, // alias to TraceKit + + /* + * Configure Raven with a DSN and extra options + * + * @param {string} dsn The public Sentry DSN + * @param {object} options Set of global options [optional] + * @return {Raven} + */ + config: function(dsn, options) { + var self = this; + + if (self._globalServer) { + this._logDebug('error', 'Error: Raven has already been configured'); + return self; + } + if (!dsn) return self; + + var globalOptions = self._globalOptions; + + // merge in options + if (options) { + each(options, function(key, value) { + // tags and extra are special and need to be put into context + if (key === 'tags' || key === 'extra' || key === 'user') { + self._globalContext[key] = value; + } else { + globalOptions[key] = value; + } + }); + } + + self.setDSN(dsn); + + // "Script error." is hard coded into browsers for errors that it can't read. + // this is the result of a script being pulled in from an external domain and CORS. + globalOptions.ignoreErrors.push(/^Script error\.?$/); + globalOptions.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/); + + // join regexp rules into one big rule + globalOptions.ignoreErrors = joinRegExp(globalOptions.ignoreErrors); + globalOptions.ignoreUrls = globalOptions.ignoreUrls.length + ? joinRegExp(globalOptions.ignoreUrls) + : false; + globalOptions.whitelistUrls = globalOptions.whitelistUrls.length + ? joinRegExp(globalOptions.whitelistUrls) + : false; + globalOptions.includePaths = joinRegExp(globalOptions.includePaths); + globalOptions.maxBreadcrumbs = Math.max( + 0, + Math.min(globalOptions.maxBreadcrumbs || 100, 100) + ); // default and hard limit is 100 + + var autoBreadcrumbDefaults = { + xhr: true, + console: true, + dom: true, + location: true, + sentry: true + }; + + var autoBreadcrumbs = globalOptions.autoBreadcrumbs; + if ({}.toString.call(autoBreadcrumbs) === '[object Object]') { + autoBreadcrumbs = objectMerge(autoBreadcrumbDefaults, autoBreadcrumbs); + } else if (autoBreadcrumbs !== false) { + autoBreadcrumbs = autoBreadcrumbDefaults; + } + globalOptions.autoBreadcrumbs = autoBreadcrumbs; + + var instrumentDefaults = { + tryCatch: true + }; + + var instrument = globalOptions.instrument; + if ({}.toString.call(instrument) === '[object Object]') { + instrument = objectMerge(instrumentDefaults, instrument); + } else if (instrument !== false) { + instrument = instrumentDefaults; + } + globalOptions.instrument = instrument; + + TraceKit.collectWindowErrors = !!globalOptions.collectWindowErrors; + + // return for chaining + return self; + }, + + /* + * Installs a global window.onerror error handler + * to capture and report uncaught exceptions. + * At this point, install() is required to be called due + * to the way TraceKit is set up. + * + * @return {Raven} + */ + install: function() { + var self = this; + if (self.isSetup() && !self._isRavenInstalled) { + TraceKit.report.subscribe(function() { + self._handleOnErrorStackInfo.apply(self, arguments); + }); + + if (self._globalOptions.captureUnhandledRejections) { + self._attachPromiseRejectionHandler(); + } + + self._patchFunctionToString(); + + if (self._globalOptions.instrument && self._globalOptions.instrument.tryCatch) { + self._instrumentTryCatch(); + } + + if (self._globalOptions.autoBreadcrumbs) self._instrumentBreadcrumbs(); + + // Install all of the plugins + self._drainPlugins(); + + self._isRavenInstalled = true; + } + + Error.stackTraceLimit = self._globalOptions.stackTraceLimit; + return this; + }, + + /* + * Set the DSN (can be called multiple time unlike config) + * + * @param {string} dsn The public Sentry DSN + */ + setDSN: function(dsn) { + var self = this, + uri = self._parseDSN(dsn), + lastSlash = uri.path.lastIndexOf('/'), + path = uri.path.substr(1, lastSlash); + + self._dsn = dsn; + self._globalKey = uri.user; + self._globalSecret = uri.pass && uri.pass.substr(1); + self._globalProject = uri.path.substr(lastSlash + 1); + + self._globalServer = self._getGlobalServer(uri); + + self._globalEndpoint = + self._globalServer + '/' + path + 'api/' + self._globalProject + '/store/'; + + // Reset backoff state since we may be pointing at a + // new project/server + this._resetBackoff(); + }, + + /* + * Wrap code within a context so Raven can capture errors + * reliably across domains that is executed immediately. + * + * @param {object} options A specific set of options for this context [optional] + * @param {function} func The callback to be immediately executed within the context + * @param {array} args An array of arguments to be called with the callback [optional] + */ + context: function(options, func, args) { + if (isFunction(options)) { + args = func || []; + func = options; + options = undefined; + } + + return this.wrap(options, func).apply(this, args); + }, + + /* + * Wrap code within a context and returns back a new function to be executed + * + * @param {object} options A specific set of options for this context [optional] + * @param {function} func The function to be wrapped in a new context + * @param {function} func A function to call before the try/catch wrapper [optional, private] + * @return {function} The newly wrapped functions with a context + */ + wrap: function(options, func, _before) { + var self = this; + // 1 argument has been passed, and it's not a function + // so just return it + if (isUndefined(func) && !isFunction(options)) { + return options; + } + + // options is optional + if (isFunction(options)) { + func = options; + options = undefined; + } + + // At this point, we've passed along 2 arguments, and the second one + // is not a function either, so we'll just return the second argument. + if (!isFunction(func)) { + return func; + } + + // We don't wanna wrap it twice! + try { + if (func.__raven__) { + return func; + } + + // If this has already been wrapped in the past, return that + if (func.__raven_wrapper__) { + return func.__raven_wrapper__; + } + } catch (e) { + // Just accessing custom props in some Selenium environments + // can cause a "Permission denied" exception (see raven-js#495). + // Bail on wrapping and return the function as-is (defers to window.onerror). + return func; + } + + function wrapped() { + var args = [], + i = arguments.length, + deep = !options || (options && options.deep !== false); + + if (_before && isFunction(_before)) { + _before.apply(this, arguments); + } + + // Recursively wrap all of a function's arguments that are + // functions themselves. + while (i--) args[i] = deep ? self.wrap(options, arguments[i]) : arguments[i]; + + try { + // Attempt to invoke user-land function + // NOTE: If you are a Sentry user, and you are seeing this stack frame, it + // means Raven caught an error invoking your application code. This is + // expected behavior and NOT indicative of a bug with Raven.js. + return func.apply(this, args); + } catch (e) { + self._ignoreNextOnError(); + self.captureException(e, options); + throw e; + } + } + + // copy over properties of the old function + for (var property in func) { + if (hasKey(func, property)) { + wrapped[property] = func[property]; + } + } + wrapped.prototype = func.prototype; + + func.__raven_wrapper__ = wrapped; + // Signal that this function has been wrapped/filled already + // for both debugging and to prevent it to being wrapped/filled twice + wrapped.__raven__ = true; + wrapped.__orig__ = func; + + return wrapped; + }, + + /** + * Uninstalls the global error handler. + * + * @return {Raven} + */ + uninstall: function() { + TraceKit.report.uninstall(); + + this._detachPromiseRejectionHandler(); + this._unpatchFunctionToString(); + this._restoreBuiltIns(); + this._restoreConsole(); + + Error.stackTraceLimit = this._originalErrorStackTraceLimit; + this._isRavenInstalled = false; + + return this; + }, + + /** + * Callback used for `unhandledrejection` event + * + * @param {PromiseRejectionEvent} event An object containing + * promise: the Promise that was rejected + * reason: the value with which the Promise was rejected + * @return void + */ + _promiseRejectionHandler: function(event) { + this._logDebug('debug', 'Raven caught unhandled promise rejection:', event); + this.captureException(event.reason, { + extra: { + unhandledPromiseRejection: true + } + }); + }, + + /** + * Installs the global promise rejection handler. + * + * @return {raven} + */ + _attachPromiseRejectionHandler: function() { + this._promiseRejectionHandler = this._promiseRejectionHandler.bind(this); + _window.addEventListener && + _window.addEventListener('unhandledrejection', this._promiseRejectionHandler); + return this; + }, + + /** + * Uninstalls the global promise rejection handler. + * + * @return {raven} + */ + _detachPromiseRejectionHandler: function() { + _window.removeEventListener && + _window.removeEventListener('unhandledrejection', this._promiseRejectionHandler); + return this; + }, + + /** + * Manually capture an exception and send it over to Sentry + * + * @param {error} ex An exception to be logged + * @param {object} options A specific set of options for this error [optional] + * @return {Raven} + */ + captureException: function(ex, options) { + options = objectMerge({trimHeadFrames: 0}, options ? options : {}); + + if (isErrorEvent(ex) && ex.error) { + // If it is an ErrorEvent with `error` property, extract it to get actual Error + ex = ex.error; + } else if (isDOMError(ex) || isDOMException(ex)) { + // If it is a DOMError or DOMException (which are legacy APIs, but still supported in some browsers) + // then we just extract the name and message, as they don't provide anything else + // https://developer.mozilla.org/en-US/docs/Web/API/DOMError + // https://developer.mozilla.org/en-US/docs/Web/API/DOMException + var name = ex.name || (isDOMError(ex) ? 'DOMError' : 'DOMException'); + var message = ex.message ? name + ': ' + ex.message : name; + + return this.captureMessage( + message, + objectMerge(options, { + // neither DOMError or DOMException provide stack trace and we most likely wont get it this way as well + // but it's barely any overhead so we may at least try + stacktrace: true, + trimHeadFrames: options.trimHeadFrames + 1 + }) + ); + } else if (isError(ex)) { + // we have a real Error object + ex = ex; + } else if (isPlainObject(ex)) { + // If it is plain Object, serialize it manually and extract options + // This will allow us to group events based on top-level keys + // which is much better than creating new group when any key/value change + options = this._getCaptureExceptionOptionsFromPlainObject(options, ex); + ex = new Error(options.message); + } else { + // If none of previous checks were valid, then it means that + // it's not a DOMError/DOMException + // it's not a plain Object + // it's not a valid ErrorEvent (one with an error property) + // it's not an Error + // So bail out and capture it as a simple message: + return this.captureMessage( + ex, + objectMerge(options, { + stacktrace: true, // if we fall back to captureMessage, default to attempting a new trace + trimHeadFrames: options.trimHeadFrames + 1 + }) + ); + } + + // Store the raw exception object for potential debugging and introspection + this._lastCapturedException = ex; + + // TraceKit.report will re-raise any exception passed to it, + // which means you have to wrap it in try/catch. Instead, we + // can wrap it here and only re-raise if TraceKit.report + // raises an exception different from the one we asked to + // report on. + try { + var stack = TraceKit.computeStackTrace(ex); + this._handleStackInfo(stack, options); + } catch (ex1) { + if (ex !== ex1) { + throw ex1; + } + } + + return this; + }, + + _getCaptureExceptionOptionsFromPlainObject: function(currentOptions, ex) { + var exKeys = Object.keys(ex).sort(); + var options = objectMerge(currentOptions, { + message: + 'Non-Error exception captured with keys: ' + serializeKeysForMessage(exKeys), + fingerprint: [md5(exKeys)], + extra: currentOptions.extra || {} + }); + options.extra.__serialized__ = serializeException(ex); + + return options; + }, + + /* + * Manually send a message to Sentry + * + * @param {string} msg A plain message to be captured in Sentry + * @param {object} options A specific set of options for this message [optional] + * @return {Raven} + */ + captureMessage: function(msg, options) { + // config() automagically converts ignoreErrors from a list to a RegExp so we need to test for an + // early call; we'll error on the side of logging anything called before configuration since it's + // probably something you should see: + if ( + !!this._globalOptions.ignoreErrors.test && + this._globalOptions.ignoreErrors.test(msg) + ) { + return; + } + + options = options || {}; + msg = msg + ''; // Make sure it's actually a string + + var data = objectMerge( + { + message: msg + }, + options + ); + + var ex; + // Generate a "synthetic" stack trace from this point. + // NOTE: If you are a Sentry user, and you are seeing this stack frame, it is NOT indicative + // of a bug with Raven.js. Sentry generates synthetic traces either by configuration, + // or if it catches a thrown object without a "stack" property. + try { + throw new Error(msg); + } catch (ex1) { + ex = ex1; + } + + // null exception name so `Error` isn't prefixed to msg + ex.name = null; + var stack = TraceKit.computeStackTrace(ex); + + // stack[0] is `throw new Error(msg)` call itself, we are interested in the frame that was just before that, stack[1] + var initialCall = isArray(stack.stack) && stack.stack[1]; + + // if stack[1] is `Raven.captureException`, it means that someone passed a string to it and we redirected that call + // to be handled by `captureMessage`, thus `initialCall` is the 3rd one, not 2nd + // initialCall => captureException(string) => captureMessage(string) + if (initialCall && initialCall.func === 'Raven.captureException') { + initialCall = stack.stack[2]; + } + + var fileurl = (initialCall && initialCall.url) || ''; + + if ( + !!this._globalOptions.ignoreUrls.test && + this._globalOptions.ignoreUrls.test(fileurl) + ) { + return; + } + + if ( + !!this._globalOptions.whitelistUrls.test && + !this._globalOptions.whitelistUrls.test(fileurl) + ) { + return; + } + + if (this._globalOptions.stacktrace || (options && options.stacktrace)) { + // fingerprint on msg, not stack trace (legacy behavior, could be revisited) + data.fingerprint = data.fingerprint == null ? msg : data.fingerprint; + + options = objectMerge( + { + trimHeadFrames: 0 + }, + options + ); + // Since we know this is a synthetic trace, the top frame (this function call) + // MUST be from Raven.js, so mark it for trimming + // We add to the trim counter so that callers can choose to trim extra frames, such + // as utility functions. + options.trimHeadFrames += 1; + + var frames = this._prepareFrames(stack, options); + data.stacktrace = { + // Sentry expects frames oldest to newest + frames: frames.reverse() + }; + } + + // Make sure that fingerprint is always wrapped in an array + if (data.fingerprint) { + data.fingerprint = isArray(data.fingerprint) + ? data.fingerprint + : [data.fingerprint]; + } + + // Fire away! + this._send(data); + + return this; + }, + + captureBreadcrumb: function(obj) { + var crumb = objectMerge( + { + timestamp: now() / 1000 + }, + obj + ); + + if (isFunction(this._globalOptions.breadcrumbCallback)) { + var result = this._globalOptions.breadcrumbCallback(crumb); + + if (isObject(result) && !isEmptyObject(result)) { + crumb = result; + } else if (result === false) { + return this; + } + } + + this._breadcrumbs.push(crumb); + if (this._breadcrumbs.length > this._globalOptions.maxBreadcrumbs) { + this._breadcrumbs.shift(); + } + return this; + }, + + addPlugin: function(plugin /*arg1, arg2, ... argN*/) { + var pluginArgs = [].slice.call(arguments, 1); + + this._plugins.push([plugin, pluginArgs]); + if (this._isRavenInstalled) { + this._drainPlugins(); + } + + return this; + }, + + /* + * Set/clear a user to be sent along with the payload. + * + * @param {object} user An object representing user data [optional] + * @return {Raven} + */ + setUserContext: function(user) { + // Intentionally do not merge here since that's an unexpected behavior. + this._globalContext.user = user; + + return this; + }, + + /* + * Merge extra attributes to be sent along with the payload. + * + * @param {object} extra An object representing extra data [optional] + * @return {Raven} + */ + setExtraContext: function(extra) { + this._mergeContext('extra', extra); + + return this; + }, + + /* + * Merge tags to be sent along with the payload. + * + * @param {object} tags An object representing tags [optional] + * @return {Raven} + */ + setTagsContext: function(tags) { + this._mergeContext('tags', tags); + + return this; + }, + + /* + * Clear all of the context. + * + * @return {Raven} + */ + clearContext: function() { + this._globalContext = {}; + + return this; + }, + + /* + * Get a copy of the current context. This cannot be mutated. + * + * @return {object} copy of context + */ + getContext: function() { + // lol javascript + return JSON.parse(stringify(this._globalContext)); + }, + + /* + * Set environment of application + * + * @param {string} environment Typically something like 'production'. + * @return {Raven} + */ + setEnvironment: function(environment) { + this._globalOptions.environment = environment; + + return this; + }, + + /* + * Set release version of application + * + * @param {string} release Typically something like a git SHA to identify version + * @return {Raven} + */ + setRelease: function(release) { + this._globalOptions.release = release; + + return this; + }, + + /* + * Set the dataCallback option + * + * @param {function} callback The callback to run which allows the + * data blob to be mutated before sending + * @return {Raven} + */ + setDataCallback: function(callback) { + var original = this._globalOptions.dataCallback; + this._globalOptions.dataCallback = keepOriginalCallback(original, callback); + return this; + }, + + /* + * Set the breadcrumbCallback option + * + * @param {function} callback The callback to run which allows filtering + * or mutating breadcrumbs + * @return {Raven} + */ + setBreadcrumbCallback: function(callback) { + var original = this._globalOptions.breadcrumbCallback; + this._globalOptions.breadcrumbCallback = keepOriginalCallback(original, callback); + return this; + }, + + /* + * Set the shouldSendCallback option + * + * @param {function} callback The callback to run which allows + * introspecting the blob before sending + * @return {Raven} + */ + setShouldSendCallback: function(callback) { + var original = this._globalOptions.shouldSendCallback; + this._globalOptions.shouldSendCallback = keepOriginalCallback(original, callback); + return this; + }, + + /** + * Override the default HTTP transport mechanism that transmits data + * to the Sentry server. + * + * @param {function} transport Function invoked instead of the default + * `makeRequest` handler. + * + * @return {Raven} + */ + setTransport: function(transport) { + this._globalOptions.transport = transport; + + return this; + }, + + /* + * Get the latest raw exception that was captured by Raven. + * + * @return {error} + */ + lastException: function() { + return this._lastCapturedException; + }, + + /* + * Get the last event id + * + * @return {string} + */ + lastEventId: function() { + return this._lastEventId; + }, + + /* + * Determine if Raven is setup and ready to go. + * + * @return {boolean} + */ + isSetup: function() { + if (!this._hasJSON) return false; // needs JSON support + if (!this._globalServer) { + if (!this.ravenNotConfiguredError) { + this.ravenNotConfiguredError = true; + this._logDebug('error', 'Error: Raven has not been configured.'); + } + return false; + } + return true; + }, + + afterLoad: function() { + // TODO: remove window dependence? + + // Attempt to initialize Raven on load + var RavenConfig = _window.RavenConfig; + if (RavenConfig) { + this.config(RavenConfig.dsn, RavenConfig.config).install(); + } + }, + + showReportDialog: function(options) { + if ( + !_document // doesn't work without a document (React native) + ) + return; + + options = options || {}; + + var lastEventId = options.eventId || this.lastEventId(); + if (!lastEventId) { + throw new RavenConfigError('Missing eventId'); + } + + var dsn = options.dsn || this._dsn; + if (!dsn) { + throw new RavenConfigError('Missing DSN'); + } + + var encode = encodeURIComponent; + var qs = ''; + qs += '?eventId=' + encode(lastEventId); + qs += '&dsn=' + encode(dsn); + + var user = options.user || this._globalContext.user; + if (user) { + if (user.name) qs += '&name=' + encode(user.name); + if (user.email) qs += '&email=' + encode(user.email); + } + + var globalServer = this._getGlobalServer(this._parseDSN(dsn)); + + var script = _document.createElement('script'); + script.async = true; + script.src = globalServer + '/api/embed/error-page/' + qs; + (_document.head || _document.body).appendChild(script); + }, + + /**** Private functions ****/ + _ignoreNextOnError: function() { + var self = this; + this._ignoreOnError += 1; + setTimeout(function() { + // onerror should trigger before setTimeout + self._ignoreOnError -= 1; + }); + }, + + _triggerEvent: function(eventType, options) { + // NOTE: `event` is a native browser thing, so let's avoid conflicting wiht it + var evt, key; + + if (!this._hasDocument) return; + + options = options || {}; + + eventType = 'raven' + eventType.substr(0, 1).toUpperCase() + eventType.substr(1); + + if (_document.createEvent) { + evt = _document.createEvent('HTMLEvents'); + evt.initEvent(eventType, true, true); + } else { + evt = _document.createEventObject(); + evt.eventType = eventType; + } + + for (key in options) + if (hasKey(options, key)) { + evt[key] = options[key]; + } + + if (_document.createEvent) { + // IE9 if standards + _document.dispatchEvent(evt); + } else { + // IE8 regardless of Quirks or Standards + // IE9 if quirks + try { + _document.fireEvent('on' + evt.eventType.toLowerCase(), evt); + } catch (e) { + // Do nothing + } + } + }, + + /** + * Wraps addEventListener to capture UI breadcrumbs + * @param evtName the event name (e.g. "click") + * @returns {Function} + * @private + */ + _breadcrumbEventHandler: function(evtName) { + var self = this; + return function(evt) { + // reset keypress timeout; e.g. triggering a 'click' after + // a 'keypress' will reset the keypress debounce so that a new + // set of keypresses can be recorded + self._keypressTimeout = null; + + // It's possible this handler might trigger multiple times for the same + // event (e.g. event propagation through node ancestors). Ignore if we've + // already captured the event. + if (self._lastCapturedEvent === evt) return; + + self._lastCapturedEvent = evt; + + // try/catch both: + // - accessing evt.target (see getsentry/raven-js#838, #768) + // - `htmlTreeAsString` because it's complex, and just accessing the DOM incorrectly + // can throw an exception in some circumstances. + var target; + try { + target = htmlTreeAsString(evt.target); + } catch (e) { + target = ''; + } + + self.captureBreadcrumb({ + category: 'ui.' + evtName, // e.g. ui.click, ui.input + message: target + }); + }; + }, + + /** + * Wraps addEventListener to capture keypress UI events + * @returns {Function} + * @private + */ + _keypressEventHandler: function() { + var self = this, + debounceDuration = 1000; // milliseconds + + // TODO: if somehow user switches keypress target before + // debounce timeout is triggered, we will only capture + // a single breadcrumb from the FIRST target (acceptable?) + return function(evt) { + var target; + try { + target = evt.target; + } catch (e) { + // just accessing event properties can throw an exception in some rare circumstances + // see: https://github.com/getsentry/raven-js/issues/838 + return; + } + var tagName = target && target.tagName; + + // only consider keypress events on actual input elements + // this will disregard keypresses targeting body (e.g. tabbing + // through elements, hotkeys, etc) + if ( + !tagName || + (tagName !== 'INPUT' && tagName !== 'TEXTAREA' && !target.isContentEditable) + ) + return; + + // record first keypress in a series, but ignore subsequent + // keypresses until debounce clears + var timeout = self._keypressTimeout; + if (!timeout) { + self._breadcrumbEventHandler('input')(evt); + } + clearTimeout(timeout); + self._keypressTimeout = setTimeout(function() { + self._keypressTimeout = null; + }, debounceDuration); + }; + }, + + /** + * Captures a breadcrumb of type "navigation", normalizing input URLs + * @param to the originating URL + * @param from the target URL + * @private + */ + _captureUrlChange: function(from, to) { + var parsedLoc = parseUrl(this._location.href); + var parsedTo = parseUrl(to); + var parsedFrom = parseUrl(from); + + // because onpopstate only tells you the "new" (to) value of location.href, and + // not the previous (from) value, we need to track the value of the current URL + // state ourselves + this._lastHref = to; + + // Use only the path component of the URL if the URL matches the current + // document (almost all the time when using pushState) + if (parsedLoc.protocol === parsedTo.protocol && parsedLoc.host === parsedTo.host) + to = parsedTo.relative; + if (parsedLoc.protocol === parsedFrom.protocol && parsedLoc.host === parsedFrom.host) + from = parsedFrom.relative; + + this.captureBreadcrumb({ + category: 'navigation', + data: { + to: to, + from: from + } + }); + }, + + _patchFunctionToString: function() { + var self = this; + self._originalFunctionToString = Function.prototype.toString; + // eslint-disable-next-line no-extend-native + Function.prototype.toString = function() { + if (typeof this === 'function' && this.__raven__) { + return self._originalFunctionToString.apply(this.__orig__, arguments); + } + return self._originalFunctionToString.apply(this, arguments); + }; + }, + + _unpatchFunctionToString: function() { + if (this._originalFunctionToString) { + // eslint-disable-next-line no-extend-native + Function.prototype.toString = this._originalFunctionToString; + } + }, + + /** + * Wrap timer functions and event targets to catch errors and provide + * better metadata. + */ + _instrumentTryCatch: function() { + var self = this; + + var wrappedBuiltIns = self._wrappedBuiltIns; + + function wrapTimeFn(orig) { + return function(fn, t) { + // preserve arity + // Make a copy of the arguments to prevent deoptimization + // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments + var args = new Array(arguments.length); + for (var i = 0; i < args.length; ++i) { + args[i] = arguments[i]; + } + var originalCallback = args[0]; + if (isFunction(originalCallback)) { + args[0] = self.wrap(originalCallback); + } + + // IE < 9 doesn't support .call/.apply on setInterval/setTimeout, but it + // also supports only two arguments and doesn't care what this is, so we + // can just call the original function directly. + if (orig.apply) { + return orig.apply(this, args); + } else { + return orig(args[0], args[1]); + } + }; + } + + var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; + + function wrapEventTarget(global) { + var proto = _window[global] && _window[global].prototype; + if (proto && proto.hasOwnProperty && proto.hasOwnProperty('addEventListener')) { + fill( + proto, + 'addEventListener', + function(orig) { + return function(evtName, fn, capture, secure) { + // preserve arity + try { + if (fn && fn.handleEvent) { + fn.handleEvent = self.wrap(fn.handleEvent); + } + } catch (err) { + // can sometimes get 'Permission denied to access property "handle Event' + } + + // More breadcrumb DOM capture ... done here and not in `_instrumentBreadcrumbs` + // so that we don't have more than one wrapper function + var before, clickHandler, keypressHandler; + + if ( + autoBreadcrumbs && + autoBreadcrumbs.dom && + (global === 'EventTarget' || global === 'Node') + ) { + // NOTE: generating multiple handlers per addEventListener invocation, should + // revisit and verify we can just use one (almost certainly) + clickHandler = self._breadcrumbEventHandler('click'); + keypressHandler = self._keypressEventHandler(); + before = function(evt) { + // need to intercept every DOM event in `before` argument, in case that + // same wrapped method is re-used for different events (e.g. mousemove THEN click) + // see #724 + if (!evt) return; + + var eventType; + try { + eventType = evt.type; + } catch (e) { + // just accessing event properties can throw an exception in some rare circumstances + // see: https://github.com/getsentry/raven-js/issues/838 + return; + } + if (eventType === 'click') return clickHandler(evt); + else if (eventType === 'keypress') return keypressHandler(evt); + }; + } + return orig.call( + this, + evtName, + self.wrap(fn, undefined, before), + capture, + secure + ); + }; + }, + wrappedBuiltIns + ); + fill( + proto, + 'removeEventListener', + function(orig) { + return function(evt, fn, capture, secure) { + try { + fn = fn && (fn.__raven_wrapper__ ? fn.__raven_wrapper__ : fn); + } catch (e) { + // ignore, accessing __raven_wrapper__ will throw in some Selenium environments + } + return orig.call(this, evt, fn, capture, secure); + }; + }, + wrappedBuiltIns + ); + } + } + + fill(_window, 'setTimeout', wrapTimeFn, wrappedBuiltIns); + fill(_window, 'setInterval', wrapTimeFn, wrappedBuiltIns); + if (_window.requestAnimationFrame) { + fill( + _window, + 'requestAnimationFrame', + function(orig) { + return function(cb) { + return orig(self.wrap(cb)); + }; + }, + wrappedBuiltIns + ); + } + + // event targets borrowed from bugsnag-js: + // https://github.com/bugsnag/bugsnag-js/blob/master/src/bugsnag.js#L666 + var eventTargets = [ + 'EventTarget', + 'Window', + 'Node', + 'ApplicationCache', + 'AudioTrackList', + 'ChannelMergerNode', + 'CryptoOperation', + 'EventSource', + 'FileReader', + 'HTMLUnknownElement', + 'IDBDatabase', + 'IDBRequest', + 'IDBTransaction', + 'KeyOperation', + 'MediaController', + 'MessagePort', + 'ModalWindow', + 'Notification', + 'SVGElementInstance', + 'Screen', + 'TextTrack', + 'TextTrackCue', + 'TextTrackList', + 'WebSocket', + 'WebSocketWorker', + 'Worker', + 'XMLHttpRequest', + 'XMLHttpRequestEventTarget', + 'XMLHttpRequestUpload' + ]; + for (var i = 0; i < eventTargets.length; i++) { + wrapEventTarget(eventTargets[i]); + } + }, + + /** + * Instrument browser built-ins w/ breadcrumb capturing + * - XMLHttpRequests + * - DOM interactions (click/typing) + * - window.location changes + * - console + * + * Can be disabled or individually configured via the `autoBreadcrumbs` config option + */ + _instrumentBreadcrumbs: function() { + var self = this; + var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; + + var wrappedBuiltIns = self._wrappedBuiltIns; + + function wrapProp(prop, xhr) { + if (prop in xhr && isFunction(xhr[prop])) { + fill(xhr, prop, function(orig) { + return self.wrap(orig); + }); // intentionally don't track filled methods on XHR instances + } + } + + if (autoBreadcrumbs.xhr && 'XMLHttpRequest' in _window) { + var xhrproto = _window.XMLHttpRequest && _window.XMLHttpRequest.prototype; + fill( + xhrproto, + 'open', + function(origOpen) { + return function(method, url) { + // preserve arity + + // if Sentry key appears in URL, don't capture + if (isString(url) && url.indexOf(self._globalKey) === -1) { + this.__raven_xhr = { + method: method, + url: url, + status_code: null + }; + } + + return origOpen.apply(this, arguments); + }; + }, + wrappedBuiltIns + ); + + fill( + xhrproto, + 'send', + function(origSend) { + return function() { + // preserve arity + var xhr = this; + + function onreadystatechangeHandler() { + if (xhr.__raven_xhr && xhr.readyState === 4) { + try { + // touching statusCode in some platforms throws + // an exception + xhr.__raven_xhr.status_code = xhr.status; + } catch (e) { + /* do nothing */ + } + + self.captureBreadcrumb({ + type: 'http', + category: 'xhr', + data: xhr.__raven_xhr + }); + } + } + + var props = ['onload', 'onerror', 'onprogress']; + for (var j = 0; j < props.length; j++) { + wrapProp(props[j], xhr); + } + + if ('onreadystatechange' in xhr && isFunction(xhr.onreadystatechange)) { + fill( + xhr, + 'onreadystatechange', + function(orig) { + return self.wrap(orig, undefined, onreadystatechangeHandler); + } /* intentionally don't track this instrumentation */ + ); + } else { + // if onreadystatechange wasn't actually set by the page on this xhr, we + // are free to set our own and capture the breadcrumb + xhr.onreadystatechange = onreadystatechangeHandler; + } + + return origSend.apply(this, arguments); + }; + }, + wrappedBuiltIns + ); + } + + if (autoBreadcrumbs.xhr && supportsFetch()) { + fill( + _window, + 'fetch', + function(origFetch) { + return function() { + // preserve arity + // Make a copy of the arguments to prevent deoptimization + // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments + var args = new Array(arguments.length); + for (var i = 0; i < args.length; ++i) { + args[i] = arguments[i]; + } + + var fetchInput = args[0]; + var method = 'GET'; + var url; + + if (typeof fetchInput === 'string') { + url = fetchInput; + } else if ('Request' in _window && fetchInput instanceof _window.Request) { + url = fetchInput.url; + if (fetchInput.method) { + method = fetchInput.method; + } + } else { + url = '' + fetchInput; + } + + // if Sentry key appears in URL, don't capture, as it's our own request + if (url.indexOf(self._globalKey) !== -1) { + return origFetch.apply(this, args); + } + + if (args[1] && args[1].method) { + method = args[1].method; + } + + var fetchData = { + method: method, + url: url, + status_code: null + }; + + return origFetch + .apply(this, args) + .then(function(response) { + fetchData.status_code = response.status; + + self.captureBreadcrumb({ + type: 'http', + category: 'fetch', + data: fetchData + }); + + return response; + }) + ['catch'](function(err) { + // if there is an error performing the request + self.captureBreadcrumb({ + type: 'http', + category: 'fetch', + data: fetchData, + level: 'error' + }); + + throw err; + }); + }; + }, + wrappedBuiltIns + ); + } + + // Capture breadcrumbs from any click that is unhandled / bubbled up all the way + // to the document. Do this before we instrument addEventListener. + if (autoBreadcrumbs.dom && this._hasDocument) { + if (_document.addEventListener) { + _document.addEventListener('click', self._breadcrumbEventHandler('click'), false); + _document.addEventListener('keypress', self._keypressEventHandler(), false); + } else if (_document.attachEvent) { + // IE8 Compatibility + _document.attachEvent('onclick', self._breadcrumbEventHandler('click')); + _document.attachEvent('onkeypress', self._keypressEventHandler()); + } + } + + // record navigation (URL) changes + // NOTE: in Chrome App environment, touching history.pushState, *even inside + // a try/catch block*, will cause Chrome to output an error to console.error + // borrowed from: https://github.com/angular/angular.js/pull/13945/files + var chrome = _window.chrome; + var isChromePackagedApp = chrome && chrome.app && chrome.app.runtime; + var hasPushAndReplaceState = + !isChromePackagedApp && + _window.history && + _window.history.pushState && + _window.history.replaceState; + if (autoBreadcrumbs.location && hasPushAndReplaceState) { + // TODO: remove onpopstate handler on uninstall() + var oldOnPopState = _window.onpopstate; + _window.onpopstate = function() { + var currentHref = self._location.href; + self._captureUrlChange(self._lastHref, currentHref); + + if (oldOnPopState) { + return oldOnPopState.apply(this, arguments); + } + }; + + var historyReplacementFunction = function(origHistFunction) { + // note history.pushState.length is 0; intentionally not declaring + // params to preserve 0 arity + return function(/* state, title, url */) { + var url = arguments.length > 2 ? arguments[2] : undefined; + + // url argument is optional + if (url) { + // coerce to string (this is what pushState does) + self._captureUrlChange(self._lastHref, url + ''); + } + + return origHistFunction.apply(this, arguments); + }; + }; + + fill(_window.history, 'pushState', historyReplacementFunction, wrappedBuiltIns); + fill(_window.history, 'replaceState', historyReplacementFunction, wrappedBuiltIns); + } + + if (autoBreadcrumbs.console && 'console' in _window && console.log) { + // console + var consoleMethodCallback = function(msg, data) { + self.captureBreadcrumb({ + message: msg, + level: data.level, + category: 'console' + }); + }; + + each(['debug', 'info', 'warn', 'error', 'log'], function(_, level) { + wrapConsoleMethod(console, level, consoleMethodCallback); + }); + } + }, + + _restoreBuiltIns: function() { + // restore any wrapped builtins + var builtin; + while (this._wrappedBuiltIns.length) { + builtin = this._wrappedBuiltIns.shift(); + + var obj = builtin[0], + name = builtin[1], + orig = builtin[2]; + + obj[name] = orig; + } + }, + + _restoreConsole: function() { + // eslint-disable-next-line guard-for-in + for (var method in this._originalConsoleMethods) { + this._originalConsole[method] = this._originalConsoleMethods[method]; + } + }, + + _drainPlugins: function() { + var self = this; + + // FIX ME TODO + each(this._plugins, function(_, plugin) { + var installer = plugin[0]; + var args = plugin[1]; + installer.apply(self, [self].concat(args)); + }); + }, + + _parseDSN: function(str) { + var m = dsnPattern.exec(str), + dsn = {}, + i = 7; + + try { + while (i--) dsn[dsnKeys[i]] = m[i] || ''; + } catch (e) { + throw new RavenConfigError('Invalid DSN: ' + str); + } + + if (dsn.pass && !this._globalOptions.allowSecretKey) { + throw new RavenConfigError( + 'Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key' + ); + } + + return dsn; + }, + + _getGlobalServer: function(uri) { + // assemble the endpoint from the uri pieces + var globalServer = '//' + uri.host + (uri.port ? ':' + uri.port : ''); + + if (uri.protocol) { + globalServer = uri.protocol + ':' + globalServer; + } + return globalServer; + }, + + _handleOnErrorStackInfo: function() { + // if we are intentionally ignoring errors via onerror, bail out + if (!this._ignoreOnError) { + this._handleStackInfo.apply(this, arguments); + } + }, + + _handleStackInfo: function(stackInfo, options) { + var frames = this._prepareFrames(stackInfo, options); + + this._triggerEvent('handle', { + stackInfo: stackInfo, + options: options + }); + + this._processException( + stackInfo.name, + stackInfo.message, + stackInfo.url, + stackInfo.lineno, + frames, + options + ); + }, + + _prepareFrames: function(stackInfo, options) { + var self = this; + var frames = []; + if (stackInfo.stack && stackInfo.stack.length) { + each(stackInfo.stack, function(i, stack) { + var frame = self._normalizeFrame(stack, stackInfo.url); + if (frame) { + frames.push(frame); + } + }); + + // e.g. frames captured via captureMessage throw + if (options && options.trimHeadFrames) { + for (var j = 0; j < options.trimHeadFrames && j < frames.length; j++) { + frames[j].in_app = false; + } + } + } + frames = frames.slice(0, this._globalOptions.stackTraceLimit); + return frames; + }, + + _normalizeFrame: function(frame, stackInfoUrl) { + // normalize the frames data + var normalized = { + filename: frame.url, + lineno: frame.line, + colno: frame.column, + function: frame.func || '?' + }; + + // Case when we don't have any information about the error + // E.g. throwing a string or raw object, instead of an `Error` in Firefox + // Generating synthetic error doesn't add any value here + // + // We should probably somehow let a user know that they should fix their code + if (!frame.url) { + normalized.filename = stackInfoUrl; // fallback to whole stacks url from onerror handler + } + + normalized.in_app = !// determine if an exception came from outside of our app + // first we check the global includePaths list. + ( + (!!this._globalOptions.includePaths.test && + !this._globalOptions.includePaths.test(normalized.filename)) || + // Now we check for fun, if the function name is Raven or TraceKit + /(Raven|TraceKit)\./.test(normalized['function']) || + // finally, we do a last ditch effort and check for raven.min.js + /raven\.(min\.)?js$/.test(normalized.filename) + ); + + return normalized; + }, + + _processException: function(type, message, fileurl, lineno, frames, options) { + var prefixedMessage = (type ? type + ': ' : '') + (message || ''); + if ( + !!this._globalOptions.ignoreErrors.test && + (this._globalOptions.ignoreErrors.test(message) || + this._globalOptions.ignoreErrors.test(prefixedMessage)) + ) { + return; + } + + var stacktrace; + + if (frames && frames.length) { + fileurl = frames[0].filename || fileurl; + // Sentry expects frames oldest to newest + // and JS sends them as newest to oldest + frames.reverse(); + stacktrace = {frames: frames}; + } else if (fileurl) { + stacktrace = { + frames: [ + { + filename: fileurl, + lineno: lineno, + in_app: true + } + ] + }; + } + + if ( + !!this._globalOptions.ignoreUrls.test && + this._globalOptions.ignoreUrls.test(fileurl) + ) { + return; + } + + if ( + !!this._globalOptions.whitelistUrls.test && + !this._globalOptions.whitelistUrls.test(fileurl) + ) { + return; + } + + var data = objectMerge( + { + // sentry.interfaces.Exception + exception: { + values: [ + { + type: type, + value: message, + stacktrace: stacktrace + } + ] + }, + transaction: fileurl + }, + options + ); + + // Fire away! + this._send(data); + }, + + _trimPacket: function(data) { + // For now, we only want to truncate the two different messages + // but this could/should be expanded to just trim everything + var max = this._globalOptions.maxMessageLength; + if (data.message) { + data.message = truncate(data.message, max); + } + if (data.exception) { + var exception = data.exception.values[0]; + exception.value = truncate(exception.value, max); + } + + var request = data.request; + if (request) { + if (request.url) { + request.url = truncate(request.url, this._globalOptions.maxUrlLength); + } + if (request.Referer) { + request.Referer = truncate(request.Referer, this._globalOptions.maxUrlLength); + } + } + + if (data.breadcrumbs && data.breadcrumbs.values) + this._trimBreadcrumbs(data.breadcrumbs); + + return data; + }, + + /** + * Truncate breadcrumb values (right now just URLs) + */ + _trimBreadcrumbs: function(breadcrumbs) { + // known breadcrumb properties with urls + // TODO: also consider arbitrary prop values that start with (https?)?:// + var urlProps = ['to', 'from', 'url'], + urlProp, + crumb, + data; + + for (var i = 0; i < breadcrumbs.values.length; ++i) { + crumb = breadcrumbs.values[i]; + if ( + !crumb.hasOwnProperty('data') || + !isObject(crumb.data) || + objectFrozen(crumb.data) + ) + continue; + + data = objectMerge({}, crumb.data); + for (var j = 0; j < urlProps.length; ++j) { + urlProp = urlProps[j]; + if (data.hasOwnProperty(urlProp) && data[urlProp]) { + data[urlProp] = truncate(data[urlProp], this._globalOptions.maxUrlLength); + } + } + breadcrumbs.values[i].data = data; + } + }, + + _getHttpData: function() { + if (!this._hasNavigator && !this._hasDocument) return; + var httpData = {}; + + if (this._hasNavigator && _navigator.userAgent) { + httpData.headers = { + 'User-Agent': _navigator.userAgent + }; + } + + // Check in `window` instead of `document`, as we may be in ServiceWorker environment + if (_window.location && _window.location.href) { + httpData.url = _window.location.href; + } + + if (this._hasDocument && _document.referrer) { + if (!httpData.headers) httpData.headers = {}; + httpData.headers.Referer = _document.referrer; + } + + return httpData; + }, + + _resetBackoff: function() { + this._backoffDuration = 0; + this._backoffStart = null; + }, + + _shouldBackoff: function() { + return this._backoffDuration && now() - this._backoffStart < this._backoffDuration; + }, + + /** + * Returns true if the in-process data payload matches the signature + * of the previously-sent data + * + * NOTE: This has to be done at this level because TraceKit can generate + * data from window.onerror WITHOUT an exception object (IE8, IE9, + * other old browsers). This can take the form of an "exception" + * data object with a single frame (derived from the onerror args). + */ + _isRepeatData: function(current) { + var last = this._lastData; + + if ( + !last || + current.message !== last.message || // defined for captureMessage + current.transaction !== last.transaction // defined for captureException/onerror + ) + return false; + + // Stacktrace interface (i.e. from captureMessage) + if (current.stacktrace || last.stacktrace) { + return isSameStacktrace(current.stacktrace, last.stacktrace); + } else if (current.exception || last.exception) { + // Exception interface (i.e. from captureException/onerror) + return isSameException(current.exception, last.exception); + } + + return true; + }, + + _setBackoffState: function(request) { + // If we are already in a backoff state, don't change anything + if (this._shouldBackoff()) { + return; + } + + var status = request.status; + + // 400 - project_id doesn't exist or some other fatal + // 401 - invalid/revoked dsn + // 429 - too many requests + if (!(status === 400 || status === 401 || status === 429)) return; + + var retry; + try { + // If Retry-After is not in Access-Control-Expose-Headers, most + // browsers will throw an exception trying to access it + if (supportsFetch()) { + retry = request.headers.get('Retry-After'); + } else { + retry = request.getResponseHeader('Retry-After'); + } + + // Retry-After is returned in seconds + retry = parseInt(retry, 10) * 1000; + } catch (e) { + /* eslint no-empty:0 */ + } + + this._backoffDuration = retry + ? // If Sentry server returned a Retry-After value, use it + retry + : // Otherwise, double the last backoff duration (starts at 1 sec) + this._backoffDuration * 2 || 1000; + + this._backoffStart = now(); + }, + + _send: function(data) { + var globalOptions = this._globalOptions; + + var baseData = { + project: this._globalProject, + logger: globalOptions.logger, + platform: 'javascript' + }, + httpData = this._getHttpData(); + + if (httpData) { + baseData.request = httpData; + } + + // HACK: delete `trimHeadFrames` to prevent from appearing in outbound payload + if (data.trimHeadFrames) delete data.trimHeadFrames; + + data = objectMerge(baseData, data); + + // Merge in the tags and extra separately since objectMerge doesn't handle a deep merge + data.tags = objectMerge(objectMerge({}, this._globalContext.tags), data.tags); + data.extra = objectMerge(objectMerge({}, this._globalContext.extra), data.extra); + + // Send along our own collected metadata with extra + data.extra['session:duration'] = now() - this._startTime; + + if (this._breadcrumbs && this._breadcrumbs.length > 0) { + // intentionally make shallow copy so that additions + // to breadcrumbs aren't accidentally sent in this request + data.breadcrumbs = { + values: [].slice.call(this._breadcrumbs, 0) + }; + } + + if (this._globalContext.user) { + // sentry.interfaces.User + data.user = this._globalContext.user; + } + + // Include the environment if it's defined in globalOptions + if (globalOptions.environment) data.environment = globalOptions.environment; + + // Include the release if it's defined in globalOptions + if (globalOptions.release) data.release = globalOptions.release; + + // Include server_name if it's defined in globalOptions + if (globalOptions.serverName) data.server_name = globalOptions.serverName; + + data = this._sanitizeData(data); + + // Cleanup empty properties before sending them to the server + Object.keys(data).forEach(function(key) { + if (data[key] == null || data[key] === '' || isEmptyObject(data[key])) { + delete data[key]; + } + }); + + if (isFunction(globalOptions.dataCallback)) { + data = globalOptions.dataCallback(data) || data; + } + + // Why?????????? + if (!data || isEmptyObject(data)) { + return; + } + + // Check if the request should be filtered or not + if ( + isFunction(globalOptions.shouldSendCallback) && + !globalOptions.shouldSendCallback(data) + ) { + return; + } + + // Backoff state: Sentry server previously responded w/ an error (e.g. 429 - too many requests), + // so drop requests until "cool-off" period has elapsed. + if (this._shouldBackoff()) { + this._logDebug('warn', 'Raven dropped error due to backoff: ', data); + return; + } + + if (typeof globalOptions.sampleRate === 'number') { + if (Math.random() < globalOptions.sampleRate) { + this._sendProcessedPayload(data); + } + } else { + this._sendProcessedPayload(data); + } + }, + + _sanitizeData: function(data) { + return sanitize(data, this._globalOptions.sanitizeKeys); + }, + + _getUuid: function() { + return uuid4(); + }, + + _sendProcessedPayload: function(data, callback) { + var self = this; + var globalOptions = this._globalOptions; + + if (!this.isSetup()) return; + + // Try and clean up the packet before sending by truncating long values + data = this._trimPacket(data); + + // ideally duplicate error testing should occur *before* dataCallback/shouldSendCallback, + // but this would require copying an un-truncated copy of the data packet, which can be + // arbitrarily deep (extra_data) -- could be worthwhile? will revisit + if (!this._globalOptions.allowDuplicates && this._isRepeatData(data)) { + this._logDebug('warn', 'Raven dropped repeat event: ', data); + return; + } + + // Send along an event_id if not explicitly passed. + // This event_id can be used to reference the error within Sentry itself. + // Set lastEventId after we know the error should actually be sent + this._lastEventId = data.event_id || (data.event_id = this._getUuid()); + + // Store outbound payload after trim + this._lastData = data; + + this._logDebug('debug', 'Raven about to send:', data); + + var auth = { + sentry_version: '7', + sentry_client: 'raven-js/' + this.VERSION, + sentry_key: this._globalKey + }; + + if (this._globalSecret) { + auth.sentry_secret = this._globalSecret; + } + + var exception = data.exception && data.exception.values[0]; + + // only capture 'sentry' breadcrumb is autoBreadcrumbs is truthy + if ( + this._globalOptions.autoBreadcrumbs && + this._globalOptions.autoBreadcrumbs.sentry + ) { + this.captureBreadcrumb({ + category: 'sentry', + message: exception + ? (exception.type ? exception.type + ': ' : '') + exception.value + : data.message, + event_id: data.event_id, + level: data.level || 'error' // presume error unless specified + }); + } + + var url = this._globalEndpoint; + (globalOptions.transport || this._makeRequest).call(this, { + url: url, + auth: auth, + data: data, + options: globalOptions, + onSuccess: function success() { + self._resetBackoff(); + + self._triggerEvent('success', { + data: data, + src: url + }); + callback && callback(); + }, + onError: function failure(error) { + self._logDebug('error', 'Raven transport failed to send: ', error); + + if (error.request) { + self._setBackoffState(error.request); + } + + self._triggerEvent('failure', { + data: data, + src: url + }); + error = error || new Error('Raven send failed (no additional details provided)'); + callback && callback(error); + } + }); + }, + + _makeRequest: function(opts) { + // Auth is intentionally sent as part of query string (NOT as custom HTTP header) to avoid preflight CORS requests + var url = opts.url + '?' + urlencode(opts.auth); + + var evaluatedHeaders = null; + var evaluatedFetchParameters = {}; + + if (opts.options.headers) { + evaluatedHeaders = this._evaluateHash(opts.options.headers); + } + + if (opts.options.fetchParameters) { + evaluatedFetchParameters = this._evaluateHash(opts.options.fetchParameters); + } + + if (supportsFetch()) { + evaluatedFetchParameters.body = stringify(opts.data); + + var defaultFetchOptions = objectMerge({}, this._fetchDefaults); + var fetchOptions = objectMerge(defaultFetchOptions, evaluatedFetchParameters); + + if (evaluatedHeaders) { + fetchOptions.headers = evaluatedHeaders; + } + + return _window + .fetch(url, fetchOptions) + .then(function(response) { + if (response.ok) { + opts.onSuccess && opts.onSuccess(); + } else { + var error = new Error('Sentry error code: ' + response.status); + // It's called request only to keep compatibility with XHR interface + // and not add more redundant checks in setBackoffState method + error.request = response; + opts.onError && opts.onError(error); + } + }) + ['catch'](function() { + opts.onError && + opts.onError(new Error('Sentry error code: network unavailable')); + }); + } + + var request = _window.XMLHttpRequest && new _window.XMLHttpRequest(); + if (!request) return; + + // if browser doesn't support CORS (e.g. IE7), we are out of luck + var hasCORS = 'withCredentials' in request || typeof XDomainRequest !== 'undefined'; + + if (!hasCORS) return; + + if ('withCredentials' in request) { + request.onreadystatechange = function() { + if (request.readyState !== 4) { + return; + } else if (request.status === 200) { + opts.onSuccess && opts.onSuccess(); + } else if (opts.onError) { + var err = new Error('Sentry error code: ' + request.status); + err.request = request; + opts.onError(err); + } + }; + } else { + request = new XDomainRequest(); + // xdomainrequest cannot go http -> https (or vice versa), + // so always use protocol relative + url = url.replace(/^https?:/, ''); + + // onreadystatechange not supported by XDomainRequest + if (opts.onSuccess) { + request.onload = opts.onSuccess; + } + if (opts.onError) { + request.onerror = function() { + var err = new Error('Sentry error code: XDomainRequest'); + err.request = request; + opts.onError(err); + }; + } + } + + request.open('POST', url); + + if (evaluatedHeaders) { + each(evaluatedHeaders, function(key, value) { + request.setRequestHeader(key, value); + }); + } + + request.send(stringify(opts.data)); + }, + + _evaluateHash: function(hash) { + var evaluated = {}; + + for (var key in hash) { + if (hash.hasOwnProperty(key)) { + var value = hash[key]; + evaluated[key] = typeof value === 'function' ? value() : value; + } + } + + return evaluated; + }, + + _logDebug: function(level) { + // We allow `Raven.debug` and `Raven.config(DSN, { debug: true })` to not make backward incompatible API change + if ( + this._originalConsoleMethods[level] && + (this.debug || this._globalOptions.debug) + ) { + // In IE<10 console methods do not have their own 'apply' method + Function.prototype.apply.call( + this._originalConsoleMethods[level], + this._originalConsole, + [].slice.call(arguments, 1) + ); + } + }, + + _mergeContext: function(key, context) { + if (isUndefined(context)) { + delete this._globalContext[key]; + } else { + this._globalContext[key] = objectMerge(this._globalContext[key] || {}, context); + } + } +}; + +// Deprecations +Raven.prototype.setUser = Raven.prototype.setUserContext; +Raven.prototype.setReleaseContext = Raven.prototype.setRelease; + +module.exports = Raven; + +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"10":10,"11":11,"4":4,"5":5,"8":8,"9":9}],7:[function(_dereq_,module,exports){ +(function (global){ +/** + * Enforces a single instance of the Raven client, and the + * main entry point for Raven. If you are a consumer of the + * Raven library, you SHOULD load this file (vs raven.js). + **/ + +var RavenConstructor = _dereq_(6); + +// This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) +var _window = + typeof window !== 'undefined' + ? window + : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; +var _Raven = _window.Raven; + +var Raven = new RavenConstructor(); + +/* + * Allow multiple versions of Raven to be installed. + * Strip Raven from the global context and returns the instance. + * + * @return {Raven} + */ +Raven.noConflict = function() { + _window.Raven = _Raven; + return Raven; +}; + +Raven.afterLoad(); + +module.exports = Raven; + +/** + * DISCLAIMER: + * + * Expose `Client` constructor for cases where user want to track multiple "sub-applications" in one larger app. + * It's not meant to be used by a wide audience, so pleaaase make sure that you know what you're doing before using it. + * Accidentally calling `install` multiple times, may result in an unexpected behavior that's very hard to debug. + * + * It's called `Client' to be in-line with Raven Node implementation. + * + * HOWTO: + * + * import Raven from 'raven-js'; + * + * const someAppReporter = new Raven.Client(); + * const someOtherAppReporter = new Raven.Client(); + * + * someAppReporter.config('__DSN__', { + * ...config goes here + * }); + * + * someOtherAppReporter.config('__OTHER_DSN__', { + * ...config goes here + * }); + * + * someAppReporter.captureMessage(...); + * someAppReporter.captureException(...); + * someAppReporter.captureBreadcrumb(...); + * + * someOtherAppReporter.captureMessage(...); + * someOtherAppReporter.captureException(...); + * someOtherAppReporter.captureBreadcrumb(...); + * + * It should "just work". + */ +module.exports.Client = RavenConstructor; + +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"6":6}],8:[function(_dereq_,module,exports){ +(function (global){ +var stringify = _dereq_(10); + +var _window = + typeof window !== 'undefined' + ? window + : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; + +function isObject(what) { + return typeof what === 'object' && what !== null; +} + +// Yanked from https://git.io/vS8DV re-used under CC0 +// with some tiny modifications +function isError(value) { + switch (Object.prototype.toString.call(value)) { + case '[object Error]': + return true; + case '[object Exception]': + return true; + case '[object DOMException]': + return true; + default: + return value instanceof Error; + } +} + +function isErrorEvent(value) { + return Object.prototype.toString.call(value) === '[object ErrorEvent]'; +} + +function isDOMError(value) { + return Object.prototype.toString.call(value) === '[object DOMError]'; +} + +function isDOMException(value) { + return Object.prototype.toString.call(value) === '[object DOMException]'; +} + +function isUndefined(what) { + return what === void 0; +} + +function isFunction(what) { + return typeof what === 'function'; +} + +function isPlainObject(what) { + return Object.prototype.toString.call(what) === '[object Object]'; +} + +function isString(what) { + return Object.prototype.toString.call(what) === '[object String]'; +} + +function isArray(what) { + return Object.prototype.toString.call(what) === '[object Array]'; +} + +function isEmptyObject(what) { + if (!isPlainObject(what)) return false; + + for (var _ in what) { + if (what.hasOwnProperty(_)) { + return false; + } + } + return true; +} + +function supportsErrorEvent() { + try { + new ErrorEvent(''); // eslint-disable-line no-new + return true; + } catch (e) { + return false; + } +} + +function supportsDOMError() { + try { + new DOMError(''); // eslint-disable-line no-new + return true; + } catch (e) { + return false; + } +} + +function supportsDOMException() { + try { + new DOMException(''); // eslint-disable-line no-new + return true; + } catch (e) { + return false; + } +} + +function supportsFetch() { + if (!('fetch' in _window)) return false; + + try { + new Headers(); // eslint-disable-line no-new + new Request(''); // eslint-disable-line no-new + new Response(); // eslint-disable-line no-new + return true; + } catch (e) { + return false; + } +} + +// Despite all stars in the sky saying that Edge supports old draft syntax, aka 'never', 'always', 'origin' and 'default +// https://caniuse.com/#feat=referrer-policy +// It doesn't. And it throw exception instead of ignoring this parameter... +// REF: https://github.com/getsentry/raven-js/issues/1233 +function supportsReferrerPolicy() { + if (!supportsFetch()) return false; + + try { + // eslint-disable-next-line no-new + new Request('pickleRick', { + referrerPolicy: 'origin' + }); + return true; + } catch (e) { + return false; + } +} + +function supportsPromiseRejectionEvent() { + return typeof PromiseRejectionEvent === 'function'; +} + +function wrappedCallback(callback) { + function dataCallback(data, original) { + var normalizedData = callback(data) || data; + if (original) { + return original(normalizedData) || normalizedData; + } + return normalizedData; + } + + return dataCallback; +} + +function each(obj, callback) { + var i, j; + + if (isUndefined(obj.length)) { + for (i in obj) { + if (hasKey(obj, i)) { + callback.call(null, i, obj[i]); + } + } + } else { + j = obj.length; + if (j) { + for (i = 0; i < j; i++) { + callback.call(null, i, obj[i]); + } + } + } +} + +function objectMerge(obj1, obj2) { + if (!obj2) { + return obj1; + } + each(obj2, function(key, value) { + obj1[key] = value; + }); + return obj1; +} + +/** + * This function is only used for react-native. + * react-native freezes object that have already been sent over the + * js bridge. We need this function in order to check if the object is frozen. + * So it's ok that objectFrozen returns false if Object.isFrozen is not + * supported because it's not relevant for other "platforms". See related issue: + * https://github.com/getsentry/react-native-sentry/issues/57 + */ +function objectFrozen(obj) { + if (!Object.isFrozen) { + return false; + } + return Object.isFrozen(obj); +} + +function truncate(str, max) { + if (typeof max !== 'number') { + throw new Error('2nd argument to `truncate` function should be a number'); + } + if (typeof str !== 'string' || max === 0) { + return str; + } + return str.length <= max ? str : str.substr(0, max) + '\u2026'; +} + +/** + * hasKey, a better form of hasOwnProperty + * Example: hasKey(MainHostObject, property) === true/false + * + * @param {Object} host object to check property + * @param {string} key to check + */ +function hasKey(object, key) { + return Object.prototype.hasOwnProperty.call(object, key); +} + +function joinRegExp(patterns) { + // Combine an array of regular expressions and strings into one large regexp + // Be mad. + var sources = [], + i = 0, + len = patterns.length, + pattern; + + for (; i < len; i++) { + pattern = patterns[i]; + if (isString(pattern)) { + // If it's a string, we need to escape it + // Taken from: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions + sources.push(pattern.replace(/([.*+?^=!:${}()|\[\]\/\\])/g, '\\$1')); + } else if (pattern && pattern.source) { + // If it's a regexp already, we want to extract the source + sources.push(pattern.source); + } + // Intentionally skip other cases + } + return new RegExp(sources.join('|'), 'i'); +} + +function urlencode(o) { + var pairs = []; + each(o, function(key, value) { + pairs.push(encodeURIComponent(key) + '=' + encodeURIComponent(value)); + }); + return pairs.join('&'); +} + +// borrowed from https://tools.ietf.org/html/rfc3986#appendix-B +// intentionally using regex and not href parsing trick because React Native and other +// environments where DOM might not be available +function parseUrl(url) { + if (typeof url !== 'string') return {}; + var match = url.match(/^(([^:\/?#]+):)?(\/\/([^\/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?$/); + + // coerce to undefined values to empty string so we don't get 'undefined' + var query = match[6] || ''; + var fragment = match[8] || ''; + return { + protocol: match[2], + host: match[4], + path: match[5], + relative: match[5] + query + fragment // everything minus origin + }; +} +function uuid4() { + var crypto = _window.crypto || _window.msCrypto; + + if (!isUndefined(crypto) && crypto.getRandomValues) { + // Use window.crypto API if available + // eslint-disable-next-line no-undef + var arr = new Uint16Array(8); + crypto.getRandomValues(arr); + + // set 4 in byte 7 + arr[3] = (arr[3] & 0xfff) | 0x4000; + // set 2 most significant bits of byte 9 to '10' + arr[4] = (arr[4] & 0x3fff) | 0x8000; + + var pad = function(num) { + var v = num.toString(16); + while (v.length < 4) { + v = '0' + v; + } + return v; + }; + + return ( + pad(arr[0]) + + pad(arr[1]) + + pad(arr[2]) + + pad(arr[3]) + + pad(arr[4]) + + pad(arr[5]) + + pad(arr[6]) + + pad(arr[7]) + ); + } else { + // http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/2117523#2117523 + return 'xxxxxxxxxxxx4xxxyxxxxxxxxxxxxxxx'.replace(/[xy]/g, function(c) { + var r = (Math.random() * 16) | 0, + v = c === 'x' ? r : (r & 0x3) | 0x8; + return v.toString(16); + }); + } +} + +/** + * Given a child DOM element, returns a query-selector statement describing that + * and its ancestors + * e.g. [HTMLElement] => body > div > input#foo.btn[name=baz] + * @param elem + * @returns {string} + */ +function htmlTreeAsString(elem) { + /* eslint no-extra-parens:0*/ + var MAX_TRAVERSE_HEIGHT = 5, + MAX_OUTPUT_LEN = 80, + out = [], + height = 0, + len = 0, + separator = ' > ', + sepLength = separator.length, + nextStr; + + while (elem && height++ < MAX_TRAVERSE_HEIGHT) { + nextStr = htmlElementAsString(elem); + // bail out if + // - nextStr is the 'html' element + // - the length of the string that would be created exceeds MAX_OUTPUT_LEN + // (ignore this limit if we are on the first iteration) + if ( + nextStr === 'html' || + (height > 1 && len + out.length * sepLength + nextStr.length >= MAX_OUTPUT_LEN) + ) { + break; + } + + out.push(nextStr); + + len += nextStr.length; + elem = elem.parentNode; + } + + return out.reverse().join(separator); +} + +/** + * Returns a simple, query-selector representation of a DOM element + * e.g. [HTMLElement] => input#foo.btn[name=baz] + * @param HTMLElement + * @returns {string} + */ +function htmlElementAsString(elem) { + var out = [], + className, + classes, + key, + attr, + i; + + if (!elem || !elem.tagName) { + return ''; + } + + out.push(elem.tagName.toLowerCase()); + if (elem.id) { + out.push('#' + elem.id); + } + + className = elem.className; + if (className && isString(className)) { + classes = className.split(/\s+/); + for (i = 0; i < classes.length; i++) { + out.push('.' + classes[i]); + } + } + var attrWhitelist = ['type', 'name', 'title', 'alt']; + for (i = 0; i < attrWhitelist.length; i++) { + key = attrWhitelist[i]; + attr = elem.getAttribute(key); + if (attr) { + out.push('[' + key + '="' + attr + '"]'); + } + } + return out.join(''); +} + +/** + * Returns true if either a OR b is truthy, but not both + */ +function isOnlyOneTruthy(a, b) { + return !!(!!a ^ !!b); +} + +/** + * Returns true if both parameters are undefined + */ +function isBothUndefined(a, b) { + return isUndefined(a) && isUndefined(b); +} + +/** + * Returns true if the two input exception interfaces have the same content + */ +function isSameException(ex1, ex2) { + if (isOnlyOneTruthy(ex1, ex2)) return false; + + ex1 = ex1.values[0]; + ex2 = ex2.values[0]; + + if (ex1.type !== ex2.type || ex1.value !== ex2.value) return false; + + // in case both stacktraces are undefined, we can't decide so default to false + if (isBothUndefined(ex1.stacktrace, ex2.stacktrace)) return false; + + return isSameStacktrace(ex1.stacktrace, ex2.stacktrace); +} + +/** + * Returns true if the two input stack trace interfaces have the same content + */ +function isSameStacktrace(stack1, stack2) { + if (isOnlyOneTruthy(stack1, stack2)) return false; + + var frames1 = stack1.frames; + var frames2 = stack2.frames; + + // Exit early if frame count differs + if (frames1.length !== frames2.length) return false; + + // Iterate through every frame; bail out if anything differs + var a, b; + for (var i = 0; i < frames1.length; i++) { + a = frames1[i]; + b = frames2[i]; + if ( + a.filename !== b.filename || + a.lineno !== b.lineno || + a.colno !== b.colno || + a['function'] !== b['function'] + ) + return false; + } + return true; +} + +/** + * Polyfill a method + * @param obj object e.g. `document` + * @param name method name present on object e.g. `addEventListener` + * @param replacement replacement function + * @param track {optional} record instrumentation to an array + */ +function fill(obj, name, replacement, track) { + if (obj == null) return; + var orig = obj[name]; + obj[name] = replacement(orig); + obj[name].__raven__ = true; + obj[name].__orig__ = orig; + if (track) { + track.push([obj, name, orig]); + } +} + +/** + * Join values in array + * @param input array of values to be joined together + * @param delimiter string to be placed in-between values + * @returns {string} + */ +function safeJoin(input, delimiter) { + if (!isArray(input)) return ''; + + var output = []; + + for (var i = 0; i < input.length; i++) { + try { + output.push(String(input[i])); + } catch (e) { + output.push('[value cannot be serialized]'); + } + } + + return output.join(delimiter); +} + +// Default Node.js REPL depth +var MAX_SERIALIZE_EXCEPTION_DEPTH = 3; +// 50kB, as 100kB is max payload size, so half sounds reasonable +var MAX_SERIALIZE_EXCEPTION_SIZE = 50 * 1024; +var MAX_SERIALIZE_KEYS_LENGTH = 40; + +function utf8Length(value) { + return ~-encodeURI(value).split(/%..|./).length; +} + +function jsonSize(value) { + return utf8Length(JSON.stringify(value)); +} + +function serializeValue(value) { + if (typeof value === 'string') { + var maxLength = 40; + return truncate(value, maxLength); + } else if ( + typeof value === 'number' || + typeof value === 'boolean' || + typeof value === 'undefined' + ) { + return value; + } + + var type = Object.prototype.toString.call(value); + + // Node.js REPL notation + if (type === '[object Object]') return '[Object]'; + if (type === '[object Array]') return '[Array]'; + if (type === '[object Function]') + return value.name ? '[Function: ' + value.name + ']' : '[Function]'; + + return value; +} + +function serializeObject(value, depth) { + if (depth === 0) return serializeValue(value); + + if (isPlainObject(value)) { + return Object.keys(value).reduce(function(acc, key) { + acc[key] = serializeObject(value[key], depth - 1); + return acc; + }, {}); + } else if (Array.isArray(value)) { + return value.map(function(val) { + return serializeObject(val, depth - 1); + }); + } + + return serializeValue(value); +} + +function serializeException(ex, depth, maxSize) { + if (!isPlainObject(ex)) return ex; + + depth = typeof depth !== 'number' ? MAX_SERIALIZE_EXCEPTION_DEPTH : depth; + maxSize = typeof depth !== 'number' ? MAX_SERIALIZE_EXCEPTION_SIZE : maxSize; + + var serialized = serializeObject(ex, depth); + + if (jsonSize(stringify(serialized)) > maxSize) { + return serializeException(ex, depth - 1); + } + + return serialized; +} + +function serializeKeysForMessage(keys, maxLength) { + if (typeof keys === 'number' || typeof keys === 'string') return keys.toString(); + if (!Array.isArray(keys)) return ''; + + keys = keys.filter(function(key) { + return typeof key === 'string'; + }); + if (keys.length === 0) return '[object has no keys]'; + + maxLength = typeof maxLength !== 'number' ? MAX_SERIALIZE_KEYS_LENGTH : maxLength; + if (keys[0].length >= maxLength) return keys[0]; + + for (var usedKeys = keys.length; usedKeys > 0; usedKeys--) { + var serialized = keys.slice(0, usedKeys).join(', '); + if (serialized.length > maxLength) continue; + if (usedKeys === keys.length) return serialized; + return serialized + '\u2026'; + } + + return ''; +} + +function sanitize(input, sanitizeKeys) { + if (!isArray(sanitizeKeys) || (isArray(sanitizeKeys) && sanitizeKeys.length === 0)) + return input; + + var sanitizeRegExp = joinRegExp(sanitizeKeys); + var sanitizeMask = '********'; + var safeInput; + + try { + safeInput = JSON.parse(stringify(input)); + } catch (o_O) { + return input; + } + + function sanitizeWorker(workerInput) { + if (isArray(workerInput)) { + return workerInput.map(function(val) { + return sanitizeWorker(val); + }); + } + + if (isPlainObject(workerInput)) { + return Object.keys(workerInput).reduce(function(acc, k) { + if (sanitizeRegExp.test(k)) { + acc[k] = sanitizeMask; + } else { + acc[k] = sanitizeWorker(workerInput[k]); + } + return acc; + }, {}); + } + + return workerInput; + } + + return sanitizeWorker(safeInput); +} + +module.exports = { + isObject: isObject, + isError: isError, + isErrorEvent: isErrorEvent, + isDOMError: isDOMError, + isDOMException: isDOMException, + isUndefined: isUndefined, + isFunction: isFunction, + isPlainObject: isPlainObject, + isString: isString, + isArray: isArray, + isEmptyObject: isEmptyObject, + supportsErrorEvent: supportsErrorEvent, + supportsDOMError: supportsDOMError, + supportsDOMException: supportsDOMException, + supportsFetch: supportsFetch, + supportsReferrerPolicy: supportsReferrerPolicy, + supportsPromiseRejectionEvent: supportsPromiseRejectionEvent, + wrappedCallback: wrappedCallback, + each: each, + objectMerge: objectMerge, + truncate: truncate, + objectFrozen: objectFrozen, + hasKey: hasKey, + joinRegExp: joinRegExp, + urlencode: urlencode, + uuid4: uuid4, + htmlTreeAsString: htmlTreeAsString, + htmlElementAsString: htmlElementAsString, + isSameException: isSameException, + isSameStacktrace: isSameStacktrace, + parseUrl: parseUrl, + fill: fill, + safeJoin: safeJoin, + serializeException: serializeException, + serializeKeysForMessage: serializeKeysForMessage, + sanitize: sanitize +}; + +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"10":10}],9:[function(_dereq_,module,exports){ +(function (global){ +var utils = _dereq_(8); + +/* + TraceKit - Cross brower stack traces + + This was originally forked from github.com/occ/TraceKit, but has since been + largely re-written and is now maintained as part of raven-js. Tests for + this are in test/vendor. + + MIT license +*/ + +var TraceKit = { + collectWindowErrors: true, + debug: false +}; + +// This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) +var _window = + typeof window !== 'undefined' + ? window + : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; + +// global reference to slice +var _slice = [].slice; +var UNKNOWN_FUNCTION = '?'; + +// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error#Error_types +var ERROR_TYPES_RE = /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/; + +function getLocationHref() { + if (typeof document === 'undefined' || document.location == null) return ''; + return document.location.href; +} + +function getLocationOrigin() { + if (typeof document === 'undefined' || document.location == null) return ''; + + // Oh dear IE10... + if (!document.location.origin) { + document.location.origin = + document.location.protocol + + '//' + + document.location.hostname + + (document.location.port ? ':' + document.location.port : ''); + } + + return document.location.origin; +} + +/** + * TraceKit.report: cross-browser processing of unhandled exceptions + * + * Syntax: + * TraceKit.report.subscribe(function(stackInfo) { ... }) + * TraceKit.report.unsubscribe(function(stackInfo) { ... }) + * TraceKit.report(exception) + * try { ...code... } catch(ex) { TraceKit.report(ex); } + * + * Supports: + * - Firefox: full stack trace with line numbers, plus column number + * on top frame; column number is not guaranteed + * - Opera: full stack trace with line and column numbers + * - Chrome: full stack trace with line and column numbers + * - Safari: line and column number for the top frame only; some frames + * may be missing, and column number is not guaranteed + * - IE: line and column number for the top frame only; some frames + * may be missing, and column number is not guaranteed + * + * In theory, TraceKit should work on all of the following versions: + * - IE5.5+ (only 8.0 tested) + * - Firefox 0.9+ (only 3.5+ tested) + * - Opera 7+ (only 10.50 tested; versions 9 and earlier may require + * Exceptions Have Stacktrace to be enabled in opera:config) + * - Safari 3+ (only 4+ tested) + * - Chrome 1+ (only 5+ tested) + * - Konqueror 3.5+ (untested) + * + * Requires TraceKit.computeStackTrace. + * + * Tries to catch all unhandled exceptions and report them to the + * subscribed handlers. Please note that TraceKit.report will rethrow the + * exception. This is REQUIRED in order to get a useful stack trace in IE. + * If the exception does not reach the top of the browser, you will only + * get a stack trace from the point where TraceKit.report was called. + * + * Handlers receive a stackInfo object as described in the + * TraceKit.computeStackTrace docs. + */ +TraceKit.report = (function reportModuleWrapper() { + var handlers = [], + lastArgs = null, + lastException = null, + lastExceptionStack = null; + + /** + * Add a crash handler. + * @param {Function} handler + */ + function subscribe(handler) { + installGlobalHandler(); + handlers.push(handler); + } + + /** + * Remove a crash handler. + * @param {Function} handler + */ + function unsubscribe(handler) { + for (var i = handlers.length - 1; i >= 0; --i) { + if (handlers[i] === handler) { + handlers.splice(i, 1); + } + } + } + + /** + * Remove all crash handlers. + */ + function unsubscribeAll() { + uninstallGlobalHandler(); + handlers = []; + } + + /** + * Dispatch stack information to all handlers. + * @param {Object.} stack + */ + function notifyHandlers(stack, isWindowError) { + var exception = null; + if (isWindowError && !TraceKit.collectWindowErrors) { + return; + } + for (var i in handlers) { + if (handlers.hasOwnProperty(i)) { + try { + handlers[i].apply(null, [stack].concat(_slice.call(arguments, 2))); + } catch (inner) { + exception = inner; + } + } + } + + if (exception) { + throw exception; + } + } + + var _oldOnerrorHandler, _onErrorHandlerInstalled; + + /** + * Ensures all global unhandled exceptions are recorded. + * Supported by Gecko and IE. + * @param {string} msg Error message. + * @param {string} url URL of script that generated the exception. + * @param {(number|string)} lineNo The line number at which the error + * occurred. + * @param {?(number|string)} colNo The column number at which the error + * occurred. + * @param {?Error} ex The actual Error object. + */ + function traceKitWindowOnError(msg, url, lineNo, colNo, ex) { + var stack = null; + // If 'ex' is ErrorEvent, get real Error from inside + var exception = utils.isErrorEvent(ex) ? ex.error : ex; + // If 'msg' is ErrorEvent, get real message from inside + var message = utils.isErrorEvent(msg) ? msg.message : msg; + + if (lastExceptionStack) { + TraceKit.computeStackTrace.augmentStackTraceWithInitialElement( + lastExceptionStack, + url, + lineNo, + message + ); + processLastException(); + } else if (exception && utils.isError(exception)) { + // non-string `exception` arg; attempt to extract stack trace + + // New chrome and blink send along a real error object + // Let's just report that like a normal error. + // See: https://mikewest.org/2013/08/debugging-runtime-errors-with-window-onerror + stack = TraceKit.computeStackTrace(exception); + notifyHandlers(stack, true); + } else { + var location = { + url: url, + line: lineNo, + column: colNo + }; + + var name = undefined; + var groups; + + if ({}.toString.call(message) === '[object String]') { + var groups = message.match(ERROR_TYPES_RE); + if (groups) { + name = groups[1]; + message = groups[2]; + } + } + + location.func = UNKNOWN_FUNCTION; + + stack = { + name: name, + message: message, + url: getLocationHref(), + stack: [location] + }; + notifyHandlers(stack, true); + } + + if (_oldOnerrorHandler) { + return _oldOnerrorHandler.apply(this, arguments); + } + + return false; + } + + function installGlobalHandler() { + if (_onErrorHandlerInstalled) { + return; + } + _oldOnerrorHandler = _window.onerror; + _window.onerror = traceKitWindowOnError; + _onErrorHandlerInstalled = true; + } + + function uninstallGlobalHandler() { + if (!_onErrorHandlerInstalled) { + return; + } + _window.onerror = _oldOnerrorHandler; + _onErrorHandlerInstalled = false; + _oldOnerrorHandler = undefined; + } + + function processLastException() { + var _lastExceptionStack = lastExceptionStack, + _lastArgs = lastArgs; + lastArgs = null; + lastExceptionStack = null; + lastException = null; + notifyHandlers.apply(null, [_lastExceptionStack, false].concat(_lastArgs)); + } + + /** + * Reports an unhandled Error to TraceKit. + * @param {Error} ex + * @param {?boolean} rethrow If false, do not re-throw the exception. + * Only used for window.onerror to not cause an infinite loop of + * rethrowing. + */ + function report(ex, rethrow) { + var args = _slice.call(arguments, 1); + if (lastExceptionStack) { + if (lastException === ex) { + return; // already caught by an inner catch block, ignore + } else { + processLastException(); + } + } + + var stack = TraceKit.computeStackTrace(ex); + lastExceptionStack = stack; + lastException = ex; + lastArgs = args; + + // If the stack trace is incomplete, wait for 2 seconds for + // slow slow IE to see if onerror occurs or not before reporting + // this exception; otherwise, we will end up with an incomplete + // stack trace + setTimeout(function() { + if (lastException === ex) { + processLastException(); + } + }, stack.incomplete ? 2000 : 0); + + if (rethrow !== false) { + throw ex; // re-throw to propagate to the top level (and cause window.onerror) + } + } + + report.subscribe = subscribe; + report.unsubscribe = unsubscribe; + report.uninstall = unsubscribeAll; + return report; +})(); + +/** + * TraceKit.computeStackTrace: cross-browser stack traces in JavaScript + * + * Syntax: + * s = TraceKit.computeStackTrace(exception) // consider using TraceKit.report instead (see below) + * Returns: + * s.name - exception name + * s.message - exception message + * s.stack[i].url - JavaScript or HTML file URL + * s.stack[i].func - function name, or empty for anonymous functions (if guessing did not work) + * s.stack[i].args - arguments passed to the function, if known + * s.stack[i].line - line number, if known + * s.stack[i].column - column number, if known + * + * Supports: + * - Firefox: full stack trace with line numbers and unreliable column + * number on top frame + * - Opera 10: full stack trace with line and column numbers + * - Opera 9-: full stack trace with line numbers + * - Chrome: full stack trace with line and column numbers + * - Safari: line and column number for the topmost stacktrace element + * only + * - IE: no line numbers whatsoever + * + * Tries to guess names of anonymous functions by looking for assignments + * in the source code. In IE and Safari, we have to guess source file names + * by searching for function bodies inside all page scripts. This will not + * work for scripts that are loaded cross-domain. + * Here be dragons: some function names may be guessed incorrectly, and + * duplicate functions may be mismatched. + * + * TraceKit.computeStackTrace should only be used for tracing purposes. + * Logging of unhandled exceptions should be done with TraceKit.report, + * which builds on top of TraceKit.computeStackTrace and provides better + * IE support by utilizing the window.onerror event to retrieve information + * about the top of the stack. + * + * Note: In IE and Safari, no stack trace is recorded on the Error object, + * so computeStackTrace instead walks its *own* chain of callers. + * This means that: + * * in Safari, some methods may be missing from the stack trace; + * * in IE, the topmost function in the stack trace will always be the + * caller of computeStackTrace. + * + * This is okay for tracing (because you are likely to be calling + * computeStackTrace from the function you want to be the topmost element + * of the stack trace anyway), but not okay for logging unhandled + * exceptions (because your catch block will likely be far away from the + * inner function that actually caused the exception). + * + */ +TraceKit.computeStackTrace = (function computeStackTraceWrapper() { + // Contents of Exception in various browsers. + // + // SAFARI: + // ex.message = Can't find variable: qq + // ex.line = 59 + // ex.sourceId = 580238192 + // ex.sourceURL = http://... + // ex.expressionBeginOffset = 96 + // ex.expressionCaretOffset = 98 + // ex.expressionEndOffset = 98 + // ex.name = ReferenceError + // + // FIREFOX: + // ex.message = qq is not defined + // ex.fileName = http://... + // ex.lineNumber = 59 + // ex.columnNumber = 69 + // ex.stack = ...stack trace... (see the example below) + // ex.name = ReferenceError + // + // CHROME: + // ex.message = qq is not defined + // ex.name = ReferenceError + // ex.type = not_defined + // ex.arguments = ['aa'] + // ex.stack = ...stack trace... + // + // INTERNET EXPLORER: + // ex.message = ... + // ex.name = ReferenceError + // + // OPERA: + // ex.message = ...message... (see the example below) + // ex.name = ReferenceError + // ex.opera#sourceloc = 11 (pretty much useless, duplicates the info in ex.message) + // ex.stacktrace = n/a; see 'opera:config#UserPrefs|Exceptions Have Stacktrace' + + /** + * Computes stack trace information from the stack property. + * Chrome and Gecko use this property. + * @param {Error} ex + * @return {?Object.} Stack trace information. + */ + function computeStackTraceFromStackProp(ex) { + if (typeof ex.stack === 'undefined' || !ex.stack) return; + + var chrome = /^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i; + var winjs = /^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i; + // NOTE: blob urls are now supposed to always have an origin, therefore it's format + // which is `blob:http://url/path/with-some-uuid`, is matched by `blob.*?:\/` as well + var gecko = /^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i; + // Used to additionally parse URL/line/column from eval frames + var geckoEval = /(\S+) line (\d+)(?: > eval line \d+)* > eval/i; + var chromeEval = /\((\S*)(?::(\d+))(?::(\d+))\)/; + var lines = ex.stack.split('\n'); + var stack = []; + var submatch; + var parts; + var element; + var reference = /^(.*) is undefined$/.exec(ex.message); + + for (var i = 0, j = lines.length; i < j; ++i) { + if ((parts = chrome.exec(lines[i]))) { + var isNative = parts[2] && parts[2].indexOf('native') === 0; // start of line + var isEval = parts[2] && parts[2].indexOf('eval') === 0; // start of line + if (isEval && (submatch = chromeEval.exec(parts[2]))) { + // throw out eval line/column and use top-most line/column number + parts[2] = submatch[1]; // url + parts[3] = submatch[2]; // line + parts[4] = submatch[3]; // column + } + element = { + url: !isNative ? parts[2] : null, + func: parts[1] || UNKNOWN_FUNCTION, + args: isNative ? [parts[2]] : [], + line: parts[3] ? +parts[3] : null, + column: parts[4] ? +parts[4] : null + }; + } else if ((parts = winjs.exec(lines[i]))) { + element = { + url: parts[2], + func: parts[1] || UNKNOWN_FUNCTION, + args: [], + line: +parts[3], + column: parts[4] ? +parts[4] : null + }; + } else if ((parts = gecko.exec(lines[i]))) { + var isEval = parts[3] && parts[3].indexOf(' > eval') > -1; + if (isEval && (submatch = geckoEval.exec(parts[3]))) { + // throw out eval line/column and use top-most line number + parts[3] = submatch[1]; + parts[4] = submatch[2]; + parts[5] = null; // no column when eval + } else if (i === 0 && !parts[5] && typeof ex.columnNumber !== 'undefined') { + // FireFox uses this awesome columnNumber property for its top frame + // Also note, Firefox's column number is 0-based and everything else expects 1-based, + // so adding 1 + // NOTE: this hack doesn't work if top-most frame is eval + stack[0].column = ex.columnNumber + 1; + } + element = { + url: parts[3], + func: parts[1] || UNKNOWN_FUNCTION, + args: parts[2] ? parts[2].split(',') : [], + line: parts[4] ? +parts[4] : null, + column: parts[5] ? +parts[5] : null + }; + } else { + continue; + } + + if (!element.func && element.line) { + element.func = UNKNOWN_FUNCTION; + } + + if (element.url && element.url.substr(0, 5) === 'blob:') { + // Special case for handling JavaScript loaded into a blob. + // We use a synchronous AJAX request here as a blob is already in + // memory - it's not making a network request. This will generate a warning + // in the browser console, but there has already been an error so that's not + // that much of an issue. + var xhr = new XMLHttpRequest(); + xhr.open('GET', element.url, false); + xhr.send(null); + + // If we failed to download the source, skip this patch + if (xhr.status === 200) { + var source = xhr.responseText || ''; + + // We trim the source down to the last 300 characters as sourceMappingURL is always at the end of the file. + // Why 300? To be in line with: https://github.com/getsentry/sentry/blob/4af29e8f2350e20c28a6933354e4f42437b4ba42/src/sentry/lang/javascript/processor.py#L164-L175 + source = source.slice(-300); + + // Now we dig out the source map URL + var sourceMaps = source.match(/\/\/# sourceMappingURL=(.*)$/); + + // If we don't find a source map comment or we find more than one, continue on to the next element. + if (sourceMaps) { + var sourceMapAddress = sourceMaps[1]; + + // Now we check to see if it's a relative URL. + // If it is, convert it to an absolute one. + if (sourceMapAddress.charAt(0) === '~') { + sourceMapAddress = getLocationOrigin() + sourceMapAddress.slice(1); + } + + // Now we strip the '.map' off of the end of the URL and update the + // element so that Sentry can match the map to the blob. + element.url = sourceMapAddress.slice(0, -4); + } + } + } + + stack.push(element); + } + + if (!stack.length) { + return null; + } + + return { + name: ex.name, + message: ex.message, + url: getLocationHref(), + stack: stack + }; + } + + /** + * Adds information about the first frame to incomplete stack traces. + * Safari and IE require this to get complete data on the first frame. + * @param {Object.} stackInfo Stack trace information from + * one of the compute* methods. + * @param {string} url The URL of the script that caused an error. + * @param {(number|string)} lineNo The line number of the script that + * caused an error. + * @param {string=} message The error generated by the browser, which + * hopefully contains the name of the object that caused the error. + * @return {boolean} Whether or not the stack information was + * augmented. + */ + function augmentStackTraceWithInitialElement(stackInfo, url, lineNo, message) { + var initial = { + url: url, + line: lineNo + }; + + if (initial.url && initial.line) { + stackInfo.incomplete = false; + + if (!initial.func) { + initial.func = UNKNOWN_FUNCTION; + } + + if (stackInfo.stack.length > 0) { + if (stackInfo.stack[0].url === initial.url) { + if (stackInfo.stack[0].line === initial.line) { + return false; // already in stack trace + } else if ( + !stackInfo.stack[0].line && + stackInfo.stack[0].func === initial.func + ) { + stackInfo.stack[0].line = initial.line; + return false; + } + } + } + + stackInfo.stack.unshift(initial); + stackInfo.partial = true; + return true; + } else { + stackInfo.incomplete = true; + } + + return false; + } + + /** + * Computes stack trace information by walking the arguments.caller + * chain at the time the exception occurred. This will cause earlier + * frames to be missed but is the only way to get any stack trace in + * Safari and IE. The top frame is restored by + * {@link augmentStackTraceWithInitialElement}. + * @param {Error} ex + * @return {?Object.} Stack trace information. + */ + function computeStackTraceByWalkingCallerChain(ex, depth) { + var functionName = /function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i, + stack = [], + funcs = {}, + recursion = false, + parts, + item, + source; + + for ( + var curr = computeStackTraceByWalkingCallerChain.caller; + curr && !recursion; + curr = curr.caller + ) { + if (curr === computeStackTrace || curr === TraceKit.report) { + // console.log('skipping internal function'); + continue; + } + + item = { + url: null, + func: UNKNOWN_FUNCTION, + line: null, + column: null + }; + + if (curr.name) { + item.func = curr.name; + } else if ((parts = functionName.exec(curr.toString()))) { + item.func = parts[1]; + } + + if (typeof item.func === 'undefined') { + try { + item.func = parts.input.substring(0, parts.input.indexOf('{')); + } catch (e) {} + } + + if (funcs['' + curr]) { + recursion = true; + } else { + funcs['' + curr] = true; + } + + stack.push(item); + } + + if (depth) { + // console.log('depth is ' + depth); + // console.log('stack is ' + stack.length); + stack.splice(0, depth); + } + + var result = { + name: ex.name, + message: ex.message, + url: getLocationHref(), + stack: stack + }; + augmentStackTraceWithInitialElement( + result, + ex.sourceURL || ex.fileName, + ex.line || ex.lineNumber, + ex.message || ex.description + ); + return result; + } + + /** + * Computes a stack trace for an exception. + * @param {Error} ex + * @param {(string|number)=} depth + */ + function computeStackTrace(ex, depth) { + var stack = null; + depth = depth == null ? 0 : +depth; + + try { + stack = computeStackTraceFromStackProp(ex); + if (stack) { + return stack; + } + } catch (e) { + if (TraceKit.debug) { + throw e; + } + } + + try { + stack = computeStackTraceByWalkingCallerChain(ex, depth + 1); + if (stack) { + return stack; + } + } catch (e) { + if (TraceKit.debug) { + throw e; + } + } + return { + name: ex.name, + message: ex.message, + url: getLocationHref() + }; + } + + computeStackTrace.augmentStackTraceWithInitialElement = augmentStackTraceWithInitialElement; + computeStackTrace.computeStackTraceFromStackProp = computeStackTraceFromStackProp; + + return computeStackTrace; +})(); + +module.exports = TraceKit; + +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"8":8}],10:[function(_dereq_,module,exports){ +/* + json-stringify-safe + Like JSON.stringify, but doesn't throw on circular references. + + Originally forked from https://github.com/isaacs/json-stringify-safe + version 5.0.1 on 3/8/2017 and modified to handle Errors serialization + and IE8 compatibility. Tests for this are in test/vendor. + + ISC license: https://github.com/isaacs/json-stringify-safe/blob/master/LICENSE +*/ + +exports = module.exports = stringify; +exports.getSerialize = serializer; + +function indexOf(haystack, needle) { + for (var i = 0; i < haystack.length; ++i) { + if (haystack[i] === needle) return i; + } + return -1; +} + +function stringify(obj, replacer, spaces, cycleReplacer) { + return JSON.stringify(obj, serializer(replacer, cycleReplacer), spaces); +} + +// https://github.com/ftlabs/js-abbreviate/blob/fa709e5f139e7770a71827b1893f22418097fbda/index.js#L95-L106 +function stringifyError(value) { + var err = { + // These properties are implemented as magical getters and don't show up in for in + stack: value.stack, + message: value.message, + name: value.name + }; + + for (var i in value) { + if (Object.prototype.hasOwnProperty.call(value, i)) { + err[i] = value[i]; + } + } + + return err; +} + +function serializer(replacer, cycleReplacer) { + var stack = []; + var keys = []; + + if (cycleReplacer == null) { + cycleReplacer = function(key, value) { + if (stack[0] === value) { + return '[Circular ~]'; + } + return '[Circular ~.' + keys.slice(0, indexOf(stack, value)).join('.') + ']'; + }; + } + + return function(key, value) { + if (stack.length > 0) { + var thisPos = indexOf(stack, this); + ~thisPos ? stack.splice(thisPos + 1) : stack.push(this); + ~thisPos ? keys.splice(thisPos, Infinity, key) : keys.push(key); + + if (~indexOf(stack, value)) { + value = cycleReplacer.call(this, key, value); + } + } else { + stack.push(value); + } + + return replacer == null + ? value instanceof Error ? stringifyError(value) : value + : replacer.call(this, key, value); + }; +} + +},{}],11:[function(_dereq_,module,exports){ +/* + * JavaScript MD5 + * https://github.com/blueimp/JavaScript-MD5 + * + * Copyright 2011, Sebastian Tschan + * https://blueimp.net + * + * Licensed under the MIT license: + * https://opensource.org/licenses/MIT + * + * Based on + * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message + * Digest Algorithm, as defined in RFC 1321. + * Version 2.2 Copyright (C) Paul Johnston 1999 - 2009 + * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet + * Distributed under the BSD License + * See http://pajhome.org.uk/crypt/md5 for more info. + */ + +/* +* Add integers, wrapping at 2^32. This uses 16-bit operations internally +* to work around bugs in some JS interpreters. +*/ +function safeAdd(x, y) { + var lsw = (x & 0xffff) + (y & 0xffff); + var msw = (x >> 16) + (y >> 16) + (lsw >> 16); + return (msw << 16) | (lsw & 0xffff); +} + +/* +* Bitwise rotate a 32-bit number to the left. +*/ +function bitRotateLeft(num, cnt) { + return (num << cnt) | (num >>> (32 - cnt)); +} + +/* +* These functions implement the four basic operations the algorithm uses. +*/ +function md5cmn(q, a, b, x, s, t) { + return safeAdd(bitRotateLeft(safeAdd(safeAdd(a, q), safeAdd(x, t)), s), b); +} +function md5ff(a, b, c, d, x, s, t) { + return md5cmn((b & c) | (~b & d), a, b, x, s, t); +} +function md5gg(a, b, c, d, x, s, t) { + return md5cmn((b & d) | (c & ~d), a, b, x, s, t); +} +function md5hh(a, b, c, d, x, s, t) { + return md5cmn(b ^ c ^ d, a, b, x, s, t); +} +function md5ii(a, b, c, d, x, s, t) { + return md5cmn(c ^ (b | ~d), a, b, x, s, t); +} + +/* +* Calculate the MD5 of an array of little-endian words, and a bit length. +*/ +function binlMD5(x, len) { + /* append padding */ + x[len >> 5] |= 0x80 << (len % 32); + x[(((len + 64) >>> 9) << 4) + 14] = len; + + var i; + var olda; + var oldb; + var oldc; + var oldd; + var a = 1732584193; + var b = -271733879; + var c = -1732584194; + var d = 271733878; + + for (i = 0; i < x.length; i += 16) { + olda = a; + oldb = b; + oldc = c; + oldd = d; + + a = md5ff(a, b, c, d, x[i], 7, -680876936); + d = md5ff(d, a, b, c, x[i + 1], 12, -389564586); + c = md5ff(c, d, a, b, x[i + 2], 17, 606105819); + b = md5ff(b, c, d, a, x[i + 3], 22, -1044525330); + a = md5ff(a, b, c, d, x[i + 4], 7, -176418897); + d = md5ff(d, a, b, c, x[i + 5], 12, 1200080426); + c = md5ff(c, d, a, b, x[i + 6], 17, -1473231341); + b = md5ff(b, c, d, a, x[i + 7], 22, -45705983); + a = md5ff(a, b, c, d, x[i + 8], 7, 1770035416); + d = md5ff(d, a, b, c, x[i + 9], 12, -1958414417); + c = md5ff(c, d, a, b, x[i + 10], 17, -42063); + b = md5ff(b, c, d, a, x[i + 11], 22, -1990404162); + a = md5ff(a, b, c, d, x[i + 12], 7, 1804603682); + d = md5ff(d, a, b, c, x[i + 13], 12, -40341101); + c = md5ff(c, d, a, b, x[i + 14], 17, -1502002290); + b = md5ff(b, c, d, a, x[i + 15], 22, 1236535329); + + a = md5gg(a, b, c, d, x[i + 1], 5, -165796510); + d = md5gg(d, a, b, c, x[i + 6], 9, -1069501632); + c = md5gg(c, d, a, b, x[i + 11], 14, 643717713); + b = md5gg(b, c, d, a, x[i], 20, -373897302); + a = md5gg(a, b, c, d, x[i + 5], 5, -701558691); + d = md5gg(d, a, b, c, x[i + 10], 9, 38016083); + c = md5gg(c, d, a, b, x[i + 15], 14, -660478335); + b = md5gg(b, c, d, a, x[i + 4], 20, -405537848); + a = md5gg(a, b, c, d, x[i + 9], 5, 568446438); + d = md5gg(d, a, b, c, x[i + 14], 9, -1019803690); + c = md5gg(c, d, a, b, x[i + 3], 14, -187363961); + b = md5gg(b, c, d, a, x[i + 8], 20, 1163531501); + a = md5gg(a, b, c, d, x[i + 13], 5, -1444681467); + d = md5gg(d, a, b, c, x[i + 2], 9, -51403784); + c = md5gg(c, d, a, b, x[i + 7], 14, 1735328473); + b = md5gg(b, c, d, a, x[i + 12], 20, -1926607734); + + a = md5hh(a, b, c, d, x[i + 5], 4, -378558); + d = md5hh(d, a, b, c, x[i + 8], 11, -2022574463); + c = md5hh(c, d, a, b, x[i + 11], 16, 1839030562); + b = md5hh(b, c, d, a, x[i + 14], 23, -35309556); + a = md5hh(a, b, c, d, x[i + 1], 4, -1530992060); + d = md5hh(d, a, b, c, x[i + 4], 11, 1272893353); + c = md5hh(c, d, a, b, x[i + 7], 16, -155497632); + b = md5hh(b, c, d, a, x[i + 10], 23, -1094730640); + a = md5hh(a, b, c, d, x[i + 13], 4, 681279174); + d = md5hh(d, a, b, c, x[i], 11, -358537222); + c = md5hh(c, d, a, b, x[i + 3], 16, -722521979); + b = md5hh(b, c, d, a, x[i + 6], 23, 76029189); + a = md5hh(a, b, c, d, x[i + 9], 4, -640364487); + d = md5hh(d, a, b, c, x[i + 12], 11, -421815835); + c = md5hh(c, d, a, b, x[i + 15], 16, 530742520); + b = md5hh(b, c, d, a, x[i + 2], 23, -995338651); + + a = md5ii(a, b, c, d, x[i], 6, -198630844); + d = md5ii(d, a, b, c, x[i + 7], 10, 1126891415); + c = md5ii(c, d, a, b, x[i + 14], 15, -1416354905); + b = md5ii(b, c, d, a, x[i + 5], 21, -57434055); + a = md5ii(a, b, c, d, x[i + 12], 6, 1700485571); + d = md5ii(d, a, b, c, x[i + 3], 10, -1894986606); + c = md5ii(c, d, a, b, x[i + 10], 15, -1051523); + b = md5ii(b, c, d, a, x[i + 1], 21, -2054922799); + a = md5ii(a, b, c, d, x[i + 8], 6, 1873313359); + d = md5ii(d, a, b, c, x[i + 15], 10, -30611744); + c = md5ii(c, d, a, b, x[i + 6], 15, -1560198380); + b = md5ii(b, c, d, a, x[i + 13], 21, 1309151649); + a = md5ii(a, b, c, d, x[i + 4], 6, -145523070); + d = md5ii(d, a, b, c, x[i + 11], 10, -1120210379); + c = md5ii(c, d, a, b, x[i + 2], 15, 718787259); + b = md5ii(b, c, d, a, x[i + 9], 21, -343485551); + + a = safeAdd(a, olda); + b = safeAdd(b, oldb); + c = safeAdd(c, oldc); + d = safeAdd(d, oldd); + } + return [a, b, c, d]; +} + +/* +* Convert an array of little-endian words to a string +*/ +function binl2rstr(input) { + var i; + var output = ''; + var length32 = input.length * 32; + for (i = 0; i < length32; i += 8) { + output += String.fromCharCode((input[i >> 5] >>> (i % 32)) & 0xff); + } + return output; +} + +/* +* Convert a raw string to an array of little-endian words +* Characters >255 have their high-byte silently ignored. +*/ +function rstr2binl(input) { + var i; + var output = []; + output[(input.length >> 2) - 1] = undefined; + for (i = 0; i < output.length; i += 1) { + output[i] = 0; + } + var length8 = input.length * 8; + for (i = 0; i < length8; i += 8) { + output[i >> 5] |= (input.charCodeAt(i / 8) & 0xff) << (i % 32); + } + return output; +} + +/* +* Calculate the MD5 of a raw string +*/ +function rstrMD5(s) { + return binl2rstr(binlMD5(rstr2binl(s), s.length * 8)); +} + +/* +* Calculate the HMAC-MD5, of a key and some data (raw strings) +*/ +function rstrHMACMD5(key, data) { + var i; + var bkey = rstr2binl(key); + var ipad = []; + var opad = []; + var hash; + ipad[15] = opad[15] = undefined; + if (bkey.length > 16) { + bkey = binlMD5(bkey, key.length * 8); + } + for (i = 0; i < 16; i += 1) { + ipad[i] = bkey[i] ^ 0x36363636; + opad[i] = bkey[i] ^ 0x5c5c5c5c; + } + hash = binlMD5(ipad.concat(rstr2binl(data)), 512 + data.length * 8); + return binl2rstr(binlMD5(opad.concat(hash), 512 + 128)); +} + +/* +* Convert a raw string to a hex string +*/ +function rstr2hex(input) { + var hexTab = '0123456789abcdef'; + var output = ''; + var x; + var i; + for (i = 0; i < input.length; i += 1) { + x = input.charCodeAt(i); + output += hexTab.charAt((x >>> 4) & 0x0f) + hexTab.charAt(x & 0x0f); + } + return output; +} + +/* +* Encode a string as utf-8 +*/ +function str2rstrUTF8(input) { + return unescape(encodeURIComponent(input)); +} + +/* +* Take string arguments and return either raw or hex encoded strings +*/ +function rawMD5(s) { + return rstrMD5(str2rstrUTF8(s)); +} +function hexMD5(s) { + return rstr2hex(rawMD5(s)); +} +function rawHMACMD5(k, d) { + return rstrHMACMD5(str2rstrUTF8(k), str2rstrUTF8(d)); +} +function hexHMACMD5(k, d) { + return rstr2hex(rawHMACMD5(k, d)); +} + +function md5(string, key, raw) { + if (!key) { + if (!raw) { + return hexMD5(string); + } + return rawMD5(string); + } + if (!raw) { + return hexHMACMD5(key, string); + } + return rawHMACMD5(key, string); +} + +module.exports = md5; + +},{}]},{},[7,1,2,3])(7) +}); \ No newline at end of file diff --git a/packages/raven-js/dist/angular,ember,vue/raven.min.js b/packages/raven-js/dist/angular,ember,vue/raven.min.js new file mode 100644 index 000000000000..f1108c4eddd4 --- /dev/null +++ b/packages/raven-js/dist/angular,ember,vue/raven.min.js @@ -0,0 +1,4 @@ +/*! Raven.js 3.25.2 (30b6d4e) | github.com/getsentry/raven-js */ +!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.Raven=a()}}(function(){return function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};b[g][0].call(k.exports,function(a){var c=b[g][1][a];return e(c?c:a)},k,k.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;g":"anonymous component")+(a._isVue&&a.$options.__file?" at "+a.$options.__file:"")}function e(a,b){if(b=b||window.Vue,b&&b.config){var c=b.config.errorHandler;b.config.errorHandler=function(b,e,f){var g={};"[object Object]"===Object.prototype.toString.call(e)&&(g.componentName=d(e),g.propsData=e.$options.propsData),"undefined"!=typeof f&&(g.lifecycleHook=f),a.captureException(b,{extra:g}),"function"==typeof c&&c.call(this,b,e,f)}}}b.exports=e,a(7).addPlugin(b.exports)},{7:7}],4:[function(a,b,c){function d(a){this.name="RavenConfigError",this.message=a}d.prototype=new Error,d.prototype.constructor=d,b.exports=d},{}],5:[function(a,b,c){var d=a(8),e=function(a,b,c){var e=a[b],f=a;if(b in a){var g="warn"===b?"warning":b;a[b]=function(){var a=[].slice.call(arguments),h=d.safeJoin(a," "),i={level:g,logger:"console",extra:{arguments:a}};"assert"===b?a[0]===!1&&(h="Assertion failed: "+(d.safeJoin(a.slice(1)," ")||"console.assert"),i.extra.arguments=a.slice(1),c&&c(h,i)):c&&c(h,i),e&&Function.prototype.apply.call(e,f,a)}}};b.exports={wrapMethod:e}},{8:8}],6:[function(a,b,c){(function(c){function d(){return+new Date}function e(a,b){return s(b)?function(c){return b(c,a)}:b}function f(){this.b=!("object"!=typeof JSON||!JSON.stringify),this.c=!r(S),this.d=!r(T),this.e=null,this.f=null,this.g=null,this.h=null,this.i=null,this.j=null,this.k={},this.l={release:R.SENTRY_RELEASE&&R.SENTRY_RELEASE.id,logger:"javascript",ignoreErrors:[],ignoreUrls:[],whitelistUrls:[],includePaths:[],headers:null,collectWindowErrors:!0,captureUnhandledRejections:!0,maxMessageLength:0,maxUrlLength:250,stackTraceLimit:50,autoBreadcrumbs:!0,instrument:!0,sampleRate:1,sanitizeKeys:[]},this.m={method:"POST",keepalive:!0,referrerPolicy:K()?"origin":""},this.n=0,this.o=!1,this.p=Error.stackTraceLimit,this.q=R.console||{},this.r={},this.s=[],this.t=d(),this.u=[],this.v=[],this.w=null,this.x=R.location,this.y=this.x&&this.x.href,this.z();for(var a in this.q)this.r[a]=this.q[a]}var g=a(9),h=a(10),i=a(11),j=a(4),k=a(8),l=k.isErrorEvent,m=k.isDOMError,n=k.isDOMException,o=k.isError,p=k.isObject,q=k.isPlainObject,r=k.isUndefined,s=k.isFunction,t=k.isString,u=k.isArray,v=k.isEmptyObject,w=k.each,x=k.objectMerge,y=k.truncate,z=k.objectFrozen,A=k.hasKey,B=k.joinRegExp,C=k.urlencode,D=k.uuid4,E=k.htmlTreeAsString,F=k.isSameException,G=k.isSameStacktrace,H=k.parseUrl,I=k.fill,J=k.supportsFetch,K=k.supportsReferrerPolicy,L=k.serializeKeysForMessage,M=k.serializeException,N=k.sanitize,O=a(5).wrapMethod,P="source protocol user pass host port path".split(" "),Q=/^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/,R="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},S=R.document,T=R.navigator;f.prototype={VERSION:"3.25.2",debug:!1,TraceKit:g,config:function(a,b){var c=this;if(c.h)return this.A("error","Error: Raven has already been configured"),c;if(!a)return c;var d=c.l;b&&w(b,function(a,b){"tags"===a||"extra"===a||"user"===a?c.k[a]=b:d[a]=b}),c.setDSN(a),d.ignoreErrors.push(/^Script error\.?$/),d.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/),d.ignoreErrors=B(d.ignoreErrors),d.ignoreUrls=!!d.ignoreUrls.length&&B(d.ignoreUrls),d.whitelistUrls=!!d.whitelistUrls.length&&B(d.whitelistUrls),d.includePaths=B(d.includePaths),d.maxBreadcrumbs=Math.max(0,Math.min(d.maxBreadcrumbs||100,100));var e={xhr:!0,console:!0,dom:!0,location:!0,sentry:!0},f=d.autoBreadcrumbs;"[object Object]"==={}.toString.call(f)?f=x(e,f):f!==!1&&(f=e),d.autoBreadcrumbs=f;var h={tryCatch:!0},i=d.instrument;return"[object Object]"==={}.toString.call(i)?i=x(h,i):i!==!1&&(i=h),d.instrument=i,g.collectWindowErrors=!!d.collectWindowErrors,c},install:function(){var a=this;return a.isSetup()&&!a.o&&(g.report.subscribe(function(){a.B.apply(a,arguments)}),a.l.captureUnhandledRejections&&a.C(),a.D(),a.l.instrument&&a.l.instrument.tryCatch&&a.E(),a.l.autoBreadcrumbs&&a.F(),a.G(),a.o=!0),Error.stackTraceLimit=a.l.stackTraceLimit,this},setDSN:function(a){var b=this,c=b.H(a),d=c.path.lastIndexOf("/"),e=c.path.substr(1,d);b.I=a,b.i=c.user,b.J=c.pass&&c.pass.substr(1),b.j=c.path.substr(d+1),b.h=b.K(c),b.L=b.h+"/"+e+"api/"+b.j+"/store/",this.z()},context:function(a,b,c){return s(a)&&(c=b||[],b=a,a=void 0),this.wrap(a,b).apply(this,c)},wrap:function(a,b,c){function d(){var d=[],f=arguments.length,g=!a||a&&a.deep!==!1;for(c&&s(c)&&c.apply(this,arguments);f--;)d[f]=g?e.wrap(a,arguments[f]):arguments[f];try{return b.apply(this,d)}catch(h){throw e.M(),e.captureException(h,a),h}}var e=this;if(r(b)&&!s(a))return a;if(s(a)&&(b=a,a=void 0),!s(b))return b;try{if(b.N)return b;if(b.O)return b.O}catch(f){return b}for(var g in b)A(b,g)&&(d[g]=b[g]);return d.prototype=b.prototype,b.O=d,d.N=!0,d.P=b,d},uninstall:function(){return g.report.uninstall(),this.Q(),this.R(),this.S(),this.T(),Error.stackTraceLimit=this.p,this.o=!1,this},U:function(a){this.A("debug","Raven caught unhandled promise rejection:",a),this.captureException(a.reason,{extra:{unhandledPromiseRejection:!0}})},C:function(){return this.U=this.U.bind(this),R.addEventListener&&R.addEventListener("unhandledrejection",this.U),this},Q:function(){return R.removeEventListener&&R.removeEventListener("unhandledrejection",this.U),this},captureException:function(a,b){if(b=x({trimHeadFrames:0},b?b:{}),l(a)&&a.error)a=a.error;else{if(m(a)||n(a)){var c=a.name||(m(a)?"DOMError":"DOMException"),d=a.message?c+": "+a.message:c;return this.captureMessage(d,x(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}))}if(o(a))a=a;else{if(!q(a))return this.captureMessage(a,x(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}));b=this.V(b,a),a=new Error(b.message)}}this.e=a;try{var e=g.computeStackTrace(a);this.W(e,b)}catch(f){if(a!==f)throw f}return this},V:function(a,b){var c=Object.keys(b).sort(),d=x(a,{message:"Non-Error exception captured with keys: "+L(c),fingerprint:[i(c)],extra:a.extra||{}});return d.extra.X=M(b),d},captureMessage:function(a,b){if(!this.l.ignoreErrors.test||!this.l.ignoreErrors.test(a)){b=b||{},a+="";var c,d=x({message:a},b);try{throw new Error(a)}catch(e){c=e}c.name=null;var f=g.computeStackTrace(c),h=u(f.stack)&&f.stack[1];h&&"Raven.captureException"===h.func&&(h=f.stack[2]);var i=h&&h.url||"";if((!this.l.ignoreUrls.test||!this.l.ignoreUrls.test(i))&&(!this.l.whitelistUrls.test||this.l.whitelistUrls.test(i))){if(this.l.stacktrace||b&&b.stacktrace){d.fingerprint=null==d.fingerprint?a:d.fingerprint,b=x({trimHeadFrames:0},b),b.trimHeadFrames+=1;var j=this.Y(f,b);d.stacktrace={frames:j.reverse()}}return d.fingerprint&&(d.fingerprint=u(d.fingerprint)?d.fingerprint:[d.fingerprint]),this.Z(d),this}}},captureBreadcrumb:function(a){var b=x({timestamp:d()/1e3},a);if(s(this.l.breadcrumbCallback)){var c=this.l.breadcrumbCallback(b);if(p(c)&&!v(c))b=c;else if(c===!1)return this}return this.v.push(b),this.v.length>this.l.maxBreadcrumbs&&this.v.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.s.push([a,b]),this.o&&this.G(),this},setUserContext:function(a){return this.k.user=a,this},setExtraContext:function(a){return this.$("extra",a),this},setTagsContext:function(a){return this.$("tags",a),this},clearContext:function(){return this.k={},this},getContext:function(){return JSON.parse(h(this.k))},setEnvironment:function(a){return this.l.environment=a,this},setRelease:function(a){return this.l.release=a,this},setDataCallback:function(a){var b=this.l.dataCallback;return this.l.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.l.breadcrumbCallback;return this.l.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.l.shouldSendCallback;return this.l.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.l.transport=a,this},lastException:function(){return this.e},lastEventId:function(){return this.g},isSetup:function(){return!!this.b&&(!!this.h||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.A("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=R.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(S){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.I;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.k.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.K(this.H(c)),h=S.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(S.head||S.body).appendChild(h)}},M:function(){var a=this;this.n+=1,setTimeout(function(){a.n-=1})},_:function(a,b){var c,d;if(this.c){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),S.createEvent?(c=S.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=S.createEventObject(),c.eventType=a);for(d in b)A(b,d)&&(c[d]=b[d]);if(S.createEvent)S.dispatchEvent(c);else try{S.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},aa:function(a){var b=this;return function(c){if(b.ba=null,b.w!==c){b.w=c;var d;try{d=E(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ca:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.ba;g||a.aa("input")(c),clearTimeout(g),a.ba=setTimeout(function(){a.ba=null},b)}}},da:function(a,b){var c=H(this.x.href),d=H(b),e=H(a);this.y=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},D:function(){var a=this;a.ea=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.N?a.ea.apply(this.P,arguments):a.ea.apply(this,arguments)}},R:function(){this.ea&&(Function.prototype.toString=this.ea)},E:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.da(b.y,c+""),a.apply(this,arguments)}};I(R.history,"pushState",j,d),I(R.history,"replaceState",j,d)}if(c.console&&"console"in R&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};w(["debug","info","warn","error","log"],function(a,b){O(console,b,k)})}},S:function(){for(var a;this.u.length;){a=this.u.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},T:function(){for(var a in this.r)this.q[a]=this.r[a]},G:function(){var a=this;w(this.s,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},H:function(a){var b=Q.exec(a),c={},d=7;try{for(;d--;)c[P[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.l.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},K:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},B:function(){this.n||this.W.apply(this,arguments)},W:function(a,b){var c=this.Y(a,b);this._("handle",{stackInfo:a,options:b}),this.ga(a.name,a.message,a.url,a.lineno,c,b)},Y:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(w(a.stack,function(b,e){var f=c.ha(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.v,0)}),this.k.user&&(a.user=this.k.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),a=this.qa(a),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||v(a[b]))&&delete a[b]}),s(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!v(a)&&(!s(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.na()?void this.A("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function F(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&l(b))for(c=b.split(/\s+/),f=0;fc?Q(a,b-1):d}function R(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?X:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function S(a,b){function c(a){return m(a)?a.map(function(a){return c(a)}):k(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!m(b)||m(b)&&0===b.length)return a;var d,e=A(b),f="********";try{d=JSON.parse(T(a))}catch(g){return a}return c(d)}var T=a(10),U="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},V=3,W=51200,X=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isDOMError:g,isDOMException:h,isUndefined:i,isFunction:j,isPlainObject:k,isString:l,isArray:m,isEmptyObject:n,supportsErrorEvent:o,supportsDOMError:p,supportsDOMException:q,supportsFetch:r,supportsReferrerPolicy:s,supportsPromiseRejectionEvent:t,wrappedCallback:u,each:v,objectMerge:w,truncate:y,objectFrozen:x,hasKey:z,joinRegExp:A,urlencode:B,uuid4:D,htmlTreeAsString:E,htmlElementAsString:F,isSameException:I,isSameStacktrace:J,parseUrl:C,fill:K,safeJoin:L,serializeException:Q,serializeKeysForMessage:R,sanitize:S}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{10:10}],9:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}function e(){return"undefined"==typeof document||null==document.location?"":(document.location.origin||(document.location.origin=document.location.protocol+"//"+document.location.hostname+(document.location.port?":"+document.location.port:"")),document.location.origin)}var f=a(8),g={collectWindowErrors:!0,debug:!1},h="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},i=[].slice,j="?",k=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;g.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function e(a,b){var c=null;if(!b||g.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(i.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,h,i){var l=null,m=f.isErrorEvent(i)?i.error:i,n=f.isErrorEvent(a)?a.message:a;if(v)g.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&f.isError(m))l=g.computeStackTrace(m),e(l,!0);else{var p,r={url:b,line:c,column:h},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(k);p&&(s=p[1],n=p[2])}r.func=j,l={name:s,message:n,url:d(),stack:[r]},e(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=h.onerror,h.onerror=l,r=!0)}function n(){r&&(h.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,e.apply(null,[a,!1].concat(b))}function p(a,b){var c=i.call(arguments,1);if(v){if(u===a)return;o()}var d=g.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),g.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,f,g=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,h=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,i=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,k=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,l=/\((\S*)(?::(\d+))(?::(\d+))\)/,m=a.stack.split("\n"),n=[],o=(/^(.*) is undefined$/.exec(a.message),0),p=m.length;o eval")>-1;r&&(b=k.exec(c[3]))?(c[3]=b[1], +c[4]=b[2],c[5]=null):0!==o||c[5]||"undefined"==typeof a.columnNumber||(n[0].column=a.columnNumber+1),f={url:c[3],func:c[1]||j,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}if(!f.func&&f.line&&(f.func=j),f.url&&"blob:"===f.url.substr(0,5)){var s=new XMLHttpRequest;if(s.open("GET",f.url,!1),s.send(null),200===s.status){var t=s.responseText||"";t=t.slice(-300);var u=t.match(/\/\/# sourceMappingURL=(.*)$/);if(u){var v=u[1];"~"===v.charAt(0)&&(v=e()+v.slice(1)),f.url=v.slice(0,-4)}}}n.push(f)}return n.length?{name:a.name,message:a.message,url:d(),stack:n}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=j),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,e){for(var h,i,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==f&&o!==g.report){if(i={url:null,func:j,line:null,column:null},o.name?i.func=o.name:(h=k.exec(o.toString()))&&(i.func=h[1]),"undefined"==typeof i.func)try{i.func=h.input.substring(0,h.input.indexOf("{"))}catch(p){}m[""+o]?n=!0:m[""+o]=!0,l.push(i)}e&&l.splice(0,e);var q={name:a.name,message:a.message,url:d(),stack:l};return b(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),q}function f(b,e){var f=null;e=null==e?0:+e;try{if(f=a(b))return f}catch(h){if(g.debug)throw h}try{if(f=c(b,e+1))return f}catch(h){if(g.debug)throw h}return{name:b.name,message:b.message,url:d()}}return f.augmentStackTraceWithInitialElement=b,f.computeStackTraceFromStackProp=a,f}(),b.exports=g}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{8:8}],10:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}],11:[function(a,b,c){function d(a,b){var c=(65535&a)+(65535&b),d=(a>>16)+(b>>16)+(c>>16);return d<<16|65535&c}function e(a,b){return a<>>32-b}function f(a,b,c,f,g,h){return d(e(d(d(b,a),d(f,h)),g),c)}function g(a,b,c,d,e,g,h){return f(b&c|~b&d,a,b,e,g,h)}function h(a,b,c,d,e,g,h){return f(b&d|c&~d,a,b,e,g,h)}function i(a,b,c,d,e,g,h){return f(b^c^d,a,b,e,g,h)}function j(a,b,c,d,e,g,h){return f(c^(b|~d),a,b,e,g,h)}function k(a,b){a[b>>5]|=128<>>9<<4)+14]=b;var c,e,f,k,l,m=1732584193,n=-271733879,o=-1732584194,p=271733878;for(c=0;c>5]>>>b%32&255);return c}function m(a){var b,c=[];for(c[(a.length>>2)-1]=void 0,b=0;b>5]|=(255&a.charCodeAt(b/8))<16&&(e=k(e,8*a.length)),c=0;c<16;c+=1)f[c]=909522486^e[c],g[c]=1549556828^e[c];return d=k(f.concat(m(b)),512+8*b.length),l(k(g.concat(d),640))}function p(a){var b,c,d="0123456789abcdef",e="";for(c=0;c>>4&15)+d.charAt(15&b);return e}function q(a){return unescape(encodeURIComponent(a))}function r(a){return n(q(a))}function s(a){return p(r(a))}function t(a,b){return o(q(a),q(b))}function u(a,b){return p(t(a,b))}function v(a,b,c){return b?c?t(b,a):u(b,a):c?r(a):s(a)}b.exports=v},{}]},{},[7,1,2,3])(7)}); +//# sourceMappingURL=raven.min.js.map \ No newline at end of file diff --git a/packages/raven-js/dist/angular,ember,vue/raven.min.js.map b/packages/raven-js/dist/angular,ember,vue/raven.min.js.map new file mode 100644 index 000000000000..59e0a3870450 --- /dev/null +++ b/packages/raven-js/dist/angular,ember,vue/raven.min.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","angularPlugin","angular","RavenProvider","$get","$window","ExceptionHandlerProvider","$provide","decorator","exceptionHandler","R","$delegate","ex","cause","captureException","extra","moduleName","provider","config","setDataCallback","wrappedCallback","data","_normalizeData","angularPattern","exception","values","matches","exec","value","type","message","angularDocs","substr","addPlugin","7","8","2","emberPlugin","Ember","_oldOnError","onerror","error","RSVP","on","reason","context","captureMessage","3","formatComponentName","vm","$root","name","_isVue","$options","_componentTag","__file","vuePlugin","Vue","errorHandler","info","metaData","Object","prototype","toString","componentName","propsData","lifecycleHook","4","RavenConfigError","constructor","5","utils","wrapMethod","console","level","callback","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","msg","safeJoin","logger","Function","apply","6","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","sanitizeKeys","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isErrorEvent","isDOMError","isDOMException","isError","isObject","isPlainObject","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","sanitize","wrapConsoleMethod","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","dsn","options","_logDebug","globalOptions","key","setDSN","push","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","func","undefined","wrap","_before","wrapped","deep","_ignoreNextOnError","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","U","event","unhandledPromiseRejection","C","_promiseRejectionHandler","bind","addEventListener","Q","removeEventListener","trimHeadFrames","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","V","currentOptions","exKeys","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","M","setTimeout","_","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","aa","evtName","_keypressTimeout","target","category","ca","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","da","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","D","_originalFunctionToString","E","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","F","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","S","builtin","T","G","installer","concat","H","str","m","allowSecretKey","K","port","B","W","stackInfo","_triggerEvent","_processException","lineno","Y","frame","_normalizeFrame","in_app","ha","stackInfoUrl","normalized","filename","line","colno","column","function","ga","prefixedMessage","transaction","ia","request","Referer","breadcrumbs","_trimBreadcrumbs","ja","urlProp","urlProps","ka","httpData","userAgent","User-Agent","referrer","z","_backoffDuration","_backoffStart","na","oa","current","last","pa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Z","baseData","project","platform","_getHttpData","serverName","server_name","_sanitizeData","forEach","random","_sendProcessedPayload","qa","sa","ra","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","ta","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","open","setRequestHeader","send","ua","hash","evaluated","A","$","setUser","setReleaseContext","10","11","9","RavenConstructor","_Raven","noConflict","Client","what","supportsErrorEvent","ErrorEvent","supportsDOMError","DOMError","supportsDOMException","DOMException","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","sanitizeMask","safeInput","o_O","getLocationHref","getLocationOrigin","origin","hostname","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","responseText","sourceMaps","sourceMapAddress","charAt","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","y","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","string","raw"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file diff --git a/packages/raven-js/dist/angular,ember/raven.js b/packages/raven-js/dist/angular,ember/raven.js new file mode 100644 index 000000000000..3747817a3429 --- /dev/null +++ b/packages/raven-js/dist/angular,ember/raven.js @@ -0,0 +1,4120 @@ +/*! Raven.js 3.25.2 (30b6d4e) | github.com/getsentry/raven-js */ + +/* + * Includes TraceKit + * https://github.com/getsentry/TraceKit + * + * Copyright 2018 Matt Robenolt and other contributors + * Released under the BSD license + * https://github.com/getsentry/raven-js/blob/master/LICENSE + * + */ + +(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.Raven = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o captureException(string) => captureMessage(string) + if (initialCall && initialCall.func === 'Raven.captureException') { + initialCall = stack.stack[2]; + } + + var fileurl = (initialCall && initialCall.url) || ''; + + if ( + !!this._globalOptions.ignoreUrls.test && + this._globalOptions.ignoreUrls.test(fileurl) + ) { + return; + } + + if ( + !!this._globalOptions.whitelistUrls.test && + !this._globalOptions.whitelistUrls.test(fileurl) + ) { + return; + } + + if (this._globalOptions.stacktrace || (options && options.stacktrace)) { + // fingerprint on msg, not stack trace (legacy behavior, could be revisited) + data.fingerprint = data.fingerprint == null ? msg : data.fingerprint; + + options = objectMerge( + { + trimHeadFrames: 0 + }, + options + ); + // Since we know this is a synthetic trace, the top frame (this function call) + // MUST be from Raven.js, so mark it for trimming + // We add to the trim counter so that callers can choose to trim extra frames, such + // as utility functions. + options.trimHeadFrames += 1; + + var frames = this._prepareFrames(stack, options); + data.stacktrace = { + // Sentry expects frames oldest to newest + frames: frames.reverse() + }; + } + + // Make sure that fingerprint is always wrapped in an array + if (data.fingerprint) { + data.fingerprint = isArray(data.fingerprint) + ? data.fingerprint + : [data.fingerprint]; + } + + // Fire away! + this._send(data); + + return this; + }, + + captureBreadcrumb: function(obj) { + var crumb = objectMerge( + { + timestamp: now() / 1000 + }, + obj + ); + + if (isFunction(this._globalOptions.breadcrumbCallback)) { + var result = this._globalOptions.breadcrumbCallback(crumb); + + if (isObject(result) && !isEmptyObject(result)) { + crumb = result; + } else if (result === false) { + return this; + } + } + + this._breadcrumbs.push(crumb); + if (this._breadcrumbs.length > this._globalOptions.maxBreadcrumbs) { + this._breadcrumbs.shift(); + } + return this; + }, + + addPlugin: function(plugin /*arg1, arg2, ... argN*/) { + var pluginArgs = [].slice.call(arguments, 1); + + this._plugins.push([plugin, pluginArgs]); + if (this._isRavenInstalled) { + this._drainPlugins(); + } + + return this; + }, + + /* + * Set/clear a user to be sent along with the payload. + * + * @param {object} user An object representing user data [optional] + * @return {Raven} + */ + setUserContext: function(user) { + // Intentionally do not merge here since that's an unexpected behavior. + this._globalContext.user = user; + + return this; + }, + + /* + * Merge extra attributes to be sent along with the payload. + * + * @param {object} extra An object representing extra data [optional] + * @return {Raven} + */ + setExtraContext: function(extra) { + this._mergeContext('extra', extra); + + return this; + }, + + /* + * Merge tags to be sent along with the payload. + * + * @param {object} tags An object representing tags [optional] + * @return {Raven} + */ + setTagsContext: function(tags) { + this._mergeContext('tags', tags); + + return this; + }, + + /* + * Clear all of the context. + * + * @return {Raven} + */ + clearContext: function() { + this._globalContext = {}; + + return this; + }, + + /* + * Get a copy of the current context. This cannot be mutated. + * + * @return {object} copy of context + */ + getContext: function() { + // lol javascript + return JSON.parse(stringify(this._globalContext)); + }, + + /* + * Set environment of application + * + * @param {string} environment Typically something like 'production'. + * @return {Raven} + */ + setEnvironment: function(environment) { + this._globalOptions.environment = environment; + + return this; + }, + + /* + * Set release version of application + * + * @param {string} release Typically something like a git SHA to identify version + * @return {Raven} + */ + setRelease: function(release) { + this._globalOptions.release = release; + + return this; + }, + + /* + * Set the dataCallback option + * + * @param {function} callback The callback to run which allows the + * data blob to be mutated before sending + * @return {Raven} + */ + setDataCallback: function(callback) { + var original = this._globalOptions.dataCallback; + this._globalOptions.dataCallback = keepOriginalCallback(original, callback); + return this; + }, + + /* + * Set the breadcrumbCallback option + * + * @param {function} callback The callback to run which allows filtering + * or mutating breadcrumbs + * @return {Raven} + */ + setBreadcrumbCallback: function(callback) { + var original = this._globalOptions.breadcrumbCallback; + this._globalOptions.breadcrumbCallback = keepOriginalCallback(original, callback); + return this; + }, + + /* + * Set the shouldSendCallback option + * + * @param {function} callback The callback to run which allows + * introspecting the blob before sending + * @return {Raven} + */ + setShouldSendCallback: function(callback) { + var original = this._globalOptions.shouldSendCallback; + this._globalOptions.shouldSendCallback = keepOriginalCallback(original, callback); + return this; + }, + + /** + * Override the default HTTP transport mechanism that transmits data + * to the Sentry server. + * + * @param {function} transport Function invoked instead of the default + * `makeRequest` handler. + * + * @return {Raven} + */ + setTransport: function(transport) { + this._globalOptions.transport = transport; + + return this; + }, + + /* + * Get the latest raw exception that was captured by Raven. + * + * @return {error} + */ + lastException: function() { + return this._lastCapturedException; + }, + + /* + * Get the last event id + * + * @return {string} + */ + lastEventId: function() { + return this._lastEventId; + }, + + /* + * Determine if Raven is setup and ready to go. + * + * @return {boolean} + */ + isSetup: function() { + if (!this._hasJSON) return false; // needs JSON support + if (!this._globalServer) { + if (!this.ravenNotConfiguredError) { + this.ravenNotConfiguredError = true; + this._logDebug('error', 'Error: Raven has not been configured.'); + } + return false; + } + return true; + }, + + afterLoad: function() { + // TODO: remove window dependence? + + // Attempt to initialize Raven on load + var RavenConfig = _window.RavenConfig; + if (RavenConfig) { + this.config(RavenConfig.dsn, RavenConfig.config).install(); + } + }, + + showReportDialog: function(options) { + if ( + !_document // doesn't work without a document (React native) + ) + return; + + options = options || {}; + + var lastEventId = options.eventId || this.lastEventId(); + if (!lastEventId) { + throw new RavenConfigError('Missing eventId'); + } + + var dsn = options.dsn || this._dsn; + if (!dsn) { + throw new RavenConfigError('Missing DSN'); + } + + var encode = encodeURIComponent; + var qs = ''; + qs += '?eventId=' + encode(lastEventId); + qs += '&dsn=' + encode(dsn); + + var user = options.user || this._globalContext.user; + if (user) { + if (user.name) qs += '&name=' + encode(user.name); + if (user.email) qs += '&email=' + encode(user.email); + } + + var globalServer = this._getGlobalServer(this._parseDSN(dsn)); + + var script = _document.createElement('script'); + script.async = true; + script.src = globalServer + '/api/embed/error-page/' + qs; + (_document.head || _document.body).appendChild(script); + }, + + /**** Private functions ****/ + _ignoreNextOnError: function() { + var self = this; + this._ignoreOnError += 1; + setTimeout(function() { + // onerror should trigger before setTimeout + self._ignoreOnError -= 1; + }); + }, + + _triggerEvent: function(eventType, options) { + // NOTE: `event` is a native browser thing, so let's avoid conflicting wiht it + var evt, key; + + if (!this._hasDocument) return; + + options = options || {}; + + eventType = 'raven' + eventType.substr(0, 1).toUpperCase() + eventType.substr(1); + + if (_document.createEvent) { + evt = _document.createEvent('HTMLEvents'); + evt.initEvent(eventType, true, true); + } else { + evt = _document.createEventObject(); + evt.eventType = eventType; + } + + for (key in options) + if (hasKey(options, key)) { + evt[key] = options[key]; + } + + if (_document.createEvent) { + // IE9 if standards + _document.dispatchEvent(evt); + } else { + // IE8 regardless of Quirks or Standards + // IE9 if quirks + try { + _document.fireEvent('on' + evt.eventType.toLowerCase(), evt); + } catch (e) { + // Do nothing + } + } + }, + + /** + * Wraps addEventListener to capture UI breadcrumbs + * @param evtName the event name (e.g. "click") + * @returns {Function} + * @private + */ + _breadcrumbEventHandler: function(evtName) { + var self = this; + return function(evt) { + // reset keypress timeout; e.g. triggering a 'click' after + // a 'keypress' will reset the keypress debounce so that a new + // set of keypresses can be recorded + self._keypressTimeout = null; + + // It's possible this handler might trigger multiple times for the same + // event (e.g. event propagation through node ancestors). Ignore if we've + // already captured the event. + if (self._lastCapturedEvent === evt) return; + + self._lastCapturedEvent = evt; + + // try/catch both: + // - accessing evt.target (see getsentry/raven-js#838, #768) + // - `htmlTreeAsString` because it's complex, and just accessing the DOM incorrectly + // can throw an exception in some circumstances. + var target; + try { + target = htmlTreeAsString(evt.target); + } catch (e) { + target = ''; + } + + self.captureBreadcrumb({ + category: 'ui.' + evtName, // e.g. ui.click, ui.input + message: target + }); + }; + }, + + /** + * Wraps addEventListener to capture keypress UI events + * @returns {Function} + * @private + */ + _keypressEventHandler: function() { + var self = this, + debounceDuration = 1000; // milliseconds + + // TODO: if somehow user switches keypress target before + // debounce timeout is triggered, we will only capture + // a single breadcrumb from the FIRST target (acceptable?) + return function(evt) { + var target; + try { + target = evt.target; + } catch (e) { + // just accessing event properties can throw an exception in some rare circumstances + // see: https://github.com/getsentry/raven-js/issues/838 + return; + } + var tagName = target && target.tagName; + + // only consider keypress events on actual input elements + // this will disregard keypresses targeting body (e.g. tabbing + // through elements, hotkeys, etc) + if ( + !tagName || + (tagName !== 'INPUT' && tagName !== 'TEXTAREA' && !target.isContentEditable) + ) + return; + + // record first keypress in a series, but ignore subsequent + // keypresses until debounce clears + var timeout = self._keypressTimeout; + if (!timeout) { + self._breadcrumbEventHandler('input')(evt); + } + clearTimeout(timeout); + self._keypressTimeout = setTimeout(function() { + self._keypressTimeout = null; + }, debounceDuration); + }; + }, + + /** + * Captures a breadcrumb of type "navigation", normalizing input URLs + * @param to the originating URL + * @param from the target URL + * @private + */ + _captureUrlChange: function(from, to) { + var parsedLoc = parseUrl(this._location.href); + var parsedTo = parseUrl(to); + var parsedFrom = parseUrl(from); + + // because onpopstate only tells you the "new" (to) value of location.href, and + // not the previous (from) value, we need to track the value of the current URL + // state ourselves + this._lastHref = to; + + // Use only the path component of the URL if the URL matches the current + // document (almost all the time when using pushState) + if (parsedLoc.protocol === parsedTo.protocol && parsedLoc.host === parsedTo.host) + to = parsedTo.relative; + if (parsedLoc.protocol === parsedFrom.protocol && parsedLoc.host === parsedFrom.host) + from = parsedFrom.relative; + + this.captureBreadcrumb({ + category: 'navigation', + data: { + to: to, + from: from + } + }); + }, + + _patchFunctionToString: function() { + var self = this; + self._originalFunctionToString = Function.prototype.toString; + // eslint-disable-next-line no-extend-native + Function.prototype.toString = function() { + if (typeof this === 'function' && this.__raven__) { + return self._originalFunctionToString.apply(this.__orig__, arguments); + } + return self._originalFunctionToString.apply(this, arguments); + }; + }, + + _unpatchFunctionToString: function() { + if (this._originalFunctionToString) { + // eslint-disable-next-line no-extend-native + Function.prototype.toString = this._originalFunctionToString; + } + }, + + /** + * Wrap timer functions and event targets to catch errors and provide + * better metadata. + */ + _instrumentTryCatch: function() { + var self = this; + + var wrappedBuiltIns = self._wrappedBuiltIns; + + function wrapTimeFn(orig) { + return function(fn, t) { + // preserve arity + // Make a copy of the arguments to prevent deoptimization + // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments + var args = new Array(arguments.length); + for (var i = 0; i < args.length; ++i) { + args[i] = arguments[i]; + } + var originalCallback = args[0]; + if (isFunction(originalCallback)) { + args[0] = self.wrap(originalCallback); + } + + // IE < 9 doesn't support .call/.apply on setInterval/setTimeout, but it + // also supports only two arguments and doesn't care what this is, so we + // can just call the original function directly. + if (orig.apply) { + return orig.apply(this, args); + } else { + return orig(args[0], args[1]); + } + }; + } + + var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; + + function wrapEventTarget(global) { + var proto = _window[global] && _window[global].prototype; + if (proto && proto.hasOwnProperty && proto.hasOwnProperty('addEventListener')) { + fill( + proto, + 'addEventListener', + function(orig) { + return function(evtName, fn, capture, secure) { + // preserve arity + try { + if (fn && fn.handleEvent) { + fn.handleEvent = self.wrap(fn.handleEvent); + } + } catch (err) { + // can sometimes get 'Permission denied to access property "handle Event' + } + + // More breadcrumb DOM capture ... done here and not in `_instrumentBreadcrumbs` + // so that we don't have more than one wrapper function + var before, clickHandler, keypressHandler; + + if ( + autoBreadcrumbs && + autoBreadcrumbs.dom && + (global === 'EventTarget' || global === 'Node') + ) { + // NOTE: generating multiple handlers per addEventListener invocation, should + // revisit and verify we can just use one (almost certainly) + clickHandler = self._breadcrumbEventHandler('click'); + keypressHandler = self._keypressEventHandler(); + before = function(evt) { + // need to intercept every DOM event in `before` argument, in case that + // same wrapped method is re-used for different events (e.g. mousemove THEN click) + // see #724 + if (!evt) return; + + var eventType; + try { + eventType = evt.type; + } catch (e) { + // just accessing event properties can throw an exception in some rare circumstances + // see: https://github.com/getsentry/raven-js/issues/838 + return; + } + if (eventType === 'click') return clickHandler(evt); + else if (eventType === 'keypress') return keypressHandler(evt); + }; + } + return orig.call( + this, + evtName, + self.wrap(fn, undefined, before), + capture, + secure + ); + }; + }, + wrappedBuiltIns + ); + fill( + proto, + 'removeEventListener', + function(orig) { + return function(evt, fn, capture, secure) { + try { + fn = fn && (fn.__raven_wrapper__ ? fn.__raven_wrapper__ : fn); + } catch (e) { + // ignore, accessing __raven_wrapper__ will throw in some Selenium environments + } + return orig.call(this, evt, fn, capture, secure); + }; + }, + wrappedBuiltIns + ); + } + } + + fill(_window, 'setTimeout', wrapTimeFn, wrappedBuiltIns); + fill(_window, 'setInterval', wrapTimeFn, wrappedBuiltIns); + if (_window.requestAnimationFrame) { + fill( + _window, + 'requestAnimationFrame', + function(orig) { + return function(cb) { + return orig(self.wrap(cb)); + }; + }, + wrappedBuiltIns + ); + } + + // event targets borrowed from bugsnag-js: + // https://github.com/bugsnag/bugsnag-js/blob/master/src/bugsnag.js#L666 + var eventTargets = [ + 'EventTarget', + 'Window', + 'Node', + 'ApplicationCache', + 'AudioTrackList', + 'ChannelMergerNode', + 'CryptoOperation', + 'EventSource', + 'FileReader', + 'HTMLUnknownElement', + 'IDBDatabase', + 'IDBRequest', + 'IDBTransaction', + 'KeyOperation', + 'MediaController', + 'MessagePort', + 'ModalWindow', + 'Notification', + 'SVGElementInstance', + 'Screen', + 'TextTrack', + 'TextTrackCue', + 'TextTrackList', + 'WebSocket', + 'WebSocketWorker', + 'Worker', + 'XMLHttpRequest', + 'XMLHttpRequestEventTarget', + 'XMLHttpRequestUpload' + ]; + for (var i = 0; i < eventTargets.length; i++) { + wrapEventTarget(eventTargets[i]); + } + }, + + /** + * Instrument browser built-ins w/ breadcrumb capturing + * - XMLHttpRequests + * - DOM interactions (click/typing) + * - window.location changes + * - console + * + * Can be disabled or individually configured via the `autoBreadcrumbs` config option + */ + _instrumentBreadcrumbs: function() { + var self = this; + var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; + + var wrappedBuiltIns = self._wrappedBuiltIns; + + function wrapProp(prop, xhr) { + if (prop in xhr && isFunction(xhr[prop])) { + fill(xhr, prop, function(orig) { + return self.wrap(orig); + }); // intentionally don't track filled methods on XHR instances + } + } + + if (autoBreadcrumbs.xhr && 'XMLHttpRequest' in _window) { + var xhrproto = _window.XMLHttpRequest && _window.XMLHttpRequest.prototype; + fill( + xhrproto, + 'open', + function(origOpen) { + return function(method, url) { + // preserve arity + + // if Sentry key appears in URL, don't capture + if (isString(url) && url.indexOf(self._globalKey) === -1) { + this.__raven_xhr = { + method: method, + url: url, + status_code: null + }; + } + + return origOpen.apply(this, arguments); + }; + }, + wrappedBuiltIns + ); + + fill( + xhrproto, + 'send', + function(origSend) { + return function() { + // preserve arity + var xhr = this; + + function onreadystatechangeHandler() { + if (xhr.__raven_xhr && xhr.readyState === 4) { + try { + // touching statusCode in some platforms throws + // an exception + xhr.__raven_xhr.status_code = xhr.status; + } catch (e) { + /* do nothing */ + } + + self.captureBreadcrumb({ + type: 'http', + category: 'xhr', + data: xhr.__raven_xhr + }); + } + } + + var props = ['onload', 'onerror', 'onprogress']; + for (var j = 0; j < props.length; j++) { + wrapProp(props[j], xhr); + } + + if ('onreadystatechange' in xhr && isFunction(xhr.onreadystatechange)) { + fill( + xhr, + 'onreadystatechange', + function(orig) { + return self.wrap(orig, undefined, onreadystatechangeHandler); + } /* intentionally don't track this instrumentation */ + ); + } else { + // if onreadystatechange wasn't actually set by the page on this xhr, we + // are free to set our own and capture the breadcrumb + xhr.onreadystatechange = onreadystatechangeHandler; + } + + return origSend.apply(this, arguments); + }; + }, + wrappedBuiltIns + ); + } + + if (autoBreadcrumbs.xhr && supportsFetch()) { + fill( + _window, + 'fetch', + function(origFetch) { + return function() { + // preserve arity + // Make a copy of the arguments to prevent deoptimization + // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments + var args = new Array(arguments.length); + for (var i = 0; i < args.length; ++i) { + args[i] = arguments[i]; + } + + var fetchInput = args[0]; + var method = 'GET'; + var url; + + if (typeof fetchInput === 'string') { + url = fetchInput; + } else if ('Request' in _window && fetchInput instanceof _window.Request) { + url = fetchInput.url; + if (fetchInput.method) { + method = fetchInput.method; + } + } else { + url = '' + fetchInput; + } + + // if Sentry key appears in URL, don't capture, as it's our own request + if (url.indexOf(self._globalKey) !== -1) { + return origFetch.apply(this, args); + } + + if (args[1] && args[1].method) { + method = args[1].method; + } + + var fetchData = { + method: method, + url: url, + status_code: null + }; + + return origFetch + .apply(this, args) + .then(function(response) { + fetchData.status_code = response.status; + + self.captureBreadcrumb({ + type: 'http', + category: 'fetch', + data: fetchData + }); + + return response; + }) + ['catch'](function(err) { + // if there is an error performing the request + self.captureBreadcrumb({ + type: 'http', + category: 'fetch', + data: fetchData, + level: 'error' + }); + + throw err; + }); + }; + }, + wrappedBuiltIns + ); + } + + // Capture breadcrumbs from any click that is unhandled / bubbled up all the way + // to the document. Do this before we instrument addEventListener. + if (autoBreadcrumbs.dom && this._hasDocument) { + if (_document.addEventListener) { + _document.addEventListener('click', self._breadcrumbEventHandler('click'), false); + _document.addEventListener('keypress', self._keypressEventHandler(), false); + } else if (_document.attachEvent) { + // IE8 Compatibility + _document.attachEvent('onclick', self._breadcrumbEventHandler('click')); + _document.attachEvent('onkeypress', self._keypressEventHandler()); + } + } + + // record navigation (URL) changes + // NOTE: in Chrome App environment, touching history.pushState, *even inside + // a try/catch block*, will cause Chrome to output an error to console.error + // borrowed from: https://github.com/angular/angular.js/pull/13945/files + var chrome = _window.chrome; + var isChromePackagedApp = chrome && chrome.app && chrome.app.runtime; + var hasPushAndReplaceState = + !isChromePackagedApp && + _window.history && + _window.history.pushState && + _window.history.replaceState; + if (autoBreadcrumbs.location && hasPushAndReplaceState) { + // TODO: remove onpopstate handler on uninstall() + var oldOnPopState = _window.onpopstate; + _window.onpopstate = function() { + var currentHref = self._location.href; + self._captureUrlChange(self._lastHref, currentHref); + + if (oldOnPopState) { + return oldOnPopState.apply(this, arguments); + } + }; + + var historyReplacementFunction = function(origHistFunction) { + // note history.pushState.length is 0; intentionally not declaring + // params to preserve 0 arity + return function(/* state, title, url */) { + var url = arguments.length > 2 ? arguments[2] : undefined; + + // url argument is optional + if (url) { + // coerce to string (this is what pushState does) + self._captureUrlChange(self._lastHref, url + ''); + } + + return origHistFunction.apply(this, arguments); + }; + }; + + fill(_window.history, 'pushState', historyReplacementFunction, wrappedBuiltIns); + fill(_window.history, 'replaceState', historyReplacementFunction, wrappedBuiltIns); + } + + if (autoBreadcrumbs.console && 'console' in _window && console.log) { + // console + var consoleMethodCallback = function(msg, data) { + self.captureBreadcrumb({ + message: msg, + level: data.level, + category: 'console' + }); + }; + + each(['debug', 'info', 'warn', 'error', 'log'], function(_, level) { + wrapConsoleMethod(console, level, consoleMethodCallback); + }); + } + }, + + _restoreBuiltIns: function() { + // restore any wrapped builtins + var builtin; + while (this._wrappedBuiltIns.length) { + builtin = this._wrappedBuiltIns.shift(); + + var obj = builtin[0], + name = builtin[1], + orig = builtin[2]; + + obj[name] = orig; + } + }, + + _restoreConsole: function() { + // eslint-disable-next-line guard-for-in + for (var method in this._originalConsoleMethods) { + this._originalConsole[method] = this._originalConsoleMethods[method]; + } + }, + + _drainPlugins: function() { + var self = this; + + // FIX ME TODO + each(this._plugins, function(_, plugin) { + var installer = plugin[0]; + var args = plugin[1]; + installer.apply(self, [self].concat(args)); + }); + }, + + _parseDSN: function(str) { + var m = dsnPattern.exec(str), + dsn = {}, + i = 7; + + try { + while (i--) dsn[dsnKeys[i]] = m[i] || ''; + } catch (e) { + throw new RavenConfigError('Invalid DSN: ' + str); + } + + if (dsn.pass && !this._globalOptions.allowSecretKey) { + throw new RavenConfigError( + 'Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key' + ); + } + + return dsn; + }, + + _getGlobalServer: function(uri) { + // assemble the endpoint from the uri pieces + var globalServer = '//' + uri.host + (uri.port ? ':' + uri.port : ''); + + if (uri.protocol) { + globalServer = uri.protocol + ':' + globalServer; + } + return globalServer; + }, + + _handleOnErrorStackInfo: function() { + // if we are intentionally ignoring errors via onerror, bail out + if (!this._ignoreOnError) { + this._handleStackInfo.apply(this, arguments); + } + }, + + _handleStackInfo: function(stackInfo, options) { + var frames = this._prepareFrames(stackInfo, options); + + this._triggerEvent('handle', { + stackInfo: stackInfo, + options: options + }); + + this._processException( + stackInfo.name, + stackInfo.message, + stackInfo.url, + stackInfo.lineno, + frames, + options + ); + }, + + _prepareFrames: function(stackInfo, options) { + var self = this; + var frames = []; + if (stackInfo.stack && stackInfo.stack.length) { + each(stackInfo.stack, function(i, stack) { + var frame = self._normalizeFrame(stack, stackInfo.url); + if (frame) { + frames.push(frame); + } + }); + + // e.g. frames captured via captureMessage throw + if (options && options.trimHeadFrames) { + for (var j = 0; j < options.trimHeadFrames && j < frames.length; j++) { + frames[j].in_app = false; + } + } + } + frames = frames.slice(0, this._globalOptions.stackTraceLimit); + return frames; + }, + + _normalizeFrame: function(frame, stackInfoUrl) { + // normalize the frames data + var normalized = { + filename: frame.url, + lineno: frame.line, + colno: frame.column, + function: frame.func || '?' + }; + + // Case when we don't have any information about the error + // E.g. throwing a string or raw object, instead of an `Error` in Firefox + // Generating synthetic error doesn't add any value here + // + // We should probably somehow let a user know that they should fix their code + if (!frame.url) { + normalized.filename = stackInfoUrl; // fallback to whole stacks url from onerror handler + } + + normalized.in_app = !// determine if an exception came from outside of our app + // first we check the global includePaths list. + ( + (!!this._globalOptions.includePaths.test && + !this._globalOptions.includePaths.test(normalized.filename)) || + // Now we check for fun, if the function name is Raven or TraceKit + /(Raven|TraceKit)\./.test(normalized['function']) || + // finally, we do a last ditch effort and check for raven.min.js + /raven\.(min\.)?js$/.test(normalized.filename) + ); + + return normalized; + }, + + _processException: function(type, message, fileurl, lineno, frames, options) { + var prefixedMessage = (type ? type + ': ' : '') + (message || ''); + if ( + !!this._globalOptions.ignoreErrors.test && + (this._globalOptions.ignoreErrors.test(message) || + this._globalOptions.ignoreErrors.test(prefixedMessage)) + ) { + return; + } + + var stacktrace; + + if (frames && frames.length) { + fileurl = frames[0].filename || fileurl; + // Sentry expects frames oldest to newest + // and JS sends them as newest to oldest + frames.reverse(); + stacktrace = {frames: frames}; + } else if (fileurl) { + stacktrace = { + frames: [ + { + filename: fileurl, + lineno: lineno, + in_app: true + } + ] + }; + } + + if ( + !!this._globalOptions.ignoreUrls.test && + this._globalOptions.ignoreUrls.test(fileurl) + ) { + return; + } + + if ( + !!this._globalOptions.whitelistUrls.test && + !this._globalOptions.whitelistUrls.test(fileurl) + ) { + return; + } + + var data = objectMerge( + { + // sentry.interfaces.Exception + exception: { + values: [ + { + type: type, + value: message, + stacktrace: stacktrace + } + ] + }, + transaction: fileurl + }, + options + ); + + // Fire away! + this._send(data); + }, + + _trimPacket: function(data) { + // For now, we only want to truncate the two different messages + // but this could/should be expanded to just trim everything + var max = this._globalOptions.maxMessageLength; + if (data.message) { + data.message = truncate(data.message, max); + } + if (data.exception) { + var exception = data.exception.values[0]; + exception.value = truncate(exception.value, max); + } + + var request = data.request; + if (request) { + if (request.url) { + request.url = truncate(request.url, this._globalOptions.maxUrlLength); + } + if (request.Referer) { + request.Referer = truncate(request.Referer, this._globalOptions.maxUrlLength); + } + } + + if (data.breadcrumbs && data.breadcrumbs.values) + this._trimBreadcrumbs(data.breadcrumbs); + + return data; + }, + + /** + * Truncate breadcrumb values (right now just URLs) + */ + _trimBreadcrumbs: function(breadcrumbs) { + // known breadcrumb properties with urls + // TODO: also consider arbitrary prop values that start with (https?)?:// + var urlProps = ['to', 'from', 'url'], + urlProp, + crumb, + data; + + for (var i = 0; i < breadcrumbs.values.length; ++i) { + crumb = breadcrumbs.values[i]; + if ( + !crumb.hasOwnProperty('data') || + !isObject(crumb.data) || + objectFrozen(crumb.data) + ) + continue; + + data = objectMerge({}, crumb.data); + for (var j = 0; j < urlProps.length; ++j) { + urlProp = urlProps[j]; + if (data.hasOwnProperty(urlProp) && data[urlProp]) { + data[urlProp] = truncate(data[urlProp], this._globalOptions.maxUrlLength); + } + } + breadcrumbs.values[i].data = data; + } + }, + + _getHttpData: function() { + if (!this._hasNavigator && !this._hasDocument) return; + var httpData = {}; + + if (this._hasNavigator && _navigator.userAgent) { + httpData.headers = { + 'User-Agent': _navigator.userAgent + }; + } + + // Check in `window` instead of `document`, as we may be in ServiceWorker environment + if (_window.location && _window.location.href) { + httpData.url = _window.location.href; + } + + if (this._hasDocument && _document.referrer) { + if (!httpData.headers) httpData.headers = {}; + httpData.headers.Referer = _document.referrer; + } + + return httpData; + }, + + _resetBackoff: function() { + this._backoffDuration = 0; + this._backoffStart = null; + }, + + _shouldBackoff: function() { + return this._backoffDuration && now() - this._backoffStart < this._backoffDuration; + }, + + /** + * Returns true if the in-process data payload matches the signature + * of the previously-sent data + * + * NOTE: This has to be done at this level because TraceKit can generate + * data from window.onerror WITHOUT an exception object (IE8, IE9, + * other old browsers). This can take the form of an "exception" + * data object with a single frame (derived from the onerror args). + */ + _isRepeatData: function(current) { + var last = this._lastData; + + if ( + !last || + current.message !== last.message || // defined for captureMessage + current.transaction !== last.transaction // defined for captureException/onerror + ) + return false; + + // Stacktrace interface (i.e. from captureMessage) + if (current.stacktrace || last.stacktrace) { + return isSameStacktrace(current.stacktrace, last.stacktrace); + } else if (current.exception || last.exception) { + // Exception interface (i.e. from captureException/onerror) + return isSameException(current.exception, last.exception); + } + + return true; + }, + + _setBackoffState: function(request) { + // If we are already in a backoff state, don't change anything + if (this._shouldBackoff()) { + return; + } + + var status = request.status; + + // 400 - project_id doesn't exist or some other fatal + // 401 - invalid/revoked dsn + // 429 - too many requests + if (!(status === 400 || status === 401 || status === 429)) return; + + var retry; + try { + // If Retry-After is not in Access-Control-Expose-Headers, most + // browsers will throw an exception trying to access it + if (supportsFetch()) { + retry = request.headers.get('Retry-After'); + } else { + retry = request.getResponseHeader('Retry-After'); + } + + // Retry-After is returned in seconds + retry = parseInt(retry, 10) * 1000; + } catch (e) { + /* eslint no-empty:0 */ + } + + this._backoffDuration = retry + ? // If Sentry server returned a Retry-After value, use it + retry + : // Otherwise, double the last backoff duration (starts at 1 sec) + this._backoffDuration * 2 || 1000; + + this._backoffStart = now(); + }, + + _send: function(data) { + var globalOptions = this._globalOptions; + + var baseData = { + project: this._globalProject, + logger: globalOptions.logger, + platform: 'javascript' + }, + httpData = this._getHttpData(); + + if (httpData) { + baseData.request = httpData; + } + + // HACK: delete `trimHeadFrames` to prevent from appearing in outbound payload + if (data.trimHeadFrames) delete data.trimHeadFrames; + + data = objectMerge(baseData, data); + + // Merge in the tags and extra separately since objectMerge doesn't handle a deep merge + data.tags = objectMerge(objectMerge({}, this._globalContext.tags), data.tags); + data.extra = objectMerge(objectMerge({}, this._globalContext.extra), data.extra); + + // Send along our own collected metadata with extra + data.extra['session:duration'] = now() - this._startTime; + + if (this._breadcrumbs && this._breadcrumbs.length > 0) { + // intentionally make shallow copy so that additions + // to breadcrumbs aren't accidentally sent in this request + data.breadcrumbs = { + values: [].slice.call(this._breadcrumbs, 0) + }; + } + + if (this._globalContext.user) { + // sentry.interfaces.User + data.user = this._globalContext.user; + } + + // Include the environment if it's defined in globalOptions + if (globalOptions.environment) data.environment = globalOptions.environment; + + // Include the release if it's defined in globalOptions + if (globalOptions.release) data.release = globalOptions.release; + + // Include server_name if it's defined in globalOptions + if (globalOptions.serverName) data.server_name = globalOptions.serverName; + + data = this._sanitizeData(data); + + // Cleanup empty properties before sending them to the server + Object.keys(data).forEach(function(key) { + if (data[key] == null || data[key] === '' || isEmptyObject(data[key])) { + delete data[key]; + } + }); + + if (isFunction(globalOptions.dataCallback)) { + data = globalOptions.dataCallback(data) || data; + } + + // Why?????????? + if (!data || isEmptyObject(data)) { + return; + } + + // Check if the request should be filtered or not + if ( + isFunction(globalOptions.shouldSendCallback) && + !globalOptions.shouldSendCallback(data) + ) { + return; + } + + // Backoff state: Sentry server previously responded w/ an error (e.g. 429 - too many requests), + // so drop requests until "cool-off" period has elapsed. + if (this._shouldBackoff()) { + this._logDebug('warn', 'Raven dropped error due to backoff: ', data); + return; + } + + if (typeof globalOptions.sampleRate === 'number') { + if (Math.random() < globalOptions.sampleRate) { + this._sendProcessedPayload(data); + } + } else { + this._sendProcessedPayload(data); + } + }, + + _sanitizeData: function(data) { + return sanitize(data, this._globalOptions.sanitizeKeys); + }, + + _getUuid: function() { + return uuid4(); + }, + + _sendProcessedPayload: function(data, callback) { + var self = this; + var globalOptions = this._globalOptions; + + if (!this.isSetup()) return; + + // Try and clean up the packet before sending by truncating long values + data = this._trimPacket(data); + + // ideally duplicate error testing should occur *before* dataCallback/shouldSendCallback, + // but this would require copying an un-truncated copy of the data packet, which can be + // arbitrarily deep (extra_data) -- could be worthwhile? will revisit + if (!this._globalOptions.allowDuplicates && this._isRepeatData(data)) { + this._logDebug('warn', 'Raven dropped repeat event: ', data); + return; + } + + // Send along an event_id if not explicitly passed. + // This event_id can be used to reference the error within Sentry itself. + // Set lastEventId after we know the error should actually be sent + this._lastEventId = data.event_id || (data.event_id = this._getUuid()); + + // Store outbound payload after trim + this._lastData = data; + + this._logDebug('debug', 'Raven about to send:', data); + + var auth = { + sentry_version: '7', + sentry_client: 'raven-js/' + this.VERSION, + sentry_key: this._globalKey + }; + + if (this._globalSecret) { + auth.sentry_secret = this._globalSecret; + } + + var exception = data.exception && data.exception.values[0]; + + // only capture 'sentry' breadcrumb is autoBreadcrumbs is truthy + if ( + this._globalOptions.autoBreadcrumbs && + this._globalOptions.autoBreadcrumbs.sentry + ) { + this.captureBreadcrumb({ + category: 'sentry', + message: exception + ? (exception.type ? exception.type + ': ' : '') + exception.value + : data.message, + event_id: data.event_id, + level: data.level || 'error' // presume error unless specified + }); + } + + var url = this._globalEndpoint; + (globalOptions.transport || this._makeRequest).call(this, { + url: url, + auth: auth, + data: data, + options: globalOptions, + onSuccess: function success() { + self._resetBackoff(); + + self._triggerEvent('success', { + data: data, + src: url + }); + callback && callback(); + }, + onError: function failure(error) { + self._logDebug('error', 'Raven transport failed to send: ', error); + + if (error.request) { + self._setBackoffState(error.request); + } + + self._triggerEvent('failure', { + data: data, + src: url + }); + error = error || new Error('Raven send failed (no additional details provided)'); + callback && callback(error); + } + }); + }, + + _makeRequest: function(opts) { + // Auth is intentionally sent as part of query string (NOT as custom HTTP header) to avoid preflight CORS requests + var url = opts.url + '?' + urlencode(opts.auth); + + var evaluatedHeaders = null; + var evaluatedFetchParameters = {}; + + if (opts.options.headers) { + evaluatedHeaders = this._evaluateHash(opts.options.headers); + } + + if (opts.options.fetchParameters) { + evaluatedFetchParameters = this._evaluateHash(opts.options.fetchParameters); + } + + if (supportsFetch()) { + evaluatedFetchParameters.body = stringify(opts.data); + + var defaultFetchOptions = objectMerge({}, this._fetchDefaults); + var fetchOptions = objectMerge(defaultFetchOptions, evaluatedFetchParameters); + + if (evaluatedHeaders) { + fetchOptions.headers = evaluatedHeaders; + } + + return _window + .fetch(url, fetchOptions) + .then(function(response) { + if (response.ok) { + opts.onSuccess && opts.onSuccess(); + } else { + var error = new Error('Sentry error code: ' + response.status); + // It's called request only to keep compatibility with XHR interface + // and not add more redundant checks in setBackoffState method + error.request = response; + opts.onError && opts.onError(error); + } + }) + ['catch'](function() { + opts.onError && + opts.onError(new Error('Sentry error code: network unavailable')); + }); + } + + var request = _window.XMLHttpRequest && new _window.XMLHttpRequest(); + if (!request) return; + + // if browser doesn't support CORS (e.g. IE7), we are out of luck + var hasCORS = 'withCredentials' in request || typeof XDomainRequest !== 'undefined'; + + if (!hasCORS) return; + + if ('withCredentials' in request) { + request.onreadystatechange = function() { + if (request.readyState !== 4) { + return; + } else if (request.status === 200) { + opts.onSuccess && opts.onSuccess(); + } else if (opts.onError) { + var err = new Error('Sentry error code: ' + request.status); + err.request = request; + opts.onError(err); + } + }; + } else { + request = new XDomainRequest(); + // xdomainrequest cannot go http -> https (or vice versa), + // so always use protocol relative + url = url.replace(/^https?:/, ''); + + // onreadystatechange not supported by XDomainRequest + if (opts.onSuccess) { + request.onload = opts.onSuccess; + } + if (opts.onError) { + request.onerror = function() { + var err = new Error('Sentry error code: XDomainRequest'); + err.request = request; + opts.onError(err); + }; + } + } + + request.open('POST', url); + + if (evaluatedHeaders) { + each(evaluatedHeaders, function(key, value) { + request.setRequestHeader(key, value); + }); + } + + request.send(stringify(opts.data)); + }, + + _evaluateHash: function(hash) { + var evaluated = {}; + + for (var key in hash) { + if (hash.hasOwnProperty(key)) { + var value = hash[key]; + evaluated[key] = typeof value === 'function' ? value() : value; + } + } + + return evaluated; + }, + + _logDebug: function(level) { + // We allow `Raven.debug` and `Raven.config(DSN, { debug: true })` to not make backward incompatible API change + if ( + this._originalConsoleMethods[level] && + (this.debug || this._globalOptions.debug) + ) { + // In IE<10 console methods do not have their own 'apply' method + Function.prototype.apply.call( + this._originalConsoleMethods[level], + this._originalConsole, + [].slice.call(arguments, 1) + ); + } + }, + + _mergeContext: function(key, context) { + if (isUndefined(context)) { + delete this._globalContext[key]; + } else { + this._globalContext[key] = objectMerge(this._globalContext[key] || {}, context); + } + } +}; + +// Deprecations +Raven.prototype.setUser = Raven.prototype.setUserContext; +Raven.prototype.setReleaseContext = Raven.prototype.setRelease; + +module.exports = Raven; + +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"10":10,"3":3,"4":4,"7":7,"8":8,"9":9}],6:[function(_dereq_,module,exports){ +(function (global){ +/** + * Enforces a single instance of the Raven client, and the + * main entry point for Raven. If you are a consumer of the + * Raven library, you SHOULD load this file (vs raven.js). + **/ + +var RavenConstructor = _dereq_(5); + +// This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) +var _window = + typeof window !== 'undefined' + ? window + : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; +var _Raven = _window.Raven; + +var Raven = new RavenConstructor(); + +/* + * Allow multiple versions of Raven to be installed. + * Strip Raven from the global context and returns the instance. + * + * @return {Raven} + */ +Raven.noConflict = function() { + _window.Raven = _Raven; + return Raven; +}; + +Raven.afterLoad(); + +module.exports = Raven; + +/** + * DISCLAIMER: + * + * Expose `Client` constructor for cases where user want to track multiple "sub-applications" in one larger app. + * It's not meant to be used by a wide audience, so pleaaase make sure that you know what you're doing before using it. + * Accidentally calling `install` multiple times, may result in an unexpected behavior that's very hard to debug. + * + * It's called `Client' to be in-line with Raven Node implementation. + * + * HOWTO: + * + * import Raven from 'raven-js'; + * + * const someAppReporter = new Raven.Client(); + * const someOtherAppReporter = new Raven.Client(); + * + * someAppReporter.config('__DSN__', { + * ...config goes here + * }); + * + * someOtherAppReporter.config('__OTHER_DSN__', { + * ...config goes here + * }); + * + * someAppReporter.captureMessage(...); + * someAppReporter.captureException(...); + * someAppReporter.captureBreadcrumb(...); + * + * someOtherAppReporter.captureMessage(...); + * someOtherAppReporter.captureException(...); + * someOtherAppReporter.captureBreadcrumb(...); + * + * It should "just work". + */ +module.exports.Client = RavenConstructor; + +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"5":5}],7:[function(_dereq_,module,exports){ +(function (global){ +var stringify = _dereq_(9); + +var _window = + typeof window !== 'undefined' + ? window + : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; + +function isObject(what) { + return typeof what === 'object' && what !== null; +} + +// Yanked from https://git.io/vS8DV re-used under CC0 +// with some tiny modifications +function isError(value) { + switch (Object.prototype.toString.call(value)) { + case '[object Error]': + return true; + case '[object Exception]': + return true; + case '[object DOMException]': + return true; + default: + return value instanceof Error; + } +} + +function isErrorEvent(value) { + return Object.prototype.toString.call(value) === '[object ErrorEvent]'; +} + +function isDOMError(value) { + return Object.prototype.toString.call(value) === '[object DOMError]'; +} + +function isDOMException(value) { + return Object.prototype.toString.call(value) === '[object DOMException]'; +} + +function isUndefined(what) { + return what === void 0; +} + +function isFunction(what) { + return typeof what === 'function'; +} + +function isPlainObject(what) { + return Object.prototype.toString.call(what) === '[object Object]'; +} + +function isString(what) { + return Object.prototype.toString.call(what) === '[object String]'; +} + +function isArray(what) { + return Object.prototype.toString.call(what) === '[object Array]'; +} + +function isEmptyObject(what) { + if (!isPlainObject(what)) return false; + + for (var _ in what) { + if (what.hasOwnProperty(_)) { + return false; + } + } + return true; +} + +function supportsErrorEvent() { + try { + new ErrorEvent(''); // eslint-disable-line no-new + return true; + } catch (e) { + return false; + } +} + +function supportsDOMError() { + try { + new DOMError(''); // eslint-disable-line no-new + return true; + } catch (e) { + return false; + } +} + +function supportsDOMException() { + try { + new DOMException(''); // eslint-disable-line no-new + return true; + } catch (e) { + return false; + } +} + +function supportsFetch() { + if (!('fetch' in _window)) return false; + + try { + new Headers(); // eslint-disable-line no-new + new Request(''); // eslint-disable-line no-new + new Response(); // eslint-disable-line no-new + return true; + } catch (e) { + return false; + } +} + +// Despite all stars in the sky saying that Edge supports old draft syntax, aka 'never', 'always', 'origin' and 'default +// https://caniuse.com/#feat=referrer-policy +// It doesn't. And it throw exception instead of ignoring this parameter... +// REF: https://github.com/getsentry/raven-js/issues/1233 +function supportsReferrerPolicy() { + if (!supportsFetch()) return false; + + try { + // eslint-disable-next-line no-new + new Request('pickleRick', { + referrerPolicy: 'origin' + }); + return true; + } catch (e) { + return false; + } +} + +function supportsPromiseRejectionEvent() { + return typeof PromiseRejectionEvent === 'function'; +} + +function wrappedCallback(callback) { + function dataCallback(data, original) { + var normalizedData = callback(data) || data; + if (original) { + return original(normalizedData) || normalizedData; + } + return normalizedData; + } + + return dataCallback; +} + +function each(obj, callback) { + var i, j; + + if (isUndefined(obj.length)) { + for (i in obj) { + if (hasKey(obj, i)) { + callback.call(null, i, obj[i]); + } + } + } else { + j = obj.length; + if (j) { + for (i = 0; i < j; i++) { + callback.call(null, i, obj[i]); + } + } + } +} + +function objectMerge(obj1, obj2) { + if (!obj2) { + return obj1; + } + each(obj2, function(key, value) { + obj1[key] = value; + }); + return obj1; +} + +/** + * This function is only used for react-native. + * react-native freezes object that have already been sent over the + * js bridge. We need this function in order to check if the object is frozen. + * So it's ok that objectFrozen returns false if Object.isFrozen is not + * supported because it's not relevant for other "platforms". See related issue: + * https://github.com/getsentry/react-native-sentry/issues/57 + */ +function objectFrozen(obj) { + if (!Object.isFrozen) { + return false; + } + return Object.isFrozen(obj); +} + +function truncate(str, max) { + if (typeof max !== 'number') { + throw new Error('2nd argument to `truncate` function should be a number'); + } + if (typeof str !== 'string' || max === 0) { + return str; + } + return str.length <= max ? str : str.substr(0, max) + '\u2026'; +} + +/** + * hasKey, a better form of hasOwnProperty + * Example: hasKey(MainHostObject, property) === true/false + * + * @param {Object} host object to check property + * @param {string} key to check + */ +function hasKey(object, key) { + return Object.prototype.hasOwnProperty.call(object, key); +} + +function joinRegExp(patterns) { + // Combine an array of regular expressions and strings into one large regexp + // Be mad. + var sources = [], + i = 0, + len = patterns.length, + pattern; + + for (; i < len; i++) { + pattern = patterns[i]; + if (isString(pattern)) { + // If it's a string, we need to escape it + // Taken from: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions + sources.push(pattern.replace(/([.*+?^=!:${}()|\[\]\/\\])/g, '\\$1')); + } else if (pattern && pattern.source) { + // If it's a regexp already, we want to extract the source + sources.push(pattern.source); + } + // Intentionally skip other cases + } + return new RegExp(sources.join('|'), 'i'); +} + +function urlencode(o) { + var pairs = []; + each(o, function(key, value) { + pairs.push(encodeURIComponent(key) + '=' + encodeURIComponent(value)); + }); + return pairs.join('&'); +} + +// borrowed from https://tools.ietf.org/html/rfc3986#appendix-B +// intentionally using regex and not href parsing trick because React Native and other +// environments where DOM might not be available +function parseUrl(url) { + if (typeof url !== 'string') return {}; + var match = url.match(/^(([^:\/?#]+):)?(\/\/([^\/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?$/); + + // coerce to undefined values to empty string so we don't get 'undefined' + var query = match[6] || ''; + var fragment = match[8] || ''; + return { + protocol: match[2], + host: match[4], + path: match[5], + relative: match[5] + query + fragment // everything minus origin + }; +} +function uuid4() { + var crypto = _window.crypto || _window.msCrypto; + + if (!isUndefined(crypto) && crypto.getRandomValues) { + // Use window.crypto API if available + // eslint-disable-next-line no-undef + var arr = new Uint16Array(8); + crypto.getRandomValues(arr); + + // set 4 in byte 7 + arr[3] = (arr[3] & 0xfff) | 0x4000; + // set 2 most significant bits of byte 9 to '10' + arr[4] = (arr[4] & 0x3fff) | 0x8000; + + var pad = function(num) { + var v = num.toString(16); + while (v.length < 4) { + v = '0' + v; + } + return v; + }; + + return ( + pad(arr[0]) + + pad(arr[1]) + + pad(arr[2]) + + pad(arr[3]) + + pad(arr[4]) + + pad(arr[5]) + + pad(arr[6]) + + pad(arr[7]) + ); + } else { + // http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/2117523#2117523 + return 'xxxxxxxxxxxx4xxxyxxxxxxxxxxxxxxx'.replace(/[xy]/g, function(c) { + var r = (Math.random() * 16) | 0, + v = c === 'x' ? r : (r & 0x3) | 0x8; + return v.toString(16); + }); + } +} + +/** + * Given a child DOM element, returns a query-selector statement describing that + * and its ancestors + * e.g. [HTMLElement] => body > div > input#foo.btn[name=baz] + * @param elem + * @returns {string} + */ +function htmlTreeAsString(elem) { + /* eslint no-extra-parens:0*/ + var MAX_TRAVERSE_HEIGHT = 5, + MAX_OUTPUT_LEN = 80, + out = [], + height = 0, + len = 0, + separator = ' > ', + sepLength = separator.length, + nextStr; + + while (elem && height++ < MAX_TRAVERSE_HEIGHT) { + nextStr = htmlElementAsString(elem); + // bail out if + // - nextStr is the 'html' element + // - the length of the string that would be created exceeds MAX_OUTPUT_LEN + // (ignore this limit if we are on the first iteration) + if ( + nextStr === 'html' || + (height > 1 && len + out.length * sepLength + nextStr.length >= MAX_OUTPUT_LEN) + ) { + break; + } + + out.push(nextStr); + + len += nextStr.length; + elem = elem.parentNode; + } + + return out.reverse().join(separator); +} + +/** + * Returns a simple, query-selector representation of a DOM element + * e.g. [HTMLElement] => input#foo.btn[name=baz] + * @param HTMLElement + * @returns {string} + */ +function htmlElementAsString(elem) { + var out = [], + className, + classes, + key, + attr, + i; + + if (!elem || !elem.tagName) { + return ''; + } + + out.push(elem.tagName.toLowerCase()); + if (elem.id) { + out.push('#' + elem.id); + } + + className = elem.className; + if (className && isString(className)) { + classes = className.split(/\s+/); + for (i = 0; i < classes.length; i++) { + out.push('.' + classes[i]); + } + } + var attrWhitelist = ['type', 'name', 'title', 'alt']; + for (i = 0; i < attrWhitelist.length; i++) { + key = attrWhitelist[i]; + attr = elem.getAttribute(key); + if (attr) { + out.push('[' + key + '="' + attr + '"]'); + } + } + return out.join(''); +} + +/** + * Returns true if either a OR b is truthy, but not both + */ +function isOnlyOneTruthy(a, b) { + return !!(!!a ^ !!b); +} + +/** + * Returns true if both parameters are undefined + */ +function isBothUndefined(a, b) { + return isUndefined(a) && isUndefined(b); +} + +/** + * Returns true if the two input exception interfaces have the same content + */ +function isSameException(ex1, ex2) { + if (isOnlyOneTruthy(ex1, ex2)) return false; + + ex1 = ex1.values[0]; + ex2 = ex2.values[0]; + + if (ex1.type !== ex2.type || ex1.value !== ex2.value) return false; + + // in case both stacktraces are undefined, we can't decide so default to false + if (isBothUndefined(ex1.stacktrace, ex2.stacktrace)) return false; + + return isSameStacktrace(ex1.stacktrace, ex2.stacktrace); +} + +/** + * Returns true if the two input stack trace interfaces have the same content + */ +function isSameStacktrace(stack1, stack2) { + if (isOnlyOneTruthy(stack1, stack2)) return false; + + var frames1 = stack1.frames; + var frames2 = stack2.frames; + + // Exit early if frame count differs + if (frames1.length !== frames2.length) return false; + + // Iterate through every frame; bail out if anything differs + var a, b; + for (var i = 0; i < frames1.length; i++) { + a = frames1[i]; + b = frames2[i]; + if ( + a.filename !== b.filename || + a.lineno !== b.lineno || + a.colno !== b.colno || + a['function'] !== b['function'] + ) + return false; + } + return true; +} + +/** + * Polyfill a method + * @param obj object e.g. `document` + * @param name method name present on object e.g. `addEventListener` + * @param replacement replacement function + * @param track {optional} record instrumentation to an array + */ +function fill(obj, name, replacement, track) { + if (obj == null) return; + var orig = obj[name]; + obj[name] = replacement(orig); + obj[name].__raven__ = true; + obj[name].__orig__ = orig; + if (track) { + track.push([obj, name, orig]); + } +} + +/** + * Join values in array + * @param input array of values to be joined together + * @param delimiter string to be placed in-between values + * @returns {string} + */ +function safeJoin(input, delimiter) { + if (!isArray(input)) return ''; + + var output = []; + + for (var i = 0; i < input.length; i++) { + try { + output.push(String(input[i])); + } catch (e) { + output.push('[value cannot be serialized]'); + } + } + + return output.join(delimiter); +} + +// Default Node.js REPL depth +var MAX_SERIALIZE_EXCEPTION_DEPTH = 3; +// 50kB, as 100kB is max payload size, so half sounds reasonable +var MAX_SERIALIZE_EXCEPTION_SIZE = 50 * 1024; +var MAX_SERIALIZE_KEYS_LENGTH = 40; + +function utf8Length(value) { + return ~-encodeURI(value).split(/%..|./).length; +} + +function jsonSize(value) { + return utf8Length(JSON.stringify(value)); +} + +function serializeValue(value) { + if (typeof value === 'string') { + var maxLength = 40; + return truncate(value, maxLength); + } else if ( + typeof value === 'number' || + typeof value === 'boolean' || + typeof value === 'undefined' + ) { + return value; + } + + var type = Object.prototype.toString.call(value); + + // Node.js REPL notation + if (type === '[object Object]') return '[Object]'; + if (type === '[object Array]') return '[Array]'; + if (type === '[object Function]') + return value.name ? '[Function: ' + value.name + ']' : '[Function]'; + + return value; +} + +function serializeObject(value, depth) { + if (depth === 0) return serializeValue(value); + + if (isPlainObject(value)) { + return Object.keys(value).reduce(function(acc, key) { + acc[key] = serializeObject(value[key], depth - 1); + return acc; + }, {}); + } else if (Array.isArray(value)) { + return value.map(function(val) { + return serializeObject(val, depth - 1); + }); + } + + return serializeValue(value); +} + +function serializeException(ex, depth, maxSize) { + if (!isPlainObject(ex)) return ex; + + depth = typeof depth !== 'number' ? MAX_SERIALIZE_EXCEPTION_DEPTH : depth; + maxSize = typeof depth !== 'number' ? MAX_SERIALIZE_EXCEPTION_SIZE : maxSize; + + var serialized = serializeObject(ex, depth); + + if (jsonSize(stringify(serialized)) > maxSize) { + return serializeException(ex, depth - 1); + } + + return serialized; +} + +function serializeKeysForMessage(keys, maxLength) { + if (typeof keys === 'number' || typeof keys === 'string') return keys.toString(); + if (!Array.isArray(keys)) return ''; + + keys = keys.filter(function(key) { + return typeof key === 'string'; + }); + if (keys.length === 0) return '[object has no keys]'; + + maxLength = typeof maxLength !== 'number' ? MAX_SERIALIZE_KEYS_LENGTH : maxLength; + if (keys[0].length >= maxLength) return keys[0]; + + for (var usedKeys = keys.length; usedKeys > 0; usedKeys--) { + var serialized = keys.slice(0, usedKeys).join(', '); + if (serialized.length > maxLength) continue; + if (usedKeys === keys.length) return serialized; + return serialized + '\u2026'; + } + + return ''; +} + +function sanitize(input, sanitizeKeys) { + if (!isArray(sanitizeKeys) || (isArray(sanitizeKeys) && sanitizeKeys.length === 0)) + return input; + + var sanitizeRegExp = joinRegExp(sanitizeKeys); + var sanitizeMask = '********'; + var safeInput; + + try { + safeInput = JSON.parse(stringify(input)); + } catch (o_O) { + return input; + } + + function sanitizeWorker(workerInput) { + if (isArray(workerInput)) { + return workerInput.map(function(val) { + return sanitizeWorker(val); + }); + } + + if (isPlainObject(workerInput)) { + return Object.keys(workerInput).reduce(function(acc, k) { + if (sanitizeRegExp.test(k)) { + acc[k] = sanitizeMask; + } else { + acc[k] = sanitizeWorker(workerInput[k]); + } + return acc; + }, {}); + } + + return workerInput; + } + + return sanitizeWorker(safeInput); +} + +module.exports = { + isObject: isObject, + isError: isError, + isErrorEvent: isErrorEvent, + isDOMError: isDOMError, + isDOMException: isDOMException, + isUndefined: isUndefined, + isFunction: isFunction, + isPlainObject: isPlainObject, + isString: isString, + isArray: isArray, + isEmptyObject: isEmptyObject, + supportsErrorEvent: supportsErrorEvent, + supportsDOMError: supportsDOMError, + supportsDOMException: supportsDOMException, + supportsFetch: supportsFetch, + supportsReferrerPolicy: supportsReferrerPolicy, + supportsPromiseRejectionEvent: supportsPromiseRejectionEvent, + wrappedCallback: wrappedCallback, + each: each, + objectMerge: objectMerge, + truncate: truncate, + objectFrozen: objectFrozen, + hasKey: hasKey, + joinRegExp: joinRegExp, + urlencode: urlencode, + uuid4: uuid4, + htmlTreeAsString: htmlTreeAsString, + htmlElementAsString: htmlElementAsString, + isSameException: isSameException, + isSameStacktrace: isSameStacktrace, + parseUrl: parseUrl, + fill: fill, + safeJoin: safeJoin, + serializeException: serializeException, + serializeKeysForMessage: serializeKeysForMessage, + sanitize: sanitize +}; + +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"9":9}],8:[function(_dereq_,module,exports){ +(function (global){ +var utils = _dereq_(7); + +/* + TraceKit - Cross brower stack traces + + This was originally forked from github.com/occ/TraceKit, but has since been + largely re-written and is now maintained as part of raven-js. Tests for + this are in test/vendor. + + MIT license +*/ + +var TraceKit = { + collectWindowErrors: true, + debug: false +}; + +// This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) +var _window = + typeof window !== 'undefined' + ? window + : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; + +// global reference to slice +var _slice = [].slice; +var UNKNOWN_FUNCTION = '?'; + +// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error#Error_types +var ERROR_TYPES_RE = /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/; + +function getLocationHref() { + if (typeof document === 'undefined' || document.location == null) return ''; + return document.location.href; +} + +function getLocationOrigin() { + if (typeof document === 'undefined' || document.location == null) return ''; + + // Oh dear IE10... + if (!document.location.origin) { + document.location.origin = + document.location.protocol + + '//' + + document.location.hostname + + (document.location.port ? ':' + document.location.port : ''); + } + + return document.location.origin; +} + +/** + * TraceKit.report: cross-browser processing of unhandled exceptions + * + * Syntax: + * TraceKit.report.subscribe(function(stackInfo) { ... }) + * TraceKit.report.unsubscribe(function(stackInfo) { ... }) + * TraceKit.report(exception) + * try { ...code... } catch(ex) { TraceKit.report(ex); } + * + * Supports: + * - Firefox: full stack trace with line numbers, plus column number + * on top frame; column number is not guaranteed + * - Opera: full stack trace with line and column numbers + * - Chrome: full stack trace with line and column numbers + * - Safari: line and column number for the top frame only; some frames + * may be missing, and column number is not guaranteed + * - IE: line and column number for the top frame only; some frames + * may be missing, and column number is not guaranteed + * + * In theory, TraceKit should work on all of the following versions: + * - IE5.5+ (only 8.0 tested) + * - Firefox 0.9+ (only 3.5+ tested) + * - Opera 7+ (only 10.50 tested; versions 9 and earlier may require + * Exceptions Have Stacktrace to be enabled in opera:config) + * - Safari 3+ (only 4+ tested) + * - Chrome 1+ (only 5+ tested) + * - Konqueror 3.5+ (untested) + * + * Requires TraceKit.computeStackTrace. + * + * Tries to catch all unhandled exceptions and report them to the + * subscribed handlers. Please note that TraceKit.report will rethrow the + * exception. This is REQUIRED in order to get a useful stack trace in IE. + * If the exception does not reach the top of the browser, you will only + * get a stack trace from the point where TraceKit.report was called. + * + * Handlers receive a stackInfo object as described in the + * TraceKit.computeStackTrace docs. + */ +TraceKit.report = (function reportModuleWrapper() { + var handlers = [], + lastArgs = null, + lastException = null, + lastExceptionStack = null; + + /** + * Add a crash handler. + * @param {Function} handler + */ + function subscribe(handler) { + installGlobalHandler(); + handlers.push(handler); + } + + /** + * Remove a crash handler. + * @param {Function} handler + */ + function unsubscribe(handler) { + for (var i = handlers.length - 1; i >= 0; --i) { + if (handlers[i] === handler) { + handlers.splice(i, 1); + } + } + } + + /** + * Remove all crash handlers. + */ + function unsubscribeAll() { + uninstallGlobalHandler(); + handlers = []; + } + + /** + * Dispatch stack information to all handlers. + * @param {Object.} stack + */ + function notifyHandlers(stack, isWindowError) { + var exception = null; + if (isWindowError && !TraceKit.collectWindowErrors) { + return; + } + for (var i in handlers) { + if (handlers.hasOwnProperty(i)) { + try { + handlers[i].apply(null, [stack].concat(_slice.call(arguments, 2))); + } catch (inner) { + exception = inner; + } + } + } + + if (exception) { + throw exception; + } + } + + var _oldOnerrorHandler, _onErrorHandlerInstalled; + + /** + * Ensures all global unhandled exceptions are recorded. + * Supported by Gecko and IE. + * @param {string} msg Error message. + * @param {string} url URL of script that generated the exception. + * @param {(number|string)} lineNo The line number at which the error + * occurred. + * @param {?(number|string)} colNo The column number at which the error + * occurred. + * @param {?Error} ex The actual Error object. + */ + function traceKitWindowOnError(msg, url, lineNo, colNo, ex) { + var stack = null; + // If 'ex' is ErrorEvent, get real Error from inside + var exception = utils.isErrorEvent(ex) ? ex.error : ex; + // If 'msg' is ErrorEvent, get real message from inside + var message = utils.isErrorEvent(msg) ? msg.message : msg; + + if (lastExceptionStack) { + TraceKit.computeStackTrace.augmentStackTraceWithInitialElement( + lastExceptionStack, + url, + lineNo, + message + ); + processLastException(); + } else if (exception && utils.isError(exception)) { + // non-string `exception` arg; attempt to extract stack trace + + // New chrome and blink send along a real error object + // Let's just report that like a normal error. + // See: https://mikewest.org/2013/08/debugging-runtime-errors-with-window-onerror + stack = TraceKit.computeStackTrace(exception); + notifyHandlers(stack, true); + } else { + var location = { + url: url, + line: lineNo, + column: colNo + }; + + var name = undefined; + var groups; + + if ({}.toString.call(message) === '[object String]') { + var groups = message.match(ERROR_TYPES_RE); + if (groups) { + name = groups[1]; + message = groups[2]; + } + } + + location.func = UNKNOWN_FUNCTION; + + stack = { + name: name, + message: message, + url: getLocationHref(), + stack: [location] + }; + notifyHandlers(stack, true); + } + + if (_oldOnerrorHandler) { + return _oldOnerrorHandler.apply(this, arguments); + } + + return false; + } + + function installGlobalHandler() { + if (_onErrorHandlerInstalled) { + return; + } + _oldOnerrorHandler = _window.onerror; + _window.onerror = traceKitWindowOnError; + _onErrorHandlerInstalled = true; + } + + function uninstallGlobalHandler() { + if (!_onErrorHandlerInstalled) { + return; + } + _window.onerror = _oldOnerrorHandler; + _onErrorHandlerInstalled = false; + _oldOnerrorHandler = undefined; + } + + function processLastException() { + var _lastExceptionStack = lastExceptionStack, + _lastArgs = lastArgs; + lastArgs = null; + lastExceptionStack = null; + lastException = null; + notifyHandlers.apply(null, [_lastExceptionStack, false].concat(_lastArgs)); + } + + /** + * Reports an unhandled Error to TraceKit. + * @param {Error} ex + * @param {?boolean} rethrow If false, do not re-throw the exception. + * Only used for window.onerror to not cause an infinite loop of + * rethrowing. + */ + function report(ex, rethrow) { + var args = _slice.call(arguments, 1); + if (lastExceptionStack) { + if (lastException === ex) { + return; // already caught by an inner catch block, ignore + } else { + processLastException(); + } + } + + var stack = TraceKit.computeStackTrace(ex); + lastExceptionStack = stack; + lastException = ex; + lastArgs = args; + + // If the stack trace is incomplete, wait for 2 seconds for + // slow slow IE to see if onerror occurs or not before reporting + // this exception; otherwise, we will end up with an incomplete + // stack trace + setTimeout(function() { + if (lastException === ex) { + processLastException(); + } + }, stack.incomplete ? 2000 : 0); + + if (rethrow !== false) { + throw ex; // re-throw to propagate to the top level (and cause window.onerror) + } + } + + report.subscribe = subscribe; + report.unsubscribe = unsubscribe; + report.uninstall = unsubscribeAll; + return report; +})(); + +/** + * TraceKit.computeStackTrace: cross-browser stack traces in JavaScript + * + * Syntax: + * s = TraceKit.computeStackTrace(exception) // consider using TraceKit.report instead (see below) + * Returns: + * s.name - exception name + * s.message - exception message + * s.stack[i].url - JavaScript or HTML file URL + * s.stack[i].func - function name, or empty for anonymous functions (if guessing did not work) + * s.stack[i].args - arguments passed to the function, if known + * s.stack[i].line - line number, if known + * s.stack[i].column - column number, if known + * + * Supports: + * - Firefox: full stack trace with line numbers and unreliable column + * number on top frame + * - Opera 10: full stack trace with line and column numbers + * - Opera 9-: full stack trace with line numbers + * - Chrome: full stack trace with line and column numbers + * - Safari: line and column number for the topmost stacktrace element + * only + * - IE: no line numbers whatsoever + * + * Tries to guess names of anonymous functions by looking for assignments + * in the source code. In IE and Safari, we have to guess source file names + * by searching for function bodies inside all page scripts. This will not + * work for scripts that are loaded cross-domain. + * Here be dragons: some function names may be guessed incorrectly, and + * duplicate functions may be mismatched. + * + * TraceKit.computeStackTrace should only be used for tracing purposes. + * Logging of unhandled exceptions should be done with TraceKit.report, + * which builds on top of TraceKit.computeStackTrace and provides better + * IE support by utilizing the window.onerror event to retrieve information + * about the top of the stack. + * + * Note: In IE and Safari, no stack trace is recorded on the Error object, + * so computeStackTrace instead walks its *own* chain of callers. + * This means that: + * * in Safari, some methods may be missing from the stack trace; + * * in IE, the topmost function in the stack trace will always be the + * caller of computeStackTrace. + * + * This is okay for tracing (because you are likely to be calling + * computeStackTrace from the function you want to be the topmost element + * of the stack trace anyway), but not okay for logging unhandled + * exceptions (because your catch block will likely be far away from the + * inner function that actually caused the exception). + * + */ +TraceKit.computeStackTrace = (function computeStackTraceWrapper() { + // Contents of Exception in various browsers. + // + // SAFARI: + // ex.message = Can't find variable: qq + // ex.line = 59 + // ex.sourceId = 580238192 + // ex.sourceURL = http://... + // ex.expressionBeginOffset = 96 + // ex.expressionCaretOffset = 98 + // ex.expressionEndOffset = 98 + // ex.name = ReferenceError + // + // FIREFOX: + // ex.message = qq is not defined + // ex.fileName = http://... + // ex.lineNumber = 59 + // ex.columnNumber = 69 + // ex.stack = ...stack trace... (see the example below) + // ex.name = ReferenceError + // + // CHROME: + // ex.message = qq is not defined + // ex.name = ReferenceError + // ex.type = not_defined + // ex.arguments = ['aa'] + // ex.stack = ...stack trace... + // + // INTERNET EXPLORER: + // ex.message = ... + // ex.name = ReferenceError + // + // OPERA: + // ex.message = ...message... (see the example below) + // ex.name = ReferenceError + // ex.opera#sourceloc = 11 (pretty much useless, duplicates the info in ex.message) + // ex.stacktrace = n/a; see 'opera:config#UserPrefs|Exceptions Have Stacktrace' + + /** + * Computes stack trace information from the stack property. + * Chrome and Gecko use this property. + * @param {Error} ex + * @return {?Object.} Stack trace information. + */ + function computeStackTraceFromStackProp(ex) { + if (typeof ex.stack === 'undefined' || !ex.stack) return; + + var chrome = /^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i; + var winjs = /^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i; + // NOTE: blob urls are now supposed to always have an origin, therefore it's format + // which is `blob:http://url/path/with-some-uuid`, is matched by `blob.*?:\/` as well + var gecko = /^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i; + // Used to additionally parse URL/line/column from eval frames + var geckoEval = /(\S+) line (\d+)(?: > eval line \d+)* > eval/i; + var chromeEval = /\((\S*)(?::(\d+))(?::(\d+))\)/; + var lines = ex.stack.split('\n'); + var stack = []; + var submatch; + var parts; + var element; + var reference = /^(.*) is undefined$/.exec(ex.message); + + for (var i = 0, j = lines.length; i < j; ++i) { + if ((parts = chrome.exec(lines[i]))) { + var isNative = parts[2] && parts[2].indexOf('native') === 0; // start of line + var isEval = parts[2] && parts[2].indexOf('eval') === 0; // start of line + if (isEval && (submatch = chromeEval.exec(parts[2]))) { + // throw out eval line/column and use top-most line/column number + parts[2] = submatch[1]; // url + parts[3] = submatch[2]; // line + parts[4] = submatch[3]; // column + } + element = { + url: !isNative ? parts[2] : null, + func: parts[1] || UNKNOWN_FUNCTION, + args: isNative ? [parts[2]] : [], + line: parts[3] ? +parts[3] : null, + column: parts[4] ? +parts[4] : null + }; + } else if ((parts = winjs.exec(lines[i]))) { + element = { + url: parts[2], + func: parts[1] || UNKNOWN_FUNCTION, + args: [], + line: +parts[3], + column: parts[4] ? +parts[4] : null + }; + } else if ((parts = gecko.exec(lines[i]))) { + var isEval = parts[3] && parts[3].indexOf(' > eval') > -1; + if (isEval && (submatch = geckoEval.exec(parts[3]))) { + // throw out eval line/column and use top-most line number + parts[3] = submatch[1]; + parts[4] = submatch[2]; + parts[5] = null; // no column when eval + } else if (i === 0 && !parts[5] && typeof ex.columnNumber !== 'undefined') { + // FireFox uses this awesome columnNumber property for its top frame + // Also note, Firefox's column number is 0-based and everything else expects 1-based, + // so adding 1 + // NOTE: this hack doesn't work if top-most frame is eval + stack[0].column = ex.columnNumber + 1; + } + element = { + url: parts[3], + func: parts[1] || UNKNOWN_FUNCTION, + args: parts[2] ? parts[2].split(',') : [], + line: parts[4] ? +parts[4] : null, + column: parts[5] ? +parts[5] : null + }; + } else { + continue; + } + + if (!element.func && element.line) { + element.func = UNKNOWN_FUNCTION; + } + + if (element.url && element.url.substr(0, 5) === 'blob:') { + // Special case for handling JavaScript loaded into a blob. + // We use a synchronous AJAX request here as a blob is already in + // memory - it's not making a network request. This will generate a warning + // in the browser console, but there has already been an error so that's not + // that much of an issue. + var xhr = new XMLHttpRequest(); + xhr.open('GET', element.url, false); + xhr.send(null); + + // If we failed to download the source, skip this patch + if (xhr.status === 200) { + var source = xhr.responseText || ''; + + // We trim the source down to the last 300 characters as sourceMappingURL is always at the end of the file. + // Why 300? To be in line with: https://github.com/getsentry/sentry/blob/4af29e8f2350e20c28a6933354e4f42437b4ba42/src/sentry/lang/javascript/processor.py#L164-L175 + source = source.slice(-300); + + // Now we dig out the source map URL + var sourceMaps = source.match(/\/\/# sourceMappingURL=(.*)$/); + + // If we don't find a source map comment or we find more than one, continue on to the next element. + if (sourceMaps) { + var sourceMapAddress = sourceMaps[1]; + + // Now we check to see if it's a relative URL. + // If it is, convert it to an absolute one. + if (sourceMapAddress.charAt(0) === '~') { + sourceMapAddress = getLocationOrigin() + sourceMapAddress.slice(1); + } + + // Now we strip the '.map' off of the end of the URL and update the + // element so that Sentry can match the map to the blob. + element.url = sourceMapAddress.slice(0, -4); + } + } + } + + stack.push(element); + } + + if (!stack.length) { + return null; + } + + return { + name: ex.name, + message: ex.message, + url: getLocationHref(), + stack: stack + }; + } + + /** + * Adds information about the first frame to incomplete stack traces. + * Safari and IE require this to get complete data on the first frame. + * @param {Object.} stackInfo Stack trace information from + * one of the compute* methods. + * @param {string} url The URL of the script that caused an error. + * @param {(number|string)} lineNo The line number of the script that + * caused an error. + * @param {string=} message The error generated by the browser, which + * hopefully contains the name of the object that caused the error. + * @return {boolean} Whether or not the stack information was + * augmented. + */ + function augmentStackTraceWithInitialElement(stackInfo, url, lineNo, message) { + var initial = { + url: url, + line: lineNo + }; + + if (initial.url && initial.line) { + stackInfo.incomplete = false; + + if (!initial.func) { + initial.func = UNKNOWN_FUNCTION; + } + + if (stackInfo.stack.length > 0) { + if (stackInfo.stack[0].url === initial.url) { + if (stackInfo.stack[0].line === initial.line) { + return false; // already in stack trace + } else if ( + !stackInfo.stack[0].line && + stackInfo.stack[0].func === initial.func + ) { + stackInfo.stack[0].line = initial.line; + return false; + } + } + } + + stackInfo.stack.unshift(initial); + stackInfo.partial = true; + return true; + } else { + stackInfo.incomplete = true; + } + + return false; + } + + /** + * Computes stack trace information by walking the arguments.caller + * chain at the time the exception occurred. This will cause earlier + * frames to be missed but is the only way to get any stack trace in + * Safari and IE. The top frame is restored by + * {@link augmentStackTraceWithInitialElement}. + * @param {Error} ex + * @return {?Object.} Stack trace information. + */ + function computeStackTraceByWalkingCallerChain(ex, depth) { + var functionName = /function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i, + stack = [], + funcs = {}, + recursion = false, + parts, + item, + source; + + for ( + var curr = computeStackTraceByWalkingCallerChain.caller; + curr && !recursion; + curr = curr.caller + ) { + if (curr === computeStackTrace || curr === TraceKit.report) { + // console.log('skipping internal function'); + continue; + } + + item = { + url: null, + func: UNKNOWN_FUNCTION, + line: null, + column: null + }; + + if (curr.name) { + item.func = curr.name; + } else if ((parts = functionName.exec(curr.toString()))) { + item.func = parts[1]; + } + + if (typeof item.func === 'undefined') { + try { + item.func = parts.input.substring(0, parts.input.indexOf('{')); + } catch (e) {} + } + + if (funcs['' + curr]) { + recursion = true; + } else { + funcs['' + curr] = true; + } + + stack.push(item); + } + + if (depth) { + // console.log('depth is ' + depth); + // console.log('stack is ' + stack.length); + stack.splice(0, depth); + } + + var result = { + name: ex.name, + message: ex.message, + url: getLocationHref(), + stack: stack + }; + augmentStackTraceWithInitialElement( + result, + ex.sourceURL || ex.fileName, + ex.line || ex.lineNumber, + ex.message || ex.description + ); + return result; + } + + /** + * Computes a stack trace for an exception. + * @param {Error} ex + * @param {(string|number)=} depth + */ + function computeStackTrace(ex, depth) { + var stack = null; + depth = depth == null ? 0 : +depth; + + try { + stack = computeStackTraceFromStackProp(ex); + if (stack) { + return stack; + } + } catch (e) { + if (TraceKit.debug) { + throw e; + } + } + + try { + stack = computeStackTraceByWalkingCallerChain(ex, depth + 1); + if (stack) { + return stack; + } + } catch (e) { + if (TraceKit.debug) { + throw e; + } + } + return { + name: ex.name, + message: ex.message, + url: getLocationHref() + }; + } + + computeStackTrace.augmentStackTraceWithInitialElement = augmentStackTraceWithInitialElement; + computeStackTrace.computeStackTraceFromStackProp = computeStackTraceFromStackProp; + + return computeStackTrace; +})(); + +module.exports = TraceKit; + +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"7":7}],9:[function(_dereq_,module,exports){ +/* + json-stringify-safe + Like JSON.stringify, but doesn't throw on circular references. + + Originally forked from https://github.com/isaacs/json-stringify-safe + version 5.0.1 on 3/8/2017 and modified to handle Errors serialization + and IE8 compatibility. Tests for this are in test/vendor. + + ISC license: https://github.com/isaacs/json-stringify-safe/blob/master/LICENSE +*/ + +exports = module.exports = stringify; +exports.getSerialize = serializer; + +function indexOf(haystack, needle) { + for (var i = 0; i < haystack.length; ++i) { + if (haystack[i] === needle) return i; + } + return -1; +} + +function stringify(obj, replacer, spaces, cycleReplacer) { + return JSON.stringify(obj, serializer(replacer, cycleReplacer), spaces); +} + +// https://github.com/ftlabs/js-abbreviate/blob/fa709e5f139e7770a71827b1893f22418097fbda/index.js#L95-L106 +function stringifyError(value) { + var err = { + // These properties are implemented as magical getters and don't show up in for in + stack: value.stack, + message: value.message, + name: value.name + }; + + for (var i in value) { + if (Object.prototype.hasOwnProperty.call(value, i)) { + err[i] = value[i]; + } + } + + return err; +} + +function serializer(replacer, cycleReplacer) { + var stack = []; + var keys = []; + + if (cycleReplacer == null) { + cycleReplacer = function(key, value) { + if (stack[0] === value) { + return '[Circular ~]'; + } + return '[Circular ~.' + keys.slice(0, indexOf(stack, value)).join('.') + ']'; + }; + } + + return function(key, value) { + if (stack.length > 0) { + var thisPos = indexOf(stack, this); + ~thisPos ? stack.splice(thisPos + 1) : stack.push(this); + ~thisPos ? keys.splice(thisPos, Infinity, key) : keys.push(key); + + if (~indexOf(stack, value)) { + value = cycleReplacer.call(this, key, value); + } + } else { + stack.push(value); + } + + return replacer == null + ? value instanceof Error ? stringifyError(value) : value + : replacer.call(this, key, value); + }; +} + +},{}],10:[function(_dereq_,module,exports){ +/* + * JavaScript MD5 + * https://github.com/blueimp/JavaScript-MD5 + * + * Copyright 2011, Sebastian Tschan + * https://blueimp.net + * + * Licensed under the MIT license: + * https://opensource.org/licenses/MIT + * + * Based on + * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message + * Digest Algorithm, as defined in RFC 1321. + * Version 2.2 Copyright (C) Paul Johnston 1999 - 2009 + * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet + * Distributed under the BSD License + * See http://pajhome.org.uk/crypt/md5 for more info. + */ + +/* +* Add integers, wrapping at 2^32. This uses 16-bit operations internally +* to work around bugs in some JS interpreters. +*/ +function safeAdd(x, y) { + var lsw = (x & 0xffff) + (y & 0xffff); + var msw = (x >> 16) + (y >> 16) + (lsw >> 16); + return (msw << 16) | (lsw & 0xffff); +} + +/* +* Bitwise rotate a 32-bit number to the left. +*/ +function bitRotateLeft(num, cnt) { + return (num << cnt) | (num >>> (32 - cnt)); +} + +/* +* These functions implement the four basic operations the algorithm uses. +*/ +function md5cmn(q, a, b, x, s, t) { + return safeAdd(bitRotateLeft(safeAdd(safeAdd(a, q), safeAdd(x, t)), s), b); +} +function md5ff(a, b, c, d, x, s, t) { + return md5cmn((b & c) | (~b & d), a, b, x, s, t); +} +function md5gg(a, b, c, d, x, s, t) { + return md5cmn((b & d) | (c & ~d), a, b, x, s, t); +} +function md5hh(a, b, c, d, x, s, t) { + return md5cmn(b ^ c ^ d, a, b, x, s, t); +} +function md5ii(a, b, c, d, x, s, t) { + return md5cmn(c ^ (b | ~d), a, b, x, s, t); +} + +/* +* Calculate the MD5 of an array of little-endian words, and a bit length. +*/ +function binlMD5(x, len) { + /* append padding */ + x[len >> 5] |= 0x80 << (len % 32); + x[(((len + 64) >>> 9) << 4) + 14] = len; + + var i; + var olda; + var oldb; + var oldc; + var oldd; + var a = 1732584193; + var b = -271733879; + var c = -1732584194; + var d = 271733878; + + for (i = 0; i < x.length; i += 16) { + olda = a; + oldb = b; + oldc = c; + oldd = d; + + a = md5ff(a, b, c, d, x[i], 7, -680876936); + d = md5ff(d, a, b, c, x[i + 1], 12, -389564586); + c = md5ff(c, d, a, b, x[i + 2], 17, 606105819); + b = md5ff(b, c, d, a, x[i + 3], 22, -1044525330); + a = md5ff(a, b, c, d, x[i + 4], 7, -176418897); + d = md5ff(d, a, b, c, x[i + 5], 12, 1200080426); + c = md5ff(c, d, a, b, x[i + 6], 17, -1473231341); + b = md5ff(b, c, d, a, x[i + 7], 22, -45705983); + a = md5ff(a, b, c, d, x[i + 8], 7, 1770035416); + d = md5ff(d, a, b, c, x[i + 9], 12, -1958414417); + c = md5ff(c, d, a, b, x[i + 10], 17, -42063); + b = md5ff(b, c, d, a, x[i + 11], 22, -1990404162); + a = md5ff(a, b, c, d, x[i + 12], 7, 1804603682); + d = md5ff(d, a, b, c, x[i + 13], 12, -40341101); + c = md5ff(c, d, a, b, x[i + 14], 17, -1502002290); + b = md5ff(b, c, d, a, x[i + 15], 22, 1236535329); + + a = md5gg(a, b, c, d, x[i + 1], 5, -165796510); + d = md5gg(d, a, b, c, x[i + 6], 9, -1069501632); + c = md5gg(c, d, a, b, x[i + 11], 14, 643717713); + b = md5gg(b, c, d, a, x[i], 20, -373897302); + a = md5gg(a, b, c, d, x[i + 5], 5, -701558691); + d = md5gg(d, a, b, c, x[i + 10], 9, 38016083); + c = md5gg(c, d, a, b, x[i + 15], 14, -660478335); + b = md5gg(b, c, d, a, x[i + 4], 20, -405537848); + a = md5gg(a, b, c, d, x[i + 9], 5, 568446438); + d = md5gg(d, a, b, c, x[i + 14], 9, -1019803690); + c = md5gg(c, d, a, b, x[i + 3], 14, -187363961); + b = md5gg(b, c, d, a, x[i + 8], 20, 1163531501); + a = md5gg(a, b, c, d, x[i + 13], 5, -1444681467); + d = md5gg(d, a, b, c, x[i + 2], 9, -51403784); + c = md5gg(c, d, a, b, x[i + 7], 14, 1735328473); + b = md5gg(b, c, d, a, x[i + 12], 20, -1926607734); + + a = md5hh(a, b, c, d, x[i + 5], 4, -378558); + d = md5hh(d, a, b, c, x[i + 8], 11, -2022574463); + c = md5hh(c, d, a, b, x[i + 11], 16, 1839030562); + b = md5hh(b, c, d, a, x[i + 14], 23, -35309556); + a = md5hh(a, b, c, d, x[i + 1], 4, -1530992060); + d = md5hh(d, a, b, c, x[i + 4], 11, 1272893353); + c = md5hh(c, d, a, b, x[i + 7], 16, -155497632); + b = md5hh(b, c, d, a, x[i + 10], 23, -1094730640); + a = md5hh(a, b, c, d, x[i + 13], 4, 681279174); + d = md5hh(d, a, b, c, x[i], 11, -358537222); + c = md5hh(c, d, a, b, x[i + 3], 16, -722521979); + b = md5hh(b, c, d, a, x[i + 6], 23, 76029189); + a = md5hh(a, b, c, d, x[i + 9], 4, -640364487); + d = md5hh(d, a, b, c, x[i + 12], 11, -421815835); + c = md5hh(c, d, a, b, x[i + 15], 16, 530742520); + b = md5hh(b, c, d, a, x[i + 2], 23, -995338651); + + a = md5ii(a, b, c, d, x[i], 6, -198630844); + d = md5ii(d, a, b, c, x[i + 7], 10, 1126891415); + c = md5ii(c, d, a, b, x[i + 14], 15, -1416354905); + b = md5ii(b, c, d, a, x[i + 5], 21, -57434055); + a = md5ii(a, b, c, d, x[i + 12], 6, 1700485571); + d = md5ii(d, a, b, c, x[i + 3], 10, -1894986606); + c = md5ii(c, d, a, b, x[i + 10], 15, -1051523); + b = md5ii(b, c, d, a, x[i + 1], 21, -2054922799); + a = md5ii(a, b, c, d, x[i + 8], 6, 1873313359); + d = md5ii(d, a, b, c, x[i + 15], 10, -30611744); + c = md5ii(c, d, a, b, x[i + 6], 15, -1560198380); + b = md5ii(b, c, d, a, x[i + 13], 21, 1309151649); + a = md5ii(a, b, c, d, x[i + 4], 6, -145523070); + d = md5ii(d, a, b, c, x[i + 11], 10, -1120210379); + c = md5ii(c, d, a, b, x[i + 2], 15, 718787259); + b = md5ii(b, c, d, a, x[i + 9], 21, -343485551); + + a = safeAdd(a, olda); + b = safeAdd(b, oldb); + c = safeAdd(c, oldc); + d = safeAdd(d, oldd); + } + return [a, b, c, d]; +} + +/* +* Convert an array of little-endian words to a string +*/ +function binl2rstr(input) { + var i; + var output = ''; + var length32 = input.length * 32; + for (i = 0; i < length32; i += 8) { + output += String.fromCharCode((input[i >> 5] >>> (i % 32)) & 0xff); + } + return output; +} + +/* +* Convert a raw string to an array of little-endian words +* Characters >255 have their high-byte silently ignored. +*/ +function rstr2binl(input) { + var i; + var output = []; + output[(input.length >> 2) - 1] = undefined; + for (i = 0; i < output.length; i += 1) { + output[i] = 0; + } + var length8 = input.length * 8; + for (i = 0; i < length8; i += 8) { + output[i >> 5] |= (input.charCodeAt(i / 8) & 0xff) << (i % 32); + } + return output; +} + +/* +* Calculate the MD5 of a raw string +*/ +function rstrMD5(s) { + return binl2rstr(binlMD5(rstr2binl(s), s.length * 8)); +} + +/* +* Calculate the HMAC-MD5, of a key and some data (raw strings) +*/ +function rstrHMACMD5(key, data) { + var i; + var bkey = rstr2binl(key); + var ipad = []; + var opad = []; + var hash; + ipad[15] = opad[15] = undefined; + if (bkey.length > 16) { + bkey = binlMD5(bkey, key.length * 8); + } + for (i = 0; i < 16; i += 1) { + ipad[i] = bkey[i] ^ 0x36363636; + opad[i] = bkey[i] ^ 0x5c5c5c5c; + } + hash = binlMD5(ipad.concat(rstr2binl(data)), 512 + data.length * 8); + return binl2rstr(binlMD5(opad.concat(hash), 512 + 128)); +} + +/* +* Convert a raw string to a hex string +*/ +function rstr2hex(input) { + var hexTab = '0123456789abcdef'; + var output = ''; + var x; + var i; + for (i = 0; i < input.length; i += 1) { + x = input.charCodeAt(i); + output += hexTab.charAt((x >>> 4) & 0x0f) + hexTab.charAt(x & 0x0f); + } + return output; +} + +/* +* Encode a string as utf-8 +*/ +function str2rstrUTF8(input) { + return unescape(encodeURIComponent(input)); +} + +/* +* Take string arguments and return either raw or hex encoded strings +*/ +function rawMD5(s) { + return rstrMD5(str2rstrUTF8(s)); +} +function hexMD5(s) { + return rstr2hex(rawMD5(s)); +} +function rawHMACMD5(k, d) { + return rstrHMACMD5(str2rstrUTF8(k), str2rstrUTF8(d)); +} +function hexHMACMD5(k, d) { + return rstr2hex(rawHMACMD5(k, d)); +} + +function md5(string, key, raw) { + if (!key) { + if (!raw) { + return hexMD5(string); + } + return rawMD5(string); + } + if (!raw) { + return hexHMACMD5(key, string); + } + return rawHMACMD5(key, string); +} + +module.exports = md5; + +},{}]},{},[6,1,2])(6) +}); \ No newline at end of file diff --git a/packages/raven-js/dist/angular,ember/raven.min.js b/packages/raven-js/dist/angular,ember/raven.min.js new file mode 100644 index 000000000000..d0b7ec3caca0 --- /dev/null +++ b/packages/raven-js/dist/angular,ember/raven.min.js @@ -0,0 +1,4 @@ +/*! Raven.js 3.25.2 (30b6d4e) | github.com/getsentry/raven-js */ +!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.Raven=a()}}(function(){return function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};b[g][0].call(k.exports,function(a){var c=b[g][1][a];return e(c?c:a)},k,k.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;gthis.l.maxBreadcrumbs&&this.v.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.s.push([a,b]),this.o&&this.G(),this},setUserContext:function(a){return this.k.user=a,this},setExtraContext:function(a){return this.$("extra",a),this},setTagsContext:function(a){return this.$("tags",a),this},clearContext:function(){return this.k={},this},getContext:function(){return JSON.parse(h(this.k))},setEnvironment:function(a){return this.l.environment=a,this},setRelease:function(a){return this.l.release=a,this},setDataCallback:function(a){var b=this.l.dataCallback;return this.l.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.l.breadcrumbCallback;return this.l.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.l.shouldSendCallback;return this.l.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.l.transport=a,this},lastException:function(){return this.e},lastEventId:function(){return this.g},isSetup:function(){return!!this.b&&(!!this.h||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.A("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=R.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(S){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.I;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.k.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.K(this.H(c)),h=S.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(S.head||S.body).appendChild(h)}},M:function(){var a=this;this.n+=1,setTimeout(function(){a.n-=1})},_:function(a,b){var c,d;if(this.c){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),S.createEvent?(c=S.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=S.createEventObject(),c.eventType=a);for(d in b)A(b,d)&&(c[d]=b[d]);if(S.createEvent)S.dispatchEvent(c);else try{S.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},aa:function(a){var b=this;return function(c){if(b.ba=null,b.w!==c){b.w=c;var d;try{d=E(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ca:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.ba;g||a.aa("input")(c),clearTimeout(g),a.ba=setTimeout(function(){a.ba=null},b)}}},da:function(a,b){var c=H(this.x.href),d=H(b),e=H(a);this.y=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},D:function(){var a=this;a.ea=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.N?a.ea.apply(this.P,arguments):a.ea.apply(this,arguments)}},R:function(){this.ea&&(Function.prototype.toString=this.ea)},E:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.da(b.y,c+""),a.apply(this,arguments)}};I(R.history,"pushState",j,d),I(R.history,"replaceState",j,d)}if(c.console&&"console"in R&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};w(["debug","info","warn","error","log"],function(a,b){O(console,b,k)})}},S:function(){for(var a;this.u.length;){a=this.u.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},T:function(){for(var a in this.r)this.q[a]=this.r[a]},G:function(){var a=this;w(this.s,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},H:function(a){var b=Q.exec(a),c={},d=7;try{for(;d--;)c[P[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.l.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},K:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},B:function(){this.n||this.W.apply(this,arguments)},W:function(a,b){var c=this.Y(a,b);this._("handle",{stackInfo:a,options:b}),this.ga(a.name,a.message,a.url,a.lineno,c,b)},Y:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(w(a.stack,function(b,e){var f=c.ha(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.v,0)}),this.k.user&&(a.user=this.k.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),a=this.qa(a),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||v(a[b]))&&delete a[b]}),s(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!v(a)&&(!s(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.na()?void this.A("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function F(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&l(b))for(c=b.split(/\s+/),f=0;fc?Q(a,b-1):d}function R(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?X:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function S(a,b){function c(a){return m(a)?a.map(function(a){return c(a)}):k(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!m(b)||m(b)&&0===b.length)return a;var d,e=A(b),f="********";try{d=JSON.parse(T(a))}catch(g){return a}return c(d)}var T=a(9),U="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},V=3,W=51200,X=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isDOMError:g,isDOMException:h,isUndefined:i,isFunction:j,isPlainObject:k,isString:l,isArray:m,isEmptyObject:n,supportsErrorEvent:o,supportsDOMError:p,supportsDOMException:q,supportsFetch:r,supportsReferrerPolicy:s,supportsPromiseRejectionEvent:t,wrappedCallback:u,each:v,objectMerge:w,truncate:y,objectFrozen:x,hasKey:z,joinRegExp:A,urlencode:B,uuid4:D,htmlTreeAsString:E,htmlElementAsString:F,isSameException:I,isSameStacktrace:J,parseUrl:C,fill:K,safeJoin:L,serializeException:Q,serializeKeysForMessage:R,sanitize:S}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{9:9}],8:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}function e(){return"undefined"==typeof document||null==document.location?"":(document.location.origin||(document.location.origin=document.location.protocol+"//"+document.location.hostname+(document.location.port?":"+document.location.port:"")),document.location.origin)}var f=a(7),g={collectWindowErrors:!0,debug:!1},h="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},i=[].slice,j="?",k=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;g.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function e(a,b){var c=null;if(!b||g.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(i.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,h,i){var l=null,m=f.isErrorEvent(i)?i.error:i,n=f.isErrorEvent(a)?a.message:a;if(v)g.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&f.isError(m))l=g.computeStackTrace(m),e(l,!0);else{var p,r={url:b,line:c,column:h},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(k);p&&(s=p[1],n=p[2])}r.func=j,l={name:s,message:n,url:d(),stack:[r]},e(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=h.onerror,h.onerror=l,r=!0)}function n(){r&&(h.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,e.apply(null,[a,!1].concat(b))}function p(a,b){var c=i.call(arguments,1);if(v){if(u===a)return;o()}var d=g.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),g.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,f,g=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,h=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,i=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,k=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,l=/\((\S*)(?::(\d+))(?::(\d+))\)/,m=a.stack.split("\n"),n=[],o=(/^(.*) is undefined$/.exec(a.message),0),p=m.length;o eval")>-1;r&&(b=k.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==o||c[5]||"undefined"==typeof a.columnNumber||(n[0].column=a.columnNumber+1),f={url:c[3],func:c[1]||j,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}if(!f.func&&f.line&&(f.func=j),f.url&&"blob:"===f.url.substr(0,5)){var s=new XMLHttpRequest;if(s.open("GET",f.url,!1),s.send(null),200===s.status){var t=s.responseText||"";t=t.slice(-300);var u=t.match(/\/\/# sourceMappingURL=(.*)$/);if(u){var v=u[1];"~"===v.charAt(0)&&(v=e()+v.slice(1)),f.url=v.slice(0,-4)}}}n.push(f)}return n.length?{name:a.name,message:a.message,url:d(),stack:n}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){ +if(a.incomplete=!1,e.func||(e.func=j),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,e){for(var h,i,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==f&&o!==g.report){if(i={url:null,func:j,line:null,column:null},o.name?i.func=o.name:(h=k.exec(o.toString()))&&(i.func=h[1]),"undefined"==typeof i.func)try{i.func=h.input.substring(0,h.input.indexOf("{"))}catch(p){}m[""+o]?n=!0:m[""+o]=!0,l.push(i)}e&&l.splice(0,e);var q={name:a.name,message:a.message,url:d(),stack:l};return b(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),q}function f(b,e){var f=null;e=null==e?0:+e;try{if(f=a(b))return f}catch(h){if(g.debug)throw h}try{if(f=c(b,e+1))return f}catch(h){if(g.debug)throw h}return{name:b.name,message:b.message,url:d()}}return f.augmentStackTraceWithInitialElement=b,f.computeStackTraceFromStackProp=a,f}(),b.exports=g}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{7:7}],9:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}],10:[function(a,b,c){function d(a,b){var c=(65535&a)+(65535&b),d=(a>>16)+(b>>16)+(c>>16);return d<<16|65535&c}function e(a,b){return a<>>32-b}function f(a,b,c,f,g,h){return d(e(d(d(b,a),d(f,h)),g),c)}function g(a,b,c,d,e,g,h){return f(b&c|~b&d,a,b,e,g,h)}function h(a,b,c,d,e,g,h){return f(b&d|c&~d,a,b,e,g,h)}function i(a,b,c,d,e,g,h){return f(b^c^d,a,b,e,g,h)}function j(a,b,c,d,e,g,h){return f(c^(b|~d),a,b,e,g,h)}function k(a,b){a[b>>5]|=128<>>9<<4)+14]=b;var c,e,f,k,l,m=1732584193,n=-271733879,o=-1732584194,p=271733878;for(c=0;c>5]>>>b%32&255);return c}function m(a){var b,c=[];for(c[(a.length>>2)-1]=void 0,b=0;b>5]|=(255&a.charCodeAt(b/8))<16&&(e=k(e,8*a.length)),c=0;c<16;c+=1)f[c]=909522486^e[c],g[c]=1549556828^e[c];return d=k(f.concat(m(b)),512+8*b.length),l(k(g.concat(d),640))}function p(a){var b,c,d="0123456789abcdef",e="";for(c=0;c>>4&15)+d.charAt(15&b);return e}function q(a){return unescape(encodeURIComponent(a))}function r(a){return n(q(a))}function s(a){return p(r(a))}function t(a,b){return o(q(a),q(b))}function u(a,b){return p(t(a,b))}function v(a,b,c){return b?c?t(b,a):u(b,a):c?r(a):s(a)}b.exports=v},{}]},{},[6,1,2])(6)}); +//# sourceMappingURL=raven.min.js.map \ No newline at end of file diff --git a/packages/raven-js/dist/angular,ember/raven.min.js.map b/packages/raven-js/dist/angular,ember/raven.min.js.map new file mode 100644 index 000000000000..81491d475293 --- /dev/null +++ b/packages/raven-js/dist/angular,ember/raven.min.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","angularPlugin","angular","RavenProvider","$get","$window","ExceptionHandlerProvider","$provide","decorator","exceptionHandler","R","$delegate","ex","cause","captureException","extra","moduleName","provider","config","setDataCallback","wrappedCallback","data","_normalizeData","angularPattern","exception","values","matches","exec","value","type","message","angularDocs","substr","addPlugin","6","7","2","emberPlugin","Ember","_oldOnError","onerror","error","RSVP","on","reason","context","captureMessage","3","RavenConfigError","name","prototype","constructor","4","utils","wrapMethod","console","level","callback","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","msg","safeJoin","logger","Function","apply","5","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","sanitizeKeys","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isErrorEvent","isDOMError","isDOMException","isError","isObject","isPlainObject","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","sanitize","wrapConsoleMethod","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","dsn","options","_logDebug","globalOptions","key","setDSN","push","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","toString","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","func","undefined","wrap","_before","wrapped","deep","_ignoreNextOnError","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","U","event","unhandledPromiseRejection","C","_promiseRejectionHandler","bind","addEventListener","Q","removeEventListener","trimHeadFrames","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","V","currentOptions","exKeys","Object","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","M","setTimeout","_","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","aa","evtName","_keypressTimeout","target","category","ca","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","da","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","D","_originalFunctionToString","E","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","F","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","S","builtin","T","G","installer","concat","H","str","m","allowSecretKey","K","port","B","W","stackInfo","_triggerEvent","_processException","lineno","Y","frame","_normalizeFrame","in_app","ha","stackInfoUrl","normalized","filename","line","colno","column","function","ga","prefixedMessage","transaction","ia","request","Referer","breadcrumbs","_trimBreadcrumbs","ja","urlProp","urlProps","ka","httpData","userAgent","User-Agent","referrer","z","_backoffDuration","_backoffStart","na","oa","current","last","pa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Z","baseData","project","platform","_getHttpData","serverName","server_name","_sanitizeData","forEach","random","_sendProcessedPayload","qa","sa","ra","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","ta","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","open","setRequestHeader","send","ua","hash","evaluated","A","$","setUser","setReleaseContext","10","8","9","RavenConstructor","_Raven","noConflict","Client","what","supportsErrorEvent","ErrorEvent","supportsDOMError","DOMError","supportsDOMException","DOMException","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","sanitizeMask","safeInput","o_O","getLocationHref","getLocationOrigin","origin","hostname","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","responseText","sourceMaps","sourceMapAddress","charAt","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","y","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","string","raw"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file diff --git a/packages/raven-js/dist/angular,require,vue/raven.js b/packages/raven-js/dist/angular,require,vue/raven.js new file mode 100644 index 000000000000..aeef9000f5de --- /dev/null +++ b/packages/raven-js/dist/angular,require,vue/raven.js @@ -0,0 +1,4154 @@ +/*! Raven.js 3.25.2 (30b6d4e) | github.com/getsentry/raven-js */ + +/* + * Includes TraceKit + * https://github.com/getsentry/TraceKit + * + * Copyright 2018 Matt Robenolt and other contributors + * Released under the BSD license + * https://github.com/getsentry/raven-js/blob/master/LICENSE + * + */ + +(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.Raven = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o' : 'anonymous component') + + (vm._isVue && vm.$options.__file ? ' at ' + vm.$options.__file : '') + ); +} + +function vuePlugin(Raven, Vue) { + Vue = Vue || window.Vue; + + // quit if Vue isn't on the page + if (!Vue || !Vue.config) return; + + var _oldOnError = Vue.config.errorHandler; + Vue.config.errorHandler = function VueErrorHandler(error, vm, info) { + var metaData = {}; + + // vm and lifecycleHook are not always available + if (Object.prototype.toString.call(vm) === '[object Object]') { + metaData.componentName = formatComponentName(vm); + metaData.propsData = vm.$options.propsData; + } + + if (typeof info !== 'undefined') { + metaData.lifecycleHook = info; + } + + Raven.captureException(error, { + extra: metaData + }); + + if (typeof _oldOnError === 'function') { + _oldOnError.call(this, error, vm, info); + } + }; +} + +module.exports = vuePlugin; + +_dereq_(7).addPlugin(module.exports); +},{"7":7}],4:[function(_dereq_,module,exports){ +function RavenConfigError(message) { + this.name = 'RavenConfigError'; + this.message = message; +} +RavenConfigError.prototype = new Error(); +RavenConfigError.prototype.constructor = RavenConfigError; + +module.exports = RavenConfigError; + +},{}],5:[function(_dereq_,module,exports){ +var utils = _dereq_(8); + +var wrapMethod = function(console, level, callback) { + var originalConsoleLevel = console[level]; + var originalConsole = console; + + if (!(level in console)) { + return; + } + + var sentryLevel = level === 'warn' ? 'warning' : level; + + console[level] = function() { + var args = [].slice.call(arguments); + + var msg = utils.safeJoin(args, ' '); + var data = {level: sentryLevel, logger: 'console', extra: {arguments: args}}; + + if (level === 'assert') { + if (args[0] === false) { + // Default browsers message + msg = + 'Assertion failed: ' + (utils.safeJoin(args.slice(1), ' ') || 'console.assert'); + data.extra.arguments = args.slice(1); + callback && callback(msg, data); + } + } else { + callback && callback(msg, data); + } + + // this fails for some browsers. :( + if (originalConsoleLevel) { + // IE9 doesn't allow calling apply on console functions directly + // See: https://stackoverflow.com/questions/5472938/does-ie9-support-console-log-and-is-it-a-real-function#answer-5473193 + Function.prototype.apply.call(originalConsoleLevel, originalConsole, args); + } + }; +}; + +module.exports = { + wrapMethod: wrapMethod +}; + +},{"8":8}],6:[function(_dereq_,module,exports){ +(function (global){ +/*global XDomainRequest:false */ + +var TraceKit = _dereq_(9); +var stringify = _dereq_(10); +var md5 = _dereq_(11); +var RavenConfigError = _dereq_(4); + +var utils = _dereq_(8); +var isErrorEvent = utils.isErrorEvent; +var isDOMError = utils.isDOMError; +var isDOMException = utils.isDOMException; +var isError = utils.isError; +var isObject = utils.isObject; +var isPlainObject = utils.isPlainObject; +var isUndefined = utils.isUndefined; +var isFunction = utils.isFunction; +var isString = utils.isString; +var isArray = utils.isArray; +var isEmptyObject = utils.isEmptyObject; +var each = utils.each; +var objectMerge = utils.objectMerge; +var truncate = utils.truncate; +var objectFrozen = utils.objectFrozen; +var hasKey = utils.hasKey; +var joinRegExp = utils.joinRegExp; +var urlencode = utils.urlencode; +var uuid4 = utils.uuid4; +var htmlTreeAsString = utils.htmlTreeAsString; +var isSameException = utils.isSameException; +var isSameStacktrace = utils.isSameStacktrace; +var parseUrl = utils.parseUrl; +var fill = utils.fill; +var supportsFetch = utils.supportsFetch; +var supportsReferrerPolicy = utils.supportsReferrerPolicy; +var serializeKeysForMessage = utils.serializeKeysForMessage; +var serializeException = utils.serializeException; +var sanitize = utils.sanitize; + +var wrapConsoleMethod = _dereq_(5).wrapMethod; + +var dsnKeys = 'source protocol user pass host port path'.split(' '), + dsnPattern = /^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/; + +function now() { + return +new Date(); +} + +// This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) +var _window = + typeof window !== 'undefined' + ? window + : typeof global !== 'undefined' + ? global + : typeof self !== 'undefined' + ? self + : {}; +var _document = _window.document; +var _navigator = _window.navigator; + +function keepOriginalCallback(original, callback) { + return isFunction(callback) + ? function(data) { + return callback(data, original); + } + : callback; +} + +// First, check for JSON support +// If there is no JSON, we no-op the core features of Raven +// since JSON is required to encode the payload +function Raven() { + this._hasJSON = !!(typeof JSON === 'object' && JSON.stringify); + // Raven can run in contexts where there's no document (react-native) + this._hasDocument = !isUndefined(_document); + this._hasNavigator = !isUndefined(_navigator); + this._lastCapturedException = null; + this._lastData = null; + this._lastEventId = null; + this._globalServer = null; + this._globalKey = null; + this._globalProject = null; + this._globalContext = {}; + this._globalOptions = { + // SENTRY_RELEASE can be injected by https://github.com/getsentry/sentry-webpack-plugin + release: _window.SENTRY_RELEASE && _window.SENTRY_RELEASE.id, + logger: 'javascript', + ignoreErrors: [], + ignoreUrls: [], + whitelistUrls: [], + includePaths: [], + headers: null, + collectWindowErrors: true, + captureUnhandledRejections: true, + maxMessageLength: 0, + // By default, truncates URL values to 250 chars + maxUrlLength: 250, + stackTraceLimit: 50, + autoBreadcrumbs: true, + instrument: true, + sampleRate: 1, + sanitizeKeys: [] + }; + this._fetchDefaults = { + method: 'POST', + keepalive: true, + // Despite all stars in the sky saying that Edge supports old draft syntax, aka 'never', 'always', 'origin' and 'default + // https://caniuse.com/#feat=referrer-policy + // It doesn't. And it throw exception instead of ignoring this parameter... + // REF: https://github.com/getsentry/raven-js/issues/1233 + referrerPolicy: supportsReferrerPolicy() ? 'origin' : '' + }; + this._ignoreOnError = 0; + this._isRavenInstalled = false; + this._originalErrorStackTraceLimit = Error.stackTraceLimit; + // capture references to window.console *and* all its methods first + // before the console plugin has a chance to monkey patch + this._originalConsole = _window.console || {}; + this._originalConsoleMethods = {}; + this._plugins = []; + this._startTime = now(); + this._wrappedBuiltIns = []; + this._breadcrumbs = []; + this._lastCapturedEvent = null; + this._keypressTimeout; + this._location = _window.location; + this._lastHref = this._location && this._location.href; + this._resetBackoff(); + + // eslint-disable-next-line guard-for-in + for (var method in this._originalConsole) { + this._originalConsoleMethods[method] = this._originalConsole[method]; + } +} + +/* + * The core Raven singleton + * + * @this {Raven} + */ + +Raven.prototype = { + // Hardcode version string so that raven source can be loaded directly via + // webpack (using a build step causes webpack #1617). Grunt verifies that + // this value matches package.json during build. + // See: https://github.com/getsentry/raven-js/issues/465 + VERSION: '3.25.2', + + debug: false, + + TraceKit: TraceKit, // alias to TraceKit + + /* + * Configure Raven with a DSN and extra options + * + * @param {string} dsn The public Sentry DSN + * @param {object} options Set of global options [optional] + * @return {Raven} + */ + config: function(dsn, options) { + var self = this; + + if (self._globalServer) { + this._logDebug('error', 'Error: Raven has already been configured'); + return self; + } + if (!dsn) return self; + + var globalOptions = self._globalOptions; + + // merge in options + if (options) { + each(options, function(key, value) { + // tags and extra are special and need to be put into context + if (key === 'tags' || key === 'extra' || key === 'user') { + self._globalContext[key] = value; + } else { + globalOptions[key] = value; + } + }); + } + + self.setDSN(dsn); + + // "Script error." is hard coded into browsers for errors that it can't read. + // this is the result of a script being pulled in from an external domain and CORS. + globalOptions.ignoreErrors.push(/^Script error\.?$/); + globalOptions.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/); + + // join regexp rules into one big rule + globalOptions.ignoreErrors = joinRegExp(globalOptions.ignoreErrors); + globalOptions.ignoreUrls = globalOptions.ignoreUrls.length + ? joinRegExp(globalOptions.ignoreUrls) + : false; + globalOptions.whitelistUrls = globalOptions.whitelistUrls.length + ? joinRegExp(globalOptions.whitelistUrls) + : false; + globalOptions.includePaths = joinRegExp(globalOptions.includePaths); + globalOptions.maxBreadcrumbs = Math.max( + 0, + Math.min(globalOptions.maxBreadcrumbs || 100, 100) + ); // default and hard limit is 100 + + var autoBreadcrumbDefaults = { + xhr: true, + console: true, + dom: true, + location: true, + sentry: true + }; + + var autoBreadcrumbs = globalOptions.autoBreadcrumbs; + if ({}.toString.call(autoBreadcrumbs) === '[object Object]') { + autoBreadcrumbs = objectMerge(autoBreadcrumbDefaults, autoBreadcrumbs); + } else if (autoBreadcrumbs !== false) { + autoBreadcrumbs = autoBreadcrumbDefaults; + } + globalOptions.autoBreadcrumbs = autoBreadcrumbs; + + var instrumentDefaults = { + tryCatch: true + }; + + var instrument = globalOptions.instrument; + if ({}.toString.call(instrument) === '[object Object]') { + instrument = objectMerge(instrumentDefaults, instrument); + } else if (instrument !== false) { + instrument = instrumentDefaults; + } + globalOptions.instrument = instrument; + + TraceKit.collectWindowErrors = !!globalOptions.collectWindowErrors; + + // return for chaining + return self; + }, + + /* + * Installs a global window.onerror error handler + * to capture and report uncaught exceptions. + * At this point, install() is required to be called due + * to the way TraceKit is set up. + * + * @return {Raven} + */ + install: function() { + var self = this; + if (self.isSetup() && !self._isRavenInstalled) { + TraceKit.report.subscribe(function() { + self._handleOnErrorStackInfo.apply(self, arguments); + }); + + if (self._globalOptions.captureUnhandledRejections) { + self._attachPromiseRejectionHandler(); + } + + self._patchFunctionToString(); + + if (self._globalOptions.instrument && self._globalOptions.instrument.tryCatch) { + self._instrumentTryCatch(); + } + + if (self._globalOptions.autoBreadcrumbs) self._instrumentBreadcrumbs(); + + // Install all of the plugins + self._drainPlugins(); + + self._isRavenInstalled = true; + } + + Error.stackTraceLimit = self._globalOptions.stackTraceLimit; + return this; + }, + + /* + * Set the DSN (can be called multiple time unlike config) + * + * @param {string} dsn The public Sentry DSN + */ + setDSN: function(dsn) { + var self = this, + uri = self._parseDSN(dsn), + lastSlash = uri.path.lastIndexOf('/'), + path = uri.path.substr(1, lastSlash); + + self._dsn = dsn; + self._globalKey = uri.user; + self._globalSecret = uri.pass && uri.pass.substr(1); + self._globalProject = uri.path.substr(lastSlash + 1); + + self._globalServer = self._getGlobalServer(uri); + + self._globalEndpoint = + self._globalServer + '/' + path + 'api/' + self._globalProject + '/store/'; + + // Reset backoff state since we may be pointing at a + // new project/server + this._resetBackoff(); + }, + + /* + * Wrap code within a context so Raven can capture errors + * reliably across domains that is executed immediately. + * + * @param {object} options A specific set of options for this context [optional] + * @param {function} func The callback to be immediately executed within the context + * @param {array} args An array of arguments to be called with the callback [optional] + */ + context: function(options, func, args) { + if (isFunction(options)) { + args = func || []; + func = options; + options = undefined; + } + + return this.wrap(options, func).apply(this, args); + }, + + /* + * Wrap code within a context and returns back a new function to be executed + * + * @param {object} options A specific set of options for this context [optional] + * @param {function} func The function to be wrapped in a new context + * @param {function} func A function to call before the try/catch wrapper [optional, private] + * @return {function} The newly wrapped functions with a context + */ + wrap: function(options, func, _before) { + var self = this; + // 1 argument has been passed, and it's not a function + // so just return it + if (isUndefined(func) && !isFunction(options)) { + return options; + } + + // options is optional + if (isFunction(options)) { + func = options; + options = undefined; + } + + // At this point, we've passed along 2 arguments, and the second one + // is not a function either, so we'll just return the second argument. + if (!isFunction(func)) { + return func; + } + + // We don't wanna wrap it twice! + try { + if (func.__raven__) { + return func; + } + + // If this has already been wrapped in the past, return that + if (func.__raven_wrapper__) { + return func.__raven_wrapper__; + } + } catch (e) { + // Just accessing custom props in some Selenium environments + // can cause a "Permission denied" exception (see raven-js#495). + // Bail on wrapping and return the function as-is (defers to window.onerror). + return func; + } + + function wrapped() { + var args = [], + i = arguments.length, + deep = !options || (options && options.deep !== false); + + if (_before && isFunction(_before)) { + _before.apply(this, arguments); + } + + // Recursively wrap all of a function's arguments that are + // functions themselves. + while (i--) args[i] = deep ? self.wrap(options, arguments[i]) : arguments[i]; + + try { + // Attempt to invoke user-land function + // NOTE: If you are a Sentry user, and you are seeing this stack frame, it + // means Raven caught an error invoking your application code. This is + // expected behavior and NOT indicative of a bug with Raven.js. + return func.apply(this, args); + } catch (e) { + self._ignoreNextOnError(); + self.captureException(e, options); + throw e; + } + } + + // copy over properties of the old function + for (var property in func) { + if (hasKey(func, property)) { + wrapped[property] = func[property]; + } + } + wrapped.prototype = func.prototype; + + func.__raven_wrapper__ = wrapped; + // Signal that this function has been wrapped/filled already + // for both debugging and to prevent it to being wrapped/filled twice + wrapped.__raven__ = true; + wrapped.__orig__ = func; + + return wrapped; + }, + + /** + * Uninstalls the global error handler. + * + * @return {Raven} + */ + uninstall: function() { + TraceKit.report.uninstall(); + + this._detachPromiseRejectionHandler(); + this._unpatchFunctionToString(); + this._restoreBuiltIns(); + this._restoreConsole(); + + Error.stackTraceLimit = this._originalErrorStackTraceLimit; + this._isRavenInstalled = false; + + return this; + }, + + /** + * Callback used for `unhandledrejection` event + * + * @param {PromiseRejectionEvent} event An object containing + * promise: the Promise that was rejected + * reason: the value with which the Promise was rejected + * @return void + */ + _promiseRejectionHandler: function(event) { + this._logDebug('debug', 'Raven caught unhandled promise rejection:', event); + this.captureException(event.reason, { + extra: { + unhandledPromiseRejection: true + } + }); + }, + + /** + * Installs the global promise rejection handler. + * + * @return {raven} + */ + _attachPromiseRejectionHandler: function() { + this._promiseRejectionHandler = this._promiseRejectionHandler.bind(this); + _window.addEventListener && + _window.addEventListener('unhandledrejection', this._promiseRejectionHandler); + return this; + }, + + /** + * Uninstalls the global promise rejection handler. + * + * @return {raven} + */ + _detachPromiseRejectionHandler: function() { + _window.removeEventListener && + _window.removeEventListener('unhandledrejection', this._promiseRejectionHandler); + return this; + }, + + /** + * Manually capture an exception and send it over to Sentry + * + * @param {error} ex An exception to be logged + * @param {object} options A specific set of options for this error [optional] + * @return {Raven} + */ + captureException: function(ex, options) { + options = objectMerge({trimHeadFrames: 0}, options ? options : {}); + + if (isErrorEvent(ex) && ex.error) { + // If it is an ErrorEvent with `error` property, extract it to get actual Error + ex = ex.error; + } else if (isDOMError(ex) || isDOMException(ex)) { + // If it is a DOMError or DOMException (which are legacy APIs, but still supported in some browsers) + // then we just extract the name and message, as they don't provide anything else + // https://developer.mozilla.org/en-US/docs/Web/API/DOMError + // https://developer.mozilla.org/en-US/docs/Web/API/DOMException + var name = ex.name || (isDOMError(ex) ? 'DOMError' : 'DOMException'); + var message = ex.message ? name + ': ' + ex.message : name; + + return this.captureMessage( + message, + objectMerge(options, { + // neither DOMError or DOMException provide stack trace and we most likely wont get it this way as well + // but it's barely any overhead so we may at least try + stacktrace: true, + trimHeadFrames: options.trimHeadFrames + 1 + }) + ); + } else if (isError(ex)) { + // we have a real Error object + ex = ex; + } else if (isPlainObject(ex)) { + // If it is plain Object, serialize it manually and extract options + // This will allow us to group events based on top-level keys + // which is much better than creating new group when any key/value change + options = this._getCaptureExceptionOptionsFromPlainObject(options, ex); + ex = new Error(options.message); + } else { + // If none of previous checks were valid, then it means that + // it's not a DOMError/DOMException + // it's not a plain Object + // it's not a valid ErrorEvent (one with an error property) + // it's not an Error + // So bail out and capture it as a simple message: + return this.captureMessage( + ex, + objectMerge(options, { + stacktrace: true, // if we fall back to captureMessage, default to attempting a new trace + trimHeadFrames: options.trimHeadFrames + 1 + }) + ); + } + + // Store the raw exception object for potential debugging and introspection + this._lastCapturedException = ex; + + // TraceKit.report will re-raise any exception passed to it, + // which means you have to wrap it in try/catch. Instead, we + // can wrap it here and only re-raise if TraceKit.report + // raises an exception different from the one we asked to + // report on. + try { + var stack = TraceKit.computeStackTrace(ex); + this._handleStackInfo(stack, options); + } catch (ex1) { + if (ex !== ex1) { + throw ex1; + } + } + + return this; + }, + + _getCaptureExceptionOptionsFromPlainObject: function(currentOptions, ex) { + var exKeys = Object.keys(ex).sort(); + var options = objectMerge(currentOptions, { + message: + 'Non-Error exception captured with keys: ' + serializeKeysForMessage(exKeys), + fingerprint: [md5(exKeys)], + extra: currentOptions.extra || {} + }); + options.extra.__serialized__ = serializeException(ex); + + return options; + }, + + /* + * Manually send a message to Sentry + * + * @param {string} msg A plain message to be captured in Sentry + * @param {object} options A specific set of options for this message [optional] + * @return {Raven} + */ + captureMessage: function(msg, options) { + // config() automagically converts ignoreErrors from a list to a RegExp so we need to test for an + // early call; we'll error on the side of logging anything called before configuration since it's + // probably something you should see: + if ( + !!this._globalOptions.ignoreErrors.test && + this._globalOptions.ignoreErrors.test(msg) + ) { + return; + } + + options = options || {}; + msg = msg + ''; // Make sure it's actually a string + + var data = objectMerge( + { + message: msg + }, + options + ); + + var ex; + // Generate a "synthetic" stack trace from this point. + // NOTE: If you are a Sentry user, and you are seeing this stack frame, it is NOT indicative + // of a bug with Raven.js. Sentry generates synthetic traces either by configuration, + // or if it catches a thrown object without a "stack" property. + try { + throw new Error(msg); + } catch (ex1) { + ex = ex1; + } + + // null exception name so `Error` isn't prefixed to msg + ex.name = null; + var stack = TraceKit.computeStackTrace(ex); + + // stack[0] is `throw new Error(msg)` call itself, we are interested in the frame that was just before that, stack[1] + var initialCall = isArray(stack.stack) && stack.stack[1]; + + // if stack[1] is `Raven.captureException`, it means that someone passed a string to it and we redirected that call + // to be handled by `captureMessage`, thus `initialCall` is the 3rd one, not 2nd + // initialCall => captureException(string) => captureMessage(string) + if (initialCall && initialCall.func === 'Raven.captureException') { + initialCall = stack.stack[2]; + } + + var fileurl = (initialCall && initialCall.url) || ''; + + if ( + !!this._globalOptions.ignoreUrls.test && + this._globalOptions.ignoreUrls.test(fileurl) + ) { + return; + } + + if ( + !!this._globalOptions.whitelistUrls.test && + !this._globalOptions.whitelistUrls.test(fileurl) + ) { + return; + } + + if (this._globalOptions.stacktrace || (options && options.stacktrace)) { + // fingerprint on msg, not stack trace (legacy behavior, could be revisited) + data.fingerprint = data.fingerprint == null ? msg : data.fingerprint; + + options = objectMerge( + { + trimHeadFrames: 0 + }, + options + ); + // Since we know this is a synthetic trace, the top frame (this function call) + // MUST be from Raven.js, so mark it for trimming + // We add to the trim counter so that callers can choose to trim extra frames, such + // as utility functions. + options.trimHeadFrames += 1; + + var frames = this._prepareFrames(stack, options); + data.stacktrace = { + // Sentry expects frames oldest to newest + frames: frames.reverse() + }; + } + + // Make sure that fingerprint is always wrapped in an array + if (data.fingerprint) { + data.fingerprint = isArray(data.fingerprint) + ? data.fingerprint + : [data.fingerprint]; + } + + // Fire away! + this._send(data); + + return this; + }, + + captureBreadcrumb: function(obj) { + var crumb = objectMerge( + { + timestamp: now() / 1000 + }, + obj + ); + + if (isFunction(this._globalOptions.breadcrumbCallback)) { + var result = this._globalOptions.breadcrumbCallback(crumb); + + if (isObject(result) && !isEmptyObject(result)) { + crumb = result; + } else if (result === false) { + return this; + } + } + + this._breadcrumbs.push(crumb); + if (this._breadcrumbs.length > this._globalOptions.maxBreadcrumbs) { + this._breadcrumbs.shift(); + } + return this; + }, + + addPlugin: function(plugin /*arg1, arg2, ... argN*/) { + var pluginArgs = [].slice.call(arguments, 1); + + this._plugins.push([plugin, pluginArgs]); + if (this._isRavenInstalled) { + this._drainPlugins(); + } + + return this; + }, + + /* + * Set/clear a user to be sent along with the payload. + * + * @param {object} user An object representing user data [optional] + * @return {Raven} + */ + setUserContext: function(user) { + // Intentionally do not merge here since that's an unexpected behavior. + this._globalContext.user = user; + + return this; + }, + + /* + * Merge extra attributes to be sent along with the payload. + * + * @param {object} extra An object representing extra data [optional] + * @return {Raven} + */ + setExtraContext: function(extra) { + this._mergeContext('extra', extra); + + return this; + }, + + /* + * Merge tags to be sent along with the payload. + * + * @param {object} tags An object representing tags [optional] + * @return {Raven} + */ + setTagsContext: function(tags) { + this._mergeContext('tags', tags); + + return this; + }, + + /* + * Clear all of the context. + * + * @return {Raven} + */ + clearContext: function() { + this._globalContext = {}; + + return this; + }, + + /* + * Get a copy of the current context. This cannot be mutated. + * + * @return {object} copy of context + */ + getContext: function() { + // lol javascript + return JSON.parse(stringify(this._globalContext)); + }, + + /* + * Set environment of application + * + * @param {string} environment Typically something like 'production'. + * @return {Raven} + */ + setEnvironment: function(environment) { + this._globalOptions.environment = environment; + + return this; + }, + + /* + * Set release version of application + * + * @param {string} release Typically something like a git SHA to identify version + * @return {Raven} + */ + setRelease: function(release) { + this._globalOptions.release = release; + + return this; + }, + + /* + * Set the dataCallback option + * + * @param {function} callback The callback to run which allows the + * data blob to be mutated before sending + * @return {Raven} + */ + setDataCallback: function(callback) { + var original = this._globalOptions.dataCallback; + this._globalOptions.dataCallback = keepOriginalCallback(original, callback); + return this; + }, + + /* + * Set the breadcrumbCallback option + * + * @param {function} callback The callback to run which allows filtering + * or mutating breadcrumbs + * @return {Raven} + */ + setBreadcrumbCallback: function(callback) { + var original = this._globalOptions.breadcrumbCallback; + this._globalOptions.breadcrumbCallback = keepOriginalCallback(original, callback); + return this; + }, + + /* + * Set the shouldSendCallback option + * + * @param {function} callback The callback to run which allows + * introspecting the blob before sending + * @return {Raven} + */ + setShouldSendCallback: function(callback) { + var original = this._globalOptions.shouldSendCallback; + this._globalOptions.shouldSendCallback = keepOriginalCallback(original, callback); + return this; + }, + + /** + * Override the default HTTP transport mechanism that transmits data + * to the Sentry server. + * + * @param {function} transport Function invoked instead of the default + * `makeRequest` handler. + * + * @return {Raven} + */ + setTransport: function(transport) { + this._globalOptions.transport = transport; + + return this; + }, + + /* + * Get the latest raw exception that was captured by Raven. + * + * @return {error} + */ + lastException: function() { + return this._lastCapturedException; + }, + + /* + * Get the last event id + * + * @return {string} + */ + lastEventId: function() { + return this._lastEventId; + }, + + /* + * Determine if Raven is setup and ready to go. + * + * @return {boolean} + */ + isSetup: function() { + if (!this._hasJSON) return false; // needs JSON support + if (!this._globalServer) { + if (!this.ravenNotConfiguredError) { + this.ravenNotConfiguredError = true; + this._logDebug('error', 'Error: Raven has not been configured.'); + } + return false; + } + return true; + }, + + afterLoad: function() { + // TODO: remove window dependence? + + // Attempt to initialize Raven on load + var RavenConfig = _window.RavenConfig; + if (RavenConfig) { + this.config(RavenConfig.dsn, RavenConfig.config).install(); + } + }, + + showReportDialog: function(options) { + if ( + !_document // doesn't work without a document (React native) + ) + return; + + options = options || {}; + + var lastEventId = options.eventId || this.lastEventId(); + if (!lastEventId) { + throw new RavenConfigError('Missing eventId'); + } + + var dsn = options.dsn || this._dsn; + if (!dsn) { + throw new RavenConfigError('Missing DSN'); + } + + var encode = encodeURIComponent; + var qs = ''; + qs += '?eventId=' + encode(lastEventId); + qs += '&dsn=' + encode(dsn); + + var user = options.user || this._globalContext.user; + if (user) { + if (user.name) qs += '&name=' + encode(user.name); + if (user.email) qs += '&email=' + encode(user.email); + } + + var globalServer = this._getGlobalServer(this._parseDSN(dsn)); + + var script = _document.createElement('script'); + script.async = true; + script.src = globalServer + '/api/embed/error-page/' + qs; + (_document.head || _document.body).appendChild(script); + }, + + /**** Private functions ****/ + _ignoreNextOnError: function() { + var self = this; + this._ignoreOnError += 1; + setTimeout(function() { + // onerror should trigger before setTimeout + self._ignoreOnError -= 1; + }); + }, + + _triggerEvent: function(eventType, options) { + // NOTE: `event` is a native browser thing, so let's avoid conflicting wiht it + var evt, key; + + if (!this._hasDocument) return; + + options = options || {}; + + eventType = 'raven' + eventType.substr(0, 1).toUpperCase() + eventType.substr(1); + + if (_document.createEvent) { + evt = _document.createEvent('HTMLEvents'); + evt.initEvent(eventType, true, true); + } else { + evt = _document.createEventObject(); + evt.eventType = eventType; + } + + for (key in options) + if (hasKey(options, key)) { + evt[key] = options[key]; + } + + if (_document.createEvent) { + // IE9 if standards + _document.dispatchEvent(evt); + } else { + // IE8 regardless of Quirks or Standards + // IE9 if quirks + try { + _document.fireEvent('on' + evt.eventType.toLowerCase(), evt); + } catch (e) { + // Do nothing + } + } + }, + + /** + * Wraps addEventListener to capture UI breadcrumbs + * @param evtName the event name (e.g. "click") + * @returns {Function} + * @private + */ + _breadcrumbEventHandler: function(evtName) { + var self = this; + return function(evt) { + // reset keypress timeout; e.g. triggering a 'click' after + // a 'keypress' will reset the keypress debounce so that a new + // set of keypresses can be recorded + self._keypressTimeout = null; + + // It's possible this handler might trigger multiple times for the same + // event (e.g. event propagation through node ancestors). Ignore if we've + // already captured the event. + if (self._lastCapturedEvent === evt) return; + + self._lastCapturedEvent = evt; + + // try/catch both: + // - accessing evt.target (see getsentry/raven-js#838, #768) + // - `htmlTreeAsString` because it's complex, and just accessing the DOM incorrectly + // can throw an exception in some circumstances. + var target; + try { + target = htmlTreeAsString(evt.target); + } catch (e) { + target = ''; + } + + self.captureBreadcrumb({ + category: 'ui.' + evtName, // e.g. ui.click, ui.input + message: target + }); + }; + }, + + /** + * Wraps addEventListener to capture keypress UI events + * @returns {Function} + * @private + */ + _keypressEventHandler: function() { + var self = this, + debounceDuration = 1000; // milliseconds + + // TODO: if somehow user switches keypress target before + // debounce timeout is triggered, we will only capture + // a single breadcrumb from the FIRST target (acceptable?) + return function(evt) { + var target; + try { + target = evt.target; + } catch (e) { + // just accessing event properties can throw an exception in some rare circumstances + // see: https://github.com/getsentry/raven-js/issues/838 + return; + } + var tagName = target && target.tagName; + + // only consider keypress events on actual input elements + // this will disregard keypresses targeting body (e.g. tabbing + // through elements, hotkeys, etc) + if ( + !tagName || + (tagName !== 'INPUT' && tagName !== 'TEXTAREA' && !target.isContentEditable) + ) + return; + + // record first keypress in a series, but ignore subsequent + // keypresses until debounce clears + var timeout = self._keypressTimeout; + if (!timeout) { + self._breadcrumbEventHandler('input')(evt); + } + clearTimeout(timeout); + self._keypressTimeout = setTimeout(function() { + self._keypressTimeout = null; + }, debounceDuration); + }; + }, + + /** + * Captures a breadcrumb of type "navigation", normalizing input URLs + * @param to the originating URL + * @param from the target URL + * @private + */ + _captureUrlChange: function(from, to) { + var parsedLoc = parseUrl(this._location.href); + var parsedTo = parseUrl(to); + var parsedFrom = parseUrl(from); + + // because onpopstate only tells you the "new" (to) value of location.href, and + // not the previous (from) value, we need to track the value of the current URL + // state ourselves + this._lastHref = to; + + // Use only the path component of the URL if the URL matches the current + // document (almost all the time when using pushState) + if (parsedLoc.protocol === parsedTo.protocol && parsedLoc.host === parsedTo.host) + to = parsedTo.relative; + if (parsedLoc.protocol === parsedFrom.protocol && parsedLoc.host === parsedFrom.host) + from = parsedFrom.relative; + + this.captureBreadcrumb({ + category: 'navigation', + data: { + to: to, + from: from + } + }); + }, + + _patchFunctionToString: function() { + var self = this; + self._originalFunctionToString = Function.prototype.toString; + // eslint-disable-next-line no-extend-native + Function.prototype.toString = function() { + if (typeof this === 'function' && this.__raven__) { + return self._originalFunctionToString.apply(this.__orig__, arguments); + } + return self._originalFunctionToString.apply(this, arguments); + }; + }, + + _unpatchFunctionToString: function() { + if (this._originalFunctionToString) { + // eslint-disable-next-line no-extend-native + Function.prototype.toString = this._originalFunctionToString; + } + }, + + /** + * Wrap timer functions and event targets to catch errors and provide + * better metadata. + */ + _instrumentTryCatch: function() { + var self = this; + + var wrappedBuiltIns = self._wrappedBuiltIns; + + function wrapTimeFn(orig) { + return function(fn, t) { + // preserve arity + // Make a copy of the arguments to prevent deoptimization + // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments + var args = new Array(arguments.length); + for (var i = 0; i < args.length; ++i) { + args[i] = arguments[i]; + } + var originalCallback = args[0]; + if (isFunction(originalCallback)) { + args[0] = self.wrap(originalCallback); + } + + // IE < 9 doesn't support .call/.apply on setInterval/setTimeout, but it + // also supports only two arguments and doesn't care what this is, so we + // can just call the original function directly. + if (orig.apply) { + return orig.apply(this, args); + } else { + return orig(args[0], args[1]); + } + }; + } + + var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; + + function wrapEventTarget(global) { + var proto = _window[global] && _window[global].prototype; + if (proto && proto.hasOwnProperty && proto.hasOwnProperty('addEventListener')) { + fill( + proto, + 'addEventListener', + function(orig) { + return function(evtName, fn, capture, secure) { + // preserve arity + try { + if (fn && fn.handleEvent) { + fn.handleEvent = self.wrap(fn.handleEvent); + } + } catch (err) { + // can sometimes get 'Permission denied to access property "handle Event' + } + + // More breadcrumb DOM capture ... done here and not in `_instrumentBreadcrumbs` + // so that we don't have more than one wrapper function + var before, clickHandler, keypressHandler; + + if ( + autoBreadcrumbs && + autoBreadcrumbs.dom && + (global === 'EventTarget' || global === 'Node') + ) { + // NOTE: generating multiple handlers per addEventListener invocation, should + // revisit and verify we can just use one (almost certainly) + clickHandler = self._breadcrumbEventHandler('click'); + keypressHandler = self._keypressEventHandler(); + before = function(evt) { + // need to intercept every DOM event in `before` argument, in case that + // same wrapped method is re-used for different events (e.g. mousemove THEN click) + // see #724 + if (!evt) return; + + var eventType; + try { + eventType = evt.type; + } catch (e) { + // just accessing event properties can throw an exception in some rare circumstances + // see: https://github.com/getsentry/raven-js/issues/838 + return; + } + if (eventType === 'click') return clickHandler(evt); + else if (eventType === 'keypress') return keypressHandler(evt); + }; + } + return orig.call( + this, + evtName, + self.wrap(fn, undefined, before), + capture, + secure + ); + }; + }, + wrappedBuiltIns + ); + fill( + proto, + 'removeEventListener', + function(orig) { + return function(evt, fn, capture, secure) { + try { + fn = fn && (fn.__raven_wrapper__ ? fn.__raven_wrapper__ : fn); + } catch (e) { + // ignore, accessing __raven_wrapper__ will throw in some Selenium environments + } + return orig.call(this, evt, fn, capture, secure); + }; + }, + wrappedBuiltIns + ); + } + } + + fill(_window, 'setTimeout', wrapTimeFn, wrappedBuiltIns); + fill(_window, 'setInterval', wrapTimeFn, wrappedBuiltIns); + if (_window.requestAnimationFrame) { + fill( + _window, + 'requestAnimationFrame', + function(orig) { + return function(cb) { + return orig(self.wrap(cb)); + }; + }, + wrappedBuiltIns + ); + } + + // event targets borrowed from bugsnag-js: + // https://github.com/bugsnag/bugsnag-js/blob/master/src/bugsnag.js#L666 + var eventTargets = [ + 'EventTarget', + 'Window', + 'Node', + 'ApplicationCache', + 'AudioTrackList', + 'ChannelMergerNode', + 'CryptoOperation', + 'EventSource', + 'FileReader', + 'HTMLUnknownElement', + 'IDBDatabase', + 'IDBRequest', + 'IDBTransaction', + 'KeyOperation', + 'MediaController', + 'MessagePort', + 'ModalWindow', + 'Notification', + 'SVGElementInstance', + 'Screen', + 'TextTrack', + 'TextTrackCue', + 'TextTrackList', + 'WebSocket', + 'WebSocketWorker', + 'Worker', + 'XMLHttpRequest', + 'XMLHttpRequestEventTarget', + 'XMLHttpRequestUpload' + ]; + for (var i = 0; i < eventTargets.length; i++) { + wrapEventTarget(eventTargets[i]); + } + }, + + /** + * Instrument browser built-ins w/ breadcrumb capturing + * - XMLHttpRequests + * - DOM interactions (click/typing) + * - window.location changes + * - console + * + * Can be disabled or individually configured via the `autoBreadcrumbs` config option + */ + _instrumentBreadcrumbs: function() { + var self = this; + var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; + + var wrappedBuiltIns = self._wrappedBuiltIns; + + function wrapProp(prop, xhr) { + if (prop in xhr && isFunction(xhr[prop])) { + fill(xhr, prop, function(orig) { + return self.wrap(orig); + }); // intentionally don't track filled methods on XHR instances + } + } + + if (autoBreadcrumbs.xhr && 'XMLHttpRequest' in _window) { + var xhrproto = _window.XMLHttpRequest && _window.XMLHttpRequest.prototype; + fill( + xhrproto, + 'open', + function(origOpen) { + return function(method, url) { + // preserve arity + + // if Sentry key appears in URL, don't capture + if (isString(url) && url.indexOf(self._globalKey) === -1) { + this.__raven_xhr = { + method: method, + url: url, + status_code: null + }; + } + + return origOpen.apply(this, arguments); + }; + }, + wrappedBuiltIns + ); + + fill( + xhrproto, + 'send', + function(origSend) { + return function() { + // preserve arity + var xhr = this; + + function onreadystatechangeHandler() { + if (xhr.__raven_xhr && xhr.readyState === 4) { + try { + // touching statusCode in some platforms throws + // an exception + xhr.__raven_xhr.status_code = xhr.status; + } catch (e) { + /* do nothing */ + } + + self.captureBreadcrumb({ + type: 'http', + category: 'xhr', + data: xhr.__raven_xhr + }); + } + } + + var props = ['onload', 'onerror', 'onprogress']; + for (var j = 0; j < props.length; j++) { + wrapProp(props[j], xhr); + } + + if ('onreadystatechange' in xhr && isFunction(xhr.onreadystatechange)) { + fill( + xhr, + 'onreadystatechange', + function(orig) { + return self.wrap(orig, undefined, onreadystatechangeHandler); + } /* intentionally don't track this instrumentation */ + ); + } else { + // if onreadystatechange wasn't actually set by the page on this xhr, we + // are free to set our own and capture the breadcrumb + xhr.onreadystatechange = onreadystatechangeHandler; + } + + return origSend.apply(this, arguments); + }; + }, + wrappedBuiltIns + ); + } + + if (autoBreadcrumbs.xhr && supportsFetch()) { + fill( + _window, + 'fetch', + function(origFetch) { + return function() { + // preserve arity + // Make a copy of the arguments to prevent deoptimization + // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments + var args = new Array(arguments.length); + for (var i = 0; i < args.length; ++i) { + args[i] = arguments[i]; + } + + var fetchInput = args[0]; + var method = 'GET'; + var url; + + if (typeof fetchInput === 'string') { + url = fetchInput; + } else if ('Request' in _window && fetchInput instanceof _window.Request) { + url = fetchInput.url; + if (fetchInput.method) { + method = fetchInput.method; + } + } else { + url = '' + fetchInput; + } + + // if Sentry key appears in URL, don't capture, as it's our own request + if (url.indexOf(self._globalKey) !== -1) { + return origFetch.apply(this, args); + } + + if (args[1] && args[1].method) { + method = args[1].method; + } + + var fetchData = { + method: method, + url: url, + status_code: null + }; + + return origFetch + .apply(this, args) + .then(function(response) { + fetchData.status_code = response.status; + + self.captureBreadcrumb({ + type: 'http', + category: 'fetch', + data: fetchData + }); + + return response; + }) + ['catch'](function(err) { + // if there is an error performing the request + self.captureBreadcrumb({ + type: 'http', + category: 'fetch', + data: fetchData, + level: 'error' + }); + + throw err; + }); + }; + }, + wrappedBuiltIns + ); + } + + // Capture breadcrumbs from any click that is unhandled / bubbled up all the way + // to the document. Do this before we instrument addEventListener. + if (autoBreadcrumbs.dom && this._hasDocument) { + if (_document.addEventListener) { + _document.addEventListener('click', self._breadcrumbEventHandler('click'), false); + _document.addEventListener('keypress', self._keypressEventHandler(), false); + } else if (_document.attachEvent) { + // IE8 Compatibility + _document.attachEvent('onclick', self._breadcrumbEventHandler('click')); + _document.attachEvent('onkeypress', self._keypressEventHandler()); + } + } + + // record navigation (URL) changes + // NOTE: in Chrome App environment, touching history.pushState, *even inside + // a try/catch block*, will cause Chrome to output an error to console.error + // borrowed from: https://github.com/angular/angular.js/pull/13945/files + var chrome = _window.chrome; + var isChromePackagedApp = chrome && chrome.app && chrome.app.runtime; + var hasPushAndReplaceState = + !isChromePackagedApp && + _window.history && + _window.history.pushState && + _window.history.replaceState; + if (autoBreadcrumbs.location && hasPushAndReplaceState) { + // TODO: remove onpopstate handler on uninstall() + var oldOnPopState = _window.onpopstate; + _window.onpopstate = function() { + var currentHref = self._location.href; + self._captureUrlChange(self._lastHref, currentHref); + + if (oldOnPopState) { + return oldOnPopState.apply(this, arguments); + } + }; + + var historyReplacementFunction = function(origHistFunction) { + // note history.pushState.length is 0; intentionally not declaring + // params to preserve 0 arity + return function(/* state, title, url */) { + var url = arguments.length > 2 ? arguments[2] : undefined; + + // url argument is optional + if (url) { + // coerce to string (this is what pushState does) + self._captureUrlChange(self._lastHref, url + ''); + } + + return origHistFunction.apply(this, arguments); + }; + }; + + fill(_window.history, 'pushState', historyReplacementFunction, wrappedBuiltIns); + fill(_window.history, 'replaceState', historyReplacementFunction, wrappedBuiltIns); + } + + if (autoBreadcrumbs.console && 'console' in _window && console.log) { + // console + var consoleMethodCallback = function(msg, data) { + self.captureBreadcrumb({ + message: msg, + level: data.level, + category: 'console' + }); + }; + + each(['debug', 'info', 'warn', 'error', 'log'], function(_, level) { + wrapConsoleMethod(console, level, consoleMethodCallback); + }); + } + }, + + _restoreBuiltIns: function() { + // restore any wrapped builtins + var builtin; + while (this._wrappedBuiltIns.length) { + builtin = this._wrappedBuiltIns.shift(); + + var obj = builtin[0], + name = builtin[1], + orig = builtin[2]; + + obj[name] = orig; + } + }, + + _restoreConsole: function() { + // eslint-disable-next-line guard-for-in + for (var method in this._originalConsoleMethods) { + this._originalConsole[method] = this._originalConsoleMethods[method]; + } + }, + + _drainPlugins: function() { + var self = this; + + // FIX ME TODO + each(this._plugins, function(_, plugin) { + var installer = plugin[0]; + var args = plugin[1]; + installer.apply(self, [self].concat(args)); + }); + }, + + _parseDSN: function(str) { + var m = dsnPattern.exec(str), + dsn = {}, + i = 7; + + try { + while (i--) dsn[dsnKeys[i]] = m[i] || ''; + } catch (e) { + throw new RavenConfigError('Invalid DSN: ' + str); + } + + if (dsn.pass && !this._globalOptions.allowSecretKey) { + throw new RavenConfigError( + 'Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key' + ); + } + + return dsn; + }, + + _getGlobalServer: function(uri) { + // assemble the endpoint from the uri pieces + var globalServer = '//' + uri.host + (uri.port ? ':' + uri.port : ''); + + if (uri.protocol) { + globalServer = uri.protocol + ':' + globalServer; + } + return globalServer; + }, + + _handleOnErrorStackInfo: function() { + // if we are intentionally ignoring errors via onerror, bail out + if (!this._ignoreOnError) { + this._handleStackInfo.apply(this, arguments); + } + }, + + _handleStackInfo: function(stackInfo, options) { + var frames = this._prepareFrames(stackInfo, options); + + this._triggerEvent('handle', { + stackInfo: stackInfo, + options: options + }); + + this._processException( + stackInfo.name, + stackInfo.message, + stackInfo.url, + stackInfo.lineno, + frames, + options + ); + }, + + _prepareFrames: function(stackInfo, options) { + var self = this; + var frames = []; + if (stackInfo.stack && stackInfo.stack.length) { + each(stackInfo.stack, function(i, stack) { + var frame = self._normalizeFrame(stack, stackInfo.url); + if (frame) { + frames.push(frame); + } + }); + + // e.g. frames captured via captureMessage throw + if (options && options.trimHeadFrames) { + for (var j = 0; j < options.trimHeadFrames && j < frames.length; j++) { + frames[j].in_app = false; + } + } + } + frames = frames.slice(0, this._globalOptions.stackTraceLimit); + return frames; + }, + + _normalizeFrame: function(frame, stackInfoUrl) { + // normalize the frames data + var normalized = { + filename: frame.url, + lineno: frame.line, + colno: frame.column, + function: frame.func || '?' + }; + + // Case when we don't have any information about the error + // E.g. throwing a string or raw object, instead of an `Error` in Firefox + // Generating synthetic error doesn't add any value here + // + // We should probably somehow let a user know that they should fix their code + if (!frame.url) { + normalized.filename = stackInfoUrl; // fallback to whole stacks url from onerror handler + } + + normalized.in_app = !// determine if an exception came from outside of our app + // first we check the global includePaths list. + ( + (!!this._globalOptions.includePaths.test && + !this._globalOptions.includePaths.test(normalized.filename)) || + // Now we check for fun, if the function name is Raven or TraceKit + /(Raven|TraceKit)\./.test(normalized['function']) || + // finally, we do a last ditch effort and check for raven.min.js + /raven\.(min\.)?js$/.test(normalized.filename) + ); + + return normalized; + }, + + _processException: function(type, message, fileurl, lineno, frames, options) { + var prefixedMessage = (type ? type + ': ' : '') + (message || ''); + if ( + !!this._globalOptions.ignoreErrors.test && + (this._globalOptions.ignoreErrors.test(message) || + this._globalOptions.ignoreErrors.test(prefixedMessage)) + ) { + return; + } + + var stacktrace; + + if (frames && frames.length) { + fileurl = frames[0].filename || fileurl; + // Sentry expects frames oldest to newest + // and JS sends them as newest to oldest + frames.reverse(); + stacktrace = {frames: frames}; + } else if (fileurl) { + stacktrace = { + frames: [ + { + filename: fileurl, + lineno: lineno, + in_app: true + } + ] + }; + } + + if ( + !!this._globalOptions.ignoreUrls.test && + this._globalOptions.ignoreUrls.test(fileurl) + ) { + return; + } + + if ( + !!this._globalOptions.whitelistUrls.test && + !this._globalOptions.whitelistUrls.test(fileurl) + ) { + return; + } + + var data = objectMerge( + { + // sentry.interfaces.Exception + exception: { + values: [ + { + type: type, + value: message, + stacktrace: stacktrace + } + ] + }, + transaction: fileurl + }, + options + ); + + // Fire away! + this._send(data); + }, + + _trimPacket: function(data) { + // For now, we only want to truncate the two different messages + // but this could/should be expanded to just trim everything + var max = this._globalOptions.maxMessageLength; + if (data.message) { + data.message = truncate(data.message, max); + } + if (data.exception) { + var exception = data.exception.values[0]; + exception.value = truncate(exception.value, max); + } + + var request = data.request; + if (request) { + if (request.url) { + request.url = truncate(request.url, this._globalOptions.maxUrlLength); + } + if (request.Referer) { + request.Referer = truncate(request.Referer, this._globalOptions.maxUrlLength); + } + } + + if (data.breadcrumbs && data.breadcrumbs.values) + this._trimBreadcrumbs(data.breadcrumbs); + + return data; + }, + + /** + * Truncate breadcrumb values (right now just URLs) + */ + _trimBreadcrumbs: function(breadcrumbs) { + // known breadcrumb properties with urls + // TODO: also consider arbitrary prop values that start with (https?)?:// + var urlProps = ['to', 'from', 'url'], + urlProp, + crumb, + data; + + for (var i = 0; i < breadcrumbs.values.length; ++i) { + crumb = breadcrumbs.values[i]; + if ( + !crumb.hasOwnProperty('data') || + !isObject(crumb.data) || + objectFrozen(crumb.data) + ) + continue; + + data = objectMerge({}, crumb.data); + for (var j = 0; j < urlProps.length; ++j) { + urlProp = urlProps[j]; + if (data.hasOwnProperty(urlProp) && data[urlProp]) { + data[urlProp] = truncate(data[urlProp], this._globalOptions.maxUrlLength); + } + } + breadcrumbs.values[i].data = data; + } + }, + + _getHttpData: function() { + if (!this._hasNavigator && !this._hasDocument) return; + var httpData = {}; + + if (this._hasNavigator && _navigator.userAgent) { + httpData.headers = { + 'User-Agent': _navigator.userAgent + }; + } + + // Check in `window` instead of `document`, as we may be in ServiceWorker environment + if (_window.location && _window.location.href) { + httpData.url = _window.location.href; + } + + if (this._hasDocument && _document.referrer) { + if (!httpData.headers) httpData.headers = {}; + httpData.headers.Referer = _document.referrer; + } + + return httpData; + }, + + _resetBackoff: function() { + this._backoffDuration = 0; + this._backoffStart = null; + }, + + _shouldBackoff: function() { + return this._backoffDuration && now() - this._backoffStart < this._backoffDuration; + }, + + /** + * Returns true if the in-process data payload matches the signature + * of the previously-sent data + * + * NOTE: This has to be done at this level because TraceKit can generate + * data from window.onerror WITHOUT an exception object (IE8, IE9, + * other old browsers). This can take the form of an "exception" + * data object with a single frame (derived from the onerror args). + */ + _isRepeatData: function(current) { + var last = this._lastData; + + if ( + !last || + current.message !== last.message || // defined for captureMessage + current.transaction !== last.transaction // defined for captureException/onerror + ) + return false; + + // Stacktrace interface (i.e. from captureMessage) + if (current.stacktrace || last.stacktrace) { + return isSameStacktrace(current.stacktrace, last.stacktrace); + } else if (current.exception || last.exception) { + // Exception interface (i.e. from captureException/onerror) + return isSameException(current.exception, last.exception); + } + + return true; + }, + + _setBackoffState: function(request) { + // If we are already in a backoff state, don't change anything + if (this._shouldBackoff()) { + return; + } + + var status = request.status; + + // 400 - project_id doesn't exist or some other fatal + // 401 - invalid/revoked dsn + // 429 - too many requests + if (!(status === 400 || status === 401 || status === 429)) return; + + var retry; + try { + // If Retry-After is not in Access-Control-Expose-Headers, most + // browsers will throw an exception trying to access it + if (supportsFetch()) { + retry = request.headers.get('Retry-After'); + } else { + retry = request.getResponseHeader('Retry-After'); + } + + // Retry-After is returned in seconds + retry = parseInt(retry, 10) * 1000; + } catch (e) { + /* eslint no-empty:0 */ + } + + this._backoffDuration = retry + ? // If Sentry server returned a Retry-After value, use it + retry + : // Otherwise, double the last backoff duration (starts at 1 sec) + this._backoffDuration * 2 || 1000; + + this._backoffStart = now(); + }, + + _send: function(data) { + var globalOptions = this._globalOptions; + + var baseData = { + project: this._globalProject, + logger: globalOptions.logger, + platform: 'javascript' + }, + httpData = this._getHttpData(); + + if (httpData) { + baseData.request = httpData; + } + + // HACK: delete `trimHeadFrames` to prevent from appearing in outbound payload + if (data.trimHeadFrames) delete data.trimHeadFrames; + + data = objectMerge(baseData, data); + + // Merge in the tags and extra separately since objectMerge doesn't handle a deep merge + data.tags = objectMerge(objectMerge({}, this._globalContext.tags), data.tags); + data.extra = objectMerge(objectMerge({}, this._globalContext.extra), data.extra); + + // Send along our own collected metadata with extra + data.extra['session:duration'] = now() - this._startTime; + + if (this._breadcrumbs && this._breadcrumbs.length > 0) { + // intentionally make shallow copy so that additions + // to breadcrumbs aren't accidentally sent in this request + data.breadcrumbs = { + values: [].slice.call(this._breadcrumbs, 0) + }; + } + + if (this._globalContext.user) { + // sentry.interfaces.User + data.user = this._globalContext.user; + } + + // Include the environment if it's defined in globalOptions + if (globalOptions.environment) data.environment = globalOptions.environment; + + // Include the release if it's defined in globalOptions + if (globalOptions.release) data.release = globalOptions.release; + + // Include server_name if it's defined in globalOptions + if (globalOptions.serverName) data.server_name = globalOptions.serverName; + + data = this._sanitizeData(data); + + // Cleanup empty properties before sending them to the server + Object.keys(data).forEach(function(key) { + if (data[key] == null || data[key] === '' || isEmptyObject(data[key])) { + delete data[key]; + } + }); + + if (isFunction(globalOptions.dataCallback)) { + data = globalOptions.dataCallback(data) || data; + } + + // Why?????????? + if (!data || isEmptyObject(data)) { + return; + } + + // Check if the request should be filtered or not + if ( + isFunction(globalOptions.shouldSendCallback) && + !globalOptions.shouldSendCallback(data) + ) { + return; + } + + // Backoff state: Sentry server previously responded w/ an error (e.g. 429 - too many requests), + // so drop requests until "cool-off" period has elapsed. + if (this._shouldBackoff()) { + this._logDebug('warn', 'Raven dropped error due to backoff: ', data); + return; + } + + if (typeof globalOptions.sampleRate === 'number') { + if (Math.random() < globalOptions.sampleRate) { + this._sendProcessedPayload(data); + } + } else { + this._sendProcessedPayload(data); + } + }, + + _sanitizeData: function(data) { + return sanitize(data, this._globalOptions.sanitizeKeys); + }, + + _getUuid: function() { + return uuid4(); + }, + + _sendProcessedPayload: function(data, callback) { + var self = this; + var globalOptions = this._globalOptions; + + if (!this.isSetup()) return; + + // Try and clean up the packet before sending by truncating long values + data = this._trimPacket(data); + + // ideally duplicate error testing should occur *before* dataCallback/shouldSendCallback, + // but this would require copying an un-truncated copy of the data packet, which can be + // arbitrarily deep (extra_data) -- could be worthwhile? will revisit + if (!this._globalOptions.allowDuplicates && this._isRepeatData(data)) { + this._logDebug('warn', 'Raven dropped repeat event: ', data); + return; + } + + // Send along an event_id if not explicitly passed. + // This event_id can be used to reference the error within Sentry itself. + // Set lastEventId after we know the error should actually be sent + this._lastEventId = data.event_id || (data.event_id = this._getUuid()); + + // Store outbound payload after trim + this._lastData = data; + + this._logDebug('debug', 'Raven about to send:', data); + + var auth = { + sentry_version: '7', + sentry_client: 'raven-js/' + this.VERSION, + sentry_key: this._globalKey + }; + + if (this._globalSecret) { + auth.sentry_secret = this._globalSecret; + } + + var exception = data.exception && data.exception.values[0]; + + // only capture 'sentry' breadcrumb is autoBreadcrumbs is truthy + if ( + this._globalOptions.autoBreadcrumbs && + this._globalOptions.autoBreadcrumbs.sentry + ) { + this.captureBreadcrumb({ + category: 'sentry', + message: exception + ? (exception.type ? exception.type + ': ' : '') + exception.value + : data.message, + event_id: data.event_id, + level: data.level || 'error' // presume error unless specified + }); + } + + var url = this._globalEndpoint; + (globalOptions.transport || this._makeRequest).call(this, { + url: url, + auth: auth, + data: data, + options: globalOptions, + onSuccess: function success() { + self._resetBackoff(); + + self._triggerEvent('success', { + data: data, + src: url + }); + callback && callback(); + }, + onError: function failure(error) { + self._logDebug('error', 'Raven transport failed to send: ', error); + + if (error.request) { + self._setBackoffState(error.request); + } + + self._triggerEvent('failure', { + data: data, + src: url + }); + error = error || new Error('Raven send failed (no additional details provided)'); + callback && callback(error); + } + }); + }, + + _makeRequest: function(opts) { + // Auth is intentionally sent as part of query string (NOT as custom HTTP header) to avoid preflight CORS requests + var url = opts.url + '?' + urlencode(opts.auth); + + var evaluatedHeaders = null; + var evaluatedFetchParameters = {}; + + if (opts.options.headers) { + evaluatedHeaders = this._evaluateHash(opts.options.headers); + } + + if (opts.options.fetchParameters) { + evaluatedFetchParameters = this._evaluateHash(opts.options.fetchParameters); + } + + if (supportsFetch()) { + evaluatedFetchParameters.body = stringify(opts.data); + + var defaultFetchOptions = objectMerge({}, this._fetchDefaults); + var fetchOptions = objectMerge(defaultFetchOptions, evaluatedFetchParameters); + + if (evaluatedHeaders) { + fetchOptions.headers = evaluatedHeaders; + } + + return _window + .fetch(url, fetchOptions) + .then(function(response) { + if (response.ok) { + opts.onSuccess && opts.onSuccess(); + } else { + var error = new Error('Sentry error code: ' + response.status); + // It's called request only to keep compatibility with XHR interface + // and not add more redundant checks in setBackoffState method + error.request = response; + opts.onError && opts.onError(error); + } + }) + ['catch'](function() { + opts.onError && + opts.onError(new Error('Sentry error code: network unavailable')); + }); + } + + var request = _window.XMLHttpRequest && new _window.XMLHttpRequest(); + if (!request) return; + + // if browser doesn't support CORS (e.g. IE7), we are out of luck + var hasCORS = 'withCredentials' in request || typeof XDomainRequest !== 'undefined'; + + if (!hasCORS) return; + + if ('withCredentials' in request) { + request.onreadystatechange = function() { + if (request.readyState !== 4) { + return; + } else if (request.status === 200) { + opts.onSuccess && opts.onSuccess(); + } else if (opts.onError) { + var err = new Error('Sentry error code: ' + request.status); + err.request = request; + opts.onError(err); + } + }; + } else { + request = new XDomainRequest(); + // xdomainrequest cannot go http -> https (or vice versa), + // so always use protocol relative + url = url.replace(/^https?:/, ''); + + // onreadystatechange not supported by XDomainRequest + if (opts.onSuccess) { + request.onload = opts.onSuccess; + } + if (opts.onError) { + request.onerror = function() { + var err = new Error('Sentry error code: XDomainRequest'); + err.request = request; + opts.onError(err); + }; + } + } + + request.open('POST', url); + + if (evaluatedHeaders) { + each(evaluatedHeaders, function(key, value) { + request.setRequestHeader(key, value); + }); + } + + request.send(stringify(opts.data)); + }, + + _evaluateHash: function(hash) { + var evaluated = {}; + + for (var key in hash) { + if (hash.hasOwnProperty(key)) { + var value = hash[key]; + evaluated[key] = typeof value === 'function' ? value() : value; + } + } + + return evaluated; + }, + + _logDebug: function(level) { + // We allow `Raven.debug` and `Raven.config(DSN, { debug: true })` to not make backward incompatible API change + if ( + this._originalConsoleMethods[level] && + (this.debug || this._globalOptions.debug) + ) { + // In IE<10 console methods do not have their own 'apply' method + Function.prototype.apply.call( + this._originalConsoleMethods[level], + this._originalConsole, + [].slice.call(arguments, 1) + ); + } + }, + + _mergeContext: function(key, context) { + if (isUndefined(context)) { + delete this._globalContext[key]; + } else { + this._globalContext[key] = objectMerge(this._globalContext[key] || {}, context); + } + } +}; + +// Deprecations +Raven.prototype.setUser = Raven.prototype.setUserContext; +Raven.prototype.setReleaseContext = Raven.prototype.setRelease; + +module.exports = Raven; + +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"10":10,"11":11,"4":4,"5":5,"8":8,"9":9}],7:[function(_dereq_,module,exports){ +(function (global){ +/** + * Enforces a single instance of the Raven client, and the + * main entry point for Raven. If you are a consumer of the + * Raven library, you SHOULD load this file (vs raven.js). + **/ + +var RavenConstructor = _dereq_(6); + +// This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) +var _window = + typeof window !== 'undefined' + ? window + : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; +var _Raven = _window.Raven; + +var Raven = new RavenConstructor(); + +/* + * Allow multiple versions of Raven to be installed. + * Strip Raven from the global context and returns the instance. + * + * @return {Raven} + */ +Raven.noConflict = function() { + _window.Raven = _Raven; + return Raven; +}; + +Raven.afterLoad(); + +module.exports = Raven; + +/** + * DISCLAIMER: + * + * Expose `Client` constructor for cases where user want to track multiple "sub-applications" in one larger app. + * It's not meant to be used by a wide audience, so pleaaase make sure that you know what you're doing before using it. + * Accidentally calling `install` multiple times, may result in an unexpected behavior that's very hard to debug. + * + * It's called `Client' to be in-line with Raven Node implementation. + * + * HOWTO: + * + * import Raven from 'raven-js'; + * + * const someAppReporter = new Raven.Client(); + * const someOtherAppReporter = new Raven.Client(); + * + * someAppReporter.config('__DSN__', { + * ...config goes here + * }); + * + * someOtherAppReporter.config('__OTHER_DSN__', { + * ...config goes here + * }); + * + * someAppReporter.captureMessage(...); + * someAppReporter.captureException(...); + * someAppReporter.captureBreadcrumb(...); + * + * someOtherAppReporter.captureMessage(...); + * someOtherAppReporter.captureException(...); + * someOtherAppReporter.captureBreadcrumb(...); + * + * It should "just work". + */ +module.exports.Client = RavenConstructor; + +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"6":6}],8:[function(_dereq_,module,exports){ +(function (global){ +var stringify = _dereq_(10); + +var _window = + typeof window !== 'undefined' + ? window + : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; + +function isObject(what) { + return typeof what === 'object' && what !== null; +} + +// Yanked from https://git.io/vS8DV re-used under CC0 +// with some tiny modifications +function isError(value) { + switch (Object.prototype.toString.call(value)) { + case '[object Error]': + return true; + case '[object Exception]': + return true; + case '[object DOMException]': + return true; + default: + return value instanceof Error; + } +} + +function isErrorEvent(value) { + return Object.prototype.toString.call(value) === '[object ErrorEvent]'; +} + +function isDOMError(value) { + return Object.prototype.toString.call(value) === '[object DOMError]'; +} + +function isDOMException(value) { + return Object.prototype.toString.call(value) === '[object DOMException]'; +} + +function isUndefined(what) { + return what === void 0; +} + +function isFunction(what) { + return typeof what === 'function'; +} + +function isPlainObject(what) { + return Object.prototype.toString.call(what) === '[object Object]'; +} + +function isString(what) { + return Object.prototype.toString.call(what) === '[object String]'; +} + +function isArray(what) { + return Object.prototype.toString.call(what) === '[object Array]'; +} + +function isEmptyObject(what) { + if (!isPlainObject(what)) return false; + + for (var _ in what) { + if (what.hasOwnProperty(_)) { + return false; + } + } + return true; +} + +function supportsErrorEvent() { + try { + new ErrorEvent(''); // eslint-disable-line no-new + return true; + } catch (e) { + return false; + } +} + +function supportsDOMError() { + try { + new DOMError(''); // eslint-disable-line no-new + return true; + } catch (e) { + return false; + } +} + +function supportsDOMException() { + try { + new DOMException(''); // eslint-disable-line no-new + return true; + } catch (e) { + return false; + } +} + +function supportsFetch() { + if (!('fetch' in _window)) return false; + + try { + new Headers(); // eslint-disable-line no-new + new Request(''); // eslint-disable-line no-new + new Response(); // eslint-disable-line no-new + return true; + } catch (e) { + return false; + } +} + +// Despite all stars in the sky saying that Edge supports old draft syntax, aka 'never', 'always', 'origin' and 'default +// https://caniuse.com/#feat=referrer-policy +// It doesn't. And it throw exception instead of ignoring this parameter... +// REF: https://github.com/getsentry/raven-js/issues/1233 +function supportsReferrerPolicy() { + if (!supportsFetch()) return false; + + try { + // eslint-disable-next-line no-new + new Request('pickleRick', { + referrerPolicy: 'origin' + }); + return true; + } catch (e) { + return false; + } +} + +function supportsPromiseRejectionEvent() { + return typeof PromiseRejectionEvent === 'function'; +} + +function wrappedCallback(callback) { + function dataCallback(data, original) { + var normalizedData = callback(data) || data; + if (original) { + return original(normalizedData) || normalizedData; + } + return normalizedData; + } + + return dataCallback; +} + +function each(obj, callback) { + var i, j; + + if (isUndefined(obj.length)) { + for (i in obj) { + if (hasKey(obj, i)) { + callback.call(null, i, obj[i]); + } + } + } else { + j = obj.length; + if (j) { + for (i = 0; i < j; i++) { + callback.call(null, i, obj[i]); + } + } + } +} + +function objectMerge(obj1, obj2) { + if (!obj2) { + return obj1; + } + each(obj2, function(key, value) { + obj1[key] = value; + }); + return obj1; +} + +/** + * This function is only used for react-native. + * react-native freezes object that have already been sent over the + * js bridge. We need this function in order to check if the object is frozen. + * So it's ok that objectFrozen returns false if Object.isFrozen is not + * supported because it's not relevant for other "platforms". See related issue: + * https://github.com/getsentry/react-native-sentry/issues/57 + */ +function objectFrozen(obj) { + if (!Object.isFrozen) { + return false; + } + return Object.isFrozen(obj); +} + +function truncate(str, max) { + if (typeof max !== 'number') { + throw new Error('2nd argument to `truncate` function should be a number'); + } + if (typeof str !== 'string' || max === 0) { + return str; + } + return str.length <= max ? str : str.substr(0, max) + '\u2026'; +} + +/** + * hasKey, a better form of hasOwnProperty + * Example: hasKey(MainHostObject, property) === true/false + * + * @param {Object} host object to check property + * @param {string} key to check + */ +function hasKey(object, key) { + return Object.prototype.hasOwnProperty.call(object, key); +} + +function joinRegExp(patterns) { + // Combine an array of regular expressions and strings into one large regexp + // Be mad. + var sources = [], + i = 0, + len = patterns.length, + pattern; + + for (; i < len; i++) { + pattern = patterns[i]; + if (isString(pattern)) { + // If it's a string, we need to escape it + // Taken from: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions + sources.push(pattern.replace(/([.*+?^=!:${}()|\[\]\/\\])/g, '\\$1')); + } else if (pattern && pattern.source) { + // If it's a regexp already, we want to extract the source + sources.push(pattern.source); + } + // Intentionally skip other cases + } + return new RegExp(sources.join('|'), 'i'); +} + +function urlencode(o) { + var pairs = []; + each(o, function(key, value) { + pairs.push(encodeURIComponent(key) + '=' + encodeURIComponent(value)); + }); + return pairs.join('&'); +} + +// borrowed from https://tools.ietf.org/html/rfc3986#appendix-B +// intentionally using regex and not href parsing trick because React Native and other +// environments where DOM might not be available +function parseUrl(url) { + if (typeof url !== 'string') return {}; + var match = url.match(/^(([^:\/?#]+):)?(\/\/([^\/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?$/); + + // coerce to undefined values to empty string so we don't get 'undefined' + var query = match[6] || ''; + var fragment = match[8] || ''; + return { + protocol: match[2], + host: match[4], + path: match[5], + relative: match[5] + query + fragment // everything minus origin + }; +} +function uuid4() { + var crypto = _window.crypto || _window.msCrypto; + + if (!isUndefined(crypto) && crypto.getRandomValues) { + // Use window.crypto API if available + // eslint-disable-next-line no-undef + var arr = new Uint16Array(8); + crypto.getRandomValues(arr); + + // set 4 in byte 7 + arr[3] = (arr[3] & 0xfff) | 0x4000; + // set 2 most significant bits of byte 9 to '10' + arr[4] = (arr[4] & 0x3fff) | 0x8000; + + var pad = function(num) { + var v = num.toString(16); + while (v.length < 4) { + v = '0' + v; + } + return v; + }; + + return ( + pad(arr[0]) + + pad(arr[1]) + + pad(arr[2]) + + pad(arr[3]) + + pad(arr[4]) + + pad(arr[5]) + + pad(arr[6]) + + pad(arr[7]) + ); + } else { + // http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/2117523#2117523 + return 'xxxxxxxxxxxx4xxxyxxxxxxxxxxxxxxx'.replace(/[xy]/g, function(c) { + var r = (Math.random() * 16) | 0, + v = c === 'x' ? r : (r & 0x3) | 0x8; + return v.toString(16); + }); + } +} + +/** + * Given a child DOM element, returns a query-selector statement describing that + * and its ancestors + * e.g. [HTMLElement] => body > div > input#foo.btn[name=baz] + * @param elem + * @returns {string} + */ +function htmlTreeAsString(elem) { + /* eslint no-extra-parens:0*/ + var MAX_TRAVERSE_HEIGHT = 5, + MAX_OUTPUT_LEN = 80, + out = [], + height = 0, + len = 0, + separator = ' > ', + sepLength = separator.length, + nextStr; + + while (elem && height++ < MAX_TRAVERSE_HEIGHT) { + nextStr = htmlElementAsString(elem); + // bail out if + // - nextStr is the 'html' element + // - the length of the string that would be created exceeds MAX_OUTPUT_LEN + // (ignore this limit if we are on the first iteration) + if ( + nextStr === 'html' || + (height > 1 && len + out.length * sepLength + nextStr.length >= MAX_OUTPUT_LEN) + ) { + break; + } + + out.push(nextStr); + + len += nextStr.length; + elem = elem.parentNode; + } + + return out.reverse().join(separator); +} + +/** + * Returns a simple, query-selector representation of a DOM element + * e.g. [HTMLElement] => input#foo.btn[name=baz] + * @param HTMLElement + * @returns {string} + */ +function htmlElementAsString(elem) { + var out = [], + className, + classes, + key, + attr, + i; + + if (!elem || !elem.tagName) { + return ''; + } + + out.push(elem.tagName.toLowerCase()); + if (elem.id) { + out.push('#' + elem.id); + } + + className = elem.className; + if (className && isString(className)) { + classes = className.split(/\s+/); + for (i = 0; i < classes.length; i++) { + out.push('.' + classes[i]); + } + } + var attrWhitelist = ['type', 'name', 'title', 'alt']; + for (i = 0; i < attrWhitelist.length; i++) { + key = attrWhitelist[i]; + attr = elem.getAttribute(key); + if (attr) { + out.push('[' + key + '="' + attr + '"]'); + } + } + return out.join(''); +} + +/** + * Returns true if either a OR b is truthy, but not both + */ +function isOnlyOneTruthy(a, b) { + return !!(!!a ^ !!b); +} + +/** + * Returns true if both parameters are undefined + */ +function isBothUndefined(a, b) { + return isUndefined(a) && isUndefined(b); +} + +/** + * Returns true if the two input exception interfaces have the same content + */ +function isSameException(ex1, ex2) { + if (isOnlyOneTruthy(ex1, ex2)) return false; + + ex1 = ex1.values[0]; + ex2 = ex2.values[0]; + + if (ex1.type !== ex2.type || ex1.value !== ex2.value) return false; + + // in case both stacktraces are undefined, we can't decide so default to false + if (isBothUndefined(ex1.stacktrace, ex2.stacktrace)) return false; + + return isSameStacktrace(ex1.stacktrace, ex2.stacktrace); +} + +/** + * Returns true if the two input stack trace interfaces have the same content + */ +function isSameStacktrace(stack1, stack2) { + if (isOnlyOneTruthy(stack1, stack2)) return false; + + var frames1 = stack1.frames; + var frames2 = stack2.frames; + + // Exit early if frame count differs + if (frames1.length !== frames2.length) return false; + + // Iterate through every frame; bail out if anything differs + var a, b; + for (var i = 0; i < frames1.length; i++) { + a = frames1[i]; + b = frames2[i]; + if ( + a.filename !== b.filename || + a.lineno !== b.lineno || + a.colno !== b.colno || + a['function'] !== b['function'] + ) + return false; + } + return true; +} + +/** + * Polyfill a method + * @param obj object e.g. `document` + * @param name method name present on object e.g. `addEventListener` + * @param replacement replacement function + * @param track {optional} record instrumentation to an array + */ +function fill(obj, name, replacement, track) { + if (obj == null) return; + var orig = obj[name]; + obj[name] = replacement(orig); + obj[name].__raven__ = true; + obj[name].__orig__ = orig; + if (track) { + track.push([obj, name, orig]); + } +} + +/** + * Join values in array + * @param input array of values to be joined together + * @param delimiter string to be placed in-between values + * @returns {string} + */ +function safeJoin(input, delimiter) { + if (!isArray(input)) return ''; + + var output = []; + + for (var i = 0; i < input.length; i++) { + try { + output.push(String(input[i])); + } catch (e) { + output.push('[value cannot be serialized]'); + } + } + + return output.join(delimiter); +} + +// Default Node.js REPL depth +var MAX_SERIALIZE_EXCEPTION_DEPTH = 3; +// 50kB, as 100kB is max payload size, so half sounds reasonable +var MAX_SERIALIZE_EXCEPTION_SIZE = 50 * 1024; +var MAX_SERIALIZE_KEYS_LENGTH = 40; + +function utf8Length(value) { + return ~-encodeURI(value).split(/%..|./).length; +} + +function jsonSize(value) { + return utf8Length(JSON.stringify(value)); +} + +function serializeValue(value) { + if (typeof value === 'string') { + var maxLength = 40; + return truncate(value, maxLength); + } else if ( + typeof value === 'number' || + typeof value === 'boolean' || + typeof value === 'undefined' + ) { + return value; + } + + var type = Object.prototype.toString.call(value); + + // Node.js REPL notation + if (type === '[object Object]') return '[Object]'; + if (type === '[object Array]') return '[Array]'; + if (type === '[object Function]') + return value.name ? '[Function: ' + value.name + ']' : '[Function]'; + + return value; +} + +function serializeObject(value, depth) { + if (depth === 0) return serializeValue(value); + + if (isPlainObject(value)) { + return Object.keys(value).reduce(function(acc, key) { + acc[key] = serializeObject(value[key], depth - 1); + return acc; + }, {}); + } else if (Array.isArray(value)) { + return value.map(function(val) { + return serializeObject(val, depth - 1); + }); + } + + return serializeValue(value); +} + +function serializeException(ex, depth, maxSize) { + if (!isPlainObject(ex)) return ex; + + depth = typeof depth !== 'number' ? MAX_SERIALIZE_EXCEPTION_DEPTH : depth; + maxSize = typeof depth !== 'number' ? MAX_SERIALIZE_EXCEPTION_SIZE : maxSize; + + var serialized = serializeObject(ex, depth); + + if (jsonSize(stringify(serialized)) > maxSize) { + return serializeException(ex, depth - 1); + } + + return serialized; +} + +function serializeKeysForMessage(keys, maxLength) { + if (typeof keys === 'number' || typeof keys === 'string') return keys.toString(); + if (!Array.isArray(keys)) return ''; + + keys = keys.filter(function(key) { + return typeof key === 'string'; + }); + if (keys.length === 0) return '[object has no keys]'; + + maxLength = typeof maxLength !== 'number' ? MAX_SERIALIZE_KEYS_LENGTH : maxLength; + if (keys[0].length >= maxLength) return keys[0]; + + for (var usedKeys = keys.length; usedKeys > 0; usedKeys--) { + var serialized = keys.slice(0, usedKeys).join(', '); + if (serialized.length > maxLength) continue; + if (usedKeys === keys.length) return serialized; + return serialized + '\u2026'; + } + + return ''; +} + +function sanitize(input, sanitizeKeys) { + if (!isArray(sanitizeKeys) || (isArray(sanitizeKeys) && sanitizeKeys.length === 0)) + return input; + + var sanitizeRegExp = joinRegExp(sanitizeKeys); + var sanitizeMask = '********'; + var safeInput; + + try { + safeInput = JSON.parse(stringify(input)); + } catch (o_O) { + return input; + } + + function sanitizeWorker(workerInput) { + if (isArray(workerInput)) { + return workerInput.map(function(val) { + return sanitizeWorker(val); + }); + } + + if (isPlainObject(workerInput)) { + return Object.keys(workerInput).reduce(function(acc, k) { + if (sanitizeRegExp.test(k)) { + acc[k] = sanitizeMask; + } else { + acc[k] = sanitizeWorker(workerInput[k]); + } + return acc; + }, {}); + } + + return workerInput; + } + + return sanitizeWorker(safeInput); +} + +module.exports = { + isObject: isObject, + isError: isError, + isErrorEvent: isErrorEvent, + isDOMError: isDOMError, + isDOMException: isDOMException, + isUndefined: isUndefined, + isFunction: isFunction, + isPlainObject: isPlainObject, + isString: isString, + isArray: isArray, + isEmptyObject: isEmptyObject, + supportsErrorEvent: supportsErrorEvent, + supportsDOMError: supportsDOMError, + supportsDOMException: supportsDOMException, + supportsFetch: supportsFetch, + supportsReferrerPolicy: supportsReferrerPolicy, + supportsPromiseRejectionEvent: supportsPromiseRejectionEvent, + wrappedCallback: wrappedCallback, + each: each, + objectMerge: objectMerge, + truncate: truncate, + objectFrozen: objectFrozen, + hasKey: hasKey, + joinRegExp: joinRegExp, + urlencode: urlencode, + uuid4: uuid4, + htmlTreeAsString: htmlTreeAsString, + htmlElementAsString: htmlElementAsString, + isSameException: isSameException, + isSameStacktrace: isSameStacktrace, + parseUrl: parseUrl, + fill: fill, + safeJoin: safeJoin, + serializeException: serializeException, + serializeKeysForMessage: serializeKeysForMessage, + sanitize: sanitize +}; + +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"10":10}],9:[function(_dereq_,module,exports){ +(function (global){ +var utils = _dereq_(8); + +/* + TraceKit - Cross brower stack traces + + This was originally forked from github.com/occ/TraceKit, but has since been + largely re-written and is now maintained as part of raven-js. Tests for + this are in test/vendor. + + MIT license +*/ + +var TraceKit = { + collectWindowErrors: true, + debug: false +}; + +// This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) +var _window = + typeof window !== 'undefined' + ? window + : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; + +// global reference to slice +var _slice = [].slice; +var UNKNOWN_FUNCTION = '?'; + +// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error#Error_types +var ERROR_TYPES_RE = /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/; + +function getLocationHref() { + if (typeof document === 'undefined' || document.location == null) return ''; + return document.location.href; +} + +function getLocationOrigin() { + if (typeof document === 'undefined' || document.location == null) return ''; + + // Oh dear IE10... + if (!document.location.origin) { + document.location.origin = + document.location.protocol + + '//' + + document.location.hostname + + (document.location.port ? ':' + document.location.port : ''); + } + + return document.location.origin; +} + +/** + * TraceKit.report: cross-browser processing of unhandled exceptions + * + * Syntax: + * TraceKit.report.subscribe(function(stackInfo) { ... }) + * TraceKit.report.unsubscribe(function(stackInfo) { ... }) + * TraceKit.report(exception) + * try { ...code... } catch(ex) { TraceKit.report(ex); } + * + * Supports: + * - Firefox: full stack trace with line numbers, plus column number + * on top frame; column number is not guaranteed + * - Opera: full stack trace with line and column numbers + * - Chrome: full stack trace with line and column numbers + * - Safari: line and column number for the top frame only; some frames + * may be missing, and column number is not guaranteed + * - IE: line and column number for the top frame only; some frames + * may be missing, and column number is not guaranteed + * + * In theory, TraceKit should work on all of the following versions: + * - IE5.5+ (only 8.0 tested) + * - Firefox 0.9+ (only 3.5+ tested) + * - Opera 7+ (only 10.50 tested; versions 9 and earlier may require + * Exceptions Have Stacktrace to be enabled in opera:config) + * - Safari 3+ (only 4+ tested) + * - Chrome 1+ (only 5+ tested) + * - Konqueror 3.5+ (untested) + * + * Requires TraceKit.computeStackTrace. + * + * Tries to catch all unhandled exceptions and report them to the + * subscribed handlers. Please note that TraceKit.report will rethrow the + * exception. This is REQUIRED in order to get a useful stack trace in IE. + * If the exception does not reach the top of the browser, you will only + * get a stack trace from the point where TraceKit.report was called. + * + * Handlers receive a stackInfo object as described in the + * TraceKit.computeStackTrace docs. + */ +TraceKit.report = (function reportModuleWrapper() { + var handlers = [], + lastArgs = null, + lastException = null, + lastExceptionStack = null; + + /** + * Add a crash handler. + * @param {Function} handler + */ + function subscribe(handler) { + installGlobalHandler(); + handlers.push(handler); + } + + /** + * Remove a crash handler. + * @param {Function} handler + */ + function unsubscribe(handler) { + for (var i = handlers.length - 1; i >= 0; --i) { + if (handlers[i] === handler) { + handlers.splice(i, 1); + } + } + } + + /** + * Remove all crash handlers. + */ + function unsubscribeAll() { + uninstallGlobalHandler(); + handlers = []; + } + + /** + * Dispatch stack information to all handlers. + * @param {Object.} stack + */ + function notifyHandlers(stack, isWindowError) { + var exception = null; + if (isWindowError && !TraceKit.collectWindowErrors) { + return; + } + for (var i in handlers) { + if (handlers.hasOwnProperty(i)) { + try { + handlers[i].apply(null, [stack].concat(_slice.call(arguments, 2))); + } catch (inner) { + exception = inner; + } + } + } + + if (exception) { + throw exception; + } + } + + var _oldOnerrorHandler, _onErrorHandlerInstalled; + + /** + * Ensures all global unhandled exceptions are recorded. + * Supported by Gecko and IE. + * @param {string} msg Error message. + * @param {string} url URL of script that generated the exception. + * @param {(number|string)} lineNo The line number at which the error + * occurred. + * @param {?(number|string)} colNo The column number at which the error + * occurred. + * @param {?Error} ex The actual Error object. + */ + function traceKitWindowOnError(msg, url, lineNo, colNo, ex) { + var stack = null; + // If 'ex' is ErrorEvent, get real Error from inside + var exception = utils.isErrorEvent(ex) ? ex.error : ex; + // If 'msg' is ErrorEvent, get real message from inside + var message = utils.isErrorEvent(msg) ? msg.message : msg; + + if (lastExceptionStack) { + TraceKit.computeStackTrace.augmentStackTraceWithInitialElement( + lastExceptionStack, + url, + lineNo, + message + ); + processLastException(); + } else if (exception && utils.isError(exception)) { + // non-string `exception` arg; attempt to extract stack trace + + // New chrome and blink send along a real error object + // Let's just report that like a normal error. + // See: https://mikewest.org/2013/08/debugging-runtime-errors-with-window-onerror + stack = TraceKit.computeStackTrace(exception); + notifyHandlers(stack, true); + } else { + var location = { + url: url, + line: lineNo, + column: colNo + }; + + var name = undefined; + var groups; + + if ({}.toString.call(message) === '[object String]') { + var groups = message.match(ERROR_TYPES_RE); + if (groups) { + name = groups[1]; + message = groups[2]; + } + } + + location.func = UNKNOWN_FUNCTION; + + stack = { + name: name, + message: message, + url: getLocationHref(), + stack: [location] + }; + notifyHandlers(stack, true); + } + + if (_oldOnerrorHandler) { + return _oldOnerrorHandler.apply(this, arguments); + } + + return false; + } + + function installGlobalHandler() { + if (_onErrorHandlerInstalled) { + return; + } + _oldOnerrorHandler = _window.onerror; + _window.onerror = traceKitWindowOnError; + _onErrorHandlerInstalled = true; + } + + function uninstallGlobalHandler() { + if (!_onErrorHandlerInstalled) { + return; + } + _window.onerror = _oldOnerrorHandler; + _onErrorHandlerInstalled = false; + _oldOnerrorHandler = undefined; + } + + function processLastException() { + var _lastExceptionStack = lastExceptionStack, + _lastArgs = lastArgs; + lastArgs = null; + lastExceptionStack = null; + lastException = null; + notifyHandlers.apply(null, [_lastExceptionStack, false].concat(_lastArgs)); + } + + /** + * Reports an unhandled Error to TraceKit. + * @param {Error} ex + * @param {?boolean} rethrow If false, do not re-throw the exception. + * Only used for window.onerror to not cause an infinite loop of + * rethrowing. + */ + function report(ex, rethrow) { + var args = _slice.call(arguments, 1); + if (lastExceptionStack) { + if (lastException === ex) { + return; // already caught by an inner catch block, ignore + } else { + processLastException(); + } + } + + var stack = TraceKit.computeStackTrace(ex); + lastExceptionStack = stack; + lastException = ex; + lastArgs = args; + + // If the stack trace is incomplete, wait for 2 seconds for + // slow slow IE to see if onerror occurs or not before reporting + // this exception; otherwise, we will end up with an incomplete + // stack trace + setTimeout(function() { + if (lastException === ex) { + processLastException(); + } + }, stack.incomplete ? 2000 : 0); + + if (rethrow !== false) { + throw ex; // re-throw to propagate to the top level (and cause window.onerror) + } + } + + report.subscribe = subscribe; + report.unsubscribe = unsubscribe; + report.uninstall = unsubscribeAll; + return report; +})(); + +/** + * TraceKit.computeStackTrace: cross-browser stack traces in JavaScript + * + * Syntax: + * s = TraceKit.computeStackTrace(exception) // consider using TraceKit.report instead (see below) + * Returns: + * s.name - exception name + * s.message - exception message + * s.stack[i].url - JavaScript or HTML file URL + * s.stack[i].func - function name, or empty for anonymous functions (if guessing did not work) + * s.stack[i].args - arguments passed to the function, if known + * s.stack[i].line - line number, if known + * s.stack[i].column - column number, if known + * + * Supports: + * - Firefox: full stack trace with line numbers and unreliable column + * number on top frame + * - Opera 10: full stack trace with line and column numbers + * - Opera 9-: full stack trace with line numbers + * - Chrome: full stack trace with line and column numbers + * - Safari: line and column number for the topmost stacktrace element + * only + * - IE: no line numbers whatsoever + * + * Tries to guess names of anonymous functions by looking for assignments + * in the source code. In IE and Safari, we have to guess source file names + * by searching for function bodies inside all page scripts. This will not + * work for scripts that are loaded cross-domain. + * Here be dragons: some function names may be guessed incorrectly, and + * duplicate functions may be mismatched. + * + * TraceKit.computeStackTrace should only be used for tracing purposes. + * Logging of unhandled exceptions should be done with TraceKit.report, + * which builds on top of TraceKit.computeStackTrace and provides better + * IE support by utilizing the window.onerror event to retrieve information + * about the top of the stack. + * + * Note: In IE and Safari, no stack trace is recorded on the Error object, + * so computeStackTrace instead walks its *own* chain of callers. + * This means that: + * * in Safari, some methods may be missing from the stack trace; + * * in IE, the topmost function in the stack trace will always be the + * caller of computeStackTrace. + * + * This is okay for tracing (because you are likely to be calling + * computeStackTrace from the function you want to be the topmost element + * of the stack trace anyway), but not okay for logging unhandled + * exceptions (because your catch block will likely be far away from the + * inner function that actually caused the exception). + * + */ +TraceKit.computeStackTrace = (function computeStackTraceWrapper() { + // Contents of Exception in various browsers. + // + // SAFARI: + // ex.message = Can't find variable: qq + // ex.line = 59 + // ex.sourceId = 580238192 + // ex.sourceURL = http://... + // ex.expressionBeginOffset = 96 + // ex.expressionCaretOffset = 98 + // ex.expressionEndOffset = 98 + // ex.name = ReferenceError + // + // FIREFOX: + // ex.message = qq is not defined + // ex.fileName = http://... + // ex.lineNumber = 59 + // ex.columnNumber = 69 + // ex.stack = ...stack trace... (see the example below) + // ex.name = ReferenceError + // + // CHROME: + // ex.message = qq is not defined + // ex.name = ReferenceError + // ex.type = not_defined + // ex.arguments = ['aa'] + // ex.stack = ...stack trace... + // + // INTERNET EXPLORER: + // ex.message = ... + // ex.name = ReferenceError + // + // OPERA: + // ex.message = ...message... (see the example below) + // ex.name = ReferenceError + // ex.opera#sourceloc = 11 (pretty much useless, duplicates the info in ex.message) + // ex.stacktrace = n/a; see 'opera:config#UserPrefs|Exceptions Have Stacktrace' + + /** + * Computes stack trace information from the stack property. + * Chrome and Gecko use this property. + * @param {Error} ex + * @return {?Object.} Stack trace information. + */ + function computeStackTraceFromStackProp(ex) { + if (typeof ex.stack === 'undefined' || !ex.stack) return; + + var chrome = /^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i; + var winjs = /^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i; + // NOTE: blob urls are now supposed to always have an origin, therefore it's format + // which is `blob:http://url/path/with-some-uuid`, is matched by `blob.*?:\/` as well + var gecko = /^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i; + // Used to additionally parse URL/line/column from eval frames + var geckoEval = /(\S+) line (\d+)(?: > eval line \d+)* > eval/i; + var chromeEval = /\((\S*)(?::(\d+))(?::(\d+))\)/; + var lines = ex.stack.split('\n'); + var stack = []; + var submatch; + var parts; + var element; + var reference = /^(.*) is undefined$/.exec(ex.message); + + for (var i = 0, j = lines.length; i < j; ++i) { + if ((parts = chrome.exec(lines[i]))) { + var isNative = parts[2] && parts[2].indexOf('native') === 0; // start of line + var isEval = parts[2] && parts[2].indexOf('eval') === 0; // start of line + if (isEval && (submatch = chromeEval.exec(parts[2]))) { + // throw out eval line/column and use top-most line/column number + parts[2] = submatch[1]; // url + parts[3] = submatch[2]; // line + parts[4] = submatch[3]; // column + } + element = { + url: !isNative ? parts[2] : null, + func: parts[1] || UNKNOWN_FUNCTION, + args: isNative ? [parts[2]] : [], + line: parts[3] ? +parts[3] : null, + column: parts[4] ? +parts[4] : null + }; + } else if ((parts = winjs.exec(lines[i]))) { + element = { + url: parts[2], + func: parts[1] || UNKNOWN_FUNCTION, + args: [], + line: +parts[3], + column: parts[4] ? +parts[4] : null + }; + } else if ((parts = gecko.exec(lines[i]))) { + var isEval = parts[3] && parts[3].indexOf(' > eval') > -1; + if (isEval && (submatch = geckoEval.exec(parts[3]))) { + // throw out eval line/column and use top-most line number + parts[3] = submatch[1]; + parts[4] = submatch[2]; + parts[5] = null; // no column when eval + } else if (i === 0 && !parts[5] && typeof ex.columnNumber !== 'undefined') { + // FireFox uses this awesome columnNumber property for its top frame + // Also note, Firefox's column number is 0-based and everything else expects 1-based, + // so adding 1 + // NOTE: this hack doesn't work if top-most frame is eval + stack[0].column = ex.columnNumber + 1; + } + element = { + url: parts[3], + func: parts[1] || UNKNOWN_FUNCTION, + args: parts[2] ? parts[2].split(',') : [], + line: parts[4] ? +parts[4] : null, + column: parts[5] ? +parts[5] : null + }; + } else { + continue; + } + + if (!element.func && element.line) { + element.func = UNKNOWN_FUNCTION; + } + + if (element.url && element.url.substr(0, 5) === 'blob:') { + // Special case for handling JavaScript loaded into a blob. + // We use a synchronous AJAX request here as a blob is already in + // memory - it's not making a network request. This will generate a warning + // in the browser console, but there has already been an error so that's not + // that much of an issue. + var xhr = new XMLHttpRequest(); + xhr.open('GET', element.url, false); + xhr.send(null); + + // If we failed to download the source, skip this patch + if (xhr.status === 200) { + var source = xhr.responseText || ''; + + // We trim the source down to the last 300 characters as sourceMappingURL is always at the end of the file. + // Why 300? To be in line with: https://github.com/getsentry/sentry/blob/4af29e8f2350e20c28a6933354e4f42437b4ba42/src/sentry/lang/javascript/processor.py#L164-L175 + source = source.slice(-300); + + // Now we dig out the source map URL + var sourceMaps = source.match(/\/\/# sourceMappingURL=(.*)$/); + + // If we don't find a source map comment or we find more than one, continue on to the next element. + if (sourceMaps) { + var sourceMapAddress = sourceMaps[1]; + + // Now we check to see if it's a relative URL. + // If it is, convert it to an absolute one. + if (sourceMapAddress.charAt(0) === '~') { + sourceMapAddress = getLocationOrigin() + sourceMapAddress.slice(1); + } + + // Now we strip the '.map' off of the end of the URL and update the + // element so that Sentry can match the map to the blob. + element.url = sourceMapAddress.slice(0, -4); + } + } + } + + stack.push(element); + } + + if (!stack.length) { + return null; + } + + return { + name: ex.name, + message: ex.message, + url: getLocationHref(), + stack: stack + }; + } + + /** + * Adds information about the first frame to incomplete stack traces. + * Safari and IE require this to get complete data on the first frame. + * @param {Object.} stackInfo Stack trace information from + * one of the compute* methods. + * @param {string} url The URL of the script that caused an error. + * @param {(number|string)} lineNo The line number of the script that + * caused an error. + * @param {string=} message The error generated by the browser, which + * hopefully contains the name of the object that caused the error. + * @return {boolean} Whether or not the stack information was + * augmented. + */ + function augmentStackTraceWithInitialElement(stackInfo, url, lineNo, message) { + var initial = { + url: url, + line: lineNo + }; + + if (initial.url && initial.line) { + stackInfo.incomplete = false; + + if (!initial.func) { + initial.func = UNKNOWN_FUNCTION; + } + + if (stackInfo.stack.length > 0) { + if (stackInfo.stack[0].url === initial.url) { + if (stackInfo.stack[0].line === initial.line) { + return false; // already in stack trace + } else if ( + !stackInfo.stack[0].line && + stackInfo.stack[0].func === initial.func + ) { + stackInfo.stack[0].line = initial.line; + return false; + } + } + } + + stackInfo.stack.unshift(initial); + stackInfo.partial = true; + return true; + } else { + stackInfo.incomplete = true; + } + + return false; + } + + /** + * Computes stack trace information by walking the arguments.caller + * chain at the time the exception occurred. This will cause earlier + * frames to be missed but is the only way to get any stack trace in + * Safari and IE. The top frame is restored by + * {@link augmentStackTraceWithInitialElement}. + * @param {Error} ex + * @return {?Object.} Stack trace information. + */ + function computeStackTraceByWalkingCallerChain(ex, depth) { + var functionName = /function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i, + stack = [], + funcs = {}, + recursion = false, + parts, + item, + source; + + for ( + var curr = computeStackTraceByWalkingCallerChain.caller; + curr && !recursion; + curr = curr.caller + ) { + if (curr === computeStackTrace || curr === TraceKit.report) { + // console.log('skipping internal function'); + continue; + } + + item = { + url: null, + func: UNKNOWN_FUNCTION, + line: null, + column: null + }; + + if (curr.name) { + item.func = curr.name; + } else if ((parts = functionName.exec(curr.toString()))) { + item.func = parts[1]; + } + + if (typeof item.func === 'undefined') { + try { + item.func = parts.input.substring(0, parts.input.indexOf('{')); + } catch (e) {} + } + + if (funcs['' + curr]) { + recursion = true; + } else { + funcs['' + curr] = true; + } + + stack.push(item); + } + + if (depth) { + // console.log('depth is ' + depth); + // console.log('stack is ' + stack.length); + stack.splice(0, depth); + } + + var result = { + name: ex.name, + message: ex.message, + url: getLocationHref(), + stack: stack + }; + augmentStackTraceWithInitialElement( + result, + ex.sourceURL || ex.fileName, + ex.line || ex.lineNumber, + ex.message || ex.description + ); + return result; + } + + /** + * Computes a stack trace for an exception. + * @param {Error} ex + * @param {(string|number)=} depth + */ + function computeStackTrace(ex, depth) { + var stack = null; + depth = depth == null ? 0 : +depth; + + try { + stack = computeStackTraceFromStackProp(ex); + if (stack) { + return stack; + } + } catch (e) { + if (TraceKit.debug) { + throw e; + } + } + + try { + stack = computeStackTraceByWalkingCallerChain(ex, depth + 1); + if (stack) { + return stack; + } + } catch (e) { + if (TraceKit.debug) { + throw e; + } + } + return { + name: ex.name, + message: ex.message, + url: getLocationHref() + }; + } + + computeStackTrace.augmentStackTraceWithInitialElement = augmentStackTraceWithInitialElement; + computeStackTrace.computeStackTraceFromStackProp = computeStackTraceFromStackProp; + + return computeStackTrace; +})(); + +module.exports = TraceKit; + +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"8":8}],10:[function(_dereq_,module,exports){ +/* + json-stringify-safe + Like JSON.stringify, but doesn't throw on circular references. + + Originally forked from https://github.com/isaacs/json-stringify-safe + version 5.0.1 on 3/8/2017 and modified to handle Errors serialization + and IE8 compatibility. Tests for this are in test/vendor. + + ISC license: https://github.com/isaacs/json-stringify-safe/blob/master/LICENSE +*/ + +exports = module.exports = stringify; +exports.getSerialize = serializer; + +function indexOf(haystack, needle) { + for (var i = 0; i < haystack.length; ++i) { + if (haystack[i] === needle) return i; + } + return -1; +} + +function stringify(obj, replacer, spaces, cycleReplacer) { + return JSON.stringify(obj, serializer(replacer, cycleReplacer), spaces); +} + +// https://github.com/ftlabs/js-abbreviate/blob/fa709e5f139e7770a71827b1893f22418097fbda/index.js#L95-L106 +function stringifyError(value) { + var err = { + // These properties are implemented as magical getters and don't show up in for in + stack: value.stack, + message: value.message, + name: value.name + }; + + for (var i in value) { + if (Object.prototype.hasOwnProperty.call(value, i)) { + err[i] = value[i]; + } + } + + return err; +} + +function serializer(replacer, cycleReplacer) { + var stack = []; + var keys = []; + + if (cycleReplacer == null) { + cycleReplacer = function(key, value) { + if (stack[0] === value) { + return '[Circular ~]'; + } + return '[Circular ~.' + keys.slice(0, indexOf(stack, value)).join('.') + ']'; + }; + } + + return function(key, value) { + if (stack.length > 0) { + var thisPos = indexOf(stack, this); + ~thisPos ? stack.splice(thisPos + 1) : stack.push(this); + ~thisPos ? keys.splice(thisPos, Infinity, key) : keys.push(key); + + if (~indexOf(stack, value)) { + value = cycleReplacer.call(this, key, value); + } + } else { + stack.push(value); + } + + return replacer == null + ? value instanceof Error ? stringifyError(value) : value + : replacer.call(this, key, value); + }; +} + +},{}],11:[function(_dereq_,module,exports){ +/* + * JavaScript MD5 + * https://github.com/blueimp/JavaScript-MD5 + * + * Copyright 2011, Sebastian Tschan + * https://blueimp.net + * + * Licensed under the MIT license: + * https://opensource.org/licenses/MIT + * + * Based on + * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message + * Digest Algorithm, as defined in RFC 1321. + * Version 2.2 Copyright (C) Paul Johnston 1999 - 2009 + * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet + * Distributed under the BSD License + * See http://pajhome.org.uk/crypt/md5 for more info. + */ + +/* +* Add integers, wrapping at 2^32. This uses 16-bit operations internally +* to work around bugs in some JS interpreters. +*/ +function safeAdd(x, y) { + var lsw = (x & 0xffff) + (y & 0xffff); + var msw = (x >> 16) + (y >> 16) + (lsw >> 16); + return (msw << 16) | (lsw & 0xffff); +} + +/* +* Bitwise rotate a 32-bit number to the left. +*/ +function bitRotateLeft(num, cnt) { + return (num << cnt) | (num >>> (32 - cnt)); +} + +/* +* These functions implement the four basic operations the algorithm uses. +*/ +function md5cmn(q, a, b, x, s, t) { + return safeAdd(bitRotateLeft(safeAdd(safeAdd(a, q), safeAdd(x, t)), s), b); +} +function md5ff(a, b, c, d, x, s, t) { + return md5cmn((b & c) | (~b & d), a, b, x, s, t); +} +function md5gg(a, b, c, d, x, s, t) { + return md5cmn((b & d) | (c & ~d), a, b, x, s, t); +} +function md5hh(a, b, c, d, x, s, t) { + return md5cmn(b ^ c ^ d, a, b, x, s, t); +} +function md5ii(a, b, c, d, x, s, t) { + return md5cmn(c ^ (b | ~d), a, b, x, s, t); +} + +/* +* Calculate the MD5 of an array of little-endian words, and a bit length. +*/ +function binlMD5(x, len) { + /* append padding */ + x[len >> 5] |= 0x80 << (len % 32); + x[(((len + 64) >>> 9) << 4) + 14] = len; + + var i; + var olda; + var oldb; + var oldc; + var oldd; + var a = 1732584193; + var b = -271733879; + var c = -1732584194; + var d = 271733878; + + for (i = 0; i < x.length; i += 16) { + olda = a; + oldb = b; + oldc = c; + oldd = d; + + a = md5ff(a, b, c, d, x[i], 7, -680876936); + d = md5ff(d, a, b, c, x[i + 1], 12, -389564586); + c = md5ff(c, d, a, b, x[i + 2], 17, 606105819); + b = md5ff(b, c, d, a, x[i + 3], 22, -1044525330); + a = md5ff(a, b, c, d, x[i + 4], 7, -176418897); + d = md5ff(d, a, b, c, x[i + 5], 12, 1200080426); + c = md5ff(c, d, a, b, x[i + 6], 17, -1473231341); + b = md5ff(b, c, d, a, x[i + 7], 22, -45705983); + a = md5ff(a, b, c, d, x[i + 8], 7, 1770035416); + d = md5ff(d, a, b, c, x[i + 9], 12, -1958414417); + c = md5ff(c, d, a, b, x[i + 10], 17, -42063); + b = md5ff(b, c, d, a, x[i + 11], 22, -1990404162); + a = md5ff(a, b, c, d, x[i + 12], 7, 1804603682); + d = md5ff(d, a, b, c, x[i + 13], 12, -40341101); + c = md5ff(c, d, a, b, x[i + 14], 17, -1502002290); + b = md5ff(b, c, d, a, x[i + 15], 22, 1236535329); + + a = md5gg(a, b, c, d, x[i + 1], 5, -165796510); + d = md5gg(d, a, b, c, x[i + 6], 9, -1069501632); + c = md5gg(c, d, a, b, x[i + 11], 14, 643717713); + b = md5gg(b, c, d, a, x[i], 20, -373897302); + a = md5gg(a, b, c, d, x[i + 5], 5, -701558691); + d = md5gg(d, a, b, c, x[i + 10], 9, 38016083); + c = md5gg(c, d, a, b, x[i + 15], 14, -660478335); + b = md5gg(b, c, d, a, x[i + 4], 20, -405537848); + a = md5gg(a, b, c, d, x[i + 9], 5, 568446438); + d = md5gg(d, a, b, c, x[i + 14], 9, -1019803690); + c = md5gg(c, d, a, b, x[i + 3], 14, -187363961); + b = md5gg(b, c, d, a, x[i + 8], 20, 1163531501); + a = md5gg(a, b, c, d, x[i + 13], 5, -1444681467); + d = md5gg(d, a, b, c, x[i + 2], 9, -51403784); + c = md5gg(c, d, a, b, x[i + 7], 14, 1735328473); + b = md5gg(b, c, d, a, x[i + 12], 20, -1926607734); + + a = md5hh(a, b, c, d, x[i + 5], 4, -378558); + d = md5hh(d, a, b, c, x[i + 8], 11, -2022574463); + c = md5hh(c, d, a, b, x[i + 11], 16, 1839030562); + b = md5hh(b, c, d, a, x[i + 14], 23, -35309556); + a = md5hh(a, b, c, d, x[i + 1], 4, -1530992060); + d = md5hh(d, a, b, c, x[i + 4], 11, 1272893353); + c = md5hh(c, d, a, b, x[i + 7], 16, -155497632); + b = md5hh(b, c, d, a, x[i + 10], 23, -1094730640); + a = md5hh(a, b, c, d, x[i + 13], 4, 681279174); + d = md5hh(d, a, b, c, x[i], 11, -358537222); + c = md5hh(c, d, a, b, x[i + 3], 16, -722521979); + b = md5hh(b, c, d, a, x[i + 6], 23, 76029189); + a = md5hh(a, b, c, d, x[i + 9], 4, -640364487); + d = md5hh(d, a, b, c, x[i + 12], 11, -421815835); + c = md5hh(c, d, a, b, x[i + 15], 16, 530742520); + b = md5hh(b, c, d, a, x[i + 2], 23, -995338651); + + a = md5ii(a, b, c, d, x[i], 6, -198630844); + d = md5ii(d, a, b, c, x[i + 7], 10, 1126891415); + c = md5ii(c, d, a, b, x[i + 14], 15, -1416354905); + b = md5ii(b, c, d, a, x[i + 5], 21, -57434055); + a = md5ii(a, b, c, d, x[i + 12], 6, 1700485571); + d = md5ii(d, a, b, c, x[i + 3], 10, -1894986606); + c = md5ii(c, d, a, b, x[i + 10], 15, -1051523); + b = md5ii(b, c, d, a, x[i + 1], 21, -2054922799); + a = md5ii(a, b, c, d, x[i + 8], 6, 1873313359); + d = md5ii(d, a, b, c, x[i + 15], 10, -30611744); + c = md5ii(c, d, a, b, x[i + 6], 15, -1560198380); + b = md5ii(b, c, d, a, x[i + 13], 21, 1309151649); + a = md5ii(a, b, c, d, x[i + 4], 6, -145523070); + d = md5ii(d, a, b, c, x[i + 11], 10, -1120210379); + c = md5ii(c, d, a, b, x[i + 2], 15, 718787259); + b = md5ii(b, c, d, a, x[i + 9], 21, -343485551); + + a = safeAdd(a, olda); + b = safeAdd(b, oldb); + c = safeAdd(c, oldc); + d = safeAdd(d, oldd); + } + return [a, b, c, d]; +} + +/* +* Convert an array of little-endian words to a string +*/ +function binl2rstr(input) { + var i; + var output = ''; + var length32 = input.length * 32; + for (i = 0; i < length32; i += 8) { + output += String.fromCharCode((input[i >> 5] >>> (i % 32)) & 0xff); + } + return output; +} + +/* +* Convert a raw string to an array of little-endian words +* Characters >255 have their high-byte silently ignored. +*/ +function rstr2binl(input) { + var i; + var output = []; + output[(input.length >> 2) - 1] = undefined; + for (i = 0; i < output.length; i += 1) { + output[i] = 0; + } + var length8 = input.length * 8; + for (i = 0; i < length8; i += 8) { + output[i >> 5] |= (input.charCodeAt(i / 8) & 0xff) << (i % 32); + } + return output; +} + +/* +* Calculate the MD5 of a raw string +*/ +function rstrMD5(s) { + return binl2rstr(binlMD5(rstr2binl(s), s.length * 8)); +} + +/* +* Calculate the HMAC-MD5, of a key and some data (raw strings) +*/ +function rstrHMACMD5(key, data) { + var i; + var bkey = rstr2binl(key); + var ipad = []; + var opad = []; + var hash; + ipad[15] = opad[15] = undefined; + if (bkey.length > 16) { + bkey = binlMD5(bkey, key.length * 8); + } + for (i = 0; i < 16; i += 1) { + ipad[i] = bkey[i] ^ 0x36363636; + opad[i] = bkey[i] ^ 0x5c5c5c5c; + } + hash = binlMD5(ipad.concat(rstr2binl(data)), 512 + data.length * 8); + return binl2rstr(binlMD5(opad.concat(hash), 512 + 128)); +} + +/* +* Convert a raw string to a hex string +*/ +function rstr2hex(input) { + var hexTab = '0123456789abcdef'; + var output = ''; + var x; + var i; + for (i = 0; i < input.length; i += 1) { + x = input.charCodeAt(i); + output += hexTab.charAt((x >>> 4) & 0x0f) + hexTab.charAt(x & 0x0f); + } + return output; +} + +/* +* Encode a string as utf-8 +*/ +function str2rstrUTF8(input) { + return unescape(encodeURIComponent(input)); +} + +/* +* Take string arguments and return either raw or hex encoded strings +*/ +function rawMD5(s) { + return rstrMD5(str2rstrUTF8(s)); +} +function hexMD5(s) { + return rstr2hex(rawMD5(s)); +} +function rawHMACMD5(k, d) { + return rstrHMACMD5(str2rstrUTF8(k), str2rstrUTF8(d)); +} +function hexHMACMD5(k, d) { + return rstr2hex(rawHMACMD5(k, d)); +} + +function md5(string, key, raw) { + if (!key) { + if (!raw) { + return hexMD5(string); + } + return rawMD5(string); + } + if (!raw) { + return hexHMACMD5(key, string); + } + return rawHMACMD5(key, string); +} + +module.exports = md5; + +},{}]},{},[7,1,2,3])(7) +}); \ No newline at end of file diff --git a/packages/raven-js/dist/angular,require,vue/raven.min.js b/packages/raven-js/dist/angular,require,vue/raven.min.js new file mode 100644 index 000000000000..de05c4d1ae1e --- /dev/null +++ b/packages/raven-js/dist/angular,require,vue/raven.min.js @@ -0,0 +1,4 @@ +/*! Raven.js 3.25.2 (30b6d4e) | github.com/getsentry/raven-js */ +!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.Raven=a()}}(function(){var a;return function b(a,c,d){function e(g,h){if(!c[g]){if(!a[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};a[g][0].call(k.exports,function(b){var c=a[g][1][b];return e(c?c:b)},k,k.exports,b,a,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;g":"anonymous component")+(a._isVue&&a.$options.__file?" at "+a.$options.__file:"")}function e(a,b){if(b=b||window.Vue,b&&b.config){var c=b.config.errorHandler;b.config.errorHandler=function(b,e,f){var g={};"[object Object]"===Object.prototype.toString.call(e)&&(g.componentName=d(e),g.propsData=e.$options.propsData),"undefined"!=typeof f&&(g.lifecycleHook=f),a.captureException(b,{extra:g}),"function"==typeof c&&c.call(this,b,e,f)}}}b.exports=e,a(7).addPlugin(b.exports)},{7:7}],4:[function(a,b,c){function d(a){this.name="RavenConfigError",this.message=a}d.prototype=new Error,d.prototype.constructor=d,b.exports=d},{}],5:[function(a,b,c){var d=a(8),e=function(a,b,c){var e=a[b],f=a;if(b in a){var g="warn"===b?"warning":b;a[b]=function(){var a=[].slice.call(arguments),h=d.safeJoin(a," "),i={level:g,logger:"console",extra:{arguments:a}};"assert"===b?a[0]===!1&&(h="Assertion failed: "+(d.safeJoin(a.slice(1)," ")||"console.assert"),i.extra.arguments=a.slice(1),c&&c(h,i)):c&&c(h,i),e&&Function.prototype.apply.call(e,f,a)}}};b.exports={wrapMethod:e}},{8:8}],6:[function(a,b,c){(function(c){function d(){return+new Date}function e(a,b){return s(b)?function(c){return b(c,a)}:b}function f(){this.b=!("object"!=typeof JSON||!JSON.stringify),this.c=!r(S),this.d=!r(T),this.e=null,this.f=null,this.g=null,this.h=null,this.i=null,this.j=null,this.k={},this.l={release:R.SENTRY_RELEASE&&R.SENTRY_RELEASE.id,logger:"javascript",ignoreErrors:[],ignoreUrls:[],whitelistUrls:[],includePaths:[],headers:null,collectWindowErrors:!0,captureUnhandledRejections:!0,maxMessageLength:0,maxUrlLength:250,stackTraceLimit:50,autoBreadcrumbs:!0,instrument:!0,sampleRate:1,sanitizeKeys:[]},this.m={method:"POST",keepalive:!0,referrerPolicy:K()?"origin":""},this.n=0,this.o=!1,this.p=Error.stackTraceLimit,this.q=R.console||{},this.r={},this.s=[],this.t=d(),this.u=[],this.v=[],this.w=null,this.x=R.location,this.y=this.x&&this.x.href,this.z();for(var a in this.q)this.r[a]=this.q[a]}var g=a(9),h=a(10),i=a(11),j=a(4),k=a(8),l=k.isErrorEvent,m=k.isDOMError,n=k.isDOMException,o=k.isError,p=k.isObject,q=k.isPlainObject,r=k.isUndefined,s=k.isFunction,t=k.isString,u=k.isArray,v=k.isEmptyObject,w=k.each,x=k.objectMerge,y=k.truncate,z=k.objectFrozen,A=k.hasKey,B=k.joinRegExp,C=k.urlencode,D=k.uuid4,E=k.htmlTreeAsString,F=k.isSameException,G=k.isSameStacktrace,H=k.parseUrl,I=k.fill,J=k.supportsFetch,K=k.supportsReferrerPolicy,L=k.serializeKeysForMessage,M=k.serializeException,N=k.sanitize,O=a(5).wrapMethod,P="source protocol user pass host port path".split(" "),Q=/^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/,R="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},S=R.document,T=R.navigator;f.prototype={VERSION:"3.25.2",debug:!1,TraceKit:g,config:function(a,b){var c=this;if(c.h)return this.A("error","Error: Raven has already been configured"),c;if(!a)return c;var d=c.l;b&&w(b,function(a,b){"tags"===a||"extra"===a||"user"===a?c.k[a]=b:d[a]=b}),c.setDSN(a),d.ignoreErrors.push(/^Script error\.?$/),d.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/),d.ignoreErrors=B(d.ignoreErrors),d.ignoreUrls=!!d.ignoreUrls.length&&B(d.ignoreUrls),d.whitelistUrls=!!d.whitelistUrls.length&&B(d.whitelistUrls),d.includePaths=B(d.includePaths),d.maxBreadcrumbs=Math.max(0,Math.min(d.maxBreadcrumbs||100,100));var e={xhr:!0,console:!0,dom:!0,location:!0,sentry:!0},f=d.autoBreadcrumbs;"[object Object]"==={}.toString.call(f)?f=x(e,f):f!==!1&&(f=e),d.autoBreadcrumbs=f;var h={tryCatch:!0},i=d.instrument;return"[object Object]"==={}.toString.call(i)?i=x(h,i):i!==!1&&(i=h),d.instrument=i,g.collectWindowErrors=!!d.collectWindowErrors,c},install:function(){var a=this;return a.isSetup()&&!a.o&&(g.report.subscribe(function(){a.B.apply(a,arguments)}),a.l.captureUnhandledRejections&&a.C(),a.D(),a.l.instrument&&a.l.instrument.tryCatch&&a.E(),a.l.autoBreadcrumbs&&a.F(),a.G(),a.o=!0),Error.stackTraceLimit=a.l.stackTraceLimit,this},setDSN:function(a){var b=this,c=b.H(a),d=c.path.lastIndexOf("/"),e=c.path.substr(1,d);b.I=a,b.i=c.user,b.J=c.pass&&c.pass.substr(1),b.j=c.path.substr(d+1),b.h=b.K(c),b.L=b.h+"/"+e+"api/"+b.j+"/store/",this.z()},context:function(a,b,c){return s(a)&&(c=b||[],b=a,a=void 0),this.wrap(a,b).apply(this,c)},wrap:function(a,b,c){function d(){var d=[],f=arguments.length,g=!a||a&&a.deep!==!1;for(c&&s(c)&&c.apply(this,arguments);f--;)d[f]=g?e.wrap(a,arguments[f]):arguments[f];try{return b.apply(this,d)}catch(h){throw e.M(),e.captureException(h,a),h}}var e=this;if(r(b)&&!s(a))return a;if(s(a)&&(b=a,a=void 0),!s(b))return b;try{if(b.N)return b;if(b.O)return b.O}catch(f){return b}for(var g in b)A(b,g)&&(d[g]=b[g]);return d.prototype=b.prototype,b.O=d,d.N=!0,d.P=b,d},uninstall:function(){return g.report.uninstall(),this.Q(),this.R(),this.S(),this.T(),Error.stackTraceLimit=this.p,this.o=!1,this},U:function(a){this.A("debug","Raven caught unhandled promise rejection:",a),this.captureException(a.reason,{extra:{unhandledPromiseRejection:!0}})},C:function(){return this.U=this.U.bind(this),R.addEventListener&&R.addEventListener("unhandledrejection",this.U),this},Q:function(){return R.removeEventListener&&R.removeEventListener("unhandledrejection",this.U),this},captureException:function(a,b){if(b=x({trimHeadFrames:0},b?b:{}),l(a)&&a.error)a=a.error;else{if(m(a)||n(a)){var c=a.name||(m(a)?"DOMError":"DOMException"),d=a.message?c+": "+a.message:c;return this.captureMessage(d,x(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}))}if(o(a))a=a;else{if(!q(a))return this.captureMessage(a,x(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}));b=this.V(b,a),a=new Error(b.message)}}this.e=a;try{var e=g.computeStackTrace(a);this.W(e,b)}catch(f){if(a!==f)throw f}return this},V:function(a,b){var c=Object.keys(b).sort(),d=x(a,{message:"Non-Error exception captured with keys: "+L(c),fingerprint:[i(c)],extra:a.extra||{}});return d.extra.X=M(b),d},captureMessage:function(a,b){if(!this.l.ignoreErrors.test||!this.l.ignoreErrors.test(a)){b=b||{},a+="";var c,d=x({message:a},b);try{throw new Error(a)}catch(e){c=e}c.name=null;var f=g.computeStackTrace(c),h=u(f.stack)&&f.stack[1];h&&"Raven.captureException"===h.func&&(h=f.stack[2]);var i=h&&h.url||"";if((!this.l.ignoreUrls.test||!this.l.ignoreUrls.test(i))&&(!this.l.whitelistUrls.test||this.l.whitelistUrls.test(i))){if(this.l.stacktrace||b&&b.stacktrace){d.fingerprint=null==d.fingerprint?a:d.fingerprint,b=x({trimHeadFrames:0},b),b.trimHeadFrames+=1;var j=this.Y(f,b);d.stacktrace={frames:j.reverse()}}return d.fingerprint&&(d.fingerprint=u(d.fingerprint)?d.fingerprint:[d.fingerprint]),this.Z(d),this}}},captureBreadcrumb:function(a){var b=x({timestamp:d()/1e3},a);if(s(this.l.breadcrumbCallback)){var c=this.l.breadcrumbCallback(b);if(p(c)&&!v(c))b=c;else if(c===!1)return this}return this.v.push(b),this.v.length>this.l.maxBreadcrumbs&&this.v.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.s.push([a,b]),this.o&&this.G(),this},setUserContext:function(a){return this.k.user=a,this},setExtraContext:function(a){return this.$("extra",a),this},setTagsContext:function(a){return this.$("tags",a),this},clearContext:function(){return this.k={},this},getContext:function(){return JSON.parse(h(this.k))},setEnvironment:function(a){return this.l.environment=a,this},setRelease:function(a){return this.l.release=a,this},setDataCallback:function(a){var b=this.l.dataCallback;return this.l.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.l.breadcrumbCallback;return this.l.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.l.shouldSendCallback;return this.l.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.l.transport=a,this},lastException:function(){return this.e},lastEventId:function(){return this.g},isSetup:function(){return!!this.b&&(!!this.h||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.A("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=R.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(S){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.I;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.k.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.K(this.H(c)),h=S.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(S.head||S.body).appendChild(h)}},M:function(){var a=this;this.n+=1,setTimeout(function(){a.n-=1})},_:function(a,b){var c,d;if(this.c){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),S.createEvent?(c=S.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=S.createEventObject(),c.eventType=a);for(d in b)A(b,d)&&(c[d]=b[d]);if(S.createEvent)S.dispatchEvent(c);else try{S.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},aa:function(a){var b=this;return function(c){if(b.ba=null,b.w!==c){b.w=c;var d;try{d=E(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ca:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.ba;g||a.aa("input")(c),clearTimeout(g),a.ba=setTimeout(function(){a.ba=null},b)}}},da:function(a,b){var c=H(this.x.href),d=H(b),e=H(a);this.y=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},D:function(){var a=this;a.ea=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.N?a.ea.apply(this.P,arguments):a.ea.apply(this,arguments)}},R:function(){this.ea&&(Function.prototype.toString=this.ea)},E:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.da(b.y,c+""),a.apply(this,arguments)}};I(R.history,"pushState",j,d),I(R.history,"replaceState",j,d)}if(c.console&&"console"in R&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};w(["debug","info","warn","error","log"],function(a,b){O(console,b,k)})}},S:function(){for(var a;this.u.length;){a=this.u.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},T:function(){for(var a in this.r)this.q[a]=this.r[a]},G:function(){var a=this;w(this.s,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},H:function(a){var b=Q.exec(a),c={},d=7;try{for(;d--;)c[P[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.l.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},K:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},B:function(){this.n||this.W.apply(this,arguments)},W:function(a,b){var c=this.Y(a,b);this._("handle",{stackInfo:a,options:b}),this.ga(a.name,a.message,a.url,a.lineno,c,b)},Y:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(w(a.stack,function(b,e){var f=c.ha(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.v,0)}),this.k.user&&(a.user=this.k.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),a=this.qa(a),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||v(a[b]))&&delete a[b]}),s(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!v(a)&&(!s(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.na()?void this.A("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function F(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&l(b))for(c=b.split(/\s+/),f=0;fc?Q(a,b-1):d}function R(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?X:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function S(a,b){function c(a){return m(a)?a.map(function(a){return c(a)}):k(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!m(b)||m(b)&&0===b.length)return a;var d,e=A(b),f="********";try{d=JSON.parse(T(a))}catch(g){return a}return c(d)}var T=a(10),U="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},V=3,W=51200,X=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isDOMError:g,isDOMException:h,isUndefined:i,isFunction:j,isPlainObject:k,isString:l,isArray:m,isEmptyObject:n,supportsErrorEvent:o,supportsDOMError:p,supportsDOMException:q,supportsFetch:r,supportsReferrerPolicy:s,supportsPromiseRejectionEvent:t,wrappedCallback:u,each:v,objectMerge:w,truncate:y,objectFrozen:x,hasKey:z,joinRegExp:A,urlencode:B,uuid4:D,htmlTreeAsString:E,htmlElementAsString:F,isSameException:I,isSameStacktrace:J,parseUrl:C,fill:K,safeJoin:L,serializeException:Q,serializeKeysForMessage:R,sanitize:S}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{10:10}],9:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}function e(){return"undefined"==typeof document||null==document.location?"":(document.location.origin||(document.location.origin=document.location.protocol+"//"+document.location.hostname+(document.location.port?":"+document.location.port:"")),document.location.origin)}var f=a(8),g={collectWindowErrors:!0,debug:!1},h="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},i=[].slice,j="?",k=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;g.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function e(a,b){var c=null;if(!b||g.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(i.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,h,i){var l=null,m=f.isErrorEvent(i)?i.error:i,n=f.isErrorEvent(a)?a.message:a;if(v)g.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&f.isError(m))l=g.computeStackTrace(m),e(l,!0);else{var p,r={url:b,line:c,column:h},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(k);p&&(s=p[1],n=p[2])}r.func=j,l={name:s,message:n,url:d(),stack:[r]},e(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=h.onerror,h.onerror=l,r=!0)}function n(){r&&(h.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,e.apply(null,[a,!1].concat(b))}function p(a,b){var c=i.call(arguments,1);if(v){if(u===a)return;o()}var d=g.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),g.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,f,g=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,h=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,i=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,k=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,l=/\((\S*)(?::(\d+))(?::(\d+))\)/,m=a.stack.split("\n"),n=[],o=(/^(.*) is undefined$/.exec(a.message),0),p=m.length;o eval")>-1;r&&(b=k.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==o||c[5]||"undefined"==typeof a.columnNumber||(n[0].column=a.columnNumber+1),f={url:c[3],func:c[1]||j,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}if(!f.func&&f.line&&(f.func=j), +f.url&&"blob:"===f.url.substr(0,5)){var s=new XMLHttpRequest;if(s.open("GET",f.url,!1),s.send(null),200===s.status){var t=s.responseText||"";t=t.slice(-300);var u=t.match(/\/\/# sourceMappingURL=(.*)$/);if(u){var v=u[1];"~"===v.charAt(0)&&(v=e()+v.slice(1)),f.url=v.slice(0,-4)}}}n.push(f)}return n.length?{name:a.name,message:a.message,url:d(),stack:n}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=j),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,e){for(var h,i,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==f&&o!==g.report){if(i={url:null,func:j,line:null,column:null},o.name?i.func=o.name:(h=k.exec(o.toString()))&&(i.func=h[1]),"undefined"==typeof i.func)try{i.func=h.input.substring(0,h.input.indexOf("{"))}catch(p){}m[""+o]?n=!0:m[""+o]=!0,l.push(i)}e&&l.splice(0,e);var q={name:a.name,message:a.message,url:d(),stack:l};return b(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),q}function f(b,e){var f=null;e=null==e?0:+e;try{if(f=a(b))return f}catch(h){if(g.debug)throw h}try{if(f=c(b,e+1))return f}catch(h){if(g.debug)throw h}return{name:b.name,message:b.message,url:d()}}return f.augmentStackTraceWithInitialElement=b,f.computeStackTraceFromStackProp=a,f}(),b.exports=g}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{8:8}],10:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}],11:[function(a,b,c){function d(a,b){var c=(65535&a)+(65535&b),d=(a>>16)+(b>>16)+(c>>16);return d<<16|65535&c}function e(a,b){return a<>>32-b}function f(a,b,c,f,g,h){return d(e(d(d(b,a),d(f,h)),g),c)}function g(a,b,c,d,e,g,h){return f(b&c|~b&d,a,b,e,g,h)}function h(a,b,c,d,e,g,h){return f(b&d|c&~d,a,b,e,g,h)}function i(a,b,c,d,e,g,h){return f(b^c^d,a,b,e,g,h)}function j(a,b,c,d,e,g,h){return f(c^(b|~d),a,b,e,g,h)}function k(a,b){a[b>>5]|=128<>>9<<4)+14]=b;var c,e,f,k,l,m=1732584193,n=-271733879,o=-1732584194,p=271733878;for(c=0;c>5]>>>b%32&255);return c}function m(a){var b,c=[];for(c[(a.length>>2)-1]=void 0,b=0;b>5]|=(255&a.charCodeAt(b/8))<16&&(e=k(e,8*a.length)),c=0;c<16;c+=1)f[c]=909522486^e[c],g[c]=1549556828^e[c];return d=k(f.concat(m(b)),512+8*b.length),l(k(g.concat(d),640))}function p(a){var b,c,d="0123456789abcdef",e="";for(c=0;c>>4&15)+d.charAt(15&b);return e}function q(a){return unescape(encodeURIComponent(a))}function r(a){return n(q(a))}function s(a){return p(r(a))}function t(a,b){return o(q(a),q(b))}function u(a,b){return p(t(a,b))}function v(a,b,c){return b?c?t(b,a):u(b,a):c?r(a):s(a)}b.exports=v},{}]},{},[7,1,2,3])(7)}); +//# sourceMappingURL=raven.min.js.map \ No newline at end of file diff --git a/packages/raven-js/dist/angular,require,vue/raven.min.js.map b/packages/raven-js/dist/angular,require,vue/raven.min.js.map new file mode 100644 index 000000000000..ed50be304fa6 --- /dev/null +++ b/packages/raven-js/dist/angular,require,vue/raven.min.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","angularPlugin","angular","RavenProvider","$get","$window","ExceptionHandlerProvider","$provide","decorator","exceptionHandler","R","$delegate","ex","cause","captureException","extra","moduleName","provider","config","setDataCallback","wrappedCallback","data","_normalizeData","angularPattern","exception","values","matches","exec","value","type","message","angularDocs","substr","addPlugin","7","8","2","requirePlugin","wrap","deep","3","formatComponentName","vm","$root","name","_isVue","$options","_componentTag","__file","vuePlugin","Vue","_oldOnError","errorHandler","error","info","metaData","Object","prototype","toString","componentName","propsData","lifecycleHook","4","RavenConfigError","constructor","5","utils","wrapMethod","console","level","callback","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","msg","safeJoin","logger","Function","apply","6","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","sanitizeKeys","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isErrorEvent","isDOMError","isDOMException","isError","isObject","isPlainObject","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","sanitize","wrapConsoleMethod","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","dsn","options","_logDebug","globalOptions","key","setDSN","push","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","context","func","undefined","_before","wrapped","_ignoreNextOnError","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","U","event","reason","unhandledPromiseRejection","C","_promiseRejectionHandler","bind","addEventListener","Q","removeEventListener","trimHeadFrames","captureMessage","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","V","currentOptions","exKeys","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","M","setTimeout","_","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","aa","evtName","_keypressTimeout","target","category","ca","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","da","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","D","_originalFunctionToString","E","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","F","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","S","builtin","T","G","installer","concat","H","str","m","allowSecretKey","K","port","B","W","stackInfo","_triggerEvent","_processException","lineno","Y","frame","_normalizeFrame","in_app","ha","stackInfoUrl","normalized","filename","line","colno","column","function","ga","prefixedMessage","transaction","ia","request","Referer","breadcrumbs","_trimBreadcrumbs","ja","urlProp","urlProps","ka","httpData","userAgent","User-Agent","referrer","z","_backoffDuration","_backoffStart","na","oa","current","last","pa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Z","baseData","project","platform","_getHttpData","serverName","server_name","_sanitizeData","forEach","random","_sendProcessedPayload","qa","sa","ra","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","ta","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","onerror","open","setRequestHeader","send","ua","hash","evaluated","A","$","setUser","setReleaseContext","10","11","9","RavenConstructor","_Raven","noConflict","Client","what","supportsErrorEvent","ErrorEvent","supportsDOMError","DOMError","supportsDOMException","DOMException","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","sanitizeMask","safeInput","o_O","getLocationHref","getLocationOrigin","origin","hostname","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","responseText","sourceMaps","sourceMapAddress","charAt","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","y","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","string","raw"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file diff --git a/packages/raven-js/dist/angular,require/raven.js b/packages/raven-js/dist/angular,require/raven.js new file mode 100644 index 000000000000..affda0e941c6 --- /dev/null +++ b/packages/raven-js/dist/angular,require/raven.js @@ -0,0 +1,4104 @@ +/*! Raven.js 3.25.2 (30b6d4e) | github.com/getsentry/raven-js */ + +/* + * Includes TraceKit + * https://github.com/getsentry/TraceKit + * + * Copyright 2018 Matt Robenolt and other contributors + * Released under the BSD license + * https://github.com/getsentry/raven-js/blob/master/LICENSE + * + */ + +(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.Raven = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o captureException(string) => captureMessage(string) + if (initialCall && initialCall.func === 'Raven.captureException') { + initialCall = stack.stack[2]; + } + + var fileurl = (initialCall && initialCall.url) || ''; + + if ( + !!this._globalOptions.ignoreUrls.test && + this._globalOptions.ignoreUrls.test(fileurl) + ) { + return; + } + + if ( + !!this._globalOptions.whitelistUrls.test && + !this._globalOptions.whitelistUrls.test(fileurl) + ) { + return; + } + + if (this._globalOptions.stacktrace || (options && options.stacktrace)) { + // fingerprint on msg, not stack trace (legacy behavior, could be revisited) + data.fingerprint = data.fingerprint == null ? msg : data.fingerprint; + + options = objectMerge( + { + trimHeadFrames: 0 + }, + options + ); + // Since we know this is a synthetic trace, the top frame (this function call) + // MUST be from Raven.js, so mark it for trimming + // We add to the trim counter so that callers can choose to trim extra frames, such + // as utility functions. + options.trimHeadFrames += 1; + + var frames = this._prepareFrames(stack, options); + data.stacktrace = { + // Sentry expects frames oldest to newest + frames: frames.reverse() + }; + } + + // Make sure that fingerprint is always wrapped in an array + if (data.fingerprint) { + data.fingerprint = isArray(data.fingerprint) + ? data.fingerprint + : [data.fingerprint]; + } + + // Fire away! + this._send(data); + + return this; + }, + + captureBreadcrumb: function(obj) { + var crumb = objectMerge( + { + timestamp: now() / 1000 + }, + obj + ); + + if (isFunction(this._globalOptions.breadcrumbCallback)) { + var result = this._globalOptions.breadcrumbCallback(crumb); + + if (isObject(result) && !isEmptyObject(result)) { + crumb = result; + } else if (result === false) { + return this; + } + } + + this._breadcrumbs.push(crumb); + if (this._breadcrumbs.length > this._globalOptions.maxBreadcrumbs) { + this._breadcrumbs.shift(); + } + return this; + }, + + addPlugin: function(plugin /*arg1, arg2, ... argN*/) { + var pluginArgs = [].slice.call(arguments, 1); + + this._plugins.push([plugin, pluginArgs]); + if (this._isRavenInstalled) { + this._drainPlugins(); + } + + return this; + }, + + /* + * Set/clear a user to be sent along with the payload. + * + * @param {object} user An object representing user data [optional] + * @return {Raven} + */ + setUserContext: function(user) { + // Intentionally do not merge here since that's an unexpected behavior. + this._globalContext.user = user; + + return this; + }, + + /* + * Merge extra attributes to be sent along with the payload. + * + * @param {object} extra An object representing extra data [optional] + * @return {Raven} + */ + setExtraContext: function(extra) { + this._mergeContext('extra', extra); + + return this; + }, + + /* + * Merge tags to be sent along with the payload. + * + * @param {object} tags An object representing tags [optional] + * @return {Raven} + */ + setTagsContext: function(tags) { + this._mergeContext('tags', tags); + + return this; + }, + + /* + * Clear all of the context. + * + * @return {Raven} + */ + clearContext: function() { + this._globalContext = {}; + + return this; + }, + + /* + * Get a copy of the current context. This cannot be mutated. + * + * @return {object} copy of context + */ + getContext: function() { + // lol javascript + return JSON.parse(stringify(this._globalContext)); + }, + + /* + * Set environment of application + * + * @param {string} environment Typically something like 'production'. + * @return {Raven} + */ + setEnvironment: function(environment) { + this._globalOptions.environment = environment; + + return this; + }, + + /* + * Set release version of application + * + * @param {string} release Typically something like a git SHA to identify version + * @return {Raven} + */ + setRelease: function(release) { + this._globalOptions.release = release; + + return this; + }, + + /* + * Set the dataCallback option + * + * @param {function} callback The callback to run which allows the + * data blob to be mutated before sending + * @return {Raven} + */ + setDataCallback: function(callback) { + var original = this._globalOptions.dataCallback; + this._globalOptions.dataCallback = keepOriginalCallback(original, callback); + return this; + }, + + /* + * Set the breadcrumbCallback option + * + * @param {function} callback The callback to run which allows filtering + * or mutating breadcrumbs + * @return {Raven} + */ + setBreadcrumbCallback: function(callback) { + var original = this._globalOptions.breadcrumbCallback; + this._globalOptions.breadcrumbCallback = keepOriginalCallback(original, callback); + return this; + }, + + /* + * Set the shouldSendCallback option + * + * @param {function} callback The callback to run which allows + * introspecting the blob before sending + * @return {Raven} + */ + setShouldSendCallback: function(callback) { + var original = this._globalOptions.shouldSendCallback; + this._globalOptions.shouldSendCallback = keepOriginalCallback(original, callback); + return this; + }, + + /** + * Override the default HTTP transport mechanism that transmits data + * to the Sentry server. + * + * @param {function} transport Function invoked instead of the default + * `makeRequest` handler. + * + * @return {Raven} + */ + setTransport: function(transport) { + this._globalOptions.transport = transport; + + return this; + }, + + /* + * Get the latest raw exception that was captured by Raven. + * + * @return {error} + */ + lastException: function() { + return this._lastCapturedException; + }, + + /* + * Get the last event id + * + * @return {string} + */ + lastEventId: function() { + return this._lastEventId; + }, + + /* + * Determine if Raven is setup and ready to go. + * + * @return {boolean} + */ + isSetup: function() { + if (!this._hasJSON) return false; // needs JSON support + if (!this._globalServer) { + if (!this.ravenNotConfiguredError) { + this.ravenNotConfiguredError = true; + this._logDebug('error', 'Error: Raven has not been configured.'); + } + return false; + } + return true; + }, + + afterLoad: function() { + // TODO: remove window dependence? + + // Attempt to initialize Raven on load + var RavenConfig = _window.RavenConfig; + if (RavenConfig) { + this.config(RavenConfig.dsn, RavenConfig.config).install(); + } + }, + + showReportDialog: function(options) { + if ( + !_document // doesn't work without a document (React native) + ) + return; + + options = options || {}; + + var lastEventId = options.eventId || this.lastEventId(); + if (!lastEventId) { + throw new RavenConfigError('Missing eventId'); + } + + var dsn = options.dsn || this._dsn; + if (!dsn) { + throw new RavenConfigError('Missing DSN'); + } + + var encode = encodeURIComponent; + var qs = ''; + qs += '?eventId=' + encode(lastEventId); + qs += '&dsn=' + encode(dsn); + + var user = options.user || this._globalContext.user; + if (user) { + if (user.name) qs += '&name=' + encode(user.name); + if (user.email) qs += '&email=' + encode(user.email); + } + + var globalServer = this._getGlobalServer(this._parseDSN(dsn)); + + var script = _document.createElement('script'); + script.async = true; + script.src = globalServer + '/api/embed/error-page/' + qs; + (_document.head || _document.body).appendChild(script); + }, + + /**** Private functions ****/ + _ignoreNextOnError: function() { + var self = this; + this._ignoreOnError += 1; + setTimeout(function() { + // onerror should trigger before setTimeout + self._ignoreOnError -= 1; + }); + }, + + _triggerEvent: function(eventType, options) { + // NOTE: `event` is a native browser thing, so let's avoid conflicting wiht it + var evt, key; + + if (!this._hasDocument) return; + + options = options || {}; + + eventType = 'raven' + eventType.substr(0, 1).toUpperCase() + eventType.substr(1); + + if (_document.createEvent) { + evt = _document.createEvent('HTMLEvents'); + evt.initEvent(eventType, true, true); + } else { + evt = _document.createEventObject(); + evt.eventType = eventType; + } + + for (key in options) + if (hasKey(options, key)) { + evt[key] = options[key]; + } + + if (_document.createEvent) { + // IE9 if standards + _document.dispatchEvent(evt); + } else { + // IE8 regardless of Quirks or Standards + // IE9 if quirks + try { + _document.fireEvent('on' + evt.eventType.toLowerCase(), evt); + } catch (e) { + // Do nothing + } + } + }, + + /** + * Wraps addEventListener to capture UI breadcrumbs + * @param evtName the event name (e.g. "click") + * @returns {Function} + * @private + */ + _breadcrumbEventHandler: function(evtName) { + var self = this; + return function(evt) { + // reset keypress timeout; e.g. triggering a 'click' after + // a 'keypress' will reset the keypress debounce so that a new + // set of keypresses can be recorded + self._keypressTimeout = null; + + // It's possible this handler might trigger multiple times for the same + // event (e.g. event propagation through node ancestors). Ignore if we've + // already captured the event. + if (self._lastCapturedEvent === evt) return; + + self._lastCapturedEvent = evt; + + // try/catch both: + // - accessing evt.target (see getsentry/raven-js#838, #768) + // - `htmlTreeAsString` because it's complex, and just accessing the DOM incorrectly + // can throw an exception in some circumstances. + var target; + try { + target = htmlTreeAsString(evt.target); + } catch (e) { + target = ''; + } + + self.captureBreadcrumb({ + category: 'ui.' + evtName, // e.g. ui.click, ui.input + message: target + }); + }; + }, + + /** + * Wraps addEventListener to capture keypress UI events + * @returns {Function} + * @private + */ + _keypressEventHandler: function() { + var self = this, + debounceDuration = 1000; // milliseconds + + // TODO: if somehow user switches keypress target before + // debounce timeout is triggered, we will only capture + // a single breadcrumb from the FIRST target (acceptable?) + return function(evt) { + var target; + try { + target = evt.target; + } catch (e) { + // just accessing event properties can throw an exception in some rare circumstances + // see: https://github.com/getsentry/raven-js/issues/838 + return; + } + var tagName = target && target.tagName; + + // only consider keypress events on actual input elements + // this will disregard keypresses targeting body (e.g. tabbing + // through elements, hotkeys, etc) + if ( + !tagName || + (tagName !== 'INPUT' && tagName !== 'TEXTAREA' && !target.isContentEditable) + ) + return; + + // record first keypress in a series, but ignore subsequent + // keypresses until debounce clears + var timeout = self._keypressTimeout; + if (!timeout) { + self._breadcrumbEventHandler('input')(evt); + } + clearTimeout(timeout); + self._keypressTimeout = setTimeout(function() { + self._keypressTimeout = null; + }, debounceDuration); + }; + }, + + /** + * Captures a breadcrumb of type "navigation", normalizing input URLs + * @param to the originating URL + * @param from the target URL + * @private + */ + _captureUrlChange: function(from, to) { + var parsedLoc = parseUrl(this._location.href); + var parsedTo = parseUrl(to); + var parsedFrom = parseUrl(from); + + // because onpopstate only tells you the "new" (to) value of location.href, and + // not the previous (from) value, we need to track the value of the current URL + // state ourselves + this._lastHref = to; + + // Use only the path component of the URL if the URL matches the current + // document (almost all the time when using pushState) + if (parsedLoc.protocol === parsedTo.protocol && parsedLoc.host === parsedTo.host) + to = parsedTo.relative; + if (parsedLoc.protocol === parsedFrom.protocol && parsedLoc.host === parsedFrom.host) + from = parsedFrom.relative; + + this.captureBreadcrumb({ + category: 'navigation', + data: { + to: to, + from: from + } + }); + }, + + _patchFunctionToString: function() { + var self = this; + self._originalFunctionToString = Function.prototype.toString; + // eslint-disable-next-line no-extend-native + Function.prototype.toString = function() { + if (typeof this === 'function' && this.__raven__) { + return self._originalFunctionToString.apply(this.__orig__, arguments); + } + return self._originalFunctionToString.apply(this, arguments); + }; + }, + + _unpatchFunctionToString: function() { + if (this._originalFunctionToString) { + // eslint-disable-next-line no-extend-native + Function.prototype.toString = this._originalFunctionToString; + } + }, + + /** + * Wrap timer functions and event targets to catch errors and provide + * better metadata. + */ + _instrumentTryCatch: function() { + var self = this; + + var wrappedBuiltIns = self._wrappedBuiltIns; + + function wrapTimeFn(orig) { + return function(fn, t) { + // preserve arity + // Make a copy of the arguments to prevent deoptimization + // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments + var args = new Array(arguments.length); + for (var i = 0; i < args.length; ++i) { + args[i] = arguments[i]; + } + var originalCallback = args[0]; + if (isFunction(originalCallback)) { + args[0] = self.wrap(originalCallback); + } + + // IE < 9 doesn't support .call/.apply on setInterval/setTimeout, but it + // also supports only two arguments and doesn't care what this is, so we + // can just call the original function directly. + if (orig.apply) { + return orig.apply(this, args); + } else { + return orig(args[0], args[1]); + } + }; + } + + var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; + + function wrapEventTarget(global) { + var proto = _window[global] && _window[global].prototype; + if (proto && proto.hasOwnProperty && proto.hasOwnProperty('addEventListener')) { + fill( + proto, + 'addEventListener', + function(orig) { + return function(evtName, fn, capture, secure) { + // preserve arity + try { + if (fn && fn.handleEvent) { + fn.handleEvent = self.wrap(fn.handleEvent); + } + } catch (err) { + // can sometimes get 'Permission denied to access property "handle Event' + } + + // More breadcrumb DOM capture ... done here and not in `_instrumentBreadcrumbs` + // so that we don't have more than one wrapper function + var before, clickHandler, keypressHandler; + + if ( + autoBreadcrumbs && + autoBreadcrumbs.dom && + (global === 'EventTarget' || global === 'Node') + ) { + // NOTE: generating multiple handlers per addEventListener invocation, should + // revisit and verify we can just use one (almost certainly) + clickHandler = self._breadcrumbEventHandler('click'); + keypressHandler = self._keypressEventHandler(); + before = function(evt) { + // need to intercept every DOM event in `before` argument, in case that + // same wrapped method is re-used for different events (e.g. mousemove THEN click) + // see #724 + if (!evt) return; + + var eventType; + try { + eventType = evt.type; + } catch (e) { + // just accessing event properties can throw an exception in some rare circumstances + // see: https://github.com/getsentry/raven-js/issues/838 + return; + } + if (eventType === 'click') return clickHandler(evt); + else if (eventType === 'keypress') return keypressHandler(evt); + }; + } + return orig.call( + this, + evtName, + self.wrap(fn, undefined, before), + capture, + secure + ); + }; + }, + wrappedBuiltIns + ); + fill( + proto, + 'removeEventListener', + function(orig) { + return function(evt, fn, capture, secure) { + try { + fn = fn && (fn.__raven_wrapper__ ? fn.__raven_wrapper__ : fn); + } catch (e) { + // ignore, accessing __raven_wrapper__ will throw in some Selenium environments + } + return orig.call(this, evt, fn, capture, secure); + }; + }, + wrappedBuiltIns + ); + } + } + + fill(_window, 'setTimeout', wrapTimeFn, wrappedBuiltIns); + fill(_window, 'setInterval', wrapTimeFn, wrappedBuiltIns); + if (_window.requestAnimationFrame) { + fill( + _window, + 'requestAnimationFrame', + function(orig) { + return function(cb) { + return orig(self.wrap(cb)); + }; + }, + wrappedBuiltIns + ); + } + + // event targets borrowed from bugsnag-js: + // https://github.com/bugsnag/bugsnag-js/blob/master/src/bugsnag.js#L666 + var eventTargets = [ + 'EventTarget', + 'Window', + 'Node', + 'ApplicationCache', + 'AudioTrackList', + 'ChannelMergerNode', + 'CryptoOperation', + 'EventSource', + 'FileReader', + 'HTMLUnknownElement', + 'IDBDatabase', + 'IDBRequest', + 'IDBTransaction', + 'KeyOperation', + 'MediaController', + 'MessagePort', + 'ModalWindow', + 'Notification', + 'SVGElementInstance', + 'Screen', + 'TextTrack', + 'TextTrackCue', + 'TextTrackList', + 'WebSocket', + 'WebSocketWorker', + 'Worker', + 'XMLHttpRequest', + 'XMLHttpRequestEventTarget', + 'XMLHttpRequestUpload' + ]; + for (var i = 0; i < eventTargets.length; i++) { + wrapEventTarget(eventTargets[i]); + } + }, + + /** + * Instrument browser built-ins w/ breadcrumb capturing + * - XMLHttpRequests + * - DOM interactions (click/typing) + * - window.location changes + * - console + * + * Can be disabled or individually configured via the `autoBreadcrumbs` config option + */ + _instrumentBreadcrumbs: function() { + var self = this; + var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; + + var wrappedBuiltIns = self._wrappedBuiltIns; + + function wrapProp(prop, xhr) { + if (prop in xhr && isFunction(xhr[prop])) { + fill(xhr, prop, function(orig) { + return self.wrap(orig); + }); // intentionally don't track filled methods on XHR instances + } + } + + if (autoBreadcrumbs.xhr && 'XMLHttpRequest' in _window) { + var xhrproto = _window.XMLHttpRequest && _window.XMLHttpRequest.prototype; + fill( + xhrproto, + 'open', + function(origOpen) { + return function(method, url) { + // preserve arity + + // if Sentry key appears in URL, don't capture + if (isString(url) && url.indexOf(self._globalKey) === -1) { + this.__raven_xhr = { + method: method, + url: url, + status_code: null + }; + } + + return origOpen.apply(this, arguments); + }; + }, + wrappedBuiltIns + ); + + fill( + xhrproto, + 'send', + function(origSend) { + return function() { + // preserve arity + var xhr = this; + + function onreadystatechangeHandler() { + if (xhr.__raven_xhr && xhr.readyState === 4) { + try { + // touching statusCode in some platforms throws + // an exception + xhr.__raven_xhr.status_code = xhr.status; + } catch (e) { + /* do nothing */ + } + + self.captureBreadcrumb({ + type: 'http', + category: 'xhr', + data: xhr.__raven_xhr + }); + } + } + + var props = ['onload', 'onerror', 'onprogress']; + for (var j = 0; j < props.length; j++) { + wrapProp(props[j], xhr); + } + + if ('onreadystatechange' in xhr && isFunction(xhr.onreadystatechange)) { + fill( + xhr, + 'onreadystatechange', + function(orig) { + return self.wrap(orig, undefined, onreadystatechangeHandler); + } /* intentionally don't track this instrumentation */ + ); + } else { + // if onreadystatechange wasn't actually set by the page on this xhr, we + // are free to set our own and capture the breadcrumb + xhr.onreadystatechange = onreadystatechangeHandler; + } + + return origSend.apply(this, arguments); + }; + }, + wrappedBuiltIns + ); + } + + if (autoBreadcrumbs.xhr && supportsFetch()) { + fill( + _window, + 'fetch', + function(origFetch) { + return function() { + // preserve arity + // Make a copy of the arguments to prevent deoptimization + // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments + var args = new Array(arguments.length); + for (var i = 0; i < args.length; ++i) { + args[i] = arguments[i]; + } + + var fetchInput = args[0]; + var method = 'GET'; + var url; + + if (typeof fetchInput === 'string') { + url = fetchInput; + } else if ('Request' in _window && fetchInput instanceof _window.Request) { + url = fetchInput.url; + if (fetchInput.method) { + method = fetchInput.method; + } + } else { + url = '' + fetchInput; + } + + // if Sentry key appears in URL, don't capture, as it's our own request + if (url.indexOf(self._globalKey) !== -1) { + return origFetch.apply(this, args); + } + + if (args[1] && args[1].method) { + method = args[1].method; + } + + var fetchData = { + method: method, + url: url, + status_code: null + }; + + return origFetch + .apply(this, args) + .then(function(response) { + fetchData.status_code = response.status; + + self.captureBreadcrumb({ + type: 'http', + category: 'fetch', + data: fetchData + }); + + return response; + }) + ['catch'](function(err) { + // if there is an error performing the request + self.captureBreadcrumb({ + type: 'http', + category: 'fetch', + data: fetchData, + level: 'error' + }); + + throw err; + }); + }; + }, + wrappedBuiltIns + ); + } + + // Capture breadcrumbs from any click that is unhandled / bubbled up all the way + // to the document. Do this before we instrument addEventListener. + if (autoBreadcrumbs.dom && this._hasDocument) { + if (_document.addEventListener) { + _document.addEventListener('click', self._breadcrumbEventHandler('click'), false); + _document.addEventListener('keypress', self._keypressEventHandler(), false); + } else if (_document.attachEvent) { + // IE8 Compatibility + _document.attachEvent('onclick', self._breadcrumbEventHandler('click')); + _document.attachEvent('onkeypress', self._keypressEventHandler()); + } + } + + // record navigation (URL) changes + // NOTE: in Chrome App environment, touching history.pushState, *even inside + // a try/catch block*, will cause Chrome to output an error to console.error + // borrowed from: https://github.com/angular/angular.js/pull/13945/files + var chrome = _window.chrome; + var isChromePackagedApp = chrome && chrome.app && chrome.app.runtime; + var hasPushAndReplaceState = + !isChromePackagedApp && + _window.history && + _window.history.pushState && + _window.history.replaceState; + if (autoBreadcrumbs.location && hasPushAndReplaceState) { + // TODO: remove onpopstate handler on uninstall() + var oldOnPopState = _window.onpopstate; + _window.onpopstate = function() { + var currentHref = self._location.href; + self._captureUrlChange(self._lastHref, currentHref); + + if (oldOnPopState) { + return oldOnPopState.apply(this, arguments); + } + }; + + var historyReplacementFunction = function(origHistFunction) { + // note history.pushState.length is 0; intentionally not declaring + // params to preserve 0 arity + return function(/* state, title, url */) { + var url = arguments.length > 2 ? arguments[2] : undefined; + + // url argument is optional + if (url) { + // coerce to string (this is what pushState does) + self._captureUrlChange(self._lastHref, url + ''); + } + + return origHistFunction.apply(this, arguments); + }; + }; + + fill(_window.history, 'pushState', historyReplacementFunction, wrappedBuiltIns); + fill(_window.history, 'replaceState', historyReplacementFunction, wrappedBuiltIns); + } + + if (autoBreadcrumbs.console && 'console' in _window && console.log) { + // console + var consoleMethodCallback = function(msg, data) { + self.captureBreadcrumb({ + message: msg, + level: data.level, + category: 'console' + }); + }; + + each(['debug', 'info', 'warn', 'error', 'log'], function(_, level) { + wrapConsoleMethod(console, level, consoleMethodCallback); + }); + } + }, + + _restoreBuiltIns: function() { + // restore any wrapped builtins + var builtin; + while (this._wrappedBuiltIns.length) { + builtin = this._wrappedBuiltIns.shift(); + + var obj = builtin[0], + name = builtin[1], + orig = builtin[2]; + + obj[name] = orig; + } + }, + + _restoreConsole: function() { + // eslint-disable-next-line guard-for-in + for (var method in this._originalConsoleMethods) { + this._originalConsole[method] = this._originalConsoleMethods[method]; + } + }, + + _drainPlugins: function() { + var self = this; + + // FIX ME TODO + each(this._plugins, function(_, plugin) { + var installer = plugin[0]; + var args = plugin[1]; + installer.apply(self, [self].concat(args)); + }); + }, + + _parseDSN: function(str) { + var m = dsnPattern.exec(str), + dsn = {}, + i = 7; + + try { + while (i--) dsn[dsnKeys[i]] = m[i] || ''; + } catch (e) { + throw new RavenConfigError('Invalid DSN: ' + str); + } + + if (dsn.pass && !this._globalOptions.allowSecretKey) { + throw new RavenConfigError( + 'Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key' + ); + } + + return dsn; + }, + + _getGlobalServer: function(uri) { + // assemble the endpoint from the uri pieces + var globalServer = '//' + uri.host + (uri.port ? ':' + uri.port : ''); + + if (uri.protocol) { + globalServer = uri.protocol + ':' + globalServer; + } + return globalServer; + }, + + _handleOnErrorStackInfo: function() { + // if we are intentionally ignoring errors via onerror, bail out + if (!this._ignoreOnError) { + this._handleStackInfo.apply(this, arguments); + } + }, + + _handleStackInfo: function(stackInfo, options) { + var frames = this._prepareFrames(stackInfo, options); + + this._triggerEvent('handle', { + stackInfo: stackInfo, + options: options + }); + + this._processException( + stackInfo.name, + stackInfo.message, + stackInfo.url, + stackInfo.lineno, + frames, + options + ); + }, + + _prepareFrames: function(stackInfo, options) { + var self = this; + var frames = []; + if (stackInfo.stack && stackInfo.stack.length) { + each(stackInfo.stack, function(i, stack) { + var frame = self._normalizeFrame(stack, stackInfo.url); + if (frame) { + frames.push(frame); + } + }); + + // e.g. frames captured via captureMessage throw + if (options && options.trimHeadFrames) { + for (var j = 0; j < options.trimHeadFrames && j < frames.length; j++) { + frames[j].in_app = false; + } + } + } + frames = frames.slice(0, this._globalOptions.stackTraceLimit); + return frames; + }, + + _normalizeFrame: function(frame, stackInfoUrl) { + // normalize the frames data + var normalized = { + filename: frame.url, + lineno: frame.line, + colno: frame.column, + function: frame.func || '?' + }; + + // Case when we don't have any information about the error + // E.g. throwing a string or raw object, instead of an `Error` in Firefox + // Generating synthetic error doesn't add any value here + // + // We should probably somehow let a user know that they should fix their code + if (!frame.url) { + normalized.filename = stackInfoUrl; // fallback to whole stacks url from onerror handler + } + + normalized.in_app = !// determine if an exception came from outside of our app + // first we check the global includePaths list. + ( + (!!this._globalOptions.includePaths.test && + !this._globalOptions.includePaths.test(normalized.filename)) || + // Now we check for fun, if the function name is Raven or TraceKit + /(Raven|TraceKit)\./.test(normalized['function']) || + // finally, we do a last ditch effort and check for raven.min.js + /raven\.(min\.)?js$/.test(normalized.filename) + ); + + return normalized; + }, + + _processException: function(type, message, fileurl, lineno, frames, options) { + var prefixedMessage = (type ? type + ': ' : '') + (message || ''); + if ( + !!this._globalOptions.ignoreErrors.test && + (this._globalOptions.ignoreErrors.test(message) || + this._globalOptions.ignoreErrors.test(prefixedMessage)) + ) { + return; + } + + var stacktrace; + + if (frames && frames.length) { + fileurl = frames[0].filename || fileurl; + // Sentry expects frames oldest to newest + // and JS sends them as newest to oldest + frames.reverse(); + stacktrace = {frames: frames}; + } else if (fileurl) { + stacktrace = { + frames: [ + { + filename: fileurl, + lineno: lineno, + in_app: true + } + ] + }; + } + + if ( + !!this._globalOptions.ignoreUrls.test && + this._globalOptions.ignoreUrls.test(fileurl) + ) { + return; + } + + if ( + !!this._globalOptions.whitelistUrls.test && + !this._globalOptions.whitelistUrls.test(fileurl) + ) { + return; + } + + var data = objectMerge( + { + // sentry.interfaces.Exception + exception: { + values: [ + { + type: type, + value: message, + stacktrace: stacktrace + } + ] + }, + transaction: fileurl + }, + options + ); + + // Fire away! + this._send(data); + }, + + _trimPacket: function(data) { + // For now, we only want to truncate the two different messages + // but this could/should be expanded to just trim everything + var max = this._globalOptions.maxMessageLength; + if (data.message) { + data.message = truncate(data.message, max); + } + if (data.exception) { + var exception = data.exception.values[0]; + exception.value = truncate(exception.value, max); + } + + var request = data.request; + if (request) { + if (request.url) { + request.url = truncate(request.url, this._globalOptions.maxUrlLength); + } + if (request.Referer) { + request.Referer = truncate(request.Referer, this._globalOptions.maxUrlLength); + } + } + + if (data.breadcrumbs && data.breadcrumbs.values) + this._trimBreadcrumbs(data.breadcrumbs); + + return data; + }, + + /** + * Truncate breadcrumb values (right now just URLs) + */ + _trimBreadcrumbs: function(breadcrumbs) { + // known breadcrumb properties with urls + // TODO: also consider arbitrary prop values that start with (https?)?:// + var urlProps = ['to', 'from', 'url'], + urlProp, + crumb, + data; + + for (var i = 0; i < breadcrumbs.values.length; ++i) { + crumb = breadcrumbs.values[i]; + if ( + !crumb.hasOwnProperty('data') || + !isObject(crumb.data) || + objectFrozen(crumb.data) + ) + continue; + + data = objectMerge({}, crumb.data); + for (var j = 0; j < urlProps.length; ++j) { + urlProp = urlProps[j]; + if (data.hasOwnProperty(urlProp) && data[urlProp]) { + data[urlProp] = truncate(data[urlProp], this._globalOptions.maxUrlLength); + } + } + breadcrumbs.values[i].data = data; + } + }, + + _getHttpData: function() { + if (!this._hasNavigator && !this._hasDocument) return; + var httpData = {}; + + if (this._hasNavigator && _navigator.userAgent) { + httpData.headers = { + 'User-Agent': _navigator.userAgent + }; + } + + // Check in `window` instead of `document`, as we may be in ServiceWorker environment + if (_window.location && _window.location.href) { + httpData.url = _window.location.href; + } + + if (this._hasDocument && _document.referrer) { + if (!httpData.headers) httpData.headers = {}; + httpData.headers.Referer = _document.referrer; + } + + return httpData; + }, + + _resetBackoff: function() { + this._backoffDuration = 0; + this._backoffStart = null; + }, + + _shouldBackoff: function() { + return this._backoffDuration && now() - this._backoffStart < this._backoffDuration; + }, + + /** + * Returns true if the in-process data payload matches the signature + * of the previously-sent data + * + * NOTE: This has to be done at this level because TraceKit can generate + * data from window.onerror WITHOUT an exception object (IE8, IE9, + * other old browsers). This can take the form of an "exception" + * data object with a single frame (derived from the onerror args). + */ + _isRepeatData: function(current) { + var last = this._lastData; + + if ( + !last || + current.message !== last.message || // defined for captureMessage + current.transaction !== last.transaction // defined for captureException/onerror + ) + return false; + + // Stacktrace interface (i.e. from captureMessage) + if (current.stacktrace || last.stacktrace) { + return isSameStacktrace(current.stacktrace, last.stacktrace); + } else if (current.exception || last.exception) { + // Exception interface (i.e. from captureException/onerror) + return isSameException(current.exception, last.exception); + } + + return true; + }, + + _setBackoffState: function(request) { + // If we are already in a backoff state, don't change anything + if (this._shouldBackoff()) { + return; + } + + var status = request.status; + + // 400 - project_id doesn't exist or some other fatal + // 401 - invalid/revoked dsn + // 429 - too many requests + if (!(status === 400 || status === 401 || status === 429)) return; + + var retry; + try { + // If Retry-After is not in Access-Control-Expose-Headers, most + // browsers will throw an exception trying to access it + if (supportsFetch()) { + retry = request.headers.get('Retry-After'); + } else { + retry = request.getResponseHeader('Retry-After'); + } + + // Retry-After is returned in seconds + retry = parseInt(retry, 10) * 1000; + } catch (e) { + /* eslint no-empty:0 */ + } + + this._backoffDuration = retry + ? // If Sentry server returned a Retry-After value, use it + retry + : // Otherwise, double the last backoff duration (starts at 1 sec) + this._backoffDuration * 2 || 1000; + + this._backoffStart = now(); + }, + + _send: function(data) { + var globalOptions = this._globalOptions; + + var baseData = { + project: this._globalProject, + logger: globalOptions.logger, + platform: 'javascript' + }, + httpData = this._getHttpData(); + + if (httpData) { + baseData.request = httpData; + } + + // HACK: delete `trimHeadFrames` to prevent from appearing in outbound payload + if (data.trimHeadFrames) delete data.trimHeadFrames; + + data = objectMerge(baseData, data); + + // Merge in the tags and extra separately since objectMerge doesn't handle a deep merge + data.tags = objectMerge(objectMerge({}, this._globalContext.tags), data.tags); + data.extra = objectMerge(objectMerge({}, this._globalContext.extra), data.extra); + + // Send along our own collected metadata with extra + data.extra['session:duration'] = now() - this._startTime; + + if (this._breadcrumbs && this._breadcrumbs.length > 0) { + // intentionally make shallow copy so that additions + // to breadcrumbs aren't accidentally sent in this request + data.breadcrumbs = { + values: [].slice.call(this._breadcrumbs, 0) + }; + } + + if (this._globalContext.user) { + // sentry.interfaces.User + data.user = this._globalContext.user; + } + + // Include the environment if it's defined in globalOptions + if (globalOptions.environment) data.environment = globalOptions.environment; + + // Include the release if it's defined in globalOptions + if (globalOptions.release) data.release = globalOptions.release; + + // Include server_name if it's defined in globalOptions + if (globalOptions.serverName) data.server_name = globalOptions.serverName; + + data = this._sanitizeData(data); + + // Cleanup empty properties before sending them to the server + Object.keys(data).forEach(function(key) { + if (data[key] == null || data[key] === '' || isEmptyObject(data[key])) { + delete data[key]; + } + }); + + if (isFunction(globalOptions.dataCallback)) { + data = globalOptions.dataCallback(data) || data; + } + + // Why?????????? + if (!data || isEmptyObject(data)) { + return; + } + + // Check if the request should be filtered or not + if ( + isFunction(globalOptions.shouldSendCallback) && + !globalOptions.shouldSendCallback(data) + ) { + return; + } + + // Backoff state: Sentry server previously responded w/ an error (e.g. 429 - too many requests), + // so drop requests until "cool-off" period has elapsed. + if (this._shouldBackoff()) { + this._logDebug('warn', 'Raven dropped error due to backoff: ', data); + return; + } + + if (typeof globalOptions.sampleRate === 'number') { + if (Math.random() < globalOptions.sampleRate) { + this._sendProcessedPayload(data); + } + } else { + this._sendProcessedPayload(data); + } + }, + + _sanitizeData: function(data) { + return sanitize(data, this._globalOptions.sanitizeKeys); + }, + + _getUuid: function() { + return uuid4(); + }, + + _sendProcessedPayload: function(data, callback) { + var self = this; + var globalOptions = this._globalOptions; + + if (!this.isSetup()) return; + + // Try and clean up the packet before sending by truncating long values + data = this._trimPacket(data); + + // ideally duplicate error testing should occur *before* dataCallback/shouldSendCallback, + // but this would require copying an un-truncated copy of the data packet, which can be + // arbitrarily deep (extra_data) -- could be worthwhile? will revisit + if (!this._globalOptions.allowDuplicates && this._isRepeatData(data)) { + this._logDebug('warn', 'Raven dropped repeat event: ', data); + return; + } + + // Send along an event_id if not explicitly passed. + // This event_id can be used to reference the error within Sentry itself. + // Set lastEventId after we know the error should actually be sent + this._lastEventId = data.event_id || (data.event_id = this._getUuid()); + + // Store outbound payload after trim + this._lastData = data; + + this._logDebug('debug', 'Raven about to send:', data); + + var auth = { + sentry_version: '7', + sentry_client: 'raven-js/' + this.VERSION, + sentry_key: this._globalKey + }; + + if (this._globalSecret) { + auth.sentry_secret = this._globalSecret; + } + + var exception = data.exception && data.exception.values[0]; + + // only capture 'sentry' breadcrumb is autoBreadcrumbs is truthy + if ( + this._globalOptions.autoBreadcrumbs && + this._globalOptions.autoBreadcrumbs.sentry + ) { + this.captureBreadcrumb({ + category: 'sentry', + message: exception + ? (exception.type ? exception.type + ': ' : '') + exception.value + : data.message, + event_id: data.event_id, + level: data.level || 'error' // presume error unless specified + }); + } + + var url = this._globalEndpoint; + (globalOptions.transport || this._makeRequest).call(this, { + url: url, + auth: auth, + data: data, + options: globalOptions, + onSuccess: function success() { + self._resetBackoff(); + + self._triggerEvent('success', { + data: data, + src: url + }); + callback && callback(); + }, + onError: function failure(error) { + self._logDebug('error', 'Raven transport failed to send: ', error); + + if (error.request) { + self._setBackoffState(error.request); + } + + self._triggerEvent('failure', { + data: data, + src: url + }); + error = error || new Error('Raven send failed (no additional details provided)'); + callback && callback(error); + } + }); + }, + + _makeRequest: function(opts) { + // Auth is intentionally sent as part of query string (NOT as custom HTTP header) to avoid preflight CORS requests + var url = opts.url + '?' + urlencode(opts.auth); + + var evaluatedHeaders = null; + var evaluatedFetchParameters = {}; + + if (opts.options.headers) { + evaluatedHeaders = this._evaluateHash(opts.options.headers); + } + + if (opts.options.fetchParameters) { + evaluatedFetchParameters = this._evaluateHash(opts.options.fetchParameters); + } + + if (supportsFetch()) { + evaluatedFetchParameters.body = stringify(opts.data); + + var defaultFetchOptions = objectMerge({}, this._fetchDefaults); + var fetchOptions = objectMerge(defaultFetchOptions, evaluatedFetchParameters); + + if (evaluatedHeaders) { + fetchOptions.headers = evaluatedHeaders; + } + + return _window + .fetch(url, fetchOptions) + .then(function(response) { + if (response.ok) { + opts.onSuccess && opts.onSuccess(); + } else { + var error = new Error('Sentry error code: ' + response.status); + // It's called request only to keep compatibility with XHR interface + // and not add more redundant checks in setBackoffState method + error.request = response; + opts.onError && opts.onError(error); + } + }) + ['catch'](function() { + opts.onError && + opts.onError(new Error('Sentry error code: network unavailable')); + }); + } + + var request = _window.XMLHttpRequest && new _window.XMLHttpRequest(); + if (!request) return; + + // if browser doesn't support CORS (e.g. IE7), we are out of luck + var hasCORS = 'withCredentials' in request || typeof XDomainRequest !== 'undefined'; + + if (!hasCORS) return; + + if ('withCredentials' in request) { + request.onreadystatechange = function() { + if (request.readyState !== 4) { + return; + } else if (request.status === 200) { + opts.onSuccess && opts.onSuccess(); + } else if (opts.onError) { + var err = new Error('Sentry error code: ' + request.status); + err.request = request; + opts.onError(err); + } + }; + } else { + request = new XDomainRequest(); + // xdomainrequest cannot go http -> https (or vice versa), + // so always use protocol relative + url = url.replace(/^https?:/, ''); + + // onreadystatechange not supported by XDomainRequest + if (opts.onSuccess) { + request.onload = opts.onSuccess; + } + if (opts.onError) { + request.onerror = function() { + var err = new Error('Sentry error code: XDomainRequest'); + err.request = request; + opts.onError(err); + }; + } + } + + request.open('POST', url); + + if (evaluatedHeaders) { + each(evaluatedHeaders, function(key, value) { + request.setRequestHeader(key, value); + }); + } + + request.send(stringify(opts.data)); + }, + + _evaluateHash: function(hash) { + var evaluated = {}; + + for (var key in hash) { + if (hash.hasOwnProperty(key)) { + var value = hash[key]; + evaluated[key] = typeof value === 'function' ? value() : value; + } + } + + return evaluated; + }, + + _logDebug: function(level) { + // We allow `Raven.debug` and `Raven.config(DSN, { debug: true })` to not make backward incompatible API change + if ( + this._originalConsoleMethods[level] && + (this.debug || this._globalOptions.debug) + ) { + // In IE<10 console methods do not have their own 'apply' method + Function.prototype.apply.call( + this._originalConsoleMethods[level], + this._originalConsole, + [].slice.call(arguments, 1) + ); + } + }, + + _mergeContext: function(key, context) { + if (isUndefined(context)) { + delete this._globalContext[key]; + } else { + this._globalContext[key] = objectMerge(this._globalContext[key] || {}, context); + } + } +}; + +// Deprecations +Raven.prototype.setUser = Raven.prototype.setUserContext; +Raven.prototype.setReleaseContext = Raven.prototype.setRelease; + +module.exports = Raven; + +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"10":10,"3":3,"4":4,"7":7,"8":8,"9":9}],6:[function(_dereq_,module,exports){ +(function (global){ +/** + * Enforces a single instance of the Raven client, and the + * main entry point for Raven. If you are a consumer of the + * Raven library, you SHOULD load this file (vs raven.js). + **/ + +var RavenConstructor = _dereq_(5); + +// This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) +var _window = + typeof window !== 'undefined' + ? window + : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; +var _Raven = _window.Raven; + +var Raven = new RavenConstructor(); + +/* + * Allow multiple versions of Raven to be installed. + * Strip Raven from the global context and returns the instance. + * + * @return {Raven} + */ +Raven.noConflict = function() { + _window.Raven = _Raven; + return Raven; +}; + +Raven.afterLoad(); + +module.exports = Raven; + +/** + * DISCLAIMER: + * + * Expose `Client` constructor for cases where user want to track multiple "sub-applications" in one larger app. + * It's not meant to be used by a wide audience, so pleaaase make sure that you know what you're doing before using it. + * Accidentally calling `install` multiple times, may result in an unexpected behavior that's very hard to debug. + * + * It's called `Client' to be in-line with Raven Node implementation. + * + * HOWTO: + * + * import Raven from 'raven-js'; + * + * const someAppReporter = new Raven.Client(); + * const someOtherAppReporter = new Raven.Client(); + * + * someAppReporter.config('__DSN__', { + * ...config goes here + * }); + * + * someOtherAppReporter.config('__OTHER_DSN__', { + * ...config goes here + * }); + * + * someAppReporter.captureMessage(...); + * someAppReporter.captureException(...); + * someAppReporter.captureBreadcrumb(...); + * + * someOtherAppReporter.captureMessage(...); + * someOtherAppReporter.captureException(...); + * someOtherAppReporter.captureBreadcrumb(...); + * + * It should "just work". + */ +module.exports.Client = RavenConstructor; + +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"5":5}],7:[function(_dereq_,module,exports){ +(function (global){ +var stringify = _dereq_(9); + +var _window = + typeof window !== 'undefined' + ? window + : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; + +function isObject(what) { + return typeof what === 'object' && what !== null; +} + +// Yanked from https://git.io/vS8DV re-used under CC0 +// with some tiny modifications +function isError(value) { + switch (Object.prototype.toString.call(value)) { + case '[object Error]': + return true; + case '[object Exception]': + return true; + case '[object DOMException]': + return true; + default: + return value instanceof Error; + } +} + +function isErrorEvent(value) { + return Object.prototype.toString.call(value) === '[object ErrorEvent]'; +} + +function isDOMError(value) { + return Object.prototype.toString.call(value) === '[object DOMError]'; +} + +function isDOMException(value) { + return Object.prototype.toString.call(value) === '[object DOMException]'; +} + +function isUndefined(what) { + return what === void 0; +} + +function isFunction(what) { + return typeof what === 'function'; +} + +function isPlainObject(what) { + return Object.prototype.toString.call(what) === '[object Object]'; +} + +function isString(what) { + return Object.prototype.toString.call(what) === '[object String]'; +} + +function isArray(what) { + return Object.prototype.toString.call(what) === '[object Array]'; +} + +function isEmptyObject(what) { + if (!isPlainObject(what)) return false; + + for (var _ in what) { + if (what.hasOwnProperty(_)) { + return false; + } + } + return true; +} + +function supportsErrorEvent() { + try { + new ErrorEvent(''); // eslint-disable-line no-new + return true; + } catch (e) { + return false; + } +} + +function supportsDOMError() { + try { + new DOMError(''); // eslint-disable-line no-new + return true; + } catch (e) { + return false; + } +} + +function supportsDOMException() { + try { + new DOMException(''); // eslint-disable-line no-new + return true; + } catch (e) { + return false; + } +} + +function supportsFetch() { + if (!('fetch' in _window)) return false; + + try { + new Headers(); // eslint-disable-line no-new + new Request(''); // eslint-disable-line no-new + new Response(); // eslint-disable-line no-new + return true; + } catch (e) { + return false; + } +} + +// Despite all stars in the sky saying that Edge supports old draft syntax, aka 'never', 'always', 'origin' and 'default +// https://caniuse.com/#feat=referrer-policy +// It doesn't. And it throw exception instead of ignoring this parameter... +// REF: https://github.com/getsentry/raven-js/issues/1233 +function supportsReferrerPolicy() { + if (!supportsFetch()) return false; + + try { + // eslint-disable-next-line no-new + new Request('pickleRick', { + referrerPolicy: 'origin' + }); + return true; + } catch (e) { + return false; + } +} + +function supportsPromiseRejectionEvent() { + return typeof PromiseRejectionEvent === 'function'; +} + +function wrappedCallback(callback) { + function dataCallback(data, original) { + var normalizedData = callback(data) || data; + if (original) { + return original(normalizedData) || normalizedData; + } + return normalizedData; + } + + return dataCallback; +} + +function each(obj, callback) { + var i, j; + + if (isUndefined(obj.length)) { + for (i in obj) { + if (hasKey(obj, i)) { + callback.call(null, i, obj[i]); + } + } + } else { + j = obj.length; + if (j) { + for (i = 0; i < j; i++) { + callback.call(null, i, obj[i]); + } + } + } +} + +function objectMerge(obj1, obj2) { + if (!obj2) { + return obj1; + } + each(obj2, function(key, value) { + obj1[key] = value; + }); + return obj1; +} + +/** + * This function is only used for react-native. + * react-native freezes object that have already been sent over the + * js bridge. We need this function in order to check if the object is frozen. + * So it's ok that objectFrozen returns false if Object.isFrozen is not + * supported because it's not relevant for other "platforms". See related issue: + * https://github.com/getsentry/react-native-sentry/issues/57 + */ +function objectFrozen(obj) { + if (!Object.isFrozen) { + return false; + } + return Object.isFrozen(obj); +} + +function truncate(str, max) { + if (typeof max !== 'number') { + throw new Error('2nd argument to `truncate` function should be a number'); + } + if (typeof str !== 'string' || max === 0) { + return str; + } + return str.length <= max ? str : str.substr(0, max) + '\u2026'; +} + +/** + * hasKey, a better form of hasOwnProperty + * Example: hasKey(MainHostObject, property) === true/false + * + * @param {Object} host object to check property + * @param {string} key to check + */ +function hasKey(object, key) { + return Object.prototype.hasOwnProperty.call(object, key); +} + +function joinRegExp(patterns) { + // Combine an array of regular expressions and strings into one large regexp + // Be mad. + var sources = [], + i = 0, + len = patterns.length, + pattern; + + for (; i < len; i++) { + pattern = patterns[i]; + if (isString(pattern)) { + // If it's a string, we need to escape it + // Taken from: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions + sources.push(pattern.replace(/([.*+?^=!:${}()|\[\]\/\\])/g, '\\$1')); + } else if (pattern && pattern.source) { + // If it's a regexp already, we want to extract the source + sources.push(pattern.source); + } + // Intentionally skip other cases + } + return new RegExp(sources.join('|'), 'i'); +} + +function urlencode(o) { + var pairs = []; + each(o, function(key, value) { + pairs.push(encodeURIComponent(key) + '=' + encodeURIComponent(value)); + }); + return pairs.join('&'); +} + +// borrowed from https://tools.ietf.org/html/rfc3986#appendix-B +// intentionally using regex and not href parsing trick because React Native and other +// environments where DOM might not be available +function parseUrl(url) { + if (typeof url !== 'string') return {}; + var match = url.match(/^(([^:\/?#]+):)?(\/\/([^\/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?$/); + + // coerce to undefined values to empty string so we don't get 'undefined' + var query = match[6] || ''; + var fragment = match[8] || ''; + return { + protocol: match[2], + host: match[4], + path: match[5], + relative: match[5] + query + fragment // everything minus origin + }; +} +function uuid4() { + var crypto = _window.crypto || _window.msCrypto; + + if (!isUndefined(crypto) && crypto.getRandomValues) { + // Use window.crypto API if available + // eslint-disable-next-line no-undef + var arr = new Uint16Array(8); + crypto.getRandomValues(arr); + + // set 4 in byte 7 + arr[3] = (arr[3] & 0xfff) | 0x4000; + // set 2 most significant bits of byte 9 to '10' + arr[4] = (arr[4] & 0x3fff) | 0x8000; + + var pad = function(num) { + var v = num.toString(16); + while (v.length < 4) { + v = '0' + v; + } + return v; + }; + + return ( + pad(arr[0]) + + pad(arr[1]) + + pad(arr[2]) + + pad(arr[3]) + + pad(arr[4]) + + pad(arr[5]) + + pad(arr[6]) + + pad(arr[7]) + ); + } else { + // http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/2117523#2117523 + return 'xxxxxxxxxxxx4xxxyxxxxxxxxxxxxxxx'.replace(/[xy]/g, function(c) { + var r = (Math.random() * 16) | 0, + v = c === 'x' ? r : (r & 0x3) | 0x8; + return v.toString(16); + }); + } +} + +/** + * Given a child DOM element, returns a query-selector statement describing that + * and its ancestors + * e.g. [HTMLElement] => body > div > input#foo.btn[name=baz] + * @param elem + * @returns {string} + */ +function htmlTreeAsString(elem) { + /* eslint no-extra-parens:0*/ + var MAX_TRAVERSE_HEIGHT = 5, + MAX_OUTPUT_LEN = 80, + out = [], + height = 0, + len = 0, + separator = ' > ', + sepLength = separator.length, + nextStr; + + while (elem && height++ < MAX_TRAVERSE_HEIGHT) { + nextStr = htmlElementAsString(elem); + // bail out if + // - nextStr is the 'html' element + // - the length of the string that would be created exceeds MAX_OUTPUT_LEN + // (ignore this limit if we are on the first iteration) + if ( + nextStr === 'html' || + (height > 1 && len + out.length * sepLength + nextStr.length >= MAX_OUTPUT_LEN) + ) { + break; + } + + out.push(nextStr); + + len += nextStr.length; + elem = elem.parentNode; + } + + return out.reverse().join(separator); +} + +/** + * Returns a simple, query-selector representation of a DOM element + * e.g. [HTMLElement] => input#foo.btn[name=baz] + * @param HTMLElement + * @returns {string} + */ +function htmlElementAsString(elem) { + var out = [], + className, + classes, + key, + attr, + i; + + if (!elem || !elem.tagName) { + return ''; + } + + out.push(elem.tagName.toLowerCase()); + if (elem.id) { + out.push('#' + elem.id); + } + + className = elem.className; + if (className && isString(className)) { + classes = className.split(/\s+/); + for (i = 0; i < classes.length; i++) { + out.push('.' + classes[i]); + } + } + var attrWhitelist = ['type', 'name', 'title', 'alt']; + for (i = 0; i < attrWhitelist.length; i++) { + key = attrWhitelist[i]; + attr = elem.getAttribute(key); + if (attr) { + out.push('[' + key + '="' + attr + '"]'); + } + } + return out.join(''); +} + +/** + * Returns true if either a OR b is truthy, but not both + */ +function isOnlyOneTruthy(a, b) { + return !!(!!a ^ !!b); +} + +/** + * Returns true if both parameters are undefined + */ +function isBothUndefined(a, b) { + return isUndefined(a) && isUndefined(b); +} + +/** + * Returns true if the two input exception interfaces have the same content + */ +function isSameException(ex1, ex2) { + if (isOnlyOneTruthy(ex1, ex2)) return false; + + ex1 = ex1.values[0]; + ex2 = ex2.values[0]; + + if (ex1.type !== ex2.type || ex1.value !== ex2.value) return false; + + // in case both stacktraces are undefined, we can't decide so default to false + if (isBothUndefined(ex1.stacktrace, ex2.stacktrace)) return false; + + return isSameStacktrace(ex1.stacktrace, ex2.stacktrace); +} + +/** + * Returns true if the two input stack trace interfaces have the same content + */ +function isSameStacktrace(stack1, stack2) { + if (isOnlyOneTruthy(stack1, stack2)) return false; + + var frames1 = stack1.frames; + var frames2 = stack2.frames; + + // Exit early if frame count differs + if (frames1.length !== frames2.length) return false; + + // Iterate through every frame; bail out if anything differs + var a, b; + for (var i = 0; i < frames1.length; i++) { + a = frames1[i]; + b = frames2[i]; + if ( + a.filename !== b.filename || + a.lineno !== b.lineno || + a.colno !== b.colno || + a['function'] !== b['function'] + ) + return false; + } + return true; +} + +/** + * Polyfill a method + * @param obj object e.g. `document` + * @param name method name present on object e.g. `addEventListener` + * @param replacement replacement function + * @param track {optional} record instrumentation to an array + */ +function fill(obj, name, replacement, track) { + if (obj == null) return; + var orig = obj[name]; + obj[name] = replacement(orig); + obj[name].__raven__ = true; + obj[name].__orig__ = orig; + if (track) { + track.push([obj, name, orig]); + } +} + +/** + * Join values in array + * @param input array of values to be joined together + * @param delimiter string to be placed in-between values + * @returns {string} + */ +function safeJoin(input, delimiter) { + if (!isArray(input)) return ''; + + var output = []; + + for (var i = 0; i < input.length; i++) { + try { + output.push(String(input[i])); + } catch (e) { + output.push('[value cannot be serialized]'); + } + } + + return output.join(delimiter); +} + +// Default Node.js REPL depth +var MAX_SERIALIZE_EXCEPTION_DEPTH = 3; +// 50kB, as 100kB is max payload size, so half sounds reasonable +var MAX_SERIALIZE_EXCEPTION_SIZE = 50 * 1024; +var MAX_SERIALIZE_KEYS_LENGTH = 40; + +function utf8Length(value) { + return ~-encodeURI(value).split(/%..|./).length; +} + +function jsonSize(value) { + return utf8Length(JSON.stringify(value)); +} + +function serializeValue(value) { + if (typeof value === 'string') { + var maxLength = 40; + return truncate(value, maxLength); + } else if ( + typeof value === 'number' || + typeof value === 'boolean' || + typeof value === 'undefined' + ) { + return value; + } + + var type = Object.prototype.toString.call(value); + + // Node.js REPL notation + if (type === '[object Object]') return '[Object]'; + if (type === '[object Array]') return '[Array]'; + if (type === '[object Function]') + return value.name ? '[Function: ' + value.name + ']' : '[Function]'; + + return value; +} + +function serializeObject(value, depth) { + if (depth === 0) return serializeValue(value); + + if (isPlainObject(value)) { + return Object.keys(value).reduce(function(acc, key) { + acc[key] = serializeObject(value[key], depth - 1); + return acc; + }, {}); + } else if (Array.isArray(value)) { + return value.map(function(val) { + return serializeObject(val, depth - 1); + }); + } + + return serializeValue(value); +} + +function serializeException(ex, depth, maxSize) { + if (!isPlainObject(ex)) return ex; + + depth = typeof depth !== 'number' ? MAX_SERIALIZE_EXCEPTION_DEPTH : depth; + maxSize = typeof depth !== 'number' ? MAX_SERIALIZE_EXCEPTION_SIZE : maxSize; + + var serialized = serializeObject(ex, depth); + + if (jsonSize(stringify(serialized)) > maxSize) { + return serializeException(ex, depth - 1); + } + + return serialized; +} + +function serializeKeysForMessage(keys, maxLength) { + if (typeof keys === 'number' || typeof keys === 'string') return keys.toString(); + if (!Array.isArray(keys)) return ''; + + keys = keys.filter(function(key) { + return typeof key === 'string'; + }); + if (keys.length === 0) return '[object has no keys]'; + + maxLength = typeof maxLength !== 'number' ? MAX_SERIALIZE_KEYS_LENGTH : maxLength; + if (keys[0].length >= maxLength) return keys[0]; + + for (var usedKeys = keys.length; usedKeys > 0; usedKeys--) { + var serialized = keys.slice(0, usedKeys).join(', '); + if (serialized.length > maxLength) continue; + if (usedKeys === keys.length) return serialized; + return serialized + '\u2026'; + } + + return ''; +} + +function sanitize(input, sanitizeKeys) { + if (!isArray(sanitizeKeys) || (isArray(sanitizeKeys) && sanitizeKeys.length === 0)) + return input; + + var sanitizeRegExp = joinRegExp(sanitizeKeys); + var sanitizeMask = '********'; + var safeInput; + + try { + safeInput = JSON.parse(stringify(input)); + } catch (o_O) { + return input; + } + + function sanitizeWorker(workerInput) { + if (isArray(workerInput)) { + return workerInput.map(function(val) { + return sanitizeWorker(val); + }); + } + + if (isPlainObject(workerInput)) { + return Object.keys(workerInput).reduce(function(acc, k) { + if (sanitizeRegExp.test(k)) { + acc[k] = sanitizeMask; + } else { + acc[k] = sanitizeWorker(workerInput[k]); + } + return acc; + }, {}); + } + + return workerInput; + } + + return sanitizeWorker(safeInput); +} + +module.exports = { + isObject: isObject, + isError: isError, + isErrorEvent: isErrorEvent, + isDOMError: isDOMError, + isDOMException: isDOMException, + isUndefined: isUndefined, + isFunction: isFunction, + isPlainObject: isPlainObject, + isString: isString, + isArray: isArray, + isEmptyObject: isEmptyObject, + supportsErrorEvent: supportsErrorEvent, + supportsDOMError: supportsDOMError, + supportsDOMException: supportsDOMException, + supportsFetch: supportsFetch, + supportsReferrerPolicy: supportsReferrerPolicy, + supportsPromiseRejectionEvent: supportsPromiseRejectionEvent, + wrappedCallback: wrappedCallback, + each: each, + objectMerge: objectMerge, + truncate: truncate, + objectFrozen: objectFrozen, + hasKey: hasKey, + joinRegExp: joinRegExp, + urlencode: urlencode, + uuid4: uuid4, + htmlTreeAsString: htmlTreeAsString, + htmlElementAsString: htmlElementAsString, + isSameException: isSameException, + isSameStacktrace: isSameStacktrace, + parseUrl: parseUrl, + fill: fill, + safeJoin: safeJoin, + serializeException: serializeException, + serializeKeysForMessage: serializeKeysForMessage, + sanitize: sanitize +}; + +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"9":9}],8:[function(_dereq_,module,exports){ +(function (global){ +var utils = _dereq_(7); + +/* + TraceKit - Cross brower stack traces + + This was originally forked from github.com/occ/TraceKit, but has since been + largely re-written and is now maintained as part of raven-js. Tests for + this are in test/vendor. + + MIT license +*/ + +var TraceKit = { + collectWindowErrors: true, + debug: false +}; + +// This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) +var _window = + typeof window !== 'undefined' + ? window + : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; + +// global reference to slice +var _slice = [].slice; +var UNKNOWN_FUNCTION = '?'; + +// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error#Error_types +var ERROR_TYPES_RE = /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/; + +function getLocationHref() { + if (typeof document === 'undefined' || document.location == null) return ''; + return document.location.href; +} + +function getLocationOrigin() { + if (typeof document === 'undefined' || document.location == null) return ''; + + // Oh dear IE10... + if (!document.location.origin) { + document.location.origin = + document.location.protocol + + '//' + + document.location.hostname + + (document.location.port ? ':' + document.location.port : ''); + } + + return document.location.origin; +} + +/** + * TraceKit.report: cross-browser processing of unhandled exceptions + * + * Syntax: + * TraceKit.report.subscribe(function(stackInfo) { ... }) + * TraceKit.report.unsubscribe(function(stackInfo) { ... }) + * TraceKit.report(exception) + * try { ...code... } catch(ex) { TraceKit.report(ex); } + * + * Supports: + * - Firefox: full stack trace with line numbers, plus column number + * on top frame; column number is not guaranteed + * - Opera: full stack trace with line and column numbers + * - Chrome: full stack trace with line and column numbers + * - Safari: line and column number for the top frame only; some frames + * may be missing, and column number is not guaranteed + * - IE: line and column number for the top frame only; some frames + * may be missing, and column number is not guaranteed + * + * In theory, TraceKit should work on all of the following versions: + * - IE5.5+ (only 8.0 tested) + * - Firefox 0.9+ (only 3.5+ tested) + * - Opera 7+ (only 10.50 tested; versions 9 and earlier may require + * Exceptions Have Stacktrace to be enabled in opera:config) + * - Safari 3+ (only 4+ tested) + * - Chrome 1+ (only 5+ tested) + * - Konqueror 3.5+ (untested) + * + * Requires TraceKit.computeStackTrace. + * + * Tries to catch all unhandled exceptions and report them to the + * subscribed handlers. Please note that TraceKit.report will rethrow the + * exception. This is REQUIRED in order to get a useful stack trace in IE. + * If the exception does not reach the top of the browser, you will only + * get a stack trace from the point where TraceKit.report was called. + * + * Handlers receive a stackInfo object as described in the + * TraceKit.computeStackTrace docs. + */ +TraceKit.report = (function reportModuleWrapper() { + var handlers = [], + lastArgs = null, + lastException = null, + lastExceptionStack = null; + + /** + * Add a crash handler. + * @param {Function} handler + */ + function subscribe(handler) { + installGlobalHandler(); + handlers.push(handler); + } + + /** + * Remove a crash handler. + * @param {Function} handler + */ + function unsubscribe(handler) { + for (var i = handlers.length - 1; i >= 0; --i) { + if (handlers[i] === handler) { + handlers.splice(i, 1); + } + } + } + + /** + * Remove all crash handlers. + */ + function unsubscribeAll() { + uninstallGlobalHandler(); + handlers = []; + } + + /** + * Dispatch stack information to all handlers. + * @param {Object.} stack + */ + function notifyHandlers(stack, isWindowError) { + var exception = null; + if (isWindowError && !TraceKit.collectWindowErrors) { + return; + } + for (var i in handlers) { + if (handlers.hasOwnProperty(i)) { + try { + handlers[i].apply(null, [stack].concat(_slice.call(arguments, 2))); + } catch (inner) { + exception = inner; + } + } + } + + if (exception) { + throw exception; + } + } + + var _oldOnerrorHandler, _onErrorHandlerInstalled; + + /** + * Ensures all global unhandled exceptions are recorded. + * Supported by Gecko and IE. + * @param {string} msg Error message. + * @param {string} url URL of script that generated the exception. + * @param {(number|string)} lineNo The line number at which the error + * occurred. + * @param {?(number|string)} colNo The column number at which the error + * occurred. + * @param {?Error} ex The actual Error object. + */ + function traceKitWindowOnError(msg, url, lineNo, colNo, ex) { + var stack = null; + // If 'ex' is ErrorEvent, get real Error from inside + var exception = utils.isErrorEvent(ex) ? ex.error : ex; + // If 'msg' is ErrorEvent, get real message from inside + var message = utils.isErrorEvent(msg) ? msg.message : msg; + + if (lastExceptionStack) { + TraceKit.computeStackTrace.augmentStackTraceWithInitialElement( + lastExceptionStack, + url, + lineNo, + message + ); + processLastException(); + } else if (exception && utils.isError(exception)) { + // non-string `exception` arg; attempt to extract stack trace + + // New chrome and blink send along a real error object + // Let's just report that like a normal error. + // See: https://mikewest.org/2013/08/debugging-runtime-errors-with-window-onerror + stack = TraceKit.computeStackTrace(exception); + notifyHandlers(stack, true); + } else { + var location = { + url: url, + line: lineNo, + column: colNo + }; + + var name = undefined; + var groups; + + if ({}.toString.call(message) === '[object String]') { + var groups = message.match(ERROR_TYPES_RE); + if (groups) { + name = groups[1]; + message = groups[2]; + } + } + + location.func = UNKNOWN_FUNCTION; + + stack = { + name: name, + message: message, + url: getLocationHref(), + stack: [location] + }; + notifyHandlers(stack, true); + } + + if (_oldOnerrorHandler) { + return _oldOnerrorHandler.apply(this, arguments); + } + + return false; + } + + function installGlobalHandler() { + if (_onErrorHandlerInstalled) { + return; + } + _oldOnerrorHandler = _window.onerror; + _window.onerror = traceKitWindowOnError; + _onErrorHandlerInstalled = true; + } + + function uninstallGlobalHandler() { + if (!_onErrorHandlerInstalled) { + return; + } + _window.onerror = _oldOnerrorHandler; + _onErrorHandlerInstalled = false; + _oldOnerrorHandler = undefined; + } + + function processLastException() { + var _lastExceptionStack = lastExceptionStack, + _lastArgs = lastArgs; + lastArgs = null; + lastExceptionStack = null; + lastException = null; + notifyHandlers.apply(null, [_lastExceptionStack, false].concat(_lastArgs)); + } + + /** + * Reports an unhandled Error to TraceKit. + * @param {Error} ex + * @param {?boolean} rethrow If false, do not re-throw the exception. + * Only used for window.onerror to not cause an infinite loop of + * rethrowing. + */ + function report(ex, rethrow) { + var args = _slice.call(arguments, 1); + if (lastExceptionStack) { + if (lastException === ex) { + return; // already caught by an inner catch block, ignore + } else { + processLastException(); + } + } + + var stack = TraceKit.computeStackTrace(ex); + lastExceptionStack = stack; + lastException = ex; + lastArgs = args; + + // If the stack trace is incomplete, wait for 2 seconds for + // slow slow IE to see if onerror occurs or not before reporting + // this exception; otherwise, we will end up with an incomplete + // stack trace + setTimeout(function() { + if (lastException === ex) { + processLastException(); + } + }, stack.incomplete ? 2000 : 0); + + if (rethrow !== false) { + throw ex; // re-throw to propagate to the top level (and cause window.onerror) + } + } + + report.subscribe = subscribe; + report.unsubscribe = unsubscribe; + report.uninstall = unsubscribeAll; + return report; +})(); + +/** + * TraceKit.computeStackTrace: cross-browser stack traces in JavaScript + * + * Syntax: + * s = TraceKit.computeStackTrace(exception) // consider using TraceKit.report instead (see below) + * Returns: + * s.name - exception name + * s.message - exception message + * s.stack[i].url - JavaScript or HTML file URL + * s.stack[i].func - function name, or empty for anonymous functions (if guessing did not work) + * s.stack[i].args - arguments passed to the function, if known + * s.stack[i].line - line number, if known + * s.stack[i].column - column number, if known + * + * Supports: + * - Firefox: full stack trace with line numbers and unreliable column + * number on top frame + * - Opera 10: full stack trace with line and column numbers + * - Opera 9-: full stack trace with line numbers + * - Chrome: full stack trace with line and column numbers + * - Safari: line and column number for the topmost stacktrace element + * only + * - IE: no line numbers whatsoever + * + * Tries to guess names of anonymous functions by looking for assignments + * in the source code. In IE and Safari, we have to guess source file names + * by searching for function bodies inside all page scripts. This will not + * work for scripts that are loaded cross-domain. + * Here be dragons: some function names may be guessed incorrectly, and + * duplicate functions may be mismatched. + * + * TraceKit.computeStackTrace should only be used for tracing purposes. + * Logging of unhandled exceptions should be done with TraceKit.report, + * which builds on top of TraceKit.computeStackTrace and provides better + * IE support by utilizing the window.onerror event to retrieve information + * about the top of the stack. + * + * Note: In IE and Safari, no stack trace is recorded on the Error object, + * so computeStackTrace instead walks its *own* chain of callers. + * This means that: + * * in Safari, some methods may be missing from the stack trace; + * * in IE, the topmost function in the stack trace will always be the + * caller of computeStackTrace. + * + * This is okay for tracing (because you are likely to be calling + * computeStackTrace from the function you want to be the topmost element + * of the stack trace anyway), but not okay for logging unhandled + * exceptions (because your catch block will likely be far away from the + * inner function that actually caused the exception). + * + */ +TraceKit.computeStackTrace = (function computeStackTraceWrapper() { + // Contents of Exception in various browsers. + // + // SAFARI: + // ex.message = Can't find variable: qq + // ex.line = 59 + // ex.sourceId = 580238192 + // ex.sourceURL = http://... + // ex.expressionBeginOffset = 96 + // ex.expressionCaretOffset = 98 + // ex.expressionEndOffset = 98 + // ex.name = ReferenceError + // + // FIREFOX: + // ex.message = qq is not defined + // ex.fileName = http://... + // ex.lineNumber = 59 + // ex.columnNumber = 69 + // ex.stack = ...stack trace... (see the example below) + // ex.name = ReferenceError + // + // CHROME: + // ex.message = qq is not defined + // ex.name = ReferenceError + // ex.type = not_defined + // ex.arguments = ['aa'] + // ex.stack = ...stack trace... + // + // INTERNET EXPLORER: + // ex.message = ... + // ex.name = ReferenceError + // + // OPERA: + // ex.message = ...message... (see the example below) + // ex.name = ReferenceError + // ex.opera#sourceloc = 11 (pretty much useless, duplicates the info in ex.message) + // ex.stacktrace = n/a; see 'opera:config#UserPrefs|Exceptions Have Stacktrace' + + /** + * Computes stack trace information from the stack property. + * Chrome and Gecko use this property. + * @param {Error} ex + * @return {?Object.} Stack trace information. + */ + function computeStackTraceFromStackProp(ex) { + if (typeof ex.stack === 'undefined' || !ex.stack) return; + + var chrome = /^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i; + var winjs = /^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i; + // NOTE: blob urls are now supposed to always have an origin, therefore it's format + // which is `blob:http://url/path/with-some-uuid`, is matched by `blob.*?:\/` as well + var gecko = /^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i; + // Used to additionally parse URL/line/column from eval frames + var geckoEval = /(\S+) line (\d+)(?: > eval line \d+)* > eval/i; + var chromeEval = /\((\S*)(?::(\d+))(?::(\d+))\)/; + var lines = ex.stack.split('\n'); + var stack = []; + var submatch; + var parts; + var element; + var reference = /^(.*) is undefined$/.exec(ex.message); + + for (var i = 0, j = lines.length; i < j; ++i) { + if ((parts = chrome.exec(lines[i]))) { + var isNative = parts[2] && parts[2].indexOf('native') === 0; // start of line + var isEval = parts[2] && parts[2].indexOf('eval') === 0; // start of line + if (isEval && (submatch = chromeEval.exec(parts[2]))) { + // throw out eval line/column and use top-most line/column number + parts[2] = submatch[1]; // url + parts[3] = submatch[2]; // line + parts[4] = submatch[3]; // column + } + element = { + url: !isNative ? parts[2] : null, + func: parts[1] || UNKNOWN_FUNCTION, + args: isNative ? [parts[2]] : [], + line: parts[3] ? +parts[3] : null, + column: parts[4] ? +parts[4] : null + }; + } else if ((parts = winjs.exec(lines[i]))) { + element = { + url: parts[2], + func: parts[1] || UNKNOWN_FUNCTION, + args: [], + line: +parts[3], + column: parts[4] ? +parts[4] : null + }; + } else if ((parts = gecko.exec(lines[i]))) { + var isEval = parts[3] && parts[3].indexOf(' > eval') > -1; + if (isEval && (submatch = geckoEval.exec(parts[3]))) { + // throw out eval line/column and use top-most line number + parts[3] = submatch[1]; + parts[4] = submatch[2]; + parts[5] = null; // no column when eval + } else if (i === 0 && !parts[5] && typeof ex.columnNumber !== 'undefined') { + // FireFox uses this awesome columnNumber property for its top frame + // Also note, Firefox's column number is 0-based and everything else expects 1-based, + // so adding 1 + // NOTE: this hack doesn't work if top-most frame is eval + stack[0].column = ex.columnNumber + 1; + } + element = { + url: parts[3], + func: parts[1] || UNKNOWN_FUNCTION, + args: parts[2] ? parts[2].split(',') : [], + line: parts[4] ? +parts[4] : null, + column: parts[5] ? +parts[5] : null + }; + } else { + continue; + } + + if (!element.func && element.line) { + element.func = UNKNOWN_FUNCTION; + } + + if (element.url && element.url.substr(0, 5) === 'blob:') { + // Special case for handling JavaScript loaded into a blob. + // We use a synchronous AJAX request here as a blob is already in + // memory - it's not making a network request. This will generate a warning + // in the browser console, but there has already been an error so that's not + // that much of an issue. + var xhr = new XMLHttpRequest(); + xhr.open('GET', element.url, false); + xhr.send(null); + + // If we failed to download the source, skip this patch + if (xhr.status === 200) { + var source = xhr.responseText || ''; + + // We trim the source down to the last 300 characters as sourceMappingURL is always at the end of the file. + // Why 300? To be in line with: https://github.com/getsentry/sentry/blob/4af29e8f2350e20c28a6933354e4f42437b4ba42/src/sentry/lang/javascript/processor.py#L164-L175 + source = source.slice(-300); + + // Now we dig out the source map URL + var sourceMaps = source.match(/\/\/# sourceMappingURL=(.*)$/); + + // If we don't find a source map comment or we find more than one, continue on to the next element. + if (sourceMaps) { + var sourceMapAddress = sourceMaps[1]; + + // Now we check to see if it's a relative URL. + // If it is, convert it to an absolute one. + if (sourceMapAddress.charAt(0) === '~') { + sourceMapAddress = getLocationOrigin() + sourceMapAddress.slice(1); + } + + // Now we strip the '.map' off of the end of the URL and update the + // element so that Sentry can match the map to the blob. + element.url = sourceMapAddress.slice(0, -4); + } + } + } + + stack.push(element); + } + + if (!stack.length) { + return null; + } + + return { + name: ex.name, + message: ex.message, + url: getLocationHref(), + stack: stack + }; + } + + /** + * Adds information about the first frame to incomplete stack traces. + * Safari and IE require this to get complete data on the first frame. + * @param {Object.} stackInfo Stack trace information from + * one of the compute* methods. + * @param {string} url The URL of the script that caused an error. + * @param {(number|string)} lineNo The line number of the script that + * caused an error. + * @param {string=} message The error generated by the browser, which + * hopefully contains the name of the object that caused the error. + * @return {boolean} Whether or not the stack information was + * augmented. + */ + function augmentStackTraceWithInitialElement(stackInfo, url, lineNo, message) { + var initial = { + url: url, + line: lineNo + }; + + if (initial.url && initial.line) { + stackInfo.incomplete = false; + + if (!initial.func) { + initial.func = UNKNOWN_FUNCTION; + } + + if (stackInfo.stack.length > 0) { + if (stackInfo.stack[0].url === initial.url) { + if (stackInfo.stack[0].line === initial.line) { + return false; // already in stack trace + } else if ( + !stackInfo.stack[0].line && + stackInfo.stack[0].func === initial.func + ) { + stackInfo.stack[0].line = initial.line; + return false; + } + } + } + + stackInfo.stack.unshift(initial); + stackInfo.partial = true; + return true; + } else { + stackInfo.incomplete = true; + } + + return false; + } + + /** + * Computes stack trace information by walking the arguments.caller + * chain at the time the exception occurred. This will cause earlier + * frames to be missed but is the only way to get any stack trace in + * Safari and IE. The top frame is restored by + * {@link augmentStackTraceWithInitialElement}. + * @param {Error} ex + * @return {?Object.} Stack trace information. + */ + function computeStackTraceByWalkingCallerChain(ex, depth) { + var functionName = /function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i, + stack = [], + funcs = {}, + recursion = false, + parts, + item, + source; + + for ( + var curr = computeStackTraceByWalkingCallerChain.caller; + curr && !recursion; + curr = curr.caller + ) { + if (curr === computeStackTrace || curr === TraceKit.report) { + // console.log('skipping internal function'); + continue; + } + + item = { + url: null, + func: UNKNOWN_FUNCTION, + line: null, + column: null + }; + + if (curr.name) { + item.func = curr.name; + } else if ((parts = functionName.exec(curr.toString()))) { + item.func = parts[1]; + } + + if (typeof item.func === 'undefined') { + try { + item.func = parts.input.substring(0, parts.input.indexOf('{')); + } catch (e) {} + } + + if (funcs['' + curr]) { + recursion = true; + } else { + funcs['' + curr] = true; + } + + stack.push(item); + } + + if (depth) { + // console.log('depth is ' + depth); + // console.log('stack is ' + stack.length); + stack.splice(0, depth); + } + + var result = { + name: ex.name, + message: ex.message, + url: getLocationHref(), + stack: stack + }; + augmentStackTraceWithInitialElement( + result, + ex.sourceURL || ex.fileName, + ex.line || ex.lineNumber, + ex.message || ex.description + ); + return result; + } + + /** + * Computes a stack trace for an exception. + * @param {Error} ex + * @param {(string|number)=} depth + */ + function computeStackTrace(ex, depth) { + var stack = null; + depth = depth == null ? 0 : +depth; + + try { + stack = computeStackTraceFromStackProp(ex); + if (stack) { + return stack; + } + } catch (e) { + if (TraceKit.debug) { + throw e; + } + } + + try { + stack = computeStackTraceByWalkingCallerChain(ex, depth + 1); + if (stack) { + return stack; + } + } catch (e) { + if (TraceKit.debug) { + throw e; + } + } + return { + name: ex.name, + message: ex.message, + url: getLocationHref() + }; + } + + computeStackTrace.augmentStackTraceWithInitialElement = augmentStackTraceWithInitialElement; + computeStackTrace.computeStackTraceFromStackProp = computeStackTraceFromStackProp; + + return computeStackTrace; +})(); + +module.exports = TraceKit; + +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"7":7}],9:[function(_dereq_,module,exports){ +/* + json-stringify-safe + Like JSON.stringify, but doesn't throw on circular references. + + Originally forked from https://github.com/isaacs/json-stringify-safe + version 5.0.1 on 3/8/2017 and modified to handle Errors serialization + and IE8 compatibility. Tests for this are in test/vendor. + + ISC license: https://github.com/isaacs/json-stringify-safe/blob/master/LICENSE +*/ + +exports = module.exports = stringify; +exports.getSerialize = serializer; + +function indexOf(haystack, needle) { + for (var i = 0; i < haystack.length; ++i) { + if (haystack[i] === needle) return i; + } + return -1; +} + +function stringify(obj, replacer, spaces, cycleReplacer) { + return JSON.stringify(obj, serializer(replacer, cycleReplacer), spaces); +} + +// https://github.com/ftlabs/js-abbreviate/blob/fa709e5f139e7770a71827b1893f22418097fbda/index.js#L95-L106 +function stringifyError(value) { + var err = { + // These properties are implemented as magical getters and don't show up in for in + stack: value.stack, + message: value.message, + name: value.name + }; + + for (var i in value) { + if (Object.prototype.hasOwnProperty.call(value, i)) { + err[i] = value[i]; + } + } + + return err; +} + +function serializer(replacer, cycleReplacer) { + var stack = []; + var keys = []; + + if (cycleReplacer == null) { + cycleReplacer = function(key, value) { + if (stack[0] === value) { + return '[Circular ~]'; + } + return '[Circular ~.' + keys.slice(0, indexOf(stack, value)).join('.') + ']'; + }; + } + + return function(key, value) { + if (stack.length > 0) { + var thisPos = indexOf(stack, this); + ~thisPos ? stack.splice(thisPos + 1) : stack.push(this); + ~thisPos ? keys.splice(thisPos, Infinity, key) : keys.push(key); + + if (~indexOf(stack, value)) { + value = cycleReplacer.call(this, key, value); + } + } else { + stack.push(value); + } + + return replacer == null + ? value instanceof Error ? stringifyError(value) : value + : replacer.call(this, key, value); + }; +} + +},{}],10:[function(_dereq_,module,exports){ +/* + * JavaScript MD5 + * https://github.com/blueimp/JavaScript-MD5 + * + * Copyright 2011, Sebastian Tschan + * https://blueimp.net + * + * Licensed under the MIT license: + * https://opensource.org/licenses/MIT + * + * Based on + * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message + * Digest Algorithm, as defined in RFC 1321. + * Version 2.2 Copyright (C) Paul Johnston 1999 - 2009 + * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet + * Distributed under the BSD License + * See http://pajhome.org.uk/crypt/md5 for more info. + */ + +/* +* Add integers, wrapping at 2^32. This uses 16-bit operations internally +* to work around bugs in some JS interpreters. +*/ +function safeAdd(x, y) { + var lsw = (x & 0xffff) + (y & 0xffff); + var msw = (x >> 16) + (y >> 16) + (lsw >> 16); + return (msw << 16) | (lsw & 0xffff); +} + +/* +* Bitwise rotate a 32-bit number to the left. +*/ +function bitRotateLeft(num, cnt) { + return (num << cnt) | (num >>> (32 - cnt)); +} + +/* +* These functions implement the four basic operations the algorithm uses. +*/ +function md5cmn(q, a, b, x, s, t) { + return safeAdd(bitRotateLeft(safeAdd(safeAdd(a, q), safeAdd(x, t)), s), b); +} +function md5ff(a, b, c, d, x, s, t) { + return md5cmn((b & c) | (~b & d), a, b, x, s, t); +} +function md5gg(a, b, c, d, x, s, t) { + return md5cmn((b & d) | (c & ~d), a, b, x, s, t); +} +function md5hh(a, b, c, d, x, s, t) { + return md5cmn(b ^ c ^ d, a, b, x, s, t); +} +function md5ii(a, b, c, d, x, s, t) { + return md5cmn(c ^ (b | ~d), a, b, x, s, t); +} + +/* +* Calculate the MD5 of an array of little-endian words, and a bit length. +*/ +function binlMD5(x, len) { + /* append padding */ + x[len >> 5] |= 0x80 << (len % 32); + x[(((len + 64) >>> 9) << 4) + 14] = len; + + var i; + var olda; + var oldb; + var oldc; + var oldd; + var a = 1732584193; + var b = -271733879; + var c = -1732584194; + var d = 271733878; + + for (i = 0; i < x.length; i += 16) { + olda = a; + oldb = b; + oldc = c; + oldd = d; + + a = md5ff(a, b, c, d, x[i], 7, -680876936); + d = md5ff(d, a, b, c, x[i + 1], 12, -389564586); + c = md5ff(c, d, a, b, x[i + 2], 17, 606105819); + b = md5ff(b, c, d, a, x[i + 3], 22, -1044525330); + a = md5ff(a, b, c, d, x[i + 4], 7, -176418897); + d = md5ff(d, a, b, c, x[i + 5], 12, 1200080426); + c = md5ff(c, d, a, b, x[i + 6], 17, -1473231341); + b = md5ff(b, c, d, a, x[i + 7], 22, -45705983); + a = md5ff(a, b, c, d, x[i + 8], 7, 1770035416); + d = md5ff(d, a, b, c, x[i + 9], 12, -1958414417); + c = md5ff(c, d, a, b, x[i + 10], 17, -42063); + b = md5ff(b, c, d, a, x[i + 11], 22, -1990404162); + a = md5ff(a, b, c, d, x[i + 12], 7, 1804603682); + d = md5ff(d, a, b, c, x[i + 13], 12, -40341101); + c = md5ff(c, d, a, b, x[i + 14], 17, -1502002290); + b = md5ff(b, c, d, a, x[i + 15], 22, 1236535329); + + a = md5gg(a, b, c, d, x[i + 1], 5, -165796510); + d = md5gg(d, a, b, c, x[i + 6], 9, -1069501632); + c = md5gg(c, d, a, b, x[i + 11], 14, 643717713); + b = md5gg(b, c, d, a, x[i], 20, -373897302); + a = md5gg(a, b, c, d, x[i + 5], 5, -701558691); + d = md5gg(d, a, b, c, x[i + 10], 9, 38016083); + c = md5gg(c, d, a, b, x[i + 15], 14, -660478335); + b = md5gg(b, c, d, a, x[i + 4], 20, -405537848); + a = md5gg(a, b, c, d, x[i + 9], 5, 568446438); + d = md5gg(d, a, b, c, x[i + 14], 9, -1019803690); + c = md5gg(c, d, a, b, x[i + 3], 14, -187363961); + b = md5gg(b, c, d, a, x[i + 8], 20, 1163531501); + a = md5gg(a, b, c, d, x[i + 13], 5, -1444681467); + d = md5gg(d, a, b, c, x[i + 2], 9, -51403784); + c = md5gg(c, d, a, b, x[i + 7], 14, 1735328473); + b = md5gg(b, c, d, a, x[i + 12], 20, -1926607734); + + a = md5hh(a, b, c, d, x[i + 5], 4, -378558); + d = md5hh(d, a, b, c, x[i + 8], 11, -2022574463); + c = md5hh(c, d, a, b, x[i + 11], 16, 1839030562); + b = md5hh(b, c, d, a, x[i + 14], 23, -35309556); + a = md5hh(a, b, c, d, x[i + 1], 4, -1530992060); + d = md5hh(d, a, b, c, x[i + 4], 11, 1272893353); + c = md5hh(c, d, a, b, x[i + 7], 16, -155497632); + b = md5hh(b, c, d, a, x[i + 10], 23, -1094730640); + a = md5hh(a, b, c, d, x[i + 13], 4, 681279174); + d = md5hh(d, a, b, c, x[i], 11, -358537222); + c = md5hh(c, d, a, b, x[i + 3], 16, -722521979); + b = md5hh(b, c, d, a, x[i + 6], 23, 76029189); + a = md5hh(a, b, c, d, x[i + 9], 4, -640364487); + d = md5hh(d, a, b, c, x[i + 12], 11, -421815835); + c = md5hh(c, d, a, b, x[i + 15], 16, 530742520); + b = md5hh(b, c, d, a, x[i + 2], 23, -995338651); + + a = md5ii(a, b, c, d, x[i], 6, -198630844); + d = md5ii(d, a, b, c, x[i + 7], 10, 1126891415); + c = md5ii(c, d, a, b, x[i + 14], 15, -1416354905); + b = md5ii(b, c, d, a, x[i + 5], 21, -57434055); + a = md5ii(a, b, c, d, x[i + 12], 6, 1700485571); + d = md5ii(d, a, b, c, x[i + 3], 10, -1894986606); + c = md5ii(c, d, a, b, x[i + 10], 15, -1051523); + b = md5ii(b, c, d, a, x[i + 1], 21, -2054922799); + a = md5ii(a, b, c, d, x[i + 8], 6, 1873313359); + d = md5ii(d, a, b, c, x[i + 15], 10, -30611744); + c = md5ii(c, d, a, b, x[i + 6], 15, -1560198380); + b = md5ii(b, c, d, a, x[i + 13], 21, 1309151649); + a = md5ii(a, b, c, d, x[i + 4], 6, -145523070); + d = md5ii(d, a, b, c, x[i + 11], 10, -1120210379); + c = md5ii(c, d, a, b, x[i + 2], 15, 718787259); + b = md5ii(b, c, d, a, x[i + 9], 21, -343485551); + + a = safeAdd(a, olda); + b = safeAdd(b, oldb); + c = safeAdd(c, oldc); + d = safeAdd(d, oldd); + } + return [a, b, c, d]; +} + +/* +* Convert an array of little-endian words to a string +*/ +function binl2rstr(input) { + var i; + var output = ''; + var length32 = input.length * 32; + for (i = 0; i < length32; i += 8) { + output += String.fromCharCode((input[i >> 5] >>> (i % 32)) & 0xff); + } + return output; +} + +/* +* Convert a raw string to an array of little-endian words +* Characters >255 have their high-byte silently ignored. +*/ +function rstr2binl(input) { + var i; + var output = []; + output[(input.length >> 2) - 1] = undefined; + for (i = 0; i < output.length; i += 1) { + output[i] = 0; + } + var length8 = input.length * 8; + for (i = 0; i < length8; i += 8) { + output[i >> 5] |= (input.charCodeAt(i / 8) & 0xff) << (i % 32); + } + return output; +} + +/* +* Calculate the MD5 of a raw string +*/ +function rstrMD5(s) { + return binl2rstr(binlMD5(rstr2binl(s), s.length * 8)); +} + +/* +* Calculate the HMAC-MD5, of a key and some data (raw strings) +*/ +function rstrHMACMD5(key, data) { + var i; + var bkey = rstr2binl(key); + var ipad = []; + var opad = []; + var hash; + ipad[15] = opad[15] = undefined; + if (bkey.length > 16) { + bkey = binlMD5(bkey, key.length * 8); + } + for (i = 0; i < 16; i += 1) { + ipad[i] = bkey[i] ^ 0x36363636; + opad[i] = bkey[i] ^ 0x5c5c5c5c; + } + hash = binlMD5(ipad.concat(rstr2binl(data)), 512 + data.length * 8); + return binl2rstr(binlMD5(opad.concat(hash), 512 + 128)); +} + +/* +* Convert a raw string to a hex string +*/ +function rstr2hex(input) { + var hexTab = '0123456789abcdef'; + var output = ''; + var x; + var i; + for (i = 0; i < input.length; i += 1) { + x = input.charCodeAt(i); + output += hexTab.charAt((x >>> 4) & 0x0f) + hexTab.charAt(x & 0x0f); + } + return output; +} + +/* +* Encode a string as utf-8 +*/ +function str2rstrUTF8(input) { + return unescape(encodeURIComponent(input)); +} + +/* +* Take string arguments and return either raw or hex encoded strings +*/ +function rawMD5(s) { + return rstrMD5(str2rstrUTF8(s)); +} +function hexMD5(s) { + return rstr2hex(rawMD5(s)); +} +function rawHMACMD5(k, d) { + return rstrHMACMD5(str2rstrUTF8(k), str2rstrUTF8(d)); +} +function hexHMACMD5(k, d) { + return rstr2hex(rawHMACMD5(k, d)); +} + +function md5(string, key, raw) { + if (!key) { + if (!raw) { + return hexMD5(string); + } + return rawMD5(string); + } + if (!raw) { + return hexHMACMD5(key, string); + } + return rawHMACMD5(key, string); +} + +module.exports = md5; + +},{}]},{},[6,1,2])(6) +}); \ No newline at end of file diff --git a/packages/raven-js/dist/angular,require/raven.min.js b/packages/raven-js/dist/angular,require/raven.min.js new file mode 100644 index 000000000000..5f6575f259f2 --- /dev/null +++ b/packages/raven-js/dist/angular,require/raven.min.js @@ -0,0 +1,4 @@ +/*! Raven.js 3.25.2 (30b6d4e) | github.com/getsentry/raven-js */ +!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.Raven=a()}}(function(){var a;return function b(a,c,d){function e(g,h){if(!c[g]){if(!a[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};a[g][0].call(k.exports,function(b){var c=a[g][1][b];return e(c?c:b)},k,k.exports,b,a,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;gthis.l.maxBreadcrumbs&&this.v.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.s.push([a,b]),this.o&&this.G(),this},setUserContext:function(a){return this.k.user=a,this},setExtraContext:function(a){return this.$("extra",a),this},setTagsContext:function(a){return this.$("tags",a),this},clearContext:function(){return this.k={},this},getContext:function(){return JSON.parse(h(this.k))},setEnvironment:function(a){return this.l.environment=a,this},setRelease:function(a){return this.l.release=a,this},setDataCallback:function(a){var b=this.l.dataCallback;return this.l.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.l.breadcrumbCallback;return this.l.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.l.shouldSendCallback;return this.l.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.l.transport=a,this},lastException:function(){return this.e},lastEventId:function(){return this.g},isSetup:function(){return!!this.b&&(!!this.h||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.A("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=R.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(S){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.I;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.k.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.K(this.H(c)),h=S.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(S.head||S.body).appendChild(h)}},M:function(){var a=this;this.n+=1,setTimeout(function(){a.n-=1})},_:function(a,b){var c,d;if(this.c){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),S.createEvent?(c=S.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=S.createEventObject(),c.eventType=a);for(d in b)A(b,d)&&(c[d]=b[d]);if(S.createEvent)S.dispatchEvent(c);else try{S.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},aa:function(a){var b=this;return function(c){if(b.ba=null,b.w!==c){b.w=c;var d;try{d=E(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ca:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.ba;g||a.aa("input")(c),clearTimeout(g),a.ba=setTimeout(function(){a.ba=null},b)}}},da:function(a,b){var c=H(this.x.href),d=H(b),e=H(a);this.y=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},D:function(){var a=this;a.ea=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.N?a.ea.apply(this.P,arguments):a.ea.apply(this,arguments)}},R:function(){this.ea&&(Function.prototype.toString=this.ea)},E:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.da(b.y,c+""),a.apply(this,arguments)}};I(R.history,"pushState",j,d),I(R.history,"replaceState",j,d)}if(c.console&&"console"in R&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};w(["debug","info","warn","error","log"],function(a,b){O(console,b,k)})}},S:function(){for(var a;this.u.length;){a=this.u.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},T:function(){for(var a in this.r)this.q[a]=this.r[a]},G:function(){var a=this;w(this.s,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},H:function(a){var b=Q.exec(a),c={},d=7;try{for(;d--;)c[P[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.l.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},K:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},B:function(){this.n||this.W.apply(this,arguments)},W:function(a,b){var c=this.Y(a,b);this._("handle",{stackInfo:a,options:b}),this.ga(a.name,a.message,a.url,a.lineno,c,b)},Y:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(w(a.stack,function(b,e){var f=c.ha(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.v,0)}),this.k.user&&(a.user=this.k.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),a=this.qa(a),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||v(a[b]))&&delete a[b]}),s(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!v(a)&&(!s(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.na()?void this.A("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function F(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&l(b))for(c=b.split(/\s+/),f=0;fc?Q(a,b-1):d}function R(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?X:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function S(a,b){function c(a){return m(a)?a.map(function(a){return c(a)}):k(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!m(b)||m(b)&&0===b.length)return a;var d,e=A(b),f="********";try{d=JSON.parse(T(a))}catch(g){return a}return c(d)}var T=a(9),U="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},V=3,W=51200,X=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isDOMError:g,isDOMException:h,isUndefined:i,isFunction:j,isPlainObject:k,isString:l,isArray:m,isEmptyObject:n,supportsErrorEvent:o,supportsDOMError:p,supportsDOMException:q,supportsFetch:r,supportsReferrerPolicy:s,supportsPromiseRejectionEvent:t,wrappedCallback:u,each:v,objectMerge:w,truncate:y,objectFrozen:x,hasKey:z,joinRegExp:A,urlencode:B,uuid4:D,htmlTreeAsString:E,htmlElementAsString:F,isSameException:I,isSameStacktrace:J,parseUrl:C,fill:K,safeJoin:L,serializeException:Q,serializeKeysForMessage:R,sanitize:S}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{9:9}],8:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}function e(){return"undefined"==typeof document||null==document.location?"":(document.location.origin||(document.location.origin=document.location.protocol+"//"+document.location.hostname+(document.location.port?":"+document.location.port:"")),document.location.origin)}var f=a(7),g={collectWindowErrors:!0,debug:!1},h="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},i=[].slice,j="?",k=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;g.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function e(a,b){var c=null;if(!b||g.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(i.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,h,i){var l=null,m=f.isErrorEvent(i)?i.error:i,n=f.isErrorEvent(a)?a.message:a;if(v)g.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&f.isError(m))l=g.computeStackTrace(m),e(l,!0);else{var p,r={url:b,line:c,column:h},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(k);p&&(s=p[1],n=p[2])}r.func=j,l={name:s,message:n,url:d(),stack:[r]},e(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=h.onerror,h.onerror=l,r=!0)}function n(){r&&(h.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,e.apply(null,[a,!1].concat(b))}function p(a,b){var c=i.call(arguments,1);if(v){if(u===a)return;o()}var d=g.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),g.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,f,g=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,h=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,i=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,k=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,l=/\((\S*)(?::(\d+))(?::(\d+))\)/,m=a.stack.split("\n"),n=[],o=(/^(.*) is undefined$/.exec(a.message),0),p=m.length;o eval")>-1;r&&(b=k.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==o||c[5]||"undefined"==typeof a.columnNumber||(n[0].column=a.columnNumber+1),f={url:c[3],func:c[1]||j,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}if(!f.func&&f.line&&(f.func=j),f.url&&"blob:"===f.url.substr(0,5)){var s=new XMLHttpRequest;if(s.open("GET",f.url,!1),s.send(null),200===s.status){var t=s.responseText||"";t=t.slice(-300);var u=t.match(/\/\/# sourceMappingURL=(.*)$/);if(u){var v=u[1];"~"===v.charAt(0)&&(v=e()+v.slice(1)),f.url=v.slice(0,-4)}}}n.push(f)}return n.length?{name:a.name,message:a.message,url:d(),stack:n}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=j),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e), +a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,e){for(var h,i,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==f&&o!==g.report){if(i={url:null,func:j,line:null,column:null},o.name?i.func=o.name:(h=k.exec(o.toString()))&&(i.func=h[1]),"undefined"==typeof i.func)try{i.func=h.input.substring(0,h.input.indexOf("{"))}catch(p){}m[""+o]?n=!0:m[""+o]=!0,l.push(i)}e&&l.splice(0,e);var q={name:a.name,message:a.message,url:d(),stack:l};return b(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),q}function f(b,e){var f=null;e=null==e?0:+e;try{if(f=a(b))return f}catch(h){if(g.debug)throw h}try{if(f=c(b,e+1))return f}catch(h){if(g.debug)throw h}return{name:b.name,message:b.message,url:d()}}return f.augmentStackTraceWithInitialElement=b,f.computeStackTraceFromStackProp=a,f}(),b.exports=g}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{7:7}],9:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}],10:[function(a,b,c){function d(a,b){var c=(65535&a)+(65535&b),d=(a>>16)+(b>>16)+(c>>16);return d<<16|65535&c}function e(a,b){return a<>>32-b}function f(a,b,c,f,g,h){return d(e(d(d(b,a),d(f,h)),g),c)}function g(a,b,c,d,e,g,h){return f(b&c|~b&d,a,b,e,g,h)}function h(a,b,c,d,e,g,h){return f(b&d|c&~d,a,b,e,g,h)}function i(a,b,c,d,e,g,h){return f(b^c^d,a,b,e,g,h)}function j(a,b,c,d,e,g,h){return f(c^(b|~d),a,b,e,g,h)}function k(a,b){a[b>>5]|=128<>>9<<4)+14]=b;var c,e,f,k,l,m=1732584193,n=-271733879,o=-1732584194,p=271733878;for(c=0;c>5]>>>b%32&255);return c}function m(a){var b,c=[];for(c[(a.length>>2)-1]=void 0,b=0;b>5]|=(255&a.charCodeAt(b/8))<16&&(e=k(e,8*a.length)),c=0;c<16;c+=1)f[c]=909522486^e[c],g[c]=1549556828^e[c];return d=k(f.concat(m(b)),512+8*b.length),l(k(g.concat(d),640))}function p(a){var b,c,d="0123456789abcdef",e="";for(c=0;c>>4&15)+d.charAt(15&b);return e}function q(a){return unescape(encodeURIComponent(a))}function r(a){return n(q(a))}function s(a){return p(r(a))}function t(a,b){return o(q(a),q(b))}function u(a,b){return p(t(a,b))}function v(a,b,c){return b?c?t(b,a):u(b,a):c?r(a):s(a)}b.exports=v},{}]},{},[6,1,2])(6)}); +//# sourceMappingURL=raven.min.js.map \ No newline at end of file diff --git a/packages/raven-js/dist/angular,require/raven.min.js.map b/packages/raven-js/dist/angular,require/raven.min.js.map new file mode 100644 index 000000000000..bd843a14e729 --- /dev/null +++ b/packages/raven-js/dist/angular,require/raven.min.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","angularPlugin","angular","RavenProvider","$get","$window","ExceptionHandlerProvider","$provide","decorator","exceptionHandler","R","$delegate","ex","cause","captureException","extra","moduleName","provider","config","setDataCallback","wrappedCallback","data","_normalizeData","angularPattern","exception","values","matches","exec","value","type","message","angularDocs","substr","addPlugin","6","7","2","requirePlugin","wrap","deep","3","RavenConfigError","name","prototype","constructor","4","utils","wrapMethod","console","level","callback","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","msg","safeJoin","logger","Function","apply","5","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","sanitizeKeys","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isErrorEvent","isDOMError","isDOMException","isError","isObject","isPlainObject","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","sanitize","wrapConsoleMethod","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","dsn","options","_logDebug","globalOptions","key","setDSN","push","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","toString","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","context","func","undefined","_before","wrapped","_ignoreNextOnError","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","U","event","reason","unhandledPromiseRejection","C","_promiseRejectionHandler","bind","addEventListener","Q","removeEventListener","trimHeadFrames","error","captureMessage","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","V","currentOptions","exKeys","Object","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","M","setTimeout","_","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","aa","evtName","_keypressTimeout","target","category","ca","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","da","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","D","_originalFunctionToString","E","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","F","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","S","builtin","T","G","installer","concat","H","str","m","allowSecretKey","K","port","B","W","stackInfo","_triggerEvent","_processException","lineno","Y","frame","_normalizeFrame","in_app","ha","stackInfoUrl","normalized","filename","line","colno","column","function","ga","prefixedMessage","transaction","ia","request","Referer","breadcrumbs","_trimBreadcrumbs","ja","urlProp","urlProps","ka","httpData","userAgent","User-Agent","referrer","z","_backoffDuration","_backoffStart","na","oa","current","last","pa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Z","baseData","project","platform","_getHttpData","serverName","server_name","_sanitizeData","forEach","random","_sendProcessedPayload","qa","sa","ra","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","ta","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","onerror","open","setRequestHeader","send","ua","hash","evaluated","A","$","setUser","setReleaseContext","10","8","9","RavenConstructor","_Raven","noConflict","Client","what","supportsErrorEvent","ErrorEvent","supportsDOMError","DOMError","supportsDOMException","DOMException","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","sanitizeMask","safeInput","o_O","getLocationHref","getLocationOrigin","origin","hostname","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","responseText","sourceMaps","sourceMapAddress","charAt","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","y","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","string","raw"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file diff --git a/packages/raven-js/dist/angular,vue/raven.js b/packages/raven-js/dist/angular,vue/raven.js new file mode 100644 index 000000000000..3c15cf50d765 --- /dev/null +++ b/packages/raven-js/dist/angular,vue/raven.js @@ -0,0 +1,4137 @@ +/*! Raven.js 3.25.2 (30b6d4e) | github.com/getsentry/raven-js */ + +/* + * Includes TraceKit + * https://github.com/getsentry/TraceKit + * + * Copyright 2018 Matt Robenolt and other contributors + * Released under the BSD license + * https://github.com/getsentry/raven-js/blob/master/LICENSE + * + */ + +(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.Raven = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o' : 'anonymous component') + + (vm._isVue && vm.$options.__file ? ' at ' + vm.$options.__file : '') + ); +} + +function vuePlugin(Raven, Vue) { + Vue = Vue || window.Vue; + + // quit if Vue isn't on the page + if (!Vue || !Vue.config) return; + + var _oldOnError = Vue.config.errorHandler; + Vue.config.errorHandler = function VueErrorHandler(error, vm, info) { + var metaData = {}; + + // vm and lifecycleHook are not always available + if (Object.prototype.toString.call(vm) === '[object Object]') { + metaData.componentName = formatComponentName(vm); + metaData.propsData = vm.$options.propsData; + } + + if (typeof info !== 'undefined') { + metaData.lifecycleHook = info; + } + + Raven.captureException(error, { + extra: metaData + }); + + if (typeof _oldOnError === 'function') { + _oldOnError.call(this, error, vm, info); + } + }; +} + +module.exports = vuePlugin; + +_dereq_(6).addPlugin(module.exports); +},{"6":6}],3:[function(_dereq_,module,exports){ +function RavenConfigError(message) { + this.name = 'RavenConfigError'; + this.message = message; +} +RavenConfigError.prototype = new Error(); +RavenConfigError.prototype.constructor = RavenConfigError; + +module.exports = RavenConfigError; + +},{}],4:[function(_dereq_,module,exports){ +var utils = _dereq_(7); + +var wrapMethod = function(console, level, callback) { + var originalConsoleLevel = console[level]; + var originalConsole = console; + + if (!(level in console)) { + return; + } + + var sentryLevel = level === 'warn' ? 'warning' : level; + + console[level] = function() { + var args = [].slice.call(arguments); + + var msg = utils.safeJoin(args, ' '); + var data = {level: sentryLevel, logger: 'console', extra: {arguments: args}}; + + if (level === 'assert') { + if (args[0] === false) { + // Default browsers message + msg = + 'Assertion failed: ' + (utils.safeJoin(args.slice(1), ' ') || 'console.assert'); + data.extra.arguments = args.slice(1); + callback && callback(msg, data); + } + } else { + callback && callback(msg, data); + } + + // this fails for some browsers. :( + if (originalConsoleLevel) { + // IE9 doesn't allow calling apply on console functions directly + // See: https://stackoverflow.com/questions/5472938/does-ie9-support-console-log-and-is-it-a-real-function#answer-5473193 + Function.prototype.apply.call(originalConsoleLevel, originalConsole, args); + } + }; +}; + +module.exports = { + wrapMethod: wrapMethod +}; + +},{"7":7}],5:[function(_dereq_,module,exports){ +(function (global){ +/*global XDomainRequest:false */ + +var TraceKit = _dereq_(8); +var stringify = _dereq_(9); +var md5 = _dereq_(10); +var RavenConfigError = _dereq_(3); + +var utils = _dereq_(7); +var isErrorEvent = utils.isErrorEvent; +var isDOMError = utils.isDOMError; +var isDOMException = utils.isDOMException; +var isError = utils.isError; +var isObject = utils.isObject; +var isPlainObject = utils.isPlainObject; +var isUndefined = utils.isUndefined; +var isFunction = utils.isFunction; +var isString = utils.isString; +var isArray = utils.isArray; +var isEmptyObject = utils.isEmptyObject; +var each = utils.each; +var objectMerge = utils.objectMerge; +var truncate = utils.truncate; +var objectFrozen = utils.objectFrozen; +var hasKey = utils.hasKey; +var joinRegExp = utils.joinRegExp; +var urlencode = utils.urlencode; +var uuid4 = utils.uuid4; +var htmlTreeAsString = utils.htmlTreeAsString; +var isSameException = utils.isSameException; +var isSameStacktrace = utils.isSameStacktrace; +var parseUrl = utils.parseUrl; +var fill = utils.fill; +var supportsFetch = utils.supportsFetch; +var supportsReferrerPolicy = utils.supportsReferrerPolicy; +var serializeKeysForMessage = utils.serializeKeysForMessage; +var serializeException = utils.serializeException; +var sanitize = utils.sanitize; + +var wrapConsoleMethod = _dereq_(4).wrapMethod; + +var dsnKeys = 'source protocol user pass host port path'.split(' '), + dsnPattern = /^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/; + +function now() { + return +new Date(); +} + +// This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) +var _window = + typeof window !== 'undefined' + ? window + : typeof global !== 'undefined' + ? global + : typeof self !== 'undefined' + ? self + : {}; +var _document = _window.document; +var _navigator = _window.navigator; + +function keepOriginalCallback(original, callback) { + return isFunction(callback) + ? function(data) { + return callback(data, original); + } + : callback; +} + +// First, check for JSON support +// If there is no JSON, we no-op the core features of Raven +// since JSON is required to encode the payload +function Raven() { + this._hasJSON = !!(typeof JSON === 'object' && JSON.stringify); + // Raven can run in contexts where there's no document (react-native) + this._hasDocument = !isUndefined(_document); + this._hasNavigator = !isUndefined(_navigator); + this._lastCapturedException = null; + this._lastData = null; + this._lastEventId = null; + this._globalServer = null; + this._globalKey = null; + this._globalProject = null; + this._globalContext = {}; + this._globalOptions = { + // SENTRY_RELEASE can be injected by https://github.com/getsentry/sentry-webpack-plugin + release: _window.SENTRY_RELEASE && _window.SENTRY_RELEASE.id, + logger: 'javascript', + ignoreErrors: [], + ignoreUrls: [], + whitelistUrls: [], + includePaths: [], + headers: null, + collectWindowErrors: true, + captureUnhandledRejections: true, + maxMessageLength: 0, + // By default, truncates URL values to 250 chars + maxUrlLength: 250, + stackTraceLimit: 50, + autoBreadcrumbs: true, + instrument: true, + sampleRate: 1, + sanitizeKeys: [] + }; + this._fetchDefaults = { + method: 'POST', + keepalive: true, + // Despite all stars in the sky saying that Edge supports old draft syntax, aka 'never', 'always', 'origin' and 'default + // https://caniuse.com/#feat=referrer-policy + // It doesn't. And it throw exception instead of ignoring this parameter... + // REF: https://github.com/getsentry/raven-js/issues/1233 + referrerPolicy: supportsReferrerPolicy() ? 'origin' : '' + }; + this._ignoreOnError = 0; + this._isRavenInstalled = false; + this._originalErrorStackTraceLimit = Error.stackTraceLimit; + // capture references to window.console *and* all its methods first + // before the console plugin has a chance to monkey patch + this._originalConsole = _window.console || {}; + this._originalConsoleMethods = {}; + this._plugins = []; + this._startTime = now(); + this._wrappedBuiltIns = []; + this._breadcrumbs = []; + this._lastCapturedEvent = null; + this._keypressTimeout; + this._location = _window.location; + this._lastHref = this._location && this._location.href; + this._resetBackoff(); + + // eslint-disable-next-line guard-for-in + for (var method in this._originalConsole) { + this._originalConsoleMethods[method] = this._originalConsole[method]; + } +} + +/* + * The core Raven singleton + * + * @this {Raven} + */ + +Raven.prototype = { + // Hardcode version string so that raven source can be loaded directly via + // webpack (using a build step causes webpack #1617). Grunt verifies that + // this value matches package.json during build. + // See: https://github.com/getsentry/raven-js/issues/465 + VERSION: '3.25.2', + + debug: false, + + TraceKit: TraceKit, // alias to TraceKit + + /* + * Configure Raven with a DSN and extra options + * + * @param {string} dsn The public Sentry DSN + * @param {object} options Set of global options [optional] + * @return {Raven} + */ + config: function(dsn, options) { + var self = this; + + if (self._globalServer) { + this._logDebug('error', 'Error: Raven has already been configured'); + return self; + } + if (!dsn) return self; + + var globalOptions = self._globalOptions; + + // merge in options + if (options) { + each(options, function(key, value) { + // tags and extra are special and need to be put into context + if (key === 'tags' || key === 'extra' || key === 'user') { + self._globalContext[key] = value; + } else { + globalOptions[key] = value; + } + }); + } + + self.setDSN(dsn); + + // "Script error." is hard coded into browsers for errors that it can't read. + // this is the result of a script being pulled in from an external domain and CORS. + globalOptions.ignoreErrors.push(/^Script error\.?$/); + globalOptions.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/); + + // join regexp rules into one big rule + globalOptions.ignoreErrors = joinRegExp(globalOptions.ignoreErrors); + globalOptions.ignoreUrls = globalOptions.ignoreUrls.length + ? joinRegExp(globalOptions.ignoreUrls) + : false; + globalOptions.whitelistUrls = globalOptions.whitelistUrls.length + ? joinRegExp(globalOptions.whitelistUrls) + : false; + globalOptions.includePaths = joinRegExp(globalOptions.includePaths); + globalOptions.maxBreadcrumbs = Math.max( + 0, + Math.min(globalOptions.maxBreadcrumbs || 100, 100) + ); // default and hard limit is 100 + + var autoBreadcrumbDefaults = { + xhr: true, + console: true, + dom: true, + location: true, + sentry: true + }; + + var autoBreadcrumbs = globalOptions.autoBreadcrumbs; + if ({}.toString.call(autoBreadcrumbs) === '[object Object]') { + autoBreadcrumbs = objectMerge(autoBreadcrumbDefaults, autoBreadcrumbs); + } else if (autoBreadcrumbs !== false) { + autoBreadcrumbs = autoBreadcrumbDefaults; + } + globalOptions.autoBreadcrumbs = autoBreadcrumbs; + + var instrumentDefaults = { + tryCatch: true + }; + + var instrument = globalOptions.instrument; + if ({}.toString.call(instrument) === '[object Object]') { + instrument = objectMerge(instrumentDefaults, instrument); + } else if (instrument !== false) { + instrument = instrumentDefaults; + } + globalOptions.instrument = instrument; + + TraceKit.collectWindowErrors = !!globalOptions.collectWindowErrors; + + // return for chaining + return self; + }, + + /* + * Installs a global window.onerror error handler + * to capture and report uncaught exceptions. + * At this point, install() is required to be called due + * to the way TraceKit is set up. + * + * @return {Raven} + */ + install: function() { + var self = this; + if (self.isSetup() && !self._isRavenInstalled) { + TraceKit.report.subscribe(function() { + self._handleOnErrorStackInfo.apply(self, arguments); + }); + + if (self._globalOptions.captureUnhandledRejections) { + self._attachPromiseRejectionHandler(); + } + + self._patchFunctionToString(); + + if (self._globalOptions.instrument && self._globalOptions.instrument.tryCatch) { + self._instrumentTryCatch(); + } + + if (self._globalOptions.autoBreadcrumbs) self._instrumentBreadcrumbs(); + + // Install all of the plugins + self._drainPlugins(); + + self._isRavenInstalled = true; + } + + Error.stackTraceLimit = self._globalOptions.stackTraceLimit; + return this; + }, + + /* + * Set the DSN (can be called multiple time unlike config) + * + * @param {string} dsn The public Sentry DSN + */ + setDSN: function(dsn) { + var self = this, + uri = self._parseDSN(dsn), + lastSlash = uri.path.lastIndexOf('/'), + path = uri.path.substr(1, lastSlash); + + self._dsn = dsn; + self._globalKey = uri.user; + self._globalSecret = uri.pass && uri.pass.substr(1); + self._globalProject = uri.path.substr(lastSlash + 1); + + self._globalServer = self._getGlobalServer(uri); + + self._globalEndpoint = + self._globalServer + '/' + path + 'api/' + self._globalProject + '/store/'; + + // Reset backoff state since we may be pointing at a + // new project/server + this._resetBackoff(); + }, + + /* + * Wrap code within a context so Raven can capture errors + * reliably across domains that is executed immediately. + * + * @param {object} options A specific set of options for this context [optional] + * @param {function} func The callback to be immediately executed within the context + * @param {array} args An array of arguments to be called with the callback [optional] + */ + context: function(options, func, args) { + if (isFunction(options)) { + args = func || []; + func = options; + options = undefined; + } + + return this.wrap(options, func).apply(this, args); + }, + + /* + * Wrap code within a context and returns back a new function to be executed + * + * @param {object} options A specific set of options for this context [optional] + * @param {function} func The function to be wrapped in a new context + * @param {function} func A function to call before the try/catch wrapper [optional, private] + * @return {function} The newly wrapped functions with a context + */ + wrap: function(options, func, _before) { + var self = this; + // 1 argument has been passed, and it's not a function + // so just return it + if (isUndefined(func) && !isFunction(options)) { + return options; + } + + // options is optional + if (isFunction(options)) { + func = options; + options = undefined; + } + + // At this point, we've passed along 2 arguments, and the second one + // is not a function either, so we'll just return the second argument. + if (!isFunction(func)) { + return func; + } + + // We don't wanna wrap it twice! + try { + if (func.__raven__) { + return func; + } + + // If this has already been wrapped in the past, return that + if (func.__raven_wrapper__) { + return func.__raven_wrapper__; + } + } catch (e) { + // Just accessing custom props in some Selenium environments + // can cause a "Permission denied" exception (see raven-js#495). + // Bail on wrapping and return the function as-is (defers to window.onerror). + return func; + } + + function wrapped() { + var args = [], + i = arguments.length, + deep = !options || (options && options.deep !== false); + + if (_before && isFunction(_before)) { + _before.apply(this, arguments); + } + + // Recursively wrap all of a function's arguments that are + // functions themselves. + while (i--) args[i] = deep ? self.wrap(options, arguments[i]) : arguments[i]; + + try { + // Attempt to invoke user-land function + // NOTE: If you are a Sentry user, and you are seeing this stack frame, it + // means Raven caught an error invoking your application code. This is + // expected behavior and NOT indicative of a bug with Raven.js. + return func.apply(this, args); + } catch (e) { + self._ignoreNextOnError(); + self.captureException(e, options); + throw e; + } + } + + // copy over properties of the old function + for (var property in func) { + if (hasKey(func, property)) { + wrapped[property] = func[property]; + } + } + wrapped.prototype = func.prototype; + + func.__raven_wrapper__ = wrapped; + // Signal that this function has been wrapped/filled already + // for both debugging and to prevent it to being wrapped/filled twice + wrapped.__raven__ = true; + wrapped.__orig__ = func; + + return wrapped; + }, + + /** + * Uninstalls the global error handler. + * + * @return {Raven} + */ + uninstall: function() { + TraceKit.report.uninstall(); + + this._detachPromiseRejectionHandler(); + this._unpatchFunctionToString(); + this._restoreBuiltIns(); + this._restoreConsole(); + + Error.stackTraceLimit = this._originalErrorStackTraceLimit; + this._isRavenInstalled = false; + + return this; + }, + + /** + * Callback used for `unhandledrejection` event + * + * @param {PromiseRejectionEvent} event An object containing + * promise: the Promise that was rejected + * reason: the value with which the Promise was rejected + * @return void + */ + _promiseRejectionHandler: function(event) { + this._logDebug('debug', 'Raven caught unhandled promise rejection:', event); + this.captureException(event.reason, { + extra: { + unhandledPromiseRejection: true + } + }); + }, + + /** + * Installs the global promise rejection handler. + * + * @return {raven} + */ + _attachPromiseRejectionHandler: function() { + this._promiseRejectionHandler = this._promiseRejectionHandler.bind(this); + _window.addEventListener && + _window.addEventListener('unhandledrejection', this._promiseRejectionHandler); + return this; + }, + + /** + * Uninstalls the global promise rejection handler. + * + * @return {raven} + */ + _detachPromiseRejectionHandler: function() { + _window.removeEventListener && + _window.removeEventListener('unhandledrejection', this._promiseRejectionHandler); + return this; + }, + + /** + * Manually capture an exception and send it over to Sentry + * + * @param {error} ex An exception to be logged + * @param {object} options A specific set of options for this error [optional] + * @return {Raven} + */ + captureException: function(ex, options) { + options = objectMerge({trimHeadFrames: 0}, options ? options : {}); + + if (isErrorEvent(ex) && ex.error) { + // If it is an ErrorEvent with `error` property, extract it to get actual Error + ex = ex.error; + } else if (isDOMError(ex) || isDOMException(ex)) { + // If it is a DOMError or DOMException (which are legacy APIs, but still supported in some browsers) + // then we just extract the name and message, as they don't provide anything else + // https://developer.mozilla.org/en-US/docs/Web/API/DOMError + // https://developer.mozilla.org/en-US/docs/Web/API/DOMException + var name = ex.name || (isDOMError(ex) ? 'DOMError' : 'DOMException'); + var message = ex.message ? name + ': ' + ex.message : name; + + return this.captureMessage( + message, + objectMerge(options, { + // neither DOMError or DOMException provide stack trace and we most likely wont get it this way as well + // but it's barely any overhead so we may at least try + stacktrace: true, + trimHeadFrames: options.trimHeadFrames + 1 + }) + ); + } else if (isError(ex)) { + // we have a real Error object + ex = ex; + } else if (isPlainObject(ex)) { + // If it is plain Object, serialize it manually and extract options + // This will allow us to group events based on top-level keys + // which is much better than creating new group when any key/value change + options = this._getCaptureExceptionOptionsFromPlainObject(options, ex); + ex = new Error(options.message); + } else { + // If none of previous checks were valid, then it means that + // it's not a DOMError/DOMException + // it's not a plain Object + // it's not a valid ErrorEvent (one with an error property) + // it's not an Error + // So bail out and capture it as a simple message: + return this.captureMessage( + ex, + objectMerge(options, { + stacktrace: true, // if we fall back to captureMessage, default to attempting a new trace + trimHeadFrames: options.trimHeadFrames + 1 + }) + ); + } + + // Store the raw exception object for potential debugging and introspection + this._lastCapturedException = ex; + + // TraceKit.report will re-raise any exception passed to it, + // which means you have to wrap it in try/catch. Instead, we + // can wrap it here and only re-raise if TraceKit.report + // raises an exception different from the one we asked to + // report on. + try { + var stack = TraceKit.computeStackTrace(ex); + this._handleStackInfo(stack, options); + } catch (ex1) { + if (ex !== ex1) { + throw ex1; + } + } + + return this; + }, + + _getCaptureExceptionOptionsFromPlainObject: function(currentOptions, ex) { + var exKeys = Object.keys(ex).sort(); + var options = objectMerge(currentOptions, { + message: + 'Non-Error exception captured with keys: ' + serializeKeysForMessage(exKeys), + fingerprint: [md5(exKeys)], + extra: currentOptions.extra || {} + }); + options.extra.__serialized__ = serializeException(ex); + + return options; + }, + + /* + * Manually send a message to Sentry + * + * @param {string} msg A plain message to be captured in Sentry + * @param {object} options A specific set of options for this message [optional] + * @return {Raven} + */ + captureMessage: function(msg, options) { + // config() automagically converts ignoreErrors from a list to a RegExp so we need to test for an + // early call; we'll error on the side of logging anything called before configuration since it's + // probably something you should see: + if ( + !!this._globalOptions.ignoreErrors.test && + this._globalOptions.ignoreErrors.test(msg) + ) { + return; + } + + options = options || {}; + msg = msg + ''; // Make sure it's actually a string + + var data = objectMerge( + { + message: msg + }, + options + ); + + var ex; + // Generate a "synthetic" stack trace from this point. + // NOTE: If you are a Sentry user, and you are seeing this stack frame, it is NOT indicative + // of a bug with Raven.js. Sentry generates synthetic traces either by configuration, + // or if it catches a thrown object without a "stack" property. + try { + throw new Error(msg); + } catch (ex1) { + ex = ex1; + } + + // null exception name so `Error` isn't prefixed to msg + ex.name = null; + var stack = TraceKit.computeStackTrace(ex); + + // stack[0] is `throw new Error(msg)` call itself, we are interested in the frame that was just before that, stack[1] + var initialCall = isArray(stack.stack) && stack.stack[1]; + + // if stack[1] is `Raven.captureException`, it means that someone passed a string to it and we redirected that call + // to be handled by `captureMessage`, thus `initialCall` is the 3rd one, not 2nd + // initialCall => captureException(string) => captureMessage(string) + if (initialCall && initialCall.func === 'Raven.captureException') { + initialCall = stack.stack[2]; + } + + var fileurl = (initialCall && initialCall.url) || ''; + + if ( + !!this._globalOptions.ignoreUrls.test && + this._globalOptions.ignoreUrls.test(fileurl) + ) { + return; + } + + if ( + !!this._globalOptions.whitelistUrls.test && + !this._globalOptions.whitelistUrls.test(fileurl) + ) { + return; + } + + if (this._globalOptions.stacktrace || (options && options.stacktrace)) { + // fingerprint on msg, not stack trace (legacy behavior, could be revisited) + data.fingerprint = data.fingerprint == null ? msg : data.fingerprint; + + options = objectMerge( + { + trimHeadFrames: 0 + }, + options + ); + // Since we know this is a synthetic trace, the top frame (this function call) + // MUST be from Raven.js, so mark it for trimming + // We add to the trim counter so that callers can choose to trim extra frames, such + // as utility functions. + options.trimHeadFrames += 1; + + var frames = this._prepareFrames(stack, options); + data.stacktrace = { + // Sentry expects frames oldest to newest + frames: frames.reverse() + }; + } + + // Make sure that fingerprint is always wrapped in an array + if (data.fingerprint) { + data.fingerprint = isArray(data.fingerprint) + ? data.fingerprint + : [data.fingerprint]; + } + + // Fire away! + this._send(data); + + return this; + }, + + captureBreadcrumb: function(obj) { + var crumb = objectMerge( + { + timestamp: now() / 1000 + }, + obj + ); + + if (isFunction(this._globalOptions.breadcrumbCallback)) { + var result = this._globalOptions.breadcrumbCallback(crumb); + + if (isObject(result) && !isEmptyObject(result)) { + crumb = result; + } else if (result === false) { + return this; + } + } + + this._breadcrumbs.push(crumb); + if (this._breadcrumbs.length > this._globalOptions.maxBreadcrumbs) { + this._breadcrumbs.shift(); + } + return this; + }, + + addPlugin: function(plugin /*arg1, arg2, ... argN*/) { + var pluginArgs = [].slice.call(arguments, 1); + + this._plugins.push([plugin, pluginArgs]); + if (this._isRavenInstalled) { + this._drainPlugins(); + } + + return this; + }, + + /* + * Set/clear a user to be sent along with the payload. + * + * @param {object} user An object representing user data [optional] + * @return {Raven} + */ + setUserContext: function(user) { + // Intentionally do not merge here since that's an unexpected behavior. + this._globalContext.user = user; + + return this; + }, + + /* + * Merge extra attributes to be sent along with the payload. + * + * @param {object} extra An object representing extra data [optional] + * @return {Raven} + */ + setExtraContext: function(extra) { + this._mergeContext('extra', extra); + + return this; + }, + + /* + * Merge tags to be sent along with the payload. + * + * @param {object} tags An object representing tags [optional] + * @return {Raven} + */ + setTagsContext: function(tags) { + this._mergeContext('tags', tags); + + return this; + }, + + /* + * Clear all of the context. + * + * @return {Raven} + */ + clearContext: function() { + this._globalContext = {}; + + return this; + }, + + /* + * Get a copy of the current context. This cannot be mutated. + * + * @return {object} copy of context + */ + getContext: function() { + // lol javascript + return JSON.parse(stringify(this._globalContext)); + }, + + /* + * Set environment of application + * + * @param {string} environment Typically something like 'production'. + * @return {Raven} + */ + setEnvironment: function(environment) { + this._globalOptions.environment = environment; + + return this; + }, + + /* + * Set release version of application + * + * @param {string} release Typically something like a git SHA to identify version + * @return {Raven} + */ + setRelease: function(release) { + this._globalOptions.release = release; + + return this; + }, + + /* + * Set the dataCallback option + * + * @param {function} callback The callback to run which allows the + * data blob to be mutated before sending + * @return {Raven} + */ + setDataCallback: function(callback) { + var original = this._globalOptions.dataCallback; + this._globalOptions.dataCallback = keepOriginalCallback(original, callback); + return this; + }, + + /* + * Set the breadcrumbCallback option + * + * @param {function} callback The callback to run which allows filtering + * or mutating breadcrumbs + * @return {Raven} + */ + setBreadcrumbCallback: function(callback) { + var original = this._globalOptions.breadcrumbCallback; + this._globalOptions.breadcrumbCallback = keepOriginalCallback(original, callback); + return this; + }, + + /* + * Set the shouldSendCallback option + * + * @param {function} callback The callback to run which allows + * introspecting the blob before sending + * @return {Raven} + */ + setShouldSendCallback: function(callback) { + var original = this._globalOptions.shouldSendCallback; + this._globalOptions.shouldSendCallback = keepOriginalCallback(original, callback); + return this; + }, + + /** + * Override the default HTTP transport mechanism that transmits data + * to the Sentry server. + * + * @param {function} transport Function invoked instead of the default + * `makeRequest` handler. + * + * @return {Raven} + */ + setTransport: function(transport) { + this._globalOptions.transport = transport; + + return this; + }, + + /* + * Get the latest raw exception that was captured by Raven. + * + * @return {error} + */ + lastException: function() { + return this._lastCapturedException; + }, + + /* + * Get the last event id + * + * @return {string} + */ + lastEventId: function() { + return this._lastEventId; + }, + + /* + * Determine if Raven is setup and ready to go. + * + * @return {boolean} + */ + isSetup: function() { + if (!this._hasJSON) return false; // needs JSON support + if (!this._globalServer) { + if (!this.ravenNotConfiguredError) { + this.ravenNotConfiguredError = true; + this._logDebug('error', 'Error: Raven has not been configured.'); + } + return false; + } + return true; + }, + + afterLoad: function() { + // TODO: remove window dependence? + + // Attempt to initialize Raven on load + var RavenConfig = _window.RavenConfig; + if (RavenConfig) { + this.config(RavenConfig.dsn, RavenConfig.config).install(); + } + }, + + showReportDialog: function(options) { + if ( + !_document // doesn't work without a document (React native) + ) + return; + + options = options || {}; + + var lastEventId = options.eventId || this.lastEventId(); + if (!lastEventId) { + throw new RavenConfigError('Missing eventId'); + } + + var dsn = options.dsn || this._dsn; + if (!dsn) { + throw new RavenConfigError('Missing DSN'); + } + + var encode = encodeURIComponent; + var qs = ''; + qs += '?eventId=' + encode(lastEventId); + qs += '&dsn=' + encode(dsn); + + var user = options.user || this._globalContext.user; + if (user) { + if (user.name) qs += '&name=' + encode(user.name); + if (user.email) qs += '&email=' + encode(user.email); + } + + var globalServer = this._getGlobalServer(this._parseDSN(dsn)); + + var script = _document.createElement('script'); + script.async = true; + script.src = globalServer + '/api/embed/error-page/' + qs; + (_document.head || _document.body).appendChild(script); + }, + + /**** Private functions ****/ + _ignoreNextOnError: function() { + var self = this; + this._ignoreOnError += 1; + setTimeout(function() { + // onerror should trigger before setTimeout + self._ignoreOnError -= 1; + }); + }, + + _triggerEvent: function(eventType, options) { + // NOTE: `event` is a native browser thing, so let's avoid conflicting wiht it + var evt, key; + + if (!this._hasDocument) return; + + options = options || {}; + + eventType = 'raven' + eventType.substr(0, 1).toUpperCase() + eventType.substr(1); + + if (_document.createEvent) { + evt = _document.createEvent('HTMLEvents'); + evt.initEvent(eventType, true, true); + } else { + evt = _document.createEventObject(); + evt.eventType = eventType; + } + + for (key in options) + if (hasKey(options, key)) { + evt[key] = options[key]; + } + + if (_document.createEvent) { + // IE9 if standards + _document.dispatchEvent(evt); + } else { + // IE8 regardless of Quirks or Standards + // IE9 if quirks + try { + _document.fireEvent('on' + evt.eventType.toLowerCase(), evt); + } catch (e) { + // Do nothing + } + } + }, + + /** + * Wraps addEventListener to capture UI breadcrumbs + * @param evtName the event name (e.g. "click") + * @returns {Function} + * @private + */ + _breadcrumbEventHandler: function(evtName) { + var self = this; + return function(evt) { + // reset keypress timeout; e.g. triggering a 'click' after + // a 'keypress' will reset the keypress debounce so that a new + // set of keypresses can be recorded + self._keypressTimeout = null; + + // It's possible this handler might trigger multiple times for the same + // event (e.g. event propagation through node ancestors). Ignore if we've + // already captured the event. + if (self._lastCapturedEvent === evt) return; + + self._lastCapturedEvent = evt; + + // try/catch both: + // - accessing evt.target (see getsentry/raven-js#838, #768) + // - `htmlTreeAsString` because it's complex, and just accessing the DOM incorrectly + // can throw an exception in some circumstances. + var target; + try { + target = htmlTreeAsString(evt.target); + } catch (e) { + target = ''; + } + + self.captureBreadcrumb({ + category: 'ui.' + evtName, // e.g. ui.click, ui.input + message: target + }); + }; + }, + + /** + * Wraps addEventListener to capture keypress UI events + * @returns {Function} + * @private + */ + _keypressEventHandler: function() { + var self = this, + debounceDuration = 1000; // milliseconds + + // TODO: if somehow user switches keypress target before + // debounce timeout is triggered, we will only capture + // a single breadcrumb from the FIRST target (acceptable?) + return function(evt) { + var target; + try { + target = evt.target; + } catch (e) { + // just accessing event properties can throw an exception in some rare circumstances + // see: https://github.com/getsentry/raven-js/issues/838 + return; + } + var tagName = target && target.tagName; + + // only consider keypress events on actual input elements + // this will disregard keypresses targeting body (e.g. tabbing + // through elements, hotkeys, etc) + if ( + !tagName || + (tagName !== 'INPUT' && tagName !== 'TEXTAREA' && !target.isContentEditable) + ) + return; + + // record first keypress in a series, but ignore subsequent + // keypresses until debounce clears + var timeout = self._keypressTimeout; + if (!timeout) { + self._breadcrumbEventHandler('input')(evt); + } + clearTimeout(timeout); + self._keypressTimeout = setTimeout(function() { + self._keypressTimeout = null; + }, debounceDuration); + }; + }, + + /** + * Captures a breadcrumb of type "navigation", normalizing input URLs + * @param to the originating URL + * @param from the target URL + * @private + */ + _captureUrlChange: function(from, to) { + var parsedLoc = parseUrl(this._location.href); + var parsedTo = parseUrl(to); + var parsedFrom = parseUrl(from); + + // because onpopstate only tells you the "new" (to) value of location.href, and + // not the previous (from) value, we need to track the value of the current URL + // state ourselves + this._lastHref = to; + + // Use only the path component of the URL if the URL matches the current + // document (almost all the time when using pushState) + if (parsedLoc.protocol === parsedTo.protocol && parsedLoc.host === parsedTo.host) + to = parsedTo.relative; + if (parsedLoc.protocol === parsedFrom.protocol && parsedLoc.host === parsedFrom.host) + from = parsedFrom.relative; + + this.captureBreadcrumb({ + category: 'navigation', + data: { + to: to, + from: from + } + }); + }, + + _patchFunctionToString: function() { + var self = this; + self._originalFunctionToString = Function.prototype.toString; + // eslint-disable-next-line no-extend-native + Function.prototype.toString = function() { + if (typeof this === 'function' && this.__raven__) { + return self._originalFunctionToString.apply(this.__orig__, arguments); + } + return self._originalFunctionToString.apply(this, arguments); + }; + }, + + _unpatchFunctionToString: function() { + if (this._originalFunctionToString) { + // eslint-disable-next-line no-extend-native + Function.prototype.toString = this._originalFunctionToString; + } + }, + + /** + * Wrap timer functions and event targets to catch errors and provide + * better metadata. + */ + _instrumentTryCatch: function() { + var self = this; + + var wrappedBuiltIns = self._wrappedBuiltIns; + + function wrapTimeFn(orig) { + return function(fn, t) { + // preserve arity + // Make a copy of the arguments to prevent deoptimization + // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments + var args = new Array(arguments.length); + for (var i = 0; i < args.length; ++i) { + args[i] = arguments[i]; + } + var originalCallback = args[0]; + if (isFunction(originalCallback)) { + args[0] = self.wrap(originalCallback); + } + + // IE < 9 doesn't support .call/.apply on setInterval/setTimeout, but it + // also supports only two arguments and doesn't care what this is, so we + // can just call the original function directly. + if (orig.apply) { + return orig.apply(this, args); + } else { + return orig(args[0], args[1]); + } + }; + } + + var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; + + function wrapEventTarget(global) { + var proto = _window[global] && _window[global].prototype; + if (proto && proto.hasOwnProperty && proto.hasOwnProperty('addEventListener')) { + fill( + proto, + 'addEventListener', + function(orig) { + return function(evtName, fn, capture, secure) { + // preserve arity + try { + if (fn && fn.handleEvent) { + fn.handleEvent = self.wrap(fn.handleEvent); + } + } catch (err) { + // can sometimes get 'Permission denied to access property "handle Event' + } + + // More breadcrumb DOM capture ... done here and not in `_instrumentBreadcrumbs` + // so that we don't have more than one wrapper function + var before, clickHandler, keypressHandler; + + if ( + autoBreadcrumbs && + autoBreadcrumbs.dom && + (global === 'EventTarget' || global === 'Node') + ) { + // NOTE: generating multiple handlers per addEventListener invocation, should + // revisit and verify we can just use one (almost certainly) + clickHandler = self._breadcrumbEventHandler('click'); + keypressHandler = self._keypressEventHandler(); + before = function(evt) { + // need to intercept every DOM event in `before` argument, in case that + // same wrapped method is re-used for different events (e.g. mousemove THEN click) + // see #724 + if (!evt) return; + + var eventType; + try { + eventType = evt.type; + } catch (e) { + // just accessing event properties can throw an exception in some rare circumstances + // see: https://github.com/getsentry/raven-js/issues/838 + return; + } + if (eventType === 'click') return clickHandler(evt); + else if (eventType === 'keypress') return keypressHandler(evt); + }; + } + return orig.call( + this, + evtName, + self.wrap(fn, undefined, before), + capture, + secure + ); + }; + }, + wrappedBuiltIns + ); + fill( + proto, + 'removeEventListener', + function(orig) { + return function(evt, fn, capture, secure) { + try { + fn = fn && (fn.__raven_wrapper__ ? fn.__raven_wrapper__ : fn); + } catch (e) { + // ignore, accessing __raven_wrapper__ will throw in some Selenium environments + } + return orig.call(this, evt, fn, capture, secure); + }; + }, + wrappedBuiltIns + ); + } + } + + fill(_window, 'setTimeout', wrapTimeFn, wrappedBuiltIns); + fill(_window, 'setInterval', wrapTimeFn, wrappedBuiltIns); + if (_window.requestAnimationFrame) { + fill( + _window, + 'requestAnimationFrame', + function(orig) { + return function(cb) { + return orig(self.wrap(cb)); + }; + }, + wrappedBuiltIns + ); + } + + // event targets borrowed from bugsnag-js: + // https://github.com/bugsnag/bugsnag-js/blob/master/src/bugsnag.js#L666 + var eventTargets = [ + 'EventTarget', + 'Window', + 'Node', + 'ApplicationCache', + 'AudioTrackList', + 'ChannelMergerNode', + 'CryptoOperation', + 'EventSource', + 'FileReader', + 'HTMLUnknownElement', + 'IDBDatabase', + 'IDBRequest', + 'IDBTransaction', + 'KeyOperation', + 'MediaController', + 'MessagePort', + 'ModalWindow', + 'Notification', + 'SVGElementInstance', + 'Screen', + 'TextTrack', + 'TextTrackCue', + 'TextTrackList', + 'WebSocket', + 'WebSocketWorker', + 'Worker', + 'XMLHttpRequest', + 'XMLHttpRequestEventTarget', + 'XMLHttpRequestUpload' + ]; + for (var i = 0; i < eventTargets.length; i++) { + wrapEventTarget(eventTargets[i]); + } + }, + + /** + * Instrument browser built-ins w/ breadcrumb capturing + * - XMLHttpRequests + * - DOM interactions (click/typing) + * - window.location changes + * - console + * + * Can be disabled or individually configured via the `autoBreadcrumbs` config option + */ + _instrumentBreadcrumbs: function() { + var self = this; + var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; + + var wrappedBuiltIns = self._wrappedBuiltIns; + + function wrapProp(prop, xhr) { + if (prop in xhr && isFunction(xhr[prop])) { + fill(xhr, prop, function(orig) { + return self.wrap(orig); + }); // intentionally don't track filled methods on XHR instances + } + } + + if (autoBreadcrumbs.xhr && 'XMLHttpRequest' in _window) { + var xhrproto = _window.XMLHttpRequest && _window.XMLHttpRequest.prototype; + fill( + xhrproto, + 'open', + function(origOpen) { + return function(method, url) { + // preserve arity + + // if Sentry key appears in URL, don't capture + if (isString(url) && url.indexOf(self._globalKey) === -1) { + this.__raven_xhr = { + method: method, + url: url, + status_code: null + }; + } + + return origOpen.apply(this, arguments); + }; + }, + wrappedBuiltIns + ); + + fill( + xhrproto, + 'send', + function(origSend) { + return function() { + // preserve arity + var xhr = this; + + function onreadystatechangeHandler() { + if (xhr.__raven_xhr && xhr.readyState === 4) { + try { + // touching statusCode in some platforms throws + // an exception + xhr.__raven_xhr.status_code = xhr.status; + } catch (e) { + /* do nothing */ + } + + self.captureBreadcrumb({ + type: 'http', + category: 'xhr', + data: xhr.__raven_xhr + }); + } + } + + var props = ['onload', 'onerror', 'onprogress']; + for (var j = 0; j < props.length; j++) { + wrapProp(props[j], xhr); + } + + if ('onreadystatechange' in xhr && isFunction(xhr.onreadystatechange)) { + fill( + xhr, + 'onreadystatechange', + function(orig) { + return self.wrap(orig, undefined, onreadystatechangeHandler); + } /* intentionally don't track this instrumentation */ + ); + } else { + // if onreadystatechange wasn't actually set by the page on this xhr, we + // are free to set our own and capture the breadcrumb + xhr.onreadystatechange = onreadystatechangeHandler; + } + + return origSend.apply(this, arguments); + }; + }, + wrappedBuiltIns + ); + } + + if (autoBreadcrumbs.xhr && supportsFetch()) { + fill( + _window, + 'fetch', + function(origFetch) { + return function() { + // preserve arity + // Make a copy of the arguments to prevent deoptimization + // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments + var args = new Array(arguments.length); + for (var i = 0; i < args.length; ++i) { + args[i] = arguments[i]; + } + + var fetchInput = args[0]; + var method = 'GET'; + var url; + + if (typeof fetchInput === 'string') { + url = fetchInput; + } else if ('Request' in _window && fetchInput instanceof _window.Request) { + url = fetchInput.url; + if (fetchInput.method) { + method = fetchInput.method; + } + } else { + url = '' + fetchInput; + } + + // if Sentry key appears in URL, don't capture, as it's our own request + if (url.indexOf(self._globalKey) !== -1) { + return origFetch.apply(this, args); + } + + if (args[1] && args[1].method) { + method = args[1].method; + } + + var fetchData = { + method: method, + url: url, + status_code: null + }; + + return origFetch + .apply(this, args) + .then(function(response) { + fetchData.status_code = response.status; + + self.captureBreadcrumb({ + type: 'http', + category: 'fetch', + data: fetchData + }); + + return response; + }) + ['catch'](function(err) { + // if there is an error performing the request + self.captureBreadcrumb({ + type: 'http', + category: 'fetch', + data: fetchData, + level: 'error' + }); + + throw err; + }); + }; + }, + wrappedBuiltIns + ); + } + + // Capture breadcrumbs from any click that is unhandled / bubbled up all the way + // to the document. Do this before we instrument addEventListener. + if (autoBreadcrumbs.dom && this._hasDocument) { + if (_document.addEventListener) { + _document.addEventListener('click', self._breadcrumbEventHandler('click'), false); + _document.addEventListener('keypress', self._keypressEventHandler(), false); + } else if (_document.attachEvent) { + // IE8 Compatibility + _document.attachEvent('onclick', self._breadcrumbEventHandler('click')); + _document.attachEvent('onkeypress', self._keypressEventHandler()); + } + } + + // record navigation (URL) changes + // NOTE: in Chrome App environment, touching history.pushState, *even inside + // a try/catch block*, will cause Chrome to output an error to console.error + // borrowed from: https://github.com/angular/angular.js/pull/13945/files + var chrome = _window.chrome; + var isChromePackagedApp = chrome && chrome.app && chrome.app.runtime; + var hasPushAndReplaceState = + !isChromePackagedApp && + _window.history && + _window.history.pushState && + _window.history.replaceState; + if (autoBreadcrumbs.location && hasPushAndReplaceState) { + // TODO: remove onpopstate handler on uninstall() + var oldOnPopState = _window.onpopstate; + _window.onpopstate = function() { + var currentHref = self._location.href; + self._captureUrlChange(self._lastHref, currentHref); + + if (oldOnPopState) { + return oldOnPopState.apply(this, arguments); + } + }; + + var historyReplacementFunction = function(origHistFunction) { + // note history.pushState.length is 0; intentionally not declaring + // params to preserve 0 arity + return function(/* state, title, url */) { + var url = arguments.length > 2 ? arguments[2] : undefined; + + // url argument is optional + if (url) { + // coerce to string (this is what pushState does) + self._captureUrlChange(self._lastHref, url + ''); + } + + return origHistFunction.apply(this, arguments); + }; + }; + + fill(_window.history, 'pushState', historyReplacementFunction, wrappedBuiltIns); + fill(_window.history, 'replaceState', historyReplacementFunction, wrappedBuiltIns); + } + + if (autoBreadcrumbs.console && 'console' in _window && console.log) { + // console + var consoleMethodCallback = function(msg, data) { + self.captureBreadcrumb({ + message: msg, + level: data.level, + category: 'console' + }); + }; + + each(['debug', 'info', 'warn', 'error', 'log'], function(_, level) { + wrapConsoleMethod(console, level, consoleMethodCallback); + }); + } + }, + + _restoreBuiltIns: function() { + // restore any wrapped builtins + var builtin; + while (this._wrappedBuiltIns.length) { + builtin = this._wrappedBuiltIns.shift(); + + var obj = builtin[0], + name = builtin[1], + orig = builtin[2]; + + obj[name] = orig; + } + }, + + _restoreConsole: function() { + // eslint-disable-next-line guard-for-in + for (var method in this._originalConsoleMethods) { + this._originalConsole[method] = this._originalConsoleMethods[method]; + } + }, + + _drainPlugins: function() { + var self = this; + + // FIX ME TODO + each(this._plugins, function(_, plugin) { + var installer = plugin[0]; + var args = plugin[1]; + installer.apply(self, [self].concat(args)); + }); + }, + + _parseDSN: function(str) { + var m = dsnPattern.exec(str), + dsn = {}, + i = 7; + + try { + while (i--) dsn[dsnKeys[i]] = m[i] || ''; + } catch (e) { + throw new RavenConfigError('Invalid DSN: ' + str); + } + + if (dsn.pass && !this._globalOptions.allowSecretKey) { + throw new RavenConfigError( + 'Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key' + ); + } + + return dsn; + }, + + _getGlobalServer: function(uri) { + // assemble the endpoint from the uri pieces + var globalServer = '//' + uri.host + (uri.port ? ':' + uri.port : ''); + + if (uri.protocol) { + globalServer = uri.protocol + ':' + globalServer; + } + return globalServer; + }, + + _handleOnErrorStackInfo: function() { + // if we are intentionally ignoring errors via onerror, bail out + if (!this._ignoreOnError) { + this._handleStackInfo.apply(this, arguments); + } + }, + + _handleStackInfo: function(stackInfo, options) { + var frames = this._prepareFrames(stackInfo, options); + + this._triggerEvent('handle', { + stackInfo: stackInfo, + options: options + }); + + this._processException( + stackInfo.name, + stackInfo.message, + stackInfo.url, + stackInfo.lineno, + frames, + options + ); + }, + + _prepareFrames: function(stackInfo, options) { + var self = this; + var frames = []; + if (stackInfo.stack && stackInfo.stack.length) { + each(stackInfo.stack, function(i, stack) { + var frame = self._normalizeFrame(stack, stackInfo.url); + if (frame) { + frames.push(frame); + } + }); + + // e.g. frames captured via captureMessage throw + if (options && options.trimHeadFrames) { + for (var j = 0; j < options.trimHeadFrames && j < frames.length; j++) { + frames[j].in_app = false; + } + } + } + frames = frames.slice(0, this._globalOptions.stackTraceLimit); + return frames; + }, + + _normalizeFrame: function(frame, stackInfoUrl) { + // normalize the frames data + var normalized = { + filename: frame.url, + lineno: frame.line, + colno: frame.column, + function: frame.func || '?' + }; + + // Case when we don't have any information about the error + // E.g. throwing a string or raw object, instead of an `Error` in Firefox + // Generating synthetic error doesn't add any value here + // + // We should probably somehow let a user know that they should fix their code + if (!frame.url) { + normalized.filename = stackInfoUrl; // fallback to whole stacks url from onerror handler + } + + normalized.in_app = !// determine if an exception came from outside of our app + // first we check the global includePaths list. + ( + (!!this._globalOptions.includePaths.test && + !this._globalOptions.includePaths.test(normalized.filename)) || + // Now we check for fun, if the function name is Raven or TraceKit + /(Raven|TraceKit)\./.test(normalized['function']) || + // finally, we do a last ditch effort and check for raven.min.js + /raven\.(min\.)?js$/.test(normalized.filename) + ); + + return normalized; + }, + + _processException: function(type, message, fileurl, lineno, frames, options) { + var prefixedMessage = (type ? type + ': ' : '') + (message || ''); + if ( + !!this._globalOptions.ignoreErrors.test && + (this._globalOptions.ignoreErrors.test(message) || + this._globalOptions.ignoreErrors.test(prefixedMessage)) + ) { + return; + } + + var stacktrace; + + if (frames && frames.length) { + fileurl = frames[0].filename || fileurl; + // Sentry expects frames oldest to newest + // and JS sends them as newest to oldest + frames.reverse(); + stacktrace = {frames: frames}; + } else if (fileurl) { + stacktrace = { + frames: [ + { + filename: fileurl, + lineno: lineno, + in_app: true + } + ] + }; + } + + if ( + !!this._globalOptions.ignoreUrls.test && + this._globalOptions.ignoreUrls.test(fileurl) + ) { + return; + } + + if ( + !!this._globalOptions.whitelistUrls.test && + !this._globalOptions.whitelistUrls.test(fileurl) + ) { + return; + } + + var data = objectMerge( + { + // sentry.interfaces.Exception + exception: { + values: [ + { + type: type, + value: message, + stacktrace: stacktrace + } + ] + }, + transaction: fileurl + }, + options + ); + + // Fire away! + this._send(data); + }, + + _trimPacket: function(data) { + // For now, we only want to truncate the two different messages + // but this could/should be expanded to just trim everything + var max = this._globalOptions.maxMessageLength; + if (data.message) { + data.message = truncate(data.message, max); + } + if (data.exception) { + var exception = data.exception.values[0]; + exception.value = truncate(exception.value, max); + } + + var request = data.request; + if (request) { + if (request.url) { + request.url = truncate(request.url, this._globalOptions.maxUrlLength); + } + if (request.Referer) { + request.Referer = truncate(request.Referer, this._globalOptions.maxUrlLength); + } + } + + if (data.breadcrumbs && data.breadcrumbs.values) + this._trimBreadcrumbs(data.breadcrumbs); + + return data; + }, + + /** + * Truncate breadcrumb values (right now just URLs) + */ + _trimBreadcrumbs: function(breadcrumbs) { + // known breadcrumb properties with urls + // TODO: also consider arbitrary prop values that start with (https?)?:// + var urlProps = ['to', 'from', 'url'], + urlProp, + crumb, + data; + + for (var i = 0; i < breadcrumbs.values.length; ++i) { + crumb = breadcrumbs.values[i]; + if ( + !crumb.hasOwnProperty('data') || + !isObject(crumb.data) || + objectFrozen(crumb.data) + ) + continue; + + data = objectMerge({}, crumb.data); + for (var j = 0; j < urlProps.length; ++j) { + urlProp = urlProps[j]; + if (data.hasOwnProperty(urlProp) && data[urlProp]) { + data[urlProp] = truncate(data[urlProp], this._globalOptions.maxUrlLength); + } + } + breadcrumbs.values[i].data = data; + } + }, + + _getHttpData: function() { + if (!this._hasNavigator && !this._hasDocument) return; + var httpData = {}; + + if (this._hasNavigator && _navigator.userAgent) { + httpData.headers = { + 'User-Agent': _navigator.userAgent + }; + } + + // Check in `window` instead of `document`, as we may be in ServiceWorker environment + if (_window.location && _window.location.href) { + httpData.url = _window.location.href; + } + + if (this._hasDocument && _document.referrer) { + if (!httpData.headers) httpData.headers = {}; + httpData.headers.Referer = _document.referrer; + } + + return httpData; + }, + + _resetBackoff: function() { + this._backoffDuration = 0; + this._backoffStart = null; + }, + + _shouldBackoff: function() { + return this._backoffDuration && now() - this._backoffStart < this._backoffDuration; + }, + + /** + * Returns true if the in-process data payload matches the signature + * of the previously-sent data + * + * NOTE: This has to be done at this level because TraceKit can generate + * data from window.onerror WITHOUT an exception object (IE8, IE9, + * other old browsers). This can take the form of an "exception" + * data object with a single frame (derived from the onerror args). + */ + _isRepeatData: function(current) { + var last = this._lastData; + + if ( + !last || + current.message !== last.message || // defined for captureMessage + current.transaction !== last.transaction // defined for captureException/onerror + ) + return false; + + // Stacktrace interface (i.e. from captureMessage) + if (current.stacktrace || last.stacktrace) { + return isSameStacktrace(current.stacktrace, last.stacktrace); + } else if (current.exception || last.exception) { + // Exception interface (i.e. from captureException/onerror) + return isSameException(current.exception, last.exception); + } + + return true; + }, + + _setBackoffState: function(request) { + // If we are already in a backoff state, don't change anything + if (this._shouldBackoff()) { + return; + } + + var status = request.status; + + // 400 - project_id doesn't exist or some other fatal + // 401 - invalid/revoked dsn + // 429 - too many requests + if (!(status === 400 || status === 401 || status === 429)) return; + + var retry; + try { + // If Retry-After is not in Access-Control-Expose-Headers, most + // browsers will throw an exception trying to access it + if (supportsFetch()) { + retry = request.headers.get('Retry-After'); + } else { + retry = request.getResponseHeader('Retry-After'); + } + + // Retry-After is returned in seconds + retry = parseInt(retry, 10) * 1000; + } catch (e) { + /* eslint no-empty:0 */ + } + + this._backoffDuration = retry + ? // If Sentry server returned a Retry-After value, use it + retry + : // Otherwise, double the last backoff duration (starts at 1 sec) + this._backoffDuration * 2 || 1000; + + this._backoffStart = now(); + }, + + _send: function(data) { + var globalOptions = this._globalOptions; + + var baseData = { + project: this._globalProject, + logger: globalOptions.logger, + platform: 'javascript' + }, + httpData = this._getHttpData(); + + if (httpData) { + baseData.request = httpData; + } + + // HACK: delete `trimHeadFrames` to prevent from appearing in outbound payload + if (data.trimHeadFrames) delete data.trimHeadFrames; + + data = objectMerge(baseData, data); + + // Merge in the tags and extra separately since objectMerge doesn't handle a deep merge + data.tags = objectMerge(objectMerge({}, this._globalContext.tags), data.tags); + data.extra = objectMerge(objectMerge({}, this._globalContext.extra), data.extra); + + // Send along our own collected metadata with extra + data.extra['session:duration'] = now() - this._startTime; + + if (this._breadcrumbs && this._breadcrumbs.length > 0) { + // intentionally make shallow copy so that additions + // to breadcrumbs aren't accidentally sent in this request + data.breadcrumbs = { + values: [].slice.call(this._breadcrumbs, 0) + }; + } + + if (this._globalContext.user) { + // sentry.interfaces.User + data.user = this._globalContext.user; + } + + // Include the environment if it's defined in globalOptions + if (globalOptions.environment) data.environment = globalOptions.environment; + + // Include the release if it's defined in globalOptions + if (globalOptions.release) data.release = globalOptions.release; + + // Include server_name if it's defined in globalOptions + if (globalOptions.serverName) data.server_name = globalOptions.serverName; + + data = this._sanitizeData(data); + + // Cleanup empty properties before sending them to the server + Object.keys(data).forEach(function(key) { + if (data[key] == null || data[key] === '' || isEmptyObject(data[key])) { + delete data[key]; + } + }); + + if (isFunction(globalOptions.dataCallback)) { + data = globalOptions.dataCallback(data) || data; + } + + // Why?????????? + if (!data || isEmptyObject(data)) { + return; + } + + // Check if the request should be filtered or not + if ( + isFunction(globalOptions.shouldSendCallback) && + !globalOptions.shouldSendCallback(data) + ) { + return; + } + + // Backoff state: Sentry server previously responded w/ an error (e.g. 429 - too many requests), + // so drop requests until "cool-off" period has elapsed. + if (this._shouldBackoff()) { + this._logDebug('warn', 'Raven dropped error due to backoff: ', data); + return; + } + + if (typeof globalOptions.sampleRate === 'number') { + if (Math.random() < globalOptions.sampleRate) { + this._sendProcessedPayload(data); + } + } else { + this._sendProcessedPayload(data); + } + }, + + _sanitizeData: function(data) { + return sanitize(data, this._globalOptions.sanitizeKeys); + }, + + _getUuid: function() { + return uuid4(); + }, + + _sendProcessedPayload: function(data, callback) { + var self = this; + var globalOptions = this._globalOptions; + + if (!this.isSetup()) return; + + // Try and clean up the packet before sending by truncating long values + data = this._trimPacket(data); + + // ideally duplicate error testing should occur *before* dataCallback/shouldSendCallback, + // but this would require copying an un-truncated copy of the data packet, which can be + // arbitrarily deep (extra_data) -- could be worthwhile? will revisit + if (!this._globalOptions.allowDuplicates && this._isRepeatData(data)) { + this._logDebug('warn', 'Raven dropped repeat event: ', data); + return; + } + + // Send along an event_id if not explicitly passed. + // This event_id can be used to reference the error within Sentry itself. + // Set lastEventId after we know the error should actually be sent + this._lastEventId = data.event_id || (data.event_id = this._getUuid()); + + // Store outbound payload after trim + this._lastData = data; + + this._logDebug('debug', 'Raven about to send:', data); + + var auth = { + sentry_version: '7', + sentry_client: 'raven-js/' + this.VERSION, + sentry_key: this._globalKey + }; + + if (this._globalSecret) { + auth.sentry_secret = this._globalSecret; + } + + var exception = data.exception && data.exception.values[0]; + + // only capture 'sentry' breadcrumb is autoBreadcrumbs is truthy + if ( + this._globalOptions.autoBreadcrumbs && + this._globalOptions.autoBreadcrumbs.sentry + ) { + this.captureBreadcrumb({ + category: 'sentry', + message: exception + ? (exception.type ? exception.type + ': ' : '') + exception.value + : data.message, + event_id: data.event_id, + level: data.level || 'error' // presume error unless specified + }); + } + + var url = this._globalEndpoint; + (globalOptions.transport || this._makeRequest).call(this, { + url: url, + auth: auth, + data: data, + options: globalOptions, + onSuccess: function success() { + self._resetBackoff(); + + self._triggerEvent('success', { + data: data, + src: url + }); + callback && callback(); + }, + onError: function failure(error) { + self._logDebug('error', 'Raven transport failed to send: ', error); + + if (error.request) { + self._setBackoffState(error.request); + } + + self._triggerEvent('failure', { + data: data, + src: url + }); + error = error || new Error('Raven send failed (no additional details provided)'); + callback && callback(error); + } + }); + }, + + _makeRequest: function(opts) { + // Auth is intentionally sent as part of query string (NOT as custom HTTP header) to avoid preflight CORS requests + var url = opts.url + '?' + urlencode(opts.auth); + + var evaluatedHeaders = null; + var evaluatedFetchParameters = {}; + + if (opts.options.headers) { + evaluatedHeaders = this._evaluateHash(opts.options.headers); + } + + if (opts.options.fetchParameters) { + evaluatedFetchParameters = this._evaluateHash(opts.options.fetchParameters); + } + + if (supportsFetch()) { + evaluatedFetchParameters.body = stringify(opts.data); + + var defaultFetchOptions = objectMerge({}, this._fetchDefaults); + var fetchOptions = objectMerge(defaultFetchOptions, evaluatedFetchParameters); + + if (evaluatedHeaders) { + fetchOptions.headers = evaluatedHeaders; + } + + return _window + .fetch(url, fetchOptions) + .then(function(response) { + if (response.ok) { + opts.onSuccess && opts.onSuccess(); + } else { + var error = new Error('Sentry error code: ' + response.status); + // It's called request only to keep compatibility with XHR interface + // and not add more redundant checks in setBackoffState method + error.request = response; + opts.onError && opts.onError(error); + } + }) + ['catch'](function() { + opts.onError && + opts.onError(new Error('Sentry error code: network unavailable')); + }); + } + + var request = _window.XMLHttpRequest && new _window.XMLHttpRequest(); + if (!request) return; + + // if browser doesn't support CORS (e.g. IE7), we are out of luck + var hasCORS = 'withCredentials' in request || typeof XDomainRequest !== 'undefined'; + + if (!hasCORS) return; + + if ('withCredentials' in request) { + request.onreadystatechange = function() { + if (request.readyState !== 4) { + return; + } else if (request.status === 200) { + opts.onSuccess && opts.onSuccess(); + } else if (opts.onError) { + var err = new Error('Sentry error code: ' + request.status); + err.request = request; + opts.onError(err); + } + }; + } else { + request = new XDomainRequest(); + // xdomainrequest cannot go http -> https (or vice versa), + // so always use protocol relative + url = url.replace(/^https?:/, ''); + + // onreadystatechange not supported by XDomainRequest + if (opts.onSuccess) { + request.onload = opts.onSuccess; + } + if (opts.onError) { + request.onerror = function() { + var err = new Error('Sentry error code: XDomainRequest'); + err.request = request; + opts.onError(err); + }; + } + } + + request.open('POST', url); + + if (evaluatedHeaders) { + each(evaluatedHeaders, function(key, value) { + request.setRequestHeader(key, value); + }); + } + + request.send(stringify(opts.data)); + }, + + _evaluateHash: function(hash) { + var evaluated = {}; + + for (var key in hash) { + if (hash.hasOwnProperty(key)) { + var value = hash[key]; + evaluated[key] = typeof value === 'function' ? value() : value; + } + } + + return evaluated; + }, + + _logDebug: function(level) { + // We allow `Raven.debug` and `Raven.config(DSN, { debug: true })` to not make backward incompatible API change + if ( + this._originalConsoleMethods[level] && + (this.debug || this._globalOptions.debug) + ) { + // In IE<10 console methods do not have their own 'apply' method + Function.prototype.apply.call( + this._originalConsoleMethods[level], + this._originalConsole, + [].slice.call(arguments, 1) + ); + } + }, + + _mergeContext: function(key, context) { + if (isUndefined(context)) { + delete this._globalContext[key]; + } else { + this._globalContext[key] = objectMerge(this._globalContext[key] || {}, context); + } + } +}; + +// Deprecations +Raven.prototype.setUser = Raven.prototype.setUserContext; +Raven.prototype.setReleaseContext = Raven.prototype.setRelease; + +module.exports = Raven; + +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"10":10,"3":3,"4":4,"7":7,"8":8,"9":9}],6:[function(_dereq_,module,exports){ +(function (global){ +/** + * Enforces a single instance of the Raven client, and the + * main entry point for Raven. If you are a consumer of the + * Raven library, you SHOULD load this file (vs raven.js). + **/ + +var RavenConstructor = _dereq_(5); + +// This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) +var _window = + typeof window !== 'undefined' + ? window + : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; +var _Raven = _window.Raven; + +var Raven = new RavenConstructor(); + +/* + * Allow multiple versions of Raven to be installed. + * Strip Raven from the global context and returns the instance. + * + * @return {Raven} + */ +Raven.noConflict = function() { + _window.Raven = _Raven; + return Raven; +}; + +Raven.afterLoad(); + +module.exports = Raven; + +/** + * DISCLAIMER: + * + * Expose `Client` constructor for cases where user want to track multiple "sub-applications" in one larger app. + * It's not meant to be used by a wide audience, so pleaaase make sure that you know what you're doing before using it. + * Accidentally calling `install` multiple times, may result in an unexpected behavior that's very hard to debug. + * + * It's called `Client' to be in-line with Raven Node implementation. + * + * HOWTO: + * + * import Raven from 'raven-js'; + * + * const someAppReporter = new Raven.Client(); + * const someOtherAppReporter = new Raven.Client(); + * + * someAppReporter.config('__DSN__', { + * ...config goes here + * }); + * + * someOtherAppReporter.config('__OTHER_DSN__', { + * ...config goes here + * }); + * + * someAppReporter.captureMessage(...); + * someAppReporter.captureException(...); + * someAppReporter.captureBreadcrumb(...); + * + * someOtherAppReporter.captureMessage(...); + * someOtherAppReporter.captureException(...); + * someOtherAppReporter.captureBreadcrumb(...); + * + * It should "just work". + */ +module.exports.Client = RavenConstructor; + +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"5":5}],7:[function(_dereq_,module,exports){ +(function (global){ +var stringify = _dereq_(9); + +var _window = + typeof window !== 'undefined' + ? window + : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; + +function isObject(what) { + return typeof what === 'object' && what !== null; +} + +// Yanked from https://git.io/vS8DV re-used under CC0 +// with some tiny modifications +function isError(value) { + switch (Object.prototype.toString.call(value)) { + case '[object Error]': + return true; + case '[object Exception]': + return true; + case '[object DOMException]': + return true; + default: + return value instanceof Error; + } +} + +function isErrorEvent(value) { + return Object.prototype.toString.call(value) === '[object ErrorEvent]'; +} + +function isDOMError(value) { + return Object.prototype.toString.call(value) === '[object DOMError]'; +} + +function isDOMException(value) { + return Object.prototype.toString.call(value) === '[object DOMException]'; +} + +function isUndefined(what) { + return what === void 0; +} + +function isFunction(what) { + return typeof what === 'function'; +} + +function isPlainObject(what) { + return Object.prototype.toString.call(what) === '[object Object]'; +} + +function isString(what) { + return Object.prototype.toString.call(what) === '[object String]'; +} + +function isArray(what) { + return Object.prototype.toString.call(what) === '[object Array]'; +} + +function isEmptyObject(what) { + if (!isPlainObject(what)) return false; + + for (var _ in what) { + if (what.hasOwnProperty(_)) { + return false; + } + } + return true; +} + +function supportsErrorEvent() { + try { + new ErrorEvent(''); // eslint-disable-line no-new + return true; + } catch (e) { + return false; + } +} + +function supportsDOMError() { + try { + new DOMError(''); // eslint-disable-line no-new + return true; + } catch (e) { + return false; + } +} + +function supportsDOMException() { + try { + new DOMException(''); // eslint-disable-line no-new + return true; + } catch (e) { + return false; + } +} + +function supportsFetch() { + if (!('fetch' in _window)) return false; + + try { + new Headers(); // eslint-disable-line no-new + new Request(''); // eslint-disable-line no-new + new Response(); // eslint-disable-line no-new + return true; + } catch (e) { + return false; + } +} + +// Despite all stars in the sky saying that Edge supports old draft syntax, aka 'never', 'always', 'origin' and 'default +// https://caniuse.com/#feat=referrer-policy +// It doesn't. And it throw exception instead of ignoring this parameter... +// REF: https://github.com/getsentry/raven-js/issues/1233 +function supportsReferrerPolicy() { + if (!supportsFetch()) return false; + + try { + // eslint-disable-next-line no-new + new Request('pickleRick', { + referrerPolicy: 'origin' + }); + return true; + } catch (e) { + return false; + } +} + +function supportsPromiseRejectionEvent() { + return typeof PromiseRejectionEvent === 'function'; +} + +function wrappedCallback(callback) { + function dataCallback(data, original) { + var normalizedData = callback(data) || data; + if (original) { + return original(normalizedData) || normalizedData; + } + return normalizedData; + } + + return dataCallback; +} + +function each(obj, callback) { + var i, j; + + if (isUndefined(obj.length)) { + for (i in obj) { + if (hasKey(obj, i)) { + callback.call(null, i, obj[i]); + } + } + } else { + j = obj.length; + if (j) { + for (i = 0; i < j; i++) { + callback.call(null, i, obj[i]); + } + } + } +} + +function objectMerge(obj1, obj2) { + if (!obj2) { + return obj1; + } + each(obj2, function(key, value) { + obj1[key] = value; + }); + return obj1; +} + +/** + * This function is only used for react-native. + * react-native freezes object that have already been sent over the + * js bridge. We need this function in order to check if the object is frozen. + * So it's ok that objectFrozen returns false if Object.isFrozen is not + * supported because it's not relevant for other "platforms". See related issue: + * https://github.com/getsentry/react-native-sentry/issues/57 + */ +function objectFrozen(obj) { + if (!Object.isFrozen) { + return false; + } + return Object.isFrozen(obj); +} + +function truncate(str, max) { + if (typeof max !== 'number') { + throw new Error('2nd argument to `truncate` function should be a number'); + } + if (typeof str !== 'string' || max === 0) { + return str; + } + return str.length <= max ? str : str.substr(0, max) + '\u2026'; +} + +/** + * hasKey, a better form of hasOwnProperty + * Example: hasKey(MainHostObject, property) === true/false + * + * @param {Object} host object to check property + * @param {string} key to check + */ +function hasKey(object, key) { + return Object.prototype.hasOwnProperty.call(object, key); +} + +function joinRegExp(patterns) { + // Combine an array of regular expressions and strings into one large regexp + // Be mad. + var sources = [], + i = 0, + len = patterns.length, + pattern; + + for (; i < len; i++) { + pattern = patterns[i]; + if (isString(pattern)) { + // If it's a string, we need to escape it + // Taken from: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions + sources.push(pattern.replace(/([.*+?^=!:${}()|\[\]\/\\])/g, '\\$1')); + } else if (pattern && pattern.source) { + // If it's a regexp already, we want to extract the source + sources.push(pattern.source); + } + // Intentionally skip other cases + } + return new RegExp(sources.join('|'), 'i'); +} + +function urlencode(o) { + var pairs = []; + each(o, function(key, value) { + pairs.push(encodeURIComponent(key) + '=' + encodeURIComponent(value)); + }); + return pairs.join('&'); +} + +// borrowed from https://tools.ietf.org/html/rfc3986#appendix-B +// intentionally using regex and not href parsing trick because React Native and other +// environments where DOM might not be available +function parseUrl(url) { + if (typeof url !== 'string') return {}; + var match = url.match(/^(([^:\/?#]+):)?(\/\/([^\/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?$/); + + // coerce to undefined values to empty string so we don't get 'undefined' + var query = match[6] || ''; + var fragment = match[8] || ''; + return { + protocol: match[2], + host: match[4], + path: match[5], + relative: match[5] + query + fragment // everything minus origin + }; +} +function uuid4() { + var crypto = _window.crypto || _window.msCrypto; + + if (!isUndefined(crypto) && crypto.getRandomValues) { + // Use window.crypto API if available + // eslint-disable-next-line no-undef + var arr = new Uint16Array(8); + crypto.getRandomValues(arr); + + // set 4 in byte 7 + arr[3] = (arr[3] & 0xfff) | 0x4000; + // set 2 most significant bits of byte 9 to '10' + arr[4] = (arr[4] & 0x3fff) | 0x8000; + + var pad = function(num) { + var v = num.toString(16); + while (v.length < 4) { + v = '0' + v; + } + return v; + }; + + return ( + pad(arr[0]) + + pad(arr[1]) + + pad(arr[2]) + + pad(arr[3]) + + pad(arr[4]) + + pad(arr[5]) + + pad(arr[6]) + + pad(arr[7]) + ); + } else { + // http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/2117523#2117523 + return 'xxxxxxxxxxxx4xxxyxxxxxxxxxxxxxxx'.replace(/[xy]/g, function(c) { + var r = (Math.random() * 16) | 0, + v = c === 'x' ? r : (r & 0x3) | 0x8; + return v.toString(16); + }); + } +} + +/** + * Given a child DOM element, returns a query-selector statement describing that + * and its ancestors + * e.g. [HTMLElement] => body > div > input#foo.btn[name=baz] + * @param elem + * @returns {string} + */ +function htmlTreeAsString(elem) { + /* eslint no-extra-parens:0*/ + var MAX_TRAVERSE_HEIGHT = 5, + MAX_OUTPUT_LEN = 80, + out = [], + height = 0, + len = 0, + separator = ' > ', + sepLength = separator.length, + nextStr; + + while (elem && height++ < MAX_TRAVERSE_HEIGHT) { + nextStr = htmlElementAsString(elem); + // bail out if + // - nextStr is the 'html' element + // - the length of the string that would be created exceeds MAX_OUTPUT_LEN + // (ignore this limit if we are on the first iteration) + if ( + nextStr === 'html' || + (height > 1 && len + out.length * sepLength + nextStr.length >= MAX_OUTPUT_LEN) + ) { + break; + } + + out.push(nextStr); + + len += nextStr.length; + elem = elem.parentNode; + } + + return out.reverse().join(separator); +} + +/** + * Returns a simple, query-selector representation of a DOM element + * e.g. [HTMLElement] => input#foo.btn[name=baz] + * @param HTMLElement + * @returns {string} + */ +function htmlElementAsString(elem) { + var out = [], + className, + classes, + key, + attr, + i; + + if (!elem || !elem.tagName) { + return ''; + } + + out.push(elem.tagName.toLowerCase()); + if (elem.id) { + out.push('#' + elem.id); + } + + className = elem.className; + if (className && isString(className)) { + classes = className.split(/\s+/); + for (i = 0; i < classes.length; i++) { + out.push('.' + classes[i]); + } + } + var attrWhitelist = ['type', 'name', 'title', 'alt']; + for (i = 0; i < attrWhitelist.length; i++) { + key = attrWhitelist[i]; + attr = elem.getAttribute(key); + if (attr) { + out.push('[' + key + '="' + attr + '"]'); + } + } + return out.join(''); +} + +/** + * Returns true if either a OR b is truthy, but not both + */ +function isOnlyOneTruthy(a, b) { + return !!(!!a ^ !!b); +} + +/** + * Returns true if both parameters are undefined + */ +function isBothUndefined(a, b) { + return isUndefined(a) && isUndefined(b); +} + +/** + * Returns true if the two input exception interfaces have the same content + */ +function isSameException(ex1, ex2) { + if (isOnlyOneTruthy(ex1, ex2)) return false; + + ex1 = ex1.values[0]; + ex2 = ex2.values[0]; + + if (ex1.type !== ex2.type || ex1.value !== ex2.value) return false; + + // in case both stacktraces are undefined, we can't decide so default to false + if (isBothUndefined(ex1.stacktrace, ex2.stacktrace)) return false; + + return isSameStacktrace(ex1.stacktrace, ex2.stacktrace); +} + +/** + * Returns true if the two input stack trace interfaces have the same content + */ +function isSameStacktrace(stack1, stack2) { + if (isOnlyOneTruthy(stack1, stack2)) return false; + + var frames1 = stack1.frames; + var frames2 = stack2.frames; + + // Exit early if frame count differs + if (frames1.length !== frames2.length) return false; + + // Iterate through every frame; bail out if anything differs + var a, b; + for (var i = 0; i < frames1.length; i++) { + a = frames1[i]; + b = frames2[i]; + if ( + a.filename !== b.filename || + a.lineno !== b.lineno || + a.colno !== b.colno || + a['function'] !== b['function'] + ) + return false; + } + return true; +} + +/** + * Polyfill a method + * @param obj object e.g. `document` + * @param name method name present on object e.g. `addEventListener` + * @param replacement replacement function + * @param track {optional} record instrumentation to an array + */ +function fill(obj, name, replacement, track) { + if (obj == null) return; + var orig = obj[name]; + obj[name] = replacement(orig); + obj[name].__raven__ = true; + obj[name].__orig__ = orig; + if (track) { + track.push([obj, name, orig]); + } +} + +/** + * Join values in array + * @param input array of values to be joined together + * @param delimiter string to be placed in-between values + * @returns {string} + */ +function safeJoin(input, delimiter) { + if (!isArray(input)) return ''; + + var output = []; + + for (var i = 0; i < input.length; i++) { + try { + output.push(String(input[i])); + } catch (e) { + output.push('[value cannot be serialized]'); + } + } + + return output.join(delimiter); +} + +// Default Node.js REPL depth +var MAX_SERIALIZE_EXCEPTION_DEPTH = 3; +// 50kB, as 100kB is max payload size, so half sounds reasonable +var MAX_SERIALIZE_EXCEPTION_SIZE = 50 * 1024; +var MAX_SERIALIZE_KEYS_LENGTH = 40; + +function utf8Length(value) { + return ~-encodeURI(value).split(/%..|./).length; +} + +function jsonSize(value) { + return utf8Length(JSON.stringify(value)); +} + +function serializeValue(value) { + if (typeof value === 'string') { + var maxLength = 40; + return truncate(value, maxLength); + } else if ( + typeof value === 'number' || + typeof value === 'boolean' || + typeof value === 'undefined' + ) { + return value; + } + + var type = Object.prototype.toString.call(value); + + // Node.js REPL notation + if (type === '[object Object]') return '[Object]'; + if (type === '[object Array]') return '[Array]'; + if (type === '[object Function]') + return value.name ? '[Function: ' + value.name + ']' : '[Function]'; + + return value; +} + +function serializeObject(value, depth) { + if (depth === 0) return serializeValue(value); + + if (isPlainObject(value)) { + return Object.keys(value).reduce(function(acc, key) { + acc[key] = serializeObject(value[key], depth - 1); + return acc; + }, {}); + } else if (Array.isArray(value)) { + return value.map(function(val) { + return serializeObject(val, depth - 1); + }); + } + + return serializeValue(value); +} + +function serializeException(ex, depth, maxSize) { + if (!isPlainObject(ex)) return ex; + + depth = typeof depth !== 'number' ? MAX_SERIALIZE_EXCEPTION_DEPTH : depth; + maxSize = typeof depth !== 'number' ? MAX_SERIALIZE_EXCEPTION_SIZE : maxSize; + + var serialized = serializeObject(ex, depth); + + if (jsonSize(stringify(serialized)) > maxSize) { + return serializeException(ex, depth - 1); + } + + return serialized; +} + +function serializeKeysForMessage(keys, maxLength) { + if (typeof keys === 'number' || typeof keys === 'string') return keys.toString(); + if (!Array.isArray(keys)) return ''; + + keys = keys.filter(function(key) { + return typeof key === 'string'; + }); + if (keys.length === 0) return '[object has no keys]'; + + maxLength = typeof maxLength !== 'number' ? MAX_SERIALIZE_KEYS_LENGTH : maxLength; + if (keys[0].length >= maxLength) return keys[0]; + + for (var usedKeys = keys.length; usedKeys > 0; usedKeys--) { + var serialized = keys.slice(0, usedKeys).join(', '); + if (serialized.length > maxLength) continue; + if (usedKeys === keys.length) return serialized; + return serialized + '\u2026'; + } + + return ''; +} + +function sanitize(input, sanitizeKeys) { + if (!isArray(sanitizeKeys) || (isArray(sanitizeKeys) && sanitizeKeys.length === 0)) + return input; + + var sanitizeRegExp = joinRegExp(sanitizeKeys); + var sanitizeMask = '********'; + var safeInput; + + try { + safeInput = JSON.parse(stringify(input)); + } catch (o_O) { + return input; + } + + function sanitizeWorker(workerInput) { + if (isArray(workerInput)) { + return workerInput.map(function(val) { + return sanitizeWorker(val); + }); + } + + if (isPlainObject(workerInput)) { + return Object.keys(workerInput).reduce(function(acc, k) { + if (sanitizeRegExp.test(k)) { + acc[k] = sanitizeMask; + } else { + acc[k] = sanitizeWorker(workerInput[k]); + } + return acc; + }, {}); + } + + return workerInput; + } + + return sanitizeWorker(safeInput); +} + +module.exports = { + isObject: isObject, + isError: isError, + isErrorEvent: isErrorEvent, + isDOMError: isDOMError, + isDOMException: isDOMException, + isUndefined: isUndefined, + isFunction: isFunction, + isPlainObject: isPlainObject, + isString: isString, + isArray: isArray, + isEmptyObject: isEmptyObject, + supportsErrorEvent: supportsErrorEvent, + supportsDOMError: supportsDOMError, + supportsDOMException: supportsDOMException, + supportsFetch: supportsFetch, + supportsReferrerPolicy: supportsReferrerPolicy, + supportsPromiseRejectionEvent: supportsPromiseRejectionEvent, + wrappedCallback: wrappedCallback, + each: each, + objectMerge: objectMerge, + truncate: truncate, + objectFrozen: objectFrozen, + hasKey: hasKey, + joinRegExp: joinRegExp, + urlencode: urlencode, + uuid4: uuid4, + htmlTreeAsString: htmlTreeAsString, + htmlElementAsString: htmlElementAsString, + isSameException: isSameException, + isSameStacktrace: isSameStacktrace, + parseUrl: parseUrl, + fill: fill, + safeJoin: safeJoin, + serializeException: serializeException, + serializeKeysForMessage: serializeKeysForMessage, + sanitize: sanitize +}; + +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"9":9}],8:[function(_dereq_,module,exports){ +(function (global){ +var utils = _dereq_(7); + +/* + TraceKit - Cross brower stack traces + + This was originally forked from github.com/occ/TraceKit, but has since been + largely re-written and is now maintained as part of raven-js. Tests for + this are in test/vendor. + + MIT license +*/ + +var TraceKit = { + collectWindowErrors: true, + debug: false +}; + +// This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) +var _window = + typeof window !== 'undefined' + ? window + : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; + +// global reference to slice +var _slice = [].slice; +var UNKNOWN_FUNCTION = '?'; + +// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error#Error_types +var ERROR_TYPES_RE = /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/; + +function getLocationHref() { + if (typeof document === 'undefined' || document.location == null) return ''; + return document.location.href; +} + +function getLocationOrigin() { + if (typeof document === 'undefined' || document.location == null) return ''; + + // Oh dear IE10... + if (!document.location.origin) { + document.location.origin = + document.location.protocol + + '//' + + document.location.hostname + + (document.location.port ? ':' + document.location.port : ''); + } + + return document.location.origin; +} + +/** + * TraceKit.report: cross-browser processing of unhandled exceptions + * + * Syntax: + * TraceKit.report.subscribe(function(stackInfo) { ... }) + * TraceKit.report.unsubscribe(function(stackInfo) { ... }) + * TraceKit.report(exception) + * try { ...code... } catch(ex) { TraceKit.report(ex); } + * + * Supports: + * - Firefox: full stack trace with line numbers, plus column number + * on top frame; column number is not guaranteed + * - Opera: full stack trace with line and column numbers + * - Chrome: full stack trace with line and column numbers + * - Safari: line and column number for the top frame only; some frames + * may be missing, and column number is not guaranteed + * - IE: line and column number for the top frame only; some frames + * may be missing, and column number is not guaranteed + * + * In theory, TraceKit should work on all of the following versions: + * - IE5.5+ (only 8.0 tested) + * - Firefox 0.9+ (only 3.5+ tested) + * - Opera 7+ (only 10.50 tested; versions 9 and earlier may require + * Exceptions Have Stacktrace to be enabled in opera:config) + * - Safari 3+ (only 4+ tested) + * - Chrome 1+ (only 5+ tested) + * - Konqueror 3.5+ (untested) + * + * Requires TraceKit.computeStackTrace. + * + * Tries to catch all unhandled exceptions and report them to the + * subscribed handlers. Please note that TraceKit.report will rethrow the + * exception. This is REQUIRED in order to get a useful stack trace in IE. + * If the exception does not reach the top of the browser, you will only + * get a stack trace from the point where TraceKit.report was called. + * + * Handlers receive a stackInfo object as described in the + * TraceKit.computeStackTrace docs. + */ +TraceKit.report = (function reportModuleWrapper() { + var handlers = [], + lastArgs = null, + lastException = null, + lastExceptionStack = null; + + /** + * Add a crash handler. + * @param {Function} handler + */ + function subscribe(handler) { + installGlobalHandler(); + handlers.push(handler); + } + + /** + * Remove a crash handler. + * @param {Function} handler + */ + function unsubscribe(handler) { + for (var i = handlers.length - 1; i >= 0; --i) { + if (handlers[i] === handler) { + handlers.splice(i, 1); + } + } + } + + /** + * Remove all crash handlers. + */ + function unsubscribeAll() { + uninstallGlobalHandler(); + handlers = []; + } + + /** + * Dispatch stack information to all handlers. + * @param {Object.} stack + */ + function notifyHandlers(stack, isWindowError) { + var exception = null; + if (isWindowError && !TraceKit.collectWindowErrors) { + return; + } + for (var i in handlers) { + if (handlers.hasOwnProperty(i)) { + try { + handlers[i].apply(null, [stack].concat(_slice.call(arguments, 2))); + } catch (inner) { + exception = inner; + } + } + } + + if (exception) { + throw exception; + } + } + + var _oldOnerrorHandler, _onErrorHandlerInstalled; + + /** + * Ensures all global unhandled exceptions are recorded. + * Supported by Gecko and IE. + * @param {string} msg Error message. + * @param {string} url URL of script that generated the exception. + * @param {(number|string)} lineNo The line number at which the error + * occurred. + * @param {?(number|string)} colNo The column number at which the error + * occurred. + * @param {?Error} ex The actual Error object. + */ + function traceKitWindowOnError(msg, url, lineNo, colNo, ex) { + var stack = null; + // If 'ex' is ErrorEvent, get real Error from inside + var exception = utils.isErrorEvent(ex) ? ex.error : ex; + // If 'msg' is ErrorEvent, get real message from inside + var message = utils.isErrorEvent(msg) ? msg.message : msg; + + if (lastExceptionStack) { + TraceKit.computeStackTrace.augmentStackTraceWithInitialElement( + lastExceptionStack, + url, + lineNo, + message + ); + processLastException(); + } else if (exception && utils.isError(exception)) { + // non-string `exception` arg; attempt to extract stack trace + + // New chrome and blink send along a real error object + // Let's just report that like a normal error. + // See: https://mikewest.org/2013/08/debugging-runtime-errors-with-window-onerror + stack = TraceKit.computeStackTrace(exception); + notifyHandlers(stack, true); + } else { + var location = { + url: url, + line: lineNo, + column: colNo + }; + + var name = undefined; + var groups; + + if ({}.toString.call(message) === '[object String]') { + var groups = message.match(ERROR_TYPES_RE); + if (groups) { + name = groups[1]; + message = groups[2]; + } + } + + location.func = UNKNOWN_FUNCTION; + + stack = { + name: name, + message: message, + url: getLocationHref(), + stack: [location] + }; + notifyHandlers(stack, true); + } + + if (_oldOnerrorHandler) { + return _oldOnerrorHandler.apply(this, arguments); + } + + return false; + } + + function installGlobalHandler() { + if (_onErrorHandlerInstalled) { + return; + } + _oldOnerrorHandler = _window.onerror; + _window.onerror = traceKitWindowOnError; + _onErrorHandlerInstalled = true; + } + + function uninstallGlobalHandler() { + if (!_onErrorHandlerInstalled) { + return; + } + _window.onerror = _oldOnerrorHandler; + _onErrorHandlerInstalled = false; + _oldOnerrorHandler = undefined; + } + + function processLastException() { + var _lastExceptionStack = lastExceptionStack, + _lastArgs = lastArgs; + lastArgs = null; + lastExceptionStack = null; + lastException = null; + notifyHandlers.apply(null, [_lastExceptionStack, false].concat(_lastArgs)); + } + + /** + * Reports an unhandled Error to TraceKit. + * @param {Error} ex + * @param {?boolean} rethrow If false, do not re-throw the exception. + * Only used for window.onerror to not cause an infinite loop of + * rethrowing. + */ + function report(ex, rethrow) { + var args = _slice.call(arguments, 1); + if (lastExceptionStack) { + if (lastException === ex) { + return; // already caught by an inner catch block, ignore + } else { + processLastException(); + } + } + + var stack = TraceKit.computeStackTrace(ex); + lastExceptionStack = stack; + lastException = ex; + lastArgs = args; + + // If the stack trace is incomplete, wait for 2 seconds for + // slow slow IE to see if onerror occurs or not before reporting + // this exception; otherwise, we will end up with an incomplete + // stack trace + setTimeout(function() { + if (lastException === ex) { + processLastException(); + } + }, stack.incomplete ? 2000 : 0); + + if (rethrow !== false) { + throw ex; // re-throw to propagate to the top level (and cause window.onerror) + } + } + + report.subscribe = subscribe; + report.unsubscribe = unsubscribe; + report.uninstall = unsubscribeAll; + return report; +})(); + +/** + * TraceKit.computeStackTrace: cross-browser stack traces in JavaScript + * + * Syntax: + * s = TraceKit.computeStackTrace(exception) // consider using TraceKit.report instead (see below) + * Returns: + * s.name - exception name + * s.message - exception message + * s.stack[i].url - JavaScript or HTML file URL + * s.stack[i].func - function name, or empty for anonymous functions (if guessing did not work) + * s.stack[i].args - arguments passed to the function, if known + * s.stack[i].line - line number, if known + * s.stack[i].column - column number, if known + * + * Supports: + * - Firefox: full stack trace with line numbers and unreliable column + * number on top frame + * - Opera 10: full stack trace with line and column numbers + * - Opera 9-: full stack trace with line numbers + * - Chrome: full stack trace with line and column numbers + * - Safari: line and column number for the topmost stacktrace element + * only + * - IE: no line numbers whatsoever + * + * Tries to guess names of anonymous functions by looking for assignments + * in the source code. In IE and Safari, we have to guess source file names + * by searching for function bodies inside all page scripts. This will not + * work for scripts that are loaded cross-domain. + * Here be dragons: some function names may be guessed incorrectly, and + * duplicate functions may be mismatched. + * + * TraceKit.computeStackTrace should only be used for tracing purposes. + * Logging of unhandled exceptions should be done with TraceKit.report, + * which builds on top of TraceKit.computeStackTrace and provides better + * IE support by utilizing the window.onerror event to retrieve information + * about the top of the stack. + * + * Note: In IE and Safari, no stack trace is recorded on the Error object, + * so computeStackTrace instead walks its *own* chain of callers. + * This means that: + * * in Safari, some methods may be missing from the stack trace; + * * in IE, the topmost function in the stack trace will always be the + * caller of computeStackTrace. + * + * This is okay for tracing (because you are likely to be calling + * computeStackTrace from the function you want to be the topmost element + * of the stack trace anyway), but not okay for logging unhandled + * exceptions (because your catch block will likely be far away from the + * inner function that actually caused the exception). + * + */ +TraceKit.computeStackTrace = (function computeStackTraceWrapper() { + // Contents of Exception in various browsers. + // + // SAFARI: + // ex.message = Can't find variable: qq + // ex.line = 59 + // ex.sourceId = 580238192 + // ex.sourceURL = http://... + // ex.expressionBeginOffset = 96 + // ex.expressionCaretOffset = 98 + // ex.expressionEndOffset = 98 + // ex.name = ReferenceError + // + // FIREFOX: + // ex.message = qq is not defined + // ex.fileName = http://... + // ex.lineNumber = 59 + // ex.columnNumber = 69 + // ex.stack = ...stack trace... (see the example below) + // ex.name = ReferenceError + // + // CHROME: + // ex.message = qq is not defined + // ex.name = ReferenceError + // ex.type = not_defined + // ex.arguments = ['aa'] + // ex.stack = ...stack trace... + // + // INTERNET EXPLORER: + // ex.message = ... + // ex.name = ReferenceError + // + // OPERA: + // ex.message = ...message... (see the example below) + // ex.name = ReferenceError + // ex.opera#sourceloc = 11 (pretty much useless, duplicates the info in ex.message) + // ex.stacktrace = n/a; see 'opera:config#UserPrefs|Exceptions Have Stacktrace' + + /** + * Computes stack trace information from the stack property. + * Chrome and Gecko use this property. + * @param {Error} ex + * @return {?Object.} Stack trace information. + */ + function computeStackTraceFromStackProp(ex) { + if (typeof ex.stack === 'undefined' || !ex.stack) return; + + var chrome = /^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i; + var winjs = /^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i; + // NOTE: blob urls are now supposed to always have an origin, therefore it's format + // which is `blob:http://url/path/with-some-uuid`, is matched by `blob.*?:\/` as well + var gecko = /^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i; + // Used to additionally parse URL/line/column from eval frames + var geckoEval = /(\S+) line (\d+)(?: > eval line \d+)* > eval/i; + var chromeEval = /\((\S*)(?::(\d+))(?::(\d+))\)/; + var lines = ex.stack.split('\n'); + var stack = []; + var submatch; + var parts; + var element; + var reference = /^(.*) is undefined$/.exec(ex.message); + + for (var i = 0, j = lines.length; i < j; ++i) { + if ((parts = chrome.exec(lines[i]))) { + var isNative = parts[2] && parts[2].indexOf('native') === 0; // start of line + var isEval = parts[2] && parts[2].indexOf('eval') === 0; // start of line + if (isEval && (submatch = chromeEval.exec(parts[2]))) { + // throw out eval line/column and use top-most line/column number + parts[2] = submatch[1]; // url + parts[3] = submatch[2]; // line + parts[4] = submatch[3]; // column + } + element = { + url: !isNative ? parts[2] : null, + func: parts[1] || UNKNOWN_FUNCTION, + args: isNative ? [parts[2]] : [], + line: parts[3] ? +parts[3] : null, + column: parts[4] ? +parts[4] : null + }; + } else if ((parts = winjs.exec(lines[i]))) { + element = { + url: parts[2], + func: parts[1] || UNKNOWN_FUNCTION, + args: [], + line: +parts[3], + column: parts[4] ? +parts[4] : null + }; + } else if ((parts = gecko.exec(lines[i]))) { + var isEval = parts[3] && parts[3].indexOf(' > eval') > -1; + if (isEval && (submatch = geckoEval.exec(parts[3]))) { + // throw out eval line/column and use top-most line number + parts[3] = submatch[1]; + parts[4] = submatch[2]; + parts[5] = null; // no column when eval + } else if (i === 0 && !parts[5] && typeof ex.columnNumber !== 'undefined') { + // FireFox uses this awesome columnNumber property for its top frame + // Also note, Firefox's column number is 0-based and everything else expects 1-based, + // so adding 1 + // NOTE: this hack doesn't work if top-most frame is eval + stack[0].column = ex.columnNumber + 1; + } + element = { + url: parts[3], + func: parts[1] || UNKNOWN_FUNCTION, + args: parts[2] ? parts[2].split(',') : [], + line: parts[4] ? +parts[4] : null, + column: parts[5] ? +parts[5] : null + }; + } else { + continue; + } + + if (!element.func && element.line) { + element.func = UNKNOWN_FUNCTION; + } + + if (element.url && element.url.substr(0, 5) === 'blob:') { + // Special case for handling JavaScript loaded into a blob. + // We use a synchronous AJAX request here as a blob is already in + // memory - it's not making a network request. This will generate a warning + // in the browser console, but there has already been an error so that's not + // that much of an issue. + var xhr = new XMLHttpRequest(); + xhr.open('GET', element.url, false); + xhr.send(null); + + // If we failed to download the source, skip this patch + if (xhr.status === 200) { + var source = xhr.responseText || ''; + + // We trim the source down to the last 300 characters as sourceMappingURL is always at the end of the file. + // Why 300? To be in line with: https://github.com/getsentry/sentry/blob/4af29e8f2350e20c28a6933354e4f42437b4ba42/src/sentry/lang/javascript/processor.py#L164-L175 + source = source.slice(-300); + + // Now we dig out the source map URL + var sourceMaps = source.match(/\/\/# sourceMappingURL=(.*)$/); + + // If we don't find a source map comment or we find more than one, continue on to the next element. + if (sourceMaps) { + var sourceMapAddress = sourceMaps[1]; + + // Now we check to see if it's a relative URL. + // If it is, convert it to an absolute one. + if (sourceMapAddress.charAt(0) === '~') { + sourceMapAddress = getLocationOrigin() + sourceMapAddress.slice(1); + } + + // Now we strip the '.map' off of the end of the URL and update the + // element so that Sentry can match the map to the blob. + element.url = sourceMapAddress.slice(0, -4); + } + } + } + + stack.push(element); + } + + if (!stack.length) { + return null; + } + + return { + name: ex.name, + message: ex.message, + url: getLocationHref(), + stack: stack + }; + } + + /** + * Adds information about the first frame to incomplete stack traces. + * Safari and IE require this to get complete data on the first frame. + * @param {Object.} stackInfo Stack trace information from + * one of the compute* methods. + * @param {string} url The URL of the script that caused an error. + * @param {(number|string)} lineNo The line number of the script that + * caused an error. + * @param {string=} message The error generated by the browser, which + * hopefully contains the name of the object that caused the error. + * @return {boolean} Whether or not the stack information was + * augmented. + */ + function augmentStackTraceWithInitialElement(stackInfo, url, lineNo, message) { + var initial = { + url: url, + line: lineNo + }; + + if (initial.url && initial.line) { + stackInfo.incomplete = false; + + if (!initial.func) { + initial.func = UNKNOWN_FUNCTION; + } + + if (stackInfo.stack.length > 0) { + if (stackInfo.stack[0].url === initial.url) { + if (stackInfo.stack[0].line === initial.line) { + return false; // already in stack trace + } else if ( + !stackInfo.stack[0].line && + stackInfo.stack[0].func === initial.func + ) { + stackInfo.stack[0].line = initial.line; + return false; + } + } + } + + stackInfo.stack.unshift(initial); + stackInfo.partial = true; + return true; + } else { + stackInfo.incomplete = true; + } + + return false; + } + + /** + * Computes stack trace information by walking the arguments.caller + * chain at the time the exception occurred. This will cause earlier + * frames to be missed but is the only way to get any stack trace in + * Safari and IE. The top frame is restored by + * {@link augmentStackTraceWithInitialElement}. + * @param {Error} ex + * @return {?Object.} Stack trace information. + */ + function computeStackTraceByWalkingCallerChain(ex, depth) { + var functionName = /function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i, + stack = [], + funcs = {}, + recursion = false, + parts, + item, + source; + + for ( + var curr = computeStackTraceByWalkingCallerChain.caller; + curr && !recursion; + curr = curr.caller + ) { + if (curr === computeStackTrace || curr === TraceKit.report) { + // console.log('skipping internal function'); + continue; + } + + item = { + url: null, + func: UNKNOWN_FUNCTION, + line: null, + column: null + }; + + if (curr.name) { + item.func = curr.name; + } else if ((parts = functionName.exec(curr.toString()))) { + item.func = parts[1]; + } + + if (typeof item.func === 'undefined') { + try { + item.func = parts.input.substring(0, parts.input.indexOf('{')); + } catch (e) {} + } + + if (funcs['' + curr]) { + recursion = true; + } else { + funcs['' + curr] = true; + } + + stack.push(item); + } + + if (depth) { + // console.log('depth is ' + depth); + // console.log('stack is ' + stack.length); + stack.splice(0, depth); + } + + var result = { + name: ex.name, + message: ex.message, + url: getLocationHref(), + stack: stack + }; + augmentStackTraceWithInitialElement( + result, + ex.sourceURL || ex.fileName, + ex.line || ex.lineNumber, + ex.message || ex.description + ); + return result; + } + + /** + * Computes a stack trace for an exception. + * @param {Error} ex + * @param {(string|number)=} depth + */ + function computeStackTrace(ex, depth) { + var stack = null; + depth = depth == null ? 0 : +depth; + + try { + stack = computeStackTraceFromStackProp(ex); + if (stack) { + return stack; + } + } catch (e) { + if (TraceKit.debug) { + throw e; + } + } + + try { + stack = computeStackTraceByWalkingCallerChain(ex, depth + 1); + if (stack) { + return stack; + } + } catch (e) { + if (TraceKit.debug) { + throw e; + } + } + return { + name: ex.name, + message: ex.message, + url: getLocationHref() + }; + } + + computeStackTrace.augmentStackTraceWithInitialElement = augmentStackTraceWithInitialElement; + computeStackTrace.computeStackTraceFromStackProp = computeStackTraceFromStackProp; + + return computeStackTrace; +})(); + +module.exports = TraceKit; + +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"7":7}],9:[function(_dereq_,module,exports){ +/* + json-stringify-safe + Like JSON.stringify, but doesn't throw on circular references. + + Originally forked from https://github.com/isaacs/json-stringify-safe + version 5.0.1 on 3/8/2017 and modified to handle Errors serialization + and IE8 compatibility. Tests for this are in test/vendor. + + ISC license: https://github.com/isaacs/json-stringify-safe/blob/master/LICENSE +*/ + +exports = module.exports = stringify; +exports.getSerialize = serializer; + +function indexOf(haystack, needle) { + for (var i = 0; i < haystack.length; ++i) { + if (haystack[i] === needle) return i; + } + return -1; +} + +function stringify(obj, replacer, spaces, cycleReplacer) { + return JSON.stringify(obj, serializer(replacer, cycleReplacer), spaces); +} + +// https://github.com/ftlabs/js-abbreviate/blob/fa709e5f139e7770a71827b1893f22418097fbda/index.js#L95-L106 +function stringifyError(value) { + var err = { + // These properties are implemented as magical getters and don't show up in for in + stack: value.stack, + message: value.message, + name: value.name + }; + + for (var i in value) { + if (Object.prototype.hasOwnProperty.call(value, i)) { + err[i] = value[i]; + } + } + + return err; +} + +function serializer(replacer, cycleReplacer) { + var stack = []; + var keys = []; + + if (cycleReplacer == null) { + cycleReplacer = function(key, value) { + if (stack[0] === value) { + return '[Circular ~]'; + } + return '[Circular ~.' + keys.slice(0, indexOf(stack, value)).join('.') + ']'; + }; + } + + return function(key, value) { + if (stack.length > 0) { + var thisPos = indexOf(stack, this); + ~thisPos ? stack.splice(thisPos + 1) : stack.push(this); + ~thisPos ? keys.splice(thisPos, Infinity, key) : keys.push(key); + + if (~indexOf(stack, value)) { + value = cycleReplacer.call(this, key, value); + } + } else { + stack.push(value); + } + + return replacer == null + ? value instanceof Error ? stringifyError(value) : value + : replacer.call(this, key, value); + }; +} + +},{}],10:[function(_dereq_,module,exports){ +/* + * JavaScript MD5 + * https://github.com/blueimp/JavaScript-MD5 + * + * Copyright 2011, Sebastian Tschan + * https://blueimp.net + * + * Licensed under the MIT license: + * https://opensource.org/licenses/MIT + * + * Based on + * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message + * Digest Algorithm, as defined in RFC 1321. + * Version 2.2 Copyright (C) Paul Johnston 1999 - 2009 + * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet + * Distributed under the BSD License + * See http://pajhome.org.uk/crypt/md5 for more info. + */ + +/* +* Add integers, wrapping at 2^32. This uses 16-bit operations internally +* to work around bugs in some JS interpreters. +*/ +function safeAdd(x, y) { + var lsw = (x & 0xffff) + (y & 0xffff); + var msw = (x >> 16) + (y >> 16) + (lsw >> 16); + return (msw << 16) | (lsw & 0xffff); +} + +/* +* Bitwise rotate a 32-bit number to the left. +*/ +function bitRotateLeft(num, cnt) { + return (num << cnt) | (num >>> (32 - cnt)); +} + +/* +* These functions implement the four basic operations the algorithm uses. +*/ +function md5cmn(q, a, b, x, s, t) { + return safeAdd(bitRotateLeft(safeAdd(safeAdd(a, q), safeAdd(x, t)), s), b); +} +function md5ff(a, b, c, d, x, s, t) { + return md5cmn((b & c) | (~b & d), a, b, x, s, t); +} +function md5gg(a, b, c, d, x, s, t) { + return md5cmn((b & d) | (c & ~d), a, b, x, s, t); +} +function md5hh(a, b, c, d, x, s, t) { + return md5cmn(b ^ c ^ d, a, b, x, s, t); +} +function md5ii(a, b, c, d, x, s, t) { + return md5cmn(c ^ (b | ~d), a, b, x, s, t); +} + +/* +* Calculate the MD5 of an array of little-endian words, and a bit length. +*/ +function binlMD5(x, len) { + /* append padding */ + x[len >> 5] |= 0x80 << (len % 32); + x[(((len + 64) >>> 9) << 4) + 14] = len; + + var i; + var olda; + var oldb; + var oldc; + var oldd; + var a = 1732584193; + var b = -271733879; + var c = -1732584194; + var d = 271733878; + + for (i = 0; i < x.length; i += 16) { + olda = a; + oldb = b; + oldc = c; + oldd = d; + + a = md5ff(a, b, c, d, x[i], 7, -680876936); + d = md5ff(d, a, b, c, x[i + 1], 12, -389564586); + c = md5ff(c, d, a, b, x[i + 2], 17, 606105819); + b = md5ff(b, c, d, a, x[i + 3], 22, -1044525330); + a = md5ff(a, b, c, d, x[i + 4], 7, -176418897); + d = md5ff(d, a, b, c, x[i + 5], 12, 1200080426); + c = md5ff(c, d, a, b, x[i + 6], 17, -1473231341); + b = md5ff(b, c, d, a, x[i + 7], 22, -45705983); + a = md5ff(a, b, c, d, x[i + 8], 7, 1770035416); + d = md5ff(d, a, b, c, x[i + 9], 12, -1958414417); + c = md5ff(c, d, a, b, x[i + 10], 17, -42063); + b = md5ff(b, c, d, a, x[i + 11], 22, -1990404162); + a = md5ff(a, b, c, d, x[i + 12], 7, 1804603682); + d = md5ff(d, a, b, c, x[i + 13], 12, -40341101); + c = md5ff(c, d, a, b, x[i + 14], 17, -1502002290); + b = md5ff(b, c, d, a, x[i + 15], 22, 1236535329); + + a = md5gg(a, b, c, d, x[i + 1], 5, -165796510); + d = md5gg(d, a, b, c, x[i + 6], 9, -1069501632); + c = md5gg(c, d, a, b, x[i + 11], 14, 643717713); + b = md5gg(b, c, d, a, x[i], 20, -373897302); + a = md5gg(a, b, c, d, x[i + 5], 5, -701558691); + d = md5gg(d, a, b, c, x[i + 10], 9, 38016083); + c = md5gg(c, d, a, b, x[i + 15], 14, -660478335); + b = md5gg(b, c, d, a, x[i + 4], 20, -405537848); + a = md5gg(a, b, c, d, x[i + 9], 5, 568446438); + d = md5gg(d, a, b, c, x[i + 14], 9, -1019803690); + c = md5gg(c, d, a, b, x[i + 3], 14, -187363961); + b = md5gg(b, c, d, a, x[i + 8], 20, 1163531501); + a = md5gg(a, b, c, d, x[i + 13], 5, -1444681467); + d = md5gg(d, a, b, c, x[i + 2], 9, -51403784); + c = md5gg(c, d, a, b, x[i + 7], 14, 1735328473); + b = md5gg(b, c, d, a, x[i + 12], 20, -1926607734); + + a = md5hh(a, b, c, d, x[i + 5], 4, -378558); + d = md5hh(d, a, b, c, x[i + 8], 11, -2022574463); + c = md5hh(c, d, a, b, x[i + 11], 16, 1839030562); + b = md5hh(b, c, d, a, x[i + 14], 23, -35309556); + a = md5hh(a, b, c, d, x[i + 1], 4, -1530992060); + d = md5hh(d, a, b, c, x[i + 4], 11, 1272893353); + c = md5hh(c, d, a, b, x[i + 7], 16, -155497632); + b = md5hh(b, c, d, a, x[i + 10], 23, -1094730640); + a = md5hh(a, b, c, d, x[i + 13], 4, 681279174); + d = md5hh(d, a, b, c, x[i], 11, -358537222); + c = md5hh(c, d, a, b, x[i + 3], 16, -722521979); + b = md5hh(b, c, d, a, x[i + 6], 23, 76029189); + a = md5hh(a, b, c, d, x[i + 9], 4, -640364487); + d = md5hh(d, a, b, c, x[i + 12], 11, -421815835); + c = md5hh(c, d, a, b, x[i + 15], 16, 530742520); + b = md5hh(b, c, d, a, x[i + 2], 23, -995338651); + + a = md5ii(a, b, c, d, x[i], 6, -198630844); + d = md5ii(d, a, b, c, x[i + 7], 10, 1126891415); + c = md5ii(c, d, a, b, x[i + 14], 15, -1416354905); + b = md5ii(b, c, d, a, x[i + 5], 21, -57434055); + a = md5ii(a, b, c, d, x[i + 12], 6, 1700485571); + d = md5ii(d, a, b, c, x[i + 3], 10, -1894986606); + c = md5ii(c, d, a, b, x[i + 10], 15, -1051523); + b = md5ii(b, c, d, a, x[i + 1], 21, -2054922799); + a = md5ii(a, b, c, d, x[i + 8], 6, 1873313359); + d = md5ii(d, a, b, c, x[i + 15], 10, -30611744); + c = md5ii(c, d, a, b, x[i + 6], 15, -1560198380); + b = md5ii(b, c, d, a, x[i + 13], 21, 1309151649); + a = md5ii(a, b, c, d, x[i + 4], 6, -145523070); + d = md5ii(d, a, b, c, x[i + 11], 10, -1120210379); + c = md5ii(c, d, a, b, x[i + 2], 15, 718787259); + b = md5ii(b, c, d, a, x[i + 9], 21, -343485551); + + a = safeAdd(a, olda); + b = safeAdd(b, oldb); + c = safeAdd(c, oldc); + d = safeAdd(d, oldd); + } + return [a, b, c, d]; +} + +/* +* Convert an array of little-endian words to a string +*/ +function binl2rstr(input) { + var i; + var output = ''; + var length32 = input.length * 32; + for (i = 0; i < length32; i += 8) { + output += String.fromCharCode((input[i >> 5] >>> (i % 32)) & 0xff); + } + return output; +} + +/* +* Convert a raw string to an array of little-endian words +* Characters >255 have their high-byte silently ignored. +*/ +function rstr2binl(input) { + var i; + var output = []; + output[(input.length >> 2) - 1] = undefined; + for (i = 0; i < output.length; i += 1) { + output[i] = 0; + } + var length8 = input.length * 8; + for (i = 0; i < length8; i += 8) { + output[i >> 5] |= (input.charCodeAt(i / 8) & 0xff) << (i % 32); + } + return output; +} + +/* +* Calculate the MD5 of a raw string +*/ +function rstrMD5(s) { + return binl2rstr(binlMD5(rstr2binl(s), s.length * 8)); +} + +/* +* Calculate the HMAC-MD5, of a key and some data (raw strings) +*/ +function rstrHMACMD5(key, data) { + var i; + var bkey = rstr2binl(key); + var ipad = []; + var opad = []; + var hash; + ipad[15] = opad[15] = undefined; + if (bkey.length > 16) { + bkey = binlMD5(bkey, key.length * 8); + } + for (i = 0; i < 16; i += 1) { + ipad[i] = bkey[i] ^ 0x36363636; + opad[i] = bkey[i] ^ 0x5c5c5c5c; + } + hash = binlMD5(ipad.concat(rstr2binl(data)), 512 + data.length * 8); + return binl2rstr(binlMD5(opad.concat(hash), 512 + 128)); +} + +/* +* Convert a raw string to a hex string +*/ +function rstr2hex(input) { + var hexTab = '0123456789abcdef'; + var output = ''; + var x; + var i; + for (i = 0; i < input.length; i += 1) { + x = input.charCodeAt(i); + output += hexTab.charAt((x >>> 4) & 0x0f) + hexTab.charAt(x & 0x0f); + } + return output; +} + +/* +* Encode a string as utf-8 +*/ +function str2rstrUTF8(input) { + return unescape(encodeURIComponent(input)); +} + +/* +* Take string arguments and return either raw or hex encoded strings +*/ +function rawMD5(s) { + return rstrMD5(str2rstrUTF8(s)); +} +function hexMD5(s) { + return rstr2hex(rawMD5(s)); +} +function rawHMACMD5(k, d) { + return rstrHMACMD5(str2rstrUTF8(k), str2rstrUTF8(d)); +} +function hexHMACMD5(k, d) { + return rstr2hex(rawHMACMD5(k, d)); +} + +function md5(string, key, raw) { + if (!key) { + if (!raw) { + return hexMD5(string); + } + return rawMD5(string); + } + if (!raw) { + return hexHMACMD5(key, string); + } + return rawHMACMD5(key, string); +} + +module.exports = md5; + +},{}]},{},[6,1,2])(6) +}); \ No newline at end of file diff --git a/packages/raven-js/dist/angular,vue/raven.min.js b/packages/raven-js/dist/angular,vue/raven.min.js new file mode 100644 index 000000000000..e308b26955b5 --- /dev/null +++ b/packages/raven-js/dist/angular,vue/raven.min.js @@ -0,0 +1,4 @@ +/*! Raven.js 3.25.2 (30b6d4e) | github.com/getsentry/raven-js */ +!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.Raven=a()}}(function(){return function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};b[g][0].call(k.exports,function(a){var c=b[g][1][a];return e(c?c:a)},k,k.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;g":"anonymous component")+(a._isVue&&a.$options.__file?" at "+a.$options.__file:"")}function e(a,b){if(b=b||window.Vue,b&&b.config){var c=b.config.errorHandler;b.config.errorHandler=function(b,e,f){var g={};"[object Object]"===Object.prototype.toString.call(e)&&(g.componentName=d(e),g.propsData=e.$options.propsData),"undefined"!=typeof f&&(g.lifecycleHook=f),a.captureException(b,{extra:g}),"function"==typeof c&&c.call(this,b,e,f)}}}b.exports=e,a(6).addPlugin(b.exports)},{6:6}],3:[function(a,b,c){function d(a){this.name="RavenConfigError",this.message=a}d.prototype=new Error,d.prototype.constructor=d,b.exports=d},{}],4:[function(a,b,c){var d=a(7),e=function(a,b,c){var e=a[b],f=a;if(b in a){var g="warn"===b?"warning":b;a[b]=function(){var a=[].slice.call(arguments),h=d.safeJoin(a," "),i={level:g,logger:"console",extra:{arguments:a}};"assert"===b?a[0]===!1&&(h="Assertion failed: "+(d.safeJoin(a.slice(1)," ")||"console.assert"),i.extra.arguments=a.slice(1),c&&c(h,i)):c&&c(h,i),e&&Function.prototype.apply.call(e,f,a)}}};b.exports={wrapMethod:e}},{7:7}],5:[function(a,b,c){(function(c){function d(){return+new Date}function e(a,b){return s(b)?function(c){return b(c,a)}:b}function f(){this.b=!("object"!=typeof JSON||!JSON.stringify),this.c=!r(S),this.d=!r(T),this.e=null,this.f=null,this.g=null,this.h=null,this.i=null,this.j=null,this.k={},this.l={release:R.SENTRY_RELEASE&&R.SENTRY_RELEASE.id,logger:"javascript",ignoreErrors:[],ignoreUrls:[],whitelistUrls:[],includePaths:[],headers:null,collectWindowErrors:!0,captureUnhandledRejections:!0,maxMessageLength:0,maxUrlLength:250,stackTraceLimit:50,autoBreadcrumbs:!0,instrument:!0,sampleRate:1,sanitizeKeys:[]},this.m={method:"POST",keepalive:!0,referrerPolicy:K()?"origin":""},this.n=0,this.o=!1,this.p=Error.stackTraceLimit,this.q=R.console||{},this.r={},this.s=[],this.t=d(),this.u=[],this.v=[],this.w=null,this.x=R.location,this.y=this.x&&this.x.href,this.z();for(var a in this.q)this.r[a]=this.q[a]}var g=a(8),h=a(9),i=a(10),j=a(3),k=a(7),l=k.isErrorEvent,m=k.isDOMError,n=k.isDOMException,o=k.isError,p=k.isObject,q=k.isPlainObject,r=k.isUndefined,s=k.isFunction,t=k.isString,u=k.isArray,v=k.isEmptyObject,w=k.each,x=k.objectMerge,y=k.truncate,z=k.objectFrozen,A=k.hasKey,B=k.joinRegExp,C=k.urlencode,D=k.uuid4,E=k.htmlTreeAsString,F=k.isSameException,G=k.isSameStacktrace,H=k.parseUrl,I=k.fill,J=k.supportsFetch,K=k.supportsReferrerPolicy,L=k.serializeKeysForMessage,M=k.serializeException,N=k.sanitize,O=a(4).wrapMethod,P="source protocol user pass host port path".split(" "),Q=/^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/,R="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},S=R.document,T=R.navigator;f.prototype={VERSION:"3.25.2",debug:!1,TraceKit:g,config:function(a,b){var c=this;if(c.h)return this.A("error","Error: Raven has already been configured"),c;if(!a)return c;var d=c.l;b&&w(b,function(a,b){"tags"===a||"extra"===a||"user"===a?c.k[a]=b:d[a]=b}),c.setDSN(a),d.ignoreErrors.push(/^Script error\.?$/),d.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/),d.ignoreErrors=B(d.ignoreErrors),d.ignoreUrls=!!d.ignoreUrls.length&&B(d.ignoreUrls),d.whitelistUrls=!!d.whitelistUrls.length&&B(d.whitelistUrls),d.includePaths=B(d.includePaths),d.maxBreadcrumbs=Math.max(0,Math.min(d.maxBreadcrumbs||100,100));var e={xhr:!0,console:!0,dom:!0,location:!0,sentry:!0},f=d.autoBreadcrumbs;"[object Object]"==={}.toString.call(f)?f=x(e,f):f!==!1&&(f=e),d.autoBreadcrumbs=f;var h={tryCatch:!0},i=d.instrument;return"[object Object]"==={}.toString.call(i)?i=x(h,i):i!==!1&&(i=h),d.instrument=i,g.collectWindowErrors=!!d.collectWindowErrors,c},install:function(){var a=this;return a.isSetup()&&!a.o&&(g.report.subscribe(function(){a.B.apply(a,arguments)}),a.l.captureUnhandledRejections&&a.C(),a.D(),a.l.instrument&&a.l.instrument.tryCatch&&a.E(),a.l.autoBreadcrumbs&&a.F(),a.G(),a.o=!0),Error.stackTraceLimit=a.l.stackTraceLimit,this},setDSN:function(a){var b=this,c=b.H(a),d=c.path.lastIndexOf("/"),e=c.path.substr(1,d);b.I=a,b.i=c.user,b.J=c.pass&&c.pass.substr(1),b.j=c.path.substr(d+1),b.h=b.K(c),b.L=b.h+"/"+e+"api/"+b.j+"/store/",this.z()},context:function(a,b,c){return s(a)&&(c=b||[],b=a,a=void 0),this.wrap(a,b).apply(this,c)},wrap:function(a,b,c){function d(){var d=[],f=arguments.length,g=!a||a&&a.deep!==!1;for(c&&s(c)&&c.apply(this,arguments);f--;)d[f]=g?e.wrap(a,arguments[f]):arguments[f];try{return b.apply(this,d)}catch(h){throw e.M(),e.captureException(h,a),h}}var e=this;if(r(b)&&!s(a))return a;if(s(a)&&(b=a,a=void 0),!s(b))return b;try{if(b.N)return b;if(b.O)return b.O}catch(f){return b}for(var g in b)A(b,g)&&(d[g]=b[g]);return d.prototype=b.prototype,b.O=d,d.N=!0,d.P=b,d},uninstall:function(){return g.report.uninstall(),this.Q(),this.R(),this.S(),this.T(),Error.stackTraceLimit=this.p,this.o=!1,this},U:function(a){this.A("debug","Raven caught unhandled promise rejection:",a),this.captureException(a.reason,{extra:{unhandledPromiseRejection:!0}})},C:function(){return this.U=this.U.bind(this),R.addEventListener&&R.addEventListener("unhandledrejection",this.U),this},Q:function(){return R.removeEventListener&&R.removeEventListener("unhandledrejection",this.U),this},captureException:function(a,b){if(b=x({trimHeadFrames:0},b?b:{}),l(a)&&a.error)a=a.error;else{if(m(a)||n(a)){var c=a.name||(m(a)?"DOMError":"DOMException"),d=a.message?c+": "+a.message:c;return this.captureMessage(d,x(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}))}if(o(a))a=a;else{if(!q(a))return this.captureMessage(a,x(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}));b=this.V(b,a),a=new Error(b.message)}}this.e=a;try{var e=g.computeStackTrace(a);this.W(e,b)}catch(f){if(a!==f)throw f}return this},V:function(a,b){var c=Object.keys(b).sort(),d=x(a,{message:"Non-Error exception captured with keys: "+L(c),fingerprint:[i(c)],extra:a.extra||{}});return d.extra.X=M(b),d},captureMessage:function(a,b){if(!this.l.ignoreErrors.test||!this.l.ignoreErrors.test(a)){b=b||{},a+="";var c,d=x({message:a},b);try{throw new Error(a)}catch(e){c=e}c.name=null;var f=g.computeStackTrace(c),h=u(f.stack)&&f.stack[1];h&&"Raven.captureException"===h.func&&(h=f.stack[2]);var i=h&&h.url||"";if((!this.l.ignoreUrls.test||!this.l.ignoreUrls.test(i))&&(!this.l.whitelistUrls.test||this.l.whitelistUrls.test(i))){if(this.l.stacktrace||b&&b.stacktrace){d.fingerprint=null==d.fingerprint?a:d.fingerprint,b=x({trimHeadFrames:0},b),b.trimHeadFrames+=1;var j=this.Y(f,b);d.stacktrace={frames:j.reverse()}}return d.fingerprint&&(d.fingerprint=u(d.fingerprint)?d.fingerprint:[d.fingerprint]),this.Z(d),this}}},captureBreadcrumb:function(a){var b=x({timestamp:d()/1e3},a);if(s(this.l.breadcrumbCallback)){var c=this.l.breadcrumbCallback(b);if(p(c)&&!v(c))b=c;else if(c===!1)return this}return this.v.push(b),this.v.length>this.l.maxBreadcrumbs&&this.v.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.s.push([a,b]),this.o&&this.G(),this},setUserContext:function(a){return this.k.user=a,this},setExtraContext:function(a){return this.$("extra",a),this},setTagsContext:function(a){return this.$("tags",a),this},clearContext:function(){return this.k={},this},getContext:function(){return JSON.parse(h(this.k))},setEnvironment:function(a){return this.l.environment=a,this},setRelease:function(a){return this.l.release=a,this},setDataCallback:function(a){var b=this.l.dataCallback;return this.l.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.l.breadcrumbCallback;return this.l.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.l.shouldSendCallback;return this.l.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.l.transport=a,this},lastException:function(){return this.e},lastEventId:function(){return this.g},isSetup:function(){return!!this.b&&(!!this.h||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.A("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=R.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(S){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.I;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.k.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.K(this.H(c)),h=S.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(S.head||S.body).appendChild(h)}},M:function(){var a=this;this.n+=1,setTimeout(function(){a.n-=1})},_:function(a,b){var c,d;if(this.c){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),S.createEvent?(c=S.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=S.createEventObject(),c.eventType=a);for(d in b)A(b,d)&&(c[d]=b[d]);if(S.createEvent)S.dispatchEvent(c);else try{S.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},aa:function(a){var b=this;return function(c){if(b.ba=null,b.w!==c){b.w=c;var d;try{d=E(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ca:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.ba;g||a.aa("input")(c),clearTimeout(g),a.ba=setTimeout(function(){a.ba=null},b)}}},da:function(a,b){var c=H(this.x.href),d=H(b),e=H(a);this.y=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},D:function(){var a=this;a.ea=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.N?a.ea.apply(this.P,arguments):a.ea.apply(this,arguments)}},R:function(){this.ea&&(Function.prototype.toString=this.ea)},E:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.da(b.y,c+""),a.apply(this,arguments)}};I(R.history,"pushState",j,d),I(R.history,"replaceState",j,d)}if(c.console&&"console"in R&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};w(["debug","info","warn","error","log"],function(a,b){O(console,b,k)})}},S:function(){for(var a;this.u.length;){a=this.u.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},T:function(){for(var a in this.r)this.q[a]=this.r[a]},G:function(){var a=this;w(this.s,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},H:function(a){var b=Q.exec(a),c={},d=7;try{for(;d--;)c[P[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.l.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},K:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},B:function(){this.n||this.W.apply(this,arguments)},W:function(a,b){var c=this.Y(a,b);this._("handle",{stackInfo:a,options:b}),this.ga(a.name,a.message,a.url,a.lineno,c,b)},Y:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(w(a.stack,function(b,e){var f=c.ha(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.v,0)}),this.k.user&&(a.user=this.k.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),a=this.qa(a),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||v(a[b]))&&delete a[b]}),s(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!v(a)&&(!s(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.na()?void this.A("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function F(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&l(b))for(c=b.split(/\s+/),f=0;fc?Q(a,b-1):d}function R(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?X:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function S(a,b){function c(a){return m(a)?a.map(function(a){return c(a)}):k(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!m(b)||m(b)&&0===b.length)return a;var d,e=A(b),f="********";try{d=JSON.parse(T(a))}catch(g){return a}return c(d)}var T=a(9),U="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},V=3,W=51200,X=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isDOMError:g,isDOMException:h,isUndefined:i,isFunction:j,isPlainObject:k,isString:l,isArray:m,isEmptyObject:n,supportsErrorEvent:o,supportsDOMError:p,supportsDOMException:q,supportsFetch:r,supportsReferrerPolicy:s,supportsPromiseRejectionEvent:t,wrappedCallback:u,each:v,objectMerge:w,truncate:y,objectFrozen:x,hasKey:z,joinRegExp:A,urlencode:B,uuid4:D,htmlTreeAsString:E,htmlElementAsString:F,isSameException:I,isSameStacktrace:J,parseUrl:C,fill:K,safeJoin:L,serializeException:Q,serializeKeysForMessage:R,sanitize:S}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{9:9}],8:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}function e(){return"undefined"==typeof document||null==document.location?"":(document.location.origin||(document.location.origin=document.location.protocol+"//"+document.location.hostname+(document.location.port?":"+document.location.port:"")),document.location.origin)}var f=a(7),g={collectWindowErrors:!0,debug:!1},h="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},i=[].slice,j="?",k=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;g.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function e(a,b){var c=null;if(!b||g.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(i.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,h,i){var l=null,m=f.isErrorEvent(i)?i.error:i,n=f.isErrorEvent(a)?a.message:a;if(v)g.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&f.isError(m))l=g.computeStackTrace(m),e(l,!0);else{var p,r={url:b,line:c,column:h},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(k);p&&(s=p[1],n=p[2])}r.func=j,l={name:s,message:n,url:d(),stack:[r]},e(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=h.onerror,h.onerror=l,r=!0)}function n(){r&&(h.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,e.apply(null,[a,!1].concat(b))}function p(a,b){var c=i.call(arguments,1);if(v){if(u===a)return;o()}var d=g.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),g.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,f,g=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,h=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,i=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,k=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,l=/\((\S*)(?::(\d+))(?::(\d+))\)/,m=a.stack.split("\n"),n=[],o=(/^(.*) is undefined$/.exec(a.message),0),p=m.length;o eval")>-1;r&&(b=k.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==o||c[5]||"undefined"==typeof a.columnNumber||(n[0].column=a.columnNumber+1),f={url:c[3],func:c[1]||j,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}if(!f.func&&f.line&&(f.func=j),f.url&&"blob:"===f.url.substr(0,5)){var s=new XMLHttpRequest;if(s.open("GET",f.url,!1),s.send(null),200===s.status){var t=s.responseText||"";t=t.slice(-300);var u=t.match(/\/\/# sourceMappingURL=(.*)$/); +if(u){var v=u[1];"~"===v.charAt(0)&&(v=e()+v.slice(1)),f.url=v.slice(0,-4)}}}n.push(f)}return n.length?{name:a.name,message:a.message,url:d(),stack:n}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=j),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,e){for(var h,i,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==f&&o!==g.report){if(i={url:null,func:j,line:null,column:null},o.name?i.func=o.name:(h=k.exec(o.toString()))&&(i.func=h[1]),"undefined"==typeof i.func)try{i.func=h.input.substring(0,h.input.indexOf("{"))}catch(p){}m[""+o]?n=!0:m[""+o]=!0,l.push(i)}e&&l.splice(0,e);var q={name:a.name,message:a.message,url:d(),stack:l};return b(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),q}function f(b,e){var f=null;e=null==e?0:+e;try{if(f=a(b))return f}catch(h){if(g.debug)throw h}try{if(f=c(b,e+1))return f}catch(h){if(g.debug)throw h}return{name:b.name,message:b.message,url:d()}}return f.augmentStackTraceWithInitialElement=b,f.computeStackTraceFromStackProp=a,f}(),b.exports=g}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{7:7}],9:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}],10:[function(a,b,c){function d(a,b){var c=(65535&a)+(65535&b),d=(a>>16)+(b>>16)+(c>>16);return d<<16|65535&c}function e(a,b){return a<>>32-b}function f(a,b,c,f,g,h){return d(e(d(d(b,a),d(f,h)),g),c)}function g(a,b,c,d,e,g,h){return f(b&c|~b&d,a,b,e,g,h)}function h(a,b,c,d,e,g,h){return f(b&d|c&~d,a,b,e,g,h)}function i(a,b,c,d,e,g,h){return f(b^c^d,a,b,e,g,h)}function j(a,b,c,d,e,g,h){return f(c^(b|~d),a,b,e,g,h)}function k(a,b){a[b>>5]|=128<>>9<<4)+14]=b;var c,e,f,k,l,m=1732584193,n=-271733879,o=-1732584194,p=271733878;for(c=0;c>5]>>>b%32&255);return c}function m(a){var b,c=[];for(c[(a.length>>2)-1]=void 0,b=0;b>5]|=(255&a.charCodeAt(b/8))<16&&(e=k(e,8*a.length)),c=0;c<16;c+=1)f[c]=909522486^e[c],g[c]=1549556828^e[c];return d=k(f.concat(m(b)),512+8*b.length),l(k(g.concat(d),640))}function p(a){var b,c,d="0123456789abcdef",e="";for(c=0;c>>4&15)+d.charAt(15&b);return e}function q(a){return unescape(encodeURIComponent(a))}function r(a){return n(q(a))}function s(a){return p(r(a))}function t(a,b){return o(q(a),q(b))}function u(a,b){return p(t(a,b))}function v(a,b,c){return b?c?t(b,a):u(b,a):c?r(a):s(a)}b.exports=v},{}]},{},[6,1,2])(6)}); +//# sourceMappingURL=raven.min.js.map \ No newline at end of file diff --git a/packages/raven-js/dist/angular,vue/raven.min.js.map b/packages/raven-js/dist/angular,vue/raven.min.js.map new file mode 100644 index 000000000000..947b6f6994f4 --- /dev/null +++ b/packages/raven-js/dist/angular,vue/raven.min.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","angularPlugin","angular","RavenProvider","$get","$window","ExceptionHandlerProvider","$provide","decorator","exceptionHandler","R","$delegate","ex","cause","captureException","extra","moduleName","provider","config","setDataCallback","wrappedCallback","data","_normalizeData","angularPattern","exception","values","matches","exec","value","type","message","angularDocs","substr","addPlugin","6","7","2","formatComponentName","vm","$root","name","_isVue","$options","_componentTag","__file","vuePlugin","Vue","_oldOnError","errorHandler","error","info","metaData","Object","prototype","toString","componentName","propsData","lifecycleHook","3","RavenConfigError","constructor","4","utils","wrapMethod","console","level","callback","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","msg","safeJoin","logger","Function","apply","5","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","sanitizeKeys","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isErrorEvent","isDOMError","isDOMException","isError","isObject","isPlainObject","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","sanitize","wrapConsoleMethod","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","dsn","options","_logDebug","globalOptions","key","setDSN","push","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","context","func","undefined","wrap","_before","wrapped","deep","_ignoreNextOnError","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","U","event","reason","unhandledPromiseRejection","C","_promiseRejectionHandler","bind","addEventListener","Q","removeEventListener","trimHeadFrames","captureMessage","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","V","currentOptions","exKeys","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","M","setTimeout","_","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","aa","evtName","_keypressTimeout","target","category","ca","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","da","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","D","_originalFunctionToString","E","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","F","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","S","builtin","T","G","installer","concat","H","str","m","allowSecretKey","K","port","B","W","stackInfo","_triggerEvent","_processException","lineno","Y","frame","_normalizeFrame","in_app","ha","stackInfoUrl","normalized","filename","line","colno","column","function","ga","prefixedMessage","transaction","ia","request","Referer","breadcrumbs","_trimBreadcrumbs","ja","urlProp","urlProps","ka","httpData","userAgent","User-Agent","referrer","z","_backoffDuration","_backoffStart","na","oa","current","last","pa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Z","baseData","project","platform","_getHttpData","serverName","server_name","_sanitizeData","forEach","random","_sendProcessedPayload","qa","sa","ra","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","ta","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","onerror","open","setRequestHeader","send","ua","hash","evaluated","A","$","setUser","setReleaseContext","10","8","9","RavenConstructor","_Raven","noConflict","Client","what","supportsErrorEvent","ErrorEvent","supportsDOMError","DOMError","supportsDOMException","DOMException","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","sanitizeMask","safeInput","o_O","getLocationHref","getLocationOrigin","origin","hostname","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","responseText","sourceMaps","sourceMapAddress","charAt","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","y","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","string","raw"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file diff --git a/packages/raven-js/dist/angular/raven.js b/packages/raven-js/dist/angular/raven.js new file mode 100644 index 000000000000..2286bc05e6b4 --- /dev/null +++ b/packages/raven-js/dist/angular/raven.js @@ -0,0 +1,4087 @@ +/*! Raven.js 3.25.2 (30b6d4e) | github.com/getsentry/raven-js */ + +/* + * Includes TraceKit + * https://github.com/getsentry/TraceKit + * + * Copyright 2018 Matt Robenolt and other contributors + * Released under the BSD license + * https://github.com/getsentry/raven-js/blob/master/LICENSE + * + */ + +(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.Raven = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o captureException(string) => captureMessage(string) + if (initialCall && initialCall.func === 'Raven.captureException') { + initialCall = stack.stack[2]; + } + + var fileurl = (initialCall && initialCall.url) || ''; + + if ( + !!this._globalOptions.ignoreUrls.test && + this._globalOptions.ignoreUrls.test(fileurl) + ) { + return; + } + + if ( + !!this._globalOptions.whitelistUrls.test && + !this._globalOptions.whitelistUrls.test(fileurl) + ) { + return; + } + + if (this._globalOptions.stacktrace || (options && options.stacktrace)) { + // fingerprint on msg, not stack trace (legacy behavior, could be revisited) + data.fingerprint = data.fingerprint == null ? msg : data.fingerprint; + + options = objectMerge( + { + trimHeadFrames: 0 + }, + options + ); + // Since we know this is a synthetic trace, the top frame (this function call) + // MUST be from Raven.js, so mark it for trimming + // We add to the trim counter so that callers can choose to trim extra frames, such + // as utility functions. + options.trimHeadFrames += 1; + + var frames = this._prepareFrames(stack, options); + data.stacktrace = { + // Sentry expects frames oldest to newest + frames: frames.reverse() + }; + } + + // Make sure that fingerprint is always wrapped in an array + if (data.fingerprint) { + data.fingerprint = isArray(data.fingerprint) + ? data.fingerprint + : [data.fingerprint]; + } + + // Fire away! + this._send(data); + + return this; + }, + + captureBreadcrumb: function(obj) { + var crumb = objectMerge( + { + timestamp: now() / 1000 + }, + obj + ); + + if (isFunction(this._globalOptions.breadcrumbCallback)) { + var result = this._globalOptions.breadcrumbCallback(crumb); + + if (isObject(result) && !isEmptyObject(result)) { + crumb = result; + } else if (result === false) { + return this; + } + } + + this._breadcrumbs.push(crumb); + if (this._breadcrumbs.length > this._globalOptions.maxBreadcrumbs) { + this._breadcrumbs.shift(); + } + return this; + }, + + addPlugin: function(plugin /*arg1, arg2, ... argN*/) { + var pluginArgs = [].slice.call(arguments, 1); + + this._plugins.push([plugin, pluginArgs]); + if (this._isRavenInstalled) { + this._drainPlugins(); + } + + return this; + }, + + /* + * Set/clear a user to be sent along with the payload. + * + * @param {object} user An object representing user data [optional] + * @return {Raven} + */ + setUserContext: function(user) { + // Intentionally do not merge here since that's an unexpected behavior. + this._globalContext.user = user; + + return this; + }, + + /* + * Merge extra attributes to be sent along with the payload. + * + * @param {object} extra An object representing extra data [optional] + * @return {Raven} + */ + setExtraContext: function(extra) { + this._mergeContext('extra', extra); + + return this; + }, + + /* + * Merge tags to be sent along with the payload. + * + * @param {object} tags An object representing tags [optional] + * @return {Raven} + */ + setTagsContext: function(tags) { + this._mergeContext('tags', tags); + + return this; + }, + + /* + * Clear all of the context. + * + * @return {Raven} + */ + clearContext: function() { + this._globalContext = {}; + + return this; + }, + + /* + * Get a copy of the current context. This cannot be mutated. + * + * @return {object} copy of context + */ + getContext: function() { + // lol javascript + return JSON.parse(stringify(this._globalContext)); + }, + + /* + * Set environment of application + * + * @param {string} environment Typically something like 'production'. + * @return {Raven} + */ + setEnvironment: function(environment) { + this._globalOptions.environment = environment; + + return this; + }, + + /* + * Set release version of application + * + * @param {string} release Typically something like a git SHA to identify version + * @return {Raven} + */ + setRelease: function(release) { + this._globalOptions.release = release; + + return this; + }, + + /* + * Set the dataCallback option + * + * @param {function} callback The callback to run which allows the + * data blob to be mutated before sending + * @return {Raven} + */ + setDataCallback: function(callback) { + var original = this._globalOptions.dataCallback; + this._globalOptions.dataCallback = keepOriginalCallback(original, callback); + return this; + }, + + /* + * Set the breadcrumbCallback option + * + * @param {function} callback The callback to run which allows filtering + * or mutating breadcrumbs + * @return {Raven} + */ + setBreadcrumbCallback: function(callback) { + var original = this._globalOptions.breadcrumbCallback; + this._globalOptions.breadcrumbCallback = keepOriginalCallback(original, callback); + return this; + }, + + /* + * Set the shouldSendCallback option + * + * @param {function} callback The callback to run which allows + * introspecting the blob before sending + * @return {Raven} + */ + setShouldSendCallback: function(callback) { + var original = this._globalOptions.shouldSendCallback; + this._globalOptions.shouldSendCallback = keepOriginalCallback(original, callback); + return this; + }, + + /** + * Override the default HTTP transport mechanism that transmits data + * to the Sentry server. + * + * @param {function} transport Function invoked instead of the default + * `makeRequest` handler. + * + * @return {Raven} + */ + setTransport: function(transport) { + this._globalOptions.transport = transport; + + return this; + }, + + /* + * Get the latest raw exception that was captured by Raven. + * + * @return {error} + */ + lastException: function() { + return this._lastCapturedException; + }, + + /* + * Get the last event id + * + * @return {string} + */ + lastEventId: function() { + return this._lastEventId; + }, + + /* + * Determine if Raven is setup and ready to go. + * + * @return {boolean} + */ + isSetup: function() { + if (!this._hasJSON) return false; // needs JSON support + if (!this._globalServer) { + if (!this.ravenNotConfiguredError) { + this.ravenNotConfiguredError = true; + this._logDebug('error', 'Error: Raven has not been configured.'); + } + return false; + } + return true; + }, + + afterLoad: function() { + // TODO: remove window dependence? + + // Attempt to initialize Raven on load + var RavenConfig = _window.RavenConfig; + if (RavenConfig) { + this.config(RavenConfig.dsn, RavenConfig.config).install(); + } + }, + + showReportDialog: function(options) { + if ( + !_document // doesn't work without a document (React native) + ) + return; + + options = options || {}; + + var lastEventId = options.eventId || this.lastEventId(); + if (!lastEventId) { + throw new RavenConfigError('Missing eventId'); + } + + var dsn = options.dsn || this._dsn; + if (!dsn) { + throw new RavenConfigError('Missing DSN'); + } + + var encode = encodeURIComponent; + var qs = ''; + qs += '?eventId=' + encode(lastEventId); + qs += '&dsn=' + encode(dsn); + + var user = options.user || this._globalContext.user; + if (user) { + if (user.name) qs += '&name=' + encode(user.name); + if (user.email) qs += '&email=' + encode(user.email); + } + + var globalServer = this._getGlobalServer(this._parseDSN(dsn)); + + var script = _document.createElement('script'); + script.async = true; + script.src = globalServer + '/api/embed/error-page/' + qs; + (_document.head || _document.body).appendChild(script); + }, + + /**** Private functions ****/ + _ignoreNextOnError: function() { + var self = this; + this._ignoreOnError += 1; + setTimeout(function() { + // onerror should trigger before setTimeout + self._ignoreOnError -= 1; + }); + }, + + _triggerEvent: function(eventType, options) { + // NOTE: `event` is a native browser thing, so let's avoid conflicting wiht it + var evt, key; + + if (!this._hasDocument) return; + + options = options || {}; + + eventType = 'raven' + eventType.substr(0, 1).toUpperCase() + eventType.substr(1); + + if (_document.createEvent) { + evt = _document.createEvent('HTMLEvents'); + evt.initEvent(eventType, true, true); + } else { + evt = _document.createEventObject(); + evt.eventType = eventType; + } + + for (key in options) + if (hasKey(options, key)) { + evt[key] = options[key]; + } + + if (_document.createEvent) { + // IE9 if standards + _document.dispatchEvent(evt); + } else { + // IE8 regardless of Quirks or Standards + // IE9 if quirks + try { + _document.fireEvent('on' + evt.eventType.toLowerCase(), evt); + } catch (e) { + // Do nothing + } + } + }, + + /** + * Wraps addEventListener to capture UI breadcrumbs + * @param evtName the event name (e.g. "click") + * @returns {Function} + * @private + */ + _breadcrumbEventHandler: function(evtName) { + var self = this; + return function(evt) { + // reset keypress timeout; e.g. triggering a 'click' after + // a 'keypress' will reset the keypress debounce so that a new + // set of keypresses can be recorded + self._keypressTimeout = null; + + // It's possible this handler might trigger multiple times for the same + // event (e.g. event propagation through node ancestors). Ignore if we've + // already captured the event. + if (self._lastCapturedEvent === evt) return; + + self._lastCapturedEvent = evt; + + // try/catch both: + // - accessing evt.target (see getsentry/raven-js#838, #768) + // - `htmlTreeAsString` because it's complex, and just accessing the DOM incorrectly + // can throw an exception in some circumstances. + var target; + try { + target = htmlTreeAsString(evt.target); + } catch (e) { + target = ''; + } + + self.captureBreadcrumb({ + category: 'ui.' + evtName, // e.g. ui.click, ui.input + message: target + }); + }; + }, + + /** + * Wraps addEventListener to capture keypress UI events + * @returns {Function} + * @private + */ + _keypressEventHandler: function() { + var self = this, + debounceDuration = 1000; // milliseconds + + // TODO: if somehow user switches keypress target before + // debounce timeout is triggered, we will only capture + // a single breadcrumb from the FIRST target (acceptable?) + return function(evt) { + var target; + try { + target = evt.target; + } catch (e) { + // just accessing event properties can throw an exception in some rare circumstances + // see: https://github.com/getsentry/raven-js/issues/838 + return; + } + var tagName = target && target.tagName; + + // only consider keypress events on actual input elements + // this will disregard keypresses targeting body (e.g. tabbing + // through elements, hotkeys, etc) + if ( + !tagName || + (tagName !== 'INPUT' && tagName !== 'TEXTAREA' && !target.isContentEditable) + ) + return; + + // record first keypress in a series, but ignore subsequent + // keypresses until debounce clears + var timeout = self._keypressTimeout; + if (!timeout) { + self._breadcrumbEventHandler('input')(evt); + } + clearTimeout(timeout); + self._keypressTimeout = setTimeout(function() { + self._keypressTimeout = null; + }, debounceDuration); + }; + }, + + /** + * Captures a breadcrumb of type "navigation", normalizing input URLs + * @param to the originating URL + * @param from the target URL + * @private + */ + _captureUrlChange: function(from, to) { + var parsedLoc = parseUrl(this._location.href); + var parsedTo = parseUrl(to); + var parsedFrom = parseUrl(from); + + // because onpopstate only tells you the "new" (to) value of location.href, and + // not the previous (from) value, we need to track the value of the current URL + // state ourselves + this._lastHref = to; + + // Use only the path component of the URL if the URL matches the current + // document (almost all the time when using pushState) + if (parsedLoc.protocol === parsedTo.protocol && parsedLoc.host === parsedTo.host) + to = parsedTo.relative; + if (parsedLoc.protocol === parsedFrom.protocol && parsedLoc.host === parsedFrom.host) + from = parsedFrom.relative; + + this.captureBreadcrumb({ + category: 'navigation', + data: { + to: to, + from: from + } + }); + }, + + _patchFunctionToString: function() { + var self = this; + self._originalFunctionToString = Function.prototype.toString; + // eslint-disable-next-line no-extend-native + Function.prototype.toString = function() { + if (typeof this === 'function' && this.__raven__) { + return self._originalFunctionToString.apply(this.__orig__, arguments); + } + return self._originalFunctionToString.apply(this, arguments); + }; + }, + + _unpatchFunctionToString: function() { + if (this._originalFunctionToString) { + // eslint-disable-next-line no-extend-native + Function.prototype.toString = this._originalFunctionToString; + } + }, + + /** + * Wrap timer functions and event targets to catch errors and provide + * better metadata. + */ + _instrumentTryCatch: function() { + var self = this; + + var wrappedBuiltIns = self._wrappedBuiltIns; + + function wrapTimeFn(orig) { + return function(fn, t) { + // preserve arity + // Make a copy of the arguments to prevent deoptimization + // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments + var args = new Array(arguments.length); + for (var i = 0; i < args.length; ++i) { + args[i] = arguments[i]; + } + var originalCallback = args[0]; + if (isFunction(originalCallback)) { + args[0] = self.wrap(originalCallback); + } + + // IE < 9 doesn't support .call/.apply on setInterval/setTimeout, but it + // also supports only two arguments and doesn't care what this is, so we + // can just call the original function directly. + if (orig.apply) { + return orig.apply(this, args); + } else { + return orig(args[0], args[1]); + } + }; + } + + var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; + + function wrapEventTarget(global) { + var proto = _window[global] && _window[global].prototype; + if (proto && proto.hasOwnProperty && proto.hasOwnProperty('addEventListener')) { + fill( + proto, + 'addEventListener', + function(orig) { + return function(evtName, fn, capture, secure) { + // preserve arity + try { + if (fn && fn.handleEvent) { + fn.handleEvent = self.wrap(fn.handleEvent); + } + } catch (err) { + // can sometimes get 'Permission denied to access property "handle Event' + } + + // More breadcrumb DOM capture ... done here and not in `_instrumentBreadcrumbs` + // so that we don't have more than one wrapper function + var before, clickHandler, keypressHandler; + + if ( + autoBreadcrumbs && + autoBreadcrumbs.dom && + (global === 'EventTarget' || global === 'Node') + ) { + // NOTE: generating multiple handlers per addEventListener invocation, should + // revisit and verify we can just use one (almost certainly) + clickHandler = self._breadcrumbEventHandler('click'); + keypressHandler = self._keypressEventHandler(); + before = function(evt) { + // need to intercept every DOM event in `before` argument, in case that + // same wrapped method is re-used for different events (e.g. mousemove THEN click) + // see #724 + if (!evt) return; + + var eventType; + try { + eventType = evt.type; + } catch (e) { + // just accessing event properties can throw an exception in some rare circumstances + // see: https://github.com/getsentry/raven-js/issues/838 + return; + } + if (eventType === 'click') return clickHandler(evt); + else if (eventType === 'keypress') return keypressHandler(evt); + }; + } + return orig.call( + this, + evtName, + self.wrap(fn, undefined, before), + capture, + secure + ); + }; + }, + wrappedBuiltIns + ); + fill( + proto, + 'removeEventListener', + function(orig) { + return function(evt, fn, capture, secure) { + try { + fn = fn && (fn.__raven_wrapper__ ? fn.__raven_wrapper__ : fn); + } catch (e) { + // ignore, accessing __raven_wrapper__ will throw in some Selenium environments + } + return orig.call(this, evt, fn, capture, secure); + }; + }, + wrappedBuiltIns + ); + } + } + + fill(_window, 'setTimeout', wrapTimeFn, wrappedBuiltIns); + fill(_window, 'setInterval', wrapTimeFn, wrappedBuiltIns); + if (_window.requestAnimationFrame) { + fill( + _window, + 'requestAnimationFrame', + function(orig) { + return function(cb) { + return orig(self.wrap(cb)); + }; + }, + wrappedBuiltIns + ); + } + + // event targets borrowed from bugsnag-js: + // https://github.com/bugsnag/bugsnag-js/blob/master/src/bugsnag.js#L666 + var eventTargets = [ + 'EventTarget', + 'Window', + 'Node', + 'ApplicationCache', + 'AudioTrackList', + 'ChannelMergerNode', + 'CryptoOperation', + 'EventSource', + 'FileReader', + 'HTMLUnknownElement', + 'IDBDatabase', + 'IDBRequest', + 'IDBTransaction', + 'KeyOperation', + 'MediaController', + 'MessagePort', + 'ModalWindow', + 'Notification', + 'SVGElementInstance', + 'Screen', + 'TextTrack', + 'TextTrackCue', + 'TextTrackList', + 'WebSocket', + 'WebSocketWorker', + 'Worker', + 'XMLHttpRequest', + 'XMLHttpRequestEventTarget', + 'XMLHttpRequestUpload' + ]; + for (var i = 0; i < eventTargets.length; i++) { + wrapEventTarget(eventTargets[i]); + } + }, + + /** + * Instrument browser built-ins w/ breadcrumb capturing + * - XMLHttpRequests + * - DOM interactions (click/typing) + * - window.location changes + * - console + * + * Can be disabled or individually configured via the `autoBreadcrumbs` config option + */ + _instrumentBreadcrumbs: function() { + var self = this; + var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; + + var wrappedBuiltIns = self._wrappedBuiltIns; + + function wrapProp(prop, xhr) { + if (prop in xhr && isFunction(xhr[prop])) { + fill(xhr, prop, function(orig) { + return self.wrap(orig); + }); // intentionally don't track filled methods on XHR instances + } + } + + if (autoBreadcrumbs.xhr && 'XMLHttpRequest' in _window) { + var xhrproto = _window.XMLHttpRequest && _window.XMLHttpRequest.prototype; + fill( + xhrproto, + 'open', + function(origOpen) { + return function(method, url) { + // preserve arity + + // if Sentry key appears in URL, don't capture + if (isString(url) && url.indexOf(self._globalKey) === -1) { + this.__raven_xhr = { + method: method, + url: url, + status_code: null + }; + } + + return origOpen.apply(this, arguments); + }; + }, + wrappedBuiltIns + ); + + fill( + xhrproto, + 'send', + function(origSend) { + return function() { + // preserve arity + var xhr = this; + + function onreadystatechangeHandler() { + if (xhr.__raven_xhr && xhr.readyState === 4) { + try { + // touching statusCode in some platforms throws + // an exception + xhr.__raven_xhr.status_code = xhr.status; + } catch (e) { + /* do nothing */ + } + + self.captureBreadcrumb({ + type: 'http', + category: 'xhr', + data: xhr.__raven_xhr + }); + } + } + + var props = ['onload', 'onerror', 'onprogress']; + for (var j = 0; j < props.length; j++) { + wrapProp(props[j], xhr); + } + + if ('onreadystatechange' in xhr && isFunction(xhr.onreadystatechange)) { + fill( + xhr, + 'onreadystatechange', + function(orig) { + return self.wrap(orig, undefined, onreadystatechangeHandler); + } /* intentionally don't track this instrumentation */ + ); + } else { + // if onreadystatechange wasn't actually set by the page on this xhr, we + // are free to set our own and capture the breadcrumb + xhr.onreadystatechange = onreadystatechangeHandler; + } + + return origSend.apply(this, arguments); + }; + }, + wrappedBuiltIns + ); + } + + if (autoBreadcrumbs.xhr && supportsFetch()) { + fill( + _window, + 'fetch', + function(origFetch) { + return function() { + // preserve arity + // Make a copy of the arguments to prevent deoptimization + // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments + var args = new Array(arguments.length); + for (var i = 0; i < args.length; ++i) { + args[i] = arguments[i]; + } + + var fetchInput = args[0]; + var method = 'GET'; + var url; + + if (typeof fetchInput === 'string') { + url = fetchInput; + } else if ('Request' in _window && fetchInput instanceof _window.Request) { + url = fetchInput.url; + if (fetchInput.method) { + method = fetchInput.method; + } + } else { + url = '' + fetchInput; + } + + // if Sentry key appears in URL, don't capture, as it's our own request + if (url.indexOf(self._globalKey) !== -1) { + return origFetch.apply(this, args); + } + + if (args[1] && args[1].method) { + method = args[1].method; + } + + var fetchData = { + method: method, + url: url, + status_code: null + }; + + return origFetch + .apply(this, args) + .then(function(response) { + fetchData.status_code = response.status; + + self.captureBreadcrumb({ + type: 'http', + category: 'fetch', + data: fetchData + }); + + return response; + }) + ['catch'](function(err) { + // if there is an error performing the request + self.captureBreadcrumb({ + type: 'http', + category: 'fetch', + data: fetchData, + level: 'error' + }); + + throw err; + }); + }; + }, + wrappedBuiltIns + ); + } + + // Capture breadcrumbs from any click that is unhandled / bubbled up all the way + // to the document. Do this before we instrument addEventListener. + if (autoBreadcrumbs.dom && this._hasDocument) { + if (_document.addEventListener) { + _document.addEventListener('click', self._breadcrumbEventHandler('click'), false); + _document.addEventListener('keypress', self._keypressEventHandler(), false); + } else if (_document.attachEvent) { + // IE8 Compatibility + _document.attachEvent('onclick', self._breadcrumbEventHandler('click')); + _document.attachEvent('onkeypress', self._keypressEventHandler()); + } + } + + // record navigation (URL) changes + // NOTE: in Chrome App environment, touching history.pushState, *even inside + // a try/catch block*, will cause Chrome to output an error to console.error + // borrowed from: https://github.com/angular/angular.js/pull/13945/files + var chrome = _window.chrome; + var isChromePackagedApp = chrome && chrome.app && chrome.app.runtime; + var hasPushAndReplaceState = + !isChromePackagedApp && + _window.history && + _window.history.pushState && + _window.history.replaceState; + if (autoBreadcrumbs.location && hasPushAndReplaceState) { + // TODO: remove onpopstate handler on uninstall() + var oldOnPopState = _window.onpopstate; + _window.onpopstate = function() { + var currentHref = self._location.href; + self._captureUrlChange(self._lastHref, currentHref); + + if (oldOnPopState) { + return oldOnPopState.apply(this, arguments); + } + }; + + var historyReplacementFunction = function(origHistFunction) { + // note history.pushState.length is 0; intentionally not declaring + // params to preserve 0 arity + return function(/* state, title, url */) { + var url = arguments.length > 2 ? arguments[2] : undefined; + + // url argument is optional + if (url) { + // coerce to string (this is what pushState does) + self._captureUrlChange(self._lastHref, url + ''); + } + + return origHistFunction.apply(this, arguments); + }; + }; + + fill(_window.history, 'pushState', historyReplacementFunction, wrappedBuiltIns); + fill(_window.history, 'replaceState', historyReplacementFunction, wrappedBuiltIns); + } + + if (autoBreadcrumbs.console && 'console' in _window && console.log) { + // console + var consoleMethodCallback = function(msg, data) { + self.captureBreadcrumb({ + message: msg, + level: data.level, + category: 'console' + }); + }; + + each(['debug', 'info', 'warn', 'error', 'log'], function(_, level) { + wrapConsoleMethod(console, level, consoleMethodCallback); + }); + } + }, + + _restoreBuiltIns: function() { + // restore any wrapped builtins + var builtin; + while (this._wrappedBuiltIns.length) { + builtin = this._wrappedBuiltIns.shift(); + + var obj = builtin[0], + name = builtin[1], + orig = builtin[2]; + + obj[name] = orig; + } + }, + + _restoreConsole: function() { + // eslint-disable-next-line guard-for-in + for (var method in this._originalConsoleMethods) { + this._originalConsole[method] = this._originalConsoleMethods[method]; + } + }, + + _drainPlugins: function() { + var self = this; + + // FIX ME TODO + each(this._plugins, function(_, plugin) { + var installer = plugin[0]; + var args = plugin[1]; + installer.apply(self, [self].concat(args)); + }); + }, + + _parseDSN: function(str) { + var m = dsnPattern.exec(str), + dsn = {}, + i = 7; + + try { + while (i--) dsn[dsnKeys[i]] = m[i] || ''; + } catch (e) { + throw new RavenConfigError('Invalid DSN: ' + str); + } + + if (dsn.pass && !this._globalOptions.allowSecretKey) { + throw new RavenConfigError( + 'Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key' + ); + } + + return dsn; + }, + + _getGlobalServer: function(uri) { + // assemble the endpoint from the uri pieces + var globalServer = '//' + uri.host + (uri.port ? ':' + uri.port : ''); + + if (uri.protocol) { + globalServer = uri.protocol + ':' + globalServer; + } + return globalServer; + }, + + _handleOnErrorStackInfo: function() { + // if we are intentionally ignoring errors via onerror, bail out + if (!this._ignoreOnError) { + this._handleStackInfo.apply(this, arguments); + } + }, + + _handleStackInfo: function(stackInfo, options) { + var frames = this._prepareFrames(stackInfo, options); + + this._triggerEvent('handle', { + stackInfo: stackInfo, + options: options + }); + + this._processException( + stackInfo.name, + stackInfo.message, + stackInfo.url, + stackInfo.lineno, + frames, + options + ); + }, + + _prepareFrames: function(stackInfo, options) { + var self = this; + var frames = []; + if (stackInfo.stack && stackInfo.stack.length) { + each(stackInfo.stack, function(i, stack) { + var frame = self._normalizeFrame(stack, stackInfo.url); + if (frame) { + frames.push(frame); + } + }); + + // e.g. frames captured via captureMessage throw + if (options && options.trimHeadFrames) { + for (var j = 0; j < options.trimHeadFrames && j < frames.length; j++) { + frames[j].in_app = false; + } + } + } + frames = frames.slice(0, this._globalOptions.stackTraceLimit); + return frames; + }, + + _normalizeFrame: function(frame, stackInfoUrl) { + // normalize the frames data + var normalized = { + filename: frame.url, + lineno: frame.line, + colno: frame.column, + function: frame.func || '?' + }; + + // Case when we don't have any information about the error + // E.g. throwing a string or raw object, instead of an `Error` in Firefox + // Generating synthetic error doesn't add any value here + // + // We should probably somehow let a user know that they should fix their code + if (!frame.url) { + normalized.filename = stackInfoUrl; // fallback to whole stacks url from onerror handler + } + + normalized.in_app = !// determine if an exception came from outside of our app + // first we check the global includePaths list. + ( + (!!this._globalOptions.includePaths.test && + !this._globalOptions.includePaths.test(normalized.filename)) || + // Now we check for fun, if the function name is Raven or TraceKit + /(Raven|TraceKit)\./.test(normalized['function']) || + // finally, we do a last ditch effort and check for raven.min.js + /raven\.(min\.)?js$/.test(normalized.filename) + ); + + return normalized; + }, + + _processException: function(type, message, fileurl, lineno, frames, options) { + var prefixedMessage = (type ? type + ': ' : '') + (message || ''); + if ( + !!this._globalOptions.ignoreErrors.test && + (this._globalOptions.ignoreErrors.test(message) || + this._globalOptions.ignoreErrors.test(prefixedMessage)) + ) { + return; + } + + var stacktrace; + + if (frames && frames.length) { + fileurl = frames[0].filename || fileurl; + // Sentry expects frames oldest to newest + // and JS sends them as newest to oldest + frames.reverse(); + stacktrace = {frames: frames}; + } else if (fileurl) { + stacktrace = { + frames: [ + { + filename: fileurl, + lineno: lineno, + in_app: true + } + ] + }; + } + + if ( + !!this._globalOptions.ignoreUrls.test && + this._globalOptions.ignoreUrls.test(fileurl) + ) { + return; + } + + if ( + !!this._globalOptions.whitelistUrls.test && + !this._globalOptions.whitelistUrls.test(fileurl) + ) { + return; + } + + var data = objectMerge( + { + // sentry.interfaces.Exception + exception: { + values: [ + { + type: type, + value: message, + stacktrace: stacktrace + } + ] + }, + transaction: fileurl + }, + options + ); + + // Fire away! + this._send(data); + }, + + _trimPacket: function(data) { + // For now, we only want to truncate the two different messages + // but this could/should be expanded to just trim everything + var max = this._globalOptions.maxMessageLength; + if (data.message) { + data.message = truncate(data.message, max); + } + if (data.exception) { + var exception = data.exception.values[0]; + exception.value = truncate(exception.value, max); + } + + var request = data.request; + if (request) { + if (request.url) { + request.url = truncate(request.url, this._globalOptions.maxUrlLength); + } + if (request.Referer) { + request.Referer = truncate(request.Referer, this._globalOptions.maxUrlLength); + } + } + + if (data.breadcrumbs && data.breadcrumbs.values) + this._trimBreadcrumbs(data.breadcrumbs); + + return data; + }, + + /** + * Truncate breadcrumb values (right now just URLs) + */ + _trimBreadcrumbs: function(breadcrumbs) { + // known breadcrumb properties with urls + // TODO: also consider arbitrary prop values that start with (https?)?:// + var urlProps = ['to', 'from', 'url'], + urlProp, + crumb, + data; + + for (var i = 0; i < breadcrumbs.values.length; ++i) { + crumb = breadcrumbs.values[i]; + if ( + !crumb.hasOwnProperty('data') || + !isObject(crumb.data) || + objectFrozen(crumb.data) + ) + continue; + + data = objectMerge({}, crumb.data); + for (var j = 0; j < urlProps.length; ++j) { + urlProp = urlProps[j]; + if (data.hasOwnProperty(urlProp) && data[urlProp]) { + data[urlProp] = truncate(data[urlProp], this._globalOptions.maxUrlLength); + } + } + breadcrumbs.values[i].data = data; + } + }, + + _getHttpData: function() { + if (!this._hasNavigator && !this._hasDocument) return; + var httpData = {}; + + if (this._hasNavigator && _navigator.userAgent) { + httpData.headers = { + 'User-Agent': _navigator.userAgent + }; + } + + // Check in `window` instead of `document`, as we may be in ServiceWorker environment + if (_window.location && _window.location.href) { + httpData.url = _window.location.href; + } + + if (this._hasDocument && _document.referrer) { + if (!httpData.headers) httpData.headers = {}; + httpData.headers.Referer = _document.referrer; + } + + return httpData; + }, + + _resetBackoff: function() { + this._backoffDuration = 0; + this._backoffStart = null; + }, + + _shouldBackoff: function() { + return this._backoffDuration && now() - this._backoffStart < this._backoffDuration; + }, + + /** + * Returns true if the in-process data payload matches the signature + * of the previously-sent data + * + * NOTE: This has to be done at this level because TraceKit can generate + * data from window.onerror WITHOUT an exception object (IE8, IE9, + * other old browsers). This can take the form of an "exception" + * data object with a single frame (derived from the onerror args). + */ + _isRepeatData: function(current) { + var last = this._lastData; + + if ( + !last || + current.message !== last.message || // defined for captureMessage + current.transaction !== last.transaction // defined for captureException/onerror + ) + return false; + + // Stacktrace interface (i.e. from captureMessage) + if (current.stacktrace || last.stacktrace) { + return isSameStacktrace(current.stacktrace, last.stacktrace); + } else if (current.exception || last.exception) { + // Exception interface (i.e. from captureException/onerror) + return isSameException(current.exception, last.exception); + } + + return true; + }, + + _setBackoffState: function(request) { + // If we are already in a backoff state, don't change anything + if (this._shouldBackoff()) { + return; + } + + var status = request.status; + + // 400 - project_id doesn't exist or some other fatal + // 401 - invalid/revoked dsn + // 429 - too many requests + if (!(status === 400 || status === 401 || status === 429)) return; + + var retry; + try { + // If Retry-After is not in Access-Control-Expose-Headers, most + // browsers will throw an exception trying to access it + if (supportsFetch()) { + retry = request.headers.get('Retry-After'); + } else { + retry = request.getResponseHeader('Retry-After'); + } + + // Retry-After is returned in seconds + retry = parseInt(retry, 10) * 1000; + } catch (e) { + /* eslint no-empty:0 */ + } + + this._backoffDuration = retry + ? // If Sentry server returned a Retry-After value, use it + retry + : // Otherwise, double the last backoff duration (starts at 1 sec) + this._backoffDuration * 2 || 1000; + + this._backoffStart = now(); + }, + + _send: function(data) { + var globalOptions = this._globalOptions; + + var baseData = { + project: this._globalProject, + logger: globalOptions.logger, + platform: 'javascript' + }, + httpData = this._getHttpData(); + + if (httpData) { + baseData.request = httpData; + } + + // HACK: delete `trimHeadFrames` to prevent from appearing in outbound payload + if (data.trimHeadFrames) delete data.trimHeadFrames; + + data = objectMerge(baseData, data); + + // Merge in the tags and extra separately since objectMerge doesn't handle a deep merge + data.tags = objectMerge(objectMerge({}, this._globalContext.tags), data.tags); + data.extra = objectMerge(objectMerge({}, this._globalContext.extra), data.extra); + + // Send along our own collected metadata with extra + data.extra['session:duration'] = now() - this._startTime; + + if (this._breadcrumbs && this._breadcrumbs.length > 0) { + // intentionally make shallow copy so that additions + // to breadcrumbs aren't accidentally sent in this request + data.breadcrumbs = { + values: [].slice.call(this._breadcrumbs, 0) + }; + } + + if (this._globalContext.user) { + // sentry.interfaces.User + data.user = this._globalContext.user; + } + + // Include the environment if it's defined in globalOptions + if (globalOptions.environment) data.environment = globalOptions.environment; + + // Include the release if it's defined in globalOptions + if (globalOptions.release) data.release = globalOptions.release; + + // Include server_name if it's defined in globalOptions + if (globalOptions.serverName) data.server_name = globalOptions.serverName; + + data = this._sanitizeData(data); + + // Cleanup empty properties before sending them to the server + Object.keys(data).forEach(function(key) { + if (data[key] == null || data[key] === '' || isEmptyObject(data[key])) { + delete data[key]; + } + }); + + if (isFunction(globalOptions.dataCallback)) { + data = globalOptions.dataCallback(data) || data; + } + + // Why?????????? + if (!data || isEmptyObject(data)) { + return; + } + + // Check if the request should be filtered or not + if ( + isFunction(globalOptions.shouldSendCallback) && + !globalOptions.shouldSendCallback(data) + ) { + return; + } + + // Backoff state: Sentry server previously responded w/ an error (e.g. 429 - too many requests), + // so drop requests until "cool-off" period has elapsed. + if (this._shouldBackoff()) { + this._logDebug('warn', 'Raven dropped error due to backoff: ', data); + return; + } + + if (typeof globalOptions.sampleRate === 'number') { + if (Math.random() < globalOptions.sampleRate) { + this._sendProcessedPayload(data); + } + } else { + this._sendProcessedPayload(data); + } + }, + + _sanitizeData: function(data) { + return sanitize(data, this._globalOptions.sanitizeKeys); + }, + + _getUuid: function() { + return uuid4(); + }, + + _sendProcessedPayload: function(data, callback) { + var self = this; + var globalOptions = this._globalOptions; + + if (!this.isSetup()) return; + + // Try and clean up the packet before sending by truncating long values + data = this._trimPacket(data); + + // ideally duplicate error testing should occur *before* dataCallback/shouldSendCallback, + // but this would require copying an un-truncated copy of the data packet, which can be + // arbitrarily deep (extra_data) -- could be worthwhile? will revisit + if (!this._globalOptions.allowDuplicates && this._isRepeatData(data)) { + this._logDebug('warn', 'Raven dropped repeat event: ', data); + return; + } + + // Send along an event_id if not explicitly passed. + // This event_id can be used to reference the error within Sentry itself. + // Set lastEventId after we know the error should actually be sent + this._lastEventId = data.event_id || (data.event_id = this._getUuid()); + + // Store outbound payload after trim + this._lastData = data; + + this._logDebug('debug', 'Raven about to send:', data); + + var auth = { + sentry_version: '7', + sentry_client: 'raven-js/' + this.VERSION, + sentry_key: this._globalKey + }; + + if (this._globalSecret) { + auth.sentry_secret = this._globalSecret; + } + + var exception = data.exception && data.exception.values[0]; + + // only capture 'sentry' breadcrumb is autoBreadcrumbs is truthy + if ( + this._globalOptions.autoBreadcrumbs && + this._globalOptions.autoBreadcrumbs.sentry + ) { + this.captureBreadcrumb({ + category: 'sentry', + message: exception + ? (exception.type ? exception.type + ': ' : '') + exception.value + : data.message, + event_id: data.event_id, + level: data.level || 'error' // presume error unless specified + }); + } + + var url = this._globalEndpoint; + (globalOptions.transport || this._makeRequest).call(this, { + url: url, + auth: auth, + data: data, + options: globalOptions, + onSuccess: function success() { + self._resetBackoff(); + + self._triggerEvent('success', { + data: data, + src: url + }); + callback && callback(); + }, + onError: function failure(error) { + self._logDebug('error', 'Raven transport failed to send: ', error); + + if (error.request) { + self._setBackoffState(error.request); + } + + self._triggerEvent('failure', { + data: data, + src: url + }); + error = error || new Error('Raven send failed (no additional details provided)'); + callback && callback(error); + } + }); + }, + + _makeRequest: function(opts) { + // Auth is intentionally sent as part of query string (NOT as custom HTTP header) to avoid preflight CORS requests + var url = opts.url + '?' + urlencode(opts.auth); + + var evaluatedHeaders = null; + var evaluatedFetchParameters = {}; + + if (opts.options.headers) { + evaluatedHeaders = this._evaluateHash(opts.options.headers); + } + + if (opts.options.fetchParameters) { + evaluatedFetchParameters = this._evaluateHash(opts.options.fetchParameters); + } + + if (supportsFetch()) { + evaluatedFetchParameters.body = stringify(opts.data); + + var defaultFetchOptions = objectMerge({}, this._fetchDefaults); + var fetchOptions = objectMerge(defaultFetchOptions, evaluatedFetchParameters); + + if (evaluatedHeaders) { + fetchOptions.headers = evaluatedHeaders; + } + + return _window + .fetch(url, fetchOptions) + .then(function(response) { + if (response.ok) { + opts.onSuccess && opts.onSuccess(); + } else { + var error = new Error('Sentry error code: ' + response.status); + // It's called request only to keep compatibility with XHR interface + // and not add more redundant checks in setBackoffState method + error.request = response; + opts.onError && opts.onError(error); + } + }) + ['catch'](function() { + opts.onError && + opts.onError(new Error('Sentry error code: network unavailable')); + }); + } + + var request = _window.XMLHttpRequest && new _window.XMLHttpRequest(); + if (!request) return; + + // if browser doesn't support CORS (e.g. IE7), we are out of luck + var hasCORS = 'withCredentials' in request || typeof XDomainRequest !== 'undefined'; + + if (!hasCORS) return; + + if ('withCredentials' in request) { + request.onreadystatechange = function() { + if (request.readyState !== 4) { + return; + } else if (request.status === 200) { + opts.onSuccess && opts.onSuccess(); + } else if (opts.onError) { + var err = new Error('Sentry error code: ' + request.status); + err.request = request; + opts.onError(err); + } + }; + } else { + request = new XDomainRequest(); + // xdomainrequest cannot go http -> https (or vice versa), + // so always use protocol relative + url = url.replace(/^https?:/, ''); + + // onreadystatechange not supported by XDomainRequest + if (opts.onSuccess) { + request.onload = opts.onSuccess; + } + if (opts.onError) { + request.onerror = function() { + var err = new Error('Sentry error code: XDomainRequest'); + err.request = request; + opts.onError(err); + }; + } + } + + request.open('POST', url); + + if (evaluatedHeaders) { + each(evaluatedHeaders, function(key, value) { + request.setRequestHeader(key, value); + }); + } + + request.send(stringify(opts.data)); + }, + + _evaluateHash: function(hash) { + var evaluated = {}; + + for (var key in hash) { + if (hash.hasOwnProperty(key)) { + var value = hash[key]; + evaluated[key] = typeof value === 'function' ? value() : value; + } + } + + return evaluated; + }, + + _logDebug: function(level) { + // We allow `Raven.debug` and `Raven.config(DSN, { debug: true })` to not make backward incompatible API change + if ( + this._originalConsoleMethods[level] && + (this.debug || this._globalOptions.debug) + ) { + // In IE<10 console methods do not have their own 'apply' method + Function.prototype.apply.call( + this._originalConsoleMethods[level], + this._originalConsole, + [].slice.call(arguments, 1) + ); + } + }, + + _mergeContext: function(key, context) { + if (isUndefined(context)) { + delete this._globalContext[key]; + } else { + this._globalContext[key] = objectMerge(this._globalContext[key] || {}, context); + } + } +}; + +// Deprecations +Raven.prototype.setUser = Raven.prototype.setUserContext; +Raven.prototype.setReleaseContext = Raven.prototype.setRelease; + +module.exports = Raven; + +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"2":2,"3":3,"6":6,"7":7,"8":8,"9":9}],5:[function(_dereq_,module,exports){ +(function (global){ +/** + * Enforces a single instance of the Raven client, and the + * main entry point for Raven. If you are a consumer of the + * Raven library, you SHOULD load this file (vs raven.js). + **/ + +var RavenConstructor = _dereq_(4); + +// This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) +var _window = + typeof window !== 'undefined' + ? window + : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; +var _Raven = _window.Raven; + +var Raven = new RavenConstructor(); + +/* + * Allow multiple versions of Raven to be installed. + * Strip Raven from the global context and returns the instance. + * + * @return {Raven} + */ +Raven.noConflict = function() { + _window.Raven = _Raven; + return Raven; +}; + +Raven.afterLoad(); + +module.exports = Raven; + +/** + * DISCLAIMER: + * + * Expose `Client` constructor for cases where user want to track multiple "sub-applications" in one larger app. + * It's not meant to be used by a wide audience, so pleaaase make sure that you know what you're doing before using it. + * Accidentally calling `install` multiple times, may result in an unexpected behavior that's very hard to debug. + * + * It's called `Client' to be in-line with Raven Node implementation. + * + * HOWTO: + * + * import Raven from 'raven-js'; + * + * const someAppReporter = new Raven.Client(); + * const someOtherAppReporter = new Raven.Client(); + * + * someAppReporter.config('__DSN__', { + * ...config goes here + * }); + * + * someOtherAppReporter.config('__OTHER_DSN__', { + * ...config goes here + * }); + * + * someAppReporter.captureMessage(...); + * someAppReporter.captureException(...); + * someAppReporter.captureBreadcrumb(...); + * + * someOtherAppReporter.captureMessage(...); + * someOtherAppReporter.captureException(...); + * someOtherAppReporter.captureBreadcrumb(...); + * + * It should "just work". + */ +module.exports.Client = RavenConstructor; + +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"4":4}],6:[function(_dereq_,module,exports){ +(function (global){ +var stringify = _dereq_(8); + +var _window = + typeof window !== 'undefined' + ? window + : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; + +function isObject(what) { + return typeof what === 'object' && what !== null; +} + +// Yanked from https://git.io/vS8DV re-used under CC0 +// with some tiny modifications +function isError(value) { + switch (Object.prototype.toString.call(value)) { + case '[object Error]': + return true; + case '[object Exception]': + return true; + case '[object DOMException]': + return true; + default: + return value instanceof Error; + } +} + +function isErrorEvent(value) { + return Object.prototype.toString.call(value) === '[object ErrorEvent]'; +} + +function isDOMError(value) { + return Object.prototype.toString.call(value) === '[object DOMError]'; +} + +function isDOMException(value) { + return Object.prototype.toString.call(value) === '[object DOMException]'; +} + +function isUndefined(what) { + return what === void 0; +} + +function isFunction(what) { + return typeof what === 'function'; +} + +function isPlainObject(what) { + return Object.prototype.toString.call(what) === '[object Object]'; +} + +function isString(what) { + return Object.prototype.toString.call(what) === '[object String]'; +} + +function isArray(what) { + return Object.prototype.toString.call(what) === '[object Array]'; +} + +function isEmptyObject(what) { + if (!isPlainObject(what)) return false; + + for (var _ in what) { + if (what.hasOwnProperty(_)) { + return false; + } + } + return true; +} + +function supportsErrorEvent() { + try { + new ErrorEvent(''); // eslint-disable-line no-new + return true; + } catch (e) { + return false; + } +} + +function supportsDOMError() { + try { + new DOMError(''); // eslint-disable-line no-new + return true; + } catch (e) { + return false; + } +} + +function supportsDOMException() { + try { + new DOMException(''); // eslint-disable-line no-new + return true; + } catch (e) { + return false; + } +} + +function supportsFetch() { + if (!('fetch' in _window)) return false; + + try { + new Headers(); // eslint-disable-line no-new + new Request(''); // eslint-disable-line no-new + new Response(); // eslint-disable-line no-new + return true; + } catch (e) { + return false; + } +} + +// Despite all stars in the sky saying that Edge supports old draft syntax, aka 'never', 'always', 'origin' and 'default +// https://caniuse.com/#feat=referrer-policy +// It doesn't. And it throw exception instead of ignoring this parameter... +// REF: https://github.com/getsentry/raven-js/issues/1233 +function supportsReferrerPolicy() { + if (!supportsFetch()) return false; + + try { + // eslint-disable-next-line no-new + new Request('pickleRick', { + referrerPolicy: 'origin' + }); + return true; + } catch (e) { + return false; + } +} + +function supportsPromiseRejectionEvent() { + return typeof PromiseRejectionEvent === 'function'; +} + +function wrappedCallback(callback) { + function dataCallback(data, original) { + var normalizedData = callback(data) || data; + if (original) { + return original(normalizedData) || normalizedData; + } + return normalizedData; + } + + return dataCallback; +} + +function each(obj, callback) { + var i, j; + + if (isUndefined(obj.length)) { + for (i in obj) { + if (hasKey(obj, i)) { + callback.call(null, i, obj[i]); + } + } + } else { + j = obj.length; + if (j) { + for (i = 0; i < j; i++) { + callback.call(null, i, obj[i]); + } + } + } +} + +function objectMerge(obj1, obj2) { + if (!obj2) { + return obj1; + } + each(obj2, function(key, value) { + obj1[key] = value; + }); + return obj1; +} + +/** + * This function is only used for react-native. + * react-native freezes object that have already been sent over the + * js bridge. We need this function in order to check if the object is frozen. + * So it's ok that objectFrozen returns false if Object.isFrozen is not + * supported because it's not relevant for other "platforms". See related issue: + * https://github.com/getsentry/react-native-sentry/issues/57 + */ +function objectFrozen(obj) { + if (!Object.isFrozen) { + return false; + } + return Object.isFrozen(obj); +} + +function truncate(str, max) { + if (typeof max !== 'number') { + throw new Error('2nd argument to `truncate` function should be a number'); + } + if (typeof str !== 'string' || max === 0) { + return str; + } + return str.length <= max ? str : str.substr(0, max) + '\u2026'; +} + +/** + * hasKey, a better form of hasOwnProperty + * Example: hasKey(MainHostObject, property) === true/false + * + * @param {Object} host object to check property + * @param {string} key to check + */ +function hasKey(object, key) { + return Object.prototype.hasOwnProperty.call(object, key); +} + +function joinRegExp(patterns) { + // Combine an array of regular expressions and strings into one large regexp + // Be mad. + var sources = [], + i = 0, + len = patterns.length, + pattern; + + for (; i < len; i++) { + pattern = patterns[i]; + if (isString(pattern)) { + // If it's a string, we need to escape it + // Taken from: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions + sources.push(pattern.replace(/([.*+?^=!:${}()|\[\]\/\\])/g, '\\$1')); + } else if (pattern && pattern.source) { + // If it's a regexp already, we want to extract the source + sources.push(pattern.source); + } + // Intentionally skip other cases + } + return new RegExp(sources.join('|'), 'i'); +} + +function urlencode(o) { + var pairs = []; + each(o, function(key, value) { + pairs.push(encodeURIComponent(key) + '=' + encodeURIComponent(value)); + }); + return pairs.join('&'); +} + +// borrowed from https://tools.ietf.org/html/rfc3986#appendix-B +// intentionally using regex and not href parsing trick because React Native and other +// environments where DOM might not be available +function parseUrl(url) { + if (typeof url !== 'string') return {}; + var match = url.match(/^(([^:\/?#]+):)?(\/\/([^\/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?$/); + + // coerce to undefined values to empty string so we don't get 'undefined' + var query = match[6] || ''; + var fragment = match[8] || ''; + return { + protocol: match[2], + host: match[4], + path: match[5], + relative: match[5] + query + fragment // everything minus origin + }; +} +function uuid4() { + var crypto = _window.crypto || _window.msCrypto; + + if (!isUndefined(crypto) && crypto.getRandomValues) { + // Use window.crypto API if available + // eslint-disable-next-line no-undef + var arr = new Uint16Array(8); + crypto.getRandomValues(arr); + + // set 4 in byte 7 + arr[3] = (arr[3] & 0xfff) | 0x4000; + // set 2 most significant bits of byte 9 to '10' + arr[4] = (arr[4] & 0x3fff) | 0x8000; + + var pad = function(num) { + var v = num.toString(16); + while (v.length < 4) { + v = '0' + v; + } + return v; + }; + + return ( + pad(arr[0]) + + pad(arr[1]) + + pad(arr[2]) + + pad(arr[3]) + + pad(arr[4]) + + pad(arr[5]) + + pad(arr[6]) + + pad(arr[7]) + ); + } else { + // http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/2117523#2117523 + return 'xxxxxxxxxxxx4xxxyxxxxxxxxxxxxxxx'.replace(/[xy]/g, function(c) { + var r = (Math.random() * 16) | 0, + v = c === 'x' ? r : (r & 0x3) | 0x8; + return v.toString(16); + }); + } +} + +/** + * Given a child DOM element, returns a query-selector statement describing that + * and its ancestors + * e.g. [HTMLElement] => body > div > input#foo.btn[name=baz] + * @param elem + * @returns {string} + */ +function htmlTreeAsString(elem) { + /* eslint no-extra-parens:0*/ + var MAX_TRAVERSE_HEIGHT = 5, + MAX_OUTPUT_LEN = 80, + out = [], + height = 0, + len = 0, + separator = ' > ', + sepLength = separator.length, + nextStr; + + while (elem && height++ < MAX_TRAVERSE_HEIGHT) { + nextStr = htmlElementAsString(elem); + // bail out if + // - nextStr is the 'html' element + // - the length of the string that would be created exceeds MAX_OUTPUT_LEN + // (ignore this limit if we are on the first iteration) + if ( + nextStr === 'html' || + (height > 1 && len + out.length * sepLength + nextStr.length >= MAX_OUTPUT_LEN) + ) { + break; + } + + out.push(nextStr); + + len += nextStr.length; + elem = elem.parentNode; + } + + return out.reverse().join(separator); +} + +/** + * Returns a simple, query-selector representation of a DOM element + * e.g. [HTMLElement] => input#foo.btn[name=baz] + * @param HTMLElement + * @returns {string} + */ +function htmlElementAsString(elem) { + var out = [], + className, + classes, + key, + attr, + i; + + if (!elem || !elem.tagName) { + return ''; + } + + out.push(elem.tagName.toLowerCase()); + if (elem.id) { + out.push('#' + elem.id); + } + + className = elem.className; + if (className && isString(className)) { + classes = className.split(/\s+/); + for (i = 0; i < classes.length; i++) { + out.push('.' + classes[i]); + } + } + var attrWhitelist = ['type', 'name', 'title', 'alt']; + for (i = 0; i < attrWhitelist.length; i++) { + key = attrWhitelist[i]; + attr = elem.getAttribute(key); + if (attr) { + out.push('[' + key + '="' + attr + '"]'); + } + } + return out.join(''); +} + +/** + * Returns true if either a OR b is truthy, but not both + */ +function isOnlyOneTruthy(a, b) { + return !!(!!a ^ !!b); +} + +/** + * Returns true if both parameters are undefined + */ +function isBothUndefined(a, b) { + return isUndefined(a) && isUndefined(b); +} + +/** + * Returns true if the two input exception interfaces have the same content + */ +function isSameException(ex1, ex2) { + if (isOnlyOneTruthy(ex1, ex2)) return false; + + ex1 = ex1.values[0]; + ex2 = ex2.values[0]; + + if (ex1.type !== ex2.type || ex1.value !== ex2.value) return false; + + // in case both stacktraces are undefined, we can't decide so default to false + if (isBothUndefined(ex1.stacktrace, ex2.stacktrace)) return false; + + return isSameStacktrace(ex1.stacktrace, ex2.stacktrace); +} + +/** + * Returns true if the two input stack trace interfaces have the same content + */ +function isSameStacktrace(stack1, stack2) { + if (isOnlyOneTruthy(stack1, stack2)) return false; + + var frames1 = stack1.frames; + var frames2 = stack2.frames; + + // Exit early if frame count differs + if (frames1.length !== frames2.length) return false; + + // Iterate through every frame; bail out if anything differs + var a, b; + for (var i = 0; i < frames1.length; i++) { + a = frames1[i]; + b = frames2[i]; + if ( + a.filename !== b.filename || + a.lineno !== b.lineno || + a.colno !== b.colno || + a['function'] !== b['function'] + ) + return false; + } + return true; +} + +/** + * Polyfill a method + * @param obj object e.g. `document` + * @param name method name present on object e.g. `addEventListener` + * @param replacement replacement function + * @param track {optional} record instrumentation to an array + */ +function fill(obj, name, replacement, track) { + if (obj == null) return; + var orig = obj[name]; + obj[name] = replacement(orig); + obj[name].__raven__ = true; + obj[name].__orig__ = orig; + if (track) { + track.push([obj, name, orig]); + } +} + +/** + * Join values in array + * @param input array of values to be joined together + * @param delimiter string to be placed in-between values + * @returns {string} + */ +function safeJoin(input, delimiter) { + if (!isArray(input)) return ''; + + var output = []; + + for (var i = 0; i < input.length; i++) { + try { + output.push(String(input[i])); + } catch (e) { + output.push('[value cannot be serialized]'); + } + } + + return output.join(delimiter); +} + +// Default Node.js REPL depth +var MAX_SERIALIZE_EXCEPTION_DEPTH = 3; +// 50kB, as 100kB is max payload size, so half sounds reasonable +var MAX_SERIALIZE_EXCEPTION_SIZE = 50 * 1024; +var MAX_SERIALIZE_KEYS_LENGTH = 40; + +function utf8Length(value) { + return ~-encodeURI(value).split(/%..|./).length; +} + +function jsonSize(value) { + return utf8Length(JSON.stringify(value)); +} + +function serializeValue(value) { + if (typeof value === 'string') { + var maxLength = 40; + return truncate(value, maxLength); + } else if ( + typeof value === 'number' || + typeof value === 'boolean' || + typeof value === 'undefined' + ) { + return value; + } + + var type = Object.prototype.toString.call(value); + + // Node.js REPL notation + if (type === '[object Object]') return '[Object]'; + if (type === '[object Array]') return '[Array]'; + if (type === '[object Function]') + return value.name ? '[Function: ' + value.name + ']' : '[Function]'; + + return value; +} + +function serializeObject(value, depth) { + if (depth === 0) return serializeValue(value); + + if (isPlainObject(value)) { + return Object.keys(value).reduce(function(acc, key) { + acc[key] = serializeObject(value[key], depth - 1); + return acc; + }, {}); + } else if (Array.isArray(value)) { + return value.map(function(val) { + return serializeObject(val, depth - 1); + }); + } + + return serializeValue(value); +} + +function serializeException(ex, depth, maxSize) { + if (!isPlainObject(ex)) return ex; + + depth = typeof depth !== 'number' ? MAX_SERIALIZE_EXCEPTION_DEPTH : depth; + maxSize = typeof depth !== 'number' ? MAX_SERIALIZE_EXCEPTION_SIZE : maxSize; + + var serialized = serializeObject(ex, depth); + + if (jsonSize(stringify(serialized)) > maxSize) { + return serializeException(ex, depth - 1); + } + + return serialized; +} + +function serializeKeysForMessage(keys, maxLength) { + if (typeof keys === 'number' || typeof keys === 'string') return keys.toString(); + if (!Array.isArray(keys)) return ''; + + keys = keys.filter(function(key) { + return typeof key === 'string'; + }); + if (keys.length === 0) return '[object has no keys]'; + + maxLength = typeof maxLength !== 'number' ? MAX_SERIALIZE_KEYS_LENGTH : maxLength; + if (keys[0].length >= maxLength) return keys[0]; + + for (var usedKeys = keys.length; usedKeys > 0; usedKeys--) { + var serialized = keys.slice(0, usedKeys).join(', '); + if (serialized.length > maxLength) continue; + if (usedKeys === keys.length) return serialized; + return serialized + '\u2026'; + } + + return ''; +} + +function sanitize(input, sanitizeKeys) { + if (!isArray(sanitizeKeys) || (isArray(sanitizeKeys) && sanitizeKeys.length === 0)) + return input; + + var sanitizeRegExp = joinRegExp(sanitizeKeys); + var sanitizeMask = '********'; + var safeInput; + + try { + safeInput = JSON.parse(stringify(input)); + } catch (o_O) { + return input; + } + + function sanitizeWorker(workerInput) { + if (isArray(workerInput)) { + return workerInput.map(function(val) { + return sanitizeWorker(val); + }); + } + + if (isPlainObject(workerInput)) { + return Object.keys(workerInput).reduce(function(acc, k) { + if (sanitizeRegExp.test(k)) { + acc[k] = sanitizeMask; + } else { + acc[k] = sanitizeWorker(workerInput[k]); + } + return acc; + }, {}); + } + + return workerInput; + } + + return sanitizeWorker(safeInput); +} + +module.exports = { + isObject: isObject, + isError: isError, + isErrorEvent: isErrorEvent, + isDOMError: isDOMError, + isDOMException: isDOMException, + isUndefined: isUndefined, + isFunction: isFunction, + isPlainObject: isPlainObject, + isString: isString, + isArray: isArray, + isEmptyObject: isEmptyObject, + supportsErrorEvent: supportsErrorEvent, + supportsDOMError: supportsDOMError, + supportsDOMException: supportsDOMException, + supportsFetch: supportsFetch, + supportsReferrerPolicy: supportsReferrerPolicy, + supportsPromiseRejectionEvent: supportsPromiseRejectionEvent, + wrappedCallback: wrappedCallback, + each: each, + objectMerge: objectMerge, + truncate: truncate, + objectFrozen: objectFrozen, + hasKey: hasKey, + joinRegExp: joinRegExp, + urlencode: urlencode, + uuid4: uuid4, + htmlTreeAsString: htmlTreeAsString, + htmlElementAsString: htmlElementAsString, + isSameException: isSameException, + isSameStacktrace: isSameStacktrace, + parseUrl: parseUrl, + fill: fill, + safeJoin: safeJoin, + serializeException: serializeException, + serializeKeysForMessage: serializeKeysForMessage, + sanitize: sanitize +}; + +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"8":8}],7:[function(_dereq_,module,exports){ +(function (global){ +var utils = _dereq_(6); + +/* + TraceKit - Cross brower stack traces + + This was originally forked from github.com/occ/TraceKit, but has since been + largely re-written and is now maintained as part of raven-js. Tests for + this are in test/vendor. + + MIT license +*/ + +var TraceKit = { + collectWindowErrors: true, + debug: false +}; + +// This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) +var _window = + typeof window !== 'undefined' + ? window + : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; + +// global reference to slice +var _slice = [].slice; +var UNKNOWN_FUNCTION = '?'; + +// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error#Error_types +var ERROR_TYPES_RE = /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/; + +function getLocationHref() { + if (typeof document === 'undefined' || document.location == null) return ''; + return document.location.href; +} + +function getLocationOrigin() { + if (typeof document === 'undefined' || document.location == null) return ''; + + // Oh dear IE10... + if (!document.location.origin) { + document.location.origin = + document.location.protocol + + '//' + + document.location.hostname + + (document.location.port ? ':' + document.location.port : ''); + } + + return document.location.origin; +} + +/** + * TraceKit.report: cross-browser processing of unhandled exceptions + * + * Syntax: + * TraceKit.report.subscribe(function(stackInfo) { ... }) + * TraceKit.report.unsubscribe(function(stackInfo) { ... }) + * TraceKit.report(exception) + * try { ...code... } catch(ex) { TraceKit.report(ex); } + * + * Supports: + * - Firefox: full stack trace with line numbers, plus column number + * on top frame; column number is not guaranteed + * - Opera: full stack trace with line and column numbers + * - Chrome: full stack trace with line and column numbers + * - Safari: line and column number for the top frame only; some frames + * may be missing, and column number is not guaranteed + * - IE: line and column number for the top frame only; some frames + * may be missing, and column number is not guaranteed + * + * In theory, TraceKit should work on all of the following versions: + * - IE5.5+ (only 8.0 tested) + * - Firefox 0.9+ (only 3.5+ tested) + * - Opera 7+ (only 10.50 tested; versions 9 and earlier may require + * Exceptions Have Stacktrace to be enabled in opera:config) + * - Safari 3+ (only 4+ tested) + * - Chrome 1+ (only 5+ tested) + * - Konqueror 3.5+ (untested) + * + * Requires TraceKit.computeStackTrace. + * + * Tries to catch all unhandled exceptions and report them to the + * subscribed handlers. Please note that TraceKit.report will rethrow the + * exception. This is REQUIRED in order to get a useful stack trace in IE. + * If the exception does not reach the top of the browser, you will only + * get a stack trace from the point where TraceKit.report was called. + * + * Handlers receive a stackInfo object as described in the + * TraceKit.computeStackTrace docs. + */ +TraceKit.report = (function reportModuleWrapper() { + var handlers = [], + lastArgs = null, + lastException = null, + lastExceptionStack = null; + + /** + * Add a crash handler. + * @param {Function} handler + */ + function subscribe(handler) { + installGlobalHandler(); + handlers.push(handler); + } + + /** + * Remove a crash handler. + * @param {Function} handler + */ + function unsubscribe(handler) { + for (var i = handlers.length - 1; i >= 0; --i) { + if (handlers[i] === handler) { + handlers.splice(i, 1); + } + } + } + + /** + * Remove all crash handlers. + */ + function unsubscribeAll() { + uninstallGlobalHandler(); + handlers = []; + } + + /** + * Dispatch stack information to all handlers. + * @param {Object.} stack + */ + function notifyHandlers(stack, isWindowError) { + var exception = null; + if (isWindowError && !TraceKit.collectWindowErrors) { + return; + } + for (var i in handlers) { + if (handlers.hasOwnProperty(i)) { + try { + handlers[i].apply(null, [stack].concat(_slice.call(arguments, 2))); + } catch (inner) { + exception = inner; + } + } + } + + if (exception) { + throw exception; + } + } + + var _oldOnerrorHandler, _onErrorHandlerInstalled; + + /** + * Ensures all global unhandled exceptions are recorded. + * Supported by Gecko and IE. + * @param {string} msg Error message. + * @param {string} url URL of script that generated the exception. + * @param {(number|string)} lineNo The line number at which the error + * occurred. + * @param {?(number|string)} colNo The column number at which the error + * occurred. + * @param {?Error} ex The actual Error object. + */ + function traceKitWindowOnError(msg, url, lineNo, colNo, ex) { + var stack = null; + // If 'ex' is ErrorEvent, get real Error from inside + var exception = utils.isErrorEvent(ex) ? ex.error : ex; + // If 'msg' is ErrorEvent, get real message from inside + var message = utils.isErrorEvent(msg) ? msg.message : msg; + + if (lastExceptionStack) { + TraceKit.computeStackTrace.augmentStackTraceWithInitialElement( + lastExceptionStack, + url, + lineNo, + message + ); + processLastException(); + } else if (exception && utils.isError(exception)) { + // non-string `exception` arg; attempt to extract stack trace + + // New chrome and blink send along a real error object + // Let's just report that like a normal error. + // See: https://mikewest.org/2013/08/debugging-runtime-errors-with-window-onerror + stack = TraceKit.computeStackTrace(exception); + notifyHandlers(stack, true); + } else { + var location = { + url: url, + line: lineNo, + column: colNo + }; + + var name = undefined; + var groups; + + if ({}.toString.call(message) === '[object String]') { + var groups = message.match(ERROR_TYPES_RE); + if (groups) { + name = groups[1]; + message = groups[2]; + } + } + + location.func = UNKNOWN_FUNCTION; + + stack = { + name: name, + message: message, + url: getLocationHref(), + stack: [location] + }; + notifyHandlers(stack, true); + } + + if (_oldOnerrorHandler) { + return _oldOnerrorHandler.apply(this, arguments); + } + + return false; + } + + function installGlobalHandler() { + if (_onErrorHandlerInstalled) { + return; + } + _oldOnerrorHandler = _window.onerror; + _window.onerror = traceKitWindowOnError; + _onErrorHandlerInstalled = true; + } + + function uninstallGlobalHandler() { + if (!_onErrorHandlerInstalled) { + return; + } + _window.onerror = _oldOnerrorHandler; + _onErrorHandlerInstalled = false; + _oldOnerrorHandler = undefined; + } + + function processLastException() { + var _lastExceptionStack = lastExceptionStack, + _lastArgs = lastArgs; + lastArgs = null; + lastExceptionStack = null; + lastException = null; + notifyHandlers.apply(null, [_lastExceptionStack, false].concat(_lastArgs)); + } + + /** + * Reports an unhandled Error to TraceKit. + * @param {Error} ex + * @param {?boolean} rethrow If false, do not re-throw the exception. + * Only used for window.onerror to not cause an infinite loop of + * rethrowing. + */ + function report(ex, rethrow) { + var args = _slice.call(arguments, 1); + if (lastExceptionStack) { + if (lastException === ex) { + return; // already caught by an inner catch block, ignore + } else { + processLastException(); + } + } + + var stack = TraceKit.computeStackTrace(ex); + lastExceptionStack = stack; + lastException = ex; + lastArgs = args; + + // If the stack trace is incomplete, wait for 2 seconds for + // slow slow IE to see if onerror occurs or not before reporting + // this exception; otherwise, we will end up with an incomplete + // stack trace + setTimeout(function() { + if (lastException === ex) { + processLastException(); + } + }, stack.incomplete ? 2000 : 0); + + if (rethrow !== false) { + throw ex; // re-throw to propagate to the top level (and cause window.onerror) + } + } + + report.subscribe = subscribe; + report.unsubscribe = unsubscribe; + report.uninstall = unsubscribeAll; + return report; +})(); + +/** + * TraceKit.computeStackTrace: cross-browser stack traces in JavaScript + * + * Syntax: + * s = TraceKit.computeStackTrace(exception) // consider using TraceKit.report instead (see below) + * Returns: + * s.name - exception name + * s.message - exception message + * s.stack[i].url - JavaScript or HTML file URL + * s.stack[i].func - function name, or empty for anonymous functions (if guessing did not work) + * s.stack[i].args - arguments passed to the function, if known + * s.stack[i].line - line number, if known + * s.stack[i].column - column number, if known + * + * Supports: + * - Firefox: full stack trace with line numbers and unreliable column + * number on top frame + * - Opera 10: full stack trace with line and column numbers + * - Opera 9-: full stack trace with line numbers + * - Chrome: full stack trace with line and column numbers + * - Safari: line and column number for the topmost stacktrace element + * only + * - IE: no line numbers whatsoever + * + * Tries to guess names of anonymous functions by looking for assignments + * in the source code. In IE and Safari, we have to guess source file names + * by searching for function bodies inside all page scripts. This will not + * work for scripts that are loaded cross-domain. + * Here be dragons: some function names may be guessed incorrectly, and + * duplicate functions may be mismatched. + * + * TraceKit.computeStackTrace should only be used for tracing purposes. + * Logging of unhandled exceptions should be done with TraceKit.report, + * which builds on top of TraceKit.computeStackTrace and provides better + * IE support by utilizing the window.onerror event to retrieve information + * about the top of the stack. + * + * Note: In IE and Safari, no stack trace is recorded on the Error object, + * so computeStackTrace instead walks its *own* chain of callers. + * This means that: + * * in Safari, some methods may be missing from the stack trace; + * * in IE, the topmost function in the stack trace will always be the + * caller of computeStackTrace. + * + * This is okay for tracing (because you are likely to be calling + * computeStackTrace from the function you want to be the topmost element + * of the stack trace anyway), but not okay for logging unhandled + * exceptions (because your catch block will likely be far away from the + * inner function that actually caused the exception). + * + */ +TraceKit.computeStackTrace = (function computeStackTraceWrapper() { + // Contents of Exception in various browsers. + // + // SAFARI: + // ex.message = Can't find variable: qq + // ex.line = 59 + // ex.sourceId = 580238192 + // ex.sourceURL = http://... + // ex.expressionBeginOffset = 96 + // ex.expressionCaretOffset = 98 + // ex.expressionEndOffset = 98 + // ex.name = ReferenceError + // + // FIREFOX: + // ex.message = qq is not defined + // ex.fileName = http://... + // ex.lineNumber = 59 + // ex.columnNumber = 69 + // ex.stack = ...stack trace... (see the example below) + // ex.name = ReferenceError + // + // CHROME: + // ex.message = qq is not defined + // ex.name = ReferenceError + // ex.type = not_defined + // ex.arguments = ['aa'] + // ex.stack = ...stack trace... + // + // INTERNET EXPLORER: + // ex.message = ... + // ex.name = ReferenceError + // + // OPERA: + // ex.message = ...message... (see the example below) + // ex.name = ReferenceError + // ex.opera#sourceloc = 11 (pretty much useless, duplicates the info in ex.message) + // ex.stacktrace = n/a; see 'opera:config#UserPrefs|Exceptions Have Stacktrace' + + /** + * Computes stack trace information from the stack property. + * Chrome and Gecko use this property. + * @param {Error} ex + * @return {?Object.} Stack trace information. + */ + function computeStackTraceFromStackProp(ex) { + if (typeof ex.stack === 'undefined' || !ex.stack) return; + + var chrome = /^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i; + var winjs = /^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i; + // NOTE: blob urls are now supposed to always have an origin, therefore it's format + // which is `blob:http://url/path/with-some-uuid`, is matched by `blob.*?:\/` as well + var gecko = /^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i; + // Used to additionally parse URL/line/column from eval frames + var geckoEval = /(\S+) line (\d+)(?: > eval line \d+)* > eval/i; + var chromeEval = /\((\S*)(?::(\d+))(?::(\d+))\)/; + var lines = ex.stack.split('\n'); + var stack = []; + var submatch; + var parts; + var element; + var reference = /^(.*) is undefined$/.exec(ex.message); + + for (var i = 0, j = lines.length; i < j; ++i) { + if ((parts = chrome.exec(lines[i]))) { + var isNative = parts[2] && parts[2].indexOf('native') === 0; // start of line + var isEval = parts[2] && parts[2].indexOf('eval') === 0; // start of line + if (isEval && (submatch = chromeEval.exec(parts[2]))) { + // throw out eval line/column and use top-most line/column number + parts[2] = submatch[1]; // url + parts[3] = submatch[2]; // line + parts[4] = submatch[3]; // column + } + element = { + url: !isNative ? parts[2] : null, + func: parts[1] || UNKNOWN_FUNCTION, + args: isNative ? [parts[2]] : [], + line: parts[3] ? +parts[3] : null, + column: parts[4] ? +parts[4] : null + }; + } else if ((parts = winjs.exec(lines[i]))) { + element = { + url: parts[2], + func: parts[1] || UNKNOWN_FUNCTION, + args: [], + line: +parts[3], + column: parts[4] ? +parts[4] : null + }; + } else if ((parts = gecko.exec(lines[i]))) { + var isEval = parts[3] && parts[3].indexOf(' > eval') > -1; + if (isEval && (submatch = geckoEval.exec(parts[3]))) { + // throw out eval line/column and use top-most line number + parts[3] = submatch[1]; + parts[4] = submatch[2]; + parts[5] = null; // no column when eval + } else if (i === 0 && !parts[5] && typeof ex.columnNumber !== 'undefined') { + // FireFox uses this awesome columnNumber property for its top frame + // Also note, Firefox's column number is 0-based and everything else expects 1-based, + // so adding 1 + // NOTE: this hack doesn't work if top-most frame is eval + stack[0].column = ex.columnNumber + 1; + } + element = { + url: parts[3], + func: parts[1] || UNKNOWN_FUNCTION, + args: parts[2] ? parts[2].split(',') : [], + line: parts[4] ? +parts[4] : null, + column: parts[5] ? +parts[5] : null + }; + } else { + continue; + } + + if (!element.func && element.line) { + element.func = UNKNOWN_FUNCTION; + } + + if (element.url && element.url.substr(0, 5) === 'blob:') { + // Special case for handling JavaScript loaded into a blob. + // We use a synchronous AJAX request here as a blob is already in + // memory - it's not making a network request. This will generate a warning + // in the browser console, but there has already been an error so that's not + // that much of an issue. + var xhr = new XMLHttpRequest(); + xhr.open('GET', element.url, false); + xhr.send(null); + + // If we failed to download the source, skip this patch + if (xhr.status === 200) { + var source = xhr.responseText || ''; + + // We trim the source down to the last 300 characters as sourceMappingURL is always at the end of the file. + // Why 300? To be in line with: https://github.com/getsentry/sentry/blob/4af29e8f2350e20c28a6933354e4f42437b4ba42/src/sentry/lang/javascript/processor.py#L164-L175 + source = source.slice(-300); + + // Now we dig out the source map URL + var sourceMaps = source.match(/\/\/# sourceMappingURL=(.*)$/); + + // If we don't find a source map comment or we find more than one, continue on to the next element. + if (sourceMaps) { + var sourceMapAddress = sourceMaps[1]; + + // Now we check to see if it's a relative URL. + // If it is, convert it to an absolute one. + if (sourceMapAddress.charAt(0) === '~') { + sourceMapAddress = getLocationOrigin() + sourceMapAddress.slice(1); + } + + // Now we strip the '.map' off of the end of the URL and update the + // element so that Sentry can match the map to the blob. + element.url = sourceMapAddress.slice(0, -4); + } + } + } + + stack.push(element); + } + + if (!stack.length) { + return null; + } + + return { + name: ex.name, + message: ex.message, + url: getLocationHref(), + stack: stack + }; + } + + /** + * Adds information about the first frame to incomplete stack traces. + * Safari and IE require this to get complete data on the first frame. + * @param {Object.} stackInfo Stack trace information from + * one of the compute* methods. + * @param {string} url The URL of the script that caused an error. + * @param {(number|string)} lineNo The line number of the script that + * caused an error. + * @param {string=} message The error generated by the browser, which + * hopefully contains the name of the object that caused the error. + * @return {boolean} Whether or not the stack information was + * augmented. + */ + function augmentStackTraceWithInitialElement(stackInfo, url, lineNo, message) { + var initial = { + url: url, + line: lineNo + }; + + if (initial.url && initial.line) { + stackInfo.incomplete = false; + + if (!initial.func) { + initial.func = UNKNOWN_FUNCTION; + } + + if (stackInfo.stack.length > 0) { + if (stackInfo.stack[0].url === initial.url) { + if (stackInfo.stack[0].line === initial.line) { + return false; // already in stack trace + } else if ( + !stackInfo.stack[0].line && + stackInfo.stack[0].func === initial.func + ) { + stackInfo.stack[0].line = initial.line; + return false; + } + } + } + + stackInfo.stack.unshift(initial); + stackInfo.partial = true; + return true; + } else { + stackInfo.incomplete = true; + } + + return false; + } + + /** + * Computes stack trace information by walking the arguments.caller + * chain at the time the exception occurred. This will cause earlier + * frames to be missed but is the only way to get any stack trace in + * Safari and IE. The top frame is restored by + * {@link augmentStackTraceWithInitialElement}. + * @param {Error} ex + * @return {?Object.} Stack trace information. + */ + function computeStackTraceByWalkingCallerChain(ex, depth) { + var functionName = /function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i, + stack = [], + funcs = {}, + recursion = false, + parts, + item, + source; + + for ( + var curr = computeStackTraceByWalkingCallerChain.caller; + curr && !recursion; + curr = curr.caller + ) { + if (curr === computeStackTrace || curr === TraceKit.report) { + // console.log('skipping internal function'); + continue; + } + + item = { + url: null, + func: UNKNOWN_FUNCTION, + line: null, + column: null + }; + + if (curr.name) { + item.func = curr.name; + } else if ((parts = functionName.exec(curr.toString()))) { + item.func = parts[1]; + } + + if (typeof item.func === 'undefined') { + try { + item.func = parts.input.substring(0, parts.input.indexOf('{')); + } catch (e) {} + } + + if (funcs['' + curr]) { + recursion = true; + } else { + funcs['' + curr] = true; + } + + stack.push(item); + } + + if (depth) { + // console.log('depth is ' + depth); + // console.log('stack is ' + stack.length); + stack.splice(0, depth); + } + + var result = { + name: ex.name, + message: ex.message, + url: getLocationHref(), + stack: stack + }; + augmentStackTraceWithInitialElement( + result, + ex.sourceURL || ex.fileName, + ex.line || ex.lineNumber, + ex.message || ex.description + ); + return result; + } + + /** + * Computes a stack trace for an exception. + * @param {Error} ex + * @param {(string|number)=} depth + */ + function computeStackTrace(ex, depth) { + var stack = null; + depth = depth == null ? 0 : +depth; + + try { + stack = computeStackTraceFromStackProp(ex); + if (stack) { + return stack; + } + } catch (e) { + if (TraceKit.debug) { + throw e; + } + } + + try { + stack = computeStackTraceByWalkingCallerChain(ex, depth + 1); + if (stack) { + return stack; + } + } catch (e) { + if (TraceKit.debug) { + throw e; + } + } + return { + name: ex.name, + message: ex.message, + url: getLocationHref() + }; + } + + computeStackTrace.augmentStackTraceWithInitialElement = augmentStackTraceWithInitialElement; + computeStackTrace.computeStackTraceFromStackProp = computeStackTraceFromStackProp; + + return computeStackTrace; +})(); + +module.exports = TraceKit; + +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"6":6}],8:[function(_dereq_,module,exports){ +/* + json-stringify-safe + Like JSON.stringify, but doesn't throw on circular references. + + Originally forked from https://github.com/isaacs/json-stringify-safe + version 5.0.1 on 3/8/2017 and modified to handle Errors serialization + and IE8 compatibility. Tests for this are in test/vendor. + + ISC license: https://github.com/isaacs/json-stringify-safe/blob/master/LICENSE +*/ + +exports = module.exports = stringify; +exports.getSerialize = serializer; + +function indexOf(haystack, needle) { + for (var i = 0; i < haystack.length; ++i) { + if (haystack[i] === needle) return i; + } + return -1; +} + +function stringify(obj, replacer, spaces, cycleReplacer) { + return JSON.stringify(obj, serializer(replacer, cycleReplacer), spaces); +} + +// https://github.com/ftlabs/js-abbreviate/blob/fa709e5f139e7770a71827b1893f22418097fbda/index.js#L95-L106 +function stringifyError(value) { + var err = { + // These properties are implemented as magical getters and don't show up in for in + stack: value.stack, + message: value.message, + name: value.name + }; + + for (var i in value) { + if (Object.prototype.hasOwnProperty.call(value, i)) { + err[i] = value[i]; + } + } + + return err; +} + +function serializer(replacer, cycleReplacer) { + var stack = []; + var keys = []; + + if (cycleReplacer == null) { + cycleReplacer = function(key, value) { + if (stack[0] === value) { + return '[Circular ~]'; + } + return '[Circular ~.' + keys.slice(0, indexOf(stack, value)).join('.') + ']'; + }; + } + + return function(key, value) { + if (stack.length > 0) { + var thisPos = indexOf(stack, this); + ~thisPos ? stack.splice(thisPos + 1) : stack.push(this); + ~thisPos ? keys.splice(thisPos, Infinity, key) : keys.push(key); + + if (~indexOf(stack, value)) { + value = cycleReplacer.call(this, key, value); + } + } else { + stack.push(value); + } + + return replacer == null + ? value instanceof Error ? stringifyError(value) : value + : replacer.call(this, key, value); + }; +} + +},{}],9:[function(_dereq_,module,exports){ +/* + * JavaScript MD5 + * https://github.com/blueimp/JavaScript-MD5 + * + * Copyright 2011, Sebastian Tschan + * https://blueimp.net + * + * Licensed under the MIT license: + * https://opensource.org/licenses/MIT + * + * Based on + * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message + * Digest Algorithm, as defined in RFC 1321. + * Version 2.2 Copyright (C) Paul Johnston 1999 - 2009 + * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet + * Distributed under the BSD License + * See http://pajhome.org.uk/crypt/md5 for more info. + */ + +/* +* Add integers, wrapping at 2^32. This uses 16-bit operations internally +* to work around bugs in some JS interpreters. +*/ +function safeAdd(x, y) { + var lsw = (x & 0xffff) + (y & 0xffff); + var msw = (x >> 16) + (y >> 16) + (lsw >> 16); + return (msw << 16) | (lsw & 0xffff); +} + +/* +* Bitwise rotate a 32-bit number to the left. +*/ +function bitRotateLeft(num, cnt) { + return (num << cnt) | (num >>> (32 - cnt)); +} + +/* +* These functions implement the four basic operations the algorithm uses. +*/ +function md5cmn(q, a, b, x, s, t) { + return safeAdd(bitRotateLeft(safeAdd(safeAdd(a, q), safeAdd(x, t)), s), b); +} +function md5ff(a, b, c, d, x, s, t) { + return md5cmn((b & c) | (~b & d), a, b, x, s, t); +} +function md5gg(a, b, c, d, x, s, t) { + return md5cmn((b & d) | (c & ~d), a, b, x, s, t); +} +function md5hh(a, b, c, d, x, s, t) { + return md5cmn(b ^ c ^ d, a, b, x, s, t); +} +function md5ii(a, b, c, d, x, s, t) { + return md5cmn(c ^ (b | ~d), a, b, x, s, t); +} + +/* +* Calculate the MD5 of an array of little-endian words, and a bit length. +*/ +function binlMD5(x, len) { + /* append padding */ + x[len >> 5] |= 0x80 << (len % 32); + x[(((len + 64) >>> 9) << 4) + 14] = len; + + var i; + var olda; + var oldb; + var oldc; + var oldd; + var a = 1732584193; + var b = -271733879; + var c = -1732584194; + var d = 271733878; + + for (i = 0; i < x.length; i += 16) { + olda = a; + oldb = b; + oldc = c; + oldd = d; + + a = md5ff(a, b, c, d, x[i], 7, -680876936); + d = md5ff(d, a, b, c, x[i + 1], 12, -389564586); + c = md5ff(c, d, a, b, x[i + 2], 17, 606105819); + b = md5ff(b, c, d, a, x[i + 3], 22, -1044525330); + a = md5ff(a, b, c, d, x[i + 4], 7, -176418897); + d = md5ff(d, a, b, c, x[i + 5], 12, 1200080426); + c = md5ff(c, d, a, b, x[i + 6], 17, -1473231341); + b = md5ff(b, c, d, a, x[i + 7], 22, -45705983); + a = md5ff(a, b, c, d, x[i + 8], 7, 1770035416); + d = md5ff(d, a, b, c, x[i + 9], 12, -1958414417); + c = md5ff(c, d, a, b, x[i + 10], 17, -42063); + b = md5ff(b, c, d, a, x[i + 11], 22, -1990404162); + a = md5ff(a, b, c, d, x[i + 12], 7, 1804603682); + d = md5ff(d, a, b, c, x[i + 13], 12, -40341101); + c = md5ff(c, d, a, b, x[i + 14], 17, -1502002290); + b = md5ff(b, c, d, a, x[i + 15], 22, 1236535329); + + a = md5gg(a, b, c, d, x[i + 1], 5, -165796510); + d = md5gg(d, a, b, c, x[i + 6], 9, -1069501632); + c = md5gg(c, d, a, b, x[i + 11], 14, 643717713); + b = md5gg(b, c, d, a, x[i], 20, -373897302); + a = md5gg(a, b, c, d, x[i + 5], 5, -701558691); + d = md5gg(d, a, b, c, x[i + 10], 9, 38016083); + c = md5gg(c, d, a, b, x[i + 15], 14, -660478335); + b = md5gg(b, c, d, a, x[i + 4], 20, -405537848); + a = md5gg(a, b, c, d, x[i + 9], 5, 568446438); + d = md5gg(d, a, b, c, x[i + 14], 9, -1019803690); + c = md5gg(c, d, a, b, x[i + 3], 14, -187363961); + b = md5gg(b, c, d, a, x[i + 8], 20, 1163531501); + a = md5gg(a, b, c, d, x[i + 13], 5, -1444681467); + d = md5gg(d, a, b, c, x[i + 2], 9, -51403784); + c = md5gg(c, d, a, b, x[i + 7], 14, 1735328473); + b = md5gg(b, c, d, a, x[i + 12], 20, -1926607734); + + a = md5hh(a, b, c, d, x[i + 5], 4, -378558); + d = md5hh(d, a, b, c, x[i + 8], 11, -2022574463); + c = md5hh(c, d, a, b, x[i + 11], 16, 1839030562); + b = md5hh(b, c, d, a, x[i + 14], 23, -35309556); + a = md5hh(a, b, c, d, x[i + 1], 4, -1530992060); + d = md5hh(d, a, b, c, x[i + 4], 11, 1272893353); + c = md5hh(c, d, a, b, x[i + 7], 16, -155497632); + b = md5hh(b, c, d, a, x[i + 10], 23, -1094730640); + a = md5hh(a, b, c, d, x[i + 13], 4, 681279174); + d = md5hh(d, a, b, c, x[i], 11, -358537222); + c = md5hh(c, d, a, b, x[i + 3], 16, -722521979); + b = md5hh(b, c, d, a, x[i + 6], 23, 76029189); + a = md5hh(a, b, c, d, x[i + 9], 4, -640364487); + d = md5hh(d, a, b, c, x[i + 12], 11, -421815835); + c = md5hh(c, d, a, b, x[i + 15], 16, 530742520); + b = md5hh(b, c, d, a, x[i + 2], 23, -995338651); + + a = md5ii(a, b, c, d, x[i], 6, -198630844); + d = md5ii(d, a, b, c, x[i + 7], 10, 1126891415); + c = md5ii(c, d, a, b, x[i + 14], 15, -1416354905); + b = md5ii(b, c, d, a, x[i + 5], 21, -57434055); + a = md5ii(a, b, c, d, x[i + 12], 6, 1700485571); + d = md5ii(d, a, b, c, x[i + 3], 10, -1894986606); + c = md5ii(c, d, a, b, x[i + 10], 15, -1051523); + b = md5ii(b, c, d, a, x[i + 1], 21, -2054922799); + a = md5ii(a, b, c, d, x[i + 8], 6, 1873313359); + d = md5ii(d, a, b, c, x[i + 15], 10, -30611744); + c = md5ii(c, d, a, b, x[i + 6], 15, -1560198380); + b = md5ii(b, c, d, a, x[i + 13], 21, 1309151649); + a = md5ii(a, b, c, d, x[i + 4], 6, -145523070); + d = md5ii(d, a, b, c, x[i + 11], 10, -1120210379); + c = md5ii(c, d, a, b, x[i + 2], 15, 718787259); + b = md5ii(b, c, d, a, x[i + 9], 21, -343485551); + + a = safeAdd(a, olda); + b = safeAdd(b, oldb); + c = safeAdd(c, oldc); + d = safeAdd(d, oldd); + } + return [a, b, c, d]; +} + +/* +* Convert an array of little-endian words to a string +*/ +function binl2rstr(input) { + var i; + var output = ''; + var length32 = input.length * 32; + for (i = 0; i < length32; i += 8) { + output += String.fromCharCode((input[i >> 5] >>> (i % 32)) & 0xff); + } + return output; +} + +/* +* Convert a raw string to an array of little-endian words +* Characters >255 have their high-byte silently ignored. +*/ +function rstr2binl(input) { + var i; + var output = []; + output[(input.length >> 2) - 1] = undefined; + for (i = 0; i < output.length; i += 1) { + output[i] = 0; + } + var length8 = input.length * 8; + for (i = 0; i < length8; i += 8) { + output[i >> 5] |= (input.charCodeAt(i / 8) & 0xff) << (i % 32); + } + return output; +} + +/* +* Calculate the MD5 of a raw string +*/ +function rstrMD5(s) { + return binl2rstr(binlMD5(rstr2binl(s), s.length * 8)); +} + +/* +* Calculate the HMAC-MD5, of a key and some data (raw strings) +*/ +function rstrHMACMD5(key, data) { + var i; + var bkey = rstr2binl(key); + var ipad = []; + var opad = []; + var hash; + ipad[15] = opad[15] = undefined; + if (bkey.length > 16) { + bkey = binlMD5(bkey, key.length * 8); + } + for (i = 0; i < 16; i += 1) { + ipad[i] = bkey[i] ^ 0x36363636; + opad[i] = bkey[i] ^ 0x5c5c5c5c; + } + hash = binlMD5(ipad.concat(rstr2binl(data)), 512 + data.length * 8); + return binl2rstr(binlMD5(opad.concat(hash), 512 + 128)); +} + +/* +* Convert a raw string to a hex string +*/ +function rstr2hex(input) { + var hexTab = '0123456789abcdef'; + var output = ''; + var x; + var i; + for (i = 0; i < input.length; i += 1) { + x = input.charCodeAt(i); + output += hexTab.charAt((x >>> 4) & 0x0f) + hexTab.charAt(x & 0x0f); + } + return output; +} + +/* +* Encode a string as utf-8 +*/ +function str2rstrUTF8(input) { + return unescape(encodeURIComponent(input)); +} + +/* +* Take string arguments and return either raw or hex encoded strings +*/ +function rawMD5(s) { + return rstrMD5(str2rstrUTF8(s)); +} +function hexMD5(s) { + return rstr2hex(rawMD5(s)); +} +function rawHMACMD5(k, d) { + return rstrHMACMD5(str2rstrUTF8(k), str2rstrUTF8(d)); +} +function hexHMACMD5(k, d) { + return rstr2hex(rawHMACMD5(k, d)); +} + +function md5(string, key, raw) { + if (!key) { + if (!raw) { + return hexMD5(string); + } + return rawMD5(string); + } + if (!raw) { + return hexHMACMD5(key, string); + } + return rawHMACMD5(key, string); +} + +module.exports = md5; + +},{}]},{},[5,1])(5) +}); \ No newline at end of file diff --git a/packages/raven-js/dist/angular/raven.min.js b/packages/raven-js/dist/angular/raven.min.js new file mode 100644 index 000000000000..cc97a7f585c4 --- /dev/null +++ b/packages/raven-js/dist/angular/raven.min.js @@ -0,0 +1,4 @@ +/*! Raven.js 3.25.2 (30b6d4e) | github.com/getsentry/raven-js */ +!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.Raven=a()}}(function(){return function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};b[g][0].call(k.exports,function(a){var c=b[g][1][a];return e(c?c:a)},k,k.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;gthis.l.maxBreadcrumbs&&this.v.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.s.push([a,b]),this.o&&this.G(),this},setUserContext:function(a){return this.k.user=a,this},setExtraContext:function(a){return this.$("extra",a),this},setTagsContext:function(a){return this.$("tags",a),this},clearContext:function(){return this.k={},this},getContext:function(){return JSON.parse(h(this.k))},setEnvironment:function(a){return this.l.environment=a,this},setRelease:function(a){return this.l.release=a,this},setDataCallback:function(a){var b=this.l.dataCallback;return this.l.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.l.breadcrumbCallback;return this.l.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.l.shouldSendCallback;return this.l.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.l.transport=a,this},lastException:function(){return this.e},lastEventId:function(){return this.g},isSetup:function(){return!!this.b&&(!!this.h||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.A("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=R.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(S){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.I;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.k.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.K(this.H(c)),h=S.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(S.head||S.body).appendChild(h)}},M:function(){var a=this;this.n+=1,setTimeout(function(){a.n-=1})},_:function(a,b){var c,d;if(this.c){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),S.createEvent?(c=S.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=S.createEventObject(),c.eventType=a);for(d in b)A(b,d)&&(c[d]=b[d]);if(S.createEvent)S.dispatchEvent(c);else try{S.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},aa:function(a){var b=this;return function(c){if(b.ba=null,b.w!==c){b.w=c;var d;try{d=E(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ca:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.ba;g||a.aa("input")(c),clearTimeout(g),a.ba=setTimeout(function(){a.ba=null},b)}}},da:function(a,b){var c=H(this.x.href),d=H(b),e=H(a);this.y=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},D:function(){var a=this;a.ea=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.N?a.ea.apply(this.P,arguments):a.ea.apply(this,arguments)}},R:function(){this.ea&&(Function.prototype.toString=this.ea)},E:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.da(b.y,c+""),a.apply(this,arguments)}};I(R.history,"pushState",j,d),I(R.history,"replaceState",j,d)}if(c.console&&"console"in R&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};w(["debug","info","warn","error","log"],function(a,b){O(console,b,k)})}},S:function(){for(var a;this.u.length;){a=this.u.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},T:function(){for(var a in this.r)this.q[a]=this.r[a]},G:function(){var a=this;w(this.s,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},H:function(a){var b=Q.exec(a),c={},d=7;try{for(;d--;)c[P[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.l.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},K:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},B:function(){this.n||this.W.apply(this,arguments)},W:function(a,b){var c=this.Y(a,b);this._("handle",{stackInfo:a,options:b}),this.ga(a.name,a.message,a.url,a.lineno,c,b)},Y:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(w(a.stack,function(b,e){var f=c.ha(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.v,0)}),this.k.user&&(a.user=this.k.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),a=this.qa(a),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||v(a[b]))&&delete a[b]}),s(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!v(a)&&(!s(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.na()?void this.A("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function F(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&l(b))for(c=b.split(/\s+/),f=0;fc?Q(a,b-1):d}function R(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?X:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function S(a,b){function c(a){return m(a)?a.map(function(a){return c(a)}):k(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!m(b)||m(b)&&0===b.length)return a;var d,e=A(b),f="********";try{d=JSON.parse(T(a))}catch(g){return a}return c(d)}var T=a(8),U="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},V=3,W=51200,X=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isDOMError:g,isDOMException:h,isUndefined:i,isFunction:j,isPlainObject:k,isString:l,isArray:m,isEmptyObject:n,supportsErrorEvent:o,supportsDOMError:p,supportsDOMException:q,supportsFetch:r,supportsReferrerPolicy:s,supportsPromiseRejectionEvent:t,wrappedCallback:u,each:v,objectMerge:w,truncate:y,objectFrozen:x,hasKey:z,joinRegExp:A,urlencode:B,uuid4:D,htmlTreeAsString:E,htmlElementAsString:F,isSameException:I,isSameStacktrace:J,parseUrl:C,fill:K,safeJoin:L,serializeException:Q,serializeKeysForMessage:R,sanitize:S}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{8:8}],7:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}function e(){return"undefined"==typeof document||null==document.location?"":(document.location.origin||(document.location.origin=document.location.protocol+"//"+document.location.hostname+(document.location.port?":"+document.location.port:"")),document.location.origin)}var f=a(6),g={collectWindowErrors:!0,debug:!1},h="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},i=[].slice,j="?",k=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;g.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function e(a,b){var c=null;if(!b||g.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(i.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,h,i){var l=null,m=f.isErrorEvent(i)?i.error:i,n=f.isErrorEvent(a)?a.message:a;if(v)g.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&f.isError(m))l=g.computeStackTrace(m),e(l,!0);else{var p,r={url:b,line:c,column:h},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(k);p&&(s=p[1],n=p[2])}r.func=j,l={name:s,message:n,url:d(),stack:[r]},e(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=h.onerror,h.onerror=l,r=!0)}function n(){r&&(h.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,e.apply(null,[a,!1].concat(b))}function p(a,b){var c=i.call(arguments,1);if(v){if(u===a)return;o()}var d=g.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),g.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,f,g=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,h=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,i=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,k=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,l=/\((\S*)(?::(\d+))(?::(\d+))\)/,m=a.stack.split("\n"),n=[],o=(/^(.*) is undefined$/.exec(a.message),0),p=m.length;o eval")>-1;r&&(b=k.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==o||c[5]||"undefined"==typeof a.columnNumber||(n[0].column=a.columnNumber+1),f={url:c[3],func:c[1]||j,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}if(!f.func&&f.line&&(f.func=j),f.url&&"blob:"===f.url.substr(0,5)){var s=new XMLHttpRequest;if(s.open("GET",f.url,!1),s.send(null),200===s.status){var t=s.responseText||"";t=t.slice(-300);var u=t.match(/\/\/# sourceMappingURL=(.*)$/);if(u){var v=u[1];"~"===v.charAt(0)&&(v=e()+v.slice(1)),f.url=v.slice(0,-4)}}}n.push(f)}return n.length?{name:a.name,message:a.message,url:d(),stack:n}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=j),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,e){for(var h,i,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==f&&o!==g.report){ +if(i={url:null,func:j,line:null,column:null},o.name?i.func=o.name:(h=k.exec(o.toString()))&&(i.func=h[1]),"undefined"==typeof i.func)try{i.func=h.input.substring(0,h.input.indexOf("{"))}catch(p){}m[""+o]?n=!0:m[""+o]=!0,l.push(i)}e&&l.splice(0,e);var q={name:a.name,message:a.message,url:d(),stack:l};return b(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),q}function f(b,e){var f=null;e=null==e?0:+e;try{if(f=a(b))return f}catch(h){if(g.debug)throw h}try{if(f=c(b,e+1))return f}catch(h){if(g.debug)throw h}return{name:b.name,message:b.message,url:d()}}return f.augmentStackTraceWithInitialElement=b,f.computeStackTraceFromStackProp=a,f}(),b.exports=g}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{6:6}],8:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}],9:[function(a,b,c){function d(a,b){var c=(65535&a)+(65535&b),d=(a>>16)+(b>>16)+(c>>16);return d<<16|65535&c}function e(a,b){return a<>>32-b}function f(a,b,c,f,g,h){return d(e(d(d(b,a),d(f,h)),g),c)}function g(a,b,c,d,e,g,h){return f(b&c|~b&d,a,b,e,g,h)}function h(a,b,c,d,e,g,h){return f(b&d|c&~d,a,b,e,g,h)}function i(a,b,c,d,e,g,h){return f(b^c^d,a,b,e,g,h)}function j(a,b,c,d,e,g,h){return f(c^(b|~d),a,b,e,g,h)}function k(a,b){a[b>>5]|=128<>>9<<4)+14]=b;var c,e,f,k,l,m=1732584193,n=-271733879,o=-1732584194,p=271733878;for(c=0;c>5]>>>b%32&255);return c}function m(a){var b,c=[];for(c[(a.length>>2)-1]=void 0,b=0;b>5]|=(255&a.charCodeAt(b/8))<16&&(e=k(e,8*a.length)),c=0;c<16;c+=1)f[c]=909522486^e[c],g[c]=1549556828^e[c];return d=k(f.concat(m(b)),512+8*b.length),l(k(g.concat(d),640))}function p(a){var b,c,d="0123456789abcdef",e="";for(c=0;c>>4&15)+d.charAt(15&b);return e}function q(a){return unescape(encodeURIComponent(a))}function r(a){return n(q(a))}function s(a){return p(r(a))}function t(a,b){return o(q(a),q(b))}function u(a,b){return p(t(a,b))}function v(a,b,c){return b?c?t(b,a):u(b,a):c?r(a):s(a)}b.exports=v},{}]},{},[5,1])(5)}); +//# sourceMappingURL=raven.min.js.map \ No newline at end of file diff --git a/packages/raven-js/dist/angular/raven.min.js.map b/packages/raven-js/dist/angular/raven.min.js.map new file mode 100644 index 000000000000..2298269c409d --- /dev/null +++ b/packages/raven-js/dist/angular/raven.min.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","angularPlugin","angular","RavenProvider","$get","$window","ExceptionHandlerProvider","$provide","decorator","exceptionHandler","R","$delegate","ex","cause","captureException","extra","moduleName","provider","config","setDataCallback","wrappedCallback","data","_normalizeData","angularPattern","exception","values","matches","exec","value","type","message","angularDocs","substr","addPlugin","5","6","2","RavenConfigError","name","prototype","constructor","3","utils","wrapMethod","console","level","callback","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","msg","safeJoin","logger","Function","apply","4","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","sanitizeKeys","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isErrorEvent","isDOMError","isDOMException","isError","isObject","isPlainObject","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","sanitize","wrapConsoleMethod","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","dsn","options","_logDebug","globalOptions","key","setDSN","push","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","toString","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","context","func","undefined","wrap","_before","wrapped","deep","_ignoreNextOnError","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","U","event","reason","unhandledPromiseRejection","C","_promiseRejectionHandler","bind","addEventListener","Q","removeEventListener","trimHeadFrames","error","captureMessage","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","V","currentOptions","exKeys","Object","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","M","setTimeout","_","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","aa","evtName","_keypressTimeout","target","category","ca","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","da","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","D","_originalFunctionToString","E","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","F","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","S","builtin","T","G","installer","concat","H","str","m","allowSecretKey","K","port","B","W","stackInfo","_triggerEvent","_processException","lineno","Y","frame","_normalizeFrame","in_app","ha","stackInfoUrl","normalized","filename","line","colno","column","function","ga","prefixedMessage","transaction","ia","request","Referer","breadcrumbs","_trimBreadcrumbs","ja","urlProp","urlProps","ka","httpData","userAgent","User-Agent","referrer","z","_backoffDuration","_backoffStart","na","oa","current","last","pa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Z","baseData","project","platform","_getHttpData","serverName","server_name","_sanitizeData","forEach","random","_sendProcessedPayload","qa","sa","ra","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","ta","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","onerror","open","setRequestHeader","send","ua","hash","evaluated","A","$","setUser","setReleaseContext","7","8","9","RavenConstructor","_Raven","noConflict","Client","what","supportsErrorEvent","ErrorEvent","supportsDOMError","DOMError","supportsDOMException","DOMException","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","sanitizeMask","safeInput","o_O","getLocationHref","getLocationOrigin","origin","hostname","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","responseText","sourceMaps","sourceMapAddress","charAt","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","y","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","string","raw"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file diff --git a/packages/raven-js/dist/console,ember,require,vue/raven.js b/packages/raven-js/dist/console,ember,require,vue/raven.js new file mode 100644 index 000000000000..0f0541177fd7 --- /dev/null +++ b/packages/raven-js/dist/console,ember,require,vue/raven.js @@ -0,0 +1,4145 @@ +/*! Raven.js 3.25.2 (30b6d4e) | github.com/getsentry/raven-js */ + +/* + * Includes TraceKit + * https://github.com/getsentry/TraceKit + * + * Copyright 2018 Matt Robenolt and other contributors + * Released under the BSD license + * https://github.com/getsentry/raven-js/blob/master/LICENSE + * + */ + +(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.Raven = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o' : 'anonymous component') + + (vm._isVue && vm.$options.__file ? ' at ' + vm.$options.__file : '') + ); +} + +function vuePlugin(Raven, Vue) { + Vue = Vue || window.Vue; + + // quit if Vue isn't on the page + if (!Vue || !Vue.config) return; + + var _oldOnError = Vue.config.errorHandler; + Vue.config.errorHandler = function VueErrorHandler(error, vm, info) { + var metaData = {}; + + // vm and lifecycleHook are not always available + if (Object.prototype.toString.call(vm) === '[object Object]') { + metaData.componentName = formatComponentName(vm); + metaData.propsData = vm.$options.propsData; + } + + if (typeof info !== 'undefined') { + metaData.lifecycleHook = info; + } + + Raven.captureException(error, { + extra: metaData + }); + + if (typeof _oldOnError === 'function') { + _oldOnError.call(this, error, vm, info); + } + }; +} + +module.exports = vuePlugin; + +_dereq_(8).addPlugin(module.exports); +},{"8":8}],5:[function(_dereq_,module,exports){ +function RavenConfigError(message) { + this.name = 'RavenConfigError'; + this.message = message; +} +RavenConfigError.prototype = new Error(); +RavenConfigError.prototype.constructor = RavenConfigError; + +module.exports = RavenConfigError; + +},{}],6:[function(_dereq_,module,exports){ +var utils = _dereq_(9); + +var wrapMethod = function(console, level, callback) { + var originalConsoleLevel = console[level]; + var originalConsole = console; + + if (!(level in console)) { + return; + } + + var sentryLevel = level === 'warn' ? 'warning' : level; + + console[level] = function() { + var args = [].slice.call(arguments); + + var msg = utils.safeJoin(args, ' '); + var data = {level: sentryLevel, logger: 'console', extra: {arguments: args}}; + + if (level === 'assert') { + if (args[0] === false) { + // Default browsers message + msg = + 'Assertion failed: ' + (utils.safeJoin(args.slice(1), ' ') || 'console.assert'); + data.extra.arguments = args.slice(1); + callback && callback(msg, data); + } + } else { + callback && callback(msg, data); + } + + // this fails for some browsers. :( + if (originalConsoleLevel) { + // IE9 doesn't allow calling apply on console functions directly + // See: https://stackoverflow.com/questions/5472938/does-ie9-support-console-log-and-is-it-a-real-function#answer-5473193 + Function.prototype.apply.call(originalConsoleLevel, originalConsole, args); + } + }; +}; + +module.exports = { + wrapMethod: wrapMethod +}; + +},{"9":9}],7:[function(_dereq_,module,exports){ +(function (global){ +/*global XDomainRequest:false */ + +var TraceKit = _dereq_(10); +var stringify = _dereq_(11); +var md5 = _dereq_(12); +var RavenConfigError = _dereq_(5); + +var utils = _dereq_(9); +var isErrorEvent = utils.isErrorEvent; +var isDOMError = utils.isDOMError; +var isDOMException = utils.isDOMException; +var isError = utils.isError; +var isObject = utils.isObject; +var isPlainObject = utils.isPlainObject; +var isUndefined = utils.isUndefined; +var isFunction = utils.isFunction; +var isString = utils.isString; +var isArray = utils.isArray; +var isEmptyObject = utils.isEmptyObject; +var each = utils.each; +var objectMerge = utils.objectMerge; +var truncate = utils.truncate; +var objectFrozen = utils.objectFrozen; +var hasKey = utils.hasKey; +var joinRegExp = utils.joinRegExp; +var urlencode = utils.urlencode; +var uuid4 = utils.uuid4; +var htmlTreeAsString = utils.htmlTreeAsString; +var isSameException = utils.isSameException; +var isSameStacktrace = utils.isSameStacktrace; +var parseUrl = utils.parseUrl; +var fill = utils.fill; +var supportsFetch = utils.supportsFetch; +var supportsReferrerPolicy = utils.supportsReferrerPolicy; +var serializeKeysForMessage = utils.serializeKeysForMessage; +var serializeException = utils.serializeException; +var sanitize = utils.sanitize; + +var wrapConsoleMethod = _dereq_(6).wrapMethod; + +var dsnKeys = 'source protocol user pass host port path'.split(' '), + dsnPattern = /^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/; + +function now() { + return +new Date(); +} + +// This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) +var _window = + typeof window !== 'undefined' + ? window + : typeof global !== 'undefined' + ? global + : typeof self !== 'undefined' + ? self + : {}; +var _document = _window.document; +var _navigator = _window.navigator; + +function keepOriginalCallback(original, callback) { + return isFunction(callback) + ? function(data) { + return callback(data, original); + } + : callback; +} + +// First, check for JSON support +// If there is no JSON, we no-op the core features of Raven +// since JSON is required to encode the payload +function Raven() { + this._hasJSON = !!(typeof JSON === 'object' && JSON.stringify); + // Raven can run in contexts where there's no document (react-native) + this._hasDocument = !isUndefined(_document); + this._hasNavigator = !isUndefined(_navigator); + this._lastCapturedException = null; + this._lastData = null; + this._lastEventId = null; + this._globalServer = null; + this._globalKey = null; + this._globalProject = null; + this._globalContext = {}; + this._globalOptions = { + // SENTRY_RELEASE can be injected by https://github.com/getsentry/sentry-webpack-plugin + release: _window.SENTRY_RELEASE && _window.SENTRY_RELEASE.id, + logger: 'javascript', + ignoreErrors: [], + ignoreUrls: [], + whitelistUrls: [], + includePaths: [], + headers: null, + collectWindowErrors: true, + captureUnhandledRejections: true, + maxMessageLength: 0, + // By default, truncates URL values to 250 chars + maxUrlLength: 250, + stackTraceLimit: 50, + autoBreadcrumbs: true, + instrument: true, + sampleRate: 1, + sanitizeKeys: [] + }; + this._fetchDefaults = { + method: 'POST', + keepalive: true, + // Despite all stars in the sky saying that Edge supports old draft syntax, aka 'never', 'always', 'origin' and 'default + // https://caniuse.com/#feat=referrer-policy + // It doesn't. And it throw exception instead of ignoring this parameter... + // REF: https://github.com/getsentry/raven-js/issues/1233 + referrerPolicy: supportsReferrerPolicy() ? 'origin' : '' + }; + this._ignoreOnError = 0; + this._isRavenInstalled = false; + this._originalErrorStackTraceLimit = Error.stackTraceLimit; + // capture references to window.console *and* all its methods first + // before the console plugin has a chance to monkey patch + this._originalConsole = _window.console || {}; + this._originalConsoleMethods = {}; + this._plugins = []; + this._startTime = now(); + this._wrappedBuiltIns = []; + this._breadcrumbs = []; + this._lastCapturedEvent = null; + this._keypressTimeout; + this._location = _window.location; + this._lastHref = this._location && this._location.href; + this._resetBackoff(); + + // eslint-disable-next-line guard-for-in + for (var method in this._originalConsole) { + this._originalConsoleMethods[method] = this._originalConsole[method]; + } +} + +/* + * The core Raven singleton + * + * @this {Raven} + */ + +Raven.prototype = { + // Hardcode version string so that raven source can be loaded directly via + // webpack (using a build step causes webpack #1617). Grunt verifies that + // this value matches package.json during build. + // See: https://github.com/getsentry/raven-js/issues/465 + VERSION: '3.25.2', + + debug: false, + + TraceKit: TraceKit, // alias to TraceKit + + /* + * Configure Raven with a DSN and extra options + * + * @param {string} dsn The public Sentry DSN + * @param {object} options Set of global options [optional] + * @return {Raven} + */ + config: function(dsn, options) { + var self = this; + + if (self._globalServer) { + this._logDebug('error', 'Error: Raven has already been configured'); + return self; + } + if (!dsn) return self; + + var globalOptions = self._globalOptions; + + // merge in options + if (options) { + each(options, function(key, value) { + // tags and extra are special and need to be put into context + if (key === 'tags' || key === 'extra' || key === 'user') { + self._globalContext[key] = value; + } else { + globalOptions[key] = value; + } + }); + } + + self.setDSN(dsn); + + // "Script error." is hard coded into browsers for errors that it can't read. + // this is the result of a script being pulled in from an external domain and CORS. + globalOptions.ignoreErrors.push(/^Script error\.?$/); + globalOptions.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/); + + // join regexp rules into one big rule + globalOptions.ignoreErrors = joinRegExp(globalOptions.ignoreErrors); + globalOptions.ignoreUrls = globalOptions.ignoreUrls.length + ? joinRegExp(globalOptions.ignoreUrls) + : false; + globalOptions.whitelistUrls = globalOptions.whitelistUrls.length + ? joinRegExp(globalOptions.whitelistUrls) + : false; + globalOptions.includePaths = joinRegExp(globalOptions.includePaths); + globalOptions.maxBreadcrumbs = Math.max( + 0, + Math.min(globalOptions.maxBreadcrumbs || 100, 100) + ); // default and hard limit is 100 + + var autoBreadcrumbDefaults = { + xhr: true, + console: true, + dom: true, + location: true, + sentry: true + }; + + var autoBreadcrumbs = globalOptions.autoBreadcrumbs; + if ({}.toString.call(autoBreadcrumbs) === '[object Object]') { + autoBreadcrumbs = objectMerge(autoBreadcrumbDefaults, autoBreadcrumbs); + } else if (autoBreadcrumbs !== false) { + autoBreadcrumbs = autoBreadcrumbDefaults; + } + globalOptions.autoBreadcrumbs = autoBreadcrumbs; + + var instrumentDefaults = { + tryCatch: true + }; + + var instrument = globalOptions.instrument; + if ({}.toString.call(instrument) === '[object Object]') { + instrument = objectMerge(instrumentDefaults, instrument); + } else if (instrument !== false) { + instrument = instrumentDefaults; + } + globalOptions.instrument = instrument; + + TraceKit.collectWindowErrors = !!globalOptions.collectWindowErrors; + + // return for chaining + return self; + }, + + /* + * Installs a global window.onerror error handler + * to capture and report uncaught exceptions. + * At this point, install() is required to be called due + * to the way TraceKit is set up. + * + * @return {Raven} + */ + install: function() { + var self = this; + if (self.isSetup() && !self._isRavenInstalled) { + TraceKit.report.subscribe(function() { + self._handleOnErrorStackInfo.apply(self, arguments); + }); + + if (self._globalOptions.captureUnhandledRejections) { + self._attachPromiseRejectionHandler(); + } + + self._patchFunctionToString(); + + if (self._globalOptions.instrument && self._globalOptions.instrument.tryCatch) { + self._instrumentTryCatch(); + } + + if (self._globalOptions.autoBreadcrumbs) self._instrumentBreadcrumbs(); + + // Install all of the plugins + self._drainPlugins(); + + self._isRavenInstalled = true; + } + + Error.stackTraceLimit = self._globalOptions.stackTraceLimit; + return this; + }, + + /* + * Set the DSN (can be called multiple time unlike config) + * + * @param {string} dsn The public Sentry DSN + */ + setDSN: function(dsn) { + var self = this, + uri = self._parseDSN(dsn), + lastSlash = uri.path.lastIndexOf('/'), + path = uri.path.substr(1, lastSlash); + + self._dsn = dsn; + self._globalKey = uri.user; + self._globalSecret = uri.pass && uri.pass.substr(1); + self._globalProject = uri.path.substr(lastSlash + 1); + + self._globalServer = self._getGlobalServer(uri); + + self._globalEndpoint = + self._globalServer + '/' + path + 'api/' + self._globalProject + '/store/'; + + // Reset backoff state since we may be pointing at a + // new project/server + this._resetBackoff(); + }, + + /* + * Wrap code within a context so Raven can capture errors + * reliably across domains that is executed immediately. + * + * @param {object} options A specific set of options for this context [optional] + * @param {function} func The callback to be immediately executed within the context + * @param {array} args An array of arguments to be called with the callback [optional] + */ + context: function(options, func, args) { + if (isFunction(options)) { + args = func || []; + func = options; + options = undefined; + } + + return this.wrap(options, func).apply(this, args); + }, + + /* + * Wrap code within a context and returns back a new function to be executed + * + * @param {object} options A specific set of options for this context [optional] + * @param {function} func The function to be wrapped in a new context + * @param {function} func A function to call before the try/catch wrapper [optional, private] + * @return {function} The newly wrapped functions with a context + */ + wrap: function(options, func, _before) { + var self = this; + // 1 argument has been passed, and it's not a function + // so just return it + if (isUndefined(func) && !isFunction(options)) { + return options; + } + + // options is optional + if (isFunction(options)) { + func = options; + options = undefined; + } + + // At this point, we've passed along 2 arguments, and the second one + // is not a function either, so we'll just return the second argument. + if (!isFunction(func)) { + return func; + } + + // We don't wanna wrap it twice! + try { + if (func.__raven__) { + return func; + } + + // If this has already been wrapped in the past, return that + if (func.__raven_wrapper__) { + return func.__raven_wrapper__; + } + } catch (e) { + // Just accessing custom props in some Selenium environments + // can cause a "Permission denied" exception (see raven-js#495). + // Bail on wrapping and return the function as-is (defers to window.onerror). + return func; + } + + function wrapped() { + var args = [], + i = arguments.length, + deep = !options || (options && options.deep !== false); + + if (_before && isFunction(_before)) { + _before.apply(this, arguments); + } + + // Recursively wrap all of a function's arguments that are + // functions themselves. + while (i--) args[i] = deep ? self.wrap(options, arguments[i]) : arguments[i]; + + try { + // Attempt to invoke user-land function + // NOTE: If you are a Sentry user, and you are seeing this stack frame, it + // means Raven caught an error invoking your application code. This is + // expected behavior and NOT indicative of a bug with Raven.js. + return func.apply(this, args); + } catch (e) { + self._ignoreNextOnError(); + self.captureException(e, options); + throw e; + } + } + + // copy over properties of the old function + for (var property in func) { + if (hasKey(func, property)) { + wrapped[property] = func[property]; + } + } + wrapped.prototype = func.prototype; + + func.__raven_wrapper__ = wrapped; + // Signal that this function has been wrapped/filled already + // for both debugging and to prevent it to being wrapped/filled twice + wrapped.__raven__ = true; + wrapped.__orig__ = func; + + return wrapped; + }, + + /** + * Uninstalls the global error handler. + * + * @return {Raven} + */ + uninstall: function() { + TraceKit.report.uninstall(); + + this._detachPromiseRejectionHandler(); + this._unpatchFunctionToString(); + this._restoreBuiltIns(); + this._restoreConsole(); + + Error.stackTraceLimit = this._originalErrorStackTraceLimit; + this._isRavenInstalled = false; + + return this; + }, + + /** + * Callback used for `unhandledrejection` event + * + * @param {PromiseRejectionEvent} event An object containing + * promise: the Promise that was rejected + * reason: the value with which the Promise was rejected + * @return void + */ + _promiseRejectionHandler: function(event) { + this._logDebug('debug', 'Raven caught unhandled promise rejection:', event); + this.captureException(event.reason, { + extra: { + unhandledPromiseRejection: true + } + }); + }, + + /** + * Installs the global promise rejection handler. + * + * @return {raven} + */ + _attachPromiseRejectionHandler: function() { + this._promiseRejectionHandler = this._promiseRejectionHandler.bind(this); + _window.addEventListener && + _window.addEventListener('unhandledrejection', this._promiseRejectionHandler); + return this; + }, + + /** + * Uninstalls the global promise rejection handler. + * + * @return {raven} + */ + _detachPromiseRejectionHandler: function() { + _window.removeEventListener && + _window.removeEventListener('unhandledrejection', this._promiseRejectionHandler); + return this; + }, + + /** + * Manually capture an exception and send it over to Sentry + * + * @param {error} ex An exception to be logged + * @param {object} options A specific set of options for this error [optional] + * @return {Raven} + */ + captureException: function(ex, options) { + options = objectMerge({trimHeadFrames: 0}, options ? options : {}); + + if (isErrorEvent(ex) && ex.error) { + // If it is an ErrorEvent with `error` property, extract it to get actual Error + ex = ex.error; + } else if (isDOMError(ex) || isDOMException(ex)) { + // If it is a DOMError or DOMException (which are legacy APIs, but still supported in some browsers) + // then we just extract the name and message, as they don't provide anything else + // https://developer.mozilla.org/en-US/docs/Web/API/DOMError + // https://developer.mozilla.org/en-US/docs/Web/API/DOMException + var name = ex.name || (isDOMError(ex) ? 'DOMError' : 'DOMException'); + var message = ex.message ? name + ': ' + ex.message : name; + + return this.captureMessage( + message, + objectMerge(options, { + // neither DOMError or DOMException provide stack trace and we most likely wont get it this way as well + // but it's barely any overhead so we may at least try + stacktrace: true, + trimHeadFrames: options.trimHeadFrames + 1 + }) + ); + } else if (isError(ex)) { + // we have a real Error object + ex = ex; + } else if (isPlainObject(ex)) { + // If it is plain Object, serialize it manually and extract options + // This will allow us to group events based on top-level keys + // which is much better than creating new group when any key/value change + options = this._getCaptureExceptionOptionsFromPlainObject(options, ex); + ex = new Error(options.message); + } else { + // If none of previous checks were valid, then it means that + // it's not a DOMError/DOMException + // it's not a plain Object + // it's not a valid ErrorEvent (one with an error property) + // it's not an Error + // So bail out and capture it as a simple message: + return this.captureMessage( + ex, + objectMerge(options, { + stacktrace: true, // if we fall back to captureMessage, default to attempting a new trace + trimHeadFrames: options.trimHeadFrames + 1 + }) + ); + } + + // Store the raw exception object for potential debugging and introspection + this._lastCapturedException = ex; + + // TraceKit.report will re-raise any exception passed to it, + // which means you have to wrap it in try/catch. Instead, we + // can wrap it here and only re-raise if TraceKit.report + // raises an exception different from the one we asked to + // report on. + try { + var stack = TraceKit.computeStackTrace(ex); + this._handleStackInfo(stack, options); + } catch (ex1) { + if (ex !== ex1) { + throw ex1; + } + } + + return this; + }, + + _getCaptureExceptionOptionsFromPlainObject: function(currentOptions, ex) { + var exKeys = Object.keys(ex).sort(); + var options = objectMerge(currentOptions, { + message: + 'Non-Error exception captured with keys: ' + serializeKeysForMessage(exKeys), + fingerprint: [md5(exKeys)], + extra: currentOptions.extra || {} + }); + options.extra.__serialized__ = serializeException(ex); + + return options; + }, + + /* + * Manually send a message to Sentry + * + * @param {string} msg A plain message to be captured in Sentry + * @param {object} options A specific set of options for this message [optional] + * @return {Raven} + */ + captureMessage: function(msg, options) { + // config() automagically converts ignoreErrors from a list to a RegExp so we need to test for an + // early call; we'll error on the side of logging anything called before configuration since it's + // probably something you should see: + if ( + !!this._globalOptions.ignoreErrors.test && + this._globalOptions.ignoreErrors.test(msg) + ) { + return; + } + + options = options || {}; + msg = msg + ''; // Make sure it's actually a string + + var data = objectMerge( + { + message: msg + }, + options + ); + + var ex; + // Generate a "synthetic" stack trace from this point. + // NOTE: If you are a Sentry user, and you are seeing this stack frame, it is NOT indicative + // of a bug with Raven.js. Sentry generates synthetic traces either by configuration, + // or if it catches a thrown object without a "stack" property. + try { + throw new Error(msg); + } catch (ex1) { + ex = ex1; + } + + // null exception name so `Error` isn't prefixed to msg + ex.name = null; + var stack = TraceKit.computeStackTrace(ex); + + // stack[0] is `throw new Error(msg)` call itself, we are interested in the frame that was just before that, stack[1] + var initialCall = isArray(stack.stack) && stack.stack[1]; + + // if stack[1] is `Raven.captureException`, it means that someone passed a string to it and we redirected that call + // to be handled by `captureMessage`, thus `initialCall` is the 3rd one, not 2nd + // initialCall => captureException(string) => captureMessage(string) + if (initialCall && initialCall.func === 'Raven.captureException') { + initialCall = stack.stack[2]; + } + + var fileurl = (initialCall && initialCall.url) || ''; + + if ( + !!this._globalOptions.ignoreUrls.test && + this._globalOptions.ignoreUrls.test(fileurl) + ) { + return; + } + + if ( + !!this._globalOptions.whitelistUrls.test && + !this._globalOptions.whitelistUrls.test(fileurl) + ) { + return; + } + + if (this._globalOptions.stacktrace || (options && options.stacktrace)) { + // fingerprint on msg, not stack trace (legacy behavior, could be revisited) + data.fingerprint = data.fingerprint == null ? msg : data.fingerprint; + + options = objectMerge( + { + trimHeadFrames: 0 + }, + options + ); + // Since we know this is a synthetic trace, the top frame (this function call) + // MUST be from Raven.js, so mark it for trimming + // We add to the trim counter so that callers can choose to trim extra frames, such + // as utility functions. + options.trimHeadFrames += 1; + + var frames = this._prepareFrames(stack, options); + data.stacktrace = { + // Sentry expects frames oldest to newest + frames: frames.reverse() + }; + } + + // Make sure that fingerprint is always wrapped in an array + if (data.fingerprint) { + data.fingerprint = isArray(data.fingerprint) + ? data.fingerprint + : [data.fingerprint]; + } + + // Fire away! + this._send(data); + + return this; + }, + + captureBreadcrumb: function(obj) { + var crumb = objectMerge( + { + timestamp: now() / 1000 + }, + obj + ); + + if (isFunction(this._globalOptions.breadcrumbCallback)) { + var result = this._globalOptions.breadcrumbCallback(crumb); + + if (isObject(result) && !isEmptyObject(result)) { + crumb = result; + } else if (result === false) { + return this; + } + } + + this._breadcrumbs.push(crumb); + if (this._breadcrumbs.length > this._globalOptions.maxBreadcrumbs) { + this._breadcrumbs.shift(); + } + return this; + }, + + addPlugin: function(plugin /*arg1, arg2, ... argN*/) { + var pluginArgs = [].slice.call(arguments, 1); + + this._plugins.push([plugin, pluginArgs]); + if (this._isRavenInstalled) { + this._drainPlugins(); + } + + return this; + }, + + /* + * Set/clear a user to be sent along with the payload. + * + * @param {object} user An object representing user data [optional] + * @return {Raven} + */ + setUserContext: function(user) { + // Intentionally do not merge here since that's an unexpected behavior. + this._globalContext.user = user; + + return this; + }, + + /* + * Merge extra attributes to be sent along with the payload. + * + * @param {object} extra An object representing extra data [optional] + * @return {Raven} + */ + setExtraContext: function(extra) { + this._mergeContext('extra', extra); + + return this; + }, + + /* + * Merge tags to be sent along with the payload. + * + * @param {object} tags An object representing tags [optional] + * @return {Raven} + */ + setTagsContext: function(tags) { + this._mergeContext('tags', tags); + + return this; + }, + + /* + * Clear all of the context. + * + * @return {Raven} + */ + clearContext: function() { + this._globalContext = {}; + + return this; + }, + + /* + * Get a copy of the current context. This cannot be mutated. + * + * @return {object} copy of context + */ + getContext: function() { + // lol javascript + return JSON.parse(stringify(this._globalContext)); + }, + + /* + * Set environment of application + * + * @param {string} environment Typically something like 'production'. + * @return {Raven} + */ + setEnvironment: function(environment) { + this._globalOptions.environment = environment; + + return this; + }, + + /* + * Set release version of application + * + * @param {string} release Typically something like a git SHA to identify version + * @return {Raven} + */ + setRelease: function(release) { + this._globalOptions.release = release; + + return this; + }, + + /* + * Set the dataCallback option + * + * @param {function} callback The callback to run which allows the + * data blob to be mutated before sending + * @return {Raven} + */ + setDataCallback: function(callback) { + var original = this._globalOptions.dataCallback; + this._globalOptions.dataCallback = keepOriginalCallback(original, callback); + return this; + }, + + /* + * Set the breadcrumbCallback option + * + * @param {function} callback The callback to run which allows filtering + * or mutating breadcrumbs + * @return {Raven} + */ + setBreadcrumbCallback: function(callback) { + var original = this._globalOptions.breadcrumbCallback; + this._globalOptions.breadcrumbCallback = keepOriginalCallback(original, callback); + return this; + }, + + /* + * Set the shouldSendCallback option + * + * @param {function} callback The callback to run which allows + * introspecting the blob before sending + * @return {Raven} + */ + setShouldSendCallback: function(callback) { + var original = this._globalOptions.shouldSendCallback; + this._globalOptions.shouldSendCallback = keepOriginalCallback(original, callback); + return this; + }, + + /** + * Override the default HTTP transport mechanism that transmits data + * to the Sentry server. + * + * @param {function} transport Function invoked instead of the default + * `makeRequest` handler. + * + * @return {Raven} + */ + setTransport: function(transport) { + this._globalOptions.transport = transport; + + return this; + }, + + /* + * Get the latest raw exception that was captured by Raven. + * + * @return {error} + */ + lastException: function() { + return this._lastCapturedException; + }, + + /* + * Get the last event id + * + * @return {string} + */ + lastEventId: function() { + return this._lastEventId; + }, + + /* + * Determine if Raven is setup and ready to go. + * + * @return {boolean} + */ + isSetup: function() { + if (!this._hasJSON) return false; // needs JSON support + if (!this._globalServer) { + if (!this.ravenNotConfiguredError) { + this.ravenNotConfiguredError = true; + this._logDebug('error', 'Error: Raven has not been configured.'); + } + return false; + } + return true; + }, + + afterLoad: function() { + // TODO: remove window dependence? + + // Attempt to initialize Raven on load + var RavenConfig = _window.RavenConfig; + if (RavenConfig) { + this.config(RavenConfig.dsn, RavenConfig.config).install(); + } + }, + + showReportDialog: function(options) { + if ( + !_document // doesn't work without a document (React native) + ) + return; + + options = options || {}; + + var lastEventId = options.eventId || this.lastEventId(); + if (!lastEventId) { + throw new RavenConfigError('Missing eventId'); + } + + var dsn = options.dsn || this._dsn; + if (!dsn) { + throw new RavenConfigError('Missing DSN'); + } + + var encode = encodeURIComponent; + var qs = ''; + qs += '?eventId=' + encode(lastEventId); + qs += '&dsn=' + encode(dsn); + + var user = options.user || this._globalContext.user; + if (user) { + if (user.name) qs += '&name=' + encode(user.name); + if (user.email) qs += '&email=' + encode(user.email); + } + + var globalServer = this._getGlobalServer(this._parseDSN(dsn)); + + var script = _document.createElement('script'); + script.async = true; + script.src = globalServer + '/api/embed/error-page/' + qs; + (_document.head || _document.body).appendChild(script); + }, + + /**** Private functions ****/ + _ignoreNextOnError: function() { + var self = this; + this._ignoreOnError += 1; + setTimeout(function() { + // onerror should trigger before setTimeout + self._ignoreOnError -= 1; + }); + }, + + _triggerEvent: function(eventType, options) { + // NOTE: `event` is a native browser thing, so let's avoid conflicting wiht it + var evt, key; + + if (!this._hasDocument) return; + + options = options || {}; + + eventType = 'raven' + eventType.substr(0, 1).toUpperCase() + eventType.substr(1); + + if (_document.createEvent) { + evt = _document.createEvent('HTMLEvents'); + evt.initEvent(eventType, true, true); + } else { + evt = _document.createEventObject(); + evt.eventType = eventType; + } + + for (key in options) + if (hasKey(options, key)) { + evt[key] = options[key]; + } + + if (_document.createEvent) { + // IE9 if standards + _document.dispatchEvent(evt); + } else { + // IE8 regardless of Quirks or Standards + // IE9 if quirks + try { + _document.fireEvent('on' + evt.eventType.toLowerCase(), evt); + } catch (e) { + // Do nothing + } + } + }, + + /** + * Wraps addEventListener to capture UI breadcrumbs + * @param evtName the event name (e.g. "click") + * @returns {Function} + * @private + */ + _breadcrumbEventHandler: function(evtName) { + var self = this; + return function(evt) { + // reset keypress timeout; e.g. triggering a 'click' after + // a 'keypress' will reset the keypress debounce so that a new + // set of keypresses can be recorded + self._keypressTimeout = null; + + // It's possible this handler might trigger multiple times for the same + // event (e.g. event propagation through node ancestors). Ignore if we've + // already captured the event. + if (self._lastCapturedEvent === evt) return; + + self._lastCapturedEvent = evt; + + // try/catch both: + // - accessing evt.target (see getsentry/raven-js#838, #768) + // - `htmlTreeAsString` because it's complex, and just accessing the DOM incorrectly + // can throw an exception in some circumstances. + var target; + try { + target = htmlTreeAsString(evt.target); + } catch (e) { + target = ''; + } + + self.captureBreadcrumb({ + category: 'ui.' + evtName, // e.g. ui.click, ui.input + message: target + }); + }; + }, + + /** + * Wraps addEventListener to capture keypress UI events + * @returns {Function} + * @private + */ + _keypressEventHandler: function() { + var self = this, + debounceDuration = 1000; // milliseconds + + // TODO: if somehow user switches keypress target before + // debounce timeout is triggered, we will only capture + // a single breadcrumb from the FIRST target (acceptable?) + return function(evt) { + var target; + try { + target = evt.target; + } catch (e) { + // just accessing event properties can throw an exception in some rare circumstances + // see: https://github.com/getsentry/raven-js/issues/838 + return; + } + var tagName = target && target.tagName; + + // only consider keypress events on actual input elements + // this will disregard keypresses targeting body (e.g. tabbing + // through elements, hotkeys, etc) + if ( + !tagName || + (tagName !== 'INPUT' && tagName !== 'TEXTAREA' && !target.isContentEditable) + ) + return; + + // record first keypress in a series, but ignore subsequent + // keypresses until debounce clears + var timeout = self._keypressTimeout; + if (!timeout) { + self._breadcrumbEventHandler('input')(evt); + } + clearTimeout(timeout); + self._keypressTimeout = setTimeout(function() { + self._keypressTimeout = null; + }, debounceDuration); + }; + }, + + /** + * Captures a breadcrumb of type "navigation", normalizing input URLs + * @param to the originating URL + * @param from the target URL + * @private + */ + _captureUrlChange: function(from, to) { + var parsedLoc = parseUrl(this._location.href); + var parsedTo = parseUrl(to); + var parsedFrom = parseUrl(from); + + // because onpopstate only tells you the "new" (to) value of location.href, and + // not the previous (from) value, we need to track the value of the current URL + // state ourselves + this._lastHref = to; + + // Use only the path component of the URL if the URL matches the current + // document (almost all the time when using pushState) + if (parsedLoc.protocol === parsedTo.protocol && parsedLoc.host === parsedTo.host) + to = parsedTo.relative; + if (parsedLoc.protocol === parsedFrom.protocol && parsedLoc.host === parsedFrom.host) + from = parsedFrom.relative; + + this.captureBreadcrumb({ + category: 'navigation', + data: { + to: to, + from: from + } + }); + }, + + _patchFunctionToString: function() { + var self = this; + self._originalFunctionToString = Function.prototype.toString; + // eslint-disable-next-line no-extend-native + Function.prototype.toString = function() { + if (typeof this === 'function' && this.__raven__) { + return self._originalFunctionToString.apply(this.__orig__, arguments); + } + return self._originalFunctionToString.apply(this, arguments); + }; + }, + + _unpatchFunctionToString: function() { + if (this._originalFunctionToString) { + // eslint-disable-next-line no-extend-native + Function.prototype.toString = this._originalFunctionToString; + } + }, + + /** + * Wrap timer functions and event targets to catch errors and provide + * better metadata. + */ + _instrumentTryCatch: function() { + var self = this; + + var wrappedBuiltIns = self._wrappedBuiltIns; + + function wrapTimeFn(orig) { + return function(fn, t) { + // preserve arity + // Make a copy of the arguments to prevent deoptimization + // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments + var args = new Array(arguments.length); + for (var i = 0; i < args.length; ++i) { + args[i] = arguments[i]; + } + var originalCallback = args[0]; + if (isFunction(originalCallback)) { + args[0] = self.wrap(originalCallback); + } + + // IE < 9 doesn't support .call/.apply on setInterval/setTimeout, but it + // also supports only two arguments and doesn't care what this is, so we + // can just call the original function directly. + if (orig.apply) { + return orig.apply(this, args); + } else { + return orig(args[0], args[1]); + } + }; + } + + var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; + + function wrapEventTarget(global) { + var proto = _window[global] && _window[global].prototype; + if (proto && proto.hasOwnProperty && proto.hasOwnProperty('addEventListener')) { + fill( + proto, + 'addEventListener', + function(orig) { + return function(evtName, fn, capture, secure) { + // preserve arity + try { + if (fn && fn.handleEvent) { + fn.handleEvent = self.wrap(fn.handleEvent); + } + } catch (err) { + // can sometimes get 'Permission denied to access property "handle Event' + } + + // More breadcrumb DOM capture ... done here and not in `_instrumentBreadcrumbs` + // so that we don't have more than one wrapper function + var before, clickHandler, keypressHandler; + + if ( + autoBreadcrumbs && + autoBreadcrumbs.dom && + (global === 'EventTarget' || global === 'Node') + ) { + // NOTE: generating multiple handlers per addEventListener invocation, should + // revisit and verify we can just use one (almost certainly) + clickHandler = self._breadcrumbEventHandler('click'); + keypressHandler = self._keypressEventHandler(); + before = function(evt) { + // need to intercept every DOM event in `before` argument, in case that + // same wrapped method is re-used for different events (e.g. mousemove THEN click) + // see #724 + if (!evt) return; + + var eventType; + try { + eventType = evt.type; + } catch (e) { + // just accessing event properties can throw an exception in some rare circumstances + // see: https://github.com/getsentry/raven-js/issues/838 + return; + } + if (eventType === 'click') return clickHandler(evt); + else if (eventType === 'keypress') return keypressHandler(evt); + }; + } + return orig.call( + this, + evtName, + self.wrap(fn, undefined, before), + capture, + secure + ); + }; + }, + wrappedBuiltIns + ); + fill( + proto, + 'removeEventListener', + function(orig) { + return function(evt, fn, capture, secure) { + try { + fn = fn && (fn.__raven_wrapper__ ? fn.__raven_wrapper__ : fn); + } catch (e) { + // ignore, accessing __raven_wrapper__ will throw in some Selenium environments + } + return orig.call(this, evt, fn, capture, secure); + }; + }, + wrappedBuiltIns + ); + } + } + + fill(_window, 'setTimeout', wrapTimeFn, wrappedBuiltIns); + fill(_window, 'setInterval', wrapTimeFn, wrappedBuiltIns); + if (_window.requestAnimationFrame) { + fill( + _window, + 'requestAnimationFrame', + function(orig) { + return function(cb) { + return orig(self.wrap(cb)); + }; + }, + wrappedBuiltIns + ); + } + + // event targets borrowed from bugsnag-js: + // https://github.com/bugsnag/bugsnag-js/blob/master/src/bugsnag.js#L666 + var eventTargets = [ + 'EventTarget', + 'Window', + 'Node', + 'ApplicationCache', + 'AudioTrackList', + 'ChannelMergerNode', + 'CryptoOperation', + 'EventSource', + 'FileReader', + 'HTMLUnknownElement', + 'IDBDatabase', + 'IDBRequest', + 'IDBTransaction', + 'KeyOperation', + 'MediaController', + 'MessagePort', + 'ModalWindow', + 'Notification', + 'SVGElementInstance', + 'Screen', + 'TextTrack', + 'TextTrackCue', + 'TextTrackList', + 'WebSocket', + 'WebSocketWorker', + 'Worker', + 'XMLHttpRequest', + 'XMLHttpRequestEventTarget', + 'XMLHttpRequestUpload' + ]; + for (var i = 0; i < eventTargets.length; i++) { + wrapEventTarget(eventTargets[i]); + } + }, + + /** + * Instrument browser built-ins w/ breadcrumb capturing + * - XMLHttpRequests + * - DOM interactions (click/typing) + * - window.location changes + * - console + * + * Can be disabled or individually configured via the `autoBreadcrumbs` config option + */ + _instrumentBreadcrumbs: function() { + var self = this; + var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; + + var wrappedBuiltIns = self._wrappedBuiltIns; + + function wrapProp(prop, xhr) { + if (prop in xhr && isFunction(xhr[prop])) { + fill(xhr, prop, function(orig) { + return self.wrap(orig); + }); // intentionally don't track filled methods on XHR instances + } + } + + if (autoBreadcrumbs.xhr && 'XMLHttpRequest' in _window) { + var xhrproto = _window.XMLHttpRequest && _window.XMLHttpRequest.prototype; + fill( + xhrproto, + 'open', + function(origOpen) { + return function(method, url) { + // preserve arity + + // if Sentry key appears in URL, don't capture + if (isString(url) && url.indexOf(self._globalKey) === -1) { + this.__raven_xhr = { + method: method, + url: url, + status_code: null + }; + } + + return origOpen.apply(this, arguments); + }; + }, + wrappedBuiltIns + ); + + fill( + xhrproto, + 'send', + function(origSend) { + return function() { + // preserve arity + var xhr = this; + + function onreadystatechangeHandler() { + if (xhr.__raven_xhr && xhr.readyState === 4) { + try { + // touching statusCode in some platforms throws + // an exception + xhr.__raven_xhr.status_code = xhr.status; + } catch (e) { + /* do nothing */ + } + + self.captureBreadcrumb({ + type: 'http', + category: 'xhr', + data: xhr.__raven_xhr + }); + } + } + + var props = ['onload', 'onerror', 'onprogress']; + for (var j = 0; j < props.length; j++) { + wrapProp(props[j], xhr); + } + + if ('onreadystatechange' in xhr && isFunction(xhr.onreadystatechange)) { + fill( + xhr, + 'onreadystatechange', + function(orig) { + return self.wrap(orig, undefined, onreadystatechangeHandler); + } /* intentionally don't track this instrumentation */ + ); + } else { + // if onreadystatechange wasn't actually set by the page on this xhr, we + // are free to set our own and capture the breadcrumb + xhr.onreadystatechange = onreadystatechangeHandler; + } + + return origSend.apply(this, arguments); + }; + }, + wrappedBuiltIns + ); + } + + if (autoBreadcrumbs.xhr && supportsFetch()) { + fill( + _window, + 'fetch', + function(origFetch) { + return function() { + // preserve arity + // Make a copy of the arguments to prevent deoptimization + // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments + var args = new Array(arguments.length); + for (var i = 0; i < args.length; ++i) { + args[i] = arguments[i]; + } + + var fetchInput = args[0]; + var method = 'GET'; + var url; + + if (typeof fetchInput === 'string') { + url = fetchInput; + } else if ('Request' in _window && fetchInput instanceof _window.Request) { + url = fetchInput.url; + if (fetchInput.method) { + method = fetchInput.method; + } + } else { + url = '' + fetchInput; + } + + // if Sentry key appears in URL, don't capture, as it's our own request + if (url.indexOf(self._globalKey) !== -1) { + return origFetch.apply(this, args); + } + + if (args[1] && args[1].method) { + method = args[1].method; + } + + var fetchData = { + method: method, + url: url, + status_code: null + }; + + return origFetch + .apply(this, args) + .then(function(response) { + fetchData.status_code = response.status; + + self.captureBreadcrumb({ + type: 'http', + category: 'fetch', + data: fetchData + }); + + return response; + }) + ['catch'](function(err) { + // if there is an error performing the request + self.captureBreadcrumb({ + type: 'http', + category: 'fetch', + data: fetchData, + level: 'error' + }); + + throw err; + }); + }; + }, + wrappedBuiltIns + ); + } + + // Capture breadcrumbs from any click that is unhandled / bubbled up all the way + // to the document. Do this before we instrument addEventListener. + if (autoBreadcrumbs.dom && this._hasDocument) { + if (_document.addEventListener) { + _document.addEventListener('click', self._breadcrumbEventHandler('click'), false); + _document.addEventListener('keypress', self._keypressEventHandler(), false); + } else if (_document.attachEvent) { + // IE8 Compatibility + _document.attachEvent('onclick', self._breadcrumbEventHandler('click')); + _document.attachEvent('onkeypress', self._keypressEventHandler()); + } + } + + // record navigation (URL) changes + // NOTE: in Chrome App environment, touching history.pushState, *even inside + // a try/catch block*, will cause Chrome to output an error to console.error + // borrowed from: https://github.com/angular/angular.js/pull/13945/files + var chrome = _window.chrome; + var isChromePackagedApp = chrome && chrome.app && chrome.app.runtime; + var hasPushAndReplaceState = + !isChromePackagedApp && + _window.history && + _window.history.pushState && + _window.history.replaceState; + if (autoBreadcrumbs.location && hasPushAndReplaceState) { + // TODO: remove onpopstate handler on uninstall() + var oldOnPopState = _window.onpopstate; + _window.onpopstate = function() { + var currentHref = self._location.href; + self._captureUrlChange(self._lastHref, currentHref); + + if (oldOnPopState) { + return oldOnPopState.apply(this, arguments); + } + }; + + var historyReplacementFunction = function(origHistFunction) { + // note history.pushState.length is 0; intentionally not declaring + // params to preserve 0 arity + return function(/* state, title, url */) { + var url = arguments.length > 2 ? arguments[2] : undefined; + + // url argument is optional + if (url) { + // coerce to string (this is what pushState does) + self._captureUrlChange(self._lastHref, url + ''); + } + + return origHistFunction.apply(this, arguments); + }; + }; + + fill(_window.history, 'pushState', historyReplacementFunction, wrappedBuiltIns); + fill(_window.history, 'replaceState', historyReplacementFunction, wrappedBuiltIns); + } + + if (autoBreadcrumbs.console && 'console' in _window && console.log) { + // console + var consoleMethodCallback = function(msg, data) { + self.captureBreadcrumb({ + message: msg, + level: data.level, + category: 'console' + }); + }; + + each(['debug', 'info', 'warn', 'error', 'log'], function(_, level) { + wrapConsoleMethod(console, level, consoleMethodCallback); + }); + } + }, + + _restoreBuiltIns: function() { + // restore any wrapped builtins + var builtin; + while (this._wrappedBuiltIns.length) { + builtin = this._wrappedBuiltIns.shift(); + + var obj = builtin[0], + name = builtin[1], + orig = builtin[2]; + + obj[name] = orig; + } + }, + + _restoreConsole: function() { + // eslint-disable-next-line guard-for-in + for (var method in this._originalConsoleMethods) { + this._originalConsole[method] = this._originalConsoleMethods[method]; + } + }, + + _drainPlugins: function() { + var self = this; + + // FIX ME TODO + each(this._plugins, function(_, plugin) { + var installer = plugin[0]; + var args = plugin[1]; + installer.apply(self, [self].concat(args)); + }); + }, + + _parseDSN: function(str) { + var m = dsnPattern.exec(str), + dsn = {}, + i = 7; + + try { + while (i--) dsn[dsnKeys[i]] = m[i] || ''; + } catch (e) { + throw new RavenConfigError('Invalid DSN: ' + str); + } + + if (dsn.pass && !this._globalOptions.allowSecretKey) { + throw new RavenConfigError( + 'Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key' + ); + } + + return dsn; + }, + + _getGlobalServer: function(uri) { + // assemble the endpoint from the uri pieces + var globalServer = '//' + uri.host + (uri.port ? ':' + uri.port : ''); + + if (uri.protocol) { + globalServer = uri.protocol + ':' + globalServer; + } + return globalServer; + }, + + _handleOnErrorStackInfo: function() { + // if we are intentionally ignoring errors via onerror, bail out + if (!this._ignoreOnError) { + this._handleStackInfo.apply(this, arguments); + } + }, + + _handleStackInfo: function(stackInfo, options) { + var frames = this._prepareFrames(stackInfo, options); + + this._triggerEvent('handle', { + stackInfo: stackInfo, + options: options + }); + + this._processException( + stackInfo.name, + stackInfo.message, + stackInfo.url, + stackInfo.lineno, + frames, + options + ); + }, + + _prepareFrames: function(stackInfo, options) { + var self = this; + var frames = []; + if (stackInfo.stack && stackInfo.stack.length) { + each(stackInfo.stack, function(i, stack) { + var frame = self._normalizeFrame(stack, stackInfo.url); + if (frame) { + frames.push(frame); + } + }); + + // e.g. frames captured via captureMessage throw + if (options && options.trimHeadFrames) { + for (var j = 0; j < options.trimHeadFrames && j < frames.length; j++) { + frames[j].in_app = false; + } + } + } + frames = frames.slice(0, this._globalOptions.stackTraceLimit); + return frames; + }, + + _normalizeFrame: function(frame, stackInfoUrl) { + // normalize the frames data + var normalized = { + filename: frame.url, + lineno: frame.line, + colno: frame.column, + function: frame.func || '?' + }; + + // Case when we don't have any information about the error + // E.g. throwing a string or raw object, instead of an `Error` in Firefox + // Generating synthetic error doesn't add any value here + // + // We should probably somehow let a user know that they should fix their code + if (!frame.url) { + normalized.filename = stackInfoUrl; // fallback to whole stacks url from onerror handler + } + + normalized.in_app = !// determine if an exception came from outside of our app + // first we check the global includePaths list. + ( + (!!this._globalOptions.includePaths.test && + !this._globalOptions.includePaths.test(normalized.filename)) || + // Now we check for fun, if the function name is Raven or TraceKit + /(Raven|TraceKit)\./.test(normalized['function']) || + // finally, we do a last ditch effort and check for raven.min.js + /raven\.(min\.)?js$/.test(normalized.filename) + ); + + return normalized; + }, + + _processException: function(type, message, fileurl, lineno, frames, options) { + var prefixedMessage = (type ? type + ': ' : '') + (message || ''); + if ( + !!this._globalOptions.ignoreErrors.test && + (this._globalOptions.ignoreErrors.test(message) || + this._globalOptions.ignoreErrors.test(prefixedMessage)) + ) { + return; + } + + var stacktrace; + + if (frames && frames.length) { + fileurl = frames[0].filename || fileurl; + // Sentry expects frames oldest to newest + // and JS sends them as newest to oldest + frames.reverse(); + stacktrace = {frames: frames}; + } else if (fileurl) { + stacktrace = { + frames: [ + { + filename: fileurl, + lineno: lineno, + in_app: true + } + ] + }; + } + + if ( + !!this._globalOptions.ignoreUrls.test && + this._globalOptions.ignoreUrls.test(fileurl) + ) { + return; + } + + if ( + !!this._globalOptions.whitelistUrls.test && + !this._globalOptions.whitelistUrls.test(fileurl) + ) { + return; + } + + var data = objectMerge( + { + // sentry.interfaces.Exception + exception: { + values: [ + { + type: type, + value: message, + stacktrace: stacktrace + } + ] + }, + transaction: fileurl + }, + options + ); + + // Fire away! + this._send(data); + }, + + _trimPacket: function(data) { + // For now, we only want to truncate the two different messages + // but this could/should be expanded to just trim everything + var max = this._globalOptions.maxMessageLength; + if (data.message) { + data.message = truncate(data.message, max); + } + if (data.exception) { + var exception = data.exception.values[0]; + exception.value = truncate(exception.value, max); + } + + var request = data.request; + if (request) { + if (request.url) { + request.url = truncate(request.url, this._globalOptions.maxUrlLength); + } + if (request.Referer) { + request.Referer = truncate(request.Referer, this._globalOptions.maxUrlLength); + } + } + + if (data.breadcrumbs && data.breadcrumbs.values) + this._trimBreadcrumbs(data.breadcrumbs); + + return data; + }, + + /** + * Truncate breadcrumb values (right now just URLs) + */ + _trimBreadcrumbs: function(breadcrumbs) { + // known breadcrumb properties with urls + // TODO: also consider arbitrary prop values that start with (https?)?:// + var urlProps = ['to', 'from', 'url'], + urlProp, + crumb, + data; + + for (var i = 0; i < breadcrumbs.values.length; ++i) { + crumb = breadcrumbs.values[i]; + if ( + !crumb.hasOwnProperty('data') || + !isObject(crumb.data) || + objectFrozen(crumb.data) + ) + continue; + + data = objectMerge({}, crumb.data); + for (var j = 0; j < urlProps.length; ++j) { + urlProp = urlProps[j]; + if (data.hasOwnProperty(urlProp) && data[urlProp]) { + data[urlProp] = truncate(data[urlProp], this._globalOptions.maxUrlLength); + } + } + breadcrumbs.values[i].data = data; + } + }, + + _getHttpData: function() { + if (!this._hasNavigator && !this._hasDocument) return; + var httpData = {}; + + if (this._hasNavigator && _navigator.userAgent) { + httpData.headers = { + 'User-Agent': _navigator.userAgent + }; + } + + // Check in `window` instead of `document`, as we may be in ServiceWorker environment + if (_window.location && _window.location.href) { + httpData.url = _window.location.href; + } + + if (this._hasDocument && _document.referrer) { + if (!httpData.headers) httpData.headers = {}; + httpData.headers.Referer = _document.referrer; + } + + return httpData; + }, + + _resetBackoff: function() { + this._backoffDuration = 0; + this._backoffStart = null; + }, + + _shouldBackoff: function() { + return this._backoffDuration && now() - this._backoffStart < this._backoffDuration; + }, + + /** + * Returns true if the in-process data payload matches the signature + * of the previously-sent data + * + * NOTE: This has to be done at this level because TraceKit can generate + * data from window.onerror WITHOUT an exception object (IE8, IE9, + * other old browsers). This can take the form of an "exception" + * data object with a single frame (derived from the onerror args). + */ + _isRepeatData: function(current) { + var last = this._lastData; + + if ( + !last || + current.message !== last.message || // defined for captureMessage + current.transaction !== last.transaction // defined for captureException/onerror + ) + return false; + + // Stacktrace interface (i.e. from captureMessage) + if (current.stacktrace || last.stacktrace) { + return isSameStacktrace(current.stacktrace, last.stacktrace); + } else if (current.exception || last.exception) { + // Exception interface (i.e. from captureException/onerror) + return isSameException(current.exception, last.exception); + } + + return true; + }, + + _setBackoffState: function(request) { + // If we are already in a backoff state, don't change anything + if (this._shouldBackoff()) { + return; + } + + var status = request.status; + + // 400 - project_id doesn't exist or some other fatal + // 401 - invalid/revoked dsn + // 429 - too many requests + if (!(status === 400 || status === 401 || status === 429)) return; + + var retry; + try { + // If Retry-After is not in Access-Control-Expose-Headers, most + // browsers will throw an exception trying to access it + if (supportsFetch()) { + retry = request.headers.get('Retry-After'); + } else { + retry = request.getResponseHeader('Retry-After'); + } + + // Retry-After is returned in seconds + retry = parseInt(retry, 10) * 1000; + } catch (e) { + /* eslint no-empty:0 */ + } + + this._backoffDuration = retry + ? // If Sentry server returned a Retry-After value, use it + retry + : // Otherwise, double the last backoff duration (starts at 1 sec) + this._backoffDuration * 2 || 1000; + + this._backoffStart = now(); + }, + + _send: function(data) { + var globalOptions = this._globalOptions; + + var baseData = { + project: this._globalProject, + logger: globalOptions.logger, + platform: 'javascript' + }, + httpData = this._getHttpData(); + + if (httpData) { + baseData.request = httpData; + } + + // HACK: delete `trimHeadFrames` to prevent from appearing in outbound payload + if (data.trimHeadFrames) delete data.trimHeadFrames; + + data = objectMerge(baseData, data); + + // Merge in the tags and extra separately since objectMerge doesn't handle a deep merge + data.tags = objectMerge(objectMerge({}, this._globalContext.tags), data.tags); + data.extra = objectMerge(objectMerge({}, this._globalContext.extra), data.extra); + + // Send along our own collected metadata with extra + data.extra['session:duration'] = now() - this._startTime; + + if (this._breadcrumbs && this._breadcrumbs.length > 0) { + // intentionally make shallow copy so that additions + // to breadcrumbs aren't accidentally sent in this request + data.breadcrumbs = { + values: [].slice.call(this._breadcrumbs, 0) + }; + } + + if (this._globalContext.user) { + // sentry.interfaces.User + data.user = this._globalContext.user; + } + + // Include the environment if it's defined in globalOptions + if (globalOptions.environment) data.environment = globalOptions.environment; + + // Include the release if it's defined in globalOptions + if (globalOptions.release) data.release = globalOptions.release; + + // Include server_name if it's defined in globalOptions + if (globalOptions.serverName) data.server_name = globalOptions.serverName; + + data = this._sanitizeData(data); + + // Cleanup empty properties before sending them to the server + Object.keys(data).forEach(function(key) { + if (data[key] == null || data[key] === '' || isEmptyObject(data[key])) { + delete data[key]; + } + }); + + if (isFunction(globalOptions.dataCallback)) { + data = globalOptions.dataCallback(data) || data; + } + + // Why?????????? + if (!data || isEmptyObject(data)) { + return; + } + + // Check if the request should be filtered or not + if ( + isFunction(globalOptions.shouldSendCallback) && + !globalOptions.shouldSendCallback(data) + ) { + return; + } + + // Backoff state: Sentry server previously responded w/ an error (e.g. 429 - too many requests), + // so drop requests until "cool-off" period has elapsed. + if (this._shouldBackoff()) { + this._logDebug('warn', 'Raven dropped error due to backoff: ', data); + return; + } + + if (typeof globalOptions.sampleRate === 'number') { + if (Math.random() < globalOptions.sampleRate) { + this._sendProcessedPayload(data); + } + } else { + this._sendProcessedPayload(data); + } + }, + + _sanitizeData: function(data) { + return sanitize(data, this._globalOptions.sanitizeKeys); + }, + + _getUuid: function() { + return uuid4(); + }, + + _sendProcessedPayload: function(data, callback) { + var self = this; + var globalOptions = this._globalOptions; + + if (!this.isSetup()) return; + + // Try and clean up the packet before sending by truncating long values + data = this._trimPacket(data); + + // ideally duplicate error testing should occur *before* dataCallback/shouldSendCallback, + // but this would require copying an un-truncated copy of the data packet, which can be + // arbitrarily deep (extra_data) -- could be worthwhile? will revisit + if (!this._globalOptions.allowDuplicates && this._isRepeatData(data)) { + this._logDebug('warn', 'Raven dropped repeat event: ', data); + return; + } + + // Send along an event_id if not explicitly passed. + // This event_id can be used to reference the error within Sentry itself. + // Set lastEventId after we know the error should actually be sent + this._lastEventId = data.event_id || (data.event_id = this._getUuid()); + + // Store outbound payload after trim + this._lastData = data; + + this._logDebug('debug', 'Raven about to send:', data); + + var auth = { + sentry_version: '7', + sentry_client: 'raven-js/' + this.VERSION, + sentry_key: this._globalKey + }; + + if (this._globalSecret) { + auth.sentry_secret = this._globalSecret; + } + + var exception = data.exception && data.exception.values[0]; + + // only capture 'sentry' breadcrumb is autoBreadcrumbs is truthy + if ( + this._globalOptions.autoBreadcrumbs && + this._globalOptions.autoBreadcrumbs.sentry + ) { + this.captureBreadcrumb({ + category: 'sentry', + message: exception + ? (exception.type ? exception.type + ': ' : '') + exception.value + : data.message, + event_id: data.event_id, + level: data.level || 'error' // presume error unless specified + }); + } + + var url = this._globalEndpoint; + (globalOptions.transport || this._makeRequest).call(this, { + url: url, + auth: auth, + data: data, + options: globalOptions, + onSuccess: function success() { + self._resetBackoff(); + + self._triggerEvent('success', { + data: data, + src: url + }); + callback && callback(); + }, + onError: function failure(error) { + self._logDebug('error', 'Raven transport failed to send: ', error); + + if (error.request) { + self._setBackoffState(error.request); + } + + self._triggerEvent('failure', { + data: data, + src: url + }); + error = error || new Error('Raven send failed (no additional details provided)'); + callback && callback(error); + } + }); + }, + + _makeRequest: function(opts) { + // Auth is intentionally sent as part of query string (NOT as custom HTTP header) to avoid preflight CORS requests + var url = opts.url + '?' + urlencode(opts.auth); + + var evaluatedHeaders = null; + var evaluatedFetchParameters = {}; + + if (opts.options.headers) { + evaluatedHeaders = this._evaluateHash(opts.options.headers); + } + + if (opts.options.fetchParameters) { + evaluatedFetchParameters = this._evaluateHash(opts.options.fetchParameters); + } + + if (supportsFetch()) { + evaluatedFetchParameters.body = stringify(opts.data); + + var defaultFetchOptions = objectMerge({}, this._fetchDefaults); + var fetchOptions = objectMerge(defaultFetchOptions, evaluatedFetchParameters); + + if (evaluatedHeaders) { + fetchOptions.headers = evaluatedHeaders; + } + + return _window + .fetch(url, fetchOptions) + .then(function(response) { + if (response.ok) { + opts.onSuccess && opts.onSuccess(); + } else { + var error = new Error('Sentry error code: ' + response.status); + // It's called request only to keep compatibility with XHR interface + // and not add more redundant checks in setBackoffState method + error.request = response; + opts.onError && opts.onError(error); + } + }) + ['catch'](function() { + opts.onError && + opts.onError(new Error('Sentry error code: network unavailable')); + }); + } + + var request = _window.XMLHttpRequest && new _window.XMLHttpRequest(); + if (!request) return; + + // if browser doesn't support CORS (e.g. IE7), we are out of luck + var hasCORS = 'withCredentials' in request || typeof XDomainRequest !== 'undefined'; + + if (!hasCORS) return; + + if ('withCredentials' in request) { + request.onreadystatechange = function() { + if (request.readyState !== 4) { + return; + } else if (request.status === 200) { + opts.onSuccess && opts.onSuccess(); + } else if (opts.onError) { + var err = new Error('Sentry error code: ' + request.status); + err.request = request; + opts.onError(err); + } + }; + } else { + request = new XDomainRequest(); + // xdomainrequest cannot go http -> https (or vice versa), + // so always use protocol relative + url = url.replace(/^https?:/, ''); + + // onreadystatechange not supported by XDomainRequest + if (opts.onSuccess) { + request.onload = opts.onSuccess; + } + if (opts.onError) { + request.onerror = function() { + var err = new Error('Sentry error code: XDomainRequest'); + err.request = request; + opts.onError(err); + }; + } + } + + request.open('POST', url); + + if (evaluatedHeaders) { + each(evaluatedHeaders, function(key, value) { + request.setRequestHeader(key, value); + }); + } + + request.send(stringify(opts.data)); + }, + + _evaluateHash: function(hash) { + var evaluated = {}; + + for (var key in hash) { + if (hash.hasOwnProperty(key)) { + var value = hash[key]; + evaluated[key] = typeof value === 'function' ? value() : value; + } + } + + return evaluated; + }, + + _logDebug: function(level) { + // We allow `Raven.debug` and `Raven.config(DSN, { debug: true })` to not make backward incompatible API change + if ( + this._originalConsoleMethods[level] && + (this.debug || this._globalOptions.debug) + ) { + // In IE<10 console methods do not have their own 'apply' method + Function.prototype.apply.call( + this._originalConsoleMethods[level], + this._originalConsole, + [].slice.call(arguments, 1) + ); + } + }, + + _mergeContext: function(key, context) { + if (isUndefined(context)) { + delete this._globalContext[key]; + } else { + this._globalContext[key] = objectMerge(this._globalContext[key] || {}, context); + } + } +}; + +// Deprecations +Raven.prototype.setUser = Raven.prototype.setUserContext; +Raven.prototype.setReleaseContext = Raven.prototype.setRelease; + +module.exports = Raven; + +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"10":10,"11":11,"12":12,"5":5,"6":6,"9":9}],8:[function(_dereq_,module,exports){ +(function (global){ +/** + * Enforces a single instance of the Raven client, and the + * main entry point for Raven. If you are a consumer of the + * Raven library, you SHOULD load this file (vs raven.js). + **/ + +var RavenConstructor = _dereq_(7); + +// This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) +var _window = + typeof window !== 'undefined' + ? window + : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; +var _Raven = _window.Raven; + +var Raven = new RavenConstructor(); + +/* + * Allow multiple versions of Raven to be installed. + * Strip Raven from the global context and returns the instance. + * + * @return {Raven} + */ +Raven.noConflict = function() { + _window.Raven = _Raven; + return Raven; +}; + +Raven.afterLoad(); + +module.exports = Raven; + +/** + * DISCLAIMER: + * + * Expose `Client` constructor for cases where user want to track multiple "sub-applications" in one larger app. + * It's not meant to be used by a wide audience, so pleaaase make sure that you know what you're doing before using it. + * Accidentally calling `install` multiple times, may result in an unexpected behavior that's very hard to debug. + * + * It's called `Client' to be in-line with Raven Node implementation. + * + * HOWTO: + * + * import Raven from 'raven-js'; + * + * const someAppReporter = new Raven.Client(); + * const someOtherAppReporter = new Raven.Client(); + * + * someAppReporter.config('__DSN__', { + * ...config goes here + * }); + * + * someOtherAppReporter.config('__OTHER_DSN__', { + * ...config goes here + * }); + * + * someAppReporter.captureMessage(...); + * someAppReporter.captureException(...); + * someAppReporter.captureBreadcrumb(...); + * + * someOtherAppReporter.captureMessage(...); + * someOtherAppReporter.captureException(...); + * someOtherAppReporter.captureBreadcrumb(...); + * + * It should "just work". + */ +module.exports.Client = RavenConstructor; + +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"7":7}],9:[function(_dereq_,module,exports){ +(function (global){ +var stringify = _dereq_(11); + +var _window = + typeof window !== 'undefined' + ? window + : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; + +function isObject(what) { + return typeof what === 'object' && what !== null; +} + +// Yanked from https://git.io/vS8DV re-used under CC0 +// with some tiny modifications +function isError(value) { + switch (Object.prototype.toString.call(value)) { + case '[object Error]': + return true; + case '[object Exception]': + return true; + case '[object DOMException]': + return true; + default: + return value instanceof Error; + } +} + +function isErrorEvent(value) { + return Object.prototype.toString.call(value) === '[object ErrorEvent]'; +} + +function isDOMError(value) { + return Object.prototype.toString.call(value) === '[object DOMError]'; +} + +function isDOMException(value) { + return Object.prototype.toString.call(value) === '[object DOMException]'; +} + +function isUndefined(what) { + return what === void 0; +} + +function isFunction(what) { + return typeof what === 'function'; +} + +function isPlainObject(what) { + return Object.prototype.toString.call(what) === '[object Object]'; +} + +function isString(what) { + return Object.prototype.toString.call(what) === '[object String]'; +} + +function isArray(what) { + return Object.prototype.toString.call(what) === '[object Array]'; +} + +function isEmptyObject(what) { + if (!isPlainObject(what)) return false; + + for (var _ in what) { + if (what.hasOwnProperty(_)) { + return false; + } + } + return true; +} + +function supportsErrorEvent() { + try { + new ErrorEvent(''); // eslint-disable-line no-new + return true; + } catch (e) { + return false; + } +} + +function supportsDOMError() { + try { + new DOMError(''); // eslint-disable-line no-new + return true; + } catch (e) { + return false; + } +} + +function supportsDOMException() { + try { + new DOMException(''); // eslint-disable-line no-new + return true; + } catch (e) { + return false; + } +} + +function supportsFetch() { + if (!('fetch' in _window)) return false; + + try { + new Headers(); // eslint-disable-line no-new + new Request(''); // eslint-disable-line no-new + new Response(); // eslint-disable-line no-new + return true; + } catch (e) { + return false; + } +} + +// Despite all stars in the sky saying that Edge supports old draft syntax, aka 'never', 'always', 'origin' and 'default +// https://caniuse.com/#feat=referrer-policy +// It doesn't. And it throw exception instead of ignoring this parameter... +// REF: https://github.com/getsentry/raven-js/issues/1233 +function supportsReferrerPolicy() { + if (!supportsFetch()) return false; + + try { + // eslint-disable-next-line no-new + new Request('pickleRick', { + referrerPolicy: 'origin' + }); + return true; + } catch (e) { + return false; + } +} + +function supportsPromiseRejectionEvent() { + return typeof PromiseRejectionEvent === 'function'; +} + +function wrappedCallback(callback) { + function dataCallback(data, original) { + var normalizedData = callback(data) || data; + if (original) { + return original(normalizedData) || normalizedData; + } + return normalizedData; + } + + return dataCallback; +} + +function each(obj, callback) { + var i, j; + + if (isUndefined(obj.length)) { + for (i in obj) { + if (hasKey(obj, i)) { + callback.call(null, i, obj[i]); + } + } + } else { + j = obj.length; + if (j) { + for (i = 0; i < j; i++) { + callback.call(null, i, obj[i]); + } + } + } +} + +function objectMerge(obj1, obj2) { + if (!obj2) { + return obj1; + } + each(obj2, function(key, value) { + obj1[key] = value; + }); + return obj1; +} + +/** + * This function is only used for react-native. + * react-native freezes object that have already been sent over the + * js bridge. We need this function in order to check if the object is frozen. + * So it's ok that objectFrozen returns false if Object.isFrozen is not + * supported because it's not relevant for other "platforms". See related issue: + * https://github.com/getsentry/react-native-sentry/issues/57 + */ +function objectFrozen(obj) { + if (!Object.isFrozen) { + return false; + } + return Object.isFrozen(obj); +} + +function truncate(str, max) { + if (typeof max !== 'number') { + throw new Error('2nd argument to `truncate` function should be a number'); + } + if (typeof str !== 'string' || max === 0) { + return str; + } + return str.length <= max ? str : str.substr(0, max) + '\u2026'; +} + +/** + * hasKey, a better form of hasOwnProperty + * Example: hasKey(MainHostObject, property) === true/false + * + * @param {Object} host object to check property + * @param {string} key to check + */ +function hasKey(object, key) { + return Object.prototype.hasOwnProperty.call(object, key); +} + +function joinRegExp(patterns) { + // Combine an array of regular expressions and strings into one large regexp + // Be mad. + var sources = [], + i = 0, + len = patterns.length, + pattern; + + for (; i < len; i++) { + pattern = patterns[i]; + if (isString(pattern)) { + // If it's a string, we need to escape it + // Taken from: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions + sources.push(pattern.replace(/([.*+?^=!:${}()|\[\]\/\\])/g, '\\$1')); + } else if (pattern && pattern.source) { + // If it's a regexp already, we want to extract the source + sources.push(pattern.source); + } + // Intentionally skip other cases + } + return new RegExp(sources.join('|'), 'i'); +} + +function urlencode(o) { + var pairs = []; + each(o, function(key, value) { + pairs.push(encodeURIComponent(key) + '=' + encodeURIComponent(value)); + }); + return pairs.join('&'); +} + +// borrowed from https://tools.ietf.org/html/rfc3986#appendix-B +// intentionally using regex and not href parsing trick because React Native and other +// environments where DOM might not be available +function parseUrl(url) { + if (typeof url !== 'string') return {}; + var match = url.match(/^(([^:\/?#]+):)?(\/\/([^\/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?$/); + + // coerce to undefined values to empty string so we don't get 'undefined' + var query = match[6] || ''; + var fragment = match[8] || ''; + return { + protocol: match[2], + host: match[4], + path: match[5], + relative: match[5] + query + fragment // everything minus origin + }; +} +function uuid4() { + var crypto = _window.crypto || _window.msCrypto; + + if (!isUndefined(crypto) && crypto.getRandomValues) { + // Use window.crypto API if available + // eslint-disable-next-line no-undef + var arr = new Uint16Array(8); + crypto.getRandomValues(arr); + + // set 4 in byte 7 + arr[3] = (arr[3] & 0xfff) | 0x4000; + // set 2 most significant bits of byte 9 to '10' + arr[4] = (arr[4] & 0x3fff) | 0x8000; + + var pad = function(num) { + var v = num.toString(16); + while (v.length < 4) { + v = '0' + v; + } + return v; + }; + + return ( + pad(arr[0]) + + pad(arr[1]) + + pad(arr[2]) + + pad(arr[3]) + + pad(arr[4]) + + pad(arr[5]) + + pad(arr[6]) + + pad(arr[7]) + ); + } else { + // http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/2117523#2117523 + return 'xxxxxxxxxxxx4xxxyxxxxxxxxxxxxxxx'.replace(/[xy]/g, function(c) { + var r = (Math.random() * 16) | 0, + v = c === 'x' ? r : (r & 0x3) | 0x8; + return v.toString(16); + }); + } +} + +/** + * Given a child DOM element, returns a query-selector statement describing that + * and its ancestors + * e.g. [HTMLElement] => body > div > input#foo.btn[name=baz] + * @param elem + * @returns {string} + */ +function htmlTreeAsString(elem) { + /* eslint no-extra-parens:0*/ + var MAX_TRAVERSE_HEIGHT = 5, + MAX_OUTPUT_LEN = 80, + out = [], + height = 0, + len = 0, + separator = ' > ', + sepLength = separator.length, + nextStr; + + while (elem && height++ < MAX_TRAVERSE_HEIGHT) { + nextStr = htmlElementAsString(elem); + // bail out if + // - nextStr is the 'html' element + // - the length of the string that would be created exceeds MAX_OUTPUT_LEN + // (ignore this limit if we are on the first iteration) + if ( + nextStr === 'html' || + (height > 1 && len + out.length * sepLength + nextStr.length >= MAX_OUTPUT_LEN) + ) { + break; + } + + out.push(nextStr); + + len += nextStr.length; + elem = elem.parentNode; + } + + return out.reverse().join(separator); +} + +/** + * Returns a simple, query-selector representation of a DOM element + * e.g. [HTMLElement] => input#foo.btn[name=baz] + * @param HTMLElement + * @returns {string} + */ +function htmlElementAsString(elem) { + var out = [], + className, + classes, + key, + attr, + i; + + if (!elem || !elem.tagName) { + return ''; + } + + out.push(elem.tagName.toLowerCase()); + if (elem.id) { + out.push('#' + elem.id); + } + + className = elem.className; + if (className && isString(className)) { + classes = className.split(/\s+/); + for (i = 0; i < classes.length; i++) { + out.push('.' + classes[i]); + } + } + var attrWhitelist = ['type', 'name', 'title', 'alt']; + for (i = 0; i < attrWhitelist.length; i++) { + key = attrWhitelist[i]; + attr = elem.getAttribute(key); + if (attr) { + out.push('[' + key + '="' + attr + '"]'); + } + } + return out.join(''); +} + +/** + * Returns true if either a OR b is truthy, but not both + */ +function isOnlyOneTruthy(a, b) { + return !!(!!a ^ !!b); +} + +/** + * Returns true if both parameters are undefined + */ +function isBothUndefined(a, b) { + return isUndefined(a) && isUndefined(b); +} + +/** + * Returns true if the two input exception interfaces have the same content + */ +function isSameException(ex1, ex2) { + if (isOnlyOneTruthy(ex1, ex2)) return false; + + ex1 = ex1.values[0]; + ex2 = ex2.values[0]; + + if (ex1.type !== ex2.type || ex1.value !== ex2.value) return false; + + // in case both stacktraces are undefined, we can't decide so default to false + if (isBothUndefined(ex1.stacktrace, ex2.stacktrace)) return false; + + return isSameStacktrace(ex1.stacktrace, ex2.stacktrace); +} + +/** + * Returns true if the two input stack trace interfaces have the same content + */ +function isSameStacktrace(stack1, stack2) { + if (isOnlyOneTruthy(stack1, stack2)) return false; + + var frames1 = stack1.frames; + var frames2 = stack2.frames; + + // Exit early if frame count differs + if (frames1.length !== frames2.length) return false; + + // Iterate through every frame; bail out if anything differs + var a, b; + for (var i = 0; i < frames1.length; i++) { + a = frames1[i]; + b = frames2[i]; + if ( + a.filename !== b.filename || + a.lineno !== b.lineno || + a.colno !== b.colno || + a['function'] !== b['function'] + ) + return false; + } + return true; +} + +/** + * Polyfill a method + * @param obj object e.g. `document` + * @param name method name present on object e.g. `addEventListener` + * @param replacement replacement function + * @param track {optional} record instrumentation to an array + */ +function fill(obj, name, replacement, track) { + if (obj == null) return; + var orig = obj[name]; + obj[name] = replacement(orig); + obj[name].__raven__ = true; + obj[name].__orig__ = orig; + if (track) { + track.push([obj, name, orig]); + } +} + +/** + * Join values in array + * @param input array of values to be joined together + * @param delimiter string to be placed in-between values + * @returns {string} + */ +function safeJoin(input, delimiter) { + if (!isArray(input)) return ''; + + var output = []; + + for (var i = 0; i < input.length; i++) { + try { + output.push(String(input[i])); + } catch (e) { + output.push('[value cannot be serialized]'); + } + } + + return output.join(delimiter); +} + +// Default Node.js REPL depth +var MAX_SERIALIZE_EXCEPTION_DEPTH = 3; +// 50kB, as 100kB is max payload size, so half sounds reasonable +var MAX_SERIALIZE_EXCEPTION_SIZE = 50 * 1024; +var MAX_SERIALIZE_KEYS_LENGTH = 40; + +function utf8Length(value) { + return ~-encodeURI(value).split(/%..|./).length; +} + +function jsonSize(value) { + return utf8Length(JSON.stringify(value)); +} + +function serializeValue(value) { + if (typeof value === 'string') { + var maxLength = 40; + return truncate(value, maxLength); + } else if ( + typeof value === 'number' || + typeof value === 'boolean' || + typeof value === 'undefined' + ) { + return value; + } + + var type = Object.prototype.toString.call(value); + + // Node.js REPL notation + if (type === '[object Object]') return '[Object]'; + if (type === '[object Array]') return '[Array]'; + if (type === '[object Function]') + return value.name ? '[Function: ' + value.name + ']' : '[Function]'; + + return value; +} + +function serializeObject(value, depth) { + if (depth === 0) return serializeValue(value); + + if (isPlainObject(value)) { + return Object.keys(value).reduce(function(acc, key) { + acc[key] = serializeObject(value[key], depth - 1); + return acc; + }, {}); + } else if (Array.isArray(value)) { + return value.map(function(val) { + return serializeObject(val, depth - 1); + }); + } + + return serializeValue(value); +} + +function serializeException(ex, depth, maxSize) { + if (!isPlainObject(ex)) return ex; + + depth = typeof depth !== 'number' ? MAX_SERIALIZE_EXCEPTION_DEPTH : depth; + maxSize = typeof depth !== 'number' ? MAX_SERIALIZE_EXCEPTION_SIZE : maxSize; + + var serialized = serializeObject(ex, depth); + + if (jsonSize(stringify(serialized)) > maxSize) { + return serializeException(ex, depth - 1); + } + + return serialized; +} + +function serializeKeysForMessage(keys, maxLength) { + if (typeof keys === 'number' || typeof keys === 'string') return keys.toString(); + if (!Array.isArray(keys)) return ''; + + keys = keys.filter(function(key) { + return typeof key === 'string'; + }); + if (keys.length === 0) return '[object has no keys]'; + + maxLength = typeof maxLength !== 'number' ? MAX_SERIALIZE_KEYS_LENGTH : maxLength; + if (keys[0].length >= maxLength) return keys[0]; + + for (var usedKeys = keys.length; usedKeys > 0; usedKeys--) { + var serialized = keys.slice(0, usedKeys).join(', '); + if (serialized.length > maxLength) continue; + if (usedKeys === keys.length) return serialized; + return serialized + '\u2026'; + } + + return ''; +} + +function sanitize(input, sanitizeKeys) { + if (!isArray(sanitizeKeys) || (isArray(sanitizeKeys) && sanitizeKeys.length === 0)) + return input; + + var sanitizeRegExp = joinRegExp(sanitizeKeys); + var sanitizeMask = '********'; + var safeInput; + + try { + safeInput = JSON.parse(stringify(input)); + } catch (o_O) { + return input; + } + + function sanitizeWorker(workerInput) { + if (isArray(workerInput)) { + return workerInput.map(function(val) { + return sanitizeWorker(val); + }); + } + + if (isPlainObject(workerInput)) { + return Object.keys(workerInput).reduce(function(acc, k) { + if (sanitizeRegExp.test(k)) { + acc[k] = sanitizeMask; + } else { + acc[k] = sanitizeWorker(workerInput[k]); + } + return acc; + }, {}); + } + + return workerInput; + } + + return sanitizeWorker(safeInput); +} + +module.exports = { + isObject: isObject, + isError: isError, + isErrorEvent: isErrorEvent, + isDOMError: isDOMError, + isDOMException: isDOMException, + isUndefined: isUndefined, + isFunction: isFunction, + isPlainObject: isPlainObject, + isString: isString, + isArray: isArray, + isEmptyObject: isEmptyObject, + supportsErrorEvent: supportsErrorEvent, + supportsDOMError: supportsDOMError, + supportsDOMException: supportsDOMException, + supportsFetch: supportsFetch, + supportsReferrerPolicy: supportsReferrerPolicy, + supportsPromiseRejectionEvent: supportsPromiseRejectionEvent, + wrappedCallback: wrappedCallback, + each: each, + objectMerge: objectMerge, + truncate: truncate, + objectFrozen: objectFrozen, + hasKey: hasKey, + joinRegExp: joinRegExp, + urlencode: urlencode, + uuid4: uuid4, + htmlTreeAsString: htmlTreeAsString, + htmlElementAsString: htmlElementAsString, + isSameException: isSameException, + isSameStacktrace: isSameStacktrace, + parseUrl: parseUrl, + fill: fill, + safeJoin: safeJoin, + serializeException: serializeException, + serializeKeysForMessage: serializeKeysForMessage, + sanitize: sanitize +}; + +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"11":11}],10:[function(_dereq_,module,exports){ +(function (global){ +var utils = _dereq_(9); + +/* + TraceKit - Cross brower stack traces + + This was originally forked from github.com/occ/TraceKit, but has since been + largely re-written and is now maintained as part of raven-js. Tests for + this are in test/vendor. + + MIT license +*/ + +var TraceKit = { + collectWindowErrors: true, + debug: false +}; + +// This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) +var _window = + typeof window !== 'undefined' + ? window + : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; + +// global reference to slice +var _slice = [].slice; +var UNKNOWN_FUNCTION = '?'; + +// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error#Error_types +var ERROR_TYPES_RE = /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/; + +function getLocationHref() { + if (typeof document === 'undefined' || document.location == null) return ''; + return document.location.href; +} + +function getLocationOrigin() { + if (typeof document === 'undefined' || document.location == null) return ''; + + // Oh dear IE10... + if (!document.location.origin) { + document.location.origin = + document.location.protocol + + '//' + + document.location.hostname + + (document.location.port ? ':' + document.location.port : ''); + } + + return document.location.origin; +} + +/** + * TraceKit.report: cross-browser processing of unhandled exceptions + * + * Syntax: + * TraceKit.report.subscribe(function(stackInfo) { ... }) + * TraceKit.report.unsubscribe(function(stackInfo) { ... }) + * TraceKit.report(exception) + * try { ...code... } catch(ex) { TraceKit.report(ex); } + * + * Supports: + * - Firefox: full stack trace with line numbers, plus column number + * on top frame; column number is not guaranteed + * - Opera: full stack trace with line and column numbers + * - Chrome: full stack trace with line and column numbers + * - Safari: line and column number for the top frame only; some frames + * may be missing, and column number is not guaranteed + * - IE: line and column number for the top frame only; some frames + * may be missing, and column number is not guaranteed + * + * In theory, TraceKit should work on all of the following versions: + * - IE5.5+ (only 8.0 tested) + * - Firefox 0.9+ (only 3.5+ tested) + * - Opera 7+ (only 10.50 tested; versions 9 and earlier may require + * Exceptions Have Stacktrace to be enabled in opera:config) + * - Safari 3+ (only 4+ tested) + * - Chrome 1+ (only 5+ tested) + * - Konqueror 3.5+ (untested) + * + * Requires TraceKit.computeStackTrace. + * + * Tries to catch all unhandled exceptions and report them to the + * subscribed handlers. Please note that TraceKit.report will rethrow the + * exception. This is REQUIRED in order to get a useful stack trace in IE. + * If the exception does not reach the top of the browser, you will only + * get a stack trace from the point where TraceKit.report was called. + * + * Handlers receive a stackInfo object as described in the + * TraceKit.computeStackTrace docs. + */ +TraceKit.report = (function reportModuleWrapper() { + var handlers = [], + lastArgs = null, + lastException = null, + lastExceptionStack = null; + + /** + * Add a crash handler. + * @param {Function} handler + */ + function subscribe(handler) { + installGlobalHandler(); + handlers.push(handler); + } + + /** + * Remove a crash handler. + * @param {Function} handler + */ + function unsubscribe(handler) { + for (var i = handlers.length - 1; i >= 0; --i) { + if (handlers[i] === handler) { + handlers.splice(i, 1); + } + } + } + + /** + * Remove all crash handlers. + */ + function unsubscribeAll() { + uninstallGlobalHandler(); + handlers = []; + } + + /** + * Dispatch stack information to all handlers. + * @param {Object.} stack + */ + function notifyHandlers(stack, isWindowError) { + var exception = null; + if (isWindowError && !TraceKit.collectWindowErrors) { + return; + } + for (var i in handlers) { + if (handlers.hasOwnProperty(i)) { + try { + handlers[i].apply(null, [stack].concat(_slice.call(arguments, 2))); + } catch (inner) { + exception = inner; + } + } + } + + if (exception) { + throw exception; + } + } + + var _oldOnerrorHandler, _onErrorHandlerInstalled; + + /** + * Ensures all global unhandled exceptions are recorded. + * Supported by Gecko and IE. + * @param {string} msg Error message. + * @param {string} url URL of script that generated the exception. + * @param {(number|string)} lineNo The line number at which the error + * occurred. + * @param {?(number|string)} colNo The column number at which the error + * occurred. + * @param {?Error} ex The actual Error object. + */ + function traceKitWindowOnError(msg, url, lineNo, colNo, ex) { + var stack = null; + // If 'ex' is ErrorEvent, get real Error from inside + var exception = utils.isErrorEvent(ex) ? ex.error : ex; + // If 'msg' is ErrorEvent, get real message from inside + var message = utils.isErrorEvent(msg) ? msg.message : msg; + + if (lastExceptionStack) { + TraceKit.computeStackTrace.augmentStackTraceWithInitialElement( + lastExceptionStack, + url, + lineNo, + message + ); + processLastException(); + } else if (exception && utils.isError(exception)) { + // non-string `exception` arg; attempt to extract stack trace + + // New chrome and blink send along a real error object + // Let's just report that like a normal error. + // See: https://mikewest.org/2013/08/debugging-runtime-errors-with-window-onerror + stack = TraceKit.computeStackTrace(exception); + notifyHandlers(stack, true); + } else { + var location = { + url: url, + line: lineNo, + column: colNo + }; + + var name = undefined; + var groups; + + if ({}.toString.call(message) === '[object String]') { + var groups = message.match(ERROR_TYPES_RE); + if (groups) { + name = groups[1]; + message = groups[2]; + } + } + + location.func = UNKNOWN_FUNCTION; + + stack = { + name: name, + message: message, + url: getLocationHref(), + stack: [location] + }; + notifyHandlers(stack, true); + } + + if (_oldOnerrorHandler) { + return _oldOnerrorHandler.apply(this, arguments); + } + + return false; + } + + function installGlobalHandler() { + if (_onErrorHandlerInstalled) { + return; + } + _oldOnerrorHandler = _window.onerror; + _window.onerror = traceKitWindowOnError; + _onErrorHandlerInstalled = true; + } + + function uninstallGlobalHandler() { + if (!_onErrorHandlerInstalled) { + return; + } + _window.onerror = _oldOnerrorHandler; + _onErrorHandlerInstalled = false; + _oldOnerrorHandler = undefined; + } + + function processLastException() { + var _lastExceptionStack = lastExceptionStack, + _lastArgs = lastArgs; + lastArgs = null; + lastExceptionStack = null; + lastException = null; + notifyHandlers.apply(null, [_lastExceptionStack, false].concat(_lastArgs)); + } + + /** + * Reports an unhandled Error to TraceKit. + * @param {Error} ex + * @param {?boolean} rethrow If false, do not re-throw the exception. + * Only used for window.onerror to not cause an infinite loop of + * rethrowing. + */ + function report(ex, rethrow) { + var args = _slice.call(arguments, 1); + if (lastExceptionStack) { + if (lastException === ex) { + return; // already caught by an inner catch block, ignore + } else { + processLastException(); + } + } + + var stack = TraceKit.computeStackTrace(ex); + lastExceptionStack = stack; + lastException = ex; + lastArgs = args; + + // If the stack trace is incomplete, wait for 2 seconds for + // slow slow IE to see if onerror occurs or not before reporting + // this exception; otherwise, we will end up with an incomplete + // stack trace + setTimeout(function() { + if (lastException === ex) { + processLastException(); + } + }, stack.incomplete ? 2000 : 0); + + if (rethrow !== false) { + throw ex; // re-throw to propagate to the top level (and cause window.onerror) + } + } + + report.subscribe = subscribe; + report.unsubscribe = unsubscribe; + report.uninstall = unsubscribeAll; + return report; +})(); + +/** + * TraceKit.computeStackTrace: cross-browser stack traces in JavaScript + * + * Syntax: + * s = TraceKit.computeStackTrace(exception) // consider using TraceKit.report instead (see below) + * Returns: + * s.name - exception name + * s.message - exception message + * s.stack[i].url - JavaScript or HTML file URL + * s.stack[i].func - function name, or empty for anonymous functions (if guessing did not work) + * s.stack[i].args - arguments passed to the function, if known + * s.stack[i].line - line number, if known + * s.stack[i].column - column number, if known + * + * Supports: + * - Firefox: full stack trace with line numbers and unreliable column + * number on top frame + * - Opera 10: full stack trace with line and column numbers + * - Opera 9-: full stack trace with line numbers + * - Chrome: full stack trace with line and column numbers + * - Safari: line and column number for the topmost stacktrace element + * only + * - IE: no line numbers whatsoever + * + * Tries to guess names of anonymous functions by looking for assignments + * in the source code. In IE and Safari, we have to guess source file names + * by searching for function bodies inside all page scripts. This will not + * work for scripts that are loaded cross-domain. + * Here be dragons: some function names may be guessed incorrectly, and + * duplicate functions may be mismatched. + * + * TraceKit.computeStackTrace should only be used for tracing purposes. + * Logging of unhandled exceptions should be done with TraceKit.report, + * which builds on top of TraceKit.computeStackTrace and provides better + * IE support by utilizing the window.onerror event to retrieve information + * about the top of the stack. + * + * Note: In IE and Safari, no stack trace is recorded on the Error object, + * so computeStackTrace instead walks its *own* chain of callers. + * This means that: + * * in Safari, some methods may be missing from the stack trace; + * * in IE, the topmost function in the stack trace will always be the + * caller of computeStackTrace. + * + * This is okay for tracing (because you are likely to be calling + * computeStackTrace from the function you want to be the topmost element + * of the stack trace anyway), but not okay for logging unhandled + * exceptions (because your catch block will likely be far away from the + * inner function that actually caused the exception). + * + */ +TraceKit.computeStackTrace = (function computeStackTraceWrapper() { + // Contents of Exception in various browsers. + // + // SAFARI: + // ex.message = Can't find variable: qq + // ex.line = 59 + // ex.sourceId = 580238192 + // ex.sourceURL = http://... + // ex.expressionBeginOffset = 96 + // ex.expressionCaretOffset = 98 + // ex.expressionEndOffset = 98 + // ex.name = ReferenceError + // + // FIREFOX: + // ex.message = qq is not defined + // ex.fileName = http://... + // ex.lineNumber = 59 + // ex.columnNumber = 69 + // ex.stack = ...stack trace... (see the example below) + // ex.name = ReferenceError + // + // CHROME: + // ex.message = qq is not defined + // ex.name = ReferenceError + // ex.type = not_defined + // ex.arguments = ['aa'] + // ex.stack = ...stack trace... + // + // INTERNET EXPLORER: + // ex.message = ... + // ex.name = ReferenceError + // + // OPERA: + // ex.message = ...message... (see the example below) + // ex.name = ReferenceError + // ex.opera#sourceloc = 11 (pretty much useless, duplicates the info in ex.message) + // ex.stacktrace = n/a; see 'opera:config#UserPrefs|Exceptions Have Stacktrace' + + /** + * Computes stack trace information from the stack property. + * Chrome and Gecko use this property. + * @param {Error} ex + * @return {?Object.} Stack trace information. + */ + function computeStackTraceFromStackProp(ex) { + if (typeof ex.stack === 'undefined' || !ex.stack) return; + + var chrome = /^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i; + var winjs = /^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i; + // NOTE: blob urls are now supposed to always have an origin, therefore it's format + // which is `blob:http://url/path/with-some-uuid`, is matched by `blob.*?:\/` as well + var gecko = /^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i; + // Used to additionally parse URL/line/column from eval frames + var geckoEval = /(\S+) line (\d+)(?: > eval line \d+)* > eval/i; + var chromeEval = /\((\S*)(?::(\d+))(?::(\d+))\)/; + var lines = ex.stack.split('\n'); + var stack = []; + var submatch; + var parts; + var element; + var reference = /^(.*) is undefined$/.exec(ex.message); + + for (var i = 0, j = lines.length; i < j; ++i) { + if ((parts = chrome.exec(lines[i]))) { + var isNative = parts[2] && parts[2].indexOf('native') === 0; // start of line + var isEval = parts[2] && parts[2].indexOf('eval') === 0; // start of line + if (isEval && (submatch = chromeEval.exec(parts[2]))) { + // throw out eval line/column and use top-most line/column number + parts[2] = submatch[1]; // url + parts[3] = submatch[2]; // line + parts[4] = submatch[3]; // column + } + element = { + url: !isNative ? parts[2] : null, + func: parts[1] || UNKNOWN_FUNCTION, + args: isNative ? [parts[2]] : [], + line: parts[3] ? +parts[3] : null, + column: parts[4] ? +parts[4] : null + }; + } else if ((parts = winjs.exec(lines[i]))) { + element = { + url: parts[2], + func: parts[1] || UNKNOWN_FUNCTION, + args: [], + line: +parts[3], + column: parts[4] ? +parts[4] : null + }; + } else if ((parts = gecko.exec(lines[i]))) { + var isEval = parts[3] && parts[3].indexOf(' > eval') > -1; + if (isEval && (submatch = geckoEval.exec(parts[3]))) { + // throw out eval line/column and use top-most line number + parts[3] = submatch[1]; + parts[4] = submatch[2]; + parts[5] = null; // no column when eval + } else if (i === 0 && !parts[5] && typeof ex.columnNumber !== 'undefined') { + // FireFox uses this awesome columnNumber property for its top frame + // Also note, Firefox's column number is 0-based and everything else expects 1-based, + // so adding 1 + // NOTE: this hack doesn't work if top-most frame is eval + stack[0].column = ex.columnNumber + 1; + } + element = { + url: parts[3], + func: parts[1] || UNKNOWN_FUNCTION, + args: parts[2] ? parts[2].split(',') : [], + line: parts[4] ? +parts[4] : null, + column: parts[5] ? +parts[5] : null + }; + } else { + continue; + } + + if (!element.func && element.line) { + element.func = UNKNOWN_FUNCTION; + } + + if (element.url && element.url.substr(0, 5) === 'blob:') { + // Special case for handling JavaScript loaded into a blob. + // We use a synchronous AJAX request here as a blob is already in + // memory - it's not making a network request. This will generate a warning + // in the browser console, but there has already been an error so that's not + // that much of an issue. + var xhr = new XMLHttpRequest(); + xhr.open('GET', element.url, false); + xhr.send(null); + + // If we failed to download the source, skip this patch + if (xhr.status === 200) { + var source = xhr.responseText || ''; + + // We trim the source down to the last 300 characters as sourceMappingURL is always at the end of the file. + // Why 300? To be in line with: https://github.com/getsentry/sentry/blob/4af29e8f2350e20c28a6933354e4f42437b4ba42/src/sentry/lang/javascript/processor.py#L164-L175 + source = source.slice(-300); + + // Now we dig out the source map URL + var sourceMaps = source.match(/\/\/# sourceMappingURL=(.*)$/); + + // If we don't find a source map comment or we find more than one, continue on to the next element. + if (sourceMaps) { + var sourceMapAddress = sourceMaps[1]; + + // Now we check to see if it's a relative URL. + // If it is, convert it to an absolute one. + if (sourceMapAddress.charAt(0) === '~') { + sourceMapAddress = getLocationOrigin() + sourceMapAddress.slice(1); + } + + // Now we strip the '.map' off of the end of the URL and update the + // element so that Sentry can match the map to the blob. + element.url = sourceMapAddress.slice(0, -4); + } + } + } + + stack.push(element); + } + + if (!stack.length) { + return null; + } + + return { + name: ex.name, + message: ex.message, + url: getLocationHref(), + stack: stack + }; + } + + /** + * Adds information about the first frame to incomplete stack traces. + * Safari and IE require this to get complete data on the first frame. + * @param {Object.} stackInfo Stack trace information from + * one of the compute* methods. + * @param {string} url The URL of the script that caused an error. + * @param {(number|string)} lineNo The line number of the script that + * caused an error. + * @param {string=} message The error generated by the browser, which + * hopefully contains the name of the object that caused the error. + * @return {boolean} Whether or not the stack information was + * augmented. + */ + function augmentStackTraceWithInitialElement(stackInfo, url, lineNo, message) { + var initial = { + url: url, + line: lineNo + }; + + if (initial.url && initial.line) { + stackInfo.incomplete = false; + + if (!initial.func) { + initial.func = UNKNOWN_FUNCTION; + } + + if (stackInfo.stack.length > 0) { + if (stackInfo.stack[0].url === initial.url) { + if (stackInfo.stack[0].line === initial.line) { + return false; // already in stack trace + } else if ( + !stackInfo.stack[0].line && + stackInfo.stack[0].func === initial.func + ) { + stackInfo.stack[0].line = initial.line; + return false; + } + } + } + + stackInfo.stack.unshift(initial); + stackInfo.partial = true; + return true; + } else { + stackInfo.incomplete = true; + } + + return false; + } + + /** + * Computes stack trace information by walking the arguments.caller + * chain at the time the exception occurred. This will cause earlier + * frames to be missed but is the only way to get any stack trace in + * Safari and IE. The top frame is restored by + * {@link augmentStackTraceWithInitialElement}. + * @param {Error} ex + * @return {?Object.} Stack trace information. + */ + function computeStackTraceByWalkingCallerChain(ex, depth) { + var functionName = /function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i, + stack = [], + funcs = {}, + recursion = false, + parts, + item, + source; + + for ( + var curr = computeStackTraceByWalkingCallerChain.caller; + curr && !recursion; + curr = curr.caller + ) { + if (curr === computeStackTrace || curr === TraceKit.report) { + // console.log('skipping internal function'); + continue; + } + + item = { + url: null, + func: UNKNOWN_FUNCTION, + line: null, + column: null + }; + + if (curr.name) { + item.func = curr.name; + } else if ((parts = functionName.exec(curr.toString()))) { + item.func = parts[1]; + } + + if (typeof item.func === 'undefined') { + try { + item.func = parts.input.substring(0, parts.input.indexOf('{')); + } catch (e) {} + } + + if (funcs['' + curr]) { + recursion = true; + } else { + funcs['' + curr] = true; + } + + stack.push(item); + } + + if (depth) { + // console.log('depth is ' + depth); + // console.log('stack is ' + stack.length); + stack.splice(0, depth); + } + + var result = { + name: ex.name, + message: ex.message, + url: getLocationHref(), + stack: stack + }; + augmentStackTraceWithInitialElement( + result, + ex.sourceURL || ex.fileName, + ex.line || ex.lineNumber, + ex.message || ex.description + ); + return result; + } + + /** + * Computes a stack trace for an exception. + * @param {Error} ex + * @param {(string|number)=} depth + */ + function computeStackTrace(ex, depth) { + var stack = null; + depth = depth == null ? 0 : +depth; + + try { + stack = computeStackTraceFromStackProp(ex); + if (stack) { + return stack; + } + } catch (e) { + if (TraceKit.debug) { + throw e; + } + } + + try { + stack = computeStackTraceByWalkingCallerChain(ex, depth + 1); + if (stack) { + return stack; + } + } catch (e) { + if (TraceKit.debug) { + throw e; + } + } + return { + name: ex.name, + message: ex.message, + url: getLocationHref() + }; + } + + computeStackTrace.augmentStackTraceWithInitialElement = augmentStackTraceWithInitialElement; + computeStackTrace.computeStackTraceFromStackProp = computeStackTraceFromStackProp; + + return computeStackTrace; +})(); + +module.exports = TraceKit; + +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"9":9}],11:[function(_dereq_,module,exports){ +/* + json-stringify-safe + Like JSON.stringify, but doesn't throw on circular references. + + Originally forked from https://github.com/isaacs/json-stringify-safe + version 5.0.1 on 3/8/2017 and modified to handle Errors serialization + and IE8 compatibility. Tests for this are in test/vendor. + + ISC license: https://github.com/isaacs/json-stringify-safe/blob/master/LICENSE +*/ + +exports = module.exports = stringify; +exports.getSerialize = serializer; + +function indexOf(haystack, needle) { + for (var i = 0; i < haystack.length; ++i) { + if (haystack[i] === needle) return i; + } + return -1; +} + +function stringify(obj, replacer, spaces, cycleReplacer) { + return JSON.stringify(obj, serializer(replacer, cycleReplacer), spaces); +} + +// https://github.com/ftlabs/js-abbreviate/blob/fa709e5f139e7770a71827b1893f22418097fbda/index.js#L95-L106 +function stringifyError(value) { + var err = { + // These properties are implemented as magical getters and don't show up in for in + stack: value.stack, + message: value.message, + name: value.name + }; + + for (var i in value) { + if (Object.prototype.hasOwnProperty.call(value, i)) { + err[i] = value[i]; + } + } + + return err; +} + +function serializer(replacer, cycleReplacer) { + var stack = []; + var keys = []; + + if (cycleReplacer == null) { + cycleReplacer = function(key, value) { + if (stack[0] === value) { + return '[Circular ~]'; + } + return '[Circular ~.' + keys.slice(0, indexOf(stack, value)).join('.') + ']'; + }; + } + + return function(key, value) { + if (stack.length > 0) { + var thisPos = indexOf(stack, this); + ~thisPos ? stack.splice(thisPos + 1) : stack.push(this); + ~thisPos ? keys.splice(thisPos, Infinity, key) : keys.push(key); + + if (~indexOf(stack, value)) { + value = cycleReplacer.call(this, key, value); + } + } else { + stack.push(value); + } + + return replacer == null + ? value instanceof Error ? stringifyError(value) : value + : replacer.call(this, key, value); + }; +} + +},{}],12:[function(_dereq_,module,exports){ +/* + * JavaScript MD5 + * https://github.com/blueimp/JavaScript-MD5 + * + * Copyright 2011, Sebastian Tschan + * https://blueimp.net + * + * Licensed under the MIT license: + * https://opensource.org/licenses/MIT + * + * Based on + * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message + * Digest Algorithm, as defined in RFC 1321. + * Version 2.2 Copyright (C) Paul Johnston 1999 - 2009 + * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet + * Distributed under the BSD License + * See http://pajhome.org.uk/crypt/md5 for more info. + */ + +/* +* Add integers, wrapping at 2^32. This uses 16-bit operations internally +* to work around bugs in some JS interpreters. +*/ +function safeAdd(x, y) { + var lsw = (x & 0xffff) + (y & 0xffff); + var msw = (x >> 16) + (y >> 16) + (lsw >> 16); + return (msw << 16) | (lsw & 0xffff); +} + +/* +* Bitwise rotate a 32-bit number to the left. +*/ +function bitRotateLeft(num, cnt) { + return (num << cnt) | (num >>> (32 - cnt)); +} + +/* +* These functions implement the four basic operations the algorithm uses. +*/ +function md5cmn(q, a, b, x, s, t) { + return safeAdd(bitRotateLeft(safeAdd(safeAdd(a, q), safeAdd(x, t)), s), b); +} +function md5ff(a, b, c, d, x, s, t) { + return md5cmn((b & c) | (~b & d), a, b, x, s, t); +} +function md5gg(a, b, c, d, x, s, t) { + return md5cmn((b & d) | (c & ~d), a, b, x, s, t); +} +function md5hh(a, b, c, d, x, s, t) { + return md5cmn(b ^ c ^ d, a, b, x, s, t); +} +function md5ii(a, b, c, d, x, s, t) { + return md5cmn(c ^ (b | ~d), a, b, x, s, t); +} + +/* +* Calculate the MD5 of an array of little-endian words, and a bit length. +*/ +function binlMD5(x, len) { + /* append padding */ + x[len >> 5] |= 0x80 << (len % 32); + x[(((len + 64) >>> 9) << 4) + 14] = len; + + var i; + var olda; + var oldb; + var oldc; + var oldd; + var a = 1732584193; + var b = -271733879; + var c = -1732584194; + var d = 271733878; + + for (i = 0; i < x.length; i += 16) { + olda = a; + oldb = b; + oldc = c; + oldd = d; + + a = md5ff(a, b, c, d, x[i], 7, -680876936); + d = md5ff(d, a, b, c, x[i + 1], 12, -389564586); + c = md5ff(c, d, a, b, x[i + 2], 17, 606105819); + b = md5ff(b, c, d, a, x[i + 3], 22, -1044525330); + a = md5ff(a, b, c, d, x[i + 4], 7, -176418897); + d = md5ff(d, a, b, c, x[i + 5], 12, 1200080426); + c = md5ff(c, d, a, b, x[i + 6], 17, -1473231341); + b = md5ff(b, c, d, a, x[i + 7], 22, -45705983); + a = md5ff(a, b, c, d, x[i + 8], 7, 1770035416); + d = md5ff(d, a, b, c, x[i + 9], 12, -1958414417); + c = md5ff(c, d, a, b, x[i + 10], 17, -42063); + b = md5ff(b, c, d, a, x[i + 11], 22, -1990404162); + a = md5ff(a, b, c, d, x[i + 12], 7, 1804603682); + d = md5ff(d, a, b, c, x[i + 13], 12, -40341101); + c = md5ff(c, d, a, b, x[i + 14], 17, -1502002290); + b = md5ff(b, c, d, a, x[i + 15], 22, 1236535329); + + a = md5gg(a, b, c, d, x[i + 1], 5, -165796510); + d = md5gg(d, a, b, c, x[i + 6], 9, -1069501632); + c = md5gg(c, d, a, b, x[i + 11], 14, 643717713); + b = md5gg(b, c, d, a, x[i], 20, -373897302); + a = md5gg(a, b, c, d, x[i + 5], 5, -701558691); + d = md5gg(d, a, b, c, x[i + 10], 9, 38016083); + c = md5gg(c, d, a, b, x[i + 15], 14, -660478335); + b = md5gg(b, c, d, a, x[i + 4], 20, -405537848); + a = md5gg(a, b, c, d, x[i + 9], 5, 568446438); + d = md5gg(d, a, b, c, x[i + 14], 9, -1019803690); + c = md5gg(c, d, a, b, x[i + 3], 14, -187363961); + b = md5gg(b, c, d, a, x[i + 8], 20, 1163531501); + a = md5gg(a, b, c, d, x[i + 13], 5, -1444681467); + d = md5gg(d, a, b, c, x[i + 2], 9, -51403784); + c = md5gg(c, d, a, b, x[i + 7], 14, 1735328473); + b = md5gg(b, c, d, a, x[i + 12], 20, -1926607734); + + a = md5hh(a, b, c, d, x[i + 5], 4, -378558); + d = md5hh(d, a, b, c, x[i + 8], 11, -2022574463); + c = md5hh(c, d, a, b, x[i + 11], 16, 1839030562); + b = md5hh(b, c, d, a, x[i + 14], 23, -35309556); + a = md5hh(a, b, c, d, x[i + 1], 4, -1530992060); + d = md5hh(d, a, b, c, x[i + 4], 11, 1272893353); + c = md5hh(c, d, a, b, x[i + 7], 16, -155497632); + b = md5hh(b, c, d, a, x[i + 10], 23, -1094730640); + a = md5hh(a, b, c, d, x[i + 13], 4, 681279174); + d = md5hh(d, a, b, c, x[i], 11, -358537222); + c = md5hh(c, d, a, b, x[i + 3], 16, -722521979); + b = md5hh(b, c, d, a, x[i + 6], 23, 76029189); + a = md5hh(a, b, c, d, x[i + 9], 4, -640364487); + d = md5hh(d, a, b, c, x[i + 12], 11, -421815835); + c = md5hh(c, d, a, b, x[i + 15], 16, 530742520); + b = md5hh(b, c, d, a, x[i + 2], 23, -995338651); + + a = md5ii(a, b, c, d, x[i], 6, -198630844); + d = md5ii(d, a, b, c, x[i + 7], 10, 1126891415); + c = md5ii(c, d, a, b, x[i + 14], 15, -1416354905); + b = md5ii(b, c, d, a, x[i + 5], 21, -57434055); + a = md5ii(a, b, c, d, x[i + 12], 6, 1700485571); + d = md5ii(d, a, b, c, x[i + 3], 10, -1894986606); + c = md5ii(c, d, a, b, x[i + 10], 15, -1051523); + b = md5ii(b, c, d, a, x[i + 1], 21, -2054922799); + a = md5ii(a, b, c, d, x[i + 8], 6, 1873313359); + d = md5ii(d, a, b, c, x[i + 15], 10, -30611744); + c = md5ii(c, d, a, b, x[i + 6], 15, -1560198380); + b = md5ii(b, c, d, a, x[i + 13], 21, 1309151649); + a = md5ii(a, b, c, d, x[i + 4], 6, -145523070); + d = md5ii(d, a, b, c, x[i + 11], 10, -1120210379); + c = md5ii(c, d, a, b, x[i + 2], 15, 718787259); + b = md5ii(b, c, d, a, x[i + 9], 21, -343485551); + + a = safeAdd(a, olda); + b = safeAdd(b, oldb); + c = safeAdd(c, oldc); + d = safeAdd(d, oldd); + } + return [a, b, c, d]; +} + +/* +* Convert an array of little-endian words to a string +*/ +function binl2rstr(input) { + var i; + var output = ''; + var length32 = input.length * 32; + for (i = 0; i < length32; i += 8) { + output += String.fromCharCode((input[i >> 5] >>> (i % 32)) & 0xff); + } + return output; +} + +/* +* Convert a raw string to an array of little-endian words +* Characters >255 have their high-byte silently ignored. +*/ +function rstr2binl(input) { + var i; + var output = []; + output[(input.length >> 2) - 1] = undefined; + for (i = 0; i < output.length; i += 1) { + output[i] = 0; + } + var length8 = input.length * 8; + for (i = 0; i < length8; i += 8) { + output[i >> 5] |= (input.charCodeAt(i / 8) & 0xff) << (i % 32); + } + return output; +} + +/* +* Calculate the MD5 of a raw string +*/ +function rstrMD5(s) { + return binl2rstr(binlMD5(rstr2binl(s), s.length * 8)); +} + +/* +* Calculate the HMAC-MD5, of a key and some data (raw strings) +*/ +function rstrHMACMD5(key, data) { + var i; + var bkey = rstr2binl(key); + var ipad = []; + var opad = []; + var hash; + ipad[15] = opad[15] = undefined; + if (bkey.length > 16) { + bkey = binlMD5(bkey, key.length * 8); + } + for (i = 0; i < 16; i += 1) { + ipad[i] = bkey[i] ^ 0x36363636; + opad[i] = bkey[i] ^ 0x5c5c5c5c; + } + hash = binlMD5(ipad.concat(rstr2binl(data)), 512 + data.length * 8); + return binl2rstr(binlMD5(opad.concat(hash), 512 + 128)); +} + +/* +* Convert a raw string to a hex string +*/ +function rstr2hex(input) { + var hexTab = '0123456789abcdef'; + var output = ''; + var x; + var i; + for (i = 0; i < input.length; i += 1) { + x = input.charCodeAt(i); + output += hexTab.charAt((x >>> 4) & 0x0f) + hexTab.charAt(x & 0x0f); + } + return output; +} + +/* +* Encode a string as utf-8 +*/ +function str2rstrUTF8(input) { + return unescape(encodeURIComponent(input)); +} + +/* +* Take string arguments and return either raw or hex encoded strings +*/ +function rawMD5(s) { + return rstrMD5(str2rstrUTF8(s)); +} +function hexMD5(s) { + return rstr2hex(rawMD5(s)); +} +function rawHMACMD5(k, d) { + return rstrHMACMD5(str2rstrUTF8(k), str2rstrUTF8(d)); +} +function hexHMACMD5(k, d) { + return rstr2hex(rawHMACMD5(k, d)); +} + +function md5(string, key, raw) { + if (!key) { + if (!raw) { + return hexMD5(string); + } + return rawMD5(string); + } + if (!raw) { + return hexHMACMD5(key, string); + } + return rawHMACMD5(key, string); +} + +module.exports = md5; + +},{}]},{},[8,1,2,3,4])(8) +}); \ No newline at end of file diff --git a/packages/raven-js/dist/console,ember,require,vue/raven.min.js b/packages/raven-js/dist/console,ember,require,vue/raven.min.js new file mode 100644 index 000000000000..a90164772ca8 --- /dev/null +++ b/packages/raven-js/dist/console,ember,require,vue/raven.min.js @@ -0,0 +1,4 @@ +/*! Raven.js 3.25.2 (30b6d4e) | github.com/getsentry/raven-js */ +!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.Raven=a()}}(function(){var a;return function b(a,c,d){function e(g,h){if(!c[g]){if(!a[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};a[g][0].call(k.exports,function(b){var c=a[g][1][b];return e(c?c:b)},k,k.exports,b,a,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;g":"anonymous component")+(a._isVue&&a.$options.__file?" at "+a.$options.__file:"")}function e(a,b){if(b=b||window.Vue,b&&b.config){var c=b.config.errorHandler;b.config.errorHandler=function(b,e,f){var g={};"[object Object]"===Object.prototype.toString.call(e)&&(g.componentName=d(e),g.propsData=e.$options.propsData),"undefined"!=typeof f&&(g.lifecycleHook=f),a.captureException(b,{extra:g}),"function"==typeof c&&c.call(this,b,e,f)}}}b.exports=e,a(8).addPlugin(b.exports)},{8:8}],5:[function(a,b,c){function d(a){this.name="RavenConfigError",this.message=a}d.prototype=new Error,d.prototype.constructor=d,b.exports=d},{}],6:[function(a,b,c){var d=a(9),e=function(a,b,c){var e=a[b],f=a;if(b in a){var g="warn"===b?"warning":b;a[b]=function(){var a=[].slice.call(arguments),h=d.safeJoin(a," "),i={level:g,logger:"console",extra:{arguments:a}};"assert"===b?a[0]===!1&&(h="Assertion failed: "+(d.safeJoin(a.slice(1)," ")||"console.assert"),i.extra.arguments=a.slice(1),c&&c(h,i)):c&&c(h,i),e&&Function.prototype.apply.call(e,f,a)}}};b.exports={wrapMethod:e}},{9:9}],7:[function(a,b,c){(function(c){function d(){return+new Date}function e(a,b){return s(b)?function(c){return b(c,a)}:b}function f(){this.a=!("object"!=typeof JSON||!JSON.stringify),this.b=!r(S),this.c=!r(T),this.d=null,this.e=null,this.f=null,this.g=null,this.h=null,this.i=null,this.j={},this.k={release:R.SENTRY_RELEASE&&R.SENTRY_RELEASE.id,logger:"javascript",ignoreErrors:[],ignoreUrls:[],whitelistUrls:[],includePaths:[],headers:null,collectWindowErrors:!0,captureUnhandledRejections:!0,maxMessageLength:0,maxUrlLength:250,stackTraceLimit:50,autoBreadcrumbs:!0,instrument:!0,sampleRate:1,sanitizeKeys:[]},this.l={method:"POST",keepalive:!0,referrerPolicy:K()?"origin":""},this.m=0,this.n=!1,this.o=Error.stackTraceLimit,this.p=R.console||{},this.q={},this.r=[],this.s=d(),this.t=[],this.u=[],this.v=null,this.w=R.location,this.x=this.w&&this.w.href,this.y();for(var a in this.p)this.q[a]=this.p[a]}var g=a(10),h=a(11),i=a(12),j=a(5),k=a(9),l=k.isErrorEvent,m=k.isDOMError,n=k.isDOMException,o=k.isError,p=k.isObject,q=k.isPlainObject,r=k.isUndefined,s=k.isFunction,t=k.isString,u=k.isArray,v=k.isEmptyObject,w=k.each,x=k.objectMerge,y=k.truncate,z=k.objectFrozen,A=k.hasKey,B=k.joinRegExp,C=k.urlencode,D=k.uuid4,E=k.htmlTreeAsString,F=k.isSameException,G=k.isSameStacktrace,H=k.parseUrl,I=k.fill,J=k.supportsFetch,K=k.supportsReferrerPolicy,L=k.serializeKeysForMessage,M=k.serializeException,N=k.sanitize,O=a(6).wrapMethod,P="source protocol user pass host port path".split(" "),Q=/^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/,R="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},S=R.document,T=R.navigator;f.prototype={VERSION:"3.25.2",debug:!1,TraceKit:g,config:function(a,b){var c=this;if(c.g)return this.z("error","Error: Raven has already been configured"),c;if(!a)return c;var d=c.k;b&&w(b,function(a,b){"tags"===a||"extra"===a||"user"===a?c.j[a]=b:d[a]=b}),c.setDSN(a),d.ignoreErrors.push(/^Script error\.?$/),d.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/),d.ignoreErrors=B(d.ignoreErrors),d.ignoreUrls=!!d.ignoreUrls.length&&B(d.ignoreUrls),d.whitelistUrls=!!d.whitelistUrls.length&&B(d.whitelistUrls),d.includePaths=B(d.includePaths),d.maxBreadcrumbs=Math.max(0,Math.min(d.maxBreadcrumbs||100,100));var e={xhr:!0,console:!0,dom:!0,location:!0,sentry:!0},f=d.autoBreadcrumbs;"[object Object]"==={}.toString.call(f)?f=x(e,f):f!==!1&&(f=e),d.autoBreadcrumbs=f;var h={tryCatch:!0},i=d.instrument;return"[object Object]"==={}.toString.call(i)?i=x(h,i):i!==!1&&(i=h),d.instrument=i,g.collectWindowErrors=!!d.collectWindowErrors,c},install:function(){var a=this;return a.isSetup()&&!a.n&&(g.report.subscribe(function(){a.A.apply(a,arguments)}),a.k.captureUnhandledRejections&&a.B(),a.C(),a.k.instrument&&a.k.instrument.tryCatch&&a.D(),a.k.autoBreadcrumbs&&a.E(),a.F(),a.n=!0),Error.stackTraceLimit=a.k.stackTraceLimit,this},setDSN:function(a){var b=this,c=b.G(a),d=c.path.lastIndexOf("/"),e=c.path.substr(1,d);b.H=a,b.h=c.user,b.I=c.pass&&c.pass.substr(1),b.i=c.path.substr(d+1),b.g=b.J(c),b.K=b.g+"/"+e+"api/"+b.i+"/store/",this.y()},context:function(a,b,c){return s(a)&&(c=b||[],b=a,a=void 0),this.wrap(a,b).apply(this,c)},wrap:function(a,b,c){function d(){var d=[],f=arguments.length,g=!a||a&&a.deep!==!1;for(c&&s(c)&&c.apply(this,arguments);f--;)d[f]=g?e.wrap(a,arguments[f]):arguments[f];try{return b.apply(this,d)}catch(h){throw e.L(),e.captureException(h,a),h}}var e=this;if(r(b)&&!s(a))return a;if(s(a)&&(b=a,a=void 0),!s(b))return b;try{if(b.M)return b;if(b.N)return b.N}catch(f){return b}for(var g in b)A(b,g)&&(d[g]=b[g]);return d.prototype=b.prototype,b.N=d,d.M=!0,d.O=b,d},uninstall:function(){return g.report.uninstall(),this.P(),this.Q(),this.R(),this.S(),Error.stackTraceLimit=this.o,this.n=!1,this},T:function(a){this.z("debug","Raven caught unhandled promise rejection:",a),this.captureException(a.reason,{extra:{unhandledPromiseRejection:!0}})},B:function(){return this.T=this.T.bind(this),R.addEventListener&&R.addEventListener("unhandledrejection",this.T),this},P:function(){return R.removeEventListener&&R.removeEventListener("unhandledrejection",this.T),this},captureException:function(a,b){if(b=x({trimHeadFrames:0},b?b:{}),l(a)&&a.error)a=a.error;else{if(m(a)||n(a)){var c=a.name||(m(a)?"DOMError":"DOMException"),d=a.message?c+": "+a.message:c;return this.captureMessage(d,x(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}))}if(o(a))a=a;else{if(!q(a))return this.captureMessage(a,x(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}));b=this.U(b,a),a=new Error(b.message)}}this.d=a;try{var e=g.computeStackTrace(a);this.V(e,b)}catch(f){if(a!==f)throw f}return this},U:function(a,b){var c=Object.keys(b).sort(),d=x(a,{message:"Non-Error exception captured with keys: "+L(c),fingerprint:[i(c)],extra:a.extra||{}});return d.extra.W=M(b),d},captureMessage:function(a,b){if(!this.k.ignoreErrors.test||!this.k.ignoreErrors.test(a)){b=b||{},a+="";var c,d=x({message:a},b);try{throw new Error(a)}catch(e){c=e}c.name=null;var f=g.computeStackTrace(c),h=u(f.stack)&&f.stack[1];h&&"Raven.captureException"===h.func&&(h=f.stack[2]);var i=h&&h.url||"";if((!this.k.ignoreUrls.test||!this.k.ignoreUrls.test(i))&&(!this.k.whitelistUrls.test||this.k.whitelistUrls.test(i))){if(this.k.stacktrace||b&&b.stacktrace){d.fingerprint=null==d.fingerprint?a:d.fingerprint,b=x({trimHeadFrames:0},b),b.trimHeadFrames+=1;var j=this.X(f,b);d.stacktrace={frames:j.reverse()}}return d.fingerprint&&(d.fingerprint=u(d.fingerprint)?d.fingerprint:[d.fingerprint]),this.Y(d),this}}},captureBreadcrumb:function(a){var b=x({timestamp:d()/1e3},a);if(s(this.k.breadcrumbCallback)){var c=this.k.breadcrumbCallback(b);if(p(c)&&!v(c))b=c;else if(c===!1)return this}return this.u.push(b),this.u.length>this.k.maxBreadcrumbs&&this.u.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.r.push([a,b]),this.n&&this.F(),this},setUserContext:function(a){return this.j.user=a,this},setExtraContext:function(a){return this.Z("extra",a),this},setTagsContext:function(a){return this.Z("tags",a),this},clearContext:function(){return this.j={},this},getContext:function(){return JSON.parse(h(this.j))},setEnvironment:function(a){return this.k.environment=a,this},setRelease:function(a){return this.k.release=a,this},setDataCallback:function(a){var b=this.k.dataCallback;return this.k.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.k.breadcrumbCallback;return this.k.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.k.shouldSendCallback;return this.k.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.k.transport=a,this},lastException:function(){return this.d},lastEventId:function(){return this.f},isSetup:function(){return!!this.a&&(!!this.g||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.z("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=R.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(S){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.H;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.j.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.J(this.G(c)),h=S.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(S.head||S.body).appendChild(h)}},L:function(){var a=this;this.m+=1,setTimeout(function(){a.m-=1})},$:function(a,b){var c,d;if(this.b){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),S.createEvent?(c=S.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=S.createEventObject(),c.eventType=a);for(d in b)A(b,d)&&(c[d]=b[d]);if(S.createEvent)S.dispatchEvent(c);else try{S.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},_:function(a){var b=this;return function(c){if(b.aa=null,b.v!==c){b.v=c;var d;try{d=E(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ba:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.aa;g||a._("input")(c),clearTimeout(g),a.aa=setTimeout(function(){a.aa=null},b)}}},ca:function(a,b){var c=H(this.w.href),d=H(b),e=H(a);this.x=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},C:function(){var a=this;a.da=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.M?a.da.apply(this.O,arguments):a.da.apply(this,arguments)}},Q:function(){this.da&&(Function.prototype.toString=this.da)},D:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.ca(b.x,c+""),a.apply(this,arguments)}};I(R.history,"pushState",j,d),I(R.history,"replaceState",j,d)}if(c.console&&"console"in R&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};w(["debug","info","warn","error","log"],function(a,b){O(console,b,k)})}},R:function(){for(var a;this.t.length;){a=this.t.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},S:function(){for(var a in this.q)this.p[a]=this.q[a]},F:function(){var a=this;w(this.r,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},G:function(a){var b=Q.exec(a),c={},d=7;try{for(;d--;)c[P[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.k.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},J:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},A:function(){this.m||this.V.apply(this,arguments)},V:function(a,b){var c=this.X(a,b);this.$("handle",{stackInfo:a,options:b}),this.fa(a.name,a.message,a.url,a.lineno,c,b)},X:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(w(a.stack,function(b,e){var f=c.ga(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.u,0)}),this.j.user&&(a.user=this.j.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),a=this.pa(a),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||v(a[b]))&&delete a[b]}),s(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!v(a)&&(!s(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.ma()?void this.z("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function F(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&l(b))for(c=b.split(/\s+/),f=0;fc?Q(a,b-1):d}function R(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?X:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function S(a,b){function c(a){return m(a)?a.map(function(a){return c(a)}):k(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!m(b)||m(b)&&0===b.length)return a;var d,e=A(b),f="********";try{d=JSON.parse(T(a))}catch(g){return a}return c(d)}var T=a(11),U="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},V=3,W=51200,X=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isDOMError:g,isDOMException:h,isUndefined:i,isFunction:j,isPlainObject:k,isString:l,isArray:m,isEmptyObject:n,supportsErrorEvent:o,supportsDOMError:p,supportsDOMException:q,supportsFetch:r,supportsReferrerPolicy:s,supportsPromiseRejectionEvent:t,wrappedCallback:u,each:v,objectMerge:w,truncate:y,objectFrozen:x,hasKey:z,joinRegExp:A,urlencode:B,uuid4:D,htmlTreeAsString:E,htmlElementAsString:F,isSameException:I,isSameStacktrace:J,parseUrl:C,fill:K,safeJoin:L,serializeException:Q,serializeKeysForMessage:R,sanitize:S}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{11:11}],10:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}function e(){return"undefined"==typeof document||null==document.location?"":(document.location.origin||(document.location.origin=document.location.protocol+"//"+document.location.hostname+(document.location.port?":"+document.location.port:"")),document.location.origin)}var f=a(9),g={collectWindowErrors:!0,debug:!1},h="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},i=[].slice,j="?",k=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;g.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function e(a,b){var c=null;if(!b||g.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(i.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,h,i){var l=null,m=f.isErrorEvent(i)?i.error:i,n=f.isErrorEvent(a)?a.message:a;if(v)g.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&f.isError(m))l=g.computeStackTrace(m),e(l,!0);else{var p,r={url:b,line:c,column:h},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(k);p&&(s=p[1],n=p[2])}r.func=j,l={name:s,message:n,url:d(),stack:[r]},e(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=h.onerror,h.onerror=l,r=!0)}function n(){r&&(h.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,e.apply(null,[a,!1].concat(b))}function p(a,b){var c=i.call(arguments,1);if(v){if(u===a)return;o()}var d=g.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),g.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,f,g=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,h=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,i=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,k=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,l=/\((\S*)(?::(\d+))(?::(\d+))\)/,m=a.stack.split("\n"),n=[],o=(/^(.*) is undefined$/.exec(a.message),0),p=m.length;o eval")>-1;r&&(b=k.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==o||c[5]||"undefined"==typeof a.columnNumber||(n[0].column=a.columnNumber+1),f={url:c[3],func:c[1]||j,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}if(!f.func&&f.line&&(f.func=j),f.url&&"blob:"===f.url.substr(0,5)){ +var s=new XMLHttpRequest;if(s.open("GET",f.url,!1),s.send(null),200===s.status){var t=s.responseText||"";t=t.slice(-300);var u=t.match(/\/\/# sourceMappingURL=(.*)$/);if(u){var v=u[1];"~"===v.charAt(0)&&(v=e()+v.slice(1)),f.url=v.slice(0,-4)}}}n.push(f)}return n.length?{name:a.name,message:a.message,url:d(),stack:n}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=j),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,e){for(var h,i,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==f&&o!==g.report){if(i={url:null,func:j,line:null,column:null},o.name?i.func=o.name:(h=k.exec(o.toString()))&&(i.func=h[1]),"undefined"==typeof i.func)try{i.func=h.input.substring(0,h.input.indexOf("{"))}catch(p){}m[""+o]?n=!0:m[""+o]=!0,l.push(i)}e&&l.splice(0,e);var q={name:a.name,message:a.message,url:d(),stack:l};return b(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),q}function f(b,e){var f=null;e=null==e?0:+e;try{if(f=a(b))return f}catch(h){if(g.debug)throw h}try{if(f=c(b,e+1))return f}catch(h){if(g.debug)throw h}return{name:b.name,message:b.message,url:d()}}return f.augmentStackTraceWithInitialElement=b,f.computeStackTraceFromStackProp=a,f}(),b.exports=g}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{9:9}],11:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}],12:[function(a,b,c){function d(a,b){var c=(65535&a)+(65535&b),d=(a>>16)+(b>>16)+(c>>16);return d<<16|65535&c}function e(a,b){return a<>>32-b}function f(a,b,c,f,g,h){return d(e(d(d(b,a),d(f,h)),g),c)}function g(a,b,c,d,e,g,h){return f(b&c|~b&d,a,b,e,g,h)}function h(a,b,c,d,e,g,h){return f(b&d|c&~d,a,b,e,g,h)}function i(a,b,c,d,e,g,h){return f(b^c^d,a,b,e,g,h)}function j(a,b,c,d,e,g,h){return f(c^(b|~d),a,b,e,g,h)}function k(a,b){a[b>>5]|=128<>>9<<4)+14]=b;var c,e,f,k,l,m=1732584193,n=-271733879,o=-1732584194,p=271733878;for(c=0;c>5]>>>b%32&255);return c}function m(a){var b,c=[];for(c[(a.length>>2)-1]=void 0,b=0;b>5]|=(255&a.charCodeAt(b/8))<16&&(e=k(e,8*a.length)),c=0;c<16;c+=1)f[c]=909522486^e[c],g[c]=1549556828^e[c];return d=k(f.concat(m(b)),512+8*b.length),l(k(g.concat(d),640))}function p(a){var b,c,d="0123456789abcdef",e="";for(c=0;c>>4&15)+d.charAt(15&b);return e}function q(a){return unescape(encodeURIComponent(a))}function r(a){return n(q(a))}function s(a){return p(r(a))}function t(a,b){return o(q(a),q(b))}function u(a,b){return p(t(a,b))}function v(a,b,c){return b?c?t(b,a):u(b,a):c?r(a):s(a)}b.exports=v},{}]},{},[8,1,2,3,4])(8)}); +//# sourceMappingURL=raven.min.js.map \ No newline at end of file diff --git a/packages/raven-js/dist/console,ember,require,vue/raven.min.js.map b/packages/raven-js/dist/console,ember,require,vue/raven.min.js.map new file mode 100644 index 000000000000..e3f967c14573 --- /dev/null +++ b/packages/raven-js/dist/console,ember,require,vue/raven.min.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","consolePlugin","console","pluginOptions","logLevels","levels","push","callback","msg","data","captureMessage","level","pop","wrapConsoleMethod","wrapMethod","addPlugin","6","8","2","emberPlugin","Ember","_oldOnError","onerror","error","captureException","RSVP","on","reason","extra","context","3","requirePlugin","wrap","deep","4","formatComponentName","vm","$root","name","_isVue","$options","_componentTag","__file","vuePlugin","Vue","config","errorHandler","info","metaData","Object","prototype","toString","componentName","propsData","lifecycleHook","5","RavenConfigError","message","constructor","utils","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","safeJoin","logger","Function","apply","9","7","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","sanitizeKeys","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isErrorEvent","isDOMError","isDOMException","isError","isObject","isPlainObject","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","sanitize","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","dsn","options","_logDebug","globalOptions","key","value","setDSN","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","substr","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","func","undefined","_before","wrapped","_ignoreNextOnError","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","T","event","unhandledPromiseRejection","B","_promiseRejectionHandler","bind","addEventListener","P","removeEventListener","ex","trimHeadFrames","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","U","currentOptions","exKeys","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","setDataCallback","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","L","setTimeout","$","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","_","evtName","_keypressTimeout","target","category","ba","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","ca","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","C","_originalFunctionToString","Q","D","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","type","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","E","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","R","builtin","S","F","installer","concat","G","str","m","exec","allowSecretKey","J","port","A","V","stackInfo","_triggerEvent","_processException","lineno","X","frame","_normalizeFrame","in_app","ga","stackInfoUrl","normalized","filename","line","colno","column","function","fa","prefixedMessage","exception","values","transaction","ha","request","Referer","breadcrumbs","_trimBreadcrumbs","ia","urlProp","urlProps","ja","httpData","userAgent","User-Agent","referrer","y","_backoffDuration","_backoffStart","ma","na","current","last","oa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Y","baseData","project","platform","_getHttpData","serverName","server_name","_sanitizeData","forEach","random","_sendProcessedPayload","pa","ra","qa","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","sa","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","open","setRequestHeader","send","ta","hash","evaluated","z","Z","setUser","setReleaseContext","10","11","12","RavenConstructor","_Raven","noConflict","Client","what","supportsErrorEvent","ErrorEvent","supportsDOMError","DOMError","supportsDOMException","DOMException","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","wrappedCallback","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","sanitizeMask","safeInput","o_O","getLocationHref","getLocationOrigin","origin","hostname","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","responseText","sourceMaps","sourceMapAddress","charAt","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","string","raw"],"mappings":";CAYA,SAAUA,GAAG,GAAoB,gBAAVC,UAAoC,mBAATC,QAAsBA,OAAOD,QAAQD,QAAS,IAAmB,kBAATG,SAAqBA,OAAOC,IAAKD,UAAUH,OAAO,CAAC,GAAIK,EAAkCA,GAAb,mBAATC,QAAwBA,OAA+B,mBAATC,QAAwBA,OAA6B,mBAAPC,MAAsBA,KAAYC,KAAKJ,EAAEK,MAAQV,MAAO,WAAW,GAAIG,EAAsB,OAAO,SAAUQ,GAAEC,EAAEC,EAAEC,GAAG,QAASC,GAAEC,EAAEC,GAAG,IAAIJ,EAAEG,GAAG,CAAC,IAAIJ,EAAEI,GAAG,CAAC,GAAIE,GAAkB,kBAATC,UAAqBA,OAAQ,KAAIF,GAAGC,EAAE,MAAOA,GAAEF,GAAE,EAAI,IAAGI,EAAE,MAAOA,GAAEJ,GAAE,EAAI,IAAIhB,GAAE,GAAIqB,OAAM,uBAAuBL,EAAE,IAAK,MAAMhB,GAAEsB,KAAK,mBAAmBtB,EAAE,GAAIuB,GAAEV,EAAEG,IAAIf,WAAYW,GAAEI,GAAG,GAAGQ,KAAKD,EAAEtB,QAAQ,SAASU,GAAG,GAAIE,GAAED,EAAEI,GAAG,GAAGL,EAAG,OAAOI,GAAEF,EAAEA,EAAEF,IAAIY,EAAEA,EAAEtB,QAAQU,EAAEC,EAAEC,EAAEC,GAAG,MAAOD,GAAEG,GAAGf,QAAkD,IAAI,GAA1CmB,GAAkB,kBAATD,UAAqBA,QAAgBH,EAAE,EAAEA,EAAEF,EAAEW,OAAOT,IAAID,EAAED,EAAEE,GAAI,OAAOD,KAAKW,GAAG,SAASC,EAAQzB,EAAOD,GAcp0B,QAAS2B,GAAclB,EAAOmB,EAASC,GACrCD,EAAUA,GAAWvB,OAAOuB,YAC5BC,EAAgBA,KAEhB,IAAIC,GAAYD,EAAcE,SAAW,QAAS,OAAQ,OAAQ,QAC9D,WAAYH,IAASE,EAAUE,KAAK,SAOxC,KALA,GAAIC,GAAW,SAASC,EAAKC,GAC3B1B,EAAM2B,eAAeF,EAAKC,IAGxBE,EAAQP,EAAUQ,MACfD,GACLE,EAAkBX,EAASS,EAAOJ,GAClCI,EAAQP,EAAUQ,MAhBtB,GAAIC,GAAoBb,EAAQ,GAAGc,UAoBnCvC,GAAOD,QAAU2B,EAEjBD,EAAQ,GAAGe,UAAUxC,EAAOD,WACzB0C,EAAI,EAAEC,EAAI,IAAIC,GAAG,SAASlB,EAAQzB,EAAOD,GAM5C,QAAS6C,GAAYpC,EAAOqC,GAI1B,GAHAA,EAAQA,GAASzC,OAAOyC,MAGxB,CAEA,GAAIC,GAAcD,EAAME,OACxBF,GAAME,QAAU,SAAsBC,GACpCxC,EAAMyC,iBAAiBD,GACI,kBAAhBF,IACTA,EAAYxB,KAAKf,KAAMyC,IAG3BH,EAAMK,KAAKC,GAAG,QAAS,SAASC,GAC1BA,YAAkBjC,OACpBX,EAAMyC,iBAAiBG,GACrBC,OAAQC,QAAS,sCAGnB9C,EAAM2B,eAAe,oCAAqCkB,OAAQD,OAAQA,QAKhFpD,EAAOD,QAAU6C,EAEjBnB,EAAQ,GAAGe,UAAUxC,EAAOD,WACzB2C,EAAI,IAAIa,GAAG,SAAS9B,EAAQzB,EAAOD,GAOtC,QAASyD,GAAchD,GACC,kBAAXP,IAAyBA,EAAOC,MACzCE,OAAOH,OAASO,EAAMiD,MAAMC,MAAM,GAAQzD,GAC1CG,OAAOa,QAAUT,EAAMiD,MAAMC,MAAM,GAAQjC,IAI/CzB,EAAOD,QAAUyD,EAEjB/B,EAAQ,GAAGe,UAAUxC,EAAOD,WACzB2C,EAAI,IAAIiB,GAAG,SAASlC,EAAQzB,EAAOD,GAMtC,QAAS6D,GAAoBC,GAC3B,GAAIA,EAAGC,QAAUD,EACf,MAAO,eAET,IAAIE,GAAOF,EAAGG,OAASH,EAAGI,SAASF,MAAQF,EAAGI,SAASC,cAAgBL,EAAGE,IAC1E,QACGA,EAAO,cAAgBA,EAAO,IAAM,wBACpCF,EAAGG,QAAUH,EAAGI,SAASE,OAAS,OAASN,EAAGI,SAASE,OAAS,IAIrE,QAASC,GAAU5D,EAAO6D,GAIxB,GAHAA,EAAMA,GAAOjE,OAAOiE,IAGfA,GAAQA,EAAIC,OAAjB,CAEA,GAAIxB,GAAcuB,EAAIC,OAAOC,YAC7BF,GAAIC,OAAOC,aAAe,SAAyBvB,EAAOa,EAAIW,GAC5D,GAAIC,KAGuC,qBAAvCC,OAAOC,UAAUC,SAAStD,KAAKuC,KACjCY,EAASI,cAAgBjB,EAAoBC,GAC7CY,EAASK,UAAYjB,EAAGI,SAASa,WAGf,mBAATN,KACTC,EAASM,cAAgBP,GAG3BhE,EAAMyC,iBAAiBD,GACrBK,MAAOoB,IAGkB,kBAAhB3B,IACTA,EAAYxB,KAAKf,KAAMyC,EAAOa,EAAIW,KAKxCxE,EAAOD,QAAUqE,EAEjB3C,EAAQ,GAAGe,UAAUxC,EAAOD,WACzB2C,EAAI,IAAIsC,GAAG,SAASvD,EAAQzB,EAAOD,GACtC,QAASkF,GAAiBC,GACxB3E,KAAKwD,KAAO,mBACZxD,KAAK2E,QAAUA,EAEjBD,EAAiBN,UAAY,GAAIxD,OACjC8D,EAAiBN,UAAUQ,YAAcF,EAEzCjF,EAAOD,QAAUkF,OAEXxC,GAAG,SAAShB,EAAQzB,EAAOD,GACjC,GAAIqF,GAAQ3D,EAAQ,GAEhBc,EAAa,SAASZ,EAASS,EAAOJ,GACxC,GAAIqD,GAAuB1D,EAAQS,GAC/BkD,EAAkB3D,CAEtB,IAAMS,IAAST,GAAf,CAIA,GAAI4D,GAAwB,SAAVnD,EAAmB,UAAYA,CAEjDT,GAAQS,GAAS,WACf,GAAIoD,MAAUC,MAAMnE,KAAKoE,WAErBzD,EAAMmD,EAAMO,SAASH,EAAM,KAC3BtD,GAAQE,MAAOmD,EAAaK,OAAQ,UAAWvC,OAAQqC,UAAWF,GAExD,YAAVpD,EACEoD,EAAK,MAAO,IAEdvD,EACE,sBAAwBmD,EAAMO,SAASH,EAAKC,MAAM,GAAI,MAAQ,kBAChEvD,EAAKmB,MAAMqC,UAAYF,EAAKC,MAAM,GAClCzD,GAAYA,EAASC,EAAKC,IAG5BF,GAAYA,EAASC,EAAKC,GAIxBmD,GAGFQ,SAASlB,UAAUmB,MAAMxE,KAAK+D,EAAsBC,EAAiBE,KAK3ExF,GAAOD,SACLwC,WAAYA,KAGXwD,EAAI,IAAIC,GAAG,SAASvE,EAAQzB,EAAOD,IACtC,SAAWM,GA4CX,QAAS4F,KACP,OAAQ,GAAIC,MAed,QAASC,GAAqBC,EAAUpE,GACtC,MAAOqE,GAAWrE,GACd,SAASE,GACP,MAAOF,GAASE,EAAMkE,IAExBpE,EAMN,QAASxB,KACPD,KAAK+F,IAA8B,gBAATC,QAAqBA,KAAKC,WAEpDjG,KAAKkG,GAAgBC,EAAYC,GACjCpG,KAAKqG,GAAiBF,EAAYG,GAClCtG,KAAKuG,EAAyB,KAC9BvG,KAAKwG,EAAY,KACjBxG,KAAKyG,EAAe,KACpBzG,KAAK0G,EAAgB,KACrB1G,KAAK2G,EAAa,KAClB3G,KAAK4G,EAAiB,KACtB5G,KAAK6G,KACL7G,KAAK8G,GAEHC,QAASC,EAAQC,gBAAkBD,EAAQC,eAAeC,GAC1D7B,OAAQ,aACR8B,gBACAC,cACAC,iBACAC,gBACAC,QAAS,KACTC,qBAAqB,EACrBC,4BAA4B,EAC5BC,iBAAkB,EAElBC,aAAc,IACdC,gBAAiB,GACjBC,iBAAiB,EACjBC,YAAY,EACZC,WAAY,EACZC,iBAEFhI,KAAKiI,GACHC,OAAQ,OACRC,WAAW,EAKXC,eAAgBC,IAA2B,SAAW,IAExDrI,KAAKsI,EAAiB,EACtBtI,KAAKuI,GAAoB,EACzBvI,KAAKwI,EAAgC5H,MAAMgH,gBAG3C5H,KAAKyI,EAAmBzB,EAAQ5F,YAChCpB,KAAK0I,KACL1I,KAAK2I,KACL3I,KAAK4I,EAAalD,IAClB1F,KAAK6I,KACL7I,KAAK8I,KACL9I,KAAK+I,EAAqB,KAE1B/I,KAAKgJ,EAAYhC,EAAQiC,SACzBjJ,KAAKkJ,EAAYlJ,KAAKgJ,GAAahJ,KAAKgJ,EAAUG,KAClDnJ,KAAKoJ,GAGL,KAAK,GAAIlB,KAAUlI,MAAKyI,EACtBzI,KAAK0I,EAAwBR,GAAUlI,KAAKyI,EAAiBP,GAhIjE,GAAImB,GAAWnI,EAAQ,IACnB+E,EAAY/E,EAAQ,IACpBoI,EAAMpI,EAAQ,IACdwD,EAAmBxD,EAAQ,GAE3B2D,EAAQ3D,EAAQ,GAChBqI,EAAe1E,EAAM0E,aACrBC,EAAa3E,EAAM2E,WACnBC,EAAiB5E,EAAM4E,eACvBC,EAAU7E,EAAM6E,QAChBC,EAAW9E,EAAM8E,SACjBC,EAAgB/E,EAAM+E,cACtBzD,EAActB,EAAMsB,YACpBL,EAAajB,EAAMiB,WACnB+D,EAAWhF,EAAMgF,SACjBC,EAAUjF,EAAMiF,QAChBC,EAAgBlF,EAAMkF,cACtBC,EAAOnF,EAAMmF,KACbC,EAAcpF,EAAMoF,YACpBC,EAAWrF,EAAMqF,SACjBC,EAAetF,EAAMsF,aACrBC,EAASvF,EAAMuF,OACfC,EAAaxF,EAAMwF,WACnBC,EAAYzF,EAAMyF,UAClBC,EAAQ1F,EAAM0F,MACdC,EAAmB3F,EAAM2F,iBACzBC,EAAkB5F,EAAM4F,gBACxBC,EAAmB7F,EAAM6F,iBACzBC,EAAW9F,EAAM8F,SACjBC,EAAO/F,EAAM+F,KACbC,EAAgBhG,EAAMgG,cACtBxC,EAAyBxD,EAAMwD,uBAC/ByC,EAA0BjG,EAAMiG,wBAChCC,EAAqBlG,EAAMkG,mBAC3BC,EAAWnG,EAAMmG,SAEjBjJ,EAAoBb,EAAQ,GAAGc,WAE/BiJ,EAAU,2CAA2CC,MAAM,KAC7DC,EAAa,gEAOXnE,EACgB,mBAAXnH,QACHA,OACkB,mBAAXC,GACLA,EACgB,mBAATC,MACLA,QAENqG,EAAYY,EAAQoE,SACpB9E,EAAaU,EAAQqE,SAmFzBpL,GAAMmE,WAKJkH,QAAS,SAETC,OAAO,EAEPlC,SAAUA,EASVtF,OAAQ,SAASyH,EAAKC,GACpB,GAAI1L,GAAOC,IAEX,IAAID,EAAK2G,EAEP,MADA1G,MAAK0L,EAAU,QAAS,4CACjB3L,CAET,KAAKyL,EAAK,MAAOzL,EAEjB,IAAI4L,GAAgB5L,EAAK+G,CAGrB2E,IACFzB,EAAKyB,EAAS,SAASG,EAAKC,GAEd,SAARD,GAA0B,UAARA,GAA2B,SAARA,EACvC7L,EAAK8G,EAAe+E,GAAOC,EAE3BF,EAAcC,GAAOC,IAK3B9L,EAAK+L,OAAON,GAIZG,EAAcxE,aAAa3F,KAAK,qBAChCmK,EAAcxE,aAAa3F,KAAK,iDAGhCmK,EAAcxE,aAAekD,EAAWsB,EAAcxE,cACtDwE,EAAcvE,aAAauE,EAAcvE,WAAWpG,QAChDqJ,EAAWsB,EAAcvE,YAE7BuE,EAActE,gBAAgBsE,EAActE,cAAcrG,QACtDqJ,EAAWsB,EAActE,eAE7BsE,EAAcrE,aAAe+C,EAAWsB,EAAcrE,cACtDqE,EAAcI,eAAiBC,KAAKC,IAClC,EACAD,KAAKE,IAAIP,EAAcI,gBAAkB,IAAK,KAGhD,IAAII,IACFC,KAAK,EACLhL,SAAS,EACTiL,KAAK,EACLpD,UAAU,EACVqD,QAAQ,GAGNzE,EAAkB8D,EAAc9D,eACM,wBAAnCxD,SAAStD,KAAK8G,GACnBA,EAAkBoC,EAAYkC,EAAwBtE,GAC7CA,KAAoB,IAC7BA,EAAkBsE,GAEpBR,EAAc9D,gBAAkBA,CAEhC,IAAI0E,IACFC,UAAU,GAGR1E,EAAa6D,EAAc7D,UAW/B,OAVqC,uBAA9BzD,SAAStD,KAAK+G,GACnBA,EAAamC,EAAYsC,EAAoBzE,GACpCA,KAAe,IACxBA,EAAayE,GAEfZ,EAAc7D,WAAaA,EAE3BuB,EAAS7B,sBAAwBmE,EAAcnE,oBAGxCzH,GAWT0M,QAAS,WACP,GAAI1M,GAAOC,IAyBX,OAxBID,GAAK2M,YAAc3M,EAAKwI,IAC1Bc,EAASsD,OAAOC,UAAU,WACxB7M,EAAK8M,EAAwBtH,MAAMxF,EAAMoF,aAGvCpF,EAAK+G,EAAeW,4BACtB1H,EAAK+M,IAGP/M,EAAKgN,IAEDhN,EAAK+G,EAAegB,YAAc/H,EAAK+G,EAAegB,WAAW0E,UACnEzM,EAAKiN,IAGHjN,EAAK+G,EAAee,iBAAiB9H,EAAKkN,IAG9ClN,EAAKmN,IAELnN,EAAKwI,GAAoB,GAG3B3H,MAAMgH,gBAAkB7H,EAAK+G,EAAec,gBACrC5H,MAQT8L,OAAQ,SAASN,GACf,GAAIzL,GAAOC,KACTmN,EAAMpN,EAAKqN,EAAU5B,GACrB6B,EAAYF,EAAIG,KAAKC,YAAY,KACjCD,EAAOH,EAAIG,KAAKE,OAAO,EAAGH,EAE5BtN,GAAK0N,EAAOjC,EACZzL,EAAK4G,EAAawG,EAAIO,KACtB3N,EAAK4N,EAAgBR,EAAIS,MAAQT,EAAIS,KAAKJ,OAAO,GACjDzN,EAAK6G,EAAiBuG,EAAIG,KAAKE,OAAOH,EAAY,GAElDtN,EAAK2G,EAAgB3G,EAAK8N,EAAiBV,GAE3CpN,EAAK+N,EACH/N,EAAK2G,EAAgB,IAAM4G,EAAO,OAASvN,EAAK6G,EAAiB,UAInE5G,KAAKoJ,KAWPrG,QAAS,SAAS0I,EAASsC,EAAM9I,GAO/B,MANIa,GAAW2F,KACbxG,EAAO8I,MACPA,EAAOtC,EACPA,EAAUuC,QAGLhO,KAAKkD,KAAKuI,EAASsC,GAAMxI,MAAMvF,KAAMiF,IAW9C/B,KAAM,SAASuI,EAASsC,EAAME,GAqC5B,QAASC,KACP,GAAIjJ,MACFtE,EAAIwE,UAAUnE,OACdmC,GAAQsI,GAAYA,GAAWA,EAAQtI,QAAS,CAQlD,KANI8K,GAAWnI,EAAWmI,IACxBA,EAAQ1I,MAAMvF,KAAMmF,WAKfxE,KAAKsE,EAAKtE,GAAKwC,EAAOpD,EAAKmD,KAAKuI,EAAStG,UAAUxE,IAAMwE,UAAUxE,EAE1E,KAKE,MAAOoN,GAAKxI,MAAMvF,KAAMiF,GACxB,MAAO/E,GAGP,KAFAH,GAAKoO,IACLpO,EAAK2C,iBAAiBxC,EAAGuL,GACnBvL,GA1DV,GAAIH,GAAOC,IAGX,IAAImG,EAAY4H,KAAUjI,EAAW2F,GACnC,MAAOA,EAWT,IAPI3F,EAAW2F,KACbsC,EAAOtC,EACPA,EAAUuC,SAKPlI,EAAWiI,GACd,MAAOA,EAIT,KACE,GAAIA,EAAKK,EACP,MAAOL,EAIT,IAAIA,EAAKM,EACP,MAAON,GAAKM,EAEd,MAAOnO,GAIP,MAAO6N,GA8BT,IAAK,GAAIO,KAAYP,GACf3D,EAAO2D,EAAMO,KACfJ,EAAQI,GAAYP,EAAKO,GAW7B,OARAJ,GAAQ9J,UAAY2J,EAAK3J,UAEzB2J,EAAKM,EAAoBH,EAGzBA,EAAQE,GAAY,EACpBF,EAAQK,EAAWR,EAEZG,GAQTM,UAAW,WAWT,MAVAnF,GAASsD,OAAO6B,YAEhBxO,KAAKyO,IACLzO,KAAK0O,IACL1O,KAAK2O,IACL3O,KAAK4O,IAELhO,MAAMgH,gBAAkB5H,KAAKwI,EAC7BxI,KAAKuI,GAAoB,EAElBvI,MAWT6O,EAA0B,SAASC,GACjC9O,KAAK0L,EAAU,QAAS,4CAA6CoD,GACrE9O,KAAK0C,iBAAiBoM,EAAMjM,QAC1BC,OACEiM,2BAA2B,MAUjCC,EAAgC,WAI9B,MAHAhP,MAAKiP,EAA2BjP,KAAKiP,EAAyBC,KAAKlP,MACnEgH,EAAQmI,kBACNnI,EAAQmI,iBAAiB,qBAAsBnP,KAAKiP,GAC/CjP,MAQToP,EAAgC,WAG9B,MAFApI,GAAQqI,qBACNrI,EAAQqI,oBAAoB,qBAAsBrP,KAAKiP,GAClDjP,MAUT0C,iBAAkB,SAAS4M,EAAI7D,GAG7B,GAFAA,EAAUxB,GAAasF,eAAgB,GAAI9D,EAAUA,MAEjDlC,EAAa+F,IAAOA,EAAG7M,MAEzB6M,EAAKA,EAAG7M,UACH,CAAA,GAAI+G,EAAW8F,IAAO7F,EAAe6F,GAAK,CAK/C,GAAI9L,GAAO8L,EAAG9L,OAASgG,EAAW8F,GAAM,WAAa,gBACjD3K,EAAU2K,EAAG3K,QAAUnB,EAAO,KAAO8L,EAAG3K,QAAUnB,CAEtD,OAAOxD,MAAK4B,eACV+C,EACAsF,EAAYwB,GAGV+D,YAAY,EACZD,eAAgB9D,EAAQ8D,eAAiB,KAGxC,GAAI7F,EAAQ4F,GAEjBA,EAAKA,MACA,CAAA,IAAI1F,EAAc0F,GAavB,MAAOtP,MAAK4B,eACV0N,EACArF,EAAYwB,GACV+D,YAAY,EACZD,eAAgB9D,EAAQ8D,eAAiB,IAb7C9D,GAAUzL,KAAKyP,EAA2ChE,EAAS6D,GACnEA,EAAK,GAAI1O,OAAM6K,EAAQ9G,UAkBzB3E,KAAKuG,EAAyB+I,CAO9B,KACE,GAAII,GAAQrG,EAASsG,kBAAkBL,EACvCtP,MAAK4P,EAAiBF,EAAOjE,GAC7B,MAAOoE,GACP,GAAIP,IAAOO,EACT,KAAMA,GAIV,MAAO7P,OAGT8P,EAA4C,SAASC,EAAgBT,GACnE,GAAIU,GAAS7L,OAAO8L,KAAKX,GAAIY,OACzBzE,EAAUxB,EAAY8F,GACxBpL,QACE,2CAA6CmG,EAAwBkF,GACvEG,aAAc7G,EAAI0G,IAClBlN,MAAOiN,EAAejN,WAIxB,OAFA2I,GAAQ3I,MAAMsN,EAAiBrF,EAAmBuE,GAE3C7D,GAUT7J,eAAgB,SAASF,EAAK+J,GAI5B,IACIzL,KAAK8G,EAAeK,aAAakJ,OACnCrQ,KAAK8G,EAAeK,aAAakJ,KAAK3O,GAFxC,CAOA+J,EAAUA,MACV/J,GAAY,EAEZ,IAOI4N,GAPA3N,EAAOsI,GAEPtF,QAASjD,GAEX+J,EAQF,KACE,KAAM,IAAI7K,OAAMc,GAChB,MAAOmO,GACPP,EAAKO,EAIPP,EAAG9L,KAAO,IACV,IAAIkM,GAAQrG,EAASsG,kBAAkBL,GAGnCgB,EAAcxG,EAAQ4F,EAAMA,QAAUA,EAAMA,MAAM,EAKlDY,IAAoC,2BAArBA,EAAYvC,OAC7BuC,EAAcZ,EAAMA,MAAM,GAG5B,IAAIa,GAAWD,GAAeA,EAAYE,KAAQ,EAElD,MACIxQ,KAAK8G,EAAeM,WAAWiJ,OACjCrQ,KAAK8G,EAAeM,WAAWiJ,KAAKE,OAMlCvQ,KAAK8G,EAAeO,cAAcgJ,MACnCrQ,KAAK8G,EAAeO,cAAcgJ,KAAKE,IAF1C,CAOA,GAAIvQ,KAAK8G,EAAe0I,YAAe/D,GAAWA,EAAQ+D,WAAa,CAErE7N,EAAKwO,YAAkC,MAApBxO,EAAKwO,YAAsBzO,EAAMC,EAAKwO,YAEzD1E,EAAUxB,GAENsF,eAAgB,GAElB9D,GAMFA,EAAQ8D,gBAAkB,CAE1B,IAAIkB,GAASzQ,KAAK0Q,EAAehB,EAAOjE,EACxC9J,GAAK6N,YAEHiB,OAAQA,EAAOE,WAcnB,MATIhP,GAAKwO,cACPxO,EAAKwO,YAAcrG,EAAQnI,EAAKwO,aAC5BxO,EAAKwO,aACJxO,EAAKwO,cAIZnQ,KAAK4Q,EAAMjP,GAEJ3B,QAGT6Q,kBAAmB,SAASC,GAC1B,GAAIC,GAAQ9G,GAER+G,UAAWtL,IAAQ,KAErBoL,EAGF,IAAIhL,EAAW9F,KAAK8G,EAAemK,oBAAqB,CACtD,GAAIC,GAASlR,KAAK8G,EAAemK,mBAAmBF,EAEpD,IAAIpH,EAASuH,KAAYnH,EAAcmH,GACrCH,EAAQG,MACH,IAAIA,KAAW,EACpB,MAAOlR,MAQX,MAJAA,MAAK8I,EAAatH,KAAKuP,GACnB/Q,KAAK8I,EAAa9H,OAAShB,KAAK8G,EAAeiF,gBACjD/L,KAAK8I,EAAaqI,QAEbnR,MAGTiC,UAAW,SAASmP,GAClB,GAAIC,MAAgBnM,MAAMnE,KAAKoE,UAAW,EAO1C,OALAnF,MAAK2I,EAASnH,MAAM4P,EAAQC,IACxBrR,KAAKuI,GACPvI,KAAKkN,IAGAlN,MASTsR,eAAgB,SAAS5D,GAIvB,MAFA1N,MAAK6G,EAAe6G,KAAOA,EAEpB1N,MASTuR,gBAAiB,SAASzO,GAGxB,MAFA9C,MAAKwR,EAAc,QAAS1O,GAErB9C,MASTyR,eAAgB,SAASC,GAGvB,MAFA1R,MAAKwR,EAAc,OAAQE,GAEpB1R,MAQT2R,aAAc,WAGZ,MAFA3R,MAAK6G,KAEE7G,MAQT4R,WAAY,WAEV,MAAO5L,MAAK6L,MAAM5L,EAAUjG,KAAK6G,KASnCiL,eAAgB,SAASC,GAGvB,MAFA/R,MAAK8G,EAAeiL,YAAcA,EAE3B/R,MASTgS,WAAY,SAASjL,GAGnB,MAFA/G,MAAK8G,EAAeC,QAAUA,EAEvB/G,MAUTiS,gBAAiB,SAASxQ,GACxB,GAAIoE,GAAW7F,KAAK8G,EAAeoL,YAEnC,OADAlS,MAAK8G,EAAeoL,aAAetM,EAAqBC,EAAUpE,GAC3DzB,MAUTmS,sBAAuB,SAAS1Q,GAC9B,GAAIoE,GAAW7F,KAAK8G,EAAemK,kBAEnC,OADAjR,MAAK8G,EAAemK,mBAAqBrL,EAAqBC,EAAUpE,GACjEzB,MAUToS,sBAAuB,SAAS3Q,GAC9B,GAAIoE,GAAW7F,KAAK8G,EAAeuL,kBAEnC,OADArS,MAAK8G,EAAeuL,mBAAqBzM,EAAqBC,EAAUpE,GACjEzB,MAYTsS,aAAc,SAASC,GAGrB,MAFAvS,MAAK8G,EAAeyL,UAAYA,EAEzBvS,MAQTwS,cAAe,WACb,MAAOxS,MAAKuG,GAQdkM,YAAa,WACX,MAAOzS,MAAKyG,GAQdiG,QAAS,WACP,QAAK1M,KAAK+F,MACL/F,KAAK0G,IACH1G,KAAK0S,0BACR1S,KAAK0S,yBAA0B,EAC/B1S,KAAK0L,EAAU,QAAS,2CAEnB,KAKXiH,UAAW,WAIT,GAAIC,GAAc5L,EAAQ4L,WACtBA,IACF5S,KAAK+D,OAAO6O,EAAYpH,IAAKoH,EAAY7O,QAAQ0I,WAIrDoG,iBAAkB,SAASpH,GACzB,GACGrF,EADH,CAKAqF,EAAUA,KAEV,IAAIgH,GAAchH,EAAQqH,SAAW9S,KAAKyS,aAC1C,KAAKA,EACH,KAAM,IAAI/N,GAAiB,kBAG7B,IAAI8G,GAAMC,EAAQD,KAAOxL,KAAKyN,CAC9B,KAAKjC,EACH,KAAM,IAAI9G,GAAiB,cAG7B,IAAIqO,GAASC,mBACTC,EAAK,EACTA,IAAM,YAAcF,EAAON,GAC3BQ,GAAM,QAAUF,EAAOvH,EAEvB,IAAIkC,GAAOjC,EAAQiC,MAAQ1N,KAAK6G,EAAe6G,IAC3CA,KACEA,EAAKlK,OAAMyP,GAAM,SAAWF,EAAOrF,EAAKlK,OACxCkK,EAAKwF,QAAOD,GAAM,UAAYF,EAAOrF,EAAKwF,QAGhD,IAAIC,GAAenT,KAAK6N,EAAiB7N,KAAKoN,EAAU5B,IAEpD4H,EAAShN,EAAUiN,cAAc,SACrCD,GAAOE,OAAQ,EACfF,EAAOG,IAAMJ,EAAe,yBAA2BF,GACtD7M,EAAUoN,MAAQpN,EAAUqN,MAAMC,YAAYN,KAIjDO,EAAoB,WAClB,GAAI5T,GAAOC,IACXA,MAAKsI,GAAkB,EACvBsL,WAAW,WAET7T,EAAKuI,GAAkB,KAI3BuL,EAAe,SAASC,EAAWrI,GAEjC,GAAIsI,GAAKnI,CAET,IAAK5L,KAAKkG,EAAV,CAEAuF,EAAUA,MAEVqI,EAAY,QAAUA,EAAUtG,OAAO,EAAG,GAAGwG,cAAgBF,EAAUtG,OAAO,GAE1EpH,EAAU6N,aACZF,EAAM3N,EAAU6N,YAAY,cAC5BF,EAAIG,UAAUJ,GAAW,GAAM,KAE/BC,EAAM3N,EAAU+N,oBAChBJ,EAAID,UAAYA,EAGlB,KAAKlI,IAAOH,GACNrB,EAAOqB,EAASG,KAClBmI,EAAInI,GAAOH,EAAQG,GAGvB,IAAIxF,EAAU6N,YAEZ7N,EAAUgO,cAAcL,OAIxB,KACE3N,EAAUiO,UAAU,KAAON,EAAID,UAAUQ,cAAeP,GACxD,MAAO7T,OAYbqU,EAAyB,SAASC,GAChC,GAAIzU,GAAOC,IACX,OAAO,UAAS+T,GASd,GALAhU,EAAK0U,GAAmB,KAKpB1U,EAAKgJ,IAAuBgL,EAAhC,CAEAhU,EAAKgJ,EAAqBgL,CAM1B,IAAIW,EACJ,KACEA,EAASlK,EAAiBuJ,EAAIW,QAC9B,MAAOxU,GACPwU,EAAS,YAGX3U,EAAK8Q,mBACH8D,SAAU,MAAQH,EAClB7P,QAAS+P,OAUfE,GAAuB,WACrB,GAAI7U,GAAOC,KACT6U,EAAmB,GAKrB,OAAO,UAASd,GACd,GAAIW,EACJ,KACEA,EAASX,EAAIW,OACb,MAAOxU,GAGP,OAEF,GAAI4U,GAAUJ,GAAUA,EAAOI,OAK/B,IACGA,IACY,UAAZA,GAAmC,aAAZA,GAA2BJ,EAAOK,mBAF5D,CAQA,GAAIC,GAAUjV,EAAK0U,EACdO,IACHjV,EAAKkV,EAAwB,SAASlB,GAExCmB,aAAaF,GACbjV,EAAK0U,GAAmBb,WAAW,WACjC7T,EAAK0U,GAAmB,MACvBI,MAUPM,GAAmB,SAASC,EAAMC,GAChC,GAAIC,GAAY3K,EAAS3K,KAAKgJ,EAAUG,MACpCoM,EAAW5K,EAAS0K,GACpBG,EAAa7K,EAASyK,EAK1BpV,MAAKkJ,EAAYmM,EAIbC,EAAUG,WAAaF,EAASE,UAAYH,EAAUI,OAASH,EAASG,OAC1EL,EAAKE,EAASI,UACZL,EAAUG,WAAaD,EAAWC,UAAYH,EAAUI,OAASF,EAAWE,OAC9EN,EAAOI,EAAWG,UAEpB3V,KAAK6Q,mBACH8D,SAAU,aACVhT,MACE0T,GAAIA,EACJD,KAAMA,MAKZQ,EAAwB,WACtB,GAAI7V,GAAOC,IACXD,GAAK8V,GAA4BvQ,SAASlB,UAAUC,SAEpDiB,SAASlB,UAAUC,SAAW,WAC5B,MAAoB,kBAATrE,OAAuBA,KAAKoO,EAC9BrO,EAAK8V,GAA0BtQ,MAAMvF,KAAKuO,EAAUpJ,WAEtDpF,EAAK8V,GAA0BtQ,MAAMvF,KAAMmF,aAItD2Q,EAA0B,WACpB9V,KAAK6V,KAEPvQ,SAASlB,UAAUC,SAAWrE,KAAK6V,KAQvCE,EAAqB,WAKnB,QAASC,GAAWC,GAClB,MAAO,UAASC,EAAI/V,GAKlB,IAAK,GADD8E,GAAO,GAAIkR,OAAMhR,UAAUnE,QACtBL,EAAI,EAAGA,EAAIsE,EAAKjE,SAAUL,EACjCsE,EAAKtE,GAAKwE,UAAUxE,EAEtB,IAAIyV,GAAmBnR,EAAK,EAQ5B,OAPIa,GAAWsQ,KACbnR,EAAK,GAAKlF,EAAKmD,KAAKkT,IAMlBH,EAAK1Q,MACA0Q,EAAK1Q,MAAMvF,KAAMiF,GAEjBgR,EAAKhR,EAAK,GAAIA,EAAK,KAOhC,QAASoR,GAAgBvW,GACvB,GAAIwW,GAAQtP,EAAQlH,IAAWkH,EAAQlH,GAAQsE,SAC3CkS,IAASA,EAAMC,gBAAkBD,EAAMC,eAAe,sBACxD3L,EACE0L,EACA,mBACA,SAASL,GACP,MAAO,UAASzB,EAAS0B,EAAIM,EAASC,GAEpC,IACMP,GAAMA,EAAGQ,cACXR,EAAGQ,YAAc3W,EAAKmD,KAAKgT,EAAGQ,cAEhC,MAAOC,IAMT,GAAIC,GAAQC,EAAcC,CA6B1B,OA1BEjP,IACAA,EAAgBwE,MACJ,gBAAXvM,GAAuC,SAAXA,KAI7B+W,EAAe9W,EAAKkV,EAAwB,SAC5C6B,EAAkB/W,EAAKgX,KACvBH,EAAS,SAAS7C,GAIhB,GAAKA,EAAL,CAEA,GAAID,EACJ,KACEA,EAAYC,EAAIiD,KAChB,MAAO9W,GAGP,OAEF,MAAkB,UAAd4T,EAA8B+C,EAAa9C,GACxB,aAAdD,EAAiCgD,EAAgB/C,GAArD,UAGFkC,EAAKlV,KACVf,KACAwU,EACAzU,EAAKmD,KAAKgT,EAAIlI,OAAW4I,GACzBJ,EACAC,KAINQ,GAEFrM,EACE0L,EACA,sBACA,SAASL,GACP,MAAO,UAASlC,EAAKmC,EAAIM,EAASC,GAChC,IACEP,EAAKA,IAAOA,EAAG7H,EAAoB6H,EAAG7H,EAAoB6H,GAC1D,MAAOhW,IAGT,MAAO+V,GAAKlV,KAAKf,KAAM+T,EAAKmC,EAAIM,EAASC,KAG7CQ,IAvGN,GAAIlX,GAAOC,KAEPiX,EAAkBlX,EAAK8I,EA2BvBhB,EAAkB7H,KAAK8G,EAAee,eA+E1C+C,GAAK5D,EAAS,aAAcgP,EAAYiB,GACxCrM,EAAK5D,EAAS,cAAegP,EAAYiB,GACrCjQ,EAAQkQ,uBACVtM,EACE5D,EACA,wBACA,SAASiP,GACP,MAAO,UAASkB,GACd,MAAOlB,GAAKlW,EAAKmD,KAAKiU,MAG1BF,EAqCJ,KAAK,GA/BDG,IACF,cACA,SACA,OACA,mBACA,iBACA,oBACA,kBACA,cACA,aACA,qBACA,cACA,aACA,iBACA,eACA,kBACA,cACA,cACA,eACA,qBACA,SACA,YACA,eACA,gBACA,YACA,kBACA,SACA,iBACA,4BACA,wBAEOzW,EAAI,EAAGA,EAAIyW,EAAapW,OAAQL,IACvC0V,EAAgBe,EAAazW,KAajC0W,EAAwB,WAMtB,QAASC,GAASC,EAAMnL,GAClBmL,IAAQnL,IAAOtG,EAAWsG,EAAImL,KAChC3M,EAAKwB,EAAKmL,EAAM,SAAStB,GACvB,MAAOlW,GAAKmD,KAAK+S,KARvB,GAAIlW,GAAOC,KACP6H,EAAkB7H,KAAK8G,EAAee,gBAEtCoP,EAAkBlX,EAAK8I,CAU3B,IAAIhB,EAAgBuE,KAAO,kBAAoBpF,GAAS,CACtD,GAAIwQ,GAAWxQ,EAAQyQ,gBAAkBzQ,EAAQyQ,eAAerT,SAChEwG,GACE4M,EACA,OACA,SAASE,GACP,MAAO,UAASxP,EAAQsI,GAYtB,MARI3G,GAAS2G,IAAQA,EAAImH,QAAQ5X,EAAK4G,UACpC3G,KAAK4X,IACH1P,OAAQA,EACRsI,IAAKA,EACLqH,YAAa,OAIVH,EAASnS,MAAMvF,KAAMmF,aAGhC8R,GAGFrM,EACE4M,EACA,OACA,SAASM,GACP,MAAO,YAIL,QAASC,KACP,GAAI3L,EAAIwL,IAAkC,IAAnBxL,EAAI4L,WAAkB,CAC3C,IAGE5L,EAAIwL,GAAYC,YAAczL,EAAI6L,OAClC,MAAO/X,IAITH,EAAK8Q,mBACHmG,KAAM,OACNrC,SAAU,MACVhT,KAAMyK,EAAIwL,MAMhB,IAAK,GArBDxL,GAAMpM,KAoBNkY,GAAS,SAAU,UAAW,cACzBC,EAAI,EAAGA,EAAID,EAAMlX,OAAQmX,IAChCb,EAASY,EAAMC,GAAI/L,EAiBrB,OAdI,sBAAwBA,IAAOtG,EAAWsG,EAAIgM,oBAChDxN,EACEwB,EACA,qBACA,SAAS6J,GACP,MAAOlW,GAAKmD,KAAK+S,EAAMjI,OAAW+J,KAMtC3L,EAAIgM,mBAAqBL,EAGpBD,EAASvS,MAAMvF,KAAMmF,aAGhC8R,GAIApP,EAAgBuE,KAAOvB,KACzBD,EACE5D,EACA,QACA,SAASqR,GACP,MAAO,YAKL,IAAK,GADDpT,GAAO,GAAIkR,OAAMhR,UAAUnE,QACtBL,EAAI,EAAGA,EAAIsE,EAAKjE,SAAUL,EACjCsE,EAAKtE,GAAKwE,UAAUxE,EAGtB,IAEI6P,GAFA8H,EAAarT,EAAK,GAClBiD,EAAS,KAeb,IAZ0B,gBAAfoQ,GACT9H,EAAM8H,EACG,WAAatR,IAAWsR,YAAsBtR,GAAQuR,SAC/D/H,EAAM8H,EAAW9H,IACb8H,EAAWpQ,SACbA,EAASoQ,EAAWpQ,SAGtBsI,EAAM,GAAK8H,EAIT9H,EAAImH,QAAQ5X,EAAK4G,QACnB,MAAO0R,GAAU9S,MAAMvF,KAAMiF,EAG3BA,GAAK,IAAMA,EAAK,GAAGiD,SACrBA,EAASjD,EAAK,GAAGiD,OAGnB,IAAIsQ,IACFtQ,OAAQA,EACRsI,IAAKA,EACLqH,YAAa,KAGf,OAAOQ,GACJ9S,MAAMvF,KAAMiF,GACZwT,KAAK,SAASC,GASb,MARAF,GAAUX,YAAca,EAAST,OAEjClY,EAAK8Q,mBACHmG,KAAM,OACNrC,SAAU,QACVhT,KAAM6W,IAGDE,IAER,SAAS,SAAS/B,GASjB,KAPA5W,GAAK8Q,mBACHmG,KAAM,OACNrC,SAAU,QACVhT,KAAM6W,EACN3W,MAAO,UAGH8U,MAIdM,GAMApP,EAAgBwE,KAAOrM,KAAKkG,IAC1BE,EAAU+I,kBACZ/I,EAAU+I,iBAAiB,QAASpP,EAAKkV,EAAwB,UAAU,GAC3E7O,EAAU+I,iBAAiB,WAAYpP,EAAKgX,MAAyB,IAC5D3Q,EAAUuS,cAEnBvS,EAAUuS,YAAY,UAAW5Y,EAAKkV,EAAwB,UAC9D7O,EAAUuS,YAAY,aAAc5Y,EAAKgX,OAQ7C,IAAI6B,GAAS5R,EAAQ4R,OACjBC,EAAsBD,GAAUA,EAAOE,KAAOF,EAAOE,IAAIC,QACzDC,GACDH,GACD7R,EAAQiS,SACRjS,EAAQiS,QAAQC,WAChBlS,EAAQiS,QAAQE,YAClB,IAAItR,EAAgBoB,UAAY+P,EAAwB,CAEtD,GAAII,GAAgBpS,EAAQqS,UAC5BrS,GAAQqS,WAAa,WACnB,GAAIC,GAAcvZ,EAAKiJ,EAAUG,IAGjC,IAFApJ,EAAKwZ,GAAkBxZ,EAAKmJ,EAAWoQ,GAEnCF,EACF,MAAOA,GAAc7T,MAAMvF,KAAMmF,WAIrC,IAAIqU,GAA6B,SAASC,GAGxC,MAAO,YACL,GAAIjJ,GAAMrL,UAAUnE,OAAS,EAAImE,UAAU,GAAK6I,MAQhD,OALIwC,IAEFzQ,EAAKwZ,GAAkBxZ,EAAKmJ,EAAWsH,EAAM,IAGxCiJ,EAAiBlU,MAAMvF,KAAMmF,YAIxCyF,GAAK5D,EAAQiS,QAAS,YAAaO,EAA4BvC,GAC/DrM,EAAK5D,EAAQiS,QAAS,eAAgBO,EAA4BvC,GAGpE,GAAIpP,EAAgBzG,SAAW,WAAa4F,IAAW5F,QAAQsY,IAAK,CAElE,GAAIC,GAAwB,SAASjY,EAAKC,GACxC5B,EAAK8Q,mBACHlM,QAASjD,EACTG,MAAOF,EAAKE,MACZ8S,SAAU,YAId3K,IAAM,QAAS,OAAQ,OAAQ,QAAS,OAAQ,SAASuK,EAAG1S,GAC1DE,EAAkBX,QAASS,EAAO8X,OAKxCC,EAAkB,WAGhB,IADA,GAAIC,GACG7Z,KAAK6I,EAAiB7H,QAAQ,CACnC6Y,EAAU7Z,KAAK6I,EAAiBsI,OAEhC,IAAIL,GAAM+I,EAAQ,GAChBrW,EAAOqW,EAAQ,GACf5D,EAAO4D,EAAQ,EAEjB/I,GAAItN,GAAQyS,IAIhB6D,EAAiB,WAEf,IAAK,GAAI5R,KAAUlI,MAAK0I,EACtB1I,KAAKyI,EAAiBP,GAAUlI,KAAK0I,EAAwBR,IAIjE6R,EAAe,WACb,GAAIha,GAAOC,IAGXgK,GAAKhK,KAAK2I,EAAU,SAAS4L,EAAGnD,GAC9B,GAAI4I,GAAY5I,EAAO,GACnBnM,EAAOmM,EAAO,EAClB4I,GAAUzU,MAAMxF,GAAOA,GAAMka,OAAOhV,OAIxCiV,EAAW,SAASC,GAClB,GAAIC,GAAIjP,EAAWkP,KAAKF,GACtB3O,KACA7K,EAAI,CAEN,KACE,KAAOA,KAAK6K,EAAIP,EAAQtK,IAAMyZ,EAAEzZ,IAAM,GACtC,MAAOT,GACP,KAAM,IAAIwE,GAAiB,gBAAkByV,GAG/C,GAAI3O,EAAIoC,OAAS5N,KAAK8G,EAAewT,eACnC,KAAM,IAAI5V,GACR,iFAIJ,OAAO8G,IAGT+O,EAAkB,SAASpN,GAEzB,GAAIgG,GAAe,KAAOhG,EAAIuI,MAAQvI,EAAIqN,KAAO,IAAMrN,EAAIqN,KAAO,GAKlE,OAHIrN,GAAIsI,WACNtC,EAAehG,EAAIsI,SAAW,IAAMtC,GAE/BA,GAGTsH,EAAyB,WAElBza,KAAKsI,GACRtI,KAAK4P,EAAiBrK,MAAMvF,KAAMmF,YAItCuV,EAAkB,SAASC,EAAWlP,GACpC,GAAIgF,GAASzQ,KAAK0Q,EAAeiK,EAAWlP,EAE5CzL,MAAK4a,EAAc,UACjBD,UAAWA,EACXlP,QAASA,IAGXzL,KAAK6a,GACHF,EAAUnX,KACVmX,EAAUhW,QACVgW,EAAUnK,IACVmK,EAAUG,OACVrK,EACAhF,IAIJsP,EAAgB,SAASJ,EAAWlP,GAClC,GAAI1L,GAAOC,KACPyQ,IACJ,IAAIkK,EAAUjL,OAASiL,EAAUjL,MAAM1O,SACrCgJ,EAAK2Q,EAAUjL,MAAO,SAAS/O,EAAG+O,GAChC,GAAIsL,GAAQjb,EAAKkb,GAAgBvL,EAAOiL,EAAUnK,IAC9CwK,IACFvK,EAAOjP,KAAKwZ,KAKZvP,GAAWA,EAAQ8D,gBACrB,IAAK,GAAI4I,GAAI,EAAGA,EAAI1M,EAAQ8D,gBAAkB4I,EAAI1H,EAAOzP,OAAQmX,IAC/D1H,EAAO0H,GAAG+C,QAAS,CAKzB,OADAzK,GAASA,EAAOvL,MAAM,EAAGlF,KAAK8G,EAAec,kBAI/CuT,GAAiB,SAASH,EAAOI,GAE/B,GAAIC,IACFC,SAAUN,EAAMxK,IAChBsK,OAAQE,EAAMO,KACdC,MAAOR,EAAMS,OACbC,WAAUV,EAAMjN,MAAQ,IAuB1B,OAfKiN,GAAMxK,MACT6K,EAAWC,SAAWF,GAGxBC,EAAWH,SAGNlb,KAAK8G,EAAeQ,aAAa+I,OACjCrQ,KAAK8G,EAAeQ,aAAa+I,KAAKgL,EAAWC,WAEpD,qBAAqBjL,KAAKgL,EAAW,cAErC,qBAAqBhL,KAAKgL,EAAWC,WAGhCD,GAGTM,GAAmB,SAAS3E,EAAMrS,EAAS4L,EAASuK,EAAQrK,EAAQhF,GAClE,GAAImQ,IAAmB5E,EAAOA,EAAO,KAAO,KAAOrS,GAAW,GAC9D,KACI3E,KAAK8G,EAAeK,aAAakJ,OAClCrQ,KAAK8G,EAAeK,aAAakJ,KAAK1L,KACrC3E,KAAK8G,EAAeK,aAAakJ,KAAKuL,GAH1C,CAQA,GAAIpM,EAoBJ,IAlBIiB,GAAUA,EAAOzP,QACnBuP,EAAUE,EAAO,GAAG6K,UAAY/K,EAGhCE,EAAOE,UACPnB,GAAciB,OAAQA,IACbF,IACTf,GACEiB,SAEI6K,SAAU/K,EACVuK,OAAQA,EACRI,QAAQ,QAOZlb,KAAK8G,EAAeM,WAAWiJ,OACjCrQ,KAAK8G,EAAeM,WAAWiJ,KAAKE,OAMlCvQ,KAAK8G,EAAeO,cAAcgJ,MACnCrQ,KAAK8G,EAAeO,cAAcgJ,KAAKE,IAF1C,CAOA,GAAI5O,GAAOsI,GAGP4R,WACEC,SAEI9E,KAAMA,EACNnL,MAAOlH,EACP6K,WAAYA,KAIlBuM,YAAaxL,GAEf9E,EAIFzL,MAAK4Q,EAAMjP,MAGbqa,GAAa,SAASra,GAGpB,GAAIsK,GAAMjM,KAAK8G,EAAeY,gBAI9B,IAHI/F,EAAKgD,UACPhD,EAAKgD,QAAUuF,EAASvI,EAAKgD,QAASsH,IAEpCtK,EAAKka,UAAW,CAClB,GAAIA,GAAYla,EAAKka,UAAUC,OAAO,EACtCD,GAAUhQ,MAAQ3B,EAAS2R,EAAUhQ,MAAOI,GAG9C,GAAIgQ,GAAUta,EAAKsa,OAanB,OAZIA,KACEA,EAAQzL,MACVyL,EAAQzL,IAAMtG,EAAS+R,EAAQzL,IAAKxQ,KAAK8G,EAAea,eAEtDsU,EAAQC,UACVD,EAAQC,QAAUhS,EAAS+R,EAAQC,QAASlc,KAAK8G,EAAea,gBAIhEhG,EAAKwa,aAAexa,EAAKwa,YAAYL,QACvC9b,KAAKoc,GAAiBza,EAAKwa,aAEtBxa,GAMT0a,GAAkB,SAASF,GAQzB,IAAK,GAJHG,GACAvL,EACApP,EAHE4a,GAAY,KAAM,OAAQ,OAKrB5b,EAAI,EAAGA,EAAIwb,EAAYL,OAAO9a,SAAUL,EAE/C,GADAoQ,EAAQoL,EAAYL,OAAOnb,GAExBoQ,EAAMwF,eAAe,SACrB5M,EAASoH,EAAMpP,QAChBwI,EAAa4G,EAAMpP,MAHrB,CAOAA,EAAOsI,KAAgB8G,EAAMpP,KAC7B,KAAK,GAAIwW,GAAI,EAAGA,EAAIoE,EAASvb,SAAUmX,EACrCmE,EAAUC,EAASpE,GACfxW,EAAK4U,eAAe+F,IAAY3a,EAAK2a,KACvC3a,EAAK2a,GAAWpS,EAASvI,EAAK2a,GAAUtc,KAAK8G,EAAea,cAGhEwU,GAAYL,OAAOnb,GAAGgB,KAAOA,IAIjC6a,GAAc,WACZ,GAAKxc,KAAKqG,GAAkBrG,KAAKkG,EAAjC,CACA,GAAIuW,KAkBJ,OAhBIzc,MAAKqG,GAAiBC,EAAWoW,YACnCD,EAASlV,SACPoV,aAAcrW,EAAWoW,YAKzB1V,EAAQiC,UAAYjC,EAAQiC,SAASE,OACvCsT,EAASjM,IAAMxJ,EAAQiC,SAASE,MAG9BnJ,KAAKkG,GAAgBE,EAAUwW,WAC5BH,EAASlV,UAASkV,EAASlV,YAChCkV,EAASlV,QAAQ2U,QAAU9V,EAAUwW,UAGhCH,IAGTI,EAAe,WACb7c,KAAK8c,GAAmB,EACxB9c,KAAK+c,GAAgB,MAGvBC,GAAgB,WACd,MAAOhd,MAAK8c,IAAoBpX,IAAQ1F,KAAK+c,GAAgB/c,KAAK8c,IAYpEG,GAAe,SAASC,GACtB,GAAIC,GAAOnd,KAAKwG,CAEhB,UACG2W,GACDD,EAAQvY,UAAYwY,EAAKxY,SACzBuY,EAAQnB,cAAgBoB,EAAKpB,eAK3BmB,EAAQ1N,YAAc2N,EAAK3N,WACtB9E,EAAiBwS,EAAQ1N,WAAY2N,EAAK3N,aACxC0N,EAAQrB,YAAasB,EAAKtB,WAE5BpR,EAAgByS,EAAQrB,UAAWsB,EAAKtB,aAMnDuB,GAAkB,SAASnB,GAEzB,IAAIjc,KAAKqd,KAAT,CAIA,GAAIpF,GAASgE,EAAQhE,MAKrB,IAAiB,MAAXA,GAA6B,MAAXA,GAA6B,MAAXA,EAA1C,CAEA,GAAIqF,EACJ,KAIIA,EADEzS,IACMoR,EAAQ1U,QAAQgW,IAAI,eAEpBtB,EAAQuB,kBAAkB,eAIpCF,EAA8B,IAAtBG,SAASH,EAAO,IACxB,MAAOpd,IAITF,KAAK8c,GAAmBQ,EAEpBA,EAEwB,EAAxBtd,KAAK8c,IAAwB,IAEjC9c,KAAK+c,GAAgBrX,OAGvBgY,EAAO,SAAS/b,GACd,GAAIgK,GAAgB3L,KAAK8G,EAErB6W,GACAC,QAAS5d,KAAK4G,EACdvB,OAAQsG,EAActG,OACtBwY,SAAU,cAEZpB,EAAWzc,KAAK8d,IAsDlB,IApDIrB,IACFkB,EAAS1B,QAAUQ,GAIjB9a,EAAK4N,sBAAuB5N,GAAK4N,eAErC5N,EAAOsI,EAAY0T,EAAUhc,GAG7BA,EAAK+P,KAAOzH,EAAYA,KAAgBjK,KAAK6G,EAAe6K,MAAO/P,EAAK+P,MACxE/P,EAAKmB,MAAQmH,EAAYA,KAAgBjK,KAAK6G,EAAe/D,OAAQnB,EAAKmB,OAG1EnB,EAAKmB,MAAM,oBAAsB4C,IAAQ1F,KAAK4I,EAE1C5I,KAAK8I,GAAgB9I,KAAK8I,EAAa9H,OAAS,IAGlDW,EAAKwa,aACHL,UAAW5W,MAAMnE,KAAKf,KAAK8I,EAAc,KAIzC9I,KAAK6G,EAAe6G,OAEtB/L,EAAK+L,KAAO1N,KAAK6G,EAAe6G,MAI9B/B,EAAcoG,cAAapQ,EAAKoQ,YAAcpG,EAAcoG,aAG5DpG,EAAc5E,UAASpF,EAAKoF,QAAU4E,EAAc5E,SAGpD4E,EAAcoS,aAAYpc,EAAKqc,YAAcrS,EAAcoS,YAE/Dpc,EAAO3B,KAAKie,GAActc,GAG1BwC,OAAO8L,KAAKtO,GAAMuc,QAAQ,SAAStS,IAChB,MAAbjK,EAAKiK,IAA8B,KAAdjK,EAAKiK,IAAe7B,EAAcpI,EAAKiK,YACvDjK,GAAKiK,KAIZ9F,EAAW6F,EAAcuG,gBAC3BvQ,EAAOgK,EAAcuG,aAAavQ,IAASA,GAIxCA,IAAQoI,EAAcpI,MAMzBmE,EAAW6F,EAAc0G,qBACxB1G,EAAc0G,mBAAmB1Q,IAOpC,MAAI3B,MAAKqd,SACPrd,MAAK0L,EAAU,OAAQ,uCAAwC/J,QAIzB,gBAA7BgK,GAAc5D,WACnBiE,KAAKmS,SAAWxS,EAAc5D,YAChC/H,KAAKoe,GAAsBzc,GAG7B3B,KAAKoe,GAAsBzc,KAI/B0c,GAAe,SAAS1c,GACtB,MAAOqJ,GAASrJ,EAAM3B,KAAK8G,EAAekB,eAG5CsW,GAAU,WACR,MAAO/T,MAGTgU,GAAuB,SAAS5c,EAAMF,GACpC,GAAI1B,GAAOC,KACP2L,EAAgB3L,KAAK8G,CAEzB,IAAK9G,KAAK0M,UAAV,CAQA,GALA/K,EAAO3B,KAAKwe,GAAY7c,IAKnB3B,KAAK8G,EAAe2X,iBAAmBze,KAAK0e,GAAc/c,GAE7D,WADA3B,MAAK0L,EAAU,OAAQ,+BAAgC/J,EAOzD3B,MAAKyG,EAAe9E,EAAKgd,WAAahd,EAAKgd,SAAW3e,KAAK4e,MAG3D5e,KAAKwG,EAAY7E,EAEjB3B,KAAK0L,EAAU,QAAS,uBAAwB/J,EAEhD,IAAIkd,IACFC,eAAgB,IAChBC,cAAe,YAAc/e,KAAKsL,QAClC0T,WAAYhf,KAAK2G,EAGf3G,MAAK2N,IACPkR,EAAKI,cAAgBjf,KAAK2N,EAG5B,IAAIkO,GAAYla,EAAKka,WAAala,EAAKka,UAAUC,OAAO,EAItD9b,MAAK8G,EAAee,iBACpB7H,KAAK8G,EAAee,gBAAgByE,QAEpCtM,KAAK6Q,mBACH8D,SAAU,SACVhQ,QAASkX,GACJA,EAAU7E,KAAO6E,EAAU7E,KAAO,KAAO,IAAM6E,EAAUhQ,MAC1DlK,EAAKgD,QACTga,SAAUhd,EAAKgd,SACf9c,MAAOF,EAAKE,OAAS,SAIzB,IAAI2O,GAAMxQ,KAAK8N,GACdnC,EAAc4G,WAAavS,KAAKkf,IAAcne,KAAKf,MAClDwQ,IAAKA,EACLqO,KAAMA,EACNld,KAAMA,EACN8J,QAASE,EACTwT,UAAW,WACTpf,EAAKqJ,IAELrJ,EAAK6a,EAAc,WACjBjZ,KAAMA,EACN4R,IAAK/C,IAEP/O,GAAYA,KAEd2d,QAAS,SAAiB3c,GACxB1C,EAAK2L,EAAU,QAAS,mCAAoCjJ,GAExDA,EAAMwZ,SACRlc,EAAKsf,GAAiB5c,EAAMwZ,SAG9Blc,EAAK6a,EAAc,WACjBjZ,KAAMA,EACN4R,IAAK/C,IAEP/N,EAAQA,GAAS,GAAI7B,OAAM,sDAC3Ba,GAAYA,EAASgB,QAK3B6c,GAAc,SAASC,GAErB,GAAI/O,GAAM+O,EAAK/O,IAAM,IAAMlG,EAAUiV,EAAKV,MAEtCW,EAAmB,KACnBC,IAUJ,IARIF,EAAK9T,QAAQlE,UACfiY,EAAmBxf,KAAK0f,GAAcH,EAAK9T,QAAQlE,UAGjDgY,EAAK9T,QAAQkU,kBACfF,EAA2Bzf,KAAK0f,GAAcH,EAAK9T,QAAQkU,kBAGzD9U,IAAiB,CACnB4U,EAAyBhM,KAAOxN,EAAUsZ,EAAK5d,KAE/C,IAAIie,GAAsB3V,KAAgBjK,KAAKiI,GAC3C4X,EAAe5V,EAAY2V,EAAqBH,EAMpD,OAJID,KACFK,EAAatY,QAAUiY,GAGlBxY,EACJ8Y,MAAMtP,EAAKqP,GACXpH,KAAK,SAASC,GACb,GAAIA,EAASqH,GACXR,EAAKJ,WAAaI,EAAKJ,gBAClB,CACL,GAAI1c,GAAQ,GAAI7B,OAAM,sBAAwB8X,EAAST,OAGvDxV,GAAMwZ,QAAUvD,EAChB6G,EAAKH,SAAWG,EAAKH,QAAQ3c,MAGhC,SAAS,WACR8c,EAAKH,SACHG,EAAKH,QAAQ,GAAIxe,OAAM,6CAI/B,GAAIqb,GAAUjV,EAAQyQ,gBAAkB,GAAIzQ,GAAQyQ,cACpD,IAAKwE,EAAL,CAGA,GAAI+D,GAAU,mBAAqB/D,IAAqC,mBAAnBgE,eAEhDD,KAED,mBAAqB/D,GACvBA,EAAQ7D,mBAAqB,WAC3B,GAA2B,IAAvB6D,EAAQjE,WAEL,GAAuB,MAAnBiE,EAAQhE,OACjBsH,EAAKJ,WAAaI,EAAKJ,gBAClB,IAAII,EAAKH,QAAS,CACvB,GAAIzI,GAAM,GAAI/V,OAAM,sBAAwBqb,EAAQhE,OACpDtB,GAAIsF,QAAUA,EACdsD,EAAKH,QAAQzI,MAIjBsF,EAAU,GAAIgE,gBAGdzP,EAAMA,EAAI0P,QAAQ,WAAY,IAG1BX,EAAKJ,YACPlD,EAAQkE,OAASZ,EAAKJ,WAEpBI,EAAKH,UACPnD,EAAQzZ,QAAU,WAChB,GAAImU,GAAM,GAAI/V,OAAM,oCACpB+V,GAAIsF,QAAUA,EACdsD,EAAKH,QAAQzI,MAKnBsF,EAAQmE,KAAK,OAAQ5P,GAEjBgP,GACFxV,EAAKwV,EAAkB,SAAS5T,EAAKC,GACnCoQ,EAAQoE,iBAAiBzU,EAAKC,KAIlCoQ,EAAQqE,KAAKra,EAAUsZ,EAAK5d,UAG9B4e,GAAe,SAASC,GACtB,GAAIC,KAEJ,KAAK,GAAI7U,KAAO4U,GACd,GAAIA,EAAKjK,eAAe3K,GAAM,CAC5B,GAAIC,GAAQ2U,EAAK5U,EACjB6U,GAAU7U,GAAwB,kBAAVC,GAAuBA,IAAUA,EAI7D,MAAO4U,IAGTC,EAAW,SAAS7e,GAGhB7B,KAAK0I,EAAwB7G,KAC5B7B,KAAKuL,OAASvL,KAAK8G,EAAeyE,QAGnCjG,SAASlB,UAAUmB,MAAMxE,KACvBf,KAAK0I,EAAwB7G,GAC7B7B,KAAKyI,KACFvD,MAAMnE,KAAKoE,UAAW,KAK/Bwb,EAAe,SAAS/U,EAAK7I,GACvBoD,EAAYpD,SACP/C,MAAK6G,EAAe+E,GAE3B5L,KAAK6G,EAAe+E,GAAO3B,EAAYjK,KAAK6G,EAAe+E,OAAY7I,KAM7E9C,EAAMmE,UAAUwc,QAAU3gB,EAAMmE,UAAUkN,eAC1CrR,EAAMmE,UAAUyc,kBAAoB5gB,EAAMmE,UAAU4N,WAEpDvS,EAAOD,QAAUS,IAEdc,KAAKf,KAAuB,mBAAXF,QAAyBA,OAAyB,mBAATC,MAAuBA,KAAyB,mBAAXF,QAAyBA,aACxHihB,GAAK,GAAGC,GAAK,GAAGC,GAAK,GAAGvc,EAAI,EAAEvC,EAAI,EAAEsD,EAAI,IAAIrD,GAAG,SAASjB,EAAQzB,EAAOD,IAC1E,SAAWM,GAOX,GAAImhB,GAAmB/f,EAAQ,GAG3B8F,EACgB,mBAAXnH,QACHA,OACkB,mBAAXC,GAAyBA,EAAyB,mBAATC,MAAuBA,QACzEmhB,EAASla,EAAQ/G,MAEjBA,EAAQ,GAAIghB,EAQhBhhB,GAAMkhB,WAAa,WAEjB,MADAna,GAAQ/G,MAAQihB,EACTjhB,GAGTA,EAAM0S,YAENlT,EAAOD,QAAUS,EAoCjBR,EAAOD,QAAQ4hB,OAASH,IAErBlgB,KAAKf,KAAuB,mBAAXF,QAAyBA,OAAyB,mBAATC,MAAuBA,KAAyB,mBAAXF,QAAyBA,aACxH4F,EAAI,IAAID,GAAG,SAAStE,EAAQzB,EAAOD,IACtC,SAAWM,GAQX,QAAS6J,GAAS0X,GAChB,MAAuB,gBAATA,IAA8B,OAATA,EAKrC,QAAS3X,GAAQmC,GACf,OAAQ1H,OAAOC,UAAUC,SAAStD,KAAK8K,IACrC,IAAK,iBACH,OAAO,CACT,KAAK,qBACH,OAAO,CACT,KAAK,wBACH,OAAO,CACT,SACE,MAAOA,aAAiBjL,QAI9B,QAAS2I,GAAasC,GACpB,MAAiD,wBAA1C1H,OAAOC,UAAUC,SAAStD,KAAK8K,GAGxC,QAASrC,GAAWqC,GAClB,MAAiD,sBAA1C1H,OAAOC,UAAUC,SAAStD,KAAK8K,GAGxC,QAASpC,GAAeoC,GACtB,MAAiD,0BAA1C1H,OAAOC,UAAUC,SAAStD,KAAK8K,GAGxC,QAAS1F,GAAYkb,GACnB,MAAgB,UAATA,EAGT,QAASvb,GAAWub,GAClB,MAAuB,kBAATA,GAGhB,QAASzX,GAAcyX,GACrB,MAAgD,oBAAzCld,OAAOC,UAAUC,SAAStD,KAAKsgB,GAGxC,QAASxX,GAASwX,GAChB,MAAgD,oBAAzCld,OAAOC,UAAUC,SAAStD,KAAKsgB,GAGxC,QAASvX,GAAQuX,GACf,MAAgD,mBAAzCld,OAAOC,UAAUC,SAAStD,KAAKsgB,GAGxC,QAAStX,GAAcsX,GACrB,IAAKzX,EAAcyX,GAAO,OAAO,CAEjC,KAAK,GAAI9M,KAAK8M,GACZ,GAAIA,EAAK9K,eAAehC,GACtB,OAAO,CAGX,QAAO,EAGT,QAAS+M,KACP,IAEE,MADA,IAAIC,YAAW,KACR,EACP,MAAOrhB,GACP,OAAO,GAIX,QAASshB,KACP,IAEE,MADA,IAAIC,UAAS,KACN,EACP,MAAOvhB,GACP,OAAO,GAIX,QAASwhB,KACP,IAEE,MADA,IAAIC,cAAa,KACV,EACP,MAAOzhB,GACP,OAAO,GAIX,QAAS2K,KACP,KAAM,SAAW7D,IAAU,OAAO,CAElC,KAIE,MAHA,IAAI4a,SACJ,GAAIrJ,SAAQ,IACZ,GAAIsJ,WACG,EACP,MAAO3hB,GACP,OAAO,GAQX,QAASmI,KACP,IAAKwC,IAAiB,OAAO,CAE7B,KAKE,MAHA,IAAI0N,SAAQ,cACVnQ,eAAgB,YAEX,EACP,MAAOlI,GACP,OAAO,GAIX,QAAS4hB,KACP,MAAwC,kBAA1BC,uBAGhB,QAASC,GAAgBvgB,GACvB,QAASyQ,GAAavQ,EAAMkE,GAC1B,GAAIoc,GAAiBxgB,EAASE,IAASA,CACvC,OAAIkE,GACKA,EAASoc,IAAmBA,EAE9BA,EAGT,MAAO/P,GAGT,QAASlI,GAAK8G,EAAKrP,GACjB,GAAId,GAAGwX,CAEP,IAAIhS,EAAY2K,EAAI9P,QAClB,IAAKL,IAAKmQ,GACJ1G,EAAO0G,EAAKnQ,IACdc,EAASV,KAAK,KAAMJ,EAAGmQ,EAAInQ,QAK/B,IADAwX,EAAIrH,EAAI9P,OAEN,IAAKL,EAAI,EAAGA,EAAIwX,EAAGxX,IACjBc,EAASV,KAAK,KAAMJ,EAAGmQ,EAAInQ,IAMnC,QAASsJ,GAAYiY,EAAMC,GACzB,MAAKA,IAGLnY,EAAKmY,EAAM,SAASvW,EAAKC,GACvBqW,EAAKtW,GAAOC,IAEPqW,GALEA,EAgBX,QAAS/X,GAAa2G,GACpB,QAAK3M,OAAOie,UAGLje,OAAOie,SAAStR,GAGzB,QAAS5G,GAASiQ,EAAKlO,GACrB,GAAmB,gBAARA,GACT,KAAM,IAAIrL,OAAM,yDAElB,OAAmB,gBAARuZ,IAA4B,IAARlO,EACtBkO,EAEFA,EAAInZ,QAAUiL,EAAMkO,EAAMA,EAAI3M,OAAO,EAAGvB,GAAO,IAUxD,QAAS7B,GAAOiY,EAAQzW,GACtB,MAAOzH,QAAOC,UAAUmS,eAAexV,KAAKshB,EAAQzW,GAGtD,QAASvB,GAAWiY,GAQlB,IALA,GAGEC,GAHEC,KACF7hB,EAAI,EACJ8hB,EAAMH,EAASthB,OAGVL,EAAI8hB,EAAK9hB,IACd4hB,EAAUD,EAAS3hB,GACfkJ,EAAS0Y,GAGXC,EAAQhhB,KAAK+gB,EAAQrC,QAAQ,8BAA+B,SACnDqC,GAAWA,EAAQG,QAE5BF,EAAQhhB,KAAK+gB,EAAQG,OAIzB,OAAO,IAAIC,QAAOH,EAAQI,KAAK,KAAM,KAGvC,QAAStY,GAAU/J,GACjB,GAAIsiB,KAIJ,OAHA7Y,GAAKzJ,EAAG,SAASqL,EAAKC,GACpBgX,EAAMrhB,KAAKwR,mBAAmBpH,GAAO,IAAMoH,mBAAmBnH,MAEzDgX,EAAMD,KAAK,KAMpB,QAASjY,GAAS6F,GAChB,GAAmB,gBAARA,GAAkB,QAC7B,IAAIsS,GAAQtS,EAAIsS,MAAM,kEAGlBC,EAAQD,EAAM,IAAM,GACpBE,EAAWF,EAAM,IAAM,EAC3B,QACErN,SAAUqN,EAAM,GAChBpN,KAAMoN,EAAM,GACZxV,KAAMwV,EAAM,GACZnN,SAAUmN,EAAM,GAAKC,EAAQC,GAGjC,QAASzY,KACP,GAAI0Y,GAASjc,EAAQic,QAAUjc,EAAQkc,QAEvC,KAAK/c,EAAY8c,IAAWA,EAAOE,gBAAiB,CAGlD,GAAIC,GAAM,GAAIC,aAAY,EAC1BJ,GAAOE,gBAAgBC,GAGvBA,EAAI,GAAe,KAATA,EAAI,GAAc,MAE5BA,EAAI,GAAe,MAATA,EAAI,GAAe,KAE7B,IAAIE,GAAM,SAASC,GAEjB,IADA,GAAIC,GAAID,EAAIlf,SAAS,IACdmf,EAAExiB,OAAS,GAChBwiB,EAAI,IAAMA,CAEZ,OAAOA,GAGT,OACEF,GAAIF,EAAI,IACRE,EAAIF,EAAI,IACRE,EAAIF,EAAI,IACRE,EAAIF,EAAI,IACRE,EAAIF,EAAI,IACRE,EAAIF,EAAI,IACRE,EAAIF,EAAI,IACRE,EAAIF,EAAI,IAIV,MAAO,mCAAmClD,QAAQ,QAAS,SAASuD,GAClE,GAAIpjB,GAAqB,GAAhB2L,KAAKmS,SAAiB,EAC7BqF,EAAU,MAANC,EAAYpjB,EAAS,EAAJA,EAAW,CAClC,OAAOmjB,GAAEnf,SAAS,MAYxB,QAASmG,GAAiBkZ,GAWxB,IATA,GAOEC,GAPEC,EAAsB,EACxBC,EAAiB,GACjBC,KACAC,EAAS,EACTtB,EAAM,EACNuB,EAAY,MACZC,EAAYD,EAAUhjB,OAGjB0iB,GAAQK,IAAWH,IACxBD,EAAUO,EAAoBR,KAMhB,SAAZC,GACCI,EAAS,GAAKtB,EAAMqB,EAAI9iB,OAASijB,EAAYN,EAAQ3iB,QAAU6iB,KAKlEC,EAAItiB,KAAKmiB,GAETlB,GAAOkB,EAAQ3iB,OACf0iB,EAAOA,EAAKS,UAGd,OAAOL,GAAInT,UAAUiS,KAAKoB,GAS5B,QAASE,GAAoBR,GAC3B,GACEU,GACAC,EACAzY,EACA0Y,EACA3jB,EALEmjB,IAOJ,KAAKJ,IAASA,EAAK5O,QACjB,MAAO,EAST,IANAgP,EAAItiB,KAAKkiB,EAAK5O,QAAQR,eAClBoP,EAAKxc,IACP4c,EAAItiB,KAAK,IAAMkiB,EAAKxc,IAGtBkd,EAAYV,EAAKU,UACbA,GAAava,EAASua,GAExB,IADAC,EAAUD,EAAUlZ,MAAM,OACrBvK,EAAI,EAAGA,EAAI0jB,EAAQrjB,OAAQL,IAC9BmjB,EAAItiB,KAAK,IAAM6iB,EAAQ1jB,GAG3B,IAAI4jB,IAAiB,OAAQ,OAAQ,QAAS,MAC9C,KAAK5jB,EAAI,EAAGA,EAAI4jB,EAAcvjB,OAAQL,IACpCiL,EAAM2Y,EAAc5jB,GACpB2jB,EAAOZ,EAAKc,aAAa5Y,GACrB0Y,GACFR,EAAItiB,KAAK,IAAMoK,EAAM,KAAO0Y,EAAO,KAGvC,OAAOR,GAAIlB,KAAK,IAMlB,QAAS6B,GAAgBhkB,EAAGikB,GAC1B,WAAYjkB,IAAMikB,GAMpB,QAASC,GAAgBlkB,EAAGikB,GAC1B,MAAOve,GAAY1F,IAAM0F,EAAYue,GAMvC,QAASja,GAAgBoF,EAAK+U,GAC5B,OAAIH,EAAgB5U,EAAK+U,KAEzB/U,EAAMA,EAAIiM,OAAO,GACjB8I,EAAMA,EAAI9I,OAAO,GAEbjM,EAAImH,OAAS4N,EAAI5N,MAAQnH,EAAIhE,QAAU+Y,EAAI/Y,SAG3C8Y,EAAgB9U,EAAIL,WAAYoV,EAAIpV,aAEjC9E,EAAiBmF,EAAIL,WAAYoV,EAAIpV,cAM9C,QAAS9E,GAAiBma,EAAQC,GAChC,GAAIL,EAAgBI,EAAQC,GAAS,OAAO,CAE5C,IAAIC,GAAUF,EAAOpU,OACjBuU,EAAUF,EAAOrU,MAGrB,IAAIsU,EAAQ/jB,SAAWgkB,EAAQhkB,OAAQ,OAAO,CAI9C,KAAK,GADDP,GAAGikB,EACE/jB,EAAI,EAAGA,EAAIokB,EAAQ/jB,OAAQL,IAGlC,GAFAF,EAAIskB,EAAQpkB,GACZ+jB,EAAIM,EAAQrkB,GAEVF,EAAE6a,WAAaoJ,EAAEpJ,UACjB7a,EAAEqa,SAAW4J,EAAE5J,QACfra,EAAE+a,QAAUkJ,EAAElJ,OACd/a,EAAE,cAAgBikB,EAAE,YAEpB,OAAO,CAEX,QAAO,EAUT,QAAS9Z,GAAKkG,EAAKtN,EAAMyhB,EAAaC,GACpC,GAAW,MAAPpU,EAAJ,CACA,GAAImF,GAAOnF,EAAItN,EACfsN,GAAItN,GAAQyhB,EAAYhP,GACxBnF,EAAItN,GAAM4K,GAAY,EACtB0C,EAAItN,GAAM+K,EAAW0H,EACjBiP,GACFA,EAAM1jB,MAAMsP,EAAKtN,EAAMyS,KAU3B,QAAS7Q,GAAS+f,EAAOC,GACvB,IAAKtb,EAAQqb,GAAQ,MAAO,EAI5B,KAAK,GAFDE,MAEK1kB,EAAI,EAAGA,EAAIwkB,EAAMnkB,OAAQL,IAChC,IACE0kB,EAAO7jB,KAAK8jB,OAAOH,EAAMxkB,KACzB,MAAOT,GACPmlB,EAAO7jB,KAAK,gCAIhB,MAAO6jB,GAAOzC,KAAKwC,GASrB,QAASG,GAAW1Z,GAClB,QAAS2Z,UAAU3Z,GAAOX,MAAM,SAASlK,OAG3C,QAASykB,GAAS5Z,GAChB,MAAO0Z,GAAWvf,KAAKC,UAAU4F,IAGnC,QAAS6Z,GAAe7Z,GACtB,GAAqB,gBAAVA,GAAoB,CAC7B,GAAI8Z,GAAY,EAChB,OAAOzb,GAAS2B,EAAO8Z,GAClB,GACY,gBAAV9Z,IACU,iBAAVA,IACU,mBAAVA,GAEP,MAAOA,EAGT,IAAImL,GAAO7S,OAAOC,UAAUC,SAAStD,KAAK8K,EAG1C,OAAa,oBAATmL,EAAmC,WAC1B,mBAATA,EAAkC,UACzB,sBAATA,EACKnL,EAAMrI,KAAO,cAAgBqI,EAAMrI,KAAO,IAAM,aAElDqI,EAGT,QAAS+Z,GAAgB/Z,EAAOga,GAC9B,MAAc,KAAVA,EAAoBH,EAAe7Z,GAEnCjC,EAAciC,GACT1H,OAAO8L,KAAKpE,GAAOia,OAAO,SAASC,EAAKna,GAE7C,MADAma,GAAIna,GAAOga,EAAgB/Z,EAAMD,GAAMia,EAAQ,GACxCE,OAEA5P,MAAMrM,QAAQ+B,GAChBA,EAAMma,IAAI,SAASC,GACxB,MAAOL,GAAgBK,EAAKJ,EAAQ,KAIjCH,EAAe7Z,GAGxB,QAASd,GAAmBuE,EAAIuW,EAAOK,GACrC,IAAKtc,EAAc0F,GAAK,MAAOA,EAE/BuW,GAAyB,gBAAVA,GAAqBM,EAAgCN,EACpEK,EAA2B,gBAAVL,GAAqBO,EAA+BF,CAErE,IAAIG,GAAaT,EAAgBtW,EAAIuW,EAErC,OAAIJ,GAASxf,EAAUogB,IAAeH,EAC7Bnb,EAAmBuE,EAAIuW,EAAQ,GAGjCQ,EAGT,QAASvb,GAAwBmF,EAAM0V,GACrC,GAAoB,gBAAT1V,IAAqC,gBAATA,GAAmB,MAAOA,GAAK5L,UACtE,KAAK8R,MAAMrM,QAAQmG,GAAO,MAAO,EAKjC,IAHAA,EAAOA,EAAKqW,OAAO,SAAS1a,GAC1B,MAAsB,gBAARA,KAEI,IAAhBqE,EAAKjP,OAAc,MAAO,sBAG9B,IADA2kB,EAAiC,gBAAdA,GAAyBY,EAA4BZ,EACpE1V,EAAK,GAAGjP,QAAU2kB,EAAW,MAAO1V,GAAK,EAE7C,KAAK,GAAIuW,GAAWvW,EAAKjP,OAAQwlB,EAAW,EAAGA,IAAY,CACzD,GAAIH,GAAapW,EAAK/K,MAAM,EAAGshB,GAAU5D,KAAK,KAC9C,MAAIyD,EAAWrlB,OAAS2kB,GACxB,MAAIa,KAAavW,EAAKjP,OAAeqlB,EAC9BA,EAAa,IAGtB,MAAO,GAGT,QAASrb,GAASma,EAAOnd,GAcvB,QAASye,GAAeC,GACtB,MAAI5c,GAAQ4c,GACHA,EAAYV,IAAI,SAASC,GAC9B,MAAOQ,GAAeR,KAItBrc,EAAc8c,GACTviB,OAAO8L,KAAKyW,GAAaZ,OAAO,SAASC,EAAKY,GAMnD,MAJEZ,GAAIY,GADFC,EAAevW,KAAKsW,GACbE,EAEAJ,EAAeC,EAAYC,IAE/BZ,OAIJW,EA/BT,IAAK5c,EAAQ9B,IAAkB8B,EAAQ9B,IAAyC,IAAxBA,EAAahH,OACnE,MAAOmkB,EAET,IAEI2B,GAFAF,EAAiBvc,EAAWrC,GAC5B6e,EAAe,UAGnB,KACEC,EAAY9gB,KAAK6L,MAAM5L,EAAUkf,IACjC,MAAO4B,GACP,MAAO5B,GAwBT,MAAOsB,GAAeK,GA5lBxB,GAAI7gB,GAAY/E,EAAQ,IAEpB8F,EACgB,mBAAXnH,QACHA,OACkB,mBAAXC,GAAyBA,EAAyB,mBAATC,MAAuBA,QA0dzEomB,EAAgC,EAEhCC,EAA+B,MAC/BG,EAA4B,EA6HhC9mB,GAAOD,SACLmK,SAAUA,EACVD,QAASA,EACTH,aAAcA,EACdC,WAAYA,EACZC,eAAgBA,EAChBtD,YAAaA,EACbL,WAAYA,EACZ8D,cAAeA,EACfC,SAAUA,EACVC,QAASA,EACTC,cAAeA,EACfuX,mBAAoBA,EACpBE,iBAAkBA,EAClBE,qBAAsBA,EACtB7W,cAAeA,EACfxC,uBAAwBA,EACxByZ,8BAA+BA,EAC/BE,gBAAiBA,EACjBhY,KAAMA,EACNC,YAAaA,EACbC,SAAUA,EACVC,aAAcA,EACdC,OAAQA,EACRC,WAAYA,EACZC,UAAWA,EACXC,MAAOA,EACPC,iBAAkBA,EAClB0Z,oBAAqBA,EACrBzZ,gBAAiBA,EACjBC,iBAAkBA,EAClBC,SAAUA,EACVC,KAAMA,EACNxF,SAAUA,EACV2F,mBAAoBA,EACpBD,wBAAyBA,EACzBE,SAAUA,KAGTjK,KAAKf,KAAuB,mBAAXF,QAAyBA,OAAyB,mBAATC,MAAuBA,KAAyB,mBAAXF,QAAyBA,aACxHkhB,GAAK,KAAKD,IAAI,SAAS5f,EAAQzB,EAAOD,IACzC,SAAWM,GA+BX,QAASknB,KACP,MAAwB,mBAAb5b,WAAiD,MAArBA,SAASnC,SAAyB,GAClEmC,SAASnC,SAASE,KAG3B,QAAS8d,KACP,MAAwB,mBAAb7b,WAAiD,MAArBA,SAASnC,SAAyB,IAGpEmC,SAASnC,SAASie,SACrB9b,SAASnC,SAASie,OAChB9b,SAASnC,SAASwM,SAClB,KACArK,SAASnC,SAASke,UACjB/b,SAASnC,SAASuR,KAAO,IAAMpP,SAASnC,SAASuR,KAAO,KAGtDpP,SAASnC,SAASie,QA/C3B,GAAIriB,GAAQ3D,EAAQ,GAYhBmI,GACF7B,qBAAqB,EACrB+D,OAAO,GAILvE,EACgB,mBAAXnH,QACHA,OACkB,mBAAXC,GAAyBA,EAAyB,mBAATC,MAAuBA,QAGzEqnB,KAAYliB,MACZmiB,EAAmB,IAGnBC,EAAiB,yGA6DrBje,GAASsD,OAAS,WAUhB,QAASC,GAAU2a,GACjBC,IACAC,EAASjmB,KAAK+lB,GAOhB,QAASG,GAAYH,GACnB,IAAK,GAAI5mB,GAAI8mB,EAASzmB,OAAS,EAAGL,GAAK,IAAKA,EACtC8mB,EAAS9mB,KAAO4mB,GAClBE,EAASE,OAAOhnB,EAAG,GAQzB,QAASinB,KACPC,IACAJ,KAOF,QAASK,GAAepY,EAAOqY,GAC7B,GAAIlM,GAAY,IAChB,KAAIkM,GAAkB1e,EAAS7B,oBAA/B,CAGA,IAAK,GAAI7G,KAAK8mB,GACZ,GAAIA,EAASlR,eAAe5V,GAC1B,IACE8mB,EAAS9mB,GAAG4E,MAAM,MAAOmK,GAAOuK,OAAOmN,EAAOrmB,KAAKoE,UAAW,KAC9D,MAAO6iB,GACPnM,EAAYmM,EAKlB,GAAInM,EACF,KAAMA,IAiBV,QAASoM,GAAsBvmB,EAAK8O,EAAK0X,EAAQC,EAAO7Y,GACtD,GAAII,GAAQ,KAERmM,EAAYhX,EAAM0E,aAAa+F,GAAMA,EAAG7M,MAAQ6M,EAEhD3K,EAAUE,EAAM0E,aAAa7H,GAAOA,EAAIiD,QAAUjD,CAEtD,IAAI0mB,EACF/e,EAASsG,kBAAkB0Y,oCACzBD,EACA5X,EACA0X,EACAvjB,GAEF2jB,QACK,IAAIzM,GAAahX,EAAM6E,QAAQmS,GAMpCnM,EAAQrG,EAASsG,kBAAkBkM,GACnCiM,EAAepY,GAAO,OACjB,CACL,GAOI6Y,GAPAtf,GACFuH,IAAKA,EACL+K,KAAM2M,EACNzM,OAAQ0M,GAGN3kB,EAAOwK,MAGX,IAAkC,uBAA3B3J,SAAStD,KAAK4D,GAAgC,CACnD,GAAI4jB,GAAS5jB,EAAQme,MAAMwE,EACvBiB,KACF/kB,EAAO+kB,EAAO,GACd5jB,EAAU4jB,EAAO,IAIrBtf,EAAS8E,KAAOsZ,EAEhB3X,GACElM,KAAMA,EACNmB,QAASA,EACT6L,IAAKwW,IACLtX,OAAQzG,IAEV6e,EAAepY,GAAO,GAGxB,QAAI8Y,GACKA,EAAmBjjB,MAAMvF,KAAMmF,WAM1C,QAASqiB,KACHiB,IAGJD,EAAqBxhB,EAAQxE,QAC7BwE,EAAQxE,QAAUylB,EAClBQ,GAA2B,GAG7B,QAASZ,KACFY,IAGLzhB,EAAQxE,QAAUgmB,EAClBC,GAA2B,EAC3BD,EAAqBxa,QAGvB,QAASsa,KACP,GAAII,GAAsBN,EACxBO,EAAYC,CACdA,GAAW,KACXR,EAAqB,KACrB5V,EAAgB,KAChBsV,EAAeviB,MAAM,MAAOmjB,GAAqB,GAAOzO,OAAO0O,IAUjE,QAAShc,GAAO2C,EAAIuZ,GAClB,GAAI5jB,GAAOmiB,EAAOrmB,KAAKoE,UAAW,EAClC,IAAIijB,EAAoB,CACtB,GAAI5V,IAAkBlD,EACpB,MAEAgZ,KAIJ,GAAI5Y,GAAQrG,EAASsG,kBAAkBL,EAevC,IAdA8Y,EAAqB1Y,EACrB8C,EAAgBlD,EAChBsZ,EAAW3jB,EAMX2O,WAAW,WACLpB,IAAkBlD,GACpBgZ,KAED5Y,EAAMoZ,WAAa,IAAO,GAEzBD,KAAY,EACd,KAAMvZ,GA9LV,GA0DIkZ,GAAoBC,EA1DpBhB,KACFmB,EAAW,KACXpW,EAAgB,KAChB4V,EAAqB,IAkMvB,OAHAzb,GAAOC,UAAYA,EACnBD,EAAO+a,YAAcA,EACrB/a,EAAO6B,UAAYoZ,EACZjb,KAsDTtD,EAASsG,kBAAoB,WA4C3B,QAASoZ,GAA+BzZ,GACtC,GAAwB,mBAAbA,GAAGI,OAA0BJ,EAAGI,MAA3C,CAiBA,IAAK,GALDsZ,GACAC,EACAC,EAZAtQ,EAAS,0IACTuQ,EAAQ,wHAGRC,EAAQ,6JAERC,EAAY,gDACZC,EAAa,gCACbC,EAAQja,EAAGI,MAAMxE,MAAM,MACvBwE,KAMK/O,GAFO,sBAAsB0Z,KAAK/K,EAAG3K,SAEjC,GAAGwT,EAAIoR,EAAMvoB,OAAQL,EAAIwX,IAAKxX,EAAG,CAC5C,GAAKsoB,EAAQrQ,EAAOyB,KAAKkP,EAAM5oB,IAAM,CACnC,GAAI6oB,GAAWP,EAAM,IAAqC,IAA/BA,EAAM,GAAGtR,QAAQ,UACxC8R,EAASR,EAAM,IAAmC,IAA7BA,EAAM,GAAGtR,QAAQ,OACtC8R,KAAWT,EAAWM,EAAWjP,KAAK4O,EAAM,OAE9CA,EAAM,GAAKD,EAAS,GACpBC,EAAM,GAAKD,EAAS,GACpBC,EAAM,GAAKD,EAAS,IAEtBE,GACE1Y,IAAMgZ,EAAsB,KAAXP,EAAM,GACvBlb,KAAMkb,EAAM,IAAM5B,EAClBpiB,KAAMukB,GAAYP,EAAM,OACxB1N,KAAM0N,EAAM,IAAMA,EAAM,GAAK,KAC7BxN,OAAQwN,EAAM,IAAMA,EAAM,GAAK,UAE5B,IAAKA,EAAQE,EAAM9O,KAAKkP,EAAM5oB,IACnCuoB,GACE1Y,IAAKyY,EAAM,GACXlb,KAAMkb,EAAM,IAAM5B,EAClBpiB,QACAsW,MAAO0N,EAAM,GACbxN,OAAQwN,EAAM,IAAMA,EAAM,GAAK,UAE5B,CAAA,KAAKA,EAAQG,EAAM/O,KAAKkP,EAAM5oB,KAsBnC,QArBA,IAAI8oB,GAASR,EAAM,IAAMA,EAAM,GAAGtR,QAAQ,aACtC8R,KAAWT,EAAWK,EAAUhP,KAAK4O,EAAM,MAE7CA,EAAM,GAAKD,EAAS,GACpBC,EAAM,GAAKD,EAAS,GACpBC,EAAM,GAAK,MACI,IAANtoB,GAAYsoB,EAAM,IAAiC,mBAApB3Z,GAAGoa,eAK3Cha,EAAM,GAAG+L,OAASnM,EAAGoa,aAAe,GAEtCR,GACE1Y,IAAKyY,EAAM,GACXlb,KAAMkb,EAAM,IAAM5B,EAClBpiB,KAAMgkB,EAAM,GAAKA,EAAM,GAAG/d,MAAM,QAChCqQ,KAAM0N,EAAM,IAAMA,EAAM,GAAK,KAC7BxN,OAAQwN,EAAM,IAAMA,EAAM,GAAK,MAUnC,IAJKC,EAAQnb,MAAQmb,EAAQ3N,OAC3B2N,EAAQnb,KAAOsZ,GAGb6B,EAAQ1Y,KAAoC,UAA7B0Y,EAAQ1Y,IAAIhD,OAAO,EAAG,GAAgB;AAMvD,GAAIpB,GAAM,GAAIqL,eAKd,IAJArL,EAAIgU,KAAK,MAAO8I,EAAQ1Y,KAAK,GAC7BpE,EAAIkU,KAAK,MAGU,MAAflU,EAAI6L,OAAgB,CACtB,GAAIyK,GAAStW,EAAIud,cAAgB,EAIjCjH,GAASA,EAAOxd,WAGhB,IAAI0kB,GAAalH,EAAOI,MAAM,+BAG9B,IAAI8G,EAAY,CACd,GAAIC,GAAmBD,EAAW,EAIC,OAA/BC,EAAiBC,OAAO,KAC1BD,EAAmB5C,IAAsB4C,EAAiB3kB,MAAM,IAKlEgkB,EAAQ1Y,IAAMqZ,EAAiB3kB,MAAM,QAK3CwK,EAAMlO,KAAK0nB,GAGb,MAAKxZ,GAAM1O,QAKTwC,KAAM8L,EAAG9L,KACTmB,QAAS2K,EAAG3K,QACZ6L,IAAKwW,IACLtX,MAAOA,GAPA,MAwBX,QAAS2Y,GAAoC1N,EAAWnK,EAAK0X,EAAQvjB,GACnE,GAAIolB,IACFvZ,IAAKA,EACL+K,KAAM2M,EAGR,IAAI6B,EAAQvZ,KAAOuZ,EAAQxO,KAAM,CAO/B,GANAZ,EAAUmO,YAAa,EAElBiB,EAAQhc,OACXgc,EAAQhc,KAAOsZ,GAGb1M,EAAUjL,MAAM1O,OAAS,GACvB2Z,EAAUjL,MAAM,GAAGc,MAAQuZ,EAAQvZ,IAAK,CAC1C,GAAImK,EAAUjL,MAAM,GAAG6L,OAASwO,EAAQxO,KACtC,OAAO,CACF,KACJZ,EAAUjL,MAAM,GAAG6L,MACpBZ,EAAUjL,MAAM,GAAG3B,OAASgc,EAAQhc,KAGpC,MADA4M,GAAUjL,MAAM,GAAG6L,KAAOwO,EAAQxO,MAC3B,EAOb,MAFAZ,GAAUjL,MAAMsa,QAAQD,GACxBpP,EAAUsP,SAAU,GACb,EAKT,MAHEtP,GAAUmO,YAAa,GAGlB,EAYT,QAASoB,GAAsC5a,EAAIuW,GASjD,IACE,GALAoD,GACAkB,EALEC,EAAe,qEACjB1a,KACA2a,KACAC,GAAY,EAMRC,EAAOL,EAAsCM,OACjDD,IAASD,EACTC,EAAOA,EAAKC,OAEZ,GAAID,IAAS5a,GAAqB4a,IAASlhB,EAASsD,OAApD,CAkBA,GAbAwd,GACE3Z,IAAK,KACLzC,KAAMsZ,EACN9L,KAAM,KACNE,OAAQ,MAGN8O,EAAK/mB,KACP2mB,EAAKpc,KAAOwc,EAAK/mB,MACPylB,EAAQmB,EAAa/P,KAAKkQ,EAAKlmB,eACzC8lB,EAAKpc,KAAOkb,EAAM,IAGK,mBAAdkB,GAAKpc,KACd,IACEoc,EAAKpc,KAAOkb,EAAM9D,MAAMsF,UAAU,EAAGxB,EAAM9D,MAAMxN,QAAQ,MACzD,MAAOzX,IAGPmqB,EAAM,GAAKE,GACbD,GAAY,EAEZD,EAAM,GAAKE,IAAQ,EAGrB7a,EAAMlO,KAAK2oB,GAGTtE,GAGFnW,EAAMiY,OAAO,EAAG9B,EAGlB,IAAI3U,IACF1N,KAAM8L,EAAG9L,KACTmB,QAAS2K,EAAG3K,QACZ6L,IAAKwW,IACLtX,MAAOA,EAQT,OANA2Y,GACEnX,EACA5B,EAAGob,WAAapb,EAAGqb,SACnBrb,EAAGiM,MAAQjM,EAAGsb,WACdtb,EAAG3K,SAAW2K,EAAGub,aAEZ3Z,EAQT,QAASvB,GAAkBL,EAAIuW,GAC7B,GAAInW,GAAQ,IACZmW,GAAiB,MAATA,EAAgB,GAAKA,CAE7B,KAEE,GADAnW,EAAQqZ,EAA+BzZ,GAErC,MAAOI,GAET,MAAOxP,GACP,GAAImJ,EAASkC,MACX,KAAMrL,GAIV,IAEE,GADAwP,EAAQwa,EAAsC5a,EAAIuW,EAAQ,GAExD,MAAOnW,GAET,MAAOxP,GACP,GAAImJ,EAASkC,MACX,KAAMrL,GAGV,OACEsD,KAAM8L,EAAG9L,KACTmB,QAAS2K,EAAG3K,QACZ6L,IAAKwW,KAOT,MAHArX,GAAkB0Y,oCAAsCA,EACxD1Y,EAAkBoZ,+BAAiCA,EAE5CpZ,KAGTlQ,EAAOD,QAAU6J,IAEdtI,KAAKf,KAAuB,mBAAXF,QAAyBA,OAAyB,mBAATC,MAAuBA,KAAyB,mBAAXF,QAAyBA,aACxH2F,EAAI,IAAIub,IAAI,SAAS7f,EAAQzB,EAAOD,GAevC,QAASmY,GAAQmT,EAAUC,GACzB,IAAK,GAAIpqB,GAAI,EAAGA,EAAImqB,EAAS9pB,SAAUL,EACrC,GAAImqB,EAASnqB,KAAOoqB,EAAQ,MAAOpqB,EAErC,UAGF,QAASsF,GAAU6K,EAAKka,EAAUC,EAAQC,GACxC,MAAOllB,MAAKC,UAAU6K,EAAKqa,EAAWH,EAAUE,GAAgBD,GAIlE,QAASG,GAAevf,GACtB,GAAI8K,IAEFjH,MAAO7D,EAAM6D,MACb/K,QAASkH,EAAMlH,QACfnB,KAAMqI,EAAMrI,KAGd,KAAK,GAAI7C,KAAKkL,GACR1H,OAAOC,UAAUmS,eAAexV,KAAK8K,EAAOlL,KAC9CgW,EAAIhW,GAAKkL,EAAMlL,GAInB,OAAOgW,GAGT,QAASwU,GAAWH,EAAUE,GAC5B,GAAIxb,MACAO,IAWJ,OATqB,OAAjBib,IACFA,EAAgB,SAAStf,EAAKC,GAC5B,MAAI6D,GAAM,KAAO7D,EACR,eAEF,eAAiBoE,EAAK/K,MAAM,EAAGyS,EAAQjI,EAAO7D,IAAQ+W,KAAK,KAAO,MAItE,SAAShX,EAAKC,GACnB,GAAI6D,EAAM1O,OAAS,EAAG,CACpB,GAAIqqB,GAAU1T,EAAQjI,EAAO1P,OAC5BqrB,EAAU3b,EAAMiY,OAAO0D,EAAU,GAAK3b,EAAMlO,KAAKxB,OACjDqrB,EAAUpb,EAAK0X,OAAO0D,EAASC,EAAAA,EAAU1f,GAAOqE,EAAKzO,KAAKoK,IAEtD+L,EAAQjI,EAAO7D,KAClBA,EAAQqf,EAAcnqB,KAAKf,KAAM4L,EAAKC,QAGxC6D,GAAMlO,KAAKqK,EAGb,OAAmB,OAAZmf,EACHnf,YAAiBjL,OAAQwqB,EAAevf,GAASA,EACjDmf,EAASjqB,KAAKf,KAAM4L,EAAKC,IA5DjCrM,EAAUC,EAAOD,QAAUyG,EAC3BzG,EAAQ+rB,aAAeJ,OA+DjBnK,IAAI,SAAS9f,EAAQzB,EAAOD,GAwBlC,QAASgsB,GAAQC,EAAG5O,GAClB,GAAI6O,IAAW,MAAJD,IAAmB,MAAJ5O,GACtB8O,GAAOF,GAAK,KAAO5O,GAAK,KAAO6O,GAAO,GAC1C,OAAQC,IAAO,GAAa,MAAND,EAMxB,QAASE,GAAcrI,EAAKsI,GAC1B,MAAQtI,IAAOsI,EAAQtI,IAAS,GAAKsI,EAMvC,QAASC,GAAOC,EAAGtrB,EAAGikB,EAAG+G,EAAGnrB,EAAGH,GAC7B,MAAOqrB,GAAQI,EAAcJ,EAAQA,EAAQ/qB,EAAGsrB,GAAIP,EAAQC,EAAGtrB,IAAKG,GAAIokB,GAE1E,QAASsH,GAAMvrB,EAAGikB,EAAGjB,EAAGwI,EAAGR,EAAGnrB,EAAGH,GAC/B,MAAO2rB,GAAQpH,EAAIjB,GAAOiB,EAAIuH,EAAIxrB,EAAGikB,EAAG+G,EAAGnrB,EAAGH,GAEhD,QAAS+rB,GAAMzrB,EAAGikB,EAAGjB,EAAGwI,EAAGR,EAAGnrB,EAAGH,GAC/B,MAAO2rB,GAAQpH,EAAIuH,EAAMxI,GAAKwI,EAAIxrB,EAAGikB,EAAG+G,EAAGnrB,EAAGH,GAEhD,QAASgsB,GAAM1rB,EAAGikB,EAAGjB,EAAGwI,EAAGR,EAAGnrB,EAAGH,GAC/B,MAAO2rB,GAAOpH,EAAIjB,EAAIwI,EAAGxrB,EAAGikB,EAAG+G,EAAGnrB,EAAGH,GAEvC,QAASisB,GAAM3rB,EAAGikB,EAAGjB,EAAGwI,EAAGR,EAAGnrB,EAAGH,GAC/B,MAAO2rB,GAAOrI,GAAKiB,GAAKuH,GAAIxrB,EAAGikB,EAAG+G,EAAGnrB,EAAGH,GAM1C,QAASksB,GAAQZ,EAAGhJ,GAElBgJ,EAAEhJ,GAAO,IAAM,KAASA,EAAM,GAC9BgJ,GAAKhJ,EAAM,KAAQ,GAAM,GAAK,IAAMA,CAEpC,IAAI9hB,GACA2rB,EACAC,EACAC,EACAC,EACAhsB,EAAI,WACJikB,aACAjB,cACAwI,EAAI,SAER,KAAKtrB,EAAI,EAAGA,EAAI8qB,EAAEzqB,OAAQL,GAAK,GAC7B2rB,EAAO7rB,EACP8rB,EAAO7H,EACP8H,EAAO/I,EACPgJ,EAAOR,EAEPxrB,EAAIurB,EAAMvrB,EAAGikB,EAAGjB,EAAGwI,EAAGR,EAAE9qB,GAAI,cAC5BsrB,EAAID,EAAMC,EAAGxrB,EAAGikB,EAAGjB,EAAGgI,EAAE9qB,EAAI,GAAI,eAChC8iB,EAAIuI,EAAMvI,EAAGwI,EAAGxrB,EAAGikB,EAAG+G,EAAE9qB,EAAI,GAAI,GAAI,WACpC+jB,EAAIsH,EAAMtH,EAAGjB,EAAGwI,EAAGxrB,EAAGgrB,EAAE9qB,EAAI,GAAI,gBAChCF,EAAIurB,EAAMvrB,EAAGikB,EAAGjB,EAAGwI,EAAGR,EAAE9qB,EAAI,GAAI,cAChCsrB,EAAID,EAAMC,EAAGxrB,EAAGikB,EAAGjB,EAAGgI,EAAE9qB,EAAI,GAAI,GAAI,YACpC8iB,EAAIuI,EAAMvI,EAAGwI,EAAGxrB,EAAGikB,EAAG+G,EAAE9qB,EAAI,GAAI,gBAChC+jB,EAAIsH,EAAMtH,EAAGjB,EAAGwI,EAAGxrB,EAAGgrB,EAAE9qB,EAAI,GAAI,cAChCF,EAAIurB,EAAMvrB,EAAGikB,EAAGjB,EAAGwI,EAAGR,EAAE9qB,EAAI,GAAI,EAAG,YACnCsrB,EAAID,EAAMC,EAAGxrB,EAAGikB,EAAGjB,EAAGgI,EAAE9qB,EAAI,GAAI,gBAChC8iB,EAAIuI,EAAMvI,EAAGwI,EAAGxrB,EAAGikB,EAAG+G,EAAE9qB,EAAI,IAAK,WACjC+jB,EAAIsH,EAAMtH,EAAGjB,EAAGwI,EAAGxrB,EAAGgrB,EAAE9qB,EAAI,IAAK,gBACjCF,EAAIurB,EAAMvrB,EAAGikB,EAAGjB,EAAGwI,EAAGR,EAAE9qB,EAAI,IAAK,EAAG,YACpCsrB,EAAID,EAAMC,EAAGxrB,EAAGikB,EAAGjB,EAAGgI,EAAE9qB,EAAI,IAAK,cACjC8iB,EAAIuI,EAAMvI,EAAGwI,EAAGxrB,EAAGikB,EAAG+G,EAAE9qB,EAAI,IAAK,gBACjC+jB,EAAIsH,EAAMtH,EAAGjB,EAAGwI,EAAGxrB,EAAGgrB,EAAE9qB,EAAI,IAAK,GAAI,YAErCF,EAAIyrB,EAAMzrB,EAAGikB,EAAGjB,EAAGwI,EAAGR,EAAE9qB,EAAI,GAAI,cAChCsrB,EAAIC,EAAMD,EAAGxrB,EAAGikB,EAAGjB,EAAGgI,EAAE9qB,EAAI,GAAI,eAChC8iB,EAAIyI,EAAMzI,EAAGwI,EAAGxrB,EAAGikB,EAAG+G,EAAE9qB,EAAI,IAAK,GAAI,WACrC+jB,EAAIwH,EAAMxH,EAAGjB,EAAGwI,EAAGxrB,EAAGgrB,EAAE9qB,GAAI,eAC5BF,EAAIyrB,EAAMzrB,EAAGikB,EAAGjB,EAAGwI,EAAGR,EAAE9qB,EAAI,GAAI,cAChCsrB,EAAIC,EAAMD,EAAGxrB,EAAGikB,EAAGjB,EAAGgI,EAAE9qB,EAAI,IAAK,EAAG,UACpC8iB,EAAIyI,EAAMzI,EAAGwI,EAAGxrB,EAAGikB,EAAG+G,EAAE9qB,EAAI,IAAK,eACjC+jB,EAAIwH,EAAMxH,EAAGjB,EAAGwI,EAAGxrB,EAAGgrB,EAAE9qB,EAAI,GAAI,eAChCF,EAAIyrB,EAAMzrB,EAAGikB,EAAGjB,EAAGwI,EAAGR,EAAE9qB,EAAI,GAAI,EAAG,WACnCsrB,EAAIC,EAAMD,EAAGxrB,EAAGikB,EAAGjB,EAAGgI,EAAE9qB,EAAI,IAAK,eACjC8iB,EAAIyI,EAAMzI,EAAGwI,EAAGxrB,EAAGikB,EAAG+G,EAAE9qB,EAAI,GAAI,eAChC+jB,EAAIwH,EAAMxH,EAAGjB,EAAGwI,EAAGxrB,EAAGgrB,EAAE9qB,EAAI,GAAI,GAAI,YACpCF,EAAIyrB,EAAMzrB,EAAGikB,EAAGjB,EAAGwI,EAAGR,EAAE9qB,EAAI,IAAK,eACjCsrB,EAAIC,EAAMD,EAAGxrB,EAAGikB,EAAGjB,EAAGgI,EAAE9qB,EAAI,GAAI,aAChC8iB,EAAIyI,EAAMzI,EAAGwI,EAAGxrB,EAAGikB,EAAG+G,EAAE9qB,EAAI,GAAI,GAAI,YACpC+jB,EAAIwH,EAAMxH,EAAGjB,EAAGwI,EAAGxrB,EAAGgrB,EAAE9qB,EAAI,IAAK,gBAEjCF,EAAI0rB,EAAM1rB,EAAGikB,EAAGjB,EAAGwI,EAAGR,EAAE9qB,EAAI,GAAI,WAChCsrB,EAAIE,EAAMF,EAAGxrB,EAAGikB,EAAGjB,EAAGgI,EAAE9qB,EAAI,GAAI,gBAChC8iB,EAAI0I,EAAM1I,EAAGwI,EAAGxrB,EAAGikB,EAAG+G,EAAE9qB,EAAI,IAAK,GAAI,YACrC+jB,EAAIyH,EAAMzH,EAAGjB,EAAGwI,EAAGxrB,EAAGgrB,EAAE9qB,EAAI,IAAK,cACjCF,EAAI0rB,EAAM1rB,EAAGikB,EAAGjB,EAAGwI,EAAGR,EAAE9qB,EAAI,GAAI,eAChCsrB,EAAIE,EAAMF,EAAGxrB,EAAGikB,EAAGjB,EAAGgI,EAAE9qB,EAAI,GAAI,GAAI,YACpC8iB,EAAI0I,EAAM1I,EAAGwI,EAAGxrB,EAAGikB,EAAG+G,EAAE9qB,EAAI,GAAI,eAChC+jB,EAAIyH,EAAMzH,EAAGjB,EAAGwI,EAAGxrB,EAAGgrB,EAAE9qB,EAAI,IAAK,gBACjCF,EAAI0rB,EAAM1rB,EAAGikB,EAAGjB,EAAGwI,EAAGR,EAAE9qB,EAAI,IAAK,EAAG,WACpCsrB,EAAIE,EAAMF,EAAGxrB,EAAGikB,EAAGjB,EAAGgI,EAAE9qB,GAAI,eAC5B8iB,EAAI0I,EAAM1I,EAAGwI,EAAGxrB,EAAGikB,EAAG+G,EAAE9qB,EAAI,GAAI,eAChC+jB,EAAIyH,EAAMzH,EAAGjB,EAAGwI,EAAGxrB,EAAGgrB,EAAE9qB,EAAI,GAAI,GAAI,UACpCF,EAAI0rB,EAAM1rB,EAAGikB,EAAGjB,EAAGwI,EAAGR,EAAE9qB,EAAI,GAAI,cAChCsrB,EAAIE,EAAMF,EAAGxrB,EAAGikB,EAAGjB,EAAGgI,EAAE9qB,EAAI,IAAK,eACjC8iB,EAAI0I,EAAM1I,EAAGwI,EAAGxrB,EAAGikB,EAAG+G,EAAE9qB,EAAI,IAAK,GAAI,WACrC+jB,EAAIyH,EAAMzH,EAAGjB,EAAGwI,EAAGxrB,EAAGgrB,EAAE9qB,EAAI,GAAI,eAEhCF,EAAI2rB,EAAM3rB,EAAGikB,EAAGjB,EAAGwI,EAAGR,EAAE9qB,GAAI,cAC5BsrB,EAAIG,EAAMH,EAAGxrB,EAAGikB,EAAGjB,EAAGgI,EAAE9qB,EAAI,GAAI,GAAI,YACpC8iB,EAAI2I,EAAM3I,EAAGwI,EAAGxrB,EAAGikB,EAAG+G,EAAE9qB,EAAI,IAAK,gBACjC+jB,EAAI0H,EAAM1H,EAAGjB,EAAGwI,EAAGxrB,EAAGgrB,EAAE9qB,EAAI,GAAI,cAChCF,EAAI2rB,EAAM3rB,EAAGikB,EAAGjB,EAAGwI,EAAGR,EAAE9qB,EAAI,IAAK,EAAG,YACpCsrB,EAAIG,EAAMH,EAAGxrB,EAAGikB,EAAGjB,EAAGgI,EAAE9qB,EAAI,GAAI,gBAChC8iB,EAAI2I,EAAM3I,EAAGwI,EAAGxrB,EAAGikB,EAAG+G,EAAE9qB,EAAI,IAAK,aACjC+jB,EAAI0H,EAAM1H,EAAGjB,EAAGwI,EAAGxrB,EAAGgrB,EAAE9qB,EAAI,GAAI,gBAChCF,EAAI2rB,EAAM3rB,EAAGikB,EAAGjB,EAAGwI,EAAGR,EAAE9qB,EAAI,GAAI,EAAG,YACnCsrB,EAAIG,EAAMH,EAAGxrB,EAAGikB,EAAGjB,EAAGgI,EAAE9qB,EAAI,IAAK,cACjC8iB,EAAI2I,EAAM3I,EAAGwI,EAAGxrB,EAAGikB,EAAG+G,EAAE9qB,EAAI,GAAI,gBAChC+jB,EAAI0H,EAAM1H,EAAGjB,EAAGwI,EAAGxrB,EAAGgrB,EAAE9qB,EAAI,IAAK,GAAI,YACrCF,EAAI2rB,EAAM3rB,EAAGikB,EAAGjB,EAAGwI,EAAGR,EAAE9qB,EAAI,GAAI,cAChCsrB,EAAIG,EAAMH,EAAGxrB,EAAGikB,EAAGjB,EAAGgI,EAAE9qB,EAAI,IAAK,gBACjC8iB,EAAI2I,EAAM3I,EAAGwI,EAAGxrB,EAAGikB,EAAG+G,EAAE9qB,EAAI,GAAI,GAAI,WACpC+jB,EAAI0H,EAAM1H,EAAGjB,EAAGwI,EAAGxrB,EAAGgrB,EAAE9qB,EAAI,GAAI,eAEhCF,EAAI+qB,EAAQ/qB,EAAG6rB,GACf5H,EAAI8G,EAAQ9G,EAAG6H,GACf9I,EAAI+H,EAAQ/H,EAAG+I,GACfP,EAAIT,EAAQS,EAAGQ,EAEjB,QAAQhsB,EAAGikB,EAAGjB,EAAGwI,GAMnB,QAASS,GAAUvH,GACjB,GAAIxkB,GACA0kB,EAAS,GACTsH,EAA0B,GAAfxH,EAAMnkB,MACrB,KAAKL,EAAI,EAAGA,EAAIgsB,EAAUhsB,GAAK,EAC7B0kB,GAAUC,OAAOsH,aAAczH,EAAMxkB,GAAK,KAAQA,EAAI,GAAO,IAE/D,OAAO0kB,GAOT,QAASwH,GAAU1H,GACjB,GAAIxkB,GACA0kB,IAEJ,KADAA,GAAQF,EAAMnkB,QAAU,GAAK,GAAKgN,OAC7BrN,EAAI,EAAGA,EAAI0kB,EAAOrkB,OAAQL,GAAK,EAClC0kB,EAAO1kB,GAAK,CAEd,IAAImsB,GAAyB,EAAf3H,EAAMnkB,MACpB,KAAKL,EAAI,EAAGA,EAAImsB,EAASnsB,GAAK,EAC5B0kB,EAAO1kB,GAAK,KAAiC,IAA1BwkB,EAAM4H,WAAWpsB,EAAI,KAAeA,EAAI,EAE7D,OAAO0kB,GAMT,QAAS2H,GAAQ1sB,GACf,MAAOosB,GAAUL,EAAQQ,EAAUvsB,GAAe,EAAXA,EAAEU,SAM3C,QAASisB,GAAYrhB,EAAKjK,GACxB,GAAIhB,GAIA6f,EAHA0M,EAAOL,EAAUjhB,GACjBuhB,KACAC,IAMJ,KAJAD,EAAK,IAAMC,EAAK,IAAMpf,OAClBkf,EAAKlsB,OAAS,KAChBksB,EAAOb,EAAQa,EAAmB,EAAbthB,EAAI5K,SAEtBL,EAAI,EAAGA,EAAI,GAAIA,GAAK,EACvBwsB,EAAKxsB,GAAe,UAAVusB,EAAKvsB,GACfysB,EAAKzsB,GAAe,WAAVusB,EAAKvsB,EAGjB,OADA6f,GAAO6L,EAAQc,EAAKlT,OAAO4S,EAAUlrB,IAAQ,IAAoB,EAAdA,EAAKX,QACjD0rB,EAAUL,EAAQe,EAAKnT,OAAOuG,GAAO,MAM9C,QAAS6M,GAASlI,GAChB,GAEIsG,GACA9qB,EAHA2sB,EAAS,mBACTjI,EAAS,EAGb,KAAK1kB,EAAI,EAAGA,EAAIwkB,EAAMnkB,OAAQL,GAAK,EACjC8qB,EAAItG,EAAM4H,WAAWpsB,GACrB0kB,GAAUiI,EAAOxD,OAAQ2B,IAAM,EAAK,IAAQ6B,EAAOxD,OAAW,GAAJ2B,EAE5D,OAAOpG,GAMT,QAASkI,GAAapI,GACpB,MAAOqI,UAASxa,mBAAmBmS,IAMrC,QAASsI,GAAOntB,GACd,MAAO0sB,GAAQO,EAAajtB,IAE9B,QAASotB,GAAOptB,GACd,MAAO+sB,GAASI,EAAOntB,IAEzB,QAASqtB,GAAWhH,EAAGsF,GACrB,MAAOgB,GAAYM,EAAa5G,GAAI4G,EAAatB,IAEnD,QAAS2B,GAAWjH,EAAGsF,GACrB,MAAOoB,GAASM,EAAWhH,EAAGsF,IAGhC,QAAS3iB,GAAIukB,EAAQjiB,EAAKkiB,GACxB,MAAKliB,GAMAkiB,EAGEH,EAAW/hB,EAAKiiB,GAFdD,EAAWhiB,EAAKiiB,GANlBC,EAGEL,EAAOI,GAFLH,EAAOG,GAUpBpuB,EAAOD,QAAU8J,YAEN,EAAE,EAAE,EAAE,EAAE,IAAI","file":"raven.min.js"} \ No newline at end of file diff --git a/packages/raven-js/dist/console,ember,require/raven.js b/packages/raven-js/dist/console,ember,require/raven.js new file mode 100644 index 000000000000..4801c4c7f1bf --- /dev/null +++ b/packages/raven-js/dist/console,ember,require/raven.js @@ -0,0 +1,4095 @@ +/*! Raven.js 3.25.2 (30b6d4e) | github.com/getsentry/raven-js */ + +/* + * Includes TraceKit + * https://github.com/getsentry/TraceKit + * + * Copyright 2018 Matt Robenolt and other contributors + * Released under the BSD license + * https://github.com/getsentry/raven-js/blob/master/LICENSE + * + */ + +(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.Raven = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o captureException(string) => captureMessage(string) + if (initialCall && initialCall.func === 'Raven.captureException') { + initialCall = stack.stack[2]; + } + + var fileurl = (initialCall && initialCall.url) || ''; + + if ( + !!this._globalOptions.ignoreUrls.test && + this._globalOptions.ignoreUrls.test(fileurl) + ) { + return; + } + + if ( + !!this._globalOptions.whitelistUrls.test && + !this._globalOptions.whitelistUrls.test(fileurl) + ) { + return; + } + + if (this._globalOptions.stacktrace || (options && options.stacktrace)) { + // fingerprint on msg, not stack trace (legacy behavior, could be revisited) + data.fingerprint = data.fingerprint == null ? msg : data.fingerprint; + + options = objectMerge( + { + trimHeadFrames: 0 + }, + options + ); + // Since we know this is a synthetic trace, the top frame (this function call) + // MUST be from Raven.js, so mark it for trimming + // We add to the trim counter so that callers can choose to trim extra frames, such + // as utility functions. + options.trimHeadFrames += 1; + + var frames = this._prepareFrames(stack, options); + data.stacktrace = { + // Sentry expects frames oldest to newest + frames: frames.reverse() + }; + } + + // Make sure that fingerprint is always wrapped in an array + if (data.fingerprint) { + data.fingerprint = isArray(data.fingerprint) + ? data.fingerprint + : [data.fingerprint]; + } + + // Fire away! + this._send(data); + + return this; + }, + + captureBreadcrumb: function(obj) { + var crumb = objectMerge( + { + timestamp: now() / 1000 + }, + obj + ); + + if (isFunction(this._globalOptions.breadcrumbCallback)) { + var result = this._globalOptions.breadcrumbCallback(crumb); + + if (isObject(result) && !isEmptyObject(result)) { + crumb = result; + } else if (result === false) { + return this; + } + } + + this._breadcrumbs.push(crumb); + if (this._breadcrumbs.length > this._globalOptions.maxBreadcrumbs) { + this._breadcrumbs.shift(); + } + return this; + }, + + addPlugin: function(plugin /*arg1, arg2, ... argN*/) { + var pluginArgs = [].slice.call(arguments, 1); + + this._plugins.push([plugin, pluginArgs]); + if (this._isRavenInstalled) { + this._drainPlugins(); + } + + return this; + }, + + /* + * Set/clear a user to be sent along with the payload. + * + * @param {object} user An object representing user data [optional] + * @return {Raven} + */ + setUserContext: function(user) { + // Intentionally do not merge here since that's an unexpected behavior. + this._globalContext.user = user; + + return this; + }, + + /* + * Merge extra attributes to be sent along with the payload. + * + * @param {object} extra An object representing extra data [optional] + * @return {Raven} + */ + setExtraContext: function(extra) { + this._mergeContext('extra', extra); + + return this; + }, + + /* + * Merge tags to be sent along with the payload. + * + * @param {object} tags An object representing tags [optional] + * @return {Raven} + */ + setTagsContext: function(tags) { + this._mergeContext('tags', tags); + + return this; + }, + + /* + * Clear all of the context. + * + * @return {Raven} + */ + clearContext: function() { + this._globalContext = {}; + + return this; + }, + + /* + * Get a copy of the current context. This cannot be mutated. + * + * @return {object} copy of context + */ + getContext: function() { + // lol javascript + return JSON.parse(stringify(this._globalContext)); + }, + + /* + * Set environment of application + * + * @param {string} environment Typically something like 'production'. + * @return {Raven} + */ + setEnvironment: function(environment) { + this._globalOptions.environment = environment; + + return this; + }, + + /* + * Set release version of application + * + * @param {string} release Typically something like a git SHA to identify version + * @return {Raven} + */ + setRelease: function(release) { + this._globalOptions.release = release; + + return this; + }, + + /* + * Set the dataCallback option + * + * @param {function} callback The callback to run which allows the + * data blob to be mutated before sending + * @return {Raven} + */ + setDataCallback: function(callback) { + var original = this._globalOptions.dataCallback; + this._globalOptions.dataCallback = keepOriginalCallback(original, callback); + return this; + }, + + /* + * Set the breadcrumbCallback option + * + * @param {function} callback The callback to run which allows filtering + * or mutating breadcrumbs + * @return {Raven} + */ + setBreadcrumbCallback: function(callback) { + var original = this._globalOptions.breadcrumbCallback; + this._globalOptions.breadcrumbCallback = keepOriginalCallback(original, callback); + return this; + }, + + /* + * Set the shouldSendCallback option + * + * @param {function} callback The callback to run which allows + * introspecting the blob before sending + * @return {Raven} + */ + setShouldSendCallback: function(callback) { + var original = this._globalOptions.shouldSendCallback; + this._globalOptions.shouldSendCallback = keepOriginalCallback(original, callback); + return this; + }, + + /** + * Override the default HTTP transport mechanism that transmits data + * to the Sentry server. + * + * @param {function} transport Function invoked instead of the default + * `makeRequest` handler. + * + * @return {Raven} + */ + setTransport: function(transport) { + this._globalOptions.transport = transport; + + return this; + }, + + /* + * Get the latest raw exception that was captured by Raven. + * + * @return {error} + */ + lastException: function() { + return this._lastCapturedException; + }, + + /* + * Get the last event id + * + * @return {string} + */ + lastEventId: function() { + return this._lastEventId; + }, + + /* + * Determine if Raven is setup and ready to go. + * + * @return {boolean} + */ + isSetup: function() { + if (!this._hasJSON) return false; // needs JSON support + if (!this._globalServer) { + if (!this.ravenNotConfiguredError) { + this.ravenNotConfiguredError = true; + this._logDebug('error', 'Error: Raven has not been configured.'); + } + return false; + } + return true; + }, + + afterLoad: function() { + // TODO: remove window dependence? + + // Attempt to initialize Raven on load + var RavenConfig = _window.RavenConfig; + if (RavenConfig) { + this.config(RavenConfig.dsn, RavenConfig.config).install(); + } + }, + + showReportDialog: function(options) { + if ( + !_document // doesn't work without a document (React native) + ) + return; + + options = options || {}; + + var lastEventId = options.eventId || this.lastEventId(); + if (!lastEventId) { + throw new RavenConfigError('Missing eventId'); + } + + var dsn = options.dsn || this._dsn; + if (!dsn) { + throw new RavenConfigError('Missing DSN'); + } + + var encode = encodeURIComponent; + var qs = ''; + qs += '?eventId=' + encode(lastEventId); + qs += '&dsn=' + encode(dsn); + + var user = options.user || this._globalContext.user; + if (user) { + if (user.name) qs += '&name=' + encode(user.name); + if (user.email) qs += '&email=' + encode(user.email); + } + + var globalServer = this._getGlobalServer(this._parseDSN(dsn)); + + var script = _document.createElement('script'); + script.async = true; + script.src = globalServer + '/api/embed/error-page/' + qs; + (_document.head || _document.body).appendChild(script); + }, + + /**** Private functions ****/ + _ignoreNextOnError: function() { + var self = this; + this._ignoreOnError += 1; + setTimeout(function() { + // onerror should trigger before setTimeout + self._ignoreOnError -= 1; + }); + }, + + _triggerEvent: function(eventType, options) { + // NOTE: `event` is a native browser thing, so let's avoid conflicting wiht it + var evt, key; + + if (!this._hasDocument) return; + + options = options || {}; + + eventType = 'raven' + eventType.substr(0, 1).toUpperCase() + eventType.substr(1); + + if (_document.createEvent) { + evt = _document.createEvent('HTMLEvents'); + evt.initEvent(eventType, true, true); + } else { + evt = _document.createEventObject(); + evt.eventType = eventType; + } + + for (key in options) + if (hasKey(options, key)) { + evt[key] = options[key]; + } + + if (_document.createEvent) { + // IE9 if standards + _document.dispatchEvent(evt); + } else { + // IE8 regardless of Quirks or Standards + // IE9 if quirks + try { + _document.fireEvent('on' + evt.eventType.toLowerCase(), evt); + } catch (e) { + // Do nothing + } + } + }, + + /** + * Wraps addEventListener to capture UI breadcrumbs + * @param evtName the event name (e.g. "click") + * @returns {Function} + * @private + */ + _breadcrumbEventHandler: function(evtName) { + var self = this; + return function(evt) { + // reset keypress timeout; e.g. triggering a 'click' after + // a 'keypress' will reset the keypress debounce so that a new + // set of keypresses can be recorded + self._keypressTimeout = null; + + // It's possible this handler might trigger multiple times for the same + // event (e.g. event propagation through node ancestors). Ignore if we've + // already captured the event. + if (self._lastCapturedEvent === evt) return; + + self._lastCapturedEvent = evt; + + // try/catch both: + // - accessing evt.target (see getsentry/raven-js#838, #768) + // - `htmlTreeAsString` because it's complex, and just accessing the DOM incorrectly + // can throw an exception in some circumstances. + var target; + try { + target = htmlTreeAsString(evt.target); + } catch (e) { + target = ''; + } + + self.captureBreadcrumb({ + category: 'ui.' + evtName, // e.g. ui.click, ui.input + message: target + }); + }; + }, + + /** + * Wraps addEventListener to capture keypress UI events + * @returns {Function} + * @private + */ + _keypressEventHandler: function() { + var self = this, + debounceDuration = 1000; // milliseconds + + // TODO: if somehow user switches keypress target before + // debounce timeout is triggered, we will only capture + // a single breadcrumb from the FIRST target (acceptable?) + return function(evt) { + var target; + try { + target = evt.target; + } catch (e) { + // just accessing event properties can throw an exception in some rare circumstances + // see: https://github.com/getsentry/raven-js/issues/838 + return; + } + var tagName = target && target.tagName; + + // only consider keypress events on actual input elements + // this will disregard keypresses targeting body (e.g. tabbing + // through elements, hotkeys, etc) + if ( + !tagName || + (tagName !== 'INPUT' && tagName !== 'TEXTAREA' && !target.isContentEditable) + ) + return; + + // record first keypress in a series, but ignore subsequent + // keypresses until debounce clears + var timeout = self._keypressTimeout; + if (!timeout) { + self._breadcrumbEventHandler('input')(evt); + } + clearTimeout(timeout); + self._keypressTimeout = setTimeout(function() { + self._keypressTimeout = null; + }, debounceDuration); + }; + }, + + /** + * Captures a breadcrumb of type "navigation", normalizing input URLs + * @param to the originating URL + * @param from the target URL + * @private + */ + _captureUrlChange: function(from, to) { + var parsedLoc = parseUrl(this._location.href); + var parsedTo = parseUrl(to); + var parsedFrom = parseUrl(from); + + // because onpopstate only tells you the "new" (to) value of location.href, and + // not the previous (from) value, we need to track the value of the current URL + // state ourselves + this._lastHref = to; + + // Use only the path component of the URL if the URL matches the current + // document (almost all the time when using pushState) + if (parsedLoc.protocol === parsedTo.protocol && parsedLoc.host === parsedTo.host) + to = parsedTo.relative; + if (parsedLoc.protocol === parsedFrom.protocol && parsedLoc.host === parsedFrom.host) + from = parsedFrom.relative; + + this.captureBreadcrumb({ + category: 'navigation', + data: { + to: to, + from: from + } + }); + }, + + _patchFunctionToString: function() { + var self = this; + self._originalFunctionToString = Function.prototype.toString; + // eslint-disable-next-line no-extend-native + Function.prototype.toString = function() { + if (typeof this === 'function' && this.__raven__) { + return self._originalFunctionToString.apply(this.__orig__, arguments); + } + return self._originalFunctionToString.apply(this, arguments); + }; + }, + + _unpatchFunctionToString: function() { + if (this._originalFunctionToString) { + // eslint-disable-next-line no-extend-native + Function.prototype.toString = this._originalFunctionToString; + } + }, + + /** + * Wrap timer functions and event targets to catch errors and provide + * better metadata. + */ + _instrumentTryCatch: function() { + var self = this; + + var wrappedBuiltIns = self._wrappedBuiltIns; + + function wrapTimeFn(orig) { + return function(fn, t) { + // preserve arity + // Make a copy of the arguments to prevent deoptimization + // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments + var args = new Array(arguments.length); + for (var i = 0; i < args.length; ++i) { + args[i] = arguments[i]; + } + var originalCallback = args[0]; + if (isFunction(originalCallback)) { + args[0] = self.wrap(originalCallback); + } + + // IE < 9 doesn't support .call/.apply on setInterval/setTimeout, but it + // also supports only two arguments and doesn't care what this is, so we + // can just call the original function directly. + if (orig.apply) { + return orig.apply(this, args); + } else { + return orig(args[0], args[1]); + } + }; + } + + var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; + + function wrapEventTarget(global) { + var proto = _window[global] && _window[global].prototype; + if (proto && proto.hasOwnProperty && proto.hasOwnProperty('addEventListener')) { + fill( + proto, + 'addEventListener', + function(orig) { + return function(evtName, fn, capture, secure) { + // preserve arity + try { + if (fn && fn.handleEvent) { + fn.handleEvent = self.wrap(fn.handleEvent); + } + } catch (err) { + // can sometimes get 'Permission denied to access property "handle Event' + } + + // More breadcrumb DOM capture ... done here and not in `_instrumentBreadcrumbs` + // so that we don't have more than one wrapper function + var before, clickHandler, keypressHandler; + + if ( + autoBreadcrumbs && + autoBreadcrumbs.dom && + (global === 'EventTarget' || global === 'Node') + ) { + // NOTE: generating multiple handlers per addEventListener invocation, should + // revisit and verify we can just use one (almost certainly) + clickHandler = self._breadcrumbEventHandler('click'); + keypressHandler = self._keypressEventHandler(); + before = function(evt) { + // need to intercept every DOM event in `before` argument, in case that + // same wrapped method is re-used for different events (e.g. mousemove THEN click) + // see #724 + if (!evt) return; + + var eventType; + try { + eventType = evt.type; + } catch (e) { + // just accessing event properties can throw an exception in some rare circumstances + // see: https://github.com/getsentry/raven-js/issues/838 + return; + } + if (eventType === 'click') return clickHandler(evt); + else if (eventType === 'keypress') return keypressHandler(evt); + }; + } + return orig.call( + this, + evtName, + self.wrap(fn, undefined, before), + capture, + secure + ); + }; + }, + wrappedBuiltIns + ); + fill( + proto, + 'removeEventListener', + function(orig) { + return function(evt, fn, capture, secure) { + try { + fn = fn && (fn.__raven_wrapper__ ? fn.__raven_wrapper__ : fn); + } catch (e) { + // ignore, accessing __raven_wrapper__ will throw in some Selenium environments + } + return orig.call(this, evt, fn, capture, secure); + }; + }, + wrappedBuiltIns + ); + } + } + + fill(_window, 'setTimeout', wrapTimeFn, wrappedBuiltIns); + fill(_window, 'setInterval', wrapTimeFn, wrappedBuiltIns); + if (_window.requestAnimationFrame) { + fill( + _window, + 'requestAnimationFrame', + function(orig) { + return function(cb) { + return orig(self.wrap(cb)); + }; + }, + wrappedBuiltIns + ); + } + + // event targets borrowed from bugsnag-js: + // https://github.com/bugsnag/bugsnag-js/blob/master/src/bugsnag.js#L666 + var eventTargets = [ + 'EventTarget', + 'Window', + 'Node', + 'ApplicationCache', + 'AudioTrackList', + 'ChannelMergerNode', + 'CryptoOperation', + 'EventSource', + 'FileReader', + 'HTMLUnknownElement', + 'IDBDatabase', + 'IDBRequest', + 'IDBTransaction', + 'KeyOperation', + 'MediaController', + 'MessagePort', + 'ModalWindow', + 'Notification', + 'SVGElementInstance', + 'Screen', + 'TextTrack', + 'TextTrackCue', + 'TextTrackList', + 'WebSocket', + 'WebSocketWorker', + 'Worker', + 'XMLHttpRequest', + 'XMLHttpRequestEventTarget', + 'XMLHttpRequestUpload' + ]; + for (var i = 0; i < eventTargets.length; i++) { + wrapEventTarget(eventTargets[i]); + } + }, + + /** + * Instrument browser built-ins w/ breadcrumb capturing + * - XMLHttpRequests + * - DOM interactions (click/typing) + * - window.location changes + * - console + * + * Can be disabled or individually configured via the `autoBreadcrumbs` config option + */ + _instrumentBreadcrumbs: function() { + var self = this; + var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; + + var wrappedBuiltIns = self._wrappedBuiltIns; + + function wrapProp(prop, xhr) { + if (prop in xhr && isFunction(xhr[prop])) { + fill(xhr, prop, function(orig) { + return self.wrap(orig); + }); // intentionally don't track filled methods on XHR instances + } + } + + if (autoBreadcrumbs.xhr && 'XMLHttpRequest' in _window) { + var xhrproto = _window.XMLHttpRequest && _window.XMLHttpRequest.prototype; + fill( + xhrproto, + 'open', + function(origOpen) { + return function(method, url) { + // preserve arity + + // if Sentry key appears in URL, don't capture + if (isString(url) && url.indexOf(self._globalKey) === -1) { + this.__raven_xhr = { + method: method, + url: url, + status_code: null + }; + } + + return origOpen.apply(this, arguments); + }; + }, + wrappedBuiltIns + ); + + fill( + xhrproto, + 'send', + function(origSend) { + return function() { + // preserve arity + var xhr = this; + + function onreadystatechangeHandler() { + if (xhr.__raven_xhr && xhr.readyState === 4) { + try { + // touching statusCode in some platforms throws + // an exception + xhr.__raven_xhr.status_code = xhr.status; + } catch (e) { + /* do nothing */ + } + + self.captureBreadcrumb({ + type: 'http', + category: 'xhr', + data: xhr.__raven_xhr + }); + } + } + + var props = ['onload', 'onerror', 'onprogress']; + for (var j = 0; j < props.length; j++) { + wrapProp(props[j], xhr); + } + + if ('onreadystatechange' in xhr && isFunction(xhr.onreadystatechange)) { + fill( + xhr, + 'onreadystatechange', + function(orig) { + return self.wrap(orig, undefined, onreadystatechangeHandler); + } /* intentionally don't track this instrumentation */ + ); + } else { + // if onreadystatechange wasn't actually set by the page on this xhr, we + // are free to set our own and capture the breadcrumb + xhr.onreadystatechange = onreadystatechangeHandler; + } + + return origSend.apply(this, arguments); + }; + }, + wrappedBuiltIns + ); + } + + if (autoBreadcrumbs.xhr && supportsFetch()) { + fill( + _window, + 'fetch', + function(origFetch) { + return function() { + // preserve arity + // Make a copy of the arguments to prevent deoptimization + // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments + var args = new Array(arguments.length); + for (var i = 0; i < args.length; ++i) { + args[i] = arguments[i]; + } + + var fetchInput = args[0]; + var method = 'GET'; + var url; + + if (typeof fetchInput === 'string') { + url = fetchInput; + } else if ('Request' in _window && fetchInput instanceof _window.Request) { + url = fetchInput.url; + if (fetchInput.method) { + method = fetchInput.method; + } + } else { + url = '' + fetchInput; + } + + // if Sentry key appears in URL, don't capture, as it's our own request + if (url.indexOf(self._globalKey) !== -1) { + return origFetch.apply(this, args); + } + + if (args[1] && args[1].method) { + method = args[1].method; + } + + var fetchData = { + method: method, + url: url, + status_code: null + }; + + return origFetch + .apply(this, args) + .then(function(response) { + fetchData.status_code = response.status; + + self.captureBreadcrumb({ + type: 'http', + category: 'fetch', + data: fetchData + }); + + return response; + }) + ['catch'](function(err) { + // if there is an error performing the request + self.captureBreadcrumb({ + type: 'http', + category: 'fetch', + data: fetchData, + level: 'error' + }); + + throw err; + }); + }; + }, + wrappedBuiltIns + ); + } + + // Capture breadcrumbs from any click that is unhandled / bubbled up all the way + // to the document. Do this before we instrument addEventListener. + if (autoBreadcrumbs.dom && this._hasDocument) { + if (_document.addEventListener) { + _document.addEventListener('click', self._breadcrumbEventHandler('click'), false); + _document.addEventListener('keypress', self._keypressEventHandler(), false); + } else if (_document.attachEvent) { + // IE8 Compatibility + _document.attachEvent('onclick', self._breadcrumbEventHandler('click')); + _document.attachEvent('onkeypress', self._keypressEventHandler()); + } + } + + // record navigation (URL) changes + // NOTE: in Chrome App environment, touching history.pushState, *even inside + // a try/catch block*, will cause Chrome to output an error to console.error + // borrowed from: https://github.com/angular/angular.js/pull/13945/files + var chrome = _window.chrome; + var isChromePackagedApp = chrome && chrome.app && chrome.app.runtime; + var hasPushAndReplaceState = + !isChromePackagedApp && + _window.history && + _window.history.pushState && + _window.history.replaceState; + if (autoBreadcrumbs.location && hasPushAndReplaceState) { + // TODO: remove onpopstate handler on uninstall() + var oldOnPopState = _window.onpopstate; + _window.onpopstate = function() { + var currentHref = self._location.href; + self._captureUrlChange(self._lastHref, currentHref); + + if (oldOnPopState) { + return oldOnPopState.apply(this, arguments); + } + }; + + var historyReplacementFunction = function(origHistFunction) { + // note history.pushState.length is 0; intentionally not declaring + // params to preserve 0 arity + return function(/* state, title, url */) { + var url = arguments.length > 2 ? arguments[2] : undefined; + + // url argument is optional + if (url) { + // coerce to string (this is what pushState does) + self._captureUrlChange(self._lastHref, url + ''); + } + + return origHistFunction.apply(this, arguments); + }; + }; + + fill(_window.history, 'pushState', historyReplacementFunction, wrappedBuiltIns); + fill(_window.history, 'replaceState', historyReplacementFunction, wrappedBuiltIns); + } + + if (autoBreadcrumbs.console && 'console' in _window && console.log) { + // console + var consoleMethodCallback = function(msg, data) { + self.captureBreadcrumb({ + message: msg, + level: data.level, + category: 'console' + }); + }; + + each(['debug', 'info', 'warn', 'error', 'log'], function(_, level) { + wrapConsoleMethod(console, level, consoleMethodCallback); + }); + } + }, + + _restoreBuiltIns: function() { + // restore any wrapped builtins + var builtin; + while (this._wrappedBuiltIns.length) { + builtin = this._wrappedBuiltIns.shift(); + + var obj = builtin[0], + name = builtin[1], + orig = builtin[2]; + + obj[name] = orig; + } + }, + + _restoreConsole: function() { + // eslint-disable-next-line guard-for-in + for (var method in this._originalConsoleMethods) { + this._originalConsole[method] = this._originalConsoleMethods[method]; + } + }, + + _drainPlugins: function() { + var self = this; + + // FIX ME TODO + each(this._plugins, function(_, plugin) { + var installer = plugin[0]; + var args = plugin[1]; + installer.apply(self, [self].concat(args)); + }); + }, + + _parseDSN: function(str) { + var m = dsnPattern.exec(str), + dsn = {}, + i = 7; + + try { + while (i--) dsn[dsnKeys[i]] = m[i] || ''; + } catch (e) { + throw new RavenConfigError('Invalid DSN: ' + str); + } + + if (dsn.pass && !this._globalOptions.allowSecretKey) { + throw new RavenConfigError( + 'Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key' + ); + } + + return dsn; + }, + + _getGlobalServer: function(uri) { + // assemble the endpoint from the uri pieces + var globalServer = '//' + uri.host + (uri.port ? ':' + uri.port : ''); + + if (uri.protocol) { + globalServer = uri.protocol + ':' + globalServer; + } + return globalServer; + }, + + _handleOnErrorStackInfo: function() { + // if we are intentionally ignoring errors via onerror, bail out + if (!this._ignoreOnError) { + this._handleStackInfo.apply(this, arguments); + } + }, + + _handleStackInfo: function(stackInfo, options) { + var frames = this._prepareFrames(stackInfo, options); + + this._triggerEvent('handle', { + stackInfo: stackInfo, + options: options + }); + + this._processException( + stackInfo.name, + stackInfo.message, + stackInfo.url, + stackInfo.lineno, + frames, + options + ); + }, + + _prepareFrames: function(stackInfo, options) { + var self = this; + var frames = []; + if (stackInfo.stack && stackInfo.stack.length) { + each(stackInfo.stack, function(i, stack) { + var frame = self._normalizeFrame(stack, stackInfo.url); + if (frame) { + frames.push(frame); + } + }); + + // e.g. frames captured via captureMessage throw + if (options && options.trimHeadFrames) { + for (var j = 0; j < options.trimHeadFrames && j < frames.length; j++) { + frames[j].in_app = false; + } + } + } + frames = frames.slice(0, this._globalOptions.stackTraceLimit); + return frames; + }, + + _normalizeFrame: function(frame, stackInfoUrl) { + // normalize the frames data + var normalized = { + filename: frame.url, + lineno: frame.line, + colno: frame.column, + function: frame.func || '?' + }; + + // Case when we don't have any information about the error + // E.g. throwing a string or raw object, instead of an `Error` in Firefox + // Generating synthetic error doesn't add any value here + // + // We should probably somehow let a user know that they should fix their code + if (!frame.url) { + normalized.filename = stackInfoUrl; // fallback to whole stacks url from onerror handler + } + + normalized.in_app = !// determine if an exception came from outside of our app + // first we check the global includePaths list. + ( + (!!this._globalOptions.includePaths.test && + !this._globalOptions.includePaths.test(normalized.filename)) || + // Now we check for fun, if the function name is Raven or TraceKit + /(Raven|TraceKit)\./.test(normalized['function']) || + // finally, we do a last ditch effort and check for raven.min.js + /raven\.(min\.)?js$/.test(normalized.filename) + ); + + return normalized; + }, + + _processException: function(type, message, fileurl, lineno, frames, options) { + var prefixedMessage = (type ? type + ': ' : '') + (message || ''); + if ( + !!this._globalOptions.ignoreErrors.test && + (this._globalOptions.ignoreErrors.test(message) || + this._globalOptions.ignoreErrors.test(prefixedMessage)) + ) { + return; + } + + var stacktrace; + + if (frames && frames.length) { + fileurl = frames[0].filename || fileurl; + // Sentry expects frames oldest to newest + // and JS sends them as newest to oldest + frames.reverse(); + stacktrace = {frames: frames}; + } else if (fileurl) { + stacktrace = { + frames: [ + { + filename: fileurl, + lineno: lineno, + in_app: true + } + ] + }; + } + + if ( + !!this._globalOptions.ignoreUrls.test && + this._globalOptions.ignoreUrls.test(fileurl) + ) { + return; + } + + if ( + !!this._globalOptions.whitelistUrls.test && + !this._globalOptions.whitelistUrls.test(fileurl) + ) { + return; + } + + var data = objectMerge( + { + // sentry.interfaces.Exception + exception: { + values: [ + { + type: type, + value: message, + stacktrace: stacktrace + } + ] + }, + transaction: fileurl + }, + options + ); + + // Fire away! + this._send(data); + }, + + _trimPacket: function(data) { + // For now, we only want to truncate the two different messages + // but this could/should be expanded to just trim everything + var max = this._globalOptions.maxMessageLength; + if (data.message) { + data.message = truncate(data.message, max); + } + if (data.exception) { + var exception = data.exception.values[0]; + exception.value = truncate(exception.value, max); + } + + var request = data.request; + if (request) { + if (request.url) { + request.url = truncate(request.url, this._globalOptions.maxUrlLength); + } + if (request.Referer) { + request.Referer = truncate(request.Referer, this._globalOptions.maxUrlLength); + } + } + + if (data.breadcrumbs && data.breadcrumbs.values) + this._trimBreadcrumbs(data.breadcrumbs); + + return data; + }, + + /** + * Truncate breadcrumb values (right now just URLs) + */ + _trimBreadcrumbs: function(breadcrumbs) { + // known breadcrumb properties with urls + // TODO: also consider arbitrary prop values that start with (https?)?:// + var urlProps = ['to', 'from', 'url'], + urlProp, + crumb, + data; + + for (var i = 0; i < breadcrumbs.values.length; ++i) { + crumb = breadcrumbs.values[i]; + if ( + !crumb.hasOwnProperty('data') || + !isObject(crumb.data) || + objectFrozen(crumb.data) + ) + continue; + + data = objectMerge({}, crumb.data); + for (var j = 0; j < urlProps.length; ++j) { + urlProp = urlProps[j]; + if (data.hasOwnProperty(urlProp) && data[urlProp]) { + data[urlProp] = truncate(data[urlProp], this._globalOptions.maxUrlLength); + } + } + breadcrumbs.values[i].data = data; + } + }, + + _getHttpData: function() { + if (!this._hasNavigator && !this._hasDocument) return; + var httpData = {}; + + if (this._hasNavigator && _navigator.userAgent) { + httpData.headers = { + 'User-Agent': _navigator.userAgent + }; + } + + // Check in `window` instead of `document`, as we may be in ServiceWorker environment + if (_window.location && _window.location.href) { + httpData.url = _window.location.href; + } + + if (this._hasDocument && _document.referrer) { + if (!httpData.headers) httpData.headers = {}; + httpData.headers.Referer = _document.referrer; + } + + return httpData; + }, + + _resetBackoff: function() { + this._backoffDuration = 0; + this._backoffStart = null; + }, + + _shouldBackoff: function() { + return this._backoffDuration && now() - this._backoffStart < this._backoffDuration; + }, + + /** + * Returns true if the in-process data payload matches the signature + * of the previously-sent data + * + * NOTE: This has to be done at this level because TraceKit can generate + * data from window.onerror WITHOUT an exception object (IE8, IE9, + * other old browsers). This can take the form of an "exception" + * data object with a single frame (derived from the onerror args). + */ + _isRepeatData: function(current) { + var last = this._lastData; + + if ( + !last || + current.message !== last.message || // defined for captureMessage + current.transaction !== last.transaction // defined for captureException/onerror + ) + return false; + + // Stacktrace interface (i.e. from captureMessage) + if (current.stacktrace || last.stacktrace) { + return isSameStacktrace(current.stacktrace, last.stacktrace); + } else if (current.exception || last.exception) { + // Exception interface (i.e. from captureException/onerror) + return isSameException(current.exception, last.exception); + } + + return true; + }, + + _setBackoffState: function(request) { + // If we are already in a backoff state, don't change anything + if (this._shouldBackoff()) { + return; + } + + var status = request.status; + + // 400 - project_id doesn't exist or some other fatal + // 401 - invalid/revoked dsn + // 429 - too many requests + if (!(status === 400 || status === 401 || status === 429)) return; + + var retry; + try { + // If Retry-After is not in Access-Control-Expose-Headers, most + // browsers will throw an exception trying to access it + if (supportsFetch()) { + retry = request.headers.get('Retry-After'); + } else { + retry = request.getResponseHeader('Retry-After'); + } + + // Retry-After is returned in seconds + retry = parseInt(retry, 10) * 1000; + } catch (e) { + /* eslint no-empty:0 */ + } + + this._backoffDuration = retry + ? // If Sentry server returned a Retry-After value, use it + retry + : // Otherwise, double the last backoff duration (starts at 1 sec) + this._backoffDuration * 2 || 1000; + + this._backoffStart = now(); + }, + + _send: function(data) { + var globalOptions = this._globalOptions; + + var baseData = { + project: this._globalProject, + logger: globalOptions.logger, + platform: 'javascript' + }, + httpData = this._getHttpData(); + + if (httpData) { + baseData.request = httpData; + } + + // HACK: delete `trimHeadFrames` to prevent from appearing in outbound payload + if (data.trimHeadFrames) delete data.trimHeadFrames; + + data = objectMerge(baseData, data); + + // Merge in the tags and extra separately since objectMerge doesn't handle a deep merge + data.tags = objectMerge(objectMerge({}, this._globalContext.tags), data.tags); + data.extra = objectMerge(objectMerge({}, this._globalContext.extra), data.extra); + + // Send along our own collected metadata with extra + data.extra['session:duration'] = now() - this._startTime; + + if (this._breadcrumbs && this._breadcrumbs.length > 0) { + // intentionally make shallow copy so that additions + // to breadcrumbs aren't accidentally sent in this request + data.breadcrumbs = { + values: [].slice.call(this._breadcrumbs, 0) + }; + } + + if (this._globalContext.user) { + // sentry.interfaces.User + data.user = this._globalContext.user; + } + + // Include the environment if it's defined in globalOptions + if (globalOptions.environment) data.environment = globalOptions.environment; + + // Include the release if it's defined in globalOptions + if (globalOptions.release) data.release = globalOptions.release; + + // Include server_name if it's defined in globalOptions + if (globalOptions.serverName) data.server_name = globalOptions.serverName; + + data = this._sanitizeData(data); + + // Cleanup empty properties before sending them to the server + Object.keys(data).forEach(function(key) { + if (data[key] == null || data[key] === '' || isEmptyObject(data[key])) { + delete data[key]; + } + }); + + if (isFunction(globalOptions.dataCallback)) { + data = globalOptions.dataCallback(data) || data; + } + + // Why?????????? + if (!data || isEmptyObject(data)) { + return; + } + + // Check if the request should be filtered or not + if ( + isFunction(globalOptions.shouldSendCallback) && + !globalOptions.shouldSendCallback(data) + ) { + return; + } + + // Backoff state: Sentry server previously responded w/ an error (e.g. 429 - too many requests), + // so drop requests until "cool-off" period has elapsed. + if (this._shouldBackoff()) { + this._logDebug('warn', 'Raven dropped error due to backoff: ', data); + return; + } + + if (typeof globalOptions.sampleRate === 'number') { + if (Math.random() < globalOptions.sampleRate) { + this._sendProcessedPayload(data); + } + } else { + this._sendProcessedPayload(data); + } + }, + + _sanitizeData: function(data) { + return sanitize(data, this._globalOptions.sanitizeKeys); + }, + + _getUuid: function() { + return uuid4(); + }, + + _sendProcessedPayload: function(data, callback) { + var self = this; + var globalOptions = this._globalOptions; + + if (!this.isSetup()) return; + + // Try and clean up the packet before sending by truncating long values + data = this._trimPacket(data); + + // ideally duplicate error testing should occur *before* dataCallback/shouldSendCallback, + // but this would require copying an un-truncated copy of the data packet, which can be + // arbitrarily deep (extra_data) -- could be worthwhile? will revisit + if (!this._globalOptions.allowDuplicates && this._isRepeatData(data)) { + this._logDebug('warn', 'Raven dropped repeat event: ', data); + return; + } + + // Send along an event_id if not explicitly passed. + // This event_id can be used to reference the error within Sentry itself. + // Set lastEventId after we know the error should actually be sent + this._lastEventId = data.event_id || (data.event_id = this._getUuid()); + + // Store outbound payload after trim + this._lastData = data; + + this._logDebug('debug', 'Raven about to send:', data); + + var auth = { + sentry_version: '7', + sentry_client: 'raven-js/' + this.VERSION, + sentry_key: this._globalKey + }; + + if (this._globalSecret) { + auth.sentry_secret = this._globalSecret; + } + + var exception = data.exception && data.exception.values[0]; + + // only capture 'sentry' breadcrumb is autoBreadcrumbs is truthy + if ( + this._globalOptions.autoBreadcrumbs && + this._globalOptions.autoBreadcrumbs.sentry + ) { + this.captureBreadcrumb({ + category: 'sentry', + message: exception + ? (exception.type ? exception.type + ': ' : '') + exception.value + : data.message, + event_id: data.event_id, + level: data.level || 'error' // presume error unless specified + }); + } + + var url = this._globalEndpoint; + (globalOptions.transport || this._makeRequest).call(this, { + url: url, + auth: auth, + data: data, + options: globalOptions, + onSuccess: function success() { + self._resetBackoff(); + + self._triggerEvent('success', { + data: data, + src: url + }); + callback && callback(); + }, + onError: function failure(error) { + self._logDebug('error', 'Raven transport failed to send: ', error); + + if (error.request) { + self._setBackoffState(error.request); + } + + self._triggerEvent('failure', { + data: data, + src: url + }); + error = error || new Error('Raven send failed (no additional details provided)'); + callback && callback(error); + } + }); + }, + + _makeRequest: function(opts) { + // Auth is intentionally sent as part of query string (NOT as custom HTTP header) to avoid preflight CORS requests + var url = opts.url + '?' + urlencode(opts.auth); + + var evaluatedHeaders = null; + var evaluatedFetchParameters = {}; + + if (opts.options.headers) { + evaluatedHeaders = this._evaluateHash(opts.options.headers); + } + + if (opts.options.fetchParameters) { + evaluatedFetchParameters = this._evaluateHash(opts.options.fetchParameters); + } + + if (supportsFetch()) { + evaluatedFetchParameters.body = stringify(opts.data); + + var defaultFetchOptions = objectMerge({}, this._fetchDefaults); + var fetchOptions = objectMerge(defaultFetchOptions, evaluatedFetchParameters); + + if (evaluatedHeaders) { + fetchOptions.headers = evaluatedHeaders; + } + + return _window + .fetch(url, fetchOptions) + .then(function(response) { + if (response.ok) { + opts.onSuccess && opts.onSuccess(); + } else { + var error = new Error('Sentry error code: ' + response.status); + // It's called request only to keep compatibility with XHR interface + // and not add more redundant checks in setBackoffState method + error.request = response; + opts.onError && opts.onError(error); + } + }) + ['catch'](function() { + opts.onError && + opts.onError(new Error('Sentry error code: network unavailable')); + }); + } + + var request = _window.XMLHttpRequest && new _window.XMLHttpRequest(); + if (!request) return; + + // if browser doesn't support CORS (e.g. IE7), we are out of luck + var hasCORS = 'withCredentials' in request || typeof XDomainRequest !== 'undefined'; + + if (!hasCORS) return; + + if ('withCredentials' in request) { + request.onreadystatechange = function() { + if (request.readyState !== 4) { + return; + } else if (request.status === 200) { + opts.onSuccess && opts.onSuccess(); + } else if (opts.onError) { + var err = new Error('Sentry error code: ' + request.status); + err.request = request; + opts.onError(err); + } + }; + } else { + request = new XDomainRequest(); + // xdomainrequest cannot go http -> https (or vice versa), + // so always use protocol relative + url = url.replace(/^https?:/, ''); + + // onreadystatechange not supported by XDomainRequest + if (opts.onSuccess) { + request.onload = opts.onSuccess; + } + if (opts.onError) { + request.onerror = function() { + var err = new Error('Sentry error code: XDomainRequest'); + err.request = request; + opts.onError(err); + }; + } + } + + request.open('POST', url); + + if (evaluatedHeaders) { + each(evaluatedHeaders, function(key, value) { + request.setRequestHeader(key, value); + }); + } + + request.send(stringify(opts.data)); + }, + + _evaluateHash: function(hash) { + var evaluated = {}; + + for (var key in hash) { + if (hash.hasOwnProperty(key)) { + var value = hash[key]; + evaluated[key] = typeof value === 'function' ? value() : value; + } + } + + return evaluated; + }, + + _logDebug: function(level) { + // We allow `Raven.debug` and `Raven.config(DSN, { debug: true })` to not make backward incompatible API change + if ( + this._originalConsoleMethods[level] && + (this.debug || this._globalOptions.debug) + ) { + // In IE<10 console methods do not have their own 'apply' method + Function.prototype.apply.call( + this._originalConsoleMethods[level], + this._originalConsole, + [].slice.call(arguments, 1) + ); + } + }, + + _mergeContext: function(key, context) { + if (isUndefined(context)) { + delete this._globalContext[key]; + } else { + this._globalContext[key] = objectMerge(this._globalContext[key] || {}, context); + } + } +}; + +// Deprecations +Raven.prototype.setUser = Raven.prototype.setUserContext; +Raven.prototype.setReleaseContext = Raven.prototype.setRelease; + +module.exports = Raven; + +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"10":10,"11":11,"4":4,"5":5,"8":8,"9":9}],7:[function(_dereq_,module,exports){ +(function (global){ +/** + * Enforces a single instance of the Raven client, and the + * main entry point for Raven. If you are a consumer of the + * Raven library, you SHOULD load this file (vs raven.js). + **/ + +var RavenConstructor = _dereq_(6); + +// This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) +var _window = + typeof window !== 'undefined' + ? window + : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; +var _Raven = _window.Raven; + +var Raven = new RavenConstructor(); + +/* + * Allow multiple versions of Raven to be installed. + * Strip Raven from the global context and returns the instance. + * + * @return {Raven} + */ +Raven.noConflict = function() { + _window.Raven = _Raven; + return Raven; +}; + +Raven.afterLoad(); + +module.exports = Raven; + +/** + * DISCLAIMER: + * + * Expose `Client` constructor for cases where user want to track multiple "sub-applications" in one larger app. + * It's not meant to be used by a wide audience, so pleaaase make sure that you know what you're doing before using it. + * Accidentally calling `install` multiple times, may result in an unexpected behavior that's very hard to debug. + * + * It's called `Client' to be in-line with Raven Node implementation. + * + * HOWTO: + * + * import Raven from 'raven-js'; + * + * const someAppReporter = new Raven.Client(); + * const someOtherAppReporter = new Raven.Client(); + * + * someAppReporter.config('__DSN__', { + * ...config goes here + * }); + * + * someOtherAppReporter.config('__OTHER_DSN__', { + * ...config goes here + * }); + * + * someAppReporter.captureMessage(...); + * someAppReporter.captureException(...); + * someAppReporter.captureBreadcrumb(...); + * + * someOtherAppReporter.captureMessage(...); + * someOtherAppReporter.captureException(...); + * someOtherAppReporter.captureBreadcrumb(...); + * + * It should "just work". + */ +module.exports.Client = RavenConstructor; + +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"6":6}],8:[function(_dereq_,module,exports){ +(function (global){ +var stringify = _dereq_(10); + +var _window = + typeof window !== 'undefined' + ? window + : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; + +function isObject(what) { + return typeof what === 'object' && what !== null; +} + +// Yanked from https://git.io/vS8DV re-used under CC0 +// with some tiny modifications +function isError(value) { + switch (Object.prototype.toString.call(value)) { + case '[object Error]': + return true; + case '[object Exception]': + return true; + case '[object DOMException]': + return true; + default: + return value instanceof Error; + } +} + +function isErrorEvent(value) { + return Object.prototype.toString.call(value) === '[object ErrorEvent]'; +} + +function isDOMError(value) { + return Object.prototype.toString.call(value) === '[object DOMError]'; +} + +function isDOMException(value) { + return Object.prototype.toString.call(value) === '[object DOMException]'; +} + +function isUndefined(what) { + return what === void 0; +} + +function isFunction(what) { + return typeof what === 'function'; +} + +function isPlainObject(what) { + return Object.prototype.toString.call(what) === '[object Object]'; +} + +function isString(what) { + return Object.prototype.toString.call(what) === '[object String]'; +} + +function isArray(what) { + return Object.prototype.toString.call(what) === '[object Array]'; +} + +function isEmptyObject(what) { + if (!isPlainObject(what)) return false; + + for (var _ in what) { + if (what.hasOwnProperty(_)) { + return false; + } + } + return true; +} + +function supportsErrorEvent() { + try { + new ErrorEvent(''); // eslint-disable-line no-new + return true; + } catch (e) { + return false; + } +} + +function supportsDOMError() { + try { + new DOMError(''); // eslint-disable-line no-new + return true; + } catch (e) { + return false; + } +} + +function supportsDOMException() { + try { + new DOMException(''); // eslint-disable-line no-new + return true; + } catch (e) { + return false; + } +} + +function supportsFetch() { + if (!('fetch' in _window)) return false; + + try { + new Headers(); // eslint-disable-line no-new + new Request(''); // eslint-disable-line no-new + new Response(); // eslint-disable-line no-new + return true; + } catch (e) { + return false; + } +} + +// Despite all stars in the sky saying that Edge supports old draft syntax, aka 'never', 'always', 'origin' and 'default +// https://caniuse.com/#feat=referrer-policy +// It doesn't. And it throw exception instead of ignoring this parameter... +// REF: https://github.com/getsentry/raven-js/issues/1233 +function supportsReferrerPolicy() { + if (!supportsFetch()) return false; + + try { + // eslint-disable-next-line no-new + new Request('pickleRick', { + referrerPolicy: 'origin' + }); + return true; + } catch (e) { + return false; + } +} + +function supportsPromiseRejectionEvent() { + return typeof PromiseRejectionEvent === 'function'; +} + +function wrappedCallback(callback) { + function dataCallback(data, original) { + var normalizedData = callback(data) || data; + if (original) { + return original(normalizedData) || normalizedData; + } + return normalizedData; + } + + return dataCallback; +} + +function each(obj, callback) { + var i, j; + + if (isUndefined(obj.length)) { + for (i in obj) { + if (hasKey(obj, i)) { + callback.call(null, i, obj[i]); + } + } + } else { + j = obj.length; + if (j) { + for (i = 0; i < j; i++) { + callback.call(null, i, obj[i]); + } + } + } +} + +function objectMerge(obj1, obj2) { + if (!obj2) { + return obj1; + } + each(obj2, function(key, value) { + obj1[key] = value; + }); + return obj1; +} + +/** + * This function is only used for react-native. + * react-native freezes object that have already been sent over the + * js bridge. We need this function in order to check if the object is frozen. + * So it's ok that objectFrozen returns false if Object.isFrozen is not + * supported because it's not relevant for other "platforms". See related issue: + * https://github.com/getsentry/react-native-sentry/issues/57 + */ +function objectFrozen(obj) { + if (!Object.isFrozen) { + return false; + } + return Object.isFrozen(obj); +} + +function truncate(str, max) { + if (typeof max !== 'number') { + throw new Error('2nd argument to `truncate` function should be a number'); + } + if (typeof str !== 'string' || max === 0) { + return str; + } + return str.length <= max ? str : str.substr(0, max) + '\u2026'; +} + +/** + * hasKey, a better form of hasOwnProperty + * Example: hasKey(MainHostObject, property) === true/false + * + * @param {Object} host object to check property + * @param {string} key to check + */ +function hasKey(object, key) { + return Object.prototype.hasOwnProperty.call(object, key); +} + +function joinRegExp(patterns) { + // Combine an array of regular expressions and strings into one large regexp + // Be mad. + var sources = [], + i = 0, + len = patterns.length, + pattern; + + for (; i < len; i++) { + pattern = patterns[i]; + if (isString(pattern)) { + // If it's a string, we need to escape it + // Taken from: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions + sources.push(pattern.replace(/([.*+?^=!:${}()|\[\]\/\\])/g, '\\$1')); + } else if (pattern && pattern.source) { + // If it's a regexp already, we want to extract the source + sources.push(pattern.source); + } + // Intentionally skip other cases + } + return new RegExp(sources.join('|'), 'i'); +} + +function urlencode(o) { + var pairs = []; + each(o, function(key, value) { + pairs.push(encodeURIComponent(key) + '=' + encodeURIComponent(value)); + }); + return pairs.join('&'); +} + +// borrowed from https://tools.ietf.org/html/rfc3986#appendix-B +// intentionally using regex and not href parsing trick because React Native and other +// environments where DOM might not be available +function parseUrl(url) { + if (typeof url !== 'string') return {}; + var match = url.match(/^(([^:\/?#]+):)?(\/\/([^\/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?$/); + + // coerce to undefined values to empty string so we don't get 'undefined' + var query = match[6] || ''; + var fragment = match[8] || ''; + return { + protocol: match[2], + host: match[4], + path: match[5], + relative: match[5] + query + fragment // everything minus origin + }; +} +function uuid4() { + var crypto = _window.crypto || _window.msCrypto; + + if (!isUndefined(crypto) && crypto.getRandomValues) { + // Use window.crypto API if available + // eslint-disable-next-line no-undef + var arr = new Uint16Array(8); + crypto.getRandomValues(arr); + + // set 4 in byte 7 + arr[3] = (arr[3] & 0xfff) | 0x4000; + // set 2 most significant bits of byte 9 to '10' + arr[4] = (arr[4] & 0x3fff) | 0x8000; + + var pad = function(num) { + var v = num.toString(16); + while (v.length < 4) { + v = '0' + v; + } + return v; + }; + + return ( + pad(arr[0]) + + pad(arr[1]) + + pad(arr[2]) + + pad(arr[3]) + + pad(arr[4]) + + pad(arr[5]) + + pad(arr[6]) + + pad(arr[7]) + ); + } else { + // http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/2117523#2117523 + return 'xxxxxxxxxxxx4xxxyxxxxxxxxxxxxxxx'.replace(/[xy]/g, function(c) { + var r = (Math.random() * 16) | 0, + v = c === 'x' ? r : (r & 0x3) | 0x8; + return v.toString(16); + }); + } +} + +/** + * Given a child DOM element, returns a query-selector statement describing that + * and its ancestors + * e.g. [HTMLElement] => body > div > input#foo.btn[name=baz] + * @param elem + * @returns {string} + */ +function htmlTreeAsString(elem) { + /* eslint no-extra-parens:0*/ + var MAX_TRAVERSE_HEIGHT = 5, + MAX_OUTPUT_LEN = 80, + out = [], + height = 0, + len = 0, + separator = ' > ', + sepLength = separator.length, + nextStr; + + while (elem && height++ < MAX_TRAVERSE_HEIGHT) { + nextStr = htmlElementAsString(elem); + // bail out if + // - nextStr is the 'html' element + // - the length of the string that would be created exceeds MAX_OUTPUT_LEN + // (ignore this limit if we are on the first iteration) + if ( + nextStr === 'html' || + (height > 1 && len + out.length * sepLength + nextStr.length >= MAX_OUTPUT_LEN) + ) { + break; + } + + out.push(nextStr); + + len += nextStr.length; + elem = elem.parentNode; + } + + return out.reverse().join(separator); +} + +/** + * Returns a simple, query-selector representation of a DOM element + * e.g. [HTMLElement] => input#foo.btn[name=baz] + * @param HTMLElement + * @returns {string} + */ +function htmlElementAsString(elem) { + var out = [], + className, + classes, + key, + attr, + i; + + if (!elem || !elem.tagName) { + return ''; + } + + out.push(elem.tagName.toLowerCase()); + if (elem.id) { + out.push('#' + elem.id); + } + + className = elem.className; + if (className && isString(className)) { + classes = className.split(/\s+/); + for (i = 0; i < classes.length; i++) { + out.push('.' + classes[i]); + } + } + var attrWhitelist = ['type', 'name', 'title', 'alt']; + for (i = 0; i < attrWhitelist.length; i++) { + key = attrWhitelist[i]; + attr = elem.getAttribute(key); + if (attr) { + out.push('[' + key + '="' + attr + '"]'); + } + } + return out.join(''); +} + +/** + * Returns true if either a OR b is truthy, but not both + */ +function isOnlyOneTruthy(a, b) { + return !!(!!a ^ !!b); +} + +/** + * Returns true if both parameters are undefined + */ +function isBothUndefined(a, b) { + return isUndefined(a) && isUndefined(b); +} + +/** + * Returns true if the two input exception interfaces have the same content + */ +function isSameException(ex1, ex2) { + if (isOnlyOneTruthy(ex1, ex2)) return false; + + ex1 = ex1.values[0]; + ex2 = ex2.values[0]; + + if (ex1.type !== ex2.type || ex1.value !== ex2.value) return false; + + // in case both stacktraces are undefined, we can't decide so default to false + if (isBothUndefined(ex1.stacktrace, ex2.stacktrace)) return false; + + return isSameStacktrace(ex1.stacktrace, ex2.stacktrace); +} + +/** + * Returns true if the two input stack trace interfaces have the same content + */ +function isSameStacktrace(stack1, stack2) { + if (isOnlyOneTruthy(stack1, stack2)) return false; + + var frames1 = stack1.frames; + var frames2 = stack2.frames; + + // Exit early if frame count differs + if (frames1.length !== frames2.length) return false; + + // Iterate through every frame; bail out if anything differs + var a, b; + for (var i = 0; i < frames1.length; i++) { + a = frames1[i]; + b = frames2[i]; + if ( + a.filename !== b.filename || + a.lineno !== b.lineno || + a.colno !== b.colno || + a['function'] !== b['function'] + ) + return false; + } + return true; +} + +/** + * Polyfill a method + * @param obj object e.g. `document` + * @param name method name present on object e.g. `addEventListener` + * @param replacement replacement function + * @param track {optional} record instrumentation to an array + */ +function fill(obj, name, replacement, track) { + if (obj == null) return; + var orig = obj[name]; + obj[name] = replacement(orig); + obj[name].__raven__ = true; + obj[name].__orig__ = orig; + if (track) { + track.push([obj, name, orig]); + } +} + +/** + * Join values in array + * @param input array of values to be joined together + * @param delimiter string to be placed in-between values + * @returns {string} + */ +function safeJoin(input, delimiter) { + if (!isArray(input)) return ''; + + var output = []; + + for (var i = 0; i < input.length; i++) { + try { + output.push(String(input[i])); + } catch (e) { + output.push('[value cannot be serialized]'); + } + } + + return output.join(delimiter); +} + +// Default Node.js REPL depth +var MAX_SERIALIZE_EXCEPTION_DEPTH = 3; +// 50kB, as 100kB is max payload size, so half sounds reasonable +var MAX_SERIALIZE_EXCEPTION_SIZE = 50 * 1024; +var MAX_SERIALIZE_KEYS_LENGTH = 40; + +function utf8Length(value) { + return ~-encodeURI(value).split(/%..|./).length; +} + +function jsonSize(value) { + return utf8Length(JSON.stringify(value)); +} + +function serializeValue(value) { + if (typeof value === 'string') { + var maxLength = 40; + return truncate(value, maxLength); + } else if ( + typeof value === 'number' || + typeof value === 'boolean' || + typeof value === 'undefined' + ) { + return value; + } + + var type = Object.prototype.toString.call(value); + + // Node.js REPL notation + if (type === '[object Object]') return '[Object]'; + if (type === '[object Array]') return '[Array]'; + if (type === '[object Function]') + return value.name ? '[Function: ' + value.name + ']' : '[Function]'; + + return value; +} + +function serializeObject(value, depth) { + if (depth === 0) return serializeValue(value); + + if (isPlainObject(value)) { + return Object.keys(value).reduce(function(acc, key) { + acc[key] = serializeObject(value[key], depth - 1); + return acc; + }, {}); + } else if (Array.isArray(value)) { + return value.map(function(val) { + return serializeObject(val, depth - 1); + }); + } + + return serializeValue(value); +} + +function serializeException(ex, depth, maxSize) { + if (!isPlainObject(ex)) return ex; + + depth = typeof depth !== 'number' ? MAX_SERIALIZE_EXCEPTION_DEPTH : depth; + maxSize = typeof depth !== 'number' ? MAX_SERIALIZE_EXCEPTION_SIZE : maxSize; + + var serialized = serializeObject(ex, depth); + + if (jsonSize(stringify(serialized)) > maxSize) { + return serializeException(ex, depth - 1); + } + + return serialized; +} + +function serializeKeysForMessage(keys, maxLength) { + if (typeof keys === 'number' || typeof keys === 'string') return keys.toString(); + if (!Array.isArray(keys)) return ''; + + keys = keys.filter(function(key) { + return typeof key === 'string'; + }); + if (keys.length === 0) return '[object has no keys]'; + + maxLength = typeof maxLength !== 'number' ? MAX_SERIALIZE_KEYS_LENGTH : maxLength; + if (keys[0].length >= maxLength) return keys[0]; + + for (var usedKeys = keys.length; usedKeys > 0; usedKeys--) { + var serialized = keys.slice(0, usedKeys).join(', '); + if (serialized.length > maxLength) continue; + if (usedKeys === keys.length) return serialized; + return serialized + '\u2026'; + } + + return ''; +} + +function sanitize(input, sanitizeKeys) { + if (!isArray(sanitizeKeys) || (isArray(sanitizeKeys) && sanitizeKeys.length === 0)) + return input; + + var sanitizeRegExp = joinRegExp(sanitizeKeys); + var sanitizeMask = '********'; + var safeInput; + + try { + safeInput = JSON.parse(stringify(input)); + } catch (o_O) { + return input; + } + + function sanitizeWorker(workerInput) { + if (isArray(workerInput)) { + return workerInput.map(function(val) { + return sanitizeWorker(val); + }); + } + + if (isPlainObject(workerInput)) { + return Object.keys(workerInput).reduce(function(acc, k) { + if (sanitizeRegExp.test(k)) { + acc[k] = sanitizeMask; + } else { + acc[k] = sanitizeWorker(workerInput[k]); + } + return acc; + }, {}); + } + + return workerInput; + } + + return sanitizeWorker(safeInput); +} + +module.exports = { + isObject: isObject, + isError: isError, + isErrorEvent: isErrorEvent, + isDOMError: isDOMError, + isDOMException: isDOMException, + isUndefined: isUndefined, + isFunction: isFunction, + isPlainObject: isPlainObject, + isString: isString, + isArray: isArray, + isEmptyObject: isEmptyObject, + supportsErrorEvent: supportsErrorEvent, + supportsDOMError: supportsDOMError, + supportsDOMException: supportsDOMException, + supportsFetch: supportsFetch, + supportsReferrerPolicy: supportsReferrerPolicy, + supportsPromiseRejectionEvent: supportsPromiseRejectionEvent, + wrappedCallback: wrappedCallback, + each: each, + objectMerge: objectMerge, + truncate: truncate, + objectFrozen: objectFrozen, + hasKey: hasKey, + joinRegExp: joinRegExp, + urlencode: urlencode, + uuid4: uuid4, + htmlTreeAsString: htmlTreeAsString, + htmlElementAsString: htmlElementAsString, + isSameException: isSameException, + isSameStacktrace: isSameStacktrace, + parseUrl: parseUrl, + fill: fill, + safeJoin: safeJoin, + serializeException: serializeException, + serializeKeysForMessage: serializeKeysForMessage, + sanitize: sanitize +}; + +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"10":10}],9:[function(_dereq_,module,exports){ +(function (global){ +var utils = _dereq_(8); + +/* + TraceKit - Cross brower stack traces + + This was originally forked from github.com/occ/TraceKit, but has since been + largely re-written and is now maintained as part of raven-js. Tests for + this are in test/vendor. + + MIT license +*/ + +var TraceKit = { + collectWindowErrors: true, + debug: false +}; + +// This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) +var _window = + typeof window !== 'undefined' + ? window + : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; + +// global reference to slice +var _slice = [].slice; +var UNKNOWN_FUNCTION = '?'; + +// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error#Error_types +var ERROR_TYPES_RE = /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/; + +function getLocationHref() { + if (typeof document === 'undefined' || document.location == null) return ''; + return document.location.href; +} + +function getLocationOrigin() { + if (typeof document === 'undefined' || document.location == null) return ''; + + // Oh dear IE10... + if (!document.location.origin) { + document.location.origin = + document.location.protocol + + '//' + + document.location.hostname + + (document.location.port ? ':' + document.location.port : ''); + } + + return document.location.origin; +} + +/** + * TraceKit.report: cross-browser processing of unhandled exceptions + * + * Syntax: + * TraceKit.report.subscribe(function(stackInfo) { ... }) + * TraceKit.report.unsubscribe(function(stackInfo) { ... }) + * TraceKit.report(exception) + * try { ...code... } catch(ex) { TraceKit.report(ex); } + * + * Supports: + * - Firefox: full stack trace with line numbers, plus column number + * on top frame; column number is not guaranteed + * - Opera: full stack trace with line and column numbers + * - Chrome: full stack trace with line and column numbers + * - Safari: line and column number for the top frame only; some frames + * may be missing, and column number is not guaranteed + * - IE: line and column number for the top frame only; some frames + * may be missing, and column number is not guaranteed + * + * In theory, TraceKit should work on all of the following versions: + * - IE5.5+ (only 8.0 tested) + * - Firefox 0.9+ (only 3.5+ tested) + * - Opera 7+ (only 10.50 tested; versions 9 and earlier may require + * Exceptions Have Stacktrace to be enabled in opera:config) + * - Safari 3+ (only 4+ tested) + * - Chrome 1+ (only 5+ tested) + * - Konqueror 3.5+ (untested) + * + * Requires TraceKit.computeStackTrace. + * + * Tries to catch all unhandled exceptions and report them to the + * subscribed handlers. Please note that TraceKit.report will rethrow the + * exception. This is REQUIRED in order to get a useful stack trace in IE. + * If the exception does not reach the top of the browser, you will only + * get a stack trace from the point where TraceKit.report was called. + * + * Handlers receive a stackInfo object as described in the + * TraceKit.computeStackTrace docs. + */ +TraceKit.report = (function reportModuleWrapper() { + var handlers = [], + lastArgs = null, + lastException = null, + lastExceptionStack = null; + + /** + * Add a crash handler. + * @param {Function} handler + */ + function subscribe(handler) { + installGlobalHandler(); + handlers.push(handler); + } + + /** + * Remove a crash handler. + * @param {Function} handler + */ + function unsubscribe(handler) { + for (var i = handlers.length - 1; i >= 0; --i) { + if (handlers[i] === handler) { + handlers.splice(i, 1); + } + } + } + + /** + * Remove all crash handlers. + */ + function unsubscribeAll() { + uninstallGlobalHandler(); + handlers = []; + } + + /** + * Dispatch stack information to all handlers. + * @param {Object.} stack + */ + function notifyHandlers(stack, isWindowError) { + var exception = null; + if (isWindowError && !TraceKit.collectWindowErrors) { + return; + } + for (var i in handlers) { + if (handlers.hasOwnProperty(i)) { + try { + handlers[i].apply(null, [stack].concat(_slice.call(arguments, 2))); + } catch (inner) { + exception = inner; + } + } + } + + if (exception) { + throw exception; + } + } + + var _oldOnerrorHandler, _onErrorHandlerInstalled; + + /** + * Ensures all global unhandled exceptions are recorded. + * Supported by Gecko and IE. + * @param {string} msg Error message. + * @param {string} url URL of script that generated the exception. + * @param {(number|string)} lineNo The line number at which the error + * occurred. + * @param {?(number|string)} colNo The column number at which the error + * occurred. + * @param {?Error} ex The actual Error object. + */ + function traceKitWindowOnError(msg, url, lineNo, colNo, ex) { + var stack = null; + // If 'ex' is ErrorEvent, get real Error from inside + var exception = utils.isErrorEvent(ex) ? ex.error : ex; + // If 'msg' is ErrorEvent, get real message from inside + var message = utils.isErrorEvent(msg) ? msg.message : msg; + + if (lastExceptionStack) { + TraceKit.computeStackTrace.augmentStackTraceWithInitialElement( + lastExceptionStack, + url, + lineNo, + message + ); + processLastException(); + } else if (exception && utils.isError(exception)) { + // non-string `exception` arg; attempt to extract stack trace + + // New chrome and blink send along a real error object + // Let's just report that like a normal error. + // See: https://mikewest.org/2013/08/debugging-runtime-errors-with-window-onerror + stack = TraceKit.computeStackTrace(exception); + notifyHandlers(stack, true); + } else { + var location = { + url: url, + line: lineNo, + column: colNo + }; + + var name = undefined; + var groups; + + if ({}.toString.call(message) === '[object String]') { + var groups = message.match(ERROR_TYPES_RE); + if (groups) { + name = groups[1]; + message = groups[2]; + } + } + + location.func = UNKNOWN_FUNCTION; + + stack = { + name: name, + message: message, + url: getLocationHref(), + stack: [location] + }; + notifyHandlers(stack, true); + } + + if (_oldOnerrorHandler) { + return _oldOnerrorHandler.apply(this, arguments); + } + + return false; + } + + function installGlobalHandler() { + if (_onErrorHandlerInstalled) { + return; + } + _oldOnerrorHandler = _window.onerror; + _window.onerror = traceKitWindowOnError; + _onErrorHandlerInstalled = true; + } + + function uninstallGlobalHandler() { + if (!_onErrorHandlerInstalled) { + return; + } + _window.onerror = _oldOnerrorHandler; + _onErrorHandlerInstalled = false; + _oldOnerrorHandler = undefined; + } + + function processLastException() { + var _lastExceptionStack = lastExceptionStack, + _lastArgs = lastArgs; + lastArgs = null; + lastExceptionStack = null; + lastException = null; + notifyHandlers.apply(null, [_lastExceptionStack, false].concat(_lastArgs)); + } + + /** + * Reports an unhandled Error to TraceKit. + * @param {Error} ex + * @param {?boolean} rethrow If false, do not re-throw the exception. + * Only used for window.onerror to not cause an infinite loop of + * rethrowing. + */ + function report(ex, rethrow) { + var args = _slice.call(arguments, 1); + if (lastExceptionStack) { + if (lastException === ex) { + return; // already caught by an inner catch block, ignore + } else { + processLastException(); + } + } + + var stack = TraceKit.computeStackTrace(ex); + lastExceptionStack = stack; + lastException = ex; + lastArgs = args; + + // If the stack trace is incomplete, wait for 2 seconds for + // slow slow IE to see if onerror occurs or not before reporting + // this exception; otherwise, we will end up with an incomplete + // stack trace + setTimeout(function() { + if (lastException === ex) { + processLastException(); + } + }, stack.incomplete ? 2000 : 0); + + if (rethrow !== false) { + throw ex; // re-throw to propagate to the top level (and cause window.onerror) + } + } + + report.subscribe = subscribe; + report.unsubscribe = unsubscribe; + report.uninstall = unsubscribeAll; + return report; +})(); + +/** + * TraceKit.computeStackTrace: cross-browser stack traces in JavaScript + * + * Syntax: + * s = TraceKit.computeStackTrace(exception) // consider using TraceKit.report instead (see below) + * Returns: + * s.name - exception name + * s.message - exception message + * s.stack[i].url - JavaScript or HTML file URL + * s.stack[i].func - function name, or empty for anonymous functions (if guessing did not work) + * s.stack[i].args - arguments passed to the function, if known + * s.stack[i].line - line number, if known + * s.stack[i].column - column number, if known + * + * Supports: + * - Firefox: full stack trace with line numbers and unreliable column + * number on top frame + * - Opera 10: full stack trace with line and column numbers + * - Opera 9-: full stack trace with line numbers + * - Chrome: full stack trace with line and column numbers + * - Safari: line and column number for the topmost stacktrace element + * only + * - IE: no line numbers whatsoever + * + * Tries to guess names of anonymous functions by looking for assignments + * in the source code. In IE and Safari, we have to guess source file names + * by searching for function bodies inside all page scripts. This will not + * work for scripts that are loaded cross-domain. + * Here be dragons: some function names may be guessed incorrectly, and + * duplicate functions may be mismatched. + * + * TraceKit.computeStackTrace should only be used for tracing purposes. + * Logging of unhandled exceptions should be done with TraceKit.report, + * which builds on top of TraceKit.computeStackTrace and provides better + * IE support by utilizing the window.onerror event to retrieve information + * about the top of the stack. + * + * Note: In IE and Safari, no stack trace is recorded on the Error object, + * so computeStackTrace instead walks its *own* chain of callers. + * This means that: + * * in Safari, some methods may be missing from the stack trace; + * * in IE, the topmost function in the stack trace will always be the + * caller of computeStackTrace. + * + * This is okay for tracing (because you are likely to be calling + * computeStackTrace from the function you want to be the topmost element + * of the stack trace anyway), but not okay for logging unhandled + * exceptions (because your catch block will likely be far away from the + * inner function that actually caused the exception). + * + */ +TraceKit.computeStackTrace = (function computeStackTraceWrapper() { + // Contents of Exception in various browsers. + // + // SAFARI: + // ex.message = Can't find variable: qq + // ex.line = 59 + // ex.sourceId = 580238192 + // ex.sourceURL = http://... + // ex.expressionBeginOffset = 96 + // ex.expressionCaretOffset = 98 + // ex.expressionEndOffset = 98 + // ex.name = ReferenceError + // + // FIREFOX: + // ex.message = qq is not defined + // ex.fileName = http://... + // ex.lineNumber = 59 + // ex.columnNumber = 69 + // ex.stack = ...stack trace... (see the example below) + // ex.name = ReferenceError + // + // CHROME: + // ex.message = qq is not defined + // ex.name = ReferenceError + // ex.type = not_defined + // ex.arguments = ['aa'] + // ex.stack = ...stack trace... + // + // INTERNET EXPLORER: + // ex.message = ... + // ex.name = ReferenceError + // + // OPERA: + // ex.message = ...message... (see the example below) + // ex.name = ReferenceError + // ex.opera#sourceloc = 11 (pretty much useless, duplicates the info in ex.message) + // ex.stacktrace = n/a; see 'opera:config#UserPrefs|Exceptions Have Stacktrace' + + /** + * Computes stack trace information from the stack property. + * Chrome and Gecko use this property. + * @param {Error} ex + * @return {?Object.} Stack trace information. + */ + function computeStackTraceFromStackProp(ex) { + if (typeof ex.stack === 'undefined' || !ex.stack) return; + + var chrome = /^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i; + var winjs = /^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i; + // NOTE: blob urls are now supposed to always have an origin, therefore it's format + // which is `blob:http://url/path/with-some-uuid`, is matched by `blob.*?:\/` as well + var gecko = /^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i; + // Used to additionally parse URL/line/column from eval frames + var geckoEval = /(\S+) line (\d+)(?: > eval line \d+)* > eval/i; + var chromeEval = /\((\S*)(?::(\d+))(?::(\d+))\)/; + var lines = ex.stack.split('\n'); + var stack = []; + var submatch; + var parts; + var element; + var reference = /^(.*) is undefined$/.exec(ex.message); + + for (var i = 0, j = lines.length; i < j; ++i) { + if ((parts = chrome.exec(lines[i]))) { + var isNative = parts[2] && parts[2].indexOf('native') === 0; // start of line + var isEval = parts[2] && parts[2].indexOf('eval') === 0; // start of line + if (isEval && (submatch = chromeEval.exec(parts[2]))) { + // throw out eval line/column and use top-most line/column number + parts[2] = submatch[1]; // url + parts[3] = submatch[2]; // line + parts[4] = submatch[3]; // column + } + element = { + url: !isNative ? parts[2] : null, + func: parts[1] || UNKNOWN_FUNCTION, + args: isNative ? [parts[2]] : [], + line: parts[3] ? +parts[3] : null, + column: parts[4] ? +parts[4] : null + }; + } else if ((parts = winjs.exec(lines[i]))) { + element = { + url: parts[2], + func: parts[1] || UNKNOWN_FUNCTION, + args: [], + line: +parts[3], + column: parts[4] ? +parts[4] : null + }; + } else if ((parts = gecko.exec(lines[i]))) { + var isEval = parts[3] && parts[3].indexOf(' > eval') > -1; + if (isEval && (submatch = geckoEval.exec(parts[3]))) { + // throw out eval line/column and use top-most line number + parts[3] = submatch[1]; + parts[4] = submatch[2]; + parts[5] = null; // no column when eval + } else if (i === 0 && !parts[5] && typeof ex.columnNumber !== 'undefined') { + // FireFox uses this awesome columnNumber property for its top frame + // Also note, Firefox's column number is 0-based and everything else expects 1-based, + // so adding 1 + // NOTE: this hack doesn't work if top-most frame is eval + stack[0].column = ex.columnNumber + 1; + } + element = { + url: parts[3], + func: parts[1] || UNKNOWN_FUNCTION, + args: parts[2] ? parts[2].split(',') : [], + line: parts[4] ? +parts[4] : null, + column: parts[5] ? +parts[5] : null + }; + } else { + continue; + } + + if (!element.func && element.line) { + element.func = UNKNOWN_FUNCTION; + } + + if (element.url && element.url.substr(0, 5) === 'blob:') { + // Special case for handling JavaScript loaded into a blob. + // We use a synchronous AJAX request here as a blob is already in + // memory - it's not making a network request. This will generate a warning + // in the browser console, but there has already been an error so that's not + // that much of an issue. + var xhr = new XMLHttpRequest(); + xhr.open('GET', element.url, false); + xhr.send(null); + + // If we failed to download the source, skip this patch + if (xhr.status === 200) { + var source = xhr.responseText || ''; + + // We trim the source down to the last 300 characters as sourceMappingURL is always at the end of the file. + // Why 300? To be in line with: https://github.com/getsentry/sentry/blob/4af29e8f2350e20c28a6933354e4f42437b4ba42/src/sentry/lang/javascript/processor.py#L164-L175 + source = source.slice(-300); + + // Now we dig out the source map URL + var sourceMaps = source.match(/\/\/# sourceMappingURL=(.*)$/); + + // If we don't find a source map comment or we find more than one, continue on to the next element. + if (sourceMaps) { + var sourceMapAddress = sourceMaps[1]; + + // Now we check to see if it's a relative URL. + // If it is, convert it to an absolute one. + if (sourceMapAddress.charAt(0) === '~') { + sourceMapAddress = getLocationOrigin() + sourceMapAddress.slice(1); + } + + // Now we strip the '.map' off of the end of the URL and update the + // element so that Sentry can match the map to the blob. + element.url = sourceMapAddress.slice(0, -4); + } + } + } + + stack.push(element); + } + + if (!stack.length) { + return null; + } + + return { + name: ex.name, + message: ex.message, + url: getLocationHref(), + stack: stack + }; + } + + /** + * Adds information about the first frame to incomplete stack traces. + * Safari and IE require this to get complete data on the first frame. + * @param {Object.} stackInfo Stack trace information from + * one of the compute* methods. + * @param {string} url The URL of the script that caused an error. + * @param {(number|string)} lineNo The line number of the script that + * caused an error. + * @param {string=} message The error generated by the browser, which + * hopefully contains the name of the object that caused the error. + * @return {boolean} Whether or not the stack information was + * augmented. + */ + function augmentStackTraceWithInitialElement(stackInfo, url, lineNo, message) { + var initial = { + url: url, + line: lineNo + }; + + if (initial.url && initial.line) { + stackInfo.incomplete = false; + + if (!initial.func) { + initial.func = UNKNOWN_FUNCTION; + } + + if (stackInfo.stack.length > 0) { + if (stackInfo.stack[0].url === initial.url) { + if (stackInfo.stack[0].line === initial.line) { + return false; // already in stack trace + } else if ( + !stackInfo.stack[0].line && + stackInfo.stack[0].func === initial.func + ) { + stackInfo.stack[0].line = initial.line; + return false; + } + } + } + + stackInfo.stack.unshift(initial); + stackInfo.partial = true; + return true; + } else { + stackInfo.incomplete = true; + } + + return false; + } + + /** + * Computes stack trace information by walking the arguments.caller + * chain at the time the exception occurred. This will cause earlier + * frames to be missed but is the only way to get any stack trace in + * Safari and IE. The top frame is restored by + * {@link augmentStackTraceWithInitialElement}. + * @param {Error} ex + * @return {?Object.} Stack trace information. + */ + function computeStackTraceByWalkingCallerChain(ex, depth) { + var functionName = /function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i, + stack = [], + funcs = {}, + recursion = false, + parts, + item, + source; + + for ( + var curr = computeStackTraceByWalkingCallerChain.caller; + curr && !recursion; + curr = curr.caller + ) { + if (curr === computeStackTrace || curr === TraceKit.report) { + // console.log('skipping internal function'); + continue; + } + + item = { + url: null, + func: UNKNOWN_FUNCTION, + line: null, + column: null + }; + + if (curr.name) { + item.func = curr.name; + } else if ((parts = functionName.exec(curr.toString()))) { + item.func = parts[1]; + } + + if (typeof item.func === 'undefined') { + try { + item.func = parts.input.substring(0, parts.input.indexOf('{')); + } catch (e) {} + } + + if (funcs['' + curr]) { + recursion = true; + } else { + funcs['' + curr] = true; + } + + stack.push(item); + } + + if (depth) { + // console.log('depth is ' + depth); + // console.log('stack is ' + stack.length); + stack.splice(0, depth); + } + + var result = { + name: ex.name, + message: ex.message, + url: getLocationHref(), + stack: stack + }; + augmentStackTraceWithInitialElement( + result, + ex.sourceURL || ex.fileName, + ex.line || ex.lineNumber, + ex.message || ex.description + ); + return result; + } + + /** + * Computes a stack trace for an exception. + * @param {Error} ex + * @param {(string|number)=} depth + */ + function computeStackTrace(ex, depth) { + var stack = null; + depth = depth == null ? 0 : +depth; + + try { + stack = computeStackTraceFromStackProp(ex); + if (stack) { + return stack; + } + } catch (e) { + if (TraceKit.debug) { + throw e; + } + } + + try { + stack = computeStackTraceByWalkingCallerChain(ex, depth + 1); + if (stack) { + return stack; + } + } catch (e) { + if (TraceKit.debug) { + throw e; + } + } + return { + name: ex.name, + message: ex.message, + url: getLocationHref() + }; + } + + computeStackTrace.augmentStackTraceWithInitialElement = augmentStackTraceWithInitialElement; + computeStackTrace.computeStackTraceFromStackProp = computeStackTraceFromStackProp; + + return computeStackTrace; +})(); + +module.exports = TraceKit; + +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"8":8}],10:[function(_dereq_,module,exports){ +/* + json-stringify-safe + Like JSON.stringify, but doesn't throw on circular references. + + Originally forked from https://github.com/isaacs/json-stringify-safe + version 5.0.1 on 3/8/2017 and modified to handle Errors serialization + and IE8 compatibility. Tests for this are in test/vendor. + + ISC license: https://github.com/isaacs/json-stringify-safe/blob/master/LICENSE +*/ + +exports = module.exports = stringify; +exports.getSerialize = serializer; + +function indexOf(haystack, needle) { + for (var i = 0; i < haystack.length; ++i) { + if (haystack[i] === needle) return i; + } + return -1; +} + +function stringify(obj, replacer, spaces, cycleReplacer) { + return JSON.stringify(obj, serializer(replacer, cycleReplacer), spaces); +} + +// https://github.com/ftlabs/js-abbreviate/blob/fa709e5f139e7770a71827b1893f22418097fbda/index.js#L95-L106 +function stringifyError(value) { + var err = { + // These properties are implemented as magical getters and don't show up in for in + stack: value.stack, + message: value.message, + name: value.name + }; + + for (var i in value) { + if (Object.prototype.hasOwnProperty.call(value, i)) { + err[i] = value[i]; + } + } + + return err; +} + +function serializer(replacer, cycleReplacer) { + var stack = []; + var keys = []; + + if (cycleReplacer == null) { + cycleReplacer = function(key, value) { + if (stack[0] === value) { + return '[Circular ~]'; + } + return '[Circular ~.' + keys.slice(0, indexOf(stack, value)).join('.') + ']'; + }; + } + + return function(key, value) { + if (stack.length > 0) { + var thisPos = indexOf(stack, this); + ~thisPos ? stack.splice(thisPos + 1) : stack.push(this); + ~thisPos ? keys.splice(thisPos, Infinity, key) : keys.push(key); + + if (~indexOf(stack, value)) { + value = cycleReplacer.call(this, key, value); + } + } else { + stack.push(value); + } + + return replacer == null + ? value instanceof Error ? stringifyError(value) : value + : replacer.call(this, key, value); + }; +} + +},{}],11:[function(_dereq_,module,exports){ +/* + * JavaScript MD5 + * https://github.com/blueimp/JavaScript-MD5 + * + * Copyright 2011, Sebastian Tschan + * https://blueimp.net + * + * Licensed under the MIT license: + * https://opensource.org/licenses/MIT + * + * Based on + * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message + * Digest Algorithm, as defined in RFC 1321. + * Version 2.2 Copyright (C) Paul Johnston 1999 - 2009 + * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet + * Distributed under the BSD License + * See http://pajhome.org.uk/crypt/md5 for more info. + */ + +/* +* Add integers, wrapping at 2^32. This uses 16-bit operations internally +* to work around bugs in some JS interpreters. +*/ +function safeAdd(x, y) { + var lsw = (x & 0xffff) + (y & 0xffff); + var msw = (x >> 16) + (y >> 16) + (lsw >> 16); + return (msw << 16) | (lsw & 0xffff); +} + +/* +* Bitwise rotate a 32-bit number to the left. +*/ +function bitRotateLeft(num, cnt) { + return (num << cnt) | (num >>> (32 - cnt)); +} + +/* +* These functions implement the four basic operations the algorithm uses. +*/ +function md5cmn(q, a, b, x, s, t) { + return safeAdd(bitRotateLeft(safeAdd(safeAdd(a, q), safeAdd(x, t)), s), b); +} +function md5ff(a, b, c, d, x, s, t) { + return md5cmn((b & c) | (~b & d), a, b, x, s, t); +} +function md5gg(a, b, c, d, x, s, t) { + return md5cmn((b & d) | (c & ~d), a, b, x, s, t); +} +function md5hh(a, b, c, d, x, s, t) { + return md5cmn(b ^ c ^ d, a, b, x, s, t); +} +function md5ii(a, b, c, d, x, s, t) { + return md5cmn(c ^ (b | ~d), a, b, x, s, t); +} + +/* +* Calculate the MD5 of an array of little-endian words, and a bit length. +*/ +function binlMD5(x, len) { + /* append padding */ + x[len >> 5] |= 0x80 << (len % 32); + x[(((len + 64) >>> 9) << 4) + 14] = len; + + var i; + var olda; + var oldb; + var oldc; + var oldd; + var a = 1732584193; + var b = -271733879; + var c = -1732584194; + var d = 271733878; + + for (i = 0; i < x.length; i += 16) { + olda = a; + oldb = b; + oldc = c; + oldd = d; + + a = md5ff(a, b, c, d, x[i], 7, -680876936); + d = md5ff(d, a, b, c, x[i + 1], 12, -389564586); + c = md5ff(c, d, a, b, x[i + 2], 17, 606105819); + b = md5ff(b, c, d, a, x[i + 3], 22, -1044525330); + a = md5ff(a, b, c, d, x[i + 4], 7, -176418897); + d = md5ff(d, a, b, c, x[i + 5], 12, 1200080426); + c = md5ff(c, d, a, b, x[i + 6], 17, -1473231341); + b = md5ff(b, c, d, a, x[i + 7], 22, -45705983); + a = md5ff(a, b, c, d, x[i + 8], 7, 1770035416); + d = md5ff(d, a, b, c, x[i + 9], 12, -1958414417); + c = md5ff(c, d, a, b, x[i + 10], 17, -42063); + b = md5ff(b, c, d, a, x[i + 11], 22, -1990404162); + a = md5ff(a, b, c, d, x[i + 12], 7, 1804603682); + d = md5ff(d, a, b, c, x[i + 13], 12, -40341101); + c = md5ff(c, d, a, b, x[i + 14], 17, -1502002290); + b = md5ff(b, c, d, a, x[i + 15], 22, 1236535329); + + a = md5gg(a, b, c, d, x[i + 1], 5, -165796510); + d = md5gg(d, a, b, c, x[i + 6], 9, -1069501632); + c = md5gg(c, d, a, b, x[i + 11], 14, 643717713); + b = md5gg(b, c, d, a, x[i], 20, -373897302); + a = md5gg(a, b, c, d, x[i + 5], 5, -701558691); + d = md5gg(d, a, b, c, x[i + 10], 9, 38016083); + c = md5gg(c, d, a, b, x[i + 15], 14, -660478335); + b = md5gg(b, c, d, a, x[i + 4], 20, -405537848); + a = md5gg(a, b, c, d, x[i + 9], 5, 568446438); + d = md5gg(d, a, b, c, x[i + 14], 9, -1019803690); + c = md5gg(c, d, a, b, x[i + 3], 14, -187363961); + b = md5gg(b, c, d, a, x[i + 8], 20, 1163531501); + a = md5gg(a, b, c, d, x[i + 13], 5, -1444681467); + d = md5gg(d, a, b, c, x[i + 2], 9, -51403784); + c = md5gg(c, d, a, b, x[i + 7], 14, 1735328473); + b = md5gg(b, c, d, a, x[i + 12], 20, -1926607734); + + a = md5hh(a, b, c, d, x[i + 5], 4, -378558); + d = md5hh(d, a, b, c, x[i + 8], 11, -2022574463); + c = md5hh(c, d, a, b, x[i + 11], 16, 1839030562); + b = md5hh(b, c, d, a, x[i + 14], 23, -35309556); + a = md5hh(a, b, c, d, x[i + 1], 4, -1530992060); + d = md5hh(d, a, b, c, x[i + 4], 11, 1272893353); + c = md5hh(c, d, a, b, x[i + 7], 16, -155497632); + b = md5hh(b, c, d, a, x[i + 10], 23, -1094730640); + a = md5hh(a, b, c, d, x[i + 13], 4, 681279174); + d = md5hh(d, a, b, c, x[i], 11, -358537222); + c = md5hh(c, d, a, b, x[i + 3], 16, -722521979); + b = md5hh(b, c, d, a, x[i + 6], 23, 76029189); + a = md5hh(a, b, c, d, x[i + 9], 4, -640364487); + d = md5hh(d, a, b, c, x[i + 12], 11, -421815835); + c = md5hh(c, d, a, b, x[i + 15], 16, 530742520); + b = md5hh(b, c, d, a, x[i + 2], 23, -995338651); + + a = md5ii(a, b, c, d, x[i], 6, -198630844); + d = md5ii(d, a, b, c, x[i + 7], 10, 1126891415); + c = md5ii(c, d, a, b, x[i + 14], 15, -1416354905); + b = md5ii(b, c, d, a, x[i + 5], 21, -57434055); + a = md5ii(a, b, c, d, x[i + 12], 6, 1700485571); + d = md5ii(d, a, b, c, x[i + 3], 10, -1894986606); + c = md5ii(c, d, a, b, x[i + 10], 15, -1051523); + b = md5ii(b, c, d, a, x[i + 1], 21, -2054922799); + a = md5ii(a, b, c, d, x[i + 8], 6, 1873313359); + d = md5ii(d, a, b, c, x[i + 15], 10, -30611744); + c = md5ii(c, d, a, b, x[i + 6], 15, -1560198380); + b = md5ii(b, c, d, a, x[i + 13], 21, 1309151649); + a = md5ii(a, b, c, d, x[i + 4], 6, -145523070); + d = md5ii(d, a, b, c, x[i + 11], 10, -1120210379); + c = md5ii(c, d, a, b, x[i + 2], 15, 718787259); + b = md5ii(b, c, d, a, x[i + 9], 21, -343485551); + + a = safeAdd(a, olda); + b = safeAdd(b, oldb); + c = safeAdd(c, oldc); + d = safeAdd(d, oldd); + } + return [a, b, c, d]; +} + +/* +* Convert an array of little-endian words to a string +*/ +function binl2rstr(input) { + var i; + var output = ''; + var length32 = input.length * 32; + for (i = 0; i < length32; i += 8) { + output += String.fromCharCode((input[i >> 5] >>> (i % 32)) & 0xff); + } + return output; +} + +/* +* Convert a raw string to an array of little-endian words +* Characters >255 have their high-byte silently ignored. +*/ +function rstr2binl(input) { + var i; + var output = []; + output[(input.length >> 2) - 1] = undefined; + for (i = 0; i < output.length; i += 1) { + output[i] = 0; + } + var length8 = input.length * 8; + for (i = 0; i < length8; i += 8) { + output[i >> 5] |= (input.charCodeAt(i / 8) & 0xff) << (i % 32); + } + return output; +} + +/* +* Calculate the MD5 of a raw string +*/ +function rstrMD5(s) { + return binl2rstr(binlMD5(rstr2binl(s), s.length * 8)); +} + +/* +* Calculate the HMAC-MD5, of a key and some data (raw strings) +*/ +function rstrHMACMD5(key, data) { + var i; + var bkey = rstr2binl(key); + var ipad = []; + var opad = []; + var hash; + ipad[15] = opad[15] = undefined; + if (bkey.length > 16) { + bkey = binlMD5(bkey, key.length * 8); + } + for (i = 0; i < 16; i += 1) { + ipad[i] = bkey[i] ^ 0x36363636; + opad[i] = bkey[i] ^ 0x5c5c5c5c; + } + hash = binlMD5(ipad.concat(rstr2binl(data)), 512 + data.length * 8); + return binl2rstr(binlMD5(opad.concat(hash), 512 + 128)); +} + +/* +* Convert a raw string to a hex string +*/ +function rstr2hex(input) { + var hexTab = '0123456789abcdef'; + var output = ''; + var x; + var i; + for (i = 0; i < input.length; i += 1) { + x = input.charCodeAt(i); + output += hexTab.charAt((x >>> 4) & 0x0f) + hexTab.charAt(x & 0x0f); + } + return output; +} + +/* +* Encode a string as utf-8 +*/ +function str2rstrUTF8(input) { + return unescape(encodeURIComponent(input)); +} + +/* +* Take string arguments and return either raw or hex encoded strings +*/ +function rawMD5(s) { + return rstrMD5(str2rstrUTF8(s)); +} +function hexMD5(s) { + return rstr2hex(rawMD5(s)); +} +function rawHMACMD5(k, d) { + return rstrHMACMD5(str2rstrUTF8(k), str2rstrUTF8(d)); +} +function hexHMACMD5(k, d) { + return rstr2hex(rawHMACMD5(k, d)); +} + +function md5(string, key, raw) { + if (!key) { + if (!raw) { + return hexMD5(string); + } + return rawMD5(string); + } + if (!raw) { + return hexHMACMD5(key, string); + } + return rawHMACMD5(key, string); +} + +module.exports = md5; + +},{}]},{},[7,1,2,3])(7) +}); \ No newline at end of file diff --git a/packages/raven-js/dist/console,ember,require/raven.min.js b/packages/raven-js/dist/console,ember,require/raven.min.js new file mode 100644 index 000000000000..dda4384aa2eb --- /dev/null +++ b/packages/raven-js/dist/console,ember,require/raven.min.js @@ -0,0 +1,4 @@ +/*! Raven.js 3.25.2 (30b6d4e) | github.com/getsentry/raven-js */ +!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.Raven=a()}}(function(){var a;return function b(a,c,d){function e(g,h){if(!c[g]){if(!a[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};a[g][0].call(k.exports,function(b){var c=a[g][1][b];return e(c?c:b)},k,k.exports,b,a,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;gthis.k.maxBreadcrumbs&&this.u.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.r.push([a,b]),this.n&&this.F(),this},setUserContext:function(a){return this.j.user=a,this},setExtraContext:function(a){return this.Z("extra",a),this},setTagsContext:function(a){return this.Z("tags",a),this},clearContext:function(){return this.j={},this},getContext:function(){return JSON.parse(h(this.j))},setEnvironment:function(a){return this.k.environment=a,this},setRelease:function(a){return this.k.release=a,this},setDataCallback:function(a){var b=this.k.dataCallback;return this.k.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.k.breadcrumbCallback;return this.k.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.k.shouldSendCallback;return this.k.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.k.transport=a,this},lastException:function(){return this.d},lastEventId:function(){return this.f},isSetup:function(){return!!this.a&&(!!this.g||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.z("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=R.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(S){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.H;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.j.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.J(this.G(c)),h=S.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(S.head||S.body).appendChild(h)}},L:function(){var a=this;this.m+=1,setTimeout(function(){a.m-=1})},$:function(a,b){var c,d;if(this.b){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),S.createEvent?(c=S.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=S.createEventObject(),c.eventType=a);for(d in b)A(b,d)&&(c[d]=b[d]);if(S.createEvent)S.dispatchEvent(c);else try{S.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},_:function(a){var b=this;return function(c){if(b.aa=null,b.v!==c){b.v=c;var d;try{d=E(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ba:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.aa;g||a._("input")(c),clearTimeout(g),a.aa=setTimeout(function(){a.aa=null},b)}}},ca:function(a,b){var c=H(this.w.href),d=H(b),e=H(a);this.x=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},C:function(){var a=this;a.da=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.M?a.da.apply(this.O,arguments):a.da.apply(this,arguments)}},Q:function(){this.da&&(Function.prototype.toString=this.da)},D:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.ca(b.x,c+""),a.apply(this,arguments)}};I(R.history,"pushState",j,d),I(R.history,"replaceState",j,d)}if(c.console&&"console"in R&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};w(["debug","info","warn","error","log"],function(a,b){O(console,b,k)})}},R:function(){for(var a;this.t.length;){a=this.t.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},S:function(){for(var a in this.q)this.p[a]=this.q[a]},F:function(){var a=this;w(this.r,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},G:function(a){var b=Q.exec(a),c={},d=7;try{for(;d--;)c[P[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.k.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},J:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},A:function(){this.m||this.V.apply(this,arguments)},V:function(a,b){var c=this.X(a,b);this.$("handle",{stackInfo:a,options:b}),this.fa(a.name,a.message,a.url,a.lineno,c,b)},X:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(w(a.stack,function(b,e){var f=c.ga(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.u,0)}),this.j.user&&(a.user=this.j.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),a=this.pa(a),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||v(a[b]))&&delete a[b]}),s(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!v(a)&&(!s(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.ma()?void this.z("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function F(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&l(b))for(c=b.split(/\s+/),f=0;fc?Q(a,b-1):d}function R(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?X:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function S(a,b){function c(a){return m(a)?a.map(function(a){return c(a)}):k(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!m(b)||m(b)&&0===b.length)return a;var d,e=A(b),f="********";try{d=JSON.parse(T(a))}catch(g){return a}return c(d)}var T=a(10),U="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},V=3,W=51200,X=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isDOMError:g,isDOMException:h,isUndefined:i,isFunction:j,isPlainObject:k,isString:l,isArray:m,isEmptyObject:n,supportsErrorEvent:o,supportsDOMError:p,supportsDOMException:q,supportsFetch:r,supportsReferrerPolicy:s,supportsPromiseRejectionEvent:t,wrappedCallback:u,each:v,objectMerge:w,truncate:y,objectFrozen:x,hasKey:z,joinRegExp:A,urlencode:B,uuid4:D,htmlTreeAsString:E,htmlElementAsString:F,isSameException:I,isSameStacktrace:J,parseUrl:C,fill:K,safeJoin:L,serializeException:Q,serializeKeysForMessage:R,sanitize:S}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{10:10}],9:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}function e(){return"undefined"==typeof document||null==document.location?"":(document.location.origin||(document.location.origin=document.location.protocol+"//"+document.location.hostname+(document.location.port?":"+document.location.port:"")),document.location.origin)}var f=a(8),g={collectWindowErrors:!0,debug:!1},h="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},i=[].slice,j="?",k=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;g.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function e(a,b){var c=null;if(!b||g.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(i.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,h,i){var l=null,m=f.isErrorEvent(i)?i.error:i,n=f.isErrorEvent(a)?a.message:a;if(v)g.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&f.isError(m))l=g.computeStackTrace(m),e(l,!0);else{var p,r={url:b,line:c,column:h},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(k);p&&(s=p[1],n=p[2])}r.func=j,l={name:s,message:n,url:d(),stack:[r]},e(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=h.onerror,h.onerror=l,r=!0)}function n(){r&&(h.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,e.apply(null,[a,!1].concat(b))}function p(a,b){var c=i.call(arguments,1);if(v){if(u===a)return;o()}var d=g.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),g.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,f,g=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,h=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,i=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,k=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,l=/\((\S*)(?::(\d+))(?::(\d+))\)/,m=a.stack.split("\n"),n=[],o=(/^(.*) is undefined$/.exec(a.message),0),p=m.length;o eval")>-1;r&&(b=k.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==o||c[5]||"undefined"==typeof a.columnNumber||(n[0].column=a.columnNumber+1),f={url:c[3],func:c[1]||j,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}if(!f.func&&f.line&&(f.func=j),f.url&&"blob:"===f.url.substr(0,5)){var s=new XMLHttpRequest;if(s.open("GET",f.url,!1),s.send(null),200===s.status){var t=s.responseText||"";t=t.slice(-300);var u=t.match(/\/\/# sourceMappingURL=(.*)$/);if(u){var v=u[1];"~"===v.charAt(0)&&(v=e()+v.slice(1)),f.url=v.slice(0,-4)}}}n.push(f)}return n.length?{name:a.name,message:a.message,url:d(),stack:n}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=j),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0; +}return a.incomplete=!0,!1}function c(a,e){for(var h,i,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==f&&o!==g.report){if(i={url:null,func:j,line:null,column:null},o.name?i.func=o.name:(h=k.exec(o.toString()))&&(i.func=h[1]),"undefined"==typeof i.func)try{i.func=h.input.substring(0,h.input.indexOf("{"))}catch(p){}m[""+o]?n=!0:m[""+o]=!0,l.push(i)}e&&l.splice(0,e);var q={name:a.name,message:a.message,url:d(),stack:l};return b(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),q}function f(b,e){var f=null;e=null==e?0:+e;try{if(f=a(b))return f}catch(h){if(g.debug)throw h}try{if(f=c(b,e+1))return f}catch(h){if(g.debug)throw h}return{name:b.name,message:b.message,url:d()}}return f.augmentStackTraceWithInitialElement=b,f.computeStackTraceFromStackProp=a,f}(),b.exports=g}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{8:8}],10:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}],11:[function(a,b,c){function d(a,b){var c=(65535&a)+(65535&b),d=(a>>16)+(b>>16)+(c>>16);return d<<16|65535&c}function e(a,b){return a<>>32-b}function f(a,b,c,f,g,h){return d(e(d(d(b,a),d(f,h)),g),c)}function g(a,b,c,d,e,g,h){return f(b&c|~b&d,a,b,e,g,h)}function h(a,b,c,d,e,g,h){return f(b&d|c&~d,a,b,e,g,h)}function i(a,b,c,d,e,g,h){return f(b^c^d,a,b,e,g,h)}function j(a,b,c,d,e,g,h){return f(c^(b|~d),a,b,e,g,h)}function k(a,b){a[b>>5]|=128<>>9<<4)+14]=b;var c,e,f,k,l,m=1732584193,n=-271733879,o=-1732584194,p=271733878;for(c=0;c>5]>>>b%32&255);return c}function m(a){var b,c=[];for(c[(a.length>>2)-1]=void 0,b=0;b>5]|=(255&a.charCodeAt(b/8))<16&&(e=k(e,8*a.length)),c=0;c<16;c+=1)f[c]=909522486^e[c],g[c]=1549556828^e[c];return d=k(f.concat(m(b)),512+8*b.length),l(k(g.concat(d),640))}function p(a){var b,c,d="0123456789abcdef",e="";for(c=0;c>>4&15)+d.charAt(15&b);return e}function q(a){return unescape(encodeURIComponent(a))}function r(a){return n(q(a))}function s(a){return p(r(a))}function t(a,b){return o(q(a),q(b))}function u(a,b){return p(t(a,b))}function v(a,b,c){return b?c?t(b,a):u(b,a):c?r(a):s(a)}b.exports=v},{}]},{},[7,1,2,3])(7)}); +//# sourceMappingURL=raven.min.js.map \ No newline at end of file diff --git a/packages/raven-js/dist/console,ember,require/raven.min.js.map b/packages/raven-js/dist/console,ember,require/raven.min.js.map new file mode 100644 index 000000000000..8a44103ec909 --- /dev/null +++ b/packages/raven-js/dist/console,ember,require/raven.min.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","consolePlugin","console","pluginOptions","logLevels","levels","push","callback","msg","data","captureMessage","level","pop","wrapConsoleMethod","wrapMethod","addPlugin","5","7","2","emberPlugin","Ember","_oldOnError","onerror","error","captureException","RSVP","on","reason","extra","context","3","requirePlugin","wrap","deep","4","RavenConfigError","message","name","prototype","constructor","utils","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","safeJoin","logger","Function","apply","8","6","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","sanitizeKeys","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isErrorEvent","isDOMError","isDOMException","isError","isObject","isPlainObject","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","sanitize","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","config","dsn","options","_logDebug","globalOptions","key","value","setDSN","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","toString","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","substr","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","func","undefined","_before","wrapped","_ignoreNextOnError","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","T","event","unhandledPromiseRejection","B","_promiseRejectionHandler","bind","addEventListener","P","removeEventListener","ex","trimHeadFrames","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","U","currentOptions","exKeys","Object","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","setDataCallback","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","L","setTimeout","$","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","_","evtName","_keypressTimeout","target","category","ba","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","ca","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","C","_originalFunctionToString","Q","D","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","type","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","E","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","R","builtin","S","F","installer","concat","G","str","m","exec","allowSecretKey","J","port","A","V","stackInfo","_triggerEvent","_processException","lineno","X","frame","_normalizeFrame","in_app","ga","stackInfoUrl","normalized","filename","line","colno","column","function","fa","prefixedMessage","exception","values","transaction","ha","request","Referer","breadcrumbs","_trimBreadcrumbs","ia","urlProp","urlProps","ja","httpData","userAgent","User-Agent","referrer","y","_backoffDuration","_backoffStart","ma","na","current","last","oa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Y","baseData","project","platform","_getHttpData","serverName","server_name","_sanitizeData","forEach","random","_sendProcessedPayload","pa","ra","qa","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","sa","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","open","setRequestHeader","send","ta","hash","evaluated","z","Z","setUser","setReleaseContext","10","11","9","RavenConstructor","_Raven","noConflict","Client","what","supportsErrorEvent","ErrorEvent","supportsDOMError","DOMError","supportsDOMException","DOMException","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","wrappedCallback","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","sanitizeMask","safeInput","o_O","getLocationHref","getLocationOrigin","origin","hostname","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","responseText","sourceMaps","sourceMapAddress","charAt","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","string","raw"],"mappings":";CAYA,SAAUA,GAAG,GAAoB,gBAAVC,UAAoC,mBAATC,QAAsBA,OAAOD,QAAQD,QAAS,IAAmB,kBAATG,SAAqBA,OAAOC,IAAKD,UAAUH,OAAO,CAAC,GAAIK,EAAkCA,GAAb,mBAATC,QAAwBA,OAA+B,mBAATC,QAAwBA,OAA6B,mBAAPC,MAAsBA,KAAYC,KAAKJ,EAAEK,MAAQV,MAAO,WAAW,GAAIG,EAAsB,OAAO,SAAUQ,GAAEC,EAAEC,EAAEC,GAAG,QAASC,GAAEC,EAAEC,GAAG,IAAIJ,EAAEG,GAAG,CAAC,IAAIJ,EAAEI,GAAG,CAAC,GAAIE,GAAkB,kBAATC,UAAqBA,OAAQ,KAAIF,GAAGC,EAAE,MAAOA,GAAEF,GAAE,EAAI,IAAGI,EAAE,MAAOA,GAAEJ,GAAE,EAAI,IAAIhB,GAAE,GAAIqB,OAAM,uBAAuBL,EAAE,IAAK,MAAMhB,GAAEsB,KAAK,mBAAmBtB,EAAE,GAAIuB,GAAEV,EAAEG,IAAIf,WAAYW,GAAEI,GAAG,GAAGQ,KAAKD,EAAEtB,QAAQ,SAASU,GAAG,GAAIE,GAAED,EAAEI,GAAG,GAAGL,EAAG,OAAOI,GAAEF,EAAEA,EAAEF,IAAIY,EAAEA,EAAEtB,QAAQU,EAAEC,EAAEC,EAAEC,GAAG,MAAOD,GAAEG,GAAGf,QAAkD,IAAI,GAA1CmB,GAAkB,kBAATD,UAAqBA,QAAgBH,EAAE,EAAEA,EAAEF,EAAEW,OAAOT,IAAID,EAAED,EAAEE,GAAI,OAAOD,KAAKW,GAAG,SAASC,EAAQzB,EAAOD,GAcp0B,QAAS2B,GAAclB,EAAOmB,EAASC,GACrCD,EAAUA,GAAWvB,OAAOuB,YAC5BC,EAAgBA,KAEhB,IAAIC,GAAYD,EAAcE,SAAW,QAAS,OAAQ,OAAQ,QAC9D,WAAYH,IAASE,EAAUE,KAAK,SAOxC,KALA,GAAIC,GAAW,SAASC,EAAKC,GAC3B1B,EAAM2B,eAAeF,EAAKC,IAGxBE,EAAQP,EAAUQ,MACfD,GACLE,EAAkBX,EAASS,EAAOJ,GAClCI,EAAQP,EAAUQ,MAhBtB,GAAIC,GAAoBb,EAAQ,GAAGc,UAoBnCvC,GAAOD,QAAU2B,EAEjBD,EAAQ,GAAGe,UAAUxC,EAAOD,WACzB0C,EAAI,EAAEC,EAAI,IAAIC,GAAG,SAASlB,EAAQzB,EAAOD,GAM5C,QAAS6C,GAAYpC,EAAOqC,GAI1B,GAHAA,EAAQA,GAASzC,OAAOyC,MAGxB,CAEA,GAAIC,GAAcD,EAAME,OACxBF,GAAME,QAAU,SAAsBC,GACpCxC,EAAMyC,iBAAiBD,GACI,kBAAhBF,IACTA,EAAYxB,KAAKf,KAAMyC,IAG3BH,EAAMK,KAAKC,GAAG,QAAS,SAASC,GAC1BA,YAAkBjC,OACpBX,EAAMyC,iBAAiBG,GACrBC,OAAQC,QAAS,sCAGnB9C,EAAM2B,eAAe,oCAAqCkB,OAAQD,OAAQA,QAKhFpD,EAAOD,QAAU6C,EAEjBnB,EAAQ,GAAGe,UAAUxC,EAAOD,WACzB2C,EAAI,IAAIa,GAAG,SAAS9B,EAAQzB,EAAOD,GAOtC,QAASyD,GAAchD,GACC,kBAAXP,IAAyBA,EAAOC,MACzCE,OAAOH,OAASO,EAAMiD,MAAMC,MAAM,GAAQzD,GAC1CG,OAAOa,QAAUT,EAAMiD,MAAMC,MAAM,GAAQjC,IAI/CzB,EAAOD,QAAUyD,EAEjB/B,EAAQ,GAAGe,UAAUxC,EAAOD,WACzB2C,EAAI,IAAIiB,GAAG,SAASlC,EAAQzB,EAAOD,GACtC,QAAS6D,GAAiBC,GACxBtD,KAAKuD,KAAO,mBACZvD,KAAKsD,QAAUA,EAEjBD,EAAiBG,UAAY,GAAI5C,OACjCyC,EAAiBG,UAAUC,YAAcJ,EAEzC5D,EAAOD,QAAU6D,OAEXnB,GAAG,SAAShB,EAAQzB,EAAOD,GACjC,GAAIkE,GAAQxC,EAAQ,GAEhBc,EAAa,SAASZ,EAASS,EAAOJ,GACxC,GAAIkC,GAAuBvC,EAAQS,GAC/B+B,EAAkBxC,CAEtB,IAAMS,IAAST,GAAf,CAIA,GAAIyC,GAAwB,SAAVhC,EAAmB,UAAYA,CAEjDT,GAAQS,GAAS,WACf,GAAIiC,MAAUC,MAAMhD,KAAKiD,WAErBtC,EAAMgC,EAAMO,SAASH,EAAM,KAC3BnC,GAAQE,MAAOgC,EAAaK,OAAQ,UAAWpB,OAAQkB,UAAWF,GAExD,YAAVjC,EACEiC,EAAK,MAAO,IAEdpC,EACE,sBAAwBgC,EAAMO,SAASH,EAAKC,MAAM,GAAI,MAAQ,kBAChEpC,EAAKmB,MAAMkB,UAAYF,EAAKC,MAAM,GAClCtC,GAAYA,EAASC,EAAKC,IAG5BF,GAAYA,EAASC,EAAKC,GAIxBgC,GAGFQ,SAASX,UAAUY,MAAMrD,KAAK4C,EAAsBC,EAAiBE,KAK3ErE,GAAOD,SACLwC,WAAYA,KAGXqC,EAAI,IAAIC,GAAG,SAASpD,EAAQzB,EAAOD,IACtC,SAAWM,GA4CX,QAASyE,KACP,OAAQ,GAAIC,MAed,QAASC,GAAqBC,EAAUjD,GACtC,MAAOkD,GAAWlD,GACd,SAASE,GACP,MAAOF,GAASE,EAAM+C,IAExBjD,EAMN,QAASxB,KACPD,KAAK4E,IAA8B,gBAATC,QAAqBA,KAAKC,WAEpD9E,KAAK+E,GAAgBC,EAAYC,GACjCjF,KAAKkF,GAAiBF,EAAYG,GAClCnF,KAAKoF,EAAyB,KAC9BpF,KAAKqF,EAAY,KACjBrF,KAAKsF,EAAe,KACpBtF,KAAKuF,EAAgB,KACrBvF,KAAKwF,EAAa,KAClBxF,KAAKyF,EAAiB,KACtBzF,KAAK0F,KACL1F,KAAK2F,GAEHC,QAASC,EAAQC,gBAAkBD,EAAQC,eAAeC,GAC1D7B,OAAQ,aACR8B,gBACAC,cACAC,iBACAC,gBACAC,QAAS,KACTC,qBAAqB,EACrBC,4BAA4B,EAC5BC,iBAAkB,EAElBC,aAAc,IACdC,gBAAiB,GACjBC,iBAAiB,EACjBC,YAAY,EACZC,WAAY,EACZC,iBAEF7G,KAAK8G,GACHC,OAAQ,OACRC,WAAW,EAKXC,eAAgBC,IAA2B,SAAW,IAExDlH,KAAKmH,EAAiB,EACtBnH,KAAKoH,GAAoB,EACzBpH,KAAKqH,EAAgCzG,MAAM6F,gBAG3CzG,KAAKsH,EAAmBzB,EAAQzE,YAChCpB,KAAKuH,KACLvH,KAAKwH,KACLxH,KAAKyH,EAAalD,IAClBvE,KAAK0H,KACL1H,KAAK2H,KACL3H,KAAK4H,EAAqB,KAE1B5H,KAAK6H,EAAYhC,EAAQiC,SACzB9H,KAAK+H,EAAY/H,KAAK6H,GAAa7H,KAAK6H,EAAUG,KAClDhI,KAAKiI,GAGL,KAAK,GAAIlB,KAAU/G,MAAKsH,EACtBtH,KAAKuH,EAAwBR,GAAU/G,KAAKsH,EAAiBP,GAhIjE,GAAImB,GAAWhH,EAAQ,GACnB4D,EAAY5D,EAAQ,IACpBiH,EAAMjH,EAAQ,IACdmC,EAAmBnC,EAAQ,GAE3BwC,EAAQxC,EAAQ,GAChBkH,EAAe1E,EAAM0E,aACrBC,EAAa3E,EAAM2E,WACnBC,EAAiB5E,EAAM4E,eACvBC,EAAU7E,EAAM6E,QAChBC,EAAW9E,EAAM8E,SACjBC,EAAgB/E,EAAM+E,cACtBzD,EAActB,EAAMsB,YACpBL,EAAajB,EAAMiB,WACnB+D,EAAWhF,EAAMgF,SACjBC,EAAUjF,EAAMiF,QAChBC,EAAgBlF,EAAMkF,cACtBC,EAAOnF,EAAMmF,KACbC,EAAcpF,EAAMoF,YACpBC,EAAWrF,EAAMqF,SACjBC,EAAetF,EAAMsF,aACrBC,EAASvF,EAAMuF,OACfC,EAAaxF,EAAMwF,WACnBC,EAAYzF,EAAMyF,UAClBC,EAAQ1F,EAAM0F,MACdC,EAAmB3F,EAAM2F,iBACzBC,EAAkB5F,EAAM4F,gBACxBC,EAAmB7F,EAAM6F,iBACzBC,EAAW9F,EAAM8F,SACjBC,EAAO/F,EAAM+F,KACbC,EAAgBhG,EAAMgG,cACtBxC,EAAyBxD,EAAMwD,uBAC/ByC,EAA0BjG,EAAMiG,wBAChCC,EAAqBlG,EAAMkG,mBAC3BC,EAAWnG,EAAMmG,SAEjB9H,EAAoBb,EAAQ,GAAGc,WAE/B8H,EAAU,2CAA2CC,MAAM,KAC7DC,EAAa,gEAOXnE,EACgB,mBAAXhG,QACHA,OACkB,mBAAXC,GACLA,EACgB,mBAATC,MACLA,QAENkF,EAAYY,EAAQoE,SACpB9E,EAAaU,EAAQqE,SAmFzBjK,GAAMuD,WAKJ2G,QAAS,SAETC,OAAO,EAEPlC,SAAUA,EASVmC,OAAQ,SAASC,EAAKC,GACpB,GAAIxK,GAAOC,IAEX,IAAID,EAAKwF,EAEP,MADAvF,MAAKwK,EAAU,QAAS,4CACjBzK,CAET,KAAKuK,EAAK,MAAOvK,EAEjB,IAAI0K,GAAgB1K,EAAK4F,CAGrB4E,IACF1B,EAAK0B,EAAS,SAASG,EAAKC,GAEd,SAARD,GAA0B,UAARA,GAA2B,SAARA,EACvC3K,EAAK2F,EAAegF,GAAOC,EAE3BF,EAAcC,GAAOC,IAK3B5K,EAAK6K,OAAON,GAIZG,EAAczE,aAAaxE,KAAK,qBAChCiJ,EAAczE,aAAaxE,KAAK,iDAGhCiJ,EAAczE,aAAekD,EAAWuB,EAAczE,cACtDyE,EAAcxE,aAAawE,EAAcxE,WAAWjF,QAChDkI,EAAWuB,EAAcxE,YAE7BwE,EAAcvE,gBAAgBuE,EAAcvE,cAAclF,QACtDkI,EAAWuB,EAAcvE,eAE7BuE,EAActE,aAAe+C,EAAWuB,EAActE,cACtDsE,EAAcI,eAAiBC,KAAKC,IAClC,EACAD,KAAKE,IAAIP,EAAcI,gBAAkB,IAAK,KAGhD,IAAII,IACFC,KAAK,EACL9J,SAAS,EACT+J,KAAK,EACLrD,UAAU,EACVsD,QAAQ,GAGN1E,EAAkB+D,EAAc/D,eACM,wBAAnC2E,SAAStK,KAAK2F,GACnBA,EAAkBoC,EAAYmC,EAAwBvE,GAC7CA,KAAoB,IAC7BA,EAAkBuE,GAEpBR,EAAc/D,gBAAkBA,CAEhC,IAAI4E,IACFC,UAAU,GAGR5E,EAAa8D,EAAc9D,UAW/B,OAVqC,uBAA9B0E,SAAStK,KAAK4F,GACnBA,EAAamC,EAAYwC,EAAoB3E,GACpCA,KAAe,IACxBA,EAAa2E,GAEfb,EAAc9D,WAAaA,EAE3BuB,EAAS7B,sBAAwBoE,EAAcpE,oBAGxCtG,GAWTyL,QAAS,WACP,GAAIzL,GAAOC,IAyBX,OAxBID,GAAK0L,YAAc1L,EAAKqH,IAC1Bc,EAASwD,OAAOC,UAAU,WACxB5L,EAAK6L,EAAwBxH,MAAMrE,EAAMiE,aAGvCjE,EAAK4F,EAAeW,4BACtBvG,EAAK8L,IAGP9L,EAAK+L,IAED/L,EAAK4F,EAAegB,YAAc5G,EAAK4F,EAAegB,WAAW4E,UACnExL,EAAKgM,IAGHhM,EAAK4F,EAAee,iBAAiB3G,EAAKiM,IAG9CjM,EAAKkM,IAELlM,EAAKqH,GAAoB,GAG3BxG,MAAM6F,gBAAkB1G,EAAK4F,EAAec,gBACrCzG,MAQT4K,OAAQ,SAASN,GACf,GAAIvK,GAAOC,KACTkM,EAAMnM,EAAKoM,EAAU7B,GACrB8B,EAAYF,EAAIG,KAAKC,YAAY,KACjCD,EAAOH,EAAIG,KAAKE,OAAO,EAAGH,EAE5BrM,GAAKyM,EAAOlC,EACZvK,EAAKyF,EAAa0G,EAAIO,KACtB1M,EAAK2M,EAAgBR,EAAIS,MAAQT,EAAIS,KAAKJ,OAAO,GACjDxM,EAAK0F,EAAiByG,EAAIG,KAAKE,OAAOH,EAAY,GAElDrM,EAAKwF,EAAgBxF,EAAK6M,EAAiBV,GAE3CnM,EAAK8M,EACH9M,EAAKwF,EAAgB,IAAM8G,EAAO,OAAStM,EAAK0F,EAAiB,UAInEzF,KAAKiI,KAWPlF,QAAS,SAASwH,EAASuC,EAAMhJ,GAO/B,MANIa,GAAW4F,KACbzG,EAAOgJ,MACPA,EAAOvC,EACPA,EAAUwC,QAGL/M,KAAKkD,KAAKqH,EAASuC,GAAM1I,MAAMpE,KAAM8D,IAW9CZ,KAAM,SAASqH,EAASuC,EAAME,GAqC5B,QAASC,KACP,GAAInJ,MACFnD,EAAIqD,UAAUhD,OACdmC,GAAQoH,GAAYA,GAAWA,EAAQpH,QAAS,CAQlD,KANI6J,GAAWrI,EAAWqI,IACxBA,EAAQ5I,MAAMpE,KAAMgE,WAKfrD,KAAKmD,EAAKnD,GAAKwC,EAAOpD,EAAKmD,KAAKqH,EAASvG,UAAUrD,IAAMqD,UAAUrD,EAE1E,KAKE,MAAOmM,GAAK1I,MAAMpE,KAAM8D,GACxB,MAAO5D,GAGP,KAFAH,GAAKmN,IACLnN,EAAK2C,iBAAiBxC,EAAGqK,GACnBrK,GA1DV,GAAIH,GAAOC,IAGX,IAAIgF,EAAY8H,KAAUnI,EAAW4F,GACnC,MAAOA,EAWT,IAPI5F,EAAW4F,KACbuC,EAAOvC,EACPA,EAAUwC,SAKPpI,EAAWmI,GACd,MAAOA,EAIT,KACE,GAAIA,EAAKK,EACP,MAAOL,EAIT,IAAIA,EAAKM,EACP,MAAON,GAAKM,EAEd,MAAOlN,GAIP,MAAO4M,GA8BT,IAAK,GAAIO,KAAYP,GACf7D,EAAO6D,EAAMO,KACfJ,EAAQI,GAAYP,EAAKO,GAW7B,OARAJ,GAAQzJ,UAAYsJ,EAAKtJ,UAEzBsJ,EAAKM,EAAoBH,EAGzBA,EAAQE,GAAY,EACpBF,EAAQK,EAAWR,EAEZG,GAQTM,UAAW,WAWT,MAVArF,GAASwD,OAAO6B,YAEhBvN,KAAKwN,IACLxN,KAAKyN,IACLzN,KAAK0N,IACL1N,KAAK2N,IAEL/M,MAAM6F,gBAAkBzG,KAAKqH,EAC7BrH,KAAKoH,GAAoB,EAElBpH,MAWT4N,EAA0B,SAASC,GACjC7N,KAAKwK,EAAU,QAAS,4CAA6CqD,GACrE7N,KAAK0C,iBAAiBmL,EAAMhL,QAC1BC,OACEgL,2BAA2B,MAUjCC,EAAgC,WAI9B,MAHA/N,MAAKgO,EAA2BhO,KAAKgO,EAAyBC,KAAKjO,MACnE6F,EAAQqI,kBACNrI,EAAQqI,iBAAiB,qBAAsBlO,KAAKgO,GAC/ChO,MAQTmO,EAAgC,WAG9B,MAFAtI,GAAQuI,qBACNvI,EAAQuI,oBAAoB,qBAAsBpO,KAAKgO,GAClDhO,MAUT0C,iBAAkB,SAAS2L,EAAI9D,GAG7B,GAFAA,EAAUzB,GAAawF,eAAgB,GAAI/D,EAAUA,MAEjDnC,EAAaiG,IAAOA,EAAG5L,MAEzB4L,EAAKA,EAAG5L,UACH,CAAA,GAAI4F,EAAWgG,IAAO/F,EAAe+F,GAAK,CAK/C,GAAI9K,GAAO8K,EAAG9K,OAAS8E,EAAWgG,GAAM,WAAa,gBACjD/K,EAAU+K,EAAG/K,QAAUC,EAAO,KAAO8K,EAAG/K,QAAUC,CAEtD,OAAOvD,MAAK4B,eACV0B,EACAwF,EAAYyB,GAGVgE,YAAY,EACZD,eAAgB/D,EAAQ+D,eAAiB,KAGxC,GAAI/F,EAAQ8F,GAEjBA,EAAKA,MACA,CAAA,IAAI5F,EAAc4F,GAavB,MAAOrO,MAAK4B,eACVyM,EACAvF,EAAYyB,GACVgE,YAAY,EACZD,eAAgB/D,EAAQ+D,eAAiB,IAb7C/D,GAAUvK,KAAKwO,EAA2CjE,EAAS8D,GACnEA,EAAK,GAAIzN,OAAM2J,EAAQjH,UAkBzBtD,KAAKoF,EAAyBiJ,CAO9B,KACE,GAAII,GAAQvG,EAASwG,kBAAkBL,EACvCrO,MAAK2O,EAAiBF,EAAOlE,GAC7B,MAAOqE,GACP,GAAIP,IAAOO,EACT,KAAMA,GAIV,MAAO5O,OAGT6O,EAA4C,SAASC,EAAgBT,GACnE,GAAIU,GAASC,OAAOC,KAAKZ,GAAIa,OACzB3E,EAAUzB,EAAYgG,GACxBxL,QACE,2CAA6CqG,EAAwBoF,GACvEI,aAAchH,EAAI4G,IAClBjM,MAAOgM,EAAehM,WAIxB,OAFAyH,GAAQzH,MAAMsM,EAAiBxF,EAAmByE,GAE3C9D,GAUT3I,eAAgB,SAASF,EAAK6I,GAI5B,IACIvK,KAAK2F,EAAeK,aAAaqJ,OACnCrP,KAAK2F,EAAeK,aAAaqJ,KAAK3N,GAFxC,CAOA6I,EAAUA,MACV7I,GAAY,EAEZ,IAOI2M,GAPA1M,EAAOmH,GAEPxF,QAAS5B,GAEX6I,EAQF,KACE,KAAM,IAAI3J,OAAMc,GAChB,MAAOkN,GACPP,EAAKO,EAIPP,EAAG9K,KAAO,IACV,IAAIkL,GAAQvG,EAASwG,kBAAkBL,GAGnCiB,EAAc3G,EAAQ8F,EAAMA,QAAUA,EAAMA,MAAM,EAKlDa,IAAoC,2BAArBA,EAAYxC,OAC7BwC,EAAcb,EAAMA,MAAM,GAG5B,IAAIc,GAAWD,GAAeA,EAAYE,KAAQ,EAElD,MACIxP,KAAK2F,EAAeM,WAAWoJ,OACjCrP,KAAK2F,EAAeM,WAAWoJ,KAAKE,OAMlCvP,KAAK2F,EAAeO,cAAcmJ,MACnCrP,KAAK2F,EAAeO,cAAcmJ,KAAKE,IAF1C,CAOA,GAAIvP,KAAK2F,EAAe4I,YAAehE,GAAWA,EAAQgE,WAAa,CAErE5M,EAAKwN,YAAkC,MAApBxN,EAAKwN,YAAsBzN,EAAMC,EAAKwN,YAEzD5E,EAAUzB,GAENwF,eAAgB,GAElB/D,GAMFA,EAAQ+D,gBAAkB,CAE1B,IAAImB,GAASzP,KAAK0P,EAAejB,EAAOlE,EACxC5I,GAAK4M,YAEHkB,OAAQA,EAAOE,WAcnB,MATIhO,GAAKwN,cACPxN,EAAKwN,YAAcxG,EAAQhH,EAAKwN,aAC5BxN,EAAKwN,aACJxN,EAAKwN,cAIZnP,KAAK4P,EAAMjO,GAEJ3B,QAGT6P,kBAAmB,SAASC,GAC1B,GAAIC,GAAQjH,GAERkH,UAAWzL,IAAQ,KAErBuL,EAGF,IAAInL,EAAW3E,KAAK2F,EAAesK,oBAAqB,CACtD,GAAIC,GAASlQ,KAAK2F,EAAesK,mBAAmBF,EAEpD,IAAIvH,EAAS0H,KAAYtH,EAAcsH,GACrCH,EAAQG,MACH,IAAIA,KAAW,EACpB,MAAOlQ,MAQX,MAJAA,MAAK2H,EAAanG,KAAKuO,GACnB/P,KAAK2H,EAAa3G,OAAShB,KAAK2F,EAAekF,gBACjD7K,KAAK2H,EAAawI,QAEbnQ,MAGTiC,UAAW,SAASmO,GAClB,GAAIC,MAAgBtM,MAAMhD,KAAKiD,UAAW,EAO1C,OALAhE,MAAKwH,EAAShG,MAAM4O,EAAQC,IACxBrQ,KAAKoH,GACPpH,KAAKiM,IAGAjM,MASTsQ,eAAgB,SAAS7D,GAIvB,MAFAzM,MAAK0F,EAAe+G,KAAOA,EAEpBzM,MASTuQ,gBAAiB,SAASzN,GAGxB,MAFA9C,MAAKwQ,EAAc,QAAS1N,GAErB9C,MASTyQ,eAAgB,SAASC,GAGvB,MAFA1Q,MAAKwQ,EAAc,OAAQE,GAEpB1Q,MAQT2Q,aAAc,WAGZ,MAFA3Q,MAAK0F,KAEE1F,MAQT4Q,WAAY,WAEV,MAAO/L,MAAKgM,MAAM/L,EAAU9E,KAAK0F,KASnCoL,eAAgB,SAASC,GAGvB,MAFA/Q,MAAK2F,EAAeoL,YAAcA,EAE3B/Q,MASTgR,WAAY,SAASpL,GAGnB,MAFA5F,MAAK2F,EAAeC,QAAUA,EAEvB5F,MAUTiR,gBAAiB,SAASxP,GACxB,GAAIiD,GAAW1E,KAAK2F,EAAeuL,YAEnC,OADAlR,MAAK2F,EAAeuL,aAAezM,EAAqBC,EAAUjD,GAC3DzB,MAUTmR,sBAAuB,SAAS1P,GAC9B,GAAIiD,GAAW1E,KAAK2F,EAAesK,kBAEnC,OADAjQ,MAAK2F,EAAesK,mBAAqBxL,EAAqBC,EAAUjD,GACjEzB,MAUToR,sBAAuB,SAAS3P,GAC9B,GAAIiD,GAAW1E,KAAK2F,EAAe0L,kBAEnC,OADArR,MAAK2F,EAAe0L,mBAAqB5M,EAAqBC,EAAUjD,GACjEzB,MAYTsR,aAAc,SAASC,GAGrB,MAFAvR,MAAK2F,EAAe4L,UAAYA,EAEzBvR,MAQTwR,cAAe,WACb,MAAOxR,MAAKoF,GAQdqM,YAAa,WACX,MAAOzR,MAAKsF,GAQdmG,QAAS,WACP,QAAKzL,KAAK4E,MACL5E,KAAKuF,IACHvF,KAAK0R,0BACR1R,KAAK0R,yBAA0B,EAC/B1R,KAAKwK,EAAU,QAAS,2CAEnB,KAKXmH,UAAW,WAIT,GAAIC,GAAc/L,EAAQ+L,WACtBA,IACF5R,KAAKqK,OAAOuH,EAAYtH,IAAKsH,EAAYvH,QAAQmB,WAIrDqG,iBAAkB,SAAStH,GACzB,GACGtF,EADH,CAKAsF,EAAUA,KAEV,IAAIkH,GAAclH,EAAQuH,SAAW9R,KAAKyR,aAC1C,KAAKA,EACH,KAAM,IAAIpO,GAAiB,kBAG7B,IAAIiH,GAAMC,EAAQD,KAAOtK,KAAKwM,CAC9B,KAAKlC,EACH,KAAM,IAAIjH,GAAiB,cAG7B,IAAI0O,GAASC,mBACTC,EAAK,EACTA,IAAM,YAAcF,EAAON,GAC3BQ,GAAM,QAAUF,EAAOzH,EAEvB,IAAImC,GAAOlC,EAAQkC,MAAQzM,KAAK0F,EAAe+G,IAC3CA,KACEA,EAAKlJ,OAAM0O,GAAM,SAAWF,EAAOtF,EAAKlJ,OACxCkJ,EAAKyF,QAAOD,GAAM,UAAYF,EAAOtF,EAAKyF,QAGhD,IAAIC,GAAenS,KAAK4M,EAAiB5M,KAAKmM,EAAU7B,IAEpD8H,EAASnN,EAAUoN,cAAc,SACrCD,GAAOE,OAAQ,EACfF,EAAOG,IAAMJ,EAAe,yBAA2BF,GACtDhN,EAAUuN,MAAQvN,EAAUwN,MAAMC,YAAYN,KAIjDO,EAAoB,WAClB,GAAI5S,GAAOC,IACXA,MAAKmH,GAAkB,EACvByL,WAAW,WAET7S,EAAKoH,GAAkB,KAI3B0L,EAAe,SAASC,EAAWvI,GAEjC,GAAIwI,GAAKrI,CAET,IAAK1K,KAAK+E,EAAV,CAEAwF,EAAUA,MAEVuI,EAAY,QAAUA,EAAUvG,OAAO,EAAG,GAAGyG,cAAgBF,EAAUvG,OAAO,GAE1EtH,EAAUgO,aACZF,EAAM9N,EAAUgO,YAAY,cAC5BF,EAAIG,UAAUJ,GAAW,GAAM,KAE/BC,EAAM9N,EAAUkO,oBAChBJ,EAAID,UAAYA,EAGlB,KAAKpI,IAAOH,GACNtB,EAAOsB,EAASG,KAClBqI,EAAIrI,GAAOH,EAAQG,GAGvB,IAAIzF,EAAUgO,YAEZhO,EAAUmO,cAAcL,OAIxB,KACE9N,EAAUoO,UAAU,KAAON,EAAID,UAAUQ,cAAeP,GACxD,MAAO7S,OAYbqT,EAAyB,SAASC,GAChC,GAAIzT,GAAOC,IACX,OAAO,UAAS+S,GASd,GALAhT,EAAK0T,GAAmB,KAKpB1T,EAAK6H,IAAuBmL,EAAhC,CAEAhT,EAAK6H,EAAqBmL,CAM1B,IAAIW,EACJ,KACEA,EAASrK,EAAiB0J,EAAIW,QAC9B,MAAOxT,GACPwT,EAAS,YAGX3T,EAAK8P,mBACH8D,SAAU,MAAQH,EAClBlQ,QAASoQ,OAUfE,GAAuB,WACrB,GAAI7T,GAAOC,KACT6T,EAAmB,GAKrB,OAAO,UAASd,GACd,GAAIW,EACJ,KACEA,EAASX,EAAIW,OACb,MAAOxT,GAGP,OAEF,GAAI4T,GAAUJ,GAAUA,EAAOI,OAK/B,IACGA,IACY,UAAZA,GAAmC,aAAZA,GAA2BJ,EAAOK,mBAF5D,CAQA,GAAIC,GAAUjU,EAAK0T,EACdO,IACHjU,EAAKkU,EAAwB,SAASlB,GAExCmB,aAAaF,GACbjU,EAAK0T,GAAmBb,WAAW,WACjC7S,EAAK0T,GAAmB,MACvBI,MAUPM,GAAmB,SAASC,EAAMC,GAChC,GAAIC,GAAY9K,EAASxJ,KAAK6H,EAAUG,MACpCuM,EAAW/K,EAAS6K,GACpBG,EAAahL,EAAS4K,EAK1BpU,MAAK+H,EAAYsM,EAIbC,EAAUG,WAAaF,EAASE,UAAYH,EAAUI,OAASH,EAASG,OAC1EL,EAAKE,EAASI,UACZL,EAAUG,WAAaD,EAAWC,UAAYH,EAAUI,OAASF,EAAWE,OAC9EN,EAAOI,EAAWG,UAEpB3U,KAAK6P,mBACH8D,SAAU,aACVhS,MACE0S,GAAIA,EACJD,KAAMA,MAKZQ,EAAwB,WACtB,GAAI7U,GAAOC,IACXD,GAAK8U,GAA4B1Q,SAASX,UAAU6H,SAEpDlH,SAASX,UAAU6H,SAAW,WAC5B,MAAoB,kBAATrL,OAAuBA,KAAKmN,EAC9BpN,EAAK8U,GAA0BzQ,MAAMpE,KAAKsN,EAAUtJ,WAEtDjE,EAAK8U,GAA0BzQ,MAAMpE,KAAMgE,aAItD8Q,EAA0B,WACpB9U,KAAK6U,KAEP1Q,SAASX,UAAU6H,SAAWrL,KAAK6U,KAQvCE,EAAqB,WAKnB,QAASC,GAAWC,GAClB,MAAO,UAASC,EAAI/U,GAKlB,IAAK,GADD2D,GAAO,GAAIqR,OAAMnR,UAAUhD,QACtBL,EAAI,EAAGA,EAAImD,EAAK9C,SAAUL,EACjCmD,EAAKnD,GAAKqD,UAAUrD,EAEtB,IAAIyU,GAAmBtR,EAAK,EAQ5B,OAPIa,GAAWyQ,KACbtR,EAAK,GAAK/D,EAAKmD,KAAKkS,IAMlBH,EAAK7Q,MACA6Q,EAAK7Q,MAAMpE,KAAM8D,GAEjBmR,EAAKnR,EAAK,GAAIA,EAAK,KAOhC,QAASuR,GAAgBvV,GACvB,GAAIwV,GAAQzP,EAAQ/F,IAAW+F,EAAQ/F,GAAQ0D,SAC3C8R,IAASA,EAAMC,gBAAkBD,EAAMC,eAAe,sBACxD9L,EACE6L,EACA,mBACA,SAASL,GACP,MAAO,UAASzB,EAAS0B,EAAIM,EAASC,GAEpC,IACMP,GAAMA,EAAGQ,cACXR,EAAGQ,YAAc3V,EAAKmD,KAAKgS,EAAGQ,cAEhC,MAAOC,IAMT,GAAIC,GAAQC,EAAcC,CA6B1B,OA1BEpP,IACAA,EAAgByE,MACJ,gBAAXrL,GAAuC,SAAXA,KAI7B+V,EAAe9V,EAAKkU,EAAwB,SAC5C6B,EAAkB/V,EAAKgW,KACvBH,EAAS,SAAS7C,GAIhB,GAAKA,EAAL,CAEA,GAAID,EACJ,KACEA,EAAYC,EAAIiD,KAChB,MAAO9V,GAGP,OAEF,MAAkB,UAAd4S,EAA8B+C,EAAa9C,GACxB,aAAdD,EAAiCgD,EAAgB/C,GAArD,UAGFkC,EAAKlU,KACVf,KACAwT,EACAzT,EAAKmD,KAAKgS,EAAInI,OAAW6I,GACzBJ,EACAC,KAINQ,GAEFxM,EACE6L,EACA,sBACA,SAASL,GACP,MAAO,UAASlC,EAAKmC,EAAIM,EAASC,GAChC,IACEP,EAAKA,IAAOA,EAAG9H,EAAoB8H,EAAG9H,EAAoB8H,GAC1D,MAAOhV,IAGT,MAAO+U,GAAKlU,KAAKf,KAAM+S,EAAKmC,EAAIM,EAASC,KAG7CQ,IAvGN,GAAIlW,GAAOC,KAEPiW,EAAkBlW,EAAK2H,EA2BvBhB,EAAkB1G,KAAK2F,EAAee,eA+E1C+C,GAAK5D,EAAS,aAAcmP,EAAYiB,GACxCxM,EAAK5D,EAAS,cAAemP,EAAYiB,GACrCpQ,EAAQqQ,uBACVzM,EACE5D,EACA,wBACA,SAASoP,GACP,MAAO,UAASkB,GACd,MAAOlB,GAAKlV,EAAKmD,KAAKiT,MAG1BF,EAqCJ,KAAK,GA/BDG,IACF,cACA,SACA,OACA,mBACA,iBACA,oBACA,kBACA,cACA,aACA,qBACA,cACA,aACA,iBACA,eACA,kBACA,cACA,cACA,eACA,qBACA,SACA,YACA,eACA,gBACA,YACA,kBACA,SACA,iBACA,4BACA,wBAEOzV,EAAI,EAAGA,EAAIyV,EAAapV,OAAQL,IACvC0U,EAAgBe,EAAazV,KAajC0V,EAAwB,WAMtB,QAASC,GAASC,EAAMrL,GAClBqL,IAAQrL,IAAOvG,EAAWuG,EAAIqL,KAChC9M,EAAKyB,EAAKqL,EAAM,SAAStB,GACvB,MAAOlV,GAAKmD,KAAK+R,KARvB,GAAIlV,GAAOC,KACP0G,EAAkB1G,KAAK2F,EAAee,gBAEtCuP,EAAkBlW,EAAK2H,CAU3B,IAAIhB,EAAgBwE,KAAO,kBAAoBrF,GAAS,CACtD,GAAI2Q,GAAW3Q,EAAQ4Q,gBAAkB5Q,EAAQ4Q,eAAejT,SAChEiG,GACE+M,EACA,OACA,SAASE,GACP,MAAO,UAAS3P,EAAQyI,GAYtB,MARI9G,GAAS8G,IAAQA,EAAImH,QAAQ5W,EAAKyF,UACpCxF,KAAK4W,IACH7P,OAAQA,EACRyI,IAAKA,EACLqH,YAAa,OAIVH,EAAStS,MAAMpE,KAAMgE,aAGhCiS,GAGFxM,EACE+M,EACA,OACA,SAASM,GACP,MAAO,YAIL,QAASC,KACP,GAAI7L,EAAI0L,IAAkC,IAAnB1L,EAAI8L,WAAkB,CAC3C,IAGE9L,EAAI0L,GAAYC,YAAc3L,EAAI+L,OAClC,MAAO/W,IAITH,EAAK8P,mBACHmG,KAAM,OACNrC,SAAU,MACVhS,KAAMuJ,EAAI0L,MAMhB,IAAK,GArBD1L,GAAMlL,KAoBNkX,GAAS,SAAU,UAAW,cACzBC,EAAI,EAAGA,EAAID,EAAMlW,OAAQmW,IAChCb,EAASY,EAAMC,GAAIjM,EAiBrB,OAdI,sBAAwBA,IAAOvG,EAAWuG,EAAIkM,oBAChD3N,EACEyB,EACA,qBACA,SAAS+J,GACP,MAAOlV,GAAKmD,KAAK+R,EAAMlI,OAAWgK,KAMtC7L,EAAIkM,mBAAqBL,EAGpBD,EAAS1S,MAAMpE,KAAMgE,aAGhCiS,GAIAvP,EAAgBwE,KAAOxB,KACzBD,EACE5D,EACA,QACA,SAASwR,GACP,MAAO,YAKL,IAAK,GADDvT,GAAO,GAAIqR,OAAMnR,UAAUhD,QACtBL,EAAI,EAAGA,EAAImD,EAAK9C,SAAUL,EACjCmD,EAAKnD,GAAKqD,UAAUrD,EAGtB,IAEI6O,GAFA8H,EAAaxT,EAAK,GAClBiD,EAAS,KAeb,IAZ0B,gBAAfuQ,GACT9H,EAAM8H,EACG,WAAazR,IAAWyR,YAAsBzR,GAAQ0R,SAC/D/H,EAAM8H,EAAW9H,IACb8H,EAAWvQ,SACbA,EAASuQ,EAAWvQ,SAGtByI,EAAM,GAAK8H,EAIT9H,EAAImH,QAAQ5W,EAAKyF,QACnB,MAAO6R,GAAUjT,MAAMpE,KAAM8D,EAG3BA,GAAK,IAAMA,EAAK,GAAGiD,SACrBA,EAASjD,EAAK,GAAGiD,OAGnB,IAAIyQ,IACFzQ,OAAQA,EACRyI,IAAKA,EACLqH,YAAa,KAGf,OAAOQ,GACJjT,MAAMpE,KAAM8D,GACZ2T,KAAK,SAASC,GASb,MARAF,GAAUX,YAAca,EAAST,OAEjClX,EAAK8P,mBACHmG,KAAM,OACNrC,SAAU,QACVhS,KAAM6V,IAGDE,IAER,SAAS,SAAS/B,GASjB,KAPA5V,GAAK8P,mBACHmG,KAAM,OACNrC,SAAU,QACVhS,KAAM6V,EACN3V,MAAO,UAGH8T,MAIdM,GAMAvP,EAAgByE,KAAOnL,KAAK+E,IAC1BE,EAAUiJ,kBACZjJ,EAAUiJ,iBAAiB,QAASnO,EAAKkU,EAAwB,UAAU,GAC3EhP,EAAUiJ,iBAAiB,WAAYnO,EAAKgW,MAAyB,IAC5D9Q,EAAU0S,cAEnB1S,EAAU0S,YAAY,UAAW5X,EAAKkU,EAAwB,UAC9DhP,EAAU0S,YAAY,aAAc5X,EAAKgW,OAQ7C,IAAI6B,GAAS/R,EAAQ+R,OACjBC,EAAsBD,GAAUA,EAAOE,KAAOF,EAAOE,IAAIC,QACzDC,GACDH,GACDhS,EAAQoS,SACRpS,EAAQoS,QAAQC,WAChBrS,EAAQoS,QAAQE,YAClB,IAAIzR,EAAgBoB,UAAYkQ,EAAwB,CAEtD,GAAII,GAAgBvS,EAAQwS,UAC5BxS,GAAQwS,WAAa,WACnB,GAAIC,GAAcvY,EAAK8H,EAAUG,IAGjC,IAFAjI,EAAKwY,GAAkBxY,EAAKgI,EAAWuQ,GAEnCF,EACF,MAAOA,GAAchU,MAAMpE,KAAMgE,WAIrC,IAAIwU,GAA6B,SAASC,GAGxC,MAAO,YACL,GAAIjJ,GAAMxL,UAAUhD,OAAS,EAAIgD,UAAU,GAAK+I,MAQhD,OALIyC,IAEFzP,EAAKwY,GAAkBxY,EAAKgI,EAAWyH,EAAM,IAGxCiJ,EAAiBrU,MAAMpE,KAAMgE,YAIxCyF,GAAK5D,EAAQoS,QAAS,YAAaO,EAA4BvC,GAC/DxM,EAAK5D,EAAQoS,QAAS,eAAgBO,EAA4BvC,GAGpE,GAAIvP,EAAgBtF,SAAW,WAAayE,IAAWzE,QAAQsX,IAAK,CAElE,GAAIC,GAAwB,SAASjX,EAAKC,GACxC5B,EAAK8P,mBACHvM,QAAS5B,EACTG,MAAOF,EAAKE,MACZ8R,SAAU,YAId9K,IAAM,QAAS,OAAQ,OAAQ,QAAS,OAAQ,SAAS0K,EAAG1R,GAC1DE,EAAkBX,QAASS,EAAO8W,OAKxCC,EAAkB,WAGhB,IADA,GAAIC,GACG7Y,KAAK0H,EAAiB1G,QAAQ,CACnC6X,EAAU7Y,KAAK0H,EAAiByI,OAEhC,IAAIL,GAAM+I,EAAQ,GAChBtV,EAAOsV,EAAQ,GACf5D,EAAO4D,EAAQ,EAEjB/I,GAAIvM,GAAQ0R,IAIhB6D,EAAiB,WAEf,IAAK,GAAI/R,KAAU/G,MAAKuH,EACtBvH,KAAKsH,EAAiBP,GAAU/G,KAAKuH,EAAwBR,IAIjEgS,EAAe,WACb,GAAIhZ,GAAOC,IAGX6I,GAAK7I,KAAKwH,EAAU,SAAS+L,EAAGnD,GAC9B,GAAI4I,GAAY5I,EAAO,GACnBtM,EAAOsM,EAAO,EAClB4I,GAAU5U,MAAMrE,GAAOA,GAAMkZ,OAAOnV,OAIxCoV,EAAW,SAASC,GAClB,GAAIC,GAAIpP,EAAWqP,KAAKF,GACtB7O,KACA3J,EAAI,CAEN,KACE,KAAOA,KAAK2J,EAAIR,EAAQnJ,IAAMyY,EAAEzY,IAAM,GACtC,MAAOT,GACP,KAAM,IAAImD,GAAiB,gBAAkB8V,GAG/C,GAAI7O,EAAIqC,OAAS3M,KAAK2F,EAAe2T,eACnC,KAAM,IAAIjW,GACR,iFAIJ,OAAOiH,IAGTiP,EAAkB,SAASrN,GAEzB,GAAIiG,GAAe,KAAOjG,EAAIwI,MAAQxI,EAAIsN,KAAO,IAAMtN,EAAIsN,KAAO,GAKlE,OAHItN,GAAIuI,WACNtC,EAAejG,EAAIuI,SAAW,IAAMtC,GAE/BA,GAGTsH,EAAyB,WAElBzZ,KAAKmH,GACRnH,KAAK2O,EAAiBvK,MAAMpE,KAAMgE,YAItC0V,EAAkB,SAASC,EAAWpP,GACpC,GAAIkF,GAASzP,KAAK0P,EAAeiK,EAAWpP,EAE5CvK,MAAK4Z,EAAc,UACjBD,UAAWA,EACXpP,QAASA,IAGXvK,KAAK6Z,GACHF,EAAUpW,KACVoW,EAAUrW,QACVqW,EAAUnK,IACVmK,EAAUG,OACVrK,EACAlF,IAIJwP,EAAgB,SAASJ,EAAWpP,GAClC,GAAIxK,GAAOC,KACPyP,IACJ,IAAIkK,EAAUlL,OAASkL,EAAUlL,MAAMzN,SACrC6H,EAAK8Q,EAAUlL,MAAO,SAAS9N,EAAG8N,GAChC,GAAIuL,GAAQja,EAAKka,GAAgBxL,EAAOkL,EAAUnK,IAC9CwK,IACFvK,EAAOjO,KAAKwY,KAKZzP,GAAWA,EAAQ+D,gBACrB,IAAK,GAAI6I,GAAI,EAAGA,EAAI5M,EAAQ+D,gBAAkB6I,EAAI1H,EAAOzO,OAAQmW,IAC/D1H,EAAO0H,GAAG+C,QAAS,CAKzB,OADAzK,GAASA,EAAO1L,MAAM,EAAG/D,KAAK2F,EAAec,kBAI/C0T,GAAiB,SAASH,EAAOI,GAE/B,GAAIC,IACFC,SAAUN,EAAMxK,IAChBsK,OAAQE,EAAMO,KACdC,MAAOR,EAAMS,OACbC,WAAUV,EAAMlN,MAAQ,IAuB1B,OAfKkN,GAAMxK,MACT6K,EAAWC,SAAWF,GAGxBC,EAAWH,SAGNla,KAAK2F,EAAeQ,aAAakJ,OACjCrP,KAAK2F,EAAeQ,aAAakJ,KAAKgL,EAAWC,WAEpD,qBAAqBjL,KAAKgL,EAAW,cAErC,qBAAqBhL,KAAKgL,EAAWC,WAGhCD,GAGTM,GAAmB,SAAS3E,EAAM1S,EAASiM,EAASuK,EAAQrK,EAAQlF,GAClE,GAAIqQ,IAAmB5E,EAAOA,EAAO,KAAO,KAAO1S,GAAW,GAC9D,KACItD,KAAK2F,EAAeK,aAAaqJ,OAClCrP,KAAK2F,EAAeK,aAAaqJ,KAAK/L,KACrCtD,KAAK2F,EAAeK,aAAaqJ,KAAKuL,GAH1C,CAQA,GAAIrM,EAoBJ,IAlBIkB,GAAUA,EAAOzO,QACnBuO,EAAUE,EAAO,GAAG6K,UAAY/K,EAGhCE,EAAOE,UACPpB,GAAckB,OAAQA,IACbF,IACThB,GACEkB,SAEI6K,SAAU/K,EACVuK,OAAQA,EACRI,QAAQ,QAOZla,KAAK2F,EAAeM,WAAWoJ,OACjCrP,KAAK2F,EAAeM,WAAWoJ,KAAKE,OAMlCvP,KAAK2F,EAAeO,cAAcmJ,MACnCrP,KAAK2F,EAAeO,cAAcmJ,KAAKE,IAF1C,CAOA,GAAI5N,GAAOmH,GAGP+R,WACEC,SAEI9E,KAAMA,EACNrL,MAAOrH,EACPiL,WAAYA,KAIlBwM,YAAaxL,GAEfhF,EAIFvK,MAAK4P,EAAMjO,MAGbqZ,GAAa,SAASrZ,GAGpB,GAAIoJ,GAAM/K,KAAK2F,EAAeY,gBAI9B,IAHI5E,EAAK2B,UACP3B,EAAK2B,QAAUyF,EAASpH,EAAK2B,QAASyH,IAEpCpJ,EAAKkZ,UAAW,CAClB,GAAIA,GAAYlZ,EAAKkZ,UAAUC,OAAO,EACtCD,GAAUlQ,MAAQ5B,EAAS8R,EAAUlQ,MAAOI,GAG9C,GAAIkQ,GAAUtZ,EAAKsZ,OAanB,OAZIA,KACEA,EAAQzL,MACVyL,EAAQzL,IAAMzG,EAASkS,EAAQzL,IAAKxP,KAAK2F,EAAea,eAEtDyU,EAAQC,UACVD,EAAQC,QAAUnS,EAASkS,EAAQC,QAASlb,KAAK2F,EAAea,gBAIhE7E,EAAKwZ,aAAexZ,EAAKwZ,YAAYL,QACvC9a,KAAKob,GAAiBzZ,EAAKwZ,aAEtBxZ,GAMT0Z,GAAkB,SAASF,GAQzB,IAAK,GAJHG,GACAvL,EACApO,EAHE4Z,GAAY,KAAM,OAAQ,OAKrB5a,EAAI,EAAGA,EAAIwa,EAAYL,OAAO9Z,SAAUL,EAE/C,GADAoP,EAAQoL,EAAYL,OAAOna,GAExBoP,EAAMwF,eAAe,SACrB/M,EAASuH,EAAMpO,QAChBqH,EAAa+G,EAAMpO,MAHrB,CAOAA,EAAOmH,KAAgBiH,EAAMpO,KAC7B,KAAK,GAAIwV,GAAI,EAAGA,EAAIoE,EAASva,SAAUmW,EACrCmE,EAAUC,EAASpE,GACfxV,EAAK4T,eAAe+F,IAAY3Z,EAAK2Z,KACvC3Z,EAAK2Z,GAAWvS,EAASpH,EAAK2Z,GAAUtb,KAAK2F,EAAea,cAGhE2U,GAAYL,OAAOna,GAAGgB,KAAOA,IAIjC6Z,GAAc,WACZ,GAAKxb,KAAKkF,GAAkBlF,KAAK+E,EAAjC,CACA,GAAI0W,KAkBJ,OAhBIzb,MAAKkF,GAAiBC,EAAWuW,YACnCD,EAASrV,SACPuV,aAAcxW,EAAWuW,YAKzB7V,EAAQiC,UAAYjC,EAAQiC,SAASE,OACvCyT,EAASjM,IAAM3J,EAAQiC,SAASE,MAG9BhI,KAAK+E,GAAgBE,EAAU2W,WAC5BH,EAASrV,UAASqV,EAASrV,YAChCqV,EAASrV,QAAQ8U,QAAUjW,EAAU2W,UAGhCH,IAGTI,EAAe,WACb7b,KAAK8b,GAAmB,EACxB9b,KAAK+b,GAAgB,MAGvBC,GAAgB,WACd,MAAOhc,MAAK8b,IAAoBvX,IAAQvE,KAAK+b,GAAgB/b,KAAK8b,IAYpEG,GAAe,SAASC,GACtB,GAAIC,GAAOnc,KAAKqF,CAEhB,UACG8W,GACDD,EAAQ5Y,UAAY6Y,EAAK7Y,SACzB4Y,EAAQnB,cAAgBoB,EAAKpB,eAK3BmB,EAAQ3N,YAAc4N,EAAK5N,WACtBhF,EAAiB2S,EAAQ3N,WAAY4N,EAAK5N,aACxC2N,EAAQrB,YAAasB,EAAKtB,WAE5BvR,EAAgB4S,EAAQrB,UAAWsB,EAAKtB,aAMnDuB,GAAkB,SAASnB,GAEzB,IAAIjb,KAAKqc,KAAT,CAIA,GAAIpF,GAASgE,EAAQhE,MAKrB,IAAiB,MAAXA,GAA6B,MAAXA,GAA6B,MAAXA,EAA1C,CAEA,GAAIqF,EACJ,KAIIA,EADE5S,IACMuR,EAAQ7U,QAAQmW,IAAI,eAEpBtB,EAAQuB,kBAAkB,eAIpCF,EAA8B,IAAtBG,SAASH,EAAO,IACxB,MAAOpc,IAITF,KAAK8b,GAAmBQ,EAEpBA,EAEwB,EAAxBtc,KAAK8b,IAAwB,IAEjC9b,KAAK+b,GAAgBxX,OAGvBmY,EAAO,SAAS/a,GACd,GAAI8I,GAAgBzK,KAAK2F,EAErBgX,GACAC,QAAS5c,KAAKyF,EACdvB,OAAQuG,EAAcvG,OACtB2Y,SAAU,cAEZpB,EAAWzb,KAAK8c,IAsDlB,IApDIrB,IACFkB,EAAS1B,QAAUQ,GAIjB9Z,EAAK2M,sBAAuB3M,GAAK2M,eAErC3M,EAAOmH,EAAY6T,EAAUhb,GAG7BA,EAAK+O,KAAO5H,EAAYA,KAAgB9I,KAAK0F,EAAegL,MAAO/O,EAAK+O,MACxE/O,EAAKmB,MAAQgG,EAAYA,KAAgB9I,KAAK0F,EAAe5C,OAAQnB,EAAKmB,OAG1EnB,EAAKmB,MAAM,oBAAsByB,IAAQvE,KAAKyH,EAE1CzH,KAAK2H,GAAgB3H,KAAK2H,EAAa3G,OAAS,IAGlDW,EAAKwZ,aACHL,UAAW/W,MAAMhD,KAAKf,KAAK2H,EAAc,KAIzC3H,KAAK0F,EAAe+G,OAEtB9K,EAAK8K,KAAOzM,KAAK0F,EAAe+G,MAI9BhC,EAAcsG,cAAapP,EAAKoP,YAActG,EAAcsG,aAG5DtG,EAAc7E,UAASjE,EAAKiE,QAAU6E,EAAc7E,SAGpD6E,EAAcsS,aAAYpb,EAAKqb,YAAcvS,EAAcsS,YAE/Dpb,EAAO3B,KAAKid,GAActb,GAG1BqN,OAAOC,KAAKtN,GAAMub,QAAQ,SAASxS,IAChB,MAAb/I,EAAK+I,IAA8B,KAAd/I,EAAK+I,IAAe9B,EAAcjH,EAAK+I,YACvD/I,GAAK+I,KAIZ/F,EAAW8F,EAAcyG,gBAC3BvP,EAAO8I,EAAcyG,aAAavP,IAASA,GAIxCA,IAAQiH,EAAcjH,MAMzBgD,EAAW8F,EAAc4G,qBACxB5G,EAAc4G,mBAAmB1P,IAOpC,MAAI3B,MAAKqc,SACPrc,MAAKwK,EAAU,OAAQ,uCAAwC7I,QAIzB,gBAA7B8I,GAAc7D,WACnBkE,KAAKqS,SAAW1S,EAAc7D,YAChC5G,KAAKod,GAAsBzb,GAG7B3B,KAAKod,GAAsBzb,KAI/B0b,GAAe,SAAS1b,GACtB,MAAOkI,GAASlI,EAAM3B,KAAK2F,EAAekB,eAG5CyW,GAAU,WACR,MAAOlU,MAGTmU,GAAuB,SAAS5b,EAAMF,GACpC,GAAI1B,GAAOC,KACPyK,EAAgBzK,KAAK2F,CAEzB,IAAK3F,KAAKyL,UAAV,CAQA,GALA9J,EAAO3B,KAAKwd,GAAY7b,IAKnB3B,KAAK2F,EAAe8X,iBAAmBzd,KAAK0d,GAAc/b,GAE7D,WADA3B,MAAKwK,EAAU,OAAQ,+BAAgC7I,EAOzD3B,MAAKsF,EAAe3D,EAAKgc,WAAahc,EAAKgc,SAAW3d,KAAK4d,MAG3D5d,KAAKqF,EAAY1D,EAEjB3B,KAAKwK,EAAU,QAAS,uBAAwB7I,EAEhD,IAAIkc,IACFC,eAAgB,IAChBC,cAAe,YAAc/d,KAAKmK,QAClC6T,WAAYhe,KAAKwF,EAGfxF,MAAK0M,IACPmR,EAAKI,cAAgBje,KAAK0M,EAG5B,IAAImO,GAAYlZ,EAAKkZ,WAAalZ,EAAKkZ,UAAUC,OAAO,EAItD9a,MAAK2F,EAAee,iBACpB1G,KAAK2F,EAAee,gBAAgB0E,QAEpCpL,KAAK6P,mBACH8D,SAAU,SACVrQ,QAASuX,GACJA,EAAU7E,KAAO6E,EAAU7E,KAAO,KAAO,IAAM6E,EAAUlQ,MAC1DhJ,EAAK2B,QACTqa,SAAUhc,EAAKgc,SACf9b,MAAOF,EAAKE,OAAS,SAIzB,IAAI2N,GAAMxP,KAAK6M,GACdpC,EAAc8G,WAAavR,KAAKke,IAAcnd,KAAKf,MAClDwP,IAAKA,EACLqO,KAAMA,EACNlc,KAAMA,EACN4I,QAASE,EACT0T,UAAW,WACTpe,EAAKkI,IAELlI,EAAK6Z,EAAc,WACjBjY,KAAMA,EACN4Q,IAAK/C,IAEP/N,GAAYA,KAEd2c,QAAS,SAAiB3b,GACxB1C,EAAKyK,EAAU,QAAS,mCAAoC/H,GAExDA,EAAMwY,SACRlb,EAAKse,GAAiB5b,EAAMwY,SAG9Blb,EAAK6Z,EAAc,WACjBjY,KAAMA,EACN4Q,IAAK/C,IAEP/M,EAAQA,GAAS,GAAI7B,OAAM,sDAC3Ba,GAAYA,EAASgB,QAK3B6b,GAAc,SAASC,GAErB,GAAI/O,GAAM+O,EAAK/O,IAAM,IAAMrG,EAAUoV,EAAKV,MAEtCW,EAAmB,KACnBC,IAUJ,IARIF,EAAKhU,QAAQnE,UACfoY,EAAmBxe,KAAK0e,GAAcH,EAAKhU,QAAQnE,UAGjDmY,EAAKhU,QAAQoU,kBACfF,EAA2Bze,KAAK0e,GAAcH,EAAKhU,QAAQoU,kBAGzDjV,IAAiB,CACnB+U,EAAyBhM,KAAO3N,EAAUyZ,EAAK5c,KAE/C,IAAIid,GAAsB9V,KAAgB9I,KAAK8G,GAC3C+X,EAAe/V,EAAY8V,EAAqBH,EAMpD,OAJID,KACFK,EAAazY,QAAUoY,GAGlB3Y,EACJiZ,MAAMtP,EAAKqP,GACXpH,KAAK,SAASC,GACb,GAAIA,EAASqH,GACXR,EAAKJ,WAAaI,EAAKJ,gBAClB,CACL,GAAI1b,GAAQ,GAAI7B,OAAM,sBAAwB8W,EAAST,OAGvDxU,GAAMwY,QAAUvD,EAChB6G,EAAKH,SAAWG,EAAKH,QAAQ3b,MAGhC,SAAS,WACR8b,EAAKH,SACHG,EAAKH,QAAQ,GAAIxd,OAAM,6CAI/B,GAAIqa,GAAUpV,EAAQ4Q,gBAAkB,GAAI5Q,GAAQ4Q,cACpD,IAAKwE,EAAL,CAGA,GAAI+D,GAAU,mBAAqB/D,IAAqC,mBAAnBgE,eAEhDD,KAED,mBAAqB/D,GACvBA,EAAQ7D,mBAAqB,WAC3B,GAA2B,IAAvB6D,EAAQjE,WAEL,GAAuB,MAAnBiE,EAAQhE,OACjBsH,EAAKJ,WAAaI,EAAKJ,gBAClB,IAAII,EAAKH,QAAS,CACvB,GAAIzI,GAAM,GAAI/U,OAAM,sBAAwBqa,EAAQhE,OACpDtB,GAAIsF,QAAUA,EACdsD,EAAKH,QAAQzI,MAIjBsF,EAAU,GAAIgE,gBAGdzP,EAAMA,EAAI0P,QAAQ,WAAY,IAG1BX,EAAKJ,YACPlD,EAAQkE,OAASZ,EAAKJ,WAEpBI,EAAKH,UACPnD,EAAQzY,QAAU,WAChB,GAAImT,GAAM,GAAI/U,OAAM,oCACpB+U,GAAIsF,QAAUA,EACdsD,EAAKH,QAAQzI,MAKnBsF,EAAQmE,KAAK,OAAQ5P,GAEjBgP,GACF3V,EAAK2V,EAAkB,SAAS9T,EAAKC,GACnCsQ,EAAQoE,iBAAiB3U,EAAKC,KAIlCsQ,EAAQqE,KAAKxa,EAAUyZ,EAAK5c,UAG9B4d,GAAe,SAASC,GACtB,GAAIC,KAEJ,KAAK,GAAI/U,KAAO8U,GACd,GAAIA,EAAKjK,eAAe7K,GAAM,CAC5B,GAAIC,GAAQ6U,EAAK9U,EACjB+U,GAAU/U,GAAwB,kBAAVC,GAAuBA,IAAUA,EAI7D,MAAO8U,IAGTC,EAAW,SAAS7d,GAGhB7B,KAAKuH,EAAwB1F,KAC5B7B,KAAKoK,OAASpK,KAAK2F,EAAeyE,QAGnCjG,SAASX,UAAUY,MAAMrD,KACvBf,KAAKuH,EAAwB1F,GAC7B7B,KAAKsH,KACFvD,MAAMhD,KAAKiD,UAAW,KAK/B2b,EAAe,SAASjV,EAAK3H,GACvBiC,EAAYjC,SACP/C,MAAK0F,EAAegF,GAE3B1K,KAAK0F,EAAegF,GAAO5B,EAAY9I,KAAK0F,EAAegF,OAAY3H,KAM7E9C,EAAMuD,UAAUoc,QAAU3f,EAAMuD,UAAU8M,eAC1CrQ,EAAMuD,UAAUqc,kBAAoB5f,EAAMuD,UAAUwN,WAEpDvR,EAAOD,QAAUS,IAEdc,KAAKf,KAAuB,mBAAXF,QAAyBA,OAAyB,mBAATC,MAAuBA,KAAyB,mBAAXF,QAAyBA,aACxHigB,GAAK,GAAGC,GAAK,GAAG3c,EAAI,EAAElB,EAAI,EAAEmC,EAAI,EAAE2b,EAAI,IAAI7d,GAAG,SAASjB,EAAQzB,EAAOD,IACxE,SAAWM,GAOX,GAAImgB,GAAmB/e,EAAQ,GAG3B2E,EACgB,mBAAXhG,QACHA,OACkB,mBAAXC,GAAyBA,EAAyB,mBAATC,MAAuBA,QACzEmgB,EAASra,EAAQ5F,MAEjBA,EAAQ,GAAIggB,EAQhBhgB,GAAMkgB,WAAa,WAEjB,MADAta,GAAQ5F,MAAQigB,EACTjgB,GAGTA,EAAM0R,YAENlS,EAAOD,QAAUS,EAoCjBR,EAAOD,QAAQ4gB,OAASH,IAErBlf,KAAKf,KAAuB,mBAAXF,QAAyBA,OAAyB,mBAATC,MAAuBA,KAAyB,mBAAXF,QAAyBA,aACxHyE,EAAI,IAAID,GAAG,SAASnD,EAAQzB,EAAOD,IACtC,SAAWM,GAQX,QAAS0I,GAAS6X,GAChB,MAAuB,gBAATA,IAA8B,OAATA,EAKrC,QAAS9X,GAAQoC,GACf,OAAQqE,OAAOxL,UAAU6H,SAAStK,KAAK4J,IACrC,IAAK,iBACH,OAAO,CACT,KAAK,qBACH,OAAO,CACT,KAAK,wBACH,OAAO,CACT,SACE,MAAOA,aAAiB/J,QAI9B,QAASwH,GAAauC,GACpB,MAAiD,wBAA1CqE,OAAOxL,UAAU6H,SAAStK,KAAK4J,GAGxC,QAAStC,GAAWsC,GAClB,MAAiD,sBAA1CqE,OAAOxL,UAAU6H,SAAStK,KAAK4J,GAGxC,QAASrC,GAAeqC,GACtB,MAAiD,0BAA1CqE,OAAOxL,UAAU6H,SAAStK,KAAK4J,GAGxC,QAAS3F,GAAYqb,GACnB,MAAgB,UAATA,EAGT,QAAS1b,GAAW0b,GAClB,MAAuB,kBAATA,GAGhB,QAAS5X,GAAc4X,GACrB,MAAgD,oBAAzCrR,OAAOxL,UAAU6H,SAAStK,KAAKsf,GAGxC,QAAS3X,GAAS2X,GAChB,MAAgD,oBAAzCrR,OAAOxL,UAAU6H,SAAStK,KAAKsf,GAGxC,QAAS1X,GAAQ0X,GACf,MAAgD,mBAAzCrR,OAAOxL,UAAU6H,SAAStK,KAAKsf,GAGxC,QAASzX,GAAcyX,GACrB,IAAK5X,EAAc4X,GAAO,OAAO,CAEjC,KAAK,GAAI9M,KAAK8M,GACZ,GAAIA,EAAK9K,eAAehC,GACtB,OAAO,CAGX,QAAO,EAGT,QAAS+M,KACP,IAEE,MADA,IAAIC,YAAW,KACR,EACP,MAAOrgB,GACP,OAAO,GAIX,QAASsgB,KACP,IAEE,MADA,IAAIC,UAAS,KACN,EACP,MAAOvgB,GACP,OAAO,GAIX,QAASwgB,KACP,IAEE,MADA,IAAIC,cAAa,KACV,EACP,MAAOzgB,GACP,OAAO,GAIX,QAASwJ,KACP,KAAM,SAAW7D,IAAU,OAAO,CAElC,KAIE,MAHA,IAAI+a,SACJ,GAAIrJ,SAAQ,IACZ,GAAIsJ,WACG,EACP,MAAO3gB,GACP,OAAO,GAQX,QAASgH,KACP,IAAKwC,IAAiB,OAAO,CAE7B,KAKE,MAHA,IAAI6N,SAAQ,cACVtQ,eAAgB,YAEX,EACP,MAAO/G,GACP,OAAO,GAIX,QAAS4gB,KACP,MAAwC,kBAA1BC,uBAGhB,QAASC,GAAgBvf,GACvB,QAASyP,GAAavP,EAAM+C,GAC1B,GAAIuc,GAAiBxf,EAASE,IAASA,CACvC,OAAI+C,GACKA,EAASuc,IAAmBA,EAE9BA,EAGT,MAAO/P,GAGT,QAASrI,GAAKiH,EAAKrO,GACjB,GAAId,GAAGwW,CAEP,IAAInS,EAAY8K,EAAI9O,QAClB,IAAKL,IAAKmP,GACJ7G,EAAO6G,EAAKnP,IACdc,EAASV,KAAK,KAAMJ,EAAGmP,EAAInP,QAK/B,IADAwW,EAAIrH,EAAI9O,OAEN,IAAKL,EAAI,EAAGA,EAAIwW,EAAGxW,IACjBc,EAASV,KAAK,KAAMJ,EAAGmP,EAAInP,IAMnC,QAASmI,GAAYoY,EAAMC,GACzB,MAAKA,IAGLtY,EAAKsY,EAAM,SAASzW,EAAKC,GACvBuW,EAAKxW,GAAOC,IAEPuW,GALEA,EAgBX,QAASlY,GAAa8G,GACpB,QAAKd,OAAOoS,UAGLpS,OAAOoS,SAAStR,GAGzB,QAAS/G,GAASoQ,EAAKpO,GACrB,GAAmB,gBAARA,GACT,KAAM,IAAInK,OAAM,yDAElB,OAAmB,gBAARuY,IAA4B,IAARpO,EACtBoO,EAEFA,EAAInY,QAAU+J,EAAMoO,EAAMA,EAAI5M,OAAO,EAAGxB,GAAO,IAUxD,QAAS9B,GAAOoY,EAAQ3W,GACtB,MAAOsE,QAAOxL,UAAU+R,eAAexU,KAAKsgB,EAAQ3W,GAGtD,QAASxB,GAAWoY,GAQlB,IALA,GAGEC,GAHEC,KACF7gB,EAAI,EACJ8gB,EAAMH,EAAStgB,OAGVL,EAAI8gB,EAAK9gB,IACd4gB,EAAUD,EAAS3gB,GACf+H,EAAS6Y,GAGXC,EAAQhgB,KAAK+f,EAAQrC,QAAQ,8BAA+B,SACnDqC,GAAWA,EAAQG,QAE5BF,EAAQhgB,KAAK+f,EAAQG,OAIzB,OAAO,IAAIC,QAAOH,EAAQI,KAAK,KAAM,KAGvC,QAASzY,GAAU5I,GACjB,GAAIshB,KAIJ,OAHAhZ,GAAKtI,EAAG,SAASmK,EAAKC,GACpBkX,EAAMrgB,KAAKwQ,mBAAmBtH,GAAO,IAAMsH,mBAAmBrH,MAEzDkX,EAAMD,KAAK,KAMpB,QAASpY,GAASgG,GAChB,GAAmB,gBAARA,GAAkB,QAC7B,IAAIsS,GAAQtS,EAAIsS,MAAM,kEAGlBC,EAAQD,EAAM,IAAM,GACpBE,EAAWF,EAAM,IAAM,EAC3B,QACErN,SAAUqN,EAAM,GAChBpN,KAAMoN,EAAM,GACZzV,KAAMyV,EAAM,GACZnN,SAAUmN,EAAM,GAAKC,EAAQC,GAGjC,QAAS5Y,KACP,GAAI6Y,GAASpc,EAAQoc,QAAUpc,EAAQqc,QAEvC,KAAKld,EAAYid,IAAWA,EAAOE,gBAAiB,CAGlD,GAAIC,GAAM,GAAIC,aAAY,EAC1BJ,GAAOE,gBAAgBC,GAGvBA,EAAI,GAAe,KAATA,EAAI,GAAc,MAE5BA,EAAI,GAAe,MAATA,EAAI,GAAe,KAE7B,IAAIE,GAAM,SAASC,GAEjB,IADA,GAAIC,GAAID,EAAIlX,SAAS,IACdmX,EAAExhB,OAAS,GAChBwhB,EAAI,IAAMA,CAEZ,OAAOA,GAGT,OACEF,GAAIF,EAAI,IACRE,EAAIF,EAAI,IACRE,EAAIF,EAAI,IACRE,EAAIF,EAAI,IACRE,EAAIF,EAAI,IACRE,EAAIF,EAAI,IACRE,EAAIF,EAAI,IACRE,EAAIF,EAAI,IAIV,MAAO,mCAAmClD,QAAQ,QAAS,SAASuD,GAClE,GAAIpiB,GAAqB,GAAhByK,KAAKqS,SAAiB,EAC7BqF,EAAU,MAANC,EAAYpiB,EAAS,EAAJA,EAAW,CAClC,OAAOmiB,GAAEnX,SAAS,MAYxB,QAAShC,GAAiBqZ,GAWxB,IATA,GAOEC,GAPEC,EAAsB,EACxBC,EAAiB,GACjBC,KACAC,EAAS,EACTtB,EAAM,EACNuB,EAAY,MACZC,EAAYD,EAAUhiB,OAGjB0hB,GAAQK,IAAWH,IACxBD,EAAUO,EAAoBR,KAMhB,SAAZC,GACCI,EAAS,GAAKtB,EAAMqB,EAAI9hB,OAASiiB,EAAYN,EAAQ3hB,QAAU6hB,KAKlEC,EAAIthB,KAAKmhB,GAETlB,GAAOkB,EAAQ3hB,OACf0hB,EAAOA,EAAKS,UAGd,OAAOL,GAAInT,UAAUiS,KAAKoB,GAS5B,QAASE,GAAoBR,GAC3B,GACEU,GACAC,EACA3Y,EACA4Y,EACA3iB,EALEmiB,IAOJ,KAAKJ,IAASA,EAAK5O,QACjB,MAAO,EAST,IANAgP,EAAIthB,KAAKkhB,EAAK5O,QAAQR,eAClBoP,EAAK3c,IACP+c,EAAIthB,KAAK,IAAMkhB,EAAK3c,IAGtBqd,EAAYV,EAAKU,UACbA,GAAa1a,EAAS0a,GAExB,IADAC,EAAUD,EAAUrZ,MAAM,OACrBpJ,EAAI,EAAGA,EAAI0iB,EAAQriB,OAAQL,IAC9BmiB,EAAIthB,KAAK,IAAM6hB,EAAQ1iB,GAG3B,IAAI4iB,IAAiB,OAAQ,OAAQ,QAAS,MAC9C,KAAK5iB,EAAI,EAAGA,EAAI4iB,EAAcviB,OAAQL,IACpC+J,EAAM6Y,EAAc5iB,GACpB2iB,EAAOZ,EAAKc,aAAa9Y,GACrB4Y,GACFR,EAAIthB,KAAK,IAAMkJ,EAAM,KAAO4Y,EAAO,KAGvC,OAAOR,GAAIlB,KAAK,IAMlB,QAAS6B,GAAgBhjB,EAAGijB,GAC1B,WAAYjjB,IAAMijB,GAMpB,QAASC,GAAgBljB,EAAGijB,GAC1B,MAAO1e,GAAYvE,IAAMuE,EAAY0e,GAMvC,QAASpa,GAAgBsF,EAAKgV,GAC5B,OAAIH,EAAgB7U,EAAKgV,KAEzBhV,EAAMA,EAAIkM,OAAO,GACjB8I,EAAMA,EAAI9I,OAAO,GAEblM,EAAIoH,OAAS4N,EAAI5N,MAAQpH,EAAIjE,QAAUiZ,EAAIjZ,SAG3CgZ,EAAgB/U,EAAIL,WAAYqV,EAAIrV,aAEjChF,EAAiBqF,EAAIL,WAAYqV,EAAIrV,cAM9C,QAAShF,GAAiBsa,EAAQC,GAChC,GAAIL,EAAgBI,EAAQC,GAAS,OAAO,CAE5C,IAAIC,GAAUF,EAAOpU,OACjBuU,EAAUF,EAAOrU,MAGrB,IAAIsU,EAAQ/iB,SAAWgjB,EAAQhjB,OAAQ,OAAO,CAI9C,KAAK,GADDP,GAAGijB,EACE/iB,EAAI,EAAGA,EAAIojB,EAAQ/iB,OAAQL,IAGlC,GAFAF,EAAIsjB,EAAQpjB,GACZ+iB,EAAIM,EAAQrjB,GAEVF,EAAE6Z,WAAaoJ,EAAEpJ,UACjB7Z,EAAEqZ,SAAW4J,EAAE5J,QACfrZ,EAAE+Z,QAAUkJ,EAAElJ,OACd/Z,EAAE,cAAgBijB,EAAE,YAEpB,OAAO,CAEX,QAAO,EAUT,QAASja,GAAKqG,EAAKvM,EAAM0gB,EAAaC,GACpC,GAAW,MAAPpU,EAAJ,CACA,GAAImF,GAAOnF,EAAIvM,EACfuM,GAAIvM,GAAQ0gB,EAAYhP,GACxBnF,EAAIvM,GAAM4J,GAAY,EACtB2C,EAAIvM,GAAM+J,EAAW2H,EACjBiP,GACFA,EAAM1iB,MAAMsO,EAAKvM,EAAM0R,KAU3B,QAAShR,GAASkgB,EAAOC,GACvB,IAAKzb,EAAQwb,GAAQ,MAAO,EAI5B,KAAK,GAFDE,MAEK1jB,EAAI,EAAGA,EAAIwjB,EAAMnjB,OAAQL,IAChC,IACE0jB,EAAO7iB,KAAK8iB,OAAOH,EAAMxjB,KACzB,MAAOT,GACPmkB,EAAO7iB,KAAK,gCAIhB,MAAO6iB,GAAOzC,KAAKwC,GASrB,QAASG,GAAW5Z,GAClB,QAAS6Z,UAAU7Z,GAAOZ,MAAM,SAAS/I,OAG3C,QAASyjB,GAAS9Z,GAChB,MAAO4Z,GAAW1f,KAAKC,UAAU6F,IAGnC,QAAS+Z,GAAe/Z,GACtB,GAAqB,gBAAVA,GAAoB,CAC7B,GAAIga,GAAY,EAChB,OAAO5b,GAAS4B,EAAOga,GAClB,GACY,gBAAVha,IACU,iBAAVA,IACU,mBAAVA,GAEP,MAAOA,EAGT,IAAIqL,GAAOhH,OAAOxL,UAAU6H,SAAStK,KAAK4J,EAG1C,OAAa,oBAATqL,EAAmC,WAC1B,mBAATA,EAAkC,UACzB,sBAATA,EACKrL,EAAMpH,KAAO,cAAgBoH,EAAMpH,KAAO,IAAM,aAElDoH,EAGT,QAASia,GAAgBja,EAAOka,GAC9B,MAAc,KAAVA,EAAoBH,EAAe/Z,GAEnClC,EAAckC,GACTqE,OAAOC,KAAKtE,GAAOma,OAAO,SAASC,EAAKra,GAE7C,MADAqa,GAAIra,GAAOka,EAAgBja,EAAMD,GAAMma,EAAQ,GACxCE,OAEA5P,MAAMxM,QAAQgC,GAChBA,EAAMqa,IAAI,SAASC,GACxB,MAAOL,GAAgBK,EAAKJ,EAAQ,KAIjCH,EAAe/Z,GAGxB,QAASf,GAAmByE,EAAIwW,EAAOK,GACrC,IAAKzc,EAAc4F,GAAK,MAAOA,EAE/BwW,GAAyB,gBAAVA,GAAqBM,EAAgCN,EACpEK,EAA2B,gBAAVL,GAAqBO,EAA+BF,CAErE,IAAIG,GAAaT,EAAgBvW,EAAIwW,EAErC,OAAIJ,GAAS3f,EAAUugB,IAAeH,EAC7Btb,EAAmByE,EAAIwW,EAAQ,GAGjCQ,EAGT,QAAS1b,GAAwBsF,EAAM0V,GACrC,GAAoB,gBAAT1V,IAAqC,gBAATA,GAAmB,MAAOA,GAAK5D,UACtE,KAAK8J,MAAMxM,QAAQsG,GAAO,MAAO,EAKjC,IAHAA,EAAOA,EAAKqW,OAAO,SAAS5a,GAC1B,MAAsB,gBAARA,KAEI,IAAhBuE,EAAKjO,OAAc,MAAO,sBAG9B,IADA2jB,EAAiC,gBAAdA,GAAyBY,EAA4BZ,EACpE1V,EAAK,GAAGjO,QAAU2jB,EAAW,MAAO1V,GAAK,EAE7C,KAAK,GAAIuW,GAAWvW,EAAKjO,OAAQwkB,EAAW,EAAGA,IAAY,CACzD,GAAIH,GAAapW,EAAKlL,MAAM,EAAGyhB,GAAU5D,KAAK,KAC9C,MAAIyD,EAAWrkB,OAAS2jB,GACxB,MAAIa,KAAavW,EAAKjO,OAAeqkB,EAC9BA,EAAa,IAGtB,MAAO,GAGT,QAASxb,GAASsa,EAAOtd,GAcvB,QAAS4e,GAAeC,GACtB,MAAI/c,GAAQ+c,GACHA,EAAYV,IAAI,SAASC,GAC9B,MAAOQ,GAAeR,KAItBxc,EAAcid,GACT1W,OAAOC,KAAKyW,GAAaZ,OAAO,SAASC,EAAKY,GAMnD,MAJEZ,GAAIY,GADFC,EAAevW,KAAKsW,GACbE,EAEAJ,EAAeC,EAAYC,IAE/BZ,OAIJW,EA/BT,IAAK/c,EAAQ9B,IAAkB8B,EAAQ9B,IAAyC,IAAxBA,EAAa7F,OACnE,MAAOmjB,EAET,IAEI2B,GAFAF,EAAiB1c,EAAWrC,GAC5Bgf,EAAe,UAGnB,KACEC,EAAYjhB,KAAKgM,MAAM/L,EAAUqf,IACjC,MAAO4B,GACP,MAAO5B,GAwBT,MAAOsB,GAAeK,GA5lBxB,GAAIhhB,GAAY5D,EAAQ,IAEpB2E,EACgB,mBAAXhG,QACHA,OACkB,mBAAXC,GAAyBA,EAAyB,mBAATC,MAAuBA,QA0dzEolB,EAAgC,EAEhCC,EAA+B,MAC/BG,EAA4B,EA6HhC9lB,GAAOD,SACLgJ,SAAUA,EACVD,QAASA,EACTH,aAAcA,EACdC,WAAYA,EACZC,eAAgBA,EAChBtD,YAAaA,EACbL,WAAYA,EACZ8D,cAAeA,EACfC,SAAUA,EACVC,QAASA,EACTC,cAAeA,EACf0X,mBAAoBA,EACpBE,iBAAkBA,EAClBE,qBAAsBA,EACtBhX,cAAeA,EACfxC,uBAAwBA,EACxB4Z,8BAA+BA,EAC/BE,gBAAiBA,EACjBnY,KAAMA,EACNC,YAAaA,EACbC,SAAUA,EACVC,aAAcA,EACdC,OAAQA,EACRC,WAAYA,EACZC,UAAWA,EACXC,MAAOA,EACPC,iBAAkBA,EAClB6Z,oBAAqBA,EACrB5Z,gBAAiBA,EACjBC,iBAAkBA,EAClBC,SAAUA,EACVC,KAAMA,EACNxF,SAAUA,EACV2F,mBAAoBA,EACpBD,wBAAyBA,EACzBE,SAAUA,KAGT9I,KAAKf,KAAuB,mBAAXF,QAAyBA,OAAyB,mBAATC,MAAuBA,KAAyB,mBAAXF,QAAyBA,aACxHigB,GAAK,KAAKE,GAAG,SAAS9e,EAAQzB,EAAOD,IACxC,SAAWM,GA+BX,QAASkmB,KACP,MAAwB,mBAAb/b,WAAiD,MAArBA,SAASnC,SAAyB,GAClEmC,SAASnC,SAASE,KAG3B,QAASie,KACP,MAAwB,mBAAbhc,WAAiD,MAArBA,SAASnC,SAAyB,IAGpEmC,SAASnC,SAASoe,SACrBjc,SAASnC,SAASoe,OAChBjc,SAASnC,SAAS2M,SAClB,KACAxK,SAASnC,SAASqe,UACjBlc,SAASnC,SAAS0R,KAAO,IAAMvP,SAASnC,SAAS0R,KAAO,KAGtDvP,SAASnC,SAASoe,QA/C3B,GAAIxiB,GAAQxC,EAAQ,GAYhBgH,GACF7B,qBAAqB,EACrB+D,OAAO,GAILvE,EACgB,mBAAXhG,QACHA,OACkB,mBAAXC,GAAyBA,EAAyB,mBAATC,MAAuBA,QAGzEqmB,KAAYriB,MACZsiB,EAAmB,IAGnBC,EAAiB,yGA6DrBpe,GAASwD,OAAS,WAUhB,QAASC,GAAU4a,GACjBC,IACAC,EAASjlB,KAAK+kB,GAOhB,QAASG,GAAYH,GACnB,IAAK,GAAI5lB,GAAI8lB,EAASzlB,OAAS,EAAGL,GAAK,IAAKA,EACtC8lB,EAAS9lB,KAAO4lB,GAClBE,EAASE,OAAOhmB,EAAG,GAQzB,QAASimB,KACPC,IACAJ,KAOF,QAASK,GAAerY,EAAOsY,GAC7B,GAAIlM,GAAY,IAChB,KAAIkM,GAAkB7e,EAAS7B,oBAA/B,CAGA,IAAK,GAAI1F,KAAK8lB,GACZ,GAAIA,EAASlR,eAAe5U,GAC1B,IACE8lB,EAAS9lB,GAAGyD,MAAM,MAAOqK,GAAOwK,OAAOmN,EAAOrlB,KAAKiD,UAAW,KAC9D,MAAOgjB,GACPnM,EAAYmM,EAKlB,GAAInM,EACF,KAAMA,IAiBV,QAASoM,GAAsBvlB,EAAK8N,EAAK0X,EAAQC,EAAO9Y,GACtD,GAAII,GAAQ,KAERoM,EAAYnX,EAAM0E,aAAaiG,GAAMA,EAAG5L,MAAQ4L,EAEhD/K,EAAUI,EAAM0E,aAAa1G,GAAOA,EAAI4B,QAAU5B,CAEtD,IAAI0lB,EACFlf,EAASwG,kBAAkB2Y,oCACzBD,EACA5X,EACA0X,EACA5jB,GAEFgkB,QACK,IAAIzM,GAAanX,EAAM6E,QAAQsS,GAMpCpM,EAAQvG,EAASwG,kBAAkBmM,GACnCiM,EAAerY,GAAO,OACjB,CACL,GAOI8Y,GAPAzf,GACF0H,IAAKA,EACL+K,KAAM2M,EACNzM,OAAQ0M,GAGN5jB,EAAOwJ,MAGX,IAAkC,uBAA3B1B,SAAStK,KAAKuC,GAAgC,CACnD,GAAIikB,GAASjkB,EAAQwe,MAAMwE,EACvBiB,KACFhkB,EAAOgkB,EAAO,GACdjkB,EAAUikB,EAAO,IAIrBzf,EAASgF,KAAOuZ,EAEhB5X,GACElL,KAAMA,EACND,QAASA,EACTkM,IAAKwW,IACLvX,OAAQ3G,IAEVgf,EAAerY,GAAO,GAGxB,QAAI+Y,GACKA,EAAmBpjB,MAAMpE,KAAMgE,WAM1C,QAASwiB,KACHiB,IAGJD,EAAqB3hB,EAAQrD,QAC7BqD,EAAQrD,QAAUykB,EAClBQ,GAA2B,GAG7B,QAASZ,KACFY,IAGL5hB,EAAQrD,QAAUglB,EAClBC,GAA2B,EAC3BD,EAAqBza,QAGvB,QAASua,KACP,GAAII,GAAsBN,EACxBO,EAAYC,CACdA,GAAW,KACXR,EAAqB,KACrB5V,EAAgB,KAChBsV,EAAe1iB,MAAM,MAAOsjB,GAAqB,GAAOzO,OAAO0O,IAUjE,QAASjc,GAAO2C,EAAIwZ,GAClB,GAAI/jB,GAAOsiB,EAAOrlB,KAAKiD,UAAW,EAClC,IAAIojB,EAAoB,CACtB,GAAI5V,IAAkBnD,EACpB,MAEAiZ,KAIJ,GAAI7Y,GAAQvG,EAASwG,kBAAkBL,EAevC,IAdA+Y,EAAqB3Y,EACrB+C,EAAgBnD,EAChBuZ,EAAW9jB,EAMX8O,WAAW,WACLpB,IAAkBnD,GACpBiZ,KAED7Y,EAAMqZ,WAAa,IAAO,GAEzBD,KAAY,EACd,KAAMxZ,GA9LV,GA0DImZ,GAAoBC,EA1DpBhB,KACFmB,EAAW,KACXpW,EAAgB,KAChB4V,EAAqB,IAkMvB,OAHA1b,GAAOC,UAAYA,EACnBD,EAAOgb,YAAcA,EACrBhb,EAAO6B,UAAYqZ,EACZlb,KAsDTxD,EAASwG,kBAAoB,WA4C3B,QAASqZ,GAA+B1Z,GACtC,GAAwB,mBAAbA,GAAGI,OAA0BJ,EAAGI,MAA3C,CAiBA,IAAK,GALDuZ,GACAC,EACAC,EAZAtQ,EAAS,0IACTuQ,EAAQ,wHAGRC,EAAQ,6JAERC,EAAY,gDACZC,EAAa,gCACbC,EAAQla,EAAGI,MAAM1E,MAAM,MACvB0E,KAMK9N,GAFO,sBAAsB0Y,KAAKhL,EAAG/K,SAEjC,GAAG6T,EAAIoR,EAAMvnB,OAAQL,EAAIwW,IAAKxW,EAAG,CAC5C,GAAKsnB,EAAQrQ,EAAOyB,KAAKkP,EAAM5nB,IAAM,CACnC,GAAI6nB,GAAWP,EAAM,IAAqC,IAA/BA,EAAM,GAAGtR,QAAQ,UACxC8R,EAASR,EAAM,IAAmC,IAA7BA,EAAM,GAAGtR,QAAQ,OACtC8R,KAAWT,EAAWM,EAAWjP,KAAK4O,EAAM,OAE9CA,EAAM,GAAKD,EAAS,GACpBC,EAAM,GAAKD,EAAS,GACpBC,EAAM,GAAKD,EAAS,IAEtBE,GACE1Y,IAAMgZ,EAAsB,KAAXP,EAAM,GACvBnb,KAAMmb,EAAM,IAAM5B,EAClBviB,KAAM0kB,GAAYP,EAAM,OACxB1N,KAAM0N,EAAM,IAAMA,EAAM,GAAK,KAC7BxN,OAAQwN,EAAM,IAAMA,EAAM,GAAK,UAE5B,IAAKA,EAAQE,EAAM9O,KAAKkP,EAAM5nB,IACnCunB,GACE1Y,IAAKyY,EAAM,GACXnb,KAAMmb,EAAM,IAAM5B,EAClBviB,QACAyW,MAAO0N,EAAM,GACbxN,OAAQwN,EAAM,IAAMA,EAAM,GAAK,UAE5B,CAAA,KAAKA,EAAQG,EAAM/O,KAAKkP,EAAM5nB,KAsBnC,QArBA,IAAI8nB,GAASR,EAAM,IAAMA,EAAM,GAAGtR,QAAQ,aACtC8R,KAAWT,EAAWK,EAAUhP,KAAK4O,EAAM,MAE7CA,EAAM,GAAKD,EAAS,GACpBC,EAAM,GAAKD,EAAS,GACpBC,EAAM,GAAK,MACI,IAANtnB,GAAYsnB,EAAM,IAAiC,mBAApB5Z,GAAGqa,eAK3Cja,EAAM,GAAGgM,OAASpM,EAAGqa,aAAe,GAEtCR,GACE1Y,IAAKyY,EAAM,GACXnb,KAAMmb,EAAM,IAAM5B,EAClBviB,KAAMmkB,EAAM,GAAKA,EAAM,GAAGle,MAAM,QAChCwQ,KAAM0N,EAAM,IAAMA,EAAM,GAAK,KAC7BxN,OAAQwN,EAAM,IAAMA,EAAM,GAAK,MAUnC,IAJKC,EAAQpb,MAAQob,EAAQ3N,OAC3B2N,EAAQpb,KAAOuZ,GAGb6B,EAAQ1Y,KAAoC,UAA7B0Y,EAAQ1Y,IAAIjD,OAAO,EAAG,GAAgB,CAMvD,GAAIrB,GAAM,GAAIuL,eAKd,IAJAvL,EAAIkU,KAAK,MAAO8I,EAAQ1Y,KAAK,GAC7BtE,EAAIoU,KAAK,MAGU,MAAfpU,EAAI+L,OAAgB,CACtB,GAAIyK,GAASxW,EAAIyd,cAAgB,EAIjCjH,GAASA,EAAO3d,WAGhB,IAAI6kB,GAAalH,EAAOI,MAAM,+BAG9B,IAAI8G,EAAY,CACd,GAAIC,GAAmBD,EAAW,EAIC,OAA/BC,EAAiBC,OAAO,KAC1BD,EAAmB5C,IAAsB4C,EAAiB9kB,MAAM,IAKlEmkB,EAAQ1Y,IAAMqZ,EAAiB9kB,MAAM,QAK3C0K,EAAMjN,KAAK0mB,GAGb,MAAKzZ,GAAMzN,QAKTuC,KAAM8K,EAAG9K,KACTD,QAAS+K,EAAG/K,QACZkM,IAAKwW,IACLvX,MAAOA,GAPA,MAwBX,QAAS4Y,GAAoC1N,EAAWnK,EAAK0X,EAAQ5jB,GACnE,GAAIylB,IACFvZ,IAAKA,EACL+K,KAAM2M,EAGR,IAAI6B,EAAQvZ,KAAOuZ,EAAQxO,KAAM,CAO/B,GANAZ,EAAUmO,YAAa,EAElBiB,EAAQjc,OACXic,EAAQjc,KAAOuZ,GAGb1M,EAAUlL,MAAMzN,OAAS,GACvB2Y,EAAUlL,MAAM,GAAGe,MAAQuZ,EAAQvZ,IAAK,CAC1C,GAAImK,EAAUlL,MAAM,GAAG8L,OAASwO,EAAQxO,KACtC,OAAO,CACF,KACJZ,EAAUlL,MAAM,GAAG8L,MACpBZ,EAAUlL,MAAM,GAAG3B,OAASic,EAAQjc,KAGpC,MADA6M,GAAUlL,MAAM,GAAG8L,KAAOwO,EAAQxO,MAC3B,EAOb,MAFAZ,GAAUlL,MAAMua,QAAQD,GACxBpP,EAAUsP,SAAU,GACb;CAKT,MAHEtP,GAAUmO,YAAa,GAGlB,EAYT,QAASoB,GAAsC7a,EAAIwW,GASjD,IACE,GALAoD,GACAkB,EALEC,EAAe,qEACjB3a,KACA4a,KACAC,GAAY,EAMRC,EAAOL,EAAsCM,OACjDD,IAASD,EACTC,EAAOA,EAAKC,OAEZ,GAAID,IAAS7a,GAAqB6a,IAASrhB,EAASwD,OAApD,CAkBA,GAbAyd,GACE3Z,IAAK,KACL1C,KAAMuZ,EACN9L,KAAM,KACNE,OAAQ,MAGN8O,EAAKhmB,KACP4lB,EAAKrc,KAAOyc,EAAKhmB,MACP0kB,EAAQmB,EAAa/P,KAAKkQ,EAAKle,eACzC8d,EAAKrc,KAAOmb,EAAM,IAGK,mBAAdkB,GAAKrc,KACd,IACEqc,EAAKrc,KAAOmb,EAAM9D,MAAMsF,UAAU,EAAGxB,EAAM9D,MAAMxN,QAAQ,MACzD,MAAOzW,IAGPmpB,EAAM,GAAKE,GACbD,GAAY,EAEZD,EAAM,GAAKE,IAAQ,EAGrB9a,EAAMjN,KAAK2nB,GAGTtE,GAGFpW,EAAMkY,OAAO,EAAG9B,EAGlB,IAAI3U,IACF3M,KAAM8K,EAAG9K,KACTD,QAAS+K,EAAG/K,QACZkM,IAAKwW,IACLvX,MAAOA,EAQT,OANA4Y,GACEnX,EACA7B,EAAGqb,WAAarb,EAAGsb,SACnBtb,EAAGkM,MAAQlM,EAAGub,WACdvb,EAAG/K,SAAW+K,EAAGwb,aAEZ3Z,EAQT,QAASxB,GAAkBL,EAAIwW,GAC7B,GAAIpW,GAAQ,IACZoW,GAAiB,MAATA,EAAgB,GAAKA,CAE7B,KAEE,GADApW,EAAQsZ,EAA+B1Z,GAErC,MAAOI,GAET,MAAOvO,GACP,GAAIgI,EAASkC,MACX,KAAMlK,GAIV,IAEE,GADAuO,EAAQya,EAAsC7a,EAAIwW,EAAQ,GAExD,MAAOpW,GAET,MAAOvO,GACP,GAAIgI,EAASkC,MACX,KAAMlK,GAGV,OACEqD,KAAM8K,EAAG9K,KACTD,QAAS+K,EAAG/K,QACZkM,IAAKwW,KAOT,MAHAtX,GAAkB2Y,oCAAsCA,EACxD3Y,EAAkBqZ,+BAAiCA,EAE5CrZ,KAGTjP,EAAOD,QAAU0I,IAEdnH,KAAKf,KAAuB,mBAAXF,QAAyBA,OAAyB,mBAATC,MAAuBA,KAAyB,mBAAXF,QAAyBA,aACxHwE,EAAI,IAAIyb,IAAI,SAAS5e,EAAQzB,EAAOD,GAevC,QAASmX,GAAQmT,EAAUC,GACzB,IAAK,GAAIppB,GAAI,EAAGA,EAAImpB,EAAS9oB,SAAUL,EACrC,GAAImpB,EAASnpB,KAAOopB,EAAQ,MAAOppB,EAErC,UAGF,QAASmE,GAAUgL,EAAKka,EAAUC,EAAQC,GACxC,MAAOrlB,MAAKC,UAAUgL,EAAKqa,EAAWH,EAAUE,GAAgBD,GAIlE,QAASG,GAAezf,GACtB,GAAIgL,IAEFlH,MAAO9D,EAAM8D,MACbnL,QAASqH,EAAMrH,QACfC,KAAMoH,EAAMpH,KAGd,KAAK,GAAI5C,KAAKgK,GACRqE,OAAOxL,UAAU+R,eAAexU,KAAK4J,EAAOhK,KAC9CgV,EAAIhV,GAAKgK,EAAMhK,GAInB,OAAOgV,GAGT,QAASwU,GAAWH,EAAUE,GAC5B,GAAIzb,MACAQ,IAWJ,OATqB,OAAjBib,IACFA,EAAgB,SAASxf,EAAKC,GAC5B,MAAI8D,GAAM,KAAO9D,EACR,eAEF,eAAiBsE,EAAKlL,MAAM,EAAG4S,EAAQlI,EAAO9D,IAAQiX,KAAK,KAAO,MAItE,SAASlX,EAAKC,GACnB,GAAI8D,EAAMzN,OAAS,EAAG,CACpB,GAAIqpB,GAAU1T,EAAQlI,EAAOzO,OAC5BqqB,EAAU5b,EAAMkY,OAAO0D,EAAU,GAAK5b,EAAMjN,KAAKxB,OACjDqqB,EAAUpb,EAAK0X,OAAO0D,EAASC,EAAAA,EAAU5f,GAAOuE,EAAKzN,KAAKkJ,IAEtDiM,EAAQlI,EAAO9D,KAClBA,EAAQuf,EAAcnpB,KAAKf,KAAM0K,EAAKC,QAGxC8D,GAAMjN,KAAKmJ,EAGb,OAAmB,OAAZqf,EACHrf,YAAiB/J,OAAQwpB,EAAezf,GAASA,EACjDqf,EAASjpB,KAAKf,KAAM0K,EAAKC,IA5DjCnL,EAAUC,EAAOD,QAAUsF,EAC3BtF,EAAQ+qB,aAAeJ,OA+DjBpK,IAAI,SAAS7e,EAAQzB,EAAOD,GAwBlC,QAASgrB,GAAQC,EAAG5O,GAClB,GAAI6O,IAAW,MAAJD,IAAmB,MAAJ5O,GACtB8O,GAAOF,GAAK,KAAO5O,GAAK,KAAO6O,GAAO,GAC1C,OAAQC,IAAO,GAAa,MAAND,EAMxB,QAASE,GAAcrI,EAAKsI,GAC1B,MAAQtI,IAAOsI,EAAQtI,IAAS,GAAKsI,EAMvC,QAASC,GAAOC,EAAGtqB,EAAGijB,EAAG+G,EAAGnqB,EAAGH,GAC7B,MAAOqqB,GAAQI,EAAcJ,EAAQA,EAAQ/pB,EAAGsqB,GAAIP,EAAQC,EAAGtqB,IAAKG,GAAIojB,GAE1E,QAASsH,GAAMvqB,EAAGijB,EAAGjB,EAAGwI,EAAGR,EAAGnqB,EAAGH,GAC/B,MAAO2qB,GAAQpH,EAAIjB,GAAOiB,EAAIuH,EAAIxqB,EAAGijB,EAAG+G,EAAGnqB,EAAGH,GAEhD,QAAS+qB,GAAMzqB,EAAGijB,EAAGjB,EAAGwI,EAAGR,EAAGnqB,EAAGH,GAC/B,MAAO2qB,GAAQpH,EAAIuH,EAAMxI,GAAKwI,EAAIxqB,EAAGijB,EAAG+G,EAAGnqB,EAAGH,GAEhD,QAASgrB,GAAM1qB,EAAGijB,EAAGjB,EAAGwI,EAAGR,EAAGnqB,EAAGH,GAC/B,MAAO2qB,GAAOpH,EAAIjB,EAAIwI,EAAGxqB,EAAGijB,EAAG+G,EAAGnqB,EAAGH,GAEvC,QAASirB,GAAM3qB,EAAGijB,EAAGjB,EAAGwI,EAAGR,EAAGnqB,EAAGH,GAC/B,MAAO2qB,GAAOrI,GAAKiB,GAAKuH,GAAIxqB,EAAGijB,EAAG+G,EAAGnqB,EAAGH,GAM1C,QAASkrB,GAAQZ,EAAGhJ,GAElBgJ,EAAEhJ,GAAO,IAAM,KAASA,EAAM,GAC9BgJ,GAAKhJ,EAAM,KAAQ,GAAM,GAAK,IAAMA,CAEpC,IAAI9gB,GACA2qB,EACAC,EACAC,EACAC,EACAhrB,EAAI,WACJijB,aACAjB,cACAwI,EAAI,SAER,KAAKtqB,EAAI,EAAGA,EAAI8pB,EAAEzpB,OAAQL,GAAK,GAC7B2qB,EAAO7qB,EACP8qB,EAAO7H,EACP8H,EAAO/I,EACPgJ,EAAOR,EAEPxqB,EAAIuqB,EAAMvqB,EAAGijB,EAAGjB,EAAGwI,EAAGR,EAAE9pB,GAAI,cAC5BsqB,EAAID,EAAMC,EAAGxqB,EAAGijB,EAAGjB,EAAGgI,EAAE9pB,EAAI,GAAI,eAChC8hB,EAAIuI,EAAMvI,EAAGwI,EAAGxqB,EAAGijB,EAAG+G,EAAE9pB,EAAI,GAAI,GAAI,WACpC+iB,EAAIsH,EAAMtH,EAAGjB,EAAGwI,EAAGxqB,EAAGgqB,EAAE9pB,EAAI,GAAI,gBAChCF,EAAIuqB,EAAMvqB,EAAGijB,EAAGjB,EAAGwI,EAAGR,EAAE9pB,EAAI,GAAI,cAChCsqB,EAAID,EAAMC,EAAGxqB,EAAGijB,EAAGjB,EAAGgI,EAAE9pB,EAAI,GAAI,GAAI,YACpC8hB,EAAIuI,EAAMvI,EAAGwI,EAAGxqB,EAAGijB,EAAG+G,EAAE9pB,EAAI,GAAI,gBAChC+iB,EAAIsH,EAAMtH,EAAGjB,EAAGwI,EAAGxqB,EAAGgqB,EAAE9pB,EAAI,GAAI,cAChCF,EAAIuqB,EAAMvqB,EAAGijB,EAAGjB,EAAGwI,EAAGR,EAAE9pB,EAAI,GAAI,EAAG,YACnCsqB,EAAID,EAAMC,EAAGxqB,EAAGijB,EAAGjB,EAAGgI,EAAE9pB,EAAI,GAAI,gBAChC8hB,EAAIuI,EAAMvI,EAAGwI,EAAGxqB,EAAGijB,EAAG+G,EAAE9pB,EAAI,IAAK,WACjC+iB,EAAIsH,EAAMtH,EAAGjB,EAAGwI,EAAGxqB,EAAGgqB,EAAE9pB,EAAI,IAAK,gBACjCF,EAAIuqB,EAAMvqB,EAAGijB,EAAGjB,EAAGwI,EAAGR,EAAE9pB,EAAI,IAAK,EAAG,YACpCsqB,EAAID,EAAMC,EAAGxqB,EAAGijB,EAAGjB,EAAGgI,EAAE9pB,EAAI,IAAK,cACjC8hB,EAAIuI,EAAMvI,EAAGwI,EAAGxqB,EAAGijB,EAAG+G,EAAE9pB,EAAI,IAAK,gBACjC+iB,EAAIsH,EAAMtH,EAAGjB,EAAGwI,EAAGxqB,EAAGgqB,EAAE9pB,EAAI,IAAK,GAAI,YAErCF,EAAIyqB,EAAMzqB,EAAGijB,EAAGjB,EAAGwI,EAAGR,EAAE9pB,EAAI,GAAI,cAChCsqB,EAAIC,EAAMD,EAAGxqB,EAAGijB,EAAGjB,EAAGgI,EAAE9pB,EAAI,GAAI,eAChC8hB,EAAIyI,EAAMzI,EAAGwI,EAAGxqB,EAAGijB,EAAG+G,EAAE9pB,EAAI,IAAK,GAAI,WACrC+iB,EAAIwH,EAAMxH,EAAGjB,EAAGwI,EAAGxqB,EAAGgqB,EAAE9pB,GAAI,eAC5BF,EAAIyqB,EAAMzqB,EAAGijB,EAAGjB,EAAGwI,EAAGR,EAAE9pB,EAAI,GAAI,cAChCsqB,EAAIC,EAAMD,EAAGxqB,EAAGijB,EAAGjB,EAAGgI,EAAE9pB,EAAI,IAAK,EAAG,UACpC8hB,EAAIyI,EAAMzI,EAAGwI,EAAGxqB,EAAGijB,EAAG+G,EAAE9pB,EAAI,IAAK,eACjC+iB,EAAIwH,EAAMxH,EAAGjB,EAAGwI,EAAGxqB,EAAGgqB,EAAE9pB,EAAI,GAAI,eAChCF,EAAIyqB,EAAMzqB,EAAGijB,EAAGjB,EAAGwI,EAAGR,EAAE9pB,EAAI,GAAI,EAAG,WACnCsqB,EAAIC,EAAMD,EAAGxqB,EAAGijB,EAAGjB,EAAGgI,EAAE9pB,EAAI,IAAK,eACjC8hB,EAAIyI,EAAMzI,EAAGwI,EAAGxqB,EAAGijB,EAAG+G,EAAE9pB,EAAI,GAAI,eAChC+iB,EAAIwH,EAAMxH,EAAGjB,EAAGwI,EAAGxqB,EAAGgqB,EAAE9pB,EAAI,GAAI,GAAI,YACpCF,EAAIyqB,EAAMzqB,EAAGijB,EAAGjB,EAAGwI,EAAGR,EAAE9pB,EAAI,IAAK,eACjCsqB,EAAIC,EAAMD,EAAGxqB,EAAGijB,EAAGjB,EAAGgI,EAAE9pB,EAAI,GAAI,aAChC8hB,EAAIyI,EAAMzI,EAAGwI,EAAGxqB,EAAGijB,EAAG+G,EAAE9pB,EAAI,GAAI,GAAI,YACpC+iB,EAAIwH,EAAMxH,EAAGjB,EAAGwI,EAAGxqB,EAAGgqB,EAAE9pB,EAAI,IAAK,gBAEjCF,EAAI0qB,EAAM1qB,EAAGijB,EAAGjB,EAAGwI,EAAGR,EAAE9pB,EAAI,GAAI,WAChCsqB,EAAIE,EAAMF,EAAGxqB,EAAGijB,EAAGjB,EAAGgI,EAAE9pB,EAAI,GAAI,gBAChC8hB,EAAI0I,EAAM1I,EAAGwI,EAAGxqB,EAAGijB,EAAG+G,EAAE9pB,EAAI,IAAK,GAAI,YACrC+iB,EAAIyH,EAAMzH,EAAGjB,EAAGwI,EAAGxqB,EAAGgqB,EAAE9pB,EAAI,IAAK,cACjCF,EAAI0qB,EAAM1qB,EAAGijB,EAAGjB,EAAGwI,EAAGR,EAAE9pB,EAAI,GAAI,eAChCsqB,EAAIE,EAAMF,EAAGxqB,EAAGijB,EAAGjB,EAAGgI,EAAE9pB,EAAI,GAAI,GAAI,YACpC8hB,EAAI0I,EAAM1I,EAAGwI,EAAGxqB,EAAGijB,EAAG+G,EAAE9pB,EAAI,GAAI,eAChC+iB,EAAIyH,EAAMzH,EAAGjB,EAAGwI,EAAGxqB,EAAGgqB,EAAE9pB,EAAI,IAAK,gBACjCF,EAAI0qB,EAAM1qB,EAAGijB,EAAGjB,EAAGwI,EAAGR,EAAE9pB,EAAI,IAAK,EAAG,WACpCsqB,EAAIE,EAAMF,EAAGxqB,EAAGijB,EAAGjB,EAAGgI,EAAE9pB,GAAI,eAC5B8hB,EAAI0I,EAAM1I,EAAGwI,EAAGxqB,EAAGijB,EAAG+G,EAAE9pB,EAAI,GAAI,eAChC+iB,EAAIyH,EAAMzH,EAAGjB,EAAGwI,EAAGxqB,EAAGgqB,EAAE9pB,EAAI,GAAI,GAAI,UACpCF,EAAI0qB,EAAM1qB,EAAGijB,EAAGjB,EAAGwI,EAAGR,EAAE9pB,EAAI,GAAI,cAChCsqB,EAAIE,EAAMF,EAAGxqB,EAAGijB,EAAGjB,EAAGgI,EAAE9pB,EAAI,IAAK,eACjC8hB,EAAI0I,EAAM1I,EAAGwI,EAAGxqB,EAAGijB,EAAG+G,EAAE9pB,EAAI,IAAK,GAAI,WACrC+iB,EAAIyH,EAAMzH,EAAGjB,EAAGwI,EAAGxqB,EAAGgqB,EAAE9pB,EAAI,GAAI,eAEhCF,EAAI2qB,EAAM3qB,EAAGijB,EAAGjB,EAAGwI,EAAGR,EAAE9pB,GAAI,cAC5BsqB,EAAIG,EAAMH,EAAGxqB,EAAGijB,EAAGjB,EAAGgI,EAAE9pB,EAAI,GAAI,GAAI,YACpC8hB,EAAI2I,EAAM3I,EAAGwI,EAAGxqB,EAAGijB,EAAG+G,EAAE9pB,EAAI,IAAK,gBACjC+iB,EAAI0H,EAAM1H,EAAGjB,EAAGwI,EAAGxqB,EAAGgqB,EAAE9pB,EAAI,GAAI,cAChCF,EAAI2qB,EAAM3qB,EAAGijB,EAAGjB,EAAGwI,EAAGR,EAAE9pB,EAAI,IAAK,EAAG,YACpCsqB,EAAIG,EAAMH,EAAGxqB,EAAGijB,EAAGjB,EAAGgI,EAAE9pB,EAAI,GAAI,gBAChC8hB,EAAI2I,EAAM3I,EAAGwI,EAAGxqB,EAAGijB,EAAG+G,EAAE9pB,EAAI,IAAK,aACjC+iB,EAAI0H,EAAM1H,EAAGjB,EAAGwI,EAAGxqB,EAAGgqB,EAAE9pB,EAAI,GAAI,gBAChCF,EAAI2qB,EAAM3qB,EAAGijB,EAAGjB,EAAGwI,EAAGR,EAAE9pB,EAAI,GAAI,EAAG,YACnCsqB,EAAIG,EAAMH,EAAGxqB,EAAGijB,EAAGjB,EAAGgI,EAAE9pB,EAAI,IAAK,cACjC8hB,EAAI2I,EAAM3I,EAAGwI,EAAGxqB,EAAGijB,EAAG+G,EAAE9pB,EAAI,GAAI,gBAChC+iB,EAAI0H,EAAM1H,EAAGjB,EAAGwI,EAAGxqB,EAAGgqB,EAAE9pB,EAAI,IAAK,GAAI,YACrCF,EAAI2qB,EAAM3qB,EAAGijB,EAAGjB,EAAGwI,EAAGR,EAAE9pB,EAAI,GAAI,cAChCsqB,EAAIG,EAAMH,EAAGxqB,EAAGijB,EAAGjB,EAAGgI,EAAE9pB,EAAI,IAAK,gBACjC8hB,EAAI2I,EAAM3I,EAAGwI,EAAGxqB,EAAGijB,EAAG+G,EAAE9pB,EAAI,GAAI,GAAI,WACpC+iB,EAAI0H,EAAM1H,EAAGjB,EAAGwI,EAAGxqB,EAAGgqB,EAAE9pB,EAAI,GAAI,eAEhCF,EAAI+pB,EAAQ/pB,EAAG6qB,GACf5H,EAAI8G,EAAQ9G,EAAG6H,GACf9I,EAAI+H,EAAQ/H,EAAG+I,GACfP,EAAIT,EAAQS,EAAGQ,EAEjB,QAAQhrB,EAAGijB,EAAGjB,EAAGwI,GAMnB,QAASS,GAAUvH,GACjB,GAAIxjB,GACA0jB,EAAS,GACTsH,EAA0B,GAAfxH,EAAMnjB,MACrB,KAAKL,EAAI,EAAGA,EAAIgrB,EAAUhrB,GAAK,EAC7B0jB,GAAUC,OAAOsH,aAAczH,EAAMxjB,GAAK,KAAQA,EAAI,GAAO,IAE/D,OAAO0jB,GAOT,QAASwH,GAAU1H,GACjB,GAAIxjB,GACA0jB,IAEJ,KADAA,GAAQF,EAAMnjB,QAAU,GAAK,GAAK+L,OAC7BpM,EAAI,EAAGA,EAAI0jB,EAAOrjB,OAAQL,GAAK,EAClC0jB,EAAO1jB,GAAK,CAEd,IAAImrB,GAAyB,EAAf3H,EAAMnjB,MACpB,KAAKL,EAAI,EAAGA,EAAImrB,EAASnrB,GAAK,EAC5B0jB,EAAO1jB,GAAK,KAAiC,IAA1BwjB,EAAM4H,WAAWprB,EAAI,KAAeA,EAAI,EAE7D,OAAO0jB,GAMT,QAAS2H,GAAQ1rB,GACf,MAAOorB,GAAUL,EAAQQ,EAAUvrB,GAAe,EAAXA,EAAEU,SAM3C,QAASirB,GAAYvhB,EAAK/I,GACxB,GAAIhB,GAIA6e,EAHA0M,EAAOL,EAAUnhB,GACjByhB,KACAC,IAMJ,KAJAD,EAAK,IAAMC,EAAK,IAAMrf,OAClBmf,EAAKlrB,OAAS,KAChBkrB,EAAOb,EAAQa,EAAmB,EAAbxhB,EAAI1J,SAEtBL,EAAI,EAAGA,EAAI,GAAIA,GAAK,EACvBwrB,EAAKxrB,GAAe,UAAVurB,EAAKvrB,GACfyrB,EAAKzrB,GAAe,WAAVurB,EAAKvrB,EAGjB,OADA6e,GAAO6L,EAAQc,EAAKlT,OAAO4S,EAAUlqB,IAAQ,IAAoB,EAAdA,EAAKX,QACjD0qB,EAAUL,EAAQe,EAAKnT,OAAOuG,GAAO,MAM9C,QAAS6M,GAASlI,GAChB,GAEIsG,GACA9pB,EAHA2rB,EAAS,mBACTjI,EAAS,EAGb,KAAK1jB,EAAI,EAAGA,EAAIwjB,EAAMnjB,OAAQL,GAAK,EACjC8pB,EAAItG,EAAM4H,WAAWprB,GACrB0jB,GAAUiI,EAAOxD,OAAQ2B,IAAM,EAAK,IAAQ6B,EAAOxD,OAAW,GAAJ2B,EAE5D,OAAOpG,GAMT,QAASkI,GAAapI,GACpB,MAAOqI,UAASxa,mBAAmBmS,IAMrC,QAASsI,GAAOnsB,GACd,MAAO0rB,GAAQO,EAAajsB,IAE9B,QAASosB,GAAOpsB,GACd,MAAO+rB,GAASI,EAAOnsB,IAEzB,QAASqsB,GAAWhH,EAAGsF,GACrB,MAAOgB,GAAYM,EAAa5G,GAAI4G,EAAatB,IAEnD,QAAS2B,GAAWjH,EAAGsF,GACrB,MAAOoB,GAASM,EAAWhH,EAAGsF,IAGhC,QAAS9iB,GAAI0kB,EAAQniB,EAAKoiB,GACxB,MAAKpiB,GAMAoiB,EAGEH,EAAWjiB,EAAKmiB,GAFdD,EAAWliB,EAAKmiB,GANlBC,EAGEL,EAAOI,GAFLH,EAAOG,GAUpBptB,EAAOD,QAAU2I,YAEN,EAAE,EAAE,EAAE,IAAI","file":"raven.min.js"} \ No newline at end of file diff --git a/packages/raven-js/dist/console,ember,vue/raven.js b/packages/raven-js/dist/console,ember,vue/raven.js new file mode 100644 index 000000000000..ef25f358af79 --- /dev/null +++ b/packages/raven-js/dist/console,ember,vue/raven.js @@ -0,0 +1,4128 @@ +/*! Raven.js 3.25.2 (30b6d4e) | github.com/getsentry/raven-js */ + +/* + * Includes TraceKit + * https://github.com/getsentry/TraceKit + * + * Copyright 2018 Matt Robenolt and other contributors + * Released under the BSD license + * https://github.com/getsentry/raven-js/blob/master/LICENSE + * + */ + +(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.Raven = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o' : 'anonymous component') + + (vm._isVue && vm.$options.__file ? ' at ' + vm.$options.__file : '') + ); +} + +function vuePlugin(Raven, Vue) { + Vue = Vue || window.Vue; + + // quit if Vue isn't on the page + if (!Vue || !Vue.config) return; + + var _oldOnError = Vue.config.errorHandler; + Vue.config.errorHandler = function VueErrorHandler(error, vm, info) { + var metaData = {}; + + // vm and lifecycleHook are not always available + if (Object.prototype.toString.call(vm) === '[object Object]') { + metaData.componentName = formatComponentName(vm); + metaData.propsData = vm.$options.propsData; + } + + if (typeof info !== 'undefined') { + metaData.lifecycleHook = info; + } + + Raven.captureException(error, { + extra: metaData + }); + + if (typeof _oldOnError === 'function') { + _oldOnError.call(this, error, vm, info); + } + }; +} + +module.exports = vuePlugin; + +_dereq_(7).addPlugin(module.exports); +},{"7":7}],4:[function(_dereq_,module,exports){ +function RavenConfigError(message) { + this.name = 'RavenConfigError'; + this.message = message; +} +RavenConfigError.prototype = new Error(); +RavenConfigError.prototype.constructor = RavenConfigError; + +module.exports = RavenConfigError; + +},{}],5:[function(_dereq_,module,exports){ +var utils = _dereq_(8); + +var wrapMethod = function(console, level, callback) { + var originalConsoleLevel = console[level]; + var originalConsole = console; + + if (!(level in console)) { + return; + } + + var sentryLevel = level === 'warn' ? 'warning' : level; + + console[level] = function() { + var args = [].slice.call(arguments); + + var msg = utils.safeJoin(args, ' '); + var data = {level: sentryLevel, logger: 'console', extra: {arguments: args}}; + + if (level === 'assert') { + if (args[0] === false) { + // Default browsers message + msg = + 'Assertion failed: ' + (utils.safeJoin(args.slice(1), ' ') || 'console.assert'); + data.extra.arguments = args.slice(1); + callback && callback(msg, data); + } + } else { + callback && callback(msg, data); + } + + // this fails for some browsers. :( + if (originalConsoleLevel) { + // IE9 doesn't allow calling apply on console functions directly + // See: https://stackoverflow.com/questions/5472938/does-ie9-support-console-log-and-is-it-a-real-function#answer-5473193 + Function.prototype.apply.call(originalConsoleLevel, originalConsole, args); + } + }; +}; + +module.exports = { + wrapMethod: wrapMethod +}; + +},{"8":8}],6:[function(_dereq_,module,exports){ +(function (global){ +/*global XDomainRequest:false */ + +var TraceKit = _dereq_(9); +var stringify = _dereq_(10); +var md5 = _dereq_(11); +var RavenConfigError = _dereq_(4); + +var utils = _dereq_(8); +var isErrorEvent = utils.isErrorEvent; +var isDOMError = utils.isDOMError; +var isDOMException = utils.isDOMException; +var isError = utils.isError; +var isObject = utils.isObject; +var isPlainObject = utils.isPlainObject; +var isUndefined = utils.isUndefined; +var isFunction = utils.isFunction; +var isString = utils.isString; +var isArray = utils.isArray; +var isEmptyObject = utils.isEmptyObject; +var each = utils.each; +var objectMerge = utils.objectMerge; +var truncate = utils.truncate; +var objectFrozen = utils.objectFrozen; +var hasKey = utils.hasKey; +var joinRegExp = utils.joinRegExp; +var urlencode = utils.urlencode; +var uuid4 = utils.uuid4; +var htmlTreeAsString = utils.htmlTreeAsString; +var isSameException = utils.isSameException; +var isSameStacktrace = utils.isSameStacktrace; +var parseUrl = utils.parseUrl; +var fill = utils.fill; +var supportsFetch = utils.supportsFetch; +var supportsReferrerPolicy = utils.supportsReferrerPolicy; +var serializeKeysForMessage = utils.serializeKeysForMessage; +var serializeException = utils.serializeException; +var sanitize = utils.sanitize; + +var wrapConsoleMethod = _dereq_(5).wrapMethod; + +var dsnKeys = 'source protocol user pass host port path'.split(' '), + dsnPattern = /^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/; + +function now() { + return +new Date(); +} + +// This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) +var _window = + typeof window !== 'undefined' + ? window + : typeof global !== 'undefined' + ? global + : typeof self !== 'undefined' + ? self + : {}; +var _document = _window.document; +var _navigator = _window.navigator; + +function keepOriginalCallback(original, callback) { + return isFunction(callback) + ? function(data) { + return callback(data, original); + } + : callback; +} + +// First, check for JSON support +// If there is no JSON, we no-op the core features of Raven +// since JSON is required to encode the payload +function Raven() { + this._hasJSON = !!(typeof JSON === 'object' && JSON.stringify); + // Raven can run in contexts where there's no document (react-native) + this._hasDocument = !isUndefined(_document); + this._hasNavigator = !isUndefined(_navigator); + this._lastCapturedException = null; + this._lastData = null; + this._lastEventId = null; + this._globalServer = null; + this._globalKey = null; + this._globalProject = null; + this._globalContext = {}; + this._globalOptions = { + // SENTRY_RELEASE can be injected by https://github.com/getsentry/sentry-webpack-plugin + release: _window.SENTRY_RELEASE && _window.SENTRY_RELEASE.id, + logger: 'javascript', + ignoreErrors: [], + ignoreUrls: [], + whitelistUrls: [], + includePaths: [], + headers: null, + collectWindowErrors: true, + captureUnhandledRejections: true, + maxMessageLength: 0, + // By default, truncates URL values to 250 chars + maxUrlLength: 250, + stackTraceLimit: 50, + autoBreadcrumbs: true, + instrument: true, + sampleRate: 1, + sanitizeKeys: [] + }; + this._fetchDefaults = { + method: 'POST', + keepalive: true, + // Despite all stars in the sky saying that Edge supports old draft syntax, aka 'never', 'always', 'origin' and 'default + // https://caniuse.com/#feat=referrer-policy + // It doesn't. And it throw exception instead of ignoring this parameter... + // REF: https://github.com/getsentry/raven-js/issues/1233 + referrerPolicy: supportsReferrerPolicy() ? 'origin' : '' + }; + this._ignoreOnError = 0; + this._isRavenInstalled = false; + this._originalErrorStackTraceLimit = Error.stackTraceLimit; + // capture references to window.console *and* all its methods first + // before the console plugin has a chance to monkey patch + this._originalConsole = _window.console || {}; + this._originalConsoleMethods = {}; + this._plugins = []; + this._startTime = now(); + this._wrappedBuiltIns = []; + this._breadcrumbs = []; + this._lastCapturedEvent = null; + this._keypressTimeout; + this._location = _window.location; + this._lastHref = this._location && this._location.href; + this._resetBackoff(); + + // eslint-disable-next-line guard-for-in + for (var method in this._originalConsole) { + this._originalConsoleMethods[method] = this._originalConsole[method]; + } +} + +/* + * The core Raven singleton + * + * @this {Raven} + */ + +Raven.prototype = { + // Hardcode version string so that raven source can be loaded directly via + // webpack (using a build step causes webpack #1617). Grunt verifies that + // this value matches package.json during build. + // See: https://github.com/getsentry/raven-js/issues/465 + VERSION: '3.25.2', + + debug: false, + + TraceKit: TraceKit, // alias to TraceKit + + /* + * Configure Raven with a DSN and extra options + * + * @param {string} dsn The public Sentry DSN + * @param {object} options Set of global options [optional] + * @return {Raven} + */ + config: function(dsn, options) { + var self = this; + + if (self._globalServer) { + this._logDebug('error', 'Error: Raven has already been configured'); + return self; + } + if (!dsn) return self; + + var globalOptions = self._globalOptions; + + // merge in options + if (options) { + each(options, function(key, value) { + // tags and extra are special and need to be put into context + if (key === 'tags' || key === 'extra' || key === 'user') { + self._globalContext[key] = value; + } else { + globalOptions[key] = value; + } + }); + } + + self.setDSN(dsn); + + // "Script error." is hard coded into browsers for errors that it can't read. + // this is the result of a script being pulled in from an external domain and CORS. + globalOptions.ignoreErrors.push(/^Script error\.?$/); + globalOptions.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/); + + // join regexp rules into one big rule + globalOptions.ignoreErrors = joinRegExp(globalOptions.ignoreErrors); + globalOptions.ignoreUrls = globalOptions.ignoreUrls.length + ? joinRegExp(globalOptions.ignoreUrls) + : false; + globalOptions.whitelistUrls = globalOptions.whitelistUrls.length + ? joinRegExp(globalOptions.whitelistUrls) + : false; + globalOptions.includePaths = joinRegExp(globalOptions.includePaths); + globalOptions.maxBreadcrumbs = Math.max( + 0, + Math.min(globalOptions.maxBreadcrumbs || 100, 100) + ); // default and hard limit is 100 + + var autoBreadcrumbDefaults = { + xhr: true, + console: true, + dom: true, + location: true, + sentry: true + }; + + var autoBreadcrumbs = globalOptions.autoBreadcrumbs; + if ({}.toString.call(autoBreadcrumbs) === '[object Object]') { + autoBreadcrumbs = objectMerge(autoBreadcrumbDefaults, autoBreadcrumbs); + } else if (autoBreadcrumbs !== false) { + autoBreadcrumbs = autoBreadcrumbDefaults; + } + globalOptions.autoBreadcrumbs = autoBreadcrumbs; + + var instrumentDefaults = { + tryCatch: true + }; + + var instrument = globalOptions.instrument; + if ({}.toString.call(instrument) === '[object Object]') { + instrument = objectMerge(instrumentDefaults, instrument); + } else if (instrument !== false) { + instrument = instrumentDefaults; + } + globalOptions.instrument = instrument; + + TraceKit.collectWindowErrors = !!globalOptions.collectWindowErrors; + + // return for chaining + return self; + }, + + /* + * Installs a global window.onerror error handler + * to capture and report uncaught exceptions. + * At this point, install() is required to be called due + * to the way TraceKit is set up. + * + * @return {Raven} + */ + install: function() { + var self = this; + if (self.isSetup() && !self._isRavenInstalled) { + TraceKit.report.subscribe(function() { + self._handleOnErrorStackInfo.apply(self, arguments); + }); + + if (self._globalOptions.captureUnhandledRejections) { + self._attachPromiseRejectionHandler(); + } + + self._patchFunctionToString(); + + if (self._globalOptions.instrument && self._globalOptions.instrument.tryCatch) { + self._instrumentTryCatch(); + } + + if (self._globalOptions.autoBreadcrumbs) self._instrumentBreadcrumbs(); + + // Install all of the plugins + self._drainPlugins(); + + self._isRavenInstalled = true; + } + + Error.stackTraceLimit = self._globalOptions.stackTraceLimit; + return this; + }, + + /* + * Set the DSN (can be called multiple time unlike config) + * + * @param {string} dsn The public Sentry DSN + */ + setDSN: function(dsn) { + var self = this, + uri = self._parseDSN(dsn), + lastSlash = uri.path.lastIndexOf('/'), + path = uri.path.substr(1, lastSlash); + + self._dsn = dsn; + self._globalKey = uri.user; + self._globalSecret = uri.pass && uri.pass.substr(1); + self._globalProject = uri.path.substr(lastSlash + 1); + + self._globalServer = self._getGlobalServer(uri); + + self._globalEndpoint = + self._globalServer + '/' + path + 'api/' + self._globalProject + '/store/'; + + // Reset backoff state since we may be pointing at a + // new project/server + this._resetBackoff(); + }, + + /* + * Wrap code within a context so Raven can capture errors + * reliably across domains that is executed immediately. + * + * @param {object} options A specific set of options for this context [optional] + * @param {function} func The callback to be immediately executed within the context + * @param {array} args An array of arguments to be called with the callback [optional] + */ + context: function(options, func, args) { + if (isFunction(options)) { + args = func || []; + func = options; + options = undefined; + } + + return this.wrap(options, func).apply(this, args); + }, + + /* + * Wrap code within a context and returns back a new function to be executed + * + * @param {object} options A specific set of options for this context [optional] + * @param {function} func The function to be wrapped in a new context + * @param {function} func A function to call before the try/catch wrapper [optional, private] + * @return {function} The newly wrapped functions with a context + */ + wrap: function(options, func, _before) { + var self = this; + // 1 argument has been passed, and it's not a function + // so just return it + if (isUndefined(func) && !isFunction(options)) { + return options; + } + + // options is optional + if (isFunction(options)) { + func = options; + options = undefined; + } + + // At this point, we've passed along 2 arguments, and the second one + // is not a function either, so we'll just return the second argument. + if (!isFunction(func)) { + return func; + } + + // We don't wanna wrap it twice! + try { + if (func.__raven__) { + return func; + } + + // If this has already been wrapped in the past, return that + if (func.__raven_wrapper__) { + return func.__raven_wrapper__; + } + } catch (e) { + // Just accessing custom props in some Selenium environments + // can cause a "Permission denied" exception (see raven-js#495). + // Bail on wrapping and return the function as-is (defers to window.onerror). + return func; + } + + function wrapped() { + var args = [], + i = arguments.length, + deep = !options || (options && options.deep !== false); + + if (_before && isFunction(_before)) { + _before.apply(this, arguments); + } + + // Recursively wrap all of a function's arguments that are + // functions themselves. + while (i--) args[i] = deep ? self.wrap(options, arguments[i]) : arguments[i]; + + try { + // Attempt to invoke user-land function + // NOTE: If you are a Sentry user, and you are seeing this stack frame, it + // means Raven caught an error invoking your application code. This is + // expected behavior and NOT indicative of a bug with Raven.js. + return func.apply(this, args); + } catch (e) { + self._ignoreNextOnError(); + self.captureException(e, options); + throw e; + } + } + + // copy over properties of the old function + for (var property in func) { + if (hasKey(func, property)) { + wrapped[property] = func[property]; + } + } + wrapped.prototype = func.prototype; + + func.__raven_wrapper__ = wrapped; + // Signal that this function has been wrapped/filled already + // for both debugging and to prevent it to being wrapped/filled twice + wrapped.__raven__ = true; + wrapped.__orig__ = func; + + return wrapped; + }, + + /** + * Uninstalls the global error handler. + * + * @return {Raven} + */ + uninstall: function() { + TraceKit.report.uninstall(); + + this._detachPromiseRejectionHandler(); + this._unpatchFunctionToString(); + this._restoreBuiltIns(); + this._restoreConsole(); + + Error.stackTraceLimit = this._originalErrorStackTraceLimit; + this._isRavenInstalled = false; + + return this; + }, + + /** + * Callback used for `unhandledrejection` event + * + * @param {PromiseRejectionEvent} event An object containing + * promise: the Promise that was rejected + * reason: the value with which the Promise was rejected + * @return void + */ + _promiseRejectionHandler: function(event) { + this._logDebug('debug', 'Raven caught unhandled promise rejection:', event); + this.captureException(event.reason, { + extra: { + unhandledPromiseRejection: true + } + }); + }, + + /** + * Installs the global promise rejection handler. + * + * @return {raven} + */ + _attachPromiseRejectionHandler: function() { + this._promiseRejectionHandler = this._promiseRejectionHandler.bind(this); + _window.addEventListener && + _window.addEventListener('unhandledrejection', this._promiseRejectionHandler); + return this; + }, + + /** + * Uninstalls the global promise rejection handler. + * + * @return {raven} + */ + _detachPromiseRejectionHandler: function() { + _window.removeEventListener && + _window.removeEventListener('unhandledrejection', this._promiseRejectionHandler); + return this; + }, + + /** + * Manually capture an exception and send it over to Sentry + * + * @param {error} ex An exception to be logged + * @param {object} options A specific set of options for this error [optional] + * @return {Raven} + */ + captureException: function(ex, options) { + options = objectMerge({trimHeadFrames: 0}, options ? options : {}); + + if (isErrorEvent(ex) && ex.error) { + // If it is an ErrorEvent with `error` property, extract it to get actual Error + ex = ex.error; + } else if (isDOMError(ex) || isDOMException(ex)) { + // If it is a DOMError or DOMException (which are legacy APIs, but still supported in some browsers) + // then we just extract the name and message, as they don't provide anything else + // https://developer.mozilla.org/en-US/docs/Web/API/DOMError + // https://developer.mozilla.org/en-US/docs/Web/API/DOMException + var name = ex.name || (isDOMError(ex) ? 'DOMError' : 'DOMException'); + var message = ex.message ? name + ': ' + ex.message : name; + + return this.captureMessage( + message, + objectMerge(options, { + // neither DOMError or DOMException provide stack trace and we most likely wont get it this way as well + // but it's barely any overhead so we may at least try + stacktrace: true, + trimHeadFrames: options.trimHeadFrames + 1 + }) + ); + } else if (isError(ex)) { + // we have a real Error object + ex = ex; + } else if (isPlainObject(ex)) { + // If it is plain Object, serialize it manually and extract options + // This will allow us to group events based on top-level keys + // which is much better than creating new group when any key/value change + options = this._getCaptureExceptionOptionsFromPlainObject(options, ex); + ex = new Error(options.message); + } else { + // If none of previous checks were valid, then it means that + // it's not a DOMError/DOMException + // it's not a plain Object + // it's not a valid ErrorEvent (one with an error property) + // it's not an Error + // So bail out and capture it as a simple message: + return this.captureMessage( + ex, + objectMerge(options, { + stacktrace: true, // if we fall back to captureMessage, default to attempting a new trace + trimHeadFrames: options.trimHeadFrames + 1 + }) + ); + } + + // Store the raw exception object for potential debugging and introspection + this._lastCapturedException = ex; + + // TraceKit.report will re-raise any exception passed to it, + // which means you have to wrap it in try/catch. Instead, we + // can wrap it here and only re-raise if TraceKit.report + // raises an exception different from the one we asked to + // report on. + try { + var stack = TraceKit.computeStackTrace(ex); + this._handleStackInfo(stack, options); + } catch (ex1) { + if (ex !== ex1) { + throw ex1; + } + } + + return this; + }, + + _getCaptureExceptionOptionsFromPlainObject: function(currentOptions, ex) { + var exKeys = Object.keys(ex).sort(); + var options = objectMerge(currentOptions, { + message: + 'Non-Error exception captured with keys: ' + serializeKeysForMessage(exKeys), + fingerprint: [md5(exKeys)], + extra: currentOptions.extra || {} + }); + options.extra.__serialized__ = serializeException(ex); + + return options; + }, + + /* + * Manually send a message to Sentry + * + * @param {string} msg A plain message to be captured in Sentry + * @param {object} options A specific set of options for this message [optional] + * @return {Raven} + */ + captureMessage: function(msg, options) { + // config() automagically converts ignoreErrors from a list to a RegExp so we need to test for an + // early call; we'll error on the side of logging anything called before configuration since it's + // probably something you should see: + if ( + !!this._globalOptions.ignoreErrors.test && + this._globalOptions.ignoreErrors.test(msg) + ) { + return; + } + + options = options || {}; + msg = msg + ''; // Make sure it's actually a string + + var data = objectMerge( + { + message: msg + }, + options + ); + + var ex; + // Generate a "synthetic" stack trace from this point. + // NOTE: If you are a Sentry user, and you are seeing this stack frame, it is NOT indicative + // of a bug with Raven.js. Sentry generates synthetic traces either by configuration, + // or if it catches a thrown object without a "stack" property. + try { + throw new Error(msg); + } catch (ex1) { + ex = ex1; + } + + // null exception name so `Error` isn't prefixed to msg + ex.name = null; + var stack = TraceKit.computeStackTrace(ex); + + // stack[0] is `throw new Error(msg)` call itself, we are interested in the frame that was just before that, stack[1] + var initialCall = isArray(stack.stack) && stack.stack[1]; + + // if stack[1] is `Raven.captureException`, it means that someone passed a string to it and we redirected that call + // to be handled by `captureMessage`, thus `initialCall` is the 3rd one, not 2nd + // initialCall => captureException(string) => captureMessage(string) + if (initialCall && initialCall.func === 'Raven.captureException') { + initialCall = stack.stack[2]; + } + + var fileurl = (initialCall && initialCall.url) || ''; + + if ( + !!this._globalOptions.ignoreUrls.test && + this._globalOptions.ignoreUrls.test(fileurl) + ) { + return; + } + + if ( + !!this._globalOptions.whitelistUrls.test && + !this._globalOptions.whitelistUrls.test(fileurl) + ) { + return; + } + + if (this._globalOptions.stacktrace || (options && options.stacktrace)) { + // fingerprint on msg, not stack trace (legacy behavior, could be revisited) + data.fingerprint = data.fingerprint == null ? msg : data.fingerprint; + + options = objectMerge( + { + trimHeadFrames: 0 + }, + options + ); + // Since we know this is a synthetic trace, the top frame (this function call) + // MUST be from Raven.js, so mark it for trimming + // We add to the trim counter so that callers can choose to trim extra frames, such + // as utility functions. + options.trimHeadFrames += 1; + + var frames = this._prepareFrames(stack, options); + data.stacktrace = { + // Sentry expects frames oldest to newest + frames: frames.reverse() + }; + } + + // Make sure that fingerprint is always wrapped in an array + if (data.fingerprint) { + data.fingerprint = isArray(data.fingerprint) + ? data.fingerprint + : [data.fingerprint]; + } + + // Fire away! + this._send(data); + + return this; + }, + + captureBreadcrumb: function(obj) { + var crumb = objectMerge( + { + timestamp: now() / 1000 + }, + obj + ); + + if (isFunction(this._globalOptions.breadcrumbCallback)) { + var result = this._globalOptions.breadcrumbCallback(crumb); + + if (isObject(result) && !isEmptyObject(result)) { + crumb = result; + } else if (result === false) { + return this; + } + } + + this._breadcrumbs.push(crumb); + if (this._breadcrumbs.length > this._globalOptions.maxBreadcrumbs) { + this._breadcrumbs.shift(); + } + return this; + }, + + addPlugin: function(plugin /*arg1, arg2, ... argN*/) { + var pluginArgs = [].slice.call(arguments, 1); + + this._plugins.push([plugin, pluginArgs]); + if (this._isRavenInstalled) { + this._drainPlugins(); + } + + return this; + }, + + /* + * Set/clear a user to be sent along with the payload. + * + * @param {object} user An object representing user data [optional] + * @return {Raven} + */ + setUserContext: function(user) { + // Intentionally do not merge here since that's an unexpected behavior. + this._globalContext.user = user; + + return this; + }, + + /* + * Merge extra attributes to be sent along with the payload. + * + * @param {object} extra An object representing extra data [optional] + * @return {Raven} + */ + setExtraContext: function(extra) { + this._mergeContext('extra', extra); + + return this; + }, + + /* + * Merge tags to be sent along with the payload. + * + * @param {object} tags An object representing tags [optional] + * @return {Raven} + */ + setTagsContext: function(tags) { + this._mergeContext('tags', tags); + + return this; + }, + + /* + * Clear all of the context. + * + * @return {Raven} + */ + clearContext: function() { + this._globalContext = {}; + + return this; + }, + + /* + * Get a copy of the current context. This cannot be mutated. + * + * @return {object} copy of context + */ + getContext: function() { + // lol javascript + return JSON.parse(stringify(this._globalContext)); + }, + + /* + * Set environment of application + * + * @param {string} environment Typically something like 'production'. + * @return {Raven} + */ + setEnvironment: function(environment) { + this._globalOptions.environment = environment; + + return this; + }, + + /* + * Set release version of application + * + * @param {string} release Typically something like a git SHA to identify version + * @return {Raven} + */ + setRelease: function(release) { + this._globalOptions.release = release; + + return this; + }, + + /* + * Set the dataCallback option + * + * @param {function} callback The callback to run which allows the + * data blob to be mutated before sending + * @return {Raven} + */ + setDataCallback: function(callback) { + var original = this._globalOptions.dataCallback; + this._globalOptions.dataCallback = keepOriginalCallback(original, callback); + return this; + }, + + /* + * Set the breadcrumbCallback option + * + * @param {function} callback The callback to run which allows filtering + * or mutating breadcrumbs + * @return {Raven} + */ + setBreadcrumbCallback: function(callback) { + var original = this._globalOptions.breadcrumbCallback; + this._globalOptions.breadcrumbCallback = keepOriginalCallback(original, callback); + return this; + }, + + /* + * Set the shouldSendCallback option + * + * @param {function} callback The callback to run which allows + * introspecting the blob before sending + * @return {Raven} + */ + setShouldSendCallback: function(callback) { + var original = this._globalOptions.shouldSendCallback; + this._globalOptions.shouldSendCallback = keepOriginalCallback(original, callback); + return this; + }, + + /** + * Override the default HTTP transport mechanism that transmits data + * to the Sentry server. + * + * @param {function} transport Function invoked instead of the default + * `makeRequest` handler. + * + * @return {Raven} + */ + setTransport: function(transport) { + this._globalOptions.transport = transport; + + return this; + }, + + /* + * Get the latest raw exception that was captured by Raven. + * + * @return {error} + */ + lastException: function() { + return this._lastCapturedException; + }, + + /* + * Get the last event id + * + * @return {string} + */ + lastEventId: function() { + return this._lastEventId; + }, + + /* + * Determine if Raven is setup and ready to go. + * + * @return {boolean} + */ + isSetup: function() { + if (!this._hasJSON) return false; // needs JSON support + if (!this._globalServer) { + if (!this.ravenNotConfiguredError) { + this.ravenNotConfiguredError = true; + this._logDebug('error', 'Error: Raven has not been configured.'); + } + return false; + } + return true; + }, + + afterLoad: function() { + // TODO: remove window dependence? + + // Attempt to initialize Raven on load + var RavenConfig = _window.RavenConfig; + if (RavenConfig) { + this.config(RavenConfig.dsn, RavenConfig.config).install(); + } + }, + + showReportDialog: function(options) { + if ( + !_document // doesn't work without a document (React native) + ) + return; + + options = options || {}; + + var lastEventId = options.eventId || this.lastEventId(); + if (!lastEventId) { + throw new RavenConfigError('Missing eventId'); + } + + var dsn = options.dsn || this._dsn; + if (!dsn) { + throw new RavenConfigError('Missing DSN'); + } + + var encode = encodeURIComponent; + var qs = ''; + qs += '?eventId=' + encode(lastEventId); + qs += '&dsn=' + encode(dsn); + + var user = options.user || this._globalContext.user; + if (user) { + if (user.name) qs += '&name=' + encode(user.name); + if (user.email) qs += '&email=' + encode(user.email); + } + + var globalServer = this._getGlobalServer(this._parseDSN(dsn)); + + var script = _document.createElement('script'); + script.async = true; + script.src = globalServer + '/api/embed/error-page/' + qs; + (_document.head || _document.body).appendChild(script); + }, + + /**** Private functions ****/ + _ignoreNextOnError: function() { + var self = this; + this._ignoreOnError += 1; + setTimeout(function() { + // onerror should trigger before setTimeout + self._ignoreOnError -= 1; + }); + }, + + _triggerEvent: function(eventType, options) { + // NOTE: `event` is a native browser thing, so let's avoid conflicting wiht it + var evt, key; + + if (!this._hasDocument) return; + + options = options || {}; + + eventType = 'raven' + eventType.substr(0, 1).toUpperCase() + eventType.substr(1); + + if (_document.createEvent) { + evt = _document.createEvent('HTMLEvents'); + evt.initEvent(eventType, true, true); + } else { + evt = _document.createEventObject(); + evt.eventType = eventType; + } + + for (key in options) + if (hasKey(options, key)) { + evt[key] = options[key]; + } + + if (_document.createEvent) { + // IE9 if standards + _document.dispatchEvent(evt); + } else { + // IE8 regardless of Quirks or Standards + // IE9 if quirks + try { + _document.fireEvent('on' + evt.eventType.toLowerCase(), evt); + } catch (e) { + // Do nothing + } + } + }, + + /** + * Wraps addEventListener to capture UI breadcrumbs + * @param evtName the event name (e.g. "click") + * @returns {Function} + * @private + */ + _breadcrumbEventHandler: function(evtName) { + var self = this; + return function(evt) { + // reset keypress timeout; e.g. triggering a 'click' after + // a 'keypress' will reset the keypress debounce so that a new + // set of keypresses can be recorded + self._keypressTimeout = null; + + // It's possible this handler might trigger multiple times for the same + // event (e.g. event propagation through node ancestors). Ignore if we've + // already captured the event. + if (self._lastCapturedEvent === evt) return; + + self._lastCapturedEvent = evt; + + // try/catch both: + // - accessing evt.target (see getsentry/raven-js#838, #768) + // - `htmlTreeAsString` because it's complex, and just accessing the DOM incorrectly + // can throw an exception in some circumstances. + var target; + try { + target = htmlTreeAsString(evt.target); + } catch (e) { + target = ''; + } + + self.captureBreadcrumb({ + category: 'ui.' + evtName, // e.g. ui.click, ui.input + message: target + }); + }; + }, + + /** + * Wraps addEventListener to capture keypress UI events + * @returns {Function} + * @private + */ + _keypressEventHandler: function() { + var self = this, + debounceDuration = 1000; // milliseconds + + // TODO: if somehow user switches keypress target before + // debounce timeout is triggered, we will only capture + // a single breadcrumb from the FIRST target (acceptable?) + return function(evt) { + var target; + try { + target = evt.target; + } catch (e) { + // just accessing event properties can throw an exception in some rare circumstances + // see: https://github.com/getsentry/raven-js/issues/838 + return; + } + var tagName = target && target.tagName; + + // only consider keypress events on actual input elements + // this will disregard keypresses targeting body (e.g. tabbing + // through elements, hotkeys, etc) + if ( + !tagName || + (tagName !== 'INPUT' && tagName !== 'TEXTAREA' && !target.isContentEditable) + ) + return; + + // record first keypress in a series, but ignore subsequent + // keypresses until debounce clears + var timeout = self._keypressTimeout; + if (!timeout) { + self._breadcrumbEventHandler('input')(evt); + } + clearTimeout(timeout); + self._keypressTimeout = setTimeout(function() { + self._keypressTimeout = null; + }, debounceDuration); + }; + }, + + /** + * Captures a breadcrumb of type "navigation", normalizing input URLs + * @param to the originating URL + * @param from the target URL + * @private + */ + _captureUrlChange: function(from, to) { + var parsedLoc = parseUrl(this._location.href); + var parsedTo = parseUrl(to); + var parsedFrom = parseUrl(from); + + // because onpopstate only tells you the "new" (to) value of location.href, and + // not the previous (from) value, we need to track the value of the current URL + // state ourselves + this._lastHref = to; + + // Use only the path component of the URL if the URL matches the current + // document (almost all the time when using pushState) + if (parsedLoc.protocol === parsedTo.protocol && parsedLoc.host === parsedTo.host) + to = parsedTo.relative; + if (parsedLoc.protocol === parsedFrom.protocol && parsedLoc.host === parsedFrom.host) + from = parsedFrom.relative; + + this.captureBreadcrumb({ + category: 'navigation', + data: { + to: to, + from: from + } + }); + }, + + _patchFunctionToString: function() { + var self = this; + self._originalFunctionToString = Function.prototype.toString; + // eslint-disable-next-line no-extend-native + Function.prototype.toString = function() { + if (typeof this === 'function' && this.__raven__) { + return self._originalFunctionToString.apply(this.__orig__, arguments); + } + return self._originalFunctionToString.apply(this, arguments); + }; + }, + + _unpatchFunctionToString: function() { + if (this._originalFunctionToString) { + // eslint-disable-next-line no-extend-native + Function.prototype.toString = this._originalFunctionToString; + } + }, + + /** + * Wrap timer functions and event targets to catch errors and provide + * better metadata. + */ + _instrumentTryCatch: function() { + var self = this; + + var wrappedBuiltIns = self._wrappedBuiltIns; + + function wrapTimeFn(orig) { + return function(fn, t) { + // preserve arity + // Make a copy of the arguments to prevent deoptimization + // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments + var args = new Array(arguments.length); + for (var i = 0; i < args.length; ++i) { + args[i] = arguments[i]; + } + var originalCallback = args[0]; + if (isFunction(originalCallback)) { + args[0] = self.wrap(originalCallback); + } + + // IE < 9 doesn't support .call/.apply on setInterval/setTimeout, but it + // also supports only two arguments and doesn't care what this is, so we + // can just call the original function directly. + if (orig.apply) { + return orig.apply(this, args); + } else { + return orig(args[0], args[1]); + } + }; + } + + var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; + + function wrapEventTarget(global) { + var proto = _window[global] && _window[global].prototype; + if (proto && proto.hasOwnProperty && proto.hasOwnProperty('addEventListener')) { + fill( + proto, + 'addEventListener', + function(orig) { + return function(evtName, fn, capture, secure) { + // preserve arity + try { + if (fn && fn.handleEvent) { + fn.handleEvent = self.wrap(fn.handleEvent); + } + } catch (err) { + // can sometimes get 'Permission denied to access property "handle Event' + } + + // More breadcrumb DOM capture ... done here and not in `_instrumentBreadcrumbs` + // so that we don't have more than one wrapper function + var before, clickHandler, keypressHandler; + + if ( + autoBreadcrumbs && + autoBreadcrumbs.dom && + (global === 'EventTarget' || global === 'Node') + ) { + // NOTE: generating multiple handlers per addEventListener invocation, should + // revisit and verify we can just use one (almost certainly) + clickHandler = self._breadcrumbEventHandler('click'); + keypressHandler = self._keypressEventHandler(); + before = function(evt) { + // need to intercept every DOM event in `before` argument, in case that + // same wrapped method is re-used for different events (e.g. mousemove THEN click) + // see #724 + if (!evt) return; + + var eventType; + try { + eventType = evt.type; + } catch (e) { + // just accessing event properties can throw an exception in some rare circumstances + // see: https://github.com/getsentry/raven-js/issues/838 + return; + } + if (eventType === 'click') return clickHandler(evt); + else if (eventType === 'keypress') return keypressHandler(evt); + }; + } + return orig.call( + this, + evtName, + self.wrap(fn, undefined, before), + capture, + secure + ); + }; + }, + wrappedBuiltIns + ); + fill( + proto, + 'removeEventListener', + function(orig) { + return function(evt, fn, capture, secure) { + try { + fn = fn && (fn.__raven_wrapper__ ? fn.__raven_wrapper__ : fn); + } catch (e) { + // ignore, accessing __raven_wrapper__ will throw in some Selenium environments + } + return orig.call(this, evt, fn, capture, secure); + }; + }, + wrappedBuiltIns + ); + } + } + + fill(_window, 'setTimeout', wrapTimeFn, wrappedBuiltIns); + fill(_window, 'setInterval', wrapTimeFn, wrappedBuiltIns); + if (_window.requestAnimationFrame) { + fill( + _window, + 'requestAnimationFrame', + function(orig) { + return function(cb) { + return orig(self.wrap(cb)); + }; + }, + wrappedBuiltIns + ); + } + + // event targets borrowed from bugsnag-js: + // https://github.com/bugsnag/bugsnag-js/blob/master/src/bugsnag.js#L666 + var eventTargets = [ + 'EventTarget', + 'Window', + 'Node', + 'ApplicationCache', + 'AudioTrackList', + 'ChannelMergerNode', + 'CryptoOperation', + 'EventSource', + 'FileReader', + 'HTMLUnknownElement', + 'IDBDatabase', + 'IDBRequest', + 'IDBTransaction', + 'KeyOperation', + 'MediaController', + 'MessagePort', + 'ModalWindow', + 'Notification', + 'SVGElementInstance', + 'Screen', + 'TextTrack', + 'TextTrackCue', + 'TextTrackList', + 'WebSocket', + 'WebSocketWorker', + 'Worker', + 'XMLHttpRequest', + 'XMLHttpRequestEventTarget', + 'XMLHttpRequestUpload' + ]; + for (var i = 0; i < eventTargets.length; i++) { + wrapEventTarget(eventTargets[i]); + } + }, + + /** + * Instrument browser built-ins w/ breadcrumb capturing + * - XMLHttpRequests + * - DOM interactions (click/typing) + * - window.location changes + * - console + * + * Can be disabled or individually configured via the `autoBreadcrumbs` config option + */ + _instrumentBreadcrumbs: function() { + var self = this; + var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; + + var wrappedBuiltIns = self._wrappedBuiltIns; + + function wrapProp(prop, xhr) { + if (prop in xhr && isFunction(xhr[prop])) { + fill(xhr, prop, function(orig) { + return self.wrap(orig); + }); // intentionally don't track filled methods on XHR instances + } + } + + if (autoBreadcrumbs.xhr && 'XMLHttpRequest' in _window) { + var xhrproto = _window.XMLHttpRequest && _window.XMLHttpRequest.prototype; + fill( + xhrproto, + 'open', + function(origOpen) { + return function(method, url) { + // preserve arity + + // if Sentry key appears in URL, don't capture + if (isString(url) && url.indexOf(self._globalKey) === -1) { + this.__raven_xhr = { + method: method, + url: url, + status_code: null + }; + } + + return origOpen.apply(this, arguments); + }; + }, + wrappedBuiltIns + ); + + fill( + xhrproto, + 'send', + function(origSend) { + return function() { + // preserve arity + var xhr = this; + + function onreadystatechangeHandler() { + if (xhr.__raven_xhr && xhr.readyState === 4) { + try { + // touching statusCode in some platforms throws + // an exception + xhr.__raven_xhr.status_code = xhr.status; + } catch (e) { + /* do nothing */ + } + + self.captureBreadcrumb({ + type: 'http', + category: 'xhr', + data: xhr.__raven_xhr + }); + } + } + + var props = ['onload', 'onerror', 'onprogress']; + for (var j = 0; j < props.length; j++) { + wrapProp(props[j], xhr); + } + + if ('onreadystatechange' in xhr && isFunction(xhr.onreadystatechange)) { + fill( + xhr, + 'onreadystatechange', + function(orig) { + return self.wrap(orig, undefined, onreadystatechangeHandler); + } /* intentionally don't track this instrumentation */ + ); + } else { + // if onreadystatechange wasn't actually set by the page on this xhr, we + // are free to set our own and capture the breadcrumb + xhr.onreadystatechange = onreadystatechangeHandler; + } + + return origSend.apply(this, arguments); + }; + }, + wrappedBuiltIns + ); + } + + if (autoBreadcrumbs.xhr && supportsFetch()) { + fill( + _window, + 'fetch', + function(origFetch) { + return function() { + // preserve arity + // Make a copy of the arguments to prevent deoptimization + // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments + var args = new Array(arguments.length); + for (var i = 0; i < args.length; ++i) { + args[i] = arguments[i]; + } + + var fetchInput = args[0]; + var method = 'GET'; + var url; + + if (typeof fetchInput === 'string') { + url = fetchInput; + } else if ('Request' in _window && fetchInput instanceof _window.Request) { + url = fetchInput.url; + if (fetchInput.method) { + method = fetchInput.method; + } + } else { + url = '' + fetchInput; + } + + // if Sentry key appears in URL, don't capture, as it's our own request + if (url.indexOf(self._globalKey) !== -1) { + return origFetch.apply(this, args); + } + + if (args[1] && args[1].method) { + method = args[1].method; + } + + var fetchData = { + method: method, + url: url, + status_code: null + }; + + return origFetch + .apply(this, args) + .then(function(response) { + fetchData.status_code = response.status; + + self.captureBreadcrumb({ + type: 'http', + category: 'fetch', + data: fetchData + }); + + return response; + }) + ['catch'](function(err) { + // if there is an error performing the request + self.captureBreadcrumb({ + type: 'http', + category: 'fetch', + data: fetchData, + level: 'error' + }); + + throw err; + }); + }; + }, + wrappedBuiltIns + ); + } + + // Capture breadcrumbs from any click that is unhandled / bubbled up all the way + // to the document. Do this before we instrument addEventListener. + if (autoBreadcrumbs.dom && this._hasDocument) { + if (_document.addEventListener) { + _document.addEventListener('click', self._breadcrumbEventHandler('click'), false); + _document.addEventListener('keypress', self._keypressEventHandler(), false); + } else if (_document.attachEvent) { + // IE8 Compatibility + _document.attachEvent('onclick', self._breadcrumbEventHandler('click')); + _document.attachEvent('onkeypress', self._keypressEventHandler()); + } + } + + // record navigation (URL) changes + // NOTE: in Chrome App environment, touching history.pushState, *even inside + // a try/catch block*, will cause Chrome to output an error to console.error + // borrowed from: https://github.com/angular/angular.js/pull/13945/files + var chrome = _window.chrome; + var isChromePackagedApp = chrome && chrome.app && chrome.app.runtime; + var hasPushAndReplaceState = + !isChromePackagedApp && + _window.history && + _window.history.pushState && + _window.history.replaceState; + if (autoBreadcrumbs.location && hasPushAndReplaceState) { + // TODO: remove onpopstate handler on uninstall() + var oldOnPopState = _window.onpopstate; + _window.onpopstate = function() { + var currentHref = self._location.href; + self._captureUrlChange(self._lastHref, currentHref); + + if (oldOnPopState) { + return oldOnPopState.apply(this, arguments); + } + }; + + var historyReplacementFunction = function(origHistFunction) { + // note history.pushState.length is 0; intentionally not declaring + // params to preserve 0 arity + return function(/* state, title, url */) { + var url = arguments.length > 2 ? arguments[2] : undefined; + + // url argument is optional + if (url) { + // coerce to string (this is what pushState does) + self._captureUrlChange(self._lastHref, url + ''); + } + + return origHistFunction.apply(this, arguments); + }; + }; + + fill(_window.history, 'pushState', historyReplacementFunction, wrappedBuiltIns); + fill(_window.history, 'replaceState', historyReplacementFunction, wrappedBuiltIns); + } + + if (autoBreadcrumbs.console && 'console' in _window && console.log) { + // console + var consoleMethodCallback = function(msg, data) { + self.captureBreadcrumb({ + message: msg, + level: data.level, + category: 'console' + }); + }; + + each(['debug', 'info', 'warn', 'error', 'log'], function(_, level) { + wrapConsoleMethod(console, level, consoleMethodCallback); + }); + } + }, + + _restoreBuiltIns: function() { + // restore any wrapped builtins + var builtin; + while (this._wrappedBuiltIns.length) { + builtin = this._wrappedBuiltIns.shift(); + + var obj = builtin[0], + name = builtin[1], + orig = builtin[2]; + + obj[name] = orig; + } + }, + + _restoreConsole: function() { + // eslint-disable-next-line guard-for-in + for (var method in this._originalConsoleMethods) { + this._originalConsole[method] = this._originalConsoleMethods[method]; + } + }, + + _drainPlugins: function() { + var self = this; + + // FIX ME TODO + each(this._plugins, function(_, plugin) { + var installer = plugin[0]; + var args = plugin[1]; + installer.apply(self, [self].concat(args)); + }); + }, + + _parseDSN: function(str) { + var m = dsnPattern.exec(str), + dsn = {}, + i = 7; + + try { + while (i--) dsn[dsnKeys[i]] = m[i] || ''; + } catch (e) { + throw new RavenConfigError('Invalid DSN: ' + str); + } + + if (dsn.pass && !this._globalOptions.allowSecretKey) { + throw new RavenConfigError( + 'Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key' + ); + } + + return dsn; + }, + + _getGlobalServer: function(uri) { + // assemble the endpoint from the uri pieces + var globalServer = '//' + uri.host + (uri.port ? ':' + uri.port : ''); + + if (uri.protocol) { + globalServer = uri.protocol + ':' + globalServer; + } + return globalServer; + }, + + _handleOnErrorStackInfo: function() { + // if we are intentionally ignoring errors via onerror, bail out + if (!this._ignoreOnError) { + this._handleStackInfo.apply(this, arguments); + } + }, + + _handleStackInfo: function(stackInfo, options) { + var frames = this._prepareFrames(stackInfo, options); + + this._triggerEvent('handle', { + stackInfo: stackInfo, + options: options + }); + + this._processException( + stackInfo.name, + stackInfo.message, + stackInfo.url, + stackInfo.lineno, + frames, + options + ); + }, + + _prepareFrames: function(stackInfo, options) { + var self = this; + var frames = []; + if (stackInfo.stack && stackInfo.stack.length) { + each(stackInfo.stack, function(i, stack) { + var frame = self._normalizeFrame(stack, stackInfo.url); + if (frame) { + frames.push(frame); + } + }); + + // e.g. frames captured via captureMessage throw + if (options && options.trimHeadFrames) { + for (var j = 0; j < options.trimHeadFrames && j < frames.length; j++) { + frames[j].in_app = false; + } + } + } + frames = frames.slice(0, this._globalOptions.stackTraceLimit); + return frames; + }, + + _normalizeFrame: function(frame, stackInfoUrl) { + // normalize the frames data + var normalized = { + filename: frame.url, + lineno: frame.line, + colno: frame.column, + function: frame.func || '?' + }; + + // Case when we don't have any information about the error + // E.g. throwing a string or raw object, instead of an `Error` in Firefox + // Generating synthetic error doesn't add any value here + // + // We should probably somehow let a user know that they should fix their code + if (!frame.url) { + normalized.filename = stackInfoUrl; // fallback to whole stacks url from onerror handler + } + + normalized.in_app = !// determine if an exception came from outside of our app + // first we check the global includePaths list. + ( + (!!this._globalOptions.includePaths.test && + !this._globalOptions.includePaths.test(normalized.filename)) || + // Now we check for fun, if the function name is Raven or TraceKit + /(Raven|TraceKit)\./.test(normalized['function']) || + // finally, we do a last ditch effort and check for raven.min.js + /raven\.(min\.)?js$/.test(normalized.filename) + ); + + return normalized; + }, + + _processException: function(type, message, fileurl, lineno, frames, options) { + var prefixedMessage = (type ? type + ': ' : '') + (message || ''); + if ( + !!this._globalOptions.ignoreErrors.test && + (this._globalOptions.ignoreErrors.test(message) || + this._globalOptions.ignoreErrors.test(prefixedMessage)) + ) { + return; + } + + var stacktrace; + + if (frames && frames.length) { + fileurl = frames[0].filename || fileurl; + // Sentry expects frames oldest to newest + // and JS sends them as newest to oldest + frames.reverse(); + stacktrace = {frames: frames}; + } else if (fileurl) { + stacktrace = { + frames: [ + { + filename: fileurl, + lineno: lineno, + in_app: true + } + ] + }; + } + + if ( + !!this._globalOptions.ignoreUrls.test && + this._globalOptions.ignoreUrls.test(fileurl) + ) { + return; + } + + if ( + !!this._globalOptions.whitelistUrls.test && + !this._globalOptions.whitelistUrls.test(fileurl) + ) { + return; + } + + var data = objectMerge( + { + // sentry.interfaces.Exception + exception: { + values: [ + { + type: type, + value: message, + stacktrace: stacktrace + } + ] + }, + transaction: fileurl + }, + options + ); + + // Fire away! + this._send(data); + }, + + _trimPacket: function(data) { + // For now, we only want to truncate the two different messages + // but this could/should be expanded to just trim everything + var max = this._globalOptions.maxMessageLength; + if (data.message) { + data.message = truncate(data.message, max); + } + if (data.exception) { + var exception = data.exception.values[0]; + exception.value = truncate(exception.value, max); + } + + var request = data.request; + if (request) { + if (request.url) { + request.url = truncate(request.url, this._globalOptions.maxUrlLength); + } + if (request.Referer) { + request.Referer = truncate(request.Referer, this._globalOptions.maxUrlLength); + } + } + + if (data.breadcrumbs && data.breadcrumbs.values) + this._trimBreadcrumbs(data.breadcrumbs); + + return data; + }, + + /** + * Truncate breadcrumb values (right now just URLs) + */ + _trimBreadcrumbs: function(breadcrumbs) { + // known breadcrumb properties with urls + // TODO: also consider arbitrary prop values that start with (https?)?:// + var urlProps = ['to', 'from', 'url'], + urlProp, + crumb, + data; + + for (var i = 0; i < breadcrumbs.values.length; ++i) { + crumb = breadcrumbs.values[i]; + if ( + !crumb.hasOwnProperty('data') || + !isObject(crumb.data) || + objectFrozen(crumb.data) + ) + continue; + + data = objectMerge({}, crumb.data); + for (var j = 0; j < urlProps.length; ++j) { + urlProp = urlProps[j]; + if (data.hasOwnProperty(urlProp) && data[urlProp]) { + data[urlProp] = truncate(data[urlProp], this._globalOptions.maxUrlLength); + } + } + breadcrumbs.values[i].data = data; + } + }, + + _getHttpData: function() { + if (!this._hasNavigator && !this._hasDocument) return; + var httpData = {}; + + if (this._hasNavigator && _navigator.userAgent) { + httpData.headers = { + 'User-Agent': _navigator.userAgent + }; + } + + // Check in `window` instead of `document`, as we may be in ServiceWorker environment + if (_window.location && _window.location.href) { + httpData.url = _window.location.href; + } + + if (this._hasDocument && _document.referrer) { + if (!httpData.headers) httpData.headers = {}; + httpData.headers.Referer = _document.referrer; + } + + return httpData; + }, + + _resetBackoff: function() { + this._backoffDuration = 0; + this._backoffStart = null; + }, + + _shouldBackoff: function() { + return this._backoffDuration && now() - this._backoffStart < this._backoffDuration; + }, + + /** + * Returns true if the in-process data payload matches the signature + * of the previously-sent data + * + * NOTE: This has to be done at this level because TraceKit can generate + * data from window.onerror WITHOUT an exception object (IE8, IE9, + * other old browsers). This can take the form of an "exception" + * data object with a single frame (derived from the onerror args). + */ + _isRepeatData: function(current) { + var last = this._lastData; + + if ( + !last || + current.message !== last.message || // defined for captureMessage + current.transaction !== last.transaction // defined for captureException/onerror + ) + return false; + + // Stacktrace interface (i.e. from captureMessage) + if (current.stacktrace || last.stacktrace) { + return isSameStacktrace(current.stacktrace, last.stacktrace); + } else if (current.exception || last.exception) { + // Exception interface (i.e. from captureException/onerror) + return isSameException(current.exception, last.exception); + } + + return true; + }, + + _setBackoffState: function(request) { + // If we are already in a backoff state, don't change anything + if (this._shouldBackoff()) { + return; + } + + var status = request.status; + + // 400 - project_id doesn't exist or some other fatal + // 401 - invalid/revoked dsn + // 429 - too many requests + if (!(status === 400 || status === 401 || status === 429)) return; + + var retry; + try { + // If Retry-After is not in Access-Control-Expose-Headers, most + // browsers will throw an exception trying to access it + if (supportsFetch()) { + retry = request.headers.get('Retry-After'); + } else { + retry = request.getResponseHeader('Retry-After'); + } + + // Retry-After is returned in seconds + retry = parseInt(retry, 10) * 1000; + } catch (e) { + /* eslint no-empty:0 */ + } + + this._backoffDuration = retry + ? // If Sentry server returned a Retry-After value, use it + retry + : // Otherwise, double the last backoff duration (starts at 1 sec) + this._backoffDuration * 2 || 1000; + + this._backoffStart = now(); + }, + + _send: function(data) { + var globalOptions = this._globalOptions; + + var baseData = { + project: this._globalProject, + logger: globalOptions.logger, + platform: 'javascript' + }, + httpData = this._getHttpData(); + + if (httpData) { + baseData.request = httpData; + } + + // HACK: delete `trimHeadFrames` to prevent from appearing in outbound payload + if (data.trimHeadFrames) delete data.trimHeadFrames; + + data = objectMerge(baseData, data); + + // Merge in the tags and extra separately since objectMerge doesn't handle a deep merge + data.tags = objectMerge(objectMerge({}, this._globalContext.tags), data.tags); + data.extra = objectMerge(objectMerge({}, this._globalContext.extra), data.extra); + + // Send along our own collected metadata with extra + data.extra['session:duration'] = now() - this._startTime; + + if (this._breadcrumbs && this._breadcrumbs.length > 0) { + // intentionally make shallow copy so that additions + // to breadcrumbs aren't accidentally sent in this request + data.breadcrumbs = { + values: [].slice.call(this._breadcrumbs, 0) + }; + } + + if (this._globalContext.user) { + // sentry.interfaces.User + data.user = this._globalContext.user; + } + + // Include the environment if it's defined in globalOptions + if (globalOptions.environment) data.environment = globalOptions.environment; + + // Include the release if it's defined in globalOptions + if (globalOptions.release) data.release = globalOptions.release; + + // Include server_name if it's defined in globalOptions + if (globalOptions.serverName) data.server_name = globalOptions.serverName; + + data = this._sanitizeData(data); + + // Cleanup empty properties before sending them to the server + Object.keys(data).forEach(function(key) { + if (data[key] == null || data[key] === '' || isEmptyObject(data[key])) { + delete data[key]; + } + }); + + if (isFunction(globalOptions.dataCallback)) { + data = globalOptions.dataCallback(data) || data; + } + + // Why?????????? + if (!data || isEmptyObject(data)) { + return; + } + + // Check if the request should be filtered or not + if ( + isFunction(globalOptions.shouldSendCallback) && + !globalOptions.shouldSendCallback(data) + ) { + return; + } + + // Backoff state: Sentry server previously responded w/ an error (e.g. 429 - too many requests), + // so drop requests until "cool-off" period has elapsed. + if (this._shouldBackoff()) { + this._logDebug('warn', 'Raven dropped error due to backoff: ', data); + return; + } + + if (typeof globalOptions.sampleRate === 'number') { + if (Math.random() < globalOptions.sampleRate) { + this._sendProcessedPayload(data); + } + } else { + this._sendProcessedPayload(data); + } + }, + + _sanitizeData: function(data) { + return sanitize(data, this._globalOptions.sanitizeKeys); + }, + + _getUuid: function() { + return uuid4(); + }, + + _sendProcessedPayload: function(data, callback) { + var self = this; + var globalOptions = this._globalOptions; + + if (!this.isSetup()) return; + + // Try and clean up the packet before sending by truncating long values + data = this._trimPacket(data); + + // ideally duplicate error testing should occur *before* dataCallback/shouldSendCallback, + // but this would require copying an un-truncated copy of the data packet, which can be + // arbitrarily deep (extra_data) -- could be worthwhile? will revisit + if (!this._globalOptions.allowDuplicates && this._isRepeatData(data)) { + this._logDebug('warn', 'Raven dropped repeat event: ', data); + return; + } + + // Send along an event_id if not explicitly passed. + // This event_id can be used to reference the error within Sentry itself. + // Set lastEventId after we know the error should actually be sent + this._lastEventId = data.event_id || (data.event_id = this._getUuid()); + + // Store outbound payload after trim + this._lastData = data; + + this._logDebug('debug', 'Raven about to send:', data); + + var auth = { + sentry_version: '7', + sentry_client: 'raven-js/' + this.VERSION, + sentry_key: this._globalKey + }; + + if (this._globalSecret) { + auth.sentry_secret = this._globalSecret; + } + + var exception = data.exception && data.exception.values[0]; + + // only capture 'sentry' breadcrumb is autoBreadcrumbs is truthy + if ( + this._globalOptions.autoBreadcrumbs && + this._globalOptions.autoBreadcrumbs.sentry + ) { + this.captureBreadcrumb({ + category: 'sentry', + message: exception + ? (exception.type ? exception.type + ': ' : '') + exception.value + : data.message, + event_id: data.event_id, + level: data.level || 'error' // presume error unless specified + }); + } + + var url = this._globalEndpoint; + (globalOptions.transport || this._makeRequest).call(this, { + url: url, + auth: auth, + data: data, + options: globalOptions, + onSuccess: function success() { + self._resetBackoff(); + + self._triggerEvent('success', { + data: data, + src: url + }); + callback && callback(); + }, + onError: function failure(error) { + self._logDebug('error', 'Raven transport failed to send: ', error); + + if (error.request) { + self._setBackoffState(error.request); + } + + self._triggerEvent('failure', { + data: data, + src: url + }); + error = error || new Error('Raven send failed (no additional details provided)'); + callback && callback(error); + } + }); + }, + + _makeRequest: function(opts) { + // Auth is intentionally sent as part of query string (NOT as custom HTTP header) to avoid preflight CORS requests + var url = opts.url + '?' + urlencode(opts.auth); + + var evaluatedHeaders = null; + var evaluatedFetchParameters = {}; + + if (opts.options.headers) { + evaluatedHeaders = this._evaluateHash(opts.options.headers); + } + + if (opts.options.fetchParameters) { + evaluatedFetchParameters = this._evaluateHash(opts.options.fetchParameters); + } + + if (supportsFetch()) { + evaluatedFetchParameters.body = stringify(opts.data); + + var defaultFetchOptions = objectMerge({}, this._fetchDefaults); + var fetchOptions = objectMerge(defaultFetchOptions, evaluatedFetchParameters); + + if (evaluatedHeaders) { + fetchOptions.headers = evaluatedHeaders; + } + + return _window + .fetch(url, fetchOptions) + .then(function(response) { + if (response.ok) { + opts.onSuccess && opts.onSuccess(); + } else { + var error = new Error('Sentry error code: ' + response.status); + // It's called request only to keep compatibility with XHR interface + // and not add more redundant checks in setBackoffState method + error.request = response; + opts.onError && opts.onError(error); + } + }) + ['catch'](function() { + opts.onError && + opts.onError(new Error('Sentry error code: network unavailable')); + }); + } + + var request = _window.XMLHttpRequest && new _window.XMLHttpRequest(); + if (!request) return; + + // if browser doesn't support CORS (e.g. IE7), we are out of luck + var hasCORS = 'withCredentials' in request || typeof XDomainRequest !== 'undefined'; + + if (!hasCORS) return; + + if ('withCredentials' in request) { + request.onreadystatechange = function() { + if (request.readyState !== 4) { + return; + } else if (request.status === 200) { + opts.onSuccess && opts.onSuccess(); + } else if (opts.onError) { + var err = new Error('Sentry error code: ' + request.status); + err.request = request; + opts.onError(err); + } + }; + } else { + request = new XDomainRequest(); + // xdomainrequest cannot go http -> https (or vice versa), + // so always use protocol relative + url = url.replace(/^https?:/, ''); + + // onreadystatechange not supported by XDomainRequest + if (opts.onSuccess) { + request.onload = opts.onSuccess; + } + if (opts.onError) { + request.onerror = function() { + var err = new Error('Sentry error code: XDomainRequest'); + err.request = request; + opts.onError(err); + }; + } + } + + request.open('POST', url); + + if (evaluatedHeaders) { + each(evaluatedHeaders, function(key, value) { + request.setRequestHeader(key, value); + }); + } + + request.send(stringify(opts.data)); + }, + + _evaluateHash: function(hash) { + var evaluated = {}; + + for (var key in hash) { + if (hash.hasOwnProperty(key)) { + var value = hash[key]; + evaluated[key] = typeof value === 'function' ? value() : value; + } + } + + return evaluated; + }, + + _logDebug: function(level) { + // We allow `Raven.debug` and `Raven.config(DSN, { debug: true })` to not make backward incompatible API change + if ( + this._originalConsoleMethods[level] && + (this.debug || this._globalOptions.debug) + ) { + // In IE<10 console methods do not have their own 'apply' method + Function.prototype.apply.call( + this._originalConsoleMethods[level], + this._originalConsole, + [].slice.call(arguments, 1) + ); + } + }, + + _mergeContext: function(key, context) { + if (isUndefined(context)) { + delete this._globalContext[key]; + } else { + this._globalContext[key] = objectMerge(this._globalContext[key] || {}, context); + } + } +}; + +// Deprecations +Raven.prototype.setUser = Raven.prototype.setUserContext; +Raven.prototype.setReleaseContext = Raven.prototype.setRelease; + +module.exports = Raven; + +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"10":10,"11":11,"4":4,"5":5,"8":8,"9":9}],7:[function(_dereq_,module,exports){ +(function (global){ +/** + * Enforces a single instance of the Raven client, and the + * main entry point for Raven. If you are a consumer of the + * Raven library, you SHOULD load this file (vs raven.js). + **/ + +var RavenConstructor = _dereq_(6); + +// This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) +var _window = + typeof window !== 'undefined' + ? window + : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; +var _Raven = _window.Raven; + +var Raven = new RavenConstructor(); + +/* + * Allow multiple versions of Raven to be installed. + * Strip Raven from the global context and returns the instance. + * + * @return {Raven} + */ +Raven.noConflict = function() { + _window.Raven = _Raven; + return Raven; +}; + +Raven.afterLoad(); + +module.exports = Raven; + +/** + * DISCLAIMER: + * + * Expose `Client` constructor for cases where user want to track multiple "sub-applications" in one larger app. + * It's not meant to be used by a wide audience, so pleaaase make sure that you know what you're doing before using it. + * Accidentally calling `install` multiple times, may result in an unexpected behavior that's very hard to debug. + * + * It's called `Client' to be in-line with Raven Node implementation. + * + * HOWTO: + * + * import Raven from 'raven-js'; + * + * const someAppReporter = new Raven.Client(); + * const someOtherAppReporter = new Raven.Client(); + * + * someAppReporter.config('__DSN__', { + * ...config goes here + * }); + * + * someOtherAppReporter.config('__OTHER_DSN__', { + * ...config goes here + * }); + * + * someAppReporter.captureMessage(...); + * someAppReporter.captureException(...); + * someAppReporter.captureBreadcrumb(...); + * + * someOtherAppReporter.captureMessage(...); + * someOtherAppReporter.captureException(...); + * someOtherAppReporter.captureBreadcrumb(...); + * + * It should "just work". + */ +module.exports.Client = RavenConstructor; + +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"6":6}],8:[function(_dereq_,module,exports){ +(function (global){ +var stringify = _dereq_(10); + +var _window = + typeof window !== 'undefined' + ? window + : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; + +function isObject(what) { + return typeof what === 'object' && what !== null; +} + +// Yanked from https://git.io/vS8DV re-used under CC0 +// with some tiny modifications +function isError(value) { + switch (Object.prototype.toString.call(value)) { + case '[object Error]': + return true; + case '[object Exception]': + return true; + case '[object DOMException]': + return true; + default: + return value instanceof Error; + } +} + +function isErrorEvent(value) { + return Object.prototype.toString.call(value) === '[object ErrorEvent]'; +} + +function isDOMError(value) { + return Object.prototype.toString.call(value) === '[object DOMError]'; +} + +function isDOMException(value) { + return Object.prototype.toString.call(value) === '[object DOMException]'; +} + +function isUndefined(what) { + return what === void 0; +} + +function isFunction(what) { + return typeof what === 'function'; +} + +function isPlainObject(what) { + return Object.prototype.toString.call(what) === '[object Object]'; +} + +function isString(what) { + return Object.prototype.toString.call(what) === '[object String]'; +} + +function isArray(what) { + return Object.prototype.toString.call(what) === '[object Array]'; +} + +function isEmptyObject(what) { + if (!isPlainObject(what)) return false; + + for (var _ in what) { + if (what.hasOwnProperty(_)) { + return false; + } + } + return true; +} + +function supportsErrorEvent() { + try { + new ErrorEvent(''); // eslint-disable-line no-new + return true; + } catch (e) { + return false; + } +} + +function supportsDOMError() { + try { + new DOMError(''); // eslint-disable-line no-new + return true; + } catch (e) { + return false; + } +} + +function supportsDOMException() { + try { + new DOMException(''); // eslint-disable-line no-new + return true; + } catch (e) { + return false; + } +} + +function supportsFetch() { + if (!('fetch' in _window)) return false; + + try { + new Headers(); // eslint-disable-line no-new + new Request(''); // eslint-disable-line no-new + new Response(); // eslint-disable-line no-new + return true; + } catch (e) { + return false; + } +} + +// Despite all stars in the sky saying that Edge supports old draft syntax, aka 'never', 'always', 'origin' and 'default +// https://caniuse.com/#feat=referrer-policy +// It doesn't. And it throw exception instead of ignoring this parameter... +// REF: https://github.com/getsentry/raven-js/issues/1233 +function supportsReferrerPolicy() { + if (!supportsFetch()) return false; + + try { + // eslint-disable-next-line no-new + new Request('pickleRick', { + referrerPolicy: 'origin' + }); + return true; + } catch (e) { + return false; + } +} + +function supportsPromiseRejectionEvent() { + return typeof PromiseRejectionEvent === 'function'; +} + +function wrappedCallback(callback) { + function dataCallback(data, original) { + var normalizedData = callback(data) || data; + if (original) { + return original(normalizedData) || normalizedData; + } + return normalizedData; + } + + return dataCallback; +} + +function each(obj, callback) { + var i, j; + + if (isUndefined(obj.length)) { + for (i in obj) { + if (hasKey(obj, i)) { + callback.call(null, i, obj[i]); + } + } + } else { + j = obj.length; + if (j) { + for (i = 0; i < j; i++) { + callback.call(null, i, obj[i]); + } + } + } +} + +function objectMerge(obj1, obj2) { + if (!obj2) { + return obj1; + } + each(obj2, function(key, value) { + obj1[key] = value; + }); + return obj1; +} + +/** + * This function is only used for react-native. + * react-native freezes object that have already been sent over the + * js bridge. We need this function in order to check if the object is frozen. + * So it's ok that objectFrozen returns false if Object.isFrozen is not + * supported because it's not relevant for other "platforms". See related issue: + * https://github.com/getsentry/react-native-sentry/issues/57 + */ +function objectFrozen(obj) { + if (!Object.isFrozen) { + return false; + } + return Object.isFrozen(obj); +} + +function truncate(str, max) { + if (typeof max !== 'number') { + throw new Error('2nd argument to `truncate` function should be a number'); + } + if (typeof str !== 'string' || max === 0) { + return str; + } + return str.length <= max ? str : str.substr(0, max) + '\u2026'; +} + +/** + * hasKey, a better form of hasOwnProperty + * Example: hasKey(MainHostObject, property) === true/false + * + * @param {Object} host object to check property + * @param {string} key to check + */ +function hasKey(object, key) { + return Object.prototype.hasOwnProperty.call(object, key); +} + +function joinRegExp(patterns) { + // Combine an array of regular expressions and strings into one large regexp + // Be mad. + var sources = [], + i = 0, + len = patterns.length, + pattern; + + for (; i < len; i++) { + pattern = patterns[i]; + if (isString(pattern)) { + // If it's a string, we need to escape it + // Taken from: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions + sources.push(pattern.replace(/([.*+?^=!:${}()|\[\]\/\\])/g, '\\$1')); + } else if (pattern && pattern.source) { + // If it's a regexp already, we want to extract the source + sources.push(pattern.source); + } + // Intentionally skip other cases + } + return new RegExp(sources.join('|'), 'i'); +} + +function urlencode(o) { + var pairs = []; + each(o, function(key, value) { + pairs.push(encodeURIComponent(key) + '=' + encodeURIComponent(value)); + }); + return pairs.join('&'); +} + +// borrowed from https://tools.ietf.org/html/rfc3986#appendix-B +// intentionally using regex and not href parsing trick because React Native and other +// environments where DOM might not be available +function parseUrl(url) { + if (typeof url !== 'string') return {}; + var match = url.match(/^(([^:\/?#]+):)?(\/\/([^\/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?$/); + + // coerce to undefined values to empty string so we don't get 'undefined' + var query = match[6] || ''; + var fragment = match[8] || ''; + return { + protocol: match[2], + host: match[4], + path: match[5], + relative: match[5] + query + fragment // everything minus origin + }; +} +function uuid4() { + var crypto = _window.crypto || _window.msCrypto; + + if (!isUndefined(crypto) && crypto.getRandomValues) { + // Use window.crypto API if available + // eslint-disable-next-line no-undef + var arr = new Uint16Array(8); + crypto.getRandomValues(arr); + + // set 4 in byte 7 + arr[3] = (arr[3] & 0xfff) | 0x4000; + // set 2 most significant bits of byte 9 to '10' + arr[4] = (arr[4] & 0x3fff) | 0x8000; + + var pad = function(num) { + var v = num.toString(16); + while (v.length < 4) { + v = '0' + v; + } + return v; + }; + + return ( + pad(arr[0]) + + pad(arr[1]) + + pad(arr[2]) + + pad(arr[3]) + + pad(arr[4]) + + pad(arr[5]) + + pad(arr[6]) + + pad(arr[7]) + ); + } else { + // http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/2117523#2117523 + return 'xxxxxxxxxxxx4xxxyxxxxxxxxxxxxxxx'.replace(/[xy]/g, function(c) { + var r = (Math.random() * 16) | 0, + v = c === 'x' ? r : (r & 0x3) | 0x8; + return v.toString(16); + }); + } +} + +/** + * Given a child DOM element, returns a query-selector statement describing that + * and its ancestors + * e.g. [HTMLElement] => body > div > input#foo.btn[name=baz] + * @param elem + * @returns {string} + */ +function htmlTreeAsString(elem) { + /* eslint no-extra-parens:0*/ + var MAX_TRAVERSE_HEIGHT = 5, + MAX_OUTPUT_LEN = 80, + out = [], + height = 0, + len = 0, + separator = ' > ', + sepLength = separator.length, + nextStr; + + while (elem && height++ < MAX_TRAVERSE_HEIGHT) { + nextStr = htmlElementAsString(elem); + // bail out if + // - nextStr is the 'html' element + // - the length of the string that would be created exceeds MAX_OUTPUT_LEN + // (ignore this limit if we are on the first iteration) + if ( + nextStr === 'html' || + (height > 1 && len + out.length * sepLength + nextStr.length >= MAX_OUTPUT_LEN) + ) { + break; + } + + out.push(nextStr); + + len += nextStr.length; + elem = elem.parentNode; + } + + return out.reverse().join(separator); +} + +/** + * Returns a simple, query-selector representation of a DOM element + * e.g. [HTMLElement] => input#foo.btn[name=baz] + * @param HTMLElement + * @returns {string} + */ +function htmlElementAsString(elem) { + var out = [], + className, + classes, + key, + attr, + i; + + if (!elem || !elem.tagName) { + return ''; + } + + out.push(elem.tagName.toLowerCase()); + if (elem.id) { + out.push('#' + elem.id); + } + + className = elem.className; + if (className && isString(className)) { + classes = className.split(/\s+/); + for (i = 0; i < classes.length; i++) { + out.push('.' + classes[i]); + } + } + var attrWhitelist = ['type', 'name', 'title', 'alt']; + for (i = 0; i < attrWhitelist.length; i++) { + key = attrWhitelist[i]; + attr = elem.getAttribute(key); + if (attr) { + out.push('[' + key + '="' + attr + '"]'); + } + } + return out.join(''); +} + +/** + * Returns true if either a OR b is truthy, but not both + */ +function isOnlyOneTruthy(a, b) { + return !!(!!a ^ !!b); +} + +/** + * Returns true if both parameters are undefined + */ +function isBothUndefined(a, b) { + return isUndefined(a) && isUndefined(b); +} + +/** + * Returns true if the two input exception interfaces have the same content + */ +function isSameException(ex1, ex2) { + if (isOnlyOneTruthy(ex1, ex2)) return false; + + ex1 = ex1.values[0]; + ex2 = ex2.values[0]; + + if (ex1.type !== ex2.type || ex1.value !== ex2.value) return false; + + // in case both stacktraces are undefined, we can't decide so default to false + if (isBothUndefined(ex1.stacktrace, ex2.stacktrace)) return false; + + return isSameStacktrace(ex1.stacktrace, ex2.stacktrace); +} + +/** + * Returns true if the two input stack trace interfaces have the same content + */ +function isSameStacktrace(stack1, stack2) { + if (isOnlyOneTruthy(stack1, stack2)) return false; + + var frames1 = stack1.frames; + var frames2 = stack2.frames; + + // Exit early if frame count differs + if (frames1.length !== frames2.length) return false; + + // Iterate through every frame; bail out if anything differs + var a, b; + for (var i = 0; i < frames1.length; i++) { + a = frames1[i]; + b = frames2[i]; + if ( + a.filename !== b.filename || + a.lineno !== b.lineno || + a.colno !== b.colno || + a['function'] !== b['function'] + ) + return false; + } + return true; +} + +/** + * Polyfill a method + * @param obj object e.g. `document` + * @param name method name present on object e.g. `addEventListener` + * @param replacement replacement function + * @param track {optional} record instrumentation to an array + */ +function fill(obj, name, replacement, track) { + if (obj == null) return; + var orig = obj[name]; + obj[name] = replacement(orig); + obj[name].__raven__ = true; + obj[name].__orig__ = orig; + if (track) { + track.push([obj, name, orig]); + } +} + +/** + * Join values in array + * @param input array of values to be joined together + * @param delimiter string to be placed in-between values + * @returns {string} + */ +function safeJoin(input, delimiter) { + if (!isArray(input)) return ''; + + var output = []; + + for (var i = 0; i < input.length; i++) { + try { + output.push(String(input[i])); + } catch (e) { + output.push('[value cannot be serialized]'); + } + } + + return output.join(delimiter); +} + +// Default Node.js REPL depth +var MAX_SERIALIZE_EXCEPTION_DEPTH = 3; +// 50kB, as 100kB is max payload size, so half sounds reasonable +var MAX_SERIALIZE_EXCEPTION_SIZE = 50 * 1024; +var MAX_SERIALIZE_KEYS_LENGTH = 40; + +function utf8Length(value) { + return ~-encodeURI(value).split(/%..|./).length; +} + +function jsonSize(value) { + return utf8Length(JSON.stringify(value)); +} + +function serializeValue(value) { + if (typeof value === 'string') { + var maxLength = 40; + return truncate(value, maxLength); + } else if ( + typeof value === 'number' || + typeof value === 'boolean' || + typeof value === 'undefined' + ) { + return value; + } + + var type = Object.prototype.toString.call(value); + + // Node.js REPL notation + if (type === '[object Object]') return '[Object]'; + if (type === '[object Array]') return '[Array]'; + if (type === '[object Function]') + return value.name ? '[Function: ' + value.name + ']' : '[Function]'; + + return value; +} + +function serializeObject(value, depth) { + if (depth === 0) return serializeValue(value); + + if (isPlainObject(value)) { + return Object.keys(value).reduce(function(acc, key) { + acc[key] = serializeObject(value[key], depth - 1); + return acc; + }, {}); + } else if (Array.isArray(value)) { + return value.map(function(val) { + return serializeObject(val, depth - 1); + }); + } + + return serializeValue(value); +} + +function serializeException(ex, depth, maxSize) { + if (!isPlainObject(ex)) return ex; + + depth = typeof depth !== 'number' ? MAX_SERIALIZE_EXCEPTION_DEPTH : depth; + maxSize = typeof depth !== 'number' ? MAX_SERIALIZE_EXCEPTION_SIZE : maxSize; + + var serialized = serializeObject(ex, depth); + + if (jsonSize(stringify(serialized)) > maxSize) { + return serializeException(ex, depth - 1); + } + + return serialized; +} + +function serializeKeysForMessage(keys, maxLength) { + if (typeof keys === 'number' || typeof keys === 'string') return keys.toString(); + if (!Array.isArray(keys)) return ''; + + keys = keys.filter(function(key) { + return typeof key === 'string'; + }); + if (keys.length === 0) return '[object has no keys]'; + + maxLength = typeof maxLength !== 'number' ? MAX_SERIALIZE_KEYS_LENGTH : maxLength; + if (keys[0].length >= maxLength) return keys[0]; + + for (var usedKeys = keys.length; usedKeys > 0; usedKeys--) { + var serialized = keys.slice(0, usedKeys).join(', '); + if (serialized.length > maxLength) continue; + if (usedKeys === keys.length) return serialized; + return serialized + '\u2026'; + } + + return ''; +} + +function sanitize(input, sanitizeKeys) { + if (!isArray(sanitizeKeys) || (isArray(sanitizeKeys) && sanitizeKeys.length === 0)) + return input; + + var sanitizeRegExp = joinRegExp(sanitizeKeys); + var sanitizeMask = '********'; + var safeInput; + + try { + safeInput = JSON.parse(stringify(input)); + } catch (o_O) { + return input; + } + + function sanitizeWorker(workerInput) { + if (isArray(workerInput)) { + return workerInput.map(function(val) { + return sanitizeWorker(val); + }); + } + + if (isPlainObject(workerInput)) { + return Object.keys(workerInput).reduce(function(acc, k) { + if (sanitizeRegExp.test(k)) { + acc[k] = sanitizeMask; + } else { + acc[k] = sanitizeWorker(workerInput[k]); + } + return acc; + }, {}); + } + + return workerInput; + } + + return sanitizeWorker(safeInput); +} + +module.exports = { + isObject: isObject, + isError: isError, + isErrorEvent: isErrorEvent, + isDOMError: isDOMError, + isDOMException: isDOMException, + isUndefined: isUndefined, + isFunction: isFunction, + isPlainObject: isPlainObject, + isString: isString, + isArray: isArray, + isEmptyObject: isEmptyObject, + supportsErrorEvent: supportsErrorEvent, + supportsDOMError: supportsDOMError, + supportsDOMException: supportsDOMException, + supportsFetch: supportsFetch, + supportsReferrerPolicy: supportsReferrerPolicy, + supportsPromiseRejectionEvent: supportsPromiseRejectionEvent, + wrappedCallback: wrappedCallback, + each: each, + objectMerge: objectMerge, + truncate: truncate, + objectFrozen: objectFrozen, + hasKey: hasKey, + joinRegExp: joinRegExp, + urlencode: urlencode, + uuid4: uuid4, + htmlTreeAsString: htmlTreeAsString, + htmlElementAsString: htmlElementAsString, + isSameException: isSameException, + isSameStacktrace: isSameStacktrace, + parseUrl: parseUrl, + fill: fill, + safeJoin: safeJoin, + serializeException: serializeException, + serializeKeysForMessage: serializeKeysForMessage, + sanitize: sanitize +}; + +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"10":10}],9:[function(_dereq_,module,exports){ +(function (global){ +var utils = _dereq_(8); + +/* + TraceKit - Cross brower stack traces + + This was originally forked from github.com/occ/TraceKit, but has since been + largely re-written and is now maintained as part of raven-js. Tests for + this are in test/vendor. + + MIT license +*/ + +var TraceKit = { + collectWindowErrors: true, + debug: false +}; + +// This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) +var _window = + typeof window !== 'undefined' + ? window + : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; + +// global reference to slice +var _slice = [].slice; +var UNKNOWN_FUNCTION = '?'; + +// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error#Error_types +var ERROR_TYPES_RE = /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/; + +function getLocationHref() { + if (typeof document === 'undefined' || document.location == null) return ''; + return document.location.href; +} + +function getLocationOrigin() { + if (typeof document === 'undefined' || document.location == null) return ''; + + // Oh dear IE10... + if (!document.location.origin) { + document.location.origin = + document.location.protocol + + '//' + + document.location.hostname + + (document.location.port ? ':' + document.location.port : ''); + } + + return document.location.origin; +} + +/** + * TraceKit.report: cross-browser processing of unhandled exceptions + * + * Syntax: + * TraceKit.report.subscribe(function(stackInfo) { ... }) + * TraceKit.report.unsubscribe(function(stackInfo) { ... }) + * TraceKit.report(exception) + * try { ...code... } catch(ex) { TraceKit.report(ex); } + * + * Supports: + * - Firefox: full stack trace with line numbers, plus column number + * on top frame; column number is not guaranteed + * - Opera: full stack trace with line and column numbers + * - Chrome: full stack trace with line and column numbers + * - Safari: line and column number for the top frame only; some frames + * may be missing, and column number is not guaranteed + * - IE: line and column number for the top frame only; some frames + * may be missing, and column number is not guaranteed + * + * In theory, TraceKit should work on all of the following versions: + * - IE5.5+ (only 8.0 tested) + * - Firefox 0.9+ (only 3.5+ tested) + * - Opera 7+ (only 10.50 tested; versions 9 and earlier may require + * Exceptions Have Stacktrace to be enabled in opera:config) + * - Safari 3+ (only 4+ tested) + * - Chrome 1+ (only 5+ tested) + * - Konqueror 3.5+ (untested) + * + * Requires TraceKit.computeStackTrace. + * + * Tries to catch all unhandled exceptions and report them to the + * subscribed handlers. Please note that TraceKit.report will rethrow the + * exception. This is REQUIRED in order to get a useful stack trace in IE. + * If the exception does not reach the top of the browser, you will only + * get a stack trace from the point where TraceKit.report was called. + * + * Handlers receive a stackInfo object as described in the + * TraceKit.computeStackTrace docs. + */ +TraceKit.report = (function reportModuleWrapper() { + var handlers = [], + lastArgs = null, + lastException = null, + lastExceptionStack = null; + + /** + * Add a crash handler. + * @param {Function} handler + */ + function subscribe(handler) { + installGlobalHandler(); + handlers.push(handler); + } + + /** + * Remove a crash handler. + * @param {Function} handler + */ + function unsubscribe(handler) { + for (var i = handlers.length - 1; i >= 0; --i) { + if (handlers[i] === handler) { + handlers.splice(i, 1); + } + } + } + + /** + * Remove all crash handlers. + */ + function unsubscribeAll() { + uninstallGlobalHandler(); + handlers = []; + } + + /** + * Dispatch stack information to all handlers. + * @param {Object.} stack + */ + function notifyHandlers(stack, isWindowError) { + var exception = null; + if (isWindowError && !TraceKit.collectWindowErrors) { + return; + } + for (var i in handlers) { + if (handlers.hasOwnProperty(i)) { + try { + handlers[i].apply(null, [stack].concat(_slice.call(arguments, 2))); + } catch (inner) { + exception = inner; + } + } + } + + if (exception) { + throw exception; + } + } + + var _oldOnerrorHandler, _onErrorHandlerInstalled; + + /** + * Ensures all global unhandled exceptions are recorded. + * Supported by Gecko and IE. + * @param {string} msg Error message. + * @param {string} url URL of script that generated the exception. + * @param {(number|string)} lineNo The line number at which the error + * occurred. + * @param {?(number|string)} colNo The column number at which the error + * occurred. + * @param {?Error} ex The actual Error object. + */ + function traceKitWindowOnError(msg, url, lineNo, colNo, ex) { + var stack = null; + // If 'ex' is ErrorEvent, get real Error from inside + var exception = utils.isErrorEvent(ex) ? ex.error : ex; + // If 'msg' is ErrorEvent, get real message from inside + var message = utils.isErrorEvent(msg) ? msg.message : msg; + + if (lastExceptionStack) { + TraceKit.computeStackTrace.augmentStackTraceWithInitialElement( + lastExceptionStack, + url, + lineNo, + message + ); + processLastException(); + } else if (exception && utils.isError(exception)) { + // non-string `exception` arg; attempt to extract stack trace + + // New chrome and blink send along a real error object + // Let's just report that like a normal error. + // See: https://mikewest.org/2013/08/debugging-runtime-errors-with-window-onerror + stack = TraceKit.computeStackTrace(exception); + notifyHandlers(stack, true); + } else { + var location = { + url: url, + line: lineNo, + column: colNo + }; + + var name = undefined; + var groups; + + if ({}.toString.call(message) === '[object String]') { + var groups = message.match(ERROR_TYPES_RE); + if (groups) { + name = groups[1]; + message = groups[2]; + } + } + + location.func = UNKNOWN_FUNCTION; + + stack = { + name: name, + message: message, + url: getLocationHref(), + stack: [location] + }; + notifyHandlers(stack, true); + } + + if (_oldOnerrorHandler) { + return _oldOnerrorHandler.apply(this, arguments); + } + + return false; + } + + function installGlobalHandler() { + if (_onErrorHandlerInstalled) { + return; + } + _oldOnerrorHandler = _window.onerror; + _window.onerror = traceKitWindowOnError; + _onErrorHandlerInstalled = true; + } + + function uninstallGlobalHandler() { + if (!_onErrorHandlerInstalled) { + return; + } + _window.onerror = _oldOnerrorHandler; + _onErrorHandlerInstalled = false; + _oldOnerrorHandler = undefined; + } + + function processLastException() { + var _lastExceptionStack = lastExceptionStack, + _lastArgs = lastArgs; + lastArgs = null; + lastExceptionStack = null; + lastException = null; + notifyHandlers.apply(null, [_lastExceptionStack, false].concat(_lastArgs)); + } + + /** + * Reports an unhandled Error to TraceKit. + * @param {Error} ex + * @param {?boolean} rethrow If false, do not re-throw the exception. + * Only used for window.onerror to not cause an infinite loop of + * rethrowing. + */ + function report(ex, rethrow) { + var args = _slice.call(arguments, 1); + if (lastExceptionStack) { + if (lastException === ex) { + return; // already caught by an inner catch block, ignore + } else { + processLastException(); + } + } + + var stack = TraceKit.computeStackTrace(ex); + lastExceptionStack = stack; + lastException = ex; + lastArgs = args; + + // If the stack trace is incomplete, wait for 2 seconds for + // slow slow IE to see if onerror occurs or not before reporting + // this exception; otherwise, we will end up with an incomplete + // stack trace + setTimeout(function() { + if (lastException === ex) { + processLastException(); + } + }, stack.incomplete ? 2000 : 0); + + if (rethrow !== false) { + throw ex; // re-throw to propagate to the top level (and cause window.onerror) + } + } + + report.subscribe = subscribe; + report.unsubscribe = unsubscribe; + report.uninstall = unsubscribeAll; + return report; +})(); + +/** + * TraceKit.computeStackTrace: cross-browser stack traces in JavaScript + * + * Syntax: + * s = TraceKit.computeStackTrace(exception) // consider using TraceKit.report instead (see below) + * Returns: + * s.name - exception name + * s.message - exception message + * s.stack[i].url - JavaScript or HTML file URL + * s.stack[i].func - function name, or empty for anonymous functions (if guessing did not work) + * s.stack[i].args - arguments passed to the function, if known + * s.stack[i].line - line number, if known + * s.stack[i].column - column number, if known + * + * Supports: + * - Firefox: full stack trace with line numbers and unreliable column + * number on top frame + * - Opera 10: full stack trace with line and column numbers + * - Opera 9-: full stack trace with line numbers + * - Chrome: full stack trace with line and column numbers + * - Safari: line and column number for the topmost stacktrace element + * only + * - IE: no line numbers whatsoever + * + * Tries to guess names of anonymous functions by looking for assignments + * in the source code. In IE and Safari, we have to guess source file names + * by searching for function bodies inside all page scripts. This will not + * work for scripts that are loaded cross-domain. + * Here be dragons: some function names may be guessed incorrectly, and + * duplicate functions may be mismatched. + * + * TraceKit.computeStackTrace should only be used for tracing purposes. + * Logging of unhandled exceptions should be done with TraceKit.report, + * which builds on top of TraceKit.computeStackTrace and provides better + * IE support by utilizing the window.onerror event to retrieve information + * about the top of the stack. + * + * Note: In IE and Safari, no stack trace is recorded on the Error object, + * so computeStackTrace instead walks its *own* chain of callers. + * This means that: + * * in Safari, some methods may be missing from the stack trace; + * * in IE, the topmost function in the stack trace will always be the + * caller of computeStackTrace. + * + * This is okay for tracing (because you are likely to be calling + * computeStackTrace from the function you want to be the topmost element + * of the stack trace anyway), but not okay for logging unhandled + * exceptions (because your catch block will likely be far away from the + * inner function that actually caused the exception). + * + */ +TraceKit.computeStackTrace = (function computeStackTraceWrapper() { + // Contents of Exception in various browsers. + // + // SAFARI: + // ex.message = Can't find variable: qq + // ex.line = 59 + // ex.sourceId = 580238192 + // ex.sourceURL = http://... + // ex.expressionBeginOffset = 96 + // ex.expressionCaretOffset = 98 + // ex.expressionEndOffset = 98 + // ex.name = ReferenceError + // + // FIREFOX: + // ex.message = qq is not defined + // ex.fileName = http://... + // ex.lineNumber = 59 + // ex.columnNumber = 69 + // ex.stack = ...stack trace... (see the example below) + // ex.name = ReferenceError + // + // CHROME: + // ex.message = qq is not defined + // ex.name = ReferenceError + // ex.type = not_defined + // ex.arguments = ['aa'] + // ex.stack = ...stack trace... + // + // INTERNET EXPLORER: + // ex.message = ... + // ex.name = ReferenceError + // + // OPERA: + // ex.message = ...message... (see the example below) + // ex.name = ReferenceError + // ex.opera#sourceloc = 11 (pretty much useless, duplicates the info in ex.message) + // ex.stacktrace = n/a; see 'opera:config#UserPrefs|Exceptions Have Stacktrace' + + /** + * Computes stack trace information from the stack property. + * Chrome and Gecko use this property. + * @param {Error} ex + * @return {?Object.} Stack trace information. + */ + function computeStackTraceFromStackProp(ex) { + if (typeof ex.stack === 'undefined' || !ex.stack) return; + + var chrome = /^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i; + var winjs = /^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i; + // NOTE: blob urls are now supposed to always have an origin, therefore it's format + // which is `blob:http://url/path/with-some-uuid`, is matched by `blob.*?:\/` as well + var gecko = /^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i; + // Used to additionally parse URL/line/column from eval frames + var geckoEval = /(\S+) line (\d+)(?: > eval line \d+)* > eval/i; + var chromeEval = /\((\S*)(?::(\d+))(?::(\d+))\)/; + var lines = ex.stack.split('\n'); + var stack = []; + var submatch; + var parts; + var element; + var reference = /^(.*) is undefined$/.exec(ex.message); + + for (var i = 0, j = lines.length; i < j; ++i) { + if ((parts = chrome.exec(lines[i]))) { + var isNative = parts[2] && parts[2].indexOf('native') === 0; // start of line + var isEval = parts[2] && parts[2].indexOf('eval') === 0; // start of line + if (isEval && (submatch = chromeEval.exec(parts[2]))) { + // throw out eval line/column and use top-most line/column number + parts[2] = submatch[1]; // url + parts[3] = submatch[2]; // line + parts[4] = submatch[3]; // column + } + element = { + url: !isNative ? parts[2] : null, + func: parts[1] || UNKNOWN_FUNCTION, + args: isNative ? [parts[2]] : [], + line: parts[3] ? +parts[3] : null, + column: parts[4] ? +parts[4] : null + }; + } else if ((parts = winjs.exec(lines[i]))) { + element = { + url: parts[2], + func: parts[1] || UNKNOWN_FUNCTION, + args: [], + line: +parts[3], + column: parts[4] ? +parts[4] : null + }; + } else if ((parts = gecko.exec(lines[i]))) { + var isEval = parts[3] && parts[3].indexOf(' > eval') > -1; + if (isEval && (submatch = geckoEval.exec(parts[3]))) { + // throw out eval line/column and use top-most line number + parts[3] = submatch[1]; + parts[4] = submatch[2]; + parts[5] = null; // no column when eval + } else if (i === 0 && !parts[5] && typeof ex.columnNumber !== 'undefined') { + // FireFox uses this awesome columnNumber property for its top frame + // Also note, Firefox's column number is 0-based and everything else expects 1-based, + // so adding 1 + // NOTE: this hack doesn't work if top-most frame is eval + stack[0].column = ex.columnNumber + 1; + } + element = { + url: parts[3], + func: parts[1] || UNKNOWN_FUNCTION, + args: parts[2] ? parts[2].split(',') : [], + line: parts[4] ? +parts[4] : null, + column: parts[5] ? +parts[5] : null + }; + } else { + continue; + } + + if (!element.func && element.line) { + element.func = UNKNOWN_FUNCTION; + } + + if (element.url && element.url.substr(0, 5) === 'blob:') { + // Special case for handling JavaScript loaded into a blob. + // We use a synchronous AJAX request here as a blob is already in + // memory - it's not making a network request. This will generate a warning + // in the browser console, but there has already been an error so that's not + // that much of an issue. + var xhr = new XMLHttpRequest(); + xhr.open('GET', element.url, false); + xhr.send(null); + + // If we failed to download the source, skip this patch + if (xhr.status === 200) { + var source = xhr.responseText || ''; + + // We trim the source down to the last 300 characters as sourceMappingURL is always at the end of the file. + // Why 300? To be in line with: https://github.com/getsentry/sentry/blob/4af29e8f2350e20c28a6933354e4f42437b4ba42/src/sentry/lang/javascript/processor.py#L164-L175 + source = source.slice(-300); + + // Now we dig out the source map URL + var sourceMaps = source.match(/\/\/# sourceMappingURL=(.*)$/); + + // If we don't find a source map comment or we find more than one, continue on to the next element. + if (sourceMaps) { + var sourceMapAddress = sourceMaps[1]; + + // Now we check to see if it's a relative URL. + // If it is, convert it to an absolute one. + if (sourceMapAddress.charAt(0) === '~') { + sourceMapAddress = getLocationOrigin() + sourceMapAddress.slice(1); + } + + // Now we strip the '.map' off of the end of the URL and update the + // element so that Sentry can match the map to the blob. + element.url = sourceMapAddress.slice(0, -4); + } + } + } + + stack.push(element); + } + + if (!stack.length) { + return null; + } + + return { + name: ex.name, + message: ex.message, + url: getLocationHref(), + stack: stack + }; + } + + /** + * Adds information about the first frame to incomplete stack traces. + * Safari and IE require this to get complete data on the first frame. + * @param {Object.} stackInfo Stack trace information from + * one of the compute* methods. + * @param {string} url The URL of the script that caused an error. + * @param {(number|string)} lineNo The line number of the script that + * caused an error. + * @param {string=} message The error generated by the browser, which + * hopefully contains the name of the object that caused the error. + * @return {boolean} Whether or not the stack information was + * augmented. + */ + function augmentStackTraceWithInitialElement(stackInfo, url, lineNo, message) { + var initial = { + url: url, + line: lineNo + }; + + if (initial.url && initial.line) { + stackInfo.incomplete = false; + + if (!initial.func) { + initial.func = UNKNOWN_FUNCTION; + } + + if (stackInfo.stack.length > 0) { + if (stackInfo.stack[0].url === initial.url) { + if (stackInfo.stack[0].line === initial.line) { + return false; // already in stack trace + } else if ( + !stackInfo.stack[0].line && + stackInfo.stack[0].func === initial.func + ) { + stackInfo.stack[0].line = initial.line; + return false; + } + } + } + + stackInfo.stack.unshift(initial); + stackInfo.partial = true; + return true; + } else { + stackInfo.incomplete = true; + } + + return false; + } + + /** + * Computes stack trace information by walking the arguments.caller + * chain at the time the exception occurred. This will cause earlier + * frames to be missed but is the only way to get any stack trace in + * Safari and IE. The top frame is restored by + * {@link augmentStackTraceWithInitialElement}. + * @param {Error} ex + * @return {?Object.} Stack trace information. + */ + function computeStackTraceByWalkingCallerChain(ex, depth) { + var functionName = /function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i, + stack = [], + funcs = {}, + recursion = false, + parts, + item, + source; + + for ( + var curr = computeStackTraceByWalkingCallerChain.caller; + curr && !recursion; + curr = curr.caller + ) { + if (curr === computeStackTrace || curr === TraceKit.report) { + // console.log('skipping internal function'); + continue; + } + + item = { + url: null, + func: UNKNOWN_FUNCTION, + line: null, + column: null + }; + + if (curr.name) { + item.func = curr.name; + } else if ((parts = functionName.exec(curr.toString()))) { + item.func = parts[1]; + } + + if (typeof item.func === 'undefined') { + try { + item.func = parts.input.substring(0, parts.input.indexOf('{')); + } catch (e) {} + } + + if (funcs['' + curr]) { + recursion = true; + } else { + funcs['' + curr] = true; + } + + stack.push(item); + } + + if (depth) { + // console.log('depth is ' + depth); + // console.log('stack is ' + stack.length); + stack.splice(0, depth); + } + + var result = { + name: ex.name, + message: ex.message, + url: getLocationHref(), + stack: stack + }; + augmentStackTraceWithInitialElement( + result, + ex.sourceURL || ex.fileName, + ex.line || ex.lineNumber, + ex.message || ex.description + ); + return result; + } + + /** + * Computes a stack trace for an exception. + * @param {Error} ex + * @param {(string|number)=} depth + */ + function computeStackTrace(ex, depth) { + var stack = null; + depth = depth == null ? 0 : +depth; + + try { + stack = computeStackTraceFromStackProp(ex); + if (stack) { + return stack; + } + } catch (e) { + if (TraceKit.debug) { + throw e; + } + } + + try { + stack = computeStackTraceByWalkingCallerChain(ex, depth + 1); + if (stack) { + return stack; + } + } catch (e) { + if (TraceKit.debug) { + throw e; + } + } + return { + name: ex.name, + message: ex.message, + url: getLocationHref() + }; + } + + computeStackTrace.augmentStackTraceWithInitialElement = augmentStackTraceWithInitialElement; + computeStackTrace.computeStackTraceFromStackProp = computeStackTraceFromStackProp; + + return computeStackTrace; +})(); + +module.exports = TraceKit; + +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"8":8}],10:[function(_dereq_,module,exports){ +/* + json-stringify-safe + Like JSON.stringify, but doesn't throw on circular references. + + Originally forked from https://github.com/isaacs/json-stringify-safe + version 5.0.1 on 3/8/2017 and modified to handle Errors serialization + and IE8 compatibility. Tests for this are in test/vendor. + + ISC license: https://github.com/isaacs/json-stringify-safe/blob/master/LICENSE +*/ + +exports = module.exports = stringify; +exports.getSerialize = serializer; + +function indexOf(haystack, needle) { + for (var i = 0; i < haystack.length; ++i) { + if (haystack[i] === needle) return i; + } + return -1; +} + +function stringify(obj, replacer, spaces, cycleReplacer) { + return JSON.stringify(obj, serializer(replacer, cycleReplacer), spaces); +} + +// https://github.com/ftlabs/js-abbreviate/blob/fa709e5f139e7770a71827b1893f22418097fbda/index.js#L95-L106 +function stringifyError(value) { + var err = { + // These properties are implemented as magical getters and don't show up in for in + stack: value.stack, + message: value.message, + name: value.name + }; + + for (var i in value) { + if (Object.prototype.hasOwnProperty.call(value, i)) { + err[i] = value[i]; + } + } + + return err; +} + +function serializer(replacer, cycleReplacer) { + var stack = []; + var keys = []; + + if (cycleReplacer == null) { + cycleReplacer = function(key, value) { + if (stack[0] === value) { + return '[Circular ~]'; + } + return '[Circular ~.' + keys.slice(0, indexOf(stack, value)).join('.') + ']'; + }; + } + + return function(key, value) { + if (stack.length > 0) { + var thisPos = indexOf(stack, this); + ~thisPos ? stack.splice(thisPos + 1) : stack.push(this); + ~thisPos ? keys.splice(thisPos, Infinity, key) : keys.push(key); + + if (~indexOf(stack, value)) { + value = cycleReplacer.call(this, key, value); + } + } else { + stack.push(value); + } + + return replacer == null + ? value instanceof Error ? stringifyError(value) : value + : replacer.call(this, key, value); + }; +} + +},{}],11:[function(_dereq_,module,exports){ +/* + * JavaScript MD5 + * https://github.com/blueimp/JavaScript-MD5 + * + * Copyright 2011, Sebastian Tschan + * https://blueimp.net + * + * Licensed under the MIT license: + * https://opensource.org/licenses/MIT + * + * Based on + * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message + * Digest Algorithm, as defined in RFC 1321. + * Version 2.2 Copyright (C) Paul Johnston 1999 - 2009 + * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet + * Distributed under the BSD License + * See http://pajhome.org.uk/crypt/md5 for more info. + */ + +/* +* Add integers, wrapping at 2^32. This uses 16-bit operations internally +* to work around bugs in some JS interpreters. +*/ +function safeAdd(x, y) { + var lsw = (x & 0xffff) + (y & 0xffff); + var msw = (x >> 16) + (y >> 16) + (lsw >> 16); + return (msw << 16) | (lsw & 0xffff); +} + +/* +* Bitwise rotate a 32-bit number to the left. +*/ +function bitRotateLeft(num, cnt) { + return (num << cnt) | (num >>> (32 - cnt)); +} + +/* +* These functions implement the four basic operations the algorithm uses. +*/ +function md5cmn(q, a, b, x, s, t) { + return safeAdd(bitRotateLeft(safeAdd(safeAdd(a, q), safeAdd(x, t)), s), b); +} +function md5ff(a, b, c, d, x, s, t) { + return md5cmn((b & c) | (~b & d), a, b, x, s, t); +} +function md5gg(a, b, c, d, x, s, t) { + return md5cmn((b & d) | (c & ~d), a, b, x, s, t); +} +function md5hh(a, b, c, d, x, s, t) { + return md5cmn(b ^ c ^ d, a, b, x, s, t); +} +function md5ii(a, b, c, d, x, s, t) { + return md5cmn(c ^ (b | ~d), a, b, x, s, t); +} + +/* +* Calculate the MD5 of an array of little-endian words, and a bit length. +*/ +function binlMD5(x, len) { + /* append padding */ + x[len >> 5] |= 0x80 << (len % 32); + x[(((len + 64) >>> 9) << 4) + 14] = len; + + var i; + var olda; + var oldb; + var oldc; + var oldd; + var a = 1732584193; + var b = -271733879; + var c = -1732584194; + var d = 271733878; + + for (i = 0; i < x.length; i += 16) { + olda = a; + oldb = b; + oldc = c; + oldd = d; + + a = md5ff(a, b, c, d, x[i], 7, -680876936); + d = md5ff(d, a, b, c, x[i + 1], 12, -389564586); + c = md5ff(c, d, a, b, x[i + 2], 17, 606105819); + b = md5ff(b, c, d, a, x[i + 3], 22, -1044525330); + a = md5ff(a, b, c, d, x[i + 4], 7, -176418897); + d = md5ff(d, a, b, c, x[i + 5], 12, 1200080426); + c = md5ff(c, d, a, b, x[i + 6], 17, -1473231341); + b = md5ff(b, c, d, a, x[i + 7], 22, -45705983); + a = md5ff(a, b, c, d, x[i + 8], 7, 1770035416); + d = md5ff(d, a, b, c, x[i + 9], 12, -1958414417); + c = md5ff(c, d, a, b, x[i + 10], 17, -42063); + b = md5ff(b, c, d, a, x[i + 11], 22, -1990404162); + a = md5ff(a, b, c, d, x[i + 12], 7, 1804603682); + d = md5ff(d, a, b, c, x[i + 13], 12, -40341101); + c = md5ff(c, d, a, b, x[i + 14], 17, -1502002290); + b = md5ff(b, c, d, a, x[i + 15], 22, 1236535329); + + a = md5gg(a, b, c, d, x[i + 1], 5, -165796510); + d = md5gg(d, a, b, c, x[i + 6], 9, -1069501632); + c = md5gg(c, d, a, b, x[i + 11], 14, 643717713); + b = md5gg(b, c, d, a, x[i], 20, -373897302); + a = md5gg(a, b, c, d, x[i + 5], 5, -701558691); + d = md5gg(d, a, b, c, x[i + 10], 9, 38016083); + c = md5gg(c, d, a, b, x[i + 15], 14, -660478335); + b = md5gg(b, c, d, a, x[i + 4], 20, -405537848); + a = md5gg(a, b, c, d, x[i + 9], 5, 568446438); + d = md5gg(d, a, b, c, x[i + 14], 9, -1019803690); + c = md5gg(c, d, a, b, x[i + 3], 14, -187363961); + b = md5gg(b, c, d, a, x[i + 8], 20, 1163531501); + a = md5gg(a, b, c, d, x[i + 13], 5, -1444681467); + d = md5gg(d, a, b, c, x[i + 2], 9, -51403784); + c = md5gg(c, d, a, b, x[i + 7], 14, 1735328473); + b = md5gg(b, c, d, a, x[i + 12], 20, -1926607734); + + a = md5hh(a, b, c, d, x[i + 5], 4, -378558); + d = md5hh(d, a, b, c, x[i + 8], 11, -2022574463); + c = md5hh(c, d, a, b, x[i + 11], 16, 1839030562); + b = md5hh(b, c, d, a, x[i + 14], 23, -35309556); + a = md5hh(a, b, c, d, x[i + 1], 4, -1530992060); + d = md5hh(d, a, b, c, x[i + 4], 11, 1272893353); + c = md5hh(c, d, a, b, x[i + 7], 16, -155497632); + b = md5hh(b, c, d, a, x[i + 10], 23, -1094730640); + a = md5hh(a, b, c, d, x[i + 13], 4, 681279174); + d = md5hh(d, a, b, c, x[i], 11, -358537222); + c = md5hh(c, d, a, b, x[i + 3], 16, -722521979); + b = md5hh(b, c, d, a, x[i + 6], 23, 76029189); + a = md5hh(a, b, c, d, x[i + 9], 4, -640364487); + d = md5hh(d, a, b, c, x[i + 12], 11, -421815835); + c = md5hh(c, d, a, b, x[i + 15], 16, 530742520); + b = md5hh(b, c, d, a, x[i + 2], 23, -995338651); + + a = md5ii(a, b, c, d, x[i], 6, -198630844); + d = md5ii(d, a, b, c, x[i + 7], 10, 1126891415); + c = md5ii(c, d, a, b, x[i + 14], 15, -1416354905); + b = md5ii(b, c, d, a, x[i + 5], 21, -57434055); + a = md5ii(a, b, c, d, x[i + 12], 6, 1700485571); + d = md5ii(d, a, b, c, x[i + 3], 10, -1894986606); + c = md5ii(c, d, a, b, x[i + 10], 15, -1051523); + b = md5ii(b, c, d, a, x[i + 1], 21, -2054922799); + a = md5ii(a, b, c, d, x[i + 8], 6, 1873313359); + d = md5ii(d, a, b, c, x[i + 15], 10, -30611744); + c = md5ii(c, d, a, b, x[i + 6], 15, -1560198380); + b = md5ii(b, c, d, a, x[i + 13], 21, 1309151649); + a = md5ii(a, b, c, d, x[i + 4], 6, -145523070); + d = md5ii(d, a, b, c, x[i + 11], 10, -1120210379); + c = md5ii(c, d, a, b, x[i + 2], 15, 718787259); + b = md5ii(b, c, d, a, x[i + 9], 21, -343485551); + + a = safeAdd(a, olda); + b = safeAdd(b, oldb); + c = safeAdd(c, oldc); + d = safeAdd(d, oldd); + } + return [a, b, c, d]; +} + +/* +* Convert an array of little-endian words to a string +*/ +function binl2rstr(input) { + var i; + var output = ''; + var length32 = input.length * 32; + for (i = 0; i < length32; i += 8) { + output += String.fromCharCode((input[i >> 5] >>> (i % 32)) & 0xff); + } + return output; +} + +/* +* Convert a raw string to an array of little-endian words +* Characters >255 have their high-byte silently ignored. +*/ +function rstr2binl(input) { + var i; + var output = []; + output[(input.length >> 2) - 1] = undefined; + for (i = 0; i < output.length; i += 1) { + output[i] = 0; + } + var length8 = input.length * 8; + for (i = 0; i < length8; i += 8) { + output[i >> 5] |= (input.charCodeAt(i / 8) & 0xff) << (i % 32); + } + return output; +} + +/* +* Calculate the MD5 of a raw string +*/ +function rstrMD5(s) { + return binl2rstr(binlMD5(rstr2binl(s), s.length * 8)); +} + +/* +* Calculate the HMAC-MD5, of a key and some data (raw strings) +*/ +function rstrHMACMD5(key, data) { + var i; + var bkey = rstr2binl(key); + var ipad = []; + var opad = []; + var hash; + ipad[15] = opad[15] = undefined; + if (bkey.length > 16) { + bkey = binlMD5(bkey, key.length * 8); + } + for (i = 0; i < 16; i += 1) { + ipad[i] = bkey[i] ^ 0x36363636; + opad[i] = bkey[i] ^ 0x5c5c5c5c; + } + hash = binlMD5(ipad.concat(rstr2binl(data)), 512 + data.length * 8); + return binl2rstr(binlMD5(opad.concat(hash), 512 + 128)); +} + +/* +* Convert a raw string to a hex string +*/ +function rstr2hex(input) { + var hexTab = '0123456789abcdef'; + var output = ''; + var x; + var i; + for (i = 0; i < input.length; i += 1) { + x = input.charCodeAt(i); + output += hexTab.charAt((x >>> 4) & 0x0f) + hexTab.charAt(x & 0x0f); + } + return output; +} + +/* +* Encode a string as utf-8 +*/ +function str2rstrUTF8(input) { + return unescape(encodeURIComponent(input)); +} + +/* +* Take string arguments and return either raw or hex encoded strings +*/ +function rawMD5(s) { + return rstrMD5(str2rstrUTF8(s)); +} +function hexMD5(s) { + return rstr2hex(rawMD5(s)); +} +function rawHMACMD5(k, d) { + return rstrHMACMD5(str2rstrUTF8(k), str2rstrUTF8(d)); +} +function hexHMACMD5(k, d) { + return rstr2hex(rawHMACMD5(k, d)); +} + +function md5(string, key, raw) { + if (!key) { + if (!raw) { + return hexMD5(string); + } + return rawMD5(string); + } + if (!raw) { + return hexHMACMD5(key, string); + } + return rawHMACMD5(key, string); +} + +module.exports = md5; + +},{}]},{},[7,1,2,3])(7) +}); \ No newline at end of file diff --git a/packages/raven-js/dist/console,ember,vue/raven.min.js b/packages/raven-js/dist/console,ember,vue/raven.min.js new file mode 100644 index 000000000000..c4b272ee232c --- /dev/null +++ b/packages/raven-js/dist/console,ember,vue/raven.min.js @@ -0,0 +1,4 @@ +/*! Raven.js 3.25.2 (30b6d4e) | github.com/getsentry/raven-js */ +!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.Raven=a()}}(function(){return function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};b[g][0].call(k.exports,function(a){var c=b[g][1][a];return e(c?c:a)},k,k.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;g":"anonymous component")+(a._isVue&&a.$options.__file?" at "+a.$options.__file:"")}function e(a,b){if(b=b||window.Vue,b&&b.config){var c=b.config.errorHandler;b.config.errorHandler=function(b,e,f){var g={};"[object Object]"===Object.prototype.toString.call(e)&&(g.componentName=d(e),g.propsData=e.$options.propsData),"undefined"!=typeof f&&(g.lifecycleHook=f),a.captureException(b,{extra:g}),"function"==typeof c&&c.call(this,b,e,f)}}}b.exports=e,a(7).addPlugin(b.exports)},{7:7}],4:[function(a,b,c){function d(a){this.name="RavenConfigError",this.message=a}d.prototype=new Error,d.prototype.constructor=d,b.exports=d},{}],5:[function(a,b,c){var d=a(8),e=function(a,b,c){var e=a[b],f=a;if(b in a){var g="warn"===b?"warning":b;a[b]=function(){var a=[].slice.call(arguments),h=d.safeJoin(a," "),i={level:g,logger:"console",extra:{arguments:a}};"assert"===b?a[0]===!1&&(h="Assertion failed: "+(d.safeJoin(a.slice(1)," ")||"console.assert"),i.extra.arguments=a.slice(1),c&&c(h,i)):c&&c(h,i),e&&Function.prototype.apply.call(e,f,a)}}};b.exports={wrapMethod:e}},{8:8}],6:[function(a,b,c){(function(c){function d(){return+new Date}function e(a,b){return s(b)?function(c){return b(c,a)}:b}function f(){this.a=!("object"!=typeof JSON||!JSON.stringify),this.b=!r(S),this.c=!r(T),this.d=null,this.e=null,this.f=null,this.g=null,this.h=null,this.i=null,this.j={},this.k={release:R.SENTRY_RELEASE&&R.SENTRY_RELEASE.id,logger:"javascript",ignoreErrors:[],ignoreUrls:[],whitelistUrls:[],includePaths:[],headers:null,collectWindowErrors:!0,captureUnhandledRejections:!0,maxMessageLength:0,maxUrlLength:250,stackTraceLimit:50,autoBreadcrumbs:!0,instrument:!0,sampleRate:1,sanitizeKeys:[]},this.l={method:"POST",keepalive:!0,referrerPolicy:K()?"origin":""},this.m=0,this.n=!1,this.o=Error.stackTraceLimit,this.p=R.console||{},this.q={},this.r=[],this.s=d(),this.t=[],this.u=[],this.v=null,this.w=R.location,this.x=this.w&&this.w.href,this.y();for(var a in this.p)this.q[a]=this.p[a]}var g=a(9),h=a(10),i=a(11),j=a(4),k=a(8),l=k.isErrorEvent,m=k.isDOMError,n=k.isDOMException,o=k.isError,p=k.isObject,q=k.isPlainObject,r=k.isUndefined,s=k.isFunction,t=k.isString,u=k.isArray,v=k.isEmptyObject,w=k.each,x=k.objectMerge,y=k.truncate,z=k.objectFrozen,A=k.hasKey,B=k.joinRegExp,C=k.urlencode,D=k.uuid4,E=k.htmlTreeAsString,F=k.isSameException,G=k.isSameStacktrace,H=k.parseUrl,I=k.fill,J=k.supportsFetch,K=k.supportsReferrerPolicy,L=k.serializeKeysForMessage,M=k.serializeException,N=k.sanitize,O=a(5).wrapMethod,P="source protocol user pass host port path".split(" "),Q=/^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/,R="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},S=R.document,T=R.navigator;f.prototype={VERSION:"3.25.2",debug:!1,TraceKit:g,config:function(a,b){var c=this;if(c.g)return this.z("error","Error: Raven has already been configured"),c;if(!a)return c;var d=c.k;b&&w(b,function(a,b){"tags"===a||"extra"===a||"user"===a?c.j[a]=b:d[a]=b}),c.setDSN(a),d.ignoreErrors.push(/^Script error\.?$/),d.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/),d.ignoreErrors=B(d.ignoreErrors),d.ignoreUrls=!!d.ignoreUrls.length&&B(d.ignoreUrls),d.whitelistUrls=!!d.whitelistUrls.length&&B(d.whitelistUrls),d.includePaths=B(d.includePaths),d.maxBreadcrumbs=Math.max(0,Math.min(d.maxBreadcrumbs||100,100));var e={xhr:!0,console:!0,dom:!0,location:!0,sentry:!0},f=d.autoBreadcrumbs;"[object Object]"==={}.toString.call(f)?f=x(e,f):f!==!1&&(f=e),d.autoBreadcrumbs=f;var h={tryCatch:!0},i=d.instrument;return"[object Object]"==={}.toString.call(i)?i=x(h,i):i!==!1&&(i=h),d.instrument=i,g.collectWindowErrors=!!d.collectWindowErrors,c},install:function(){var a=this;return a.isSetup()&&!a.n&&(g.report.subscribe(function(){a.A.apply(a,arguments)}),a.k.captureUnhandledRejections&&a.B(),a.C(),a.k.instrument&&a.k.instrument.tryCatch&&a.D(),a.k.autoBreadcrumbs&&a.E(),a.F(),a.n=!0),Error.stackTraceLimit=a.k.stackTraceLimit,this},setDSN:function(a){var b=this,c=b.G(a),d=c.path.lastIndexOf("/"),e=c.path.substr(1,d);b.H=a,b.h=c.user,b.I=c.pass&&c.pass.substr(1),b.i=c.path.substr(d+1),b.g=b.J(c),b.K=b.g+"/"+e+"api/"+b.i+"/store/",this.y()},context:function(a,b,c){return s(a)&&(c=b||[],b=a,a=void 0),this.wrap(a,b).apply(this,c)},wrap:function(a,b,c){function d(){var d=[],f=arguments.length,g=!a||a&&a.deep!==!1;for(c&&s(c)&&c.apply(this,arguments);f--;)d[f]=g?e.wrap(a,arguments[f]):arguments[f];try{return b.apply(this,d)}catch(h){throw e.L(),e.captureException(h,a),h}}var e=this;if(r(b)&&!s(a))return a;if(s(a)&&(b=a,a=void 0),!s(b))return b;try{if(b.M)return b;if(b.N)return b.N}catch(f){return b}for(var g in b)A(b,g)&&(d[g]=b[g]);return d.prototype=b.prototype,b.N=d,d.M=!0,d.O=b,d},uninstall:function(){return g.report.uninstall(),this.P(),this.Q(),this.R(),this.S(),Error.stackTraceLimit=this.o,this.n=!1,this},T:function(a){this.z("debug","Raven caught unhandled promise rejection:",a),this.captureException(a.reason,{extra:{unhandledPromiseRejection:!0}})},B:function(){return this.T=this.T.bind(this),R.addEventListener&&R.addEventListener("unhandledrejection",this.T),this},P:function(){return R.removeEventListener&&R.removeEventListener("unhandledrejection",this.T),this},captureException:function(a,b){if(b=x({trimHeadFrames:0},b?b:{}),l(a)&&a.error)a=a.error;else{if(m(a)||n(a)){var c=a.name||(m(a)?"DOMError":"DOMException"),d=a.message?c+": "+a.message:c;return this.captureMessage(d,x(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}))}if(o(a))a=a;else{if(!q(a))return this.captureMessage(a,x(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}));b=this.U(b,a),a=new Error(b.message)}}this.d=a;try{var e=g.computeStackTrace(a);this.V(e,b)}catch(f){if(a!==f)throw f}return this},U:function(a,b){var c=Object.keys(b).sort(),d=x(a,{message:"Non-Error exception captured with keys: "+L(c),fingerprint:[i(c)],extra:a.extra||{}});return d.extra.W=M(b),d},captureMessage:function(a,b){if(!this.k.ignoreErrors.test||!this.k.ignoreErrors.test(a)){b=b||{},a+="";var c,d=x({message:a},b);try{throw new Error(a)}catch(e){c=e}c.name=null;var f=g.computeStackTrace(c),h=u(f.stack)&&f.stack[1];h&&"Raven.captureException"===h.func&&(h=f.stack[2]);var i=h&&h.url||"";if((!this.k.ignoreUrls.test||!this.k.ignoreUrls.test(i))&&(!this.k.whitelistUrls.test||this.k.whitelistUrls.test(i))){if(this.k.stacktrace||b&&b.stacktrace){d.fingerprint=null==d.fingerprint?a:d.fingerprint,b=x({trimHeadFrames:0},b),b.trimHeadFrames+=1;var j=this.X(f,b);d.stacktrace={frames:j.reverse()}}return d.fingerprint&&(d.fingerprint=u(d.fingerprint)?d.fingerprint:[d.fingerprint]),this.Y(d),this}}},captureBreadcrumb:function(a){var b=x({timestamp:d()/1e3},a);if(s(this.k.breadcrumbCallback)){var c=this.k.breadcrumbCallback(b);if(p(c)&&!v(c))b=c;else if(c===!1)return this}return this.u.push(b),this.u.length>this.k.maxBreadcrumbs&&this.u.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.r.push([a,b]),this.n&&this.F(),this},setUserContext:function(a){return this.j.user=a,this},setExtraContext:function(a){return this.Z("extra",a),this},setTagsContext:function(a){return this.Z("tags",a),this},clearContext:function(){return this.j={},this},getContext:function(){return JSON.parse(h(this.j))},setEnvironment:function(a){return this.k.environment=a,this},setRelease:function(a){return this.k.release=a,this},setDataCallback:function(a){var b=this.k.dataCallback;return this.k.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.k.breadcrumbCallback;return this.k.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.k.shouldSendCallback;return this.k.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.k.transport=a,this},lastException:function(){return this.d},lastEventId:function(){return this.f},isSetup:function(){return!!this.a&&(!!this.g||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.z("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=R.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(S){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.H;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.j.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.J(this.G(c)),h=S.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(S.head||S.body).appendChild(h)}},L:function(){var a=this;this.m+=1,setTimeout(function(){a.m-=1})},$:function(a,b){var c,d;if(this.b){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),S.createEvent?(c=S.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=S.createEventObject(),c.eventType=a);for(d in b)A(b,d)&&(c[d]=b[d]);if(S.createEvent)S.dispatchEvent(c);else try{S.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},_:function(a){var b=this;return function(c){if(b.aa=null,b.v!==c){b.v=c;var d;try{d=E(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ba:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.aa;g||a._("input")(c),clearTimeout(g),a.aa=setTimeout(function(){a.aa=null},b)}}},ca:function(a,b){var c=H(this.w.href),d=H(b),e=H(a);this.x=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},C:function(){var a=this;a.da=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.M?a.da.apply(this.O,arguments):a.da.apply(this,arguments)}},Q:function(){this.da&&(Function.prototype.toString=this.da)},D:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.ca(b.x,c+""),a.apply(this,arguments)}};I(R.history,"pushState",j,d),I(R.history,"replaceState",j,d)}if(c.console&&"console"in R&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};w(["debug","info","warn","error","log"],function(a,b){O(console,b,k)})}},R:function(){for(var a;this.t.length;){a=this.t.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},S:function(){for(var a in this.q)this.p[a]=this.q[a]},F:function(){var a=this;w(this.r,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},G:function(a){var b=Q.exec(a),c={},d=7;try{for(;d--;)c[P[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.k.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},J:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},A:function(){this.m||this.V.apply(this,arguments)},V:function(a,b){var c=this.X(a,b);this.$("handle",{stackInfo:a,options:b}),this.fa(a.name,a.message,a.url,a.lineno,c,b)},X:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(w(a.stack,function(b,e){var f=c.ga(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.u,0)}),this.j.user&&(a.user=this.j.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),a=this.pa(a),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||v(a[b]))&&delete a[b]}),s(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!v(a)&&(!s(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.ma()?void this.z("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function F(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&l(b))for(c=b.split(/\s+/),f=0;fc?Q(a,b-1):d}function R(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?X:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function S(a,b){function c(a){return m(a)?a.map(function(a){return c(a)}):k(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!m(b)||m(b)&&0===b.length)return a;var d,e=A(b),f="********";try{d=JSON.parse(T(a))}catch(g){return a}return c(d)}var T=a(10),U="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},V=3,W=51200,X=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isDOMError:g,isDOMException:h,isUndefined:i,isFunction:j,isPlainObject:k,isString:l,isArray:m,isEmptyObject:n,supportsErrorEvent:o,supportsDOMError:p,supportsDOMException:q,supportsFetch:r,supportsReferrerPolicy:s,supportsPromiseRejectionEvent:t,wrappedCallback:u,each:v,objectMerge:w,truncate:y,objectFrozen:x,hasKey:z,joinRegExp:A,urlencode:B,uuid4:D,htmlTreeAsString:E,htmlElementAsString:F,isSameException:I,isSameStacktrace:J,parseUrl:C,fill:K,safeJoin:L,serializeException:Q,serializeKeysForMessage:R,sanitize:S}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{10:10}],9:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}function e(){return"undefined"==typeof document||null==document.location?"":(document.location.origin||(document.location.origin=document.location.protocol+"//"+document.location.hostname+(document.location.port?":"+document.location.port:"")),document.location.origin)}var f=a(8),g={collectWindowErrors:!0,debug:!1},h="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},i=[].slice,j="?",k=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;g.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function e(a,b){var c=null;if(!b||g.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(i.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,h,i){var l=null,m=f.isErrorEvent(i)?i.error:i,n=f.isErrorEvent(a)?a.message:a;if(v)g.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&f.isError(m))l=g.computeStackTrace(m),e(l,!0);else{var p,r={url:b,line:c,column:h},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(k);p&&(s=p[1],n=p[2])}r.func=j,l={name:s,message:n,url:d(),stack:[r]},e(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=h.onerror,h.onerror=l,r=!0)}function n(){r&&(h.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,e.apply(null,[a,!1].concat(b))}function p(a,b){var c=i.call(arguments,1);if(v){if(u===a)return;o()}var d=g.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),g.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,f,g=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,h=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,i=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,k=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,l=/\((\S*)(?::(\d+))(?::(\d+))\)/,m=a.stack.split("\n"),n=[],o=(/^(.*) is undefined$/.exec(a.message),0),p=m.length;o eval")>-1;r&&(b=k.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==o||c[5]||"undefined"==typeof a.columnNumber||(n[0].column=a.columnNumber+1),f={url:c[3],func:c[1]||j,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}if(!f.func&&f.line&&(f.func=j),f.url&&"blob:"===f.url.substr(0,5)){var s=new XMLHttpRequest;if(s.open("GET",f.url,!1),s.send(null),200===s.status){var t=s.responseText||"";t=t.slice(-300);var u=t.match(/\/\/# sourceMappingURL=(.*)$/); +if(u){var v=u[1];"~"===v.charAt(0)&&(v=e()+v.slice(1)),f.url=v.slice(0,-4)}}}n.push(f)}return n.length?{name:a.name,message:a.message,url:d(),stack:n}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=j),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,e){for(var h,i,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==f&&o!==g.report){if(i={url:null,func:j,line:null,column:null},o.name?i.func=o.name:(h=k.exec(o.toString()))&&(i.func=h[1]),"undefined"==typeof i.func)try{i.func=h.input.substring(0,h.input.indexOf("{"))}catch(p){}m[""+o]?n=!0:m[""+o]=!0,l.push(i)}e&&l.splice(0,e);var q={name:a.name,message:a.message,url:d(),stack:l};return b(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),q}function f(b,e){var f=null;e=null==e?0:+e;try{if(f=a(b))return f}catch(h){if(g.debug)throw h}try{if(f=c(b,e+1))return f}catch(h){if(g.debug)throw h}return{name:b.name,message:b.message,url:d()}}return f.augmentStackTraceWithInitialElement=b,f.computeStackTraceFromStackProp=a,f}(),b.exports=g}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{8:8}],10:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}],11:[function(a,b,c){function d(a,b){var c=(65535&a)+(65535&b),d=(a>>16)+(b>>16)+(c>>16);return d<<16|65535&c}function e(a,b){return a<>>32-b}function f(a,b,c,f,g,h){return d(e(d(d(b,a),d(f,h)),g),c)}function g(a,b,c,d,e,g,h){return f(b&c|~b&d,a,b,e,g,h)}function h(a,b,c,d,e,g,h){return f(b&d|c&~d,a,b,e,g,h)}function i(a,b,c,d,e,g,h){return f(b^c^d,a,b,e,g,h)}function j(a,b,c,d,e,g,h){return f(c^(b|~d),a,b,e,g,h)}function k(a,b){a[b>>5]|=128<>>9<<4)+14]=b;var c,e,f,k,l,m=1732584193,n=-271733879,o=-1732584194,p=271733878;for(c=0;c>5]>>>b%32&255);return c}function m(a){var b,c=[];for(c[(a.length>>2)-1]=void 0,b=0;b>5]|=(255&a.charCodeAt(b/8))<16&&(e=k(e,8*a.length)),c=0;c<16;c+=1)f[c]=909522486^e[c],g[c]=1549556828^e[c];return d=k(f.concat(m(b)),512+8*b.length),l(k(g.concat(d),640))}function p(a){var b,c,d="0123456789abcdef",e="";for(c=0;c>>4&15)+d.charAt(15&b);return e}function q(a){return unescape(encodeURIComponent(a))}function r(a){return n(q(a))}function s(a){return p(r(a))}function t(a,b){return o(q(a),q(b))}function u(a,b){return p(t(a,b))}function v(a,b,c){return b?c?t(b,a):u(b,a):c?r(a):s(a)}b.exports=v},{}]},{},[7,1,2,3])(7)}); +//# sourceMappingURL=raven.min.js.map \ No newline at end of file diff --git a/packages/raven-js/dist/console,ember,vue/raven.min.js.map b/packages/raven-js/dist/console,ember,vue/raven.min.js.map new file mode 100644 index 000000000000..c72130078ef4 --- /dev/null +++ b/packages/raven-js/dist/console,ember,vue/raven.min.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","consolePlugin","console","pluginOptions","logLevels","levels","push","callback","msg","data","captureMessage","level","pop","wrapConsoleMethod","wrapMethod","addPlugin","5","7","2","emberPlugin","Ember","_oldOnError","onerror","error","captureException","RSVP","on","reason","extra","context","3","formatComponentName","vm","$root","name","_isVue","$options","_componentTag","__file","vuePlugin","Vue","config","errorHandler","info","metaData","Object","prototype","toString","componentName","propsData","lifecycleHook","4","RavenConfigError","message","constructor","utils","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","safeJoin","logger","Function","apply","8","6","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","sanitizeKeys","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isErrorEvent","isDOMError","isDOMException","isError","isObject","isPlainObject","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","sanitize","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","dsn","options","_logDebug","globalOptions","key","value","setDSN","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","substr","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","func","undefined","wrap","_before","wrapped","deep","_ignoreNextOnError","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","T","event","unhandledPromiseRejection","B","_promiseRejectionHandler","bind","addEventListener","P","removeEventListener","ex","trimHeadFrames","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","U","currentOptions","exKeys","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","setDataCallback","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","L","setTimeout","$","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","_","evtName","_keypressTimeout","target","category","ba","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","ca","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","C","_originalFunctionToString","Q","D","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","type","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","E","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","R","builtin","S","F","installer","concat","G","str","m","exec","allowSecretKey","J","port","A","V","stackInfo","_triggerEvent","_processException","lineno","X","frame","_normalizeFrame","in_app","ga","stackInfoUrl","normalized","filename","line","colno","column","function","fa","prefixedMessage","exception","values","transaction","ha","request","Referer","breadcrumbs","_trimBreadcrumbs","ia","urlProp","urlProps","ja","httpData","userAgent","User-Agent","referrer","y","_backoffDuration","_backoffStart","ma","na","current","last","oa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Y","baseData","project","platform","_getHttpData","serverName","server_name","_sanitizeData","forEach","random","_sendProcessedPayload","pa","ra","qa","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","sa","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","open","setRequestHeader","send","ta","hash","evaluated","z","Z","setUser","setReleaseContext","10","11","9","RavenConstructor","_Raven","noConflict","Client","what","supportsErrorEvent","ErrorEvent","supportsDOMError","DOMError","supportsDOMException","DOMException","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","wrappedCallback","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","sanitizeMask","safeInput","o_O","getLocationHref","getLocationOrigin","origin","hostname","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","responseText","sourceMaps","sourceMapAddress","charAt","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","string","raw"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file diff --git a/packages/raven-js/dist/console,ember/raven.js b/packages/raven-js/dist/console,ember/raven.js new file mode 100644 index 000000000000..3b320d894d47 --- /dev/null +++ b/packages/raven-js/dist/console,ember/raven.js @@ -0,0 +1,4078 @@ +/*! Raven.js 3.25.2 (30b6d4e) | github.com/getsentry/raven-js */ + +/* + * Includes TraceKit + * https://github.com/getsentry/TraceKit + * + * Copyright 2018 Matt Robenolt and other contributors + * Released under the BSD license + * https://github.com/getsentry/raven-js/blob/master/LICENSE + * + */ + +(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.Raven = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o captureException(string) => captureMessage(string) + if (initialCall && initialCall.func === 'Raven.captureException') { + initialCall = stack.stack[2]; + } + + var fileurl = (initialCall && initialCall.url) || ''; + + if ( + !!this._globalOptions.ignoreUrls.test && + this._globalOptions.ignoreUrls.test(fileurl) + ) { + return; + } + + if ( + !!this._globalOptions.whitelistUrls.test && + !this._globalOptions.whitelistUrls.test(fileurl) + ) { + return; + } + + if (this._globalOptions.stacktrace || (options && options.stacktrace)) { + // fingerprint on msg, not stack trace (legacy behavior, could be revisited) + data.fingerprint = data.fingerprint == null ? msg : data.fingerprint; + + options = objectMerge( + { + trimHeadFrames: 0 + }, + options + ); + // Since we know this is a synthetic trace, the top frame (this function call) + // MUST be from Raven.js, so mark it for trimming + // We add to the trim counter so that callers can choose to trim extra frames, such + // as utility functions. + options.trimHeadFrames += 1; + + var frames = this._prepareFrames(stack, options); + data.stacktrace = { + // Sentry expects frames oldest to newest + frames: frames.reverse() + }; + } + + // Make sure that fingerprint is always wrapped in an array + if (data.fingerprint) { + data.fingerprint = isArray(data.fingerprint) + ? data.fingerprint + : [data.fingerprint]; + } + + // Fire away! + this._send(data); + + return this; + }, + + captureBreadcrumb: function(obj) { + var crumb = objectMerge( + { + timestamp: now() / 1000 + }, + obj + ); + + if (isFunction(this._globalOptions.breadcrumbCallback)) { + var result = this._globalOptions.breadcrumbCallback(crumb); + + if (isObject(result) && !isEmptyObject(result)) { + crumb = result; + } else if (result === false) { + return this; + } + } + + this._breadcrumbs.push(crumb); + if (this._breadcrumbs.length > this._globalOptions.maxBreadcrumbs) { + this._breadcrumbs.shift(); + } + return this; + }, + + addPlugin: function(plugin /*arg1, arg2, ... argN*/) { + var pluginArgs = [].slice.call(arguments, 1); + + this._plugins.push([plugin, pluginArgs]); + if (this._isRavenInstalled) { + this._drainPlugins(); + } + + return this; + }, + + /* + * Set/clear a user to be sent along with the payload. + * + * @param {object} user An object representing user data [optional] + * @return {Raven} + */ + setUserContext: function(user) { + // Intentionally do not merge here since that's an unexpected behavior. + this._globalContext.user = user; + + return this; + }, + + /* + * Merge extra attributes to be sent along with the payload. + * + * @param {object} extra An object representing extra data [optional] + * @return {Raven} + */ + setExtraContext: function(extra) { + this._mergeContext('extra', extra); + + return this; + }, + + /* + * Merge tags to be sent along with the payload. + * + * @param {object} tags An object representing tags [optional] + * @return {Raven} + */ + setTagsContext: function(tags) { + this._mergeContext('tags', tags); + + return this; + }, + + /* + * Clear all of the context. + * + * @return {Raven} + */ + clearContext: function() { + this._globalContext = {}; + + return this; + }, + + /* + * Get a copy of the current context. This cannot be mutated. + * + * @return {object} copy of context + */ + getContext: function() { + // lol javascript + return JSON.parse(stringify(this._globalContext)); + }, + + /* + * Set environment of application + * + * @param {string} environment Typically something like 'production'. + * @return {Raven} + */ + setEnvironment: function(environment) { + this._globalOptions.environment = environment; + + return this; + }, + + /* + * Set release version of application + * + * @param {string} release Typically something like a git SHA to identify version + * @return {Raven} + */ + setRelease: function(release) { + this._globalOptions.release = release; + + return this; + }, + + /* + * Set the dataCallback option + * + * @param {function} callback The callback to run which allows the + * data blob to be mutated before sending + * @return {Raven} + */ + setDataCallback: function(callback) { + var original = this._globalOptions.dataCallback; + this._globalOptions.dataCallback = keepOriginalCallback(original, callback); + return this; + }, + + /* + * Set the breadcrumbCallback option + * + * @param {function} callback The callback to run which allows filtering + * or mutating breadcrumbs + * @return {Raven} + */ + setBreadcrumbCallback: function(callback) { + var original = this._globalOptions.breadcrumbCallback; + this._globalOptions.breadcrumbCallback = keepOriginalCallback(original, callback); + return this; + }, + + /* + * Set the shouldSendCallback option + * + * @param {function} callback The callback to run which allows + * introspecting the blob before sending + * @return {Raven} + */ + setShouldSendCallback: function(callback) { + var original = this._globalOptions.shouldSendCallback; + this._globalOptions.shouldSendCallback = keepOriginalCallback(original, callback); + return this; + }, + + /** + * Override the default HTTP transport mechanism that transmits data + * to the Sentry server. + * + * @param {function} transport Function invoked instead of the default + * `makeRequest` handler. + * + * @return {Raven} + */ + setTransport: function(transport) { + this._globalOptions.transport = transport; + + return this; + }, + + /* + * Get the latest raw exception that was captured by Raven. + * + * @return {error} + */ + lastException: function() { + return this._lastCapturedException; + }, + + /* + * Get the last event id + * + * @return {string} + */ + lastEventId: function() { + return this._lastEventId; + }, + + /* + * Determine if Raven is setup and ready to go. + * + * @return {boolean} + */ + isSetup: function() { + if (!this._hasJSON) return false; // needs JSON support + if (!this._globalServer) { + if (!this.ravenNotConfiguredError) { + this.ravenNotConfiguredError = true; + this._logDebug('error', 'Error: Raven has not been configured.'); + } + return false; + } + return true; + }, + + afterLoad: function() { + // TODO: remove window dependence? + + // Attempt to initialize Raven on load + var RavenConfig = _window.RavenConfig; + if (RavenConfig) { + this.config(RavenConfig.dsn, RavenConfig.config).install(); + } + }, + + showReportDialog: function(options) { + if ( + !_document // doesn't work without a document (React native) + ) + return; + + options = options || {}; + + var lastEventId = options.eventId || this.lastEventId(); + if (!lastEventId) { + throw new RavenConfigError('Missing eventId'); + } + + var dsn = options.dsn || this._dsn; + if (!dsn) { + throw new RavenConfigError('Missing DSN'); + } + + var encode = encodeURIComponent; + var qs = ''; + qs += '?eventId=' + encode(lastEventId); + qs += '&dsn=' + encode(dsn); + + var user = options.user || this._globalContext.user; + if (user) { + if (user.name) qs += '&name=' + encode(user.name); + if (user.email) qs += '&email=' + encode(user.email); + } + + var globalServer = this._getGlobalServer(this._parseDSN(dsn)); + + var script = _document.createElement('script'); + script.async = true; + script.src = globalServer + '/api/embed/error-page/' + qs; + (_document.head || _document.body).appendChild(script); + }, + + /**** Private functions ****/ + _ignoreNextOnError: function() { + var self = this; + this._ignoreOnError += 1; + setTimeout(function() { + // onerror should trigger before setTimeout + self._ignoreOnError -= 1; + }); + }, + + _triggerEvent: function(eventType, options) { + // NOTE: `event` is a native browser thing, so let's avoid conflicting wiht it + var evt, key; + + if (!this._hasDocument) return; + + options = options || {}; + + eventType = 'raven' + eventType.substr(0, 1).toUpperCase() + eventType.substr(1); + + if (_document.createEvent) { + evt = _document.createEvent('HTMLEvents'); + evt.initEvent(eventType, true, true); + } else { + evt = _document.createEventObject(); + evt.eventType = eventType; + } + + for (key in options) + if (hasKey(options, key)) { + evt[key] = options[key]; + } + + if (_document.createEvent) { + // IE9 if standards + _document.dispatchEvent(evt); + } else { + // IE8 regardless of Quirks or Standards + // IE9 if quirks + try { + _document.fireEvent('on' + evt.eventType.toLowerCase(), evt); + } catch (e) { + // Do nothing + } + } + }, + + /** + * Wraps addEventListener to capture UI breadcrumbs + * @param evtName the event name (e.g. "click") + * @returns {Function} + * @private + */ + _breadcrumbEventHandler: function(evtName) { + var self = this; + return function(evt) { + // reset keypress timeout; e.g. triggering a 'click' after + // a 'keypress' will reset the keypress debounce so that a new + // set of keypresses can be recorded + self._keypressTimeout = null; + + // It's possible this handler might trigger multiple times for the same + // event (e.g. event propagation through node ancestors). Ignore if we've + // already captured the event. + if (self._lastCapturedEvent === evt) return; + + self._lastCapturedEvent = evt; + + // try/catch both: + // - accessing evt.target (see getsentry/raven-js#838, #768) + // - `htmlTreeAsString` because it's complex, and just accessing the DOM incorrectly + // can throw an exception in some circumstances. + var target; + try { + target = htmlTreeAsString(evt.target); + } catch (e) { + target = ''; + } + + self.captureBreadcrumb({ + category: 'ui.' + evtName, // e.g. ui.click, ui.input + message: target + }); + }; + }, + + /** + * Wraps addEventListener to capture keypress UI events + * @returns {Function} + * @private + */ + _keypressEventHandler: function() { + var self = this, + debounceDuration = 1000; // milliseconds + + // TODO: if somehow user switches keypress target before + // debounce timeout is triggered, we will only capture + // a single breadcrumb from the FIRST target (acceptable?) + return function(evt) { + var target; + try { + target = evt.target; + } catch (e) { + // just accessing event properties can throw an exception in some rare circumstances + // see: https://github.com/getsentry/raven-js/issues/838 + return; + } + var tagName = target && target.tagName; + + // only consider keypress events on actual input elements + // this will disregard keypresses targeting body (e.g. tabbing + // through elements, hotkeys, etc) + if ( + !tagName || + (tagName !== 'INPUT' && tagName !== 'TEXTAREA' && !target.isContentEditable) + ) + return; + + // record first keypress in a series, but ignore subsequent + // keypresses until debounce clears + var timeout = self._keypressTimeout; + if (!timeout) { + self._breadcrumbEventHandler('input')(evt); + } + clearTimeout(timeout); + self._keypressTimeout = setTimeout(function() { + self._keypressTimeout = null; + }, debounceDuration); + }; + }, + + /** + * Captures a breadcrumb of type "navigation", normalizing input URLs + * @param to the originating URL + * @param from the target URL + * @private + */ + _captureUrlChange: function(from, to) { + var parsedLoc = parseUrl(this._location.href); + var parsedTo = parseUrl(to); + var parsedFrom = parseUrl(from); + + // because onpopstate only tells you the "new" (to) value of location.href, and + // not the previous (from) value, we need to track the value of the current URL + // state ourselves + this._lastHref = to; + + // Use only the path component of the URL if the URL matches the current + // document (almost all the time when using pushState) + if (parsedLoc.protocol === parsedTo.protocol && parsedLoc.host === parsedTo.host) + to = parsedTo.relative; + if (parsedLoc.protocol === parsedFrom.protocol && parsedLoc.host === parsedFrom.host) + from = parsedFrom.relative; + + this.captureBreadcrumb({ + category: 'navigation', + data: { + to: to, + from: from + } + }); + }, + + _patchFunctionToString: function() { + var self = this; + self._originalFunctionToString = Function.prototype.toString; + // eslint-disable-next-line no-extend-native + Function.prototype.toString = function() { + if (typeof this === 'function' && this.__raven__) { + return self._originalFunctionToString.apply(this.__orig__, arguments); + } + return self._originalFunctionToString.apply(this, arguments); + }; + }, + + _unpatchFunctionToString: function() { + if (this._originalFunctionToString) { + // eslint-disable-next-line no-extend-native + Function.prototype.toString = this._originalFunctionToString; + } + }, + + /** + * Wrap timer functions and event targets to catch errors and provide + * better metadata. + */ + _instrumentTryCatch: function() { + var self = this; + + var wrappedBuiltIns = self._wrappedBuiltIns; + + function wrapTimeFn(orig) { + return function(fn, t) { + // preserve arity + // Make a copy of the arguments to prevent deoptimization + // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments + var args = new Array(arguments.length); + for (var i = 0; i < args.length; ++i) { + args[i] = arguments[i]; + } + var originalCallback = args[0]; + if (isFunction(originalCallback)) { + args[0] = self.wrap(originalCallback); + } + + // IE < 9 doesn't support .call/.apply on setInterval/setTimeout, but it + // also supports only two arguments and doesn't care what this is, so we + // can just call the original function directly. + if (orig.apply) { + return orig.apply(this, args); + } else { + return orig(args[0], args[1]); + } + }; + } + + var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; + + function wrapEventTarget(global) { + var proto = _window[global] && _window[global].prototype; + if (proto && proto.hasOwnProperty && proto.hasOwnProperty('addEventListener')) { + fill( + proto, + 'addEventListener', + function(orig) { + return function(evtName, fn, capture, secure) { + // preserve arity + try { + if (fn && fn.handleEvent) { + fn.handleEvent = self.wrap(fn.handleEvent); + } + } catch (err) { + // can sometimes get 'Permission denied to access property "handle Event' + } + + // More breadcrumb DOM capture ... done here and not in `_instrumentBreadcrumbs` + // so that we don't have more than one wrapper function + var before, clickHandler, keypressHandler; + + if ( + autoBreadcrumbs && + autoBreadcrumbs.dom && + (global === 'EventTarget' || global === 'Node') + ) { + // NOTE: generating multiple handlers per addEventListener invocation, should + // revisit and verify we can just use one (almost certainly) + clickHandler = self._breadcrumbEventHandler('click'); + keypressHandler = self._keypressEventHandler(); + before = function(evt) { + // need to intercept every DOM event in `before` argument, in case that + // same wrapped method is re-used for different events (e.g. mousemove THEN click) + // see #724 + if (!evt) return; + + var eventType; + try { + eventType = evt.type; + } catch (e) { + // just accessing event properties can throw an exception in some rare circumstances + // see: https://github.com/getsentry/raven-js/issues/838 + return; + } + if (eventType === 'click') return clickHandler(evt); + else if (eventType === 'keypress') return keypressHandler(evt); + }; + } + return orig.call( + this, + evtName, + self.wrap(fn, undefined, before), + capture, + secure + ); + }; + }, + wrappedBuiltIns + ); + fill( + proto, + 'removeEventListener', + function(orig) { + return function(evt, fn, capture, secure) { + try { + fn = fn && (fn.__raven_wrapper__ ? fn.__raven_wrapper__ : fn); + } catch (e) { + // ignore, accessing __raven_wrapper__ will throw in some Selenium environments + } + return orig.call(this, evt, fn, capture, secure); + }; + }, + wrappedBuiltIns + ); + } + } + + fill(_window, 'setTimeout', wrapTimeFn, wrappedBuiltIns); + fill(_window, 'setInterval', wrapTimeFn, wrappedBuiltIns); + if (_window.requestAnimationFrame) { + fill( + _window, + 'requestAnimationFrame', + function(orig) { + return function(cb) { + return orig(self.wrap(cb)); + }; + }, + wrappedBuiltIns + ); + } + + // event targets borrowed from bugsnag-js: + // https://github.com/bugsnag/bugsnag-js/blob/master/src/bugsnag.js#L666 + var eventTargets = [ + 'EventTarget', + 'Window', + 'Node', + 'ApplicationCache', + 'AudioTrackList', + 'ChannelMergerNode', + 'CryptoOperation', + 'EventSource', + 'FileReader', + 'HTMLUnknownElement', + 'IDBDatabase', + 'IDBRequest', + 'IDBTransaction', + 'KeyOperation', + 'MediaController', + 'MessagePort', + 'ModalWindow', + 'Notification', + 'SVGElementInstance', + 'Screen', + 'TextTrack', + 'TextTrackCue', + 'TextTrackList', + 'WebSocket', + 'WebSocketWorker', + 'Worker', + 'XMLHttpRequest', + 'XMLHttpRequestEventTarget', + 'XMLHttpRequestUpload' + ]; + for (var i = 0; i < eventTargets.length; i++) { + wrapEventTarget(eventTargets[i]); + } + }, + + /** + * Instrument browser built-ins w/ breadcrumb capturing + * - XMLHttpRequests + * - DOM interactions (click/typing) + * - window.location changes + * - console + * + * Can be disabled or individually configured via the `autoBreadcrumbs` config option + */ + _instrumentBreadcrumbs: function() { + var self = this; + var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; + + var wrappedBuiltIns = self._wrappedBuiltIns; + + function wrapProp(prop, xhr) { + if (prop in xhr && isFunction(xhr[prop])) { + fill(xhr, prop, function(orig) { + return self.wrap(orig); + }); // intentionally don't track filled methods on XHR instances + } + } + + if (autoBreadcrumbs.xhr && 'XMLHttpRequest' in _window) { + var xhrproto = _window.XMLHttpRequest && _window.XMLHttpRequest.prototype; + fill( + xhrproto, + 'open', + function(origOpen) { + return function(method, url) { + // preserve arity + + // if Sentry key appears in URL, don't capture + if (isString(url) && url.indexOf(self._globalKey) === -1) { + this.__raven_xhr = { + method: method, + url: url, + status_code: null + }; + } + + return origOpen.apply(this, arguments); + }; + }, + wrappedBuiltIns + ); + + fill( + xhrproto, + 'send', + function(origSend) { + return function() { + // preserve arity + var xhr = this; + + function onreadystatechangeHandler() { + if (xhr.__raven_xhr && xhr.readyState === 4) { + try { + // touching statusCode in some platforms throws + // an exception + xhr.__raven_xhr.status_code = xhr.status; + } catch (e) { + /* do nothing */ + } + + self.captureBreadcrumb({ + type: 'http', + category: 'xhr', + data: xhr.__raven_xhr + }); + } + } + + var props = ['onload', 'onerror', 'onprogress']; + for (var j = 0; j < props.length; j++) { + wrapProp(props[j], xhr); + } + + if ('onreadystatechange' in xhr && isFunction(xhr.onreadystatechange)) { + fill( + xhr, + 'onreadystatechange', + function(orig) { + return self.wrap(orig, undefined, onreadystatechangeHandler); + } /* intentionally don't track this instrumentation */ + ); + } else { + // if onreadystatechange wasn't actually set by the page on this xhr, we + // are free to set our own and capture the breadcrumb + xhr.onreadystatechange = onreadystatechangeHandler; + } + + return origSend.apply(this, arguments); + }; + }, + wrappedBuiltIns + ); + } + + if (autoBreadcrumbs.xhr && supportsFetch()) { + fill( + _window, + 'fetch', + function(origFetch) { + return function() { + // preserve arity + // Make a copy of the arguments to prevent deoptimization + // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments + var args = new Array(arguments.length); + for (var i = 0; i < args.length; ++i) { + args[i] = arguments[i]; + } + + var fetchInput = args[0]; + var method = 'GET'; + var url; + + if (typeof fetchInput === 'string') { + url = fetchInput; + } else if ('Request' in _window && fetchInput instanceof _window.Request) { + url = fetchInput.url; + if (fetchInput.method) { + method = fetchInput.method; + } + } else { + url = '' + fetchInput; + } + + // if Sentry key appears in URL, don't capture, as it's our own request + if (url.indexOf(self._globalKey) !== -1) { + return origFetch.apply(this, args); + } + + if (args[1] && args[1].method) { + method = args[1].method; + } + + var fetchData = { + method: method, + url: url, + status_code: null + }; + + return origFetch + .apply(this, args) + .then(function(response) { + fetchData.status_code = response.status; + + self.captureBreadcrumb({ + type: 'http', + category: 'fetch', + data: fetchData + }); + + return response; + }) + ['catch'](function(err) { + // if there is an error performing the request + self.captureBreadcrumb({ + type: 'http', + category: 'fetch', + data: fetchData, + level: 'error' + }); + + throw err; + }); + }; + }, + wrappedBuiltIns + ); + } + + // Capture breadcrumbs from any click that is unhandled / bubbled up all the way + // to the document. Do this before we instrument addEventListener. + if (autoBreadcrumbs.dom && this._hasDocument) { + if (_document.addEventListener) { + _document.addEventListener('click', self._breadcrumbEventHandler('click'), false); + _document.addEventListener('keypress', self._keypressEventHandler(), false); + } else if (_document.attachEvent) { + // IE8 Compatibility + _document.attachEvent('onclick', self._breadcrumbEventHandler('click')); + _document.attachEvent('onkeypress', self._keypressEventHandler()); + } + } + + // record navigation (URL) changes + // NOTE: in Chrome App environment, touching history.pushState, *even inside + // a try/catch block*, will cause Chrome to output an error to console.error + // borrowed from: https://github.com/angular/angular.js/pull/13945/files + var chrome = _window.chrome; + var isChromePackagedApp = chrome && chrome.app && chrome.app.runtime; + var hasPushAndReplaceState = + !isChromePackagedApp && + _window.history && + _window.history.pushState && + _window.history.replaceState; + if (autoBreadcrumbs.location && hasPushAndReplaceState) { + // TODO: remove onpopstate handler on uninstall() + var oldOnPopState = _window.onpopstate; + _window.onpopstate = function() { + var currentHref = self._location.href; + self._captureUrlChange(self._lastHref, currentHref); + + if (oldOnPopState) { + return oldOnPopState.apply(this, arguments); + } + }; + + var historyReplacementFunction = function(origHistFunction) { + // note history.pushState.length is 0; intentionally not declaring + // params to preserve 0 arity + return function(/* state, title, url */) { + var url = arguments.length > 2 ? arguments[2] : undefined; + + // url argument is optional + if (url) { + // coerce to string (this is what pushState does) + self._captureUrlChange(self._lastHref, url + ''); + } + + return origHistFunction.apply(this, arguments); + }; + }; + + fill(_window.history, 'pushState', historyReplacementFunction, wrappedBuiltIns); + fill(_window.history, 'replaceState', historyReplacementFunction, wrappedBuiltIns); + } + + if (autoBreadcrumbs.console && 'console' in _window && console.log) { + // console + var consoleMethodCallback = function(msg, data) { + self.captureBreadcrumb({ + message: msg, + level: data.level, + category: 'console' + }); + }; + + each(['debug', 'info', 'warn', 'error', 'log'], function(_, level) { + wrapConsoleMethod(console, level, consoleMethodCallback); + }); + } + }, + + _restoreBuiltIns: function() { + // restore any wrapped builtins + var builtin; + while (this._wrappedBuiltIns.length) { + builtin = this._wrappedBuiltIns.shift(); + + var obj = builtin[0], + name = builtin[1], + orig = builtin[2]; + + obj[name] = orig; + } + }, + + _restoreConsole: function() { + // eslint-disable-next-line guard-for-in + for (var method in this._originalConsoleMethods) { + this._originalConsole[method] = this._originalConsoleMethods[method]; + } + }, + + _drainPlugins: function() { + var self = this; + + // FIX ME TODO + each(this._plugins, function(_, plugin) { + var installer = plugin[0]; + var args = plugin[1]; + installer.apply(self, [self].concat(args)); + }); + }, + + _parseDSN: function(str) { + var m = dsnPattern.exec(str), + dsn = {}, + i = 7; + + try { + while (i--) dsn[dsnKeys[i]] = m[i] || ''; + } catch (e) { + throw new RavenConfigError('Invalid DSN: ' + str); + } + + if (dsn.pass && !this._globalOptions.allowSecretKey) { + throw new RavenConfigError( + 'Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key' + ); + } + + return dsn; + }, + + _getGlobalServer: function(uri) { + // assemble the endpoint from the uri pieces + var globalServer = '//' + uri.host + (uri.port ? ':' + uri.port : ''); + + if (uri.protocol) { + globalServer = uri.protocol + ':' + globalServer; + } + return globalServer; + }, + + _handleOnErrorStackInfo: function() { + // if we are intentionally ignoring errors via onerror, bail out + if (!this._ignoreOnError) { + this._handleStackInfo.apply(this, arguments); + } + }, + + _handleStackInfo: function(stackInfo, options) { + var frames = this._prepareFrames(stackInfo, options); + + this._triggerEvent('handle', { + stackInfo: stackInfo, + options: options + }); + + this._processException( + stackInfo.name, + stackInfo.message, + stackInfo.url, + stackInfo.lineno, + frames, + options + ); + }, + + _prepareFrames: function(stackInfo, options) { + var self = this; + var frames = []; + if (stackInfo.stack && stackInfo.stack.length) { + each(stackInfo.stack, function(i, stack) { + var frame = self._normalizeFrame(stack, stackInfo.url); + if (frame) { + frames.push(frame); + } + }); + + // e.g. frames captured via captureMessage throw + if (options && options.trimHeadFrames) { + for (var j = 0; j < options.trimHeadFrames && j < frames.length; j++) { + frames[j].in_app = false; + } + } + } + frames = frames.slice(0, this._globalOptions.stackTraceLimit); + return frames; + }, + + _normalizeFrame: function(frame, stackInfoUrl) { + // normalize the frames data + var normalized = { + filename: frame.url, + lineno: frame.line, + colno: frame.column, + function: frame.func || '?' + }; + + // Case when we don't have any information about the error + // E.g. throwing a string or raw object, instead of an `Error` in Firefox + // Generating synthetic error doesn't add any value here + // + // We should probably somehow let a user know that they should fix their code + if (!frame.url) { + normalized.filename = stackInfoUrl; // fallback to whole stacks url from onerror handler + } + + normalized.in_app = !// determine if an exception came from outside of our app + // first we check the global includePaths list. + ( + (!!this._globalOptions.includePaths.test && + !this._globalOptions.includePaths.test(normalized.filename)) || + // Now we check for fun, if the function name is Raven or TraceKit + /(Raven|TraceKit)\./.test(normalized['function']) || + // finally, we do a last ditch effort and check for raven.min.js + /raven\.(min\.)?js$/.test(normalized.filename) + ); + + return normalized; + }, + + _processException: function(type, message, fileurl, lineno, frames, options) { + var prefixedMessage = (type ? type + ': ' : '') + (message || ''); + if ( + !!this._globalOptions.ignoreErrors.test && + (this._globalOptions.ignoreErrors.test(message) || + this._globalOptions.ignoreErrors.test(prefixedMessage)) + ) { + return; + } + + var stacktrace; + + if (frames && frames.length) { + fileurl = frames[0].filename || fileurl; + // Sentry expects frames oldest to newest + // and JS sends them as newest to oldest + frames.reverse(); + stacktrace = {frames: frames}; + } else if (fileurl) { + stacktrace = { + frames: [ + { + filename: fileurl, + lineno: lineno, + in_app: true + } + ] + }; + } + + if ( + !!this._globalOptions.ignoreUrls.test && + this._globalOptions.ignoreUrls.test(fileurl) + ) { + return; + } + + if ( + !!this._globalOptions.whitelistUrls.test && + !this._globalOptions.whitelistUrls.test(fileurl) + ) { + return; + } + + var data = objectMerge( + { + // sentry.interfaces.Exception + exception: { + values: [ + { + type: type, + value: message, + stacktrace: stacktrace + } + ] + }, + transaction: fileurl + }, + options + ); + + // Fire away! + this._send(data); + }, + + _trimPacket: function(data) { + // For now, we only want to truncate the two different messages + // but this could/should be expanded to just trim everything + var max = this._globalOptions.maxMessageLength; + if (data.message) { + data.message = truncate(data.message, max); + } + if (data.exception) { + var exception = data.exception.values[0]; + exception.value = truncate(exception.value, max); + } + + var request = data.request; + if (request) { + if (request.url) { + request.url = truncate(request.url, this._globalOptions.maxUrlLength); + } + if (request.Referer) { + request.Referer = truncate(request.Referer, this._globalOptions.maxUrlLength); + } + } + + if (data.breadcrumbs && data.breadcrumbs.values) + this._trimBreadcrumbs(data.breadcrumbs); + + return data; + }, + + /** + * Truncate breadcrumb values (right now just URLs) + */ + _trimBreadcrumbs: function(breadcrumbs) { + // known breadcrumb properties with urls + // TODO: also consider arbitrary prop values that start with (https?)?:// + var urlProps = ['to', 'from', 'url'], + urlProp, + crumb, + data; + + for (var i = 0; i < breadcrumbs.values.length; ++i) { + crumb = breadcrumbs.values[i]; + if ( + !crumb.hasOwnProperty('data') || + !isObject(crumb.data) || + objectFrozen(crumb.data) + ) + continue; + + data = objectMerge({}, crumb.data); + for (var j = 0; j < urlProps.length; ++j) { + urlProp = urlProps[j]; + if (data.hasOwnProperty(urlProp) && data[urlProp]) { + data[urlProp] = truncate(data[urlProp], this._globalOptions.maxUrlLength); + } + } + breadcrumbs.values[i].data = data; + } + }, + + _getHttpData: function() { + if (!this._hasNavigator && !this._hasDocument) return; + var httpData = {}; + + if (this._hasNavigator && _navigator.userAgent) { + httpData.headers = { + 'User-Agent': _navigator.userAgent + }; + } + + // Check in `window` instead of `document`, as we may be in ServiceWorker environment + if (_window.location && _window.location.href) { + httpData.url = _window.location.href; + } + + if (this._hasDocument && _document.referrer) { + if (!httpData.headers) httpData.headers = {}; + httpData.headers.Referer = _document.referrer; + } + + return httpData; + }, + + _resetBackoff: function() { + this._backoffDuration = 0; + this._backoffStart = null; + }, + + _shouldBackoff: function() { + return this._backoffDuration && now() - this._backoffStart < this._backoffDuration; + }, + + /** + * Returns true if the in-process data payload matches the signature + * of the previously-sent data + * + * NOTE: This has to be done at this level because TraceKit can generate + * data from window.onerror WITHOUT an exception object (IE8, IE9, + * other old browsers). This can take the form of an "exception" + * data object with a single frame (derived from the onerror args). + */ + _isRepeatData: function(current) { + var last = this._lastData; + + if ( + !last || + current.message !== last.message || // defined for captureMessage + current.transaction !== last.transaction // defined for captureException/onerror + ) + return false; + + // Stacktrace interface (i.e. from captureMessage) + if (current.stacktrace || last.stacktrace) { + return isSameStacktrace(current.stacktrace, last.stacktrace); + } else if (current.exception || last.exception) { + // Exception interface (i.e. from captureException/onerror) + return isSameException(current.exception, last.exception); + } + + return true; + }, + + _setBackoffState: function(request) { + // If we are already in a backoff state, don't change anything + if (this._shouldBackoff()) { + return; + } + + var status = request.status; + + // 400 - project_id doesn't exist or some other fatal + // 401 - invalid/revoked dsn + // 429 - too many requests + if (!(status === 400 || status === 401 || status === 429)) return; + + var retry; + try { + // If Retry-After is not in Access-Control-Expose-Headers, most + // browsers will throw an exception trying to access it + if (supportsFetch()) { + retry = request.headers.get('Retry-After'); + } else { + retry = request.getResponseHeader('Retry-After'); + } + + // Retry-After is returned in seconds + retry = parseInt(retry, 10) * 1000; + } catch (e) { + /* eslint no-empty:0 */ + } + + this._backoffDuration = retry + ? // If Sentry server returned a Retry-After value, use it + retry + : // Otherwise, double the last backoff duration (starts at 1 sec) + this._backoffDuration * 2 || 1000; + + this._backoffStart = now(); + }, + + _send: function(data) { + var globalOptions = this._globalOptions; + + var baseData = { + project: this._globalProject, + logger: globalOptions.logger, + platform: 'javascript' + }, + httpData = this._getHttpData(); + + if (httpData) { + baseData.request = httpData; + } + + // HACK: delete `trimHeadFrames` to prevent from appearing in outbound payload + if (data.trimHeadFrames) delete data.trimHeadFrames; + + data = objectMerge(baseData, data); + + // Merge in the tags and extra separately since objectMerge doesn't handle a deep merge + data.tags = objectMerge(objectMerge({}, this._globalContext.tags), data.tags); + data.extra = objectMerge(objectMerge({}, this._globalContext.extra), data.extra); + + // Send along our own collected metadata with extra + data.extra['session:duration'] = now() - this._startTime; + + if (this._breadcrumbs && this._breadcrumbs.length > 0) { + // intentionally make shallow copy so that additions + // to breadcrumbs aren't accidentally sent in this request + data.breadcrumbs = { + values: [].slice.call(this._breadcrumbs, 0) + }; + } + + if (this._globalContext.user) { + // sentry.interfaces.User + data.user = this._globalContext.user; + } + + // Include the environment if it's defined in globalOptions + if (globalOptions.environment) data.environment = globalOptions.environment; + + // Include the release if it's defined in globalOptions + if (globalOptions.release) data.release = globalOptions.release; + + // Include server_name if it's defined in globalOptions + if (globalOptions.serverName) data.server_name = globalOptions.serverName; + + data = this._sanitizeData(data); + + // Cleanup empty properties before sending them to the server + Object.keys(data).forEach(function(key) { + if (data[key] == null || data[key] === '' || isEmptyObject(data[key])) { + delete data[key]; + } + }); + + if (isFunction(globalOptions.dataCallback)) { + data = globalOptions.dataCallback(data) || data; + } + + // Why?????????? + if (!data || isEmptyObject(data)) { + return; + } + + // Check if the request should be filtered or not + if ( + isFunction(globalOptions.shouldSendCallback) && + !globalOptions.shouldSendCallback(data) + ) { + return; + } + + // Backoff state: Sentry server previously responded w/ an error (e.g. 429 - too many requests), + // so drop requests until "cool-off" period has elapsed. + if (this._shouldBackoff()) { + this._logDebug('warn', 'Raven dropped error due to backoff: ', data); + return; + } + + if (typeof globalOptions.sampleRate === 'number') { + if (Math.random() < globalOptions.sampleRate) { + this._sendProcessedPayload(data); + } + } else { + this._sendProcessedPayload(data); + } + }, + + _sanitizeData: function(data) { + return sanitize(data, this._globalOptions.sanitizeKeys); + }, + + _getUuid: function() { + return uuid4(); + }, + + _sendProcessedPayload: function(data, callback) { + var self = this; + var globalOptions = this._globalOptions; + + if (!this.isSetup()) return; + + // Try and clean up the packet before sending by truncating long values + data = this._trimPacket(data); + + // ideally duplicate error testing should occur *before* dataCallback/shouldSendCallback, + // but this would require copying an un-truncated copy of the data packet, which can be + // arbitrarily deep (extra_data) -- could be worthwhile? will revisit + if (!this._globalOptions.allowDuplicates && this._isRepeatData(data)) { + this._logDebug('warn', 'Raven dropped repeat event: ', data); + return; + } + + // Send along an event_id if not explicitly passed. + // This event_id can be used to reference the error within Sentry itself. + // Set lastEventId after we know the error should actually be sent + this._lastEventId = data.event_id || (data.event_id = this._getUuid()); + + // Store outbound payload after trim + this._lastData = data; + + this._logDebug('debug', 'Raven about to send:', data); + + var auth = { + sentry_version: '7', + sentry_client: 'raven-js/' + this.VERSION, + sentry_key: this._globalKey + }; + + if (this._globalSecret) { + auth.sentry_secret = this._globalSecret; + } + + var exception = data.exception && data.exception.values[0]; + + // only capture 'sentry' breadcrumb is autoBreadcrumbs is truthy + if ( + this._globalOptions.autoBreadcrumbs && + this._globalOptions.autoBreadcrumbs.sentry + ) { + this.captureBreadcrumb({ + category: 'sentry', + message: exception + ? (exception.type ? exception.type + ': ' : '') + exception.value + : data.message, + event_id: data.event_id, + level: data.level || 'error' // presume error unless specified + }); + } + + var url = this._globalEndpoint; + (globalOptions.transport || this._makeRequest).call(this, { + url: url, + auth: auth, + data: data, + options: globalOptions, + onSuccess: function success() { + self._resetBackoff(); + + self._triggerEvent('success', { + data: data, + src: url + }); + callback && callback(); + }, + onError: function failure(error) { + self._logDebug('error', 'Raven transport failed to send: ', error); + + if (error.request) { + self._setBackoffState(error.request); + } + + self._triggerEvent('failure', { + data: data, + src: url + }); + error = error || new Error('Raven send failed (no additional details provided)'); + callback && callback(error); + } + }); + }, + + _makeRequest: function(opts) { + // Auth is intentionally sent as part of query string (NOT as custom HTTP header) to avoid preflight CORS requests + var url = opts.url + '?' + urlencode(opts.auth); + + var evaluatedHeaders = null; + var evaluatedFetchParameters = {}; + + if (opts.options.headers) { + evaluatedHeaders = this._evaluateHash(opts.options.headers); + } + + if (opts.options.fetchParameters) { + evaluatedFetchParameters = this._evaluateHash(opts.options.fetchParameters); + } + + if (supportsFetch()) { + evaluatedFetchParameters.body = stringify(opts.data); + + var defaultFetchOptions = objectMerge({}, this._fetchDefaults); + var fetchOptions = objectMerge(defaultFetchOptions, evaluatedFetchParameters); + + if (evaluatedHeaders) { + fetchOptions.headers = evaluatedHeaders; + } + + return _window + .fetch(url, fetchOptions) + .then(function(response) { + if (response.ok) { + opts.onSuccess && opts.onSuccess(); + } else { + var error = new Error('Sentry error code: ' + response.status); + // It's called request only to keep compatibility with XHR interface + // and not add more redundant checks in setBackoffState method + error.request = response; + opts.onError && opts.onError(error); + } + }) + ['catch'](function() { + opts.onError && + opts.onError(new Error('Sentry error code: network unavailable')); + }); + } + + var request = _window.XMLHttpRequest && new _window.XMLHttpRequest(); + if (!request) return; + + // if browser doesn't support CORS (e.g. IE7), we are out of luck + var hasCORS = 'withCredentials' in request || typeof XDomainRequest !== 'undefined'; + + if (!hasCORS) return; + + if ('withCredentials' in request) { + request.onreadystatechange = function() { + if (request.readyState !== 4) { + return; + } else if (request.status === 200) { + opts.onSuccess && opts.onSuccess(); + } else if (opts.onError) { + var err = new Error('Sentry error code: ' + request.status); + err.request = request; + opts.onError(err); + } + }; + } else { + request = new XDomainRequest(); + // xdomainrequest cannot go http -> https (or vice versa), + // so always use protocol relative + url = url.replace(/^https?:/, ''); + + // onreadystatechange not supported by XDomainRequest + if (opts.onSuccess) { + request.onload = opts.onSuccess; + } + if (opts.onError) { + request.onerror = function() { + var err = new Error('Sentry error code: XDomainRequest'); + err.request = request; + opts.onError(err); + }; + } + } + + request.open('POST', url); + + if (evaluatedHeaders) { + each(evaluatedHeaders, function(key, value) { + request.setRequestHeader(key, value); + }); + } + + request.send(stringify(opts.data)); + }, + + _evaluateHash: function(hash) { + var evaluated = {}; + + for (var key in hash) { + if (hash.hasOwnProperty(key)) { + var value = hash[key]; + evaluated[key] = typeof value === 'function' ? value() : value; + } + } + + return evaluated; + }, + + _logDebug: function(level) { + // We allow `Raven.debug` and `Raven.config(DSN, { debug: true })` to not make backward incompatible API change + if ( + this._originalConsoleMethods[level] && + (this.debug || this._globalOptions.debug) + ) { + // In IE<10 console methods do not have their own 'apply' method + Function.prototype.apply.call( + this._originalConsoleMethods[level], + this._originalConsole, + [].slice.call(arguments, 1) + ); + } + }, + + _mergeContext: function(key, context) { + if (isUndefined(context)) { + delete this._globalContext[key]; + } else { + this._globalContext[key] = objectMerge(this._globalContext[key] || {}, context); + } + } +}; + +// Deprecations +Raven.prototype.setUser = Raven.prototype.setUserContext; +Raven.prototype.setReleaseContext = Raven.prototype.setRelease; + +module.exports = Raven; + +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"10":10,"3":3,"4":4,"7":7,"8":8,"9":9}],6:[function(_dereq_,module,exports){ +(function (global){ +/** + * Enforces a single instance of the Raven client, and the + * main entry point for Raven. If you are a consumer of the + * Raven library, you SHOULD load this file (vs raven.js). + **/ + +var RavenConstructor = _dereq_(5); + +// This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) +var _window = + typeof window !== 'undefined' + ? window + : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; +var _Raven = _window.Raven; + +var Raven = new RavenConstructor(); + +/* + * Allow multiple versions of Raven to be installed. + * Strip Raven from the global context and returns the instance. + * + * @return {Raven} + */ +Raven.noConflict = function() { + _window.Raven = _Raven; + return Raven; +}; + +Raven.afterLoad(); + +module.exports = Raven; + +/** + * DISCLAIMER: + * + * Expose `Client` constructor for cases where user want to track multiple "sub-applications" in one larger app. + * It's not meant to be used by a wide audience, so pleaaase make sure that you know what you're doing before using it. + * Accidentally calling `install` multiple times, may result in an unexpected behavior that's very hard to debug. + * + * It's called `Client' to be in-line with Raven Node implementation. + * + * HOWTO: + * + * import Raven from 'raven-js'; + * + * const someAppReporter = new Raven.Client(); + * const someOtherAppReporter = new Raven.Client(); + * + * someAppReporter.config('__DSN__', { + * ...config goes here + * }); + * + * someOtherAppReporter.config('__OTHER_DSN__', { + * ...config goes here + * }); + * + * someAppReporter.captureMessage(...); + * someAppReporter.captureException(...); + * someAppReporter.captureBreadcrumb(...); + * + * someOtherAppReporter.captureMessage(...); + * someOtherAppReporter.captureException(...); + * someOtherAppReporter.captureBreadcrumb(...); + * + * It should "just work". + */ +module.exports.Client = RavenConstructor; + +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"5":5}],7:[function(_dereq_,module,exports){ +(function (global){ +var stringify = _dereq_(9); + +var _window = + typeof window !== 'undefined' + ? window + : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; + +function isObject(what) { + return typeof what === 'object' && what !== null; +} + +// Yanked from https://git.io/vS8DV re-used under CC0 +// with some tiny modifications +function isError(value) { + switch (Object.prototype.toString.call(value)) { + case '[object Error]': + return true; + case '[object Exception]': + return true; + case '[object DOMException]': + return true; + default: + return value instanceof Error; + } +} + +function isErrorEvent(value) { + return Object.prototype.toString.call(value) === '[object ErrorEvent]'; +} + +function isDOMError(value) { + return Object.prototype.toString.call(value) === '[object DOMError]'; +} + +function isDOMException(value) { + return Object.prototype.toString.call(value) === '[object DOMException]'; +} + +function isUndefined(what) { + return what === void 0; +} + +function isFunction(what) { + return typeof what === 'function'; +} + +function isPlainObject(what) { + return Object.prototype.toString.call(what) === '[object Object]'; +} + +function isString(what) { + return Object.prototype.toString.call(what) === '[object String]'; +} + +function isArray(what) { + return Object.prototype.toString.call(what) === '[object Array]'; +} + +function isEmptyObject(what) { + if (!isPlainObject(what)) return false; + + for (var _ in what) { + if (what.hasOwnProperty(_)) { + return false; + } + } + return true; +} + +function supportsErrorEvent() { + try { + new ErrorEvent(''); // eslint-disable-line no-new + return true; + } catch (e) { + return false; + } +} + +function supportsDOMError() { + try { + new DOMError(''); // eslint-disable-line no-new + return true; + } catch (e) { + return false; + } +} + +function supportsDOMException() { + try { + new DOMException(''); // eslint-disable-line no-new + return true; + } catch (e) { + return false; + } +} + +function supportsFetch() { + if (!('fetch' in _window)) return false; + + try { + new Headers(); // eslint-disable-line no-new + new Request(''); // eslint-disable-line no-new + new Response(); // eslint-disable-line no-new + return true; + } catch (e) { + return false; + } +} + +// Despite all stars in the sky saying that Edge supports old draft syntax, aka 'never', 'always', 'origin' and 'default +// https://caniuse.com/#feat=referrer-policy +// It doesn't. And it throw exception instead of ignoring this parameter... +// REF: https://github.com/getsentry/raven-js/issues/1233 +function supportsReferrerPolicy() { + if (!supportsFetch()) return false; + + try { + // eslint-disable-next-line no-new + new Request('pickleRick', { + referrerPolicy: 'origin' + }); + return true; + } catch (e) { + return false; + } +} + +function supportsPromiseRejectionEvent() { + return typeof PromiseRejectionEvent === 'function'; +} + +function wrappedCallback(callback) { + function dataCallback(data, original) { + var normalizedData = callback(data) || data; + if (original) { + return original(normalizedData) || normalizedData; + } + return normalizedData; + } + + return dataCallback; +} + +function each(obj, callback) { + var i, j; + + if (isUndefined(obj.length)) { + for (i in obj) { + if (hasKey(obj, i)) { + callback.call(null, i, obj[i]); + } + } + } else { + j = obj.length; + if (j) { + for (i = 0; i < j; i++) { + callback.call(null, i, obj[i]); + } + } + } +} + +function objectMerge(obj1, obj2) { + if (!obj2) { + return obj1; + } + each(obj2, function(key, value) { + obj1[key] = value; + }); + return obj1; +} + +/** + * This function is only used for react-native. + * react-native freezes object that have already been sent over the + * js bridge. We need this function in order to check if the object is frozen. + * So it's ok that objectFrozen returns false if Object.isFrozen is not + * supported because it's not relevant for other "platforms". See related issue: + * https://github.com/getsentry/react-native-sentry/issues/57 + */ +function objectFrozen(obj) { + if (!Object.isFrozen) { + return false; + } + return Object.isFrozen(obj); +} + +function truncate(str, max) { + if (typeof max !== 'number') { + throw new Error('2nd argument to `truncate` function should be a number'); + } + if (typeof str !== 'string' || max === 0) { + return str; + } + return str.length <= max ? str : str.substr(0, max) + '\u2026'; +} + +/** + * hasKey, a better form of hasOwnProperty + * Example: hasKey(MainHostObject, property) === true/false + * + * @param {Object} host object to check property + * @param {string} key to check + */ +function hasKey(object, key) { + return Object.prototype.hasOwnProperty.call(object, key); +} + +function joinRegExp(patterns) { + // Combine an array of regular expressions and strings into one large regexp + // Be mad. + var sources = [], + i = 0, + len = patterns.length, + pattern; + + for (; i < len; i++) { + pattern = patterns[i]; + if (isString(pattern)) { + // If it's a string, we need to escape it + // Taken from: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions + sources.push(pattern.replace(/([.*+?^=!:${}()|\[\]\/\\])/g, '\\$1')); + } else if (pattern && pattern.source) { + // If it's a regexp already, we want to extract the source + sources.push(pattern.source); + } + // Intentionally skip other cases + } + return new RegExp(sources.join('|'), 'i'); +} + +function urlencode(o) { + var pairs = []; + each(o, function(key, value) { + pairs.push(encodeURIComponent(key) + '=' + encodeURIComponent(value)); + }); + return pairs.join('&'); +} + +// borrowed from https://tools.ietf.org/html/rfc3986#appendix-B +// intentionally using regex and not href parsing trick because React Native and other +// environments where DOM might not be available +function parseUrl(url) { + if (typeof url !== 'string') return {}; + var match = url.match(/^(([^:\/?#]+):)?(\/\/([^\/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?$/); + + // coerce to undefined values to empty string so we don't get 'undefined' + var query = match[6] || ''; + var fragment = match[8] || ''; + return { + protocol: match[2], + host: match[4], + path: match[5], + relative: match[5] + query + fragment // everything minus origin + }; +} +function uuid4() { + var crypto = _window.crypto || _window.msCrypto; + + if (!isUndefined(crypto) && crypto.getRandomValues) { + // Use window.crypto API if available + // eslint-disable-next-line no-undef + var arr = new Uint16Array(8); + crypto.getRandomValues(arr); + + // set 4 in byte 7 + arr[3] = (arr[3] & 0xfff) | 0x4000; + // set 2 most significant bits of byte 9 to '10' + arr[4] = (arr[4] & 0x3fff) | 0x8000; + + var pad = function(num) { + var v = num.toString(16); + while (v.length < 4) { + v = '0' + v; + } + return v; + }; + + return ( + pad(arr[0]) + + pad(arr[1]) + + pad(arr[2]) + + pad(arr[3]) + + pad(arr[4]) + + pad(arr[5]) + + pad(arr[6]) + + pad(arr[7]) + ); + } else { + // http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/2117523#2117523 + return 'xxxxxxxxxxxx4xxxyxxxxxxxxxxxxxxx'.replace(/[xy]/g, function(c) { + var r = (Math.random() * 16) | 0, + v = c === 'x' ? r : (r & 0x3) | 0x8; + return v.toString(16); + }); + } +} + +/** + * Given a child DOM element, returns a query-selector statement describing that + * and its ancestors + * e.g. [HTMLElement] => body > div > input#foo.btn[name=baz] + * @param elem + * @returns {string} + */ +function htmlTreeAsString(elem) { + /* eslint no-extra-parens:0*/ + var MAX_TRAVERSE_HEIGHT = 5, + MAX_OUTPUT_LEN = 80, + out = [], + height = 0, + len = 0, + separator = ' > ', + sepLength = separator.length, + nextStr; + + while (elem && height++ < MAX_TRAVERSE_HEIGHT) { + nextStr = htmlElementAsString(elem); + // bail out if + // - nextStr is the 'html' element + // - the length of the string that would be created exceeds MAX_OUTPUT_LEN + // (ignore this limit if we are on the first iteration) + if ( + nextStr === 'html' || + (height > 1 && len + out.length * sepLength + nextStr.length >= MAX_OUTPUT_LEN) + ) { + break; + } + + out.push(nextStr); + + len += nextStr.length; + elem = elem.parentNode; + } + + return out.reverse().join(separator); +} + +/** + * Returns a simple, query-selector representation of a DOM element + * e.g. [HTMLElement] => input#foo.btn[name=baz] + * @param HTMLElement + * @returns {string} + */ +function htmlElementAsString(elem) { + var out = [], + className, + classes, + key, + attr, + i; + + if (!elem || !elem.tagName) { + return ''; + } + + out.push(elem.tagName.toLowerCase()); + if (elem.id) { + out.push('#' + elem.id); + } + + className = elem.className; + if (className && isString(className)) { + classes = className.split(/\s+/); + for (i = 0; i < classes.length; i++) { + out.push('.' + classes[i]); + } + } + var attrWhitelist = ['type', 'name', 'title', 'alt']; + for (i = 0; i < attrWhitelist.length; i++) { + key = attrWhitelist[i]; + attr = elem.getAttribute(key); + if (attr) { + out.push('[' + key + '="' + attr + '"]'); + } + } + return out.join(''); +} + +/** + * Returns true if either a OR b is truthy, but not both + */ +function isOnlyOneTruthy(a, b) { + return !!(!!a ^ !!b); +} + +/** + * Returns true if both parameters are undefined + */ +function isBothUndefined(a, b) { + return isUndefined(a) && isUndefined(b); +} + +/** + * Returns true if the two input exception interfaces have the same content + */ +function isSameException(ex1, ex2) { + if (isOnlyOneTruthy(ex1, ex2)) return false; + + ex1 = ex1.values[0]; + ex2 = ex2.values[0]; + + if (ex1.type !== ex2.type || ex1.value !== ex2.value) return false; + + // in case both stacktraces are undefined, we can't decide so default to false + if (isBothUndefined(ex1.stacktrace, ex2.stacktrace)) return false; + + return isSameStacktrace(ex1.stacktrace, ex2.stacktrace); +} + +/** + * Returns true if the two input stack trace interfaces have the same content + */ +function isSameStacktrace(stack1, stack2) { + if (isOnlyOneTruthy(stack1, stack2)) return false; + + var frames1 = stack1.frames; + var frames2 = stack2.frames; + + // Exit early if frame count differs + if (frames1.length !== frames2.length) return false; + + // Iterate through every frame; bail out if anything differs + var a, b; + for (var i = 0; i < frames1.length; i++) { + a = frames1[i]; + b = frames2[i]; + if ( + a.filename !== b.filename || + a.lineno !== b.lineno || + a.colno !== b.colno || + a['function'] !== b['function'] + ) + return false; + } + return true; +} + +/** + * Polyfill a method + * @param obj object e.g. `document` + * @param name method name present on object e.g. `addEventListener` + * @param replacement replacement function + * @param track {optional} record instrumentation to an array + */ +function fill(obj, name, replacement, track) { + if (obj == null) return; + var orig = obj[name]; + obj[name] = replacement(orig); + obj[name].__raven__ = true; + obj[name].__orig__ = orig; + if (track) { + track.push([obj, name, orig]); + } +} + +/** + * Join values in array + * @param input array of values to be joined together + * @param delimiter string to be placed in-between values + * @returns {string} + */ +function safeJoin(input, delimiter) { + if (!isArray(input)) return ''; + + var output = []; + + for (var i = 0; i < input.length; i++) { + try { + output.push(String(input[i])); + } catch (e) { + output.push('[value cannot be serialized]'); + } + } + + return output.join(delimiter); +} + +// Default Node.js REPL depth +var MAX_SERIALIZE_EXCEPTION_DEPTH = 3; +// 50kB, as 100kB is max payload size, so half sounds reasonable +var MAX_SERIALIZE_EXCEPTION_SIZE = 50 * 1024; +var MAX_SERIALIZE_KEYS_LENGTH = 40; + +function utf8Length(value) { + return ~-encodeURI(value).split(/%..|./).length; +} + +function jsonSize(value) { + return utf8Length(JSON.stringify(value)); +} + +function serializeValue(value) { + if (typeof value === 'string') { + var maxLength = 40; + return truncate(value, maxLength); + } else if ( + typeof value === 'number' || + typeof value === 'boolean' || + typeof value === 'undefined' + ) { + return value; + } + + var type = Object.prototype.toString.call(value); + + // Node.js REPL notation + if (type === '[object Object]') return '[Object]'; + if (type === '[object Array]') return '[Array]'; + if (type === '[object Function]') + return value.name ? '[Function: ' + value.name + ']' : '[Function]'; + + return value; +} + +function serializeObject(value, depth) { + if (depth === 0) return serializeValue(value); + + if (isPlainObject(value)) { + return Object.keys(value).reduce(function(acc, key) { + acc[key] = serializeObject(value[key], depth - 1); + return acc; + }, {}); + } else if (Array.isArray(value)) { + return value.map(function(val) { + return serializeObject(val, depth - 1); + }); + } + + return serializeValue(value); +} + +function serializeException(ex, depth, maxSize) { + if (!isPlainObject(ex)) return ex; + + depth = typeof depth !== 'number' ? MAX_SERIALIZE_EXCEPTION_DEPTH : depth; + maxSize = typeof depth !== 'number' ? MAX_SERIALIZE_EXCEPTION_SIZE : maxSize; + + var serialized = serializeObject(ex, depth); + + if (jsonSize(stringify(serialized)) > maxSize) { + return serializeException(ex, depth - 1); + } + + return serialized; +} + +function serializeKeysForMessage(keys, maxLength) { + if (typeof keys === 'number' || typeof keys === 'string') return keys.toString(); + if (!Array.isArray(keys)) return ''; + + keys = keys.filter(function(key) { + return typeof key === 'string'; + }); + if (keys.length === 0) return '[object has no keys]'; + + maxLength = typeof maxLength !== 'number' ? MAX_SERIALIZE_KEYS_LENGTH : maxLength; + if (keys[0].length >= maxLength) return keys[0]; + + for (var usedKeys = keys.length; usedKeys > 0; usedKeys--) { + var serialized = keys.slice(0, usedKeys).join(', '); + if (serialized.length > maxLength) continue; + if (usedKeys === keys.length) return serialized; + return serialized + '\u2026'; + } + + return ''; +} + +function sanitize(input, sanitizeKeys) { + if (!isArray(sanitizeKeys) || (isArray(sanitizeKeys) && sanitizeKeys.length === 0)) + return input; + + var sanitizeRegExp = joinRegExp(sanitizeKeys); + var sanitizeMask = '********'; + var safeInput; + + try { + safeInput = JSON.parse(stringify(input)); + } catch (o_O) { + return input; + } + + function sanitizeWorker(workerInput) { + if (isArray(workerInput)) { + return workerInput.map(function(val) { + return sanitizeWorker(val); + }); + } + + if (isPlainObject(workerInput)) { + return Object.keys(workerInput).reduce(function(acc, k) { + if (sanitizeRegExp.test(k)) { + acc[k] = sanitizeMask; + } else { + acc[k] = sanitizeWorker(workerInput[k]); + } + return acc; + }, {}); + } + + return workerInput; + } + + return sanitizeWorker(safeInput); +} + +module.exports = { + isObject: isObject, + isError: isError, + isErrorEvent: isErrorEvent, + isDOMError: isDOMError, + isDOMException: isDOMException, + isUndefined: isUndefined, + isFunction: isFunction, + isPlainObject: isPlainObject, + isString: isString, + isArray: isArray, + isEmptyObject: isEmptyObject, + supportsErrorEvent: supportsErrorEvent, + supportsDOMError: supportsDOMError, + supportsDOMException: supportsDOMException, + supportsFetch: supportsFetch, + supportsReferrerPolicy: supportsReferrerPolicy, + supportsPromiseRejectionEvent: supportsPromiseRejectionEvent, + wrappedCallback: wrappedCallback, + each: each, + objectMerge: objectMerge, + truncate: truncate, + objectFrozen: objectFrozen, + hasKey: hasKey, + joinRegExp: joinRegExp, + urlencode: urlencode, + uuid4: uuid4, + htmlTreeAsString: htmlTreeAsString, + htmlElementAsString: htmlElementAsString, + isSameException: isSameException, + isSameStacktrace: isSameStacktrace, + parseUrl: parseUrl, + fill: fill, + safeJoin: safeJoin, + serializeException: serializeException, + serializeKeysForMessage: serializeKeysForMessage, + sanitize: sanitize +}; + +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"9":9}],8:[function(_dereq_,module,exports){ +(function (global){ +var utils = _dereq_(7); + +/* + TraceKit - Cross brower stack traces + + This was originally forked from github.com/occ/TraceKit, but has since been + largely re-written and is now maintained as part of raven-js. Tests for + this are in test/vendor. + + MIT license +*/ + +var TraceKit = { + collectWindowErrors: true, + debug: false +}; + +// This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) +var _window = + typeof window !== 'undefined' + ? window + : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; + +// global reference to slice +var _slice = [].slice; +var UNKNOWN_FUNCTION = '?'; + +// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error#Error_types +var ERROR_TYPES_RE = /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/; + +function getLocationHref() { + if (typeof document === 'undefined' || document.location == null) return ''; + return document.location.href; +} + +function getLocationOrigin() { + if (typeof document === 'undefined' || document.location == null) return ''; + + // Oh dear IE10... + if (!document.location.origin) { + document.location.origin = + document.location.protocol + + '//' + + document.location.hostname + + (document.location.port ? ':' + document.location.port : ''); + } + + return document.location.origin; +} + +/** + * TraceKit.report: cross-browser processing of unhandled exceptions + * + * Syntax: + * TraceKit.report.subscribe(function(stackInfo) { ... }) + * TraceKit.report.unsubscribe(function(stackInfo) { ... }) + * TraceKit.report(exception) + * try { ...code... } catch(ex) { TraceKit.report(ex); } + * + * Supports: + * - Firefox: full stack trace with line numbers, plus column number + * on top frame; column number is not guaranteed + * - Opera: full stack trace with line and column numbers + * - Chrome: full stack trace with line and column numbers + * - Safari: line and column number for the top frame only; some frames + * may be missing, and column number is not guaranteed + * - IE: line and column number for the top frame only; some frames + * may be missing, and column number is not guaranteed + * + * In theory, TraceKit should work on all of the following versions: + * - IE5.5+ (only 8.0 tested) + * - Firefox 0.9+ (only 3.5+ tested) + * - Opera 7+ (only 10.50 tested; versions 9 and earlier may require + * Exceptions Have Stacktrace to be enabled in opera:config) + * - Safari 3+ (only 4+ tested) + * - Chrome 1+ (only 5+ tested) + * - Konqueror 3.5+ (untested) + * + * Requires TraceKit.computeStackTrace. + * + * Tries to catch all unhandled exceptions and report them to the + * subscribed handlers. Please note that TraceKit.report will rethrow the + * exception. This is REQUIRED in order to get a useful stack trace in IE. + * If the exception does not reach the top of the browser, you will only + * get a stack trace from the point where TraceKit.report was called. + * + * Handlers receive a stackInfo object as described in the + * TraceKit.computeStackTrace docs. + */ +TraceKit.report = (function reportModuleWrapper() { + var handlers = [], + lastArgs = null, + lastException = null, + lastExceptionStack = null; + + /** + * Add a crash handler. + * @param {Function} handler + */ + function subscribe(handler) { + installGlobalHandler(); + handlers.push(handler); + } + + /** + * Remove a crash handler. + * @param {Function} handler + */ + function unsubscribe(handler) { + for (var i = handlers.length - 1; i >= 0; --i) { + if (handlers[i] === handler) { + handlers.splice(i, 1); + } + } + } + + /** + * Remove all crash handlers. + */ + function unsubscribeAll() { + uninstallGlobalHandler(); + handlers = []; + } + + /** + * Dispatch stack information to all handlers. + * @param {Object.} stack + */ + function notifyHandlers(stack, isWindowError) { + var exception = null; + if (isWindowError && !TraceKit.collectWindowErrors) { + return; + } + for (var i in handlers) { + if (handlers.hasOwnProperty(i)) { + try { + handlers[i].apply(null, [stack].concat(_slice.call(arguments, 2))); + } catch (inner) { + exception = inner; + } + } + } + + if (exception) { + throw exception; + } + } + + var _oldOnerrorHandler, _onErrorHandlerInstalled; + + /** + * Ensures all global unhandled exceptions are recorded. + * Supported by Gecko and IE. + * @param {string} msg Error message. + * @param {string} url URL of script that generated the exception. + * @param {(number|string)} lineNo The line number at which the error + * occurred. + * @param {?(number|string)} colNo The column number at which the error + * occurred. + * @param {?Error} ex The actual Error object. + */ + function traceKitWindowOnError(msg, url, lineNo, colNo, ex) { + var stack = null; + // If 'ex' is ErrorEvent, get real Error from inside + var exception = utils.isErrorEvent(ex) ? ex.error : ex; + // If 'msg' is ErrorEvent, get real message from inside + var message = utils.isErrorEvent(msg) ? msg.message : msg; + + if (lastExceptionStack) { + TraceKit.computeStackTrace.augmentStackTraceWithInitialElement( + lastExceptionStack, + url, + lineNo, + message + ); + processLastException(); + } else if (exception && utils.isError(exception)) { + // non-string `exception` arg; attempt to extract stack trace + + // New chrome and blink send along a real error object + // Let's just report that like a normal error. + // See: https://mikewest.org/2013/08/debugging-runtime-errors-with-window-onerror + stack = TraceKit.computeStackTrace(exception); + notifyHandlers(stack, true); + } else { + var location = { + url: url, + line: lineNo, + column: colNo + }; + + var name = undefined; + var groups; + + if ({}.toString.call(message) === '[object String]') { + var groups = message.match(ERROR_TYPES_RE); + if (groups) { + name = groups[1]; + message = groups[2]; + } + } + + location.func = UNKNOWN_FUNCTION; + + stack = { + name: name, + message: message, + url: getLocationHref(), + stack: [location] + }; + notifyHandlers(stack, true); + } + + if (_oldOnerrorHandler) { + return _oldOnerrorHandler.apply(this, arguments); + } + + return false; + } + + function installGlobalHandler() { + if (_onErrorHandlerInstalled) { + return; + } + _oldOnerrorHandler = _window.onerror; + _window.onerror = traceKitWindowOnError; + _onErrorHandlerInstalled = true; + } + + function uninstallGlobalHandler() { + if (!_onErrorHandlerInstalled) { + return; + } + _window.onerror = _oldOnerrorHandler; + _onErrorHandlerInstalled = false; + _oldOnerrorHandler = undefined; + } + + function processLastException() { + var _lastExceptionStack = lastExceptionStack, + _lastArgs = lastArgs; + lastArgs = null; + lastExceptionStack = null; + lastException = null; + notifyHandlers.apply(null, [_lastExceptionStack, false].concat(_lastArgs)); + } + + /** + * Reports an unhandled Error to TraceKit. + * @param {Error} ex + * @param {?boolean} rethrow If false, do not re-throw the exception. + * Only used for window.onerror to not cause an infinite loop of + * rethrowing. + */ + function report(ex, rethrow) { + var args = _slice.call(arguments, 1); + if (lastExceptionStack) { + if (lastException === ex) { + return; // already caught by an inner catch block, ignore + } else { + processLastException(); + } + } + + var stack = TraceKit.computeStackTrace(ex); + lastExceptionStack = stack; + lastException = ex; + lastArgs = args; + + // If the stack trace is incomplete, wait for 2 seconds for + // slow slow IE to see if onerror occurs or not before reporting + // this exception; otherwise, we will end up with an incomplete + // stack trace + setTimeout(function() { + if (lastException === ex) { + processLastException(); + } + }, stack.incomplete ? 2000 : 0); + + if (rethrow !== false) { + throw ex; // re-throw to propagate to the top level (and cause window.onerror) + } + } + + report.subscribe = subscribe; + report.unsubscribe = unsubscribe; + report.uninstall = unsubscribeAll; + return report; +})(); + +/** + * TraceKit.computeStackTrace: cross-browser stack traces in JavaScript + * + * Syntax: + * s = TraceKit.computeStackTrace(exception) // consider using TraceKit.report instead (see below) + * Returns: + * s.name - exception name + * s.message - exception message + * s.stack[i].url - JavaScript or HTML file URL + * s.stack[i].func - function name, or empty for anonymous functions (if guessing did not work) + * s.stack[i].args - arguments passed to the function, if known + * s.stack[i].line - line number, if known + * s.stack[i].column - column number, if known + * + * Supports: + * - Firefox: full stack trace with line numbers and unreliable column + * number on top frame + * - Opera 10: full stack trace with line and column numbers + * - Opera 9-: full stack trace with line numbers + * - Chrome: full stack trace with line and column numbers + * - Safari: line and column number for the topmost stacktrace element + * only + * - IE: no line numbers whatsoever + * + * Tries to guess names of anonymous functions by looking for assignments + * in the source code. In IE and Safari, we have to guess source file names + * by searching for function bodies inside all page scripts. This will not + * work for scripts that are loaded cross-domain. + * Here be dragons: some function names may be guessed incorrectly, and + * duplicate functions may be mismatched. + * + * TraceKit.computeStackTrace should only be used for tracing purposes. + * Logging of unhandled exceptions should be done with TraceKit.report, + * which builds on top of TraceKit.computeStackTrace and provides better + * IE support by utilizing the window.onerror event to retrieve information + * about the top of the stack. + * + * Note: In IE and Safari, no stack trace is recorded on the Error object, + * so computeStackTrace instead walks its *own* chain of callers. + * This means that: + * * in Safari, some methods may be missing from the stack trace; + * * in IE, the topmost function in the stack trace will always be the + * caller of computeStackTrace. + * + * This is okay for tracing (because you are likely to be calling + * computeStackTrace from the function you want to be the topmost element + * of the stack trace anyway), but not okay for logging unhandled + * exceptions (because your catch block will likely be far away from the + * inner function that actually caused the exception). + * + */ +TraceKit.computeStackTrace = (function computeStackTraceWrapper() { + // Contents of Exception in various browsers. + // + // SAFARI: + // ex.message = Can't find variable: qq + // ex.line = 59 + // ex.sourceId = 580238192 + // ex.sourceURL = http://... + // ex.expressionBeginOffset = 96 + // ex.expressionCaretOffset = 98 + // ex.expressionEndOffset = 98 + // ex.name = ReferenceError + // + // FIREFOX: + // ex.message = qq is not defined + // ex.fileName = http://... + // ex.lineNumber = 59 + // ex.columnNumber = 69 + // ex.stack = ...stack trace... (see the example below) + // ex.name = ReferenceError + // + // CHROME: + // ex.message = qq is not defined + // ex.name = ReferenceError + // ex.type = not_defined + // ex.arguments = ['aa'] + // ex.stack = ...stack trace... + // + // INTERNET EXPLORER: + // ex.message = ... + // ex.name = ReferenceError + // + // OPERA: + // ex.message = ...message... (see the example below) + // ex.name = ReferenceError + // ex.opera#sourceloc = 11 (pretty much useless, duplicates the info in ex.message) + // ex.stacktrace = n/a; see 'opera:config#UserPrefs|Exceptions Have Stacktrace' + + /** + * Computes stack trace information from the stack property. + * Chrome and Gecko use this property. + * @param {Error} ex + * @return {?Object.} Stack trace information. + */ + function computeStackTraceFromStackProp(ex) { + if (typeof ex.stack === 'undefined' || !ex.stack) return; + + var chrome = /^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i; + var winjs = /^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i; + // NOTE: blob urls are now supposed to always have an origin, therefore it's format + // which is `blob:http://url/path/with-some-uuid`, is matched by `blob.*?:\/` as well + var gecko = /^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i; + // Used to additionally parse URL/line/column from eval frames + var geckoEval = /(\S+) line (\d+)(?: > eval line \d+)* > eval/i; + var chromeEval = /\((\S*)(?::(\d+))(?::(\d+))\)/; + var lines = ex.stack.split('\n'); + var stack = []; + var submatch; + var parts; + var element; + var reference = /^(.*) is undefined$/.exec(ex.message); + + for (var i = 0, j = lines.length; i < j; ++i) { + if ((parts = chrome.exec(lines[i]))) { + var isNative = parts[2] && parts[2].indexOf('native') === 0; // start of line + var isEval = parts[2] && parts[2].indexOf('eval') === 0; // start of line + if (isEval && (submatch = chromeEval.exec(parts[2]))) { + // throw out eval line/column and use top-most line/column number + parts[2] = submatch[1]; // url + parts[3] = submatch[2]; // line + parts[4] = submatch[3]; // column + } + element = { + url: !isNative ? parts[2] : null, + func: parts[1] || UNKNOWN_FUNCTION, + args: isNative ? [parts[2]] : [], + line: parts[3] ? +parts[3] : null, + column: parts[4] ? +parts[4] : null + }; + } else if ((parts = winjs.exec(lines[i]))) { + element = { + url: parts[2], + func: parts[1] || UNKNOWN_FUNCTION, + args: [], + line: +parts[3], + column: parts[4] ? +parts[4] : null + }; + } else if ((parts = gecko.exec(lines[i]))) { + var isEval = parts[3] && parts[3].indexOf(' > eval') > -1; + if (isEval && (submatch = geckoEval.exec(parts[3]))) { + // throw out eval line/column and use top-most line number + parts[3] = submatch[1]; + parts[4] = submatch[2]; + parts[5] = null; // no column when eval + } else if (i === 0 && !parts[5] && typeof ex.columnNumber !== 'undefined') { + // FireFox uses this awesome columnNumber property for its top frame + // Also note, Firefox's column number is 0-based and everything else expects 1-based, + // so adding 1 + // NOTE: this hack doesn't work if top-most frame is eval + stack[0].column = ex.columnNumber + 1; + } + element = { + url: parts[3], + func: parts[1] || UNKNOWN_FUNCTION, + args: parts[2] ? parts[2].split(',') : [], + line: parts[4] ? +parts[4] : null, + column: parts[5] ? +parts[5] : null + }; + } else { + continue; + } + + if (!element.func && element.line) { + element.func = UNKNOWN_FUNCTION; + } + + if (element.url && element.url.substr(0, 5) === 'blob:') { + // Special case for handling JavaScript loaded into a blob. + // We use a synchronous AJAX request here as a blob is already in + // memory - it's not making a network request. This will generate a warning + // in the browser console, but there has already been an error so that's not + // that much of an issue. + var xhr = new XMLHttpRequest(); + xhr.open('GET', element.url, false); + xhr.send(null); + + // If we failed to download the source, skip this patch + if (xhr.status === 200) { + var source = xhr.responseText || ''; + + // We trim the source down to the last 300 characters as sourceMappingURL is always at the end of the file. + // Why 300? To be in line with: https://github.com/getsentry/sentry/blob/4af29e8f2350e20c28a6933354e4f42437b4ba42/src/sentry/lang/javascript/processor.py#L164-L175 + source = source.slice(-300); + + // Now we dig out the source map URL + var sourceMaps = source.match(/\/\/# sourceMappingURL=(.*)$/); + + // If we don't find a source map comment or we find more than one, continue on to the next element. + if (sourceMaps) { + var sourceMapAddress = sourceMaps[1]; + + // Now we check to see if it's a relative URL. + // If it is, convert it to an absolute one. + if (sourceMapAddress.charAt(0) === '~') { + sourceMapAddress = getLocationOrigin() + sourceMapAddress.slice(1); + } + + // Now we strip the '.map' off of the end of the URL and update the + // element so that Sentry can match the map to the blob. + element.url = sourceMapAddress.slice(0, -4); + } + } + } + + stack.push(element); + } + + if (!stack.length) { + return null; + } + + return { + name: ex.name, + message: ex.message, + url: getLocationHref(), + stack: stack + }; + } + + /** + * Adds information about the first frame to incomplete stack traces. + * Safari and IE require this to get complete data on the first frame. + * @param {Object.} stackInfo Stack trace information from + * one of the compute* methods. + * @param {string} url The URL of the script that caused an error. + * @param {(number|string)} lineNo The line number of the script that + * caused an error. + * @param {string=} message The error generated by the browser, which + * hopefully contains the name of the object that caused the error. + * @return {boolean} Whether or not the stack information was + * augmented. + */ + function augmentStackTraceWithInitialElement(stackInfo, url, lineNo, message) { + var initial = { + url: url, + line: lineNo + }; + + if (initial.url && initial.line) { + stackInfo.incomplete = false; + + if (!initial.func) { + initial.func = UNKNOWN_FUNCTION; + } + + if (stackInfo.stack.length > 0) { + if (stackInfo.stack[0].url === initial.url) { + if (stackInfo.stack[0].line === initial.line) { + return false; // already in stack trace + } else if ( + !stackInfo.stack[0].line && + stackInfo.stack[0].func === initial.func + ) { + stackInfo.stack[0].line = initial.line; + return false; + } + } + } + + stackInfo.stack.unshift(initial); + stackInfo.partial = true; + return true; + } else { + stackInfo.incomplete = true; + } + + return false; + } + + /** + * Computes stack trace information by walking the arguments.caller + * chain at the time the exception occurred. This will cause earlier + * frames to be missed but is the only way to get any stack trace in + * Safari and IE. The top frame is restored by + * {@link augmentStackTraceWithInitialElement}. + * @param {Error} ex + * @return {?Object.} Stack trace information. + */ + function computeStackTraceByWalkingCallerChain(ex, depth) { + var functionName = /function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i, + stack = [], + funcs = {}, + recursion = false, + parts, + item, + source; + + for ( + var curr = computeStackTraceByWalkingCallerChain.caller; + curr && !recursion; + curr = curr.caller + ) { + if (curr === computeStackTrace || curr === TraceKit.report) { + // console.log('skipping internal function'); + continue; + } + + item = { + url: null, + func: UNKNOWN_FUNCTION, + line: null, + column: null + }; + + if (curr.name) { + item.func = curr.name; + } else if ((parts = functionName.exec(curr.toString()))) { + item.func = parts[1]; + } + + if (typeof item.func === 'undefined') { + try { + item.func = parts.input.substring(0, parts.input.indexOf('{')); + } catch (e) {} + } + + if (funcs['' + curr]) { + recursion = true; + } else { + funcs['' + curr] = true; + } + + stack.push(item); + } + + if (depth) { + // console.log('depth is ' + depth); + // console.log('stack is ' + stack.length); + stack.splice(0, depth); + } + + var result = { + name: ex.name, + message: ex.message, + url: getLocationHref(), + stack: stack + }; + augmentStackTraceWithInitialElement( + result, + ex.sourceURL || ex.fileName, + ex.line || ex.lineNumber, + ex.message || ex.description + ); + return result; + } + + /** + * Computes a stack trace for an exception. + * @param {Error} ex + * @param {(string|number)=} depth + */ + function computeStackTrace(ex, depth) { + var stack = null; + depth = depth == null ? 0 : +depth; + + try { + stack = computeStackTraceFromStackProp(ex); + if (stack) { + return stack; + } + } catch (e) { + if (TraceKit.debug) { + throw e; + } + } + + try { + stack = computeStackTraceByWalkingCallerChain(ex, depth + 1); + if (stack) { + return stack; + } + } catch (e) { + if (TraceKit.debug) { + throw e; + } + } + return { + name: ex.name, + message: ex.message, + url: getLocationHref() + }; + } + + computeStackTrace.augmentStackTraceWithInitialElement = augmentStackTraceWithInitialElement; + computeStackTrace.computeStackTraceFromStackProp = computeStackTraceFromStackProp; + + return computeStackTrace; +})(); + +module.exports = TraceKit; + +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"7":7}],9:[function(_dereq_,module,exports){ +/* + json-stringify-safe + Like JSON.stringify, but doesn't throw on circular references. + + Originally forked from https://github.com/isaacs/json-stringify-safe + version 5.0.1 on 3/8/2017 and modified to handle Errors serialization + and IE8 compatibility. Tests for this are in test/vendor. + + ISC license: https://github.com/isaacs/json-stringify-safe/blob/master/LICENSE +*/ + +exports = module.exports = stringify; +exports.getSerialize = serializer; + +function indexOf(haystack, needle) { + for (var i = 0; i < haystack.length; ++i) { + if (haystack[i] === needle) return i; + } + return -1; +} + +function stringify(obj, replacer, spaces, cycleReplacer) { + return JSON.stringify(obj, serializer(replacer, cycleReplacer), spaces); +} + +// https://github.com/ftlabs/js-abbreviate/blob/fa709e5f139e7770a71827b1893f22418097fbda/index.js#L95-L106 +function stringifyError(value) { + var err = { + // These properties are implemented as magical getters and don't show up in for in + stack: value.stack, + message: value.message, + name: value.name + }; + + for (var i in value) { + if (Object.prototype.hasOwnProperty.call(value, i)) { + err[i] = value[i]; + } + } + + return err; +} + +function serializer(replacer, cycleReplacer) { + var stack = []; + var keys = []; + + if (cycleReplacer == null) { + cycleReplacer = function(key, value) { + if (stack[0] === value) { + return '[Circular ~]'; + } + return '[Circular ~.' + keys.slice(0, indexOf(stack, value)).join('.') + ']'; + }; + } + + return function(key, value) { + if (stack.length > 0) { + var thisPos = indexOf(stack, this); + ~thisPos ? stack.splice(thisPos + 1) : stack.push(this); + ~thisPos ? keys.splice(thisPos, Infinity, key) : keys.push(key); + + if (~indexOf(stack, value)) { + value = cycleReplacer.call(this, key, value); + } + } else { + stack.push(value); + } + + return replacer == null + ? value instanceof Error ? stringifyError(value) : value + : replacer.call(this, key, value); + }; +} + +},{}],10:[function(_dereq_,module,exports){ +/* + * JavaScript MD5 + * https://github.com/blueimp/JavaScript-MD5 + * + * Copyright 2011, Sebastian Tschan + * https://blueimp.net + * + * Licensed under the MIT license: + * https://opensource.org/licenses/MIT + * + * Based on + * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message + * Digest Algorithm, as defined in RFC 1321. + * Version 2.2 Copyright (C) Paul Johnston 1999 - 2009 + * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet + * Distributed under the BSD License + * See http://pajhome.org.uk/crypt/md5 for more info. + */ + +/* +* Add integers, wrapping at 2^32. This uses 16-bit operations internally +* to work around bugs in some JS interpreters. +*/ +function safeAdd(x, y) { + var lsw = (x & 0xffff) + (y & 0xffff); + var msw = (x >> 16) + (y >> 16) + (lsw >> 16); + return (msw << 16) | (lsw & 0xffff); +} + +/* +* Bitwise rotate a 32-bit number to the left. +*/ +function bitRotateLeft(num, cnt) { + return (num << cnt) | (num >>> (32 - cnt)); +} + +/* +* These functions implement the four basic operations the algorithm uses. +*/ +function md5cmn(q, a, b, x, s, t) { + return safeAdd(bitRotateLeft(safeAdd(safeAdd(a, q), safeAdd(x, t)), s), b); +} +function md5ff(a, b, c, d, x, s, t) { + return md5cmn((b & c) | (~b & d), a, b, x, s, t); +} +function md5gg(a, b, c, d, x, s, t) { + return md5cmn((b & d) | (c & ~d), a, b, x, s, t); +} +function md5hh(a, b, c, d, x, s, t) { + return md5cmn(b ^ c ^ d, a, b, x, s, t); +} +function md5ii(a, b, c, d, x, s, t) { + return md5cmn(c ^ (b | ~d), a, b, x, s, t); +} + +/* +* Calculate the MD5 of an array of little-endian words, and a bit length. +*/ +function binlMD5(x, len) { + /* append padding */ + x[len >> 5] |= 0x80 << (len % 32); + x[(((len + 64) >>> 9) << 4) + 14] = len; + + var i; + var olda; + var oldb; + var oldc; + var oldd; + var a = 1732584193; + var b = -271733879; + var c = -1732584194; + var d = 271733878; + + for (i = 0; i < x.length; i += 16) { + olda = a; + oldb = b; + oldc = c; + oldd = d; + + a = md5ff(a, b, c, d, x[i], 7, -680876936); + d = md5ff(d, a, b, c, x[i + 1], 12, -389564586); + c = md5ff(c, d, a, b, x[i + 2], 17, 606105819); + b = md5ff(b, c, d, a, x[i + 3], 22, -1044525330); + a = md5ff(a, b, c, d, x[i + 4], 7, -176418897); + d = md5ff(d, a, b, c, x[i + 5], 12, 1200080426); + c = md5ff(c, d, a, b, x[i + 6], 17, -1473231341); + b = md5ff(b, c, d, a, x[i + 7], 22, -45705983); + a = md5ff(a, b, c, d, x[i + 8], 7, 1770035416); + d = md5ff(d, a, b, c, x[i + 9], 12, -1958414417); + c = md5ff(c, d, a, b, x[i + 10], 17, -42063); + b = md5ff(b, c, d, a, x[i + 11], 22, -1990404162); + a = md5ff(a, b, c, d, x[i + 12], 7, 1804603682); + d = md5ff(d, a, b, c, x[i + 13], 12, -40341101); + c = md5ff(c, d, a, b, x[i + 14], 17, -1502002290); + b = md5ff(b, c, d, a, x[i + 15], 22, 1236535329); + + a = md5gg(a, b, c, d, x[i + 1], 5, -165796510); + d = md5gg(d, a, b, c, x[i + 6], 9, -1069501632); + c = md5gg(c, d, a, b, x[i + 11], 14, 643717713); + b = md5gg(b, c, d, a, x[i], 20, -373897302); + a = md5gg(a, b, c, d, x[i + 5], 5, -701558691); + d = md5gg(d, a, b, c, x[i + 10], 9, 38016083); + c = md5gg(c, d, a, b, x[i + 15], 14, -660478335); + b = md5gg(b, c, d, a, x[i + 4], 20, -405537848); + a = md5gg(a, b, c, d, x[i + 9], 5, 568446438); + d = md5gg(d, a, b, c, x[i + 14], 9, -1019803690); + c = md5gg(c, d, a, b, x[i + 3], 14, -187363961); + b = md5gg(b, c, d, a, x[i + 8], 20, 1163531501); + a = md5gg(a, b, c, d, x[i + 13], 5, -1444681467); + d = md5gg(d, a, b, c, x[i + 2], 9, -51403784); + c = md5gg(c, d, a, b, x[i + 7], 14, 1735328473); + b = md5gg(b, c, d, a, x[i + 12], 20, -1926607734); + + a = md5hh(a, b, c, d, x[i + 5], 4, -378558); + d = md5hh(d, a, b, c, x[i + 8], 11, -2022574463); + c = md5hh(c, d, a, b, x[i + 11], 16, 1839030562); + b = md5hh(b, c, d, a, x[i + 14], 23, -35309556); + a = md5hh(a, b, c, d, x[i + 1], 4, -1530992060); + d = md5hh(d, a, b, c, x[i + 4], 11, 1272893353); + c = md5hh(c, d, a, b, x[i + 7], 16, -155497632); + b = md5hh(b, c, d, a, x[i + 10], 23, -1094730640); + a = md5hh(a, b, c, d, x[i + 13], 4, 681279174); + d = md5hh(d, a, b, c, x[i], 11, -358537222); + c = md5hh(c, d, a, b, x[i + 3], 16, -722521979); + b = md5hh(b, c, d, a, x[i + 6], 23, 76029189); + a = md5hh(a, b, c, d, x[i + 9], 4, -640364487); + d = md5hh(d, a, b, c, x[i + 12], 11, -421815835); + c = md5hh(c, d, a, b, x[i + 15], 16, 530742520); + b = md5hh(b, c, d, a, x[i + 2], 23, -995338651); + + a = md5ii(a, b, c, d, x[i], 6, -198630844); + d = md5ii(d, a, b, c, x[i + 7], 10, 1126891415); + c = md5ii(c, d, a, b, x[i + 14], 15, -1416354905); + b = md5ii(b, c, d, a, x[i + 5], 21, -57434055); + a = md5ii(a, b, c, d, x[i + 12], 6, 1700485571); + d = md5ii(d, a, b, c, x[i + 3], 10, -1894986606); + c = md5ii(c, d, a, b, x[i + 10], 15, -1051523); + b = md5ii(b, c, d, a, x[i + 1], 21, -2054922799); + a = md5ii(a, b, c, d, x[i + 8], 6, 1873313359); + d = md5ii(d, a, b, c, x[i + 15], 10, -30611744); + c = md5ii(c, d, a, b, x[i + 6], 15, -1560198380); + b = md5ii(b, c, d, a, x[i + 13], 21, 1309151649); + a = md5ii(a, b, c, d, x[i + 4], 6, -145523070); + d = md5ii(d, a, b, c, x[i + 11], 10, -1120210379); + c = md5ii(c, d, a, b, x[i + 2], 15, 718787259); + b = md5ii(b, c, d, a, x[i + 9], 21, -343485551); + + a = safeAdd(a, olda); + b = safeAdd(b, oldb); + c = safeAdd(c, oldc); + d = safeAdd(d, oldd); + } + return [a, b, c, d]; +} + +/* +* Convert an array of little-endian words to a string +*/ +function binl2rstr(input) { + var i; + var output = ''; + var length32 = input.length * 32; + for (i = 0; i < length32; i += 8) { + output += String.fromCharCode((input[i >> 5] >>> (i % 32)) & 0xff); + } + return output; +} + +/* +* Convert a raw string to an array of little-endian words +* Characters >255 have their high-byte silently ignored. +*/ +function rstr2binl(input) { + var i; + var output = []; + output[(input.length >> 2) - 1] = undefined; + for (i = 0; i < output.length; i += 1) { + output[i] = 0; + } + var length8 = input.length * 8; + for (i = 0; i < length8; i += 8) { + output[i >> 5] |= (input.charCodeAt(i / 8) & 0xff) << (i % 32); + } + return output; +} + +/* +* Calculate the MD5 of a raw string +*/ +function rstrMD5(s) { + return binl2rstr(binlMD5(rstr2binl(s), s.length * 8)); +} + +/* +* Calculate the HMAC-MD5, of a key and some data (raw strings) +*/ +function rstrHMACMD5(key, data) { + var i; + var bkey = rstr2binl(key); + var ipad = []; + var opad = []; + var hash; + ipad[15] = opad[15] = undefined; + if (bkey.length > 16) { + bkey = binlMD5(bkey, key.length * 8); + } + for (i = 0; i < 16; i += 1) { + ipad[i] = bkey[i] ^ 0x36363636; + opad[i] = bkey[i] ^ 0x5c5c5c5c; + } + hash = binlMD5(ipad.concat(rstr2binl(data)), 512 + data.length * 8); + return binl2rstr(binlMD5(opad.concat(hash), 512 + 128)); +} + +/* +* Convert a raw string to a hex string +*/ +function rstr2hex(input) { + var hexTab = '0123456789abcdef'; + var output = ''; + var x; + var i; + for (i = 0; i < input.length; i += 1) { + x = input.charCodeAt(i); + output += hexTab.charAt((x >>> 4) & 0x0f) + hexTab.charAt(x & 0x0f); + } + return output; +} + +/* +* Encode a string as utf-8 +*/ +function str2rstrUTF8(input) { + return unescape(encodeURIComponent(input)); +} + +/* +* Take string arguments and return either raw or hex encoded strings +*/ +function rawMD5(s) { + return rstrMD5(str2rstrUTF8(s)); +} +function hexMD5(s) { + return rstr2hex(rawMD5(s)); +} +function rawHMACMD5(k, d) { + return rstrHMACMD5(str2rstrUTF8(k), str2rstrUTF8(d)); +} +function hexHMACMD5(k, d) { + return rstr2hex(rawHMACMD5(k, d)); +} + +function md5(string, key, raw) { + if (!key) { + if (!raw) { + return hexMD5(string); + } + return rawMD5(string); + } + if (!raw) { + return hexHMACMD5(key, string); + } + return rawHMACMD5(key, string); +} + +module.exports = md5; + +},{}]},{},[6,1,2])(6) +}); \ No newline at end of file diff --git a/packages/raven-js/dist/console,ember/raven.min.js b/packages/raven-js/dist/console,ember/raven.min.js new file mode 100644 index 000000000000..b285faf33e85 --- /dev/null +++ b/packages/raven-js/dist/console,ember/raven.min.js @@ -0,0 +1,4 @@ +/*! Raven.js 3.25.2 (30b6d4e) | github.com/getsentry/raven-js */ +!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.Raven=a()}}(function(){return function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};b[g][0].call(k.exports,function(a){var c=b[g][1][a];return e(c?c:a)},k,k.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;gthis.k.maxBreadcrumbs&&this.u.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.r.push([a,b]),this.n&&this.F(),this},setUserContext:function(a){return this.j.user=a,this},setExtraContext:function(a){return this.Z("extra",a),this},setTagsContext:function(a){return this.Z("tags",a),this},clearContext:function(){return this.j={},this},getContext:function(){return JSON.parse(h(this.j))},setEnvironment:function(a){return this.k.environment=a,this},setRelease:function(a){return this.k.release=a,this},setDataCallback:function(a){var b=this.k.dataCallback;return this.k.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.k.breadcrumbCallback;return this.k.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.k.shouldSendCallback;return this.k.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.k.transport=a,this},lastException:function(){return this.d},lastEventId:function(){return this.f},isSetup:function(){return!!this.a&&(!!this.g||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.z("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=R.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(S){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.H;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.j.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.J(this.G(c)),h=S.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(S.head||S.body).appendChild(h)}},L:function(){var a=this;this.m+=1,setTimeout(function(){a.m-=1})},$:function(a,b){var c,d;if(this.b){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),S.createEvent?(c=S.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=S.createEventObject(),c.eventType=a);for(d in b)A(b,d)&&(c[d]=b[d]);if(S.createEvent)S.dispatchEvent(c);else try{S.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},_:function(a){var b=this;return function(c){if(b.aa=null,b.v!==c){b.v=c;var d;try{d=E(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ba:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.aa;g||a._("input")(c),clearTimeout(g),a.aa=setTimeout(function(){a.aa=null},b)}}},ca:function(a,b){var c=H(this.w.href),d=H(b),e=H(a);this.x=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},C:function(){var a=this;a.da=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.M?a.da.apply(this.O,arguments):a.da.apply(this,arguments)}},Q:function(){this.da&&(Function.prototype.toString=this.da)},D:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.ca(b.x,c+""),a.apply(this,arguments)}};I(R.history,"pushState",j,d),I(R.history,"replaceState",j,d)}if(c.console&&"console"in R&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};w(["debug","info","warn","error","log"],function(a,b){O(console,b,k)})}},R:function(){for(var a;this.t.length;){a=this.t.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},S:function(){for(var a in this.q)this.p[a]=this.q[a]},F:function(){var a=this;w(this.r,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},G:function(a){var b=Q.exec(a),c={},d=7;try{for(;d--;)c[P[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.k.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},J:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},A:function(){this.m||this.V.apply(this,arguments)},V:function(a,b){var c=this.X(a,b);this.$("handle",{stackInfo:a,options:b}),this.fa(a.name,a.message,a.url,a.lineno,c,b)},X:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(w(a.stack,function(b,e){var f=c.ga(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.u,0)}),this.j.user&&(a.user=this.j.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),a=this.pa(a),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||v(a[b]))&&delete a[b]}),s(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!v(a)&&(!s(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.ma()?void this.z("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function F(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&l(b))for(c=b.split(/\s+/),f=0;fc?Q(a,b-1):d}function R(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?X:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function S(a,b){function c(a){return m(a)?a.map(function(a){return c(a)}):k(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!m(b)||m(b)&&0===b.length)return a;var d,e=A(b),f="********";try{d=JSON.parse(T(a))}catch(g){return a}return c(d)}var T=a(9),U="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},V=3,W=51200,X=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isDOMError:g,isDOMException:h,isUndefined:i,isFunction:j,isPlainObject:k,isString:l,isArray:m,isEmptyObject:n,supportsErrorEvent:o,supportsDOMError:p,supportsDOMException:q,supportsFetch:r,supportsReferrerPolicy:s,supportsPromiseRejectionEvent:t,wrappedCallback:u,each:v,objectMerge:w,truncate:y,objectFrozen:x,hasKey:z,joinRegExp:A,urlencode:B,uuid4:D,htmlTreeAsString:E,htmlElementAsString:F,isSameException:I,isSameStacktrace:J,parseUrl:C,fill:K,safeJoin:L,serializeException:Q,serializeKeysForMessage:R,sanitize:S}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{9:9}],8:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}function e(){return"undefined"==typeof document||null==document.location?"":(document.location.origin||(document.location.origin=document.location.protocol+"//"+document.location.hostname+(document.location.port?":"+document.location.port:"")),document.location.origin)}var f=a(7),g={collectWindowErrors:!0,debug:!1},h="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},i=[].slice,j="?",k=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;g.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function e(a,b){var c=null;if(!b||g.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(i.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,h,i){var l=null,m=f.isErrorEvent(i)?i.error:i,n=f.isErrorEvent(a)?a.message:a;if(v)g.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&f.isError(m))l=g.computeStackTrace(m),e(l,!0);else{var p,r={url:b,line:c,column:h},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(k);p&&(s=p[1],n=p[2])}r.func=j,l={name:s,message:n,url:d(),stack:[r]},e(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=h.onerror,h.onerror=l,r=!0)}function n(){r&&(h.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,e.apply(null,[a,!1].concat(b))}function p(a,b){var c=i.call(arguments,1);if(v){if(u===a)return;o()}var d=g.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),g.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,f,g=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,h=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,i=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,k=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,l=/\((\S*)(?::(\d+))(?::(\d+))\)/,m=a.stack.split("\n"),n=[],o=(/^(.*) is undefined$/.exec(a.message),0),p=m.length;o eval")>-1;r&&(b=k.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==o||c[5]||"undefined"==typeof a.columnNumber||(n[0].column=a.columnNumber+1),f={url:c[3],func:c[1]||j,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}if(!f.func&&f.line&&(f.func=j),f.url&&"blob:"===f.url.substr(0,5)){var s=new XMLHttpRequest;if(s.open("GET",f.url,!1),s.send(null),200===s.status){var t=s.responseText||"";t=t.slice(-300);var u=t.match(/\/\/# sourceMappingURL=(.*)$/);if(u){var v=u[1];"~"===v.charAt(0)&&(v=e()+v.slice(1)),f.url=v.slice(0,-4)}}}n.push(f)}return n.length?{name:a.name,message:a.message,url:d(),stack:n}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=j),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,e){for(var h,i,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==f&&o!==g.report){ +if(i={url:null,func:j,line:null,column:null},o.name?i.func=o.name:(h=k.exec(o.toString()))&&(i.func=h[1]),"undefined"==typeof i.func)try{i.func=h.input.substring(0,h.input.indexOf("{"))}catch(p){}m[""+o]?n=!0:m[""+o]=!0,l.push(i)}e&&l.splice(0,e);var q={name:a.name,message:a.message,url:d(),stack:l};return b(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),q}function f(b,e){var f=null;e=null==e?0:+e;try{if(f=a(b))return f}catch(h){if(g.debug)throw h}try{if(f=c(b,e+1))return f}catch(h){if(g.debug)throw h}return{name:b.name,message:b.message,url:d()}}return f.augmentStackTraceWithInitialElement=b,f.computeStackTraceFromStackProp=a,f}(),b.exports=g}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{7:7}],9:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}],10:[function(a,b,c){function d(a,b){var c=(65535&a)+(65535&b),d=(a>>16)+(b>>16)+(c>>16);return d<<16|65535&c}function e(a,b){return a<>>32-b}function f(a,b,c,f,g,h){return d(e(d(d(b,a),d(f,h)),g),c)}function g(a,b,c,d,e,g,h){return f(b&c|~b&d,a,b,e,g,h)}function h(a,b,c,d,e,g,h){return f(b&d|c&~d,a,b,e,g,h)}function i(a,b,c,d,e,g,h){return f(b^c^d,a,b,e,g,h)}function j(a,b,c,d,e,g,h){return f(c^(b|~d),a,b,e,g,h)}function k(a,b){a[b>>5]|=128<>>9<<4)+14]=b;var c,e,f,k,l,m=1732584193,n=-271733879,o=-1732584194,p=271733878;for(c=0;c>5]>>>b%32&255);return c}function m(a){var b,c=[];for(c[(a.length>>2)-1]=void 0,b=0;b>5]|=(255&a.charCodeAt(b/8))<16&&(e=k(e,8*a.length)),c=0;c<16;c+=1)f[c]=909522486^e[c],g[c]=1549556828^e[c];return d=k(f.concat(m(b)),512+8*b.length),l(k(g.concat(d),640))}function p(a){var b,c,d="0123456789abcdef",e="";for(c=0;c>>4&15)+d.charAt(15&b);return e}function q(a){return unescape(encodeURIComponent(a))}function r(a){return n(q(a))}function s(a){return p(r(a))}function t(a,b){return o(q(a),q(b))}function u(a,b){return p(t(a,b))}function v(a,b,c){return b?c?t(b,a):u(b,a):c?r(a):s(a)}b.exports=v},{}]},{},[6,1,2])(6)}); +//# sourceMappingURL=raven.min.js.map \ No newline at end of file diff --git a/packages/raven-js/dist/console,ember/raven.min.js.map b/packages/raven-js/dist/console,ember/raven.min.js.map new file mode 100644 index 000000000000..53fde7dc0dac --- /dev/null +++ b/packages/raven-js/dist/console,ember/raven.min.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","consolePlugin","console","pluginOptions","logLevels","levels","push","callback","msg","data","captureMessage","level","pop","wrapConsoleMethod","wrapMethod","addPlugin","4","6","2","emberPlugin","Ember","_oldOnError","onerror","error","captureException","RSVP","on","reason","extra","context","3","RavenConfigError","message","name","prototype","constructor","utils","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","safeJoin","logger","Function","apply","7","5","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","sanitizeKeys","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isErrorEvent","isDOMError","isDOMException","isError","isObject","isPlainObject","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","sanitize","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","config","dsn","options","_logDebug","globalOptions","key","value","setDSN","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","toString","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","substr","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","func","undefined","wrap","_before","wrapped","deep","_ignoreNextOnError","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","T","event","unhandledPromiseRejection","B","_promiseRejectionHandler","bind","addEventListener","P","removeEventListener","ex","trimHeadFrames","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","U","currentOptions","exKeys","Object","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","setDataCallback","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","L","setTimeout","$","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","_","evtName","_keypressTimeout","target","category","ba","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","ca","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","C","_originalFunctionToString","Q","D","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","type","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","E","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","R","builtin","S","F","installer","concat","G","str","m","exec","allowSecretKey","J","port","A","V","stackInfo","_triggerEvent","_processException","lineno","X","frame","_normalizeFrame","in_app","ga","stackInfoUrl","normalized","filename","line","colno","column","function","fa","prefixedMessage","exception","values","transaction","ha","request","Referer","breadcrumbs","_trimBreadcrumbs","ia","urlProp","urlProps","ja","httpData","userAgent","User-Agent","referrer","y","_backoffDuration","_backoffStart","ma","na","current","last","oa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Y","baseData","project","platform","_getHttpData","serverName","server_name","_sanitizeData","forEach","random","_sendProcessedPayload","pa","ra","qa","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","sa","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","open","setRequestHeader","send","ta","hash","evaluated","z","Z","setUser","setReleaseContext","10","8","9","RavenConstructor","_Raven","noConflict","Client","what","supportsErrorEvent","ErrorEvent","supportsDOMError","DOMError","supportsDOMException","DOMException","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","wrappedCallback","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","sanitizeMask","safeInput","o_O","getLocationHref","getLocationOrigin","origin","hostname","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","responseText","sourceMaps","sourceMapAddress","charAt","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","string","raw"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file diff --git a/packages/raven-js/dist/console,require,vue/raven.js b/packages/raven-js/dist/console,require,vue/raven.js new file mode 100644 index 000000000000..c475cff8e6c2 --- /dev/null +++ b/packages/raven-js/dist/console,require,vue/raven.js @@ -0,0 +1,4112 @@ +/*! Raven.js 3.25.2 (30b6d4e) | github.com/getsentry/raven-js */ + +/* + * Includes TraceKit + * https://github.com/getsentry/TraceKit + * + * Copyright 2018 Matt Robenolt and other contributors + * Released under the BSD license + * https://github.com/getsentry/raven-js/blob/master/LICENSE + * + */ + +(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.Raven = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o' : 'anonymous component') + + (vm._isVue && vm.$options.__file ? ' at ' + vm.$options.__file : '') + ); +} + +function vuePlugin(Raven, Vue) { + Vue = Vue || window.Vue; + + // quit if Vue isn't on the page + if (!Vue || !Vue.config) return; + + var _oldOnError = Vue.config.errorHandler; + Vue.config.errorHandler = function VueErrorHandler(error, vm, info) { + var metaData = {}; + + // vm and lifecycleHook are not always available + if (Object.prototype.toString.call(vm) === '[object Object]') { + metaData.componentName = formatComponentName(vm); + metaData.propsData = vm.$options.propsData; + } + + if (typeof info !== 'undefined') { + metaData.lifecycleHook = info; + } + + Raven.captureException(error, { + extra: metaData + }); + + if (typeof _oldOnError === 'function') { + _oldOnError.call(this, error, vm, info); + } + }; +} + +module.exports = vuePlugin; + +_dereq_(7).addPlugin(module.exports); +},{"7":7}],4:[function(_dereq_,module,exports){ +function RavenConfigError(message) { + this.name = 'RavenConfigError'; + this.message = message; +} +RavenConfigError.prototype = new Error(); +RavenConfigError.prototype.constructor = RavenConfigError; + +module.exports = RavenConfigError; + +},{}],5:[function(_dereq_,module,exports){ +var utils = _dereq_(8); + +var wrapMethod = function(console, level, callback) { + var originalConsoleLevel = console[level]; + var originalConsole = console; + + if (!(level in console)) { + return; + } + + var sentryLevel = level === 'warn' ? 'warning' : level; + + console[level] = function() { + var args = [].slice.call(arguments); + + var msg = utils.safeJoin(args, ' '); + var data = {level: sentryLevel, logger: 'console', extra: {arguments: args}}; + + if (level === 'assert') { + if (args[0] === false) { + // Default browsers message + msg = + 'Assertion failed: ' + (utils.safeJoin(args.slice(1), ' ') || 'console.assert'); + data.extra.arguments = args.slice(1); + callback && callback(msg, data); + } + } else { + callback && callback(msg, data); + } + + // this fails for some browsers. :( + if (originalConsoleLevel) { + // IE9 doesn't allow calling apply on console functions directly + // See: https://stackoverflow.com/questions/5472938/does-ie9-support-console-log-and-is-it-a-real-function#answer-5473193 + Function.prototype.apply.call(originalConsoleLevel, originalConsole, args); + } + }; +}; + +module.exports = { + wrapMethod: wrapMethod +}; + +},{"8":8}],6:[function(_dereq_,module,exports){ +(function (global){ +/*global XDomainRequest:false */ + +var TraceKit = _dereq_(9); +var stringify = _dereq_(10); +var md5 = _dereq_(11); +var RavenConfigError = _dereq_(4); + +var utils = _dereq_(8); +var isErrorEvent = utils.isErrorEvent; +var isDOMError = utils.isDOMError; +var isDOMException = utils.isDOMException; +var isError = utils.isError; +var isObject = utils.isObject; +var isPlainObject = utils.isPlainObject; +var isUndefined = utils.isUndefined; +var isFunction = utils.isFunction; +var isString = utils.isString; +var isArray = utils.isArray; +var isEmptyObject = utils.isEmptyObject; +var each = utils.each; +var objectMerge = utils.objectMerge; +var truncate = utils.truncate; +var objectFrozen = utils.objectFrozen; +var hasKey = utils.hasKey; +var joinRegExp = utils.joinRegExp; +var urlencode = utils.urlencode; +var uuid4 = utils.uuid4; +var htmlTreeAsString = utils.htmlTreeAsString; +var isSameException = utils.isSameException; +var isSameStacktrace = utils.isSameStacktrace; +var parseUrl = utils.parseUrl; +var fill = utils.fill; +var supportsFetch = utils.supportsFetch; +var supportsReferrerPolicy = utils.supportsReferrerPolicy; +var serializeKeysForMessage = utils.serializeKeysForMessage; +var serializeException = utils.serializeException; +var sanitize = utils.sanitize; + +var wrapConsoleMethod = _dereq_(5).wrapMethod; + +var dsnKeys = 'source protocol user pass host port path'.split(' '), + dsnPattern = /^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/; + +function now() { + return +new Date(); +} + +// This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) +var _window = + typeof window !== 'undefined' + ? window + : typeof global !== 'undefined' + ? global + : typeof self !== 'undefined' + ? self + : {}; +var _document = _window.document; +var _navigator = _window.navigator; + +function keepOriginalCallback(original, callback) { + return isFunction(callback) + ? function(data) { + return callback(data, original); + } + : callback; +} + +// First, check for JSON support +// If there is no JSON, we no-op the core features of Raven +// since JSON is required to encode the payload +function Raven() { + this._hasJSON = !!(typeof JSON === 'object' && JSON.stringify); + // Raven can run in contexts where there's no document (react-native) + this._hasDocument = !isUndefined(_document); + this._hasNavigator = !isUndefined(_navigator); + this._lastCapturedException = null; + this._lastData = null; + this._lastEventId = null; + this._globalServer = null; + this._globalKey = null; + this._globalProject = null; + this._globalContext = {}; + this._globalOptions = { + // SENTRY_RELEASE can be injected by https://github.com/getsentry/sentry-webpack-plugin + release: _window.SENTRY_RELEASE && _window.SENTRY_RELEASE.id, + logger: 'javascript', + ignoreErrors: [], + ignoreUrls: [], + whitelistUrls: [], + includePaths: [], + headers: null, + collectWindowErrors: true, + captureUnhandledRejections: true, + maxMessageLength: 0, + // By default, truncates URL values to 250 chars + maxUrlLength: 250, + stackTraceLimit: 50, + autoBreadcrumbs: true, + instrument: true, + sampleRate: 1, + sanitizeKeys: [] + }; + this._fetchDefaults = { + method: 'POST', + keepalive: true, + // Despite all stars in the sky saying that Edge supports old draft syntax, aka 'never', 'always', 'origin' and 'default + // https://caniuse.com/#feat=referrer-policy + // It doesn't. And it throw exception instead of ignoring this parameter... + // REF: https://github.com/getsentry/raven-js/issues/1233 + referrerPolicy: supportsReferrerPolicy() ? 'origin' : '' + }; + this._ignoreOnError = 0; + this._isRavenInstalled = false; + this._originalErrorStackTraceLimit = Error.stackTraceLimit; + // capture references to window.console *and* all its methods first + // before the console plugin has a chance to monkey patch + this._originalConsole = _window.console || {}; + this._originalConsoleMethods = {}; + this._plugins = []; + this._startTime = now(); + this._wrappedBuiltIns = []; + this._breadcrumbs = []; + this._lastCapturedEvent = null; + this._keypressTimeout; + this._location = _window.location; + this._lastHref = this._location && this._location.href; + this._resetBackoff(); + + // eslint-disable-next-line guard-for-in + for (var method in this._originalConsole) { + this._originalConsoleMethods[method] = this._originalConsole[method]; + } +} + +/* + * The core Raven singleton + * + * @this {Raven} + */ + +Raven.prototype = { + // Hardcode version string so that raven source can be loaded directly via + // webpack (using a build step causes webpack #1617). Grunt verifies that + // this value matches package.json during build. + // See: https://github.com/getsentry/raven-js/issues/465 + VERSION: '3.25.2', + + debug: false, + + TraceKit: TraceKit, // alias to TraceKit + + /* + * Configure Raven with a DSN and extra options + * + * @param {string} dsn The public Sentry DSN + * @param {object} options Set of global options [optional] + * @return {Raven} + */ + config: function(dsn, options) { + var self = this; + + if (self._globalServer) { + this._logDebug('error', 'Error: Raven has already been configured'); + return self; + } + if (!dsn) return self; + + var globalOptions = self._globalOptions; + + // merge in options + if (options) { + each(options, function(key, value) { + // tags and extra are special and need to be put into context + if (key === 'tags' || key === 'extra' || key === 'user') { + self._globalContext[key] = value; + } else { + globalOptions[key] = value; + } + }); + } + + self.setDSN(dsn); + + // "Script error." is hard coded into browsers for errors that it can't read. + // this is the result of a script being pulled in from an external domain and CORS. + globalOptions.ignoreErrors.push(/^Script error\.?$/); + globalOptions.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/); + + // join regexp rules into one big rule + globalOptions.ignoreErrors = joinRegExp(globalOptions.ignoreErrors); + globalOptions.ignoreUrls = globalOptions.ignoreUrls.length + ? joinRegExp(globalOptions.ignoreUrls) + : false; + globalOptions.whitelistUrls = globalOptions.whitelistUrls.length + ? joinRegExp(globalOptions.whitelistUrls) + : false; + globalOptions.includePaths = joinRegExp(globalOptions.includePaths); + globalOptions.maxBreadcrumbs = Math.max( + 0, + Math.min(globalOptions.maxBreadcrumbs || 100, 100) + ); // default and hard limit is 100 + + var autoBreadcrumbDefaults = { + xhr: true, + console: true, + dom: true, + location: true, + sentry: true + }; + + var autoBreadcrumbs = globalOptions.autoBreadcrumbs; + if ({}.toString.call(autoBreadcrumbs) === '[object Object]') { + autoBreadcrumbs = objectMerge(autoBreadcrumbDefaults, autoBreadcrumbs); + } else if (autoBreadcrumbs !== false) { + autoBreadcrumbs = autoBreadcrumbDefaults; + } + globalOptions.autoBreadcrumbs = autoBreadcrumbs; + + var instrumentDefaults = { + tryCatch: true + }; + + var instrument = globalOptions.instrument; + if ({}.toString.call(instrument) === '[object Object]') { + instrument = objectMerge(instrumentDefaults, instrument); + } else if (instrument !== false) { + instrument = instrumentDefaults; + } + globalOptions.instrument = instrument; + + TraceKit.collectWindowErrors = !!globalOptions.collectWindowErrors; + + // return for chaining + return self; + }, + + /* + * Installs a global window.onerror error handler + * to capture and report uncaught exceptions. + * At this point, install() is required to be called due + * to the way TraceKit is set up. + * + * @return {Raven} + */ + install: function() { + var self = this; + if (self.isSetup() && !self._isRavenInstalled) { + TraceKit.report.subscribe(function() { + self._handleOnErrorStackInfo.apply(self, arguments); + }); + + if (self._globalOptions.captureUnhandledRejections) { + self._attachPromiseRejectionHandler(); + } + + self._patchFunctionToString(); + + if (self._globalOptions.instrument && self._globalOptions.instrument.tryCatch) { + self._instrumentTryCatch(); + } + + if (self._globalOptions.autoBreadcrumbs) self._instrumentBreadcrumbs(); + + // Install all of the plugins + self._drainPlugins(); + + self._isRavenInstalled = true; + } + + Error.stackTraceLimit = self._globalOptions.stackTraceLimit; + return this; + }, + + /* + * Set the DSN (can be called multiple time unlike config) + * + * @param {string} dsn The public Sentry DSN + */ + setDSN: function(dsn) { + var self = this, + uri = self._parseDSN(dsn), + lastSlash = uri.path.lastIndexOf('/'), + path = uri.path.substr(1, lastSlash); + + self._dsn = dsn; + self._globalKey = uri.user; + self._globalSecret = uri.pass && uri.pass.substr(1); + self._globalProject = uri.path.substr(lastSlash + 1); + + self._globalServer = self._getGlobalServer(uri); + + self._globalEndpoint = + self._globalServer + '/' + path + 'api/' + self._globalProject + '/store/'; + + // Reset backoff state since we may be pointing at a + // new project/server + this._resetBackoff(); + }, + + /* + * Wrap code within a context so Raven can capture errors + * reliably across domains that is executed immediately. + * + * @param {object} options A specific set of options for this context [optional] + * @param {function} func The callback to be immediately executed within the context + * @param {array} args An array of arguments to be called with the callback [optional] + */ + context: function(options, func, args) { + if (isFunction(options)) { + args = func || []; + func = options; + options = undefined; + } + + return this.wrap(options, func).apply(this, args); + }, + + /* + * Wrap code within a context and returns back a new function to be executed + * + * @param {object} options A specific set of options for this context [optional] + * @param {function} func The function to be wrapped in a new context + * @param {function} func A function to call before the try/catch wrapper [optional, private] + * @return {function} The newly wrapped functions with a context + */ + wrap: function(options, func, _before) { + var self = this; + // 1 argument has been passed, and it's not a function + // so just return it + if (isUndefined(func) && !isFunction(options)) { + return options; + } + + // options is optional + if (isFunction(options)) { + func = options; + options = undefined; + } + + // At this point, we've passed along 2 arguments, and the second one + // is not a function either, so we'll just return the second argument. + if (!isFunction(func)) { + return func; + } + + // We don't wanna wrap it twice! + try { + if (func.__raven__) { + return func; + } + + // If this has already been wrapped in the past, return that + if (func.__raven_wrapper__) { + return func.__raven_wrapper__; + } + } catch (e) { + // Just accessing custom props in some Selenium environments + // can cause a "Permission denied" exception (see raven-js#495). + // Bail on wrapping and return the function as-is (defers to window.onerror). + return func; + } + + function wrapped() { + var args = [], + i = arguments.length, + deep = !options || (options && options.deep !== false); + + if (_before && isFunction(_before)) { + _before.apply(this, arguments); + } + + // Recursively wrap all of a function's arguments that are + // functions themselves. + while (i--) args[i] = deep ? self.wrap(options, arguments[i]) : arguments[i]; + + try { + // Attempt to invoke user-land function + // NOTE: If you are a Sentry user, and you are seeing this stack frame, it + // means Raven caught an error invoking your application code. This is + // expected behavior and NOT indicative of a bug with Raven.js. + return func.apply(this, args); + } catch (e) { + self._ignoreNextOnError(); + self.captureException(e, options); + throw e; + } + } + + // copy over properties of the old function + for (var property in func) { + if (hasKey(func, property)) { + wrapped[property] = func[property]; + } + } + wrapped.prototype = func.prototype; + + func.__raven_wrapper__ = wrapped; + // Signal that this function has been wrapped/filled already + // for both debugging and to prevent it to being wrapped/filled twice + wrapped.__raven__ = true; + wrapped.__orig__ = func; + + return wrapped; + }, + + /** + * Uninstalls the global error handler. + * + * @return {Raven} + */ + uninstall: function() { + TraceKit.report.uninstall(); + + this._detachPromiseRejectionHandler(); + this._unpatchFunctionToString(); + this._restoreBuiltIns(); + this._restoreConsole(); + + Error.stackTraceLimit = this._originalErrorStackTraceLimit; + this._isRavenInstalled = false; + + return this; + }, + + /** + * Callback used for `unhandledrejection` event + * + * @param {PromiseRejectionEvent} event An object containing + * promise: the Promise that was rejected + * reason: the value with which the Promise was rejected + * @return void + */ + _promiseRejectionHandler: function(event) { + this._logDebug('debug', 'Raven caught unhandled promise rejection:', event); + this.captureException(event.reason, { + extra: { + unhandledPromiseRejection: true + } + }); + }, + + /** + * Installs the global promise rejection handler. + * + * @return {raven} + */ + _attachPromiseRejectionHandler: function() { + this._promiseRejectionHandler = this._promiseRejectionHandler.bind(this); + _window.addEventListener && + _window.addEventListener('unhandledrejection', this._promiseRejectionHandler); + return this; + }, + + /** + * Uninstalls the global promise rejection handler. + * + * @return {raven} + */ + _detachPromiseRejectionHandler: function() { + _window.removeEventListener && + _window.removeEventListener('unhandledrejection', this._promiseRejectionHandler); + return this; + }, + + /** + * Manually capture an exception and send it over to Sentry + * + * @param {error} ex An exception to be logged + * @param {object} options A specific set of options for this error [optional] + * @return {Raven} + */ + captureException: function(ex, options) { + options = objectMerge({trimHeadFrames: 0}, options ? options : {}); + + if (isErrorEvent(ex) && ex.error) { + // If it is an ErrorEvent with `error` property, extract it to get actual Error + ex = ex.error; + } else if (isDOMError(ex) || isDOMException(ex)) { + // If it is a DOMError or DOMException (which are legacy APIs, but still supported in some browsers) + // then we just extract the name and message, as they don't provide anything else + // https://developer.mozilla.org/en-US/docs/Web/API/DOMError + // https://developer.mozilla.org/en-US/docs/Web/API/DOMException + var name = ex.name || (isDOMError(ex) ? 'DOMError' : 'DOMException'); + var message = ex.message ? name + ': ' + ex.message : name; + + return this.captureMessage( + message, + objectMerge(options, { + // neither DOMError or DOMException provide stack trace and we most likely wont get it this way as well + // but it's barely any overhead so we may at least try + stacktrace: true, + trimHeadFrames: options.trimHeadFrames + 1 + }) + ); + } else if (isError(ex)) { + // we have a real Error object + ex = ex; + } else if (isPlainObject(ex)) { + // If it is plain Object, serialize it manually and extract options + // This will allow us to group events based on top-level keys + // which is much better than creating new group when any key/value change + options = this._getCaptureExceptionOptionsFromPlainObject(options, ex); + ex = new Error(options.message); + } else { + // If none of previous checks were valid, then it means that + // it's not a DOMError/DOMException + // it's not a plain Object + // it's not a valid ErrorEvent (one with an error property) + // it's not an Error + // So bail out and capture it as a simple message: + return this.captureMessage( + ex, + objectMerge(options, { + stacktrace: true, // if we fall back to captureMessage, default to attempting a new trace + trimHeadFrames: options.trimHeadFrames + 1 + }) + ); + } + + // Store the raw exception object for potential debugging and introspection + this._lastCapturedException = ex; + + // TraceKit.report will re-raise any exception passed to it, + // which means you have to wrap it in try/catch. Instead, we + // can wrap it here and only re-raise if TraceKit.report + // raises an exception different from the one we asked to + // report on. + try { + var stack = TraceKit.computeStackTrace(ex); + this._handleStackInfo(stack, options); + } catch (ex1) { + if (ex !== ex1) { + throw ex1; + } + } + + return this; + }, + + _getCaptureExceptionOptionsFromPlainObject: function(currentOptions, ex) { + var exKeys = Object.keys(ex).sort(); + var options = objectMerge(currentOptions, { + message: + 'Non-Error exception captured with keys: ' + serializeKeysForMessage(exKeys), + fingerprint: [md5(exKeys)], + extra: currentOptions.extra || {} + }); + options.extra.__serialized__ = serializeException(ex); + + return options; + }, + + /* + * Manually send a message to Sentry + * + * @param {string} msg A plain message to be captured in Sentry + * @param {object} options A specific set of options for this message [optional] + * @return {Raven} + */ + captureMessage: function(msg, options) { + // config() automagically converts ignoreErrors from a list to a RegExp so we need to test for an + // early call; we'll error on the side of logging anything called before configuration since it's + // probably something you should see: + if ( + !!this._globalOptions.ignoreErrors.test && + this._globalOptions.ignoreErrors.test(msg) + ) { + return; + } + + options = options || {}; + msg = msg + ''; // Make sure it's actually a string + + var data = objectMerge( + { + message: msg + }, + options + ); + + var ex; + // Generate a "synthetic" stack trace from this point. + // NOTE: If you are a Sentry user, and you are seeing this stack frame, it is NOT indicative + // of a bug with Raven.js. Sentry generates synthetic traces either by configuration, + // or if it catches a thrown object without a "stack" property. + try { + throw new Error(msg); + } catch (ex1) { + ex = ex1; + } + + // null exception name so `Error` isn't prefixed to msg + ex.name = null; + var stack = TraceKit.computeStackTrace(ex); + + // stack[0] is `throw new Error(msg)` call itself, we are interested in the frame that was just before that, stack[1] + var initialCall = isArray(stack.stack) && stack.stack[1]; + + // if stack[1] is `Raven.captureException`, it means that someone passed a string to it and we redirected that call + // to be handled by `captureMessage`, thus `initialCall` is the 3rd one, not 2nd + // initialCall => captureException(string) => captureMessage(string) + if (initialCall && initialCall.func === 'Raven.captureException') { + initialCall = stack.stack[2]; + } + + var fileurl = (initialCall && initialCall.url) || ''; + + if ( + !!this._globalOptions.ignoreUrls.test && + this._globalOptions.ignoreUrls.test(fileurl) + ) { + return; + } + + if ( + !!this._globalOptions.whitelistUrls.test && + !this._globalOptions.whitelistUrls.test(fileurl) + ) { + return; + } + + if (this._globalOptions.stacktrace || (options && options.stacktrace)) { + // fingerprint on msg, not stack trace (legacy behavior, could be revisited) + data.fingerprint = data.fingerprint == null ? msg : data.fingerprint; + + options = objectMerge( + { + trimHeadFrames: 0 + }, + options + ); + // Since we know this is a synthetic trace, the top frame (this function call) + // MUST be from Raven.js, so mark it for trimming + // We add to the trim counter so that callers can choose to trim extra frames, such + // as utility functions. + options.trimHeadFrames += 1; + + var frames = this._prepareFrames(stack, options); + data.stacktrace = { + // Sentry expects frames oldest to newest + frames: frames.reverse() + }; + } + + // Make sure that fingerprint is always wrapped in an array + if (data.fingerprint) { + data.fingerprint = isArray(data.fingerprint) + ? data.fingerprint + : [data.fingerprint]; + } + + // Fire away! + this._send(data); + + return this; + }, + + captureBreadcrumb: function(obj) { + var crumb = objectMerge( + { + timestamp: now() / 1000 + }, + obj + ); + + if (isFunction(this._globalOptions.breadcrumbCallback)) { + var result = this._globalOptions.breadcrumbCallback(crumb); + + if (isObject(result) && !isEmptyObject(result)) { + crumb = result; + } else if (result === false) { + return this; + } + } + + this._breadcrumbs.push(crumb); + if (this._breadcrumbs.length > this._globalOptions.maxBreadcrumbs) { + this._breadcrumbs.shift(); + } + return this; + }, + + addPlugin: function(plugin /*arg1, arg2, ... argN*/) { + var pluginArgs = [].slice.call(arguments, 1); + + this._plugins.push([plugin, pluginArgs]); + if (this._isRavenInstalled) { + this._drainPlugins(); + } + + return this; + }, + + /* + * Set/clear a user to be sent along with the payload. + * + * @param {object} user An object representing user data [optional] + * @return {Raven} + */ + setUserContext: function(user) { + // Intentionally do not merge here since that's an unexpected behavior. + this._globalContext.user = user; + + return this; + }, + + /* + * Merge extra attributes to be sent along with the payload. + * + * @param {object} extra An object representing extra data [optional] + * @return {Raven} + */ + setExtraContext: function(extra) { + this._mergeContext('extra', extra); + + return this; + }, + + /* + * Merge tags to be sent along with the payload. + * + * @param {object} tags An object representing tags [optional] + * @return {Raven} + */ + setTagsContext: function(tags) { + this._mergeContext('tags', tags); + + return this; + }, + + /* + * Clear all of the context. + * + * @return {Raven} + */ + clearContext: function() { + this._globalContext = {}; + + return this; + }, + + /* + * Get a copy of the current context. This cannot be mutated. + * + * @return {object} copy of context + */ + getContext: function() { + // lol javascript + return JSON.parse(stringify(this._globalContext)); + }, + + /* + * Set environment of application + * + * @param {string} environment Typically something like 'production'. + * @return {Raven} + */ + setEnvironment: function(environment) { + this._globalOptions.environment = environment; + + return this; + }, + + /* + * Set release version of application + * + * @param {string} release Typically something like a git SHA to identify version + * @return {Raven} + */ + setRelease: function(release) { + this._globalOptions.release = release; + + return this; + }, + + /* + * Set the dataCallback option + * + * @param {function} callback The callback to run which allows the + * data blob to be mutated before sending + * @return {Raven} + */ + setDataCallback: function(callback) { + var original = this._globalOptions.dataCallback; + this._globalOptions.dataCallback = keepOriginalCallback(original, callback); + return this; + }, + + /* + * Set the breadcrumbCallback option + * + * @param {function} callback The callback to run which allows filtering + * or mutating breadcrumbs + * @return {Raven} + */ + setBreadcrumbCallback: function(callback) { + var original = this._globalOptions.breadcrumbCallback; + this._globalOptions.breadcrumbCallback = keepOriginalCallback(original, callback); + return this; + }, + + /* + * Set the shouldSendCallback option + * + * @param {function} callback The callback to run which allows + * introspecting the blob before sending + * @return {Raven} + */ + setShouldSendCallback: function(callback) { + var original = this._globalOptions.shouldSendCallback; + this._globalOptions.shouldSendCallback = keepOriginalCallback(original, callback); + return this; + }, + + /** + * Override the default HTTP transport mechanism that transmits data + * to the Sentry server. + * + * @param {function} transport Function invoked instead of the default + * `makeRequest` handler. + * + * @return {Raven} + */ + setTransport: function(transport) { + this._globalOptions.transport = transport; + + return this; + }, + + /* + * Get the latest raw exception that was captured by Raven. + * + * @return {error} + */ + lastException: function() { + return this._lastCapturedException; + }, + + /* + * Get the last event id + * + * @return {string} + */ + lastEventId: function() { + return this._lastEventId; + }, + + /* + * Determine if Raven is setup and ready to go. + * + * @return {boolean} + */ + isSetup: function() { + if (!this._hasJSON) return false; // needs JSON support + if (!this._globalServer) { + if (!this.ravenNotConfiguredError) { + this.ravenNotConfiguredError = true; + this._logDebug('error', 'Error: Raven has not been configured.'); + } + return false; + } + return true; + }, + + afterLoad: function() { + // TODO: remove window dependence? + + // Attempt to initialize Raven on load + var RavenConfig = _window.RavenConfig; + if (RavenConfig) { + this.config(RavenConfig.dsn, RavenConfig.config).install(); + } + }, + + showReportDialog: function(options) { + if ( + !_document // doesn't work without a document (React native) + ) + return; + + options = options || {}; + + var lastEventId = options.eventId || this.lastEventId(); + if (!lastEventId) { + throw new RavenConfigError('Missing eventId'); + } + + var dsn = options.dsn || this._dsn; + if (!dsn) { + throw new RavenConfigError('Missing DSN'); + } + + var encode = encodeURIComponent; + var qs = ''; + qs += '?eventId=' + encode(lastEventId); + qs += '&dsn=' + encode(dsn); + + var user = options.user || this._globalContext.user; + if (user) { + if (user.name) qs += '&name=' + encode(user.name); + if (user.email) qs += '&email=' + encode(user.email); + } + + var globalServer = this._getGlobalServer(this._parseDSN(dsn)); + + var script = _document.createElement('script'); + script.async = true; + script.src = globalServer + '/api/embed/error-page/' + qs; + (_document.head || _document.body).appendChild(script); + }, + + /**** Private functions ****/ + _ignoreNextOnError: function() { + var self = this; + this._ignoreOnError += 1; + setTimeout(function() { + // onerror should trigger before setTimeout + self._ignoreOnError -= 1; + }); + }, + + _triggerEvent: function(eventType, options) { + // NOTE: `event` is a native browser thing, so let's avoid conflicting wiht it + var evt, key; + + if (!this._hasDocument) return; + + options = options || {}; + + eventType = 'raven' + eventType.substr(0, 1).toUpperCase() + eventType.substr(1); + + if (_document.createEvent) { + evt = _document.createEvent('HTMLEvents'); + evt.initEvent(eventType, true, true); + } else { + evt = _document.createEventObject(); + evt.eventType = eventType; + } + + for (key in options) + if (hasKey(options, key)) { + evt[key] = options[key]; + } + + if (_document.createEvent) { + // IE9 if standards + _document.dispatchEvent(evt); + } else { + // IE8 regardless of Quirks or Standards + // IE9 if quirks + try { + _document.fireEvent('on' + evt.eventType.toLowerCase(), evt); + } catch (e) { + // Do nothing + } + } + }, + + /** + * Wraps addEventListener to capture UI breadcrumbs + * @param evtName the event name (e.g. "click") + * @returns {Function} + * @private + */ + _breadcrumbEventHandler: function(evtName) { + var self = this; + return function(evt) { + // reset keypress timeout; e.g. triggering a 'click' after + // a 'keypress' will reset the keypress debounce so that a new + // set of keypresses can be recorded + self._keypressTimeout = null; + + // It's possible this handler might trigger multiple times for the same + // event (e.g. event propagation through node ancestors). Ignore if we've + // already captured the event. + if (self._lastCapturedEvent === evt) return; + + self._lastCapturedEvent = evt; + + // try/catch both: + // - accessing evt.target (see getsentry/raven-js#838, #768) + // - `htmlTreeAsString` because it's complex, and just accessing the DOM incorrectly + // can throw an exception in some circumstances. + var target; + try { + target = htmlTreeAsString(evt.target); + } catch (e) { + target = ''; + } + + self.captureBreadcrumb({ + category: 'ui.' + evtName, // e.g. ui.click, ui.input + message: target + }); + }; + }, + + /** + * Wraps addEventListener to capture keypress UI events + * @returns {Function} + * @private + */ + _keypressEventHandler: function() { + var self = this, + debounceDuration = 1000; // milliseconds + + // TODO: if somehow user switches keypress target before + // debounce timeout is triggered, we will only capture + // a single breadcrumb from the FIRST target (acceptable?) + return function(evt) { + var target; + try { + target = evt.target; + } catch (e) { + // just accessing event properties can throw an exception in some rare circumstances + // see: https://github.com/getsentry/raven-js/issues/838 + return; + } + var tagName = target && target.tagName; + + // only consider keypress events on actual input elements + // this will disregard keypresses targeting body (e.g. tabbing + // through elements, hotkeys, etc) + if ( + !tagName || + (tagName !== 'INPUT' && tagName !== 'TEXTAREA' && !target.isContentEditable) + ) + return; + + // record first keypress in a series, but ignore subsequent + // keypresses until debounce clears + var timeout = self._keypressTimeout; + if (!timeout) { + self._breadcrumbEventHandler('input')(evt); + } + clearTimeout(timeout); + self._keypressTimeout = setTimeout(function() { + self._keypressTimeout = null; + }, debounceDuration); + }; + }, + + /** + * Captures a breadcrumb of type "navigation", normalizing input URLs + * @param to the originating URL + * @param from the target URL + * @private + */ + _captureUrlChange: function(from, to) { + var parsedLoc = parseUrl(this._location.href); + var parsedTo = parseUrl(to); + var parsedFrom = parseUrl(from); + + // because onpopstate only tells you the "new" (to) value of location.href, and + // not the previous (from) value, we need to track the value of the current URL + // state ourselves + this._lastHref = to; + + // Use only the path component of the URL if the URL matches the current + // document (almost all the time when using pushState) + if (parsedLoc.protocol === parsedTo.protocol && parsedLoc.host === parsedTo.host) + to = parsedTo.relative; + if (parsedLoc.protocol === parsedFrom.protocol && parsedLoc.host === parsedFrom.host) + from = parsedFrom.relative; + + this.captureBreadcrumb({ + category: 'navigation', + data: { + to: to, + from: from + } + }); + }, + + _patchFunctionToString: function() { + var self = this; + self._originalFunctionToString = Function.prototype.toString; + // eslint-disable-next-line no-extend-native + Function.prototype.toString = function() { + if (typeof this === 'function' && this.__raven__) { + return self._originalFunctionToString.apply(this.__orig__, arguments); + } + return self._originalFunctionToString.apply(this, arguments); + }; + }, + + _unpatchFunctionToString: function() { + if (this._originalFunctionToString) { + // eslint-disable-next-line no-extend-native + Function.prototype.toString = this._originalFunctionToString; + } + }, + + /** + * Wrap timer functions and event targets to catch errors and provide + * better metadata. + */ + _instrumentTryCatch: function() { + var self = this; + + var wrappedBuiltIns = self._wrappedBuiltIns; + + function wrapTimeFn(orig) { + return function(fn, t) { + // preserve arity + // Make a copy of the arguments to prevent deoptimization + // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments + var args = new Array(arguments.length); + for (var i = 0; i < args.length; ++i) { + args[i] = arguments[i]; + } + var originalCallback = args[0]; + if (isFunction(originalCallback)) { + args[0] = self.wrap(originalCallback); + } + + // IE < 9 doesn't support .call/.apply on setInterval/setTimeout, but it + // also supports only two arguments and doesn't care what this is, so we + // can just call the original function directly. + if (orig.apply) { + return orig.apply(this, args); + } else { + return orig(args[0], args[1]); + } + }; + } + + var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; + + function wrapEventTarget(global) { + var proto = _window[global] && _window[global].prototype; + if (proto && proto.hasOwnProperty && proto.hasOwnProperty('addEventListener')) { + fill( + proto, + 'addEventListener', + function(orig) { + return function(evtName, fn, capture, secure) { + // preserve arity + try { + if (fn && fn.handleEvent) { + fn.handleEvent = self.wrap(fn.handleEvent); + } + } catch (err) { + // can sometimes get 'Permission denied to access property "handle Event' + } + + // More breadcrumb DOM capture ... done here and not in `_instrumentBreadcrumbs` + // so that we don't have more than one wrapper function + var before, clickHandler, keypressHandler; + + if ( + autoBreadcrumbs && + autoBreadcrumbs.dom && + (global === 'EventTarget' || global === 'Node') + ) { + // NOTE: generating multiple handlers per addEventListener invocation, should + // revisit and verify we can just use one (almost certainly) + clickHandler = self._breadcrumbEventHandler('click'); + keypressHandler = self._keypressEventHandler(); + before = function(evt) { + // need to intercept every DOM event in `before` argument, in case that + // same wrapped method is re-used for different events (e.g. mousemove THEN click) + // see #724 + if (!evt) return; + + var eventType; + try { + eventType = evt.type; + } catch (e) { + // just accessing event properties can throw an exception in some rare circumstances + // see: https://github.com/getsentry/raven-js/issues/838 + return; + } + if (eventType === 'click') return clickHandler(evt); + else if (eventType === 'keypress') return keypressHandler(evt); + }; + } + return orig.call( + this, + evtName, + self.wrap(fn, undefined, before), + capture, + secure + ); + }; + }, + wrappedBuiltIns + ); + fill( + proto, + 'removeEventListener', + function(orig) { + return function(evt, fn, capture, secure) { + try { + fn = fn && (fn.__raven_wrapper__ ? fn.__raven_wrapper__ : fn); + } catch (e) { + // ignore, accessing __raven_wrapper__ will throw in some Selenium environments + } + return orig.call(this, evt, fn, capture, secure); + }; + }, + wrappedBuiltIns + ); + } + } + + fill(_window, 'setTimeout', wrapTimeFn, wrappedBuiltIns); + fill(_window, 'setInterval', wrapTimeFn, wrappedBuiltIns); + if (_window.requestAnimationFrame) { + fill( + _window, + 'requestAnimationFrame', + function(orig) { + return function(cb) { + return orig(self.wrap(cb)); + }; + }, + wrappedBuiltIns + ); + } + + // event targets borrowed from bugsnag-js: + // https://github.com/bugsnag/bugsnag-js/blob/master/src/bugsnag.js#L666 + var eventTargets = [ + 'EventTarget', + 'Window', + 'Node', + 'ApplicationCache', + 'AudioTrackList', + 'ChannelMergerNode', + 'CryptoOperation', + 'EventSource', + 'FileReader', + 'HTMLUnknownElement', + 'IDBDatabase', + 'IDBRequest', + 'IDBTransaction', + 'KeyOperation', + 'MediaController', + 'MessagePort', + 'ModalWindow', + 'Notification', + 'SVGElementInstance', + 'Screen', + 'TextTrack', + 'TextTrackCue', + 'TextTrackList', + 'WebSocket', + 'WebSocketWorker', + 'Worker', + 'XMLHttpRequest', + 'XMLHttpRequestEventTarget', + 'XMLHttpRequestUpload' + ]; + for (var i = 0; i < eventTargets.length; i++) { + wrapEventTarget(eventTargets[i]); + } + }, + + /** + * Instrument browser built-ins w/ breadcrumb capturing + * - XMLHttpRequests + * - DOM interactions (click/typing) + * - window.location changes + * - console + * + * Can be disabled or individually configured via the `autoBreadcrumbs` config option + */ + _instrumentBreadcrumbs: function() { + var self = this; + var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; + + var wrappedBuiltIns = self._wrappedBuiltIns; + + function wrapProp(prop, xhr) { + if (prop in xhr && isFunction(xhr[prop])) { + fill(xhr, prop, function(orig) { + return self.wrap(orig); + }); // intentionally don't track filled methods on XHR instances + } + } + + if (autoBreadcrumbs.xhr && 'XMLHttpRequest' in _window) { + var xhrproto = _window.XMLHttpRequest && _window.XMLHttpRequest.prototype; + fill( + xhrproto, + 'open', + function(origOpen) { + return function(method, url) { + // preserve arity + + // if Sentry key appears in URL, don't capture + if (isString(url) && url.indexOf(self._globalKey) === -1) { + this.__raven_xhr = { + method: method, + url: url, + status_code: null + }; + } + + return origOpen.apply(this, arguments); + }; + }, + wrappedBuiltIns + ); + + fill( + xhrproto, + 'send', + function(origSend) { + return function() { + // preserve arity + var xhr = this; + + function onreadystatechangeHandler() { + if (xhr.__raven_xhr && xhr.readyState === 4) { + try { + // touching statusCode in some platforms throws + // an exception + xhr.__raven_xhr.status_code = xhr.status; + } catch (e) { + /* do nothing */ + } + + self.captureBreadcrumb({ + type: 'http', + category: 'xhr', + data: xhr.__raven_xhr + }); + } + } + + var props = ['onload', 'onerror', 'onprogress']; + for (var j = 0; j < props.length; j++) { + wrapProp(props[j], xhr); + } + + if ('onreadystatechange' in xhr && isFunction(xhr.onreadystatechange)) { + fill( + xhr, + 'onreadystatechange', + function(orig) { + return self.wrap(orig, undefined, onreadystatechangeHandler); + } /* intentionally don't track this instrumentation */ + ); + } else { + // if onreadystatechange wasn't actually set by the page on this xhr, we + // are free to set our own and capture the breadcrumb + xhr.onreadystatechange = onreadystatechangeHandler; + } + + return origSend.apply(this, arguments); + }; + }, + wrappedBuiltIns + ); + } + + if (autoBreadcrumbs.xhr && supportsFetch()) { + fill( + _window, + 'fetch', + function(origFetch) { + return function() { + // preserve arity + // Make a copy of the arguments to prevent deoptimization + // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments + var args = new Array(arguments.length); + for (var i = 0; i < args.length; ++i) { + args[i] = arguments[i]; + } + + var fetchInput = args[0]; + var method = 'GET'; + var url; + + if (typeof fetchInput === 'string') { + url = fetchInput; + } else if ('Request' in _window && fetchInput instanceof _window.Request) { + url = fetchInput.url; + if (fetchInput.method) { + method = fetchInput.method; + } + } else { + url = '' + fetchInput; + } + + // if Sentry key appears in URL, don't capture, as it's our own request + if (url.indexOf(self._globalKey) !== -1) { + return origFetch.apply(this, args); + } + + if (args[1] && args[1].method) { + method = args[1].method; + } + + var fetchData = { + method: method, + url: url, + status_code: null + }; + + return origFetch + .apply(this, args) + .then(function(response) { + fetchData.status_code = response.status; + + self.captureBreadcrumb({ + type: 'http', + category: 'fetch', + data: fetchData + }); + + return response; + }) + ['catch'](function(err) { + // if there is an error performing the request + self.captureBreadcrumb({ + type: 'http', + category: 'fetch', + data: fetchData, + level: 'error' + }); + + throw err; + }); + }; + }, + wrappedBuiltIns + ); + } + + // Capture breadcrumbs from any click that is unhandled / bubbled up all the way + // to the document. Do this before we instrument addEventListener. + if (autoBreadcrumbs.dom && this._hasDocument) { + if (_document.addEventListener) { + _document.addEventListener('click', self._breadcrumbEventHandler('click'), false); + _document.addEventListener('keypress', self._keypressEventHandler(), false); + } else if (_document.attachEvent) { + // IE8 Compatibility + _document.attachEvent('onclick', self._breadcrumbEventHandler('click')); + _document.attachEvent('onkeypress', self._keypressEventHandler()); + } + } + + // record navigation (URL) changes + // NOTE: in Chrome App environment, touching history.pushState, *even inside + // a try/catch block*, will cause Chrome to output an error to console.error + // borrowed from: https://github.com/angular/angular.js/pull/13945/files + var chrome = _window.chrome; + var isChromePackagedApp = chrome && chrome.app && chrome.app.runtime; + var hasPushAndReplaceState = + !isChromePackagedApp && + _window.history && + _window.history.pushState && + _window.history.replaceState; + if (autoBreadcrumbs.location && hasPushAndReplaceState) { + // TODO: remove onpopstate handler on uninstall() + var oldOnPopState = _window.onpopstate; + _window.onpopstate = function() { + var currentHref = self._location.href; + self._captureUrlChange(self._lastHref, currentHref); + + if (oldOnPopState) { + return oldOnPopState.apply(this, arguments); + } + }; + + var historyReplacementFunction = function(origHistFunction) { + // note history.pushState.length is 0; intentionally not declaring + // params to preserve 0 arity + return function(/* state, title, url */) { + var url = arguments.length > 2 ? arguments[2] : undefined; + + // url argument is optional + if (url) { + // coerce to string (this is what pushState does) + self._captureUrlChange(self._lastHref, url + ''); + } + + return origHistFunction.apply(this, arguments); + }; + }; + + fill(_window.history, 'pushState', historyReplacementFunction, wrappedBuiltIns); + fill(_window.history, 'replaceState', historyReplacementFunction, wrappedBuiltIns); + } + + if (autoBreadcrumbs.console && 'console' in _window && console.log) { + // console + var consoleMethodCallback = function(msg, data) { + self.captureBreadcrumb({ + message: msg, + level: data.level, + category: 'console' + }); + }; + + each(['debug', 'info', 'warn', 'error', 'log'], function(_, level) { + wrapConsoleMethod(console, level, consoleMethodCallback); + }); + } + }, + + _restoreBuiltIns: function() { + // restore any wrapped builtins + var builtin; + while (this._wrappedBuiltIns.length) { + builtin = this._wrappedBuiltIns.shift(); + + var obj = builtin[0], + name = builtin[1], + orig = builtin[2]; + + obj[name] = orig; + } + }, + + _restoreConsole: function() { + // eslint-disable-next-line guard-for-in + for (var method in this._originalConsoleMethods) { + this._originalConsole[method] = this._originalConsoleMethods[method]; + } + }, + + _drainPlugins: function() { + var self = this; + + // FIX ME TODO + each(this._plugins, function(_, plugin) { + var installer = plugin[0]; + var args = plugin[1]; + installer.apply(self, [self].concat(args)); + }); + }, + + _parseDSN: function(str) { + var m = dsnPattern.exec(str), + dsn = {}, + i = 7; + + try { + while (i--) dsn[dsnKeys[i]] = m[i] || ''; + } catch (e) { + throw new RavenConfigError('Invalid DSN: ' + str); + } + + if (dsn.pass && !this._globalOptions.allowSecretKey) { + throw new RavenConfigError( + 'Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key' + ); + } + + return dsn; + }, + + _getGlobalServer: function(uri) { + // assemble the endpoint from the uri pieces + var globalServer = '//' + uri.host + (uri.port ? ':' + uri.port : ''); + + if (uri.protocol) { + globalServer = uri.protocol + ':' + globalServer; + } + return globalServer; + }, + + _handleOnErrorStackInfo: function() { + // if we are intentionally ignoring errors via onerror, bail out + if (!this._ignoreOnError) { + this._handleStackInfo.apply(this, arguments); + } + }, + + _handleStackInfo: function(stackInfo, options) { + var frames = this._prepareFrames(stackInfo, options); + + this._triggerEvent('handle', { + stackInfo: stackInfo, + options: options + }); + + this._processException( + stackInfo.name, + stackInfo.message, + stackInfo.url, + stackInfo.lineno, + frames, + options + ); + }, + + _prepareFrames: function(stackInfo, options) { + var self = this; + var frames = []; + if (stackInfo.stack && stackInfo.stack.length) { + each(stackInfo.stack, function(i, stack) { + var frame = self._normalizeFrame(stack, stackInfo.url); + if (frame) { + frames.push(frame); + } + }); + + // e.g. frames captured via captureMessage throw + if (options && options.trimHeadFrames) { + for (var j = 0; j < options.trimHeadFrames && j < frames.length; j++) { + frames[j].in_app = false; + } + } + } + frames = frames.slice(0, this._globalOptions.stackTraceLimit); + return frames; + }, + + _normalizeFrame: function(frame, stackInfoUrl) { + // normalize the frames data + var normalized = { + filename: frame.url, + lineno: frame.line, + colno: frame.column, + function: frame.func || '?' + }; + + // Case when we don't have any information about the error + // E.g. throwing a string or raw object, instead of an `Error` in Firefox + // Generating synthetic error doesn't add any value here + // + // We should probably somehow let a user know that they should fix their code + if (!frame.url) { + normalized.filename = stackInfoUrl; // fallback to whole stacks url from onerror handler + } + + normalized.in_app = !// determine if an exception came from outside of our app + // first we check the global includePaths list. + ( + (!!this._globalOptions.includePaths.test && + !this._globalOptions.includePaths.test(normalized.filename)) || + // Now we check for fun, if the function name is Raven or TraceKit + /(Raven|TraceKit)\./.test(normalized['function']) || + // finally, we do a last ditch effort and check for raven.min.js + /raven\.(min\.)?js$/.test(normalized.filename) + ); + + return normalized; + }, + + _processException: function(type, message, fileurl, lineno, frames, options) { + var prefixedMessage = (type ? type + ': ' : '') + (message || ''); + if ( + !!this._globalOptions.ignoreErrors.test && + (this._globalOptions.ignoreErrors.test(message) || + this._globalOptions.ignoreErrors.test(prefixedMessage)) + ) { + return; + } + + var stacktrace; + + if (frames && frames.length) { + fileurl = frames[0].filename || fileurl; + // Sentry expects frames oldest to newest + // and JS sends them as newest to oldest + frames.reverse(); + stacktrace = {frames: frames}; + } else if (fileurl) { + stacktrace = { + frames: [ + { + filename: fileurl, + lineno: lineno, + in_app: true + } + ] + }; + } + + if ( + !!this._globalOptions.ignoreUrls.test && + this._globalOptions.ignoreUrls.test(fileurl) + ) { + return; + } + + if ( + !!this._globalOptions.whitelistUrls.test && + !this._globalOptions.whitelistUrls.test(fileurl) + ) { + return; + } + + var data = objectMerge( + { + // sentry.interfaces.Exception + exception: { + values: [ + { + type: type, + value: message, + stacktrace: stacktrace + } + ] + }, + transaction: fileurl + }, + options + ); + + // Fire away! + this._send(data); + }, + + _trimPacket: function(data) { + // For now, we only want to truncate the two different messages + // but this could/should be expanded to just trim everything + var max = this._globalOptions.maxMessageLength; + if (data.message) { + data.message = truncate(data.message, max); + } + if (data.exception) { + var exception = data.exception.values[0]; + exception.value = truncate(exception.value, max); + } + + var request = data.request; + if (request) { + if (request.url) { + request.url = truncate(request.url, this._globalOptions.maxUrlLength); + } + if (request.Referer) { + request.Referer = truncate(request.Referer, this._globalOptions.maxUrlLength); + } + } + + if (data.breadcrumbs && data.breadcrumbs.values) + this._trimBreadcrumbs(data.breadcrumbs); + + return data; + }, + + /** + * Truncate breadcrumb values (right now just URLs) + */ + _trimBreadcrumbs: function(breadcrumbs) { + // known breadcrumb properties with urls + // TODO: also consider arbitrary prop values that start with (https?)?:// + var urlProps = ['to', 'from', 'url'], + urlProp, + crumb, + data; + + for (var i = 0; i < breadcrumbs.values.length; ++i) { + crumb = breadcrumbs.values[i]; + if ( + !crumb.hasOwnProperty('data') || + !isObject(crumb.data) || + objectFrozen(crumb.data) + ) + continue; + + data = objectMerge({}, crumb.data); + for (var j = 0; j < urlProps.length; ++j) { + urlProp = urlProps[j]; + if (data.hasOwnProperty(urlProp) && data[urlProp]) { + data[urlProp] = truncate(data[urlProp], this._globalOptions.maxUrlLength); + } + } + breadcrumbs.values[i].data = data; + } + }, + + _getHttpData: function() { + if (!this._hasNavigator && !this._hasDocument) return; + var httpData = {}; + + if (this._hasNavigator && _navigator.userAgent) { + httpData.headers = { + 'User-Agent': _navigator.userAgent + }; + } + + // Check in `window` instead of `document`, as we may be in ServiceWorker environment + if (_window.location && _window.location.href) { + httpData.url = _window.location.href; + } + + if (this._hasDocument && _document.referrer) { + if (!httpData.headers) httpData.headers = {}; + httpData.headers.Referer = _document.referrer; + } + + return httpData; + }, + + _resetBackoff: function() { + this._backoffDuration = 0; + this._backoffStart = null; + }, + + _shouldBackoff: function() { + return this._backoffDuration && now() - this._backoffStart < this._backoffDuration; + }, + + /** + * Returns true if the in-process data payload matches the signature + * of the previously-sent data + * + * NOTE: This has to be done at this level because TraceKit can generate + * data from window.onerror WITHOUT an exception object (IE8, IE9, + * other old browsers). This can take the form of an "exception" + * data object with a single frame (derived from the onerror args). + */ + _isRepeatData: function(current) { + var last = this._lastData; + + if ( + !last || + current.message !== last.message || // defined for captureMessage + current.transaction !== last.transaction // defined for captureException/onerror + ) + return false; + + // Stacktrace interface (i.e. from captureMessage) + if (current.stacktrace || last.stacktrace) { + return isSameStacktrace(current.stacktrace, last.stacktrace); + } else if (current.exception || last.exception) { + // Exception interface (i.e. from captureException/onerror) + return isSameException(current.exception, last.exception); + } + + return true; + }, + + _setBackoffState: function(request) { + // If we are already in a backoff state, don't change anything + if (this._shouldBackoff()) { + return; + } + + var status = request.status; + + // 400 - project_id doesn't exist or some other fatal + // 401 - invalid/revoked dsn + // 429 - too many requests + if (!(status === 400 || status === 401 || status === 429)) return; + + var retry; + try { + // If Retry-After is not in Access-Control-Expose-Headers, most + // browsers will throw an exception trying to access it + if (supportsFetch()) { + retry = request.headers.get('Retry-After'); + } else { + retry = request.getResponseHeader('Retry-After'); + } + + // Retry-After is returned in seconds + retry = parseInt(retry, 10) * 1000; + } catch (e) { + /* eslint no-empty:0 */ + } + + this._backoffDuration = retry + ? // If Sentry server returned a Retry-After value, use it + retry + : // Otherwise, double the last backoff duration (starts at 1 sec) + this._backoffDuration * 2 || 1000; + + this._backoffStart = now(); + }, + + _send: function(data) { + var globalOptions = this._globalOptions; + + var baseData = { + project: this._globalProject, + logger: globalOptions.logger, + platform: 'javascript' + }, + httpData = this._getHttpData(); + + if (httpData) { + baseData.request = httpData; + } + + // HACK: delete `trimHeadFrames` to prevent from appearing in outbound payload + if (data.trimHeadFrames) delete data.trimHeadFrames; + + data = objectMerge(baseData, data); + + // Merge in the tags and extra separately since objectMerge doesn't handle a deep merge + data.tags = objectMerge(objectMerge({}, this._globalContext.tags), data.tags); + data.extra = objectMerge(objectMerge({}, this._globalContext.extra), data.extra); + + // Send along our own collected metadata with extra + data.extra['session:duration'] = now() - this._startTime; + + if (this._breadcrumbs && this._breadcrumbs.length > 0) { + // intentionally make shallow copy so that additions + // to breadcrumbs aren't accidentally sent in this request + data.breadcrumbs = { + values: [].slice.call(this._breadcrumbs, 0) + }; + } + + if (this._globalContext.user) { + // sentry.interfaces.User + data.user = this._globalContext.user; + } + + // Include the environment if it's defined in globalOptions + if (globalOptions.environment) data.environment = globalOptions.environment; + + // Include the release if it's defined in globalOptions + if (globalOptions.release) data.release = globalOptions.release; + + // Include server_name if it's defined in globalOptions + if (globalOptions.serverName) data.server_name = globalOptions.serverName; + + data = this._sanitizeData(data); + + // Cleanup empty properties before sending them to the server + Object.keys(data).forEach(function(key) { + if (data[key] == null || data[key] === '' || isEmptyObject(data[key])) { + delete data[key]; + } + }); + + if (isFunction(globalOptions.dataCallback)) { + data = globalOptions.dataCallback(data) || data; + } + + // Why?????????? + if (!data || isEmptyObject(data)) { + return; + } + + // Check if the request should be filtered or not + if ( + isFunction(globalOptions.shouldSendCallback) && + !globalOptions.shouldSendCallback(data) + ) { + return; + } + + // Backoff state: Sentry server previously responded w/ an error (e.g. 429 - too many requests), + // so drop requests until "cool-off" period has elapsed. + if (this._shouldBackoff()) { + this._logDebug('warn', 'Raven dropped error due to backoff: ', data); + return; + } + + if (typeof globalOptions.sampleRate === 'number') { + if (Math.random() < globalOptions.sampleRate) { + this._sendProcessedPayload(data); + } + } else { + this._sendProcessedPayload(data); + } + }, + + _sanitizeData: function(data) { + return sanitize(data, this._globalOptions.sanitizeKeys); + }, + + _getUuid: function() { + return uuid4(); + }, + + _sendProcessedPayload: function(data, callback) { + var self = this; + var globalOptions = this._globalOptions; + + if (!this.isSetup()) return; + + // Try and clean up the packet before sending by truncating long values + data = this._trimPacket(data); + + // ideally duplicate error testing should occur *before* dataCallback/shouldSendCallback, + // but this would require copying an un-truncated copy of the data packet, which can be + // arbitrarily deep (extra_data) -- could be worthwhile? will revisit + if (!this._globalOptions.allowDuplicates && this._isRepeatData(data)) { + this._logDebug('warn', 'Raven dropped repeat event: ', data); + return; + } + + // Send along an event_id if not explicitly passed. + // This event_id can be used to reference the error within Sentry itself. + // Set lastEventId after we know the error should actually be sent + this._lastEventId = data.event_id || (data.event_id = this._getUuid()); + + // Store outbound payload after trim + this._lastData = data; + + this._logDebug('debug', 'Raven about to send:', data); + + var auth = { + sentry_version: '7', + sentry_client: 'raven-js/' + this.VERSION, + sentry_key: this._globalKey + }; + + if (this._globalSecret) { + auth.sentry_secret = this._globalSecret; + } + + var exception = data.exception && data.exception.values[0]; + + // only capture 'sentry' breadcrumb is autoBreadcrumbs is truthy + if ( + this._globalOptions.autoBreadcrumbs && + this._globalOptions.autoBreadcrumbs.sentry + ) { + this.captureBreadcrumb({ + category: 'sentry', + message: exception + ? (exception.type ? exception.type + ': ' : '') + exception.value + : data.message, + event_id: data.event_id, + level: data.level || 'error' // presume error unless specified + }); + } + + var url = this._globalEndpoint; + (globalOptions.transport || this._makeRequest).call(this, { + url: url, + auth: auth, + data: data, + options: globalOptions, + onSuccess: function success() { + self._resetBackoff(); + + self._triggerEvent('success', { + data: data, + src: url + }); + callback && callback(); + }, + onError: function failure(error) { + self._logDebug('error', 'Raven transport failed to send: ', error); + + if (error.request) { + self._setBackoffState(error.request); + } + + self._triggerEvent('failure', { + data: data, + src: url + }); + error = error || new Error('Raven send failed (no additional details provided)'); + callback && callback(error); + } + }); + }, + + _makeRequest: function(opts) { + // Auth is intentionally sent as part of query string (NOT as custom HTTP header) to avoid preflight CORS requests + var url = opts.url + '?' + urlencode(opts.auth); + + var evaluatedHeaders = null; + var evaluatedFetchParameters = {}; + + if (opts.options.headers) { + evaluatedHeaders = this._evaluateHash(opts.options.headers); + } + + if (opts.options.fetchParameters) { + evaluatedFetchParameters = this._evaluateHash(opts.options.fetchParameters); + } + + if (supportsFetch()) { + evaluatedFetchParameters.body = stringify(opts.data); + + var defaultFetchOptions = objectMerge({}, this._fetchDefaults); + var fetchOptions = objectMerge(defaultFetchOptions, evaluatedFetchParameters); + + if (evaluatedHeaders) { + fetchOptions.headers = evaluatedHeaders; + } + + return _window + .fetch(url, fetchOptions) + .then(function(response) { + if (response.ok) { + opts.onSuccess && opts.onSuccess(); + } else { + var error = new Error('Sentry error code: ' + response.status); + // It's called request only to keep compatibility with XHR interface + // and not add more redundant checks in setBackoffState method + error.request = response; + opts.onError && opts.onError(error); + } + }) + ['catch'](function() { + opts.onError && + opts.onError(new Error('Sentry error code: network unavailable')); + }); + } + + var request = _window.XMLHttpRequest && new _window.XMLHttpRequest(); + if (!request) return; + + // if browser doesn't support CORS (e.g. IE7), we are out of luck + var hasCORS = 'withCredentials' in request || typeof XDomainRequest !== 'undefined'; + + if (!hasCORS) return; + + if ('withCredentials' in request) { + request.onreadystatechange = function() { + if (request.readyState !== 4) { + return; + } else if (request.status === 200) { + opts.onSuccess && opts.onSuccess(); + } else if (opts.onError) { + var err = new Error('Sentry error code: ' + request.status); + err.request = request; + opts.onError(err); + } + }; + } else { + request = new XDomainRequest(); + // xdomainrequest cannot go http -> https (or vice versa), + // so always use protocol relative + url = url.replace(/^https?:/, ''); + + // onreadystatechange not supported by XDomainRequest + if (opts.onSuccess) { + request.onload = opts.onSuccess; + } + if (opts.onError) { + request.onerror = function() { + var err = new Error('Sentry error code: XDomainRequest'); + err.request = request; + opts.onError(err); + }; + } + } + + request.open('POST', url); + + if (evaluatedHeaders) { + each(evaluatedHeaders, function(key, value) { + request.setRequestHeader(key, value); + }); + } + + request.send(stringify(opts.data)); + }, + + _evaluateHash: function(hash) { + var evaluated = {}; + + for (var key in hash) { + if (hash.hasOwnProperty(key)) { + var value = hash[key]; + evaluated[key] = typeof value === 'function' ? value() : value; + } + } + + return evaluated; + }, + + _logDebug: function(level) { + // We allow `Raven.debug` and `Raven.config(DSN, { debug: true })` to not make backward incompatible API change + if ( + this._originalConsoleMethods[level] && + (this.debug || this._globalOptions.debug) + ) { + // In IE<10 console methods do not have their own 'apply' method + Function.prototype.apply.call( + this._originalConsoleMethods[level], + this._originalConsole, + [].slice.call(arguments, 1) + ); + } + }, + + _mergeContext: function(key, context) { + if (isUndefined(context)) { + delete this._globalContext[key]; + } else { + this._globalContext[key] = objectMerge(this._globalContext[key] || {}, context); + } + } +}; + +// Deprecations +Raven.prototype.setUser = Raven.prototype.setUserContext; +Raven.prototype.setReleaseContext = Raven.prototype.setRelease; + +module.exports = Raven; + +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"10":10,"11":11,"4":4,"5":5,"8":8,"9":9}],7:[function(_dereq_,module,exports){ +(function (global){ +/** + * Enforces a single instance of the Raven client, and the + * main entry point for Raven. If you are a consumer of the + * Raven library, you SHOULD load this file (vs raven.js). + **/ + +var RavenConstructor = _dereq_(6); + +// This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) +var _window = + typeof window !== 'undefined' + ? window + : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; +var _Raven = _window.Raven; + +var Raven = new RavenConstructor(); + +/* + * Allow multiple versions of Raven to be installed. + * Strip Raven from the global context and returns the instance. + * + * @return {Raven} + */ +Raven.noConflict = function() { + _window.Raven = _Raven; + return Raven; +}; + +Raven.afterLoad(); + +module.exports = Raven; + +/** + * DISCLAIMER: + * + * Expose `Client` constructor for cases where user want to track multiple "sub-applications" in one larger app. + * It's not meant to be used by a wide audience, so pleaaase make sure that you know what you're doing before using it. + * Accidentally calling `install` multiple times, may result in an unexpected behavior that's very hard to debug. + * + * It's called `Client' to be in-line with Raven Node implementation. + * + * HOWTO: + * + * import Raven from 'raven-js'; + * + * const someAppReporter = new Raven.Client(); + * const someOtherAppReporter = new Raven.Client(); + * + * someAppReporter.config('__DSN__', { + * ...config goes here + * }); + * + * someOtherAppReporter.config('__OTHER_DSN__', { + * ...config goes here + * }); + * + * someAppReporter.captureMessage(...); + * someAppReporter.captureException(...); + * someAppReporter.captureBreadcrumb(...); + * + * someOtherAppReporter.captureMessage(...); + * someOtherAppReporter.captureException(...); + * someOtherAppReporter.captureBreadcrumb(...); + * + * It should "just work". + */ +module.exports.Client = RavenConstructor; + +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"6":6}],8:[function(_dereq_,module,exports){ +(function (global){ +var stringify = _dereq_(10); + +var _window = + typeof window !== 'undefined' + ? window + : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; + +function isObject(what) { + return typeof what === 'object' && what !== null; +} + +// Yanked from https://git.io/vS8DV re-used under CC0 +// with some tiny modifications +function isError(value) { + switch (Object.prototype.toString.call(value)) { + case '[object Error]': + return true; + case '[object Exception]': + return true; + case '[object DOMException]': + return true; + default: + return value instanceof Error; + } +} + +function isErrorEvent(value) { + return Object.prototype.toString.call(value) === '[object ErrorEvent]'; +} + +function isDOMError(value) { + return Object.prototype.toString.call(value) === '[object DOMError]'; +} + +function isDOMException(value) { + return Object.prototype.toString.call(value) === '[object DOMException]'; +} + +function isUndefined(what) { + return what === void 0; +} + +function isFunction(what) { + return typeof what === 'function'; +} + +function isPlainObject(what) { + return Object.prototype.toString.call(what) === '[object Object]'; +} + +function isString(what) { + return Object.prototype.toString.call(what) === '[object String]'; +} + +function isArray(what) { + return Object.prototype.toString.call(what) === '[object Array]'; +} + +function isEmptyObject(what) { + if (!isPlainObject(what)) return false; + + for (var _ in what) { + if (what.hasOwnProperty(_)) { + return false; + } + } + return true; +} + +function supportsErrorEvent() { + try { + new ErrorEvent(''); // eslint-disable-line no-new + return true; + } catch (e) { + return false; + } +} + +function supportsDOMError() { + try { + new DOMError(''); // eslint-disable-line no-new + return true; + } catch (e) { + return false; + } +} + +function supportsDOMException() { + try { + new DOMException(''); // eslint-disable-line no-new + return true; + } catch (e) { + return false; + } +} + +function supportsFetch() { + if (!('fetch' in _window)) return false; + + try { + new Headers(); // eslint-disable-line no-new + new Request(''); // eslint-disable-line no-new + new Response(); // eslint-disable-line no-new + return true; + } catch (e) { + return false; + } +} + +// Despite all stars in the sky saying that Edge supports old draft syntax, aka 'never', 'always', 'origin' and 'default +// https://caniuse.com/#feat=referrer-policy +// It doesn't. And it throw exception instead of ignoring this parameter... +// REF: https://github.com/getsentry/raven-js/issues/1233 +function supportsReferrerPolicy() { + if (!supportsFetch()) return false; + + try { + // eslint-disable-next-line no-new + new Request('pickleRick', { + referrerPolicy: 'origin' + }); + return true; + } catch (e) { + return false; + } +} + +function supportsPromiseRejectionEvent() { + return typeof PromiseRejectionEvent === 'function'; +} + +function wrappedCallback(callback) { + function dataCallback(data, original) { + var normalizedData = callback(data) || data; + if (original) { + return original(normalizedData) || normalizedData; + } + return normalizedData; + } + + return dataCallback; +} + +function each(obj, callback) { + var i, j; + + if (isUndefined(obj.length)) { + for (i in obj) { + if (hasKey(obj, i)) { + callback.call(null, i, obj[i]); + } + } + } else { + j = obj.length; + if (j) { + for (i = 0; i < j; i++) { + callback.call(null, i, obj[i]); + } + } + } +} + +function objectMerge(obj1, obj2) { + if (!obj2) { + return obj1; + } + each(obj2, function(key, value) { + obj1[key] = value; + }); + return obj1; +} + +/** + * This function is only used for react-native. + * react-native freezes object that have already been sent over the + * js bridge. We need this function in order to check if the object is frozen. + * So it's ok that objectFrozen returns false if Object.isFrozen is not + * supported because it's not relevant for other "platforms". See related issue: + * https://github.com/getsentry/react-native-sentry/issues/57 + */ +function objectFrozen(obj) { + if (!Object.isFrozen) { + return false; + } + return Object.isFrozen(obj); +} + +function truncate(str, max) { + if (typeof max !== 'number') { + throw new Error('2nd argument to `truncate` function should be a number'); + } + if (typeof str !== 'string' || max === 0) { + return str; + } + return str.length <= max ? str : str.substr(0, max) + '\u2026'; +} + +/** + * hasKey, a better form of hasOwnProperty + * Example: hasKey(MainHostObject, property) === true/false + * + * @param {Object} host object to check property + * @param {string} key to check + */ +function hasKey(object, key) { + return Object.prototype.hasOwnProperty.call(object, key); +} + +function joinRegExp(patterns) { + // Combine an array of regular expressions and strings into one large regexp + // Be mad. + var sources = [], + i = 0, + len = patterns.length, + pattern; + + for (; i < len; i++) { + pattern = patterns[i]; + if (isString(pattern)) { + // If it's a string, we need to escape it + // Taken from: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions + sources.push(pattern.replace(/([.*+?^=!:${}()|\[\]\/\\])/g, '\\$1')); + } else if (pattern && pattern.source) { + // If it's a regexp already, we want to extract the source + sources.push(pattern.source); + } + // Intentionally skip other cases + } + return new RegExp(sources.join('|'), 'i'); +} + +function urlencode(o) { + var pairs = []; + each(o, function(key, value) { + pairs.push(encodeURIComponent(key) + '=' + encodeURIComponent(value)); + }); + return pairs.join('&'); +} + +// borrowed from https://tools.ietf.org/html/rfc3986#appendix-B +// intentionally using regex and not href parsing trick because React Native and other +// environments where DOM might not be available +function parseUrl(url) { + if (typeof url !== 'string') return {}; + var match = url.match(/^(([^:\/?#]+):)?(\/\/([^\/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?$/); + + // coerce to undefined values to empty string so we don't get 'undefined' + var query = match[6] || ''; + var fragment = match[8] || ''; + return { + protocol: match[2], + host: match[4], + path: match[5], + relative: match[5] + query + fragment // everything minus origin + }; +} +function uuid4() { + var crypto = _window.crypto || _window.msCrypto; + + if (!isUndefined(crypto) && crypto.getRandomValues) { + // Use window.crypto API if available + // eslint-disable-next-line no-undef + var arr = new Uint16Array(8); + crypto.getRandomValues(arr); + + // set 4 in byte 7 + arr[3] = (arr[3] & 0xfff) | 0x4000; + // set 2 most significant bits of byte 9 to '10' + arr[4] = (arr[4] & 0x3fff) | 0x8000; + + var pad = function(num) { + var v = num.toString(16); + while (v.length < 4) { + v = '0' + v; + } + return v; + }; + + return ( + pad(arr[0]) + + pad(arr[1]) + + pad(arr[2]) + + pad(arr[3]) + + pad(arr[4]) + + pad(arr[5]) + + pad(arr[6]) + + pad(arr[7]) + ); + } else { + // http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/2117523#2117523 + return 'xxxxxxxxxxxx4xxxyxxxxxxxxxxxxxxx'.replace(/[xy]/g, function(c) { + var r = (Math.random() * 16) | 0, + v = c === 'x' ? r : (r & 0x3) | 0x8; + return v.toString(16); + }); + } +} + +/** + * Given a child DOM element, returns a query-selector statement describing that + * and its ancestors + * e.g. [HTMLElement] => body > div > input#foo.btn[name=baz] + * @param elem + * @returns {string} + */ +function htmlTreeAsString(elem) { + /* eslint no-extra-parens:0*/ + var MAX_TRAVERSE_HEIGHT = 5, + MAX_OUTPUT_LEN = 80, + out = [], + height = 0, + len = 0, + separator = ' > ', + sepLength = separator.length, + nextStr; + + while (elem && height++ < MAX_TRAVERSE_HEIGHT) { + nextStr = htmlElementAsString(elem); + // bail out if + // - nextStr is the 'html' element + // - the length of the string that would be created exceeds MAX_OUTPUT_LEN + // (ignore this limit if we are on the first iteration) + if ( + nextStr === 'html' || + (height > 1 && len + out.length * sepLength + nextStr.length >= MAX_OUTPUT_LEN) + ) { + break; + } + + out.push(nextStr); + + len += nextStr.length; + elem = elem.parentNode; + } + + return out.reverse().join(separator); +} + +/** + * Returns a simple, query-selector representation of a DOM element + * e.g. [HTMLElement] => input#foo.btn[name=baz] + * @param HTMLElement + * @returns {string} + */ +function htmlElementAsString(elem) { + var out = [], + className, + classes, + key, + attr, + i; + + if (!elem || !elem.tagName) { + return ''; + } + + out.push(elem.tagName.toLowerCase()); + if (elem.id) { + out.push('#' + elem.id); + } + + className = elem.className; + if (className && isString(className)) { + classes = className.split(/\s+/); + for (i = 0; i < classes.length; i++) { + out.push('.' + classes[i]); + } + } + var attrWhitelist = ['type', 'name', 'title', 'alt']; + for (i = 0; i < attrWhitelist.length; i++) { + key = attrWhitelist[i]; + attr = elem.getAttribute(key); + if (attr) { + out.push('[' + key + '="' + attr + '"]'); + } + } + return out.join(''); +} + +/** + * Returns true if either a OR b is truthy, but not both + */ +function isOnlyOneTruthy(a, b) { + return !!(!!a ^ !!b); +} + +/** + * Returns true if both parameters are undefined + */ +function isBothUndefined(a, b) { + return isUndefined(a) && isUndefined(b); +} + +/** + * Returns true if the two input exception interfaces have the same content + */ +function isSameException(ex1, ex2) { + if (isOnlyOneTruthy(ex1, ex2)) return false; + + ex1 = ex1.values[0]; + ex2 = ex2.values[0]; + + if (ex1.type !== ex2.type || ex1.value !== ex2.value) return false; + + // in case both stacktraces are undefined, we can't decide so default to false + if (isBothUndefined(ex1.stacktrace, ex2.stacktrace)) return false; + + return isSameStacktrace(ex1.stacktrace, ex2.stacktrace); +} + +/** + * Returns true if the two input stack trace interfaces have the same content + */ +function isSameStacktrace(stack1, stack2) { + if (isOnlyOneTruthy(stack1, stack2)) return false; + + var frames1 = stack1.frames; + var frames2 = stack2.frames; + + // Exit early if frame count differs + if (frames1.length !== frames2.length) return false; + + // Iterate through every frame; bail out if anything differs + var a, b; + for (var i = 0; i < frames1.length; i++) { + a = frames1[i]; + b = frames2[i]; + if ( + a.filename !== b.filename || + a.lineno !== b.lineno || + a.colno !== b.colno || + a['function'] !== b['function'] + ) + return false; + } + return true; +} + +/** + * Polyfill a method + * @param obj object e.g. `document` + * @param name method name present on object e.g. `addEventListener` + * @param replacement replacement function + * @param track {optional} record instrumentation to an array + */ +function fill(obj, name, replacement, track) { + if (obj == null) return; + var orig = obj[name]; + obj[name] = replacement(orig); + obj[name].__raven__ = true; + obj[name].__orig__ = orig; + if (track) { + track.push([obj, name, orig]); + } +} + +/** + * Join values in array + * @param input array of values to be joined together + * @param delimiter string to be placed in-between values + * @returns {string} + */ +function safeJoin(input, delimiter) { + if (!isArray(input)) return ''; + + var output = []; + + for (var i = 0; i < input.length; i++) { + try { + output.push(String(input[i])); + } catch (e) { + output.push('[value cannot be serialized]'); + } + } + + return output.join(delimiter); +} + +// Default Node.js REPL depth +var MAX_SERIALIZE_EXCEPTION_DEPTH = 3; +// 50kB, as 100kB is max payload size, so half sounds reasonable +var MAX_SERIALIZE_EXCEPTION_SIZE = 50 * 1024; +var MAX_SERIALIZE_KEYS_LENGTH = 40; + +function utf8Length(value) { + return ~-encodeURI(value).split(/%..|./).length; +} + +function jsonSize(value) { + return utf8Length(JSON.stringify(value)); +} + +function serializeValue(value) { + if (typeof value === 'string') { + var maxLength = 40; + return truncate(value, maxLength); + } else if ( + typeof value === 'number' || + typeof value === 'boolean' || + typeof value === 'undefined' + ) { + return value; + } + + var type = Object.prototype.toString.call(value); + + // Node.js REPL notation + if (type === '[object Object]') return '[Object]'; + if (type === '[object Array]') return '[Array]'; + if (type === '[object Function]') + return value.name ? '[Function: ' + value.name + ']' : '[Function]'; + + return value; +} + +function serializeObject(value, depth) { + if (depth === 0) return serializeValue(value); + + if (isPlainObject(value)) { + return Object.keys(value).reduce(function(acc, key) { + acc[key] = serializeObject(value[key], depth - 1); + return acc; + }, {}); + } else if (Array.isArray(value)) { + return value.map(function(val) { + return serializeObject(val, depth - 1); + }); + } + + return serializeValue(value); +} + +function serializeException(ex, depth, maxSize) { + if (!isPlainObject(ex)) return ex; + + depth = typeof depth !== 'number' ? MAX_SERIALIZE_EXCEPTION_DEPTH : depth; + maxSize = typeof depth !== 'number' ? MAX_SERIALIZE_EXCEPTION_SIZE : maxSize; + + var serialized = serializeObject(ex, depth); + + if (jsonSize(stringify(serialized)) > maxSize) { + return serializeException(ex, depth - 1); + } + + return serialized; +} + +function serializeKeysForMessage(keys, maxLength) { + if (typeof keys === 'number' || typeof keys === 'string') return keys.toString(); + if (!Array.isArray(keys)) return ''; + + keys = keys.filter(function(key) { + return typeof key === 'string'; + }); + if (keys.length === 0) return '[object has no keys]'; + + maxLength = typeof maxLength !== 'number' ? MAX_SERIALIZE_KEYS_LENGTH : maxLength; + if (keys[0].length >= maxLength) return keys[0]; + + for (var usedKeys = keys.length; usedKeys > 0; usedKeys--) { + var serialized = keys.slice(0, usedKeys).join(', '); + if (serialized.length > maxLength) continue; + if (usedKeys === keys.length) return serialized; + return serialized + '\u2026'; + } + + return ''; +} + +function sanitize(input, sanitizeKeys) { + if (!isArray(sanitizeKeys) || (isArray(sanitizeKeys) && sanitizeKeys.length === 0)) + return input; + + var sanitizeRegExp = joinRegExp(sanitizeKeys); + var sanitizeMask = '********'; + var safeInput; + + try { + safeInput = JSON.parse(stringify(input)); + } catch (o_O) { + return input; + } + + function sanitizeWorker(workerInput) { + if (isArray(workerInput)) { + return workerInput.map(function(val) { + return sanitizeWorker(val); + }); + } + + if (isPlainObject(workerInput)) { + return Object.keys(workerInput).reduce(function(acc, k) { + if (sanitizeRegExp.test(k)) { + acc[k] = sanitizeMask; + } else { + acc[k] = sanitizeWorker(workerInput[k]); + } + return acc; + }, {}); + } + + return workerInput; + } + + return sanitizeWorker(safeInput); +} + +module.exports = { + isObject: isObject, + isError: isError, + isErrorEvent: isErrorEvent, + isDOMError: isDOMError, + isDOMException: isDOMException, + isUndefined: isUndefined, + isFunction: isFunction, + isPlainObject: isPlainObject, + isString: isString, + isArray: isArray, + isEmptyObject: isEmptyObject, + supportsErrorEvent: supportsErrorEvent, + supportsDOMError: supportsDOMError, + supportsDOMException: supportsDOMException, + supportsFetch: supportsFetch, + supportsReferrerPolicy: supportsReferrerPolicy, + supportsPromiseRejectionEvent: supportsPromiseRejectionEvent, + wrappedCallback: wrappedCallback, + each: each, + objectMerge: objectMerge, + truncate: truncate, + objectFrozen: objectFrozen, + hasKey: hasKey, + joinRegExp: joinRegExp, + urlencode: urlencode, + uuid4: uuid4, + htmlTreeAsString: htmlTreeAsString, + htmlElementAsString: htmlElementAsString, + isSameException: isSameException, + isSameStacktrace: isSameStacktrace, + parseUrl: parseUrl, + fill: fill, + safeJoin: safeJoin, + serializeException: serializeException, + serializeKeysForMessage: serializeKeysForMessage, + sanitize: sanitize +}; + +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"10":10}],9:[function(_dereq_,module,exports){ +(function (global){ +var utils = _dereq_(8); + +/* + TraceKit - Cross brower stack traces + + This was originally forked from github.com/occ/TraceKit, but has since been + largely re-written and is now maintained as part of raven-js. Tests for + this are in test/vendor. + + MIT license +*/ + +var TraceKit = { + collectWindowErrors: true, + debug: false +}; + +// This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) +var _window = + typeof window !== 'undefined' + ? window + : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; + +// global reference to slice +var _slice = [].slice; +var UNKNOWN_FUNCTION = '?'; + +// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error#Error_types +var ERROR_TYPES_RE = /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/; + +function getLocationHref() { + if (typeof document === 'undefined' || document.location == null) return ''; + return document.location.href; +} + +function getLocationOrigin() { + if (typeof document === 'undefined' || document.location == null) return ''; + + // Oh dear IE10... + if (!document.location.origin) { + document.location.origin = + document.location.protocol + + '//' + + document.location.hostname + + (document.location.port ? ':' + document.location.port : ''); + } + + return document.location.origin; +} + +/** + * TraceKit.report: cross-browser processing of unhandled exceptions + * + * Syntax: + * TraceKit.report.subscribe(function(stackInfo) { ... }) + * TraceKit.report.unsubscribe(function(stackInfo) { ... }) + * TraceKit.report(exception) + * try { ...code... } catch(ex) { TraceKit.report(ex); } + * + * Supports: + * - Firefox: full stack trace with line numbers, plus column number + * on top frame; column number is not guaranteed + * - Opera: full stack trace with line and column numbers + * - Chrome: full stack trace with line and column numbers + * - Safari: line and column number for the top frame only; some frames + * may be missing, and column number is not guaranteed + * - IE: line and column number for the top frame only; some frames + * may be missing, and column number is not guaranteed + * + * In theory, TraceKit should work on all of the following versions: + * - IE5.5+ (only 8.0 tested) + * - Firefox 0.9+ (only 3.5+ tested) + * - Opera 7+ (only 10.50 tested; versions 9 and earlier may require + * Exceptions Have Stacktrace to be enabled in opera:config) + * - Safari 3+ (only 4+ tested) + * - Chrome 1+ (only 5+ tested) + * - Konqueror 3.5+ (untested) + * + * Requires TraceKit.computeStackTrace. + * + * Tries to catch all unhandled exceptions and report them to the + * subscribed handlers. Please note that TraceKit.report will rethrow the + * exception. This is REQUIRED in order to get a useful stack trace in IE. + * If the exception does not reach the top of the browser, you will only + * get a stack trace from the point where TraceKit.report was called. + * + * Handlers receive a stackInfo object as described in the + * TraceKit.computeStackTrace docs. + */ +TraceKit.report = (function reportModuleWrapper() { + var handlers = [], + lastArgs = null, + lastException = null, + lastExceptionStack = null; + + /** + * Add a crash handler. + * @param {Function} handler + */ + function subscribe(handler) { + installGlobalHandler(); + handlers.push(handler); + } + + /** + * Remove a crash handler. + * @param {Function} handler + */ + function unsubscribe(handler) { + for (var i = handlers.length - 1; i >= 0; --i) { + if (handlers[i] === handler) { + handlers.splice(i, 1); + } + } + } + + /** + * Remove all crash handlers. + */ + function unsubscribeAll() { + uninstallGlobalHandler(); + handlers = []; + } + + /** + * Dispatch stack information to all handlers. + * @param {Object.} stack + */ + function notifyHandlers(stack, isWindowError) { + var exception = null; + if (isWindowError && !TraceKit.collectWindowErrors) { + return; + } + for (var i in handlers) { + if (handlers.hasOwnProperty(i)) { + try { + handlers[i].apply(null, [stack].concat(_slice.call(arguments, 2))); + } catch (inner) { + exception = inner; + } + } + } + + if (exception) { + throw exception; + } + } + + var _oldOnerrorHandler, _onErrorHandlerInstalled; + + /** + * Ensures all global unhandled exceptions are recorded. + * Supported by Gecko and IE. + * @param {string} msg Error message. + * @param {string} url URL of script that generated the exception. + * @param {(number|string)} lineNo The line number at which the error + * occurred. + * @param {?(number|string)} colNo The column number at which the error + * occurred. + * @param {?Error} ex The actual Error object. + */ + function traceKitWindowOnError(msg, url, lineNo, colNo, ex) { + var stack = null; + // If 'ex' is ErrorEvent, get real Error from inside + var exception = utils.isErrorEvent(ex) ? ex.error : ex; + // If 'msg' is ErrorEvent, get real message from inside + var message = utils.isErrorEvent(msg) ? msg.message : msg; + + if (lastExceptionStack) { + TraceKit.computeStackTrace.augmentStackTraceWithInitialElement( + lastExceptionStack, + url, + lineNo, + message + ); + processLastException(); + } else if (exception && utils.isError(exception)) { + // non-string `exception` arg; attempt to extract stack trace + + // New chrome and blink send along a real error object + // Let's just report that like a normal error. + // See: https://mikewest.org/2013/08/debugging-runtime-errors-with-window-onerror + stack = TraceKit.computeStackTrace(exception); + notifyHandlers(stack, true); + } else { + var location = { + url: url, + line: lineNo, + column: colNo + }; + + var name = undefined; + var groups; + + if ({}.toString.call(message) === '[object String]') { + var groups = message.match(ERROR_TYPES_RE); + if (groups) { + name = groups[1]; + message = groups[2]; + } + } + + location.func = UNKNOWN_FUNCTION; + + stack = { + name: name, + message: message, + url: getLocationHref(), + stack: [location] + }; + notifyHandlers(stack, true); + } + + if (_oldOnerrorHandler) { + return _oldOnerrorHandler.apply(this, arguments); + } + + return false; + } + + function installGlobalHandler() { + if (_onErrorHandlerInstalled) { + return; + } + _oldOnerrorHandler = _window.onerror; + _window.onerror = traceKitWindowOnError; + _onErrorHandlerInstalled = true; + } + + function uninstallGlobalHandler() { + if (!_onErrorHandlerInstalled) { + return; + } + _window.onerror = _oldOnerrorHandler; + _onErrorHandlerInstalled = false; + _oldOnerrorHandler = undefined; + } + + function processLastException() { + var _lastExceptionStack = lastExceptionStack, + _lastArgs = lastArgs; + lastArgs = null; + lastExceptionStack = null; + lastException = null; + notifyHandlers.apply(null, [_lastExceptionStack, false].concat(_lastArgs)); + } + + /** + * Reports an unhandled Error to TraceKit. + * @param {Error} ex + * @param {?boolean} rethrow If false, do not re-throw the exception. + * Only used for window.onerror to not cause an infinite loop of + * rethrowing. + */ + function report(ex, rethrow) { + var args = _slice.call(arguments, 1); + if (lastExceptionStack) { + if (lastException === ex) { + return; // already caught by an inner catch block, ignore + } else { + processLastException(); + } + } + + var stack = TraceKit.computeStackTrace(ex); + lastExceptionStack = stack; + lastException = ex; + lastArgs = args; + + // If the stack trace is incomplete, wait for 2 seconds for + // slow slow IE to see if onerror occurs or not before reporting + // this exception; otherwise, we will end up with an incomplete + // stack trace + setTimeout(function() { + if (lastException === ex) { + processLastException(); + } + }, stack.incomplete ? 2000 : 0); + + if (rethrow !== false) { + throw ex; // re-throw to propagate to the top level (and cause window.onerror) + } + } + + report.subscribe = subscribe; + report.unsubscribe = unsubscribe; + report.uninstall = unsubscribeAll; + return report; +})(); + +/** + * TraceKit.computeStackTrace: cross-browser stack traces in JavaScript + * + * Syntax: + * s = TraceKit.computeStackTrace(exception) // consider using TraceKit.report instead (see below) + * Returns: + * s.name - exception name + * s.message - exception message + * s.stack[i].url - JavaScript or HTML file URL + * s.stack[i].func - function name, or empty for anonymous functions (if guessing did not work) + * s.stack[i].args - arguments passed to the function, if known + * s.stack[i].line - line number, if known + * s.stack[i].column - column number, if known + * + * Supports: + * - Firefox: full stack trace with line numbers and unreliable column + * number on top frame + * - Opera 10: full stack trace with line and column numbers + * - Opera 9-: full stack trace with line numbers + * - Chrome: full stack trace with line and column numbers + * - Safari: line and column number for the topmost stacktrace element + * only + * - IE: no line numbers whatsoever + * + * Tries to guess names of anonymous functions by looking for assignments + * in the source code. In IE and Safari, we have to guess source file names + * by searching for function bodies inside all page scripts. This will not + * work for scripts that are loaded cross-domain. + * Here be dragons: some function names may be guessed incorrectly, and + * duplicate functions may be mismatched. + * + * TraceKit.computeStackTrace should only be used for tracing purposes. + * Logging of unhandled exceptions should be done with TraceKit.report, + * which builds on top of TraceKit.computeStackTrace and provides better + * IE support by utilizing the window.onerror event to retrieve information + * about the top of the stack. + * + * Note: In IE and Safari, no stack trace is recorded on the Error object, + * so computeStackTrace instead walks its *own* chain of callers. + * This means that: + * * in Safari, some methods may be missing from the stack trace; + * * in IE, the topmost function in the stack trace will always be the + * caller of computeStackTrace. + * + * This is okay for tracing (because you are likely to be calling + * computeStackTrace from the function you want to be the topmost element + * of the stack trace anyway), but not okay for logging unhandled + * exceptions (because your catch block will likely be far away from the + * inner function that actually caused the exception). + * + */ +TraceKit.computeStackTrace = (function computeStackTraceWrapper() { + // Contents of Exception in various browsers. + // + // SAFARI: + // ex.message = Can't find variable: qq + // ex.line = 59 + // ex.sourceId = 580238192 + // ex.sourceURL = http://... + // ex.expressionBeginOffset = 96 + // ex.expressionCaretOffset = 98 + // ex.expressionEndOffset = 98 + // ex.name = ReferenceError + // + // FIREFOX: + // ex.message = qq is not defined + // ex.fileName = http://... + // ex.lineNumber = 59 + // ex.columnNumber = 69 + // ex.stack = ...stack trace... (see the example below) + // ex.name = ReferenceError + // + // CHROME: + // ex.message = qq is not defined + // ex.name = ReferenceError + // ex.type = not_defined + // ex.arguments = ['aa'] + // ex.stack = ...stack trace... + // + // INTERNET EXPLORER: + // ex.message = ... + // ex.name = ReferenceError + // + // OPERA: + // ex.message = ...message... (see the example below) + // ex.name = ReferenceError + // ex.opera#sourceloc = 11 (pretty much useless, duplicates the info in ex.message) + // ex.stacktrace = n/a; see 'opera:config#UserPrefs|Exceptions Have Stacktrace' + + /** + * Computes stack trace information from the stack property. + * Chrome and Gecko use this property. + * @param {Error} ex + * @return {?Object.} Stack trace information. + */ + function computeStackTraceFromStackProp(ex) { + if (typeof ex.stack === 'undefined' || !ex.stack) return; + + var chrome = /^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i; + var winjs = /^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i; + // NOTE: blob urls are now supposed to always have an origin, therefore it's format + // which is `blob:http://url/path/with-some-uuid`, is matched by `blob.*?:\/` as well + var gecko = /^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i; + // Used to additionally parse URL/line/column from eval frames + var geckoEval = /(\S+) line (\d+)(?: > eval line \d+)* > eval/i; + var chromeEval = /\((\S*)(?::(\d+))(?::(\d+))\)/; + var lines = ex.stack.split('\n'); + var stack = []; + var submatch; + var parts; + var element; + var reference = /^(.*) is undefined$/.exec(ex.message); + + for (var i = 0, j = lines.length; i < j; ++i) { + if ((parts = chrome.exec(lines[i]))) { + var isNative = parts[2] && parts[2].indexOf('native') === 0; // start of line + var isEval = parts[2] && parts[2].indexOf('eval') === 0; // start of line + if (isEval && (submatch = chromeEval.exec(parts[2]))) { + // throw out eval line/column and use top-most line/column number + parts[2] = submatch[1]; // url + parts[3] = submatch[2]; // line + parts[4] = submatch[3]; // column + } + element = { + url: !isNative ? parts[2] : null, + func: parts[1] || UNKNOWN_FUNCTION, + args: isNative ? [parts[2]] : [], + line: parts[3] ? +parts[3] : null, + column: parts[4] ? +parts[4] : null + }; + } else if ((parts = winjs.exec(lines[i]))) { + element = { + url: parts[2], + func: parts[1] || UNKNOWN_FUNCTION, + args: [], + line: +parts[3], + column: parts[4] ? +parts[4] : null + }; + } else if ((parts = gecko.exec(lines[i]))) { + var isEval = parts[3] && parts[3].indexOf(' > eval') > -1; + if (isEval && (submatch = geckoEval.exec(parts[3]))) { + // throw out eval line/column and use top-most line number + parts[3] = submatch[1]; + parts[4] = submatch[2]; + parts[5] = null; // no column when eval + } else if (i === 0 && !parts[5] && typeof ex.columnNumber !== 'undefined') { + // FireFox uses this awesome columnNumber property for its top frame + // Also note, Firefox's column number is 0-based and everything else expects 1-based, + // so adding 1 + // NOTE: this hack doesn't work if top-most frame is eval + stack[0].column = ex.columnNumber + 1; + } + element = { + url: parts[3], + func: parts[1] || UNKNOWN_FUNCTION, + args: parts[2] ? parts[2].split(',') : [], + line: parts[4] ? +parts[4] : null, + column: parts[5] ? +parts[5] : null + }; + } else { + continue; + } + + if (!element.func && element.line) { + element.func = UNKNOWN_FUNCTION; + } + + if (element.url && element.url.substr(0, 5) === 'blob:') { + // Special case for handling JavaScript loaded into a blob. + // We use a synchronous AJAX request here as a blob is already in + // memory - it's not making a network request. This will generate a warning + // in the browser console, but there has already been an error so that's not + // that much of an issue. + var xhr = new XMLHttpRequest(); + xhr.open('GET', element.url, false); + xhr.send(null); + + // If we failed to download the source, skip this patch + if (xhr.status === 200) { + var source = xhr.responseText || ''; + + // We trim the source down to the last 300 characters as sourceMappingURL is always at the end of the file. + // Why 300? To be in line with: https://github.com/getsentry/sentry/blob/4af29e8f2350e20c28a6933354e4f42437b4ba42/src/sentry/lang/javascript/processor.py#L164-L175 + source = source.slice(-300); + + // Now we dig out the source map URL + var sourceMaps = source.match(/\/\/# sourceMappingURL=(.*)$/); + + // If we don't find a source map comment or we find more than one, continue on to the next element. + if (sourceMaps) { + var sourceMapAddress = sourceMaps[1]; + + // Now we check to see if it's a relative URL. + // If it is, convert it to an absolute one. + if (sourceMapAddress.charAt(0) === '~') { + sourceMapAddress = getLocationOrigin() + sourceMapAddress.slice(1); + } + + // Now we strip the '.map' off of the end of the URL and update the + // element so that Sentry can match the map to the blob. + element.url = sourceMapAddress.slice(0, -4); + } + } + } + + stack.push(element); + } + + if (!stack.length) { + return null; + } + + return { + name: ex.name, + message: ex.message, + url: getLocationHref(), + stack: stack + }; + } + + /** + * Adds information about the first frame to incomplete stack traces. + * Safari and IE require this to get complete data on the first frame. + * @param {Object.} stackInfo Stack trace information from + * one of the compute* methods. + * @param {string} url The URL of the script that caused an error. + * @param {(number|string)} lineNo The line number of the script that + * caused an error. + * @param {string=} message The error generated by the browser, which + * hopefully contains the name of the object that caused the error. + * @return {boolean} Whether or not the stack information was + * augmented. + */ + function augmentStackTraceWithInitialElement(stackInfo, url, lineNo, message) { + var initial = { + url: url, + line: lineNo + }; + + if (initial.url && initial.line) { + stackInfo.incomplete = false; + + if (!initial.func) { + initial.func = UNKNOWN_FUNCTION; + } + + if (stackInfo.stack.length > 0) { + if (stackInfo.stack[0].url === initial.url) { + if (stackInfo.stack[0].line === initial.line) { + return false; // already in stack trace + } else if ( + !stackInfo.stack[0].line && + stackInfo.stack[0].func === initial.func + ) { + stackInfo.stack[0].line = initial.line; + return false; + } + } + } + + stackInfo.stack.unshift(initial); + stackInfo.partial = true; + return true; + } else { + stackInfo.incomplete = true; + } + + return false; + } + + /** + * Computes stack trace information by walking the arguments.caller + * chain at the time the exception occurred. This will cause earlier + * frames to be missed but is the only way to get any stack trace in + * Safari and IE. The top frame is restored by + * {@link augmentStackTraceWithInitialElement}. + * @param {Error} ex + * @return {?Object.} Stack trace information. + */ + function computeStackTraceByWalkingCallerChain(ex, depth) { + var functionName = /function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i, + stack = [], + funcs = {}, + recursion = false, + parts, + item, + source; + + for ( + var curr = computeStackTraceByWalkingCallerChain.caller; + curr && !recursion; + curr = curr.caller + ) { + if (curr === computeStackTrace || curr === TraceKit.report) { + // console.log('skipping internal function'); + continue; + } + + item = { + url: null, + func: UNKNOWN_FUNCTION, + line: null, + column: null + }; + + if (curr.name) { + item.func = curr.name; + } else if ((parts = functionName.exec(curr.toString()))) { + item.func = parts[1]; + } + + if (typeof item.func === 'undefined') { + try { + item.func = parts.input.substring(0, parts.input.indexOf('{')); + } catch (e) {} + } + + if (funcs['' + curr]) { + recursion = true; + } else { + funcs['' + curr] = true; + } + + stack.push(item); + } + + if (depth) { + // console.log('depth is ' + depth); + // console.log('stack is ' + stack.length); + stack.splice(0, depth); + } + + var result = { + name: ex.name, + message: ex.message, + url: getLocationHref(), + stack: stack + }; + augmentStackTraceWithInitialElement( + result, + ex.sourceURL || ex.fileName, + ex.line || ex.lineNumber, + ex.message || ex.description + ); + return result; + } + + /** + * Computes a stack trace for an exception. + * @param {Error} ex + * @param {(string|number)=} depth + */ + function computeStackTrace(ex, depth) { + var stack = null; + depth = depth == null ? 0 : +depth; + + try { + stack = computeStackTraceFromStackProp(ex); + if (stack) { + return stack; + } + } catch (e) { + if (TraceKit.debug) { + throw e; + } + } + + try { + stack = computeStackTraceByWalkingCallerChain(ex, depth + 1); + if (stack) { + return stack; + } + } catch (e) { + if (TraceKit.debug) { + throw e; + } + } + return { + name: ex.name, + message: ex.message, + url: getLocationHref() + }; + } + + computeStackTrace.augmentStackTraceWithInitialElement = augmentStackTraceWithInitialElement; + computeStackTrace.computeStackTraceFromStackProp = computeStackTraceFromStackProp; + + return computeStackTrace; +})(); + +module.exports = TraceKit; + +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"8":8}],10:[function(_dereq_,module,exports){ +/* + json-stringify-safe + Like JSON.stringify, but doesn't throw on circular references. + + Originally forked from https://github.com/isaacs/json-stringify-safe + version 5.0.1 on 3/8/2017 and modified to handle Errors serialization + and IE8 compatibility. Tests for this are in test/vendor. + + ISC license: https://github.com/isaacs/json-stringify-safe/blob/master/LICENSE +*/ + +exports = module.exports = stringify; +exports.getSerialize = serializer; + +function indexOf(haystack, needle) { + for (var i = 0; i < haystack.length; ++i) { + if (haystack[i] === needle) return i; + } + return -1; +} + +function stringify(obj, replacer, spaces, cycleReplacer) { + return JSON.stringify(obj, serializer(replacer, cycleReplacer), spaces); +} + +// https://github.com/ftlabs/js-abbreviate/blob/fa709e5f139e7770a71827b1893f22418097fbda/index.js#L95-L106 +function stringifyError(value) { + var err = { + // These properties are implemented as magical getters and don't show up in for in + stack: value.stack, + message: value.message, + name: value.name + }; + + for (var i in value) { + if (Object.prototype.hasOwnProperty.call(value, i)) { + err[i] = value[i]; + } + } + + return err; +} + +function serializer(replacer, cycleReplacer) { + var stack = []; + var keys = []; + + if (cycleReplacer == null) { + cycleReplacer = function(key, value) { + if (stack[0] === value) { + return '[Circular ~]'; + } + return '[Circular ~.' + keys.slice(0, indexOf(stack, value)).join('.') + ']'; + }; + } + + return function(key, value) { + if (stack.length > 0) { + var thisPos = indexOf(stack, this); + ~thisPos ? stack.splice(thisPos + 1) : stack.push(this); + ~thisPos ? keys.splice(thisPos, Infinity, key) : keys.push(key); + + if (~indexOf(stack, value)) { + value = cycleReplacer.call(this, key, value); + } + } else { + stack.push(value); + } + + return replacer == null + ? value instanceof Error ? stringifyError(value) : value + : replacer.call(this, key, value); + }; +} + +},{}],11:[function(_dereq_,module,exports){ +/* + * JavaScript MD5 + * https://github.com/blueimp/JavaScript-MD5 + * + * Copyright 2011, Sebastian Tschan + * https://blueimp.net + * + * Licensed under the MIT license: + * https://opensource.org/licenses/MIT + * + * Based on + * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message + * Digest Algorithm, as defined in RFC 1321. + * Version 2.2 Copyright (C) Paul Johnston 1999 - 2009 + * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet + * Distributed under the BSD License + * See http://pajhome.org.uk/crypt/md5 for more info. + */ + +/* +* Add integers, wrapping at 2^32. This uses 16-bit operations internally +* to work around bugs in some JS interpreters. +*/ +function safeAdd(x, y) { + var lsw = (x & 0xffff) + (y & 0xffff); + var msw = (x >> 16) + (y >> 16) + (lsw >> 16); + return (msw << 16) | (lsw & 0xffff); +} + +/* +* Bitwise rotate a 32-bit number to the left. +*/ +function bitRotateLeft(num, cnt) { + return (num << cnt) | (num >>> (32 - cnt)); +} + +/* +* These functions implement the four basic operations the algorithm uses. +*/ +function md5cmn(q, a, b, x, s, t) { + return safeAdd(bitRotateLeft(safeAdd(safeAdd(a, q), safeAdd(x, t)), s), b); +} +function md5ff(a, b, c, d, x, s, t) { + return md5cmn((b & c) | (~b & d), a, b, x, s, t); +} +function md5gg(a, b, c, d, x, s, t) { + return md5cmn((b & d) | (c & ~d), a, b, x, s, t); +} +function md5hh(a, b, c, d, x, s, t) { + return md5cmn(b ^ c ^ d, a, b, x, s, t); +} +function md5ii(a, b, c, d, x, s, t) { + return md5cmn(c ^ (b | ~d), a, b, x, s, t); +} + +/* +* Calculate the MD5 of an array of little-endian words, and a bit length. +*/ +function binlMD5(x, len) { + /* append padding */ + x[len >> 5] |= 0x80 << (len % 32); + x[(((len + 64) >>> 9) << 4) + 14] = len; + + var i; + var olda; + var oldb; + var oldc; + var oldd; + var a = 1732584193; + var b = -271733879; + var c = -1732584194; + var d = 271733878; + + for (i = 0; i < x.length; i += 16) { + olda = a; + oldb = b; + oldc = c; + oldd = d; + + a = md5ff(a, b, c, d, x[i], 7, -680876936); + d = md5ff(d, a, b, c, x[i + 1], 12, -389564586); + c = md5ff(c, d, a, b, x[i + 2], 17, 606105819); + b = md5ff(b, c, d, a, x[i + 3], 22, -1044525330); + a = md5ff(a, b, c, d, x[i + 4], 7, -176418897); + d = md5ff(d, a, b, c, x[i + 5], 12, 1200080426); + c = md5ff(c, d, a, b, x[i + 6], 17, -1473231341); + b = md5ff(b, c, d, a, x[i + 7], 22, -45705983); + a = md5ff(a, b, c, d, x[i + 8], 7, 1770035416); + d = md5ff(d, a, b, c, x[i + 9], 12, -1958414417); + c = md5ff(c, d, a, b, x[i + 10], 17, -42063); + b = md5ff(b, c, d, a, x[i + 11], 22, -1990404162); + a = md5ff(a, b, c, d, x[i + 12], 7, 1804603682); + d = md5ff(d, a, b, c, x[i + 13], 12, -40341101); + c = md5ff(c, d, a, b, x[i + 14], 17, -1502002290); + b = md5ff(b, c, d, a, x[i + 15], 22, 1236535329); + + a = md5gg(a, b, c, d, x[i + 1], 5, -165796510); + d = md5gg(d, a, b, c, x[i + 6], 9, -1069501632); + c = md5gg(c, d, a, b, x[i + 11], 14, 643717713); + b = md5gg(b, c, d, a, x[i], 20, -373897302); + a = md5gg(a, b, c, d, x[i + 5], 5, -701558691); + d = md5gg(d, a, b, c, x[i + 10], 9, 38016083); + c = md5gg(c, d, a, b, x[i + 15], 14, -660478335); + b = md5gg(b, c, d, a, x[i + 4], 20, -405537848); + a = md5gg(a, b, c, d, x[i + 9], 5, 568446438); + d = md5gg(d, a, b, c, x[i + 14], 9, -1019803690); + c = md5gg(c, d, a, b, x[i + 3], 14, -187363961); + b = md5gg(b, c, d, a, x[i + 8], 20, 1163531501); + a = md5gg(a, b, c, d, x[i + 13], 5, -1444681467); + d = md5gg(d, a, b, c, x[i + 2], 9, -51403784); + c = md5gg(c, d, a, b, x[i + 7], 14, 1735328473); + b = md5gg(b, c, d, a, x[i + 12], 20, -1926607734); + + a = md5hh(a, b, c, d, x[i + 5], 4, -378558); + d = md5hh(d, a, b, c, x[i + 8], 11, -2022574463); + c = md5hh(c, d, a, b, x[i + 11], 16, 1839030562); + b = md5hh(b, c, d, a, x[i + 14], 23, -35309556); + a = md5hh(a, b, c, d, x[i + 1], 4, -1530992060); + d = md5hh(d, a, b, c, x[i + 4], 11, 1272893353); + c = md5hh(c, d, a, b, x[i + 7], 16, -155497632); + b = md5hh(b, c, d, a, x[i + 10], 23, -1094730640); + a = md5hh(a, b, c, d, x[i + 13], 4, 681279174); + d = md5hh(d, a, b, c, x[i], 11, -358537222); + c = md5hh(c, d, a, b, x[i + 3], 16, -722521979); + b = md5hh(b, c, d, a, x[i + 6], 23, 76029189); + a = md5hh(a, b, c, d, x[i + 9], 4, -640364487); + d = md5hh(d, a, b, c, x[i + 12], 11, -421815835); + c = md5hh(c, d, a, b, x[i + 15], 16, 530742520); + b = md5hh(b, c, d, a, x[i + 2], 23, -995338651); + + a = md5ii(a, b, c, d, x[i], 6, -198630844); + d = md5ii(d, a, b, c, x[i + 7], 10, 1126891415); + c = md5ii(c, d, a, b, x[i + 14], 15, -1416354905); + b = md5ii(b, c, d, a, x[i + 5], 21, -57434055); + a = md5ii(a, b, c, d, x[i + 12], 6, 1700485571); + d = md5ii(d, a, b, c, x[i + 3], 10, -1894986606); + c = md5ii(c, d, a, b, x[i + 10], 15, -1051523); + b = md5ii(b, c, d, a, x[i + 1], 21, -2054922799); + a = md5ii(a, b, c, d, x[i + 8], 6, 1873313359); + d = md5ii(d, a, b, c, x[i + 15], 10, -30611744); + c = md5ii(c, d, a, b, x[i + 6], 15, -1560198380); + b = md5ii(b, c, d, a, x[i + 13], 21, 1309151649); + a = md5ii(a, b, c, d, x[i + 4], 6, -145523070); + d = md5ii(d, a, b, c, x[i + 11], 10, -1120210379); + c = md5ii(c, d, a, b, x[i + 2], 15, 718787259); + b = md5ii(b, c, d, a, x[i + 9], 21, -343485551); + + a = safeAdd(a, olda); + b = safeAdd(b, oldb); + c = safeAdd(c, oldc); + d = safeAdd(d, oldd); + } + return [a, b, c, d]; +} + +/* +* Convert an array of little-endian words to a string +*/ +function binl2rstr(input) { + var i; + var output = ''; + var length32 = input.length * 32; + for (i = 0; i < length32; i += 8) { + output += String.fromCharCode((input[i >> 5] >>> (i % 32)) & 0xff); + } + return output; +} + +/* +* Convert a raw string to an array of little-endian words +* Characters >255 have their high-byte silently ignored. +*/ +function rstr2binl(input) { + var i; + var output = []; + output[(input.length >> 2) - 1] = undefined; + for (i = 0; i < output.length; i += 1) { + output[i] = 0; + } + var length8 = input.length * 8; + for (i = 0; i < length8; i += 8) { + output[i >> 5] |= (input.charCodeAt(i / 8) & 0xff) << (i % 32); + } + return output; +} + +/* +* Calculate the MD5 of a raw string +*/ +function rstrMD5(s) { + return binl2rstr(binlMD5(rstr2binl(s), s.length * 8)); +} + +/* +* Calculate the HMAC-MD5, of a key and some data (raw strings) +*/ +function rstrHMACMD5(key, data) { + var i; + var bkey = rstr2binl(key); + var ipad = []; + var opad = []; + var hash; + ipad[15] = opad[15] = undefined; + if (bkey.length > 16) { + bkey = binlMD5(bkey, key.length * 8); + } + for (i = 0; i < 16; i += 1) { + ipad[i] = bkey[i] ^ 0x36363636; + opad[i] = bkey[i] ^ 0x5c5c5c5c; + } + hash = binlMD5(ipad.concat(rstr2binl(data)), 512 + data.length * 8); + return binl2rstr(binlMD5(opad.concat(hash), 512 + 128)); +} + +/* +* Convert a raw string to a hex string +*/ +function rstr2hex(input) { + var hexTab = '0123456789abcdef'; + var output = ''; + var x; + var i; + for (i = 0; i < input.length; i += 1) { + x = input.charCodeAt(i); + output += hexTab.charAt((x >>> 4) & 0x0f) + hexTab.charAt(x & 0x0f); + } + return output; +} + +/* +* Encode a string as utf-8 +*/ +function str2rstrUTF8(input) { + return unescape(encodeURIComponent(input)); +} + +/* +* Take string arguments and return either raw or hex encoded strings +*/ +function rawMD5(s) { + return rstrMD5(str2rstrUTF8(s)); +} +function hexMD5(s) { + return rstr2hex(rawMD5(s)); +} +function rawHMACMD5(k, d) { + return rstrHMACMD5(str2rstrUTF8(k), str2rstrUTF8(d)); +} +function hexHMACMD5(k, d) { + return rstr2hex(rawHMACMD5(k, d)); +} + +function md5(string, key, raw) { + if (!key) { + if (!raw) { + return hexMD5(string); + } + return rawMD5(string); + } + if (!raw) { + return hexHMACMD5(key, string); + } + return rawHMACMD5(key, string); +} + +module.exports = md5; + +},{}]},{},[7,1,2,3])(7) +}); \ No newline at end of file diff --git a/packages/raven-js/dist/console,require,vue/raven.min.js b/packages/raven-js/dist/console,require,vue/raven.min.js new file mode 100644 index 000000000000..803e1d0208bf --- /dev/null +++ b/packages/raven-js/dist/console,require,vue/raven.min.js @@ -0,0 +1,4 @@ +/*! Raven.js 3.25.2 (30b6d4e) | github.com/getsentry/raven-js */ +!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.Raven=a()}}(function(){var a;return function b(a,c,d){function e(g,h){if(!c[g]){if(!a[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};a[g][0].call(k.exports,function(b){var c=a[g][1][b];return e(c?c:b)},k,k.exports,b,a,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;g":"anonymous component")+(a._isVue&&a.$options.__file?" at "+a.$options.__file:"")}function e(a,b){if(b=b||window.Vue,b&&b.config){var c=b.config.errorHandler;b.config.errorHandler=function(b,e,f){var g={};"[object Object]"===Object.prototype.toString.call(e)&&(g.componentName=d(e),g.propsData=e.$options.propsData),"undefined"!=typeof f&&(g.lifecycleHook=f),a.captureException(b,{extra:g}),"function"==typeof c&&c.call(this,b,e,f)}}}b.exports=e,a(7).addPlugin(b.exports)},{7:7}],4:[function(a,b,c){function d(a){this.name="RavenConfigError",this.message=a}d.prototype=new Error,d.prototype.constructor=d,b.exports=d},{}],5:[function(a,b,c){var d=a(8),e=function(a,b,c){var e=a[b],f=a;if(b in a){var g="warn"===b?"warning":b;a[b]=function(){var a=[].slice.call(arguments),h=d.safeJoin(a," "),i={level:g,logger:"console",extra:{arguments:a}};"assert"===b?a[0]===!1&&(h="Assertion failed: "+(d.safeJoin(a.slice(1)," ")||"console.assert"),i.extra.arguments=a.slice(1),c&&c(h,i)):c&&c(h,i),e&&Function.prototype.apply.call(e,f,a)}}};b.exports={wrapMethod:e}},{8:8}],6:[function(a,b,c){(function(c){function d(){return+new Date}function e(a,b){return s(b)?function(c){return b(c,a)}:b}function f(){this.a=!("object"!=typeof JSON||!JSON.stringify),this.b=!r(S),this.c=!r(T),this.d=null,this.e=null,this.f=null,this.g=null,this.h=null,this.i=null,this.j={},this.k={release:R.SENTRY_RELEASE&&R.SENTRY_RELEASE.id,logger:"javascript",ignoreErrors:[],ignoreUrls:[],whitelistUrls:[],includePaths:[],headers:null,collectWindowErrors:!0,captureUnhandledRejections:!0,maxMessageLength:0,maxUrlLength:250,stackTraceLimit:50,autoBreadcrumbs:!0,instrument:!0,sampleRate:1,sanitizeKeys:[]},this.l={method:"POST",keepalive:!0,referrerPolicy:K()?"origin":""},this.m=0,this.n=!1,this.o=Error.stackTraceLimit,this.p=R.console||{},this.q={},this.r=[],this.s=d(),this.t=[],this.u=[],this.v=null,this.w=R.location,this.x=this.w&&this.w.href,this.y();for(var a in this.p)this.q[a]=this.p[a]}var g=a(9),h=a(10),i=a(11),j=a(4),k=a(8),l=k.isErrorEvent,m=k.isDOMError,n=k.isDOMException,o=k.isError,p=k.isObject,q=k.isPlainObject,r=k.isUndefined,s=k.isFunction,t=k.isString,u=k.isArray,v=k.isEmptyObject,w=k.each,x=k.objectMerge,y=k.truncate,z=k.objectFrozen,A=k.hasKey,B=k.joinRegExp,C=k.urlencode,D=k.uuid4,E=k.htmlTreeAsString,F=k.isSameException,G=k.isSameStacktrace,H=k.parseUrl,I=k.fill,J=k.supportsFetch,K=k.supportsReferrerPolicy,L=k.serializeKeysForMessage,M=k.serializeException,N=k.sanitize,O=a(5).wrapMethod,P="source protocol user pass host port path".split(" "),Q=/^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/,R="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},S=R.document,T=R.navigator;f.prototype={VERSION:"3.25.2",debug:!1,TraceKit:g,config:function(a,b){var c=this;if(c.g)return this.z("error","Error: Raven has already been configured"),c;if(!a)return c;var d=c.k;b&&w(b,function(a,b){"tags"===a||"extra"===a||"user"===a?c.j[a]=b:d[a]=b}),c.setDSN(a),d.ignoreErrors.push(/^Script error\.?$/),d.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/),d.ignoreErrors=B(d.ignoreErrors),d.ignoreUrls=!!d.ignoreUrls.length&&B(d.ignoreUrls),d.whitelistUrls=!!d.whitelistUrls.length&&B(d.whitelistUrls),d.includePaths=B(d.includePaths),d.maxBreadcrumbs=Math.max(0,Math.min(d.maxBreadcrumbs||100,100));var e={xhr:!0,console:!0,dom:!0,location:!0,sentry:!0},f=d.autoBreadcrumbs;"[object Object]"==={}.toString.call(f)?f=x(e,f):f!==!1&&(f=e),d.autoBreadcrumbs=f;var h={tryCatch:!0},i=d.instrument;return"[object Object]"==={}.toString.call(i)?i=x(h,i):i!==!1&&(i=h),d.instrument=i,g.collectWindowErrors=!!d.collectWindowErrors,c},install:function(){var a=this;return a.isSetup()&&!a.n&&(g.report.subscribe(function(){a.A.apply(a,arguments)}),a.k.captureUnhandledRejections&&a.B(),a.C(),a.k.instrument&&a.k.instrument.tryCatch&&a.D(),a.k.autoBreadcrumbs&&a.E(),a.F(),a.n=!0),Error.stackTraceLimit=a.k.stackTraceLimit,this},setDSN:function(a){var b=this,c=b.G(a),d=c.path.lastIndexOf("/"),e=c.path.substr(1,d);b.H=a,b.h=c.user,b.I=c.pass&&c.pass.substr(1),b.i=c.path.substr(d+1),b.g=b.J(c),b.K=b.g+"/"+e+"api/"+b.i+"/store/",this.y()},context:function(a,b,c){return s(a)&&(c=b||[],b=a,a=void 0),this.wrap(a,b).apply(this,c)},wrap:function(a,b,c){function d(){var d=[],f=arguments.length,g=!a||a&&a.deep!==!1;for(c&&s(c)&&c.apply(this,arguments);f--;)d[f]=g?e.wrap(a,arguments[f]):arguments[f];try{return b.apply(this,d)}catch(h){throw e.L(),e.captureException(h,a),h}}var e=this;if(r(b)&&!s(a))return a;if(s(a)&&(b=a,a=void 0),!s(b))return b;try{if(b.M)return b;if(b.N)return b.N}catch(f){return b}for(var g in b)A(b,g)&&(d[g]=b[g]);return d.prototype=b.prototype,b.N=d,d.M=!0,d.O=b,d},uninstall:function(){return g.report.uninstall(),this.P(),this.Q(),this.R(),this.S(),Error.stackTraceLimit=this.o,this.n=!1,this},T:function(a){this.z("debug","Raven caught unhandled promise rejection:",a),this.captureException(a.reason,{extra:{unhandledPromiseRejection:!0}})},B:function(){return this.T=this.T.bind(this),R.addEventListener&&R.addEventListener("unhandledrejection",this.T),this},P:function(){return R.removeEventListener&&R.removeEventListener("unhandledrejection",this.T),this},captureException:function(a,b){if(b=x({trimHeadFrames:0},b?b:{}),l(a)&&a.error)a=a.error;else{if(m(a)||n(a)){var c=a.name||(m(a)?"DOMError":"DOMException"),d=a.message?c+": "+a.message:c;return this.captureMessage(d,x(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}))}if(o(a))a=a;else{if(!q(a))return this.captureMessage(a,x(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}));b=this.U(b,a),a=new Error(b.message)}}this.d=a;try{var e=g.computeStackTrace(a);this.V(e,b)}catch(f){if(a!==f)throw f}return this},U:function(a,b){var c=Object.keys(b).sort(),d=x(a,{message:"Non-Error exception captured with keys: "+L(c),fingerprint:[i(c)],extra:a.extra||{}});return d.extra.W=M(b),d},captureMessage:function(a,b){if(!this.k.ignoreErrors.test||!this.k.ignoreErrors.test(a)){b=b||{},a+="";var c,d=x({message:a},b);try{throw new Error(a)}catch(e){c=e}c.name=null;var f=g.computeStackTrace(c),h=u(f.stack)&&f.stack[1];h&&"Raven.captureException"===h.func&&(h=f.stack[2]);var i=h&&h.url||"";if((!this.k.ignoreUrls.test||!this.k.ignoreUrls.test(i))&&(!this.k.whitelistUrls.test||this.k.whitelistUrls.test(i))){if(this.k.stacktrace||b&&b.stacktrace){d.fingerprint=null==d.fingerprint?a:d.fingerprint,b=x({trimHeadFrames:0},b),b.trimHeadFrames+=1;var j=this.X(f,b);d.stacktrace={frames:j.reverse()}}return d.fingerprint&&(d.fingerprint=u(d.fingerprint)?d.fingerprint:[d.fingerprint]),this.Y(d),this}}},captureBreadcrumb:function(a){var b=x({timestamp:d()/1e3},a);if(s(this.k.breadcrumbCallback)){var c=this.k.breadcrumbCallback(b);if(p(c)&&!v(c))b=c;else if(c===!1)return this}return this.u.push(b),this.u.length>this.k.maxBreadcrumbs&&this.u.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.r.push([a,b]),this.n&&this.F(),this},setUserContext:function(a){return this.j.user=a,this},setExtraContext:function(a){return this.Z("extra",a),this},setTagsContext:function(a){return this.Z("tags",a),this},clearContext:function(){return this.j={},this},getContext:function(){return JSON.parse(h(this.j))},setEnvironment:function(a){return this.k.environment=a,this},setRelease:function(a){return this.k.release=a,this},setDataCallback:function(a){var b=this.k.dataCallback;return this.k.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.k.breadcrumbCallback;return this.k.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.k.shouldSendCallback;return this.k.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.k.transport=a,this},lastException:function(){return this.d},lastEventId:function(){return this.f},isSetup:function(){return!!this.a&&(!!this.g||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.z("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=R.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(S){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.H;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.j.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.J(this.G(c)),h=S.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(S.head||S.body).appendChild(h)}},L:function(){var a=this;this.m+=1,setTimeout(function(){a.m-=1})},$:function(a,b){var c,d;if(this.b){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),S.createEvent?(c=S.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=S.createEventObject(),c.eventType=a);for(d in b)A(b,d)&&(c[d]=b[d]);if(S.createEvent)S.dispatchEvent(c);else try{S.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},_:function(a){var b=this;return function(c){if(b.aa=null,b.v!==c){b.v=c;var d;try{d=E(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ba:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.aa;g||a._("input")(c),clearTimeout(g),a.aa=setTimeout(function(){a.aa=null},b)}}},ca:function(a,b){var c=H(this.w.href),d=H(b),e=H(a);this.x=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},C:function(){var a=this;a.da=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.M?a.da.apply(this.O,arguments):a.da.apply(this,arguments)}},Q:function(){this.da&&(Function.prototype.toString=this.da)},D:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.ca(b.x,c+""),a.apply(this,arguments)}};I(R.history,"pushState",j,d),I(R.history,"replaceState",j,d)}if(c.console&&"console"in R&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};w(["debug","info","warn","error","log"],function(a,b){O(console,b,k)})}},R:function(){for(var a;this.t.length;){a=this.t.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},S:function(){for(var a in this.q)this.p[a]=this.q[a]},F:function(){var a=this;w(this.r,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},G:function(a){var b=Q.exec(a),c={},d=7;try{for(;d--;)c[P[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.k.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},J:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},A:function(){this.m||this.V.apply(this,arguments)},V:function(a,b){var c=this.X(a,b);this.$("handle",{stackInfo:a,options:b}),this.fa(a.name,a.message,a.url,a.lineno,c,b)},X:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(w(a.stack,function(b,e){var f=c.ga(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.u,0)}),this.j.user&&(a.user=this.j.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),a=this.pa(a),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||v(a[b]))&&delete a[b]}),s(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!v(a)&&(!s(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.ma()?void this.z("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function F(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&l(b))for(c=b.split(/\s+/),f=0;fc?Q(a,b-1):d}function R(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?X:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function S(a,b){function c(a){return m(a)?a.map(function(a){return c(a)}):k(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!m(b)||m(b)&&0===b.length)return a;var d,e=A(b),f="********";try{d=JSON.parse(T(a))}catch(g){return a}return c(d)}var T=a(10),U="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},V=3,W=51200,X=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isDOMError:g,isDOMException:h,isUndefined:i,isFunction:j,isPlainObject:k,isString:l,isArray:m,isEmptyObject:n,supportsErrorEvent:o,supportsDOMError:p,supportsDOMException:q,supportsFetch:r,supportsReferrerPolicy:s,supportsPromiseRejectionEvent:t,wrappedCallback:u,each:v,objectMerge:w,truncate:y,objectFrozen:x,hasKey:z,joinRegExp:A,urlencode:B,uuid4:D,htmlTreeAsString:E,htmlElementAsString:F,isSameException:I,isSameStacktrace:J,parseUrl:C,fill:K,safeJoin:L,serializeException:Q,serializeKeysForMessage:R,sanitize:S}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{10:10}],9:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}function e(){return"undefined"==typeof document||null==document.location?"":(document.location.origin||(document.location.origin=document.location.protocol+"//"+document.location.hostname+(document.location.port?":"+document.location.port:"")),document.location.origin)}var f=a(8),g={collectWindowErrors:!0,debug:!1},h="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},i=[].slice,j="?",k=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;g.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function e(a,b){var c=null;if(!b||g.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(i.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,h,i){var l=null,m=f.isErrorEvent(i)?i.error:i,n=f.isErrorEvent(a)?a.message:a;if(v)g.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&f.isError(m))l=g.computeStackTrace(m),e(l,!0);else{var p,r={url:b,line:c,column:h},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(k);p&&(s=p[1],n=p[2])}r.func=j,l={name:s,message:n,url:d(),stack:[r]},e(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=h.onerror,h.onerror=l,r=!0)}function n(){r&&(h.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,e.apply(null,[a,!1].concat(b))}function p(a,b){var c=i.call(arguments,1);if(v){if(u===a)return;o()}var d=g.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),g.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,f,g=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,h=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,i=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,k=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,l=/\((\S*)(?::(\d+))(?::(\d+))\)/,m=a.stack.split("\n"),n=[],o=(/^(.*) is undefined$/.exec(a.message),0),p=m.length;o eval")>-1;r&&(b=k.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==o||c[5]||"undefined"==typeof a.columnNumber||(n[0].column=a.columnNumber+1),f={url:c[3],func:c[1]||j,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}if(!f.func&&f.line&&(f.func=j),f.url&&"blob:"===f.url.substr(0,5)){var s=new XMLHttpRequest;if(s.open("GET",f.url,!1),s.send(null),200===s.status){var t=s.responseText||"";t=t.slice(-300);var u=t.match(/\/\/# sourceMappingURL=(.*)$/);if(u){var v=u[1];"~"===v.charAt(0)&&(v=e()+v.slice(1)),f.url=v.slice(0,-4)}}}n.push(f)}return n.length?{name:a.name,message:a.message,url:d(),stack:n}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){ +if(a.incomplete=!1,e.func||(e.func=j),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,e){for(var h,i,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==f&&o!==g.report){if(i={url:null,func:j,line:null,column:null},o.name?i.func=o.name:(h=k.exec(o.toString()))&&(i.func=h[1]),"undefined"==typeof i.func)try{i.func=h.input.substring(0,h.input.indexOf("{"))}catch(p){}m[""+o]?n=!0:m[""+o]=!0,l.push(i)}e&&l.splice(0,e);var q={name:a.name,message:a.message,url:d(),stack:l};return b(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),q}function f(b,e){var f=null;e=null==e?0:+e;try{if(f=a(b))return f}catch(h){if(g.debug)throw h}try{if(f=c(b,e+1))return f}catch(h){if(g.debug)throw h}return{name:b.name,message:b.message,url:d()}}return f.augmentStackTraceWithInitialElement=b,f.computeStackTraceFromStackProp=a,f}(),b.exports=g}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{8:8}],10:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}],11:[function(a,b,c){function d(a,b){var c=(65535&a)+(65535&b),d=(a>>16)+(b>>16)+(c>>16);return d<<16|65535&c}function e(a,b){return a<>>32-b}function f(a,b,c,f,g,h){return d(e(d(d(b,a),d(f,h)),g),c)}function g(a,b,c,d,e,g,h){return f(b&c|~b&d,a,b,e,g,h)}function h(a,b,c,d,e,g,h){return f(b&d|c&~d,a,b,e,g,h)}function i(a,b,c,d,e,g,h){return f(b^c^d,a,b,e,g,h)}function j(a,b,c,d,e,g,h){return f(c^(b|~d),a,b,e,g,h)}function k(a,b){a[b>>5]|=128<>>9<<4)+14]=b;var c,e,f,k,l,m=1732584193,n=-271733879,o=-1732584194,p=271733878;for(c=0;c>5]>>>b%32&255);return c}function m(a){var b,c=[];for(c[(a.length>>2)-1]=void 0,b=0;b>5]|=(255&a.charCodeAt(b/8))<16&&(e=k(e,8*a.length)),c=0;c<16;c+=1)f[c]=909522486^e[c],g[c]=1549556828^e[c];return d=k(f.concat(m(b)),512+8*b.length),l(k(g.concat(d),640))}function p(a){var b,c,d="0123456789abcdef",e="";for(c=0;c>>4&15)+d.charAt(15&b);return e}function q(a){return unescape(encodeURIComponent(a))}function r(a){return n(q(a))}function s(a){return p(r(a))}function t(a,b){return o(q(a),q(b))}function u(a,b){return p(t(a,b))}function v(a,b,c){return b?c?t(b,a):u(b,a):c?r(a):s(a)}b.exports=v},{}]},{},[7,1,2,3])(7)}); +//# sourceMappingURL=raven.min.js.map \ No newline at end of file diff --git a/packages/raven-js/dist/console,require,vue/raven.min.js.map b/packages/raven-js/dist/console,require,vue/raven.min.js.map new file mode 100644 index 000000000000..76af5a635168 --- /dev/null +++ b/packages/raven-js/dist/console,require,vue/raven.min.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","consolePlugin","console","pluginOptions","logLevels","levels","push","callback","msg","data","captureMessage","level","pop","wrapConsoleMethod","wrapMethod","addPlugin","5","7","2","requirePlugin","wrap","deep","3","formatComponentName","vm","$root","name","_isVue","$options","_componentTag","__file","vuePlugin","Vue","config","_oldOnError","errorHandler","error","info","metaData","Object","prototype","toString","componentName","propsData","lifecycleHook","captureException","extra","4","RavenConfigError","message","constructor","utils","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","safeJoin","logger","Function","apply","8","6","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","sanitizeKeys","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isErrorEvent","isDOMError","isDOMException","isError","isObject","isPlainObject","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","sanitize","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","dsn","options","_logDebug","globalOptions","key","value","setDSN","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","substr","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","context","func","undefined","_before","wrapped","_ignoreNextOnError","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","T","event","reason","unhandledPromiseRejection","B","_promiseRejectionHandler","bind","addEventListener","P","removeEventListener","ex","trimHeadFrames","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","U","currentOptions","exKeys","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","setDataCallback","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","L","setTimeout","$","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","_","evtName","_keypressTimeout","target","category","ba","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","ca","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","C","_originalFunctionToString","Q","D","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","type","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","E","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","R","builtin","S","F","installer","concat","G","str","m","exec","allowSecretKey","J","port","A","V","stackInfo","_triggerEvent","_processException","lineno","X","frame","_normalizeFrame","in_app","ga","stackInfoUrl","normalized","filename","line","colno","column","function","fa","prefixedMessage","exception","values","transaction","ha","request","Referer","breadcrumbs","_trimBreadcrumbs","ia","urlProp","urlProps","ja","httpData","userAgent","User-Agent","referrer","y","_backoffDuration","_backoffStart","ma","na","current","last","oa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Y","baseData","project","platform","_getHttpData","serverName","server_name","_sanitizeData","forEach","random","_sendProcessedPayload","pa","ra","qa","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","sa","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","onerror","open","setRequestHeader","send","ta","hash","evaluated","z","Z","setUser","setReleaseContext","10","11","9","RavenConstructor","_Raven","noConflict","Client","what","supportsErrorEvent","ErrorEvent","supportsDOMError","DOMError","supportsDOMException","DOMException","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","wrappedCallback","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","sanitizeMask","safeInput","o_O","getLocationHref","getLocationOrigin","origin","hostname","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","responseText","sourceMaps","sourceMapAddress","charAt","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","string","raw"],"mappings":";CAYA,SAAUA,GAAG,GAAoB,gBAAVC,UAAoC,mBAATC,QAAsBA,OAAOD,QAAQD,QAAS,IAAmB,kBAATG,SAAqBA,OAAOC,IAAKD,UAAUH,OAAO,CAAC,GAAIK,EAAkCA,GAAb,mBAATC,QAAwBA,OAA+B,mBAATC,QAAwBA,OAA6B,mBAAPC,MAAsBA,KAAYC,KAAKJ,EAAEK,MAAQV,MAAO,WAAW,GAAIG,EAAsB,OAAO,SAAUQ,GAAEC,EAAEC,EAAEC,GAAG,QAASC,GAAEC,EAAEC,GAAG,IAAIJ,EAAEG,GAAG,CAAC,IAAIJ,EAAEI,GAAG,CAAC,GAAIE,GAAkB,kBAATC,UAAqBA,OAAQ,KAAIF,GAAGC,EAAE,MAAOA,GAAEF,GAAE,EAAI,IAAGI,EAAE,MAAOA,GAAEJ,GAAE,EAAI,IAAIhB,GAAE,GAAIqB,OAAM,uBAAuBL,EAAE,IAAK,MAAMhB,GAAEsB,KAAK,mBAAmBtB,EAAE,GAAIuB,GAAEV,EAAEG,IAAIf,WAAYW,GAAEI,GAAG,GAAGQ,KAAKD,EAAEtB,QAAQ,SAASU,GAAG,GAAIE,GAAED,EAAEI,GAAG,GAAGL,EAAG,OAAOI,GAAEF,EAAEA,EAAEF,IAAIY,EAAEA,EAAEtB,QAAQU,EAAEC,EAAEC,EAAEC,GAAG,MAAOD,GAAEG,GAAGf,QAAkD,IAAI,GAA1CmB,GAAkB,kBAATD,UAAqBA,QAAgBH,EAAE,EAAEA,EAAEF,EAAEW,OAAOT,IAAID,EAAED,EAAEE,GAAI,OAAOD,KAAKW,GAAG,SAASC,EAAQzB,EAAOD,GAcp0B,QAAS2B,GAAclB,EAAOmB,EAASC,GACrCD,EAAUA,GAAWvB,OAAOuB,YAC5BC,EAAgBA,KAEhB,IAAIC,GAAYD,EAAcE,SAAW,QAAS,OAAQ,OAAQ,QAC9D,WAAYH,IAASE,EAAUE,KAAK,SAOxC,KALA,GAAIC,GAAW,SAASC,EAAKC,GAC3B1B,EAAM2B,eAAeF,EAAKC,IAGxBE,EAAQP,EAAUQ,MACfD,GACLE,EAAkBX,EAASS,EAAOJ,GAClCI,EAAQP,EAAUQ,MAhBtB,GAAIC,GAAoBb,EAAQ,GAAGc,UAoBnCvC,GAAOD,QAAU2B,EAEjBD,EAAQ,GAAGe,UAAUxC,EAAOD,WACzB0C,EAAI,EAAEC,EAAI,IAAIC,GAAG,SAASlB,EAAQzB,EAAOD,GAO5C,QAAS6C,GAAcpC,GACC,kBAAXP,IAAyBA,EAAOC,MACzCE,OAAOH,OAASO,EAAMqC,MAAMC,MAAM,GAAQ7C,GAC1CG,OAAOa,QAAUT,EAAMqC,MAAMC,MAAM,GAAQrB,IAI/CzB,EAAOD,QAAU6C,EAEjBnB,EAAQ,GAAGe,UAAUxC,EAAOD,WACzB2C,EAAI,IAAIK,GAAG,SAAStB,EAAQzB,EAAOD,GAMtC,QAASiD,GAAoBC,GAC3B,GAAIA,EAAGC,QAAUD,EACf,MAAO,eAET,IAAIE,GAAOF,EAAGG,OAASH,EAAGI,SAASF,MAAQF,EAAGI,SAASC,cAAgBL,EAAGE,IAC1E,QACGA,EAAO,cAAgBA,EAAO,IAAM,wBACpCF,EAAGG,QAAUH,EAAGI,SAASE,OAAS,OAASN,EAAGI,SAASE,OAAS,IAIrE,QAASC,GAAUhD,EAAOiD,GAIxB,GAHAA,EAAMA,GAAOrD,OAAOqD,IAGfA,GAAQA,EAAIC,OAAjB,CAEA,GAAIC,GAAcF,EAAIC,OAAOE,YAC7BH,GAAIC,OAAOE,aAAe,SAAyBC,EAAOZ,EAAIa,GAC5D,GAAIC,KAGuC,qBAAvCC,OAAOC,UAAUC,SAAS5C,KAAK2B,KACjCc,EAASI,cAAgBnB,EAAoBC,GAC7Cc,EAASK,UAAYnB,EAAGI,SAASe,WAGf,mBAATN,KACTC,EAASM,cAAgBP,GAG3BtD,EAAM8D,iBAAiBT,GACrBU,MAAOR,IAGkB,kBAAhBJ,IACTA,EAAYrC,KAAKf,KAAMsD,EAAOZ,EAAIa,KAKxC9D,EAAOD,QAAUyD,EAEjB/B,EAAQ,GAAGe,UAAUxC,EAAOD,WACzB2C,EAAI,IAAI8B,GAAG,SAAS/C,EAAQzB,EAAOD,GACtC,QAAS0E,GAAiBC,GACxBnE,KAAK4C,KAAO,mBACZ5C,KAAKmE,QAAUA,EAEjBD,EAAiBR,UAAY,GAAI9C,OACjCsD,EAAiBR,UAAUU,YAAcF,EAEzCzE,EAAOD,QAAU0E,OAEXhC,GAAG,SAAShB,EAAQzB,EAAOD,GACjC,GAAI6E,GAAQnD,EAAQ,GAEhBc,EAAa,SAASZ,EAASS,EAAOJ,GACxC,GAAI6C,GAAuBlD,EAAQS,GAC/B0C,EAAkBnD,CAEtB,IAAMS,IAAST,GAAf,CAIA,GAAIoD,GAAwB,SAAV3C,EAAmB,UAAYA,CAEjDT,GAAQS,GAAS,WACf,GAAI4C,MAAUC,MAAM3D,KAAK4D,WAErBjD,EAAM2C,EAAMO,SAASH,EAAM,KAC3B9C,GAAQE,MAAO2C,EAAaK,OAAQ,UAAWb,OAAQW,UAAWF,GAExD,YAAV5C,EACE4C,EAAK,MAAO,IAEd/C,EACE,sBAAwB2C,EAAMO,SAASH,EAAKC,MAAM,GAAI,MAAQ,kBAChE/C,EAAKqC,MAAMW,UAAYF,EAAKC,MAAM,GAClCjD,GAAYA,EAASC,EAAKC,IAG5BF,GAAYA,EAASC,EAAKC,GAIxB2C,GAGFQ,SAASpB,UAAUqB,MAAMhE,KAAKuD,EAAsBC,EAAiBE,KAK3EhF,GAAOD,SACLwC,WAAYA,KAGXgD,EAAI,IAAIC,GAAG,SAAS/D,EAAQzB,EAAOD,IACtC,SAAWM,GA4CX,QAASoF,KACP,OAAQ,GAAIC,MAed,QAASC,GAAqBC,EAAU5D,GACtC,MAAO6D,GAAW7D,GACd,SAASE,GACP,MAAOF,GAASE,EAAM0D,IAExB5D,EAMN,QAASxB,KACPD,KAAKuF,IAA8B,gBAATC,QAAqBA,KAAKC,WAEpDzF,KAAK0F,GAAgBC,EAAYC,GACjC5F,KAAK6F,GAAiBF,EAAYG,GAClC9F,KAAK+F,EAAyB,KAC9B/F,KAAKgG,EAAY,KACjBhG,KAAKiG,EAAe,KACpBjG,KAAKkG,EAAgB,KACrBlG,KAAKmG,EAAa,KAClBnG,KAAKoG,EAAiB,KACtBpG,KAAKqG,KACLrG,KAAKsG,GAEHC,QAASC,EAAQC,gBAAkBD,EAAQC,eAAeC,GAC1D7B,OAAQ,aACR8B,gBACAC,cACAC,iBACAC,gBACAC,QAAS,KACTC,qBAAqB,EACrBC,4BAA4B,EAC5BC,iBAAkB,EAElBC,aAAc,IACdC,gBAAiB,GACjBC,iBAAiB,EACjBC,YAAY,EACZC,WAAY,EACZC,iBAEFxH,KAAKyH,GACHC,OAAQ,OACRC,WAAW,EAKXC,eAAgBC,IAA2B,SAAW,IAExD7H,KAAK8H,EAAiB,EACtB9H,KAAK+H,GAAoB,EACzB/H,KAAKgI,EAAgCpH,MAAMwG,gBAG3CpH,KAAKiI,EAAmBzB,EAAQpF,YAChCpB,KAAKkI,KACLlI,KAAKmI,KACLnI,KAAKoI,EAAalD,IAClBlF,KAAKqI,KACLrI,KAAKsI,KACLtI,KAAKuI,EAAqB,KAE1BvI,KAAKwI,EAAYhC,EAAQiC,SACzBzI,KAAK0I,EAAY1I,KAAKwI,GAAaxI,KAAKwI,EAAUG,KAClD3I,KAAK4I,GAGL,KAAK,GAAIlB,KAAU1H,MAAKiI,EACtBjI,KAAKkI,EAAwBR,GAAU1H,KAAKiI,EAAiBP,GAhIjE,GAAImB,GAAW3H,EAAQ,GACnBuE,EAAYvE,EAAQ,IACpB4H,EAAM5H,EAAQ,IACdgD,EAAmBhD,EAAQ,GAE3BmD,EAAQnD,EAAQ,GAChB6H,EAAe1E,EAAM0E,aACrBC,EAAa3E,EAAM2E,WACnBC,EAAiB5E,EAAM4E,eACvBC,EAAU7E,EAAM6E,QAChBC,EAAW9E,EAAM8E,SACjBC,EAAgB/E,EAAM+E,cACtBzD,EAActB,EAAMsB,YACpBL,EAAajB,EAAMiB,WACnB+D,EAAWhF,EAAMgF,SACjBC,EAAUjF,EAAMiF,QAChBC,EAAgBlF,EAAMkF,cACtBC,EAAOnF,EAAMmF,KACbC,EAAcpF,EAAMoF,YACpBC,EAAWrF,EAAMqF,SACjBC,EAAetF,EAAMsF,aACrBC,EAASvF,EAAMuF,OACfC,EAAaxF,EAAMwF,WACnBC,EAAYzF,EAAMyF,UAClBC,EAAQ1F,EAAM0F,MACdC,EAAmB3F,EAAM2F,iBACzBC,EAAkB5F,EAAM4F,gBACxBC,EAAmB7F,EAAM6F,iBACzBC,EAAW9F,EAAM8F,SACjBC,EAAO/F,EAAM+F,KACbC,EAAgBhG,EAAMgG,cACtBxC,EAAyBxD,EAAMwD,uBAC/ByC,EAA0BjG,EAAMiG,wBAChCC,EAAqBlG,EAAMkG,mBAC3BC,EAAWnG,EAAMmG,SAEjBzI,EAAoBb,EAAQ,GAAGc,WAE/ByI,EAAU,2CAA2CC,MAAM,KAC7DC,EAAa,gEAOXnE,EACgB,mBAAX3G,QACHA,OACkB,mBAAXC,GACLA,EACgB,mBAATC,MACLA,QAEN6F,EAAYY,EAAQoE,SACpB9E,EAAaU,EAAQqE,SAmFzB5K,GAAMyD,WAKJoH,QAAS,SAETC,OAAO,EAEPlC,SAAUA,EASV1F,OAAQ,SAAS6H,EAAKC,GACpB,GAAIlL,GAAOC,IAEX,IAAID,EAAKmG,EAEP,MADAlG,MAAKkL,EAAU,QAAS,4CACjBnL,CAET,KAAKiL,EAAK,MAAOjL,EAEjB,IAAIoL,GAAgBpL,EAAKuG,CAGrB2E,IACFzB,EAAKyB,EAAS,SAASG,EAAKC,GAEd,SAARD,GAA0B,UAARA,GAA2B,SAARA,EACvCrL,EAAKsG,EAAe+E,GAAOC,EAE3BF,EAAcC,GAAOC,IAK3BtL,EAAKuL,OAAON,GAIZG,EAAcxE,aAAanF,KAAK,qBAChC2J,EAAcxE,aAAanF,KAAK,iDAGhC2J,EAAcxE,aAAekD,EAAWsB,EAAcxE,cACtDwE,EAAcvE,aAAauE,EAAcvE,WAAW5F,QAChD6I,EAAWsB,EAAcvE,YAE7BuE,EAActE,gBAAgBsE,EAActE,cAAc7F,QACtD6I,EAAWsB,EAActE,eAE7BsE,EAAcrE,aAAe+C,EAAWsB,EAAcrE,cACtDqE,EAAcI,eAAiBC,KAAKC,IAClC,EACAD,KAAKE,IAAIP,EAAcI,gBAAkB,IAAK,KAGhD,IAAII,IACFC,KAAK,EACLxK,SAAS,EACTyK,KAAK,EACLpD,UAAU,EACVqD,QAAQ,GAGNzE,EAAkB8D,EAAc9D,eACM,wBAAnC1D,SAAS5C,KAAKsG,GACnBA,EAAkBoC,EAAYkC,EAAwBtE,GAC7CA,KAAoB,IAC7BA,EAAkBsE,GAEpBR,EAAc9D,gBAAkBA,CAEhC,IAAI0E,IACFC,UAAU,GAGR1E,EAAa6D,EAAc7D,UAW/B,OAVqC,uBAA9B3D,SAAS5C,KAAKuG,GACnBA,EAAamC,EAAYsC,EAAoBzE,GACpCA,KAAe,IACxBA,EAAayE,GAEfZ,EAAc7D,WAAaA,EAE3BuB,EAAS7B,sBAAwBmE,EAAcnE,oBAGxCjH,GAWTkM,QAAS,WACP,GAAIlM,GAAOC,IAyBX,OAxBID,GAAKmM,YAAcnM,EAAKgI,IAC1Bc,EAASsD,OAAOC,UAAU,WACxBrM,EAAKsM,EAAwBtH,MAAMhF,EAAM4E,aAGvC5E,EAAKuG,EAAeW,4BACtBlH,EAAKuM,IAGPvM,EAAKwM,IAEDxM,EAAKuG,EAAegB,YAAcvH,EAAKuG,EAAegB,WAAW0E,UACnEjM,EAAKyM,IAGHzM,EAAKuG,EAAee,iBAAiBtH,EAAK0M,IAG9C1M,EAAK2M,IAEL3M,EAAKgI,GAAoB,GAG3BnH,MAAMwG,gBAAkBrH,EAAKuG,EAAec,gBACrCpH,MAQTsL,OAAQ,SAASN,GACf,GAAIjL,GAAOC,KACT2M,EAAM5M,EAAK6M,EAAU5B,GACrB6B,EAAYF,EAAIG,KAAKC,YAAY,KACjCD,EAAOH,EAAIG,KAAKE,OAAO,EAAGH,EAE5B9M,GAAKkN,EAAOjC,EACZjL,EAAKoG,EAAawG,EAAIO,KACtBnN,EAAKoN,EAAgBR,EAAIS,MAAQT,EAAIS,KAAKJ,OAAO,GACjDjN,EAAKqG,EAAiBuG,EAAIG,KAAKE,OAAOH,EAAY,GAElD9M,EAAKmG,EAAgBnG,EAAKsN,EAAiBV,GAE3C5M,EAAKuN,EACHvN,EAAKmG,EAAgB,IAAM4G,EAAO,OAAS/M,EAAKqG,EAAiB,UAInEpG,KAAK4I,KAWP2E,QAAS,SAAStC,EAASuC,EAAM/I,GAO/B,MANIa,GAAW2F,KACbxG,EAAO+I,MACPA,EAAOvC,EACPA,EAAUwC,QAGLzN,KAAKsC,KAAK2I,EAASuC,GAAMzI,MAAM/E,KAAMyE,IAW9CnC,KAAM,SAAS2I,EAASuC,EAAME,GAqC5B,QAASC,KACP,GAAIlJ,MACF9D,EAAIgE,UAAU3D,OACduB,GAAQ0I,GAAYA,GAAWA,EAAQ1I,QAAS,CAQlD,KANImL,GAAWpI,EAAWoI,IACxBA,EAAQ3I,MAAM/E,KAAM2E,WAKfhE,KAAK8D,EAAK9D,GAAK4B,EAAOxC,EAAKuC,KAAK2I,EAAStG,UAAUhE,IAAMgE,UAAUhE,EAE1E,KAKE,MAAO6M,GAAKzI,MAAM/E,KAAMyE,GACxB,MAAOvE,GAGP,KAFAH,GAAK6N,IACL7N,EAAKgE,iBAAiB7D,EAAG+K,GACnB/K,GA1DV,GAAIH,GAAOC,IAGX,IAAI2F,EAAY6H,KAAUlI,EAAW2F,GACnC,MAAOA,EAWT,IAPI3F,EAAW2F,KACbuC,EAAOvC,EACPA,EAAUwC,SAKPnI,EAAWkI,GACd,MAAOA,EAIT,KACE,GAAIA,EAAKK,EACP,MAAOL,EAIT,IAAIA,EAAKM,EACP,MAAON,GAAKM,EAEd,MAAO5N,GAIP,MAAOsN,GA8BT,IAAK,GAAIO,KAAYP,GACf5D,EAAO4D,EAAMO,KACfJ,EAAQI,GAAYP,EAAKO,GAW7B,OARAJ,GAAQjK,UAAY8J,EAAK9J,UAEzB8J,EAAKM,EAAoBH,EAGzBA,EAAQE,GAAY,EACpBF,EAAQK,EAAWR,EAEZG,GAQTM,UAAW,WAWT,MAVApF,GAASsD,OAAO8B,YAEhBjO,KAAKkO,IACLlO,KAAKmO,IACLnO,KAAKoO,IACLpO,KAAKqO,IAELzN,MAAMwG,gBAAkBpH,KAAKgI,EAC7BhI,KAAK+H,GAAoB,EAElB/H,MAWTsO,EAA0B,SAASC,GACjCvO,KAAKkL,EAAU,QAAS,4CAA6CqD,GACrEvO,KAAK+D,iBAAiBwK,EAAMC,QAC1BxK,OACEyK,2BAA2B,MAUjCC,EAAgC,WAI9B,MAHA1O,MAAK2O,EAA2B3O,KAAK2O,EAAyBC,KAAK5O,MACnEwG,EAAQqI,kBACNrI,EAAQqI,iBAAiB,qBAAsB7O,KAAK2O,GAC/C3O,MAQT8O,EAAgC,WAG9B,MAFAtI,GAAQuI,qBACNvI,EAAQuI,oBAAoB,qBAAsB/O,KAAK2O,GAClD3O,MAUT+D,iBAAkB,SAASiL,EAAI/D,GAG7B,GAFAA,EAAUxB,GAAawF,eAAgB,GAAIhE,EAAUA,MAEjDlC,EAAaiG,IAAOA,EAAG1L,MAEzB0L,EAAKA,EAAG1L,UACH,CAAA,GAAI0F,EAAWgG,IAAO/F,EAAe+F,GAAK,CAK/C,GAAIpM,GAAOoM,EAAGpM,OAASoG,EAAWgG,GAAM,WAAa,gBACjD7K,EAAU6K,EAAG7K,QAAUvB,EAAO,KAAOoM,EAAG7K,QAAUvB,CAEtD,OAAO5C,MAAK4B,eACVuC,EACAsF,EAAYwB,GAGViE,YAAY,EACZD,eAAgBhE,EAAQgE,eAAiB,KAGxC,GAAI/F,EAAQ8F,GAEjBA,EAAKA,MACA,CAAA,IAAI5F,EAAc4F,GAavB,MAAOhP,MAAK4B,eACVoN,EACAvF,EAAYwB,GACViE,YAAY,EACZD,eAAgBhE,EAAQgE,eAAiB,IAb7ChE,GAAUjL,KAAKmP,EAA2ClE,EAAS+D,GACnEA,EAAK,GAAIpO,OAAMqK,EAAQ9G,UAkBzBnE,KAAK+F,EAAyBiJ,CAO9B,KACE,GAAII,GAAQvG,EAASwG,kBAAkBL,EACvChP,MAAKsP,EAAiBF,EAAOnE,GAC7B,MAAOsE,GACP,GAAIP,IAAOO,EACT,KAAMA,GAIV,MAAOvP,OAGTwP,EAA4C,SAASC,EAAgBT,GACnE,GAAIU,GAASjM,OAAOkM,KAAKX,GAAIY,OACzB3E,EAAUxB,EAAYgG,GACxBtL,QACE,2CAA6CmG,EAAwBoF,GACvEG,aAAc/G,EAAI4G,IAClB1L,MAAOyL,EAAezL,WAIxB,OAFAiH,GAAQjH,MAAM8L,EAAiBvF,EAAmByE,GAE3C/D,GAUTrJ,eAAgB,SAASF,EAAKuJ,GAI5B,IACIjL,KAAKsG,EAAeK,aAAaoJ,OACnC/P,KAAKsG,EAAeK,aAAaoJ,KAAKrO,GAFxC,CAOAuJ,EAAUA,MACVvJ,GAAY,EAEZ,IAOIsN,GAPArN,EAAO8H,GAEPtF,QAASzC,GAEXuJ,EAQF,KACE,KAAM,IAAIrK,OAAMc,GAChB,MAAO6N,GACPP,EAAKO,EAIPP,EAAGpM,KAAO,IACV,IAAIwM,GAAQvG,EAASwG,kBAAkBL,GAGnCgB,EAAc1G,EAAQ8F,EAAMA,QAAUA,EAAMA,MAAM,EAKlDY,IAAoC,2BAArBA,EAAYxC,OAC7BwC,EAAcZ,EAAMA,MAAM,GAG5B,IAAIa,GAAWD,GAAeA,EAAYE,KAAQ,EAElD,MACIlQ,KAAKsG,EAAeM,WAAWmJ,OACjC/P,KAAKsG,EAAeM,WAAWmJ,KAAKE,OAMlCjQ,KAAKsG,EAAeO,cAAckJ,MACnC/P,KAAKsG,EAAeO,cAAckJ,KAAKE,IAF1C,CAOA,GAAIjQ,KAAKsG,EAAe4I,YAAejE,GAAWA,EAAQiE,WAAa,CAErEvN,EAAKkO,YAAkC,MAApBlO,EAAKkO,YAAsBnO,EAAMC,EAAKkO,YAEzD5E,EAAUxB,GAENwF,eAAgB,GAElBhE,GAMFA,EAAQgE,gBAAkB,CAE1B,IAAIkB,GAASnQ,KAAKoQ,EAAehB,EAAOnE,EACxCtJ,GAAKuN,YAEHiB,OAAQA,EAAOE,WAcnB,MATI1O,GAAKkO,cACPlO,EAAKkO,YAAcvG,EAAQ3H,EAAKkO,aAC5BlO,EAAKkO,aACJlO,EAAKkO,cAIZ7P,KAAKsQ,EAAM3O,GAEJ3B,QAGTuQ,kBAAmB,SAASC,GAC1B,GAAIC,GAAQhH,GAERiH,UAAWxL,IAAQ,KAErBsL,EAGF,IAAIlL,EAAWtF,KAAKsG,EAAeqK,oBAAqB,CACtD,GAAIC,GAAS5Q,KAAKsG,EAAeqK,mBAAmBF,EAEpD,IAAItH,EAASyH,KAAYrH,EAAcqH,GACrCH,EAAQG,MACH,IAAIA,KAAW,EACpB,MAAO5Q,MAQX,MAJAA,MAAKsI,EAAa9G,KAAKiP,GACnBzQ,KAAKsI,EAAatH,OAAShB,KAAKsG,EAAeiF,gBACjDvL,KAAKsI,EAAauI,QAEb7Q,MAGTiC,UAAW,SAAS6O,GAClB,GAAIC,MAAgBrM,MAAM3D,KAAK4D,UAAW,EAO1C,OALA3E,MAAKmI,EAAS3G,MAAMsP,EAAQC,IACxB/Q,KAAK+H,GACP/H,KAAK0M,IAGA1M,MASTgR,eAAgB,SAAS9D,GAIvB,MAFAlN,MAAKqG,EAAe6G,KAAOA,EAEpBlN,MASTiR,gBAAiB,SAASjN,GAGxB,MAFAhE,MAAKkR,EAAc,QAASlN,GAErBhE,MASTmR,eAAgB,SAASC,GAGvB,MAFApR,MAAKkR,EAAc,OAAQE,GAEpBpR,MAQTqR,aAAc,WAGZ,MAFArR,MAAKqG,KAEErG,MAQTsR,WAAY,WAEV,MAAO9L,MAAK+L,MAAM9L,EAAUzF,KAAKqG,KASnCmL,eAAgB,SAASC,GAGvB,MAFAzR,MAAKsG,EAAemL,YAAcA,EAE3BzR,MAST0R,WAAY,SAASnL,GAGnB,MAFAvG,MAAKsG,EAAeC,QAAUA,EAEvBvG,MAUT2R,gBAAiB,SAASlQ,GACxB,GAAI4D,GAAWrF,KAAKsG,EAAesL,YAEnC,OADA5R,MAAKsG,EAAesL,aAAexM,EAAqBC,EAAU5D,GAC3DzB,MAUT6R,sBAAuB,SAASpQ,GAC9B,GAAI4D,GAAWrF,KAAKsG,EAAeqK,kBAEnC,OADA3Q,MAAKsG,EAAeqK,mBAAqBvL,EAAqBC,EAAU5D,GACjEzB,MAUT8R,sBAAuB,SAASrQ,GAC9B,GAAI4D,GAAWrF,KAAKsG,EAAeyL,kBAEnC,OADA/R,MAAKsG,EAAeyL,mBAAqB3M,EAAqBC,EAAU5D,GACjEzB,MAYTgS,aAAc,SAASC,GAGrB,MAFAjS,MAAKsG,EAAe2L,UAAYA,EAEzBjS,MAQTkS,cAAe,WACb,MAAOlS,MAAK+F,GAQdoM,YAAa,WACX,MAAOnS,MAAKiG,GAQdiG,QAAS,WACP,QAAKlM,KAAKuF,MACLvF,KAAKkG,IACHlG,KAAKoS,0BACRpS,KAAKoS,yBAA0B,EAC/BpS,KAAKkL,EAAU,QAAS,2CAEnB,KAKXmH,UAAW,WAIT,GAAIC,GAAc9L,EAAQ8L,WACtBA,IACFtS,KAAKmD,OAAOmP,EAAYtH,IAAKsH,EAAYnP,QAAQ8I,WAIrDsG,iBAAkB,SAAStH,GACzB,GACGrF,EADH,CAKAqF,EAAUA,KAEV,IAAIkH,GAAclH,EAAQuH,SAAWxS,KAAKmS,aAC1C,KAAKA,EACH,KAAM,IAAIjO,GAAiB,kBAG7B,IAAI8G,GAAMC,EAAQD,KAAOhL,KAAKiN,CAC9B,KAAKjC,EACH,KAAM,IAAI9G,GAAiB,cAG7B,IAAIuO,GAASC,mBACTC,EAAK,EACTA,IAAM,YAAcF,EAAON,GAC3BQ,GAAM,QAAUF,EAAOzH,EAEvB,IAAIkC,GAAOjC,EAAQiC,MAAQlN,KAAKqG,EAAe6G,IAC3CA,KACEA,EAAKtK,OAAM+P,GAAM,SAAWF,EAAOvF,EAAKtK,OACxCsK,EAAK0F,QAAOD,GAAM,UAAYF,EAAOvF,EAAK0F,QAGhD,IAAIC,GAAe7S,KAAKqN,EAAiBrN,KAAK4M,EAAU5B,IAEpD8H,EAASlN,EAAUmN,cAAc,SACrCD,GAAOE,OAAQ,EACfF,EAAOG,IAAMJ,EAAe,yBAA2BF,GACtD/M,EAAUsN,MAAQtN,EAAUuN,MAAMC,YAAYN,KAIjDO,EAAoB,WAClB,GAAItT,GAAOC,IACXA,MAAK8H,GAAkB,EACvBwL,WAAW,WAETvT,EAAK+H,GAAkB,KAI3ByL,EAAe,SAASC,EAAWvI,GAEjC,GAAIwI,GAAKrI,CAET,IAAKpL,KAAK0F,EAAV,CAEAuF,EAAUA,MAEVuI,EAAY,QAAUA,EAAUxG,OAAO,EAAG,GAAG0G,cAAgBF,EAAUxG,OAAO,GAE1EpH,EAAU+N,aACZF,EAAM7N,EAAU+N,YAAY,cAC5BF,EAAIG,UAAUJ,GAAW,GAAM,KAE/BC,EAAM7N,EAAUiO,oBAChBJ,EAAID,UAAYA,EAGlB,KAAKpI,IAAOH,GACNrB,EAAOqB,EAASG,KAClBqI,EAAIrI,GAAOH,EAAQG,GAGvB,IAAIxF,EAAU+N,YAEZ/N,EAAUkO,cAAcL,OAIxB,KACE7N,EAAUmO,UAAU,KAAON,EAAID,UAAUQ,cAAeP,GACxD,MAAOvT,OAYb+T,EAAyB,SAASC,GAChC,GAAInU,GAAOC,IACX,OAAO,UAASyT,GASd,GALA1T,EAAKoU,GAAmB,KAKpBpU,EAAKwI,IAAuBkL,EAAhC,CAEA1T,EAAKwI,EAAqBkL,CAM1B,IAAIW,EACJ,KACEA,EAASpK,EAAiByJ,EAAIW,QAC9B,MAAOlU,GACPkU,EAAS,YAGXrU,EAAKwQ,mBACH8D,SAAU,MAAQH,EAClB/P,QAASiQ,OAUfE,GAAuB,WACrB,GAAIvU,GAAOC,KACTuU,EAAmB,GAKrB,OAAO,UAASd,GACd,GAAIW,EACJ,KACEA,EAASX,EAAIW,OACb,MAAOlU,GAGP,OAEF,GAAIsU,GAAUJ,GAAUA,EAAOI,OAK/B,IACGA,IACY,UAAZA,GAAmC,aAAZA,GAA2BJ,EAAOK,mBAF5D,CAQA,GAAIC,GAAU3U,EAAKoU,EACdO,IACH3U,EAAK4U,EAAwB,SAASlB,GAExCmB,aAAaF,GACb3U,EAAKoU,GAAmBb,WAAW,WACjCvT,EAAKoU,GAAmB,MACvBI,MAUPM,GAAmB,SAASC,EAAMC,GAChC,GAAIC,GAAY7K,EAASnK,KAAKwI,EAAUG,MACpCsM,EAAW9K,EAAS4K,GACpBG,EAAa/K,EAAS2K,EAK1B9U,MAAK0I,EAAYqM,EAIbC,EAAUG,WAAaF,EAASE,UAAYH,EAAUI,OAASH,EAASG,OAC1EL,EAAKE,EAASI,UACZL,EAAUG,WAAaD,EAAWC,UAAYH,EAAUI,OAASF,EAAWE,OAC9EN,EAAOI,EAAWG,UAEpBrV,KAAKuQ,mBACH8D,SAAU,aACV1S,MACEoT,GAAIA,EACJD,KAAMA,MAKZQ,EAAwB,WACtB,GAAIvV,GAAOC,IACXD,GAAKwV,GAA4BzQ,SAASpB,UAAUC,SAEpDmB,SAASpB,UAAUC,SAAW,WAC5B,MAAoB,kBAAT3D,OAAuBA,KAAK6N,EAC9B9N,EAAKwV,GAA0BxQ,MAAM/E,KAAKgO,EAAUrJ,WAEtD5E,EAAKwV,GAA0BxQ,MAAM/E,KAAM2E,aAItD6Q,EAA0B,WACpBxV,KAAKuV,KAEPzQ,SAASpB,UAAUC,SAAW3D,KAAKuV,KAQvCE,EAAqB,WAKnB,QAASC,GAAWC,GAClB,MAAO,UAASC,EAAIzV,GAKlB,IAAK,GADDsE,GAAO,GAAIoR,OAAMlR,UAAU3D,QACtBL,EAAI,EAAGA,EAAI8D,EAAKzD,SAAUL,EACjC8D,EAAK9D,GAAKgE,UAAUhE,EAEtB,IAAImV,GAAmBrR,EAAK,EAQ5B,OAPIa,GAAWwQ,KACbrR,EAAK,GAAK1E,EAAKuC,KAAKwT,IAMlBH,EAAK5Q,MACA4Q,EAAK5Q,MAAM/E,KAAMyE,GAEjBkR,EAAKlR,EAAK,GAAIA,EAAK,KAOhC,QAASsR,GAAgBjW,GACvB,GAAIkW,GAAQxP,EAAQ1G,IAAW0G,EAAQ1G,GAAQ4D,SAC3CsS,IAASA,EAAMC,gBAAkBD,EAAMC,eAAe,sBACxD7L,EACE4L,EACA,mBACA,SAASL,GACP,MAAO,UAASzB,EAAS0B,EAAIM,EAASC,GAEpC,IACMP,GAAMA,EAAGQ,cACXR,EAAGQ,YAAcrW,EAAKuC,KAAKsT,EAAGQ,cAEhC,MAAOC,IAMT,GAAIC,GAAQC,EAAcC,CA6B1B,OA1BEnP,IACAA,EAAgBwE,MACJ,gBAAX/L,GAAuC,SAAXA,KAI7ByW,EAAexW,EAAK4U,EAAwB,SAC5C6B,EAAkBzW,EAAK0W,KACvBH,EAAS,SAAS7C,GAIhB,GAAKA,EAAL,CAEA,GAAID,EACJ,KACEA,EAAYC,EAAIiD,KAChB,MAAOxW,GAGP,OAEF,MAAkB,UAAdsT,EAA8B+C,EAAa9C,GACxB,aAAdD,EAAiCgD,EAAgB/C,GAArD,UAGFkC,EAAK5U,KACVf,KACAkU,EACAnU,EAAKuC,KAAKsT,EAAInI,OAAW6I,GACzBJ,EACAC,KAINQ,GAEFvM,EACE4L,EACA,sBACA,SAASL,GACP,MAAO,UAASlC,EAAKmC,EAAIM,EAASC,GAChC,IACEP,EAAKA,IAAOA,EAAG9H,EAAoB8H,EAAG9H,EAAoB8H,GAC1D,MAAO1V,IAGT,MAAOyV,GAAK5U,KAAKf,KAAMyT,EAAKmC,EAAIM,EAASC,KAG7CQ,IAvGN,GAAI5W,GAAOC,KAEP2W,EAAkB5W,EAAKsI,EA2BvBhB,EAAkBrH,KAAKsG,EAAee,eA+E1C+C,GAAK5D,EAAS,aAAckP,EAAYiB,GACxCvM,EAAK5D,EAAS,cAAekP,EAAYiB,GACrCnQ,EAAQoQ,uBACVxM,EACE5D,EACA,wBACA,SAASmP,GACP,MAAO,UAASkB,GACd,MAAOlB,GAAK5V,EAAKuC,KAAKuU,MAG1BF,EAqCJ,KAAK,GA/BDG,IACF,cACA,SACA,OACA,mBACA,iBACA,oBACA,kBACA,cACA,aACA,qBACA,cACA,aACA,iBACA,eACA,kBACA,cACA,cACA,eACA,qBACA,SACA,YACA,eACA,gBACA,YACA,kBACA,SACA,iBACA,4BACA,wBAEOnW,EAAI,EAAGA,EAAImW,EAAa9V,OAAQL,IACvCoV,EAAgBe,EAAanW,KAajCoW,EAAwB,WAMtB,QAASC,GAASC,EAAMrL,GAClBqL,IAAQrL,IAAOtG,EAAWsG,EAAIqL,KAChC7M,EAAKwB,EAAKqL,EAAM,SAAStB,GACvB,MAAO5V,GAAKuC,KAAKqT,KARvB,GAAI5V,GAAOC,KACPqH,EAAkBrH,KAAKsG,EAAee,gBAEtCsP,EAAkB5W,EAAKsI,CAU3B,IAAIhB,EAAgBuE,KAAO,kBAAoBpF,GAAS,CACtD,GAAI0Q,GAAW1Q,EAAQ2Q,gBAAkB3Q,EAAQ2Q,eAAezT,SAChE0G,GACE8M,EACA,OACA,SAASE,GACP,MAAO,UAAS1P,EAAQwI,GAYtB,MARI7G,GAAS6G,IAAQA,EAAImH,QAAQtX,EAAKoG,UACpCnG,KAAKsX,IACH5P,OAAQA,EACRwI,IAAKA,EACLqH,YAAa,OAIVH,EAASrS,MAAM/E,KAAM2E,aAGhCgS,GAGFvM,EACE8M,EACA,OACA,SAASM,GACP,MAAO,YAIL,QAASC,KACP,GAAI7L,EAAI0L,IAAkC,IAAnB1L,EAAI8L,WAAkB,CAC3C,IAGE9L,EAAI0L,GAAYC,YAAc3L,EAAI+L,OAClC,MAAOzX,IAITH,EAAKwQ,mBACHmG,KAAM,OACNrC,SAAU,MACV1S,KAAMiK,EAAI0L,MAMhB,IAAK,GArBD1L,GAAM5L,KAoBN4X,GAAS,SAAU,UAAW,cACzBC,EAAI,EAAGA,EAAID,EAAM5W,OAAQ6W,IAChCb,EAASY,EAAMC,GAAIjM,EAiBrB,OAdI,sBAAwBA,IAAOtG,EAAWsG,EAAIkM,oBAChD1N,EACEwB,EACA,qBACA,SAAS+J,GACP,MAAO5V,GAAKuC,KAAKqT,EAAMlI,OAAWgK,KAMtC7L,EAAIkM,mBAAqBL,EAGpBD,EAASzS,MAAM/E,KAAM2E,aAGhCgS,GAIAtP,EAAgBuE,KAAOvB,KACzBD,EACE5D,EACA,QACA,SAASuR,GACP,MAAO,YAKL,IAAK,GADDtT,GAAO,GAAIoR,OAAMlR,UAAU3D,QACtBL,EAAI,EAAGA,EAAI8D,EAAKzD,SAAUL,EACjC8D,EAAK9D,GAAKgE,UAAUhE,EAGtB,IAEIuP,GAFA8H,EAAavT,EAAK,GAClBiD,EAAS,KAeb,IAZ0B,gBAAfsQ,GACT9H,EAAM8H,EACG,WAAaxR,IAAWwR,YAAsBxR,GAAQyR,SAC/D/H,EAAM8H,EAAW9H,IACb8H,EAAWtQ,SACbA,EAASsQ,EAAWtQ,SAGtBwI,EAAM,GAAK8H,EAIT9H,EAAImH,QAAQtX,EAAKoG,QACnB,MAAO4R,GAAUhT,MAAM/E,KAAMyE,EAG3BA,GAAK,IAAMA,EAAK,GAAGiD,SACrBA,EAASjD,EAAK,GAAGiD,OAGnB,IAAIwQ,IACFxQ,OAAQA,EACRwI,IAAKA,EACLqH,YAAa,KAGf,OAAOQ,GACJhT,MAAM/E,KAAMyE,GACZ0T,KAAK,SAASC,GASb,MARAF,GAAUX,YAAca,EAAST,OAEjC5X,EAAKwQ,mBACHmG,KAAM,OACNrC,SAAU,QACV1S,KAAMuW,IAGDE,IAER,SAAS,SAAS/B,GASjB,KAPAtW,GAAKwQ,mBACHmG,KAAM,OACNrC,SAAU,QACV1S,KAAMuW,EACNrW,MAAO,UAGHwU,MAIdM,GAMAtP,EAAgBwE,KAAO7L,KAAK0F,IAC1BE,EAAUiJ,kBACZjJ,EAAUiJ,iBAAiB,QAAS9O,EAAK4U,EAAwB,UAAU,GAC3E/O,EAAUiJ,iBAAiB,WAAY9O,EAAK0W,MAAyB,IAC5D7Q,EAAUyS,cAEnBzS,EAAUyS,YAAY,UAAWtY,EAAK4U,EAAwB,UAC9D/O,EAAUyS,YAAY,aAActY,EAAK0W,OAQ7C,IAAI6B,GAAS9R,EAAQ8R,OACjBC,EAAsBD,GAAUA,EAAOE,KAAOF,EAAOE,IAAIC,QACzDC,GACDH,GACD/R,EAAQmS,SACRnS,EAAQmS,QAAQC,WAChBpS,EAAQmS,QAAQE,YAClB,IAAIxR,EAAgBoB,UAAYiQ,EAAwB,CAEtD,GAAII,GAAgBtS,EAAQuS,UAC5BvS,GAAQuS,WAAa,WACnB,GAAIC,GAAcjZ,EAAKyI,EAAUG,IAGjC,IAFA5I,EAAKkZ,GAAkBlZ,EAAK2I,EAAWsQ,GAEnCF,EACF,MAAOA,GAAc/T,MAAM/E,KAAM2E,WAIrC,IAAIuU,GAA6B,SAASC,GAGxC,MAAO,YACL,GAAIjJ,GAAMvL,UAAU3D,OAAS,EAAI2D,UAAU,GAAK8I,MAQhD,OALIyC,IAEFnQ,EAAKkZ,GAAkBlZ,EAAK2I,EAAWwH,EAAM,IAGxCiJ,EAAiBpU,MAAM/E,KAAM2E,YAIxCyF,GAAK5D,EAAQmS,QAAS,YAAaO,EAA4BvC,GAC/DvM,EAAK5D,EAAQmS,QAAS,eAAgBO,EAA4BvC,GAGpE,GAAItP,EAAgBjG,SAAW,WAAaoF,IAAWpF,QAAQgY,IAAK,CAElE,GAAIC,GAAwB,SAAS3X,EAAKC,GACxC5B,EAAKwQ,mBACHpM,QAASzC,EACTG,MAAOF,EAAKE,MACZwS,SAAU,YAId7K,IAAM,QAAS,OAAQ,OAAQ,QAAS,OAAQ,SAASyK,EAAGpS,GAC1DE,EAAkBX,QAASS,EAAOwX,OAKxCC,EAAkB,WAGhB,IADA,GAAIC,GACGvZ,KAAKqI,EAAiBrH,QAAQ,CACnCuY,EAAUvZ,KAAKqI,EAAiBwI,OAEhC,IAAIL,GAAM+I,EAAQ,GAChB3W,EAAO2W,EAAQ,GACf5D,EAAO4D,EAAQ,EAEjB/I,GAAI5N,GAAQ+S,IAIhB6D,EAAiB,WAEf,IAAK,GAAI9R,KAAU1H,MAAKkI,EACtBlI,KAAKiI,EAAiBP,GAAU1H,KAAKkI,EAAwBR,IAIjE+R,EAAe,WACb,GAAI1Z,GAAOC,IAGXwJ,GAAKxJ,KAAKmI,EAAU,SAAS8L,EAAGnD,GAC9B,GAAI4I,GAAY5I,EAAO,GACnBrM,EAAOqM,EAAO,EAClB4I,GAAU3U,MAAMhF,GAAOA,GAAM4Z,OAAOlV,OAIxCmV,EAAW,SAASC,GAClB,GAAIC,GAAInP,EAAWoP,KAAKF,GACtB7O,KACArK,EAAI,CAEN,KACE,KAAOA,KAAKqK,EAAIP,EAAQ9J,IAAMmZ,EAAEnZ,IAAM,GACtC,MAAOT,GACP,KAAM,IAAIgE,GAAiB,gBAAkB2V,GAG/C,GAAI7O,EAAIoC,OAASpN,KAAKsG,EAAe0T,eACnC,KAAM,IAAI9V,GACR,iFAIJ,OAAO8G,IAGTiP,EAAkB,SAAStN,GAEzB,GAAIkG,GAAe,KAAOlG,EAAIyI,MAAQzI,EAAIuN,KAAO,IAAMvN,EAAIuN,KAAO,GAKlE,OAHIvN,GAAIwI,WACNtC,EAAelG,EAAIwI,SAAW,IAAMtC,GAE/BA,GAGTsH,EAAyB,WAElBna,KAAK8H,GACR9H,KAAKsP,EAAiBvK,MAAM/E,KAAM2E,YAItCyV,EAAkB,SAASC,EAAWpP,GACpC,GAAIkF,GAASnQ,KAAKoQ,EAAeiK,EAAWpP,EAE5CjL,MAAKsa,EAAc,UACjBD,UAAWA,EACXpP,QAASA,IAGXjL,KAAKua,GACHF,EAAUzX,KACVyX,EAAUlW,QACVkW,EAAUnK,IACVmK,EAAUG,OACVrK,EACAlF,IAIJwP,EAAgB,SAASJ,EAAWpP,GAClC,GAAIlL,GAAOC,KACPmQ,IACJ,IAAIkK,EAAUjL,OAASiL,EAAUjL,MAAMpO,SACrCwI,EAAK6Q,EAAUjL,MAAO,SAASzO,EAAGyO,GAChC,GAAIsL,GAAQ3a,EAAK4a,GAAgBvL,EAAOiL,EAAUnK,IAC9CwK,IACFvK,EAAO3O,KAAKkZ,KAKZzP,GAAWA,EAAQgE,gBACrB,IAAK,GAAI4I,GAAI,EAAGA,EAAI5M,EAAQgE,gBAAkB4I,EAAI1H,EAAOnP,OAAQ6W,IAC/D1H,EAAO0H,GAAG+C,QAAS,CAKzB,OADAzK,GAASA,EAAOzL,MAAM,EAAG1E,KAAKsG,EAAec,kBAI/CyT,GAAiB,SAASH,EAAOI,GAE/B,GAAIC,IACFC,SAAUN,EAAMxK,IAChBsK,OAAQE,EAAMO,KACdC,MAAOR,EAAMS,OACbC,WAAUV,EAAMlN,MAAQ,IAuB1B,OAfKkN,GAAMxK,MACT6K,EAAWC,SAAWF,GAGxBC,EAAWH,SAGN5a,KAAKsG,EAAeQ,aAAaiJ,OACjC/P,KAAKsG,EAAeQ,aAAaiJ,KAAKgL,EAAWC,WAEpD,qBAAqBjL,KAAKgL,EAAW,cAErC,qBAAqBhL,KAAKgL,EAAWC,WAGhCD,GAGTM,GAAmB,SAAS3E,EAAMvS,EAAS8L,EAASuK,EAAQrK,EAAQlF,GAClE,GAAIqQ,IAAmB5E,EAAOA,EAAO,KAAO,KAAOvS,GAAW,GAC9D,KACInE,KAAKsG,EAAeK,aAAaoJ,OAClC/P,KAAKsG,EAAeK,aAAaoJ,KAAK5L,KACrCnE,KAAKsG,EAAeK,aAAaoJ,KAAKuL,GAH1C,CAQA,GAAIpM,EAoBJ,IAlBIiB,GAAUA,EAAOnP,QACnBiP,EAAUE,EAAO,GAAG6K,UAAY/K,EAGhCE,EAAOE,UACPnB,GAAciB,OAAQA,IACbF,IACTf,GACEiB,SAEI6K,SAAU/K,EACVuK,OAAQA,EACRI,QAAQ,QAOZ5a,KAAKsG,EAAeM,WAAWmJ,OACjC/P,KAAKsG,EAAeM,WAAWmJ,KAAKE,OAMlCjQ,KAAKsG,EAAeO,cAAckJ,MACnC/P,KAAKsG,EAAeO,cAAckJ,KAAKE,IAF1C,CAOA,GAAItO,GAAO8H,GAGP8R,WACEC,SAEI9E,KAAMA,EACNrL,MAAOlH,EACP+K,WAAYA,KAIlBuM,YAAaxL,GAEfhF,EAIFjL,MAAKsQ,EAAM3O,MAGb+Z,GAAa,SAAS/Z,GAGpB,GAAI8J,GAAMzL,KAAKsG,EAAeY,gBAI9B,IAHIvF,EAAKwC,UACPxC,EAAKwC,QAAUuF,EAAS/H,EAAKwC,QAASsH,IAEpC9J,EAAK4Z,UAAW,CAClB,GAAIA,GAAY5Z,EAAK4Z,UAAUC,OAAO,EACtCD,GAAUlQ,MAAQ3B,EAAS6R,EAAUlQ,MAAOI,GAG9C,GAAIkQ,GAAUha,EAAKga,OAanB,OAZIA,KACEA,EAAQzL,MACVyL,EAAQzL,IAAMxG,EAASiS,EAAQzL,IAAKlQ,KAAKsG,EAAea,eAEtDwU,EAAQC,UACVD,EAAQC,QAAUlS,EAASiS,EAAQC,QAAS5b,KAAKsG,EAAea,gBAIhExF,EAAKka,aAAela,EAAKka,YAAYL,QACvCxb,KAAK8b,GAAiBna,EAAKka,aAEtBla,GAMToa,GAAkB,SAASF,GAQzB,IAAK,GAJHG,GACAvL,EACA9O,EAHEsa,GAAY,KAAM,OAAQ,OAKrBtb,EAAI,EAAGA,EAAIkb,EAAYL,OAAOxa,SAAUL,EAE/C,GADA8P,EAAQoL,EAAYL,OAAO7a,GAExB8P,EAAMwF,eAAe,SACrB9M,EAASsH,EAAM9O,QAChBgI,EAAa8G,EAAM9O,MAHrB,CAOAA,EAAO8H,KAAgBgH,EAAM9O,KAC7B,KAAK,GAAIkW,GAAI,EAAGA,EAAIoE,EAASjb,SAAU6W,EACrCmE,EAAUC,EAASpE,GACflW,EAAKsU,eAAe+F,IAAYra,EAAKqa,KACvCra,EAAKqa,GAAWtS,EAAS/H,EAAKqa,GAAUhc,KAAKsG,EAAea,cAGhE0U,GAAYL,OAAO7a,GAAGgB,KAAOA,IAIjCua,GAAc,WACZ,GAAKlc,KAAK6F,GAAkB7F,KAAK0F,EAAjC,CACA,GAAIyW,KAkBJ,OAhBInc,MAAK6F,GAAiBC,EAAWsW,YACnCD,EAASpV,SACPsV,aAAcvW,EAAWsW,YAKzB5V,EAAQiC,UAAYjC,EAAQiC,SAASE,OACvCwT,EAASjM,IAAM1J,EAAQiC,SAASE,MAG9B3I,KAAK0F,GAAgBE,EAAU0W,WAC5BH,EAASpV,UAASoV,EAASpV,YAChCoV,EAASpV,QAAQ6U,QAAUhW,EAAU0W,UAGhCH,IAGTI,EAAe,WACbvc,KAAKwc,GAAmB,EACxBxc,KAAKyc,GAAgB,MAGvBC,GAAgB,WACd,MAAO1c,MAAKwc,IAAoBtX,IAAQlF,KAAKyc,GAAgBzc,KAAKwc,IAYpEG,GAAe,SAASC,GACtB,GAAIC,GAAO7c,KAAKgG,CAEhB,UACG6W,GACDD,EAAQzY,UAAY0Y,EAAK1Y,SACzByY,EAAQnB,cAAgBoB,EAAKpB,eAK3BmB,EAAQ1N,YAAc2N,EAAK3N,WACtBhF,EAAiB0S,EAAQ1N,WAAY2N,EAAK3N,aACxC0N,EAAQrB,YAAasB,EAAKtB,WAE5BtR,EAAgB2S,EAAQrB,UAAWsB,EAAKtB,aAMnDuB,GAAkB,SAASnB,GAEzB,IAAI3b,KAAK+c,KAAT,CAIA,GAAIpF,GAASgE,EAAQhE,MAKrB,IAAiB,MAAXA,GAA6B,MAAXA,GAA6B,MAAXA,EAA1C,CAEA,GAAIqF,EACJ,KAIIA,EADE3S,IACMsR,EAAQ5U,QAAQkW,IAAI,eAEpBtB,EAAQuB,kBAAkB,eAIpCF,EAA8B,IAAtBG,SAASH,EAAO,IACxB,MAAO9c,IAITF,KAAKwc,GAAmBQ,EAEpBA,EAEwB,EAAxBhd,KAAKwc,IAAwB,IAEjCxc,KAAKyc,GAAgBvX,OAGvBkY,EAAO,SAASzb,GACd,GAAIwJ,GAAgBnL,KAAKsG,EAErB+W,GACAC,QAAStd,KAAKoG,EACdvB,OAAQsG,EAActG,OACtB0Y,SAAU,cAEZpB,EAAWnc,KAAKwd,IAsDlB,IApDIrB,IACFkB,EAAS1B,QAAUQ,GAIjBxa,EAAKsN,sBAAuBtN,GAAKsN,eAErCtN,EAAO8H,EAAY4T,EAAU1b,GAG7BA,EAAKyP,KAAO3H,EAAYA,KAAgBzJ,KAAKqG,EAAe+K,MAAOzP,EAAKyP,MACxEzP,EAAKqC,MAAQyF,EAAYA,KAAgBzJ,KAAKqG,EAAerC,OAAQrC,EAAKqC,OAG1ErC,EAAKqC,MAAM,oBAAsBkB,IAAQlF,KAAKoI,EAE1CpI,KAAKsI,GAAgBtI,KAAKsI,EAAatH,OAAS,IAGlDW,EAAKka,aACHL,UAAW9W,MAAM3D,KAAKf,KAAKsI,EAAc,KAIzCtI,KAAKqG,EAAe6G,OAEtBvL,EAAKuL,KAAOlN,KAAKqG,EAAe6G,MAI9B/B,EAAcsG,cAAa9P,EAAK8P,YAActG,EAAcsG,aAG5DtG,EAAc5E,UAAS5E,EAAK4E,QAAU4E,EAAc5E,SAGpD4E,EAAcsS,aAAY9b,EAAK+b,YAAcvS,EAAcsS,YAE/D9b,EAAO3B,KAAK2d,GAAchc,GAG1B8B,OAAOkM,KAAKhO,GAAMic,QAAQ,SAASxS,IAChB,MAAbzJ,EAAKyJ,IAA8B,KAAdzJ,EAAKyJ,IAAe7B,EAAc5H,EAAKyJ,YACvDzJ,GAAKyJ,KAIZ9F,EAAW6F,EAAcyG,gBAC3BjQ,EAAOwJ,EAAcyG,aAAajQ,IAASA,GAIxCA,IAAQ4H,EAAc5H,MAMzB2D,EAAW6F,EAAc4G,qBACxB5G,EAAc4G,mBAAmBpQ,IAOpC,MAAI3B,MAAK+c,SACP/c,MAAKkL,EAAU,OAAQ,uCAAwCvJ,QAIzB,gBAA7BwJ,GAAc5D,WACnBiE,KAAKqS,SAAW1S,EAAc5D,YAChCvH,KAAK8d,GAAsBnc,GAG7B3B,KAAK8d,GAAsBnc,KAI/Boc,GAAe,SAASpc,GACtB,MAAO6I,GAAS7I,EAAM3B,KAAKsG,EAAekB,eAG5CwW,GAAU,WACR,MAAOjU,MAGTkU,GAAuB,SAAStc,EAAMF,GACpC,GAAI1B,GAAOC,KACPmL,EAAgBnL,KAAKsG,CAEzB,IAAKtG,KAAKkM,UAAV,CAQA,GALAvK,EAAO3B,KAAKke,GAAYvc,IAKnB3B,KAAKsG,EAAe6X,iBAAmBne,KAAKoe,GAAczc,GAE7D,WADA3B,MAAKkL,EAAU,OAAQ,+BAAgCvJ,EAOzD3B,MAAKiG,EAAetE,EAAK0c,WAAa1c,EAAK0c,SAAWre,KAAKse,MAG3Dte,KAAKgG,EAAYrE,EAEjB3B,KAAKkL,EAAU,QAAS,uBAAwBvJ,EAEhD,IAAI4c,IACFC,eAAgB,IAChBC,cAAe,YAAcze,KAAK8K,QAClC4T,WAAY1e,KAAKmG,EAGfnG,MAAKmN,IACPoR,EAAKI,cAAgB3e,KAAKmN,EAG5B,IAAIoO,GAAY5Z,EAAK4Z,WAAa5Z,EAAK4Z,UAAUC,OAAO,EAItDxb,MAAKsG,EAAee,iBACpBrH,KAAKsG,EAAee,gBAAgByE,QAEpC9L,KAAKuQ,mBACH8D,SAAU,SACVlQ,QAASoX,GACJA,EAAU7E,KAAO6E,EAAU7E,KAAO,KAAO,IAAM6E,EAAUlQ,MAC1D1J,EAAKwC,QACTka,SAAU1c,EAAK0c,SACfxc,MAAOF,EAAKE,OAAS,SAIzB,IAAIqO,GAAMlQ,KAAKsN,GACdnC,EAAc8G,WAAajS,KAAK4e,IAAc7d,KAAKf,MAClDkQ,IAAKA,EACLqO,KAAMA,EACN5c,KAAMA,EACNsJ,QAASE,EACT0T,UAAW,WACT9e,EAAK6I,IAEL7I,EAAKua,EAAc,WACjB3Y,KAAMA,EACNsR,IAAK/C,IAEPzO,GAAYA,KAEdqd,QAAS,SAAiBxb,GACxBvD,EAAKmL,EAAU,QAAS,mCAAoC5H,GAExDA,EAAMqY,SACR5b,EAAKgf,GAAiBzb,EAAMqY,SAG9B5b,EAAKua,EAAc,WACjB3Y,KAAMA,EACNsR,IAAK/C,IAEP5M,EAAQA,GAAS,GAAI1C,OAAM,sDAC3Ba,GAAYA,EAAS6B,QAK3B0b,GAAc,SAASC,GAErB,GAAI/O,GAAM+O,EAAK/O,IAAM,IAAMpG,EAAUmV,EAAKV,MAEtCW,EAAmB,KACnBC,IAUJ,IARIF,EAAKhU,QAAQlE,UACfmY,EAAmBlf,KAAKof,GAAcH,EAAKhU,QAAQlE,UAGjDkY,EAAKhU,QAAQoU,kBACfF,EAA2Bnf,KAAKof,GAAcH,EAAKhU,QAAQoU,kBAGzDhV,IAAiB,CACnB8U,EAAyBhM,KAAO1N,EAAUwZ,EAAKtd,KAE/C,IAAI2d,GAAsB7V,KAAgBzJ,KAAKyH,GAC3C8X,EAAe9V,EAAY6V,EAAqBH,EAMpD,OAJID,KACFK,EAAaxY,QAAUmY,GAGlB1Y,EACJgZ,MAAMtP,EAAKqP,GACXpH,KAAK,SAASC,GACb,GAAIA,EAASqH,GACXR,EAAKJ,WAAaI,EAAKJ,gBAClB,CACL,GAAIvb,GAAQ,GAAI1C,OAAM,sBAAwBwX,EAAST,OAGvDrU,GAAMqY,QAAUvD,EAChB6G,EAAKH,SAAWG,EAAKH,QAAQxb,MAGhC,SAAS,WACR2b,EAAKH,SACHG,EAAKH,QAAQ,GAAIle,OAAM,6CAI/B,GAAI+a,GAAUnV,EAAQ2Q,gBAAkB,GAAI3Q,GAAQ2Q,cACpD,IAAKwE,EAAL,CAGA,GAAI+D,GAAU,mBAAqB/D,IAAqC,mBAAnBgE,eAEhDD,KAED,mBAAqB/D,GACvBA,EAAQ7D,mBAAqB,WAC3B,GAA2B,IAAvB6D,EAAQjE,WAEL,GAAuB,MAAnBiE,EAAQhE,OACjBsH,EAAKJ,WAAaI,EAAKJ,gBAClB,IAAII,EAAKH,QAAS,CACvB,GAAIzI,GAAM,GAAIzV,OAAM,sBAAwB+a,EAAQhE,OACpDtB,GAAIsF,QAAUA,EACdsD,EAAKH,QAAQzI,MAIjBsF,EAAU,GAAIgE,gBAGdzP,EAAMA,EAAI0P,QAAQ,WAAY,IAG1BX,EAAKJ,YACPlD,EAAQkE,OAASZ,EAAKJ,WAEpBI,EAAKH,UACPnD,EAAQmE,QAAU,WAChB,GAAIzJ,GAAM,GAAIzV,OAAM,oCACpByV,GAAIsF,QAAUA,EACdsD,EAAKH,QAAQzI,MAKnBsF,EAAQoE,KAAK,OAAQ7P,GAEjBgP,GACF1V,EAAK0V,EAAkB,SAAS9T,EAAKC,GACnCsQ,EAAQqE,iBAAiB5U,EAAKC,KAIlCsQ,EAAQsE,KAAKxa,EAAUwZ,EAAKtd,UAG9Bue,GAAe,SAASC,GACtB,GAAIC,KAEJ,KAAK,GAAIhV,KAAO+U,GACd,GAAIA,EAAKlK,eAAe7K,GAAM,CAC5B,GAAIC,GAAQ8U,EAAK/U,EACjBgV,GAAUhV,GAAwB,kBAAVC,GAAuBA,IAAUA,EAI7D,MAAO+U,IAGTC,EAAW,SAASxe,GAGhB7B,KAAKkI,EAAwBrG,KAC5B7B,KAAK+K,OAAS/K,KAAKsG,EAAeyE,QAGnCjG,SAASpB,UAAUqB,MAAMhE,KACvBf,KAAKkI,EAAwBrG,GAC7B7B,KAAKiI,KACFvD,MAAM3D,KAAK4D,UAAW,KAK/B2b,EAAe,SAASlV,EAAKmC,GACvB5H,EAAY4H,SACPvN,MAAKqG,EAAe+E,GAE3BpL,KAAKqG,EAAe+E,GAAO3B,EAAYzJ,KAAKqG,EAAe+E,OAAYmC,KAM7EtN,EAAMyD,UAAU6c,QAAUtgB,EAAMyD,UAAUsN,eAC1C/Q,EAAMyD,UAAU8c,kBAAoBvgB,EAAMyD,UAAUgO,WAEpDjS,EAAOD,QAAUS,IAEdc,KAAKf,KAAuB,mBAAXF,QAAyBA,OAAyB,mBAATC,MAAuBA,KAAyB,mBAAXF,QAAyBA,aACxH4gB,GAAK,GAAGC,GAAK,GAAGzc,EAAI,EAAE/B,EAAI,EAAE8C,EAAI,EAAE2b,EAAI,IAAIxe,GAAG,SAASjB,EAAQzB,EAAOD,IACxE,SAAWM,GAOX,GAAI8gB,GAAmB1f,EAAQ,GAG3BsF,EACgB,mBAAX3G,QACHA,OACkB,mBAAXC,GAAyBA,EAAyB,mBAATC,MAAuBA,QACzE8gB,EAASra,EAAQvG,MAEjBA,EAAQ,GAAI2gB,EAQhB3gB,GAAM6gB,WAAa,WAEjB,MADAta,GAAQvG,MAAQ4gB,EACT5gB,GAGTA,EAAMoS,YAEN5S,EAAOD,QAAUS,EAoCjBR,EAAOD,QAAQuhB,OAASH,IAErB7f,KAAKf,KAAuB,mBAAXF,QAAyBA,OAAyB,mBAATC,MAAuBA,KAAyB,mBAAXF,QAAyBA,aACxHoF,EAAI,IAAID,GAAG,SAAS9D,EAAQzB,EAAOD,IACtC,SAAWM,GAQX,QAASqJ,GAAS6X,GAChB,MAAuB,gBAATA,IAA8B,OAATA,EAKrC,QAAS9X,GAAQmC,GACf,OAAQ5H,OAAOC,UAAUC,SAAS5C,KAAKsK,IACrC,IAAK,iBACH,OAAO,CACT,KAAK,qBACH,OAAO,CACT,KAAK,wBACH,OAAO,CACT,SACE,MAAOA,aAAiBzK,QAI9B,QAASmI,GAAasC,GACpB,MAAiD,wBAA1C5H,OAAOC,UAAUC,SAAS5C,KAAKsK,GAGxC,QAASrC,GAAWqC,GAClB,MAAiD,sBAA1C5H,OAAOC,UAAUC,SAAS5C,KAAKsK,GAGxC,QAASpC,GAAeoC,GACtB,MAAiD,0BAA1C5H,OAAOC,UAAUC,SAAS5C,KAAKsK,GAGxC,QAAS1F,GAAYqb,GACnB,MAAgB,UAATA,EAGT,QAAS1b,GAAW0b,GAClB,MAAuB,kBAATA,GAGhB,QAAS5X,GAAc4X,GACrB,MAAgD,oBAAzCvd,OAAOC,UAAUC,SAAS5C,KAAKigB,GAGxC,QAAS3X,GAAS2X,GAChB,MAAgD,oBAAzCvd,OAAOC,UAAUC,SAAS5C,KAAKigB,GAGxC,QAAS1X,GAAQ0X,GACf,MAAgD,mBAAzCvd,OAAOC,UAAUC,SAAS5C,KAAKigB,GAGxC,QAASzX,GAAcyX,GACrB,IAAK5X,EAAc4X,GAAO,OAAO,CAEjC,KAAK,GAAI/M,KAAK+M,GACZ,GAAIA,EAAK/K,eAAehC,GACtB,OAAO,CAGX,QAAO,EAGT,QAASgN,KACP,IAEE,MADA,IAAIC,YAAW,KACR,EACP,MAAOhhB,GACP,OAAO,GAIX,QAASihB,KACP,IAEE,MADA,IAAIC,UAAS,KACN,EACP,MAAOlhB,GACP,OAAO,GAIX,QAASmhB,KACP,IAEE,MADA,IAAIC,cAAa,KACV,EACP,MAAOphB,GACP,OAAO,GAIX,QAASmK,KACP,KAAM,SAAW7D,IAAU,OAAO,CAElC,KAIE,MAHA,IAAI+a,SACJ,GAAItJ,SAAQ,IACZ,GAAIuJ,WACG,EACP,MAAOthB,GACP,OAAO,GAQX,QAAS2H,KACP,IAAKwC,IAAiB,OAAO,CAE7B,KAKE,MAHA,IAAI4N,SAAQ,cACVrQ,eAAgB,YAEX,EACP,MAAO1H,GACP,OAAO,GAIX,QAASuhB,KACP,MAAwC,kBAA1BC,uBAGhB,QAASC,GAAgBlgB,GACvB,QAASmQ,GAAajQ,EAAM0D,GAC1B,GAAIuc,GAAiBngB,EAASE,IAASA,CACvC,OAAI0D,GACKA,EAASuc,IAAmBA,EAE9BA,EAGT,MAAOhQ,GAGT,QAASpI,GAAKgH,EAAK/O,GACjB,GAAId,GAAGkX,CAEP,IAAIlS,EAAY6K,EAAIxP,QAClB,IAAKL,IAAK6P,GACJ5G,EAAO4G,EAAK7P,IACdc,EAASV,KAAK,KAAMJ,EAAG6P,EAAI7P,QAK/B,IADAkX,EAAIrH,EAAIxP,OAEN,IAAKL,EAAI,EAAGA,EAAIkX,EAAGlX,IACjBc,EAASV,KAAK,KAAMJ,EAAG6P,EAAI7P,IAMnC,QAAS8I,GAAYoY,EAAMC,GACzB,MAAKA,IAGLtY,EAAKsY,EAAM,SAAS1W,EAAKC,GACvBwW,EAAKzW,GAAOC,IAEPwW,GALEA,EAgBX,QAASlY,GAAa6G,GACpB,QAAK/M,OAAOse,UAGLte,OAAOse,SAASvR,GAGzB,QAAS9G,GAASmQ,EAAKpO,GACrB,GAAmB,gBAARA,GACT,KAAM,IAAI7K,OAAM,yDAElB,OAAmB,gBAARiZ,IAA4B,IAARpO,EACtBoO,EAEFA,EAAI7Y,QAAUyK,EAAMoO,EAAMA,EAAI7M,OAAO,EAAGvB,GAAO,IAUxD,QAAS7B,GAAOoY,EAAQ5W,GACtB,MAAO3H,QAAOC,UAAUuS,eAAelV,KAAKihB,EAAQ5W,GAGtD,QAASvB,GAAWoY,GAQlB,IALA,GAGEC,GAHEC,KACFxhB,EAAI,EACJyhB,EAAMH,EAASjhB,OAGVL,EAAIyhB,EAAKzhB,IACduhB,EAAUD,EAASthB,GACf0I,EAAS6Y,GAGXC,EAAQ3gB,KAAK0gB,EAAQtC,QAAQ,8BAA+B,SACnDsC,GAAWA,EAAQG,QAE5BF,EAAQ3gB,KAAK0gB,EAAQG,OAIzB,OAAO,IAAIC,QAAOH,EAAQI,KAAK,KAAM,KAGvC,QAASzY,GAAUvJ,GACjB,GAAIiiB,KAIJ,OAHAhZ,GAAKjJ,EAAG,SAAS6K,EAAKC,GACpBmX,EAAMhhB,KAAKkR,mBAAmBtH,GAAO,IAAMsH,mBAAmBrH,MAEzDmX,EAAMD,KAAK,KAMpB,QAASpY,GAAS+F,GAChB,GAAmB,gBAARA,GAAkB,QAC7B,IAAIuS,GAAQvS,EAAIuS,MAAM,kEAGlBC,EAAQD,EAAM,IAAM,GACpBE,EAAWF,EAAM,IAAM,EAC3B,QACEtN,SAAUsN,EAAM,GAChBrN,KAAMqN,EAAM,GACZ3V,KAAM2V,EAAM,GACZpN,SAAUoN,EAAM,GAAKC,EAAQC,GAGjC,QAAS5Y,KACP,GAAI6Y,GAASpc,EAAQoc,QAAUpc,EAAQqc,QAEvC,KAAKld,EAAYid,IAAWA,EAAOE,gBAAiB,CAGlD,GAAIC,GAAM,GAAIC,aAAY,EAC1BJ,GAAOE,gBAAgBC,GAGvBA,EAAI,GAAe,KAATA,EAAI,GAAc,MAE5BA,EAAI,GAAe,MAATA,EAAI,GAAe,KAE7B,IAAIE,GAAM,SAASC,GAEjB,IADA,GAAIC,GAAID,EAAIvf,SAAS,IACdwf,EAAEniB,OAAS,GAChBmiB,EAAI,IAAMA,CAEZ,OAAOA,GAGT,OACEF,GAAIF,EAAI,IACRE,EAAIF,EAAI,IACRE,EAAIF,EAAI,IACRE,EAAIF,EAAI,IACRE,EAAIF,EAAI,IACRE,EAAIF,EAAI,IACRE,EAAIF,EAAI,IACRE,EAAIF,EAAI,IAIV,MAAO,mCAAmCnD,QAAQ,QAAS,SAASwD,GAClE,GAAI/iB,GAAqB,GAAhBmL,KAAKqS,SAAiB,EAC7BsF,EAAU,MAANC,EAAY/iB,EAAS,EAAJA,EAAW,CAClC,OAAO8iB,GAAExf,SAAS,MAYxB,QAASqG,GAAiBqZ,GAWxB,IATA,GAOEC,GAPEC,EAAsB,EACxBC,EAAiB,GACjBC,KACAC,EAAS,EACTtB,EAAM,EACNuB,EAAY,MACZC,EAAYD,EAAU3iB,OAGjBqiB,GAAQK,IAAWH,IACxBD,EAAUO,EAAoBR,KAMhB,SAAZC,GACCI,EAAS,GAAKtB,EAAMqB,EAAIziB,OAAS4iB,EAAYN,EAAQtiB,QAAUwiB,KAKlEC,EAAIjiB,KAAK8hB,GAETlB,GAAOkB,EAAQtiB,OACfqiB,EAAOA,EAAKS,UAGd,OAAOL,GAAIpT,UAAUkS,KAAKoB,GAS5B,QAASE,GAAoBR,GAC3B,GACEU,GACAC,EACA5Y,EACA6Y,EACAtjB,EALE8iB,IAOJ,KAAKJ,IAASA,EAAK7O,QACjB,MAAO,EAST,IANAiP,EAAIjiB,KAAK6hB,EAAK7O,QAAQR,eAClBqP,EAAK3c,IACP+c,EAAIjiB,KAAK,IAAM6hB,EAAK3c,IAGtBqd,EAAYV,EAAKU,UACbA,GAAa1a,EAAS0a,GAExB,IADAC,EAAUD,EAAUrZ,MAAM,OACrB/J,EAAI,EAAGA,EAAIqjB,EAAQhjB,OAAQL,IAC9B8iB,EAAIjiB,KAAK,IAAMwiB,EAAQrjB,GAG3B,IAAIujB,IAAiB,OAAQ,OAAQ,QAAS,MAC9C,KAAKvjB,EAAI,EAAGA,EAAIujB,EAAcljB,OAAQL,IACpCyK,EAAM8Y,EAAcvjB,GACpBsjB,EAAOZ,EAAKc,aAAa/Y,GACrB6Y,GACFR,EAAIjiB,KAAK,IAAM4J,EAAM,KAAO6Y,EAAO,KAGvC,OAAOR,GAAIlB,KAAK,IAMlB,QAAS6B,GAAgB3jB,EAAG4jB,GAC1B,WAAY5jB,IAAM4jB,GAMpB,QAASC,GAAgB7jB,EAAG4jB,GAC1B,MAAO1e,GAAYlF,IAAMkF,EAAY0e,GAMvC,QAASpa,GAAgBsF,EAAKgV,GAC5B,OAAIH,EAAgB7U,EAAKgV,KAEzBhV,EAAMA,EAAIiM,OAAO,GACjB+I,EAAMA,EAAI/I,OAAO,GAEbjM,EAAImH,OAAS6N,EAAI7N,MAAQnH,EAAIlE,QAAUkZ,EAAIlZ,SAG3CiZ,EAAgB/U,EAAIL,WAAYqV,EAAIrV,aAEjChF,EAAiBqF,EAAIL,WAAYqV,EAAIrV,cAM9C,QAAShF,GAAiBsa,EAAQC,GAChC,GAAIL,EAAgBI,EAAQC,GAAS,OAAO,CAE5C,IAAIC,GAAUF,EAAOrU,OACjBwU,EAAUF,EAAOtU,MAGrB,IAAIuU,EAAQ1jB,SAAW2jB,EAAQ3jB,OAAQ,OAAO,CAI9C,KAAK,GADDP,GAAG4jB,EACE1jB,EAAI,EAAGA,EAAI+jB,EAAQ1jB,OAAQL,IAGlC,GAFAF,EAAIikB,EAAQ/jB,GACZ0jB,EAAIM,EAAQhkB,GAEVF,EAAEua,WAAaqJ,EAAErJ,UACjBva,EAAE+Z,SAAW6J,EAAE7J,QACf/Z,EAAEya,QAAUmJ,EAAEnJ,OACdza,EAAE,cAAgB4jB,EAAE,YAEpB,OAAO,CAEX,QAAO,EAUT,QAASja,GAAKoG,EAAK5N,EAAMgiB,EAAaC,GACpC,GAAW,MAAPrU,EAAJ,CACA,GAAImF,GAAOnF,EAAI5N,EACf4N,GAAI5N,GAAQgiB,EAAYjP,GACxBnF,EAAI5N,GAAMiL,GAAY,EACtB2C,EAAI5N,GAAMoL,EAAW2H,EACjBkP,GACFA,EAAMrjB,MAAMgP,EAAK5N,EAAM+S,KAU3B,QAAS/Q,GAASkgB,EAAOC,GACvB,IAAKzb,EAAQwb,GAAQ,MAAO,EAI5B,KAAK,GAFDE,MAEKrkB,EAAI,EAAGA,EAAImkB,EAAM9jB,OAAQL,IAChC,IACEqkB,EAAOxjB,KAAKyjB,OAAOH,EAAMnkB,KACzB,MAAOT,GACP8kB,EAAOxjB,KAAK,gCAIhB,MAAOwjB,GAAOzC,KAAKwC,GASrB,QAASG,GAAW7Z,GAClB,QAAS8Z,UAAU9Z,GAAOX,MAAM,SAAS1J,OAG3C,QAASokB,GAAS/Z,GAChB,MAAO6Z,GAAW1f,KAAKC,UAAU4F,IAGnC,QAASga,GAAeha,GACtB,GAAqB,gBAAVA,GAAoB,CAC7B,GAAIia,GAAY,EAChB,OAAO5b,GAAS2B,EAAOia,GAClB,GACY,gBAAVja,IACU,iBAAVA,IACU,mBAAVA,GAEP,MAAOA,EAGT,IAAIqL,GAAOjT,OAAOC,UAAUC,SAAS5C,KAAKsK,EAG1C,OAAa,oBAATqL,EAAmC,WAC1B,mBAATA,EAAkC,UACzB,sBAATA,EACKrL,EAAMzI,KAAO,cAAgByI,EAAMzI,KAAO,IAAM,aAElDyI,EAGT,QAASka,GAAgBla,EAAOma,GAC9B,MAAc,KAAVA,EAAoBH,EAAeha,GAEnCjC,EAAciC,GACT5H,OAAOkM,KAAKtE,GAAOoa,OAAO,SAASC,EAAKta,GAE7C,MADAsa,GAAIta,GAAOma,EAAgBla,EAAMD,GAAMoa,EAAQ,GACxCE,OAEA7P,MAAMvM,QAAQ+B,GAChBA,EAAMsa,IAAI,SAASC,GACxB,MAAOL,GAAgBK,EAAKJ,EAAQ,KAIjCH,EAAeha,GAGxB,QAASd,GAAmByE,EAAIwW,EAAOK,GACrC,IAAKzc,EAAc4F,GAAK,MAAOA,EAE/BwW,GAAyB,gBAAVA,GAAqBM,EAAgCN,EACpEK,EAA2B,gBAAVL,GAAqBO,EAA+BF,CAErE,IAAIG,GAAaT,EAAgBvW,EAAIwW,EAErC,OAAIJ,GAAS3f,EAAUugB,IAAeH,EAC7Btb,EAAmByE,EAAIwW,EAAQ,GAGjCQ,EAGT,QAAS1b,GAAwBqF,EAAM2V,GACrC,GAAoB,gBAAT3V,IAAqC,gBAATA,GAAmB,MAAOA,GAAKhM,UACtE,KAAKkS,MAAMvM,QAAQqG,GAAO,MAAO,EAKjC,IAHAA,EAAOA,EAAKsW,OAAO,SAAS7a,GAC1B,MAAsB,gBAARA,KAEI,IAAhBuE,EAAK3O,OAAc,MAAO,sBAG9B,IADAskB,EAAiC,gBAAdA,GAAyBY,EAA4BZ,EACpE3V,EAAK,GAAG3O,QAAUskB,EAAW,MAAO3V,GAAK,EAE7C,KAAK,GAAIwW,GAAWxW,EAAK3O,OAAQmlB,EAAW,EAAGA,IAAY,CACzD,GAAIH,GAAarW,EAAKjL,MAAM,EAAGyhB,GAAU5D,KAAK,KAC9C,MAAIyD,EAAWhlB,OAASskB,GACxB,MAAIa,KAAaxW,EAAK3O,OAAeglB,EAC9BA,EAAa,IAGtB,MAAO,GAGT,QAASxb,GAASsa,EAAOtd,GAcvB,QAAS4e,GAAeC,GACtB,MAAI/c,GAAQ+c,GACHA,EAAYV,IAAI,SAASC,GAC9B,MAAOQ,GAAeR,KAItBxc,EAAcid,GACT5iB,OAAOkM,KAAK0W,GAAaZ,OAAO,SAASC,EAAKY,GAMnD,MAJEZ,GAAIY,GADFC,EAAexW,KAAKuW,GACbE,EAEAJ,EAAeC,EAAYC,IAE/BZ,OAIJW,EA/BT,IAAK/c,EAAQ9B,IAAkB8B,EAAQ9B,IAAyC,IAAxBA,EAAaxG,OACnE,MAAO8jB,EAET,IAEI2B,GAFAF,EAAiB1c,EAAWrC,GAC5Bgf,EAAe,UAGnB,KACEC,EAAYjhB,KAAK+L,MAAM9L,EAAUqf,IACjC,MAAO4B,GACP,MAAO5B,GAwBT,MAAOsB,GAAeK,GA5lBxB,GAAIhhB,GAAYvE,EAAQ,IAEpBsF,EACgB,mBAAX3G,QACHA,OACkB,mBAAXC,GAAyBA,EAAyB,mBAATC,MAAuBA,QA0dzE+lB,EAAgC,EAEhCC,EAA+B,MAC/BG,EAA4B,EA6HhCzmB,GAAOD,SACL2J,SAAUA,EACVD,QAASA,EACTH,aAAcA,EACdC,WAAYA,EACZC,eAAgBA,EAChBtD,YAAaA,EACbL,WAAYA,EACZ8D,cAAeA,EACfC,SAAUA,EACVC,QAASA,EACTC,cAAeA,EACf0X,mBAAoBA,EACpBE,iBAAkBA,EAClBE,qBAAsBA,EACtBhX,cAAeA,EACfxC,uBAAwBA,EACxB4Z,8BAA+BA,EAC/BE,gBAAiBA,EACjBnY,KAAMA,EACNC,YAAaA,EACbC,SAAUA,EACVC,aAAcA,EACdC,OAAQA,EACRC,WAAYA,EACZC,UAAWA,EACXC,MAAOA,EACPC,iBAAkBA,EAClB6Z,oBAAqBA,EACrB5Z,gBAAiBA,EACjBC,iBAAkBA,EAClBC,SAAUA,EACVC,KAAMA,EACNxF,SAAUA,EACV2F,mBAAoBA,EACpBD,wBAAyBA,EACzBE,SAAUA,KAGTzJ,KAAKf,KAAuB,mBAAXF,QAAyBA,OAAyB,mBAATC,MAAuBA,KAAyB,mBAAXF,QAAyBA,aACxH4gB,GAAK,KAAKE,GAAG,SAASzf,EAAQzB,EAAOD,IACxC,SAAWM,GA+BX,QAAS6mB,KACP,MAAwB,mBAAb/b,WAAiD,MAArBA,SAASnC,SAAyB,GAClEmC,SAASnC,SAASE,KAG3B,QAASie,KACP,MAAwB,mBAAbhc,WAAiD,MAArBA,SAASnC,SAAyB,IAGpEmC,SAASnC,SAASoe,SACrBjc,SAASnC,SAASoe,OAChBjc,SAASnC,SAAS0M,SAClB,KACAvK,SAASnC,SAASqe,UACjBlc,SAASnC,SAASyR,KAAO,IAAMtP,SAASnC,SAASyR,KAAO,KAGtDtP,SAASnC,SAASoe,QA/C3B,GAAIxiB,GAAQnD,EAAQ,GAYhB2H,GACF7B,qBAAqB,EACrB+D,OAAO,GAILvE,EACgB,mBAAX3G,QACHA,OACkB,mBAAXC,GAAyBA,EAAyB,mBAATC,MAAuBA,QAGzEgnB,KAAYriB,MACZsiB,EAAmB,IAGnBC,EAAiB,yGA6DrBpe,GAASsD,OAAS,WAUhB,QAASC,GAAU8a,GACjBC,IACAC,EAAS5lB,KAAK0lB,GAOhB,QAASG,GAAYH,GACnB,IAAK,GAAIvmB,GAAIymB,EAASpmB,OAAS,EAAGL,GAAK,IAAKA,EACtCymB,EAASzmB,KAAOumB,GAClBE,EAASE,OAAO3mB,EAAG,GAQzB,QAAS4mB,KACPC,IACAJ,KAOF,QAASK,GAAerY,EAAOsY,GAC7B,GAAInM,GAAY,IAChB,KAAImM,GAAkB7e,EAAS7B,oBAA/B,CAGA,IAAK,GAAIrG,KAAKymB,GACZ,GAAIA,EAASnR,eAAetV,GAC1B,IACEymB,EAASzmB,GAAGoE,MAAM,MAAOqK,GAAOuK,OAAOoN,EAAOhmB,KAAK4D,UAAW,KAC9D,MAAOgjB,GACPpM,EAAYoM,EAKlB,GAAIpM,EACF,KAAMA,IAiBV,QAASqM,GAAsBlmB,EAAKwO,EAAK2X,EAAQC,EAAO9Y,GACtD,GAAII,GAAQ,KAERmM,EAAYlX,EAAM0E,aAAaiG,GAAMA,EAAG1L,MAAQ0L,EAEhD7K,EAAUE,EAAM0E,aAAarH,GAAOA,EAAIyC,QAAUzC,CAEtD,IAAIqmB,EACFlf,EAASwG,kBAAkB2Y,oCACzBD,EACA7X,EACA2X,EACA1jB,GAEF8jB,QACK,IAAI1M,GAAalX,EAAM6E,QAAQqS,GAMpCnM,EAAQvG,EAASwG,kBAAkBkM,GACnCkM,EAAerY,GAAO,OACjB,CACL,GAOI8Y,GAPAzf,GACFyH,IAAKA,EACL+K,KAAM4M,EACN1M,OAAQ2M,GAGNllB,EAAO6K,MAGX,IAAkC,uBAA3B9J,SAAS5C,KAAKoD,GAAgC,CACnD,GAAI+jB,GAAS/jB,EAAQse,MAAMwE,EACvBiB,KACFtlB,EAAOslB,EAAO,GACd/jB,EAAU+jB,EAAO,IAIrBzf,EAAS+E,KAAOwZ,EAEhB5X,GACExM,KAAMA,EACNuB,QAASA,EACT+L,IAAKyW,IACLvX,OAAQ3G,IAEVgf,EAAerY,GAAO,GAGxB,QAAI+Y,GACKA,EAAmBpjB,MAAM/E,KAAM2E,WAM1C,QAASwiB,KACHiB,IAGJD,EAAqB3hB,EAAQsZ,QAC7BtZ,EAAQsZ,QAAU8H,EAClBQ,GAA2B,GAG7B,QAASZ,KACFY,IAGL5hB,EAAQsZ,QAAUqI,EAClBC,GAA2B,EAC3BD,EAAqB1a,QAGvB,QAASwa,KACP,GAAII,GAAsBN,EACxBO,EAAYC,CACdA,GAAW,KACXR,EAAqB,KACrB7V,EAAgB,KAChBuV,EAAe1iB,MAAM,MAAOsjB,GAAqB,GAAO1O,OAAO2O,IAUjE,QAASnc,GAAO6C,EAAIwZ,GAClB,GAAI/jB,GAAOsiB,EAAOhmB,KAAK4D,UAAW,EAClC,IAAIojB,EAAoB,CACtB,GAAI7V,IAAkBlD,EACpB,MAEAiZ,KAIJ,GAAI7Y,GAAQvG,EAASwG,kBAAkBL,EAevC,IAdA+Y,EAAqB3Y,EACrB8C,EAAgBlD,EAChBuZ,EAAW9jB,EAMX6O,WAAW,WACLpB,IAAkBlD,GACpBiZ,KAED7Y,EAAMqZ,WAAa,IAAO,GAEzBD,KAAY,EACd,KAAMxZ,GA9LV,GA0DImZ,GAAoBC,EA1DpBhB,KACFmB,EAAW,KACXrW,EAAgB,KAChB6V,EAAqB,IAkMvB,OAHA5b,GAAOC,UAAYA,EACnBD,EAAOkb,YAAcA,EACrBlb,EAAO8B,UAAYsZ,EACZpb,KAsDTtD,EAASwG,kBAAoB,WA4C3B,QAASqZ,GAA+B1Z,GACtC,GAAwB,mBAAbA,GAAGI,OAA0BJ,EAAGI,MAA3C,CAiBA,IAAK,GALDuZ,GACAC,EACAC,EAZAvQ,EAAS,0IACTwQ,EAAQ,wHAGRC,EAAQ,6JAERC,EAAY,gDACZC,EAAa,gCACbC,EAAQla,EAAGI,MAAM1E,MAAM,MACvB0E,KAMKzO,GAFO,sBAAsBoZ,KAAK/K,EAAG7K,SAEjC,GAAG0T,EAAIqR,EAAMloB,OAAQL,EAAIkX,IAAKlX,EAAG,CAC5C,GAAKioB,EAAQtQ,EAAOyB,KAAKmP,EAAMvoB,IAAM,CACnC,GAAIwoB,GAAWP,EAAM,IAAqC,IAA/BA,EAAM,GAAGvR,QAAQ,UACxC+R,EAASR,EAAM,IAAmC,IAA7BA,EAAM,GAAGvR,QAAQ,OACtC+R,KAAWT,EAAWM,EAAWlP,KAAK6O,EAAM,OAE9CA,EAAM,GAAKD,EAAS,GACpBC,EAAM,GAAKD,EAAS,GACpBC,EAAM,GAAKD,EAAS,IAEtBE,GACE3Y,IAAMiZ,EAAsB,KAAXP,EAAM,GACvBpb,KAAMob,EAAM,IAAM5B,EAClBviB,KAAM0kB,GAAYP,EAAM,OACxB3N,KAAM2N,EAAM,IAAMA,EAAM,GAAK,KAC7BzN,OAAQyN,EAAM,IAAMA,EAAM,GAAK,UAE5B,IAAKA,EAAQE,EAAM/O,KAAKmP,EAAMvoB,IACnCkoB,GACE3Y,IAAK0Y,EAAM,GACXpb,KAAMob,EAAM,IAAM5B,EAClBviB,QACAwW,MAAO2N,EAAM,GACbzN,OAAQyN,EAAM,IAAMA,EAAM,GAAK,UAE5B,CAAA,KAAKA,EAAQG,EAAMhP,KAAKmP,EAAMvoB,KAsBnC,QArBA,IAAIyoB,GAASR,EAAM,IAAMA,EAAM,GAAGvR,QAAQ,aACtC+R,KAAWT,EAAWK,EAAUjP,KAAK6O,EAAM,MAE7CA,EAAM,GAAKD,EAAS,GACpBC,EAAM,GAAKD,EAAS,GACpBC,EAAM,GAAK,MACI,IAANjoB,GAAYioB,EAAM,IAAiC,mBAApB5Z,GAAGqa,eAK3Cja,EAAM,GAAG+L,OAASnM,EAAGqa,aAAe,GAEtCR,GACE3Y,IAAK0Y,EAAM,GACXpb,KAAMob,EAAM,IAAM5B,EAClBviB,KAAMmkB,EAAM,GAAKA,EAAM,GAAGle,MAAM,QAChCuQ,KAAM2N,EAAM,IAAMA,EAAM,GAAK,KAC7BzN,OAAQyN,EAAM,IAAMA,EAAM,GAAK,MAUnC,IAJKC,EAAQrb,MAAQqb,EAAQ5N,OAC3B4N,EAAQrb,KAAOwZ,GAGb6B,EAAQ3Y,KAAoC,UAA7B2Y,EAAQ3Y,IAAIlD,OAAO,EAAG,GAAgB,CAMvD,GAAIpB,GAAM,GAAIuL,eAKd,IAJAvL,EAAImU,KAAK,MAAO8I,EAAQ3Y,KAAK,GAC7BtE,EAAIqU,KAAK,MAGU,MAAfrU,EAAI+L,OAAgB,CACtB,GAAI0K,GAASzW,EAAI0d,cAAgB,EAIjCjH,GAASA,EAAO3d,WAGhB,IAAI6kB,GAAalH,EAAOI,MAAM,+BAG9B,IAAI8G,EAAY,CACd,GAAIC,GAAmBD,EAAW,EAIC,OAA/BC,EAAiBC,OAAO,KAC1BD,EAAmB5C,IAAsB4C,EAAiB9kB,MAAM,IAKlEmkB,EAAQ3Y,IAAMsZ,EAAiB9kB,MAAM,QAK3C0K,EAAM5N,KAAKqnB,GAGb,MAAKzZ,GAAMpO,QAKT4B,KAAMoM,EAAGpM,KACTuB,QAAS6K,EAAG7K,QACZ+L,IAAKyW,IACLvX,MAAOA,GAPA,MAwBX,QAAS4Y,GAAoC3N,EAAWnK,EAAK2X,EAAQ1jB,GACnE,GAAIulB,IACFxZ,IAAKA,EACL+K,KAAM4M,EAGR,IAAI6B,EAAQxZ,KAAOwZ,EAAQzO,KAAM;AAO/B,GANAZ,EAAUoO,YAAa,EAElBiB,EAAQlc,OACXkc,EAAQlc,KAAOwZ,GAGb3M,EAAUjL,MAAMpO,OAAS,GACvBqZ,EAAUjL,MAAM,GAAGc,MAAQwZ,EAAQxZ,IAAK,CAC1C,GAAImK,EAAUjL,MAAM,GAAG6L,OAASyO,EAAQzO,KACtC,OAAO,CACF,KACJZ,EAAUjL,MAAM,GAAG6L,MACpBZ,EAAUjL,MAAM,GAAG5B,OAASkc,EAAQlc,KAGpC,MADA6M,GAAUjL,MAAM,GAAG6L,KAAOyO,EAAQzO,MAC3B,EAOb,MAFAZ,GAAUjL,MAAMua,QAAQD,GACxBrP,EAAUuP,SAAU,GACb,EAKT,MAHEvP,GAAUoO,YAAa,GAGlB,EAYT,QAASoB,GAAsC7a,EAAIwW,GASjD,IACE,GALAoD,GACAkB,EALEC,EAAe,qEACjB3a,KACA4a,KACAC,GAAY,EAMRC,EAAOL,EAAsCM,OACjDD,IAASD,EACTC,EAAOA,EAAKC,OAEZ,GAAID,IAAS7a,GAAqB6a,IAASrhB,EAASsD,OAApD,CAkBA,GAbA2d,GACE5Z,IAAK,KACL1C,KAAMwZ,EACN/L,KAAM,KACNE,OAAQ,MAGN+O,EAAKtnB,KACPknB,EAAKtc,KAAO0c,EAAKtnB,MACPgmB,EAAQmB,EAAahQ,KAAKmQ,EAAKvmB,eACzCmmB,EAAKtc,KAAOob,EAAM,IAGK,mBAAdkB,GAAKtc,KACd,IACEsc,EAAKtc,KAAOob,EAAM9D,MAAMsF,UAAU,EAAGxB,EAAM9D,MAAMzN,QAAQ,MACzD,MAAOnX,IAGP8pB,EAAM,GAAKE,GACbD,GAAY,EAEZD,EAAM,GAAKE,IAAQ,EAGrB9a,EAAM5N,KAAKsoB,GAGTtE,GAGFpW,EAAMkY,OAAO,EAAG9B,EAGlB,IAAI5U,IACFhO,KAAMoM,EAAGpM,KACTuB,QAAS6K,EAAG7K,QACZ+L,IAAKyW,IACLvX,MAAOA,EAQT,OANA4Y,GACEpX,EACA5B,EAAGqb,WAAarb,EAAGsb,SACnBtb,EAAGiM,MAAQjM,EAAGub,WACdvb,EAAG7K,SAAW6K,EAAGwb,aAEZ5Z,EAQT,QAASvB,GAAkBL,EAAIwW,GAC7B,GAAIpW,GAAQ,IACZoW,GAAiB,MAATA,EAAgB,GAAKA,CAE7B,KAEE,GADApW,EAAQsZ,EAA+B1Z,GAErC,MAAOI,GAET,MAAOlP,GACP,GAAI2I,EAASkC,MACX,KAAM7K,GAIV,IAEE,GADAkP,EAAQya,EAAsC7a,EAAIwW,EAAQ,GAExD,MAAOpW,GAET,MAAOlP,GACP,GAAI2I,EAASkC,MACX,KAAM7K,GAGV,OACE0C,KAAMoM,EAAGpM,KACTuB,QAAS6K,EAAG7K,QACZ+L,IAAKyW,KAOT,MAHAtX,GAAkB2Y,oCAAsCA,EACxD3Y,EAAkBqZ,+BAAiCA,EAE5CrZ,KAGT5P,EAAOD,QAAUqJ,IAEd9H,KAAKf,KAAuB,mBAAXF,QAAyBA,OAAyB,mBAATC,MAAuBA,KAAyB,mBAAXF,QAAyBA,aACxHmF,EAAI,IAAIyb,IAAI,SAASvf,EAAQzB,EAAOD,GAevC,QAAS6X,GAAQoT,EAAUC,GACzB,IAAK,GAAI/pB,GAAI,EAAGA,EAAI8pB,EAASzpB,SAAUL,EACrC,GAAI8pB,EAAS9pB,KAAO+pB,EAAQ,MAAO/pB,EAErC,UAGF,QAAS8E,GAAU+K,EAAKma,EAAUC,EAAQC,GACxC,MAAOrlB,MAAKC,UAAU+K,EAAKsa,EAAWH,EAAUE,GAAgBD,GAIlE,QAASG,GAAe1f,GACtB,GAAIgL,IAEFjH,MAAO/D,EAAM+D,MACbjL,QAASkH,EAAMlH,QACfvB,KAAMyI,EAAMzI,KAGd,KAAK,GAAIjC,KAAK0K,GACR5H,OAAOC,UAAUuS,eAAelV,KAAKsK,EAAO1K,KAC9C0V,EAAI1V,GAAK0K,EAAM1K,GAInB,OAAO0V,GAGT,QAASyU,GAAWH,EAAUE,GAC5B,GAAIzb,MACAO,IAWJ,OATqB,OAAjBkb,IACFA,EAAgB,SAASzf,EAAKC,GAC5B,MAAI+D,GAAM,KAAO/D,EACR,eAEF,eAAiBsE,EAAKjL,MAAM,EAAG2S,EAAQjI,EAAO/D,IAAQkX,KAAK,KAAO,MAItE,SAASnX,EAAKC,GACnB,GAAI+D,EAAMpO,OAAS,EAAG,CACpB,GAAIgqB,GAAU3T,EAAQjI,EAAOpP,OAC5BgrB,EAAU5b,EAAMkY,OAAO0D,EAAU,GAAK5b,EAAM5N,KAAKxB,OACjDgrB,EAAUrb,EAAK2X,OAAO0D,EAASC,EAAAA,EAAU7f,GAAOuE,EAAKnO,KAAK4J,IAEtDiM,EAAQjI,EAAO/D,KAClBA,EAAQwf,EAAc9pB,KAAKf,KAAMoL,EAAKC,QAGxC+D,GAAM5N,KAAK6J,EAGb,OAAmB,OAAZsf,EACHtf,YAAiBzK,OAAQmqB,EAAe1f,GAASA,EACjDsf,EAAS5pB,KAAKf,KAAMoL,EAAKC,IA5DjC7L,EAAUC,EAAOD,QAAUiG,EAC3BjG,EAAQ0rB,aAAeJ,OA+DjBpK,IAAI,SAASxf,EAAQzB,EAAOD,GAwBlC,QAAS2rB,GAAQC,EAAG7O,GAClB,GAAI8O,IAAW,MAAJD,IAAmB,MAAJ7O,GACtB+O,GAAOF,GAAK,KAAO7O,GAAK,KAAO8O,GAAO,GAC1C,OAAQC,IAAO,GAAa,MAAND,EAMxB,QAASE,GAAcrI,EAAKsI,GAC1B,MAAQtI,IAAOsI,EAAQtI,IAAS,GAAKsI,EAMvC,QAASC,GAAOC,EAAGjrB,EAAG4jB,EAAG+G,EAAG9qB,EAAGH,GAC7B,MAAOgrB,GAAQI,EAAcJ,EAAQA,EAAQ1qB,EAAGirB,GAAIP,EAAQC,EAAGjrB,IAAKG,GAAI+jB,GAE1E,QAASsH,GAAMlrB,EAAG4jB,EAAGjB,EAAGwI,EAAGR,EAAG9qB,EAAGH,GAC/B,MAAOsrB,GAAQpH,EAAIjB,GAAOiB,EAAIuH,EAAInrB,EAAG4jB,EAAG+G,EAAG9qB,EAAGH,GAEhD,QAAS0rB,GAAMprB,EAAG4jB,EAAGjB,EAAGwI,EAAGR,EAAG9qB,EAAGH,GAC/B,MAAOsrB,GAAQpH,EAAIuH,EAAMxI,GAAKwI,EAAInrB,EAAG4jB,EAAG+G,EAAG9qB,EAAGH,GAEhD,QAAS2rB,GAAMrrB,EAAG4jB,EAAGjB,EAAGwI,EAAGR,EAAG9qB,EAAGH,GAC/B,MAAOsrB,GAAOpH,EAAIjB,EAAIwI,EAAGnrB,EAAG4jB,EAAG+G,EAAG9qB,EAAGH,GAEvC,QAAS4rB,GAAMtrB,EAAG4jB,EAAGjB,EAAGwI,EAAGR,EAAG9qB,EAAGH,GAC/B,MAAOsrB,GAAOrI,GAAKiB,GAAKuH,GAAInrB,EAAG4jB,EAAG+G,EAAG9qB,EAAGH,GAM1C,QAAS6rB,GAAQZ,EAAGhJ,GAElBgJ,EAAEhJ,GAAO,IAAM,KAASA,EAAM,GAC9BgJ,GAAKhJ,EAAM,KAAQ,GAAM,GAAK,IAAMA,CAEpC,IAAIzhB,GACAsrB,EACAC,EACAC,EACAC,EACA3rB,EAAI,WACJ4jB,aACAjB,cACAwI,EAAI,SAER,KAAKjrB,EAAI,EAAGA,EAAIyqB,EAAEpqB,OAAQL,GAAK,GAC7BsrB,EAAOxrB,EACPyrB,EAAO7H,EACP8H,EAAO/I,EACPgJ,EAAOR,EAEPnrB,EAAIkrB,EAAMlrB,EAAG4jB,EAAGjB,EAAGwI,EAAGR,EAAEzqB,GAAI,cAC5BirB,EAAID,EAAMC,EAAGnrB,EAAG4jB,EAAGjB,EAAGgI,EAAEzqB,EAAI,GAAI,eAChCyiB,EAAIuI,EAAMvI,EAAGwI,EAAGnrB,EAAG4jB,EAAG+G,EAAEzqB,EAAI,GAAI,GAAI,WACpC0jB,EAAIsH,EAAMtH,EAAGjB,EAAGwI,EAAGnrB,EAAG2qB,EAAEzqB,EAAI,GAAI,gBAChCF,EAAIkrB,EAAMlrB,EAAG4jB,EAAGjB,EAAGwI,EAAGR,EAAEzqB,EAAI,GAAI,cAChCirB,EAAID,EAAMC,EAAGnrB,EAAG4jB,EAAGjB,EAAGgI,EAAEzqB,EAAI,GAAI,GAAI,YACpCyiB,EAAIuI,EAAMvI,EAAGwI,EAAGnrB,EAAG4jB,EAAG+G,EAAEzqB,EAAI,GAAI,gBAChC0jB,EAAIsH,EAAMtH,EAAGjB,EAAGwI,EAAGnrB,EAAG2qB,EAAEzqB,EAAI,GAAI,cAChCF,EAAIkrB,EAAMlrB,EAAG4jB,EAAGjB,EAAGwI,EAAGR,EAAEzqB,EAAI,GAAI,EAAG,YACnCirB,EAAID,EAAMC,EAAGnrB,EAAG4jB,EAAGjB,EAAGgI,EAAEzqB,EAAI,GAAI,gBAChCyiB,EAAIuI,EAAMvI,EAAGwI,EAAGnrB,EAAG4jB,EAAG+G,EAAEzqB,EAAI,IAAK,WACjC0jB,EAAIsH,EAAMtH,EAAGjB,EAAGwI,EAAGnrB,EAAG2qB,EAAEzqB,EAAI,IAAK,gBACjCF,EAAIkrB,EAAMlrB,EAAG4jB,EAAGjB,EAAGwI,EAAGR,EAAEzqB,EAAI,IAAK,EAAG,YACpCirB,EAAID,EAAMC,EAAGnrB,EAAG4jB,EAAGjB,EAAGgI,EAAEzqB,EAAI,IAAK,cACjCyiB,EAAIuI,EAAMvI,EAAGwI,EAAGnrB,EAAG4jB,EAAG+G,EAAEzqB,EAAI,IAAK,gBACjC0jB,EAAIsH,EAAMtH,EAAGjB,EAAGwI,EAAGnrB,EAAG2qB,EAAEzqB,EAAI,IAAK,GAAI,YAErCF,EAAIorB,EAAMprB,EAAG4jB,EAAGjB,EAAGwI,EAAGR,EAAEzqB,EAAI,GAAI,cAChCirB,EAAIC,EAAMD,EAAGnrB,EAAG4jB,EAAGjB,EAAGgI,EAAEzqB,EAAI,GAAI,eAChCyiB,EAAIyI,EAAMzI,EAAGwI,EAAGnrB,EAAG4jB,EAAG+G,EAAEzqB,EAAI,IAAK,GAAI,WACrC0jB,EAAIwH,EAAMxH,EAAGjB,EAAGwI,EAAGnrB,EAAG2qB,EAAEzqB,GAAI,eAC5BF,EAAIorB,EAAMprB,EAAG4jB,EAAGjB,EAAGwI,EAAGR,EAAEzqB,EAAI,GAAI,cAChCirB,EAAIC,EAAMD,EAAGnrB,EAAG4jB,EAAGjB,EAAGgI,EAAEzqB,EAAI,IAAK,EAAG,UACpCyiB,EAAIyI,EAAMzI,EAAGwI,EAAGnrB,EAAG4jB,EAAG+G,EAAEzqB,EAAI,IAAK,eACjC0jB,EAAIwH,EAAMxH,EAAGjB,EAAGwI,EAAGnrB,EAAG2qB,EAAEzqB,EAAI,GAAI,eAChCF,EAAIorB,EAAMprB,EAAG4jB,EAAGjB,EAAGwI,EAAGR,EAAEzqB,EAAI,GAAI,EAAG,WACnCirB,EAAIC,EAAMD,EAAGnrB,EAAG4jB,EAAGjB,EAAGgI,EAAEzqB,EAAI,IAAK,eACjCyiB,EAAIyI,EAAMzI,EAAGwI,EAAGnrB,EAAG4jB,EAAG+G,EAAEzqB,EAAI,GAAI,eAChC0jB,EAAIwH,EAAMxH,EAAGjB,EAAGwI,EAAGnrB,EAAG2qB,EAAEzqB,EAAI,GAAI,GAAI,YACpCF,EAAIorB,EAAMprB,EAAG4jB,EAAGjB,EAAGwI,EAAGR,EAAEzqB,EAAI,IAAK,eACjCirB,EAAIC,EAAMD,EAAGnrB,EAAG4jB,EAAGjB,EAAGgI,EAAEzqB,EAAI,GAAI,aAChCyiB,EAAIyI,EAAMzI,EAAGwI,EAAGnrB,EAAG4jB,EAAG+G,EAAEzqB,EAAI,GAAI,GAAI,YACpC0jB,EAAIwH,EAAMxH,EAAGjB,EAAGwI,EAAGnrB,EAAG2qB,EAAEzqB,EAAI,IAAK,gBAEjCF,EAAIqrB,EAAMrrB,EAAG4jB,EAAGjB,EAAGwI,EAAGR,EAAEzqB,EAAI,GAAI,WAChCirB,EAAIE,EAAMF,EAAGnrB,EAAG4jB,EAAGjB,EAAGgI,EAAEzqB,EAAI,GAAI,gBAChCyiB,EAAI0I,EAAM1I,EAAGwI,EAAGnrB,EAAG4jB,EAAG+G,EAAEzqB,EAAI,IAAK,GAAI,YACrC0jB,EAAIyH,EAAMzH,EAAGjB,EAAGwI,EAAGnrB,EAAG2qB,EAAEzqB,EAAI,IAAK,cACjCF,EAAIqrB,EAAMrrB,EAAG4jB,EAAGjB,EAAGwI,EAAGR,EAAEzqB,EAAI,GAAI,eAChCirB,EAAIE,EAAMF,EAAGnrB,EAAG4jB,EAAGjB,EAAGgI,EAAEzqB,EAAI,GAAI,GAAI,YACpCyiB,EAAI0I,EAAM1I,EAAGwI,EAAGnrB,EAAG4jB,EAAG+G,EAAEzqB,EAAI,GAAI,eAChC0jB,EAAIyH,EAAMzH,EAAGjB,EAAGwI,EAAGnrB,EAAG2qB,EAAEzqB,EAAI,IAAK,gBACjCF,EAAIqrB,EAAMrrB,EAAG4jB,EAAGjB,EAAGwI,EAAGR,EAAEzqB,EAAI,IAAK,EAAG,WACpCirB,EAAIE,EAAMF,EAAGnrB,EAAG4jB,EAAGjB,EAAGgI,EAAEzqB,GAAI,eAC5ByiB,EAAI0I,EAAM1I,EAAGwI,EAAGnrB,EAAG4jB,EAAG+G,EAAEzqB,EAAI,GAAI,eAChC0jB,EAAIyH,EAAMzH,EAAGjB,EAAGwI,EAAGnrB,EAAG2qB,EAAEzqB,EAAI,GAAI,GAAI,UACpCF,EAAIqrB,EAAMrrB,EAAG4jB,EAAGjB,EAAGwI,EAAGR,EAAEzqB,EAAI,GAAI,cAChCirB,EAAIE,EAAMF,EAAGnrB,EAAG4jB,EAAGjB,EAAGgI,EAAEzqB,EAAI,IAAK,eACjCyiB,EAAI0I,EAAM1I,EAAGwI,EAAGnrB,EAAG4jB,EAAG+G,EAAEzqB,EAAI,IAAK,GAAI,WACrC0jB,EAAIyH,EAAMzH,EAAGjB,EAAGwI,EAAGnrB,EAAG2qB,EAAEzqB,EAAI,GAAI,eAEhCF,EAAIsrB,EAAMtrB,EAAG4jB,EAAGjB,EAAGwI,EAAGR,EAAEzqB,GAAI,cAC5BirB,EAAIG,EAAMH,EAAGnrB,EAAG4jB,EAAGjB,EAAGgI,EAAEzqB,EAAI,GAAI,GAAI,YACpCyiB,EAAI2I,EAAM3I,EAAGwI,EAAGnrB,EAAG4jB,EAAG+G,EAAEzqB,EAAI,IAAK,gBACjC0jB,EAAI0H,EAAM1H,EAAGjB,EAAGwI,EAAGnrB,EAAG2qB,EAAEzqB,EAAI,GAAI,cAChCF,EAAIsrB,EAAMtrB,EAAG4jB,EAAGjB,EAAGwI,EAAGR,EAAEzqB,EAAI,IAAK,EAAG,YACpCirB,EAAIG,EAAMH,EAAGnrB,EAAG4jB,EAAGjB,EAAGgI,EAAEzqB,EAAI,GAAI,gBAChCyiB,EAAI2I,EAAM3I,EAAGwI,EAAGnrB,EAAG4jB,EAAG+G,EAAEzqB,EAAI,IAAK,aACjC0jB,EAAI0H,EAAM1H,EAAGjB,EAAGwI,EAAGnrB,EAAG2qB,EAAEzqB,EAAI,GAAI,gBAChCF,EAAIsrB,EAAMtrB,EAAG4jB,EAAGjB,EAAGwI,EAAGR,EAAEzqB,EAAI,GAAI,EAAG,YACnCirB,EAAIG,EAAMH,EAAGnrB,EAAG4jB,EAAGjB,EAAGgI,EAAEzqB,EAAI,IAAK,cACjCyiB,EAAI2I,EAAM3I,EAAGwI,EAAGnrB,EAAG4jB,EAAG+G,EAAEzqB,EAAI,GAAI,gBAChC0jB,EAAI0H,EAAM1H,EAAGjB,EAAGwI,EAAGnrB,EAAG2qB,EAAEzqB,EAAI,IAAK,GAAI,YACrCF,EAAIsrB,EAAMtrB,EAAG4jB,EAAGjB,EAAGwI,EAAGR,EAAEzqB,EAAI,GAAI,cAChCirB,EAAIG,EAAMH,EAAGnrB,EAAG4jB,EAAGjB,EAAGgI,EAAEzqB,EAAI,IAAK,gBACjCyiB,EAAI2I,EAAM3I,EAAGwI,EAAGnrB,EAAG4jB,EAAG+G,EAAEzqB,EAAI,GAAI,GAAI,WACpC0jB,EAAI0H,EAAM1H,EAAGjB,EAAGwI,EAAGnrB,EAAG2qB,EAAEzqB,EAAI,GAAI,eAEhCF,EAAI0qB,EAAQ1qB,EAAGwrB,GACf5H,EAAI8G,EAAQ9G,EAAG6H,GACf9I,EAAI+H,EAAQ/H,EAAG+I,GACfP,EAAIT,EAAQS,EAAGQ,EAEjB,QAAQ3rB,EAAG4jB,EAAGjB,EAAGwI,GAMnB,QAASS,GAAUvH,GACjB,GAAInkB,GACAqkB,EAAS,GACTsH,EAA0B,GAAfxH,EAAM9jB,MACrB,KAAKL,EAAI,EAAGA,EAAI2rB,EAAU3rB,GAAK,EAC7BqkB,GAAUC,OAAOsH,aAAczH,EAAMnkB,GAAK,KAAQA,EAAI,GAAO,IAE/D,OAAOqkB,GAOT,QAASwH,GAAU1H,GACjB,GAAInkB,GACAqkB,IAEJ,KADAA,GAAQF,EAAM9jB,QAAU,GAAK,GAAKyM,OAC7B9M,EAAI,EAAGA,EAAIqkB,EAAOhkB,OAAQL,GAAK,EAClCqkB,EAAOrkB,GAAK,CAEd,IAAI8rB,GAAyB,EAAf3H,EAAM9jB,MACpB,KAAKL,EAAI,EAAGA,EAAI8rB,EAAS9rB,GAAK,EAC5BqkB,EAAOrkB,GAAK,KAAiC,IAA1BmkB,EAAM4H,WAAW/rB,EAAI,KAAeA,EAAI,EAE7D,OAAOqkB,GAMT,QAAS2H,GAAQrsB,GACf,MAAO+rB,GAAUL,EAAQQ,EAAUlsB,GAAe,EAAXA,EAAEU,SAM3C,QAAS4rB,GAAYxhB,EAAKzJ,GACxB,GAAIhB,GAIAwf,EAHA0M,EAAOL,EAAUphB,GACjB0hB,KACAC,IAMJ,KAJAD,EAAK,IAAMC,EAAK,IAAMtf,OAClBof,EAAK7rB,OAAS,KAChB6rB,EAAOb,EAAQa,EAAmB,EAAbzhB,EAAIpK,SAEtBL,EAAI,EAAGA,EAAI,GAAIA,GAAK,EACvBmsB,EAAKnsB,GAAe,UAAVksB,EAAKlsB,GACfosB,EAAKpsB,GAAe,WAAVksB,EAAKlsB,EAGjB,OADAwf,GAAO6L,EAAQc,EAAKnT,OAAO6S,EAAU7qB,IAAQ,IAAoB,EAAdA,EAAKX,QACjDqrB,EAAUL,EAAQe,EAAKpT,OAAOwG,GAAO,MAM9C,QAAS6M,GAASlI,GAChB,GAEIsG,GACAzqB,EAHAssB,EAAS,mBACTjI,EAAS,EAGb,KAAKrkB,EAAI,EAAGA,EAAImkB,EAAM9jB,OAAQL,GAAK,EACjCyqB,EAAItG,EAAM4H,WAAW/rB,GACrBqkB,GAAUiI,EAAOxD,OAAQ2B,IAAM,EAAK,IAAQ6B,EAAOxD,OAAW,GAAJ2B,EAE5D,OAAOpG,GAMT,QAASkI,GAAapI,GACpB,MAAOqI,UAASza,mBAAmBoS,IAMrC,QAASsI,GAAO9sB,GACd,MAAOqsB,GAAQO,EAAa5sB,IAE9B,QAAS+sB,GAAO/sB,GACd,MAAO0sB,GAASI,EAAO9sB,IAEzB,QAASgtB,GAAWhH,EAAGsF,GACrB,MAAOgB,GAAYM,EAAa5G,GAAI4G,EAAatB,IAEnD,QAAS2B,GAAWjH,EAAGsF,GACrB,MAAOoB,GAASM,EAAWhH,EAAGsF,IAGhC,QAAS9iB,GAAI0kB,EAAQpiB,EAAKqiB,GACxB,MAAKriB,GAMAqiB,EAGEH,EAAWliB,EAAKoiB,GAFdD,EAAWniB,EAAKoiB,GANlBC,EAGEL,EAAOI,GAFLH,EAAOG,GAUpB/tB,EAAOD,QAAUsJ,YAEN,EAAE,EAAE,EAAE,IAAI","file":"raven.min.js"} \ No newline at end of file diff --git a/packages/raven-js/dist/console,require/raven.js b/packages/raven-js/dist/console,require/raven.js new file mode 100644 index 000000000000..49c0e7ce588b --- /dev/null +++ b/packages/raven-js/dist/console,require/raven.js @@ -0,0 +1,4062 @@ +/*! Raven.js 3.25.2 (30b6d4e) | github.com/getsentry/raven-js */ + +/* + * Includes TraceKit + * https://github.com/getsentry/TraceKit + * + * Copyright 2018 Matt Robenolt and other contributors + * Released under the BSD license + * https://github.com/getsentry/raven-js/blob/master/LICENSE + * + */ + +(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.Raven = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o captureException(string) => captureMessage(string) + if (initialCall && initialCall.func === 'Raven.captureException') { + initialCall = stack.stack[2]; + } + + var fileurl = (initialCall && initialCall.url) || ''; + + if ( + !!this._globalOptions.ignoreUrls.test && + this._globalOptions.ignoreUrls.test(fileurl) + ) { + return; + } + + if ( + !!this._globalOptions.whitelistUrls.test && + !this._globalOptions.whitelistUrls.test(fileurl) + ) { + return; + } + + if (this._globalOptions.stacktrace || (options && options.stacktrace)) { + // fingerprint on msg, not stack trace (legacy behavior, could be revisited) + data.fingerprint = data.fingerprint == null ? msg : data.fingerprint; + + options = objectMerge( + { + trimHeadFrames: 0 + }, + options + ); + // Since we know this is a synthetic trace, the top frame (this function call) + // MUST be from Raven.js, so mark it for trimming + // We add to the trim counter so that callers can choose to trim extra frames, such + // as utility functions. + options.trimHeadFrames += 1; + + var frames = this._prepareFrames(stack, options); + data.stacktrace = { + // Sentry expects frames oldest to newest + frames: frames.reverse() + }; + } + + // Make sure that fingerprint is always wrapped in an array + if (data.fingerprint) { + data.fingerprint = isArray(data.fingerprint) + ? data.fingerprint + : [data.fingerprint]; + } + + // Fire away! + this._send(data); + + return this; + }, + + captureBreadcrumb: function(obj) { + var crumb = objectMerge( + { + timestamp: now() / 1000 + }, + obj + ); + + if (isFunction(this._globalOptions.breadcrumbCallback)) { + var result = this._globalOptions.breadcrumbCallback(crumb); + + if (isObject(result) && !isEmptyObject(result)) { + crumb = result; + } else if (result === false) { + return this; + } + } + + this._breadcrumbs.push(crumb); + if (this._breadcrumbs.length > this._globalOptions.maxBreadcrumbs) { + this._breadcrumbs.shift(); + } + return this; + }, + + addPlugin: function(plugin /*arg1, arg2, ... argN*/) { + var pluginArgs = [].slice.call(arguments, 1); + + this._plugins.push([plugin, pluginArgs]); + if (this._isRavenInstalled) { + this._drainPlugins(); + } + + return this; + }, + + /* + * Set/clear a user to be sent along with the payload. + * + * @param {object} user An object representing user data [optional] + * @return {Raven} + */ + setUserContext: function(user) { + // Intentionally do not merge here since that's an unexpected behavior. + this._globalContext.user = user; + + return this; + }, + + /* + * Merge extra attributes to be sent along with the payload. + * + * @param {object} extra An object representing extra data [optional] + * @return {Raven} + */ + setExtraContext: function(extra) { + this._mergeContext('extra', extra); + + return this; + }, + + /* + * Merge tags to be sent along with the payload. + * + * @param {object} tags An object representing tags [optional] + * @return {Raven} + */ + setTagsContext: function(tags) { + this._mergeContext('tags', tags); + + return this; + }, + + /* + * Clear all of the context. + * + * @return {Raven} + */ + clearContext: function() { + this._globalContext = {}; + + return this; + }, + + /* + * Get a copy of the current context. This cannot be mutated. + * + * @return {object} copy of context + */ + getContext: function() { + // lol javascript + return JSON.parse(stringify(this._globalContext)); + }, + + /* + * Set environment of application + * + * @param {string} environment Typically something like 'production'. + * @return {Raven} + */ + setEnvironment: function(environment) { + this._globalOptions.environment = environment; + + return this; + }, + + /* + * Set release version of application + * + * @param {string} release Typically something like a git SHA to identify version + * @return {Raven} + */ + setRelease: function(release) { + this._globalOptions.release = release; + + return this; + }, + + /* + * Set the dataCallback option + * + * @param {function} callback The callback to run which allows the + * data blob to be mutated before sending + * @return {Raven} + */ + setDataCallback: function(callback) { + var original = this._globalOptions.dataCallback; + this._globalOptions.dataCallback = keepOriginalCallback(original, callback); + return this; + }, + + /* + * Set the breadcrumbCallback option + * + * @param {function} callback The callback to run which allows filtering + * or mutating breadcrumbs + * @return {Raven} + */ + setBreadcrumbCallback: function(callback) { + var original = this._globalOptions.breadcrumbCallback; + this._globalOptions.breadcrumbCallback = keepOriginalCallback(original, callback); + return this; + }, + + /* + * Set the shouldSendCallback option + * + * @param {function} callback The callback to run which allows + * introspecting the blob before sending + * @return {Raven} + */ + setShouldSendCallback: function(callback) { + var original = this._globalOptions.shouldSendCallback; + this._globalOptions.shouldSendCallback = keepOriginalCallback(original, callback); + return this; + }, + + /** + * Override the default HTTP transport mechanism that transmits data + * to the Sentry server. + * + * @param {function} transport Function invoked instead of the default + * `makeRequest` handler. + * + * @return {Raven} + */ + setTransport: function(transport) { + this._globalOptions.transport = transport; + + return this; + }, + + /* + * Get the latest raw exception that was captured by Raven. + * + * @return {error} + */ + lastException: function() { + return this._lastCapturedException; + }, + + /* + * Get the last event id + * + * @return {string} + */ + lastEventId: function() { + return this._lastEventId; + }, + + /* + * Determine if Raven is setup and ready to go. + * + * @return {boolean} + */ + isSetup: function() { + if (!this._hasJSON) return false; // needs JSON support + if (!this._globalServer) { + if (!this.ravenNotConfiguredError) { + this.ravenNotConfiguredError = true; + this._logDebug('error', 'Error: Raven has not been configured.'); + } + return false; + } + return true; + }, + + afterLoad: function() { + // TODO: remove window dependence? + + // Attempt to initialize Raven on load + var RavenConfig = _window.RavenConfig; + if (RavenConfig) { + this.config(RavenConfig.dsn, RavenConfig.config).install(); + } + }, + + showReportDialog: function(options) { + if ( + !_document // doesn't work without a document (React native) + ) + return; + + options = options || {}; + + var lastEventId = options.eventId || this.lastEventId(); + if (!lastEventId) { + throw new RavenConfigError('Missing eventId'); + } + + var dsn = options.dsn || this._dsn; + if (!dsn) { + throw new RavenConfigError('Missing DSN'); + } + + var encode = encodeURIComponent; + var qs = ''; + qs += '?eventId=' + encode(lastEventId); + qs += '&dsn=' + encode(dsn); + + var user = options.user || this._globalContext.user; + if (user) { + if (user.name) qs += '&name=' + encode(user.name); + if (user.email) qs += '&email=' + encode(user.email); + } + + var globalServer = this._getGlobalServer(this._parseDSN(dsn)); + + var script = _document.createElement('script'); + script.async = true; + script.src = globalServer + '/api/embed/error-page/' + qs; + (_document.head || _document.body).appendChild(script); + }, + + /**** Private functions ****/ + _ignoreNextOnError: function() { + var self = this; + this._ignoreOnError += 1; + setTimeout(function() { + // onerror should trigger before setTimeout + self._ignoreOnError -= 1; + }); + }, + + _triggerEvent: function(eventType, options) { + // NOTE: `event` is a native browser thing, so let's avoid conflicting wiht it + var evt, key; + + if (!this._hasDocument) return; + + options = options || {}; + + eventType = 'raven' + eventType.substr(0, 1).toUpperCase() + eventType.substr(1); + + if (_document.createEvent) { + evt = _document.createEvent('HTMLEvents'); + evt.initEvent(eventType, true, true); + } else { + evt = _document.createEventObject(); + evt.eventType = eventType; + } + + for (key in options) + if (hasKey(options, key)) { + evt[key] = options[key]; + } + + if (_document.createEvent) { + // IE9 if standards + _document.dispatchEvent(evt); + } else { + // IE8 regardless of Quirks or Standards + // IE9 if quirks + try { + _document.fireEvent('on' + evt.eventType.toLowerCase(), evt); + } catch (e) { + // Do nothing + } + } + }, + + /** + * Wraps addEventListener to capture UI breadcrumbs + * @param evtName the event name (e.g. "click") + * @returns {Function} + * @private + */ + _breadcrumbEventHandler: function(evtName) { + var self = this; + return function(evt) { + // reset keypress timeout; e.g. triggering a 'click' after + // a 'keypress' will reset the keypress debounce so that a new + // set of keypresses can be recorded + self._keypressTimeout = null; + + // It's possible this handler might trigger multiple times for the same + // event (e.g. event propagation through node ancestors). Ignore if we've + // already captured the event. + if (self._lastCapturedEvent === evt) return; + + self._lastCapturedEvent = evt; + + // try/catch both: + // - accessing evt.target (see getsentry/raven-js#838, #768) + // - `htmlTreeAsString` because it's complex, and just accessing the DOM incorrectly + // can throw an exception in some circumstances. + var target; + try { + target = htmlTreeAsString(evt.target); + } catch (e) { + target = ''; + } + + self.captureBreadcrumb({ + category: 'ui.' + evtName, // e.g. ui.click, ui.input + message: target + }); + }; + }, + + /** + * Wraps addEventListener to capture keypress UI events + * @returns {Function} + * @private + */ + _keypressEventHandler: function() { + var self = this, + debounceDuration = 1000; // milliseconds + + // TODO: if somehow user switches keypress target before + // debounce timeout is triggered, we will only capture + // a single breadcrumb from the FIRST target (acceptable?) + return function(evt) { + var target; + try { + target = evt.target; + } catch (e) { + // just accessing event properties can throw an exception in some rare circumstances + // see: https://github.com/getsentry/raven-js/issues/838 + return; + } + var tagName = target && target.tagName; + + // only consider keypress events on actual input elements + // this will disregard keypresses targeting body (e.g. tabbing + // through elements, hotkeys, etc) + if ( + !tagName || + (tagName !== 'INPUT' && tagName !== 'TEXTAREA' && !target.isContentEditable) + ) + return; + + // record first keypress in a series, but ignore subsequent + // keypresses until debounce clears + var timeout = self._keypressTimeout; + if (!timeout) { + self._breadcrumbEventHandler('input')(evt); + } + clearTimeout(timeout); + self._keypressTimeout = setTimeout(function() { + self._keypressTimeout = null; + }, debounceDuration); + }; + }, + + /** + * Captures a breadcrumb of type "navigation", normalizing input URLs + * @param to the originating URL + * @param from the target URL + * @private + */ + _captureUrlChange: function(from, to) { + var parsedLoc = parseUrl(this._location.href); + var parsedTo = parseUrl(to); + var parsedFrom = parseUrl(from); + + // because onpopstate only tells you the "new" (to) value of location.href, and + // not the previous (from) value, we need to track the value of the current URL + // state ourselves + this._lastHref = to; + + // Use only the path component of the URL if the URL matches the current + // document (almost all the time when using pushState) + if (parsedLoc.protocol === parsedTo.protocol && parsedLoc.host === parsedTo.host) + to = parsedTo.relative; + if (parsedLoc.protocol === parsedFrom.protocol && parsedLoc.host === parsedFrom.host) + from = parsedFrom.relative; + + this.captureBreadcrumb({ + category: 'navigation', + data: { + to: to, + from: from + } + }); + }, + + _patchFunctionToString: function() { + var self = this; + self._originalFunctionToString = Function.prototype.toString; + // eslint-disable-next-line no-extend-native + Function.prototype.toString = function() { + if (typeof this === 'function' && this.__raven__) { + return self._originalFunctionToString.apply(this.__orig__, arguments); + } + return self._originalFunctionToString.apply(this, arguments); + }; + }, + + _unpatchFunctionToString: function() { + if (this._originalFunctionToString) { + // eslint-disable-next-line no-extend-native + Function.prototype.toString = this._originalFunctionToString; + } + }, + + /** + * Wrap timer functions and event targets to catch errors and provide + * better metadata. + */ + _instrumentTryCatch: function() { + var self = this; + + var wrappedBuiltIns = self._wrappedBuiltIns; + + function wrapTimeFn(orig) { + return function(fn, t) { + // preserve arity + // Make a copy of the arguments to prevent deoptimization + // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments + var args = new Array(arguments.length); + for (var i = 0; i < args.length; ++i) { + args[i] = arguments[i]; + } + var originalCallback = args[0]; + if (isFunction(originalCallback)) { + args[0] = self.wrap(originalCallback); + } + + // IE < 9 doesn't support .call/.apply on setInterval/setTimeout, but it + // also supports only two arguments and doesn't care what this is, so we + // can just call the original function directly. + if (orig.apply) { + return orig.apply(this, args); + } else { + return orig(args[0], args[1]); + } + }; + } + + var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; + + function wrapEventTarget(global) { + var proto = _window[global] && _window[global].prototype; + if (proto && proto.hasOwnProperty && proto.hasOwnProperty('addEventListener')) { + fill( + proto, + 'addEventListener', + function(orig) { + return function(evtName, fn, capture, secure) { + // preserve arity + try { + if (fn && fn.handleEvent) { + fn.handleEvent = self.wrap(fn.handleEvent); + } + } catch (err) { + // can sometimes get 'Permission denied to access property "handle Event' + } + + // More breadcrumb DOM capture ... done here and not in `_instrumentBreadcrumbs` + // so that we don't have more than one wrapper function + var before, clickHandler, keypressHandler; + + if ( + autoBreadcrumbs && + autoBreadcrumbs.dom && + (global === 'EventTarget' || global === 'Node') + ) { + // NOTE: generating multiple handlers per addEventListener invocation, should + // revisit and verify we can just use one (almost certainly) + clickHandler = self._breadcrumbEventHandler('click'); + keypressHandler = self._keypressEventHandler(); + before = function(evt) { + // need to intercept every DOM event in `before` argument, in case that + // same wrapped method is re-used for different events (e.g. mousemove THEN click) + // see #724 + if (!evt) return; + + var eventType; + try { + eventType = evt.type; + } catch (e) { + // just accessing event properties can throw an exception in some rare circumstances + // see: https://github.com/getsentry/raven-js/issues/838 + return; + } + if (eventType === 'click') return clickHandler(evt); + else if (eventType === 'keypress') return keypressHandler(evt); + }; + } + return orig.call( + this, + evtName, + self.wrap(fn, undefined, before), + capture, + secure + ); + }; + }, + wrappedBuiltIns + ); + fill( + proto, + 'removeEventListener', + function(orig) { + return function(evt, fn, capture, secure) { + try { + fn = fn && (fn.__raven_wrapper__ ? fn.__raven_wrapper__ : fn); + } catch (e) { + // ignore, accessing __raven_wrapper__ will throw in some Selenium environments + } + return orig.call(this, evt, fn, capture, secure); + }; + }, + wrappedBuiltIns + ); + } + } + + fill(_window, 'setTimeout', wrapTimeFn, wrappedBuiltIns); + fill(_window, 'setInterval', wrapTimeFn, wrappedBuiltIns); + if (_window.requestAnimationFrame) { + fill( + _window, + 'requestAnimationFrame', + function(orig) { + return function(cb) { + return orig(self.wrap(cb)); + }; + }, + wrappedBuiltIns + ); + } + + // event targets borrowed from bugsnag-js: + // https://github.com/bugsnag/bugsnag-js/blob/master/src/bugsnag.js#L666 + var eventTargets = [ + 'EventTarget', + 'Window', + 'Node', + 'ApplicationCache', + 'AudioTrackList', + 'ChannelMergerNode', + 'CryptoOperation', + 'EventSource', + 'FileReader', + 'HTMLUnknownElement', + 'IDBDatabase', + 'IDBRequest', + 'IDBTransaction', + 'KeyOperation', + 'MediaController', + 'MessagePort', + 'ModalWindow', + 'Notification', + 'SVGElementInstance', + 'Screen', + 'TextTrack', + 'TextTrackCue', + 'TextTrackList', + 'WebSocket', + 'WebSocketWorker', + 'Worker', + 'XMLHttpRequest', + 'XMLHttpRequestEventTarget', + 'XMLHttpRequestUpload' + ]; + for (var i = 0; i < eventTargets.length; i++) { + wrapEventTarget(eventTargets[i]); + } + }, + + /** + * Instrument browser built-ins w/ breadcrumb capturing + * - XMLHttpRequests + * - DOM interactions (click/typing) + * - window.location changes + * - console + * + * Can be disabled or individually configured via the `autoBreadcrumbs` config option + */ + _instrumentBreadcrumbs: function() { + var self = this; + var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; + + var wrappedBuiltIns = self._wrappedBuiltIns; + + function wrapProp(prop, xhr) { + if (prop in xhr && isFunction(xhr[prop])) { + fill(xhr, prop, function(orig) { + return self.wrap(orig); + }); // intentionally don't track filled methods on XHR instances + } + } + + if (autoBreadcrumbs.xhr && 'XMLHttpRequest' in _window) { + var xhrproto = _window.XMLHttpRequest && _window.XMLHttpRequest.prototype; + fill( + xhrproto, + 'open', + function(origOpen) { + return function(method, url) { + // preserve arity + + // if Sentry key appears in URL, don't capture + if (isString(url) && url.indexOf(self._globalKey) === -1) { + this.__raven_xhr = { + method: method, + url: url, + status_code: null + }; + } + + return origOpen.apply(this, arguments); + }; + }, + wrappedBuiltIns + ); + + fill( + xhrproto, + 'send', + function(origSend) { + return function() { + // preserve arity + var xhr = this; + + function onreadystatechangeHandler() { + if (xhr.__raven_xhr && xhr.readyState === 4) { + try { + // touching statusCode in some platforms throws + // an exception + xhr.__raven_xhr.status_code = xhr.status; + } catch (e) { + /* do nothing */ + } + + self.captureBreadcrumb({ + type: 'http', + category: 'xhr', + data: xhr.__raven_xhr + }); + } + } + + var props = ['onload', 'onerror', 'onprogress']; + for (var j = 0; j < props.length; j++) { + wrapProp(props[j], xhr); + } + + if ('onreadystatechange' in xhr && isFunction(xhr.onreadystatechange)) { + fill( + xhr, + 'onreadystatechange', + function(orig) { + return self.wrap(orig, undefined, onreadystatechangeHandler); + } /* intentionally don't track this instrumentation */ + ); + } else { + // if onreadystatechange wasn't actually set by the page on this xhr, we + // are free to set our own and capture the breadcrumb + xhr.onreadystatechange = onreadystatechangeHandler; + } + + return origSend.apply(this, arguments); + }; + }, + wrappedBuiltIns + ); + } + + if (autoBreadcrumbs.xhr && supportsFetch()) { + fill( + _window, + 'fetch', + function(origFetch) { + return function() { + // preserve arity + // Make a copy of the arguments to prevent deoptimization + // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments + var args = new Array(arguments.length); + for (var i = 0; i < args.length; ++i) { + args[i] = arguments[i]; + } + + var fetchInput = args[0]; + var method = 'GET'; + var url; + + if (typeof fetchInput === 'string') { + url = fetchInput; + } else if ('Request' in _window && fetchInput instanceof _window.Request) { + url = fetchInput.url; + if (fetchInput.method) { + method = fetchInput.method; + } + } else { + url = '' + fetchInput; + } + + // if Sentry key appears in URL, don't capture, as it's our own request + if (url.indexOf(self._globalKey) !== -1) { + return origFetch.apply(this, args); + } + + if (args[1] && args[1].method) { + method = args[1].method; + } + + var fetchData = { + method: method, + url: url, + status_code: null + }; + + return origFetch + .apply(this, args) + .then(function(response) { + fetchData.status_code = response.status; + + self.captureBreadcrumb({ + type: 'http', + category: 'fetch', + data: fetchData + }); + + return response; + }) + ['catch'](function(err) { + // if there is an error performing the request + self.captureBreadcrumb({ + type: 'http', + category: 'fetch', + data: fetchData, + level: 'error' + }); + + throw err; + }); + }; + }, + wrappedBuiltIns + ); + } + + // Capture breadcrumbs from any click that is unhandled / bubbled up all the way + // to the document. Do this before we instrument addEventListener. + if (autoBreadcrumbs.dom && this._hasDocument) { + if (_document.addEventListener) { + _document.addEventListener('click', self._breadcrumbEventHandler('click'), false); + _document.addEventListener('keypress', self._keypressEventHandler(), false); + } else if (_document.attachEvent) { + // IE8 Compatibility + _document.attachEvent('onclick', self._breadcrumbEventHandler('click')); + _document.attachEvent('onkeypress', self._keypressEventHandler()); + } + } + + // record navigation (URL) changes + // NOTE: in Chrome App environment, touching history.pushState, *even inside + // a try/catch block*, will cause Chrome to output an error to console.error + // borrowed from: https://github.com/angular/angular.js/pull/13945/files + var chrome = _window.chrome; + var isChromePackagedApp = chrome && chrome.app && chrome.app.runtime; + var hasPushAndReplaceState = + !isChromePackagedApp && + _window.history && + _window.history.pushState && + _window.history.replaceState; + if (autoBreadcrumbs.location && hasPushAndReplaceState) { + // TODO: remove onpopstate handler on uninstall() + var oldOnPopState = _window.onpopstate; + _window.onpopstate = function() { + var currentHref = self._location.href; + self._captureUrlChange(self._lastHref, currentHref); + + if (oldOnPopState) { + return oldOnPopState.apply(this, arguments); + } + }; + + var historyReplacementFunction = function(origHistFunction) { + // note history.pushState.length is 0; intentionally not declaring + // params to preserve 0 arity + return function(/* state, title, url */) { + var url = arguments.length > 2 ? arguments[2] : undefined; + + // url argument is optional + if (url) { + // coerce to string (this is what pushState does) + self._captureUrlChange(self._lastHref, url + ''); + } + + return origHistFunction.apply(this, arguments); + }; + }; + + fill(_window.history, 'pushState', historyReplacementFunction, wrappedBuiltIns); + fill(_window.history, 'replaceState', historyReplacementFunction, wrappedBuiltIns); + } + + if (autoBreadcrumbs.console && 'console' in _window && console.log) { + // console + var consoleMethodCallback = function(msg, data) { + self.captureBreadcrumb({ + message: msg, + level: data.level, + category: 'console' + }); + }; + + each(['debug', 'info', 'warn', 'error', 'log'], function(_, level) { + wrapConsoleMethod(console, level, consoleMethodCallback); + }); + } + }, + + _restoreBuiltIns: function() { + // restore any wrapped builtins + var builtin; + while (this._wrappedBuiltIns.length) { + builtin = this._wrappedBuiltIns.shift(); + + var obj = builtin[0], + name = builtin[1], + orig = builtin[2]; + + obj[name] = orig; + } + }, + + _restoreConsole: function() { + // eslint-disable-next-line guard-for-in + for (var method in this._originalConsoleMethods) { + this._originalConsole[method] = this._originalConsoleMethods[method]; + } + }, + + _drainPlugins: function() { + var self = this; + + // FIX ME TODO + each(this._plugins, function(_, plugin) { + var installer = plugin[0]; + var args = plugin[1]; + installer.apply(self, [self].concat(args)); + }); + }, + + _parseDSN: function(str) { + var m = dsnPattern.exec(str), + dsn = {}, + i = 7; + + try { + while (i--) dsn[dsnKeys[i]] = m[i] || ''; + } catch (e) { + throw new RavenConfigError('Invalid DSN: ' + str); + } + + if (dsn.pass && !this._globalOptions.allowSecretKey) { + throw new RavenConfigError( + 'Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key' + ); + } + + return dsn; + }, + + _getGlobalServer: function(uri) { + // assemble the endpoint from the uri pieces + var globalServer = '//' + uri.host + (uri.port ? ':' + uri.port : ''); + + if (uri.protocol) { + globalServer = uri.protocol + ':' + globalServer; + } + return globalServer; + }, + + _handleOnErrorStackInfo: function() { + // if we are intentionally ignoring errors via onerror, bail out + if (!this._ignoreOnError) { + this._handleStackInfo.apply(this, arguments); + } + }, + + _handleStackInfo: function(stackInfo, options) { + var frames = this._prepareFrames(stackInfo, options); + + this._triggerEvent('handle', { + stackInfo: stackInfo, + options: options + }); + + this._processException( + stackInfo.name, + stackInfo.message, + stackInfo.url, + stackInfo.lineno, + frames, + options + ); + }, + + _prepareFrames: function(stackInfo, options) { + var self = this; + var frames = []; + if (stackInfo.stack && stackInfo.stack.length) { + each(stackInfo.stack, function(i, stack) { + var frame = self._normalizeFrame(stack, stackInfo.url); + if (frame) { + frames.push(frame); + } + }); + + // e.g. frames captured via captureMessage throw + if (options && options.trimHeadFrames) { + for (var j = 0; j < options.trimHeadFrames && j < frames.length; j++) { + frames[j].in_app = false; + } + } + } + frames = frames.slice(0, this._globalOptions.stackTraceLimit); + return frames; + }, + + _normalizeFrame: function(frame, stackInfoUrl) { + // normalize the frames data + var normalized = { + filename: frame.url, + lineno: frame.line, + colno: frame.column, + function: frame.func || '?' + }; + + // Case when we don't have any information about the error + // E.g. throwing a string or raw object, instead of an `Error` in Firefox + // Generating synthetic error doesn't add any value here + // + // We should probably somehow let a user know that they should fix their code + if (!frame.url) { + normalized.filename = stackInfoUrl; // fallback to whole stacks url from onerror handler + } + + normalized.in_app = !// determine if an exception came from outside of our app + // first we check the global includePaths list. + ( + (!!this._globalOptions.includePaths.test && + !this._globalOptions.includePaths.test(normalized.filename)) || + // Now we check for fun, if the function name is Raven or TraceKit + /(Raven|TraceKit)\./.test(normalized['function']) || + // finally, we do a last ditch effort and check for raven.min.js + /raven\.(min\.)?js$/.test(normalized.filename) + ); + + return normalized; + }, + + _processException: function(type, message, fileurl, lineno, frames, options) { + var prefixedMessage = (type ? type + ': ' : '') + (message || ''); + if ( + !!this._globalOptions.ignoreErrors.test && + (this._globalOptions.ignoreErrors.test(message) || + this._globalOptions.ignoreErrors.test(prefixedMessage)) + ) { + return; + } + + var stacktrace; + + if (frames && frames.length) { + fileurl = frames[0].filename || fileurl; + // Sentry expects frames oldest to newest + // and JS sends them as newest to oldest + frames.reverse(); + stacktrace = {frames: frames}; + } else if (fileurl) { + stacktrace = { + frames: [ + { + filename: fileurl, + lineno: lineno, + in_app: true + } + ] + }; + } + + if ( + !!this._globalOptions.ignoreUrls.test && + this._globalOptions.ignoreUrls.test(fileurl) + ) { + return; + } + + if ( + !!this._globalOptions.whitelistUrls.test && + !this._globalOptions.whitelistUrls.test(fileurl) + ) { + return; + } + + var data = objectMerge( + { + // sentry.interfaces.Exception + exception: { + values: [ + { + type: type, + value: message, + stacktrace: stacktrace + } + ] + }, + transaction: fileurl + }, + options + ); + + // Fire away! + this._send(data); + }, + + _trimPacket: function(data) { + // For now, we only want to truncate the two different messages + // but this could/should be expanded to just trim everything + var max = this._globalOptions.maxMessageLength; + if (data.message) { + data.message = truncate(data.message, max); + } + if (data.exception) { + var exception = data.exception.values[0]; + exception.value = truncate(exception.value, max); + } + + var request = data.request; + if (request) { + if (request.url) { + request.url = truncate(request.url, this._globalOptions.maxUrlLength); + } + if (request.Referer) { + request.Referer = truncate(request.Referer, this._globalOptions.maxUrlLength); + } + } + + if (data.breadcrumbs && data.breadcrumbs.values) + this._trimBreadcrumbs(data.breadcrumbs); + + return data; + }, + + /** + * Truncate breadcrumb values (right now just URLs) + */ + _trimBreadcrumbs: function(breadcrumbs) { + // known breadcrumb properties with urls + // TODO: also consider arbitrary prop values that start with (https?)?:// + var urlProps = ['to', 'from', 'url'], + urlProp, + crumb, + data; + + for (var i = 0; i < breadcrumbs.values.length; ++i) { + crumb = breadcrumbs.values[i]; + if ( + !crumb.hasOwnProperty('data') || + !isObject(crumb.data) || + objectFrozen(crumb.data) + ) + continue; + + data = objectMerge({}, crumb.data); + for (var j = 0; j < urlProps.length; ++j) { + urlProp = urlProps[j]; + if (data.hasOwnProperty(urlProp) && data[urlProp]) { + data[urlProp] = truncate(data[urlProp], this._globalOptions.maxUrlLength); + } + } + breadcrumbs.values[i].data = data; + } + }, + + _getHttpData: function() { + if (!this._hasNavigator && !this._hasDocument) return; + var httpData = {}; + + if (this._hasNavigator && _navigator.userAgent) { + httpData.headers = { + 'User-Agent': _navigator.userAgent + }; + } + + // Check in `window` instead of `document`, as we may be in ServiceWorker environment + if (_window.location && _window.location.href) { + httpData.url = _window.location.href; + } + + if (this._hasDocument && _document.referrer) { + if (!httpData.headers) httpData.headers = {}; + httpData.headers.Referer = _document.referrer; + } + + return httpData; + }, + + _resetBackoff: function() { + this._backoffDuration = 0; + this._backoffStart = null; + }, + + _shouldBackoff: function() { + return this._backoffDuration && now() - this._backoffStart < this._backoffDuration; + }, + + /** + * Returns true if the in-process data payload matches the signature + * of the previously-sent data + * + * NOTE: This has to be done at this level because TraceKit can generate + * data from window.onerror WITHOUT an exception object (IE8, IE9, + * other old browsers). This can take the form of an "exception" + * data object with a single frame (derived from the onerror args). + */ + _isRepeatData: function(current) { + var last = this._lastData; + + if ( + !last || + current.message !== last.message || // defined for captureMessage + current.transaction !== last.transaction // defined for captureException/onerror + ) + return false; + + // Stacktrace interface (i.e. from captureMessage) + if (current.stacktrace || last.stacktrace) { + return isSameStacktrace(current.stacktrace, last.stacktrace); + } else if (current.exception || last.exception) { + // Exception interface (i.e. from captureException/onerror) + return isSameException(current.exception, last.exception); + } + + return true; + }, + + _setBackoffState: function(request) { + // If we are already in a backoff state, don't change anything + if (this._shouldBackoff()) { + return; + } + + var status = request.status; + + // 400 - project_id doesn't exist or some other fatal + // 401 - invalid/revoked dsn + // 429 - too many requests + if (!(status === 400 || status === 401 || status === 429)) return; + + var retry; + try { + // If Retry-After is not in Access-Control-Expose-Headers, most + // browsers will throw an exception trying to access it + if (supportsFetch()) { + retry = request.headers.get('Retry-After'); + } else { + retry = request.getResponseHeader('Retry-After'); + } + + // Retry-After is returned in seconds + retry = parseInt(retry, 10) * 1000; + } catch (e) { + /* eslint no-empty:0 */ + } + + this._backoffDuration = retry + ? // If Sentry server returned a Retry-After value, use it + retry + : // Otherwise, double the last backoff duration (starts at 1 sec) + this._backoffDuration * 2 || 1000; + + this._backoffStart = now(); + }, + + _send: function(data) { + var globalOptions = this._globalOptions; + + var baseData = { + project: this._globalProject, + logger: globalOptions.logger, + platform: 'javascript' + }, + httpData = this._getHttpData(); + + if (httpData) { + baseData.request = httpData; + } + + // HACK: delete `trimHeadFrames` to prevent from appearing in outbound payload + if (data.trimHeadFrames) delete data.trimHeadFrames; + + data = objectMerge(baseData, data); + + // Merge in the tags and extra separately since objectMerge doesn't handle a deep merge + data.tags = objectMerge(objectMerge({}, this._globalContext.tags), data.tags); + data.extra = objectMerge(objectMerge({}, this._globalContext.extra), data.extra); + + // Send along our own collected metadata with extra + data.extra['session:duration'] = now() - this._startTime; + + if (this._breadcrumbs && this._breadcrumbs.length > 0) { + // intentionally make shallow copy so that additions + // to breadcrumbs aren't accidentally sent in this request + data.breadcrumbs = { + values: [].slice.call(this._breadcrumbs, 0) + }; + } + + if (this._globalContext.user) { + // sentry.interfaces.User + data.user = this._globalContext.user; + } + + // Include the environment if it's defined in globalOptions + if (globalOptions.environment) data.environment = globalOptions.environment; + + // Include the release if it's defined in globalOptions + if (globalOptions.release) data.release = globalOptions.release; + + // Include server_name if it's defined in globalOptions + if (globalOptions.serverName) data.server_name = globalOptions.serverName; + + data = this._sanitizeData(data); + + // Cleanup empty properties before sending them to the server + Object.keys(data).forEach(function(key) { + if (data[key] == null || data[key] === '' || isEmptyObject(data[key])) { + delete data[key]; + } + }); + + if (isFunction(globalOptions.dataCallback)) { + data = globalOptions.dataCallback(data) || data; + } + + // Why?????????? + if (!data || isEmptyObject(data)) { + return; + } + + // Check if the request should be filtered or not + if ( + isFunction(globalOptions.shouldSendCallback) && + !globalOptions.shouldSendCallback(data) + ) { + return; + } + + // Backoff state: Sentry server previously responded w/ an error (e.g. 429 - too many requests), + // so drop requests until "cool-off" period has elapsed. + if (this._shouldBackoff()) { + this._logDebug('warn', 'Raven dropped error due to backoff: ', data); + return; + } + + if (typeof globalOptions.sampleRate === 'number') { + if (Math.random() < globalOptions.sampleRate) { + this._sendProcessedPayload(data); + } + } else { + this._sendProcessedPayload(data); + } + }, + + _sanitizeData: function(data) { + return sanitize(data, this._globalOptions.sanitizeKeys); + }, + + _getUuid: function() { + return uuid4(); + }, + + _sendProcessedPayload: function(data, callback) { + var self = this; + var globalOptions = this._globalOptions; + + if (!this.isSetup()) return; + + // Try and clean up the packet before sending by truncating long values + data = this._trimPacket(data); + + // ideally duplicate error testing should occur *before* dataCallback/shouldSendCallback, + // but this would require copying an un-truncated copy of the data packet, which can be + // arbitrarily deep (extra_data) -- could be worthwhile? will revisit + if (!this._globalOptions.allowDuplicates && this._isRepeatData(data)) { + this._logDebug('warn', 'Raven dropped repeat event: ', data); + return; + } + + // Send along an event_id if not explicitly passed. + // This event_id can be used to reference the error within Sentry itself. + // Set lastEventId after we know the error should actually be sent + this._lastEventId = data.event_id || (data.event_id = this._getUuid()); + + // Store outbound payload after trim + this._lastData = data; + + this._logDebug('debug', 'Raven about to send:', data); + + var auth = { + sentry_version: '7', + sentry_client: 'raven-js/' + this.VERSION, + sentry_key: this._globalKey + }; + + if (this._globalSecret) { + auth.sentry_secret = this._globalSecret; + } + + var exception = data.exception && data.exception.values[0]; + + // only capture 'sentry' breadcrumb is autoBreadcrumbs is truthy + if ( + this._globalOptions.autoBreadcrumbs && + this._globalOptions.autoBreadcrumbs.sentry + ) { + this.captureBreadcrumb({ + category: 'sentry', + message: exception + ? (exception.type ? exception.type + ': ' : '') + exception.value + : data.message, + event_id: data.event_id, + level: data.level || 'error' // presume error unless specified + }); + } + + var url = this._globalEndpoint; + (globalOptions.transport || this._makeRequest).call(this, { + url: url, + auth: auth, + data: data, + options: globalOptions, + onSuccess: function success() { + self._resetBackoff(); + + self._triggerEvent('success', { + data: data, + src: url + }); + callback && callback(); + }, + onError: function failure(error) { + self._logDebug('error', 'Raven transport failed to send: ', error); + + if (error.request) { + self._setBackoffState(error.request); + } + + self._triggerEvent('failure', { + data: data, + src: url + }); + error = error || new Error('Raven send failed (no additional details provided)'); + callback && callback(error); + } + }); + }, + + _makeRequest: function(opts) { + // Auth is intentionally sent as part of query string (NOT as custom HTTP header) to avoid preflight CORS requests + var url = opts.url + '?' + urlencode(opts.auth); + + var evaluatedHeaders = null; + var evaluatedFetchParameters = {}; + + if (opts.options.headers) { + evaluatedHeaders = this._evaluateHash(opts.options.headers); + } + + if (opts.options.fetchParameters) { + evaluatedFetchParameters = this._evaluateHash(opts.options.fetchParameters); + } + + if (supportsFetch()) { + evaluatedFetchParameters.body = stringify(opts.data); + + var defaultFetchOptions = objectMerge({}, this._fetchDefaults); + var fetchOptions = objectMerge(defaultFetchOptions, evaluatedFetchParameters); + + if (evaluatedHeaders) { + fetchOptions.headers = evaluatedHeaders; + } + + return _window + .fetch(url, fetchOptions) + .then(function(response) { + if (response.ok) { + opts.onSuccess && opts.onSuccess(); + } else { + var error = new Error('Sentry error code: ' + response.status); + // It's called request only to keep compatibility with XHR interface + // and not add more redundant checks in setBackoffState method + error.request = response; + opts.onError && opts.onError(error); + } + }) + ['catch'](function() { + opts.onError && + opts.onError(new Error('Sentry error code: network unavailable')); + }); + } + + var request = _window.XMLHttpRequest && new _window.XMLHttpRequest(); + if (!request) return; + + // if browser doesn't support CORS (e.g. IE7), we are out of luck + var hasCORS = 'withCredentials' in request || typeof XDomainRequest !== 'undefined'; + + if (!hasCORS) return; + + if ('withCredentials' in request) { + request.onreadystatechange = function() { + if (request.readyState !== 4) { + return; + } else if (request.status === 200) { + opts.onSuccess && opts.onSuccess(); + } else if (opts.onError) { + var err = new Error('Sentry error code: ' + request.status); + err.request = request; + opts.onError(err); + } + }; + } else { + request = new XDomainRequest(); + // xdomainrequest cannot go http -> https (or vice versa), + // so always use protocol relative + url = url.replace(/^https?:/, ''); + + // onreadystatechange not supported by XDomainRequest + if (opts.onSuccess) { + request.onload = opts.onSuccess; + } + if (opts.onError) { + request.onerror = function() { + var err = new Error('Sentry error code: XDomainRequest'); + err.request = request; + opts.onError(err); + }; + } + } + + request.open('POST', url); + + if (evaluatedHeaders) { + each(evaluatedHeaders, function(key, value) { + request.setRequestHeader(key, value); + }); + } + + request.send(stringify(opts.data)); + }, + + _evaluateHash: function(hash) { + var evaluated = {}; + + for (var key in hash) { + if (hash.hasOwnProperty(key)) { + var value = hash[key]; + evaluated[key] = typeof value === 'function' ? value() : value; + } + } + + return evaluated; + }, + + _logDebug: function(level) { + // We allow `Raven.debug` and `Raven.config(DSN, { debug: true })` to not make backward incompatible API change + if ( + this._originalConsoleMethods[level] && + (this.debug || this._globalOptions.debug) + ) { + // In IE<10 console methods do not have their own 'apply' method + Function.prototype.apply.call( + this._originalConsoleMethods[level], + this._originalConsole, + [].slice.call(arguments, 1) + ); + } + }, + + _mergeContext: function(key, context) { + if (isUndefined(context)) { + delete this._globalContext[key]; + } else { + this._globalContext[key] = objectMerge(this._globalContext[key] || {}, context); + } + } +}; + +// Deprecations +Raven.prototype.setUser = Raven.prototype.setUserContext; +Raven.prototype.setReleaseContext = Raven.prototype.setRelease; + +module.exports = Raven; + +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"10":10,"3":3,"4":4,"7":7,"8":8,"9":9}],6:[function(_dereq_,module,exports){ +(function (global){ +/** + * Enforces a single instance of the Raven client, and the + * main entry point for Raven. If you are a consumer of the + * Raven library, you SHOULD load this file (vs raven.js). + **/ + +var RavenConstructor = _dereq_(5); + +// This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) +var _window = + typeof window !== 'undefined' + ? window + : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; +var _Raven = _window.Raven; + +var Raven = new RavenConstructor(); + +/* + * Allow multiple versions of Raven to be installed. + * Strip Raven from the global context and returns the instance. + * + * @return {Raven} + */ +Raven.noConflict = function() { + _window.Raven = _Raven; + return Raven; +}; + +Raven.afterLoad(); + +module.exports = Raven; + +/** + * DISCLAIMER: + * + * Expose `Client` constructor for cases where user want to track multiple "sub-applications" in one larger app. + * It's not meant to be used by a wide audience, so pleaaase make sure that you know what you're doing before using it. + * Accidentally calling `install` multiple times, may result in an unexpected behavior that's very hard to debug. + * + * It's called `Client' to be in-line with Raven Node implementation. + * + * HOWTO: + * + * import Raven from 'raven-js'; + * + * const someAppReporter = new Raven.Client(); + * const someOtherAppReporter = new Raven.Client(); + * + * someAppReporter.config('__DSN__', { + * ...config goes here + * }); + * + * someOtherAppReporter.config('__OTHER_DSN__', { + * ...config goes here + * }); + * + * someAppReporter.captureMessage(...); + * someAppReporter.captureException(...); + * someAppReporter.captureBreadcrumb(...); + * + * someOtherAppReporter.captureMessage(...); + * someOtherAppReporter.captureException(...); + * someOtherAppReporter.captureBreadcrumb(...); + * + * It should "just work". + */ +module.exports.Client = RavenConstructor; + +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"5":5}],7:[function(_dereq_,module,exports){ +(function (global){ +var stringify = _dereq_(9); + +var _window = + typeof window !== 'undefined' + ? window + : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; + +function isObject(what) { + return typeof what === 'object' && what !== null; +} + +// Yanked from https://git.io/vS8DV re-used under CC0 +// with some tiny modifications +function isError(value) { + switch (Object.prototype.toString.call(value)) { + case '[object Error]': + return true; + case '[object Exception]': + return true; + case '[object DOMException]': + return true; + default: + return value instanceof Error; + } +} + +function isErrorEvent(value) { + return Object.prototype.toString.call(value) === '[object ErrorEvent]'; +} + +function isDOMError(value) { + return Object.prototype.toString.call(value) === '[object DOMError]'; +} + +function isDOMException(value) { + return Object.prototype.toString.call(value) === '[object DOMException]'; +} + +function isUndefined(what) { + return what === void 0; +} + +function isFunction(what) { + return typeof what === 'function'; +} + +function isPlainObject(what) { + return Object.prototype.toString.call(what) === '[object Object]'; +} + +function isString(what) { + return Object.prototype.toString.call(what) === '[object String]'; +} + +function isArray(what) { + return Object.prototype.toString.call(what) === '[object Array]'; +} + +function isEmptyObject(what) { + if (!isPlainObject(what)) return false; + + for (var _ in what) { + if (what.hasOwnProperty(_)) { + return false; + } + } + return true; +} + +function supportsErrorEvent() { + try { + new ErrorEvent(''); // eslint-disable-line no-new + return true; + } catch (e) { + return false; + } +} + +function supportsDOMError() { + try { + new DOMError(''); // eslint-disable-line no-new + return true; + } catch (e) { + return false; + } +} + +function supportsDOMException() { + try { + new DOMException(''); // eslint-disable-line no-new + return true; + } catch (e) { + return false; + } +} + +function supportsFetch() { + if (!('fetch' in _window)) return false; + + try { + new Headers(); // eslint-disable-line no-new + new Request(''); // eslint-disable-line no-new + new Response(); // eslint-disable-line no-new + return true; + } catch (e) { + return false; + } +} + +// Despite all stars in the sky saying that Edge supports old draft syntax, aka 'never', 'always', 'origin' and 'default +// https://caniuse.com/#feat=referrer-policy +// It doesn't. And it throw exception instead of ignoring this parameter... +// REF: https://github.com/getsentry/raven-js/issues/1233 +function supportsReferrerPolicy() { + if (!supportsFetch()) return false; + + try { + // eslint-disable-next-line no-new + new Request('pickleRick', { + referrerPolicy: 'origin' + }); + return true; + } catch (e) { + return false; + } +} + +function supportsPromiseRejectionEvent() { + return typeof PromiseRejectionEvent === 'function'; +} + +function wrappedCallback(callback) { + function dataCallback(data, original) { + var normalizedData = callback(data) || data; + if (original) { + return original(normalizedData) || normalizedData; + } + return normalizedData; + } + + return dataCallback; +} + +function each(obj, callback) { + var i, j; + + if (isUndefined(obj.length)) { + for (i in obj) { + if (hasKey(obj, i)) { + callback.call(null, i, obj[i]); + } + } + } else { + j = obj.length; + if (j) { + for (i = 0; i < j; i++) { + callback.call(null, i, obj[i]); + } + } + } +} + +function objectMerge(obj1, obj2) { + if (!obj2) { + return obj1; + } + each(obj2, function(key, value) { + obj1[key] = value; + }); + return obj1; +} + +/** + * This function is only used for react-native. + * react-native freezes object that have already been sent over the + * js bridge. We need this function in order to check if the object is frozen. + * So it's ok that objectFrozen returns false if Object.isFrozen is not + * supported because it's not relevant for other "platforms". See related issue: + * https://github.com/getsentry/react-native-sentry/issues/57 + */ +function objectFrozen(obj) { + if (!Object.isFrozen) { + return false; + } + return Object.isFrozen(obj); +} + +function truncate(str, max) { + if (typeof max !== 'number') { + throw new Error('2nd argument to `truncate` function should be a number'); + } + if (typeof str !== 'string' || max === 0) { + return str; + } + return str.length <= max ? str : str.substr(0, max) + '\u2026'; +} + +/** + * hasKey, a better form of hasOwnProperty + * Example: hasKey(MainHostObject, property) === true/false + * + * @param {Object} host object to check property + * @param {string} key to check + */ +function hasKey(object, key) { + return Object.prototype.hasOwnProperty.call(object, key); +} + +function joinRegExp(patterns) { + // Combine an array of regular expressions and strings into one large regexp + // Be mad. + var sources = [], + i = 0, + len = patterns.length, + pattern; + + for (; i < len; i++) { + pattern = patterns[i]; + if (isString(pattern)) { + // If it's a string, we need to escape it + // Taken from: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions + sources.push(pattern.replace(/([.*+?^=!:${}()|\[\]\/\\])/g, '\\$1')); + } else if (pattern && pattern.source) { + // If it's a regexp already, we want to extract the source + sources.push(pattern.source); + } + // Intentionally skip other cases + } + return new RegExp(sources.join('|'), 'i'); +} + +function urlencode(o) { + var pairs = []; + each(o, function(key, value) { + pairs.push(encodeURIComponent(key) + '=' + encodeURIComponent(value)); + }); + return pairs.join('&'); +} + +// borrowed from https://tools.ietf.org/html/rfc3986#appendix-B +// intentionally using regex and not href parsing trick because React Native and other +// environments where DOM might not be available +function parseUrl(url) { + if (typeof url !== 'string') return {}; + var match = url.match(/^(([^:\/?#]+):)?(\/\/([^\/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?$/); + + // coerce to undefined values to empty string so we don't get 'undefined' + var query = match[6] || ''; + var fragment = match[8] || ''; + return { + protocol: match[2], + host: match[4], + path: match[5], + relative: match[5] + query + fragment // everything minus origin + }; +} +function uuid4() { + var crypto = _window.crypto || _window.msCrypto; + + if (!isUndefined(crypto) && crypto.getRandomValues) { + // Use window.crypto API if available + // eslint-disable-next-line no-undef + var arr = new Uint16Array(8); + crypto.getRandomValues(arr); + + // set 4 in byte 7 + arr[3] = (arr[3] & 0xfff) | 0x4000; + // set 2 most significant bits of byte 9 to '10' + arr[4] = (arr[4] & 0x3fff) | 0x8000; + + var pad = function(num) { + var v = num.toString(16); + while (v.length < 4) { + v = '0' + v; + } + return v; + }; + + return ( + pad(arr[0]) + + pad(arr[1]) + + pad(arr[2]) + + pad(arr[3]) + + pad(arr[4]) + + pad(arr[5]) + + pad(arr[6]) + + pad(arr[7]) + ); + } else { + // http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/2117523#2117523 + return 'xxxxxxxxxxxx4xxxyxxxxxxxxxxxxxxx'.replace(/[xy]/g, function(c) { + var r = (Math.random() * 16) | 0, + v = c === 'x' ? r : (r & 0x3) | 0x8; + return v.toString(16); + }); + } +} + +/** + * Given a child DOM element, returns a query-selector statement describing that + * and its ancestors + * e.g. [HTMLElement] => body > div > input#foo.btn[name=baz] + * @param elem + * @returns {string} + */ +function htmlTreeAsString(elem) { + /* eslint no-extra-parens:0*/ + var MAX_TRAVERSE_HEIGHT = 5, + MAX_OUTPUT_LEN = 80, + out = [], + height = 0, + len = 0, + separator = ' > ', + sepLength = separator.length, + nextStr; + + while (elem && height++ < MAX_TRAVERSE_HEIGHT) { + nextStr = htmlElementAsString(elem); + // bail out if + // - nextStr is the 'html' element + // - the length of the string that would be created exceeds MAX_OUTPUT_LEN + // (ignore this limit if we are on the first iteration) + if ( + nextStr === 'html' || + (height > 1 && len + out.length * sepLength + nextStr.length >= MAX_OUTPUT_LEN) + ) { + break; + } + + out.push(nextStr); + + len += nextStr.length; + elem = elem.parentNode; + } + + return out.reverse().join(separator); +} + +/** + * Returns a simple, query-selector representation of a DOM element + * e.g. [HTMLElement] => input#foo.btn[name=baz] + * @param HTMLElement + * @returns {string} + */ +function htmlElementAsString(elem) { + var out = [], + className, + classes, + key, + attr, + i; + + if (!elem || !elem.tagName) { + return ''; + } + + out.push(elem.tagName.toLowerCase()); + if (elem.id) { + out.push('#' + elem.id); + } + + className = elem.className; + if (className && isString(className)) { + classes = className.split(/\s+/); + for (i = 0; i < classes.length; i++) { + out.push('.' + classes[i]); + } + } + var attrWhitelist = ['type', 'name', 'title', 'alt']; + for (i = 0; i < attrWhitelist.length; i++) { + key = attrWhitelist[i]; + attr = elem.getAttribute(key); + if (attr) { + out.push('[' + key + '="' + attr + '"]'); + } + } + return out.join(''); +} + +/** + * Returns true if either a OR b is truthy, but not both + */ +function isOnlyOneTruthy(a, b) { + return !!(!!a ^ !!b); +} + +/** + * Returns true if both parameters are undefined + */ +function isBothUndefined(a, b) { + return isUndefined(a) && isUndefined(b); +} + +/** + * Returns true if the two input exception interfaces have the same content + */ +function isSameException(ex1, ex2) { + if (isOnlyOneTruthy(ex1, ex2)) return false; + + ex1 = ex1.values[0]; + ex2 = ex2.values[0]; + + if (ex1.type !== ex2.type || ex1.value !== ex2.value) return false; + + // in case both stacktraces are undefined, we can't decide so default to false + if (isBothUndefined(ex1.stacktrace, ex2.stacktrace)) return false; + + return isSameStacktrace(ex1.stacktrace, ex2.stacktrace); +} + +/** + * Returns true if the two input stack trace interfaces have the same content + */ +function isSameStacktrace(stack1, stack2) { + if (isOnlyOneTruthy(stack1, stack2)) return false; + + var frames1 = stack1.frames; + var frames2 = stack2.frames; + + // Exit early if frame count differs + if (frames1.length !== frames2.length) return false; + + // Iterate through every frame; bail out if anything differs + var a, b; + for (var i = 0; i < frames1.length; i++) { + a = frames1[i]; + b = frames2[i]; + if ( + a.filename !== b.filename || + a.lineno !== b.lineno || + a.colno !== b.colno || + a['function'] !== b['function'] + ) + return false; + } + return true; +} + +/** + * Polyfill a method + * @param obj object e.g. `document` + * @param name method name present on object e.g. `addEventListener` + * @param replacement replacement function + * @param track {optional} record instrumentation to an array + */ +function fill(obj, name, replacement, track) { + if (obj == null) return; + var orig = obj[name]; + obj[name] = replacement(orig); + obj[name].__raven__ = true; + obj[name].__orig__ = orig; + if (track) { + track.push([obj, name, orig]); + } +} + +/** + * Join values in array + * @param input array of values to be joined together + * @param delimiter string to be placed in-between values + * @returns {string} + */ +function safeJoin(input, delimiter) { + if (!isArray(input)) return ''; + + var output = []; + + for (var i = 0; i < input.length; i++) { + try { + output.push(String(input[i])); + } catch (e) { + output.push('[value cannot be serialized]'); + } + } + + return output.join(delimiter); +} + +// Default Node.js REPL depth +var MAX_SERIALIZE_EXCEPTION_DEPTH = 3; +// 50kB, as 100kB is max payload size, so half sounds reasonable +var MAX_SERIALIZE_EXCEPTION_SIZE = 50 * 1024; +var MAX_SERIALIZE_KEYS_LENGTH = 40; + +function utf8Length(value) { + return ~-encodeURI(value).split(/%..|./).length; +} + +function jsonSize(value) { + return utf8Length(JSON.stringify(value)); +} + +function serializeValue(value) { + if (typeof value === 'string') { + var maxLength = 40; + return truncate(value, maxLength); + } else if ( + typeof value === 'number' || + typeof value === 'boolean' || + typeof value === 'undefined' + ) { + return value; + } + + var type = Object.prototype.toString.call(value); + + // Node.js REPL notation + if (type === '[object Object]') return '[Object]'; + if (type === '[object Array]') return '[Array]'; + if (type === '[object Function]') + return value.name ? '[Function: ' + value.name + ']' : '[Function]'; + + return value; +} + +function serializeObject(value, depth) { + if (depth === 0) return serializeValue(value); + + if (isPlainObject(value)) { + return Object.keys(value).reduce(function(acc, key) { + acc[key] = serializeObject(value[key], depth - 1); + return acc; + }, {}); + } else if (Array.isArray(value)) { + return value.map(function(val) { + return serializeObject(val, depth - 1); + }); + } + + return serializeValue(value); +} + +function serializeException(ex, depth, maxSize) { + if (!isPlainObject(ex)) return ex; + + depth = typeof depth !== 'number' ? MAX_SERIALIZE_EXCEPTION_DEPTH : depth; + maxSize = typeof depth !== 'number' ? MAX_SERIALIZE_EXCEPTION_SIZE : maxSize; + + var serialized = serializeObject(ex, depth); + + if (jsonSize(stringify(serialized)) > maxSize) { + return serializeException(ex, depth - 1); + } + + return serialized; +} + +function serializeKeysForMessage(keys, maxLength) { + if (typeof keys === 'number' || typeof keys === 'string') return keys.toString(); + if (!Array.isArray(keys)) return ''; + + keys = keys.filter(function(key) { + return typeof key === 'string'; + }); + if (keys.length === 0) return '[object has no keys]'; + + maxLength = typeof maxLength !== 'number' ? MAX_SERIALIZE_KEYS_LENGTH : maxLength; + if (keys[0].length >= maxLength) return keys[0]; + + for (var usedKeys = keys.length; usedKeys > 0; usedKeys--) { + var serialized = keys.slice(0, usedKeys).join(', '); + if (serialized.length > maxLength) continue; + if (usedKeys === keys.length) return serialized; + return serialized + '\u2026'; + } + + return ''; +} + +function sanitize(input, sanitizeKeys) { + if (!isArray(sanitizeKeys) || (isArray(sanitizeKeys) && sanitizeKeys.length === 0)) + return input; + + var sanitizeRegExp = joinRegExp(sanitizeKeys); + var sanitizeMask = '********'; + var safeInput; + + try { + safeInput = JSON.parse(stringify(input)); + } catch (o_O) { + return input; + } + + function sanitizeWorker(workerInput) { + if (isArray(workerInput)) { + return workerInput.map(function(val) { + return sanitizeWorker(val); + }); + } + + if (isPlainObject(workerInput)) { + return Object.keys(workerInput).reduce(function(acc, k) { + if (sanitizeRegExp.test(k)) { + acc[k] = sanitizeMask; + } else { + acc[k] = sanitizeWorker(workerInput[k]); + } + return acc; + }, {}); + } + + return workerInput; + } + + return sanitizeWorker(safeInput); +} + +module.exports = { + isObject: isObject, + isError: isError, + isErrorEvent: isErrorEvent, + isDOMError: isDOMError, + isDOMException: isDOMException, + isUndefined: isUndefined, + isFunction: isFunction, + isPlainObject: isPlainObject, + isString: isString, + isArray: isArray, + isEmptyObject: isEmptyObject, + supportsErrorEvent: supportsErrorEvent, + supportsDOMError: supportsDOMError, + supportsDOMException: supportsDOMException, + supportsFetch: supportsFetch, + supportsReferrerPolicy: supportsReferrerPolicy, + supportsPromiseRejectionEvent: supportsPromiseRejectionEvent, + wrappedCallback: wrappedCallback, + each: each, + objectMerge: objectMerge, + truncate: truncate, + objectFrozen: objectFrozen, + hasKey: hasKey, + joinRegExp: joinRegExp, + urlencode: urlencode, + uuid4: uuid4, + htmlTreeAsString: htmlTreeAsString, + htmlElementAsString: htmlElementAsString, + isSameException: isSameException, + isSameStacktrace: isSameStacktrace, + parseUrl: parseUrl, + fill: fill, + safeJoin: safeJoin, + serializeException: serializeException, + serializeKeysForMessage: serializeKeysForMessage, + sanitize: sanitize +}; + +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"9":9}],8:[function(_dereq_,module,exports){ +(function (global){ +var utils = _dereq_(7); + +/* + TraceKit - Cross brower stack traces + + This was originally forked from github.com/occ/TraceKit, but has since been + largely re-written and is now maintained as part of raven-js. Tests for + this are in test/vendor. + + MIT license +*/ + +var TraceKit = { + collectWindowErrors: true, + debug: false +}; + +// This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) +var _window = + typeof window !== 'undefined' + ? window + : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; + +// global reference to slice +var _slice = [].slice; +var UNKNOWN_FUNCTION = '?'; + +// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error#Error_types +var ERROR_TYPES_RE = /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/; + +function getLocationHref() { + if (typeof document === 'undefined' || document.location == null) return ''; + return document.location.href; +} + +function getLocationOrigin() { + if (typeof document === 'undefined' || document.location == null) return ''; + + // Oh dear IE10... + if (!document.location.origin) { + document.location.origin = + document.location.protocol + + '//' + + document.location.hostname + + (document.location.port ? ':' + document.location.port : ''); + } + + return document.location.origin; +} + +/** + * TraceKit.report: cross-browser processing of unhandled exceptions + * + * Syntax: + * TraceKit.report.subscribe(function(stackInfo) { ... }) + * TraceKit.report.unsubscribe(function(stackInfo) { ... }) + * TraceKit.report(exception) + * try { ...code... } catch(ex) { TraceKit.report(ex); } + * + * Supports: + * - Firefox: full stack trace with line numbers, plus column number + * on top frame; column number is not guaranteed + * - Opera: full stack trace with line and column numbers + * - Chrome: full stack trace with line and column numbers + * - Safari: line and column number for the top frame only; some frames + * may be missing, and column number is not guaranteed + * - IE: line and column number for the top frame only; some frames + * may be missing, and column number is not guaranteed + * + * In theory, TraceKit should work on all of the following versions: + * - IE5.5+ (only 8.0 tested) + * - Firefox 0.9+ (only 3.5+ tested) + * - Opera 7+ (only 10.50 tested; versions 9 and earlier may require + * Exceptions Have Stacktrace to be enabled in opera:config) + * - Safari 3+ (only 4+ tested) + * - Chrome 1+ (only 5+ tested) + * - Konqueror 3.5+ (untested) + * + * Requires TraceKit.computeStackTrace. + * + * Tries to catch all unhandled exceptions and report them to the + * subscribed handlers. Please note that TraceKit.report will rethrow the + * exception. This is REQUIRED in order to get a useful stack trace in IE. + * If the exception does not reach the top of the browser, you will only + * get a stack trace from the point where TraceKit.report was called. + * + * Handlers receive a stackInfo object as described in the + * TraceKit.computeStackTrace docs. + */ +TraceKit.report = (function reportModuleWrapper() { + var handlers = [], + lastArgs = null, + lastException = null, + lastExceptionStack = null; + + /** + * Add a crash handler. + * @param {Function} handler + */ + function subscribe(handler) { + installGlobalHandler(); + handlers.push(handler); + } + + /** + * Remove a crash handler. + * @param {Function} handler + */ + function unsubscribe(handler) { + for (var i = handlers.length - 1; i >= 0; --i) { + if (handlers[i] === handler) { + handlers.splice(i, 1); + } + } + } + + /** + * Remove all crash handlers. + */ + function unsubscribeAll() { + uninstallGlobalHandler(); + handlers = []; + } + + /** + * Dispatch stack information to all handlers. + * @param {Object.} stack + */ + function notifyHandlers(stack, isWindowError) { + var exception = null; + if (isWindowError && !TraceKit.collectWindowErrors) { + return; + } + for (var i in handlers) { + if (handlers.hasOwnProperty(i)) { + try { + handlers[i].apply(null, [stack].concat(_slice.call(arguments, 2))); + } catch (inner) { + exception = inner; + } + } + } + + if (exception) { + throw exception; + } + } + + var _oldOnerrorHandler, _onErrorHandlerInstalled; + + /** + * Ensures all global unhandled exceptions are recorded. + * Supported by Gecko and IE. + * @param {string} msg Error message. + * @param {string} url URL of script that generated the exception. + * @param {(number|string)} lineNo The line number at which the error + * occurred. + * @param {?(number|string)} colNo The column number at which the error + * occurred. + * @param {?Error} ex The actual Error object. + */ + function traceKitWindowOnError(msg, url, lineNo, colNo, ex) { + var stack = null; + // If 'ex' is ErrorEvent, get real Error from inside + var exception = utils.isErrorEvent(ex) ? ex.error : ex; + // If 'msg' is ErrorEvent, get real message from inside + var message = utils.isErrorEvent(msg) ? msg.message : msg; + + if (lastExceptionStack) { + TraceKit.computeStackTrace.augmentStackTraceWithInitialElement( + lastExceptionStack, + url, + lineNo, + message + ); + processLastException(); + } else if (exception && utils.isError(exception)) { + // non-string `exception` arg; attempt to extract stack trace + + // New chrome and blink send along a real error object + // Let's just report that like a normal error. + // See: https://mikewest.org/2013/08/debugging-runtime-errors-with-window-onerror + stack = TraceKit.computeStackTrace(exception); + notifyHandlers(stack, true); + } else { + var location = { + url: url, + line: lineNo, + column: colNo + }; + + var name = undefined; + var groups; + + if ({}.toString.call(message) === '[object String]') { + var groups = message.match(ERROR_TYPES_RE); + if (groups) { + name = groups[1]; + message = groups[2]; + } + } + + location.func = UNKNOWN_FUNCTION; + + stack = { + name: name, + message: message, + url: getLocationHref(), + stack: [location] + }; + notifyHandlers(stack, true); + } + + if (_oldOnerrorHandler) { + return _oldOnerrorHandler.apply(this, arguments); + } + + return false; + } + + function installGlobalHandler() { + if (_onErrorHandlerInstalled) { + return; + } + _oldOnerrorHandler = _window.onerror; + _window.onerror = traceKitWindowOnError; + _onErrorHandlerInstalled = true; + } + + function uninstallGlobalHandler() { + if (!_onErrorHandlerInstalled) { + return; + } + _window.onerror = _oldOnerrorHandler; + _onErrorHandlerInstalled = false; + _oldOnerrorHandler = undefined; + } + + function processLastException() { + var _lastExceptionStack = lastExceptionStack, + _lastArgs = lastArgs; + lastArgs = null; + lastExceptionStack = null; + lastException = null; + notifyHandlers.apply(null, [_lastExceptionStack, false].concat(_lastArgs)); + } + + /** + * Reports an unhandled Error to TraceKit. + * @param {Error} ex + * @param {?boolean} rethrow If false, do not re-throw the exception. + * Only used for window.onerror to not cause an infinite loop of + * rethrowing. + */ + function report(ex, rethrow) { + var args = _slice.call(arguments, 1); + if (lastExceptionStack) { + if (lastException === ex) { + return; // already caught by an inner catch block, ignore + } else { + processLastException(); + } + } + + var stack = TraceKit.computeStackTrace(ex); + lastExceptionStack = stack; + lastException = ex; + lastArgs = args; + + // If the stack trace is incomplete, wait for 2 seconds for + // slow slow IE to see if onerror occurs or not before reporting + // this exception; otherwise, we will end up with an incomplete + // stack trace + setTimeout(function() { + if (lastException === ex) { + processLastException(); + } + }, stack.incomplete ? 2000 : 0); + + if (rethrow !== false) { + throw ex; // re-throw to propagate to the top level (and cause window.onerror) + } + } + + report.subscribe = subscribe; + report.unsubscribe = unsubscribe; + report.uninstall = unsubscribeAll; + return report; +})(); + +/** + * TraceKit.computeStackTrace: cross-browser stack traces in JavaScript + * + * Syntax: + * s = TraceKit.computeStackTrace(exception) // consider using TraceKit.report instead (see below) + * Returns: + * s.name - exception name + * s.message - exception message + * s.stack[i].url - JavaScript or HTML file URL + * s.stack[i].func - function name, or empty for anonymous functions (if guessing did not work) + * s.stack[i].args - arguments passed to the function, if known + * s.stack[i].line - line number, if known + * s.stack[i].column - column number, if known + * + * Supports: + * - Firefox: full stack trace with line numbers and unreliable column + * number on top frame + * - Opera 10: full stack trace with line and column numbers + * - Opera 9-: full stack trace with line numbers + * - Chrome: full stack trace with line and column numbers + * - Safari: line and column number for the topmost stacktrace element + * only + * - IE: no line numbers whatsoever + * + * Tries to guess names of anonymous functions by looking for assignments + * in the source code. In IE and Safari, we have to guess source file names + * by searching for function bodies inside all page scripts. This will not + * work for scripts that are loaded cross-domain. + * Here be dragons: some function names may be guessed incorrectly, and + * duplicate functions may be mismatched. + * + * TraceKit.computeStackTrace should only be used for tracing purposes. + * Logging of unhandled exceptions should be done with TraceKit.report, + * which builds on top of TraceKit.computeStackTrace and provides better + * IE support by utilizing the window.onerror event to retrieve information + * about the top of the stack. + * + * Note: In IE and Safari, no stack trace is recorded on the Error object, + * so computeStackTrace instead walks its *own* chain of callers. + * This means that: + * * in Safari, some methods may be missing from the stack trace; + * * in IE, the topmost function in the stack trace will always be the + * caller of computeStackTrace. + * + * This is okay for tracing (because you are likely to be calling + * computeStackTrace from the function you want to be the topmost element + * of the stack trace anyway), but not okay for logging unhandled + * exceptions (because your catch block will likely be far away from the + * inner function that actually caused the exception). + * + */ +TraceKit.computeStackTrace = (function computeStackTraceWrapper() { + // Contents of Exception in various browsers. + // + // SAFARI: + // ex.message = Can't find variable: qq + // ex.line = 59 + // ex.sourceId = 580238192 + // ex.sourceURL = http://... + // ex.expressionBeginOffset = 96 + // ex.expressionCaretOffset = 98 + // ex.expressionEndOffset = 98 + // ex.name = ReferenceError + // + // FIREFOX: + // ex.message = qq is not defined + // ex.fileName = http://... + // ex.lineNumber = 59 + // ex.columnNumber = 69 + // ex.stack = ...stack trace... (see the example below) + // ex.name = ReferenceError + // + // CHROME: + // ex.message = qq is not defined + // ex.name = ReferenceError + // ex.type = not_defined + // ex.arguments = ['aa'] + // ex.stack = ...stack trace... + // + // INTERNET EXPLORER: + // ex.message = ... + // ex.name = ReferenceError + // + // OPERA: + // ex.message = ...message... (see the example below) + // ex.name = ReferenceError + // ex.opera#sourceloc = 11 (pretty much useless, duplicates the info in ex.message) + // ex.stacktrace = n/a; see 'opera:config#UserPrefs|Exceptions Have Stacktrace' + + /** + * Computes stack trace information from the stack property. + * Chrome and Gecko use this property. + * @param {Error} ex + * @return {?Object.} Stack trace information. + */ + function computeStackTraceFromStackProp(ex) { + if (typeof ex.stack === 'undefined' || !ex.stack) return; + + var chrome = /^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i; + var winjs = /^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i; + // NOTE: blob urls are now supposed to always have an origin, therefore it's format + // which is `blob:http://url/path/with-some-uuid`, is matched by `blob.*?:\/` as well + var gecko = /^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i; + // Used to additionally parse URL/line/column from eval frames + var geckoEval = /(\S+) line (\d+)(?: > eval line \d+)* > eval/i; + var chromeEval = /\((\S*)(?::(\d+))(?::(\d+))\)/; + var lines = ex.stack.split('\n'); + var stack = []; + var submatch; + var parts; + var element; + var reference = /^(.*) is undefined$/.exec(ex.message); + + for (var i = 0, j = lines.length; i < j; ++i) { + if ((parts = chrome.exec(lines[i]))) { + var isNative = parts[2] && parts[2].indexOf('native') === 0; // start of line + var isEval = parts[2] && parts[2].indexOf('eval') === 0; // start of line + if (isEval && (submatch = chromeEval.exec(parts[2]))) { + // throw out eval line/column and use top-most line/column number + parts[2] = submatch[1]; // url + parts[3] = submatch[2]; // line + parts[4] = submatch[3]; // column + } + element = { + url: !isNative ? parts[2] : null, + func: parts[1] || UNKNOWN_FUNCTION, + args: isNative ? [parts[2]] : [], + line: parts[3] ? +parts[3] : null, + column: parts[4] ? +parts[4] : null + }; + } else if ((parts = winjs.exec(lines[i]))) { + element = { + url: parts[2], + func: parts[1] || UNKNOWN_FUNCTION, + args: [], + line: +parts[3], + column: parts[4] ? +parts[4] : null + }; + } else if ((parts = gecko.exec(lines[i]))) { + var isEval = parts[3] && parts[3].indexOf(' > eval') > -1; + if (isEval && (submatch = geckoEval.exec(parts[3]))) { + // throw out eval line/column and use top-most line number + parts[3] = submatch[1]; + parts[4] = submatch[2]; + parts[5] = null; // no column when eval + } else if (i === 0 && !parts[5] && typeof ex.columnNumber !== 'undefined') { + // FireFox uses this awesome columnNumber property for its top frame + // Also note, Firefox's column number is 0-based and everything else expects 1-based, + // so adding 1 + // NOTE: this hack doesn't work if top-most frame is eval + stack[0].column = ex.columnNumber + 1; + } + element = { + url: parts[3], + func: parts[1] || UNKNOWN_FUNCTION, + args: parts[2] ? parts[2].split(',') : [], + line: parts[4] ? +parts[4] : null, + column: parts[5] ? +parts[5] : null + }; + } else { + continue; + } + + if (!element.func && element.line) { + element.func = UNKNOWN_FUNCTION; + } + + if (element.url && element.url.substr(0, 5) === 'blob:') { + // Special case for handling JavaScript loaded into a blob. + // We use a synchronous AJAX request here as a blob is already in + // memory - it's not making a network request. This will generate a warning + // in the browser console, but there has already been an error so that's not + // that much of an issue. + var xhr = new XMLHttpRequest(); + xhr.open('GET', element.url, false); + xhr.send(null); + + // If we failed to download the source, skip this patch + if (xhr.status === 200) { + var source = xhr.responseText || ''; + + // We trim the source down to the last 300 characters as sourceMappingURL is always at the end of the file. + // Why 300? To be in line with: https://github.com/getsentry/sentry/blob/4af29e8f2350e20c28a6933354e4f42437b4ba42/src/sentry/lang/javascript/processor.py#L164-L175 + source = source.slice(-300); + + // Now we dig out the source map URL + var sourceMaps = source.match(/\/\/# sourceMappingURL=(.*)$/); + + // If we don't find a source map comment or we find more than one, continue on to the next element. + if (sourceMaps) { + var sourceMapAddress = sourceMaps[1]; + + // Now we check to see if it's a relative URL. + // If it is, convert it to an absolute one. + if (sourceMapAddress.charAt(0) === '~') { + sourceMapAddress = getLocationOrigin() + sourceMapAddress.slice(1); + } + + // Now we strip the '.map' off of the end of the URL and update the + // element so that Sentry can match the map to the blob. + element.url = sourceMapAddress.slice(0, -4); + } + } + } + + stack.push(element); + } + + if (!stack.length) { + return null; + } + + return { + name: ex.name, + message: ex.message, + url: getLocationHref(), + stack: stack + }; + } + + /** + * Adds information about the first frame to incomplete stack traces. + * Safari and IE require this to get complete data on the first frame. + * @param {Object.} stackInfo Stack trace information from + * one of the compute* methods. + * @param {string} url The URL of the script that caused an error. + * @param {(number|string)} lineNo The line number of the script that + * caused an error. + * @param {string=} message The error generated by the browser, which + * hopefully contains the name of the object that caused the error. + * @return {boolean} Whether or not the stack information was + * augmented. + */ + function augmentStackTraceWithInitialElement(stackInfo, url, lineNo, message) { + var initial = { + url: url, + line: lineNo + }; + + if (initial.url && initial.line) { + stackInfo.incomplete = false; + + if (!initial.func) { + initial.func = UNKNOWN_FUNCTION; + } + + if (stackInfo.stack.length > 0) { + if (stackInfo.stack[0].url === initial.url) { + if (stackInfo.stack[0].line === initial.line) { + return false; // already in stack trace + } else if ( + !stackInfo.stack[0].line && + stackInfo.stack[0].func === initial.func + ) { + stackInfo.stack[0].line = initial.line; + return false; + } + } + } + + stackInfo.stack.unshift(initial); + stackInfo.partial = true; + return true; + } else { + stackInfo.incomplete = true; + } + + return false; + } + + /** + * Computes stack trace information by walking the arguments.caller + * chain at the time the exception occurred. This will cause earlier + * frames to be missed but is the only way to get any stack trace in + * Safari and IE. The top frame is restored by + * {@link augmentStackTraceWithInitialElement}. + * @param {Error} ex + * @return {?Object.} Stack trace information. + */ + function computeStackTraceByWalkingCallerChain(ex, depth) { + var functionName = /function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i, + stack = [], + funcs = {}, + recursion = false, + parts, + item, + source; + + for ( + var curr = computeStackTraceByWalkingCallerChain.caller; + curr && !recursion; + curr = curr.caller + ) { + if (curr === computeStackTrace || curr === TraceKit.report) { + // console.log('skipping internal function'); + continue; + } + + item = { + url: null, + func: UNKNOWN_FUNCTION, + line: null, + column: null + }; + + if (curr.name) { + item.func = curr.name; + } else if ((parts = functionName.exec(curr.toString()))) { + item.func = parts[1]; + } + + if (typeof item.func === 'undefined') { + try { + item.func = parts.input.substring(0, parts.input.indexOf('{')); + } catch (e) {} + } + + if (funcs['' + curr]) { + recursion = true; + } else { + funcs['' + curr] = true; + } + + stack.push(item); + } + + if (depth) { + // console.log('depth is ' + depth); + // console.log('stack is ' + stack.length); + stack.splice(0, depth); + } + + var result = { + name: ex.name, + message: ex.message, + url: getLocationHref(), + stack: stack + }; + augmentStackTraceWithInitialElement( + result, + ex.sourceURL || ex.fileName, + ex.line || ex.lineNumber, + ex.message || ex.description + ); + return result; + } + + /** + * Computes a stack trace for an exception. + * @param {Error} ex + * @param {(string|number)=} depth + */ + function computeStackTrace(ex, depth) { + var stack = null; + depth = depth == null ? 0 : +depth; + + try { + stack = computeStackTraceFromStackProp(ex); + if (stack) { + return stack; + } + } catch (e) { + if (TraceKit.debug) { + throw e; + } + } + + try { + stack = computeStackTraceByWalkingCallerChain(ex, depth + 1); + if (stack) { + return stack; + } + } catch (e) { + if (TraceKit.debug) { + throw e; + } + } + return { + name: ex.name, + message: ex.message, + url: getLocationHref() + }; + } + + computeStackTrace.augmentStackTraceWithInitialElement = augmentStackTraceWithInitialElement; + computeStackTrace.computeStackTraceFromStackProp = computeStackTraceFromStackProp; + + return computeStackTrace; +})(); + +module.exports = TraceKit; + +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"7":7}],9:[function(_dereq_,module,exports){ +/* + json-stringify-safe + Like JSON.stringify, but doesn't throw on circular references. + + Originally forked from https://github.com/isaacs/json-stringify-safe + version 5.0.1 on 3/8/2017 and modified to handle Errors serialization + and IE8 compatibility. Tests for this are in test/vendor. + + ISC license: https://github.com/isaacs/json-stringify-safe/blob/master/LICENSE +*/ + +exports = module.exports = stringify; +exports.getSerialize = serializer; + +function indexOf(haystack, needle) { + for (var i = 0; i < haystack.length; ++i) { + if (haystack[i] === needle) return i; + } + return -1; +} + +function stringify(obj, replacer, spaces, cycleReplacer) { + return JSON.stringify(obj, serializer(replacer, cycleReplacer), spaces); +} + +// https://github.com/ftlabs/js-abbreviate/blob/fa709e5f139e7770a71827b1893f22418097fbda/index.js#L95-L106 +function stringifyError(value) { + var err = { + // These properties are implemented as magical getters and don't show up in for in + stack: value.stack, + message: value.message, + name: value.name + }; + + for (var i in value) { + if (Object.prototype.hasOwnProperty.call(value, i)) { + err[i] = value[i]; + } + } + + return err; +} + +function serializer(replacer, cycleReplacer) { + var stack = []; + var keys = []; + + if (cycleReplacer == null) { + cycleReplacer = function(key, value) { + if (stack[0] === value) { + return '[Circular ~]'; + } + return '[Circular ~.' + keys.slice(0, indexOf(stack, value)).join('.') + ']'; + }; + } + + return function(key, value) { + if (stack.length > 0) { + var thisPos = indexOf(stack, this); + ~thisPos ? stack.splice(thisPos + 1) : stack.push(this); + ~thisPos ? keys.splice(thisPos, Infinity, key) : keys.push(key); + + if (~indexOf(stack, value)) { + value = cycleReplacer.call(this, key, value); + } + } else { + stack.push(value); + } + + return replacer == null + ? value instanceof Error ? stringifyError(value) : value + : replacer.call(this, key, value); + }; +} + +},{}],10:[function(_dereq_,module,exports){ +/* + * JavaScript MD5 + * https://github.com/blueimp/JavaScript-MD5 + * + * Copyright 2011, Sebastian Tschan + * https://blueimp.net + * + * Licensed under the MIT license: + * https://opensource.org/licenses/MIT + * + * Based on + * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message + * Digest Algorithm, as defined in RFC 1321. + * Version 2.2 Copyright (C) Paul Johnston 1999 - 2009 + * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet + * Distributed under the BSD License + * See http://pajhome.org.uk/crypt/md5 for more info. + */ + +/* +* Add integers, wrapping at 2^32. This uses 16-bit operations internally +* to work around bugs in some JS interpreters. +*/ +function safeAdd(x, y) { + var lsw = (x & 0xffff) + (y & 0xffff); + var msw = (x >> 16) + (y >> 16) + (lsw >> 16); + return (msw << 16) | (lsw & 0xffff); +} + +/* +* Bitwise rotate a 32-bit number to the left. +*/ +function bitRotateLeft(num, cnt) { + return (num << cnt) | (num >>> (32 - cnt)); +} + +/* +* These functions implement the four basic operations the algorithm uses. +*/ +function md5cmn(q, a, b, x, s, t) { + return safeAdd(bitRotateLeft(safeAdd(safeAdd(a, q), safeAdd(x, t)), s), b); +} +function md5ff(a, b, c, d, x, s, t) { + return md5cmn((b & c) | (~b & d), a, b, x, s, t); +} +function md5gg(a, b, c, d, x, s, t) { + return md5cmn((b & d) | (c & ~d), a, b, x, s, t); +} +function md5hh(a, b, c, d, x, s, t) { + return md5cmn(b ^ c ^ d, a, b, x, s, t); +} +function md5ii(a, b, c, d, x, s, t) { + return md5cmn(c ^ (b | ~d), a, b, x, s, t); +} + +/* +* Calculate the MD5 of an array of little-endian words, and a bit length. +*/ +function binlMD5(x, len) { + /* append padding */ + x[len >> 5] |= 0x80 << (len % 32); + x[(((len + 64) >>> 9) << 4) + 14] = len; + + var i; + var olda; + var oldb; + var oldc; + var oldd; + var a = 1732584193; + var b = -271733879; + var c = -1732584194; + var d = 271733878; + + for (i = 0; i < x.length; i += 16) { + olda = a; + oldb = b; + oldc = c; + oldd = d; + + a = md5ff(a, b, c, d, x[i], 7, -680876936); + d = md5ff(d, a, b, c, x[i + 1], 12, -389564586); + c = md5ff(c, d, a, b, x[i + 2], 17, 606105819); + b = md5ff(b, c, d, a, x[i + 3], 22, -1044525330); + a = md5ff(a, b, c, d, x[i + 4], 7, -176418897); + d = md5ff(d, a, b, c, x[i + 5], 12, 1200080426); + c = md5ff(c, d, a, b, x[i + 6], 17, -1473231341); + b = md5ff(b, c, d, a, x[i + 7], 22, -45705983); + a = md5ff(a, b, c, d, x[i + 8], 7, 1770035416); + d = md5ff(d, a, b, c, x[i + 9], 12, -1958414417); + c = md5ff(c, d, a, b, x[i + 10], 17, -42063); + b = md5ff(b, c, d, a, x[i + 11], 22, -1990404162); + a = md5ff(a, b, c, d, x[i + 12], 7, 1804603682); + d = md5ff(d, a, b, c, x[i + 13], 12, -40341101); + c = md5ff(c, d, a, b, x[i + 14], 17, -1502002290); + b = md5ff(b, c, d, a, x[i + 15], 22, 1236535329); + + a = md5gg(a, b, c, d, x[i + 1], 5, -165796510); + d = md5gg(d, a, b, c, x[i + 6], 9, -1069501632); + c = md5gg(c, d, a, b, x[i + 11], 14, 643717713); + b = md5gg(b, c, d, a, x[i], 20, -373897302); + a = md5gg(a, b, c, d, x[i + 5], 5, -701558691); + d = md5gg(d, a, b, c, x[i + 10], 9, 38016083); + c = md5gg(c, d, a, b, x[i + 15], 14, -660478335); + b = md5gg(b, c, d, a, x[i + 4], 20, -405537848); + a = md5gg(a, b, c, d, x[i + 9], 5, 568446438); + d = md5gg(d, a, b, c, x[i + 14], 9, -1019803690); + c = md5gg(c, d, a, b, x[i + 3], 14, -187363961); + b = md5gg(b, c, d, a, x[i + 8], 20, 1163531501); + a = md5gg(a, b, c, d, x[i + 13], 5, -1444681467); + d = md5gg(d, a, b, c, x[i + 2], 9, -51403784); + c = md5gg(c, d, a, b, x[i + 7], 14, 1735328473); + b = md5gg(b, c, d, a, x[i + 12], 20, -1926607734); + + a = md5hh(a, b, c, d, x[i + 5], 4, -378558); + d = md5hh(d, a, b, c, x[i + 8], 11, -2022574463); + c = md5hh(c, d, a, b, x[i + 11], 16, 1839030562); + b = md5hh(b, c, d, a, x[i + 14], 23, -35309556); + a = md5hh(a, b, c, d, x[i + 1], 4, -1530992060); + d = md5hh(d, a, b, c, x[i + 4], 11, 1272893353); + c = md5hh(c, d, a, b, x[i + 7], 16, -155497632); + b = md5hh(b, c, d, a, x[i + 10], 23, -1094730640); + a = md5hh(a, b, c, d, x[i + 13], 4, 681279174); + d = md5hh(d, a, b, c, x[i], 11, -358537222); + c = md5hh(c, d, a, b, x[i + 3], 16, -722521979); + b = md5hh(b, c, d, a, x[i + 6], 23, 76029189); + a = md5hh(a, b, c, d, x[i + 9], 4, -640364487); + d = md5hh(d, a, b, c, x[i + 12], 11, -421815835); + c = md5hh(c, d, a, b, x[i + 15], 16, 530742520); + b = md5hh(b, c, d, a, x[i + 2], 23, -995338651); + + a = md5ii(a, b, c, d, x[i], 6, -198630844); + d = md5ii(d, a, b, c, x[i + 7], 10, 1126891415); + c = md5ii(c, d, a, b, x[i + 14], 15, -1416354905); + b = md5ii(b, c, d, a, x[i + 5], 21, -57434055); + a = md5ii(a, b, c, d, x[i + 12], 6, 1700485571); + d = md5ii(d, a, b, c, x[i + 3], 10, -1894986606); + c = md5ii(c, d, a, b, x[i + 10], 15, -1051523); + b = md5ii(b, c, d, a, x[i + 1], 21, -2054922799); + a = md5ii(a, b, c, d, x[i + 8], 6, 1873313359); + d = md5ii(d, a, b, c, x[i + 15], 10, -30611744); + c = md5ii(c, d, a, b, x[i + 6], 15, -1560198380); + b = md5ii(b, c, d, a, x[i + 13], 21, 1309151649); + a = md5ii(a, b, c, d, x[i + 4], 6, -145523070); + d = md5ii(d, a, b, c, x[i + 11], 10, -1120210379); + c = md5ii(c, d, a, b, x[i + 2], 15, 718787259); + b = md5ii(b, c, d, a, x[i + 9], 21, -343485551); + + a = safeAdd(a, olda); + b = safeAdd(b, oldb); + c = safeAdd(c, oldc); + d = safeAdd(d, oldd); + } + return [a, b, c, d]; +} + +/* +* Convert an array of little-endian words to a string +*/ +function binl2rstr(input) { + var i; + var output = ''; + var length32 = input.length * 32; + for (i = 0; i < length32; i += 8) { + output += String.fromCharCode((input[i >> 5] >>> (i % 32)) & 0xff); + } + return output; +} + +/* +* Convert a raw string to an array of little-endian words +* Characters >255 have their high-byte silently ignored. +*/ +function rstr2binl(input) { + var i; + var output = []; + output[(input.length >> 2) - 1] = undefined; + for (i = 0; i < output.length; i += 1) { + output[i] = 0; + } + var length8 = input.length * 8; + for (i = 0; i < length8; i += 8) { + output[i >> 5] |= (input.charCodeAt(i / 8) & 0xff) << (i % 32); + } + return output; +} + +/* +* Calculate the MD5 of a raw string +*/ +function rstrMD5(s) { + return binl2rstr(binlMD5(rstr2binl(s), s.length * 8)); +} + +/* +* Calculate the HMAC-MD5, of a key and some data (raw strings) +*/ +function rstrHMACMD5(key, data) { + var i; + var bkey = rstr2binl(key); + var ipad = []; + var opad = []; + var hash; + ipad[15] = opad[15] = undefined; + if (bkey.length > 16) { + bkey = binlMD5(bkey, key.length * 8); + } + for (i = 0; i < 16; i += 1) { + ipad[i] = bkey[i] ^ 0x36363636; + opad[i] = bkey[i] ^ 0x5c5c5c5c; + } + hash = binlMD5(ipad.concat(rstr2binl(data)), 512 + data.length * 8); + return binl2rstr(binlMD5(opad.concat(hash), 512 + 128)); +} + +/* +* Convert a raw string to a hex string +*/ +function rstr2hex(input) { + var hexTab = '0123456789abcdef'; + var output = ''; + var x; + var i; + for (i = 0; i < input.length; i += 1) { + x = input.charCodeAt(i); + output += hexTab.charAt((x >>> 4) & 0x0f) + hexTab.charAt(x & 0x0f); + } + return output; +} + +/* +* Encode a string as utf-8 +*/ +function str2rstrUTF8(input) { + return unescape(encodeURIComponent(input)); +} + +/* +* Take string arguments and return either raw or hex encoded strings +*/ +function rawMD5(s) { + return rstrMD5(str2rstrUTF8(s)); +} +function hexMD5(s) { + return rstr2hex(rawMD5(s)); +} +function rawHMACMD5(k, d) { + return rstrHMACMD5(str2rstrUTF8(k), str2rstrUTF8(d)); +} +function hexHMACMD5(k, d) { + return rstr2hex(rawHMACMD5(k, d)); +} + +function md5(string, key, raw) { + if (!key) { + if (!raw) { + return hexMD5(string); + } + return rawMD5(string); + } + if (!raw) { + return hexHMACMD5(key, string); + } + return rawHMACMD5(key, string); +} + +module.exports = md5; + +},{}]},{},[6,1,2])(6) +}); \ No newline at end of file diff --git a/packages/raven-js/dist/console,require/raven.min.js b/packages/raven-js/dist/console,require/raven.min.js new file mode 100644 index 000000000000..5e2531b26535 --- /dev/null +++ b/packages/raven-js/dist/console,require/raven.min.js @@ -0,0 +1,4 @@ +/*! Raven.js 3.25.2 (30b6d4e) | github.com/getsentry/raven-js */ +!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.Raven=a()}}(function(){var a;return function b(a,c,d){function e(g,h){if(!c[g]){if(!a[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};a[g][0].call(k.exports,function(b){var c=a[g][1][b];return e(c?c:b)},k,k.exports,b,a,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;gthis.k.maxBreadcrumbs&&this.u.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.r.push([a,b]),this.n&&this.F(),this},setUserContext:function(a){return this.j.user=a,this},setExtraContext:function(a){return this.Z("extra",a),this},setTagsContext:function(a){return this.Z("tags",a),this},clearContext:function(){return this.j={},this},getContext:function(){return JSON.parse(h(this.j))},setEnvironment:function(a){return this.k.environment=a,this},setRelease:function(a){return this.k.release=a,this},setDataCallback:function(a){var b=this.k.dataCallback;return this.k.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.k.breadcrumbCallback;return this.k.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.k.shouldSendCallback;return this.k.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.k.transport=a,this},lastException:function(){return this.d},lastEventId:function(){return this.f},isSetup:function(){return!!this.a&&(!!this.g||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.z("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=R.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(S){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.H;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.j.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.J(this.G(c)),h=S.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(S.head||S.body).appendChild(h)}},L:function(){var a=this;this.m+=1,setTimeout(function(){a.m-=1})},$:function(a,b){var c,d;if(this.b){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),S.createEvent?(c=S.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=S.createEventObject(),c.eventType=a);for(d in b)A(b,d)&&(c[d]=b[d]);if(S.createEvent)S.dispatchEvent(c);else try{S.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},_:function(a){var b=this;return function(c){if(b.aa=null,b.v!==c){b.v=c;var d;try{d=E(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ba:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.aa;g||a._("input")(c),clearTimeout(g),a.aa=setTimeout(function(){a.aa=null},b)}}},ca:function(a,b){var c=H(this.w.href),d=H(b),e=H(a);this.x=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},C:function(){var a=this;a.da=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.M?a.da.apply(this.O,arguments):a.da.apply(this,arguments)}},Q:function(){this.da&&(Function.prototype.toString=this.da)},D:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.ca(b.x,c+""),a.apply(this,arguments)}};I(R.history,"pushState",j,d),I(R.history,"replaceState",j,d)}if(c.console&&"console"in R&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};w(["debug","info","warn","error","log"],function(a,b){O(console,b,k)})}},R:function(){for(var a;this.t.length;){a=this.t.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},S:function(){for(var a in this.q)this.p[a]=this.q[a]},F:function(){var a=this;w(this.r,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},G:function(a){var b=Q.exec(a),c={},d=7;try{for(;d--;)c[P[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.k.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},J:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},A:function(){this.m||this.V.apply(this,arguments)},V:function(a,b){var c=this.X(a,b);this.$("handle",{stackInfo:a,options:b}),this.fa(a.name,a.message,a.url,a.lineno,c,b)},X:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(w(a.stack,function(b,e){var f=c.ga(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.u,0)}),this.j.user&&(a.user=this.j.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),a=this.pa(a),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||v(a[b]))&&delete a[b]}),s(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!v(a)&&(!s(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.ma()?void this.z("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function F(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&l(b))for(c=b.split(/\s+/),f=0;fc?Q(a,b-1):d}function R(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?X:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function S(a,b){function c(a){return m(a)?a.map(function(a){return c(a)}):k(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!m(b)||m(b)&&0===b.length)return a;var d,e=A(b),f="********";try{d=JSON.parse(T(a))}catch(g){return a}return c(d)}var T=a(9),U="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},V=3,W=51200,X=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isDOMError:g,isDOMException:h,isUndefined:i,isFunction:j,isPlainObject:k,isString:l,isArray:m,isEmptyObject:n,supportsErrorEvent:o,supportsDOMError:p,supportsDOMException:q,supportsFetch:r,supportsReferrerPolicy:s,supportsPromiseRejectionEvent:t,wrappedCallback:u,each:v,objectMerge:w,truncate:y,objectFrozen:x,hasKey:z,joinRegExp:A,urlencode:B,uuid4:D,htmlTreeAsString:E,htmlElementAsString:F,isSameException:I,isSameStacktrace:J,parseUrl:C,fill:K,safeJoin:L,serializeException:Q,serializeKeysForMessage:R,sanitize:S}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{9:9}],8:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}function e(){return"undefined"==typeof document||null==document.location?"":(document.location.origin||(document.location.origin=document.location.protocol+"//"+document.location.hostname+(document.location.port?":"+document.location.port:"")),document.location.origin)}var f=a(7),g={collectWindowErrors:!0,debug:!1},h="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},i=[].slice,j="?",k=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;g.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function e(a,b){var c=null;if(!b||g.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(i.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,h,i){var l=null,m=f.isErrorEvent(i)?i.error:i,n=f.isErrorEvent(a)?a.message:a;if(v)g.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&f.isError(m))l=g.computeStackTrace(m),e(l,!0);else{var p,r={url:b,line:c,column:h},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(k);p&&(s=p[1],n=p[2])}r.func=j,l={name:s,message:n,url:d(),stack:[r]},e(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=h.onerror,h.onerror=l,r=!0)}function n(){r&&(h.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,e.apply(null,[a,!1].concat(b))}function p(a,b){var c=i.call(arguments,1);if(v){if(u===a)return;o()}var d=g.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),g.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,f,g=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,h=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,i=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,k=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,l=/\((\S*)(?::(\d+))(?::(\d+))\)/,m=a.stack.split("\n"),n=[],o=(/^(.*) is undefined$/.exec(a.message),0),p=m.length;o eval")>-1;r&&(b=k.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==o||c[5]||"undefined"==typeof a.columnNumber||(n[0].column=a.columnNumber+1),f={url:c[3],func:c[1]||j,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}if(!f.func&&f.line&&(f.func=j),f.url&&"blob:"===f.url.substr(0,5)){var s=new XMLHttpRequest;if(s.open("GET",f.url,!1),s.send(null),200===s.status){var t=s.responseText||"";t=t.slice(-300);var u=t.match(/\/\/# sourceMappingURL=(.*)$/);if(u){var v=u[1];"~"===v.charAt(0)&&(v=e()+v.slice(1)),f.url=v.slice(0,-4)}}}n.push(f)}return n.length?{name:a.name,message:a.message,url:d(),stack:n}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=j),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,e){for(var h,i,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==f&&o!==g.report){if(i={url:null,func:j,line:null,column:null},o.name?i.func=o.name:(h=k.exec(o.toString()))&&(i.func=h[1]),"undefined"==typeof i.func)try{i.func=h.input.substring(0,h.input.indexOf("{"))}catch(p){}m[""+o]?n=!0:m[""+o]=!0, +l.push(i)}e&&l.splice(0,e);var q={name:a.name,message:a.message,url:d(),stack:l};return b(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),q}function f(b,e){var f=null;e=null==e?0:+e;try{if(f=a(b))return f}catch(h){if(g.debug)throw h}try{if(f=c(b,e+1))return f}catch(h){if(g.debug)throw h}return{name:b.name,message:b.message,url:d()}}return f.augmentStackTraceWithInitialElement=b,f.computeStackTraceFromStackProp=a,f}(),b.exports=g}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{7:7}],9:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}],10:[function(a,b,c){function d(a,b){var c=(65535&a)+(65535&b),d=(a>>16)+(b>>16)+(c>>16);return d<<16|65535&c}function e(a,b){return a<>>32-b}function f(a,b,c,f,g,h){return d(e(d(d(b,a),d(f,h)),g),c)}function g(a,b,c,d,e,g,h){return f(b&c|~b&d,a,b,e,g,h)}function h(a,b,c,d,e,g,h){return f(b&d|c&~d,a,b,e,g,h)}function i(a,b,c,d,e,g,h){return f(b^c^d,a,b,e,g,h)}function j(a,b,c,d,e,g,h){return f(c^(b|~d),a,b,e,g,h)}function k(a,b){a[b>>5]|=128<>>9<<4)+14]=b;var c,e,f,k,l,m=1732584193,n=-271733879,o=-1732584194,p=271733878;for(c=0;c>5]>>>b%32&255);return c}function m(a){var b,c=[];for(c[(a.length>>2)-1]=void 0,b=0;b>5]|=(255&a.charCodeAt(b/8))<16&&(e=k(e,8*a.length)),c=0;c<16;c+=1)f[c]=909522486^e[c],g[c]=1549556828^e[c];return d=k(f.concat(m(b)),512+8*b.length),l(k(g.concat(d),640))}function p(a){var b,c,d="0123456789abcdef",e="";for(c=0;c>>4&15)+d.charAt(15&b);return e}function q(a){return unescape(encodeURIComponent(a))}function r(a){return n(q(a))}function s(a){return p(r(a))}function t(a,b){return o(q(a),q(b))}function u(a,b){return p(t(a,b))}function v(a,b,c){return b?c?t(b,a):u(b,a):c?r(a):s(a)}b.exports=v},{}]},{},[6,1,2])(6)}); +//# sourceMappingURL=raven.min.js.map \ No newline at end of file diff --git a/packages/raven-js/dist/console,require/raven.min.js.map b/packages/raven-js/dist/console,require/raven.min.js.map new file mode 100644 index 000000000000..438da4049557 --- /dev/null +++ b/packages/raven-js/dist/console,require/raven.min.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","consolePlugin","console","pluginOptions","logLevels","levels","push","callback","msg","data","captureMessage","level","pop","wrapConsoleMethod","wrapMethod","addPlugin","4","6","2","requirePlugin","wrap","deep","3","RavenConfigError","message","name","prototype","constructor","utils","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","safeJoin","logger","extra","Function","apply","7","5","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","sanitizeKeys","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isErrorEvent","isDOMError","isDOMException","isError","isObject","isPlainObject","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","sanitize","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","config","dsn","options","_logDebug","globalOptions","key","value","setDSN","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","toString","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","substr","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","context","func","undefined","_before","wrapped","_ignoreNextOnError","captureException","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","T","event","reason","unhandledPromiseRejection","B","_promiseRejectionHandler","bind","addEventListener","P","removeEventListener","ex","trimHeadFrames","error","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","U","currentOptions","exKeys","Object","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","setDataCallback","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","L","setTimeout","$","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","_","evtName","_keypressTimeout","target","category","ba","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","ca","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","C","_originalFunctionToString","Q","D","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","type","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","E","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","R","builtin","S","F","installer","concat","G","str","m","exec","allowSecretKey","J","port","A","V","stackInfo","_triggerEvent","_processException","lineno","X","frame","_normalizeFrame","in_app","ga","stackInfoUrl","normalized","filename","line","colno","column","function","fa","prefixedMessage","exception","values","transaction","ha","request","Referer","breadcrumbs","_trimBreadcrumbs","ia","urlProp","urlProps","ja","httpData","userAgent","User-Agent","referrer","y","_backoffDuration","_backoffStart","ma","na","current","last","oa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Y","baseData","project","platform","_getHttpData","serverName","server_name","_sanitizeData","forEach","random","_sendProcessedPayload","pa","ra","qa","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","sa","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","onerror","open","setRequestHeader","send","ta","hash","evaluated","z","Z","setUser","setReleaseContext","10","8","9","RavenConstructor","_Raven","noConflict","Client","what","supportsErrorEvent","ErrorEvent","supportsDOMError","DOMError","supportsDOMException","DOMException","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","wrappedCallback","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","sanitizeMask","safeInput","o_O","getLocationHref","getLocationOrigin","origin","hostname","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","responseText","sourceMaps","sourceMapAddress","charAt","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","string","raw"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file diff --git a/packages/raven-js/dist/console,vue/raven.js b/packages/raven-js/dist/console,vue/raven.js new file mode 100644 index 000000000000..07f4d013eb5d --- /dev/null +++ b/packages/raven-js/dist/console,vue/raven.js @@ -0,0 +1,4095 @@ +/*! Raven.js 3.25.2 (30b6d4e) | github.com/getsentry/raven-js */ + +/* + * Includes TraceKit + * https://github.com/getsentry/TraceKit + * + * Copyright 2018 Matt Robenolt and other contributors + * Released under the BSD license + * https://github.com/getsentry/raven-js/blob/master/LICENSE + * + */ + +(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.Raven = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o' : 'anonymous component') + + (vm._isVue && vm.$options.__file ? ' at ' + vm.$options.__file : '') + ); +} + +function vuePlugin(Raven, Vue) { + Vue = Vue || window.Vue; + + // quit if Vue isn't on the page + if (!Vue || !Vue.config) return; + + var _oldOnError = Vue.config.errorHandler; + Vue.config.errorHandler = function VueErrorHandler(error, vm, info) { + var metaData = {}; + + // vm and lifecycleHook are not always available + if (Object.prototype.toString.call(vm) === '[object Object]') { + metaData.componentName = formatComponentName(vm); + metaData.propsData = vm.$options.propsData; + } + + if (typeof info !== 'undefined') { + metaData.lifecycleHook = info; + } + + Raven.captureException(error, { + extra: metaData + }); + + if (typeof _oldOnError === 'function') { + _oldOnError.call(this, error, vm, info); + } + }; +} + +module.exports = vuePlugin; + +_dereq_(6).addPlugin(module.exports); +},{"6":6}],3:[function(_dereq_,module,exports){ +function RavenConfigError(message) { + this.name = 'RavenConfigError'; + this.message = message; +} +RavenConfigError.prototype = new Error(); +RavenConfigError.prototype.constructor = RavenConfigError; + +module.exports = RavenConfigError; + +},{}],4:[function(_dereq_,module,exports){ +var utils = _dereq_(7); + +var wrapMethod = function(console, level, callback) { + var originalConsoleLevel = console[level]; + var originalConsole = console; + + if (!(level in console)) { + return; + } + + var sentryLevel = level === 'warn' ? 'warning' : level; + + console[level] = function() { + var args = [].slice.call(arguments); + + var msg = utils.safeJoin(args, ' '); + var data = {level: sentryLevel, logger: 'console', extra: {arguments: args}}; + + if (level === 'assert') { + if (args[0] === false) { + // Default browsers message + msg = + 'Assertion failed: ' + (utils.safeJoin(args.slice(1), ' ') || 'console.assert'); + data.extra.arguments = args.slice(1); + callback && callback(msg, data); + } + } else { + callback && callback(msg, data); + } + + // this fails for some browsers. :( + if (originalConsoleLevel) { + // IE9 doesn't allow calling apply on console functions directly + // See: https://stackoverflow.com/questions/5472938/does-ie9-support-console-log-and-is-it-a-real-function#answer-5473193 + Function.prototype.apply.call(originalConsoleLevel, originalConsole, args); + } + }; +}; + +module.exports = { + wrapMethod: wrapMethod +}; + +},{"7":7}],5:[function(_dereq_,module,exports){ +(function (global){ +/*global XDomainRequest:false */ + +var TraceKit = _dereq_(8); +var stringify = _dereq_(9); +var md5 = _dereq_(10); +var RavenConfigError = _dereq_(3); + +var utils = _dereq_(7); +var isErrorEvent = utils.isErrorEvent; +var isDOMError = utils.isDOMError; +var isDOMException = utils.isDOMException; +var isError = utils.isError; +var isObject = utils.isObject; +var isPlainObject = utils.isPlainObject; +var isUndefined = utils.isUndefined; +var isFunction = utils.isFunction; +var isString = utils.isString; +var isArray = utils.isArray; +var isEmptyObject = utils.isEmptyObject; +var each = utils.each; +var objectMerge = utils.objectMerge; +var truncate = utils.truncate; +var objectFrozen = utils.objectFrozen; +var hasKey = utils.hasKey; +var joinRegExp = utils.joinRegExp; +var urlencode = utils.urlencode; +var uuid4 = utils.uuid4; +var htmlTreeAsString = utils.htmlTreeAsString; +var isSameException = utils.isSameException; +var isSameStacktrace = utils.isSameStacktrace; +var parseUrl = utils.parseUrl; +var fill = utils.fill; +var supportsFetch = utils.supportsFetch; +var supportsReferrerPolicy = utils.supportsReferrerPolicy; +var serializeKeysForMessage = utils.serializeKeysForMessage; +var serializeException = utils.serializeException; +var sanitize = utils.sanitize; + +var wrapConsoleMethod = _dereq_(4).wrapMethod; + +var dsnKeys = 'source protocol user pass host port path'.split(' '), + dsnPattern = /^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/; + +function now() { + return +new Date(); +} + +// This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) +var _window = + typeof window !== 'undefined' + ? window + : typeof global !== 'undefined' + ? global + : typeof self !== 'undefined' + ? self + : {}; +var _document = _window.document; +var _navigator = _window.navigator; + +function keepOriginalCallback(original, callback) { + return isFunction(callback) + ? function(data) { + return callback(data, original); + } + : callback; +} + +// First, check for JSON support +// If there is no JSON, we no-op the core features of Raven +// since JSON is required to encode the payload +function Raven() { + this._hasJSON = !!(typeof JSON === 'object' && JSON.stringify); + // Raven can run in contexts where there's no document (react-native) + this._hasDocument = !isUndefined(_document); + this._hasNavigator = !isUndefined(_navigator); + this._lastCapturedException = null; + this._lastData = null; + this._lastEventId = null; + this._globalServer = null; + this._globalKey = null; + this._globalProject = null; + this._globalContext = {}; + this._globalOptions = { + // SENTRY_RELEASE can be injected by https://github.com/getsentry/sentry-webpack-plugin + release: _window.SENTRY_RELEASE && _window.SENTRY_RELEASE.id, + logger: 'javascript', + ignoreErrors: [], + ignoreUrls: [], + whitelistUrls: [], + includePaths: [], + headers: null, + collectWindowErrors: true, + captureUnhandledRejections: true, + maxMessageLength: 0, + // By default, truncates URL values to 250 chars + maxUrlLength: 250, + stackTraceLimit: 50, + autoBreadcrumbs: true, + instrument: true, + sampleRate: 1, + sanitizeKeys: [] + }; + this._fetchDefaults = { + method: 'POST', + keepalive: true, + // Despite all stars in the sky saying that Edge supports old draft syntax, aka 'never', 'always', 'origin' and 'default + // https://caniuse.com/#feat=referrer-policy + // It doesn't. And it throw exception instead of ignoring this parameter... + // REF: https://github.com/getsentry/raven-js/issues/1233 + referrerPolicy: supportsReferrerPolicy() ? 'origin' : '' + }; + this._ignoreOnError = 0; + this._isRavenInstalled = false; + this._originalErrorStackTraceLimit = Error.stackTraceLimit; + // capture references to window.console *and* all its methods first + // before the console plugin has a chance to monkey patch + this._originalConsole = _window.console || {}; + this._originalConsoleMethods = {}; + this._plugins = []; + this._startTime = now(); + this._wrappedBuiltIns = []; + this._breadcrumbs = []; + this._lastCapturedEvent = null; + this._keypressTimeout; + this._location = _window.location; + this._lastHref = this._location && this._location.href; + this._resetBackoff(); + + // eslint-disable-next-line guard-for-in + for (var method in this._originalConsole) { + this._originalConsoleMethods[method] = this._originalConsole[method]; + } +} + +/* + * The core Raven singleton + * + * @this {Raven} + */ + +Raven.prototype = { + // Hardcode version string so that raven source can be loaded directly via + // webpack (using a build step causes webpack #1617). Grunt verifies that + // this value matches package.json during build. + // See: https://github.com/getsentry/raven-js/issues/465 + VERSION: '3.25.2', + + debug: false, + + TraceKit: TraceKit, // alias to TraceKit + + /* + * Configure Raven with a DSN and extra options + * + * @param {string} dsn The public Sentry DSN + * @param {object} options Set of global options [optional] + * @return {Raven} + */ + config: function(dsn, options) { + var self = this; + + if (self._globalServer) { + this._logDebug('error', 'Error: Raven has already been configured'); + return self; + } + if (!dsn) return self; + + var globalOptions = self._globalOptions; + + // merge in options + if (options) { + each(options, function(key, value) { + // tags and extra are special and need to be put into context + if (key === 'tags' || key === 'extra' || key === 'user') { + self._globalContext[key] = value; + } else { + globalOptions[key] = value; + } + }); + } + + self.setDSN(dsn); + + // "Script error." is hard coded into browsers for errors that it can't read. + // this is the result of a script being pulled in from an external domain and CORS. + globalOptions.ignoreErrors.push(/^Script error\.?$/); + globalOptions.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/); + + // join regexp rules into one big rule + globalOptions.ignoreErrors = joinRegExp(globalOptions.ignoreErrors); + globalOptions.ignoreUrls = globalOptions.ignoreUrls.length + ? joinRegExp(globalOptions.ignoreUrls) + : false; + globalOptions.whitelistUrls = globalOptions.whitelistUrls.length + ? joinRegExp(globalOptions.whitelistUrls) + : false; + globalOptions.includePaths = joinRegExp(globalOptions.includePaths); + globalOptions.maxBreadcrumbs = Math.max( + 0, + Math.min(globalOptions.maxBreadcrumbs || 100, 100) + ); // default and hard limit is 100 + + var autoBreadcrumbDefaults = { + xhr: true, + console: true, + dom: true, + location: true, + sentry: true + }; + + var autoBreadcrumbs = globalOptions.autoBreadcrumbs; + if ({}.toString.call(autoBreadcrumbs) === '[object Object]') { + autoBreadcrumbs = objectMerge(autoBreadcrumbDefaults, autoBreadcrumbs); + } else if (autoBreadcrumbs !== false) { + autoBreadcrumbs = autoBreadcrumbDefaults; + } + globalOptions.autoBreadcrumbs = autoBreadcrumbs; + + var instrumentDefaults = { + tryCatch: true + }; + + var instrument = globalOptions.instrument; + if ({}.toString.call(instrument) === '[object Object]') { + instrument = objectMerge(instrumentDefaults, instrument); + } else if (instrument !== false) { + instrument = instrumentDefaults; + } + globalOptions.instrument = instrument; + + TraceKit.collectWindowErrors = !!globalOptions.collectWindowErrors; + + // return for chaining + return self; + }, + + /* + * Installs a global window.onerror error handler + * to capture and report uncaught exceptions. + * At this point, install() is required to be called due + * to the way TraceKit is set up. + * + * @return {Raven} + */ + install: function() { + var self = this; + if (self.isSetup() && !self._isRavenInstalled) { + TraceKit.report.subscribe(function() { + self._handleOnErrorStackInfo.apply(self, arguments); + }); + + if (self._globalOptions.captureUnhandledRejections) { + self._attachPromiseRejectionHandler(); + } + + self._patchFunctionToString(); + + if (self._globalOptions.instrument && self._globalOptions.instrument.tryCatch) { + self._instrumentTryCatch(); + } + + if (self._globalOptions.autoBreadcrumbs) self._instrumentBreadcrumbs(); + + // Install all of the plugins + self._drainPlugins(); + + self._isRavenInstalled = true; + } + + Error.stackTraceLimit = self._globalOptions.stackTraceLimit; + return this; + }, + + /* + * Set the DSN (can be called multiple time unlike config) + * + * @param {string} dsn The public Sentry DSN + */ + setDSN: function(dsn) { + var self = this, + uri = self._parseDSN(dsn), + lastSlash = uri.path.lastIndexOf('/'), + path = uri.path.substr(1, lastSlash); + + self._dsn = dsn; + self._globalKey = uri.user; + self._globalSecret = uri.pass && uri.pass.substr(1); + self._globalProject = uri.path.substr(lastSlash + 1); + + self._globalServer = self._getGlobalServer(uri); + + self._globalEndpoint = + self._globalServer + '/' + path + 'api/' + self._globalProject + '/store/'; + + // Reset backoff state since we may be pointing at a + // new project/server + this._resetBackoff(); + }, + + /* + * Wrap code within a context so Raven can capture errors + * reliably across domains that is executed immediately. + * + * @param {object} options A specific set of options for this context [optional] + * @param {function} func The callback to be immediately executed within the context + * @param {array} args An array of arguments to be called with the callback [optional] + */ + context: function(options, func, args) { + if (isFunction(options)) { + args = func || []; + func = options; + options = undefined; + } + + return this.wrap(options, func).apply(this, args); + }, + + /* + * Wrap code within a context and returns back a new function to be executed + * + * @param {object} options A specific set of options for this context [optional] + * @param {function} func The function to be wrapped in a new context + * @param {function} func A function to call before the try/catch wrapper [optional, private] + * @return {function} The newly wrapped functions with a context + */ + wrap: function(options, func, _before) { + var self = this; + // 1 argument has been passed, and it's not a function + // so just return it + if (isUndefined(func) && !isFunction(options)) { + return options; + } + + // options is optional + if (isFunction(options)) { + func = options; + options = undefined; + } + + // At this point, we've passed along 2 arguments, and the second one + // is not a function either, so we'll just return the second argument. + if (!isFunction(func)) { + return func; + } + + // We don't wanna wrap it twice! + try { + if (func.__raven__) { + return func; + } + + // If this has already been wrapped in the past, return that + if (func.__raven_wrapper__) { + return func.__raven_wrapper__; + } + } catch (e) { + // Just accessing custom props in some Selenium environments + // can cause a "Permission denied" exception (see raven-js#495). + // Bail on wrapping and return the function as-is (defers to window.onerror). + return func; + } + + function wrapped() { + var args = [], + i = arguments.length, + deep = !options || (options && options.deep !== false); + + if (_before && isFunction(_before)) { + _before.apply(this, arguments); + } + + // Recursively wrap all of a function's arguments that are + // functions themselves. + while (i--) args[i] = deep ? self.wrap(options, arguments[i]) : arguments[i]; + + try { + // Attempt to invoke user-land function + // NOTE: If you are a Sentry user, and you are seeing this stack frame, it + // means Raven caught an error invoking your application code. This is + // expected behavior and NOT indicative of a bug with Raven.js. + return func.apply(this, args); + } catch (e) { + self._ignoreNextOnError(); + self.captureException(e, options); + throw e; + } + } + + // copy over properties of the old function + for (var property in func) { + if (hasKey(func, property)) { + wrapped[property] = func[property]; + } + } + wrapped.prototype = func.prototype; + + func.__raven_wrapper__ = wrapped; + // Signal that this function has been wrapped/filled already + // for both debugging and to prevent it to being wrapped/filled twice + wrapped.__raven__ = true; + wrapped.__orig__ = func; + + return wrapped; + }, + + /** + * Uninstalls the global error handler. + * + * @return {Raven} + */ + uninstall: function() { + TraceKit.report.uninstall(); + + this._detachPromiseRejectionHandler(); + this._unpatchFunctionToString(); + this._restoreBuiltIns(); + this._restoreConsole(); + + Error.stackTraceLimit = this._originalErrorStackTraceLimit; + this._isRavenInstalled = false; + + return this; + }, + + /** + * Callback used for `unhandledrejection` event + * + * @param {PromiseRejectionEvent} event An object containing + * promise: the Promise that was rejected + * reason: the value with which the Promise was rejected + * @return void + */ + _promiseRejectionHandler: function(event) { + this._logDebug('debug', 'Raven caught unhandled promise rejection:', event); + this.captureException(event.reason, { + extra: { + unhandledPromiseRejection: true + } + }); + }, + + /** + * Installs the global promise rejection handler. + * + * @return {raven} + */ + _attachPromiseRejectionHandler: function() { + this._promiseRejectionHandler = this._promiseRejectionHandler.bind(this); + _window.addEventListener && + _window.addEventListener('unhandledrejection', this._promiseRejectionHandler); + return this; + }, + + /** + * Uninstalls the global promise rejection handler. + * + * @return {raven} + */ + _detachPromiseRejectionHandler: function() { + _window.removeEventListener && + _window.removeEventListener('unhandledrejection', this._promiseRejectionHandler); + return this; + }, + + /** + * Manually capture an exception and send it over to Sentry + * + * @param {error} ex An exception to be logged + * @param {object} options A specific set of options for this error [optional] + * @return {Raven} + */ + captureException: function(ex, options) { + options = objectMerge({trimHeadFrames: 0}, options ? options : {}); + + if (isErrorEvent(ex) && ex.error) { + // If it is an ErrorEvent with `error` property, extract it to get actual Error + ex = ex.error; + } else if (isDOMError(ex) || isDOMException(ex)) { + // If it is a DOMError or DOMException (which are legacy APIs, but still supported in some browsers) + // then we just extract the name and message, as they don't provide anything else + // https://developer.mozilla.org/en-US/docs/Web/API/DOMError + // https://developer.mozilla.org/en-US/docs/Web/API/DOMException + var name = ex.name || (isDOMError(ex) ? 'DOMError' : 'DOMException'); + var message = ex.message ? name + ': ' + ex.message : name; + + return this.captureMessage( + message, + objectMerge(options, { + // neither DOMError or DOMException provide stack trace and we most likely wont get it this way as well + // but it's barely any overhead so we may at least try + stacktrace: true, + trimHeadFrames: options.trimHeadFrames + 1 + }) + ); + } else if (isError(ex)) { + // we have a real Error object + ex = ex; + } else if (isPlainObject(ex)) { + // If it is plain Object, serialize it manually and extract options + // This will allow us to group events based on top-level keys + // which is much better than creating new group when any key/value change + options = this._getCaptureExceptionOptionsFromPlainObject(options, ex); + ex = new Error(options.message); + } else { + // If none of previous checks were valid, then it means that + // it's not a DOMError/DOMException + // it's not a plain Object + // it's not a valid ErrorEvent (one with an error property) + // it's not an Error + // So bail out and capture it as a simple message: + return this.captureMessage( + ex, + objectMerge(options, { + stacktrace: true, // if we fall back to captureMessage, default to attempting a new trace + trimHeadFrames: options.trimHeadFrames + 1 + }) + ); + } + + // Store the raw exception object for potential debugging and introspection + this._lastCapturedException = ex; + + // TraceKit.report will re-raise any exception passed to it, + // which means you have to wrap it in try/catch. Instead, we + // can wrap it here and only re-raise if TraceKit.report + // raises an exception different from the one we asked to + // report on. + try { + var stack = TraceKit.computeStackTrace(ex); + this._handleStackInfo(stack, options); + } catch (ex1) { + if (ex !== ex1) { + throw ex1; + } + } + + return this; + }, + + _getCaptureExceptionOptionsFromPlainObject: function(currentOptions, ex) { + var exKeys = Object.keys(ex).sort(); + var options = objectMerge(currentOptions, { + message: + 'Non-Error exception captured with keys: ' + serializeKeysForMessage(exKeys), + fingerprint: [md5(exKeys)], + extra: currentOptions.extra || {} + }); + options.extra.__serialized__ = serializeException(ex); + + return options; + }, + + /* + * Manually send a message to Sentry + * + * @param {string} msg A plain message to be captured in Sentry + * @param {object} options A specific set of options for this message [optional] + * @return {Raven} + */ + captureMessage: function(msg, options) { + // config() automagically converts ignoreErrors from a list to a RegExp so we need to test for an + // early call; we'll error on the side of logging anything called before configuration since it's + // probably something you should see: + if ( + !!this._globalOptions.ignoreErrors.test && + this._globalOptions.ignoreErrors.test(msg) + ) { + return; + } + + options = options || {}; + msg = msg + ''; // Make sure it's actually a string + + var data = objectMerge( + { + message: msg + }, + options + ); + + var ex; + // Generate a "synthetic" stack trace from this point. + // NOTE: If you are a Sentry user, and you are seeing this stack frame, it is NOT indicative + // of a bug with Raven.js. Sentry generates synthetic traces either by configuration, + // or if it catches a thrown object without a "stack" property. + try { + throw new Error(msg); + } catch (ex1) { + ex = ex1; + } + + // null exception name so `Error` isn't prefixed to msg + ex.name = null; + var stack = TraceKit.computeStackTrace(ex); + + // stack[0] is `throw new Error(msg)` call itself, we are interested in the frame that was just before that, stack[1] + var initialCall = isArray(stack.stack) && stack.stack[1]; + + // if stack[1] is `Raven.captureException`, it means that someone passed a string to it and we redirected that call + // to be handled by `captureMessage`, thus `initialCall` is the 3rd one, not 2nd + // initialCall => captureException(string) => captureMessage(string) + if (initialCall && initialCall.func === 'Raven.captureException') { + initialCall = stack.stack[2]; + } + + var fileurl = (initialCall && initialCall.url) || ''; + + if ( + !!this._globalOptions.ignoreUrls.test && + this._globalOptions.ignoreUrls.test(fileurl) + ) { + return; + } + + if ( + !!this._globalOptions.whitelistUrls.test && + !this._globalOptions.whitelistUrls.test(fileurl) + ) { + return; + } + + if (this._globalOptions.stacktrace || (options && options.stacktrace)) { + // fingerprint on msg, not stack trace (legacy behavior, could be revisited) + data.fingerprint = data.fingerprint == null ? msg : data.fingerprint; + + options = objectMerge( + { + trimHeadFrames: 0 + }, + options + ); + // Since we know this is a synthetic trace, the top frame (this function call) + // MUST be from Raven.js, so mark it for trimming + // We add to the trim counter so that callers can choose to trim extra frames, such + // as utility functions. + options.trimHeadFrames += 1; + + var frames = this._prepareFrames(stack, options); + data.stacktrace = { + // Sentry expects frames oldest to newest + frames: frames.reverse() + }; + } + + // Make sure that fingerprint is always wrapped in an array + if (data.fingerprint) { + data.fingerprint = isArray(data.fingerprint) + ? data.fingerprint + : [data.fingerprint]; + } + + // Fire away! + this._send(data); + + return this; + }, + + captureBreadcrumb: function(obj) { + var crumb = objectMerge( + { + timestamp: now() / 1000 + }, + obj + ); + + if (isFunction(this._globalOptions.breadcrumbCallback)) { + var result = this._globalOptions.breadcrumbCallback(crumb); + + if (isObject(result) && !isEmptyObject(result)) { + crumb = result; + } else if (result === false) { + return this; + } + } + + this._breadcrumbs.push(crumb); + if (this._breadcrumbs.length > this._globalOptions.maxBreadcrumbs) { + this._breadcrumbs.shift(); + } + return this; + }, + + addPlugin: function(plugin /*arg1, arg2, ... argN*/) { + var pluginArgs = [].slice.call(arguments, 1); + + this._plugins.push([plugin, pluginArgs]); + if (this._isRavenInstalled) { + this._drainPlugins(); + } + + return this; + }, + + /* + * Set/clear a user to be sent along with the payload. + * + * @param {object} user An object representing user data [optional] + * @return {Raven} + */ + setUserContext: function(user) { + // Intentionally do not merge here since that's an unexpected behavior. + this._globalContext.user = user; + + return this; + }, + + /* + * Merge extra attributes to be sent along with the payload. + * + * @param {object} extra An object representing extra data [optional] + * @return {Raven} + */ + setExtraContext: function(extra) { + this._mergeContext('extra', extra); + + return this; + }, + + /* + * Merge tags to be sent along with the payload. + * + * @param {object} tags An object representing tags [optional] + * @return {Raven} + */ + setTagsContext: function(tags) { + this._mergeContext('tags', tags); + + return this; + }, + + /* + * Clear all of the context. + * + * @return {Raven} + */ + clearContext: function() { + this._globalContext = {}; + + return this; + }, + + /* + * Get a copy of the current context. This cannot be mutated. + * + * @return {object} copy of context + */ + getContext: function() { + // lol javascript + return JSON.parse(stringify(this._globalContext)); + }, + + /* + * Set environment of application + * + * @param {string} environment Typically something like 'production'. + * @return {Raven} + */ + setEnvironment: function(environment) { + this._globalOptions.environment = environment; + + return this; + }, + + /* + * Set release version of application + * + * @param {string} release Typically something like a git SHA to identify version + * @return {Raven} + */ + setRelease: function(release) { + this._globalOptions.release = release; + + return this; + }, + + /* + * Set the dataCallback option + * + * @param {function} callback The callback to run which allows the + * data blob to be mutated before sending + * @return {Raven} + */ + setDataCallback: function(callback) { + var original = this._globalOptions.dataCallback; + this._globalOptions.dataCallback = keepOriginalCallback(original, callback); + return this; + }, + + /* + * Set the breadcrumbCallback option + * + * @param {function} callback The callback to run which allows filtering + * or mutating breadcrumbs + * @return {Raven} + */ + setBreadcrumbCallback: function(callback) { + var original = this._globalOptions.breadcrumbCallback; + this._globalOptions.breadcrumbCallback = keepOriginalCallback(original, callback); + return this; + }, + + /* + * Set the shouldSendCallback option + * + * @param {function} callback The callback to run which allows + * introspecting the blob before sending + * @return {Raven} + */ + setShouldSendCallback: function(callback) { + var original = this._globalOptions.shouldSendCallback; + this._globalOptions.shouldSendCallback = keepOriginalCallback(original, callback); + return this; + }, + + /** + * Override the default HTTP transport mechanism that transmits data + * to the Sentry server. + * + * @param {function} transport Function invoked instead of the default + * `makeRequest` handler. + * + * @return {Raven} + */ + setTransport: function(transport) { + this._globalOptions.transport = transport; + + return this; + }, + + /* + * Get the latest raw exception that was captured by Raven. + * + * @return {error} + */ + lastException: function() { + return this._lastCapturedException; + }, + + /* + * Get the last event id + * + * @return {string} + */ + lastEventId: function() { + return this._lastEventId; + }, + + /* + * Determine if Raven is setup and ready to go. + * + * @return {boolean} + */ + isSetup: function() { + if (!this._hasJSON) return false; // needs JSON support + if (!this._globalServer) { + if (!this.ravenNotConfiguredError) { + this.ravenNotConfiguredError = true; + this._logDebug('error', 'Error: Raven has not been configured.'); + } + return false; + } + return true; + }, + + afterLoad: function() { + // TODO: remove window dependence? + + // Attempt to initialize Raven on load + var RavenConfig = _window.RavenConfig; + if (RavenConfig) { + this.config(RavenConfig.dsn, RavenConfig.config).install(); + } + }, + + showReportDialog: function(options) { + if ( + !_document // doesn't work without a document (React native) + ) + return; + + options = options || {}; + + var lastEventId = options.eventId || this.lastEventId(); + if (!lastEventId) { + throw new RavenConfigError('Missing eventId'); + } + + var dsn = options.dsn || this._dsn; + if (!dsn) { + throw new RavenConfigError('Missing DSN'); + } + + var encode = encodeURIComponent; + var qs = ''; + qs += '?eventId=' + encode(lastEventId); + qs += '&dsn=' + encode(dsn); + + var user = options.user || this._globalContext.user; + if (user) { + if (user.name) qs += '&name=' + encode(user.name); + if (user.email) qs += '&email=' + encode(user.email); + } + + var globalServer = this._getGlobalServer(this._parseDSN(dsn)); + + var script = _document.createElement('script'); + script.async = true; + script.src = globalServer + '/api/embed/error-page/' + qs; + (_document.head || _document.body).appendChild(script); + }, + + /**** Private functions ****/ + _ignoreNextOnError: function() { + var self = this; + this._ignoreOnError += 1; + setTimeout(function() { + // onerror should trigger before setTimeout + self._ignoreOnError -= 1; + }); + }, + + _triggerEvent: function(eventType, options) { + // NOTE: `event` is a native browser thing, so let's avoid conflicting wiht it + var evt, key; + + if (!this._hasDocument) return; + + options = options || {}; + + eventType = 'raven' + eventType.substr(0, 1).toUpperCase() + eventType.substr(1); + + if (_document.createEvent) { + evt = _document.createEvent('HTMLEvents'); + evt.initEvent(eventType, true, true); + } else { + evt = _document.createEventObject(); + evt.eventType = eventType; + } + + for (key in options) + if (hasKey(options, key)) { + evt[key] = options[key]; + } + + if (_document.createEvent) { + // IE9 if standards + _document.dispatchEvent(evt); + } else { + // IE8 regardless of Quirks or Standards + // IE9 if quirks + try { + _document.fireEvent('on' + evt.eventType.toLowerCase(), evt); + } catch (e) { + // Do nothing + } + } + }, + + /** + * Wraps addEventListener to capture UI breadcrumbs + * @param evtName the event name (e.g. "click") + * @returns {Function} + * @private + */ + _breadcrumbEventHandler: function(evtName) { + var self = this; + return function(evt) { + // reset keypress timeout; e.g. triggering a 'click' after + // a 'keypress' will reset the keypress debounce so that a new + // set of keypresses can be recorded + self._keypressTimeout = null; + + // It's possible this handler might trigger multiple times for the same + // event (e.g. event propagation through node ancestors). Ignore if we've + // already captured the event. + if (self._lastCapturedEvent === evt) return; + + self._lastCapturedEvent = evt; + + // try/catch both: + // - accessing evt.target (see getsentry/raven-js#838, #768) + // - `htmlTreeAsString` because it's complex, and just accessing the DOM incorrectly + // can throw an exception in some circumstances. + var target; + try { + target = htmlTreeAsString(evt.target); + } catch (e) { + target = ''; + } + + self.captureBreadcrumb({ + category: 'ui.' + evtName, // e.g. ui.click, ui.input + message: target + }); + }; + }, + + /** + * Wraps addEventListener to capture keypress UI events + * @returns {Function} + * @private + */ + _keypressEventHandler: function() { + var self = this, + debounceDuration = 1000; // milliseconds + + // TODO: if somehow user switches keypress target before + // debounce timeout is triggered, we will only capture + // a single breadcrumb from the FIRST target (acceptable?) + return function(evt) { + var target; + try { + target = evt.target; + } catch (e) { + // just accessing event properties can throw an exception in some rare circumstances + // see: https://github.com/getsentry/raven-js/issues/838 + return; + } + var tagName = target && target.tagName; + + // only consider keypress events on actual input elements + // this will disregard keypresses targeting body (e.g. tabbing + // through elements, hotkeys, etc) + if ( + !tagName || + (tagName !== 'INPUT' && tagName !== 'TEXTAREA' && !target.isContentEditable) + ) + return; + + // record first keypress in a series, but ignore subsequent + // keypresses until debounce clears + var timeout = self._keypressTimeout; + if (!timeout) { + self._breadcrumbEventHandler('input')(evt); + } + clearTimeout(timeout); + self._keypressTimeout = setTimeout(function() { + self._keypressTimeout = null; + }, debounceDuration); + }; + }, + + /** + * Captures a breadcrumb of type "navigation", normalizing input URLs + * @param to the originating URL + * @param from the target URL + * @private + */ + _captureUrlChange: function(from, to) { + var parsedLoc = parseUrl(this._location.href); + var parsedTo = parseUrl(to); + var parsedFrom = parseUrl(from); + + // because onpopstate only tells you the "new" (to) value of location.href, and + // not the previous (from) value, we need to track the value of the current URL + // state ourselves + this._lastHref = to; + + // Use only the path component of the URL if the URL matches the current + // document (almost all the time when using pushState) + if (parsedLoc.protocol === parsedTo.protocol && parsedLoc.host === parsedTo.host) + to = parsedTo.relative; + if (parsedLoc.protocol === parsedFrom.protocol && parsedLoc.host === parsedFrom.host) + from = parsedFrom.relative; + + this.captureBreadcrumb({ + category: 'navigation', + data: { + to: to, + from: from + } + }); + }, + + _patchFunctionToString: function() { + var self = this; + self._originalFunctionToString = Function.prototype.toString; + // eslint-disable-next-line no-extend-native + Function.prototype.toString = function() { + if (typeof this === 'function' && this.__raven__) { + return self._originalFunctionToString.apply(this.__orig__, arguments); + } + return self._originalFunctionToString.apply(this, arguments); + }; + }, + + _unpatchFunctionToString: function() { + if (this._originalFunctionToString) { + // eslint-disable-next-line no-extend-native + Function.prototype.toString = this._originalFunctionToString; + } + }, + + /** + * Wrap timer functions and event targets to catch errors and provide + * better metadata. + */ + _instrumentTryCatch: function() { + var self = this; + + var wrappedBuiltIns = self._wrappedBuiltIns; + + function wrapTimeFn(orig) { + return function(fn, t) { + // preserve arity + // Make a copy of the arguments to prevent deoptimization + // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments + var args = new Array(arguments.length); + for (var i = 0; i < args.length; ++i) { + args[i] = arguments[i]; + } + var originalCallback = args[0]; + if (isFunction(originalCallback)) { + args[0] = self.wrap(originalCallback); + } + + // IE < 9 doesn't support .call/.apply on setInterval/setTimeout, but it + // also supports only two arguments and doesn't care what this is, so we + // can just call the original function directly. + if (orig.apply) { + return orig.apply(this, args); + } else { + return orig(args[0], args[1]); + } + }; + } + + var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; + + function wrapEventTarget(global) { + var proto = _window[global] && _window[global].prototype; + if (proto && proto.hasOwnProperty && proto.hasOwnProperty('addEventListener')) { + fill( + proto, + 'addEventListener', + function(orig) { + return function(evtName, fn, capture, secure) { + // preserve arity + try { + if (fn && fn.handleEvent) { + fn.handleEvent = self.wrap(fn.handleEvent); + } + } catch (err) { + // can sometimes get 'Permission denied to access property "handle Event' + } + + // More breadcrumb DOM capture ... done here and not in `_instrumentBreadcrumbs` + // so that we don't have more than one wrapper function + var before, clickHandler, keypressHandler; + + if ( + autoBreadcrumbs && + autoBreadcrumbs.dom && + (global === 'EventTarget' || global === 'Node') + ) { + // NOTE: generating multiple handlers per addEventListener invocation, should + // revisit and verify we can just use one (almost certainly) + clickHandler = self._breadcrumbEventHandler('click'); + keypressHandler = self._keypressEventHandler(); + before = function(evt) { + // need to intercept every DOM event in `before` argument, in case that + // same wrapped method is re-used for different events (e.g. mousemove THEN click) + // see #724 + if (!evt) return; + + var eventType; + try { + eventType = evt.type; + } catch (e) { + // just accessing event properties can throw an exception in some rare circumstances + // see: https://github.com/getsentry/raven-js/issues/838 + return; + } + if (eventType === 'click') return clickHandler(evt); + else if (eventType === 'keypress') return keypressHandler(evt); + }; + } + return orig.call( + this, + evtName, + self.wrap(fn, undefined, before), + capture, + secure + ); + }; + }, + wrappedBuiltIns + ); + fill( + proto, + 'removeEventListener', + function(orig) { + return function(evt, fn, capture, secure) { + try { + fn = fn && (fn.__raven_wrapper__ ? fn.__raven_wrapper__ : fn); + } catch (e) { + // ignore, accessing __raven_wrapper__ will throw in some Selenium environments + } + return orig.call(this, evt, fn, capture, secure); + }; + }, + wrappedBuiltIns + ); + } + } + + fill(_window, 'setTimeout', wrapTimeFn, wrappedBuiltIns); + fill(_window, 'setInterval', wrapTimeFn, wrappedBuiltIns); + if (_window.requestAnimationFrame) { + fill( + _window, + 'requestAnimationFrame', + function(orig) { + return function(cb) { + return orig(self.wrap(cb)); + }; + }, + wrappedBuiltIns + ); + } + + // event targets borrowed from bugsnag-js: + // https://github.com/bugsnag/bugsnag-js/blob/master/src/bugsnag.js#L666 + var eventTargets = [ + 'EventTarget', + 'Window', + 'Node', + 'ApplicationCache', + 'AudioTrackList', + 'ChannelMergerNode', + 'CryptoOperation', + 'EventSource', + 'FileReader', + 'HTMLUnknownElement', + 'IDBDatabase', + 'IDBRequest', + 'IDBTransaction', + 'KeyOperation', + 'MediaController', + 'MessagePort', + 'ModalWindow', + 'Notification', + 'SVGElementInstance', + 'Screen', + 'TextTrack', + 'TextTrackCue', + 'TextTrackList', + 'WebSocket', + 'WebSocketWorker', + 'Worker', + 'XMLHttpRequest', + 'XMLHttpRequestEventTarget', + 'XMLHttpRequestUpload' + ]; + for (var i = 0; i < eventTargets.length; i++) { + wrapEventTarget(eventTargets[i]); + } + }, + + /** + * Instrument browser built-ins w/ breadcrumb capturing + * - XMLHttpRequests + * - DOM interactions (click/typing) + * - window.location changes + * - console + * + * Can be disabled or individually configured via the `autoBreadcrumbs` config option + */ + _instrumentBreadcrumbs: function() { + var self = this; + var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; + + var wrappedBuiltIns = self._wrappedBuiltIns; + + function wrapProp(prop, xhr) { + if (prop in xhr && isFunction(xhr[prop])) { + fill(xhr, prop, function(orig) { + return self.wrap(orig); + }); // intentionally don't track filled methods on XHR instances + } + } + + if (autoBreadcrumbs.xhr && 'XMLHttpRequest' in _window) { + var xhrproto = _window.XMLHttpRequest && _window.XMLHttpRequest.prototype; + fill( + xhrproto, + 'open', + function(origOpen) { + return function(method, url) { + // preserve arity + + // if Sentry key appears in URL, don't capture + if (isString(url) && url.indexOf(self._globalKey) === -1) { + this.__raven_xhr = { + method: method, + url: url, + status_code: null + }; + } + + return origOpen.apply(this, arguments); + }; + }, + wrappedBuiltIns + ); + + fill( + xhrproto, + 'send', + function(origSend) { + return function() { + // preserve arity + var xhr = this; + + function onreadystatechangeHandler() { + if (xhr.__raven_xhr && xhr.readyState === 4) { + try { + // touching statusCode in some platforms throws + // an exception + xhr.__raven_xhr.status_code = xhr.status; + } catch (e) { + /* do nothing */ + } + + self.captureBreadcrumb({ + type: 'http', + category: 'xhr', + data: xhr.__raven_xhr + }); + } + } + + var props = ['onload', 'onerror', 'onprogress']; + for (var j = 0; j < props.length; j++) { + wrapProp(props[j], xhr); + } + + if ('onreadystatechange' in xhr && isFunction(xhr.onreadystatechange)) { + fill( + xhr, + 'onreadystatechange', + function(orig) { + return self.wrap(orig, undefined, onreadystatechangeHandler); + } /* intentionally don't track this instrumentation */ + ); + } else { + // if onreadystatechange wasn't actually set by the page on this xhr, we + // are free to set our own and capture the breadcrumb + xhr.onreadystatechange = onreadystatechangeHandler; + } + + return origSend.apply(this, arguments); + }; + }, + wrappedBuiltIns + ); + } + + if (autoBreadcrumbs.xhr && supportsFetch()) { + fill( + _window, + 'fetch', + function(origFetch) { + return function() { + // preserve arity + // Make a copy of the arguments to prevent deoptimization + // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments + var args = new Array(arguments.length); + for (var i = 0; i < args.length; ++i) { + args[i] = arguments[i]; + } + + var fetchInput = args[0]; + var method = 'GET'; + var url; + + if (typeof fetchInput === 'string') { + url = fetchInput; + } else if ('Request' in _window && fetchInput instanceof _window.Request) { + url = fetchInput.url; + if (fetchInput.method) { + method = fetchInput.method; + } + } else { + url = '' + fetchInput; + } + + // if Sentry key appears in URL, don't capture, as it's our own request + if (url.indexOf(self._globalKey) !== -1) { + return origFetch.apply(this, args); + } + + if (args[1] && args[1].method) { + method = args[1].method; + } + + var fetchData = { + method: method, + url: url, + status_code: null + }; + + return origFetch + .apply(this, args) + .then(function(response) { + fetchData.status_code = response.status; + + self.captureBreadcrumb({ + type: 'http', + category: 'fetch', + data: fetchData + }); + + return response; + }) + ['catch'](function(err) { + // if there is an error performing the request + self.captureBreadcrumb({ + type: 'http', + category: 'fetch', + data: fetchData, + level: 'error' + }); + + throw err; + }); + }; + }, + wrappedBuiltIns + ); + } + + // Capture breadcrumbs from any click that is unhandled / bubbled up all the way + // to the document. Do this before we instrument addEventListener. + if (autoBreadcrumbs.dom && this._hasDocument) { + if (_document.addEventListener) { + _document.addEventListener('click', self._breadcrumbEventHandler('click'), false); + _document.addEventListener('keypress', self._keypressEventHandler(), false); + } else if (_document.attachEvent) { + // IE8 Compatibility + _document.attachEvent('onclick', self._breadcrumbEventHandler('click')); + _document.attachEvent('onkeypress', self._keypressEventHandler()); + } + } + + // record navigation (URL) changes + // NOTE: in Chrome App environment, touching history.pushState, *even inside + // a try/catch block*, will cause Chrome to output an error to console.error + // borrowed from: https://github.com/angular/angular.js/pull/13945/files + var chrome = _window.chrome; + var isChromePackagedApp = chrome && chrome.app && chrome.app.runtime; + var hasPushAndReplaceState = + !isChromePackagedApp && + _window.history && + _window.history.pushState && + _window.history.replaceState; + if (autoBreadcrumbs.location && hasPushAndReplaceState) { + // TODO: remove onpopstate handler on uninstall() + var oldOnPopState = _window.onpopstate; + _window.onpopstate = function() { + var currentHref = self._location.href; + self._captureUrlChange(self._lastHref, currentHref); + + if (oldOnPopState) { + return oldOnPopState.apply(this, arguments); + } + }; + + var historyReplacementFunction = function(origHistFunction) { + // note history.pushState.length is 0; intentionally not declaring + // params to preserve 0 arity + return function(/* state, title, url */) { + var url = arguments.length > 2 ? arguments[2] : undefined; + + // url argument is optional + if (url) { + // coerce to string (this is what pushState does) + self._captureUrlChange(self._lastHref, url + ''); + } + + return origHistFunction.apply(this, arguments); + }; + }; + + fill(_window.history, 'pushState', historyReplacementFunction, wrappedBuiltIns); + fill(_window.history, 'replaceState', historyReplacementFunction, wrappedBuiltIns); + } + + if (autoBreadcrumbs.console && 'console' in _window && console.log) { + // console + var consoleMethodCallback = function(msg, data) { + self.captureBreadcrumb({ + message: msg, + level: data.level, + category: 'console' + }); + }; + + each(['debug', 'info', 'warn', 'error', 'log'], function(_, level) { + wrapConsoleMethod(console, level, consoleMethodCallback); + }); + } + }, + + _restoreBuiltIns: function() { + // restore any wrapped builtins + var builtin; + while (this._wrappedBuiltIns.length) { + builtin = this._wrappedBuiltIns.shift(); + + var obj = builtin[0], + name = builtin[1], + orig = builtin[2]; + + obj[name] = orig; + } + }, + + _restoreConsole: function() { + // eslint-disable-next-line guard-for-in + for (var method in this._originalConsoleMethods) { + this._originalConsole[method] = this._originalConsoleMethods[method]; + } + }, + + _drainPlugins: function() { + var self = this; + + // FIX ME TODO + each(this._plugins, function(_, plugin) { + var installer = plugin[0]; + var args = plugin[1]; + installer.apply(self, [self].concat(args)); + }); + }, + + _parseDSN: function(str) { + var m = dsnPattern.exec(str), + dsn = {}, + i = 7; + + try { + while (i--) dsn[dsnKeys[i]] = m[i] || ''; + } catch (e) { + throw new RavenConfigError('Invalid DSN: ' + str); + } + + if (dsn.pass && !this._globalOptions.allowSecretKey) { + throw new RavenConfigError( + 'Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key' + ); + } + + return dsn; + }, + + _getGlobalServer: function(uri) { + // assemble the endpoint from the uri pieces + var globalServer = '//' + uri.host + (uri.port ? ':' + uri.port : ''); + + if (uri.protocol) { + globalServer = uri.protocol + ':' + globalServer; + } + return globalServer; + }, + + _handleOnErrorStackInfo: function() { + // if we are intentionally ignoring errors via onerror, bail out + if (!this._ignoreOnError) { + this._handleStackInfo.apply(this, arguments); + } + }, + + _handleStackInfo: function(stackInfo, options) { + var frames = this._prepareFrames(stackInfo, options); + + this._triggerEvent('handle', { + stackInfo: stackInfo, + options: options + }); + + this._processException( + stackInfo.name, + stackInfo.message, + stackInfo.url, + stackInfo.lineno, + frames, + options + ); + }, + + _prepareFrames: function(stackInfo, options) { + var self = this; + var frames = []; + if (stackInfo.stack && stackInfo.stack.length) { + each(stackInfo.stack, function(i, stack) { + var frame = self._normalizeFrame(stack, stackInfo.url); + if (frame) { + frames.push(frame); + } + }); + + // e.g. frames captured via captureMessage throw + if (options && options.trimHeadFrames) { + for (var j = 0; j < options.trimHeadFrames && j < frames.length; j++) { + frames[j].in_app = false; + } + } + } + frames = frames.slice(0, this._globalOptions.stackTraceLimit); + return frames; + }, + + _normalizeFrame: function(frame, stackInfoUrl) { + // normalize the frames data + var normalized = { + filename: frame.url, + lineno: frame.line, + colno: frame.column, + function: frame.func || '?' + }; + + // Case when we don't have any information about the error + // E.g. throwing a string or raw object, instead of an `Error` in Firefox + // Generating synthetic error doesn't add any value here + // + // We should probably somehow let a user know that they should fix their code + if (!frame.url) { + normalized.filename = stackInfoUrl; // fallback to whole stacks url from onerror handler + } + + normalized.in_app = !// determine if an exception came from outside of our app + // first we check the global includePaths list. + ( + (!!this._globalOptions.includePaths.test && + !this._globalOptions.includePaths.test(normalized.filename)) || + // Now we check for fun, if the function name is Raven or TraceKit + /(Raven|TraceKit)\./.test(normalized['function']) || + // finally, we do a last ditch effort and check for raven.min.js + /raven\.(min\.)?js$/.test(normalized.filename) + ); + + return normalized; + }, + + _processException: function(type, message, fileurl, lineno, frames, options) { + var prefixedMessage = (type ? type + ': ' : '') + (message || ''); + if ( + !!this._globalOptions.ignoreErrors.test && + (this._globalOptions.ignoreErrors.test(message) || + this._globalOptions.ignoreErrors.test(prefixedMessage)) + ) { + return; + } + + var stacktrace; + + if (frames && frames.length) { + fileurl = frames[0].filename || fileurl; + // Sentry expects frames oldest to newest + // and JS sends them as newest to oldest + frames.reverse(); + stacktrace = {frames: frames}; + } else if (fileurl) { + stacktrace = { + frames: [ + { + filename: fileurl, + lineno: lineno, + in_app: true + } + ] + }; + } + + if ( + !!this._globalOptions.ignoreUrls.test && + this._globalOptions.ignoreUrls.test(fileurl) + ) { + return; + } + + if ( + !!this._globalOptions.whitelistUrls.test && + !this._globalOptions.whitelistUrls.test(fileurl) + ) { + return; + } + + var data = objectMerge( + { + // sentry.interfaces.Exception + exception: { + values: [ + { + type: type, + value: message, + stacktrace: stacktrace + } + ] + }, + transaction: fileurl + }, + options + ); + + // Fire away! + this._send(data); + }, + + _trimPacket: function(data) { + // For now, we only want to truncate the two different messages + // but this could/should be expanded to just trim everything + var max = this._globalOptions.maxMessageLength; + if (data.message) { + data.message = truncate(data.message, max); + } + if (data.exception) { + var exception = data.exception.values[0]; + exception.value = truncate(exception.value, max); + } + + var request = data.request; + if (request) { + if (request.url) { + request.url = truncate(request.url, this._globalOptions.maxUrlLength); + } + if (request.Referer) { + request.Referer = truncate(request.Referer, this._globalOptions.maxUrlLength); + } + } + + if (data.breadcrumbs && data.breadcrumbs.values) + this._trimBreadcrumbs(data.breadcrumbs); + + return data; + }, + + /** + * Truncate breadcrumb values (right now just URLs) + */ + _trimBreadcrumbs: function(breadcrumbs) { + // known breadcrumb properties with urls + // TODO: also consider arbitrary prop values that start with (https?)?:// + var urlProps = ['to', 'from', 'url'], + urlProp, + crumb, + data; + + for (var i = 0; i < breadcrumbs.values.length; ++i) { + crumb = breadcrumbs.values[i]; + if ( + !crumb.hasOwnProperty('data') || + !isObject(crumb.data) || + objectFrozen(crumb.data) + ) + continue; + + data = objectMerge({}, crumb.data); + for (var j = 0; j < urlProps.length; ++j) { + urlProp = urlProps[j]; + if (data.hasOwnProperty(urlProp) && data[urlProp]) { + data[urlProp] = truncate(data[urlProp], this._globalOptions.maxUrlLength); + } + } + breadcrumbs.values[i].data = data; + } + }, + + _getHttpData: function() { + if (!this._hasNavigator && !this._hasDocument) return; + var httpData = {}; + + if (this._hasNavigator && _navigator.userAgent) { + httpData.headers = { + 'User-Agent': _navigator.userAgent + }; + } + + // Check in `window` instead of `document`, as we may be in ServiceWorker environment + if (_window.location && _window.location.href) { + httpData.url = _window.location.href; + } + + if (this._hasDocument && _document.referrer) { + if (!httpData.headers) httpData.headers = {}; + httpData.headers.Referer = _document.referrer; + } + + return httpData; + }, + + _resetBackoff: function() { + this._backoffDuration = 0; + this._backoffStart = null; + }, + + _shouldBackoff: function() { + return this._backoffDuration && now() - this._backoffStart < this._backoffDuration; + }, + + /** + * Returns true if the in-process data payload matches the signature + * of the previously-sent data + * + * NOTE: This has to be done at this level because TraceKit can generate + * data from window.onerror WITHOUT an exception object (IE8, IE9, + * other old browsers). This can take the form of an "exception" + * data object with a single frame (derived from the onerror args). + */ + _isRepeatData: function(current) { + var last = this._lastData; + + if ( + !last || + current.message !== last.message || // defined for captureMessage + current.transaction !== last.transaction // defined for captureException/onerror + ) + return false; + + // Stacktrace interface (i.e. from captureMessage) + if (current.stacktrace || last.stacktrace) { + return isSameStacktrace(current.stacktrace, last.stacktrace); + } else if (current.exception || last.exception) { + // Exception interface (i.e. from captureException/onerror) + return isSameException(current.exception, last.exception); + } + + return true; + }, + + _setBackoffState: function(request) { + // If we are already in a backoff state, don't change anything + if (this._shouldBackoff()) { + return; + } + + var status = request.status; + + // 400 - project_id doesn't exist or some other fatal + // 401 - invalid/revoked dsn + // 429 - too many requests + if (!(status === 400 || status === 401 || status === 429)) return; + + var retry; + try { + // If Retry-After is not in Access-Control-Expose-Headers, most + // browsers will throw an exception trying to access it + if (supportsFetch()) { + retry = request.headers.get('Retry-After'); + } else { + retry = request.getResponseHeader('Retry-After'); + } + + // Retry-After is returned in seconds + retry = parseInt(retry, 10) * 1000; + } catch (e) { + /* eslint no-empty:0 */ + } + + this._backoffDuration = retry + ? // If Sentry server returned a Retry-After value, use it + retry + : // Otherwise, double the last backoff duration (starts at 1 sec) + this._backoffDuration * 2 || 1000; + + this._backoffStart = now(); + }, + + _send: function(data) { + var globalOptions = this._globalOptions; + + var baseData = { + project: this._globalProject, + logger: globalOptions.logger, + platform: 'javascript' + }, + httpData = this._getHttpData(); + + if (httpData) { + baseData.request = httpData; + } + + // HACK: delete `trimHeadFrames` to prevent from appearing in outbound payload + if (data.trimHeadFrames) delete data.trimHeadFrames; + + data = objectMerge(baseData, data); + + // Merge in the tags and extra separately since objectMerge doesn't handle a deep merge + data.tags = objectMerge(objectMerge({}, this._globalContext.tags), data.tags); + data.extra = objectMerge(objectMerge({}, this._globalContext.extra), data.extra); + + // Send along our own collected metadata with extra + data.extra['session:duration'] = now() - this._startTime; + + if (this._breadcrumbs && this._breadcrumbs.length > 0) { + // intentionally make shallow copy so that additions + // to breadcrumbs aren't accidentally sent in this request + data.breadcrumbs = { + values: [].slice.call(this._breadcrumbs, 0) + }; + } + + if (this._globalContext.user) { + // sentry.interfaces.User + data.user = this._globalContext.user; + } + + // Include the environment if it's defined in globalOptions + if (globalOptions.environment) data.environment = globalOptions.environment; + + // Include the release if it's defined in globalOptions + if (globalOptions.release) data.release = globalOptions.release; + + // Include server_name if it's defined in globalOptions + if (globalOptions.serverName) data.server_name = globalOptions.serverName; + + data = this._sanitizeData(data); + + // Cleanup empty properties before sending them to the server + Object.keys(data).forEach(function(key) { + if (data[key] == null || data[key] === '' || isEmptyObject(data[key])) { + delete data[key]; + } + }); + + if (isFunction(globalOptions.dataCallback)) { + data = globalOptions.dataCallback(data) || data; + } + + // Why?????????? + if (!data || isEmptyObject(data)) { + return; + } + + // Check if the request should be filtered or not + if ( + isFunction(globalOptions.shouldSendCallback) && + !globalOptions.shouldSendCallback(data) + ) { + return; + } + + // Backoff state: Sentry server previously responded w/ an error (e.g. 429 - too many requests), + // so drop requests until "cool-off" period has elapsed. + if (this._shouldBackoff()) { + this._logDebug('warn', 'Raven dropped error due to backoff: ', data); + return; + } + + if (typeof globalOptions.sampleRate === 'number') { + if (Math.random() < globalOptions.sampleRate) { + this._sendProcessedPayload(data); + } + } else { + this._sendProcessedPayload(data); + } + }, + + _sanitizeData: function(data) { + return sanitize(data, this._globalOptions.sanitizeKeys); + }, + + _getUuid: function() { + return uuid4(); + }, + + _sendProcessedPayload: function(data, callback) { + var self = this; + var globalOptions = this._globalOptions; + + if (!this.isSetup()) return; + + // Try and clean up the packet before sending by truncating long values + data = this._trimPacket(data); + + // ideally duplicate error testing should occur *before* dataCallback/shouldSendCallback, + // but this would require copying an un-truncated copy of the data packet, which can be + // arbitrarily deep (extra_data) -- could be worthwhile? will revisit + if (!this._globalOptions.allowDuplicates && this._isRepeatData(data)) { + this._logDebug('warn', 'Raven dropped repeat event: ', data); + return; + } + + // Send along an event_id if not explicitly passed. + // This event_id can be used to reference the error within Sentry itself. + // Set lastEventId after we know the error should actually be sent + this._lastEventId = data.event_id || (data.event_id = this._getUuid()); + + // Store outbound payload after trim + this._lastData = data; + + this._logDebug('debug', 'Raven about to send:', data); + + var auth = { + sentry_version: '7', + sentry_client: 'raven-js/' + this.VERSION, + sentry_key: this._globalKey + }; + + if (this._globalSecret) { + auth.sentry_secret = this._globalSecret; + } + + var exception = data.exception && data.exception.values[0]; + + // only capture 'sentry' breadcrumb is autoBreadcrumbs is truthy + if ( + this._globalOptions.autoBreadcrumbs && + this._globalOptions.autoBreadcrumbs.sentry + ) { + this.captureBreadcrumb({ + category: 'sentry', + message: exception + ? (exception.type ? exception.type + ': ' : '') + exception.value + : data.message, + event_id: data.event_id, + level: data.level || 'error' // presume error unless specified + }); + } + + var url = this._globalEndpoint; + (globalOptions.transport || this._makeRequest).call(this, { + url: url, + auth: auth, + data: data, + options: globalOptions, + onSuccess: function success() { + self._resetBackoff(); + + self._triggerEvent('success', { + data: data, + src: url + }); + callback && callback(); + }, + onError: function failure(error) { + self._logDebug('error', 'Raven transport failed to send: ', error); + + if (error.request) { + self._setBackoffState(error.request); + } + + self._triggerEvent('failure', { + data: data, + src: url + }); + error = error || new Error('Raven send failed (no additional details provided)'); + callback && callback(error); + } + }); + }, + + _makeRequest: function(opts) { + // Auth is intentionally sent as part of query string (NOT as custom HTTP header) to avoid preflight CORS requests + var url = opts.url + '?' + urlencode(opts.auth); + + var evaluatedHeaders = null; + var evaluatedFetchParameters = {}; + + if (opts.options.headers) { + evaluatedHeaders = this._evaluateHash(opts.options.headers); + } + + if (opts.options.fetchParameters) { + evaluatedFetchParameters = this._evaluateHash(opts.options.fetchParameters); + } + + if (supportsFetch()) { + evaluatedFetchParameters.body = stringify(opts.data); + + var defaultFetchOptions = objectMerge({}, this._fetchDefaults); + var fetchOptions = objectMerge(defaultFetchOptions, evaluatedFetchParameters); + + if (evaluatedHeaders) { + fetchOptions.headers = evaluatedHeaders; + } + + return _window + .fetch(url, fetchOptions) + .then(function(response) { + if (response.ok) { + opts.onSuccess && opts.onSuccess(); + } else { + var error = new Error('Sentry error code: ' + response.status); + // It's called request only to keep compatibility with XHR interface + // and not add more redundant checks in setBackoffState method + error.request = response; + opts.onError && opts.onError(error); + } + }) + ['catch'](function() { + opts.onError && + opts.onError(new Error('Sentry error code: network unavailable')); + }); + } + + var request = _window.XMLHttpRequest && new _window.XMLHttpRequest(); + if (!request) return; + + // if browser doesn't support CORS (e.g. IE7), we are out of luck + var hasCORS = 'withCredentials' in request || typeof XDomainRequest !== 'undefined'; + + if (!hasCORS) return; + + if ('withCredentials' in request) { + request.onreadystatechange = function() { + if (request.readyState !== 4) { + return; + } else if (request.status === 200) { + opts.onSuccess && opts.onSuccess(); + } else if (opts.onError) { + var err = new Error('Sentry error code: ' + request.status); + err.request = request; + opts.onError(err); + } + }; + } else { + request = new XDomainRequest(); + // xdomainrequest cannot go http -> https (or vice versa), + // so always use protocol relative + url = url.replace(/^https?:/, ''); + + // onreadystatechange not supported by XDomainRequest + if (opts.onSuccess) { + request.onload = opts.onSuccess; + } + if (opts.onError) { + request.onerror = function() { + var err = new Error('Sentry error code: XDomainRequest'); + err.request = request; + opts.onError(err); + }; + } + } + + request.open('POST', url); + + if (evaluatedHeaders) { + each(evaluatedHeaders, function(key, value) { + request.setRequestHeader(key, value); + }); + } + + request.send(stringify(opts.data)); + }, + + _evaluateHash: function(hash) { + var evaluated = {}; + + for (var key in hash) { + if (hash.hasOwnProperty(key)) { + var value = hash[key]; + evaluated[key] = typeof value === 'function' ? value() : value; + } + } + + return evaluated; + }, + + _logDebug: function(level) { + // We allow `Raven.debug` and `Raven.config(DSN, { debug: true })` to not make backward incompatible API change + if ( + this._originalConsoleMethods[level] && + (this.debug || this._globalOptions.debug) + ) { + // In IE<10 console methods do not have their own 'apply' method + Function.prototype.apply.call( + this._originalConsoleMethods[level], + this._originalConsole, + [].slice.call(arguments, 1) + ); + } + }, + + _mergeContext: function(key, context) { + if (isUndefined(context)) { + delete this._globalContext[key]; + } else { + this._globalContext[key] = objectMerge(this._globalContext[key] || {}, context); + } + } +}; + +// Deprecations +Raven.prototype.setUser = Raven.prototype.setUserContext; +Raven.prototype.setReleaseContext = Raven.prototype.setRelease; + +module.exports = Raven; + +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"10":10,"3":3,"4":4,"7":7,"8":8,"9":9}],6:[function(_dereq_,module,exports){ +(function (global){ +/** + * Enforces a single instance of the Raven client, and the + * main entry point for Raven. If you are a consumer of the + * Raven library, you SHOULD load this file (vs raven.js). + **/ + +var RavenConstructor = _dereq_(5); + +// This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) +var _window = + typeof window !== 'undefined' + ? window + : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; +var _Raven = _window.Raven; + +var Raven = new RavenConstructor(); + +/* + * Allow multiple versions of Raven to be installed. + * Strip Raven from the global context and returns the instance. + * + * @return {Raven} + */ +Raven.noConflict = function() { + _window.Raven = _Raven; + return Raven; +}; + +Raven.afterLoad(); + +module.exports = Raven; + +/** + * DISCLAIMER: + * + * Expose `Client` constructor for cases where user want to track multiple "sub-applications" in one larger app. + * It's not meant to be used by a wide audience, so pleaaase make sure that you know what you're doing before using it. + * Accidentally calling `install` multiple times, may result in an unexpected behavior that's very hard to debug. + * + * It's called `Client' to be in-line with Raven Node implementation. + * + * HOWTO: + * + * import Raven from 'raven-js'; + * + * const someAppReporter = new Raven.Client(); + * const someOtherAppReporter = new Raven.Client(); + * + * someAppReporter.config('__DSN__', { + * ...config goes here + * }); + * + * someOtherAppReporter.config('__OTHER_DSN__', { + * ...config goes here + * }); + * + * someAppReporter.captureMessage(...); + * someAppReporter.captureException(...); + * someAppReporter.captureBreadcrumb(...); + * + * someOtherAppReporter.captureMessage(...); + * someOtherAppReporter.captureException(...); + * someOtherAppReporter.captureBreadcrumb(...); + * + * It should "just work". + */ +module.exports.Client = RavenConstructor; + +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"5":5}],7:[function(_dereq_,module,exports){ +(function (global){ +var stringify = _dereq_(9); + +var _window = + typeof window !== 'undefined' + ? window + : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; + +function isObject(what) { + return typeof what === 'object' && what !== null; +} + +// Yanked from https://git.io/vS8DV re-used under CC0 +// with some tiny modifications +function isError(value) { + switch (Object.prototype.toString.call(value)) { + case '[object Error]': + return true; + case '[object Exception]': + return true; + case '[object DOMException]': + return true; + default: + return value instanceof Error; + } +} + +function isErrorEvent(value) { + return Object.prototype.toString.call(value) === '[object ErrorEvent]'; +} + +function isDOMError(value) { + return Object.prototype.toString.call(value) === '[object DOMError]'; +} + +function isDOMException(value) { + return Object.prototype.toString.call(value) === '[object DOMException]'; +} + +function isUndefined(what) { + return what === void 0; +} + +function isFunction(what) { + return typeof what === 'function'; +} + +function isPlainObject(what) { + return Object.prototype.toString.call(what) === '[object Object]'; +} + +function isString(what) { + return Object.prototype.toString.call(what) === '[object String]'; +} + +function isArray(what) { + return Object.prototype.toString.call(what) === '[object Array]'; +} + +function isEmptyObject(what) { + if (!isPlainObject(what)) return false; + + for (var _ in what) { + if (what.hasOwnProperty(_)) { + return false; + } + } + return true; +} + +function supportsErrorEvent() { + try { + new ErrorEvent(''); // eslint-disable-line no-new + return true; + } catch (e) { + return false; + } +} + +function supportsDOMError() { + try { + new DOMError(''); // eslint-disable-line no-new + return true; + } catch (e) { + return false; + } +} + +function supportsDOMException() { + try { + new DOMException(''); // eslint-disable-line no-new + return true; + } catch (e) { + return false; + } +} + +function supportsFetch() { + if (!('fetch' in _window)) return false; + + try { + new Headers(); // eslint-disable-line no-new + new Request(''); // eslint-disable-line no-new + new Response(); // eslint-disable-line no-new + return true; + } catch (e) { + return false; + } +} + +// Despite all stars in the sky saying that Edge supports old draft syntax, aka 'never', 'always', 'origin' and 'default +// https://caniuse.com/#feat=referrer-policy +// It doesn't. And it throw exception instead of ignoring this parameter... +// REF: https://github.com/getsentry/raven-js/issues/1233 +function supportsReferrerPolicy() { + if (!supportsFetch()) return false; + + try { + // eslint-disable-next-line no-new + new Request('pickleRick', { + referrerPolicy: 'origin' + }); + return true; + } catch (e) { + return false; + } +} + +function supportsPromiseRejectionEvent() { + return typeof PromiseRejectionEvent === 'function'; +} + +function wrappedCallback(callback) { + function dataCallback(data, original) { + var normalizedData = callback(data) || data; + if (original) { + return original(normalizedData) || normalizedData; + } + return normalizedData; + } + + return dataCallback; +} + +function each(obj, callback) { + var i, j; + + if (isUndefined(obj.length)) { + for (i in obj) { + if (hasKey(obj, i)) { + callback.call(null, i, obj[i]); + } + } + } else { + j = obj.length; + if (j) { + for (i = 0; i < j; i++) { + callback.call(null, i, obj[i]); + } + } + } +} + +function objectMerge(obj1, obj2) { + if (!obj2) { + return obj1; + } + each(obj2, function(key, value) { + obj1[key] = value; + }); + return obj1; +} + +/** + * This function is only used for react-native. + * react-native freezes object that have already been sent over the + * js bridge. We need this function in order to check if the object is frozen. + * So it's ok that objectFrozen returns false if Object.isFrozen is not + * supported because it's not relevant for other "platforms". See related issue: + * https://github.com/getsentry/react-native-sentry/issues/57 + */ +function objectFrozen(obj) { + if (!Object.isFrozen) { + return false; + } + return Object.isFrozen(obj); +} + +function truncate(str, max) { + if (typeof max !== 'number') { + throw new Error('2nd argument to `truncate` function should be a number'); + } + if (typeof str !== 'string' || max === 0) { + return str; + } + return str.length <= max ? str : str.substr(0, max) + '\u2026'; +} + +/** + * hasKey, a better form of hasOwnProperty + * Example: hasKey(MainHostObject, property) === true/false + * + * @param {Object} host object to check property + * @param {string} key to check + */ +function hasKey(object, key) { + return Object.prototype.hasOwnProperty.call(object, key); +} + +function joinRegExp(patterns) { + // Combine an array of regular expressions and strings into one large regexp + // Be mad. + var sources = [], + i = 0, + len = patterns.length, + pattern; + + for (; i < len; i++) { + pattern = patterns[i]; + if (isString(pattern)) { + // If it's a string, we need to escape it + // Taken from: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions + sources.push(pattern.replace(/([.*+?^=!:${}()|\[\]\/\\])/g, '\\$1')); + } else if (pattern && pattern.source) { + // If it's a regexp already, we want to extract the source + sources.push(pattern.source); + } + // Intentionally skip other cases + } + return new RegExp(sources.join('|'), 'i'); +} + +function urlencode(o) { + var pairs = []; + each(o, function(key, value) { + pairs.push(encodeURIComponent(key) + '=' + encodeURIComponent(value)); + }); + return pairs.join('&'); +} + +// borrowed from https://tools.ietf.org/html/rfc3986#appendix-B +// intentionally using regex and not href parsing trick because React Native and other +// environments where DOM might not be available +function parseUrl(url) { + if (typeof url !== 'string') return {}; + var match = url.match(/^(([^:\/?#]+):)?(\/\/([^\/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?$/); + + // coerce to undefined values to empty string so we don't get 'undefined' + var query = match[6] || ''; + var fragment = match[8] || ''; + return { + protocol: match[2], + host: match[4], + path: match[5], + relative: match[5] + query + fragment // everything minus origin + }; +} +function uuid4() { + var crypto = _window.crypto || _window.msCrypto; + + if (!isUndefined(crypto) && crypto.getRandomValues) { + // Use window.crypto API if available + // eslint-disable-next-line no-undef + var arr = new Uint16Array(8); + crypto.getRandomValues(arr); + + // set 4 in byte 7 + arr[3] = (arr[3] & 0xfff) | 0x4000; + // set 2 most significant bits of byte 9 to '10' + arr[4] = (arr[4] & 0x3fff) | 0x8000; + + var pad = function(num) { + var v = num.toString(16); + while (v.length < 4) { + v = '0' + v; + } + return v; + }; + + return ( + pad(arr[0]) + + pad(arr[1]) + + pad(arr[2]) + + pad(arr[3]) + + pad(arr[4]) + + pad(arr[5]) + + pad(arr[6]) + + pad(arr[7]) + ); + } else { + // http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/2117523#2117523 + return 'xxxxxxxxxxxx4xxxyxxxxxxxxxxxxxxx'.replace(/[xy]/g, function(c) { + var r = (Math.random() * 16) | 0, + v = c === 'x' ? r : (r & 0x3) | 0x8; + return v.toString(16); + }); + } +} + +/** + * Given a child DOM element, returns a query-selector statement describing that + * and its ancestors + * e.g. [HTMLElement] => body > div > input#foo.btn[name=baz] + * @param elem + * @returns {string} + */ +function htmlTreeAsString(elem) { + /* eslint no-extra-parens:0*/ + var MAX_TRAVERSE_HEIGHT = 5, + MAX_OUTPUT_LEN = 80, + out = [], + height = 0, + len = 0, + separator = ' > ', + sepLength = separator.length, + nextStr; + + while (elem && height++ < MAX_TRAVERSE_HEIGHT) { + nextStr = htmlElementAsString(elem); + // bail out if + // - nextStr is the 'html' element + // - the length of the string that would be created exceeds MAX_OUTPUT_LEN + // (ignore this limit if we are on the first iteration) + if ( + nextStr === 'html' || + (height > 1 && len + out.length * sepLength + nextStr.length >= MAX_OUTPUT_LEN) + ) { + break; + } + + out.push(nextStr); + + len += nextStr.length; + elem = elem.parentNode; + } + + return out.reverse().join(separator); +} + +/** + * Returns a simple, query-selector representation of a DOM element + * e.g. [HTMLElement] => input#foo.btn[name=baz] + * @param HTMLElement + * @returns {string} + */ +function htmlElementAsString(elem) { + var out = [], + className, + classes, + key, + attr, + i; + + if (!elem || !elem.tagName) { + return ''; + } + + out.push(elem.tagName.toLowerCase()); + if (elem.id) { + out.push('#' + elem.id); + } + + className = elem.className; + if (className && isString(className)) { + classes = className.split(/\s+/); + for (i = 0; i < classes.length; i++) { + out.push('.' + classes[i]); + } + } + var attrWhitelist = ['type', 'name', 'title', 'alt']; + for (i = 0; i < attrWhitelist.length; i++) { + key = attrWhitelist[i]; + attr = elem.getAttribute(key); + if (attr) { + out.push('[' + key + '="' + attr + '"]'); + } + } + return out.join(''); +} + +/** + * Returns true if either a OR b is truthy, but not both + */ +function isOnlyOneTruthy(a, b) { + return !!(!!a ^ !!b); +} + +/** + * Returns true if both parameters are undefined + */ +function isBothUndefined(a, b) { + return isUndefined(a) && isUndefined(b); +} + +/** + * Returns true if the two input exception interfaces have the same content + */ +function isSameException(ex1, ex2) { + if (isOnlyOneTruthy(ex1, ex2)) return false; + + ex1 = ex1.values[0]; + ex2 = ex2.values[0]; + + if (ex1.type !== ex2.type || ex1.value !== ex2.value) return false; + + // in case both stacktraces are undefined, we can't decide so default to false + if (isBothUndefined(ex1.stacktrace, ex2.stacktrace)) return false; + + return isSameStacktrace(ex1.stacktrace, ex2.stacktrace); +} + +/** + * Returns true if the two input stack trace interfaces have the same content + */ +function isSameStacktrace(stack1, stack2) { + if (isOnlyOneTruthy(stack1, stack2)) return false; + + var frames1 = stack1.frames; + var frames2 = stack2.frames; + + // Exit early if frame count differs + if (frames1.length !== frames2.length) return false; + + // Iterate through every frame; bail out if anything differs + var a, b; + for (var i = 0; i < frames1.length; i++) { + a = frames1[i]; + b = frames2[i]; + if ( + a.filename !== b.filename || + a.lineno !== b.lineno || + a.colno !== b.colno || + a['function'] !== b['function'] + ) + return false; + } + return true; +} + +/** + * Polyfill a method + * @param obj object e.g. `document` + * @param name method name present on object e.g. `addEventListener` + * @param replacement replacement function + * @param track {optional} record instrumentation to an array + */ +function fill(obj, name, replacement, track) { + if (obj == null) return; + var orig = obj[name]; + obj[name] = replacement(orig); + obj[name].__raven__ = true; + obj[name].__orig__ = orig; + if (track) { + track.push([obj, name, orig]); + } +} + +/** + * Join values in array + * @param input array of values to be joined together + * @param delimiter string to be placed in-between values + * @returns {string} + */ +function safeJoin(input, delimiter) { + if (!isArray(input)) return ''; + + var output = []; + + for (var i = 0; i < input.length; i++) { + try { + output.push(String(input[i])); + } catch (e) { + output.push('[value cannot be serialized]'); + } + } + + return output.join(delimiter); +} + +// Default Node.js REPL depth +var MAX_SERIALIZE_EXCEPTION_DEPTH = 3; +// 50kB, as 100kB is max payload size, so half sounds reasonable +var MAX_SERIALIZE_EXCEPTION_SIZE = 50 * 1024; +var MAX_SERIALIZE_KEYS_LENGTH = 40; + +function utf8Length(value) { + return ~-encodeURI(value).split(/%..|./).length; +} + +function jsonSize(value) { + return utf8Length(JSON.stringify(value)); +} + +function serializeValue(value) { + if (typeof value === 'string') { + var maxLength = 40; + return truncate(value, maxLength); + } else if ( + typeof value === 'number' || + typeof value === 'boolean' || + typeof value === 'undefined' + ) { + return value; + } + + var type = Object.prototype.toString.call(value); + + // Node.js REPL notation + if (type === '[object Object]') return '[Object]'; + if (type === '[object Array]') return '[Array]'; + if (type === '[object Function]') + return value.name ? '[Function: ' + value.name + ']' : '[Function]'; + + return value; +} + +function serializeObject(value, depth) { + if (depth === 0) return serializeValue(value); + + if (isPlainObject(value)) { + return Object.keys(value).reduce(function(acc, key) { + acc[key] = serializeObject(value[key], depth - 1); + return acc; + }, {}); + } else if (Array.isArray(value)) { + return value.map(function(val) { + return serializeObject(val, depth - 1); + }); + } + + return serializeValue(value); +} + +function serializeException(ex, depth, maxSize) { + if (!isPlainObject(ex)) return ex; + + depth = typeof depth !== 'number' ? MAX_SERIALIZE_EXCEPTION_DEPTH : depth; + maxSize = typeof depth !== 'number' ? MAX_SERIALIZE_EXCEPTION_SIZE : maxSize; + + var serialized = serializeObject(ex, depth); + + if (jsonSize(stringify(serialized)) > maxSize) { + return serializeException(ex, depth - 1); + } + + return serialized; +} + +function serializeKeysForMessage(keys, maxLength) { + if (typeof keys === 'number' || typeof keys === 'string') return keys.toString(); + if (!Array.isArray(keys)) return ''; + + keys = keys.filter(function(key) { + return typeof key === 'string'; + }); + if (keys.length === 0) return '[object has no keys]'; + + maxLength = typeof maxLength !== 'number' ? MAX_SERIALIZE_KEYS_LENGTH : maxLength; + if (keys[0].length >= maxLength) return keys[0]; + + for (var usedKeys = keys.length; usedKeys > 0; usedKeys--) { + var serialized = keys.slice(0, usedKeys).join(', '); + if (serialized.length > maxLength) continue; + if (usedKeys === keys.length) return serialized; + return serialized + '\u2026'; + } + + return ''; +} + +function sanitize(input, sanitizeKeys) { + if (!isArray(sanitizeKeys) || (isArray(sanitizeKeys) && sanitizeKeys.length === 0)) + return input; + + var sanitizeRegExp = joinRegExp(sanitizeKeys); + var sanitizeMask = '********'; + var safeInput; + + try { + safeInput = JSON.parse(stringify(input)); + } catch (o_O) { + return input; + } + + function sanitizeWorker(workerInput) { + if (isArray(workerInput)) { + return workerInput.map(function(val) { + return sanitizeWorker(val); + }); + } + + if (isPlainObject(workerInput)) { + return Object.keys(workerInput).reduce(function(acc, k) { + if (sanitizeRegExp.test(k)) { + acc[k] = sanitizeMask; + } else { + acc[k] = sanitizeWorker(workerInput[k]); + } + return acc; + }, {}); + } + + return workerInput; + } + + return sanitizeWorker(safeInput); +} + +module.exports = { + isObject: isObject, + isError: isError, + isErrorEvent: isErrorEvent, + isDOMError: isDOMError, + isDOMException: isDOMException, + isUndefined: isUndefined, + isFunction: isFunction, + isPlainObject: isPlainObject, + isString: isString, + isArray: isArray, + isEmptyObject: isEmptyObject, + supportsErrorEvent: supportsErrorEvent, + supportsDOMError: supportsDOMError, + supportsDOMException: supportsDOMException, + supportsFetch: supportsFetch, + supportsReferrerPolicy: supportsReferrerPolicy, + supportsPromiseRejectionEvent: supportsPromiseRejectionEvent, + wrappedCallback: wrappedCallback, + each: each, + objectMerge: objectMerge, + truncate: truncate, + objectFrozen: objectFrozen, + hasKey: hasKey, + joinRegExp: joinRegExp, + urlencode: urlencode, + uuid4: uuid4, + htmlTreeAsString: htmlTreeAsString, + htmlElementAsString: htmlElementAsString, + isSameException: isSameException, + isSameStacktrace: isSameStacktrace, + parseUrl: parseUrl, + fill: fill, + safeJoin: safeJoin, + serializeException: serializeException, + serializeKeysForMessage: serializeKeysForMessage, + sanitize: sanitize +}; + +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"9":9}],8:[function(_dereq_,module,exports){ +(function (global){ +var utils = _dereq_(7); + +/* + TraceKit - Cross brower stack traces + + This was originally forked from github.com/occ/TraceKit, but has since been + largely re-written and is now maintained as part of raven-js. Tests for + this are in test/vendor. + + MIT license +*/ + +var TraceKit = { + collectWindowErrors: true, + debug: false +}; + +// This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) +var _window = + typeof window !== 'undefined' + ? window + : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; + +// global reference to slice +var _slice = [].slice; +var UNKNOWN_FUNCTION = '?'; + +// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error#Error_types +var ERROR_TYPES_RE = /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/; + +function getLocationHref() { + if (typeof document === 'undefined' || document.location == null) return ''; + return document.location.href; +} + +function getLocationOrigin() { + if (typeof document === 'undefined' || document.location == null) return ''; + + // Oh dear IE10... + if (!document.location.origin) { + document.location.origin = + document.location.protocol + + '//' + + document.location.hostname + + (document.location.port ? ':' + document.location.port : ''); + } + + return document.location.origin; +} + +/** + * TraceKit.report: cross-browser processing of unhandled exceptions + * + * Syntax: + * TraceKit.report.subscribe(function(stackInfo) { ... }) + * TraceKit.report.unsubscribe(function(stackInfo) { ... }) + * TraceKit.report(exception) + * try { ...code... } catch(ex) { TraceKit.report(ex); } + * + * Supports: + * - Firefox: full stack trace with line numbers, plus column number + * on top frame; column number is not guaranteed + * - Opera: full stack trace with line and column numbers + * - Chrome: full stack trace with line and column numbers + * - Safari: line and column number for the top frame only; some frames + * may be missing, and column number is not guaranteed + * - IE: line and column number for the top frame only; some frames + * may be missing, and column number is not guaranteed + * + * In theory, TraceKit should work on all of the following versions: + * - IE5.5+ (only 8.0 tested) + * - Firefox 0.9+ (only 3.5+ tested) + * - Opera 7+ (only 10.50 tested; versions 9 and earlier may require + * Exceptions Have Stacktrace to be enabled in opera:config) + * - Safari 3+ (only 4+ tested) + * - Chrome 1+ (only 5+ tested) + * - Konqueror 3.5+ (untested) + * + * Requires TraceKit.computeStackTrace. + * + * Tries to catch all unhandled exceptions and report them to the + * subscribed handlers. Please note that TraceKit.report will rethrow the + * exception. This is REQUIRED in order to get a useful stack trace in IE. + * If the exception does not reach the top of the browser, you will only + * get a stack trace from the point where TraceKit.report was called. + * + * Handlers receive a stackInfo object as described in the + * TraceKit.computeStackTrace docs. + */ +TraceKit.report = (function reportModuleWrapper() { + var handlers = [], + lastArgs = null, + lastException = null, + lastExceptionStack = null; + + /** + * Add a crash handler. + * @param {Function} handler + */ + function subscribe(handler) { + installGlobalHandler(); + handlers.push(handler); + } + + /** + * Remove a crash handler. + * @param {Function} handler + */ + function unsubscribe(handler) { + for (var i = handlers.length - 1; i >= 0; --i) { + if (handlers[i] === handler) { + handlers.splice(i, 1); + } + } + } + + /** + * Remove all crash handlers. + */ + function unsubscribeAll() { + uninstallGlobalHandler(); + handlers = []; + } + + /** + * Dispatch stack information to all handlers. + * @param {Object.} stack + */ + function notifyHandlers(stack, isWindowError) { + var exception = null; + if (isWindowError && !TraceKit.collectWindowErrors) { + return; + } + for (var i in handlers) { + if (handlers.hasOwnProperty(i)) { + try { + handlers[i].apply(null, [stack].concat(_slice.call(arguments, 2))); + } catch (inner) { + exception = inner; + } + } + } + + if (exception) { + throw exception; + } + } + + var _oldOnerrorHandler, _onErrorHandlerInstalled; + + /** + * Ensures all global unhandled exceptions are recorded. + * Supported by Gecko and IE. + * @param {string} msg Error message. + * @param {string} url URL of script that generated the exception. + * @param {(number|string)} lineNo The line number at which the error + * occurred. + * @param {?(number|string)} colNo The column number at which the error + * occurred. + * @param {?Error} ex The actual Error object. + */ + function traceKitWindowOnError(msg, url, lineNo, colNo, ex) { + var stack = null; + // If 'ex' is ErrorEvent, get real Error from inside + var exception = utils.isErrorEvent(ex) ? ex.error : ex; + // If 'msg' is ErrorEvent, get real message from inside + var message = utils.isErrorEvent(msg) ? msg.message : msg; + + if (lastExceptionStack) { + TraceKit.computeStackTrace.augmentStackTraceWithInitialElement( + lastExceptionStack, + url, + lineNo, + message + ); + processLastException(); + } else if (exception && utils.isError(exception)) { + // non-string `exception` arg; attempt to extract stack trace + + // New chrome and blink send along a real error object + // Let's just report that like a normal error. + // See: https://mikewest.org/2013/08/debugging-runtime-errors-with-window-onerror + stack = TraceKit.computeStackTrace(exception); + notifyHandlers(stack, true); + } else { + var location = { + url: url, + line: lineNo, + column: colNo + }; + + var name = undefined; + var groups; + + if ({}.toString.call(message) === '[object String]') { + var groups = message.match(ERROR_TYPES_RE); + if (groups) { + name = groups[1]; + message = groups[2]; + } + } + + location.func = UNKNOWN_FUNCTION; + + stack = { + name: name, + message: message, + url: getLocationHref(), + stack: [location] + }; + notifyHandlers(stack, true); + } + + if (_oldOnerrorHandler) { + return _oldOnerrorHandler.apply(this, arguments); + } + + return false; + } + + function installGlobalHandler() { + if (_onErrorHandlerInstalled) { + return; + } + _oldOnerrorHandler = _window.onerror; + _window.onerror = traceKitWindowOnError; + _onErrorHandlerInstalled = true; + } + + function uninstallGlobalHandler() { + if (!_onErrorHandlerInstalled) { + return; + } + _window.onerror = _oldOnerrorHandler; + _onErrorHandlerInstalled = false; + _oldOnerrorHandler = undefined; + } + + function processLastException() { + var _lastExceptionStack = lastExceptionStack, + _lastArgs = lastArgs; + lastArgs = null; + lastExceptionStack = null; + lastException = null; + notifyHandlers.apply(null, [_lastExceptionStack, false].concat(_lastArgs)); + } + + /** + * Reports an unhandled Error to TraceKit. + * @param {Error} ex + * @param {?boolean} rethrow If false, do not re-throw the exception. + * Only used for window.onerror to not cause an infinite loop of + * rethrowing. + */ + function report(ex, rethrow) { + var args = _slice.call(arguments, 1); + if (lastExceptionStack) { + if (lastException === ex) { + return; // already caught by an inner catch block, ignore + } else { + processLastException(); + } + } + + var stack = TraceKit.computeStackTrace(ex); + lastExceptionStack = stack; + lastException = ex; + lastArgs = args; + + // If the stack trace is incomplete, wait for 2 seconds for + // slow slow IE to see if onerror occurs or not before reporting + // this exception; otherwise, we will end up with an incomplete + // stack trace + setTimeout(function() { + if (lastException === ex) { + processLastException(); + } + }, stack.incomplete ? 2000 : 0); + + if (rethrow !== false) { + throw ex; // re-throw to propagate to the top level (and cause window.onerror) + } + } + + report.subscribe = subscribe; + report.unsubscribe = unsubscribe; + report.uninstall = unsubscribeAll; + return report; +})(); + +/** + * TraceKit.computeStackTrace: cross-browser stack traces in JavaScript + * + * Syntax: + * s = TraceKit.computeStackTrace(exception) // consider using TraceKit.report instead (see below) + * Returns: + * s.name - exception name + * s.message - exception message + * s.stack[i].url - JavaScript or HTML file URL + * s.stack[i].func - function name, or empty for anonymous functions (if guessing did not work) + * s.stack[i].args - arguments passed to the function, if known + * s.stack[i].line - line number, if known + * s.stack[i].column - column number, if known + * + * Supports: + * - Firefox: full stack trace with line numbers and unreliable column + * number on top frame + * - Opera 10: full stack trace with line and column numbers + * - Opera 9-: full stack trace with line numbers + * - Chrome: full stack trace with line and column numbers + * - Safari: line and column number for the topmost stacktrace element + * only + * - IE: no line numbers whatsoever + * + * Tries to guess names of anonymous functions by looking for assignments + * in the source code. In IE and Safari, we have to guess source file names + * by searching for function bodies inside all page scripts. This will not + * work for scripts that are loaded cross-domain. + * Here be dragons: some function names may be guessed incorrectly, and + * duplicate functions may be mismatched. + * + * TraceKit.computeStackTrace should only be used for tracing purposes. + * Logging of unhandled exceptions should be done with TraceKit.report, + * which builds on top of TraceKit.computeStackTrace and provides better + * IE support by utilizing the window.onerror event to retrieve information + * about the top of the stack. + * + * Note: In IE and Safari, no stack trace is recorded on the Error object, + * so computeStackTrace instead walks its *own* chain of callers. + * This means that: + * * in Safari, some methods may be missing from the stack trace; + * * in IE, the topmost function in the stack trace will always be the + * caller of computeStackTrace. + * + * This is okay for tracing (because you are likely to be calling + * computeStackTrace from the function you want to be the topmost element + * of the stack trace anyway), but not okay for logging unhandled + * exceptions (because your catch block will likely be far away from the + * inner function that actually caused the exception). + * + */ +TraceKit.computeStackTrace = (function computeStackTraceWrapper() { + // Contents of Exception in various browsers. + // + // SAFARI: + // ex.message = Can't find variable: qq + // ex.line = 59 + // ex.sourceId = 580238192 + // ex.sourceURL = http://... + // ex.expressionBeginOffset = 96 + // ex.expressionCaretOffset = 98 + // ex.expressionEndOffset = 98 + // ex.name = ReferenceError + // + // FIREFOX: + // ex.message = qq is not defined + // ex.fileName = http://... + // ex.lineNumber = 59 + // ex.columnNumber = 69 + // ex.stack = ...stack trace... (see the example below) + // ex.name = ReferenceError + // + // CHROME: + // ex.message = qq is not defined + // ex.name = ReferenceError + // ex.type = not_defined + // ex.arguments = ['aa'] + // ex.stack = ...stack trace... + // + // INTERNET EXPLORER: + // ex.message = ... + // ex.name = ReferenceError + // + // OPERA: + // ex.message = ...message... (see the example below) + // ex.name = ReferenceError + // ex.opera#sourceloc = 11 (pretty much useless, duplicates the info in ex.message) + // ex.stacktrace = n/a; see 'opera:config#UserPrefs|Exceptions Have Stacktrace' + + /** + * Computes stack trace information from the stack property. + * Chrome and Gecko use this property. + * @param {Error} ex + * @return {?Object.} Stack trace information. + */ + function computeStackTraceFromStackProp(ex) { + if (typeof ex.stack === 'undefined' || !ex.stack) return; + + var chrome = /^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i; + var winjs = /^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i; + // NOTE: blob urls are now supposed to always have an origin, therefore it's format + // which is `blob:http://url/path/with-some-uuid`, is matched by `blob.*?:\/` as well + var gecko = /^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i; + // Used to additionally parse URL/line/column from eval frames + var geckoEval = /(\S+) line (\d+)(?: > eval line \d+)* > eval/i; + var chromeEval = /\((\S*)(?::(\d+))(?::(\d+))\)/; + var lines = ex.stack.split('\n'); + var stack = []; + var submatch; + var parts; + var element; + var reference = /^(.*) is undefined$/.exec(ex.message); + + for (var i = 0, j = lines.length; i < j; ++i) { + if ((parts = chrome.exec(lines[i]))) { + var isNative = parts[2] && parts[2].indexOf('native') === 0; // start of line + var isEval = parts[2] && parts[2].indexOf('eval') === 0; // start of line + if (isEval && (submatch = chromeEval.exec(parts[2]))) { + // throw out eval line/column and use top-most line/column number + parts[2] = submatch[1]; // url + parts[3] = submatch[2]; // line + parts[4] = submatch[3]; // column + } + element = { + url: !isNative ? parts[2] : null, + func: parts[1] || UNKNOWN_FUNCTION, + args: isNative ? [parts[2]] : [], + line: parts[3] ? +parts[3] : null, + column: parts[4] ? +parts[4] : null + }; + } else if ((parts = winjs.exec(lines[i]))) { + element = { + url: parts[2], + func: parts[1] || UNKNOWN_FUNCTION, + args: [], + line: +parts[3], + column: parts[4] ? +parts[4] : null + }; + } else if ((parts = gecko.exec(lines[i]))) { + var isEval = parts[3] && parts[3].indexOf(' > eval') > -1; + if (isEval && (submatch = geckoEval.exec(parts[3]))) { + // throw out eval line/column and use top-most line number + parts[3] = submatch[1]; + parts[4] = submatch[2]; + parts[5] = null; // no column when eval + } else if (i === 0 && !parts[5] && typeof ex.columnNumber !== 'undefined') { + // FireFox uses this awesome columnNumber property for its top frame + // Also note, Firefox's column number is 0-based and everything else expects 1-based, + // so adding 1 + // NOTE: this hack doesn't work if top-most frame is eval + stack[0].column = ex.columnNumber + 1; + } + element = { + url: parts[3], + func: parts[1] || UNKNOWN_FUNCTION, + args: parts[2] ? parts[2].split(',') : [], + line: parts[4] ? +parts[4] : null, + column: parts[5] ? +parts[5] : null + }; + } else { + continue; + } + + if (!element.func && element.line) { + element.func = UNKNOWN_FUNCTION; + } + + if (element.url && element.url.substr(0, 5) === 'blob:') { + // Special case for handling JavaScript loaded into a blob. + // We use a synchronous AJAX request here as a blob is already in + // memory - it's not making a network request. This will generate a warning + // in the browser console, but there has already been an error so that's not + // that much of an issue. + var xhr = new XMLHttpRequest(); + xhr.open('GET', element.url, false); + xhr.send(null); + + // If we failed to download the source, skip this patch + if (xhr.status === 200) { + var source = xhr.responseText || ''; + + // We trim the source down to the last 300 characters as sourceMappingURL is always at the end of the file. + // Why 300? To be in line with: https://github.com/getsentry/sentry/blob/4af29e8f2350e20c28a6933354e4f42437b4ba42/src/sentry/lang/javascript/processor.py#L164-L175 + source = source.slice(-300); + + // Now we dig out the source map URL + var sourceMaps = source.match(/\/\/# sourceMappingURL=(.*)$/); + + // If we don't find a source map comment or we find more than one, continue on to the next element. + if (sourceMaps) { + var sourceMapAddress = sourceMaps[1]; + + // Now we check to see if it's a relative URL. + // If it is, convert it to an absolute one. + if (sourceMapAddress.charAt(0) === '~') { + sourceMapAddress = getLocationOrigin() + sourceMapAddress.slice(1); + } + + // Now we strip the '.map' off of the end of the URL and update the + // element so that Sentry can match the map to the blob. + element.url = sourceMapAddress.slice(0, -4); + } + } + } + + stack.push(element); + } + + if (!stack.length) { + return null; + } + + return { + name: ex.name, + message: ex.message, + url: getLocationHref(), + stack: stack + }; + } + + /** + * Adds information about the first frame to incomplete stack traces. + * Safari and IE require this to get complete data on the first frame. + * @param {Object.} stackInfo Stack trace information from + * one of the compute* methods. + * @param {string} url The URL of the script that caused an error. + * @param {(number|string)} lineNo The line number of the script that + * caused an error. + * @param {string=} message The error generated by the browser, which + * hopefully contains the name of the object that caused the error. + * @return {boolean} Whether or not the stack information was + * augmented. + */ + function augmentStackTraceWithInitialElement(stackInfo, url, lineNo, message) { + var initial = { + url: url, + line: lineNo + }; + + if (initial.url && initial.line) { + stackInfo.incomplete = false; + + if (!initial.func) { + initial.func = UNKNOWN_FUNCTION; + } + + if (stackInfo.stack.length > 0) { + if (stackInfo.stack[0].url === initial.url) { + if (stackInfo.stack[0].line === initial.line) { + return false; // already in stack trace + } else if ( + !stackInfo.stack[0].line && + stackInfo.stack[0].func === initial.func + ) { + stackInfo.stack[0].line = initial.line; + return false; + } + } + } + + stackInfo.stack.unshift(initial); + stackInfo.partial = true; + return true; + } else { + stackInfo.incomplete = true; + } + + return false; + } + + /** + * Computes stack trace information by walking the arguments.caller + * chain at the time the exception occurred. This will cause earlier + * frames to be missed but is the only way to get any stack trace in + * Safari and IE. The top frame is restored by + * {@link augmentStackTraceWithInitialElement}. + * @param {Error} ex + * @return {?Object.} Stack trace information. + */ + function computeStackTraceByWalkingCallerChain(ex, depth) { + var functionName = /function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i, + stack = [], + funcs = {}, + recursion = false, + parts, + item, + source; + + for ( + var curr = computeStackTraceByWalkingCallerChain.caller; + curr && !recursion; + curr = curr.caller + ) { + if (curr === computeStackTrace || curr === TraceKit.report) { + // console.log('skipping internal function'); + continue; + } + + item = { + url: null, + func: UNKNOWN_FUNCTION, + line: null, + column: null + }; + + if (curr.name) { + item.func = curr.name; + } else if ((parts = functionName.exec(curr.toString()))) { + item.func = parts[1]; + } + + if (typeof item.func === 'undefined') { + try { + item.func = parts.input.substring(0, parts.input.indexOf('{')); + } catch (e) {} + } + + if (funcs['' + curr]) { + recursion = true; + } else { + funcs['' + curr] = true; + } + + stack.push(item); + } + + if (depth) { + // console.log('depth is ' + depth); + // console.log('stack is ' + stack.length); + stack.splice(0, depth); + } + + var result = { + name: ex.name, + message: ex.message, + url: getLocationHref(), + stack: stack + }; + augmentStackTraceWithInitialElement( + result, + ex.sourceURL || ex.fileName, + ex.line || ex.lineNumber, + ex.message || ex.description + ); + return result; + } + + /** + * Computes a stack trace for an exception. + * @param {Error} ex + * @param {(string|number)=} depth + */ + function computeStackTrace(ex, depth) { + var stack = null; + depth = depth == null ? 0 : +depth; + + try { + stack = computeStackTraceFromStackProp(ex); + if (stack) { + return stack; + } + } catch (e) { + if (TraceKit.debug) { + throw e; + } + } + + try { + stack = computeStackTraceByWalkingCallerChain(ex, depth + 1); + if (stack) { + return stack; + } + } catch (e) { + if (TraceKit.debug) { + throw e; + } + } + return { + name: ex.name, + message: ex.message, + url: getLocationHref() + }; + } + + computeStackTrace.augmentStackTraceWithInitialElement = augmentStackTraceWithInitialElement; + computeStackTrace.computeStackTraceFromStackProp = computeStackTraceFromStackProp; + + return computeStackTrace; +})(); + +module.exports = TraceKit; + +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"7":7}],9:[function(_dereq_,module,exports){ +/* + json-stringify-safe + Like JSON.stringify, but doesn't throw on circular references. + + Originally forked from https://github.com/isaacs/json-stringify-safe + version 5.0.1 on 3/8/2017 and modified to handle Errors serialization + and IE8 compatibility. Tests for this are in test/vendor. + + ISC license: https://github.com/isaacs/json-stringify-safe/blob/master/LICENSE +*/ + +exports = module.exports = stringify; +exports.getSerialize = serializer; + +function indexOf(haystack, needle) { + for (var i = 0; i < haystack.length; ++i) { + if (haystack[i] === needle) return i; + } + return -1; +} + +function stringify(obj, replacer, spaces, cycleReplacer) { + return JSON.stringify(obj, serializer(replacer, cycleReplacer), spaces); +} + +// https://github.com/ftlabs/js-abbreviate/blob/fa709e5f139e7770a71827b1893f22418097fbda/index.js#L95-L106 +function stringifyError(value) { + var err = { + // These properties are implemented as magical getters and don't show up in for in + stack: value.stack, + message: value.message, + name: value.name + }; + + for (var i in value) { + if (Object.prototype.hasOwnProperty.call(value, i)) { + err[i] = value[i]; + } + } + + return err; +} + +function serializer(replacer, cycleReplacer) { + var stack = []; + var keys = []; + + if (cycleReplacer == null) { + cycleReplacer = function(key, value) { + if (stack[0] === value) { + return '[Circular ~]'; + } + return '[Circular ~.' + keys.slice(0, indexOf(stack, value)).join('.') + ']'; + }; + } + + return function(key, value) { + if (stack.length > 0) { + var thisPos = indexOf(stack, this); + ~thisPos ? stack.splice(thisPos + 1) : stack.push(this); + ~thisPos ? keys.splice(thisPos, Infinity, key) : keys.push(key); + + if (~indexOf(stack, value)) { + value = cycleReplacer.call(this, key, value); + } + } else { + stack.push(value); + } + + return replacer == null + ? value instanceof Error ? stringifyError(value) : value + : replacer.call(this, key, value); + }; +} + +},{}],10:[function(_dereq_,module,exports){ +/* + * JavaScript MD5 + * https://github.com/blueimp/JavaScript-MD5 + * + * Copyright 2011, Sebastian Tschan + * https://blueimp.net + * + * Licensed under the MIT license: + * https://opensource.org/licenses/MIT + * + * Based on + * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message + * Digest Algorithm, as defined in RFC 1321. + * Version 2.2 Copyright (C) Paul Johnston 1999 - 2009 + * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet + * Distributed under the BSD License + * See http://pajhome.org.uk/crypt/md5 for more info. + */ + +/* +* Add integers, wrapping at 2^32. This uses 16-bit operations internally +* to work around bugs in some JS interpreters. +*/ +function safeAdd(x, y) { + var lsw = (x & 0xffff) + (y & 0xffff); + var msw = (x >> 16) + (y >> 16) + (lsw >> 16); + return (msw << 16) | (lsw & 0xffff); +} + +/* +* Bitwise rotate a 32-bit number to the left. +*/ +function bitRotateLeft(num, cnt) { + return (num << cnt) | (num >>> (32 - cnt)); +} + +/* +* These functions implement the four basic operations the algorithm uses. +*/ +function md5cmn(q, a, b, x, s, t) { + return safeAdd(bitRotateLeft(safeAdd(safeAdd(a, q), safeAdd(x, t)), s), b); +} +function md5ff(a, b, c, d, x, s, t) { + return md5cmn((b & c) | (~b & d), a, b, x, s, t); +} +function md5gg(a, b, c, d, x, s, t) { + return md5cmn((b & d) | (c & ~d), a, b, x, s, t); +} +function md5hh(a, b, c, d, x, s, t) { + return md5cmn(b ^ c ^ d, a, b, x, s, t); +} +function md5ii(a, b, c, d, x, s, t) { + return md5cmn(c ^ (b | ~d), a, b, x, s, t); +} + +/* +* Calculate the MD5 of an array of little-endian words, and a bit length. +*/ +function binlMD5(x, len) { + /* append padding */ + x[len >> 5] |= 0x80 << (len % 32); + x[(((len + 64) >>> 9) << 4) + 14] = len; + + var i; + var olda; + var oldb; + var oldc; + var oldd; + var a = 1732584193; + var b = -271733879; + var c = -1732584194; + var d = 271733878; + + for (i = 0; i < x.length; i += 16) { + olda = a; + oldb = b; + oldc = c; + oldd = d; + + a = md5ff(a, b, c, d, x[i], 7, -680876936); + d = md5ff(d, a, b, c, x[i + 1], 12, -389564586); + c = md5ff(c, d, a, b, x[i + 2], 17, 606105819); + b = md5ff(b, c, d, a, x[i + 3], 22, -1044525330); + a = md5ff(a, b, c, d, x[i + 4], 7, -176418897); + d = md5ff(d, a, b, c, x[i + 5], 12, 1200080426); + c = md5ff(c, d, a, b, x[i + 6], 17, -1473231341); + b = md5ff(b, c, d, a, x[i + 7], 22, -45705983); + a = md5ff(a, b, c, d, x[i + 8], 7, 1770035416); + d = md5ff(d, a, b, c, x[i + 9], 12, -1958414417); + c = md5ff(c, d, a, b, x[i + 10], 17, -42063); + b = md5ff(b, c, d, a, x[i + 11], 22, -1990404162); + a = md5ff(a, b, c, d, x[i + 12], 7, 1804603682); + d = md5ff(d, a, b, c, x[i + 13], 12, -40341101); + c = md5ff(c, d, a, b, x[i + 14], 17, -1502002290); + b = md5ff(b, c, d, a, x[i + 15], 22, 1236535329); + + a = md5gg(a, b, c, d, x[i + 1], 5, -165796510); + d = md5gg(d, a, b, c, x[i + 6], 9, -1069501632); + c = md5gg(c, d, a, b, x[i + 11], 14, 643717713); + b = md5gg(b, c, d, a, x[i], 20, -373897302); + a = md5gg(a, b, c, d, x[i + 5], 5, -701558691); + d = md5gg(d, a, b, c, x[i + 10], 9, 38016083); + c = md5gg(c, d, a, b, x[i + 15], 14, -660478335); + b = md5gg(b, c, d, a, x[i + 4], 20, -405537848); + a = md5gg(a, b, c, d, x[i + 9], 5, 568446438); + d = md5gg(d, a, b, c, x[i + 14], 9, -1019803690); + c = md5gg(c, d, a, b, x[i + 3], 14, -187363961); + b = md5gg(b, c, d, a, x[i + 8], 20, 1163531501); + a = md5gg(a, b, c, d, x[i + 13], 5, -1444681467); + d = md5gg(d, a, b, c, x[i + 2], 9, -51403784); + c = md5gg(c, d, a, b, x[i + 7], 14, 1735328473); + b = md5gg(b, c, d, a, x[i + 12], 20, -1926607734); + + a = md5hh(a, b, c, d, x[i + 5], 4, -378558); + d = md5hh(d, a, b, c, x[i + 8], 11, -2022574463); + c = md5hh(c, d, a, b, x[i + 11], 16, 1839030562); + b = md5hh(b, c, d, a, x[i + 14], 23, -35309556); + a = md5hh(a, b, c, d, x[i + 1], 4, -1530992060); + d = md5hh(d, a, b, c, x[i + 4], 11, 1272893353); + c = md5hh(c, d, a, b, x[i + 7], 16, -155497632); + b = md5hh(b, c, d, a, x[i + 10], 23, -1094730640); + a = md5hh(a, b, c, d, x[i + 13], 4, 681279174); + d = md5hh(d, a, b, c, x[i], 11, -358537222); + c = md5hh(c, d, a, b, x[i + 3], 16, -722521979); + b = md5hh(b, c, d, a, x[i + 6], 23, 76029189); + a = md5hh(a, b, c, d, x[i + 9], 4, -640364487); + d = md5hh(d, a, b, c, x[i + 12], 11, -421815835); + c = md5hh(c, d, a, b, x[i + 15], 16, 530742520); + b = md5hh(b, c, d, a, x[i + 2], 23, -995338651); + + a = md5ii(a, b, c, d, x[i], 6, -198630844); + d = md5ii(d, a, b, c, x[i + 7], 10, 1126891415); + c = md5ii(c, d, a, b, x[i + 14], 15, -1416354905); + b = md5ii(b, c, d, a, x[i + 5], 21, -57434055); + a = md5ii(a, b, c, d, x[i + 12], 6, 1700485571); + d = md5ii(d, a, b, c, x[i + 3], 10, -1894986606); + c = md5ii(c, d, a, b, x[i + 10], 15, -1051523); + b = md5ii(b, c, d, a, x[i + 1], 21, -2054922799); + a = md5ii(a, b, c, d, x[i + 8], 6, 1873313359); + d = md5ii(d, a, b, c, x[i + 15], 10, -30611744); + c = md5ii(c, d, a, b, x[i + 6], 15, -1560198380); + b = md5ii(b, c, d, a, x[i + 13], 21, 1309151649); + a = md5ii(a, b, c, d, x[i + 4], 6, -145523070); + d = md5ii(d, a, b, c, x[i + 11], 10, -1120210379); + c = md5ii(c, d, a, b, x[i + 2], 15, 718787259); + b = md5ii(b, c, d, a, x[i + 9], 21, -343485551); + + a = safeAdd(a, olda); + b = safeAdd(b, oldb); + c = safeAdd(c, oldc); + d = safeAdd(d, oldd); + } + return [a, b, c, d]; +} + +/* +* Convert an array of little-endian words to a string +*/ +function binl2rstr(input) { + var i; + var output = ''; + var length32 = input.length * 32; + for (i = 0; i < length32; i += 8) { + output += String.fromCharCode((input[i >> 5] >>> (i % 32)) & 0xff); + } + return output; +} + +/* +* Convert a raw string to an array of little-endian words +* Characters >255 have their high-byte silently ignored. +*/ +function rstr2binl(input) { + var i; + var output = []; + output[(input.length >> 2) - 1] = undefined; + for (i = 0; i < output.length; i += 1) { + output[i] = 0; + } + var length8 = input.length * 8; + for (i = 0; i < length8; i += 8) { + output[i >> 5] |= (input.charCodeAt(i / 8) & 0xff) << (i % 32); + } + return output; +} + +/* +* Calculate the MD5 of a raw string +*/ +function rstrMD5(s) { + return binl2rstr(binlMD5(rstr2binl(s), s.length * 8)); +} + +/* +* Calculate the HMAC-MD5, of a key and some data (raw strings) +*/ +function rstrHMACMD5(key, data) { + var i; + var bkey = rstr2binl(key); + var ipad = []; + var opad = []; + var hash; + ipad[15] = opad[15] = undefined; + if (bkey.length > 16) { + bkey = binlMD5(bkey, key.length * 8); + } + for (i = 0; i < 16; i += 1) { + ipad[i] = bkey[i] ^ 0x36363636; + opad[i] = bkey[i] ^ 0x5c5c5c5c; + } + hash = binlMD5(ipad.concat(rstr2binl(data)), 512 + data.length * 8); + return binl2rstr(binlMD5(opad.concat(hash), 512 + 128)); +} + +/* +* Convert a raw string to a hex string +*/ +function rstr2hex(input) { + var hexTab = '0123456789abcdef'; + var output = ''; + var x; + var i; + for (i = 0; i < input.length; i += 1) { + x = input.charCodeAt(i); + output += hexTab.charAt((x >>> 4) & 0x0f) + hexTab.charAt(x & 0x0f); + } + return output; +} + +/* +* Encode a string as utf-8 +*/ +function str2rstrUTF8(input) { + return unescape(encodeURIComponent(input)); +} + +/* +* Take string arguments and return either raw or hex encoded strings +*/ +function rawMD5(s) { + return rstrMD5(str2rstrUTF8(s)); +} +function hexMD5(s) { + return rstr2hex(rawMD5(s)); +} +function rawHMACMD5(k, d) { + return rstrHMACMD5(str2rstrUTF8(k), str2rstrUTF8(d)); +} +function hexHMACMD5(k, d) { + return rstr2hex(rawHMACMD5(k, d)); +} + +function md5(string, key, raw) { + if (!key) { + if (!raw) { + return hexMD5(string); + } + return rawMD5(string); + } + if (!raw) { + return hexHMACMD5(key, string); + } + return rawHMACMD5(key, string); +} + +module.exports = md5; + +},{}]},{},[6,1,2])(6) +}); \ No newline at end of file diff --git a/packages/raven-js/dist/console,vue/raven.min.js b/packages/raven-js/dist/console,vue/raven.min.js new file mode 100644 index 000000000000..3a5580e45984 --- /dev/null +++ b/packages/raven-js/dist/console,vue/raven.min.js @@ -0,0 +1,4 @@ +/*! Raven.js 3.25.2 (30b6d4e) | github.com/getsentry/raven-js */ +!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.Raven=a()}}(function(){return function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};b[g][0].call(k.exports,function(a){var c=b[g][1][a];return e(c?c:a)},k,k.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;g":"anonymous component")+(a._isVue&&a.$options.__file?" at "+a.$options.__file:"")}function e(a,b){if(b=b||window.Vue,b&&b.config){var c=b.config.errorHandler;b.config.errorHandler=function(b,e,f){var g={};"[object Object]"===Object.prototype.toString.call(e)&&(g.componentName=d(e),g.propsData=e.$options.propsData),"undefined"!=typeof f&&(g.lifecycleHook=f),a.captureException(b,{extra:g}),"function"==typeof c&&c.call(this,b,e,f)}}}b.exports=e,a(6).addPlugin(b.exports)},{6:6}],3:[function(a,b,c){function d(a){this.name="RavenConfigError",this.message=a}d.prototype=new Error,d.prototype.constructor=d,b.exports=d},{}],4:[function(a,b,c){var d=a(7),e=function(a,b,c){var e=a[b],f=a;if(b in a){var g="warn"===b?"warning":b;a[b]=function(){var a=[].slice.call(arguments),h=d.safeJoin(a," "),i={level:g,logger:"console",extra:{arguments:a}};"assert"===b?a[0]===!1&&(h="Assertion failed: "+(d.safeJoin(a.slice(1)," ")||"console.assert"),i.extra.arguments=a.slice(1),c&&c(h,i)):c&&c(h,i),e&&Function.prototype.apply.call(e,f,a)}}};b.exports={wrapMethod:e}},{7:7}],5:[function(a,b,c){(function(c){function d(){return+new Date}function e(a,b){return s(b)?function(c){return b(c,a)}:b}function f(){this.a=!("object"!=typeof JSON||!JSON.stringify),this.b=!r(S),this.c=!r(T),this.d=null,this.e=null,this.f=null,this.g=null,this.h=null,this.i=null,this.j={},this.k={release:R.SENTRY_RELEASE&&R.SENTRY_RELEASE.id,logger:"javascript",ignoreErrors:[],ignoreUrls:[],whitelistUrls:[],includePaths:[],headers:null,collectWindowErrors:!0,captureUnhandledRejections:!0,maxMessageLength:0,maxUrlLength:250,stackTraceLimit:50,autoBreadcrumbs:!0,instrument:!0,sampleRate:1,sanitizeKeys:[]},this.l={method:"POST",keepalive:!0,referrerPolicy:K()?"origin":""},this.m=0,this.n=!1,this.o=Error.stackTraceLimit,this.p=R.console||{},this.q={},this.r=[],this.s=d(),this.t=[],this.u=[],this.v=null,this.w=R.location,this.x=this.w&&this.w.href,this.y();for(var a in this.p)this.q[a]=this.p[a]}var g=a(8),h=a(9),i=a(10),j=a(3),k=a(7),l=k.isErrorEvent,m=k.isDOMError,n=k.isDOMException,o=k.isError,p=k.isObject,q=k.isPlainObject,r=k.isUndefined,s=k.isFunction,t=k.isString,u=k.isArray,v=k.isEmptyObject,w=k.each,x=k.objectMerge,y=k.truncate,z=k.objectFrozen,A=k.hasKey,B=k.joinRegExp,C=k.urlencode,D=k.uuid4,E=k.htmlTreeAsString,F=k.isSameException,G=k.isSameStacktrace,H=k.parseUrl,I=k.fill,J=k.supportsFetch,K=k.supportsReferrerPolicy,L=k.serializeKeysForMessage,M=k.serializeException,N=k.sanitize,O=a(4).wrapMethod,P="source protocol user pass host port path".split(" "),Q=/^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/,R="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},S=R.document,T=R.navigator;f.prototype={VERSION:"3.25.2",debug:!1,TraceKit:g,config:function(a,b){var c=this;if(c.g)return this.z("error","Error: Raven has already been configured"),c;if(!a)return c;var d=c.k;b&&w(b,function(a,b){"tags"===a||"extra"===a||"user"===a?c.j[a]=b:d[a]=b}),c.setDSN(a),d.ignoreErrors.push(/^Script error\.?$/),d.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/),d.ignoreErrors=B(d.ignoreErrors),d.ignoreUrls=!!d.ignoreUrls.length&&B(d.ignoreUrls),d.whitelistUrls=!!d.whitelistUrls.length&&B(d.whitelistUrls),d.includePaths=B(d.includePaths),d.maxBreadcrumbs=Math.max(0,Math.min(d.maxBreadcrumbs||100,100));var e={xhr:!0,console:!0,dom:!0,location:!0,sentry:!0},f=d.autoBreadcrumbs;"[object Object]"==={}.toString.call(f)?f=x(e,f):f!==!1&&(f=e),d.autoBreadcrumbs=f;var h={tryCatch:!0},i=d.instrument;return"[object Object]"==={}.toString.call(i)?i=x(h,i):i!==!1&&(i=h),d.instrument=i,g.collectWindowErrors=!!d.collectWindowErrors,c},install:function(){var a=this;return a.isSetup()&&!a.n&&(g.report.subscribe(function(){a.A.apply(a,arguments)}),a.k.captureUnhandledRejections&&a.B(),a.C(),a.k.instrument&&a.k.instrument.tryCatch&&a.D(),a.k.autoBreadcrumbs&&a.E(),a.F(),a.n=!0),Error.stackTraceLimit=a.k.stackTraceLimit,this},setDSN:function(a){var b=this,c=b.G(a),d=c.path.lastIndexOf("/"),e=c.path.substr(1,d);b.H=a,b.h=c.user,b.I=c.pass&&c.pass.substr(1),b.i=c.path.substr(d+1),b.g=b.J(c),b.K=b.g+"/"+e+"api/"+b.i+"/store/",this.y()},context:function(a,b,c){return s(a)&&(c=b||[],b=a,a=void 0),this.wrap(a,b).apply(this,c)},wrap:function(a,b,c){function d(){var d=[],f=arguments.length,g=!a||a&&a.deep!==!1;for(c&&s(c)&&c.apply(this,arguments);f--;)d[f]=g?e.wrap(a,arguments[f]):arguments[f];try{return b.apply(this,d)}catch(h){throw e.L(),e.captureException(h,a),h}}var e=this;if(r(b)&&!s(a))return a;if(s(a)&&(b=a,a=void 0),!s(b))return b;try{if(b.M)return b;if(b.N)return b.N}catch(f){return b}for(var g in b)A(b,g)&&(d[g]=b[g]);return d.prototype=b.prototype,b.N=d,d.M=!0,d.O=b,d},uninstall:function(){return g.report.uninstall(),this.P(),this.Q(),this.R(),this.S(),Error.stackTraceLimit=this.o,this.n=!1,this},T:function(a){this.z("debug","Raven caught unhandled promise rejection:",a),this.captureException(a.reason,{extra:{unhandledPromiseRejection:!0}})},B:function(){return this.T=this.T.bind(this),R.addEventListener&&R.addEventListener("unhandledrejection",this.T),this},P:function(){return R.removeEventListener&&R.removeEventListener("unhandledrejection",this.T),this},captureException:function(a,b){if(b=x({trimHeadFrames:0},b?b:{}),l(a)&&a.error)a=a.error;else{if(m(a)||n(a)){var c=a.name||(m(a)?"DOMError":"DOMException"),d=a.message?c+": "+a.message:c;return this.captureMessage(d,x(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}))}if(o(a))a=a;else{if(!q(a))return this.captureMessage(a,x(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}));b=this.U(b,a),a=new Error(b.message)}}this.d=a;try{var e=g.computeStackTrace(a);this.V(e,b)}catch(f){if(a!==f)throw f}return this},U:function(a,b){var c=Object.keys(b).sort(),d=x(a,{message:"Non-Error exception captured with keys: "+L(c),fingerprint:[i(c)],extra:a.extra||{}});return d.extra.W=M(b),d},captureMessage:function(a,b){if(!this.k.ignoreErrors.test||!this.k.ignoreErrors.test(a)){b=b||{},a+="";var c,d=x({message:a},b);try{throw new Error(a)}catch(e){c=e}c.name=null;var f=g.computeStackTrace(c),h=u(f.stack)&&f.stack[1];h&&"Raven.captureException"===h.func&&(h=f.stack[2]);var i=h&&h.url||"";if((!this.k.ignoreUrls.test||!this.k.ignoreUrls.test(i))&&(!this.k.whitelistUrls.test||this.k.whitelistUrls.test(i))){if(this.k.stacktrace||b&&b.stacktrace){d.fingerprint=null==d.fingerprint?a:d.fingerprint,b=x({trimHeadFrames:0},b),b.trimHeadFrames+=1;var j=this.X(f,b);d.stacktrace={frames:j.reverse()}}return d.fingerprint&&(d.fingerprint=u(d.fingerprint)?d.fingerprint:[d.fingerprint]),this.Y(d),this}}},captureBreadcrumb:function(a){var b=x({timestamp:d()/1e3},a);if(s(this.k.breadcrumbCallback)){var c=this.k.breadcrumbCallback(b);if(p(c)&&!v(c))b=c;else if(c===!1)return this}return this.u.push(b),this.u.length>this.k.maxBreadcrumbs&&this.u.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.r.push([a,b]),this.n&&this.F(),this},setUserContext:function(a){return this.j.user=a,this},setExtraContext:function(a){return this.Z("extra",a),this},setTagsContext:function(a){return this.Z("tags",a),this},clearContext:function(){return this.j={},this},getContext:function(){return JSON.parse(h(this.j))},setEnvironment:function(a){return this.k.environment=a,this},setRelease:function(a){return this.k.release=a,this},setDataCallback:function(a){var b=this.k.dataCallback;return this.k.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.k.breadcrumbCallback;return this.k.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.k.shouldSendCallback;return this.k.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.k.transport=a,this},lastException:function(){return this.d},lastEventId:function(){return this.f},isSetup:function(){return!!this.a&&(!!this.g||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.z("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=R.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(S){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.H;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.j.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.J(this.G(c)),h=S.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(S.head||S.body).appendChild(h)}},L:function(){var a=this;this.m+=1,setTimeout(function(){a.m-=1})},$:function(a,b){var c,d;if(this.b){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),S.createEvent?(c=S.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=S.createEventObject(),c.eventType=a);for(d in b)A(b,d)&&(c[d]=b[d]);if(S.createEvent)S.dispatchEvent(c);else try{S.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},_:function(a){var b=this;return function(c){if(b.aa=null,b.v!==c){b.v=c;var d;try{d=E(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ba:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.aa;g||a._("input")(c),clearTimeout(g),a.aa=setTimeout(function(){a.aa=null},b)}}},ca:function(a,b){var c=H(this.w.href),d=H(b),e=H(a);this.x=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},C:function(){var a=this;a.da=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.M?a.da.apply(this.O,arguments):a.da.apply(this,arguments)}},Q:function(){this.da&&(Function.prototype.toString=this.da)},D:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.ca(b.x,c+""),a.apply(this,arguments)}};I(R.history,"pushState",j,d),I(R.history,"replaceState",j,d)}if(c.console&&"console"in R&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};w(["debug","info","warn","error","log"],function(a,b){O(console,b,k)})}},R:function(){for(var a;this.t.length;){a=this.t.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},S:function(){for(var a in this.q)this.p[a]=this.q[a]},F:function(){var a=this;w(this.r,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},G:function(a){var b=Q.exec(a),c={},d=7;try{for(;d--;)c[P[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.k.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},J:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},A:function(){this.m||this.V.apply(this,arguments)},V:function(a,b){var c=this.X(a,b);this.$("handle",{stackInfo:a,options:b}),this.fa(a.name,a.message,a.url,a.lineno,c,b)},X:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(w(a.stack,function(b,e){var f=c.ga(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.u,0)}),this.j.user&&(a.user=this.j.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),a=this.pa(a),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||v(a[b]))&&delete a[b]}),s(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!v(a)&&(!s(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.ma()?void this.z("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function F(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&l(b))for(c=b.split(/\s+/),f=0;fc?Q(a,b-1):d}function R(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?X:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function S(a,b){function c(a){return m(a)?a.map(function(a){return c(a)}):k(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!m(b)||m(b)&&0===b.length)return a;var d,e=A(b),f="********";try{d=JSON.parse(T(a))}catch(g){return a}return c(d)}var T=a(9),U="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},V=3,W=51200,X=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isDOMError:g,isDOMException:h,isUndefined:i,isFunction:j,isPlainObject:k,isString:l,isArray:m,isEmptyObject:n,supportsErrorEvent:o,supportsDOMError:p,supportsDOMException:q,supportsFetch:r,supportsReferrerPolicy:s,supportsPromiseRejectionEvent:t,wrappedCallback:u,each:v,objectMerge:w,truncate:y,objectFrozen:x,hasKey:z,joinRegExp:A,urlencode:B,uuid4:D,htmlTreeAsString:E,htmlElementAsString:F,isSameException:I,isSameStacktrace:J,parseUrl:C,fill:K,safeJoin:L,serializeException:Q,serializeKeysForMessage:R,sanitize:S}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{9:9}],8:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}function e(){return"undefined"==typeof document||null==document.location?"":(document.location.origin||(document.location.origin=document.location.protocol+"//"+document.location.hostname+(document.location.port?":"+document.location.port:"")),document.location.origin)}var f=a(7),g={collectWindowErrors:!0,debug:!1},h="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},i=[].slice,j="?",k=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;g.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function e(a,b){var c=null;if(!b||g.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(i.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,h,i){var l=null,m=f.isErrorEvent(i)?i.error:i,n=f.isErrorEvent(a)?a.message:a;if(v)g.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&f.isError(m))l=g.computeStackTrace(m),e(l,!0);else{var p,r={url:b,line:c,column:h},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(k);p&&(s=p[1],n=p[2])}r.func=j,l={name:s,message:n,url:d(),stack:[r]},e(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=h.onerror,h.onerror=l,r=!0)}function n(){r&&(h.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,e.apply(null,[a,!1].concat(b))}function p(a,b){var c=i.call(arguments,1);if(v){if(u===a)return;o()}var d=g.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),g.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,f,g=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,h=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,i=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,k=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,l=/\((\S*)(?::(\d+))(?::(\d+))\)/,m=a.stack.split("\n"),n=[],o=(/^(.*) is undefined$/.exec(a.message),0),p=m.length;o eval")>-1;r&&(b=k.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==o||c[5]||"undefined"==typeof a.columnNumber||(n[0].column=a.columnNumber+1),f={url:c[3],func:c[1]||j,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}if(!f.func&&f.line&&(f.func=j),f.url&&"blob:"===f.url.substr(0,5)){var s=new XMLHttpRequest;if(s.open("GET",f.url,!1),s.send(null),200===s.status){var t=s.responseText||"";t=t.slice(-300);var u=t.match(/\/\/# sourceMappingURL=(.*)$/);if(u){var v=u[1];"~"===v.charAt(0)&&(v=e()+v.slice(1)),f.url=v.slice(0,-4)}}}n.push(f)}return n.length?{name:a.name,message:a.message,url:d(),stack:n}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=j),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line, +!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,e){for(var h,i,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==f&&o!==g.report){if(i={url:null,func:j,line:null,column:null},o.name?i.func=o.name:(h=k.exec(o.toString()))&&(i.func=h[1]),"undefined"==typeof i.func)try{i.func=h.input.substring(0,h.input.indexOf("{"))}catch(p){}m[""+o]?n=!0:m[""+o]=!0,l.push(i)}e&&l.splice(0,e);var q={name:a.name,message:a.message,url:d(),stack:l};return b(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),q}function f(b,e){var f=null;e=null==e?0:+e;try{if(f=a(b))return f}catch(h){if(g.debug)throw h}try{if(f=c(b,e+1))return f}catch(h){if(g.debug)throw h}return{name:b.name,message:b.message,url:d()}}return f.augmentStackTraceWithInitialElement=b,f.computeStackTraceFromStackProp=a,f}(),b.exports=g}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{7:7}],9:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}],10:[function(a,b,c){function d(a,b){var c=(65535&a)+(65535&b),d=(a>>16)+(b>>16)+(c>>16);return d<<16|65535&c}function e(a,b){return a<>>32-b}function f(a,b,c,f,g,h){return d(e(d(d(b,a),d(f,h)),g),c)}function g(a,b,c,d,e,g,h){return f(b&c|~b&d,a,b,e,g,h)}function h(a,b,c,d,e,g,h){return f(b&d|c&~d,a,b,e,g,h)}function i(a,b,c,d,e,g,h){return f(b^c^d,a,b,e,g,h)}function j(a,b,c,d,e,g,h){return f(c^(b|~d),a,b,e,g,h)}function k(a,b){a[b>>5]|=128<>>9<<4)+14]=b;var c,e,f,k,l,m=1732584193,n=-271733879,o=-1732584194,p=271733878;for(c=0;c>5]>>>b%32&255);return c}function m(a){var b,c=[];for(c[(a.length>>2)-1]=void 0,b=0;b>5]|=(255&a.charCodeAt(b/8))<16&&(e=k(e,8*a.length)),c=0;c<16;c+=1)f[c]=909522486^e[c],g[c]=1549556828^e[c];return d=k(f.concat(m(b)),512+8*b.length),l(k(g.concat(d),640))}function p(a){var b,c,d="0123456789abcdef",e="";for(c=0;c>>4&15)+d.charAt(15&b);return e}function q(a){return unescape(encodeURIComponent(a))}function r(a){return n(q(a))}function s(a){return p(r(a))}function t(a,b){return o(q(a),q(b))}function u(a,b){return p(t(a,b))}function v(a,b,c){return b?c?t(b,a):u(b,a):c?r(a):s(a)}b.exports=v},{}]},{},[6,1,2])(6)}); +//# sourceMappingURL=raven.min.js.map \ No newline at end of file diff --git a/packages/raven-js/dist/console,vue/raven.min.js.map b/packages/raven-js/dist/console,vue/raven.min.js.map new file mode 100644 index 000000000000..3e831a8a34d8 --- /dev/null +++ b/packages/raven-js/dist/console,vue/raven.min.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","consolePlugin","console","pluginOptions","logLevels","levels","push","callback","msg","data","captureMessage","level","pop","wrapConsoleMethod","wrapMethod","addPlugin","4","6","2","formatComponentName","vm","$root","name","_isVue","$options","_componentTag","__file","vuePlugin","Vue","config","_oldOnError","errorHandler","error","info","metaData","Object","prototype","toString","componentName","propsData","lifecycleHook","captureException","extra","3","RavenConfigError","message","constructor","utils","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","safeJoin","logger","Function","apply","7","5","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","sanitizeKeys","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isErrorEvent","isDOMError","isDOMException","isError","isObject","isPlainObject","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","sanitize","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","dsn","options","_logDebug","globalOptions","key","value","setDSN","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","substr","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","context","func","undefined","wrap","_before","wrapped","deep","_ignoreNextOnError","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","T","event","reason","unhandledPromiseRejection","B","_promiseRejectionHandler","bind","addEventListener","P","removeEventListener","ex","trimHeadFrames","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","U","currentOptions","exKeys","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","setDataCallback","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","L","setTimeout","$","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","_","evtName","_keypressTimeout","target","category","ba","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","ca","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","C","_originalFunctionToString","Q","D","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","type","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","E","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","R","builtin","S","F","installer","concat","G","str","m","exec","allowSecretKey","J","port","A","V","stackInfo","_triggerEvent","_processException","lineno","X","frame","_normalizeFrame","in_app","ga","stackInfoUrl","normalized","filename","line","colno","column","function","fa","prefixedMessage","exception","values","transaction","ha","request","Referer","breadcrumbs","_trimBreadcrumbs","ia","urlProp","urlProps","ja","httpData","userAgent","User-Agent","referrer","y","_backoffDuration","_backoffStart","ma","na","current","last","oa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Y","baseData","project","platform","_getHttpData","serverName","server_name","_sanitizeData","forEach","random","_sendProcessedPayload","pa","ra","qa","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","sa","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","onerror","open","setRequestHeader","send","ta","hash","evaluated","z","Z","setUser","setReleaseContext","10","8","9","RavenConstructor","_Raven","noConflict","Client","what","supportsErrorEvent","ErrorEvent","supportsDOMError","DOMError","supportsDOMException","DOMException","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","wrappedCallback","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","sanitizeMask","safeInput","o_O","getLocationHref","getLocationOrigin","origin","hostname","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","responseText","sourceMaps","sourceMapAddress","charAt","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","string","raw"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file diff --git a/packages/raven-js/dist/console/raven.js b/packages/raven-js/dist/console/raven.js new file mode 100644 index 000000000000..fa9006b163f9 --- /dev/null +++ b/packages/raven-js/dist/console/raven.js @@ -0,0 +1,4045 @@ +/*! Raven.js 3.25.2 (30b6d4e) | github.com/getsentry/raven-js */ + +/* + * Includes TraceKit + * https://github.com/getsentry/TraceKit + * + * Copyright 2018 Matt Robenolt and other contributors + * Released under the BSD license + * https://github.com/getsentry/raven-js/blob/master/LICENSE + * + */ + +(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.Raven = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o captureException(string) => captureMessage(string) + if (initialCall && initialCall.func === 'Raven.captureException') { + initialCall = stack.stack[2]; + } + + var fileurl = (initialCall && initialCall.url) || ''; + + if ( + !!this._globalOptions.ignoreUrls.test && + this._globalOptions.ignoreUrls.test(fileurl) + ) { + return; + } + + if ( + !!this._globalOptions.whitelistUrls.test && + !this._globalOptions.whitelistUrls.test(fileurl) + ) { + return; + } + + if (this._globalOptions.stacktrace || (options && options.stacktrace)) { + // fingerprint on msg, not stack trace (legacy behavior, could be revisited) + data.fingerprint = data.fingerprint == null ? msg : data.fingerprint; + + options = objectMerge( + { + trimHeadFrames: 0 + }, + options + ); + // Since we know this is a synthetic trace, the top frame (this function call) + // MUST be from Raven.js, so mark it for trimming + // We add to the trim counter so that callers can choose to trim extra frames, such + // as utility functions. + options.trimHeadFrames += 1; + + var frames = this._prepareFrames(stack, options); + data.stacktrace = { + // Sentry expects frames oldest to newest + frames: frames.reverse() + }; + } + + // Make sure that fingerprint is always wrapped in an array + if (data.fingerprint) { + data.fingerprint = isArray(data.fingerprint) + ? data.fingerprint + : [data.fingerprint]; + } + + // Fire away! + this._send(data); + + return this; + }, + + captureBreadcrumb: function(obj) { + var crumb = objectMerge( + { + timestamp: now() / 1000 + }, + obj + ); + + if (isFunction(this._globalOptions.breadcrumbCallback)) { + var result = this._globalOptions.breadcrumbCallback(crumb); + + if (isObject(result) && !isEmptyObject(result)) { + crumb = result; + } else if (result === false) { + return this; + } + } + + this._breadcrumbs.push(crumb); + if (this._breadcrumbs.length > this._globalOptions.maxBreadcrumbs) { + this._breadcrumbs.shift(); + } + return this; + }, + + addPlugin: function(plugin /*arg1, arg2, ... argN*/) { + var pluginArgs = [].slice.call(arguments, 1); + + this._plugins.push([plugin, pluginArgs]); + if (this._isRavenInstalled) { + this._drainPlugins(); + } + + return this; + }, + + /* + * Set/clear a user to be sent along with the payload. + * + * @param {object} user An object representing user data [optional] + * @return {Raven} + */ + setUserContext: function(user) { + // Intentionally do not merge here since that's an unexpected behavior. + this._globalContext.user = user; + + return this; + }, + + /* + * Merge extra attributes to be sent along with the payload. + * + * @param {object} extra An object representing extra data [optional] + * @return {Raven} + */ + setExtraContext: function(extra) { + this._mergeContext('extra', extra); + + return this; + }, + + /* + * Merge tags to be sent along with the payload. + * + * @param {object} tags An object representing tags [optional] + * @return {Raven} + */ + setTagsContext: function(tags) { + this._mergeContext('tags', tags); + + return this; + }, + + /* + * Clear all of the context. + * + * @return {Raven} + */ + clearContext: function() { + this._globalContext = {}; + + return this; + }, + + /* + * Get a copy of the current context. This cannot be mutated. + * + * @return {object} copy of context + */ + getContext: function() { + // lol javascript + return JSON.parse(stringify(this._globalContext)); + }, + + /* + * Set environment of application + * + * @param {string} environment Typically something like 'production'. + * @return {Raven} + */ + setEnvironment: function(environment) { + this._globalOptions.environment = environment; + + return this; + }, + + /* + * Set release version of application + * + * @param {string} release Typically something like a git SHA to identify version + * @return {Raven} + */ + setRelease: function(release) { + this._globalOptions.release = release; + + return this; + }, + + /* + * Set the dataCallback option + * + * @param {function} callback The callback to run which allows the + * data blob to be mutated before sending + * @return {Raven} + */ + setDataCallback: function(callback) { + var original = this._globalOptions.dataCallback; + this._globalOptions.dataCallback = keepOriginalCallback(original, callback); + return this; + }, + + /* + * Set the breadcrumbCallback option + * + * @param {function} callback The callback to run which allows filtering + * or mutating breadcrumbs + * @return {Raven} + */ + setBreadcrumbCallback: function(callback) { + var original = this._globalOptions.breadcrumbCallback; + this._globalOptions.breadcrumbCallback = keepOriginalCallback(original, callback); + return this; + }, + + /* + * Set the shouldSendCallback option + * + * @param {function} callback The callback to run which allows + * introspecting the blob before sending + * @return {Raven} + */ + setShouldSendCallback: function(callback) { + var original = this._globalOptions.shouldSendCallback; + this._globalOptions.shouldSendCallback = keepOriginalCallback(original, callback); + return this; + }, + + /** + * Override the default HTTP transport mechanism that transmits data + * to the Sentry server. + * + * @param {function} transport Function invoked instead of the default + * `makeRequest` handler. + * + * @return {Raven} + */ + setTransport: function(transport) { + this._globalOptions.transport = transport; + + return this; + }, + + /* + * Get the latest raw exception that was captured by Raven. + * + * @return {error} + */ + lastException: function() { + return this._lastCapturedException; + }, + + /* + * Get the last event id + * + * @return {string} + */ + lastEventId: function() { + return this._lastEventId; + }, + + /* + * Determine if Raven is setup and ready to go. + * + * @return {boolean} + */ + isSetup: function() { + if (!this._hasJSON) return false; // needs JSON support + if (!this._globalServer) { + if (!this.ravenNotConfiguredError) { + this.ravenNotConfiguredError = true; + this._logDebug('error', 'Error: Raven has not been configured.'); + } + return false; + } + return true; + }, + + afterLoad: function() { + // TODO: remove window dependence? + + // Attempt to initialize Raven on load + var RavenConfig = _window.RavenConfig; + if (RavenConfig) { + this.config(RavenConfig.dsn, RavenConfig.config).install(); + } + }, + + showReportDialog: function(options) { + if ( + !_document // doesn't work without a document (React native) + ) + return; + + options = options || {}; + + var lastEventId = options.eventId || this.lastEventId(); + if (!lastEventId) { + throw new RavenConfigError('Missing eventId'); + } + + var dsn = options.dsn || this._dsn; + if (!dsn) { + throw new RavenConfigError('Missing DSN'); + } + + var encode = encodeURIComponent; + var qs = ''; + qs += '?eventId=' + encode(lastEventId); + qs += '&dsn=' + encode(dsn); + + var user = options.user || this._globalContext.user; + if (user) { + if (user.name) qs += '&name=' + encode(user.name); + if (user.email) qs += '&email=' + encode(user.email); + } + + var globalServer = this._getGlobalServer(this._parseDSN(dsn)); + + var script = _document.createElement('script'); + script.async = true; + script.src = globalServer + '/api/embed/error-page/' + qs; + (_document.head || _document.body).appendChild(script); + }, + + /**** Private functions ****/ + _ignoreNextOnError: function() { + var self = this; + this._ignoreOnError += 1; + setTimeout(function() { + // onerror should trigger before setTimeout + self._ignoreOnError -= 1; + }); + }, + + _triggerEvent: function(eventType, options) { + // NOTE: `event` is a native browser thing, so let's avoid conflicting wiht it + var evt, key; + + if (!this._hasDocument) return; + + options = options || {}; + + eventType = 'raven' + eventType.substr(0, 1).toUpperCase() + eventType.substr(1); + + if (_document.createEvent) { + evt = _document.createEvent('HTMLEvents'); + evt.initEvent(eventType, true, true); + } else { + evt = _document.createEventObject(); + evt.eventType = eventType; + } + + for (key in options) + if (hasKey(options, key)) { + evt[key] = options[key]; + } + + if (_document.createEvent) { + // IE9 if standards + _document.dispatchEvent(evt); + } else { + // IE8 regardless of Quirks or Standards + // IE9 if quirks + try { + _document.fireEvent('on' + evt.eventType.toLowerCase(), evt); + } catch (e) { + // Do nothing + } + } + }, + + /** + * Wraps addEventListener to capture UI breadcrumbs + * @param evtName the event name (e.g. "click") + * @returns {Function} + * @private + */ + _breadcrumbEventHandler: function(evtName) { + var self = this; + return function(evt) { + // reset keypress timeout; e.g. triggering a 'click' after + // a 'keypress' will reset the keypress debounce so that a new + // set of keypresses can be recorded + self._keypressTimeout = null; + + // It's possible this handler might trigger multiple times for the same + // event (e.g. event propagation through node ancestors). Ignore if we've + // already captured the event. + if (self._lastCapturedEvent === evt) return; + + self._lastCapturedEvent = evt; + + // try/catch both: + // - accessing evt.target (see getsentry/raven-js#838, #768) + // - `htmlTreeAsString` because it's complex, and just accessing the DOM incorrectly + // can throw an exception in some circumstances. + var target; + try { + target = htmlTreeAsString(evt.target); + } catch (e) { + target = ''; + } + + self.captureBreadcrumb({ + category: 'ui.' + evtName, // e.g. ui.click, ui.input + message: target + }); + }; + }, + + /** + * Wraps addEventListener to capture keypress UI events + * @returns {Function} + * @private + */ + _keypressEventHandler: function() { + var self = this, + debounceDuration = 1000; // milliseconds + + // TODO: if somehow user switches keypress target before + // debounce timeout is triggered, we will only capture + // a single breadcrumb from the FIRST target (acceptable?) + return function(evt) { + var target; + try { + target = evt.target; + } catch (e) { + // just accessing event properties can throw an exception in some rare circumstances + // see: https://github.com/getsentry/raven-js/issues/838 + return; + } + var tagName = target && target.tagName; + + // only consider keypress events on actual input elements + // this will disregard keypresses targeting body (e.g. tabbing + // through elements, hotkeys, etc) + if ( + !tagName || + (tagName !== 'INPUT' && tagName !== 'TEXTAREA' && !target.isContentEditable) + ) + return; + + // record first keypress in a series, but ignore subsequent + // keypresses until debounce clears + var timeout = self._keypressTimeout; + if (!timeout) { + self._breadcrumbEventHandler('input')(evt); + } + clearTimeout(timeout); + self._keypressTimeout = setTimeout(function() { + self._keypressTimeout = null; + }, debounceDuration); + }; + }, + + /** + * Captures a breadcrumb of type "navigation", normalizing input URLs + * @param to the originating URL + * @param from the target URL + * @private + */ + _captureUrlChange: function(from, to) { + var parsedLoc = parseUrl(this._location.href); + var parsedTo = parseUrl(to); + var parsedFrom = parseUrl(from); + + // because onpopstate only tells you the "new" (to) value of location.href, and + // not the previous (from) value, we need to track the value of the current URL + // state ourselves + this._lastHref = to; + + // Use only the path component of the URL if the URL matches the current + // document (almost all the time when using pushState) + if (parsedLoc.protocol === parsedTo.protocol && parsedLoc.host === parsedTo.host) + to = parsedTo.relative; + if (parsedLoc.protocol === parsedFrom.protocol && parsedLoc.host === parsedFrom.host) + from = parsedFrom.relative; + + this.captureBreadcrumb({ + category: 'navigation', + data: { + to: to, + from: from + } + }); + }, + + _patchFunctionToString: function() { + var self = this; + self._originalFunctionToString = Function.prototype.toString; + // eslint-disable-next-line no-extend-native + Function.prototype.toString = function() { + if (typeof this === 'function' && this.__raven__) { + return self._originalFunctionToString.apply(this.__orig__, arguments); + } + return self._originalFunctionToString.apply(this, arguments); + }; + }, + + _unpatchFunctionToString: function() { + if (this._originalFunctionToString) { + // eslint-disable-next-line no-extend-native + Function.prototype.toString = this._originalFunctionToString; + } + }, + + /** + * Wrap timer functions and event targets to catch errors and provide + * better metadata. + */ + _instrumentTryCatch: function() { + var self = this; + + var wrappedBuiltIns = self._wrappedBuiltIns; + + function wrapTimeFn(orig) { + return function(fn, t) { + // preserve arity + // Make a copy of the arguments to prevent deoptimization + // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments + var args = new Array(arguments.length); + for (var i = 0; i < args.length; ++i) { + args[i] = arguments[i]; + } + var originalCallback = args[0]; + if (isFunction(originalCallback)) { + args[0] = self.wrap(originalCallback); + } + + // IE < 9 doesn't support .call/.apply on setInterval/setTimeout, but it + // also supports only two arguments and doesn't care what this is, so we + // can just call the original function directly. + if (orig.apply) { + return orig.apply(this, args); + } else { + return orig(args[0], args[1]); + } + }; + } + + var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; + + function wrapEventTarget(global) { + var proto = _window[global] && _window[global].prototype; + if (proto && proto.hasOwnProperty && proto.hasOwnProperty('addEventListener')) { + fill( + proto, + 'addEventListener', + function(orig) { + return function(evtName, fn, capture, secure) { + // preserve arity + try { + if (fn && fn.handleEvent) { + fn.handleEvent = self.wrap(fn.handleEvent); + } + } catch (err) { + // can sometimes get 'Permission denied to access property "handle Event' + } + + // More breadcrumb DOM capture ... done here and not in `_instrumentBreadcrumbs` + // so that we don't have more than one wrapper function + var before, clickHandler, keypressHandler; + + if ( + autoBreadcrumbs && + autoBreadcrumbs.dom && + (global === 'EventTarget' || global === 'Node') + ) { + // NOTE: generating multiple handlers per addEventListener invocation, should + // revisit and verify we can just use one (almost certainly) + clickHandler = self._breadcrumbEventHandler('click'); + keypressHandler = self._keypressEventHandler(); + before = function(evt) { + // need to intercept every DOM event in `before` argument, in case that + // same wrapped method is re-used for different events (e.g. mousemove THEN click) + // see #724 + if (!evt) return; + + var eventType; + try { + eventType = evt.type; + } catch (e) { + // just accessing event properties can throw an exception in some rare circumstances + // see: https://github.com/getsentry/raven-js/issues/838 + return; + } + if (eventType === 'click') return clickHandler(evt); + else if (eventType === 'keypress') return keypressHandler(evt); + }; + } + return orig.call( + this, + evtName, + self.wrap(fn, undefined, before), + capture, + secure + ); + }; + }, + wrappedBuiltIns + ); + fill( + proto, + 'removeEventListener', + function(orig) { + return function(evt, fn, capture, secure) { + try { + fn = fn && (fn.__raven_wrapper__ ? fn.__raven_wrapper__ : fn); + } catch (e) { + // ignore, accessing __raven_wrapper__ will throw in some Selenium environments + } + return orig.call(this, evt, fn, capture, secure); + }; + }, + wrappedBuiltIns + ); + } + } + + fill(_window, 'setTimeout', wrapTimeFn, wrappedBuiltIns); + fill(_window, 'setInterval', wrapTimeFn, wrappedBuiltIns); + if (_window.requestAnimationFrame) { + fill( + _window, + 'requestAnimationFrame', + function(orig) { + return function(cb) { + return orig(self.wrap(cb)); + }; + }, + wrappedBuiltIns + ); + } + + // event targets borrowed from bugsnag-js: + // https://github.com/bugsnag/bugsnag-js/blob/master/src/bugsnag.js#L666 + var eventTargets = [ + 'EventTarget', + 'Window', + 'Node', + 'ApplicationCache', + 'AudioTrackList', + 'ChannelMergerNode', + 'CryptoOperation', + 'EventSource', + 'FileReader', + 'HTMLUnknownElement', + 'IDBDatabase', + 'IDBRequest', + 'IDBTransaction', + 'KeyOperation', + 'MediaController', + 'MessagePort', + 'ModalWindow', + 'Notification', + 'SVGElementInstance', + 'Screen', + 'TextTrack', + 'TextTrackCue', + 'TextTrackList', + 'WebSocket', + 'WebSocketWorker', + 'Worker', + 'XMLHttpRequest', + 'XMLHttpRequestEventTarget', + 'XMLHttpRequestUpload' + ]; + for (var i = 0; i < eventTargets.length; i++) { + wrapEventTarget(eventTargets[i]); + } + }, + + /** + * Instrument browser built-ins w/ breadcrumb capturing + * - XMLHttpRequests + * - DOM interactions (click/typing) + * - window.location changes + * - console + * + * Can be disabled or individually configured via the `autoBreadcrumbs` config option + */ + _instrumentBreadcrumbs: function() { + var self = this; + var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; + + var wrappedBuiltIns = self._wrappedBuiltIns; + + function wrapProp(prop, xhr) { + if (prop in xhr && isFunction(xhr[prop])) { + fill(xhr, prop, function(orig) { + return self.wrap(orig); + }); // intentionally don't track filled methods on XHR instances + } + } + + if (autoBreadcrumbs.xhr && 'XMLHttpRequest' in _window) { + var xhrproto = _window.XMLHttpRequest && _window.XMLHttpRequest.prototype; + fill( + xhrproto, + 'open', + function(origOpen) { + return function(method, url) { + // preserve arity + + // if Sentry key appears in URL, don't capture + if (isString(url) && url.indexOf(self._globalKey) === -1) { + this.__raven_xhr = { + method: method, + url: url, + status_code: null + }; + } + + return origOpen.apply(this, arguments); + }; + }, + wrappedBuiltIns + ); + + fill( + xhrproto, + 'send', + function(origSend) { + return function() { + // preserve arity + var xhr = this; + + function onreadystatechangeHandler() { + if (xhr.__raven_xhr && xhr.readyState === 4) { + try { + // touching statusCode in some platforms throws + // an exception + xhr.__raven_xhr.status_code = xhr.status; + } catch (e) { + /* do nothing */ + } + + self.captureBreadcrumb({ + type: 'http', + category: 'xhr', + data: xhr.__raven_xhr + }); + } + } + + var props = ['onload', 'onerror', 'onprogress']; + for (var j = 0; j < props.length; j++) { + wrapProp(props[j], xhr); + } + + if ('onreadystatechange' in xhr && isFunction(xhr.onreadystatechange)) { + fill( + xhr, + 'onreadystatechange', + function(orig) { + return self.wrap(orig, undefined, onreadystatechangeHandler); + } /* intentionally don't track this instrumentation */ + ); + } else { + // if onreadystatechange wasn't actually set by the page on this xhr, we + // are free to set our own and capture the breadcrumb + xhr.onreadystatechange = onreadystatechangeHandler; + } + + return origSend.apply(this, arguments); + }; + }, + wrappedBuiltIns + ); + } + + if (autoBreadcrumbs.xhr && supportsFetch()) { + fill( + _window, + 'fetch', + function(origFetch) { + return function() { + // preserve arity + // Make a copy of the arguments to prevent deoptimization + // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments + var args = new Array(arguments.length); + for (var i = 0; i < args.length; ++i) { + args[i] = arguments[i]; + } + + var fetchInput = args[0]; + var method = 'GET'; + var url; + + if (typeof fetchInput === 'string') { + url = fetchInput; + } else if ('Request' in _window && fetchInput instanceof _window.Request) { + url = fetchInput.url; + if (fetchInput.method) { + method = fetchInput.method; + } + } else { + url = '' + fetchInput; + } + + // if Sentry key appears in URL, don't capture, as it's our own request + if (url.indexOf(self._globalKey) !== -1) { + return origFetch.apply(this, args); + } + + if (args[1] && args[1].method) { + method = args[1].method; + } + + var fetchData = { + method: method, + url: url, + status_code: null + }; + + return origFetch + .apply(this, args) + .then(function(response) { + fetchData.status_code = response.status; + + self.captureBreadcrumb({ + type: 'http', + category: 'fetch', + data: fetchData + }); + + return response; + }) + ['catch'](function(err) { + // if there is an error performing the request + self.captureBreadcrumb({ + type: 'http', + category: 'fetch', + data: fetchData, + level: 'error' + }); + + throw err; + }); + }; + }, + wrappedBuiltIns + ); + } + + // Capture breadcrumbs from any click that is unhandled / bubbled up all the way + // to the document. Do this before we instrument addEventListener. + if (autoBreadcrumbs.dom && this._hasDocument) { + if (_document.addEventListener) { + _document.addEventListener('click', self._breadcrumbEventHandler('click'), false); + _document.addEventListener('keypress', self._keypressEventHandler(), false); + } else if (_document.attachEvent) { + // IE8 Compatibility + _document.attachEvent('onclick', self._breadcrumbEventHandler('click')); + _document.attachEvent('onkeypress', self._keypressEventHandler()); + } + } + + // record navigation (URL) changes + // NOTE: in Chrome App environment, touching history.pushState, *even inside + // a try/catch block*, will cause Chrome to output an error to console.error + // borrowed from: https://github.com/angular/angular.js/pull/13945/files + var chrome = _window.chrome; + var isChromePackagedApp = chrome && chrome.app && chrome.app.runtime; + var hasPushAndReplaceState = + !isChromePackagedApp && + _window.history && + _window.history.pushState && + _window.history.replaceState; + if (autoBreadcrumbs.location && hasPushAndReplaceState) { + // TODO: remove onpopstate handler on uninstall() + var oldOnPopState = _window.onpopstate; + _window.onpopstate = function() { + var currentHref = self._location.href; + self._captureUrlChange(self._lastHref, currentHref); + + if (oldOnPopState) { + return oldOnPopState.apply(this, arguments); + } + }; + + var historyReplacementFunction = function(origHistFunction) { + // note history.pushState.length is 0; intentionally not declaring + // params to preserve 0 arity + return function(/* state, title, url */) { + var url = arguments.length > 2 ? arguments[2] : undefined; + + // url argument is optional + if (url) { + // coerce to string (this is what pushState does) + self._captureUrlChange(self._lastHref, url + ''); + } + + return origHistFunction.apply(this, arguments); + }; + }; + + fill(_window.history, 'pushState', historyReplacementFunction, wrappedBuiltIns); + fill(_window.history, 'replaceState', historyReplacementFunction, wrappedBuiltIns); + } + + if (autoBreadcrumbs.console && 'console' in _window && console.log) { + // console + var consoleMethodCallback = function(msg, data) { + self.captureBreadcrumb({ + message: msg, + level: data.level, + category: 'console' + }); + }; + + each(['debug', 'info', 'warn', 'error', 'log'], function(_, level) { + wrapConsoleMethod(console, level, consoleMethodCallback); + }); + } + }, + + _restoreBuiltIns: function() { + // restore any wrapped builtins + var builtin; + while (this._wrappedBuiltIns.length) { + builtin = this._wrappedBuiltIns.shift(); + + var obj = builtin[0], + name = builtin[1], + orig = builtin[2]; + + obj[name] = orig; + } + }, + + _restoreConsole: function() { + // eslint-disable-next-line guard-for-in + for (var method in this._originalConsoleMethods) { + this._originalConsole[method] = this._originalConsoleMethods[method]; + } + }, + + _drainPlugins: function() { + var self = this; + + // FIX ME TODO + each(this._plugins, function(_, plugin) { + var installer = plugin[0]; + var args = plugin[1]; + installer.apply(self, [self].concat(args)); + }); + }, + + _parseDSN: function(str) { + var m = dsnPattern.exec(str), + dsn = {}, + i = 7; + + try { + while (i--) dsn[dsnKeys[i]] = m[i] || ''; + } catch (e) { + throw new RavenConfigError('Invalid DSN: ' + str); + } + + if (dsn.pass && !this._globalOptions.allowSecretKey) { + throw new RavenConfigError( + 'Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key' + ); + } + + return dsn; + }, + + _getGlobalServer: function(uri) { + // assemble the endpoint from the uri pieces + var globalServer = '//' + uri.host + (uri.port ? ':' + uri.port : ''); + + if (uri.protocol) { + globalServer = uri.protocol + ':' + globalServer; + } + return globalServer; + }, + + _handleOnErrorStackInfo: function() { + // if we are intentionally ignoring errors via onerror, bail out + if (!this._ignoreOnError) { + this._handleStackInfo.apply(this, arguments); + } + }, + + _handleStackInfo: function(stackInfo, options) { + var frames = this._prepareFrames(stackInfo, options); + + this._triggerEvent('handle', { + stackInfo: stackInfo, + options: options + }); + + this._processException( + stackInfo.name, + stackInfo.message, + stackInfo.url, + stackInfo.lineno, + frames, + options + ); + }, + + _prepareFrames: function(stackInfo, options) { + var self = this; + var frames = []; + if (stackInfo.stack && stackInfo.stack.length) { + each(stackInfo.stack, function(i, stack) { + var frame = self._normalizeFrame(stack, stackInfo.url); + if (frame) { + frames.push(frame); + } + }); + + // e.g. frames captured via captureMessage throw + if (options && options.trimHeadFrames) { + for (var j = 0; j < options.trimHeadFrames && j < frames.length; j++) { + frames[j].in_app = false; + } + } + } + frames = frames.slice(0, this._globalOptions.stackTraceLimit); + return frames; + }, + + _normalizeFrame: function(frame, stackInfoUrl) { + // normalize the frames data + var normalized = { + filename: frame.url, + lineno: frame.line, + colno: frame.column, + function: frame.func || '?' + }; + + // Case when we don't have any information about the error + // E.g. throwing a string or raw object, instead of an `Error` in Firefox + // Generating synthetic error doesn't add any value here + // + // We should probably somehow let a user know that they should fix their code + if (!frame.url) { + normalized.filename = stackInfoUrl; // fallback to whole stacks url from onerror handler + } + + normalized.in_app = !// determine if an exception came from outside of our app + // first we check the global includePaths list. + ( + (!!this._globalOptions.includePaths.test && + !this._globalOptions.includePaths.test(normalized.filename)) || + // Now we check for fun, if the function name is Raven or TraceKit + /(Raven|TraceKit)\./.test(normalized['function']) || + // finally, we do a last ditch effort and check for raven.min.js + /raven\.(min\.)?js$/.test(normalized.filename) + ); + + return normalized; + }, + + _processException: function(type, message, fileurl, lineno, frames, options) { + var prefixedMessage = (type ? type + ': ' : '') + (message || ''); + if ( + !!this._globalOptions.ignoreErrors.test && + (this._globalOptions.ignoreErrors.test(message) || + this._globalOptions.ignoreErrors.test(prefixedMessage)) + ) { + return; + } + + var stacktrace; + + if (frames && frames.length) { + fileurl = frames[0].filename || fileurl; + // Sentry expects frames oldest to newest + // and JS sends them as newest to oldest + frames.reverse(); + stacktrace = {frames: frames}; + } else if (fileurl) { + stacktrace = { + frames: [ + { + filename: fileurl, + lineno: lineno, + in_app: true + } + ] + }; + } + + if ( + !!this._globalOptions.ignoreUrls.test && + this._globalOptions.ignoreUrls.test(fileurl) + ) { + return; + } + + if ( + !!this._globalOptions.whitelistUrls.test && + !this._globalOptions.whitelistUrls.test(fileurl) + ) { + return; + } + + var data = objectMerge( + { + // sentry.interfaces.Exception + exception: { + values: [ + { + type: type, + value: message, + stacktrace: stacktrace + } + ] + }, + transaction: fileurl + }, + options + ); + + // Fire away! + this._send(data); + }, + + _trimPacket: function(data) { + // For now, we only want to truncate the two different messages + // but this could/should be expanded to just trim everything + var max = this._globalOptions.maxMessageLength; + if (data.message) { + data.message = truncate(data.message, max); + } + if (data.exception) { + var exception = data.exception.values[0]; + exception.value = truncate(exception.value, max); + } + + var request = data.request; + if (request) { + if (request.url) { + request.url = truncate(request.url, this._globalOptions.maxUrlLength); + } + if (request.Referer) { + request.Referer = truncate(request.Referer, this._globalOptions.maxUrlLength); + } + } + + if (data.breadcrumbs && data.breadcrumbs.values) + this._trimBreadcrumbs(data.breadcrumbs); + + return data; + }, + + /** + * Truncate breadcrumb values (right now just URLs) + */ + _trimBreadcrumbs: function(breadcrumbs) { + // known breadcrumb properties with urls + // TODO: also consider arbitrary prop values that start with (https?)?:// + var urlProps = ['to', 'from', 'url'], + urlProp, + crumb, + data; + + for (var i = 0; i < breadcrumbs.values.length; ++i) { + crumb = breadcrumbs.values[i]; + if ( + !crumb.hasOwnProperty('data') || + !isObject(crumb.data) || + objectFrozen(crumb.data) + ) + continue; + + data = objectMerge({}, crumb.data); + for (var j = 0; j < urlProps.length; ++j) { + urlProp = urlProps[j]; + if (data.hasOwnProperty(urlProp) && data[urlProp]) { + data[urlProp] = truncate(data[urlProp], this._globalOptions.maxUrlLength); + } + } + breadcrumbs.values[i].data = data; + } + }, + + _getHttpData: function() { + if (!this._hasNavigator && !this._hasDocument) return; + var httpData = {}; + + if (this._hasNavigator && _navigator.userAgent) { + httpData.headers = { + 'User-Agent': _navigator.userAgent + }; + } + + // Check in `window` instead of `document`, as we may be in ServiceWorker environment + if (_window.location && _window.location.href) { + httpData.url = _window.location.href; + } + + if (this._hasDocument && _document.referrer) { + if (!httpData.headers) httpData.headers = {}; + httpData.headers.Referer = _document.referrer; + } + + return httpData; + }, + + _resetBackoff: function() { + this._backoffDuration = 0; + this._backoffStart = null; + }, + + _shouldBackoff: function() { + return this._backoffDuration && now() - this._backoffStart < this._backoffDuration; + }, + + /** + * Returns true if the in-process data payload matches the signature + * of the previously-sent data + * + * NOTE: This has to be done at this level because TraceKit can generate + * data from window.onerror WITHOUT an exception object (IE8, IE9, + * other old browsers). This can take the form of an "exception" + * data object with a single frame (derived from the onerror args). + */ + _isRepeatData: function(current) { + var last = this._lastData; + + if ( + !last || + current.message !== last.message || // defined for captureMessage + current.transaction !== last.transaction // defined for captureException/onerror + ) + return false; + + // Stacktrace interface (i.e. from captureMessage) + if (current.stacktrace || last.stacktrace) { + return isSameStacktrace(current.stacktrace, last.stacktrace); + } else if (current.exception || last.exception) { + // Exception interface (i.e. from captureException/onerror) + return isSameException(current.exception, last.exception); + } + + return true; + }, + + _setBackoffState: function(request) { + // If we are already in a backoff state, don't change anything + if (this._shouldBackoff()) { + return; + } + + var status = request.status; + + // 400 - project_id doesn't exist or some other fatal + // 401 - invalid/revoked dsn + // 429 - too many requests + if (!(status === 400 || status === 401 || status === 429)) return; + + var retry; + try { + // If Retry-After is not in Access-Control-Expose-Headers, most + // browsers will throw an exception trying to access it + if (supportsFetch()) { + retry = request.headers.get('Retry-After'); + } else { + retry = request.getResponseHeader('Retry-After'); + } + + // Retry-After is returned in seconds + retry = parseInt(retry, 10) * 1000; + } catch (e) { + /* eslint no-empty:0 */ + } + + this._backoffDuration = retry + ? // If Sentry server returned a Retry-After value, use it + retry + : // Otherwise, double the last backoff duration (starts at 1 sec) + this._backoffDuration * 2 || 1000; + + this._backoffStart = now(); + }, + + _send: function(data) { + var globalOptions = this._globalOptions; + + var baseData = { + project: this._globalProject, + logger: globalOptions.logger, + platform: 'javascript' + }, + httpData = this._getHttpData(); + + if (httpData) { + baseData.request = httpData; + } + + // HACK: delete `trimHeadFrames` to prevent from appearing in outbound payload + if (data.trimHeadFrames) delete data.trimHeadFrames; + + data = objectMerge(baseData, data); + + // Merge in the tags and extra separately since objectMerge doesn't handle a deep merge + data.tags = objectMerge(objectMerge({}, this._globalContext.tags), data.tags); + data.extra = objectMerge(objectMerge({}, this._globalContext.extra), data.extra); + + // Send along our own collected metadata with extra + data.extra['session:duration'] = now() - this._startTime; + + if (this._breadcrumbs && this._breadcrumbs.length > 0) { + // intentionally make shallow copy so that additions + // to breadcrumbs aren't accidentally sent in this request + data.breadcrumbs = { + values: [].slice.call(this._breadcrumbs, 0) + }; + } + + if (this._globalContext.user) { + // sentry.interfaces.User + data.user = this._globalContext.user; + } + + // Include the environment if it's defined in globalOptions + if (globalOptions.environment) data.environment = globalOptions.environment; + + // Include the release if it's defined in globalOptions + if (globalOptions.release) data.release = globalOptions.release; + + // Include server_name if it's defined in globalOptions + if (globalOptions.serverName) data.server_name = globalOptions.serverName; + + data = this._sanitizeData(data); + + // Cleanup empty properties before sending them to the server + Object.keys(data).forEach(function(key) { + if (data[key] == null || data[key] === '' || isEmptyObject(data[key])) { + delete data[key]; + } + }); + + if (isFunction(globalOptions.dataCallback)) { + data = globalOptions.dataCallback(data) || data; + } + + // Why?????????? + if (!data || isEmptyObject(data)) { + return; + } + + // Check if the request should be filtered or not + if ( + isFunction(globalOptions.shouldSendCallback) && + !globalOptions.shouldSendCallback(data) + ) { + return; + } + + // Backoff state: Sentry server previously responded w/ an error (e.g. 429 - too many requests), + // so drop requests until "cool-off" period has elapsed. + if (this._shouldBackoff()) { + this._logDebug('warn', 'Raven dropped error due to backoff: ', data); + return; + } + + if (typeof globalOptions.sampleRate === 'number') { + if (Math.random() < globalOptions.sampleRate) { + this._sendProcessedPayload(data); + } + } else { + this._sendProcessedPayload(data); + } + }, + + _sanitizeData: function(data) { + return sanitize(data, this._globalOptions.sanitizeKeys); + }, + + _getUuid: function() { + return uuid4(); + }, + + _sendProcessedPayload: function(data, callback) { + var self = this; + var globalOptions = this._globalOptions; + + if (!this.isSetup()) return; + + // Try and clean up the packet before sending by truncating long values + data = this._trimPacket(data); + + // ideally duplicate error testing should occur *before* dataCallback/shouldSendCallback, + // but this would require copying an un-truncated copy of the data packet, which can be + // arbitrarily deep (extra_data) -- could be worthwhile? will revisit + if (!this._globalOptions.allowDuplicates && this._isRepeatData(data)) { + this._logDebug('warn', 'Raven dropped repeat event: ', data); + return; + } + + // Send along an event_id if not explicitly passed. + // This event_id can be used to reference the error within Sentry itself. + // Set lastEventId after we know the error should actually be sent + this._lastEventId = data.event_id || (data.event_id = this._getUuid()); + + // Store outbound payload after trim + this._lastData = data; + + this._logDebug('debug', 'Raven about to send:', data); + + var auth = { + sentry_version: '7', + sentry_client: 'raven-js/' + this.VERSION, + sentry_key: this._globalKey + }; + + if (this._globalSecret) { + auth.sentry_secret = this._globalSecret; + } + + var exception = data.exception && data.exception.values[0]; + + // only capture 'sentry' breadcrumb is autoBreadcrumbs is truthy + if ( + this._globalOptions.autoBreadcrumbs && + this._globalOptions.autoBreadcrumbs.sentry + ) { + this.captureBreadcrumb({ + category: 'sentry', + message: exception + ? (exception.type ? exception.type + ': ' : '') + exception.value + : data.message, + event_id: data.event_id, + level: data.level || 'error' // presume error unless specified + }); + } + + var url = this._globalEndpoint; + (globalOptions.transport || this._makeRequest).call(this, { + url: url, + auth: auth, + data: data, + options: globalOptions, + onSuccess: function success() { + self._resetBackoff(); + + self._triggerEvent('success', { + data: data, + src: url + }); + callback && callback(); + }, + onError: function failure(error) { + self._logDebug('error', 'Raven transport failed to send: ', error); + + if (error.request) { + self._setBackoffState(error.request); + } + + self._triggerEvent('failure', { + data: data, + src: url + }); + error = error || new Error('Raven send failed (no additional details provided)'); + callback && callback(error); + } + }); + }, + + _makeRequest: function(opts) { + // Auth is intentionally sent as part of query string (NOT as custom HTTP header) to avoid preflight CORS requests + var url = opts.url + '?' + urlencode(opts.auth); + + var evaluatedHeaders = null; + var evaluatedFetchParameters = {}; + + if (opts.options.headers) { + evaluatedHeaders = this._evaluateHash(opts.options.headers); + } + + if (opts.options.fetchParameters) { + evaluatedFetchParameters = this._evaluateHash(opts.options.fetchParameters); + } + + if (supportsFetch()) { + evaluatedFetchParameters.body = stringify(opts.data); + + var defaultFetchOptions = objectMerge({}, this._fetchDefaults); + var fetchOptions = objectMerge(defaultFetchOptions, evaluatedFetchParameters); + + if (evaluatedHeaders) { + fetchOptions.headers = evaluatedHeaders; + } + + return _window + .fetch(url, fetchOptions) + .then(function(response) { + if (response.ok) { + opts.onSuccess && opts.onSuccess(); + } else { + var error = new Error('Sentry error code: ' + response.status); + // It's called request only to keep compatibility with XHR interface + // and not add more redundant checks in setBackoffState method + error.request = response; + opts.onError && opts.onError(error); + } + }) + ['catch'](function() { + opts.onError && + opts.onError(new Error('Sentry error code: network unavailable')); + }); + } + + var request = _window.XMLHttpRequest && new _window.XMLHttpRequest(); + if (!request) return; + + // if browser doesn't support CORS (e.g. IE7), we are out of luck + var hasCORS = 'withCredentials' in request || typeof XDomainRequest !== 'undefined'; + + if (!hasCORS) return; + + if ('withCredentials' in request) { + request.onreadystatechange = function() { + if (request.readyState !== 4) { + return; + } else if (request.status === 200) { + opts.onSuccess && opts.onSuccess(); + } else if (opts.onError) { + var err = new Error('Sentry error code: ' + request.status); + err.request = request; + opts.onError(err); + } + }; + } else { + request = new XDomainRequest(); + // xdomainrequest cannot go http -> https (or vice versa), + // so always use protocol relative + url = url.replace(/^https?:/, ''); + + // onreadystatechange not supported by XDomainRequest + if (opts.onSuccess) { + request.onload = opts.onSuccess; + } + if (opts.onError) { + request.onerror = function() { + var err = new Error('Sentry error code: XDomainRequest'); + err.request = request; + opts.onError(err); + }; + } + } + + request.open('POST', url); + + if (evaluatedHeaders) { + each(evaluatedHeaders, function(key, value) { + request.setRequestHeader(key, value); + }); + } + + request.send(stringify(opts.data)); + }, + + _evaluateHash: function(hash) { + var evaluated = {}; + + for (var key in hash) { + if (hash.hasOwnProperty(key)) { + var value = hash[key]; + evaluated[key] = typeof value === 'function' ? value() : value; + } + } + + return evaluated; + }, + + _logDebug: function(level) { + // We allow `Raven.debug` and `Raven.config(DSN, { debug: true })` to not make backward incompatible API change + if ( + this._originalConsoleMethods[level] && + (this.debug || this._globalOptions.debug) + ) { + // In IE<10 console methods do not have their own 'apply' method + Function.prototype.apply.call( + this._originalConsoleMethods[level], + this._originalConsole, + [].slice.call(arguments, 1) + ); + } + }, + + _mergeContext: function(key, context) { + if (isUndefined(context)) { + delete this._globalContext[key]; + } else { + this._globalContext[key] = objectMerge(this._globalContext[key] || {}, context); + } + } +}; + +// Deprecations +Raven.prototype.setUser = Raven.prototype.setUserContext; +Raven.prototype.setReleaseContext = Raven.prototype.setRelease; + +module.exports = Raven; + +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"2":2,"3":3,"6":6,"7":7,"8":8,"9":9}],5:[function(_dereq_,module,exports){ +(function (global){ +/** + * Enforces a single instance of the Raven client, and the + * main entry point for Raven. If you are a consumer of the + * Raven library, you SHOULD load this file (vs raven.js). + **/ + +var RavenConstructor = _dereq_(4); + +// This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) +var _window = + typeof window !== 'undefined' + ? window + : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; +var _Raven = _window.Raven; + +var Raven = new RavenConstructor(); + +/* + * Allow multiple versions of Raven to be installed. + * Strip Raven from the global context and returns the instance. + * + * @return {Raven} + */ +Raven.noConflict = function() { + _window.Raven = _Raven; + return Raven; +}; + +Raven.afterLoad(); + +module.exports = Raven; + +/** + * DISCLAIMER: + * + * Expose `Client` constructor for cases where user want to track multiple "sub-applications" in one larger app. + * It's not meant to be used by a wide audience, so pleaaase make sure that you know what you're doing before using it. + * Accidentally calling `install` multiple times, may result in an unexpected behavior that's very hard to debug. + * + * It's called `Client' to be in-line with Raven Node implementation. + * + * HOWTO: + * + * import Raven from 'raven-js'; + * + * const someAppReporter = new Raven.Client(); + * const someOtherAppReporter = new Raven.Client(); + * + * someAppReporter.config('__DSN__', { + * ...config goes here + * }); + * + * someOtherAppReporter.config('__OTHER_DSN__', { + * ...config goes here + * }); + * + * someAppReporter.captureMessage(...); + * someAppReporter.captureException(...); + * someAppReporter.captureBreadcrumb(...); + * + * someOtherAppReporter.captureMessage(...); + * someOtherAppReporter.captureException(...); + * someOtherAppReporter.captureBreadcrumb(...); + * + * It should "just work". + */ +module.exports.Client = RavenConstructor; + +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"4":4}],6:[function(_dereq_,module,exports){ +(function (global){ +var stringify = _dereq_(8); + +var _window = + typeof window !== 'undefined' + ? window + : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; + +function isObject(what) { + return typeof what === 'object' && what !== null; +} + +// Yanked from https://git.io/vS8DV re-used under CC0 +// with some tiny modifications +function isError(value) { + switch (Object.prototype.toString.call(value)) { + case '[object Error]': + return true; + case '[object Exception]': + return true; + case '[object DOMException]': + return true; + default: + return value instanceof Error; + } +} + +function isErrorEvent(value) { + return Object.prototype.toString.call(value) === '[object ErrorEvent]'; +} + +function isDOMError(value) { + return Object.prototype.toString.call(value) === '[object DOMError]'; +} + +function isDOMException(value) { + return Object.prototype.toString.call(value) === '[object DOMException]'; +} + +function isUndefined(what) { + return what === void 0; +} + +function isFunction(what) { + return typeof what === 'function'; +} + +function isPlainObject(what) { + return Object.prototype.toString.call(what) === '[object Object]'; +} + +function isString(what) { + return Object.prototype.toString.call(what) === '[object String]'; +} + +function isArray(what) { + return Object.prototype.toString.call(what) === '[object Array]'; +} + +function isEmptyObject(what) { + if (!isPlainObject(what)) return false; + + for (var _ in what) { + if (what.hasOwnProperty(_)) { + return false; + } + } + return true; +} + +function supportsErrorEvent() { + try { + new ErrorEvent(''); // eslint-disable-line no-new + return true; + } catch (e) { + return false; + } +} + +function supportsDOMError() { + try { + new DOMError(''); // eslint-disable-line no-new + return true; + } catch (e) { + return false; + } +} + +function supportsDOMException() { + try { + new DOMException(''); // eslint-disable-line no-new + return true; + } catch (e) { + return false; + } +} + +function supportsFetch() { + if (!('fetch' in _window)) return false; + + try { + new Headers(); // eslint-disable-line no-new + new Request(''); // eslint-disable-line no-new + new Response(); // eslint-disable-line no-new + return true; + } catch (e) { + return false; + } +} + +// Despite all stars in the sky saying that Edge supports old draft syntax, aka 'never', 'always', 'origin' and 'default +// https://caniuse.com/#feat=referrer-policy +// It doesn't. And it throw exception instead of ignoring this parameter... +// REF: https://github.com/getsentry/raven-js/issues/1233 +function supportsReferrerPolicy() { + if (!supportsFetch()) return false; + + try { + // eslint-disable-next-line no-new + new Request('pickleRick', { + referrerPolicy: 'origin' + }); + return true; + } catch (e) { + return false; + } +} + +function supportsPromiseRejectionEvent() { + return typeof PromiseRejectionEvent === 'function'; +} + +function wrappedCallback(callback) { + function dataCallback(data, original) { + var normalizedData = callback(data) || data; + if (original) { + return original(normalizedData) || normalizedData; + } + return normalizedData; + } + + return dataCallback; +} + +function each(obj, callback) { + var i, j; + + if (isUndefined(obj.length)) { + for (i in obj) { + if (hasKey(obj, i)) { + callback.call(null, i, obj[i]); + } + } + } else { + j = obj.length; + if (j) { + for (i = 0; i < j; i++) { + callback.call(null, i, obj[i]); + } + } + } +} + +function objectMerge(obj1, obj2) { + if (!obj2) { + return obj1; + } + each(obj2, function(key, value) { + obj1[key] = value; + }); + return obj1; +} + +/** + * This function is only used for react-native. + * react-native freezes object that have already been sent over the + * js bridge. We need this function in order to check if the object is frozen. + * So it's ok that objectFrozen returns false if Object.isFrozen is not + * supported because it's not relevant for other "platforms". See related issue: + * https://github.com/getsentry/react-native-sentry/issues/57 + */ +function objectFrozen(obj) { + if (!Object.isFrozen) { + return false; + } + return Object.isFrozen(obj); +} + +function truncate(str, max) { + if (typeof max !== 'number') { + throw new Error('2nd argument to `truncate` function should be a number'); + } + if (typeof str !== 'string' || max === 0) { + return str; + } + return str.length <= max ? str : str.substr(0, max) + '\u2026'; +} + +/** + * hasKey, a better form of hasOwnProperty + * Example: hasKey(MainHostObject, property) === true/false + * + * @param {Object} host object to check property + * @param {string} key to check + */ +function hasKey(object, key) { + return Object.prototype.hasOwnProperty.call(object, key); +} + +function joinRegExp(patterns) { + // Combine an array of regular expressions and strings into one large regexp + // Be mad. + var sources = [], + i = 0, + len = patterns.length, + pattern; + + for (; i < len; i++) { + pattern = patterns[i]; + if (isString(pattern)) { + // If it's a string, we need to escape it + // Taken from: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions + sources.push(pattern.replace(/([.*+?^=!:${}()|\[\]\/\\])/g, '\\$1')); + } else if (pattern && pattern.source) { + // If it's a regexp already, we want to extract the source + sources.push(pattern.source); + } + // Intentionally skip other cases + } + return new RegExp(sources.join('|'), 'i'); +} + +function urlencode(o) { + var pairs = []; + each(o, function(key, value) { + pairs.push(encodeURIComponent(key) + '=' + encodeURIComponent(value)); + }); + return pairs.join('&'); +} + +// borrowed from https://tools.ietf.org/html/rfc3986#appendix-B +// intentionally using regex and not href parsing trick because React Native and other +// environments where DOM might not be available +function parseUrl(url) { + if (typeof url !== 'string') return {}; + var match = url.match(/^(([^:\/?#]+):)?(\/\/([^\/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?$/); + + // coerce to undefined values to empty string so we don't get 'undefined' + var query = match[6] || ''; + var fragment = match[8] || ''; + return { + protocol: match[2], + host: match[4], + path: match[5], + relative: match[5] + query + fragment // everything minus origin + }; +} +function uuid4() { + var crypto = _window.crypto || _window.msCrypto; + + if (!isUndefined(crypto) && crypto.getRandomValues) { + // Use window.crypto API if available + // eslint-disable-next-line no-undef + var arr = new Uint16Array(8); + crypto.getRandomValues(arr); + + // set 4 in byte 7 + arr[3] = (arr[3] & 0xfff) | 0x4000; + // set 2 most significant bits of byte 9 to '10' + arr[4] = (arr[4] & 0x3fff) | 0x8000; + + var pad = function(num) { + var v = num.toString(16); + while (v.length < 4) { + v = '0' + v; + } + return v; + }; + + return ( + pad(arr[0]) + + pad(arr[1]) + + pad(arr[2]) + + pad(arr[3]) + + pad(arr[4]) + + pad(arr[5]) + + pad(arr[6]) + + pad(arr[7]) + ); + } else { + // http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/2117523#2117523 + return 'xxxxxxxxxxxx4xxxyxxxxxxxxxxxxxxx'.replace(/[xy]/g, function(c) { + var r = (Math.random() * 16) | 0, + v = c === 'x' ? r : (r & 0x3) | 0x8; + return v.toString(16); + }); + } +} + +/** + * Given a child DOM element, returns a query-selector statement describing that + * and its ancestors + * e.g. [HTMLElement] => body > div > input#foo.btn[name=baz] + * @param elem + * @returns {string} + */ +function htmlTreeAsString(elem) { + /* eslint no-extra-parens:0*/ + var MAX_TRAVERSE_HEIGHT = 5, + MAX_OUTPUT_LEN = 80, + out = [], + height = 0, + len = 0, + separator = ' > ', + sepLength = separator.length, + nextStr; + + while (elem && height++ < MAX_TRAVERSE_HEIGHT) { + nextStr = htmlElementAsString(elem); + // bail out if + // - nextStr is the 'html' element + // - the length of the string that would be created exceeds MAX_OUTPUT_LEN + // (ignore this limit if we are on the first iteration) + if ( + nextStr === 'html' || + (height > 1 && len + out.length * sepLength + nextStr.length >= MAX_OUTPUT_LEN) + ) { + break; + } + + out.push(nextStr); + + len += nextStr.length; + elem = elem.parentNode; + } + + return out.reverse().join(separator); +} + +/** + * Returns a simple, query-selector representation of a DOM element + * e.g. [HTMLElement] => input#foo.btn[name=baz] + * @param HTMLElement + * @returns {string} + */ +function htmlElementAsString(elem) { + var out = [], + className, + classes, + key, + attr, + i; + + if (!elem || !elem.tagName) { + return ''; + } + + out.push(elem.tagName.toLowerCase()); + if (elem.id) { + out.push('#' + elem.id); + } + + className = elem.className; + if (className && isString(className)) { + classes = className.split(/\s+/); + for (i = 0; i < classes.length; i++) { + out.push('.' + classes[i]); + } + } + var attrWhitelist = ['type', 'name', 'title', 'alt']; + for (i = 0; i < attrWhitelist.length; i++) { + key = attrWhitelist[i]; + attr = elem.getAttribute(key); + if (attr) { + out.push('[' + key + '="' + attr + '"]'); + } + } + return out.join(''); +} + +/** + * Returns true if either a OR b is truthy, but not both + */ +function isOnlyOneTruthy(a, b) { + return !!(!!a ^ !!b); +} + +/** + * Returns true if both parameters are undefined + */ +function isBothUndefined(a, b) { + return isUndefined(a) && isUndefined(b); +} + +/** + * Returns true if the two input exception interfaces have the same content + */ +function isSameException(ex1, ex2) { + if (isOnlyOneTruthy(ex1, ex2)) return false; + + ex1 = ex1.values[0]; + ex2 = ex2.values[0]; + + if (ex1.type !== ex2.type || ex1.value !== ex2.value) return false; + + // in case both stacktraces are undefined, we can't decide so default to false + if (isBothUndefined(ex1.stacktrace, ex2.stacktrace)) return false; + + return isSameStacktrace(ex1.stacktrace, ex2.stacktrace); +} + +/** + * Returns true if the two input stack trace interfaces have the same content + */ +function isSameStacktrace(stack1, stack2) { + if (isOnlyOneTruthy(stack1, stack2)) return false; + + var frames1 = stack1.frames; + var frames2 = stack2.frames; + + // Exit early if frame count differs + if (frames1.length !== frames2.length) return false; + + // Iterate through every frame; bail out if anything differs + var a, b; + for (var i = 0; i < frames1.length; i++) { + a = frames1[i]; + b = frames2[i]; + if ( + a.filename !== b.filename || + a.lineno !== b.lineno || + a.colno !== b.colno || + a['function'] !== b['function'] + ) + return false; + } + return true; +} + +/** + * Polyfill a method + * @param obj object e.g. `document` + * @param name method name present on object e.g. `addEventListener` + * @param replacement replacement function + * @param track {optional} record instrumentation to an array + */ +function fill(obj, name, replacement, track) { + if (obj == null) return; + var orig = obj[name]; + obj[name] = replacement(orig); + obj[name].__raven__ = true; + obj[name].__orig__ = orig; + if (track) { + track.push([obj, name, orig]); + } +} + +/** + * Join values in array + * @param input array of values to be joined together + * @param delimiter string to be placed in-between values + * @returns {string} + */ +function safeJoin(input, delimiter) { + if (!isArray(input)) return ''; + + var output = []; + + for (var i = 0; i < input.length; i++) { + try { + output.push(String(input[i])); + } catch (e) { + output.push('[value cannot be serialized]'); + } + } + + return output.join(delimiter); +} + +// Default Node.js REPL depth +var MAX_SERIALIZE_EXCEPTION_DEPTH = 3; +// 50kB, as 100kB is max payload size, so half sounds reasonable +var MAX_SERIALIZE_EXCEPTION_SIZE = 50 * 1024; +var MAX_SERIALIZE_KEYS_LENGTH = 40; + +function utf8Length(value) { + return ~-encodeURI(value).split(/%..|./).length; +} + +function jsonSize(value) { + return utf8Length(JSON.stringify(value)); +} + +function serializeValue(value) { + if (typeof value === 'string') { + var maxLength = 40; + return truncate(value, maxLength); + } else if ( + typeof value === 'number' || + typeof value === 'boolean' || + typeof value === 'undefined' + ) { + return value; + } + + var type = Object.prototype.toString.call(value); + + // Node.js REPL notation + if (type === '[object Object]') return '[Object]'; + if (type === '[object Array]') return '[Array]'; + if (type === '[object Function]') + return value.name ? '[Function: ' + value.name + ']' : '[Function]'; + + return value; +} + +function serializeObject(value, depth) { + if (depth === 0) return serializeValue(value); + + if (isPlainObject(value)) { + return Object.keys(value).reduce(function(acc, key) { + acc[key] = serializeObject(value[key], depth - 1); + return acc; + }, {}); + } else if (Array.isArray(value)) { + return value.map(function(val) { + return serializeObject(val, depth - 1); + }); + } + + return serializeValue(value); +} + +function serializeException(ex, depth, maxSize) { + if (!isPlainObject(ex)) return ex; + + depth = typeof depth !== 'number' ? MAX_SERIALIZE_EXCEPTION_DEPTH : depth; + maxSize = typeof depth !== 'number' ? MAX_SERIALIZE_EXCEPTION_SIZE : maxSize; + + var serialized = serializeObject(ex, depth); + + if (jsonSize(stringify(serialized)) > maxSize) { + return serializeException(ex, depth - 1); + } + + return serialized; +} + +function serializeKeysForMessage(keys, maxLength) { + if (typeof keys === 'number' || typeof keys === 'string') return keys.toString(); + if (!Array.isArray(keys)) return ''; + + keys = keys.filter(function(key) { + return typeof key === 'string'; + }); + if (keys.length === 0) return '[object has no keys]'; + + maxLength = typeof maxLength !== 'number' ? MAX_SERIALIZE_KEYS_LENGTH : maxLength; + if (keys[0].length >= maxLength) return keys[0]; + + for (var usedKeys = keys.length; usedKeys > 0; usedKeys--) { + var serialized = keys.slice(0, usedKeys).join(', '); + if (serialized.length > maxLength) continue; + if (usedKeys === keys.length) return serialized; + return serialized + '\u2026'; + } + + return ''; +} + +function sanitize(input, sanitizeKeys) { + if (!isArray(sanitizeKeys) || (isArray(sanitizeKeys) && sanitizeKeys.length === 0)) + return input; + + var sanitizeRegExp = joinRegExp(sanitizeKeys); + var sanitizeMask = '********'; + var safeInput; + + try { + safeInput = JSON.parse(stringify(input)); + } catch (o_O) { + return input; + } + + function sanitizeWorker(workerInput) { + if (isArray(workerInput)) { + return workerInput.map(function(val) { + return sanitizeWorker(val); + }); + } + + if (isPlainObject(workerInput)) { + return Object.keys(workerInput).reduce(function(acc, k) { + if (sanitizeRegExp.test(k)) { + acc[k] = sanitizeMask; + } else { + acc[k] = sanitizeWorker(workerInput[k]); + } + return acc; + }, {}); + } + + return workerInput; + } + + return sanitizeWorker(safeInput); +} + +module.exports = { + isObject: isObject, + isError: isError, + isErrorEvent: isErrorEvent, + isDOMError: isDOMError, + isDOMException: isDOMException, + isUndefined: isUndefined, + isFunction: isFunction, + isPlainObject: isPlainObject, + isString: isString, + isArray: isArray, + isEmptyObject: isEmptyObject, + supportsErrorEvent: supportsErrorEvent, + supportsDOMError: supportsDOMError, + supportsDOMException: supportsDOMException, + supportsFetch: supportsFetch, + supportsReferrerPolicy: supportsReferrerPolicy, + supportsPromiseRejectionEvent: supportsPromiseRejectionEvent, + wrappedCallback: wrappedCallback, + each: each, + objectMerge: objectMerge, + truncate: truncate, + objectFrozen: objectFrozen, + hasKey: hasKey, + joinRegExp: joinRegExp, + urlencode: urlencode, + uuid4: uuid4, + htmlTreeAsString: htmlTreeAsString, + htmlElementAsString: htmlElementAsString, + isSameException: isSameException, + isSameStacktrace: isSameStacktrace, + parseUrl: parseUrl, + fill: fill, + safeJoin: safeJoin, + serializeException: serializeException, + serializeKeysForMessage: serializeKeysForMessage, + sanitize: sanitize +}; + +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"8":8}],7:[function(_dereq_,module,exports){ +(function (global){ +var utils = _dereq_(6); + +/* + TraceKit - Cross brower stack traces + + This was originally forked from github.com/occ/TraceKit, but has since been + largely re-written and is now maintained as part of raven-js. Tests for + this are in test/vendor. + + MIT license +*/ + +var TraceKit = { + collectWindowErrors: true, + debug: false +}; + +// This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) +var _window = + typeof window !== 'undefined' + ? window + : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; + +// global reference to slice +var _slice = [].slice; +var UNKNOWN_FUNCTION = '?'; + +// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error#Error_types +var ERROR_TYPES_RE = /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/; + +function getLocationHref() { + if (typeof document === 'undefined' || document.location == null) return ''; + return document.location.href; +} + +function getLocationOrigin() { + if (typeof document === 'undefined' || document.location == null) return ''; + + // Oh dear IE10... + if (!document.location.origin) { + document.location.origin = + document.location.protocol + + '//' + + document.location.hostname + + (document.location.port ? ':' + document.location.port : ''); + } + + return document.location.origin; +} + +/** + * TraceKit.report: cross-browser processing of unhandled exceptions + * + * Syntax: + * TraceKit.report.subscribe(function(stackInfo) { ... }) + * TraceKit.report.unsubscribe(function(stackInfo) { ... }) + * TraceKit.report(exception) + * try { ...code... } catch(ex) { TraceKit.report(ex); } + * + * Supports: + * - Firefox: full stack trace with line numbers, plus column number + * on top frame; column number is not guaranteed + * - Opera: full stack trace with line and column numbers + * - Chrome: full stack trace with line and column numbers + * - Safari: line and column number for the top frame only; some frames + * may be missing, and column number is not guaranteed + * - IE: line and column number for the top frame only; some frames + * may be missing, and column number is not guaranteed + * + * In theory, TraceKit should work on all of the following versions: + * - IE5.5+ (only 8.0 tested) + * - Firefox 0.9+ (only 3.5+ tested) + * - Opera 7+ (only 10.50 tested; versions 9 and earlier may require + * Exceptions Have Stacktrace to be enabled in opera:config) + * - Safari 3+ (only 4+ tested) + * - Chrome 1+ (only 5+ tested) + * - Konqueror 3.5+ (untested) + * + * Requires TraceKit.computeStackTrace. + * + * Tries to catch all unhandled exceptions and report them to the + * subscribed handlers. Please note that TraceKit.report will rethrow the + * exception. This is REQUIRED in order to get a useful stack trace in IE. + * If the exception does not reach the top of the browser, you will only + * get a stack trace from the point where TraceKit.report was called. + * + * Handlers receive a stackInfo object as described in the + * TraceKit.computeStackTrace docs. + */ +TraceKit.report = (function reportModuleWrapper() { + var handlers = [], + lastArgs = null, + lastException = null, + lastExceptionStack = null; + + /** + * Add a crash handler. + * @param {Function} handler + */ + function subscribe(handler) { + installGlobalHandler(); + handlers.push(handler); + } + + /** + * Remove a crash handler. + * @param {Function} handler + */ + function unsubscribe(handler) { + for (var i = handlers.length - 1; i >= 0; --i) { + if (handlers[i] === handler) { + handlers.splice(i, 1); + } + } + } + + /** + * Remove all crash handlers. + */ + function unsubscribeAll() { + uninstallGlobalHandler(); + handlers = []; + } + + /** + * Dispatch stack information to all handlers. + * @param {Object.} stack + */ + function notifyHandlers(stack, isWindowError) { + var exception = null; + if (isWindowError && !TraceKit.collectWindowErrors) { + return; + } + for (var i in handlers) { + if (handlers.hasOwnProperty(i)) { + try { + handlers[i].apply(null, [stack].concat(_slice.call(arguments, 2))); + } catch (inner) { + exception = inner; + } + } + } + + if (exception) { + throw exception; + } + } + + var _oldOnerrorHandler, _onErrorHandlerInstalled; + + /** + * Ensures all global unhandled exceptions are recorded. + * Supported by Gecko and IE. + * @param {string} msg Error message. + * @param {string} url URL of script that generated the exception. + * @param {(number|string)} lineNo The line number at which the error + * occurred. + * @param {?(number|string)} colNo The column number at which the error + * occurred. + * @param {?Error} ex The actual Error object. + */ + function traceKitWindowOnError(msg, url, lineNo, colNo, ex) { + var stack = null; + // If 'ex' is ErrorEvent, get real Error from inside + var exception = utils.isErrorEvent(ex) ? ex.error : ex; + // If 'msg' is ErrorEvent, get real message from inside + var message = utils.isErrorEvent(msg) ? msg.message : msg; + + if (lastExceptionStack) { + TraceKit.computeStackTrace.augmentStackTraceWithInitialElement( + lastExceptionStack, + url, + lineNo, + message + ); + processLastException(); + } else if (exception && utils.isError(exception)) { + // non-string `exception` arg; attempt to extract stack trace + + // New chrome and blink send along a real error object + // Let's just report that like a normal error. + // See: https://mikewest.org/2013/08/debugging-runtime-errors-with-window-onerror + stack = TraceKit.computeStackTrace(exception); + notifyHandlers(stack, true); + } else { + var location = { + url: url, + line: lineNo, + column: colNo + }; + + var name = undefined; + var groups; + + if ({}.toString.call(message) === '[object String]') { + var groups = message.match(ERROR_TYPES_RE); + if (groups) { + name = groups[1]; + message = groups[2]; + } + } + + location.func = UNKNOWN_FUNCTION; + + stack = { + name: name, + message: message, + url: getLocationHref(), + stack: [location] + }; + notifyHandlers(stack, true); + } + + if (_oldOnerrorHandler) { + return _oldOnerrorHandler.apply(this, arguments); + } + + return false; + } + + function installGlobalHandler() { + if (_onErrorHandlerInstalled) { + return; + } + _oldOnerrorHandler = _window.onerror; + _window.onerror = traceKitWindowOnError; + _onErrorHandlerInstalled = true; + } + + function uninstallGlobalHandler() { + if (!_onErrorHandlerInstalled) { + return; + } + _window.onerror = _oldOnerrorHandler; + _onErrorHandlerInstalled = false; + _oldOnerrorHandler = undefined; + } + + function processLastException() { + var _lastExceptionStack = lastExceptionStack, + _lastArgs = lastArgs; + lastArgs = null; + lastExceptionStack = null; + lastException = null; + notifyHandlers.apply(null, [_lastExceptionStack, false].concat(_lastArgs)); + } + + /** + * Reports an unhandled Error to TraceKit. + * @param {Error} ex + * @param {?boolean} rethrow If false, do not re-throw the exception. + * Only used for window.onerror to not cause an infinite loop of + * rethrowing. + */ + function report(ex, rethrow) { + var args = _slice.call(arguments, 1); + if (lastExceptionStack) { + if (lastException === ex) { + return; // already caught by an inner catch block, ignore + } else { + processLastException(); + } + } + + var stack = TraceKit.computeStackTrace(ex); + lastExceptionStack = stack; + lastException = ex; + lastArgs = args; + + // If the stack trace is incomplete, wait for 2 seconds for + // slow slow IE to see if onerror occurs or not before reporting + // this exception; otherwise, we will end up with an incomplete + // stack trace + setTimeout(function() { + if (lastException === ex) { + processLastException(); + } + }, stack.incomplete ? 2000 : 0); + + if (rethrow !== false) { + throw ex; // re-throw to propagate to the top level (and cause window.onerror) + } + } + + report.subscribe = subscribe; + report.unsubscribe = unsubscribe; + report.uninstall = unsubscribeAll; + return report; +})(); + +/** + * TraceKit.computeStackTrace: cross-browser stack traces in JavaScript + * + * Syntax: + * s = TraceKit.computeStackTrace(exception) // consider using TraceKit.report instead (see below) + * Returns: + * s.name - exception name + * s.message - exception message + * s.stack[i].url - JavaScript or HTML file URL + * s.stack[i].func - function name, or empty for anonymous functions (if guessing did not work) + * s.stack[i].args - arguments passed to the function, if known + * s.stack[i].line - line number, if known + * s.stack[i].column - column number, if known + * + * Supports: + * - Firefox: full stack trace with line numbers and unreliable column + * number on top frame + * - Opera 10: full stack trace with line and column numbers + * - Opera 9-: full stack trace with line numbers + * - Chrome: full stack trace with line and column numbers + * - Safari: line and column number for the topmost stacktrace element + * only + * - IE: no line numbers whatsoever + * + * Tries to guess names of anonymous functions by looking for assignments + * in the source code. In IE and Safari, we have to guess source file names + * by searching for function bodies inside all page scripts. This will not + * work for scripts that are loaded cross-domain. + * Here be dragons: some function names may be guessed incorrectly, and + * duplicate functions may be mismatched. + * + * TraceKit.computeStackTrace should only be used for tracing purposes. + * Logging of unhandled exceptions should be done with TraceKit.report, + * which builds on top of TraceKit.computeStackTrace and provides better + * IE support by utilizing the window.onerror event to retrieve information + * about the top of the stack. + * + * Note: In IE and Safari, no stack trace is recorded on the Error object, + * so computeStackTrace instead walks its *own* chain of callers. + * This means that: + * * in Safari, some methods may be missing from the stack trace; + * * in IE, the topmost function in the stack trace will always be the + * caller of computeStackTrace. + * + * This is okay for tracing (because you are likely to be calling + * computeStackTrace from the function you want to be the topmost element + * of the stack trace anyway), but not okay for logging unhandled + * exceptions (because your catch block will likely be far away from the + * inner function that actually caused the exception). + * + */ +TraceKit.computeStackTrace = (function computeStackTraceWrapper() { + // Contents of Exception in various browsers. + // + // SAFARI: + // ex.message = Can't find variable: qq + // ex.line = 59 + // ex.sourceId = 580238192 + // ex.sourceURL = http://... + // ex.expressionBeginOffset = 96 + // ex.expressionCaretOffset = 98 + // ex.expressionEndOffset = 98 + // ex.name = ReferenceError + // + // FIREFOX: + // ex.message = qq is not defined + // ex.fileName = http://... + // ex.lineNumber = 59 + // ex.columnNumber = 69 + // ex.stack = ...stack trace... (see the example below) + // ex.name = ReferenceError + // + // CHROME: + // ex.message = qq is not defined + // ex.name = ReferenceError + // ex.type = not_defined + // ex.arguments = ['aa'] + // ex.stack = ...stack trace... + // + // INTERNET EXPLORER: + // ex.message = ... + // ex.name = ReferenceError + // + // OPERA: + // ex.message = ...message... (see the example below) + // ex.name = ReferenceError + // ex.opera#sourceloc = 11 (pretty much useless, duplicates the info in ex.message) + // ex.stacktrace = n/a; see 'opera:config#UserPrefs|Exceptions Have Stacktrace' + + /** + * Computes stack trace information from the stack property. + * Chrome and Gecko use this property. + * @param {Error} ex + * @return {?Object.} Stack trace information. + */ + function computeStackTraceFromStackProp(ex) { + if (typeof ex.stack === 'undefined' || !ex.stack) return; + + var chrome = /^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i; + var winjs = /^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i; + // NOTE: blob urls are now supposed to always have an origin, therefore it's format + // which is `blob:http://url/path/with-some-uuid`, is matched by `blob.*?:\/` as well + var gecko = /^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i; + // Used to additionally parse URL/line/column from eval frames + var geckoEval = /(\S+) line (\d+)(?: > eval line \d+)* > eval/i; + var chromeEval = /\((\S*)(?::(\d+))(?::(\d+))\)/; + var lines = ex.stack.split('\n'); + var stack = []; + var submatch; + var parts; + var element; + var reference = /^(.*) is undefined$/.exec(ex.message); + + for (var i = 0, j = lines.length; i < j; ++i) { + if ((parts = chrome.exec(lines[i]))) { + var isNative = parts[2] && parts[2].indexOf('native') === 0; // start of line + var isEval = parts[2] && parts[2].indexOf('eval') === 0; // start of line + if (isEval && (submatch = chromeEval.exec(parts[2]))) { + // throw out eval line/column and use top-most line/column number + parts[2] = submatch[1]; // url + parts[3] = submatch[2]; // line + parts[4] = submatch[3]; // column + } + element = { + url: !isNative ? parts[2] : null, + func: parts[1] || UNKNOWN_FUNCTION, + args: isNative ? [parts[2]] : [], + line: parts[3] ? +parts[3] : null, + column: parts[4] ? +parts[4] : null + }; + } else if ((parts = winjs.exec(lines[i]))) { + element = { + url: parts[2], + func: parts[1] || UNKNOWN_FUNCTION, + args: [], + line: +parts[3], + column: parts[4] ? +parts[4] : null + }; + } else if ((parts = gecko.exec(lines[i]))) { + var isEval = parts[3] && parts[3].indexOf(' > eval') > -1; + if (isEval && (submatch = geckoEval.exec(parts[3]))) { + // throw out eval line/column and use top-most line number + parts[3] = submatch[1]; + parts[4] = submatch[2]; + parts[5] = null; // no column when eval + } else if (i === 0 && !parts[5] && typeof ex.columnNumber !== 'undefined') { + // FireFox uses this awesome columnNumber property for its top frame + // Also note, Firefox's column number is 0-based and everything else expects 1-based, + // so adding 1 + // NOTE: this hack doesn't work if top-most frame is eval + stack[0].column = ex.columnNumber + 1; + } + element = { + url: parts[3], + func: parts[1] || UNKNOWN_FUNCTION, + args: parts[2] ? parts[2].split(',') : [], + line: parts[4] ? +parts[4] : null, + column: parts[5] ? +parts[5] : null + }; + } else { + continue; + } + + if (!element.func && element.line) { + element.func = UNKNOWN_FUNCTION; + } + + if (element.url && element.url.substr(0, 5) === 'blob:') { + // Special case for handling JavaScript loaded into a blob. + // We use a synchronous AJAX request here as a blob is already in + // memory - it's not making a network request. This will generate a warning + // in the browser console, but there has already been an error so that's not + // that much of an issue. + var xhr = new XMLHttpRequest(); + xhr.open('GET', element.url, false); + xhr.send(null); + + // If we failed to download the source, skip this patch + if (xhr.status === 200) { + var source = xhr.responseText || ''; + + // We trim the source down to the last 300 characters as sourceMappingURL is always at the end of the file. + // Why 300? To be in line with: https://github.com/getsentry/sentry/blob/4af29e8f2350e20c28a6933354e4f42437b4ba42/src/sentry/lang/javascript/processor.py#L164-L175 + source = source.slice(-300); + + // Now we dig out the source map URL + var sourceMaps = source.match(/\/\/# sourceMappingURL=(.*)$/); + + // If we don't find a source map comment or we find more than one, continue on to the next element. + if (sourceMaps) { + var sourceMapAddress = sourceMaps[1]; + + // Now we check to see if it's a relative URL. + // If it is, convert it to an absolute one. + if (sourceMapAddress.charAt(0) === '~') { + sourceMapAddress = getLocationOrigin() + sourceMapAddress.slice(1); + } + + // Now we strip the '.map' off of the end of the URL and update the + // element so that Sentry can match the map to the blob. + element.url = sourceMapAddress.slice(0, -4); + } + } + } + + stack.push(element); + } + + if (!stack.length) { + return null; + } + + return { + name: ex.name, + message: ex.message, + url: getLocationHref(), + stack: stack + }; + } + + /** + * Adds information about the first frame to incomplete stack traces. + * Safari and IE require this to get complete data on the first frame. + * @param {Object.} stackInfo Stack trace information from + * one of the compute* methods. + * @param {string} url The URL of the script that caused an error. + * @param {(number|string)} lineNo The line number of the script that + * caused an error. + * @param {string=} message The error generated by the browser, which + * hopefully contains the name of the object that caused the error. + * @return {boolean} Whether or not the stack information was + * augmented. + */ + function augmentStackTraceWithInitialElement(stackInfo, url, lineNo, message) { + var initial = { + url: url, + line: lineNo + }; + + if (initial.url && initial.line) { + stackInfo.incomplete = false; + + if (!initial.func) { + initial.func = UNKNOWN_FUNCTION; + } + + if (stackInfo.stack.length > 0) { + if (stackInfo.stack[0].url === initial.url) { + if (stackInfo.stack[0].line === initial.line) { + return false; // already in stack trace + } else if ( + !stackInfo.stack[0].line && + stackInfo.stack[0].func === initial.func + ) { + stackInfo.stack[0].line = initial.line; + return false; + } + } + } + + stackInfo.stack.unshift(initial); + stackInfo.partial = true; + return true; + } else { + stackInfo.incomplete = true; + } + + return false; + } + + /** + * Computes stack trace information by walking the arguments.caller + * chain at the time the exception occurred. This will cause earlier + * frames to be missed but is the only way to get any stack trace in + * Safari and IE. The top frame is restored by + * {@link augmentStackTraceWithInitialElement}. + * @param {Error} ex + * @return {?Object.} Stack trace information. + */ + function computeStackTraceByWalkingCallerChain(ex, depth) { + var functionName = /function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i, + stack = [], + funcs = {}, + recursion = false, + parts, + item, + source; + + for ( + var curr = computeStackTraceByWalkingCallerChain.caller; + curr && !recursion; + curr = curr.caller + ) { + if (curr === computeStackTrace || curr === TraceKit.report) { + // console.log('skipping internal function'); + continue; + } + + item = { + url: null, + func: UNKNOWN_FUNCTION, + line: null, + column: null + }; + + if (curr.name) { + item.func = curr.name; + } else if ((parts = functionName.exec(curr.toString()))) { + item.func = parts[1]; + } + + if (typeof item.func === 'undefined') { + try { + item.func = parts.input.substring(0, parts.input.indexOf('{')); + } catch (e) {} + } + + if (funcs['' + curr]) { + recursion = true; + } else { + funcs['' + curr] = true; + } + + stack.push(item); + } + + if (depth) { + // console.log('depth is ' + depth); + // console.log('stack is ' + stack.length); + stack.splice(0, depth); + } + + var result = { + name: ex.name, + message: ex.message, + url: getLocationHref(), + stack: stack + }; + augmentStackTraceWithInitialElement( + result, + ex.sourceURL || ex.fileName, + ex.line || ex.lineNumber, + ex.message || ex.description + ); + return result; + } + + /** + * Computes a stack trace for an exception. + * @param {Error} ex + * @param {(string|number)=} depth + */ + function computeStackTrace(ex, depth) { + var stack = null; + depth = depth == null ? 0 : +depth; + + try { + stack = computeStackTraceFromStackProp(ex); + if (stack) { + return stack; + } + } catch (e) { + if (TraceKit.debug) { + throw e; + } + } + + try { + stack = computeStackTraceByWalkingCallerChain(ex, depth + 1); + if (stack) { + return stack; + } + } catch (e) { + if (TraceKit.debug) { + throw e; + } + } + return { + name: ex.name, + message: ex.message, + url: getLocationHref() + }; + } + + computeStackTrace.augmentStackTraceWithInitialElement = augmentStackTraceWithInitialElement; + computeStackTrace.computeStackTraceFromStackProp = computeStackTraceFromStackProp; + + return computeStackTrace; +})(); + +module.exports = TraceKit; + +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"6":6}],8:[function(_dereq_,module,exports){ +/* + json-stringify-safe + Like JSON.stringify, but doesn't throw on circular references. + + Originally forked from https://github.com/isaacs/json-stringify-safe + version 5.0.1 on 3/8/2017 and modified to handle Errors serialization + and IE8 compatibility. Tests for this are in test/vendor. + + ISC license: https://github.com/isaacs/json-stringify-safe/blob/master/LICENSE +*/ + +exports = module.exports = stringify; +exports.getSerialize = serializer; + +function indexOf(haystack, needle) { + for (var i = 0; i < haystack.length; ++i) { + if (haystack[i] === needle) return i; + } + return -1; +} + +function stringify(obj, replacer, spaces, cycleReplacer) { + return JSON.stringify(obj, serializer(replacer, cycleReplacer), spaces); +} + +// https://github.com/ftlabs/js-abbreviate/blob/fa709e5f139e7770a71827b1893f22418097fbda/index.js#L95-L106 +function stringifyError(value) { + var err = { + // These properties are implemented as magical getters and don't show up in for in + stack: value.stack, + message: value.message, + name: value.name + }; + + for (var i in value) { + if (Object.prototype.hasOwnProperty.call(value, i)) { + err[i] = value[i]; + } + } + + return err; +} + +function serializer(replacer, cycleReplacer) { + var stack = []; + var keys = []; + + if (cycleReplacer == null) { + cycleReplacer = function(key, value) { + if (stack[0] === value) { + return '[Circular ~]'; + } + return '[Circular ~.' + keys.slice(0, indexOf(stack, value)).join('.') + ']'; + }; + } + + return function(key, value) { + if (stack.length > 0) { + var thisPos = indexOf(stack, this); + ~thisPos ? stack.splice(thisPos + 1) : stack.push(this); + ~thisPos ? keys.splice(thisPos, Infinity, key) : keys.push(key); + + if (~indexOf(stack, value)) { + value = cycleReplacer.call(this, key, value); + } + } else { + stack.push(value); + } + + return replacer == null + ? value instanceof Error ? stringifyError(value) : value + : replacer.call(this, key, value); + }; +} + +},{}],9:[function(_dereq_,module,exports){ +/* + * JavaScript MD5 + * https://github.com/blueimp/JavaScript-MD5 + * + * Copyright 2011, Sebastian Tschan + * https://blueimp.net + * + * Licensed under the MIT license: + * https://opensource.org/licenses/MIT + * + * Based on + * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message + * Digest Algorithm, as defined in RFC 1321. + * Version 2.2 Copyright (C) Paul Johnston 1999 - 2009 + * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet + * Distributed under the BSD License + * See http://pajhome.org.uk/crypt/md5 for more info. + */ + +/* +* Add integers, wrapping at 2^32. This uses 16-bit operations internally +* to work around bugs in some JS interpreters. +*/ +function safeAdd(x, y) { + var lsw = (x & 0xffff) + (y & 0xffff); + var msw = (x >> 16) + (y >> 16) + (lsw >> 16); + return (msw << 16) | (lsw & 0xffff); +} + +/* +* Bitwise rotate a 32-bit number to the left. +*/ +function bitRotateLeft(num, cnt) { + return (num << cnt) | (num >>> (32 - cnt)); +} + +/* +* These functions implement the four basic operations the algorithm uses. +*/ +function md5cmn(q, a, b, x, s, t) { + return safeAdd(bitRotateLeft(safeAdd(safeAdd(a, q), safeAdd(x, t)), s), b); +} +function md5ff(a, b, c, d, x, s, t) { + return md5cmn((b & c) | (~b & d), a, b, x, s, t); +} +function md5gg(a, b, c, d, x, s, t) { + return md5cmn((b & d) | (c & ~d), a, b, x, s, t); +} +function md5hh(a, b, c, d, x, s, t) { + return md5cmn(b ^ c ^ d, a, b, x, s, t); +} +function md5ii(a, b, c, d, x, s, t) { + return md5cmn(c ^ (b | ~d), a, b, x, s, t); +} + +/* +* Calculate the MD5 of an array of little-endian words, and a bit length. +*/ +function binlMD5(x, len) { + /* append padding */ + x[len >> 5] |= 0x80 << (len % 32); + x[(((len + 64) >>> 9) << 4) + 14] = len; + + var i; + var olda; + var oldb; + var oldc; + var oldd; + var a = 1732584193; + var b = -271733879; + var c = -1732584194; + var d = 271733878; + + for (i = 0; i < x.length; i += 16) { + olda = a; + oldb = b; + oldc = c; + oldd = d; + + a = md5ff(a, b, c, d, x[i], 7, -680876936); + d = md5ff(d, a, b, c, x[i + 1], 12, -389564586); + c = md5ff(c, d, a, b, x[i + 2], 17, 606105819); + b = md5ff(b, c, d, a, x[i + 3], 22, -1044525330); + a = md5ff(a, b, c, d, x[i + 4], 7, -176418897); + d = md5ff(d, a, b, c, x[i + 5], 12, 1200080426); + c = md5ff(c, d, a, b, x[i + 6], 17, -1473231341); + b = md5ff(b, c, d, a, x[i + 7], 22, -45705983); + a = md5ff(a, b, c, d, x[i + 8], 7, 1770035416); + d = md5ff(d, a, b, c, x[i + 9], 12, -1958414417); + c = md5ff(c, d, a, b, x[i + 10], 17, -42063); + b = md5ff(b, c, d, a, x[i + 11], 22, -1990404162); + a = md5ff(a, b, c, d, x[i + 12], 7, 1804603682); + d = md5ff(d, a, b, c, x[i + 13], 12, -40341101); + c = md5ff(c, d, a, b, x[i + 14], 17, -1502002290); + b = md5ff(b, c, d, a, x[i + 15], 22, 1236535329); + + a = md5gg(a, b, c, d, x[i + 1], 5, -165796510); + d = md5gg(d, a, b, c, x[i + 6], 9, -1069501632); + c = md5gg(c, d, a, b, x[i + 11], 14, 643717713); + b = md5gg(b, c, d, a, x[i], 20, -373897302); + a = md5gg(a, b, c, d, x[i + 5], 5, -701558691); + d = md5gg(d, a, b, c, x[i + 10], 9, 38016083); + c = md5gg(c, d, a, b, x[i + 15], 14, -660478335); + b = md5gg(b, c, d, a, x[i + 4], 20, -405537848); + a = md5gg(a, b, c, d, x[i + 9], 5, 568446438); + d = md5gg(d, a, b, c, x[i + 14], 9, -1019803690); + c = md5gg(c, d, a, b, x[i + 3], 14, -187363961); + b = md5gg(b, c, d, a, x[i + 8], 20, 1163531501); + a = md5gg(a, b, c, d, x[i + 13], 5, -1444681467); + d = md5gg(d, a, b, c, x[i + 2], 9, -51403784); + c = md5gg(c, d, a, b, x[i + 7], 14, 1735328473); + b = md5gg(b, c, d, a, x[i + 12], 20, -1926607734); + + a = md5hh(a, b, c, d, x[i + 5], 4, -378558); + d = md5hh(d, a, b, c, x[i + 8], 11, -2022574463); + c = md5hh(c, d, a, b, x[i + 11], 16, 1839030562); + b = md5hh(b, c, d, a, x[i + 14], 23, -35309556); + a = md5hh(a, b, c, d, x[i + 1], 4, -1530992060); + d = md5hh(d, a, b, c, x[i + 4], 11, 1272893353); + c = md5hh(c, d, a, b, x[i + 7], 16, -155497632); + b = md5hh(b, c, d, a, x[i + 10], 23, -1094730640); + a = md5hh(a, b, c, d, x[i + 13], 4, 681279174); + d = md5hh(d, a, b, c, x[i], 11, -358537222); + c = md5hh(c, d, a, b, x[i + 3], 16, -722521979); + b = md5hh(b, c, d, a, x[i + 6], 23, 76029189); + a = md5hh(a, b, c, d, x[i + 9], 4, -640364487); + d = md5hh(d, a, b, c, x[i + 12], 11, -421815835); + c = md5hh(c, d, a, b, x[i + 15], 16, 530742520); + b = md5hh(b, c, d, a, x[i + 2], 23, -995338651); + + a = md5ii(a, b, c, d, x[i], 6, -198630844); + d = md5ii(d, a, b, c, x[i + 7], 10, 1126891415); + c = md5ii(c, d, a, b, x[i + 14], 15, -1416354905); + b = md5ii(b, c, d, a, x[i + 5], 21, -57434055); + a = md5ii(a, b, c, d, x[i + 12], 6, 1700485571); + d = md5ii(d, a, b, c, x[i + 3], 10, -1894986606); + c = md5ii(c, d, a, b, x[i + 10], 15, -1051523); + b = md5ii(b, c, d, a, x[i + 1], 21, -2054922799); + a = md5ii(a, b, c, d, x[i + 8], 6, 1873313359); + d = md5ii(d, a, b, c, x[i + 15], 10, -30611744); + c = md5ii(c, d, a, b, x[i + 6], 15, -1560198380); + b = md5ii(b, c, d, a, x[i + 13], 21, 1309151649); + a = md5ii(a, b, c, d, x[i + 4], 6, -145523070); + d = md5ii(d, a, b, c, x[i + 11], 10, -1120210379); + c = md5ii(c, d, a, b, x[i + 2], 15, 718787259); + b = md5ii(b, c, d, a, x[i + 9], 21, -343485551); + + a = safeAdd(a, olda); + b = safeAdd(b, oldb); + c = safeAdd(c, oldc); + d = safeAdd(d, oldd); + } + return [a, b, c, d]; +} + +/* +* Convert an array of little-endian words to a string +*/ +function binl2rstr(input) { + var i; + var output = ''; + var length32 = input.length * 32; + for (i = 0; i < length32; i += 8) { + output += String.fromCharCode((input[i >> 5] >>> (i % 32)) & 0xff); + } + return output; +} + +/* +* Convert a raw string to an array of little-endian words +* Characters >255 have their high-byte silently ignored. +*/ +function rstr2binl(input) { + var i; + var output = []; + output[(input.length >> 2) - 1] = undefined; + for (i = 0; i < output.length; i += 1) { + output[i] = 0; + } + var length8 = input.length * 8; + for (i = 0; i < length8; i += 8) { + output[i >> 5] |= (input.charCodeAt(i / 8) & 0xff) << (i % 32); + } + return output; +} + +/* +* Calculate the MD5 of a raw string +*/ +function rstrMD5(s) { + return binl2rstr(binlMD5(rstr2binl(s), s.length * 8)); +} + +/* +* Calculate the HMAC-MD5, of a key and some data (raw strings) +*/ +function rstrHMACMD5(key, data) { + var i; + var bkey = rstr2binl(key); + var ipad = []; + var opad = []; + var hash; + ipad[15] = opad[15] = undefined; + if (bkey.length > 16) { + bkey = binlMD5(bkey, key.length * 8); + } + for (i = 0; i < 16; i += 1) { + ipad[i] = bkey[i] ^ 0x36363636; + opad[i] = bkey[i] ^ 0x5c5c5c5c; + } + hash = binlMD5(ipad.concat(rstr2binl(data)), 512 + data.length * 8); + return binl2rstr(binlMD5(opad.concat(hash), 512 + 128)); +} + +/* +* Convert a raw string to a hex string +*/ +function rstr2hex(input) { + var hexTab = '0123456789abcdef'; + var output = ''; + var x; + var i; + for (i = 0; i < input.length; i += 1) { + x = input.charCodeAt(i); + output += hexTab.charAt((x >>> 4) & 0x0f) + hexTab.charAt(x & 0x0f); + } + return output; +} + +/* +* Encode a string as utf-8 +*/ +function str2rstrUTF8(input) { + return unescape(encodeURIComponent(input)); +} + +/* +* Take string arguments and return either raw or hex encoded strings +*/ +function rawMD5(s) { + return rstrMD5(str2rstrUTF8(s)); +} +function hexMD5(s) { + return rstr2hex(rawMD5(s)); +} +function rawHMACMD5(k, d) { + return rstrHMACMD5(str2rstrUTF8(k), str2rstrUTF8(d)); +} +function hexHMACMD5(k, d) { + return rstr2hex(rawHMACMD5(k, d)); +} + +function md5(string, key, raw) { + if (!key) { + if (!raw) { + return hexMD5(string); + } + return rawMD5(string); + } + if (!raw) { + return hexHMACMD5(key, string); + } + return rawHMACMD5(key, string); +} + +module.exports = md5; + +},{}]},{},[5,1])(5) +}); \ No newline at end of file diff --git a/packages/raven-js/dist/console/raven.min.js b/packages/raven-js/dist/console/raven.min.js new file mode 100644 index 000000000000..ad05ba6a99c3 --- /dev/null +++ b/packages/raven-js/dist/console/raven.min.js @@ -0,0 +1,4 @@ +/*! Raven.js 3.25.2 (30b6d4e) | github.com/getsentry/raven-js */ +!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.Raven=a()}}(function(){return function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};b[g][0].call(k.exports,function(a){var c=b[g][1][a];return e(c?c:a)},k,k.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;gthis.k.maxBreadcrumbs&&this.u.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.r.push([a,b]),this.n&&this.F(),this},setUserContext:function(a){return this.j.user=a,this},setExtraContext:function(a){return this.Z("extra",a),this},setTagsContext:function(a){return this.Z("tags",a),this},clearContext:function(){return this.j={},this},getContext:function(){return JSON.parse(h(this.j))},setEnvironment:function(a){return this.k.environment=a,this},setRelease:function(a){return this.k.release=a,this},setDataCallback:function(a){var b=this.k.dataCallback;return this.k.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.k.breadcrumbCallback;return this.k.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.k.shouldSendCallback;return this.k.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.k.transport=a,this},lastException:function(){return this.d},lastEventId:function(){return this.f},isSetup:function(){return!!this.a&&(!!this.g||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.z("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=R.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(S){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.H;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.j.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.J(this.G(c)),h=S.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(S.head||S.body).appendChild(h)}},L:function(){var a=this;this.m+=1,setTimeout(function(){a.m-=1})},$:function(a,b){var c,d;if(this.b){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),S.createEvent?(c=S.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=S.createEventObject(),c.eventType=a);for(d in b)A(b,d)&&(c[d]=b[d]);if(S.createEvent)S.dispatchEvent(c);else try{S.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},_:function(a){var b=this;return function(c){if(b.aa=null,b.v!==c){b.v=c;var d;try{d=E(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ba:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.aa;g||a._("input")(c),clearTimeout(g),a.aa=setTimeout(function(){a.aa=null},b)}}},ca:function(a,b){var c=H(this.w.href),d=H(b),e=H(a);this.x=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},C:function(){var a=this;a.da=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.M?a.da.apply(this.O,arguments):a.da.apply(this,arguments)}},Q:function(){this.da&&(Function.prototype.toString=this.da)},D:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.ca(b.x,c+""),a.apply(this,arguments)}};I(R.history,"pushState",j,d),I(R.history,"replaceState",j,d)}if(c.console&&"console"in R&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};w(["debug","info","warn","error","log"],function(a,b){O(console,b,k)})}},R:function(){for(var a;this.t.length;){a=this.t.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},S:function(){for(var a in this.q)this.p[a]=this.q[a]},F:function(){var a=this;w(this.r,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},G:function(a){var b=Q.exec(a),c={},d=7;try{for(;d--;)c[P[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.k.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},J:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},A:function(){this.m||this.V.apply(this,arguments)},V:function(a,b){var c=this.X(a,b);this.$("handle",{stackInfo:a,options:b}),this.fa(a.name,a.message,a.url,a.lineno,c,b)},X:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(w(a.stack,function(b,e){var f=c.ga(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.u,0)}),this.j.user&&(a.user=this.j.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),a=this.pa(a),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||v(a[b]))&&delete a[b]}),s(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!v(a)&&(!s(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.ma()?void this.z("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function F(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&l(b))for(c=b.split(/\s+/),f=0;fc?Q(a,b-1):d}function R(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?X:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function S(a,b){function c(a){return m(a)?a.map(function(a){return c(a)}):k(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!m(b)||m(b)&&0===b.length)return a;var d,e=A(b),f="********";try{d=JSON.parse(T(a))}catch(g){return a}return c(d)}var T=a(8),U="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},V=3,W=51200,X=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isDOMError:g,isDOMException:h,isUndefined:i,isFunction:j,isPlainObject:k,isString:l,isArray:m,isEmptyObject:n,supportsErrorEvent:o,supportsDOMError:p,supportsDOMException:q,supportsFetch:r,supportsReferrerPolicy:s,supportsPromiseRejectionEvent:t,wrappedCallback:u,each:v,objectMerge:w,truncate:y,objectFrozen:x,hasKey:z,joinRegExp:A,urlencode:B,uuid4:D,htmlTreeAsString:E,htmlElementAsString:F,isSameException:I,isSameStacktrace:J,parseUrl:C,fill:K,safeJoin:L,serializeException:Q,serializeKeysForMessage:R,sanitize:S}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{8:8}],7:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}function e(){return"undefined"==typeof document||null==document.location?"":(document.location.origin||(document.location.origin=document.location.protocol+"//"+document.location.hostname+(document.location.port?":"+document.location.port:"")),document.location.origin)}var f=a(6),g={collectWindowErrors:!0,debug:!1},h="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},i=[].slice,j="?",k=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;g.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function e(a,b){var c=null;if(!b||g.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(i.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,h,i){var l=null,m=f.isErrorEvent(i)?i.error:i,n=f.isErrorEvent(a)?a.message:a;if(v)g.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&f.isError(m))l=g.computeStackTrace(m),e(l,!0);else{var p,r={url:b,line:c,column:h},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(k);p&&(s=p[1],n=p[2])}r.func=j,l={name:s,message:n,url:d(),stack:[r]},e(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=h.onerror,h.onerror=l,r=!0)}function n(){r&&(h.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,e.apply(null,[a,!1].concat(b))}function p(a,b){var c=i.call(arguments,1);if(v){if(u===a)return;o()}var d=g.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),g.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,f,g=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,h=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,i=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,k=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,l=/\((\S*)(?::(\d+))(?::(\d+))\)/,m=a.stack.split("\n"),n=[],o=(/^(.*) is undefined$/.exec(a.message),0),p=m.length;o eval")>-1;r&&(b=k.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==o||c[5]||"undefined"==typeof a.columnNumber||(n[0].column=a.columnNumber+1),f={url:c[3],func:c[1]||j,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}if(!f.func&&f.line&&(f.func=j),f.url&&"blob:"===f.url.substr(0,5)){var s=new XMLHttpRequest;if(s.open("GET",f.url,!1),s.send(null),200===s.status){var t=s.responseText||"";t=t.slice(-300);var u=t.match(/\/\/# sourceMappingURL=(.*)$/);if(u){var v=u[1];"~"===v.charAt(0)&&(v=e()+v.slice(1)),f.url=v.slice(0,-4)}}}n.push(f)}return n.length?{name:a.name,message:a.message,url:d(),stack:n}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=j),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,e){for(var h,i,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==f&&o!==g.report){if(i={url:null,func:j,line:null,column:null},o.name?i.func=o.name:(h=k.exec(o.toString()))&&(i.func=h[1]),"undefined"==typeof i.func)try{i.func=h.input.substring(0,h.input.indexOf("{"))}catch(p){}m[""+o]?n=!0:m[""+o]=!0,l.push(i)}e&&l.splice(0,e);var q={name:a.name,message:a.message,url:d(),stack:l};return b(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),q}function f(b,e){ +var f=null;e=null==e?0:+e;try{if(f=a(b))return f}catch(h){if(g.debug)throw h}try{if(f=c(b,e+1))return f}catch(h){if(g.debug)throw h}return{name:b.name,message:b.message,url:d()}}return f.augmentStackTraceWithInitialElement=b,f.computeStackTraceFromStackProp=a,f}(),b.exports=g}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{6:6}],8:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}],9:[function(a,b,c){function d(a,b){var c=(65535&a)+(65535&b),d=(a>>16)+(b>>16)+(c>>16);return d<<16|65535&c}function e(a,b){return a<>>32-b}function f(a,b,c,f,g,h){return d(e(d(d(b,a),d(f,h)),g),c)}function g(a,b,c,d,e,g,h){return f(b&c|~b&d,a,b,e,g,h)}function h(a,b,c,d,e,g,h){return f(b&d|c&~d,a,b,e,g,h)}function i(a,b,c,d,e,g,h){return f(b^c^d,a,b,e,g,h)}function j(a,b,c,d,e,g,h){return f(c^(b|~d),a,b,e,g,h)}function k(a,b){a[b>>5]|=128<>>9<<4)+14]=b;var c,e,f,k,l,m=1732584193,n=-271733879,o=-1732584194,p=271733878;for(c=0;c>5]>>>b%32&255);return c}function m(a){var b,c=[];for(c[(a.length>>2)-1]=void 0,b=0;b>5]|=(255&a.charCodeAt(b/8))<16&&(e=k(e,8*a.length)),c=0;c<16;c+=1)f[c]=909522486^e[c],g[c]=1549556828^e[c];return d=k(f.concat(m(b)),512+8*b.length),l(k(g.concat(d),640))}function p(a){var b,c,d="0123456789abcdef",e="";for(c=0;c>>4&15)+d.charAt(15&b);return e}function q(a){return unescape(encodeURIComponent(a))}function r(a){return n(q(a))}function s(a){return p(r(a))}function t(a,b){return o(q(a),q(b))}function u(a,b){return p(t(a,b))}function v(a,b,c){return b?c?t(b,a):u(b,a):c?r(a):s(a)}b.exports=v},{}]},{},[5,1])(5)}); +//# sourceMappingURL=raven.min.js.map \ No newline at end of file diff --git a/packages/raven-js/dist/console/raven.min.js.map b/packages/raven-js/dist/console/raven.min.js.map new file mode 100644 index 000000000000..83753b3d5e6b --- /dev/null +++ b/packages/raven-js/dist/console/raven.min.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","consolePlugin","console","pluginOptions","logLevels","levels","push","callback","msg","data","captureMessage","level","pop","wrapConsoleMethod","wrapMethod","addPlugin","3","5","2","RavenConfigError","message","name","prototype","constructor","utils","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","safeJoin","logger","extra","Function","apply","6","4","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","sanitizeKeys","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isErrorEvent","isDOMError","isDOMException","isError","isObject","isPlainObject","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","sanitize","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","config","dsn","options","_logDebug","globalOptions","key","value","setDSN","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","toString","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","substr","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","context","func","undefined","wrap","_before","wrapped","deep","_ignoreNextOnError","captureException","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","T","event","reason","unhandledPromiseRejection","B","_promiseRejectionHandler","bind","addEventListener","P","removeEventListener","ex","trimHeadFrames","error","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","U","currentOptions","exKeys","Object","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","setDataCallback","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","L","setTimeout","$","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","_","evtName","_keypressTimeout","target","category","ba","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","ca","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","C","_originalFunctionToString","Q","D","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","type","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","E","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","R","builtin","S","F","installer","concat","G","str","m","exec","allowSecretKey","J","port","A","V","stackInfo","_triggerEvent","_processException","lineno","X","frame","_normalizeFrame","in_app","ga","stackInfoUrl","normalized","filename","line","colno","column","function","fa","prefixedMessage","exception","values","transaction","ha","request","Referer","breadcrumbs","_trimBreadcrumbs","ia","urlProp","urlProps","ja","httpData","userAgent","User-Agent","referrer","y","_backoffDuration","_backoffStart","ma","na","current","last","oa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Y","baseData","project","platform","_getHttpData","serverName","server_name","_sanitizeData","forEach","random","_sendProcessedPayload","pa","ra","qa","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","sa","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","onerror","open","setRequestHeader","send","ta","hash","evaluated","z","Z","setUser","setReleaseContext","7","8","9","RavenConstructor","_Raven","noConflict","Client","what","supportsErrorEvent","ErrorEvent","supportsDOMError","DOMError","supportsDOMException","DOMException","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","wrappedCallback","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","sanitizeMask","safeInput","o_O","getLocationHref","getLocationOrigin","origin","hostname","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","responseText","sourceMaps","sourceMapAddress","charAt","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","string","raw"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file diff --git a/packages/raven-js/dist/ember,require,vue/raven.js b/packages/raven-js/dist/ember,require,vue/raven.js new file mode 100644 index 000000000000..3a81968b5983 --- /dev/null +++ b/packages/raven-js/dist/ember,require,vue/raven.js @@ -0,0 +1,4110 @@ +/*! Raven.js 3.25.2 (30b6d4e) | github.com/getsentry/raven-js */ + +/* + * Includes TraceKit + * https://github.com/getsentry/TraceKit + * + * Copyright 2018 Matt Robenolt and other contributors + * Released under the BSD license + * https://github.com/getsentry/raven-js/blob/master/LICENSE + * + */ + +(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.Raven = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o' : 'anonymous component') + + (vm._isVue && vm.$options.__file ? ' at ' + vm.$options.__file : '') + ); +} + +function vuePlugin(Raven, Vue) { + Vue = Vue || window.Vue; + + // quit if Vue isn't on the page + if (!Vue || !Vue.config) return; + + var _oldOnError = Vue.config.errorHandler; + Vue.config.errorHandler = function VueErrorHandler(error, vm, info) { + var metaData = {}; + + // vm and lifecycleHook are not always available + if (Object.prototype.toString.call(vm) === '[object Object]') { + metaData.componentName = formatComponentName(vm); + metaData.propsData = vm.$options.propsData; + } + + if (typeof info !== 'undefined') { + metaData.lifecycleHook = info; + } + + Raven.captureException(error, { + extra: metaData + }); + + if (typeof _oldOnError === 'function') { + _oldOnError.call(this, error, vm, info); + } + }; +} + +module.exports = vuePlugin; + +_dereq_(7).addPlugin(module.exports); +},{"7":7}],4:[function(_dereq_,module,exports){ +function RavenConfigError(message) { + this.name = 'RavenConfigError'; + this.message = message; +} +RavenConfigError.prototype = new Error(); +RavenConfigError.prototype.constructor = RavenConfigError; + +module.exports = RavenConfigError; + +},{}],5:[function(_dereq_,module,exports){ +var utils = _dereq_(8); + +var wrapMethod = function(console, level, callback) { + var originalConsoleLevel = console[level]; + var originalConsole = console; + + if (!(level in console)) { + return; + } + + var sentryLevel = level === 'warn' ? 'warning' : level; + + console[level] = function() { + var args = [].slice.call(arguments); + + var msg = utils.safeJoin(args, ' '); + var data = {level: sentryLevel, logger: 'console', extra: {arguments: args}}; + + if (level === 'assert') { + if (args[0] === false) { + // Default browsers message + msg = + 'Assertion failed: ' + (utils.safeJoin(args.slice(1), ' ') || 'console.assert'); + data.extra.arguments = args.slice(1); + callback && callback(msg, data); + } + } else { + callback && callback(msg, data); + } + + // this fails for some browsers. :( + if (originalConsoleLevel) { + // IE9 doesn't allow calling apply on console functions directly + // See: https://stackoverflow.com/questions/5472938/does-ie9-support-console-log-and-is-it-a-real-function#answer-5473193 + Function.prototype.apply.call(originalConsoleLevel, originalConsole, args); + } + }; +}; + +module.exports = { + wrapMethod: wrapMethod +}; + +},{"8":8}],6:[function(_dereq_,module,exports){ +(function (global){ +/*global XDomainRequest:false */ + +var TraceKit = _dereq_(9); +var stringify = _dereq_(10); +var md5 = _dereq_(11); +var RavenConfigError = _dereq_(4); + +var utils = _dereq_(8); +var isErrorEvent = utils.isErrorEvent; +var isDOMError = utils.isDOMError; +var isDOMException = utils.isDOMException; +var isError = utils.isError; +var isObject = utils.isObject; +var isPlainObject = utils.isPlainObject; +var isUndefined = utils.isUndefined; +var isFunction = utils.isFunction; +var isString = utils.isString; +var isArray = utils.isArray; +var isEmptyObject = utils.isEmptyObject; +var each = utils.each; +var objectMerge = utils.objectMerge; +var truncate = utils.truncate; +var objectFrozen = utils.objectFrozen; +var hasKey = utils.hasKey; +var joinRegExp = utils.joinRegExp; +var urlencode = utils.urlencode; +var uuid4 = utils.uuid4; +var htmlTreeAsString = utils.htmlTreeAsString; +var isSameException = utils.isSameException; +var isSameStacktrace = utils.isSameStacktrace; +var parseUrl = utils.parseUrl; +var fill = utils.fill; +var supportsFetch = utils.supportsFetch; +var supportsReferrerPolicy = utils.supportsReferrerPolicy; +var serializeKeysForMessage = utils.serializeKeysForMessage; +var serializeException = utils.serializeException; +var sanitize = utils.sanitize; + +var wrapConsoleMethod = _dereq_(5).wrapMethod; + +var dsnKeys = 'source protocol user pass host port path'.split(' '), + dsnPattern = /^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/; + +function now() { + return +new Date(); +} + +// This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) +var _window = + typeof window !== 'undefined' + ? window + : typeof global !== 'undefined' + ? global + : typeof self !== 'undefined' + ? self + : {}; +var _document = _window.document; +var _navigator = _window.navigator; + +function keepOriginalCallback(original, callback) { + return isFunction(callback) + ? function(data) { + return callback(data, original); + } + : callback; +} + +// First, check for JSON support +// If there is no JSON, we no-op the core features of Raven +// since JSON is required to encode the payload +function Raven() { + this._hasJSON = !!(typeof JSON === 'object' && JSON.stringify); + // Raven can run in contexts where there's no document (react-native) + this._hasDocument = !isUndefined(_document); + this._hasNavigator = !isUndefined(_navigator); + this._lastCapturedException = null; + this._lastData = null; + this._lastEventId = null; + this._globalServer = null; + this._globalKey = null; + this._globalProject = null; + this._globalContext = {}; + this._globalOptions = { + // SENTRY_RELEASE can be injected by https://github.com/getsentry/sentry-webpack-plugin + release: _window.SENTRY_RELEASE && _window.SENTRY_RELEASE.id, + logger: 'javascript', + ignoreErrors: [], + ignoreUrls: [], + whitelistUrls: [], + includePaths: [], + headers: null, + collectWindowErrors: true, + captureUnhandledRejections: true, + maxMessageLength: 0, + // By default, truncates URL values to 250 chars + maxUrlLength: 250, + stackTraceLimit: 50, + autoBreadcrumbs: true, + instrument: true, + sampleRate: 1, + sanitizeKeys: [] + }; + this._fetchDefaults = { + method: 'POST', + keepalive: true, + // Despite all stars in the sky saying that Edge supports old draft syntax, aka 'never', 'always', 'origin' and 'default + // https://caniuse.com/#feat=referrer-policy + // It doesn't. And it throw exception instead of ignoring this parameter... + // REF: https://github.com/getsentry/raven-js/issues/1233 + referrerPolicy: supportsReferrerPolicy() ? 'origin' : '' + }; + this._ignoreOnError = 0; + this._isRavenInstalled = false; + this._originalErrorStackTraceLimit = Error.stackTraceLimit; + // capture references to window.console *and* all its methods first + // before the console plugin has a chance to monkey patch + this._originalConsole = _window.console || {}; + this._originalConsoleMethods = {}; + this._plugins = []; + this._startTime = now(); + this._wrappedBuiltIns = []; + this._breadcrumbs = []; + this._lastCapturedEvent = null; + this._keypressTimeout; + this._location = _window.location; + this._lastHref = this._location && this._location.href; + this._resetBackoff(); + + // eslint-disable-next-line guard-for-in + for (var method in this._originalConsole) { + this._originalConsoleMethods[method] = this._originalConsole[method]; + } +} + +/* + * The core Raven singleton + * + * @this {Raven} + */ + +Raven.prototype = { + // Hardcode version string so that raven source can be loaded directly via + // webpack (using a build step causes webpack #1617). Grunt verifies that + // this value matches package.json during build. + // See: https://github.com/getsentry/raven-js/issues/465 + VERSION: '3.25.2', + + debug: false, + + TraceKit: TraceKit, // alias to TraceKit + + /* + * Configure Raven with a DSN and extra options + * + * @param {string} dsn The public Sentry DSN + * @param {object} options Set of global options [optional] + * @return {Raven} + */ + config: function(dsn, options) { + var self = this; + + if (self._globalServer) { + this._logDebug('error', 'Error: Raven has already been configured'); + return self; + } + if (!dsn) return self; + + var globalOptions = self._globalOptions; + + // merge in options + if (options) { + each(options, function(key, value) { + // tags and extra are special and need to be put into context + if (key === 'tags' || key === 'extra' || key === 'user') { + self._globalContext[key] = value; + } else { + globalOptions[key] = value; + } + }); + } + + self.setDSN(dsn); + + // "Script error." is hard coded into browsers for errors that it can't read. + // this is the result of a script being pulled in from an external domain and CORS. + globalOptions.ignoreErrors.push(/^Script error\.?$/); + globalOptions.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/); + + // join regexp rules into one big rule + globalOptions.ignoreErrors = joinRegExp(globalOptions.ignoreErrors); + globalOptions.ignoreUrls = globalOptions.ignoreUrls.length + ? joinRegExp(globalOptions.ignoreUrls) + : false; + globalOptions.whitelistUrls = globalOptions.whitelistUrls.length + ? joinRegExp(globalOptions.whitelistUrls) + : false; + globalOptions.includePaths = joinRegExp(globalOptions.includePaths); + globalOptions.maxBreadcrumbs = Math.max( + 0, + Math.min(globalOptions.maxBreadcrumbs || 100, 100) + ); // default and hard limit is 100 + + var autoBreadcrumbDefaults = { + xhr: true, + console: true, + dom: true, + location: true, + sentry: true + }; + + var autoBreadcrumbs = globalOptions.autoBreadcrumbs; + if ({}.toString.call(autoBreadcrumbs) === '[object Object]') { + autoBreadcrumbs = objectMerge(autoBreadcrumbDefaults, autoBreadcrumbs); + } else if (autoBreadcrumbs !== false) { + autoBreadcrumbs = autoBreadcrumbDefaults; + } + globalOptions.autoBreadcrumbs = autoBreadcrumbs; + + var instrumentDefaults = { + tryCatch: true + }; + + var instrument = globalOptions.instrument; + if ({}.toString.call(instrument) === '[object Object]') { + instrument = objectMerge(instrumentDefaults, instrument); + } else if (instrument !== false) { + instrument = instrumentDefaults; + } + globalOptions.instrument = instrument; + + TraceKit.collectWindowErrors = !!globalOptions.collectWindowErrors; + + // return for chaining + return self; + }, + + /* + * Installs a global window.onerror error handler + * to capture and report uncaught exceptions. + * At this point, install() is required to be called due + * to the way TraceKit is set up. + * + * @return {Raven} + */ + install: function() { + var self = this; + if (self.isSetup() && !self._isRavenInstalled) { + TraceKit.report.subscribe(function() { + self._handleOnErrorStackInfo.apply(self, arguments); + }); + + if (self._globalOptions.captureUnhandledRejections) { + self._attachPromiseRejectionHandler(); + } + + self._patchFunctionToString(); + + if (self._globalOptions.instrument && self._globalOptions.instrument.tryCatch) { + self._instrumentTryCatch(); + } + + if (self._globalOptions.autoBreadcrumbs) self._instrumentBreadcrumbs(); + + // Install all of the plugins + self._drainPlugins(); + + self._isRavenInstalled = true; + } + + Error.stackTraceLimit = self._globalOptions.stackTraceLimit; + return this; + }, + + /* + * Set the DSN (can be called multiple time unlike config) + * + * @param {string} dsn The public Sentry DSN + */ + setDSN: function(dsn) { + var self = this, + uri = self._parseDSN(dsn), + lastSlash = uri.path.lastIndexOf('/'), + path = uri.path.substr(1, lastSlash); + + self._dsn = dsn; + self._globalKey = uri.user; + self._globalSecret = uri.pass && uri.pass.substr(1); + self._globalProject = uri.path.substr(lastSlash + 1); + + self._globalServer = self._getGlobalServer(uri); + + self._globalEndpoint = + self._globalServer + '/' + path + 'api/' + self._globalProject + '/store/'; + + // Reset backoff state since we may be pointing at a + // new project/server + this._resetBackoff(); + }, + + /* + * Wrap code within a context so Raven can capture errors + * reliably across domains that is executed immediately. + * + * @param {object} options A specific set of options for this context [optional] + * @param {function} func The callback to be immediately executed within the context + * @param {array} args An array of arguments to be called with the callback [optional] + */ + context: function(options, func, args) { + if (isFunction(options)) { + args = func || []; + func = options; + options = undefined; + } + + return this.wrap(options, func).apply(this, args); + }, + + /* + * Wrap code within a context and returns back a new function to be executed + * + * @param {object} options A specific set of options for this context [optional] + * @param {function} func The function to be wrapped in a new context + * @param {function} func A function to call before the try/catch wrapper [optional, private] + * @return {function} The newly wrapped functions with a context + */ + wrap: function(options, func, _before) { + var self = this; + // 1 argument has been passed, and it's not a function + // so just return it + if (isUndefined(func) && !isFunction(options)) { + return options; + } + + // options is optional + if (isFunction(options)) { + func = options; + options = undefined; + } + + // At this point, we've passed along 2 arguments, and the second one + // is not a function either, so we'll just return the second argument. + if (!isFunction(func)) { + return func; + } + + // We don't wanna wrap it twice! + try { + if (func.__raven__) { + return func; + } + + // If this has already been wrapped in the past, return that + if (func.__raven_wrapper__) { + return func.__raven_wrapper__; + } + } catch (e) { + // Just accessing custom props in some Selenium environments + // can cause a "Permission denied" exception (see raven-js#495). + // Bail on wrapping and return the function as-is (defers to window.onerror). + return func; + } + + function wrapped() { + var args = [], + i = arguments.length, + deep = !options || (options && options.deep !== false); + + if (_before && isFunction(_before)) { + _before.apply(this, arguments); + } + + // Recursively wrap all of a function's arguments that are + // functions themselves. + while (i--) args[i] = deep ? self.wrap(options, arguments[i]) : arguments[i]; + + try { + // Attempt to invoke user-land function + // NOTE: If you are a Sentry user, and you are seeing this stack frame, it + // means Raven caught an error invoking your application code. This is + // expected behavior and NOT indicative of a bug with Raven.js. + return func.apply(this, args); + } catch (e) { + self._ignoreNextOnError(); + self.captureException(e, options); + throw e; + } + } + + // copy over properties of the old function + for (var property in func) { + if (hasKey(func, property)) { + wrapped[property] = func[property]; + } + } + wrapped.prototype = func.prototype; + + func.__raven_wrapper__ = wrapped; + // Signal that this function has been wrapped/filled already + // for both debugging and to prevent it to being wrapped/filled twice + wrapped.__raven__ = true; + wrapped.__orig__ = func; + + return wrapped; + }, + + /** + * Uninstalls the global error handler. + * + * @return {Raven} + */ + uninstall: function() { + TraceKit.report.uninstall(); + + this._detachPromiseRejectionHandler(); + this._unpatchFunctionToString(); + this._restoreBuiltIns(); + this._restoreConsole(); + + Error.stackTraceLimit = this._originalErrorStackTraceLimit; + this._isRavenInstalled = false; + + return this; + }, + + /** + * Callback used for `unhandledrejection` event + * + * @param {PromiseRejectionEvent} event An object containing + * promise: the Promise that was rejected + * reason: the value with which the Promise was rejected + * @return void + */ + _promiseRejectionHandler: function(event) { + this._logDebug('debug', 'Raven caught unhandled promise rejection:', event); + this.captureException(event.reason, { + extra: { + unhandledPromiseRejection: true + } + }); + }, + + /** + * Installs the global promise rejection handler. + * + * @return {raven} + */ + _attachPromiseRejectionHandler: function() { + this._promiseRejectionHandler = this._promiseRejectionHandler.bind(this); + _window.addEventListener && + _window.addEventListener('unhandledrejection', this._promiseRejectionHandler); + return this; + }, + + /** + * Uninstalls the global promise rejection handler. + * + * @return {raven} + */ + _detachPromiseRejectionHandler: function() { + _window.removeEventListener && + _window.removeEventListener('unhandledrejection', this._promiseRejectionHandler); + return this; + }, + + /** + * Manually capture an exception and send it over to Sentry + * + * @param {error} ex An exception to be logged + * @param {object} options A specific set of options for this error [optional] + * @return {Raven} + */ + captureException: function(ex, options) { + options = objectMerge({trimHeadFrames: 0}, options ? options : {}); + + if (isErrorEvent(ex) && ex.error) { + // If it is an ErrorEvent with `error` property, extract it to get actual Error + ex = ex.error; + } else if (isDOMError(ex) || isDOMException(ex)) { + // If it is a DOMError or DOMException (which are legacy APIs, but still supported in some browsers) + // then we just extract the name and message, as they don't provide anything else + // https://developer.mozilla.org/en-US/docs/Web/API/DOMError + // https://developer.mozilla.org/en-US/docs/Web/API/DOMException + var name = ex.name || (isDOMError(ex) ? 'DOMError' : 'DOMException'); + var message = ex.message ? name + ': ' + ex.message : name; + + return this.captureMessage( + message, + objectMerge(options, { + // neither DOMError or DOMException provide stack trace and we most likely wont get it this way as well + // but it's barely any overhead so we may at least try + stacktrace: true, + trimHeadFrames: options.trimHeadFrames + 1 + }) + ); + } else if (isError(ex)) { + // we have a real Error object + ex = ex; + } else if (isPlainObject(ex)) { + // If it is plain Object, serialize it manually and extract options + // This will allow us to group events based on top-level keys + // which is much better than creating new group when any key/value change + options = this._getCaptureExceptionOptionsFromPlainObject(options, ex); + ex = new Error(options.message); + } else { + // If none of previous checks were valid, then it means that + // it's not a DOMError/DOMException + // it's not a plain Object + // it's not a valid ErrorEvent (one with an error property) + // it's not an Error + // So bail out and capture it as a simple message: + return this.captureMessage( + ex, + objectMerge(options, { + stacktrace: true, // if we fall back to captureMessage, default to attempting a new trace + trimHeadFrames: options.trimHeadFrames + 1 + }) + ); + } + + // Store the raw exception object for potential debugging and introspection + this._lastCapturedException = ex; + + // TraceKit.report will re-raise any exception passed to it, + // which means you have to wrap it in try/catch. Instead, we + // can wrap it here and only re-raise if TraceKit.report + // raises an exception different from the one we asked to + // report on. + try { + var stack = TraceKit.computeStackTrace(ex); + this._handleStackInfo(stack, options); + } catch (ex1) { + if (ex !== ex1) { + throw ex1; + } + } + + return this; + }, + + _getCaptureExceptionOptionsFromPlainObject: function(currentOptions, ex) { + var exKeys = Object.keys(ex).sort(); + var options = objectMerge(currentOptions, { + message: + 'Non-Error exception captured with keys: ' + serializeKeysForMessage(exKeys), + fingerprint: [md5(exKeys)], + extra: currentOptions.extra || {} + }); + options.extra.__serialized__ = serializeException(ex); + + return options; + }, + + /* + * Manually send a message to Sentry + * + * @param {string} msg A plain message to be captured in Sentry + * @param {object} options A specific set of options for this message [optional] + * @return {Raven} + */ + captureMessage: function(msg, options) { + // config() automagically converts ignoreErrors from a list to a RegExp so we need to test for an + // early call; we'll error on the side of logging anything called before configuration since it's + // probably something you should see: + if ( + !!this._globalOptions.ignoreErrors.test && + this._globalOptions.ignoreErrors.test(msg) + ) { + return; + } + + options = options || {}; + msg = msg + ''; // Make sure it's actually a string + + var data = objectMerge( + { + message: msg + }, + options + ); + + var ex; + // Generate a "synthetic" stack trace from this point. + // NOTE: If you are a Sentry user, and you are seeing this stack frame, it is NOT indicative + // of a bug with Raven.js. Sentry generates synthetic traces either by configuration, + // or if it catches a thrown object without a "stack" property. + try { + throw new Error(msg); + } catch (ex1) { + ex = ex1; + } + + // null exception name so `Error` isn't prefixed to msg + ex.name = null; + var stack = TraceKit.computeStackTrace(ex); + + // stack[0] is `throw new Error(msg)` call itself, we are interested in the frame that was just before that, stack[1] + var initialCall = isArray(stack.stack) && stack.stack[1]; + + // if stack[1] is `Raven.captureException`, it means that someone passed a string to it and we redirected that call + // to be handled by `captureMessage`, thus `initialCall` is the 3rd one, not 2nd + // initialCall => captureException(string) => captureMessage(string) + if (initialCall && initialCall.func === 'Raven.captureException') { + initialCall = stack.stack[2]; + } + + var fileurl = (initialCall && initialCall.url) || ''; + + if ( + !!this._globalOptions.ignoreUrls.test && + this._globalOptions.ignoreUrls.test(fileurl) + ) { + return; + } + + if ( + !!this._globalOptions.whitelistUrls.test && + !this._globalOptions.whitelistUrls.test(fileurl) + ) { + return; + } + + if (this._globalOptions.stacktrace || (options && options.stacktrace)) { + // fingerprint on msg, not stack trace (legacy behavior, could be revisited) + data.fingerprint = data.fingerprint == null ? msg : data.fingerprint; + + options = objectMerge( + { + trimHeadFrames: 0 + }, + options + ); + // Since we know this is a synthetic trace, the top frame (this function call) + // MUST be from Raven.js, so mark it for trimming + // We add to the trim counter so that callers can choose to trim extra frames, such + // as utility functions. + options.trimHeadFrames += 1; + + var frames = this._prepareFrames(stack, options); + data.stacktrace = { + // Sentry expects frames oldest to newest + frames: frames.reverse() + }; + } + + // Make sure that fingerprint is always wrapped in an array + if (data.fingerprint) { + data.fingerprint = isArray(data.fingerprint) + ? data.fingerprint + : [data.fingerprint]; + } + + // Fire away! + this._send(data); + + return this; + }, + + captureBreadcrumb: function(obj) { + var crumb = objectMerge( + { + timestamp: now() / 1000 + }, + obj + ); + + if (isFunction(this._globalOptions.breadcrumbCallback)) { + var result = this._globalOptions.breadcrumbCallback(crumb); + + if (isObject(result) && !isEmptyObject(result)) { + crumb = result; + } else if (result === false) { + return this; + } + } + + this._breadcrumbs.push(crumb); + if (this._breadcrumbs.length > this._globalOptions.maxBreadcrumbs) { + this._breadcrumbs.shift(); + } + return this; + }, + + addPlugin: function(plugin /*arg1, arg2, ... argN*/) { + var pluginArgs = [].slice.call(arguments, 1); + + this._plugins.push([plugin, pluginArgs]); + if (this._isRavenInstalled) { + this._drainPlugins(); + } + + return this; + }, + + /* + * Set/clear a user to be sent along with the payload. + * + * @param {object} user An object representing user data [optional] + * @return {Raven} + */ + setUserContext: function(user) { + // Intentionally do not merge here since that's an unexpected behavior. + this._globalContext.user = user; + + return this; + }, + + /* + * Merge extra attributes to be sent along with the payload. + * + * @param {object} extra An object representing extra data [optional] + * @return {Raven} + */ + setExtraContext: function(extra) { + this._mergeContext('extra', extra); + + return this; + }, + + /* + * Merge tags to be sent along with the payload. + * + * @param {object} tags An object representing tags [optional] + * @return {Raven} + */ + setTagsContext: function(tags) { + this._mergeContext('tags', tags); + + return this; + }, + + /* + * Clear all of the context. + * + * @return {Raven} + */ + clearContext: function() { + this._globalContext = {}; + + return this; + }, + + /* + * Get a copy of the current context. This cannot be mutated. + * + * @return {object} copy of context + */ + getContext: function() { + // lol javascript + return JSON.parse(stringify(this._globalContext)); + }, + + /* + * Set environment of application + * + * @param {string} environment Typically something like 'production'. + * @return {Raven} + */ + setEnvironment: function(environment) { + this._globalOptions.environment = environment; + + return this; + }, + + /* + * Set release version of application + * + * @param {string} release Typically something like a git SHA to identify version + * @return {Raven} + */ + setRelease: function(release) { + this._globalOptions.release = release; + + return this; + }, + + /* + * Set the dataCallback option + * + * @param {function} callback The callback to run which allows the + * data blob to be mutated before sending + * @return {Raven} + */ + setDataCallback: function(callback) { + var original = this._globalOptions.dataCallback; + this._globalOptions.dataCallback = keepOriginalCallback(original, callback); + return this; + }, + + /* + * Set the breadcrumbCallback option + * + * @param {function} callback The callback to run which allows filtering + * or mutating breadcrumbs + * @return {Raven} + */ + setBreadcrumbCallback: function(callback) { + var original = this._globalOptions.breadcrumbCallback; + this._globalOptions.breadcrumbCallback = keepOriginalCallback(original, callback); + return this; + }, + + /* + * Set the shouldSendCallback option + * + * @param {function} callback The callback to run which allows + * introspecting the blob before sending + * @return {Raven} + */ + setShouldSendCallback: function(callback) { + var original = this._globalOptions.shouldSendCallback; + this._globalOptions.shouldSendCallback = keepOriginalCallback(original, callback); + return this; + }, + + /** + * Override the default HTTP transport mechanism that transmits data + * to the Sentry server. + * + * @param {function} transport Function invoked instead of the default + * `makeRequest` handler. + * + * @return {Raven} + */ + setTransport: function(transport) { + this._globalOptions.transport = transport; + + return this; + }, + + /* + * Get the latest raw exception that was captured by Raven. + * + * @return {error} + */ + lastException: function() { + return this._lastCapturedException; + }, + + /* + * Get the last event id + * + * @return {string} + */ + lastEventId: function() { + return this._lastEventId; + }, + + /* + * Determine if Raven is setup and ready to go. + * + * @return {boolean} + */ + isSetup: function() { + if (!this._hasJSON) return false; // needs JSON support + if (!this._globalServer) { + if (!this.ravenNotConfiguredError) { + this.ravenNotConfiguredError = true; + this._logDebug('error', 'Error: Raven has not been configured.'); + } + return false; + } + return true; + }, + + afterLoad: function() { + // TODO: remove window dependence? + + // Attempt to initialize Raven on load + var RavenConfig = _window.RavenConfig; + if (RavenConfig) { + this.config(RavenConfig.dsn, RavenConfig.config).install(); + } + }, + + showReportDialog: function(options) { + if ( + !_document // doesn't work without a document (React native) + ) + return; + + options = options || {}; + + var lastEventId = options.eventId || this.lastEventId(); + if (!lastEventId) { + throw new RavenConfigError('Missing eventId'); + } + + var dsn = options.dsn || this._dsn; + if (!dsn) { + throw new RavenConfigError('Missing DSN'); + } + + var encode = encodeURIComponent; + var qs = ''; + qs += '?eventId=' + encode(lastEventId); + qs += '&dsn=' + encode(dsn); + + var user = options.user || this._globalContext.user; + if (user) { + if (user.name) qs += '&name=' + encode(user.name); + if (user.email) qs += '&email=' + encode(user.email); + } + + var globalServer = this._getGlobalServer(this._parseDSN(dsn)); + + var script = _document.createElement('script'); + script.async = true; + script.src = globalServer + '/api/embed/error-page/' + qs; + (_document.head || _document.body).appendChild(script); + }, + + /**** Private functions ****/ + _ignoreNextOnError: function() { + var self = this; + this._ignoreOnError += 1; + setTimeout(function() { + // onerror should trigger before setTimeout + self._ignoreOnError -= 1; + }); + }, + + _triggerEvent: function(eventType, options) { + // NOTE: `event` is a native browser thing, so let's avoid conflicting wiht it + var evt, key; + + if (!this._hasDocument) return; + + options = options || {}; + + eventType = 'raven' + eventType.substr(0, 1).toUpperCase() + eventType.substr(1); + + if (_document.createEvent) { + evt = _document.createEvent('HTMLEvents'); + evt.initEvent(eventType, true, true); + } else { + evt = _document.createEventObject(); + evt.eventType = eventType; + } + + for (key in options) + if (hasKey(options, key)) { + evt[key] = options[key]; + } + + if (_document.createEvent) { + // IE9 if standards + _document.dispatchEvent(evt); + } else { + // IE8 regardless of Quirks or Standards + // IE9 if quirks + try { + _document.fireEvent('on' + evt.eventType.toLowerCase(), evt); + } catch (e) { + // Do nothing + } + } + }, + + /** + * Wraps addEventListener to capture UI breadcrumbs + * @param evtName the event name (e.g. "click") + * @returns {Function} + * @private + */ + _breadcrumbEventHandler: function(evtName) { + var self = this; + return function(evt) { + // reset keypress timeout; e.g. triggering a 'click' after + // a 'keypress' will reset the keypress debounce so that a new + // set of keypresses can be recorded + self._keypressTimeout = null; + + // It's possible this handler might trigger multiple times for the same + // event (e.g. event propagation through node ancestors). Ignore if we've + // already captured the event. + if (self._lastCapturedEvent === evt) return; + + self._lastCapturedEvent = evt; + + // try/catch both: + // - accessing evt.target (see getsentry/raven-js#838, #768) + // - `htmlTreeAsString` because it's complex, and just accessing the DOM incorrectly + // can throw an exception in some circumstances. + var target; + try { + target = htmlTreeAsString(evt.target); + } catch (e) { + target = ''; + } + + self.captureBreadcrumb({ + category: 'ui.' + evtName, // e.g. ui.click, ui.input + message: target + }); + }; + }, + + /** + * Wraps addEventListener to capture keypress UI events + * @returns {Function} + * @private + */ + _keypressEventHandler: function() { + var self = this, + debounceDuration = 1000; // milliseconds + + // TODO: if somehow user switches keypress target before + // debounce timeout is triggered, we will only capture + // a single breadcrumb from the FIRST target (acceptable?) + return function(evt) { + var target; + try { + target = evt.target; + } catch (e) { + // just accessing event properties can throw an exception in some rare circumstances + // see: https://github.com/getsentry/raven-js/issues/838 + return; + } + var tagName = target && target.tagName; + + // only consider keypress events on actual input elements + // this will disregard keypresses targeting body (e.g. tabbing + // through elements, hotkeys, etc) + if ( + !tagName || + (tagName !== 'INPUT' && tagName !== 'TEXTAREA' && !target.isContentEditable) + ) + return; + + // record first keypress in a series, but ignore subsequent + // keypresses until debounce clears + var timeout = self._keypressTimeout; + if (!timeout) { + self._breadcrumbEventHandler('input')(evt); + } + clearTimeout(timeout); + self._keypressTimeout = setTimeout(function() { + self._keypressTimeout = null; + }, debounceDuration); + }; + }, + + /** + * Captures a breadcrumb of type "navigation", normalizing input URLs + * @param to the originating URL + * @param from the target URL + * @private + */ + _captureUrlChange: function(from, to) { + var parsedLoc = parseUrl(this._location.href); + var parsedTo = parseUrl(to); + var parsedFrom = parseUrl(from); + + // because onpopstate only tells you the "new" (to) value of location.href, and + // not the previous (from) value, we need to track the value of the current URL + // state ourselves + this._lastHref = to; + + // Use only the path component of the URL if the URL matches the current + // document (almost all the time when using pushState) + if (parsedLoc.protocol === parsedTo.protocol && parsedLoc.host === parsedTo.host) + to = parsedTo.relative; + if (parsedLoc.protocol === parsedFrom.protocol && parsedLoc.host === parsedFrom.host) + from = parsedFrom.relative; + + this.captureBreadcrumb({ + category: 'navigation', + data: { + to: to, + from: from + } + }); + }, + + _patchFunctionToString: function() { + var self = this; + self._originalFunctionToString = Function.prototype.toString; + // eslint-disable-next-line no-extend-native + Function.prototype.toString = function() { + if (typeof this === 'function' && this.__raven__) { + return self._originalFunctionToString.apply(this.__orig__, arguments); + } + return self._originalFunctionToString.apply(this, arguments); + }; + }, + + _unpatchFunctionToString: function() { + if (this._originalFunctionToString) { + // eslint-disable-next-line no-extend-native + Function.prototype.toString = this._originalFunctionToString; + } + }, + + /** + * Wrap timer functions and event targets to catch errors and provide + * better metadata. + */ + _instrumentTryCatch: function() { + var self = this; + + var wrappedBuiltIns = self._wrappedBuiltIns; + + function wrapTimeFn(orig) { + return function(fn, t) { + // preserve arity + // Make a copy of the arguments to prevent deoptimization + // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments + var args = new Array(arguments.length); + for (var i = 0; i < args.length; ++i) { + args[i] = arguments[i]; + } + var originalCallback = args[0]; + if (isFunction(originalCallback)) { + args[0] = self.wrap(originalCallback); + } + + // IE < 9 doesn't support .call/.apply on setInterval/setTimeout, but it + // also supports only two arguments and doesn't care what this is, so we + // can just call the original function directly. + if (orig.apply) { + return orig.apply(this, args); + } else { + return orig(args[0], args[1]); + } + }; + } + + var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; + + function wrapEventTarget(global) { + var proto = _window[global] && _window[global].prototype; + if (proto && proto.hasOwnProperty && proto.hasOwnProperty('addEventListener')) { + fill( + proto, + 'addEventListener', + function(orig) { + return function(evtName, fn, capture, secure) { + // preserve arity + try { + if (fn && fn.handleEvent) { + fn.handleEvent = self.wrap(fn.handleEvent); + } + } catch (err) { + // can sometimes get 'Permission denied to access property "handle Event' + } + + // More breadcrumb DOM capture ... done here and not in `_instrumentBreadcrumbs` + // so that we don't have more than one wrapper function + var before, clickHandler, keypressHandler; + + if ( + autoBreadcrumbs && + autoBreadcrumbs.dom && + (global === 'EventTarget' || global === 'Node') + ) { + // NOTE: generating multiple handlers per addEventListener invocation, should + // revisit and verify we can just use one (almost certainly) + clickHandler = self._breadcrumbEventHandler('click'); + keypressHandler = self._keypressEventHandler(); + before = function(evt) { + // need to intercept every DOM event in `before` argument, in case that + // same wrapped method is re-used for different events (e.g. mousemove THEN click) + // see #724 + if (!evt) return; + + var eventType; + try { + eventType = evt.type; + } catch (e) { + // just accessing event properties can throw an exception in some rare circumstances + // see: https://github.com/getsentry/raven-js/issues/838 + return; + } + if (eventType === 'click') return clickHandler(evt); + else if (eventType === 'keypress') return keypressHandler(evt); + }; + } + return orig.call( + this, + evtName, + self.wrap(fn, undefined, before), + capture, + secure + ); + }; + }, + wrappedBuiltIns + ); + fill( + proto, + 'removeEventListener', + function(orig) { + return function(evt, fn, capture, secure) { + try { + fn = fn && (fn.__raven_wrapper__ ? fn.__raven_wrapper__ : fn); + } catch (e) { + // ignore, accessing __raven_wrapper__ will throw in some Selenium environments + } + return orig.call(this, evt, fn, capture, secure); + }; + }, + wrappedBuiltIns + ); + } + } + + fill(_window, 'setTimeout', wrapTimeFn, wrappedBuiltIns); + fill(_window, 'setInterval', wrapTimeFn, wrappedBuiltIns); + if (_window.requestAnimationFrame) { + fill( + _window, + 'requestAnimationFrame', + function(orig) { + return function(cb) { + return orig(self.wrap(cb)); + }; + }, + wrappedBuiltIns + ); + } + + // event targets borrowed from bugsnag-js: + // https://github.com/bugsnag/bugsnag-js/blob/master/src/bugsnag.js#L666 + var eventTargets = [ + 'EventTarget', + 'Window', + 'Node', + 'ApplicationCache', + 'AudioTrackList', + 'ChannelMergerNode', + 'CryptoOperation', + 'EventSource', + 'FileReader', + 'HTMLUnknownElement', + 'IDBDatabase', + 'IDBRequest', + 'IDBTransaction', + 'KeyOperation', + 'MediaController', + 'MessagePort', + 'ModalWindow', + 'Notification', + 'SVGElementInstance', + 'Screen', + 'TextTrack', + 'TextTrackCue', + 'TextTrackList', + 'WebSocket', + 'WebSocketWorker', + 'Worker', + 'XMLHttpRequest', + 'XMLHttpRequestEventTarget', + 'XMLHttpRequestUpload' + ]; + for (var i = 0; i < eventTargets.length; i++) { + wrapEventTarget(eventTargets[i]); + } + }, + + /** + * Instrument browser built-ins w/ breadcrumb capturing + * - XMLHttpRequests + * - DOM interactions (click/typing) + * - window.location changes + * - console + * + * Can be disabled or individually configured via the `autoBreadcrumbs` config option + */ + _instrumentBreadcrumbs: function() { + var self = this; + var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; + + var wrappedBuiltIns = self._wrappedBuiltIns; + + function wrapProp(prop, xhr) { + if (prop in xhr && isFunction(xhr[prop])) { + fill(xhr, prop, function(orig) { + return self.wrap(orig); + }); // intentionally don't track filled methods on XHR instances + } + } + + if (autoBreadcrumbs.xhr && 'XMLHttpRequest' in _window) { + var xhrproto = _window.XMLHttpRequest && _window.XMLHttpRequest.prototype; + fill( + xhrproto, + 'open', + function(origOpen) { + return function(method, url) { + // preserve arity + + // if Sentry key appears in URL, don't capture + if (isString(url) && url.indexOf(self._globalKey) === -1) { + this.__raven_xhr = { + method: method, + url: url, + status_code: null + }; + } + + return origOpen.apply(this, arguments); + }; + }, + wrappedBuiltIns + ); + + fill( + xhrproto, + 'send', + function(origSend) { + return function() { + // preserve arity + var xhr = this; + + function onreadystatechangeHandler() { + if (xhr.__raven_xhr && xhr.readyState === 4) { + try { + // touching statusCode in some platforms throws + // an exception + xhr.__raven_xhr.status_code = xhr.status; + } catch (e) { + /* do nothing */ + } + + self.captureBreadcrumb({ + type: 'http', + category: 'xhr', + data: xhr.__raven_xhr + }); + } + } + + var props = ['onload', 'onerror', 'onprogress']; + for (var j = 0; j < props.length; j++) { + wrapProp(props[j], xhr); + } + + if ('onreadystatechange' in xhr && isFunction(xhr.onreadystatechange)) { + fill( + xhr, + 'onreadystatechange', + function(orig) { + return self.wrap(orig, undefined, onreadystatechangeHandler); + } /* intentionally don't track this instrumentation */ + ); + } else { + // if onreadystatechange wasn't actually set by the page on this xhr, we + // are free to set our own and capture the breadcrumb + xhr.onreadystatechange = onreadystatechangeHandler; + } + + return origSend.apply(this, arguments); + }; + }, + wrappedBuiltIns + ); + } + + if (autoBreadcrumbs.xhr && supportsFetch()) { + fill( + _window, + 'fetch', + function(origFetch) { + return function() { + // preserve arity + // Make a copy of the arguments to prevent deoptimization + // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments + var args = new Array(arguments.length); + for (var i = 0; i < args.length; ++i) { + args[i] = arguments[i]; + } + + var fetchInput = args[0]; + var method = 'GET'; + var url; + + if (typeof fetchInput === 'string') { + url = fetchInput; + } else if ('Request' in _window && fetchInput instanceof _window.Request) { + url = fetchInput.url; + if (fetchInput.method) { + method = fetchInput.method; + } + } else { + url = '' + fetchInput; + } + + // if Sentry key appears in URL, don't capture, as it's our own request + if (url.indexOf(self._globalKey) !== -1) { + return origFetch.apply(this, args); + } + + if (args[1] && args[1].method) { + method = args[1].method; + } + + var fetchData = { + method: method, + url: url, + status_code: null + }; + + return origFetch + .apply(this, args) + .then(function(response) { + fetchData.status_code = response.status; + + self.captureBreadcrumb({ + type: 'http', + category: 'fetch', + data: fetchData + }); + + return response; + }) + ['catch'](function(err) { + // if there is an error performing the request + self.captureBreadcrumb({ + type: 'http', + category: 'fetch', + data: fetchData, + level: 'error' + }); + + throw err; + }); + }; + }, + wrappedBuiltIns + ); + } + + // Capture breadcrumbs from any click that is unhandled / bubbled up all the way + // to the document. Do this before we instrument addEventListener. + if (autoBreadcrumbs.dom && this._hasDocument) { + if (_document.addEventListener) { + _document.addEventListener('click', self._breadcrumbEventHandler('click'), false); + _document.addEventListener('keypress', self._keypressEventHandler(), false); + } else if (_document.attachEvent) { + // IE8 Compatibility + _document.attachEvent('onclick', self._breadcrumbEventHandler('click')); + _document.attachEvent('onkeypress', self._keypressEventHandler()); + } + } + + // record navigation (URL) changes + // NOTE: in Chrome App environment, touching history.pushState, *even inside + // a try/catch block*, will cause Chrome to output an error to console.error + // borrowed from: https://github.com/angular/angular.js/pull/13945/files + var chrome = _window.chrome; + var isChromePackagedApp = chrome && chrome.app && chrome.app.runtime; + var hasPushAndReplaceState = + !isChromePackagedApp && + _window.history && + _window.history.pushState && + _window.history.replaceState; + if (autoBreadcrumbs.location && hasPushAndReplaceState) { + // TODO: remove onpopstate handler on uninstall() + var oldOnPopState = _window.onpopstate; + _window.onpopstate = function() { + var currentHref = self._location.href; + self._captureUrlChange(self._lastHref, currentHref); + + if (oldOnPopState) { + return oldOnPopState.apply(this, arguments); + } + }; + + var historyReplacementFunction = function(origHistFunction) { + // note history.pushState.length is 0; intentionally not declaring + // params to preserve 0 arity + return function(/* state, title, url */) { + var url = arguments.length > 2 ? arguments[2] : undefined; + + // url argument is optional + if (url) { + // coerce to string (this is what pushState does) + self._captureUrlChange(self._lastHref, url + ''); + } + + return origHistFunction.apply(this, arguments); + }; + }; + + fill(_window.history, 'pushState', historyReplacementFunction, wrappedBuiltIns); + fill(_window.history, 'replaceState', historyReplacementFunction, wrappedBuiltIns); + } + + if (autoBreadcrumbs.console && 'console' in _window && console.log) { + // console + var consoleMethodCallback = function(msg, data) { + self.captureBreadcrumb({ + message: msg, + level: data.level, + category: 'console' + }); + }; + + each(['debug', 'info', 'warn', 'error', 'log'], function(_, level) { + wrapConsoleMethod(console, level, consoleMethodCallback); + }); + } + }, + + _restoreBuiltIns: function() { + // restore any wrapped builtins + var builtin; + while (this._wrappedBuiltIns.length) { + builtin = this._wrappedBuiltIns.shift(); + + var obj = builtin[0], + name = builtin[1], + orig = builtin[2]; + + obj[name] = orig; + } + }, + + _restoreConsole: function() { + // eslint-disable-next-line guard-for-in + for (var method in this._originalConsoleMethods) { + this._originalConsole[method] = this._originalConsoleMethods[method]; + } + }, + + _drainPlugins: function() { + var self = this; + + // FIX ME TODO + each(this._plugins, function(_, plugin) { + var installer = plugin[0]; + var args = plugin[1]; + installer.apply(self, [self].concat(args)); + }); + }, + + _parseDSN: function(str) { + var m = dsnPattern.exec(str), + dsn = {}, + i = 7; + + try { + while (i--) dsn[dsnKeys[i]] = m[i] || ''; + } catch (e) { + throw new RavenConfigError('Invalid DSN: ' + str); + } + + if (dsn.pass && !this._globalOptions.allowSecretKey) { + throw new RavenConfigError( + 'Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key' + ); + } + + return dsn; + }, + + _getGlobalServer: function(uri) { + // assemble the endpoint from the uri pieces + var globalServer = '//' + uri.host + (uri.port ? ':' + uri.port : ''); + + if (uri.protocol) { + globalServer = uri.protocol + ':' + globalServer; + } + return globalServer; + }, + + _handleOnErrorStackInfo: function() { + // if we are intentionally ignoring errors via onerror, bail out + if (!this._ignoreOnError) { + this._handleStackInfo.apply(this, arguments); + } + }, + + _handleStackInfo: function(stackInfo, options) { + var frames = this._prepareFrames(stackInfo, options); + + this._triggerEvent('handle', { + stackInfo: stackInfo, + options: options + }); + + this._processException( + stackInfo.name, + stackInfo.message, + stackInfo.url, + stackInfo.lineno, + frames, + options + ); + }, + + _prepareFrames: function(stackInfo, options) { + var self = this; + var frames = []; + if (stackInfo.stack && stackInfo.stack.length) { + each(stackInfo.stack, function(i, stack) { + var frame = self._normalizeFrame(stack, stackInfo.url); + if (frame) { + frames.push(frame); + } + }); + + // e.g. frames captured via captureMessage throw + if (options && options.trimHeadFrames) { + for (var j = 0; j < options.trimHeadFrames && j < frames.length; j++) { + frames[j].in_app = false; + } + } + } + frames = frames.slice(0, this._globalOptions.stackTraceLimit); + return frames; + }, + + _normalizeFrame: function(frame, stackInfoUrl) { + // normalize the frames data + var normalized = { + filename: frame.url, + lineno: frame.line, + colno: frame.column, + function: frame.func || '?' + }; + + // Case when we don't have any information about the error + // E.g. throwing a string or raw object, instead of an `Error` in Firefox + // Generating synthetic error doesn't add any value here + // + // We should probably somehow let a user know that they should fix their code + if (!frame.url) { + normalized.filename = stackInfoUrl; // fallback to whole stacks url from onerror handler + } + + normalized.in_app = !// determine if an exception came from outside of our app + // first we check the global includePaths list. + ( + (!!this._globalOptions.includePaths.test && + !this._globalOptions.includePaths.test(normalized.filename)) || + // Now we check for fun, if the function name is Raven or TraceKit + /(Raven|TraceKit)\./.test(normalized['function']) || + // finally, we do a last ditch effort and check for raven.min.js + /raven\.(min\.)?js$/.test(normalized.filename) + ); + + return normalized; + }, + + _processException: function(type, message, fileurl, lineno, frames, options) { + var prefixedMessage = (type ? type + ': ' : '') + (message || ''); + if ( + !!this._globalOptions.ignoreErrors.test && + (this._globalOptions.ignoreErrors.test(message) || + this._globalOptions.ignoreErrors.test(prefixedMessage)) + ) { + return; + } + + var stacktrace; + + if (frames && frames.length) { + fileurl = frames[0].filename || fileurl; + // Sentry expects frames oldest to newest + // and JS sends them as newest to oldest + frames.reverse(); + stacktrace = {frames: frames}; + } else if (fileurl) { + stacktrace = { + frames: [ + { + filename: fileurl, + lineno: lineno, + in_app: true + } + ] + }; + } + + if ( + !!this._globalOptions.ignoreUrls.test && + this._globalOptions.ignoreUrls.test(fileurl) + ) { + return; + } + + if ( + !!this._globalOptions.whitelistUrls.test && + !this._globalOptions.whitelistUrls.test(fileurl) + ) { + return; + } + + var data = objectMerge( + { + // sentry.interfaces.Exception + exception: { + values: [ + { + type: type, + value: message, + stacktrace: stacktrace + } + ] + }, + transaction: fileurl + }, + options + ); + + // Fire away! + this._send(data); + }, + + _trimPacket: function(data) { + // For now, we only want to truncate the two different messages + // but this could/should be expanded to just trim everything + var max = this._globalOptions.maxMessageLength; + if (data.message) { + data.message = truncate(data.message, max); + } + if (data.exception) { + var exception = data.exception.values[0]; + exception.value = truncate(exception.value, max); + } + + var request = data.request; + if (request) { + if (request.url) { + request.url = truncate(request.url, this._globalOptions.maxUrlLength); + } + if (request.Referer) { + request.Referer = truncate(request.Referer, this._globalOptions.maxUrlLength); + } + } + + if (data.breadcrumbs && data.breadcrumbs.values) + this._trimBreadcrumbs(data.breadcrumbs); + + return data; + }, + + /** + * Truncate breadcrumb values (right now just URLs) + */ + _trimBreadcrumbs: function(breadcrumbs) { + // known breadcrumb properties with urls + // TODO: also consider arbitrary prop values that start with (https?)?:// + var urlProps = ['to', 'from', 'url'], + urlProp, + crumb, + data; + + for (var i = 0; i < breadcrumbs.values.length; ++i) { + crumb = breadcrumbs.values[i]; + if ( + !crumb.hasOwnProperty('data') || + !isObject(crumb.data) || + objectFrozen(crumb.data) + ) + continue; + + data = objectMerge({}, crumb.data); + for (var j = 0; j < urlProps.length; ++j) { + urlProp = urlProps[j]; + if (data.hasOwnProperty(urlProp) && data[urlProp]) { + data[urlProp] = truncate(data[urlProp], this._globalOptions.maxUrlLength); + } + } + breadcrumbs.values[i].data = data; + } + }, + + _getHttpData: function() { + if (!this._hasNavigator && !this._hasDocument) return; + var httpData = {}; + + if (this._hasNavigator && _navigator.userAgent) { + httpData.headers = { + 'User-Agent': _navigator.userAgent + }; + } + + // Check in `window` instead of `document`, as we may be in ServiceWorker environment + if (_window.location && _window.location.href) { + httpData.url = _window.location.href; + } + + if (this._hasDocument && _document.referrer) { + if (!httpData.headers) httpData.headers = {}; + httpData.headers.Referer = _document.referrer; + } + + return httpData; + }, + + _resetBackoff: function() { + this._backoffDuration = 0; + this._backoffStart = null; + }, + + _shouldBackoff: function() { + return this._backoffDuration && now() - this._backoffStart < this._backoffDuration; + }, + + /** + * Returns true if the in-process data payload matches the signature + * of the previously-sent data + * + * NOTE: This has to be done at this level because TraceKit can generate + * data from window.onerror WITHOUT an exception object (IE8, IE9, + * other old browsers). This can take the form of an "exception" + * data object with a single frame (derived from the onerror args). + */ + _isRepeatData: function(current) { + var last = this._lastData; + + if ( + !last || + current.message !== last.message || // defined for captureMessage + current.transaction !== last.transaction // defined for captureException/onerror + ) + return false; + + // Stacktrace interface (i.e. from captureMessage) + if (current.stacktrace || last.stacktrace) { + return isSameStacktrace(current.stacktrace, last.stacktrace); + } else if (current.exception || last.exception) { + // Exception interface (i.e. from captureException/onerror) + return isSameException(current.exception, last.exception); + } + + return true; + }, + + _setBackoffState: function(request) { + // If we are already in a backoff state, don't change anything + if (this._shouldBackoff()) { + return; + } + + var status = request.status; + + // 400 - project_id doesn't exist or some other fatal + // 401 - invalid/revoked dsn + // 429 - too many requests + if (!(status === 400 || status === 401 || status === 429)) return; + + var retry; + try { + // If Retry-After is not in Access-Control-Expose-Headers, most + // browsers will throw an exception trying to access it + if (supportsFetch()) { + retry = request.headers.get('Retry-After'); + } else { + retry = request.getResponseHeader('Retry-After'); + } + + // Retry-After is returned in seconds + retry = parseInt(retry, 10) * 1000; + } catch (e) { + /* eslint no-empty:0 */ + } + + this._backoffDuration = retry + ? // If Sentry server returned a Retry-After value, use it + retry + : // Otherwise, double the last backoff duration (starts at 1 sec) + this._backoffDuration * 2 || 1000; + + this._backoffStart = now(); + }, + + _send: function(data) { + var globalOptions = this._globalOptions; + + var baseData = { + project: this._globalProject, + logger: globalOptions.logger, + platform: 'javascript' + }, + httpData = this._getHttpData(); + + if (httpData) { + baseData.request = httpData; + } + + // HACK: delete `trimHeadFrames` to prevent from appearing in outbound payload + if (data.trimHeadFrames) delete data.trimHeadFrames; + + data = objectMerge(baseData, data); + + // Merge in the tags and extra separately since objectMerge doesn't handle a deep merge + data.tags = objectMerge(objectMerge({}, this._globalContext.tags), data.tags); + data.extra = objectMerge(objectMerge({}, this._globalContext.extra), data.extra); + + // Send along our own collected metadata with extra + data.extra['session:duration'] = now() - this._startTime; + + if (this._breadcrumbs && this._breadcrumbs.length > 0) { + // intentionally make shallow copy so that additions + // to breadcrumbs aren't accidentally sent in this request + data.breadcrumbs = { + values: [].slice.call(this._breadcrumbs, 0) + }; + } + + if (this._globalContext.user) { + // sentry.interfaces.User + data.user = this._globalContext.user; + } + + // Include the environment if it's defined in globalOptions + if (globalOptions.environment) data.environment = globalOptions.environment; + + // Include the release if it's defined in globalOptions + if (globalOptions.release) data.release = globalOptions.release; + + // Include server_name if it's defined in globalOptions + if (globalOptions.serverName) data.server_name = globalOptions.serverName; + + data = this._sanitizeData(data); + + // Cleanup empty properties before sending them to the server + Object.keys(data).forEach(function(key) { + if (data[key] == null || data[key] === '' || isEmptyObject(data[key])) { + delete data[key]; + } + }); + + if (isFunction(globalOptions.dataCallback)) { + data = globalOptions.dataCallback(data) || data; + } + + // Why?????????? + if (!data || isEmptyObject(data)) { + return; + } + + // Check if the request should be filtered or not + if ( + isFunction(globalOptions.shouldSendCallback) && + !globalOptions.shouldSendCallback(data) + ) { + return; + } + + // Backoff state: Sentry server previously responded w/ an error (e.g. 429 - too many requests), + // so drop requests until "cool-off" period has elapsed. + if (this._shouldBackoff()) { + this._logDebug('warn', 'Raven dropped error due to backoff: ', data); + return; + } + + if (typeof globalOptions.sampleRate === 'number') { + if (Math.random() < globalOptions.sampleRate) { + this._sendProcessedPayload(data); + } + } else { + this._sendProcessedPayload(data); + } + }, + + _sanitizeData: function(data) { + return sanitize(data, this._globalOptions.sanitizeKeys); + }, + + _getUuid: function() { + return uuid4(); + }, + + _sendProcessedPayload: function(data, callback) { + var self = this; + var globalOptions = this._globalOptions; + + if (!this.isSetup()) return; + + // Try and clean up the packet before sending by truncating long values + data = this._trimPacket(data); + + // ideally duplicate error testing should occur *before* dataCallback/shouldSendCallback, + // but this would require copying an un-truncated copy of the data packet, which can be + // arbitrarily deep (extra_data) -- could be worthwhile? will revisit + if (!this._globalOptions.allowDuplicates && this._isRepeatData(data)) { + this._logDebug('warn', 'Raven dropped repeat event: ', data); + return; + } + + // Send along an event_id if not explicitly passed. + // This event_id can be used to reference the error within Sentry itself. + // Set lastEventId after we know the error should actually be sent + this._lastEventId = data.event_id || (data.event_id = this._getUuid()); + + // Store outbound payload after trim + this._lastData = data; + + this._logDebug('debug', 'Raven about to send:', data); + + var auth = { + sentry_version: '7', + sentry_client: 'raven-js/' + this.VERSION, + sentry_key: this._globalKey + }; + + if (this._globalSecret) { + auth.sentry_secret = this._globalSecret; + } + + var exception = data.exception && data.exception.values[0]; + + // only capture 'sentry' breadcrumb is autoBreadcrumbs is truthy + if ( + this._globalOptions.autoBreadcrumbs && + this._globalOptions.autoBreadcrumbs.sentry + ) { + this.captureBreadcrumb({ + category: 'sentry', + message: exception + ? (exception.type ? exception.type + ': ' : '') + exception.value + : data.message, + event_id: data.event_id, + level: data.level || 'error' // presume error unless specified + }); + } + + var url = this._globalEndpoint; + (globalOptions.transport || this._makeRequest).call(this, { + url: url, + auth: auth, + data: data, + options: globalOptions, + onSuccess: function success() { + self._resetBackoff(); + + self._triggerEvent('success', { + data: data, + src: url + }); + callback && callback(); + }, + onError: function failure(error) { + self._logDebug('error', 'Raven transport failed to send: ', error); + + if (error.request) { + self._setBackoffState(error.request); + } + + self._triggerEvent('failure', { + data: data, + src: url + }); + error = error || new Error('Raven send failed (no additional details provided)'); + callback && callback(error); + } + }); + }, + + _makeRequest: function(opts) { + // Auth is intentionally sent as part of query string (NOT as custom HTTP header) to avoid preflight CORS requests + var url = opts.url + '?' + urlencode(opts.auth); + + var evaluatedHeaders = null; + var evaluatedFetchParameters = {}; + + if (opts.options.headers) { + evaluatedHeaders = this._evaluateHash(opts.options.headers); + } + + if (opts.options.fetchParameters) { + evaluatedFetchParameters = this._evaluateHash(opts.options.fetchParameters); + } + + if (supportsFetch()) { + evaluatedFetchParameters.body = stringify(opts.data); + + var defaultFetchOptions = objectMerge({}, this._fetchDefaults); + var fetchOptions = objectMerge(defaultFetchOptions, evaluatedFetchParameters); + + if (evaluatedHeaders) { + fetchOptions.headers = evaluatedHeaders; + } + + return _window + .fetch(url, fetchOptions) + .then(function(response) { + if (response.ok) { + opts.onSuccess && opts.onSuccess(); + } else { + var error = new Error('Sentry error code: ' + response.status); + // It's called request only to keep compatibility with XHR interface + // and not add more redundant checks in setBackoffState method + error.request = response; + opts.onError && opts.onError(error); + } + }) + ['catch'](function() { + opts.onError && + opts.onError(new Error('Sentry error code: network unavailable')); + }); + } + + var request = _window.XMLHttpRequest && new _window.XMLHttpRequest(); + if (!request) return; + + // if browser doesn't support CORS (e.g. IE7), we are out of luck + var hasCORS = 'withCredentials' in request || typeof XDomainRequest !== 'undefined'; + + if (!hasCORS) return; + + if ('withCredentials' in request) { + request.onreadystatechange = function() { + if (request.readyState !== 4) { + return; + } else if (request.status === 200) { + opts.onSuccess && opts.onSuccess(); + } else if (opts.onError) { + var err = new Error('Sentry error code: ' + request.status); + err.request = request; + opts.onError(err); + } + }; + } else { + request = new XDomainRequest(); + // xdomainrequest cannot go http -> https (or vice versa), + // so always use protocol relative + url = url.replace(/^https?:/, ''); + + // onreadystatechange not supported by XDomainRequest + if (opts.onSuccess) { + request.onload = opts.onSuccess; + } + if (opts.onError) { + request.onerror = function() { + var err = new Error('Sentry error code: XDomainRequest'); + err.request = request; + opts.onError(err); + }; + } + } + + request.open('POST', url); + + if (evaluatedHeaders) { + each(evaluatedHeaders, function(key, value) { + request.setRequestHeader(key, value); + }); + } + + request.send(stringify(opts.data)); + }, + + _evaluateHash: function(hash) { + var evaluated = {}; + + for (var key in hash) { + if (hash.hasOwnProperty(key)) { + var value = hash[key]; + evaluated[key] = typeof value === 'function' ? value() : value; + } + } + + return evaluated; + }, + + _logDebug: function(level) { + // We allow `Raven.debug` and `Raven.config(DSN, { debug: true })` to not make backward incompatible API change + if ( + this._originalConsoleMethods[level] && + (this.debug || this._globalOptions.debug) + ) { + // In IE<10 console methods do not have their own 'apply' method + Function.prototype.apply.call( + this._originalConsoleMethods[level], + this._originalConsole, + [].slice.call(arguments, 1) + ); + } + }, + + _mergeContext: function(key, context) { + if (isUndefined(context)) { + delete this._globalContext[key]; + } else { + this._globalContext[key] = objectMerge(this._globalContext[key] || {}, context); + } + } +}; + +// Deprecations +Raven.prototype.setUser = Raven.prototype.setUserContext; +Raven.prototype.setReleaseContext = Raven.prototype.setRelease; + +module.exports = Raven; + +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"10":10,"11":11,"4":4,"5":5,"8":8,"9":9}],7:[function(_dereq_,module,exports){ +(function (global){ +/** + * Enforces a single instance of the Raven client, and the + * main entry point for Raven. If you are a consumer of the + * Raven library, you SHOULD load this file (vs raven.js). + **/ + +var RavenConstructor = _dereq_(6); + +// This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) +var _window = + typeof window !== 'undefined' + ? window + : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; +var _Raven = _window.Raven; + +var Raven = new RavenConstructor(); + +/* + * Allow multiple versions of Raven to be installed. + * Strip Raven from the global context and returns the instance. + * + * @return {Raven} + */ +Raven.noConflict = function() { + _window.Raven = _Raven; + return Raven; +}; + +Raven.afterLoad(); + +module.exports = Raven; + +/** + * DISCLAIMER: + * + * Expose `Client` constructor for cases where user want to track multiple "sub-applications" in one larger app. + * It's not meant to be used by a wide audience, so pleaaase make sure that you know what you're doing before using it. + * Accidentally calling `install` multiple times, may result in an unexpected behavior that's very hard to debug. + * + * It's called `Client' to be in-line with Raven Node implementation. + * + * HOWTO: + * + * import Raven from 'raven-js'; + * + * const someAppReporter = new Raven.Client(); + * const someOtherAppReporter = new Raven.Client(); + * + * someAppReporter.config('__DSN__', { + * ...config goes here + * }); + * + * someOtherAppReporter.config('__OTHER_DSN__', { + * ...config goes here + * }); + * + * someAppReporter.captureMessage(...); + * someAppReporter.captureException(...); + * someAppReporter.captureBreadcrumb(...); + * + * someOtherAppReporter.captureMessage(...); + * someOtherAppReporter.captureException(...); + * someOtherAppReporter.captureBreadcrumb(...); + * + * It should "just work". + */ +module.exports.Client = RavenConstructor; + +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"6":6}],8:[function(_dereq_,module,exports){ +(function (global){ +var stringify = _dereq_(10); + +var _window = + typeof window !== 'undefined' + ? window + : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; + +function isObject(what) { + return typeof what === 'object' && what !== null; +} + +// Yanked from https://git.io/vS8DV re-used under CC0 +// with some tiny modifications +function isError(value) { + switch (Object.prototype.toString.call(value)) { + case '[object Error]': + return true; + case '[object Exception]': + return true; + case '[object DOMException]': + return true; + default: + return value instanceof Error; + } +} + +function isErrorEvent(value) { + return Object.prototype.toString.call(value) === '[object ErrorEvent]'; +} + +function isDOMError(value) { + return Object.prototype.toString.call(value) === '[object DOMError]'; +} + +function isDOMException(value) { + return Object.prototype.toString.call(value) === '[object DOMException]'; +} + +function isUndefined(what) { + return what === void 0; +} + +function isFunction(what) { + return typeof what === 'function'; +} + +function isPlainObject(what) { + return Object.prototype.toString.call(what) === '[object Object]'; +} + +function isString(what) { + return Object.prototype.toString.call(what) === '[object String]'; +} + +function isArray(what) { + return Object.prototype.toString.call(what) === '[object Array]'; +} + +function isEmptyObject(what) { + if (!isPlainObject(what)) return false; + + for (var _ in what) { + if (what.hasOwnProperty(_)) { + return false; + } + } + return true; +} + +function supportsErrorEvent() { + try { + new ErrorEvent(''); // eslint-disable-line no-new + return true; + } catch (e) { + return false; + } +} + +function supportsDOMError() { + try { + new DOMError(''); // eslint-disable-line no-new + return true; + } catch (e) { + return false; + } +} + +function supportsDOMException() { + try { + new DOMException(''); // eslint-disable-line no-new + return true; + } catch (e) { + return false; + } +} + +function supportsFetch() { + if (!('fetch' in _window)) return false; + + try { + new Headers(); // eslint-disable-line no-new + new Request(''); // eslint-disable-line no-new + new Response(); // eslint-disable-line no-new + return true; + } catch (e) { + return false; + } +} + +// Despite all stars in the sky saying that Edge supports old draft syntax, aka 'never', 'always', 'origin' and 'default +// https://caniuse.com/#feat=referrer-policy +// It doesn't. And it throw exception instead of ignoring this parameter... +// REF: https://github.com/getsentry/raven-js/issues/1233 +function supportsReferrerPolicy() { + if (!supportsFetch()) return false; + + try { + // eslint-disable-next-line no-new + new Request('pickleRick', { + referrerPolicy: 'origin' + }); + return true; + } catch (e) { + return false; + } +} + +function supportsPromiseRejectionEvent() { + return typeof PromiseRejectionEvent === 'function'; +} + +function wrappedCallback(callback) { + function dataCallback(data, original) { + var normalizedData = callback(data) || data; + if (original) { + return original(normalizedData) || normalizedData; + } + return normalizedData; + } + + return dataCallback; +} + +function each(obj, callback) { + var i, j; + + if (isUndefined(obj.length)) { + for (i in obj) { + if (hasKey(obj, i)) { + callback.call(null, i, obj[i]); + } + } + } else { + j = obj.length; + if (j) { + for (i = 0; i < j; i++) { + callback.call(null, i, obj[i]); + } + } + } +} + +function objectMerge(obj1, obj2) { + if (!obj2) { + return obj1; + } + each(obj2, function(key, value) { + obj1[key] = value; + }); + return obj1; +} + +/** + * This function is only used for react-native. + * react-native freezes object that have already been sent over the + * js bridge. We need this function in order to check if the object is frozen. + * So it's ok that objectFrozen returns false if Object.isFrozen is not + * supported because it's not relevant for other "platforms". See related issue: + * https://github.com/getsentry/react-native-sentry/issues/57 + */ +function objectFrozen(obj) { + if (!Object.isFrozen) { + return false; + } + return Object.isFrozen(obj); +} + +function truncate(str, max) { + if (typeof max !== 'number') { + throw new Error('2nd argument to `truncate` function should be a number'); + } + if (typeof str !== 'string' || max === 0) { + return str; + } + return str.length <= max ? str : str.substr(0, max) + '\u2026'; +} + +/** + * hasKey, a better form of hasOwnProperty + * Example: hasKey(MainHostObject, property) === true/false + * + * @param {Object} host object to check property + * @param {string} key to check + */ +function hasKey(object, key) { + return Object.prototype.hasOwnProperty.call(object, key); +} + +function joinRegExp(patterns) { + // Combine an array of regular expressions and strings into one large regexp + // Be mad. + var sources = [], + i = 0, + len = patterns.length, + pattern; + + for (; i < len; i++) { + pattern = patterns[i]; + if (isString(pattern)) { + // If it's a string, we need to escape it + // Taken from: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions + sources.push(pattern.replace(/([.*+?^=!:${}()|\[\]\/\\])/g, '\\$1')); + } else if (pattern && pattern.source) { + // If it's a regexp already, we want to extract the source + sources.push(pattern.source); + } + // Intentionally skip other cases + } + return new RegExp(sources.join('|'), 'i'); +} + +function urlencode(o) { + var pairs = []; + each(o, function(key, value) { + pairs.push(encodeURIComponent(key) + '=' + encodeURIComponent(value)); + }); + return pairs.join('&'); +} + +// borrowed from https://tools.ietf.org/html/rfc3986#appendix-B +// intentionally using regex and not href parsing trick because React Native and other +// environments where DOM might not be available +function parseUrl(url) { + if (typeof url !== 'string') return {}; + var match = url.match(/^(([^:\/?#]+):)?(\/\/([^\/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?$/); + + // coerce to undefined values to empty string so we don't get 'undefined' + var query = match[6] || ''; + var fragment = match[8] || ''; + return { + protocol: match[2], + host: match[4], + path: match[5], + relative: match[5] + query + fragment // everything minus origin + }; +} +function uuid4() { + var crypto = _window.crypto || _window.msCrypto; + + if (!isUndefined(crypto) && crypto.getRandomValues) { + // Use window.crypto API if available + // eslint-disable-next-line no-undef + var arr = new Uint16Array(8); + crypto.getRandomValues(arr); + + // set 4 in byte 7 + arr[3] = (arr[3] & 0xfff) | 0x4000; + // set 2 most significant bits of byte 9 to '10' + arr[4] = (arr[4] & 0x3fff) | 0x8000; + + var pad = function(num) { + var v = num.toString(16); + while (v.length < 4) { + v = '0' + v; + } + return v; + }; + + return ( + pad(arr[0]) + + pad(arr[1]) + + pad(arr[2]) + + pad(arr[3]) + + pad(arr[4]) + + pad(arr[5]) + + pad(arr[6]) + + pad(arr[7]) + ); + } else { + // http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/2117523#2117523 + return 'xxxxxxxxxxxx4xxxyxxxxxxxxxxxxxxx'.replace(/[xy]/g, function(c) { + var r = (Math.random() * 16) | 0, + v = c === 'x' ? r : (r & 0x3) | 0x8; + return v.toString(16); + }); + } +} + +/** + * Given a child DOM element, returns a query-selector statement describing that + * and its ancestors + * e.g. [HTMLElement] => body > div > input#foo.btn[name=baz] + * @param elem + * @returns {string} + */ +function htmlTreeAsString(elem) { + /* eslint no-extra-parens:0*/ + var MAX_TRAVERSE_HEIGHT = 5, + MAX_OUTPUT_LEN = 80, + out = [], + height = 0, + len = 0, + separator = ' > ', + sepLength = separator.length, + nextStr; + + while (elem && height++ < MAX_TRAVERSE_HEIGHT) { + nextStr = htmlElementAsString(elem); + // bail out if + // - nextStr is the 'html' element + // - the length of the string that would be created exceeds MAX_OUTPUT_LEN + // (ignore this limit if we are on the first iteration) + if ( + nextStr === 'html' || + (height > 1 && len + out.length * sepLength + nextStr.length >= MAX_OUTPUT_LEN) + ) { + break; + } + + out.push(nextStr); + + len += nextStr.length; + elem = elem.parentNode; + } + + return out.reverse().join(separator); +} + +/** + * Returns a simple, query-selector representation of a DOM element + * e.g. [HTMLElement] => input#foo.btn[name=baz] + * @param HTMLElement + * @returns {string} + */ +function htmlElementAsString(elem) { + var out = [], + className, + classes, + key, + attr, + i; + + if (!elem || !elem.tagName) { + return ''; + } + + out.push(elem.tagName.toLowerCase()); + if (elem.id) { + out.push('#' + elem.id); + } + + className = elem.className; + if (className && isString(className)) { + classes = className.split(/\s+/); + for (i = 0; i < classes.length; i++) { + out.push('.' + classes[i]); + } + } + var attrWhitelist = ['type', 'name', 'title', 'alt']; + for (i = 0; i < attrWhitelist.length; i++) { + key = attrWhitelist[i]; + attr = elem.getAttribute(key); + if (attr) { + out.push('[' + key + '="' + attr + '"]'); + } + } + return out.join(''); +} + +/** + * Returns true if either a OR b is truthy, but not both + */ +function isOnlyOneTruthy(a, b) { + return !!(!!a ^ !!b); +} + +/** + * Returns true if both parameters are undefined + */ +function isBothUndefined(a, b) { + return isUndefined(a) && isUndefined(b); +} + +/** + * Returns true if the two input exception interfaces have the same content + */ +function isSameException(ex1, ex2) { + if (isOnlyOneTruthy(ex1, ex2)) return false; + + ex1 = ex1.values[0]; + ex2 = ex2.values[0]; + + if (ex1.type !== ex2.type || ex1.value !== ex2.value) return false; + + // in case both stacktraces are undefined, we can't decide so default to false + if (isBothUndefined(ex1.stacktrace, ex2.stacktrace)) return false; + + return isSameStacktrace(ex1.stacktrace, ex2.stacktrace); +} + +/** + * Returns true if the two input stack trace interfaces have the same content + */ +function isSameStacktrace(stack1, stack2) { + if (isOnlyOneTruthy(stack1, stack2)) return false; + + var frames1 = stack1.frames; + var frames2 = stack2.frames; + + // Exit early if frame count differs + if (frames1.length !== frames2.length) return false; + + // Iterate through every frame; bail out if anything differs + var a, b; + for (var i = 0; i < frames1.length; i++) { + a = frames1[i]; + b = frames2[i]; + if ( + a.filename !== b.filename || + a.lineno !== b.lineno || + a.colno !== b.colno || + a['function'] !== b['function'] + ) + return false; + } + return true; +} + +/** + * Polyfill a method + * @param obj object e.g. `document` + * @param name method name present on object e.g. `addEventListener` + * @param replacement replacement function + * @param track {optional} record instrumentation to an array + */ +function fill(obj, name, replacement, track) { + if (obj == null) return; + var orig = obj[name]; + obj[name] = replacement(orig); + obj[name].__raven__ = true; + obj[name].__orig__ = orig; + if (track) { + track.push([obj, name, orig]); + } +} + +/** + * Join values in array + * @param input array of values to be joined together + * @param delimiter string to be placed in-between values + * @returns {string} + */ +function safeJoin(input, delimiter) { + if (!isArray(input)) return ''; + + var output = []; + + for (var i = 0; i < input.length; i++) { + try { + output.push(String(input[i])); + } catch (e) { + output.push('[value cannot be serialized]'); + } + } + + return output.join(delimiter); +} + +// Default Node.js REPL depth +var MAX_SERIALIZE_EXCEPTION_DEPTH = 3; +// 50kB, as 100kB is max payload size, so half sounds reasonable +var MAX_SERIALIZE_EXCEPTION_SIZE = 50 * 1024; +var MAX_SERIALIZE_KEYS_LENGTH = 40; + +function utf8Length(value) { + return ~-encodeURI(value).split(/%..|./).length; +} + +function jsonSize(value) { + return utf8Length(JSON.stringify(value)); +} + +function serializeValue(value) { + if (typeof value === 'string') { + var maxLength = 40; + return truncate(value, maxLength); + } else if ( + typeof value === 'number' || + typeof value === 'boolean' || + typeof value === 'undefined' + ) { + return value; + } + + var type = Object.prototype.toString.call(value); + + // Node.js REPL notation + if (type === '[object Object]') return '[Object]'; + if (type === '[object Array]') return '[Array]'; + if (type === '[object Function]') + return value.name ? '[Function: ' + value.name + ']' : '[Function]'; + + return value; +} + +function serializeObject(value, depth) { + if (depth === 0) return serializeValue(value); + + if (isPlainObject(value)) { + return Object.keys(value).reduce(function(acc, key) { + acc[key] = serializeObject(value[key], depth - 1); + return acc; + }, {}); + } else if (Array.isArray(value)) { + return value.map(function(val) { + return serializeObject(val, depth - 1); + }); + } + + return serializeValue(value); +} + +function serializeException(ex, depth, maxSize) { + if (!isPlainObject(ex)) return ex; + + depth = typeof depth !== 'number' ? MAX_SERIALIZE_EXCEPTION_DEPTH : depth; + maxSize = typeof depth !== 'number' ? MAX_SERIALIZE_EXCEPTION_SIZE : maxSize; + + var serialized = serializeObject(ex, depth); + + if (jsonSize(stringify(serialized)) > maxSize) { + return serializeException(ex, depth - 1); + } + + return serialized; +} + +function serializeKeysForMessage(keys, maxLength) { + if (typeof keys === 'number' || typeof keys === 'string') return keys.toString(); + if (!Array.isArray(keys)) return ''; + + keys = keys.filter(function(key) { + return typeof key === 'string'; + }); + if (keys.length === 0) return '[object has no keys]'; + + maxLength = typeof maxLength !== 'number' ? MAX_SERIALIZE_KEYS_LENGTH : maxLength; + if (keys[0].length >= maxLength) return keys[0]; + + for (var usedKeys = keys.length; usedKeys > 0; usedKeys--) { + var serialized = keys.slice(0, usedKeys).join(', '); + if (serialized.length > maxLength) continue; + if (usedKeys === keys.length) return serialized; + return serialized + '\u2026'; + } + + return ''; +} + +function sanitize(input, sanitizeKeys) { + if (!isArray(sanitizeKeys) || (isArray(sanitizeKeys) && sanitizeKeys.length === 0)) + return input; + + var sanitizeRegExp = joinRegExp(sanitizeKeys); + var sanitizeMask = '********'; + var safeInput; + + try { + safeInput = JSON.parse(stringify(input)); + } catch (o_O) { + return input; + } + + function sanitizeWorker(workerInput) { + if (isArray(workerInput)) { + return workerInput.map(function(val) { + return sanitizeWorker(val); + }); + } + + if (isPlainObject(workerInput)) { + return Object.keys(workerInput).reduce(function(acc, k) { + if (sanitizeRegExp.test(k)) { + acc[k] = sanitizeMask; + } else { + acc[k] = sanitizeWorker(workerInput[k]); + } + return acc; + }, {}); + } + + return workerInput; + } + + return sanitizeWorker(safeInput); +} + +module.exports = { + isObject: isObject, + isError: isError, + isErrorEvent: isErrorEvent, + isDOMError: isDOMError, + isDOMException: isDOMException, + isUndefined: isUndefined, + isFunction: isFunction, + isPlainObject: isPlainObject, + isString: isString, + isArray: isArray, + isEmptyObject: isEmptyObject, + supportsErrorEvent: supportsErrorEvent, + supportsDOMError: supportsDOMError, + supportsDOMException: supportsDOMException, + supportsFetch: supportsFetch, + supportsReferrerPolicy: supportsReferrerPolicy, + supportsPromiseRejectionEvent: supportsPromiseRejectionEvent, + wrappedCallback: wrappedCallback, + each: each, + objectMerge: objectMerge, + truncate: truncate, + objectFrozen: objectFrozen, + hasKey: hasKey, + joinRegExp: joinRegExp, + urlencode: urlencode, + uuid4: uuid4, + htmlTreeAsString: htmlTreeAsString, + htmlElementAsString: htmlElementAsString, + isSameException: isSameException, + isSameStacktrace: isSameStacktrace, + parseUrl: parseUrl, + fill: fill, + safeJoin: safeJoin, + serializeException: serializeException, + serializeKeysForMessage: serializeKeysForMessage, + sanitize: sanitize +}; + +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"10":10}],9:[function(_dereq_,module,exports){ +(function (global){ +var utils = _dereq_(8); + +/* + TraceKit - Cross brower stack traces + + This was originally forked from github.com/occ/TraceKit, but has since been + largely re-written and is now maintained as part of raven-js. Tests for + this are in test/vendor. + + MIT license +*/ + +var TraceKit = { + collectWindowErrors: true, + debug: false +}; + +// This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) +var _window = + typeof window !== 'undefined' + ? window + : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; + +// global reference to slice +var _slice = [].slice; +var UNKNOWN_FUNCTION = '?'; + +// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error#Error_types +var ERROR_TYPES_RE = /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/; + +function getLocationHref() { + if (typeof document === 'undefined' || document.location == null) return ''; + return document.location.href; +} + +function getLocationOrigin() { + if (typeof document === 'undefined' || document.location == null) return ''; + + // Oh dear IE10... + if (!document.location.origin) { + document.location.origin = + document.location.protocol + + '//' + + document.location.hostname + + (document.location.port ? ':' + document.location.port : ''); + } + + return document.location.origin; +} + +/** + * TraceKit.report: cross-browser processing of unhandled exceptions + * + * Syntax: + * TraceKit.report.subscribe(function(stackInfo) { ... }) + * TraceKit.report.unsubscribe(function(stackInfo) { ... }) + * TraceKit.report(exception) + * try { ...code... } catch(ex) { TraceKit.report(ex); } + * + * Supports: + * - Firefox: full stack trace with line numbers, plus column number + * on top frame; column number is not guaranteed + * - Opera: full stack trace with line and column numbers + * - Chrome: full stack trace with line and column numbers + * - Safari: line and column number for the top frame only; some frames + * may be missing, and column number is not guaranteed + * - IE: line and column number for the top frame only; some frames + * may be missing, and column number is not guaranteed + * + * In theory, TraceKit should work on all of the following versions: + * - IE5.5+ (only 8.0 tested) + * - Firefox 0.9+ (only 3.5+ tested) + * - Opera 7+ (only 10.50 tested; versions 9 and earlier may require + * Exceptions Have Stacktrace to be enabled in opera:config) + * - Safari 3+ (only 4+ tested) + * - Chrome 1+ (only 5+ tested) + * - Konqueror 3.5+ (untested) + * + * Requires TraceKit.computeStackTrace. + * + * Tries to catch all unhandled exceptions and report them to the + * subscribed handlers. Please note that TraceKit.report will rethrow the + * exception. This is REQUIRED in order to get a useful stack trace in IE. + * If the exception does not reach the top of the browser, you will only + * get a stack trace from the point where TraceKit.report was called. + * + * Handlers receive a stackInfo object as described in the + * TraceKit.computeStackTrace docs. + */ +TraceKit.report = (function reportModuleWrapper() { + var handlers = [], + lastArgs = null, + lastException = null, + lastExceptionStack = null; + + /** + * Add a crash handler. + * @param {Function} handler + */ + function subscribe(handler) { + installGlobalHandler(); + handlers.push(handler); + } + + /** + * Remove a crash handler. + * @param {Function} handler + */ + function unsubscribe(handler) { + for (var i = handlers.length - 1; i >= 0; --i) { + if (handlers[i] === handler) { + handlers.splice(i, 1); + } + } + } + + /** + * Remove all crash handlers. + */ + function unsubscribeAll() { + uninstallGlobalHandler(); + handlers = []; + } + + /** + * Dispatch stack information to all handlers. + * @param {Object.} stack + */ + function notifyHandlers(stack, isWindowError) { + var exception = null; + if (isWindowError && !TraceKit.collectWindowErrors) { + return; + } + for (var i in handlers) { + if (handlers.hasOwnProperty(i)) { + try { + handlers[i].apply(null, [stack].concat(_slice.call(arguments, 2))); + } catch (inner) { + exception = inner; + } + } + } + + if (exception) { + throw exception; + } + } + + var _oldOnerrorHandler, _onErrorHandlerInstalled; + + /** + * Ensures all global unhandled exceptions are recorded. + * Supported by Gecko and IE. + * @param {string} msg Error message. + * @param {string} url URL of script that generated the exception. + * @param {(number|string)} lineNo The line number at which the error + * occurred. + * @param {?(number|string)} colNo The column number at which the error + * occurred. + * @param {?Error} ex The actual Error object. + */ + function traceKitWindowOnError(msg, url, lineNo, colNo, ex) { + var stack = null; + // If 'ex' is ErrorEvent, get real Error from inside + var exception = utils.isErrorEvent(ex) ? ex.error : ex; + // If 'msg' is ErrorEvent, get real message from inside + var message = utils.isErrorEvent(msg) ? msg.message : msg; + + if (lastExceptionStack) { + TraceKit.computeStackTrace.augmentStackTraceWithInitialElement( + lastExceptionStack, + url, + lineNo, + message + ); + processLastException(); + } else if (exception && utils.isError(exception)) { + // non-string `exception` arg; attempt to extract stack trace + + // New chrome and blink send along a real error object + // Let's just report that like a normal error. + // See: https://mikewest.org/2013/08/debugging-runtime-errors-with-window-onerror + stack = TraceKit.computeStackTrace(exception); + notifyHandlers(stack, true); + } else { + var location = { + url: url, + line: lineNo, + column: colNo + }; + + var name = undefined; + var groups; + + if ({}.toString.call(message) === '[object String]') { + var groups = message.match(ERROR_TYPES_RE); + if (groups) { + name = groups[1]; + message = groups[2]; + } + } + + location.func = UNKNOWN_FUNCTION; + + stack = { + name: name, + message: message, + url: getLocationHref(), + stack: [location] + }; + notifyHandlers(stack, true); + } + + if (_oldOnerrorHandler) { + return _oldOnerrorHandler.apply(this, arguments); + } + + return false; + } + + function installGlobalHandler() { + if (_onErrorHandlerInstalled) { + return; + } + _oldOnerrorHandler = _window.onerror; + _window.onerror = traceKitWindowOnError; + _onErrorHandlerInstalled = true; + } + + function uninstallGlobalHandler() { + if (!_onErrorHandlerInstalled) { + return; + } + _window.onerror = _oldOnerrorHandler; + _onErrorHandlerInstalled = false; + _oldOnerrorHandler = undefined; + } + + function processLastException() { + var _lastExceptionStack = lastExceptionStack, + _lastArgs = lastArgs; + lastArgs = null; + lastExceptionStack = null; + lastException = null; + notifyHandlers.apply(null, [_lastExceptionStack, false].concat(_lastArgs)); + } + + /** + * Reports an unhandled Error to TraceKit. + * @param {Error} ex + * @param {?boolean} rethrow If false, do not re-throw the exception. + * Only used for window.onerror to not cause an infinite loop of + * rethrowing. + */ + function report(ex, rethrow) { + var args = _slice.call(arguments, 1); + if (lastExceptionStack) { + if (lastException === ex) { + return; // already caught by an inner catch block, ignore + } else { + processLastException(); + } + } + + var stack = TraceKit.computeStackTrace(ex); + lastExceptionStack = stack; + lastException = ex; + lastArgs = args; + + // If the stack trace is incomplete, wait for 2 seconds for + // slow slow IE to see if onerror occurs or not before reporting + // this exception; otherwise, we will end up with an incomplete + // stack trace + setTimeout(function() { + if (lastException === ex) { + processLastException(); + } + }, stack.incomplete ? 2000 : 0); + + if (rethrow !== false) { + throw ex; // re-throw to propagate to the top level (and cause window.onerror) + } + } + + report.subscribe = subscribe; + report.unsubscribe = unsubscribe; + report.uninstall = unsubscribeAll; + return report; +})(); + +/** + * TraceKit.computeStackTrace: cross-browser stack traces in JavaScript + * + * Syntax: + * s = TraceKit.computeStackTrace(exception) // consider using TraceKit.report instead (see below) + * Returns: + * s.name - exception name + * s.message - exception message + * s.stack[i].url - JavaScript or HTML file URL + * s.stack[i].func - function name, or empty for anonymous functions (if guessing did not work) + * s.stack[i].args - arguments passed to the function, if known + * s.stack[i].line - line number, if known + * s.stack[i].column - column number, if known + * + * Supports: + * - Firefox: full stack trace with line numbers and unreliable column + * number on top frame + * - Opera 10: full stack trace with line and column numbers + * - Opera 9-: full stack trace with line numbers + * - Chrome: full stack trace with line and column numbers + * - Safari: line and column number for the topmost stacktrace element + * only + * - IE: no line numbers whatsoever + * + * Tries to guess names of anonymous functions by looking for assignments + * in the source code. In IE and Safari, we have to guess source file names + * by searching for function bodies inside all page scripts. This will not + * work for scripts that are loaded cross-domain. + * Here be dragons: some function names may be guessed incorrectly, and + * duplicate functions may be mismatched. + * + * TraceKit.computeStackTrace should only be used for tracing purposes. + * Logging of unhandled exceptions should be done with TraceKit.report, + * which builds on top of TraceKit.computeStackTrace and provides better + * IE support by utilizing the window.onerror event to retrieve information + * about the top of the stack. + * + * Note: In IE and Safari, no stack trace is recorded on the Error object, + * so computeStackTrace instead walks its *own* chain of callers. + * This means that: + * * in Safari, some methods may be missing from the stack trace; + * * in IE, the topmost function in the stack trace will always be the + * caller of computeStackTrace. + * + * This is okay for tracing (because you are likely to be calling + * computeStackTrace from the function you want to be the topmost element + * of the stack trace anyway), but not okay for logging unhandled + * exceptions (because your catch block will likely be far away from the + * inner function that actually caused the exception). + * + */ +TraceKit.computeStackTrace = (function computeStackTraceWrapper() { + // Contents of Exception in various browsers. + // + // SAFARI: + // ex.message = Can't find variable: qq + // ex.line = 59 + // ex.sourceId = 580238192 + // ex.sourceURL = http://... + // ex.expressionBeginOffset = 96 + // ex.expressionCaretOffset = 98 + // ex.expressionEndOffset = 98 + // ex.name = ReferenceError + // + // FIREFOX: + // ex.message = qq is not defined + // ex.fileName = http://... + // ex.lineNumber = 59 + // ex.columnNumber = 69 + // ex.stack = ...stack trace... (see the example below) + // ex.name = ReferenceError + // + // CHROME: + // ex.message = qq is not defined + // ex.name = ReferenceError + // ex.type = not_defined + // ex.arguments = ['aa'] + // ex.stack = ...stack trace... + // + // INTERNET EXPLORER: + // ex.message = ... + // ex.name = ReferenceError + // + // OPERA: + // ex.message = ...message... (see the example below) + // ex.name = ReferenceError + // ex.opera#sourceloc = 11 (pretty much useless, duplicates the info in ex.message) + // ex.stacktrace = n/a; see 'opera:config#UserPrefs|Exceptions Have Stacktrace' + + /** + * Computes stack trace information from the stack property. + * Chrome and Gecko use this property. + * @param {Error} ex + * @return {?Object.} Stack trace information. + */ + function computeStackTraceFromStackProp(ex) { + if (typeof ex.stack === 'undefined' || !ex.stack) return; + + var chrome = /^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i; + var winjs = /^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i; + // NOTE: blob urls are now supposed to always have an origin, therefore it's format + // which is `blob:http://url/path/with-some-uuid`, is matched by `blob.*?:\/` as well + var gecko = /^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i; + // Used to additionally parse URL/line/column from eval frames + var geckoEval = /(\S+) line (\d+)(?: > eval line \d+)* > eval/i; + var chromeEval = /\((\S*)(?::(\d+))(?::(\d+))\)/; + var lines = ex.stack.split('\n'); + var stack = []; + var submatch; + var parts; + var element; + var reference = /^(.*) is undefined$/.exec(ex.message); + + for (var i = 0, j = lines.length; i < j; ++i) { + if ((parts = chrome.exec(lines[i]))) { + var isNative = parts[2] && parts[2].indexOf('native') === 0; // start of line + var isEval = parts[2] && parts[2].indexOf('eval') === 0; // start of line + if (isEval && (submatch = chromeEval.exec(parts[2]))) { + // throw out eval line/column and use top-most line/column number + parts[2] = submatch[1]; // url + parts[3] = submatch[2]; // line + parts[4] = submatch[3]; // column + } + element = { + url: !isNative ? parts[2] : null, + func: parts[1] || UNKNOWN_FUNCTION, + args: isNative ? [parts[2]] : [], + line: parts[3] ? +parts[3] : null, + column: parts[4] ? +parts[4] : null + }; + } else if ((parts = winjs.exec(lines[i]))) { + element = { + url: parts[2], + func: parts[1] || UNKNOWN_FUNCTION, + args: [], + line: +parts[3], + column: parts[4] ? +parts[4] : null + }; + } else if ((parts = gecko.exec(lines[i]))) { + var isEval = parts[3] && parts[3].indexOf(' > eval') > -1; + if (isEval && (submatch = geckoEval.exec(parts[3]))) { + // throw out eval line/column and use top-most line number + parts[3] = submatch[1]; + parts[4] = submatch[2]; + parts[5] = null; // no column when eval + } else if (i === 0 && !parts[5] && typeof ex.columnNumber !== 'undefined') { + // FireFox uses this awesome columnNumber property for its top frame + // Also note, Firefox's column number is 0-based and everything else expects 1-based, + // so adding 1 + // NOTE: this hack doesn't work if top-most frame is eval + stack[0].column = ex.columnNumber + 1; + } + element = { + url: parts[3], + func: parts[1] || UNKNOWN_FUNCTION, + args: parts[2] ? parts[2].split(',') : [], + line: parts[4] ? +parts[4] : null, + column: parts[5] ? +parts[5] : null + }; + } else { + continue; + } + + if (!element.func && element.line) { + element.func = UNKNOWN_FUNCTION; + } + + if (element.url && element.url.substr(0, 5) === 'blob:') { + // Special case for handling JavaScript loaded into a blob. + // We use a synchronous AJAX request here as a blob is already in + // memory - it's not making a network request. This will generate a warning + // in the browser console, but there has already been an error so that's not + // that much of an issue. + var xhr = new XMLHttpRequest(); + xhr.open('GET', element.url, false); + xhr.send(null); + + // If we failed to download the source, skip this patch + if (xhr.status === 200) { + var source = xhr.responseText || ''; + + // We trim the source down to the last 300 characters as sourceMappingURL is always at the end of the file. + // Why 300? To be in line with: https://github.com/getsentry/sentry/blob/4af29e8f2350e20c28a6933354e4f42437b4ba42/src/sentry/lang/javascript/processor.py#L164-L175 + source = source.slice(-300); + + // Now we dig out the source map URL + var sourceMaps = source.match(/\/\/# sourceMappingURL=(.*)$/); + + // If we don't find a source map comment or we find more than one, continue on to the next element. + if (sourceMaps) { + var sourceMapAddress = sourceMaps[1]; + + // Now we check to see if it's a relative URL. + // If it is, convert it to an absolute one. + if (sourceMapAddress.charAt(0) === '~') { + sourceMapAddress = getLocationOrigin() + sourceMapAddress.slice(1); + } + + // Now we strip the '.map' off of the end of the URL and update the + // element so that Sentry can match the map to the blob. + element.url = sourceMapAddress.slice(0, -4); + } + } + } + + stack.push(element); + } + + if (!stack.length) { + return null; + } + + return { + name: ex.name, + message: ex.message, + url: getLocationHref(), + stack: stack + }; + } + + /** + * Adds information about the first frame to incomplete stack traces. + * Safari and IE require this to get complete data on the first frame. + * @param {Object.} stackInfo Stack trace information from + * one of the compute* methods. + * @param {string} url The URL of the script that caused an error. + * @param {(number|string)} lineNo The line number of the script that + * caused an error. + * @param {string=} message The error generated by the browser, which + * hopefully contains the name of the object that caused the error. + * @return {boolean} Whether or not the stack information was + * augmented. + */ + function augmentStackTraceWithInitialElement(stackInfo, url, lineNo, message) { + var initial = { + url: url, + line: lineNo + }; + + if (initial.url && initial.line) { + stackInfo.incomplete = false; + + if (!initial.func) { + initial.func = UNKNOWN_FUNCTION; + } + + if (stackInfo.stack.length > 0) { + if (stackInfo.stack[0].url === initial.url) { + if (stackInfo.stack[0].line === initial.line) { + return false; // already in stack trace + } else if ( + !stackInfo.stack[0].line && + stackInfo.stack[0].func === initial.func + ) { + stackInfo.stack[0].line = initial.line; + return false; + } + } + } + + stackInfo.stack.unshift(initial); + stackInfo.partial = true; + return true; + } else { + stackInfo.incomplete = true; + } + + return false; + } + + /** + * Computes stack trace information by walking the arguments.caller + * chain at the time the exception occurred. This will cause earlier + * frames to be missed but is the only way to get any stack trace in + * Safari and IE. The top frame is restored by + * {@link augmentStackTraceWithInitialElement}. + * @param {Error} ex + * @return {?Object.} Stack trace information. + */ + function computeStackTraceByWalkingCallerChain(ex, depth) { + var functionName = /function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i, + stack = [], + funcs = {}, + recursion = false, + parts, + item, + source; + + for ( + var curr = computeStackTraceByWalkingCallerChain.caller; + curr && !recursion; + curr = curr.caller + ) { + if (curr === computeStackTrace || curr === TraceKit.report) { + // console.log('skipping internal function'); + continue; + } + + item = { + url: null, + func: UNKNOWN_FUNCTION, + line: null, + column: null + }; + + if (curr.name) { + item.func = curr.name; + } else if ((parts = functionName.exec(curr.toString()))) { + item.func = parts[1]; + } + + if (typeof item.func === 'undefined') { + try { + item.func = parts.input.substring(0, parts.input.indexOf('{')); + } catch (e) {} + } + + if (funcs['' + curr]) { + recursion = true; + } else { + funcs['' + curr] = true; + } + + stack.push(item); + } + + if (depth) { + // console.log('depth is ' + depth); + // console.log('stack is ' + stack.length); + stack.splice(0, depth); + } + + var result = { + name: ex.name, + message: ex.message, + url: getLocationHref(), + stack: stack + }; + augmentStackTraceWithInitialElement( + result, + ex.sourceURL || ex.fileName, + ex.line || ex.lineNumber, + ex.message || ex.description + ); + return result; + } + + /** + * Computes a stack trace for an exception. + * @param {Error} ex + * @param {(string|number)=} depth + */ + function computeStackTrace(ex, depth) { + var stack = null; + depth = depth == null ? 0 : +depth; + + try { + stack = computeStackTraceFromStackProp(ex); + if (stack) { + return stack; + } + } catch (e) { + if (TraceKit.debug) { + throw e; + } + } + + try { + stack = computeStackTraceByWalkingCallerChain(ex, depth + 1); + if (stack) { + return stack; + } + } catch (e) { + if (TraceKit.debug) { + throw e; + } + } + return { + name: ex.name, + message: ex.message, + url: getLocationHref() + }; + } + + computeStackTrace.augmentStackTraceWithInitialElement = augmentStackTraceWithInitialElement; + computeStackTrace.computeStackTraceFromStackProp = computeStackTraceFromStackProp; + + return computeStackTrace; +})(); + +module.exports = TraceKit; + +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"8":8}],10:[function(_dereq_,module,exports){ +/* + json-stringify-safe + Like JSON.stringify, but doesn't throw on circular references. + + Originally forked from https://github.com/isaacs/json-stringify-safe + version 5.0.1 on 3/8/2017 and modified to handle Errors serialization + and IE8 compatibility. Tests for this are in test/vendor. + + ISC license: https://github.com/isaacs/json-stringify-safe/blob/master/LICENSE +*/ + +exports = module.exports = stringify; +exports.getSerialize = serializer; + +function indexOf(haystack, needle) { + for (var i = 0; i < haystack.length; ++i) { + if (haystack[i] === needle) return i; + } + return -1; +} + +function stringify(obj, replacer, spaces, cycleReplacer) { + return JSON.stringify(obj, serializer(replacer, cycleReplacer), spaces); +} + +// https://github.com/ftlabs/js-abbreviate/blob/fa709e5f139e7770a71827b1893f22418097fbda/index.js#L95-L106 +function stringifyError(value) { + var err = { + // These properties are implemented as magical getters and don't show up in for in + stack: value.stack, + message: value.message, + name: value.name + }; + + for (var i in value) { + if (Object.prototype.hasOwnProperty.call(value, i)) { + err[i] = value[i]; + } + } + + return err; +} + +function serializer(replacer, cycleReplacer) { + var stack = []; + var keys = []; + + if (cycleReplacer == null) { + cycleReplacer = function(key, value) { + if (stack[0] === value) { + return '[Circular ~]'; + } + return '[Circular ~.' + keys.slice(0, indexOf(stack, value)).join('.') + ']'; + }; + } + + return function(key, value) { + if (stack.length > 0) { + var thisPos = indexOf(stack, this); + ~thisPos ? stack.splice(thisPos + 1) : stack.push(this); + ~thisPos ? keys.splice(thisPos, Infinity, key) : keys.push(key); + + if (~indexOf(stack, value)) { + value = cycleReplacer.call(this, key, value); + } + } else { + stack.push(value); + } + + return replacer == null + ? value instanceof Error ? stringifyError(value) : value + : replacer.call(this, key, value); + }; +} + +},{}],11:[function(_dereq_,module,exports){ +/* + * JavaScript MD5 + * https://github.com/blueimp/JavaScript-MD5 + * + * Copyright 2011, Sebastian Tschan + * https://blueimp.net + * + * Licensed under the MIT license: + * https://opensource.org/licenses/MIT + * + * Based on + * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message + * Digest Algorithm, as defined in RFC 1321. + * Version 2.2 Copyright (C) Paul Johnston 1999 - 2009 + * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet + * Distributed under the BSD License + * See http://pajhome.org.uk/crypt/md5 for more info. + */ + +/* +* Add integers, wrapping at 2^32. This uses 16-bit operations internally +* to work around bugs in some JS interpreters. +*/ +function safeAdd(x, y) { + var lsw = (x & 0xffff) + (y & 0xffff); + var msw = (x >> 16) + (y >> 16) + (lsw >> 16); + return (msw << 16) | (lsw & 0xffff); +} + +/* +* Bitwise rotate a 32-bit number to the left. +*/ +function bitRotateLeft(num, cnt) { + return (num << cnt) | (num >>> (32 - cnt)); +} + +/* +* These functions implement the four basic operations the algorithm uses. +*/ +function md5cmn(q, a, b, x, s, t) { + return safeAdd(bitRotateLeft(safeAdd(safeAdd(a, q), safeAdd(x, t)), s), b); +} +function md5ff(a, b, c, d, x, s, t) { + return md5cmn((b & c) | (~b & d), a, b, x, s, t); +} +function md5gg(a, b, c, d, x, s, t) { + return md5cmn((b & d) | (c & ~d), a, b, x, s, t); +} +function md5hh(a, b, c, d, x, s, t) { + return md5cmn(b ^ c ^ d, a, b, x, s, t); +} +function md5ii(a, b, c, d, x, s, t) { + return md5cmn(c ^ (b | ~d), a, b, x, s, t); +} + +/* +* Calculate the MD5 of an array of little-endian words, and a bit length. +*/ +function binlMD5(x, len) { + /* append padding */ + x[len >> 5] |= 0x80 << (len % 32); + x[(((len + 64) >>> 9) << 4) + 14] = len; + + var i; + var olda; + var oldb; + var oldc; + var oldd; + var a = 1732584193; + var b = -271733879; + var c = -1732584194; + var d = 271733878; + + for (i = 0; i < x.length; i += 16) { + olda = a; + oldb = b; + oldc = c; + oldd = d; + + a = md5ff(a, b, c, d, x[i], 7, -680876936); + d = md5ff(d, a, b, c, x[i + 1], 12, -389564586); + c = md5ff(c, d, a, b, x[i + 2], 17, 606105819); + b = md5ff(b, c, d, a, x[i + 3], 22, -1044525330); + a = md5ff(a, b, c, d, x[i + 4], 7, -176418897); + d = md5ff(d, a, b, c, x[i + 5], 12, 1200080426); + c = md5ff(c, d, a, b, x[i + 6], 17, -1473231341); + b = md5ff(b, c, d, a, x[i + 7], 22, -45705983); + a = md5ff(a, b, c, d, x[i + 8], 7, 1770035416); + d = md5ff(d, a, b, c, x[i + 9], 12, -1958414417); + c = md5ff(c, d, a, b, x[i + 10], 17, -42063); + b = md5ff(b, c, d, a, x[i + 11], 22, -1990404162); + a = md5ff(a, b, c, d, x[i + 12], 7, 1804603682); + d = md5ff(d, a, b, c, x[i + 13], 12, -40341101); + c = md5ff(c, d, a, b, x[i + 14], 17, -1502002290); + b = md5ff(b, c, d, a, x[i + 15], 22, 1236535329); + + a = md5gg(a, b, c, d, x[i + 1], 5, -165796510); + d = md5gg(d, a, b, c, x[i + 6], 9, -1069501632); + c = md5gg(c, d, a, b, x[i + 11], 14, 643717713); + b = md5gg(b, c, d, a, x[i], 20, -373897302); + a = md5gg(a, b, c, d, x[i + 5], 5, -701558691); + d = md5gg(d, a, b, c, x[i + 10], 9, 38016083); + c = md5gg(c, d, a, b, x[i + 15], 14, -660478335); + b = md5gg(b, c, d, a, x[i + 4], 20, -405537848); + a = md5gg(a, b, c, d, x[i + 9], 5, 568446438); + d = md5gg(d, a, b, c, x[i + 14], 9, -1019803690); + c = md5gg(c, d, a, b, x[i + 3], 14, -187363961); + b = md5gg(b, c, d, a, x[i + 8], 20, 1163531501); + a = md5gg(a, b, c, d, x[i + 13], 5, -1444681467); + d = md5gg(d, a, b, c, x[i + 2], 9, -51403784); + c = md5gg(c, d, a, b, x[i + 7], 14, 1735328473); + b = md5gg(b, c, d, a, x[i + 12], 20, -1926607734); + + a = md5hh(a, b, c, d, x[i + 5], 4, -378558); + d = md5hh(d, a, b, c, x[i + 8], 11, -2022574463); + c = md5hh(c, d, a, b, x[i + 11], 16, 1839030562); + b = md5hh(b, c, d, a, x[i + 14], 23, -35309556); + a = md5hh(a, b, c, d, x[i + 1], 4, -1530992060); + d = md5hh(d, a, b, c, x[i + 4], 11, 1272893353); + c = md5hh(c, d, a, b, x[i + 7], 16, -155497632); + b = md5hh(b, c, d, a, x[i + 10], 23, -1094730640); + a = md5hh(a, b, c, d, x[i + 13], 4, 681279174); + d = md5hh(d, a, b, c, x[i], 11, -358537222); + c = md5hh(c, d, a, b, x[i + 3], 16, -722521979); + b = md5hh(b, c, d, a, x[i + 6], 23, 76029189); + a = md5hh(a, b, c, d, x[i + 9], 4, -640364487); + d = md5hh(d, a, b, c, x[i + 12], 11, -421815835); + c = md5hh(c, d, a, b, x[i + 15], 16, 530742520); + b = md5hh(b, c, d, a, x[i + 2], 23, -995338651); + + a = md5ii(a, b, c, d, x[i], 6, -198630844); + d = md5ii(d, a, b, c, x[i + 7], 10, 1126891415); + c = md5ii(c, d, a, b, x[i + 14], 15, -1416354905); + b = md5ii(b, c, d, a, x[i + 5], 21, -57434055); + a = md5ii(a, b, c, d, x[i + 12], 6, 1700485571); + d = md5ii(d, a, b, c, x[i + 3], 10, -1894986606); + c = md5ii(c, d, a, b, x[i + 10], 15, -1051523); + b = md5ii(b, c, d, a, x[i + 1], 21, -2054922799); + a = md5ii(a, b, c, d, x[i + 8], 6, 1873313359); + d = md5ii(d, a, b, c, x[i + 15], 10, -30611744); + c = md5ii(c, d, a, b, x[i + 6], 15, -1560198380); + b = md5ii(b, c, d, a, x[i + 13], 21, 1309151649); + a = md5ii(a, b, c, d, x[i + 4], 6, -145523070); + d = md5ii(d, a, b, c, x[i + 11], 10, -1120210379); + c = md5ii(c, d, a, b, x[i + 2], 15, 718787259); + b = md5ii(b, c, d, a, x[i + 9], 21, -343485551); + + a = safeAdd(a, olda); + b = safeAdd(b, oldb); + c = safeAdd(c, oldc); + d = safeAdd(d, oldd); + } + return [a, b, c, d]; +} + +/* +* Convert an array of little-endian words to a string +*/ +function binl2rstr(input) { + var i; + var output = ''; + var length32 = input.length * 32; + for (i = 0; i < length32; i += 8) { + output += String.fromCharCode((input[i >> 5] >>> (i % 32)) & 0xff); + } + return output; +} + +/* +* Convert a raw string to an array of little-endian words +* Characters >255 have their high-byte silently ignored. +*/ +function rstr2binl(input) { + var i; + var output = []; + output[(input.length >> 2) - 1] = undefined; + for (i = 0; i < output.length; i += 1) { + output[i] = 0; + } + var length8 = input.length * 8; + for (i = 0; i < length8; i += 8) { + output[i >> 5] |= (input.charCodeAt(i / 8) & 0xff) << (i % 32); + } + return output; +} + +/* +* Calculate the MD5 of a raw string +*/ +function rstrMD5(s) { + return binl2rstr(binlMD5(rstr2binl(s), s.length * 8)); +} + +/* +* Calculate the HMAC-MD5, of a key and some data (raw strings) +*/ +function rstrHMACMD5(key, data) { + var i; + var bkey = rstr2binl(key); + var ipad = []; + var opad = []; + var hash; + ipad[15] = opad[15] = undefined; + if (bkey.length > 16) { + bkey = binlMD5(bkey, key.length * 8); + } + for (i = 0; i < 16; i += 1) { + ipad[i] = bkey[i] ^ 0x36363636; + opad[i] = bkey[i] ^ 0x5c5c5c5c; + } + hash = binlMD5(ipad.concat(rstr2binl(data)), 512 + data.length * 8); + return binl2rstr(binlMD5(opad.concat(hash), 512 + 128)); +} + +/* +* Convert a raw string to a hex string +*/ +function rstr2hex(input) { + var hexTab = '0123456789abcdef'; + var output = ''; + var x; + var i; + for (i = 0; i < input.length; i += 1) { + x = input.charCodeAt(i); + output += hexTab.charAt((x >>> 4) & 0x0f) + hexTab.charAt(x & 0x0f); + } + return output; +} + +/* +* Encode a string as utf-8 +*/ +function str2rstrUTF8(input) { + return unescape(encodeURIComponent(input)); +} + +/* +* Take string arguments and return either raw or hex encoded strings +*/ +function rawMD5(s) { + return rstrMD5(str2rstrUTF8(s)); +} +function hexMD5(s) { + return rstr2hex(rawMD5(s)); +} +function rawHMACMD5(k, d) { + return rstrHMACMD5(str2rstrUTF8(k), str2rstrUTF8(d)); +} +function hexHMACMD5(k, d) { + return rstr2hex(rawHMACMD5(k, d)); +} + +function md5(string, key, raw) { + if (!key) { + if (!raw) { + return hexMD5(string); + } + return rawMD5(string); + } + if (!raw) { + return hexHMACMD5(key, string); + } + return rawHMACMD5(key, string); +} + +module.exports = md5; + +},{}]},{},[7,1,2,3])(7) +}); \ No newline at end of file diff --git a/packages/raven-js/dist/ember,require,vue/raven.min.js b/packages/raven-js/dist/ember,require,vue/raven.min.js new file mode 100644 index 000000000000..22aa8e4cd0f7 --- /dev/null +++ b/packages/raven-js/dist/ember,require,vue/raven.min.js @@ -0,0 +1,4 @@ +/*! Raven.js 3.25.2 (30b6d4e) | github.com/getsentry/raven-js */ +!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.Raven=a()}}(function(){var a;return function b(a,c,d){function e(g,h){if(!c[g]){if(!a[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};a[g][0].call(k.exports,function(b){var c=a[g][1][b];return e(c?c:b)},k,k.exports,b,a,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;g":"anonymous component")+(a._isVue&&a.$options.__file?" at "+a.$options.__file:"")}function e(a,b){if(b=b||window.Vue,b&&b.config){var c=b.config.errorHandler;b.config.errorHandler=function(b,e,f){var g={};"[object Object]"===Object.prototype.toString.call(e)&&(g.componentName=d(e),g.propsData=e.$options.propsData),"undefined"!=typeof f&&(g.lifecycleHook=f),a.captureException(b,{extra:g}),"function"==typeof c&&c.call(this,b,e,f)}}}b.exports=e,a(7).addPlugin(b.exports)},{7:7}],4:[function(a,b,c){function d(a){this.name="RavenConfigError",this.message=a}d.prototype=new Error,d.prototype.constructor=d,b.exports=d},{}],5:[function(a,b,c){var d=a(8),e=function(a,b,c){var e=a[b],f=a;if(b in a){var g="warn"===b?"warning":b;a[b]=function(){var a=[].slice.call(arguments),h=d.safeJoin(a," "),i={level:g,logger:"console",extra:{arguments:a}};"assert"===b?a[0]===!1&&(h="Assertion failed: "+(d.safeJoin(a.slice(1)," ")||"console.assert"),i.extra.arguments=a.slice(1),c&&c(h,i)):c&&c(h,i),e&&Function.prototype.apply.call(e,f,a)}}};b.exports={wrapMethod:e}},{8:8}],6:[function(a,b,c){(function(c){function d(){return+new Date}function e(a,b){return s(b)?function(c){return b(c,a)}:b}function f(){this.a=!("object"!=typeof JSON||!JSON.stringify),this.b=!r(S),this.c=!r(T),this.d=null,this.e=null,this.f=null,this.g=null,this.h=null,this.i=null,this.j={},this.k={release:R.SENTRY_RELEASE&&R.SENTRY_RELEASE.id,logger:"javascript",ignoreErrors:[],ignoreUrls:[],whitelistUrls:[],includePaths:[],headers:null,collectWindowErrors:!0,captureUnhandledRejections:!0,maxMessageLength:0,maxUrlLength:250,stackTraceLimit:50,autoBreadcrumbs:!0,instrument:!0,sampleRate:1,sanitizeKeys:[]},this.l={method:"POST",keepalive:!0,referrerPolicy:K()?"origin":""},this.m=0,this.n=!1,this.o=Error.stackTraceLimit,this.p=R.console||{},this.q={},this.r=[],this.s=d(),this.t=[],this.u=[],this.v=null,this.w=R.location,this.x=this.w&&this.w.href,this.y();for(var a in this.p)this.q[a]=this.p[a]}var g=a(9),h=a(10),i=a(11),j=a(4),k=a(8),l=k.isErrorEvent,m=k.isDOMError,n=k.isDOMException,o=k.isError,p=k.isObject,q=k.isPlainObject,r=k.isUndefined,s=k.isFunction,t=k.isString,u=k.isArray,v=k.isEmptyObject,w=k.each,x=k.objectMerge,y=k.truncate,z=k.objectFrozen,A=k.hasKey,B=k.joinRegExp,C=k.urlencode,D=k.uuid4,E=k.htmlTreeAsString,F=k.isSameException,G=k.isSameStacktrace,H=k.parseUrl,I=k.fill,J=k.supportsFetch,K=k.supportsReferrerPolicy,L=k.serializeKeysForMessage,M=k.serializeException,N=k.sanitize,O=a(5).wrapMethod,P="source protocol user pass host port path".split(" "),Q=/^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/,R="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},S=R.document,T=R.navigator;f.prototype={VERSION:"3.25.2",debug:!1,TraceKit:g,config:function(a,b){var c=this;if(c.g)return this.z("error","Error: Raven has already been configured"),c;if(!a)return c;var d=c.k;b&&w(b,function(a,b){"tags"===a||"extra"===a||"user"===a?c.j[a]=b:d[a]=b}),c.setDSN(a),d.ignoreErrors.push(/^Script error\.?$/),d.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/),d.ignoreErrors=B(d.ignoreErrors),d.ignoreUrls=!!d.ignoreUrls.length&&B(d.ignoreUrls),d.whitelistUrls=!!d.whitelistUrls.length&&B(d.whitelistUrls),d.includePaths=B(d.includePaths),d.maxBreadcrumbs=Math.max(0,Math.min(d.maxBreadcrumbs||100,100));var e={xhr:!0,console:!0,dom:!0,location:!0,sentry:!0},f=d.autoBreadcrumbs;"[object Object]"==={}.toString.call(f)?f=x(e,f):f!==!1&&(f=e),d.autoBreadcrumbs=f;var h={tryCatch:!0},i=d.instrument;return"[object Object]"==={}.toString.call(i)?i=x(h,i):i!==!1&&(i=h),d.instrument=i,g.collectWindowErrors=!!d.collectWindowErrors,c},install:function(){var a=this;return a.isSetup()&&!a.n&&(g.report.subscribe(function(){a.A.apply(a,arguments)}),a.k.captureUnhandledRejections&&a.B(),a.C(),a.k.instrument&&a.k.instrument.tryCatch&&a.D(),a.k.autoBreadcrumbs&&a.E(),a.F(),a.n=!0),Error.stackTraceLimit=a.k.stackTraceLimit,this},setDSN:function(a){var b=this,c=b.G(a),d=c.path.lastIndexOf("/"),e=c.path.substr(1,d);b.H=a,b.h=c.user,b.I=c.pass&&c.pass.substr(1),b.i=c.path.substr(d+1),b.g=b.J(c),b.K=b.g+"/"+e+"api/"+b.i+"/store/",this.y()},context:function(a,b,c){return s(a)&&(c=b||[],b=a,a=void 0),this.wrap(a,b).apply(this,c)},wrap:function(a,b,c){function d(){var d=[],f=arguments.length,g=!a||a&&a.deep!==!1;for(c&&s(c)&&c.apply(this,arguments);f--;)d[f]=g?e.wrap(a,arguments[f]):arguments[f];try{return b.apply(this,d)}catch(h){throw e.L(),e.captureException(h,a),h}}var e=this;if(r(b)&&!s(a))return a;if(s(a)&&(b=a,a=void 0),!s(b))return b;try{if(b.M)return b;if(b.N)return b.N}catch(f){return b}for(var g in b)A(b,g)&&(d[g]=b[g]);return d.prototype=b.prototype,b.N=d,d.M=!0,d.O=b,d},uninstall:function(){return g.report.uninstall(),this.P(),this.Q(),this.R(),this.S(),Error.stackTraceLimit=this.o,this.n=!1,this},T:function(a){this.z("debug","Raven caught unhandled promise rejection:",a),this.captureException(a.reason,{extra:{unhandledPromiseRejection:!0}})},B:function(){return this.T=this.T.bind(this),R.addEventListener&&R.addEventListener("unhandledrejection",this.T),this},P:function(){return R.removeEventListener&&R.removeEventListener("unhandledrejection",this.T),this},captureException:function(a,b){if(b=x({trimHeadFrames:0},b?b:{}),l(a)&&a.error)a=a.error;else{if(m(a)||n(a)){var c=a.name||(m(a)?"DOMError":"DOMException"),d=a.message?c+": "+a.message:c;return this.captureMessage(d,x(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}))}if(o(a))a=a;else{if(!q(a))return this.captureMessage(a,x(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}));b=this.U(b,a),a=new Error(b.message)}}this.d=a;try{var e=g.computeStackTrace(a);this.V(e,b)}catch(f){if(a!==f)throw f}return this},U:function(a,b){var c=Object.keys(b).sort(),d=x(a,{message:"Non-Error exception captured with keys: "+L(c),fingerprint:[i(c)],extra:a.extra||{}});return d.extra.W=M(b),d},captureMessage:function(a,b){if(!this.k.ignoreErrors.test||!this.k.ignoreErrors.test(a)){b=b||{},a+="";var c,d=x({message:a},b);try{throw new Error(a)}catch(e){c=e}c.name=null;var f=g.computeStackTrace(c),h=u(f.stack)&&f.stack[1];h&&"Raven.captureException"===h.func&&(h=f.stack[2]);var i=h&&h.url||"";if((!this.k.ignoreUrls.test||!this.k.ignoreUrls.test(i))&&(!this.k.whitelistUrls.test||this.k.whitelistUrls.test(i))){if(this.k.stacktrace||b&&b.stacktrace){d.fingerprint=null==d.fingerprint?a:d.fingerprint,b=x({trimHeadFrames:0},b),b.trimHeadFrames+=1;var j=this.X(f,b);d.stacktrace={frames:j.reverse()}}return d.fingerprint&&(d.fingerprint=u(d.fingerprint)?d.fingerprint:[d.fingerprint]),this.Y(d),this}}},captureBreadcrumb:function(a){var b=x({timestamp:d()/1e3},a);if(s(this.k.breadcrumbCallback)){var c=this.k.breadcrumbCallback(b);if(p(c)&&!v(c))b=c;else if(c===!1)return this}return this.u.push(b),this.u.length>this.k.maxBreadcrumbs&&this.u.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.r.push([a,b]),this.n&&this.F(),this},setUserContext:function(a){return this.j.user=a,this},setExtraContext:function(a){return this.Z("extra",a),this},setTagsContext:function(a){return this.Z("tags",a),this},clearContext:function(){return this.j={},this},getContext:function(){return JSON.parse(h(this.j))},setEnvironment:function(a){return this.k.environment=a,this},setRelease:function(a){return this.k.release=a,this},setDataCallback:function(a){var b=this.k.dataCallback;return this.k.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.k.breadcrumbCallback;return this.k.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.k.shouldSendCallback;return this.k.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.k.transport=a,this},lastException:function(){return this.d},lastEventId:function(){return this.f},isSetup:function(){return!!this.a&&(!!this.g||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.z("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=R.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(S){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.H;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.j.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.J(this.G(c)),h=S.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(S.head||S.body).appendChild(h)}},L:function(){var a=this;this.m+=1,setTimeout(function(){a.m-=1})},$:function(a,b){var c,d;if(this.b){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),S.createEvent?(c=S.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=S.createEventObject(),c.eventType=a);for(d in b)A(b,d)&&(c[d]=b[d]);if(S.createEvent)S.dispatchEvent(c);else try{S.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},_:function(a){var b=this;return function(c){if(b.aa=null,b.v!==c){b.v=c;var d;try{d=E(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ba:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.aa;g||a._("input")(c),clearTimeout(g),a.aa=setTimeout(function(){a.aa=null},b)}}},ca:function(a,b){var c=H(this.w.href),d=H(b),e=H(a);this.x=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},C:function(){var a=this;a.da=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.M?a.da.apply(this.O,arguments):a.da.apply(this,arguments)}},Q:function(){this.da&&(Function.prototype.toString=this.da)},D:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.ca(b.x,c+""),a.apply(this,arguments)}};I(R.history,"pushState",j,d),I(R.history,"replaceState",j,d)}if(c.console&&"console"in R&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};w(["debug","info","warn","error","log"],function(a,b){O(console,b,k)})}},R:function(){for(var a;this.t.length;){a=this.t.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},S:function(){for(var a in this.q)this.p[a]=this.q[a]},F:function(){var a=this;w(this.r,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},G:function(a){var b=Q.exec(a),c={},d=7;try{for(;d--;)c[P[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.k.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},J:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},A:function(){this.m||this.V.apply(this,arguments)},V:function(a,b){var c=this.X(a,b);this.$("handle",{stackInfo:a,options:b}),this.fa(a.name,a.message,a.url,a.lineno,c,b)},X:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(w(a.stack,function(b,e){var f=c.ga(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.u,0)}),this.j.user&&(a.user=this.j.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),a=this.pa(a),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||v(a[b]))&&delete a[b]}),s(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!v(a)&&(!s(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.ma()?void this.z("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function F(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&l(b))for(c=b.split(/\s+/),f=0;fc?Q(a,b-1):d}function R(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?X:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function S(a,b){function c(a){return m(a)?a.map(function(a){return c(a)}):k(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!m(b)||m(b)&&0===b.length)return a;var d,e=A(b),f="********";try{d=JSON.parse(T(a))}catch(g){return a}return c(d)}var T=a(10),U="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},V=3,W=51200,X=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isDOMError:g,isDOMException:h,isUndefined:i,isFunction:j,isPlainObject:k,isString:l,isArray:m,isEmptyObject:n,supportsErrorEvent:o,supportsDOMError:p,supportsDOMException:q,supportsFetch:r,supportsReferrerPolicy:s,supportsPromiseRejectionEvent:t,wrappedCallback:u,each:v,objectMerge:w,truncate:y,objectFrozen:x,hasKey:z,joinRegExp:A,urlencode:B,uuid4:D,htmlTreeAsString:E,htmlElementAsString:F,isSameException:I,isSameStacktrace:J,parseUrl:C,fill:K,safeJoin:L,serializeException:Q,serializeKeysForMessage:R,sanitize:S}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{10:10}],9:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}function e(){return"undefined"==typeof document||null==document.location?"":(document.location.origin||(document.location.origin=document.location.protocol+"//"+document.location.hostname+(document.location.port?":"+document.location.port:"")),document.location.origin)}var f=a(8),g={collectWindowErrors:!0,debug:!1},h="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},i=[].slice,j="?",k=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;g.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function e(a,b){var c=null;if(!b||g.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(i.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,h,i){var l=null,m=f.isErrorEvent(i)?i.error:i,n=f.isErrorEvent(a)?a.message:a;if(v)g.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&f.isError(m))l=g.computeStackTrace(m),e(l,!0);else{var p,r={url:b,line:c,column:h},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(k);p&&(s=p[1],n=p[2])}r.func=j,l={name:s,message:n,url:d(),stack:[r]},e(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=h.onerror,h.onerror=l,r=!0)}function n(){r&&(h.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,e.apply(null,[a,!1].concat(b))}function p(a,b){var c=i.call(arguments,1);if(v){if(u===a)return;o()}var d=g.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),g.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,f,g=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,h=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,i=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,k=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,l=/\((\S*)(?::(\d+))(?::(\d+))\)/,m=a.stack.split("\n"),n=[],o=(/^(.*) is undefined$/.exec(a.message),0),p=m.length;o eval")>-1;r&&(b=k.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==o||c[5]||"undefined"==typeof a.columnNumber||(n[0].column=a.columnNumber+1),f={url:c[3],func:c[1]||j,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}if(!f.func&&f.line&&(f.func=j),f.url&&"blob:"===f.url.substr(0,5)){var s=new XMLHttpRequest;if(s.open("GET",f.url,!1),s.send(null),200===s.status){var t=s.responseText||"";t=t.slice(-300);var u=t.match(/\/\/# sourceMappingURL=(.*)$/);if(u){var v=u[1];"~"===v.charAt(0)&&(v=e()+v.slice(1)),f.url=v.slice(0,-4)}}}n.push(f)}return n.length?{name:a.name, +message:a.message,url:d(),stack:n}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=j),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,e){for(var h,i,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==f&&o!==g.report){if(i={url:null,func:j,line:null,column:null},o.name?i.func=o.name:(h=k.exec(o.toString()))&&(i.func=h[1]),"undefined"==typeof i.func)try{i.func=h.input.substring(0,h.input.indexOf("{"))}catch(p){}m[""+o]?n=!0:m[""+o]=!0,l.push(i)}e&&l.splice(0,e);var q={name:a.name,message:a.message,url:d(),stack:l};return b(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),q}function f(b,e){var f=null;e=null==e?0:+e;try{if(f=a(b))return f}catch(h){if(g.debug)throw h}try{if(f=c(b,e+1))return f}catch(h){if(g.debug)throw h}return{name:b.name,message:b.message,url:d()}}return f.augmentStackTraceWithInitialElement=b,f.computeStackTraceFromStackProp=a,f}(),b.exports=g}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{8:8}],10:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}],11:[function(a,b,c){function d(a,b){var c=(65535&a)+(65535&b),d=(a>>16)+(b>>16)+(c>>16);return d<<16|65535&c}function e(a,b){return a<>>32-b}function f(a,b,c,f,g,h){return d(e(d(d(b,a),d(f,h)),g),c)}function g(a,b,c,d,e,g,h){return f(b&c|~b&d,a,b,e,g,h)}function h(a,b,c,d,e,g,h){return f(b&d|c&~d,a,b,e,g,h)}function i(a,b,c,d,e,g,h){return f(b^c^d,a,b,e,g,h)}function j(a,b,c,d,e,g,h){return f(c^(b|~d),a,b,e,g,h)}function k(a,b){a[b>>5]|=128<>>9<<4)+14]=b;var c,e,f,k,l,m=1732584193,n=-271733879,o=-1732584194,p=271733878;for(c=0;c>5]>>>b%32&255);return c}function m(a){var b,c=[];for(c[(a.length>>2)-1]=void 0,b=0;b>5]|=(255&a.charCodeAt(b/8))<16&&(e=k(e,8*a.length)),c=0;c<16;c+=1)f[c]=909522486^e[c],g[c]=1549556828^e[c];return d=k(f.concat(m(b)),512+8*b.length),l(k(g.concat(d),640))}function p(a){var b,c,d="0123456789abcdef",e="";for(c=0;c>>4&15)+d.charAt(15&b);return e}function q(a){return unescape(encodeURIComponent(a))}function r(a){return n(q(a))}function s(a){return p(r(a))}function t(a,b){return o(q(a),q(b))}function u(a,b){return p(t(a,b))}function v(a,b,c){return b?c?t(b,a):u(b,a):c?r(a):s(a)}b.exports=v},{}]},{},[7,1,2,3])(7)}); +//# sourceMappingURL=raven.min.js.map \ No newline at end of file diff --git a/packages/raven-js/dist/ember,require,vue/raven.min.js.map b/packages/raven-js/dist/ember,require,vue/raven.min.js.map new file mode 100644 index 000000000000..04705f570c8a --- /dev/null +++ b/packages/raven-js/dist/ember,require,vue/raven.min.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","emberPlugin","Ember","_oldOnError","onerror","error","captureException","RSVP","on","reason","extra","context","captureMessage","addPlugin","7","2","requirePlugin","wrap","deep","3","formatComponentName","vm","$root","name","_isVue","$options","_componentTag","__file","vuePlugin","Vue","config","errorHandler","info","metaData","Object","prototype","toString","componentName","propsData","lifecycleHook","4","RavenConfigError","message","constructor","5","utils","wrapMethod","console","level","callback","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","msg","safeJoin","data","logger","Function","apply","8","6","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","sanitizeKeys","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isErrorEvent","isDOMError","isDOMException","isError","isObject","isPlainObject","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","sanitize","wrapConsoleMethod","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","dsn","options","_logDebug","globalOptions","key","value","setDSN","push","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","substr","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","func","undefined","_before","wrapped","_ignoreNextOnError","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","T","event","unhandledPromiseRejection","B","_promiseRejectionHandler","bind","addEventListener","P","removeEventListener","ex","trimHeadFrames","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","U","currentOptions","exKeys","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","setDataCallback","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","L","setTimeout","$","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","_","evtName","_keypressTimeout","target","category","ba","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","ca","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","C","_originalFunctionToString","Q","D","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","type","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","E","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","R","builtin","S","F","installer","concat","G","str","m","exec","allowSecretKey","J","port","A","V","stackInfo","_triggerEvent","_processException","lineno","X","frame","_normalizeFrame","in_app","ga","stackInfoUrl","normalized","filename","line","colno","column","function","fa","prefixedMessage","exception","values","transaction","ha","request","Referer","breadcrumbs","_trimBreadcrumbs","ia","urlProp","urlProps","ja","httpData","userAgent","User-Agent","referrer","y","_backoffDuration","_backoffStart","ma","na","current","last","oa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Y","baseData","project","platform","_getHttpData","serverName","server_name","_sanitizeData","forEach","random","_sendProcessedPayload","pa","ra","qa","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","sa","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","open","setRequestHeader","send","ta","hash","evaluated","z","Z","setUser","setReleaseContext","10","11","9","RavenConstructor","_Raven","noConflict","Client","what","supportsErrorEvent","ErrorEvent","supportsDOMError","DOMError","supportsDOMException","DOMException","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","wrappedCallback","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","sanitizeMask","safeInput","o_O","getLocationHref","getLocationOrigin","origin","hostname","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","responseText","sourceMaps","sourceMapAddress","charAt","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","string","raw"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file diff --git a/packages/raven-js/dist/ember,require/raven.js b/packages/raven-js/dist/ember,require/raven.js new file mode 100644 index 000000000000..850e96e9d9c2 --- /dev/null +++ b/packages/raven-js/dist/ember,require/raven.js @@ -0,0 +1,4060 @@ +/*! Raven.js 3.25.2 (30b6d4e) | github.com/getsentry/raven-js */ + +/* + * Includes TraceKit + * https://github.com/getsentry/TraceKit + * + * Copyright 2018 Matt Robenolt and other contributors + * Released under the BSD license + * https://github.com/getsentry/raven-js/blob/master/LICENSE + * + */ + +(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.Raven = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o captureException(string) => captureMessage(string) + if (initialCall && initialCall.func === 'Raven.captureException') { + initialCall = stack.stack[2]; + } + + var fileurl = (initialCall && initialCall.url) || ''; + + if ( + !!this._globalOptions.ignoreUrls.test && + this._globalOptions.ignoreUrls.test(fileurl) + ) { + return; + } + + if ( + !!this._globalOptions.whitelistUrls.test && + !this._globalOptions.whitelistUrls.test(fileurl) + ) { + return; + } + + if (this._globalOptions.stacktrace || (options && options.stacktrace)) { + // fingerprint on msg, not stack trace (legacy behavior, could be revisited) + data.fingerprint = data.fingerprint == null ? msg : data.fingerprint; + + options = objectMerge( + { + trimHeadFrames: 0 + }, + options + ); + // Since we know this is a synthetic trace, the top frame (this function call) + // MUST be from Raven.js, so mark it for trimming + // We add to the trim counter so that callers can choose to trim extra frames, such + // as utility functions. + options.trimHeadFrames += 1; + + var frames = this._prepareFrames(stack, options); + data.stacktrace = { + // Sentry expects frames oldest to newest + frames: frames.reverse() + }; + } + + // Make sure that fingerprint is always wrapped in an array + if (data.fingerprint) { + data.fingerprint = isArray(data.fingerprint) + ? data.fingerprint + : [data.fingerprint]; + } + + // Fire away! + this._send(data); + + return this; + }, + + captureBreadcrumb: function(obj) { + var crumb = objectMerge( + { + timestamp: now() / 1000 + }, + obj + ); + + if (isFunction(this._globalOptions.breadcrumbCallback)) { + var result = this._globalOptions.breadcrumbCallback(crumb); + + if (isObject(result) && !isEmptyObject(result)) { + crumb = result; + } else if (result === false) { + return this; + } + } + + this._breadcrumbs.push(crumb); + if (this._breadcrumbs.length > this._globalOptions.maxBreadcrumbs) { + this._breadcrumbs.shift(); + } + return this; + }, + + addPlugin: function(plugin /*arg1, arg2, ... argN*/) { + var pluginArgs = [].slice.call(arguments, 1); + + this._plugins.push([plugin, pluginArgs]); + if (this._isRavenInstalled) { + this._drainPlugins(); + } + + return this; + }, + + /* + * Set/clear a user to be sent along with the payload. + * + * @param {object} user An object representing user data [optional] + * @return {Raven} + */ + setUserContext: function(user) { + // Intentionally do not merge here since that's an unexpected behavior. + this._globalContext.user = user; + + return this; + }, + + /* + * Merge extra attributes to be sent along with the payload. + * + * @param {object} extra An object representing extra data [optional] + * @return {Raven} + */ + setExtraContext: function(extra) { + this._mergeContext('extra', extra); + + return this; + }, + + /* + * Merge tags to be sent along with the payload. + * + * @param {object} tags An object representing tags [optional] + * @return {Raven} + */ + setTagsContext: function(tags) { + this._mergeContext('tags', tags); + + return this; + }, + + /* + * Clear all of the context. + * + * @return {Raven} + */ + clearContext: function() { + this._globalContext = {}; + + return this; + }, + + /* + * Get a copy of the current context. This cannot be mutated. + * + * @return {object} copy of context + */ + getContext: function() { + // lol javascript + return JSON.parse(stringify(this._globalContext)); + }, + + /* + * Set environment of application + * + * @param {string} environment Typically something like 'production'. + * @return {Raven} + */ + setEnvironment: function(environment) { + this._globalOptions.environment = environment; + + return this; + }, + + /* + * Set release version of application + * + * @param {string} release Typically something like a git SHA to identify version + * @return {Raven} + */ + setRelease: function(release) { + this._globalOptions.release = release; + + return this; + }, + + /* + * Set the dataCallback option + * + * @param {function} callback The callback to run which allows the + * data blob to be mutated before sending + * @return {Raven} + */ + setDataCallback: function(callback) { + var original = this._globalOptions.dataCallback; + this._globalOptions.dataCallback = keepOriginalCallback(original, callback); + return this; + }, + + /* + * Set the breadcrumbCallback option + * + * @param {function} callback The callback to run which allows filtering + * or mutating breadcrumbs + * @return {Raven} + */ + setBreadcrumbCallback: function(callback) { + var original = this._globalOptions.breadcrumbCallback; + this._globalOptions.breadcrumbCallback = keepOriginalCallback(original, callback); + return this; + }, + + /* + * Set the shouldSendCallback option + * + * @param {function} callback The callback to run which allows + * introspecting the blob before sending + * @return {Raven} + */ + setShouldSendCallback: function(callback) { + var original = this._globalOptions.shouldSendCallback; + this._globalOptions.shouldSendCallback = keepOriginalCallback(original, callback); + return this; + }, + + /** + * Override the default HTTP transport mechanism that transmits data + * to the Sentry server. + * + * @param {function} transport Function invoked instead of the default + * `makeRequest` handler. + * + * @return {Raven} + */ + setTransport: function(transport) { + this._globalOptions.transport = transport; + + return this; + }, + + /* + * Get the latest raw exception that was captured by Raven. + * + * @return {error} + */ + lastException: function() { + return this._lastCapturedException; + }, + + /* + * Get the last event id + * + * @return {string} + */ + lastEventId: function() { + return this._lastEventId; + }, + + /* + * Determine if Raven is setup and ready to go. + * + * @return {boolean} + */ + isSetup: function() { + if (!this._hasJSON) return false; // needs JSON support + if (!this._globalServer) { + if (!this.ravenNotConfiguredError) { + this.ravenNotConfiguredError = true; + this._logDebug('error', 'Error: Raven has not been configured.'); + } + return false; + } + return true; + }, + + afterLoad: function() { + // TODO: remove window dependence? + + // Attempt to initialize Raven on load + var RavenConfig = _window.RavenConfig; + if (RavenConfig) { + this.config(RavenConfig.dsn, RavenConfig.config).install(); + } + }, + + showReportDialog: function(options) { + if ( + !_document // doesn't work without a document (React native) + ) + return; + + options = options || {}; + + var lastEventId = options.eventId || this.lastEventId(); + if (!lastEventId) { + throw new RavenConfigError('Missing eventId'); + } + + var dsn = options.dsn || this._dsn; + if (!dsn) { + throw new RavenConfigError('Missing DSN'); + } + + var encode = encodeURIComponent; + var qs = ''; + qs += '?eventId=' + encode(lastEventId); + qs += '&dsn=' + encode(dsn); + + var user = options.user || this._globalContext.user; + if (user) { + if (user.name) qs += '&name=' + encode(user.name); + if (user.email) qs += '&email=' + encode(user.email); + } + + var globalServer = this._getGlobalServer(this._parseDSN(dsn)); + + var script = _document.createElement('script'); + script.async = true; + script.src = globalServer + '/api/embed/error-page/' + qs; + (_document.head || _document.body).appendChild(script); + }, + + /**** Private functions ****/ + _ignoreNextOnError: function() { + var self = this; + this._ignoreOnError += 1; + setTimeout(function() { + // onerror should trigger before setTimeout + self._ignoreOnError -= 1; + }); + }, + + _triggerEvent: function(eventType, options) { + // NOTE: `event` is a native browser thing, so let's avoid conflicting wiht it + var evt, key; + + if (!this._hasDocument) return; + + options = options || {}; + + eventType = 'raven' + eventType.substr(0, 1).toUpperCase() + eventType.substr(1); + + if (_document.createEvent) { + evt = _document.createEvent('HTMLEvents'); + evt.initEvent(eventType, true, true); + } else { + evt = _document.createEventObject(); + evt.eventType = eventType; + } + + for (key in options) + if (hasKey(options, key)) { + evt[key] = options[key]; + } + + if (_document.createEvent) { + // IE9 if standards + _document.dispatchEvent(evt); + } else { + // IE8 regardless of Quirks or Standards + // IE9 if quirks + try { + _document.fireEvent('on' + evt.eventType.toLowerCase(), evt); + } catch (e) { + // Do nothing + } + } + }, + + /** + * Wraps addEventListener to capture UI breadcrumbs + * @param evtName the event name (e.g. "click") + * @returns {Function} + * @private + */ + _breadcrumbEventHandler: function(evtName) { + var self = this; + return function(evt) { + // reset keypress timeout; e.g. triggering a 'click' after + // a 'keypress' will reset the keypress debounce so that a new + // set of keypresses can be recorded + self._keypressTimeout = null; + + // It's possible this handler might trigger multiple times for the same + // event (e.g. event propagation through node ancestors). Ignore if we've + // already captured the event. + if (self._lastCapturedEvent === evt) return; + + self._lastCapturedEvent = evt; + + // try/catch both: + // - accessing evt.target (see getsentry/raven-js#838, #768) + // - `htmlTreeAsString` because it's complex, and just accessing the DOM incorrectly + // can throw an exception in some circumstances. + var target; + try { + target = htmlTreeAsString(evt.target); + } catch (e) { + target = ''; + } + + self.captureBreadcrumb({ + category: 'ui.' + evtName, // e.g. ui.click, ui.input + message: target + }); + }; + }, + + /** + * Wraps addEventListener to capture keypress UI events + * @returns {Function} + * @private + */ + _keypressEventHandler: function() { + var self = this, + debounceDuration = 1000; // milliseconds + + // TODO: if somehow user switches keypress target before + // debounce timeout is triggered, we will only capture + // a single breadcrumb from the FIRST target (acceptable?) + return function(evt) { + var target; + try { + target = evt.target; + } catch (e) { + // just accessing event properties can throw an exception in some rare circumstances + // see: https://github.com/getsentry/raven-js/issues/838 + return; + } + var tagName = target && target.tagName; + + // only consider keypress events on actual input elements + // this will disregard keypresses targeting body (e.g. tabbing + // through elements, hotkeys, etc) + if ( + !tagName || + (tagName !== 'INPUT' && tagName !== 'TEXTAREA' && !target.isContentEditable) + ) + return; + + // record first keypress in a series, but ignore subsequent + // keypresses until debounce clears + var timeout = self._keypressTimeout; + if (!timeout) { + self._breadcrumbEventHandler('input')(evt); + } + clearTimeout(timeout); + self._keypressTimeout = setTimeout(function() { + self._keypressTimeout = null; + }, debounceDuration); + }; + }, + + /** + * Captures a breadcrumb of type "navigation", normalizing input URLs + * @param to the originating URL + * @param from the target URL + * @private + */ + _captureUrlChange: function(from, to) { + var parsedLoc = parseUrl(this._location.href); + var parsedTo = parseUrl(to); + var parsedFrom = parseUrl(from); + + // because onpopstate only tells you the "new" (to) value of location.href, and + // not the previous (from) value, we need to track the value of the current URL + // state ourselves + this._lastHref = to; + + // Use only the path component of the URL if the URL matches the current + // document (almost all the time when using pushState) + if (parsedLoc.protocol === parsedTo.protocol && parsedLoc.host === parsedTo.host) + to = parsedTo.relative; + if (parsedLoc.protocol === parsedFrom.protocol && parsedLoc.host === parsedFrom.host) + from = parsedFrom.relative; + + this.captureBreadcrumb({ + category: 'navigation', + data: { + to: to, + from: from + } + }); + }, + + _patchFunctionToString: function() { + var self = this; + self._originalFunctionToString = Function.prototype.toString; + // eslint-disable-next-line no-extend-native + Function.prototype.toString = function() { + if (typeof this === 'function' && this.__raven__) { + return self._originalFunctionToString.apply(this.__orig__, arguments); + } + return self._originalFunctionToString.apply(this, arguments); + }; + }, + + _unpatchFunctionToString: function() { + if (this._originalFunctionToString) { + // eslint-disable-next-line no-extend-native + Function.prototype.toString = this._originalFunctionToString; + } + }, + + /** + * Wrap timer functions and event targets to catch errors and provide + * better metadata. + */ + _instrumentTryCatch: function() { + var self = this; + + var wrappedBuiltIns = self._wrappedBuiltIns; + + function wrapTimeFn(orig) { + return function(fn, t) { + // preserve arity + // Make a copy of the arguments to prevent deoptimization + // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments + var args = new Array(arguments.length); + for (var i = 0; i < args.length; ++i) { + args[i] = arguments[i]; + } + var originalCallback = args[0]; + if (isFunction(originalCallback)) { + args[0] = self.wrap(originalCallback); + } + + // IE < 9 doesn't support .call/.apply on setInterval/setTimeout, but it + // also supports only two arguments and doesn't care what this is, so we + // can just call the original function directly. + if (orig.apply) { + return orig.apply(this, args); + } else { + return orig(args[0], args[1]); + } + }; + } + + var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; + + function wrapEventTarget(global) { + var proto = _window[global] && _window[global].prototype; + if (proto && proto.hasOwnProperty && proto.hasOwnProperty('addEventListener')) { + fill( + proto, + 'addEventListener', + function(orig) { + return function(evtName, fn, capture, secure) { + // preserve arity + try { + if (fn && fn.handleEvent) { + fn.handleEvent = self.wrap(fn.handleEvent); + } + } catch (err) { + // can sometimes get 'Permission denied to access property "handle Event' + } + + // More breadcrumb DOM capture ... done here and not in `_instrumentBreadcrumbs` + // so that we don't have more than one wrapper function + var before, clickHandler, keypressHandler; + + if ( + autoBreadcrumbs && + autoBreadcrumbs.dom && + (global === 'EventTarget' || global === 'Node') + ) { + // NOTE: generating multiple handlers per addEventListener invocation, should + // revisit and verify we can just use one (almost certainly) + clickHandler = self._breadcrumbEventHandler('click'); + keypressHandler = self._keypressEventHandler(); + before = function(evt) { + // need to intercept every DOM event in `before` argument, in case that + // same wrapped method is re-used for different events (e.g. mousemove THEN click) + // see #724 + if (!evt) return; + + var eventType; + try { + eventType = evt.type; + } catch (e) { + // just accessing event properties can throw an exception in some rare circumstances + // see: https://github.com/getsentry/raven-js/issues/838 + return; + } + if (eventType === 'click') return clickHandler(evt); + else if (eventType === 'keypress') return keypressHandler(evt); + }; + } + return orig.call( + this, + evtName, + self.wrap(fn, undefined, before), + capture, + secure + ); + }; + }, + wrappedBuiltIns + ); + fill( + proto, + 'removeEventListener', + function(orig) { + return function(evt, fn, capture, secure) { + try { + fn = fn && (fn.__raven_wrapper__ ? fn.__raven_wrapper__ : fn); + } catch (e) { + // ignore, accessing __raven_wrapper__ will throw in some Selenium environments + } + return orig.call(this, evt, fn, capture, secure); + }; + }, + wrappedBuiltIns + ); + } + } + + fill(_window, 'setTimeout', wrapTimeFn, wrappedBuiltIns); + fill(_window, 'setInterval', wrapTimeFn, wrappedBuiltIns); + if (_window.requestAnimationFrame) { + fill( + _window, + 'requestAnimationFrame', + function(orig) { + return function(cb) { + return orig(self.wrap(cb)); + }; + }, + wrappedBuiltIns + ); + } + + // event targets borrowed from bugsnag-js: + // https://github.com/bugsnag/bugsnag-js/blob/master/src/bugsnag.js#L666 + var eventTargets = [ + 'EventTarget', + 'Window', + 'Node', + 'ApplicationCache', + 'AudioTrackList', + 'ChannelMergerNode', + 'CryptoOperation', + 'EventSource', + 'FileReader', + 'HTMLUnknownElement', + 'IDBDatabase', + 'IDBRequest', + 'IDBTransaction', + 'KeyOperation', + 'MediaController', + 'MessagePort', + 'ModalWindow', + 'Notification', + 'SVGElementInstance', + 'Screen', + 'TextTrack', + 'TextTrackCue', + 'TextTrackList', + 'WebSocket', + 'WebSocketWorker', + 'Worker', + 'XMLHttpRequest', + 'XMLHttpRequestEventTarget', + 'XMLHttpRequestUpload' + ]; + for (var i = 0; i < eventTargets.length; i++) { + wrapEventTarget(eventTargets[i]); + } + }, + + /** + * Instrument browser built-ins w/ breadcrumb capturing + * - XMLHttpRequests + * - DOM interactions (click/typing) + * - window.location changes + * - console + * + * Can be disabled or individually configured via the `autoBreadcrumbs` config option + */ + _instrumentBreadcrumbs: function() { + var self = this; + var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; + + var wrappedBuiltIns = self._wrappedBuiltIns; + + function wrapProp(prop, xhr) { + if (prop in xhr && isFunction(xhr[prop])) { + fill(xhr, prop, function(orig) { + return self.wrap(orig); + }); // intentionally don't track filled methods on XHR instances + } + } + + if (autoBreadcrumbs.xhr && 'XMLHttpRequest' in _window) { + var xhrproto = _window.XMLHttpRequest && _window.XMLHttpRequest.prototype; + fill( + xhrproto, + 'open', + function(origOpen) { + return function(method, url) { + // preserve arity + + // if Sentry key appears in URL, don't capture + if (isString(url) && url.indexOf(self._globalKey) === -1) { + this.__raven_xhr = { + method: method, + url: url, + status_code: null + }; + } + + return origOpen.apply(this, arguments); + }; + }, + wrappedBuiltIns + ); + + fill( + xhrproto, + 'send', + function(origSend) { + return function() { + // preserve arity + var xhr = this; + + function onreadystatechangeHandler() { + if (xhr.__raven_xhr && xhr.readyState === 4) { + try { + // touching statusCode in some platforms throws + // an exception + xhr.__raven_xhr.status_code = xhr.status; + } catch (e) { + /* do nothing */ + } + + self.captureBreadcrumb({ + type: 'http', + category: 'xhr', + data: xhr.__raven_xhr + }); + } + } + + var props = ['onload', 'onerror', 'onprogress']; + for (var j = 0; j < props.length; j++) { + wrapProp(props[j], xhr); + } + + if ('onreadystatechange' in xhr && isFunction(xhr.onreadystatechange)) { + fill( + xhr, + 'onreadystatechange', + function(orig) { + return self.wrap(orig, undefined, onreadystatechangeHandler); + } /* intentionally don't track this instrumentation */ + ); + } else { + // if onreadystatechange wasn't actually set by the page on this xhr, we + // are free to set our own and capture the breadcrumb + xhr.onreadystatechange = onreadystatechangeHandler; + } + + return origSend.apply(this, arguments); + }; + }, + wrappedBuiltIns + ); + } + + if (autoBreadcrumbs.xhr && supportsFetch()) { + fill( + _window, + 'fetch', + function(origFetch) { + return function() { + // preserve arity + // Make a copy of the arguments to prevent deoptimization + // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments + var args = new Array(arguments.length); + for (var i = 0; i < args.length; ++i) { + args[i] = arguments[i]; + } + + var fetchInput = args[0]; + var method = 'GET'; + var url; + + if (typeof fetchInput === 'string') { + url = fetchInput; + } else if ('Request' in _window && fetchInput instanceof _window.Request) { + url = fetchInput.url; + if (fetchInput.method) { + method = fetchInput.method; + } + } else { + url = '' + fetchInput; + } + + // if Sentry key appears in URL, don't capture, as it's our own request + if (url.indexOf(self._globalKey) !== -1) { + return origFetch.apply(this, args); + } + + if (args[1] && args[1].method) { + method = args[1].method; + } + + var fetchData = { + method: method, + url: url, + status_code: null + }; + + return origFetch + .apply(this, args) + .then(function(response) { + fetchData.status_code = response.status; + + self.captureBreadcrumb({ + type: 'http', + category: 'fetch', + data: fetchData + }); + + return response; + }) + ['catch'](function(err) { + // if there is an error performing the request + self.captureBreadcrumb({ + type: 'http', + category: 'fetch', + data: fetchData, + level: 'error' + }); + + throw err; + }); + }; + }, + wrappedBuiltIns + ); + } + + // Capture breadcrumbs from any click that is unhandled / bubbled up all the way + // to the document. Do this before we instrument addEventListener. + if (autoBreadcrumbs.dom && this._hasDocument) { + if (_document.addEventListener) { + _document.addEventListener('click', self._breadcrumbEventHandler('click'), false); + _document.addEventListener('keypress', self._keypressEventHandler(), false); + } else if (_document.attachEvent) { + // IE8 Compatibility + _document.attachEvent('onclick', self._breadcrumbEventHandler('click')); + _document.attachEvent('onkeypress', self._keypressEventHandler()); + } + } + + // record navigation (URL) changes + // NOTE: in Chrome App environment, touching history.pushState, *even inside + // a try/catch block*, will cause Chrome to output an error to console.error + // borrowed from: https://github.com/angular/angular.js/pull/13945/files + var chrome = _window.chrome; + var isChromePackagedApp = chrome && chrome.app && chrome.app.runtime; + var hasPushAndReplaceState = + !isChromePackagedApp && + _window.history && + _window.history.pushState && + _window.history.replaceState; + if (autoBreadcrumbs.location && hasPushAndReplaceState) { + // TODO: remove onpopstate handler on uninstall() + var oldOnPopState = _window.onpopstate; + _window.onpopstate = function() { + var currentHref = self._location.href; + self._captureUrlChange(self._lastHref, currentHref); + + if (oldOnPopState) { + return oldOnPopState.apply(this, arguments); + } + }; + + var historyReplacementFunction = function(origHistFunction) { + // note history.pushState.length is 0; intentionally not declaring + // params to preserve 0 arity + return function(/* state, title, url */) { + var url = arguments.length > 2 ? arguments[2] : undefined; + + // url argument is optional + if (url) { + // coerce to string (this is what pushState does) + self._captureUrlChange(self._lastHref, url + ''); + } + + return origHistFunction.apply(this, arguments); + }; + }; + + fill(_window.history, 'pushState', historyReplacementFunction, wrappedBuiltIns); + fill(_window.history, 'replaceState', historyReplacementFunction, wrappedBuiltIns); + } + + if (autoBreadcrumbs.console && 'console' in _window && console.log) { + // console + var consoleMethodCallback = function(msg, data) { + self.captureBreadcrumb({ + message: msg, + level: data.level, + category: 'console' + }); + }; + + each(['debug', 'info', 'warn', 'error', 'log'], function(_, level) { + wrapConsoleMethod(console, level, consoleMethodCallback); + }); + } + }, + + _restoreBuiltIns: function() { + // restore any wrapped builtins + var builtin; + while (this._wrappedBuiltIns.length) { + builtin = this._wrappedBuiltIns.shift(); + + var obj = builtin[0], + name = builtin[1], + orig = builtin[2]; + + obj[name] = orig; + } + }, + + _restoreConsole: function() { + // eslint-disable-next-line guard-for-in + for (var method in this._originalConsoleMethods) { + this._originalConsole[method] = this._originalConsoleMethods[method]; + } + }, + + _drainPlugins: function() { + var self = this; + + // FIX ME TODO + each(this._plugins, function(_, plugin) { + var installer = plugin[0]; + var args = plugin[1]; + installer.apply(self, [self].concat(args)); + }); + }, + + _parseDSN: function(str) { + var m = dsnPattern.exec(str), + dsn = {}, + i = 7; + + try { + while (i--) dsn[dsnKeys[i]] = m[i] || ''; + } catch (e) { + throw new RavenConfigError('Invalid DSN: ' + str); + } + + if (dsn.pass && !this._globalOptions.allowSecretKey) { + throw new RavenConfigError( + 'Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key' + ); + } + + return dsn; + }, + + _getGlobalServer: function(uri) { + // assemble the endpoint from the uri pieces + var globalServer = '//' + uri.host + (uri.port ? ':' + uri.port : ''); + + if (uri.protocol) { + globalServer = uri.protocol + ':' + globalServer; + } + return globalServer; + }, + + _handleOnErrorStackInfo: function() { + // if we are intentionally ignoring errors via onerror, bail out + if (!this._ignoreOnError) { + this._handleStackInfo.apply(this, arguments); + } + }, + + _handleStackInfo: function(stackInfo, options) { + var frames = this._prepareFrames(stackInfo, options); + + this._triggerEvent('handle', { + stackInfo: stackInfo, + options: options + }); + + this._processException( + stackInfo.name, + stackInfo.message, + stackInfo.url, + stackInfo.lineno, + frames, + options + ); + }, + + _prepareFrames: function(stackInfo, options) { + var self = this; + var frames = []; + if (stackInfo.stack && stackInfo.stack.length) { + each(stackInfo.stack, function(i, stack) { + var frame = self._normalizeFrame(stack, stackInfo.url); + if (frame) { + frames.push(frame); + } + }); + + // e.g. frames captured via captureMessage throw + if (options && options.trimHeadFrames) { + for (var j = 0; j < options.trimHeadFrames && j < frames.length; j++) { + frames[j].in_app = false; + } + } + } + frames = frames.slice(0, this._globalOptions.stackTraceLimit); + return frames; + }, + + _normalizeFrame: function(frame, stackInfoUrl) { + // normalize the frames data + var normalized = { + filename: frame.url, + lineno: frame.line, + colno: frame.column, + function: frame.func || '?' + }; + + // Case when we don't have any information about the error + // E.g. throwing a string or raw object, instead of an `Error` in Firefox + // Generating synthetic error doesn't add any value here + // + // We should probably somehow let a user know that they should fix their code + if (!frame.url) { + normalized.filename = stackInfoUrl; // fallback to whole stacks url from onerror handler + } + + normalized.in_app = !// determine if an exception came from outside of our app + // first we check the global includePaths list. + ( + (!!this._globalOptions.includePaths.test && + !this._globalOptions.includePaths.test(normalized.filename)) || + // Now we check for fun, if the function name is Raven or TraceKit + /(Raven|TraceKit)\./.test(normalized['function']) || + // finally, we do a last ditch effort and check for raven.min.js + /raven\.(min\.)?js$/.test(normalized.filename) + ); + + return normalized; + }, + + _processException: function(type, message, fileurl, lineno, frames, options) { + var prefixedMessage = (type ? type + ': ' : '') + (message || ''); + if ( + !!this._globalOptions.ignoreErrors.test && + (this._globalOptions.ignoreErrors.test(message) || + this._globalOptions.ignoreErrors.test(prefixedMessage)) + ) { + return; + } + + var stacktrace; + + if (frames && frames.length) { + fileurl = frames[0].filename || fileurl; + // Sentry expects frames oldest to newest + // and JS sends them as newest to oldest + frames.reverse(); + stacktrace = {frames: frames}; + } else if (fileurl) { + stacktrace = { + frames: [ + { + filename: fileurl, + lineno: lineno, + in_app: true + } + ] + }; + } + + if ( + !!this._globalOptions.ignoreUrls.test && + this._globalOptions.ignoreUrls.test(fileurl) + ) { + return; + } + + if ( + !!this._globalOptions.whitelistUrls.test && + !this._globalOptions.whitelistUrls.test(fileurl) + ) { + return; + } + + var data = objectMerge( + { + // sentry.interfaces.Exception + exception: { + values: [ + { + type: type, + value: message, + stacktrace: stacktrace + } + ] + }, + transaction: fileurl + }, + options + ); + + // Fire away! + this._send(data); + }, + + _trimPacket: function(data) { + // For now, we only want to truncate the two different messages + // but this could/should be expanded to just trim everything + var max = this._globalOptions.maxMessageLength; + if (data.message) { + data.message = truncate(data.message, max); + } + if (data.exception) { + var exception = data.exception.values[0]; + exception.value = truncate(exception.value, max); + } + + var request = data.request; + if (request) { + if (request.url) { + request.url = truncate(request.url, this._globalOptions.maxUrlLength); + } + if (request.Referer) { + request.Referer = truncate(request.Referer, this._globalOptions.maxUrlLength); + } + } + + if (data.breadcrumbs && data.breadcrumbs.values) + this._trimBreadcrumbs(data.breadcrumbs); + + return data; + }, + + /** + * Truncate breadcrumb values (right now just URLs) + */ + _trimBreadcrumbs: function(breadcrumbs) { + // known breadcrumb properties with urls + // TODO: also consider arbitrary prop values that start with (https?)?:// + var urlProps = ['to', 'from', 'url'], + urlProp, + crumb, + data; + + for (var i = 0; i < breadcrumbs.values.length; ++i) { + crumb = breadcrumbs.values[i]; + if ( + !crumb.hasOwnProperty('data') || + !isObject(crumb.data) || + objectFrozen(crumb.data) + ) + continue; + + data = objectMerge({}, crumb.data); + for (var j = 0; j < urlProps.length; ++j) { + urlProp = urlProps[j]; + if (data.hasOwnProperty(urlProp) && data[urlProp]) { + data[urlProp] = truncate(data[urlProp], this._globalOptions.maxUrlLength); + } + } + breadcrumbs.values[i].data = data; + } + }, + + _getHttpData: function() { + if (!this._hasNavigator && !this._hasDocument) return; + var httpData = {}; + + if (this._hasNavigator && _navigator.userAgent) { + httpData.headers = { + 'User-Agent': _navigator.userAgent + }; + } + + // Check in `window` instead of `document`, as we may be in ServiceWorker environment + if (_window.location && _window.location.href) { + httpData.url = _window.location.href; + } + + if (this._hasDocument && _document.referrer) { + if (!httpData.headers) httpData.headers = {}; + httpData.headers.Referer = _document.referrer; + } + + return httpData; + }, + + _resetBackoff: function() { + this._backoffDuration = 0; + this._backoffStart = null; + }, + + _shouldBackoff: function() { + return this._backoffDuration && now() - this._backoffStart < this._backoffDuration; + }, + + /** + * Returns true if the in-process data payload matches the signature + * of the previously-sent data + * + * NOTE: This has to be done at this level because TraceKit can generate + * data from window.onerror WITHOUT an exception object (IE8, IE9, + * other old browsers). This can take the form of an "exception" + * data object with a single frame (derived from the onerror args). + */ + _isRepeatData: function(current) { + var last = this._lastData; + + if ( + !last || + current.message !== last.message || // defined for captureMessage + current.transaction !== last.transaction // defined for captureException/onerror + ) + return false; + + // Stacktrace interface (i.e. from captureMessage) + if (current.stacktrace || last.stacktrace) { + return isSameStacktrace(current.stacktrace, last.stacktrace); + } else if (current.exception || last.exception) { + // Exception interface (i.e. from captureException/onerror) + return isSameException(current.exception, last.exception); + } + + return true; + }, + + _setBackoffState: function(request) { + // If we are already in a backoff state, don't change anything + if (this._shouldBackoff()) { + return; + } + + var status = request.status; + + // 400 - project_id doesn't exist or some other fatal + // 401 - invalid/revoked dsn + // 429 - too many requests + if (!(status === 400 || status === 401 || status === 429)) return; + + var retry; + try { + // If Retry-After is not in Access-Control-Expose-Headers, most + // browsers will throw an exception trying to access it + if (supportsFetch()) { + retry = request.headers.get('Retry-After'); + } else { + retry = request.getResponseHeader('Retry-After'); + } + + // Retry-After is returned in seconds + retry = parseInt(retry, 10) * 1000; + } catch (e) { + /* eslint no-empty:0 */ + } + + this._backoffDuration = retry + ? // If Sentry server returned a Retry-After value, use it + retry + : // Otherwise, double the last backoff duration (starts at 1 sec) + this._backoffDuration * 2 || 1000; + + this._backoffStart = now(); + }, + + _send: function(data) { + var globalOptions = this._globalOptions; + + var baseData = { + project: this._globalProject, + logger: globalOptions.logger, + platform: 'javascript' + }, + httpData = this._getHttpData(); + + if (httpData) { + baseData.request = httpData; + } + + // HACK: delete `trimHeadFrames` to prevent from appearing in outbound payload + if (data.trimHeadFrames) delete data.trimHeadFrames; + + data = objectMerge(baseData, data); + + // Merge in the tags and extra separately since objectMerge doesn't handle a deep merge + data.tags = objectMerge(objectMerge({}, this._globalContext.tags), data.tags); + data.extra = objectMerge(objectMerge({}, this._globalContext.extra), data.extra); + + // Send along our own collected metadata with extra + data.extra['session:duration'] = now() - this._startTime; + + if (this._breadcrumbs && this._breadcrumbs.length > 0) { + // intentionally make shallow copy so that additions + // to breadcrumbs aren't accidentally sent in this request + data.breadcrumbs = { + values: [].slice.call(this._breadcrumbs, 0) + }; + } + + if (this._globalContext.user) { + // sentry.interfaces.User + data.user = this._globalContext.user; + } + + // Include the environment if it's defined in globalOptions + if (globalOptions.environment) data.environment = globalOptions.environment; + + // Include the release if it's defined in globalOptions + if (globalOptions.release) data.release = globalOptions.release; + + // Include server_name if it's defined in globalOptions + if (globalOptions.serverName) data.server_name = globalOptions.serverName; + + data = this._sanitizeData(data); + + // Cleanup empty properties before sending them to the server + Object.keys(data).forEach(function(key) { + if (data[key] == null || data[key] === '' || isEmptyObject(data[key])) { + delete data[key]; + } + }); + + if (isFunction(globalOptions.dataCallback)) { + data = globalOptions.dataCallback(data) || data; + } + + // Why?????????? + if (!data || isEmptyObject(data)) { + return; + } + + // Check if the request should be filtered or not + if ( + isFunction(globalOptions.shouldSendCallback) && + !globalOptions.shouldSendCallback(data) + ) { + return; + } + + // Backoff state: Sentry server previously responded w/ an error (e.g. 429 - too many requests), + // so drop requests until "cool-off" period has elapsed. + if (this._shouldBackoff()) { + this._logDebug('warn', 'Raven dropped error due to backoff: ', data); + return; + } + + if (typeof globalOptions.sampleRate === 'number') { + if (Math.random() < globalOptions.sampleRate) { + this._sendProcessedPayload(data); + } + } else { + this._sendProcessedPayload(data); + } + }, + + _sanitizeData: function(data) { + return sanitize(data, this._globalOptions.sanitizeKeys); + }, + + _getUuid: function() { + return uuid4(); + }, + + _sendProcessedPayload: function(data, callback) { + var self = this; + var globalOptions = this._globalOptions; + + if (!this.isSetup()) return; + + // Try and clean up the packet before sending by truncating long values + data = this._trimPacket(data); + + // ideally duplicate error testing should occur *before* dataCallback/shouldSendCallback, + // but this would require copying an un-truncated copy of the data packet, which can be + // arbitrarily deep (extra_data) -- could be worthwhile? will revisit + if (!this._globalOptions.allowDuplicates && this._isRepeatData(data)) { + this._logDebug('warn', 'Raven dropped repeat event: ', data); + return; + } + + // Send along an event_id if not explicitly passed. + // This event_id can be used to reference the error within Sentry itself. + // Set lastEventId after we know the error should actually be sent + this._lastEventId = data.event_id || (data.event_id = this._getUuid()); + + // Store outbound payload after trim + this._lastData = data; + + this._logDebug('debug', 'Raven about to send:', data); + + var auth = { + sentry_version: '7', + sentry_client: 'raven-js/' + this.VERSION, + sentry_key: this._globalKey + }; + + if (this._globalSecret) { + auth.sentry_secret = this._globalSecret; + } + + var exception = data.exception && data.exception.values[0]; + + // only capture 'sentry' breadcrumb is autoBreadcrumbs is truthy + if ( + this._globalOptions.autoBreadcrumbs && + this._globalOptions.autoBreadcrumbs.sentry + ) { + this.captureBreadcrumb({ + category: 'sentry', + message: exception + ? (exception.type ? exception.type + ': ' : '') + exception.value + : data.message, + event_id: data.event_id, + level: data.level || 'error' // presume error unless specified + }); + } + + var url = this._globalEndpoint; + (globalOptions.transport || this._makeRequest).call(this, { + url: url, + auth: auth, + data: data, + options: globalOptions, + onSuccess: function success() { + self._resetBackoff(); + + self._triggerEvent('success', { + data: data, + src: url + }); + callback && callback(); + }, + onError: function failure(error) { + self._logDebug('error', 'Raven transport failed to send: ', error); + + if (error.request) { + self._setBackoffState(error.request); + } + + self._triggerEvent('failure', { + data: data, + src: url + }); + error = error || new Error('Raven send failed (no additional details provided)'); + callback && callback(error); + } + }); + }, + + _makeRequest: function(opts) { + // Auth is intentionally sent as part of query string (NOT as custom HTTP header) to avoid preflight CORS requests + var url = opts.url + '?' + urlencode(opts.auth); + + var evaluatedHeaders = null; + var evaluatedFetchParameters = {}; + + if (opts.options.headers) { + evaluatedHeaders = this._evaluateHash(opts.options.headers); + } + + if (opts.options.fetchParameters) { + evaluatedFetchParameters = this._evaluateHash(opts.options.fetchParameters); + } + + if (supportsFetch()) { + evaluatedFetchParameters.body = stringify(opts.data); + + var defaultFetchOptions = objectMerge({}, this._fetchDefaults); + var fetchOptions = objectMerge(defaultFetchOptions, evaluatedFetchParameters); + + if (evaluatedHeaders) { + fetchOptions.headers = evaluatedHeaders; + } + + return _window + .fetch(url, fetchOptions) + .then(function(response) { + if (response.ok) { + opts.onSuccess && opts.onSuccess(); + } else { + var error = new Error('Sentry error code: ' + response.status); + // It's called request only to keep compatibility with XHR interface + // and not add more redundant checks in setBackoffState method + error.request = response; + opts.onError && opts.onError(error); + } + }) + ['catch'](function() { + opts.onError && + opts.onError(new Error('Sentry error code: network unavailable')); + }); + } + + var request = _window.XMLHttpRequest && new _window.XMLHttpRequest(); + if (!request) return; + + // if browser doesn't support CORS (e.g. IE7), we are out of luck + var hasCORS = 'withCredentials' in request || typeof XDomainRequest !== 'undefined'; + + if (!hasCORS) return; + + if ('withCredentials' in request) { + request.onreadystatechange = function() { + if (request.readyState !== 4) { + return; + } else if (request.status === 200) { + opts.onSuccess && opts.onSuccess(); + } else if (opts.onError) { + var err = new Error('Sentry error code: ' + request.status); + err.request = request; + opts.onError(err); + } + }; + } else { + request = new XDomainRequest(); + // xdomainrequest cannot go http -> https (or vice versa), + // so always use protocol relative + url = url.replace(/^https?:/, ''); + + // onreadystatechange not supported by XDomainRequest + if (opts.onSuccess) { + request.onload = opts.onSuccess; + } + if (opts.onError) { + request.onerror = function() { + var err = new Error('Sentry error code: XDomainRequest'); + err.request = request; + opts.onError(err); + }; + } + } + + request.open('POST', url); + + if (evaluatedHeaders) { + each(evaluatedHeaders, function(key, value) { + request.setRequestHeader(key, value); + }); + } + + request.send(stringify(opts.data)); + }, + + _evaluateHash: function(hash) { + var evaluated = {}; + + for (var key in hash) { + if (hash.hasOwnProperty(key)) { + var value = hash[key]; + evaluated[key] = typeof value === 'function' ? value() : value; + } + } + + return evaluated; + }, + + _logDebug: function(level) { + // We allow `Raven.debug` and `Raven.config(DSN, { debug: true })` to not make backward incompatible API change + if ( + this._originalConsoleMethods[level] && + (this.debug || this._globalOptions.debug) + ) { + // In IE<10 console methods do not have their own 'apply' method + Function.prototype.apply.call( + this._originalConsoleMethods[level], + this._originalConsole, + [].slice.call(arguments, 1) + ); + } + }, + + _mergeContext: function(key, context) { + if (isUndefined(context)) { + delete this._globalContext[key]; + } else { + this._globalContext[key] = objectMerge(this._globalContext[key] || {}, context); + } + } +}; + +// Deprecations +Raven.prototype.setUser = Raven.prototype.setUserContext; +Raven.prototype.setReleaseContext = Raven.prototype.setRelease; + +module.exports = Raven; + +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"10":10,"3":3,"4":4,"7":7,"8":8,"9":9}],6:[function(_dereq_,module,exports){ +(function (global){ +/** + * Enforces a single instance of the Raven client, and the + * main entry point for Raven. If you are a consumer of the + * Raven library, you SHOULD load this file (vs raven.js). + **/ + +var RavenConstructor = _dereq_(5); + +// This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) +var _window = + typeof window !== 'undefined' + ? window + : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; +var _Raven = _window.Raven; + +var Raven = new RavenConstructor(); + +/* + * Allow multiple versions of Raven to be installed. + * Strip Raven from the global context and returns the instance. + * + * @return {Raven} + */ +Raven.noConflict = function() { + _window.Raven = _Raven; + return Raven; +}; + +Raven.afterLoad(); + +module.exports = Raven; + +/** + * DISCLAIMER: + * + * Expose `Client` constructor for cases where user want to track multiple "sub-applications" in one larger app. + * It's not meant to be used by a wide audience, so pleaaase make sure that you know what you're doing before using it. + * Accidentally calling `install` multiple times, may result in an unexpected behavior that's very hard to debug. + * + * It's called `Client' to be in-line with Raven Node implementation. + * + * HOWTO: + * + * import Raven from 'raven-js'; + * + * const someAppReporter = new Raven.Client(); + * const someOtherAppReporter = new Raven.Client(); + * + * someAppReporter.config('__DSN__', { + * ...config goes here + * }); + * + * someOtherAppReporter.config('__OTHER_DSN__', { + * ...config goes here + * }); + * + * someAppReporter.captureMessage(...); + * someAppReporter.captureException(...); + * someAppReporter.captureBreadcrumb(...); + * + * someOtherAppReporter.captureMessage(...); + * someOtherAppReporter.captureException(...); + * someOtherAppReporter.captureBreadcrumb(...); + * + * It should "just work". + */ +module.exports.Client = RavenConstructor; + +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"5":5}],7:[function(_dereq_,module,exports){ +(function (global){ +var stringify = _dereq_(9); + +var _window = + typeof window !== 'undefined' + ? window + : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; + +function isObject(what) { + return typeof what === 'object' && what !== null; +} + +// Yanked from https://git.io/vS8DV re-used under CC0 +// with some tiny modifications +function isError(value) { + switch (Object.prototype.toString.call(value)) { + case '[object Error]': + return true; + case '[object Exception]': + return true; + case '[object DOMException]': + return true; + default: + return value instanceof Error; + } +} + +function isErrorEvent(value) { + return Object.prototype.toString.call(value) === '[object ErrorEvent]'; +} + +function isDOMError(value) { + return Object.prototype.toString.call(value) === '[object DOMError]'; +} + +function isDOMException(value) { + return Object.prototype.toString.call(value) === '[object DOMException]'; +} + +function isUndefined(what) { + return what === void 0; +} + +function isFunction(what) { + return typeof what === 'function'; +} + +function isPlainObject(what) { + return Object.prototype.toString.call(what) === '[object Object]'; +} + +function isString(what) { + return Object.prototype.toString.call(what) === '[object String]'; +} + +function isArray(what) { + return Object.prototype.toString.call(what) === '[object Array]'; +} + +function isEmptyObject(what) { + if (!isPlainObject(what)) return false; + + for (var _ in what) { + if (what.hasOwnProperty(_)) { + return false; + } + } + return true; +} + +function supportsErrorEvent() { + try { + new ErrorEvent(''); // eslint-disable-line no-new + return true; + } catch (e) { + return false; + } +} + +function supportsDOMError() { + try { + new DOMError(''); // eslint-disable-line no-new + return true; + } catch (e) { + return false; + } +} + +function supportsDOMException() { + try { + new DOMException(''); // eslint-disable-line no-new + return true; + } catch (e) { + return false; + } +} + +function supportsFetch() { + if (!('fetch' in _window)) return false; + + try { + new Headers(); // eslint-disable-line no-new + new Request(''); // eslint-disable-line no-new + new Response(); // eslint-disable-line no-new + return true; + } catch (e) { + return false; + } +} + +// Despite all stars in the sky saying that Edge supports old draft syntax, aka 'never', 'always', 'origin' and 'default +// https://caniuse.com/#feat=referrer-policy +// It doesn't. And it throw exception instead of ignoring this parameter... +// REF: https://github.com/getsentry/raven-js/issues/1233 +function supportsReferrerPolicy() { + if (!supportsFetch()) return false; + + try { + // eslint-disable-next-line no-new + new Request('pickleRick', { + referrerPolicy: 'origin' + }); + return true; + } catch (e) { + return false; + } +} + +function supportsPromiseRejectionEvent() { + return typeof PromiseRejectionEvent === 'function'; +} + +function wrappedCallback(callback) { + function dataCallback(data, original) { + var normalizedData = callback(data) || data; + if (original) { + return original(normalizedData) || normalizedData; + } + return normalizedData; + } + + return dataCallback; +} + +function each(obj, callback) { + var i, j; + + if (isUndefined(obj.length)) { + for (i in obj) { + if (hasKey(obj, i)) { + callback.call(null, i, obj[i]); + } + } + } else { + j = obj.length; + if (j) { + for (i = 0; i < j; i++) { + callback.call(null, i, obj[i]); + } + } + } +} + +function objectMerge(obj1, obj2) { + if (!obj2) { + return obj1; + } + each(obj2, function(key, value) { + obj1[key] = value; + }); + return obj1; +} + +/** + * This function is only used for react-native. + * react-native freezes object that have already been sent over the + * js bridge. We need this function in order to check if the object is frozen. + * So it's ok that objectFrozen returns false if Object.isFrozen is not + * supported because it's not relevant for other "platforms". See related issue: + * https://github.com/getsentry/react-native-sentry/issues/57 + */ +function objectFrozen(obj) { + if (!Object.isFrozen) { + return false; + } + return Object.isFrozen(obj); +} + +function truncate(str, max) { + if (typeof max !== 'number') { + throw new Error('2nd argument to `truncate` function should be a number'); + } + if (typeof str !== 'string' || max === 0) { + return str; + } + return str.length <= max ? str : str.substr(0, max) + '\u2026'; +} + +/** + * hasKey, a better form of hasOwnProperty + * Example: hasKey(MainHostObject, property) === true/false + * + * @param {Object} host object to check property + * @param {string} key to check + */ +function hasKey(object, key) { + return Object.prototype.hasOwnProperty.call(object, key); +} + +function joinRegExp(patterns) { + // Combine an array of regular expressions and strings into one large regexp + // Be mad. + var sources = [], + i = 0, + len = patterns.length, + pattern; + + for (; i < len; i++) { + pattern = patterns[i]; + if (isString(pattern)) { + // If it's a string, we need to escape it + // Taken from: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions + sources.push(pattern.replace(/([.*+?^=!:${}()|\[\]\/\\])/g, '\\$1')); + } else if (pattern && pattern.source) { + // If it's a regexp already, we want to extract the source + sources.push(pattern.source); + } + // Intentionally skip other cases + } + return new RegExp(sources.join('|'), 'i'); +} + +function urlencode(o) { + var pairs = []; + each(o, function(key, value) { + pairs.push(encodeURIComponent(key) + '=' + encodeURIComponent(value)); + }); + return pairs.join('&'); +} + +// borrowed from https://tools.ietf.org/html/rfc3986#appendix-B +// intentionally using regex and not href parsing trick because React Native and other +// environments where DOM might not be available +function parseUrl(url) { + if (typeof url !== 'string') return {}; + var match = url.match(/^(([^:\/?#]+):)?(\/\/([^\/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?$/); + + // coerce to undefined values to empty string so we don't get 'undefined' + var query = match[6] || ''; + var fragment = match[8] || ''; + return { + protocol: match[2], + host: match[4], + path: match[5], + relative: match[5] + query + fragment // everything minus origin + }; +} +function uuid4() { + var crypto = _window.crypto || _window.msCrypto; + + if (!isUndefined(crypto) && crypto.getRandomValues) { + // Use window.crypto API if available + // eslint-disable-next-line no-undef + var arr = new Uint16Array(8); + crypto.getRandomValues(arr); + + // set 4 in byte 7 + arr[3] = (arr[3] & 0xfff) | 0x4000; + // set 2 most significant bits of byte 9 to '10' + arr[4] = (arr[4] & 0x3fff) | 0x8000; + + var pad = function(num) { + var v = num.toString(16); + while (v.length < 4) { + v = '0' + v; + } + return v; + }; + + return ( + pad(arr[0]) + + pad(arr[1]) + + pad(arr[2]) + + pad(arr[3]) + + pad(arr[4]) + + pad(arr[5]) + + pad(arr[6]) + + pad(arr[7]) + ); + } else { + // http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/2117523#2117523 + return 'xxxxxxxxxxxx4xxxyxxxxxxxxxxxxxxx'.replace(/[xy]/g, function(c) { + var r = (Math.random() * 16) | 0, + v = c === 'x' ? r : (r & 0x3) | 0x8; + return v.toString(16); + }); + } +} + +/** + * Given a child DOM element, returns a query-selector statement describing that + * and its ancestors + * e.g. [HTMLElement] => body > div > input#foo.btn[name=baz] + * @param elem + * @returns {string} + */ +function htmlTreeAsString(elem) { + /* eslint no-extra-parens:0*/ + var MAX_TRAVERSE_HEIGHT = 5, + MAX_OUTPUT_LEN = 80, + out = [], + height = 0, + len = 0, + separator = ' > ', + sepLength = separator.length, + nextStr; + + while (elem && height++ < MAX_TRAVERSE_HEIGHT) { + nextStr = htmlElementAsString(elem); + // bail out if + // - nextStr is the 'html' element + // - the length of the string that would be created exceeds MAX_OUTPUT_LEN + // (ignore this limit if we are on the first iteration) + if ( + nextStr === 'html' || + (height > 1 && len + out.length * sepLength + nextStr.length >= MAX_OUTPUT_LEN) + ) { + break; + } + + out.push(nextStr); + + len += nextStr.length; + elem = elem.parentNode; + } + + return out.reverse().join(separator); +} + +/** + * Returns a simple, query-selector representation of a DOM element + * e.g. [HTMLElement] => input#foo.btn[name=baz] + * @param HTMLElement + * @returns {string} + */ +function htmlElementAsString(elem) { + var out = [], + className, + classes, + key, + attr, + i; + + if (!elem || !elem.tagName) { + return ''; + } + + out.push(elem.tagName.toLowerCase()); + if (elem.id) { + out.push('#' + elem.id); + } + + className = elem.className; + if (className && isString(className)) { + classes = className.split(/\s+/); + for (i = 0; i < classes.length; i++) { + out.push('.' + classes[i]); + } + } + var attrWhitelist = ['type', 'name', 'title', 'alt']; + for (i = 0; i < attrWhitelist.length; i++) { + key = attrWhitelist[i]; + attr = elem.getAttribute(key); + if (attr) { + out.push('[' + key + '="' + attr + '"]'); + } + } + return out.join(''); +} + +/** + * Returns true if either a OR b is truthy, but not both + */ +function isOnlyOneTruthy(a, b) { + return !!(!!a ^ !!b); +} + +/** + * Returns true if both parameters are undefined + */ +function isBothUndefined(a, b) { + return isUndefined(a) && isUndefined(b); +} + +/** + * Returns true if the two input exception interfaces have the same content + */ +function isSameException(ex1, ex2) { + if (isOnlyOneTruthy(ex1, ex2)) return false; + + ex1 = ex1.values[0]; + ex2 = ex2.values[0]; + + if (ex1.type !== ex2.type || ex1.value !== ex2.value) return false; + + // in case both stacktraces are undefined, we can't decide so default to false + if (isBothUndefined(ex1.stacktrace, ex2.stacktrace)) return false; + + return isSameStacktrace(ex1.stacktrace, ex2.stacktrace); +} + +/** + * Returns true if the two input stack trace interfaces have the same content + */ +function isSameStacktrace(stack1, stack2) { + if (isOnlyOneTruthy(stack1, stack2)) return false; + + var frames1 = stack1.frames; + var frames2 = stack2.frames; + + // Exit early if frame count differs + if (frames1.length !== frames2.length) return false; + + // Iterate through every frame; bail out if anything differs + var a, b; + for (var i = 0; i < frames1.length; i++) { + a = frames1[i]; + b = frames2[i]; + if ( + a.filename !== b.filename || + a.lineno !== b.lineno || + a.colno !== b.colno || + a['function'] !== b['function'] + ) + return false; + } + return true; +} + +/** + * Polyfill a method + * @param obj object e.g. `document` + * @param name method name present on object e.g. `addEventListener` + * @param replacement replacement function + * @param track {optional} record instrumentation to an array + */ +function fill(obj, name, replacement, track) { + if (obj == null) return; + var orig = obj[name]; + obj[name] = replacement(orig); + obj[name].__raven__ = true; + obj[name].__orig__ = orig; + if (track) { + track.push([obj, name, orig]); + } +} + +/** + * Join values in array + * @param input array of values to be joined together + * @param delimiter string to be placed in-between values + * @returns {string} + */ +function safeJoin(input, delimiter) { + if (!isArray(input)) return ''; + + var output = []; + + for (var i = 0; i < input.length; i++) { + try { + output.push(String(input[i])); + } catch (e) { + output.push('[value cannot be serialized]'); + } + } + + return output.join(delimiter); +} + +// Default Node.js REPL depth +var MAX_SERIALIZE_EXCEPTION_DEPTH = 3; +// 50kB, as 100kB is max payload size, so half sounds reasonable +var MAX_SERIALIZE_EXCEPTION_SIZE = 50 * 1024; +var MAX_SERIALIZE_KEYS_LENGTH = 40; + +function utf8Length(value) { + return ~-encodeURI(value).split(/%..|./).length; +} + +function jsonSize(value) { + return utf8Length(JSON.stringify(value)); +} + +function serializeValue(value) { + if (typeof value === 'string') { + var maxLength = 40; + return truncate(value, maxLength); + } else if ( + typeof value === 'number' || + typeof value === 'boolean' || + typeof value === 'undefined' + ) { + return value; + } + + var type = Object.prototype.toString.call(value); + + // Node.js REPL notation + if (type === '[object Object]') return '[Object]'; + if (type === '[object Array]') return '[Array]'; + if (type === '[object Function]') + return value.name ? '[Function: ' + value.name + ']' : '[Function]'; + + return value; +} + +function serializeObject(value, depth) { + if (depth === 0) return serializeValue(value); + + if (isPlainObject(value)) { + return Object.keys(value).reduce(function(acc, key) { + acc[key] = serializeObject(value[key], depth - 1); + return acc; + }, {}); + } else if (Array.isArray(value)) { + return value.map(function(val) { + return serializeObject(val, depth - 1); + }); + } + + return serializeValue(value); +} + +function serializeException(ex, depth, maxSize) { + if (!isPlainObject(ex)) return ex; + + depth = typeof depth !== 'number' ? MAX_SERIALIZE_EXCEPTION_DEPTH : depth; + maxSize = typeof depth !== 'number' ? MAX_SERIALIZE_EXCEPTION_SIZE : maxSize; + + var serialized = serializeObject(ex, depth); + + if (jsonSize(stringify(serialized)) > maxSize) { + return serializeException(ex, depth - 1); + } + + return serialized; +} + +function serializeKeysForMessage(keys, maxLength) { + if (typeof keys === 'number' || typeof keys === 'string') return keys.toString(); + if (!Array.isArray(keys)) return ''; + + keys = keys.filter(function(key) { + return typeof key === 'string'; + }); + if (keys.length === 0) return '[object has no keys]'; + + maxLength = typeof maxLength !== 'number' ? MAX_SERIALIZE_KEYS_LENGTH : maxLength; + if (keys[0].length >= maxLength) return keys[0]; + + for (var usedKeys = keys.length; usedKeys > 0; usedKeys--) { + var serialized = keys.slice(0, usedKeys).join(', '); + if (serialized.length > maxLength) continue; + if (usedKeys === keys.length) return serialized; + return serialized + '\u2026'; + } + + return ''; +} + +function sanitize(input, sanitizeKeys) { + if (!isArray(sanitizeKeys) || (isArray(sanitizeKeys) && sanitizeKeys.length === 0)) + return input; + + var sanitizeRegExp = joinRegExp(sanitizeKeys); + var sanitizeMask = '********'; + var safeInput; + + try { + safeInput = JSON.parse(stringify(input)); + } catch (o_O) { + return input; + } + + function sanitizeWorker(workerInput) { + if (isArray(workerInput)) { + return workerInput.map(function(val) { + return sanitizeWorker(val); + }); + } + + if (isPlainObject(workerInput)) { + return Object.keys(workerInput).reduce(function(acc, k) { + if (sanitizeRegExp.test(k)) { + acc[k] = sanitizeMask; + } else { + acc[k] = sanitizeWorker(workerInput[k]); + } + return acc; + }, {}); + } + + return workerInput; + } + + return sanitizeWorker(safeInput); +} + +module.exports = { + isObject: isObject, + isError: isError, + isErrorEvent: isErrorEvent, + isDOMError: isDOMError, + isDOMException: isDOMException, + isUndefined: isUndefined, + isFunction: isFunction, + isPlainObject: isPlainObject, + isString: isString, + isArray: isArray, + isEmptyObject: isEmptyObject, + supportsErrorEvent: supportsErrorEvent, + supportsDOMError: supportsDOMError, + supportsDOMException: supportsDOMException, + supportsFetch: supportsFetch, + supportsReferrerPolicy: supportsReferrerPolicy, + supportsPromiseRejectionEvent: supportsPromiseRejectionEvent, + wrappedCallback: wrappedCallback, + each: each, + objectMerge: objectMerge, + truncate: truncate, + objectFrozen: objectFrozen, + hasKey: hasKey, + joinRegExp: joinRegExp, + urlencode: urlencode, + uuid4: uuid4, + htmlTreeAsString: htmlTreeAsString, + htmlElementAsString: htmlElementAsString, + isSameException: isSameException, + isSameStacktrace: isSameStacktrace, + parseUrl: parseUrl, + fill: fill, + safeJoin: safeJoin, + serializeException: serializeException, + serializeKeysForMessage: serializeKeysForMessage, + sanitize: sanitize +}; + +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"9":9}],8:[function(_dereq_,module,exports){ +(function (global){ +var utils = _dereq_(7); + +/* + TraceKit - Cross brower stack traces + + This was originally forked from github.com/occ/TraceKit, but has since been + largely re-written and is now maintained as part of raven-js. Tests for + this are in test/vendor. + + MIT license +*/ + +var TraceKit = { + collectWindowErrors: true, + debug: false +}; + +// This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) +var _window = + typeof window !== 'undefined' + ? window + : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; + +// global reference to slice +var _slice = [].slice; +var UNKNOWN_FUNCTION = '?'; + +// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error#Error_types +var ERROR_TYPES_RE = /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/; + +function getLocationHref() { + if (typeof document === 'undefined' || document.location == null) return ''; + return document.location.href; +} + +function getLocationOrigin() { + if (typeof document === 'undefined' || document.location == null) return ''; + + // Oh dear IE10... + if (!document.location.origin) { + document.location.origin = + document.location.protocol + + '//' + + document.location.hostname + + (document.location.port ? ':' + document.location.port : ''); + } + + return document.location.origin; +} + +/** + * TraceKit.report: cross-browser processing of unhandled exceptions + * + * Syntax: + * TraceKit.report.subscribe(function(stackInfo) { ... }) + * TraceKit.report.unsubscribe(function(stackInfo) { ... }) + * TraceKit.report(exception) + * try { ...code... } catch(ex) { TraceKit.report(ex); } + * + * Supports: + * - Firefox: full stack trace with line numbers, plus column number + * on top frame; column number is not guaranteed + * - Opera: full stack trace with line and column numbers + * - Chrome: full stack trace with line and column numbers + * - Safari: line and column number for the top frame only; some frames + * may be missing, and column number is not guaranteed + * - IE: line and column number for the top frame only; some frames + * may be missing, and column number is not guaranteed + * + * In theory, TraceKit should work on all of the following versions: + * - IE5.5+ (only 8.0 tested) + * - Firefox 0.9+ (only 3.5+ tested) + * - Opera 7+ (only 10.50 tested; versions 9 and earlier may require + * Exceptions Have Stacktrace to be enabled in opera:config) + * - Safari 3+ (only 4+ tested) + * - Chrome 1+ (only 5+ tested) + * - Konqueror 3.5+ (untested) + * + * Requires TraceKit.computeStackTrace. + * + * Tries to catch all unhandled exceptions and report them to the + * subscribed handlers. Please note that TraceKit.report will rethrow the + * exception. This is REQUIRED in order to get a useful stack trace in IE. + * If the exception does not reach the top of the browser, you will only + * get a stack trace from the point where TraceKit.report was called. + * + * Handlers receive a stackInfo object as described in the + * TraceKit.computeStackTrace docs. + */ +TraceKit.report = (function reportModuleWrapper() { + var handlers = [], + lastArgs = null, + lastException = null, + lastExceptionStack = null; + + /** + * Add a crash handler. + * @param {Function} handler + */ + function subscribe(handler) { + installGlobalHandler(); + handlers.push(handler); + } + + /** + * Remove a crash handler. + * @param {Function} handler + */ + function unsubscribe(handler) { + for (var i = handlers.length - 1; i >= 0; --i) { + if (handlers[i] === handler) { + handlers.splice(i, 1); + } + } + } + + /** + * Remove all crash handlers. + */ + function unsubscribeAll() { + uninstallGlobalHandler(); + handlers = []; + } + + /** + * Dispatch stack information to all handlers. + * @param {Object.} stack + */ + function notifyHandlers(stack, isWindowError) { + var exception = null; + if (isWindowError && !TraceKit.collectWindowErrors) { + return; + } + for (var i in handlers) { + if (handlers.hasOwnProperty(i)) { + try { + handlers[i].apply(null, [stack].concat(_slice.call(arguments, 2))); + } catch (inner) { + exception = inner; + } + } + } + + if (exception) { + throw exception; + } + } + + var _oldOnerrorHandler, _onErrorHandlerInstalled; + + /** + * Ensures all global unhandled exceptions are recorded. + * Supported by Gecko and IE. + * @param {string} msg Error message. + * @param {string} url URL of script that generated the exception. + * @param {(number|string)} lineNo The line number at which the error + * occurred. + * @param {?(number|string)} colNo The column number at which the error + * occurred. + * @param {?Error} ex The actual Error object. + */ + function traceKitWindowOnError(msg, url, lineNo, colNo, ex) { + var stack = null; + // If 'ex' is ErrorEvent, get real Error from inside + var exception = utils.isErrorEvent(ex) ? ex.error : ex; + // If 'msg' is ErrorEvent, get real message from inside + var message = utils.isErrorEvent(msg) ? msg.message : msg; + + if (lastExceptionStack) { + TraceKit.computeStackTrace.augmentStackTraceWithInitialElement( + lastExceptionStack, + url, + lineNo, + message + ); + processLastException(); + } else if (exception && utils.isError(exception)) { + // non-string `exception` arg; attempt to extract stack trace + + // New chrome and blink send along a real error object + // Let's just report that like a normal error. + // See: https://mikewest.org/2013/08/debugging-runtime-errors-with-window-onerror + stack = TraceKit.computeStackTrace(exception); + notifyHandlers(stack, true); + } else { + var location = { + url: url, + line: lineNo, + column: colNo + }; + + var name = undefined; + var groups; + + if ({}.toString.call(message) === '[object String]') { + var groups = message.match(ERROR_TYPES_RE); + if (groups) { + name = groups[1]; + message = groups[2]; + } + } + + location.func = UNKNOWN_FUNCTION; + + stack = { + name: name, + message: message, + url: getLocationHref(), + stack: [location] + }; + notifyHandlers(stack, true); + } + + if (_oldOnerrorHandler) { + return _oldOnerrorHandler.apply(this, arguments); + } + + return false; + } + + function installGlobalHandler() { + if (_onErrorHandlerInstalled) { + return; + } + _oldOnerrorHandler = _window.onerror; + _window.onerror = traceKitWindowOnError; + _onErrorHandlerInstalled = true; + } + + function uninstallGlobalHandler() { + if (!_onErrorHandlerInstalled) { + return; + } + _window.onerror = _oldOnerrorHandler; + _onErrorHandlerInstalled = false; + _oldOnerrorHandler = undefined; + } + + function processLastException() { + var _lastExceptionStack = lastExceptionStack, + _lastArgs = lastArgs; + lastArgs = null; + lastExceptionStack = null; + lastException = null; + notifyHandlers.apply(null, [_lastExceptionStack, false].concat(_lastArgs)); + } + + /** + * Reports an unhandled Error to TraceKit. + * @param {Error} ex + * @param {?boolean} rethrow If false, do not re-throw the exception. + * Only used for window.onerror to not cause an infinite loop of + * rethrowing. + */ + function report(ex, rethrow) { + var args = _slice.call(arguments, 1); + if (lastExceptionStack) { + if (lastException === ex) { + return; // already caught by an inner catch block, ignore + } else { + processLastException(); + } + } + + var stack = TraceKit.computeStackTrace(ex); + lastExceptionStack = stack; + lastException = ex; + lastArgs = args; + + // If the stack trace is incomplete, wait for 2 seconds for + // slow slow IE to see if onerror occurs or not before reporting + // this exception; otherwise, we will end up with an incomplete + // stack trace + setTimeout(function() { + if (lastException === ex) { + processLastException(); + } + }, stack.incomplete ? 2000 : 0); + + if (rethrow !== false) { + throw ex; // re-throw to propagate to the top level (and cause window.onerror) + } + } + + report.subscribe = subscribe; + report.unsubscribe = unsubscribe; + report.uninstall = unsubscribeAll; + return report; +})(); + +/** + * TraceKit.computeStackTrace: cross-browser stack traces in JavaScript + * + * Syntax: + * s = TraceKit.computeStackTrace(exception) // consider using TraceKit.report instead (see below) + * Returns: + * s.name - exception name + * s.message - exception message + * s.stack[i].url - JavaScript or HTML file URL + * s.stack[i].func - function name, or empty for anonymous functions (if guessing did not work) + * s.stack[i].args - arguments passed to the function, if known + * s.stack[i].line - line number, if known + * s.stack[i].column - column number, if known + * + * Supports: + * - Firefox: full stack trace with line numbers and unreliable column + * number on top frame + * - Opera 10: full stack trace with line and column numbers + * - Opera 9-: full stack trace with line numbers + * - Chrome: full stack trace with line and column numbers + * - Safari: line and column number for the topmost stacktrace element + * only + * - IE: no line numbers whatsoever + * + * Tries to guess names of anonymous functions by looking for assignments + * in the source code. In IE and Safari, we have to guess source file names + * by searching for function bodies inside all page scripts. This will not + * work for scripts that are loaded cross-domain. + * Here be dragons: some function names may be guessed incorrectly, and + * duplicate functions may be mismatched. + * + * TraceKit.computeStackTrace should only be used for tracing purposes. + * Logging of unhandled exceptions should be done with TraceKit.report, + * which builds on top of TraceKit.computeStackTrace and provides better + * IE support by utilizing the window.onerror event to retrieve information + * about the top of the stack. + * + * Note: In IE and Safari, no stack trace is recorded on the Error object, + * so computeStackTrace instead walks its *own* chain of callers. + * This means that: + * * in Safari, some methods may be missing from the stack trace; + * * in IE, the topmost function in the stack trace will always be the + * caller of computeStackTrace. + * + * This is okay for tracing (because you are likely to be calling + * computeStackTrace from the function you want to be the topmost element + * of the stack trace anyway), but not okay for logging unhandled + * exceptions (because your catch block will likely be far away from the + * inner function that actually caused the exception). + * + */ +TraceKit.computeStackTrace = (function computeStackTraceWrapper() { + // Contents of Exception in various browsers. + // + // SAFARI: + // ex.message = Can't find variable: qq + // ex.line = 59 + // ex.sourceId = 580238192 + // ex.sourceURL = http://... + // ex.expressionBeginOffset = 96 + // ex.expressionCaretOffset = 98 + // ex.expressionEndOffset = 98 + // ex.name = ReferenceError + // + // FIREFOX: + // ex.message = qq is not defined + // ex.fileName = http://... + // ex.lineNumber = 59 + // ex.columnNumber = 69 + // ex.stack = ...stack trace... (see the example below) + // ex.name = ReferenceError + // + // CHROME: + // ex.message = qq is not defined + // ex.name = ReferenceError + // ex.type = not_defined + // ex.arguments = ['aa'] + // ex.stack = ...stack trace... + // + // INTERNET EXPLORER: + // ex.message = ... + // ex.name = ReferenceError + // + // OPERA: + // ex.message = ...message... (see the example below) + // ex.name = ReferenceError + // ex.opera#sourceloc = 11 (pretty much useless, duplicates the info in ex.message) + // ex.stacktrace = n/a; see 'opera:config#UserPrefs|Exceptions Have Stacktrace' + + /** + * Computes stack trace information from the stack property. + * Chrome and Gecko use this property. + * @param {Error} ex + * @return {?Object.} Stack trace information. + */ + function computeStackTraceFromStackProp(ex) { + if (typeof ex.stack === 'undefined' || !ex.stack) return; + + var chrome = /^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i; + var winjs = /^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i; + // NOTE: blob urls are now supposed to always have an origin, therefore it's format + // which is `blob:http://url/path/with-some-uuid`, is matched by `blob.*?:\/` as well + var gecko = /^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i; + // Used to additionally parse URL/line/column from eval frames + var geckoEval = /(\S+) line (\d+)(?: > eval line \d+)* > eval/i; + var chromeEval = /\((\S*)(?::(\d+))(?::(\d+))\)/; + var lines = ex.stack.split('\n'); + var stack = []; + var submatch; + var parts; + var element; + var reference = /^(.*) is undefined$/.exec(ex.message); + + for (var i = 0, j = lines.length; i < j; ++i) { + if ((parts = chrome.exec(lines[i]))) { + var isNative = parts[2] && parts[2].indexOf('native') === 0; // start of line + var isEval = parts[2] && parts[2].indexOf('eval') === 0; // start of line + if (isEval && (submatch = chromeEval.exec(parts[2]))) { + // throw out eval line/column and use top-most line/column number + parts[2] = submatch[1]; // url + parts[3] = submatch[2]; // line + parts[4] = submatch[3]; // column + } + element = { + url: !isNative ? parts[2] : null, + func: parts[1] || UNKNOWN_FUNCTION, + args: isNative ? [parts[2]] : [], + line: parts[3] ? +parts[3] : null, + column: parts[4] ? +parts[4] : null + }; + } else if ((parts = winjs.exec(lines[i]))) { + element = { + url: parts[2], + func: parts[1] || UNKNOWN_FUNCTION, + args: [], + line: +parts[3], + column: parts[4] ? +parts[4] : null + }; + } else if ((parts = gecko.exec(lines[i]))) { + var isEval = parts[3] && parts[3].indexOf(' > eval') > -1; + if (isEval && (submatch = geckoEval.exec(parts[3]))) { + // throw out eval line/column and use top-most line number + parts[3] = submatch[1]; + parts[4] = submatch[2]; + parts[5] = null; // no column when eval + } else if (i === 0 && !parts[5] && typeof ex.columnNumber !== 'undefined') { + // FireFox uses this awesome columnNumber property for its top frame + // Also note, Firefox's column number is 0-based and everything else expects 1-based, + // so adding 1 + // NOTE: this hack doesn't work if top-most frame is eval + stack[0].column = ex.columnNumber + 1; + } + element = { + url: parts[3], + func: parts[1] || UNKNOWN_FUNCTION, + args: parts[2] ? parts[2].split(',') : [], + line: parts[4] ? +parts[4] : null, + column: parts[5] ? +parts[5] : null + }; + } else { + continue; + } + + if (!element.func && element.line) { + element.func = UNKNOWN_FUNCTION; + } + + if (element.url && element.url.substr(0, 5) === 'blob:') { + // Special case for handling JavaScript loaded into a blob. + // We use a synchronous AJAX request here as a blob is already in + // memory - it's not making a network request. This will generate a warning + // in the browser console, but there has already been an error so that's not + // that much of an issue. + var xhr = new XMLHttpRequest(); + xhr.open('GET', element.url, false); + xhr.send(null); + + // If we failed to download the source, skip this patch + if (xhr.status === 200) { + var source = xhr.responseText || ''; + + // We trim the source down to the last 300 characters as sourceMappingURL is always at the end of the file. + // Why 300? To be in line with: https://github.com/getsentry/sentry/blob/4af29e8f2350e20c28a6933354e4f42437b4ba42/src/sentry/lang/javascript/processor.py#L164-L175 + source = source.slice(-300); + + // Now we dig out the source map URL + var sourceMaps = source.match(/\/\/# sourceMappingURL=(.*)$/); + + // If we don't find a source map comment or we find more than one, continue on to the next element. + if (sourceMaps) { + var sourceMapAddress = sourceMaps[1]; + + // Now we check to see if it's a relative URL. + // If it is, convert it to an absolute one. + if (sourceMapAddress.charAt(0) === '~') { + sourceMapAddress = getLocationOrigin() + sourceMapAddress.slice(1); + } + + // Now we strip the '.map' off of the end of the URL and update the + // element so that Sentry can match the map to the blob. + element.url = sourceMapAddress.slice(0, -4); + } + } + } + + stack.push(element); + } + + if (!stack.length) { + return null; + } + + return { + name: ex.name, + message: ex.message, + url: getLocationHref(), + stack: stack + }; + } + + /** + * Adds information about the first frame to incomplete stack traces. + * Safari and IE require this to get complete data on the first frame. + * @param {Object.} stackInfo Stack trace information from + * one of the compute* methods. + * @param {string} url The URL of the script that caused an error. + * @param {(number|string)} lineNo The line number of the script that + * caused an error. + * @param {string=} message The error generated by the browser, which + * hopefully contains the name of the object that caused the error. + * @return {boolean} Whether or not the stack information was + * augmented. + */ + function augmentStackTraceWithInitialElement(stackInfo, url, lineNo, message) { + var initial = { + url: url, + line: lineNo + }; + + if (initial.url && initial.line) { + stackInfo.incomplete = false; + + if (!initial.func) { + initial.func = UNKNOWN_FUNCTION; + } + + if (stackInfo.stack.length > 0) { + if (stackInfo.stack[0].url === initial.url) { + if (stackInfo.stack[0].line === initial.line) { + return false; // already in stack trace + } else if ( + !stackInfo.stack[0].line && + stackInfo.stack[0].func === initial.func + ) { + stackInfo.stack[0].line = initial.line; + return false; + } + } + } + + stackInfo.stack.unshift(initial); + stackInfo.partial = true; + return true; + } else { + stackInfo.incomplete = true; + } + + return false; + } + + /** + * Computes stack trace information by walking the arguments.caller + * chain at the time the exception occurred. This will cause earlier + * frames to be missed but is the only way to get any stack trace in + * Safari and IE. The top frame is restored by + * {@link augmentStackTraceWithInitialElement}. + * @param {Error} ex + * @return {?Object.} Stack trace information. + */ + function computeStackTraceByWalkingCallerChain(ex, depth) { + var functionName = /function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i, + stack = [], + funcs = {}, + recursion = false, + parts, + item, + source; + + for ( + var curr = computeStackTraceByWalkingCallerChain.caller; + curr && !recursion; + curr = curr.caller + ) { + if (curr === computeStackTrace || curr === TraceKit.report) { + // console.log('skipping internal function'); + continue; + } + + item = { + url: null, + func: UNKNOWN_FUNCTION, + line: null, + column: null + }; + + if (curr.name) { + item.func = curr.name; + } else if ((parts = functionName.exec(curr.toString()))) { + item.func = parts[1]; + } + + if (typeof item.func === 'undefined') { + try { + item.func = parts.input.substring(0, parts.input.indexOf('{')); + } catch (e) {} + } + + if (funcs['' + curr]) { + recursion = true; + } else { + funcs['' + curr] = true; + } + + stack.push(item); + } + + if (depth) { + // console.log('depth is ' + depth); + // console.log('stack is ' + stack.length); + stack.splice(0, depth); + } + + var result = { + name: ex.name, + message: ex.message, + url: getLocationHref(), + stack: stack + }; + augmentStackTraceWithInitialElement( + result, + ex.sourceURL || ex.fileName, + ex.line || ex.lineNumber, + ex.message || ex.description + ); + return result; + } + + /** + * Computes a stack trace for an exception. + * @param {Error} ex + * @param {(string|number)=} depth + */ + function computeStackTrace(ex, depth) { + var stack = null; + depth = depth == null ? 0 : +depth; + + try { + stack = computeStackTraceFromStackProp(ex); + if (stack) { + return stack; + } + } catch (e) { + if (TraceKit.debug) { + throw e; + } + } + + try { + stack = computeStackTraceByWalkingCallerChain(ex, depth + 1); + if (stack) { + return stack; + } + } catch (e) { + if (TraceKit.debug) { + throw e; + } + } + return { + name: ex.name, + message: ex.message, + url: getLocationHref() + }; + } + + computeStackTrace.augmentStackTraceWithInitialElement = augmentStackTraceWithInitialElement; + computeStackTrace.computeStackTraceFromStackProp = computeStackTraceFromStackProp; + + return computeStackTrace; +})(); + +module.exports = TraceKit; + +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"7":7}],9:[function(_dereq_,module,exports){ +/* + json-stringify-safe + Like JSON.stringify, but doesn't throw on circular references. + + Originally forked from https://github.com/isaacs/json-stringify-safe + version 5.0.1 on 3/8/2017 and modified to handle Errors serialization + and IE8 compatibility. Tests for this are in test/vendor. + + ISC license: https://github.com/isaacs/json-stringify-safe/blob/master/LICENSE +*/ + +exports = module.exports = stringify; +exports.getSerialize = serializer; + +function indexOf(haystack, needle) { + for (var i = 0; i < haystack.length; ++i) { + if (haystack[i] === needle) return i; + } + return -1; +} + +function stringify(obj, replacer, spaces, cycleReplacer) { + return JSON.stringify(obj, serializer(replacer, cycleReplacer), spaces); +} + +// https://github.com/ftlabs/js-abbreviate/blob/fa709e5f139e7770a71827b1893f22418097fbda/index.js#L95-L106 +function stringifyError(value) { + var err = { + // These properties are implemented as magical getters and don't show up in for in + stack: value.stack, + message: value.message, + name: value.name + }; + + for (var i in value) { + if (Object.prototype.hasOwnProperty.call(value, i)) { + err[i] = value[i]; + } + } + + return err; +} + +function serializer(replacer, cycleReplacer) { + var stack = []; + var keys = []; + + if (cycleReplacer == null) { + cycleReplacer = function(key, value) { + if (stack[0] === value) { + return '[Circular ~]'; + } + return '[Circular ~.' + keys.slice(0, indexOf(stack, value)).join('.') + ']'; + }; + } + + return function(key, value) { + if (stack.length > 0) { + var thisPos = indexOf(stack, this); + ~thisPos ? stack.splice(thisPos + 1) : stack.push(this); + ~thisPos ? keys.splice(thisPos, Infinity, key) : keys.push(key); + + if (~indexOf(stack, value)) { + value = cycleReplacer.call(this, key, value); + } + } else { + stack.push(value); + } + + return replacer == null + ? value instanceof Error ? stringifyError(value) : value + : replacer.call(this, key, value); + }; +} + +},{}],10:[function(_dereq_,module,exports){ +/* + * JavaScript MD5 + * https://github.com/blueimp/JavaScript-MD5 + * + * Copyright 2011, Sebastian Tschan + * https://blueimp.net + * + * Licensed under the MIT license: + * https://opensource.org/licenses/MIT + * + * Based on + * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message + * Digest Algorithm, as defined in RFC 1321. + * Version 2.2 Copyright (C) Paul Johnston 1999 - 2009 + * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet + * Distributed under the BSD License + * See http://pajhome.org.uk/crypt/md5 for more info. + */ + +/* +* Add integers, wrapping at 2^32. This uses 16-bit operations internally +* to work around bugs in some JS interpreters. +*/ +function safeAdd(x, y) { + var lsw = (x & 0xffff) + (y & 0xffff); + var msw = (x >> 16) + (y >> 16) + (lsw >> 16); + return (msw << 16) | (lsw & 0xffff); +} + +/* +* Bitwise rotate a 32-bit number to the left. +*/ +function bitRotateLeft(num, cnt) { + return (num << cnt) | (num >>> (32 - cnt)); +} + +/* +* These functions implement the four basic operations the algorithm uses. +*/ +function md5cmn(q, a, b, x, s, t) { + return safeAdd(bitRotateLeft(safeAdd(safeAdd(a, q), safeAdd(x, t)), s), b); +} +function md5ff(a, b, c, d, x, s, t) { + return md5cmn((b & c) | (~b & d), a, b, x, s, t); +} +function md5gg(a, b, c, d, x, s, t) { + return md5cmn((b & d) | (c & ~d), a, b, x, s, t); +} +function md5hh(a, b, c, d, x, s, t) { + return md5cmn(b ^ c ^ d, a, b, x, s, t); +} +function md5ii(a, b, c, d, x, s, t) { + return md5cmn(c ^ (b | ~d), a, b, x, s, t); +} + +/* +* Calculate the MD5 of an array of little-endian words, and a bit length. +*/ +function binlMD5(x, len) { + /* append padding */ + x[len >> 5] |= 0x80 << (len % 32); + x[(((len + 64) >>> 9) << 4) + 14] = len; + + var i; + var olda; + var oldb; + var oldc; + var oldd; + var a = 1732584193; + var b = -271733879; + var c = -1732584194; + var d = 271733878; + + for (i = 0; i < x.length; i += 16) { + olda = a; + oldb = b; + oldc = c; + oldd = d; + + a = md5ff(a, b, c, d, x[i], 7, -680876936); + d = md5ff(d, a, b, c, x[i + 1], 12, -389564586); + c = md5ff(c, d, a, b, x[i + 2], 17, 606105819); + b = md5ff(b, c, d, a, x[i + 3], 22, -1044525330); + a = md5ff(a, b, c, d, x[i + 4], 7, -176418897); + d = md5ff(d, a, b, c, x[i + 5], 12, 1200080426); + c = md5ff(c, d, a, b, x[i + 6], 17, -1473231341); + b = md5ff(b, c, d, a, x[i + 7], 22, -45705983); + a = md5ff(a, b, c, d, x[i + 8], 7, 1770035416); + d = md5ff(d, a, b, c, x[i + 9], 12, -1958414417); + c = md5ff(c, d, a, b, x[i + 10], 17, -42063); + b = md5ff(b, c, d, a, x[i + 11], 22, -1990404162); + a = md5ff(a, b, c, d, x[i + 12], 7, 1804603682); + d = md5ff(d, a, b, c, x[i + 13], 12, -40341101); + c = md5ff(c, d, a, b, x[i + 14], 17, -1502002290); + b = md5ff(b, c, d, a, x[i + 15], 22, 1236535329); + + a = md5gg(a, b, c, d, x[i + 1], 5, -165796510); + d = md5gg(d, a, b, c, x[i + 6], 9, -1069501632); + c = md5gg(c, d, a, b, x[i + 11], 14, 643717713); + b = md5gg(b, c, d, a, x[i], 20, -373897302); + a = md5gg(a, b, c, d, x[i + 5], 5, -701558691); + d = md5gg(d, a, b, c, x[i + 10], 9, 38016083); + c = md5gg(c, d, a, b, x[i + 15], 14, -660478335); + b = md5gg(b, c, d, a, x[i + 4], 20, -405537848); + a = md5gg(a, b, c, d, x[i + 9], 5, 568446438); + d = md5gg(d, a, b, c, x[i + 14], 9, -1019803690); + c = md5gg(c, d, a, b, x[i + 3], 14, -187363961); + b = md5gg(b, c, d, a, x[i + 8], 20, 1163531501); + a = md5gg(a, b, c, d, x[i + 13], 5, -1444681467); + d = md5gg(d, a, b, c, x[i + 2], 9, -51403784); + c = md5gg(c, d, a, b, x[i + 7], 14, 1735328473); + b = md5gg(b, c, d, a, x[i + 12], 20, -1926607734); + + a = md5hh(a, b, c, d, x[i + 5], 4, -378558); + d = md5hh(d, a, b, c, x[i + 8], 11, -2022574463); + c = md5hh(c, d, a, b, x[i + 11], 16, 1839030562); + b = md5hh(b, c, d, a, x[i + 14], 23, -35309556); + a = md5hh(a, b, c, d, x[i + 1], 4, -1530992060); + d = md5hh(d, a, b, c, x[i + 4], 11, 1272893353); + c = md5hh(c, d, a, b, x[i + 7], 16, -155497632); + b = md5hh(b, c, d, a, x[i + 10], 23, -1094730640); + a = md5hh(a, b, c, d, x[i + 13], 4, 681279174); + d = md5hh(d, a, b, c, x[i], 11, -358537222); + c = md5hh(c, d, a, b, x[i + 3], 16, -722521979); + b = md5hh(b, c, d, a, x[i + 6], 23, 76029189); + a = md5hh(a, b, c, d, x[i + 9], 4, -640364487); + d = md5hh(d, a, b, c, x[i + 12], 11, -421815835); + c = md5hh(c, d, a, b, x[i + 15], 16, 530742520); + b = md5hh(b, c, d, a, x[i + 2], 23, -995338651); + + a = md5ii(a, b, c, d, x[i], 6, -198630844); + d = md5ii(d, a, b, c, x[i + 7], 10, 1126891415); + c = md5ii(c, d, a, b, x[i + 14], 15, -1416354905); + b = md5ii(b, c, d, a, x[i + 5], 21, -57434055); + a = md5ii(a, b, c, d, x[i + 12], 6, 1700485571); + d = md5ii(d, a, b, c, x[i + 3], 10, -1894986606); + c = md5ii(c, d, a, b, x[i + 10], 15, -1051523); + b = md5ii(b, c, d, a, x[i + 1], 21, -2054922799); + a = md5ii(a, b, c, d, x[i + 8], 6, 1873313359); + d = md5ii(d, a, b, c, x[i + 15], 10, -30611744); + c = md5ii(c, d, a, b, x[i + 6], 15, -1560198380); + b = md5ii(b, c, d, a, x[i + 13], 21, 1309151649); + a = md5ii(a, b, c, d, x[i + 4], 6, -145523070); + d = md5ii(d, a, b, c, x[i + 11], 10, -1120210379); + c = md5ii(c, d, a, b, x[i + 2], 15, 718787259); + b = md5ii(b, c, d, a, x[i + 9], 21, -343485551); + + a = safeAdd(a, olda); + b = safeAdd(b, oldb); + c = safeAdd(c, oldc); + d = safeAdd(d, oldd); + } + return [a, b, c, d]; +} + +/* +* Convert an array of little-endian words to a string +*/ +function binl2rstr(input) { + var i; + var output = ''; + var length32 = input.length * 32; + for (i = 0; i < length32; i += 8) { + output += String.fromCharCode((input[i >> 5] >>> (i % 32)) & 0xff); + } + return output; +} + +/* +* Convert a raw string to an array of little-endian words +* Characters >255 have their high-byte silently ignored. +*/ +function rstr2binl(input) { + var i; + var output = []; + output[(input.length >> 2) - 1] = undefined; + for (i = 0; i < output.length; i += 1) { + output[i] = 0; + } + var length8 = input.length * 8; + for (i = 0; i < length8; i += 8) { + output[i >> 5] |= (input.charCodeAt(i / 8) & 0xff) << (i % 32); + } + return output; +} + +/* +* Calculate the MD5 of a raw string +*/ +function rstrMD5(s) { + return binl2rstr(binlMD5(rstr2binl(s), s.length * 8)); +} + +/* +* Calculate the HMAC-MD5, of a key and some data (raw strings) +*/ +function rstrHMACMD5(key, data) { + var i; + var bkey = rstr2binl(key); + var ipad = []; + var opad = []; + var hash; + ipad[15] = opad[15] = undefined; + if (bkey.length > 16) { + bkey = binlMD5(bkey, key.length * 8); + } + for (i = 0; i < 16; i += 1) { + ipad[i] = bkey[i] ^ 0x36363636; + opad[i] = bkey[i] ^ 0x5c5c5c5c; + } + hash = binlMD5(ipad.concat(rstr2binl(data)), 512 + data.length * 8); + return binl2rstr(binlMD5(opad.concat(hash), 512 + 128)); +} + +/* +* Convert a raw string to a hex string +*/ +function rstr2hex(input) { + var hexTab = '0123456789abcdef'; + var output = ''; + var x; + var i; + for (i = 0; i < input.length; i += 1) { + x = input.charCodeAt(i); + output += hexTab.charAt((x >>> 4) & 0x0f) + hexTab.charAt(x & 0x0f); + } + return output; +} + +/* +* Encode a string as utf-8 +*/ +function str2rstrUTF8(input) { + return unescape(encodeURIComponent(input)); +} + +/* +* Take string arguments and return either raw or hex encoded strings +*/ +function rawMD5(s) { + return rstrMD5(str2rstrUTF8(s)); +} +function hexMD5(s) { + return rstr2hex(rawMD5(s)); +} +function rawHMACMD5(k, d) { + return rstrHMACMD5(str2rstrUTF8(k), str2rstrUTF8(d)); +} +function hexHMACMD5(k, d) { + return rstr2hex(rawHMACMD5(k, d)); +} + +function md5(string, key, raw) { + if (!key) { + if (!raw) { + return hexMD5(string); + } + return rawMD5(string); + } + if (!raw) { + return hexHMACMD5(key, string); + } + return rawHMACMD5(key, string); +} + +module.exports = md5; + +},{}]},{},[6,1,2])(6) +}); \ No newline at end of file diff --git a/packages/raven-js/dist/ember,require/raven.min.js b/packages/raven-js/dist/ember,require/raven.min.js new file mode 100644 index 000000000000..e14f534b1cc1 --- /dev/null +++ b/packages/raven-js/dist/ember,require/raven.min.js @@ -0,0 +1,4 @@ +/*! Raven.js 3.25.2 (30b6d4e) | github.com/getsentry/raven-js */ +!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.Raven=a()}}(function(){var a;return function b(a,c,d){function e(g,h){if(!c[g]){if(!a[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};a[g][0].call(k.exports,function(b){var c=a[g][1][b];return e(c?c:b)},k,k.exports,b,a,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;gthis.k.maxBreadcrumbs&&this.u.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.r.push([a,b]),this.n&&this.F(),this},setUserContext:function(a){return this.j.user=a,this},setExtraContext:function(a){return this.Z("extra",a),this},setTagsContext:function(a){return this.Z("tags",a),this},clearContext:function(){return this.j={},this},getContext:function(){return JSON.parse(h(this.j))},setEnvironment:function(a){return this.k.environment=a,this},setRelease:function(a){return this.k.release=a,this},setDataCallback:function(a){var b=this.k.dataCallback;return this.k.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.k.breadcrumbCallback;return this.k.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.k.shouldSendCallback;return this.k.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.k.transport=a,this},lastException:function(){return this.d},lastEventId:function(){return this.f},isSetup:function(){return!!this.a&&(!!this.g||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.z("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=R.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(S){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.H;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.j.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.J(this.G(c)),h=S.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(S.head||S.body).appendChild(h)}},L:function(){var a=this;this.m+=1,setTimeout(function(){a.m-=1})},$:function(a,b){var c,d;if(this.b){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),S.createEvent?(c=S.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=S.createEventObject(),c.eventType=a);for(d in b)A(b,d)&&(c[d]=b[d]);if(S.createEvent)S.dispatchEvent(c);else try{S.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},_:function(a){var b=this;return function(c){if(b.aa=null,b.v!==c){b.v=c;var d;try{d=E(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ba:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.aa;g||a._("input")(c),clearTimeout(g),a.aa=setTimeout(function(){a.aa=null},b)}}},ca:function(a,b){var c=H(this.w.href),d=H(b),e=H(a);this.x=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},C:function(){var a=this;a.da=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.M?a.da.apply(this.O,arguments):a.da.apply(this,arguments)}},Q:function(){this.da&&(Function.prototype.toString=this.da)},D:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.ca(b.x,c+""),a.apply(this,arguments)}};I(R.history,"pushState",j,d),I(R.history,"replaceState",j,d)}if(c.console&&"console"in R&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};w(["debug","info","warn","error","log"],function(a,b){O(console,b,k)})}},R:function(){for(var a;this.t.length;){a=this.t.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},S:function(){for(var a in this.q)this.p[a]=this.q[a]},F:function(){var a=this;w(this.r,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},G:function(a){var b=Q.exec(a),c={},d=7;try{for(;d--;)c[P[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.k.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},J:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},A:function(){this.m||this.V.apply(this,arguments)},V:function(a,b){var c=this.X(a,b);this.$("handle",{stackInfo:a,options:b}),this.fa(a.name,a.message,a.url,a.lineno,c,b)},X:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(w(a.stack,function(b,e){var f=c.ga(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.u,0)}),this.j.user&&(a.user=this.j.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),a=this.pa(a),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||v(a[b]))&&delete a[b]}),s(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!v(a)&&(!s(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.ma()?void this.z("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function F(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&l(b))for(c=b.split(/\s+/),f=0;fc?Q(a,b-1):d}function R(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?X:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function S(a,b){function c(a){return m(a)?a.map(function(a){return c(a)}):k(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!m(b)||m(b)&&0===b.length)return a;var d,e=A(b),f="********";try{d=JSON.parse(T(a))}catch(g){return a}return c(d)}var T=a(9),U="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},V=3,W=51200,X=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isDOMError:g,isDOMException:h,isUndefined:i,isFunction:j,isPlainObject:k,isString:l,isArray:m,isEmptyObject:n,supportsErrorEvent:o,supportsDOMError:p,supportsDOMException:q,supportsFetch:r,supportsReferrerPolicy:s,supportsPromiseRejectionEvent:t,wrappedCallback:u,each:v,objectMerge:w,truncate:y,objectFrozen:x,hasKey:z,joinRegExp:A,urlencode:B,uuid4:D,htmlTreeAsString:E,htmlElementAsString:F,isSameException:I,isSameStacktrace:J,parseUrl:C,fill:K,safeJoin:L,serializeException:Q,serializeKeysForMessage:R,sanitize:S}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{9:9}],8:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}function e(){return"undefined"==typeof document||null==document.location?"":(document.location.origin||(document.location.origin=document.location.protocol+"//"+document.location.hostname+(document.location.port?":"+document.location.port:"")),document.location.origin)}var f=a(7),g={collectWindowErrors:!0,debug:!1},h="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},i=[].slice,j="?",k=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;g.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function e(a,b){var c=null;if(!b||g.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(i.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,h,i){var l=null,m=f.isErrorEvent(i)?i.error:i,n=f.isErrorEvent(a)?a.message:a;if(v)g.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&f.isError(m))l=g.computeStackTrace(m),e(l,!0);else{var p,r={url:b,line:c,column:h},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(k);p&&(s=p[1],n=p[2])}r.func=j,l={name:s,message:n,url:d(),stack:[r]},e(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=h.onerror,h.onerror=l,r=!0)}function n(){r&&(h.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,e.apply(null,[a,!1].concat(b))}function p(a,b){var c=i.call(arguments,1);if(v){if(u===a)return;o()}var d=g.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),g.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,f,g=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,h=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,i=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,k=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,l=/\((\S*)(?::(\d+))(?::(\d+))\)/,m=a.stack.split("\n"),n=[],o=(/^(.*) is undefined$/.exec(a.message),0),p=m.length;o eval")>-1;r&&(b=k.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==o||c[5]||"undefined"==typeof a.columnNumber||(n[0].column=a.columnNumber+1),f={url:c[3],func:c[1]||j,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}if(!f.func&&f.line&&(f.func=j),f.url&&"blob:"===f.url.substr(0,5)){var s=new XMLHttpRequest;if(s.open("GET",f.url,!1),s.send(null),200===s.status){var t=s.responseText||"";t=t.slice(-300);var u=t.match(/\/\/# sourceMappingURL=(.*)$/);if(u){var v=u[1];"~"===v.charAt(0)&&(v=e()+v.slice(1)),f.url=v.slice(0,-4)}}}n.push(f)}return n.length?{name:a.name,message:a.message,url:d(),stack:n}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=j),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,e){for(var h,i,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==f&&o!==g.report){if(i={url:null,func:j,line:null,column:null},o.name?i.func=o.name:(h=k.exec(o.toString()))&&(i.func=h[1]),"undefined"==typeof i.func)try{ +i.func=h.input.substring(0,h.input.indexOf("{"))}catch(p){}m[""+o]?n=!0:m[""+o]=!0,l.push(i)}e&&l.splice(0,e);var q={name:a.name,message:a.message,url:d(),stack:l};return b(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),q}function f(b,e){var f=null;e=null==e?0:+e;try{if(f=a(b))return f}catch(h){if(g.debug)throw h}try{if(f=c(b,e+1))return f}catch(h){if(g.debug)throw h}return{name:b.name,message:b.message,url:d()}}return f.augmentStackTraceWithInitialElement=b,f.computeStackTraceFromStackProp=a,f}(),b.exports=g}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{7:7}],9:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}],10:[function(a,b,c){function d(a,b){var c=(65535&a)+(65535&b),d=(a>>16)+(b>>16)+(c>>16);return d<<16|65535&c}function e(a,b){return a<>>32-b}function f(a,b,c,f,g,h){return d(e(d(d(b,a),d(f,h)),g),c)}function g(a,b,c,d,e,g,h){return f(b&c|~b&d,a,b,e,g,h)}function h(a,b,c,d,e,g,h){return f(b&d|c&~d,a,b,e,g,h)}function i(a,b,c,d,e,g,h){return f(b^c^d,a,b,e,g,h)}function j(a,b,c,d,e,g,h){return f(c^(b|~d),a,b,e,g,h)}function k(a,b){a[b>>5]|=128<>>9<<4)+14]=b;var c,e,f,k,l,m=1732584193,n=-271733879,o=-1732584194,p=271733878;for(c=0;c>5]>>>b%32&255);return c}function m(a){var b,c=[];for(c[(a.length>>2)-1]=void 0,b=0;b>5]|=(255&a.charCodeAt(b/8))<16&&(e=k(e,8*a.length)),c=0;c<16;c+=1)f[c]=909522486^e[c],g[c]=1549556828^e[c];return d=k(f.concat(m(b)),512+8*b.length),l(k(g.concat(d),640))}function p(a){var b,c,d="0123456789abcdef",e="";for(c=0;c>>4&15)+d.charAt(15&b);return e}function q(a){return unescape(encodeURIComponent(a))}function r(a){return n(q(a))}function s(a){return p(r(a))}function t(a,b){return o(q(a),q(b))}function u(a,b){return p(t(a,b))}function v(a,b,c){return b?c?t(b,a):u(b,a):c?r(a):s(a)}b.exports=v},{}]},{},[6,1,2])(6)}); +//# sourceMappingURL=raven.min.js.map \ No newline at end of file diff --git a/packages/raven-js/dist/ember,require/raven.min.js.map b/packages/raven-js/dist/ember,require/raven.min.js.map new file mode 100644 index 000000000000..4fdc58d04694 --- /dev/null +++ b/packages/raven-js/dist/ember,require/raven.min.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","emberPlugin","Ember","_oldOnError","onerror","error","captureException","RSVP","on","reason","extra","context","captureMessage","addPlugin","6","2","requirePlugin","wrap","deep","3","RavenConfigError","message","name","prototype","constructor","4","utils","wrapMethod","console","level","callback","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","msg","safeJoin","data","logger","Function","apply","7","5","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","sanitizeKeys","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isErrorEvent","isDOMError","isDOMException","isError","isObject","isPlainObject","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","sanitize","wrapConsoleMethod","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","config","dsn","options","_logDebug","globalOptions","key","value","setDSN","push","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","toString","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","substr","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","func","undefined","_before","wrapped","_ignoreNextOnError","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","T","event","unhandledPromiseRejection","B","_promiseRejectionHandler","bind","addEventListener","P","removeEventListener","ex","trimHeadFrames","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","U","currentOptions","exKeys","Object","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","setDataCallback","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","L","setTimeout","$","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","_","evtName","_keypressTimeout","target","category","ba","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","ca","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","C","_originalFunctionToString","Q","D","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","type","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","E","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","R","builtin","S","F","installer","concat","G","str","m","exec","allowSecretKey","J","port","A","V","stackInfo","_triggerEvent","_processException","lineno","X","frame","_normalizeFrame","in_app","ga","stackInfoUrl","normalized","filename","line","colno","column","function","fa","prefixedMessage","exception","values","transaction","ha","request","Referer","breadcrumbs","_trimBreadcrumbs","ia","urlProp","urlProps","ja","httpData","userAgent","User-Agent","referrer","y","_backoffDuration","_backoffStart","ma","na","current","last","oa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Y","baseData","project","platform","_getHttpData","serverName","server_name","_sanitizeData","forEach","random","_sendProcessedPayload","pa","ra","qa","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","sa","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","open","setRequestHeader","send","ta","hash","evaluated","z","Z","setUser","setReleaseContext","10","8","9","RavenConstructor","_Raven","noConflict","Client","what","supportsErrorEvent","ErrorEvent","supportsDOMError","DOMError","supportsDOMException","DOMException","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","wrappedCallback","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","sanitizeMask","safeInput","o_O","getLocationHref","getLocationOrigin","origin","hostname","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","responseText","sourceMaps","sourceMapAddress","charAt","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","string","raw"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file diff --git a/packages/raven-js/dist/ember,vue/raven.js b/packages/raven-js/dist/ember,vue/raven.js new file mode 100644 index 000000000000..b7a51c429301 --- /dev/null +++ b/packages/raven-js/dist/ember,vue/raven.js @@ -0,0 +1,4093 @@ +/*! Raven.js 3.25.2 (30b6d4e) | github.com/getsentry/raven-js */ + +/* + * Includes TraceKit + * https://github.com/getsentry/TraceKit + * + * Copyright 2018 Matt Robenolt and other contributors + * Released under the BSD license + * https://github.com/getsentry/raven-js/blob/master/LICENSE + * + */ + +(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.Raven = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o' : 'anonymous component') + + (vm._isVue && vm.$options.__file ? ' at ' + vm.$options.__file : '') + ); +} + +function vuePlugin(Raven, Vue) { + Vue = Vue || window.Vue; + + // quit if Vue isn't on the page + if (!Vue || !Vue.config) return; + + var _oldOnError = Vue.config.errorHandler; + Vue.config.errorHandler = function VueErrorHandler(error, vm, info) { + var metaData = {}; + + // vm and lifecycleHook are not always available + if (Object.prototype.toString.call(vm) === '[object Object]') { + metaData.componentName = formatComponentName(vm); + metaData.propsData = vm.$options.propsData; + } + + if (typeof info !== 'undefined') { + metaData.lifecycleHook = info; + } + + Raven.captureException(error, { + extra: metaData + }); + + if (typeof _oldOnError === 'function') { + _oldOnError.call(this, error, vm, info); + } + }; +} + +module.exports = vuePlugin; + +_dereq_(6).addPlugin(module.exports); +},{"6":6}],3:[function(_dereq_,module,exports){ +function RavenConfigError(message) { + this.name = 'RavenConfigError'; + this.message = message; +} +RavenConfigError.prototype = new Error(); +RavenConfigError.prototype.constructor = RavenConfigError; + +module.exports = RavenConfigError; + +},{}],4:[function(_dereq_,module,exports){ +var utils = _dereq_(7); + +var wrapMethod = function(console, level, callback) { + var originalConsoleLevel = console[level]; + var originalConsole = console; + + if (!(level in console)) { + return; + } + + var sentryLevel = level === 'warn' ? 'warning' : level; + + console[level] = function() { + var args = [].slice.call(arguments); + + var msg = utils.safeJoin(args, ' '); + var data = {level: sentryLevel, logger: 'console', extra: {arguments: args}}; + + if (level === 'assert') { + if (args[0] === false) { + // Default browsers message + msg = + 'Assertion failed: ' + (utils.safeJoin(args.slice(1), ' ') || 'console.assert'); + data.extra.arguments = args.slice(1); + callback && callback(msg, data); + } + } else { + callback && callback(msg, data); + } + + // this fails for some browsers. :( + if (originalConsoleLevel) { + // IE9 doesn't allow calling apply on console functions directly + // See: https://stackoverflow.com/questions/5472938/does-ie9-support-console-log-and-is-it-a-real-function#answer-5473193 + Function.prototype.apply.call(originalConsoleLevel, originalConsole, args); + } + }; +}; + +module.exports = { + wrapMethod: wrapMethod +}; + +},{"7":7}],5:[function(_dereq_,module,exports){ +(function (global){ +/*global XDomainRequest:false */ + +var TraceKit = _dereq_(8); +var stringify = _dereq_(9); +var md5 = _dereq_(10); +var RavenConfigError = _dereq_(3); + +var utils = _dereq_(7); +var isErrorEvent = utils.isErrorEvent; +var isDOMError = utils.isDOMError; +var isDOMException = utils.isDOMException; +var isError = utils.isError; +var isObject = utils.isObject; +var isPlainObject = utils.isPlainObject; +var isUndefined = utils.isUndefined; +var isFunction = utils.isFunction; +var isString = utils.isString; +var isArray = utils.isArray; +var isEmptyObject = utils.isEmptyObject; +var each = utils.each; +var objectMerge = utils.objectMerge; +var truncate = utils.truncate; +var objectFrozen = utils.objectFrozen; +var hasKey = utils.hasKey; +var joinRegExp = utils.joinRegExp; +var urlencode = utils.urlencode; +var uuid4 = utils.uuid4; +var htmlTreeAsString = utils.htmlTreeAsString; +var isSameException = utils.isSameException; +var isSameStacktrace = utils.isSameStacktrace; +var parseUrl = utils.parseUrl; +var fill = utils.fill; +var supportsFetch = utils.supportsFetch; +var supportsReferrerPolicy = utils.supportsReferrerPolicy; +var serializeKeysForMessage = utils.serializeKeysForMessage; +var serializeException = utils.serializeException; +var sanitize = utils.sanitize; + +var wrapConsoleMethod = _dereq_(4).wrapMethod; + +var dsnKeys = 'source protocol user pass host port path'.split(' '), + dsnPattern = /^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/; + +function now() { + return +new Date(); +} + +// This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) +var _window = + typeof window !== 'undefined' + ? window + : typeof global !== 'undefined' + ? global + : typeof self !== 'undefined' + ? self + : {}; +var _document = _window.document; +var _navigator = _window.navigator; + +function keepOriginalCallback(original, callback) { + return isFunction(callback) + ? function(data) { + return callback(data, original); + } + : callback; +} + +// First, check for JSON support +// If there is no JSON, we no-op the core features of Raven +// since JSON is required to encode the payload +function Raven() { + this._hasJSON = !!(typeof JSON === 'object' && JSON.stringify); + // Raven can run in contexts where there's no document (react-native) + this._hasDocument = !isUndefined(_document); + this._hasNavigator = !isUndefined(_navigator); + this._lastCapturedException = null; + this._lastData = null; + this._lastEventId = null; + this._globalServer = null; + this._globalKey = null; + this._globalProject = null; + this._globalContext = {}; + this._globalOptions = { + // SENTRY_RELEASE can be injected by https://github.com/getsentry/sentry-webpack-plugin + release: _window.SENTRY_RELEASE && _window.SENTRY_RELEASE.id, + logger: 'javascript', + ignoreErrors: [], + ignoreUrls: [], + whitelistUrls: [], + includePaths: [], + headers: null, + collectWindowErrors: true, + captureUnhandledRejections: true, + maxMessageLength: 0, + // By default, truncates URL values to 250 chars + maxUrlLength: 250, + stackTraceLimit: 50, + autoBreadcrumbs: true, + instrument: true, + sampleRate: 1, + sanitizeKeys: [] + }; + this._fetchDefaults = { + method: 'POST', + keepalive: true, + // Despite all stars in the sky saying that Edge supports old draft syntax, aka 'never', 'always', 'origin' and 'default + // https://caniuse.com/#feat=referrer-policy + // It doesn't. And it throw exception instead of ignoring this parameter... + // REF: https://github.com/getsentry/raven-js/issues/1233 + referrerPolicy: supportsReferrerPolicy() ? 'origin' : '' + }; + this._ignoreOnError = 0; + this._isRavenInstalled = false; + this._originalErrorStackTraceLimit = Error.stackTraceLimit; + // capture references to window.console *and* all its methods first + // before the console plugin has a chance to monkey patch + this._originalConsole = _window.console || {}; + this._originalConsoleMethods = {}; + this._plugins = []; + this._startTime = now(); + this._wrappedBuiltIns = []; + this._breadcrumbs = []; + this._lastCapturedEvent = null; + this._keypressTimeout; + this._location = _window.location; + this._lastHref = this._location && this._location.href; + this._resetBackoff(); + + // eslint-disable-next-line guard-for-in + for (var method in this._originalConsole) { + this._originalConsoleMethods[method] = this._originalConsole[method]; + } +} + +/* + * The core Raven singleton + * + * @this {Raven} + */ + +Raven.prototype = { + // Hardcode version string so that raven source can be loaded directly via + // webpack (using a build step causes webpack #1617). Grunt verifies that + // this value matches package.json during build. + // See: https://github.com/getsentry/raven-js/issues/465 + VERSION: '3.25.2', + + debug: false, + + TraceKit: TraceKit, // alias to TraceKit + + /* + * Configure Raven with a DSN and extra options + * + * @param {string} dsn The public Sentry DSN + * @param {object} options Set of global options [optional] + * @return {Raven} + */ + config: function(dsn, options) { + var self = this; + + if (self._globalServer) { + this._logDebug('error', 'Error: Raven has already been configured'); + return self; + } + if (!dsn) return self; + + var globalOptions = self._globalOptions; + + // merge in options + if (options) { + each(options, function(key, value) { + // tags and extra are special and need to be put into context + if (key === 'tags' || key === 'extra' || key === 'user') { + self._globalContext[key] = value; + } else { + globalOptions[key] = value; + } + }); + } + + self.setDSN(dsn); + + // "Script error." is hard coded into browsers for errors that it can't read. + // this is the result of a script being pulled in from an external domain and CORS. + globalOptions.ignoreErrors.push(/^Script error\.?$/); + globalOptions.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/); + + // join regexp rules into one big rule + globalOptions.ignoreErrors = joinRegExp(globalOptions.ignoreErrors); + globalOptions.ignoreUrls = globalOptions.ignoreUrls.length + ? joinRegExp(globalOptions.ignoreUrls) + : false; + globalOptions.whitelistUrls = globalOptions.whitelistUrls.length + ? joinRegExp(globalOptions.whitelistUrls) + : false; + globalOptions.includePaths = joinRegExp(globalOptions.includePaths); + globalOptions.maxBreadcrumbs = Math.max( + 0, + Math.min(globalOptions.maxBreadcrumbs || 100, 100) + ); // default and hard limit is 100 + + var autoBreadcrumbDefaults = { + xhr: true, + console: true, + dom: true, + location: true, + sentry: true + }; + + var autoBreadcrumbs = globalOptions.autoBreadcrumbs; + if ({}.toString.call(autoBreadcrumbs) === '[object Object]') { + autoBreadcrumbs = objectMerge(autoBreadcrumbDefaults, autoBreadcrumbs); + } else if (autoBreadcrumbs !== false) { + autoBreadcrumbs = autoBreadcrumbDefaults; + } + globalOptions.autoBreadcrumbs = autoBreadcrumbs; + + var instrumentDefaults = { + tryCatch: true + }; + + var instrument = globalOptions.instrument; + if ({}.toString.call(instrument) === '[object Object]') { + instrument = objectMerge(instrumentDefaults, instrument); + } else if (instrument !== false) { + instrument = instrumentDefaults; + } + globalOptions.instrument = instrument; + + TraceKit.collectWindowErrors = !!globalOptions.collectWindowErrors; + + // return for chaining + return self; + }, + + /* + * Installs a global window.onerror error handler + * to capture and report uncaught exceptions. + * At this point, install() is required to be called due + * to the way TraceKit is set up. + * + * @return {Raven} + */ + install: function() { + var self = this; + if (self.isSetup() && !self._isRavenInstalled) { + TraceKit.report.subscribe(function() { + self._handleOnErrorStackInfo.apply(self, arguments); + }); + + if (self._globalOptions.captureUnhandledRejections) { + self._attachPromiseRejectionHandler(); + } + + self._patchFunctionToString(); + + if (self._globalOptions.instrument && self._globalOptions.instrument.tryCatch) { + self._instrumentTryCatch(); + } + + if (self._globalOptions.autoBreadcrumbs) self._instrumentBreadcrumbs(); + + // Install all of the plugins + self._drainPlugins(); + + self._isRavenInstalled = true; + } + + Error.stackTraceLimit = self._globalOptions.stackTraceLimit; + return this; + }, + + /* + * Set the DSN (can be called multiple time unlike config) + * + * @param {string} dsn The public Sentry DSN + */ + setDSN: function(dsn) { + var self = this, + uri = self._parseDSN(dsn), + lastSlash = uri.path.lastIndexOf('/'), + path = uri.path.substr(1, lastSlash); + + self._dsn = dsn; + self._globalKey = uri.user; + self._globalSecret = uri.pass && uri.pass.substr(1); + self._globalProject = uri.path.substr(lastSlash + 1); + + self._globalServer = self._getGlobalServer(uri); + + self._globalEndpoint = + self._globalServer + '/' + path + 'api/' + self._globalProject + '/store/'; + + // Reset backoff state since we may be pointing at a + // new project/server + this._resetBackoff(); + }, + + /* + * Wrap code within a context so Raven can capture errors + * reliably across domains that is executed immediately. + * + * @param {object} options A specific set of options for this context [optional] + * @param {function} func The callback to be immediately executed within the context + * @param {array} args An array of arguments to be called with the callback [optional] + */ + context: function(options, func, args) { + if (isFunction(options)) { + args = func || []; + func = options; + options = undefined; + } + + return this.wrap(options, func).apply(this, args); + }, + + /* + * Wrap code within a context and returns back a new function to be executed + * + * @param {object} options A specific set of options for this context [optional] + * @param {function} func The function to be wrapped in a new context + * @param {function} func A function to call before the try/catch wrapper [optional, private] + * @return {function} The newly wrapped functions with a context + */ + wrap: function(options, func, _before) { + var self = this; + // 1 argument has been passed, and it's not a function + // so just return it + if (isUndefined(func) && !isFunction(options)) { + return options; + } + + // options is optional + if (isFunction(options)) { + func = options; + options = undefined; + } + + // At this point, we've passed along 2 arguments, and the second one + // is not a function either, so we'll just return the second argument. + if (!isFunction(func)) { + return func; + } + + // We don't wanna wrap it twice! + try { + if (func.__raven__) { + return func; + } + + // If this has already been wrapped in the past, return that + if (func.__raven_wrapper__) { + return func.__raven_wrapper__; + } + } catch (e) { + // Just accessing custom props in some Selenium environments + // can cause a "Permission denied" exception (see raven-js#495). + // Bail on wrapping and return the function as-is (defers to window.onerror). + return func; + } + + function wrapped() { + var args = [], + i = arguments.length, + deep = !options || (options && options.deep !== false); + + if (_before && isFunction(_before)) { + _before.apply(this, arguments); + } + + // Recursively wrap all of a function's arguments that are + // functions themselves. + while (i--) args[i] = deep ? self.wrap(options, arguments[i]) : arguments[i]; + + try { + // Attempt to invoke user-land function + // NOTE: If you are a Sentry user, and you are seeing this stack frame, it + // means Raven caught an error invoking your application code. This is + // expected behavior and NOT indicative of a bug with Raven.js. + return func.apply(this, args); + } catch (e) { + self._ignoreNextOnError(); + self.captureException(e, options); + throw e; + } + } + + // copy over properties of the old function + for (var property in func) { + if (hasKey(func, property)) { + wrapped[property] = func[property]; + } + } + wrapped.prototype = func.prototype; + + func.__raven_wrapper__ = wrapped; + // Signal that this function has been wrapped/filled already + // for both debugging and to prevent it to being wrapped/filled twice + wrapped.__raven__ = true; + wrapped.__orig__ = func; + + return wrapped; + }, + + /** + * Uninstalls the global error handler. + * + * @return {Raven} + */ + uninstall: function() { + TraceKit.report.uninstall(); + + this._detachPromiseRejectionHandler(); + this._unpatchFunctionToString(); + this._restoreBuiltIns(); + this._restoreConsole(); + + Error.stackTraceLimit = this._originalErrorStackTraceLimit; + this._isRavenInstalled = false; + + return this; + }, + + /** + * Callback used for `unhandledrejection` event + * + * @param {PromiseRejectionEvent} event An object containing + * promise: the Promise that was rejected + * reason: the value with which the Promise was rejected + * @return void + */ + _promiseRejectionHandler: function(event) { + this._logDebug('debug', 'Raven caught unhandled promise rejection:', event); + this.captureException(event.reason, { + extra: { + unhandledPromiseRejection: true + } + }); + }, + + /** + * Installs the global promise rejection handler. + * + * @return {raven} + */ + _attachPromiseRejectionHandler: function() { + this._promiseRejectionHandler = this._promiseRejectionHandler.bind(this); + _window.addEventListener && + _window.addEventListener('unhandledrejection', this._promiseRejectionHandler); + return this; + }, + + /** + * Uninstalls the global promise rejection handler. + * + * @return {raven} + */ + _detachPromiseRejectionHandler: function() { + _window.removeEventListener && + _window.removeEventListener('unhandledrejection', this._promiseRejectionHandler); + return this; + }, + + /** + * Manually capture an exception and send it over to Sentry + * + * @param {error} ex An exception to be logged + * @param {object} options A specific set of options for this error [optional] + * @return {Raven} + */ + captureException: function(ex, options) { + options = objectMerge({trimHeadFrames: 0}, options ? options : {}); + + if (isErrorEvent(ex) && ex.error) { + // If it is an ErrorEvent with `error` property, extract it to get actual Error + ex = ex.error; + } else if (isDOMError(ex) || isDOMException(ex)) { + // If it is a DOMError or DOMException (which are legacy APIs, but still supported in some browsers) + // then we just extract the name and message, as they don't provide anything else + // https://developer.mozilla.org/en-US/docs/Web/API/DOMError + // https://developer.mozilla.org/en-US/docs/Web/API/DOMException + var name = ex.name || (isDOMError(ex) ? 'DOMError' : 'DOMException'); + var message = ex.message ? name + ': ' + ex.message : name; + + return this.captureMessage( + message, + objectMerge(options, { + // neither DOMError or DOMException provide stack trace and we most likely wont get it this way as well + // but it's barely any overhead so we may at least try + stacktrace: true, + trimHeadFrames: options.trimHeadFrames + 1 + }) + ); + } else if (isError(ex)) { + // we have a real Error object + ex = ex; + } else if (isPlainObject(ex)) { + // If it is plain Object, serialize it manually and extract options + // This will allow us to group events based on top-level keys + // which is much better than creating new group when any key/value change + options = this._getCaptureExceptionOptionsFromPlainObject(options, ex); + ex = new Error(options.message); + } else { + // If none of previous checks were valid, then it means that + // it's not a DOMError/DOMException + // it's not a plain Object + // it's not a valid ErrorEvent (one with an error property) + // it's not an Error + // So bail out and capture it as a simple message: + return this.captureMessage( + ex, + objectMerge(options, { + stacktrace: true, // if we fall back to captureMessage, default to attempting a new trace + trimHeadFrames: options.trimHeadFrames + 1 + }) + ); + } + + // Store the raw exception object for potential debugging and introspection + this._lastCapturedException = ex; + + // TraceKit.report will re-raise any exception passed to it, + // which means you have to wrap it in try/catch. Instead, we + // can wrap it here and only re-raise if TraceKit.report + // raises an exception different from the one we asked to + // report on. + try { + var stack = TraceKit.computeStackTrace(ex); + this._handleStackInfo(stack, options); + } catch (ex1) { + if (ex !== ex1) { + throw ex1; + } + } + + return this; + }, + + _getCaptureExceptionOptionsFromPlainObject: function(currentOptions, ex) { + var exKeys = Object.keys(ex).sort(); + var options = objectMerge(currentOptions, { + message: + 'Non-Error exception captured with keys: ' + serializeKeysForMessage(exKeys), + fingerprint: [md5(exKeys)], + extra: currentOptions.extra || {} + }); + options.extra.__serialized__ = serializeException(ex); + + return options; + }, + + /* + * Manually send a message to Sentry + * + * @param {string} msg A plain message to be captured in Sentry + * @param {object} options A specific set of options for this message [optional] + * @return {Raven} + */ + captureMessage: function(msg, options) { + // config() automagically converts ignoreErrors from a list to a RegExp so we need to test for an + // early call; we'll error on the side of logging anything called before configuration since it's + // probably something you should see: + if ( + !!this._globalOptions.ignoreErrors.test && + this._globalOptions.ignoreErrors.test(msg) + ) { + return; + } + + options = options || {}; + msg = msg + ''; // Make sure it's actually a string + + var data = objectMerge( + { + message: msg + }, + options + ); + + var ex; + // Generate a "synthetic" stack trace from this point. + // NOTE: If you are a Sentry user, and you are seeing this stack frame, it is NOT indicative + // of a bug with Raven.js. Sentry generates synthetic traces either by configuration, + // or if it catches a thrown object without a "stack" property. + try { + throw new Error(msg); + } catch (ex1) { + ex = ex1; + } + + // null exception name so `Error` isn't prefixed to msg + ex.name = null; + var stack = TraceKit.computeStackTrace(ex); + + // stack[0] is `throw new Error(msg)` call itself, we are interested in the frame that was just before that, stack[1] + var initialCall = isArray(stack.stack) && stack.stack[1]; + + // if stack[1] is `Raven.captureException`, it means that someone passed a string to it and we redirected that call + // to be handled by `captureMessage`, thus `initialCall` is the 3rd one, not 2nd + // initialCall => captureException(string) => captureMessage(string) + if (initialCall && initialCall.func === 'Raven.captureException') { + initialCall = stack.stack[2]; + } + + var fileurl = (initialCall && initialCall.url) || ''; + + if ( + !!this._globalOptions.ignoreUrls.test && + this._globalOptions.ignoreUrls.test(fileurl) + ) { + return; + } + + if ( + !!this._globalOptions.whitelistUrls.test && + !this._globalOptions.whitelistUrls.test(fileurl) + ) { + return; + } + + if (this._globalOptions.stacktrace || (options && options.stacktrace)) { + // fingerprint on msg, not stack trace (legacy behavior, could be revisited) + data.fingerprint = data.fingerprint == null ? msg : data.fingerprint; + + options = objectMerge( + { + trimHeadFrames: 0 + }, + options + ); + // Since we know this is a synthetic trace, the top frame (this function call) + // MUST be from Raven.js, so mark it for trimming + // We add to the trim counter so that callers can choose to trim extra frames, such + // as utility functions. + options.trimHeadFrames += 1; + + var frames = this._prepareFrames(stack, options); + data.stacktrace = { + // Sentry expects frames oldest to newest + frames: frames.reverse() + }; + } + + // Make sure that fingerprint is always wrapped in an array + if (data.fingerprint) { + data.fingerprint = isArray(data.fingerprint) + ? data.fingerprint + : [data.fingerprint]; + } + + // Fire away! + this._send(data); + + return this; + }, + + captureBreadcrumb: function(obj) { + var crumb = objectMerge( + { + timestamp: now() / 1000 + }, + obj + ); + + if (isFunction(this._globalOptions.breadcrumbCallback)) { + var result = this._globalOptions.breadcrumbCallback(crumb); + + if (isObject(result) && !isEmptyObject(result)) { + crumb = result; + } else if (result === false) { + return this; + } + } + + this._breadcrumbs.push(crumb); + if (this._breadcrumbs.length > this._globalOptions.maxBreadcrumbs) { + this._breadcrumbs.shift(); + } + return this; + }, + + addPlugin: function(plugin /*arg1, arg2, ... argN*/) { + var pluginArgs = [].slice.call(arguments, 1); + + this._plugins.push([plugin, pluginArgs]); + if (this._isRavenInstalled) { + this._drainPlugins(); + } + + return this; + }, + + /* + * Set/clear a user to be sent along with the payload. + * + * @param {object} user An object representing user data [optional] + * @return {Raven} + */ + setUserContext: function(user) { + // Intentionally do not merge here since that's an unexpected behavior. + this._globalContext.user = user; + + return this; + }, + + /* + * Merge extra attributes to be sent along with the payload. + * + * @param {object} extra An object representing extra data [optional] + * @return {Raven} + */ + setExtraContext: function(extra) { + this._mergeContext('extra', extra); + + return this; + }, + + /* + * Merge tags to be sent along with the payload. + * + * @param {object} tags An object representing tags [optional] + * @return {Raven} + */ + setTagsContext: function(tags) { + this._mergeContext('tags', tags); + + return this; + }, + + /* + * Clear all of the context. + * + * @return {Raven} + */ + clearContext: function() { + this._globalContext = {}; + + return this; + }, + + /* + * Get a copy of the current context. This cannot be mutated. + * + * @return {object} copy of context + */ + getContext: function() { + // lol javascript + return JSON.parse(stringify(this._globalContext)); + }, + + /* + * Set environment of application + * + * @param {string} environment Typically something like 'production'. + * @return {Raven} + */ + setEnvironment: function(environment) { + this._globalOptions.environment = environment; + + return this; + }, + + /* + * Set release version of application + * + * @param {string} release Typically something like a git SHA to identify version + * @return {Raven} + */ + setRelease: function(release) { + this._globalOptions.release = release; + + return this; + }, + + /* + * Set the dataCallback option + * + * @param {function} callback The callback to run which allows the + * data blob to be mutated before sending + * @return {Raven} + */ + setDataCallback: function(callback) { + var original = this._globalOptions.dataCallback; + this._globalOptions.dataCallback = keepOriginalCallback(original, callback); + return this; + }, + + /* + * Set the breadcrumbCallback option + * + * @param {function} callback The callback to run which allows filtering + * or mutating breadcrumbs + * @return {Raven} + */ + setBreadcrumbCallback: function(callback) { + var original = this._globalOptions.breadcrumbCallback; + this._globalOptions.breadcrumbCallback = keepOriginalCallback(original, callback); + return this; + }, + + /* + * Set the shouldSendCallback option + * + * @param {function} callback The callback to run which allows + * introspecting the blob before sending + * @return {Raven} + */ + setShouldSendCallback: function(callback) { + var original = this._globalOptions.shouldSendCallback; + this._globalOptions.shouldSendCallback = keepOriginalCallback(original, callback); + return this; + }, + + /** + * Override the default HTTP transport mechanism that transmits data + * to the Sentry server. + * + * @param {function} transport Function invoked instead of the default + * `makeRequest` handler. + * + * @return {Raven} + */ + setTransport: function(transport) { + this._globalOptions.transport = transport; + + return this; + }, + + /* + * Get the latest raw exception that was captured by Raven. + * + * @return {error} + */ + lastException: function() { + return this._lastCapturedException; + }, + + /* + * Get the last event id + * + * @return {string} + */ + lastEventId: function() { + return this._lastEventId; + }, + + /* + * Determine if Raven is setup and ready to go. + * + * @return {boolean} + */ + isSetup: function() { + if (!this._hasJSON) return false; // needs JSON support + if (!this._globalServer) { + if (!this.ravenNotConfiguredError) { + this.ravenNotConfiguredError = true; + this._logDebug('error', 'Error: Raven has not been configured.'); + } + return false; + } + return true; + }, + + afterLoad: function() { + // TODO: remove window dependence? + + // Attempt to initialize Raven on load + var RavenConfig = _window.RavenConfig; + if (RavenConfig) { + this.config(RavenConfig.dsn, RavenConfig.config).install(); + } + }, + + showReportDialog: function(options) { + if ( + !_document // doesn't work without a document (React native) + ) + return; + + options = options || {}; + + var lastEventId = options.eventId || this.lastEventId(); + if (!lastEventId) { + throw new RavenConfigError('Missing eventId'); + } + + var dsn = options.dsn || this._dsn; + if (!dsn) { + throw new RavenConfigError('Missing DSN'); + } + + var encode = encodeURIComponent; + var qs = ''; + qs += '?eventId=' + encode(lastEventId); + qs += '&dsn=' + encode(dsn); + + var user = options.user || this._globalContext.user; + if (user) { + if (user.name) qs += '&name=' + encode(user.name); + if (user.email) qs += '&email=' + encode(user.email); + } + + var globalServer = this._getGlobalServer(this._parseDSN(dsn)); + + var script = _document.createElement('script'); + script.async = true; + script.src = globalServer + '/api/embed/error-page/' + qs; + (_document.head || _document.body).appendChild(script); + }, + + /**** Private functions ****/ + _ignoreNextOnError: function() { + var self = this; + this._ignoreOnError += 1; + setTimeout(function() { + // onerror should trigger before setTimeout + self._ignoreOnError -= 1; + }); + }, + + _triggerEvent: function(eventType, options) { + // NOTE: `event` is a native browser thing, so let's avoid conflicting wiht it + var evt, key; + + if (!this._hasDocument) return; + + options = options || {}; + + eventType = 'raven' + eventType.substr(0, 1).toUpperCase() + eventType.substr(1); + + if (_document.createEvent) { + evt = _document.createEvent('HTMLEvents'); + evt.initEvent(eventType, true, true); + } else { + evt = _document.createEventObject(); + evt.eventType = eventType; + } + + for (key in options) + if (hasKey(options, key)) { + evt[key] = options[key]; + } + + if (_document.createEvent) { + // IE9 if standards + _document.dispatchEvent(evt); + } else { + // IE8 regardless of Quirks or Standards + // IE9 if quirks + try { + _document.fireEvent('on' + evt.eventType.toLowerCase(), evt); + } catch (e) { + // Do nothing + } + } + }, + + /** + * Wraps addEventListener to capture UI breadcrumbs + * @param evtName the event name (e.g. "click") + * @returns {Function} + * @private + */ + _breadcrumbEventHandler: function(evtName) { + var self = this; + return function(evt) { + // reset keypress timeout; e.g. triggering a 'click' after + // a 'keypress' will reset the keypress debounce so that a new + // set of keypresses can be recorded + self._keypressTimeout = null; + + // It's possible this handler might trigger multiple times for the same + // event (e.g. event propagation through node ancestors). Ignore if we've + // already captured the event. + if (self._lastCapturedEvent === evt) return; + + self._lastCapturedEvent = evt; + + // try/catch both: + // - accessing evt.target (see getsentry/raven-js#838, #768) + // - `htmlTreeAsString` because it's complex, and just accessing the DOM incorrectly + // can throw an exception in some circumstances. + var target; + try { + target = htmlTreeAsString(evt.target); + } catch (e) { + target = ''; + } + + self.captureBreadcrumb({ + category: 'ui.' + evtName, // e.g. ui.click, ui.input + message: target + }); + }; + }, + + /** + * Wraps addEventListener to capture keypress UI events + * @returns {Function} + * @private + */ + _keypressEventHandler: function() { + var self = this, + debounceDuration = 1000; // milliseconds + + // TODO: if somehow user switches keypress target before + // debounce timeout is triggered, we will only capture + // a single breadcrumb from the FIRST target (acceptable?) + return function(evt) { + var target; + try { + target = evt.target; + } catch (e) { + // just accessing event properties can throw an exception in some rare circumstances + // see: https://github.com/getsentry/raven-js/issues/838 + return; + } + var tagName = target && target.tagName; + + // only consider keypress events on actual input elements + // this will disregard keypresses targeting body (e.g. tabbing + // through elements, hotkeys, etc) + if ( + !tagName || + (tagName !== 'INPUT' && tagName !== 'TEXTAREA' && !target.isContentEditable) + ) + return; + + // record first keypress in a series, but ignore subsequent + // keypresses until debounce clears + var timeout = self._keypressTimeout; + if (!timeout) { + self._breadcrumbEventHandler('input')(evt); + } + clearTimeout(timeout); + self._keypressTimeout = setTimeout(function() { + self._keypressTimeout = null; + }, debounceDuration); + }; + }, + + /** + * Captures a breadcrumb of type "navigation", normalizing input URLs + * @param to the originating URL + * @param from the target URL + * @private + */ + _captureUrlChange: function(from, to) { + var parsedLoc = parseUrl(this._location.href); + var parsedTo = parseUrl(to); + var parsedFrom = parseUrl(from); + + // because onpopstate only tells you the "new" (to) value of location.href, and + // not the previous (from) value, we need to track the value of the current URL + // state ourselves + this._lastHref = to; + + // Use only the path component of the URL if the URL matches the current + // document (almost all the time when using pushState) + if (parsedLoc.protocol === parsedTo.protocol && parsedLoc.host === parsedTo.host) + to = parsedTo.relative; + if (parsedLoc.protocol === parsedFrom.protocol && parsedLoc.host === parsedFrom.host) + from = parsedFrom.relative; + + this.captureBreadcrumb({ + category: 'navigation', + data: { + to: to, + from: from + } + }); + }, + + _patchFunctionToString: function() { + var self = this; + self._originalFunctionToString = Function.prototype.toString; + // eslint-disable-next-line no-extend-native + Function.prototype.toString = function() { + if (typeof this === 'function' && this.__raven__) { + return self._originalFunctionToString.apply(this.__orig__, arguments); + } + return self._originalFunctionToString.apply(this, arguments); + }; + }, + + _unpatchFunctionToString: function() { + if (this._originalFunctionToString) { + // eslint-disable-next-line no-extend-native + Function.prototype.toString = this._originalFunctionToString; + } + }, + + /** + * Wrap timer functions and event targets to catch errors and provide + * better metadata. + */ + _instrumentTryCatch: function() { + var self = this; + + var wrappedBuiltIns = self._wrappedBuiltIns; + + function wrapTimeFn(orig) { + return function(fn, t) { + // preserve arity + // Make a copy of the arguments to prevent deoptimization + // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments + var args = new Array(arguments.length); + for (var i = 0; i < args.length; ++i) { + args[i] = arguments[i]; + } + var originalCallback = args[0]; + if (isFunction(originalCallback)) { + args[0] = self.wrap(originalCallback); + } + + // IE < 9 doesn't support .call/.apply on setInterval/setTimeout, but it + // also supports only two arguments and doesn't care what this is, so we + // can just call the original function directly. + if (orig.apply) { + return orig.apply(this, args); + } else { + return orig(args[0], args[1]); + } + }; + } + + var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; + + function wrapEventTarget(global) { + var proto = _window[global] && _window[global].prototype; + if (proto && proto.hasOwnProperty && proto.hasOwnProperty('addEventListener')) { + fill( + proto, + 'addEventListener', + function(orig) { + return function(evtName, fn, capture, secure) { + // preserve arity + try { + if (fn && fn.handleEvent) { + fn.handleEvent = self.wrap(fn.handleEvent); + } + } catch (err) { + // can sometimes get 'Permission denied to access property "handle Event' + } + + // More breadcrumb DOM capture ... done here and not in `_instrumentBreadcrumbs` + // so that we don't have more than one wrapper function + var before, clickHandler, keypressHandler; + + if ( + autoBreadcrumbs && + autoBreadcrumbs.dom && + (global === 'EventTarget' || global === 'Node') + ) { + // NOTE: generating multiple handlers per addEventListener invocation, should + // revisit and verify we can just use one (almost certainly) + clickHandler = self._breadcrumbEventHandler('click'); + keypressHandler = self._keypressEventHandler(); + before = function(evt) { + // need to intercept every DOM event in `before` argument, in case that + // same wrapped method is re-used for different events (e.g. mousemove THEN click) + // see #724 + if (!evt) return; + + var eventType; + try { + eventType = evt.type; + } catch (e) { + // just accessing event properties can throw an exception in some rare circumstances + // see: https://github.com/getsentry/raven-js/issues/838 + return; + } + if (eventType === 'click') return clickHandler(evt); + else if (eventType === 'keypress') return keypressHandler(evt); + }; + } + return orig.call( + this, + evtName, + self.wrap(fn, undefined, before), + capture, + secure + ); + }; + }, + wrappedBuiltIns + ); + fill( + proto, + 'removeEventListener', + function(orig) { + return function(evt, fn, capture, secure) { + try { + fn = fn && (fn.__raven_wrapper__ ? fn.__raven_wrapper__ : fn); + } catch (e) { + // ignore, accessing __raven_wrapper__ will throw in some Selenium environments + } + return orig.call(this, evt, fn, capture, secure); + }; + }, + wrappedBuiltIns + ); + } + } + + fill(_window, 'setTimeout', wrapTimeFn, wrappedBuiltIns); + fill(_window, 'setInterval', wrapTimeFn, wrappedBuiltIns); + if (_window.requestAnimationFrame) { + fill( + _window, + 'requestAnimationFrame', + function(orig) { + return function(cb) { + return orig(self.wrap(cb)); + }; + }, + wrappedBuiltIns + ); + } + + // event targets borrowed from bugsnag-js: + // https://github.com/bugsnag/bugsnag-js/blob/master/src/bugsnag.js#L666 + var eventTargets = [ + 'EventTarget', + 'Window', + 'Node', + 'ApplicationCache', + 'AudioTrackList', + 'ChannelMergerNode', + 'CryptoOperation', + 'EventSource', + 'FileReader', + 'HTMLUnknownElement', + 'IDBDatabase', + 'IDBRequest', + 'IDBTransaction', + 'KeyOperation', + 'MediaController', + 'MessagePort', + 'ModalWindow', + 'Notification', + 'SVGElementInstance', + 'Screen', + 'TextTrack', + 'TextTrackCue', + 'TextTrackList', + 'WebSocket', + 'WebSocketWorker', + 'Worker', + 'XMLHttpRequest', + 'XMLHttpRequestEventTarget', + 'XMLHttpRequestUpload' + ]; + for (var i = 0; i < eventTargets.length; i++) { + wrapEventTarget(eventTargets[i]); + } + }, + + /** + * Instrument browser built-ins w/ breadcrumb capturing + * - XMLHttpRequests + * - DOM interactions (click/typing) + * - window.location changes + * - console + * + * Can be disabled or individually configured via the `autoBreadcrumbs` config option + */ + _instrumentBreadcrumbs: function() { + var self = this; + var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; + + var wrappedBuiltIns = self._wrappedBuiltIns; + + function wrapProp(prop, xhr) { + if (prop in xhr && isFunction(xhr[prop])) { + fill(xhr, prop, function(orig) { + return self.wrap(orig); + }); // intentionally don't track filled methods on XHR instances + } + } + + if (autoBreadcrumbs.xhr && 'XMLHttpRequest' in _window) { + var xhrproto = _window.XMLHttpRequest && _window.XMLHttpRequest.prototype; + fill( + xhrproto, + 'open', + function(origOpen) { + return function(method, url) { + // preserve arity + + // if Sentry key appears in URL, don't capture + if (isString(url) && url.indexOf(self._globalKey) === -1) { + this.__raven_xhr = { + method: method, + url: url, + status_code: null + }; + } + + return origOpen.apply(this, arguments); + }; + }, + wrappedBuiltIns + ); + + fill( + xhrproto, + 'send', + function(origSend) { + return function() { + // preserve arity + var xhr = this; + + function onreadystatechangeHandler() { + if (xhr.__raven_xhr && xhr.readyState === 4) { + try { + // touching statusCode in some platforms throws + // an exception + xhr.__raven_xhr.status_code = xhr.status; + } catch (e) { + /* do nothing */ + } + + self.captureBreadcrumb({ + type: 'http', + category: 'xhr', + data: xhr.__raven_xhr + }); + } + } + + var props = ['onload', 'onerror', 'onprogress']; + for (var j = 0; j < props.length; j++) { + wrapProp(props[j], xhr); + } + + if ('onreadystatechange' in xhr && isFunction(xhr.onreadystatechange)) { + fill( + xhr, + 'onreadystatechange', + function(orig) { + return self.wrap(orig, undefined, onreadystatechangeHandler); + } /* intentionally don't track this instrumentation */ + ); + } else { + // if onreadystatechange wasn't actually set by the page on this xhr, we + // are free to set our own and capture the breadcrumb + xhr.onreadystatechange = onreadystatechangeHandler; + } + + return origSend.apply(this, arguments); + }; + }, + wrappedBuiltIns + ); + } + + if (autoBreadcrumbs.xhr && supportsFetch()) { + fill( + _window, + 'fetch', + function(origFetch) { + return function() { + // preserve arity + // Make a copy of the arguments to prevent deoptimization + // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments + var args = new Array(arguments.length); + for (var i = 0; i < args.length; ++i) { + args[i] = arguments[i]; + } + + var fetchInput = args[0]; + var method = 'GET'; + var url; + + if (typeof fetchInput === 'string') { + url = fetchInput; + } else if ('Request' in _window && fetchInput instanceof _window.Request) { + url = fetchInput.url; + if (fetchInput.method) { + method = fetchInput.method; + } + } else { + url = '' + fetchInput; + } + + // if Sentry key appears in URL, don't capture, as it's our own request + if (url.indexOf(self._globalKey) !== -1) { + return origFetch.apply(this, args); + } + + if (args[1] && args[1].method) { + method = args[1].method; + } + + var fetchData = { + method: method, + url: url, + status_code: null + }; + + return origFetch + .apply(this, args) + .then(function(response) { + fetchData.status_code = response.status; + + self.captureBreadcrumb({ + type: 'http', + category: 'fetch', + data: fetchData + }); + + return response; + }) + ['catch'](function(err) { + // if there is an error performing the request + self.captureBreadcrumb({ + type: 'http', + category: 'fetch', + data: fetchData, + level: 'error' + }); + + throw err; + }); + }; + }, + wrappedBuiltIns + ); + } + + // Capture breadcrumbs from any click that is unhandled / bubbled up all the way + // to the document. Do this before we instrument addEventListener. + if (autoBreadcrumbs.dom && this._hasDocument) { + if (_document.addEventListener) { + _document.addEventListener('click', self._breadcrumbEventHandler('click'), false); + _document.addEventListener('keypress', self._keypressEventHandler(), false); + } else if (_document.attachEvent) { + // IE8 Compatibility + _document.attachEvent('onclick', self._breadcrumbEventHandler('click')); + _document.attachEvent('onkeypress', self._keypressEventHandler()); + } + } + + // record navigation (URL) changes + // NOTE: in Chrome App environment, touching history.pushState, *even inside + // a try/catch block*, will cause Chrome to output an error to console.error + // borrowed from: https://github.com/angular/angular.js/pull/13945/files + var chrome = _window.chrome; + var isChromePackagedApp = chrome && chrome.app && chrome.app.runtime; + var hasPushAndReplaceState = + !isChromePackagedApp && + _window.history && + _window.history.pushState && + _window.history.replaceState; + if (autoBreadcrumbs.location && hasPushAndReplaceState) { + // TODO: remove onpopstate handler on uninstall() + var oldOnPopState = _window.onpopstate; + _window.onpopstate = function() { + var currentHref = self._location.href; + self._captureUrlChange(self._lastHref, currentHref); + + if (oldOnPopState) { + return oldOnPopState.apply(this, arguments); + } + }; + + var historyReplacementFunction = function(origHistFunction) { + // note history.pushState.length is 0; intentionally not declaring + // params to preserve 0 arity + return function(/* state, title, url */) { + var url = arguments.length > 2 ? arguments[2] : undefined; + + // url argument is optional + if (url) { + // coerce to string (this is what pushState does) + self._captureUrlChange(self._lastHref, url + ''); + } + + return origHistFunction.apply(this, arguments); + }; + }; + + fill(_window.history, 'pushState', historyReplacementFunction, wrappedBuiltIns); + fill(_window.history, 'replaceState', historyReplacementFunction, wrappedBuiltIns); + } + + if (autoBreadcrumbs.console && 'console' in _window && console.log) { + // console + var consoleMethodCallback = function(msg, data) { + self.captureBreadcrumb({ + message: msg, + level: data.level, + category: 'console' + }); + }; + + each(['debug', 'info', 'warn', 'error', 'log'], function(_, level) { + wrapConsoleMethod(console, level, consoleMethodCallback); + }); + } + }, + + _restoreBuiltIns: function() { + // restore any wrapped builtins + var builtin; + while (this._wrappedBuiltIns.length) { + builtin = this._wrappedBuiltIns.shift(); + + var obj = builtin[0], + name = builtin[1], + orig = builtin[2]; + + obj[name] = orig; + } + }, + + _restoreConsole: function() { + // eslint-disable-next-line guard-for-in + for (var method in this._originalConsoleMethods) { + this._originalConsole[method] = this._originalConsoleMethods[method]; + } + }, + + _drainPlugins: function() { + var self = this; + + // FIX ME TODO + each(this._plugins, function(_, plugin) { + var installer = plugin[0]; + var args = plugin[1]; + installer.apply(self, [self].concat(args)); + }); + }, + + _parseDSN: function(str) { + var m = dsnPattern.exec(str), + dsn = {}, + i = 7; + + try { + while (i--) dsn[dsnKeys[i]] = m[i] || ''; + } catch (e) { + throw new RavenConfigError('Invalid DSN: ' + str); + } + + if (dsn.pass && !this._globalOptions.allowSecretKey) { + throw new RavenConfigError( + 'Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key' + ); + } + + return dsn; + }, + + _getGlobalServer: function(uri) { + // assemble the endpoint from the uri pieces + var globalServer = '//' + uri.host + (uri.port ? ':' + uri.port : ''); + + if (uri.protocol) { + globalServer = uri.protocol + ':' + globalServer; + } + return globalServer; + }, + + _handleOnErrorStackInfo: function() { + // if we are intentionally ignoring errors via onerror, bail out + if (!this._ignoreOnError) { + this._handleStackInfo.apply(this, arguments); + } + }, + + _handleStackInfo: function(stackInfo, options) { + var frames = this._prepareFrames(stackInfo, options); + + this._triggerEvent('handle', { + stackInfo: stackInfo, + options: options + }); + + this._processException( + stackInfo.name, + stackInfo.message, + stackInfo.url, + stackInfo.lineno, + frames, + options + ); + }, + + _prepareFrames: function(stackInfo, options) { + var self = this; + var frames = []; + if (stackInfo.stack && stackInfo.stack.length) { + each(stackInfo.stack, function(i, stack) { + var frame = self._normalizeFrame(stack, stackInfo.url); + if (frame) { + frames.push(frame); + } + }); + + // e.g. frames captured via captureMessage throw + if (options && options.trimHeadFrames) { + for (var j = 0; j < options.trimHeadFrames && j < frames.length; j++) { + frames[j].in_app = false; + } + } + } + frames = frames.slice(0, this._globalOptions.stackTraceLimit); + return frames; + }, + + _normalizeFrame: function(frame, stackInfoUrl) { + // normalize the frames data + var normalized = { + filename: frame.url, + lineno: frame.line, + colno: frame.column, + function: frame.func || '?' + }; + + // Case when we don't have any information about the error + // E.g. throwing a string or raw object, instead of an `Error` in Firefox + // Generating synthetic error doesn't add any value here + // + // We should probably somehow let a user know that they should fix their code + if (!frame.url) { + normalized.filename = stackInfoUrl; // fallback to whole stacks url from onerror handler + } + + normalized.in_app = !// determine if an exception came from outside of our app + // first we check the global includePaths list. + ( + (!!this._globalOptions.includePaths.test && + !this._globalOptions.includePaths.test(normalized.filename)) || + // Now we check for fun, if the function name is Raven or TraceKit + /(Raven|TraceKit)\./.test(normalized['function']) || + // finally, we do a last ditch effort and check for raven.min.js + /raven\.(min\.)?js$/.test(normalized.filename) + ); + + return normalized; + }, + + _processException: function(type, message, fileurl, lineno, frames, options) { + var prefixedMessage = (type ? type + ': ' : '') + (message || ''); + if ( + !!this._globalOptions.ignoreErrors.test && + (this._globalOptions.ignoreErrors.test(message) || + this._globalOptions.ignoreErrors.test(prefixedMessage)) + ) { + return; + } + + var stacktrace; + + if (frames && frames.length) { + fileurl = frames[0].filename || fileurl; + // Sentry expects frames oldest to newest + // and JS sends them as newest to oldest + frames.reverse(); + stacktrace = {frames: frames}; + } else if (fileurl) { + stacktrace = { + frames: [ + { + filename: fileurl, + lineno: lineno, + in_app: true + } + ] + }; + } + + if ( + !!this._globalOptions.ignoreUrls.test && + this._globalOptions.ignoreUrls.test(fileurl) + ) { + return; + } + + if ( + !!this._globalOptions.whitelistUrls.test && + !this._globalOptions.whitelistUrls.test(fileurl) + ) { + return; + } + + var data = objectMerge( + { + // sentry.interfaces.Exception + exception: { + values: [ + { + type: type, + value: message, + stacktrace: stacktrace + } + ] + }, + transaction: fileurl + }, + options + ); + + // Fire away! + this._send(data); + }, + + _trimPacket: function(data) { + // For now, we only want to truncate the two different messages + // but this could/should be expanded to just trim everything + var max = this._globalOptions.maxMessageLength; + if (data.message) { + data.message = truncate(data.message, max); + } + if (data.exception) { + var exception = data.exception.values[0]; + exception.value = truncate(exception.value, max); + } + + var request = data.request; + if (request) { + if (request.url) { + request.url = truncate(request.url, this._globalOptions.maxUrlLength); + } + if (request.Referer) { + request.Referer = truncate(request.Referer, this._globalOptions.maxUrlLength); + } + } + + if (data.breadcrumbs && data.breadcrumbs.values) + this._trimBreadcrumbs(data.breadcrumbs); + + return data; + }, + + /** + * Truncate breadcrumb values (right now just URLs) + */ + _trimBreadcrumbs: function(breadcrumbs) { + // known breadcrumb properties with urls + // TODO: also consider arbitrary prop values that start with (https?)?:// + var urlProps = ['to', 'from', 'url'], + urlProp, + crumb, + data; + + for (var i = 0; i < breadcrumbs.values.length; ++i) { + crumb = breadcrumbs.values[i]; + if ( + !crumb.hasOwnProperty('data') || + !isObject(crumb.data) || + objectFrozen(crumb.data) + ) + continue; + + data = objectMerge({}, crumb.data); + for (var j = 0; j < urlProps.length; ++j) { + urlProp = urlProps[j]; + if (data.hasOwnProperty(urlProp) && data[urlProp]) { + data[urlProp] = truncate(data[urlProp], this._globalOptions.maxUrlLength); + } + } + breadcrumbs.values[i].data = data; + } + }, + + _getHttpData: function() { + if (!this._hasNavigator && !this._hasDocument) return; + var httpData = {}; + + if (this._hasNavigator && _navigator.userAgent) { + httpData.headers = { + 'User-Agent': _navigator.userAgent + }; + } + + // Check in `window` instead of `document`, as we may be in ServiceWorker environment + if (_window.location && _window.location.href) { + httpData.url = _window.location.href; + } + + if (this._hasDocument && _document.referrer) { + if (!httpData.headers) httpData.headers = {}; + httpData.headers.Referer = _document.referrer; + } + + return httpData; + }, + + _resetBackoff: function() { + this._backoffDuration = 0; + this._backoffStart = null; + }, + + _shouldBackoff: function() { + return this._backoffDuration && now() - this._backoffStart < this._backoffDuration; + }, + + /** + * Returns true if the in-process data payload matches the signature + * of the previously-sent data + * + * NOTE: This has to be done at this level because TraceKit can generate + * data from window.onerror WITHOUT an exception object (IE8, IE9, + * other old browsers). This can take the form of an "exception" + * data object with a single frame (derived from the onerror args). + */ + _isRepeatData: function(current) { + var last = this._lastData; + + if ( + !last || + current.message !== last.message || // defined for captureMessage + current.transaction !== last.transaction // defined for captureException/onerror + ) + return false; + + // Stacktrace interface (i.e. from captureMessage) + if (current.stacktrace || last.stacktrace) { + return isSameStacktrace(current.stacktrace, last.stacktrace); + } else if (current.exception || last.exception) { + // Exception interface (i.e. from captureException/onerror) + return isSameException(current.exception, last.exception); + } + + return true; + }, + + _setBackoffState: function(request) { + // If we are already in a backoff state, don't change anything + if (this._shouldBackoff()) { + return; + } + + var status = request.status; + + // 400 - project_id doesn't exist or some other fatal + // 401 - invalid/revoked dsn + // 429 - too many requests + if (!(status === 400 || status === 401 || status === 429)) return; + + var retry; + try { + // If Retry-After is not in Access-Control-Expose-Headers, most + // browsers will throw an exception trying to access it + if (supportsFetch()) { + retry = request.headers.get('Retry-After'); + } else { + retry = request.getResponseHeader('Retry-After'); + } + + // Retry-After is returned in seconds + retry = parseInt(retry, 10) * 1000; + } catch (e) { + /* eslint no-empty:0 */ + } + + this._backoffDuration = retry + ? // If Sentry server returned a Retry-After value, use it + retry + : // Otherwise, double the last backoff duration (starts at 1 sec) + this._backoffDuration * 2 || 1000; + + this._backoffStart = now(); + }, + + _send: function(data) { + var globalOptions = this._globalOptions; + + var baseData = { + project: this._globalProject, + logger: globalOptions.logger, + platform: 'javascript' + }, + httpData = this._getHttpData(); + + if (httpData) { + baseData.request = httpData; + } + + // HACK: delete `trimHeadFrames` to prevent from appearing in outbound payload + if (data.trimHeadFrames) delete data.trimHeadFrames; + + data = objectMerge(baseData, data); + + // Merge in the tags and extra separately since objectMerge doesn't handle a deep merge + data.tags = objectMerge(objectMerge({}, this._globalContext.tags), data.tags); + data.extra = objectMerge(objectMerge({}, this._globalContext.extra), data.extra); + + // Send along our own collected metadata with extra + data.extra['session:duration'] = now() - this._startTime; + + if (this._breadcrumbs && this._breadcrumbs.length > 0) { + // intentionally make shallow copy so that additions + // to breadcrumbs aren't accidentally sent in this request + data.breadcrumbs = { + values: [].slice.call(this._breadcrumbs, 0) + }; + } + + if (this._globalContext.user) { + // sentry.interfaces.User + data.user = this._globalContext.user; + } + + // Include the environment if it's defined in globalOptions + if (globalOptions.environment) data.environment = globalOptions.environment; + + // Include the release if it's defined in globalOptions + if (globalOptions.release) data.release = globalOptions.release; + + // Include server_name if it's defined in globalOptions + if (globalOptions.serverName) data.server_name = globalOptions.serverName; + + data = this._sanitizeData(data); + + // Cleanup empty properties before sending them to the server + Object.keys(data).forEach(function(key) { + if (data[key] == null || data[key] === '' || isEmptyObject(data[key])) { + delete data[key]; + } + }); + + if (isFunction(globalOptions.dataCallback)) { + data = globalOptions.dataCallback(data) || data; + } + + // Why?????????? + if (!data || isEmptyObject(data)) { + return; + } + + // Check if the request should be filtered or not + if ( + isFunction(globalOptions.shouldSendCallback) && + !globalOptions.shouldSendCallback(data) + ) { + return; + } + + // Backoff state: Sentry server previously responded w/ an error (e.g. 429 - too many requests), + // so drop requests until "cool-off" period has elapsed. + if (this._shouldBackoff()) { + this._logDebug('warn', 'Raven dropped error due to backoff: ', data); + return; + } + + if (typeof globalOptions.sampleRate === 'number') { + if (Math.random() < globalOptions.sampleRate) { + this._sendProcessedPayload(data); + } + } else { + this._sendProcessedPayload(data); + } + }, + + _sanitizeData: function(data) { + return sanitize(data, this._globalOptions.sanitizeKeys); + }, + + _getUuid: function() { + return uuid4(); + }, + + _sendProcessedPayload: function(data, callback) { + var self = this; + var globalOptions = this._globalOptions; + + if (!this.isSetup()) return; + + // Try and clean up the packet before sending by truncating long values + data = this._trimPacket(data); + + // ideally duplicate error testing should occur *before* dataCallback/shouldSendCallback, + // but this would require copying an un-truncated copy of the data packet, which can be + // arbitrarily deep (extra_data) -- could be worthwhile? will revisit + if (!this._globalOptions.allowDuplicates && this._isRepeatData(data)) { + this._logDebug('warn', 'Raven dropped repeat event: ', data); + return; + } + + // Send along an event_id if not explicitly passed. + // This event_id can be used to reference the error within Sentry itself. + // Set lastEventId after we know the error should actually be sent + this._lastEventId = data.event_id || (data.event_id = this._getUuid()); + + // Store outbound payload after trim + this._lastData = data; + + this._logDebug('debug', 'Raven about to send:', data); + + var auth = { + sentry_version: '7', + sentry_client: 'raven-js/' + this.VERSION, + sentry_key: this._globalKey + }; + + if (this._globalSecret) { + auth.sentry_secret = this._globalSecret; + } + + var exception = data.exception && data.exception.values[0]; + + // only capture 'sentry' breadcrumb is autoBreadcrumbs is truthy + if ( + this._globalOptions.autoBreadcrumbs && + this._globalOptions.autoBreadcrumbs.sentry + ) { + this.captureBreadcrumb({ + category: 'sentry', + message: exception + ? (exception.type ? exception.type + ': ' : '') + exception.value + : data.message, + event_id: data.event_id, + level: data.level || 'error' // presume error unless specified + }); + } + + var url = this._globalEndpoint; + (globalOptions.transport || this._makeRequest).call(this, { + url: url, + auth: auth, + data: data, + options: globalOptions, + onSuccess: function success() { + self._resetBackoff(); + + self._triggerEvent('success', { + data: data, + src: url + }); + callback && callback(); + }, + onError: function failure(error) { + self._logDebug('error', 'Raven transport failed to send: ', error); + + if (error.request) { + self._setBackoffState(error.request); + } + + self._triggerEvent('failure', { + data: data, + src: url + }); + error = error || new Error('Raven send failed (no additional details provided)'); + callback && callback(error); + } + }); + }, + + _makeRequest: function(opts) { + // Auth is intentionally sent as part of query string (NOT as custom HTTP header) to avoid preflight CORS requests + var url = opts.url + '?' + urlencode(opts.auth); + + var evaluatedHeaders = null; + var evaluatedFetchParameters = {}; + + if (opts.options.headers) { + evaluatedHeaders = this._evaluateHash(opts.options.headers); + } + + if (opts.options.fetchParameters) { + evaluatedFetchParameters = this._evaluateHash(opts.options.fetchParameters); + } + + if (supportsFetch()) { + evaluatedFetchParameters.body = stringify(opts.data); + + var defaultFetchOptions = objectMerge({}, this._fetchDefaults); + var fetchOptions = objectMerge(defaultFetchOptions, evaluatedFetchParameters); + + if (evaluatedHeaders) { + fetchOptions.headers = evaluatedHeaders; + } + + return _window + .fetch(url, fetchOptions) + .then(function(response) { + if (response.ok) { + opts.onSuccess && opts.onSuccess(); + } else { + var error = new Error('Sentry error code: ' + response.status); + // It's called request only to keep compatibility with XHR interface + // and not add more redundant checks in setBackoffState method + error.request = response; + opts.onError && opts.onError(error); + } + }) + ['catch'](function() { + opts.onError && + opts.onError(new Error('Sentry error code: network unavailable')); + }); + } + + var request = _window.XMLHttpRequest && new _window.XMLHttpRequest(); + if (!request) return; + + // if browser doesn't support CORS (e.g. IE7), we are out of luck + var hasCORS = 'withCredentials' in request || typeof XDomainRequest !== 'undefined'; + + if (!hasCORS) return; + + if ('withCredentials' in request) { + request.onreadystatechange = function() { + if (request.readyState !== 4) { + return; + } else if (request.status === 200) { + opts.onSuccess && opts.onSuccess(); + } else if (opts.onError) { + var err = new Error('Sentry error code: ' + request.status); + err.request = request; + opts.onError(err); + } + }; + } else { + request = new XDomainRequest(); + // xdomainrequest cannot go http -> https (or vice versa), + // so always use protocol relative + url = url.replace(/^https?:/, ''); + + // onreadystatechange not supported by XDomainRequest + if (opts.onSuccess) { + request.onload = opts.onSuccess; + } + if (opts.onError) { + request.onerror = function() { + var err = new Error('Sentry error code: XDomainRequest'); + err.request = request; + opts.onError(err); + }; + } + } + + request.open('POST', url); + + if (evaluatedHeaders) { + each(evaluatedHeaders, function(key, value) { + request.setRequestHeader(key, value); + }); + } + + request.send(stringify(opts.data)); + }, + + _evaluateHash: function(hash) { + var evaluated = {}; + + for (var key in hash) { + if (hash.hasOwnProperty(key)) { + var value = hash[key]; + evaluated[key] = typeof value === 'function' ? value() : value; + } + } + + return evaluated; + }, + + _logDebug: function(level) { + // We allow `Raven.debug` and `Raven.config(DSN, { debug: true })` to not make backward incompatible API change + if ( + this._originalConsoleMethods[level] && + (this.debug || this._globalOptions.debug) + ) { + // In IE<10 console methods do not have their own 'apply' method + Function.prototype.apply.call( + this._originalConsoleMethods[level], + this._originalConsole, + [].slice.call(arguments, 1) + ); + } + }, + + _mergeContext: function(key, context) { + if (isUndefined(context)) { + delete this._globalContext[key]; + } else { + this._globalContext[key] = objectMerge(this._globalContext[key] || {}, context); + } + } +}; + +// Deprecations +Raven.prototype.setUser = Raven.prototype.setUserContext; +Raven.prototype.setReleaseContext = Raven.prototype.setRelease; + +module.exports = Raven; + +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"10":10,"3":3,"4":4,"7":7,"8":8,"9":9}],6:[function(_dereq_,module,exports){ +(function (global){ +/** + * Enforces a single instance of the Raven client, and the + * main entry point for Raven. If you are a consumer of the + * Raven library, you SHOULD load this file (vs raven.js). + **/ + +var RavenConstructor = _dereq_(5); + +// This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) +var _window = + typeof window !== 'undefined' + ? window + : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; +var _Raven = _window.Raven; + +var Raven = new RavenConstructor(); + +/* + * Allow multiple versions of Raven to be installed. + * Strip Raven from the global context and returns the instance. + * + * @return {Raven} + */ +Raven.noConflict = function() { + _window.Raven = _Raven; + return Raven; +}; + +Raven.afterLoad(); + +module.exports = Raven; + +/** + * DISCLAIMER: + * + * Expose `Client` constructor for cases where user want to track multiple "sub-applications" in one larger app. + * It's not meant to be used by a wide audience, so pleaaase make sure that you know what you're doing before using it. + * Accidentally calling `install` multiple times, may result in an unexpected behavior that's very hard to debug. + * + * It's called `Client' to be in-line with Raven Node implementation. + * + * HOWTO: + * + * import Raven from 'raven-js'; + * + * const someAppReporter = new Raven.Client(); + * const someOtherAppReporter = new Raven.Client(); + * + * someAppReporter.config('__DSN__', { + * ...config goes here + * }); + * + * someOtherAppReporter.config('__OTHER_DSN__', { + * ...config goes here + * }); + * + * someAppReporter.captureMessage(...); + * someAppReporter.captureException(...); + * someAppReporter.captureBreadcrumb(...); + * + * someOtherAppReporter.captureMessage(...); + * someOtherAppReporter.captureException(...); + * someOtherAppReporter.captureBreadcrumb(...); + * + * It should "just work". + */ +module.exports.Client = RavenConstructor; + +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"5":5}],7:[function(_dereq_,module,exports){ +(function (global){ +var stringify = _dereq_(9); + +var _window = + typeof window !== 'undefined' + ? window + : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; + +function isObject(what) { + return typeof what === 'object' && what !== null; +} + +// Yanked from https://git.io/vS8DV re-used under CC0 +// with some tiny modifications +function isError(value) { + switch (Object.prototype.toString.call(value)) { + case '[object Error]': + return true; + case '[object Exception]': + return true; + case '[object DOMException]': + return true; + default: + return value instanceof Error; + } +} + +function isErrorEvent(value) { + return Object.prototype.toString.call(value) === '[object ErrorEvent]'; +} + +function isDOMError(value) { + return Object.prototype.toString.call(value) === '[object DOMError]'; +} + +function isDOMException(value) { + return Object.prototype.toString.call(value) === '[object DOMException]'; +} + +function isUndefined(what) { + return what === void 0; +} + +function isFunction(what) { + return typeof what === 'function'; +} + +function isPlainObject(what) { + return Object.prototype.toString.call(what) === '[object Object]'; +} + +function isString(what) { + return Object.prototype.toString.call(what) === '[object String]'; +} + +function isArray(what) { + return Object.prototype.toString.call(what) === '[object Array]'; +} + +function isEmptyObject(what) { + if (!isPlainObject(what)) return false; + + for (var _ in what) { + if (what.hasOwnProperty(_)) { + return false; + } + } + return true; +} + +function supportsErrorEvent() { + try { + new ErrorEvent(''); // eslint-disable-line no-new + return true; + } catch (e) { + return false; + } +} + +function supportsDOMError() { + try { + new DOMError(''); // eslint-disable-line no-new + return true; + } catch (e) { + return false; + } +} + +function supportsDOMException() { + try { + new DOMException(''); // eslint-disable-line no-new + return true; + } catch (e) { + return false; + } +} + +function supportsFetch() { + if (!('fetch' in _window)) return false; + + try { + new Headers(); // eslint-disable-line no-new + new Request(''); // eslint-disable-line no-new + new Response(); // eslint-disable-line no-new + return true; + } catch (e) { + return false; + } +} + +// Despite all stars in the sky saying that Edge supports old draft syntax, aka 'never', 'always', 'origin' and 'default +// https://caniuse.com/#feat=referrer-policy +// It doesn't. And it throw exception instead of ignoring this parameter... +// REF: https://github.com/getsentry/raven-js/issues/1233 +function supportsReferrerPolicy() { + if (!supportsFetch()) return false; + + try { + // eslint-disable-next-line no-new + new Request('pickleRick', { + referrerPolicy: 'origin' + }); + return true; + } catch (e) { + return false; + } +} + +function supportsPromiseRejectionEvent() { + return typeof PromiseRejectionEvent === 'function'; +} + +function wrappedCallback(callback) { + function dataCallback(data, original) { + var normalizedData = callback(data) || data; + if (original) { + return original(normalizedData) || normalizedData; + } + return normalizedData; + } + + return dataCallback; +} + +function each(obj, callback) { + var i, j; + + if (isUndefined(obj.length)) { + for (i in obj) { + if (hasKey(obj, i)) { + callback.call(null, i, obj[i]); + } + } + } else { + j = obj.length; + if (j) { + for (i = 0; i < j; i++) { + callback.call(null, i, obj[i]); + } + } + } +} + +function objectMerge(obj1, obj2) { + if (!obj2) { + return obj1; + } + each(obj2, function(key, value) { + obj1[key] = value; + }); + return obj1; +} + +/** + * This function is only used for react-native. + * react-native freezes object that have already been sent over the + * js bridge. We need this function in order to check if the object is frozen. + * So it's ok that objectFrozen returns false if Object.isFrozen is not + * supported because it's not relevant for other "platforms". See related issue: + * https://github.com/getsentry/react-native-sentry/issues/57 + */ +function objectFrozen(obj) { + if (!Object.isFrozen) { + return false; + } + return Object.isFrozen(obj); +} + +function truncate(str, max) { + if (typeof max !== 'number') { + throw new Error('2nd argument to `truncate` function should be a number'); + } + if (typeof str !== 'string' || max === 0) { + return str; + } + return str.length <= max ? str : str.substr(0, max) + '\u2026'; +} + +/** + * hasKey, a better form of hasOwnProperty + * Example: hasKey(MainHostObject, property) === true/false + * + * @param {Object} host object to check property + * @param {string} key to check + */ +function hasKey(object, key) { + return Object.prototype.hasOwnProperty.call(object, key); +} + +function joinRegExp(patterns) { + // Combine an array of regular expressions and strings into one large regexp + // Be mad. + var sources = [], + i = 0, + len = patterns.length, + pattern; + + for (; i < len; i++) { + pattern = patterns[i]; + if (isString(pattern)) { + // If it's a string, we need to escape it + // Taken from: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions + sources.push(pattern.replace(/([.*+?^=!:${}()|\[\]\/\\])/g, '\\$1')); + } else if (pattern && pattern.source) { + // If it's a regexp already, we want to extract the source + sources.push(pattern.source); + } + // Intentionally skip other cases + } + return new RegExp(sources.join('|'), 'i'); +} + +function urlencode(o) { + var pairs = []; + each(o, function(key, value) { + pairs.push(encodeURIComponent(key) + '=' + encodeURIComponent(value)); + }); + return pairs.join('&'); +} + +// borrowed from https://tools.ietf.org/html/rfc3986#appendix-B +// intentionally using regex and not href parsing trick because React Native and other +// environments where DOM might not be available +function parseUrl(url) { + if (typeof url !== 'string') return {}; + var match = url.match(/^(([^:\/?#]+):)?(\/\/([^\/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?$/); + + // coerce to undefined values to empty string so we don't get 'undefined' + var query = match[6] || ''; + var fragment = match[8] || ''; + return { + protocol: match[2], + host: match[4], + path: match[5], + relative: match[5] + query + fragment // everything minus origin + }; +} +function uuid4() { + var crypto = _window.crypto || _window.msCrypto; + + if (!isUndefined(crypto) && crypto.getRandomValues) { + // Use window.crypto API if available + // eslint-disable-next-line no-undef + var arr = new Uint16Array(8); + crypto.getRandomValues(arr); + + // set 4 in byte 7 + arr[3] = (arr[3] & 0xfff) | 0x4000; + // set 2 most significant bits of byte 9 to '10' + arr[4] = (arr[4] & 0x3fff) | 0x8000; + + var pad = function(num) { + var v = num.toString(16); + while (v.length < 4) { + v = '0' + v; + } + return v; + }; + + return ( + pad(arr[0]) + + pad(arr[1]) + + pad(arr[2]) + + pad(arr[3]) + + pad(arr[4]) + + pad(arr[5]) + + pad(arr[6]) + + pad(arr[7]) + ); + } else { + // http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/2117523#2117523 + return 'xxxxxxxxxxxx4xxxyxxxxxxxxxxxxxxx'.replace(/[xy]/g, function(c) { + var r = (Math.random() * 16) | 0, + v = c === 'x' ? r : (r & 0x3) | 0x8; + return v.toString(16); + }); + } +} + +/** + * Given a child DOM element, returns a query-selector statement describing that + * and its ancestors + * e.g. [HTMLElement] => body > div > input#foo.btn[name=baz] + * @param elem + * @returns {string} + */ +function htmlTreeAsString(elem) { + /* eslint no-extra-parens:0*/ + var MAX_TRAVERSE_HEIGHT = 5, + MAX_OUTPUT_LEN = 80, + out = [], + height = 0, + len = 0, + separator = ' > ', + sepLength = separator.length, + nextStr; + + while (elem && height++ < MAX_TRAVERSE_HEIGHT) { + nextStr = htmlElementAsString(elem); + // bail out if + // - nextStr is the 'html' element + // - the length of the string that would be created exceeds MAX_OUTPUT_LEN + // (ignore this limit if we are on the first iteration) + if ( + nextStr === 'html' || + (height > 1 && len + out.length * sepLength + nextStr.length >= MAX_OUTPUT_LEN) + ) { + break; + } + + out.push(nextStr); + + len += nextStr.length; + elem = elem.parentNode; + } + + return out.reverse().join(separator); +} + +/** + * Returns a simple, query-selector representation of a DOM element + * e.g. [HTMLElement] => input#foo.btn[name=baz] + * @param HTMLElement + * @returns {string} + */ +function htmlElementAsString(elem) { + var out = [], + className, + classes, + key, + attr, + i; + + if (!elem || !elem.tagName) { + return ''; + } + + out.push(elem.tagName.toLowerCase()); + if (elem.id) { + out.push('#' + elem.id); + } + + className = elem.className; + if (className && isString(className)) { + classes = className.split(/\s+/); + for (i = 0; i < classes.length; i++) { + out.push('.' + classes[i]); + } + } + var attrWhitelist = ['type', 'name', 'title', 'alt']; + for (i = 0; i < attrWhitelist.length; i++) { + key = attrWhitelist[i]; + attr = elem.getAttribute(key); + if (attr) { + out.push('[' + key + '="' + attr + '"]'); + } + } + return out.join(''); +} + +/** + * Returns true if either a OR b is truthy, but not both + */ +function isOnlyOneTruthy(a, b) { + return !!(!!a ^ !!b); +} + +/** + * Returns true if both parameters are undefined + */ +function isBothUndefined(a, b) { + return isUndefined(a) && isUndefined(b); +} + +/** + * Returns true if the two input exception interfaces have the same content + */ +function isSameException(ex1, ex2) { + if (isOnlyOneTruthy(ex1, ex2)) return false; + + ex1 = ex1.values[0]; + ex2 = ex2.values[0]; + + if (ex1.type !== ex2.type || ex1.value !== ex2.value) return false; + + // in case both stacktraces are undefined, we can't decide so default to false + if (isBothUndefined(ex1.stacktrace, ex2.stacktrace)) return false; + + return isSameStacktrace(ex1.stacktrace, ex2.stacktrace); +} + +/** + * Returns true if the two input stack trace interfaces have the same content + */ +function isSameStacktrace(stack1, stack2) { + if (isOnlyOneTruthy(stack1, stack2)) return false; + + var frames1 = stack1.frames; + var frames2 = stack2.frames; + + // Exit early if frame count differs + if (frames1.length !== frames2.length) return false; + + // Iterate through every frame; bail out if anything differs + var a, b; + for (var i = 0; i < frames1.length; i++) { + a = frames1[i]; + b = frames2[i]; + if ( + a.filename !== b.filename || + a.lineno !== b.lineno || + a.colno !== b.colno || + a['function'] !== b['function'] + ) + return false; + } + return true; +} + +/** + * Polyfill a method + * @param obj object e.g. `document` + * @param name method name present on object e.g. `addEventListener` + * @param replacement replacement function + * @param track {optional} record instrumentation to an array + */ +function fill(obj, name, replacement, track) { + if (obj == null) return; + var orig = obj[name]; + obj[name] = replacement(orig); + obj[name].__raven__ = true; + obj[name].__orig__ = orig; + if (track) { + track.push([obj, name, orig]); + } +} + +/** + * Join values in array + * @param input array of values to be joined together + * @param delimiter string to be placed in-between values + * @returns {string} + */ +function safeJoin(input, delimiter) { + if (!isArray(input)) return ''; + + var output = []; + + for (var i = 0; i < input.length; i++) { + try { + output.push(String(input[i])); + } catch (e) { + output.push('[value cannot be serialized]'); + } + } + + return output.join(delimiter); +} + +// Default Node.js REPL depth +var MAX_SERIALIZE_EXCEPTION_DEPTH = 3; +// 50kB, as 100kB is max payload size, so half sounds reasonable +var MAX_SERIALIZE_EXCEPTION_SIZE = 50 * 1024; +var MAX_SERIALIZE_KEYS_LENGTH = 40; + +function utf8Length(value) { + return ~-encodeURI(value).split(/%..|./).length; +} + +function jsonSize(value) { + return utf8Length(JSON.stringify(value)); +} + +function serializeValue(value) { + if (typeof value === 'string') { + var maxLength = 40; + return truncate(value, maxLength); + } else if ( + typeof value === 'number' || + typeof value === 'boolean' || + typeof value === 'undefined' + ) { + return value; + } + + var type = Object.prototype.toString.call(value); + + // Node.js REPL notation + if (type === '[object Object]') return '[Object]'; + if (type === '[object Array]') return '[Array]'; + if (type === '[object Function]') + return value.name ? '[Function: ' + value.name + ']' : '[Function]'; + + return value; +} + +function serializeObject(value, depth) { + if (depth === 0) return serializeValue(value); + + if (isPlainObject(value)) { + return Object.keys(value).reduce(function(acc, key) { + acc[key] = serializeObject(value[key], depth - 1); + return acc; + }, {}); + } else if (Array.isArray(value)) { + return value.map(function(val) { + return serializeObject(val, depth - 1); + }); + } + + return serializeValue(value); +} + +function serializeException(ex, depth, maxSize) { + if (!isPlainObject(ex)) return ex; + + depth = typeof depth !== 'number' ? MAX_SERIALIZE_EXCEPTION_DEPTH : depth; + maxSize = typeof depth !== 'number' ? MAX_SERIALIZE_EXCEPTION_SIZE : maxSize; + + var serialized = serializeObject(ex, depth); + + if (jsonSize(stringify(serialized)) > maxSize) { + return serializeException(ex, depth - 1); + } + + return serialized; +} + +function serializeKeysForMessage(keys, maxLength) { + if (typeof keys === 'number' || typeof keys === 'string') return keys.toString(); + if (!Array.isArray(keys)) return ''; + + keys = keys.filter(function(key) { + return typeof key === 'string'; + }); + if (keys.length === 0) return '[object has no keys]'; + + maxLength = typeof maxLength !== 'number' ? MAX_SERIALIZE_KEYS_LENGTH : maxLength; + if (keys[0].length >= maxLength) return keys[0]; + + for (var usedKeys = keys.length; usedKeys > 0; usedKeys--) { + var serialized = keys.slice(0, usedKeys).join(', '); + if (serialized.length > maxLength) continue; + if (usedKeys === keys.length) return serialized; + return serialized + '\u2026'; + } + + return ''; +} + +function sanitize(input, sanitizeKeys) { + if (!isArray(sanitizeKeys) || (isArray(sanitizeKeys) && sanitizeKeys.length === 0)) + return input; + + var sanitizeRegExp = joinRegExp(sanitizeKeys); + var sanitizeMask = '********'; + var safeInput; + + try { + safeInput = JSON.parse(stringify(input)); + } catch (o_O) { + return input; + } + + function sanitizeWorker(workerInput) { + if (isArray(workerInput)) { + return workerInput.map(function(val) { + return sanitizeWorker(val); + }); + } + + if (isPlainObject(workerInput)) { + return Object.keys(workerInput).reduce(function(acc, k) { + if (sanitizeRegExp.test(k)) { + acc[k] = sanitizeMask; + } else { + acc[k] = sanitizeWorker(workerInput[k]); + } + return acc; + }, {}); + } + + return workerInput; + } + + return sanitizeWorker(safeInput); +} + +module.exports = { + isObject: isObject, + isError: isError, + isErrorEvent: isErrorEvent, + isDOMError: isDOMError, + isDOMException: isDOMException, + isUndefined: isUndefined, + isFunction: isFunction, + isPlainObject: isPlainObject, + isString: isString, + isArray: isArray, + isEmptyObject: isEmptyObject, + supportsErrorEvent: supportsErrorEvent, + supportsDOMError: supportsDOMError, + supportsDOMException: supportsDOMException, + supportsFetch: supportsFetch, + supportsReferrerPolicy: supportsReferrerPolicy, + supportsPromiseRejectionEvent: supportsPromiseRejectionEvent, + wrappedCallback: wrappedCallback, + each: each, + objectMerge: objectMerge, + truncate: truncate, + objectFrozen: objectFrozen, + hasKey: hasKey, + joinRegExp: joinRegExp, + urlencode: urlencode, + uuid4: uuid4, + htmlTreeAsString: htmlTreeAsString, + htmlElementAsString: htmlElementAsString, + isSameException: isSameException, + isSameStacktrace: isSameStacktrace, + parseUrl: parseUrl, + fill: fill, + safeJoin: safeJoin, + serializeException: serializeException, + serializeKeysForMessage: serializeKeysForMessage, + sanitize: sanitize +}; + +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"9":9}],8:[function(_dereq_,module,exports){ +(function (global){ +var utils = _dereq_(7); + +/* + TraceKit - Cross brower stack traces + + This was originally forked from github.com/occ/TraceKit, but has since been + largely re-written and is now maintained as part of raven-js. Tests for + this are in test/vendor. + + MIT license +*/ + +var TraceKit = { + collectWindowErrors: true, + debug: false +}; + +// This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) +var _window = + typeof window !== 'undefined' + ? window + : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; + +// global reference to slice +var _slice = [].slice; +var UNKNOWN_FUNCTION = '?'; + +// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error#Error_types +var ERROR_TYPES_RE = /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/; + +function getLocationHref() { + if (typeof document === 'undefined' || document.location == null) return ''; + return document.location.href; +} + +function getLocationOrigin() { + if (typeof document === 'undefined' || document.location == null) return ''; + + // Oh dear IE10... + if (!document.location.origin) { + document.location.origin = + document.location.protocol + + '//' + + document.location.hostname + + (document.location.port ? ':' + document.location.port : ''); + } + + return document.location.origin; +} + +/** + * TraceKit.report: cross-browser processing of unhandled exceptions + * + * Syntax: + * TraceKit.report.subscribe(function(stackInfo) { ... }) + * TraceKit.report.unsubscribe(function(stackInfo) { ... }) + * TraceKit.report(exception) + * try { ...code... } catch(ex) { TraceKit.report(ex); } + * + * Supports: + * - Firefox: full stack trace with line numbers, plus column number + * on top frame; column number is not guaranteed + * - Opera: full stack trace with line and column numbers + * - Chrome: full stack trace with line and column numbers + * - Safari: line and column number for the top frame only; some frames + * may be missing, and column number is not guaranteed + * - IE: line and column number for the top frame only; some frames + * may be missing, and column number is not guaranteed + * + * In theory, TraceKit should work on all of the following versions: + * - IE5.5+ (only 8.0 tested) + * - Firefox 0.9+ (only 3.5+ tested) + * - Opera 7+ (only 10.50 tested; versions 9 and earlier may require + * Exceptions Have Stacktrace to be enabled in opera:config) + * - Safari 3+ (only 4+ tested) + * - Chrome 1+ (only 5+ tested) + * - Konqueror 3.5+ (untested) + * + * Requires TraceKit.computeStackTrace. + * + * Tries to catch all unhandled exceptions and report them to the + * subscribed handlers. Please note that TraceKit.report will rethrow the + * exception. This is REQUIRED in order to get a useful stack trace in IE. + * If the exception does not reach the top of the browser, you will only + * get a stack trace from the point where TraceKit.report was called. + * + * Handlers receive a stackInfo object as described in the + * TraceKit.computeStackTrace docs. + */ +TraceKit.report = (function reportModuleWrapper() { + var handlers = [], + lastArgs = null, + lastException = null, + lastExceptionStack = null; + + /** + * Add a crash handler. + * @param {Function} handler + */ + function subscribe(handler) { + installGlobalHandler(); + handlers.push(handler); + } + + /** + * Remove a crash handler. + * @param {Function} handler + */ + function unsubscribe(handler) { + for (var i = handlers.length - 1; i >= 0; --i) { + if (handlers[i] === handler) { + handlers.splice(i, 1); + } + } + } + + /** + * Remove all crash handlers. + */ + function unsubscribeAll() { + uninstallGlobalHandler(); + handlers = []; + } + + /** + * Dispatch stack information to all handlers. + * @param {Object.} stack + */ + function notifyHandlers(stack, isWindowError) { + var exception = null; + if (isWindowError && !TraceKit.collectWindowErrors) { + return; + } + for (var i in handlers) { + if (handlers.hasOwnProperty(i)) { + try { + handlers[i].apply(null, [stack].concat(_slice.call(arguments, 2))); + } catch (inner) { + exception = inner; + } + } + } + + if (exception) { + throw exception; + } + } + + var _oldOnerrorHandler, _onErrorHandlerInstalled; + + /** + * Ensures all global unhandled exceptions are recorded. + * Supported by Gecko and IE. + * @param {string} msg Error message. + * @param {string} url URL of script that generated the exception. + * @param {(number|string)} lineNo The line number at which the error + * occurred. + * @param {?(number|string)} colNo The column number at which the error + * occurred. + * @param {?Error} ex The actual Error object. + */ + function traceKitWindowOnError(msg, url, lineNo, colNo, ex) { + var stack = null; + // If 'ex' is ErrorEvent, get real Error from inside + var exception = utils.isErrorEvent(ex) ? ex.error : ex; + // If 'msg' is ErrorEvent, get real message from inside + var message = utils.isErrorEvent(msg) ? msg.message : msg; + + if (lastExceptionStack) { + TraceKit.computeStackTrace.augmentStackTraceWithInitialElement( + lastExceptionStack, + url, + lineNo, + message + ); + processLastException(); + } else if (exception && utils.isError(exception)) { + // non-string `exception` arg; attempt to extract stack trace + + // New chrome and blink send along a real error object + // Let's just report that like a normal error. + // See: https://mikewest.org/2013/08/debugging-runtime-errors-with-window-onerror + stack = TraceKit.computeStackTrace(exception); + notifyHandlers(stack, true); + } else { + var location = { + url: url, + line: lineNo, + column: colNo + }; + + var name = undefined; + var groups; + + if ({}.toString.call(message) === '[object String]') { + var groups = message.match(ERROR_TYPES_RE); + if (groups) { + name = groups[1]; + message = groups[2]; + } + } + + location.func = UNKNOWN_FUNCTION; + + stack = { + name: name, + message: message, + url: getLocationHref(), + stack: [location] + }; + notifyHandlers(stack, true); + } + + if (_oldOnerrorHandler) { + return _oldOnerrorHandler.apply(this, arguments); + } + + return false; + } + + function installGlobalHandler() { + if (_onErrorHandlerInstalled) { + return; + } + _oldOnerrorHandler = _window.onerror; + _window.onerror = traceKitWindowOnError; + _onErrorHandlerInstalled = true; + } + + function uninstallGlobalHandler() { + if (!_onErrorHandlerInstalled) { + return; + } + _window.onerror = _oldOnerrorHandler; + _onErrorHandlerInstalled = false; + _oldOnerrorHandler = undefined; + } + + function processLastException() { + var _lastExceptionStack = lastExceptionStack, + _lastArgs = lastArgs; + lastArgs = null; + lastExceptionStack = null; + lastException = null; + notifyHandlers.apply(null, [_lastExceptionStack, false].concat(_lastArgs)); + } + + /** + * Reports an unhandled Error to TraceKit. + * @param {Error} ex + * @param {?boolean} rethrow If false, do not re-throw the exception. + * Only used for window.onerror to not cause an infinite loop of + * rethrowing. + */ + function report(ex, rethrow) { + var args = _slice.call(arguments, 1); + if (lastExceptionStack) { + if (lastException === ex) { + return; // already caught by an inner catch block, ignore + } else { + processLastException(); + } + } + + var stack = TraceKit.computeStackTrace(ex); + lastExceptionStack = stack; + lastException = ex; + lastArgs = args; + + // If the stack trace is incomplete, wait for 2 seconds for + // slow slow IE to see if onerror occurs or not before reporting + // this exception; otherwise, we will end up with an incomplete + // stack trace + setTimeout(function() { + if (lastException === ex) { + processLastException(); + } + }, stack.incomplete ? 2000 : 0); + + if (rethrow !== false) { + throw ex; // re-throw to propagate to the top level (and cause window.onerror) + } + } + + report.subscribe = subscribe; + report.unsubscribe = unsubscribe; + report.uninstall = unsubscribeAll; + return report; +})(); + +/** + * TraceKit.computeStackTrace: cross-browser stack traces in JavaScript + * + * Syntax: + * s = TraceKit.computeStackTrace(exception) // consider using TraceKit.report instead (see below) + * Returns: + * s.name - exception name + * s.message - exception message + * s.stack[i].url - JavaScript or HTML file URL + * s.stack[i].func - function name, or empty for anonymous functions (if guessing did not work) + * s.stack[i].args - arguments passed to the function, if known + * s.stack[i].line - line number, if known + * s.stack[i].column - column number, if known + * + * Supports: + * - Firefox: full stack trace with line numbers and unreliable column + * number on top frame + * - Opera 10: full stack trace with line and column numbers + * - Opera 9-: full stack trace with line numbers + * - Chrome: full stack trace with line and column numbers + * - Safari: line and column number for the topmost stacktrace element + * only + * - IE: no line numbers whatsoever + * + * Tries to guess names of anonymous functions by looking for assignments + * in the source code. In IE and Safari, we have to guess source file names + * by searching for function bodies inside all page scripts. This will not + * work for scripts that are loaded cross-domain. + * Here be dragons: some function names may be guessed incorrectly, and + * duplicate functions may be mismatched. + * + * TraceKit.computeStackTrace should only be used for tracing purposes. + * Logging of unhandled exceptions should be done with TraceKit.report, + * which builds on top of TraceKit.computeStackTrace and provides better + * IE support by utilizing the window.onerror event to retrieve information + * about the top of the stack. + * + * Note: In IE and Safari, no stack trace is recorded on the Error object, + * so computeStackTrace instead walks its *own* chain of callers. + * This means that: + * * in Safari, some methods may be missing from the stack trace; + * * in IE, the topmost function in the stack trace will always be the + * caller of computeStackTrace. + * + * This is okay for tracing (because you are likely to be calling + * computeStackTrace from the function you want to be the topmost element + * of the stack trace anyway), but not okay for logging unhandled + * exceptions (because your catch block will likely be far away from the + * inner function that actually caused the exception). + * + */ +TraceKit.computeStackTrace = (function computeStackTraceWrapper() { + // Contents of Exception in various browsers. + // + // SAFARI: + // ex.message = Can't find variable: qq + // ex.line = 59 + // ex.sourceId = 580238192 + // ex.sourceURL = http://... + // ex.expressionBeginOffset = 96 + // ex.expressionCaretOffset = 98 + // ex.expressionEndOffset = 98 + // ex.name = ReferenceError + // + // FIREFOX: + // ex.message = qq is not defined + // ex.fileName = http://... + // ex.lineNumber = 59 + // ex.columnNumber = 69 + // ex.stack = ...stack trace... (see the example below) + // ex.name = ReferenceError + // + // CHROME: + // ex.message = qq is not defined + // ex.name = ReferenceError + // ex.type = not_defined + // ex.arguments = ['aa'] + // ex.stack = ...stack trace... + // + // INTERNET EXPLORER: + // ex.message = ... + // ex.name = ReferenceError + // + // OPERA: + // ex.message = ...message... (see the example below) + // ex.name = ReferenceError + // ex.opera#sourceloc = 11 (pretty much useless, duplicates the info in ex.message) + // ex.stacktrace = n/a; see 'opera:config#UserPrefs|Exceptions Have Stacktrace' + + /** + * Computes stack trace information from the stack property. + * Chrome and Gecko use this property. + * @param {Error} ex + * @return {?Object.} Stack trace information. + */ + function computeStackTraceFromStackProp(ex) { + if (typeof ex.stack === 'undefined' || !ex.stack) return; + + var chrome = /^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i; + var winjs = /^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i; + // NOTE: blob urls are now supposed to always have an origin, therefore it's format + // which is `blob:http://url/path/with-some-uuid`, is matched by `blob.*?:\/` as well + var gecko = /^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i; + // Used to additionally parse URL/line/column from eval frames + var geckoEval = /(\S+) line (\d+)(?: > eval line \d+)* > eval/i; + var chromeEval = /\((\S*)(?::(\d+))(?::(\d+))\)/; + var lines = ex.stack.split('\n'); + var stack = []; + var submatch; + var parts; + var element; + var reference = /^(.*) is undefined$/.exec(ex.message); + + for (var i = 0, j = lines.length; i < j; ++i) { + if ((parts = chrome.exec(lines[i]))) { + var isNative = parts[2] && parts[2].indexOf('native') === 0; // start of line + var isEval = parts[2] && parts[2].indexOf('eval') === 0; // start of line + if (isEval && (submatch = chromeEval.exec(parts[2]))) { + // throw out eval line/column and use top-most line/column number + parts[2] = submatch[1]; // url + parts[3] = submatch[2]; // line + parts[4] = submatch[3]; // column + } + element = { + url: !isNative ? parts[2] : null, + func: parts[1] || UNKNOWN_FUNCTION, + args: isNative ? [parts[2]] : [], + line: parts[3] ? +parts[3] : null, + column: parts[4] ? +parts[4] : null + }; + } else if ((parts = winjs.exec(lines[i]))) { + element = { + url: parts[2], + func: parts[1] || UNKNOWN_FUNCTION, + args: [], + line: +parts[3], + column: parts[4] ? +parts[4] : null + }; + } else if ((parts = gecko.exec(lines[i]))) { + var isEval = parts[3] && parts[3].indexOf(' > eval') > -1; + if (isEval && (submatch = geckoEval.exec(parts[3]))) { + // throw out eval line/column and use top-most line number + parts[3] = submatch[1]; + parts[4] = submatch[2]; + parts[5] = null; // no column when eval + } else if (i === 0 && !parts[5] && typeof ex.columnNumber !== 'undefined') { + // FireFox uses this awesome columnNumber property for its top frame + // Also note, Firefox's column number is 0-based and everything else expects 1-based, + // so adding 1 + // NOTE: this hack doesn't work if top-most frame is eval + stack[0].column = ex.columnNumber + 1; + } + element = { + url: parts[3], + func: parts[1] || UNKNOWN_FUNCTION, + args: parts[2] ? parts[2].split(',') : [], + line: parts[4] ? +parts[4] : null, + column: parts[5] ? +parts[5] : null + }; + } else { + continue; + } + + if (!element.func && element.line) { + element.func = UNKNOWN_FUNCTION; + } + + if (element.url && element.url.substr(0, 5) === 'blob:') { + // Special case for handling JavaScript loaded into a blob. + // We use a synchronous AJAX request here as a blob is already in + // memory - it's not making a network request. This will generate a warning + // in the browser console, but there has already been an error so that's not + // that much of an issue. + var xhr = new XMLHttpRequest(); + xhr.open('GET', element.url, false); + xhr.send(null); + + // If we failed to download the source, skip this patch + if (xhr.status === 200) { + var source = xhr.responseText || ''; + + // We trim the source down to the last 300 characters as sourceMappingURL is always at the end of the file. + // Why 300? To be in line with: https://github.com/getsentry/sentry/blob/4af29e8f2350e20c28a6933354e4f42437b4ba42/src/sentry/lang/javascript/processor.py#L164-L175 + source = source.slice(-300); + + // Now we dig out the source map URL + var sourceMaps = source.match(/\/\/# sourceMappingURL=(.*)$/); + + // If we don't find a source map comment or we find more than one, continue on to the next element. + if (sourceMaps) { + var sourceMapAddress = sourceMaps[1]; + + // Now we check to see if it's a relative URL. + // If it is, convert it to an absolute one. + if (sourceMapAddress.charAt(0) === '~') { + sourceMapAddress = getLocationOrigin() + sourceMapAddress.slice(1); + } + + // Now we strip the '.map' off of the end of the URL and update the + // element so that Sentry can match the map to the blob. + element.url = sourceMapAddress.slice(0, -4); + } + } + } + + stack.push(element); + } + + if (!stack.length) { + return null; + } + + return { + name: ex.name, + message: ex.message, + url: getLocationHref(), + stack: stack + }; + } + + /** + * Adds information about the first frame to incomplete stack traces. + * Safari and IE require this to get complete data on the first frame. + * @param {Object.} stackInfo Stack trace information from + * one of the compute* methods. + * @param {string} url The URL of the script that caused an error. + * @param {(number|string)} lineNo The line number of the script that + * caused an error. + * @param {string=} message The error generated by the browser, which + * hopefully contains the name of the object that caused the error. + * @return {boolean} Whether or not the stack information was + * augmented. + */ + function augmentStackTraceWithInitialElement(stackInfo, url, lineNo, message) { + var initial = { + url: url, + line: lineNo + }; + + if (initial.url && initial.line) { + stackInfo.incomplete = false; + + if (!initial.func) { + initial.func = UNKNOWN_FUNCTION; + } + + if (stackInfo.stack.length > 0) { + if (stackInfo.stack[0].url === initial.url) { + if (stackInfo.stack[0].line === initial.line) { + return false; // already in stack trace + } else if ( + !stackInfo.stack[0].line && + stackInfo.stack[0].func === initial.func + ) { + stackInfo.stack[0].line = initial.line; + return false; + } + } + } + + stackInfo.stack.unshift(initial); + stackInfo.partial = true; + return true; + } else { + stackInfo.incomplete = true; + } + + return false; + } + + /** + * Computes stack trace information by walking the arguments.caller + * chain at the time the exception occurred. This will cause earlier + * frames to be missed but is the only way to get any stack trace in + * Safari and IE. The top frame is restored by + * {@link augmentStackTraceWithInitialElement}. + * @param {Error} ex + * @return {?Object.} Stack trace information. + */ + function computeStackTraceByWalkingCallerChain(ex, depth) { + var functionName = /function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i, + stack = [], + funcs = {}, + recursion = false, + parts, + item, + source; + + for ( + var curr = computeStackTraceByWalkingCallerChain.caller; + curr && !recursion; + curr = curr.caller + ) { + if (curr === computeStackTrace || curr === TraceKit.report) { + // console.log('skipping internal function'); + continue; + } + + item = { + url: null, + func: UNKNOWN_FUNCTION, + line: null, + column: null + }; + + if (curr.name) { + item.func = curr.name; + } else if ((parts = functionName.exec(curr.toString()))) { + item.func = parts[1]; + } + + if (typeof item.func === 'undefined') { + try { + item.func = parts.input.substring(0, parts.input.indexOf('{')); + } catch (e) {} + } + + if (funcs['' + curr]) { + recursion = true; + } else { + funcs['' + curr] = true; + } + + stack.push(item); + } + + if (depth) { + // console.log('depth is ' + depth); + // console.log('stack is ' + stack.length); + stack.splice(0, depth); + } + + var result = { + name: ex.name, + message: ex.message, + url: getLocationHref(), + stack: stack + }; + augmentStackTraceWithInitialElement( + result, + ex.sourceURL || ex.fileName, + ex.line || ex.lineNumber, + ex.message || ex.description + ); + return result; + } + + /** + * Computes a stack trace for an exception. + * @param {Error} ex + * @param {(string|number)=} depth + */ + function computeStackTrace(ex, depth) { + var stack = null; + depth = depth == null ? 0 : +depth; + + try { + stack = computeStackTraceFromStackProp(ex); + if (stack) { + return stack; + } + } catch (e) { + if (TraceKit.debug) { + throw e; + } + } + + try { + stack = computeStackTraceByWalkingCallerChain(ex, depth + 1); + if (stack) { + return stack; + } + } catch (e) { + if (TraceKit.debug) { + throw e; + } + } + return { + name: ex.name, + message: ex.message, + url: getLocationHref() + }; + } + + computeStackTrace.augmentStackTraceWithInitialElement = augmentStackTraceWithInitialElement; + computeStackTrace.computeStackTraceFromStackProp = computeStackTraceFromStackProp; + + return computeStackTrace; +})(); + +module.exports = TraceKit; + +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"7":7}],9:[function(_dereq_,module,exports){ +/* + json-stringify-safe + Like JSON.stringify, but doesn't throw on circular references. + + Originally forked from https://github.com/isaacs/json-stringify-safe + version 5.0.1 on 3/8/2017 and modified to handle Errors serialization + and IE8 compatibility. Tests for this are in test/vendor. + + ISC license: https://github.com/isaacs/json-stringify-safe/blob/master/LICENSE +*/ + +exports = module.exports = stringify; +exports.getSerialize = serializer; + +function indexOf(haystack, needle) { + for (var i = 0; i < haystack.length; ++i) { + if (haystack[i] === needle) return i; + } + return -1; +} + +function stringify(obj, replacer, spaces, cycleReplacer) { + return JSON.stringify(obj, serializer(replacer, cycleReplacer), spaces); +} + +// https://github.com/ftlabs/js-abbreviate/blob/fa709e5f139e7770a71827b1893f22418097fbda/index.js#L95-L106 +function stringifyError(value) { + var err = { + // These properties are implemented as magical getters and don't show up in for in + stack: value.stack, + message: value.message, + name: value.name + }; + + for (var i in value) { + if (Object.prototype.hasOwnProperty.call(value, i)) { + err[i] = value[i]; + } + } + + return err; +} + +function serializer(replacer, cycleReplacer) { + var stack = []; + var keys = []; + + if (cycleReplacer == null) { + cycleReplacer = function(key, value) { + if (stack[0] === value) { + return '[Circular ~]'; + } + return '[Circular ~.' + keys.slice(0, indexOf(stack, value)).join('.') + ']'; + }; + } + + return function(key, value) { + if (stack.length > 0) { + var thisPos = indexOf(stack, this); + ~thisPos ? stack.splice(thisPos + 1) : stack.push(this); + ~thisPos ? keys.splice(thisPos, Infinity, key) : keys.push(key); + + if (~indexOf(stack, value)) { + value = cycleReplacer.call(this, key, value); + } + } else { + stack.push(value); + } + + return replacer == null + ? value instanceof Error ? stringifyError(value) : value + : replacer.call(this, key, value); + }; +} + +},{}],10:[function(_dereq_,module,exports){ +/* + * JavaScript MD5 + * https://github.com/blueimp/JavaScript-MD5 + * + * Copyright 2011, Sebastian Tschan + * https://blueimp.net + * + * Licensed under the MIT license: + * https://opensource.org/licenses/MIT + * + * Based on + * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message + * Digest Algorithm, as defined in RFC 1321. + * Version 2.2 Copyright (C) Paul Johnston 1999 - 2009 + * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet + * Distributed under the BSD License + * See http://pajhome.org.uk/crypt/md5 for more info. + */ + +/* +* Add integers, wrapping at 2^32. This uses 16-bit operations internally +* to work around bugs in some JS interpreters. +*/ +function safeAdd(x, y) { + var lsw = (x & 0xffff) + (y & 0xffff); + var msw = (x >> 16) + (y >> 16) + (lsw >> 16); + return (msw << 16) | (lsw & 0xffff); +} + +/* +* Bitwise rotate a 32-bit number to the left. +*/ +function bitRotateLeft(num, cnt) { + return (num << cnt) | (num >>> (32 - cnt)); +} + +/* +* These functions implement the four basic operations the algorithm uses. +*/ +function md5cmn(q, a, b, x, s, t) { + return safeAdd(bitRotateLeft(safeAdd(safeAdd(a, q), safeAdd(x, t)), s), b); +} +function md5ff(a, b, c, d, x, s, t) { + return md5cmn((b & c) | (~b & d), a, b, x, s, t); +} +function md5gg(a, b, c, d, x, s, t) { + return md5cmn((b & d) | (c & ~d), a, b, x, s, t); +} +function md5hh(a, b, c, d, x, s, t) { + return md5cmn(b ^ c ^ d, a, b, x, s, t); +} +function md5ii(a, b, c, d, x, s, t) { + return md5cmn(c ^ (b | ~d), a, b, x, s, t); +} + +/* +* Calculate the MD5 of an array of little-endian words, and a bit length. +*/ +function binlMD5(x, len) { + /* append padding */ + x[len >> 5] |= 0x80 << (len % 32); + x[(((len + 64) >>> 9) << 4) + 14] = len; + + var i; + var olda; + var oldb; + var oldc; + var oldd; + var a = 1732584193; + var b = -271733879; + var c = -1732584194; + var d = 271733878; + + for (i = 0; i < x.length; i += 16) { + olda = a; + oldb = b; + oldc = c; + oldd = d; + + a = md5ff(a, b, c, d, x[i], 7, -680876936); + d = md5ff(d, a, b, c, x[i + 1], 12, -389564586); + c = md5ff(c, d, a, b, x[i + 2], 17, 606105819); + b = md5ff(b, c, d, a, x[i + 3], 22, -1044525330); + a = md5ff(a, b, c, d, x[i + 4], 7, -176418897); + d = md5ff(d, a, b, c, x[i + 5], 12, 1200080426); + c = md5ff(c, d, a, b, x[i + 6], 17, -1473231341); + b = md5ff(b, c, d, a, x[i + 7], 22, -45705983); + a = md5ff(a, b, c, d, x[i + 8], 7, 1770035416); + d = md5ff(d, a, b, c, x[i + 9], 12, -1958414417); + c = md5ff(c, d, a, b, x[i + 10], 17, -42063); + b = md5ff(b, c, d, a, x[i + 11], 22, -1990404162); + a = md5ff(a, b, c, d, x[i + 12], 7, 1804603682); + d = md5ff(d, a, b, c, x[i + 13], 12, -40341101); + c = md5ff(c, d, a, b, x[i + 14], 17, -1502002290); + b = md5ff(b, c, d, a, x[i + 15], 22, 1236535329); + + a = md5gg(a, b, c, d, x[i + 1], 5, -165796510); + d = md5gg(d, a, b, c, x[i + 6], 9, -1069501632); + c = md5gg(c, d, a, b, x[i + 11], 14, 643717713); + b = md5gg(b, c, d, a, x[i], 20, -373897302); + a = md5gg(a, b, c, d, x[i + 5], 5, -701558691); + d = md5gg(d, a, b, c, x[i + 10], 9, 38016083); + c = md5gg(c, d, a, b, x[i + 15], 14, -660478335); + b = md5gg(b, c, d, a, x[i + 4], 20, -405537848); + a = md5gg(a, b, c, d, x[i + 9], 5, 568446438); + d = md5gg(d, a, b, c, x[i + 14], 9, -1019803690); + c = md5gg(c, d, a, b, x[i + 3], 14, -187363961); + b = md5gg(b, c, d, a, x[i + 8], 20, 1163531501); + a = md5gg(a, b, c, d, x[i + 13], 5, -1444681467); + d = md5gg(d, a, b, c, x[i + 2], 9, -51403784); + c = md5gg(c, d, a, b, x[i + 7], 14, 1735328473); + b = md5gg(b, c, d, a, x[i + 12], 20, -1926607734); + + a = md5hh(a, b, c, d, x[i + 5], 4, -378558); + d = md5hh(d, a, b, c, x[i + 8], 11, -2022574463); + c = md5hh(c, d, a, b, x[i + 11], 16, 1839030562); + b = md5hh(b, c, d, a, x[i + 14], 23, -35309556); + a = md5hh(a, b, c, d, x[i + 1], 4, -1530992060); + d = md5hh(d, a, b, c, x[i + 4], 11, 1272893353); + c = md5hh(c, d, a, b, x[i + 7], 16, -155497632); + b = md5hh(b, c, d, a, x[i + 10], 23, -1094730640); + a = md5hh(a, b, c, d, x[i + 13], 4, 681279174); + d = md5hh(d, a, b, c, x[i], 11, -358537222); + c = md5hh(c, d, a, b, x[i + 3], 16, -722521979); + b = md5hh(b, c, d, a, x[i + 6], 23, 76029189); + a = md5hh(a, b, c, d, x[i + 9], 4, -640364487); + d = md5hh(d, a, b, c, x[i + 12], 11, -421815835); + c = md5hh(c, d, a, b, x[i + 15], 16, 530742520); + b = md5hh(b, c, d, a, x[i + 2], 23, -995338651); + + a = md5ii(a, b, c, d, x[i], 6, -198630844); + d = md5ii(d, a, b, c, x[i + 7], 10, 1126891415); + c = md5ii(c, d, a, b, x[i + 14], 15, -1416354905); + b = md5ii(b, c, d, a, x[i + 5], 21, -57434055); + a = md5ii(a, b, c, d, x[i + 12], 6, 1700485571); + d = md5ii(d, a, b, c, x[i + 3], 10, -1894986606); + c = md5ii(c, d, a, b, x[i + 10], 15, -1051523); + b = md5ii(b, c, d, a, x[i + 1], 21, -2054922799); + a = md5ii(a, b, c, d, x[i + 8], 6, 1873313359); + d = md5ii(d, a, b, c, x[i + 15], 10, -30611744); + c = md5ii(c, d, a, b, x[i + 6], 15, -1560198380); + b = md5ii(b, c, d, a, x[i + 13], 21, 1309151649); + a = md5ii(a, b, c, d, x[i + 4], 6, -145523070); + d = md5ii(d, a, b, c, x[i + 11], 10, -1120210379); + c = md5ii(c, d, a, b, x[i + 2], 15, 718787259); + b = md5ii(b, c, d, a, x[i + 9], 21, -343485551); + + a = safeAdd(a, olda); + b = safeAdd(b, oldb); + c = safeAdd(c, oldc); + d = safeAdd(d, oldd); + } + return [a, b, c, d]; +} + +/* +* Convert an array of little-endian words to a string +*/ +function binl2rstr(input) { + var i; + var output = ''; + var length32 = input.length * 32; + for (i = 0; i < length32; i += 8) { + output += String.fromCharCode((input[i >> 5] >>> (i % 32)) & 0xff); + } + return output; +} + +/* +* Convert a raw string to an array of little-endian words +* Characters >255 have their high-byte silently ignored. +*/ +function rstr2binl(input) { + var i; + var output = []; + output[(input.length >> 2) - 1] = undefined; + for (i = 0; i < output.length; i += 1) { + output[i] = 0; + } + var length8 = input.length * 8; + for (i = 0; i < length8; i += 8) { + output[i >> 5] |= (input.charCodeAt(i / 8) & 0xff) << (i % 32); + } + return output; +} + +/* +* Calculate the MD5 of a raw string +*/ +function rstrMD5(s) { + return binl2rstr(binlMD5(rstr2binl(s), s.length * 8)); +} + +/* +* Calculate the HMAC-MD5, of a key and some data (raw strings) +*/ +function rstrHMACMD5(key, data) { + var i; + var bkey = rstr2binl(key); + var ipad = []; + var opad = []; + var hash; + ipad[15] = opad[15] = undefined; + if (bkey.length > 16) { + bkey = binlMD5(bkey, key.length * 8); + } + for (i = 0; i < 16; i += 1) { + ipad[i] = bkey[i] ^ 0x36363636; + opad[i] = bkey[i] ^ 0x5c5c5c5c; + } + hash = binlMD5(ipad.concat(rstr2binl(data)), 512 + data.length * 8); + return binl2rstr(binlMD5(opad.concat(hash), 512 + 128)); +} + +/* +* Convert a raw string to a hex string +*/ +function rstr2hex(input) { + var hexTab = '0123456789abcdef'; + var output = ''; + var x; + var i; + for (i = 0; i < input.length; i += 1) { + x = input.charCodeAt(i); + output += hexTab.charAt((x >>> 4) & 0x0f) + hexTab.charAt(x & 0x0f); + } + return output; +} + +/* +* Encode a string as utf-8 +*/ +function str2rstrUTF8(input) { + return unescape(encodeURIComponent(input)); +} + +/* +* Take string arguments and return either raw or hex encoded strings +*/ +function rawMD5(s) { + return rstrMD5(str2rstrUTF8(s)); +} +function hexMD5(s) { + return rstr2hex(rawMD5(s)); +} +function rawHMACMD5(k, d) { + return rstrHMACMD5(str2rstrUTF8(k), str2rstrUTF8(d)); +} +function hexHMACMD5(k, d) { + return rstr2hex(rawHMACMD5(k, d)); +} + +function md5(string, key, raw) { + if (!key) { + if (!raw) { + return hexMD5(string); + } + return rawMD5(string); + } + if (!raw) { + return hexHMACMD5(key, string); + } + return rawHMACMD5(key, string); +} + +module.exports = md5; + +},{}]},{},[6,1,2])(6) +}); \ No newline at end of file diff --git a/packages/raven-js/dist/ember,vue/raven.min.js b/packages/raven-js/dist/ember,vue/raven.min.js new file mode 100644 index 000000000000..2904c5baea5a --- /dev/null +++ b/packages/raven-js/dist/ember,vue/raven.min.js @@ -0,0 +1,4 @@ +/*! Raven.js 3.25.2 (30b6d4e) | github.com/getsentry/raven-js */ +!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.Raven=a()}}(function(){return function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};b[g][0].call(k.exports,function(a){var c=b[g][1][a];return e(c?c:a)},k,k.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;g":"anonymous component")+(a._isVue&&a.$options.__file?" at "+a.$options.__file:"")}function e(a,b){if(b=b||window.Vue,b&&b.config){var c=b.config.errorHandler;b.config.errorHandler=function(b,e,f){var g={};"[object Object]"===Object.prototype.toString.call(e)&&(g.componentName=d(e),g.propsData=e.$options.propsData),"undefined"!=typeof f&&(g.lifecycleHook=f),a.captureException(b,{extra:g}),"function"==typeof c&&c.call(this,b,e,f)}}}b.exports=e,a(6).addPlugin(b.exports)},{6:6}],3:[function(a,b,c){function d(a){this.name="RavenConfigError",this.message=a}d.prototype=new Error,d.prototype.constructor=d,b.exports=d},{}],4:[function(a,b,c){var d=a(7),e=function(a,b,c){var e=a[b],f=a;if(b in a){var g="warn"===b?"warning":b;a[b]=function(){var a=[].slice.call(arguments),h=d.safeJoin(a," "),i={level:g,logger:"console",extra:{arguments:a}};"assert"===b?a[0]===!1&&(h="Assertion failed: "+(d.safeJoin(a.slice(1)," ")||"console.assert"),i.extra.arguments=a.slice(1),c&&c(h,i)):c&&c(h,i),e&&Function.prototype.apply.call(e,f,a)}}};b.exports={wrapMethod:e}},{7:7}],5:[function(a,b,c){(function(c){function d(){return+new Date}function e(a,b){return s(b)?function(c){return b(c,a)}:b}function f(){this.a=!("object"!=typeof JSON||!JSON.stringify),this.b=!r(S),this.c=!r(T),this.d=null,this.e=null,this.f=null,this.g=null,this.h=null,this.i=null,this.j={},this.k={release:R.SENTRY_RELEASE&&R.SENTRY_RELEASE.id,logger:"javascript",ignoreErrors:[],ignoreUrls:[],whitelistUrls:[],includePaths:[],headers:null,collectWindowErrors:!0,captureUnhandledRejections:!0,maxMessageLength:0,maxUrlLength:250,stackTraceLimit:50,autoBreadcrumbs:!0,instrument:!0,sampleRate:1,sanitizeKeys:[]},this.l={method:"POST",keepalive:!0,referrerPolicy:K()?"origin":""},this.m=0,this.n=!1,this.o=Error.stackTraceLimit,this.p=R.console||{},this.q={},this.r=[],this.s=d(),this.t=[],this.u=[],this.v=null,this.w=R.location,this.x=this.w&&this.w.href,this.y();for(var a in this.p)this.q[a]=this.p[a]}var g=a(8),h=a(9),i=a(10),j=a(3),k=a(7),l=k.isErrorEvent,m=k.isDOMError,n=k.isDOMException,o=k.isError,p=k.isObject,q=k.isPlainObject,r=k.isUndefined,s=k.isFunction,t=k.isString,u=k.isArray,v=k.isEmptyObject,w=k.each,x=k.objectMerge,y=k.truncate,z=k.objectFrozen,A=k.hasKey,B=k.joinRegExp,C=k.urlencode,D=k.uuid4,E=k.htmlTreeAsString,F=k.isSameException,G=k.isSameStacktrace,H=k.parseUrl,I=k.fill,J=k.supportsFetch,K=k.supportsReferrerPolicy,L=k.serializeKeysForMessage,M=k.serializeException,N=k.sanitize,O=a(4).wrapMethod,P="source protocol user pass host port path".split(" "),Q=/^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/,R="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},S=R.document,T=R.navigator;f.prototype={VERSION:"3.25.2",debug:!1,TraceKit:g,config:function(a,b){var c=this;if(c.g)return this.z("error","Error: Raven has already been configured"),c;if(!a)return c;var d=c.k;b&&w(b,function(a,b){"tags"===a||"extra"===a||"user"===a?c.j[a]=b:d[a]=b}),c.setDSN(a),d.ignoreErrors.push(/^Script error\.?$/),d.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/),d.ignoreErrors=B(d.ignoreErrors),d.ignoreUrls=!!d.ignoreUrls.length&&B(d.ignoreUrls),d.whitelistUrls=!!d.whitelistUrls.length&&B(d.whitelistUrls),d.includePaths=B(d.includePaths),d.maxBreadcrumbs=Math.max(0,Math.min(d.maxBreadcrumbs||100,100));var e={xhr:!0,console:!0,dom:!0,location:!0,sentry:!0},f=d.autoBreadcrumbs;"[object Object]"==={}.toString.call(f)?f=x(e,f):f!==!1&&(f=e),d.autoBreadcrumbs=f;var h={tryCatch:!0},i=d.instrument;return"[object Object]"==={}.toString.call(i)?i=x(h,i):i!==!1&&(i=h),d.instrument=i,g.collectWindowErrors=!!d.collectWindowErrors,c},install:function(){var a=this;return a.isSetup()&&!a.n&&(g.report.subscribe(function(){a.A.apply(a,arguments)}),a.k.captureUnhandledRejections&&a.B(),a.C(),a.k.instrument&&a.k.instrument.tryCatch&&a.D(),a.k.autoBreadcrumbs&&a.E(),a.F(),a.n=!0),Error.stackTraceLimit=a.k.stackTraceLimit,this},setDSN:function(a){var b=this,c=b.G(a),d=c.path.lastIndexOf("/"),e=c.path.substr(1,d);b.H=a,b.h=c.user,b.I=c.pass&&c.pass.substr(1),b.i=c.path.substr(d+1),b.g=b.J(c),b.K=b.g+"/"+e+"api/"+b.i+"/store/",this.y()},context:function(a,b,c){return s(a)&&(c=b||[],b=a,a=void 0),this.wrap(a,b).apply(this,c)},wrap:function(a,b,c){function d(){var d=[],f=arguments.length,g=!a||a&&a.deep!==!1;for(c&&s(c)&&c.apply(this,arguments);f--;)d[f]=g?e.wrap(a,arguments[f]):arguments[f];try{return b.apply(this,d)}catch(h){throw e.L(),e.captureException(h,a),h}}var e=this;if(r(b)&&!s(a))return a;if(s(a)&&(b=a,a=void 0),!s(b))return b;try{if(b.M)return b;if(b.N)return b.N}catch(f){return b}for(var g in b)A(b,g)&&(d[g]=b[g]);return d.prototype=b.prototype,b.N=d,d.M=!0,d.O=b,d},uninstall:function(){return g.report.uninstall(),this.P(),this.Q(),this.R(),this.S(),Error.stackTraceLimit=this.o,this.n=!1,this},T:function(a){this.z("debug","Raven caught unhandled promise rejection:",a),this.captureException(a.reason,{extra:{unhandledPromiseRejection:!0}})},B:function(){return this.T=this.T.bind(this),R.addEventListener&&R.addEventListener("unhandledrejection",this.T),this},P:function(){return R.removeEventListener&&R.removeEventListener("unhandledrejection",this.T),this},captureException:function(a,b){if(b=x({trimHeadFrames:0},b?b:{}),l(a)&&a.error)a=a.error;else{if(m(a)||n(a)){var c=a.name||(m(a)?"DOMError":"DOMException"),d=a.message?c+": "+a.message:c;return this.captureMessage(d,x(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}))}if(o(a))a=a;else{if(!q(a))return this.captureMessage(a,x(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}));b=this.U(b,a),a=new Error(b.message)}}this.d=a;try{var e=g.computeStackTrace(a);this.V(e,b)}catch(f){if(a!==f)throw f}return this},U:function(a,b){var c=Object.keys(b).sort(),d=x(a,{message:"Non-Error exception captured with keys: "+L(c),fingerprint:[i(c)],extra:a.extra||{}});return d.extra.W=M(b),d},captureMessage:function(a,b){if(!this.k.ignoreErrors.test||!this.k.ignoreErrors.test(a)){b=b||{},a+="";var c,d=x({message:a},b);try{throw new Error(a)}catch(e){c=e}c.name=null;var f=g.computeStackTrace(c),h=u(f.stack)&&f.stack[1];h&&"Raven.captureException"===h.func&&(h=f.stack[2]);var i=h&&h.url||"";if((!this.k.ignoreUrls.test||!this.k.ignoreUrls.test(i))&&(!this.k.whitelistUrls.test||this.k.whitelistUrls.test(i))){if(this.k.stacktrace||b&&b.stacktrace){d.fingerprint=null==d.fingerprint?a:d.fingerprint,b=x({trimHeadFrames:0},b),b.trimHeadFrames+=1;var j=this.X(f,b);d.stacktrace={frames:j.reverse()}}return d.fingerprint&&(d.fingerprint=u(d.fingerprint)?d.fingerprint:[d.fingerprint]),this.Y(d),this}}},captureBreadcrumb:function(a){var b=x({timestamp:d()/1e3},a);if(s(this.k.breadcrumbCallback)){var c=this.k.breadcrumbCallback(b);if(p(c)&&!v(c))b=c;else if(c===!1)return this}return this.u.push(b),this.u.length>this.k.maxBreadcrumbs&&this.u.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.r.push([a,b]),this.n&&this.F(),this},setUserContext:function(a){return this.j.user=a,this},setExtraContext:function(a){return this.Z("extra",a),this},setTagsContext:function(a){return this.Z("tags",a),this},clearContext:function(){return this.j={},this},getContext:function(){return JSON.parse(h(this.j))},setEnvironment:function(a){return this.k.environment=a,this},setRelease:function(a){return this.k.release=a,this},setDataCallback:function(a){var b=this.k.dataCallback;return this.k.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.k.breadcrumbCallback;return this.k.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.k.shouldSendCallback;return this.k.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.k.transport=a,this},lastException:function(){return this.d},lastEventId:function(){return this.f},isSetup:function(){return!!this.a&&(!!this.g||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.z("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=R.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(S){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.H;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.j.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.J(this.G(c)),h=S.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(S.head||S.body).appendChild(h)}},L:function(){var a=this;this.m+=1,setTimeout(function(){a.m-=1})},$:function(a,b){var c,d;if(this.b){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),S.createEvent?(c=S.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=S.createEventObject(),c.eventType=a);for(d in b)A(b,d)&&(c[d]=b[d]);if(S.createEvent)S.dispatchEvent(c);else try{S.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},_:function(a){var b=this;return function(c){if(b.aa=null,b.v!==c){b.v=c;var d;try{d=E(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ba:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.aa;g||a._("input")(c),clearTimeout(g),a.aa=setTimeout(function(){a.aa=null},b)}}},ca:function(a,b){var c=H(this.w.href),d=H(b),e=H(a);this.x=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},C:function(){var a=this;a.da=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.M?a.da.apply(this.O,arguments):a.da.apply(this,arguments)}},Q:function(){this.da&&(Function.prototype.toString=this.da)},D:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.ca(b.x,c+""),a.apply(this,arguments)}};I(R.history,"pushState",j,d),I(R.history,"replaceState",j,d)}if(c.console&&"console"in R&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};w(["debug","info","warn","error","log"],function(a,b){O(console,b,k)})}},R:function(){for(var a;this.t.length;){a=this.t.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},S:function(){for(var a in this.q)this.p[a]=this.q[a]},F:function(){var a=this;w(this.r,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},G:function(a){var b=Q.exec(a),c={},d=7;try{for(;d--;)c[P[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.k.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},J:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},A:function(){this.m||this.V.apply(this,arguments)},V:function(a,b){var c=this.X(a,b);this.$("handle",{stackInfo:a,options:b}),this.fa(a.name,a.message,a.url,a.lineno,c,b)},X:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(w(a.stack,function(b,e){var f=c.ga(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.u,0)}),this.j.user&&(a.user=this.j.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),a=this.pa(a),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||v(a[b]))&&delete a[b]}),s(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!v(a)&&(!s(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.ma()?void this.z("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function F(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&l(b))for(c=b.split(/\s+/),f=0;fc?Q(a,b-1):d}function R(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?X:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function S(a,b){function c(a){return m(a)?a.map(function(a){return c(a)}):k(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!m(b)||m(b)&&0===b.length)return a;var d,e=A(b),f="********";try{d=JSON.parse(T(a))}catch(g){return a}return c(d)}var T=a(9),U="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},V=3,W=51200,X=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isDOMError:g,isDOMException:h,isUndefined:i,isFunction:j,isPlainObject:k,isString:l,isArray:m,isEmptyObject:n,supportsErrorEvent:o,supportsDOMError:p,supportsDOMException:q,supportsFetch:r,supportsReferrerPolicy:s,supportsPromiseRejectionEvent:t,wrappedCallback:u,each:v,objectMerge:w,truncate:y,objectFrozen:x,hasKey:z,joinRegExp:A,urlencode:B,uuid4:D,htmlTreeAsString:E,htmlElementAsString:F,isSameException:I,isSameStacktrace:J,parseUrl:C,fill:K,safeJoin:L,serializeException:Q,serializeKeysForMessage:R,sanitize:S}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{9:9}],8:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}function e(){return"undefined"==typeof document||null==document.location?"":(document.location.origin||(document.location.origin=document.location.protocol+"//"+document.location.hostname+(document.location.port?":"+document.location.port:"")),document.location.origin)}var f=a(7),g={collectWindowErrors:!0,debug:!1},h="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},i=[].slice,j="?",k=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;g.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function e(a,b){var c=null;if(!b||g.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(i.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,h,i){var l=null,m=f.isErrorEvent(i)?i.error:i,n=f.isErrorEvent(a)?a.message:a;if(v)g.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&f.isError(m))l=g.computeStackTrace(m),e(l,!0);else{var p,r={url:b,line:c,column:h},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(k);p&&(s=p[1],n=p[2])}r.func=j,l={name:s,message:n,url:d(),stack:[r]},e(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=h.onerror,h.onerror=l,r=!0)}function n(){r&&(h.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,e.apply(null,[a,!1].concat(b))}function p(a,b){var c=i.call(arguments,1);if(v){if(u===a)return;o()}var d=g.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),g.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,f,g=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,h=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,i=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,k=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,l=/\((\S*)(?::(\d+))(?::(\d+))\)/,m=a.stack.split("\n"),n=[],o=(/^(.*) is undefined$/.exec(a.message),0),p=m.length;o eval")>-1;r&&(b=k.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==o||c[5]||"undefined"==typeof a.columnNumber||(n[0].column=a.columnNumber+1),f={url:c[3],func:c[1]||j,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}if(!f.func&&f.line&&(f.func=j),f.url&&"blob:"===f.url.substr(0,5)){var s=new XMLHttpRequest;if(s.open("GET",f.url,!1),s.send(null),200===s.status){var t=s.responseText||"";t=t.slice(-300);var u=t.match(/\/\/# sourceMappingURL=(.*)$/);if(u){var v=u[1];"~"===v.charAt(0)&&(v=e()+v.slice(1)),f.url=v.slice(0,-4)}}}n.push(f)}return n.length?{name:a.name,message:a.message,url:d(),stack:n}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=j),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1; +if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,e){for(var h,i,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==f&&o!==g.report){if(i={url:null,func:j,line:null,column:null},o.name?i.func=o.name:(h=k.exec(o.toString()))&&(i.func=h[1]),"undefined"==typeof i.func)try{i.func=h.input.substring(0,h.input.indexOf("{"))}catch(p){}m[""+o]?n=!0:m[""+o]=!0,l.push(i)}e&&l.splice(0,e);var q={name:a.name,message:a.message,url:d(),stack:l};return b(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),q}function f(b,e){var f=null;e=null==e?0:+e;try{if(f=a(b))return f}catch(h){if(g.debug)throw h}try{if(f=c(b,e+1))return f}catch(h){if(g.debug)throw h}return{name:b.name,message:b.message,url:d()}}return f.augmentStackTraceWithInitialElement=b,f.computeStackTraceFromStackProp=a,f}(),b.exports=g}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{7:7}],9:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}],10:[function(a,b,c){function d(a,b){var c=(65535&a)+(65535&b),d=(a>>16)+(b>>16)+(c>>16);return d<<16|65535&c}function e(a,b){return a<>>32-b}function f(a,b,c,f,g,h){return d(e(d(d(b,a),d(f,h)),g),c)}function g(a,b,c,d,e,g,h){return f(b&c|~b&d,a,b,e,g,h)}function h(a,b,c,d,e,g,h){return f(b&d|c&~d,a,b,e,g,h)}function i(a,b,c,d,e,g,h){return f(b^c^d,a,b,e,g,h)}function j(a,b,c,d,e,g,h){return f(c^(b|~d),a,b,e,g,h)}function k(a,b){a[b>>5]|=128<>>9<<4)+14]=b;var c,e,f,k,l,m=1732584193,n=-271733879,o=-1732584194,p=271733878;for(c=0;c>5]>>>b%32&255);return c}function m(a){var b,c=[];for(c[(a.length>>2)-1]=void 0,b=0;b>5]|=(255&a.charCodeAt(b/8))<16&&(e=k(e,8*a.length)),c=0;c<16;c+=1)f[c]=909522486^e[c],g[c]=1549556828^e[c];return d=k(f.concat(m(b)),512+8*b.length),l(k(g.concat(d),640))}function p(a){var b,c,d="0123456789abcdef",e="";for(c=0;c>>4&15)+d.charAt(15&b);return e}function q(a){return unescape(encodeURIComponent(a))}function r(a){return n(q(a))}function s(a){return p(r(a))}function t(a,b){return o(q(a),q(b))}function u(a,b){return p(t(a,b))}function v(a,b,c){return b?c?t(b,a):u(b,a):c?r(a):s(a)}b.exports=v},{}]},{},[6,1,2])(6)}); +//# sourceMappingURL=raven.min.js.map \ No newline at end of file diff --git a/packages/raven-js/dist/ember,vue/raven.min.js.map b/packages/raven-js/dist/ember,vue/raven.min.js.map new file mode 100644 index 000000000000..ec2021c54a16 --- /dev/null +++ b/packages/raven-js/dist/ember,vue/raven.min.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","emberPlugin","Ember","_oldOnError","onerror","error","captureException","RSVP","on","reason","extra","context","captureMessage","addPlugin","6","2","formatComponentName","vm","$root","name","_isVue","$options","_componentTag","__file","vuePlugin","Vue","config","errorHandler","info","metaData","Object","prototype","toString","componentName","propsData","lifecycleHook","3","RavenConfigError","message","constructor","4","utils","wrapMethod","console","level","callback","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","msg","safeJoin","data","logger","Function","apply","7","5","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","sanitizeKeys","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isErrorEvent","isDOMError","isDOMException","isError","isObject","isPlainObject","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","sanitize","wrapConsoleMethod","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","dsn","options","_logDebug","globalOptions","key","value","setDSN","push","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","substr","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","func","undefined","wrap","_before","wrapped","deep","_ignoreNextOnError","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","T","event","unhandledPromiseRejection","B","_promiseRejectionHandler","bind","addEventListener","P","removeEventListener","ex","trimHeadFrames","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","U","currentOptions","exKeys","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","setDataCallback","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","L","setTimeout","$","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","_","evtName","_keypressTimeout","target","category","ba","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","ca","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","C","_originalFunctionToString","Q","D","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","type","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","E","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","R","builtin","S","F","installer","concat","G","str","m","exec","allowSecretKey","J","port","A","V","stackInfo","_triggerEvent","_processException","lineno","X","frame","_normalizeFrame","in_app","ga","stackInfoUrl","normalized","filename","line","colno","column","function","fa","prefixedMessage","exception","values","transaction","ha","request","Referer","breadcrumbs","_trimBreadcrumbs","ia","urlProp","urlProps","ja","httpData","userAgent","User-Agent","referrer","y","_backoffDuration","_backoffStart","ma","na","current","last","oa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Y","baseData","project","platform","_getHttpData","serverName","server_name","_sanitizeData","forEach","random","_sendProcessedPayload","pa","ra","qa","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","sa","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","open","setRequestHeader","send","ta","hash","evaluated","z","Z","setUser","setReleaseContext","10","8","9","RavenConstructor","_Raven","noConflict","Client","what","supportsErrorEvent","ErrorEvent","supportsDOMError","DOMError","supportsDOMException","DOMException","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","wrappedCallback","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","sanitizeMask","safeInput","o_O","getLocationHref","getLocationOrigin","origin","hostname","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","responseText","sourceMaps","sourceMapAddress","charAt","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","string","raw"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file diff --git a/packages/raven-js/dist/ember/raven.js b/packages/raven-js/dist/ember/raven.js new file mode 100644 index 000000000000..3c58bac0ac0b --- /dev/null +++ b/packages/raven-js/dist/ember/raven.js @@ -0,0 +1,4043 @@ +/*! Raven.js 3.25.2 (30b6d4e) | github.com/getsentry/raven-js */ + +/* + * Includes TraceKit + * https://github.com/getsentry/TraceKit + * + * Copyright 2018 Matt Robenolt and other contributors + * Released under the BSD license + * https://github.com/getsentry/raven-js/blob/master/LICENSE + * + */ + +(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.Raven = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o captureException(string) => captureMessage(string) + if (initialCall && initialCall.func === 'Raven.captureException') { + initialCall = stack.stack[2]; + } + + var fileurl = (initialCall && initialCall.url) || ''; + + if ( + !!this._globalOptions.ignoreUrls.test && + this._globalOptions.ignoreUrls.test(fileurl) + ) { + return; + } + + if ( + !!this._globalOptions.whitelistUrls.test && + !this._globalOptions.whitelistUrls.test(fileurl) + ) { + return; + } + + if (this._globalOptions.stacktrace || (options && options.stacktrace)) { + // fingerprint on msg, not stack trace (legacy behavior, could be revisited) + data.fingerprint = data.fingerprint == null ? msg : data.fingerprint; + + options = objectMerge( + { + trimHeadFrames: 0 + }, + options + ); + // Since we know this is a synthetic trace, the top frame (this function call) + // MUST be from Raven.js, so mark it for trimming + // We add to the trim counter so that callers can choose to trim extra frames, such + // as utility functions. + options.trimHeadFrames += 1; + + var frames = this._prepareFrames(stack, options); + data.stacktrace = { + // Sentry expects frames oldest to newest + frames: frames.reverse() + }; + } + + // Make sure that fingerprint is always wrapped in an array + if (data.fingerprint) { + data.fingerprint = isArray(data.fingerprint) + ? data.fingerprint + : [data.fingerprint]; + } + + // Fire away! + this._send(data); + + return this; + }, + + captureBreadcrumb: function(obj) { + var crumb = objectMerge( + { + timestamp: now() / 1000 + }, + obj + ); + + if (isFunction(this._globalOptions.breadcrumbCallback)) { + var result = this._globalOptions.breadcrumbCallback(crumb); + + if (isObject(result) && !isEmptyObject(result)) { + crumb = result; + } else if (result === false) { + return this; + } + } + + this._breadcrumbs.push(crumb); + if (this._breadcrumbs.length > this._globalOptions.maxBreadcrumbs) { + this._breadcrumbs.shift(); + } + return this; + }, + + addPlugin: function(plugin /*arg1, arg2, ... argN*/) { + var pluginArgs = [].slice.call(arguments, 1); + + this._plugins.push([plugin, pluginArgs]); + if (this._isRavenInstalled) { + this._drainPlugins(); + } + + return this; + }, + + /* + * Set/clear a user to be sent along with the payload. + * + * @param {object} user An object representing user data [optional] + * @return {Raven} + */ + setUserContext: function(user) { + // Intentionally do not merge here since that's an unexpected behavior. + this._globalContext.user = user; + + return this; + }, + + /* + * Merge extra attributes to be sent along with the payload. + * + * @param {object} extra An object representing extra data [optional] + * @return {Raven} + */ + setExtraContext: function(extra) { + this._mergeContext('extra', extra); + + return this; + }, + + /* + * Merge tags to be sent along with the payload. + * + * @param {object} tags An object representing tags [optional] + * @return {Raven} + */ + setTagsContext: function(tags) { + this._mergeContext('tags', tags); + + return this; + }, + + /* + * Clear all of the context. + * + * @return {Raven} + */ + clearContext: function() { + this._globalContext = {}; + + return this; + }, + + /* + * Get a copy of the current context. This cannot be mutated. + * + * @return {object} copy of context + */ + getContext: function() { + // lol javascript + return JSON.parse(stringify(this._globalContext)); + }, + + /* + * Set environment of application + * + * @param {string} environment Typically something like 'production'. + * @return {Raven} + */ + setEnvironment: function(environment) { + this._globalOptions.environment = environment; + + return this; + }, + + /* + * Set release version of application + * + * @param {string} release Typically something like a git SHA to identify version + * @return {Raven} + */ + setRelease: function(release) { + this._globalOptions.release = release; + + return this; + }, + + /* + * Set the dataCallback option + * + * @param {function} callback The callback to run which allows the + * data blob to be mutated before sending + * @return {Raven} + */ + setDataCallback: function(callback) { + var original = this._globalOptions.dataCallback; + this._globalOptions.dataCallback = keepOriginalCallback(original, callback); + return this; + }, + + /* + * Set the breadcrumbCallback option + * + * @param {function} callback The callback to run which allows filtering + * or mutating breadcrumbs + * @return {Raven} + */ + setBreadcrumbCallback: function(callback) { + var original = this._globalOptions.breadcrumbCallback; + this._globalOptions.breadcrumbCallback = keepOriginalCallback(original, callback); + return this; + }, + + /* + * Set the shouldSendCallback option + * + * @param {function} callback The callback to run which allows + * introspecting the blob before sending + * @return {Raven} + */ + setShouldSendCallback: function(callback) { + var original = this._globalOptions.shouldSendCallback; + this._globalOptions.shouldSendCallback = keepOriginalCallback(original, callback); + return this; + }, + + /** + * Override the default HTTP transport mechanism that transmits data + * to the Sentry server. + * + * @param {function} transport Function invoked instead of the default + * `makeRequest` handler. + * + * @return {Raven} + */ + setTransport: function(transport) { + this._globalOptions.transport = transport; + + return this; + }, + + /* + * Get the latest raw exception that was captured by Raven. + * + * @return {error} + */ + lastException: function() { + return this._lastCapturedException; + }, + + /* + * Get the last event id + * + * @return {string} + */ + lastEventId: function() { + return this._lastEventId; + }, + + /* + * Determine if Raven is setup and ready to go. + * + * @return {boolean} + */ + isSetup: function() { + if (!this._hasJSON) return false; // needs JSON support + if (!this._globalServer) { + if (!this.ravenNotConfiguredError) { + this.ravenNotConfiguredError = true; + this._logDebug('error', 'Error: Raven has not been configured.'); + } + return false; + } + return true; + }, + + afterLoad: function() { + // TODO: remove window dependence? + + // Attempt to initialize Raven on load + var RavenConfig = _window.RavenConfig; + if (RavenConfig) { + this.config(RavenConfig.dsn, RavenConfig.config).install(); + } + }, + + showReportDialog: function(options) { + if ( + !_document // doesn't work without a document (React native) + ) + return; + + options = options || {}; + + var lastEventId = options.eventId || this.lastEventId(); + if (!lastEventId) { + throw new RavenConfigError('Missing eventId'); + } + + var dsn = options.dsn || this._dsn; + if (!dsn) { + throw new RavenConfigError('Missing DSN'); + } + + var encode = encodeURIComponent; + var qs = ''; + qs += '?eventId=' + encode(lastEventId); + qs += '&dsn=' + encode(dsn); + + var user = options.user || this._globalContext.user; + if (user) { + if (user.name) qs += '&name=' + encode(user.name); + if (user.email) qs += '&email=' + encode(user.email); + } + + var globalServer = this._getGlobalServer(this._parseDSN(dsn)); + + var script = _document.createElement('script'); + script.async = true; + script.src = globalServer + '/api/embed/error-page/' + qs; + (_document.head || _document.body).appendChild(script); + }, + + /**** Private functions ****/ + _ignoreNextOnError: function() { + var self = this; + this._ignoreOnError += 1; + setTimeout(function() { + // onerror should trigger before setTimeout + self._ignoreOnError -= 1; + }); + }, + + _triggerEvent: function(eventType, options) { + // NOTE: `event` is a native browser thing, so let's avoid conflicting wiht it + var evt, key; + + if (!this._hasDocument) return; + + options = options || {}; + + eventType = 'raven' + eventType.substr(0, 1).toUpperCase() + eventType.substr(1); + + if (_document.createEvent) { + evt = _document.createEvent('HTMLEvents'); + evt.initEvent(eventType, true, true); + } else { + evt = _document.createEventObject(); + evt.eventType = eventType; + } + + for (key in options) + if (hasKey(options, key)) { + evt[key] = options[key]; + } + + if (_document.createEvent) { + // IE9 if standards + _document.dispatchEvent(evt); + } else { + // IE8 regardless of Quirks or Standards + // IE9 if quirks + try { + _document.fireEvent('on' + evt.eventType.toLowerCase(), evt); + } catch (e) { + // Do nothing + } + } + }, + + /** + * Wraps addEventListener to capture UI breadcrumbs + * @param evtName the event name (e.g. "click") + * @returns {Function} + * @private + */ + _breadcrumbEventHandler: function(evtName) { + var self = this; + return function(evt) { + // reset keypress timeout; e.g. triggering a 'click' after + // a 'keypress' will reset the keypress debounce so that a new + // set of keypresses can be recorded + self._keypressTimeout = null; + + // It's possible this handler might trigger multiple times for the same + // event (e.g. event propagation through node ancestors). Ignore if we've + // already captured the event. + if (self._lastCapturedEvent === evt) return; + + self._lastCapturedEvent = evt; + + // try/catch both: + // - accessing evt.target (see getsentry/raven-js#838, #768) + // - `htmlTreeAsString` because it's complex, and just accessing the DOM incorrectly + // can throw an exception in some circumstances. + var target; + try { + target = htmlTreeAsString(evt.target); + } catch (e) { + target = ''; + } + + self.captureBreadcrumb({ + category: 'ui.' + evtName, // e.g. ui.click, ui.input + message: target + }); + }; + }, + + /** + * Wraps addEventListener to capture keypress UI events + * @returns {Function} + * @private + */ + _keypressEventHandler: function() { + var self = this, + debounceDuration = 1000; // milliseconds + + // TODO: if somehow user switches keypress target before + // debounce timeout is triggered, we will only capture + // a single breadcrumb from the FIRST target (acceptable?) + return function(evt) { + var target; + try { + target = evt.target; + } catch (e) { + // just accessing event properties can throw an exception in some rare circumstances + // see: https://github.com/getsentry/raven-js/issues/838 + return; + } + var tagName = target && target.tagName; + + // only consider keypress events on actual input elements + // this will disregard keypresses targeting body (e.g. tabbing + // through elements, hotkeys, etc) + if ( + !tagName || + (tagName !== 'INPUT' && tagName !== 'TEXTAREA' && !target.isContentEditable) + ) + return; + + // record first keypress in a series, but ignore subsequent + // keypresses until debounce clears + var timeout = self._keypressTimeout; + if (!timeout) { + self._breadcrumbEventHandler('input')(evt); + } + clearTimeout(timeout); + self._keypressTimeout = setTimeout(function() { + self._keypressTimeout = null; + }, debounceDuration); + }; + }, + + /** + * Captures a breadcrumb of type "navigation", normalizing input URLs + * @param to the originating URL + * @param from the target URL + * @private + */ + _captureUrlChange: function(from, to) { + var parsedLoc = parseUrl(this._location.href); + var parsedTo = parseUrl(to); + var parsedFrom = parseUrl(from); + + // because onpopstate only tells you the "new" (to) value of location.href, and + // not the previous (from) value, we need to track the value of the current URL + // state ourselves + this._lastHref = to; + + // Use only the path component of the URL if the URL matches the current + // document (almost all the time when using pushState) + if (parsedLoc.protocol === parsedTo.protocol && parsedLoc.host === parsedTo.host) + to = parsedTo.relative; + if (parsedLoc.protocol === parsedFrom.protocol && parsedLoc.host === parsedFrom.host) + from = parsedFrom.relative; + + this.captureBreadcrumb({ + category: 'navigation', + data: { + to: to, + from: from + } + }); + }, + + _patchFunctionToString: function() { + var self = this; + self._originalFunctionToString = Function.prototype.toString; + // eslint-disable-next-line no-extend-native + Function.prototype.toString = function() { + if (typeof this === 'function' && this.__raven__) { + return self._originalFunctionToString.apply(this.__orig__, arguments); + } + return self._originalFunctionToString.apply(this, arguments); + }; + }, + + _unpatchFunctionToString: function() { + if (this._originalFunctionToString) { + // eslint-disable-next-line no-extend-native + Function.prototype.toString = this._originalFunctionToString; + } + }, + + /** + * Wrap timer functions and event targets to catch errors and provide + * better metadata. + */ + _instrumentTryCatch: function() { + var self = this; + + var wrappedBuiltIns = self._wrappedBuiltIns; + + function wrapTimeFn(orig) { + return function(fn, t) { + // preserve arity + // Make a copy of the arguments to prevent deoptimization + // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments + var args = new Array(arguments.length); + for (var i = 0; i < args.length; ++i) { + args[i] = arguments[i]; + } + var originalCallback = args[0]; + if (isFunction(originalCallback)) { + args[0] = self.wrap(originalCallback); + } + + // IE < 9 doesn't support .call/.apply on setInterval/setTimeout, but it + // also supports only two arguments and doesn't care what this is, so we + // can just call the original function directly. + if (orig.apply) { + return orig.apply(this, args); + } else { + return orig(args[0], args[1]); + } + }; + } + + var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; + + function wrapEventTarget(global) { + var proto = _window[global] && _window[global].prototype; + if (proto && proto.hasOwnProperty && proto.hasOwnProperty('addEventListener')) { + fill( + proto, + 'addEventListener', + function(orig) { + return function(evtName, fn, capture, secure) { + // preserve arity + try { + if (fn && fn.handleEvent) { + fn.handleEvent = self.wrap(fn.handleEvent); + } + } catch (err) { + // can sometimes get 'Permission denied to access property "handle Event' + } + + // More breadcrumb DOM capture ... done here and not in `_instrumentBreadcrumbs` + // so that we don't have more than one wrapper function + var before, clickHandler, keypressHandler; + + if ( + autoBreadcrumbs && + autoBreadcrumbs.dom && + (global === 'EventTarget' || global === 'Node') + ) { + // NOTE: generating multiple handlers per addEventListener invocation, should + // revisit and verify we can just use one (almost certainly) + clickHandler = self._breadcrumbEventHandler('click'); + keypressHandler = self._keypressEventHandler(); + before = function(evt) { + // need to intercept every DOM event in `before` argument, in case that + // same wrapped method is re-used for different events (e.g. mousemove THEN click) + // see #724 + if (!evt) return; + + var eventType; + try { + eventType = evt.type; + } catch (e) { + // just accessing event properties can throw an exception in some rare circumstances + // see: https://github.com/getsentry/raven-js/issues/838 + return; + } + if (eventType === 'click') return clickHandler(evt); + else if (eventType === 'keypress') return keypressHandler(evt); + }; + } + return orig.call( + this, + evtName, + self.wrap(fn, undefined, before), + capture, + secure + ); + }; + }, + wrappedBuiltIns + ); + fill( + proto, + 'removeEventListener', + function(orig) { + return function(evt, fn, capture, secure) { + try { + fn = fn && (fn.__raven_wrapper__ ? fn.__raven_wrapper__ : fn); + } catch (e) { + // ignore, accessing __raven_wrapper__ will throw in some Selenium environments + } + return orig.call(this, evt, fn, capture, secure); + }; + }, + wrappedBuiltIns + ); + } + } + + fill(_window, 'setTimeout', wrapTimeFn, wrappedBuiltIns); + fill(_window, 'setInterval', wrapTimeFn, wrappedBuiltIns); + if (_window.requestAnimationFrame) { + fill( + _window, + 'requestAnimationFrame', + function(orig) { + return function(cb) { + return orig(self.wrap(cb)); + }; + }, + wrappedBuiltIns + ); + } + + // event targets borrowed from bugsnag-js: + // https://github.com/bugsnag/bugsnag-js/blob/master/src/bugsnag.js#L666 + var eventTargets = [ + 'EventTarget', + 'Window', + 'Node', + 'ApplicationCache', + 'AudioTrackList', + 'ChannelMergerNode', + 'CryptoOperation', + 'EventSource', + 'FileReader', + 'HTMLUnknownElement', + 'IDBDatabase', + 'IDBRequest', + 'IDBTransaction', + 'KeyOperation', + 'MediaController', + 'MessagePort', + 'ModalWindow', + 'Notification', + 'SVGElementInstance', + 'Screen', + 'TextTrack', + 'TextTrackCue', + 'TextTrackList', + 'WebSocket', + 'WebSocketWorker', + 'Worker', + 'XMLHttpRequest', + 'XMLHttpRequestEventTarget', + 'XMLHttpRequestUpload' + ]; + for (var i = 0; i < eventTargets.length; i++) { + wrapEventTarget(eventTargets[i]); + } + }, + + /** + * Instrument browser built-ins w/ breadcrumb capturing + * - XMLHttpRequests + * - DOM interactions (click/typing) + * - window.location changes + * - console + * + * Can be disabled or individually configured via the `autoBreadcrumbs` config option + */ + _instrumentBreadcrumbs: function() { + var self = this; + var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; + + var wrappedBuiltIns = self._wrappedBuiltIns; + + function wrapProp(prop, xhr) { + if (prop in xhr && isFunction(xhr[prop])) { + fill(xhr, prop, function(orig) { + return self.wrap(orig); + }); // intentionally don't track filled methods on XHR instances + } + } + + if (autoBreadcrumbs.xhr && 'XMLHttpRequest' in _window) { + var xhrproto = _window.XMLHttpRequest && _window.XMLHttpRequest.prototype; + fill( + xhrproto, + 'open', + function(origOpen) { + return function(method, url) { + // preserve arity + + // if Sentry key appears in URL, don't capture + if (isString(url) && url.indexOf(self._globalKey) === -1) { + this.__raven_xhr = { + method: method, + url: url, + status_code: null + }; + } + + return origOpen.apply(this, arguments); + }; + }, + wrappedBuiltIns + ); + + fill( + xhrproto, + 'send', + function(origSend) { + return function() { + // preserve arity + var xhr = this; + + function onreadystatechangeHandler() { + if (xhr.__raven_xhr && xhr.readyState === 4) { + try { + // touching statusCode in some platforms throws + // an exception + xhr.__raven_xhr.status_code = xhr.status; + } catch (e) { + /* do nothing */ + } + + self.captureBreadcrumb({ + type: 'http', + category: 'xhr', + data: xhr.__raven_xhr + }); + } + } + + var props = ['onload', 'onerror', 'onprogress']; + for (var j = 0; j < props.length; j++) { + wrapProp(props[j], xhr); + } + + if ('onreadystatechange' in xhr && isFunction(xhr.onreadystatechange)) { + fill( + xhr, + 'onreadystatechange', + function(orig) { + return self.wrap(orig, undefined, onreadystatechangeHandler); + } /* intentionally don't track this instrumentation */ + ); + } else { + // if onreadystatechange wasn't actually set by the page on this xhr, we + // are free to set our own and capture the breadcrumb + xhr.onreadystatechange = onreadystatechangeHandler; + } + + return origSend.apply(this, arguments); + }; + }, + wrappedBuiltIns + ); + } + + if (autoBreadcrumbs.xhr && supportsFetch()) { + fill( + _window, + 'fetch', + function(origFetch) { + return function() { + // preserve arity + // Make a copy of the arguments to prevent deoptimization + // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments + var args = new Array(arguments.length); + for (var i = 0; i < args.length; ++i) { + args[i] = arguments[i]; + } + + var fetchInput = args[0]; + var method = 'GET'; + var url; + + if (typeof fetchInput === 'string') { + url = fetchInput; + } else if ('Request' in _window && fetchInput instanceof _window.Request) { + url = fetchInput.url; + if (fetchInput.method) { + method = fetchInput.method; + } + } else { + url = '' + fetchInput; + } + + // if Sentry key appears in URL, don't capture, as it's our own request + if (url.indexOf(self._globalKey) !== -1) { + return origFetch.apply(this, args); + } + + if (args[1] && args[1].method) { + method = args[1].method; + } + + var fetchData = { + method: method, + url: url, + status_code: null + }; + + return origFetch + .apply(this, args) + .then(function(response) { + fetchData.status_code = response.status; + + self.captureBreadcrumb({ + type: 'http', + category: 'fetch', + data: fetchData + }); + + return response; + }) + ['catch'](function(err) { + // if there is an error performing the request + self.captureBreadcrumb({ + type: 'http', + category: 'fetch', + data: fetchData, + level: 'error' + }); + + throw err; + }); + }; + }, + wrappedBuiltIns + ); + } + + // Capture breadcrumbs from any click that is unhandled / bubbled up all the way + // to the document. Do this before we instrument addEventListener. + if (autoBreadcrumbs.dom && this._hasDocument) { + if (_document.addEventListener) { + _document.addEventListener('click', self._breadcrumbEventHandler('click'), false); + _document.addEventListener('keypress', self._keypressEventHandler(), false); + } else if (_document.attachEvent) { + // IE8 Compatibility + _document.attachEvent('onclick', self._breadcrumbEventHandler('click')); + _document.attachEvent('onkeypress', self._keypressEventHandler()); + } + } + + // record navigation (URL) changes + // NOTE: in Chrome App environment, touching history.pushState, *even inside + // a try/catch block*, will cause Chrome to output an error to console.error + // borrowed from: https://github.com/angular/angular.js/pull/13945/files + var chrome = _window.chrome; + var isChromePackagedApp = chrome && chrome.app && chrome.app.runtime; + var hasPushAndReplaceState = + !isChromePackagedApp && + _window.history && + _window.history.pushState && + _window.history.replaceState; + if (autoBreadcrumbs.location && hasPushAndReplaceState) { + // TODO: remove onpopstate handler on uninstall() + var oldOnPopState = _window.onpopstate; + _window.onpopstate = function() { + var currentHref = self._location.href; + self._captureUrlChange(self._lastHref, currentHref); + + if (oldOnPopState) { + return oldOnPopState.apply(this, arguments); + } + }; + + var historyReplacementFunction = function(origHistFunction) { + // note history.pushState.length is 0; intentionally not declaring + // params to preserve 0 arity + return function(/* state, title, url */) { + var url = arguments.length > 2 ? arguments[2] : undefined; + + // url argument is optional + if (url) { + // coerce to string (this is what pushState does) + self._captureUrlChange(self._lastHref, url + ''); + } + + return origHistFunction.apply(this, arguments); + }; + }; + + fill(_window.history, 'pushState', historyReplacementFunction, wrappedBuiltIns); + fill(_window.history, 'replaceState', historyReplacementFunction, wrappedBuiltIns); + } + + if (autoBreadcrumbs.console && 'console' in _window && console.log) { + // console + var consoleMethodCallback = function(msg, data) { + self.captureBreadcrumb({ + message: msg, + level: data.level, + category: 'console' + }); + }; + + each(['debug', 'info', 'warn', 'error', 'log'], function(_, level) { + wrapConsoleMethod(console, level, consoleMethodCallback); + }); + } + }, + + _restoreBuiltIns: function() { + // restore any wrapped builtins + var builtin; + while (this._wrappedBuiltIns.length) { + builtin = this._wrappedBuiltIns.shift(); + + var obj = builtin[0], + name = builtin[1], + orig = builtin[2]; + + obj[name] = orig; + } + }, + + _restoreConsole: function() { + // eslint-disable-next-line guard-for-in + for (var method in this._originalConsoleMethods) { + this._originalConsole[method] = this._originalConsoleMethods[method]; + } + }, + + _drainPlugins: function() { + var self = this; + + // FIX ME TODO + each(this._plugins, function(_, plugin) { + var installer = plugin[0]; + var args = plugin[1]; + installer.apply(self, [self].concat(args)); + }); + }, + + _parseDSN: function(str) { + var m = dsnPattern.exec(str), + dsn = {}, + i = 7; + + try { + while (i--) dsn[dsnKeys[i]] = m[i] || ''; + } catch (e) { + throw new RavenConfigError('Invalid DSN: ' + str); + } + + if (dsn.pass && !this._globalOptions.allowSecretKey) { + throw new RavenConfigError( + 'Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key' + ); + } + + return dsn; + }, + + _getGlobalServer: function(uri) { + // assemble the endpoint from the uri pieces + var globalServer = '//' + uri.host + (uri.port ? ':' + uri.port : ''); + + if (uri.protocol) { + globalServer = uri.protocol + ':' + globalServer; + } + return globalServer; + }, + + _handleOnErrorStackInfo: function() { + // if we are intentionally ignoring errors via onerror, bail out + if (!this._ignoreOnError) { + this._handleStackInfo.apply(this, arguments); + } + }, + + _handleStackInfo: function(stackInfo, options) { + var frames = this._prepareFrames(stackInfo, options); + + this._triggerEvent('handle', { + stackInfo: stackInfo, + options: options + }); + + this._processException( + stackInfo.name, + stackInfo.message, + stackInfo.url, + stackInfo.lineno, + frames, + options + ); + }, + + _prepareFrames: function(stackInfo, options) { + var self = this; + var frames = []; + if (stackInfo.stack && stackInfo.stack.length) { + each(stackInfo.stack, function(i, stack) { + var frame = self._normalizeFrame(stack, stackInfo.url); + if (frame) { + frames.push(frame); + } + }); + + // e.g. frames captured via captureMessage throw + if (options && options.trimHeadFrames) { + for (var j = 0; j < options.trimHeadFrames && j < frames.length; j++) { + frames[j].in_app = false; + } + } + } + frames = frames.slice(0, this._globalOptions.stackTraceLimit); + return frames; + }, + + _normalizeFrame: function(frame, stackInfoUrl) { + // normalize the frames data + var normalized = { + filename: frame.url, + lineno: frame.line, + colno: frame.column, + function: frame.func || '?' + }; + + // Case when we don't have any information about the error + // E.g. throwing a string or raw object, instead of an `Error` in Firefox + // Generating synthetic error doesn't add any value here + // + // We should probably somehow let a user know that they should fix their code + if (!frame.url) { + normalized.filename = stackInfoUrl; // fallback to whole stacks url from onerror handler + } + + normalized.in_app = !// determine if an exception came from outside of our app + // first we check the global includePaths list. + ( + (!!this._globalOptions.includePaths.test && + !this._globalOptions.includePaths.test(normalized.filename)) || + // Now we check for fun, if the function name is Raven or TraceKit + /(Raven|TraceKit)\./.test(normalized['function']) || + // finally, we do a last ditch effort and check for raven.min.js + /raven\.(min\.)?js$/.test(normalized.filename) + ); + + return normalized; + }, + + _processException: function(type, message, fileurl, lineno, frames, options) { + var prefixedMessage = (type ? type + ': ' : '') + (message || ''); + if ( + !!this._globalOptions.ignoreErrors.test && + (this._globalOptions.ignoreErrors.test(message) || + this._globalOptions.ignoreErrors.test(prefixedMessage)) + ) { + return; + } + + var stacktrace; + + if (frames && frames.length) { + fileurl = frames[0].filename || fileurl; + // Sentry expects frames oldest to newest + // and JS sends them as newest to oldest + frames.reverse(); + stacktrace = {frames: frames}; + } else if (fileurl) { + stacktrace = { + frames: [ + { + filename: fileurl, + lineno: lineno, + in_app: true + } + ] + }; + } + + if ( + !!this._globalOptions.ignoreUrls.test && + this._globalOptions.ignoreUrls.test(fileurl) + ) { + return; + } + + if ( + !!this._globalOptions.whitelistUrls.test && + !this._globalOptions.whitelistUrls.test(fileurl) + ) { + return; + } + + var data = objectMerge( + { + // sentry.interfaces.Exception + exception: { + values: [ + { + type: type, + value: message, + stacktrace: stacktrace + } + ] + }, + transaction: fileurl + }, + options + ); + + // Fire away! + this._send(data); + }, + + _trimPacket: function(data) { + // For now, we only want to truncate the two different messages + // but this could/should be expanded to just trim everything + var max = this._globalOptions.maxMessageLength; + if (data.message) { + data.message = truncate(data.message, max); + } + if (data.exception) { + var exception = data.exception.values[0]; + exception.value = truncate(exception.value, max); + } + + var request = data.request; + if (request) { + if (request.url) { + request.url = truncate(request.url, this._globalOptions.maxUrlLength); + } + if (request.Referer) { + request.Referer = truncate(request.Referer, this._globalOptions.maxUrlLength); + } + } + + if (data.breadcrumbs && data.breadcrumbs.values) + this._trimBreadcrumbs(data.breadcrumbs); + + return data; + }, + + /** + * Truncate breadcrumb values (right now just URLs) + */ + _trimBreadcrumbs: function(breadcrumbs) { + // known breadcrumb properties with urls + // TODO: also consider arbitrary prop values that start with (https?)?:// + var urlProps = ['to', 'from', 'url'], + urlProp, + crumb, + data; + + for (var i = 0; i < breadcrumbs.values.length; ++i) { + crumb = breadcrumbs.values[i]; + if ( + !crumb.hasOwnProperty('data') || + !isObject(crumb.data) || + objectFrozen(crumb.data) + ) + continue; + + data = objectMerge({}, crumb.data); + for (var j = 0; j < urlProps.length; ++j) { + urlProp = urlProps[j]; + if (data.hasOwnProperty(urlProp) && data[urlProp]) { + data[urlProp] = truncate(data[urlProp], this._globalOptions.maxUrlLength); + } + } + breadcrumbs.values[i].data = data; + } + }, + + _getHttpData: function() { + if (!this._hasNavigator && !this._hasDocument) return; + var httpData = {}; + + if (this._hasNavigator && _navigator.userAgent) { + httpData.headers = { + 'User-Agent': _navigator.userAgent + }; + } + + // Check in `window` instead of `document`, as we may be in ServiceWorker environment + if (_window.location && _window.location.href) { + httpData.url = _window.location.href; + } + + if (this._hasDocument && _document.referrer) { + if (!httpData.headers) httpData.headers = {}; + httpData.headers.Referer = _document.referrer; + } + + return httpData; + }, + + _resetBackoff: function() { + this._backoffDuration = 0; + this._backoffStart = null; + }, + + _shouldBackoff: function() { + return this._backoffDuration && now() - this._backoffStart < this._backoffDuration; + }, + + /** + * Returns true if the in-process data payload matches the signature + * of the previously-sent data + * + * NOTE: This has to be done at this level because TraceKit can generate + * data from window.onerror WITHOUT an exception object (IE8, IE9, + * other old browsers). This can take the form of an "exception" + * data object with a single frame (derived from the onerror args). + */ + _isRepeatData: function(current) { + var last = this._lastData; + + if ( + !last || + current.message !== last.message || // defined for captureMessage + current.transaction !== last.transaction // defined for captureException/onerror + ) + return false; + + // Stacktrace interface (i.e. from captureMessage) + if (current.stacktrace || last.stacktrace) { + return isSameStacktrace(current.stacktrace, last.stacktrace); + } else if (current.exception || last.exception) { + // Exception interface (i.e. from captureException/onerror) + return isSameException(current.exception, last.exception); + } + + return true; + }, + + _setBackoffState: function(request) { + // If we are already in a backoff state, don't change anything + if (this._shouldBackoff()) { + return; + } + + var status = request.status; + + // 400 - project_id doesn't exist or some other fatal + // 401 - invalid/revoked dsn + // 429 - too many requests + if (!(status === 400 || status === 401 || status === 429)) return; + + var retry; + try { + // If Retry-After is not in Access-Control-Expose-Headers, most + // browsers will throw an exception trying to access it + if (supportsFetch()) { + retry = request.headers.get('Retry-After'); + } else { + retry = request.getResponseHeader('Retry-After'); + } + + // Retry-After is returned in seconds + retry = parseInt(retry, 10) * 1000; + } catch (e) { + /* eslint no-empty:0 */ + } + + this._backoffDuration = retry + ? // If Sentry server returned a Retry-After value, use it + retry + : // Otherwise, double the last backoff duration (starts at 1 sec) + this._backoffDuration * 2 || 1000; + + this._backoffStart = now(); + }, + + _send: function(data) { + var globalOptions = this._globalOptions; + + var baseData = { + project: this._globalProject, + logger: globalOptions.logger, + platform: 'javascript' + }, + httpData = this._getHttpData(); + + if (httpData) { + baseData.request = httpData; + } + + // HACK: delete `trimHeadFrames` to prevent from appearing in outbound payload + if (data.trimHeadFrames) delete data.trimHeadFrames; + + data = objectMerge(baseData, data); + + // Merge in the tags and extra separately since objectMerge doesn't handle a deep merge + data.tags = objectMerge(objectMerge({}, this._globalContext.tags), data.tags); + data.extra = objectMerge(objectMerge({}, this._globalContext.extra), data.extra); + + // Send along our own collected metadata with extra + data.extra['session:duration'] = now() - this._startTime; + + if (this._breadcrumbs && this._breadcrumbs.length > 0) { + // intentionally make shallow copy so that additions + // to breadcrumbs aren't accidentally sent in this request + data.breadcrumbs = { + values: [].slice.call(this._breadcrumbs, 0) + }; + } + + if (this._globalContext.user) { + // sentry.interfaces.User + data.user = this._globalContext.user; + } + + // Include the environment if it's defined in globalOptions + if (globalOptions.environment) data.environment = globalOptions.environment; + + // Include the release if it's defined in globalOptions + if (globalOptions.release) data.release = globalOptions.release; + + // Include server_name if it's defined in globalOptions + if (globalOptions.serverName) data.server_name = globalOptions.serverName; + + data = this._sanitizeData(data); + + // Cleanup empty properties before sending them to the server + Object.keys(data).forEach(function(key) { + if (data[key] == null || data[key] === '' || isEmptyObject(data[key])) { + delete data[key]; + } + }); + + if (isFunction(globalOptions.dataCallback)) { + data = globalOptions.dataCallback(data) || data; + } + + // Why?????????? + if (!data || isEmptyObject(data)) { + return; + } + + // Check if the request should be filtered or not + if ( + isFunction(globalOptions.shouldSendCallback) && + !globalOptions.shouldSendCallback(data) + ) { + return; + } + + // Backoff state: Sentry server previously responded w/ an error (e.g. 429 - too many requests), + // so drop requests until "cool-off" period has elapsed. + if (this._shouldBackoff()) { + this._logDebug('warn', 'Raven dropped error due to backoff: ', data); + return; + } + + if (typeof globalOptions.sampleRate === 'number') { + if (Math.random() < globalOptions.sampleRate) { + this._sendProcessedPayload(data); + } + } else { + this._sendProcessedPayload(data); + } + }, + + _sanitizeData: function(data) { + return sanitize(data, this._globalOptions.sanitizeKeys); + }, + + _getUuid: function() { + return uuid4(); + }, + + _sendProcessedPayload: function(data, callback) { + var self = this; + var globalOptions = this._globalOptions; + + if (!this.isSetup()) return; + + // Try and clean up the packet before sending by truncating long values + data = this._trimPacket(data); + + // ideally duplicate error testing should occur *before* dataCallback/shouldSendCallback, + // but this would require copying an un-truncated copy of the data packet, which can be + // arbitrarily deep (extra_data) -- could be worthwhile? will revisit + if (!this._globalOptions.allowDuplicates && this._isRepeatData(data)) { + this._logDebug('warn', 'Raven dropped repeat event: ', data); + return; + } + + // Send along an event_id if not explicitly passed. + // This event_id can be used to reference the error within Sentry itself. + // Set lastEventId after we know the error should actually be sent + this._lastEventId = data.event_id || (data.event_id = this._getUuid()); + + // Store outbound payload after trim + this._lastData = data; + + this._logDebug('debug', 'Raven about to send:', data); + + var auth = { + sentry_version: '7', + sentry_client: 'raven-js/' + this.VERSION, + sentry_key: this._globalKey + }; + + if (this._globalSecret) { + auth.sentry_secret = this._globalSecret; + } + + var exception = data.exception && data.exception.values[0]; + + // only capture 'sentry' breadcrumb is autoBreadcrumbs is truthy + if ( + this._globalOptions.autoBreadcrumbs && + this._globalOptions.autoBreadcrumbs.sentry + ) { + this.captureBreadcrumb({ + category: 'sentry', + message: exception + ? (exception.type ? exception.type + ': ' : '') + exception.value + : data.message, + event_id: data.event_id, + level: data.level || 'error' // presume error unless specified + }); + } + + var url = this._globalEndpoint; + (globalOptions.transport || this._makeRequest).call(this, { + url: url, + auth: auth, + data: data, + options: globalOptions, + onSuccess: function success() { + self._resetBackoff(); + + self._triggerEvent('success', { + data: data, + src: url + }); + callback && callback(); + }, + onError: function failure(error) { + self._logDebug('error', 'Raven transport failed to send: ', error); + + if (error.request) { + self._setBackoffState(error.request); + } + + self._triggerEvent('failure', { + data: data, + src: url + }); + error = error || new Error('Raven send failed (no additional details provided)'); + callback && callback(error); + } + }); + }, + + _makeRequest: function(opts) { + // Auth is intentionally sent as part of query string (NOT as custom HTTP header) to avoid preflight CORS requests + var url = opts.url + '?' + urlencode(opts.auth); + + var evaluatedHeaders = null; + var evaluatedFetchParameters = {}; + + if (opts.options.headers) { + evaluatedHeaders = this._evaluateHash(opts.options.headers); + } + + if (opts.options.fetchParameters) { + evaluatedFetchParameters = this._evaluateHash(opts.options.fetchParameters); + } + + if (supportsFetch()) { + evaluatedFetchParameters.body = stringify(opts.data); + + var defaultFetchOptions = objectMerge({}, this._fetchDefaults); + var fetchOptions = objectMerge(defaultFetchOptions, evaluatedFetchParameters); + + if (evaluatedHeaders) { + fetchOptions.headers = evaluatedHeaders; + } + + return _window + .fetch(url, fetchOptions) + .then(function(response) { + if (response.ok) { + opts.onSuccess && opts.onSuccess(); + } else { + var error = new Error('Sentry error code: ' + response.status); + // It's called request only to keep compatibility with XHR interface + // and not add more redundant checks in setBackoffState method + error.request = response; + opts.onError && opts.onError(error); + } + }) + ['catch'](function() { + opts.onError && + opts.onError(new Error('Sentry error code: network unavailable')); + }); + } + + var request = _window.XMLHttpRequest && new _window.XMLHttpRequest(); + if (!request) return; + + // if browser doesn't support CORS (e.g. IE7), we are out of luck + var hasCORS = 'withCredentials' in request || typeof XDomainRequest !== 'undefined'; + + if (!hasCORS) return; + + if ('withCredentials' in request) { + request.onreadystatechange = function() { + if (request.readyState !== 4) { + return; + } else if (request.status === 200) { + opts.onSuccess && opts.onSuccess(); + } else if (opts.onError) { + var err = new Error('Sentry error code: ' + request.status); + err.request = request; + opts.onError(err); + } + }; + } else { + request = new XDomainRequest(); + // xdomainrequest cannot go http -> https (or vice versa), + // so always use protocol relative + url = url.replace(/^https?:/, ''); + + // onreadystatechange not supported by XDomainRequest + if (opts.onSuccess) { + request.onload = opts.onSuccess; + } + if (opts.onError) { + request.onerror = function() { + var err = new Error('Sentry error code: XDomainRequest'); + err.request = request; + opts.onError(err); + }; + } + } + + request.open('POST', url); + + if (evaluatedHeaders) { + each(evaluatedHeaders, function(key, value) { + request.setRequestHeader(key, value); + }); + } + + request.send(stringify(opts.data)); + }, + + _evaluateHash: function(hash) { + var evaluated = {}; + + for (var key in hash) { + if (hash.hasOwnProperty(key)) { + var value = hash[key]; + evaluated[key] = typeof value === 'function' ? value() : value; + } + } + + return evaluated; + }, + + _logDebug: function(level) { + // We allow `Raven.debug` and `Raven.config(DSN, { debug: true })` to not make backward incompatible API change + if ( + this._originalConsoleMethods[level] && + (this.debug || this._globalOptions.debug) + ) { + // In IE<10 console methods do not have their own 'apply' method + Function.prototype.apply.call( + this._originalConsoleMethods[level], + this._originalConsole, + [].slice.call(arguments, 1) + ); + } + }, + + _mergeContext: function(key, context) { + if (isUndefined(context)) { + delete this._globalContext[key]; + } else { + this._globalContext[key] = objectMerge(this._globalContext[key] || {}, context); + } + } +}; + +// Deprecations +Raven.prototype.setUser = Raven.prototype.setUserContext; +Raven.prototype.setReleaseContext = Raven.prototype.setRelease; + +module.exports = Raven; + +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"2":2,"3":3,"6":6,"7":7,"8":8,"9":9}],5:[function(_dereq_,module,exports){ +(function (global){ +/** + * Enforces a single instance of the Raven client, and the + * main entry point for Raven. If you are a consumer of the + * Raven library, you SHOULD load this file (vs raven.js). + **/ + +var RavenConstructor = _dereq_(4); + +// This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) +var _window = + typeof window !== 'undefined' + ? window + : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; +var _Raven = _window.Raven; + +var Raven = new RavenConstructor(); + +/* + * Allow multiple versions of Raven to be installed. + * Strip Raven from the global context and returns the instance. + * + * @return {Raven} + */ +Raven.noConflict = function() { + _window.Raven = _Raven; + return Raven; +}; + +Raven.afterLoad(); + +module.exports = Raven; + +/** + * DISCLAIMER: + * + * Expose `Client` constructor for cases where user want to track multiple "sub-applications" in one larger app. + * It's not meant to be used by a wide audience, so pleaaase make sure that you know what you're doing before using it. + * Accidentally calling `install` multiple times, may result in an unexpected behavior that's very hard to debug. + * + * It's called `Client' to be in-line with Raven Node implementation. + * + * HOWTO: + * + * import Raven from 'raven-js'; + * + * const someAppReporter = new Raven.Client(); + * const someOtherAppReporter = new Raven.Client(); + * + * someAppReporter.config('__DSN__', { + * ...config goes here + * }); + * + * someOtherAppReporter.config('__OTHER_DSN__', { + * ...config goes here + * }); + * + * someAppReporter.captureMessage(...); + * someAppReporter.captureException(...); + * someAppReporter.captureBreadcrumb(...); + * + * someOtherAppReporter.captureMessage(...); + * someOtherAppReporter.captureException(...); + * someOtherAppReporter.captureBreadcrumb(...); + * + * It should "just work". + */ +module.exports.Client = RavenConstructor; + +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"4":4}],6:[function(_dereq_,module,exports){ +(function (global){ +var stringify = _dereq_(8); + +var _window = + typeof window !== 'undefined' + ? window + : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; + +function isObject(what) { + return typeof what === 'object' && what !== null; +} + +// Yanked from https://git.io/vS8DV re-used under CC0 +// with some tiny modifications +function isError(value) { + switch (Object.prototype.toString.call(value)) { + case '[object Error]': + return true; + case '[object Exception]': + return true; + case '[object DOMException]': + return true; + default: + return value instanceof Error; + } +} + +function isErrorEvent(value) { + return Object.prototype.toString.call(value) === '[object ErrorEvent]'; +} + +function isDOMError(value) { + return Object.prototype.toString.call(value) === '[object DOMError]'; +} + +function isDOMException(value) { + return Object.prototype.toString.call(value) === '[object DOMException]'; +} + +function isUndefined(what) { + return what === void 0; +} + +function isFunction(what) { + return typeof what === 'function'; +} + +function isPlainObject(what) { + return Object.prototype.toString.call(what) === '[object Object]'; +} + +function isString(what) { + return Object.prototype.toString.call(what) === '[object String]'; +} + +function isArray(what) { + return Object.prototype.toString.call(what) === '[object Array]'; +} + +function isEmptyObject(what) { + if (!isPlainObject(what)) return false; + + for (var _ in what) { + if (what.hasOwnProperty(_)) { + return false; + } + } + return true; +} + +function supportsErrorEvent() { + try { + new ErrorEvent(''); // eslint-disable-line no-new + return true; + } catch (e) { + return false; + } +} + +function supportsDOMError() { + try { + new DOMError(''); // eslint-disable-line no-new + return true; + } catch (e) { + return false; + } +} + +function supportsDOMException() { + try { + new DOMException(''); // eslint-disable-line no-new + return true; + } catch (e) { + return false; + } +} + +function supportsFetch() { + if (!('fetch' in _window)) return false; + + try { + new Headers(); // eslint-disable-line no-new + new Request(''); // eslint-disable-line no-new + new Response(); // eslint-disable-line no-new + return true; + } catch (e) { + return false; + } +} + +// Despite all stars in the sky saying that Edge supports old draft syntax, aka 'never', 'always', 'origin' and 'default +// https://caniuse.com/#feat=referrer-policy +// It doesn't. And it throw exception instead of ignoring this parameter... +// REF: https://github.com/getsentry/raven-js/issues/1233 +function supportsReferrerPolicy() { + if (!supportsFetch()) return false; + + try { + // eslint-disable-next-line no-new + new Request('pickleRick', { + referrerPolicy: 'origin' + }); + return true; + } catch (e) { + return false; + } +} + +function supportsPromiseRejectionEvent() { + return typeof PromiseRejectionEvent === 'function'; +} + +function wrappedCallback(callback) { + function dataCallback(data, original) { + var normalizedData = callback(data) || data; + if (original) { + return original(normalizedData) || normalizedData; + } + return normalizedData; + } + + return dataCallback; +} + +function each(obj, callback) { + var i, j; + + if (isUndefined(obj.length)) { + for (i in obj) { + if (hasKey(obj, i)) { + callback.call(null, i, obj[i]); + } + } + } else { + j = obj.length; + if (j) { + for (i = 0; i < j; i++) { + callback.call(null, i, obj[i]); + } + } + } +} + +function objectMerge(obj1, obj2) { + if (!obj2) { + return obj1; + } + each(obj2, function(key, value) { + obj1[key] = value; + }); + return obj1; +} + +/** + * This function is only used for react-native. + * react-native freezes object that have already been sent over the + * js bridge. We need this function in order to check if the object is frozen. + * So it's ok that objectFrozen returns false if Object.isFrozen is not + * supported because it's not relevant for other "platforms". See related issue: + * https://github.com/getsentry/react-native-sentry/issues/57 + */ +function objectFrozen(obj) { + if (!Object.isFrozen) { + return false; + } + return Object.isFrozen(obj); +} + +function truncate(str, max) { + if (typeof max !== 'number') { + throw new Error('2nd argument to `truncate` function should be a number'); + } + if (typeof str !== 'string' || max === 0) { + return str; + } + return str.length <= max ? str : str.substr(0, max) + '\u2026'; +} + +/** + * hasKey, a better form of hasOwnProperty + * Example: hasKey(MainHostObject, property) === true/false + * + * @param {Object} host object to check property + * @param {string} key to check + */ +function hasKey(object, key) { + return Object.prototype.hasOwnProperty.call(object, key); +} + +function joinRegExp(patterns) { + // Combine an array of regular expressions and strings into one large regexp + // Be mad. + var sources = [], + i = 0, + len = patterns.length, + pattern; + + for (; i < len; i++) { + pattern = patterns[i]; + if (isString(pattern)) { + // If it's a string, we need to escape it + // Taken from: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions + sources.push(pattern.replace(/([.*+?^=!:${}()|\[\]\/\\])/g, '\\$1')); + } else if (pattern && pattern.source) { + // If it's a regexp already, we want to extract the source + sources.push(pattern.source); + } + // Intentionally skip other cases + } + return new RegExp(sources.join('|'), 'i'); +} + +function urlencode(o) { + var pairs = []; + each(o, function(key, value) { + pairs.push(encodeURIComponent(key) + '=' + encodeURIComponent(value)); + }); + return pairs.join('&'); +} + +// borrowed from https://tools.ietf.org/html/rfc3986#appendix-B +// intentionally using regex and not href parsing trick because React Native and other +// environments where DOM might not be available +function parseUrl(url) { + if (typeof url !== 'string') return {}; + var match = url.match(/^(([^:\/?#]+):)?(\/\/([^\/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?$/); + + // coerce to undefined values to empty string so we don't get 'undefined' + var query = match[6] || ''; + var fragment = match[8] || ''; + return { + protocol: match[2], + host: match[4], + path: match[5], + relative: match[5] + query + fragment // everything minus origin + }; +} +function uuid4() { + var crypto = _window.crypto || _window.msCrypto; + + if (!isUndefined(crypto) && crypto.getRandomValues) { + // Use window.crypto API if available + // eslint-disable-next-line no-undef + var arr = new Uint16Array(8); + crypto.getRandomValues(arr); + + // set 4 in byte 7 + arr[3] = (arr[3] & 0xfff) | 0x4000; + // set 2 most significant bits of byte 9 to '10' + arr[4] = (arr[4] & 0x3fff) | 0x8000; + + var pad = function(num) { + var v = num.toString(16); + while (v.length < 4) { + v = '0' + v; + } + return v; + }; + + return ( + pad(arr[0]) + + pad(arr[1]) + + pad(arr[2]) + + pad(arr[3]) + + pad(arr[4]) + + pad(arr[5]) + + pad(arr[6]) + + pad(arr[7]) + ); + } else { + // http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/2117523#2117523 + return 'xxxxxxxxxxxx4xxxyxxxxxxxxxxxxxxx'.replace(/[xy]/g, function(c) { + var r = (Math.random() * 16) | 0, + v = c === 'x' ? r : (r & 0x3) | 0x8; + return v.toString(16); + }); + } +} + +/** + * Given a child DOM element, returns a query-selector statement describing that + * and its ancestors + * e.g. [HTMLElement] => body > div > input#foo.btn[name=baz] + * @param elem + * @returns {string} + */ +function htmlTreeAsString(elem) { + /* eslint no-extra-parens:0*/ + var MAX_TRAVERSE_HEIGHT = 5, + MAX_OUTPUT_LEN = 80, + out = [], + height = 0, + len = 0, + separator = ' > ', + sepLength = separator.length, + nextStr; + + while (elem && height++ < MAX_TRAVERSE_HEIGHT) { + nextStr = htmlElementAsString(elem); + // bail out if + // - nextStr is the 'html' element + // - the length of the string that would be created exceeds MAX_OUTPUT_LEN + // (ignore this limit if we are on the first iteration) + if ( + nextStr === 'html' || + (height > 1 && len + out.length * sepLength + nextStr.length >= MAX_OUTPUT_LEN) + ) { + break; + } + + out.push(nextStr); + + len += nextStr.length; + elem = elem.parentNode; + } + + return out.reverse().join(separator); +} + +/** + * Returns a simple, query-selector representation of a DOM element + * e.g. [HTMLElement] => input#foo.btn[name=baz] + * @param HTMLElement + * @returns {string} + */ +function htmlElementAsString(elem) { + var out = [], + className, + classes, + key, + attr, + i; + + if (!elem || !elem.tagName) { + return ''; + } + + out.push(elem.tagName.toLowerCase()); + if (elem.id) { + out.push('#' + elem.id); + } + + className = elem.className; + if (className && isString(className)) { + classes = className.split(/\s+/); + for (i = 0; i < classes.length; i++) { + out.push('.' + classes[i]); + } + } + var attrWhitelist = ['type', 'name', 'title', 'alt']; + for (i = 0; i < attrWhitelist.length; i++) { + key = attrWhitelist[i]; + attr = elem.getAttribute(key); + if (attr) { + out.push('[' + key + '="' + attr + '"]'); + } + } + return out.join(''); +} + +/** + * Returns true if either a OR b is truthy, but not both + */ +function isOnlyOneTruthy(a, b) { + return !!(!!a ^ !!b); +} + +/** + * Returns true if both parameters are undefined + */ +function isBothUndefined(a, b) { + return isUndefined(a) && isUndefined(b); +} + +/** + * Returns true if the two input exception interfaces have the same content + */ +function isSameException(ex1, ex2) { + if (isOnlyOneTruthy(ex1, ex2)) return false; + + ex1 = ex1.values[0]; + ex2 = ex2.values[0]; + + if (ex1.type !== ex2.type || ex1.value !== ex2.value) return false; + + // in case both stacktraces are undefined, we can't decide so default to false + if (isBothUndefined(ex1.stacktrace, ex2.stacktrace)) return false; + + return isSameStacktrace(ex1.stacktrace, ex2.stacktrace); +} + +/** + * Returns true if the two input stack trace interfaces have the same content + */ +function isSameStacktrace(stack1, stack2) { + if (isOnlyOneTruthy(stack1, stack2)) return false; + + var frames1 = stack1.frames; + var frames2 = stack2.frames; + + // Exit early if frame count differs + if (frames1.length !== frames2.length) return false; + + // Iterate through every frame; bail out if anything differs + var a, b; + for (var i = 0; i < frames1.length; i++) { + a = frames1[i]; + b = frames2[i]; + if ( + a.filename !== b.filename || + a.lineno !== b.lineno || + a.colno !== b.colno || + a['function'] !== b['function'] + ) + return false; + } + return true; +} + +/** + * Polyfill a method + * @param obj object e.g. `document` + * @param name method name present on object e.g. `addEventListener` + * @param replacement replacement function + * @param track {optional} record instrumentation to an array + */ +function fill(obj, name, replacement, track) { + if (obj == null) return; + var orig = obj[name]; + obj[name] = replacement(orig); + obj[name].__raven__ = true; + obj[name].__orig__ = orig; + if (track) { + track.push([obj, name, orig]); + } +} + +/** + * Join values in array + * @param input array of values to be joined together + * @param delimiter string to be placed in-between values + * @returns {string} + */ +function safeJoin(input, delimiter) { + if (!isArray(input)) return ''; + + var output = []; + + for (var i = 0; i < input.length; i++) { + try { + output.push(String(input[i])); + } catch (e) { + output.push('[value cannot be serialized]'); + } + } + + return output.join(delimiter); +} + +// Default Node.js REPL depth +var MAX_SERIALIZE_EXCEPTION_DEPTH = 3; +// 50kB, as 100kB is max payload size, so half sounds reasonable +var MAX_SERIALIZE_EXCEPTION_SIZE = 50 * 1024; +var MAX_SERIALIZE_KEYS_LENGTH = 40; + +function utf8Length(value) { + return ~-encodeURI(value).split(/%..|./).length; +} + +function jsonSize(value) { + return utf8Length(JSON.stringify(value)); +} + +function serializeValue(value) { + if (typeof value === 'string') { + var maxLength = 40; + return truncate(value, maxLength); + } else if ( + typeof value === 'number' || + typeof value === 'boolean' || + typeof value === 'undefined' + ) { + return value; + } + + var type = Object.prototype.toString.call(value); + + // Node.js REPL notation + if (type === '[object Object]') return '[Object]'; + if (type === '[object Array]') return '[Array]'; + if (type === '[object Function]') + return value.name ? '[Function: ' + value.name + ']' : '[Function]'; + + return value; +} + +function serializeObject(value, depth) { + if (depth === 0) return serializeValue(value); + + if (isPlainObject(value)) { + return Object.keys(value).reduce(function(acc, key) { + acc[key] = serializeObject(value[key], depth - 1); + return acc; + }, {}); + } else if (Array.isArray(value)) { + return value.map(function(val) { + return serializeObject(val, depth - 1); + }); + } + + return serializeValue(value); +} + +function serializeException(ex, depth, maxSize) { + if (!isPlainObject(ex)) return ex; + + depth = typeof depth !== 'number' ? MAX_SERIALIZE_EXCEPTION_DEPTH : depth; + maxSize = typeof depth !== 'number' ? MAX_SERIALIZE_EXCEPTION_SIZE : maxSize; + + var serialized = serializeObject(ex, depth); + + if (jsonSize(stringify(serialized)) > maxSize) { + return serializeException(ex, depth - 1); + } + + return serialized; +} + +function serializeKeysForMessage(keys, maxLength) { + if (typeof keys === 'number' || typeof keys === 'string') return keys.toString(); + if (!Array.isArray(keys)) return ''; + + keys = keys.filter(function(key) { + return typeof key === 'string'; + }); + if (keys.length === 0) return '[object has no keys]'; + + maxLength = typeof maxLength !== 'number' ? MAX_SERIALIZE_KEYS_LENGTH : maxLength; + if (keys[0].length >= maxLength) return keys[0]; + + for (var usedKeys = keys.length; usedKeys > 0; usedKeys--) { + var serialized = keys.slice(0, usedKeys).join(', '); + if (serialized.length > maxLength) continue; + if (usedKeys === keys.length) return serialized; + return serialized + '\u2026'; + } + + return ''; +} + +function sanitize(input, sanitizeKeys) { + if (!isArray(sanitizeKeys) || (isArray(sanitizeKeys) && sanitizeKeys.length === 0)) + return input; + + var sanitizeRegExp = joinRegExp(sanitizeKeys); + var sanitizeMask = '********'; + var safeInput; + + try { + safeInput = JSON.parse(stringify(input)); + } catch (o_O) { + return input; + } + + function sanitizeWorker(workerInput) { + if (isArray(workerInput)) { + return workerInput.map(function(val) { + return sanitizeWorker(val); + }); + } + + if (isPlainObject(workerInput)) { + return Object.keys(workerInput).reduce(function(acc, k) { + if (sanitizeRegExp.test(k)) { + acc[k] = sanitizeMask; + } else { + acc[k] = sanitizeWorker(workerInput[k]); + } + return acc; + }, {}); + } + + return workerInput; + } + + return sanitizeWorker(safeInput); +} + +module.exports = { + isObject: isObject, + isError: isError, + isErrorEvent: isErrorEvent, + isDOMError: isDOMError, + isDOMException: isDOMException, + isUndefined: isUndefined, + isFunction: isFunction, + isPlainObject: isPlainObject, + isString: isString, + isArray: isArray, + isEmptyObject: isEmptyObject, + supportsErrorEvent: supportsErrorEvent, + supportsDOMError: supportsDOMError, + supportsDOMException: supportsDOMException, + supportsFetch: supportsFetch, + supportsReferrerPolicy: supportsReferrerPolicy, + supportsPromiseRejectionEvent: supportsPromiseRejectionEvent, + wrappedCallback: wrappedCallback, + each: each, + objectMerge: objectMerge, + truncate: truncate, + objectFrozen: objectFrozen, + hasKey: hasKey, + joinRegExp: joinRegExp, + urlencode: urlencode, + uuid4: uuid4, + htmlTreeAsString: htmlTreeAsString, + htmlElementAsString: htmlElementAsString, + isSameException: isSameException, + isSameStacktrace: isSameStacktrace, + parseUrl: parseUrl, + fill: fill, + safeJoin: safeJoin, + serializeException: serializeException, + serializeKeysForMessage: serializeKeysForMessage, + sanitize: sanitize +}; + +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"8":8}],7:[function(_dereq_,module,exports){ +(function (global){ +var utils = _dereq_(6); + +/* + TraceKit - Cross brower stack traces + + This was originally forked from github.com/occ/TraceKit, but has since been + largely re-written and is now maintained as part of raven-js. Tests for + this are in test/vendor. + + MIT license +*/ + +var TraceKit = { + collectWindowErrors: true, + debug: false +}; + +// This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) +var _window = + typeof window !== 'undefined' + ? window + : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; + +// global reference to slice +var _slice = [].slice; +var UNKNOWN_FUNCTION = '?'; + +// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error#Error_types +var ERROR_TYPES_RE = /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/; + +function getLocationHref() { + if (typeof document === 'undefined' || document.location == null) return ''; + return document.location.href; +} + +function getLocationOrigin() { + if (typeof document === 'undefined' || document.location == null) return ''; + + // Oh dear IE10... + if (!document.location.origin) { + document.location.origin = + document.location.protocol + + '//' + + document.location.hostname + + (document.location.port ? ':' + document.location.port : ''); + } + + return document.location.origin; +} + +/** + * TraceKit.report: cross-browser processing of unhandled exceptions + * + * Syntax: + * TraceKit.report.subscribe(function(stackInfo) { ... }) + * TraceKit.report.unsubscribe(function(stackInfo) { ... }) + * TraceKit.report(exception) + * try { ...code... } catch(ex) { TraceKit.report(ex); } + * + * Supports: + * - Firefox: full stack trace with line numbers, plus column number + * on top frame; column number is not guaranteed + * - Opera: full stack trace with line and column numbers + * - Chrome: full stack trace with line and column numbers + * - Safari: line and column number for the top frame only; some frames + * may be missing, and column number is not guaranteed + * - IE: line and column number for the top frame only; some frames + * may be missing, and column number is not guaranteed + * + * In theory, TraceKit should work on all of the following versions: + * - IE5.5+ (only 8.0 tested) + * - Firefox 0.9+ (only 3.5+ tested) + * - Opera 7+ (only 10.50 tested; versions 9 and earlier may require + * Exceptions Have Stacktrace to be enabled in opera:config) + * - Safari 3+ (only 4+ tested) + * - Chrome 1+ (only 5+ tested) + * - Konqueror 3.5+ (untested) + * + * Requires TraceKit.computeStackTrace. + * + * Tries to catch all unhandled exceptions and report them to the + * subscribed handlers. Please note that TraceKit.report will rethrow the + * exception. This is REQUIRED in order to get a useful stack trace in IE. + * If the exception does not reach the top of the browser, you will only + * get a stack trace from the point where TraceKit.report was called. + * + * Handlers receive a stackInfo object as described in the + * TraceKit.computeStackTrace docs. + */ +TraceKit.report = (function reportModuleWrapper() { + var handlers = [], + lastArgs = null, + lastException = null, + lastExceptionStack = null; + + /** + * Add a crash handler. + * @param {Function} handler + */ + function subscribe(handler) { + installGlobalHandler(); + handlers.push(handler); + } + + /** + * Remove a crash handler. + * @param {Function} handler + */ + function unsubscribe(handler) { + for (var i = handlers.length - 1; i >= 0; --i) { + if (handlers[i] === handler) { + handlers.splice(i, 1); + } + } + } + + /** + * Remove all crash handlers. + */ + function unsubscribeAll() { + uninstallGlobalHandler(); + handlers = []; + } + + /** + * Dispatch stack information to all handlers. + * @param {Object.} stack + */ + function notifyHandlers(stack, isWindowError) { + var exception = null; + if (isWindowError && !TraceKit.collectWindowErrors) { + return; + } + for (var i in handlers) { + if (handlers.hasOwnProperty(i)) { + try { + handlers[i].apply(null, [stack].concat(_slice.call(arguments, 2))); + } catch (inner) { + exception = inner; + } + } + } + + if (exception) { + throw exception; + } + } + + var _oldOnerrorHandler, _onErrorHandlerInstalled; + + /** + * Ensures all global unhandled exceptions are recorded. + * Supported by Gecko and IE. + * @param {string} msg Error message. + * @param {string} url URL of script that generated the exception. + * @param {(number|string)} lineNo The line number at which the error + * occurred. + * @param {?(number|string)} colNo The column number at which the error + * occurred. + * @param {?Error} ex The actual Error object. + */ + function traceKitWindowOnError(msg, url, lineNo, colNo, ex) { + var stack = null; + // If 'ex' is ErrorEvent, get real Error from inside + var exception = utils.isErrorEvent(ex) ? ex.error : ex; + // If 'msg' is ErrorEvent, get real message from inside + var message = utils.isErrorEvent(msg) ? msg.message : msg; + + if (lastExceptionStack) { + TraceKit.computeStackTrace.augmentStackTraceWithInitialElement( + lastExceptionStack, + url, + lineNo, + message + ); + processLastException(); + } else if (exception && utils.isError(exception)) { + // non-string `exception` arg; attempt to extract stack trace + + // New chrome and blink send along a real error object + // Let's just report that like a normal error. + // See: https://mikewest.org/2013/08/debugging-runtime-errors-with-window-onerror + stack = TraceKit.computeStackTrace(exception); + notifyHandlers(stack, true); + } else { + var location = { + url: url, + line: lineNo, + column: colNo + }; + + var name = undefined; + var groups; + + if ({}.toString.call(message) === '[object String]') { + var groups = message.match(ERROR_TYPES_RE); + if (groups) { + name = groups[1]; + message = groups[2]; + } + } + + location.func = UNKNOWN_FUNCTION; + + stack = { + name: name, + message: message, + url: getLocationHref(), + stack: [location] + }; + notifyHandlers(stack, true); + } + + if (_oldOnerrorHandler) { + return _oldOnerrorHandler.apply(this, arguments); + } + + return false; + } + + function installGlobalHandler() { + if (_onErrorHandlerInstalled) { + return; + } + _oldOnerrorHandler = _window.onerror; + _window.onerror = traceKitWindowOnError; + _onErrorHandlerInstalled = true; + } + + function uninstallGlobalHandler() { + if (!_onErrorHandlerInstalled) { + return; + } + _window.onerror = _oldOnerrorHandler; + _onErrorHandlerInstalled = false; + _oldOnerrorHandler = undefined; + } + + function processLastException() { + var _lastExceptionStack = lastExceptionStack, + _lastArgs = lastArgs; + lastArgs = null; + lastExceptionStack = null; + lastException = null; + notifyHandlers.apply(null, [_lastExceptionStack, false].concat(_lastArgs)); + } + + /** + * Reports an unhandled Error to TraceKit. + * @param {Error} ex + * @param {?boolean} rethrow If false, do not re-throw the exception. + * Only used for window.onerror to not cause an infinite loop of + * rethrowing. + */ + function report(ex, rethrow) { + var args = _slice.call(arguments, 1); + if (lastExceptionStack) { + if (lastException === ex) { + return; // already caught by an inner catch block, ignore + } else { + processLastException(); + } + } + + var stack = TraceKit.computeStackTrace(ex); + lastExceptionStack = stack; + lastException = ex; + lastArgs = args; + + // If the stack trace is incomplete, wait for 2 seconds for + // slow slow IE to see if onerror occurs or not before reporting + // this exception; otherwise, we will end up with an incomplete + // stack trace + setTimeout(function() { + if (lastException === ex) { + processLastException(); + } + }, stack.incomplete ? 2000 : 0); + + if (rethrow !== false) { + throw ex; // re-throw to propagate to the top level (and cause window.onerror) + } + } + + report.subscribe = subscribe; + report.unsubscribe = unsubscribe; + report.uninstall = unsubscribeAll; + return report; +})(); + +/** + * TraceKit.computeStackTrace: cross-browser stack traces in JavaScript + * + * Syntax: + * s = TraceKit.computeStackTrace(exception) // consider using TraceKit.report instead (see below) + * Returns: + * s.name - exception name + * s.message - exception message + * s.stack[i].url - JavaScript or HTML file URL + * s.stack[i].func - function name, or empty for anonymous functions (if guessing did not work) + * s.stack[i].args - arguments passed to the function, if known + * s.stack[i].line - line number, if known + * s.stack[i].column - column number, if known + * + * Supports: + * - Firefox: full stack trace with line numbers and unreliable column + * number on top frame + * - Opera 10: full stack trace with line and column numbers + * - Opera 9-: full stack trace with line numbers + * - Chrome: full stack trace with line and column numbers + * - Safari: line and column number for the topmost stacktrace element + * only + * - IE: no line numbers whatsoever + * + * Tries to guess names of anonymous functions by looking for assignments + * in the source code. In IE and Safari, we have to guess source file names + * by searching for function bodies inside all page scripts. This will not + * work for scripts that are loaded cross-domain. + * Here be dragons: some function names may be guessed incorrectly, and + * duplicate functions may be mismatched. + * + * TraceKit.computeStackTrace should only be used for tracing purposes. + * Logging of unhandled exceptions should be done with TraceKit.report, + * which builds on top of TraceKit.computeStackTrace and provides better + * IE support by utilizing the window.onerror event to retrieve information + * about the top of the stack. + * + * Note: In IE and Safari, no stack trace is recorded on the Error object, + * so computeStackTrace instead walks its *own* chain of callers. + * This means that: + * * in Safari, some methods may be missing from the stack trace; + * * in IE, the topmost function in the stack trace will always be the + * caller of computeStackTrace. + * + * This is okay for tracing (because you are likely to be calling + * computeStackTrace from the function you want to be the topmost element + * of the stack trace anyway), but not okay for logging unhandled + * exceptions (because your catch block will likely be far away from the + * inner function that actually caused the exception). + * + */ +TraceKit.computeStackTrace = (function computeStackTraceWrapper() { + // Contents of Exception in various browsers. + // + // SAFARI: + // ex.message = Can't find variable: qq + // ex.line = 59 + // ex.sourceId = 580238192 + // ex.sourceURL = http://... + // ex.expressionBeginOffset = 96 + // ex.expressionCaretOffset = 98 + // ex.expressionEndOffset = 98 + // ex.name = ReferenceError + // + // FIREFOX: + // ex.message = qq is not defined + // ex.fileName = http://... + // ex.lineNumber = 59 + // ex.columnNumber = 69 + // ex.stack = ...stack trace... (see the example below) + // ex.name = ReferenceError + // + // CHROME: + // ex.message = qq is not defined + // ex.name = ReferenceError + // ex.type = not_defined + // ex.arguments = ['aa'] + // ex.stack = ...stack trace... + // + // INTERNET EXPLORER: + // ex.message = ... + // ex.name = ReferenceError + // + // OPERA: + // ex.message = ...message... (see the example below) + // ex.name = ReferenceError + // ex.opera#sourceloc = 11 (pretty much useless, duplicates the info in ex.message) + // ex.stacktrace = n/a; see 'opera:config#UserPrefs|Exceptions Have Stacktrace' + + /** + * Computes stack trace information from the stack property. + * Chrome and Gecko use this property. + * @param {Error} ex + * @return {?Object.} Stack trace information. + */ + function computeStackTraceFromStackProp(ex) { + if (typeof ex.stack === 'undefined' || !ex.stack) return; + + var chrome = /^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i; + var winjs = /^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i; + // NOTE: blob urls are now supposed to always have an origin, therefore it's format + // which is `blob:http://url/path/with-some-uuid`, is matched by `blob.*?:\/` as well + var gecko = /^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i; + // Used to additionally parse URL/line/column from eval frames + var geckoEval = /(\S+) line (\d+)(?: > eval line \d+)* > eval/i; + var chromeEval = /\((\S*)(?::(\d+))(?::(\d+))\)/; + var lines = ex.stack.split('\n'); + var stack = []; + var submatch; + var parts; + var element; + var reference = /^(.*) is undefined$/.exec(ex.message); + + for (var i = 0, j = lines.length; i < j; ++i) { + if ((parts = chrome.exec(lines[i]))) { + var isNative = parts[2] && parts[2].indexOf('native') === 0; // start of line + var isEval = parts[2] && parts[2].indexOf('eval') === 0; // start of line + if (isEval && (submatch = chromeEval.exec(parts[2]))) { + // throw out eval line/column and use top-most line/column number + parts[2] = submatch[1]; // url + parts[3] = submatch[2]; // line + parts[4] = submatch[3]; // column + } + element = { + url: !isNative ? parts[2] : null, + func: parts[1] || UNKNOWN_FUNCTION, + args: isNative ? [parts[2]] : [], + line: parts[3] ? +parts[3] : null, + column: parts[4] ? +parts[4] : null + }; + } else if ((parts = winjs.exec(lines[i]))) { + element = { + url: parts[2], + func: parts[1] || UNKNOWN_FUNCTION, + args: [], + line: +parts[3], + column: parts[4] ? +parts[4] : null + }; + } else if ((parts = gecko.exec(lines[i]))) { + var isEval = parts[3] && parts[3].indexOf(' > eval') > -1; + if (isEval && (submatch = geckoEval.exec(parts[3]))) { + // throw out eval line/column and use top-most line number + parts[3] = submatch[1]; + parts[4] = submatch[2]; + parts[5] = null; // no column when eval + } else if (i === 0 && !parts[5] && typeof ex.columnNumber !== 'undefined') { + // FireFox uses this awesome columnNumber property for its top frame + // Also note, Firefox's column number is 0-based and everything else expects 1-based, + // so adding 1 + // NOTE: this hack doesn't work if top-most frame is eval + stack[0].column = ex.columnNumber + 1; + } + element = { + url: parts[3], + func: parts[1] || UNKNOWN_FUNCTION, + args: parts[2] ? parts[2].split(',') : [], + line: parts[4] ? +parts[4] : null, + column: parts[5] ? +parts[5] : null + }; + } else { + continue; + } + + if (!element.func && element.line) { + element.func = UNKNOWN_FUNCTION; + } + + if (element.url && element.url.substr(0, 5) === 'blob:') { + // Special case for handling JavaScript loaded into a blob. + // We use a synchronous AJAX request here as a blob is already in + // memory - it's not making a network request. This will generate a warning + // in the browser console, but there has already been an error so that's not + // that much of an issue. + var xhr = new XMLHttpRequest(); + xhr.open('GET', element.url, false); + xhr.send(null); + + // If we failed to download the source, skip this patch + if (xhr.status === 200) { + var source = xhr.responseText || ''; + + // We trim the source down to the last 300 characters as sourceMappingURL is always at the end of the file. + // Why 300? To be in line with: https://github.com/getsentry/sentry/blob/4af29e8f2350e20c28a6933354e4f42437b4ba42/src/sentry/lang/javascript/processor.py#L164-L175 + source = source.slice(-300); + + // Now we dig out the source map URL + var sourceMaps = source.match(/\/\/# sourceMappingURL=(.*)$/); + + // If we don't find a source map comment or we find more than one, continue on to the next element. + if (sourceMaps) { + var sourceMapAddress = sourceMaps[1]; + + // Now we check to see if it's a relative URL. + // If it is, convert it to an absolute one. + if (sourceMapAddress.charAt(0) === '~') { + sourceMapAddress = getLocationOrigin() + sourceMapAddress.slice(1); + } + + // Now we strip the '.map' off of the end of the URL and update the + // element so that Sentry can match the map to the blob. + element.url = sourceMapAddress.slice(0, -4); + } + } + } + + stack.push(element); + } + + if (!stack.length) { + return null; + } + + return { + name: ex.name, + message: ex.message, + url: getLocationHref(), + stack: stack + }; + } + + /** + * Adds information about the first frame to incomplete stack traces. + * Safari and IE require this to get complete data on the first frame. + * @param {Object.} stackInfo Stack trace information from + * one of the compute* methods. + * @param {string} url The URL of the script that caused an error. + * @param {(number|string)} lineNo The line number of the script that + * caused an error. + * @param {string=} message The error generated by the browser, which + * hopefully contains the name of the object that caused the error. + * @return {boolean} Whether or not the stack information was + * augmented. + */ + function augmentStackTraceWithInitialElement(stackInfo, url, lineNo, message) { + var initial = { + url: url, + line: lineNo + }; + + if (initial.url && initial.line) { + stackInfo.incomplete = false; + + if (!initial.func) { + initial.func = UNKNOWN_FUNCTION; + } + + if (stackInfo.stack.length > 0) { + if (stackInfo.stack[0].url === initial.url) { + if (stackInfo.stack[0].line === initial.line) { + return false; // already in stack trace + } else if ( + !stackInfo.stack[0].line && + stackInfo.stack[0].func === initial.func + ) { + stackInfo.stack[0].line = initial.line; + return false; + } + } + } + + stackInfo.stack.unshift(initial); + stackInfo.partial = true; + return true; + } else { + stackInfo.incomplete = true; + } + + return false; + } + + /** + * Computes stack trace information by walking the arguments.caller + * chain at the time the exception occurred. This will cause earlier + * frames to be missed but is the only way to get any stack trace in + * Safari and IE. The top frame is restored by + * {@link augmentStackTraceWithInitialElement}. + * @param {Error} ex + * @return {?Object.} Stack trace information. + */ + function computeStackTraceByWalkingCallerChain(ex, depth) { + var functionName = /function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i, + stack = [], + funcs = {}, + recursion = false, + parts, + item, + source; + + for ( + var curr = computeStackTraceByWalkingCallerChain.caller; + curr && !recursion; + curr = curr.caller + ) { + if (curr === computeStackTrace || curr === TraceKit.report) { + // console.log('skipping internal function'); + continue; + } + + item = { + url: null, + func: UNKNOWN_FUNCTION, + line: null, + column: null + }; + + if (curr.name) { + item.func = curr.name; + } else if ((parts = functionName.exec(curr.toString()))) { + item.func = parts[1]; + } + + if (typeof item.func === 'undefined') { + try { + item.func = parts.input.substring(0, parts.input.indexOf('{')); + } catch (e) {} + } + + if (funcs['' + curr]) { + recursion = true; + } else { + funcs['' + curr] = true; + } + + stack.push(item); + } + + if (depth) { + // console.log('depth is ' + depth); + // console.log('stack is ' + stack.length); + stack.splice(0, depth); + } + + var result = { + name: ex.name, + message: ex.message, + url: getLocationHref(), + stack: stack + }; + augmentStackTraceWithInitialElement( + result, + ex.sourceURL || ex.fileName, + ex.line || ex.lineNumber, + ex.message || ex.description + ); + return result; + } + + /** + * Computes a stack trace for an exception. + * @param {Error} ex + * @param {(string|number)=} depth + */ + function computeStackTrace(ex, depth) { + var stack = null; + depth = depth == null ? 0 : +depth; + + try { + stack = computeStackTraceFromStackProp(ex); + if (stack) { + return stack; + } + } catch (e) { + if (TraceKit.debug) { + throw e; + } + } + + try { + stack = computeStackTraceByWalkingCallerChain(ex, depth + 1); + if (stack) { + return stack; + } + } catch (e) { + if (TraceKit.debug) { + throw e; + } + } + return { + name: ex.name, + message: ex.message, + url: getLocationHref() + }; + } + + computeStackTrace.augmentStackTraceWithInitialElement = augmentStackTraceWithInitialElement; + computeStackTrace.computeStackTraceFromStackProp = computeStackTraceFromStackProp; + + return computeStackTrace; +})(); + +module.exports = TraceKit; + +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"6":6}],8:[function(_dereq_,module,exports){ +/* + json-stringify-safe + Like JSON.stringify, but doesn't throw on circular references. + + Originally forked from https://github.com/isaacs/json-stringify-safe + version 5.0.1 on 3/8/2017 and modified to handle Errors serialization + and IE8 compatibility. Tests for this are in test/vendor. + + ISC license: https://github.com/isaacs/json-stringify-safe/blob/master/LICENSE +*/ + +exports = module.exports = stringify; +exports.getSerialize = serializer; + +function indexOf(haystack, needle) { + for (var i = 0; i < haystack.length; ++i) { + if (haystack[i] === needle) return i; + } + return -1; +} + +function stringify(obj, replacer, spaces, cycleReplacer) { + return JSON.stringify(obj, serializer(replacer, cycleReplacer), spaces); +} + +// https://github.com/ftlabs/js-abbreviate/blob/fa709e5f139e7770a71827b1893f22418097fbda/index.js#L95-L106 +function stringifyError(value) { + var err = { + // These properties are implemented as magical getters and don't show up in for in + stack: value.stack, + message: value.message, + name: value.name + }; + + for (var i in value) { + if (Object.prototype.hasOwnProperty.call(value, i)) { + err[i] = value[i]; + } + } + + return err; +} + +function serializer(replacer, cycleReplacer) { + var stack = []; + var keys = []; + + if (cycleReplacer == null) { + cycleReplacer = function(key, value) { + if (stack[0] === value) { + return '[Circular ~]'; + } + return '[Circular ~.' + keys.slice(0, indexOf(stack, value)).join('.') + ']'; + }; + } + + return function(key, value) { + if (stack.length > 0) { + var thisPos = indexOf(stack, this); + ~thisPos ? stack.splice(thisPos + 1) : stack.push(this); + ~thisPos ? keys.splice(thisPos, Infinity, key) : keys.push(key); + + if (~indexOf(stack, value)) { + value = cycleReplacer.call(this, key, value); + } + } else { + stack.push(value); + } + + return replacer == null + ? value instanceof Error ? stringifyError(value) : value + : replacer.call(this, key, value); + }; +} + +},{}],9:[function(_dereq_,module,exports){ +/* + * JavaScript MD5 + * https://github.com/blueimp/JavaScript-MD5 + * + * Copyright 2011, Sebastian Tschan + * https://blueimp.net + * + * Licensed under the MIT license: + * https://opensource.org/licenses/MIT + * + * Based on + * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message + * Digest Algorithm, as defined in RFC 1321. + * Version 2.2 Copyright (C) Paul Johnston 1999 - 2009 + * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet + * Distributed under the BSD License + * See http://pajhome.org.uk/crypt/md5 for more info. + */ + +/* +* Add integers, wrapping at 2^32. This uses 16-bit operations internally +* to work around bugs in some JS interpreters. +*/ +function safeAdd(x, y) { + var lsw = (x & 0xffff) + (y & 0xffff); + var msw = (x >> 16) + (y >> 16) + (lsw >> 16); + return (msw << 16) | (lsw & 0xffff); +} + +/* +* Bitwise rotate a 32-bit number to the left. +*/ +function bitRotateLeft(num, cnt) { + return (num << cnt) | (num >>> (32 - cnt)); +} + +/* +* These functions implement the four basic operations the algorithm uses. +*/ +function md5cmn(q, a, b, x, s, t) { + return safeAdd(bitRotateLeft(safeAdd(safeAdd(a, q), safeAdd(x, t)), s), b); +} +function md5ff(a, b, c, d, x, s, t) { + return md5cmn((b & c) | (~b & d), a, b, x, s, t); +} +function md5gg(a, b, c, d, x, s, t) { + return md5cmn((b & d) | (c & ~d), a, b, x, s, t); +} +function md5hh(a, b, c, d, x, s, t) { + return md5cmn(b ^ c ^ d, a, b, x, s, t); +} +function md5ii(a, b, c, d, x, s, t) { + return md5cmn(c ^ (b | ~d), a, b, x, s, t); +} + +/* +* Calculate the MD5 of an array of little-endian words, and a bit length. +*/ +function binlMD5(x, len) { + /* append padding */ + x[len >> 5] |= 0x80 << (len % 32); + x[(((len + 64) >>> 9) << 4) + 14] = len; + + var i; + var olda; + var oldb; + var oldc; + var oldd; + var a = 1732584193; + var b = -271733879; + var c = -1732584194; + var d = 271733878; + + for (i = 0; i < x.length; i += 16) { + olda = a; + oldb = b; + oldc = c; + oldd = d; + + a = md5ff(a, b, c, d, x[i], 7, -680876936); + d = md5ff(d, a, b, c, x[i + 1], 12, -389564586); + c = md5ff(c, d, a, b, x[i + 2], 17, 606105819); + b = md5ff(b, c, d, a, x[i + 3], 22, -1044525330); + a = md5ff(a, b, c, d, x[i + 4], 7, -176418897); + d = md5ff(d, a, b, c, x[i + 5], 12, 1200080426); + c = md5ff(c, d, a, b, x[i + 6], 17, -1473231341); + b = md5ff(b, c, d, a, x[i + 7], 22, -45705983); + a = md5ff(a, b, c, d, x[i + 8], 7, 1770035416); + d = md5ff(d, a, b, c, x[i + 9], 12, -1958414417); + c = md5ff(c, d, a, b, x[i + 10], 17, -42063); + b = md5ff(b, c, d, a, x[i + 11], 22, -1990404162); + a = md5ff(a, b, c, d, x[i + 12], 7, 1804603682); + d = md5ff(d, a, b, c, x[i + 13], 12, -40341101); + c = md5ff(c, d, a, b, x[i + 14], 17, -1502002290); + b = md5ff(b, c, d, a, x[i + 15], 22, 1236535329); + + a = md5gg(a, b, c, d, x[i + 1], 5, -165796510); + d = md5gg(d, a, b, c, x[i + 6], 9, -1069501632); + c = md5gg(c, d, a, b, x[i + 11], 14, 643717713); + b = md5gg(b, c, d, a, x[i], 20, -373897302); + a = md5gg(a, b, c, d, x[i + 5], 5, -701558691); + d = md5gg(d, a, b, c, x[i + 10], 9, 38016083); + c = md5gg(c, d, a, b, x[i + 15], 14, -660478335); + b = md5gg(b, c, d, a, x[i + 4], 20, -405537848); + a = md5gg(a, b, c, d, x[i + 9], 5, 568446438); + d = md5gg(d, a, b, c, x[i + 14], 9, -1019803690); + c = md5gg(c, d, a, b, x[i + 3], 14, -187363961); + b = md5gg(b, c, d, a, x[i + 8], 20, 1163531501); + a = md5gg(a, b, c, d, x[i + 13], 5, -1444681467); + d = md5gg(d, a, b, c, x[i + 2], 9, -51403784); + c = md5gg(c, d, a, b, x[i + 7], 14, 1735328473); + b = md5gg(b, c, d, a, x[i + 12], 20, -1926607734); + + a = md5hh(a, b, c, d, x[i + 5], 4, -378558); + d = md5hh(d, a, b, c, x[i + 8], 11, -2022574463); + c = md5hh(c, d, a, b, x[i + 11], 16, 1839030562); + b = md5hh(b, c, d, a, x[i + 14], 23, -35309556); + a = md5hh(a, b, c, d, x[i + 1], 4, -1530992060); + d = md5hh(d, a, b, c, x[i + 4], 11, 1272893353); + c = md5hh(c, d, a, b, x[i + 7], 16, -155497632); + b = md5hh(b, c, d, a, x[i + 10], 23, -1094730640); + a = md5hh(a, b, c, d, x[i + 13], 4, 681279174); + d = md5hh(d, a, b, c, x[i], 11, -358537222); + c = md5hh(c, d, a, b, x[i + 3], 16, -722521979); + b = md5hh(b, c, d, a, x[i + 6], 23, 76029189); + a = md5hh(a, b, c, d, x[i + 9], 4, -640364487); + d = md5hh(d, a, b, c, x[i + 12], 11, -421815835); + c = md5hh(c, d, a, b, x[i + 15], 16, 530742520); + b = md5hh(b, c, d, a, x[i + 2], 23, -995338651); + + a = md5ii(a, b, c, d, x[i], 6, -198630844); + d = md5ii(d, a, b, c, x[i + 7], 10, 1126891415); + c = md5ii(c, d, a, b, x[i + 14], 15, -1416354905); + b = md5ii(b, c, d, a, x[i + 5], 21, -57434055); + a = md5ii(a, b, c, d, x[i + 12], 6, 1700485571); + d = md5ii(d, a, b, c, x[i + 3], 10, -1894986606); + c = md5ii(c, d, a, b, x[i + 10], 15, -1051523); + b = md5ii(b, c, d, a, x[i + 1], 21, -2054922799); + a = md5ii(a, b, c, d, x[i + 8], 6, 1873313359); + d = md5ii(d, a, b, c, x[i + 15], 10, -30611744); + c = md5ii(c, d, a, b, x[i + 6], 15, -1560198380); + b = md5ii(b, c, d, a, x[i + 13], 21, 1309151649); + a = md5ii(a, b, c, d, x[i + 4], 6, -145523070); + d = md5ii(d, a, b, c, x[i + 11], 10, -1120210379); + c = md5ii(c, d, a, b, x[i + 2], 15, 718787259); + b = md5ii(b, c, d, a, x[i + 9], 21, -343485551); + + a = safeAdd(a, olda); + b = safeAdd(b, oldb); + c = safeAdd(c, oldc); + d = safeAdd(d, oldd); + } + return [a, b, c, d]; +} + +/* +* Convert an array of little-endian words to a string +*/ +function binl2rstr(input) { + var i; + var output = ''; + var length32 = input.length * 32; + for (i = 0; i < length32; i += 8) { + output += String.fromCharCode((input[i >> 5] >>> (i % 32)) & 0xff); + } + return output; +} + +/* +* Convert a raw string to an array of little-endian words +* Characters >255 have their high-byte silently ignored. +*/ +function rstr2binl(input) { + var i; + var output = []; + output[(input.length >> 2) - 1] = undefined; + for (i = 0; i < output.length; i += 1) { + output[i] = 0; + } + var length8 = input.length * 8; + for (i = 0; i < length8; i += 8) { + output[i >> 5] |= (input.charCodeAt(i / 8) & 0xff) << (i % 32); + } + return output; +} + +/* +* Calculate the MD5 of a raw string +*/ +function rstrMD5(s) { + return binl2rstr(binlMD5(rstr2binl(s), s.length * 8)); +} + +/* +* Calculate the HMAC-MD5, of a key and some data (raw strings) +*/ +function rstrHMACMD5(key, data) { + var i; + var bkey = rstr2binl(key); + var ipad = []; + var opad = []; + var hash; + ipad[15] = opad[15] = undefined; + if (bkey.length > 16) { + bkey = binlMD5(bkey, key.length * 8); + } + for (i = 0; i < 16; i += 1) { + ipad[i] = bkey[i] ^ 0x36363636; + opad[i] = bkey[i] ^ 0x5c5c5c5c; + } + hash = binlMD5(ipad.concat(rstr2binl(data)), 512 + data.length * 8); + return binl2rstr(binlMD5(opad.concat(hash), 512 + 128)); +} + +/* +* Convert a raw string to a hex string +*/ +function rstr2hex(input) { + var hexTab = '0123456789abcdef'; + var output = ''; + var x; + var i; + for (i = 0; i < input.length; i += 1) { + x = input.charCodeAt(i); + output += hexTab.charAt((x >>> 4) & 0x0f) + hexTab.charAt(x & 0x0f); + } + return output; +} + +/* +* Encode a string as utf-8 +*/ +function str2rstrUTF8(input) { + return unescape(encodeURIComponent(input)); +} + +/* +* Take string arguments and return either raw or hex encoded strings +*/ +function rawMD5(s) { + return rstrMD5(str2rstrUTF8(s)); +} +function hexMD5(s) { + return rstr2hex(rawMD5(s)); +} +function rawHMACMD5(k, d) { + return rstrHMACMD5(str2rstrUTF8(k), str2rstrUTF8(d)); +} +function hexHMACMD5(k, d) { + return rstr2hex(rawHMACMD5(k, d)); +} + +function md5(string, key, raw) { + if (!key) { + if (!raw) { + return hexMD5(string); + } + return rawMD5(string); + } + if (!raw) { + return hexHMACMD5(key, string); + } + return rawHMACMD5(key, string); +} + +module.exports = md5; + +},{}]},{},[5,1])(5) +}); \ No newline at end of file diff --git a/packages/raven-js/dist/ember/raven.min.js b/packages/raven-js/dist/ember/raven.min.js new file mode 100644 index 000000000000..f42b7f52cdcb --- /dev/null +++ b/packages/raven-js/dist/ember/raven.min.js @@ -0,0 +1,4 @@ +/*! Raven.js 3.25.2 (30b6d4e) | github.com/getsentry/raven-js */ +!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.Raven=a()}}(function(){return function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};b[g][0].call(k.exports,function(a){var c=b[g][1][a];return e(c?c:a)},k,k.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;gthis.k.maxBreadcrumbs&&this.u.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.r.push([a,b]),this.n&&this.F(),this},setUserContext:function(a){return this.j.user=a,this},setExtraContext:function(a){return this.Z("extra",a),this},setTagsContext:function(a){return this.Z("tags",a),this},clearContext:function(){return this.j={},this},getContext:function(){return JSON.parse(h(this.j))},setEnvironment:function(a){return this.k.environment=a,this},setRelease:function(a){return this.k.release=a,this},setDataCallback:function(a){var b=this.k.dataCallback;return this.k.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.k.breadcrumbCallback;return this.k.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.k.shouldSendCallback;return this.k.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.k.transport=a,this},lastException:function(){return this.d},lastEventId:function(){return this.f},isSetup:function(){return!!this.a&&(!!this.g||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.z("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=R.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(S){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.H;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.j.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.J(this.G(c)),h=S.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(S.head||S.body).appendChild(h)}},L:function(){var a=this;this.m+=1,setTimeout(function(){a.m-=1})},$:function(a,b){var c,d;if(this.b){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),S.createEvent?(c=S.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=S.createEventObject(),c.eventType=a);for(d in b)A(b,d)&&(c[d]=b[d]);if(S.createEvent)S.dispatchEvent(c);else try{S.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},_:function(a){var b=this;return function(c){if(b.aa=null,b.v!==c){b.v=c;var d;try{d=E(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ba:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.aa;g||a._("input")(c),clearTimeout(g),a.aa=setTimeout(function(){a.aa=null},b)}}},ca:function(a,b){var c=H(this.w.href),d=H(b),e=H(a);this.x=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},C:function(){var a=this;a.da=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.M?a.da.apply(this.O,arguments):a.da.apply(this,arguments)}},Q:function(){this.da&&(Function.prototype.toString=this.da)},D:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.ca(b.x,c+""),a.apply(this,arguments)}};I(R.history,"pushState",j,d),I(R.history,"replaceState",j,d)}if(c.console&&"console"in R&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};w(["debug","info","warn","error","log"],function(a,b){O(console,b,k)})}},R:function(){for(var a;this.t.length;){a=this.t.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},S:function(){for(var a in this.q)this.p[a]=this.q[a]},F:function(){var a=this;w(this.r,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},G:function(a){var b=Q.exec(a),c={},d=7;try{for(;d--;)c[P[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.k.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},J:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},A:function(){this.m||this.V.apply(this,arguments)},V:function(a,b){var c=this.X(a,b);this.$("handle",{stackInfo:a,options:b}),this.fa(a.name,a.message,a.url,a.lineno,c,b)},X:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(w(a.stack,function(b,e){var f=c.ga(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.u,0)}),this.j.user&&(a.user=this.j.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),a=this.pa(a),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||v(a[b]))&&delete a[b]}),s(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!v(a)&&(!s(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.ma()?void this.z("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function F(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&l(b))for(c=b.split(/\s+/),f=0;fc?Q(a,b-1):d}function R(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?X:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function S(a,b){function c(a){return m(a)?a.map(function(a){return c(a)}):k(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!m(b)||m(b)&&0===b.length)return a;var d,e=A(b),f="********";try{d=JSON.parse(T(a))}catch(g){return a}return c(d)}var T=a(8),U="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},V=3,W=51200,X=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isDOMError:g,isDOMException:h,isUndefined:i,isFunction:j,isPlainObject:k,isString:l,isArray:m,isEmptyObject:n,supportsErrorEvent:o,supportsDOMError:p,supportsDOMException:q,supportsFetch:r,supportsReferrerPolicy:s,supportsPromiseRejectionEvent:t,wrappedCallback:u,each:v,objectMerge:w,truncate:y,objectFrozen:x,hasKey:z,joinRegExp:A,urlencode:B,uuid4:D,htmlTreeAsString:E,htmlElementAsString:F,isSameException:I,isSameStacktrace:J,parseUrl:C,fill:K,safeJoin:L,serializeException:Q,serializeKeysForMessage:R,sanitize:S}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{8:8}],7:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}function e(){return"undefined"==typeof document||null==document.location?"":(document.location.origin||(document.location.origin=document.location.protocol+"//"+document.location.hostname+(document.location.port?":"+document.location.port:"")),document.location.origin)}var f=a(6),g={collectWindowErrors:!0,debug:!1},h="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},i=[].slice,j="?",k=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;g.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function e(a,b){var c=null;if(!b||g.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(i.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,h,i){var l=null,m=f.isErrorEvent(i)?i.error:i,n=f.isErrorEvent(a)?a.message:a;if(v)g.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&f.isError(m))l=g.computeStackTrace(m),e(l,!0);else{var p,r={url:b,line:c,column:h},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(k);p&&(s=p[1],n=p[2])}r.func=j,l={name:s,message:n,url:d(),stack:[r]},e(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=h.onerror,h.onerror=l,r=!0)}function n(){r&&(h.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,e.apply(null,[a,!1].concat(b))}function p(a,b){var c=i.call(arguments,1);if(v){if(u===a)return;o()}var d=g.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),g.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,f,g=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,h=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,i=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,k=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,l=/\((\S*)(?::(\d+))(?::(\d+))\)/,m=a.stack.split("\n"),n=[],o=(/^(.*) is undefined$/.exec(a.message),0),p=m.length;o eval")>-1;r&&(b=k.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==o||c[5]||"undefined"==typeof a.columnNumber||(n[0].column=a.columnNumber+1),f={url:c[3],func:c[1]||j,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}if(!f.func&&f.line&&(f.func=j),f.url&&"blob:"===f.url.substr(0,5)){var s=new XMLHttpRequest;if(s.open("GET",f.url,!1),s.send(null),200===s.status){var t=s.responseText||"";t=t.slice(-300);var u=t.match(/\/\/# sourceMappingURL=(.*)$/);if(u){var v=u[1];"~"===v.charAt(0)&&(v=e()+v.slice(1)),f.url=v.slice(0,-4)}}}n.push(f)}return n.length?{name:a.name,message:a.message,url:d(),stack:n}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=j),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,e){for(var h,i,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==f&&o!==g.report){if(i={url:null,func:j,line:null,column:null},o.name?i.func=o.name:(h=k.exec(o.toString()))&&(i.func=h[1]),"undefined"==typeof i.func)try{i.func=h.input.substring(0,h.input.indexOf("{"))}catch(p){}m[""+o]?n=!0:m[""+o]=!0,l.push(i)}e&&l.splice(0,e);var q={name:a.name,message:a.message,url:d(),stack:l +};return b(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),q}function f(b,e){var f=null;e=null==e?0:+e;try{if(f=a(b))return f}catch(h){if(g.debug)throw h}try{if(f=c(b,e+1))return f}catch(h){if(g.debug)throw h}return{name:b.name,message:b.message,url:d()}}return f.augmentStackTraceWithInitialElement=b,f.computeStackTraceFromStackProp=a,f}(),b.exports=g}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{6:6}],8:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}],9:[function(a,b,c){function d(a,b){var c=(65535&a)+(65535&b),d=(a>>16)+(b>>16)+(c>>16);return d<<16|65535&c}function e(a,b){return a<>>32-b}function f(a,b,c,f,g,h){return d(e(d(d(b,a),d(f,h)),g),c)}function g(a,b,c,d,e,g,h){return f(b&c|~b&d,a,b,e,g,h)}function h(a,b,c,d,e,g,h){return f(b&d|c&~d,a,b,e,g,h)}function i(a,b,c,d,e,g,h){return f(b^c^d,a,b,e,g,h)}function j(a,b,c,d,e,g,h){return f(c^(b|~d),a,b,e,g,h)}function k(a,b){a[b>>5]|=128<>>9<<4)+14]=b;var c,e,f,k,l,m=1732584193,n=-271733879,o=-1732584194,p=271733878;for(c=0;c>5]>>>b%32&255);return c}function m(a){var b,c=[];for(c[(a.length>>2)-1]=void 0,b=0;b>5]|=(255&a.charCodeAt(b/8))<16&&(e=k(e,8*a.length)),c=0;c<16;c+=1)f[c]=909522486^e[c],g[c]=1549556828^e[c];return d=k(f.concat(m(b)),512+8*b.length),l(k(g.concat(d),640))}function p(a){var b,c,d="0123456789abcdef",e="";for(c=0;c>>4&15)+d.charAt(15&b);return e}function q(a){return unescape(encodeURIComponent(a))}function r(a){return n(q(a))}function s(a){return p(r(a))}function t(a,b){return o(q(a),q(b))}function u(a,b){return p(t(a,b))}function v(a,b,c){return b?c?t(b,a):u(b,a):c?r(a):s(a)}b.exports=v},{}]},{},[5,1])(5)}); +//# sourceMappingURL=raven.min.js.map \ No newline at end of file diff --git a/packages/raven-js/dist/ember/raven.min.js.map b/packages/raven-js/dist/ember/raven.min.js.map new file mode 100644 index 000000000000..71a63ead9821 --- /dev/null +++ b/packages/raven-js/dist/ember/raven.min.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","emberPlugin","Ember","_oldOnError","onerror","error","captureException","RSVP","on","reason","extra","context","captureMessage","addPlugin","5","2","RavenConfigError","message","name","prototype","constructor","3","utils","wrapMethod","console","level","callback","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","msg","safeJoin","data","logger","Function","apply","6","4","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","sanitizeKeys","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isErrorEvent","isDOMError","isDOMException","isError","isObject","isPlainObject","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","sanitize","wrapConsoleMethod","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","config","dsn","options","_logDebug","globalOptions","key","value","setDSN","push","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","toString","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","substr","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","func","undefined","wrap","_before","wrapped","deep","_ignoreNextOnError","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","T","event","unhandledPromiseRejection","B","_promiseRejectionHandler","bind","addEventListener","P","removeEventListener","ex","trimHeadFrames","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","U","currentOptions","exKeys","Object","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","setDataCallback","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","L","setTimeout","$","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","_","evtName","_keypressTimeout","target","category","ba","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","ca","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","C","_originalFunctionToString","Q","D","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","type","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","E","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","R","builtin","S","F","installer","concat","G","str","m","exec","allowSecretKey","J","port","A","V","stackInfo","_triggerEvent","_processException","lineno","X","frame","_normalizeFrame","in_app","ga","stackInfoUrl","normalized","filename","line","colno","column","function","fa","prefixedMessage","exception","values","transaction","ha","request","Referer","breadcrumbs","_trimBreadcrumbs","ia","urlProp","urlProps","ja","httpData","userAgent","User-Agent","referrer","y","_backoffDuration","_backoffStart","ma","na","current","last","oa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Y","baseData","project","platform","_getHttpData","serverName","server_name","_sanitizeData","forEach","random","_sendProcessedPayload","pa","ra","qa","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","sa","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","open","setRequestHeader","send","ta","hash","evaluated","z","Z","setUser","setReleaseContext","7","8","9","RavenConstructor","_Raven","noConflict","Client","what","supportsErrorEvent","ErrorEvent","supportsDOMError","DOMError","supportsDOMException","DOMException","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","wrappedCallback","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","sanitizeMask","safeInput","o_O","getLocationHref","getLocationOrigin","origin","hostname","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","responseText","sourceMaps","sourceMapAddress","charAt","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","string","raw"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file diff --git a/packages/raven-js/dist/plugins/angular.js b/packages/raven-js/dist/plugins/angular.js new file mode 100644 index 000000000000..fcd726f2a6e1 --- /dev/null +++ b/packages/raven-js/dist/plugins/angular.js @@ -0,0 +1,815 @@ +/*! Raven.js 3.25.2 (30b6d4e) | github.com/getsentry/raven-js */ + +/* + * Includes TraceKit + * https://github.com/getsentry/TraceKit + * + * Copyright 2018 Matt Robenolt and other contributors + * Released under the BSD license + * https://github.com/getsentry/raven-js/blob/master/LICENSE + * + */ + +(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=(g.Raven||(g.Raven = {}));g=(g.Plugins||(g.Plugins = {}));g.Angular = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o href parsing trick because React Native and other +// environments where DOM might not be available +function parseUrl(url) { + if (typeof url !== 'string') return {}; + var match = url.match(/^(([^:\/?#]+):)?(\/\/([^\/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?$/); + + // coerce to undefined values to empty string so we don't get 'undefined' + var query = match[6] || ''; + var fragment = match[8] || ''; + return { + protocol: match[2], + host: match[4], + path: match[5], + relative: match[5] + query + fragment // everything minus origin + }; +} +function uuid4() { + var crypto = _window.crypto || _window.msCrypto; + + if (!isUndefined(crypto) && crypto.getRandomValues) { + // Use window.crypto API if available + // eslint-disable-next-line no-undef + var arr = new Uint16Array(8); + crypto.getRandomValues(arr); + + // set 4 in byte 7 + arr[3] = (arr[3] & 0xfff) | 0x4000; + // set 2 most significant bits of byte 9 to '10' + arr[4] = (arr[4] & 0x3fff) | 0x8000; + + var pad = function(num) { + var v = num.toString(16); + while (v.length < 4) { + v = '0' + v; + } + return v; + }; + + return ( + pad(arr[0]) + + pad(arr[1]) + + pad(arr[2]) + + pad(arr[3]) + + pad(arr[4]) + + pad(arr[5]) + + pad(arr[6]) + + pad(arr[7]) + ); + } else { + // http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/2117523#2117523 + return 'xxxxxxxxxxxx4xxxyxxxxxxxxxxxxxxx'.replace(/[xy]/g, function(c) { + var r = (Math.random() * 16) | 0, + v = c === 'x' ? r : (r & 0x3) | 0x8; + return v.toString(16); + }); + } +} + +/** + * Given a child DOM element, returns a query-selector statement describing that + * and its ancestors + * e.g. [HTMLElement] => body > div > input#foo.btn[name=baz] + * @param elem + * @returns {string} + */ +function htmlTreeAsString(elem) { + /* eslint no-extra-parens:0*/ + var MAX_TRAVERSE_HEIGHT = 5, + MAX_OUTPUT_LEN = 80, + out = [], + height = 0, + len = 0, + separator = ' > ', + sepLength = separator.length, + nextStr; + + while (elem && height++ < MAX_TRAVERSE_HEIGHT) { + nextStr = htmlElementAsString(elem); + // bail out if + // - nextStr is the 'html' element + // - the length of the string that would be created exceeds MAX_OUTPUT_LEN + // (ignore this limit if we are on the first iteration) + if ( + nextStr === 'html' || + (height > 1 && len + out.length * sepLength + nextStr.length >= MAX_OUTPUT_LEN) + ) { + break; + } + + out.push(nextStr); + + len += nextStr.length; + elem = elem.parentNode; + } + + return out.reverse().join(separator); +} + +/** + * Returns a simple, query-selector representation of a DOM element + * e.g. [HTMLElement] => input#foo.btn[name=baz] + * @param HTMLElement + * @returns {string} + */ +function htmlElementAsString(elem) { + var out = [], + className, + classes, + key, + attr, + i; + + if (!elem || !elem.tagName) { + return ''; + } + + out.push(elem.tagName.toLowerCase()); + if (elem.id) { + out.push('#' + elem.id); + } + + className = elem.className; + if (className && isString(className)) { + classes = className.split(/\s+/); + for (i = 0; i < classes.length; i++) { + out.push('.' + classes[i]); + } + } + var attrWhitelist = ['type', 'name', 'title', 'alt']; + for (i = 0; i < attrWhitelist.length; i++) { + key = attrWhitelist[i]; + attr = elem.getAttribute(key); + if (attr) { + out.push('[' + key + '="' + attr + '"]'); + } + } + return out.join(''); +} + +/** + * Returns true if either a OR b is truthy, but not both + */ +function isOnlyOneTruthy(a, b) { + return !!(!!a ^ !!b); +} + +/** + * Returns true if both parameters are undefined + */ +function isBothUndefined(a, b) { + return isUndefined(a) && isUndefined(b); +} + +/** + * Returns true if the two input exception interfaces have the same content + */ +function isSameException(ex1, ex2) { + if (isOnlyOneTruthy(ex1, ex2)) return false; + + ex1 = ex1.values[0]; + ex2 = ex2.values[0]; + + if (ex1.type !== ex2.type || ex1.value !== ex2.value) return false; + + // in case both stacktraces are undefined, we can't decide so default to false + if (isBothUndefined(ex1.stacktrace, ex2.stacktrace)) return false; + + return isSameStacktrace(ex1.stacktrace, ex2.stacktrace); +} + +/** + * Returns true if the two input stack trace interfaces have the same content + */ +function isSameStacktrace(stack1, stack2) { + if (isOnlyOneTruthy(stack1, stack2)) return false; + + var frames1 = stack1.frames; + var frames2 = stack2.frames; + + // Exit early if frame count differs + if (frames1.length !== frames2.length) return false; + + // Iterate through every frame; bail out if anything differs + var a, b; + for (var i = 0; i < frames1.length; i++) { + a = frames1[i]; + b = frames2[i]; + if ( + a.filename !== b.filename || + a.lineno !== b.lineno || + a.colno !== b.colno || + a['function'] !== b['function'] + ) + return false; + } + return true; +} + +/** + * Polyfill a method + * @param obj object e.g. `document` + * @param name method name present on object e.g. `addEventListener` + * @param replacement replacement function + * @param track {optional} record instrumentation to an array + */ +function fill(obj, name, replacement, track) { + if (obj == null) return; + var orig = obj[name]; + obj[name] = replacement(orig); + obj[name].__raven__ = true; + obj[name].__orig__ = orig; + if (track) { + track.push([obj, name, orig]); + } +} + +/** + * Join values in array + * @param input array of values to be joined together + * @param delimiter string to be placed in-between values + * @returns {string} + */ +function safeJoin(input, delimiter) { + if (!isArray(input)) return ''; + + var output = []; + + for (var i = 0; i < input.length; i++) { + try { + output.push(String(input[i])); + } catch (e) { + output.push('[value cannot be serialized]'); + } + } + + return output.join(delimiter); +} + +// Default Node.js REPL depth +var MAX_SERIALIZE_EXCEPTION_DEPTH = 3; +// 50kB, as 100kB is max payload size, so half sounds reasonable +var MAX_SERIALIZE_EXCEPTION_SIZE = 50 * 1024; +var MAX_SERIALIZE_KEYS_LENGTH = 40; + +function utf8Length(value) { + return ~-encodeURI(value).split(/%..|./).length; +} + +function jsonSize(value) { + return utf8Length(JSON.stringify(value)); +} + +function serializeValue(value) { + if (typeof value === 'string') { + var maxLength = 40; + return truncate(value, maxLength); + } else if ( + typeof value === 'number' || + typeof value === 'boolean' || + typeof value === 'undefined' + ) { + return value; + } + + var type = Object.prototype.toString.call(value); + + // Node.js REPL notation + if (type === '[object Object]') return '[Object]'; + if (type === '[object Array]') return '[Array]'; + if (type === '[object Function]') + return value.name ? '[Function: ' + value.name + ']' : '[Function]'; + + return value; +} + +function serializeObject(value, depth) { + if (depth === 0) return serializeValue(value); + + if (isPlainObject(value)) { + return Object.keys(value).reduce(function(acc, key) { + acc[key] = serializeObject(value[key], depth - 1); + return acc; + }, {}); + } else if (Array.isArray(value)) { + return value.map(function(val) { + return serializeObject(val, depth - 1); + }); + } + + return serializeValue(value); +} + +function serializeException(ex, depth, maxSize) { + if (!isPlainObject(ex)) return ex; + + depth = typeof depth !== 'number' ? MAX_SERIALIZE_EXCEPTION_DEPTH : depth; + maxSize = typeof depth !== 'number' ? MAX_SERIALIZE_EXCEPTION_SIZE : maxSize; + + var serialized = serializeObject(ex, depth); + + if (jsonSize(stringify(serialized)) > maxSize) { + return serializeException(ex, depth - 1); + } + + return serialized; +} + +function serializeKeysForMessage(keys, maxLength) { + if (typeof keys === 'number' || typeof keys === 'string') return keys.toString(); + if (!Array.isArray(keys)) return ''; + + keys = keys.filter(function(key) { + return typeof key === 'string'; + }); + if (keys.length === 0) return '[object has no keys]'; + + maxLength = typeof maxLength !== 'number' ? MAX_SERIALIZE_KEYS_LENGTH : maxLength; + if (keys[0].length >= maxLength) return keys[0]; + + for (var usedKeys = keys.length; usedKeys > 0; usedKeys--) { + var serialized = keys.slice(0, usedKeys).join(', '); + if (serialized.length > maxLength) continue; + if (usedKeys === keys.length) return serialized; + return serialized + '\u2026'; + } + + return ''; +} + +function sanitize(input, sanitizeKeys) { + if (!isArray(sanitizeKeys) || (isArray(sanitizeKeys) && sanitizeKeys.length === 0)) + return input; + + var sanitizeRegExp = joinRegExp(sanitizeKeys); + var sanitizeMask = '********'; + var safeInput; + + try { + safeInput = JSON.parse(stringify(input)); + } catch (o_O) { + return input; + } + + function sanitizeWorker(workerInput) { + if (isArray(workerInput)) { + return workerInput.map(function(val) { + return sanitizeWorker(val); + }); + } + + if (isPlainObject(workerInput)) { + return Object.keys(workerInput).reduce(function(acc, k) { + if (sanitizeRegExp.test(k)) { + acc[k] = sanitizeMask; + } else { + acc[k] = sanitizeWorker(workerInput[k]); + } + return acc; + }, {}); + } + + return workerInput; + } + + return sanitizeWorker(safeInput); +} + +module.exports = { + isObject: isObject, + isError: isError, + isErrorEvent: isErrorEvent, + isDOMError: isDOMError, + isDOMException: isDOMException, + isUndefined: isUndefined, + isFunction: isFunction, + isPlainObject: isPlainObject, + isString: isString, + isArray: isArray, + isEmptyObject: isEmptyObject, + supportsErrorEvent: supportsErrorEvent, + supportsDOMError: supportsDOMError, + supportsDOMException: supportsDOMException, + supportsFetch: supportsFetch, + supportsReferrerPolicy: supportsReferrerPolicy, + supportsPromiseRejectionEvent: supportsPromiseRejectionEvent, + wrappedCallback: wrappedCallback, + each: each, + objectMerge: objectMerge, + truncate: truncate, + objectFrozen: objectFrozen, + hasKey: hasKey, + joinRegExp: joinRegExp, + urlencode: urlencode, + uuid4: uuid4, + htmlTreeAsString: htmlTreeAsString, + htmlElementAsString: htmlElementAsString, + isSameException: isSameException, + isSameStacktrace: isSameStacktrace, + parseUrl: parseUrl, + fill: fill, + safeJoin: safeJoin, + serializeException: serializeException, + serializeKeysForMessage: serializeKeysForMessage, + sanitize: sanitize +}; + +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"3":3}],3:[function(_dereq_,module,exports){ +/* + json-stringify-safe + Like JSON.stringify, but doesn't throw on circular references. + + Originally forked from https://github.com/isaacs/json-stringify-safe + version 5.0.1 on 3/8/2017 and modified to handle Errors serialization + and IE8 compatibility. Tests for this are in test/vendor. + + ISC license: https://github.com/isaacs/json-stringify-safe/blob/master/LICENSE +*/ + +exports = module.exports = stringify; +exports.getSerialize = serializer; + +function indexOf(haystack, needle) { + for (var i = 0; i < haystack.length; ++i) { + if (haystack[i] === needle) return i; + } + return -1; +} + +function stringify(obj, replacer, spaces, cycleReplacer) { + return JSON.stringify(obj, serializer(replacer, cycleReplacer), spaces); +} + +// https://github.com/ftlabs/js-abbreviate/blob/fa709e5f139e7770a71827b1893f22418097fbda/index.js#L95-L106 +function stringifyError(value) { + var err = { + // These properties are implemented as magical getters and don't show up in for in + stack: value.stack, + message: value.message, + name: value.name + }; + + for (var i in value) { + if (Object.prototype.hasOwnProperty.call(value, i)) { + err[i] = value[i]; + } + } + + return err; +} + +function serializer(replacer, cycleReplacer) { + var stack = []; + var keys = []; + + if (cycleReplacer == null) { + cycleReplacer = function(key, value) { + if (stack[0] === value) { + return '[Circular ~]'; + } + return '[Circular ~.' + keys.slice(0, indexOf(stack, value)).join('.') + ']'; + }; + } + + return function(key, value) { + if (stack.length > 0) { + var thisPos = indexOf(stack, this); + ~thisPos ? stack.splice(thisPos + 1) : stack.push(this); + ~thisPos ? keys.splice(thisPos, Infinity, key) : keys.push(key); + + if (~indexOf(stack, value)) { + value = cycleReplacer.call(this, key, value); + } + } else { + stack.push(value); + } + + return replacer == null + ? value instanceof Error ? stringifyError(value) : value + : replacer.call(this, key, value); + }; +} + +},{}]},{},[1])(1) +}); \ No newline at end of file diff --git a/packages/raven-js/dist/plugins/angular.min.js b/packages/raven-js/dist/plugins/angular.min.js new file mode 100644 index 000000000000..e3f0c7daf8c2 --- /dev/null +++ b/packages/raven-js/dist/plugins/angular.min.js @@ -0,0 +1,3 @@ +/*! Raven.js 3.25.2 (30b6d4e) | github.com/getsentry/raven-js */ +!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b=b.Raven||(b.Raven={}),b=b.Plugins||(b.Plugins={}),b.Angular=a()}}(function(){return function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};b[g][0].call(k.exports,function(a){var c=b[g][1][a];return e(c?c:a)},k,k.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;g ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function F(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&l(b))for(c=b.split(/\s+/),f=0;fc?Q(a,b-1):d}function R(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?X:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function S(a,b){function c(a){return m(a)?a.map(function(a){return c(a)}):k(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!m(b)||m(b)&&0===b.length)return a;var d,e=A(b),f="********";try{d=JSON.parse(T(a))}catch(g){return a}return c(d)}var T=a(3),U="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},V=3,W=51200,X=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isDOMError:g,isDOMException:h,isUndefined:i,isFunction:j,isPlainObject:k,isString:l,isArray:m,isEmptyObject:n,supportsErrorEvent:o,supportsDOMError:p,supportsDOMException:q,supportsFetch:r,supportsReferrerPolicy:s,supportsPromiseRejectionEvent:t,wrappedCallback:u,each:v,objectMerge:w,truncate:y,objectFrozen:x,hasKey:z,joinRegExp:A,urlencode:B,uuid4:D,htmlTreeAsString:E,htmlElementAsString:F,isSameException:I,isSameStacktrace:J,parseUrl:C,fill:K,safeJoin:L,serializeException:Q,serializeKeysForMessage:R,sanitize:S}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{3:3}],3:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}]},{},[1])(1)}); +//# sourceMappingURL=angular.min.js.map \ No newline at end of file diff --git a/packages/raven-js/dist/plugins/angular.min.js.map b/packages/raven-js/dist/plugins/angular.min.js.map new file mode 100644 index 000000000000..ecb3c731c4a9 --- /dev/null +++ b/packages/raven-js/dist/plugins/angular.min.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["angular.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","Plugins","Angular","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","angularPlugin","angular","RavenProvider","$get","$window","ExceptionHandlerProvider","$provide","decorator","exceptionHandler","R","$delegate","ex","cause","captureException","extra","moduleName","provider","config","setDataCallback","wrappedCallback","data","_normalizeData","angularPattern","exception","values","matches","exec","value","type","message","angularDocs","substr","2","isObject","what","isError","Object","prototype","toString","isErrorEvent","isDOMError","isDOMException","isUndefined","isFunction","isPlainObject","isString","isArray","isEmptyObject","_","hasOwnProperty","supportsErrorEvent","ErrorEvent","supportsDOMError","DOMError","supportsDOMException","DOMException","supportsFetch","_window","Headers","Request","Response","supportsReferrerPolicy","referrerPolicy","supportsPromiseRejectionEvent","PromiseRejectionEvent","callback","dataCallback","original","normalizedData","each","obj","j","hasKey","objectMerge","obj1","obj2","key","objectFrozen","isFrozen","truncate","str","max","object","joinRegExp","patterns","pattern","sources","len","push","replace","source","RegExp","join","urlencode","pairs","encodeURIComponent","parseUrl","url","match","query","fragment","protocol","host","path","relative","uuid4","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","Math","random","htmlTreeAsString","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","reverse","className","classes","attr","tagName","toLowerCase","id","split","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","isSameException","ex1","ex2","stacktrace","isSameStacktrace","stack1","stack2","frames1","frames","frames2","filename","lineno","colno","fill","name","replacement","track","orig","__raven__","__orig__","safeJoin","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","JSON","stringify","serializeValue","maxLength","serializeObject","depth","keys","reduce","acc","Array","map","val","serializeException","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","serializeKeysForMessage","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","slice","sanitize","sanitizeKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","test","sanitizeMask","safeInput","parse","o_O","3","indexOf","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","err","stack","thisPos","splice","Infinity","getSerialize"],"mappings":"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","file":"angular.min.js"} \ No newline at end of file diff --git a/packages/raven-js/dist/plugins/console.js b/packages/raven-js/dist/plugins/console.js new file mode 100644 index 000000000000..b12c1f0347b8 --- /dev/null +++ b/packages/raven-js/dist/plugins/console.js @@ -0,0 +1,817 @@ +/*! Raven.js 3.25.2 (30b6d4e) | github.com/getsentry/raven-js */ + +/* + * Includes TraceKit + * https://github.com/getsentry/TraceKit + * + * Copyright 2018 Matt Robenolt and other contributors + * Released under the BSD license + * https://github.com/getsentry/raven-js/blob/master/LICENSE + * + */ + +(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=(g.Raven||(g.Raven = {}));g=(g.Plugins||(g.Plugins = {}));g.Console = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o href parsing trick because React Native and other +// environments where DOM might not be available +function parseUrl(url) { + if (typeof url !== 'string') return {}; + var match = url.match(/^(([^:\/?#]+):)?(\/\/([^\/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?$/); + + // coerce to undefined values to empty string so we don't get 'undefined' + var query = match[6] || ''; + var fragment = match[8] || ''; + return { + protocol: match[2], + host: match[4], + path: match[5], + relative: match[5] + query + fragment // everything minus origin + }; +} +function uuid4() { + var crypto = _window.crypto || _window.msCrypto; + + if (!isUndefined(crypto) && crypto.getRandomValues) { + // Use window.crypto API if available + // eslint-disable-next-line no-undef + var arr = new Uint16Array(8); + crypto.getRandomValues(arr); + + // set 4 in byte 7 + arr[3] = (arr[3] & 0xfff) | 0x4000; + // set 2 most significant bits of byte 9 to '10' + arr[4] = (arr[4] & 0x3fff) | 0x8000; + + var pad = function(num) { + var v = num.toString(16); + while (v.length < 4) { + v = '0' + v; + } + return v; + }; + + return ( + pad(arr[0]) + + pad(arr[1]) + + pad(arr[2]) + + pad(arr[3]) + + pad(arr[4]) + + pad(arr[5]) + + pad(arr[6]) + + pad(arr[7]) + ); + } else { + // http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/2117523#2117523 + return 'xxxxxxxxxxxx4xxxyxxxxxxxxxxxxxxx'.replace(/[xy]/g, function(c) { + var r = (Math.random() * 16) | 0, + v = c === 'x' ? r : (r & 0x3) | 0x8; + return v.toString(16); + }); + } +} + +/** + * Given a child DOM element, returns a query-selector statement describing that + * and its ancestors + * e.g. [HTMLElement] => body > div > input#foo.btn[name=baz] + * @param elem + * @returns {string} + */ +function htmlTreeAsString(elem) { + /* eslint no-extra-parens:0*/ + var MAX_TRAVERSE_HEIGHT = 5, + MAX_OUTPUT_LEN = 80, + out = [], + height = 0, + len = 0, + separator = ' > ', + sepLength = separator.length, + nextStr; + + while (elem && height++ < MAX_TRAVERSE_HEIGHT) { + nextStr = htmlElementAsString(elem); + // bail out if + // - nextStr is the 'html' element + // - the length of the string that would be created exceeds MAX_OUTPUT_LEN + // (ignore this limit if we are on the first iteration) + if ( + nextStr === 'html' || + (height > 1 && len + out.length * sepLength + nextStr.length >= MAX_OUTPUT_LEN) + ) { + break; + } + + out.push(nextStr); + + len += nextStr.length; + elem = elem.parentNode; + } + + return out.reverse().join(separator); +} + +/** + * Returns a simple, query-selector representation of a DOM element + * e.g. [HTMLElement] => input#foo.btn[name=baz] + * @param HTMLElement + * @returns {string} + */ +function htmlElementAsString(elem) { + var out = [], + className, + classes, + key, + attr, + i; + + if (!elem || !elem.tagName) { + return ''; + } + + out.push(elem.tagName.toLowerCase()); + if (elem.id) { + out.push('#' + elem.id); + } + + className = elem.className; + if (className && isString(className)) { + classes = className.split(/\s+/); + for (i = 0; i < classes.length; i++) { + out.push('.' + classes[i]); + } + } + var attrWhitelist = ['type', 'name', 'title', 'alt']; + for (i = 0; i < attrWhitelist.length; i++) { + key = attrWhitelist[i]; + attr = elem.getAttribute(key); + if (attr) { + out.push('[' + key + '="' + attr + '"]'); + } + } + return out.join(''); +} + +/** + * Returns true if either a OR b is truthy, but not both + */ +function isOnlyOneTruthy(a, b) { + return !!(!!a ^ !!b); +} + +/** + * Returns true if both parameters are undefined + */ +function isBothUndefined(a, b) { + return isUndefined(a) && isUndefined(b); +} + +/** + * Returns true if the two input exception interfaces have the same content + */ +function isSameException(ex1, ex2) { + if (isOnlyOneTruthy(ex1, ex2)) return false; + + ex1 = ex1.values[0]; + ex2 = ex2.values[0]; + + if (ex1.type !== ex2.type || ex1.value !== ex2.value) return false; + + // in case both stacktraces are undefined, we can't decide so default to false + if (isBothUndefined(ex1.stacktrace, ex2.stacktrace)) return false; + + return isSameStacktrace(ex1.stacktrace, ex2.stacktrace); +} + +/** + * Returns true if the two input stack trace interfaces have the same content + */ +function isSameStacktrace(stack1, stack2) { + if (isOnlyOneTruthy(stack1, stack2)) return false; + + var frames1 = stack1.frames; + var frames2 = stack2.frames; + + // Exit early if frame count differs + if (frames1.length !== frames2.length) return false; + + // Iterate through every frame; bail out if anything differs + var a, b; + for (var i = 0; i < frames1.length; i++) { + a = frames1[i]; + b = frames2[i]; + if ( + a.filename !== b.filename || + a.lineno !== b.lineno || + a.colno !== b.colno || + a['function'] !== b['function'] + ) + return false; + } + return true; +} + +/** + * Polyfill a method + * @param obj object e.g. `document` + * @param name method name present on object e.g. `addEventListener` + * @param replacement replacement function + * @param track {optional} record instrumentation to an array + */ +function fill(obj, name, replacement, track) { + if (obj == null) return; + var orig = obj[name]; + obj[name] = replacement(orig); + obj[name].__raven__ = true; + obj[name].__orig__ = orig; + if (track) { + track.push([obj, name, orig]); + } +} + +/** + * Join values in array + * @param input array of values to be joined together + * @param delimiter string to be placed in-between values + * @returns {string} + */ +function safeJoin(input, delimiter) { + if (!isArray(input)) return ''; + + var output = []; + + for (var i = 0; i < input.length; i++) { + try { + output.push(String(input[i])); + } catch (e) { + output.push('[value cannot be serialized]'); + } + } + + return output.join(delimiter); +} + +// Default Node.js REPL depth +var MAX_SERIALIZE_EXCEPTION_DEPTH = 3; +// 50kB, as 100kB is max payload size, so half sounds reasonable +var MAX_SERIALIZE_EXCEPTION_SIZE = 50 * 1024; +var MAX_SERIALIZE_KEYS_LENGTH = 40; + +function utf8Length(value) { + return ~-encodeURI(value).split(/%..|./).length; +} + +function jsonSize(value) { + return utf8Length(JSON.stringify(value)); +} + +function serializeValue(value) { + if (typeof value === 'string') { + var maxLength = 40; + return truncate(value, maxLength); + } else if ( + typeof value === 'number' || + typeof value === 'boolean' || + typeof value === 'undefined' + ) { + return value; + } + + var type = Object.prototype.toString.call(value); + + // Node.js REPL notation + if (type === '[object Object]') return '[Object]'; + if (type === '[object Array]') return '[Array]'; + if (type === '[object Function]') + return value.name ? '[Function: ' + value.name + ']' : '[Function]'; + + return value; +} + +function serializeObject(value, depth) { + if (depth === 0) return serializeValue(value); + + if (isPlainObject(value)) { + return Object.keys(value).reduce(function(acc, key) { + acc[key] = serializeObject(value[key], depth - 1); + return acc; + }, {}); + } else if (Array.isArray(value)) { + return value.map(function(val) { + return serializeObject(val, depth - 1); + }); + } + + return serializeValue(value); +} + +function serializeException(ex, depth, maxSize) { + if (!isPlainObject(ex)) return ex; + + depth = typeof depth !== 'number' ? MAX_SERIALIZE_EXCEPTION_DEPTH : depth; + maxSize = typeof depth !== 'number' ? MAX_SERIALIZE_EXCEPTION_SIZE : maxSize; + + var serialized = serializeObject(ex, depth); + + if (jsonSize(stringify(serialized)) > maxSize) { + return serializeException(ex, depth - 1); + } + + return serialized; +} + +function serializeKeysForMessage(keys, maxLength) { + if (typeof keys === 'number' || typeof keys === 'string') return keys.toString(); + if (!Array.isArray(keys)) return ''; + + keys = keys.filter(function(key) { + return typeof key === 'string'; + }); + if (keys.length === 0) return '[object has no keys]'; + + maxLength = typeof maxLength !== 'number' ? MAX_SERIALIZE_KEYS_LENGTH : maxLength; + if (keys[0].length >= maxLength) return keys[0]; + + for (var usedKeys = keys.length; usedKeys > 0; usedKeys--) { + var serialized = keys.slice(0, usedKeys).join(', '); + if (serialized.length > maxLength) continue; + if (usedKeys === keys.length) return serialized; + return serialized + '\u2026'; + } + + return ''; +} + +function sanitize(input, sanitizeKeys) { + if (!isArray(sanitizeKeys) || (isArray(sanitizeKeys) && sanitizeKeys.length === 0)) + return input; + + var sanitizeRegExp = joinRegExp(sanitizeKeys); + var sanitizeMask = '********'; + var safeInput; + + try { + safeInput = JSON.parse(stringify(input)); + } catch (o_O) { + return input; + } + + function sanitizeWorker(workerInput) { + if (isArray(workerInput)) { + return workerInput.map(function(val) { + return sanitizeWorker(val); + }); + } + + if (isPlainObject(workerInput)) { + return Object.keys(workerInput).reduce(function(acc, k) { + if (sanitizeRegExp.test(k)) { + acc[k] = sanitizeMask; + } else { + acc[k] = sanitizeWorker(workerInput[k]); + } + return acc; + }, {}); + } + + return workerInput; + } + + return sanitizeWorker(safeInput); +} + +module.exports = { + isObject: isObject, + isError: isError, + isErrorEvent: isErrorEvent, + isDOMError: isDOMError, + isDOMException: isDOMException, + isUndefined: isUndefined, + isFunction: isFunction, + isPlainObject: isPlainObject, + isString: isString, + isArray: isArray, + isEmptyObject: isEmptyObject, + supportsErrorEvent: supportsErrorEvent, + supportsDOMError: supportsDOMError, + supportsDOMException: supportsDOMException, + supportsFetch: supportsFetch, + supportsReferrerPolicy: supportsReferrerPolicy, + supportsPromiseRejectionEvent: supportsPromiseRejectionEvent, + wrappedCallback: wrappedCallback, + each: each, + objectMerge: objectMerge, + truncate: truncate, + objectFrozen: objectFrozen, + hasKey: hasKey, + joinRegExp: joinRegExp, + urlencode: urlencode, + uuid4: uuid4, + htmlTreeAsString: htmlTreeAsString, + htmlElementAsString: htmlElementAsString, + isSameException: isSameException, + isSameStacktrace: isSameStacktrace, + parseUrl: parseUrl, + fill: fill, + safeJoin: safeJoin, + serializeException: serializeException, + serializeKeysForMessage: serializeKeysForMessage, + sanitize: sanitize +}; + +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"4":4}],4:[function(_dereq_,module,exports){ +/* + json-stringify-safe + Like JSON.stringify, but doesn't throw on circular references. + + Originally forked from https://github.com/isaacs/json-stringify-safe + version 5.0.1 on 3/8/2017 and modified to handle Errors serialization + and IE8 compatibility. Tests for this are in test/vendor. + + ISC license: https://github.com/isaacs/json-stringify-safe/blob/master/LICENSE +*/ + +exports = module.exports = stringify; +exports.getSerialize = serializer; + +function indexOf(haystack, needle) { + for (var i = 0; i < haystack.length; ++i) { + if (haystack[i] === needle) return i; + } + return -1; +} + +function stringify(obj, replacer, spaces, cycleReplacer) { + return JSON.stringify(obj, serializer(replacer, cycleReplacer), spaces); +} + +// https://github.com/ftlabs/js-abbreviate/blob/fa709e5f139e7770a71827b1893f22418097fbda/index.js#L95-L106 +function stringifyError(value) { + var err = { + // These properties are implemented as magical getters and don't show up in for in + stack: value.stack, + message: value.message, + name: value.name + }; + + for (var i in value) { + if (Object.prototype.hasOwnProperty.call(value, i)) { + err[i] = value[i]; + } + } + + return err; +} + +function serializer(replacer, cycleReplacer) { + var stack = []; + var keys = []; + + if (cycleReplacer == null) { + cycleReplacer = function(key, value) { + if (stack[0] === value) { + return '[Circular ~]'; + } + return '[Circular ~.' + keys.slice(0, indexOf(stack, value)).join('.') + ']'; + }; + } + + return function(key, value) { + if (stack.length > 0) { + var thisPos = indexOf(stack, this); + ~thisPos ? stack.splice(thisPos + 1) : stack.push(this); + ~thisPos ? keys.splice(thisPos, Infinity, key) : keys.push(key); + + if (~indexOf(stack, value)) { + value = cycleReplacer.call(this, key, value); + } + } else { + stack.push(value); + } + + return replacer == null + ? value instanceof Error ? stringifyError(value) : value + : replacer.call(this, key, value); + }; +} + +},{}]},{},[1])(1) +}); \ No newline at end of file diff --git a/packages/raven-js/dist/plugins/console.min.js b/packages/raven-js/dist/plugins/console.min.js new file mode 100644 index 000000000000..98bcf6ef96a8 --- /dev/null +++ b/packages/raven-js/dist/plugins/console.min.js @@ -0,0 +1,3 @@ +/*! Raven.js 3.25.2 (30b6d4e) | github.com/getsentry/raven-js */ +!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b=b.Raven||(b.Raven={}),b=b.Plugins||(b.Plugins={}),b.Console=a()}}(function(){return function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};b[g][0].call(k.exports,function(a){var c=b[g][1][a];return e(c?c:a)},k,k.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;g ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function F(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&l(b))for(c=b.split(/\s+/),f=0;fc?Q(a,b-1):d}function R(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?X:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function S(a,b){function c(a){return m(a)?a.map(function(a){return c(a)}):k(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!m(b)||m(b)&&0===b.length)return a;var d,e=A(b),f="********";try{d=JSON.parse(T(a))}catch(g){return a}return c(d)}var T=a(4),U="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},V=3,W=51200,X=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isDOMError:g,isDOMException:h,isUndefined:i,isFunction:j,isPlainObject:k,isString:l,isArray:m,isEmptyObject:n,supportsErrorEvent:o,supportsDOMError:p,supportsDOMException:q,supportsFetch:r,supportsReferrerPolicy:s,supportsPromiseRejectionEvent:t,wrappedCallback:u,each:v,objectMerge:w,truncate:y,objectFrozen:x,hasKey:z,joinRegExp:A,urlencode:B,uuid4:D,htmlTreeAsString:E,htmlElementAsString:F,isSameException:I,isSameStacktrace:J,parseUrl:C,fill:K,safeJoin:L,serializeException:Q,serializeKeysForMessage:R,sanitize:S}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{4:4}],4:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}]},{},[1])(1)}); +//# sourceMappingURL=console.min.js.map \ No newline at end of file diff --git a/packages/raven-js/dist/plugins/console.min.js.map b/packages/raven-js/dist/plugins/console.min.js.map new file mode 100644 index 000000000000..99dce1fac727 --- /dev/null +++ b/packages/raven-js/dist/plugins/console.min.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["console.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","Plugins","Console","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","consolePlugin","console","pluginOptions","logLevels","levels","push","callback","msg","data","captureMessage","level","pop","wrapConsoleMethod","wrapMethod","2","utils","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","safeJoin","logger","extra","Function","prototype","apply","3","isObject","what","isError","value","Object","toString","isErrorEvent","isDOMError","isDOMException","isUndefined","isFunction","isPlainObject","isString","isArray","isEmptyObject","_","hasOwnProperty","supportsErrorEvent","ErrorEvent","supportsDOMError","DOMError","supportsDOMException","DOMException","supportsFetch","_window","Headers","Request","Response","supportsReferrerPolicy","referrerPolicy","supportsPromiseRejectionEvent","PromiseRejectionEvent","wrappedCallback","dataCallback","original","normalizedData","each","obj","j","hasKey","objectMerge","obj1","obj2","key","objectFrozen","isFrozen","truncate","str","max","substr","object","joinRegExp","patterns","pattern","sources","len","replace","source","RegExp","join","urlencode","pairs","encodeURIComponent","parseUrl","url","match","query","fragment","protocol","host","path","relative","uuid4","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","Math","random","htmlTreeAsString","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","reverse","className","classes","attr","tagName","toLowerCase","id","split","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","isSameException","ex1","ex2","values","type","stacktrace","isSameStacktrace","stack1","stack2","frames1","frames","frames2","filename","lineno","colno","fill","name","replacement","track","orig","__raven__","__orig__","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","JSON","stringify","serializeValue","maxLength","serializeObject","depth","keys","reduce","acc","Array","map","val","serializeException","ex","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","serializeKeysForMessage","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitize","sanitizeKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","test","sanitizeMask","safeInput","parse","o_O","4","indexOf","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","err","stack","message","thisPos","splice","Infinity","getSerialize"],"mappings":"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","file":"console.min.js"} \ No newline at end of file diff --git a/packages/raven-js/dist/plugins/ember.js b/packages/raven-js/dist/plugins/ember.js new file mode 100644 index 000000000000..b1f5f9ee1a57 --- /dev/null +++ b/packages/raven-js/dist/plugins/ember.js @@ -0,0 +1,46 @@ +/*! Raven.js 3.25.2 (30b6d4e) | github.com/getsentry/raven-js */ + +/* + * Includes TraceKit + * https://github.com/getsentry/TraceKit + * + * Copyright 2018 Matt Robenolt and other contributors + * Released under the BSD license + * https://github.com/getsentry/raven-js/blob/master/LICENSE + * + */ + +(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=(g.Raven||(g.Raven = {}));g=(g.Plugins||(g.Plugins = {}));g.Ember = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o' : 'anonymous component') + + (vm._isVue && vm.$options.__file ? ' at ' + vm.$options.__file : '') + ); +} + +function vuePlugin(Raven, Vue) { + Vue = Vue || window.Vue; + + // quit if Vue isn't on the page + if (!Vue || !Vue.config) return; + + var _oldOnError = Vue.config.errorHandler; + Vue.config.errorHandler = function VueErrorHandler(error, vm, info) { + var metaData = {}; + + // vm and lifecycleHook are not always available + if (Object.prototype.toString.call(vm) === '[object Object]') { + metaData.componentName = formatComponentName(vm); + metaData.propsData = vm.$options.propsData; + } + + if (typeof info !== 'undefined') { + metaData.lifecycleHook = info; + } + + Raven.captureException(error, { + extra: metaData + }); + + if (typeof _oldOnError === 'function') { + _oldOnError.call(this, error, vm, info); + } + }; +} + +module.exports = vuePlugin; + +},{}]},{},[1])(1) +}); \ No newline at end of file diff --git a/packages/raven-js/dist/plugins/vue.min.js b/packages/raven-js/dist/plugins/vue.min.js new file mode 100644 index 000000000000..9fc6413d273a --- /dev/null +++ b/packages/raven-js/dist/plugins/vue.min.js @@ -0,0 +1,3 @@ +/*! Raven.js 3.25.2 (30b6d4e) | github.com/getsentry/raven-js */ +!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b=b.Raven||(b.Raven={}),b=b.Plugins||(b.Plugins={}),b.Vue=a()}}(function(){return function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};b[g][0].call(k.exports,function(a){var c=b[g][1][a];return e(c?c:a)},k,k.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;g":"anonymous component")+(a._isVue&&a.$options.__file?" at "+a.$options.__file:"")}function e(a,b){if(b=b||window.Vue,b&&b.config){var c=b.config.errorHandler;b.config.errorHandler=function(b,e,f){var g={};"[object Object]"===Object.prototype.toString.call(e)&&(g.componentName=d(e),g.propsData=e.$options.propsData),"undefined"!=typeof f&&(g.lifecycleHook=f),a.captureException(b,{extra:g}),"function"==typeof c&&c.call(this,b,e,f)}}}b.exports=e},{}]},{},[1])(1)}); +//# sourceMappingURL=vue.min.js.map \ No newline at end of file diff --git a/packages/raven-js/dist/raven.js b/packages/raven-js/dist/raven.js new file mode 100644 index 000000000000..6013755e2916 --- /dev/null +++ b/packages/raven-js/dist/raven.js @@ -0,0 +1,4010 @@ +/*! Raven.js 3.25.2 (30b6d4e) | github.com/getsentry/raven-js */ + +/* + * Includes TraceKit + * https://github.com/getsentry/TraceKit + * + * Copyright 2018 Matt Robenolt and other contributors + * Released under the BSD license + * https://github.com/getsentry/raven-js/blob/master/LICENSE + * + */ + +(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.Raven = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o captureException(string) => captureMessage(string) + if (initialCall && initialCall.func === 'Raven.captureException') { + initialCall = stack.stack[2]; + } + + var fileurl = (initialCall && initialCall.url) || ''; + + if ( + !!this._globalOptions.ignoreUrls.test && + this._globalOptions.ignoreUrls.test(fileurl) + ) { + return; + } + + if ( + !!this._globalOptions.whitelistUrls.test && + !this._globalOptions.whitelistUrls.test(fileurl) + ) { + return; + } + + if (this._globalOptions.stacktrace || (options && options.stacktrace)) { + // fingerprint on msg, not stack trace (legacy behavior, could be revisited) + data.fingerprint = data.fingerprint == null ? msg : data.fingerprint; + + options = objectMerge( + { + trimHeadFrames: 0 + }, + options + ); + // Since we know this is a synthetic trace, the top frame (this function call) + // MUST be from Raven.js, so mark it for trimming + // We add to the trim counter so that callers can choose to trim extra frames, such + // as utility functions. + options.trimHeadFrames += 1; + + var frames = this._prepareFrames(stack, options); + data.stacktrace = { + // Sentry expects frames oldest to newest + frames: frames.reverse() + }; + } + + // Make sure that fingerprint is always wrapped in an array + if (data.fingerprint) { + data.fingerprint = isArray(data.fingerprint) + ? data.fingerprint + : [data.fingerprint]; + } + + // Fire away! + this._send(data); + + return this; + }, + + captureBreadcrumb: function(obj) { + var crumb = objectMerge( + { + timestamp: now() / 1000 + }, + obj + ); + + if (isFunction(this._globalOptions.breadcrumbCallback)) { + var result = this._globalOptions.breadcrumbCallback(crumb); + + if (isObject(result) && !isEmptyObject(result)) { + crumb = result; + } else if (result === false) { + return this; + } + } + + this._breadcrumbs.push(crumb); + if (this._breadcrumbs.length > this._globalOptions.maxBreadcrumbs) { + this._breadcrumbs.shift(); + } + return this; + }, + + addPlugin: function(plugin /*arg1, arg2, ... argN*/) { + var pluginArgs = [].slice.call(arguments, 1); + + this._plugins.push([plugin, pluginArgs]); + if (this._isRavenInstalled) { + this._drainPlugins(); + } + + return this; + }, + + /* + * Set/clear a user to be sent along with the payload. + * + * @param {object} user An object representing user data [optional] + * @return {Raven} + */ + setUserContext: function(user) { + // Intentionally do not merge here since that's an unexpected behavior. + this._globalContext.user = user; + + return this; + }, + + /* + * Merge extra attributes to be sent along with the payload. + * + * @param {object} extra An object representing extra data [optional] + * @return {Raven} + */ + setExtraContext: function(extra) { + this._mergeContext('extra', extra); + + return this; + }, + + /* + * Merge tags to be sent along with the payload. + * + * @param {object} tags An object representing tags [optional] + * @return {Raven} + */ + setTagsContext: function(tags) { + this._mergeContext('tags', tags); + + return this; + }, + + /* + * Clear all of the context. + * + * @return {Raven} + */ + clearContext: function() { + this._globalContext = {}; + + return this; + }, + + /* + * Get a copy of the current context. This cannot be mutated. + * + * @return {object} copy of context + */ + getContext: function() { + // lol javascript + return JSON.parse(stringify(this._globalContext)); + }, + + /* + * Set environment of application + * + * @param {string} environment Typically something like 'production'. + * @return {Raven} + */ + setEnvironment: function(environment) { + this._globalOptions.environment = environment; + + return this; + }, + + /* + * Set release version of application + * + * @param {string} release Typically something like a git SHA to identify version + * @return {Raven} + */ + setRelease: function(release) { + this._globalOptions.release = release; + + return this; + }, + + /* + * Set the dataCallback option + * + * @param {function} callback The callback to run which allows the + * data blob to be mutated before sending + * @return {Raven} + */ + setDataCallback: function(callback) { + var original = this._globalOptions.dataCallback; + this._globalOptions.dataCallback = keepOriginalCallback(original, callback); + return this; + }, + + /* + * Set the breadcrumbCallback option + * + * @param {function} callback The callback to run which allows filtering + * or mutating breadcrumbs + * @return {Raven} + */ + setBreadcrumbCallback: function(callback) { + var original = this._globalOptions.breadcrumbCallback; + this._globalOptions.breadcrumbCallback = keepOriginalCallback(original, callback); + return this; + }, + + /* + * Set the shouldSendCallback option + * + * @param {function} callback The callback to run which allows + * introspecting the blob before sending + * @return {Raven} + */ + setShouldSendCallback: function(callback) { + var original = this._globalOptions.shouldSendCallback; + this._globalOptions.shouldSendCallback = keepOriginalCallback(original, callback); + return this; + }, + + /** + * Override the default HTTP transport mechanism that transmits data + * to the Sentry server. + * + * @param {function} transport Function invoked instead of the default + * `makeRequest` handler. + * + * @return {Raven} + */ + setTransport: function(transport) { + this._globalOptions.transport = transport; + + return this; + }, + + /* + * Get the latest raw exception that was captured by Raven. + * + * @return {error} + */ + lastException: function() { + return this._lastCapturedException; + }, + + /* + * Get the last event id + * + * @return {string} + */ + lastEventId: function() { + return this._lastEventId; + }, + + /* + * Determine if Raven is setup and ready to go. + * + * @return {boolean} + */ + isSetup: function() { + if (!this._hasJSON) return false; // needs JSON support + if (!this._globalServer) { + if (!this.ravenNotConfiguredError) { + this.ravenNotConfiguredError = true; + this._logDebug('error', 'Error: Raven has not been configured.'); + } + return false; + } + return true; + }, + + afterLoad: function() { + // TODO: remove window dependence? + + // Attempt to initialize Raven on load + var RavenConfig = _window.RavenConfig; + if (RavenConfig) { + this.config(RavenConfig.dsn, RavenConfig.config).install(); + } + }, + + showReportDialog: function(options) { + if ( + !_document // doesn't work without a document (React native) + ) + return; + + options = options || {}; + + var lastEventId = options.eventId || this.lastEventId(); + if (!lastEventId) { + throw new RavenConfigError('Missing eventId'); + } + + var dsn = options.dsn || this._dsn; + if (!dsn) { + throw new RavenConfigError('Missing DSN'); + } + + var encode = encodeURIComponent; + var qs = ''; + qs += '?eventId=' + encode(lastEventId); + qs += '&dsn=' + encode(dsn); + + var user = options.user || this._globalContext.user; + if (user) { + if (user.name) qs += '&name=' + encode(user.name); + if (user.email) qs += '&email=' + encode(user.email); + } + + var globalServer = this._getGlobalServer(this._parseDSN(dsn)); + + var script = _document.createElement('script'); + script.async = true; + script.src = globalServer + '/api/embed/error-page/' + qs; + (_document.head || _document.body).appendChild(script); + }, + + /**** Private functions ****/ + _ignoreNextOnError: function() { + var self = this; + this._ignoreOnError += 1; + setTimeout(function() { + // onerror should trigger before setTimeout + self._ignoreOnError -= 1; + }); + }, + + _triggerEvent: function(eventType, options) { + // NOTE: `event` is a native browser thing, so let's avoid conflicting wiht it + var evt, key; + + if (!this._hasDocument) return; + + options = options || {}; + + eventType = 'raven' + eventType.substr(0, 1).toUpperCase() + eventType.substr(1); + + if (_document.createEvent) { + evt = _document.createEvent('HTMLEvents'); + evt.initEvent(eventType, true, true); + } else { + evt = _document.createEventObject(); + evt.eventType = eventType; + } + + for (key in options) + if (hasKey(options, key)) { + evt[key] = options[key]; + } + + if (_document.createEvent) { + // IE9 if standards + _document.dispatchEvent(evt); + } else { + // IE8 regardless of Quirks or Standards + // IE9 if quirks + try { + _document.fireEvent('on' + evt.eventType.toLowerCase(), evt); + } catch (e) { + // Do nothing + } + } + }, + + /** + * Wraps addEventListener to capture UI breadcrumbs + * @param evtName the event name (e.g. "click") + * @returns {Function} + * @private + */ + _breadcrumbEventHandler: function(evtName) { + var self = this; + return function(evt) { + // reset keypress timeout; e.g. triggering a 'click' after + // a 'keypress' will reset the keypress debounce so that a new + // set of keypresses can be recorded + self._keypressTimeout = null; + + // It's possible this handler might trigger multiple times for the same + // event (e.g. event propagation through node ancestors). Ignore if we've + // already captured the event. + if (self._lastCapturedEvent === evt) return; + + self._lastCapturedEvent = evt; + + // try/catch both: + // - accessing evt.target (see getsentry/raven-js#838, #768) + // - `htmlTreeAsString` because it's complex, and just accessing the DOM incorrectly + // can throw an exception in some circumstances. + var target; + try { + target = htmlTreeAsString(evt.target); + } catch (e) { + target = ''; + } + + self.captureBreadcrumb({ + category: 'ui.' + evtName, // e.g. ui.click, ui.input + message: target + }); + }; + }, + + /** + * Wraps addEventListener to capture keypress UI events + * @returns {Function} + * @private + */ + _keypressEventHandler: function() { + var self = this, + debounceDuration = 1000; // milliseconds + + // TODO: if somehow user switches keypress target before + // debounce timeout is triggered, we will only capture + // a single breadcrumb from the FIRST target (acceptable?) + return function(evt) { + var target; + try { + target = evt.target; + } catch (e) { + // just accessing event properties can throw an exception in some rare circumstances + // see: https://github.com/getsentry/raven-js/issues/838 + return; + } + var tagName = target && target.tagName; + + // only consider keypress events on actual input elements + // this will disregard keypresses targeting body (e.g. tabbing + // through elements, hotkeys, etc) + if ( + !tagName || + (tagName !== 'INPUT' && tagName !== 'TEXTAREA' && !target.isContentEditable) + ) + return; + + // record first keypress in a series, but ignore subsequent + // keypresses until debounce clears + var timeout = self._keypressTimeout; + if (!timeout) { + self._breadcrumbEventHandler('input')(evt); + } + clearTimeout(timeout); + self._keypressTimeout = setTimeout(function() { + self._keypressTimeout = null; + }, debounceDuration); + }; + }, + + /** + * Captures a breadcrumb of type "navigation", normalizing input URLs + * @param to the originating URL + * @param from the target URL + * @private + */ + _captureUrlChange: function(from, to) { + var parsedLoc = parseUrl(this._location.href); + var parsedTo = parseUrl(to); + var parsedFrom = parseUrl(from); + + // because onpopstate only tells you the "new" (to) value of location.href, and + // not the previous (from) value, we need to track the value of the current URL + // state ourselves + this._lastHref = to; + + // Use only the path component of the URL if the URL matches the current + // document (almost all the time when using pushState) + if (parsedLoc.protocol === parsedTo.protocol && parsedLoc.host === parsedTo.host) + to = parsedTo.relative; + if (parsedLoc.protocol === parsedFrom.protocol && parsedLoc.host === parsedFrom.host) + from = parsedFrom.relative; + + this.captureBreadcrumb({ + category: 'navigation', + data: { + to: to, + from: from + } + }); + }, + + _patchFunctionToString: function() { + var self = this; + self._originalFunctionToString = Function.prototype.toString; + // eslint-disable-next-line no-extend-native + Function.prototype.toString = function() { + if (typeof this === 'function' && this.__raven__) { + return self._originalFunctionToString.apply(this.__orig__, arguments); + } + return self._originalFunctionToString.apply(this, arguments); + }; + }, + + _unpatchFunctionToString: function() { + if (this._originalFunctionToString) { + // eslint-disable-next-line no-extend-native + Function.prototype.toString = this._originalFunctionToString; + } + }, + + /** + * Wrap timer functions and event targets to catch errors and provide + * better metadata. + */ + _instrumentTryCatch: function() { + var self = this; + + var wrappedBuiltIns = self._wrappedBuiltIns; + + function wrapTimeFn(orig) { + return function(fn, t) { + // preserve arity + // Make a copy of the arguments to prevent deoptimization + // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments + var args = new Array(arguments.length); + for (var i = 0; i < args.length; ++i) { + args[i] = arguments[i]; + } + var originalCallback = args[0]; + if (isFunction(originalCallback)) { + args[0] = self.wrap(originalCallback); + } + + // IE < 9 doesn't support .call/.apply on setInterval/setTimeout, but it + // also supports only two arguments and doesn't care what this is, so we + // can just call the original function directly. + if (orig.apply) { + return orig.apply(this, args); + } else { + return orig(args[0], args[1]); + } + }; + } + + var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; + + function wrapEventTarget(global) { + var proto = _window[global] && _window[global].prototype; + if (proto && proto.hasOwnProperty && proto.hasOwnProperty('addEventListener')) { + fill( + proto, + 'addEventListener', + function(orig) { + return function(evtName, fn, capture, secure) { + // preserve arity + try { + if (fn && fn.handleEvent) { + fn.handleEvent = self.wrap(fn.handleEvent); + } + } catch (err) { + // can sometimes get 'Permission denied to access property "handle Event' + } + + // More breadcrumb DOM capture ... done here and not in `_instrumentBreadcrumbs` + // so that we don't have more than one wrapper function + var before, clickHandler, keypressHandler; + + if ( + autoBreadcrumbs && + autoBreadcrumbs.dom && + (global === 'EventTarget' || global === 'Node') + ) { + // NOTE: generating multiple handlers per addEventListener invocation, should + // revisit and verify we can just use one (almost certainly) + clickHandler = self._breadcrumbEventHandler('click'); + keypressHandler = self._keypressEventHandler(); + before = function(evt) { + // need to intercept every DOM event in `before` argument, in case that + // same wrapped method is re-used for different events (e.g. mousemove THEN click) + // see #724 + if (!evt) return; + + var eventType; + try { + eventType = evt.type; + } catch (e) { + // just accessing event properties can throw an exception in some rare circumstances + // see: https://github.com/getsentry/raven-js/issues/838 + return; + } + if (eventType === 'click') return clickHandler(evt); + else if (eventType === 'keypress') return keypressHandler(evt); + }; + } + return orig.call( + this, + evtName, + self.wrap(fn, undefined, before), + capture, + secure + ); + }; + }, + wrappedBuiltIns + ); + fill( + proto, + 'removeEventListener', + function(orig) { + return function(evt, fn, capture, secure) { + try { + fn = fn && (fn.__raven_wrapper__ ? fn.__raven_wrapper__ : fn); + } catch (e) { + // ignore, accessing __raven_wrapper__ will throw in some Selenium environments + } + return orig.call(this, evt, fn, capture, secure); + }; + }, + wrappedBuiltIns + ); + } + } + + fill(_window, 'setTimeout', wrapTimeFn, wrappedBuiltIns); + fill(_window, 'setInterval', wrapTimeFn, wrappedBuiltIns); + if (_window.requestAnimationFrame) { + fill( + _window, + 'requestAnimationFrame', + function(orig) { + return function(cb) { + return orig(self.wrap(cb)); + }; + }, + wrappedBuiltIns + ); + } + + // event targets borrowed from bugsnag-js: + // https://github.com/bugsnag/bugsnag-js/blob/master/src/bugsnag.js#L666 + var eventTargets = [ + 'EventTarget', + 'Window', + 'Node', + 'ApplicationCache', + 'AudioTrackList', + 'ChannelMergerNode', + 'CryptoOperation', + 'EventSource', + 'FileReader', + 'HTMLUnknownElement', + 'IDBDatabase', + 'IDBRequest', + 'IDBTransaction', + 'KeyOperation', + 'MediaController', + 'MessagePort', + 'ModalWindow', + 'Notification', + 'SVGElementInstance', + 'Screen', + 'TextTrack', + 'TextTrackCue', + 'TextTrackList', + 'WebSocket', + 'WebSocketWorker', + 'Worker', + 'XMLHttpRequest', + 'XMLHttpRequestEventTarget', + 'XMLHttpRequestUpload' + ]; + for (var i = 0; i < eventTargets.length; i++) { + wrapEventTarget(eventTargets[i]); + } + }, + + /** + * Instrument browser built-ins w/ breadcrumb capturing + * - XMLHttpRequests + * - DOM interactions (click/typing) + * - window.location changes + * - console + * + * Can be disabled or individually configured via the `autoBreadcrumbs` config option + */ + _instrumentBreadcrumbs: function() { + var self = this; + var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; + + var wrappedBuiltIns = self._wrappedBuiltIns; + + function wrapProp(prop, xhr) { + if (prop in xhr && isFunction(xhr[prop])) { + fill(xhr, prop, function(orig) { + return self.wrap(orig); + }); // intentionally don't track filled methods on XHR instances + } + } + + if (autoBreadcrumbs.xhr && 'XMLHttpRequest' in _window) { + var xhrproto = _window.XMLHttpRequest && _window.XMLHttpRequest.prototype; + fill( + xhrproto, + 'open', + function(origOpen) { + return function(method, url) { + // preserve arity + + // if Sentry key appears in URL, don't capture + if (isString(url) && url.indexOf(self._globalKey) === -1) { + this.__raven_xhr = { + method: method, + url: url, + status_code: null + }; + } + + return origOpen.apply(this, arguments); + }; + }, + wrappedBuiltIns + ); + + fill( + xhrproto, + 'send', + function(origSend) { + return function() { + // preserve arity + var xhr = this; + + function onreadystatechangeHandler() { + if (xhr.__raven_xhr && xhr.readyState === 4) { + try { + // touching statusCode in some platforms throws + // an exception + xhr.__raven_xhr.status_code = xhr.status; + } catch (e) { + /* do nothing */ + } + + self.captureBreadcrumb({ + type: 'http', + category: 'xhr', + data: xhr.__raven_xhr + }); + } + } + + var props = ['onload', 'onerror', 'onprogress']; + for (var j = 0; j < props.length; j++) { + wrapProp(props[j], xhr); + } + + if ('onreadystatechange' in xhr && isFunction(xhr.onreadystatechange)) { + fill( + xhr, + 'onreadystatechange', + function(orig) { + return self.wrap(orig, undefined, onreadystatechangeHandler); + } /* intentionally don't track this instrumentation */ + ); + } else { + // if onreadystatechange wasn't actually set by the page on this xhr, we + // are free to set our own and capture the breadcrumb + xhr.onreadystatechange = onreadystatechangeHandler; + } + + return origSend.apply(this, arguments); + }; + }, + wrappedBuiltIns + ); + } + + if (autoBreadcrumbs.xhr && supportsFetch()) { + fill( + _window, + 'fetch', + function(origFetch) { + return function() { + // preserve arity + // Make a copy of the arguments to prevent deoptimization + // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments + var args = new Array(arguments.length); + for (var i = 0; i < args.length; ++i) { + args[i] = arguments[i]; + } + + var fetchInput = args[0]; + var method = 'GET'; + var url; + + if (typeof fetchInput === 'string') { + url = fetchInput; + } else if ('Request' in _window && fetchInput instanceof _window.Request) { + url = fetchInput.url; + if (fetchInput.method) { + method = fetchInput.method; + } + } else { + url = '' + fetchInput; + } + + // if Sentry key appears in URL, don't capture, as it's our own request + if (url.indexOf(self._globalKey) !== -1) { + return origFetch.apply(this, args); + } + + if (args[1] && args[1].method) { + method = args[1].method; + } + + var fetchData = { + method: method, + url: url, + status_code: null + }; + + return origFetch + .apply(this, args) + .then(function(response) { + fetchData.status_code = response.status; + + self.captureBreadcrumb({ + type: 'http', + category: 'fetch', + data: fetchData + }); + + return response; + }) + ['catch'](function(err) { + // if there is an error performing the request + self.captureBreadcrumb({ + type: 'http', + category: 'fetch', + data: fetchData, + level: 'error' + }); + + throw err; + }); + }; + }, + wrappedBuiltIns + ); + } + + // Capture breadcrumbs from any click that is unhandled / bubbled up all the way + // to the document. Do this before we instrument addEventListener. + if (autoBreadcrumbs.dom && this._hasDocument) { + if (_document.addEventListener) { + _document.addEventListener('click', self._breadcrumbEventHandler('click'), false); + _document.addEventListener('keypress', self._keypressEventHandler(), false); + } else if (_document.attachEvent) { + // IE8 Compatibility + _document.attachEvent('onclick', self._breadcrumbEventHandler('click')); + _document.attachEvent('onkeypress', self._keypressEventHandler()); + } + } + + // record navigation (URL) changes + // NOTE: in Chrome App environment, touching history.pushState, *even inside + // a try/catch block*, will cause Chrome to output an error to console.error + // borrowed from: https://github.com/angular/angular.js/pull/13945/files + var chrome = _window.chrome; + var isChromePackagedApp = chrome && chrome.app && chrome.app.runtime; + var hasPushAndReplaceState = + !isChromePackagedApp && + _window.history && + _window.history.pushState && + _window.history.replaceState; + if (autoBreadcrumbs.location && hasPushAndReplaceState) { + // TODO: remove onpopstate handler on uninstall() + var oldOnPopState = _window.onpopstate; + _window.onpopstate = function() { + var currentHref = self._location.href; + self._captureUrlChange(self._lastHref, currentHref); + + if (oldOnPopState) { + return oldOnPopState.apply(this, arguments); + } + }; + + var historyReplacementFunction = function(origHistFunction) { + // note history.pushState.length is 0; intentionally not declaring + // params to preserve 0 arity + return function(/* state, title, url */) { + var url = arguments.length > 2 ? arguments[2] : undefined; + + // url argument is optional + if (url) { + // coerce to string (this is what pushState does) + self._captureUrlChange(self._lastHref, url + ''); + } + + return origHistFunction.apply(this, arguments); + }; + }; + + fill(_window.history, 'pushState', historyReplacementFunction, wrappedBuiltIns); + fill(_window.history, 'replaceState', historyReplacementFunction, wrappedBuiltIns); + } + + if (autoBreadcrumbs.console && 'console' in _window && console.log) { + // console + var consoleMethodCallback = function(msg, data) { + self.captureBreadcrumb({ + message: msg, + level: data.level, + category: 'console' + }); + }; + + each(['debug', 'info', 'warn', 'error', 'log'], function(_, level) { + wrapConsoleMethod(console, level, consoleMethodCallback); + }); + } + }, + + _restoreBuiltIns: function() { + // restore any wrapped builtins + var builtin; + while (this._wrappedBuiltIns.length) { + builtin = this._wrappedBuiltIns.shift(); + + var obj = builtin[0], + name = builtin[1], + orig = builtin[2]; + + obj[name] = orig; + } + }, + + _restoreConsole: function() { + // eslint-disable-next-line guard-for-in + for (var method in this._originalConsoleMethods) { + this._originalConsole[method] = this._originalConsoleMethods[method]; + } + }, + + _drainPlugins: function() { + var self = this; + + // FIX ME TODO + each(this._plugins, function(_, plugin) { + var installer = plugin[0]; + var args = plugin[1]; + installer.apply(self, [self].concat(args)); + }); + }, + + _parseDSN: function(str) { + var m = dsnPattern.exec(str), + dsn = {}, + i = 7; + + try { + while (i--) dsn[dsnKeys[i]] = m[i] || ''; + } catch (e) { + throw new RavenConfigError('Invalid DSN: ' + str); + } + + if (dsn.pass && !this._globalOptions.allowSecretKey) { + throw new RavenConfigError( + 'Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key' + ); + } + + return dsn; + }, + + _getGlobalServer: function(uri) { + // assemble the endpoint from the uri pieces + var globalServer = '//' + uri.host + (uri.port ? ':' + uri.port : ''); + + if (uri.protocol) { + globalServer = uri.protocol + ':' + globalServer; + } + return globalServer; + }, + + _handleOnErrorStackInfo: function() { + // if we are intentionally ignoring errors via onerror, bail out + if (!this._ignoreOnError) { + this._handleStackInfo.apply(this, arguments); + } + }, + + _handleStackInfo: function(stackInfo, options) { + var frames = this._prepareFrames(stackInfo, options); + + this._triggerEvent('handle', { + stackInfo: stackInfo, + options: options + }); + + this._processException( + stackInfo.name, + stackInfo.message, + stackInfo.url, + stackInfo.lineno, + frames, + options + ); + }, + + _prepareFrames: function(stackInfo, options) { + var self = this; + var frames = []; + if (stackInfo.stack && stackInfo.stack.length) { + each(stackInfo.stack, function(i, stack) { + var frame = self._normalizeFrame(stack, stackInfo.url); + if (frame) { + frames.push(frame); + } + }); + + // e.g. frames captured via captureMessage throw + if (options && options.trimHeadFrames) { + for (var j = 0; j < options.trimHeadFrames && j < frames.length; j++) { + frames[j].in_app = false; + } + } + } + frames = frames.slice(0, this._globalOptions.stackTraceLimit); + return frames; + }, + + _normalizeFrame: function(frame, stackInfoUrl) { + // normalize the frames data + var normalized = { + filename: frame.url, + lineno: frame.line, + colno: frame.column, + function: frame.func || '?' + }; + + // Case when we don't have any information about the error + // E.g. throwing a string or raw object, instead of an `Error` in Firefox + // Generating synthetic error doesn't add any value here + // + // We should probably somehow let a user know that they should fix their code + if (!frame.url) { + normalized.filename = stackInfoUrl; // fallback to whole stacks url from onerror handler + } + + normalized.in_app = !// determine if an exception came from outside of our app + // first we check the global includePaths list. + ( + (!!this._globalOptions.includePaths.test && + !this._globalOptions.includePaths.test(normalized.filename)) || + // Now we check for fun, if the function name is Raven or TraceKit + /(Raven|TraceKit)\./.test(normalized['function']) || + // finally, we do a last ditch effort and check for raven.min.js + /raven\.(min\.)?js$/.test(normalized.filename) + ); + + return normalized; + }, + + _processException: function(type, message, fileurl, lineno, frames, options) { + var prefixedMessage = (type ? type + ': ' : '') + (message || ''); + if ( + !!this._globalOptions.ignoreErrors.test && + (this._globalOptions.ignoreErrors.test(message) || + this._globalOptions.ignoreErrors.test(prefixedMessage)) + ) { + return; + } + + var stacktrace; + + if (frames && frames.length) { + fileurl = frames[0].filename || fileurl; + // Sentry expects frames oldest to newest + // and JS sends them as newest to oldest + frames.reverse(); + stacktrace = {frames: frames}; + } else if (fileurl) { + stacktrace = { + frames: [ + { + filename: fileurl, + lineno: lineno, + in_app: true + } + ] + }; + } + + if ( + !!this._globalOptions.ignoreUrls.test && + this._globalOptions.ignoreUrls.test(fileurl) + ) { + return; + } + + if ( + !!this._globalOptions.whitelistUrls.test && + !this._globalOptions.whitelistUrls.test(fileurl) + ) { + return; + } + + var data = objectMerge( + { + // sentry.interfaces.Exception + exception: { + values: [ + { + type: type, + value: message, + stacktrace: stacktrace + } + ] + }, + transaction: fileurl + }, + options + ); + + // Fire away! + this._send(data); + }, + + _trimPacket: function(data) { + // For now, we only want to truncate the two different messages + // but this could/should be expanded to just trim everything + var max = this._globalOptions.maxMessageLength; + if (data.message) { + data.message = truncate(data.message, max); + } + if (data.exception) { + var exception = data.exception.values[0]; + exception.value = truncate(exception.value, max); + } + + var request = data.request; + if (request) { + if (request.url) { + request.url = truncate(request.url, this._globalOptions.maxUrlLength); + } + if (request.Referer) { + request.Referer = truncate(request.Referer, this._globalOptions.maxUrlLength); + } + } + + if (data.breadcrumbs && data.breadcrumbs.values) + this._trimBreadcrumbs(data.breadcrumbs); + + return data; + }, + + /** + * Truncate breadcrumb values (right now just URLs) + */ + _trimBreadcrumbs: function(breadcrumbs) { + // known breadcrumb properties with urls + // TODO: also consider arbitrary prop values that start with (https?)?:// + var urlProps = ['to', 'from', 'url'], + urlProp, + crumb, + data; + + for (var i = 0; i < breadcrumbs.values.length; ++i) { + crumb = breadcrumbs.values[i]; + if ( + !crumb.hasOwnProperty('data') || + !isObject(crumb.data) || + objectFrozen(crumb.data) + ) + continue; + + data = objectMerge({}, crumb.data); + for (var j = 0; j < urlProps.length; ++j) { + urlProp = urlProps[j]; + if (data.hasOwnProperty(urlProp) && data[urlProp]) { + data[urlProp] = truncate(data[urlProp], this._globalOptions.maxUrlLength); + } + } + breadcrumbs.values[i].data = data; + } + }, + + _getHttpData: function() { + if (!this._hasNavigator && !this._hasDocument) return; + var httpData = {}; + + if (this._hasNavigator && _navigator.userAgent) { + httpData.headers = { + 'User-Agent': _navigator.userAgent + }; + } + + // Check in `window` instead of `document`, as we may be in ServiceWorker environment + if (_window.location && _window.location.href) { + httpData.url = _window.location.href; + } + + if (this._hasDocument && _document.referrer) { + if (!httpData.headers) httpData.headers = {}; + httpData.headers.Referer = _document.referrer; + } + + return httpData; + }, + + _resetBackoff: function() { + this._backoffDuration = 0; + this._backoffStart = null; + }, + + _shouldBackoff: function() { + return this._backoffDuration && now() - this._backoffStart < this._backoffDuration; + }, + + /** + * Returns true if the in-process data payload matches the signature + * of the previously-sent data + * + * NOTE: This has to be done at this level because TraceKit can generate + * data from window.onerror WITHOUT an exception object (IE8, IE9, + * other old browsers). This can take the form of an "exception" + * data object with a single frame (derived from the onerror args). + */ + _isRepeatData: function(current) { + var last = this._lastData; + + if ( + !last || + current.message !== last.message || // defined for captureMessage + current.transaction !== last.transaction // defined for captureException/onerror + ) + return false; + + // Stacktrace interface (i.e. from captureMessage) + if (current.stacktrace || last.stacktrace) { + return isSameStacktrace(current.stacktrace, last.stacktrace); + } else if (current.exception || last.exception) { + // Exception interface (i.e. from captureException/onerror) + return isSameException(current.exception, last.exception); + } + + return true; + }, + + _setBackoffState: function(request) { + // If we are already in a backoff state, don't change anything + if (this._shouldBackoff()) { + return; + } + + var status = request.status; + + // 400 - project_id doesn't exist or some other fatal + // 401 - invalid/revoked dsn + // 429 - too many requests + if (!(status === 400 || status === 401 || status === 429)) return; + + var retry; + try { + // If Retry-After is not in Access-Control-Expose-Headers, most + // browsers will throw an exception trying to access it + if (supportsFetch()) { + retry = request.headers.get('Retry-After'); + } else { + retry = request.getResponseHeader('Retry-After'); + } + + // Retry-After is returned in seconds + retry = parseInt(retry, 10) * 1000; + } catch (e) { + /* eslint no-empty:0 */ + } + + this._backoffDuration = retry + ? // If Sentry server returned a Retry-After value, use it + retry + : // Otherwise, double the last backoff duration (starts at 1 sec) + this._backoffDuration * 2 || 1000; + + this._backoffStart = now(); + }, + + _send: function(data) { + var globalOptions = this._globalOptions; + + var baseData = { + project: this._globalProject, + logger: globalOptions.logger, + platform: 'javascript' + }, + httpData = this._getHttpData(); + + if (httpData) { + baseData.request = httpData; + } + + // HACK: delete `trimHeadFrames` to prevent from appearing in outbound payload + if (data.trimHeadFrames) delete data.trimHeadFrames; + + data = objectMerge(baseData, data); + + // Merge in the tags and extra separately since objectMerge doesn't handle a deep merge + data.tags = objectMerge(objectMerge({}, this._globalContext.tags), data.tags); + data.extra = objectMerge(objectMerge({}, this._globalContext.extra), data.extra); + + // Send along our own collected metadata with extra + data.extra['session:duration'] = now() - this._startTime; + + if (this._breadcrumbs && this._breadcrumbs.length > 0) { + // intentionally make shallow copy so that additions + // to breadcrumbs aren't accidentally sent in this request + data.breadcrumbs = { + values: [].slice.call(this._breadcrumbs, 0) + }; + } + + if (this._globalContext.user) { + // sentry.interfaces.User + data.user = this._globalContext.user; + } + + // Include the environment if it's defined in globalOptions + if (globalOptions.environment) data.environment = globalOptions.environment; + + // Include the release if it's defined in globalOptions + if (globalOptions.release) data.release = globalOptions.release; + + // Include server_name if it's defined in globalOptions + if (globalOptions.serverName) data.server_name = globalOptions.serverName; + + data = this._sanitizeData(data); + + // Cleanup empty properties before sending them to the server + Object.keys(data).forEach(function(key) { + if (data[key] == null || data[key] === '' || isEmptyObject(data[key])) { + delete data[key]; + } + }); + + if (isFunction(globalOptions.dataCallback)) { + data = globalOptions.dataCallback(data) || data; + } + + // Why?????????? + if (!data || isEmptyObject(data)) { + return; + } + + // Check if the request should be filtered or not + if ( + isFunction(globalOptions.shouldSendCallback) && + !globalOptions.shouldSendCallback(data) + ) { + return; + } + + // Backoff state: Sentry server previously responded w/ an error (e.g. 429 - too many requests), + // so drop requests until "cool-off" period has elapsed. + if (this._shouldBackoff()) { + this._logDebug('warn', 'Raven dropped error due to backoff: ', data); + return; + } + + if (typeof globalOptions.sampleRate === 'number') { + if (Math.random() < globalOptions.sampleRate) { + this._sendProcessedPayload(data); + } + } else { + this._sendProcessedPayload(data); + } + }, + + _sanitizeData: function(data) { + return sanitize(data, this._globalOptions.sanitizeKeys); + }, + + _getUuid: function() { + return uuid4(); + }, + + _sendProcessedPayload: function(data, callback) { + var self = this; + var globalOptions = this._globalOptions; + + if (!this.isSetup()) return; + + // Try and clean up the packet before sending by truncating long values + data = this._trimPacket(data); + + // ideally duplicate error testing should occur *before* dataCallback/shouldSendCallback, + // but this would require copying an un-truncated copy of the data packet, which can be + // arbitrarily deep (extra_data) -- could be worthwhile? will revisit + if (!this._globalOptions.allowDuplicates && this._isRepeatData(data)) { + this._logDebug('warn', 'Raven dropped repeat event: ', data); + return; + } + + // Send along an event_id if not explicitly passed. + // This event_id can be used to reference the error within Sentry itself. + // Set lastEventId after we know the error should actually be sent + this._lastEventId = data.event_id || (data.event_id = this._getUuid()); + + // Store outbound payload after trim + this._lastData = data; + + this._logDebug('debug', 'Raven about to send:', data); + + var auth = { + sentry_version: '7', + sentry_client: 'raven-js/' + this.VERSION, + sentry_key: this._globalKey + }; + + if (this._globalSecret) { + auth.sentry_secret = this._globalSecret; + } + + var exception = data.exception && data.exception.values[0]; + + // only capture 'sentry' breadcrumb is autoBreadcrumbs is truthy + if ( + this._globalOptions.autoBreadcrumbs && + this._globalOptions.autoBreadcrumbs.sentry + ) { + this.captureBreadcrumb({ + category: 'sentry', + message: exception + ? (exception.type ? exception.type + ': ' : '') + exception.value + : data.message, + event_id: data.event_id, + level: data.level || 'error' // presume error unless specified + }); + } + + var url = this._globalEndpoint; + (globalOptions.transport || this._makeRequest).call(this, { + url: url, + auth: auth, + data: data, + options: globalOptions, + onSuccess: function success() { + self._resetBackoff(); + + self._triggerEvent('success', { + data: data, + src: url + }); + callback && callback(); + }, + onError: function failure(error) { + self._logDebug('error', 'Raven transport failed to send: ', error); + + if (error.request) { + self._setBackoffState(error.request); + } + + self._triggerEvent('failure', { + data: data, + src: url + }); + error = error || new Error('Raven send failed (no additional details provided)'); + callback && callback(error); + } + }); + }, + + _makeRequest: function(opts) { + // Auth is intentionally sent as part of query string (NOT as custom HTTP header) to avoid preflight CORS requests + var url = opts.url + '?' + urlencode(opts.auth); + + var evaluatedHeaders = null; + var evaluatedFetchParameters = {}; + + if (opts.options.headers) { + evaluatedHeaders = this._evaluateHash(opts.options.headers); + } + + if (opts.options.fetchParameters) { + evaluatedFetchParameters = this._evaluateHash(opts.options.fetchParameters); + } + + if (supportsFetch()) { + evaluatedFetchParameters.body = stringify(opts.data); + + var defaultFetchOptions = objectMerge({}, this._fetchDefaults); + var fetchOptions = objectMerge(defaultFetchOptions, evaluatedFetchParameters); + + if (evaluatedHeaders) { + fetchOptions.headers = evaluatedHeaders; + } + + return _window + .fetch(url, fetchOptions) + .then(function(response) { + if (response.ok) { + opts.onSuccess && opts.onSuccess(); + } else { + var error = new Error('Sentry error code: ' + response.status); + // It's called request only to keep compatibility with XHR interface + // and not add more redundant checks in setBackoffState method + error.request = response; + opts.onError && opts.onError(error); + } + }) + ['catch'](function() { + opts.onError && + opts.onError(new Error('Sentry error code: network unavailable')); + }); + } + + var request = _window.XMLHttpRequest && new _window.XMLHttpRequest(); + if (!request) return; + + // if browser doesn't support CORS (e.g. IE7), we are out of luck + var hasCORS = 'withCredentials' in request || typeof XDomainRequest !== 'undefined'; + + if (!hasCORS) return; + + if ('withCredentials' in request) { + request.onreadystatechange = function() { + if (request.readyState !== 4) { + return; + } else if (request.status === 200) { + opts.onSuccess && opts.onSuccess(); + } else if (opts.onError) { + var err = new Error('Sentry error code: ' + request.status); + err.request = request; + opts.onError(err); + } + }; + } else { + request = new XDomainRequest(); + // xdomainrequest cannot go http -> https (or vice versa), + // so always use protocol relative + url = url.replace(/^https?:/, ''); + + // onreadystatechange not supported by XDomainRequest + if (opts.onSuccess) { + request.onload = opts.onSuccess; + } + if (opts.onError) { + request.onerror = function() { + var err = new Error('Sentry error code: XDomainRequest'); + err.request = request; + opts.onError(err); + }; + } + } + + request.open('POST', url); + + if (evaluatedHeaders) { + each(evaluatedHeaders, function(key, value) { + request.setRequestHeader(key, value); + }); + } + + request.send(stringify(opts.data)); + }, + + _evaluateHash: function(hash) { + var evaluated = {}; + + for (var key in hash) { + if (hash.hasOwnProperty(key)) { + var value = hash[key]; + evaluated[key] = typeof value === 'function' ? value() : value; + } + } + + return evaluated; + }, + + _logDebug: function(level) { + // We allow `Raven.debug` and `Raven.config(DSN, { debug: true })` to not make backward incompatible API change + if ( + this._originalConsoleMethods[level] && + (this.debug || this._globalOptions.debug) + ) { + // In IE<10 console methods do not have their own 'apply' method + Function.prototype.apply.call( + this._originalConsoleMethods[level], + this._originalConsole, + [].slice.call(arguments, 1) + ); + } + }, + + _mergeContext: function(key, context) { + if (isUndefined(context)) { + delete this._globalContext[key]; + } else { + this._globalContext[key] = objectMerge(this._globalContext[key] || {}, context); + } + } +}; + +// Deprecations +Raven.prototype.setUser = Raven.prototype.setUserContext; +Raven.prototype.setReleaseContext = Raven.prototype.setRelease; + +module.exports = Raven; + +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"1":1,"2":2,"5":5,"6":6,"7":7,"8":8}],4:[function(_dereq_,module,exports){ +(function (global){ +/** + * Enforces a single instance of the Raven client, and the + * main entry point for Raven. If you are a consumer of the + * Raven library, you SHOULD load this file (vs raven.js). + **/ + +var RavenConstructor = _dereq_(3); + +// This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) +var _window = + typeof window !== 'undefined' + ? window + : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; +var _Raven = _window.Raven; + +var Raven = new RavenConstructor(); + +/* + * Allow multiple versions of Raven to be installed. + * Strip Raven from the global context and returns the instance. + * + * @return {Raven} + */ +Raven.noConflict = function() { + _window.Raven = _Raven; + return Raven; +}; + +Raven.afterLoad(); + +module.exports = Raven; + +/** + * DISCLAIMER: + * + * Expose `Client` constructor for cases where user want to track multiple "sub-applications" in one larger app. + * It's not meant to be used by a wide audience, so pleaaase make sure that you know what you're doing before using it. + * Accidentally calling `install` multiple times, may result in an unexpected behavior that's very hard to debug. + * + * It's called `Client' to be in-line with Raven Node implementation. + * + * HOWTO: + * + * import Raven from 'raven-js'; + * + * const someAppReporter = new Raven.Client(); + * const someOtherAppReporter = new Raven.Client(); + * + * someAppReporter.config('__DSN__', { + * ...config goes here + * }); + * + * someOtherAppReporter.config('__OTHER_DSN__', { + * ...config goes here + * }); + * + * someAppReporter.captureMessage(...); + * someAppReporter.captureException(...); + * someAppReporter.captureBreadcrumb(...); + * + * someOtherAppReporter.captureMessage(...); + * someOtherAppReporter.captureException(...); + * someOtherAppReporter.captureBreadcrumb(...); + * + * It should "just work". + */ +module.exports.Client = RavenConstructor; + +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"3":3}],5:[function(_dereq_,module,exports){ +(function (global){ +var stringify = _dereq_(7); + +var _window = + typeof window !== 'undefined' + ? window + : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; + +function isObject(what) { + return typeof what === 'object' && what !== null; +} + +// Yanked from https://git.io/vS8DV re-used under CC0 +// with some tiny modifications +function isError(value) { + switch (Object.prototype.toString.call(value)) { + case '[object Error]': + return true; + case '[object Exception]': + return true; + case '[object DOMException]': + return true; + default: + return value instanceof Error; + } +} + +function isErrorEvent(value) { + return Object.prototype.toString.call(value) === '[object ErrorEvent]'; +} + +function isDOMError(value) { + return Object.prototype.toString.call(value) === '[object DOMError]'; +} + +function isDOMException(value) { + return Object.prototype.toString.call(value) === '[object DOMException]'; +} + +function isUndefined(what) { + return what === void 0; +} + +function isFunction(what) { + return typeof what === 'function'; +} + +function isPlainObject(what) { + return Object.prototype.toString.call(what) === '[object Object]'; +} + +function isString(what) { + return Object.prototype.toString.call(what) === '[object String]'; +} + +function isArray(what) { + return Object.prototype.toString.call(what) === '[object Array]'; +} + +function isEmptyObject(what) { + if (!isPlainObject(what)) return false; + + for (var _ in what) { + if (what.hasOwnProperty(_)) { + return false; + } + } + return true; +} + +function supportsErrorEvent() { + try { + new ErrorEvent(''); // eslint-disable-line no-new + return true; + } catch (e) { + return false; + } +} + +function supportsDOMError() { + try { + new DOMError(''); // eslint-disable-line no-new + return true; + } catch (e) { + return false; + } +} + +function supportsDOMException() { + try { + new DOMException(''); // eslint-disable-line no-new + return true; + } catch (e) { + return false; + } +} + +function supportsFetch() { + if (!('fetch' in _window)) return false; + + try { + new Headers(); // eslint-disable-line no-new + new Request(''); // eslint-disable-line no-new + new Response(); // eslint-disable-line no-new + return true; + } catch (e) { + return false; + } +} + +// Despite all stars in the sky saying that Edge supports old draft syntax, aka 'never', 'always', 'origin' and 'default +// https://caniuse.com/#feat=referrer-policy +// It doesn't. And it throw exception instead of ignoring this parameter... +// REF: https://github.com/getsentry/raven-js/issues/1233 +function supportsReferrerPolicy() { + if (!supportsFetch()) return false; + + try { + // eslint-disable-next-line no-new + new Request('pickleRick', { + referrerPolicy: 'origin' + }); + return true; + } catch (e) { + return false; + } +} + +function supportsPromiseRejectionEvent() { + return typeof PromiseRejectionEvent === 'function'; +} + +function wrappedCallback(callback) { + function dataCallback(data, original) { + var normalizedData = callback(data) || data; + if (original) { + return original(normalizedData) || normalizedData; + } + return normalizedData; + } + + return dataCallback; +} + +function each(obj, callback) { + var i, j; + + if (isUndefined(obj.length)) { + for (i in obj) { + if (hasKey(obj, i)) { + callback.call(null, i, obj[i]); + } + } + } else { + j = obj.length; + if (j) { + for (i = 0; i < j; i++) { + callback.call(null, i, obj[i]); + } + } + } +} + +function objectMerge(obj1, obj2) { + if (!obj2) { + return obj1; + } + each(obj2, function(key, value) { + obj1[key] = value; + }); + return obj1; +} + +/** + * This function is only used for react-native. + * react-native freezes object that have already been sent over the + * js bridge. We need this function in order to check if the object is frozen. + * So it's ok that objectFrozen returns false if Object.isFrozen is not + * supported because it's not relevant for other "platforms". See related issue: + * https://github.com/getsentry/react-native-sentry/issues/57 + */ +function objectFrozen(obj) { + if (!Object.isFrozen) { + return false; + } + return Object.isFrozen(obj); +} + +function truncate(str, max) { + if (typeof max !== 'number') { + throw new Error('2nd argument to `truncate` function should be a number'); + } + if (typeof str !== 'string' || max === 0) { + return str; + } + return str.length <= max ? str : str.substr(0, max) + '\u2026'; +} + +/** + * hasKey, a better form of hasOwnProperty + * Example: hasKey(MainHostObject, property) === true/false + * + * @param {Object} host object to check property + * @param {string} key to check + */ +function hasKey(object, key) { + return Object.prototype.hasOwnProperty.call(object, key); +} + +function joinRegExp(patterns) { + // Combine an array of regular expressions and strings into one large regexp + // Be mad. + var sources = [], + i = 0, + len = patterns.length, + pattern; + + for (; i < len; i++) { + pattern = patterns[i]; + if (isString(pattern)) { + // If it's a string, we need to escape it + // Taken from: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions + sources.push(pattern.replace(/([.*+?^=!:${}()|\[\]\/\\])/g, '\\$1')); + } else if (pattern && pattern.source) { + // If it's a regexp already, we want to extract the source + sources.push(pattern.source); + } + // Intentionally skip other cases + } + return new RegExp(sources.join('|'), 'i'); +} + +function urlencode(o) { + var pairs = []; + each(o, function(key, value) { + pairs.push(encodeURIComponent(key) + '=' + encodeURIComponent(value)); + }); + return pairs.join('&'); +} + +// borrowed from https://tools.ietf.org/html/rfc3986#appendix-B +// intentionally using regex and not href parsing trick because React Native and other +// environments where DOM might not be available +function parseUrl(url) { + if (typeof url !== 'string') return {}; + var match = url.match(/^(([^:\/?#]+):)?(\/\/([^\/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?$/); + + // coerce to undefined values to empty string so we don't get 'undefined' + var query = match[6] || ''; + var fragment = match[8] || ''; + return { + protocol: match[2], + host: match[4], + path: match[5], + relative: match[5] + query + fragment // everything minus origin + }; +} +function uuid4() { + var crypto = _window.crypto || _window.msCrypto; + + if (!isUndefined(crypto) && crypto.getRandomValues) { + // Use window.crypto API if available + // eslint-disable-next-line no-undef + var arr = new Uint16Array(8); + crypto.getRandomValues(arr); + + // set 4 in byte 7 + arr[3] = (arr[3] & 0xfff) | 0x4000; + // set 2 most significant bits of byte 9 to '10' + arr[4] = (arr[4] & 0x3fff) | 0x8000; + + var pad = function(num) { + var v = num.toString(16); + while (v.length < 4) { + v = '0' + v; + } + return v; + }; + + return ( + pad(arr[0]) + + pad(arr[1]) + + pad(arr[2]) + + pad(arr[3]) + + pad(arr[4]) + + pad(arr[5]) + + pad(arr[6]) + + pad(arr[7]) + ); + } else { + // http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/2117523#2117523 + return 'xxxxxxxxxxxx4xxxyxxxxxxxxxxxxxxx'.replace(/[xy]/g, function(c) { + var r = (Math.random() * 16) | 0, + v = c === 'x' ? r : (r & 0x3) | 0x8; + return v.toString(16); + }); + } +} + +/** + * Given a child DOM element, returns a query-selector statement describing that + * and its ancestors + * e.g. [HTMLElement] => body > div > input#foo.btn[name=baz] + * @param elem + * @returns {string} + */ +function htmlTreeAsString(elem) { + /* eslint no-extra-parens:0*/ + var MAX_TRAVERSE_HEIGHT = 5, + MAX_OUTPUT_LEN = 80, + out = [], + height = 0, + len = 0, + separator = ' > ', + sepLength = separator.length, + nextStr; + + while (elem && height++ < MAX_TRAVERSE_HEIGHT) { + nextStr = htmlElementAsString(elem); + // bail out if + // - nextStr is the 'html' element + // - the length of the string that would be created exceeds MAX_OUTPUT_LEN + // (ignore this limit if we are on the first iteration) + if ( + nextStr === 'html' || + (height > 1 && len + out.length * sepLength + nextStr.length >= MAX_OUTPUT_LEN) + ) { + break; + } + + out.push(nextStr); + + len += nextStr.length; + elem = elem.parentNode; + } + + return out.reverse().join(separator); +} + +/** + * Returns a simple, query-selector representation of a DOM element + * e.g. [HTMLElement] => input#foo.btn[name=baz] + * @param HTMLElement + * @returns {string} + */ +function htmlElementAsString(elem) { + var out = [], + className, + classes, + key, + attr, + i; + + if (!elem || !elem.tagName) { + return ''; + } + + out.push(elem.tagName.toLowerCase()); + if (elem.id) { + out.push('#' + elem.id); + } + + className = elem.className; + if (className && isString(className)) { + classes = className.split(/\s+/); + for (i = 0; i < classes.length; i++) { + out.push('.' + classes[i]); + } + } + var attrWhitelist = ['type', 'name', 'title', 'alt']; + for (i = 0; i < attrWhitelist.length; i++) { + key = attrWhitelist[i]; + attr = elem.getAttribute(key); + if (attr) { + out.push('[' + key + '="' + attr + '"]'); + } + } + return out.join(''); +} + +/** + * Returns true if either a OR b is truthy, but not both + */ +function isOnlyOneTruthy(a, b) { + return !!(!!a ^ !!b); +} + +/** + * Returns true if both parameters are undefined + */ +function isBothUndefined(a, b) { + return isUndefined(a) && isUndefined(b); +} + +/** + * Returns true if the two input exception interfaces have the same content + */ +function isSameException(ex1, ex2) { + if (isOnlyOneTruthy(ex1, ex2)) return false; + + ex1 = ex1.values[0]; + ex2 = ex2.values[0]; + + if (ex1.type !== ex2.type || ex1.value !== ex2.value) return false; + + // in case both stacktraces are undefined, we can't decide so default to false + if (isBothUndefined(ex1.stacktrace, ex2.stacktrace)) return false; + + return isSameStacktrace(ex1.stacktrace, ex2.stacktrace); +} + +/** + * Returns true if the two input stack trace interfaces have the same content + */ +function isSameStacktrace(stack1, stack2) { + if (isOnlyOneTruthy(stack1, stack2)) return false; + + var frames1 = stack1.frames; + var frames2 = stack2.frames; + + // Exit early if frame count differs + if (frames1.length !== frames2.length) return false; + + // Iterate through every frame; bail out if anything differs + var a, b; + for (var i = 0; i < frames1.length; i++) { + a = frames1[i]; + b = frames2[i]; + if ( + a.filename !== b.filename || + a.lineno !== b.lineno || + a.colno !== b.colno || + a['function'] !== b['function'] + ) + return false; + } + return true; +} + +/** + * Polyfill a method + * @param obj object e.g. `document` + * @param name method name present on object e.g. `addEventListener` + * @param replacement replacement function + * @param track {optional} record instrumentation to an array + */ +function fill(obj, name, replacement, track) { + if (obj == null) return; + var orig = obj[name]; + obj[name] = replacement(orig); + obj[name].__raven__ = true; + obj[name].__orig__ = orig; + if (track) { + track.push([obj, name, orig]); + } +} + +/** + * Join values in array + * @param input array of values to be joined together + * @param delimiter string to be placed in-between values + * @returns {string} + */ +function safeJoin(input, delimiter) { + if (!isArray(input)) return ''; + + var output = []; + + for (var i = 0; i < input.length; i++) { + try { + output.push(String(input[i])); + } catch (e) { + output.push('[value cannot be serialized]'); + } + } + + return output.join(delimiter); +} + +// Default Node.js REPL depth +var MAX_SERIALIZE_EXCEPTION_DEPTH = 3; +// 50kB, as 100kB is max payload size, so half sounds reasonable +var MAX_SERIALIZE_EXCEPTION_SIZE = 50 * 1024; +var MAX_SERIALIZE_KEYS_LENGTH = 40; + +function utf8Length(value) { + return ~-encodeURI(value).split(/%..|./).length; +} + +function jsonSize(value) { + return utf8Length(JSON.stringify(value)); +} + +function serializeValue(value) { + if (typeof value === 'string') { + var maxLength = 40; + return truncate(value, maxLength); + } else if ( + typeof value === 'number' || + typeof value === 'boolean' || + typeof value === 'undefined' + ) { + return value; + } + + var type = Object.prototype.toString.call(value); + + // Node.js REPL notation + if (type === '[object Object]') return '[Object]'; + if (type === '[object Array]') return '[Array]'; + if (type === '[object Function]') + return value.name ? '[Function: ' + value.name + ']' : '[Function]'; + + return value; +} + +function serializeObject(value, depth) { + if (depth === 0) return serializeValue(value); + + if (isPlainObject(value)) { + return Object.keys(value).reduce(function(acc, key) { + acc[key] = serializeObject(value[key], depth - 1); + return acc; + }, {}); + } else if (Array.isArray(value)) { + return value.map(function(val) { + return serializeObject(val, depth - 1); + }); + } + + return serializeValue(value); +} + +function serializeException(ex, depth, maxSize) { + if (!isPlainObject(ex)) return ex; + + depth = typeof depth !== 'number' ? MAX_SERIALIZE_EXCEPTION_DEPTH : depth; + maxSize = typeof depth !== 'number' ? MAX_SERIALIZE_EXCEPTION_SIZE : maxSize; + + var serialized = serializeObject(ex, depth); + + if (jsonSize(stringify(serialized)) > maxSize) { + return serializeException(ex, depth - 1); + } + + return serialized; +} + +function serializeKeysForMessage(keys, maxLength) { + if (typeof keys === 'number' || typeof keys === 'string') return keys.toString(); + if (!Array.isArray(keys)) return ''; + + keys = keys.filter(function(key) { + return typeof key === 'string'; + }); + if (keys.length === 0) return '[object has no keys]'; + + maxLength = typeof maxLength !== 'number' ? MAX_SERIALIZE_KEYS_LENGTH : maxLength; + if (keys[0].length >= maxLength) return keys[0]; + + for (var usedKeys = keys.length; usedKeys > 0; usedKeys--) { + var serialized = keys.slice(0, usedKeys).join(', '); + if (serialized.length > maxLength) continue; + if (usedKeys === keys.length) return serialized; + return serialized + '\u2026'; + } + + return ''; +} + +function sanitize(input, sanitizeKeys) { + if (!isArray(sanitizeKeys) || (isArray(sanitizeKeys) && sanitizeKeys.length === 0)) + return input; + + var sanitizeRegExp = joinRegExp(sanitizeKeys); + var sanitizeMask = '********'; + var safeInput; + + try { + safeInput = JSON.parse(stringify(input)); + } catch (o_O) { + return input; + } + + function sanitizeWorker(workerInput) { + if (isArray(workerInput)) { + return workerInput.map(function(val) { + return sanitizeWorker(val); + }); + } + + if (isPlainObject(workerInput)) { + return Object.keys(workerInput).reduce(function(acc, k) { + if (sanitizeRegExp.test(k)) { + acc[k] = sanitizeMask; + } else { + acc[k] = sanitizeWorker(workerInput[k]); + } + return acc; + }, {}); + } + + return workerInput; + } + + return sanitizeWorker(safeInput); +} + +module.exports = { + isObject: isObject, + isError: isError, + isErrorEvent: isErrorEvent, + isDOMError: isDOMError, + isDOMException: isDOMException, + isUndefined: isUndefined, + isFunction: isFunction, + isPlainObject: isPlainObject, + isString: isString, + isArray: isArray, + isEmptyObject: isEmptyObject, + supportsErrorEvent: supportsErrorEvent, + supportsDOMError: supportsDOMError, + supportsDOMException: supportsDOMException, + supportsFetch: supportsFetch, + supportsReferrerPolicy: supportsReferrerPolicy, + supportsPromiseRejectionEvent: supportsPromiseRejectionEvent, + wrappedCallback: wrappedCallback, + each: each, + objectMerge: objectMerge, + truncate: truncate, + objectFrozen: objectFrozen, + hasKey: hasKey, + joinRegExp: joinRegExp, + urlencode: urlencode, + uuid4: uuid4, + htmlTreeAsString: htmlTreeAsString, + htmlElementAsString: htmlElementAsString, + isSameException: isSameException, + isSameStacktrace: isSameStacktrace, + parseUrl: parseUrl, + fill: fill, + safeJoin: safeJoin, + serializeException: serializeException, + serializeKeysForMessage: serializeKeysForMessage, + sanitize: sanitize +}; + +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"7":7}],6:[function(_dereq_,module,exports){ +(function (global){ +var utils = _dereq_(5); + +/* + TraceKit - Cross brower stack traces + + This was originally forked from github.com/occ/TraceKit, but has since been + largely re-written and is now maintained as part of raven-js. Tests for + this are in test/vendor. + + MIT license +*/ + +var TraceKit = { + collectWindowErrors: true, + debug: false +}; + +// This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) +var _window = + typeof window !== 'undefined' + ? window + : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; + +// global reference to slice +var _slice = [].slice; +var UNKNOWN_FUNCTION = '?'; + +// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error#Error_types +var ERROR_TYPES_RE = /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/; + +function getLocationHref() { + if (typeof document === 'undefined' || document.location == null) return ''; + return document.location.href; +} + +function getLocationOrigin() { + if (typeof document === 'undefined' || document.location == null) return ''; + + // Oh dear IE10... + if (!document.location.origin) { + document.location.origin = + document.location.protocol + + '//' + + document.location.hostname + + (document.location.port ? ':' + document.location.port : ''); + } + + return document.location.origin; +} + +/** + * TraceKit.report: cross-browser processing of unhandled exceptions + * + * Syntax: + * TraceKit.report.subscribe(function(stackInfo) { ... }) + * TraceKit.report.unsubscribe(function(stackInfo) { ... }) + * TraceKit.report(exception) + * try { ...code... } catch(ex) { TraceKit.report(ex); } + * + * Supports: + * - Firefox: full stack trace with line numbers, plus column number + * on top frame; column number is not guaranteed + * - Opera: full stack trace with line and column numbers + * - Chrome: full stack trace with line and column numbers + * - Safari: line and column number for the top frame only; some frames + * may be missing, and column number is not guaranteed + * - IE: line and column number for the top frame only; some frames + * may be missing, and column number is not guaranteed + * + * In theory, TraceKit should work on all of the following versions: + * - IE5.5+ (only 8.0 tested) + * - Firefox 0.9+ (only 3.5+ tested) + * - Opera 7+ (only 10.50 tested; versions 9 and earlier may require + * Exceptions Have Stacktrace to be enabled in opera:config) + * - Safari 3+ (only 4+ tested) + * - Chrome 1+ (only 5+ tested) + * - Konqueror 3.5+ (untested) + * + * Requires TraceKit.computeStackTrace. + * + * Tries to catch all unhandled exceptions and report them to the + * subscribed handlers. Please note that TraceKit.report will rethrow the + * exception. This is REQUIRED in order to get a useful stack trace in IE. + * If the exception does not reach the top of the browser, you will only + * get a stack trace from the point where TraceKit.report was called. + * + * Handlers receive a stackInfo object as described in the + * TraceKit.computeStackTrace docs. + */ +TraceKit.report = (function reportModuleWrapper() { + var handlers = [], + lastArgs = null, + lastException = null, + lastExceptionStack = null; + + /** + * Add a crash handler. + * @param {Function} handler + */ + function subscribe(handler) { + installGlobalHandler(); + handlers.push(handler); + } + + /** + * Remove a crash handler. + * @param {Function} handler + */ + function unsubscribe(handler) { + for (var i = handlers.length - 1; i >= 0; --i) { + if (handlers[i] === handler) { + handlers.splice(i, 1); + } + } + } + + /** + * Remove all crash handlers. + */ + function unsubscribeAll() { + uninstallGlobalHandler(); + handlers = []; + } + + /** + * Dispatch stack information to all handlers. + * @param {Object.} stack + */ + function notifyHandlers(stack, isWindowError) { + var exception = null; + if (isWindowError && !TraceKit.collectWindowErrors) { + return; + } + for (var i in handlers) { + if (handlers.hasOwnProperty(i)) { + try { + handlers[i].apply(null, [stack].concat(_slice.call(arguments, 2))); + } catch (inner) { + exception = inner; + } + } + } + + if (exception) { + throw exception; + } + } + + var _oldOnerrorHandler, _onErrorHandlerInstalled; + + /** + * Ensures all global unhandled exceptions are recorded. + * Supported by Gecko and IE. + * @param {string} msg Error message. + * @param {string} url URL of script that generated the exception. + * @param {(number|string)} lineNo The line number at which the error + * occurred. + * @param {?(number|string)} colNo The column number at which the error + * occurred. + * @param {?Error} ex The actual Error object. + */ + function traceKitWindowOnError(msg, url, lineNo, colNo, ex) { + var stack = null; + // If 'ex' is ErrorEvent, get real Error from inside + var exception = utils.isErrorEvent(ex) ? ex.error : ex; + // If 'msg' is ErrorEvent, get real message from inside + var message = utils.isErrorEvent(msg) ? msg.message : msg; + + if (lastExceptionStack) { + TraceKit.computeStackTrace.augmentStackTraceWithInitialElement( + lastExceptionStack, + url, + lineNo, + message + ); + processLastException(); + } else if (exception && utils.isError(exception)) { + // non-string `exception` arg; attempt to extract stack trace + + // New chrome and blink send along a real error object + // Let's just report that like a normal error. + // See: https://mikewest.org/2013/08/debugging-runtime-errors-with-window-onerror + stack = TraceKit.computeStackTrace(exception); + notifyHandlers(stack, true); + } else { + var location = { + url: url, + line: lineNo, + column: colNo + }; + + var name = undefined; + var groups; + + if ({}.toString.call(message) === '[object String]') { + var groups = message.match(ERROR_TYPES_RE); + if (groups) { + name = groups[1]; + message = groups[2]; + } + } + + location.func = UNKNOWN_FUNCTION; + + stack = { + name: name, + message: message, + url: getLocationHref(), + stack: [location] + }; + notifyHandlers(stack, true); + } + + if (_oldOnerrorHandler) { + return _oldOnerrorHandler.apply(this, arguments); + } + + return false; + } + + function installGlobalHandler() { + if (_onErrorHandlerInstalled) { + return; + } + _oldOnerrorHandler = _window.onerror; + _window.onerror = traceKitWindowOnError; + _onErrorHandlerInstalled = true; + } + + function uninstallGlobalHandler() { + if (!_onErrorHandlerInstalled) { + return; + } + _window.onerror = _oldOnerrorHandler; + _onErrorHandlerInstalled = false; + _oldOnerrorHandler = undefined; + } + + function processLastException() { + var _lastExceptionStack = lastExceptionStack, + _lastArgs = lastArgs; + lastArgs = null; + lastExceptionStack = null; + lastException = null; + notifyHandlers.apply(null, [_lastExceptionStack, false].concat(_lastArgs)); + } + + /** + * Reports an unhandled Error to TraceKit. + * @param {Error} ex + * @param {?boolean} rethrow If false, do not re-throw the exception. + * Only used for window.onerror to not cause an infinite loop of + * rethrowing. + */ + function report(ex, rethrow) { + var args = _slice.call(arguments, 1); + if (lastExceptionStack) { + if (lastException === ex) { + return; // already caught by an inner catch block, ignore + } else { + processLastException(); + } + } + + var stack = TraceKit.computeStackTrace(ex); + lastExceptionStack = stack; + lastException = ex; + lastArgs = args; + + // If the stack trace is incomplete, wait for 2 seconds for + // slow slow IE to see if onerror occurs or not before reporting + // this exception; otherwise, we will end up with an incomplete + // stack trace + setTimeout(function() { + if (lastException === ex) { + processLastException(); + } + }, stack.incomplete ? 2000 : 0); + + if (rethrow !== false) { + throw ex; // re-throw to propagate to the top level (and cause window.onerror) + } + } + + report.subscribe = subscribe; + report.unsubscribe = unsubscribe; + report.uninstall = unsubscribeAll; + return report; +})(); + +/** + * TraceKit.computeStackTrace: cross-browser stack traces in JavaScript + * + * Syntax: + * s = TraceKit.computeStackTrace(exception) // consider using TraceKit.report instead (see below) + * Returns: + * s.name - exception name + * s.message - exception message + * s.stack[i].url - JavaScript or HTML file URL + * s.stack[i].func - function name, or empty for anonymous functions (if guessing did not work) + * s.stack[i].args - arguments passed to the function, if known + * s.stack[i].line - line number, if known + * s.stack[i].column - column number, if known + * + * Supports: + * - Firefox: full stack trace with line numbers and unreliable column + * number on top frame + * - Opera 10: full stack trace with line and column numbers + * - Opera 9-: full stack trace with line numbers + * - Chrome: full stack trace with line and column numbers + * - Safari: line and column number for the topmost stacktrace element + * only + * - IE: no line numbers whatsoever + * + * Tries to guess names of anonymous functions by looking for assignments + * in the source code. In IE and Safari, we have to guess source file names + * by searching for function bodies inside all page scripts. This will not + * work for scripts that are loaded cross-domain. + * Here be dragons: some function names may be guessed incorrectly, and + * duplicate functions may be mismatched. + * + * TraceKit.computeStackTrace should only be used for tracing purposes. + * Logging of unhandled exceptions should be done with TraceKit.report, + * which builds on top of TraceKit.computeStackTrace and provides better + * IE support by utilizing the window.onerror event to retrieve information + * about the top of the stack. + * + * Note: In IE and Safari, no stack trace is recorded on the Error object, + * so computeStackTrace instead walks its *own* chain of callers. + * This means that: + * * in Safari, some methods may be missing from the stack trace; + * * in IE, the topmost function in the stack trace will always be the + * caller of computeStackTrace. + * + * This is okay for tracing (because you are likely to be calling + * computeStackTrace from the function you want to be the topmost element + * of the stack trace anyway), but not okay for logging unhandled + * exceptions (because your catch block will likely be far away from the + * inner function that actually caused the exception). + * + */ +TraceKit.computeStackTrace = (function computeStackTraceWrapper() { + // Contents of Exception in various browsers. + // + // SAFARI: + // ex.message = Can't find variable: qq + // ex.line = 59 + // ex.sourceId = 580238192 + // ex.sourceURL = http://... + // ex.expressionBeginOffset = 96 + // ex.expressionCaretOffset = 98 + // ex.expressionEndOffset = 98 + // ex.name = ReferenceError + // + // FIREFOX: + // ex.message = qq is not defined + // ex.fileName = http://... + // ex.lineNumber = 59 + // ex.columnNumber = 69 + // ex.stack = ...stack trace... (see the example below) + // ex.name = ReferenceError + // + // CHROME: + // ex.message = qq is not defined + // ex.name = ReferenceError + // ex.type = not_defined + // ex.arguments = ['aa'] + // ex.stack = ...stack trace... + // + // INTERNET EXPLORER: + // ex.message = ... + // ex.name = ReferenceError + // + // OPERA: + // ex.message = ...message... (see the example below) + // ex.name = ReferenceError + // ex.opera#sourceloc = 11 (pretty much useless, duplicates the info in ex.message) + // ex.stacktrace = n/a; see 'opera:config#UserPrefs|Exceptions Have Stacktrace' + + /** + * Computes stack trace information from the stack property. + * Chrome and Gecko use this property. + * @param {Error} ex + * @return {?Object.} Stack trace information. + */ + function computeStackTraceFromStackProp(ex) { + if (typeof ex.stack === 'undefined' || !ex.stack) return; + + var chrome = /^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i; + var winjs = /^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i; + // NOTE: blob urls are now supposed to always have an origin, therefore it's format + // which is `blob:http://url/path/with-some-uuid`, is matched by `blob.*?:\/` as well + var gecko = /^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i; + // Used to additionally parse URL/line/column from eval frames + var geckoEval = /(\S+) line (\d+)(?: > eval line \d+)* > eval/i; + var chromeEval = /\((\S*)(?::(\d+))(?::(\d+))\)/; + var lines = ex.stack.split('\n'); + var stack = []; + var submatch; + var parts; + var element; + var reference = /^(.*) is undefined$/.exec(ex.message); + + for (var i = 0, j = lines.length; i < j; ++i) { + if ((parts = chrome.exec(lines[i]))) { + var isNative = parts[2] && parts[2].indexOf('native') === 0; // start of line + var isEval = parts[2] && parts[2].indexOf('eval') === 0; // start of line + if (isEval && (submatch = chromeEval.exec(parts[2]))) { + // throw out eval line/column and use top-most line/column number + parts[2] = submatch[1]; // url + parts[3] = submatch[2]; // line + parts[4] = submatch[3]; // column + } + element = { + url: !isNative ? parts[2] : null, + func: parts[1] || UNKNOWN_FUNCTION, + args: isNative ? [parts[2]] : [], + line: parts[3] ? +parts[3] : null, + column: parts[4] ? +parts[4] : null + }; + } else if ((parts = winjs.exec(lines[i]))) { + element = { + url: parts[2], + func: parts[1] || UNKNOWN_FUNCTION, + args: [], + line: +parts[3], + column: parts[4] ? +parts[4] : null + }; + } else if ((parts = gecko.exec(lines[i]))) { + var isEval = parts[3] && parts[3].indexOf(' > eval') > -1; + if (isEval && (submatch = geckoEval.exec(parts[3]))) { + // throw out eval line/column and use top-most line number + parts[3] = submatch[1]; + parts[4] = submatch[2]; + parts[5] = null; // no column when eval + } else if (i === 0 && !parts[5] && typeof ex.columnNumber !== 'undefined') { + // FireFox uses this awesome columnNumber property for its top frame + // Also note, Firefox's column number is 0-based and everything else expects 1-based, + // so adding 1 + // NOTE: this hack doesn't work if top-most frame is eval + stack[0].column = ex.columnNumber + 1; + } + element = { + url: parts[3], + func: parts[1] || UNKNOWN_FUNCTION, + args: parts[2] ? parts[2].split(',') : [], + line: parts[4] ? +parts[4] : null, + column: parts[5] ? +parts[5] : null + }; + } else { + continue; + } + + if (!element.func && element.line) { + element.func = UNKNOWN_FUNCTION; + } + + if (element.url && element.url.substr(0, 5) === 'blob:') { + // Special case for handling JavaScript loaded into a blob. + // We use a synchronous AJAX request here as a blob is already in + // memory - it's not making a network request. This will generate a warning + // in the browser console, but there has already been an error so that's not + // that much of an issue. + var xhr = new XMLHttpRequest(); + xhr.open('GET', element.url, false); + xhr.send(null); + + // If we failed to download the source, skip this patch + if (xhr.status === 200) { + var source = xhr.responseText || ''; + + // We trim the source down to the last 300 characters as sourceMappingURL is always at the end of the file. + // Why 300? To be in line with: https://github.com/getsentry/sentry/blob/4af29e8f2350e20c28a6933354e4f42437b4ba42/src/sentry/lang/javascript/processor.py#L164-L175 + source = source.slice(-300); + + // Now we dig out the source map URL + var sourceMaps = source.match(/\/\/# sourceMappingURL=(.*)$/); + + // If we don't find a source map comment or we find more than one, continue on to the next element. + if (sourceMaps) { + var sourceMapAddress = sourceMaps[1]; + + // Now we check to see if it's a relative URL. + // If it is, convert it to an absolute one. + if (sourceMapAddress.charAt(0) === '~') { + sourceMapAddress = getLocationOrigin() + sourceMapAddress.slice(1); + } + + // Now we strip the '.map' off of the end of the URL and update the + // element so that Sentry can match the map to the blob. + element.url = sourceMapAddress.slice(0, -4); + } + } + } + + stack.push(element); + } + + if (!stack.length) { + return null; + } + + return { + name: ex.name, + message: ex.message, + url: getLocationHref(), + stack: stack + }; + } + + /** + * Adds information about the first frame to incomplete stack traces. + * Safari and IE require this to get complete data on the first frame. + * @param {Object.} stackInfo Stack trace information from + * one of the compute* methods. + * @param {string} url The URL of the script that caused an error. + * @param {(number|string)} lineNo The line number of the script that + * caused an error. + * @param {string=} message The error generated by the browser, which + * hopefully contains the name of the object that caused the error. + * @return {boolean} Whether or not the stack information was + * augmented. + */ + function augmentStackTraceWithInitialElement(stackInfo, url, lineNo, message) { + var initial = { + url: url, + line: lineNo + }; + + if (initial.url && initial.line) { + stackInfo.incomplete = false; + + if (!initial.func) { + initial.func = UNKNOWN_FUNCTION; + } + + if (stackInfo.stack.length > 0) { + if (stackInfo.stack[0].url === initial.url) { + if (stackInfo.stack[0].line === initial.line) { + return false; // already in stack trace + } else if ( + !stackInfo.stack[0].line && + stackInfo.stack[0].func === initial.func + ) { + stackInfo.stack[0].line = initial.line; + return false; + } + } + } + + stackInfo.stack.unshift(initial); + stackInfo.partial = true; + return true; + } else { + stackInfo.incomplete = true; + } + + return false; + } + + /** + * Computes stack trace information by walking the arguments.caller + * chain at the time the exception occurred. This will cause earlier + * frames to be missed but is the only way to get any stack trace in + * Safari and IE. The top frame is restored by + * {@link augmentStackTraceWithInitialElement}. + * @param {Error} ex + * @return {?Object.} Stack trace information. + */ + function computeStackTraceByWalkingCallerChain(ex, depth) { + var functionName = /function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i, + stack = [], + funcs = {}, + recursion = false, + parts, + item, + source; + + for ( + var curr = computeStackTraceByWalkingCallerChain.caller; + curr && !recursion; + curr = curr.caller + ) { + if (curr === computeStackTrace || curr === TraceKit.report) { + // console.log('skipping internal function'); + continue; + } + + item = { + url: null, + func: UNKNOWN_FUNCTION, + line: null, + column: null + }; + + if (curr.name) { + item.func = curr.name; + } else if ((parts = functionName.exec(curr.toString()))) { + item.func = parts[1]; + } + + if (typeof item.func === 'undefined') { + try { + item.func = parts.input.substring(0, parts.input.indexOf('{')); + } catch (e) {} + } + + if (funcs['' + curr]) { + recursion = true; + } else { + funcs['' + curr] = true; + } + + stack.push(item); + } + + if (depth) { + // console.log('depth is ' + depth); + // console.log('stack is ' + stack.length); + stack.splice(0, depth); + } + + var result = { + name: ex.name, + message: ex.message, + url: getLocationHref(), + stack: stack + }; + augmentStackTraceWithInitialElement( + result, + ex.sourceURL || ex.fileName, + ex.line || ex.lineNumber, + ex.message || ex.description + ); + return result; + } + + /** + * Computes a stack trace for an exception. + * @param {Error} ex + * @param {(string|number)=} depth + */ + function computeStackTrace(ex, depth) { + var stack = null; + depth = depth == null ? 0 : +depth; + + try { + stack = computeStackTraceFromStackProp(ex); + if (stack) { + return stack; + } + } catch (e) { + if (TraceKit.debug) { + throw e; + } + } + + try { + stack = computeStackTraceByWalkingCallerChain(ex, depth + 1); + if (stack) { + return stack; + } + } catch (e) { + if (TraceKit.debug) { + throw e; + } + } + return { + name: ex.name, + message: ex.message, + url: getLocationHref() + }; + } + + computeStackTrace.augmentStackTraceWithInitialElement = augmentStackTraceWithInitialElement; + computeStackTrace.computeStackTraceFromStackProp = computeStackTraceFromStackProp; + + return computeStackTrace; +})(); + +module.exports = TraceKit; + +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"5":5}],7:[function(_dereq_,module,exports){ +/* + json-stringify-safe + Like JSON.stringify, but doesn't throw on circular references. + + Originally forked from https://github.com/isaacs/json-stringify-safe + version 5.0.1 on 3/8/2017 and modified to handle Errors serialization + and IE8 compatibility. Tests for this are in test/vendor. + + ISC license: https://github.com/isaacs/json-stringify-safe/blob/master/LICENSE +*/ + +exports = module.exports = stringify; +exports.getSerialize = serializer; + +function indexOf(haystack, needle) { + for (var i = 0; i < haystack.length; ++i) { + if (haystack[i] === needle) return i; + } + return -1; +} + +function stringify(obj, replacer, spaces, cycleReplacer) { + return JSON.stringify(obj, serializer(replacer, cycleReplacer), spaces); +} + +// https://github.com/ftlabs/js-abbreviate/blob/fa709e5f139e7770a71827b1893f22418097fbda/index.js#L95-L106 +function stringifyError(value) { + var err = { + // These properties are implemented as magical getters and don't show up in for in + stack: value.stack, + message: value.message, + name: value.name + }; + + for (var i in value) { + if (Object.prototype.hasOwnProperty.call(value, i)) { + err[i] = value[i]; + } + } + + return err; +} + +function serializer(replacer, cycleReplacer) { + var stack = []; + var keys = []; + + if (cycleReplacer == null) { + cycleReplacer = function(key, value) { + if (stack[0] === value) { + return '[Circular ~]'; + } + return '[Circular ~.' + keys.slice(0, indexOf(stack, value)).join('.') + ']'; + }; + } + + return function(key, value) { + if (stack.length > 0) { + var thisPos = indexOf(stack, this); + ~thisPos ? stack.splice(thisPos + 1) : stack.push(this); + ~thisPos ? keys.splice(thisPos, Infinity, key) : keys.push(key); + + if (~indexOf(stack, value)) { + value = cycleReplacer.call(this, key, value); + } + } else { + stack.push(value); + } + + return replacer == null + ? value instanceof Error ? stringifyError(value) : value + : replacer.call(this, key, value); + }; +} + +},{}],8:[function(_dereq_,module,exports){ +/* + * JavaScript MD5 + * https://github.com/blueimp/JavaScript-MD5 + * + * Copyright 2011, Sebastian Tschan + * https://blueimp.net + * + * Licensed under the MIT license: + * https://opensource.org/licenses/MIT + * + * Based on + * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message + * Digest Algorithm, as defined in RFC 1321. + * Version 2.2 Copyright (C) Paul Johnston 1999 - 2009 + * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet + * Distributed under the BSD License + * See http://pajhome.org.uk/crypt/md5 for more info. + */ + +/* +* Add integers, wrapping at 2^32. This uses 16-bit operations internally +* to work around bugs in some JS interpreters. +*/ +function safeAdd(x, y) { + var lsw = (x & 0xffff) + (y & 0xffff); + var msw = (x >> 16) + (y >> 16) + (lsw >> 16); + return (msw << 16) | (lsw & 0xffff); +} + +/* +* Bitwise rotate a 32-bit number to the left. +*/ +function bitRotateLeft(num, cnt) { + return (num << cnt) | (num >>> (32 - cnt)); +} + +/* +* These functions implement the four basic operations the algorithm uses. +*/ +function md5cmn(q, a, b, x, s, t) { + return safeAdd(bitRotateLeft(safeAdd(safeAdd(a, q), safeAdd(x, t)), s), b); +} +function md5ff(a, b, c, d, x, s, t) { + return md5cmn((b & c) | (~b & d), a, b, x, s, t); +} +function md5gg(a, b, c, d, x, s, t) { + return md5cmn((b & d) | (c & ~d), a, b, x, s, t); +} +function md5hh(a, b, c, d, x, s, t) { + return md5cmn(b ^ c ^ d, a, b, x, s, t); +} +function md5ii(a, b, c, d, x, s, t) { + return md5cmn(c ^ (b | ~d), a, b, x, s, t); +} + +/* +* Calculate the MD5 of an array of little-endian words, and a bit length. +*/ +function binlMD5(x, len) { + /* append padding */ + x[len >> 5] |= 0x80 << (len % 32); + x[(((len + 64) >>> 9) << 4) + 14] = len; + + var i; + var olda; + var oldb; + var oldc; + var oldd; + var a = 1732584193; + var b = -271733879; + var c = -1732584194; + var d = 271733878; + + for (i = 0; i < x.length; i += 16) { + olda = a; + oldb = b; + oldc = c; + oldd = d; + + a = md5ff(a, b, c, d, x[i], 7, -680876936); + d = md5ff(d, a, b, c, x[i + 1], 12, -389564586); + c = md5ff(c, d, a, b, x[i + 2], 17, 606105819); + b = md5ff(b, c, d, a, x[i + 3], 22, -1044525330); + a = md5ff(a, b, c, d, x[i + 4], 7, -176418897); + d = md5ff(d, a, b, c, x[i + 5], 12, 1200080426); + c = md5ff(c, d, a, b, x[i + 6], 17, -1473231341); + b = md5ff(b, c, d, a, x[i + 7], 22, -45705983); + a = md5ff(a, b, c, d, x[i + 8], 7, 1770035416); + d = md5ff(d, a, b, c, x[i + 9], 12, -1958414417); + c = md5ff(c, d, a, b, x[i + 10], 17, -42063); + b = md5ff(b, c, d, a, x[i + 11], 22, -1990404162); + a = md5ff(a, b, c, d, x[i + 12], 7, 1804603682); + d = md5ff(d, a, b, c, x[i + 13], 12, -40341101); + c = md5ff(c, d, a, b, x[i + 14], 17, -1502002290); + b = md5ff(b, c, d, a, x[i + 15], 22, 1236535329); + + a = md5gg(a, b, c, d, x[i + 1], 5, -165796510); + d = md5gg(d, a, b, c, x[i + 6], 9, -1069501632); + c = md5gg(c, d, a, b, x[i + 11], 14, 643717713); + b = md5gg(b, c, d, a, x[i], 20, -373897302); + a = md5gg(a, b, c, d, x[i + 5], 5, -701558691); + d = md5gg(d, a, b, c, x[i + 10], 9, 38016083); + c = md5gg(c, d, a, b, x[i + 15], 14, -660478335); + b = md5gg(b, c, d, a, x[i + 4], 20, -405537848); + a = md5gg(a, b, c, d, x[i + 9], 5, 568446438); + d = md5gg(d, a, b, c, x[i + 14], 9, -1019803690); + c = md5gg(c, d, a, b, x[i + 3], 14, -187363961); + b = md5gg(b, c, d, a, x[i + 8], 20, 1163531501); + a = md5gg(a, b, c, d, x[i + 13], 5, -1444681467); + d = md5gg(d, a, b, c, x[i + 2], 9, -51403784); + c = md5gg(c, d, a, b, x[i + 7], 14, 1735328473); + b = md5gg(b, c, d, a, x[i + 12], 20, -1926607734); + + a = md5hh(a, b, c, d, x[i + 5], 4, -378558); + d = md5hh(d, a, b, c, x[i + 8], 11, -2022574463); + c = md5hh(c, d, a, b, x[i + 11], 16, 1839030562); + b = md5hh(b, c, d, a, x[i + 14], 23, -35309556); + a = md5hh(a, b, c, d, x[i + 1], 4, -1530992060); + d = md5hh(d, a, b, c, x[i + 4], 11, 1272893353); + c = md5hh(c, d, a, b, x[i + 7], 16, -155497632); + b = md5hh(b, c, d, a, x[i + 10], 23, -1094730640); + a = md5hh(a, b, c, d, x[i + 13], 4, 681279174); + d = md5hh(d, a, b, c, x[i], 11, -358537222); + c = md5hh(c, d, a, b, x[i + 3], 16, -722521979); + b = md5hh(b, c, d, a, x[i + 6], 23, 76029189); + a = md5hh(a, b, c, d, x[i + 9], 4, -640364487); + d = md5hh(d, a, b, c, x[i + 12], 11, -421815835); + c = md5hh(c, d, a, b, x[i + 15], 16, 530742520); + b = md5hh(b, c, d, a, x[i + 2], 23, -995338651); + + a = md5ii(a, b, c, d, x[i], 6, -198630844); + d = md5ii(d, a, b, c, x[i + 7], 10, 1126891415); + c = md5ii(c, d, a, b, x[i + 14], 15, -1416354905); + b = md5ii(b, c, d, a, x[i + 5], 21, -57434055); + a = md5ii(a, b, c, d, x[i + 12], 6, 1700485571); + d = md5ii(d, a, b, c, x[i + 3], 10, -1894986606); + c = md5ii(c, d, a, b, x[i + 10], 15, -1051523); + b = md5ii(b, c, d, a, x[i + 1], 21, -2054922799); + a = md5ii(a, b, c, d, x[i + 8], 6, 1873313359); + d = md5ii(d, a, b, c, x[i + 15], 10, -30611744); + c = md5ii(c, d, a, b, x[i + 6], 15, -1560198380); + b = md5ii(b, c, d, a, x[i + 13], 21, 1309151649); + a = md5ii(a, b, c, d, x[i + 4], 6, -145523070); + d = md5ii(d, a, b, c, x[i + 11], 10, -1120210379); + c = md5ii(c, d, a, b, x[i + 2], 15, 718787259); + b = md5ii(b, c, d, a, x[i + 9], 21, -343485551); + + a = safeAdd(a, olda); + b = safeAdd(b, oldb); + c = safeAdd(c, oldc); + d = safeAdd(d, oldd); + } + return [a, b, c, d]; +} + +/* +* Convert an array of little-endian words to a string +*/ +function binl2rstr(input) { + var i; + var output = ''; + var length32 = input.length * 32; + for (i = 0; i < length32; i += 8) { + output += String.fromCharCode((input[i >> 5] >>> (i % 32)) & 0xff); + } + return output; +} + +/* +* Convert a raw string to an array of little-endian words +* Characters >255 have their high-byte silently ignored. +*/ +function rstr2binl(input) { + var i; + var output = []; + output[(input.length >> 2) - 1] = undefined; + for (i = 0; i < output.length; i += 1) { + output[i] = 0; + } + var length8 = input.length * 8; + for (i = 0; i < length8; i += 8) { + output[i >> 5] |= (input.charCodeAt(i / 8) & 0xff) << (i % 32); + } + return output; +} + +/* +* Calculate the MD5 of a raw string +*/ +function rstrMD5(s) { + return binl2rstr(binlMD5(rstr2binl(s), s.length * 8)); +} + +/* +* Calculate the HMAC-MD5, of a key and some data (raw strings) +*/ +function rstrHMACMD5(key, data) { + var i; + var bkey = rstr2binl(key); + var ipad = []; + var opad = []; + var hash; + ipad[15] = opad[15] = undefined; + if (bkey.length > 16) { + bkey = binlMD5(bkey, key.length * 8); + } + for (i = 0; i < 16; i += 1) { + ipad[i] = bkey[i] ^ 0x36363636; + opad[i] = bkey[i] ^ 0x5c5c5c5c; + } + hash = binlMD5(ipad.concat(rstr2binl(data)), 512 + data.length * 8); + return binl2rstr(binlMD5(opad.concat(hash), 512 + 128)); +} + +/* +* Convert a raw string to a hex string +*/ +function rstr2hex(input) { + var hexTab = '0123456789abcdef'; + var output = ''; + var x; + var i; + for (i = 0; i < input.length; i += 1) { + x = input.charCodeAt(i); + output += hexTab.charAt((x >>> 4) & 0x0f) + hexTab.charAt(x & 0x0f); + } + return output; +} + +/* +* Encode a string as utf-8 +*/ +function str2rstrUTF8(input) { + return unescape(encodeURIComponent(input)); +} + +/* +* Take string arguments and return either raw or hex encoded strings +*/ +function rawMD5(s) { + return rstrMD5(str2rstrUTF8(s)); +} +function hexMD5(s) { + return rstr2hex(rawMD5(s)); +} +function rawHMACMD5(k, d) { + return rstrHMACMD5(str2rstrUTF8(k), str2rstrUTF8(d)); +} +function hexHMACMD5(k, d) { + return rstr2hex(rawHMACMD5(k, d)); +} + +function md5(string, key, raw) { + if (!key) { + if (!raw) { + return hexMD5(string); + } + return rawMD5(string); + } + if (!raw) { + return hexHMACMD5(key, string); + } + return rawHMACMD5(key, string); +} + +module.exports = md5; + +},{}]},{},[4])(4) +}); \ No newline at end of file diff --git a/packages/raven-js/dist/raven.min.js b/packages/raven-js/dist/raven.min.js new file mode 100644 index 000000000000..f15e3eed5dcf --- /dev/null +++ b/packages/raven-js/dist/raven.min.js @@ -0,0 +1,4 @@ +/*! Raven.js 3.25.2 (30b6d4e) | github.com/getsentry/raven-js */ +!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.Raven=a()}}(function(){return function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};b[g][0].call(k.exports,function(a){var c=b[g][1][a];return e(c?c:a)},k,k.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;gthis.k.maxBreadcrumbs&&this.u.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.r.push([a,b]),this.n&&this.F(),this},setUserContext:function(a){return this.j.user=a,this},setExtraContext:function(a){return this.Z("extra",a),this},setTagsContext:function(a){return this.Z("tags",a),this},clearContext:function(){return this.j={},this},getContext:function(){return JSON.parse(h(this.j))},setEnvironment:function(a){return this.k.environment=a,this},setRelease:function(a){return this.k.release=a,this},setDataCallback:function(a){var b=this.k.dataCallback;return this.k.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.k.breadcrumbCallback;return this.k.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.k.shouldSendCallback;return this.k.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.k.transport=a,this},lastException:function(){return this.d},lastEventId:function(){return this.f},isSetup:function(){return!!this.a&&(!!this.g||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.z("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=R.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(S){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.H;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.j.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.J(this.G(c)),h=S.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(S.head||S.body).appendChild(h)}},L:function(){var a=this;this.m+=1,setTimeout(function(){a.m-=1})},$:function(a,b){var c,d;if(this.b){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),S.createEvent?(c=S.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=S.createEventObject(),c.eventType=a);for(d in b)A(b,d)&&(c[d]=b[d]);if(S.createEvent)S.dispatchEvent(c);else try{S.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},_:function(a){var b=this;return function(c){if(b.aa=null,b.v!==c){b.v=c;var d;try{d=E(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ba:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.aa;g||a._("input")(c),clearTimeout(g),a.aa=setTimeout(function(){a.aa=null},b)}}},ca:function(a,b){var c=H(this.w.href),d=H(b),e=H(a);this.x=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},C:function(){var a=this;a.da=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.M?a.da.apply(this.O,arguments):a.da.apply(this,arguments)}},Q:function(){this.da&&(Function.prototype.toString=this.da)},D:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.ca(b.x,c+""),a.apply(this,arguments)}};I(R.history,"pushState",j,d),I(R.history,"replaceState",j,d)}if(c.console&&"console"in R&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};w(["debug","info","warn","error","log"],function(a,b){O(console,b,k)})}},R:function(){for(var a;this.t.length;){a=this.t.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},S:function(){for(var a in this.q)this.p[a]=this.q[a]},F:function(){var a=this;w(this.r,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},G:function(a){var b=Q.exec(a),c={},d=7;try{for(;d--;)c[P[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.k.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},J:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},A:function(){this.m||this.V.apply(this,arguments)},V:function(a,b){var c=this.X(a,b);this.$("handle",{stackInfo:a,options:b}),this.fa(a.name,a.message,a.url,a.lineno,c,b)},X:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(w(a.stack,function(b,e){var f=c.ga(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.u,0)}),this.j.user&&(a.user=this.j.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),a=this.pa(a),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||v(a[b]))&&delete a[b]}),s(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!v(a)&&(!s(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.ma()?void this.z("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function F(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&l(b))for(c=b.split(/\s+/),f=0;fc?Q(a,b-1):d}function R(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?X:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function S(a,b){function c(a){return m(a)?a.map(function(a){return c(a)}):k(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!m(b)||m(b)&&0===b.length)return a;var d,e=A(b),f="********";try{d=JSON.parse(T(a))}catch(g){return a}return c(d)}var T=a(7),U="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},V=3,W=51200,X=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isDOMError:g,isDOMException:h,isUndefined:i,isFunction:j,isPlainObject:k,isString:l,isArray:m,isEmptyObject:n,supportsErrorEvent:o,supportsDOMError:p,supportsDOMException:q,supportsFetch:r,supportsReferrerPolicy:s,supportsPromiseRejectionEvent:t,wrappedCallback:u,each:v,objectMerge:w,truncate:y,objectFrozen:x,hasKey:z,joinRegExp:A,urlencode:B,uuid4:D,htmlTreeAsString:E,htmlElementAsString:F,isSameException:I,isSameStacktrace:J,parseUrl:C,fill:K,safeJoin:L,serializeException:Q,serializeKeysForMessage:R,sanitize:S}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{7:7}],6:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}function e(){return"undefined"==typeof document||null==document.location?"":(document.location.origin||(document.location.origin=document.location.protocol+"//"+document.location.hostname+(document.location.port?":"+document.location.port:"")),document.location.origin)}var f=a(5),g={collectWindowErrors:!0,debug:!1},h="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},i=[].slice,j="?",k=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;g.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function e(a,b){var c=null;if(!b||g.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(i.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,h,i){var l=null,m=f.isErrorEvent(i)?i.error:i,n=f.isErrorEvent(a)?a.message:a;if(v)g.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&f.isError(m))l=g.computeStackTrace(m),e(l,!0);else{var p,r={url:b,line:c,column:h},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(k);p&&(s=p[1],n=p[2])}r.func=j,l={name:s,message:n,url:d(),stack:[r]},e(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=h.onerror,h.onerror=l,r=!0)}function n(){r&&(h.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,e.apply(null,[a,!1].concat(b))}function p(a,b){var c=i.call(arguments,1);if(v){if(u===a)return;o()}var d=g.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),g.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,f,g=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,h=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,i=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,k=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,l=/\((\S*)(?::(\d+))(?::(\d+))\)/,m=a.stack.split("\n"),n=[],o=(/^(.*) is undefined$/.exec(a.message),0),p=m.length;o eval")>-1;r&&(b=k.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==o||c[5]||"undefined"==typeof a.columnNumber||(n[0].column=a.columnNumber+1),f={url:c[3],func:c[1]||j,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}if(!f.func&&f.line&&(f.func=j),f.url&&"blob:"===f.url.substr(0,5)){var s=new XMLHttpRequest;if(s.open("GET",f.url,!1),s.send(null),200===s.status){var t=s.responseText||"";t=t.slice(-300);var u=t.match(/\/\/# sourceMappingURL=(.*)$/);if(u){var v=u[1];"~"===v.charAt(0)&&(v=e()+v.slice(1)),f.url=v.slice(0,-4)}}}n.push(f)}return n.length?{name:a.name,message:a.message,url:d(),stack:n}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=j),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,e){for(var h,i,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==f&&o!==g.report){if(i={url:null,func:j,line:null,column:null},o.name?i.func=o.name:(h=k.exec(o.toString()))&&(i.func=h[1]),"undefined"==typeof i.func)try{i.func=h.input.substring(0,h.input.indexOf("{"))}catch(p){}m[""+o]?n=!0:m[""+o]=!0,l.push(i)}e&&l.splice(0,e);var q={name:a.name,message:a.message,url:d(),stack:l};return b(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),q}function f(b,e){var f=null;e=null==e?0:+e;try{if(f=a(b))return f}catch(h){if(g.debug)throw h}try{if(f=c(b,e+1))return f}catch(h){if(g.debug)throw h}return{name:b.name,message:b.message,url:d()}}return f.augmentStackTraceWithInitialElement=b,f.computeStackTraceFromStackProp=a,f}(),b.exports=g}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{}); +},{5:5}],7:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}],8:[function(a,b,c){function d(a,b){var c=(65535&a)+(65535&b),d=(a>>16)+(b>>16)+(c>>16);return d<<16|65535&c}function e(a,b){return a<>>32-b}function f(a,b,c,f,g,h){return d(e(d(d(b,a),d(f,h)),g),c)}function g(a,b,c,d,e,g,h){return f(b&c|~b&d,a,b,e,g,h)}function h(a,b,c,d,e,g,h){return f(b&d|c&~d,a,b,e,g,h)}function i(a,b,c,d,e,g,h){return f(b^c^d,a,b,e,g,h)}function j(a,b,c,d,e,g,h){return f(c^(b|~d),a,b,e,g,h)}function k(a,b){a[b>>5]|=128<>>9<<4)+14]=b;var c,e,f,k,l,m=1732584193,n=-271733879,o=-1732584194,p=271733878;for(c=0;c>5]>>>b%32&255);return c}function m(a){var b,c=[];for(c[(a.length>>2)-1]=void 0,b=0;b>5]|=(255&a.charCodeAt(b/8))<16&&(e=k(e,8*a.length)),c=0;c<16;c+=1)f[c]=909522486^e[c],g[c]=1549556828^e[c];return d=k(f.concat(m(b)),512+8*b.length),l(k(g.concat(d),640))}function p(a){var b,c,d="0123456789abcdef",e="";for(c=0;c>>4&15)+d.charAt(15&b);return e}function q(a){return unescape(encodeURIComponent(a))}function r(a){return n(q(a))}function s(a){return p(r(a))}function t(a,b){return o(q(a),q(b))}function u(a,b){return p(t(a,b))}function v(a,b,c){return b?c?t(b,a):u(b,a):c?r(a):s(a)}b.exports=v},{}]},{},[4])(4)}); +//# sourceMappingURL=raven.min.js.map \ No newline at end of file diff --git a/packages/raven-js/dist/raven.min.js.map b/packages/raven-js/dist/raven.min.js.map new file mode 100644 index 000000000000..a8509ae50dbc --- /dev/null +++ b/packages/raven-js/dist/raven.min.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","RavenConfigError","message","name","prototype","constructor","2","utils","wrapMethod","console","level","callback","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","msg","safeJoin","data","logger","extra","Function","apply","5","3","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","sanitizeKeys","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isErrorEvent","isDOMError","isDOMException","isError","isObject","isPlainObject","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","sanitize","wrapConsoleMethod","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","config","dsn","options","_logDebug","globalOptions","key","value","setDSN","push","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","toString","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","substr","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","context","func","undefined","wrap","_before","wrapped","deep","_ignoreNextOnError","captureException","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","T","event","reason","unhandledPromiseRejection","B","_promiseRejectionHandler","bind","addEventListener","P","removeEventListener","ex","trimHeadFrames","error","captureMessage","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","U","currentOptions","exKeys","Object","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","addPlugin","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","setDataCallback","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","L","setTimeout","$","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","_","evtName","_keypressTimeout","target","category","ba","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","ca","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","C","_originalFunctionToString","Q","D","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","type","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","E","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","R","builtin","S","F","installer","concat","G","str","m","exec","allowSecretKey","J","port","A","V","stackInfo","_triggerEvent","_processException","lineno","X","frame","_normalizeFrame","in_app","ga","stackInfoUrl","normalized","filename","line","colno","column","function","fa","prefixedMessage","exception","values","transaction","ha","request","Referer","breadcrumbs","_trimBreadcrumbs","ia","urlProp","urlProps","ja","httpData","userAgent","User-Agent","referrer","y","_backoffDuration","_backoffStart","ma","na","current","last","oa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Y","baseData","project","platform","_getHttpData","serverName","server_name","_sanitizeData","forEach","random","_sendProcessedPayload","pa","ra","qa","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","sa","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","onerror","open","setRequestHeader","send","ta","hash","evaluated","z","Z","setUser","setReleaseContext","6","7","8","4","RavenConstructor","_Raven","noConflict","Client","what","supportsErrorEvent","ErrorEvent","supportsDOMError","DOMError","supportsDOMException","DOMException","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","wrappedCallback","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","sanitizeMask","safeInput","o_O","getLocationHref","getLocationOrigin","origin","hostname","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","responseText","sourceMaps","sourceMapAddress","charAt","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","string","raw"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file diff --git a/packages/raven-js/dist/require,vue/raven.js b/packages/raven-js/dist/require,vue/raven.js new file mode 100644 index 000000000000..5e1682b30e9e --- /dev/null +++ b/packages/raven-js/dist/require,vue/raven.js @@ -0,0 +1,4077 @@ +/*! Raven.js 3.25.2 (30b6d4e) | github.com/getsentry/raven-js */ + +/* + * Includes TraceKit + * https://github.com/getsentry/TraceKit + * + * Copyright 2018 Matt Robenolt and other contributors + * Released under the BSD license + * https://github.com/getsentry/raven-js/blob/master/LICENSE + * + */ + +(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.Raven = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o' : 'anonymous component') + + (vm._isVue && vm.$options.__file ? ' at ' + vm.$options.__file : '') + ); +} + +function vuePlugin(Raven, Vue) { + Vue = Vue || window.Vue; + + // quit if Vue isn't on the page + if (!Vue || !Vue.config) return; + + var _oldOnError = Vue.config.errorHandler; + Vue.config.errorHandler = function VueErrorHandler(error, vm, info) { + var metaData = {}; + + // vm and lifecycleHook are not always available + if (Object.prototype.toString.call(vm) === '[object Object]') { + metaData.componentName = formatComponentName(vm); + metaData.propsData = vm.$options.propsData; + } + + if (typeof info !== 'undefined') { + metaData.lifecycleHook = info; + } + + Raven.captureException(error, { + extra: metaData + }); + + if (typeof _oldOnError === 'function') { + _oldOnError.call(this, error, vm, info); + } + }; +} + +module.exports = vuePlugin; + +_dereq_(6).addPlugin(module.exports); +},{"6":6}],3:[function(_dereq_,module,exports){ +function RavenConfigError(message) { + this.name = 'RavenConfigError'; + this.message = message; +} +RavenConfigError.prototype = new Error(); +RavenConfigError.prototype.constructor = RavenConfigError; + +module.exports = RavenConfigError; + +},{}],4:[function(_dereq_,module,exports){ +var utils = _dereq_(7); + +var wrapMethod = function(console, level, callback) { + var originalConsoleLevel = console[level]; + var originalConsole = console; + + if (!(level in console)) { + return; + } + + var sentryLevel = level === 'warn' ? 'warning' : level; + + console[level] = function() { + var args = [].slice.call(arguments); + + var msg = utils.safeJoin(args, ' '); + var data = {level: sentryLevel, logger: 'console', extra: {arguments: args}}; + + if (level === 'assert') { + if (args[0] === false) { + // Default browsers message + msg = + 'Assertion failed: ' + (utils.safeJoin(args.slice(1), ' ') || 'console.assert'); + data.extra.arguments = args.slice(1); + callback && callback(msg, data); + } + } else { + callback && callback(msg, data); + } + + // this fails for some browsers. :( + if (originalConsoleLevel) { + // IE9 doesn't allow calling apply on console functions directly + // See: https://stackoverflow.com/questions/5472938/does-ie9-support-console-log-and-is-it-a-real-function#answer-5473193 + Function.prototype.apply.call(originalConsoleLevel, originalConsole, args); + } + }; +}; + +module.exports = { + wrapMethod: wrapMethod +}; + +},{"7":7}],5:[function(_dereq_,module,exports){ +(function (global){ +/*global XDomainRequest:false */ + +var TraceKit = _dereq_(8); +var stringify = _dereq_(9); +var md5 = _dereq_(10); +var RavenConfigError = _dereq_(3); + +var utils = _dereq_(7); +var isErrorEvent = utils.isErrorEvent; +var isDOMError = utils.isDOMError; +var isDOMException = utils.isDOMException; +var isError = utils.isError; +var isObject = utils.isObject; +var isPlainObject = utils.isPlainObject; +var isUndefined = utils.isUndefined; +var isFunction = utils.isFunction; +var isString = utils.isString; +var isArray = utils.isArray; +var isEmptyObject = utils.isEmptyObject; +var each = utils.each; +var objectMerge = utils.objectMerge; +var truncate = utils.truncate; +var objectFrozen = utils.objectFrozen; +var hasKey = utils.hasKey; +var joinRegExp = utils.joinRegExp; +var urlencode = utils.urlencode; +var uuid4 = utils.uuid4; +var htmlTreeAsString = utils.htmlTreeAsString; +var isSameException = utils.isSameException; +var isSameStacktrace = utils.isSameStacktrace; +var parseUrl = utils.parseUrl; +var fill = utils.fill; +var supportsFetch = utils.supportsFetch; +var supportsReferrerPolicy = utils.supportsReferrerPolicy; +var serializeKeysForMessage = utils.serializeKeysForMessage; +var serializeException = utils.serializeException; +var sanitize = utils.sanitize; + +var wrapConsoleMethod = _dereq_(4).wrapMethod; + +var dsnKeys = 'source protocol user pass host port path'.split(' '), + dsnPattern = /^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/; + +function now() { + return +new Date(); +} + +// This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) +var _window = + typeof window !== 'undefined' + ? window + : typeof global !== 'undefined' + ? global + : typeof self !== 'undefined' + ? self + : {}; +var _document = _window.document; +var _navigator = _window.navigator; + +function keepOriginalCallback(original, callback) { + return isFunction(callback) + ? function(data) { + return callback(data, original); + } + : callback; +} + +// First, check for JSON support +// If there is no JSON, we no-op the core features of Raven +// since JSON is required to encode the payload +function Raven() { + this._hasJSON = !!(typeof JSON === 'object' && JSON.stringify); + // Raven can run in contexts where there's no document (react-native) + this._hasDocument = !isUndefined(_document); + this._hasNavigator = !isUndefined(_navigator); + this._lastCapturedException = null; + this._lastData = null; + this._lastEventId = null; + this._globalServer = null; + this._globalKey = null; + this._globalProject = null; + this._globalContext = {}; + this._globalOptions = { + // SENTRY_RELEASE can be injected by https://github.com/getsentry/sentry-webpack-plugin + release: _window.SENTRY_RELEASE && _window.SENTRY_RELEASE.id, + logger: 'javascript', + ignoreErrors: [], + ignoreUrls: [], + whitelistUrls: [], + includePaths: [], + headers: null, + collectWindowErrors: true, + captureUnhandledRejections: true, + maxMessageLength: 0, + // By default, truncates URL values to 250 chars + maxUrlLength: 250, + stackTraceLimit: 50, + autoBreadcrumbs: true, + instrument: true, + sampleRate: 1, + sanitizeKeys: [] + }; + this._fetchDefaults = { + method: 'POST', + keepalive: true, + // Despite all stars in the sky saying that Edge supports old draft syntax, aka 'never', 'always', 'origin' and 'default + // https://caniuse.com/#feat=referrer-policy + // It doesn't. And it throw exception instead of ignoring this parameter... + // REF: https://github.com/getsentry/raven-js/issues/1233 + referrerPolicy: supportsReferrerPolicy() ? 'origin' : '' + }; + this._ignoreOnError = 0; + this._isRavenInstalled = false; + this._originalErrorStackTraceLimit = Error.stackTraceLimit; + // capture references to window.console *and* all its methods first + // before the console plugin has a chance to monkey patch + this._originalConsole = _window.console || {}; + this._originalConsoleMethods = {}; + this._plugins = []; + this._startTime = now(); + this._wrappedBuiltIns = []; + this._breadcrumbs = []; + this._lastCapturedEvent = null; + this._keypressTimeout; + this._location = _window.location; + this._lastHref = this._location && this._location.href; + this._resetBackoff(); + + // eslint-disable-next-line guard-for-in + for (var method in this._originalConsole) { + this._originalConsoleMethods[method] = this._originalConsole[method]; + } +} + +/* + * The core Raven singleton + * + * @this {Raven} + */ + +Raven.prototype = { + // Hardcode version string so that raven source can be loaded directly via + // webpack (using a build step causes webpack #1617). Grunt verifies that + // this value matches package.json during build. + // See: https://github.com/getsentry/raven-js/issues/465 + VERSION: '3.25.2', + + debug: false, + + TraceKit: TraceKit, // alias to TraceKit + + /* + * Configure Raven with a DSN and extra options + * + * @param {string} dsn The public Sentry DSN + * @param {object} options Set of global options [optional] + * @return {Raven} + */ + config: function(dsn, options) { + var self = this; + + if (self._globalServer) { + this._logDebug('error', 'Error: Raven has already been configured'); + return self; + } + if (!dsn) return self; + + var globalOptions = self._globalOptions; + + // merge in options + if (options) { + each(options, function(key, value) { + // tags and extra are special and need to be put into context + if (key === 'tags' || key === 'extra' || key === 'user') { + self._globalContext[key] = value; + } else { + globalOptions[key] = value; + } + }); + } + + self.setDSN(dsn); + + // "Script error." is hard coded into browsers for errors that it can't read. + // this is the result of a script being pulled in from an external domain and CORS. + globalOptions.ignoreErrors.push(/^Script error\.?$/); + globalOptions.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/); + + // join regexp rules into one big rule + globalOptions.ignoreErrors = joinRegExp(globalOptions.ignoreErrors); + globalOptions.ignoreUrls = globalOptions.ignoreUrls.length + ? joinRegExp(globalOptions.ignoreUrls) + : false; + globalOptions.whitelistUrls = globalOptions.whitelistUrls.length + ? joinRegExp(globalOptions.whitelistUrls) + : false; + globalOptions.includePaths = joinRegExp(globalOptions.includePaths); + globalOptions.maxBreadcrumbs = Math.max( + 0, + Math.min(globalOptions.maxBreadcrumbs || 100, 100) + ); // default and hard limit is 100 + + var autoBreadcrumbDefaults = { + xhr: true, + console: true, + dom: true, + location: true, + sentry: true + }; + + var autoBreadcrumbs = globalOptions.autoBreadcrumbs; + if ({}.toString.call(autoBreadcrumbs) === '[object Object]') { + autoBreadcrumbs = objectMerge(autoBreadcrumbDefaults, autoBreadcrumbs); + } else if (autoBreadcrumbs !== false) { + autoBreadcrumbs = autoBreadcrumbDefaults; + } + globalOptions.autoBreadcrumbs = autoBreadcrumbs; + + var instrumentDefaults = { + tryCatch: true + }; + + var instrument = globalOptions.instrument; + if ({}.toString.call(instrument) === '[object Object]') { + instrument = objectMerge(instrumentDefaults, instrument); + } else if (instrument !== false) { + instrument = instrumentDefaults; + } + globalOptions.instrument = instrument; + + TraceKit.collectWindowErrors = !!globalOptions.collectWindowErrors; + + // return for chaining + return self; + }, + + /* + * Installs a global window.onerror error handler + * to capture and report uncaught exceptions. + * At this point, install() is required to be called due + * to the way TraceKit is set up. + * + * @return {Raven} + */ + install: function() { + var self = this; + if (self.isSetup() && !self._isRavenInstalled) { + TraceKit.report.subscribe(function() { + self._handleOnErrorStackInfo.apply(self, arguments); + }); + + if (self._globalOptions.captureUnhandledRejections) { + self._attachPromiseRejectionHandler(); + } + + self._patchFunctionToString(); + + if (self._globalOptions.instrument && self._globalOptions.instrument.tryCatch) { + self._instrumentTryCatch(); + } + + if (self._globalOptions.autoBreadcrumbs) self._instrumentBreadcrumbs(); + + // Install all of the plugins + self._drainPlugins(); + + self._isRavenInstalled = true; + } + + Error.stackTraceLimit = self._globalOptions.stackTraceLimit; + return this; + }, + + /* + * Set the DSN (can be called multiple time unlike config) + * + * @param {string} dsn The public Sentry DSN + */ + setDSN: function(dsn) { + var self = this, + uri = self._parseDSN(dsn), + lastSlash = uri.path.lastIndexOf('/'), + path = uri.path.substr(1, lastSlash); + + self._dsn = dsn; + self._globalKey = uri.user; + self._globalSecret = uri.pass && uri.pass.substr(1); + self._globalProject = uri.path.substr(lastSlash + 1); + + self._globalServer = self._getGlobalServer(uri); + + self._globalEndpoint = + self._globalServer + '/' + path + 'api/' + self._globalProject + '/store/'; + + // Reset backoff state since we may be pointing at a + // new project/server + this._resetBackoff(); + }, + + /* + * Wrap code within a context so Raven can capture errors + * reliably across domains that is executed immediately. + * + * @param {object} options A specific set of options for this context [optional] + * @param {function} func The callback to be immediately executed within the context + * @param {array} args An array of arguments to be called with the callback [optional] + */ + context: function(options, func, args) { + if (isFunction(options)) { + args = func || []; + func = options; + options = undefined; + } + + return this.wrap(options, func).apply(this, args); + }, + + /* + * Wrap code within a context and returns back a new function to be executed + * + * @param {object} options A specific set of options for this context [optional] + * @param {function} func The function to be wrapped in a new context + * @param {function} func A function to call before the try/catch wrapper [optional, private] + * @return {function} The newly wrapped functions with a context + */ + wrap: function(options, func, _before) { + var self = this; + // 1 argument has been passed, and it's not a function + // so just return it + if (isUndefined(func) && !isFunction(options)) { + return options; + } + + // options is optional + if (isFunction(options)) { + func = options; + options = undefined; + } + + // At this point, we've passed along 2 arguments, and the second one + // is not a function either, so we'll just return the second argument. + if (!isFunction(func)) { + return func; + } + + // We don't wanna wrap it twice! + try { + if (func.__raven__) { + return func; + } + + // If this has already been wrapped in the past, return that + if (func.__raven_wrapper__) { + return func.__raven_wrapper__; + } + } catch (e) { + // Just accessing custom props in some Selenium environments + // can cause a "Permission denied" exception (see raven-js#495). + // Bail on wrapping and return the function as-is (defers to window.onerror). + return func; + } + + function wrapped() { + var args = [], + i = arguments.length, + deep = !options || (options && options.deep !== false); + + if (_before && isFunction(_before)) { + _before.apply(this, arguments); + } + + // Recursively wrap all of a function's arguments that are + // functions themselves. + while (i--) args[i] = deep ? self.wrap(options, arguments[i]) : arguments[i]; + + try { + // Attempt to invoke user-land function + // NOTE: If you are a Sentry user, and you are seeing this stack frame, it + // means Raven caught an error invoking your application code. This is + // expected behavior and NOT indicative of a bug with Raven.js. + return func.apply(this, args); + } catch (e) { + self._ignoreNextOnError(); + self.captureException(e, options); + throw e; + } + } + + // copy over properties of the old function + for (var property in func) { + if (hasKey(func, property)) { + wrapped[property] = func[property]; + } + } + wrapped.prototype = func.prototype; + + func.__raven_wrapper__ = wrapped; + // Signal that this function has been wrapped/filled already + // for both debugging and to prevent it to being wrapped/filled twice + wrapped.__raven__ = true; + wrapped.__orig__ = func; + + return wrapped; + }, + + /** + * Uninstalls the global error handler. + * + * @return {Raven} + */ + uninstall: function() { + TraceKit.report.uninstall(); + + this._detachPromiseRejectionHandler(); + this._unpatchFunctionToString(); + this._restoreBuiltIns(); + this._restoreConsole(); + + Error.stackTraceLimit = this._originalErrorStackTraceLimit; + this._isRavenInstalled = false; + + return this; + }, + + /** + * Callback used for `unhandledrejection` event + * + * @param {PromiseRejectionEvent} event An object containing + * promise: the Promise that was rejected + * reason: the value with which the Promise was rejected + * @return void + */ + _promiseRejectionHandler: function(event) { + this._logDebug('debug', 'Raven caught unhandled promise rejection:', event); + this.captureException(event.reason, { + extra: { + unhandledPromiseRejection: true + } + }); + }, + + /** + * Installs the global promise rejection handler. + * + * @return {raven} + */ + _attachPromiseRejectionHandler: function() { + this._promiseRejectionHandler = this._promiseRejectionHandler.bind(this); + _window.addEventListener && + _window.addEventListener('unhandledrejection', this._promiseRejectionHandler); + return this; + }, + + /** + * Uninstalls the global promise rejection handler. + * + * @return {raven} + */ + _detachPromiseRejectionHandler: function() { + _window.removeEventListener && + _window.removeEventListener('unhandledrejection', this._promiseRejectionHandler); + return this; + }, + + /** + * Manually capture an exception and send it over to Sentry + * + * @param {error} ex An exception to be logged + * @param {object} options A specific set of options for this error [optional] + * @return {Raven} + */ + captureException: function(ex, options) { + options = objectMerge({trimHeadFrames: 0}, options ? options : {}); + + if (isErrorEvent(ex) && ex.error) { + // If it is an ErrorEvent with `error` property, extract it to get actual Error + ex = ex.error; + } else if (isDOMError(ex) || isDOMException(ex)) { + // If it is a DOMError or DOMException (which are legacy APIs, but still supported in some browsers) + // then we just extract the name and message, as they don't provide anything else + // https://developer.mozilla.org/en-US/docs/Web/API/DOMError + // https://developer.mozilla.org/en-US/docs/Web/API/DOMException + var name = ex.name || (isDOMError(ex) ? 'DOMError' : 'DOMException'); + var message = ex.message ? name + ': ' + ex.message : name; + + return this.captureMessage( + message, + objectMerge(options, { + // neither DOMError or DOMException provide stack trace and we most likely wont get it this way as well + // but it's barely any overhead so we may at least try + stacktrace: true, + trimHeadFrames: options.trimHeadFrames + 1 + }) + ); + } else if (isError(ex)) { + // we have a real Error object + ex = ex; + } else if (isPlainObject(ex)) { + // If it is plain Object, serialize it manually and extract options + // This will allow us to group events based on top-level keys + // which is much better than creating new group when any key/value change + options = this._getCaptureExceptionOptionsFromPlainObject(options, ex); + ex = new Error(options.message); + } else { + // If none of previous checks were valid, then it means that + // it's not a DOMError/DOMException + // it's not a plain Object + // it's not a valid ErrorEvent (one with an error property) + // it's not an Error + // So bail out and capture it as a simple message: + return this.captureMessage( + ex, + objectMerge(options, { + stacktrace: true, // if we fall back to captureMessage, default to attempting a new trace + trimHeadFrames: options.trimHeadFrames + 1 + }) + ); + } + + // Store the raw exception object for potential debugging and introspection + this._lastCapturedException = ex; + + // TraceKit.report will re-raise any exception passed to it, + // which means you have to wrap it in try/catch. Instead, we + // can wrap it here and only re-raise if TraceKit.report + // raises an exception different from the one we asked to + // report on. + try { + var stack = TraceKit.computeStackTrace(ex); + this._handleStackInfo(stack, options); + } catch (ex1) { + if (ex !== ex1) { + throw ex1; + } + } + + return this; + }, + + _getCaptureExceptionOptionsFromPlainObject: function(currentOptions, ex) { + var exKeys = Object.keys(ex).sort(); + var options = objectMerge(currentOptions, { + message: + 'Non-Error exception captured with keys: ' + serializeKeysForMessage(exKeys), + fingerprint: [md5(exKeys)], + extra: currentOptions.extra || {} + }); + options.extra.__serialized__ = serializeException(ex); + + return options; + }, + + /* + * Manually send a message to Sentry + * + * @param {string} msg A plain message to be captured in Sentry + * @param {object} options A specific set of options for this message [optional] + * @return {Raven} + */ + captureMessage: function(msg, options) { + // config() automagically converts ignoreErrors from a list to a RegExp so we need to test for an + // early call; we'll error on the side of logging anything called before configuration since it's + // probably something you should see: + if ( + !!this._globalOptions.ignoreErrors.test && + this._globalOptions.ignoreErrors.test(msg) + ) { + return; + } + + options = options || {}; + msg = msg + ''; // Make sure it's actually a string + + var data = objectMerge( + { + message: msg + }, + options + ); + + var ex; + // Generate a "synthetic" stack trace from this point. + // NOTE: If you are a Sentry user, and you are seeing this stack frame, it is NOT indicative + // of a bug with Raven.js. Sentry generates synthetic traces either by configuration, + // or if it catches a thrown object without a "stack" property. + try { + throw new Error(msg); + } catch (ex1) { + ex = ex1; + } + + // null exception name so `Error` isn't prefixed to msg + ex.name = null; + var stack = TraceKit.computeStackTrace(ex); + + // stack[0] is `throw new Error(msg)` call itself, we are interested in the frame that was just before that, stack[1] + var initialCall = isArray(stack.stack) && stack.stack[1]; + + // if stack[1] is `Raven.captureException`, it means that someone passed a string to it and we redirected that call + // to be handled by `captureMessage`, thus `initialCall` is the 3rd one, not 2nd + // initialCall => captureException(string) => captureMessage(string) + if (initialCall && initialCall.func === 'Raven.captureException') { + initialCall = stack.stack[2]; + } + + var fileurl = (initialCall && initialCall.url) || ''; + + if ( + !!this._globalOptions.ignoreUrls.test && + this._globalOptions.ignoreUrls.test(fileurl) + ) { + return; + } + + if ( + !!this._globalOptions.whitelistUrls.test && + !this._globalOptions.whitelistUrls.test(fileurl) + ) { + return; + } + + if (this._globalOptions.stacktrace || (options && options.stacktrace)) { + // fingerprint on msg, not stack trace (legacy behavior, could be revisited) + data.fingerprint = data.fingerprint == null ? msg : data.fingerprint; + + options = objectMerge( + { + trimHeadFrames: 0 + }, + options + ); + // Since we know this is a synthetic trace, the top frame (this function call) + // MUST be from Raven.js, so mark it for trimming + // We add to the trim counter so that callers can choose to trim extra frames, such + // as utility functions. + options.trimHeadFrames += 1; + + var frames = this._prepareFrames(stack, options); + data.stacktrace = { + // Sentry expects frames oldest to newest + frames: frames.reverse() + }; + } + + // Make sure that fingerprint is always wrapped in an array + if (data.fingerprint) { + data.fingerprint = isArray(data.fingerprint) + ? data.fingerprint + : [data.fingerprint]; + } + + // Fire away! + this._send(data); + + return this; + }, + + captureBreadcrumb: function(obj) { + var crumb = objectMerge( + { + timestamp: now() / 1000 + }, + obj + ); + + if (isFunction(this._globalOptions.breadcrumbCallback)) { + var result = this._globalOptions.breadcrumbCallback(crumb); + + if (isObject(result) && !isEmptyObject(result)) { + crumb = result; + } else if (result === false) { + return this; + } + } + + this._breadcrumbs.push(crumb); + if (this._breadcrumbs.length > this._globalOptions.maxBreadcrumbs) { + this._breadcrumbs.shift(); + } + return this; + }, + + addPlugin: function(plugin /*arg1, arg2, ... argN*/) { + var pluginArgs = [].slice.call(arguments, 1); + + this._plugins.push([plugin, pluginArgs]); + if (this._isRavenInstalled) { + this._drainPlugins(); + } + + return this; + }, + + /* + * Set/clear a user to be sent along with the payload. + * + * @param {object} user An object representing user data [optional] + * @return {Raven} + */ + setUserContext: function(user) { + // Intentionally do not merge here since that's an unexpected behavior. + this._globalContext.user = user; + + return this; + }, + + /* + * Merge extra attributes to be sent along with the payload. + * + * @param {object} extra An object representing extra data [optional] + * @return {Raven} + */ + setExtraContext: function(extra) { + this._mergeContext('extra', extra); + + return this; + }, + + /* + * Merge tags to be sent along with the payload. + * + * @param {object} tags An object representing tags [optional] + * @return {Raven} + */ + setTagsContext: function(tags) { + this._mergeContext('tags', tags); + + return this; + }, + + /* + * Clear all of the context. + * + * @return {Raven} + */ + clearContext: function() { + this._globalContext = {}; + + return this; + }, + + /* + * Get a copy of the current context. This cannot be mutated. + * + * @return {object} copy of context + */ + getContext: function() { + // lol javascript + return JSON.parse(stringify(this._globalContext)); + }, + + /* + * Set environment of application + * + * @param {string} environment Typically something like 'production'. + * @return {Raven} + */ + setEnvironment: function(environment) { + this._globalOptions.environment = environment; + + return this; + }, + + /* + * Set release version of application + * + * @param {string} release Typically something like a git SHA to identify version + * @return {Raven} + */ + setRelease: function(release) { + this._globalOptions.release = release; + + return this; + }, + + /* + * Set the dataCallback option + * + * @param {function} callback The callback to run which allows the + * data blob to be mutated before sending + * @return {Raven} + */ + setDataCallback: function(callback) { + var original = this._globalOptions.dataCallback; + this._globalOptions.dataCallback = keepOriginalCallback(original, callback); + return this; + }, + + /* + * Set the breadcrumbCallback option + * + * @param {function} callback The callback to run which allows filtering + * or mutating breadcrumbs + * @return {Raven} + */ + setBreadcrumbCallback: function(callback) { + var original = this._globalOptions.breadcrumbCallback; + this._globalOptions.breadcrumbCallback = keepOriginalCallback(original, callback); + return this; + }, + + /* + * Set the shouldSendCallback option + * + * @param {function} callback The callback to run which allows + * introspecting the blob before sending + * @return {Raven} + */ + setShouldSendCallback: function(callback) { + var original = this._globalOptions.shouldSendCallback; + this._globalOptions.shouldSendCallback = keepOriginalCallback(original, callback); + return this; + }, + + /** + * Override the default HTTP transport mechanism that transmits data + * to the Sentry server. + * + * @param {function} transport Function invoked instead of the default + * `makeRequest` handler. + * + * @return {Raven} + */ + setTransport: function(transport) { + this._globalOptions.transport = transport; + + return this; + }, + + /* + * Get the latest raw exception that was captured by Raven. + * + * @return {error} + */ + lastException: function() { + return this._lastCapturedException; + }, + + /* + * Get the last event id + * + * @return {string} + */ + lastEventId: function() { + return this._lastEventId; + }, + + /* + * Determine if Raven is setup and ready to go. + * + * @return {boolean} + */ + isSetup: function() { + if (!this._hasJSON) return false; // needs JSON support + if (!this._globalServer) { + if (!this.ravenNotConfiguredError) { + this.ravenNotConfiguredError = true; + this._logDebug('error', 'Error: Raven has not been configured.'); + } + return false; + } + return true; + }, + + afterLoad: function() { + // TODO: remove window dependence? + + // Attempt to initialize Raven on load + var RavenConfig = _window.RavenConfig; + if (RavenConfig) { + this.config(RavenConfig.dsn, RavenConfig.config).install(); + } + }, + + showReportDialog: function(options) { + if ( + !_document // doesn't work without a document (React native) + ) + return; + + options = options || {}; + + var lastEventId = options.eventId || this.lastEventId(); + if (!lastEventId) { + throw new RavenConfigError('Missing eventId'); + } + + var dsn = options.dsn || this._dsn; + if (!dsn) { + throw new RavenConfigError('Missing DSN'); + } + + var encode = encodeURIComponent; + var qs = ''; + qs += '?eventId=' + encode(lastEventId); + qs += '&dsn=' + encode(dsn); + + var user = options.user || this._globalContext.user; + if (user) { + if (user.name) qs += '&name=' + encode(user.name); + if (user.email) qs += '&email=' + encode(user.email); + } + + var globalServer = this._getGlobalServer(this._parseDSN(dsn)); + + var script = _document.createElement('script'); + script.async = true; + script.src = globalServer + '/api/embed/error-page/' + qs; + (_document.head || _document.body).appendChild(script); + }, + + /**** Private functions ****/ + _ignoreNextOnError: function() { + var self = this; + this._ignoreOnError += 1; + setTimeout(function() { + // onerror should trigger before setTimeout + self._ignoreOnError -= 1; + }); + }, + + _triggerEvent: function(eventType, options) { + // NOTE: `event` is a native browser thing, so let's avoid conflicting wiht it + var evt, key; + + if (!this._hasDocument) return; + + options = options || {}; + + eventType = 'raven' + eventType.substr(0, 1).toUpperCase() + eventType.substr(1); + + if (_document.createEvent) { + evt = _document.createEvent('HTMLEvents'); + evt.initEvent(eventType, true, true); + } else { + evt = _document.createEventObject(); + evt.eventType = eventType; + } + + for (key in options) + if (hasKey(options, key)) { + evt[key] = options[key]; + } + + if (_document.createEvent) { + // IE9 if standards + _document.dispatchEvent(evt); + } else { + // IE8 regardless of Quirks or Standards + // IE9 if quirks + try { + _document.fireEvent('on' + evt.eventType.toLowerCase(), evt); + } catch (e) { + // Do nothing + } + } + }, + + /** + * Wraps addEventListener to capture UI breadcrumbs + * @param evtName the event name (e.g. "click") + * @returns {Function} + * @private + */ + _breadcrumbEventHandler: function(evtName) { + var self = this; + return function(evt) { + // reset keypress timeout; e.g. triggering a 'click' after + // a 'keypress' will reset the keypress debounce so that a new + // set of keypresses can be recorded + self._keypressTimeout = null; + + // It's possible this handler might trigger multiple times for the same + // event (e.g. event propagation through node ancestors). Ignore if we've + // already captured the event. + if (self._lastCapturedEvent === evt) return; + + self._lastCapturedEvent = evt; + + // try/catch both: + // - accessing evt.target (see getsentry/raven-js#838, #768) + // - `htmlTreeAsString` because it's complex, and just accessing the DOM incorrectly + // can throw an exception in some circumstances. + var target; + try { + target = htmlTreeAsString(evt.target); + } catch (e) { + target = ''; + } + + self.captureBreadcrumb({ + category: 'ui.' + evtName, // e.g. ui.click, ui.input + message: target + }); + }; + }, + + /** + * Wraps addEventListener to capture keypress UI events + * @returns {Function} + * @private + */ + _keypressEventHandler: function() { + var self = this, + debounceDuration = 1000; // milliseconds + + // TODO: if somehow user switches keypress target before + // debounce timeout is triggered, we will only capture + // a single breadcrumb from the FIRST target (acceptable?) + return function(evt) { + var target; + try { + target = evt.target; + } catch (e) { + // just accessing event properties can throw an exception in some rare circumstances + // see: https://github.com/getsentry/raven-js/issues/838 + return; + } + var tagName = target && target.tagName; + + // only consider keypress events on actual input elements + // this will disregard keypresses targeting body (e.g. tabbing + // through elements, hotkeys, etc) + if ( + !tagName || + (tagName !== 'INPUT' && tagName !== 'TEXTAREA' && !target.isContentEditable) + ) + return; + + // record first keypress in a series, but ignore subsequent + // keypresses until debounce clears + var timeout = self._keypressTimeout; + if (!timeout) { + self._breadcrumbEventHandler('input')(evt); + } + clearTimeout(timeout); + self._keypressTimeout = setTimeout(function() { + self._keypressTimeout = null; + }, debounceDuration); + }; + }, + + /** + * Captures a breadcrumb of type "navigation", normalizing input URLs + * @param to the originating URL + * @param from the target URL + * @private + */ + _captureUrlChange: function(from, to) { + var parsedLoc = parseUrl(this._location.href); + var parsedTo = parseUrl(to); + var parsedFrom = parseUrl(from); + + // because onpopstate only tells you the "new" (to) value of location.href, and + // not the previous (from) value, we need to track the value of the current URL + // state ourselves + this._lastHref = to; + + // Use only the path component of the URL if the URL matches the current + // document (almost all the time when using pushState) + if (parsedLoc.protocol === parsedTo.protocol && parsedLoc.host === parsedTo.host) + to = parsedTo.relative; + if (parsedLoc.protocol === parsedFrom.protocol && parsedLoc.host === parsedFrom.host) + from = parsedFrom.relative; + + this.captureBreadcrumb({ + category: 'navigation', + data: { + to: to, + from: from + } + }); + }, + + _patchFunctionToString: function() { + var self = this; + self._originalFunctionToString = Function.prototype.toString; + // eslint-disable-next-line no-extend-native + Function.prototype.toString = function() { + if (typeof this === 'function' && this.__raven__) { + return self._originalFunctionToString.apply(this.__orig__, arguments); + } + return self._originalFunctionToString.apply(this, arguments); + }; + }, + + _unpatchFunctionToString: function() { + if (this._originalFunctionToString) { + // eslint-disable-next-line no-extend-native + Function.prototype.toString = this._originalFunctionToString; + } + }, + + /** + * Wrap timer functions and event targets to catch errors and provide + * better metadata. + */ + _instrumentTryCatch: function() { + var self = this; + + var wrappedBuiltIns = self._wrappedBuiltIns; + + function wrapTimeFn(orig) { + return function(fn, t) { + // preserve arity + // Make a copy of the arguments to prevent deoptimization + // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments + var args = new Array(arguments.length); + for (var i = 0; i < args.length; ++i) { + args[i] = arguments[i]; + } + var originalCallback = args[0]; + if (isFunction(originalCallback)) { + args[0] = self.wrap(originalCallback); + } + + // IE < 9 doesn't support .call/.apply on setInterval/setTimeout, but it + // also supports only two arguments and doesn't care what this is, so we + // can just call the original function directly. + if (orig.apply) { + return orig.apply(this, args); + } else { + return orig(args[0], args[1]); + } + }; + } + + var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; + + function wrapEventTarget(global) { + var proto = _window[global] && _window[global].prototype; + if (proto && proto.hasOwnProperty && proto.hasOwnProperty('addEventListener')) { + fill( + proto, + 'addEventListener', + function(orig) { + return function(evtName, fn, capture, secure) { + // preserve arity + try { + if (fn && fn.handleEvent) { + fn.handleEvent = self.wrap(fn.handleEvent); + } + } catch (err) { + // can sometimes get 'Permission denied to access property "handle Event' + } + + // More breadcrumb DOM capture ... done here and not in `_instrumentBreadcrumbs` + // so that we don't have more than one wrapper function + var before, clickHandler, keypressHandler; + + if ( + autoBreadcrumbs && + autoBreadcrumbs.dom && + (global === 'EventTarget' || global === 'Node') + ) { + // NOTE: generating multiple handlers per addEventListener invocation, should + // revisit and verify we can just use one (almost certainly) + clickHandler = self._breadcrumbEventHandler('click'); + keypressHandler = self._keypressEventHandler(); + before = function(evt) { + // need to intercept every DOM event in `before` argument, in case that + // same wrapped method is re-used for different events (e.g. mousemove THEN click) + // see #724 + if (!evt) return; + + var eventType; + try { + eventType = evt.type; + } catch (e) { + // just accessing event properties can throw an exception in some rare circumstances + // see: https://github.com/getsentry/raven-js/issues/838 + return; + } + if (eventType === 'click') return clickHandler(evt); + else if (eventType === 'keypress') return keypressHandler(evt); + }; + } + return orig.call( + this, + evtName, + self.wrap(fn, undefined, before), + capture, + secure + ); + }; + }, + wrappedBuiltIns + ); + fill( + proto, + 'removeEventListener', + function(orig) { + return function(evt, fn, capture, secure) { + try { + fn = fn && (fn.__raven_wrapper__ ? fn.__raven_wrapper__ : fn); + } catch (e) { + // ignore, accessing __raven_wrapper__ will throw in some Selenium environments + } + return orig.call(this, evt, fn, capture, secure); + }; + }, + wrappedBuiltIns + ); + } + } + + fill(_window, 'setTimeout', wrapTimeFn, wrappedBuiltIns); + fill(_window, 'setInterval', wrapTimeFn, wrappedBuiltIns); + if (_window.requestAnimationFrame) { + fill( + _window, + 'requestAnimationFrame', + function(orig) { + return function(cb) { + return orig(self.wrap(cb)); + }; + }, + wrappedBuiltIns + ); + } + + // event targets borrowed from bugsnag-js: + // https://github.com/bugsnag/bugsnag-js/blob/master/src/bugsnag.js#L666 + var eventTargets = [ + 'EventTarget', + 'Window', + 'Node', + 'ApplicationCache', + 'AudioTrackList', + 'ChannelMergerNode', + 'CryptoOperation', + 'EventSource', + 'FileReader', + 'HTMLUnknownElement', + 'IDBDatabase', + 'IDBRequest', + 'IDBTransaction', + 'KeyOperation', + 'MediaController', + 'MessagePort', + 'ModalWindow', + 'Notification', + 'SVGElementInstance', + 'Screen', + 'TextTrack', + 'TextTrackCue', + 'TextTrackList', + 'WebSocket', + 'WebSocketWorker', + 'Worker', + 'XMLHttpRequest', + 'XMLHttpRequestEventTarget', + 'XMLHttpRequestUpload' + ]; + for (var i = 0; i < eventTargets.length; i++) { + wrapEventTarget(eventTargets[i]); + } + }, + + /** + * Instrument browser built-ins w/ breadcrumb capturing + * - XMLHttpRequests + * - DOM interactions (click/typing) + * - window.location changes + * - console + * + * Can be disabled or individually configured via the `autoBreadcrumbs` config option + */ + _instrumentBreadcrumbs: function() { + var self = this; + var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; + + var wrappedBuiltIns = self._wrappedBuiltIns; + + function wrapProp(prop, xhr) { + if (prop in xhr && isFunction(xhr[prop])) { + fill(xhr, prop, function(orig) { + return self.wrap(orig); + }); // intentionally don't track filled methods on XHR instances + } + } + + if (autoBreadcrumbs.xhr && 'XMLHttpRequest' in _window) { + var xhrproto = _window.XMLHttpRequest && _window.XMLHttpRequest.prototype; + fill( + xhrproto, + 'open', + function(origOpen) { + return function(method, url) { + // preserve arity + + // if Sentry key appears in URL, don't capture + if (isString(url) && url.indexOf(self._globalKey) === -1) { + this.__raven_xhr = { + method: method, + url: url, + status_code: null + }; + } + + return origOpen.apply(this, arguments); + }; + }, + wrappedBuiltIns + ); + + fill( + xhrproto, + 'send', + function(origSend) { + return function() { + // preserve arity + var xhr = this; + + function onreadystatechangeHandler() { + if (xhr.__raven_xhr && xhr.readyState === 4) { + try { + // touching statusCode in some platforms throws + // an exception + xhr.__raven_xhr.status_code = xhr.status; + } catch (e) { + /* do nothing */ + } + + self.captureBreadcrumb({ + type: 'http', + category: 'xhr', + data: xhr.__raven_xhr + }); + } + } + + var props = ['onload', 'onerror', 'onprogress']; + for (var j = 0; j < props.length; j++) { + wrapProp(props[j], xhr); + } + + if ('onreadystatechange' in xhr && isFunction(xhr.onreadystatechange)) { + fill( + xhr, + 'onreadystatechange', + function(orig) { + return self.wrap(orig, undefined, onreadystatechangeHandler); + } /* intentionally don't track this instrumentation */ + ); + } else { + // if onreadystatechange wasn't actually set by the page on this xhr, we + // are free to set our own and capture the breadcrumb + xhr.onreadystatechange = onreadystatechangeHandler; + } + + return origSend.apply(this, arguments); + }; + }, + wrappedBuiltIns + ); + } + + if (autoBreadcrumbs.xhr && supportsFetch()) { + fill( + _window, + 'fetch', + function(origFetch) { + return function() { + // preserve arity + // Make a copy of the arguments to prevent deoptimization + // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments + var args = new Array(arguments.length); + for (var i = 0; i < args.length; ++i) { + args[i] = arguments[i]; + } + + var fetchInput = args[0]; + var method = 'GET'; + var url; + + if (typeof fetchInput === 'string') { + url = fetchInput; + } else if ('Request' in _window && fetchInput instanceof _window.Request) { + url = fetchInput.url; + if (fetchInput.method) { + method = fetchInput.method; + } + } else { + url = '' + fetchInput; + } + + // if Sentry key appears in URL, don't capture, as it's our own request + if (url.indexOf(self._globalKey) !== -1) { + return origFetch.apply(this, args); + } + + if (args[1] && args[1].method) { + method = args[1].method; + } + + var fetchData = { + method: method, + url: url, + status_code: null + }; + + return origFetch + .apply(this, args) + .then(function(response) { + fetchData.status_code = response.status; + + self.captureBreadcrumb({ + type: 'http', + category: 'fetch', + data: fetchData + }); + + return response; + }) + ['catch'](function(err) { + // if there is an error performing the request + self.captureBreadcrumb({ + type: 'http', + category: 'fetch', + data: fetchData, + level: 'error' + }); + + throw err; + }); + }; + }, + wrappedBuiltIns + ); + } + + // Capture breadcrumbs from any click that is unhandled / bubbled up all the way + // to the document. Do this before we instrument addEventListener. + if (autoBreadcrumbs.dom && this._hasDocument) { + if (_document.addEventListener) { + _document.addEventListener('click', self._breadcrumbEventHandler('click'), false); + _document.addEventListener('keypress', self._keypressEventHandler(), false); + } else if (_document.attachEvent) { + // IE8 Compatibility + _document.attachEvent('onclick', self._breadcrumbEventHandler('click')); + _document.attachEvent('onkeypress', self._keypressEventHandler()); + } + } + + // record navigation (URL) changes + // NOTE: in Chrome App environment, touching history.pushState, *even inside + // a try/catch block*, will cause Chrome to output an error to console.error + // borrowed from: https://github.com/angular/angular.js/pull/13945/files + var chrome = _window.chrome; + var isChromePackagedApp = chrome && chrome.app && chrome.app.runtime; + var hasPushAndReplaceState = + !isChromePackagedApp && + _window.history && + _window.history.pushState && + _window.history.replaceState; + if (autoBreadcrumbs.location && hasPushAndReplaceState) { + // TODO: remove onpopstate handler on uninstall() + var oldOnPopState = _window.onpopstate; + _window.onpopstate = function() { + var currentHref = self._location.href; + self._captureUrlChange(self._lastHref, currentHref); + + if (oldOnPopState) { + return oldOnPopState.apply(this, arguments); + } + }; + + var historyReplacementFunction = function(origHistFunction) { + // note history.pushState.length is 0; intentionally not declaring + // params to preserve 0 arity + return function(/* state, title, url */) { + var url = arguments.length > 2 ? arguments[2] : undefined; + + // url argument is optional + if (url) { + // coerce to string (this is what pushState does) + self._captureUrlChange(self._lastHref, url + ''); + } + + return origHistFunction.apply(this, arguments); + }; + }; + + fill(_window.history, 'pushState', historyReplacementFunction, wrappedBuiltIns); + fill(_window.history, 'replaceState', historyReplacementFunction, wrappedBuiltIns); + } + + if (autoBreadcrumbs.console && 'console' in _window && console.log) { + // console + var consoleMethodCallback = function(msg, data) { + self.captureBreadcrumb({ + message: msg, + level: data.level, + category: 'console' + }); + }; + + each(['debug', 'info', 'warn', 'error', 'log'], function(_, level) { + wrapConsoleMethod(console, level, consoleMethodCallback); + }); + } + }, + + _restoreBuiltIns: function() { + // restore any wrapped builtins + var builtin; + while (this._wrappedBuiltIns.length) { + builtin = this._wrappedBuiltIns.shift(); + + var obj = builtin[0], + name = builtin[1], + orig = builtin[2]; + + obj[name] = orig; + } + }, + + _restoreConsole: function() { + // eslint-disable-next-line guard-for-in + for (var method in this._originalConsoleMethods) { + this._originalConsole[method] = this._originalConsoleMethods[method]; + } + }, + + _drainPlugins: function() { + var self = this; + + // FIX ME TODO + each(this._plugins, function(_, plugin) { + var installer = plugin[0]; + var args = plugin[1]; + installer.apply(self, [self].concat(args)); + }); + }, + + _parseDSN: function(str) { + var m = dsnPattern.exec(str), + dsn = {}, + i = 7; + + try { + while (i--) dsn[dsnKeys[i]] = m[i] || ''; + } catch (e) { + throw new RavenConfigError('Invalid DSN: ' + str); + } + + if (dsn.pass && !this._globalOptions.allowSecretKey) { + throw new RavenConfigError( + 'Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key' + ); + } + + return dsn; + }, + + _getGlobalServer: function(uri) { + // assemble the endpoint from the uri pieces + var globalServer = '//' + uri.host + (uri.port ? ':' + uri.port : ''); + + if (uri.protocol) { + globalServer = uri.protocol + ':' + globalServer; + } + return globalServer; + }, + + _handleOnErrorStackInfo: function() { + // if we are intentionally ignoring errors via onerror, bail out + if (!this._ignoreOnError) { + this._handleStackInfo.apply(this, arguments); + } + }, + + _handleStackInfo: function(stackInfo, options) { + var frames = this._prepareFrames(stackInfo, options); + + this._triggerEvent('handle', { + stackInfo: stackInfo, + options: options + }); + + this._processException( + stackInfo.name, + stackInfo.message, + stackInfo.url, + stackInfo.lineno, + frames, + options + ); + }, + + _prepareFrames: function(stackInfo, options) { + var self = this; + var frames = []; + if (stackInfo.stack && stackInfo.stack.length) { + each(stackInfo.stack, function(i, stack) { + var frame = self._normalizeFrame(stack, stackInfo.url); + if (frame) { + frames.push(frame); + } + }); + + // e.g. frames captured via captureMessage throw + if (options && options.trimHeadFrames) { + for (var j = 0; j < options.trimHeadFrames && j < frames.length; j++) { + frames[j].in_app = false; + } + } + } + frames = frames.slice(0, this._globalOptions.stackTraceLimit); + return frames; + }, + + _normalizeFrame: function(frame, stackInfoUrl) { + // normalize the frames data + var normalized = { + filename: frame.url, + lineno: frame.line, + colno: frame.column, + function: frame.func || '?' + }; + + // Case when we don't have any information about the error + // E.g. throwing a string or raw object, instead of an `Error` in Firefox + // Generating synthetic error doesn't add any value here + // + // We should probably somehow let a user know that they should fix their code + if (!frame.url) { + normalized.filename = stackInfoUrl; // fallback to whole stacks url from onerror handler + } + + normalized.in_app = !// determine if an exception came from outside of our app + // first we check the global includePaths list. + ( + (!!this._globalOptions.includePaths.test && + !this._globalOptions.includePaths.test(normalized.filename)) || + // Now we check for fun, if the function name is Raven or TraceKit + /(Raven|TraceKit)\./.test(normalized['function']) || + // finally, we do a last ditch effort and check for raven.min.js + /raven\.(min\.)?js$/.test(normalized.filename) + ); + + return normalized; + }, + + _processException: function(type, message, fileurl, lineno, frames, options) { + var prefixedMessage = (type ? type + ': ' : '') + (message || ''); + if ( + !!this._globalOptions.ignoreErrors.test && + (this._globalOptions.ignoreErrors.test(message) || + this._globalOptions.ignoreErrors.test(prefixedMessage)) + ) { + return; + } + + var stacktrace; + + if (frames && frames.length) { + fileurl = frames[0].filename || fileurl; + // Sentry expects frames oldest to newest + // and JS sends them as newest to oldest + frames.reverse(); + stacktrace = {frames: frames}; + } else if (fileurl) { + stacktrace = { + frames: [ + { + filename: fileurl, + lineno: lineno, + in_app: true + } + ] + }; + } + + if ( + !!this._globalOptions.ignoreUrls.test && + this._globalOptions.ignoreUrls.test(fileurl) + ) { + return; + } + + if ( + !!this._globalOptions.whitelistUrls.test && + !this._globalOptions.whitelistUrls.test(fileurl) + ) { + return; + } + + var data = objectMerge( + { + // sentry.interfaces.Exception + exception: { + values: [ + { + type: type, + value: message, + stacktrace: stacktrace + } + ] + }, + transaction: fileurl + }, + options + ); + + // Fire away! + this._send(data); + }, + + _trimPacket: function(data) { + // For now, we only want to truncate the two different messages + // but this could/should be expanded to just trim everything + var max = this._globalOptions.maxMessageLength; + if (data.message) { + data.message = truncate(data.message, max); + } + if (data.exception) { + var exception = data.exception.values[0]; + exception.value = truncate(exception.value, max); + } + + var request = data.request; + if (request) { + if (request.url) { + request.url = truncate(request.url, this._globalOptions.maxUrlLength); + } + if (request.Referer) { + request.Referer = truncate(request.Referer, this._globalOptions.maxUrlLength); + } + } + + if (data.breadcrumbs && data.breadcrumbs.values) + this._trimBreadcrumbs(data.breadcrumbs); + + return data; + }, + + /** + * Truncate breadcrumb values (right now just URLs) + */ + _trimBreadcrumbs: function(breadcrumbs) { + // known breadcrumb properties with urls + // TODO: also consider arbitrary prop values that start with (https?)?:// + var urlProps = ['to', 'from', 'url'], + urlProp, + crumb, + data; + + for (var i = 0; i < breadcrumbs.values.length; ++i) { + crumb = breadcrumbs.values[i]; + if ( + !crumb.hasOwnProperty('data') || + !isObject(crumb.data) || + objectFrozen(crumb.data) + ) + continue; + + data = objectMerge({}, crumb.data); + for (var j = 0; j < urlProps.length; ++j) { + urlProp = urlProps[j]; + if (data.hasOwnProperty(urlProp) && data[urlProp]) { + data[urlProp] = truncate(data[urlProp], this._globalOptions.maxUrlLength); + } + } + breadcrumbs.values[i].data = data; + } + }, + + _getHttpData: function() { + if (!this._hasNavigator && !this._hasDocument) return; + var httpData = {}; + + if (this._hasNavigator && _navigator.userAgent) { + httpData.headers = { + 'User-Agent': _navigator.userAgent + }; + } + + // Check in `window` instead of `document`, as we may be in ServiceWorker environment + if (_window.location && _window.location.href) { + httpData.url = _window.location.href; + } + + if (this._hasDocument && _document.referrer) { + if (!httpData.headers) httpData.headers = {}; + httpData.headers.Referer = _document.referrer; + } + + return httpData; + }, + + _resetBackoff: function() { + this._backoffDuration = 0; + this._backoffStart = null; + }, + + _shouldBackoff: function() { + return this._backoffDuration && now() - this._backoffStart < this._backoffDuration; + }, + + /** + * Returns true if the in-process data payload matches the signature + * of the previously-sent data + * + * NOTE: This has to be done at this level because TraceKit can generate + * data from window.onerror WITHOUT an exception object (IE8, IE9, + * other old browsers). This can take the form of an "exception" + * data object with a single frame (derived from the onerror args). + */ + _isRepeatData: function(current) { + var last = this._lastData; + + if ( + !last || + current.message !== last.message || // defined for captureMessage + current.transaction !== last.transaction // defined for captureException/onerror + ) + return false; + + // Stacktrace interface (i.e. from captureMessage) + if (current.stacktrace || last.stacktrace) { + return isSameStacktrace(current.stacktrace, last.stacktrace); + } else if (current.exception || last.exception) { + // Exception interface (i.e. from captureException/onerror) + return isSameException(current.exception, last.exception); + } + + return true; + }, + + _setBackoffState: function(request) { + // If we are already in a backoff state, don't change anything + if (this._shouldBackoff()) { + return; + } + + var status = request.status; + + // 400 - project_id doesn't exist or some other fatal + // 401 - invalid/revoked dsn + // 429 - too many requests + if (!(status === 400 || status === 401 || status === 429)) return; + + var retry; + try { + // If Retry-After is not in Access-Control-Expose-Headers, most + // browsers will throw an exception trying to access it + if (supportsFetch()) { + retry = request.headers.get('Retry-After'); + } else { + retry = request.getResponseHeader('Retry-After'); + } + + // Retry-After is returned in seconds + retry = parseInt(retry, 10) * 1000; + } catch (e) { + /* eslint no-empty:0 */ + } + + this._backoffDuration = retry + ? // If Sentry server returned a Retry-After value, use it + retry + : // Otherwise, double the last backoff duration (starts at 1 sec) + this._backoffDuration * 2 || 1000; + + this._backoffStart = now(); + }, + + _send: function(data) { + var globalOptions = this._globalOptions; + + var baseData = { + project: this._globalProject, + logger: globalOptions.logger, + platform: 'javascript' + }, + httpData = this._getHttpData(); + + if (httpData) { + baseData.request = httpData; + } + + // HACK: delete `trimHeadFrames` to prevent from appearing in outbound payload + if (data.trimHeadFrames) delete data.trimHeadFrames; + + data = objectMerge(baseData, data); + + // Merge in the tags and extra separately since objectMerge doesn't handle a deep merge + data.tags = objectMerge(objectMerge({}, this._globalContext.tags), data.tags); + data.extra = objectMerge(objectMerge({}, this._globalContext.extra), data.extra); + + // Send along our own collected metadata with extra + data.extra['session:duration'] = now() - this._startTime; + + if (this._breadcrumbs && this._breadcrumbs.length > 0) { + // intentionally make shallow copy so that additions + // to breadcrumbs aren't accidentally sent in this request + data.breadcrumbs = { + values: [].slice.call(this._breadcrumbs, 0) + }; + } + + if (this._globalContext.user) { + // sentry.interfaces.User + data.user = this._globalContext.user; + } + + // Include the environment if it's defined in globalOptions + if (globalOptions.environment) data.environment = globalOptions.environment; + + // Include the release if it's defined in globalOptions + if (globalOptions.release) data.release = globalOptions.release; + + // Include server_name if it's defined in globalOptions + if (globalOptions.serverName) data.server_name = globalOptions.serverName; + + data = this._sanitizeData(data); + + // Cleanup empty properties before sending them to the server + Object.keys(data).forEach(function(key) { + if (data[key] == null || data[key] === '' || isEmptyObject(data[key])) { + delete data[key]; + } + }); + + if (isFunction(globalOptions.dataCallback)) { + data = globalOptions.dataCallback(data) || data; + } + + // Why?????????? + if (!data || isEmptyObject(data)) { + return; + } + + // Check if the request should be filtered or not + if ( + isFunction(globalOptions.shouldSendCallback) && + !globalOptions.shouldSendCallback(data) + ) { + return; + } + + // Backoff state: Sentry server previously responded w/ an error (e.g. 429 - too many requests), + // so drop requests until "cool-off" period has elapsed. + if (this._shouldBackoff()) { + this._logDebug('warn', 'Raven dropped error due to backoff: ', data); + return; + } + + if (typeof globalOptions.sampleRate === 'number') { + if (Math.random() < globalOptions.sampleRate) { + this._sendProcessedPayload(data); + } + } else { + this._sendProcessedPayload(data); + } + }, + + _sanitizeData: function(data) { + return sanitize(data, this._globalOptions.sanitizeKeys); + }, + + _getUuid: function() { + return uuid4(); + }, + + _sendProcessedPayload: function(data, callback) { + var self = this; + var globalOptions = this._globalOptions; + + if (!this.isSetup()) return; + + // Try and clean up the packet before sending by truncating long values + data = this._trimPacket(data); + + // ideally duplicate error testing should occur *before* dataCallback/shouldSendCallback, + // but this would require copying an un-truncated copy of the data packet, which can be + // arbitrarily deep (extra_data) -- could be worthwhile? will revisit + if (!this._globalOptions.allowDuplicates && this._isRepeatData(data)) { + this._logDebug('warn', 'Raven dropped repeat event: ', data); + return; + } + + // Send along an event_id if not explicitly passed. + // This event_id can be used to reference the error within Sentry itself. + // Set lastEventId after we know the error should actually be sent + this._lastEventId = data.event_id || (data.event_id = this._getUuid()); + + // Store outbound payload after trim + this._lastData = data; + + this._logDebug('debug', 'Raven about to send:', data); + + var auth = { + sentry_version: '7', + sentry_client: 'raven-js/' + this.VERSION, + sentry_key: this._globalKey + }; + + if (this._globalSecret) { + auth.sentry_secret = this._globalSecret; + } + + var exception = data.exception && data.exception.values[0]; + + // only capture 'sentry' breadcrumb is autoBreadcrumbs is truthy + if ( + this._globalOptions.autoBreadcrumbs && + this._globalOptions.autoBreadcrumbs.sentry + ) { + this.captureBreadcrumb({ + category: 'sentry', + message: exception + ? (exception.type ? exception.type + ': ' : '') + exception.value + : data.message, + event_id: data.event_id, + level: data.level || 'error' // presume error unless specified + }); + } + + var url = this._globalEndpoint; + (globalOptions.transport || this._makeRequest).call(this, { + url: url, + auth: auth, + data: data, + options: globalOptions, + onSuccess: function success() { + self._resetBackoff(); + + self._triggerEvent('success', { + data: data, + src: url + }); + callback && callback(); + }, + onError: function failure(error) { + self._logDebug('error', 'Raven transport failed to send: ', error); + + if (error.request) { + self._setBackoffState(error.request); + } + + self._triggerEvent('failure', { + data: data, + src: url + }); + error = error || new Error('Raven send failed (no additional details provided)'); + callback && callback(error); + } + }); + }, + + _makeRequest: function(opts) { + // Auth is intentionally sent as part of query string (NOT as custom HTTP header) to avoid preflight CORS requests + var url = opts.url + '?' + urlencode(opts.auth); + + var evaluatedHeaders = null; + var evaluatedFetchParameters = {}; + + if (opts.options.headers) { + evaluatedHeaders = this._evaluateHash(opts.options.headers); + } + + if (opts.options.fetchParameters) { + evaluatedFetchParameters = this._evaluateHash(opts.options.fetchParameters); + } + + if (supportsFetch()) { + evaluatedFetchParameters.body = stringify(opts.data); + + var defaultFetchOptions = objectMerge({}, this._fetchDefaults); + var fetchOptions = objectMerge(defaultFetchOptions, evaluatedFetchParameters); + + if (evaluatedHeaders) { + fetchOptions.headers = evaluatedHeaders; + } + + return _window + .fetch(url, fetchOptions) + .then(function(response) { + if (response.ok) { + opts.onSuccess && opts.onSuccess(); + } else { + var error = new Error('Sentry error code: ' + response.status); + // It's called request only to keep compatibility with XHR interface + // and not add more redundant checks in setBackoffState method + error.request = response; + opts.onError && opts.onError(error); + } + }) + ['catch'](function() { + opts.onError && + opts.onError(new Error('Sentry error code: network unavailable')); + }); + } + + var request = _window.XMLHttpRequest && new _window.XMLHttpRequest(); + if (!request) return; + + // if browser doesn't support CORS (e.g. IE7), we are out of luck + var hasCORS = 'withCredentials' in request || typeof XDomainRequest !== 'undefined'; + + if (!hasCORS) return; + + if ('withCredentials' in request) { + request.onreadystatechange = function() { + if (request.readyState !== 4) { + return; + } else if (request.status === 200) { + opts.onSuccess && opts.onSuccess(); + } else if (opts.onError) { + var err = new Error('Sentry error code: ' + request.status); + err.request = request; + opts.onError(err); + } + }; + } else { + request = new XDomainRequest(); + // xdomainrequest cannot go http -> https (or vice versa), + // so always use protocol relative + url = url.replace(/^https?:/, ''); + + // onreadystatechange not supported by XDomainRequest + if (opts.onSuccess) { + request.onload = opts.onSuccess; + } + if (opts.onError) { + request.onerror = function() { + var err = new Error('Sentry error code: XDomainRequest'); + err.request = request; + opts.onError(err); + }; + } + } + + request.open('POST', url); + + if (evaluatedHeaders) { + each(evaluatedHeaders, function(key, value) { + request.setRequestHeader(key, value); + }); + } + + request.send(stringify(opts.data)); + }, + + _evaluateHash: function(hash) { + var evaluated = {}; + + for (var key in hash) { + if (hash.hasOwnProperty(key)) { + var value = hash[key]; + evaluated[key] = typeof value === 'function' ? value() : value; + } + } + + return evaluated; + }, + + _logDebug: function(level) { + // We allow `Raven.debug` and `Raven.config(DSN, { debug: true })` to not make backward incompatible API change + if ( + this._originalConsoleMethods[level] && + (this.debug || this._globalOptions.debug) + ) { + // In IE<10 console methods do not have their own 'apply' method + Function.prototype.apply.call( + this._originalConsoleMethods[level], + this._originalConsole, + [].slice.call(arguments, 1) + ); + } + }, + + _mergeContext: function(key, context) { + if (isUndefined(context)) { + delete this._globalContext[key]; + } else { + this._globalContext[key] = objectMerge(this._globalContext[key] || {}, context); + } + } +}; + +// Deprecations +Raven.prototype.setUser = Raven.prototype.setUserContext; +Raven.prototype.setReleaseContext = Raven.prototype.setRelease; + +module.exports = Raven; + +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"10":10,"3":3,"4":4,"7":7,"8":8,"9":9}],6:[function(_dereq_,module,exports){ +(function (global){ +/** + * Enforces a single instance of the Raven client, and the + * main entry point for Raven. If you are a consumer of the + * Raven library, you SHOULD load this file (vs raven.js). + **/ + +var RavenConstructor = _dereq_(5); + +// This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) +var _window = + typeof window !== 'undefined' + ? window + : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; +var _Raven = _window.Raven; + +var Raven = new RavenConstructor(); + +/* + * Allow multiple versions of Raven to be installed. + * Strip Raven from the global context and returns the instance. + * + * @return {Raven} + */ +Raven.noConflict = function() { + _window.Raven = _Raven; + return Raven; +}; + +Raven.afterLoad(); + +module.exports = Raven; + +/** + * DISCLAIMER: + * + * Expose `Client` constructor for cases where user want to track multiple "sub-applications" in one larger app. + * It's not meant to be used by a wide audience, so pleaaase make sure that you know what you're doing before using it. + * Accidentally calling `install` multiple times, may result in an unexpected behavior that's very hard to debug. + * + * It's called `Client' to be in-line with Raven Node implementation. + * + * HOWTO: + * + * import Raven from 'raven-js'; + * + * const someAppReporter = new Raven.Client(); + * const someOtherAppReporter = new Raven.Client(); + * + * someAppReporter.config('__DSN__', { + * ...config goes here + * }); + * + * someOtherAppReporter.config('__OTHER_DSN__', { + * ...config goes here + * }); + * + * someAppReporter.captureMessage(...); + * someAppReporter.captureException(...); + * someAppReporter.captureBreadcrumb(...); + * + * someOtherAppReporter.captureMessage(...); + * someOtherAppReporter.captureException(...); + * someOtherAppReporter.captureBreadcrumb(...); + * + * It should "just work". + */ +module.exports.Client = RavenConstructor; + +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"5":5}],7:[function(_dereq_,module,exports){ +(function (global){ +var stringify = _dereq_(9); + +var _window = + typeof window !== 'undefined' + ? window + : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; + +function isObject(what) { + return typeof what === 'object' && what !== null; +} + +// Yanked from https://git.io/vS8DV re-used under CC0 +// with some tiny modifications +function isError(value) { + switch (Object.prototype.toString.call(value)) { + case '[object Error]': + return true; + case '[object Exception]': + return true; + case '[object DOMException]': + return true; + default: + return value instanceof Error; + } +} + +function isErrorEvent(value) { + return Object.prototype.toString.call(value) === '[object ErrorEvent]'; +} + +function isDOMError(value) { + return Object.prototype.toString.call(value) === '[object DOMError]'; +} + +function isDOMException(value) { + return Object.prototype.toString.call(value) === '[object DOMException]'; +} + +function isUndefined(what) { + return what === void 0; +} + +function isFunction(what) { + return typeof what === 'function'; +} + +function isPlainObject(what) { + return Object.prototype.toString.call(what) === '[object Object]'; +} + +function isString(what) { + return Object.prototype.toString.call(what) === '[object String]'; +} + +function isArray(what) { + return Object.prototype.toString.call(what) === '[object Array]'; +} + +function isEmptyObject(what) { + if (!isPlainObject(what)) return false; + + for (var _ in what) { + if (what.hasOwnProperty(_)) { + return false; + } + } + return true; +} + +function supportsErrorEvent() { + try { + new ErrorEvent(''); // eslint-disable-line no-new + return true; + } catch (e) { + return false; + } +} + +function supportsDOMError() { + try { + new DOMError(''); // eslint-disable-line no-new + return true; + } catch (e) { + return false; + } +} + +function supportsDOMException() { + try { + new DOMException(''); // eslint-disable-line no-new + return true; + } catch (e) { + return false; + } +} + +function supportsFetch() { + if (!('fetch' in _window)) return false; + + try { + new Headers(); // eslint-disable-line no-new + new Request(''); // eslint-disable-line no-new + new Response(); // eslint-disable-line no-new + return true; + } catch (e) { + return false; + } +} + +// Despite all stars in the sky saying that Edge supports old draft syntax, aka 'never', 'always', 'origin' and 'default +// https://caniuse.com/#feat=referrer-policy +// It doesn't. And it throw exception instead of ignoring this parameter... +// REF: https://github.com/getsentry/raven-js/issues/1233 +function supportsReferrerPolicy() { + if (!supportsFetch()) return false; + + try { + // eslint-disable-next-line no-new + new Request('pickleRick', { + referrerPolicy: 'origin' + }); + return true; + } catch (e) { + return false; + } +} + +function supportsPromiseRejectionEvent() { + return typeof PromiseRejectionEvent === 'function'; +} + +function wrappedCallback(callback) { + function dataCallback(data, original) { + var normalizedData = callback(data) || data; + if (original) { + return original(normalizedData) || normalizedData; + } + return normalizedData; + } + + return dataCallback; +} + +function each(obj, callback) { + var i, j; + + if (isUndefined(obj.length)) { + for (i in obj) { + if (hasKey(obj, i)) { + callback.call(null, i, obj[i]); + } + } + } else { + j = obj.length; + if (j) { + for (i = 0; i < j; i++) { + callback.call(null, i, obj[i]); + } + } + } +} + +function objectMerge(obj1, obj2) { + if (!obj2) { + return obj1; + } + each(obj2, function(key, value) { + obj1[key] = value; + }); + return obj1; +} + +/** + * This function is only used for react-native. + * react-native freezes object that have already been sent over the + * js bridge. We need this function in order to check if the object is frozen. + * So it's ok that objectFrozen returns false if Object.isFrozen is not + * supported because it's not relevant for other "platforms". See related issue: + * https://github.com/getsentry/react-native-sentry/issues/57 + */ +function objectFrozen(obj) { + if (!Object.isFrozen) { + return false; + } + return Object.isFrozen(obj); +} + +function truncate(str, max) { + if (typeof max !== 'number') { + throw new Error('2nd argument to `truncate` function should be a number'); + } + if (typeof str !== 'string' || max === 0) { + return str; + } + return str.length <= max ? str : str.substr(0, max) + '\u2026'; +} + +/** + * hasKey, a better form of hasOwnProperty + * Example: hasKey(MainHostObject, property) === true/false + * + * @param {Object} host object to check property + * @param {string} key to check + */ +function hasKey(object, key) { + return Object.prototype.hasOwnProperty.call(object, key); +} + +function joinRegExp(patterns) { + // Combine an array of regular expressions and strings into one large regexp + // Be mad. + var sources = [], + i = 0, + len = patterns.length, + pattern; + + for (; i < len; i++) { + pattern = patterns[i]; + if (isString(pattern)) { + // If it's a string, we need to escape it + // Taken from: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions + sources.push(pattern.replace(/([.*+?^=!:${}()|\[\]\/\\])/g, '\\$1')); + } else if (pattern && pattern.source) { + // If it's a regexp already, we want to extract the source + sources.push(pattern.source); + } + // Intentionally skip other cases + } + return new RegExp(sources.join('|'), 'i'); +} + +function urlencode(o) { + var pairs = []; + each(o, function(key, value) { + pairs.push(encodeURIComponent(key) + '=' + encodeURIComponent(value)); + }); + return pairs.join('&'); +} + +// borrowed from https://tools.ietf.org/html/rfc3986#appendix-B +// intentionally using regex and not href parsing trick because React Native and other +// environments where DOM might not be available +function parseUrl(url) { + if (typeof url !== 'string') return {}; + var match = url.match(/^(([^:\/?#]+):)?(\/\/([^\/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?$/); + + // coerce to undefined values to empty string so we don't get 'undefined' + var query = match[6] || ''; + var fragment = match[8] || ''; + return { + protocol: match[2], + host: match[4], + path: match[5], + relative: match[5] + query + fragment // everything minus origin + }; +} +function uuid4() { + var crypto = _window.crypto || _window.msCrypto; + + if (!isUndefined(crypto) && crypto.getRandomValues) { + // Use window.crypto API if available + // eslint-disable-next-line no-undef + var arr = new Uint16Array(8); + crypto.getRandomValues(arr); + + // set 4 in byte 7 + arr[3] = (arr[3] & 0xfff) | 0x4000; + // set 2 most significant bits of byte 9 to '10' + arr[4] = (arr[4] & 0x3fff) | 0x8000; + + var pad = function(num) { + var v = num.toString(16); + while (v.length < 4) { + v = '0' + v; + } + return v; + }; + + return ( + pad(arr[0]) + + pad(arr[1]) + + pad(arr[2]) + + pad(arr[3]) + + pad(arr[4]) + + pad(arr[5]) + + pad(arr[6]) + + pad(arr[7]) + ); + } else { + // http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/2117523#2117523 + return 'xxxxxxxxxxxx4xxxyxxxxxxxxxxxxxxx'.replace(/[xy]/g, function(c) { + var r = (Math.random() * 16) | 0, + v = c === 'x' ? r : (r & 0x3) | 0x8; + return v.toString(16); + }); + } +} + +/** + * Given a child DOM element, returns a query-selector statement describing that + * and its ancestors + * e.g. [HTMLElement] => body > div > input#foo.btn[name=baz] + * @param elem + * @returns {string} + */ +function htmlTreeAsString(elem) { + /* eslint no-extra-parens:0*/ + var MAX_TRAVERSE_HEIGHT = 5, + MAX_OUTPUT_LEN = 80, + out = [], + height = 0, + len = 0, + separator = ' > ', + sepLength = separator.length, + nextStr; + + while (elem && height++ < MAX_TRAVERSE_HEIGHT) { + nextStr = htmlElementAsString(elem); + // bail out if + // - nextStr is the 'html' element + // - the length of the string that would be created exceeds MAX_OUTPUT_LEN + // (ignore this limit if we are on the first iteration) + if ( + nextStr === 'html' || + (height > 1 && len + out.length * sepLength + nextStr.length >= MAX_OUTPUT_LEN) + ) { + break; + } + + out.push(nextStr); + + len += nextStr.length; + elem = elem.parentNode; + } + + return out.reverse().join(separator); +} + +/** + * Returns a simple, query-selector representation of a DOM element + * e.g. [HTMLElement] => input#foo.btn[name=baz] + * @param HTMLElement + * @returns {string} + */ +function htmlElementAsString(elem) { + var out = [], + className, + classes, + key, + attr, + i; + + if (!elem || !elem.tagName) { + return ''; + } + + out.push(elem.tagName.toLowerCase()); + if (elem.id) { + out.push('#' + elem.id); + } + + className = elem.className; + if (className && isString(className)) { + classes = className.split(/\s+/); + for (i = 0; i < classes.length; i++) { + out.push('.' + classes[i]); + } + } + var attrWhitelist = ['type', 'name', 'title', 'alt']; + for (i = 0; i < attrWhitelist.length; i++) { + key = attrWhitelist[i]; + attr = elem.getAttribute(key); + if (attr) { + out.push('[' + key + '="' + attr + '"]'); + } + } + return out.join(''); +} + +/** + * Returns true if either a OR b is truthy, but not both + */ +function isOnlyOneTruthy(a, b) { + return !!(!!a ^ !!b); +} + +/** + * Returns true if both parameters are undefined + */ +function isBothUndefined(a, b) { + return isUndefined(a) && isUndefined(b); +} + +/** + * Returns true if the two input exception interfaces have the same content + */ +function isSameException(ex1, ex2) { + if (isOnlyOneTruthy(ex1, ex2)) return false; + + ex1 = ex1.values[0]; + ex2 = ex2.values[0]; + + if (ex1.type !== ex2.type || ex1.value !== ex2.value) return false; + + // in case both stacktraces are undefined, we can't decide so default to false + if (isBothUndefined(ex1.stacktrace, ex2.stacktrace)) return false; + + return isSameStacktrace(ex1.stacktrace, ex2.stacktrace); +} + +/** + * Returns true if the two input stack trace interfaces have the same content + */ +function isSameStacktrace(stack1, stack2) { + if (isOnlyOneTruthy(stack1, stack2)) return false; + + var frames1 = stack1.frames; + var frames2 = stack2.frames; + + // Exit early if frame count differs + if (frames1.length !== frames2.length) return false; + + // Iterate through every frame; bail out if anything differs + var a, b; + for (var i = 0; i < frames1.length; i++) { + a = frames1[i]; + b = frames2[i]; + if ( + a.filename !== b.filename || + a.lineno !== b.lineno || + a.colno !== b.colno || + a['function'] !== b['function'] + ) + return false; + } + return true; +} + +/** + * Polyfill a method + * @param obj object e.g. `document` + * @param name method name present on object e.g. `addEventListener` + * @param replacement replacement function + * @param track {optional} record instrumentation to an array + */ +function fill(obj, name, replacement, track) { + if (obj == null) return; + var orig = obj[name]; + obj[name] = replacement(orig); + obj[name].__raven__ = true; + obj[name].__orig__ = orig; + if (track) { + track.push([obj, name, orig]); + } +} + +/** + * Join values in array + * @param input array of values to be joined together + * @param delimiter string to be placed in-between values + * @returns {string} + */ +function safeJoin(input, delimiter) { + if (!isArray(input)) return ''; + + var output = []; + + for (var i = 0; i < input.length; i++) { + try { + output.push(String(input[i])); + } catch (e) { + output.push('[value cannot be serialized]'); + } + } + + return output.join(delimiter); +} + +// Default Node.js REPL depth +var MAX_SERIALIZE_EXCEPTION_DEPTH = 3; +// 50kB, as 100kB is max payload size, so half sounds reasonable +var MAX_SERIALIZE_EXCEPTION_SIZE = 50 * 1024; +var MAX_SERIALIZE_KEYS_LENGTH = 40; + +function utf8Length(value) { + return ~-encodeURI(value).split(/%..|./).length; +} + +function jsonSize(value) { + return utf8Length(JSON.stringify(value)); +} + +function serializeValue(value) { + if (typeof value === 'string') { + var maxLength = 40; + return truncate(value, maxLength); + } else if ( + typeof value === 'number' || + typeof value === 'boolean' || + typeof value === 'undefined' + ) { + return value; + } + + var type = Object.prototype.toString.call(value); + + // Node.js REPL notation + if (type === '[object Object]') return '[Object]'; + if (type === '[object Array]') return '[Array]'; + if (type === '[object Function]') + return value.name ? '[Function: ' + value.name + ']' : '[Function]'; + + return value; +} + +function serializeObject(value, depth) { + if (depth === 0) return serializeValue(value); + + if (isPlainObject(value)) { + return Object.keys(value).reduce(function(acc, key) { + acc[key] = serializeObject(value[key], depth - 1); + return acc; + }, {}); + } else if (Array.isArray(value)) { + return value.map(function(val) { + return serializeObject(val, depth - 1); + }); + } + + return serializeValue(value); +} + +function serializeException(ex, depth, maxSize) { + if (!isPlainObject(ex)) return ex; + + depth = typeof depth !== 'number' ? MAX_SERIALIZE_EXCEPTION_DEPTH : depth; + maxSize = typeof depth !== 'number' ? MAX_SERIALIZE_EXCEPTION_SIZE : maxSize; + + var serialized = serializeObject(ex, depth); + + if (jsonSize(stringify(serialized)) > maxSize) { + return serializeException(ex, depth - 1); + } + + return serialized; +} + +function serializeKeysForMessage(keys, maxLength) { + if (typeof keys === 'number' || typeof keys === 'string') return keys.toString(); + if (!Array.isArray(keys)) return ''; + + keys = keys.filter(function(key) { + return typeof key === 'string'; + }); + if (keys.length === 0) return '[object has no keys]'; + + maxLength = typeof maxLength !== 'number' ? MAX_SERIALIZE_KEYS_LENGTH : maxLength; + if (keys[0].length >= maxLength) return keys[0]; + + for (var usedKeys = keys.length; usedKeys > 0; usedKeys--) { + var serialized = keys.slice(0, usedKeys).join(', '); + if (serialized.length > maxLength) continue; + if (usedKeys === keys.length) return serialized; + return serialized + '\u2026'; + } + + return ''; +} + +function sanitize(input, sanitizeKeys) { + if (!isArray(sanitizeKeys) || (isArray(sanitizeKeys) && sanitizeKeys.length === 0)) + return input; + + var sanitizeRegExp = joinRegExp(sanitizeKeys); + var sanitizeMask = '********'; + var safeInput; + + try { + safeInput = JSON.parse(stringify(input)); + } catch (o_O) { + return input; + } + + function sanitizeWorker(workerInput) { + if (isArray(workerInput)) { + return workerInput.map(function(val) { + return sanitizeWorker(val); + }); + } + + if (isPlainObject(workerInput)) { + return Object.keys(workerInput).reduce(function(acc, k) { + if (sanitizeRegExp.test(k)) { + acc[k] = sanitizeMask; + } else { + acc[k] = sanitizeWorker(workerInput[k]); + } + return acc; + }, {}); + } + + return workerInput; + } + + return sanitizeWorker(safeInput); +} + +module.exports = { + isObject: isObject, + isError: isError, + isErrorEvent: isErrorEvent, + isDOMError: isDOMError, + isDOMException: isDOMException, + isUndefined: isUndefined, + isFunction: isFunction, + isPlainObject: isPlainObject, + isString: isString, + isArray: isArray, + isEmptyObject: isEmptyObject, + supportsErrorEvent: supportsErrorEvent, + supportsDOMError: supportsDOMError, + supportsDOMException: supportsDOMException, + supportsFetch: supportsFetch, + supportsReferrerPolicy: supportsReferrerPolicy, + supportsPromiseRejectionEvent: supportsPromiseRejectionEvent, + wrappedCallback: wrappedCallback, + each: each, + objectMerge: objectMerge, + truncate: truncate, + objectFrozen: objectFrozen, + hasKey: hasKey, + joinRegExp: joinRegExp, + urlencode: urlencode, + uuid4: uuid4, + htmlTreeAsString: htmlTreeAsString, + htmlElementAsString: htmlElementAsString, + isSameException: isSameException, + isSameStacktrace: isSameStacktrace, + parseUrl: parseUrl, + fill: fill, + safeJoin: safeJoin, + serializeException: serializeException, + serializeKeysForMessage: serializeKeysForMessage, + sanitize: sanitize +}; + +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"9":9}],8:[function(_dereq_,module,exports){ +(function (global){ +var utils = _dereq_(7); + +/* + TraceKit - Cross brower stack traces + + This was originally forked from github.com/occ/TraceKit, but has since been + largely re-written and is now maintained as part of raven-js. Tests for + this are in test/vendor. + + MIT license +*/ + +var TraceKit = { + collectWindowErrors: true, + debug: false +}; + +// This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) +var _window = + typeof window !== 'undefined' + ? window + : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; + +// global reference to slice +var _slice = [].slice; +var UNKNOWN_FUNCTION = '?'; + +// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error#Error_types +var ERROR_TYPES_RE = /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/; + +function getLocationHref() { + if (typeof document === 'undefined' || document.location == null) return ''; + return document.location.href; +} + +function getLocationOrigin() { + if (typeof document === 'undefined' || document.location == null) return ''; + + // Oh dear IE10... + if (!document.location.origin) { + document.location.origin = + document.location.protocol + + '//' + + document.location.hostname + + (document.location.port ? ':' + document.location.port : ''); + } + + return document.location.origin; +} + +/** + * TraceKit.report: cross-browser processing of unhandled exceptions + * + * Syntax: + * TraceKit.report.subscribe(function(stackInfo) { ... }) + * TraceKit.report.unsubscribe(function(stackInfo) { ... }) + * TraceKit.report(exception) + * try { ...code... } catch(ex) { TraceKit.report(ex); } + * + * Supports: + * - Firefox: full stack trace with line numbers, plus column number + * on top frame; column number is not guaranteed + * - Opera: full stack trace with line and column numbers + * - Chrome: full stack trace with line and column numbers + * - Safari: line and column number for the top frame only; some frames + * may be missing, and column number is not guaranteed + * - IE: line and column number for the top frame only; some frames + * may be missing, and column number is not guaranteed + * + * In theory, TraceKit should work on all of the following versions: + * - IE5.5+ (only 8.0 tested) + * - Firefox 0.9+ (only 3.5+ tested) + * - Opera 7+ (only 10.50 tested; versions 9 and earlier may require + * Exceptions Have Stacktrace to be enabled in opera:config) + * - Safari 3+ (only 4+ tested) + * - Chrome 1+ (only 5+ tested) + * - Konqueror 3.5+ (untested) + * + * Requires TraceKit.computeStackTrace. + * + * Tries to catch all unhandled exceptions and report them to the + * subscribed handlers. Please note that TraceKit.report will rethrow the + * exception. This is REQUIRED in order to get a useful stack trace in IE. + * If the exception does not reach the top of the browser, you will only + * get a stack trace from the point where TraceKit.report was called. + * + * Handlers receive a stackInfo object as described in the + * TraceKit.computeStackTrace docs. + */ +TraceKit.report = (function reportModuleWrapper() { + var handlers = [], + lastArgs = null, + lastException = null, + lastExceptionStack = null; + + /** + * Add a crash handler. + * @param {Function} handler + */ + function subscribe(handler) { + installGlobalHandler(); + handlers.push(handler); + } + + /** + * Remove a crash handler. + * @param {Function} handler + */ + function unsubscribe(handler) { + for (var i = handlers.length - 1; i >= 0; --i) { + if (handlers[i] === handler) { + handlers.splice(i, 1); + } + } + } + + /** + * Remove all crash handlers. + */ + function unsubscribeAll() { + uninstallGlobalHandler(); + handlers = []; + } + + /** + * Dispatch stack information to all handlers. + * @param {Object.} stack + */ + function notifyHandlers(stack, isWindowError) { + var exception = null; + if (isWindowError && !TraceKit.collectWindowErrors) { + return; + } + for (var i in handlers) { + if (handlers.hasOwnProperty(i)) { + try { + handlers[i].apply(null, [stack].concat(_slice.call(arguments, 2))); + } catch (inner) { + exception = inner; + } + } + } + + if (exception) { + throw exception; + } + } + + var _oldOnerrorHandler, _onErrorHandlerInstalled; + + /** + * Ensures all global unhandled exceptions are recorded. + * Supported by Gecko and IE. + * @param {string} msg Error message. + * @param {string} url URL of script that generated the exception. + * @param {(number|string)} lineNo The line number at which the error + * occurred. + * @param {?(number|string)} colNo The column number at which the error + * occurred. + * @param {?Error} ex The actual Error object. + */ + function traceKitWindowOnError(msg, url, lineNo, colNo, ex) { + var stack = null; + // If 'ex' is ErrorEvent, get real Error from inside + var exception = utils.isErrorEvent(ex) ? ex.error : ex; + // If 'msg' is ErrorEvent, get real message from inside + var message = utils.isErrorEvent(msg) ? msg.message : msg; + + if (lastExceptionStack) { + TraceKit.computeStackTrace.augmentStackTraceWithInitialElement( + lastExceptionStack, + url, + lineNo, + message + ); + processLastException(); + } else if (exception && utils.isError(exception)) { + // non-string `exception` arg; attempt to extract stack trace + + // New chrome and blink send along a real error object + // Let's just report that like a normal error. + // See: https://mikewest.org/2013/08/debugging-runtime-errors-with-window-onerror + stack = TraceKit.computeStackTrace(exception); + notifyHandlers(stack, true); + } else { + var location = { + url: url, + line: lineNo, + column: colNo + }; + + var name = undefined; + var groups; + + if ({}.toString.call(message) === '[object String]') { + var groups = message.match(ERROR_TYPES_RE); + if (groups) { + name = groups[1]; + message = groups[2]; + } + } + + location.func = UNKNOWN_FUNCTION; + + stack = { + name: name, + message: message, + url: getLocationHref(), + stack: [location] + }; + notifyHandlers(stack, true); + } + + if (_oldOnerrorHandler) { + return _oldOnerrorHandler.apply(this, arguments); + } + + return false; + } + + function installGlobalHandler() { + if (_onErrorHandlerInstalled) { + return; + } + _oldOnerrorHandler = _window.onerror; + _window.onerror = traceKitWindowOnError; + _onErrorHandlerInstalled = true; + } + + function uninstallGlobalHandler() { + if (!_onErrorHandlerInstalled) { + return; + } + _window.onerror = _oldOnerrorHandler; + _onErrorHandlerInstalled = false; + _oldOnerrorHandler = undefined; + } + + function processLastException() { + var _lastExceptionStack = lastExceptionStack, + _lastArgs = lastArgs; + lastArgs = null; + lastExceptionStack = null; + lastException = null; + notifyHandlers.apply(null, [_lastExceptionStack, false].concat(_lastArgs)); + } + + /** + * Reports an unhandled Error to TraceKit. + * @param {Error} ex + * @param {?boolean} rethrow If false, do not re-throw the exception. + * Only used for window.onerror to not cause an infinite loop of + * rethrowing. + */ + function report(ex, rethrow) { + var args = _slice.call(arguments, 1); + if (lastExceptionStack) { + if (lastException === ex) { + return; // already caught by an inner catch block, ignore + } else { + processLastException(); + } + } + + var stack = TraceKit.computeStackTrace(ex); + lastExceptionStack = stack; + lastException = ex; + lastArgs = args; + + // If the stack trace is incomplete, wait for 2 seconds for + // slow slow IE to see if onerror occurs or not before reporting + // this exception; otherwise, we will end up with an incomplete + // stack trace + setTimeout(function() { + if (lastException === ex) { + processLastException(); + } + }, stack.incomplete ? 2000 : 0); + + if (rethrow !== false) { + throw ex; // re-throw to propagate to the top level (and cause window.onerror) + } + } + + report.subscribe = subscribe; + report.unsubscribe = unsubscribe; + report.uninstall = unsubscribeAll; + return report; +})(); + +/** + * TraceKit.computeStackTrace: cross-browser stack traces in JavaScript + * + * Syntax: + * s = TraceKit.computeStackTrace(exception) // consider using TraceKit.report instead (see below) + * Returns: + * s.name - exception name + * s.message - exception message + * s.stack[i].url - JavaScript or HTML file URL + * s.stack[i].func - function name, or empty for anonymous functions (if guessing did not work) + * s.stack[i].args - arguments passed to the function, if known + * s.stack[i].line - line number, if known + * s.stack[i].column - column number, if known + * + * Supports: + * - Firefox: full stack trace with line numbers and unreliable column + * number on top frame + * - Opera 10: full stack trace with line and column numbers + * - Opera 9-: full stack trace with line numbers + * - Chrome: full stack trace with line and column numbers + * - Safari: line and column number for the topmost stacktrace element + * only + * - IE: no line numbers whatsoever + * + * Tries to guess names of anonymous functions by looking for assignments + * in the source code. In IE and Safari, we have to guess source file names + * by searching for function bodies inside all page scripts. This will not + * work for scripts that are loaded cross-domain. + * Here be dragons: some function names may be guessed incorrectly, and + * duplicate functions may be mismatched. + * + * TraceKit.computeStackTrace should only be used for tracing purposes. + * Logging of unhandled exceptions should be done with TraceKit.report, + * which builds on top of TraceKit.computeStackTrace and provides better + * IE support by utilizing the window.onerror event to retrieve information + * about the top of the stack. + * + * Note: In IE and Safari, no stack trace is recorded on the Error object, + * so computeStackTrace instead walks its *own* chain of callers. + * This means that: + * * in Safari, some methods may be missing from the stack trace; + * * in IE, the topmost function in the stack trace will always be the + * caller of computeStackTrace. + * + * This is okay for tracing (because you are likely to be calling + * computeStackTrace from the function you want to be the topmost element + * of the stack trace anyway), but not okay for logging unhandled + * exceptions (because your catch block will likely be far away from the + * inner function that actually caused the exception). + * + */ +TraceKit.computeStackTrace = (function computeStackTraceWrapper() { + // Contents of Exception in various browsers. + // + // SAFARI: + // ex.message = Can't find variable: qq + // ex.line = 59 + // ex.sourceId = 580238192 + // ex.sourceURL = http://... + // ex.expressionBeginOffset = 96 + // ex.expressionCaretOffset = 98 + // ex.expressionEndOffset = 98 + // ex.name = ReferenceError + // + // FIREFOX: + // ex.message = qq is not defined + // ex.fileName = http://... + // ex.lineNumber = 59 + // ex.columnNumber = 69 + // ex.stack = ...stack trace... (see the example below) + // ex.name = ReferenceError + // + // CHROME: + // ex.message = qq is not defined + // ex.name = ReferenceError + // ex.type = not_defined + // ex.arguments = ['aa'] + // ex.stack = ...stack trace... + // + // INTERNET EXPLORER: + // ex.message = ... + // ex.name = ReferenceError + // + // OPERA: + // ex.message = ...message... (see the example below) + // ex.name = ReferenceError + // ex.opera#sourceloc = 11 (pretty much useless, duplicates the info in ex.message) + // ex.stacktrace = n/a; see 'opera:config#UserPrefs|Exceptions Have Stacktrace' + + /** + * Computes stack trace information from the stack property. + * Chrome and Gecko use this property. + * @param {Error} ex + * @return {?Object.} Stack trace information. + */ + function computeStackTraceFromStackProp(ex) { + if (typeof ex.stack === 'undefined' || !ex.stack) return; + + var chrome = /^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i; + var winjs = /^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i; + // NOTE: blob urls are now supposed to always have an origin, therefore it's format + // which is `blob:http://url/path/with-some-uuid`, is matched by `blob.*?:\/` as well + var gecko = /^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i; + // Used to additionally parse URL/line/column from eval frames + var geckoEval = /(\S+) line (\d+)(?: > eval line \d+)* > eval/i; + var chromeEval = /\((\S*)(?::(\d+))(?::(\d+))\)/; + var lines = ex.stack.split('\n'); + var stack = []; + var submatch; + var parts; + var element; + var reference = /^(.*) is undefined$/.exec(ex.message); + + for (var i = 0, j = lines.length; i < j; ++i) { + if ((parts = chrome.exec(lines[i]))) { + var isNative = parts[2] && parts[2].indexOf('native') === 0; // start of line + var isEval = parts[2] && parts[2].indexOf('eval') === 0; // start of line + if (isEval && (submatch = chromeEval.exec(parts[2]))) { + // throw out eval line/column and use top-most line/column number + parts[2] = submatch[1]; // url + parts[3] = submatch[2]; // line + parts[4] = submatch[3]; // column + } + element = { + url: !isNative ? parts[2] : null, + func: parts[1] || UNKNOWN_FUNCTION, + args: isNative ? [parts[2]] : [], + line: parts[3] ? +parts[3] : null, + column: parts[4] ? +parts[4] : null + }; + } else if ((parts = winjs.exec(lines[i]))) { + element = { + url: parts[2], + func: parts[1] || UNKNOWN_FUNCTION, + args: [], + line: +parts[3], + column: parts[4] ? +parts[4] : null + }; + } else if ((parts = gecko.exec(lines[i]))) { + var isEval = parts[3] && parts[3].indexOf(' > eval') > -1; + if (isEval && (submatch = geckoEval.exec(parts[3]))) { + // throw out eval line/column and use top-most line number + parts[3] = submatch[1]; + parts[4] = submatch[2]; + parts[5] = null; // no column when eval + } else if (i === 0 && !parts[5] && typeof ex.columnNumber !== 'undefined') { + // FireFox uses this awesome columnNumber property for its top frame + // Also note, Firefox's column number is 0-based and everything else expects 1-based, + // so adding 1 + // NOTE: this hack doesn't work if top-most frame is eval + stack[0].column = ex.columnNumber + 1; + } + element = { + url: parts[3], + func: parts[1] || UNKNOWN_FUNCTION, + args: parts[2] ? parts[2].split(',') : [], + line: parts[4] ? +parts[4] : null, + column: parts[5] ? +parts[5] : null + }; + } else { + continue; + } + + if (!element.func && element.line) { + element.func = UNKNOWN_FUNCTION; + } + + if (element.url && element.url.substr(0, 5) === 'blob:') { + // Special case for handling JavaScript loaded into a blob. + // We use a synchronous AJAX request here as a blob is already in + // memory - it's not making a network request. This will generate a warning + // in the browser console, but there has already been an error so that's not + // that much of an issue. + var xhr = new XMLHttpRequest(); + xhr.open('GET', element.url, false); + xhr.send(null); + + // If we failed to download the source, skip this patch + if (xhr.status === 200) { + var source = xhr.responseText || ''; + + // We trim the source down to the last 300 characters as sourceMappingURL is always at the end of the file. + // Why 300? To be in line with: https://github.com/getsentry/sentry/blob/4af29e8f2350e20c28a6933354e4f42437b4ba42/src/sentry/lang/javascript/processor.py#L164-L175 + source = source.slice(-300); + + // Now we dig out the source map URL + var sourceMaps = source.match(/\/\/# sourceMappingURL=(.*)$/); + + // If we don't find a source map comment or we find more than one, continue on to the next element. + if (sourceMaps) { + var sourceMapAddress = sourceMaps[1]; + + // Now we check to see if it's a relative URL. + // If it is, convert it to an absolute one. + if (sourceMapAddress.charAt(0) === '~') { + sourceMapAddress = getLocationOrigin() + sourceMapAddress.slice(1); + } + + // Now we strip the '.map' off of the end of the URL and update the + // element so that Sentry can match the map to the blob. + element.url = sourceMapAddress.slice(0, -4); + } + } + } + + stack.push(element); + } + + if (!stack.length) { + return null; + } + + return { + name: ex.name, + message: ex.message, + url: getLocationHref(), + stack: stack + }; + } + + /** + * Adds information about the first frame to incomplete stack traces. + * Safari and IE require this to get complete data on the first frame. + * @param {Object.} stackInfo Stack trace information from + * one of the compute* methods. + * @param {string} url The URL of the script that caused an error. + * @param {(number|string)} lineNo The line number of the script that + * caused an error. + * @param {string=} message The error generated by the browser, which + * hopefully contains the name of the object that caused the error. + * @return {boolean} Whether or not the stack information was + * augmented. + */ + function augmentStackTraceWithInitialElement(stackInfo, url, lineNo, message) { + var initial = { + url: url, + line: lineNo + }; + + if (initial.url && initial.line) { + stackInfo.incomplete = false; + + if (!initial.func) { + initial.func = UNKNOWN_FUNCTION; + } + + if (stackInfo.stack.length > 0) { + if (stackInfo.stack[0].url === initial.url) { + if (stackInfo.stack[0].line === initial.line) { + return false; // already in stack trace + } else if ( + !stackInfo.stack[0].line && + stackInfo.stack[0].func === initial.func + ) { + stackInfo.stack[0].line = initial.line; + return false; + } + } + } + + stackInfo.stack.unshift(initial); + stackInfo.partial = true; + return true; + } else { + stackInfo.incomplete = true; + } + + return false; + } + + /** + * Computes stack trace information by walking the arguments.caller + * chain at the time the exception occurred. This will cause earlier + * frames to be missed but is the only way to get any stack trace in + * Safari and IE. The top frame is restored by + * {@link augmentStackTraceWithInitialElement}. + * @param {Error} ex + * @return {?Object.} Stack trace information. + */ + function computeStackTraceByWalkingCallerChain(ex, depth) { + var functionName = /function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i, + stack = [], + funcs = {}, + recursion = false, + parts, + item, + source; + + for ( + var curr = computeStackTraceByWalkingCallerChain.caller; + curr && !recursion; + curr = curr.caller + ) { + if (curr === computeStackTrace || curr === TraceKit.report) { + // console.log('skipping internal function'); + continue; + } + + item = { + url: null, + func: UNKNOWN_FUNCTION, + line: null, + column: null + }; + + if (curr.name) { + item.func = curr.name; + } else if ((parts = functionName.exec(curr.toString()))) { + item.func = parts[1]; + } + + if (typeof item.func === 'undefined') { + try { + item.func = parts.input.substring(0, parts.input.indexOf('{')); + } catch (e) {} + } + + if (funcs['' + curr]) { + recursion = true; + } else { + funcs['' + curr] = true; + } + + stack.push(item); + } + + if (depth) { + // console.log('depth is ' + depth); + // console.log('stack is ' + stack.length); + stack.splice(0, depth); + } + + var result = { + name: ex.name, + message: ex.message, + url: getLocationHref(), + stack: stack + }; + augmentStackTraceWithInitialElement( + result, + ex.sourceURL || ex.fileName, + ex.line || ex.lineNumber, + ex.message || ex.description + ); + return result; + } + + /** + * Computes a stack trace for an exception. + * @param {Error} ex + * @param {(string|number)=} depth + */ + function computeStackTrace(ex, depth) { + var stack = null; + depth = depth == null ? 0 : +depth; + + try { + stack = computeStackTraceFromStackProp(ex); + if (stack) { + return stack; + } + } catch (e) { + if (TraceKit.debug) { + throw e; + } + } + + try { + stack = computeStackTraceByWalkingCallerChain(ex, depth + 1); + if (stack) { + return stack; + } + } catch (e) { + if (TraceKit.debug) { + throw e; + } + } + return { + name: ex.name, + message: ex.message, + url: getLocationHref() + }; + } + + computeStackTrace.augmentStackTraceWithInitialElement = augmentStackTraceWithInitialElement; + computeStackTrace.computeStackTraceFromStackProp = computeStackTraceFromStackProp; + + return computeStackTrace; +})(); + +module.exports = TraceKit; + +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"7":7}],9:[function(_dereq_,module,exports){ +/* + json-stringify-safe + Like JSON.stringify, but doesn't throw on circular references. + + Originally forked from https://github.com/isaacs/json-stringify-safe + version 5.0.1 on 3/8/2017 and modified to handle Errors serialization + and IE8 compatibility. Tests for this are in test/vendor. + + ISC license: https://github.com/isaacs/json-stringify-safe/blob/master/LICENSE +*/ + +exports = module.exports = stringify; +exports.getSerialize = serializer; + +function indexOf(haystack, needle) { + for (var i = 0; i < haystack.length; ++i) { + if (haystack[i] === needle) return i; + } + return -1; +} + +function stringify(obj, replacer, spaces, cycleReplacer) { + return JSON.stringify(obj, serializer(replacer, cycleReplacer), spaces); +} + +// https://github.com/ftlabs/js-abbreviate/blob/fa709e5f139e7770a71827b1893f22418097fbda/index.js#L95-L106 +function stringifyError(value) { + var err = { + // These properties are implemented as magical getters and don't show up in for in + stack: value.stack, + message: value.message, + name: value.name + }; + + for (var i in value) { + if (Object.prototype.hasOwnProperty.call(value, i)) { + err[i] = value[i]; + } + } + + return err; +} + +function serializer(replacer, cycleReplacer) { + var stack = []; + var keys = []; + + if (cycleReplacer == null) { + cycleReplacer = function(key, value) { + if (stack[0] === value) { + return '[Circular ~]'; + } + return '[Circular ~.' + keys.slice(0, indexOf(stack, value)).join('.') + ']'; + }; + } + + return function(key, value) { + if (stack.length > 0) { + var thisPos = indexOf(stack, this); + ~thisPos ? stack.splice(thisPos + 1) : stack.push(this); + ~thisPos ? keys.splice(thisPos, Infinity, key) : keys.push(key); + + if (~indexOf(stack, value)) { + value = cycleReplacer.call(this, key, value); + } + } else { + stack.push(value); + } + + return replacer == null + ? value instanceof Error ? stringifyError(value) : value + : replacer.call(this, key, value); + }; +} + +},{}],10:[function(_dereq_,module,exports){ +/* + * JavaScript MD5 + * https://github.com/blueimp/JavaScript-MD5 + * + * Copyright 2011, Sebastian Tschan + * https://blueimp.net + * + * Licensed under the MIT license: + * https://opensource.org/licenses/MIT + * + * Based on + * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message + * Digest Algorithm, as defined in RFC 1321. + * Version 2.2 Copyright (C) Paul Johnston 1999 - 2009 + * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet + * Distributed under the BSD License + * See http://pajhome.org.uk/crypt/md5 for more info. + */ + +/* +* Add integers, wrapping at 2^32. This uses 16-bit operations internally +* to work around bugs in some JS interpreters. +*/ +function safeAdd(x, y) { + var lsw = (x & 0xffff) + (y & 0xffff); + var msw = (x >> 16) + (y >> 16) + (lsw >> 16); + return (msw << 16) | (lsw & 0xffff); +} + +/* +* Bitwise rotate a 32-bit number to the left. +*/ +function bitRotateLeft(num, cnt) { + return (num << cnt) | (num >>> (32 - cnt)); +} + +/* +* These functions implement the four basic operations the algorithm uses. +*/ +function md5cmn(q, a, b, x, s, t) { + return safeAdd(bitRotateLeft(safeAdd(safeAdd(a, q), safeAdd(x, t)), s), b); +} +function md5ff(a, b, c, d, x, s, t) { + return md5cmn((b & c) | (~b & d), a, b, x, s, t); +} +function md5gg(a, b, c, d, x, s, t) { + return md5cmn((b & d) | (c & ~d), a, b, x, s, t); +} +function md5hh(a, b, c, d, x, s, t) { + return md5cmn(b ^ c ^ d, a, b, x, s, t); +} +function md5ii(a, b, c, d, x, s, t) { + return md5cmn(c ^ (b | ~d), a, b, x, s, t); +} + +/* +* Calculate the MD5 of an array of little-endian words, and a bit length. +*/ +function binlMD5(x, len) { + /* append padding */ + x[len >> 5] |= 0x80 << (len % 32); + x[(((len + 64) >>> 9) << 4) + 14] = len; + + var i; + var olda; + var oldb; + var oldc; + var oldd; + var a = 1732584193; + var b = -271733879; + var c = -1732584194; + var d = 271733878; + + for (i = 0; i < x.length; i += 16) { + olda = a; + oldb = b; + oldc = c; + oldd = d; + + a = md5ff(a, b, c, d, x[i], 7, -680876936); + d = md5ff(d, a, b, c, x[i + 1], 12, -389564586); + c = md5ff(c, d, a, b, x[i + 2], 17, 606105819); + b = md5ff(b, c, d, a, x[i + 3], 22, -1044525330); + a = md5ff(a, b, c, d, x[i + 4], 7, -176418897); + d = md5ff(d, a, b, c, x[i + 5], 12, 1200080426); + c = md5ff(c, d, a, b, x[i + 6], 17, -1473231341); + b = md5ff(b, c, d, a, x[i + 7], 22, -45705983); + a = md5ff(a, b, c, d, x[i + 8], 7, 1770035416); + d = md5ff(d, a, b, c, x[i + 9], 12, -1958414417); + c = md5ff(c, d, a, b, x[i + 10], 17, -42063); + b = md5ff(b, c, d, a, x[i + 11], 22, -1990404162); + a = md5ff(a, b, c, d, x[i + 12], 7, 1804603682); + d = md5ff(d, a, b, c, x[i + 13], 12, -40341101); + c = md5ff(c, d, a, b, x[i + 14], 17, -1502002290); + b = md5ff(b, c, d, a, x[i + 15], 22, 1236535329); + + a = md5gg(a, b, c, d, x[i + 1], 5, -165796510); + d = md5gg(d, a, b, c, x[i + 6], 9, -1069501632); + c = md5gg(c, d, a, b, x[i + 11], 14, 643717713); + b = md5gg(b, c, d, a, x[i], 20, -373897302); + a = md5gg(a, b, c, d, x[i + 5], 5, -701558691); + d = md5gg(d, a, b, c, x[i + 10], 9, 38016083); + c = md5gg(c, d, a, b, x[i + 15], 14, -660478335); + b = md5gg(b, c, d, a, x[i + 4], 20, -405537848); + a = md5gg(a, b, c, d, x[i + 9], 5, 568446438); + d = md5gg(d, a, b, c, x[i + 14], 9, -1019803690); + c = md5gg(c, d, a, b, x[i + 3], 14, -187363961); + b = md5gg(b, c, d, a, x[i + 8], 20, 1163531501); + a = md5gg(a, b, c, d, x[i + 13], 5, -1444681467); + d = md5gg(d, a, b, c, x[i + 2], 9, -51403784); + c = md5gg(c, d, a, b, x[i + 7], 14, 1735328473); + b = md5gg(b, c, d, a, x[i + 12], 20, -1926607734); + + a = md5hh(a, b, c, d, x[i + 5], 4, -378558); + d = md5hh(d, a, b, c, x[i + 8], 11, -2022574463); + c = md5hh(c, d, a, b, x[i + 11], 16, 1839030562); + b = md5hh(b, c, d, a, x[i + 14], 23, -35309556); + a = md5hh(a, b, c, d, x[i + 1], 4, -1530992060); + d = md5hh(d, a, b, c, x[i + 4], 11, 1272893353); + c = md5hh(c, d, a, b, x[i + 7], 16, -155497632); + b = md5hh(b, c, d, a, x[i + 10], 23, -1094730640); + a = md5hh(a, b, c, d, x[i + 13], 4, 681279174); + d = md5hh(d, a, b, c, x[i], 11, -358537222); + c = md5hh(c, d, a, b, x[i + 3], 16, -722521979); + b = md5hh(b, c, d, a, x[i + 6], 23, 76029189); + a = md5hh(a, b, c, d, x[i + 9], 4, -640364487); + d = md5hh(d, a, b, c, x[i + 12], 11, -421815835); + c = md5hh(c, d, a, b, x[i + 15], 16, 530742520); + b = md5hh(b, c, d, a, x[i + 2], 23, -995338651); + + a = md5ii(a, b, c, d, x[i], 6, -198630844); + d = md5ii(d, a, b, c, x[i + 7], 10, 1126891415); + c = md5ii(c, d, a, b, x[i + 14], 15, -1416354905); + b = md5ii(b, c, d, a, x[i + 5], 21, -57434055); + a = md5ii(a, b, c, d, x[i + 12], 6, 1700485571); + d = md5ii(d, a, b, c, x[i + 3], 10, -1894986606); + c = md5ii(c, d, a, b, x[i + 10], 15, -1051523); + b = md5ii(b, c, d, a, x[i + 1], 21, -2054922799); + a = md5ii(a, b, c, d, x[i + 8], 6, 1873313359); + d = md5ii(d, a, b, c, x[i + 15], 10, -30611744); + c = md5ii(c, d, a, b, x[i + 6], 15, -1560198380); + b = md5ii(b, c, d, a, x[i + 13], 21, 1309151649); + a = md5ii(a, b, c, d, x[i + 4], 6, -145523070); + d = md5ii(d, a, b, c, x[i + 11], 10, -1120210379); + c = md5ii(c, d, a, b, x[i + 2], 15, 718787259); + b = md5ii(b, c, d, a, x[i + 9], 21, -343485551); + + a = safeAdd(a, olda); + b = safeAdd(b, oldb); + c = safeAdd(c, oldc); + d = safeAdd(d, oldd); + } + return [a, b, c, d]; +} + +/* +* Convert an array of little-endian words to a string +*/ +function binl2rstr(input) { + var i; + var output = ''; + var length32 = input.length * 32; + for (i = 0; i < length32; i += 8) { + output += String.fromCharCode((input[i >> 5] >>> (i % 32)) & 0xff); + } + return output; +} + +/* +* Convert a raw string to an array of little-endian words +* Characters >255 have their high-byte silently ignored. +*/ +function rstr2binl(input) { + var i; + var output = []; + output[(input.length >> 2) - 1] = undefined; + for (i = 0; i < output.length; i += 1) { + output[i] = 0; + } + var length8 = input.length * 8; + for (i = 0; i < length8; i += 8) { + output[i >> 5] |= (input.charCodeAt(i / 8) & 0xff) << (i % 32); + } + return output; +} + +/* +* Calculate the MD5 of a raw string +*/ +function rstrMD5(s) { + return binl2rstr(binlMD5(rstr2binl(s), s.length * 8)); +} + +/* +* Calculate the HMAC-MD5, of a key and some data (raw strings) +*/ +function rstrHMACMD5(key, data) { + var i; + var bkey = rstr2binl(key); + var ipad = []; + var opad = []; + var hash; + ipad[15] = opad[15] = undefined; + if (bkey.length > 16) { + bkey = binlMD5(bkey, key.length * 8); + } + for (i = 0; i < 16; i += 1) { + ipad[i] = bkey[i] ^ 0x36363636; + opad[i] = bkey[i] ^ 0x5c5c5c5c; + } + hash = binlMD5(ipad.concat(rstr2binl(data)), 512 + data.length * 8); + return binl2rstr(binlMD5(opad.concat(hash), 512 + 128)); +} + +/* +* Convert a raw string to a hex string +*/ +function rstr2hex(input) { + var hexTab = '0123456789abcdef'; + var output = ''; + var x; + var i; + for (i = 0; i < input.length; i += 1) { + x = input.charCodeAt(i); + output += hexTab.charAt((x >>> 4) & 0x0f) + hexTab.charAt(x & 0x0f); + } + return output; +} + +/* +* Encode a string as utf-8 +*/ +function str2rstrUTF8(input) { + return unescape(encodeURIComponent(input)); +} + +/* +* Take string arguments and return either raw or hex encoded strings +*/ +function rawMD5(s) { + return rstrMD5(str2rstrUTF8(s)); +} +function hexMD5(s) { + return rstr2hex(rawMD5(s)); +} +function rawHMACMD5(k, d) { + return rstrHMACMD5(str2rstrUTF8(k), str2rstrUTF8(d)); +} +function hexHMACMD5(k, d) { + return rstr2hex(rawHMACMD5(k, d)); +} + +function md5(string, key, raw) { + if (!key) { + if (!raw) { + return hexMD5(string); + } + return rawMD5(string); + } + if (!raw) { + return hexHMACMD5(key, string); + } + return rawHMACMD5(key, string); +} + +module.exports = md5; + +},{}]},{},[6,1,2])(6) +}); \ No newline at end of file diff --git a/packages/raven-js/dist/require,vue/raven.min.js b/packages/raven-js/dist/require,vue/raven.min.js new file mode 100644 index 000000000000..cc2b9000f72e --- /dev/null +++ b/packages/raven-js/dist/require,vue/raven.min.js @@ -0,0 +1,4 @@ +/*! Raven.js 3.25.2 (30b6d4e) | github.com/getsentry/raven-js */ +!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.Raven=a()}}(function(){var a;return function b(a,c,d){function e(g,h){if(!c[g]){if(!a[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};a[g][0].call(k.exports,function(b){var c=a[g][1][b];return e(c?c:b)},k,k.exports,b,a,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;g":"anonymous component")+(a._isVue&&a.$options.__file?" at "+a.$options.__file:"")}function e(a,b){if(b=b||window.Vue,b&&b.config){var c=b.config.errorHandler;b.config.errorHandler=function(b,e,f){var g={};"[object Object]"===Object.prototype.toString.call(e)&&(g.componentName=d(e),g.propsData=e.$options.propsData),"undefined"!=typeof f&&(g.lifecycleHook=f),a.captureException(b,{extra:g}),"function"==typeof c&&c.call(this,b,e,f)}}}b.exports=e,a(6).addPlugin(b.exports)},{6:6}],3:[function(a,b,c){function d(a){this.name="RavenConfigError",this.message=a}d.prototype=new Error,d.prototype.constructor=d,b.exports=d},{}],4:[function(a,b,c){var d=a(7),e=function(a,b,c){var e=a[b],f=a;if(b in a){var g="warn"===b?"warning":b;a[b]=function(){var a=[].slice.call(arguments),h=d.safeJoin(a," "),i={level:g,logger:"console",extra:{arguments:a}};"assert"===b?a[0]===!1&&(h="Assertion failed: "+(d.safeJoin(a.slice(1)," ")||"console.assert"),i.extra.arguments=a.slice(1),c&&c(h,i)):c&&c(h,i),e&&Function.prototype.apply.call(e,f,a)}}};b.exports={wrapMethod:e}},{7:7}],5:[function(a,b,c){(function(c){function d(){return+new Date}function e(a,b){return s(b)?function(c){return b(c,a)}:b}function f(){this.a=!("object"!=typeof JSON||!JSON.stringify),this.b=!r(S),this.c=!r(T),this.d=null,this.e=null,this.f=null,this.g=null,this.h=null,this.i=null,this.j={},this.k={release:R.SENTRY_RELEASE&&R.SENTRY_RELEASE.id,logger:"javascript",ignoreErrors:[],ignoreUrls:[],whitelistUrls:[],includePaths:[],headers:null,collectWindowErrors:!0,captureUnhandledRejections:!0,maxMessageLength:0,maxUrlLength:250,stackTraceLimit:50,autoBreadcrumbs:!0,instrument:!0,sampleRate:1,sanitizeKeys:[]},this.l={method:"POST",keepalive:!0,referrerPolicy:K()?"origin":""},this.m=0,this.n=!1,this.o=Error.stackTraceLimit,this.p=R.console||{},this.q={},this.r=[],this.s=d(),this.t=[],this.u=[],this.v=null,this.w=R.location,this.x=this.w&&this.w.href,this.y();for(var a in this.p)this.q[a]=this.p[a]}var g=a(8),h=a(9),i=a(10),j=a(3),k=a(7),l=k.isErrorEvent,m=k.isDOMError,n=k.isDOMException,o=k.isError,p=k.isObject,q=k.isPlainObject,r=k.isUndefined,s=k.isFunction,t=k.isString,u=k.isArray,v=k.isEmptyObject,w=k.each,x=k.objectMerge,y=k.truncate,z=k.objectFrozen,A=k.hasKey,B=k.joinRegExp,C=k.urlencode,D=k.uuid4,E=k.htmlTreeAsString,F=k.isSameException,G=k.isSameStacktrace,H=k.parseUrl,I=k.fill,J=k.supportsFetch,K=k.supportsReferrerPolicy,L=k.serializeKeysForMessage,M=k.serializeException,N=k.sanitize,O=a(4).wrapMethod,P="source protocol user pass host port path".split(" "),Q=/^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/,R="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},S=R.document,T=R.navigator;f.prototype={VERSION:"3.25.2",debug:!1,TraceKit:g,config:function(a,b){var c=this;if(c.g)return this.z("error","Error: Raven has already been configured"),c;if(!a)return c;var d=c.k;b&&w(b,function(a,b){"tags"===a||"extra"===a||"user"===a?c.j[a]=b:d[a]=b}),c.setDSN(a),d.ignoreErrors.push(/^Script error\.?$/),d.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/),d.ignoreErrors=B(d.ignoreErrors),d.ignoreUrls=!!d.ignoreUrls.length&&B(d.ignoreUrls),d.whitelistUrls=!!d.whitelistUrls.length&&B(d.whitelistUrls),d.includePaths=B(d.includePaths),d.maxBreadcrumbs=Math.max(0,Math.min(d.maxBreadcrumbs||100,100));var e={xhr:!0,console:!0,dom:!0,location:!0,sentry:!0},f=d.autoBreadcrumbs;"[object Object]"==={}.toString.call(f)?f=x(e,f):f!==!1&&(f=e),d.autoBreadcrumbs=f;var h={tryCatch:!0},i=d.instrument;return"[object Object]"==={}.toString.call(i)?i=x(h,i):i!==!1&&(i=h),d.instrument=i,g.collectWindowErrors=!!d.collectWindowErrors,c},install:function(){var a=this;return a.isSetup()&&!a.n&&(g.report.subscribe(function(){a.A.apply(a,arguments)}),a.k.captureUnhandledRejections&&a.B(),a.C(),a.k.instrument&&a.k.instrument.tryCatch&&a.D(),a.k.autoBreadcrumbs&&a.E(),a.F(),a.n=!0),Error.stackTraceLimit=a.k.stackTraceLimit,this},setDSN:function(a){var b=this,c=b.G(a),d=c.path.lastIndexOf("/"),e=c.path.substr(1,d);b.H=a,b.h=c.user,b.I=c.pass&&c.pass.substr(1),b.i=c.path.substr(d+1),b.g=b.J(c),b.K=b.g+"/"+e+"api/"+b.i+"/store/",this.y()},context:function(a,b,c){return s(a)&&(c=b||[],b=a,a=void 0),this.wrap(a,b).apply(this,c)},wrap:function(a,b,c){function d(){var d=[],f=arguments.length,g=!a||a&&a.deep!==!1;for(c&&s(c)&&c.apply(this,arguments);f--;)d[f]=g?e.wrap(a,arguments[f]):arguments[f];try{return b.apply(this,d)}catch(h){throw e.L(),e.captureException(h,a),h}}var e=this;if(r(b)&&!s(a))return a;if(s(a)&&(b=a,a=void 0),!s(b))return b;try{if(b.M)return b;if(b.N)return b.N}catch(f){return b}for(var g in b)A(b,g)&&(d[g]=b[g]);return d.prototype=b.prototype,b.N=d,d.M=!0,d.O=b,d},uninstall:function(){return g.report.uninstall(),this.P(),this.Q(),this.R(),this.S(),Error.stackTraceLimit=this.o,this.n=!1,this},T:function(a){this.z("debug","Raven caught unhandled promise rejection:",a),this.captureException(a.reason,{extra:{unhandledPromiseRejection:!0}})},B:function(){return this.T=this.T.bind(this),R.addEventListener&&R.addEventListener("unhandledrejection",this.T),this},P:function(){return R.removeEventListener&&R.removeEventListener("unhandledrejection",this.T),this},captureException:function(a,b){if(b=x({trimHeadFrames:0},b?b:{}),l(a)&&a.error)a=a.error;else{if(m(a)||n(a)){var c=a.name||(m(a)?"DOMError":"DOMException"),d=a.message?c+": "+a.message:c;return this.captureMessage(d,x(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}))}if(o(a))a=a;else{if(!q(a))return this.captureMessage(a,x(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}));b=this.U(b,a),a=new Error(b.message)}}this.d=a;try{var e=g.computeStackTrace(a);this.V(e,b)}catch(f){if(a!==f)throw f}return this},U:function(a,b){var c=Object.keys(b).sort(),d=x(a,{message:"Non-Error exception captured with keys: "+L(c),fingerprint:[i(c)],extra:a.extra||{}});return d.extra.W=M(b),d},captureMessage:function(a,b){if(!this.k.ignoreErrors.test||!this.k.ignoreErrors.test(a)){b=b||{},a+="";var c,d=x({message:a},b);try{throw new Error(a)}catch(e){c=e}c.name=null;var f=g.computeStackTrace(c),h=u(f.stack)&&f.stack[1];h&&"Raven.captureException"===h.func&&(h=f.stack[2]);var i=h&&h.url||"";if((!this.k.ignoreUrls.test||!this.k.ignoreUrls.test(i))&&(!this.k.whitelistUrls.test||this.k.whitelistUrls.test(i))){if(this.k.stacktrace||b&&b.stacktrace){d.fingerprint=null==d.fingerprint?a:d.fingerprint,b=x({trimHeadFrames:0},b),b.trimHeadFrames+=1;var j=this.X(f,b);d.stacktrace={frames:j.reverse()}}return d.fingerprint&&(d.fingerprint=u(d.fingerprint)?d.fingerprint:[d.fingerprint]),this.Y(d),this}}},captureBreadcrumb:function(a){var b=x({timestamp:d()/1e3},a);if(s(this.k.breadcrumbCallback)){var c=this.k.breadcrumbCallback(b);if(p(c)&&!v(c))b=c;else if(c===!1)return this}return this.u.push(b),this.u.length>this.k.maxBreadcrumbs&&this.u.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.r.push([a,b]),this.n&&this.F(),this},setUserContext:function(a){return this.j.user=a,this},setExtraContext:function(a){return this.Z("extra",a),this},setTagsContext:function(a){return this.Z("tags",a),this},clearContext:function(){return this.j={},this},getContext:function(){return JSON.parse(h(this.j))},setEnvironment:function(a){return this.k.environment=a,this},setRelease:function(a){return this.k.release=a,this},setDataCallback:function(a){var b=this.k.dataCallback;return this.k.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.k.breadcrumbCallback;return this.k.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.k.shouldSendCallback;return this.k.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.k.transport=a,this},lastException:function(){return this.d},lastEventId:function(){return this.f},isSetup:function(){return!!this.a&&(!!this.g||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.z("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=R.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(S){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.H;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.j.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.J(this.G(c)),h=S.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(S.head||S.body).appendChild(h)}},L:function(){var a=this;this.m+=1,setTimeout(function(){a.m-=1})},$:function(a,b){var c,d;if(this.b){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),S.createEvent?(c=S.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=S.createEventObject(),c.eventType=a);for(d in b)A(b,d)&&(c[d]=b[d]);if(S.createEvent)S.dispatchEvent(c);else try{S.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},_:function(a){var b=this;return function(c){if(b.aa=null,b.v!==c){b.v=c;var d;try{d=E(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ba:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.aa;g||a._("input")(c),clearTimeout(g),a.aa=setTimeout(function(){a.aa=null},b)}}},ca:function(a,b){var c=H(this.w.href),d=H(b),e=H(a);this.x=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},C:function(){var a=this;a.da=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.M?a.da.apply(this.O,arguments):a.da.apply(this,arguments)}},Q:function(){this.da&&(Function.prototype.toString=this.da)},D:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.ca(b.x,c+""),a.apply(this,arguments)}};I(R.history,"pushState",j,d),I(R.history,"replaceState",j,d)}if(c.console&&"console"in R&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};w(["debug","info","warn","error","log"],function(a,b){O(console,b,k)})}},R:function(){for(var a;this.t.length;){a=this.t.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},S:function(){for(var a in this.q)this.p[a]=this.q[a]},F:function(){var a=this;w(this.r,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},G:function(a){var b=Q.exec(a),c={},d=7;try{for(;d--;)c[P[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.k.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},J:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},A:function(){this.m||this.V.apply(this,arguments)},V:function(a,b){var c=this.X(a,b);this.$("handle",{stackInfo:a,options:b}),this.fa(a.name,a.message,a.url,a.lineno,c,b)},X:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(w(a.stack,function(b,e){var f=c.ga(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.u,0)}),this.j.user&&(a.user=this.j.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),a=this.pa(a),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||v(a[b]))&&delete a[b]}),s(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!v(a)&&(!s(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.ma()?void this.z("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function F(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&l(b))for(c=b.split(/\s+/),f=0;fc?Q(a,b-1):d}function R(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?X:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function S(a,b){function c(a){return m(a)?a.map(function(a){return c(a)}):k(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!m(b)||m(b)&&0===b.length)return a;var d,e=A(b),f="********";try{d=JSON.parse(T(a))}catch(g){return a}return c(d)}var T=a(9),U="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},V=3,W=51200,X=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isDOMError:g,isDOMException:h,isUndefined:i,isFunction:j,isPlainObject:k,isString:l,isArray:m,isEmptyObject:n,supportsErrorEvent:o,supportsDOMError:p,supportsDOMException:q,supportsFetch:r,supportsReferrerPolicy:s,supportsPromiseRejectionEvent:t,wrappedCallback:u,each:v,objectMerge:w,truncate:y,objectFrozen:x,hasKey:z,joinRegExp:A,urlencode:B,uuid4:D,htmlTreeAsString:E,htmlElementAsString:F,isSameException:I,isSameStacktrace:J,parseUrl:C,fill:K,safeJoin:L,serializeException:Q,serializeKeysForMessage:R,sanitize:S}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{9:9}],8:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}function e(){return"undefined"==typeof document||null==document.location?"":(document.location.origin||(document.location.origin=document.location.protocol+"//"+document.location.hostname+(document.location.port?":"+document.location.port:"")),document.location.origin)}var f=a(7),g={collectWindowErrors:!0,debug:!1},h="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},i=[].slice,j="?",k=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;g.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function e(a,b){var c=null;if(!b||g.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(i.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,h,i){var l=null,m=f.isErrorEvent(i)?i.error:i,n=f.isErrorEvent(a)?a.message:a;if(v)g.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&f.isError(m))l=g.computeStackTrace(m),e(l,!0);else{var p,r={url:b,line:c,column:h},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(k);p&&(s=p[1],n=p[2])}r.func=j,l={name:s,message:n,url:d(),stack:[r]},e(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=h.onerror,h.onerror=l,r=!0)}function n(){r&&(h.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,e.apply(null,[a,!1].concat(b))}function p(a,b){var c=i.call(arguments,1);if(v){if(u===a)return;o()}var d=g.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),g.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,f,g=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,h=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,i=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,k=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,l=/\((\S*)(?::(\d+))(?::(\d+))\)/,m=a.stack.split("\n"),n=[],o=(/^(.*) is undefined$/.exec(a.message),0),p=m.length;o eval")>-1;r&&(b=k.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==o||c[5]||"undefined"==typeof a.columnNumber||(n[0].column=a.columnNumber+1),f={url:c[3],func:c[1]||j,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}if(!f.func&&f.line&&(f.func=j),f.url&&"blob:"===f.url.substr(0,5)){var s=new XMLHttpRequest;if(s.open("GET",f.url,!1),s.send(null),200===s.status){var t=s.responseText||"";t=t.slice(-300);var u=t.match(/\/\/# sourceMappingURL=(.*)$/);if(u){var v=u[1];"~"===v.charAt(0)&&(v=e()+v.slice(1)),f.url=v.slice(0,-4)}}}n.push(f)}return n.length?{name:a.name,message:a.message,url:d(),stack:n}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=j),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,e){for(var h,i,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==f&&o!==g.report){ +if(i={url:null,func:j,line:null,column:null},o.name?i.func=o.name:(h=k.exec(o.toString()))&&(i.func=h[1]),"undefined"==typeof i.func)try{i.func=h.input.substring(0,h.input.indexOf("{"))}catch(p){}m[""+o]?n=!0:m[""+o]=!0,l.push(i)}e&&l.splice(0,e);var q={name:a.name,message:a.message,url:d(),stack:l};return b(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),q}function f(b,e){var f=null;e=null==e?0:+e;try{if(f=a(b))return f}catch(h){if(g.debug)throw h}try{if(f=c(b,e+1))return f}catch(h){if(g.debug)throw h}return{name:b.name,message:b.message,url:d()}}return f.augmentStackTraceWithInitialElement=b,f.computeStackTraceFromStackProp=a,f}(),b.exports=g}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{7:7}],9:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}],10:[function(a,b,c){function d(a,b){var c=(65535&a)+(65535&b),d=(a>>16)+(b>>16)+(c>>16);return d<<16|65535&c}function e(a,b){return a<>>32-b}function f(a,b,c,f,g,h){return d(e(d(d(b,a),d(f,h)),g),c)}function g(a,b,c,d,e,g,h){return f(b&c|~b&d,a,b,e,g,h)}function h(a,b,c,d,e,g,h){return f(b&d|c&~d,a,b,e,g,h)}function i(a,b,c,d,e,g,h){return f(b^c^d,a,b,e,g,h)}function j(a,b,c,d,e,g,h){return f(c^(b|~d),a,b,e,g,h)}function k(a,b){a[b>>5]|=128<>>9<<4)+14]=b;var c,e,f,k,l,m=1732584193,n=-271733879,o=-1732584194,p=271733878;for(c=0;c>5]>>>b%32&255);return c}function m(a){var b,c=[];for(c[(a.length>>2)-1]=void 0,b=0;b>5]|=(255&a.charCodeAt(b/8))<16&&(e=k(e,8*a.length)),c=0;c<16;c+=1)f[c]=909522486^e[c],g[c]=1549556828^e[c];return d=k(f.concat(m(b)),512+8*b.length),l(k(g.concat(d),640))}function p(a){var b,c,d="0123456789abcdef",e="";for(c=0;c>>4&15)+d.charAt(15&b);return e}function q(a){return unescape(encodeURIComponent(a))}function r(a){return n(q(a))}function s(a){return p(r(a))}function t(a,b){return o(q(a),q(b))}function u(a,b){return p(t(a,b))}function v(a,b,c){return b?c?t(b,a):u(b,a):c?r(a):s(a)}b.exports=v},{}]},{},[6,1,2])(6)}); +//# sourceMappingURL=raven.min.js.map \ No newline at end of file diff --git a/packages/raven-js/dist/require,vue/raven.min.js.map b/packages/raven-js/dist/require,vue/raven.min.js.map new file mode 100644 index 000000000000..173b1f64b4fb --- /dev/null +++ b/packages/raven-js/dist/require,vue/raven.min.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","requirePlugin","wrap","deep","addPlugin","6","2","formatComponentName","vm","$root","name","_isVue","$options","_componentTag","__file","vuePlugin","Vue","config","_oldOnError","errorHandler","error","info","metaData","Object","prototype","toString","componentName","propsData","lifecycleHook","captureException","extra","3","RavenConfigError","message","constructor","4","utils","wrapMethod","console","level","callback","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","msg","safeJoin","data","logger","Function","apply","7","5","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","sanitizeKeys","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isErrorEvent","isDOMError","isDOMException","isError","isObject","isPlainObject","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","sanitize","wrapConsoleMethod","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","dsn","options","_logDebug","globalOptions","key","value","setDSN","push","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","substr","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","context","func","undefined","_before","wrapped","_ignoreNextOnError","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","T","event","reason","unhandledPromiseRejection","B","_promiseRejectionHandler","bind","addEventListener","P","removeEventListener","ex","trimHeadFrames","captureMessage","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","U","currentOptions","exKeys","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","setDataCallback","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","L","setTimeout","$","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","_","evtName","_keypressTimeout","target","category","ba","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","ca","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","C","_originalFunctionToString","Q","D","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","type","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","E","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","R","builtin","S","F","installer","concat","G","str","m","exec","allowSecretKey","J","port","A","V","stackInfo","_triggerEvent","_processException","lineno","X","frame","_normalizeFrame","in_app","ga","stackInfoUrl","normalized","filename","line","colno","column","function","fa","prefixedMessage","exception","values","transaction","ha","request","Referer","breadcrumbs","_trimBreadcrumbs","ia","urlProp","urlProps","ja","httpData","userAgent","User-Agent","referrer","y","_backoffDuration","_backoffStart","ma","na","current","last","oa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Y","baseData","project","platform","_getHttpData","serverName","server_name","_sanitizeData","forEach","random","_sendProcessedPayload","pa","ra","qa","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","sa","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","onerror","open","setRequestHeader","send","ta","hash","evaluated","z","Z","setUser","setReleaseContext","10","8","9","RavenConstructor","_Raven","noConflict","Client","what","supportsErrorEvent","ErrorEvent","supportsDOMError","DOMError","supportsDOMException","DOMException","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","wrappedCallback","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","sanitizeMask","safeInput","o_O","getLocationHref","getLocationOrigin","origin","hostname","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","responseText","sourceMaps","sourceMapAddress","charAt","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","string","raw"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file diff --git a/packages/raven-js/dist/require/raven.js b/packages/raven-js/dist/require/raven.js new file mode 100644 index 000000000000..63ae83c34297 --- /dev/null +++ b/packages/raven-js/dist/require/raven.js @@ -0,0 +1,4027 @@ +/*! Raven.js 3.25.2 (30b6d4e) | github.com/getsentry/raven-js */ + +/* + * Includes TraceKit + * https://github.com/getsentry/TraceKit + * + * Copyright 2018 Matt Robenolt and other contributors + * Released under the BSD license + * https://github.com/getsentry/raven-js/blob/master/LICENSE + * + */ + +(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.Raven = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o captureException(string) => captureMessage(string) + if (initialCall && initialCall.func === 'Raven.captureException') { + initialCall = stack.stack[2]; + } + + var fileurl = (initialCall && initialCall.url) || ''; + + if ( + !!this._globalOptions.ignoreUrls.test && + this._globalOptions.ignoreUrls.test(fileurl) + ) { + return; + } + + if ( + !!this._globalOptions.whitelistUrls.test && + !this._globalOptions.whitelistUrls.test(fileurl) + ) { + return; + } + + if (this._globalOptions.stacktrace || (options && options.stacktrace)) { + // fingerprint on msg, not stack trace (legacy behavior, could be revisited) + data.fingerprint = data.fingerprint == null ? msg : data.fingerprint; + + options = objectMerge( + { + trimHeadFrames: 0 + }, + options + ); + // Since we know this is a synthetic trace, the top frame (this function call) + // MUST be from Raven.js, so mark it for trimming + // We add to the trim counter so that callers can choose to trim extra frames, such + // as utility functions. + options.trimHeadFrames += 1; + + var frames = this._prepareFrames(stack, options); + data.stacktrace = { + // Sentry expects frames oldest to newest + frames: frames.reverse() + }; + } + + // Make sure that fingerprint is always wrapped in an array + if (data.fingerprint) { + data.fingerprint = isArray(data.fingerprint) + ? data.fingerprint + : [data.fingerprint]; + } + + // Fire away! + this._send(data); + + return this; + }, + + captureBreadcrumb: function(obj) { + var crumb = objectMerge( + { + timestamp: now() / 1000 + }, + obj + ); + + if (isFunction(this._globalOptions.breadcrumbCallback)) { + var result = this._globalOptions.breadcrumbCallback(crumb); + + if (isObject(result) && !isEmptyObject(result)) { + crumb = result; + } else if (result === false) { + return this; + } + } + + this._breadcrumbs.push(crumb); + if (this._breadcrumbs.length > this._globalOptions.maxBreadcrumbs) { + this._breadcrumbs.shift(); + } + return this; + }, + + addPlugin: function(plugin /*arg1, arg2, ... argN*/) { + var pluginArgs = [].slice.call(arguments, 1); + + this._plugins.push([plugin, pluginArgs]); + if (this._isRavenInstalled) { + this._drainPlugins(); + } + + return this; + }, + + /* + * Set/clear a user to be sent along with the payload. + * + * @param {object} user An object representing user data [optional] + * @return {Raven} + */ + setUserContext: function(user) { + // Intentionally do not merge here since that's an unexpected behavior. + this._globalContext.user = user; + + return this; + }, + + /* + * Merge extra attributes to be sent along with the payload. + * + * @param {object} extra An object representing extra data [optional] + * @return {Raven} + */ + setExtraContext: function(extra) { + this._mergeContext('extra', extra); + + return this; + }, + + /* + * Merge tags to be sent along with the payload. + * + * @param {object} tags An object representing tags [optional] + * @return {Raven} + */ + setTagsContext: function(tags) { + this._mergeContext('tags', tags); + + return this; + }, + + /* + * Clear all of the context. + * + * @return {Raven} + */ + clearContext: function() { + this._globalContext = {}; + + return this; + }, + + /* + * Get a copy of the current context. This cannot be mutated. + * + * @return {object} copy of context + */ + getContext: function() { + // lol javascript + return JSON.parse(stringify(this._globalContext)); + }, + + /* + * Set environment of application + * + * @param {string} environment Typically something like 'production'. + * @return {Raven} + */ + setEnvironment: function(environment) { + this._globalOptions.environment = environment; + + return this; + }, + + /* + * Set release version of application + * + * @param {string} release Typically something like a git SHA to identify version + * @return {Raven} + */ + setRelease: function(release) { + this._globalOptions.release = release; + + return this; + }, + + /* + * Set the dataCallback option + * + * @param {function} callback The callback to run which allows the + * data blob to be mutated before sending + * @return {Raven} + */ + setDataCallback: function(callback) { + var original = this._globalOptions.dataCallback; + this._globalOptions.dataCallback = keepOriginalCallback(original, callback); + return this; + }, + + /* + * Set the breadcrumbCallback option + * + * @param {function} callback The callback to run which allows filtering + * or mutating breadcrumbs + * @return {Raven} + */ + setBreadcrumbCallback: function(callback) { + var original = this._globalOptions.breadcrumbCallback; + this._globalOptions.breadcrumbCallback = keepOriginalCallback(original, callback); + return this; + }, + + /* + * Set the shouldSendCallback option + * + * @param {function} callback The callback to run which allows + * introspecting the blob before sending + * @return {Raven} + */ + setShouldSendCallback: function(callback) { + var original = this._globalOptions.shouldSendCallback; + this._globalOptions.shouldSendCallback = keepOriginalCallback(original, callback); + return this; + }, + + /** + * Override the default HTTP transport mechanism that transmits data + * to the Sentry server. + * + * @param {function} transport Function invoked instead of the default + * `makeRequest` handler. + * + * @return {Raven} + */ + setTransport: function(transport) { + this._globalOptions.transport = transport; + + return this; + }, + + /* + * Get the latest raw exception that was captured by Raven. + * + * @return {error} + */ + lastException: function() { + return this._lastCapturedException; + }, + + /* + * Get the last event id + * + * @return {string} + */ + lastEventId: function() { + return this._lastEventId; + }, + + /* + * Determine if Raven is setup and ready to go. + * + * @return {boolean} + */ + isSetup: function() { + if (!this._hasJSON) return false; // needs JSON support + if (!this._globalServer) { + if (!this.ravenNotConfiguredError) { + this.ravenNotConfiguredError = true; + this._logDebug('error', 'Error: Raven has not been configured.'); + } + return false; + } + return true; + }, + + afterLoad: function() { + // TODO: remove window dependence? + + // Attempt to initialize Raven on load + var RavenConfig = _window.RavenConfig; + if (RavenConfig) { + this.config(RavenConfig.dsn, RavenConfig.config).install(); + } + }, + + showReportDialog: function(options) { + if ( + !_document // doesn't work without a document (React native) + ) + return; + + options = options || {}; + + var lastEventId = options.eventId || this.lastEventId(); + if (!lastEventId) { + throw new RavenConfigError('Missing eventId'); + } + + var dsn = options.dsn || this._dsn; + if (!dsn) { + throw new RavenConfigError('Missing DSN'); + } + + var encode = encodeURIComponent; + var qs = ''; + qs += '?eventId=' + encode(lastEventId); + qs += '&dsn=' + encode(dsn); + + var user = options.user || this._globalContext.user; + if (user) { + if (user.name) qs += '&name=' + encode(user.name); + if (user.email) qs += '&email=' + encode(user.email); + } + + var globalServer = this._getGlobalServer(this._parseDSN(dsn)); + + var script = _document.createElement('script'); + script.async = true; + script.src = globalServer + '/api/embed/error-page/' + qs; + (_document.head || _document.body).appendChild(script); + }, + + /**** Private functions ****/ + _ignoreNextOnError: function() { + var self = this; + this._ignoreOnError += 1; + setTimeout(function() { + // onerror should trigger before setTimeout + self._ignoreOnError -= 1; + }); + }, + + _triggerEvent: function(eventType, options) { + // NOTE: `event` is a native browser thing, so let's avoid conflicting wiht it + var evt, key; + + if (!this._hasDocument) return; + + options = options || {}; + + eventType = 'raven' + eventType.substr(0, 1).toUpperCase() + eventType.substr(1); + + if (_document.createEvent) { + evt = _document.createEvent('HTMLEvents'); + evt.initEvent(eventType, true, true); + } else { + evt = _document.createEventObject(); + evt.eventType = eventType; + } + + for (key in options) + if (hasKey(options, key)) { + evt[key] = options[key]; + } + + if (_document.createEvent) { + // IE9 if standards + _document.dispatchEvent(evt); + } else { + // IE8 regardless of Quirks or Standards + // IE9 if quirks + try { + _document.fireEvent('on' + evt.eventType.toLowerCase(), evt); + } catch (e) { + // Do nothing + } + } + }, + + /** + * Wraps addEventListener to capture UI breadcrumbs + * @param evtName the event name (e.g. "click") + * @returns {Function} + * @private + */ + _breadcrumbEventHandler: function(evtName) { + var self = this; + return function(evt) { + // reset keypress timeout; e.g. triggering a 'click' after + // a 'keypress' will reset the keypress debounce so that a new + // set of keypresses can be recorded + self._keypressTimeout = null; + + // It's possible this handler might trigger multiple times for the same + // event (e.g. event propagation through node ancestors). Ignore if we've + // already captured the event. + if (self._lastCapturedEvent === evt) return; + + self._lastCapturedEvent = evt; + + // try/catch both: + // - accessing evt.target (see getsentry/raven-js#838, #768) + // - `htmlTreeAsString` because it's complex, and just accessing the DOM incorrectly + // can throw an exception in some circumstances. + var target; + try { + target = htmlTreeAsString(evt.target); + } catch (e) { + target = ''; + } + + self.captureBreadcrumb({ + category: 'ui.' + evtName, // e.g. ui.click, ui.input + message: target + }); + }; + }, + + /** + * Wraps addEventListener to capture keypress UI events + * @returns {Function} + * @private + */ + _keypressEventHandler: function() { + var self = this, + debounceDuration = 1000; // milliseconds + + // TODO: if somehow user switches keypress target before + // debounce timeout is triggered, we will only capture + // a single breadcrumb from the FIRST target (acceptable?) + return function(evt) { + var target; + try { + target = evt.target; + } catch (e) { + // just accessing event properties can throw an exception in some rare circumstances + // see: https://github.com/getsentry/raven-js/issues/838 + return; + } + var tagName = target && target.tagName; + + // only consider keypress events on actual input elements + // this will disregard keypresses targeting body (e.g. tabbing + // through elements, hotkeys, etc) + if ( + !tagName || + (tagName !== 'INPUT' && tagName !== 'TEXTAREA' && !target.isContentEditable) + ) + return; + + // record first keypress in a series, but ignore subsequent + // keypresses until debounce clears + var timeout = self._keypressTimeout; + if (!timeout) { + self._breadcrumbEventHandler('input')(evt); + } + clearTimeout(timeout); + self._keypressTimeout = setTimeout(function() { + self._keypressTimeout = null; + }, debounceDuration); + }; + }, + + /** + * Captures a breadcrumb of type "navigation", normalizing input URLs + * @param to the originating URL + * @param from the target URL + * @private + */ + _captureUrlChange: function(from, to) { + var parsedLoc = parseUrl(this._location.href); + var parsedTo = parseUrl(to); + var parsedFrom = parseUrl(from); + + // because onpopstate only tells you the "new" (to) value of location.href, and + // not the previous (from) value, we need to track the value of the current URL + // state ourselves + this._lastHref = to; + + // Use only the path component of the URL if the URL matches the current + // document (almost all the time when using pushState) + if (parsedLoc.protocol === parsedTo.protocol && parsedLoc.host === parsedTo.host) + to = parsedTo.relative; + if (parsedLoc.protocol === parsedFrom.protocol && parsedLoc.host === parsedFrom.host) + from = parsedFrom.relative; + + this.captureBreadcrumb({ + category: 'navigation', + data: { + to: to, + from: from + } + }); + }, + + _patchFunctionToString: function() { + var self = this; + self._originalFunctionToString = Function.prototype.toString; + // eslint-disable-next-line no-extend-native + Function.prototype.toString = function() { + if (typeof this === 'function' && this.__raven__) { + return self._originalFunctionToString.apply(this.__orig__, arguments); + } + return self._originalFunctionToString.apply(this, arguments); + }; + }, + + _unpatchFunctionToString: function() { + if (this._originalFunctionToString) { + // eslint-disable-next-line no-extend-native + Function.prototype.toString = this._originalFunctionToString; + } + }, + + /** + * Wrap timer functions and event targets to catch errors and provide + * better metadata. + */ + _instrumentTryCatch: function() { + var self = this; + + var wrappedBuiltIns = self._wrappedBuiltIns; + + function wrapTimeFn(orig) { + return function(fn, t) { + // preserve arity + // Make a copy of the arguments to prevent deoptimization + // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments + var args = new Array(arguments.length); + for (var i = 0; i < args.length; ++i) { + args[i] = arguments[i]; + } + var originalCallback = args[0]; + if (isFunction(originalCallback)) { + args[0] = self.wrap(originalCallback); + } + + // IE < 9 doesn't support .call/.apply on setInterval/setTimeout, but it + // also supports only two arguments and doesn't care what this is, so we + // can just call the original function directly. + if (orig.apply) { + return orig.apply(this, args); + } else { + return orig(args[0], args[1]); + } + }; + } + + var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; + + function wrapEventTarget(global) { + var proto = _window[global] && _window[global].prototype; + if (proto && proto.hasOwnProperty && proto.hasOwnProperty('addEventListener')) { + fill( + proto, + 'addEventListener', + function(orig) { + return function(evtName, fn, capture, secure) { + // preserve arity + try { + if (fn && fn.handleEvent) { + fn.handleEvent = self.wrap(fn.handleEvent); + } + } catch (err) { + // can sometimes get 'Permission denied to access property "handle Event' + } + + // More breadcrumb DOM capture ... done here and not in `_instrumentBreadcrumbs` + // so that we don't have more than one wrapper function + var before, clickHandler, keypressHandler; + + if ( + autoBreadcrumbs && + autoBreadcrumbs.dom && + (global === 'EventTarget' || global === 'Node') + ) { + // NOTE: generating multiple handlers per addEventListener invocation, should + // revisit and verify we can just use one (almost certainly) + clickHandler = self._breadcrumbEventHandler('click'); + keypressHandler = self._keypressEventHandler(); + before = function(evt) { + // need to intercept every DOM event in `before` argument, in case that + // same wrapped method is re-used for different events (e.g. mousemove THEN click) + // see #724 + if (!evt) return; + + var eventType; + try { + eventType = evt.type; + } catch (e) { + // just accessing event properties can throw an exception in some rare circumstances + // see: https://github.com/getsentry/raven-js/issues/838 + return; + } + if (eventType === 'click') return clickHandler(evt); + else if (eventType === 'keypress') return keypressHandler(evt); + }; + } + return orig.call( + this, + evtName, + self.wrap(fn, undefined, before), + capture, + secure + ); + }; + }, + wrappedBuiltIns + ); + fill( + proto, + 'removeEventListener', + function(orig) { + return function(evt, fn, capture, secure) { + try { + fn = fn && (fn.__raven_wrapper__ ? fn.__raven_wrapper__ : fn); + } catch (e) { + // ignore, accessing __raven_wrapper__ will throw in some Selenium environments + } + return orig.call(this, evt, fn, capture, secure); + }; + }, + wrappedBuiltIns + ); + } + } + + fill(_window, 'setTimeout', wrapTimeFn, wrappedBuiltIns); + fill(_window, 'setInterval', wrapTimeFn, wrappedBuiltIns); + if (_window.requestAnimationFrame) { + fill( + _window, + 'requestAnimationFrame', + function(orig) { + return function(cb) { + return orig(self.wrap(cb)); + }; + }, + wrappedBuiltIns + ); + } + + // event targets borrowed from bugsnag-js: + // https://github.com/bugsnag/bugsnag-js/blob/master/src/bugsnag.js#L666 + var eventTargets = [ + 'EventTarget', + 'Window', + 'Node', + 'ApplicationCache', + 'AudioTrackList', + 'ChannelMergerNode', + 'CryptoOperation', + 'EventSource', + 'FileReader', + 'HTMLUnknownElement', + 'IDBDatabase', + 'IDBRequest', + 'IDBTransaction', + 'KeyOperation', + 'MediaController', + 'MessagePort', + 'ModalWindow', + 'Notification', + 'SVGElementInstance', + 'Screen', + 'TextTrack', + 'TextTrackCue', + 'TextTrackList', + 'WebSocket', + 'WebSocketWorker', + 'Worker', + 'XMLHttpRequest', + 'XMLHttpRequestEventTarget', + 'XMLHttpRequestUpload' + ]; + for (var i = 0; i < eventTargets.length; i++) { + wrapEventTarget(eventTargets[i]); + } + }, + + /** + * Instrument browser built-ins w/ breadcrumb capturing + * - XMLHttpRequests + * - DOM interactions (click/typing) + * - window.location changes + * - console + * + * Can be disabled or individually configured via the `autoBreadcrumbs` config option + */ + _instrumentBreadcrumbs: function() { + var self = this; + var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; + + var wrappedBuiltIns = self._wrappedBuiltIns; + + function wrapProp(prop, xhr) { + if (prop in xhr && isFunction(xhr[prop])) { + fill(xhr, prop, function(orig) { + return self.wrap(orig); + }); // intentionally don't track filled methods on XHR instances + } + } + + if (autoBreadcrumbs.xhr && 'XMLHttpRequest' in _window) { + var xhrproto = _window.XMLHttpRequest && _window.XMLHttpRequest.prototype; + fill( + xhrproto, + 'open', + function(origOpen) { + return function(method, url) { + // preserve arity + + // if Sentry key appears in URL, don't capture + if (isString(url) && url.indexOf(self._globalKey) === -1) { + this.__raven_xhr = { + method: method, + url: url, + status_code: null + }; + } + + return origOpen.apply(this, arguments); + }; + }, + wrappedBuiltIns + ); + + fill( + xhrproto, + 'send', + function(origSend) { + return function() { + // preserve arity + var xhr = this; + + function onreadystatechangeHandler() { + if (xhr.__raven_xhr && xhr.readyState === 4) { + try { + // touching statusCode in some platforms throws + // an exception + xhr.__raven_xhr.status_code = xhr.status; + } catch (e) { + /* do nothing */ + } + + self.captureBreadcrumb({ + type: 'http', + category: 'xhr', + data: xhr.__raven_xhr + }); + } + } + + var props = ['onload', 'onerror', 'onprogress']; + for (var j = 0; j < props.length; j++) { + wrapProp(props[j], xhr); + } + + if ('onreadystatechange' in xhr && isFunction(xhr.onreadystatechange)) { + fill( + xhr, + 'onreadystatechange', + function(orig) { + return self.wrap(orig, undefined, onreadystatechangeHandler); + } /* intentionally don't track this instrumentation */ + ); + } else { + // if onreadystatechange wasn't actually set by the page on this xhr, we + // are free to set our own and capture the breadcrumb + xhr.onreadystatechange = onreadystatechangeHandler; + } + + return origSend.apply(this, arguments); + }; + }, + wrappedBuiltIns + ); + } + + if (autoBreadcrumbs.xhr && supportsFetch()) { + fill( + _window, + 'fetch', + function(origFetch) { + return function() { + // preserve arity + // Make a copy of the arguments to prevent deoptimization + // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments + var args = new Array(arguments.length); + for (var i = 0; i < args.length; ++i) { + args[i] = arguments[i]; + } + + var fetchInput = args[0]; + var method = 'GET'; + var url; + + if (typeof fetchInput === 'string') { + url = fetchInput; + } else if ('Request' in _window && fetchInput instanceof _window.Request) { + url = fetchInput.url; + if (fetchInput.method) { + method = fetchInput.method; + } + } else { + url = '' + fetchInput; + } + + // if Sentry key appears in URL, don't capture, as it's our own request + if (url.indexOf(self._globalKey) !== -1) { + return origFetch.apply(this, args); + } + + if (args[1] && args[1].method) { + method = args[1].method; + } + + var fetchData = { + method: method, + url: url, + status_code: null + }; + + return origFetch + .apply(this, args) + .then(function(response) { + fetchData.status_code = response.status; + + self.captureBreadcrumb({ + type: 'http', + category: 'fetch', + data: fetchData + }); + + return response; + }) + ['catch'](function(err) { + // if there is an error performing the request + self.captureBreadcrumb({ + type: 'http', + category: 'fetch', + data: fetchData, + level: 'error' + }); + + throw err; + }); + }; + }, + wrappedBuiltIns + ); + } + + // Capture breadcrumbs from any click that is unhandled / bubbled up all the way + // to the document. Do this before we instrument addEventListener. + if (autoBreadcrumbs.dom && this._hasDocument) { + if (_document.addEventListener) { + _document.addEventListener('click', self._breadcrumbEventHandler('click'), false); + _document.addEventListener('keypress', self._keypressEventHandler(), false); + } else if (_document.attachEvent) { + // IE8 Compatibility + _document.attachEvent('onclick', self._breadcrumbEventHandler('click')); + _document.attachEvent('onkeypress', self._keypressEventHandler()); + } + } + + // record navigation (URL) changes + // NOTE: in Chrome App environment, touching history.pushState, *even inside + // a try/catch block*, will cause Chrome to output an error to console.error + // borrowed from: https://github.com/angular/angular.js/pull/13945/files + var chrome = _window.chrome; + var isChromePackagedApp = chrome && chrome.app && chrome.app.runtime; + var hasPushAndReplaceState = + !isChromePackagedApp && + _window.history && + _window.history.pushState && + _window.history.replaceState; + if (autoBreadcrumbs.location && hasPushAndReplaceState) { + // TODO: remove onpopstate handler on uninstall() + var oldOnPopState = _window.onpopstate; + _window.onpopstate = function() { + var currentHref = self._location.href; + self._captureUrlChange(self._lastHref, currentHref); + + if (oldOnPopState) { + return oldOnPopState.apply(this, arguments); + } + }; + + var historyReplacementFunction = function(origHistFunction) { + // note history.pushState.length is 0; intentionally not declaring + // params to preserve 0 arity + return function(/* state, title, url */) { + var url = arguments.length > 2 ? arguments[2] : undefined; + + // url argument is optional + if (url) { + // coerce to string (this is what pushState does) + self._captureUrlChange(self._lastHref, url + ''); + } + + return origHistFunction.apply(this, arguments); + }; + }; + + fill(_window.history, 'pushState', historyReplacementFunction, wrappedBuiltIns); + fill(_window.history, 'replaceState', historyReplacementFunction, wrappedBuiltIns); + } + + if (autoBreadcrumbs.console && 'console' in _window && console.log) { + // console + var consoleMethodCallback = function(msg, data) { + self.captureBreadcrumb({ + message: msg, + level: data.level, + category: 'console' + }); + }; + + each(['debug', 'info', 'warn', 'error', 'log'], function(_, level) { + wrapConsoleMethod(console, level, consoleMethodCallback); + }); + } + }, + + _restoreBuiltIns: function() { + // restore any wrapped builtins + var builtin; + while (this._wrappedBuiltIns.length) { + builtin = this._wrappedBuiltIns.shift(); + + var obj = builtin[0], + name = builtin[1], + orig = builtin[2]; + + obj[name] = orig; + } + }, + + _restoreConsole: function() { + // eslint-disable-next-line guard-for-in + for (var method in this._originalConsoleMethods) { + this._originalConsole[method] = this._originalConsoleMethods[method]; + } + }, + + _drainPlugins: function() { + var self = this; + + // FIX ME TODO + each(this._plugins, function(_, plugin) { + var installer = plugin[0]; + var args = plugin[1]; + installer.apply(self, [self].concat(args)); + }); + }, + + _parseDSN: function(str) { + var m = dsnPattern.exec(str), + dsn = {}, + i = 7; + + try { + while (i--) dsn[dsnKeys[i]] = m[i] || ''; + } catch (e) { + throw new RavenConfigError('Invalid DSN: ' + str); + } + + if (dsn.pass && !this._globalOptions.allowSecretKey) { + throw new RavenConfigError( + 'Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key' + ); + } + + return dsn; + }, + + _getGlobalServer: function(uri) { + // assemble the endpoint from the uri pieces + var globalServer = '//' + uri.host + (uri.port ? ':' + uri.port : ''); + + if (uri.protocol) { + globalServer = uri.protocol + ':' + globalServer; + } + return globalServer; + }, + + _handleOnErrorStackInfo: function() { + // if we are intentionally ignoring errors via onerror, bail out + if (!this._ignoreOnError) { + this._handleStackInfo.apply(this, arguments); + } + }, + + _handleStackInfo: function(stackInfo, options) { + var frames = this._prepareFrames(stackInfo, options); + + this._triggerEvent('handle', { + stackInfo: stackInfo, + options: options + }); + + this._processException( + stackInfo.name, + stackInfo.message, + stackInfo.url, + stackInfo.lineno, + frames, + options + ); + }, + + _prepareFrames: function(stackInfo, options) { + var self = this; + var frames = []; + if (stackInfo.stack && stackInfo.stack.length) { + each(stackInfo.stack, function(i, stack) { + var frame = self._normalizeFrame(stack, stackInfo.url); + if (frame) { + frames.push(frame); + } + }); + + // e.g. frames captured via captureMessage throw + if (options && options.trimHeadFrames) { + for (var j = 0; j < options.trimHeadFrames && j < frames.length; j++) { + frames[j].in_app = false; + } + } + } + frames = frames.slice(0, this._globalOptions.stackTraceLimit); + return frames; + }, + + _normalizeFrame: function(frame, stackInfoUrl) { + // normalize the frames data + var normalized = { + filename: frame.url, + lineno: frame.line, + colno: frame.column, + function: frame.func || '?' + }; + + // Case when we don't have any information about the error + // E.g. throwing a string or raw object, instead of an `Error` in Firefox + // Generating synthetic error doesn't add any value here + // + // We should probably somehow let a user know that they should fix their code + if (!frame.url) { + normalized.filename = stackInfoUrl; // fallback to whole stacks url from onerror handler + } + + normalized.in_app = !// determine if an exception came from outside of our app + // first we check the global includePaths list. + ( + (!!this._globalOptions.includePaths.test && + !this._globalOptions.includePaths.test(normalized.filename)) || + // Now we check for fun, if the function name is Raven or TraceKit + /(Raven|TraceKit)\./.test(normalized['function']) || + // finally, we do a last ditch effort and check for raven.min.js + /raven\.(min\.)?js$/.test(normalized.filename) + ); + + return normalized; + }, + + _processException: function(type, message, fileurl, lineno, frames, options) { + var prefixedMessage = (type ? type + ': ' : '') + (message || ''); + if ( + !!this._globalOptions.ignoreErrors.test && + (this._globalOptions.ignoreErrors.test(message) || + this._globalOptions.ignoreErrors.test(prefixedMessage)) + ) { + return; + } + + var stacktrace; + + if (frames && frames.length) { + fileurl = frames[0].filename || fileurl; + // Sentry expects frames oldest to newest + // and JS sends them as newest to oldest + frames.reverse(); + stacktrace = {frames: frames}; + } else if (fileurl) { + stacktrace = { + frames: [ + { + filename: fileurl, + lineno: lineno, + in_app: true + } + ] + }; + } + + if ( + !!this._globalOptions.ignoreUrls.test && + this._globalOptions.ignoreUrls.test(fileurl) + ) { + return; + } + + if ( + !!this._globalOptions.whitelistUrls.test && + !this._globalOptions.whitelistUrls.test(fileurl) + ) { + return; + } + + var data = objectMerge( + { + // sentry.interfaces.Exception + exception: { + values: [ + { + type: type, + value: message, + stacktrace: stacktrace + } + ] + }, + transaction: fileurl + }, + options + ); + + // Fire away! + this._send(data); + }, + + _trimPacket: function(data) { + // For now, we only want to truncate the two different messages + // but this could/should be expanded to just trim everything + var max = this._globalOptions.maxMessageLength; + if (data.message) { + data.message = truncate(data.message, max); + } + if (data.exception) { + var exception = data.exception.values[0]; + exception.value = truncate(exception.value, max); + } + + var request = data.request; + if (request) { + if (request.url) { + request.url = truncate(request.url, this._globalOptions.maxUrlLength); + } + if (request.Referer) { + request.Referer = truncate(request.Referer, this._globalOptions.maxUrlLength); + } + } + + if (data.breadcrumbs && data.breadcrumbs.values) + this._trimBreadcrumbs(data.breadcrumbs); + + return data; + }, + + /** + * Truncate breadcrumb values (right now just URLs) + */ + _trimBreadcrumbs: function(breadcrumbs) { + // known breadcrumb properties with urls + // TODO: also consider arbitrary prop values that start with (https?)?:// + var urlProps = ['to', 'from', 'url'], + urlProp, + crumb, + data; + + for (var i = 0; i < breadcrumbs.values.length; ++i) { + crumb = breadcrumbs.values[i]; + if ( + !crumb.hasOwnProperty('data') || + !isObject(crumb.data) || + objectFrozen(crumb.data) + ) + continue; + + data = objectMerge({}, crumb.data); + for (var j = 0; j < urlProps.length; ++j) { + urlProp = urlProps[j]; + if (data.hasOwnProperty(urlProp) && data[urlProp]) { + data[urlProp] = truncate(data[urlProp], this._globalOptions.maxUrlLength); + } + } + breadcrumbs.values[i].data = data; + } + }, + + _getHttpData: function() { + if (!this._hasNavigator && !this._hasDocument) return; + var httpData = {}; + + if (this._hasNavigator && _navigator.userAgent) { + httpData.headers = { + 'User-Agent': _navigator.userAgent + }; + } + + // Check in `window` instead of `document`, as we may be in ServiceWorker environment + if (_window.location && _window.location.href) { + httpData.url = _window.location.href; + } + + if (this._hasDocument && _document.referrer) { + if (!httpData.headers) httpData.headers = {}; + httpData.headers.Referer = _document.referrer; + } + + return httpData; + }, + + _resetBackoff: function() { + this._backoffDuration = 0; + this._backoffStart = null; + }, + + _shouldBackoff: function() { + return this._backoffDuration && now() - this._backoffStart < this._backoffDuration; + }, + + /** + * Returns true if the in-process data payload matches the signature + * of the previously-sent data + * + * NOTE: This has to be done at this level because TraceKit can generate + * data from window.onerror WITHOUT an exception object (IE8, IE9, + * other old browsers). This can take the form of an "exception" + * data object with a single frame (derived from the onerror args). + */ + _isRepeatData: function(current) { + var last = this._lastData; + + if ( + !last || + current.message !== last.message || // defined for captureMessage + current.transaction !== last.transaction // defined for captureException/onerror + ) + return false; + + // Stacktrace interface (i.e. from captureMessage) + if (current.stacktrace || last.stacktrace) { + return isSameStacktrace(current.stacktrace, last.stacktrace); + } else if (current.exception || last.exception) { + // Exception interface (i.e. from captureException/onerror) + return isSameException(current.exception, last.exception); + } + + return true; + }, + + _setBackoffState: function(request) { + // If we are already in a backoff state, don't change anything + if (this._shouldBackoff()) { + return; + } + + var status = request.status; + + // 400 - project_id doesn't exist or some other fatal + // 401 - invalid/revoked dsn + // 429 - too many requests + if (!(status === 400 || status === 401 || status === 429)) return; + + var retry; + try { + // If Retry-After is not in Access-Control-Expose-Headers, most + // browsers will throw an exception trying to access it + if (supportsFetch()) { + retry = request.headers.get('Retry-After'); + } else { + retry = request.getResponseHeader('Retry-After'); + } + + // Retry-After is returned in seconds + retry = parseInt(retry, 10) * 1000; + } catch (e) { + /* eslint no-empty:0 */ + } + + this._backoffDuration = retry + ? // If Sentry server returned a Retry-After value, use it + retry + : // Otherwise, double the last backoff duration (starts at 1 sec) + this._backoffDuration * 2 || 1000; + + this._backoffStart = now(); + }, + + _send: function(data) { + var globalOptions = this._globalOptions; + + var baseData = { + project: this._globalProject, + logger: globalOptions.logger, + platform: 'javascript' + }, + httpData = this._getHttpData(); + + if (httpData) { + baseData.request = httpData; + } + + // HACK: delete `trimHeadFrames` to prevent from appearing in outbound payload + if (data.trimHeadFrames) delete data.trimHeadFrames; + + data = objectMerge(baseData, data); + + // Merge in the tags and extra separately since objectMerge doesn't handle a deep merge + data.tags = objectMerge(objectMerge({}, this._globalContext.tags), data.tags); + data.extra = objectMerge(objectMerge({}, this._globalContext.extra), data.extra); + + // Send along our own collected metadata with extra + data.extra['session:duration'] = now() - this._startTime; + + if (this._breadcrumbs && this._breadcrumbs.length > 0) { + // intentionally make shallow copy so that additions + // to breadcrumbs aren't accidentally sent in this request + data.breadcrumbs = { + values: [].slice.call(this._breadcrumbs, 0) + }; + } + + if (this._globalContext.user) { + // sentry.interfaces.User + data.user = this._globalContext.user; + } + + // Include the environment if it's defined in globalOptions + if (globalOptions.environment) data.environment = globalOptions.environment; + + // Include the release if it's defined in globalOptions + if (globalOptions.release) data.release = globalOptions.release; + + // Include server_name if it's defined in globalOptions + if (globalOptions.serverName) data.server_name = globalOptions.serverName; + + data = this._sanitizeData(data); + + // Cleanup empty properties before sending them to the server + Object.keys(data).forEach(function(key) { + if (data[key] == null || data[key] === '' || isEmptyObject(data[key])) { + delete data[key]; + } + }); + + if (isFunction(globalOptions.dataCallback)) { + data = globalOptions.dataCallback(data) || data; + } + + // Why?????????? + if (!data || isEmptyObject(data)) { + return; + } + + // Check if the request should be filtered or not + if ( + isFunction(globalOptions.shouldSendCallback) && + !globalOptions.shouldSendCallback(data) + ) { + return; + } + + // Backoff state: Sentry server previously responded w/ an error (e.g. 429 - too many requests), + // so drop requests until "cool-off" period has elapsed. + if (this._shouldBackoff()) { + this._logDebug('warn', 'Raven dropped error due to backoff: ', data); + return; + } + + if (typeof globalOptions.sampleRate === 'number') { + if (Math.random() < globalOptions.sampleRate) { + this._sendProcessedPayload(data); + } + } else { + this._sendProcessedPayload(data); + } + }, + + _sanitizeData: function(data) { + return sanitize(data, this._globalOptions.sanitizeKeys); + }, + + _getUuid: function() { + return uuid4(); + }, + + _sendProcessedPayload: function(data, callback) { + var self = this; + var globalOptions = this._globalOptions; + + if (!this.isSetup()) return; + + // Try and clean up the packet before sending by truncating long values + data = this._trimPacket(data); + + // ideally duplicate error testing should occur *before* dataCallback/shouldSendCallback, + // but this would require copying an un-truncated copy of the data packet, which can be + // arbitrarily deep (extra_data) -- could be worthwhile? will revisit + if (!this._globalOptions.allowDuplicates && this._isRepeatData(data)) { + this._logDebug('warn', 'Raven dropped repeat event: ', data); + return; + } + + // Send along an event_id if not explicitly passed. + // This event_id can be used to reference the error within Sentry itself. + // Set lastEventId after we know the error should actually be sent + this._lastEventId = data.event_id || (data.event_id = this._getUuid()); + + // Store outbound payload after trim + this._lastData = data; + + this._logDebug('debug', 'Raven about to send:', data); + + var auth = { + sentry_version: '7', + sentry_client: 'raven-js/' + this.VERSION, + sentry_key: this._globalKey + }; + + if (this._globalSecret) { + auth.sentry_secret = this._globalSecret; + } + + var exception = data.exception && data.exception.values[0]; + + // only capture 'sentry' breadcrumb is autoBreadcrumbs is truthy + if ( + this._globalOptions.autoBreadcrumbs && + this._globalOptions.autoBreadcrumbs.sentry + ) { + this.captureBreadcrumb({ + category: 'sentry', + message: exception + ? (exception.type ? exception.type + ': ' : '') + exception.value + : data.message, + event_id: data.event_id, + level: data.level || 'error' // presume error unless specified + }); + } + + var url = this._globalEndpoint; + (globalOptions.transport || this._makeRequest).call(this, { + url: url, + auth: auth, + data: data, + options: globalOptions, + onSuccess: function success() { + self._resetBackoff(); + + self._triggerEvent('success', { + data: data, + src: url + }); + callback && callback(); + }, + onError: function failure(error) { + self._logDebug('error', 'Raven transport failed to send: ', error); + + if (error.request) { + self._setBackoffState(error.request); + } + + self._triggerEvent('failure', { + data: data, + src: url + }); + error = error || new Error('Raven send failed (no additional details provided)'); + callback && callback(error); + } + }); + }, + + _makeRequest: function(opts) { + // Auth is intentionally sent as part of query string (NOT as custom HTTP header) to avoid preflight CORS requests + var url = opts.url + '?' + urlencode(opts.auth); + + var evaluatedHeaders = null; + var evaluatedFetchParameters = {}; + + if (opts.options.headers) { + evaluatedHeaders = this._evaluateHash(opts.options.headers); + } + + if (opts.options.fetchParameters) { + evaluatedFetchParameters = this._evaluateHash(opts.options.fetchParameters); + } + + if (supportsFetch()) { + evaluatedFetchParameters.body = stringify(opts.data); + + var defaultFetchOptions = objectMerge({}, this._fetchDefaults); + var fetchOptions = objectMerge(defaultFetchOptions, evaluatedFetchParameters); + + if (evaluatedHeaders) { + fetchOptions.headers = evaluatedHeaders; + } + + return _window + .fetch(url, fetchOptions) + .then(function(response) { + if (response.ok) { + opts.onSuccess && opts.onSuccess(); + } else { + var error = new Error('Sentry error code: ' + response.status); + // It's called request only to keep compatibility with XHR interface + // and not add more redundant checks in setBackoffState method + error.request = response; + opts.onError && opts.onError(error); + } + }) + ['catch'](function() { + opts.onError && + opts.onError(new Error('Sentry error code: network unavailable')); + }); + } + + var request = _window.XMLHttpRequest && new _window.XMLHttpRequest(); + if (!request) return; + + // if browser doesn't support CORS (e.g. IE7), we are out of luck + var hasCORS = 'withCredentials' in request || typeof XDomainRequest !== 'undefined'; + + if (!hasCORS) return; + + if ('withCredentials' in request) { + request.onreadystatechange = function() { + if (request.readyState !== 4) { + return; + } else if (request.status === 200) { + opts.onSuccess && opts.onSuccess(); + } else if (opts.onError) { + var err = new Error('Sentry error code: ' + request.status); + err.request = request; + opts.onError(err); + } + }; + } else { + request = new XDomainRequest(); + // xdomainrequest cannot go http -> https (or vice versa), + // so always use protocol relative + url = url.replace(/^https?:/, ''); + + // onreadystatechange not supported by XDomainRequest + if (opts.onSuccess) { + request.onload = opts.onSuccess; + } + if (opts.onError) { + request.onerror = function() { + var err = new Error('Sentry error code: XDomainRequest'); + err.request = request; + opts.onError(err); + }; + } + } + + request.open('POST', url); + + if (evaluatedHeaders) { + each(evaluatedHeaders, function(key, value) { + request.setRequestHeader(key, value); + }); + } + + request.send(stringify(opts.data)); + }, + + _evaluateHash: function(hash) { + var evaluated = {}; + + for (var key in hash) { + if (hash.hasOwnProperty(key)) { + var value = hash[key]; + evaluated[key] = typeof value === 'function' ? value() : value; + } + } + + return evaluated; + }, + + _logDebug: function(level) { + // We allow `Raven.debug` and `Raven.config(DSN, { debug: true })` to not make backward incompatible API change + if ( + this._originalConsoleMethods[level] && + (this.debug || this._globalOptions.debug) + ) { + // In IE<10 console methods do not have their own 'apply' method + Function.prototype.apply.call( + this._originalConsoleMethods[level], + this._originalConsole, + [].slice.call(arguments, 1) + ); + } + }, + + _mergeContext: function(key, context) { + if (isUndefined(context)) { + delete this._globalContext[key]; + } else { + this._globalContext[key] = objectMerge(this._globalContext[key] || {}, context); + } + } +}; + +// Deprecations +Raven.prototype.setUser = Raven.prototype.setUserContext; +Raven.prototype.setReleaseContext = Raven.prototype.setRelease; + +module.exports = Raven; + +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"2":2,"3":3,"6":6,"7":7,"8":8,"9":9}],5:[function(_dereq_,module,exports){ +(function (global){ +/** + * Enforces a single instance of the Raven client, and the + * main entry point for Raven. If you are a consumer of the + * Raven library, you SHOULD load this file (vs raven.js). + **/ + +var RavenConstructor = _dereq_(4); + +// This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) +var _window = + typeof window !== 'undefined' + ? window + : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; +var _Raven = _window.Raven; + +var Raven = new RavenConstructor(); + +/* + * Allow multiple versions of Raven to be installed. + * Strip Raven from the global context and returns the instance. + * + * @return {Raven} + */ +Raven.noConflict = function() { + _window.Raven = _Raven; + return Raven; +}; + +Raven.afterLoad(); + +module.exports = Raven; + +/** + * DISCLAIMER: + * + * Expose `Client` constructor for cases where user want to track multiple "sub-applications" in one larger app. + * It's not meant to be used by a wide audience, so pleaaase make sure that you know what you're doing before using it. + * Accidentally calling `install` multiple times, may result in an unexpected behavior that's very hard to debug. + * + * It's called `Client' to be in-line with Raven Node implementation. + * + * HOWTO: + * + * import Raven from 'raven-js'; + * + * const someAppReporter = new Raven.Client(); + * const someOtherAppReporter = new Raven.Client(); + * + * someAppReporter.config('__DSN__', { + * ...config goes here + * }); + * + * someOtherAppReporter.config('__OTHER_DSN__', { + * ...config goes here + * }); + * + * someAppReporter.captureMessage(...); + * someAppReporter.captureException(...); + * someAppReporter.captureBreadcrumb(...); + * + * someOtherAppReporter.captureMessage(...); + * someOtherAppReporter.captureException(...); + * someOtherAppReporter.captureBreadcrumb(...); + * + * It should "just work". + */ +module.exports.Client = RavenConstructor; + +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"4":4}],6:[function(_dereq_,module,exports){ +(function (global){ +var stringify = _dereq_(8); + +var _window = + typeof window !== 'undefined' + ? window + : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; + +function isObject(what) { + return typeof what === 'object' && what !== null; +} + +// Yanked from https://git.io/vS8DV re-used under CC0 +// with some tiny modifications +function isError(value) { + switch (Object.prototype.toString.call(value)) { + case '[object Error]': + return true; + case '[object Exception]': + return true; + case '[object DOMException]': + return true; + default: + return value instanceof Error; + } +} + +function isErrorEvent(value) { + return Object.prototype.toString.call(value) === '[object ErrorEvent]'; +} + +function isDOMError(value) { + return Object.prototype.toString.call(value) === '[object DOMError]'; +} + +function isDOMException(value) { + return Object.prototype.toString.call(value) === '[object DOMException]'; +} + +function isUndefined(what) { + return what === void 0; +} + +function isFunction(what) { + return typeof what === 'function'; +} + +function isPlainObject(what) { + return Object.prototype.toString.call(what) === '[object Object]'; +} + +function isString(what) { + return Object.prototype.toString.call(what) === '[object String]'; +} + +function isArray(what) { + return Object.prototype.toString.call(what) === '[object Array]'; +} + +function isEmptyObject(what) { + if (!isPlainObject(what)) return false; + + for (var _ in what) { + if (what.hasOwnProperty(_)) { + return false; + } + } + return true; +} + +function supportsErrorEvent() { + try { + new ErrorEvent(''); // eslint-disable-line no-new + return true; + } catch (e) { + return false; + } +} + +function supportsDOMError() { + try { + new DOMError(''); // eslint-disable-line no-new + return true; + } catch (e) { + return false; + } +} + +function supportsDOMException() { + try { + new DOMException(''); // eslint-disable-line no-new + return true; + } catch (e) { + return false; + } +} + +function supportsFetch() { + if (!('fetch' in _window)) return false; + + try { + new Headers(); // eslint-disable-line no-new + new Request(''); // eslint-disable-line no-new + new Response(); // eslint-disable-line no-new + return true; + } catch (e) { + return false; + } +} + +// Despite all stars in the sky saying that Edge supports old draft syntax, aka 'never', 'always', 'origin' and 'default +// https://caniuse.com/#feat=referrer-policy +// It doesn't. And it throw exception instead of ignoring this parameter... +// REF: https://github.com/getsentry/raven-js/issues/1233 +function supportsReferrerPolicy() { + if (!supportsFetch()) return false; + + try { + // eslint-disable-next-line no-new + new Request('pickleRick', { + referrerPolicy: 'origin' + }); + return true; + } catch (e) { + return false; + } +} + +function supportsPromiseRejectionEvent() { + return typeof PromiseRejectionEvent === 'function'; +} + +function wrappedCallback(callback) { + function dataCallback(data, original) { + var normalizedData = callback(data) || data; + if (original) { + return original(normalizedData) || normalizedData; + } + return normalizedData; + } + + return dataCallback; +} + +function each(obj, callback) { + var i, j; + + if (isUndefined(obj.length)) { + for (i in obj) { + if (hasKey(obj, i)) { + callback.call(null, i, obj[i]); + } + } + } else { + j = obj.length; + if (j) { + for (i = 0; i < j; i++) { + callback.call(null, i, obj[i]); + } + } + } +} + +function objectMerge(obj1, obj2) { + if (!obj2) { + return obj1; + } + each(obj2, function(key, value) { + obj1[key] = value; + }); + return obj1; +} + +/** + * This function is only used for react-native. + * react-native freezes object that have already been sent over the + * js bridge. We need this function in order to check if the object is frozen. + * So it's ok that objectFrozen returns false if Object.isFrozen is not + * supported because it's not relevant for other "platforms". See related issue: + * https://github.com/getsentry/react-native-sentry/issues/57 + */ +function objectFrozen(obj) { + if (!Object.isFrozen) { + return false; + } + return Object.isFrozen(obj); +} + +function truncate(str, max) { + if (typeof max !== 'number') { + throw new Error('2nd argument to `truncate` function should be a number'); + } + if (typeof str !== 'string' || max === 0) { + return str; + } + return str.length <= max ? str : str.substr(0, max) + '\u2026'; +} + +/** + * hasKey, a better form of hasOwnProperty + * Example: hasKey(MainHostObject, property) === true/false + * + * @param {Object} host object to check property + * @param {string} key to check + */ +function hasKey(object, key) { + return Object.prototype.hasOwnProperty.call(object, key); +} + +function joinRegExp(patterns) { + // Combine an array of regular expressions and strings into one large regexp + // Be mad. + var sources = [], + i = 0, + len = patterns.length, + pattern; + + for (; i < len; i++) { + pattern = patterns[i]; + if (isString(pattern)) { + // If it's a string, we need to escape it + // Taken from: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions + sources.push(pattern.replace(/([.*+?^=!:${}()|\[\]\/\\])/g, '\\$1')); + } else if (pattern && pattern.source) { + // If it's a regexp already, we want to extract the source + sources.push(pattern.source); + } + // Intentionally skip other cases + } + return new RegExp(sources.join('|'), 'i'); +} + +function urlencode(o) { + var pairs = []; + each(o, function(key, value) { + pairs.push(encodeURIComponent(key) + '=' + encodeURIComponent(value)); + }); + return pairs.join('&'); +} + +// borrowed from https://tools.ietf.org/html/rfc3986#appendix-B +// intentionally using regex and not href parsing trick because React Native and other +// environments where DOM might not be available +function parseUrl(url) { + if (typeof url !== 'string') return {}; + var match = url.match(/^(([^:\/?#]+):)?(\/\/([^\/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?$/); + + // coerce to undefined values to empty string so we don't get 'undefined' + var query = match[6] || ''; + var fragment = match[8] || ''; + return { + protocol: match[2], + host: match[4], + path: match[5], + relative: match[5] + query + fragment // everything minus origin + }; +} +function uuid4() { + var crypto = _window.crypto || _window.msCrypto; + + if (!isUndefined(crypto) && crypto.getRandomValues) { + // Use window.crypto API if available + // eslint-disable-next-line no-undef + var arr = new Uint16Array(8); + crypto.getRandomValues(arr); + + // set 4 in byte 7 + arr[3] = (arr[3] & 0xfff) | 0x4000; + // set 2 most significant bits of byte 9 to '10' + arr[4] = (arr[4] & 0x3fff) | 0x8000; + + var pad = function(num) { + var v = num.toString(16); + while (v.length < 4) { + v = '0' + v; + } + return v; + }; + + return ( + pad(arr[0]) + + pad(arr[1]) + + pad(arr[2]) + + pad(arr[3]) + + pad(arr[4]) + + pad(arr[5]) + + pad(arr[6]) + + pad(arr[7]) + ); + } else { + // http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/2117523#2117523 + return 'xxxxxxxxxxxx4xxxyxxxxxxxxxxxxxxx'.replace(/[xy]/g, function(c) { + var r = (Math.random() * 16) | 0, + v = c === 'x' ? r : (r & 0x3) | 0x8; + return v.toString(16); + }); + } +} + +/** + * Given a child DOM element, returns a query-selector statement describing that + * and its ancestors + * e.g. [HTMLElement] => body > div > input#foo.btn[name=baz] + * @param elem + * @returns {string} + */ +function htmlTreeAsString(elem) { + /* eslint no-extra-parens:0*/ + var MAX_TRAVERSE_HEIGHT = 5, + MAX_OUTPUT_LEN = 80, + out = [], + height = 0, + len = 0, + separator = ' > ', + sepLength = separator.length, + nextStr; + + while (elem && height++ < MAX_TRAVERSE_HEIGHT) { + nextStr = htmlElementAsString(elem); + // bail out if + // - nextStr is the 'html' element + // - the length of the string that would be created exceeds MAX_OUTPUT_LEN + // (ignore this limit if we are on the first iteration) + if ( + nextStr === 'html' || + (height > 1 && len + out.length * sepLength + nextStr.length >= MAX_OUTPUT_LEN) + ) { + break; + } + + out.push(nextStr); + + len += nextStr.length; + elem = elem.parentNode; + } + + return out.reverse().join(separator); +} + +/** + * Returns a simple, query-selector representation of a DOM element + * e.g. [HTMLElement] => input#foo.btn[name=baz] + * @param HTMLElement + * @returns {string} + */ +function htmlElementAsString(elem) { + var out = [], + className, + classes, + key, + attr, + i; + + if (!elem || !elem.tagName) { + return ''; + } + + out.push(elem.tagName.toLowerCase()); + if (elem.id) { + out.push('#' + elem.id); + } + + className = elem.className; + if (className && isString(className)) { + classes = className.split(/\s+/); + for (i = 0; i < classes.length; i++) { + out.push('.' + classes[i]); + } + } + var attrWhitelist = ['type', 'name', 'title', 'alt']; + for (i = 0; i < attrWhitelist.length; i++) { + key = attrWhitelist[i]; + attr = elem.getAttribute(key); + if (attr) { + out.push('[' + key + '="' + attr + '"]'); + } + } + return out.join(''); +} + +/** + * Returns true if either a OR b is truthy, but not both + */ +function isOnlyOneTruthy(a, b) { + return !!(!!a ^ !!b); +} + +/** + * Returns true if both parameters are undefined + */ +function isBothUndefined(a, b) { + return isUndefined(a) && isUndefined(b); +} + +/** + * Returns true if the two input exception interfaces have the same content + */ +function isSameException(ex1, ex2) { + if (isOnlyOneTruthy(ex1, ex2)) return false; + + ex1 = ex1.values[0]; + ex2 = ex2.values[0]; + + if (ex1.type !== ex2.type || ex1.value !== ex2.value) return false; + + // in case both stacktraces are undefined, we can't decide so default to false + if (isBothUndefined(ex1.stacktrace, ex2.stacktrace)) return false; + + return isSameStacktrace(ex1.stacktrace, ex2.stacktrace); +} + +/** + * Returns true if the two input stack trace interfaces have the same content + */ +function isSameStacktrace(stack1, stack2) { + if (isOnlyOneTruthy(stack1, stack2)) return false; + + var frames1 = stack1.frames; + var frames2 = stack2.frames; + + // Exit early if frame count differs + if (frames1.length !== frames2.length) return false; + + // Iterate through every frame; bail out if anything differs + var a, b; + for (var i = 0; i < frames1.length; i++) { + a = frames1[i]; + b = frames2[i]; + if ( + a.filename !== b.filename || + a.lineno !== b.lineno || + a.colno !== b.colno || + a['function'] !== b['function'] + ) + return false; + } + return true; +} + +/** + * Polyfill a method + * @param obj object e.g. `document` + * @param name method name present on object e.g. `addEventListener` + * @param replacement replacement function + * @param track {optional} record instrumentation to an array + */ +function fill(obj, name, replacement, track) { + if (obj == null) return; + var orig = obj[name]; + obj[name] = replacement(orig); + obj[name].__raven__ = true; + obj[name].__orig__ = orig; + if (track) { + track.push([obj, name, orig]); + } +} + +/** + * Join values in array + * @param input array of values to be joined together + * @param delimiter string to be placed in-between values + * @returns {string} + */ +function safeJoin(input, delimiter) { + if (!isArray(input)) return ''; + + var output = []; + + for (var i = 0; i < input.length; i++) { + try { + output.push(String(input[i])); + } catch (e) { + output.push('[value cannot be serialized]'); + } + } + + return output.join(delimiter); +} + +// Default Node.js REPL depth +var MAX_SERIALIZE_EXCEPTION_DEPTH = 3; +// 50kB, as 100kB is max payload size, so half sounds reasonable +var MAX_SERIALIZE_EXCEPTION_SIZE = 50 * 1024; +var MAX_SERIALIZE_KEYS_LENGTH = 40; + +function utf8Length(value) { + return ~-encodeURI(value).split(/%..|./).length; +} + +function jsonSize(value) { + return utf8Length(JSON.stringify(value)); +} + +function serializeValue(value) { + if (typeof value === 'string') { + var maxLength = 40; + return truncate(value, maxLength); + } else if ( + typeof value === 'number' || + typeof value === 'boolean' || + typeof value === 'undefined' + ) { + return value; + } + + var type = Object.prototype.toString.call(value); + + // Node.js REPL notation + if (type === '[object Object]') return '[Object]'; + if (type === '[object Array]') return '[Array]'; + if (type === '[object Function]') + return value.name ? '[Function: ' + value.name + ']' : '[Function]'; + + return value; +} + +function serializeObject(value, depth) { + if (depth === 0) return serializeValue(value); + + if (isPlainObject(value)) { + return Object.keys(value).reduce(function(acc, key) { + acc[key] = serializeObject(value[key], depth - 1); + return acc; + }, {}); + } else if (Array.isArray(value)) { + return value.map(function(val) { + return serializeObject(val, depth - 1); + }); + } + + return serializeValue(value); +} + +function serializeException(ex, depth, maxSize) { + if (!isPlainObject(ex)) return ex; + + depth = typeof depth !== 'number' ? MAX_SERIALIZE_EXCEPTION_DEPTH : depth; + maxSize = typeof depth !== 'number' ? MAX_SERIALIZE_EXCEPTION_SIZE : maxSize; + + var serialized = serializeObject(ex, depth); + + if (jsonSize(stringify(serialized)) > maxSize) { + return serializeException(ex, depth - 1); + } + + return serialized; +} + +function serializeKeysForMessage(keys, maxLength) { + if (typeof keys === 'number' || typeof keys === 'string') return keys.toString(); + if (!Array.isArray(keys)) return ''; + + keys = keys.filter(function(key) { + return typeof key === 'string'; + }); + if (keys.length === 0) return '[object has no keys]'; + + maxLength = typeof maxLength !== 'number' ? MAX_SERIALIZE_KEYS_LENGTH : maxLength; + if (keys[0].length >= maxLength) return keys[0]; + + for (var usedKeys = keys.length; usedKeys > 0; usedKeys--) { + var serialized = keys.slice(0, usedKeys).join(', '); + if (serialized.length > maxLength) continue; + if (usedKeys === keys.length) return serialized; + return serialized + '\u2026'; + } + + return ''; +} + +function sanitize(input, sanitizeKeys) { + if (!isArray(sanitizeKeys) || (isArray(sanitizeKeys) && sanitizeKeys.length === 0)) + return input; + + var sanitizeRegExp = joinRegExp(sanitizeKeys); + var sanitizeMask = '********'; + var safeInput; + + try { + safeInput = JSON.parse(stringify(input)); + } catch (o_O) { + return input; + } + + function sanitizeWorker(workerInput) { + if (isArray(workerInput)) { + return workerInput.map(function(val) { + return sanitizeWorker(val); + }); + } + + if (isPlainObject(workerInput)) { + return Object.keys(workerInput).reduce(function(acc, k) { + if (sanitizeRegExp.test(k)) { + acc[k] = sanitizeMask; + } else { + acc[k] = sanitizeWorker(workerInput[k]); + } + return acc; + }, {}); + } + + return workerInput; + } + + return sanitizeWorker(safeInput); +} + +module.exports = { + isObject: isObject, + isError: isError, + isErrorEvent: isErrorEvent, + isDOMError: isDOMError, + isDOMException: isDOMException, + isUndefined: isUndefined, + isFunction: isFunction, + isPlainObject: isPlainObject, + isString: isString, + isArray: isArray, + isEmptyObject: isEmptyObject, + supportsErrorEvent: supportsErrorEvent, + supportsDOMError: supportsDOMError, + supportsDOMException: supportsDOMException, + supportsFetch: supportsFetch, + supportsReferrerPolicy: supportsReferrerPolicy, + supportsPromiseRejectionEvent: supportsPromiseRejectionEvent, + wrappedCallback: wrappedCallback, + each: each, + objectMerge: objectMerge, + truncate: truncate, + objectFrozen: objectFrozen, + hasKey: hasKey, + joinRegExp: joinRegExp, + urlencode: urlencode, + uuid4: uuid4, + htmlTreeAsString: htmlTreeAsString, + htmlElementAsString: htmlElementAsString, + isSameException: isSameException, + isSameStacktrace: isSameStacktrace, + parseUrl: parseUrl, + fill: fill, + safeJoin: safeJoin, + serializeException: serializeException, + serializeKeysForMessage: serializeKeysForMessage, + sanitize: sanitize +}; + +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"8":8}],7:[function(_dereq_,module,exports){ +(function (global){ +var utils = _dereq_(6); + +/* + TraceKit - Cross brower stack traces + + This was originally forked from github.com/occ/TraceKit, but has since been + largely re-written and is now maintained as part of raven-js. Tests for + this are in test/vendor. + + MIT license +*/ + +var TraceKit = { + collectWindowErrors: true, + debug: false +}; + +// This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) +var _window = + typeof window !== 'undefined' + ? window + : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; + +// global reference to slice +var _slice = [].slice; +var UNKNOWN_FUNCTION = '?'; + +// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error#Error_types +var ERROR_TYPES_RE = /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/; + +function getLocationHref() { + if (typeof document === 'undefined' || document.location == null) return ''; + return document.location.href; +} + +function getLocationOrigin() { + if (typeof document === 'undefined' || document.location == null) return ''; + + // Oh dear IE10... + if (!document.location.origin) { + document.location.origin = + document.location.protocol + + '//' + + document.location.hostname + + (document.location.port ? ':' + document.location.port : ''); + } + + return document.location.origin; +} + +/** + * TraceKit.report: cross-browser processing of unhandled exceptions + * + * Syntax: + * TraceKit.report.subscribe(function(stackInfo) { ... }) + * TraceKit.report.unsubscribe(function(stackInfo) { ... }) + * TraceKit.report(exception) + * try { ...code... } catch(ex) { TraceKit.report(ex); } + * + * Supports: + * - Firefox: full stack trace with line numbers, plus column number + * on top frame; column number is not guaranteed + * - Opera: full stack trace with line and column numbers + * - Chrome: full stack trace with line and column numbers + * - Safari: line and column number for the top frame only; some frames + * may be missing, and column number is not guaranteed + * - IE: line and column number for the top frame only; some frames + * may be missing, and column number is not guaranteed + * + * In theory, TraceKit should work on all of the following versions: + * - IE5.5+ (only 8.0 tested) + * - Firefox 0.9+ (only 3.5+ tested) + * - Opera 7+ (only 10.50 tested; versions 9 and earlier may require + * Exceptions Have Stacktrace to be enabled in opera:config) + * - Safari 3+ (only 4+ tested) + * - Chrome 1+ (only 5+ tested) + * - Konqueror 3.5+ (untested) + * + * Requires TraceKit.computeStackTrace. + * + * Tries to catch all unhandled exceptions and report them to the + * subscribed handlers. Please note that TraceKit.report will rethrow the + * exception. This is REQUIRED in order to get a useful stack trace in IE. + * If the exception does not reach the top of the browser, you will only + * get a stack trace from the point where TraceKit.report was called. + * + * Handlers receive a stackInfo object as described in the + * TraceKit.computeStackTrace docs. + */ +TraceKit.report = (function reportModuleWrapper() { + var handlers = [], + lastArgs = null, + lastException = null, + lastExceptionStack = null; + + /** + * Add a crash handler. + * @param {Function} handler + */ + function subscribe(handler) { + installGlobalHandler(); + handlers.push(handler); + } + + /** + * Remove a crash handler. + * @param {Function} handler + */ + function unsubscribe(handler) { + for (var i = handlers.length - 1; i >= 0; --i) { + if (handlers[i] === handler) { + handlers.splice(i, 1); + } + } + } + + /** + * Remove all crash handlers. + */ + function unsubscribeAll() { + uninstallGlobalHandler(); + handlers = []; + } + + /** + * Dispatch stack information to all handlers. + * @param {Object.} stack + */ + function notifyHandlers(stack, isWindowError) { + var exception = null; + if (isWindowError && !TraceKit.collectWindowErrors) { + return; + } + for (var i in handlers) { + if (handlers.hasOwnProperty(i)) { + try { + handlers[i].apply(null, [stack].concat(_slice.call(arguments, 2))); + } catch (inner) { + exception = inner; + } + } + } + + if (exception) { + throw exception; + } + } + + var _oldOnerrorHandler, _onErrorHandlerInstalled; + + /** + * Ensures all global unhandled exceptions are recorded. + * Supported by Gecko and IE. + * @param {string} msg Error message. + * @param {string} url URL of script that generated the exception. + * @param {(number|string)} lineNo The line number at which the error + * occurred. + * @param {?(number|string)} colNo The column number at which the error + * occurred. + * @param {?Error} ex The actual Error object. + */ + function traceKitWindowOnError(msg, url, lineNo, colNo, ex) { + var stack = null; + // If 'ex' is ErrorEvent, get real Error from inside + var exception = utils.isErrorEvent(ex) ? ex.error : ex; + // If 'msg' is ErrorEvent, get real message from inside + var message = utils.isErrorEvent(msg) ? msg.message : msg; + + if (lastExceptionStack) { + TraceKit.computeStackTrace.augmentStackTraceWithInitialElement( + lastExceptionStack, + url, + lineNo, + message + ); + processLastException(); + } else if (exception && utils.isError(exception)) { + // non-string `exception` arg; attempt to extract stack trace + + // New chrome and blink send along a real error object + // Let's just report that like a normal error. + // See: https://mikewest.org/2013/08/debugging-runtime-errors-with-window-onerror + stack = TraceKit.computeStackTrace(exception); + notifyHandlers(stack, true); + } else { + var location = { + url: url, + line: lineNo, + column: colNo + }; + + var name = undefined; + var groups; + + if ({}.toString.call(message) === '[object String]') { + var groups = message.match(ERROR_TYPES_RE); + if (groups) { + name = groups[1]; + message = groups[2]; + } + } + + location.func = UNKNOWN_FUNCTION; + + stack = { + name: name, + message: message, + url: getLocationHref(), + stack: [location] + }; + notifyHandlers(stack, true); + } + + if (_oldOnerrorHandler) { + return _oldOnerrorHandler.apply(this, arguments); + } + + return false; + } + + function installGlobalHandler() { + if (_onErrorHandlerInstalled) { + return; + } + _oldOnerrorHandler = _window.onerror; + _window.onerror = traceKitWindowOnError; + _onErrorHandlerInstalled = true; + } + + function uninstallGlobalHandler() { + if (!_onErrorHandlerInstalled) { + return; + } + _window.onerror = _oldOnerrorHandler; + _onErrorHandlerInstalled = false; + _oldOnerrorHandler = undefined; + } + + function processLastException() { + var _lastExceptionStack = lastExceptionStack, + _lastArgs = lastArgs; + lastArgs = null; + lastExceptionStack = null; + lastException = null; + notifyHandlers.apply(null, [_lastExceptionStack, false].concat(_lastArgs)); + } + + /** + * Reports an unhandled Error to TraceKit. + * @param {Error} ex + * @param {?boolean} rethrow If false, do not re-throw the exception. + * Only used for window.onerror to not cause an infinite loop of + * rethrowing. + */ + function report(ex, rethrow) { + var args = _slice.call(arguments, 1); + if (lastExceptionStack) { + if (lastException === ex) { + return; // already caught by an inner catch block, ignore + } else { + processLastException(); + } + } + + var stack = TraceKit.computeStackTrace(ex); + lastExceptionStack = stack; + lastException = ex; + lastArgs = args; + + // If the stack trace is incomplete, wait for 2 seconds for + // slow slow IE to see if onerror occurs or not before reporting + // this exception; otherwise, we will end up with an incomplete + // stack trace + setTimeout(function() { + if (lastException === ex) { + processLastException(); + } + }, stack.incomplete ? 2000 : 0); + + if (rethrow !== false) { + throw ex; // re-throw to propagate to the top level (and cause window.onerror) + } + } + + report.subscribe = subscribe; + report.unsubscribe = unsubscribe; + report.uninstall = unsubscribeAll; + return report; +})(); + +/** + * TraceKit.computeStackTrace: cross-browser stack traces in JavaScript + * + * Syntax: + * s = TraceKit.computeStackTrace(exception) // consider using TraceKit.report instead (see below) + * Returns: + * s.name - exception name + * s.message - exception message + * s.stack[i].url - JavaScript or HTML file URL + * s.stack[i].func - function name, or empty for anonymous functions (if guessing did not work) + * s.stack[i].args - arguments passed to the function, if known + * s.stack[i].line - line number, if known + * s.stack[i].column - column number, if known + * + * Supports: + * - Firefox: full stack trace with line numbers and unreliable column + * number on top frame + * - Opera 10: full stack trace with line and column numbers + * - Opera 9-: full stack trace with line numbers + * - Chrome: full stack trace with line and column numbers + * - Safari: line and column number for the topmost stacktrace element + * only + * - IE: no line numbers whatsoever + * + * Tries to guess names of anonymous functions by looking for assignments + * in the source code. In IE and Safari, we have to guess source file names + * by searching for function bodies inside all page scripts. This will not + * work for scripts that are loaded cross-domain. + * Here be dragons: some function names may be guessed incorrectly, and + * duplicate functions may be mismatched. + * + * TraceKit.computeStackTrace should only be used for tracing purposes. + * Logging of unhandled exceptions should be done with TraceKit.report, + * which builds on top of TraceKit.computeStackTrace and provides better + * IE support by utilizing the window.onerror event to retrieve information + * about the top of the stack. + * + * Note: In IE and Safari, no stack trace is recorded on the Error object, + * so computeStackTrace instead walks its *own* chain of callers. + * This means that: + * * in Safari, some methods may be missing from the stack trace; + * * in IE, the topmost function in the stack trace will always be the + * caller of computeStackTrace. + * + * This is okay for tracing (because you are likely to be calling + * computeStackTrace from the function you want to be the topmost element + * of the stack trace anyway), but not okay for logging unhandled + * exceptions (because your catch block will likely be far away from the + * inner function that actually caused the exception). + * + */ +TraceKit.computeStackTrace = (function computeStackTraceWrapper() { + // Contents of Exception in various browsers. + // + // SAFARI: + // ex.message = Can't find variable: qq + // ex.line = 59 + // ex.sourceId = 580238192 + // ex.sourceURL = http://... + // ex.expressionBeginOffset = 96 + // ex.expressionCaretOffset = 98 + // ex.expressionEndOffset = 98 + // ex.name = ReferenceError + // + // FIREFOX: + // ex.message = qq is not defined + // ex.fileName = http://... + // ex.lineNumber = 59 + // ex.columnNumber = 69 + // ex.stack = ...stack trace... (see the example below) + // ex.name = ReferenceError + // + // CHROME: + // ex.message = qq is not defined + // ex.name = ReferenceError + // ex.type = not_defined + // ex.arguments = ['aa'] + // ex.stack = ...stack trace... + // + // INTERNET EXPLORER: + // ex.message = ... + // ex.name = ReferenceError + // + // OPERA: + // ex.message = ...message... (see the example below) + // ex.name = ReferenceError + // ex.opera#sourceloc = 11 (pretty much useless, duplicates the info in ex.message) + // ex.stacktrace = n/a; see 'opera:config#UserPrefs|Exceptions Have Stacktrace' + + /** + * Computes stack trace information from the stack property. + * Chrome and Gecko use this property. + * @param {Error} ex + * @return {?Object.} Stack trace information. + */ + function computeStackTraceFromStackProp(ex) { + if (typeof ex.stack === 'undefined' || !ex.stack) return; + + var chrome = /^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i; + var winjs = /^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i; + // NOTE: blob urls are now supposed to always have an origin, therefore it's format + // which is `blob:http://url/path/with-some-uuid`, is matched by `blob.*?:\/` as well + var gecko = /^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i; + // Used to additionally parse URL/line/column from eval frames + var geckoEval = /(\S+) line (\d+)(?: > eval line \d+)* > eval/i; + var chromeEval = /\((\S*)(?::(\d+))(?::(\d+))\)/; + var lines = ex.stack.split('\n'); + var stack = []; + var submatch; + var parts; + var element; + var reference = /^(.*) is undefined$/.exec(ex.message); + + for (var i = 0, j = lines.length; i < j; ++i) { + if ((parts = chrome.exec(lines[i]))) { + var isNative = parts[2] && parts[2].indexOf('native') === 0; // start of line + var isEval = parts[2] && parts[2].indexOf('eval') === 0; // start of line + if (isEval && (submatch = chromeEval.exec(parts[2]))) { + // throw out eval line/column and use top-most line/column number + parts[2] = submatch[1]; // url + parts[3] = submatch[2]; // line + parts[4] = submatch[3]; // column + } + element = { + url: !isNative ? parts[2] : null, + func: parts[1] || UNKNOWN_FUNCTION, + args: isNative ? [parts[2]] : [], + line: parts[3] ? +parts[3] : null, + column: parts[4] ? +parts[4] : null + }; + } else if ((parts = winjs.exec(lines[i]))) { + element = { + url: parts[2], + func: parts[1] || UNKNOWN_FUNCTION, + args: [], + line: +parts[3], + column: parts[4] ? +parts[4] : null + }; + } else if ((parts = gecko.exec(lines[i]))) { + var isEval = parts[3] && parts[3].indexOf(' > eval') > -1; + if (isEval && (submatch = geckoEval.exec(parts[3]))) { + // throw out eval line/column and use top-most line number + parts[3] = submatch[1]; + parts[4] = submatch[2]; + parts[5] = null; // no column when eval + } else if (i === 0 && !parts[5] && typeof ex.columnNumber !== 'undefined') { + // FireFox uses this awesome columnNumber property for its top frame + // Also note, Firefox's column number is 0-based and everything else expects 1-based, + // so adding 1 + // NOTE: this hack doesn't work if top-most frame is eval + stack[0].column = ex.columnNumber + 1; + } + element = { + url: parts[3], + func: parts[1] || UNKNOWN_FUNCTION, + args: parts[2] ? parts[2].split(',') : [], + line: parts[4] ? +parts[4] : null, + column: parts[5] ? +parts[5] : null + }; + } else { + continue; + } + + if (!element.func && element.line) { + element.func = UNKNOWN_FUNCTION; + } + + if (element.url && element.url.substr(0, 5) === 'blob:') { + // Special case for handling JavaScript loaded into a blob. + // We use a synchronous AJAX request here as a blob is already in + // memory - it's not making a network request. This will generate a warning + // in the browser console, but there has already been an error so that's not + // that much of an issue. + var xhr = new XMLHttpRequest(); + xhr.open('GET', element.url, false); + xhr.send(null); + + // If we failed to download the source, skip this patch + if (xhr.status === 200) { + var source = xhr.responseText || ''; + + // We trim the source down to the last 300 characters as sourceMappingURL is always at the end of the file. + // Why 300? To be in line with: https://github.com/getsentry/sentry/blob/4af29e8f2350e20c28a6933354e4f42437b4ba42/src/sentry/lang/javascript/processor.py#L164-L175 + source = source.slice(-300); + + // Now we dig out the source map URL + var sourceMaps = source.match(/\/\/# sourceMappingURL=(.*)$/); + + // If we don't find a source map comment or we find more than one, continue on to the next element. + if (sourceMaps) { + var sourceMapAddress = sourceMaps[1]; + + // Now we check to see if it's a relative URL. + // If it is, convert it to an absolute one. + if (sourceMapAddress.charAt(0) === '~') { + sourceMapAddress = getLocationOrigin() + sourceMapAddress.slice(1); + } + + // Now we strip the '.map' off of the end of the URL and update the + // element so that Sentry can match the map to the blob. + element.url = sourceMapAddress.slice(0, -4); + } + } + } + + stack.push(element); + } + + if (!stack.length) { + return null; + } + + return { + name: ex.name, + message: ex.message, + url: getLocationHref(), + stack: stack + }; + } + + /** + * Adds information about the first frame to incomplete stack traces. + * Safari and IE require this to get complete data on the first frame. + * @param {Object.} stackInfo Stack trace information from + * one of the compute* methods. + * @param {string} url The URL of the script that caused an error. + * @param {(number|string)} lineNo The line number of the script that + * caused an error. + * @param {string=} message The error generated by the browser, which + * hopefully contains the name of the object that caused the error. + * @return {boolean} Whether or not the stack information was + * augmented. + */ + function augmentStackTraceWithInitialElement(stackInfo, url, lineNo, message) { + var initial = { + url: url, + line: lineNo + }; + + if (initial.url && initial.line) { + stackInfo.incomplete = false; + + if (!initial.func) { + initial.func = UNKNOWN_FUNCTION; + } + + if (stackInfo.stack.length > 0) { + if (stackInfo.stack[0].url === initial.url) { + if (stackInfo.stack[0].line === initial.line) { + return false; // already in stack trace + } else if ( + !stackInfo.stack[0].line && + stackInfo.stack[0].func === initial.func + ) { + stackInfo.stack[0].line = initial.line; + return false; + } + } + } + + stackInfo.stack.unshift(initial); + stackInfo.partial = true; + return true; + } else { + stackInfo.incomplete = true; + } + + return false; + } + + /** + * Computes stack trace information by walking the arguments.caller + * chain at the time the exception occurred. This will cause earlier + * frames to be missed but is the only way to get any stack trace in + * Safari and IE. The top frame is restored by + * {@link augmentStackTraceWithInitialElement}. + * @param {Error} ex + * @return {?Object.} Stack trace information. + */ + function computeStackTraceByWalkingCallerChain(ex, depth) { + var functionName = /function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i, + stack = [], + funcs = {}, + recursion = false, + parts, + item, + source; + + for ( + var curr = computeStackTraceByWalkingCallerChain.caller; + curr && !recursion; + curr = curr.caller + ) { + if (curr === computeStackTrace || curr === TraceKit.report) { + // console.log('skipping internal function'); + continue; + } + + item = { + url: null, + func: UNKNOWN_FUNCTION, + line: null, + column: null + }; + + if (curr.name) { + item.func = curr.name; + } else if ((parts = functionName.exec(curr.toString()))) { + item.func = parts[1]; + } + + if (typeof item.func === 'undefined') { + try { + item.func = parts.input.substring(0, parts.input.indexOf('{')); + } catch (e) {} + } + + if (funcs['' + curr]) { + recursion = true; + } else { + funcs['' + curr] = true; + } + + stack.push(item); + } + + if (depth) { + // console.log('depth is ' + depth); + // console.log('stack is ' + stack.length); + stack.splice(0, depth); + } + + var result = { + name: ex.name, + message: ex.message, + url: getLocationHref(), + stack: stack + }; + augmentStackTraceWithInitialElement( + result, + ex.sourceURL || ex.fileName, + ex.line || ex.lineNumber, + ex.message || ex.description + ); + return result; + } + + /** + * Computes a stack trace for an exception. + * @param {Error} ex + * @param {(string|number)=} depth + */ + function computeStackTrace(ex, depth) { + var stack = null; + depth = depth == null ? 0 : +depth; + + try { + stack = computeStackTraceFromStackProp(ex); + if (stack) { + return stack; + } + } catch (e) { + if (TraceKit.debug) { + throw e; + } + } + + try { + stack = computeStackTraceByWalkingCallerChain(ex, depth + 1); + if (stack) { + return stack; + } + } catch (e) { + if (TraceKit.debug) { + throw e; + } + } + return { + name: ex.name, + message: ex.message, + url: getLocationHref() + }; + } + + computeStackTrace.augmentStackTraceWithInitialElement = augmentStackTraceWithInitialElement; + computeStackTrace.computeStackTraceFromStackProp = computeStackTraceFromStackProp; + + return computeStackTrace; +})(); + +module.exports = TraceKit; + +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"6":6}],8:[function(_dereq_,module,exports){ +/* + json-stringify-safe + Like JSON.stringify, but doesn't throw on circular references. + + Originally forked from https://github.com/isaacs/json-stringify-safe + version 5.0.1 on 3/8/2017 and modified to handle Errors serialization + and IE8 compatibility. Tests for this are in test/vendor. + + ISC license: https://github.com/isaacs/json-stringify-safe/blob/master/LICENSE +*/ + +exports = module.exports = stringify; +exports.getSerialize = serializer; + +function indexOf(haystack, needle) { + for (var i = 0; i < haystack.length; ++i) { + if (haystack[i] === needle) return i; + } + return -1; +} + +function stringify(obj, replacer, spaces, cycleReplacer) { + return JSON.stringify(obj, serializer(replacer, cycleReplacer), spaces); +} + +// https://github.com/ftlabs/js-abbreviate/blob/fa709e5f139e7770a71827b1893f22418097fbda/index.js#L95-L106 +function stringifyError(value) { + var err = { + // These properties are implemented as magical getters and don't show up in for in + stack: value.stack, + message: value.message, + name: value.name + }; + + for (var i in value) { + if (Object.prototype.hasOwnProperty.call(value, i)) { + err[i] = value[i]; + } + } + + return err; +} + +function serializer(replacer, cycleReplacer) { + var stack = []; + var keys = []; + + if (cycleReplacer == null) { + cycleReplacer = function(key, value) { + if (stack[0] === value) { + return '[Circular ~]'; + } + return '[Circular ~.' + keys.slice(0, indexOf(stack, value)).join('.') + ']'; + }; + } + + return function(key, value) { + if (stack.length > 0) { + var thisPos = indexOf(stack, this); + ~thisPos ? stack.splice(thisPos + 1) : stack.push(this); + ~thisPos ? keys.splice(thisPos, Infinity, key) : keys.push(key); + + if (~indexOf(stack, value)) { + value = cycleReplacer.call(this, key, value); + } + } else { + stack.push(value); + } + + return replacer == null + ? value instanceof Error ? stringifyError(value) : value + : replacer.call(this, key, value); + }; +} + +},{}],9:[function(_dereq_,module,exports){ +/* + * JavaScript MD5 + * https://github.com/blueimp/JavaScript-MD5 + * + * Copyright 2011, Sebastian Tschan + * https://blueimp.net + * + * Licensed under the MIT license: + * https://opensource.org/licenses/MIT + * + * Based on + * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message + * Digest Algorithm, as defined in RFC 1321. + * Version 2.2 Copyright (C) Paul Johnston 1999 - 2009 + * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet + * Distributed under the BSD License + * See http://pajhome.org.uk/crypt/md5 for more info. + */ + +/* +* Add integers, wrapping at 2^32. This uses 16-bit operations internally +* to work around bugs in some JS interpreters. +*/ +function safeAdd(x, y) { + var lsw = (x & 0xffff) + (y & 0xffff); + var msw = (x >> 16) + (y >> 16) + (lsw >> 16); + return (msw << 16) | (lsw & 0xffff); +} + +/* +* Bitwise rotate a 32-bit number to the left. +*/ +function bitRotateLeft(num, cnt) { + return (num << cnt) | (num >>> (32 - cnt)); +} + +/* +* These functions implement the four basic operations the algorithm uses. +*/ +function md5cmn(q, a, b, x, s, t) { + return safeAdd(bitRotateLeft(safeAdd(safeAdd(a, q), safeAdd(x, t)), s), b); +} +function md5ff(a, b, c, d, x, s, t) { + return md5cmn((b & c) | (~b & d), a, b, x, s, t); +} +function md5gg(a, b, c, d, x, s, t) { + return md5cmn((b & d) | (c & ~d), a, b, x, s, t); +} +function md5hh(a, b, c, d, x, s, t) { + return md5cmn(b ^ c ^ d, a, b, x, s, t); +} +function md5ii(a, b, c, d, x, s, t) { + return md5cmn(c ^ (b | ~d), a, b, x, s, t); +} + +/* +* Calculate the MD5 of an array of little-endian words, and a bit length. +*/ +function binlMD5(x, len) { + /* append padding */ + x[len >> 5] |= 0x80 << (len % 32); + x[(((len + 64) >>> 9) << 4) + 14] = len; + + var i; + var olda; + var oldb; + var oldc; + var oldd; + var a = 1732584193; + var b = -271733879; + var c = -1732584194; + var d = 271733878; + + for (i = 0; i < x.length; i += 16) { + olda = a; + oldb = b; + oldc = c; + oldd = d; + + a = md5ff(a, b, c, d, x[i], 7, -680876936); + d = md5ff(d, a, b, c, x[i + 1], 12, -389564586); + c = md5ff(c, d, a, b, x[i + 2], 17, 606105819); + b = md5ff(b, c, d, a, x[i + 3], 22, -1044525330); + a = md5ff(a, b, c, d, x[i + 4], 7, -176418897); + d = md5ff(d, a, b, c, x[i + 5], 12, 1200080426); + c = md5ff(c, d, a, b, x[i + 6], 17, -1473231341); + b = md5ff(b, c, d, a, x[i + 7], 22, -45705983); + a = md5ff(a, b, c, d, x[i + 8], 7, 1770035416); + d = md5ff(d, a, b, c, x[i + 9], 12, -1958414417); + c = md5ff(c, d, a, b, x[i + 10], 17, -42063); + b = md5ff(b, c, d, a, x[i + 11], 22, -1990404162); + a = md5ff(a, b, c, d, x[i + 12], 7, 1804603682); + d = md5ff(d, a, b, c, x[i + 13], 12, -40341101); + c = md5ff(c, d, a, b, x[i + 14], 17, -1502002290); + b = md5ff(b, c, d, a, x[i + 15], 22, 1236535329); + + a = md5gg(a, b, c, d, x[i + 1], 5, -165796510); + d = md5gg(d, a, b, c, x[i + 6], 9, -1069501632); + c = md5gg(c, d, a, b, x[i + 11], 14, 643717713); + b = md5gg(b, c, d, a, x[i], 20, -373897302); + a = md5gg(a, b, c, d, x[i + 5], 5, -701558691); + d = md5gg(d, a, b, c, x[i + 10], 9, 38016083); + c = md5gg(c, d, a, b, x[i + 15], 14, -660478335); + b = md5gg(b, c, d, a, x[i + 4], 20, -405537848); + a = md5gg(a, b, c, d, x[i + 9], 5, 568446438); + d = md5gg(d, a, b, c, x[i + 14], 9, -1019803690); + c = md5gg(c, d, a, b, x[i + 3], 14, -187363961); + b = md5gg(b, c, d, a, x[i + 8], 20, 1163531501); + a = md5gg(a, b, c, d, x[i + 13], 5, -1444681467); + d = md5gg(d, a, b, c, x[i + 2], 9, -51403784); + c = md5gg(c, d, a, b, x[i + 7], 14, 1735328473); + b = md5gg(b, c, d, a, x[i + 12], 20, -1926607734); + + a = md5hh(a, b, c, d, x[i + 5], 4, -378558); + d = md5hh(d, a, b, c, x[i + 8], 11, -2022574463); + c = md5hh(c, d, a, b, x[i + 11], 16, 1839030562); + b = md5hh(b, c, d, a, x[i + 14], 23, -35309556); + a = md5hh(a, b, c, d, x[i + 1], 4, -1530992060); + d = md5hh(d, a, b, c, x[i + 4], 11, 1272893353); + c = md5hh(c, d, a, b, x[i + 7], 16, -155497632); + b = md5hh(b, c, d, a, x[i + 10], 23, -1094730640); + a = md5hh(a, b, c, d, x[i + 13], 4, 681279174); + d = md5hh(d, a, b, c, x[i], 11, -358537222); + c = md5hh(c, d, a, b, x[i + 3], 16, -722521979); + b = md5hh(b, c, d, a, x[i + 6], 23, 76029189); + a = md5hh(a, b, c, d, x[i + 9], 4, -640364487); + d = md5hh(d, a, b, c, x[i + 12], 11, -421815835); + c = md5hh(c, d, a, b, x[i + 15], 16, 530742520); + b = md5hh(b, c, d, a, x[i + 2], 23, -995338651); + + a = md5ii(a, b, c, d, x[i], 6, -198630844); + d = md5ii(d, a, b, c, x[i + 7], 10, 1126891415); + c = md5ii(c, d, a, b, x[i + 14], 15, -1416354905); + b = md5ii(b, c, d, a, x[i + 5], 21, -57434055); + a = md5ii(a, b, c, d, x[i + 12], 6, 1700485571); + d = md5ii(d, a, b, c, x[i + 3], 10, -1894986606); + c = md5ii(c, d, a, b, x[i + 10], 15, -1051523); + b = md5ii(b, c, d, a, x[i + 1], 21, -2054922799); + a = md5ii(a, b, c, d, x[i + 8], 6, 1873313359); + d = md5ii(d, a, b, c, x[i + 15], 10, -30611744); + c = md5ii(c, d, a, b, x[i + 6], 15, -1560198380); + b = md5ii(b, c, d, a, x[i + 13], 21, 1309151649); + a = md5ii(a, b, c, d, x[i + 4], 6, -145523070); + d = md5ii(d, a, b, c, x[i + 11], 10, -1120210379); + c = md5ii(c, d, a, b, x[i + 2], 15, 718787259); + b = md5ii(b, c, d, a, x[i + 9], 21, -343485551); + + a = safeAdd(a, olda); + b = safeAdd(b, oldb); + c = safeAdd(c, oldc); + d = safeAdd(d, oldd); + } + return [a, b, c, d]; +} + +/* +* Convert an array of little-endian words to a string +*/ +function binl2rstr(input) { + var i; + var output = ''; + var length32 = input.length * 32; + for (i = 0; i < length32; i += 8) { + output += String.fromCharCode((input[i >> 5] >>> (i % 32)) & 0xff); + } + return output; +} + +/* +* Convert a raw string to an array of little-endian words +* Characters >255 have their high-byte silently ignored. +*/ +function rstr2binl(input) { + var i; + var output = []; + output[(input.length >> 2) - 1] = undefined; + for (i = 0; i < output.length; i += 1) { + output[i] = 0; + } + var length8 = input.length * 8; + for (i = 0; i < length8; i += 8) { + output[i >> 5] |= (input.charCodeAt(i / 8) & 0xff) << (i % 32); + } + return output; +} + +/* +* Calculate the MD5 of a raw string +*/ +function rstrMD5(s) { + return binl2rstr(binlMD5(rstr2binl(s), s.length * 8)); +} + +/* +* Calculate the HMAC-MD5, of a key and some data (raw strings) +*/ +function rstrHMACMD5(key, data) { + var i; + var bkey = rstr2binl(key); + var ipad = []; + var opad = []; + var hash; + ipad[15] = opad[15] = undefined; + if (bkey.length > 16) { + bkey = binlMD5(bkey, key.length * 8); + } + for (i = 0; i < 16; i += 1) { + ipad[i] = bkey[i] ^ 0x36363636; + opad[i] = bkey[i] ^ 0x5c5c5c5c; + } + hash = binlMD5(ipad.concat(rstr2binl(data)), 512 + data.length * 8); + return binl2rstr(binlMD5(opad.concat(hash), 512 + 128)); +} + +/* +* Convert a raw string to a hex string +*/ +function rstr2hex(input) { + var hexTab = '0123456789abcdef'; + var output = ''; + var x; + var i; + for (i = 0; i < input.length; i += 1) { + x = input.charCodeAt(i); + output += hexTab.charAt((x >>> 4) & 0x0f) + hexTab.charAt(x & 0x0f); + } + return output; +} + +/* +* Encode a string as utf-8 +*/ +function str2rstrUTF8(input) { + return unescape(encodeURIComponent(input)); +} + +/* +* Take string arguments and return either raw or hex encoded strings +*/ +function rawMD5(s) { + return rstrMD5(str2rstrUTF8(s)); +} +function hexMD5(s) { + return rstr2hex(rawMD5(s)); +} +function rawHMACMD5(k, d) { + return rstrHMACMD5(str2rstrUTF8(k), str2rstrUTF8(d)); +} +function hexHMACMD5(k, d) { + return rstr2hex(rawHMACMD5(k, d)); +} + +function md5(string, key, raw) { + if (!key) { + if (!raw) { + return hexMD5(string); + } + return rawMD5(string); + } + if (!raw) { + return hexHMACMD5(key, string); + } + return rawHMACMD5(key, string); +} + +module.exports = md5; + +},{}]},{},[5,1])(5) +}); \ No newline at end of file diff --git a/packages/raven-js/dist/require/raven.min.js b/packages/raven-js/dist/require/raven.min.js new file mode 100644 index 000000000000..d00d6e4fa03f --- /dev/null +++ b/packages/raven-js/dist/require/raven.min.js @@ -0,0 +1,4 @@ +/*! Raven.js 3.25.2 (30b6d4e) | github.com/getsentry/raven-js */ +!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.Raven=a()}}(function(){var a;return function b(a,c,d){function e(g,h){if(!c[g]){if(!a[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};a[g][0].call(k.exports,function(b){var c=a[g][1][b];return e(c?c:b)},k,k.exports,b,a,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;gthis.k.maxBreadcrumbs&&this.u.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.r.push([a,b]),this.n&&this.F(),this},setUserContext:function(a){return this.j.user=a,this},setExtraContext:function(a){return this.Z("extra",a),this},setTagsContext:function(a){return this.Z("tags",a),this},clearContext:function(){return this.j={},this},getContext:function(){return JSON.parse(h(this.j))},setEnvironment:function(a){return this.k.environment=a,this},setRelease:function(a){return this.k.release=a,this},setDataCallback:function(a){var b=this.k.dataCallback;return this.k.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.k.breadcrumbCallback;return this.k.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.k.shouldSendCallback;return this.k.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.k.transport=a,this},lastException:function(){return this.d},lastEventId:function(){return this.f},isSetup:function(){return!!this.a&&(!!this.g||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.z("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=R.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(S){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.H;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.j.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.J(this.G(c)),h=S.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(S.head||S.body).appendChild(h)}},L:function(){var a=this;this.m+=1,setTimeout(function(){a.m-=1})},$:function(a,b){var c,d;if(this.b){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),S.createEvent?(c=S.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=S.createEventObject(),c.eventType=a);for(d in b)A(b,d)&&(c[d]=b[d]);if(S.createEvent)S.dispatchEvent(c);else try{S.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},_:function(a){var b=this;return function(c){if(b.aa=null,b.v!==c){b.v=c;var d;try{d=E(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ba:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.aa;g||a._("input")(c),clearTimeout(g),a.aa=setTimeout(function(){a.aa=null},b)}}},ca:function(a,b){var c=H(this.w.href),d=H(b),e=H(a);this.x=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},C:function(){var a=this;a.da=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.M?a.da.apply(this.O,arguments):a.da.apply(this,arguments)}},Q:function(){this.da&&(Function.prototype.toString=this.da)},D:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.ca(b.x,c+""),a.apply(this,arguments)}};I(R.history,"pushState",j,d),I(R.history,"replaceState",j,d)}if(c.console&&"console"in R&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};w(["debug","info","warn","error","log"],function(a,b){O(console,b,k)})}},R:function(){for(var a;this.t.length;){a=this.t.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},S:function(){for(var a in this.q)this.p[a]=this.q[a]},F:function(){var a=this;w(this.r,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},G:function(a){var b=Q.exec(a),c={},d=7;try{for(;d--;)c[P[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.k.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},J:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},A:function(){this.m||this.V.apply(this,arguments)},V:function(a,b){var c=this.X(a,b);this.$("handle",{stackInfo:a,options:b}),this.fa(a.name,a.message,a.url,a.lineno,c,b)},X:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(w(a.stack,function(b,e){var f=c.ga(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.u,0)}),this.j.user&&(a.user=this.j.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),a=this.pa(a),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||v(a[b]))&&delete a[b]}),s(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!v(a)&&(!s(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.ma()?void this.z("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function F(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&l(b))for(c=b.split(/\s+/),f=0;fc?Q(a,b-1):d}function R(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?X:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function S(a,b){function c(a){return m(a)?a.map(function(a){return c(a)}):k(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!m(b)||m(b)&&0===b.length)return a;var d,e=A(b),f="********";try{d=JSON.parse(T(a))}catch(g){return a}return c(d)}var T=a(8),U="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},V=3,W=51200,X=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isDOMError:g,isDOMException:h,isUndefined:i,isFunction:j,isPlainObject:k,isString:l,isArray:m,isEmptyObject:n,supportsErrorEvent:o,supportsDOMError:p,supportsDOMException:q,supportsFetch:r,supportsReferrerPolicy:s,supportsPromiseRejectionEvent:t,wrappedCallback:u,each:v,objectMerge:w,truncate:y,objectFrozen:x,hasKey:z,joinRegExp:A,urlencode:B,uuid4:D,htmlTreeAsString:E,htmlElementAsString:F,isSameException:I,isSameStacktrace:J,parseUrl:C,fill:K,safeJoin:L,serializeException:Q,serializeKeysForMessage:R,sanitize:S}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{8:8}],7:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}function e(){return"undefined"==typeof document||null==document.location?"":(document.location.origin||(document.location.origin=document.location.protocol+"//"+document.location.hostname+(document.location.port?":"+document.location.port:"")),document.location.origin)}var f=a(6),g={collectWindowErrors:!0,debug:!1},h="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},i=[].slice,j="?",k=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;g.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function e(a,b){var c=null;if(!b||g.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(i.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,h,i){var l=null,m=f.isErrorEvent(i)?i.error:i,n=f.isErrorEvent(a)?a.message:a;if(v)g.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&f.isError(m))l=g.computeStackTrace(m),e(l,!0);else{var p,r={url:b,line:c,column:h},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(k);p&&(s=p[1],n=p[2])}r.func=j,l={name:s,message:n,url:d(),stack:[r]},e(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=h.onerror,h.onerror=l,r=!0)}function n(){r&&(h.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,e.apply(null,[a,!1].concat(b))}function p(a,b){var c=i.call(arguments,1);if(v){if(u===a)return;o()}var d=g.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),g.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,f,g=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,h=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,i=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,k=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,l=/\((\S*)(?::(\d+))(?::(\d+))\)/,m=a.stack.split("\n"),n=[],o=(/^(.*) is undefined$/.exec(a.message),0),p=m.length;o eval")>-1;r&&(b=k.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==o||c[5]||"undefined"==typeof a.columnNumber||(n[0].column=a.columnNumber+1),f={url:c[3],func:c[1]||j,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}if(!f.func&&f.line&&(f.func=j),f.url&&"blob:"===f.url.substr(0,5)){var s=new XMLHttpRequest;if(s.open("GET",f.url,!1),s.send(null),200===s.status){var t=s.responseText||"";t=t.slice(-300);var u=t.match(/\/\/# sourceMappingURL=(.*)$/);if(u){var v=u[1];"~"===v.charAt(0)&&(v=e()+v.slice(1)),f.url=v.slice(0,-4)}}}n.push(f)}return n.length?{name:a.name,message:a.message,url:d(),stack:n}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=j),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,e){for(var h,i,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==f&&o!==g.report){if(i={url:null,func:j,line:null,column:null},o.name?i.func=o.name:(h=k.exec(o.toString()))&&(i.func=h[1]),"undefined"==typeof i.func)try{i.func=h.input.substring(0,h.input.indexOf("{"))}catch(p){}m[""+o]?n=!0:m[""+o]=!0,l.push(i)}e&&l.splice(0,e);var q={name:a.name,message:a.message,url:d(),stack:l};return b(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),q}function f(b,e){var f=null;e=null==e?0:+e;try{if(f=a(b))return f}catch(h){if(g.debug)throw h}try{if(f=c(b,e+1))return f}catch(h){ +if(g.debug)throw h}return{name:b.name,message:b.message,url:d()}}return f.augmentStackTraceWithInitialElement=b,f.computeStackTraceFromStackProp=a,f}(),b.exports=g}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{6:6}],8:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}],9:[function(a,b,c){function d(a,b){var c=(65535&a)+(65535&b),d=(a>>16)+(b>>16)+(c>>16);return d<<16|65535&c}function e(a,b){return a<>>32-b}function f(a,b,c,f,g,h){return d(e(d(d(b,a),d(f,h)),g),c)}function g(a,b,c,d,e,g,h){return f(b&c|~b&d,a,b,e,g,h)}function h(a,b,c,d,e,g,h){return f(b&d|c&~d,a,b,e,g,h)}function i(a,b,c,d,e,g,h){return f(b^c^d,a,b,e,g,h)}function j(a,b,c,d,e,g,h){return f(c^(b|~d),a,b,e,g,h)}function k(a,b){a[b>>5]|=128<>>9<<4)+14]=b;var c,e,f,k,l,m=1732584193,n=-271733879,o=-1732584194,p=271733878;for(c=0;c>5]>>>b%32&255);return c}function m(a){var b,c=[];for(c[(a.length>>2)-1]=void 0,b=0;b>5]|=(255&a.charCodeAt(b/8))<16&&(e=k(e,8*a.length)),c=0;c<16;c+=1)f[c]=909522486^e[c],g[c]=1549556828^e[c];return d=k(f.concat(m(b)),512+8*b.length),l(k(g.concat(d),640))}function p(a){var b,c,d="0123456789abcdef",e="";for(c=0;c>>4&15)+d.charAt(15&b);return e}function q(a){return unescape(encodeURIComponent(a))}function r(a){return n(q(a))}function s(a){return p(r(a))}function t(a,b){return o(q(a),q(b))}function u(a,b){return p(t(a,b))}function v(a,b,c){return b?c?t(b,a):u(b,a):c?r(a):s(a)}b.exports=v},{}]},{},[5,1])(5)}); +//# sourceMappingURL=raven.min.js.map \ No newline at end of file diff --git a/packages/raven-js/dist/require/raven.min.js.map b/packages/raven-js/dist/require/raven.min.js.map new file mode 100644 index 000000000000..6205b801cbc6 --- /dev/null +++ b/packages/raven-js/dist/require/raven.min.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","requirePlugin","wrap","deep","addPlugin","5","2","RavenConfigError","message","name","prototype","constructor","3","utils","wrapMethod","console","level","callback","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","msg","safeJoin","data","logger","extra","Function","apply","6","4","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","sanitizeKeys","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isErrorEvent","isDOMError","isDOMException","isError","isObject","isPlainObject","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","sanitize","wrapConsoleMethod","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","config","dsn","options","_logDebug","globalOptions","key","value","setDSN","push","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","toString","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","substr","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","context","func","undefined","_before","wrapped","_ignoreNextOnError","captureException","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","T","event","reason","unhandledPromiseRejection","B","_promiseRejectionHandler","bind","addEventListener","P","removeEventListener","ex","trimHeadFrames","error","captureMessage","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","U","currentOptions","exKeys","Object","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","setDataCallback","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","L","setTimeout","$","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","_","evtName","_keypressTimeout","target","category","ba","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","ca","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","C","_originalFunctionToString","Q","D","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","type","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","E","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","R","builtin","S","F","installer","concat","G","str","m","exec","allowSecretKey","J","port","A","V","stackInfo","_triggerEvent","_processException","lineno","X","frame","_normalizeFrame","in_app","ga","stackInfoUrl","normalized","filename","line","colno","column","function","fa","prefixedMessage","exception","values","transaction","ha","request","Referer","breadcrumbs","_trimBreadcrumbs","ia","urlProp","urlProps","ja","httpData","userAgent","User-Agent","referrer","y","_backoffDuration","_backoffStart","ma","na","current","last","oa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Y","baseData","project","platform","_getHttpData","serverName","server_name","_sanitizeData","forEach","random","_sendProcessedPayload","pa","ra","qa","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","sa","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","onerror","open","setRequestHeader","send","ta","hash","evaluated","z","Z","setUser","setReleaseContext","7","8","9","RavenConstructor","_Raven","noConflict","Client","what","supportsErrorEvent","ErrorEvent","supportsDOMError","DOMError","supportsDOMException","DOMException","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","wrappedCallback","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","sanitizeMask","safeInput","o_O","getLocationHref","getLocationOrigin","origin","hostname","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","responseText","sourceMaps","sourceMapAddress","charAt","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","string","raw"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file diff --git a/packages/raven-js/dist/sri.json b/packages/raven-js/dist/sri.json new file mode 100644 index 000000000000..a2df4983cc63 --- /dev/null +++ b/packages/raven-js/dist/sri.json @@ -0,0 +1,20 @@ +{ + "@dist/raven.js": { + "hashes": { + "sha256": "NDcZn1uYcTrBUrV+Tj2Bmy/4cEBbrT9at3gCf1/C2Do=", + "sha512": "EwcTPu3VxfY0QRHe1Rhgc2CQ4YSCoDU3AnvRwPtrcFfBdNjjMH6slp+RAAATRkuixo9EnAQU6GlDeY1gxjDgMQ==" + }, + "type": null, + "integrity": "sha256-NDcZn1uYcTrBUrV+Tj2Bmy/4cEBbrT9at3gCf1/C2Do= sha512-EwcTPu3VxfY0QRHe1Rhgc2CQ4YSCoDU3AnvRwPtrcFfBdNjjMH6slp+RAAATRkuixo9EnAQU6GlDeY1gxjDgMQ==", + "path": "dist/raven.js" + }, + "@dist/raven.min.js": { + "hashes": { + "sha256": "J7gOlA8MDnRhSTWtoQkf9MCKFZwQxNxNV28+1WyJFsA=", + "sha512": "oOD6LYrFG4UUX2mi0tvPF9F5c5VLLec59y/VHJ9BYsxdtjOZJrmISgzBh19twx0wnt7Nvlb1BijKtfGQfs1Yrw==" + }, + "type": null, + "integrity": "sha256-J7gOlA8MDnRhSTWtoQkf9MCKFZwQxNxNV28+1WyJFsA= sha512-oOD6LYrFG4UUX2mi0tvPF9F5c5VLLec59y/VHJ9BYsxdtjOZJrmISgzBh19twx0wnt7Nvlb1BijKtfGQfs1Yrw==", + "path": "dist/raven.min.js" + } +} \ No newline at end of file diff --git a/packages/raven-js/dist/vue/raven.js b/packages/raven-js/dist/vue/raven.js new file mode 100644 index 000000000000..feb2f77a4211 --- /dev/null +++ b/packages/raven-js/dist/vue/raven.js @@ -0,0 +1,4060 @@ +/*! Raven.js 3.25.2 (30b6d4e) | github.com/getsentry/raven-js */ + +/* + * Includes TraceKit + * https://github.com/getsentry/TraceKit + * + * Copyright 2018 Matt Robenolt and other contributors + * Released under the BSD license + * https://github.com/getsentry/raven-js/blob/master/LICENSE + * + */ + +(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.Raven = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o' : 'anonymous component') + + (vm._isVue && vm.$options.__file ? ' at ' + vm.$options.__file : '') + ); +} + +function vuePlugin(Raven, Vue) { + Vue = Vue || window.Vue; + + // quit if Vue isn't on the page + if (!Vue || !Vue.config) return; + + var _oldOnError = Vue.config.errorHandler; + Vue.config.errorHandler = function VueErrorHandler(error, vm, info) { + var metaData = {}; + + // vm and lifecycleHook are not always available + if (Object.prototype.toString.call(vm) === '[object Object]') { + metaData.componentName = formatComponentName(vm); + metaData.propsData = vm.$options.propsData; + } + + if (typeof info !== 'undefined') { + metaData.lifecycleHook = info; + } + + Raven.captureException(error, { + extra: metaData + }); + + if (typeof _oldOnError === 'function') { + _oldOnError.call(this, error, vm, info); + } + }; +} + +module.exports = vuePlugin; + +_dereq_(5).addPlugin(module.exports); +},{"5":5}],2:[function(_dereq_,module,exports){ +function RavenConfigError(message) { + this.name = 'RavenConfigError'; + this.message = message; +} +RavenConfigError.prototype = new Error(); +RavenConfigError.prototype.constructor = RavenConfigError; + +module.exports = RavenConfigError; + +},{}],3:[function(_dereq_,module,exports){ +var utils = _dereq_(6); + +var wrapMethod = function(console, level, callback) { + var originalConsoleLevel = console[level]; + var originalConsole = console; + + if (!(level in console)) { + return; + } + + var sentryLevel = level === 'warn' ? 'warning' : level; + + console[level] = function() { + var args = [].slice.call(arguments); + + var msg = utils.safeJoin(args, ' '); + var data = {level: sentryLevel, logger: 'console', extra: {arguments: args}}; + + if (level === 'assert') { + if (args[0] === false) { + // Default browsers message + msg = + 'Assertion failed: ' + (utils.safeJoin(args.slice(1), ' ') || 'console.assert'); + data.extra.arguments = args.slice(1); + callback && callback(msg, data); + } + } else { + callback && callback(msg, data); + } + + // this fails for some browsers. :( + if (originalConsoleLevel) { + // IE9 doesn't allow calling apply on console functions directly + // See: https://stackoverflow.com/questions/5472938/does-ie9-support-console-log-and-is-it-a-real-function#answer-5473193 + Function.prototype.apply.call(originalConsoleLevel, originalConsole, args); + } + }; +}; + +module.exports = { + wrapMethod: wrapMethod +}; + +},{"6":6}],4:[function(_dereq_,module,exports){ +(function (global){ +/*global XDomainRequest:false */ + +var TraceKit = _dereq_(7); +var stringify = _dereq_(8); +var md5 = _dereq_(9); +var RavenConfigError = _dereq_(2); + +var utils = _dereq_(6); +var isErrorEvent = utils.isErrorEvent; +var isDOMError = utils.isDOMError; +var isDOMException = utils.isDOMException; +var isError = utils.isError; +var isObject = utils.isObject; +var isPlainObject = utils.isPlainObject; +var isUndefined = utils.isUndefined; +var isFunction = utils.isFunction; +var isString = utils.isString; +var isArray = utils.isArray; +var isEmptyObject = utils.isEmptyObject; +var each = utils.each; +var objectMerge = utils.objectMerge; +var truncate = utils.truncate; +var objectFrozen = utils.objectFrozen; +var hasKey = utils.hasKey; +var joinRegExp = utils.joinRegExp; +var urlencode = utils.urlencode; +var uuid4 = utils.uuid4; +var htmlTreeAsString = utils.htmlTreeAsString; +var isSameException = utils.isSameException; +var isSameStacktrace = utils.isSameStacktrace; +var parseUrl = utils.parseUrl; +var fill = utils.fill; +var supportsFetch = utils.supportsFetch; +var supportsReferrerPolicy = utils.supportsReferrerPolicy; +var serializeKeysForMessage = utils.serializeKeysForMessage; +var serializeException = utils.serializeException; +var sanitize = utils.sanitize; + +var wrapConsoleMethod = _dereq_(3).wrapMethod; + +var dsnKeys = 'source protocol user pass host port path'.split(' '), + dsnPattern = /^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/; + +function now() { + return +new Date(); +} + +// This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) +var _window = + typeof window !== 'undefined' + ? window + : typeof global !== 'undefined' + ? global + : typeof self !== 'undefined' + ? self + : {}; +var _document = _window.document; +var _navigator = _window.navigator; + +function keepOriginalCallback(original, callback) { + return isFunction(callback) + ? function(data) { + return callback(data, original); + } + : callback; +} + +// First, check for JSON support +// If there is no JSON, we no-op the core features of Raven +// since JSON is required to encode the payload +function Raven() { + this._hasJSON = !!(typeof JSON === 'object' && JSON.stringify); + // Raven can run in contexts where there's no document (react-native) + this._hasDocument = !isUndefined(_document); + this._hasNavigator = !isUndefined(_navigator); + this._lastCapturedException = null; + this._lastData = null; + this._lastEventId = null; + this._globalServer = null; + this._globalKey = null; + this._globalProject = null; + this._globalContext = {}; + this._globalOptions = { + // SENTRY_RELEASE can be injected by https://github.com/getsentry/sentry-webpack-plugin + release: _window.SENTRY_RELEASE && _window.SENTRY_RELEASE.id, + logger: 'javascript', + ignoreErrors: [], + ignoreUrls: [], + whitelistUrls: [], + includePaths: [], + headers: null, + collectWindowErrors: true, + captureUnhandledRejections: true, + maxMessageLength: 0, + // By default, truncates URL values to 250 chars + maxUrlLength: 250, + stackTraceLimit: 50, + autoBreadcrumbs: true, + instrument: true, + sampleRate: 1, + sanitizeKeys: [] + }; + this._fetchDefaults = { + method: 'POST', + keepalive: true, + // Despite all stars in the sky saying that Edge supports old draft syntax, aka 'never', 'always', 'origin' and 'default + // https://caniuse.com/#feat=referrer-policy + // It doesn't. And it throw exception instead of ignoring this parameter... + // REF: https://github.com/getsentry/raven-js/issues/1233 + referrerPolicy: supportsReferrerPolicy() ? 'origin' : '' + }; + this._ignoreOnError = 0; + this._isRavenInstalled = false; + this._originalErrorStackTraceLimit = Error.stackTraceLimit; + // capture references to window.console *and* all its methods first + // before the console plugin has a chance to monkey patch + this._originalConsole = _window.console || {}; + this._originalConsoleMethods = {}; + this._plugins = []; + this._startTime = now(); + this._wrappedBuiltIns = []; + this._breadcrumbs = []; + this._lastCapturedEvent = null; + this._keypressTimeout; + this._location = _window.location; + this._lastHref = this._location && this._location.href; + this._resetBackoff(); + + // eslint-disable-next-line guard-for-in + for (var method in this._originalConsole) { + this._originalConsoleMethods[method] = this._originalConsole[method]; + } +} + +/* + * The core Raven singleton + * + * @this {Raven} + */ + +Raven.prototype = { + // Hardcode version string so that raven source can be loaded directly via + // webpack (using a build step causes webpack #1617). Grunt verifies that + // this value matches package.json during build. + // See: https://github.com/getsentry/raven-js/issues/465 + VERSION: '3.25.2', + + debug: false, + + TraceKit: TraceKit, // alias to TraceKit + + /* + * Configure Raven with a DSN and extra options + * + * @param {string} dsn The public Sentry DSN + * @param {object} options Set of global options [optional] + * @return {Raven} + */ + config: function(dsn, options) { + var self = this; + + if (self._globalServer) { + this._logDebug('error', 'Error: Raven has already been configured'); + return self; + } + if (!dsn) return self; + + var globalOptions = self._globalOptions; + + // merge in options + if (options) { + each(options, function(key, value) { + // tags and extra are special and need to be put into context + if (key === 'tags' || key === 'extra' || key === 'user') { + self._globalContext[key] = value; + } else { + globalOptions[key] = value; + } + }); + } + + self.setDSN(dsn); + + // "Script error." is hard coded into browsers for errors that it can't read. + // this is the result of a script being pulled in from an external domain and CORS. + globalOptions.ignoreErrors.push(/^Script error\.?$/); + globalOptions.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/); + + // join regexp rules into one big rule + globalOptions.ignoreErrors = joinRegExp(globalOptions.ignoreErrors); + globalOptions.ignoreUrls = globalOptions.ignoreUrls.length + ? joinRegExp(globalOptions.ignoreUrls) + : false; + globalOptions.whitelistUrls = globalOptions.whitelistUrls.length + ? joinRegExp(globalOptions.whitelistUrls) + : false; + globalOptions.includePaths = joinRegExp(globalOptions.includePaths); + globalOptions.maxBreadcrumbs = Math.max( + 0, + Math.min(globalOptions.maxBreadcrumbs || 100, 100) + ); // default and hard limit is 100 + + var autoBreadcrumbDefaults = { + xhr: true, + console: true, + dom: true, + location: true, + sentry: true + }; + + var autoBreadcrumbs = globalOptions.autoBreadcrumbs; + if ({}.toString.call(autoBreadcrumbs) === '[object Object]') { + autoBreadcrumbs = objectMerge(autoBreadcrumbDefaults, autoBreadcrumbs); + } else if (autoBreadcrumbs !== false) { + autoBreadcrumbs = autoBreadcrumbDefaults; + } + globalOptions.autoBreadcrumbs = autoBreadcrumbs; + + var instrumentDefaults = { + tryCatch: true + }; + + var instrument = globalOptions.instrument; + if ({}.toString.call(instrument) === '[object Object]') { + instrument = objectMerge(instrumentDefaults, instrument); + } else if (instrument !== false) { + instrument = instrumentDefaults; + } + globalOptions.instrument = instrument; + + TraceKit.collectWindowErrors = !!globalOptions.collectWindowErrors; + + // return for chaining + return self; + }, + + /* + * Installs a global window.onerror error handler + * to capture and report uncaught exceptions. + * At this point, install() is required to be called due + * to the way TraceKit is set up. + * + * @return {Raven} + */ + install: function() { + var self = this; + if (self.isSetup() && !self._isRavenInstalled) { + TraceKit.report.subscribe(function() { + self._handleOnErrorStackInfo.apply(self, arguments); + }); + + if (self._globalOptions.captureUnhandledRejections) { + self._attachPromiseRejectionHandler(); + } + + self._patchFunctionToString(); + + if (self._globalOptions.instrument && self._globalOptions.instrument.tryCatch) { + self._instrumentTryCatch(); + } + + if (self._globalOptions.autoBreadcrumbs) self._instrumentBreadcrumbs(); + + // Install all of the plugins + self._drainPlugins(); + + self._isRavenInstalled = true; + } + + Error.stackTraceLimit = self._globalOptions.stackTraceLimit; + return this; + }, + + /* + * Set the DSN (can be called multiple time unlike config) + * + * @param {string} dsn The public Sentry DSN + */ + setDSN: function(dsn) { + var self = this, + uri = self._parseDSN(dsn), + lastSlash = uri.path.lastIndexOf('/'), + path = uri.path.substr(1, lastSlash); + + self._dsn = dsn; + self._globalKey = uri.user; + self._globalSecret = uri.pass && uri.pass.substr(1); + self._globalProject = uri.path.substr(lastSlash + 1); + + self._globalServer = self._getGlobalServer(uri); + + self._globalEndpoint = + self._globalServer + '/' + path + 'api/' + self._globalProject + '/store/'; + + // Reset backoff state since we may be pointing at a + // new project/server + this._resetBackoff(); + }, + + /* + * Wrap code within a context so Raven can capture errors + * reliably across domains that is executed immediately. + * + * @param {object} options A specific set of options for this context [optional] + * @param {function} func The callback to be immediately executed within the context + * @param {array} args An array of arguments to be called with the callback [optional] + */ + context: function(options, func, args) { + if (isFunction(options)) { + args = func || []; + func = options; + options = undefined; + } + + return this.wrap(options, func).apply(this, args); + }, + + /* + * Wrap code within a context and returns back a new function to be executed + * + * @param {object} options A specific set of options for this context [optional] + * @param {function} func The function to be wrapped in a new context + * @param {function} func A function to call before the try/catch wrapper [optional, private] + * @return {function} The newly wrapped functions with a context + */ + wrap: function(options, func, _before) { + var self = this; + // 1 argument has been passed, and it's not a function + // so just return it + if (isUndefined(func) && !isFunction(options)) { + return options; + } + + // options is optional + if (isFunction(options)) { + func = options; + options = undefined; + } + + // At this point, we've passed along 2 arguments, and the second one + // is not a function either, so we'll just return the second argument. + if (!isFunction(func)) { + return func; + } + + // We don't wanna wrap it twice! + try { + if (func.__raven__) { + return func; + } + + // If this has already been wrapped in the past, return that + if (func.__raven_wrapper__) { + return func.__raven_wrapper__; + } + } catch (e) { + // Just accessing custom props in some Selenium environments + // can cause a "Permission denied" exception (see raven-js#495). + // Bail on wrapping and return the function as-is (defers to window.onerror). + return func; + } + + function wrapped() { + var args = [], + i = arguments.length, + deep = !options || (options && options.deep !== false); + + if (_before && isFunction(_before)) { + _before.apply(this, arguments); + } + + // Recursively wrap all of a function's arguments that are + // functions themselves. + while (i--) args[i] = deep ? self.wrap(options, arguments[i]) : arguments[i]; + + try { + // Attempt to invoke user-land function + // NOTE: If you are a Sentry user, and you are seeing this stack frame, it + // means Raven caught an error invoking your application code. This is + // expected behavior and NOT indicative of a bug with Raven.js. + return func.apply(this, args); + } catch (e) { + self._ignoreNextOnError(); + self.captureException(e, options); + throw e; + } + } + + // copy over properties of the old function + for (var property in func) { + if (hasKey(func, property)) { + wrapped[property] = func[property]; + } + } + wrapped.prototype = func.prototype; + + func.__raven_wrapper__ = wrapped; + // Signal that this function has been wrapped/filled already + // for both debugging and to prevent it to being wrapped/filled twice + wrapped.__raven__ = true; + wrapped.__orig__ = func; + + return wrapped; + }, + + /** + * Uninstalls the global error handler. + * + * @return {Raven} + */ + uninstall: function() { + TraceKit.report.uninstall(); + + this._detachPromiseRejectionHandler(); + this._unpatchFunctionToString(); + this._restoreBuiltIns(); + this._restoreConsole(); + + Error.stackTraceLimit = this._originalErrorStackTraceLimit; + this._isRavenInstalled = false; + + return this; + }, + + /** + * Callback used for `unhandledrejection` event + * + * @param {PromiseRejectionEvent} event An object containing + * promise: the Promise that was rejected + * reason: the value with which the Promise was rejected + * @return void + */ + _promiseRejectionHandler: function(event) { + this._logDebug('debug', 'Raven caught unhandled promise rejection:', event); + this.captureException(event.reason, { + extra: { + unhandledPromiseRejection: true + } + }); + }, + + /** + * Installs the global promise rejection handler. + * + * @return {raven} + */ + _attachPromiseRejectionHandler: function() { + this._promiseRejectionHandler = this._promiseRejectionHandler.bind(this); + _window.addEventListener && + _window.addEventListener('unhandledrejection', this._promiseRejectionHandler); + return this; + }, + + /** + * Uninstalls the global promise rejection handler. + * + * @return {raven} + */ + _detachPromiseRejectionHandler: function() { + _window.removeEventListener && + _window.removeEventListener('unhandledrejection', this._promiseRejectionHandler); + return this; + }, + + /** + * Manually capture an exception and send it over to Sentry + * + * @param {error} ex An exception to be logged + * @param {object} options A specific set of options for this error [optional] + * @return {Raven} + */ + captureException: function(ex, options) { + options = objectMerge({trimHeadFrames: 0}, options ? options : {}); + + if (isErrorEvent(ex) && ex.error) { + // If it is an ErrorEvent with `error` property, extract it to get actual Error + ex = ex.error; + } else if (isDOMError(ex) || isDOMException(ex)) { + // If it is a DOMError or DOMException (which are legacy APIs, but still supported in some browsers) + // then we just extract the name and message, as they don't provide anything else + // https://developer.mozilla.org/en-US/docs/Web/API/DOMError + // https://developer.mozilla.org/en-US/docs/Web/API/DOMException + var name = ex.name || (isDOMError(ex) ? 'DOMError' : 'DOMException'); + var message = ex.message ? name + ': ' + ex.message : name; + + return this.captureMessage( + message, + objectMerge(options, { + // neither DOMError or DOMException provide stack trace and we most likely wont get it this way as well + // but it's barely any overhead so we may at least try + stacktrace: true, + trimHeadFrames: options.trimHeadFrames + 1 + }) + ); + } else if (isError(ex)) { + // we have a real Error object + ex = ex; + } else if (isPlainObject(ex)) { + // If it is plain Object, serialize it manually and extract options + // This will allow us to group events based on top-level keys + // which is much better than creating new group when any key/value change + options = this._getCaptureExceptionOptionsFromPlainObject(options, ex); + ex = new Error(options.message); + } else { + // If none of previous checks were valid, then it means that + // it's not a DOMError/DOMException + // it's not a plain Object + // it's not a valid ErrorEvent (one with an error property) + // it's not an Error + // So bail out and capture it as a simple message: + return this.captureMessage( + ex, + objectMerge(options, { + stacktrace: true, // if we fall back to captureMessage, default to attempting a new trace + trimHeadFrames: options.trimHeadFrames + 1 + }) + ); + } + + // Store the raw exception object for potential debugging and introspection + this._lastCapturedException = ex; + + // TraceKit.report will re-raise any exception passed to it, + // which means you have to wrap it in try/catch. Instead, we + // can wrap it here and only re-raise if TraceKit.report + // raises an exception different from the one we asked to + // report on. + try { + var stack = TraceKit.computeStackTrace(ex); + this._handleStackInfo(stack, options); + } catch (ex1) { + if (ex !== ex1) { + throw ex1; + } + } + + return this; + }, + + _getCaptureExceptionOptionsFromPlainObject: function(currentOptions, ex) { + var exKeys = Object.keys(ex).sort(); + var options = objectMerge(currentOptions, { + message: + 'Non-Error exception captured with keys: ' + serializeKeysForMessage(exKeys), + fingerprint: [md5(exKeys)], + extra: currentOptions.extra || {} + }); + options.extra.__serialized__ = serializeException(ex); + + return options; + }, + + /* + * Manually send a message to Sentry + * + * @param {string} msg A plain message to be captured in Sentry + * @param {object} options A specific set of options for this message [optional] + * @return {Raven} + */ + captureMessage: function(msg, options) { + // config() automagically converts ignoreErrors from a list to a RegExp so we need to test for an + // early call; we'll error on the side of logging anything called before configuration since it's + // probably something you should see: + if ( + !!this._globalOptions.ignoreErrors.test && + this._globalOptions.ignoreErrors.test(msg) + ) { + return; + } + + options = options || {}; + msg = msg + ''; // Make sure it's actually a string + + var data = objectMerge( + { + message: msg + }, + options + ); + + var ex; + // Generate a "synthetic" stack trace from this point. + // NOTE: If you are a Sentry user, and you are seeing this stack frame, it is NOT indicative + // of a bug with Raven.js. Sentry generates synthetic traces either by configuration, + // or if it catches a thrown object without a "stack" property. + try { + throw new Error(msg); + } catch (ex1) { + ex = ex1; + } + + // null exception name so `Error` isn't prefixed to msg + ex.name = null; + var stack = TraceKit.computeStackTrace(ex); + + // stack[0] is `throw new Error(msg)` call itself, we are interested in the frame that was just before that, stack[1] + var initialCall = isArray(stack.stack) && stack.stack[1]; + + // if stack[1] is `Raven.captureException`, it means that someone passed a string to it and we redirected that call + // to be handled by `captureMessage`, thus `initialCall` is the 3rd one, not 2nd + // initialCall => captureException(string) => captureMessage(string) + if (initialCall && initialCall.func === 'Raven.captureException') { + initialCall = stack.stack[2]; + } + + var fileurl = (initialCall && initialCall.url) || ''; + + if ( + !!this._globalOptions.ignoreUrls.test && + this._globalOptions.ignoreUrls.test(fileurl) + ) { + return; + } + + if ( + !!this._globalOptions.whitelistUrls.test && + !this._globalOptions.whitelistUrls.test(fileurl) + ) { + return; + } + + if (this._globalOptions.stacktrace || (options && options.stacktrace)) { + // fingerprint on msg, not stack trace (legacy behavior, could be revisited) + data.fingerprint = data.fingerprint == null ? msg : data.fingerprint; + + options = objectMerge( + { + trimHeadFrames: 0 + }, + options + ); + // Since we know this is a synthetic trace, the top frame (this function call) + // MUST be from Raven.js, so mark it for trimming + // We add to the trim counter so that callers can choose to trim extra frames, such + // as utility functions. + options.trimHeadFrames += 1; + + var frames = this._prepareFrames(stack, options); + data.stacktrace = { + // Sentry expects frames oldest to newest + frames: frames.reverse() + }; + } + + // Make sure that fingerprint is always wrapped in an array + if (data.fingerprint) { + data.fingerprint = isArray(data.fingerprint) + ? data.fingerprint + : [data.fingerprint]; + } + + // Fire away! + this._send(data); + + return this; + }, + + captureBreadcrumb: function(obj) { + var crumb = objectMerge( + { + timestamp: now() / 1000 + }, + obj + ); + + if (isFunction(this._globalOptions.breadcrumbCallback)) { + var result = this._globalOptions.breadcrumbCallback(crumb); + + if (isObject(result) && !isEmptyObject(result)) { + crumb = result; + } else if (result === false) { + return this; + } + } + + this._breadcrumbs.push(crumb); + if (this._breadcrumbs.length > this._globalOptions.maxBreadcrumbs) { + this._breadcrumbs.shift(); + } + return this; + }, + + addPlugin: function(plugin /*arg1, arg2, ... argN*/) { + var pluginArgs = [].slice.call(arguments, 1); + + this._plugins.push([plugin, pluginArgs]); + if (this._isRavenInstalled) { + this._drainPlugins(); + } + + return this; + }, + + /* + * Set/clear a user to be sent along with the payload. + * + * @param {object} user An object representing user data [optional] + * @return {Raven} + */ + setUserContext: function(user) { + // Intentionally do not merge here since that's an unexpected behavior. + this._globalContext.user = user; + + return this; + }, + + /* + * Merge extra attributes to be sent along with the payload. + * + * @param {object} extra An object representing extra data [optional] + * @return {Raven} + */ + setExtraContext: function(extra) { + this._mergeContext('extra', extra); + + return this; + }, + + /* + * Merge tags to be sent along with the payload. + * + * @param {object} tags An object representing tags [optional] + * @return {Raven} + */ + setTagsContext: function(tags) { + this._mergeContext('tags', tags); + + return this; + }, + + /* + * Clear all of the context. + * + * @return {Raven} + */ + clearContext: function() { + this._globalContext = {}; + + return this; + }, + + /* + * Get a copy of the current context. This cannot be mutated. + * + * @return {object} copy of context + */ + getContext: function() { + // lol javascript + return JSON.parse(stringify(this._globalContext)); + }, + + /* + * Set environment of application + * + * @param {string} environment Typically something like 'production'. + * @return {Raven} + */ + setEnvironment: function(environment) { + this._globalOptions.environment = environment; + + return this; + }, + + /* + * Set release version of application + * + * @param {string} release Typically something like a git SHA to identify version + * @return {Raven} + */ + setRelease: function(release) { + this._globalOptions.release = release; + + return this; + }, + + /* + * Set the dataCallback option + * + * @param {function} callback The callback to run which allows the + * data blob to be mutated before sending + * @return {Raven} + */ + setDataCallback: function(callback) { + var original = this._globalOptions.dataCallback; + this._globalOptions.dataCallback = keepOriginalCallback(original, callback); + return this; + }, + + /* + * Set the breadcrumbCallback option + * + * @param {function} callback The callback to run which allows filtering + * or mutating breadcrumbs + * @return {Raven} + */ + setBreadcrumbCallback: function(callback) { + var original = this._globalOptions.breadcrumbCallback; + this._globalOptions.breadcrumbCallback = keepOriginalCallback(original, callback); + return this; + }, + + /* + * Set the shouldSendCallback option + * + * @param {function} callback The callback to run which allows + * introspecting the blob before sending + * @return {Raven} + */ + setShouldSendCallback: function(callback) { + var original = this._globalOptions.shouldSendCallback; + this._globalOptions.shouldSendCallback = keepOriginalCallback(original, callback); + return this; + }, + + /** + * Override the default HTTP transport mechanism that transmits data + * to the Sentry server. + * + * @param {function} transport Function invoked instead of the default + * `makeRequest` handler. + * + * @return {Raven} + */ + setTransport: function(transport) { + this._globalOptions.transport = transport; + + return this; + }, + + /* + * Get the latest raw exception that was captured by Raven. + * + * @return {error} + */ + lastException: function() { + return this._lastCapturedException; + }, + + /* + * Get the last event id + * + * @return {string} + */ + lastEventId: function() { + return this._lastEventId; + }, + + /* + * Determine if Raven is setup and ready to go. + * + * @return {boolean} + */ + isSetup: function() { + if (!this._hasJSON) return false; // needs JSON support + if (!this._globalServer) { + if (!this.ravenNotConfiguredError) { + this.ravenNotConfiguredError = true; + this._logDebug('error', 'Error: Raven has not been configured.'); + } + return false; + } + return true; + }, + + afterLoad: function() { + // TODO: remove window dependence? + + // Attempt to initialize Raven on load + var RavenConfig = _window.RavenConfig; + if (RavenConfig) { + this.config(RavenConfig.dsn, RavenConfig.config).install(); + } + }, + + showReportDialog: function(options) { + if ( + !_document // doesn't work without a document (React native) + ) + return; + + options = options || {}; + + var lastEventId = options.eventId || this.lastEventId(); + if (!lastEventId) { + throw new RavenConfigError('Missing eventId'); + } + + var dsn = options.dsn || this._dsn; + if (!dsn) { + throw new RavenConfigError('Missing DSN'); + } + + var encode = encodeURIComponent; + var qs = ''; + qs += '?eventId=' + encode(lastEventId); + qs += '&dsn=' + encode(dsn); + + var user = options.user || this._globalContext.user; + if (user) { + if (user.name) qs += '&name=' + encode(user.name); + if (user.email) qs += '&email=' + encode(user.email); + } + + var globalServer = this._getGlobalServer(this._parseDSN(dsn)); + + var script = _document.createElement('script'); + script.async = true; + script.src = globalServer + '/api/embed/error-page/' + qs; + (_document.head || _document.body).appendChild(script); + }, + + /**** Private functions ****/ + _ignoreNextOnError: function() { + var self = this; + this._ignoreOnError += 1; + setTimeout(function() { + // onerror should trigger before setTimeout + self._ignoreOnError -= 1; + }); + }, + + _triggerEvent: function(eventType, options) { + // NOTE: `event` is a native browser thing, so let's avoid conflicting wiht it + var evt, key; + + if (!this._hasDocument) return; + + options = options || {}; + + eventType = 'raven' + eventType.substr(0, 1).toUpperCase() + eventType.substr(1); + + if (_document.createEvent) { + evt = _document.createEvent('HTMLEvents'); + evt.initEvent(eventType, true, true); + } else { + evt = _document.createEventObject(); + evt.eventType = eventType; + } + + for (key in options) + if (hasKey(options, key)) { + evt[key] = options[key]; + } + + if (_document.createEvent) { + // IE9 if standards + _document.dispatchEvent(evt); + } else { + // IE8 regardless of Quirks or Standards + // IE9 if quirks + try { + _document.fireEvent('on' + evt.eventType.toLowerCase(), evt); + } catch (e) { + // Do nothing + } + } + }, + + /** + * Wraps addEventListener to capture UI breadcrumbs + * @param evtName the event name (e.g. "click") + * @returns {Function} + * @private + */ + _breadcrumbEventHandler: function(evtName) { + var self = this; + return function(evt) { + // reset keypress timeout; e.g. triggering a 'click' after + // a 'keypress' will reset the keypress debounce so that a new + // set of keypresses can be recorded + self._keypressTimeout = null; + + // It's possible this handler might trigger multiple times for the same + // event (e.g. event propagation through node ancestors). Ignore if we've + // already captured the event. + if (self._lastCapturedEvent === evt) return; + + self._lastCapturedEvent = evt; + + // try/catch both: + // - accessing evt.target (see getsentry/raven-js#838, #768) + // - `htmlTreeAsString` because it's complex, and just accessing the DOM incorrectly + // can throw an exception in some circumstances. + var target; + try { + target = htmlTreeAsString(evt.target); + } catch (e) { + target = ''; + } + + self.captureBreadcrumb({ + category: 'ui.' + evtName, // e.g. ui.click, ui.input + message: target + }); + }; + }, + + /** + * Wraps addEventListener to capture keypress UI events + * @returns {Function} + * @private + */ + _keypressEventHandler: function() { + var self = this, + debounceDuration = 1000; // milliseconds + + // TODO: if somehow user switches keypress target before + // debounce timeout is triggered, we will only capture + // a single breadcrumb from the FIRST target (acceptable?) + return function(evt) { + var target; + try { + target = evt.target; + } catch (e) { + // just accessing event properties can throw an exception in some rare circumstances + // see: https://github.com/getsentry/raven-js/issues/838 + return; + } + var tagName = target && target.tagName; + + // only consider keypress events on actual input elements + // this will disregard keypresses targeting body (e.g. tabbing + // through elements, hotkeys, etc) + if ( + !tagName || + (tagName !== 'INPUT' && tagName !== 'TEXTAREA' && !target.isContentEditable) + ) + return; + + // record first keypress in a series, but ignore subsequent + // keypresses until debounce clears + var timeout = self._keypressTimeout; + if (!timeout) { + self._breadcrumbEventHandler('input')(evt); + } + clearTimeout(timeout); + self._keypressTimeout = setTimeout(function() { + self._keypressTimeout = null; + }, debounceDuration); + }; + }, + + /** + * Captures a breadcrumb of type "navigation", normalizing input URLs + * @param to the originating URL + * @param from the target URL + * @private + */ + _captureUrlChange: function(from, to) { + var parsedLoc = parseUrl(this._location.href); + var parsedTo = parseUrl(to); + var parsedFrom = parseUrl(from); + + // because onpopstate only tells you the "new" (to) value of location.href, and + // not the previous (from) value, we need to track the value of the current URL + // state ourselves + this._lastHref = to; + + // Use only the path component of the URL if the URL matches the current + // document (almost all the time when using pushState) + if (parsedLoc.protocol === parsedTo.protocol && parsedLoc.host === parsedTo.host) + to = parsedTo.relative; + if (parsedLoc.protocol === parsedFrom.protocol && parsedLoc.host === parsedFrom.host) + from = parsedFrom.relative; + + this.captureBreadcrumb({ + category: 'navigation', + data: { + to: to, + from: from + } + }); + }, + + _patchFunctionToString: function() { + var self = this; + self._originalFunctionToString = Function.prototype.toString; + // eslint-disable-next-line no-extend-native + Function.prototype.toString = function() { + if (typeof this === 'function' && this.__raven__) { + return self._originalFunctionToString.apply(this.__orig__, arguments); + } + return self._originalFunctionToString.apply(this, arguments); + }; + }, + + _unpatchFunctionToString: function() { + if (this._originalFunctionToString) { + // eslint-disable-next-line no-extend-native + Function.prototype.toString = this._originalFunctionToString; + } + }, + + /** + * Wrap timer functions and event targets to catch errors and provide + * better metadata. + */ + _instrumentTryCatch: function() { + var self = this; + + var wrappedBuiltIns = self._wrappedBuiltIns; + + function wrapTimeFn(orig) { + return function(fn, t) { + // preserve arity + // Make a copy of the arguments to prevent deoptimization + // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments + var args = new Array(arguments.length); + for (var i = 0; i < args.length; ++i) { + args[i] = arguments[i]; + } + var originalCallback = args[0]; + if (isFunction(originalCallback)) { + args[0] = self.wrap(originalCallback); + } + + // IE < 9 doesn't support .call/.apply on setInterval/setTimeout, but it + // also supports only two arguments and doesn't care what this is, so we + // can just call the original function directly. + if (orig.apply) { + return orig.apply(this, args); + } else { + return orig(args[0], args[1]); + } + }; + } + + var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; + + function wrapEventTarget(global) { + var proto = _window[global] && _window[global].prototype; + if (proto && proto.hasOwnProperty && proto.hasOwnProperty('addEventListener')) { + fill( + proto, + 'addEventListener', + function(orig) { + return function(evtName, fn, capture, secure) { + // preserve arity + try { + if (fn && fn.handleEvent) { + fn.handleEvent = self.wrap(fn.handleEvent); + } + } catch (err) { + // can sometimes get 'Permission denied to access property "handle Event' + } + + // More breadcrumb DOM capture ... done here and not in `_instrumentBreadcrumbs` + // so that we don't have more than one wrapper function + var before, clickHandler, keypressHandler; + + if ( + autoBreadcrumbs && + autoBreadcrumbs.dom && + (global === 'EventTarget' || global === 'Node') + ) { + // NOTE: generating multiple handlers per addEventListener invocation, should + // revisit and verify we can just use one (almost certainly) + clickHandler = self._breadcrumbEventHandler('click'); + keypressHandler = self._keypressEventHandler(); + before = function(evt) { + // need to intercept every DOM event in `before` argument, in case that + // same wrapped method is re-used for different events (e.g. mousemove THEN click) + // see #724 + if (!evt) return; + + var eventType; + try { + eventType = evt.type; + } catch (e) { + // just accessing event properties can throw an exception in some rare circumstances + // see: https://github.com/getsentry/raven-js/issues/838 + return; + } + if (eventType === 'click') return clickHandler(evt); + else if (eventType === 'keypress') return keypressHandler(evt); + }; + } + return orig.call( + this, + evtName, + self.wrap(fn, undefined, before), + capture, + secure + ); + }; + }, + wrappedBuiltIns + ); + fill( + proto, + 'removeEventListener', + function(orig) { + return function(evt, fn, capture, secure) { + try { + fn = fn && (fn.__raven_wrapper__ ? fn.__raven_wrapper__ : fn); + } catch (e) { + // ignore, accessing __raven_wrapper__ will throw in some Selenium environments + } + return orig.call(this, evt, fn, capture, secure); + }; + }, + wrappedBuiltIns + ); + } + } + + fill(_window, 'setTimeout', wrapTimeFn, wrappedBuiltIns); + fill(_window, 'setInterval', wrapTimeFn, wrappedBuiltIns); + if (_window.requestAnimationFrame) { + fill( + _window, + 'requestAnimationFrame', + function(orig) { + return function(cb) { + return orig(self.wrap(cb)); + }; + }, + wrappedBuiltIns + ); + } + + // event targets borrowed from bugsnag-js: + // https://github.com/bugsnag/bugsnag-js/blob/master/src/bugsnag.js#L666 + var eventTargets = [ + 'EventTarget', + 'Window', + 'Node', + 'ApplicationCache', + 'AudioTrackList', + 'ChannelMergerNode', + 'CryptoOperation', + 'EventSource', + 'FileReader', + 'HTMLUnknownElement', + 'IDBDatabase', + 'IDBRequest', + 'IDBTransaction', + 'KeyOperation', + 'MediaController', + 'MessagePort', + 'ModalWindow', + 'Notification', + 'SVGElementInstance', + 'Screen', + 'TextTrack', + 'TextTrackCue', + 'TextTrackList', + 'WebSocket', + 'WebSocketWorker', + 'Worker', + 'XMLHttpRequest', + 'XMLHttpRequestEventTarget', + 'XMLHttpRequestUpload' + ]; + for (var i = 0; i < eventTargets.length; i++) { + wrapEventTarget(eventTargets[i]); + } + }, + + /** + * Instrument browser built-ins w/ breadcrumb capturing + * - XMLHttpRequests + * - DOM interactions (click/typing) + * - window.location changes + * - console + * + * Can be disabled or individually configured via the `autoBreadcrumbs` config option + */ + _instrumentBreadcrumbs: function() { + var self = this; + var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs; + + var wrappedBuiltIns = self._wrappedBuiltIns; + + function wrapProp(prop, xhr) { + if (prop in xhr && isFunction(xhr[prop])) { + fill(xhr, prop, function(orig) { + return self.wrap(orig); + }); // intentionally don't track filled methods on XHR instances + } + } + + if (autoBreadcrumbs.xhr && 'XMLHttpRequest' in _window) { + var xhrproto = _window.XMLHttpRequest && _window.XMLHttpRequest.prototype; + fill( + xhrproto, + 'open', + function(origOpen) { + return function(method, url) { + // preserve arity + + // if Sentry key appears in URL, don't capture + if (isString(url) && url.indexOf(self._globalKey) === -1) { + this.__raven_xhr = { + method: method, + url: url, + status_code: null + }; + } + + return origOpen.apply(this, arguments); + }; + }, + wrappedBuiltIns + ); + + fill( + xhrproto, + 'send', + function(origSend) { + return function() { + // preserve arity + var xhr = this; + + function onreadystatechangeHandler() { + if (xhr.__raven_xhr && xhr.readyState === 4) { + try { + // touching statusCode in some platforms throws + // an exception + xhr.__raven_xhr.status_code = xhr.status; + } catch (e) { + /* do nothing */ + } + + self.captureBreadcrumb({ + type: 'http', + category: 'xhr', + data: xhr.__raven_xhr + }); + } + } + + var props = ['onload', 'onerror', 'onprogress']; + for (var j = 0; j < props.length; j++) { + wrapProp(props[j], xhr); + } + + if ('onreadystatechange' in xhr && isFunction(xhr.onreadystatechange)) { + fill( + xhr, + 'onreadystatechange', + function(orig) { + return self.wrap(orig, undefined, onreadystatechangeHandler); + } /* intentionally don't track this instrumentation */ + ); + } else { + // if onreadystatechange wasn't actually set by the page on this xhr, we + // are free to set our own and capture the breadcrumb + xhr.onreadystatechange = onreadystatechangeHandler; + } + + return origSend.apply(this, arguments); + }; + }, + wrappedBuiltIns + ); + } + + if (autoBreadcrumbs.xhr && supportsFetch()) { + fill( + _window, + 'fetch', + function(origFetch) { + return function() { + // preserve arity + // Make a copy of the arguments to prevent deoptimization + // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments + var args = new Array(arguments.length); + for (var i = 0; i < args.length; ++i) { + args[i] = arguments[i]; + } + + var fetchInput = args[0]; + var method = 'GET'; + var url; + + if (typeof fetchInput === 'string') { + url = fetchInput; + } else if ('Request' in _window && fetchInput instanceof _window.Request) { + url = fetchInput.url; + if (fetchInput.method) { + method = fetchInput.method; + } + } else { + url = '' + fetchInput; + } + + // if Sentry key appears in URL, don't capture, as it's our own request + if (url.indexOf(self._globalKey) !== -1) { + return origFetch.apply(this, args); + } + + if (args[1] && args[1].method) { + method = args[1].method; + } + + var fetchData = { + method: method, + url: url, + status_code: null + }; + + return origFetch + .apply(this, args) + .then(function(response) { + fetchData.status_code = response.status; + + self.captureBreadcrumb({ + type: 'http', + category: 'fetch', + data: fetchData + }); + + return response; + }) + ['catch'](function(err) { + // if there is an error performing the request + self.captureBreadcrumb({ + type: 'http', + category: 'fetch', + data: fetchData, + level: 'error' + }); + + throw err; + }); + }; + }, + wrappedBuiltIns + ); + } + + // Capture breadcrumbs from any click that is unhandled / bubbled up all the way + // to the document. Do this before we instrument addEventListener. + if (autoBreadcrumbs.dom && this._hasDocument) { + if (_document.addEventListener) { + _document.addEventListener('click', self._breadcrumbEventHandler('click'), false); + _document.addEventListener('keypress', self._keypressEventHandler(), false); + } else if (_document.attachEvent) { + // IE8 Compatibility + _document.attachEvent('onclick', self._breadcrumbEventHandler('click')); + _document.attachEvent('onkeypress', self._keypressEventHandler()); + } + } + + // record navigation (URL) changes + // NOTE: in Chrome App environment, touching history.pushState, *even inside + // a try/catch block*, will cause Chrome to output an error to console.error + // borrowed from: https://github.com/angular/angular.js/pull/13945/files + var chrome = _window.chrome; + var isChromePackagedApp = chrome && chrome.app && chrome.app.runtime; + var hasPushAndReplaceState = + !isChromePackagedApp && + _window.history && + _window.history.pushState && + _window.history.replaceState; + if (autoBreadcrumbs.location && hasPushAndReplaceState) { + // TODO: remove onpopstate handler on uninstall() + var oldOnPopState = _window.onpopstate; + _window.onpopstate = function() { + var currentHref = self._location.href; + self._captureUrlChange(self._lastHref, currentHref); + + if (oldOnPopState) { + return oldOnPopState.apply(this, arguments); + } + }; + + var historyReplacementFunction = function(origHistFunction) { + // note history.pushState.length is 0; intentionally not declaring + // params to preserve 0 arity + return function(/* state, title, url */) { + var url = arguments.length > 2 ? arguments[2] : undefined; + + // url argument is optional + if (url) { + // coerce to string (this is what pushState does) + self._captureUrlChange(self._lastHref, url + ''); + } + + return origHistFunction.apply(this, arguments); + }; + }; + + fill(_window.history, 'pushState', historyReplacementFunction, wrappedBuiltIns); + fill(_window.history, 'replaceState', historyReplacementFunction, wrappedBuiltIns); + } + + if (autoBreadcrumbs.console && 'console' in _window && console.log) { + // console + var consoleMethodCallback = function(msg, data) { + self.captureBreadcrumb({ + message: msg, + level: data.level, + category: 'console' + }); + }; + + each(['debug', 'info', 'warn', 'error', 'log'], function(_, level) { + wrapConsoleMethod(console, level, consoleMethodCallback); + }); + } + }, + + _restoreBuiltIns: function() { + // restore any wrapped builtins + var builtin; + while (this._wrappedBuiltIns.length) { + builtin = this._wrappedBuiltIns.shift(); + + var obj = builtin[0], + name = builtin[1], + orig = builtin[2]; + + obj[name] = orig; + } + }, + + _restoreConsole: function() { + // eslint-disable-next-line guard-for-in + for (var method in this._originalConsoleMethods) { + this._originalConsole[method] = this._originalConsoleMethods[method]; + } + }, + + _drainPlugins: function() { + var self = this; + + // FIX ME TODO + each(this._plugins, function(_, plugin) { + var installer = plugin[0]; + var args = plugin[1]; + installer.apply(self, [self].concat(args)); + }); + }, + + _parseDSN: function(str) { + var m = dsnPattern.exec(str), + dsn = {}, + i = 7; + + try { + while (i--) dsn[dsnKeys[i]] = m[i] || ''; + } catch (e) { + throw new RavenConfigError('Invalid DSN: ' + str); + } + + if (dsn.pass && !this._globalOptions.allowSecretKey) { + throw new RavenConfigError( + 'Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key' + ); + } + + return dsn; + }, + + _getGlobalServer: function(uri) { + // assemble the endpoint from the uri pieces + var globalServer = '//' + uri.host + (uri.port ? ':' + uri.port : ''); + + if (uri.protocol) { + globalServer = uri.protocol + ':' + globalServer; + } + return globalServer; + }, + + _handleOnErrorStackInfo: function() { + // if we are intentionally ignoring errors via onerror, bail out + if (!this._ignoreOnError) { + this._handleStackInfo.apply(this, arguments); + } + }, + + _handleStackInfo: function(stackInfo, options) { + var frames = this._prepareFrames(stackInfo, options); + + this._triggerEvent('handle', { + stackInfo: stackInfo, + options: options + }); + + this._processException( + stackInfo.name, + stackInfo.message, + stackInfo.url, + stackInfo.lineno, + frames, + options + ); + }, + + _prepareFrames: function(stackInfo, options) { + var self = this; + var frames = []; + if (stackInfo.stack && stackInfo.stack.length) { + each(stackInfo.stack, function(i, stack) { + var frame = self._normalizeFrame(stack, stackInfo.url); + if (frame) { + frames.push(frame); + } + }); + + // e.g. frames captured via captureMessage throw + if (options && options.trimHeadFrames) { + for (var j = 0; j < options.trimHeadFrames && j < frames.length; j++) { + frames[j].in_app = false; + } + } + } + frames = frames.slice(0, this._globalOptions.stackTraceLimit); + return frames; + }, + + _normalizeFrame: function(frame, stackInfoUrl) { + // normalize the frames data + var normalized = { + filename: frame.url, + lineno: frame.line, + colno: frame.column, + function: frame.func || '?' + }; + + // Case when we don't have any information about the error + // E.g. throwing a string or raw object, instead of an `Error` in Firefox + // Generating synthetic error doesn't add any value here + // + // We should probably somehow let a user know that they should fix their code + if (!frame.url) { + normalized.filename = stackInfoUrl; // fallback to whole stacks url from onerror handler + } + + normalized.in_app = !// determine if an exception came from outside of our app + // first we check the global includePaths list. + ( + (!!this._globalOptions.includePaths.test && + !this._globalOptions.includePaths.test(normalized.filename)) || + // Now we check for fun, if the function name is Raven or TraceKit + /(Raven|TraceKit)\./.test(normalized['function']) || + // finally, we do a last ditch effort and check for raven.min.js + /raven\.(min\.)?js$/.test(normalized.filename) + ); + + return normalized; + }, + + _processException: function(type, message, fileurl, lineno, frames, options) { + var prefixedMessage = (type ? type + ': ' : '') + (message || ''); + if ( + !!this._globalOptions.ignoreErrors.test && + (this._globalOptions.ignoreErrors.test(message) || + this._globalOptions.ignoreErrors.test(prefixedMessage)) + ) { + return; + } + + var stacktrace; + + if (frames && frames.length) { + fileurl = frames[0].filename || fileurl; + // Sentry expects frames oldest to newest + // and JS sends them as newest to oldest + frames.reverse(); + stacktrace = {frames: frames}; + } else if (fileurl) { + stacktrace = { + frames: [ + { + filename: fileurl, + lineno: lineno, + in_app: true + } + ] + }; + } + + if ( + !!this._globalOptions.ignoreUrls.test && + this._globalOptions.ignoreUrls.test(fileurl) + ) { + return; + } + + if ( + !!this._globalOptions.whitelistUrls.test && + !this._globalOptions.whitelistUrls.test(fileurl) + ) { + return; + } + + var data = objectMerge( + { + // sentry.interfaces.Exception + exception: { + values: [ + { + type: type, + value: message, + stacktrace: stacktrace + } + ] + }, + transaction: fileurl + }, + options + ); + + // Fire away! + this._send(data); + }, + + _trimPacket: function(data) { + // For now, we only want to truncate the two different messages + // but this could/should be expanded to just trim everything + var max = this._globalOptions.maxMessageLength; + if (data.message) { + data.message = truncate(data.message, max); + } + if (data.exception) { + var exception = data.exception.values[0]; + exception.value = truncate(exception.value, max); + } + + var request = data.request; + if (request) { + if (request.url) { + request.url = truncate(request.url, this._globalOptions.maxUrlLength); + } + if (request.Referer) { + request.Referer = truncate(request.Referer, this._globalOptions.maxUrlLength); + } + } + + if (data.breadcrumbs && data.breadcrumbs.values) + this._trimBreadcrumbs(data.breadcrumbs); + + return data; + }, + + /** + * Truncate breadcrumb values (right now just URLs) + */ + _trimBreadcrumbs: function(breadcrumbs) { + // known breadcrumb properties with urls + // TODO: also consider arbitrary prop values that start with (https?)?:// + var urlProps = ['to', 'from', 'url'], + urlProp, + crumb, + data; + + for (var i = 0; i < breadcrumbs.values.length; ++i) { + crumb = breadcrumbs.values[i]; + if ( + !crumb.hasOwnProperty('data') || + !isObject(crumb.data) || + objectFrozen(crumb.data) + ) + continue; + + data = objectMerge({}, crumb.data); + for (var j = 0; j < urlProps.length; ++j) { + urlProp = urlProps[j]; + if (data.hasOwnProperty(urlProp) && data[urlProp]) { + data[urlProp] = truncate(data[urlProp], this._globalOptions.maxUrlLength); + } + } + breadcrumbs.values[i].data = data; + } + }, + + _getHttpData: function() { + if (!this._hasNavigator && !this._hasDocument) return; + var httpData = {}; + + if (this._hasNavigator && _navigator.userAgent) { + httpData.headers = { + 'User-Agent': _navigator.userAgent + }; + } + + // Check in `window` instead of `document`, as we may be in ServiceWorker environment + if (_window.location && _window.location.href) { + httpData.url = _window.location.href; + } + + if (this._hasDocument && _document.referrer) { + if (!httpData.headers) httpData.headers = {}; + httpData.headers.Referer = _document.referrer; + } + + return httpData; + }, + + _resetBackoff: function() { + this._backoffDuration = 0; + this._backoffStart = null; + }, + + _shouldBackoff: function() { + return this._backoffDuration && now() - this._backoffStart < this._backoffDuration; + }, + + /** + * Returns true if the in-process data payload matches the signature + * of the previously-sent data + * + * NOTE: This has to be done at this level because TraceKit can generate + * data from window.onerror WITHOUT an exception object (IE8, IE9, + * other old browsers). This can take the form of an "exception" + * data object with a single frame (derived from the onerror args). + */ + _isRepeatData: function(current) { + var last = this._lastData; + + if ( + !last || + current.message !== last.message || // defined for captureMessage + current.transaction !== last.transaction // defined for captureException/onerror + ) + return false; + + // Stacktrace interface (i.e. from captureMessage) + if (current.stacktrace || last.stacktrace) { + return isSameStacktrace(current.stacktrace, last.stacktrace); + } else if (current.exception || last.exception) { + // Exception interface (i.e. from captureException/onerror) + return isSameException(current.exception, last.exception); + } + + return true; + }, + + _setBackoffState: function(request) { + // If we are already in a backoff state, don't change anything + if (this._shouldBackoff()) { + return; + } + + var status = request.status; + + // 400 - project_id doesn't exist or some other fatal + // 401 - invalid/revoked dsn + // 429 - too many requests + if (!(status === 400 || status === 401 || status === 429)) return; + + var retry; + try { + // If Retry-After is not in Access-Control-Expose-Headers, most + // browsers will throw an exception trying to access it + if (supportsFetch()) { + retry = request.headers.get('Retry-After'); + } else { + retry = request.getResponseHeader('Retry-After'); + } + + // Retry-After is returned in seconds + retry = parseInt(retry, 10) * 1000; + } catch (e) { + /* eslint no-empty:0 */ + } + + this._backoffDuration = retry + ? // If Sentry server returned a Retry-After value, use it + retry + : // Otherwise, double the last backoff duration (starts at 1 sec) + this._backoffDuration * 2 || 1000; + + this._backoffStart = now(); + }, + + _send: function(data) { + var globalOptions = this._globalOptions; + + var baseData = { + project: this._globalProject, + logger: globalOptions.logger, + platform: 'javascript' + }, + httpData = this._getHttpData(); + + if (httpData) { + baseData.request = httpData; + } + + // HACK: delete `trimHeadFrames` to prevent from appearing in outbound payload + if (data.trimHeadFrames) delete data.trimHeadFrames; + + data = objectMerge(baseData, data); + + // Merge in the tags and extra separately since objectMerge doesn't handle a deep merge + data.tags = objectMerge(objectMerge({}, this._globalContext.tags), data.tags); + data.extra = objectMerge(objectMerge({}, this._globalContext.extra), data.extra); + + // Send along our own collected metadata with extra + data.extra['session:duration'] = now() - this._startTime; + + if (this._breadcrumbs && this._breadcrumbs.length > 0) { + // intentionally make shallow copy so that additions + // to breadcrumbs aren't accidentally sent in this request + data.breadcrumbs = { + values: [].slice.call(this._breadcrumbs, 0) + }; + } + + if (this._globalContext.user) { + // sentry.interfaces.User + data.user = this._globalContext.user; + } + + // Include the environment if it's defined in globalOptions + if (globalOptions.environment) data.environment = globalOptions.environment; + + // Include the release if it's defined in globalOptions + if (globalOptions.release) data.release = globalOptions.release; + + // Include server_name if it's defined in globalOptions + if (globalOptions.serverName) data.server_name = globalOptions.serverName; + + data = this._sanitizeData(data); + + // Cleanup empty properties before sending them to the server + Object.keys(data).forEach(function(key) { + if (data[key] == null || data[key] === '' || isEmptyObject(data[key])) { + delete data[key]; + } + }); + + if (isFunction(globalOptions.dataCallback)) { + data = globalOptions.dataCallback(data) || data; + } + + // Why?????????? + if (!data || isEmptyObject(data)) { + return; + } + + // Check if the request should be filtered or not + if ( + isFunction(globalOptions.shouldSendCallback) && + !globalOptions.shouldSendCallback(data) + ) { + return; + } + + // Backoff state: Sentry server previously responded w/ an error (e.g. 429 - too many requests), + // so drop requests until "cool-off" period has elapsed. + if (this._shouldBackoff()) { + this._logDebug('warn', 'Raven dropped error due to backoff: ', data); + return; + } + + if (typeof globalOptions.sampleRate === 'number') { + if (Math.random() < globalOptions.sampleRate) { + this._sendProcessedPayload(data); + } + } else { + this._sendProcessedPayload(data); + } + }, + + _sanitizeData: function(data) { + return sanitize(data, this._globalOptions.sanitizeKeys); + }, + + _getUuid: function() { + return uuid4(); + }, + + _sendProcessedPayload: function(data, callback) { + var self = this; + var globalOptions = this._globalOptions; + + if (!this.isSetup()) return; + + // Try and clean up the packet before sending by truncating long values + data = this._trimPacket(data); + + // ideally duplicate error testing should occur *before* dataCallback/shouldSendCallback, + // but this would require copying an un-truncated copy of the data packet, which can be + // arbitrarily deep (extra_data) -- could be worthwhile? will revisit + if (!this._globalOptions.allowDuplicates && this._isRepeatData(data)) { + this._logDebug('warn', 'Raven dropped repeat event: ', data); + return; + } + + // Send along an event_id if not explicitly passed. + // This event_id can be used to reference the error within Sentry itself. + // Set lastEventId after we know the error should actually be sent + this._lastEventId = data.event_id || (data.event_id = this._getUuid()); + + // Store outbound payload after trim + this._lastData = data; + + this._logDebug('debug', 'Raven about to send:', data); + + var auth = { + sentry_version: '7', + sentry_client: 'raven-js/' + this.VERSION, + sentry_key: this._globalKey + }; + + if (this._globalSecret) { + auth.sentry_secret = this._globalSecret; + } + + var exception = data.exception && data.exception.values[0]; + + // only capture 'sentry' breadcrumb is autoBreadcrumbs is truthy + if ( + this._globalOptions.autoBreadcrumbs && + this._globalOptions.autoBreadcrumbs.sentry + ) { + this.captureBreadcrumb({ + category: 'sentry', + message: exception + ? (exception.type ? exception.type + ': ' : '') + exception.value + : data.message, + event_id: data.event_id, + level: data.level || 'error' // presume error unless specified + }); + } + + var url = this._globalEndpoint; + (globalOptions.transport || this._makeRequest).call(this, { + url: url, + auth: auth, + data: data, + options: globalOptions, + onSuccess: function success() { + self._resetBackoff(); + + self._triggerEvent('success', { + data: data, + src: url + }); + callback && callback(); + }, + onError: function failure(error) { + self._logDebug('error', 'Raven transport failed to send: ', error); + + if (error.request) { + self._setBackoffState(error.request); + } + + self._triggerEvent('failure', { + data: data, + src: url + }); + error = error || new Error('Raven send failed (no additional details provided)'); + callback && callback(error); + } + }); + }, + + _makeRequest: function(opts) { + // Auth is intentionally sent as part of query string (NOT as custom HTTP header) to avoid preflight CORS requests + var url = opts.url + '?' + urlencode(opts.auth); + + var evaluatedHeaders = null; + var evaluatedFetchParameters = {}; + + if (opts.options.headers) { + evaluatedHeaders = this._evaluateHash(opts.options.headers); + } + + if (opts.options.fetchParameters) { + evaluatedFetchParameters = this._evaluateHash(opts.options.fetchParameters); + } + + if (supportsFetch()) { + evaluatedFetchParameters.body = stringify(opts.data); + + var defaultFetchOptions = objectMerge({}, this._fetchDefaults); + var fetchOptions = objectMerge(defaultFetchOptions, evaluatedFetchParameters); + + if (evaluatedHeaders) { + fetchOptions.headers = evaluatedHeaders; + } + + return _window + .fetch(url, fetchOptions) + .then(function(response) { + if (response.ok) { + opts.onSuccess && opts.onSuccess(); + } else { + var error = new Error('Sentry error code: ' + response.status); + // It's called request only to keep compatibility with XHR interface + // and not add more redundant checks in setBackoffState method + error.request = response; + opts.onError && opts.onError(error); + } + }) + ['catch'](function() { + opts.onError && + opts.onError(new Error('Sentry error code: network unavailable')); + }); + } + + var request = _window.XMLHttpRequest && new _window.XMLHttpRequest(); + if (!request) return; + + // if browser doesn't support CORS (e.g. IE7), we are out of luck + var hasCORS = 'withCredentials' in request || typeof XDomainRequest !== 'undefined'; + + if (!hasCORS) return; + + if ('withCredentials' in request) { + request.onreadystatechange = function() { + if (request.readyState !== 4) { + return; + } else if (request.status === 200) { + opts.onSuccess && opts.onSuccess(); + } else if (opts.onError) { + var err = new Error('Sentry error code: ' + request.status); + err.request = request; + opts.onError(err); + } + }; + } else { + request = new XDomainRequest(); + // xdomainrequest cannot go http -> https (or vice versa), + // so always use protocol relative + url = url.replace(/^https?:/, ''); + + // onreadystatechange not supported by XDomainRequest + if (opts.onSuccess) { + request.onload = opts.onSuccess; + } + if (opts.onError) { + request.onerror = function() { + var err = new Error('Sentry error code: XDomainRequest'); + err.request = request; + opts.onError(err); + }; + } + } + + request.open('POST', url); + + if (evaluatedHeaders) { + each(evaluatedHeaders, function(key, value) { + request.setRequestHeader(key, value); + }); + } + + request.send(stringify(opts.data)); + }, + + _evaluateHash: function(hash) { + var evaluated = {}; + + for (var key in hash) { + if (hash.hasOwnProperty(key)) { + var value = hash[key]; + evaluated[key] = typeof value === 'function' ? value() : value; + } + } + + return evaluated; + }, + + _logDebug: function(level) { + // We allow `Raven.debug` and `Raven.config(DSN, { debug: true })` to not make backward incompatible API change + if ( + this._originalConsoleMethods[level] && + (this.debug || this._globalOptions.debug) + ) { + // In IE<10 console methods do not have their own 'apply' method + Function.prototype.apply.call( + this._originalConsoleMethods[level], + this._originalConsole, + [].slice.call(arguments, 1) + ); + } + }, + + _mergeContext: function(key, context) { + if (isUndefined(context)) { + delete this._globalContext[key]; + } else { + this._globalContext[key] = objectMerge(this._globalContext[key] || {}, context); + } + } +}; + +// Deprecations +Raven.prototype.setUser = Raven.prototype.setUserContext; +Raven.prototype.setReleaseContext = Raven.prototype.setRelease; + +module.exports = Raven; + +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"2":2,"3":3,"6":6,"7":7,"8":8,"9":9}],5:[function(_dereq_,module,exports){ +(function (global){ +/** + * Enforces a single instance of the Raven client, and the + * main entry point for Raven. If you are a consumer of the + * Raven library, you SHOULD load this file (vs raven.js). + **/ + +var RavenConstructor = _dereq_(4); + +// This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) +var _window = + typeof window !== 'undefined' + ? window + : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; +var _Raven = _window.Raven; + +var Raven = new RavenConstructor(); + +/* + * Allow multiple versions of Raven to be installed. + * Strip Raven from the global context and returns the instance. + * + * @return {Raven} + */ +Raven.noConflict = function() { + _window.Raven = _Raven; + return Raven; +}; + +Raven.afterLoad(); + +module.exports = Raven; + +/** + * DISCLAIMER: + * + * Expose `Client` constructor for cases where user want to track multiple "sub-applications" in one larger app. + * It's not meant to be used by a wide audience, so pleaaase make sure that you know what you're doing before using it. + * Accidentally calling `install` multiple times, may result in an unexpected behavior that's very hard to debug. + * + * It's called `Client' to be in-line with Raven Node implementation. + * + * HOWTO: + * + * import Raven from 'raven-js'; + * + * const someAppReporter = new Raven.Client(); + * const someOtherAppReporter = new Raven.Client(); + * + * someAppReporter.config('__DSN__', { + * ...config goes here + * }); + * + * someOtherAppReporter.config('__OTHER_DSN__', { + * ...config goes here + * }); + * + * someAppReporter.captureMessage(...); + * someAppReporter.captureException(...); + * someAppReporter.captureBreadcrumb(...); + * + * someOtherAppReporter.captureMessage(...); + * someOtherAppReporter.captureException(...); + * someOtherAppReporter.captureBreadcrumb(...); + * + * It should "just work". + */ +module.exports.Client = RavenConstructor; + +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"4":4}],6:[function(_dereq_,module,exports){ +(function (global){ +var stringify = _dereq_(8); + +var _window = + typeof window !== 'undefined' + ? window + : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; + +function isObject(what) { + return typeof what === 'object' && what !== null; +} + +// Yanked from https://git.io/vS8DV re-used under CC0 +// with some tiny modifications +function isError(value) { + switch (Object.prototype.toString.call(value)) { + case '[object Error]': + return true; + case '[object Exception]': + return true; + case '[object DOMException]': + return true; + default: + return value instanceof Error; + } +} + +function isErrorEvent(value) { + return Object.prototype.toString.call(value) === '[object ErrorEvent]'; +} + +function isDOMError(value) { + return Object.prototype.toString.call(value) === '[object DOMError]'; +} + +function isDOMException(value) { + return Object.prototype.toString.call(value) === '[object DOMException]'; +} + +function isUndefined(what) { + return what === void 0; +} + +function isFunction(what) { + return typeof what === 'function'; +} + +function isPlainObject(what) { + return Object.prototype.toString.call(what) === '[object Object]'; +} + +function isString(what) { + return Object.prototype.toString.call(what) === '[object String]'; +} + +function isArray(what) { + return Object.prototype.toString.call(what) === '[object Array]'; +} + +function isEmptyObject(what) { + if (!isPlainObject(what)) return false; + + for (var _ in what) { + if (what.hasOwnProperty(_)) { + return false; + } + } + return true; +} + +function supportsErrorEvent() { + try { + new ErrorEvent(''); // eslint-disable-line no-new + return true; + } catch (e) { + return false; + } +} + +function supportsDOMError() { + try { + new DOMError(''); // eslint-disable-line no-new + return true; + } catch (e) { + return false; + } +} + +function supportsDOMException() { + try { + new DOMException(''); // eslint-disable-line no-new + return true; + } catch (e) { + return false; + } +} + +function supportsFetch() { + if (!('fetch' in _window)) return false; + + try { + new Headers(); // eslint-disable-line no-new + new Request(''); // eslint-disable-line no-new + new Response(); // eslint-disable-line no-new + return true; + } catch (e) { + return false; + } +} + +// Despite all stars in the sky saying that Edge supports old draft syntax, aka 'never', 'always', 'origin' and 'default +// https://caniuse.com/#feat=referrer-policy +// It doesn't. And it throw exception instead of ignoring this parameter... +// REF: https://github.com/getsentry/raven-js/issues/1233 +function supportsReferrerPolicy() { + if (!supportsFetch()) return false; + + try { + // eslint-disable-next-line no-new + new Request('pickleRick', { + referrerPolicy: 'origin' + }); + return true; + } catch (e) { + return false; + } +} + +function supportsPromiseRejectionEvent() { + return typeof PromiseRejectionEvent === 'function'; +} + +function wrappedCallback(callback) { + function dataCallback(data, original) { + var normalizedData = callback(data) || data; + if (original) { + return original(normalizedData) || normalizedData; + } + return normalizedData; + } + + return dataCallback; +} + +function each(obj, callback) { + var i, j; + + if (isUndefined(obj.length)) { + for (i in obj) { + if (hasKey(obj, i)) { + callback.call(null, i, obj[i]); + } + } + } else { + j = obj.length; + if (j) { + for (i = 0; i < j; i++) { + callback.call(null, i, obj[i]); + } + } + } +} + +function objectMerge(obj1, obj2) { + if (!obj2) { + return obj1; + } + each(obj2, function(key, value) { + obj1[key] = value; + }); + return obj1; +} + +/** + * This function is only used for react-native. + * react-native freezes object that have already been sent over the + * js bridge. We need this function in order to check if the object is frozen. + * So it's ok that objectFrozen returns false if Object.isFrozen is not + * supported because it's not relevant for other "platforms". See related issue: + * https://github.com/getsentry/react-native-sentry/issues/57 + */ +function objectFrozen(obj) { + if (!Object.isFrozen) { + return false; + } + return Object.isFrozen(obj); +} + +function truncate(str, max) { + if (typeof max !== 'number') { + throw new Error('2nd argument to `truncate` function should be a number'); + } + if (typeof str !== 'string' || max === 0) { + return str; + } + return str.length <= max ? str : str.substr(0, max) + '\u2026'; +} + +/** + * hasKey, a better form of hasOwnProperty + * Example: hasKey(MainHostObject, property) === true/false + * + * @param {Object} host object to check property + * @param {string} key to check + */ +function hasKey(object, key) { + return Object.prototype.hasOwnProperty.call(object, key); +} + +function joinRegExp(patterns) { + // Combine an array of regular expressions and strings into one large regexp + // Be mad. + var sources = [], + i = 0, + len = patterns.length, + pattern; + + for (; i < len; i++) { + pattern = patterns[i]; + if (isString(pattern)) { + // If it's a string, we need to escape it + // Taken from: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions + sources.push(pattern.replace(/([.*+?^=!:${}()|\[\]\/\\])/g, '\\$1')); + } else if (pattern && pattern.source) { + // If it's a regexp already, we want to extract the source + sources.push(pattern.source); + } + // Intentionally skip other cases + } + return new RegExp(sources.join('|'), 'i'); +} + +function urlencode(o) { + var pairs = []; + each(o, function(key, value) { + pairs.push(encodeURIComponent(key) + '=' + encodeURIComponent(value)); + }); + return pairs.join('&'); +} + +// borrowed from https://tools.ietf.org/html/rfc3986#appendix-B +// intentionally using regex and not href parsing trick because React Native and other +// environments where DOM might not be available +function parseUrl(url) { + if (typeof url !== 'string') return {}; + var match = url.match(/^(([^:\/?#]+):)?(\/\/([^\/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?$/); + + // coerce to undefined values to empty string so we don't get 'undefined' + var query = match[6] || ''; + var fragment = match[8] || ''; + return { + protocol: match[2], + host: match[4], + path: match[5], + relative: match[5] + query + fragment // everything minus origin + }; +} +function uuid4() { + var crypto = _window.crypto || _window.msCrypto; + + if (!isUndefined(crypto) && crypto.getRandomValues) { + // Use window.crypto API if available + // eslint-disable-next-line no-undef + var arr = new Uint16Array(8); + crypto.getRandomValues(arr); + + // set 4 in byte 7 + arr[3] = (arr[3] & 0xfff) | 0x4000; + // set 2 most significant bits of byte 9 to '10' + arr[4] = (arr[4] & 0x3fff) | 0x8000; + + var pad = function(num) { + var v = num.toString(16); + while (v.length < 4) { + v = '0' + v; + } + return v; + }; + + return ( + pad(arr[0]) + + pad(arr[1]) + + pad(arr[2]) + + pad(arr[3]) + + pad(arr[4]) + + pad(arr[5]) + + pad(arr[6]) + + pad(arr[7]) + ); + } else { + // http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/2117523#2117523 + return 'xxxxxxxxxxxx4xxxyxxxxxxxxxxxxxxx'.replace(/[xy]/g, function(c) { + var r = (Math.random() * 16) | 0, + v = c === 'x' ? r : (r & 0x3) | 0x8; + return v.toString(16); + }); + } +} + +/** + * Given a child DOM element, returns a query-selector statement describing that + * and its ancestors + * e.g. [HTMLElement] => body > div > input#foo.btn[name=baz] + * @param elem + * @returns {string} + */ +function htmlTreeAsString(elem) { + /* eslint no-extra-parens:0*/ + var MAX_TRAVERSE_HEIGHT = 5, + MAX_OUTPUT_LEN = 80, + out = [], + height = 0, + len = 0, + separator = ' > ', + sepLength = separator.length, + nextStr; + + while (elem && height++ < MAX_TRAVERSE_HEIGHT) { + nextStr = htmlElementAsString(elem); + // bail out if + // - nextStr is the 'html' element + // - the length of the string that would be created exceeds MAX_OUTPUT_LEN + // (ignore this limit if we are on the first iteration) + if ( + nextStr === 'html' || + (height > 1 && len + out.length * sepLength + nextStr.length >= MAX_OUTPUT_LEN) + ) { + break; + } + + out.push(nextStr); + + len += nextStr.length; + elem = elem.parentNode; + } + + return out.reverse().join(separator); +} + +/** + * Returns a simple, query-selector representation of a DOM element + * e.g. [HTMLElement] => input#foo.btn[name=baz] + * @param HTMLElement + * @returns {string} + */ +function htmlElementAsString(elem) { + var out = [], + className, + classes, + key, + attr, + i; + + if (!elem || !elem.tagName) { + return ''; + } + + out.push(elem.tagName.toLowerCase()); + if (elem.id) { + out.push('#' + elem.id); + } + + className = elem.className; + if (className && isString(className)) { + classes = className.split(/\s+/); + for (i = 0; i < classes.length; i++) { + out.push('.' + classes[i]); + } + } + var attrWhitelist = ['type', 'name', 'title', 'alt']; + for (i = 0; i < attrWhitelist.length; i++) { + key = attrWhitelist[i]; + attr = elem.getAttribute(key); + if (attr) { + out.push('[' + key + '="' + attr + '"]'); + } + } + return out.join(''); +} + +/** + * Returns true if either a OR b is truthy, but not both + */ +function isOnlyOneTruthy(a, b) { + return !!(!!a ^ !!b); +} + +/** + * Returns true if both parameters are undefined + */ +function isBothUndefined(a, b) { + return isUndefined(a) && isUndefined(b); +} + +/** + * Returns true if the two input exception interfaces have the same content + */ +function isSameException(ex1, ex2) { + if (isOnlyOneTruthy(ex1, ex2)) return false; + + ex1 = ex1.values[0]; + ex2 = ex2.values[0]; + + if (ex1.type !== ex2.type || ex1.value !== ex2.value) return false; + + // in case both stacktraces are undefined, we can't decide so default to false + if (isBothUndefined(ex1.stacktrace, ex2.stacktrace)) return false; + + return isSameStacktrace(ex1.stacktrace, ex2.stacktrace); +} + +/** + * Returns true if the two input stack trace interfaces have the same content + */ +function isSameStacktrace(stack1, stack2) { + if (isOnlyOneTruthy(stack1, stack2)) return false; + + var frames1 = stack1.frames; + var frames2 = stack2.frames; + + // Exit early if frame count differs + if (frames1.length !== frames2.length) return false; + + // Iterate through every frame; bail out if anything differs + var a, b; + for (var i = 0; i < frames1.length; i++) { + a = frames1[i]; + b = frames2[i]; + if ( + a.filename !== b.filename || + a.lineno !== b.lineno || + a.colno !== b.colno || + a['function'] !== b['function'] + ) + return false; + } + return true; +} + +/** + * Polyfill a method + * @param obj object e.g. `document` + * @param name method name present on object e.g. `addEventListener` + * @param replacement replacement function + * @param track {optional} record instrumentation to an array + */ +function fill(obj, name, replacement, track) { + if (obj == null) return; + var orig = obj[name]; + obj[name] = replacement(orig); + obj[name].__raven__ = true; + obj[name].__orig__ = orig; + if (track) { + track.push([obj, name, orig]); + } +} + +/** + * Join values in array + * @param input array of values to be joined together + * @param delimiter string to be placed in-between values + * @returns {string} + */ +function safeJoin(input, delimiter) { + if (!isArray(input)) return ''; + + var output = []; + + for (var i = 0; i < input.length; i++) { + try { + output.push(String(input[i])); + } catch (e) { + output.push('[value cannot be serialized]'); + } + } + + return output.join(delimiter); +} + +// Default Node.js REPL depth +var MAX_SERIALIZE_EXCEPTION_DEPTH = 3; +// 50kB, as 100kB is max payload size, so half sounds reasonable +var MAX_SERIALIZE_EXCEPTION_SIZE = 50 * 1024; +var MAX_SERIALIZE_KEYS_LENGTH = 40; + +function utf8Length(value) { + return ~-encodeURI(value).split(/%..|./).length; +} + +function jsonSize(value) { + return utf8Length(JSON.stringify(value)); +} + +function serializeValue(value) { + if (typeof value === 'string') { + var maxLength = 40; + return truncate(value, maxLength); + } else if ( + typeof value === 'number' || + typeof value === 'boolean' || + typeof value === 'undefined' + ) { + return value; + } + + var type = Object.prototype.toString.call(value); + + // Node.js REPL notation + if (type === '[object Object]') return '[Object]'; + if (type === '[object Array]') return '[Array]'; + if (type === '[object Function]') + return value.name ? '[Function: ' + value.name + ']' : '[Function]'; + + return value; +} + +function serializeObject(value, depth) { + if (depth === 0) return serializeValue(value); + + if (isPlainObject(value)) { + return Object.keys(value).reduce(function(acc, key) { + acc[key] = serializeObject(value[key], depth - 1); + return acc; + }, {}); + } else if (Array.isArray(value)) { + return value.map(function(val) { + return serializeObject(val, depth - 1); + }); + } + + return serializeValue(value); +} + +function serializeException(ex, depth, maxSize) { + if (!isPlainObject(ex)) return ex; + + depth = typeof depth !== 'number' ? MAX_SERIALIZE_EXCEPTION_DEPTH : depth; + maxSize = typeof depth !== 'number' ? MAX_SERIALIZE_EXCEPTION_SIZE : maxSize; + + var serialized = serializeObject(ex, depth); + + if (jsonSize(stringify(serialized)) > maxSize) { + return serializeException(ex, depth - 1); + } + + return serialized; +} + +function serializeKeysForMessage(keys, maxLength) { + if (typeof keys === 'number' || typeof keys === 'string') return keys.toString(); + if (!Array.isArray(keys)) return ''; + + keys = keys.filter(function(key) { + return typeof key === 'string'; + }); + if (keys.length === 0) return '[object has no keys]'; + + maxLength = typeof maxLength !== 'number' ? MAX_SERIALIZE_KEYS_LENGTH : maxLength; + if (keys[0].length >= maxLength) return keys[0]; + + for (var usedKeys = keys.length; usedKeys > 0; usedKeys--) { + var serialized = keys.slice(0, usedKeys).join(', '); + if (serialized.length > maxLength) continue; + if (usedKeys === keys.length) return serialized; + return serialized + '\u2026'; + } + + return ''; +} + +function sanitize(input, sanitizeKeys) { + if (!isArray(sanitizeKeys) || (isArray(sanitizeKeys) && sanitizeKeys.length === 0)) + return input; + + var sanitizeRegExp = joinRegExp(sanitizeKeys); + var sanitizeMask = '********'; + var safeInput; + + try { + safeInput = JSON.parse(stringify(input)); + } catch (o_O) { + return input; + } + + function sanitizeWorker(workerInput) { + if (isArray(workerInput)) { + return workerInput.map(function(val) { + return sanitizeWorker(val); + }); + } + + if (isPlainObject(workerInput)) { + return Object.keys(workerInput).reduce(function(acc, k) { + if (sanitizeRegExp.test(k)) { + acc[k] = sanitizeMask; + } else { + acc[k] = sanitizeWorker(workerInput[k]); + } + return acc; + }, {}); + } + + return workerInput; + } + + return sanitizeWorker(safeInput); +} + +module.exports = { + isObject: isObject, + isError: isError, + isErrorEvent: isErrorEvent, + isDOMError: isDOMError, + isDOMException: isDOMException, + isUndefined: isUndefined, + isFunction: isFunction, + isPlainObject: isPlainObject, + isString: isString, + isArray: isArray, + isEmptyObject: isEmptyObject, + supportsErrorEvent: supportsErrorEvent, + supportsDOMError: supportsDOMError, + supportsDOMException: supportsDOMException, + supportsFetch: supportsFetch, + supportsReferrerPolicy: supportsReferrerPolicy, + supportsPromiseRejectionEvent: supportsPromiseRejectionEvent, + wrappedCallback: wrappedCallback, + each: each, + objectMerge: objectMerge, + truncate: truncate, + objectFrozen: objectFrozen, + hasKey: hasKey, + joinRegExp: joinRegExp, + urlencode: urlencode, + uuid4: uuid4, + htmlTreeAsString: htmlTreeAsString, + htmlElementAsString: htmlElementAsString, + isSameException: isSameException, + isSameStacktrace: isSameStacktrace, + parseUrl: parseUrl, + fill: fill, + safeJoin: safeJoin, + serializeException: serializeException, + serializeKeysForMessage: serializeKeysForMessage, + sanitize: sanitize +}; + +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"8":8}],7:[function(_dereq_,module,exports){ +(function (global){ +var utils = _dereq_(6); + +/* + TraceKit - Cross brower stack traces + + This was originally forked from github.com/occ/TraceKit, but has since been + largely re-written and is now maintained as part of raven-js. Tests for + this are in test/vendor. + + MIT license +*/ + +var TraceKit = { + collectWindowErrors: true, + debug: false +}; + +// This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785) +var _window = + typeof window !== 'undefined' + ? window + : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; + +// global reference to slice +var _slice = [].slice; +var UNKNOWN_FUNCTION = '?'; + +// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error#Error_types +var ERROR_TYPES_RE = /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/; + +function getLocationHref() { + if (typeof document === 'undefined' || document.location == null) return ''; + return document.location.href; +} + +function getLocationOrigin() { + if (typeof document === 'undefined' || document.location == null) return ''; + + // Oh dear IE10... + if (!document.location.origin) { + document.location.origin = + document.location.protocol + + '//' + + document.location.hostname + + (document.location.port ? ':' + document.location.port : ''); + } + + return document.location.origin; +} + +/** + * TraceKit.report: cross-browser processing of unhandled exceptions + * + * Syntax: + * TraceKit.report.subscribe(function(stackInfo) { ... }) + * TraceKit.report.unsubscribe(function(stackInfo) { ... }) + * TraceKit.report(exception) + * try { ...code... } catch(ex) { TraceKit.report(ex); } + * + * Supports: + * - Firefox: full stack trace with line numbers, plus column number + * on top frame; column number is not guaranteed + * - Opera: full stack trace with line and column numbers + * - Chrome: full stack trace with line and column numbers + * - Safari: line and column number for the top frame only; some frames + * may be missing, and column number is not guaranteed + * - IE: line and column number for the top frame only; some frames + * may be missing, and column number is not guaranteed + * + * In theory, TraceKit should work on all of the following versions: + * - IE5.5+ (only 8.0 tested) + * - Firefox 0.9+ (only 3.5+ tested) + * - Opera 7+ (only 10.50 tested; versions 9 and earlier may require + * Exceptions Have Stacktrace to be enabled in opera:config) + * - Safari 3+ (only 4+ tested) + * - Chrome 1+ (only 5+ tested) + * - Konqueror 3.5+ (untested) + * + * Requires TraceKit.computeStackTrace. + * + * Tries to catch all unhandled exceptions and report them to the + * subscribed handlers. Please note that TraceKit.report will rethrow the + * exception. This is REQUIRED in order to get a useful stack trace in IE. + * If the exception does not reach the top of the browser, you will only + * get a stack trace from the point where TraceKit.report was called. + * + * Handlers receive a stackInfo object as described in the + * TraceKit.computeStackTrace docs. + */ +TraceKit.report = (function reportModuleWrapper() { + var handlers = [], + lastArgs = null, + lastException = null, + lastExceptionStack = null; + + /** + * Add a crash handler. + * @param {Function} handler + */ + function subscribe(handler) { + installGlobalHandler(); + handlers.push(handler); + } + + /** + * Remove a crash handler. + * @param {Function} handler + */ + function unsubscribe(handler) { + for (var i = handlers.length - 1; i >= 0; --i) { + if (handlers[i] === handler) { + handlers.splice(i, 1); + } + } + } + + /** + * Remove all crash handlers. + */ + function unsubscribeAll() { + uninstallGlobalHandler(); + handlers = []; + } + + /** + * Dispatch stack information to all handlers. + * @param {Object.} stack + */ + function notifyHandlers(stack, isWindowError) { + var exception = null; + if (isWindowError && !TraceKit.collectWindowErrors) { + return; + } + for (var i in handlers) { + if (handlers.hasOwnProperty(i)) { + try { + handlers[i].apply(null, [stack].concat(_slice.call(arguments, 2))); + } catch (inner) { + exception = inner; + } + } + } + + if (exception) { + throw exception; + } + } + + var _oldOnerrorHandler, _onErrorHandlerInstalled; + + /** + * Ensures all global unhandled exceptions are recorded. + * Supported by Gecko and IE. + * @param {string} msg Error message. + * @param {string} url URL of script that generated the exception. + * @param {(number|string)} lineNo The line number at which the error + * occurred. + * @param {?(number|string)} colNo The column number at which the error + * occurred. + * @param {?Error} ex The actual Error object. + */ + function traceKitWindowOnError(msg, url, lineNo, colNo, ex) { + var stack = null; + // If 'ex' is ErrorEvent, get real Error from inside + var exception = utils.isErrorEvent(ex) ? ex.error : ex; + // If 'msg' is ErrorEvent, get real message from inside + var message = utils.isErrorEvent(msg) ? msg.message : msg; + + if (lastExceptionStack) { + TraceKit.computeStackTrace.augmentStackTraceWithInitialElement( + lastExceptionStack, + url, + lineNo, + message + ); + processLastException(); + } else if (exception && utils.isError(exception)) { + // non-string `exception` arg; attempt to extract stack trace + + // New chrome and blink send along a real error object + // Let's just report that like a normal error. + // See: https://mikewest.org/2013/08/debugging-runtime-errors-with-window-onerror + stack = TraceKit.computeStackTrace(exception); + notifyHandlers(stack, true); + } else { + var location = { + url: url, + line: lineNo, + column: colNo + }; + + var name = undefined; + var groups; + + if ({}.toString.call(message) === '[object String]') { + var groups = message.match(ERROR_TYPES_RE); + if (groups) { + name = groups[1]; + message = groups[2]; + } + } + + location.func = UNKNOWN_FUNCTION; + + stack = { + name: name, + message: message, + url: getLocationHref(), + stack: [location] + }; + notifyHandlers(stack, true); + } + + if (_oldOnerrorHandler) { + return _oldOnerrorHandler.apply(this, arguments); + } + + return false; + } + + function installGlobalHandler() { + if (_onErrorHandlerInstalled) { + return; + } + _oldOnerrorHandler = _window.onerror; + _window.onerror = traceKitWindowOnError; + _onErrorHandlerInstalled = true; + } + + function uninstallGlobalHandler() { + if (!_onErrorHandlerInstalled) { + return; + } + _window.onerror = _oldOnerrorHandler; + _onErrorHandlerInstalled = false; + _oldOnerrorHandler = undefined; + } + + function processLastException() { + var _lastExceptionStack = lastExceptionStack, + _lastArgs = lastArgs; + lastArgs = null; + lastExceptionStack = null; + lastException = null; + notifyHandlers.apply(null, [_lastExceptionStack, false].concat(_lastArgs)); + } + + /** + * Reports an unhandled Error to TraceKit. + * @param {Error} ex + * @param {?boolean} rethrow If false, do not re-throw the exception. + * Only used for window.onerror to not cause an infinite loop of + * rethrowing. + */ + function report(ex, rethrow) { + var args = _slice.call(arguments, 1); + if (lastExceptionStack) { + if (lastException === ex) { + return; // already caught by an inner catch block, ignore + } else { + processLastException(); + } + } + + var stack = TraceKit.computeStackTrace(ex); + lastExceptionStack = stack; + lastException = ex; + lastArgs = args; + + // If the stack trace is incomplete, wait for 2 seconds for + // slow slow IE to see if onerror occurs or not before reporting + // this exception; otherwise, we will end up with an incomplete + // stack trace + setTimeout(function() { + if (lastException === ex) { + processLastException(); + } + }, stack.incomplete ? 2000 : 0); + + if (rethrow !== false) { + throw ex; // re-throw to propagate to the top level (and cause window.onerror) + } + } + + report.subscribe = subscribe; + report.unsubscribe = unsubscribe; + report.uninstall = unsubscribeAll; + return report; +})(); + +/** + * TraceKit.computeStackTrace: cross-browser stack traces in JavaScript + * + * Syntax: + * s = TraceKit.computeStackTrace(exception) // consider using TraceKit.report instead (see below) + * Returns: + * s.name - exception name + * s.message - exception message + * s.stack[i].url - JavaScript or HTML file URL + * s.stack[i].func - function name, or empty for anonymous functions (if guessing did not work) + * s.stack[i].args - arguments passed to the function, if known + * s.stack[i].line - line number, if known + * s.stack[i].column - column number, if known + * + * Supports: + * - Firefox: full stack trace with line numbers and unreliable column + * number on top frame + * - Opera 10: full stack trace with line and column numbers + * - Opera 9-: full stack trace with line numbers + * - Chrome: full stack trace with line and column numbers + * - Safari: line and column number for the topmost stacktrace element + * only + * - IE: no line numbers whatsoever + * + * Tries to guess names of anonymous functions by looking for assignments + * in the source code. In IE and Safari, we have to guess source file names + * by searching for function bodies inside all page scripts. This will not + * work for scripts that are loaded cross-domain. + * Here be dragons: some function names may be guessed incorrectly, and + * duplicate functions may be mismatched. + * + * TraceKit.computeStackTrace should only be used for tracing purposes. + * Logging of unhandled exceptions should be done with TraceKit.report, + * which builds on top of TraceKit.computeStackTrace and provides better + * IE support by utilizing the window.onerror event to retrieve information + * about the top of the stack. + * + * Note: In IE and Safari, no stack trace is recorded on the Error object, + * so computeStackTrace instead walks its *own* chain of callers. + * This means that: + * * in Safari, some methods may be missing from the stack trace; + * * in IE, the topmost function in the stack trace will always be the + * caller of computeStackTrace. + * + * This is okay for tracing (because you are likely to be calling + * computeStackTrace from the function you want to be the topmost element + * of the stack trace anyway), but not okay for logging unhandled + * exceptions (because your catch block will likely be far away from the + * inner function that actually caused the exception). + * + */ +TraceKit.computeStackTrace = (function computeStackTraceWrapper() { + // Contents of Exception in various browsers. + // + // SAFARI: + // ex.message = Can't find variable: qq + // ex.line = 59 + // ex.sourceId = 580238192 + // ex.sourceURL = http://... + // ex.expressionBeginOffset = 96 + // ex.expressionCaretOffset = 98 + // ex.expressionEndOffset = 98 + // ex.name = ReferenceError + // + // FIREFOX: + // ex.message = qq is not defined + // ex.fileName = http://... + // ex.lineNumber = 59 + // ex.columnNumber = 69 + // ex.stack = ...stack trace... (see the example below) + // ex.name = ReferenceError + // + // CHROME: + // ex.message = qq is not defined + // ex.name = ReferenceError + // ex.type = not_defined + // ex.arguments = ['aa'] + // ex.stack = ...stack trace... + // + // INTERNET EXPLORER: + // ex.message = ... + // ex.name = ReferenceError + // + // OPERA: + // ex.message = ...message... (see the example below) + // ex.name = ReferenceError + // ex.opera#sourceloc = 11 (pretty much useless, duplicates the info in ex.message) + // ex.stacktrace = n/a; see 'opera:config#UserPrefs|Exceptions Have Stacktrace' + + /** + * Computes stack trace information from the stack property. + * Chrome and Gecko use this property. + * @param {Error} ex + * @return {?Object.} Stack trace information. + */ + function computeStackTraceFromStackProp(ex) { + if (typeof ex.stack === 'undefined' || !ex.stack) return; + + var chrome = /^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i; + var winjs = /^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i; + // NOTE: blob urls are now supposed to always have an origin, therefore it's format + // which is `blob:http://url/path/with-some-uuid`, is matched by `blob.*?:\/` as well + var gecko = /^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i; + // Used to additionally parse URL/line/column from eval frames + var geckoEval = /(\S+) line (\d+)(?: > eval line \d+)* > eval/i; + var chromeEval = /\((\S*)(?::(\d+))(?::(\d+))\)/; + var lines = ex.stack.split('\n'); + var stack = []; + var submatch; + var parts; + var element; + var reference = /^(.*) is undefined$/.exec(ex.message); + + for (var i = 0, j = lines.length; i < j; ++i) { + if ((parts = chrome.exec(lines[i]))) { + var isNative = parts[2] && parts[2].indexOf('native') === 0; // start of line + var isEval = parts[2] && parts[2].indexOf('eval') === 0; // start of line + if (isEval && (submatch = chromeEval.exec(parts[2]))) { + // throw out eval line/column and use top-most line/column number + parts[2] = submatch[1]; // url + parts[3] = submatch[2]; // line + parts[4] = submatch[3]; // column + } + element = { + url: !isNative ? parts[2] : null, + func: parts[1] || UNKNOWN_FUNCTION, + args: isNative ? [parts[2]] : [], + line: parts[3] ? +parts[3] : null, + column: parts[4] ? +parts[4] : null + }; + } else if ((parts = winjs.exec(lines[i]))) { + element = { + url: parts[2], + func: parts[1] || UNKNOWN_FUNCTION, + args: [], + line: +parts[3], + column: parts[4] ? +parts[4] : null + }; + } else if ((parts = gecko.exec(lines[i]))) { + var isEval = parts[3] && parts[3].indexOf(' > eval') > -1; + if (isEval && (submatch = geckoEval.exec(parts[3]))) { + // throw out eval line/column and use top-most line number + parts[3] = submatch[1]; + parts[4] = submatch[2]; + parts[5] = null; // no column when eval + } else if (i === 0 && !parts[5] && typeof ex.columnNumber !== 'undefined') { + // FireFox uses this awesome columnNumber property for its top frame + // Also note, Firefox's column number is 0-based and everything else expects 1-based, + // so adding 1 + // NOTE: this hack doesn't work if top-most frame is eval + stack[0].column = ex.columnNumber + 1; + } + element = { + url: parts[3], + func: parts[1] || UNKNOWN_FUNCTION, + args: parts[2] ? parts[2].split(',') : [], + line: parts[4] ? +parts[4] : null, + column: parts[5] ? +parts[5] : null + }; + } else { + continue; + } + + if (!element.func && element.line) { + element.func = UNKNOWN_FUNCTION; + } + + if (element.url && element.url.substr(0, 5) === 'blob:') { + // Special case for handling JavaScript loaded into a blob. + // We use a synchronous AJAX request here as a blob is already in + // memory - it's not making a network request. This will generate a warning + // in the browser console, but there has already been an error so that's not + // that much of an issue. + var xhr = new XMLHttpRequest(); + xhr.open('GET', element.url, false); + xhr.send(null); + + // If we failed to download the source, skip this patch + if (xhr.status === 200) { + var source = xhr.responseText || ''; + + // We trim the source down to the last 300 characters as sourceMappingURL is always at the end of the file. + // Why 300? To be in line with: https://github.com/getsentry/sentry/blob/4af29e8f2350e20c28a6933354e4f42437b4ba42/src/sentry/lang/javascript/processor.py#L164-L175 + source = source.slice(-300); + + // Now we dig out the source map URL + var sourceMaps = source.match(/\/\/# sourceMappingURL=(.*)$/); + + // If we don't find a source map comment or we find more than one, continue on to the next element. + if (sourceMaps) { + var sourceMapAddress = sourceMaps[1]; + + // Now we check to see if it's a relative URL. + // If it is, convert it to an absolute one. + if (sourceMapAddress.charAt(0) === '~') { + sourceMapAddress = getLocationOrigin() + sourceMapAddress.slice(1); + } + + // Now we strip the '.map' off of the end of the URL and update the + // element so that Sentry can match the map to the blob. + element.url = sourceMapAddress.slice(0, -4); + } + } + } + + stack.push(element); + } + + if (!stack.length) { + return null; + } + + return { + name: ex.name, + message: ex.message, + url: getLocationHref(), + stack: stack + }; + } + + /** + * Adds information about the first frame to incomplete stack traces. + * Safari and IE require this to get complete data on the first frame. + * @param {Object.} stackInfo Stack trace information from + * one of the compute* methods. + * @param {string} url The URL of the script that caused an error. + * @param {(number|string)} lineNo The line number of the script that + * caused an error. + * @param {string=} message The error generated by the browser, which + * hopefully contains the name of the object that caused the error. + * @return {boolean} Whether or not the stack information was + * augmented. + */ + function augmentStackTraceWithInitialElement(stackInfo, url, lineNo, message) { + var initial = { + url: url, + line: lineNo + }; + + if (initial.url && initial.line) { + stackInfo.incomplete = false; + + if (!initial.func) { + initial.func = UNKNOWN_FUNCTION; + } + + if (stackInfo.stack.length > 0) { + if (stackInfo.stack[0].url === initial.url) { + if (stackInfo.stack[0].line === initial.line) { + return false; // already in stack trace + } else if ( + !stackInfo.stack[0].line && + stackInfo.stack[0].func === initial.func + ) { + stackInfo.stack[0].line = initial.line; + return false; + } + } + } + + stackInfo.stack.unshift(initial); + stackInfo.partial = true; + return true; + } else { + stackInfo.incomplete = true; + } + + return false; + } + + /** + * Computes stack trace information by walking the arguments.caller + * chain at the time the exception occurred. This will cause earlier + * frames to be missed but is the only way to get any stack trace in + * Safari and IE. The top frame is restored by + * {@link augmentStackTraceWithInitialElement}. + * @param {Error} ex + * @return {?Object.} Stack trace information. + */ + function computeStackTraceByWalkingCallerChain(ex, depth) { + var functionName = /function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i, + stack = [], + funcs = {}, + recursion = false, + parts, + item, + source; + + for ( + var curr = computeStackTraceByWalkingCallerChain.caller; + curr && !recursion; + curr = curr.caller + ) { + if (curr === computeStackTrace || curr === TraceKit.report) { + // console.log('skipping internal function'); + continue; + } + + item = { + url: null, + func: UNKNOWN_FUNCTION, + line: null, + column: null + }; + + if (curr.name) { + item.func = curr.name; + } else if ((parts = functionName.exec(curr.toString()))) { + item.func = parts[1]; + } + + if (typeof item.func === 'undefined') { + try { + item.func = parts.input.substring(0, parts.input.indexOf('{')); + } catch (e) {} + } + + if (funcs['' + curr]) { + recursion = true; + } else { + funcs['' + curr] = true; + } + + stack.push(item); + } + + if (depth) { + // console.log('depth is ' + depth); + // console.log('stack is ' + stack.length); + stack.splice(0, depth); + } + + var result = { + name: ex.name, + message: ex.message, + url: getLocationHref(), + stack: stack + }; + augmentStackTraceWithInitialElement( + result, + ex.sourceURL || ex.fileName, + ex.line || ex.lineNumber, + ex.message || ex.description + ); + return result; + } + + /** + * Computes a stack trace for an exception. + * @param {Error} ex + * @param {(string|number)=} depth + */ + function computeStackTrace(ex, depth) { + var stack = null; + depth = depth == null ? 0 : +depth; + + try { + stack = computeStackTraceFromStackProp(ex); + if (stack) { + return stack; + } + } catch (e) { + if (TraceKit.debug) { + throw e; + } + } + + try { + stack = computeStackTraceByWalkingCallerChain(ex, depth + 1); + if (stack) { + return stack; + } + } catch (e) { + if (TraceKit.debug) { + throw e; + } + } + return { + name: ex.name, + message: ex.message, + url: getLocationHref() + }; + } + + computeStackTrace.augmentStackTraceWithInitialElement = augmentStackTraceWithInitialElement; + computeStackTrace.computeStackTraceFromStackProp = computeStackTraceFromStackProp; + + return computeStackTrace; +})(); + +module.exports = TraceKit; + +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"6":6}],8:[function(_dereq_,module,exports){ +/* + json-stringify-safe + Like JSON.stringify, but doesn't throw on circular references. + + Originally forked from https://github.com/isaacs/json-stringify-safe + version 5.0.1 on 3/8/2017 and modified to handle Errors serialization + and IE8 compatibility. Tests for this are in test/vendor. + + ISC license: https://github.com/isaacs/json-stringify-safe/blob/master/LICENSE +*/ + +exports = module.exports = stringify; +exports.getSerialize = serializer; + +function indexOf(haystack, needle) { + for (var i = 0; i < haystack.length; ++i) { + if (haystack[i] === needle) return i; + } + return -1; +} + +function stringify(obj, replacer, spaces, cycleReplacer) { + return JSON.stringify(obj, serializer(replacer, cycleReplacer), spaces); +} + +// https://github.com/ftlabs/js-abbreviate/blob/fa709e5f139e7770a71827b1893f22418097fbda/index.js#L95-L106 +function stringifyError(value) { + var err = { + // These properties are implemented as magical getters and don't show up in for in + stack: value.stack, + message: value.message, + name: value.name + }; + + for (var i in value) { + if (Object.prototype.hasOwnProperty.call(value, i)) { + err[i] = value[i]; + } + } + + return err; +} + +function serializer(replacer, cycleReplacer) { + var stack = []; + var keys = []; + + if (cycleReplacer == null) { + cycleReplacer = function(key, value) { + if (stack[0] === value) { + return '[Circular ~]'; + } + return '[Circular ~.' + keys.slice(0, indexOf(stack, value)).join('.') + ']'; + }; + } + + return function(key, value) { + if (stack.length > 0) { + var thisPos = indexOf(stack, this); + ~thisPos ? stack.splice(thisPos + 1) : stack.push(this); + ~thisPos ? keys.splice(thisPos, Infinity, key) : keys.push(key); + + if (~indexOf(stack, value)) { + value = cycleReplacer.call(this, key, value); + } + } else { + stack.push(value); + } + + return replacer == null + ? value instanceof Error ? stringifyError(value) : value + : replacer.call(this, key, value); + }; +} + +},{}],9:[function(_dereq_,module,exports){ +/* + * JavaScript MD5 + * https://github.com/blueimp/JavaScript-MD5 + * + * Copyright 2011, Sebastian Tschan + * https://blueimp.net + * + * Licensed under the MIT license: + * https://opensource.org/licenses/MIT + * + * Based on + * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message + * Digest Algorithm, as defined in RFC 1321. + * Version 2.2 Copyright (C) Paul Johnston 1999 - 2009 + * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet + * Distributed under the BSD License + * See http://pajhome.org.uk/crypt/md5 for more info. + */ + +/* +* Add integers, wrapping at 2^32. This uses 16-bit operations internally +* to work around bugs in some JS interpreters. +*/ +function safeAdd(x, y) { + var lsw = (x & 0xffff) + (y & 0xffff); + var msw = (x >> 16) + (y >> 16) + (lsw >> 16); + return (msw << 16) | (lsw & 0xffff); +} + +/* +* Bitwise rotate a 32-bit number to the left. +*/ +function bitRotateLeft(num, cnt) { + return (num << cnt) | (num >>> (32 - cnt)); +} + +/* +* These functions implement the four basic operations the algorithm uses. +*/ +function md5cmn(q, a, b, x, s, t) { + return safeAdd(bitRotateLeft(safeAdd(safeAdd(a, q), safeAdd(x, t)), s), b); +} +function md5ff(a, b, c, d, x, s, t) { + return md5cmn((b & c) | (~b & d), a, b, x, s, t); +} +function md5gg(a, b, c, d, x, s, t) { + return md5cmn((b & d) | (c & ~d), a, b, x, s, t); +} +function md5hh(a, b, c, d, x, s, t) { + return md5cmn(b ^ c ^ d, a, b, x, s, t); +} +function md5ii(a, b, c, d, x, s, t) { + return md5cmn(c ^ (b | ~d), a, b, x, s, t); +} + +/* +* Calculate the MD5 of an array of little-endian words, and a bit length. +*/ +function binlMD5(x, len) { + /* append padding */ + x[len >> 5] |= 0x80 << (len % 32); + x[(((len + 64) >>> 9) << 4) + 14] = len; + + var i; + var olda; + var oldb; + var oldc; + var oldd; + var a = 1732584193; + var b = -271733879; + var c = -1732584194; + var d = 271733878; + + for (i = 0; i < x.length; i += 16) { + olda = a; + oldb = b; + oldc = c; + oldd = d; + + a = md5ff(a, b, c, d, x[i], 7, -680876936); + d = md5ff(d, a, b, c, x[i + 1], 12, -389564586); + c = md5ff(c, d, a, b, x[i + 2], 17, 606105819); + b = md5ff(b, c, d, a, x[i + 3], 22, -1044525330); + a = md5ff(a, b, c, d, x[i + 4], 7, -176418897); + d = md5ff(d, a, b, c, x[i + 5], 12, 1200080426); + c = md5ff(c, d, a, b, x[i + 6], 17, -1473231341); + b = md5ff(b, c, d, a, x[i + 7], 22, -45705983); + a = md5ff(a, b, c, d, x[i + 8], 7, 1770035416); + d = md5ff(d, a, b, c, x[i + 9], 12, -1958414417); + c = md5ff(c, d, a, b, x[i + 10], 17, -42063); + b = md5ff(b, c, d, a, x[i + 11], 22, -1990404162); + a = md5ff(a, b, c, d, x[i + 12], 7, 1804603682); + d = md5ff(d, a, b, c, x[i + 13], 12, -40341101); + c = md5ff(c, d, a, b, x[i + 14], 17, -1502002290); + b = md5ff(b, c, d, a, x[i + 15], 22, 1236535329); + + a = md5gg(a, b, c, d, x[i + 1], 5, -165796510); + d = md5gg(d, a, b, c, x[i + 6], 9, -1069501632); + c = md5gg(c, d, a, b, x[i + 11], 14, 643717713); + b = md5gg(b, c, d, a, x[i], 20, -373897302); + a = md5gg(a, b, c, d, x[i + 5], 5, -701558691); + d = md5gg(d, a, b, c, x[i + 10], 9, 38016083); + c = md5gg(c, d, a, b, x[i + 15], 14, -660478335); + b = md5gg(b, c, d, a, x[i + 4], 20, -405537848); + a = md5gg(a, b, c, d, x[i + 9], 5, 568446438); + d = md5gg(d, a, b, c, x[i + 14], 9, -1019803690); + c = md5gg(c, d, a, b, x[i + 3], 14, -187363961); + b = md5gg(b, c, d, a, x[i + 8], 20, 1163531501); + a = md5gg(a, b, c, d, x[i + 13], 5, -1444681467); + d = md5gg(d, a, b, c, x[i + 2], 9, -51403784); + c = md5gg(c, d, a, b, x[i + 7], 14, 1735328473); + b = md5gg(b, c, d, a, x[i + 12], 20, -1926607734); + + a = md5hh(a, b, c, d, x[i + 5], 4, -378558); + d = md5hh(d, a, b, c, x[i + 8], 11, -2022574463); + c = md5hh(c, d, a, b, x[i + 11], 16, 1839030562); + b = md5hh(b, c, d, a, x[i + 14], 23, -35309556); + a = md5hh(a, b, c, d, x[i + 1], 4, -1530992060); + d = md5hh(d, a, b, c, x[i + 4], 11, 1272893353); + c = md5hh(c, d, a, b, x[i + 7], 16, -155497632); + b = md5hh(b, c, d, a, x[i + 10], 23, -1094730640); + a = md5hh(a, b, c, d, x[i + 13], 4, 681279174); + d = md5hh(d, a, b, c, x[i], 11, -358537222); + c = md5hh(c, d, a, b, x[i + 3], 16, -722521979); + b = md5hh(b, c, d, a, x[i + 6], 23, 76029189); + a = md5hh(a, b, c, d, x[i + 9], 4, -640364487); + d = md5hh(d, a, b, c, x[i + 12], 11, -421815835); + c = md5hh(c, d, a, b, x[i + 15], 16, 530742520); + b = md5hh(b, c, d, a, x[i + 2], 23, -995338651); + + a = md5ii(a, b, c, d, x[i], 6, -198630844); + d = md5ii(d, a, b, c, x[i + 7], 10, 1126891415); + c = md5ii(c, d, a, b, x[i + 14], 15, -1416354905); + b = md5ii(b, c, d, a, x[i + 5], 21, -57434055); + a = md5ii(a, b, c, d, x[i + 12], 6, 1700485571); + d = md5ii(d, a, b, c, x[i + 3], 10, -1894986606); + c = md5ii(c, d, a, b, x[i + 10], 15, -1051523); + b = md5ii(b, c, d, a, x[i + 1], 21, -2054922799); + a = md5ii(a, b, c, d, x[i + 8], 6, 1873313359); + d = md5ii(d, a, b, c, x[i + 15], 10, -30611744); + c = md5ii(c, d, a, b, x[i + 6], 15, -1560198380); + b = md5ii(b, c, d, a, x[i + 13], 21, 1309151649); + a = md5ii(a, b, c, d, x[i + 4], 6, -145523070); + d = md5ii(d, a, b, c, x[i + 11], 10, -1120210379); + c = md5ii(c, d, a, b, x[i + 2], 15, 718787259); + b = md5ii(b, c, d, a, x[i + 9], 21, -343485551); + + a = safeAdd(a, olda); + b = safeAdd(b, oldb); + c = safeAdd(c, oldc); + d = safeAdd(d, oldd); + } + return [a, b, c, d]; +} + +/* +* Convert an array of little-endian words to a string +*/ +function binl2rstr(input) { + var i; + var output = ''; + var length32 = input.length * 32; + for (i = 0; i < length32; i += 8) { + output += String.fromCharCode((input[i >> 5] >>> (i % 32)) & 0xff); + } + return output; +} + +/* +* Convert a raw string to an array of little-endian words +* Characters >255 have their high-byte silently ignored. +*/ +function rstr2binl(input) { + var i; + var output = []; + output[(input.length >> 2) - 1] = undefined; + for (i = 0; i < output.length; i += 1) { + output[i] = 0; + } + var length8 = input.length * 8; + for (i = 0; i < length8; i += 8) { + output[i >> 5] |= (input.charCodeAt(i / 8) & 0xff) << (i % 32); + } + return output; +} + +/* +* Calculate the MD5 of a raw string +*/ +function rstrMD5(s) { + return binl2rstr(binlMD5(rstr2binl(s), s.length * 8)); +} + +/* +* Calculate the HMAC-MD5, of a key and some data (raw strings) +*/ +function rstrHMACMD5(key, data) { + var i; + var bkey = rstr2binl(key); + var ipad = []; + var opad = []; + var hash; + ipad[15] = opad[15] = undefined; + if (bkey.length > 16) { + bkey = binlMD5(bkey, key.length * 8); + } + for (i = 0; i < 16; i += 1) { + ipad[i] = bkey[i] ^ 0x36363636; + opad[i] = bkey[i] ^ 0x5c5c5c5c; + } + hash = binlMD5(ipad.concat(rstr2binl(data)), 512 + data.length * 8); + return binl2rstr(binlMD5(opad.concat(hash), 512 + 128)); +} + +/* +* Convert a raw string to a hex string +*/ +function rstr2hex(input) { + var hexTab = '0123456789abcdef'; + var output = ''; + var x; + var i; + for (i = 0; i < input.length; i += 1) { + x = input.charCodeAt(i); + output += hexTab.charAt((x >>> 4) & 0x0f) + hexTab.charAt(x & 0x0f); + } + return output; +} + +/* +* Encode a string as utf-8 +*/ +function str2rstrUTF8(input) { + return unescape(encodeURIComponent(input)); +} + +/* +* Take string arguments and return either raw or hex encoded strings +*/ +function rawMD5(s) { + return rstrMD5(str2rstrUTF8(s)); +} +function hexMD5(s) { + return rstr2hex(rawMD5(s)); +} +function rawHMACMD5(k, d) { + return rstrHMACMD5(str2rstrUTF8(k), str2rstrUTF8(d)); +} +function hexHMACMD5(k, d) { + return rstr2hex(rawHMACMD5(k, d)); +} + +function md5(string, key, raw) { + if (!key) { + if (!raw) { + return hexMD5(string); + } + return rawMD5(string); + } + if (!raw) { + return hexHMACMD5(key, string); + } + return rawHMACMD5(key, string); +} + +module.exports = md5; + +},{}]},{},[5,1])(5) +}); \ No newline at end of file diff --git a/packages/raven-js/dist/vue/raven.min.js b/packages/raven-js/dist/vue/raven.min.js new file mode 100644 index 000000000000..2da42258df50 --- /dev/null +++ b/packages/raven-js/dist/vue/raven.min.js @@ -0,0 +1,4 @@ +/*! Raven.js 3.25.2 (30b6d4e) | github.com/getsentry/raven-js */ +!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.Raven=a()}}(function(){return function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};b[g][0].call(k.exports,function(a){var c=b[g][1][a];return e(c?c:a)},k,k.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;g":"anonymous component")+(a._isVue&&a.$options.__file?" at "+a.$options.__file:"")}function e(a,b){if(b=b||window.Vue,b&&b.config){var c=b.config.errorHandler;b.config.errorHandler=function(b,e,f){var g={};"[object Object]"===Object.prototype.toString.call(e)&&(g.componentName=d(e),g.propsData=e.$options.propsData),"undefined"!=typeof f&&(g.lifecycleHook=f),a.captureException(b,{extra:g}),"function"==typeof c&&c.call(this,b,e,f)}}}b.exports=e,a(5).addPlugin(b.exports)},{5:5}],2:[function(a,b,c){function d(a){this.name="RavenConfigError",this.message=a}d.prototype=new Error,d.prototype.constructor=d,b.exports=d},{}],3:[function(a,b,c){var d=a(6),e=function(a,b,c){var e=a[b],f=a;if(b in a){var g="warn"===b?"warning":b;a[b]=function(){var a=[].slice.call(arguments),h=d.safeJoin(a," "),i={level:g,logger:"console",extra:{arguments:a}};"assert"===b?a[0]===!1&&(h="Assertion failed: "+(d.safeJoin(a.slice(1)," ")||"console.assert"),i.extra.arguments=a.slice(1),c&&c(h,i)):c&&c(h,i),e&&Function.prototype.apply.call(e,f,a)}}};b.exports={wrapMethod:e}},{6:6}],4:[function(a,b,c){(function(c){function d(){return+new Date}function e(a,b){return s(b)?function(c){return b(c,a)}:b}function f(){this.a=!("object"!=typeof JSON||!JSON.stringify),this.b=!r(S),this.c=!r(T),this.d=null,this.e=null,this.f=null,this.g=null,this.h=null,this.i=null,this.j={},this.k={release:R.SENTRY_RELEASE&&R.SENTRY_RELEASE.id,logger:"javascript",ignoreErrors:[],ignoreUrls:[],whitelistUrls:[],includePaths:[],headers:null,collectWindowErrors:!0,captureUnhandledRejections:!0,maxMessageLength:0,maxUrlLength:250,stackTraceLimit:50,autoBreadcrumbs:!0,instrument:!0,sampleRate:1,sanitizeKeys:[]},this.l={method:"POST",keepalive:!0,referrerPolicy:K()?"origin":""},this.m=0,this.n=!1,this.o=Error.stackTraceLimit,this.p=R.console||{},this.q={},this.r=[],this.s=d(),this.t=[],this.u=[],this.v=null,this.w=R.location,this.x=this.w&&this.w.href,this.y();for(var a in this.p)this.q[a]=this.p[a]}var g=a(7),h=a(8),i=a(9),j=a(2),k=a(6),l=k.isErrorEvent,m=k.isDOMError,n=k.isDOMException,o=k.isError,p=k.isObject,q=k.isPlainObject,r=k.isUndefined,s=k.isFunction,t=k.isString,u=k.isArray,v=k.isEmptyObject,w=k.each,x=k.objectMerge,y=k.truncate,z=k.objectFrozen,A=k.hasKey,B=k.joinRegExp,C=k.urlencode,D=k.uuid4,E=k.htmlTreeAsString,F=k.isSameException,G=k.isSameStacktrace,H=k.parseUrl,I=k.fill,J=k.supportsFetch,K=k.supportsReferrerPolicy,L=k.serializeKeysForMessage,M=k.serializeException,N=k.sanitize,O=a(3).wrapMethod,P="source protocol user pass host port path".split(" "),Q=/^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/,R="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},S=R.document,T=R.navigator;f.prototype={VERSION:"3.25.2",debug:!1,TraceKit:g,config:function(a,b){var c=this;if(c.g)return this.z("error","Error: Raven has already been configured"),c;if(!a)return c;var d=c.k;b&&w(b,function(a,b){"tags"===a||"extra"===a||"user"===a?c.j[a]=b:d[a]=b}),c.setDSN(a),d.ignoreErrors.push(/^Script error\.?$/),d.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/),d.ignoreErrors=B(d.ignoreErrors),d.ignoreUrls=!!d.ignoreUrls.length&&B(d.ignoreUrls),d.whitelistUrls=!!d.whitelistUrls.length&&B(d.whitelistUrls),d.includePaths=B(d.includePaths),d.maxBreadcrumbs=Math.max(0,Math.min(d.maxBreadcrumbs||100,100));var e={xhr:!0,console:!0,dom:!0,location:!0,sentry:!0},f=d.autoBreadcrumbs;"[object Object]"==={}.toString.call(f)?f=x(e,f):f!==!1&&(f=e),d.autoBreadcrumbs=f;var h={tryCatch:!0},i=d.instrument;return"[object Object]"==={}.toString.call(i)?i=x(h,i):i!==!1&&(i=h),d.instrument=i,g.collectWindowErrors=!!d.collectWindowErrors,c},install:function(){var a=this;return a.isSetup()&&!a.n&&(g.report.subscribe(function(){a.A.apply(a,arguments)}),a.k.captureUnhandledRejections&&a.B(),a.C(),a.k.instrument&&a.k.instrument.tryCatch&&a.D(),a.k.autoBreadcrumbs&&a.E(),a.F(),a.n=!0),Error.stackTraceLimit=a.k.stackTraceLimit,this},setDSN:function(a){var b=this,c=b.G(a),d=c.path.lastIndexOf("/"),e=c.path.substr(1,d);b.H=a,b.h=c.user,b.I=c.pass&&c.pass.substr(1),b.i=c.path.substr(d+1),b.g=b.J(c),b.K=b.g+"/"+e+"api/"+b.i+"/store/",this.y()},context:function(a,b,c){return s(a)&&(c=b||[],b=a,a=void 0),this.wrap(a,b).apply(this,c)},wrap:function(a,b,c){function d(){var d=[],f=arguments.length,g=!a||a&&a.deep!==!1;for(c&&s(c)&&c.apply(this,arguments);f--;)d[f]=g?e.wrap(a,arguments[f]):arguments[f];try{return b.apply(this,d)}catch(h){throw e.L(),e.captureException(h,a),h}}var e=this;if(r(b)&&!s(a))return a;if(s(a)&&(b=a,a=void 0),!s(b))return b;try{if(b.M)return b;if(b.N)return b.N}catch(f){return b}for(var g in b)A(b,g)&&(d[g]=b[g]);return d.prototype=b.prototype,b.N=d,d.M=!0,d.O=b,d},uninstall:function(){return g.report.uninstall(),this.P(),this.Q(),this.R(),this.S(),Error.stackTraceLimit=this.o,this.n=!1,this},T:function(a){this.z("debug","Raven caught unhandled promise rejection:",a),this.captureException(a.reason,{extra:{unhandledPromiseRejection:!0}})},B:function(){return this.T=this.T.bind(this),R.addEventListener&&R.addEventListener("unhandledrejection",this.T),this},P:function(){return R.removeEventListener&&R.removeEventListener("unhandledrejection",this.T),this},captureException:function(a,b){if(b=x({trimHeadFrames:0},b?b:{}),l(a)&&a.error)a=a.error;else{if(m(a)||n(a)){var c=a.name||(m(a)?"DOMError":"DOMException"),d=a.message?c+": "+a.message:c;return this.captureMessage(d,x(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}))}if(o(a))a=a;else{if(!q(a))return this.captureMessage(a,x(b,{stacktrace:!0,trimHeadFrames:b.trimHeadFrames+1}));b=this.U(b,a),a=new Error(b.message)}}this.d=a;try{var e=g.computeStackTrace(a);this.V(e,b)}catch(f){if(a!==f)throw f}return this},U:function(a,b){var c=Object.keys(b).sort(),d=x(a,{message:"Non-Error exception captured with keys: "+L(c),fingerprint:[i(c)],extra:a.extra||{}});return d.extra.W=M(b),d},captureMessage:function(a,b){if(!this.k.ignoreErrors.test||!this.k.ignoreErrors.test(a)){b=b||{},a+="";var c,d=x({message:a},b);try{throw new Error(a)}catch(e){c=e}c.name=null;var f=g.computeStackTrace(c),h=u(f.stack)&&f.stack[1];h&&"Raven.captureException"===h.func&&(h=f.stack[2]);var i=h&&h.url||"";if((!this.k.ignoreUrls.test||!this.k.ignoreUrls.test(i))&&(!this.k.whitelistUrls.test||this.k.whitelistUrls.test(i))){if(this.k.stacktrace||b&&b.stacktrace){d.fingerprint=null==d.fingerprint?a:d.fingerprint,b=x({trimHeadFrames:0},b),b.trimHeadFrames+=1;var j=this.X(f,b);d.stacktrace={frames:j.reverse()}}return d.fingerprint&&(d.fingerprint=u(d.fingerprint)?d.fingerprint:[d.fingerprint]),this.Y(d),this}}},captureBreadcrumb:function(a){var b=x({timestamp:d()/1e3},a);if(s(this.k.breadcrumbCallback)){var c=this.k.breadcrumbCallback(b);if(p(c)&&!v(c))b=c;else if(c===!1)return this}return this.u.push(b),this.u.length>this.k.maxBreadcrumbs&&this.u.shift(),this},addPlugin:function(a){var b=[].slice.call(arguments,1);return this.r.push([a,b]),this.n&&this.F(),this},setUserContext:function(a){return this.j.user=a,this},setExtraContext:function(a){return this.Z("extra",a),this},setTagsContext:function(a){return this.Z("tags",a),this},clearContext:function(){return this.j={},this},getContext:function(){return JSON.parse(h(this.j))},setEnvironment:function(a){return this.k.environment=a,this},setRelease:function(a){return this.k.release=a,this},setDataCallback:function(a){var b=this.k.dataCallback;return this.k.dataCallback=e(b,a),this},setBreadcrumbCallback:function(a){var b=this.k.breadcrumbCallback;return this.k.breadcrumbCallback=e(b,a),this},setShouldSendCallback:function(a){var b=this.k.shouldSendCallback;return this.k.shouldSendCallback=e(b,a),this},setTransport:function(a){return this.k.transport=a,this},lastException:function(){return this.d},lastEventId:function(){return this.f},isSetup:function(){return!!this.a&&(!!this.g||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this.z("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var a=R.RavenConfig;a&&this.config(a.dsn,a.config).install()},showReportDialog:function(a){if(S){a=a||{};var b=a.eventId||this.lastEventId();if(!b)throw new j("Missing eventId");var c=a.dsn||this.H;if(!c)throw new j("Missing DSN");var d=encodeURIComponent,e="";e+="?eventId="+d(b),e+="&dsn="+d(c);var f=a.user||this.j.user;f&&(f.name&&(e+="&name="+d(f.name)),f.email&&(e+="&email="+d(f.email)));var g=this.J(this.G(c)),h=S.createElement("script");h.async=!0,h.src=g+"/api/embed/error-page/"+e,(S.head||S.body).appendChild(h)}},L:function(){var a=this;this.m+=1,setTimeout(function(){a.m-=1})},$:function(a,b){var c,d;if(this.b){b=b||{},a="raven"+a.substr(0,1).toUpperCase()+a.substr(1),S.createEvent?(c=S.createEvent("HTMLEvents"),c.initEvent(a,!0,!0)):(c=S.createEventObject(),c.eventType=a);for(d in b)A(b,d)&&(c[d]=b[d]);if(S.createEvent)S.dispatchEvent(c);else try{S.fireEvent("on"+c.eventType.toLowerCase(),c)}catch(e){}}},_:function(a){var b=this;return function(c){if(b.aa=null,b.v!==c){b.v=c;var d;try{d=E(c.target)}catch(e){d=""}b.captureBreadcrumb({category:"ui."+a,message:d})}}},ba:function(){var a=this,b=1e3;return function(c){var d;try{d=c.target}catch(e){return}var f=d&&d.tagName;if(f&&("INPUT"===f||"TEXTAREA"===f||d.isContentEditable)){var g=a.aa;g||a._("input")(c),clearTimeout(g),a.aa=setTimeout(function(){a.aa=null},b)}}},ca:function(a,b){var c=H(this.w.href),d=H(b),e=H(a);this.x=b,c.protocol===d.protocol&&c.host===d.host&&(b=d.relative),c.protocol===e.protocol&&c.host===e.host&&(a=e.relative),this.captureBreadcrumb({category:"navigation",data:{to:b,from:a}})},C:function(){var a=this;a.da=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.M?a.da.apply(this.O,arguments):a.da.apply(this,arguments)}},Q:function(){this.da&&(Function.prototype.toString=this.da)},D:function(){function a(a){return function(b,d){for(var e=new Array(arguments.length),f=0;f2?arguments[2]:void 0;return c&&b.ca(b.x,c+""),a.apply(this,arguments)}};I(R.history,"pushState",j,d),I(R.history,"replaceState",j,d)}if(c.console&&"console"in R&&console.log){var k=function(a,c){b.captureBreadcrumb({message:a,level:c.level,category:"console"})};w(["debug","info","warn","error","log"],function(a,b){O(console,b,k)})}},R:function(){for(var a;this.t.length;){a=this.t.shift();var b=a[0],c=a[1],d=a[2];b[c]=d}},S:function(){for(var a in this.q)this.p[a]=this.q[a]},F:function(){var a=this;w(this.r,function(b,c){var d=c[0],e=c[1];d.apply(a,[a].concat(e))})},G:function(a){var b=Q.exec(a),c={},d=7;try{for(;d--;)c[P[d]]=b[d]||""}catch(e){throw new j("Invalid DSN: "+a)}if(c.pass&&!this.k.allowSecretKey)throw new j("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return c},J:function(a){var b="//"+a.host+(a.port?":"+a.port:"");return a.protocol&&(b=a.protocol+":"+b),b},A:function(){this.m||this.V.apply(this,arguments)},V:function(a,b){var c=this.X(a,b);this.$("handle",{stackInfo:a,options:b}),this.fa(a.name,a.message,a.url,a.lineno,c,b)},X:function(a,b){var c=this,d=[];if(a.stack&&a.stack.length&&(w(a.stack,function(b,e){var f=c.ga(e,a.url);f&&d.push(f)}),b&&b.trimHeadFrames))for(var e=0;e0&&(a.breadcrumbs={values:[].slice.call(this.u,0)}),this.j.user&&(a.user=this.j.user),b.environment&&(a.environment=b.environment),b.release&&(a.release=b.release),b.serverName&&(a.server_name=b.serverName),a=this.pa(a),Object.keys(a).forEach(function(b){(null==a[b]||""===a[b]||v(a[b]))&&delete a[b]}),s(b.dataCallback)&&(a=b.dataCallback(a)||a),a&&!v(a)&&(!s(b.shouldSendCallback)||b.shouldSendCallback(a)))return this.ma()?void this.z("warn","Raven dropped error due to backoff: ",a):void("number"==typeof b.sampleRate?Math.random() ",i=h.length;a&&f++1&&g+e.length*i+b.length>=d));)e.push(b),g+=b.length,a=a.parentNode;return e.reverse().join(h)}function F(a){var b,c,d,e,f,g=[];if(!a||!a.tagName)return"";if(g.push(a.tagName.toLowerCase()),a.id&&g.push("#"+a.id),b=a.className,b&&l(b))for(c=b.split(/\s+/),f=0;fc?Q(a,b-1):d}function R(a,b){if("number"==typeof a||"string"==typeof a)return a.toString();if(!Array.isArray(a))return"";if(a=a.filter(function(a){return"string"==typeof a}),0===a.length)return"[object has no keys]";if(b="number"!=typeof b?X:b,a[0].length>=b)return a[0];for(var c=a.length;c>0;c--){var d=a.slice(0,c).join(", ");if(!(d.length>b))return c===a.length?d:d+"…"}return""}function S(a,b){function c(a){return m(a)?a.map(function(a){return c(a)}):k(a)?Object.keys(a).reduce(function(b,d){return b[d]=e.test(d)?f:c(a[d]),b},{}):a}if(!m(b)||m(b)&&0===b.length)return a;var d,e=A(b),f="********";try{d=JSON.parse(T(a))}catch(g){return a}return c(d)}var T=a(8),U="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},V=3,W=51200,X=40;b.exports={isObject:d,isError:e,isErrorEvent:f,isDOMError:g,isDOMException:h,isUndefined:i,isFunction:j,isPlainObject:k,isString:l,isArray:m,isEmptyObject:n,supportsErrorEvent:o,supportsDOMError:p,supportsDOMException:q,supportsFetch:r,supportsReferrerPolicy:s,supportsPromiseRejectionEvent:t,wrappedCallback:u,each:v,objectMerge:w,truncate:y,objectFrozen:x,hasKey:z,joinRegExp:A,urlencode:B,uuid4:D,htmlTreeAsString:E,htmlElementAsString:F,isSameException:I,isSameStacktrace:J,parseUrl:C,fill:K,safeJoin:L,serializeException:Q,serializeKeysForMessage:R,sanitize:S}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{8:8}],7:[function(a,b,c){(function(c){function d(){return"undefined"==typeof document||null==document.location?"":document.location.href}function e(){return"undefined"==typeof document||null==document.location?"":(document.location.origin||(document.location.origin=document.location.protocol+"//"+document.location.hostname+(document.location.port?":"+document.location.port:"")),document.location.origin)}var f=a(6),g={collectWindowErrors:!0,debug:!1},h="undefined"!=typeof window?window:"undefined"!=typeof c?c:"undefined"!=typeof self?self:{},i=[].slice,j="?",k=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;g.report=function(){function a(a){m(),s.push(a)}function b(a){for(var b=s.length-1;b>=0;--b)s[b]===a&&s.splice(b,1)}function c(){n(),s=[]}function e(a,b){var c=null;if(!b||g.collectWindowErrors){for(var d in s)if(s.hasOwnProperty(d))try{s[d].apply(null,[a].concat(i.call(arguments,2)))}catch(e){c=e}if(c)throw c}}function l(a,b,c,h,i){var l=null,m=f.isErrorEvent(i)?i.error:i,n=f.isErrorEvent(a)?a.message:a;if(v)g.computeStackTrace.augmentStackTraceWithInitialElement(v,b,c,n),o();else if(m&&f.isError(m))l=g.computeStackTrace(m),e(l,!0);else{var p,r={url:b,line:c,column:h},s=void 0;if("[object String]"==={}.toString.call(n)){var p=n.match(k);p&&(s=p[1],n=p[2])}r.func=j,l={name:s,message:n,url:d(),stack:[r]},e(l,!0)}return!!q&&q.apply(this,arguments)}function m(){r||(q=h.onerror,h.onerror=l,r=!0)}function n(){r&&(h.onerror=q,r=!1,q=void 0)}function o(){var a=v,b=t;t=null,v=null,u=null,e.apply(null,[a,!1].concat(b))}function p(a,b){var c=i.call(arguments,1);if(v){if(u===a)return;o()}var d=g.computeStackTrace(a);if(v=d,u=a,t=c,setTimeout(function(){u===a&&o()},d.incomplete?2e3:0),b!==!1)throw a}var q,r,s=[],t=null,u=null,v=null;return p.subscribe=a,p.unsubscribe=b,p.uninstall=c,p}(),g.computeStackTrace=function(){function a(a){if("undefined"!=typeof a.stack&&a.stack){for(var b,c,f,g=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,h=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,i=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,k=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,l=/\((\S*)(?::(\d+))(?::(\d+))\)/,m=a.stack.split("\n"),n=[],o=(/^(.*) is undefined$/.exec(a.message),0),p=m.length;o eval")>-1;r&&(b=k.exec(c[3]))?(c[3]=b[1],c[4]=b[2],c[5]=null):0!==o||c[5]||"undefined"==typeof a.columnNumber||(n[0].column=a.columnNumber+1),f={url:c[3],func:c[1]||j,args:c[2]?c[2].split(","):[],line:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}if(!f.func&&f.line&&(f.func=j),f.url&&"blob:"===f.url.substr(0,5)){var s=new XMLHttpRequest;if(s.open("GET",f.url,!1),s.send(null),200===s.status){var t=s.responseText||"";t=t.slice(-300);var u=t.match(/\/\/# sourceMappingURL=(.*)$/);if(u){var v=u[1];"~"===v.charAt(0)&&(v=e()+v.slice(1)),f.url=v.slice(0,-4)}}}n.push(f)}return n.length?{name:a.name,message:a.message,url:d(),stack:n}:null}}function b(a,b,c,d){var e={url:b,line:c};if(e.url&&e.line){if(a.incomplete=!1,e.func||(e.func=j),a.stack.length>0&&a.stack[0].url===e.url){if(a.stack[0].line===e.line)return!1;if(!a.stack[0].line&&a.stack[0].func===e.func)return a.stack[0].line=e.line,!1}return a.stack.unshift(e),a.partial=!0,!0}return a.incomplete=!0,!1}function c(a,e){for(var h,i,k=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],m={},n=!1,o=c.caller;o&&!n;o=o.caller)if(o!==f&&o!==g.report){if(i={url:null,func:j,line:null,column:null},o.name?i.func=o.name:(h=k.exec(o.toString()))&&(i.func=h[1]), +"undefined"==typeof i.func)try{i.func=h.input.substring(0,h.input.indexOf("{"))}catch(p){}m[""+o]?n=!0:m[""+o]=!0,l.push(i)}e&&l.splice(0,e);var q={name:a.name,message:a.message,url:d(),stack:l};return b(q,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description),q}function f(b,e){var f=null;e=null==e?0:+e;try{if(f=a(b))return f}catch(h){if(g.debug)throw h}try{if(f=c(b,e+1))return f}catch(h){if(g.debug)throw h}return{name:b.name,message:b.message,url:d()}}return f.augmentStackTraceWithInitialElement=b,f.computeStackTraceFromStackProp=a,f}(),b.exports=g}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{6:6}],8:[function(a,b,c){function d(a,b){for(var c=0;c0){var i=d(c,this);~i?c.splice(i+1):c.push(this),~i?e.splice(i,1/0,g):e.push(g),~d(c,h)&&(h=b.call(this,g,h))}else c.push(h);return null==a?h instanceof Error?f(h):h:a.call(this,g,h)}}c=b.exports=e,c.getSerialize=g},{}],9:[function(a,b,c){function d(a,b){var c=(65535&a)+(65535&b),d=(a>>16)+(b>>16)+(c>>16);return d<<16|65535&c}function e(a,b){return a<>>32-b}function f(a,b,c,f,g,h){return d(e(d(d(b,a),d(f,h)),g),c)}function g(a,b,c,d,e,g,h){return f(b&c|~b&d,a,b,e,g,h)}function h(a,b,c,d,e,g,h){return f(b&d|c&~d,a,b,e,g,h)}function i(a,b,c,d,e,g,h){return f(b^c^d,a,b,e,g,h)}function j(a,b,c,d,e,g,h){return f(c^(b|~d),a,b,e,g,h)}function k(a,b){a[b>>5]|=128<>>9<<4)+14]=b;var c,e,f,k,l,m=1732584193,n=-271733879,o=-1732584194,p=271733878;for(c=0;c>5]>>>b%32&255);return c}function m(a){var b,c=[];for(c[(a.length>>2)-1]=void 0,b=0;b>5]|=(255&a.charCodeAt(b/8))<16&&(e=k(e,8*a.length)),c=0;c<16;c+=1)f[c]=909522486^e[c],g[c]=1549556828^e[c];return d=k(f.concat(m(b)),512+8*b.length),l(k(g.concat(d),640))}function p(a){var b,c,d="0123456789abcdef",e="";for(c=0;c>>4&15)+d.charAt(15&b);return e}function q(a){return unescape(encodeURIComponent(a))}function r(a){return n(q(a))}function s(a){return p(r(a))}function t(a,b){return o(q(a),q(b))}function u(a,b){return p(t(a,b))}function v(a,b,c){return b?c?t(b,a):u(b,a):c?r(a):s(a)}b.exports=v},{}]},{},[5,1])(5)}); +//# sourceMappingURL=raven.min.js.map \ No newline at end of file diff --git a/packages/raven-js/dist/vue/raven.min.js.map b/packages/raven-js/dist/vue/raven.min.js.map new file mode 100644 index 000000000000..595d441fbc6f --- /dev/null +++ b/packages/raven-js/dist/vue/raven.min.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["raven.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Raven","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","formatComponentName","vm","$root","name","_isVue","$options","_componentTag","__file","vuePlugin","Vue","config","_oldOnError","errorHandler","error","info","metaData","Object","prototype","toString","componentName","propsData","lifecycleHook","captureException","extra","addPlugin","5","2","RavenConfigError","message","constructor","3","utils","wrapMethod","console","level","callback","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","msg","safeJoin","data","logger","Function","apply","6","4","now","Date","keepOriginalCallback","original","isFunction","_hasJSON","JSON","stringify","_hasDocument","isUndefined","_document","_hasNavigator","_navigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","_window","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","sanitizeKeys","_fetchDefaults","method","keepalive","referrerPolicy","supportsReferrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_location","location","_lastHref","href","_resetBackoff","TraceKit","md5","isErrorEvent","isDOMError","isDOMException","isError","isObject","isPlainObject","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","serializeKeysForMessage","serializeException","sanitize","wrapConsoleMethod","dsnKeys","split","dsnPattern","document","navigator","VERSION","debug","dsn","options","_logDebug","globalOptions","key","value","setDSN","push","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","substr","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","context","func","undefined","wrap","_before","wrapped","deep","_ignoreNextOnError","__raven__","__raven_wrapper__","property","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","T","event","reason","unhandledPromiseRejection","B","_promiseRejectionHandler","bind","addEventListener","P","removeEventListener","ex","trimHeadFrames","captureMessage","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","U","currentOptions","exKeys","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","setDataCallback","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","L","setTimeout","$","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","_","evtName","_keypressTimeout","target","category","ba","debounceDuration","tagName","isContentEditable","timeout","_breadcrumbEventHandler","clearTimeout","ca","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","C","_originalFunctionToString","Q","D","wrapTimeFn","orig","fn","Array","originalCallback","wrapEventTarget","proto","hasOwnProperty","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","_keypressEventHandler","type","wrappedBuiltIns","requestAnimationFrame","cb","eventTargets","E","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","isChromePackagedApp","app","runtime","hasPushAndReplaceState","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","_captureUrlChange","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","R","builtin","S","F","installer","concat","G","str","m","exec","allowSecretKey","J","port","A","V","stackInfo","_triggerEvent","_processException","lineno","X","frame","_normalizeFrame","in_app","ga","stackInfoUrl","normalized","filename","line","colno","column","function","fa","prefixedMessage","exception","values","transaction","ha","request","Referer","breadcrumbs","_trimBreadcrumbs","ia","urlProp","urlProps","ja","httpData","userAgent","User-Agent","referrer","y","_backoffDuration","_backoffStart","ma","na","current","last","oa","_shouldBackoff","retry","get","getResponseHeader","parseInt","Y","baseData","project","platform","_getHttpData","serverName","server_name","_sanitizeData","forEach","random","_sendProcessedPayload","pa","ra","qa","_trimPacket","allowDuplicates","_isRepeatData","event_id","_getUuid","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","_setBackoffState","sa","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","hasCORS","XDomainRequest","replace","onload","onerror","open","setRequestHeader","send","ta","hash","evaluated","z","Z","setUser","setReleaseContext","7","8","9","RavenConstructor","_Raven","noConflict","Client","what","supportsErrorEvent","ErrorEvent","supportsDOMError","DOMError","supportsDOMException","DOMException","Headers","Response","supportsPromiseRejectionEvent","PromiseRejectionEvent","wrappedCallback","normalizedData","obj1","obj2","isFrozen","object","patterns","pattern","sources","len","source","RegExp","join","pairs","match","query","fragment","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","elem","nextStr","MAX_TRAVERSE_HEIGHT","MAX_OUTPUT_LEN","out","height","separator","sepLength","htmlElementAsString","parentNode","className","classes","attr","attrWhitelist","getAttribute","isOnlyOneTruthy","b","isBothUndefined","ex2","stack1","stack2","frames1","frames2","replacement","track","input","delimiter","output","String","utf8Length","encodeURI","jsonSize","serializeValue","maxLength","serializeObject","depth","reduce","acc","map","val","maxSize","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","serialized","filter","MAX_SERIALIZE_KEYS_LENGTH","usedKeys","sanitizeWorker","workerInput","k","sanitizeRegExp","sanitizeMask","safeInput","o_O","getLocationHref","getLocationOrigin","origin","hostname","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","handler","installGlobalHandler","handlers","unsubscribe","splice","unsubscribeAll","uninstallGlobalHandler","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","lastExceptionStack","augmentStackTraceWithInitialElement","processLastException","groups","_oldOnerrorHandler","_onErrorHandlerInstalled","_lastExceptionStack","_lastArgs","lastArgs","rethrow","incomplete","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","isEval","columnNumber","responseText","sourceMaps","sourceMapAddress","charAt","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","haystack","needle","replacer","spaces","cycleReplacer","serializer","stringifyError","thisPos","Infinity","getSerialize","safeAdd","x","lsw","msw","bitRotateLeft","cnt","md5cmn","q","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstrMD5","rstrHMACMD5","bkey","ipad","opad","rstr2hex","hexTab","str2rstrUTF8","unescape","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","string","raw"],"mappings":"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","file":"raven.min.js"} \ No newline at end of file diff --git a/yarn.lock b/yarn.lock index ee02a30bee18..97d95a0bedd1 100644 --- a/yarn.lock +++ b/yarn.lock @@ -61,6 +61,13 @@ version "4.3.1" resolved "https://registry.yarnpkg.com/@types/sinon/-/sinon-4.3.1.tgz#32458f9b166cd44c23844eee4937814276f35199" +JSONStream@^1.0.3: + version "1.3.3" + resolved "https://registry.yarnpkg.com/JSONStream/-/JSONStream-1.3.3.tgz#27b4b8fbbfeab4e71bcf551e7f27be8d952239bf" + dependencies: + jsonparse "^1.2.0" + through ">=2.2.7 <3" + JSONStream@^1.0.4: version "1.3.2" resolved "https://registry.yarnpkg.com/JSONStream/-/JSONStream-1.3.2.tgz#c102371b6ec3a7cf3b847ca00c20bb0fce4c6dea" @@ -93,7 +100,32 @@ acorn-globals@^4.1.0: dependencies: acorn "^5.0.0" -acorn@^4.0.4: +acorn-jsx@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-3.0.1.tgz#afdf9488fb1ecefc8348f6fb22f464e32a58b36b" + dependencies: + acorn "^3.0.4" + +acorn-node@^1.2.0, acorn-node@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/acorn-node/-/acorn-node-1.3.0.tgz#5f86d73346743810ef1269b901dbcbded020861b" + dependencies: + acorn "^5.4.1" + xtend "^4.0.1" + +acorn@^0.12.0: + version "0.12.0" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-0.12.0.tgz#337b0bb293dfd6239d7e66c92c727c56a08d403e" + +acorn@^1.0.3: + version "1.2.2" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-1.2.2.tgz#c8ce27de0acc76d896d2b1fad3df588d9e82f014" + +acorn@^3.0.4: + version "3.3.0" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-3.3.0.tgz#45e37fb39e8da3f25baee3ff5369e2bb5f22017a" + +acorn@^4.0.3, acorn@^4.0.4: version "4.0.13" resolved "https://registry.yarnpkg.com/acorn/-/acorn-4.0.13.tgz#105495ae5361d697bd195c825192e1ad7f253787" @@ -101,6 +133,10 @@ acorn@^5.0.0, acorn@^5.3.0: version "5.4.1" resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.4.1.tgz#fdc58d9d17f4a4e98d102ded826a9b9759125102" +acorn@^5.2.1, acorn@^5.4.1, acorn@^5.5.0: + version "5.6.2" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.6.2.tgz#b1da1d7be2ac1b4a327fb9eab851702c5045b4e7" + add-stream@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/add-stream/-/add-stream-1.0.0.tgz#6a7990437ca736d5e1288db92bd3266d5f5cb2aa" @@ -109,6 +145,10 @@ addressparser@1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/addressparser/-/addressparser-1.0.1.tgz#47afbe1a2a9262191db6838e4fd1d39b40821746" +adm-zip@~0.4.3: + version "0.4.11" + resolved "https://registry.yarnpkg.com/adm-zip/-/adm-zip-0.4.11.tgz#2aa54c84c4b01a9d0fb89bb11982a51f13e3d62a" + after@0.8.2: version "0.8.2" resolved "https://registry.yarnpkg.com/after/-/after-0.8.2.tgz#fedb394f9f0e02aa9768e702bda23b505fae7e1f" @@ -120,6 +160,16 @@ agent-base@2: extend "~3.0.0" semver "~5.0.1" +agent-base@^4.1.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-4.2.0.tgz#9838b5c3392b962bad031e6a4c5e1024abec45ce" + dependencies: + es6-promisify "^5.0.0" + +ajv-keywords@^2.1.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-2.1.1.tgz#617997fc5f60576894c435f940d819e135b80762" + ajv@^4.9.1: version "4.11.8" resolved "https://registry.yarnpkg.com/ajv/-/ajv-4.11.8.tgz#82ffb02b29e662ae53bdc20af15947706739c536" @@ -127,7 +177,7 @@ ajv@^4.9.1: co "^4.6.0" json-stable-stringify "^1.0.1" -ajv@^5.1.0: +ajv@^5.1.0, ajv@^5.2.3, ajv@^5.3.0: version "5.5.2" resolved "https://registry.yarnpkg.com/ajv/-/ajv-5.5.2.tgz#73b5eeca3fab653e3d3f9422b341ad42205dc965" dependencies: @@ -164,6 +214,10 @@ ansi-cyan@^0.1.1: dependencies: ansi-wrap "0.1.0" +ansi-escapes@^1.0.0, ansi-escapes@^1.1.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-1.4.0.tgz#d3a8a83b319aa67793662b13e761c7911422306e" + ansi-escapes@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.0.0.tgz#ec3e8b4e9f8064fc02c3ac9b65f1c275bda8ef92" @@ -210,6 +264,10 @@ anymatch@^2.0.0: micromatch "^3.1.4" normalize-path "^2.1.1" +app-root-path@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/app-root-path/-/app-root-path-2.0.1.tgz#cd62dcf8e4fd5a417efc664d2e5b10653c651b46" + append-transform@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/append-transform/-/append-transform-0.4.0.tgz#d76ebf8ca94d276e247a36bad44a4b74ab611991" @@ -220,6 +278,30 @@ aproba@^1.0.3: version "1.2.0" resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" +archiver-utils@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/archiver-utils/-/archiver-utils-1.3.0.tgz#e50b4c09c70bf3d680e32ff1b7994e9f9d895174" + dependencies: + glob "^7.0.0" + graceful-fs "^4.1.0" + lazystream "^1.0.0" + lodash "^4.8.0" + normalize-path "^2.0.0" + readable-stream "^2.0.0" + +archiver@2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/archiver/-/archiver-2.1.1.tgz#ff662b4a78201494a3ee544d3a33fe7496509ebc" + dependencies: + archiver-utils "^1.3.0" + async "^2.0.0" + buffer-crc32 "^0.2.1" + glob "^7.0.0" + lodash "^4.8.0" + readable-stream "^2.0.0" + tar-stream "^1.5.0" + zip-stream "^1.2.0" + are-we-there-yet@~1.1.2: version "1.1.4" resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.4.tgz#bb5dca382bb94f05e15194373d16fd3ba1ca110d" @@ -233,6 +315,13 @@ argparse@^1.0.7: dependencies: sprintf-js "~1.0.2" +"argparse@~ 0.1.11": + version "0.1.16" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-0.1.16.tgz#cfd01e0fbba3d6caed049fbd758d40f65196f57c" + dependencies: + underscore "~1.7.0" + underscore.string "~2.4.0" + arr-diff@^1.0.1: version "1.1.0" resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-1.1.0.tgz#687c32758163588fef7de7b36fabe495eb1a399a" @@ -308,11 +397,15 @@ array-unique@^0.3.2: version "0.3.2" resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" +arraybuffer.slice@0.0.6: + version "0.0.6" + resolved "https://registry.yarnpkg.com/arraybuffer.slice/-/arraybuffer.slice-0.0.6.tgz#f33b2159f0532a3f3107a272c0ccfbd1ad2979ca" + arraybuffer.slice@~0.0.7: version "0.0.7" resolved "https://registry.yarnpkg.com/arraybuffer.slice/-/arraybuffer.slice-0.0.7.tgz#3bbc4275dd584cc1b10809b89d4e8b63a69e7675" -arrify@^1.0.1: +arrify@^1.0.0, arrify@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" @@ -336,12 +429,18 @@ assert-plus@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-0.2.0.tgz#d74e1b87e7affc0db8aadb7021f3fe48101ab234" -assert@^1.4.1: +assert@^1.4.0, assert@^1.4.1: version "1.4.1" resolved "https://registry.yarnpkg.com/assert/-/assert-1.4.1.tgz#99912d591836b5a6f5b345c0f07eefc08fc65d91" dependencies: util "0.10.3" +assert@~1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/assert/-/assert-1.3.0.tgz#03939a622582a812cc202320a0b9a56c9b815849" + dependencies: + util "0.10.3" + assertion-error@^1.0.1: version "1.1.0" resolved "https://registry.yarnpkg.com/assertion-error/-/assertion-error-1.1.0.tgz#e60b6b0e8f301bd97e5375215bda406c85118c0b" @@ -358,6 +457,12 @@ astral-regex@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-1.0.0.tgz#6c8c3fb827dd43ee3918f27b82782ab7658a6fd9" +astw@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/astw/-/astw-2.2.0.tgz#7bd41784d32493987aeb239b6b4e1c57a873b917" + dependencies: + acorn "^4.0.3" + async-each@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.1.tgz#19d386a1d9edc6e7c1c85d388aedbcc56d33602d" @@ -370,12 +475,40 @@ async@1.x, async@^1.4.0, async@^1.5.0: version "1.5.2" resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a" +async@2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/async/-/async-2.0.1.tgz#b709cc0280a9c36f09f4536be823c838a9049e25" + dependencies: + lodash "^4.8.0" + +async@^0.9.0, async@~0.9.0: + version "0.9.2" + resolved "https://registry.yarnpkg.com/async/-/async-0.9.2.tgz#aea74d5e61c1f899613bf64bda66d4c78f2fd17d" + +async@^2.0.0, async@^2.1.2: + version "2.6.1" + resolved "https://registry.yarnpkg.com/async/-/async-2.6.1.tgz#b245a23ca71930044ec53fa46aa00a3e87c6a610" + dependencies: + lodash "^4.17.10" + async@^2.1.4: version "2.6.0" resolved "https://registry.yarnpkg.com/async/-/async-2.6.0.tgz#61a29abb6fcc026fea77e56d1c6ec53a795951f4" dependencies: lodash "^4.14.0" +async@~0.1.22: + version "0.1.22" + resolved "https://registry.yarnpkg.com/async/-/async-0.1.22.tgz#0fc1aaa088a0e3ef0ebe2d8831bab0dcf8845061" + +async@~0.2.6: + version "0.2.10" + resolved "https://registry.yarnpkg.com/async/-/async-0.2.10.tgz#b6bbe0b0674b9d719708ca38de8c237cb526c3d1" + +async@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/async/-/async-1.0.0.tgz#f8fc04ca3a13784ade9e1641af98578cfbd647a9" + async@~2.1.2: version "2.1.5" resolved "https://registry.yarnpkg.com/async/-/async-2.1.5.tgz#e587c68580994ac67fc56ff86d3ac56bdbe810bc" @@ -402,12 +535,19 @@ aws4@^1.2.1, aws4@^1.6.0: version "1.6.0" resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.6.0.tgz#83ef5ca860b2b32e4a0deedee8c771b9db57471e" -axios@^0.15.3: +axios@0.15.3, axios@^0.15.3: version "0.15.3" resolved "https://registry.yarnpkg.com/axios/-/axios-0.15.3.tgz#2c9d638b2e191a08ea1d6cc988eadd6ba5bdc053" dependencies: follow-redirects "1.0.0" +axios@^0.16.2: + version "0.16.2" + resolved "https://registry.yarnpkg.com/axios/-/axios-0.16.2.tgz#ba4f92f17167dfbab40983785454b9ac149c3c6d" + dependencies: + follow-redirects "^1.2.3" + is-buffer "^1.1.5" + babel-code-frame@^6.22.0, babel-code-frame@^6.26.0: version "6.26.0" resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.26.0.tgz#63fd43f7dc1e3bb7ce35947db8fe369a3f58c74b" @@ -522,6 +662,14 @@ babel-plugin-transform-strict-mode@^6.24.1: babel-runtime "^6.22.0" babel-types "^6.24.1" +babel-polyfill@6.23.0: + version "6.23.0" + resolved "https://registry.yarnpkg.com/babel-polyfill/-/babel-polyfill-6.23.0.tgz#8364ca62df8eafb830499f699177466c3b03499d" + dependencies: + babel-runtime "^6.22.0" + core-js "^2.4.0" + regenerator-runtime "^0.10.0" + babel-preset-jest@^22.4.0: version "22.4.1" resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-22.4.1.tgz#efa2e5f5334242a9457a068452d7d09735db172a" @@ -604,6 +752,10 @@ base64-arraybuffer@0.1.5: version "0.1.5" resolved "https://registry.yarnpkg.com/base64-arraybuffer/-/base64-arraybuffer-0.1.5.tgz#73926771923b5a19747ad666aa5cd4bf9c6e9ce8" +base64-js@0.0.8: + version "0.0.8" + resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-0.0.8.tgz#1101e9544f4a76b1bc3b26d452ca96d7a35e7978" + base64-js@^1.0.2: version "1.2.1" resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.2.1.tgz#a91947da1f4a516ea38e5b4ec0ec3773675e0886" @@ -646,6 +798,13 @@ bitsyntax@~0.0.4: dependencies: buffer-more-ints "0.0.2" +bl@^1.0.0: + version "1.2.2" + resolved "https://registry.yarnpkg.com/bl/-/bl-1.2.2.tgz#a160911717103c07410cef63ef51b397c025af9c" + dependencies: + readable-stream "^2.3.5" + safe-buffer "^5.1.1" + bl@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/bl/-/bl-1.1.2.tgz#fdca871a99713aa00d19e3bbba41c44787a65398" @@ -662,7 +821,7 @@ block-stream@*: dependencies: inherits "~2.0.0" -bluebird@^3.3.0, bluebird@^3.4.6: +bluebird@^3.3.0, bluebird@^3.4.1, bluebird@^3.4.6: version "3.5.1" resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.1.tgz#d9551f9de98f1fcda1e683d17ee91a0602ee2eb9" @@ -703,6 +862,13 @@ boom@5.x.x: dependencies: hoek "4.x.x" +brace-expansion@^1.0.0: + version "1.1.11" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" + dependencies: + balanced-match "^1.0.0" + concat-map "0.0.1" + brace-expansion@^1.1.7: version "1.1.8" resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.8.tgz#c07b211c7c952ec1f8efd51a77ef0d1d3990a292" @@ -744,20 +910,54 @@ brorand@^1.0.1: version "1.1.0" resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" +browser-pack@^5.0.0, browser-pack@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/browser-pack/-/browser-pack-5.0.1.tgz#4197719b20c6e0aaa09451c5111e53efb6fbc18d" + dependencies: + JSONStream "^1.0.3" + combine-source-map "~0.6.1" + defined "^1.0.0" + through2 "^1.0.0" + umd "^3.0.0" + +browser-pack@^6.0.0, browser-pack@^6.0.1: + version "6.1.0" + resolved "https://registry.yarnpkg.com/browser-pack/-/browser-pack-6.1.0.tgz#c34ba10d0b9ce162b5af227c7131c92c2ecd5774" + dependencies: + JSONStream "^1.0.3" + combine-source-map "~0.8.0" + defined "^1.0.0" + safe-buffer "^5.1.1" + through2 "^2.0.0" + umd "^3.0.0" + browser-process-hrtime@^0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/browser-process-hrtime/-/browser-process-hrtime-0.1.2.tgz#425d68a58d3447f02a04aa894187fce8af8b7b8e" -browser-resolve@^1.11.0, browser-resolve@^1.11.2: +browser-resolve@^1.11.0, browser-resolve@^1.11.2, browser-resolve@^1.7.0, browser-resolve@^1.7.1: version "1.11.2" resolved "https://registry.yarnpkg.com/browser-resolve/-/browser-resolve-1.11.2.tgz#8ff09b0a2c421718a1051c260b32e48f442938ce" dependencies: resolve "1.1.7" +browser-stdout@1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/browser-stdout/-/browser-stdout-1.3.0.tgz#f351d32969d32fa5d7a5567154263d928ae3bd1f" + browser-stdout@1.3.1: version "1.3.1" resolved "https://registry.yarnpkg.com/browser-stdout/-/browser-stdout-1.3.1.tgz#baa559ee14ced73452229bad7326467c61fabd60" +browser-unpack@^1.1.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/browser-unpack/-/browser-unpack-1.2.0.tgz#357aee31fc467831684d063e4355e070a782970d" + dependencies: + acorn "^4.0.3" + browser-pack "^5.0.1" + concat-stream "^1.5.0" + minimist "^1.1.1" + browserify-aes@^1.0.0, browserify-aes@^1.0.4: version "1.1.1" resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.1.1.tgz#38b7ab55edb806ff2dcda1a7f1620773a477c49f" @@ -804,18 +1004,161 @@ browserify-sign@^4.0.0: inherits "^2.0.1" parse-asn1 "^5.0.0" -browserify-zlib@^0.2.0: +browserify-versionify@^1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/browserify-versionify/-/browserify-versionify-1.0.6.tgz#ab2dc61d6a119e627bec487598d1983b7fdb275e" + dependencies: + find-root "^0.1.1" + through2 "0.6.3" + +browserify-zlib@^0.2.0, browserify-zlib@~0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/browserify-zlib/-/browserify-zlib-0.2.0.tgz#2869459d9aa3be245fe8fe2ca1f46e2e7f54d73f" dependencies: pako "~1.0.5" +browserify-zlib@~0.1.2: + version "0.1.4" + resolved "https://registry.yarnpkg.com/browserify-zlib/-/browserify-zlib-0.1.4.tgz#bb35f8a519f600e0fa6b8485241c979d0141fb2d" + dependencies: + pako "~0.2.0" + +browserify@^11.0.1: + version "11.2.0" + resolved "https://registry.yarnpkg.com/browserify/-/browserify-11.2.0.tgz#a11bb9dd209d79572b813f7eeeaf828a5f5c0e4e" + dependencies: + JSONStream "^1.0.3" + assert "~1.3.0" + browser-pack "^5.0.0" + browser-resolve "^1.7.1" + browserify-zlib "~0.1.2" + buffer "^3.0.0" + builtins "~0.0.3" + commondir "0.0.1" + concat-stream "~1.4.1" + console-browserify "^1.1.0" + constants-browserify "~0.0.1" + crypto-browserify "^3.0.0" + defined "^1.0.0" + deps-sort "^1.3.7" + domain-browser "~1.1.0" + duplexer2 "~0.0.2" + events "~1.0.0" + glob "^4.0.5" + has "^1.0.0" + htmlescape "^1.1.0" + https-browserify "~0.0.0" + inherits "~2.0.1" + insert-module-globals "^6.4.1" + isarray "0.0.1" + labeled-stream-splicer "^1.0.0" + module-deps "^3.7.11" + os-browserify "~0.1.1" + parents "^1.0.1" + path-browserify "~0.0.0" + process "~0.11.0" + punycode "^1.3.2" + querystring-es3 "~0.2.0" + read-only-stream "^1.1.1" + readable-stream "^2.0.2" + resolve "^1.1.4" + shasum "^1.0.0" + shell-quote "~0.0.1" + stream-browserify "^2.0.0" + stream-http "^1.2.0" + string_decoder "~0.10.0" + subarg "^1.0.0" + syntax-error "^1.1.1" + through2 "^1.0.0" + timers-browserify "^1.0.1" + tty-browserify "~0.0.0" + url "~0.10.1" + util "~0.10.1" + vm-browserify "~0.0.1" + xtend "^4.0.0" + +browserify@^16.1.0: + version "16.2.2" + resolved "https://registry.yarnpkg.com/browserify/-/browserify-16.2.2.tgz#4b1f66ba0e54fa39dbc5aa4be9629142143d91b0" + dependencies: + JSONStream "^1.0.3" + assert "^1.4.0" + browser-pack "^6.0.1" + browser-resolve "^1.11.0" + browserify-zlib "~0.2.0" + buffer "^5.0.2" + cached-path-relative "^1.0.0" + concat-stream "^1.6.0" + console-browserify "^1.1.0" + constants-browserify "~1.0.0" + crypto-browserify "^3.0.0" + defined "^1.0.0" + deps-sort "^2.0.0" + domain-browser "^1.2.0" + duplexer2 "~0.1.2" + events "^2.0.0" + glob "^7.1.0" + has "^1.0.0" + htmlescape "^1.1.0" + https-browserify "^1.0.0" + inherits "~2.0.1" + insert-module-globals "^7.0.0" + labeled-stream-splicer "^2.0.0" + mkdirp "^0.5.0" + module-deps "^6.0.0" + os-browserify "~0.3.0" + parents "^1.0.1" + path-browserify "~0.0.0" + process "~0.11.0" + punycode "^1.3.2" + querystring-es3 "~0.2.0" + read-only-stream "^2.0.0" + readable-stream "^2.0.2" + resolve "^1.1.4" + shasum "^1.0.0" + shell-quote "^1.6.1" + stream-browserify "^2.0.0" + stream-http "^2.0.0" + string_decoder "^1.1.1" + subarg "^1.0.0" + syntax-error "^1.1.1" + through2 "^2.0.0" + timers-browserify "^1.0.1" + tty-browserify "0.0.1" + url "~0.11.0" + util "~0.10.1" + vm-browserify "^1.0.0" + xtend "^4.0.0" + bser@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/bser/-/bser-2.0.0.tgz#9ac78d3ed5d915804fd87acb158bc797147a1719" dependencies: node-int64 "^0.4.0" +buffer-alloc-unsafe@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz#bd7dc26ae2972d0eda253be061dba992349c19f0" + +buffer-alloc@^1.1.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/buffer-alloc/-/buffer-alloc-1.2.0.tgz#890dd90d923a873e08e10e5fd51a57e5b7cce0ec" + dependencies: + buffer-alloc-unsafe "^1.1.0" + buffer-fill "^1.0.0" + +buffer-crc32@^0.2.1: + version "0.2.13" + resolved "https://registry.yarnpkg.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz#0d333e3f00eac50aa1454abd30ef8c2a5d9a7242" + +buffer-fill@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/buffer-fill/-/buffer-fill-1.0.0.tgz#f8f78b76789888ef39f205cd637f68e702122b2c" + +buffer-from@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.0.tgz#87fcaa3a298358e0ade6e442cfce840740d1ad04" + buffer-more-ints@0.0.2: version "0.0.2" resolved "https://registry.yarnpkg.com/buffer-more-ints/-/buffer-more-ints-0.0.2.tgz#26b3885d10fa13db7fc01aae3aab870199e0124c" @@ -824,13 +1167,36 @@ buffer-xor@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9" -buffer@^5.0.6: +buffer@^3.0.0: + version "3.6.0" + resolved "https://registry.yarnpkg.com/buffer/-/buffer-3.6.0.tgz#a72c936f77b96bf52f5f7e7b467180628551defb" + dependencies: + base64-js "0.0.8" + ieee754 "^1.1.4" + isarray "^1.0.0" + +buffer@^5.0.2, buffer@^5.0.6: version "5.1.0" resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.1.0.tgz#c913e43678c7cb7c8bd16afbcddb6c5505e8f9fe" dependencies: base64-js "^1.0.2" ieee754 "^1.1.4" +build@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/build/-/build-0.1.4.tgz#707fe026ffceddcacbfdcdf356eafda64f151046" + dependencies: + cssmin "0.3.x" + jsmin "1.x" + jxLoader "*" + moo-server "*" + promised-io "*" + timespan "2.x" + uglify-js "1.x" + walker "1.x" + winston "*" + wrench "1.3.x" + buildmail@4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/buildmail/-/buildmail-4.0.1.tgz#877f7738b78729871c9a105e3b837d2be11a7a72" @@ -851,15 +1217,49 @@ builtin-modules@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-2.0.0.tgz#60b7ef5ae6546bd7deefa74b08b62a43a232648e" +builtin-status-codes@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-1.0.0.tgz#30637ee262978ac07174e16d7f82f0ad06e085ad" + builtin-status-codes@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8" +builtins@~0.0.3: + version "0.0.7" + resolved "https://registry.yarnpkg.com/builtins/-/builtins-0.0.7.tgz#355219cd6cf18dbe7c01cc7fd2dce765cfdc549a" + +bundle-collapser@^1.2.1: + version "1.3.0" + resolved "https://registry.yarnpkg.com/bundle-collapser/-/bundle-collapser-1.3.0.tgz#f4b4ff58b2f22ee7701b20fa76306e23f53a3fb6" + dependencies: + browser-pack "^5.0.1" + browser-unpack "^1.1.0" + concat-stream "^1.5.0" + falafel "^2.1.0" + minimist "^1.1.1" + through2 "^2.0.0" + +bundlesize@^0.15.2: + version "0.15.3" + resolved "https://registry.yarnpkg.com/bundlesize/-/bundlesize-0.15.3.tgz#5cf7a48c11fd2835cfc9112e24429bb47c086ca8" + dependencies: + axios "^0.16.2" + bytes "^3.0.0" + ci-env "^1.4.0" + commander "^2.11.0" + github-build "^1.2.0" + glob "^7.1.2" + gzip-size "^4.0.0" + opencollective "^1.0.3" + prettycli "^1.4.3" + read-pkg-up "^2.0.0" + byline@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/byline/-/byline-5.0.0.tgz#741c5216468eadc457b03410118ad77de8c1ddb1" -bytes@3.0.0: +bytes@3.0.0, bytes@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048" @@ -877,16 +1277,30 @@ cache-base@^1.0.1: union-value "^1.0.0" unset-value "^1.0.0" +cached-path-relative@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/cached-path-relative/-/cached-path-relative-1.0.1.tgz#d09c4b52800aa4c078e2dd81a869aac90d2e54e7" + caller-id@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/caller-id/-/caller-id-0.1.0.tgz#59bdac0893d12c3871408279231f97458364f07b" dependencies: stack-trace "~0.0.7" +caller-path@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/caller-path/-/caller-path-0.1.0.tgz#94085ef63581ecd3daa92444a8fe94e82577751f" + dependencies: + callsites "^0.2.0" + callsite@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/callsite/-/callsite-1.0.0.tgz#280398e5d664bd74038b6f0905153e6e8af1bc20" +callsites@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/callsites/-/callsites-0.2.0.tgz#afab96262910a7f33c19a5775825c69f34e350ca" + callsites@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/callsites/-/callsites-2.0.0.tgz#06eb84f00eea413da86affefacbffb36093b3c50" @@ -902,7 +1316,7 @@ camelcase@^1.0.2: version "1.2.1" resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-1.2.1.tgz#9bb5304d2e0b56698b2c758b08a3eaa9daa58a39" -camelcase@^2.0.0: +camelcase@^2.0.0, camelcase@^2.0.1: version "2.1.1" resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-2.1.1.tgz#7c1d16d679a1bbe59ca02cacecfb011e201f5a1f" @@ -929,7 +1343,7 @@ center-align@^0.1.1: align-text "^0.1.3" lazy-cache "^1.0.3" -chai@^4.1.2: +chai@^4.1.1, chai@^4.1.2: version "4.1.2" resolved "https://registry.yarnpkg.com/chai/-/chai-4.1.2.tgz#0f64584ba642f0f2ace2806279f4f06ca23ad73c" dependencies: @@ -940,7 +1354,7 @@ chai@^4.1.2: pathval "^1.0.0" type-detect "^4.0.0" -chalk@^1.1.1, chalk@^1.1.3: +chalk@1.1.3, chalk@^1.0.0, chalk@^1.1.1, chalk@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" dependencies: @@ -950,6 +1364,14 @@ chalk@^1.1.1, chalk@^1.1.3: strip-ansi "^3.0.0" supports-color "^2.0.0" +chalk@2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.1.0.tgz#ac5becf14fa21b99c6c92ca7a7d7cfd5b17e743e" + dependencies: + ansi-styles "^3.1.0" + escape-string-regexp "^1.0.5" + supports-color "^4.0.0" + chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0, chalk@^2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.3.0.tgz#b5ea48efc9c1793dccc9b4767c93914d3f2d52ba" @@ -970,7 +1392,7 @@ check-error@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/check-error/-/check-error-1.0.2.tgz#574d312edd88bb5dd8912e9286dd6c0aed4aac82" -chokidar@^1.4.1, chokidar@^1.6.0: +chokidar@^1.0.0, chokidar@^1.4.1, chokidar@^1.6.0: version "1.7.0" resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-1.7.0.tgz#798e689778151c8076b4b360e5edd28cda2bb468" dependencies: @@ -1003,6 +1425,10 @@ chokidar@^2.0.0: optionalDependencies: fsevents "^1.0.0" +ci-env@^1.4.0: + version "1.6.1" + resolved "https://registry.yarnpkg.com/ci-env/-/ci-env-1.6.1.tgz#3e3ef4fc528a2825397f912cfa30cde17ec364cc" + ci-info@^1.0.0: version "1.1.2" resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-1.1.2.tgz#03561259db48d0474c8bdc90f5b47b068b6bbfb4" @@ -1014,6 +1440,10 @@ cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: inherits "^2.0.1" safe-buffer "^5.0.1" +circular-json@^0.3.1: + version "0.3.3" + resolved "https://registry.yarnpkg.com/circular-json/-/circular-json-0.3.3.tgz#815c99ea84f6809529d2f45791bdf82711352d66" + circular-json@^0.5.1: version "0.5.1" resolved "https://registry.yarnpkg.com/circular-json/-/circular-json-0.5.1.tgz#b8942a09e535863dc21b04417a91971e1d9cd91f" @@ -1027,12 +1457,29 @@ class-utils@^0.3.5: isobject "^3.0.0" static-extend "^0.1.1" +cli-cursor@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-1.0.2.tgz#64da3f7d56a54412e59794bd62dc35295e8f2987" + dependencies: + restore-cursor "^1.0.1" + cli-cursor@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5" dependencies: restore-cursor "^2.0.0" +cli-spinners@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-0.1.2.tgz#bb764d88e185fb9e1e6a2a1f19772318f605e31c" + +cli-truncate@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/cli-truncate/-/cli-truncate-0.2.1.tgz#9f15cfbb0705005369216c626ac7d05ab90dd574" + dependencies: + slice-ansi "0.0.4" + string-width "^1.0.1" + cli-width@^2.0.0: version "2.2.0" resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.2.0.tgz#ff19ede8a9a5e579324147b0c11f0fbcbabed639" @@ -1045,7 +1492,7 @@ cliui@^2.1.0: right-align "^0.1.1" wordwrap "0.0.2" -cliui@^3.2.0: +cliui@^3.0.3, cliui@^3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/cliui/-/cliui-3.2.0.tgz#120601537a916d29940f934da3b48d585a39213d" dependencies: @@ -1084,6 +1531,10 @@ code-point-at@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" +coffee-script@~1.3.3: + version "1.3.3" + resolved "https://registry.yarnpkg.com/coffee-script/-/coffee-script-1.3.3.tgz#150d6b4cb522894369efed6a2101c20bc7f4a4f4" + collection-visit@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0" @@ -1101,10 +1552,18 @@ color-name@^1.1.1: version "1.1.3" resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" +colors@1.0.x: + version "1.0.3" + resolved "https://registry.yarnpkg.com/colors/-/colors-1.0.3.tgz#0433f44d809680fdeb60ed260f1b0c262e82a40b" + colors@^1.1.0: version "1.1.2" resolved "https://registry.yarnpkg.com/colors/-/colors-1.1.2.tgz#168a4701756b6a7f51a12ce0c97bfa28c084ed63" +colors@~0.6.0, colors@~0.6.2: + version "0.6.2" + resolved "https://registry.yarnpkg.com/colors/-/colors-0.6.2.tgz#2423fe6678ac0c5dae8852e5d0e5be08c997abcc" + columnify@^1.5.4: version "1.5.4" resolved "https://registry.yarnpkg.com/columnify/-/columnify-1.5.4.tgz#4737ddf1c7b69a8a7c340570782e947eec8e78bb" @@ -1118,7 +1577,7 @@ combine-lists@^1.0.0: dependencies: lodash "^4.5.0" -combine-source-map@^0.8.0: +combine-source-map@^0.8.0, combine-source-map@~0.8.0: version "0.8.0" resolved "https://registry.yarnpkg.com/combine-source-map/-/combine-source-map-0.8.0.tgz#a58d0df042c186fcf822a8e8015f5450d2d79a8b" dependencies: @@ -1127,6 +1586,15 @@ combine-source-map@^0.8.0: lodash.memoize "~3.0.3" source-map "~0.5.3" +combine-source-map@~0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/combine-source-map/-/combine-source-map-0.6.1.tgz#9b4a09c316033d768e0f11e029fa2730e079ad96" + dependencies: + convert-source-map "~1.1.0" + inline-source-map "~0.5.0" + lodash.memoize "~3.0.3" + source-map "~0.4.2" + combined-stream@^1.0.5, combined-stream@~1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.5.tgz#938370a57b4a51dea2c77c15d5c5fdf895164009" @@ -1141,10 +1609,24 @@ commander@2.11.0: version "2.11.0" resolved "https://registry.yarnpkg.com/commander/-/commander-2.11.0.tgz#157152fd1e7a6c8d98a5b715cf376df928004563" +commander@2.9.0: + version "2.9.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.9.0.tgz#9c99094176e12240cb22d6c5146098400fe0f7d4" + dependencies: + graceful-readlink ">= 1.0.0" + +commander@^2.11.0: + version "2.15.1" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.15.1.tgz#df46e867d0fc2aec66a34662b406a9ccafff5b0f" + commander@^2.12.1, commander@^2.9.0, commander@~2.13.0: version "2.13.0" resolved "https://registry.yarnpkg.com/commander/-/commander-2.13.0.tgz#6964bca67685df7c1f1430c584f07d7597885b9c" +commondir@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/commondir/-/commondir-0.0.1.tgz#89f00fdcd51b519c578733fec563e6a6da7f5be2" + compare-func@^1.3.1: version "1.3.2" resolved "https://registry.yarnpkg.com/compare-func/-/compare-func-1.3.2.tgz#99dd0ba457e1f9bc722b12c08ec33eeab31fa648" @@ -1156,7 +1638,11 @@ component-bind@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/component-bind/-/component-bind-1.0.0.tgz#00c608ab7dcd93897c0009651b1d3a8e1e73bbd1" -component-emitter@1.2.1, component-emitter@^1.2.1: +component-emitter@1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.1.2.tgz#296594f2753daa63996d2af08d15a95116c9aec3" + +component-emitter@1.2.1, component-emitter@^1.2.1, component-emitter@~1.2.0: version "1.2.1" resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.2.1.tgz#137918d6d78283f7df7a6b7c5a63e140e69425e6" @@ -1164,6 +1650,15 @@ component-inherit@0.0.3: version "0.0.3" resolved "https://registry.yarnpkg.com/component-inherit/-/component-inherit-0.0.3.tgz#645fc4adf58b72b649d5cae65135619db26ff143" +compress-commons@^1.2.0: + version "1.2.2" + resolved "https://registry.yarnpkg.com/compress-commons/-/compress-commons-1.2.2.tgz#524a9f10903f3a813389b0225d27c48bb751890f" + dependencies: + buffer-crc32 "^0.2.1" + crc32-stream "^2.0.0" + normalize-path "^2.0.0" + readable-stream "^2.0.0" + concat-map@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" @@ -1176,6 +1671,23 @@ concat-stream@^1.4.10: readable-stream "^2.2.2" typedarray "^0.0.6" +concat-stream@^1.4.6, concat-stream@^1.5.0, concat-stream@^1.6.0, concat-stream@^1.6.1, concat-stream@~1.6.0: + version "1.6.2" + resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34" + dependencies: + buffer-from "^1.0.0" + inherits "^2.0.3" + readable-stream "^2.2.2" + typedarray "^0.0.6" + +concat-stream@~1.4.1, concat-stream@~1.4.5: + version "1.4.11" + resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.4.11.tgz#1dc9f666f2621da9c618b1e7f8f3b2ff70b5f76f" + dependencies: + inherits "~2.0.1" + readable-stream "~1.1.9" + typedarray "~0.0.5" + connect@^3.6.0: version "3.6.5" resolved "https://registry.yarnpkg.com/connect/-/connect-3.6.5.tgz#fb8dde7ba0763877d0ec9df9dac0b4b40e72c7da" @@ -1195,10 +1707,14 @@ console-control-strings@^1.0.0, console-control-strings@~1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" -constants-browserify@^1.0.0: +constants-browserify@^1.0.0, constants-browserify@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/constants-browserify/-/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75" +constants-browserify@~0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/constants-browserify/-/constants-browserify-0.0.1.tgz#92577db527ba6c4cf0a4568d84bc031f441e21f2" + content-type-parser@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/content-type-parser/-/content-type-parser-1.0.2.tgz#caabe80623e63638b2502fd4c7f12ff4ce2352e7" @@ -1376,6 +1892,10 @@ cookie@0.3.1: version "0.3.1" resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.3.1.tgz#e7e0a1f9ef43b4c8ba925c5c5a96e806d16873bb" +cookiejar@2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/cookiejar/-/cookiejar-2.0.6.tgz#0abf356ad00d1c5a219d88d44518046dd026acfe" + copy-descriptor@^0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" @@ -1388,6 +1908,19 @@ core-util-is@1.0.2, core-util-is@~1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" +cosmiconfig@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-1.1.0.tgz#0dea0f9804efdfb929fbb1b188e25553ea053d37" + dependencies: + graceful-fs "^4.1.2" + js-yaml "^3.4.3" + minimist "^1.2.0" + object-assign "^4.0.1" + os-homedir "^1.0.1" + parse-json "^2.2.0" + pinkie-promise "^2.0.0" + require-from-string "^1.1.0" + cpx@^1.5.0: version "1.5.0" resolved "https://registry.yarnpkg.com/cpx/-/cpx-1.5.0.tgz#185be018511d87270dedccc293171e37655ab88f" @@ -1404,6 +1937,17 @@ cpx@^1.5.0: shell-quote "^1.6.1" subarg "^1.0.0" +crc32-stream@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/crc32-stream/-/crc32-stream-2.0.0.tgz#e3cdd3b4df3168dd74e3de3fbbcb7b297fe908f4" + dependencies: + crc "^3.4.4" + readable-stream "^2.0.0" + +crc@^3.4.4: + version "3.5.0" + resolved "https://registry.yarnpkg.com/crc/-/crc-3.5.0.tgz#98b8ba7d489665ba3979f59b21381374101a1964" + create-ecdh@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.0.tgz#888c723596cdf7612f6498233eebd7a35301737d" @@ -1461,7 +2005,7 @@ cryptiles@3.x.x: dependencies: boom "5.x.x" -crypto-browserify@^3.11.1: +crypto-browserify@^3.0.0, crypto-browserify@^3.11.1: version "3.12.0" resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.12.0.tgz#396cf9f3137f03e4b8e532c58f698254e00f80ec" dependencies: @@ -1477,6 +2021,10 @@ crypto-browserify@^3.11.1: randombytes "^2.0.0" randomfill "^1.0.3" +cssmin@0.3.x: + version "0.3.2" + resolved "https://registry.yarnpkg.com/cssmin/-/cssmin-0.3.2.tgz#ddce4c547b510ae0d594a8f1fbf8aaf8e2c5c00d" + cssom@0.3.x, "cssom@>= 0.3.2 < 0.4.0": version "0.3.2" resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.3.2.tgz#b8036170c79f07a90ff2f16e22284027a243848b" @@ -1497,6 +2045,22 @@ custom-event@~1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/custom-event/-/custom-event-1.0.1.tgz#5d02a46850adf1b4a317946a3928fccb5bfd0425" +cycle@1.0.x: + version "1.0.3" + resolved "https://registry.yarnpkg.com/cycle/-/cycle-1.0.3.tgz#21e80b2be8580f98b468f379430662b046c34ad2" + +d@1: + version "1.0.0" + resolved "https://registry.yarnpkg.com/d/-/d-1.0.0.tgz#754bb5bfe55451da69a58b94d45f4c5b0462d58f" + dependencies: + es5-ext "^0.10.9" + +d@~0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/d/-/d-0.1.1.tgz#da184c535d18d8ee7ba2aa229b914009fae11309" + dependencies: + es5-ext "~0.10.2" + dargs@^4.0.1: version "4.1.0" resolved "https://registry.yarnpkg.com/dargs/-/dargs-4.1.0.tgz#03a9dbb4b5c2f139bf14ae53f0b8a2a6a86f4e17" @@ -1513,6 +2077,10 @@ data-uri-to-buffer@1: version "1.2.0" resolved "https://registry.yarnpkg.com/data-uri-to-buffer/-/data-uri-to-buffer-1.2.0.tgz#77163ea9c20d8641b4707e8f18abdf9a78f34835" +date-fns@^1.27.2: + version "1.29.0" + resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-1.29.0.tgz#12e609cdcb935127311d04d33334e2960a2a54e6" + date-format@^0.0.0: version "0.0.0" resolved "https://registry.yarnpkg.com/date-format/-/date-format-0.0.0.tgz#09206863ab070eb459acea5542cbd856b11966b3" @@ -1525,6 +2093,10 @@ date-now@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/date-now/-/date-now-0.1.4.tgz#eaf439fd4d4848ad74e5cc7dbef200672b9e345b" +dateformat@1.0.2-1.2.3: + version "1.0.2-1.2.3" + resolved "https://registry.yarnpkg.com/dateformat/-/dateformat-1.0.2-1.2.3.tgz#b0220c02de98617433b72851cf47de3df2cdbee9" + dateformat@^1.0.11, dateformat@^1.0.12, dateformat@^1.0.6: version "1.0.12" resolved "https://registry.yarnpkg.com/dateformat/-/dateformat-1.0.12.tgz#9f124b67594c937ff706932e4a642cca8dbbfee9" @@ -1538,22 +2110,34 @@ debug@2, debug@2.6.9, debug@^2.2.0, debug@^2.3.3, debug@^2.6.8, debug@~2.6.4, de dependencies: ms "2.0.0" +debug@2.2.0, debug@~2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/debug/-/debug-2.2.0.tgz#f87057e995b1a1f6ae6a4960664137bc56f039da" + dependencies: + ms "0.7.1" + +debug@2.3.3: + version "2.3.3" + resolved "https://registry.yarnpkg.com/debug/-/debug-2.3.3.tgz#40c453e67e6e13c901ddec317af8986cda9eff8c" + dependencies: + ms "0.7.2" + +debug@2.6.8: + version "2.6.8" + resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.8.tgz#e731531ca2ede27d188222427da17821d68ff4fc" + dependencies: + ms "2.0.0" + debug@3.1.0, debug@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261" dependencies: ms "2.0.0" -debug@^0.7.2: +debug@^0.7.2, debug@~0.7.0: version "0.7.4" resolved "https://registry.yarnpkg.com/debug/-/debug-0.7.4.tgz#06e1ea8082c2cb14e39806e22e2f6f757f92af39" -debug@~2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/debug/-/debug-2.2.0.tgz#f87057e995b1a1f6ae6a4960664137bc56f039da" - dependencies: - ms "0.7.1" - decamelize@^1.0.0, decamelize@^1.1.1, decamelize@^1.1.2: version "1.2.0" resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" @@ -1611,6 +2195,10 @@ define-property@^1.0.0: dependencies: is-descriptor "^1.0.0" +defined@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/defined/-/defined-1.0.0.tgz#c98d9bcef75674188e110969151199e39b1fa693" + degenerator@~1.0.2: version "1.0.4" resolved "https://registry.yarnpkg.com/degenerator/-/degenerator-1.0.4.tgz#fcf490a37ece266464d9cc431ab98c5819ced095" @@ -1619,6 +2207,18 @@ degenerator@~1.0.2: escodegen "1.x.x" esprima "3.x.x" +del@^2.0.2: + version "2.2.2" + resolved "https://registry.yarnpkg.com/del/-/del-2.2.2.tgz#c12c981d067846c84bcaf862cff930d907ffd1a8" + dependencies: + globby "^5.0.0" + is-path-cwd "^1.0.0" + is-path-in-cwd "^1.0.0" + object-assign "^4.0.1" + pify "^2.0.0" + pinkie-promise "^2.0.0" + rimraf "^2.2.8" + delayed-stream@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" @@ -1635,12 +2235,40 @@ depd@~1.1.1: version "1.1.2" resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" -des.js@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.0.0.tgz#c074d2e2aa6a8a9a07dbd61f9a15c2cd83ec8ecc" +deps-sort@^1.3.7: + version "1.3.9" + resolved "https://registry.yarnpkg.com/deps-sort/-/deps-sort-1.3.9.tgz#29dfff53e17b36aecae7530adbbbf622c2ed1a71" dependencies: - inherits "^2.0.1" - minimalistic-assert "^1.0.0" + JSONStream "^1.0.3" + shasum "^1.0.0" + subarg "^1.0.0" + through2 "^1.0.0" + +deps-sort@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/deps-sort/-/deps-sort-2.0.0.tgz#091724902e84658260eb910748cccd1af6e21fb5" + dependencies: + JSONStream "^1.0.3" + shasum "^1.0.0" + subarg "^1.0.0" + through2 "^2.0.0" + +derequire@2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/derequire/-/derequire-2.0.3.tgz#80512f04292adb9cbd6d1959ddc4e562eaafb56f" + dependencies: + acorn "^0.12.0" + concat-stream "^1.4.6" + escope "^2.0.6" + through2 "^2.0.0" + yargs "^3.4.5" + +des.js@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.0.0.tgz#c074d2e2aa6a8a9a07dbd61f9a15c2cd83ec8ecc" + dependencies: + inherits "^2.0.1" + minimalistic-assert "^1.0.0" detect-indent@^4.0.0: version "4.0.0" @@ -1660,10 +2288,37 @@ detect-newline@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-2.1.0.tgz#f41f1c10be4b00e87b5f13da680759f2c5bfd3e2" +detective@^4.0.0: + version "4.7.1" + resolved "https://registry.yarnpkg.com/detective/-/detective-4.7.1.tgz#0eca7314338442febb6d65da54c10bb1c82b246e" + dependencies: + acorn "^5.2.1" + defined "^1.0.0" + +detective@^5.0.2: + version "5.1.0" + resolved "https://registry.yarnpkg.com/detective/-/detective-5.1.0.tgz#7a20d89236d7b331ccea65832e7123b5551bb7cb" + dependencies: + acorn-node "^1.3.0" + defined "^1.0.0" + minimist "^1.1.1" + +detective@~4.1.0: + version "4.1.1" + resolved "https://registry.yarnpkg.com/detective/-/detective-4.1.1.tgz#9c4bac1e9fb8bb34f7f18cae080ea1d03aff2cda" + dependencies: + acorn "^1.0.3" + defined "^1.0.0" + escodegen "^1.4.1" + di@^0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/di/-/di-0.0.1.tgz#806649326ceaa7caa3306d75d985ea2748ba913c" +diff@3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/diff/-/diff-3.2.0.tgz#c9ce393a4b7cbd0b058a725c93df299027868ff9" + diff@3.5.0, diff@^3.1.0: version "3.5.0" resolved "https://registry.yarnpkg.com/diff/-/diff-3.5.0.tgz#800c0dd1e0a8bfbc95835c202ad220fe317e5a12" @@ -1680,6 +2335,12 @@ diffie-hellman@^5.0.0: miller-rabin "^4.0.0" randombytes "^2.0.0" +doctrine@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.1.0.tgz#5cd01fc101621b42c4cd7f5d1a66243716d3f39d" + dependencies: + esutils "^2.0.2" + dom-serialize@^2.2.0: version "2.2.1" resolved "https://registry.yarnpkg.com/dom-serialize/-/dom-serialize-2.2.1.tgz#562ae8999f44be5ea3076f5419dcd59eb43ac95b" @@ -1689,10 +2350,14 @@ dom-serialize@^2.2.0: extend "^3.0.0" void-elements "^2.0.0" -domain-browser@^1.1.7: +domain-browser@^1.1.7, domain-browser@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.2.0.tgz#3d31f50191a6749dd1375a7f522e823d42e54eda" +domain-browser@~1.1.0: + version "1.1.7" + resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.1.7.tgz#867aa4b093faa05f1de08c06f4d7b21fdf8698bc" + domexception@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/domexception/-/domexception-1.0.1.tgz#937442644ca6a31261ef36e3ec677fe805582c90" @@ -1709,6 +2374,18 @@ double-ended-queue@^2.1.0-0: version "2.1.0-0" resolved "https://registry.yarnpkg.com/double-ended-queue/-/double-ended-queue-2.1.0-0.tgz#103d3527fd31528f40188130c841efdd78264e5c" +duplexer2@0.0.2, duplexer2@~0.0.2: + version "0.0.2" + resolved "https://registry.yarnpkg.com/duplexer2/-/duplexer2-0.0.2.tgz#c614dcf67e2fb14995a91711e5a617e8a60a31db" + dependencies: + readable-stream "~1.1.9" + +duplexer2@^0.1.2, duplexer2@~0.1.0, duplexer2@~0.1.2: + version "0.1.4" + resolved "https://registry.yarnpkg.com/duplexer2/-/duplexer2-0.1.4.tgz#8b12dab878c0d69e3e7891051662a32fc6bddcc1" + dependencies: + readable-stream "^2.0.2" + duplexer3@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/duplexer3/-/duplexer3-0.1.4.tgz#ee01dd1cac0ed3cbc7fdbea37dc0a8f1ce002ce2" @@ -1727,6 +2404,10 @@ ee-first@1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" +elegant-spinner@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/elegant-spinner/-/elegant-spinner-1.0.1.tgz#db043521c95d7e303fd8f345bedc3349cfb0729e" + elliptic@^6.0.0: version "6.4.0" resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.4.0.tgz#cac9af8762c85836187003c8dfe193e5e2eae5df" @@ -1743,6 +2424,35 @@ encodeurl@~1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" +encoding@^0.1.11: + version "0.1.12" + resolved "https://registry.yarnpkg.com/encoding/-/encoding-0.1.12.tgz#538b66f3ee62cd1ab51ec323829d1f9480c74beb" + dependencies: + iconv-lite "~0.4.13" + +end-of-stream@^1.0.0: + version "1.4.1" + resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.1.tgz#ed29634d19baba463b6ce6b80a37213eab71ec43" + dependencies: + once "^1.4.0" + +engine.io-client@1.8.3: + version "1.8.3" + resolved "https://registry.yarnpkg.com/engine.io-client/-/engine.io-client-1.8.3.tgz#1798ed93451246453d4c6f635d7a201fe940d5ab" + dependencies: + component-emitter "1.2.1" + component-inherit "0.0.3" + debug "2.3.3" + engine.io-parser "1.3.2" + has-cors "1.1.0" + indexof "0.0.1" + parsejson "0.0.3" + parseqs "0.0.5" + parseuri "0.0.5" + ws "1.1.2" + xmlhttprequest-ssl "1.5.3" + yeast "0.1.2" + engine.io-client@~3.1.0: version "3.1.4" resolved "https://registry.yarnpkg.com/engine.io-client/-/engine.io-client-3.1.4.tgz#4fcf1370b47163bd2ce9be2733972430350d4ea1" @@ -1759,6 +2469,17 @@ engine.io-client@~3.1.0: xmlhttprequest-ssl "~1.5.4" yeast "0.1.2" +engine.io-parser@1.3.2: + version "1.3.2" + resolved "https://registry.yarnpkg.com/engine.io-parser/-/engine.io-parser-1.3.2.tgz#937b079f0007d0893ec56d46cb220b8cb435220a" + dependencies: + after "0.8.2" + arraybuffer.slice "0.0.6" + base64-arraybuffer "0.1.5" + blob "0.0.4" + has-binary "0.1.7" + wtf-8 "1.0.0" + engine.io-parser@~2.1.0, engine.io-parser@~2.1.1: version "2.1.2" resolved "https://registry.yarnpkg.com/engine.io-parser/-/engine.io-parser-2.1.2.tgz#4c0f4cff79aaeecbbdcfdea66a823c6085409196" @@ -1769,6 +2490,17 @@ engine.io-parser@~2.1.0, engine.io-parser@~2.1.1: blob "0.0.4" has-binary2 "~1.0.2" +engine.io@1.8.3: + version "1.8.3" + resolved "https://registry.yarnpkg.com/engine.io/-/engine.io-1.8.3.tgz#8de7f97895d20d39b85f88eeee777b2bd42b13d4" + dependencies: + accepts "1.3.3" + base64id "1.0.0" + cookie "0.3.1" + debug "2.3.3" + engine.io-parser "1.3.2" + ws "1.1.2" + engine.io@~3.1.0: version "3.1.4" resolved "https://registry.yarnpkg.com/engine.io/-/engine.io-3.1.4.tgz#3d0211b70a552ce841ffc7da8627b301a9a4162e" @@ -1810,11 +2542,89 @@ es-to-primitive@^1.1.1: is-date-object "^1.0.1" is-symbol "^1.0.1" +es5-ext@^0.10.35, es5-ext@^0.10.9, es5-ext@~0.10.14, es5-ext@~0.10.2, es5-ext@~0.10.5, es5-ext@~0.10.6: + version "0.10.45" + resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.45.tgz#0bfdf7b473da5919d5adf3bd25ceb754fccc3653" + dependencies: + es6-iterator "~2.0.3" + es6-symbol "~3.1.1" + next-tick "1" + +es6-iterator@~0.1.3: + version "0.1.3" + resolved "https://registry.yarnpkg.com/es6-iterator/-/es6-iterator-0.1.3.tgz#d6f58b8c4fc413c249b4baa19768f8e4d7c8944e" + dependencies: + d "~0.1.1" + es5-ext "~0.10.5" + es6-symbol "~2.0.1" + +es6-iterator@~2.0.1, es6-iterator@~2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/es6-iterator/-/es6-iterator-2.0.3.tgz#a7de889141a05a94b0854403b2d0a0fbfa98f3b7" + dependencies: + d "1" + es5-ext "^0.10.35" + es6-symbol "^3.1.1" + +es6-map@^0.1.1: + version "0.1.5" + resolved "https://registry.yarnpkg.com/es6-map/-/es6-map-0.1.5.tgz#9136e0503dcc06a301690f0bb14ff4e364e949f0" + dependencies: + d "1" + es5-ext "~0.10.14" + es6-iterator "~2.0.1" + es6-set "~0.1.5" + es6-symbol "~3.1.1" + event-emitter "~0.3.5" + +es6-promise@^4.0.3, es6-promise@^4.0.5: + version "4.2.4" + resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-4.2.4.tgz#dc4221c2b16518760bd8c39a52d8f356fc00ed29" + +es6-promisify@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/es6-promisify/-/es6-promisify-5.0.0.tgz#5109d62f3e56ea967c4b63505aef08291c8a5203" + dependencies: + es6-promise "^4.0.3" + +es6-set@~0.1.5: + version "0.1.5" + resolved "https://registry.yarnpkg.com/es6-set/-/es6-set-0.1.5.tgz#d2b3ec5d4d800ced818db538d28974db0a73ccb1" + dependencies: + d "1" + es5-ext "~0.10.14" + es6-iterator "~2.0.1" + es6-symbol "3.1.1" + event-emitter "~0.3.5" + +es6-symbol@3.1.1, es6-symbol@^3.1.1, es6-symbol@~3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.1.tgz#bf00ef4fdab6ba1b46ecb7b629b4c7ed5715cc77" + dependencies: + d "1" + es5-ext "~0.10.14" + +es6-symbol@~2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-2.0.1.tgz#761b5c67cfd4f1d18afb234f691d678682cb3bf3" + dependencies: + d "~0.1.1" + es5-ext "~0.10.5" + +es6-weak-map@^0.1.2: + version "0.1.4" + resolved "https://registry.yarnpkg.com/es6-weak-map/-/es6-weak-map-0.1.4.tgz#706cef9e99aa236ba7766c239c8b9e286ea7d228" + dependencies: + d "~0.1.1" + es5-ext "~0.10.6" + es6-iterator "~0.1.3" + es6-symbol "~2.0.1" + escape-html@~1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" -escape-string-regexp@1.0.5, escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: +escape-string-regexp@1.0.5, escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.3, escape-string-regexp@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" @@ -1840,6 +2650,94 @@ escodegen@1.x.x, escodegen@^1.9.0: optionalDependencies: source-map "~0.5.6" +escodegen@^1.4.1: + version "1.9.1" + resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.9.1.tgz#dbae17ef96c8e4bedb1356f4504fa4cc2f7cb7e2" + dependencies: + esprima "^3.1.3" + estraverse "^4.2.0" + esutils "^2.0.2" + optionator "^0.8.1" + optionalDependencies: + source-map "~0.6.1" + +escope@^2.0.6: + version "2.0.7" + resolved "https://registry.yarnpkg.com/escope/-/escope-2.0.7.tgz#b3dc8e605eddccf1c83ec8cf7cce6d04427ec8eb" + dependencies: + es6-map "^0.1.1" + es6-weak-map "^0.1.2" + esrecurse "^1.2.0" + estraverse "^1.9.1" + util-extend "^1.0.1" + +eslint-config-prettier@^2.3.0: + version "2.9.0" + resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-2.9.0.tgz#5ecd65174d486c22dff389fe036febf502d468a3" + dependencies: + get-stdin "^5.0.1" + +eslint-scope@^3.7.1: + version "3.7.1" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-3.7.1.tgz#3d63c3edfda02e06e01a452ad88caacc7cdcb6e8" + dependencies: + esrecurse "^4.1.0" + estraverse "^4.1.1" + +eslint-visitor-keys@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz#3f3180fb2e291017716acb4c9d6d5b5c34a6a81d" + +eslint@^4.6.1: + version "4.19.1" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-4.19.1.tgz#32d1d653e1d90408854bfb296f076ec7e186a300" + dependencies: + ajv "^5.3.0" + babel-code-frame "^6.22.0" + chalk "^2.1.0" + concat-stream "^1.6.0" + cross-spawn "^5.1.0" + debug "^3.1.0" + doctrine "^2.1.0" + eslint-scope "^3.7.1" + eslint-visitor-keys "^1.0.0" + espree "^3.5.4" + esquery "^1.0.0" + esutils "^2.0.2" + file-entry-cache "^2.0.0" + functional-red-black-tree "^1.0.1" + glob "^7.1.2" + globals "^11.0.1" + ignore "^3.3.3" + imurmurhash "^0.1.4" + inquirer "^3.0.6" + is-resolvable "^1.0.0" + js-yaml "^3.9.1" + json-stable-stringify-without-jsonify "^1.0.1" + levn "^0.3.0" + lodash "^4.17.4" + minimatch "^3.0.2" + mkdirp "^0.5.1" + natural-compare "^1.4.0" + optionator "^0.8.2" + path-is-inside "^1.0.2" + pluralize "^7.0.0" + progress "^2.0.0" + regexpp "^1.0.1" + require-uncached "^1.0.3" + semver "^5.3.0" + strip-ansi "^4.0.0" + strip-json-comments "~2.0.1" + table "4.0.2" + text-table "~0.2.0" + +espree@^3.5.4: + version "3.5.4" + resolved "https://registry.yarnpkg.com/espree/-/espree-3.5.4.tgz#b0f447187c8a8bed944b815a660bddf5deb5d1a7" + dependencies: + acorn "^5.5.0" + acorn-jsx "^3.0.0" + esprima@2.7.x, esprima@^2.7.1: version "2.7.3" resolved "https://registry.yarnpkg.com/esprima/-/esprima-2.7.3.tgz#96e3b70d5779f6ad49cd032673d1c312767ba581" @@ -1852,14 +2750,36 @@ esprima@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.0.tgz#4499eddcd1110e0b218bacf2fa7f7f59f55ca804" -estraverse@^1.9.1: - version "1.9.3" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-1.9.3.tgz#af67f2dc922582415950926091a4005d29c9bb44" +"esprima@~ 1.0.2": + version "1.0.4" + resolved "https://registry.yarnpkg.com/esprima/-/esprima-1.0.4.tgz#9f557e08fc3b4d26ece9dd34f8fbf476b62585ad" + +esquery@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.0.1.tgz#406c51658b1f5991a5f9b62b1dc25b00e3e5c708" + dependencies: + estraverse "^4.0.0" -estraverse@^4.2.0: +esrecurse@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-1.2.0.tgz#25e3b3ab76ad8a1da2d38e9393fd76b8456a706f" + dependencies: + estraverse ">=1.9.0" + +esrecurse@^4.1.0: + version "4.2.1" + resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.2.1.tgz#007a3b9fdbc2b3bb87e4879ea19c92fdbd3942cf" + dependencies: + estraverse "^4.1.0" + +estraverse@>=1.9.0, estraverse@^4.0.0, estraverse@^4.1.0, estraverse@^4.1.1, estraverse@^4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.2.0.tgz#0dee3fed31fcd469618ce7342099fc1afa0bdb13" +estraverse@^1.9.1: + version "1.9.3" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-1.9.3.tgz#af67f2dc922582415950926091a4005d29c9bb44" + estree-walker@^0.3.0: version "0.3.1" resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-0.3.1.tgz#e6b1a51cf7292524e7237c312e5fe6660c1ce1aa" @@ -1872,6 +2792,13 @@ esutils@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b" +event-emitter@~0.3.5: + version "0.3.5" + resolved "https://registry.yarnpkg.com/event-emitter/-/event-emitter-0.3.5.tgz#df8c69eef1647923c7157b9ce83840610b02cc39" + dependencies: + d "1" + es5-ext "~0.10.14" + event-stream@~3.3.0: version "3.3.4" resolved "https://registry.yarnpkg.com/event-stream/-/event-stream-3.3.4.tgz#4ab4c9a0f5a54db9338b4c34d86bfce8f4b35571" @@ -1884,6 +2811,10 @@ event-stream@~3.3.0: stream-combiner "~0.0.4" through "~2.3.1" +eventemitter2@~0.4.13: + version "0.4.14" + resolved "https://registry.yarnpkg.com/eventemitter2/-/eventemitter2-0.4.14.tgz#8f61b75cde012b2e9eb284d4545583b5643b61ab" + eventemitter3@1.x.x: version "1.2.0" resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-1.2.0.tgz#1c86991d816ad1e504750e73874224ecf3bec508" @@ -1892,6 +2823,14 @@ events@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/events/-/events-1.1.1.tgz#9ebdb7635ad099c70dcc4c2a1f5004288e8bd924" +events@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/events/-/events-2.1.0.tgz#2a9a1e18e6106e0e812aa9ebd4a819b3c29c0ba5" + +events@~1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/events/-/events-1.0.2.tgz#75849dcfe93d10fb057c30055afdbd51d06a8e24" + evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz#7fcbdb198dc71959432efe13842684e0525acb02" @@ -1941,7 +2880,11 @@ execa@^0.8.0: signal-exit "^3.0.0" strip-eof "^1.0.0" -exit@^0.1.2: +exit-hook@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/exit-hook/-/exit-hook-1.1.1.tgz#f05ca233b48c05d54fff07765df8507e95c02ff8" + +exit@^0.1.2, exit@~0.1.1: version "0.1.2" resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c" @@ -2029,6 +2972,18 @@ extend@3, extend@^3.0.0, extend@~3.0.0, extend@~3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.1.tgz#a755ea7bc1adfcc5a31ce7e762dbaadc5e636444" +extend@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.0.tgz#5a474353b9f3353ddd8176dfd37b91c83a46f1d4" + +external-editor@^2.0.1: + version "2.2.0" + resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-2.2.0.tgz#045511cfd8d133f3846673d1047c154e214ad3d5" + dependencies: + chardet "^0.4.0" + iconv-lite "^0.4.17" + tmp "^0.0.33" + external-editor@^2.0.4: version "2.1.0" resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-2.1.0.tgz#3d026a21b7f95b5726387d4200ac160d372c3b48" @@ -2064,6 +3019,19 @@ extsprintf@^1.2.0: version "1.4.0" resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.0.tgz#e2689f8f356fad62cca65a3a91c5df5f9551692f" +eyes@0.1.x: + version "0.1.8" + resolved "https://registry.yarnpkg.com/eyes/-/eyes-0.1.8.tgz#62cf120234c683785d902348a800ef3e0cc20bc0" + +falafel@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/falafel/-/falafel-2.1.0.tgz#96bb17761daba94f46d001738b3cedf3a67fe06c" + dependencies: + acorn "^5.0.0" + foreach "^2.0.5" + isarray "0.0.1" + object-keys "^1.0.6" + fast-deep-equal@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-1.0.0.tgz#96256a3bc975595eb36d82e9929d060d893439ff" @@ -2082,12 +3050,30 @@ fb-watchman@^2.0.0: dependencies: bser "^2.0.0" +figures@^1.0.1, figures@^1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/figures/-/figures-1.7.0.tgz#cbe1e3affcf1cd44b80cadfed28dc793a9701d2e" + dependencies: + escape-string-regexp "^1.0.5" + object-assign "^4.1.0" + figures@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/figures/-/figures-2.0.0.tgz#3ab1a2d2a62c8bfb431a0c94cb797a2fce27c962" dependencies: escape-string-regexp "^1.0.5" +file-entry-cache@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-2.0.0.tgz#c392990c3e684783d838b8c84a45d8a048458361" + dependencies: + flat-cache "^1.2.1" + object-assign "^4.0.1" + +file-sync-cmp@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/file-sync-cmp/-/file-sync-cmp-0.1.1.tgz#a5e7a8ffbfa493b43b923bbd4ca89a53b63b612b" + file-uri-to-path@1: version "1.0.0" resolved "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz#553a7b8446ff6f684359c445f1e37a05dacc33dd" @@ -2103,6 +3089,13 @@ fileset@^2.0.2: glob "^7.0.3" minimatch "^3.0.3" +fill-keys@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/fill-keys/-/fill-keys-1.0.2.tgz#9a8fa36f4e8ad634e3bf6b4f3c8882551452eb20" + dependencies: + is-object "~1.0.1" + merge-descriptors "~1.0.0" + fill-range@^2.1.0: version "2.2.3" resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-2.2.3.tgz#50b77dfd7e469bc7492470963699fe7a8485a723" @@ -2138,6 +3131,10 @@ find-index@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/find-index/-/find-index-0.1.1.tgz#675d358b2ca3892d795a1ab47232f8b6e2e0dde4" +find-root@^0.1.1: + version "0.1.2" + resolved "https://registry.yarnpkg.com/find-root/-/find-root-0.1.2.tgz#98d2267cff1916ccaf2743b3a0eea81d79d7dcd1" + find-up@^1.0.0: version "1.1.2" resolved "https://registry.yarnpkg.com/find-up/-/find-up-1.1.2.tgz#6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f" @@ -2151,12 +3148,34 @@ find-up@^2.0.0, find-up@^2.1.0: dependencies: locate-path "^2.0.0" +findup-sync@~0.1.0, findup-sync@~0.1.2: + version "0.1.3" + resolved "https://registry.yarnpkg.com/findup-sync/-/findup-sync-0.1.3.tgz#7f3e7a97b82392c653bf06589bd85190e93c3683" + dependencies: + glob "~3.2.9" + lodash "~2.4.1" + +flat-cache@^1.2.1: + version "1.3.0" + resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-1.3.0.tgz#d3030b32b38154f4e3b7e9c709f490f7ef97c481" + dependencies: + circular-json "^0.3.1" + del "^2.0.2" + graceful-fs "^4.1.2" + write "^0.2.1" + follow-redirects@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.0.0.tgz#8e34298cbd2e176f254effec75a1c78cc849fd37" dependencies: debug "^2.2.0" +follow-redirects@^1.2.3: + version "1.5.0" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.5.0.tgz#234f49cf770b7f35b40e790f636ceba0c3a0ab77" + dependencies: + debug "^3.1.0" + for-in@^1.0.1, for-in@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" @@ -2175,6 +3194,14 @@ forever-agent@~0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" +form-data@1.0.0-rc3: + version "1.0.0-rc3" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-1.0.0-rc3.tgz#d35bc62e7fbc2937ae78f948aaa0d38d90607577" + dependencies: + async "^1.4.0" + combined-stream "^1.0.5" + mime-types "^2.1.3" + form-data@~2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.0.0.tgz#6f0aebadcc5da16c13e1ecc11137d85f9b883b25" @@ -2199,6 +3226,16 @@ form-data@~2.3.1: combined-stream "^1.0.5" mime-types "^2.1.12" +formatio@1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/formatio/-/formatio-1.2.0.tgz#f3b2167d9068c4698a8d51f4f760a39a54d818eb" + dependencies: + samsam "1.x" + +formidable@~1.0.14: + version "1.0.17" + resolved "https://registry.yarnpkg.com/formidable/-/formidable-1.0.17.tgz#ef5491490f9433b705faa77249c99029ae348559" + fragment-cache@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19" @@ -2215,6 +3252,10 @@ fs-access@^1.0.0: dependencies: null-check "^1.0.0" +fs-constants@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs-constants/-/fs-constants-1.0.0.tgz#6be0de9be998ce16af8afc24497b9ee9b7ccd9ad" + fs-extra@4.0.3, fs-extra@^4.0.1: version "4.0.3" resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-4.0.3.tgz#0d852122e5bc5beb453fb028e9c0c9bf36340c94" @@ -2270,6 +3311,10 @@ function-bind@^1.0.2, function-bind@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" +functional-red-black-tree@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" + gauge@~2.7.3: version "2.7.4" resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7" @@ -2301,6 +3346,10 @@ get-func-name@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/get-func-name/-/get-func-name-2.0.0.tgz#ead774abee72e20409433a066366023dd6887a41" +get-own-enumerable-property-symbols@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-2.0.1.tgz#5c4ad87f2834c4b9b4e84549dc1e0650fb38c24b" + get-pkg-repo@^1.0.0: version "1.4.0" resolved "https://registry.yarnpkg.com/get-pkg-repo/-/get-pkg-repo-1.4.0.tgz#c73b489c06d80cc5536c2c853f9e05232056972d" @@ -2319,6 +3368,10 @@ get-stdin@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-4.0.1.tgz#b968c6b0a04384324902e8bf1a5df32579a450fe" +get-stdin@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-5.0.1.tgz#122e161591e21ff4c52530305693f20e6393a398" + get-stream@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14" @@ -2338,6 +3391,10 @@ get-value@^2.0.3, get-value@^2.0.6: version "2.0.6" resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" +getobject@~0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/getobject/-/getobject-0.1.0.tgz#047a449789fa160d018f5486ed91320b6ec7885c" + getpass@^0.1.1: version "0.1.7" resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" @@ -2391,6 +3448,12 @@ gitconfiglocal@^1.0.0: dependencies: ini "^1.3.2" +github-build@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/github-build/-/github-build-1.2.0.tgz#b0bdb705ae4088218577e863c1a301030211051f" + dependencies: + axios "0.15.3" + glob-base@^0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/glob-base/-/glob-base-0.3.0.tgz#dbb164f6221b1c0b1ccf82aea328b497df0ea3c4" @@ -2417,7 +3480,18 @@ glob2base@^0.0.12: dependencies: find-index "^0.1.1" -glob@7.1.2, glob@^7.0.3, glob@^7.0.5, glob@^7.1.1, glob@^7.1.2: +glob@7.1.1: + version "7.1.1" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.1.tgz#805211df04faaf1c63a3600306cdf5ade50b2ec8" + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.0.2" + once "^1.3.0" + path-is-absolute "^1.0.0" + +glob@7.1.2, glob@^7.0.0, glob@^7.0.3, glob@^7.0.5, glob@^7.1.0, glob@^7.1.1, glob@^7.1.2: version "7.1.2" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.2.tgz#c19c9df9a028702d678612384a6552404c636d15" dependencies: @@ -2428,7 +3502,16 @@ glob@7.1.2, glob@^7.0.3, glob@^7.0.5, glob@^7.1.1, glob@^7.1.2: once "^1.3.0" path-is-absolute "^1.0.0" -glob@^5.0.15: +glob@^4.0.5: + version "4.5.3" + resolved "https://registry.yarnpkg.com/glob/-/glob-4.5.3.tgz#c6cb73d3226c1efef04de3c56d012f03377ee15f" + dependencies: + inflight "^1.0.4" + inherits "2" + minimatch "^2.0.1" + once "^1.3.0" + +glob@^5.0.15, glob@^5.0.5: version "5.0.15" resolved "https://registry.yarnpkg.com/glob/-/glob-5.0.15.tgz#1bc936b9e02f4a603fcc222ecf7633d30b8b93b1" dependencies: @@ -2438,10 +3521,40 @@ glob@^5.0.15: once "^1.3.0" path-is-absolute "^1.0.0" +glob@~3.1.21: + version "3.1.21" + resolved "https://registry.yarnpkg.com/glob/-/glob-3.1.21.tgz#d29e0a055dea5138f4d07ed40e8982e83c2066cd" + dependencies: + graceful-fs "~1.2.0" + inherits "1" + minimatch "~0.2.11" + +glob@~3.2.9: + version "3.2.11" + resolved "https://registry.yarnpkg.com/glob/-/glob-3.2.11.tgz#4a973f635b9190f715d10987d5c00fd2815ebe3d" + dependencies: + inherits "2" + minimatch "0.3" + +globals@^11.0.1: + version "11.5.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-11.5.0.tgz#6bc840de6771173b191f13d3a9c94d441ee92642" + globals@^9.18.0: version "9.18.0" resolved "https://registry.yarnpkg.com/globals/-/globals-9.18.0.tgz#aa3896b3e69b487f17e31ed2143d69a8e30c2d8a" +globby@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/globby/-/globby-5.0.0.tgz#ebd84667ca0dbb330b99bcfc68eac2bc54370e0d" + dependencies: + array-union "^1.0.1" + arrify "^1.0.0" + glob "^7.0.3" + object-assign "^4.0.1" + pify "^2.0.0" + pinkie-promise "^2.0.0" + globby@^6.1.0: version "6.1.0" resolved "https://registry.yarnpkg.com/globby/-/globby-6.1.0.tgz#f5a6d70e8395e21c858fb0489d64df02424d506c" @@ -2468,18 +3581,175 @@ got@^6.7.1: unzip-response "^2.0.1" url-parse-lax "^1.0.0" -graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.6: +graceful-fs@^4.1.0, graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.6: version "4.1.11" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658" +graceful-fs@~1.2.0: + version "1.2.3" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-1.2.3.tgz#15a4806a57547cb2d2dbf27f42e89a8c3451b364" + +"graceful-readlink@>= 1.0.0": + version "1.0.1" + resolved "https://registry.yarnpkg.com/graceful-readlink/-/graceful-readlink-1.0.1.tgz#4cafad76bc62f02fa039b2f94e9a3dd3a391a725" + growl@1.10.3: version "1.10.3" resolved "https://registry.yarnpkg.com/growl/-/growl-1.10.3.tgz#1926ba90cf3edfe2adb4927f5880bc22c66c790f" +growl@1.9.2: + version "1.9.2" + resolved "https://registry.yarnpkg.com/growl/-/growl-1.9.2.tgz#0ea7743715db8d8de2c5ede1775e1b45ac85c02f" + growly@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/growly/-/growly-1.3.0.tgz#f10748cbe76af964b7c96c93c6bcc28af120c081" +grunt-browserify@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/grunt-browserify/-/grunt-browserify-4.0.1.tgz#f5ced9026958a800f2e8898e1a4df1e525ff69ff" + dependencies: + async "^0.9.0" + browserify "^11.0.1" + glob "^5.0.5" + lodash "^3.8.0" + resolve "^1.1.6" + watchify "^3.3.1" + +grunt-cli@^0.1.13: + version "0.1.13" + resolved "https://registry.yarnpkg.com/grunt-cli/-/grunt-cli-0.1.13.tgz#e9ebc4047631f5012d922770c39378133cad10f4" + dependencies: + findup-sync "~0.1.0" + nopt "~1.0.10" + resolve "~0.3.1" + +grunt-contrib-clean@^0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/grunt-contrib-clean/-/grunt-contrib-clean-0.7.0.tgz#12fca70bbf525b918b73e5ccb1450f43beb629cd" + dependencies: + rimraf "^2.2.1" + +grunt-contrib-copy@^0.8.2: + version "0.8.2" + resolved "https://registry.yarnpkg.com/grunt-contrib-copy/-/grunt-contrib-copy-0.8.2.tgz#df31c90ffcc409bc9fafe44ec0dd1e4259916fea" + dependencies: + chalk "^1.1.1" + file-sync-cmp "^0.1.0" + +grunt-contrib-uglify@^0.11.0: + version "0.11.1" + resolved "https://registry.yarnpkg.com/grunt-contrib-uglify/-/grunt-contrib-uglify-0.11.1.tgz#5e22a2f676cd11d871fc2a0f08aa9b2973045325" + dependencies: + chalk "^1.0.0" + lodash "^4.0.1" + maxmin "^2.0.0" + uglify-js "~2.6.0" + uri-path "^1.0.0" + +grunt-gitinfo@^0.1.7: + version "0.1.8" + resolved "https://registry.yarnpkg.com/grunt-gitinfo/-/grunt-gitinfo-0.1.8.tgz#3071215f578a488151c0dfd8d96bf2abce7b50d2" + dependencies: + async "~0.9.0" + getobject "~0.1.0" + lodash "~2.4.1" + +grunt-legacy-log-utils@~0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/grunt-legacy-log-utils/-/grunt-legacy-log-utils-0.1.1.tgz#c0706b9dd9064e116f36f23fe4e6b048672c0f7e" + dependencies: + colors "~0.6.2" + lodash "~2.4.1" + underscore.string "~2.3.3" + +grunt-legacy-log@~0.1.0: + version "0.1.3" + resolved "https://registry.yarnpkg.com/grunt-legacy-log/-/grunt-legacy-log-0.1.3.tgz#ec29426e803021af59029f87d2f9cd7335a05531" + dependencies: + colors "~0.6.2" + grunt-legacy-log-utils "~0.1.1" + hooker "~0.2.3" + lodash "~2.4.1" + underscore.string "~2.3.3" + +grunt-legacy-util@~0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/grunt-legacy-util/-/grunt-legacy-util-0.2.0.tgz#93324884dbf7e37a9ff7c026dff451d94a9e554b" + dependencies: + async "~0.1.22" + exit "~0.1.1" + getobject "~0.1.0" + hooker "~0.2.3" + lodash "~0.9.2" + underscore.string "~2.2.1" + which "~1.0.5" + +grunt-release@^0.13.0: + version "0.13.1" + resolved "https://registry.yarnpkg.com/grunt-release/-/grunt-release-0.13.1.tgz#ceee71c99b8cca4c4c9d054d8f93322695e9a047" + dependencies: + q "^1.4.1" + semver "^4.3.6" + shelljs "^0.5.1" + superagent "^1.2.0" + +grunt-s3@0.2.0-alpha.3: + version "0.2.0-alpha.3" + resolved "https://registry.yarnpkg.com/grunt-s3/-/grunt-s3-0.2.0-alpha.3.tgz#e3329d2caa6ed93c4dbc0397e257caa68ae9ee7c" + dependencies: + grunt "0.4.x" + knox "0.8.x" + mime "~1.2.5" + temporary "0.0.5" + underscore.deferred "~0.1.4" + +grunt-sri@mattrobenolt/grunt-sri#pretty: + version "0.0.5" + resolved "https://codeload.github.com/mattrobenolt/grunt-sri/tar.gz/fa078485a471076be01f533c713935a7e5689ac3" + dependencies: + async "^0.9.0" + ramda "^0.11.0" + sri-toolbox "^0.1.3" + +grunt@0.4.x, grunt@^0.4.5: + version "0.4.5" + resolved "https://registry.yarnpkg.com/grunt/-/grunt-0.4.5.tgz#56937cd5194324adff6d207631832a9d6ba4e7f0" + dependencies: + async "~0.1.22" + coffee-script "~1.3.3" + colors "~0.6.2" + dateformat "1.0.2-1.2.3" + eventemitter2 "~0.4.13" + exit "~0.1.1" + findup-sync "~0.1.2" + getobject "~0.1.0" + glob "~3.1.21" + grunt-legacy-log "~0.1.0" + grunt-legacy-util "~0.2.0" + hooker "~0.2.3" + iconv-lite "~0.2.11" + js-yaml "~2.0.5" + lodash "~0.9.2" + minimatch "~0.2.12" + nopt "~1.0.10" + rimraf "~2.2.8" + underscore.string "~2.2.1" + which "~1.0.5" + +gzip-size@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/gzip-size/-/gzip-size-3.0.0.tgz#546188e9bdc337f673772f81660464b389dce520" + dependencies: + duplexer "^0.1.1" + +gzip-size@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/gzip-size/-/gzip-size-4.1.0.tgz#8ae096257eabe7d69c45be2b67c448124ffb517c" + dependencies: + duplexer "^0.1.1" + pify "^3.0.0" + handlebars@^4.0.1, handlebars@^4.0.2, handlebars@^4.0.3: version "4.0.11" resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.0.11.tgz#630a35dfe0294bc281edae6ffc5d329fc7982dcc" @@ -2533,6 +3803,12 @@ has-binary2@~1.0.2: dependencies: isarray "2.0.1" +has-binary@0.1.7: + version "0.1.7" + resolved "https://registry.yarnpkg.com/has-binary/-/has-binary-0.1.7.tgz#68e61eb16210c9545a0a5cce06a873912fe1e68c" + dependencies: + isarray "0.0.1" + has-cors@1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/has-cors/-/has-cors-1.1.0.tgz#5e474793f7ea9843d1bb99c23eef49ff126fff39" @@ -2549,6 +3825,12 @@ has-flag@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" +has-require@^1.1.0: + version "1.2.2" + resolved "https://registry.yarnpkg.com/has-require/-/has-require-1.2.2.tgz#921675ab130dbd9768fc8da8f1a8e242dfa41774" + dependencies: + escape-string-regexp "^1.0.3" + has-unicode@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" @@ -2580,6 +3862,12 @@ has-values@^1.0.0: is-number "^3.0.0" kind-of "^4.0.0" +has@^1.0.0: + version "1.0.3" + resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" + dependencies: + function-bind "^1.1.1" + has@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/has/-/has-1.0.1.tgz#8461733f538b0837c9361e39a9ab9e9704dc2f28" @@ -2658,6 +3946,10 @@ home-or-tmp@^2.0.0: os-homedir "^1.0.0" os-tmpdir "^1.0.1" +hooker@~0.2.3: + version "0.2.3" + resolved "https://registry.yarnpkg.com/hooker/-/hooker-0.2.3.tgz#b834f723cc4a242aa65963459df6d984c5d3d959" + hosted-git-info@^2.1.4, hosted-git-info@^2.5.0: version "2.5.0" resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.5.0.tgz#6d60e34b3abbc8313062c3b798ef8d901a07af3c" @@ -2668,6 +3960,10 @@ html-encoding-sniffer@^1.0.2: dependencies: whatwg-encoding "^1.0.1" +htmlescape@^1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/htmlescape/-/htmlescape-1.1.1.tgz#3a03edc2214bca3b66424a3e7959349509cb0351" + http-errors@1.6.2, http-errors@~1.6.2: version "1.6.2" resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.2.tgz#0a002cc85707192a7e7946ceedc11155f60ec736" @@ -2723,6 +4019,10 @@ https-browserify@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-1.0.0.tgz#ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73" +https-browserify@~0.0.0: + version "0.0.1" + resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-0.0.1.tgz#3f91365cabe60b77ed0ebba24b454e3e09d95a82" + https-proxy-agent@1: version "1.0.0" resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-1.0.0.tgz#35f7da6c48ce4ddbfa264891ac593ee5ff8671e6" @@ -2731,6 +4031,21 @@ https-proxy-agent@1: debug "2" extend "3" +https-proxy-agent@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-2.2.1.tgz#51552970fa04d723e04c56d04178c3f92592bbc0" + dependencies: + agent-base "^4.1.0" + debug "^3.1.0" + +husky@^0.14.3: + version "0.14.3" + resolved "https://registry.yarnpkg.com/husky/-/husky-0.14.3.tgz#c69ed74e2d2779769a17ba8399b54ce0b63c12c3" + dependencies: + is-ci "^1.0.10" + normalize-path "^1.0.0" + strip-indent "^2.0.0" + iconv-lite@0.4.15: version "0.4.15" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.15.tgz#fe265a218ac6a57cfe854927e9d04c19825eddeb" @@ -2739,10 +4054,24 @@ iconv-lite@0.4.19, iconv-lite@^0.4.17: version "0.4.19" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.19.tgz#f7468f60135f5e5dad3399c0a81be9a1603a082b" +iconv-lite@~0.2.11: + version "0.2.11" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.2.11.tgz#1ce60a3a57864a292d1321ff4609ca4bb965adc8" + +iconv-lite@~0.4.13: + version "0.4.23" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.23.tgz#297871f63be507adcfbfca715d0cd0eed84e9a63" + dependencies: + safer-buffer ">= 2.1.2 < 3" + ieee754@^1.1.4: version "1.1.8" resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.8.tgz#be33d40ac10ef1926701f6f08a2d86fbfd1ad3e4" +ignore@^3.3.3: + version "3.3.8" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.3.8.tgz#3f8e9c35d38708a3a7e0e9abb6c73e7ee7707b2b" + import-local@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/import-local/-/import-local-1.0.0.tgz#5e4ffdc03f4fe6c009c6729beb29631c2f8227bc" @@ -2760,6 +4089,10 @@ indent-string@^2.1.0: dependencies: repeating "^2.0.0" +indent-string@^3.0.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-3.2.0.tgz#4a5fd6d27cc332f37e5419a504dbb837105c9289" + indexof@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/indexof/-/indexof-0.0.1.tgz#82dc336d232b9062179d05ab3293a66059fd435d" @@ -2779,6 +4112,10 @@ inflight@^1.0.4: once "^1.3.0" wrappy "1" +inherits@1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-1.0.2.tgz#ca4309dadee6b54cc0b8d247e8d7c7a0975bdc9b" + inherits@2, inherits@2.0.3, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.0, inherits@~2.0.1, inherits@~2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" @@ -2791,13 +4128,37 @@ ini@^1.3.2, ini@~1.3.0: version "1.3.5" resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927" +inline-source-map@~0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/inline-source-map/-/inline-source-map-0.5.0.tgz#4a4c5dd8e4fb5e9b3cda60c822dfadcaee66e0af" + dependencies: + source-map "~0.4.0" + inline-source-map@~0.6.0: version "0.6.2" resolved "https://registry.yarnpkg.com/inline-source-map/-/inline-source-map-0.6.2.tgz#f9393471c18a79d1724f863fa38b586370ade2a5" dependencies: source-map "~0.5.3" -inquirer@^3.2.2: +inquirer@3.0.6: + version "3.0.6" + resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-3.0.6.tgz#e04aaa9d05b7a3cb9b0f407d04375f0447190347" + dependencies: + ansi-escapes "^1.1.0" + chalk "^1.0.0" + cli-cursor "^2.1.0" + cli-width "^2.0.0" + external-editor "^2.0.1" + figures "^2.0.0" + lodash "^4.3.0" + mute-stream "0.0.7" + run-async "^2.2.0" + rx "^4.1.0" + string-width "^2.0.0" + strip-ansi "^3.0.0" + through "^2.3.6" + +inquirer@^3.0.6, inquirer@^3.2.2, inquirer@^3.3.0: version "3.3.0" resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-3.3.0.tgz#9dd2f2ad765dcab1ff0443b491442a20ba227dc9" dependencies: @@ -2816,6 +4177,33 @@ inquirer@^3.2.2: strip-ansi "^4.0.0" through "^2.3.6" +insert-module-globals@^6.4.1: + version "6.6.3" + resolved "https://registry.yarnpkg.com/insert-module-globals/-/insert-module-globals-6.6.3.tgz#20638e29a30f9ed1ca2e3a825fbc2cba5246ddfc" + dependencies: + JSONStream "^1.0.3" + combine-source-map "~0.6.1" + concat-stream "~1.4.1" + is-buffer "^1.1.0" + lexical-scope "^1.2.0" + process "~0.11.0" + through2 "^1.0.0" + xtend "^4.0.0" + +insert-module-globals@^7.0.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/insert-module-globals/-/insert-module-globals-7.1.0.tgz#dbb3cea71d3a43d5a07ef0310fe5f078aa4dbf35" + dependencies: + JSONStream "^1.0.3" + combine-source-map "^0.8.0" + concat-stream "^1.6.1" + is-buffer "^1.1.0" + lexical-scope "^1.2.0" + path-is-absolute "^1.0.1" + process "~0.11.0" + through2 "^2.0.0" + xtend "^4.0.0" + invariant@^2.2.2: version "2.2.2" resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.2.tgz#9e1f56ac0acdb6bf303306f338be3b204ae60360" @@ -2856,7 +4244,7 @@ is-binary-path@^1.0.0: dependencies: binary-extensions "^1.0.0" -is-buffer@^1.1.5, is-buffer@~1.1.1: +is-buffer@^1.1.0, is-buffer@^1.1.5, is-buffer@~1.1.1: version "1.1.6" resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" @@ -3003,16 +4391,36 @@ is-number@^3.0.0: dependencies: kind-of "^3.0.2" -is-obj@^1.0.0: +is-obj@^1.0.0, is-obj@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f" +is-object@~1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-object/-/is-object-1.0.1.tgz#8952688c5ec2ffd6b03ecc85e769e02903083470" + is-odd@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-odd/-/is-odd-1.0.0.tgz#3b8a932eb028b3775c39bb09e91767accdb69088" dependencies: is-number "^3.0.0" +is-path-cwd@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-1.0.0.tgz#d225ec23132e89edd38fda767472e62e65f1106d" + +is-path-in-cwd@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-path-in-cwd/-/is-path-in-cwd-1.0.1.tgz#5ac48b345ef675339bd6c7a48a912110b241cf52" + dependencies: + is-path-inside "^1.0.0" + +is-path-inside@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-1.0.1.tgz#8ef5b7de50437a3fdca6b4e865ef7aa55cb48036" + dependencies: + path-is-inside "^1.0.1" + is-plain-obj@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e" @@ -3049,11 +4457,19 @@ is-regex@^1.0.4: dependencies: has "^1.0.1" +is-regexp@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-regexp/-/is-regexp-1.0.0.tgz#fd2d883545c46bac5a633e7b9a09e87fa2cb5069" + +is-resolvable@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-resolvable/-/is-resolvable-1.1.0.tgz#fb18f87ce1feb925169c9a407c19318a3206ed88" + is-retry-allowed@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/is-retry-allowed/-/is-retry-allowed-1.1.0.tgz#11a060568b67339444033d0125a61a20d564fb34" -is-stream@^1.0.0, is-stream@^1.1.0: +is-stream@^1.0.0, is-stream@^1.0.1, is-stream@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" @@ -3079,11 +4495,11 @@ is-utf8@^0.2.0: version "0.2.1" resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72" -isarray@0.0.1: +isarray@0.0.1, isarray@~0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" -isarray@1.0.0, isarray@~1.0.0: +isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" @@ -3091,6 +4507,10 @@ isarray@2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/isarray/-/isarray-2.0.1.tgz#a37d94ed9cda2d59865c9f76fe596ee1f338741e" +isarray@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-2.0.4.tgz#38e7bcbb0f3ba1b7933c86ba1894ddfc3781bbb7" + isbinaryfile@^3.0.0: version "3.0.2" resolved "https://registry.yarnpkg.com/isbinaryfile/-/isbinaryfile-3.0.2.tgz#4a3e974ec0cba9004d3fc6cde7209ea69368a621" @@ -3109,7 +4529,7 @@ isobject@^3.0.0, isobject@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" -isstream@~0.1.2: +isstream@0.1.x, isstream@~0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" @@ -3326,6 +4746,10 @@ jest-environment-node@^22.4.3: jest-mock "^22.4.3" jest-util "^22.4.3" +jest-get-type@^21.2.0: + version "21.2.0" + resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-21.2.0.tgz#f6376ab9db4b60d81e39f30749c6c466f40d4a23" + jest-get-type@^22.1.0: version "22.1.0" resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-22.1.0.tgz#4e90af298ed6181edc85d2da500dbd2753e0d5a9" @@ -3547,6 +4971,15 @@ jest-util@^22.4.3: mkdirp "^0.5.1" source-map "^0.6.0" +jest-validate@^21.1.0: + version "21.2.1" + resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-21.2.1.tgz#cc0cbca653cd54937ba4f2a111796774530dd3c7" + dependencies: + chalk "^2.0.1" + jest-get-type "^21.2.0" + leven "^2.1.0" + pretty-format "^21.2.1" + jest-validate@^22.4.2: version "22.4.2" resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-22.4.2.tgz#e789a4e056173bf97fe797a2df2d52105c57d4f4" @@ -3584,6 +5017,10 @@ js-tokens@^3.0.0, js-tokens@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b" +js-yaml@0.3.x: + version "0.3.7" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-0.3.7.tgz#d739d8ee86461e54b354d6a7d7d1f2ad9a167f62" + js-yaml@3.x, js-yaml@^3.7.0: version "3.10.0" resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.10.0.tgz#2e78441646bd4682e963f22b6e92823c309c62dc" @@ -3591,6 +5028,20 @@ js-yaml@3.x, js-yaml@^3.7.0: argparse "^1.0.7" esprima "^4.0.0" +js-yaml@^3.4.3, js-yaml@^3.9.1: + version "3.12.0" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.12.0.tgz#eaed656ec8344f10f527c6bfa1b6e2244de167d1" + dependencies: + argparse "^1.0.7" + esprima "^4.0.0" + +js-yaml@~2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-2.0.5.tgz#a25ae6509999e97df278c6719da11bd0687743a8" + dependencies: + argparse "~ 0.1.11" + esprima "~ 1.0.2" + jsbn@~0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" @@ -3630,6 +5081,10 @@ jsesc@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-1.3.0.tgz#46c3fec8c1892b12b0833db9bc7622176dbab34b" +jsmin@1.x: + version "1.0.1" + resolved "https://registry.yarnpkg.com/jsmin/-/jsmin-1.0.1.tgz#e7bd0dcd6496c3bf4863235bf461a3d98aa3b98c" + json-parse-better-errors@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.1.tgz#50183cd1b2d25275de069e9e71b467ac9eab973a" @@ -3642,16 +5097,30 @@ json-schema@0.2.3: version "0.2.3" resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13" +json-stable-stringify-without-jsonify@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" + json-stable-stringify@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz#9a759d39c5f2ff503fd5300646ed445f88c4f9af" dependencies: jsonify "~0.0.0" +json-stable-stringify@~0.0.0: + version "0.0.1" + resolved "https://registry.yarnpkg.com/json-stable-stringify/-/json-stable-stringify-0.0.1.tgz#611c23e814db375527df851193db59dd2af27f45" + dependencies: + jsonify "~0.0.0" + json-stringify-safe@5.0.x, json-stringify-safe@^5.0.1, json-stringify-safe@~5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" +json3@3.3.2: + version "3.3.2" + resolved "https://registry.yarnpkg.com/json3/-/json3-3.3.2.tgz#3c0434743df93e2f5c42aee7b19bcb483575f4e1" + json5@^0.5.1: version "0.5.1" resolved "https://registry.yarnpkg.com/json5/-/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821" @@ -3687,6 +5156,15 @@ just-extend@^1.1.27: version "1.1.27" resolved "https://registry.yarnpkg.com/just-extend/-/just-extend-1.1.27.tgz#ec6e79410ff914e472652abfa0e603c03d60e905" +jxLoader@*: + version "0.1.1" + resolved "https://registry.yarnpkg.com/jxLoader/-/jxLoader-0.1.1.tgz#0134ea5144e533b594fc1ff25ff194e235c53ecd" + dependencies: + js-yaml "0.3.x" + moo-server "1.3.x" + promised-io "*" + walker "1.x" + karma-chai@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/karma-chai/-/karma-chai-0.1.0.tgz#bee5ad40400517811ae34bb945f762909108b79a" @@ -3708,7 +5186,17 @@ karma-coverage@^1.1.1: minimatch "^3.0.0" source-map "^0.5.1" -karma-mocha-reporter@^2.2.5: +karma-failed-reporter@0.0.3: + version "0.0.3" + resolved "https://registry.yarnpkg.com/karma-failed-reporter/-/karma-failed-reporter-0.0.3.tgz#4532ec9652c9fe297d0b72d08d9cade9725ef733" + dependencies: + colors "~0.6.0" + +karma-firefox-launcher@^1.0.1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/karma-firefox-launcher/-/karma-firefox-launcher-1.1.0.tgz#2c47030452f04531eb7d13d4fc7669630bb93339" + +karma-mocha-reporter@^2.2.4, karma-mocha-reporter@^2.2.5: version "2.2.5" resolved "https://registry.yarnpkg.com/karma-mocha-reporter/-/karma-mocha-reporter-2.2.5.tgz#15120095e8ed819186e47a0b012f3cd741895560" dependencies: @@ -3728,6 +5216,15 @@ karma-rollup-preprocessor@^6.0.0: dependencies: chokidar "^2.0.0" +karma-sauce-launcher@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/karma-sauce-launcher/-/karma-sauce-launcher-1.2.0.tgz#6f2558ddef3cf56879fa27540c8ae9f8bfd16bca" + dependencies: + q "^1.5.0" + sauce-connect-launcher "^1.2.2" + saucelabs "^1.4.0" + wd "^1.4.0" + karma-sinon@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/karma-sinon/-/karma-sinon-1.0.5.tgz#4e3443f2830fdecff624d3747163f1217daa2a9a" @@ -3777,6 +5274,38 @@ karma-typescript@^3.0.12: util "^0.10.3" vm-browserify "0.0.4" +karma@^1.7.1: + version "1.7.1" + resolved "https://registry.yarnpkg.com/karma/-/karma-1.7.1.tgz#85cc08e9e0a22d7ce9cca37c4a1be824f6a2b1ae" + dependencies: + bluebird "^3.3.0" + body-parser "^1.16.1" + chokidar "^1.4.1" + colors "^1.1.0" + combine-lists "^1.0.0" + connect "^3.6.0" + core-js "^2.2.0" + di "^0.0.1" + dom-serialize "^2.2.0" + expand-braces "^0.1.1" + glob "^7.1.1" + graceful-fs "^4.1.2" + http-proxy "^1.13.0" + isbinaryfile "^3.0.0" + lodash "^3.8.0" + log4js "^0.6.31" + mime "^1.3.4" + minimatch "^3.0.2" + optimist "^0.6.1" + qjobs "^1.1.4" + range-parser "^1.2.0" + rimraf "^2.6.0" + safe-buffer "^5.0.1" + socket.io "1.7.3" + source-map "^0.5.3" + tmp "0.0.31" + useragent "^2.1.12" + karma@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/karma/-/karma-2.0.2.tgz#4d2db9402850a66551fa784b0164fb0824ed8c4b" @@ -3833,6 +5362,31 @@ kind-of@^6.0.0, kind-of@^6.0.2: version "6.0.2" resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.2.tgz#01146b36a6218e64e58f3a8d66de5d7fc6f6d051" +knox@0.8.x: + version "0.8.10" + resolved "https://registry.yarnpkg.com/knox/-/knox-0.8.10.tgz#6a2edcdac1d2ae379d1e1994d559b95c283b2588" + dependencies: + debug "~0.7.0" + mime "*" + stream-counter "~0.1.0" + xml2js "0.2.x" + +labeled-stream-splicer@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/labeled-stream-splicer/-/labeled-stream-splicer-1.0.2.tgz#4615331537784981e8fd264e1f3a434c4e0ddd65" + dependencies: + inherits "^2.0.1" + isarray "~0.0.1" + stream-splicer "^1.1.0" + +labeled-stream-splicer@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/labeled-stream-splicer/-/labeled-stream-splicer-2.0.1.tgz#9cffa32fd99e1612fd1d86a8db962416d5292926" + dependencies: + inherits "^2.0.1" + isarray "^2.0.4" + stream-splicer "^2.0.0" + lazy-cache@^1.0.3: version "1.0.4" resolved "https://registry.yarnpkg.com/lazy-cache/-/lazy-cache-1.0.4.tgz#a1d78fc3a50474cb80845d3b3b6e1da49a446e8e" @@ -3843,6 +5397,12 @@ lazy-cache@^2.0.2: dependencies: set-getter "^0.1.0" +lazystream@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/lazystream/-/lazystream-1.0.0.tgz#f6995fe0f820392f61396be89462407bb77168e4" + dependencies: + readable-stream "^2.0.5" + lcid@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/lcid/-/lcid-1.0.0.tgz#308accafa0bc483a3867b4b6f2b9506251d1b835" @@ -3901,13 +5461,19 @@ leven@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/leven/-/leven-2.1.0.tgz#c2e7a9f772094dee9d34202ae8acce4687875580" -levn@~0.3.0: +levn@^0.3.0, levn@~0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" dependencies: prelude-ls "~1.1.2" type-check "~0.3.2" +lexical-scope@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/lexical-scope/-/lexical-scope-1.2.0.tgz#fcea5edc704a4b3a8796cdca419c3a0afaf22df4" + dependencies: + astw "^2.0.0" + libbase64@0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/libbase64/-/libbase64-0.1.0.tgz#62351a839563ac5ff5bd26f12f60e9830bb751e6" @@ -3924,6 +5490,73 @@ libqp@1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/libqp/-/libqp-1.1.0.tgz#f5e6e06ad74b794fb5b5b66988bf728ef1dedbe8" +lint-staged@^4.0.4: + version "4.3.0" + resolved "https://registry.yarnpkg.com/lint-staged/-/lint-staged-4.3.0.tgz#ed0779ad9a42c0dc62bb3244e522870b41125879" + dependencies: + app-root-path "^2.0.0" + chalk "^2.1.0" + commander "^2.11.0" + cosmiconfig "^1.1.0" + execa "^0.8.0" + is-glob "^4.0.0" + jest-validate "^21.1.0" + listr "^0.12.0" + lodash "^4.17.4" + log-symbols "^2.0.0" + minimatch "^3.0.0" + npm-which "^3.0.1" + p-map "^1.1.1" + staged-git-files "0.0.4" + stringify-object "^3.2.0" + +listr-silent-renderer@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/listr-silent-renderer/-/listr-silent-renderer-1.1.1.tgz#924b5a3757153770bf1a8e3fbf74b8bbf3f9242e" + +listr-update-renderer@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/listr-update-renderer/-/listr-update-renderer-0.2.0.tgz#ca80e1779b4e70266807e8eed1ad6abe398550f9" + dependencies: + chalk "^1.1.3" + cli-truncate "^0.2.1" + elegant-spinner "^1.0.1" + figures "^1.7.0" + indent-string "^3.0.0" + log-symbols "^1.0.2" + log-update "^1.0.2" + strip-ansi "^3.0.1" + +listr-verbose-renderer@^0.4.0: + version "0.4.1" + resolved "https://registry.yarnpkg.com/listr-verbose-renderer/-/listr-verbose-renderer-0.4.1.tgz#8206f4cf6d52ddc5827e5fd14989e0e965933a35" + dependencies: + chalk "^1.1.3" + cli-cursor "^1.0.2" + date-fns "^1.27.2" + figures "^1.7.0" + +listr@^0.12.0: + version "0.12.0" + resolved "https://registry.yarnpkg.com/listr/-/listr-0.12.0.tgz#6bce2c0f5603fa49580ea17cd6a00cc0e5fa451a" + dependencies: + chalk "^1.1.3" + cli-truncate "^0.2.1" + figures "^1.7.0" + indent-string "^2.1.0" + is-promise "^2.1.0" + is-stream "^1.1.0" + listr-silent-renderer "^1.1.1" + listr-update-renderer "^0.2.0" + listr-verbose-renderer "^0.4.0" + log-symbols "^1.0.2" + log-update "^1.0.2" + ora "^0.2.3" + p-map "^1.1.1" + rxjs "^5.0.0-beta.11" + stream-to-observable "^0.1.0" + strip-ansi "^3.0.1" + load-json-file@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-1.1.0.tgz#956905708d58b4bab4c2261b04f59f31c99374c0" @@ -3959,10 +5592,41 @@ locate-path@^2.0.0: p-locate "^2.0.0" path-exists "^3.0.0" +lodash._baseassign@^3.0.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/lodash._baseassign/-/lodash._baseassign-3.2.0.tgz#8c38a099500f215ad09e59f1722fd0c52bfe0a4e" + dependencies: + lodash._basecopy "^3.0.0" + lodash.keys "^3.0.0" + +lodash._basecopy@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz#8da0e6a876cf344c0ad8a54882111dd3c5c7ca36" + +lodash._basecreate@^3.0.0: + version "3.0.3" + resolved "https://registry.yarnpkg.com/lodash._basecreate/-/lodash._basecreate-3.0.3.tgz#1bc661614daa7fc311b7d03bf16806a0213cf821" + +lodash._getnative@^3.0.0: + version "3.9.1" + resolved "https://registry.yarnpkg.com/lodash._getnative/-/lodash._getnative-3.9.1.tgz#570bc7dede46d61cdcde687d65d3eecbaa3aaff5" + +lodash._isiterateecall@^3.0.0: + version "3.0.9" + resolved "https://registry.yarnpkg.com/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9.tgz#5203ad7ba425fae842460e696db9cf3e6aac057c" + lodash._reinterpolate@~3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz#0ccf2d89166af03b3663c796538b75ac6e114d9d" +lodash.create@3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/lodash.create/-/lodash.create-3.1.1.tgz#d7f2849f0dbda7e04682bb8cd72ab022461debe7" + dependencies: + lodash._baseassign "^3.0.0" + lodash._basecreate "^3.0.0" + lodash._isiterateecall "^3.0.0" + lodash.endswith@^4.2.1: version "4.2.1" resolved "https://registry.yarnpkg.com/lodash.endswith/-/lodash.endswith-4.2.1.tgz#fed59ac1738ed3e236edd7064ec456448b37bc09" @@ -3971,6 +5635,14 @@ lodash.get@^4.4.2: version "4.4.2" resolved "https://registry.yarnpkg.com/lodash.get/-/lodash.get-4.4.2.tgz#2d177f652fa31e939b4438d5341499dfa3825e99" +lodash.isarguments@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz#2f573d85c6a24289ff00663b491c1d338ff3458a" + +lodash.isarray@^3.0.0: + version "3.0.4" + resolved "https://registry.yarnpkg.com/lodash.isarray/-/lodash.isarray-3.0.4.tgz#79e4eb88c36a8122af86f844aa9bcd851b5fbb55" + lodash.isfunction@^3.0.8: version "3.0.9" resolved "https://registry.yarnpkg.com/lodash.isfunction/-/lodash.isfunction-3.0.9.tgz#06de25df4db327ac931981d1bdb067e5af68d051" @@ -3979,6 +5651,14 @@ lodash.isstring@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/lodash.isstring/-/lodash.isstring-4.0.1.tgz#d527dfb5456eca7cc9bb95d5daeaf88ba54a5451" +lodash.keys@^3.0.0: + version "3.1.2" + resolved "https://registry.yarnpkg.com/lodash.keys/-/lodash.keys-3.1.2.tgz#4dbc0472b156be50a0b286855d1bd0b0c656098a" + dependencies: + lodash._getnative "^3.0.0" + lodash.isarguments "^3.0.0" + lodash.isarray "^3.0.0" + lodash.memoize@~3.0.3: version "3.0.4" resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-3.0.4.tgz#2dcbd2c287cbc0a55cc42328bd0c736150d53e3f" @@ -4004,6 +5684,10 @@ lodash.templatesettings@^4.0.0: dependencies: lodash._reinterpolate "~3.0.0" +lodash@4.17.10, lodash@^4.0.1, lodash@^4.16.6, lodash@^4.17.10, lodash@^4.8.0: + version "4.17.10" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.10.tgz#1b7793cf7259ea38fb3661d4d38b3260af8ae4e7" + lodash@^3.8.0: version "3.10.1" resolved "https://registry.yarnpkg.com/lodash/-/lodash-3.10.1.tgz#5bf45e8e49ba4189e17d482789dfd15bd140b7b6" @@ -4012,12 +5696,40 @@ lodash@^4.0.0, lodash@^4.1.0, lodash@^4.13.1, lodash@^4.14.0, lodash@^4.15.0, lo version "4.17.4" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.4.tgz#78203a4d1c328ae1d86dca6460e369b57f4055ae" -log-symbols@^2.1.0: +lodash@~0.9.2: + version "0.9.2" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-0.9.2.tgz#8f3499c5245d346d682e5b0d3b40767e09f1a92c" + +lodash@~2.4.1: + version "2.4.2" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-2.4.2.tgz#fadd834b9683073da179b3eae6d9c0d15053f73e" + +log-symbols@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-1.0.2.tgz#376ff7b58ea3086a0f09facc74617eca501e1a18" + dependencies: + chalk "^1.0.0" + +log-symbols@^2.0.0, log-symbols@^2.1.0: version "2.2.0" resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-2.2.0.tgz#5740e1c5d6f0dfda4ad9323b5332107ef6b4c40a" dependencies: chalk "^2.0.1" +log-update@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/log-update/-/log-update-1.0.2.tgz#19929f64c4093d2d2e7075a1dad8af59c296b8d1" + dependencies: + ansi-escapes "^1.0.0" + cli-cursor "^1.0.2" + +log4js@^0.6.31: + version "0.6.38" + resolved "https://registry.yarnpkg.com/log4js/-/log4js-0.6.38.tgz#2c494116695d6fb25480943d3fc872e662a522fd" + dependencies: + readable-stream "~1.0.2" + semver "~4.3.3" + log4js@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/log4js/-/log4js-1.1.1.tgz#c21d29c7604089e4f255833e7f94b3461de1ff43" @@ -4053,6 +5765,10 @@ loggly@^1.1.0: request "2.75.x" timespan "2.3.x" +lolex@^2.1.2: + version "2.7.0" + resolved "https://registry.yarnpkg.com/lolex/-/lolex-2.7.0.tgz#9c087a69ec440e39d3f796767cf1b2cdc43d5ea5" + lolex@^2.2.0, lolex@^2.3.2: version "2.3.2" resolved "https://registry.yarnpkg.com/lolex/-/lolex-2.3.2.tgz#85f9450425103bf9e7a60668ea25dc43274ca807" @@ -4078,10 +5794,21 @@ lowercase-keys@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-1.0.0.tgz#4e3366b39e7f5457e35f1324bdf6f88d0bfc7306" +lru-cache@2: + version "2.7.3" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-2.7.3.tgz#6d4524e8b955f95d4f5b58851ce21dd72fb4e952" + lru-cache@2.2.x: version "2.2.4" resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-2.2.4.tgz#6c658619becf14031d0d0b594b16042ce4dc063d" +lru-cache@4.1.x: + version "4.1.3" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.3.tgz#a1175cf3496dfc8436c156c334b4955992bce69c" + dependencies: + pseudomap "^1.0.2" + yallist "^2.1.2" + lru-cache@^4.0.1: version "4.1.1" resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.1.tgz#622e32e82488b49279114a4f9ecf45e7cd6bba55" @@ -4150,6 +5877,15 @@ map-visit@^1.0.0: dependencies: object-visit "^1.0.0" +maxmin@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/maxmin/-/maxmin-2.1.0.tgz#4d3b220903d95eee7eb7ac7fa864e72dc09a3166" + dependencies: + chalk "^1.0.0" + figures "^1.0.1" + gzip-size "^3.0.0" + pretty-bytes "^3.0.0" + md5.js@^1.3.4: version "1.3.4" resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.4.tgz#e9bdbde94a20a5ac18b04340fc5764d5b09d901d" @@ -4194,6 +5930,10 @@ meow@^3.3.0, meow@^3.7.0: redent "^1.0.0" trim-newlines "^1.0.0" +merge-descriptors@~1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" + merge-stream@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-1.0.1.tgz#4041202d508a342ba00174008df0c251b8c135e1" @@ -4204,6 +5944,10 @@ merge@^1.1.3: version "1.2.0" resolved "https://registry.yarnpkg.com/merge/-/merge-1.2.0.tgz#7531e39d4949c281a66b8c5a6e0265e8b05894da" +methods@~1.1.1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" + micromatch@^2.1.5, micromatch@^2.3.11: version "2.3.11" resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-2.3.11.tgz#86677c97d1720b363431d04d0d15293bd38c1565" @@ -4251,16 +5995,38 @@ mime-db@~1.30.0: version "1.30.0" resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.30.0.tgz#74c643da2dd9d6a45399963465b26d5ca7d71f01" +mime-db@~1.33.0: + version "1.33.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.33.0.tgz#a3492050a5cb9b63450541e39d9788d2272783db" + mime-types@^2.1.11, mime-types@^2.1.12, mime-types@~2.1.11, mime-types@~2.1.15, mime-types@~2.1.17, mime-types@~2.1.7: version "2.1.17" resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.17.tgz#09d7a393f03e995a79f8af857b70a9e0ab16557a" dependencies: mime-db "~1.30.0" +mime-types@^2.1.3: + version "2.1.18" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.18.tgz#6f323f60a83d11146f831ff11fd66e2fe5503bb8" + dependencies: + mime-db "~1.33.0" + +mime@*: + version "2.3.1" + resolved "https://registry.yarnpkg.com/mime/-/mime-2.3.1.tgz#b1621c54d63b97c47d3cfe7f7215f7d64517c369" + +mime@1.3.4: + version "1.3.4" + resolved "https://registry.yarnpkg.com/mime/-/mime-1.3.4.tgz#115f9e3b6b3daf2959983cb38f149a2d40eb5d53" + mime@^1.3.4: version "1.6.0" resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" +mime@~1.2.5: + version "1.2.11" + resolved "https://registry.yarnpkg.com/mime/-/mime-1.2.11.tgz#58203eed86e3a5ef17aed2b7d9ebd47f0a60dd10" + mimic-fn@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.1.0.tgz#e667783d92e89dbd342818b5230b9d62a672ad18" @@ -4273,12 +6039,32 @@ minimalistic-crypto-utils@^1.0.0, minimalistic-crypto-utils@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" +minimatch@0.3: + version "0.3.0" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-0.3.0.tgz#275d8edaac4f1bb3326472089e7949c8394699dd" + dependencies: + lru-cache "2" + sigmund "~1.0.0" + "minimatch@2 || 3", minimatch@3.0.4, minimatch@^3.0.0, minimatch@^3.0.2, minimatch@^3.0.3, minimatch@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" dependencies: brace-expansion "^1.1.7" +minimatch@^2.0.1: + version "2.0.10" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-2.0.10.tgz#8d087c39c6b38c001b97fca7ce6d0e1e80afbac7" + dependencies: + brace-expansion "^1.0.0" + +minimatch@~0.2.11, minimatch@~0.2.12: + version "0.2.14" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-0.2.14.tgz#c74e780574f63c6f9a090e90efbe6ef53a6a756a" + dependencies: + lru-cache "2" + sigmund "~1.0.0" + minimist@0.0.8: version "0.0.8" resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" @@ -4302,12 +6088,29 @@ mixin-deep@^1.2.0: for-in "^1.0.2" is-extendable "^1.0.1" -mkdirp@0.5.1, mkdirp@0.5.x, "mkdirp@>=0.5 0", mkdirp@^0.5.1, mkdirp@~0.5.0: +mkdirp@0.5.1, mkdirp@0.5.x, "mkdirp@>=0.5 0", mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@~0.5.0: version "0.5.1" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" dependencies: minimist "0.0.8" +mocha@^3.5.0: + version "3.5.3" + resolved "https://registry.yarnpkg.com/mocha/-/mocha-3.5.3.tgz#1e0480fe36d2da5858d1eb6acc38418b26eaa20d" + dependencies: + browser-stdout "1.3.0" + commander "2.9.0" + debug "2.6.8" + diff "3.2.0" + escape-string-regexp "1.0.5" + glob "7.1.1" + growl "1.9.2" + he "1.1.1" + json3 "3.3.2" + lodash.create "3.1.1" + mkdirp "0.5.1" + supports-color "3.1.2" + mocha@^5.1.1: version "5.1.1" resolved "https://registry.yarnpkg.com/mocha/-/mocha-5.1.1.tgz#b774c75609dac05eb48f4d9ba1d827b97fde8a7b" @@ -4334,14 +6137,65 @@ modify-values@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/modify-values/-/modify-values-1.0.0.tgz#e2b6cdeb9ce19f99317a53722f3dbf5df5eaaab2" +module-deps@^3.7.11: + version "3.9.1" + resolved "https://registry.yarnpkg.com/module-deps/-/module-deps-3.9.1.tgz#ea75caf9199090d25b0d5512b5acacb96e7f87f3" + dependencies: + JSONStream "^1.0.3" + browser-resolve "^1.7.0" + concat-stream "~1.4.5" + defined "^1.0.0" + detective "^4.0.0" + duplexer2 "0.0.2" + inherits "^2.0.1" + parents "^1.0.0" + readable-stream "^1.1.13" + resolve "^1.1.3" + stream-combiner2 "~1.0.0" + subarg "^1.0.0" + through2 "^1.0.0" + xtend "^4.0.0" + +module-deps@^6.0.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/module-deps/-/module-deps-6.1.0.tgz#d1e1efc481c6886269f7112c52c3236188e16479" + dependencies: + JSONStream "^1.0.3" + browser-resolve "^1.7.0" + cached-path-relative "^1.0.0" + concat-stream "~1.6.0" + defined "^1.0.0" + detective "^5.0.2" + duplexer2 "^0.1.2" + inherits "^2.0.1" + parents "^1.0.0" + readable-stream "^2.0.2" + resolve "^1.4.0" + stream-combiner2 "^1.1.1" + subarg "^1.0.0" + through2 "^2.0.0" + xtend "^4.0.0" + +module-not-found-error@~1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/module-not-found-error/-/module-not-found-error-1.0.1.tgz#cf8b4ff4f29640674d6cdd02b0e3bc523c2bbdc0" + moment@^2.6.0: version "2.20.1" resolved "https://registry.yarnpkg.com/moment/-/moment-2.20.1.tgz#d6eb1a46cbcc14a2b2f9434112c1ff8907f313fd" +moo-server@*, moo-server@1.3.x: + version "1.3.0" + resolved "https://registry.yarnpkg.com/moo-server/-/moo-server-1.3.0.tgz#5dc79569565a10d6efed5439491e69d2392e58f1" + ms@0.7.1: version "0.7.1" resolved "https://registry.yarnpkg.com/ms/-/ms-0.7.1.tgz#9cd13c03adbff25b65effde7ce864ee952017098" +ms@0.7.2: + version "0.7.2" + resolved "https://registry.yarnpkg.com/ms/-/ms-0.7.2.tgz#ae25cf2512b3885a1d95d7f037868d8431124765" + ms@2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" @@ -4370,6 +6224,10 @@ nanomatch@^1.2.5: snapdragon "^0.8.1" to-regex "^3.0.1" +native-promise-only@^0.8.1: + version "0.8.1" + resolved "https://registry.yarnpkg.com/native-promise-only/-/native-promise-only-0.8.1.tgz#20a318c30cb45f71fe7adfbf7b21c99c1472ef11" + natural-compare@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" @@ -4382,6 +6240,20 @@ netmask@~1.0.4: version "1.0.6" resolved "https://registry.yarnpkg.com/netmask/-/netmask-1.0.6.tgz#20297e89d86f6f6400f250d9f4f6b4c1945fcd35" +next-tick@1: + version "1.0.0" + resolved "https://registry.yarnpkg.com/next-tick/-/next-tick-1.0.0.tgz#ca86d1fe8828169b0120208e3dc8424b9db8342c" + +nise@^1.0.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/nise/-/nise-1.4.1.tgz#78bc2b343d5ff1031ea9d1bb2c87a94c26db7250" + dependencies: + "@sinonjs/formatio" "^2.0.0" + just-extend "^1.1.27" + lolex "^2.3.2" + path-to-regexp "^1.7.0" + text-encoding "^0.6.4" + nise@^1.2.0: version "1.3.2" resolved "https://registry.yarnpkg.com/nise/-/nise-1.3.2.tgz#fd6fd8dc040dfb3c0a45252feb6ff21832309b14" @@ -4392,6 +6264,13 @@ nise@^1.2.0: path-to-regexp "^1.7.0" text-encoding "^0.6.4" +node-fetch@1.6.3: + version "1.6.3" + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-1.6.3.tgz#dc234edd6489982d58e8f0db4f695029abcd8c04" + dependencies: + encoding "^0.1.11" + is-stream "^1.0.1" + node-int64@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b" @@ -4487,6 +6366,12 @@ nopt@^4.0.1: abbrev "1" osenv "^0.1.4" +nopt@~1.0.10: + version "1.0.10" + resolved "https://registry.yarnpkg.com/nopt/-/nopt-1.0.10.tgz#6ddd21bd2a31417b92727dd585f8a6f37608ebee" + dependencies: + abbrev "1" + normalize-package-data@^2.3.0, normalize-package-data@^2.3.2, normalize-package-data@^2.3.4, normalize-package-data@^2.3.5: version "2.4.0" resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.4.0.tgz#12f95a307d58352075a04907b84ac8be98ac012f" @@ -4496,12 +6381,22 @@ normalize-package-data@^2.3.0, normalize-package-data@^2.3.2, normalize-package- semver "2 || 3 || 4 || 5" validate-npm-package-license "^3.0.1" +normalize-path@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-1.0.0.tgz#32d0e472f91ff345701c15a8311018d3b0a90379" + normalize-path@^2.0.0, normalize-path@^2.0.1, normalize-path@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" dependencies: remove-trailing-separator "^1.0.1" +npm-path@^2.0.2: + version "2.0.4" + resolved "https://registry.yarnpkg.com/npm-path/-/npm-path-2.0.4.tgz#c641347a5ff9d6a09e4d9bce5580c4f505278e64" + dependencies: + which "^1.2.10" + npm-run-all@^4.1.2: version "4.1.2" resolved "https://registry.yarnpkg.com/npm-run-all/-/npm-run-all-4.1.2.tgz#90d62d078792d20669139e718621186656cea056" @@ -4522,6 +6417,14 @@ npm-run-path@^2.0.0: dependencies: path-key "^2.0.0" +npm-which@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/npm-which/-/npm-which-3.0.1.tgz#9225f26ec3a285c209cae67c3b11a6b4ab7140aa" + dependencies: + commander "^2.9.0" + npm-path "^2.0.2" + which "^1.2.10" + npmlog@^4.0.2, npmlog@^4.1.2: version "4.1.2" resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b" @@ -4547,6 +6450,10 @@ oauth-sign@~0.8.1, oauth-sign@~0.8.2: version "0.8.2" resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.8.2.tgz#46a6ab7f0aead8deae9ec0565780b7d4efeb9d43" +object-assign@4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.0.tgz#7a3b3d0e98063d43f4c03f2e8ae6cd51a86883a0" + object-assign@^4.0.1, object-assign@^4.1.0: version "4.1.1" resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" @@ -4563,7 +6470,7 @@ object-copy@^0.1.0: define-property "^0.2.5" kind-of "^3.0.3" -object-keys@^1.0.8: +object-keys@^1.0.4, object-keys@^1.0.6, object-keys@^1.0.8: version "1.0.11" resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.0.11.tgz#c54601778ad560f1142ce0e01bcca8b56d13426d" @@ -4605,12 +6512,34 @@ once@1.x, once@^1.3.0, once@^1.3.3, once@^1.4.0: dependencies: wrappy "1" +onetime@^1.0.0: + version "1.1.0" + resolved "http://registry.npmjs.org/onetime/-/onetime-1.1.0.tgz#a1f7838f8314c516f05ecefcbc4ccfe04b4ed789" + onetime@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/onetime/-/onetime-2.0.1.tgz#067428230fd67443b2794b22bba528b6867962d4" dependencies: mimic-fn "^1.0.0" +opencollective@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/opencollective/-/opencollective-1.0.3.tgz#aee6372bc28144583690c3ca8daecfc120dd0ef1" + dependencies: + babel-polyfill "6.23.0" + chalk "1.1.3" + inquirer "3.0.6" + minimist "1.2.0" + node-fetch "1.6.3" + opn "4.0.2" + +opn@4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/opn/-/opn-4.0.2.tgz#7abc22e644dff63b0a96d5ab7f2790c0f01abc95" + dependencies: + object-assign "^4.0.1" + pinkie-promise "^2.0.0" + optimist@^0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/optimist/-/optimist-0.6.1.tgz#da3ea74686fa21a19a111c326e90eb15a0196686" @@ -4618,7 +6547,7 @@ optimist@^0.6.1: minimist "~0.0.1" wordwrap "~0.0.2" -optionator@^0.8.1: +optionator@^0.8.1, optionator@^0.8.2: version "0.8.2" resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.2.tgz#364c5e409d3f4d6301d6c0b4c05bba50180aeb64" dependencies: @@ -4629,14 +6558,37 @@ optionator@^0.8.1: type-check "~0.3.2" wordwrap "~1.0.0" -os-browserify@^0.3.0: +options@>=0.0.5: + version "0.0.6" + resolved "https://registry.yarnpkg.com/options/-/options-0.0.6.tgz#ec22d312806bb53e731773e7cdaefcf1c643128f" + +ora@^0.2.3: + version "0.2.3" + resolved "https://registry.yarnpkg.com/ora/-/ora-0.2.3.tgz#37527d220adcd53c39b73571d754156d5db657a4" + dependencies: + chalk "^1.1.1" + cli-cursor "^1.0.2" + cli-spinners "^0.1.2" + object-assign "^4.0.1" + +os-browserify@^0.3.0, os-browserify@~0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.3.0.tgz#854373c7f5c2315914fc9bfc6bd8238fdda1ec27" -os-homedir@^1.0.0: +os-browserify@~0.1.1: + version "0.1.2" + resolved "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.1.2.tgz#49ca0293e0b19590a5f5de10c7f265a617d8fe54" + +os-homedir@^1.0.0, os-homedir@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" +os-locale@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-1.4.0.tgz#20f9f17ae29ed345e8bde583b13d2009803c14d9" + dependencies: + lcid "^1.0.0" + os-locale@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-2.1.0.tgz#42bc2900a6b5b8bd17376c8e882b65afccf24bf2" @@ -4656,6 +6608,12 @@ osenv@^0.1.4: os-homedir "^1.0.0" os-tmpdir "^1.0.0" +outpipe@^1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/outpipe/-/outpipe-1.1.1.tgz#50cf8616365e87e031e29a5ec9339a3da4725fa2" + dependencies: + shell-quote "^1.4.2" + p-finally@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" @@ -4672,6 +6630,10 @@ p-locate@^2.0.0: dependencies: p-limit "^1.1.0" +p-map@^1.1.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/p-map/-/p-map-1.2.0.tgz#e4e94f311eabbc8633a1e79908165fca26241b6b" + p-try@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3" @@ -4709,16 +6671,30 @@ package-json@^4.0.1: registry-url "^3.0.3" semver "^5.1.0" +"package@>= 1.0.0 < 1.2.0": + version "1.0.1" + resolved "https://registry.yarnpkg.com/package/-/package-1.0.1.tgz#d25a1f99e2506dcb27d6704b83dca8a312e4edcc" + pad@^2.0.0: version "2.0.3" resolved "https://registry.yarnpkg.com/pad/-/pad-2.0.3.tgz#e2b877496c5576c299ee3df93bee95b76532dffb" dependencies: wcwidth "^1.0.1" +pako@~0.2.0: + version "0.2.9" + resolved "https://registry.yarnpkg.com/pako/-/pako-0.2.9.tgz#f3f7522f4ef782348da8161bad9ecfd51bf83a75" + pako@~1.0.5: version "1.0.6" resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.6.tgz#0101211baa70c4bca4a0f63f2206e97b7dfaf258" +parents@^1.0.0, parents@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/parents/-/parents-1.0.1.tgz#fedd4d2bf193a77745fe71e371d73c3307d9c751" + dependencies: + path-platform "~0.11.15" + parse-asn1@^5.0.0: version "5.1.0" resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.0.tgz#37c4f9b7ed3ab65c74817b5f2480937fbf97c712" @@ -4759,6 +6735,12 @@ parse5@4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/parse5/-/parse5-4.0.0.tgz#6d78656e3da8d78b4ec0b906f7c08ef1dfe3f608" +parsejson@0.0.3: + version "0.0.3" + resolved "https://registry.yarnpkg.com/parsejson/-/parsejson-0.0.3.tgz#ab7e3759f209ece99437973f7d0f1f64ae0e64ab" + dependencies: + better-assert "~1.0.0" + parseqs@0.0.5: version "0.0.5" resolved "https://registry.yarnpkg.com/parseqs/-/parseqs-0.0.5.tgz#d5208a3738e46766e291ba2ea173684921a8b89d" @@ -4779,7 +6761,7 @@ pascalcase@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" -path-browserify@0.0.0: +path-browserify@0.0.0, path-browserify@~0.0.0: version "0.0.0" resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-0.0.0.tgz#a0b870729aae214005b7d5032ec2cbbb0fb4451a" @@ -4801,6 +6783,10 @@ path-is-absolute@^1.0.0, path-is-absolute@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" +path-is-inside@^1.0.1, path-is-inside@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53" + path-key@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" @@ -4809,6 +6795,10 @@ path-parse@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.5.tgz#3c1adf871ea9cd6c9431b6ea2bd74a0ff055c4c1" +path-platform@~0.11.15: + version "0.11.15" + resolved "https://registry.yarnpkg.com/path-platform/-/path-platform-0.11.15.tgz#e864217f74c36850f0852b78dc7bf7d4a5721bf2" + path-proxy@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/path-proxy/-/path-proxy-1.0.0.tgz#18e8a36859fc9d2f1a53b48dee138543c020de5e" @@ -4869,6 +6859,10 @@ performance-now@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" +pff@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/pff/-/pff-1.0.0.tgz#ea5f09ee6571cae292a78fc280905a3865668e78" + pify@^2.0.0, pify@^2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" @@ -4903,6 +6897,10 @@ plugin-error@^0.1.2: arr-union "^2.0.1" extend-shallow "^1.1.2" +pluralize@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/pluralize/-/pluralize-7.0.0.tgz#298b89df8b93b0221dbf421ad2b1b1ea23fc6777" + pn@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/pn/-/pn-1.1.0.tgz#e2f4cef0e219f463c179ab37463e4e1ecdccbafb" @@ -4933,6 +6931,23 @@ prettier@^1.12.1: version "1.12.1" resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.12.1.tgz#c1ad20e803e7749faf905a409d2367e06bbe7325" +prettier@^1.6.1: + version "1.13.4" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.13.4.tgz#31bbae6990f13b1093187c731766a14036fa72e6" + +pretty-bytes@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-3.0.1.tgz#27d0008d778063a0b4811bb35c79f1bd5d5fbccf" + dependencies: + number-is-nan "^1.0.0" + +pretty-format@^21.2.1: + version "21.2.1" + resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-21.2.1.tgz#ae5407f3cf21066cd011aa1ba5fce7b6a2eddb36" + dependencies: + ansi-regex "^3.0.0" + ansi-styles "^3.2.0" + pretty-format@^22.4.0: version "22.4.0" resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-22.4.0.tgz#237b1f7e1c50ed03bc65c03ccc29d7c8bb7beb94" @@ -4947,6 +6962,12 @@ pretty-format@^22.4.3: ansi-regex "^3.0.0" ansi-styles "^3.2.0" +prettycli@^1.4.3: + version "1.4.3" + resolved "https://registry.yarnpkg.com/prettycli/-/prettycli-1.4.3.tgz#b28ec2aad9de07ae1fd75ef294fb54cbdee07ed5" + dependencies: + chalk "2.1.0" + private@^0.1.7: version "0.1.8" resolved "https://registry.yarnpkg.com/private/-/private-0.1.8.tgz#2381edb3689f7a53d653190060fcf822d2f368ff" @@ -4955,10 +6976,22 @@ process-nextick-args@~1.0.6: version "1.0.7" resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-1.0.7.tgz#150e20b756590ad3f91093f25a4f2ad8bff30ba3" -process@^0.11.10: +process-nextick-args@~2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.0.tgz#a37d732f4271b4ab1ad070d35508e8290788ffaa" + +process@^0.11.10, process@~0.11.0: version "0.11.10" resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" +progress@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.0.tgz#8a1be366bf8fc23db2bd23f10c6fe920b4389d1f" + +promised-io@*: + version "0.3.5" + resolved "https://registry.yarnpkg.com/promised-io/-/promised-io-0.3.5.tgz#4ad217bb3658bcaae9946b17a8668ecd851e1356" + proxy-agent@~2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/proxy-agent/-/proxy-agent-2.0.0.tgz#57eb5347aa805d74ec681cb25649dba39c933499" @@ -4972,6 +7005,19 @@ proxy-agent@~2.0.0: pac-proxy-agent "1" socks-proxy-agent "2" +proxyquireify@^3.0.2: + version "3.2.1" + resolved "https://registry.yarnpkg.com/proxyquireify/-/proxyquireify-3.2.1.tgz#15bee101360acc91dcd86ee4d9a445f8a971eea0" + dependencies: + browser-pack "^6.0.0" + detective "~4.1.0" + fill-keys "^1.0.0" + has-require "^1.1.0" + module-not-found-error "~1.0.1" + require-deps "~1.0.1" + through "~2.2.7" + xtend "^3.0.0" + ps-tree@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/ps-tree/-/ps-tree-1.1.0.tgz#b421b24140d6203f1ed3c76996b4427b08e8c014" @@ -4996,7 +7042,7 @@ punycode@1.3.2: version "1.3.2" resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d" -punycode@1.4.1, punycode@^1.4.1: +punycode@1.4.1, punycode@^1.3.2, punycode@^1.4.1: version "1.4.1" resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" @@ -5004,18 +7050,22 @@ punycode@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.0.tgz#5f863edc89b96db09074bad7947bf09056ca4e7d" -q@^1.4.1: - version "1.5.1" - resolved "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7" - -q@~1.4.0: +q@1.4.1, q@~1.4.0: version "1.4.1" resolved "https://registry.yarnpkg.com/q/-/q-1.4.1.tgz#55705bcd93c5f3673530c2c2cbc0c2b3addc286e" +q@^1.4.1, q@^1.5.0: + version "1.5.1" + resolved "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7" + qjobs@^1.1.4: version "1.1.5" resolved "https://registry.yarnpkg.com/qjobs/-/qjobs-1.1.5.tgz#659de9f2cf8dcc27a1481276f205377272382e73" +qs@2.3.3: + version "2.3.3" + resolved "https://registry.yarnpkg.com/qs/-/qs-2.3.3.tgz#e9e85adbe75da0bbe4c8e0476a086290f863b404" + qs@6.5.1, qs@~6.5.1: version "6.5.1" resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.1.tgz#349cdf6eef89ec45c12d7d5eb3fc0c870343a6d8" @@ -5028,7 +7078,7 @@ qs@~6.4.0: version "6.4.0" resolved "https://registry.yarnpkg.com/qs/-/qs-6.4.0.tgz#13e26d28ad6b0ffaa91312cd3bf708ed351e7233" -querystring-es3@^0.2.1: +querystring-es3@^0.2.1, querystring-es3@~0.2.0: version "0.2.1" resolved "https://registry.yarnpkg.com/querystring-es3/-/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73" @@ -5036,6 +7086,10 @@ querystring@0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620" +ramda@^0.11.0: + version "0.11.0" + resolved "https://registry.yarnpkg.com/ramda/-/ramda-0.11.0.tgz#bd23d986c6ce3f30481d7a7e61ba4f3bfefb909e" + randomatic@^1.1.3: version "1.1.7" resolved "https://registry.yarnpkg.com/randomatic/-/randomatic-1.1.7.tgz#c7abe9cc8b87c0baa876b19fde83fd464797e38c" @@ -5060,10 +7114,6 @@ range-parser@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.0.tgz#f49be6b487894ddc40dcc94a322f611092e00d5e" -raven-js@^3.24.2: - version "3.24.2" - resolved "https://registry.yarnpkg.com/raven-js/-/raven-js-3.24.2.tgz#c5cacb363b198812e80cd4c6714e5e478549ebcf" - raven@^2.6.0: version "2.6.0" resolved "https://registry.yarnpkg.com/raven/-/raven-2.6.0.tgz#3806a82c9ee8cd3e75c3b7ea7bb1935aad092d0c" @@ -5107,6 +7157,19 @@ read-cmd-shim@^1.0.1: dependencies: graceful-fs "^4.1.2" +read-only-stream@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/read-only-stream/-/read-only-stream-1.1.1.tgz#5da77c799ed1388d3ef88a18471bb5924f8a0ba1" + dependencies: + readable-stream "^1.0.31" + readable-wrap "^1.0.0" + +read-only-stream@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/read-only-stream/-/read-only-stream-2.0.0.tgz#2724fd6a8113d73764ac288d4386270c1dbf17f0" + dependencies: + readable-stream "^2.0.2" + read-pkg-up@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-1.0.1.tgz#9d63c13276c065918d57f002a57f40a1b643fb02" @@ -5145,7 +7208,16 @@ read-pkg@^3.0.0: normalize-package-data "^2.3.2" path-type "^3.0.0" -readable-stream@1.1.x, "readable-stream@1.x >=1.1.9", readable-stream@^1.1.7: +readable-stream@1.0.27-1: + version "1.0.27-1" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.0.27-1.tgz#6b67983c20357cefd07f0165001a16d710d91078" + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.1" + isarray "0.0.1" + string_decoder "~0.10.x" + +readable-stream@1.1.x, "readable-stream@1.x >=1.1.9", "readable-stream@>=1.1.13-1 <1.2.0-0", readable-stream@^1.0.31, readable-stream@^1.1.13, readable-stream@^1.1.13-1, readable-stream@^1.1.7, readable-stream@~1.1.9: version "1.1.14" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.1.14.tgz#7cf4c54ef648e3813084c636dd2079e166c081d9" dependencies: @@ -5166,6 +7238,27 @@ readable-stream@2, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stre string_decoder "~1.0.3" util-deprecate "~1.0.1" +"readable-stream@>=1.0.33-1 <1.1.0-0", readable-stream@~1.0.17, readable-stream@~1.0.2: + version "1.0.34" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.0.34.tgz#125820e34bc842d2f2aaafafe4c2916ee32c157c" + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.1" + isarray "0.0.1" + string_decoder "~0.10.x" + +readable-stream@^2.0.0, readable-stream@^2.0.5, readable-stream@^2.3.5, readable-stream@^2.3.6: + version "2.3.6" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.6.tgz#b11c27d88b8ff1fbe070643cf94b0c79ae1b0aaf" + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.3" + isarray "~1.0.0" + process-nextick-args "~2.0.0" + safe-buffer "~5.1.1" + string_decoder "~1.1.1" + util-deprecate "~1.0.1" + readable-stream@~2.0.0, readable-stream@~2.0.5: version "2.0.6" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.0.6.tgz#8f90341e68a53ccc928788dacfcd11b36eb9b78e" @@ -5177,6 +7270,12 @@ readable-stream@~2.0.0, readable-stream@~2.0.5: string_decoder "~0.10.x" util-deprecate "~1.0.1" +readable-wrap@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/readable-wrap/-/readable-wrap-1.0.0.tgz#3b5a211c631e12303a54991c806c17e7ae206bff" + dependencies: + readable-stream "^1.1.13-1" + readdirp@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.1.0.tgz#4ed0ad060df3073300c48440373f72d1cc642d78" @@ -5215,6 +7314,14 @@ redis@^2.7.1: redis-commands "^1.2.0" redis-parser "^2.6.0" +reduce-component@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/reduce-component/-/reduce-component-1.0.1.tgz#e0c93542c574521bea13df0f9488ed82ab77c5da" + +regenerator-runtime@^0.10.0: + version "0.10.5" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.10.5.tgz#336c3efc1220adcedda2c9fab67b5a7955a33658" + regenerator-runtime@^0.11.0: version "0.11.1" resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz#be05ad7f9bf7d22e056f9726cee5017fbf19e2e9" @@ -5231,6 +7338,10 @@ regex-not@^1.0.0: dependencies: extend-shallow "^2.0.1" +regexpp@^1.0.1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-1.1.0.tgz#0e3516dd0b7904f413d2d4193dce4618c3a689ab" + registry-auth-token@^3.0.1: version "3.3.2" resolved "https://registry.yarnpkg.com/registry-auth-token/-/registry-auth-token-3.3.2.tgz#851fd49038eecb586911115af845260eec983f20" @@ -5344,6 +7455,33 @@ request@2.81.0: tunnel-agent "^0.6.0" uuid "^3.0.0" +request@2.85.0: + version "2.85.0" + resolved "https://registry.yarnpkg.com/request/-/request-2.85.0.tgz#5a03615a47c61420b3eb99b7dba204f83603e1fa" + dependencies: + aws-sign2 "~0.7.0" + aws4 "^1.6.0" + caseless "~0.12.0" + combined-stream "~1.0.5" + extend "~3.0.1" + forever-agent "~0.6.1" + form-data "~2.3.1" + har-validator "~5.0.3" + hawk "~6.0.2" + http-signature "~1.2.0" + is-typedarray "~1.0.0" + isstream "~0.1.2" + json-stringify-safe "~5.0.1" + mime-types "~2.1.17" + oauth-sign "~0.8.2" + performance-now "^2.1.0" + qs "~6.5.1" + safe-buffer "^5.1.1" + stringstream "~0.0.5" + tough-cookie "~2.3.3" + tunnel-agent "^0.6.0" + uuid "^3.1.0" + request@^2.0.0, request@^2.74.0, request@^2.83.0: version "2.83.0" resolved "https://registry.yarnpkg.com/request/-/request-2.83.0.tgz#ca0b65da02ed62935887808e6f510381034e3356" @@ -5380,14 +7518,31 @@ requestretry@^1.2.2: request "^2.74.0" when "^3.7.7" +require-deps@~1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/require-deps/-/require-deps-1.0.1.tgz#2415cf49c35bd36a5d3177395108d3f237205263" + dependencies: + pff "~1.0.0" + require-directory@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" +require-from-string@^1.1.0: + version "1.2.1" + resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-1.2.1.tgz#529c9ccef27380adfec9a2f965b649bbee636418" + require-main-filename@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1" +require-uncached@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/require-uncached/-/require-uncached-1.0.3.tgz#4e0d56d6c9662fd31e43011c4b95aa49955421d3" + dependencies: + caller-path "^0.1.0" + resolve-from "^1.0.0" + requires-port@1.x.x: version "1.0.0" resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" @@ -5398,6 +7553,10 @@ resolve-cwd@^2.0.0: dependencies: resolve-from "^3.0.0" +resolve-from@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-1.0.1.tgz#26cbfe935d1aeeeabb29bc3fe5aeb01e93d44226" + resolve-from@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-3.0.0.tgz#b22c7af7d9d6881bc8b6e653335eebcb0a188748" @@ -5410,17 +7569,28 @@ resolve@1.1.7, resolve@1.1.x: version "1.1.7" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b" +resolve@^1.1.3, resolve@^1.1.4, resolve@^1.4.0, resolve@^1.7.1: + version "1.7.1" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.7.1.tgz#aadd656374fd298aee895bc026b8297418677fd3" + dependencies: + path-parse "^1.0.5" + resolve@^1.1.6, resolve@^1.1.7, resolve@^1.3.2, resolve@^1.5.0: version "1.5.0" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.5.0.tgz#1f09acce796c9a762579f31b2c1cc4c3cddf9f36" dependencies: path-parse "^1.0.5" -resolve@^1.7.1: - version "1.7.1" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.7.1.tgz#aadd656374fd298aee895bc026b8297418677fd3" +resolve@~0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-0.3.1.tgz#34c63447c664c70598d1c9b126fc43b2a24310a4" + +restore-cursor@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-1.0.1.tgz#34661f46886327fed2991479152252df92daa541" dependencies: - path-parse "^1.0.5" + exit-hook "^1.0.0" + onetime "^1.0.0" restore-cursor@^2.0.0: version "2.0.0" @@ -5435,12 +7605,16 @@ right-align@^0.1.1: dependencies: align-text "^0.1.1" -rimraf@2, rimraf@^2.5.1, rimraf@^2.5.4, rimraf@^2.6.0, rimraf@^2.6.1, rimraf@^2.6.2: +rimraf@2, rimraf@^2.2.1, rimraf@^2.2.8, rimraf@^2.5.1, rimraf@^2.5.4, rimraf@^2.6.0, rimraf@^2.6.1, rimraf@^2.6.2: version "2.6.2" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.2.tgz#2ed8150d24a16ea8651e6d6ef0f47c4158ce7a36" dependencies: glob "^7.0.5" +rimraf@~2.2.8: + version "2.2.8" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.2.8.tgz#e439be2aaee327321952730f99a8929e4fc50582" + ripemd160@^2.0.0, ripemd160@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.1.tgz#0f4584295c53a3628af7e6d79aca21ce57d1c6e7" @@ -5518,11 +7692,25 @@ rx-lite@*, rx-lite@^4.0.8: version "4.0.8" resolved "https://registry.yarnpkg.com/rx-lite/-/rx-lite-4.0.8.tgz#0b1e11af8bc44836f04a6407e92da42467b79444" +rx@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/rx/-/rx-4.1.0.tgz#a5f13ff79ef3b740fe30aa803fb09f98805d4782" + +rxjs@^5.0.0-beta.11: + version "5.5.11" + resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-5.5.11.tgz#f733027ca43e3bec6b994473be4ab98ad43ced87" + dependencies: + symbol-observable "1.0.1" + safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@~5.1.0, safe-buffer@~5.1.1: version "5.1.1" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.1.tgz#893312af69b2123def71f57889001671eeb2c853" -samsam@1.3.0: +"safer-buffer@>= 2.1.2 < 3": + version "2.1.2" + resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" + +samsam@1.3.0, samsam@1.x, samsam@^1.1.3: version "1.3.0" resolved "https://registry.yarnpkg.com/samsam/-/samsam-1.3.0.tgz#8d1d9350e25622da30de3e44ba692b5221ab7c50" @@ -5540,6 +7728,26 @@ sane@^2.0.0: optionalDependencies: fsevents "^1.1.1" +sauce-connect-launcher@^1.2.2: + version "1.2.4" + resolved "https://registry.yarnpkg.com/sauce-connect-launcher/-/sauce-connect-launcher-1.2.4.tgz#8d38f85242a9fbede1b2303b559f7e20c5609a1c" + dependencies: + adm-zip "~0.4.3" + async "^2.1.2" + https-proxy-agent "^2.2.1" + lodash "^4.16.6" + rimraf "^2.5.4" + +saucelabs@^1.4.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/saucelabs/-/saucelabs-1.5.0.tgz#9405a73c360d449b232839919a86c396d379fd9d" + dependencies: + https-proxy-agent "^2.2.1" + +sax@0.5.x: + version "0.5.8" + resolved "https://registry.yarnpkg.com/sax/-/sax-0.5.8.tgz#d472db228eb331c2506b0e8c15524adb939d12c1" + sax@^1.2.4: version "1.2.4" resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" @@ -5548,6 +7756,10 @@ sax@^1.2.4: version "5.5.0" resolved "https://registry.yarnpkg.com/semver/-/semver-5.5.0.tgz#dc4bbc7a6ca9d916dee5d43516f0092b58f7b8ab" +semver@^4.3.6, semver@~4.3.3: + version "4.3.6" + resolved "https://registry.yarnpkg.com/semver/-/semver-4.3.6.tgz#300bc6e0e86374f7ba61068b5b1ecd57fc6532da" + semver@~5.0.1: version "5.0.3" resolved "https://registry.yarnpkg.com/semver/-/semver-5.0.3.tgz#77466de589cd5d3c95f138aa78bc569a3cb5d27a" @@ -5599,6 +7811,20 @@ sha.js@^2.4.0, sha.js@^2.4.8: inherits "^2.0.1" safe-buffer "^5.0.1" +sha.js@~2.4.4: + version "2.4.11" + resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.11.tgz#37a5cf0b81ecbc6943de109ba2960d1b26584ae7" + dependencies: + inherits "^2.0.1" + safe-buffer "^5.0.1" + +shasum@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/shasum/-/shasum-1.0.2.tgz#e7012310d8f417f4deb5712150e5678b87ae565f" + dependencies: + json-stable-stringify "~0.0.0" + sha.js "~2.4.4" + shebang-command@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" @@ -5609,7 +7835,7 @@ shebang-regex@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" -shell-quote@^1.6.1: +shell-quote@^1.4.2, shell-quote@^1.6.1: version "1.6.1" resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.6.1.tgz#f4781949cce402697127430ea3b3c5476f481767" dependencies: @@ -5618,14 +7844,42 @@ shell-quote@^1.6.1: array-reduce "~0.0.0" jsonify "~0.0.0" +shell-quote@~0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-0.0.1.tgz#1a41196f3c0333c482323593d6886ecf153dd986" + +shelljs@^0.5.1: + version "0.5.3" + resolved "https://registry.yarnpkg.com/shelljs/-/shelljs-0.5.3.tgz#c54982b996c76ef0c1e6b59fbdc5825f5b713113" + shellwords@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/shellwords/-/shellwords-0.1.1.tgz#d6b9181c1a48d397324c84871efbcfc73fc0654b" +sigmund@~1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/sigmund/-/sigmund-1.0.1.tgz#3ff21f198cad2175f9f3b781853fd94d0d19b590" + signal-exit@^3.0.0, signal-exit@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" +sinon@^3.2.1: + version "3.3.0" + resolved "https://registry.yarnpkg.com/sinon/-/sinon-3.3.0.tgz#9132111b4bbe13c749c2848210864250165069b1" + dependencies: + build "^0.1.4" + diff "^3.1.0" + formatio "1.2.0" + lodash.get "^4.4.2" + lolex "^2.1.2" + native-promise-only "^0.8.1" + nise "^1.0.1" + path-to-regexp "^1.7.0" + samsam "^1.1.3" + text-encoding "0.6.4" + type-detect "^4.0.0" + sinon@^5.0.3: version "5.0.3" resolved "https://registry.yarnpkg.com/sinon/-/sinon-5.0.3.tgz#9950f1616187ff0cd7d75a60d66bc27fed569945" @@ -5648,6 +7902,16 @@ slash@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/slash/-/slash-1.0.0.tgz#c41f2f6c39fc16d1cd17ad4b5d896114ae470d55" +slice-ansi@0.0.4: + version "0.0.4" + resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-0.0.4.tgz#edbf8903f66f7ce2f8eafd6ceed65e264c831b35" + +slice-ansi@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-1.0.0.tgz#044f1a49d8842ff307aad6b505ed178bd950134d" + dependencies: + is-fullwidth-code-point "^2.0.0" + smart-buffer@^1.0.13, smart-buffer@^1.0.4: version "1.1.15" resolved "https://registry.yarnpkg.com/smart-buffer/-/smart-buffer-1.1.15.tgz#7f114b5b65fab3e2a35aa775bb12f0d1c649bf16" @@ -5698,10 +7962,33 @@ sntp@2.x.x: dependencies: hoek "4.x.x" +socket.io-adapter@0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/socket.io-adapter/-/socket.io-adapter-0.5.0.tgz#cb6d4bb8bec81e1078b99677f9ced0046066bb8b" + dependencies: + debug "2.3.3" + socket.io-parser "2.3.1" + socket.io-adapter@~1.1.0: version "1.1.1" resolved "https://registry.yarnpkg.com/socket.io-adapter/-/socket.io-adapter-1.1.1.tgz#2a805e8a14d6372124dd9159ad4502f8cb07f06b" +socket.io-client@1.7.3: + version "1.7.3" + resolved "https://registry.yarnpkg.com/socket.io-client/-/socket.io-client-1.7.3.tgz#b30e86aa10d5ef3546601c09cde4765e381da377" + dependencies: + backo2 "1.0.2" + component-bind "1.0.0" + component-emitter "1.2.1" + debug "2.3.3" + engine.io-client "1.8.3" + has-binary "0.1.7" + indexof "0.0.1" + object-component "0.0.3" + parseuri "0.0.5" + socket.io-parser "2.3.1" + to-array "0.1.4" + socket.io-client@2.0.4: version "2.0.4" resolved "https://registry.yarnpkg.com/socket.io-client/-/socket.io-client-2.0.4.tgz#0918a552406dc5e540b380dcd97afc4a64332f8e" @@ -5720,6 +8007,15 @@ socket.io-client@2.0.4: socket.io-parser "~3.1.1" to-array "0.1.4" +socket.io-parser@2.3.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/socket.io-parser/-/socket.io-parser-2.3.1.tgz#dd532025103ce429697326befd64005fcfe5b4a0" + dependencies: + component-emitter "1.1.2" + debug "2.2.0" + isarray "0.0.1" + json3 "3.3.2" + socket.io-parser@~3.1.1: version "3.1.2" resolved "https://registry.yarnpkg.com/socket.io-parser/-/socket.io-parser-3.1.2.tgz#dbc2282151fc4faebbe40aeedc0772eba619f7f2" @@ -5729,6 +8025,18 @@ socket.io-parser@~3.1.1: has-binary2 "~1.0.2" isarray "2.0.1" +socket.io@1.7.3: + version "1.7.3" + resolved "https://registry.yarnpkg.com/socket.io/-/socket.io-1.7.3.tgz#b8af9caba00949e568e369f1327ea9be9ea2461b" + dependencies: + debug "2.3.3" + engine.io "1.8.3" + has-binary "0.1.7" + object-assign "4.1.0" + socket.io-adapter "0.5.0" + socket.io-client "1.7.3" + socket.io-parser "2.3.1" + socket.io@2.0.4: version "2.0.4" resolved "https://registry.yarnpkg.com/socket.io/-/socket.io-2.0.4.tgz#c1a4590ceff87ecf13c72652f046f716b29e6014" @@ -5797,7 +8105,7 @@ source-map@0.6.1, source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" -source-map@^0.4.4: +source-map@^0.4.4, source-map@~0.4.0, source-map@~0.4.2: version "0.4.4" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.4.4.tgz#eba4f5da9c0dc999de68032d8b4f76173652036b" dependencies: @@ -5851,10 +8159,18 @@ split@^1.0.0: dependencies: through "2" +sprintf-js@^1.0.3: + version "1.1.1" + resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.1.1.tgz#36be78320afe5801f6cea3ee78b6e5aab940ea0c" + sprintf-js@~1.0.2: version "1.0.3" resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" +sri-toolbox@^0.1.3: + version "0.1.3" + resolved "https://registry.yarnpkg.com/sri-toolbox/-/sri-toolbox-0.1.3.tgz#8844999ee6d67988ec8b1f92330e2cf2168d0f09" + sshpk@^1.7.0: version "1.13.1" resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.13.1.tgz#512df6da6287144316dc4c18fe1cf1d940739be3" @@ -5869,7 +8185,7 @@ sshpk@^1.7.0: jsbn "~0.1.0" tweetnacl "~0.14.0" -stack-trace@0.0.10, stack-trace@~0.0.7: +stack-trace@0.0.10, stack-trace@0.0.x, stack-trace@~0.0.7: version "0.0.10" resolved "https://registry.yarnpkg.com/stack-trace/-/stack-trace-0.0.10.tgz#547c70b347e8d32b4e108ea1a2a159e5fdde19c0" @@ -5877,6 +8193,10 @@ stack-utils@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-1.0.1.tgz#d4f33ab54e8e38778b0ca5cfd3b3afb12db68620" +staged-git-files@0.0.4: + version "0.0.4" + resolved "https://registry.yarnpkg.com/staged-git-files/-/staged-git-files-0.0.4.tgz#d797e1b551ca7a639dec0237dc6eb4bb9be17d35" + static-extend@^0.1.1: version "0.1.2" resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6" @@ -5896,19 +8216,60 @@ stealthy-require@^1.1.0: version "1.1.1" resolved "https://registry.yarnpkg.com/stealthy-require/-/stealthy-require-1.1.1.tgz#35b09875b4ff49f26a777e509b3090a3226bf24b" -stream-browserify@^2.0.1: +stream-browserify@^2.0.0, stream-browserify@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-2.0.1.tgz#66266ee5f9bdb9940a4e4514cafb43bb71e5c9db" dependencies: inherits "~2.0.1" readable-stream "^2.0.2" +stream-combiner2@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/stream-combiner2/-/stream-combiner2-1.1.1.tgz#fb4d8a1420ea362764e21ad4780397bebcb41cbe" + dependencies: + duplexer2 "~0.1.0" + readable-stream "^2.0.2" + +stream-combiner2@~1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/stream-combiner2/-/stream-combiner2-1.0.2.tgz#ba72a6b50cbfabfa950fc8bc87604bd01eb60671" + dependencies: + duplexer2 "~0.0.2" + through2 "~0.5.1" + stream-combiner@~0.0.4: version "0.0.4" resolved "https://registry.yarnpkg.com/stream-combiner/-/stream-combiner-0.0.4.tgz#4d5e433c185261dde623ca3f44c586bcf5c4ad14" dependencies: duplexer "~0.1.1" +stream-counter@~0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/stream-counter/-/stream-counter-0.1.0.tgz#a035e429361fb57f361606e17fcd8a8b9677327b" + dependencies: + readable-stream "~1.0.2" + +stream-http@^1.2.0: + version "1.7.1" + resolved "https://registry.yarnpkg.com/stream-http/-/stream-http-1.7.1.tgz#d3d2a6e14c36a38b9dafb199aee7bbc570519978" + dependencies: + builtin-status-codes "^1.0.0" + foreach "^2.0.5" + indexof "0.0.1" + inherits "^2.0.1" + object-keys "^1.0.4" + xtend "^4.0.0" + +stream-http@^2.0.0: + version "2.8.3" + resolved "https://registry.yarnpkg.com/stream-http/-/stream-http-2.8.3.tgz#b2d242469288a5a27ec4fe8933acf623de6514fc" + dependencies: + builtin-status-codes "^3.0.0" + inherits "^2.0.1" + readable-stream "^2.3.6" + to-arraybuffer "^1.0.0" + xtend "^4.0.0" + stream-http@^2.7.2: version "2.8.0" resolved "https://registry.yarnpkg.com/stream-http/-/stream-http-2.8.0.tgz#fd86546dac9b1c91aff8fc5d287b98fafb41bc10" @@ -5919,6 +8280,28 @@ stream-http@^2.7.2: to-arraybuffer "^1.0.0" xtend "^4.0.0" +stream-splicer@^1.1.0: + version "1.3.2" + resolved "https://registry.yarnpkg.com/stream-splicer/-/stream-splicer-1.3.2.tgz#3c0441be15b9bf4e226275e6dc83964745546661" + dependencies: + indexof "0.0.1" + inherits "^2.0.1" + isarray "~0.0.1" + readable-stream "^1.1.13-1" + readable-wrap "^1.0.0" + through2 "^1.0.0" + +stream-splicer@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/stream-splicer/-/stream-splicer-2.0.0.tgz#1b63be438a133e4b671cc1935197600175910d83" + dependencies: + inherits "^2.0.1" + readable-stream "^2.0.2" + +stream-to-observable@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/stream-to-observable/-/stream-to-observable-0.1.0.tgz#45bf1d9f2d7dc09bed81f1c307c430e68b84cffe" + streamroller@^0.4.0: version "0.4.1" resolved "https://registry.yarnpkg.com/streamroller/-/streamroller-0.4.1.tgz#d435bd5974373abd9bd9068359513085106cc05f" @@ -5973,10 +8356,24 @@ string_decoder@^1.0.3, string_decoder@~1.0.3: dependencies: safe-buffer "~5.1.0" -string_decoder@~0.10.x: +string_decoder@^1.1.1, string_decoder@~1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" + dependencies: + safe-buffer "~5.1.0" + +string_decoder@~0.10.0, string_decoder@~0.10.x: version "0.10.31" resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94" +stringify-object@^3.2.0: + version "3.2.2" + resolved "https://registry.yarnpkg.com/stringify-object/-/stringify-object-3.2.2.tgz#9853052e5a88fb605a44cd27445aa257ad7ffbcd" + dependencies: + get-own-enumerable-property-symbols "^2.0.1" + is-obj "^1.0.1" + is-regexp "^1.0.0" + stringstream@~0.0.4, stringstream@~0.0.5: version "0.0.5" resolved "https://registry.yarnpkg.com/stringstream/-/stringstream-0.0.5.tgz#4e484cd4de5a0bbbee18e46307710a8a81621878" @@ -6013,6 +8410,10 @@ strip-indent@^1.0.1: dependencies: get-stdin "^4.0.1" +strip-indent@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-2.0.0.tgz#5ef8db295d01e6ed6cbf7aab96998d7822527b68" + strip-json-comments@~2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" @@ -6033,6 +8434,28 @@ subarg@^1.0.0: dependencies: minimist "^1.1.0" +superagent@^1.2.0: + version "1.8.5" + resolved "https://registry.yarnpkg.com/superagent/-/superagent-1.8.5.tgz#1c0ddc3af30e80eb84ebc05cb2122da8fe940b55" + dependencies: + component-emitter "~1.2.0" + cookiejar "2.0.6" + debug "2" + extend "3.0.0" + form-data "1.0.0-rc3" + formidable "~1.0.14" + methods "~1.1.1" + mime "1.3.4" + qs "2.3.3" + readable-stream "1.0.27-1" + reduce-component "1.0.1" + +supports-color@3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-3.1.2.tgz#72a262894d9d408b956ca05ff37b2ed8a6e2a2d5" + dependencies: + has-flag "^1.0.0" + supports-color@4.4.0: version "4.4.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-4.4.0.tgz#883f7ddabc165142b2a61427f3352ded195d1a3e" @@ -6061,10 +8484,31 @@ supports-color@^5.1.0: dependencies: has-flag "^3.0.0" +symbol-observable@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.0.1.tgz#8340fc4702c3122df5d22288f88283f513d3fdd4" + symbol-tree@^3.2.2: version "3.2.2" resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.2.tgz#ae27db38f660a7ae2e1c3b7d1bc290819b8519e6" +syntax-error@^1.1.1: + version "1.4.0" + resolved "https://registry.yarnpkg.com/syntax-error/-/syntax-error-1.4.0.tgz#2d9d4ff5c064acb711594a3e3b95054ad51d907c" + dependencies: + acorn-node "^1.2.0" + +table@4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/table/-/table-4.0.2.tgz#a33447375391e766ad34d3486e6e2aedc84d2e36" + dependencies: + ajv "^5.2.3" + ajv-keywords "^2.1.0" + chalk "^2.1.0" + lodash "^4.17.4" + slice-ansi "1.0.0" + string-width "^2.1.1" + tar-pack@^3.4.0: version "3.4.1" resolved "https://registry.yarnpkg.com/tar-pack/-/tar-pack-3.4.1.tgz#e1dbc03a9b9d3ba07e896ad027317eb679a10a1f" @@ -6078,6 +8522,18 @@ tar-pack@^3.4.0: tar "^2.2.1" uid-number "^0.0.6" +tar-stream@^1.5.0: + version "1.6.1" + resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-1.6.1.tgz#f84ef1696269d6223ca48f6e1eeede3f7e81f395" + dependencies: + bl "^1.0.0" + buffer-alloc "^1.1.0" + end-of-stream "^1.0.0" + fs-constants "^1.0.0" + readable-stream "^2.3.0" + to-buffer "^1.1.0" + xtend "^4.0.0" + tar@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/tar/-/tar-2.2.1.tgz#8e4d2a256c0e2185c6b18ad694aec968b83cb1d1" @@ -6108,6 +8564,12 @@ tempfile@^1.1.1: os-tmpdir "^1.0.0" uuid "^2.0.1" +temporary@0.0.5: + version "0.0.5" + resolved "https://registry.yarnpkg.com/temporary/-/temporary-0.0.5.tgz#e2916b72176517a6c8fb67d3fa78a568e9b27865" + dependencies: + package ">= 1.0.0 < 1.2.0" + test-exclude@^4.1.1: version "4.2.0" resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-4.2.0.tgz#07e3613609a362c74516a717515e13322ab45b3c" @@ -6118,7 +8580,7 @@ test-exclude@^4.1.1: read-pkg-up "^1.0.1" require-main-filename "^1.0.1" -text-encoding@^0.6.4: +text-encoding@0.6.4, text-encoding@^0.6.4: version "0.6.4" resolved "https://registry.yarnpkg.com/text-encoding/-/text-encoding-0.6.4.tgz#e399a982257a276dae428bb92845cb71bdc26d19" @@ -6126,10 +8588,21 @@ text-extensions@^1.0.0: version "1.7.0" resolved "https://registry.yarnpkg.com/text-extensions/-/text-extensions-1.7.0.tgz#faaaba2625ed746d568a23e4d0aacd9bf08a8b39" +text-table@~0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" + throat@^4.0.0: version "4.1.0" resolved "https://registry.yarnpkg.com/throat/-/throat-4.1.0.tgz#89037cbc92c56ab18926e6ba4cbb200e15672a6a" +through2@0.6.3: + version "0.6.3" + resolved "https://registry.yarnpkg.com/through2/-/through2-0.6.3.tgz#795292fde9f254c2a368b38f9cc5d1bd4663afb6" + dependencies: + readable-stream ">=1.0.33-1 <1.1.0-0" + xtend ">=4.0.0 <4.1.0-0" + through2@2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.1.tgz#384e75314d49f32de12eebb8136b8eb6b5d59da9" @@ -6137,6 +8610,13 @@ through2@2.0.1: readable-stream "~2.0.0" xtend "~4.0.0" +through2@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/through2/-/through2-1.1.1.tgz#0847cbc4449f3405574dbdccd9bb841b83ac3545" + dependencies: + readable-stream ">=1.1.13-1 <1.2.0-0" + xtend ">=4.0.0 <4.1.0-0" + through2@^2.0.0, through2@^2.0.2: version "2.0.3" resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.3.tgz#0004569b37c7c74ba39c43f3ced78d1ad94140be" @@ -6144,10 +8624,21 @@ through2@^2.0.0, through2@^2.0.2: readable-stream "^2.1.5" xtend "~4.0.1" +through2@~0.5.1: + version "0.5.1" + resolved "https://registry.yarnpkg.com/through2/-/through2-0.5.1.tgz#dfdd012eb9c700e2323fd334f38ac622ab372da7" + dependencies: + readable-stream "~1.0.17" + xtend "~3.0.0" + through@2, "through@>=2.2.7 <3", through@^2.3.4, through@^2.3.6, through@~2.3, through@~2.3.1: version "2.3.8" resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" +through@~2.2.7: + version "2.2.7" + resolved "https://registry.yarnpkg.com/through/-/through-2.2.7.tgz#6e8e21200191d4eb6a99f6f010df46aa1c6eb2bd" + thunkify@~2.1.1: version "2.1.2" resolved "https://registry.yarnpkg.com/thunkify/-/thunkify-2.1.2.tgz#faa0e9d230c51acc95ca13a361ac05ca7e04553d" @@ -6156,13 +8647,19 @@ timed-out@4.0.1, timed-out@^4.0.0: version "4.0.1" resolved "https://registry.yarnpkg.com/timed-out/-/timed-out-4.0.1.tgz#f32eacac5a175bea25d7fab565ab3ed8741ef56f" +timers-browserify@^1.0.1: + version "1.4.2" + resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-1.4.2.tgz#c9c58b575be8407375cb5e2462dacee74359f41d" + dependencies: + process "~0.11.0" + timers-browserify@^2.0.2: version "2.0.6" resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-2.0.6.tgz#241e76927d9ca05f4d959819022f5b3664b64bae" dependencies: setimmediate "^1.0.4" -timespan@2.3.x: +timespan@2.3.x, timespan@2.x: version "2.3.0" resolved "https://registry.yarnpkg.com/timespan/-/timespan-2.3.0.tgz#4902ce040bd13d845c8f59b27e9d59bad6f39929" @@ -6172,6 +8669,12 @@ tmp@0.0.29: dependencies: os-tmpdir "~1.0.1" +tmp@0.0.31: + version "0.0.31" + resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.31.tgz#8f38ab9438e17315e5dbd8b3657e8bfb277ae4a7" + dependencies: + os-tmpdir "~1.0.1" + tmp@0.0.33, tmp@0.0.x, tmp@^0.0.33: version "0.0.33" resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" @@ -6190,6 +8693,10 @@ to-arraybuffer@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43" +to-buffer@^1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/to-buffer/-/to-buffer-1.1.1.tgz#493bd48f62d7c43fcded313a03dcadb2e1213a80" + to-fast-properties@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-1.0.3.tgz#b83571fa4d8c25b82e231b06e3a3055de4ca1a47" @@ -6298,6 +8805,10 @@ tty-browserify@0.0.0: version "0.0.0" resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6" +tty-browserify@0.0.1, tty-browserify@~0.0.0: + version "0.0.1" + resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.1.tgz#3f05251ee17904dfd0677546670db9651682b811" + tunnel-agent@^0.6.0: version "0.6.0" resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" @@ -6333,10 +8844,14 @@ type-is@~1.6.15: media-typer "0.3.0" mime-types "~2.1.15" -typedarray@^0.0.6: +typedarray@^0.0.6, typedarray@~0.0.5: version "0.0.6" resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" +typescript@^2.3.0: + version "2.9.1" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-2.9.1.tgz#fdb19d2c67a15d11995fd15640e373e09ab09961" + typescript@^2.8.3: version "2.8.3" resolved "https://registry.yarnpkg.com/typescript/-/typescript-2.8.3.tgz#5d817f9b6f31bb871835f4edf0089f21abe6c170" @@ -6348,6 +8863,10 @@ uglify-es@^3.3.7: commander "~2.13.0" source-map "~0.6.1" +uglify-js@1.x: + version "1.3.5" + resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-1.3.5.tgz#4b5bfff9186effbaa888e4c9e94bd9fc4c94929d" + uglify-js@^2.6: version "2.8.29" resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-2.8.29.tgz#29c5733148057bb4e1f75df35b7a9cb72e6a59dd" @@ -6357,6 +8876,15 @@ uglify-js@^2.6: optionalDependencies: uglify-to-browserify "~1.0.0" +uglify-js@~2.6.0: + version "2.6.4" + resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-2.6.4.tgz#65ea2fb3059c9394692f15fed87c2b36c16b9adf" + dependencies: + async "~0.2.6" + source-map "~0.5.1" + uglify-to-browserify "~1.0.0" + yargs "~3.10.0" + uglify-to-browserify@~1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz#6e0924d6bda6b5afe349e39a6d632850a0f882b7" @@ -6365,10 +8893,41 @@ uid-number@^0.0.6: version "0.0.6" resolved "https://registry.yarnpkg.com/uid-number/-/uid-number-0.0.6.tgz#0ea10e8035e8eb5b8e4449f06da1c730663baa81" +ultron@1.0.x: + version "1.0.2" + resolved "https://registry.yarnpkg.com/ultron/-/ultron-1.0.2.tgz#ace116ab557cd197386a4e88f4685378c8b2e4fa" + ultron@~1.1.0: version "1.1.1" resolved "https://registry.yarnpkg.com/ultron/-/ultron-1.1.1.tgz#9fe1536a10a664a65266a1e3ccf85fd36302bc9c" +umd@^3.0.0: + version "3.0.3" + resolved "https://registry.yarnpkg.com/umd/-/umd-3.0.3.tgz#aa9fe653c42b9097678489c01000acb69f0b26cf" + +underscore.deferred@~0.1.4: + version "0.1.5" + resolved "https://registry.yarnpkg.com/underscore.deferred/-/underscore.deferred-0.1.5.tgz#47ead60c988bf0cf3220bf8843f362e0e824e689" + +underscore.string@3.3.4: + version "3.3.4" + resolved "https://registry.yarnpkg.com/underscore.string/-/underscore.string-3.3.4.tgz#2c2a3f9f83e64762fdc45e6ceac65142864213db" + dependencies: + sprintf-js "^1.0.3" + util-deprecate "^1.0.2" + +underscore.string@~2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/underscore.string/-/underscore.string-2.2.1.tgz#d7c0fa2af5d5a1a67f4253daee98132e733f0f19" + +underscore.string@~2.3.3: + version "2.3.3" + resolved "https://registry.yarnpkg.com/underscore.string/-/underscore.string-2.3.3.tgz#71c08bf6b428b1133f37e78fa3a21c82f7329b0d" + +underscore.string@~2.4.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/underscore.string/-/underscore.string-2.4.0.tgz#8cdd8fbac4e2d2ea1e7e2e8097c42f442280f85b" + underscore@~1.7.0: version "1.7.0" resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.7.0.tgz#6bbaf0877500d36be34ecaa584e0db9fef035209" @@ -6410,6 +8969,10 @@ upath@^1.0.0: lodash.isstring "^4.0.1" lodash.startswith "^4.2.1" +uri-path@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/uri-path/-/uri-path-1.0.0.tgz#9747f018358933c31de0fccfd82d138e67262e32" + urix@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" @@ -6420,13 +8983,20 @@ url-parse-lax@^1.0.0: dependencies: prepend-http "^1.0.1" -url@^0.11.0: +url@^0.11.0, url@~0.11.0: version "0.11.0" resolved "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1" dependencies: punycode "1.3.2" querystring "0.2.0" +url@~0.10.1: + version "0.10.3" + resolved "https://registry.yarnpkg.com/url/-/url-0.10.3.tgz#021e4d9c7705f21bbf37d03ceb58767402774c64" + dependencies: + punycode "1.3.2" + querystring "0.2.0" + use@^2.0.0: version "2.0.2" resolved "https://registry.yarnpkg.com/use/-/use-2.0.2.tgz#ae28a0d72f93bf22422a18a2e379993112dec8e8" @@ -6442,10 +9012,21 @@ useragent@2.2.1: lru-cache "2.2.x" tmp "0.0.x" -util-deprecate@~1.0.1: +useragent@^2.1.12: + version "2.3.0" + resolved "https://registry.yarnpkg.com/useragent/-/useragent-2.3.0.tgz#217f943ad540cb2128658ab23fc960f6a88c9972" + dependencies: + lru-cache "4.1.x" + tmp "0.0.x" + +util-deprecate@^1.0.2, util-deprecate@~1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" +util-extend@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/util-extend/-/util-extend-1.0.3.tgz#a7c216d267545169637b3b6edc6ca9119e2ff93f" + util.promisify@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/util.promisify/-/util.promisify-1.0.0.tgz#440f7165a459c9a16dc145eb8e72f35687097030" @@ -6459,6 +9040,12 @@ util@0.10.3, util@^0.10.3: dependencies: inherits "2.0.1" +util@~0.10.1: + version "0.10.4" + resolved "https://registry.yarnpkg.com/util/-/util-0.10.4.tgz#3aa0125bfe668a4672de58857d3ace27ecb76901" + dependencies: + inherits "2.0.3" + utils-merge@1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" @@ -6486,6 +9073,10 @@ validate-npm-package-license@^3.0.1: spdx-correct "~1.0.0" spdx-expression-parse "~1.0.0" +vargs@0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/vargs/-/vargs-0.1.0.tgz#6b6184da6520cc3204ce1b407cac26d92609ebff" + verror@1.10.0: version "1.10.0" resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" @@ -6498,12 +9089,16 @@ vlq@^0.2.1: version "0.2.3" resolved "https://registry.yarnpkg.com/vlq/-/vlq-0.2.3.tgz#8f3e4328cf63b1540c0d67e1b2778386f8975b26" -vm-browserify@0.0.4: +vm-browserify@0.0.4, vm-browserify@~0.0.1: version "0.0.4" resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-0.0.4.tgz#5d7ea45bbef9e4a6ff65f95438e0a87c357d5a73" dependencies: indexof "0.0.1" +vm-browserify@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-1.0.1.tgz#a15d7762c4c48fa6bf9f3309a21340f00ed23063" + void-elements@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/void-elements/-/void-elements-2.0.1.tgz#c066afb582bb1cb4128d60ea92392e94d5e9dbec" @@ -6514,7 +9109,7 @@ w3c-hr-time@^1.0.1: dependencies: browser-process-hrtime "^0.1.2" -walker@~1.0.5: +walker@1.x, walker@~1.0.5: version "1.0.7" resolved "https://registry.yarnpkg.com/walker/-/walker-1.0.7.tgz#2f7f9b8fd10d677262b18a884e28d19618e028fb" dependencies: @@ -6527,12 +9122,37 @@ watch@~0.18.0: exec-sh "^0.2.0" minimist "^1.2.0" +watchify@^3.3.1: + version "3.11.0" + resolved "https://registry.yarnpkg.com/watchify/-/watchify-3.11.0.tgz#03f1355c643955e7ab8dcbf399f624644221330f" + dependencies: + anymatch "^1.3.0" + browserify "^16.1.0" + chokidar "^1.0.0" + defined "^1.0.0" + outpipe "^1.1.0" + through2 "^2.0.0" + xtend "^4.0.0" + wcwidth@^1.0.0, wcwidth@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/wcwidth/-/wcwidth-1.0.1.tgz#f0b0dcf915bc5ff1528afadb2c0e17b532da2fe8" dependencies: defaults "^1.0.3" +wd@^1.4.0: + version "1.8.1" + resolved "https://registry.yarnpkg.com/wd/-/wd-1.8.1.tgz#316de4970107eadeed17731a256c27a00ff5c840" + dependencies: + archiver "2.1.1" + async "2.0.1" + lodash "4.17.10" + mkdirp "^0.5.1" + q "1.4.1" + request "2.85.0" + underscore.string "3.3.4" + vargs "0.1.0" + webidl-conversions@^4.0.1, webidl-conversions@^4.0.2: version "4.0.2" resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-4.0.2.tgz#a855980b1f0b6b359ba1d5d9fb39ae941faa63ad" @@ -6543,6 +9163,10 @@ whatwg-encoding@^1.0.1, whatwg-encoding@^1.0.3: dependencies: iconv-lite "0.4.19" +whatwg-fetch@^2.0.3: + version "2.0.4" + resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-2.0.4.tgz#dde6a5df315f9d39991aa17621853d720b85566f" + whatwg-url@^6.4.0: version "6.4.0" resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-6.4.0.tgz#08fdf2b9e872783a7a1f6216260a1d66cc722e08" @@ -6565,6 +9189,16 @@ which@^1.1.1, which@^1.2.1, which@^1.2.12, which@^1.2.9, which@^1.3.0: dependencies: isexe "^2.0.0" +which@^1.2.10: + version "1.3.1" + resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" + dependencies: + isexe "^2.0.0" + +which@~1.0.5: + version "1.0.9" + resolved "https://registry.yarnpkg.com/which/-/which-1.0.9.tgz#460c1da0f810103d0321a9b633af9e575e64486f" + wide-align@^1.1.0: version "1.1.2" resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.2.tgz#571e0f1b0604636ebc0dfc21b0339bbe31341710" @@ -6575,6 +9209,21 @@ window-size@0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.1.0.tgz#5438cd2ea93b202efa3a19fe8887aee7c94f9c9d" +window-size@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.1.4.tgz#f8e1aa1ee5a53ec5bf151ffa09742a6ad7697876" + +winston@*: + version "2.4.2" + resolved "https://registry.yarnpkg.com/winston/-/winston-2.4.2.tgz#3ca01f763116fc48db61053b7544e750431f8db0" + dependencies: + async "~1.0.0" + colors "1.0.x" + cycle "1.0.x" + eyes "0.1.x" + isstream "0.1.x" + stack-trace "0.0.x" + wordwrap@0.0.2: version "0.0.2" resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.2.tgz#b79669bb42ecb409f83d583cad52ca17eaa1643f" @@ -6598,6 +9247,10 @@ wrappy@1: version "1.0.2" resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" +wrench@1.3.x: + version "1.3.9" + resolved "https://registry.yarnpkg.com/wrench/-/wrench-1.3.9.tgz#6f13ec35145317eb292ca5f6531391b244111411" + write-file-atomic@^2.0.0, write-file-atomic@^2.1.0, write-file-atomic@^2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-2.3.0.tgz#1ff61575c2e2a4e8e510d6fa4e243cce183999ab" @@ -6624,6 +9277,19 @@ write-pkg@^3.1.0: sort-keys "^2.0.0" write-json-file "^2.2.0" +write@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/write/-/write-0.2.1.tgz#5fc03828e264cea3fe91455476f7a3c566cb0757" + dependencies: + mkdirp "^0.5.1" + +ws@1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/ws/-/ws-1.1.2.tgz#8a244fa052401e08c9886cf44a85189e1fd4067f" + dependencies: + options ">=0.0.5" + ultron "1.0.x" + ws@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/ws/-/ws-4.0.0.tgz#bfe1da4c08eeb9780b986e0e4d10eccd7345999f" @@ -6640,10 +9306,24 @@ ws@~3.3.1: safe-buffer "~5.1.0" ultron "~1.1.0" +wtf-8@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/wtf-8/-/wtf-8-1.0.0.tgz#392d8ba2d0f1c34d1ee2d630f15d0efb68e1048a" + xml-name-validator@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-3.0.0.tgz#6ae73e06de4d8c6e47f9fb181f78d648ad457c6a" +xml2js@0.2.x: + version "0.2.8" + resolved "https://registry.yarnpkg.com/xml2js/-/xml2js-0.2.8.tgz#9b81690931631ff09d1957549faf54f4f980b3c2" + dependencies: + sax "0.5.x" + +xmlhttprequest-ssl@1.5.3: + version "1.5.3" + resolved "https://registry.yarnpkg.com/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.3.tgz#185a888c04eca46c3e4070d99f7b49de3528992d" + xmlhttprequest-ssl@~1.5.4: version "1.5.5" resolved "https://registry.yarnpkg.com/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.5.tgz#c2876b06168aadc40e57d97e81191ac8f4398b3e" @@ -6652,11 +9332,15 @@ xregexp@2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/xregexp/-/xregexp-2.0.0.tgz#52a63e56ca0b84a7f3a5f3d61872f126ad7a5943" -xtend@^4.0.0, xtend@~4.0.0, xtend@~4.0.1: +"xtend@>=4.0.0 <4.1.0-0", xtend@^4.0.0, xtend@^4.0.1, xtend@~4.0.0, xtend@~4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af" -y18n@^3.2.1: +xtend@^3.0.0, xtend@~3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/xtend/-/xtend-3.0.0.tgz#5cce7407baf642cba7becda568111c493f59665a" + +y18n@^3.2.0, y18n@^3.2.1: version "3.2.1" resolved "https://registry.yarnpkg.com/y18n/-/y18n-3.2.1.tgz#6d15fba884c08679c0d77e88e7759e811e07fa41" @@ -6716,6 +9400,18 @@ yargs@^11.0.0: y18n "^3.2.1" yargs-parser "^9.0.2" +yargs@^3.4.5: + version "3.32.0" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-3.32.0.tgz#03088e9ebf9e756b69751611d2a5ef591482c995" + dependencies: + camelcase "^2.0.1" + cliui "^3.0.3" + decamelize "^1.1.1" + os-locale "^1.4.0" + string-width "^1.0.1" + window-size "^0.1.4" + y18n "^3.2.0" + yargs@^8.0.2: version "8.0.2" resolved "https://registry.yarnpkg.com/yargs/-/yargs-8.0.2.tgz#6299a9055b1cefc969ff7e79c1d918dceb22c360" @@ -6746,3 +9442,12 @@ yargs@~3.10.0: yeast@0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/yeast/-/yeast-0.1.2.tgz#008e06d8094320c372dbc2f8ed76a0ca6c8ac419" + +zip-stream@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/zip-stream/-/zip-stream-1.2.0.tgz#a8bc45f4c1b49699c6b90198baacaacdbcd4ba04" + dependencies: + archiver-utils "^1.3.0" + compress-commons "^1.2.0" + lodash "^4.8.0" + readable-stream "^2.0.0" From b7121c9e02bd3a33ba1268f8278d70ab045d770c Mon Sep 17 00:00:00 2001 From: HazA Date: Wed, 6 Jun 2018 09:33:32 +0200 Subject: [PATCH 64/75] feat: enable travis --- .travis.yml | 9 +- docs/_sentryext | 1 + packages/raven-js/.eslintignore | 7 ++ packages/raven-js/karma.config.js | 71 ----------- packages/raven-js/karma.integration.config.js | 20 --- packages/raven-js/karma.sauce.config.js | 117 ------------------ packages/raven-js/karma.unit.config.js | 24 ---- 7 files changed, 16 insertions(+), 233 deletions(-) create mode 160000 docs/_sentryext create mode 100644 packages/raven-js/.eslintignore delete mode 100644 packages/raven-js/karma.config.js delete mode 100644 packages/raven-js/karma.integration.config.js delete mode 100644 packages/raven-js/karma.sauce.config.js delete mode 100644 packages/raven-js/karma.unit.config.js diff --git a/.travis.yml b/.travis.yml index 06bab97c3f85..4e76502261c7 100644 --- a/.travis.yml +++ b/.travis.yml @@ -17,12 +17,19 @@ before_install: matrix: include: - env: NAME="raven-js" + install: true addons: chrome: stable firefox: latest sauce_connect: true script: - - npm run test && if [ "$TRAVIS_SECURE_ENV_VARS" == "true" ]; then npm run test:ci; else exit 0; fi + - cd packages/raven-js && + - npm install && + - npm run test && + - if [ "$TRAVIS_SECURE_ENV_VARS" == "true" ]; then + - npm run test:ci; + - else exit 0; + - fi - env: NAME="@sentry/core" install: true script: diff --git a/docs/_sentryext b/docs/_sentryext new file mode 160000 index 000000000000..c523fdd0cb36 --- /dev/null +++ b/docs/_sentryext @@ -0,0 +1 @@ +Subproject commit c523fdd0cb366fed58df9be098cfc6eca572f7b2 diff --git a/packages/raven-js/.eslintignore b/packages/raven-js/.eslintignore new file mode 100644 index 000000000000..f8ac32d3450e --- /dev/null +++ b/packages/raven-js/.eslintignore @@ -0,0 +1,7 @@ +build/ +dist/ +example/ +vendor/ +test/ +scripts/ +plugins/ diff --git a/packages/raven-js/karma.config.js b/packages/raven-js/karma.config.js deleted file mode 100644 index d5d1f7051917..000000000000 --- a/packages/raven-js/karma.config.js +++ /dev/null @@ -1,71 +0,0 @@ -// Karma configuration -// Generated on Tue Oct 10 2017 16:05:16 GMT+0300 (EEST) - -module.exports = { - // base path that will be used to resolve all patterns (eg. files, exclude) - basePath: '', - - // frameworks to use - // available frameworks: https://npmjs.org/browse/keyword/karma-adapter - frameworks: ['mocha', 'chai', 'sinon'], - - // list of files / patterns to load in the browser - files: [], - - // list of files to exclude - exclude: [], - - // preprocess matching files before serving them to the browser - // available preprocessors: https://npmjs.org/browse/keyword/karma-preprocessor - preprocessors: {}, - - plugins: [ - 'karma-mocha', - 'karma-mocha-reporter', - 'karma-chai', - 'karma-sinon', - 'karma-chrome-launcher', - 'karma-firefox-launcher', - 'karma-failed-reporter' - ], - - // test results reporter to use - // possible values: 'dots', 'progress' - // available reporters: https://npmjs.org/browse/keyword/karma-reporter - reporters: ['mocha'], - - // web server port - port: 9876, - - // enable / disable colors in the output (reporters and logs) - colors: true, - - // enable / disable watching file and executing tests whenever any file changes - autoWatch: true, - - // start these browsers - // available browser launchers: https://npmjs.org/browse/keyword/karma-launcher - browsers: ['ChromeHeadless', 'FirefoxHeadless'], - - customLaunchers: { - FirefoxHeadless: { - base: 'Firefox', - flags: ['-headless'] - } - }, - - // Continuous Integration mode - // if true, Karma captures browsers, runs the tests and exits - singleRun: false, - - // Concurrency level - // how many browser should be started simultaneous - concurrency: Infinity, - - client: { - mocha: { - reporter: 'html', - ui: 'bdd' - } - } -}; diff --git a/packages/raven-js/karma.integration.config.js b/packages/raven-js/karma.integration.config.js deleted file mode 100644 index ee544fbce0ca..000000000000 --- a/packages/raven-js/karma.integration.config.js +++ /dev/null @@ -1,20 +0,0 @@ -var commonConfig = require('./karma.config'); - -var testFiles = [ - {pattern: 'node_modules/es6-promise/dist/es6-promise.auto.js', included: false}, - {pattern: 'node_modules/whatwg-fetch/fetch.js', included: false}, - {pattern: 'test/integration/123', included: false}, - {pattern: 'test/integration/throw-string.js', included: false}, - {pattern: 'test/integration/throw-error.js', included: false}, - {pattern: 'test/integration/throw-object.js', included: false}, - {pattern: 'test/integration/example.json', included: false}, - {pattern: 'test/integration/frame.html', included: false}, - 'test/integration/test.js', - 'test/globals.js', - 'build/raven.js', -]; - -module.exports = function(config) { - var testConfig = Object.assign({}, commonConfig, {files: testFiles}); - config.set(testConfig); -}; diff --git a/packages/raven-js/karma.sauce.config.js b/packages/raven-js/karma.sauce.config.js deleted file mode 100644 index bf363bb359c5..000000000000 --- a/packages/raven-js/karma.sauce.config.js +++ /dev/null @@ -1,117 +0,0 @@ -var commonConfig = require('./karma.config'); - -var customLaunchers = { - sl_chrome: { - base: 'SauceLabs', - browserName: 'chrome', - platform: 'Windows 10', - version: 'latest' - }, - sl_firefox: { - base: 'SauceLabs', - browserName: 'firefox', - platform: 'Windows 10', - version: 'latest' - }, - sl_edge: { - base: 'SauceLabs', - browserName: 'microsoftedge', - version: 'latest', - platform: 'Windows 10' - }, - sl_ie_11: { - base: 'SauceLabs', - browserName: 'internet explorer', - platform: 'Windows 7', - version: '11' - }, - sl_ie_10: { - base: 'SauceLabs', - browserName: 'internet explorer', - platform: 'Windows 7', - version: '10' - }, - sl_safari: { - base: 'SauceLabs', - browserName: 'safari', - platform: 'OS X 10.12', - version: '11.0' - }, - sl_ios: { - base: 'SauceLabs', - browserName: 'iphone', - platform: 'OS X 10.12', - version: '11.0' - }, - sl_android_7: { - base: 'SauceLabs', - browserName: 'Chrome', - platform: 'Android', - version: '7.1', - device: 'Android GoogleAPI Emulator' - }, - sl_android_6: { - base: 'SauceLabs', - browserName: 'Chrome', - platform: 'Android', - version: '6.0', - device: 'Android Emulator' - }, - sl_android_5: { - base: 'SauceLabs', - browserName: 'android', - platform: 'Linux', - version: '5.1' - }, - sl_android_4: { - base: 'SauceLabs', - browserName: 'android', - platform: 'Linux', - version: '4.4' - } -}; - -var testFiles = [ - {pattern: 'node_modules/es6-promise/dist/es6-promise.auto.js', included: false}, - {pattern: 'node_modules/whatwg-fetch/fetch.js', included: false}, - {pattern: 'test/integration/123', included: false}, - {pattern: 'test/integration/throw-string.js', included: false}, - {pattern: 'test/integration/throw-error.js', included: false}, - {pattern: 'test/integration/throw-object.js', included: false}, - {pattern: 'test/integration/example.json', included: false}, - {pattern: 'test/integration/frame.html', included: false}, - 'test/integration/test.js', - 'test/globals.js', - 'build/raven.js', - 'build/raven.test.js' -]; - -module.exports = function(config) { - var testConfig = Object.assign({}, commonConfig, { - files: testFiles, - logLevel: config.LOG_INFO, - customLaunchers: customLaunchers, - browsers: Object.keys(customLaunchers), - reporters: ['failed', 'saucelabs'], - singleRun: true, - plugins: commonConfig.plugins.concat(['karma-sauce-launcher']), - build: process.env.TRAVIS_BUILD_NUMBER, - // SauceLabs allows for 2 tunnels only, therefore some browsers will have to wait - // rather long time. Plus mobile emulators tend to require a lot of time to start up. - // 10 minutes should be more than enough to run all of them. - browserNoActivityTimeout: 600000, - captureTimeout: 600000, - sauceLabs: { - startConnect: false, - // Just something "random" so we don't have to provide additional ENV var when running locally - tunnelIdentifier: process.env.TRAVIS_JOB_NUMBER || Math.ceil(Math.random() * 1337), - recordScreenshots: false, - recordVideo: false, - testName: - 'Raven.js' + - (process.env.TRAVIS_JOB_NUMBER ? ' #' + process.env.TRAVIS_JOB_NUMBER : ''), - public: 'public' - } - }); - config.set(testConfig); -}; diff --git a/packages/raven-js/karma.unit.config.js b/packages/raven-js/karma.unit.config.js deleted file mode 100644 index 9a0c86a164c8..000000000000 --- a/packages/raven-js/karma.unit.config.js +++ /dev/null @@ -1,24 +0,0 @@ -var commonConfig = require('./karma.config'); - -var testFiles = [ - 'test/globals.js', - 'build/angular.test.js', - 'build/console.test.js', - 'build/json-stringify-safe.test.js', - 'build/raven.test.js', - 'build/react-native.test.js', - 'build/tracekit.test.js', - 'build/tracekit-parser.test.js', - 'build/utils.test.js', - 'build/vue.test.js', -]; - -module.exports = function(config) { - var testConfig = Object.assign( - {}, - commonConfig, - {files: testFiles}, - {logLevel: config.LOG_INFO} - ); - config.set(testConfig); -}; From 12df0f839b06d5d0dd6d7e52cc502660a89b9dde Mon Sep 17 00:00:00 2001 From: HazA Date: Wed, 6 Jun 2018 09:37:43 +0200 Subject: [PATCH 65/75] feat: Remove gitmodules --- .gitmodules | 0 docs/_sentryext | 1 - 2 files changed, 1 deletion(-) delete mode 100644 .gitmodules delete mode 160000 docs/_sentryext diff --git a/.gitmodules b/.gitmodules deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/docs/_sentryext b/docs/_sentryext deleted file mode 160000 index c523fdd0cb36..000000000000 --- a/docs/_sentryext +++ /dev/null @@ -1 +0,0 @@ -Subproject commit c523fdd0cb366fed58df9be098cfc6eca572f7b2 From 0f22f556ada4203d722921b2de2c6550c1e84026 Mon Sep 17 00:00:00 2001 From: HazA Date: Wed, 6 Jun 2018 09:42:36 +0200 Subject: [PATCH 66/75] feat: Use travis build script --- .travis.yml | 9 +-------- .travis/raven-js.sh | 12 ++++++++++++ 2 files changed, 13 insertions(+), 8 deletions(-) create mode 100755 .travis/raven-js.sh diff --git a/.travis.yml b/.travis.yml index 4e76502261c7..fd46a14fbdb8 100644 --- a/.travis.yml +++ b/.travis.yml @@ -22,14 +22,7 @@ matrix: chrome: stable firefox: latest sauce_connect: true - script: - - cd packages/raven-js && - - npm install && - - npm run test && - - if [ "$TRAVIS_SECURE_ENV_VARS" == "true" ]; then - - npm run test:ci; - - else exit 0; - - fi + script: .travis/raven-js.sh - env: NAME="@sentry/core" install: true script: diff --git a/.travis/raven-js.sh b/.travis/raven-js.sh new file mode 100755 index 000000000000..d305629e7ac5 --- /dev/null +++ b/.travis/raven-js.sh @@ -0,0 +1,12 @@ +#!/bin/bash +set -e +cd packages/raven-js + +npm install +npm run test + +if [ "$TRAVIS_SECURE_ENV_VARS" == "true" ]; then + npm run test:ci; +else + exit 0; +fi From 36d3d4c287df7403b0611863acb1d1ca9aa30cde Mon Sep 17 00:00:00 2001 From: HazA Date: Wed, 6 Jun 2018 09:43:41 +0200 Subject: [PATCH 67/75] meta: Removed husky --- packages/raven-js/package-lock.json | 40 ----------------------------- packages/raven-js/package.json | 2 -- 2 files changed, 42 deletions(-) diff --git a/packages/raven-js/package-lock.json b/packages/raven-js/package-lock.json index 6095a95b0b27..11ef15b382ee 100644 --- a/packages/raven-js/package-lock.json +++ b/packages/raven-js/package-lock.json @@ -1188,12 +1188,6 @@ "integrity": "sha512-6NSB3PSw6L7w9vqmlTveD1JpaOhngFYRqhFKNPtSLpx8kpu/3BZwf84Sz8+hsmDzaD+ITuuiNdN6ya5c2DhHWg==", "dev": true }, - "ci-info": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-1.1.2.tgz", - "integrity": "sha512-uTGIPNx/nSpBdsF6xnseRXLLtfr9VLqkz8ZqHXr3Y7b6SftyRxBGjwMtJj1OhNbmlc1wZzLNAlAcvyIiE8a6ZA==", - "dev": true - }, "cipher-base": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", @@ -4663,25 +4657,6 @@ } } }, - "husky": { - "version": "0.14.3", - "resolved": "https://registry.npmjs.org/husky/-/husky-0.14.3.tgz", - "integrity": "sha512-e21wivqHpstpoiWA/Yi8eFti8E+sQDSS53cpJsPptPs295QTOQR0ZwnHo2TXy1XOpZFD9rPOd3NpmqTK6uMLJA==", - "dev": true, - "requires": { - "is-ci": "1.1.0", - "normalize-path": "1.0.0", - "strip-indent": "2.0.0" - }, - "dependencies": { - "normalize-path": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-1.0.0.tgz", - "integrity": "sha1-MtDkcvkf80VwHBWoMRAY07CpA3k=", - "dev": true - } - } - }, "iconv-lite": { "version": "0.4.19", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.19.tgz", @@ -4907,15 +4882,6 @@ "builtin-modules": "1.1.1" } }, - "is-ci": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-1.1.0.tgz", - "integrity": "sha512-c7TnwxLePuqIlxHgr7xtxzycJPegNHFuIrBkwbf8hc58//+Op1CqFkyS+xnIMkwn9UsJIwc174BIjkyBmSpjKg==", - "dev": true, - "requires": { - "ci-info": "1.1.2" - } - }, "is-dotfile": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz", @@ -8250,12 +8216,6 @@ "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", "dev": true }, - "strip-indent": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-2.0.0.tgz", - "integrity": "sha1-XvjbKV0B5u1sv3qrlpmNeCJSe2g=", - "dev": true - }, "strip-json-comments": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", diff --git a/packages/raven-js/package.json b/packages/raven-js/package.json index c3d813d1ee82..d2af95ea1fb7 100644 --- a/packages/raven-js/package.json +++ b/packages/raven-js/package.json @@ -17,7 +17,6 @@ "scripts": { "deploy": "npm run test && ./scripts/deploy.js", "lint": "eslint .", - "precommit": "lint-staged", "publish": "grunt publish", "test": "npm run lint && grunt build.test && npm run test:unit && npm run test:loader && npm run test:integration && npm run test:typescript", "test:unit": "karma start karma/karma.unit.config.js", @@ -50,7 +49,6 @@ "grunt-release": "^0.13.0", "grunt-s3": "0.2.0-alpha.3", "grunt-sri": "mattrobenolt/grunt-sri#pretty", - "husky": "^0.14.3", "inquirer": "^3.3.0", "karma": "^1.7.1", "karma-chai": "^0.1.0", From 52283cc0aaf88e6daff413c60eb7c7799cb90c4d Mon Sep 17 00:00:00 2001 From: HazA Date: Wed, 6 Jun 2018 09:52:53 +0200 Subject: [PATCH 68/75] feat: Add tests for packages --- .travis.yml | 15 ++++----------- .travis/lint.sh | 5 +++++ .travis/test.sh | 6 ++++++ yarn.lock | 16 ---------------- 4 files changed, 15 insertions(+), 27 deletions(-) create mode 100755 .travis/lint.sh create mode 100755 .travis/test.sh diff --git a/.travis.yml b/.travis.yml index fd46a14fbdb8..59f0a3e22f9b 100644 --- a/.travis.yml +++ b/.travis.yml @@ -23,16 +23,9 @@ matrix: firefox: latest sauce_connect: true script: .travis/raven-js.sh - - env: NAME="@sentry/core" + - env: NAME="packages/*/lint" install: true - script: - - cd packages/core && yarn install && yarn test - - env: NAME="@sentry/browser" + script: .travis/lint.sh + - env: NAME="packages/*/test" install: true - script: - - yarn link - - cd packages/core && yarn link && yarn install && yarn dist - - cd ../browser - - yarn link "@sentry/core" - - yarn link "raven-js" - - yarn install && yarn test + script: .travis/test.sh diff --git a/.travis/lint.sh b/.travis/lint.sh new file mode 100755 index 000000000000..3315cbe9c536 --- /dev/null +++ b/.travis/lint.sh @@ -0,0 +1,5 @@ +#!/bin/bash +set -e + +yarn lerna bootstrap +yarn lint diff --git a/.travis/test.sh b/.travis/test.sh new file mode 100755 index 000000000000..b1c114dda3e1 --- /dev/null +++ b/.travis/test.sh @@ -0,0 +1,6 @@ +#!/bin/bash +set -e + +yarn lerna bootstrap +yarn build +yarn test diff --git a/yarn.lock b/yarn.lock index 97d95a0bedd1..f29acd7a224f 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4038,14 +4038,6 @@ https-proxy-agent@^2.2.1: agent-base "^4.1.0" debug "^3.1.0" -husky@^0.14.3: - version "0.14.3" - resolved "https://registry.yarnpkg.com/husky/-/husky-0.14.3.tgz#c69ed74e2d2779769a17ba8399b54ce0b63c12c3" - dependencies: - is-ci "^1.0.10" - normalize-path "^1.0.0" - strip-indent "^2.0.0" - iconv-lite@0.4.15: version "0.4.15" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.15.tgz#fe265a218ac6a57cfe854927e9d04c19825eddeb" @@ -6381,10 +6373,6 @@ normalize-package-data@^2.3.0, normalize-package-data@^2.3.2, normalize-package- semver "2 || 3 || 4 || 5" validate-npm-package-license "^3.0.1" -normalize-path@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-1.0.0.tgz#32d0e472f91ff345701c15a8311018d3b0a90379" - normalize-path@^2.0.0, normalize-path@^2.0.1, normalize-path@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" @@ -8410,10 +8398,6 @@ strip-indent@^1.0.1: dependencies: get-stdin "^4.0.1" -strip-indent@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-2.0.0.tgz#5ef8db295d01e6ed6cbf7aab96998d7822527b68" - strip-json-comments@~2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" From 2fc0a22eab920df0a3f27df4c5ea82fb22236e66 Mon Sep 17 00:00:00 2001 From: HazA Date: Wed, 6 Jun 2018 09:53:56 +0200 Subject: [PATCH 69/75] feat: Move readme --- README.md | 106 ++++++++++++--------------------------------- packages/README.md | 91 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 118 insertions(+), 79 deletions(-) create mode 100644 packages/README.md diff --git a/README.md b/README.md index ccde4563ac78..3f53c184e2d7 100644 --- a/README.md +++ b/README.md @@ -1,91 +1,39 @@

- - - -
+ + + +
+

Raven.js - Sentry SDK for JavaScript

-# Official Sentry SDKs for JavaScript (Preview) +[![Sauce Test Status](https://saucelabs.com/buildstatus/sentryio)](https://saucelabs.com/u/sentryio) +[![Build Status](https://travis-ci.org/getsentry/raven-js.svg?branch=master)](https://travis-ci.org/getsentry/raven-js) +[![npm](https://img.shields.io/npm/v/raven-js.svg)](https://www.npmjs.com/package/raven-js) +[![npm](https://img.shields.io/npm/dm/raven-js.svg)](https://www.npmjs.com/package/raven-js) -This is a preview of the next line of Sentry JavaScript SDKs, comprised in the -`@sentry/` namespace. It will provide a more convenient interface and improved -consistency between various JavaScript environments. +[![Sauce Test Status](https://saucelabs.com/browser-matrix/sentryio.svg)](https://saucelabs.com/u/sentryio) -**WARNING:** All of these SDKs are still undergoing active development, so the -public interface might change and break backwards compatibility from time to -time. We absolutely recommend [raven-js](https://github.com/getsentry/raven-js) -and [raven](https://github.com/getsentry/raven-node) for production use. +## Requirements -## Contents +The latest version of Raven.js is guaranteed to work with +[hosted Sentry](https://sentry.io). -* [Supported Platforms](#supported-platforms) -* [Installation and Usage](#installation-and-usage) -* [Other Packages](#other-packages) -* [SDK Development](#sdk-development) -* [Join the Discussion](#join-the-discussion) +For on-premise users: -## Supported Platforms +* Raven.js [3.6](https://github.com/getsentry/raven-js/releases/tag/3.6.0) + requires Sentry server 8.6.0 or later +* Raven.js [2.0](https://github.com/getsentry/raven-js/releases/tag/2.0.0) + requires Sentry server 8.0.0 or later -For each major JavaScript platform, there is a specific high-level SDK that -provides all the tools you need in a single package. Please refer to the README -and instructions of those SDKs for more detailed information: +## Installation -* [`@sentry/shim`](https://github.com/getsentry/raven-js/tree/next/packages/shim): - Minimal SDK for library authors to add Sentry support -* [`@sentry/browser`](https://github.com/getsentry/raven-js/tree/next/packages/browser): - SDK for Browsers, including integrations for React, Angular, Ember, Vue and - Backbone -* [`@sentry/node`](https://github.com/getsentry/raven-js/tree/next/packages/node): - SDK for Node, including integrations for Express, Koa, Loopback, Sails and - Connect -* [`@sentry/electron`](https://github.com/getsentry/sentry-electron): SDK for - Electron with support for native crashes -* [`sentry-cordova`](https://github.com/getsentry/sentry-cordova): SDK for - Cordova Apps and Ionic with support for native crashes +To get started with Raven.js, please see +[Installation](https://docs.sentry.io/clients/javascript/install/). -**NOTE:** Are you missing an SDK here? It has probably not been integrated into -the `next` line yet. +## Resources -## Installation and Usage - -To install an SDK, simply add the high-level package, for example: - -```sh -npm install --save @sentry/node -yarn add @sentry/node -``` - -Setup and usage of these SDKs always follows the same principle. In Node, for -example (on another platform simply substitute the import): - -```javascript -const { init, captureMessage } = require('@sentry/node'); - -init({ - dsn: '__DSN__', - // ... -}); - -captureMessage('Hello, world!'); -``` - -## Other Packages - -Besides the high-level SDKs, this repository contains shared packages, helpers -and configuration used for SDK development. If you're thinking about -contributing to or creating a JavaScript-based SDK, have a look at the resources -below: - -* [`@sentry/core`](https://github.com/getsentry/raven-js/tree/next/packages/core): - The base for all JavaScript SDKs with interfaces, type definitions and base - classes. -* [`@sentry/utils`](https://github.com/getsentry/raven-js/tree/next/packages/utils): - A set of helpers and utility functions useful for various SDKs. -* [`@sentry/typescript`](https://github.com/getsentry/raven-js/tree/next/packages/typescript): - Shared Typescript compiler and linter options. - -## Join the Discussion - -Join the discussion in our -[tracking issue](https://github.com/getsentry/raven-js/issues/1281) and let us -know what you think of the updated interface and new possibilities. +* [Download](http://ravenjs.com) +* [Documentation](https://docs.sentry.io/hosted/clients/javascript/) +* [Bug Tracker](https://github.com/getsentry/raven-js/issues) +* [IRC](irc://chat.freenode.net/sentry) (chat.freenode.net, #sentry) +* Follow [@getsentry](https://twitter.com/getsentry) on Twitter for updates diff --git a/packages/README.md b/packages/README.md new file mode 100644 index 000000000000..ccde4563ac78 --- /dev/null +++ b/packages/README.md @@ -0,0 +1,91 @@ +

+ + + +
+

+ +# Official Sentry SDKs for JavaScript (Preview) + +This is a preview of the next line of Sentry JavaScript SDKs, comprised in the +`@sentry/` namespace. It will provide a more convenient interface and improved +consistency between various JavaScript environments. + +**WARNING:** All of these SDKs are still undergoing active development, so the +public interface might change and break backwards compatibility from time to +time. We absolutely recommend [raven-js](https://github.com/getsentry/raven-js) +and [raven](https://github.com/getsentry/raven-node) for production use. + +## Contents + +* [Supported Platforms](#supported-platforms) +* [Installation and Usage](#installation-and-usage) +* [Other Packages](#other-packages) +* [SDK Development](#sdk-development) +* [Join the Discussion](#join-the-discussion) + +## Supported Platforms + +For each major JavaScript platform, there is a specific high-level SDK that +provides all the tools you need in a single package. Please refer to the README +and instructions of those SDKs for more detailed information: + +* [`@sentry/shim`](https://github.com/getsentry/raven-js/tree/next/packages/shim): + Minimal SDK for library authors to add Sentry support +* [`@sentry/browser`](https://github.com/getsentry/raven-js/tree/next/packages/browser): + SDK for Browsers, including integrations for React, Angular, Ember, Vue and + Backbone +* [`@sentry/node`](https://github.com/getsentry/raven-js/tree/next/packages/node): + SDK for Node, including integrations for Express, Koa, Loopback, Sails and + Connect +* [`@sentry/electron`](https://github.com/getsentry/sentry-electron): SDK for + Electron with support for native crashes +* [`sentry-cordova`](https://github.com/getsentry/sentry-cordova): SDK for + Cordova Apps and Ionic with support for native crashes + +**NOTE:** Are you missing an SDK here? It has probably not been integrated into +the `next` line yet. + +## Installation and Usage + +To install an SDK, simply add the high-level package, for example: + +```sh +npm install --save @sentry/node +yarn add @sentry/node +``` + +Setup and usage of these SDKs always follows the same principle. In Node, for +example (on another platform simply substitute the import): + +```javascript +const { init, captureMessage } = require('@sentry/node'); + +init({ + dsn: '__DSN__', + // ... +}); + +captureMessage('Hello, world!'); +``` + +## Other Packages + +Besides the high-level SDKs, this repository contains shared packages, helpers +and configuration used for SDK development. If you're thinking about +contributing to or creating a JavaScript-based SDK, have a look at the resources +below: + +* [`@sentry/core`](https://github.com/getsentry/raven-js/tree/next/packages/core): + The base for all JavaScript SDKs with interfaces, type definitions and base + classes. +* [`@sentry/utils`](https://github.com/getsentry/raven-js/tree/next/packages/utils): + A set of helpers and utility functions useful for various SDKs. +* [`@sentry/typescript`](https://github.com/getsentry/raven-js/tree/next/packages/typescript): + Shared Typescript compiler and linter options. + +## Join the Discussion + +Join the discussion in our +[tracking issue](https://github.com/getsentry/raven-js/issues/1281) and let us +know what you think of the updated interface and new possibilities. From d12b381dba2bd06f9a3e2fb0bfb9a13fa09b8a78 Mon Sep 17 00:00:00 2001 From: HazA Date: Wed, 6 Jun 2018 09:57:05 +0200 Subject: [PATCH 70/75] meta: Fix travis yaml --- .travis.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.travis.yml b/.travis.yml index 59f0a3e22f9b..31db99c63bc0 100644 --- a/.travis.yml +++ b/.travis.yml @@ -23,9 +23,9 @@ matrix: firefox: latest sauce_connect: true script: .travis/raven-js.sh - - env: NAME="packages/*/lint" + - env: NAME="packages/lint" install: true script: .travis/lint.sh - - env: NAME="packages/*/test" + - env: NAME="packages/test" install: true script: .travis/test.sh From dcc79e6cf298193f575a5c68ff678fd6ebc6d325 Mon Sep 17 00:00:00 2001 From: HazA Date: Wed, 6 Jun 2018 10:01:09 +0200 Subject: [PATCH 71/75] ci: travis --- .travis.yml | 6 ------ 1 file changed, 6 deletions(-) diff --git a/.travis.yml b/.travis.yml index 31db99c63bc0..1da9d3024f74 100644 --- a/.travis.yml +++ b/.travis.yml @@ -23,9 +23,3 @@ matrix: firefox: latest sauce_connect: true script: .travis/raven-js.sh - - env: NAME="packages/lint" - install: true - script: .travis/lint.sh - - env: NAME="packages/test" - install: true - script: .travis/test.sh From 068c76341d51bc988678d24478c477a576a70337 Mon Sep 17 00:00:00 2001 From: HazA Date: Wed, 6 Jun 2018 10:02:13 +0200 Subject: [PATCH 72/75] ci: please start travis --- .travis.yml | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/.travis.yml b/.travis.yml index 1da9d3024f74..fd46a14fbdb8 100644 --- a/.travis.yml +++ b/.travis.yml @@ -23,3 +23,16 @@ matrix: firefox: latest sauce_connect: true script: .travis/raven-js.sh + - env: NAME="@sentry/core" + install: true + script: + - cd packages/core && yarn install && yarn test + - env: NAME="@sentry/browser" + install: true + script: + - yarn link + - cd packages/core && yarn link && yarn install && yarn dist + - cd ../browser + - yarn link "@sentry/core" + - yarn link "raven-js" + - yarn install && yarn test From 31a826c8337299071d2a5328e6b3311d468a30b2 Mon Sep 17 00:00:00 2001 From: HazA Date: Wed, 6 Jun 2018 10:04:24 +0200 Subject: [PATCH 73/75] ci: travis not running --- .travis.yml | 15 ++++----------- 1 file changed, 4 insertions(+), 11 deletions(-) diff --git a/.travis.yml b/.travis.yml index fd46a14fbdb8..59f0a3e22f9b 100644 --- a/.travis.yml +++ b/.travis.yml @@ -23,16 +23,9 @@ matrix: firefox: latest sauce_connect: true script: .travis/raven-js.sh - - env: NAME="@sentry/core" + - env: NAME="packages/*/lint" install: true - script: - - cd packages/core && yarn install && yarn test - - env: NAME="@sentry/browser" + script: .travis/lint.sh + - env: NAME="packages/*/test" install: true - script: - - yarn link - - cd packages/core && yarn link && yarn install && yarn dist - - cd ../browser - - yarn link "@sentry/core" - - yarn link "raven-js" - - yarn install && yarn test + script: .travis/test.sh From 5779596a542b894984c7ddf79d1a45607c37832b Mon Sep 17 00:00:00 2001 From: HazA Date: Wed, 6 Jun 2018 10:10:12 +0200 Subject: [PATCH 74/75] meta: Update readmes --- packages/browser/README.md | 9 ++++++--- packages/node/README.md | 9 ++++++--- packages/shim/README.md | 9 ++++++--- 3 files changed, 18 insertions(+), 9 deletions(-) diff --git a/packages/browser/README.md b/packages/browser/README.md index 64478e5b97ee..cfccb37fbf3f 100644 --- a/packages/browser/README.md +++ b/packages/browser/README.md @@ -40,9 +40,12 @@ you have called `init()`: import * as Sentry from '@sentry/browser'; // Set user information, as well as tags and further extras -Sentry.setExtraContext({ battery: 0.7 }); -Sentry.setTagsContext({ user_mode: 'admin' }); -Sentry.setUserContext({ id: '4711' }); +Sentry.configureScope(scope => { + scope.setExtra('battery', 0.7); + scope.setTag('user_mode', 'admin'); + scope.setUser({ id: '4711' }); + // scope.clear(); +}); // Add a breadcrumb for future events Sentry.addBreadcrumb({ diff --git a/packages/node/README.md b/packages/node/README.md index 777dec4dfd21..2385814c1462 100644 --- a/packages/node/README.md +++ b/packages/node/README.md @@ -38,9 +38,12 @@ have called `init()`: ```javascript // Set user information, as well as tags and further extras -Sentry.setExtraContext({ battery: 0.7 }); -Sentry.setTagsContext({ user_mode: 'admin' }); -Sentry.setUserContext({ id: '4711' }); +Sentry.configureScope(scope => { + scope.setExtra('battery', 0.7); + scope.setTag('user_mode', 'admin'); + scope.setUser({ id: '4711' }); + // scope.clear(); +}); // Add a breadcrumb for future events Sentry.addBreadcrumb({ diff --git a/packages/shim/README.md b/packages/shim/README.md index 1971ed7d87a9..46da02738c7f 100644 --- a/packages/shim/README.md +++ b/packages/shim/README.md @@ -47,7 +47,10 @@ beware that this might override the user's context values: ```javascript // Set user information, as well as tags and further extras -Sentry.setExtraContext({ battery: 0.7 }); -Sentry.setTagsContext({ user_mode: 'admin' }); -Sentry.setUserContext({ id: '4711' }); +Sentry.configureScope(scope => { + scope.setExtra('battery', 0.7); + scope.setTag('user_mode', 'admin'); + scope.setUser({ id: '4711' }); + // scope.clear(); +}); ``` From b9417e3e76dbb3496f95c7016448a58f618ae741 Mon Sep 17 00:00:00 2001 From: HazA Date: Wed, 6 Jun 2018 10:11:47 +0200 Subject: [PATCH 75/75] meta: Fix typos --- packages/shim/README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/shim/README.md b/packages/shim/README.md index 46da02738c7f..d9d6b765fd26 100644 --- a/packages/shim/README.md +++ b/packages/shim/README.md @@ -18,7 +18,7 @@ having to bundle the entire SDK or being dependent on a specific platform. ## Usage To use the shim, you do not have to initialize an SDK. This should be handled by -the user of your library. Instead, direcly use the exported functions of +the user of your library. Instead, directly use the exported functions of `@sentry/shim` to add breadcrumbs or capture events: ```javascript @@ -41,7 +41,7 @@ Sentry.captureEvent({ }); ``` -Note that while strictly possible, it is discouraged to interfer with the event +Note that while strictly possible, it is discouraged to interfere with the event context. If for some reason your library needs to inject context information, beware that this might override the user's context values: